From 72bf767636d599723cf9e85c9f9e6244fcd5be78 Mon Sep 17 00:00:00 2001 From: Fafa-DL <516451964@qq.com> Date: Mon, 21 Feb 2022 14:59:20 +0800 Subject: [PATCH] Update 2022 --- .../01 Introduction}/README.md | 0 .../作业HW1/Google_Colab_Tutorial.ipynb | 0 .../作业HW1/ML2021Spring_HW1.ipynb | 0 .../作业HW1/Pytorch_Tutorial.ipynb | 0 .../01 Introduction}/作业HW1/covid.test.csv | 0 .../作业HW1/covid.train.csv | 0 .../作业HW1/sampleSubmission.csv | 0 .../02 Deep Learning}/README.md | 0 .../02 Deep Learning}/作业HW2/1.txt | 0 .../02 Deep Learning}/作业HW2/HW02.pdf | Bin .../作业HW2/SHARE_MLSpring2021_HW2_1.ipynb | 0 .../作业HW2/SHARE_MLSpring2021_HW2_2.ipynb | 0 .../03 Self-Attention}/作业HW3-4/HW03.pdf | Bin .../03 Self-Attention}/作业HW3-4/HW04.pdf | Bin .../作业HW3-4/HW3_CNN.ipynb | 0 .../作业HW3-4/ML2021_HW4.ipynb | 0 .../05 Transformer}/作业HW5/HW05.ipynb | 0 .../05 Transformer}/作业HW5/HW05.pdf | Bin .../05 Transformer}/作业HW5/HW05_ZH.ipynb | 0 {06 GAN => 2021 ML/06 GAN}/作业HW6/HW06.pdf | Bin .../06 GAN}/作业HW6/hw6_GAN.ipynb | 0 .../Anomaly Detection (v9).pdf | Bin .../作业HW7&8/HW07.pdf | Bin .../作业HW7&8/HW08.ipynb | 0 .../作业HW7&8/HW08.pdf | Bin .../作业HW7&8/hw7_bert.ipynb | 0 .../作业HW9&HW10/HW09.pdf | Bin .../作业HW9&HW10/HW10.pdf | Bin .../hw10_adversarial_attack.ipynb | 0 .../作业HW9&HW10/hw9_xai.ipynb | 0 .../09 Domain Adaptation}/作业HW11/HW11.pdf | Bin .../作业HW11/hw11_domain_adaptation.ipynb | 0 .../hw11_domain_adaptation_(en).ipynb | 0 .../10 RL}/作业HW12/HW12_EN.pdf | Bin ...inforcement_learning_chinese_version.ipynb | 0 ...inforcement_learning_english_version.ipynb | 0 .../作业HW13&HW14/HW13.pdf | Bin .../作业HW13&HW14/HW14.pdf | Bin .../HW14_lifelong_learning.ipynb | 0 .../hw13_Network_Compression.ipynb | 0 .../13 Meta Learning}/作业HW15/HW15.pdf | Bin .../ML2021_HW15_Meta_Learning.ipynb | 0 .../Lecture Schedule.jpg | Bin 2021 ML/README.md | 39 + .../Colab/Google_Colab_Tutorial.ipynb | 0 .../Colab/Google_Colab_Tutorial.pdf | Bin .../助教作业范例}/HW01/HW01.ipynb | 0 .../助教作业范例}/HW01/HW01.pdf | Bin .../助教作业范例}/HW02/HW02-1.ipynb | 0 .../助教作业范例}/HW02/HW02-2.ipynb | 0 .../助教作业范例}/HW02/HW02.pdf | Bin .../助教作业范例}/HW03/HW03.ipynb | 0 .../助教作业范例}/HW03/HW03.pdf | Bin .../助教作业范例}/HW04/HW04.ipynb | 0 .../助教作业范例}/HW04/HW04.pdf | Bin .../助教作业范例}/HW05/HW05.ipynb | 0 .../助教作业范例}/HW05/HW05.pdf | Bin .../助教作业范例}/HW05/HW05_ZH.ipynb | 0 .../助教作业范例}/HW06/HW06.ipynb | 0 .../助教作业范例}/HW06/HW06.pdf | Bin .../助教作业范例}/HW07/HW07.ipynb | 0 .../助教作业范例}/HW07/HW07.pdf | Bin .../助教作业范例}/HW08/HW08.ipynb | 0 .../助教作业范例}/HW08/HW08.pdf | Bin .../助教作业范例}/HW08/hw8_slides.pdf | Bin .../助教作业范例}/HW09/HW09.ipynb | 0 .../助教作业范例}/HW09/HW09.pdf | Bin .../助教作业范例}/HW10/HW10.ipynb | 0 .../助教作业范例}/HW10/HW10.pdf | Bin .../助教作业范例}/HW11/HW11.pdf | Bin .../助教作业范例}/HW11/HW11_EN.ipynb | 0 .../助教作业范例}/HW11/HW11_ZH.ipynb | 0 .../助教作业范例}/HW12/HW12_EN.ipynb | 0 .../助教作业范例}/HW12/HW12_EN.pdf | Bin .../助教作业范例}/HW12/HW12_ZH.ipynb | 0 .../助教作业范例}/HW12/HW12_ZH.pdf | Bin .../助教作业范例}/HW13/HW13.ipynb | 0 .../助教作业范例}/HW13/HW13.pdf | Bin .../助教作业范例}/HW14/HW14.ipynb | 0 .../助教作业范例}/HW14/HW14.pdf | Bin .../助教作业范例}/HW15/HW15.ipynb | 0 .../助教作业范例}/HW15/HW15.pdf | Bin .../Pytorch/Pytorch_Tutorial.ipynb | 0 .../Pytorch/Pytorch_Tutorial_1.pdf | Bin .../Pytorch/Pytorch_Tutorial_2.pdf | Bin .../Colab Tutorial 2022.pdf | Bin 0 -> 1303477 bytes .../EnvironmentSetup.pdf | Bin 0 -> 2335324 bytes .../01 Introductionof Deep Learning/HW01.pdf | Bin 0 -> 519472 bytes .../ML2022Spring_HW1.ipynb | 27157 ++++++++++++++++ .../Pytorch Tutorial 1.pdf | Bin 0 -> 598900 bytes .../Pytorch Tutorial 2.pdf | Bin 0 -> 1087316 bytes .../introduction (v2).pdf | Bin 0 -> 1883936 bytes .../rule (v2).pdf | Bin 0 -> 1604553 bytes Mine.png | Bin 303010 -> 0 bytes README.md | 82 +- 95 files changed, 27227 insertions(+), 51 deletions(-) rename {01 Introduction => 2021 ML/01 Introduction}/README.md (100%) rename {01 Introduction => 2021 ML/01 Introduction}/作业HW1/Google_Colab_Tutorial.ipynb (100%) rename {01 Introduction => 2021 ML/01 Introduction}/作业HW1/ML2021Spring_HW1.ipynb (100%) rename {01 Introduction => 2021 ML/01 Introduction}/作业HW1/Pytorch_Tutorial.ipynb (100%) rename {01 Introduction => 2021 ML/01 Introduction}/作业HW1/covid.test.csv (100%) rename {01 Introduction => 2021 ML/01 Introduction}/作业HW1/covid.train.csv (100%) rename {01 Introduction => 2021 ML/01 Introduction}/作业HW1/sampleSubmission.csv (100%) rename {02 Deep Learning => 2021 ML/02 Deep Learning}/README.md (100%) rename {02 Deep Learning => 2021 ML/02 Deep Learning}/作业HW2/1.txt (100%) rename {02 Deep Learning => 2021 ML/02 Deep Learning}/作业HW2/HW02.pdf (100%) rename {02 Deep Learning => 2021 ML/02 Deep Learning}/作业HW2/SHARE_MLSpring2021_HW2_1.ipynb (100%) rename {02 Deep Learning => 2021 ML/02 Deep Learning}/作业HW2/SHARE_MLSpring2021_HW2_2.ipynb (100%) rename {03 Self-Attention => 2021 ML/03 Self-Attention}/作业HW3-4/HW03.pdf (100%) rename {03 Self-Attention => 2021 ML/03 Self-Attention}/作业HW3-4/HW04.pdf (100%) rename {03 Self-Attention => 2021 ML/03 Self-Attention}/作业HW3-4/HW3_CNN.ipynb (100%) rename {03 Self-Attention => 2021 ML/03 Self-Attention}/作业HW3-4/ML2021_HW4.ipynb (100%) rename {05 Transformer => 2021 ML/05 Transformer}/作业HW5/HW05.ipynb (100%) rename {05 Transformer => 2021 ML/05 Transformer}/作业HW5/HW05.pdf (100%) rename {05 Transformer => 2021 ML/05 Transformer}/作业HW5/HW05_ZH.ipynb (100%) rename {06 GAN => 2021 ML/06 GAN}/作业HW6/HW06.pdf (100%) rename {06 GAN => 2021 ML/06 GAN}/作业HW6/hw6_GAN.ipynb (100%) rename {07 Self-Supervised Learning => 2021 ML/07 Self-Supervised Learning}/Anomaly Detection (v9).pdf (100%) rename {07 Self-Supervised Learning => 2021 ML/07 Self-Supervised Learning}/作业HW7&8/HW07.pdf (100%) rename {07 Self-Supervised Learning => 2021 ML/07 Self-Supervised Learning}/作业HW7&8/HW08.ipynb (100%) rename {07 Self-Supervised Learning => 2021 ML/07 Self-Supervised Learning}/作业HW7&8/HW08.pdf (100%) rename {07 Self-Supervised Learning => 2021 ML/07 Self-Supervised Learning}/作业HW7&8/hw7_bert.ipynb (100%) rename {08 Explainable AI&Adversarial Attack => 2021 ML/08 Explainable AI&Adversarial Attack}/作业HW9&HW10/HW09.pdf (100%) rename {08 Explainable AI&Adversarial Attack => 2021 ML/08 Explainable AI&Adversarial Attack}/作业HW9&HW10/HW10.pdf (100%) rename {08 Explainable AI&Adversarial Attack => 2021 ML/08 Explainable AI&Adversarial Attack}/作业HW9&HW10/hw10_adversarial_attack.ipynb (100%) rename {08 Explainable AI&Adversarial Attack => 2021 ML/08 Explainable AI&Adversarial Attack}/作业HW9&HW10/hw9_xai.ipynb (100%) rename {09 Domain Adaptation => 2021 ML/09 Domain Adaptation}/作业HW11/HW11.pdf (100%) rename {09 Domain Adaptation => 2021 ML/09 Domain Adaptation}/作业HW11/hw11_domain_adaptation.ipynb (100%) rename {09 Domain Adaptation => 2021 ML/09 Domain Adaptation}/作业HW11/hw11_domain_adaptation_(en).ipynb (100%) rename {10 RL => 2021 ML/10 RL}/作业HW12/HW12_EN.pdf (100%) rename {10 RL => 2021 ML/10 RL}/作业HW12/hw12_reinforcement_learning_chinese_version.ipynb (100%) rename {10 RL => 2021 ML/10 RL}/作业HW12/hw12_reinforcement_learning_english_version.ipynb (100%) rename {12 Life-Long&Compression => 2021 ML/12 Life-Long&Compression}/作业HW13&HW14/HW13.pdf (100%) rename {12 Life-Long&Compression => 2021 ML/12 Life-Long&Compression}/作业HW13&HW14/HW14.pdf (100%) rename {12 Life-Long&Compression => 2021 ML/12 Life-Long&Compression}/作业HW13&HW14/HW14_lifelong_learning.ipynb (100%) rename {12 Life-Long&Compression => 2021 ML/12 Life-Long&Compression}/作业HW13&HW14/hw13_Network_Compression.ipynb (100%) rename {13 Meta Learning => 2021 ML/13 Meta Learning}/作业HW15/HW15.pdf (100%) rename {13 Meta Learning => 2021 ML/13 Meta Learning}/作业HW15/ML2021_HW15_Meta_Learning.ipynb (100%) rename Lecture Schedule.jpg => 2021 ML/Lecture Schedule.jpg (100%) create mode 100644 2021 ML/README.md rename {助教作业范例 => 2021 ML/助教作业范例}/Colab/Google_Colab_Tutorial.ipynb (100%) rename {助教作业范例 => 2021 ML/助教作业范例}/Colab/Google_Colab_Tutorial.pdf (100%) rename {助教作业范例 => 2021 ML/助教作业范例}/HW01/HW01.ipynb (100%) rename {助教作业范例 => 2021 ML/助教作业范例}/HW01/HW01.pdf (100%) rename {助教作业范例 => 2021 ML/助教作业范例}/HW02/HW02-1.ipynb (100%) rename {助教作业范例 => 2021 ML/助教作业范例}/HW02/HW02-2.ipynb (100%) rename {助教作业范例 => 2021 ML/助教作业范例}/HW02/HW02.pdf (100%) rename {助教作业范例 => 2021 ML/助教作业范例}/HW03/HW03.ipynb (100%) rename {助教作业范例 => 2021 ML/助教作业范例}/HW03/HW03.pdf (100%) rename {助教作业范例 => 2021 ML/助教作业范例}/HW04/HW04.ipynb (100%) rename {助教作业范例 => 2021 ML/助教作业范例}/HW04/HW04.pdf (100%) rename {助教作业范例 => 2021 ML/助教作业范例}/HW05/HW05.ipynb (100%) rename {助教作业范例 => 2021 ML/助教作业范例}/HW05/HW05.pdf (100%) rename {助教作业范例 => 2021 ML/助教作业范例}/HW05/HW05_ZH.ipynb (100%) rename {助教作业范例 => 2021 ML/助教作业范例}/HW06/HW06.ipynb (100%) rename {助教作业范例 => 2021 ML/助教作业范例}/HW06/HW06.pdf (100%) rename {助教作业范例 => 2021 ML/助教作业范例}/HW07/HW07.ipynb (100%) rename {助教作业范例 => 2021 ML/助教作业范例}/HW07/HW07.pdf (100%) rename {助教作业范例 => 2021 ML/助教作业范例}/HW08/HW08.ipynb (100%) rename {助教作业范例 => 2021 ML/助教作业范例}/HW08/HW08.pdf (100%) rename {助教作业范例 => 2021 ML/助教作业范例}/HW08/hw8_slides.pdf (100%) rename {助教作业范例 => 2021 ML/助教作业范例}/HW09/HW09.ipynb (100%) rename {助教作业范例 => 2021 ML/助教作业范例}/HW09/HW09.pdf (100%) rename {助教作业范例 => 2021 ML/助教作业范例}/HW10/HW10.ipynb (100%) rename {助教作业范例 => 2021 ML/助教作业范例}/HW10/HW10.pdf (100%) rename {助教作业范例 => 2021 ML/助教作业范例}/HW11/HW11.pdf (100%) rename {助教作业范例 => 2021 ML/助教作业范例}/HW11/HW11_EN.ipynb (100%) rename {助教作业范例 => 2021 ML/助教作业范例}/HW11/HW11_ZH.ipynb (100%) rename {助教作业范例 => 2021 ML/助教作业范例}/HW12/HW12_EN.ipynb (100%) rename {助教作业范例 => 2021 ML/助教作业范例}/HW12/HW12_EN.pdf (100%) rename {助教作业范例 => 2021 ML/助教作业范例}/HW12/HW12_ZH.ipynb (100%) rename {助教作业范例 => 2021 ML/助教作业范例}/HW12/HW12_ZH.pdf (100%) rename {助教作业范例 => 2021 ML/助教作业范例}/HW13/HW13.ipynb (100%) rename {助教作业范例 => 2021 ML/助教作业范例}/HW13/HW13.pdf (100%) rename {助教作业范例 => 2021 ML/助教作业范例}/HW14/HW14.ipynb (100%) rename {助教作业范例 => 2021 ML/助教作业范例}/HW14/HW14.pdf (100%) rename {助教作业范例 => 2021 ML/助教作业范例}/HW15/HW15.ipynb (100%) rename {助教作业范例 => 2021 ML/助教作业范例}/HW15/HW15.pdf (100%) rename {助教作业范例 => 2021 ML/助教作业范例}/Pytorch/Pytorch_Tutorial.ipynb (100%) rename {助教作业范例 => 2021 ML/助教作业范例}/Pytorch/Pytorch_Tutorial_1.pdf (100%) rename {助教作业范例 => 2021 ML/助教作业范例}/Pytorch/Pytorch_Tutorial_2.pdf (100%) create mode 100644 2022 ML/01 Introductionof Deep Learning/Colab Tutorial 2022.pdf create mode 100644 2022 ML/01 Introductionof Deep Learning/EnvironmentSetup.pdf create mode 100644 2022 ML/01 Introductionof Deep Learning/HW01.pdf create mode 100644 2022 ML/01 Introductionof Deep Learning/ML2022Spring_HW1.ipynb create mode 100644 2022 ML/01 Introductionof Deep Learning/Pytorch Tutorial 1.pdf create mode 100644 2022 ML/01 Introductionof Deep Learning/Pytorch Tutorial 2.pdf create mode 100644 2022 ML/01 Introductionof Deep Learning/introduction (v2).pdf create mode 100644 2022 ML/01 Introductionof Deep Learning/rule (v2).pdf delete mode 100644 Mine.png diff --git a/01 Introduction/README.md b/2021 ML/01 Introduction/README.md similarity index 100% rename from 01 Introduction/README.md rename to 2021 ML/01 Introduction/README.md diff --git a/01 Introduction/作业HW1/Google_Colab_Tutorial.ipynb b/2021 ML/01 Introduction/作业HW1/Google_Colab_Tutorial.ipynb similarity index 100% rename from 01 Introduction/作业HW1/Google_Colab_Tutorial.ipynb rename to 2021 ML/01 Introduction/作业HW1/Google_Colab_Tutorial.ipynb diff --git a/01 Introduction/作业HW1/ML2021Spring_HW1.ipynb b/2021 ML/01 Introduction/作业HW1/ML2021Spring_HW1.ipynb similarity index 100% rename from 01 Introduction/作业HW1/ML2021Spring_HW1.ipynb rename to 2021 ML/01 Introduction/作业HW1/ML2021Spring_HW1.ipynb diff --git a/01 Introduction/作业HW1/Pytorch_Tutorial.ipynb b/2021 ML/01 Introduction/作业HW1/Pytorch_Tutorial.ipynb similarity index 100% rename from 01 Introduction/作业HW1/Pytorch_Tutorial.ipynb rename to 2021 ML/01 Introduction/作业HW1/Pytorch_Tutorial.ipynb diff --git a/01 Introduction/作业HW1/covid.test.csv b/2021 ML/01 Introduction/作业HW1/covid.test.csv similarity index 100% rename from 01 Introduction/作业HW1/covid.test.csv rename to 2021 ML/01 Introduction/作业HW1/covid.test.csv diff --git a/01 Introduction/作业HW1/covid.train.csv b/2021 ML/01 Introduction/作业HW1/covid.train.csv similarity index 100% rename from 01 Introduction/作业HW1/covid.train.csv rename to 2021 ML/01 Introduction/作业HW1/covid.train.csv diff --git a/01 Introduction/作业HW1/sampleSubmission.csv b/2021 ML/01 Introduction/作业HW1/sampleSubmission.csv similarity index 100% rename from 01 Introduction/作业HW1/sampleSubmission.csv rename to 2021 ML/01 Introduction/作业HW1/sampleSubmission.csv diff --git a/02 Deep Learning/README.md b/2021 ML/02 Deep Learning/README.md similarity index 100% rename from 02 Deep Learning/README.md rename to 2021 ML/02 Deep Learning/README.md diff --git a/02 Deep Learning/作业HW2/1.txt b/2021 ML/02 Deep Learning/作业HW2/1.txt similarity index 100% rename from 02 Deep Learning/作业HW2/1.txt rename to 2021 ML/02 Deep Learning/作业HW2/1.txt diff --git a/02 Deep Learning/作业HW2/HW02.pdf b/2021 ML/02 Deep Learning/作业HW2/HW02.pdf similarity index 100% rename from 02 Deep Learning/作业HW2/HW02.pdf rename to 2021 ML/02 Deep Learning/作业HW2/HW02.pdf diff --git a/02 Deep Learning/作业HW2/SHARE_MLSpring2021_HW2_1.ipynb b/2021 ML/02 Deep Learning/作业HW2/SHARE_MLSpring2021_HW2_1.ipynb similarity index 100% rename from 02 Deep Learning/作业HW2/SHARE_MLSpring2021_HW2_1.ipynb rename to 2021 ML/02 Deep Learning/作业HW2/SHARE_MLSpring2021_HW2_1.ipynb diff --git a/02 Deep Learning/作业HW2/SHARE_MLSpring2021_HW2_2.ipynb b/2021 ML/02 Deep Learning/作业HW2/SHARE_MLSpring2021_HW2_2.ipynb similarity index 100% rename from 02 Deep Learning/作业HW2/SHARE_MLSpring2021_HW2_2.ipynb rename to 2021 ML/02 Deep Learning/作业HW2/SHARE_MLSpring2021_HW2_2.ipynb diff --git a/03 Self-Attention/作业HW3-4/HW03.pdf b/2021 ML/03 Self-Attention/作业HW3-4/HW03.pdf similarity index 100% rename from 03 Self-Attention/作业HW3-4/HW03.pdf rename to 2021 ML/03 Self-Attention/作业HW3-4/HW03.pdf diff --git a/03 Self-Attention/作业HW3-4/HW04.pdf b/2021 ML/03 Self-Attention/作业HW3-4/HW04.pdf similarity index 100% rename from 03 Self-Attention/作业HW3-4/HW04.pdf rename to 2021 ML/03 Self-Attention/作业HW3-4/HW04.pdf diff --git a/03 Self-Attention/作业HW3-4/HW3_CNN.ipynb b/2021 ML/03 Self-Attention/作业HW3-4/HW3_CNN.ipynb similarity index 100% rename from 03 Self-Attention/作业HW3-4/HW3_CNN.ipynb rename to 2021 ML/03 Self-Attention/作业HW3-4/HW3_CNN.ipynb diff --git a/03 Self-Attention/作业HW3-4/ML2021_HW4.ipynb b/2021 ML/03 Self-Attention/作业HW3-4/ML2021_HW4.ipynb similarity index 100% rename from 03 Self-Attention/作业HW3-4/ML2021_HW4.ipynb rename to 2021 ML/03 Self-Attention/作业HW3-4/ML2021_HW4.ipynb diff --git a/05 Transformer/作业HW5/HW05.ipynb b/2021 ML/05 Transformer/作业HW5/HW05.ipynb similarity index 100% rename from 05 Transformer/作业HW5/HW05.ipynb rename to 2021 ML/05 Transformer/作业HW5/HW05.ipynb diff --git a/05 Transformer/作业HW5/HW05.pdf b/2021 ML/05 Transformer/作业HW5/HW05.pdf similarity index 100% rename from 05 Transformer/作业HW5/HW05.pdf rename to 2021 ML/05 Transformer/作业HW5/HW05.pdf diff --git a/05 Transformer/作业HW5/HW05_ZH.ipynb b/2021 ML/05 Transformer/作业HW5/HW05_ZH.ipynb similarity index 100% rename from 05 Transformer/作业HW5/HW05_ZH.ipynb rename to 2021 ML/05 Transformer/作业HW5/HW05_ZH.ipynb diff --git a/06 GAN/作业HW6/HW06.pdf b/2021 ML/06 GAN/作业HW6/HW06.pdf similarity index 100% rename from 06 GAN/作业HW6/HW06.pdf rename to 2021 ML/06 GAN/作业HW6/HW06.pdf diff --git a/06 GAN/作业HW6/hw6_GAN.ipynb b/2021 ML/06 GAN/作业HW6/hw6_GAN.ipynb similarity index 100% rename from 06 GAN/作业HW6/hw6_GAN.ipynb rename to 2021 ML/06 GAN/作业HW6/hw6_GAN.ipynb diff --git a/07 Self-Supervised Learning/Anomaly Detection (v9).pdf b/2021 ML/07 Self-Supervised Learning/Anomaly Detection (v9).pdf similarity index 100% rename from 07 Self-Supervised Learning/Anomaly Detection (v9).pdf rename to 2021 ML/07 Self-Supervised Learning/Anomaly Detection (v9).pdf diff --git a/07 Self-Supervised Learning/作业HW7&8/HW07.pdf b/2021 ML/07 Self-Supervised Learning/作业HW7&8/HW07.pdf similarity index 100% rename from 07 Self-Supervised Learning/作业HW7&8/HW07.pdf rename to 2021 ML/07 Self-Supervised Learning/作业HW7&8/HW07.pdf diff --git a/07 Self-Supervised Learning/作业HW7&8/HW08.ipynb b/2021 ML/07 Self-Supervised Learning/作业HW7&8/HW08.ipynb similarity index 100% rename from 07 Self-Supervised Learning/作业HW7&8/HW08.ipynb rename to 2021 ML/07 Self-Supervised Learning/作业HW7&8/HW08.ipynb diff --git a/07 Self-Supervised Learning/作业HW7&8/HW08.pdf b/2021 ML/07 Self-Supervised Learning/作业HW7&8/HW08.pdf similarity index 100% rename from 07 Self-Supervised Learning/作业HW7&8/HW08.pdf rename to 2021 ML/07 Self-Supervised Learning/作业HW7&8/HW08.pdf diff --git a/07 Self-Supervised Learning/作业HW7&8/hw7_bert.ipynb b/2021 ML/07 Self-Supervised Learning/作业HW7&8/hw7_bert.ipynb similarity index 100% rename from 07 Self-Supervised Learning/作业HW7&8/hw7_bert.ipynb rename to 2021 ML/07 Self-Supervised Learning/作业HW7&8/hw7_bert.ipynb diff --git a/08 Explainable AI&Adversarial Attack/作业HW9&HW10/HW09.pdf b/2021 ML/08 Explainable AI&Adversarial Attack/作业HW9&HW10/HW09.pdf similarity index 100% rename from 08 Explainable AI&Adversarial Attack/作业HW9&HW10/HW09.pdf rename to 2021 ML/08 Explainable AI&Adversarial Attack/作业HW9&HW10/HW09.pdf diff --git a/08 Explainable AI&Adversarial Attack/作业HW9&HW10/HW10.pdf b/2021 ML/08 Explainable AI&Adversarial Attack/作业HW9&HW10/HW10.pdf similarity index 100% rename from 08 Explainable AI&Adversarial Attack/作业HW9&HW10/HW10.pdf rename to 2021 ML/08 Explainable AI&Adversarial Attack/作业HW9&HW10/HW10.pdf diff --git a/08 Explainable AI&Adversarial Attack/作业HW9&HW10/hw10_adversarial_attack.ipynb b/2021 ML/08 Explainable AI&Adversarial Attack/作业HW9&HW10/hw10_adversarial_attack.ipynb similarity index 100% rename from 08 Explainable AI&Adversarial Attack/作业HW9&HW10/hw10_adversarial_attack.ipynb rename to 2021 ML/08 Explainable AI&Adversarial Attack/作业HW9&HW10/hw10_adversarial_attack.ipynb diff --git a/08 Explainable AI&Adversarial Attack/作业HW9&HW10/hw9_xai.ipynb b/2021 ML/08 Explainable AI&Adversarial Attack/作业HW9&HW10/hw9_xai.ipynb similarity index 100% rename from 08 Explainable AI&Adversarial Attack/作业HW9&HW10/hw9_xai.ipynb rename to 2021 ML/08 Explainable AI&Adversarial Attack/作业HW9&HW10/hw9_xai.ipynb diff --git a/09 Domain Adaptation/作业HW11/HW11.pdf b/2021 ML/09 Domain Adaptation/作业HW11/HW11.pdf similarity index 100% rename from 09 Domain Adaptation/作业HW11/HW11.pdf rename to 2021 ML/09 Domain Adaptation/作业HW11/HW11.pdf diff --git a/09 Domain Adaptation/作业HW11/hw11_domain_adaptation.ipynb b/2021 ML/09 Domain Adaptation/作业HW11/hw11_domain_adaptation.ipynb similarity index 100% rename from 09 Domain Adaptation/作业HW11/hw11_domain_adaptation.ipynb rename to 2021 ML/09 Domain Adaptation/作业HW11/hw11_domain_adaptation.ipynb diff --git a/09 Domain Adaptation/作业HW11/hw11_domain_adaptation_(en).ipynb b/2021 ML/09 Domain Adaptation/作业HW11/hw11_domain_adaptation_(en).ipynb similarity index 100% rename from 09 Domain Adaptation/作业HW11/hw11_domain_adaptation_(en).ipynb rename to 2021 ML/09 Domain Adaptation/作业HW11/hw11_domain_adaptation_(en).ipynb diff --git a/10 RL/作业HW12/HW12_EN.pdf b/2021 ML/10 RL/作业HW12/HW12_EN.pdf similarity index 100% rename from 10 RL/作业HW12/HW12_EN.pdf rename to 2021 ML/10 RL/作业HW12/HW12_EN.pdf diff --git a/10 RL/作业HW12/hw12_reinforcement_learning_chinese_version.ipynb b/2021 ML/10 RL/作业HW12/hw12_reinforcement_learning_chinese_version.ipynb similarity index 100% rename from 10 RL/作业HW12/hw12_reinforcement_learning_chinese_version.ipynb rename to 2021 ML/10 RL/作业HW12/hw12_reinforcement_learning_chinese_version.ipynb diff --git a/10 RL/作业HW12/hw12_reinforcement_learning_english_version.ipynb b/2021 ML/10 RL/作业HW12/hw12_reinforcement_learning_english_version.ipynb similarity index 100% rename from 10 RL/作业HW12/hw12_reinforcement_learning_english_version.ipynb rename to 2021 ML/10 RL/作业HW12/hw12_reinforcement_learning_english_version.ipynb diff --git a/12 Life-Long&Compression/作业HW13&HW14/HW13.pdf b/2021 ML/12 Life-Long&Compression/作业HW13&HW14/HW13.pdf similarity index 100% rename from 12 Life-Long&Compression/作业HW13&HW14/HW13.pdf rename to 2021 ML/12 Life-Long&Compression/作业HW13&HW14/HW13.pdf diff --git a/12 Life-Long&Compression/作业HW13&HW14/HW14.pdf b/2021 ML/12 Life-Long&Compression/作业HW13&HW14/HW14.pdf similarity index 100% rename from 12 Life-Long&Compression/作业HW13&HW14/HW14.pdf rename to 2021 ML/12 Life-Long&Compression/作业HW13&HW14/HW14.pdf diff --git a/12 Life-Long&Compression/作业HW13&HW14/HW14_lifelong_learning.ipynb b/2021 ML/12 Life-Long&Compression/作业HW13&HW14/HW14_lifelong_learning.ipynb similarity index 100% rename from 12 Life-Long&Compression/作业HW13&HW14/HW14_lifelong_learning.ipynb rename to 2021 ML/12 Life-Long&Compression/作业HW13&HW14/HW14_lifelong_learning.ipynb diff --git a/12 Life-Long&Compression/作业HW13&HW14/hw13_Network_Compression.ipynb b/2021 ML/12 Life-Long&Compression/作业HW13&HW14/hw13_Network_Compression.ipynb similarity index 100% rename from 12 Life-Long&Compression/作业HW13&HW14/hw13_Network_Compression.ipynb rename to 2021 ML/12 Life-Long&Compression/作业HW13&HW14/hw13_Network_Compression.ipynb diff --git a/13 Meta Learning/作业HW15/HW15.pdf b/2021 ML/13 Meta Learning/作业HW15/HW15.pdf similarity index 100% rename from 13 Meta Learning/作业HW15/HW15.pdf rename to 2021 ML/13 Meta Learning/作业HW15/HW15.pdf diff --git a/13 Meta Learning/作业HW15/ML2021_HW15_Meta_Learning.ipynb b/2021 ML/13 Meta Learning/作业HW15/ML2021_HW15_Meta_Learning.ipynb similarity index 100% rename from 13 Meta Learning/作业HW15/ML2021_HW15_Meta_Learning.ipynb rename to 2021 ML/13 Meta Learning/作业HW15/ML2021_HW15_Meta_Learning.ipynb diff --git a/Lecture Schedule.jpg b/2021 ML/Lecture Schedule.jpg similarity index 100% rename from Lecture Schedule.jpg rename to 2021 ML/Lecture Schedule.jpg diff --git a/2021 ML/README.md b/2021 ML/README.md new file mode 100644 index 0000000..95510bf --- /dev/null +++ b/2021 ML/README.md @@ -0,0 +1,39 @@ +李宏毅2021春季机器学习课程课件及作业 +=========================== + +|名称|项目| +|---|---| +|2021课程主页|[李宏毅2021春季机器学习](https://speech.ee.ntu.edu.tw/~hylee/ml/2021-spring.html)| +|百度云资料/作业/范例汇总|[提取码:sv1i](https://pan.baidu.com/s/13cxyIbvF0bEyytANLf58NQ)| + +**** + +|章节|名称|视频|资料|作业| +|---|---|---|---|---| +|Introduction|Course Introduction|[链接](https://www.bilibili.com/video/BV1Wv411h7kN?p=2)|[ppt](https://speech.ee.ntu.edu.tw/~hylee/ml/ml2021-course-data/introduction%202021%20(v6)%20Chinese.pptx) [pdf](https://speech.ee.ntu.edu.tw/~hylee/ml/ml2021-course-data/introduction-2021-v6-Chinese.pdf)|-| +|Introduction|Introduction of ML/DL|[链接](https://www.bilibili.com/video/BV1Wv411h7kN?p=3)|[ppt](https://speech.ee.ntu.edu.tw/~hylee/ml/ml2021-course-data/regression%20(v16).pptx) [pdf](https://speech.ee.ntu.edu.tw/~hylee/ml/ml2021-course-data/regression%20(v16).pdf)|HW1: Regression| +|Deep Learning|Guideline of ML: overfit|[链接](https://www.bilibili.com/video/BV1Wv411h7kN?p=18)|[ppt](https://speech.ee.ntu.edu.tw/~hylee/ml/ml2021-course-data/overfit-v6.pptx) [pdf](https://speech.ee.ntu.edu.tw/~hylee/ml/ml2021-course-data/overfit-v6.pdf)|-| +|Deep Learning|Critical Point: small gradient|[链接](https://www.bilibili.com/video/BV1Wv411h7kN?p=19)|[ppt](https://speech.ee.ntu.edu.tw/~hylee/ml/ml2021-course-data/small-gradient-v7.pptx) [pdf](https://speech.ee.ntu.edu.tw/~hylee/ml/ml2021-course-data/small-gradient-v7.pdf)|-| +|Deep Learning|Adaptive Learning Rate: optimizer|[链接](https://www.bilibili.com/video/BV1Wv411h7kN?p=20)|[ppt](https://speech.ee.ntu.edu.tw/~hylee/ml/ml2021-course-data/optimizer_v4.pptx) [pdf](https://speech.ee.ntu.edu.tw/~hylee/ml/ml2021-course-data/optimizer_v4.pdf)|-| +|Deep Learning|Loss of Classification: classification|[链接](https://www.bilibili.com/video/BV1Wv411h7kN?p=21)|[ppt](https://speech.ee.ntu.edu.tw/~hylee/ml/ml2021-course-data/classification_v2.pptx) [pdf](https://speech.ee.ntu.edu.tw/~hylee/ml/ml2021-course-data/classification_v2.pdf)|HW2: Classification| +|CNN & Self-Attention|ML Pretest|-|[pdf](https://speech.ee.ntu.edu.tw/~hylee/ml/ml2021-course-data/pretest.pdf)|-| +|CNN & Self-Attention|CNN|[链接](https://www.bilibili.com/video/BV1Wv411h7kN?p=28)|[ppt](https://speech.ee.ntu.edu.tw/~hylee/ml/ml2021-course-data/cnn_v4.pptx) [pdf](https://speech.ee.ntu.edu.tw/~hylee/ml/ml2021-course-data/cnn_v4.pdf)|HW3: CNN| +|CNN & Self-Attention|Self-Attention|[链接](https://www.bilibili.com/video/BV1Wv411h7kN?p=29)|[ppt](https://speech.ee.ntu.edu.tw/~hylee/ml/ml2021-course-data/self_v7.pptx) [pdf](https://speech.ee.ntu.edu.tw/~hylee/ml/ml2021-course-data/self_v7.pdf)|HW4: Self-Attention| +|Theory of ML|PAC Learning|-|[pdf](https://speech.ee.ntu.edu.tw/~hylee/ml/ml2021-course-data/W14_PAC-introduction.pdf)|-| +|Transformer|Normalization|[链接](https://www.bilibili.com/video/BV1Wv411h7kN?p=41)|[ppt](https://speech.ee.ntu.edu.tw/~hylee/ml/ml2021-course-data/normalization_v4.pptx) [pdf](https://speech.ee.ntu.edu.tw/~hylee/ml/ml2021-course-data/normalization_v4.pdf)|-| +|Transformer|Seq2Seq|[链接](https://www.bilibili.com/video/BV1Wv411h7kN?p=42)|[ppt](https://speech.ee.ntu.edu.tw/~hylee/ml/ml2021-course-data/seq2seq_v9.pptx) [pdf](https://speech.ee.ntu.edu.tw/~hylee/ml/ml2021-course-data/seq2seq_v9.pdf)|HW5: Transformer| +|Generative Model|GAN|[链接](https://www.bilibili.com/video/BV1Wv411h7kN?p=49)|[ppt](https://speech.ee.ntu.edu.tw/~hylee/ml/ml2021-course-data/gan_v10.pptx) [pdf](https://speech.ee.ntu.edu.tw/~hylee/ml/ml2021-course-data/gan_v10.pdf)|HW6: GAN| +|Self-Supervised Learning|BERT|[链接](https://www.bilibili.com/video/BV1Wv411h7kN?p=61)|[ppt](https://speech.ee.ntu.edu.tw/~hylee/ml/ml2021-course-data/bert_v8.pptx) [pdf](https://speech.ee.ntu.edu.tw/~hylee/ml/ml2021-course-data/bert_v8.pdf)|HW7: BERT| +|Self-Supervised Learning|Auto-Encoder & Anomaly Detection|[链接](https://www.bilibili.com/video/BV1Wv411h7kN?p=69)|[ppt](https://speech.ee.ntu.edu.tw/~hylee/ml/ml2021-course-data/auto_v8.pptx) [pdf](https://speech.ee.ntu.edu.tw/~hylee/ml/ml2021-course-data/auto_v8.pdf)|HW8: Anomaly Detection| +|Explainable AI / Adversarial Attack|Explainable AI|[链接](https://www.bilibili.com/video/BV1Wv411h7kN?p=82)|[ppt](https://speech.ee.ntu.edu.tw/~hylee/ml/ml2021-course-data/xai_v4.pptx) [pdf](https://speech.ee.ntu.edu.tw/~hylee/ml/ml2021-course-data/xai_v4.pdf)|HW9: Explainable AI| +|Explainable AI / Adversarial Attack|Adversarial Attack|[链接](https://www.bilibili.com/video/BV1Wv411h7kN?p=84)|[ppt](https://speech.ee.ntu.edu.tw/~hylee/ml/ml2021-course-data/attack_v3.pptx) [pdf](https://speech.ee.ntu.edu.tw/~hylee/ml/ml2021-course-data/attack_v3.pdf)|HW10: Adversarial Attack| +|Domain Adaptation|-|[链接](https://www.bilibili.com/video/BV1Wv411h7kN?p=90)|[ppt](https://speech.ee.ntu.edu.tw/~hylee/ml/ml2021-course-data/da_v6.pptx) [pdf](https://speech.ee.ntu.edu.tw/~hylee/ml/ml2021-course-data/da_v6.pdf)|HW11: Adaptation| +|RL|DRL|[链接](https://www.bilibili.com/video/BV1Wv411h7kN?p=92)|[ppt](https://speech.ee.ntu.edu.tw/~hylee/ml/ml2021-course-data/drl_v5.pptx) [pdf](https://speech.ee.ntu.edu.tw/~hylee/ml/ml2021-course-data/drl_v5.pdf)|HW12: RL| +|Quantum ML|-|-|[pdf](https://speech.ee.ntu.edu.tw/~hylee/ml/ml2021-course-data/GuestLecture_QML.pdf)|-| +|Life-Long/Compression|Life-long Learning|[链接](https://www.bilibili.com/video/BV1Wv411h7kN?p=99)|[ppt](https://speech.ee.ntu.edu.tw/~hylee/ml/ml2021-course-data/life_v2.pptx) [pdf](https://speech.ee.ntu.edu.tw/~hylee/ml/ml2021-course-data/life_v2.pdf)|HW13: Compression| +|Life-Long/Compression|Network Compression|[链接](https://www.bilibili.com/video/BV1Wv411h7kN?p=101)|[ppt](https://speech.ee.ntu.edu.tw/~hylee/ml/ml2021-course-data/tiny_v7.pptx) [pdf](https://speech.ee.ntu.edu.tw/~hylee/ml/ml2021-course-data/tiny_v7.pdf)|HW14: Life-long Learning| +|Meta Learning|-|[链接](https://www.bilibili.com/video/BV1Wv411h7kN?p=110)|[ppt](https://speech.ee.ntu.edu.tw/~hylee/ml/ml2021-course-data/meta_v3.pptx) [pdf](https://speech.ee.ntu.edu.tw/~hylee/ml/ml2021-course-data/meta_v3.pdf)|HW15: Meta Learning| + +**** + +![Alt text](https://raw.githubusercontent.com/Fafa-DL/readme-data/main/Lhy/21%20Lecture%20Schedule.jpg) diff --git a/助教作业范例/Colab/Google_Colab_Tutorial.ipynb b/2021 ML/助教作业范例/Colab/Google_Colab_Tutorial.ipynb similarity index 100% rename from 助教作业范例/Colab/Google_Colab_Tutorial.ipynb rename to 2021 ML/助教作业范例/Colab/Google_Colab_Tutorial.ipynb diff --git a/助教作业范例/Colab/Google_Colab_Tutorial.pdf b/2021 ML/助教作业范例/Colab/Google_Colab_Tutorial.pdf similarity index 100% rename from 助教作业范例/Colab/Google_Colab_Tutorial.pdf rename to 2021 ML/助教作业范例/Colab/Google_Colab_Tutorial.pdf diff --git a/助教作业范例/HW01/HW01.ipynb b/2021 ML/助教作业范例/HW01/HW01.ipynb similarity index 100% rename from 助教作业范例/HW01/HW01.ipynb rename to 2021 ML/助教作业范例/HW01/HW01.ipynb diff --git a/助教作业范例/HW01/HW01.pdf b/2021 ML/助教作业范例/HW01/HW01.pdf similarity index 100% rename from 助教作业范例/HW01/HW01.pdf rename to 2021 ML/助教作业范例/HW01/HW01.pdf diff --git a/助教作业范例/HW02/HW02-1.ipynb b/2021 ML/助教作业范例/HW02/HW02-1.ipynb similarity index 100% rename from 助教作业范例/HW02/HW02-1.ipynb rename to 2021 ML/助教作业范例/HW02/HW02-1.ipynb diff --git a/助教作业范例/HW02/HW02-2.ipynb b/2021 ML/助教作业范例/HW02/HW02-2.ipynb similarity index 100% rename from 助教作业范例/HW02/HW02-2.ipynb rename to 2021 ML/助教作业范例/HW02/HW02-2.ipynb diff --git a/助教作业范例/HW02/HW02.pdf b/2021 ML/助教作业范例/HW02/HW02.pdf similarity index 100% rename from 助教作业范例/HW02/HW02.pdf rename to 2021 ML/助教作业范例/HW02/HW02.pdf diff --git a/助教作业范例/HW03/HW03.ipynb b/2021 ML/助教作业范例/HW03/HW03.ipynb similarity index 100% rename from 助教作业范例/HW03/HW03.ipynb rename to 2021 ML/助教作业范例/HW03/HW03.ipynb diff --git a/助教作业范例/HW03/HW03.pdf b/2021 ML/助教作业范例/HW03/HW03.pdf similarity index 100% rename from 助教作业范例/HW03/HW03.pdf rename to 2021 ML/助教作业范例/HW03/HW03.pdf diff --git a/助教作业范例/HW04/HW04.ipynb b/2021 ML/助教作业范例/HW04/HW04.ipynb similarity index 100% rename from 助教作业范例/HW04/HW04.ipynb rename to 2021 ML/助教作业范例/HW04/HW04.ipynb diff --git a/助教作业范例/HW04/HW04.pdf b/2021 ML/助教作业范例/HW04/HW04.pdf similarity index 100% rename from 助教作业范例/HW04/HW04.pdf rename to 2021 ML/助教作业范例/HW04/HW04.pdf diff --git a/助教作业范例/HW05/HW05.ipynb b/2021 ML/助教作业范例/HW05/HW05.ipynb similarity index 100% rename from 助教作业范例/HW05/HW05.ipynb rename to 2021 ML/助教作业范例/HW05/HW05.ipynb diff --git a/助教作业范例/HW05/HW05.pdf b/2021 ML/助教作业范例/HW05/HW05.pdf similarity index 100% rename from 助教作业范例/HW05/HW05.pdf rename to 2021 ML/助教作业范例/HW05/HW05.pdf diff --git a/助教作业范例/HW05/HW05_ZH.ipynb b/2021 ML/助教作业范例/HW05/HW05_ZH.ipynb similarity index 100% rename from 助教作业范例/HW05/HW05_ZH.ipynb rename to 2021 ML/助教作业范例/HW05/HW05_ZH.ipynb diff --git a/助教作业范例/HW06/HW06.ipynb b/2021 ML/助教作业范例/HW06/HW06.ipynb similarity index 100% rename from 助教作业范例/HW06/HW06.ipynb rename to 2021 ML/助教作业范例/HW06/HW06.ipynb diff --git a/助教作业范例/HW06/HW06.pdf b/2021 ML/助教作业范例/HW06/HW06.pdf similarity index 100% rename from 助教作业范例/HW06/HW06.pdf rename to 2021 ML/助教作业范例/HW06/HW06.pdf diff --git a/助教作业范例/HW07/HW07.ipynb b/2021 ML/助教作业范例/HW07/HW07.ipynb similarity index 100% rename from 助教作业范例/HW07/HW07.ipynb rename to 2021 ML/助教作业范例/HW07/HW07.ipynb diff --git a/助教作业范例/HW07/HW07.pdf b/2021 ML/助教作业范例/HW07/HW07.pdf similarity index 100% rename from 助教作业范例/HW07/HW07.pdf rename to 2021 ML/助教作业范例/HW07/HW07.pdf diff --git a/助教作业范例/HW08/HW08.ipynb b/2021 ML/助教作业范例/HW08/HW08.ipynb similarity index 100% rename from 助教作业范例/HW08/HW08.ipynb rename to 2021 ML/助教作业范例/HW08/HW08.ipynb diff --git a/助教作业范例/HW08/HW08.pdf b/2021 ML/助教作业范例/HW08/HW08.pdf similarity index 100% rename from 助教作业范例/HW08/HW08.pdf rename to 2021 ML/助教作业范例/HW08/HW08.pdf diff --git a/助教作业范例/HW08/hw8_slides.pdf b/2021 ML/助教作业范例/HW08/hw8_slides.pdf similarity index 100% rename from 助教作业范例/HW08/hw8_slides.pdf rename to 2021 ML/助教作业范例/HW08/hw8_slides.pdf diff --git a/助教作业范例/HW09/HW09.ipynb b/2021 ML/助教作业范例/HW09/HW09.ipynb similarity index 100% rename from 助教作业范例/HW09/HW09.ipynb rename to 2021 ML/助教作业范例/HW09/HW09.ipynb diff --git a/助教作业范例/HW09/HW09.pdf b/2021 ML/助教作业范例/HW09/HW09.pdf similarity index 100% rename from 助教作业范例/HW09/HW09.pdf rename to 2021 ML/助教作业范例/HW09/HW09.pdf diff --git a/助教作业范例/HW10/HW10.ipynb b/2021 ML/助教作业范例/HW10/HW10.ipynb similarity index 100% rename from 助教作业范例/HW10/HW10.ipynb rename to 2021 ML/助教作业范例/HW10/HW10.ipynb diff --git a/助教作业范例/HW10/HW10.pdf b/2021 ML/助教作业范例/HW10/HW10.pdf similarity index 100% rename from 助教作业范例/HW10/HW10.pdf rename to 2021 ML/助教作业范例/HW10/HW10.pdf diff --git a/助教作业范例/HW11/HW11.pdf b/2021 ML/助教作业范例/HW11/HW11.pdf similarity index 100% rename from 助教作业范例/HW11/HW11.pdf rename to 2021 ML/助教作业范例/HW11/HW11.pdf diff --git a/助教作业范例/HW11/HW11_EN.ipynb b/2021 ML/助教作业范例/HW11/HW11_EN.ipynb similarity index 100% rename from 助教作业范例/HW11/HW11_EN.ipynb rename to 2021 ML/助教作业范例/HW11/HW11_EN.ipynb diff --git a/助教作业范例/HW11/HW11_ZH.ipynb b/2021 ML/助教作业范例/HW11/HW11_ZH.ipynb similarity index 100% rename from 助教作业范例/HW11/HW11_ZH.ipynb rename to 2021 ML/助教作业范例/HW11/HW11_ZH.ipynb diff --git a/助教作业范例/HW12/HW12_EN.ipynb b/2021 ML/助教作业范例/HW12/HW12_EN.ipynb similarity index 100% rename from 助教作业范例/HW12/HW12_EN.ipynb rename to 2021 ML/助教作业范例/HW12/HW12_EN.ipynb diff --git a/助教作业范例/HW12/HW12_EN.pdf b/2021 ML/助教作业范例/HW12/HW12_EN.pdf similarity index 100% rename from 助教作业范例/HW12/HW12_EN.pdf rename to 2021 ML/助教作业范例/HW12/HW12_EN.pdf diff --git a/助教作业范例/HW12/HW12_ZH.ipynb b/2021 ML/助教作业范例/HW12/HW12_ZH.ipynb similarity index 100% rename from 助教作业范例/HW12/HW12_ZH.ipynb rename to 2021 ML/助教作业范例/HW12/HW12_ZH.ipynb diff --git a/助教作业范例/HW12/HW12_ZH.pdf b/2021 ML/助教作业范例/HW12/HW12_ZH.pdf similarity index 100% rename from 助教作业范例/HW12/HW12_ZH.pdf rename to 2021 ML/助教作业范例/HW12/HW12_ZH.pdf diff --git a/助教作业范例/HW13/HW13.ipynb b/2021 ML/助教作业范例/HW13/HW13.ipynb similarity index 100% rename from 助教作业范例/HW13/HW13.ipynb rename to 2021 ML/助教作业范例/HW13/HW13.ipynb diff --git a/助教作业范例/HW13/HW13.pdf b/2021 ML/助教作业范例/HW13/HW13.pdf similarity index 100% rename from 助教作业范例/HW13/HW13.pdf rename to 2021 ML/助教作业范例/HW13/HW13.pdf diff --git a/助教作业范例/HW14/HW14.ipynb b/2021 ML/助教作业范例/HW14/HW14.ipynb similarity index 100% rename from 助教作业范例/HW14/HW14.ipynb rename to 2021 ML/助教作业范例/HW14/HW14.ipynb diff --git a/助教作业范例/HW14/HW14.pdf b/2021 ML/助教作业范例/HW14/HW14.pdf similarity index 100% rename from 助教作业范例/HW14/HW14.pdf rename to 2021 ML/助教作业范例/HW14/HW14.pdf diff --git a/助教作业范例/HW15/HW15.ipynb b/2021 ML/助教作业范例/HW15/HW15.ipynb similarity index 100% rename from 助教作业范例/HW15/HW15.ipynb rename to 2021 ML/助教作业范例/HW15/HW15.ipynb diff --git a/助教作业范例/HW15/HW15.pdf b/2021 ML/助教作业范例/HW15/HW15.pdf similarity index 100% rename from 助教作业范例/HW15/HW15.pdf rename to 2021 ML/助教作业范例/HW15/HW15.pdf diff --git a/助教作业范例/Pytorch/Pytorch_Tutorial.ipynb b/2021 ML/助教作业范例/Pytorch/Pytorch_Tutorial.ipynb similarity index 100% rename from 助教作业范例/Pytorch/Pytorch_Tutorial.ipynb rename to 2021 ML/助教作业范例/Pytorch/Pytorch_Tutorial.ipynb diff --git a/助教作业范例/Pytorch/Pytorch_Tutorial_1.pdf b/2021 ML/助教作业范例/Pytorch/Pytorch_Tutorial_1.pdf similarity index 100% rename from 助教作业范例/Pytorch/Pytorch_Tutorial_1.pdf rename to 2021 ML/助教作业范例/Pytorch/Pytorch_Tutorial_1.pdf diff --git a/助教作业范例/Pytorch/Pytorch_Tutorial_2.pdf b/2021 ML/助教作业范例/Pytorch/Pytorch_Tutorial_2.pdf similarity index 100% rename from 助教作业范例/Pytorch/Pytorch_Tutorial_2.pdf rename to 2021 ML/助教作业范例/Pytorch/Pytorch_Tutorial_2.pdf diff --git a/2022 ML/01 Introductionof Deep Learning/Colab Tutorial 2022.pdf b/2022 ML/01 Introductionof Deep Learning/Colab Tutorial 2022.pdf new file mode 100644 index 0000000000000000000000000000000000000000..96ca9a119d993cff0c0f26da0096e03478aca80b GIT binary patch literal 1303477 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�!}cHK8f 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≮hm0dLRVIw_I86oepZ8Y(pOOizG6i=0)dJ*yHxh_ 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�uEYJg`fD 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
  • t1}oM{AzGx8WSQ7tcOk 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

    s=V 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≷kpdmOjX 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 literal 0 HcmV?d00001 diff --git a/2022 ML/01 Introductionof Deep Learning/EnvironmentSetup.pdf b/2022 ML/01 Introductionof Deep Learning/EnvironmentSetup.pdf new file mode 100644 index 0000000000000000000000000000000000000000..451967ebce2a1065eadeca00a5e9ce8ab9efd042 GIT binary patch literal 2335324 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

    +OKEqgATCJ?XR8o>C2;Vmb-Dns9GM1r0 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

    L3xQcEsq zMz)%p18ap}mfZEu=tR#W zmZvz=t^B0hCFF&X5x0n#$U9DKnj-NpLDe_ ziS(is>xVYe#_yl4uf@gp&srRBp_g_UpE?%>LpGgZ`lMA+Ghf(M4&}fw4LSU2I@W~t z?QBrP@}tUNs7Y&m3su6acX5nLvNDbffEn;69oTF)f(6f-xMoK1#+wX82wqa0MwB@@ z-Pl`}>4wct88^0`oOqayWf*WgRW+s9nIp0Y^#!pMfTM{f;a^)ef2Ie}SY&p^wI)7( zvX14EI-+C~fYRBw5JbQ;M?@w)EO}^9uiYCPDJmU|^US_bqs1)=e-{4e`?Z`FWcsotZcY?c+J}sL_z#o4A2*nJJ$xO@Ae-{+&!0&CuLLyDLjF z%q4c=(`Z!Iq7B&-*nnK#yz`)!3#tklxZ7+{`{?ayo&AZLzza>$&jNW5x}5fGlmc0T zx*~qx%69!e;Z}c-JLuDz*BVNtj8t35TZ$(Q+7CFur~hw{Nycy25;i7lS>p2YhAoqt z%_eVV=7BZKne>WKK3O~njozl1yqx(P^}@fIBs)88D^djsh(UDm#?679{p@^cT9?`& zx!WL>aXkeBAX&d*hm(pY%HYP;QW^UN?gv=B0YXTN)R_)WNVQK9tBzk1Xk;lgQzL+l zSD)qIWP@vxT}C%0YVv8O-1(f9_N7tkW~b>OfK{jpy0&#&1h49O%(}`Y*hZVmEM*={ zebKkVWSQ#D;|nwB)P2-uUa|1$Jp<$kra*AnmC66oKpTk{>G59Ju8x-O;F4CPi}2vR zgj}HtuBe-x@TJ>8vT3);jlOD#!pvdw9zp0ur``Qm3HOedb4~JmQLp^`(?d^ykVBUg zh*2#;%5<_NAWcHaBxbb5jFB(ANMHP^k<58#(F3u669WaJtFD)|JqESQPd*5E372}R z|GgKfnQn6TdJ5i}mo!C33(#R$6C^RXUGfF@z)4a;&-HTYkT-!8hk!CMl=Mch+bBNt zdc$scH}rE@VY-HUWsjp8tGI!}mHHmMo+na+*DW-DfV#oAWMxm#IoqU3G-*)zrK}vc zk6h#pe?}-^F_BGu?c`lCE@AF34%4M@3lL`gxw}Gg02FB-H0f7@`$J+i?sa#4lZGTr zj|z;)e5bO7+a_(7G=FPfc8oR%4Cv1t3WwgkZt6AyPVXOrw*n$>{lFR+(`9@38K%l6 zrYUB9?B)HZGBMk}hX9KB$ZOPBTPp%=`_hdPlZDxaG<+FebJocwkNN%*3jn!C1|zPa zee6KUVw?xjqGVN1j*j_3_hdb&xFtVV9``!<5tVk#6)WYk3WG}I1Ox~bNT-L205 z#E@&XsV*iXn?n)~a3a^5;`hgJN2i`RL3oThzn7O_>j_O;_Up3uKln#e*NrXGbk!wS6_JLjoE? zh1>H>sWd(|5G>9_z{3_qCMVSDecal?Gt5WLJI0(xYTpJ+bU{2$xfrKgyij`f@sQ7S zFdrYAdh7|}An(+0^4Y_yLLzIKL~o9By#b2vvRXwdD&5ss}@%vXeC@ORn zDXt;#J8KXaIk>Pn(Z2-em?{f)!uyd3Pm*TvEy#oVY?GWr`7zZY#l(5~V_kY?0VUqH zFNc6y{_>j222Tdm1Jp!1V9j?Y_>md?81wHDBle)wvhN9E!Vl$|gj4|F1t9HY>Cp&Y z!bl=3-LFNF?csjAH|sM>7#Nyg`NcMf`-I*uEVvrIYSj?mS!2^6Q$*GTKSz0fQP1vd z-s4Yroyj1;_Cl1cLVyNteH{j|z=m@S+~sg(>Eu)lq72*C3rq?67@%jyKptAJGU4@} zWGm+)75D<0XO>Vr&6=>5;L$7ivs}#3W^`7?1X;pd{kF=u`$=2h;?0jWtzQ&t`DZk|)tT)>mX#iNNT4f-Jb`Kak<

    =J1Z7&AR= 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� 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%0DVWlg@≤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

  • reRgDYinbmP^h7I>a4tr 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

    Ap+IT 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 NlPP3b)}Z0^+zP@YaiY*9=#z0IWr=PDqF%! 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

    tSG(W<@Ks)7KC#u0w7Kbc(mh$~~J(yaG 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

    2pRBhXOZ>FeoUgf<0aPbyjV@~Ln`~15( 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%0DBh(lp1*4v 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 XG4LQ%`;-#-9&CUW=H_#~TonHXEKDsv literal 0 HcmV?d00001 diff --git a/2022 ML/01 Introductionof Deep Learning/HW01.pdf b/2022 ML/01 Introductionof Deep Learning/HW01.pdf new file mode 100644 index 0000000000000000000000000000000000000000..905e4d1d80f6aaa7a1ee7812cabefeca2b1a1494 GIT binary patch literal 519472 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%0Dhj?(^}izJb#h7XzMeI0kxa%$!E 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

    &Sz{|jwSfA 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 (B)\n", + " return x" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "x5-LKF6R8xeq" + }, + "source": [ + "# Feature Selection\n", + "Choose features you deem useful by modifying the function below." + ] + }, + { + "cell_type": "code", + "source": [ + "def select_feat(train_data, valid_data, test_data, select_all=True):\n", + " '''Selects useful features to perform regression'''\n", + " y_train, y_valid = train_data[:,-1], valid_data[:,-1]\n", + " raw_x_train, raw_x_valid, raw_x_test = train_data[:,:-1], valid_data[:,:-1], test_data\n", + "\n", + " if select_all:\n", + " feat_idx = list(range(raw_x_train.shape[1]))\n", + " else:\n", + " feat_idx = [0,1,2,3,4] # TODO: Select suitable feature columns.\n", + " \n", + " return raw_x_train[:,feat_idx], raw_x_valid[:,feat_idx], raw_x_test[:,feat_idx], y_train, y_valid" + ], + "metadata": { + "id": "0FEnKRaIIeKp" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "# Training Loop" + ], + "metadata": { + "id": "kADIPNQ2Ih5X" + } + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "k4Rq8_TztAhq" + }, + "outputs": [], + "source": [ + "def trainer(train_loader, valid_loader, model, config, device):\n", + "\n", + " criterion = nn.MSELoss(reduction='mean') # Define your loss function, do not modify this.\n", + "\n", + " # Define your optimization algorithm. \n", + " # TODO: Please check https://pytorch.org/docs/stable/optim.html to get more available algorithms.\n", + " # TODO: L2 regularization (optimizer(weight decay...) or implement by your self).\n", + " optimizer = torch.optim.SGD(model.parameters(), lr=config['learning_rate'], momentum=0.9) \n", + "\n", + " writer = SummaryWriter() # Writer of tensoboard.\n", + "\n", + " if not os.path.isdir('./models'):\n", + " os.mkdir('./models') # Create directory of saving models.\n", + "\n", + " n_epochs, best_loss, step, early_stop_count = config['n_epochs'], math.inf, 0, 0\n", + "\n", + " for epoch in range(n_epochs):\n", + " model.train() # Set your model to train mode.\n", + " loss_record = []\n", + "\n", + " # tqdm is a package to visualize your training progress.\n", + " train_pbar = tqdm(train_loader, position=0, leave=True)\n", + "\n", + " for x, y in train_pbar:\n", + " optimizer.zero_grad() # Set gradient to zero.\n", + " x, y = x.to(device), y.to(device) # Move your data to device. \n", + " pred = model(x) \n", + " loss = criterion(pred, y)\n", + " loss.backward() # Compute gradient(backpropagation).\n", + " optimizer.step() # Update parameters.\n", + " step += 1\n", + " loss_record.append(loss.detach().item())\n", + " \n", + " # Display current epoch number and loss on tqdm progress bar.\n", + " train_pbar.set_description(f'Epoch [{epoch+1}/{n_epochs}]')\n", + " train_pbar.set_postfix({'loss': loss.detach().item()})\n", + "\n", + " mean_train_loss = sum(loss_record)/len(loss_record)\n", + " writer.add_scalar('Loss/train', mean_train_loss, step)\n", + "\n", + " model.eval() # Set your model to evaluation mode.\n", + " loss_record = []\n", + " for x, y in valid_loader:\n", + " x, y = x.to(device), y.to(device)\n", + " with torch.no_grad():\n", + " pred = model(x)\n", + " loss = criterion(pred, y)\n", + "\n", + " loss_record.append(loss.item())\n", + " \n", + " mean_valid_loss = sum(loss_record)/len(loss_record)\n", + " print(f'Epoch [{epoch+1}/{n_epochs}]: Train loss: {mean_train_loss:.4f}, Valid loss: {mean_valid_loss:.4f}')\n", + " writer.add_scalar('Loss/valid', mean_valid_loss, step)\n", + "\n", + " if mean_valid_loss < best_loss:\n", + " best_loss = mean_valid_loss\n", + " torch.save(model.state_dict(), config['save_path']) # Save your best model\n", + " print('Saving model with loss {:.3f}...'.format(best_loss))\n", + " early_stop_count = 0\n", + " else: \n", + " early_stop_count += 1\n", + "\n", + " if early_stop_count >= config['early_stop']:\n", + " print('\\nModel is not improving, so we halt the training session.')\n", + " return" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "0pgkOh2e9UjE" + }, + "source": [ + "# Configurations\n", + "`config` contains hyper-parameters for training and the path to save your model." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "QoWPUahCtoT6" + }, + "outputs": [], + "source": [ + "device = 'cuda' if torch.cuda.is_available() else 'cpu'\n", + "config = {\n", + " 'seed': 5201314, # Your seed number, you can pick your lucky number. :)\n", + " 'select_all': True, # Whether to use all features.\n", + " 'valid_ratio': 0.2, # validation_size = train_size * valid_ratio\n", + " 'n_epochs': 3000, # Number of epochs. \n", + " 'batch_size': 256, \n", + " 'learning_rate': 1e-5, \n", + " 'early_stop': 400, # If model has not improved for this many consecutive epochs, stop training. \n", + " 'save_path': './models/model.ckpt' # Your model will be saved here.\n", + "}" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "lrS-aJJh9XkW" + }, + "source": [ + "# Dataloader\n", + "Read data from files and set up training, validation, and testing sets. You do not need to modify this part." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "2jc7ZfDot2t9", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "62d291db-61c8-424d-ec87-2cfce6dd330d" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "train_data size: (2160, 118) \n", + "valid_data size: (539, 118) \n", + "test_data size: (1078, 117)\n", + "number of features: 117\n" + ] + } + ], + "source": [ + "# Set seed for reproducibility\n", + "same_seed(config['seed'])\n", + "\n", + "\n", + "# train_data size: 2699 x 118 (id + 37 states + 16 features x 5 days) \n", + "# test_data size: 1078 x 117 (without last day's positive rate)\n", + "train_data, test_data = pd.read_csv('./covid.train.csv').values, pd.read_csv('./covid.test.csv').values\n", + "train_data, valid_data = train_valid_split(train_data, config['valid_ratio'], config['seed'])\n", + "\n", + "# Print out the data size.\n", + "print(f\"\"\"train_data size: {train_data.shape} \n", + "valid_data size: {valid_data.shape} \n", + "test_data size: {test_data.shape}\"\"\")\n", + "\n", + "# Select features\n", + "x_train, x_valid, x_test, y_train, y_valid = select_feat(train_data, valid_data, test_data, config['select_all'])\n", + "\n", + "# Print out the number of features.\n", + "print(f'number of features: {x_train.shape[1]}')\n", + "\n", + "train_dataset, valid_dataset, test_dataset = COVID19Dataset(x_train, y_train), \\\n", + " COVID19Dataset(x_valid, y_valid), \\\n", + " COVID19Dataset(x_test)\n", + "\n", + "# Pytorch data loader loads pytorch dataset into batches.\n", + "train_loader = DataLoader(train_dataset, batch_size=config['batch_size'], shuffle=True, pin_memory=True)\n", + "valid_loader = DataLoader(valid_dataset, batch_size=config['batch_size'], shuffle=True, pin_memory=True)\n", + "test_loader = DataLoader(test_dataset, batch_size=config['batch_size'], shuffle=False, pin_memory=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "0OBYgjCA-YwD" + }, + "source": [ + "# Start training!" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "YdttVRkAfu2t", + "outputId": "864a1214-e69e-4197-dda0-ce2f6fe07d3c" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1/3000]: 100%|██████████| 9/9 [00:02<00:00, 3.51it/s, loss=60.4]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1/3000]: Train loss: 134.2442, Valid loss: 107.2154\n", + "Saving model with loss 107.215...\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [2/3000]: 100%|██████████| 9/9 [00:00<00:00, 91.73it/s, loss=65.9]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [2/3000]: Train loss: 69.8928, Valid loss: 50.8182\n", + "Saving model with loss 50.818...\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [3/3000]: 100%|██████████| 9/9 [00:00<00:00, 89.78it/s, loss=61.8]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [3/3000]: Train loss: 48.5299, Valid loss: 39.1162\n", + "Saving model with loss 39.116...\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [4/3000]: 100%|██████████| 9/9 [00:00<00:00, 85.48it/s, loss=42]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [4/3000]: Train loss: 39.2690, Valid loss: 39.9758\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [5/3000]: 100%|██████████| 9/9 [00:00<00:00, 90.07it/s, loss=37.6]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [5/3000]: Train loss: 34.3680, Valid loss: 34.5855\n", + "Saving model with loss 34.586...\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [6/3000]: 100%|██████████| 9/9 [00:00<00:00, 84.92it/s, loss=35.4]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [6/3000]: Train loss: 32.7019, Valid loss: 34.4896\n", + "Saving model with loss 34.490...\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [7/3000]: 100%|██████████| 9/9 [00:00<00:00, 89.79it/s, loss=30.4]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [7/3000]: Train loss: 31.6557, Valid loss: 32.7823\n", + "Saving model with loss 32.782...\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [8/3000]: 100%|██████████| 9/9 [00:00<00:00, 90.05it/s, loss=31.8]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [8/3000]: Train loss: 31.0152, Valid loss: 28.5507\n", + "Saving model with loss 28.551...\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [9/3000]: 100%|██████████| 9/9 [00:00<00:00, 83.43it/s, loss=28.6]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [9/3000]: Train loss: 30.0828, Valid loss: 29.0465\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [10/3000]: 100%|██████████| 9/9 [00:00<00:00, 93.52it/s, loss=30]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [10/3000]: Train loss: 29.1485, Valid loss: 29.9683\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [11/3000]: 100%|██████████| 9/9 [00:00<00:00, 75.94it/s, loss=30.9]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [11/3000]: Train loss: 27.2044, Valid loss: 34.4240\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [12/3000]: 100%|██████████| 9/9 [00:00<00:00, 98.10it/s, loss=28.5]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [12/3000]: Train loss: 30.4587, Valid loss: 30.5449\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [13/3000]: 100%|██████████| 9/9 [00:00<00:00, 83.05it/s, loss=26.4]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [13/3000]: Train loss: 28.8501, Valid loss: 38.8159\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [14/3000]: 100%|██████████| 9/9 [00:00<00:00, 86.25it/s, loss=25.9]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [14/3000]: Train loss: 30.4944, Valid loss: 23.6367\n", + "Saving model with loss 23.637...\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [15/3000]: 100%|██████████| 9/9 [00:00<00:00, 92.22it/s, loss=20]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [15/3000]: Train loss: 22.0876, Valid loss: 21.6634\n", + "Saving model with loss 21.663...\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [16/3000]: 100%|██████████| 9/9 [00:00<00:00, 93.33it/s, loss=27.3]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [16/3000]: Train loss: 21.9709, Valid loss: 21.4196\n", + "Saving model with loss 21.420...\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [17/3000]: 100%|██████████| 9/9 [00:00<00:00, 91.51it/s, loss=18.6]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [17/3000]: Train loss: 18.8819, Valid loss: 17.4513\n", + "Saving model with loss 17.451...\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [18/3000]: 100%|██████████| 9/9 [00:00<00:00, 63.76it/s, loss=16.5]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [18/3000]: Train loss: 19.4507, Valid loss: 16.2923\n", + "Saving model with loss 16.292...\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [19/3000]: 100%|██████████| 9/9 [00:00<00:00, 69.55it/s, loss=18.7]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [19/3000]: Train loss: 17.1157, Valid loss: 12.4208\n", + "Saving model with loss 12.421...\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [20/3000]: 100%|██████████| 9/9 [00:00<00:00, 67.15it/s, loss=16.1]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [20/3000]: Train loss: 14.4298, Valid loss: 12.4150\n", + "Saving model with loss 12.415...\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [21/3000]: 100%|██████████| 9/9 [00:00<00:00, 56.46it/s, loss=11.5]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [21/3000]: Train loss: 12.4320, Valid loss: 10.2074\n", + "Saving model with loss 10.207...\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [22/3000]: 100%|██████████| 9/9 [00:00<00:00, 53.86it/s, loss=8.66]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [22/3000]: Train loss: 9.8818, Valid loss: 8.9815\n", + "Saving model with loss 8.982...\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [23/3000]: 100%|██████████| 9/9 [00:00<00:00, 83.82it/s, loss=9.7]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [23/3000]: Train loss: 9.4202, Valid loss: 8.1944\n", + "Saving model with loss 8.194...\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [24/3000]: 100%|██████████| 9/9 [00:00<00:00, 79.29it/s, loss=5.93]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [24/3000]: Train loss: 9.9787, Valid loss: 11.8254\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [25/3000]: 100%|██████████| 9/9 [00:00<00:00, 82.85it/s, loss=11.6]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [25/3000]: Train loss: 13.3498, Valid loss: 18.9990\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [26/3000]: 100%|██████████| 9/9 [00:00<00:00, 82.09it/s, loss=33.1]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [26/3000]: Train loss: 32.1958, Valid loss: 16.0473\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [27/3000]: 100%|██████████| 9/9 [00:00<00:00, 93.65it/s, loss=12.9]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [27/3000]: Train loss: 22.0563, Valid loss: 33.8580\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [28/3000]: 100%|██████████| 9/9 [00:00<00:00, 90.02it/s, loss=12.2]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [28/3000]: Train loss: 24.0252, Valid loss: 16.7239\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [29/3000]: 100%|██████████| 9/9 [00:00<00:00, 82.78it/s, loss=14.1]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [29/3000]: Train loss: 16.1765, Valid loss: 16.0472\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [30/3000]: 100%|██████████| 9/9 [00:00<00:00, 83.62it/s, loss=10.7]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [30/3000]: Train loss: 13.3738, Valid loss: 12.4264\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [31/3000]: 100%|██████████| 9/9 [00:00<00:00, 82.53it/s, loss=9.61]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [31/3000]: Train loss: 10.5927, Valid loss: 8.4381\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [32/3000]: 100%|██████████| 9/9 [00:00<00:00, 85.14it/s, loss=5.78]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [32/3000]: Train loss: 8.7088, Valid loss: 7.7009\n", + "Saving model with loss 7.701...\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [33/3000]: 100%|██████████| 9/9 [00:00<00:00, 80.19it/s, loss=7.05]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [33/3000]: Train loss: 7.5685, Valid loss: 9.8440\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [34/3000]: 100%|██████████| 9/9 [00:00<00:00, 85.50it/s, loss=6.26]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [34/3000]: Train loss: 6.5751, Valid loss: 6.4251\n", + "Saving model with loss 6.425...\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [35/3000]: 100%|██████████| 9/9 [00:00<00:00, 76.68it/s, loss=5.67]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [35/3000]: Train loss: 6.4591, Valid loss: 7.3667\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [36/3000]: 100%|██████████| 9/9 [00:00<00:00, 81.18it/s, loss=10.8]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [36/3000]: Train loss: 8.9118, Valid loss: 5.4373\n", + "Saving model with loss 5.437...\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [37/3000]: 100%|██████████| 9/9 [00:00<00:00, 92.66it/s, loss=12.9]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [37/3000]: Train loss: 11.4654, Valid loss: 11.2931\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [38/3000]: 100%|██████████| 9/9 [00:00<00:00, 79.60it/s, loss=15.8]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [38/3000]: Train loss: 10.1454, Valid loss: 10.1152\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [39/3000]: 100%|██████████| 9/9 [00:00<00:00, 91.95it/s, loss=8.26]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [39/3000]: Train loss: 7.9754, Valid loss: 5.3838\n", + "Saving model with loss 5.384...\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [40/3000]: 100%|██████████| 9/9 [00:00<00:00, 81.97it/s, loss=5.21]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [40/3000]: Train loss: 5.9771, Valid loss: 7.2963\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [41/3000]: 100%|██████████| 9/9 [00:00<00:00, 78.22it/s, loss=6.05]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [41/3000]: Train loss: 9.5937, Valid loss: 5.5865\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [42/3000]: 100%|██████████| 9/9 [00:00<00:00, 86.19it/s, loss=6.54]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [42/3000]: Train loss: 6.1208, Valid loss: 5.6068\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [43/3000]: 100%|██████████| 9/9 [00:00<00:00, 78.79it/s, loss=8.22]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [43/3000]: Train loss: 6.5059, Valid loss: 5.4390\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [44/3000]: 100%|██████████| 9/9 [00:00<00:00, 93.68it/s, loss=6.75]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [44/3000]: Train loss: 8.7822, Valid loss: 6.1507\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [45/3000]: 100%|██████████| 9/9 [00:00<00:00, 84.89it/s, loss=5.98]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [45/3000]: Train loss: 5.7645, Valid loss: 5.8273\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [46/3000]: 100%|██████████| 9/9 [00:00<00:00, 85.09it/s, loss=6.64]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [46/3000]: Train loss: 6.5125, Valid loss: 5.7721\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [47/3000]: 100%|██████████| 9/9 [00:00<00:00, 90.44it/s, loss=10.8]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [47/3000]: Train loss: 7.8976, Valid loss: 10.6389\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [48/3000]: 100%|██████████| 9/9 [00:00<00:00, 85.76it/s, loss=5.32]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [48/3000]: Train loss: 6.8367, Valid loss: 5.6704\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [49/3000]: 100%|██████████| 9/9 [00:00<00:00, 85.62it/s, loss=5.77]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [49/3000]: Train loss: 5.7062, Valid loss: 5.0708\n", + "Saving model with loss 5.071...\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [50/3000]: 100%|██████████| 9/9 [00:00<00:00, 98.23it/s, loss=5.42]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [50/3000]: Train loss: 5.2814, Valid loss: 5.3736\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [51/3000]: 100%|██████████| 9/9 [00:00<00:00, 88.16it/s, loss=7.32]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [51/3000]: Train loss: 7.2379, Valid loss: 5.4500\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [52/3000]: 100%|██████████| 9/9 [00:00<00:00, 98.25it/s, loss=9.58]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [52/3000]: Train loss: 6.0749, Valid loss: 5.2415\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [53/3000]: 100%|██████████| 9/9 [00:00<00:00, 93.91it/s, loss=7.27]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [53/3000]: Train loss: 5.5730, Valid loss: 5.9925\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [54/3000]: 100%|██████████| 9/9 [00:00<00:00, 81.17it/s, loss=6.5]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [54/3000]: Train loss: 6.3573, Valid loss: 6.8643\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [55/3000]: 100%|██████████| 9/9 [00:00<00:00, 82.36it/s, loss=6.67]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [55/3000]: Train loss: 5.5011, Valid loss: 5.3129\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [56/3000]: 100%|██████████| 9/9 [00:00<00:00, 82.00it/s, loss=5.08]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [56/3000]: Train loss: 5.5338, Valid loss: 4.9076\n", + "Saving model with loss 4.908...\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [57/3000]: 100%|██████████| 9/9 [00:00<00:00, 75.47it/s, loss=5.01]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [57/3000]: Train loss: 5.2906, Valid loss: 7.1043\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [58/3000]: 100%|██████████| 9/9 [00:00<00:00, 94.70it/s, loss=9.21]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [58/3000]: Train loss: 8.1648, Valid loss: 6.4059\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [59/3000]: 100%|██████████| 9/9 [00:00<00:00, 86.50it/s, loss=7.17]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [59/3000]: Train loss: 6.8555, Valid loss: 8.4045\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [60/3000]: 100%|██████████| 9/9 [00:00<00:00, 91.47it/s, loss=3.96]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [60/3000]: Train loss: 5.8161, Valid loss: 5.4324\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [61/3000]: 100%|██████████| 9/9 [00:00<00:00, 92.92it/s, loss=7.27]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [61/3000]: Train loss: 6.1007, Valid loss: 5.6772\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [62/3000]: 100%|██████████| 9/9 [00:00<00:00, 85.78it/s, loss=6.41]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [62/3000]: Train loss: 6.2688, Valid loss: 11.8861\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [63/3000]: 100%|██████████| 9/9 [00:00<00:00, 89.84it/s, loss=16]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [63/3000]: Train loss: 9.3666, Valid loss: 5.2015\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [64/3000]: 100%|██████████| 9/9 [00:00<00:00, 84.71it/s, loss=15.4]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [64/3000]: Train loss: 9.7231, Valid loss: 9.9735\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [65/3000]: 100%|██████████| 9/9 [00:00<00:00, 76.73it/s, loss=20]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [65/3000]: Train loss: 16.2965, Valid loss: 9.9444\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [66/3000]: 100%|██████████| 9/9 [00:00<00:00, 83.92it/s, loss=10]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [66/3000]: Train loss: 11.0266, Valid loss: 9.3559\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [67/3000]: 100%|██████████| 9/9 [00:00<00:00, 86.45it/s, loss=11]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [67/3000]: Train loss: 9.7844, Valid loss: 7.1001\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [68/3000]: 100%|██████████| 9/9 [00:00<00:00, 85.27it/s, loss=8.59]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [68/3000]: Train loss: 7.4477, Valid loss: 7.6549\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [69/3000]: 100%|██████████| 9/9 [00:00<00:00, 83.92it/s, loss=6.6]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [69/3000]: Train loss: 6.2854, Valid loss: 6.9688\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [70/3000]: 100%|██████████| 9/9 [00:00<00:00, 84.71it/s, loss=4.51]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [70/3000]: Train loss: 5.5861, Valid loss: 4.4508\n", + "Saving model with loss 4.451...\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [71/3000]: 100%|██████████| 9/9 [00:00<00:00, 76.76it/s, loss=8.03]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [71/3000]: Train loss: 5.8853, Valid loss: 4.8953\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [72/3000]: 100%|██████████| 9/9 [00:00<00:00, 93.10it/s, loss=6]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [72/3000]: Train loss: 5.3305, Valid loss: 6.5556\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [73/3000]: 100%|██████████| 9/9 [00:00<00:00, 87.83it/s, loss=7.67]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [73/3000]: Train loss: 5.5661, Valid loss: 6.9747\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [74/3000]: 100%|██████████| 9/9 [00:00<00:00, 80.91it/s, loss=4.24]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [74/3000]: Train loss: 5.2628, Valid loss: 4.5224\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [75/3000]: 100%|██████████| 9/9 [00:00<00:00, 84.90it/s, loss=4.21]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [75/3000]: Train loss: 5.0282, Valid loss: 4.4667\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [76/3000]: 100%|██████████| 9/9 [00:00<00:00, 81.36it/s, loss=5.09]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [76/3000]: Train loss: 5.2533, Valid loss: 5.5808\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [77/3000]: 100%|██████████| 9/9 [00:00<00:00, 84.42it/s, loss=4.69]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [77/3000]: Train loss: 8.2466, Valid loss: 10.7261\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [78/3000]: 100%|██████████| 9/9 [00:00<00:00, 84.95it/s, loss=3.94]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [78/3000]: Train loss: 7.2868, Valid loss: 8.4281\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [79/3000]: 100%|██████████| 9/9 [00:00<00:00, 78.58it/s, loss=5.62]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [79/3000]: Train loss: 6.9504, Valid loss: 5.3363\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [80/3000]: 100%|██████████| 9/9 [00:00<00:00, 92.66it/s, loss=6.21]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [80/3000]: Train loss: 5.2380, Valid loss: 5.6747\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [81/3000]: 100%|██████████| 9/9 [00:00<00:00, 82.48it/s, loss=6.29]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [81/3000]: Train loss: 5.5891, Valid loss: 5.6174\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [82/3000]: 100%|██████████| 9/9 [00:00<00:00, 91.62it/s, loss=6.89]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [82/3000]: Train loss: 5.4303, Valid loss: 5.1562\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [83/3000]: 100%|██████████| 9/9 [00:00<00:00, 85.79it/s, loss=4.88]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [83/3000]: Train loss: 4.9677, Valid loss: 6.0496\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [84/3000]: 100%|██████████| 9/9 [00:00<00:00, 84.99it/s, loss=5.72]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [84/3000]: Train loss: 5.7508, Valid loss: 6.0604\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [85/3000]: 100%|██████████| 9/9 [00:00<00:00, 84.02it/s, loss=5.53]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [85/3000]: Train loss: 5.2115, Valid loss: 4.5274\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [86/3000]: 100%|██████████| 9/9 [00:00<00:00, 90.71it/s, loss=5.59]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [86/3000]: Train loss: 5.0080, Valid loss: 4.9097\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [87/3000]: 100%|██████████| 9/9 [00:00<00:00, 92.67it/s, loss=7.35]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [87/3000]: Train loss: 5.0228, Valid loss: 4.6723\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [88/3000]: 100%|██████████| 9/9 [00:00<00:00, 92.62it/s, loss=3.9]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [88/3000]: Train loss: 5.2372, Valid loss: 7.8722\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [89/3000]: 100%|██████████| 9/9 [00:00<00:00, 95.84it/s, loss=7.76]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [89/3000]: Train loss: 6.7827, Valid loss: 5.7613\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [90/3000]: 100%|██████████| 9/9 [00:00<00:00, 82.93it/s, loss=6.79]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [90/3000]: Train loss: 6.0041, Valid loss: 4.9902\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [91/3000]: 100%|██████████| 9/9 [00:00<00:00, 80.06it/s, loss=8.87]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [91/3000]: Train loss: 6.8558, Valid loss: 5.1602\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [92/3000]: 100%|██████████| 9/9 [00:00<00:00, 84.00it/s, loss=6.8]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [92/3000]: Train loss: 6.2335, Valid loss: 5.1861\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [93/3000]: 100%|██████████| 9/9 [00:00<00:00, 77.46it/s, loss=5.38]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [93/3000]: Train loss: 6.4318, Valid loss: 4.8951\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [94/3000]: 100%|██████████| 9/9 [00:00<00:00, 87.74it/s, loss=4.97]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [94/3000]: Train loss: 4.6933, Valid loss: 4.9935\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [95/3000]: 100%|██████████| 9/9 [00:00<00:00, 92.68it/s, loss=5.24]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [95/3000]: Train loss: 4.9823, Valid loss: 4.8480\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [96/3000]: 100%|██████████| 9/9 [00:00<00:00, 95.71it/s, loss=4.83]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [96/3000]: Train loss: 4.9856, Valid loss: 5.4775\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [97/3000]: 100%|██████████| 9/9 [00:00<00:00, 84.41it/s, loss=6.77]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [97/3000]: Train loss: 5.0282, Valid loss: 7.7357\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [98/3000]: 100%|██████████| 9/9 [00:00<00:00, 90.02it/s, loss=9.54]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [98/3000]: Train loss: 6.3964, Valid loss: 12.3827\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [99/3000]: 100%|██████████| 9/9 [00:00<00:00, 82.92it/s, loss=9.36]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [99/3000]: Train loss: 7.8921, Valid loss: 8.9927\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [100/3000]: 100%|██████████| 9/9 [00:00<00:00, 91.72it/s, loss=5.86]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [100/3000]: Train loss: 6.4389, Valid loss: 4.3409\n", + "Saving model with loss 4.341...\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [101/3000]: 100%|██████████| 9/9 [00:00<00:00, 36.45it/s, loss=5.32]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [101/3000]: Train loss: 5.6297, Valid loss: 5.6269\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [102/3000]: 100%|██████████| 9/9 [00:00<00:00, 85.79it/s, loss=5.16]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [102/3000]: Train loss: 5.0151, Valid loss: 5.7860\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [103/3000]: 100%|██████████| 9/9 [00:00<00:00, 89.62it/s, loss=9.34]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [103/3000]: Train loss: 5.8818, Valid loss: 5.3487\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [104/3000]: 100%|██████████| 9/9 [00:00<00:00, 92.28it/s, loss=5.05]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [104/3000]: Train loss: 8.1942, Valid loss: 9.5055\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [105/3000]: 100%|██████████| 9/9 [00:00<00:00, 89.39it/s, loss=5.05]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [105/3000]: Train loss: 5.7229, Valid loss: 6.1507\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [106/3000]: 100%|██████████| 9/9 [00:00<00:00, 90.74it/s, loss=6.23]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [106/3000]: Train loss: 4.7533, Valid loss: 8.4970\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [107/3000]: 100%|██████████| 9/9 [00:00<00:00, 93.22it/s, loss=11.7]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [107/3000]: Train loss: 8.5811, Valid loss: 13.7362\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [108/3000]: 100%|██████████| 9/9 [00:00<00:00, 83.86it/s, loss=7.52]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [108/3000]: Train loss: 10.3410, Valid loss: 9.2626\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [109/3000]: 100%|██████████| 9/9 [00:00<00:00, 81.38it/s, loss=6.31]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [109/3000]: Train loss: 9.2514, Valid loss: 16.0276\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [110/3000]: 100%|██████████| 9/9 [00:00<00:00, 86.22it/s, loss=15.4]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [110/3000]: Train loss: 10.0316, Valid loss: 4.5253\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [111/3000]: 100%|██████████| 9/9 [00:00<00:00, 87.53it/s, loss=9.97]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [111/3000]: Train loss: 8.9933, Valid loss: 5.1573\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [112/3000]: 100%|██████████| 9/9 [00:00<00:00, 74.76it/s, loss=3.75]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [112/3000]: Train loss: 5.0132, Valid loss: 6.8230\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [113/3000]: 100%|██████████| 9/9 [00:00<00:00, 84.89it/s, loss=4.73]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [113/3000]: Train loss: 4.7149, Valid loss: 5.0164\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [114/3000]: 100%|██████████| 9/9 [00:00<00:00, 82.68it/s, loss=8.34]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [114/3000]: Train loss: 5.5852, Valid loss: 5.0920\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [115/3000]: 100%|██████████| 9/9 [00:00<00:00, 78.54it/s, loss=5.26]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [115/3000]: Train loss: 5.0552, Valid loss: 4.2040\n", + "Saving model with loss 4.204...\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [116/3000]: 100%|██████████| 9/9 [00:00<00:00, 83.79it/s, loss=5.01]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [116/3000]: Train loss: 4.7343, Valid loss: 6.2218\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [117/3000]: 100%|██████████| 9/9 [00:00<00:00, 92.19it/s, loss=6.07]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [117/3000]: Train loss: 5.6630, Valid loss: 5.0344\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [118/3000]: 100%|██████████| 9/9 [00:00<00:00, 94.08it/s, loss=11.1]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [118/3000]: Train loss: 7.4919, Valid loss: 8.8715\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [119/3000]: 100%|██████████| 9/9 [00:00<00:00, 87.22it/s, loss=9.36]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [119/3000]: Train loss: 7.9488, Valid loss: 8.0967\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [120/3000]: 100%|██████████| 9/9 [00:00<00:00, 80.15it/s, loss=7.02]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [120/3000]: Train loss: 7.1190, Valid loss: 7.2470\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [121/3000]: 100%|██████████| 9/9 [00:00<00:00, 99.88it/s, loss=4.96]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [121/3000]: Train loss: 6.2364, Valid loss: 4.7989\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [122/3000]: 100%|██████████| 9/9 [00:00<00:00, 98.83it/s, loss=3.56]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [122/3000]: Train loss: 4.7021, Valid loss: 4.3818\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [123/3000]: 100%|██████████| 9/9 [00:00<00:00, 96.56it/s, loss=6.7]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [123/3000]: Train loss: 4.8892, Valid loss: 4.0485\n", + "Saving model with loss 4.048...\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [124/3000]: 100%|██████████| 9/9 [00:00<00:00, 96.38it/s, loss=3.67]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [124/3000]: Train loss: 4.7228, Valid loss: 5.2480\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [125/3000]: 100%|██████████| 9/9 [00:00<00:00, 92.83it/s, loss=5.41]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [125/3000]: Train loss: 4.7390, Valid loss: 5.5564\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [126/3000]: 100%|██████████| 9/9 [00:00<00:00, 98.43it/s, loss=6.38]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [126/3000]: Train loss: 5.5245, Valid loss: 4.2328\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [127/3000]: 100%|██████████| 9/9 [00:00<00:00, 87.37it/s, loss=6.93]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [127/3000]: Train loss: 5.1780, Valid loss: 4.1613\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [128/3000]: 100%|██████████| 9/9 [00:00<00:00, 77.82it/s, loss=4.36]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [128/3000]: Train loss: 5.0525, Valid loss: 8.7827\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [129/3000]: 100%|██████████| 9/9 [00:00<00:00, 86.39it/s, loss=3.99]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [129/3000]: Train loss: 6.6621, Valid loss: 4.4047\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [130/3000]: 100%|██████████| 9/9 [00:00<00:00, 75.37it/s, loss=5.86]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [130/3000]: Train loss: 5.3509, Valid loss: 6.7665\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [131/3000]: 100%|██████████| 9/9 [00:00<00:00, 82.72it/s, loss=6.99]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [131/3000]: Train loss: 6.1347, Valid loss: 5.3160\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [132/3000]: 100%|██████████| 9/9 [00:00<00:00, 85.96it/s, loss=4.34]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [132/3000]: Train loss: 4.7012, Valid loss: 4.3805\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [133/3000]: 100%|██████████| 9/9 [00:00<00:00, 85.56it/s, loss=5.47]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [133/3000]: Train loss: 4.7215, Valid loss: 4.4664\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [134/3000]: 100%|██████████| 9/9 [00:00<00:00, 89.91it/s, loss=6.79]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [134/3000]: Train loss: 4.9867, Valid loss: 4.1537\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [135/3000]: 100%|██████████| 9/9 [00:00<00:00, 93.76it/s, loss=5.6]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [135/3000]: Train loss: 4.7668, Valid loss: 4.8251\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [136/3000]: 100%|██████████| 9/9 [00:00<00:00, 92.98it/s, loss=4.29]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [136/3000]: Train loss: 4.3274, Valid loss: 5.3113\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [137/3000]: 100%|██████████| 9/9 [00:00<00:00, 84.42it/s, loss=3.53]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [137/3000]: Train loss: 4.1863, Valid loss: 3.9598\n", + "Saving model with loss 3.960...\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [138/3000]: 100%|██████████| 9/9 [00:00<00:00, 78.34it/s, loss=4.26]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [138/3000]: Train loss: 4.5788, Valid loss: 4.3185\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [139/3000]: 100%|██████████| 9/9 [00:00<00:00, 85.43it/s, loss=5.9]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [139/3000]: Train loss: 4.4785, Valid loss: 4.2048\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [140/3000]: 100%|██████████| 9/9 [00:00<00:00, 78.01it/s, loss=4.54]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [140/3000]: Train loss: 4.8288, Valid loss: 4.2352\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [141/3000]: 100%|██████████| 9/9 [00:00<00:00, 90.65it/s, loss=4.03]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [141/3000]: Train loss: 4.3181, Valid loss: 4.0168\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [142/3000]: 100%|██████████| 9/9 [00:00<00:00, 72.01it/s, loss=4.49]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [142/3000]: Train loss: 4.7471, Valid loss: 4.9416\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [143/3000]: 100%|██████████| 9/9 [00:00<00:00, 91.48it/s, loss=4.27]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [143/3000]: Train loss: 4.9457, Valid loss: 4.4161\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [144/3000]: 100%|██████████| 9/9 [00:00<00:00, 98.84it/s, loss=8.04]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [144/3000]: Train loss: 4.8698, Valid loss: 4.8862\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [145/3000]: 100%|██████████| 9/9 [00:00<00:00, 97.72it/s, loss=5.14]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [145/3000]: Train loss: 5.0283, Valid loss: 6.0260\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [146/3000]: 100%|██████████| 9/9 [00:00<00:00, 92.84it/s, loss=6.32]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [146/3000]: Train loss: 4.9807, Valid loss: 6.3077\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [147/3000]: 100%|██████████| 9/9 [00:00<00:00, 81.21it/s, loss=5.38]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [147/3000]: Train loss: 5.4250, Valid loss: 6.9116\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [148/3000]: 100%|██████████| 9/9 [00:00<00:00, 86.57it/s, loss=5.15]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [148/3000]: Train loss: 6.6490, Valid loss: 5.8872\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [149/3000]: 100%|██████████| 9/9 [00:00<00:00, 74.99it/s, loss=5.25]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [149/3000]: Train loss: 4.7447, Valid loss: 4.0451\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [150/3000]: 100%|██████████| 9/9 [00:00<00:00, 95.15it/s, loss=4.62]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [150/3000]: Train loss: 4.1997, Valid loss: 4.3530\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [151/3000]: 100%|██████████| 9/9 [00:00<00:00, 90.87it/s, loss=3.69]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [151/3000]: Train loss: 4.1187, Valid loss: 3.9976\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [152/3000]: 100%|██████████| 9/9 [00:00<00:00, 85.53it/s, loss=3.75]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [152/3000]: Train loss: 4.5858, Valid loss: 5.1132\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [153/3000]: 100%|██████████| 9/9 [00:00<00:00, 94.20it/s, loss=5.14]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [153/3000]: Train loss: 4.7696, Valid loss: 4.2695\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [154/3000]: 100%|██████████| 9/9 [00:00<00:00, 96.57it/s, loss=5.1]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [154/3000]: Train loss: 4.4546, Valid loss: 4.9587\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [155/3000]: 100%|██████████| 9/9 [00:00<00:00, 93.45it/s, loss=4.88]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [155/3000]: Train loss: 4.4625, Valid loss: 4.0940\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [156/3000]: 100%|██████████| 9/9 [00:00<00:00, 84.91it/s, loss=3.93]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [156/3000]: Train loss: 4.5735, Valid loss: 3.9244\n", + "Saving model with loss 3.924...\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [157/3000]: 100%|██████████| 9/9 [00:00<00:00, 71.69it/s, loss=4.25]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [157/3000]: Train loss: 4.6392, Valid loss: 3.9679\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [158/3000]: 100%|██████████| 9/9 [00:00<00:00, 81.69it/s, loss=4.62]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [158/3000]: Train loss: 4.2545, Valid loss: 3.8743\n", + "Saving model with loss 3.874...\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [159/3000]: 100%|██████████| 9/9 [00:00<00:00, 90.85it/s, loss=2.89]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [159/3000]: Train loss: 4.0276, Valid loss: 4.2865\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [160/3000]: 100%|██████████| 9/9 [00:00<00:00, 98.12it/s, loss=3.18]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [160/3000]: Train loss: 4.6547, Valid loss: 4.5539\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [161/3000]: 100%|██████████| 9/9 [00:00<00:00, 95.48it/s, loss=3.35]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [161/3000]: Train loss: 4.4779, Valid loss: 6.3560\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [162/3000]: 100%|██████████| 9/9 [00:00<00:00, 91.76it/s, loss=4.54]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [162/3000]: Train loss: 5.1291, Valid loss: 3.7049\n", + "Saving model with loss 3.705...\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [163/3000]: 100%|██████████| 9/9 [00:00<00:00, 80.54it/s, loss=5.07]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [163/3000]: Train loss: 4.6142, Valid loss: 4.3763\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [164/3000]: 100%|██████████| 9/9 [00:00<00:00, 86.74it/s, loss=3.62]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [164/3000]: Train loss: 4.1758, Valid loss: 3.8802\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [165/3000]: 100%|██████████| 9/9 [00:00<00:00, 79.18it/s, loss=2.88]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [165/3000]: Train loss: 5.1900, Valid loss: 6.8408\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [166/3000]: 100%|██████████| 9/9 [00:00<00:00, 81.46it/s, loss=6.1]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [166/3000]: Train loss: 4.9200, Valid loss: 4.0806\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [167/3000]: 100%|██████████| 9/9 [00:00<00:00, 86.83it/s, loss=7.87]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [167/3000]: Train loss: 5.0129, Valid loss: 3.6053\n", + "Saving model with loss 3.605...\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [168/3000]: 100%|██████████| 9/9 [00:00<00:00, 82.21it/s, loss=3.12]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [168/3000]: Train loss: 5.2935, Valid loss: 6.0032\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [169/3000]: 100%|██████████| 9/9 [00:00<00:00, 92.07it/s, loss=5.01]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [169/3000]: Train loss: 5.1583, Valid loss: 3.4403\n", + "Saving model with loss 3.440...\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [170/3000]: 100%|██████████| 9/9 [00:00<00:00, 98.96it/s, loss=3.82]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [170/3000]: Train loss: 5.0289, Valid loss: 4.1749\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [171/3000]: 100%|██████████| 9/9 [00:00<00:00, 82.15it/s, loss=4.19]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [171/3000]: Train loss: 3.9826, Valid loss: 6.5205\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [172/3000]: 100%|██████████| 9/9 [00:00<00:00, 94.09it/s, loss=4.74]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [172/3000]: Train loss: 4.3278, Valid loss: 4.3774\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [173/3000]: 100%|██████████| 9/9 [00:00<00:00, 73.51it/s, loss=4.27]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [173/3000]: Train loss: 4.0427, Valid loss: 4.1318\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [174/3000]: 100%|██████████| 9/9 [00:00<00:00, 83.77it/s, loss=4.55]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [174/3000]: Train loss: 4.4056, Valid loss: 4.5461\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [175/3000]: 100%|██████████| 9/9 [00:00<00:00, 77.42it/s, loss=3.12]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [175/3000]: Train loss: 4.3563, Valid loss: 3.5622\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [176/3000]: 100%|██████████| 9/9 [00:00<00:00, 90.96it/s, loss=3.22]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [176/3000]: Train loss: 3.9047, Valid loss: 3.8109\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [177/3000]: 100%|██████████| 9/9 [00:00<00:00, 93.03it/s, loss=5.54]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [177/3000]: Train loss: 4.0716, Valid loss: 4.5546\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [178/3000]: 100%|██████████| 9/9 [00:00<00:00, 69.47it/s, loss=3.66]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [178/3000]: Train loss: 3.8638, Valid loss: 3.9721\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [179/3000]: 100%|██████████| 9/9 [00:00<00:00, 72.42it/s, loss=5.34]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [179/3000]: Train loss: 4.3446, Valid loss: 4.0761\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [180/3000]: 100%|██████████| 9/9 [00:00<00:00, 85.13it/s, loss=4]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [180/3000]: Train loss: 4.1985, Valid loss: 6.3824\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [181/3000]: 100%|██████████| 9/9 [00:00<00:00, 86.97it/s, loss=8.03]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [181/3000]: Train loss: 6.1550, Valid loss: 3.9348\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [182/3000]: 100%|██████████| 9/9 [00:00<00:00, 88.01it/s, loss=8.93]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [182/3000]: Train loss: 5.9717, Valid loss: 3.9886\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [183/3000]: 100%|██████████| 9/9 [00:00<00:00, 73.58it/s, loss=3.59]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [183/3000]: Train loss: 4.8822, Valid loss: 5.6737\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [184/3000]: 100%|██████████| 9/9 [00:00<00:00, 94.58it/s, loss=4.4]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [184/3000]: Train loss: 3.9290, Valid loss: 5.9611\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [185/3000]: 100%|██████████| 9/9 [00:00<00:00, 95.71it/s, loss=4.99]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [185/3000]: Train loss: 4.8483, Valid loss: 3.7475\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [186/3000]: 100%|██████████| 9/9 [00:00<00:00, 86.85it/s, loss=3.5]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [186/3000]: Train loss: 4.4228, Valid loss: 4.6504\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [187/3000]: 100%|██████████| 9/9 [00:00<00:00, 96.02it/s, loss=4.23]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [187/3000]: Train loss: 3.9548, Valid loss: 3.6585\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [188/3000]: 100%|██████████| 9/9 [00:00<00:00, 94.94it/s, loss=4.3]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [188/3000]: Train loss: 3.8721, Valid loss: 3.9798\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [189/3000]: 100%|██████████| 9/9 [00:00<00:00, 83.94it/s, loss=4.21]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [189/3000]: Train loss: 4.0171, Valid loss: 3.4131\n", + "Saving model with loss 3.413...\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [190/3000]: 100%|██████████| 9/9 [00:00<00:00, 83.30it/s, loss=3.32]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [190/3000]: Train loss: 3.6938, Valid loss: 4.1580\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [191/3000]: 100%|██████████| 9/9 [00:00<00:00, 90.11it/s, loss=4.97]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [191/3000]: Train loss: 3.9996, Valid loss: 3.4940\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [192/3000]: 100%|██████████| 9/9 [00:00<00:00, 79.16it/s, loss=3.95]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [192/3000]: Train loss: 4.1949, Valid loss: 4.6346\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [193/3000]: 100%|██████████| 9/9 [00:00<00:00, 91.30it/s, loss=3.52]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [193/3000]: Train loss: 4.9444, Valid loss: 8.2765\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [194/3000]: 100%|██████████| 9/9 [00:00<00:00, 73.44it/s, loss=5.08]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [194/3000]: Train loss: 5.9377, Valid loss: 7.4225\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [195/3000]: 100%|██████████| 9/9 [00:00<00:00, 76.46it/s, loss=7.07]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [195/3000]: Train loss: 6.5531, Valid loss: 7.2571\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [196/3000]: 100%|██████████| 9/9 [00:00<00:00, 79.62it/s, loss=4.72]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [196/3000]: Train loss: 6.5491, Valid loss: 7.2811\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [197/3000]: 100%|██████████| 9/9 [00:00<00:00, 92.34it/s, loss=11.9]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [197/3000]: Train loss: 8.1468, Valid loss: 8.3875\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [198/3000]: 100%|██████████| 9/9 [00:00<00:00, 84.00it/s, loss=6.64]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [198/3000]: Train loss: 6.5703, Valid loss: 7.1935\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [199/3000]: 100%|██████████| 9/9 [00:00<00:00, 81.93it/s, loss=4.34]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [199/3000]: Train loss: 4.4460, Valid loss: 3.4754\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [200/3000]: 100%|██████████| 9/9 [00:00<00:00, 81.38it/s, loss=3.07]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [200/3000]: Train loss: 3.6791, Valid loss: 3.6701\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [201/3000]: 100%|██████████| 9/9 [00:00<00:00, 90.69it/s, loss=3.18]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [201/3000]: Train loss: 3.7644, Valid loss: 3.9912\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [202/3000]: 100%|██████████| 9/9 [00:00<00:00, 85.69it/s, loss=5.12]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [202/3000]: Train loss: 3.9099, Valid loss: 4.2044\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [203/3000]: 100%|██████████| 9/9 [00:00<00:00, 79.70it/s, loss=4.48]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [203/3000]: Train loss: 3.6676, Valid loss: 5.5986\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [204/3000]: 100%|██████████| 9/9 [00:00<00:00, 82.10it/s, loss=3.33]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [204/3000]: Train loss: 4.9000, Valid loss: 3.5194\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [205/3000]: 100%|██████████| 9/9 [00:00<00:00, 93.27it/s, loss=4.57]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [205/3000]: Train loss: 3.6632, Valid loss: 3.3738\n", + "Saving model with loss 3.374...\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [206/3000]: 100%|██████████| 9/9 [00:00<00:00, 90.04it/s, loss=2.99]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [206/3000]: Train loss: 3.5304, Valid loss: 5.9122\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [207/3000]: 100%|██████████| 9/9 [00:00<00:00, 85.52it/s, loss=5.27]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [207/3000]: Train loss: 5.4523, Valid loss: 3.5001\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [208/3000]: 100%|██████████| 9/9 [00:00<00:00, 91.20it/s, loss=4.65]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [208/3000]: Train loss: 4.6917, Valid loss: 4.8013\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [209/3000]: 100%|██████████| 9/9 [00:00<00:00, 91.44it/s, loss=4.5]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [209/3000]: Train loss: 4.3004, Valid loss: 3.5578\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [210/3000]: 100%|██████████| 9/9 [00:00<00:00, 91.66it/s, loss=3.25]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [210/3000]: Train loss: 3.5338, Valid loss: 3.5734\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [211/3000]: 100%|██████████| 9/9 [00:00<00:00, 98.31it/s, loss=4.15]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [211/3000]: Train loss: 3.7495, Valid loss: 3.3519\n", + "Saving model with loss 3.352...\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [212/3000]: 100%|██████████| 9/9 [00:00<00:00, 95.66it/s, loss=3.31]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [212/3000]: Train loss: 3.6416, Valid loss: 4.0881\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [213/3000]: 100%|██████████| 9/9 [00:00<00:00, 100.45it/s, loss=3.57]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [213/3000]: Train loss: 3.5650, Valid loss: 3.7518\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [214/3000]: 100%|██████████| 9/9 [00:00<00:00, 86.32it/s, loss=3.33]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [214/3000]: Train loss: 3.4926, Valid loss: 4.2678\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [215/3000]: 100%|██████████| 9/9 [00:00<00:00, 39.99it/s, loss=4.72]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [215/3000]: Train loss: 3.8258, Valid loss: 4.2703\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [216/3000]: 100%|██████████| 9/9 [00:00<00:00, 47.28it/s, loss=4.16]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [216/3000]: Train loss: 3.6890, Valid loss: 4.3295\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [217/3000]: 100%|██████████| 9/9 [00:00<00:00, 47.02it/s, loss=4.66]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [217/3000]: Train loss: 3.8726, Valid loss: 3.7328\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [218/3000]: 100%|██████████| 9/9 [00:00<00:00, 73.71it/s, loss=5.11]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [218/3000]: Train loss: 4.1992, Valid loss: 3.3399\n", + "Saving model with loss 3.340...\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [219/3000]: 100%|██████████| 9/9 [00:00<00:00, 83.00it/s, loss=3.28]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [219/3000]: Train loss: 4.4095, Valid loss: 5.0709\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [220/3000]: 100%|██████████| 9/9 [00:00<00:00, 94.03it/s, loss=3.34]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [220/3000]: Train loss: 4.1126, Valid loss: 3.9341\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [221/3000]: 100%|██████████| 9/9 [00:00<00:00, 94.06it/s, loss=2.68]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [221/3000]: Train loss: 3.4783, Valid loss: 3.4383\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [222/3000]: 100%|██████████| 9/9 [00:00<00:00, 79.55it/s, loss=2.19]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [222/3000]: Train loss: 3.5582, Valid loss: 3.0444\n", + "Saving model with loss 3.044...\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [223/3000]: 100%|██████████| 9/9 [00:00<00:00, 83.34it/s, loss=3.48]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [223/3000]: Train loss: 3.4898, Valid loss: 3.8371\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [224/3000]: 100%|██████████| 9/9 [00:00<00:00, 79.19it/s, loss=3.41]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [224/3000]: Train loss: 4.0799, Valid loss: 4.1598\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [225/3000]: 100%|██████████| 9/9 [00:00<00:00, 91.91it/s, loss=4.34]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [225/3000]: Train loss: 3.6707, Valid loss: 4.0218\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [226/3000]: 100%|██████████| 9/9 [00:00<00:00, 96.22it/s, loss=4.33]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [226/3000]: Train loss: 4.8209, Valid loss: 6.3212\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [227/3000]: 100%|██████████| 9/9 [00:00<00:00, 100.42it/s, loss=4.58]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [227/3000]: Train loss: 5.1429, Valid loss: 2.9458\n", + "Saving model with loss 2.946...\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [228/3000]: 100%|██████████| 9/9 [00:00<00:00, 86.04it/s, loss=7.03]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [228/3000]: Train loss: 4.6438, Valid loss: 5.4586\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [229/3000]: 100%|██████████| 9/9 [00:00<00:00, 93.50it/s, loss=3.35]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [229/3000]: Train loss: 4.6738, Valid loss: 5.0494\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [230/3000]: 100%|██████████| 9/9 [00:00<00:00, 60.22it/s, loss=3.38]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [230/3000]: Train loss: 4.0212, Valid loss: 4.3414\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [231/3000]: 100%|██████████| 9/9 [00:00<00:00, 39.97it/s, loss=3.61]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [231/3000]: Train loss: 4.1219, Valid loss: 3.3806\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [232/3000]: 100%|██████████| 9/9 [00:00<00:00, 54.45it/s, loss=4.19]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [232/3000]: Train loss: 4.5933, Valid loss: 4.8276\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [233/3000]: 100%|██████████| 9/9 [00:00<00:00, 49.07it/s, loss=3.16]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [233/3000]: Train loss: 3.7843, Valid loss: 2.9574\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [234/3000]: 100%|██████████| 9/9 [00:00<00:00, 56.39it/s, loss=4.56]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [234/3000]: Train loss: 3.4174, Valid loss: 3.9382\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [235/3000]: 100%|██████████| 9/9 [00:00<00:00, 46.62it/s, loss=3.92]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [235/3000]: Train loss: 4.3026, Valid loss: 6.3384\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [236/3000]: 100%|██████████| 9/9 [00:00<00:00, 52.46it/s, loss=4.91]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [236/3000]: Train loss: 4.3730, Valid loss: 4.6402\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [237/3000]: 100%|██████████| 9/9 [00:00<00:00, 63.20it/s, loss=3.44]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [237/3000]: Train loss: 3.6237, Valid loss: 2.8956\n", + "Saving model with loss 2.896...\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [238/3000]: 100%|██████████| 9/9 [00:00<00:00, 57.56it/s, loss=4.85]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [238/3000]: Train loss: 3.8093, Valid loss: 4.0464\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [239/3000]: 100%|██████████| 9/9 [00:00<00:00, 42.56it/s, loss=4.65]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [239/3000]: Train loss: 4.1029, Valid loss: 3.7426\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [240/3000]: 100%|██████████| 9/9 [00:00<00:00, 53.41it/s, loss=3.86]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [240/3000]: Train loss: 5.0146, Valid loss: 9.4341\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [241/3000]: 100%|██████████| 9/9 [00:00<00:00, 42.03it/s, loss=3.19]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [241/3000]: Train loss: 4.9201, Valid loss: 3.0731\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [242/3000]: 100%|██████████| 9/9 [00:00<00:00, 61.58it/s, loss=3.29]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [242/3000]: Train loss: 3.4346, Valid loss: 3.6923\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [243/3000]: 100%|██████████| 9/9 [00:00<00:00, 45.81it/s, loss=3.76]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [243/3000]: Train loss: 3.5190, Valid loss: 3.2713\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [244/3000]: 100%|██████████| 9/9 [00:00<00:00, 37.23it/s, loss=3.56]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [244/3000]: Train loss: 3.3508, Valid loss: 3.1727\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [245/3000]: 100%|██████████| 9/9 [00:00<00:00, 48.68it/s, loss=3.9]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [245/3000]: Train loss: 3.3315, Valid loss: 3.6895\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [246/3000]: 100%|██████████| 9/9 [00:00<00:00, 53.66it/s, loss=4.35]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [246/3000]: Train loss: 3.3921, Valid loss: 4.2456\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [247/3000]: 100%|██████████| 9/9 [00:00<00:00, 40.07it/s, loss=3.86]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [247/3000]: Train loss: 4.2760, Valid loss: 6.1583\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [248/3000]: 100%|██████████| 9/9 [00:00<00:00, 56.22it/s, loss=4.39]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [248/3000]: Train loss: 4.9837, Valid loss: 3.3405\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [249/3000]: 100%|██████████| 9/9 [00:00<00:00, 60.56it/s, loss=3.58]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [249/3000]: Train loss: 4.7788, Valid loss: 4.9403\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [250/3000]: 100%|██████████| 9/9 [00:00<00:00, 65.86it/s, loss=3.2]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [250/3000]: Train loss: 3.6472, Valid loss: 3.8557\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [251/3000]: 100%|██████████| 9/9 [00:00<00:00, 61.47it/s, loss=3.2]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [251/3000]: Train loss: 3.3906, Valid loss: 3.0172\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [252/3000]: 100%|██████████| 9/9 [00:00<00:00, 48.02it/s, loss=2.7]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [252/3000]: Train loss: 3.2192, Valid loss: 3.5355\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [253/3000]: 100%|██████████| 9/9 [00:00<00:00, 62.48it/s, loss=3.35]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [253/3000]: Train loss: 3.4683, Valid loss: 4.1498\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [254/3000]: 100%|██████████| 9/9 [00:00<00:00, 86.70it/s, loss=3.32]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [254/3000]: Train loss: 3.6597, Valid loss: 3.3394\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [255/3000]: 100%|██████████| 9/9 [00:00<00:00, 96.74it/s, loss=3.83]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [255/3000]: Train loss: 3.3103, Valid loss: 3.5301\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [256/3000]: 100%|██████████| 9/9 [00:00<00:00, 94.83it/s, loss=3.18]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [256/3000]: Train loss: 3.4361, Valid loss: 3.0123\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [257/3000]: 100%|██████████| 9/9 [00:00<00:00, 99.95it/s, loss=3.67]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [257/3000]: Train loss: 3.4800, Valid loss: 3.8175\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [258/3000]: 100%|██████████| 9/9 [00:00<00:00, 94.40it/s, loss=3.33]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [258/3000]: Train loss: 3.8395, Valid loss: 2.5276\n", + "Saving model with loss 2.528...\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [259/3000]: 100%|██████████| 9/9 [00:00<00:00, 97.10it/s, loss=3.74]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [259/3000]: Train loss: 4.3030, Valid loss: 3.0591\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [260/3000]: 100%|██████████| 9/9 [00:00<00:00, 99.55it/s, loss=3.34]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [260/3000]: Train loss: 3.4950, Valid loss: 4.2664\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [261/3000]: 100%|██████████| 9/9 [00:00<00:00, 96.29it/s, loss=3.49]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [261/3000]: Train loss: 3.9587, Valid loss: 3.4317\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [262/3000]: 100%|██████████| 9/9 [00:00<00:00, 85.93it/s, loss=2.53]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [262/3000]: Train loss: 3.2323, Valid loss: 4.4916\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [263/3000]: 100%|██████████| 9/9 [00:00<00:00, 91.62it/s, loss=2.82]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [263/3000]: Train loss: 3.4952, Valid loss: 3.2968\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [264/3000]: 100%|██████████| 9/9 [00:00<00:00, 93.32it/s, loss=3.02]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [264/3000]: Train loss: 3.3283, Valid loss: 3.4397\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [265/3000]: 100%|██████████| 9/9 [00:00<00:00, 95.29it/s, loss=3.75]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [265/3000]: Train loss: 4.5021, Valid loss: 4.9784\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [266/3000]: 100%|██████████| 9/9 [00:00<00:00, 96.83it/s, loss=2.32]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [266/3000]: Train loss: 3.7076, Valid loss: 3.7710\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [267/3000]: 100%|██████████| 9/9 [00:00<00:00, 100.47it/s, loss=3.21]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [267/3000]: Train loss: 3.4497, Valid loss: 2.8816\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [268/3000]: 100%|██████████| 9/9 [00:00<00:00, 78.26it/s, loss=5.1]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [268/3000]: Train loss: 3.5112, Valid loss: 8.4790\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [269/3000]: 100%|██████████| 9/9 [00:00<00:00, 83.92it/s, loss=5.33]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [269/3000]: Train loss: 4.1863, Valid loss: 3.1717\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [270/3000]: 100%|██████████| 9/9 [00:00<00:00, 72.99it/s, loss=5.99]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [270/3000]: Train loss: 4.0492, Valid loss: 4.3236\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [271/3000]: 100%|██████████| 9/9 [00:00<00:00, 73.42it/s, loss=3.35]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [271/3000]: Train loss: 3.7381, Valid loss: 4.1159\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [272/3000]: 100%|██████████| 9/9 [00:00<00:00, 83.83it/s, loss=5.1]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [272/3000]: Train loss: 3.7223, Valid loss: 3.6569\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [273/3000]: 100%|██████████| 9/9 [00:00<00:00, 50.84it/s, loss=2.85]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [273/3000]: Train loss: 3.1746, Valid loss: 2.7714\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [274/3000]: 100%|██████████| 9/9 [00:00<00:00, 42.52it/s, loss=3.2]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [274/3000]: Train loss: 3.4894, Valid loss: 2.7665\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [275/3000]: 100%|██████████| 9/9 [00:00<00:00, 46.02it/s, loss=3.38]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [275/3000]: Train loss: 3.2404, Valid loss: 3.3999\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [276/3000]: 100%|██████████| 9/9 [00:00<00:00, 40.83it/s, loss=4.26]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [276/3000]: Train loss: 4.5767, Valid loss: 3.9863\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [277/3000]: 100%|██████████| 9/9 [00:00<00:00, 42.10it/s, loss=3.15]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [277/3000]: Train loss: 3.4395, Valid loss: 3.6469\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [278/3000]: 100%|██████████| 9/9 [00:00<00:00, 58.94it/s, loss=2.84]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [278/3000]: Train loss: 3.5752, Valid loss: 2.9786\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [279/3000]: 100%|██████████| 9/9 [00:00<00:00, 57.29it/s, loss=4.84]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [279/3000]: Train loss: 3.2304, Valid loss: 3.0359\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [280/3000]: 100%|██████████| 9/9 [00:00<00:00, 40.36it/s, loss=3.39]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [280/3000]: Train loss: 3.8118, Valid loss: 5.9162\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [281/3000]: 100%|██████████| 9/9 [00:00<00:00, 39.93it/s, loss=6.37]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [281/3000]: Train loss: 5.5708, Valid loss: 6.5362\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [282/3000]: 100%|██████████| 9/9 [00:00<00:00, 63.38it/s, loss=5.04]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [282/3000]: Train loss: 6.4286, Valid loss: 7.8136\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [283/3000]: 100%|██████████| 9/9 [00:00<00:00, 40.07it/s, loss=4.42]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [283/3000]: Train loss: 4.8939, Valid loss: 3.3537\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [284/3000]: 100%|██████████| 9/9 [00:00<00:00, 64.86it/s, loss=11.9]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [284/3000]: Train loss: 5.8876, Valid loss: 2.9153\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [285/3000]: 100%|██████████| 9/9 [00:00<00:00, 51.43it/s, loss=3.67]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [285/3000]: Train loss: 5.0978, Valid loss: 4.6149\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [286/3000]: 100%|██████████| 9/9 [00:00<00:00, 50.02it/s, loss=3.53]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [286/3000]: Train loss: 3.9952, Valid loss: 3.8707\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [287/3000]: 100%|██████████| 9/9 [00:00<00:00, 43.43it/s, loss=2.84]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [287/3000]: Train loss: 3.4296, Valid loss: 3.3218\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [288/3000]: 100%|██████████| 9/9 [00:00<00:00, 48.90it/s, loss=3.01]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [288/3000]: Train loss: 3.4757, Valid loss: 3.5550\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [289/3000]: 100%|██████████| 9/9 [00:00<00:00, 86.57it/s, loss=3.46]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [289/3000]: Train loss: 3.1907, Valid loss: 5.4147\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [290/3000]: 100%|██████████| 9/9 [00:00<00:00, 79.55it/s, loss=5.78]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [290/3000]: Train loss: 4.1561, Valid loss: 5.1818\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [291/3000]: 100%|██████████| 9/9 [00:00<00:00, 92.54it/s, loss=2.99]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [291/3000]: Train loss: 3.7913, Valid loss: 3.6906\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [292/3000]: 100%|██████████| 9/9 [00:00<00:00, 90.15it/s, loss=4.5]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [292/3000]: Train loss: 4.0492, Valid loss: 4.1079\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [293/3000]: 100%|██████████| 9/9 [00:00<00:00, 90.29it/s, loss=5.28]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [293/3000]: Train loss: 3.9136, Valid loss: 3.4841\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [294/3000]: 100%|██████████| 9/9 [00:00<00:00, 90.73it/s, loss=2.13]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [294/3000]: Train loss: 3.2029, Valid loss: 3.7437\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [295/3000]: 100%|██████████| 9/9 [00:00<00:00, 82.85it/s, loss=4.66]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [295/3000]: Train loss: 4.0350, Valid loss: 3.2916\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [296/3000]: 100%|██████████| 9/9 [00:00<00:00, 91.62it/s, loss=2.29]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [296/3000]: Train loss: 3.3533, Valid loss: 2.6893\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [297/3000]: 100%|██████████| 9/9 [00:00<00:00, 74.09it/s, loss=4.45]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [297/3000]: Train loss: 3.4227, Valid loss: 3.9507\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [298/3000]: 100%|██████████| 9/9 [00:00<00:00, 77.00it/s, loss=2.8]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [298/3000]: Train loss: 3.6680, Valid loss: 2.9965\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [299/3000]: 100%|██████████| 9/9 [00:00<00:00, 69.12it/s, loss=3.24]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [299/3000]: Train loss: 2.9809, Valid loss: 3.4871\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [300/3000]: 100%|██████████| 9/9 [00:00<00:00, 97.82it/s, loss=3.1]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [300/3000]: Train loss: 3.3157, Valid loss: 2.6141\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [301/3000]: 100%|██████████| 9/9 [00:00<00:00, 96.34it/s, loss=2.76]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [301/3000]: Train loss: 3.1305, Valid loss: 3.2472\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [302/3000]: 100%|██████████| 9/9 [00:00<00:00, 97.06it/s, loss=2.86]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [302/3000]: Train loss: 3.0435, Valid loss: 3.5501\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [303/3000]: 100%|██████████| 9/9 [00:00<00:00, 97.38it/s, loss=2.88]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [303/3000]: Train loss: 3.1173, Valid loss: 3.2593\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [304/3000]: 100%|██████████| 9/9 [00:00<00:00, 96.42it/s, loss=3.64]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [304/3000]: Train loss: 3.1487, Valid loss: 3.2269\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [305/3000]: 100%|██████████| 9/9 [00:00<00:00, 76.91it/s, loss=3.21]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [305/3000]: Train loss: 3.1107, Valid loss: 4.1307\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [306/3000]: 100%|██████████| 9/9 [00:00<00:00, 75.55it/s, loss=5.37]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [306/3000]: Train loss: 3.8624, Valid loss: 7.0359\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [307/3000]: 100%|██████████| 9/9 [00:00<00:00, 78.13it/s, loss=4.28]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [307/3000]: Train loss: 4.0011, Valid loss: 3.4742\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [308/3000]: 100%|██████████| 9/9 [00:00<00:00, 93.09it/s, loss=2.86]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [308/3000]: Train loss: 3.2856, Valid loss: 4.5149\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [309/3000]: 100%|██████████| 9/9 [00:00<00:00, 85.15it/s, loss=3.65]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [309/3000]: Train loss: 4.3294, Valid loss: 2.7490\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [310/3000]: 100%|██████████| 9/9 [00:00<00:00, 94.25it/s, loss=2.12]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [310/3000]: Train loss: 3.6393, Valid loss: 7.6842\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [311/3000]: 100%|██████████| 9/9 [00:00<00:00, 83.90it/s, loss=8.09]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [311/3000]: Train loss: 5.5008, Valid loss: 4.4912\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [312/3000]: 100%|██████████| 9/9 [00:00<00:00, 78.73it/s, loss=3.21]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [312/3000]: Train loss: 3.7752, Valid loss: 3.5605\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [313/3000]: 100%|██████████| 9/9 [00:00<00:00, 80.64it/s, loss=3.37]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [313/3000]: Train loss: 3.1032, Valid loss: 2.7339\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [314/3000]: 100%|██████████| 9/9 [00:00<00:00, 82.07it/s, loss=4.09]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [314/3000]: Train loss: 4.0669, Valid loss: 4.9895\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [315/3000]: 100%|██████████| 9/9 [00:00<00:00, 78.55it/s, loss=3.43]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [315/3000]: Train loss: 3.3604, Valid loss: 2.6040\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [316/3000]: 100%|██████████| 9/9 [00:00<00:00, 79.79it/s, loss=4.07]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [316/3000]: Train loss: 3.1595, Valid loss: 4.4552\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [317/3000]: 100%|██████████| 9/9 [00:00<00:00, 83.01it/s, loss=3.12]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [317/3000]: Train loss: 3.7944, Valid loss: 5.0003\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [318/3000]: 100%|██████████| 9/9 [00:00<00:00, 81.91it/s, loss=3.71]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [318/3000]: Train loss: 3.3974, Valid loss: 2.9101\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [319/3000]: 100%|██████████| 9/9 [00:00<00:00, 76.47it/s, loss=4.16]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [319/3000]: Train loss: 3.1737, Valid loss: 2.8386\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [320/3000]: 100%|██████████| 9/9 [00:00<00:00, 72.81it/s, loss=4.49]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [320/3000]: Train loss: 3.1526, Valid loss: 2.4730\n", + "Saving model with loss 2.473...\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [321/3000]: 100%|██████████| 9/9 [00:00<00:00, 92.42it/s, loss=4.13]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [321/3000]: Train loss: 3.4378, Valid loss: 3.7026\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [322/3000]: 100%|██████████| 9/9 [00:00<00:00, 91.44it/s, loss=3.56]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [322/3000]: Train loss: 3.3329, Valid loss: 2.4137\n", + "Saving model with loss 2.414...\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [323/3000]: 100%|██████████| 9/9 [00:00<00:00, 86.33it/s, loss=2.16]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [323/3000]: Train loss: 2.8110, Valid loss: 2.6225\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [324/3000]: 100%|██████████| 9/9 [00:00<00:00, 90.10it/s, loss=3.15]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [324/3000]: Train loss: 2.8820, Valid loss: 3.2172\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [325/3000]: 100%|██████████| 9/9 [00:00<00:00, 80.29it/s, loss=3.62]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [325/3000]: Train loss: 3.8495, Valid loss: 5.0202\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [326/3000]: 100%|██████████| 9/9 [00:00<00:00, 81.79it/s, loss=10.2]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [326/3000]: Train loss: 4.8967, Valid loss: 5.8372\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [327/3000]: 100%|██████████| 9/9 [00:00<00:00, 90.14it/s, loss=6.44]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [327/3000]: Train loss: 4.9654, Valid loss: 3.6057\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [328/3000]: 100%|██████████| 9/9 [00:00<00:00, 80.86it/s, loss=3.31]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [328/3000]: Train loss: 4.2714, Valid loss: 3.4472\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [329/3000]: 100%|██████████| 9/9 [00:00<00:00, 86.90it/s, loss=4.04]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [329/3000]: Train loss: 3.4928, Valid loss: 4.1994\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [330/3000]: 100%|██████████| 9/9 [00:00<00:00, 95.62it/s, loss=2.83]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [330/3000]: Train loss: 3.3419, Valid loss: 3.0758\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [331/3000]: 100%|██████████| 9/9 [00:00<00:00, 88.05it/s, loss=3.89]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [331/3000]: Train loss: 3.3467, Valid loss: 4.1721\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [332/3000]: 100%|██████████| 9/9 [00:00<00:00, 80.30it/s, loss=6.04]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [332/3000]: Train loss: 3.7445, Valid loss: 2.7762\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [333/3000]: 100%|██████████| 9/9 [00:00<00:00, 87.09it/s, loss=2.49]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [333/3000]: Train loss: 3.1968, Valid loss: 3.2574\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [334/3000]: 100%|██████████| 9/9 [00:00<00:00, 97.77it/s, loss=2.77]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [334/3000]: Train loss: 3.0888, Valid loss: 3.8165\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [335/3000]: 100%|██████████| 9/9 [00:00<00:00, 96.22it/s, loss=2.46]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [335/3000]: Train loss: 2.7953, Valid loss: 3.2832\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [336/3000]: 100%|██████████| 9/9 [00:00<00:00, 101.54it/s, loss=2.61]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [336/3000]: Train loss: 2.8403, Valid loss: 2.9455\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [337/3000]: 100%|██████████| 9/9 [00:00<00:00, 61.13it/s, loss=2.31]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [337/3000]: Train loss: 3.2623, Valid loss: 3.9293\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [338/3000]: 100%|██████████| 9/9 [00:00<00:00, 35.14it/s, loss=3.24]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [338/3000]: Train loss: 3.2274, Valid loss: 3.1271\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [339/3000]: 100%|██████████| 9/9 [00:00<00:00, 60.84it/s, loss=3.3]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [339/3000]: Train loss: 3.0637, Valid loss: 3.2921\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [340/3000]: 100%|██████████| 9/9 [00:00<00:00, 86.18it/s, loss=2.68]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [340/3000]: Train loss: 3.4228, Valid loss: 3.1396\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [341/3000]: 100%|██████████| 9/9 [00:00<00:00, 84.79it/s, loss=2.97]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [341/3000]: Train loss: 3.2492, Valid loss: 3.3540\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [342/3000]: 100%|██████████| 9/9 [00:00<00:00, 69.61it/s, loss=2.8]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [342/3000]: Train loss: 3.3362, Valid loss: 7.7144\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [343/3000]: 100%|██████████| 9/9 [00:00<00:00, 93.96it/s, loss=4.5]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [343/3000]: Train loss: 3.6798, Valid loss: 4.2511\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [344/3000]: 100%|██████████| 9/9 [00:00<00:00, 91.86it/s, loss=4.09]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [344/3000]: Train loss: 3.2202, Valid loss: 4.3694\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [345/3000]: 100%|██████████| 9/9 [00:00<00:00, 73.19it/s, loss=5.82]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [345/3000]: Train loss: 4.0447, Valid loss: 3.4016\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [346/3000]: 100%|██████████| 9/9 [00:00<00:00, 29.64it/s, loss=2.27]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [346/3000]: Train loss: 3.4655, Valid loss: 2.7713\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [347/3000]: 100%|██████████| 9/9 [00:00<00:00, 97.63it/s, loss=2.55]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [347/3000]: Train loss: 2.7256, Valid loss: 2.6298\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [348/3000]: 100%|██████████| 9/9 [00:00<00:00, 99.45it/s, loss=2.9]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [348/3000]: Train loss: 3.0849, Valid loss: 4.6719\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [349/3000]: 100%|██████████| 9/9 [00:00<00:00, 91.52it/s, loss=2.19]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [349/3000]: Train loss: 3.8688, Valid loss: 4.5862\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [350/3000]: 100%|██████████| 9/9 [00:00<00:00, 93.47it/s, loss=3.56]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [350/3000]: Train loss: 3.3804, Valid loss: 4.1999\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [351/3000]: 100%|██████████| 9/9 [00:00<00:00, 85.82it/s, loss=4.51]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [351/3000]: Train loss: 3.3918, Valid loss: 3.7226\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [352/3000]: 100%|██████████| 9/9 [00:00<00:00, 105.22it/s, loss=6.72]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [352/3000]: Train loss: 5.9444, Valid loss: 4.5500\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [353/3000]: 100%|██████████| 9/9 [00:00<00:00, 85.33it/s, loss=5.58]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [353/3000]: Train loss: 6.8269, Valid loss: 5.4659\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [354/3000]: 100%|██████████| 9/9 [00:00<00:00, 87.01it/s, loss=3.61]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [354/3000]: Train loss: 4.2422, Valid loss: 6.6832\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [355/3000]: 100%|██████████| 9/9 [00:00<00:00, 102.60it/s, loss=6.26]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [355/3000]: Train loss: 6.9264, Valid loss: 7.0664\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [356/3000]: 100%|██████████| 9/9 [00:00<00:00, 101.27it/s, loss=3.38]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [356/3000]: Train loss: 4.7819, Valid loss: 4.4121\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [357/3000]: 100%|██████████| 9/9 [00:00<00:00, 96.21it/s, loss=3.18]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [357/3000]: Train loss: 3.3615, Valid loss: 2.7007\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [358/3000]: 100%|██████████| 9/9 [00:00<00:00, 96.92it/s, loss=3.11]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [358/3000]: Train loss: 2.9294, Valid loss: 4.5442\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [359/3000]: 100%|██████████| 9/9 [00:00<00:00, 81.56it/s, loss=2.83]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [359/3000]: Train loss: 3.2014, Valid loss: 5.9390\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [360/3000]: 100%|██████████| 9/9 [00:00<00:00, 90.66it/s, loss=3.47]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [360/3000]: Train loss: 4.2830, Valid loss: 4.8864\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [361/3000]: 100%|██████████| 9/9 [00:00<00:00, 72.76it/s, loss=3.36]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [361/3000]: Train loss: 3.8395, Valid loss: 3.5155\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [362/3000]: 100%|██████████| 9/9 [00:00<00:00, 98.45it/s, loss=2.91]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [362/3000]: Train loss: 3.2829, Valid loss: 3.3866\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [363/3000]: 100%|██████████| 9/9 [00:00<00:00, 94.50it/s, loss=2.48]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [363/3000]: Train loss: 2.8841, Valid loss: 2.7371\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [364/3000]: 100%|██████████| 9/9 [00:00<00:00, 103.16it/s, loss=2.97]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [364/3000]: Train loss: 2.7143, Valid loss: 4.2909\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [365/3000]: 100%|██████████| 9/9 [00:00<00:00, 83.90it/s, loss=4.01]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [365/3000]: Train loss: 3.3546, Valid loss: 4.3713\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [366/3000]: 100%|██████████| 9/9 [00:00<00:00, 85.68it/s, loss=3.26]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [366/3000]: Train loss: 3.4113, Valid loss: 2.8656\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [367/3000]: 100%|██████████| 9/9 [00:00<00:00, 104.10it/s, loss=2.42]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [367/3000]: Train loss: 3.1073, Valid loss: 2.4400\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [368/3000]: 100%|██████████| 9/9 [00:00<00:00, 100.47it/s, loss=3.07]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [368/3000]: Train loss: 2.6780, Valid loss: 2.9070\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [369/3000]: 100%|██████████| 9/9 [00:00<00:00, 86.81it/s, loss=4.7]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [369/3000]: Train loss: 3.1987, Valid loss: 3.8945\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [370/3000]: 100%|██████████| 9/9 [00:00<00:00, 75.12it/s, loss=3.79]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [370/3000]: Train loss: 3.5759, Valid loss: 2.8903\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [371/3000]: 100%|██████████| 9/9 [00:00<00:00, 81.43it/s, loss=2.85]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [371/3000]: Train loss: 2.8186, Valid loss: 2.8779\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [372/3000]: 100%|██████████| 9/9 [00:00<00:00, 84.59it/s, loss=2.38]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [372/3000]: Train loss: 2.7295, Valid loss: 2.7854\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [373/3000]: 100%|██████████| 9/9 [00:00<00:00, 74.60it/s, loss=3.27]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [373/3000]: Train loss: 2.9153, Valid loss: 2.5482\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [374/3000]: 100%|██████████| 9/9 [00:00<00:00, 80.57it/s, loss=2.59]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [374/3000]: Train loss: 2.6961, Valid loss: 2.7216\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [375/3000]: 100%|██████████| 9/9 [00:00<00:00, 86.62it/s, loss=2.37]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [375/3000]: Train loss: 2.6552, Valid loss: 2.7595\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [376/3000]: 100%|██████████| 9/9 [00:00<00:00, 83.11it/s, loss=3.18]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [376/3000]: Train loss: 2.7381, Valid loss: 3.4166\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [377/3000]: 100%|██████████| 9/9 [00:00<00:00, 75.09it/s, loss=2.57]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [377/3000]: Train loss: 2.8744, Valid loss: 3.2158\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [378/3000]: 100%|██████████| 9/9 [00:00<00:00, 75.00it/s, loss=3.56]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [378/3000]: Train loss: 3.1821, Valid loss: 2.6680\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [379/3000]: 100%|██████████| 9/9 [00:00<00:00, 78.23it/s, loss=2.05]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [379/3000]: Train loss: 2.7821, Valid loss: 2.9126\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [380/3000]: 100%|██████████| 9/9 [00:00<00:00, 77.19it/s, loss=3.91]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [380/3000]: Train loss: 3.3442, Valid loss: 3.5432\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [381/3000]: 100%|██████████| 9/9 [00:00<00:00, 75.42it/s, loss=3.08]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [381/3000]: Train loss: 2.9719, Valid loss: 3.9551\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [382/3000]: 100%|██████████| 9/9 [00:00<00:00, 85.25it/s, loss=2.7]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [382/3000]: Train loss: 3.0767, Valid loss: 2.7709\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [383/3000]: 100%|██████████| 9/9 [00:00<00:00, 66.20it/s, loss=2.58]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [383/3000]: Train loss: 2.9274, Valid loss: 3.1822\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [384/3000]: 100%|██████████| 9/9 [00:00<00:00, 95.92it/s, loss=2.26]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [384/3000]: Train loss: 2.7626, Valid loss: 3.3786\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [385/3000]: 100%|██████████| 9/9 [00:00<00:00, 72.32it/s, loss=2.79]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [385/3000]: Train loss: 2.7007, Valid loss: 2.7628\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [386/3000]: 100%|██████████| 9/9 [00:00<00:00, 82.40it/s, loss=2.54]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [386/3000]: Train loss: 2.6443, Valid loss: 3.0541\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [387/3000]: 100%|██████████| 9/9 [00:00<00:00, 81.29it/s, loss=3.68]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [387/3000]: Train loss: 2.8822, Valid loss: 3.1246\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [388/3000]: 100%|██████████| 9/9 [00:00<00:00, 83.02it/s, loss=4.15]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [388/3000]: Train loss: 3.4384, Valid loss: 2.6751\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [389/3000]: 100%|██████████| 9/9 [00:00<00:00, 85.43it/s, loss=3.16]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [389/3000]: Train loss: 3.3321, Valid loss: 5.4000\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [390/3000]: 100%|██████████| 9/9 [00:00<00:00, 96.44it/s, loss=3.18]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [390/3000]: Train loss: 3.6552, Valid loss: 5.4030\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [391/3000]: 100%|██████████| 9/9 [00:00<00:00, 91.06it/s, loss=8.73]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [391/3000]: Train loss: 4.8898, Valid loss: 8.8884\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [392/3000]: 100%|██████████| 9/9 [00:00<00:00, 94.10it/s, loss=4.25]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [392/3000]: Train loss: 5.4056, Valid loss: 3.9562\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [393/3000]: 100%|██████████| 9/9 [00:00<00:00, 95.02it/s, loss=1.84]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [393/3000]: Train loss: 2.9389, Valid loss: 2.5429\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [394/3000]: 100%|██████████| 9/9 [00:00<00:00, 86.13it/s, loss=2.38]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [394/3000]: Train loss: 3.1959, Valid loss: 3.1855\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [395/3000]: 100%|██████████| 9/9 [00:00<00:00, 93.47it/s, loss=3.35]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [395/3000]: Train loss: 2.6716, Valid loss: 2.3349\n", + "Saving model with loss 2.335...\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [396/3000]: 100%|██████████| 9/9 [00:00<00:00, 86.58it/s, loss=3.06]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [396/3000]: Train loss: 2.6878, Valid loss: 3.9064\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [397/3000]: 100%|██████████| 9/9 [00:00<00:00, 85.95it/s, loss=3.49]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [397/3000]: Train loss: 2.8313, Valid loss: 4.8819\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [398/3000]: 100%|██████████| 9/9 [00:00<00:00, 72.36it/s, loss=5.84]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [398/3000]: Train loss: 3.4957, Valid loss: 8.7173\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [399/3000]: 100%|██████████| 9/9 [00:00<00:00, 74.63it/s, loss=3.31]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [399/3000]: Train loss: 4.0952, Valid loss: 2.7853\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [400/3000]: 100%|██████████| 9/9 [00:00<00:00, 82.29it/s, loss=2.32]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [400/3000]: Train loss: 2.8081, Valid loss: 3.6416\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [401/3000]: 100%|██████████| 9/9 [00:00<00:00, 74.05it/s, loss=4.36]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [401/3000]: Train loss: 4.3881, Valid loss: 3.0769\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [402/3000]: 100%|██████████| 9/9 [00:00<00:00, 79.22it/s, loss=2.75]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [402/3000]: Train loss: 3.0619, Valid loss: 3.2772\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [403/3000]: 100%|██████████| 9/9 [00:00<00:00, 92.51it/s, loss=2.96]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [403/3000]: Train loss: 2.9258, Valid loss: 3.0334\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [404/3000]: 100%|██████████| 9/9 [00:00<00:00, 78.97it/s, loss=7.16]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [404/3000]: Train loss: 3.9431, Valid loss: 4.3994\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [405/3000]: 100%|██████████| 9/9 [00:00<00:00, 79.31it/s, loss=1.83]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [405/3000]: Train loss: 3.1195, Valid loss: 2.4389\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [406/3000]: 100%|██████████| 9/9 [00:00<00:00, 75.80it/s, loss=2.62]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [406/3000]: Train loss: 2.5934, Valid loss: 3.3173\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [407/3000]: 100%|██████████| 9/9 [00:00<00:00, 83.75it/s, loss=3.05]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [407/3000]: Train loss: 3.0450, Valid loss: 5.0986\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [408/3000]: 100%|██████████| 9/9 [00:00<00:00, 72.02it/s, loss=3.14]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [408/3000]: Train loss: 3.0803, Valid loss: 3.1451\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [409/3000]: 100%|██████████| 9/9 [00:00<00:00, 97.86it/s, loss=2.35]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [409/3000]: Train loss: 2.6895, Valid loss: 2.3550\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [410/3000]: 100%|██████████| 9/9 [00:00<00:00, 90.06it/s, loss=1.95]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [410/3000]: Train loss: 2.8075, Valid loss: 2.8771\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [411/3000]: 100%|██████████| 9/9 [00:00<00:00, 66.64it/s, loss=2.82]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [411/3000]: Train loss: 2.8620, Valid loss: 5.5950\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [412/3000]: 100%|██████████| 9/9 [00:00<00:00, 86.45it/s, loss=2.95]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [412/3000]: Train loss: 3.2575, Valid loss: 2.7236\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [413/3000]: 100%|██████████| 9/9 [00:00<00:00, 94.83it/s, loss=2.42]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [413/3000]: Train loss: 2.8629, Valid loss: 3.3850\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [414/3000]: 100%|██████████| 9/9 [00:00<00:00, 90.74it/s, loss=3.31]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [414/3000]: Train loss: 3.0126, Valid loss: 3.8483\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [415/3000]: 100%|██████████| 9/9 [00:00<00:00, 95.42it/s, loss=3.31]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [415/3000]: Train loss: 3.0565, Valid loss: 2.8977\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [416/3000]: 100%|██████████| 9/9 [00:00<00:00, 92.25it/s, loss=2.64]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [416/3000]: Train loss: 3.5367, Valid loss: 6.4985\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [417/3000]: 100%|██████████| 9/9 [00:00<00:00, 82.91it/s, loss=3.11]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [417/3000]: Train loss: 4.7057, Valid loss: 4.5070\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [418/3000]: 100%|██████████| 9/9 [00:00<00:00, 85.77it/s, loss=2.95]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [418/3000]: Train loss: 3.1368, Valid loss: 2.5385\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [419/3000]: 100%|██████████| 9/9 [00:00<00:00, 78.47it/s, loss=5.58]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [419/3000]: Train loss: 3.5836, Valid loss: 4.1490\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [420/3000]: 100%|██████████| 9/9 [00:00<00:00, 87.13it/s, loss=6.59]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [420/3000]: Train loss: 7.2945, Valid loss: 7.9461\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [421/3000]: 100%|██████████| 9/9 [00:00<00:00, 75.42it/s, loss=7.57]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [421/3000]: Train loss: 9.7838, Valid loss: 9.0926\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [422/3000]: 100%|██████████| 9/9 [00:00<00:00, 79.20it/s, loss=4.29]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [422/3000]: Train loss: 8.6534, Valid loss: 13.6624\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [423/3000]: 100%|██████████| 9/9 [00:00<00:00, 75.07it/s, loss=6.61]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [423/3000]: Train loss: 6.4982, Valid loss: 3.4814\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [424/3000]: 100%|██████████| 9/9 [00:00<00:00, 85.87it/s, loss=4.79]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [424/3000]: Train loss: 4.1262, Valid loss: 5.7505\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [425/3000]: 100%|██████████| 9/9 [00:00<00:00, 86.61it/s, loss=3.72]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [425/3000]: Train loss: 3.6347, Valid loss: 3.4201\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [426/3000]: 100%|██████████| 9/9 [00:00<00:00, 90.78it/s, loss=3.26]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [426/3000]: Train loss: 3.0578, Valid loss: 2.5210\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [427/3000]: 100%|██████████| 9/9 [00:00<00:00, 30.81it/s, loss=2.74]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [427/3000]: Train loss: 3.1902, Valid loss: 4.4117\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [428/3000]: 100%|██████████| 9/9 [00:00<00:00, 100.98it/s, loss=3.13]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [428/3000]: Train loss: 3.3554, Valid loss: 3.0155\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [429/3000]: 100%|██████████| 9/9 [00:00<00:00, 96.84it/s, loss=4.97]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [429/3000]: Train loss: 3.3362, Valid loss: 2.8366\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [430/3000]: 100%|██████████| 9/9 [00:00<00:00, 95.42it/s, loss=3.59]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [430/3000]: Train loss: 3.0886, Valid loss: 2.8634\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [431/3000]: 100%|██████████| 9/9 [00:00<00:00, 92.99it/s, loss=1.94]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [431/3000]: Train loss: 2.9112, Valid loss: 5.7716\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [432/3000]: 100%|██████████| 9/9 [00:00<00:00, 82.09it/s, loss=4.89]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [432/3000]: Train loss: 3.7315, Valid loss: 3.2584\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [433/3000]: 100%|██████████| 9/9 [00:00<00:00, 85.79it/s, loss=2.22]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [433/3000]: Train loss: 3.4225, Valid loss: 2.9989\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [434/3000]: 100%|██████████| 9/9 [00:00<00:00, 83.99it/s, loss=3.83]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [434/3000]: Train loss: 2.9445, Valid loss: 3.1980\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [435/3000]: 100%|██████████| 9/9 [00:00<00:00, 76.21it/s, loss=3.11]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [435/3000]: Train loss: 4.7376, Valid loss: 4.0600\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [436/3000]: 100%|██████████| 9/9 [00:00<00:00, 70.12it/s, loss=3.3]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [436/3000]: Train loss: 3.1405, Valid loss: 6.3339\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [437/3000]: 100%|██████████| 9/9 [00:00<00:00, 74.56it/s, loss=7.23]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [437/3000]: Train loss: 6.8387, Valid loss: 3.9810\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [438/3000]: 100%|██████████| 9/9 [00:00<00:00, 103.42it/s, loss=6.22]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [438/3000]: Train loss: 4.4463, Valid loss: 2.9052\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [439/3000]: 100%|██████████| 9/9 [00:00<00:00, 101.85it/s, loss=2.99]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [439/3000]: Train loss: 3.5113, Valid loss: 3.4428\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [440/3000]: 100%|██████████| 9/9 [00:00<00:00, 91.79it/s, loss=2.31]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [440/3000]: Train loss: 2.7461, Valid loss: 2.4012\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [441/3000]: 100%|██████████| 9/9 [00:00<00:00, 70.33it/s, loss=4.3]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [441/3000]: Train loss: 2.8547, Valid loss: 4.0141\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [442/3000]: 100%|██████████| 9/9 [00:00<00:00, 75.72it/s, loss=2.81]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [442/3000]: Train loss: 2.8760, Valid loss: 2.5630\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [443/3000]: 100%|██████████| 9/9 [00:00<00:00, 78.60it/s, loss=3.03]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [443/3000]: Train loss: 2.6121, Valid loss: 3.4837\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [444/3000]: 100%|██████████| 9/9 [00:00<00:00, 79.81it/s, loss=2.32]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [444/3000]: Train loss: 2.6857, Valid loss: 3.5205\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [445/3000]: 100%|██████████| 9/9 [00:00<00:00, 83.81it/s, loss=3.25]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [445/3000]: Train loss: 3.2338, Valid loss: 2.3839\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [446/3000]: 100%|██████████| 9/9 [00:00<00:00, 70.92it/s, loss=2.09]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [446/3000]: Train loss: 2.6223, Valid loss: 2.4910\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [447/3000]: 100%|██████████| 9/9 [00:00<00:00, 81.96it/s, loss=2.83]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [447/3000]: Train loss: 2.5500, Valid loss: 2.7873\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [448/3000]: 100%|██████████| 9/9 [00:00<00:00, 84.93it/s, loss=2.75]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [448/3000]: Train loss: 2.5641, Valid loss: 2.8546\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [449/3000]: 100%|██████████| 9/9 [00:00<00:00, 72.99it/s, loss=2.75]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [449/3000]: Train loss: 3.1814, Valid loss: 2.5863\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [450/3000]: 100%|██████████| 9/9 [00:00<00:00, 82.76it/s, loss=2.69]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [450/3000]: Train loss: 2.8768, Valid loss: 3.8085\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [451/3000]: 100%|██████████| 9/9 [00:00<00:00, 76.12it/s, loss=3.46]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [451/3000]: Train loss: 3.3718, Valid loss: 2.2657\n", + "Saving model with loss 2.266...\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [452/3000]: 100%|██████████| 9/9 [00:00<00:00, 77.27it/s, loss=2.35]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [452/3000]: Train loss: 2.5533, Valid loss: 2.4994\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [453/3000]: 100%|██████████| 9/9 [00:00<00:00, 79.70it/s, loss=3.02]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [453/3000]: Train loss: 2.6841, Valid loss: 4.6000\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [454/3000]: 100%|██████████| 9/9 [00:00<00:00, 83.36it/s, loss=2.44]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [454/3000]: Train loss: 3.0783, Valid loss: 2.2682\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [455/3000]: 100%|██████████| 9/9 [00:00<00:00, 74.83it/s, loss=2.41]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [455/3000]: Train loss: 2.6196, Valid loss: 2.9087\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [456/3000]: 100%|██████████| 9/9 [00:00<00:00, 84.75it/s, loss=3.16]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [456/3000]: Train loss: 2.5872, Valid loss: 2.5078\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [457/3000]: 100%|██████████| 9/9 [00:00<00:00, 75.46it/s, loss=3.16]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [457/3000]: Train loss: 3.0023, Valid loss: 3.0531\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [458/3000]: 100%|██████████| 9/9 [00:00<00:00, 76.23it/s, loss=3.16]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [458/3000]: Train loss: 3.9407, Valid loss: 5.0663\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [459/3000]: 100%|██████████| 9/9 [00:00<00:00, 91.80it/s, loss=2.29]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [459/3000]: Train loss: 2.6574, Valid loss: 2.3974\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [460/3000]: 100%|██████████| 9/9 [00:00<00:00, 91.33it/s, loss=1.89]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [460/3000]: Train loss: 2.4463, Valid loss: 3.1808\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [461/3000]: 100%|██████████| 9/9 [00:00<00:00, 76.19it/s, loss=1.93]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [461/3000]: Train loss: 2.9044, Valid loss: 2.9009\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [462/3000]: 100%|██████████| 9/9 [00:00<00:00, 75.00it/s, loss=2.78]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [462/3000]: Train loss: 2.6820, Valid loss: 2.3554\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [463/3000]: 100%|██████████| 9/9 [00:00<00:00, 93.51it/s, loss=2.87]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [463/3000]: Train loss: 2.5131, Valid loss: 2.6812\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [464/3000]: 100%|██████████| 9/9 [00:00<00:00, 86.43it/s, loss=1.87]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [464/3000]: Train loss: 2.5665, Valid loss: 3.6920\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [465/3000]: 100%|██████████| 9/9 [00:00<00:00, 85.98it/s, loss=4.55]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [465/3000]: Train loss: 3.3191, Valid loss: 4.3673\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [466/3000]: 100%|██████████| 9/9 [00:00<00:00, 93.39it/s, loss=3.49]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [466/3000]: Train loss: 3.0353, Valid loss: 2.6042\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [467/3000]: 100%|██████████| 9/9 [00:00<00:00, 76.13it/s, loss=1.99]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [467/3000]: Train loss: 3.1104, Valid loss: 5.4196\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [468/3000]: 100%|██████████| 9/9 [00:00<00:00, 82.74it/s, loss=3.13]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [468/3000]: Train loss: 3.4903, Valid loss: 3.1843\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [469/3000]: 100%|██████████| 9/9 [00:00<00:00, 80.88it/s, loss=2.05]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [469/3000]: Train loss: 2.9087, Valid loss: 2.2026\n", + "Saving model with loss 2.203...\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [470/3000]: 100%|██████████| 9/9 [00:00<00:00, 65.19it/s, loss=2.8]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [470/3000]: Train loss: 2.4449, Valid loss: 3.1258\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [471/3000]: 100%|██████████| 9/9 [00:00<00:00, 84.98it/s, loss=1.99]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [471/3000]: Train loss: 3.0016, Valid loss: 2.4402\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [472/3000]: 100%|██████████| 9/9 [00:00<00:00, 83.50it/s, loss=3.25]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [472/3000]: Train loss: 2.6275, Valid loss: 2.8707\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [473/3000]: 100%|██████████| 9/9 [00:00<00:00, 90.61it/s, loss=2.75]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [473/3000]: Train loss: 2.4667, Valid loss: 4.3807\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [474/3000]: 100%|██████████| 9/9 [00:00<00:00, 82.75it/s, loss=3.81]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [474/3000]: Train loss: 2.6445, Valid loss: 3.5018\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [475/3000]: 100%|██████████| 9/9 [00:00<00:00, 99.88it/s, loss=3.12]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [475/3000]: Train loss: 3.4930, Valid loss: 3.2811\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [476/3000]: 100%|██████████| 9/9 [00:00<00:00, 84.44it/s, loss=3.31]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [476/3000]: Train loss: 2.6079, Valid loss: 2.6721\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [477/3000]: 100%|██████████| 9/9 [00:00<00:00, 94.69it/s, loss=3.86]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [477/3000]: Train loss: 2.9418, Valid loss: 2.8649\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [478/3000]: 100%|██████████| 9/9 [00:00<00:00, 94.33it/s, loss=2.57]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [478/3000]: Train loss: 2.5319, Valid loss: 2.9696\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [479/3000]: 100%|██████████| 9/9 [00:00<00:00, 57.98it/s, loss=2.32]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [479/3000]: Train loss: 2.3926, Valid loss: 2.2828\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [480/3000]: 100%|██████████| 9/9 [00:00<00:00, 32.73it/s, loss=2.54]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [480/3000]: Train loss: 2.4849, Valid loss: 3.1369\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [481/3000]: 100%|██████████| 9/9 [00:00<00:00, 26.66it/s, loss=2.65]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [481/3000]: Train loss: 3.1436, Valid loss: 4.4983\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [482/3000]: 100%|██████████| 9/9 [00:00<00:00, 76.22it/s, loss=2.7]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [482/3000]: Train loss: 2.8134, Valid loss: 2.6143\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [483/3000]: 100%|██████████| 9/9 [00:00<00:00, 77.59it/s, loss=2.16]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [483/3000]: Train loss: 2.7179, Valid loss: 3.0479\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [484/3000]: 100%|██████████| 9/9 [00:00<00:00, 82.88it/s, loss=2.48]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [484/3000]: Train loss: 2.5529, Valid loss: 2.7505\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [485/3000]: 100%|██████████| 9/9 [00:00<00:00, 25.54it/s, loss=2.7]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [485/3000]: Train loss: 2.4631, Valid loss: 2.5675\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [486/3000]: 100%|██████████| 9/9 [00:00<00:00, 26.99it/s, loss=2.96]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [486/3000]: Train loss: 2.5650, Valid loss: 2.6683\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [487/3000]: 100%|██████████| 9/9 [00:00<00:00, 43.12it/s, loss=7.63]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [487/3000]: Train loss: 3.5135, Valid loss: 12.7937\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [488/3000]: 100%|██████████| 9/9 [00:00<00:00, 65.77it/s, loss=4.72]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [488/3000]: Train loss: 5.8556, Valid loss: 2.8951\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [489/3000]: 100%|██████████| 9/9 [00:00<00:00, 84.72it/s, loss=2.26]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [489/3000]: Train loss: 2.7042, Valid loss: 3.1004\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [490/3000]: 100%|██████████| 9/9 [00:00<00:00, 38.87it/s, loss=2.91]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [490/3000]: Train loss: 2.7922, Valid loss: 2.5991\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [491/3000]: 100%|██████████| 9/9 [00:00<00:00, 25.71it/s, loss=4.33]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [491/3000]: Train loss: 3.4452, Valid loss: 2.1881\n", + "Saving model with loss 2.188...\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [492/3000]: 100%|██████████| 9/9 [00:00<00:00, 43.96it/s, loss=3.46]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [492/3000]: Train loss: 3.7142, Valid loss: 2.7302\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [493/3000]: 100%|██████████| 9/9 [00:00<00:00, 83.31it/s, loss=2.41]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [493/3000]: Train loss: 2.4222, Valid loss: 3.7926\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [494/3000]: 100%|██████████| 9/9 [00:00<00:00, 93.56it/s, loss=1.98]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [494/3000]: Train loss: 2.6205, Valid loss: 2.4950\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [495/3000]: 100%|██████████| 9/9 [00:00<00:00, 76.63it/s, loss=3.09]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [495/3000]: Train loss: 2.9130, Valid loss: 2.6595\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [496/3000]: 100%|██████████| 9/9 [00:00<00:00, 84.38it/s, loss=2.67]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [496/3000]: Train loss: 2.8835, Valid loss: 3.7974\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [497/3000]: 100%|██████████| 9/9 [00:00<00:00, 95.95it/s, loss=2.85]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [497/3000]: Train loss: 2.9608, Valid loss: 3.0914\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [498/3000]: 100%|██████████| 9/9 [00:00<00:00, 96.30it/s, loss=2.57]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [498/3000]: Train loss: 3.5106, Valid loss: 3.0821\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [499/3000]: 100%|██████████| 9/9 [00:00<00:00, 85.83it/s, loss=1.66]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [499/3000]: Train loss: 2.6130, Valid loss: 2.3542\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [500/3000]: 100%|██████████| 9/9 [00:00<00:00, 100.83it/s, loss=3.21]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [500/3000]: Train loss: 2.5831, Valid loss: 3.0960\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [501/3000]: 100%|██████████| 9/9 [00:00<00:00, 73.91it/s, loss=2.25]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [501/3000]: Train loss: 2.7657, Valid loss: 2.0236\n", + "Saving model with loss 2.024...\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [502/3000]: 100%|██████████| 9/9 [00:00<00:00, 75.58it/s, loss=4.23]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [502/3000]: Train loss: 3.8087, Valid loss: 5.7615\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [503/3000]: 100%|██████████| 9/9 [00:00<00:00, 94.96it/s, loss=4.12]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [503/3000]: Train loss: 3.6371, Valid loss: 3.7004\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [504/3000]: 100%|██████████| 9/9 [00:00<00:00, 86.39it/s, loss=2.14]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [504/3000]: Train loss: 2.7272, Valid loss: 2.2424\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [505/3000]: 100%|██████████| 9/9 [00:00<00:00, 95.25it/s, loss=2.1]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [505/3000]: Train loss: 2.3132, Valid loss: 5.1341\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [506/3000]: 100%|██████████| 9/9 [00:00<00:00, 94.54it/s, loss=2.16]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [506/3000]: Train loss: 2.8177, Valid loss: 4.3139\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [507/3000]: 100%|██████████| 9/9 [00:00<00:00, 94.64it/s, loss=3.22]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [507/3000]: Train loss: 2.8701, Valid loss: 3.0193\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [508/3000]: 100%|██████████| 9/9 [00:00<00:00, 31.25it/s, loss=2.58]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [508/3000]: Train loss: 2.5912, Valid loss: 2.6018\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [509/3000]: 100%|██████████| 9/9 [00:00<00:00, 103.84it/s, loss=2.51]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [509/3000]: Train loss: 2.5063, Valid loss: 2.4309\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [510/3000]: 100%|██████████| 9/9 [00:00<00:00, 99.03it/s, loss=2.64]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [510/3000]: Train loss: 2.3569, Valid loss: 3.1123\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [511/3000]: 100%|██████████| 9/9 [00:00<00:00, 98.45it/s, loss=2.81]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [511/3000]: Train loss: 2.7835, Valid loss: 4.1474\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [512/3000]: 100%|██████████| 9/9 [00:00<00:00, 101.02it/s, loss=2.25]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [512/3000]: Train loss: 2.5744, Valid loss: 2.4015\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [513/3000]: 100%|██████████| 9/9 [00:00<00:00, 101.39it/s, loss=3.24]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [513/3000]: Train loss: 2.8057, Valid loss: 4.1827\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [514/3000]: 100%|██████████| 9/9 [00:00<00:00, 100.02it/s, loss=2.02]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [514/3000]: Train loss: 3.5565, Valid loss: 3.7459\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [515/3000]: 100%|██████████| 9/9 [00:00<00:00, 80.96it/s, loss=4.16]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [515/3000]: Train loss: 3.6713, Valid loss: 3.0093\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [516/3000]: 100%|██████████| 9/9 [00:00<00:00, 82.20it/s, loss=4.49]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [516/3000]: Train loss: 3.8464, Valid loss: 2.5236\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [517/3000]: 100%|██████████| 9/9 [00:00<00:00, 75.32it/s, loss=2.19]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [517/3000]: Train loss: 2.8090, Valid loss: 2.5821\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [518/3000]: 100%|██████████| 9/9 [00:00<00:00, 86.00it/s, loss=2.4]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [518/3000]: Train loss: 3.1136, Valid loss: 2.4577\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [519/3000]: 100%|██████████| 9/9 [00:00<00:00, 82.16it/s, loss=1.8]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [519/3000]: Train loss: 2.3502, Valid loss: 2.3480\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [520/3000]: 100%|██████████| 9/9 [00:00<00:00, 84.09it/s, loss=2.62]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [520/3000]: Train loss: 2.6203, Valid loss: 3.1046\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [521/3000]: 100%|██████████| 9/9 [00:00<00:00, 84.98it/s, loss=2.52]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [521/3000]: Train loss: 2.5967, Valid loss: 3.2642\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [522/3000]: 100%|██████████| 9/9 [00:00<00:00, 81.06it/s, loss=3.56]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [522/3000]: Train loss: 2.7627, Valid loss: 4.5831\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [523/3000]: 100%|██████████| 9/9 [00:00<00:00, 92.19it/s, loss=2.67]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [523/3000]: Train loss: 3.1940, Valid loss: 2.1843\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [524/3000]: 100%|██████████| 9/9 [00:00<00:00, 89.91it/s, loss=2.9]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [524/3000]: Train loss: 2.3771, Valid loss: 6.0662\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [525/3000]: 100%|██████████| 9/9 [00:00<00:00, 79.13it/s, loss=8.87]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [525/3000]: Train loss: 7.5726, Valid loss: 8.6743\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [526/3000]: 100%|██████████| 9/9 [00:00<00:00, 67.49it/s, loss=7.06]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [526/3000]: Train loss: 6.0032, Valid loss: 5.8777\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [527/3000]: 100%|██████████| 9/9 [00:00<00:00, 91.55it/s, loss=2.65]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [527/3000]: Train loss: 4.7861, Valid loss: 6.0426\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [528/3000]: 100%|██████████| 9/9 [00:00<00:00, 85.31it/s, loss=3.77]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [528/3000]: Train loss: 3.8823, Valid loss: 4.5145\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [529/3000]: 100%|██████████| 9/9 [00:00<00:00, 99.28it/s, loss=4.38]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [529/3000]: Train loss: 3.2913, Valid loss: 3.4748\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [530/3000]: 100%|██████████| 9/9 [00:00<00:00, 99.79it/s, loss=2.49]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [530/3000]: Train loss: 3.1092, Valid loss: 3.0008\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [531/3000]: 100%|██████████| 9/9 [00:00<00:00, 78.98it/s, loss=3.7]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [531/3000]: Train loss: 2.8346, Valid loss: 5.2005\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [532/3000]: 100%|██████████| 9/9 [00:00<00:00, 82.08it/s, loss=2.96]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [532/3000]: Train loss: 3.5591, Valid loss: 2.2378\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [533/3000]: 100%|██████████| 9/9 [00:00<00:00, 78.92it/s, loss=3.43]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [533/3000]: Train loss: 3.2358, Valid loss: 6.6763\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [534/3000]: 100%|██████████| 9/9 [00:00<00:00, 92.38it/s, loss=2.43]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [534/3000]: Train loss: 3.2221, Valid loss: 3.3324\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [535/3000]: 100%|██████████| 9/9 [00:00<00:00, 92.01it/s, loss=3.67]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [535/3000]: Train loss: 3.8104, Valid loss: 3.3713\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [536/3000]: 100%|██████████| 9/9 [00:00<00:00, 76.84it/s, loss=2.59]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [536/3000]: Train loss: 2.6213, Valid loss: 3.4646\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [537/3000]: 100%|██████████| 9/9 [00:00<00:00, 76.16it/s, loss=2.98]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [537/3000]: Train loss: 2.5302, Valid loss: 2.1455\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [538/3000]: 100%|██████████| 9/9 [00:00<00:00, 78.15it/s, loss=2.59]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [538/3000]: Train loss: 2.5025, Valid loss: 2.1652\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [539/3000]: 100%|██████████| 9/9 [00:00<00:00, 83.12it/s, loss=1.91]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [539/3000]: Train loss: 2.2519, Valid loss: 2.5045\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [540/3000]: 100%|██████████| 9/9 [00:00<00:00, 92.00it/s, loss=2.99]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [540/3000]: Train loss: 2.5393, Valid loss: 2.7191\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [541/3000]: 100%|██████████| 9/9 [00:00<00:00, 83.51it/s, loss=5.01]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [541/3000]: Train loss: 3.3325, Valid loss: 2.5974\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [542/3000]: 100%|██████████| 9/9 [00:00<00:00, 71.38it/s, loss=2.12]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [542/3000]: Train loss: 3.1489, Valid loss: 3.1521\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [543/3000]: 100%|██████████| 9/9 [00:00<00:00, 84.52it/s, loss=2.24]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [543/3000]: Train loss: 2.5822, Valid loss: 2.6455\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [544/3000]: 100%|██████████| 9/9 [00:00<00:00, 90.99it/s, loss=3]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [544/3000]: Train loss: 2.6063, Valid loss: 2.1542\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [545/3000]: 100%|██████████| 9/9 [00:00<00:00, 98.28it/s, loss=2]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [545/3000]: Train loss: 2.4566, Valid loss: 2.9115\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [546/3000]: 100%|██████████| 9/9 [00:00<00:00, 78.83it/s, loss=7.06]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [546/3000]: Train loss: 3.5478, Valid loss: 5.3384\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [547/3000]: 100%|██████████| 9/9 [00:00<00:00, 76.13it/s, loss=1.98]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [547/3000]: Train loss: 4.8739, Valid loss: 4.2502\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [548/3000]: 100%|██████████| 9/9 [00:00<00:00, 86.38it/s, loss=2.19]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [548/3000]: Train loss: 2.7967, Valid loss: 2.4756\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [549/3000]: 100%|██████████| 9/9 [00:00<00:00, 84.83it/s, loss=2.68]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [549/3000]: Train loss: 2.5234, Valid loss: 2.5773\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [550/3000]: 100%|██████████| 9/9 [00:00<00:00, 95.15it/s, loss=2.28]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [550/3000]: Train loss: 2.2962, Valid loss: 2.4551\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [551/3000]: 100%|██████████| 9/9 [00:00<00:00, 96.09it/s, loss=2.61]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [551/3000]: Train loss: 2.8768, Valid loss: 2.4721\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [552/3000]: 100%|██████████| 9/9 [00:00<00:00, 96.64it/s, loss=2.84]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [552/3000]: Train loss: 3.2098, Valid loss: 6.1867\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [553/3000]: 100%|██████████| 9/9 [00:00<00:00, 94.77it/s, loss=2.94]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [553/3000]: Train loss: 3.4704, Valid loss: 2.2285\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [554/3000]: 100%|██████████| 9/9 [00:00<00:00, 74.60it/s, loss=2.98]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [554/3000]: Train loss: 2.3139, Valid loss: 2.7732\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [555/3000]: 100%|██████████| 9/9 [00:00<00:00, 94.03it/s, loss=3.61]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [555/3000]: Train loss: 2.7826, Valid loss: 2.7185\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [556/3000]: 100%|██████████| 9/9 [00:00<00:00, 83.32it/s, loss=2.73]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [556/3000]: Train loss: 2.6312, Valid loss: 2.6677\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [557/3000]: 100%|██████████| 9/9 [00:00<00:00, 97.85it/s, loss=2.68]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [557/3000]: Train loss: 2.4949, Valid loss: 2.6363\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [558/3000]: 100%|██████████| 9/9 [00:00<00:00, 81.53it/s, loss=2.58]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [558/3000]: Train loss: 2.3865, Valid loss: 2.6815\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [559/3000]: 100%|██████████| 9/9 [00:00<00:00, 86.03it/s, loss=3.74]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [559/3000]: Train loss: 2.6617, Valid loss: 5.8324\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [560/3000]: 100%|██████████| 9/9 [00:00<00:00, 84.46it/s, loss=3.84]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [560/3000]: Train loss: 3.6686, Valid loss: 2.7987\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [561/3000]: 100%|██████████| 9/9 [00:00<00:00, 69.62it/s, loss=2.18]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [561/3000]: Train loss: 2.6060, Valid loss: 3.6764\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [562/3000]: 100%|██████████| 9/9 [00:00<00:00, 83.93it/s, loss=2.68]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [562/3000]: Train loss: 2.5196, Valid loss: 2.4097\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [563/3000]: 100%|██████████| 9/9 [00:00<00:00, 49.71it/s, loss=3.13]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [563/3000]: Train loss: 2.5637, Valid loss: 2.4547\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [564/3000]: 100%|██████████| 9/9 [00:00<00:00, 81.56it/s, loss=2.58]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [564/3000]: Train loss: 2.3403, Valid loss: 2.4729\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [565/3000]: 100%|██████████| 9/9 [00:00<00:00, 74.12it/s, loss=2.13]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [565/3000]: Train loss: 2.2940, Valid loss: 2.4682\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [566/3000]: 100%|██████████| 9/9 [00:00<00:00, 81.95it/s, loss=4.36]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [566/3000]: Train loss: 3.3562, Valid loss: 2.4907\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [567/3000]: 100%|██████████| 9/9 [00:00<00:00, 74.66it/s, loss=3.41]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [567/3000]: Train loss: 3.3504, Valid loss: 3.0001\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [568/3000]: 100%|██████████| 9/9 [00:00<00:00, 92.66it/s, loss=3.42]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [568/3000]: Train loss: 2.8974, Valid loss: 6.3127\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [569/3000]: 100%|██████████| 9/9 [00:00<00:00, 85.43it/s, loss=3.02]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [569/3000]: Train loss: 3.2235, Valid loss: 2.5907\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [570/3000]: 100%|██████████| 9/9 [00:00<00:00, 89.92it/s, loss=3.71]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [570/3000]: Train loss: 3.5432, Valid loss: 5.4796\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [571/3000]: 100%|██████████| 9/9 [00:00<00:00, 79.86it/s, loss=5.13]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [571/3000]: Train loss: 4.5984, Valid loss: 4.9210\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [572/3000]: 100%|██████████| 9/9 [00:00<00:00, 85.31it/s, loss=4.45]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [572/3000]: Train loss: 3.9686, Valid loss: 2.6539\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [573/3000]: 100%|██████████| 9/9 [00:00<00:00, 69.01it/s, loss=2.58]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [573/3000]: Train loss: 2.8949, Valid loss: 4.3502\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [574/3000]: 100%|██████████| 9/9 [00:00<00:00, 93.17it/s, loss=2.72]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [574/3000]: Train loss: 3.1320, Valid loss: 3.3334\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [575/3000]: 100%|██████████| 9/9 [00:00<00:00, 97.80it/s, loss=4.42]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [575/3000]: Train loss: 2.9265, Valid loss: 2.5418\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [576/3000]: 100%|██████████| 9/9 [00:00<00:00, 82.31it/s, loss=3]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [576/3000]: Train loss: 2.9213, Valid loss: 2.6308\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [577/3000]: 100%|██████████| 9/9 [00:00<00:00, 90.53it/s, loss=2.58]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [577/3000]: Train loss: 2.6463, Valid loss: 2.3805\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [578/3000]: 100%|██████████| 9/9 [00:00<00:00, 83.12it/s, loss=2.2]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [578/3000]: Train loss: 2.3612, Valid loss: 3.9643\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [579/3000]: 100%|██████████| 9/9 [00:00<00:00, 63.85it/s, loss=3.07]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [579/3000]: Train loss: 3.3746, Valid loss: 3.3926\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [580/3000]: 100%|██████████| 9/9 [00:00<00:00, 80.20it/s, loss=3.93]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [580/3000]: Train loss: 2.9425, Valid loss: 2.4442\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [581/3000]: 100%|██████████| 9/9 [00:00<00:00, 86.42it/s, loss=2.83]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [581/3000]: Train loss: 2.5113, Valid loss: 3.1970\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [582/3000]: 100%|██████████| 9/9 [00:00<00:00, 81.96it/s, loss=1.57]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [582/3000]: Train loss: 2.5468, Valid loss: 2.5142\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [583/3000]: 100%|██████████| 9/9 [00:00<00:00, 71.49it/s, loss=1.84]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [583/3000]: Train loss: 2.2659, Valid loss: 2.1117\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [584/3000]: 100%|██████████| 9/9 [00:00<00:00, 78.77it/s, loss=1.9]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [584/3000]: Train loss: 2.4385, Valid loss: 6.9489\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [585/3000]: 100%|██████████| 9/9 [00:00<00:00, 78.17it/s, loss=4.75]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [585/3000]: Train loss: 4.5328, Valid loss: 2.9510\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [586/3000]: 100%|██████████| 9/9 [00:00<00:00, 82.17it/s, loss=3.89]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [586/3000]: Train loss: 4.0889, Valid loss: 3.8582\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [587/3000]: 100%|██████████| 9/9 [00:00<00:00, 83.42it/s, loss=5.25]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [587/3000]: Train loss: 3.7466, Valid loss: 3.5808\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [588/3000]: 100%|██████████| 9/9 [00:00<00:00, 74.04it/s, loss=2.53]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [588/3000]: Train loss: 2.6502, Valid loss: 2.6529\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [589/3000]: 100%|██████████| 9/9 [00:00<00:00, 27.16it/s, loss=2.18]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [589/3000]: Train loss: 2.4570, Valid loss: 2.4066\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [590/3000]: 100%|██████████| 9/9 [00:00<00:00, 94.55it/s, loss=2.72]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [590/3000]: Train loss: 2.5934, Valid loss: 2.2669\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [591/3000]: 100%|██████████| 9/9 [00:00<00:00, 92.74it/s, loss=2.7]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [591/3000]: Train loss: 2.3520, Valid loss: 2.8885\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [592/3000]: 100%|██████████| 9/9 [00:00<00:00, 92.04it/s, loss=2.31]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [592/3000]: Train loss: 2.2327, Valid loss: 2.4426\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [593/3000]: 100%|██████████| 9/9 [00:00<00:00, 83.68it/s, loss=2.42]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [593/3000]: Train loss: 2.3127, Valid loss: 2.0617\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [594/3000]: 100%|██████████| 9/9 [00:00<00:00, 86.27it/s, loss=2.05]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [594/3000]: Train loss: 2.1726, Valid loss: 2.6183\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [595/3000]: 100%|██████████| 9/9 [00:00<00:00, 87.47it/s, loss=2.51]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [595/3000]: Train loss: 2.2187, Valid loss: 2.1861\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [596/3000]: 100%|██████████| 9/9 [00:00<00:00, 81.95it/s, loss=1.97]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [596/3000]: Train loss: 2.5373, Valid loss: 3.1444\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [597/3000]: 100%|██████████| 9/9 [00:00<00:00, 85.71it/s, loss=4.38]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [597/3000]: Train loss: 3.9493, Valid loss: 3.1783\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [598/3000]: 100%|██████████| 9/9 [00:00<00:00, 79.56it/s, loss=2.55]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [598/3000]: Train loss: 4.6627, Valid loss: 4.4816\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [599/3000]: 100%|██████████| 9/9 [00:00<00:00, 97.84it/s, loss=6.26]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [599/3000]: Train loss: 3.5566, Valid loss: 3.4652\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [600/3000]: 100%|██████████| 9/9 [00:00<00:00, 100.86it/s, loss=2.11]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [600/3000]: Train loss: 2.8590, Valid loss: 3.9248\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [601/3000]: 100%|██████████| 9/9 [00:00<00:00, 90.95it/s, loss=3.36]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [601/3000]: Train loss: 3.5480, Valid loss: 3.7100\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [602/3000]: 100%|██████████| 9/9 [00:00<00:00, 76.32it/s, loss=2.68]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [602/3000]: Train loss: 2.5348, Valid loss: 3.0981\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [603/3000]: 100%|██████████| 9/9 [00:00<00:00, 83.43it/s, loss=3.01]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [603/3000]: Train loss: 2.4395, Valid loss: 2.5912\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [604/3000]: 100%|██████████| 9/9 [00:00<00:00, 82.07it/s, loss=2.68]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [604/3000]: Train loss: 2.4718, Valid loss: 2.1511\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [605/3000]: 100%|██████████| 9/9 [00:00<00:00, 90.03it/s, loss=3.34]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [605/3000]: Train loss: 2.9767, Valid loss: 2.4476\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [606/3000]: 100%|██████████| 9/9 [00:00<00:00, 82.07it/s, loss=1.67]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [606/3000]: Train loss: 2.2655, Valid loss: 2.9852\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [607/3000]: 100%|██████████| 9/9 [00:00<00:00, 66.24it/s, loss=2.17]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [607/3000]: Train loss: 2.1491, Valid loss: 2.3984\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [608/3000]: 100%|██████████| 9/9 [00:00<00:00, 77.65it/s, loss=2.11]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [608/3000]: Train loss: 2.2377, Valid loss: 2.1177\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [609/3000]: 100%|██████████| 9/9 [00:00<00:00, 90.49it/s, loss=2.22]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [609/3000]: Train loss: 2.3383, Valid loss: 2.7523\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [610/3000]: 100%|██████████| 9/9 [00:00<00:00, 94.39it/s, loss=2.28]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [610/3000]: Train loss: 2.5915, Valid loss: 2.5009\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [611/3000]: 100%|██████████| 9/9 [00:00<00:00, 98.16it/s, loss=1.99]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [611/3000]: Train loss: 2.2108, Valid loss: 2.9372\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [612/3000]: 100%|██████████| 9/9 [00:00<00:00, 90.82it/s, loss=2.35]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [612/3000]: Train loss: 2.4580, Valid loss: 2.4541\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [613/3000]: 100%|██████████| 9/9 [00:00<00:00, 85.51it/s, loss=2.52]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [613/3000]: Train loss: 2.8888, Valid loss: 7.5345\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [614/3000]: 100%|██████████| 9/9 [00:00<00:00, 84.86it/s, loss=3.68]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [614/3000]: Train loss: 4.1837, Valid loss: 3.5008\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [615/3000]: 100%|██████████| 9/9 [00:00<00:00, 82.42it/s, loss=2.71]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [615/3000]: Train loss: 3.3763, Valid loss: 5.1557\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [616/3000]: 100%|██████████| 9/9 [00:00<00:00, 80.06it/s, loss=2.05]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [616/3000]: Train loss: 2.6360, Valid loss: 2.5353\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [617/3000]: 100%|██████████| 9/9 [00:00<00:00, 81.44it/s, loss=2.55]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [617/3000]: Train loss: 2.3854, Valid loss: 2.4468\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [618/3000]: 100%|██████████| 9/9 [00:00<00:00, 71.65it/s, loss=2]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [618/3000]: Train loss: 2.1955, Valid loss: 2.1048\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [619/3000]: 100%|██████████| 9/9 [00:00<00:00, 75.59it/s, loss=2.65]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [619/3000]: Train loss: 2.3510, Valid loss: 4.2053\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [620/3000]: 100%|██████████| 9/9 [00:00<00:00, 75.11it/s, loss=3.17]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [620/3000]: Train loss: 2.9306, Valid loss: 2.8500\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [621/3000]: 100%|██████████| 9/9 [00:00<00:00, 69.58it/s, loss=2.34]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [621/3000]: Train loss: 2.4428, Valid loss: 2.7754\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [622/3000]: 100%|██████████| 9/9 [00:00<00:00, 81.80it/s, loss=3.01]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [622/3000]: Train loss: 2.4533, Valid loss: 2.2321\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [623/3000]: 100%|██████████| 9/9 [00:00<00:00, 76.58it/s, loss=2.45]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [623/3000]: Train loss: 2.4791, Valid loss: 2.3249\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [624/3000]: 100%|██████████| 9/9 [00:00<00:00, 91.71it/s, loss=2.25]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [624/3000]: Train loss: 2.4776, Valid loss: 3.2686\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [625/3000]: 100%|██████████| 9/9 [00:00<00:00, 77.37it/s, loss=3.59]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [625/3000]: Train loss: 3.4760, Valid loss: 3.8594\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [626/3000]: 100%|██████████| 9/9 [00:00<00:00, 88.01it/s, loss=2.92]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [626/3000]: Train loss: 3.1287, Valid loss: 5.7027\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [627/3000]: 100%|██████████| 9/9 [00:00<00:00, 75.88it/s, loss=6.92]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [627/3000]: Train loss: 4.5345, Valid loss: 4.9285\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [628/3000]: 100%|██████████| 9/9 [00:00<00:00, 89.94it/s, loss=5.01]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [628/3000]: Train loss: 4.9189, Valid loss: 2.6321\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [629/3000]: 100%|██████████| 9/9 [00:00<00:00, 69.63it/s, loss=6.33]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [629/3000]: Train loss: 4.2030, Valid loss: 3.6118\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [630/3000]: 100%|██████████| 9/9 [00:00<00:00, 91.72it/s, loss=2.74]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [630/3000]: Train loss: 3.3485, Valid loss: 2.2453\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [631/3000]: 100%|██████████| 9/9 [00:00<00:00, 99.23it/s, loss=3.15]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [631/3000]: Train loss: 3.2558, Valid loss: 4.0259\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [632/3000]: 100%|██████████| 9/9 [00:00<00:00, 101.07it/s, loss=2.81]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [632/3000]: Train loss: 2.9990, Valid loss: 2.9340\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [633/3000]: 100%|██████████| 9/9 [00:00<00:00, 101.05it/s, loss=1.79]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [633/3000]: Train loss: 2.9245, Valid loss: 2.4144\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [634/3000]: 100%|██████████| 9/9 [00:00<00:00, 91.51it/s, loss=3.23]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [634/3000]: Train loss: 2.4658, Valid loss: 2.7822\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [635/3000]: 100%|██████████| 9/9 [00:00<00:00, 69.74it/s, loss=2.24]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [635/3000]: Train loss: 2.5455, Valid loss: 3.9560\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [636/3000]: 100%|██████████| 9/9 [00:00<00:00, 81.46it/s, loss=1.93]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [636/3000]: Train loss: 2.7745, Valid loss: 2.8479\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [637/3000]: 100%|██████████| 9/9 [00:00<00:00, 81.33it/s, loss=1.69]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [637/3000]: Train loss: 2.3338, Valid loss: 2.8540\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [638/3000]: 100%|██████████| 9/9 [00:00<00:00, 95.46it/s, loss=3.25]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [638/3000]: Train loss: 2.3138, Valid loss: 2.2989\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [639/3000]: 100%|██████████| 9/9 [00:00<00:00, 87.98it/s, loss=2.7]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [639/3000]: Train loss: 2.4318, Valid loss: 2.7092\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [640/3000]: 100%|██████████| 9/9 [00:00<00:00, 81.97it/s, loss=2.43]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [640/3000]: Train loss: 2.6786, Valid loss: 2.5801\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [641/3000]: 100%|██████████| 9/9 [00:00<00:00, 79.49it/s, loss=2.26]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [641/3000]: Train loss: 2.4858, Valid loss: 3.2657\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [642/3000]: 100%|██████████| 9/9 [00:00<00:00, 79.89it/s, loss=2.26]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [642/3000]: Train loss: 2.8626, Valid loss: 3.5528\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [643/3000]: 100%|██████████| 9/9 [00:00<00:00, 83.58it/s, loss=2.32]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [643/3000]: Train loss: 2.4289, Valid loss: 2.4374\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [644/3000]: 100%|██████████| 9/9 [00:00<00:00, 82.19it/s, loss=2.28]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [644/3000]: Train loss: 2.2349, Valid loss: 2.0281\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [645/3000]: 100%|██████████| 9/9 [00:00<00:00, 83.61it/s, loss=3.61]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [645/3000]: Train loss: 2.3572, Valid loss: 2.1921\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [646/3000]: 100%|██████████| 9/9 [00:00<00:00, 85.65it/s, loss=2.14]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [646/3000]: Train loss: 2.2329, Valid loss: 3.0051\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [647/3000]: 100%|██████████| 9/9 [00:00<00:00, 74.91it/s, loss=2.48]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [647/3000]: Train loss: 2.2845, Valid loss: 3.1970\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [648/3000]: 100%|██████████| 9/9 [00:00<00:00, 80.90it/s, loss=2.06]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [648/3000]: Train loss: 2.3422, Valid loss: 2.3759\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [649/3000]: 100%|██████████| 9/9 [00:00<00:00, 71.49it/s, loss=2.07]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [649/3000]: Train loss: 2.1459, Valid loss: 3.2756\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [650/3000]: 100%|██████████| 9/9 [00:00<00:00, 83.93it/s, loss=3.48]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [650/3000]: Train loss: 2.6184, Valid loss: 4.9956\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [651/3000]: 100%|██████████| 9/9 [00:00<00:00, 92.84it/s, loss=2.63]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [651/3000]: Train loss: 3.4151, Valid loss: 2.5844\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [652/3000]: 100%|██████████| 9/9 [00:00<00:00, 82.40it/s, loss=3.14]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [652/3000]: Train loss: 3.0992, Valid loss: 3.8989\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [653/3000]: 100%|██████████| 9/9 [00:00<00:00, 43.80it/s, loss=4.13]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [653/3000]: Train loss: 3.5218, Valid loss: 3.3696\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [654/3000]: 100%|██████████| 9/9 [00:00<00:00, 76.36it/s, loss=3.53]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [654/3000]: Train loss: 3.6657, Valid loss: 5.3648\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [655/3000]: 100%|██████████| 9/9 [00:00<00:00, 83.27it/s, loss=1.65]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [655/3000]: Train loss: 3.7884, Valid loss: 3.8208\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [656/3000]: 100%|██████████| 9/9 [00:00<00:00, 94.02it/s, loss=3.48]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [656/3000]: Train loss: 3.1191, Valid loss: 2.4265\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [657/3000]: 100%|██████████| 9/9 [00:00<00:00, 85.24it/s, loss=3.24]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [657/3000]: Train loss: 3.4353, Valid loss: 4.2409\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [658/3000]: 100%|██████████| 9/9 [00:00<00:00, 92.03it/s, loss=3.86]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [658/3000]: Train loss: 3.1164, Valid loss: 2.8399\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [659/3000]: 100%|██████████| 9/9 [00:00<00:00, 86.63it/s, loss=2.21]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [659/3000]: Train loss: 2.4971, Valid loss: 3.5639\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [660/3000]: 100%|██████████| 9/9 [00:00<00:00, 87.29it/s, loss=2.92]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [660/3000]: Train loss: 2.6930, Valid loss: 3.1295\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [661/3000]: 100%|██████████| 9/9 [00:00<00:00, 85.18it/s, loss=2.69]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [661/3000]: Train loss: 2.7106, Valid loss: 3.9444\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [662/3000]: 100%|██████████| 9/9 [00:00<00:00, 79.26it/s, loss=3.36]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [662/3000]: Train loss: 2.8945, Valid loss: 2.2209\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [663/3000]: 100%|██████████| 9/9 [00:00<00:00, 81.39it/s, loss=2.03]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [663/3000]: Train loss: 2.4954, Valid loss: 2.6484\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [664/3000]: 100%|██████████| 9/9 [00:00<00:00, 76.78it/s, loss=2.87]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [664/3000]: Train loss: 2.5066, Valid loss: 2.1231\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [665/3000]: 100%|██████████| 9/9 [00:00<00:00, 81.85it/s, loss=3.35]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [665/3000]: Train loss: 2.8528, Valid loss: 3.0324\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [666/3000]: 100%|██████████| 9/9 [00:00<00:00, 77.99it/s, loss=2.72]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [666/3000]: Train loss: 2.3831, Valid loss: 2.5688\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [667/3000]: 100%|██████████| 9/9 [00:00<00:00, 71.59it/s, loss=1.75]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [667/3000]: Train loss: 2.2332, Valid loss: 2.6069\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [668/3000]: 100%|██████████| 9/9 [00:00<00:00, 86.69it/s, loss=2.35]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [668/3000]: Train loss: 2.3604, Valid loss: 2.9896\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [669/3000]: 100%|██████████| 9/9 [00:00<00:00, 85.63it/s, loss=2.78]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [669/3000]: Train loss: 2.4338, Valid loss: 3.2115\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [670/3000]: 100%|██████████| 9/9 [00:00<00:00, 68.14it/s, loss=2.47]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [670/3000]: Train loss: 2.1930, Valid loss: 2.4128\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [671/3000]: 100%|██████████| 9/9 [00:00<00:00, 82.77it/s, loss=1.81]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [671/3000]: Train loss: 2.1332, Valid loss: 2.3929\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [672/3000]: 100%|██████████| 9/9 [00:00<00:00, 72.52it/s, loss=2.61]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [672/3000]: Train loss: 2.1169, Valid loss: 2.2621\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [673/3000]: 100%|██████████| 9/9 [00:00<00:00, 84.11it/s, loss=2.14]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [673/3000]: Train loss: 2.3060, Valid loss: 3.5425\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [674/3000]: 100%|██████████| 9/9 [00:00<00:00, 79.42it/s, loss=1.81]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [674/3000]: Train loss: 2.2514, Valid loss: 2.7882\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [675/3000]: 100%|██████████| 9/9 [00:00<00:00, 90.82it/s, loss=2.81]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [675/3000]: Train loss: 2.4386, Valid loss: 2.0191\n", + "Saving model with loss 2.019...\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [676/3000]: 100%|██████████| 9/9 [00:00<00:00, 74.88it/s, loss=1.55]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [676/3000]: Train loss: 2.0688, Valid loss: 2.2273\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [677/3000]: 100%|██████████| 9/9 [00:00<00:00, 69.86it/s, loss=2.25]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [677/3000]: Train loss: 2.1311, Valid loss: 2.0712\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [678/3000]: 100%|██████████| 9/9 [00:00<00:00, 83.17it/s, loss=1.59]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [678/3000]: Train loss: 2.1467, Valid loss: 2.2294\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [679/3000]: 100%|██████████| 9/9 [00:00<00:00, 74.28it/s, loss=3.7]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [679/3000]: Train loss: 2.6385, Valid loss: 2.4866\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [680/3000]: 100%|██████████| 9/9 [00:00<00:00, 76.40it/s, loss=2.9]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [680/3000]: Train loss: 2.8597, Valid loss: 2.4719\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [681/3000]: 100%|██████████| 9/9 [00:00<00:00, 70.77it/s, loss=3.79]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [681/3000]: Train loss: 2.6514, Valid loss: 2.4151\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [682/3000]: 100%|██████████| 9/9 [00:00<00:00, 91.87it/s, loss=4.24]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [682/3000]: Train loss: 2.3955, Valid loss: 7.8327\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [683/3000]: 100%|██████████| 9/9 [00:00<00:00, 94.71it/s, loss=2.81]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [683/3000]: Train loss: 6.1089, Valid loss: 7.4767\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [684/3000]: 100%|██████████| 9/9 [00:00<00:00, 79.48it/s, loss=2.8]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [684/3000]: Train loss: 4.2867, Valid loss: 5.8076\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [685/3000]: 100%|██████████| 9/9 [00:00<00:00, 80.02it/s, loss=4.7]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [685/3000]: Train loss: 4.0257, Valid loss: 2.5738\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [686/3000]: 100%|██████████| 9/9 [00:00<00:00, 84.13it/s, loss=1.73]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [686/3000]: Train loss: 2.5146, Valid loss: 2.6760\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [687/3000]: 100%|██████████| 9/9 [00:00<00:00, 82.51it/s, loss=3.51]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [687/3000]: Train loss: 2.6958, Valid loss: 2.2343\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [688/3000]: 100%|██████████| 9/9 [00:00<00:00, 77.47it/s, loss=2.45]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [688/3000]: Train loss: 3.4447, Valid loss: 5.9020\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [689/3000]: 100%|██████████| 9/9 [00:00<00:00, 94.18it/s, loss=3.46]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [689/3000]: Train loss: 3.6762, Valid loss: 2.5242\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [690/3000]: 100%|██████████| 9/9 [00:00<00:00, 91.71it/s, loss=2.42]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [690/3000]: Train loss: 2.5212, Valid loss: 2.4753\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [691/3000]: 100%|██████████| 9/9 [00:00<00:00, 85.56it/s, loss=2.67]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [691/3000]: Train loss: 2.4130, Valid loss: 2.8838\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [692/3000]: 100%|██████████| 9/9 [00:00<00:00, 79.28it/s, loss=2.54]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [692/3000]: Train loss: 2.2380, Valid loss: 2.2883\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [693/3000]: 100%|██████████| 9/9 [00:00<00:00, 80.55it/s, loss=2.07]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [693/3000]: Train loss: 2.0583, Valid loss: 2.6045\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [694/3000]: 100%|██████████| 9/9 [00:00<00:00, 81.44it/s, loss=2.07]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [694/3000]: Train loss: 2.1053, Valid loss: 2.6360\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [695/3000]: 100%|██████████| 9/9 [00:00<00:00, 92.75it/s, loss=1.8]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [695/3000]: Train loss: 2.2185, Valid loss: 2.8083\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [696/3000]: 100%|██████████| 9/9 [00:00<00:00, 85.46it/s, loss=2.07]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [696/3000]: Train loss: 2.6080, Valid loss: 2.9089\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [697/3000]: 100%|██████████| 9/9 [00:00<00:00, 83.72it/s, loss=2.82]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [697/3000]: Train loss: 2.3129, Valid loss: 3.2569\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [698/3000]: 100%|██████████| 9/9 [00:00<00:00, 84.14it/s, loss=2.53]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [698/3000]: Train loss: 2.3242, Valid loss: 2.6769\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [699/3000]: 100%|██████████| 9/9 [00:00<00:00, 83.60it/s, loss=3.21]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [699/3000]: Train loss: 2.4686, Valid loss: 2.5527\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [700/3000]: 100%|██████████| 9/9 [00:00<00:00, 81.75it/s, loss=2.87]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [700/3000]: Train loss: 2.5123, Valid loss: 4.3454\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [701/3000]: 100%|██████████| 9/9 [00:00<00:00, 91.71it/s, loss=2.89]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [701/3000]: Train loss: 2.8854, Valid loss: 2.8889\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [702/3000]: 100%|██████████| 9/9 [00:00<00:00, 75.85it/s, loss=3.63]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [702/3000]: Train loss: 2.9625, Valid loss: 2.9299\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [703/3000]: 100%|██████████| 9/9 [00:00<00:00, 93.05it/s, loss=1.92]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [703/3000]: Train loss: 2.6883, Valid loss: 2.8693\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [704/3000]: 100%|██████████| 9/9 [00:00<00:00, 86.85it/s, loss=2.34]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [704/3000]: Train loss: 2.3183, Valid loss: 3.3897\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [705/3000]: 100%|██████████| 9/9 [00:00<00:00, 84.88it/s, loss=2.37]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [705/3000]: Train loss: 2.4742, Valid loss: 3.4635\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [706/3000]: 100%|██████████| 9/9 [00:00<00:00, 77.96it/s, loss=2.52]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [706/3000]: Train loss: 3.2832, Valid loss: 3.5180\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [707/3000]: 100%|██████████| 9/9 [00:00<00:00, 71.49it/s, loss=7.27]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [707/3000]: Train loss: 3.3976, Valid loss: 5.3223\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [708/3000]: 100%|██████████| 9/9 [00:00<00:00, 85.75it/s, loss=2.31]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [708/3000]: Train loss: 3.5228, Valid loss: 3.0592\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [709/3000]: 100%|██████████| 9/9 [00:00<00:00, 70.96it/s, loss=2.69]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [709/3000]: Train loss: 2.4990, Valid loss: 2.9356\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [710/3000]: 100%|██████████| 9/9 [00:00<00:00, 91.67it/s, loss=3.53]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [710/3000]: Train loss: 3.0601, Valid loss: 4.0160\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [711/3000]: 100%|██████████| 9/9 [00:00<00:00, 87.15it/s, loss=2.35]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [711/3000]: Train loss: 2.8290, Valid loss: 5.0934\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [712/3000]: 100%|██████████| 9/9 [00:00<00:00, 79.14it/s, loss=5.63]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [712/3000]: Train loss: 4.4952, Valid loss: 2.9255\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [713/3000]: 100%|██████████| 9/9 [00:00<00:00, 85.87it/s, loss=7.53]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [713/3000]: Train loss: 4.6889, Valid loss: 3.4537\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [714/3000]: 100%|██████████| 9/9 [00:00<00:00, 83.98it/s, loss=2.09]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [714/3000]: Train loss: 2.8917, Valid loss: 2.3618\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [715/3000]: 100%|██████████| 9/9 [00:00<00:00, 82.62it/s, loss=2.26]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [715/3000]: Train loss: 2.1407, Valid loss: 2.9220\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [716/3000]: 100%|██████████| 9/9 [00:00<00:00, 91.52it/s, loss=2.67]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [716/3000]: Train loss: 2.3841, Valid loss: 2.5192\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [717/3000]: 100%|██████████| 9/9 [00:00<00:00, 75.59it/s, loss=2.75]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [717/3000]: Train loss: 2.6739, Valid loss: 2.1183\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [718/3000]: 100%|██████████| 9/9 [00:00<00:00, 82.42it/s, loss=2.66]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [718/3000]: Train loss: 2.4462, Valid loss: 3.0077\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [719/3000]: 100%|██████████| 9/9 [00:00<00:00, 85.51it/s, loss=1.74]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [719/3000]: Train loss: 2.5019, Valid loss: 2.9567\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [720/3000]: 100%|██████████| 9/9 [00:00<00:00, 79.94it/s, loss=1.91]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [720/3000]: Train loss: 2.2752, Valid loss: 2.2882\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [721/3000]: 100%|██████████| 9/9 [00:00<00:00, 71.11it/s, loss=2.48]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [721/3000]: Train loss: 2.4381, Valid loss: 2.3435\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [722/3000]: 100%|██████████| 9/9 [00:00<00:00, 69.47it/s, loss=1.89]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [722/3000]: Train loss: 2.3125, Valid loss: 3.2713\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [723/3000]: 100%|██████████| 9/9 [00:00<00:00, 74.11it/s, loss=2.23]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [723/3000]: Train loss: 2.4214, Valid loss: 2.4491\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [724/3000]: 100%|██████████| 9/9 [00:00<00:00, 74.38it/s, loss=3.5]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [724/3000]: Train loss: 3.2532, Valid loss: 3.8454\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [725/3000]: 100%|██████████| 9/9 [00:00<00:00, 74.90it/s, loss=3.04]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [725/3000]: Train loss: 2.9803, Valid loss: 3.4384\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [726/3000]: 100%|██████████| 9/9 [00:00<00:00, 78.72it/s, loss=3.67]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [726/3000]: Train loss: 2.8173, Valid loss: 2.4218\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [727/3000]: 100%|██████████| 9/9 [00:00<00:00, 85.18it/s, loss=5.14]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [727/3000]: Train loss: 3.1136, Valid loss: 7.2313\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [728/3000]: 100%|██████████| 9/9 [00:00<00:00, 82.98it/s, loss=4.4]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [728/3000]: Train loss: 4.7185, Valid loss: 2.8864\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [729/3000]: 100%|██████████| 9/9 [00:00<00:00, 87.24it/s, loss=2.43]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [729/3000]: Train loss: 2.7232, Valid loss: 3.0081\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [730/3000]: 100%|██████████| 9/9 [00:00<00:00, 99.75it/s, loss=2.07]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [730/3000]: Train loss: 2.5186, Valid loss: 4.2936\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [731/3000]: 100%|██████████| 9/9 [00:00<00:00, 89.97it/s, loss=5.11]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [731/3000]: Train loss: 3.4209, Valid loss: 3.2657\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [732/3000]: 100%|██████████| 9/9 [00:00<00:00, 83.95it/s, loss=2.94]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [732/3000]: Train loss: 3.3279, Valid loss: 2.1338\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [733/3000]: 100%|██████████| 9/9 [00:00<00:00, 84.23it/s, loss=2.33]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [733/3000]: Train loss: 2.5016, Valid loss: 3.2329\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [734/3000]: 100%|██████████| 9/9 [00:00<00:00, 85.23it/s, loss=1.85]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [734/3000]: Train loss: 2.1969, Valid loss: 3.1147\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [735/3000]: 100%|██████████| 9/9 [00:00<00:00, 79.11it/s, loss=5.58]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [735/3000]: Train loss: 3.4103, Valid loss: 2.4432\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [736/3000]: 100%|██████████| 9/9 [00:00<00:00, 67.85it/s, loss=3.51]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [736/3000]: Train loss: 2.6897, Valid loss: 3.3306\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [737/3000]: 100%|██████████| 9/9 [00:00<00:00, 90.55it/s, loss=1.76]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [737/3000]: Train loss: 2.2550, Valid loss: 2.2783\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [738/3000]: 100%|██████████| 9/9 [00:00<00:00, 97.18it/s, loss=2.1]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [738/3000]: Train loss: 2.2040, Valid loss: 2.0431\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [739/3000]: 100%|██████████| 9/9 [00:00<00:00, 93.17it/s, loss=2.43]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [739/3000]: Train loss: 2.1500, Valid loss: 3.1045\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [740/3000]: 100%|██████████| 9/9 [00:00<00:00, 98.07it/s, loss=1.63]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [740/3000]: Train loss: 2.4574, Valid loss: 2.7667\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [741/3000]: 100%|██████████| 9/9 [00:00<00:00, 87.72it/s, loss=2.8]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [741/3000]: Train loss: 2.7564, Valid loss: 4.1795\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [742/3000]: 100%|██████████| 9/9 [00:00<00:00, 76.03it/s, loss=3.03]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [742/3000]: Train loss: 2.8109, Valid loss: 4.3256\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [743/3000]: 100%|██████████| 9/9 [00:00<00:00, 87.35it/s, loss=3.38]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [743/3000]: Train loss: 2.8118, Valid loss: 2.2945\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [744/3000]: 100%|██████████| 9/9 [00:00<00:00, 72.13it/s, loss=1.66]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [744/3000]: Train loss: 2.0774, Valid loss: 2.8815\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [745/3000]: 100%|██████████| 9/9 [00:00<00:00, 77.62it/s, loss=2.98]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [745/3000]: Train loss: 2.6405, Valid loss: 2.5757\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [746/3000]: 100%|██████████| 9/9 [00:00<00:00, 79.20it/s, loss=2.38]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [746/3000]: Train loss: 2.6401, Valid loss: 4.1651\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [747/3000]: 100%|██████████| 9/9 [00:00<00:00, 92.74it/s, loss=2.67]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [747/3000]: Train loss: 2.5667, Valid loss: 2.2661\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [748/3000]: 100%|██████████| 9/9 [00:00<00:00, 93.40it/s, loss=2.12]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [748/3000]: Train loss: 2.0754, Valid loss: 2.2789\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [749/3000]: 100%|██████████| 9/9 [00:00<00:00, 94.14it/s, loss=1.86]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [749/3000]: Train loss: 2.0704, Valid loss: 2.1094\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [750/3000]: 100%|██████████| 9/9 [00:00<00:00, 82.80it/s, loss=2.08]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [750/3000]: Train loss: 2.1733, Valid loss: 2.2499\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [751/3000]: 100%|██████████| 9/9 [00:00<00:00, 28.69it/s, loss=2.53]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [751/3000]: Train loss: 2.3863, Valid loss: 2.7968\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [752/3000]: 100%|██████████| 9/9 [00:00<00:00, 90.19it/s, loss=2.2]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [752/3000]: Train loss: 2.2728, Valid loss: 2.6953\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [753/3000]: 100%|██████████| 9/9 [00:00<00:00, 83.21it/s, loss=2.56]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [753/3000]: Train loss: 2.2409, Valid loss: 2.3074\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [754/3000]: 100%|██████████| 9/9 [00:00<00:00, 78.28it/s, loss=2.36]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [754/3000]: Train loss: 2.2006, Valid loss: 2.4795\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [755/3000]: 100%|██████████| 9/9 [00:00<00:00, 92.38it/s, loss=2.36]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [755/3000]: Train loss: 2.1878, Valid loss: 4.3938\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [756/3000]: 100%|██████████| 9/9 [00:00<00:00, 79.99it/s, loss=3.3]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [756/3000]: Train loss: 2.9412, Valid loss: 2.2368\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [757/3000]: 100%|██████████| 9/9 [00:00<00:00, 85.55it/s, loss=3.34]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [757/3000]: Train loss: 3.0926, Valid loss: 2.0056\n", + "Saving model with loss 2.006...\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [758/3000]: 100%|██████████| 9/9 [00:00<00:00, 81.58it/s, loss=2.88]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [758/3000]: Train loss: 2.5417, Valid loss: 4.1278\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [759/3000]: 100%|██████████| 9/9 [00:00<00:00, 75.55it/s, loss=3.68]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [759/3000]: Train loss: 2.8302, Valid loss: 3.1804\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [760/3000]: 100%|██████████| 9/9 [00:00<00:00, 83.29it/s, loss=4.09]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [760/3000]: Train loss: 3.5235, Valid loss: 3.1352\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [761/3000]: 100%|██████████| 9/9 [00:00<00:00, 92.55it/s, loss=1.82]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [761/3000]: Train loss: 2.6848, Valid loss: 2.8343\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [762/3000]: 100%|██████████| 9/9 [00:00<00:00, 86.52it/s, loss=1.96]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [762/3000]: Train loss: 2.1252, Valid loss: 2.5088\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [763/3000]: 100%|██████████| 9/9 [00:00<00:00, 72.46it/s, loss=2.68]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [763/3000]: Train loss: 2.2089, Valid loss: 3.5312\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [764/3000]: 100%|██████████| 9/9 [00:00<00:00, 90.73it/s, loss=3.38]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [764/3000]: Train loss: 2.6971, Valid loss: 2.9652\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [765/3000]: 100%|██████████| 9/9 [00:00<00:00, 77.31it/s, loss=1.85]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [765/3000]: Train loss: 2.4587, Valid loss: 2.3187\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [766/3000]: 100%|██████████| 9/9 [00:00<00:00, 90.92it/s, loss=1.97]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [766/3000]: Train loss: 2.0723, Valid loss: 2.0449\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [767/3000]: 100%|██████████| 9/9 [00:00<00:00, 77.24it/s, loss=2.86]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [767/3000]: Train loss: 2.2693, Valid loss: 2.3833\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [768/3000]: 100%|██████████| 9/9 [00:00<00:00, 92.13it/s, loss=2.04]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [768/3000]: Train loss: 2.2991, Valid loss: 4.3948\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [769/3000]: 100%|██████████| 9/9 [00:00<00:00, 91.56it/s, loss=4.31]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [769/3000]: Train loss: 3.0139, Valid loss: 2.3133\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [770/3000]: 100%|██████████| 9/9 [00:00<00:00, 87.72it/s, loss=1.85]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [770/3000]: Train loss: 2.6722, Valid loss: 4.0894\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [771/3000]: 100%|██████████| 9/9 [00:00<00:00, 78.27it/s, loss=3.76]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [771/3000]: Train loss: 2.9648, Valid loss: 2.3354\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [772/3000]: 100%|██████████| 9/9 [00:00<00:00, 77.57it/s, loss=2.16]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [772/3000]: Train loss: 2.2789, Valid loss: 2.5318\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [773/3000]: 100%|██████████| 9/9 [00:00<00:00, 71.50it/s, loss=1.83]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [773/3000]: Train loss: 2.1787, Valid loss: 2.2302\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [774/3000]: 100%|██████████| 9/9 [00:00<00:00, 97.16it/s, loss=2.53]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [774/3000]: Train loss: 2.1616, Valid loss: 2.8262\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [775/3000]: 100%|██████████| 9/9 [00:00<00:00, 78.79it/s, loss=1.6]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [775/3000]: Train loss: 2.2408, Valid loss: 2.9589\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [776/3000]: 100%|██████████| 9/9 [00:00<00:00, 77.55it/s, loss=1.81]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [776/3000]: Train loss: 2.1131, Valid loss: 2.0886\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [777/3000]: 100%|██████████| 9/9 [00:00<00:00, 73.00it/s, loss=2.81]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [777/3000]: Train loss: 2.0725, Valid loss: 2.0656\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [778/3000]: 100%|██████████| 9/9 [00:00<00:00, 84.38it/s, loss=2.68]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [778/3000]: Train loss: 2.1800, Valid loss: 2.1977\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [779/3000]: 100%|██████████| 9/9 [00:00<00:00, 91.25it/s, loss=1.75]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [779/3000]: Train loss: 2.3609, Valid loss: 2.5520\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [780/3000]: 100%|██████████| 9/9 [00:00<00:00, 86.98it/s, loss=1.97]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [780/3000]: Train loss: 2.2054, Valid loss: 2.2317\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [781/3000]: 100%|██████████| 9/9 [00:00<00:00, 77.76it/s, loss=2.23]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [781/3000]: Train loss: 2.4600, Valid loss: 3.5421\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [782/3000]: 100%|██████████| 9/9 [00:00<00:00, 91.59it/s, loss=3.52]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [782/3000]: Train loss: 4.2549, Valid loss: 2.2227\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [783/3000]: 100%|██████████| 9/9 [00:00<00:00, 75.41it/s, loss=2.66]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [783/3000]: Train loss: 2.9930, Valid loss: 5.8177\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [784/3000]: 100%|██████████| 9/9 [00:00<00:00, 83.79it/s, loss=4.44]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [784/3000]: Train loss: 4.1692, Valid loss: 2.2403\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [785/3000]: 100%|██████████| 9/9 [00:00<00:00, 90.59it/s, loss=4.32]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [785/3000]: Train loss: 3.1116, Valid loss: 3.3281\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [786/3000]: 100%|██████████| 9/9 [00:00<00:00, 78.26it/s, loss=2.22]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [786/3000]: Train loss: 3.4126, Valid loss: 4.7294\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [787/3000]: 100%|██████████| 9/9 [00:00<00:00, 86.84it/s, loss=3.02]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [787/3000]: Train loss: 2.9617, Valid loss: 2.7887\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [788/3000]: 100%|██████████| 9/9 [00:00<00:00, 90.79it/s, loss=2.73]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [788/3000]: Train loss: 2.5833, Valid loss: 2.3164\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [789/3000]: 100%|██████████| 9/9 [00:00<00:00, 85.86it/s, loss=1.65]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [789/3000]: Train loss: 2.5098, Valid loss: 3.2451\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [790/3000]: 100%|██████████| 9/9 [00:00<00:00, 95.61it/s, loss=2.48]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [790/3000]: Train loss: 2.3870, Valid loss: 2.3456\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [791/3000]: 100%|██████████| 9/9 [00:00<00:00, 80.86it/s, loss=3.49]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [791/3000]: Train loss: 2.7319, Valid loss: 5.5246\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [792/3000]: 100%|██████████| 9/9 [00:00<00:00, 90.51it/s, loss=2.13]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [792/3000]: Train loss: 3.8125, Valid loss: 3.5039\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [793/3000]: 100%|██████████| 9/9 [00:00<00:00, 78.34it/s, loss=2.49]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [793/3000]: Train loss: 2.6162, Valid loss: 2.4483\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [794/3000]: 100%|██████████| 9/9 [00:00<00:00, 82.93it/s, loss=2.14]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [794/3000]: Train loss: 2.2050, Valid loss: 2.8519\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [795/3000]: 100%|██████████| 9/9 [00:00<00:00, 85.77it/s, loss=3.34]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [795/3000]: Train loss: 2.3792, Valid loss: 2.4993\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [796/3000]: 100%|██████████| 9/9 [00:00<00:00, 92.81it/s, loss=2.23]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [796/3000]: Train loss: 2.3069, Valid loss: 2.5252\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [797/3000]: 100%|██████████| 9/9 [00:00<00:00, 73.61it/s, loss=1.66]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [797/3000]: Train loss: 2.1116, Valid loss: 2.5650\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [798/3000]: 100%|██████████| 9/9 [00:00<00:00, 79.47it/s, loss=2.08]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [798/3000]: Train loss: 2.1347, Valid loss: 2.3246\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [799/3000]: 100%|██████████| 9/9 [00:00<00:00, 96.24it/s, loss=1.55]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [799/3000]: Train loss: 2.1265, Valid loss: 1.9271\n", + "Saving model with loss 1.927...\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [800/3000]: 100%|██████████| 9/9 [00:00<00:00, 92.78it/s, loss=2.75]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [800/3000]: Train loss: 2.0805, Valid loss: 2.5318\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [801/3000]: 100%|██████████| 9/9 [00:00<00:00, 85.64it/s, loss=2.98]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [801/3000]: Train loss: 2.3856, Valid loss: 2.4075\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [802/3000]: 100%|██████████| 9/9 [00:00<00:00, 82.39it/s, loss=2.21]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [802/3000]: Train loss: 2.7554, Valid loss: 4.9569\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [803/3000]: 100%|██████████| 9/9 [00:00<00:00, 76.24it/s, loss=3.34]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [803/3000]: Train loss: 2.7603, Valid loss: 2.5180\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [804/3000]: 100%|██████████| 9/9 [00:00<00:00, 86.59it/s, loss=2.19]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [804/3000]: Train loss: 2.2372, Valid loss: 2.3064\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [805/3000]: 100%|██████████| 9/9 [00:00<00:00, 92.90it/s, loss=1.83]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [805/3000]: Train loss: 2.1144, Valid loss: 2.1779\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [806/3000]: 100%|██████████| 9/9 [00:00<00:00, 85.35it/s, loss=3.29]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [806/3000]: Train loss: 2.3426, Valid loss: 2.6774\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [807/3000]: 100%|██████████| 9/9 [00:00<00:00, 85.42it/s, loss=1.32]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [807/3000]: Train loss: 2.9800, Valid loss: 3.2533\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [808/3000]: 100%|██████████| 9/9 [00:00<00:00, 81.05it/s, loss=2.13]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [808/3000]: Train loss: 2.2229, Valid loss: 1.9915\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [809/3000]: 100%|██████████| 9/9 [00:00<00:00, 70.56it/s, loss=1.88]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [809/3000]: Train loss: 2.2037, Valid loss: 2.2927\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [810/3000]: 100%|██████████| 9/9 [00:00<00:00, 75.66it/s, loss=2.62]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [810/3000]: Train loss: 2.1896, Valid loss: 2.3471\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [811/3000]: 100%|██████████| 9/9 [00:00<00:00, 74.28it/s, loss=1.76]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [811/3000]: Train loss: 2.0300, Valid loss: 2.4161\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [812/3000]: 100%|██████████| 9/9 [00:00<00:00, 82.22it/s, loss=2.82]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [812/3000]: Train loss: 2.1873, Valid loss: 2.7962\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [813/3000]: 100%|██████████| 9/9 [00:00<00:00, 79.24it/s, loss=2.38]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [813/3000]: Train loss: 2.5141, Valid loss: 2.4116\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [814/3000]: 100%|██████████| 9/9 [00:00<00:00, 91.85it/s, loss=2.89]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [814/3000]: Train loss: 3.2306, Valid loss: 3.1286\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [815/3000]: 100%|██████████| 9/9 [00:00<00:00, 94.43it/s, loss=2.44]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [815/3000]: Train loss: 2.7566, Valid loss: 3.7469\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [816/3000]: 100%|██████████| 9/9 [00:00<00:00, 80.54it/s, loss=2.37]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [816/3000]: Train loss: 2.2489, Valid loss: 2.3342\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [817/3000]: 100%|██████████| 9/9 [00:00<00:00, 76.54it/s, loss=1.38]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [817/3000]: Train loss: 2.1012, Valid loss: 2.0867\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [818/3000]: 100%|██████████| 9/9 [00:00<00:00, 84.01it/s, loss=2.14]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [818/3000]: Train loss: 1.9881, Valid loss: 2.5827\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [819/3000]: 100%|██████████| 9/9 [00:00<00:00, 90.03it/s, loss=2.29]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [819/3000]: Train loss: 2.0257, Valid loss: 3.3691\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [820/3000]: 100%|██████████| 9/9 [00:00<00:00, 84.93it/s, loss=1.84]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [820/3000]: Train loss: 2.3318, Valid loss: 2.3723\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [821/3000]: 100%|██████████| 9/9 [00:00<00:00, 79.21it/s, loss=1.87]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [821/3000]: Train loss: 2.2691, Valid loss: 2.5148\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [822/3000]: 100%|██████████| 9/9 [00:00<00:00, 97.20it/s, loss=2]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [822/3000]: Train loss: 2.1552, Valid loss: 2.7301\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [823/3000]: 100%|██████████| 9/9 [00:00<00:00, 88.78it/s, loss=3.33]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [823/3000]: Train loss: 2.5324, Valid loss: 3.6366\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [824/3000]: 100%|██████████| 9/9 [00:00<00:00, 71.54it/s, loss=2.5]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [824/3000]: Train loss: 2.3406, Valid loss: 2.1745\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [825/3000]: 100%|██████████| 9/9 [00:00<00:00, 82.83it/s, loss=1.73]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [825/3000]: Train loss: 2.2964, Valid loss: 2.3780\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [826/3000]: 100%|██████████| 9/9 [00:00<00:00, 80.79it/s, loss=1.8]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [826/3000]: Train loss: 1.9988, Valid loss: 2.5302\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [827/3000]: 100%|██████████| 9/9 [00:00<00:00, 77.02it/s, loss=2.59]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [827/3000]: Train loss: 2.0729, Valid loss: 2.2791\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [828/3000]: 100%|██████████| 9/9 [00:00<00:00, 66.91it/s, loss=2.58]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [828/3000]: Train loss: 2.2773, Valid loss: 3.5011\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [829/3000]: 100%|██████████| 9/9 [00:00<00:00, 78.86it/s, loss=3.68]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [829/3000]: Train loss: 3.0928, Valid loss: 6.6994\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [830/3000]: 100%|██████████| 9/9 [00:00<00:00, 95.37it/s, loss=3.48]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [830/3000]: Train loss: 3.3702, Valid loss: 3.3844\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [831/3000]: 100%|██████████| 9/9 [00:00<00:00, 99.98it/s, loss=2.99]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [831/3000]: Train loss: 2.5378, Valid loss: 2.4294\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [832/3000]: 100%|██████████| 9/9 [00:00<00:00, 98.09it/s, loss=2.15]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [832/3000]: Train loss: 2.1700, Valid loss: 2.3347\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [833/3000]: 100%|██████████| 9/9 [00:00<00:00, 27.59it/s, loss=1.93]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [833/3000]: Train loss: 2.1401, Valid loss: 3.3164\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [834/3000]: 100%|██████████| 9/9 [00:00<00:00, 70.28it/s, loss=3.55]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [834/3000]: Train loss: 3.0614, Valid loss: 2.4845\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [835/3000]: 100%|██████████| 9/9 [00:00<00:00, 76.43it/s, loss=1.33]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [835/3000]: Train loss: 2.7310, Valid loss: 3.0333\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [836/3000]: 100%|██████████| 9/9 [00:00<00:00, 74.94it/s, loss=1.8]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [836/3000]: Train loss: 2.1159, Valid loss: 2.9415\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [837/3000]: 100%|██████████| 9/9 [00:00<00:00, 91.04it/s, loss=1.7]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [837/3000]: Train loss: 2.1596, Valid loss: 2.1337\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [838/3000]: 100%|██████████| 9/9 [00:00<00:00, 78.44it/s, loss=2.4]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [838/3000]: Train loss: 2.1362, Valid loss: 2.5503\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [839/3000]: 100%|██████████| 9/9 [00:00<00:00, 86.58it/s, loss=1.73]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [839/3000]: Train loss: 1.9749, Valid loss: 1.9835\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [840/3000]: 100%|██████████| 9/9 [00:00<00:00, 83.12it/s, loss=2.12]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [840/3000]: Train loss: 2.4268, Valid loss: 3.6997\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [841/3000]: 100%|██████████| 9/9 [00:00<00:00, 92.10it/s, loss=1.76]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [841/3000]: Train loss: 2.4254, Valid loss: 3.8676\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [842/3000]: 100%|██████████| 9/9 [00:00<00:00, 72.83it/s, loss=3.48]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [842/3000]: Train loss: 3.4052, Valid loss: 3.4764\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [843/3000]: 100%|██████████| 9/9 [00:00<00:00, 78.79it/s, loss=2.78]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [843/3000]: Train loss: 2.4428, Valid loss: 2.2842\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [844/3000]: 100%|██████████| 9/9 [00:00<00:00, 87.39it/s, loss=2.41]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [844/3000]: Train loss: 2.3357, Valid loss: 2.7472\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [845/3000]: 100%|██████████| 9/9 [00:00<00:00, 86.20it/s, loss=2.24]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [845/3000]: Train loss: 2.1522, Valid loss: 2.7681\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [846/3000]: 100%|██████████| 9/9 [00:00<00:00, 71.94it/s, loss=2.67]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [846/3000]: Train loss: 2.4198, Valid loss: 2.4574\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [847/3000]: 100%|██████████| 9/9 [00:00<00:00, 78.41it/s, loss=1.64]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [847/3000]: Train loss: 2.1592, Valid loss: 2.9632\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [848/3000]: 100%|██████████| 9/9 [00:00<00:00, 79.71it/s, loss=3.09]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [848/3000]: Train loss: 2.7779, Valid loss: 6.5302\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [849/3000]: 100%|██████████| 9/9 [00:00<00:00, 82.79it/s, loss=4.46]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [849/3000]: Train loss: 4.2970, Valid loss: 5.5490\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [850/3000]: 100%|██████████| 9/9 [00:00<00:00, 95.24it/s, loss=1.72]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [850/3000]: Train loss: 3.1741, Valid loss: 2.8981\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [851/3000]: 100%|██████████| 9/9 [00:00<00:00, 90.47it/s, loss=2.59]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [851/3000]: Train loss: 2.3556, Valid loss: 4.6231\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [852/3000]: 100%|██████████| 9/9 [00:00<00:00, 85.13it/s, loss=2.83]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [852/3000]: Train loss: 3.4664, Valid loss: 3.2766\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [853/3000]: 100%|██████████| 9/9 [00:00<00:00, 77.41it/s, loss=3.24]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [853/3000]: Train loss: 3.1204, Valid loss: 3.0106\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [854/3000]: 100%|██████████| 9/9 [00:00<00:00, 72.84it/s, loss=1.73]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [854/3000]: Train loss: 2.5248, Valid loss: 2.6808\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [855/3000]: 100%|██████████| 9/9 [00:00<00:00, 76.49it/s, loss=1.86]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [855/3000]: Train loss: 2.6559, Valid loss: 3.2108\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [856/3000]: 100%|██████████| 9/9 [00:00<00:00, 82.79it/s, loss=1.94]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [856/3000]: Train loss: 2.4069, Valid loss: 2.4954\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [857/3000]: 100%|██████████| 9/9 [00:00<00:00, 86.72it/s, loss=1.66]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [857/3000]: Train loss: 2.0790, Valid loss: 2.0174\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [858/3000]: 100%|██████████| 9/9 [00:00<00:00, 85.08it/s, loss=2.32]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [858/3000]: Train loss: 2.1023, Valid loss: 2.4891\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [859/3000]: 100%|██████████| 9/9 [00:00<00:00, 85.44it/s, loss=4.24]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [859/3000]: Train loss: 2.6051, Valid loss: 2.5995\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [860/3000]: 100%|██████████| 9/9 [00:00<00:00, 93.32it/s, loss=1.72]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [860/3000]: Train loss: 2.4962, Valid loss: 1.9409\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [861/3000]: 100%|██████████| 9/9 [00:00<00:00, 99.50it/s, loss=1.51]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [861/3000]: Train loss: 1.9669, Valid loss: 2.6938\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [862/3000]: 100%|██████████| 9/9 [00:00<00:00, 82.15it/s, loss=3.28]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [862/3000]: Train loss: 2.5273, Valid loss: 2.5854\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [863/3000]: 100%|██████████| 9/9 [00:00<00:00, 91.00it/s, loss=2.68]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [863/3000]: Train loss: 2.6167, Valid loss: 3.0765\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [864/3000]: 100%|██████████| 9/9 [00:00<00:00, 85.45it/s, loss=1.69]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [864/3000]: Train loss: 2.6654, Valid loss: 2.4279\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [865/3000]: 100%|██████████| 9/9 [00:00<00:00, 86.44it/s, loss=1.91]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [865/3000]: Train loss: 2.1728, Valid loss: 2.4906\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [866/3000]: 100%|██████████| 9/9 [00:00<00:00, 76.32it/s, loss=2.89]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [866/3000]: Train loss: 2.1836, Valid loss: 2.5089\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [867/3000]: 100%|██████████| 9/9 [00:00<00:00, 81.14it/s, loss=1.47]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [867/3000]: Train loss: 2.2711, Valid loss: 2.5775\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [868/3000]: 100%|██████████| 9/9 [00:00<00:00, 89.84it/s, loss=3.5]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [868/3000]: Train loss: 2.4872, Valid loss: 3.2266\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [869/3000]: 100%|██████████| 9/9 [00:00<00:00, 73.33it/s, loss=1.87]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [869/3000]: Train loss: 2.5476, Valid loss: 3.0413\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [870/3000]: 100%|██████████| 9/9 [00:00<00:00, 87.01it/s, loss=3.16]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [870/3000]: Train loss: 2.8294, Valid loss: 2.4574\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [871/3000]: 100%|██████████| 9/9 [00:00<00:00, 74.66it/s, loss=2.62]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [871/3000]: Train loss: 2.7648, Valid loss: 3.7627\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [872/3000]: 100%|██████████| 9/9 [00:00<00:00, 92.39it/s, loss=2.71]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [872/3000]: Train loss: 2.6523, Valid loss: 2.1148\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [873/3000]: 100%|██████████| 9/9 [00:00<00:00, 94.61it/s, loss=2.92]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [873/3000]: Train loss: 2.3125, Valid loss: 4.1013\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [874/3000]: 100%|██████████| 9/9 [00:00<00:00, 73.72it/s, loss=1.91]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [874/3000]: Train loss: 2.7305, Valid loss: 2.1188\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [875/3000]: 100%|██████████| 9/9 [00:00<00:00, 81.50it/s, loss=1.96]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [875/3000]: Train loss: 2.0141, Valid loss: 2.0757\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [876/3000]: 100%|██████████| 9/9 [00:00<00:00, 77.99it/s, loss=2.41]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [876/3000]: Train loss: 2.1243, Valid loss: 2.1909\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [877/3000]: 100%|██████████| 9/9 [00:00<00:00, 85.34it/s, loss=1.77]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [877/3000]: Train loss: 1.9596, Valid loss: 2.6916\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [878/3000]: 100%|██████████| 9/9 [00:00<00:00, 78.82it/s, loss=1.81]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [878/3000]: Train loss: 2.0430, Valid loss: 2.7461\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [879/3000]: 100%|██████████| 9/9 [00:00<00:00, 63.71it/s, loss=2.52]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [879/3000]: Train loss: 2.1890, Valid loss: 2.3214\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [880/3000]: 100%|██████████| 9/9 [00:00<00:00, 70.66it/s, loss=2.06]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [880/3000]: Train loss: 2.2604, Valid loss: 2.2821\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [881/3000]: 100%|██████████| 9/9 [00:00<00:00, 96.81it/s, loss=1.99]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [881/3000]: Train loss: 1.9983, Valid loss: 2.4321\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [882/3000]: 100%|██████████| 9/9 [00:00<00:00, 94.99it/s, loss=2.63]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [882/3000]: Train loss: 2.2390, Valid loss: 1.8994\n", + "Saving model with loss 1.899...\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [883/3000]: 100%|██████████| 9/9 [00:00<00:00, 83.27it/s, loss=1.99]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [883/3000]: Train loss: 2.0119, Valid loss: 3.3893\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [884/3000]: 100%|██████████| 9/9 [00:00<00:00, 99.08it/s, loss=4.12]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [884/3000]: Train loss: 3.2144, Valid loss: 2.5633\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [885/3000]: 100%|██████████| 9/9 [00:00<00:00, 99.42it/s, loss=3.78]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [885/3000]: Train loss: 2.7645, Valid loss: 2.9300\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [886/3000]: 100%|██████████| 9/9 [00:00<00:00, 99.85it/s, loss=1.2]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [886/3000]: Train loss: 2.5876, Valid loss: 2.6069\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [887/3000]: 100%|██████████| 9/9 [00:00<00:00, 89.47it/s, loss=2.74]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [887/3000]: Train loss: 2.2316, Valid loss: 2.2555\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [888/3000]: 100%|██████████| 9/9 [00:00<00:00, 80.21it/s, loss=2.19]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [888/3000]: Train loss: 2.3320, Valid loss: 3.9101\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [889/3000]: 100%|██████████| 9/9 [00:00<00:00, 89.97it/s, loss=1.97]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [889/3000]: Train loss: 2.9474, Valid loss: 4.0524\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [890/3000]: 100%|██████████| 9/9 [00:00<00:00, 75.96it/s, loss=2.65]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [890/3000]: Train loss: 2.6510, Valid loss: 1.8655\n", + "Saving model with loss 1.866...\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [891/3000]: 100%|██████████| 9/9 [00:00<00:00, 94.60it/s, loss=1.9]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [891/3000]: Train loss: 2.1388, Valid loss: 2.7709\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [892/3000]: 100%|██████████| 9/9 [00:00<00:00, 80.43it/s, loss=1.89]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [892/3000]: Train loss: 2.3449, Valid loss: 2.3431\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [893/3000]: 100%|██████████| 9/9 [00:00<00:00, 94.22it/s, loss=2.25]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [893/3000]: Train loss: 2.0594, Valid loss: 2.2145\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [894/3000]: 100%|██████████| 9/9 [00:00<00:00, 99.51it/s, loss=2.39]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [894/3000]: Train loss: 2.2061, Valid loss: 3.6788\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [895/3000]: 100%|██████████| 9/9 [00:00<00:00, 101.50it/s, loss=2.3]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [895/3000]: Train loss: 2.3682, Valid loss: 3.0259\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [896/3000]: 100%|██████████| 9/9 [00:00<00:00, 80.11it/s, loss=2.21]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [896/3000]: Train loss: 2.3997, Valid loss: 2.1155\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [897/3000]: 100%|██████████| 9/9 [00:00<00:00, 86.37it/s, loss=1.96]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [897/3000]: Train loss: 2.4067, Valid loss: 2.3754\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [898/3000]: 100%|██████████| 9/9 [00:00<00:00, 91.87it/s, loss=2.46]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [898/3000]: Train loss: 2.2324, Valid loss: 2.5542\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [899/3000]: 100%|██████████| 9/9 [00:00<00:00, 62.56it/s, loss=2.65]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [899/3000]: Train loss: 2.3801, Valid loss: 2.6868\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [900/3000]: 100%|██████████| 9/9 [00:00<00:00, 81.00it/s, loss=2.93]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [900/3000]: Train loss: 2.2491, Valid loss: 2.3987\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [901/3000]: 100%|██████████| 9/9 [00:00<00:00, 83.00it/s, loss=1.82]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [901/3000]: Train loss: 2.0699, Valid loss: 2.2695\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [902/3000]: 100%|██████████| 9/9 [00:00<00:00, 73.38it/s, loss=2.42]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [902/3000]: Train loss: 2.0134, Valid loss: 2.2696\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [903/3000]: 100%|██████████| 9/9 [00:00<00:00, 79.83it/s, loss=2.43]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [903/3000]: Train loss: 2.0136, Valid loss: 2.0623\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [904/3000]: 100%|██████████| 9/9 [00:00<00:00, 82.63it/s, loss=1.67]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [904/3000]: Train loss: 2.1568, Valid loss: 2.1390\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [905/3000]: 100%|██████████| 9/9 [00:00<00:00, 90.56it/s, loss=1.97]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [905/3000]: Train loss: 2.1386, Valid loss: 3.1726\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [906/3000]: 100%|██████████| 9/9 [00:00<00:00, 86.29it/s, loss=2.69]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [906/3000]: Train loss: 2.0941, Valid loss: 2.9118\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [907/3000]: 100%|██████████| 9/9 [00:00<00:00, 90.77it/s, loss=3.01]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [907/3000]: Train loss: 2.2723, Valid loss: 3.0735\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [908/3000]: 100%|██████████| 9/9 [00:00<00:00, 81.03it/s, loss=1.76]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [908/3000]: Train loss: 2.3947, Valid loss: 2.3762\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [909/3000]: 100%|██████████| 9/9 [00:00<00:00, 87.07it/s, loss=2.3]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [909/3000]: Train loss: 2.1071, Valid loss: 2.2922\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [910/3000]: 100%|██████████| 9/9 [00:00<00:00, 95.39it/s, loss=2.24]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [910/3000]: Train loss: 2.4909, Valid loss: 3.4064\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [911/3000]: 100%|██████████| 9/9 [00:00<00:00, 93.47it/s, loss=2.71]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [911/3000]: Train loss: 2.6505, Valid loss: 2.3406\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [912/3000]: 100%|██████████| 9/9 [00:00<00:00, 73.45it/s, loss=4.52]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [912/3000]: Train loss: 2.9082, Valid loss: 3.0724\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [913/3000]: 100%|██████████| 9/9 [00:00<00:00, 30.44it/s, loss=2.75]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [913/3000]: Train loss: 2.9384, Valid loss: 3.7632\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [914/3000]: 100%|██████████| 9/9 [00:00<00:00, 81.27it/s, loss=4.77]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [914/3000]: Train loss: 3.5041, Valid loss: 3.3147\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [915/3000]: 100%|██████████| 9/9 [00:00<00:00, 73.49it/s, loss=1.68]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [915/3000]: Train loss: 2.6498, Valid loss: 5.4848\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [916/3000]: 100%|██████████| 9/9 [00:00<00:00, 82.67it/s, loss=3.1]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [916/3000]: Train loss: 3.5499, Valid loss: 2.6835\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [917/3000]: 100%|██████████| 9/9 [00:00<00:00, 73.52it/s, loss=1.68]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [917/3000]: Train loss: 3.0441, Valid loss: 3.2629\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [918/3000]: 100%|██████████| 9/9 [00:00<00:00, 70.69it/s, loss=1.8]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [918/3000]: Train loss: 2.0758, Valid loss: 1.9692\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [919/3000]: 100%|██████████| 9/9 [00:00<00:00, 64.23it/s, loss=2.04]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [919/3000]: Train loss: 2.2139, Valid loss: 2.9148\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [920/3000]: 100%|██████████| 9/9 [00:00<00:00, 91.65it/s, loss=2.55]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [920/3000]: Train loss: 2.3617, Valid loss: 2.1199\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [921/3000]: 100%|██████████| 9/9 [00:00<00:00, 74.90it/s, loss=1.92]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [921/3000]: Train loss: 2.0094, Valid loss: 2.2146\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [922/3000]: 100%|██████████| 9/9 [00:00<00:00, 81.45it/s, loss=2.03]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [922/3000]: Train loss: 2.0271, Valid loss: 2.0514\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [923/3000]: 100%|██████████| 9/9 [00:00<00:00, 79.21it/s, loss=2.4]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [923/3000]: Train loss: 2.7538, Valid loss: 4.1808\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [924/3000]: 100%|██████████| 9/9 [00:00<00:00, 83.20it/s, loss=2.51]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [924/3000]: Train loss: 2.4229, Valid loss: 2.4929\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [925/3000]: 100%|██████████| 9/9 [00:00<00:00, 93.22it/s, loss=1.8]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [925/3000]: Train loss: 2.0871, Valid loss: 2.0863\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [926/3000]: 100%|██████████| 9/9 [00:00<00:00, 77.46it/s, loss=1.81]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [926/3000]: Train loss: 1.9263, Valid loss: 3.3704\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [927/3000]: 100%|██████████| 9/9 [00:00<00:00, 87.48it/s, loss=4.68]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [927/3000]: Train loss: 3.2195, Valid loss: 2.1934\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [928/3000]: 100%|██████████| 9/9 [00:00<00:00, 81.23it/s, loss=2.93]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [928/3000]: Train loss: 2.9524, Valid loss: 4.7998\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [929/3000]: 100%|██████████| 9/9 [00:00<00:00, 93.02it/s, loss=2.39]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [929/3000]: Train loss: 3.8852, Valid loss: 7.2963\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [930/3000]: 100%|██████████| 9/9 [00:00<00:00, 80.74it/s, loss=2.78]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [930/3000]: Train loss: 4.8194, Valid loss: 7.3358\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [931/3000]: 100%|██████████| 9/9 [00:00<00:00, 91.32it/s, loss=4.08]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [931/3000]: Train loss: 4.0961, Valid loss: 2.4450\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [932/3000]: 100%|██████████| 9/9 [00:00<00:00, 84.91it/s, loss=2.87]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [932/3000]: Train loss: 2.4766, Valid loss: 3.7648\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [933/3000]: 100%|██████████| 9/9 [00:00<00:00, 82.18it/s, loss=2.36]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [933/3000]: Train loss: 2.0832, Valid loss: 2.5129\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [934/3000]: 100%|██████████| 9/9 [00:00<00:00, 82.38it/s, loss=2.73]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [934/3000]: Train loss: 2.1965, Valid loss: 2.3045\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [935/3000]: 100%|██████████| 9/9 [00:00<00:00, 72.77it/s, loss=1.78]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [935/3000]: Train loss: 2.1194, Valid loss: 2.1405\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [936/3000]: 100%|██████████| 9/9 [00:00<00:00, 85.18it/s, loss=1.81]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [936/3000]: Train loss: 2.3978, Valid loss: 5.8812\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [937/3000]: 100%|██████████| 9/9 [00:00<00:00, 64.39it/s, loss=2.12]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [937/3000]: Train loss: 2.8761, Valid loss: 4.3951\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [938/3000]: 100%|██████████| 9/9 [00:00<00:00, 83.15it/s, loss=2.13]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [938/3000]: Train loss: 2.4705, Valid loss: 3.1398\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [939/3000]: 100%|██████████| 9/9 [00:00<00:00, 83.28it/s, loss=1.71]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [939/3000]: Train loss: 2.0387, Valid loss: 2.1034\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [940/3000]: 100%|██████████| 9/9 [00:00<00:00, 95.03it/s, loss=2.01]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [940/3000]: Train loss: 2.2453, Valid loss: 3.7693\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [941/3000]: 100%|██████████| 9/9 [00:00<00:00, 84.39it/s, loss=2.73]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [941/3000]: Train loss: 2.6891, Valid loss: 2.3142\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [942/3000]: 100%|██████████| 9/9 [00:00<00:00, 72.77it/s, loss=2.28]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [942/3000]: Train loss: 2.2676, Valid loss: 2.7103\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [943/3000]: 100%|██████████| 9/9 [00:00<00:00, 62.36it/s, loss=2.73]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [943/3000]: Train loss: 2.1749, Valid loss: 3.1823\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [944/3000]: 100%|██████████| 9/9 [00:00<00:00, 69.70it/s, loss=2.28]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [944/3000]: Train loss: 2.1452, Valid loss: 2.8646\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [945/3000]: 100%|██████████| 9/9 [00:00<00:00, 97.84it/s, loss=1.75]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [945/3000]: Train loss: 2.0509, Valid loss: 2.0713\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [946/3000]: 100%|██████████| 9/9 [00:00<00:00, 83.94it/s, loss=2.43]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [946/3000]: Train loss: 2.1428, Valid loss: 2.5889\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [947/3000]: 100%|██████████| 9/9 [00:00<00:00, 90.86it/s, loss=2.91]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [947/3000]: Train loss: 2.3680, Valid loss: 3.1993\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [948/3000]: 100%|██████████| 9/9 [00:00<00:00, 87.76it/s, loss=2.42]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [948/3000]: Train loss: 2.6478, Valid loss: 3.4362\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [949/3000]: 100%|██████████| 9/9 [00:00<00:00, 84.46it/s, loss=1.97]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [949/3000]: Train loss: 2.5017, Valid loss: 2.8125\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [950/3000]: 100%|██████████| 9/9 [00:00<00:00, 93.31it/s, loss=4.12]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [950/3000]: Train loss: 2.8402, Valid loss: 4.4943\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [951/3000]: 100%|██████████| 9/9 [00:00<00:00, 71.67it/s, loss=2.28]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [951/3000]: Train loss: 2.6335, Valid loss: 1.9808\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [952/3000]: 100%|██████████| 9/9 [00:00<00:00, 33.72it/s, loss=2.23]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [952/3000]: Train loss: 2.2013, Valid loss: 3.2791\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [953/3000]: 100%|██████████| 9/9 [00:00<00:00, 49.52it/s, loss=1.93]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [953/3000]: Train loss: 2.0537, Valid loss: 2.2033\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [954/3000]: 100%|██████████| 9/9 [00:00<00:00, 69.54it/s, loss=2.07]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [954/3000]: Train loss: 2.0524, Valid loss: 3.0260\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [955/3000]: 100%|██████████| 9/9 [00:00<00:00, 71.85it/s, loss=3.1]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [955/3000]: Train loss: 2.4825, Valid loss: 2.7987\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [956/3000]: 100%|██████████| 9/9 [00:00<00:00, 64.46it/s, loss=1.42]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [956/3000]: Train loss: 2.2088, Valid loss: 2.4564\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [957/3000]: 100%|██████████| 9/9 [00:00<00:00, 30.04it/s, loss=1.83]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [957/3000]: Train loss: 2.0674, Valid loss: 2.3736\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [958/3000]: 100%|██████████| 9/9 [00:00<00:00, 81.22it/s, loss=2.69]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [958/3000]: Train loss: 2.1774, Valid loss: 2.8542\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [959/3000]: 100%|██████████| 9/9 [00:00<00:00, 71.07it/s, loss=2.34]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [959/3000]: Train loss: 2.7230, Valid loss: 3.0924\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [960/3000]: 100%|██████████| 9/9 [00:00<00:00, 86.84it/s, loss=1.79]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [960/3000]: Train loss: 2.5025, Valid loss: 2.1126\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [961/3000]: 100%|██████████| 9/9 [00:00<00:00, 40.39it/s, loss=2.02]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [961/3000]: Train loss: 2.0010, Valid loss: 2.2725\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [962/3000]: 100%|██████████| 9/9 [00:00<00:00, 41.28it/s, loss=2.52]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [962/3000]: Train loss: 1.9543, Valid loss: 2.4129\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [963/3000]: 100%|██████████| 9/9 [00:00<00:00, 80.71it/s, loss=2.72]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [963/3000]: Train loss: 2.2461, Valid loss: 2.9050\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [964/3000]: 100%|██████████| 9/9 [00:00<00:00, 86.48it/s, loss=1.59]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [964/3000]: Train loss: 2.4138, Valid loss: 3.7543\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [965/3000]: 100%|██████████| 9/9 [00:00<00:00, 83.15it/s, loss=4.44]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [965/3000]: Train loss: 4.0723, Valid loss: 2.5305\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [966/3000]: 100%|██████████| 9/9 [00:00<00:00, 96.41it/s, loss=1.91]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [966/3000]: Train loss: 2.5014, Valid loss: 1.8658\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [967/3000]: 100%|██████████| 9/9 [00:00<00:00, 92.85it/s, loss=1.88]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [967/3000]: Train loss: 2.3448, Valid loss: 2.0422\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [968/3000]: 100%|██████████| 9/9 [00:00<00:00, 97.20it/s, loss=1.69]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [968/3000]: Train loss: 1.9152, Valid loss: 3.0478\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [969/3000]: 100%|██████████| 9/9 [00:00<00:00, 97.80it/s, loss=1.91]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [969/3000]: Train loss: 2.2145, Valid loss: 3.5928\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [970/3000]: 100%|██████████| 9/9 [00:00<00:00, 82.75it/s, loss=1.62]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [970/3000]: Train loss: 2.7094, Valid loss: 3.1508\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [971/3000]: 100%|██████████| 9/9 [00:00<00:00, 95.97it/s, loss=3.96]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [971/3000]: Train loss: 2.5107, Valid loss: 4.0072\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [972/3000]: 100%|██████████| 9/9 [00:00<00:00, 81.79it/s, loss=2.45]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [972/3000]: Train loss: 2.4170, Valid loss: 2.0086\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [973/3000]: 100%|██████████| 9/9 [00:00<00:00, 93.76it/s, loss=2.04]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [973/3000]: Train loss: 2.1308, Valid loss: 2.4113\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [974/3000]: 100%|██████████| 9/9 [00:00<00:00, 98.18it/s, loss=2.21]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [974/3000]: Train loss: 2.1108, Valid loss: 1.9834\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [975/3000]: 100%|██████████| 9/9 [00:00<00:00, 92.26it/s, loss=1.87]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [975/3000]: Train loss: 1.9826, Valid loss: 2.3178\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [976/3000]: 100%|██████████| 9/9 [00:00<00:00, 97.63it/s, loss=2.54]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [976/3000]: Train loss: 2.3080, Valid loss: 2.5055\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [977/3000]: 100%|██████████| 9/9 [00:00<00:00, 95.87it/s, loss=2.08]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [977/3000]: Train loss: 2.1176, Valid loss: 2.4202\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [978/3000]: 100%|██████████| 9/9 [00:00<00:00, 98.25it/s, loss=2.55]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [978/3000]: Train loss: 2.1344, Valid loss: 2.2198\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [979/3000]: 100%|██████████| 9/9 [00:00<00:00, 94.97it/s, loss=1.72]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [979/3000]: Train loss: 1.9718, Valid loss: 1.9694\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [980/3000]: 100%|██████████| 9/9 [00:00<00:00, 82.51it/s, loss=2.11]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [980/3000]: Train loss: 1.9883, Valid loss: 2.4143\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [981/3000]: 100%|██████████| 9/9 [00:00<00:00, 84.64it/s, loss=1.96]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [981/3000]: Train loss: 1.9652, Valid loss: 4.2776\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [982/3000]: 100%|██████████| 9/9 [00:00<00:00, 70.24it/s, loss=1.93]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [982/3000]: Train loss: 2.3692, Valid loss: 1.9951\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [983/3000]: 100%|██████████| 9/9 [00:00<00:00, 78.13it/s, loss=2.19]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [983/3000]: Train loss: 2.2706, Valid loss: 2.3390\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [984/3000]: 100%|██████████| 9/9 [00:00<00:00, 65.17it/s, loss=2.17]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [984/3000]: Train loss: 2.8773, Valid loss: 3.3431\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [985/3000]: 100%|██████████| 9/9 [00:00<00:00, 67.23it/s, loss=1.48]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [985/3000]: Train loss: 2.0221, Valid loss: 2.1252\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [986/3000]: 100%|██████████| 9/9 [00:00<00:00, 94.39it/s, loss=2.39]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [986/3000]: Train loss: 1.9778, Valid loss: 2.0505\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [987/3000]: 100%|██████████| 9/9 [00:00<00:00, 68.75it/s, loss=2.3]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [987/3000]: Train loss: 1.9789, Valid loss: 2.5463\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [988/3000]: 100%|██████████| 9/9 [00:00<00:00, 85.90it/s, loss=1.67]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [988/3000]: Train loss: 1.9331, Valid loss: 2.0761\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [989/3000]: 100%|██████████| 9/9 [00:00<00:00, 91.85it/s, loss=2.06]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [989/3000]: Train loss: 1.9568, Valid loss: 2.0866\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [990/3000]: 100%|██████████| 9/9 [00:00<00:00, 75.83it/s, loss=1.83]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [990/3000]: Train loss: 2.0339, Valid loss: 2.0961\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [991/3000]: 100%|██████████| 9/9 [00:00<00:00, 80.26it/s, loss=1.89]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [991/3000]: Train loss: 1.9088, Valid loss: 2.0609\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [992/3000]: 100%|██████████| 9/9 [00:00<00:00, 81.96it/s, loss=1.52]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [992/3000]: Train loss: 1.9831, Valid loss: 2.3941\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [993/3000]: 100%|██████████| 9/9 [00:00<00:00, 75.30it/s, loss=1.69]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [993/3000]: Train loss: 2.0154, Valid loss: 2.4396\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [994/3000]: 100%|██████████| 9/9 [00:00<00:00, 82.60it/s, loss=2.02]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [994/3000]: Train loss: 2.1410, Valid loss: 2.2497\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [995/3000]: 100%|██████████| 9/9 [00:00<00:00, 28.45it/s, loss=1.9]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [995/3000]: Train loss: 1.9522, Valid loss: 2.3503\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [996/3000]: 100%|██████████| 9/9 [00:00<00:00, 77.98it/s, loss=2.37]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [996/3000]: Train loss: 2.0230, Valid loss: 3.1901\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [997/3000]: 100%|██████████| 9/9 [00:00<00:00, 83.99it/s, loss=2.3]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [997/3000]: Train loss: 2.3264, Valid loss: 2.7104\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [998/3000]: 100%|██████████| 9/9 [00:00<00:00, 91.13it/s, loss=1.64]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [998/3000]: Train loss: 1.9885, Valid loss: 2.2395\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [999/3000]: 100%|██████████| 9/9 [00:00<00:00, 96.13it/s, loss=1.63]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [999/3000]: Train loss: 2.0250, Valid loss: 2.3162\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1000/3000]: 100%|██████████| 9/9 [00:00<00:00, 93.50it/s, loss=1.83]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1000/3000]: Train loss: 1.9987, Valid loss: 3.0802\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1001/3000]: 100%|██████████| 9/9 [00:00<00:00, 100.44it/s, loss=1.87]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1001/3000]: Train loss: 2.4063, Valid loss: 3.8003\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1002/3000]: 100%|██████████| 9/9 [00:00<00:00, 97.35it/s, loss=1.96]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1002/3000]: Train loss: 2.3583, Valid loss: 2.1770\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1003/3000]: 100%|██████████| 9/9 [00:00<00:00, 94.44it/s, loss=2.41]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1003/3000]: Train loss: 2.2540, Valid loss: 2.0715\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1004/3000]: 100%|██████████| 9/9 [00:00<00:00, 92.17it/s, loss=2.63]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1004/3000]: Train loss: 2.1473, Valid loss: 2.9766\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1005/3000]: 100%|██████████| 9/9 [00:00<00:00, 76.23it/s, loss=2.05]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1005/3000]: Train loss: 2.4543, Valid loss: 2.4079\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1006/3000]: 100%|██████████| 9/9 [00:00<00:00, 85.82it/s, loss=1.9]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1006/3000]: Train loss: 2.0063, Valid loss: 2.6190\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1007/3000]: 100%|██████████| 9/9 [00:00<00:00, 86.33it/s, loss=2.1]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1007/3000]: Train loss: 2.1568, Valid loss: 2.8640\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1008/3000]: 100%|██████████| 9/9 [00:00<00:00, 80.38it/s, loss=1.63]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1008/3000]: Train loss: 2.1419, Valid loss: 2.5436\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1009/3000]: 100%|██████████| 9/9 [00:00<00:00, 90.06it/s, loss=2.42]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1009/3000]: Train loss: 2.1312, Valid loss: 2.1208\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1010/3000]: 100%|██████████| 9/9 [00:00<00:00, 74.22it/s, loss=1.59]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1010/3000]: Train loss: 2.0151, Valid loss: 2.6966\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1011/3000]: 100%|██████████| 9/9 [00:00<00:00, 90.89it/s, loss=1.77]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1011/3000]: Train loss: 2.0970, Valid loss: 2.1983\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1012/3000]: 100%|██████████| 9/9 [00:00<00:00, 82.92it/s, loss=2.91]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1012/3000]: Train loss: 2.5448, Valid loss: 3.7331\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1013/3000]: 100%|██████████| 9/9 [00:00<00:00, 94.06it/s, loss=3.47]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1013/3000]: Train loss: 2.7780, Valid loss: 1.9809\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1014/3000]: 100%|██████████| 9/9 [00:00<00:00, 88.09it/s, loss=1.42]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1014/3000]: Train loss: 2.0813, Valid loss: 1.9204\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1015/3000]: 100%|██████████| 9/9 [00:00<00:00, 85.58it/s, loss=2.09]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1015/3000]: Train loss: 1.9272, Valid loss: 4.0480\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1016/3000]: 100%|██████████| 9/9 [00:00<00:00, 84.84it/s, loss=3.03]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1016/3000]: Train loss: 2.7544, Valid loss: 2.2074\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1017/3000]: 100%|██████████| 9/9 [00:00<00:00, 87.28it/s, loss=2.01]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1017/3000]: Train loss: 2.0908, Valid loss: 2.0794\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1018/3000]: 100%|██████████| 9/9 [00:00<00:00, 92.13it/s, loss=2.55]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1018/3000]: Train loss: 2.1453, Valid loss: 2.1348\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1019/3000]: 100%|██████████| 9/9 [00:00<00:00, 78.56it/s, loss=2.51]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1019/3000]: Train loss: 2.1382, Valid loss: 3.5728\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1020/3000]: 100%|██████████| 9/9 [00:00<00:00, 85.86it/s, loss=1.78]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1020/3000]: Train loss: 2.3271, Valid loss: 2.0523\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1021/3000]: 100%|██████████| 9/9 [00:00<00:00, 93.28it/s, loss=2.31]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1021/3000]: Train loss: 1.9671, Valid loss: 2.3647\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1022/3000]: 100%|██████████| 9/9 [00:00<00:00, 91.79it/s, loss=2.34]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1022/3000]: Train loss: 2.2733, Valid loss: 2.3128\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1023/3000]: 100%|██████████| 9/9 [00:00<00:00, 95.95it/s, loss=2.73]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1023/3000]: Train loss: 2.0178, Valid loss: 2.1516\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1024/3000]: 100%|██████████| 9/9 [00:00<00:00, 80.93it/s, loss=2.31]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1024/3000]: Train loss: 2.1405, Valid loss: 2.7382\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1025/3000]: 100%|██████████| 9/9 [00:00<00:00, 90.83it/s, loss=1.75]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1025/3000]: Train loss: 2.1489, Valid loss: 2.2944\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1026/3000]: 100%|██████████| 9/9 [00:00<00:00, 77.22it/s, loss=2.35]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1026/3000]: Train loss: 1.9950, Valid loss: 2.2836\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1027/3000]: 100%|██████████| 9/9 [00:00<00:00, 71.05it/s, loss=1.4]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1027/3000]: Train loss: 1.8271, Valid loss: 2.5746\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1028/3000]: 100%|██████████| 9/9 [00:00<00:00, 81.84it/s, loss=1.82]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1028/3000]: Train loss: 1.9128, Valid loss: 1.8517\n", + "Saving model with loss 1.852...\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1029/3000]: 100%|██████████| 9/9 [00:00<00:00, 61.22it/s, loss=2.07]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1029/3000]: Train loss: 1.9766, Valid loss: 2.7722\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1030/3000]: 100%|██████████| 9/9 [00:00<00:00, 82.25it/s, loss=1.55]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1030/3000]: Train loss: 1.9679, Valid loss: 1.7509\n", + "Saving model with loss 1.751...\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1031/3000]: 100%|██████████| 9/9 [00:00<00:00, 85.07it/s, loss=1.59]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1031/3000]: Train loss: 1.9113, Valid loss: 2.0578\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1032/3000]: 100%|██████████| 9/9 [00:00<00:00, 81.59it/s, loss=2.04]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1032/3000]: Train loss: 2.0085, Valid loss: 1.9539\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1033/3000]: 100%|██████████| 9/9 [00:00<00:00, 69.87it/s, loss=1.43]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1033/3000]: Train loss: 2.0172, Valid loss: 2.1456\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1034/3000]: 100%|██████████| 9/9 [00:00<00:00, 69.17it/s, loss=1.39]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1034/3000]: Train loss: 1.9396, Valid loss: 2.2702\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1035/3000]: 100%|██████████| 9/9 [00:00<00:00, 77.55it/s, loss=1.75]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1035/3000]: Train loss: 2.3108, Valid loss: 2.0772\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1036/3000]: 100%|██████████| 9/9 [00:00<00:00, 85.74it/s, loss=2.73]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1036/3000]: Train loss: 2.1021, Valid loss: 2.9708\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1037/3000]: 100%|██████████| 9/9 [00:00<00:00, 96.39it/s, loss=2.14]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1037/3000]: Train loss: 1.9938, Valid loss: 2.7187\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1038/3000]: 100%|██████████| 9/9 [00:00<00:00, 94.29it/s, loss=2.35]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1038/3000]: Train loss: 2.0077, Valid loss: 2.0984\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1039/3000]: 100%|██████████| 9/9 [00:00<00:00, 89.90it/s, loss=1.6]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1039/3000]: Train loss: 2.1290, Valid loss: 2.5362\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1040/3000]: 100%|██████████| 9/9 [00:00<00:00, 85.87it/s, loss=1.94]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1040/3000]: Train loss: 2.1271, Valid loss: 1.9845\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1041/3000]: 100%|██████████| 9/9 [00:00<00:00, 91.03it/s, loss=1.94]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1041/3000]: Train loss: 2.0463, Valid loss: 2.7205\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1042/3000]: 100%|██████████| 9/9 [00:00<00:00, 93.08it/s, loss=2.17]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1042/3000]: Train loss: 1.9061, Valid loss: 2.5048\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1043/3000]: 100%|██████████| 9/9 [00:00<00:00, 90.74it/s, loss=2.26]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1043/3000]: Train loss: 1.9163, Valid loss: 2.0038\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1044/3000]: 100%|██████████| 9/9 [00:00<00:00, 74.27it/s, loss=2.31]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1044/3000]: Train loss: 1.9794, Valid loss: 2.2592\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1045/3000]: 100%|██████████| 9/9 [00:00<00:00, 79.36it/s, loss=2.76]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1045/3000]: Train loss: 2.1429, Valid loss: 2.2464\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1046/3000]: 100%|██████████| 9/9 [00:00<00:00, 94.32it/s, loss=2.56]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1046/3000]: Train loss: 2.2355, Valid loss: 3.4972\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1047/3000]: 100%|██████████| 9/9 [00:00<00:00, 79.82it/s, loss=2.59]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1047/3000]: Train loss: 2.4169, Valid loss: 3.3791\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1048/3000]: 100%|██████████| 9/9 [00:00<00:00, 74.83it/s, loss=1.81]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1048/3000]: Train loss: 2.5443, Valid loss: 4.4864\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1049/3000]: 100%|██████████| 9/9 [00:00<00:00, 69.00it/s, loss=3.45]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1049/3000]: Train loss: 3.1802, Valid loss: 2.4339\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1050/3000]: 100%|██████████| 9/9 [00:00<00:00, 80.92it/s, loss=2.41]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1050/3000]: Train loss: 2.2613, Valid loss: 2.3549\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1051/3000]: 100%|██████████| 9/9 [00:00<00:00, 85.08it/s, loss=2.23]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1051/3000]: Train loss: 2.0711, Valid loss: 2.2711\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1052/3000]: 100%|██████████| 9/9 [00:00<00:00, 75.87it/s, loss=2.02]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1052/3000]: Train loss: 2.0508, Valid loss: 2.6453\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1053/3000]: 100%|██████████| 9/9 [00:00<00:00, 77.90it/s, loss=2.24]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1053/3000]: Train loss: 2.1760, Valid loss: 2.3368\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1054/3000]: 100%|██████████| 9/9 [00:00<00:00, 78.09it/s, loss=1.9]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1054/3000]: Train loss: 2.0077, Valid loss: 3.1555\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1055/3000]: 100%|██████████| 9/9 [00:00<00:00, 97.29it/s, loss=2.13]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1055/3000]: Train loss: 2.4477, Valid loss: 2.1474\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1056/3000]: 100%|██████████| 9/9 [00:00<00:00, 100.63it/s, loss=2.22]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1056/3000]: Train loss: 2.0822, Valid loss: 2.4020\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1057/3000]: 100%|██████████| 9/9 [00:00<00:00, 96.07it/s, loss=1.74]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1057/3000]: Train loss: 2.0071, Valid loss: 1.9189\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1058/3000]: 100%|██████████| 9/9 [00:00<00:00, 85.00it/s, loss=1.82]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1058/3000]: Train loss: 2.0672, Valid loss: 4.3809\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1059/3000]: 100%|██████████| 9/9 [00:00<00:00, 76.41it/s, loss=2.87]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1059/3000]: Train loss: 2.5570, Valid loss: 1.9087\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1060/3000]: 100%|██████████| 9/9 [00:00<00:00, 81.76it/s, loss=2.53]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1060/3000]: Train loss: 2.0920, Valid loss: 2.3944\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1061/3000]: 100%|██████████| 9/9 [00:00<00:00, 81.60it/s, loss=2.08]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1061/3000]: Train loss: 1.9437, Valid loss: 2.3908\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1062/3000]: 100%|██████████| 9/9 [00:00<00:00, 90.23it/s, loss=1.84]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1062/3000]: Train loss: 1.9694, Valid loss: 2.4869\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1063/3000]: 100%|██████████| 9/9 [00:00<00:00, 76.03it/s, loss=1.28]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1063/3000]: Train loss: 2.0162, Valid loss: 2.0955\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1064/3000]: 100%|██████████| 9/9 [00:00<00:00, 86.11it/s, loss=2.39]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1064/3000]: Train loss: 1.9003, Valid loss: 2.1930\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1065/3000]: 100%|██████████| 9/9 [00:00<00:00, 84.80it/s, loss=1.27]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1065/3000]: Train loss: 1.9511, Valid loss: 1.8596\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1066/3000]: 100%|██████████| 9/9 [00:00<00:00, 91.96it/s, loss=1.98]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1066/3000]: Train loss: 1.9929, Valid loss: 2.8524\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1067/3000]: 100%|██████████| 9/9 [00:00<00:00, 83.53it/s, loss=2.64]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1067/3000]: Train loss: 2.4080, Valid loss: 2.3072\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1068/3000]: 100%|██████████| 9/9 [00:00<00:00, 95.57it/s, loss=1.53]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1068/3000]: Train loss: 2.5970, Valid loss: 2.5849\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1069/3000]: 100%|██████████| 9/9 [00:00<00:00, 98.14it/s, loss=2.14]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1069/3000]: Train loss: 2.0325, Valid loss: 2.0238\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1070/3000]: 100%|██████████| 9/9 [00:00<00:00, 93.16it/s, loss=1.73]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1070/3000]: Train loss: 1.8491, Valid loss: 2.2624\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1071/3000]: 100%|██████████| 9/9 [00:00<00:00, 103.17it/s, loss=1.52]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1071/3000]: Train loss: 2.0713, Valid loss: 2.5419\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1072/3000]: 100%|██████████| 9/9 [00:00<00:00, 85.17it/s, loss=1.83]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1072/3000]: Train loss: 1.8962, Valid loss: 2.7000\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1073/3000]: 100%|██████████| 9/9 [00:00<00:00, 92.99it/s, loss=1.62]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1073/3000]: Train loss: 1.9237, Valid loss: 2.0890\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1074/3000]: 100%|██████████| 9/9 [00:00<00:00, 91.13it/s, loss=2.43]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1074/3000]: Train loss: 2.1816, Valid loss: 2.7366\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1075/3000]: 100%|██████████| 9/9 [00:00<00:00, 85.61it/s, loss=4.67]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1075/3000]: Train loss: 2.6934, Valid loss: 2.4267\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1076/3000]: 100%|██████████| 9/9 [00:00<00:00, 81.75it/s, loss=1.9]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1076/3000]: Train loss: 2.6330, Valid loss: 3.6394\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1077/3000]: 100%|██████████| 9/9 [00:00<00:00, 28.23it/s, loss=2.01]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1077/3000]: Train loss: 1.9593, Valid loss: 2.5836\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1078/3000]: 100%|██████████| 9/9 [00:00<00:00, 77.91it/s, loss=2.24]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1078/3000]: Train loss: 1.9938, Valid loss: 2.9714\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1079/3000]: 100%|██████████| 9/9 [00:00<00:00, 81.90it/s, loss=1.5]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1079/3000]: Train loss: 2.3804, Valid loss: 2.6557\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1080/3000]: 100%|██████████| 9/9 [00:00<00:00, 78.57it/s, loss=2.1]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1080/3000]: Train loss: 1.9837, Valid loss: 2.0860\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1081/3000]: 100%|██████████| 9/9 [00:00<00:00, 84.13it/s, loss=1.73]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1081/3000]: Train loss: 2.3044, Valid loss: 2.2433\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1082/3000]: 100%|██████████| 9/9 [00:00<00:00, 82.73it/s, loss=2.29]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1082/3000]: Train loss: 2.0181, Valid loss: 1.9862\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1083/3000]: 100%|██████████| 9/9 [00:00<00:00, 71.49it/s, loss=1.79]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1083/3000]: Train loss: 2.1116, Valid loss: 2.4781\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1084/3000]: 100%|██████████| 9/9 [00:00<00:00, 99.86it/s, loss=2.85]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1084/3000]: Train loss: 2.3535, Valid loss: 2.0009\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1085/3000]: 100%|██████████| 9/9 [00:00<00:00, 99.03it/s, loss=2.3]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1085/3000]: Train loss: 1.9274, Valid loss: 2.2875\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1086/3000]: 100%|██████████| 9/9 [00:00<00:00, 95.41it/s, loss=1.75]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1086/3000]: Train loss: 2.1093, Valid loss: 2.6882\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1087/3000]: 100%|██████████| 9/9 [00:00<00:00, 98.92it/s, loss=2.23]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1087/3000]: Train loss: 2.1457, Valid loss: 1.9789\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1088/3000]: 100%|██████████| 9/9 [00:00<00:00, 98.28it/s, loss=2.2]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1088/3000]: Train loss: 2.6227, Valid loss: 3.1312\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1089/3000]: 100%|██████████| 9/9 [00:00<00:00, 82.66it/s, loss=2.56]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1089/3000]: Train loss: 2.3895, Valid loss: 2.2035\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1090/3000]: 100%|██████████| 9/9 [00:00<00:00, 99.21it/s, loss=2.06]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1090/3000]: Train loss: 1.8721, Valid loss: 2.2064\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1091/3000]: 100%|██████████| 9/9 [00:00<00:00, 81.11it/s, loss=1.74]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1091/3000]: Train loss: 2.0833, Valid loss: 2.3651\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1092/3000]: 100%|██████████| 9/9 [00:00<00:00, 96.55it/s, loss=2.02]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1092/3000]: Train loss: 2.1667, Valid loss: 2.8872\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1093/3000]: 100%|██████████| 9/9 [00:00<00:00, 99.59it/s, loss=2.43]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1093/3000]: Train loss: 2.2811, Valid loss: 2.6080\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1094/3000]: 100%|██████████| 9/9 [00:00<00:00, 93.99it/s, loss=2.46]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1094/3000]: Train loss: 2.3756, Valid loss: 2.1886\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1095/3000]: 100%|██████████| 9/9 [00:00<00:00, 88.15it/s, loss=1.38]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1095/3000]: Train loss: 1.8605, Valid loss: 2.0873\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1096/3000]: 100%|██████████| 9/9 [00:00<00:00, 85.03it/s, loss=2.32]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1096/3000]: Train loss: 2.1586, Valid loss: 3.8380\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1097/3000]: 100%|██████████| 9/9 [00:00<00:00, 95.11it/s, loss=3.17]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1097/3000]: Train loss: 2.4100, Valid loss: 2.2934\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1098/3000]: 100%|██████████| 9/9 [00:00<00:00, 99.04it/s, loss=2.19]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1098/3000]: Train loss: 2.3831, Valid loss: 2.6685\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1099/3000]: 100%|██████████| 9/9 [00:00<00:00, 94.92it/s, loss=3.12]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1099/3000]: Train loss: 2.1075, Valid loss: 3.6833\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1100/3000]: 100%|██████████| 9/9 [00:00<00:00, 82.28it/s, loss=1.97]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1100/3000]: Train loss: 2.0696, Valid loss: 2.5014\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1101/3000]: 100%|██████████| 9/9 [00:00<00:00, 101.05it/s, loss=2.21]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1101/3000]: Train loss: 2.0567, Valid loss: 2.2606\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1102/3000]: 100%|██████████| 9/9 [00:00<00:00, 98.42it/s, loss=2.35]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1102/3000]: Train loss: 2.9652, Valid loss: 2.9685\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1103/3000]: 100%|██████████| 9/9 [00:00<00:00, 90.62it/s, loss=1.87]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1103/3000]: Train loss: 2.3145, Valid loss: 3.0782\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1104/3000]: 100%|██████████| 9/9 [00:00<00:00, 80.96it/s, loss=2.33]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1104/3000]: Train loss: 2.3954, Valid loss: 2.5675\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1105/3000]: 100%|██████████| 9/9 [00:00<00:00, 92.24it/s, loss=2.64]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1105/3000]: Train loss: 2.3433, Valid loss: 3.9837\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1106/3000]: 100%|██████████| 9/9 [00:00<00:00, 64.69it/s, loss=2.4]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1106/3000]: Train loss: 3.1436, Valid loss: 2.8343\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1107/3000]: 100%|██████████| 9/9 [00:00<00:00, 92.48it/s, loss=2.13]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1107/3000]: Train loss: 2.5390, Valid loss: 2.4612\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1108/3000]: 100%|██████████| 9/9 [00:00<00:00, 86.10it/s, loss=1.55]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1108/3000]: Train loss: 2.3416, Valid loss: 2.6487\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1109/3000]: 100%|██████████| 9/9 [00:00<00:00, 83.35it/s, loss=3.05]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1109/3000]: Train loss: 2.5371, Valid loss: 2.8291\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1110/3000]: 100%|██████████| 9/9 [00:00<00:00, 93.64it/s, loss=2.34]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1110/3000]: Train loss: 2.3055, Valid loss: 2.6299\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1111/3000]: 100%|██████████| 9/9 [00:00<00:00, 85.71it/s, loss=1.44]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1111/3000]: Train loss: 2.0525, Valid loss: 2.5327\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1112/3000]: 100%|██████████| 9/9 [00:00<00:00, 62.49it/s, loss=1.3]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1112/3000]: Train loss: 1.9484, Valid loss: 1.9999\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1113/3000]: 100%|██████████| 9/9 [00:00<00:00, 79.06it/s, loss=2.2]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1113/3000]: Train loss: 2.2078, Valid loss: 2.1697\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1114/3000]: 100%|██████████| 9/9 [00:00<00:00, 74.84it/s, loss=1.6]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1114/3000]: Train loss: 1.8237, Valid loss: 2.1764\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1115/3000]: 100%|██████████| 9/9 [00:00<00:00, 98.12it/s, loss=2.23]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1115/3000]: Train loss: 1.9018, Valid loss: 2.3617\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1116/3000]: 100%|██████████| 9/9 [00:00<00:00, 73.18it/s, loss=3.12]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1116/3000]: Train loss: 2.3502, Valid loss: 1.9826\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1117/3000]: 100%|██████████| 9/9 [00:00<00:00, 86.18it/s, loss=1.84]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1117/3000]: Train loss: 2.1696, Valid loss: 4.0485\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1118/3000]: 100%|██████████| 9/9 [00:00<00:00, 89.86it/s, loss=2.67]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1118/3000]: Train loss: 2.8980, Valid loss: 1.9033\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1119/3000]: 100%|██████████| 9/9 [00:00<00:00, 94.95it/s, loss=2.44]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1119/3000]: Train loss: 1.9501, Valid loss: 2.5217\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1120/3000]: 100%|██████████| 9/9 [00:00<00:00, 92.56it/s, loss=1.53]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1120/3000]: Train loss: 1.8634, Valid loss: 1.9648\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1121/3000]: 100%|██████████| 9/9 [00:00<00:00, 98.14it/s, loss=2.42]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1121/3000]: Train loss: 2.8252, Valid loss: 4.2061\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1122/3000]: 100%|██████████| 9/9 [00:00<00:00, 98.33it/s, loss=2.15]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1122/3000]: Train loss: 2.9342, Valid loss: 2.2338\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1123/3000]: 100%|██████████| 9/9 [00:00<00:00, 91.31it/s, loss=3.05]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1123/3000]: Train loss: 2.2951, Valid loss: 1.9772\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1124/3000]: 100%|██████████| 9/9 [00:00<00:00, 88.14it/s, loss=1.37]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1124/3000]: Train loss: 2.0058, Valid loss: 2.0332\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1125/3000]: 100%|██████████| 9/9 [00:00<00:00, 87.43it/s, loss=2.3]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1125/3000]: Train loss: 1.9803, Valid loss: 2.9488\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1126/3000]: 100%|██████████| 9/9 [00:00<00:00, 91.39it/s, loss=2.5]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1126/3000]: Train loss: 2.5142, Valid loss: 1.9238\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1127/3000]: 100%|██████████| 9/9 [00:00<00:00, 88.40it/s, loss=3.6]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1127/3000]: Train loss: 2.2414, Valid loss: 2.2980\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1128/3000]: 100%|██████████| 9/9 [00:00<00:00, 77.40it/s, loss=1.74]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1128/3000]: Train loss: 2.5137, Valid loss: 3.6682\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1129/3000]: 100%|██████████| 9/9 [00:00<00:00, 80.74it/s, loss=2.17]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1129/3000]: Train loss: 2.2769, Valid loss: 2.4254\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1130/3000]: 100%|██████████| 9/9 [00:00<00:00, 88.46it/s, loss=3.09]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1130/3000]: Train loss: 2.2070, Valid loss: 3.9353\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1131/3000]: 100%|██████████| 9/9 [00:00<00:00, 76.34it/s, loss=1.39]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1131/3000]: Train loss: 2.3788, Valid loss: 3.2254\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1132/3000]: 100%|██████████| 9/9 [00:00<00:00, 68.75it/s, loss=3.69]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1132/3000]: Train loss: 2.6656, Valid loss: 2.2448\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1133/3000]: 100%|██████████| 9/9 [00:00<00:00, 75.59it/s, loss=2.34]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1133/3000]: Train loss: 2.2866, Valid loss: 2.7894\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1134/3000]: 100%|██████████| 9/9 [00:00<00:00, 82.51it/s, loss=1.89]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1134/3000]: Train loss: 1.8792, Valid loss: 2.4911\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1135/3000]: 100%|██████████| 9/9 [00:00<00:00, 79.90it/s, loss=1.5]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1135/3000]: Train loss: 1.9388, Valid loss: 2.0538\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1136/3000]: 100%|██████████| 9/9 [00:00<00:00, 91.40it/s, loss=1.8]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1136/3000]: Train loss: 1.9475, Valid loss: 2.7204\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1137/3000]: 100%|██████████| 9/9 [00:00<00:00, 99.38it/s, loss=1.57]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1137/3000]: Train loss: 2.2473, Valid loss: 2.8188\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1138/3000]: 100%|██████████| 9/9 [00:00<00:00, 92.53it/s, loss=2.63]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1138/3000]: Train loss: 2.4517, Valid loss: 1.9688\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1139/3000]: 100%|██████████| 9/9 [00:00<00:00, 83.03it/s, loss=2.12]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1139/3000]: Train loss: 2.0236, Valid loss: 2.5063\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1140/3000]: 100%|██████████| 9/9 [00:00<00:00, 69.30it/s, loss=3.1]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1140/3000]: Train loss: 2.7519, Valid loss: 2.0792\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1141/3000]: 100%|██████████| 9/9 [00:00<00:00, 70.54it/s, loss=2.41]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1141/3000]: Train loss: 2.0821, Valid loss: 2.8341\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1142/3000]: 100%|██████████| 9/9 [00:00<00:00, 79.22it/s, loss=2.88]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1142/3000]: Train loss: 2.2124, Valid loss: 2.0844\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1143/3000]: 100%|██████████| 9/9 [00:00<00:00, 82.40it/s, loss=2.7]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1143/3000]: Train loss: 3.2358, Valid loss: 4.4010\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1144/3000]: 100%|██████████| 9/9 [00:00<00:00, 81.86it/s, loss=4.82]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1144/3000]: Train loss: 3.8953, Valid loss: 2.3026\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1145/3000]: 100%|██████████| 9/9 [00:00<00:00, 80.21it/s, loss=2.14]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1145/3000]: Train loss: 2.5971, Valid loss: 2.2103\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1146/3000]: 100%|██████████| 9/9 [00:00<00:00, 68.56it/s, loss=2.51]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1146/3000]: Train loss: 1.9871, Valid loss: 2.3856\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1147/3000]: 100%|██████████| 9/9 [00:00<00:00, 71.78it/s, loss=1.83]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1147/3000]: Train loss: 1.9988, Valid loss: 2.2844\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1148/3000]: 100%|██████████| 9/9 [00:00<00:00, 73.64it/s, loss=1.37]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1148/3000]: Train loss: 1.8713, Valid loss: 1.9611\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1149/3000]: 100%|██████████| 9/9 [00:00<00:00, 100.91it/s, loss=3.13]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1149/3000]: Train loss: 2.3000, Valid loss: 2.7089\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1150/3000]: 100%|██████████| 9/9 [00:00<00:00, 99.20it/s, loss=2.13]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1150/3000]: Train loss: 2.3951, Valid loss: 2.2000\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1151/3000]: 100%|██████████| 9/9 [00:00<00:00, 101.23it/s, loss=2.18]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1151/3000]: Train loss: 1.9803, Valid loss: 1.9529\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1152/3000]: 100%|██████████| 9/9 [00:00<00:00, 101.92it/s, loss=1.75]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1152/3000]: Train loss: 1.9688, Valid loss: 2.6047\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1153/3000]: 100%|██████████| 9/9 [00:00<00:00, 85.71it/s, loss=2.27]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1153/3000]: Train loss: 2.0592, Valid loss: 2.1032\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1154/3000]: 100%|██████████| 9/9 [00:00<00:00, 91.03it/s, loss=1.52]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1154/3000]: Train loss: 1.8383, Valid loss: 2.1383\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1155/3000]: 100%|██████████| 9/9 [00:00<00:00, 82.44it/s, loss=2.33]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1155/3000]: Train loss: 1.9011, Valid loss: 2.2195\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1156/3000]: 100%|██████████| 9/9 [00:00<00:00, 74.74it/s, loss=2.44]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1156/3000]: Train loss: 2.0752, Valid loss: 2.1364\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1157/3000]: 100%|██████████| 9/9 [00:00<00:00, 90.57it/s, loss=2.34]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1157/3000]: Train loss: 1.9201, Valid loss: 2.1416\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1158/3000]: 100%|██████████| 9/9 [00:00<00:00, 31.75it/s, loss=2.21]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1158/3000]: Train loss: 1.9943, Valid loss: 2.2130\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1159/3000]: 100%|██████████| 9/9 [00:00<00:00, 105.66it/s, loss=2.1]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1159/3000]: Train loss: 2.0453, Valid loss: 2.5141\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1160/3000]: 100%|██████████| 9/9 [00:00<00:00, 101.92it/s, loss=1.96]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1160/3000]: Train loss: 1.9659, Valid loss: 2.1075\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1161/3000]: 100%|██████████| 9/9 [00:00<00:00, 102.09it/s, loss=2.46]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1161/3000]: Train loss: 2.0213, Valid loss: 2.4682\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1162/3000]: 100%|██████████| 9/9 [00:00<00:00, 90.22it/s, loss=1.95]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1162/3000]: Train loss: 1.8583, Valid loss: 2.1070\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1163/3000]: 100%|██████████| 9/9 [00:00<00:00, 97.86it/s, loss=2.34]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1163/3000]: Train loss: 1.9329, Valid loss: 2.3202\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1164/3000]: 100%|██████████| 9/9 [00:00<00:00, 90.79it/s, loss=2.27]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1164/3000]: Train loss: 2.1029, Valid loss: 2.1605\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1165/3000]: 100%|██████████| 9/9 [00:00<00:00, 101.25it/s, loss=1.88]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1165/3000]: Train loss: 1.9616, Valid loss: 2.2039\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1166/3000]: 100%|██████████| 9/9 [00:00<00:00, 97.80it/s, loss=2.03]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1166/3000]: Train loss: 2.1028, Valid loss: 1.9874\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1167/3000]: 100%|██████████| 9/9 [00:00<00:00, 83.52it/s, loss=1.33]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1167/3000]: Train loss: 1.7964, Valid loss: 2.2850\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1168/3000]: 100%|██████████| 9/9 [00:00<00:00, 75.99it/s, loss=1.67]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1168/3000]: Train loss: 1.8563, Valid loss: 1.9638\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1169/3000]: 100%|██████████| 9/9 [00:00<00:00, 74.85it/s, loss=3.39]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1169/3000]: Train loss: 2.2847, Valid loss: 2.6403\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1170/3000]: 100%|██████████| 9/9 [00:00<00:00, 90.41it/s, loss=3.2]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1170/3000]: Train loss: 2.3050, Valid loss: 5.4251\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1171/3000]: 100%|██████████| 9/9 [00:00<00:00, 75.07it/s, loss=1.78]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1171/3000]: Train loss: 2.5465, Valid loss: 2.7616\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1172/3000]: 100%|██████████| 9/9 [00:00<00:00, 82.58it/s, loss=2.34]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1172/3000]: Train loss: 2.1887, Valid loss: 2.2944\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1173/3000]: 100%|██████████| 9/9 [00:00<00:00, 76.20it/s, loss=1.63]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1173/3000]: Train loss: 1.9096, Valid loss: 2.3593\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1174/3000]: 100%|██████████| 9/9 [00:00<00:00, 91.73it/s, loss=2.33]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1174/3000]: Train loss: 2.0845, Valid loss: 2.2816\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1175/3000]: 100%|██████████| 9/9 [00:00<00:00, 92.19it/s, loss=1.84]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1175/3000]: Train loss: 1.9583, Valid loss: 2.1214\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1176/3000]: 100%|██████████| 9/9 [00:00<00:00, 86.65it/s, loss=1.92]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1176/3000]: Train loss: 1.8225, Valid loss: 2.5981\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1177/3000]: 100%|██████████| 9/9 [00:00<00:00, 85.40it/s, loss=2.84]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1177/3000]: Train loss: 1.9235, Valid loss: 2.2526\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1178/3000]: 100%|██████████| 9/9 [00:00<00:00, 79.08it/s, loss=1.67]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1178/3000]: Train loss: 1.8690, Valid loss: 2.2732\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1179/3000]: 100%|██████████| 9/9 [00:00<00:00, 77.84it/s, loss=1.19]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1179/3000]: Train loss: 2.2242, Valid loss: 3.9317\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1180/3000]: 100%|██████████| 9/9 [00:00<00:00, 78.34it/s, loss=1.46]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1180/3000]: Train loss: 2.2291, Valid loss: 2.1254\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1181/3000]: 100%|██████████| 9/9 [00:00<00:00, 92.91it/s, loss=1.79]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1181/3000]: Train loss: 1.8548, Valid loss: 1.9572\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1182/3000]: 100%|██████████| 9/9 [00:00<00:00, 86.70it/s, loss=2.67]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1182/3000]: Train loss: 1.8788, Valid loss: 2.2625\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1183/3000]: 100%|██████████| 9/9 [00:00<00:00, 79.92it/s, loss=2.27]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1183/3000]: Train loss: 1.9098, Valid loss: 2.0689\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1184/3000]: 100%|██████████| 9/9 [00:00<00:00, 83.37it/s, loss=1.78]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1184/3000]: Train loss: 1.8043, Valid loss: 2.0779\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1185/3000]: 100%|██████████| 9/9 [00:00<00:00, 83.88it/s, loss=2.37]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1185/3000]: Train loss: 1.8573, Valid loss: 2.7872\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1186/3000]: 100%|██████████| 9/9 [00:00<00:00, 71.70it/s, loss=2.48]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1186/3000]: Train loss: 1.9684, Valid loss: 2.1622\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1187/3000]: 100%|██████████| 9/9 [00:00<00:00, 87.10it/s, loss=2.74]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1187/3000]: Train loss: 2.0812, Valid loss: 2.2868\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1188/3000]: 100%|██████████| 9/9 [00:00<00:00, 73.04it/s, loss=3.34]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1188/3000]: Train loss: 2.5542, Valid loss: 4.6282\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1189/3000]: 100%|██████████| 9/9 [00:00<00:00, 82.72it/s, loss=2.21]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1189/3000]: Train loss: 2.7085, Valid loss: 2.1380\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1190/3000]: 100%|██████████| 9/9 [00:00<00:00, 91.39it/s, loss=1.78]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1190/3000]: Train loss: 1.9866, Valid loss: 2.2532\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1191/3000]: 100%|██████████| 9/9 [00:00<00:00, 86.50it/s, loss=2.04]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1191/3000]: Train loss: 1.9345, Valid loss: 2.0031\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1192/3000]: 100%|██████████| 9/9 [00:00<00:00, 97.84it/s, loss=2.28]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1192/3000]: Train loss: 2.0621, Valid loss: 2.0691\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1193/3000]: 100%|██████████| 9/9 [00:00<00:00, 81.55it/s, loss=1.44]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1193/3000]: Train loss: 1.9261, Valid loss: 2.2144\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1194/3000]: 100%|██████████| 9/9 [00:00<00:00, 91.79it/s, loss=1.85]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1194/3000]: Train loss: 2.0104, Valid loss: 2.2442\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1195/3000]: 100%|██████████| 9/9 [00:00<00:00, 75.51it/s, loss=1.71]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1195/3000]: Train loss: 1.8602, Valid loss: 2.3614\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1196/3000]: 100%|██████████| 9/9 [00:00<00:00, 74.97it/s, loss=2.06]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1196/3000]: Train loss: 1.9366, Valid loss: 3.1045\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1197/3000]: 100%|██████████| 9/9 [00:00<00:00, 71.00it/s, loss=1.98]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1197/3000]: Train loss: 2.0542, Valid loss: 2.3801\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1198/3000]: 100%|██████████| 9/9 [00:00<00:00, 71.31it/s, loss=2.42]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1198/3000]: Train loss: 1.9477, Valid loss: 2.2343\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1199/3000]: 100%|██████████| 9/9 [00:00<00:00, 94.46it/s, loss=2.16]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1199/3000]: Train loss: 2.2733, Valid loss: 1.9407\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1200/3000]: 100%|██████████| 9/9 [00:00<00:00, 81.06it/s, loss=1.93]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1200/3000]: Train loss: 2.1662, Valid loss: 2.6009\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1201/3000]: 100%|██████████| 9/9 [00:00<00:00, 95.00it/s, loss=2.39]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1201/3000]: Train loss: 2.0794, Valid loss: 2.3342\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1202/3000]: 100%|██████████| 9/9 [00:00<00:00, 71.09it/s, loss=1.82]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1202/3000]: Train loss: 2.3831, Valid loss: 2.1581\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1203/3000]: 100%|██████████| 9/9 [00:00<00:00, 83.33it/s, loss=1.76]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1203/3000]: Train loss: 2.0663, Valid loss: 2.8825\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1204/3000]: 100%|██████████| 9/9 [00:00<00:00, 85.87it/s, loss=2.31]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1204/3000]: Train loss: 2.3224, Valid loss: 2.7017\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1205/3000]: 100%|██████████| 9/9 [00:00<00:00, 79.35it/s, loss=3.87]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1205/3000]: Train loss: 3.7256, Valid loss: 2.0855\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1206/3000]: 100%|██████████| 9/9 [00:00<00:00, 98.32it/s, loss=2.21]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1206/3000]: Train loss: 2.3870, Valid loss: 3.5931\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1207/3000]: 100%|██████████| 9/9 [00:00<00:00, 81.86it/s, loss=1.92]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1207/3000]: Train loss: 2.0620, Valid loss: 1.9196\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1208/3000]: 100%|██████████| 9/9 [00:00<00:00, 82.24it/s, loss=2.04]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1208/3000]: Train loss: 1.8243, Valid loss: 1.8160\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1209/3000]: 100%|██████████| 9/9 [00:00<00:00, 90.02it/s, loss=2.02]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1209/3000]: Train loss: 1.8883, Valid loss: 2.3435\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1210/3000]: 100%|██████████| 9/9 [00:00<00:00, 73.62it/s, loss=1.55]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1210/3000]: Train loss: 1.8966, Valid loss: 2.3393\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1211/3000]: 100%|██████████| 9/9 [00:00<00:00, 90.56it/s, loss=1.85]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1211/3000]: Train loss: 1.8879, Valid loss: 2.1984\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1212/3000]: 100%|██████████| 9/9 [00:00<00:00, 74.97it/s, loss=2.87]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1212/3000]: Train loss: 1.9123, Valid loss: 2.5267\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1213/3000]: 100%|██████████| 9/9 [00:00<00:00, 78.68it/s, loss=2.22]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1213/3000]: Train loss: 2.2859, Valid loss: 1.8460\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1214/3000]: 100%|██████████| 9/9 [00:00<00:00, 82.85it/s, loss=1.7]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1214/3000]: Train loss: 1.8310, Valid loss: 2.3911\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1215/3000]: 100%|██████████| 9/9 [00:00<00:00, 81.45it/s, loss=2.55]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1215/3000]: Train loss: 2.0682, Valid loss: 2.4759\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1216/3000]: 100%|██████████| 9/9 [00:00<00:00, 79.43it/s, loss=1.81]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1216/3000]: Train loss: 2.4854, Valid loss: 2.9661\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1217/3000]: 100%|██████████| 9/9 [00:00<00:00, 96.75it/s, loss=1.48]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1217/3000]: Train loss: 2.2207, Valid loss: 3.7046\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1218/3000]: 100%|██████████| 9/9 [00:00<00:00, 81.45it/s, loss=3.23]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1218/3000]: Train loss: 2.5550, Valid loss: 2.7515\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1219/3000]: 100%|██████████| 9/9 [00:00<00:00, 71.59it/s, loss=1.81]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1219/3000]: Train loss: 2.1415, Valid loss: 2.4944\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1220/3000]: 100%|██████████| 9/9 [00:00<00:00, 80.62it/s, loss=2.14]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1220/3000]: Train loss: 1.9623, Valid loss: 2.6244\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1221/3000]: 100%|██████████| 9/9 [00:00<00:00, 84.72it/s, loss=1.63]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1221/3000]: Train loss: 2.3773, Valid loss: 1.9502\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1222/3000]: 100%|██████████| 9/9 [00:00<00:00, 91.80it/s, loss=1.58]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1222/3000]: Train loss: 1.8900, Valid loss: 2.3294\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1223/3000]: 100%|██████████| 9/9 [00:00<00:00, 81.15it/s, loss=1.6]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1223/3000]: Train loss: 1.7990, Valid loss: 2.0697\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1224/3000]: 100%|██████████| 9/9 [00:00<00:00, 85.52it/s, loss=1.48]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1224/3000]: Train loss: 1.8246, Valid loss: 2.3110\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1225/3000]: 100%|██████████| 9/9 [00:00<00:00, 74.16it/s, loss=1.59]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1225/3000]: Train loss: 2.0779, Valid loss: 2.2507\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1226/3000]: 100%|██████████| 9/9 [00:00<00:00, 75.21it/s, loss=1.45]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1226/3000]: Train loss: 1.8400, Valid loss: 2.2618\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1227/3000]: 100%|██████████| 9/9 [00:00<00:00, 92.07it/s, loss=1.76]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1227/3000]: Train loss: 1.8467, Valid loss: 2.1562\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1228/3000]: 100%|██████████| 9/9 [00:00<00:00, 89.99it/s, loss=1.41]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1228/3000]: Train loss: 1.7839, Valid loss: 2.4594\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1229/3000]: 100%|██████████| 9/9 [00:00<00:00, 97.26it/s, loss=1.73]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1229/3000]: Train loss: 1.8158, Valid loss: 2.1246\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1230/3000]: 100%|██████████| 9/9 [00:00<00:00, 94.67it/s, loss=1.86]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1230/3000]: Train loss: 2.0574, Valid loss: 2.7417\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1231/3000]: 100%|██████████| 9/9 [00:00<00:00, 93.31it/s, loss=1.83]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1231/3000]: Train loss: 2.2102, Valid loss: 2.9289\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1232/3000]: 100%|██████████| 9/9 [00:00<00:00, 92.67it/s, loss=2.55]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1232/3000]: Train loss: 2.5712, Valid loss: 2.6468\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1233/3000]: 100%|██████████| 9/9 [00:00<00:00, 72.12it/s, loss=2.49]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1233/3000]: Train loss: 3.1132, Valid loss: 2.4617\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1234/3000]: 100%|██████████| 9/9 [00:00<00:00, 82.40it/s, loss=2.6]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1234/3000]: Train loss: 2.7885, Valid loss: 4.1456\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1235/3000]: 100%|██████████| 9/9 [00:00<00:00, 84.25it/s, loss=1.52]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1235/3000]: Train loss: 2.7299, Valid loss: 4.3823\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1236/3000]: 100%|██████████| 9/9 [00:00<00:00, 80.23it/s, loss=3.5]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1236/3000]: Train loss: 4.1314, Valid loss: 4.7505\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1237/3000]: 100%|██████████| 9/9 [00:00<00:00, 79.58it/s, loss=4.54]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1237/3000]: Train loss: 3.7124, Valid loss: 2.3139\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1238/3000]: 100%|██████████| 9/9 [00:00<00:00, 91.26it/s, loss=1.76]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1238/3000]: Train loss: 2.6598, Valid loss: 3.6276\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1239/3000]: 100%|██████████| 9/9 [00:00<00:00, 31.79it/s, loss=2.3]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1239/3000]: Train loss: 2.7750, Valid loss: 2.4462\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1240/3000]: 100%|██████████| 9/9 [00:00<00:00, 77.60it/s, loss=2.15]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1240/3000]: Train loss: 2.4425, Valid loss: 2.3192\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1241/3000]: 100%|██████████| 9/9 [00:00<00:00, 91.58it/s, loss=1.9]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1241/3000]: Train loss: 1.9740, Valid loss: 2.7929\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1242/3000]: 100%|██████████| 9/9 [00:00<00:00, 86.85it/s, loss=2.09]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1242/3000]: Train loss: 1.9085, Valid loss: 2.0244\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1243/3000]: 100%|██████████| 9/9 [00:00<00:00, 77.64it/s, loss=3.38]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1243/3000]: Train loss: 2.3867, Valid loss: 2.2837\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1244/3000]: 100%|██████████| 9/9 [00:00<00:00, 94.13it/s, loss=2.28]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1244/3000]: Train loss: 2.5179, Valid loss: 3.6851\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1245/3000]: 100%|██████████| 9/9 [00:00<00:00, 87.93it/s, loss=2.33]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1245/3000]: Train loss: 2.5121, Valid loss: 4.8987\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1246/3000]: 100%|██████████| 9/9 [00:00<00:00, 89.74it/s, loss=2.19]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1246/3000]: Train loss: 2.8869, Valid loss: 2.7063\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1247/3000]: 100%|██████████| 9/9 [00:00<00:00, 83.64it/s, loss=2.22]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1247/3000]: Train loss: 2.0031, Valid loss: 1.9598\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1248/3000]: 100%|██████████| 9/9 [00:00<00:00, 78.90it/s, loss=1.89]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1248/3000]: Train loss: 1.8688, Valid loss: 2.1348\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1249/3000]: 100%|██████████| 9/9 [00:00<00:00, 78.19it/s, loss=2.4]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1249/3000]: Train loss: 1.8422, Valid loss: 2.5784\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1250/3000]: 100%|██████████| 9/9 [00:00<00:00, 77.02it/s, loss=2.02]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1250/3000]: Train loss: 1.9888, Valid loss: 1.9596\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1251/3000]: 100%|██████████| 9/9 [00:00<00:00, 71.49it/s, loss=1.54]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1251/3000]: Train loss: 2.6063, Valid loss: 3.0439\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1252/3000]: 100%|██████████| 9/9 [00:00<00:00, 83.65it/s, loss=3.41]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1252/3000]: Train loss: 2.7248, Valid loss: 2.0823\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1253/3000]: 100%|██████████| 9/9 [00:00<00:00, 85.18it/s, loss=3.3]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1253/3000]: Train loss: 2.3228, Valid loss: 2.4062\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1254/3000]: 100%|██████████| 9/9 [00:00<00:00, 98.89it/s, loss=1.8]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1254/3000]: Train loss: 1.9401, Valid loss: 2.6471\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1255/3000]: 100%|██████████| 9/9 [00:00<00:00, 86.84it/s, loss=1.97]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1255/3000]: Train loss: 1.9852, Valid loss: 2.1369\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1256/3000]: 100%|██████████| 9/9 [00:00<00:00, 80.59it/s, loss=1.9]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1256/3000]: Train loss: 2.0642, Valid loss: 2.1673\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1257/3000]: 100%|██████████| 9/9 [00:00<00:00, 74.87it/s, loss=2.03]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1257/3000]: Train loss: 1.9721, Valid loss: 3.6357\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1258/3000]: 100%|██████████| 9/9 [00:00<00:00, 75.23it/s, loss=3.07]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1258/3000]: Train loss: 2.1563, Valid loss: 3.6856\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1259/3000]: 100%|██████████| 9/9 [00:00<00:00, 82.45it/s, loss=2.28]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1259/3000]: Train loss: 2.6050, Valid loss: 2.1975\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1260/3000]: 100%|██████████| 9/9 [00:00<00:00, 92.67it/s, loss=1.28]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1260/3000]: Train loss: 1.8530, Valid loss: 1.7362\n", + "Saving model with loss 1.736...\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1261/3000]: 100%|██████████| 9/9 [00:00<00:00, 90.70it/s, loss=1.63]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1261/3000]: Train loss: 1.8973, Valid loss: 2.1759\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1262/3000]: 100%|██████████| 9/9 [00:00<00:00, 84.07it/s, loss=1.57]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1262/3000]: Train loss: 1.8839, Valid loss: 4.2732\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1263/3000]: 100%|██████████| 9/9 [00:00<00:00, 81.14it/s, loss=3.65]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1263/3000]: Train loss: 3.2782, Valid loss: 2.9567\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1264/3000]: 100%|██████████| 9/9 [00:00<00:00, 91.51it/s, loss=2.27]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1264/3000]: Train loss: 4.2108, Valid loss: 3.7755\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1265/3000]: 100%|██████████| 9/9 [00:00<00:00, 85.02it/s, loss=2.06]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1265/3000]: Train loss: 2.2654, Valid loss: 1.8475\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1266/3000]: 100%|██████████| 9/9 [00:00<00:00, 68.71it/s, loss=2.54]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1266/3000]: Train loss: 2.1598, Valid loss: 2.5086\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1267/3000]: 100%|██████████| 9/9 [00:00<00:00, 97.86it/s, loss=1.99]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1267/3000]: Train loss: 2.1793, Valid loss: 2.5825\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1268/3000]: 100%|██████████| 9/9 [00:00<00:00, 102.31it/s, loss=2.21]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1268/3000]: Train loss: 2.2587, Valid loss: 2.1215\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1269/3000]: 100%|██████████| 9/9 [00:00<00:00, 99.32it/s, loss=1.85]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1269/3000]: Train loss: 1.8921, Valid loss: 2.0007\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1270/3000]: 100%|██████████| 9/9 [00:00<00:00, 100.29it/s, loss=2.12]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1270/3000]: Train loss: 1.8511, Valid loss: 4.5397\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1271/3000]: 100%|██████████| 9/9 [00:00<00:00, 99.68it/s, loss=4.68]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1271/3000]: Train loss: 3.3434, Valid loss: 3.1190\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1272/3000]: 100%|██████████| 9/9 [00:00<00:00, 90.69it/s, loss=1.93]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1272/3000]: Train loss: 2.7672, Valid loss: 3.5366\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1273/3000]: 100%|██████████| 9/9 [00:00<00:00, 99.85it/s, loss=2.47]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1273/3000]: Train loss: 2.5447, Valid loss: 4.3256\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1274/3000]: 100%|██████████| 9/9 [00:00<00:00, 100.62it/s, loss=1.92]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1274/3000]: Train loss: 2.3203, Valid loss: 2.0023\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1275/3000]: 100%|██████████| 9/9 [00:00<00:00, 103.80it/s, loss=2.73]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1275/3000]: Train loss: 2.1983, Valid loss: 2.3470\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1276/3000]: 100%|██████████| 9/9 [00:00<00:00, 81.31it/s, loss=1.74]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1276/3000]: Train loss: 1.9180, Valid loss: 3.7519\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1277/3000]: 100%|██████████| 9/9 [00:00<00:00, 84.47it/s, loss=2.16]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1277/3000]: Train loss: 2.6164, Valid loss: 2.2126\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1278/3000]: 100%|██████████| 9/9 [00:00<00:00, 84.70it/s, loss=4.09]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1278/3000]: Train loss: 2.5767, Valid loss: 1.9839\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1279/3000]: 100%|██████████| 9/9 [00:00<00:00, 80.71it/s, loss=1.94]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1279/3000]: Train loss: 2.4382, Valid loss: 2.6399\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1280/3000]: 100%|██████████| 9/9 [00:00<00:00, 69.83it/s, loss=1.79]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1280/3000]: Train loss: 1.9640, Valid loss: 2.4538\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1281/3000]: 100%|██████████| 9/9 [00:00<00:00, 81.00it/s, loss=2.25]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1281/3000]: Train loss: 2.0926, Valid loss: 2.4732\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1282/3000]: 100%|██████████| 9/9 [00:00<00:00, 71.92it/s, loss=2.22]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1282/3000]: Train loss: 1.9960, Valid loss: 2.1156\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1283/3000]: 100%|██████████| 9/9 [00:00<00:00, 73.44it/s, loss=1.72]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1283/3000]: Train loss: 1.8931, Valid loss: 1.8286\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1284/3000]: 100%|██████████| 9/9 [00:00<00:00, 94.70it/s, loss=1.92]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1284/3000]: Train loss: 1.8287, Valid loss: 1.9704\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1285/3000]: 100%|██████████| 9/9 [00:00<00:00, 95.26it/s, loss=2.36]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1285/3000]: Train loss: 1.9435, Valid loss: 2.3558\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1286/3000]: 100%|██████████| 9/9 [00:00<00:00, 96.45it/s, loss=1.83]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1286/3000]: Train loss: 2.0547, Valid loss: 2.0594\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1287/3000]: 100%|██████████| 9/9 [00:00<00:00, 87.19it/s, loss=1.6]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1287/3000]: Train loss: 1.8113, Valid loss: 2.0230\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1288/3000]: 100%|██████████| 9/9 [00:00<00:00, 81.17it/s, loss=2.36]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1288/3000]: Train loss: 1.9696, Valid loss: 1.8164\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1289/3000]: 100%|██████████| 9/9 [00:00<00:00, 82.73it/s, loss=1.72]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1289/3000]: Train loss: 1.9363, Valid loss: 2.0558\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1290/3000]: 100%|██████████| 9/9 [00:00<00:00, 90.59it/s, loss=1.51]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1290/3000]: Train loss: 1.7923, Valid loss: 2.4245\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1291/3000]: 100%|██████████| 9/9 [00:00<00:00, 85.87it/s, loss=2.41]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1291/3000]: Train loss: 2.0768, Valid loss: 4.2036\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1292/3000]: 100%|██████████| 9/9 [00:00<00:00, 71.68it/s, loss=2.08]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1292/3000]: Train loss: 2.4143, Valid loss: 3.0121\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1293/3000]: 100%|██████████| 9/9 [00:00<00:00, 96.05it/s, loss=1.57]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1293/3000]: Train loss: 1.9543, Valid loss: 1.8978\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1294/3000]: 100%|██████████| 9/9 [00:00<00:00, 84.14it/s, loss=2.13]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1294/3000]: Train loss: 1.8953, Valid loss: 2.8367\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1295/3000]: 100%|██████████| 9/9 [00:00<00:00, 64.92it/s, loss=2.48]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1295/3000]: Train loss: 2.1560, Valid loss: 1.8522\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1296/3000]: 100%|██████████| 9/9 [00:00<00:00, 75.38it/s, loss=2.51]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1296/3000]: Train loss: 2.3118, Valid loss: 3.7393\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1297/3000]: 100%|██████████| 9/9 [00:00<00:00, 90.10it/s, loss=1.92]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1297/3000]: Train loss: 2.2986, Valid loss: 2.3459\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1298/3000]: 100%|██████████| 9/9 [00:00<00:00, 96.98it/s, loss=2.01]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1298/3000]: Train loss: 1.8954, Valid loss: 2.5559\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1299/3000]: 100%|██████████| 9/9 [00:00<00:00, 96.03it/s, loss=1.76]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1299/3000]: Train loss: 1.9465, Valid loss: 2.7344\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1300/3000]: 100%|██████████| 9/9 [00:00<00:00, 91.02it/s, loss=3.29]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1300/3000]: Train loss: 2.4285, Valid loss: 2.5994\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1301/3000]: 100%|██████████| 9/9 [00:00<00:00, 87.16it/s, loss=1.49]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1301/3000]: Train loss: 2.3315, Valid loss: 2.8238\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1302/3000]: 100%|██████████| 9/9 [00:00<00:00, 77.62it/s, loss=2.73]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1302/3000]: Train loss: 2.1927, Valid loss: 2.2212\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1303/3000]: 100%|██████████| 9/9 [00:00<00:00, 80.81it/s, loss=1.36]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1303/3000]: Train loss: 1.9803, Valid loss: 1.8520\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1304/3000]: 100%|██████████| 9/9 [00:00<00:00, 81.86it/s, loss=1.84]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1304/3000]: Train loss: 1.7986, Valid loss: 3.1522\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1305/3000]: 100%|██████████| 9/9 [00:00<00:00, 84.56it/s, loss=2.2]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1305/3000]: Train loss: 2.3877, Valid loss: 2.3430\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1306/3000]: 100%|██████████| 9/9 [00:00<00:00, 70.42it/s, loss=2.26]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1306/3000]: Train loss: 1.8328, Valid loss: 2.5362\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1307/3000]: 100%|██████████| 9/9 [00:00<00:00, 85.23it/s, loss=1.55]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1307/3000]: Train loss: 1.8112, Valid loss: 1.9414\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1308/3000]: 100%|██████████| 9/9 [00:00<00:00, 76.15it/s, loss=1.89]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1308/3000]: Train loss: 1.8589, Valid loss: 2.5385\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1309/3000]: 100%|██████████| 9/9 [00:00<00:00, 79.17it/s, loss=1.7]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1309/3000]: Train loss: 1.9906, Valid loss: 3.2339\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1310/3000]: 100%|██████████| 9/9 [00:00<00:00, 72.01it/s, loss=2.09]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1310/3000]: Train loss: 2.0841, Valid loss: 2.1166\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1311/3000]: 100%|██████████| 9/9 [00:00<00:00, 92.48it/s, loss=1.5]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1311/3000]: Train loss: 1.9462, Valid loss: 2.4488\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1312/3000]: 100%|██████████| 9/9 [00:00<00:00, 83.49it/s, loss=1.47]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1312/3000]: Train loss: 1.7556, Valid loss: 2.1443\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1313/3000]: 100%|██████████| 9/9 [00:00<00:00, 78.02it/s, loss=1.2]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1313/3000]: Train loss: 1.7558, Valid loss: 2.3627\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1314/3000]: 100%|██████████| 9/9 [00:00<00:00, 94.89it/s, loss=2.05]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1314/3000]: Train loss: 2.0889, Valid loss: 2.3009\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1315/3000]: 100%|██████████| 9/9 [00:00<00:00, 77.87it/s, loss=2.93]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1315/3000]: Train loss: 2.1838, Valid loss: 2.0505\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1316/3000]: 100%|██████████| 9/9 [00:00<00:00, 85.25it/s, loss=2.74]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1316/3000]: Train loss: 2.8137, Valid loss: 3.2737\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1317/3000]: 100%|██████████| 9/9 [00:00<00:00, 97.06it/s, loss=1.85]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1317/3000]: Train loss: 2.0036, Valid loss: 2.4079\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1318/3000]: 100%|██████████| 9/9 [00:00<00:00, 98.99it/s, loss=2.95]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1318/3000]: Train loss: 1.9670, Valid loss: 3.6020\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1319/3000]: 100%|██████████| 9/9 [00:00<00:00, 97.07it/s, loss=2.01]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1319/3000]: Train loss: 2.4781, Valid loss: 2.0852\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1320/3000]: 100%|██████████| 9/9 [00:00<00:00, 99.03it/s, loss=1.84]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1320/3000]: Train loss: 1.9163, Valid loss: 2.0916\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1321/3000]: 100%|██████████| 9/9 [00:00<00:00, 97.33it/s, loss=4.47]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1321/3000]: Train loss: 3.0958, Valid loss: 2.4634\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1322/3000]: 100%|██████████| 9/9 [00:00<00:00, 98.01it/s, loss=2.26]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1322/3000]: Train loss: 2.6015, Valid loss: 3.3587\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1323/3000]: 100%|██████████| 9/9 [00:00<00:00, 91.13it/s, loss=1.87]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1323/3000]: Train loss: 2.0273, Valid loss: 2.1224\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1324/3000]: 100%|██████████| 9/9 [00:00<00:00, 87.39it/s, loss=2.06]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1324/3000]: Train loss: 2.4289, Valid loss: 2.7442\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1325/3000]: 100%|██████████| 9/9 [00:00<00:00, 90.30it/s, loss=1.83]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1325/3000]: Train loss: 3.1296, Valid loss: 3.8595\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1326/3000]: 100%|██████████| 9/9 [00:00<00:00, 76.91it/s, loss=2.09]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1326/3000]: Train loss: 2.0219, Valid loss: 2.3978\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1327/3000]: 100%|██████████| 9/9 [00:00<00:00, 87.72it/s, loss=1.74]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1327/3000]: Train loss: 1.9016, Valid loss: 2.6393\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1328/3000]: 100%|██████████| 9/9 [00:00<00:00, 83.70it/s, loss=2.52]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1328/3000]: Train loss: 2.1447, Valid loss: 2.2200\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1329/3000]: 100%|██████████| 9/9 [00:00<00:00, 74.92it/s, loss=1.7]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1329/3000]: Train loss: 2.0263, Valid loss: 3.2150\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1330/3000]: 100%|██████████| 9/9 [00:00<00:00, 76.44it/s, loss=1.81]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1330/3000]: Train loss: 2.2545, Valid loss: 2.5257\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1331/3000]: 100%|██████████| 9/9 [00:00<00:00, 73.87it/s, loss=2.12]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1331/3000]: Train loss: 2.0045, Valid loss: 1.7488\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1332/3000]: 100%|██████████| 9/9 [00:00<00:00, 76.70it/s, loss=2.05]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1332/3000]: Train loss: 1.7991, Valid loss: 2.7746\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1333/3000]: 100%|██████████| 9/9 [00:00<00:00, 75.57it/s, loss=1.54]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1333/3000]: Train loss: 1.9179, Valid loss: 2.3753\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1334/3000]: 100%|██████████| 9/9 [00:00<00:00, 86.05it/s, loss=1.59]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1334/3000]: Train loss: 1.9511, Valid loss: 1.9336\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1335/3000]: 100%|██████████| 9/9 [00:00<00:00, 84.84it/s, loss=2]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1335/3000]: Train loss: 1.9577, Valid loss: 2.4569\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1336/3000]: 100%|██████████| 9/9 [00:00<00:00, 76.32it/s, loss=2.4]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1336/3000]: Train loss: 1.9301, Valid loss: 1.9938\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1337/3000]: 100%|██████████| 9/9 [00:00<00:00, 80.72it/s, loss=1.94]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1337/3000]: Train loss: 1.8962, Valid loss: 2.3140\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1338/3000]: 100%|██████████| 9/9 [00:00<00:00, 86.62it/s, loss=1.68]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1338/3000]: Train loss: 1.8386, Valid loss: 2.4749\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1339/3000]: 100%|██████████| 9/9 [00:00<00:00, 78.60it/s, loss=2.65]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1339/3000]: Train loss: 1.8444, Valid loss: 1.8335\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1340/3000]: 100%|██████████| 9/9 [00:00<00:00, 86.41it/s, loss=2.42]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1340/3000]: Train loss: 1.9915, Valid loss: 1.8877\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1341/3000]: 100%|██████████| 9/9 [00:00<00:00, 85.59it/s, loss=1.71]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1341/3000]: Train loss: 1.9775, Valid loss: 2.2939\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1342/3000]: 100%|██████████| 9/9 [00:00<00:00, 80.93it/s, loss=3.26]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1342/3000]: Train loss: 1.9485, Valid loss: 2.4297\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1343/3000]: 100%|██████████| 9/9 [00:00<00:00, 83.49it/s, loss=2.55]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1343/3000]: Train loss: 1.9662, Valid loss: 2.2087\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1344/3000]: 100%|██████████| 9/9 [00:00<00:00, 77.41it/s, loss=2.25]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1344/3000]: Train loss: 2.5213, Valid loss: 4.6405\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1345/3000]: 100%|██████████| 9/9 [00:00<00:00, 85.20it/s, loss=2.12]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1345/3000]: Train loss: 2.9292, Valid loss: 4.6132\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1346/3000]: 100%|██████████| 9/9 [00:00<00:00, 94.31it/s, loss=1.74]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1346/3000]: Train loss: 3.2568, Valid loss: 4.6461\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1347/3000]: 100%|██████████| 9/9 [00:00<00:00, 88.07it/s, loss=1.63]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1347/3000]: Train loss: 2.7344, Valid loss: 2.4054\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1348/3000]: 100%|██████████| 9/9 [00:00<00:00, 75.77it/s, loss=1.87]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1348/3000]: Train loss: 2.2766, Valid loss: 1.9032\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1349/3000]: 100%|██████████| 9/9 [00:00<00:00, 74.29it/s, loss=1.17]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1349/3000]: Train loss: 2.0206, Valid loss: 2.5092\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1350/3000]: 100%|██████████| 9/9 [00:00<00:00, 81.36it/s, loss=2.83]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1350/3000]: Train loss: 2.2752, Valid loss: 2.3688\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1351/3000]: 100%|██████████| 9/9 [00:00<00:00, 76.14it/s, loss=3.93]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1351/3000]: Train loss: 3.4274, Valid loss: 4.1532\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1352/3000]: 100%|██████████| 9/9 [00:00<00:00, 75.91it/s, loss=1.85]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1352/3000]: Train loss: 2.7761, Valid loss: 2.4912\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1353/3000]: 100%|██████████| 9/9 [00:00<00:00, 84.35it/s, loss=1.56]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1353/3000]: Train loss: 1.8889, Valid loss: 1.9074\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1354/3000]: 100%|██████████| 9/9 [00:00<00:00, 69.91it/s, loss=1.87]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1354/3000]: Train loss: 1.7873, Valid loss: 2.4347\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1355/3000]: 100%|██████████| 9/9 [00:00<00:00, 85.49it/s, loss=1.76]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1355/3000]: Train loss: 1.8979, Valid loss: 2.5905\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1356/3000]: 100%|██████████| 9/9 [00:00<00:00, 65.35it/s, loss=1.95]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1356/3000]: Train loss: 1.9119, Valid loss: 1.9211\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1357/3000]: 100%|██████████| 9/9 [00:00<00:00, 97.33it/s, loss=2.27]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1357/3000]: Train loss: 1.7931, Valid loss: 2.1575\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1358/3000]: 100%|██████████| 9/9 [00:00<00:00, 97.91it/s, loss=2.03]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1358/3000]: Train loss: 1.8209, Valid loss: 2.0722\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1359/3000]: 100%|██████████| 9/9 [00:00<00:00, 80.29it/s, loss=1.8]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1359/3000]: Train loss: 1.8943, Valid loss: 2.0560\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1360/3000]: 100%|██████████| 9/9 [00:00<00:00, 69.76it/s, loss=1.83]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1360/3000]: Train loss: 1.8628, Valid loss: 2.3596\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1361/3000]: 100%|██████████| 9/9 [00:00<00:00, 96.21it/s, loss=1.31]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1361/3000]: Train loss: 1.8714, Valid loss: 2.6313\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1362/3000]: 100%|██████████| 9/9 [00:00<00:00, 95.99it/s, loss=2.16]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1362/3000]: Train loss: 1.9207, Valid loss: 3.0034\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1363/3000]: 100%|██████████| 9/9 [00:00<00:00, 81.57it/s, loss=1.41]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1363/3000]: Train loss: 2.0354, Valid loss: 2.3995\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1364/3000]: 100%|██████████| 9/9 [00:00<00:00, 93.36it/s, loss=3.51]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1364/3000]: Train loss: 2.3516, Valid loss: 1.9039\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1365/3000]: 100%|██████████| 9/9 [00:00<00:00, 92.69it/s, loss=2.84]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1365/3000]: Train loss: 2.0923, Valid loss: 1.7311\n", + "Saving model with loss 1.731...\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1366/3000]: 100%|██████████| 9/9 [00:00<00:00, 96.68it/s, loss=1.5]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1366/3000]: Train loss: 1.9977, Valid loss: 2.0161\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1367/3000]: 100%|██████████| 9/9 [00:00<00:00, 98.33it/s, loss=1.14]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1367/3000]: Train loss: 1.9289, Valid loss: 2.4847\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1368/3000]: 100%|██████████| 9/9 [00:00<00:00, 96.84it/s, loss=1.52]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1368/3000]: Train loss: 1.9327, Valid loss: 2.0236\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1369/3000]: 100%|██████████| 9/9 [00:00<00:00, 101.87it/s, loss=2.49]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1369/3000]: Train loss: 1.8254, Valid loss: 2.0020\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1370/3000]: 100%|██████████| 9/9 [00:00<00:00, 80.24it/s, loss=1.42]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1370/3000]: Train loss: 1.8673, Valid loss: 1.9408\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1371/3000]: 100%|██████████| 9/9 [00:00<00:00, 60.64it/s, loss=1.55]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1371/3000]: Train loss: 1.7763, Valid loss: 1.7744\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1372/3000]: 100%|██████████| 9/9 [00:00<00:00, 83.23it/s, loss=2.94]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1372/3000]: Train loss: 2.0149, Valid loss: 2.8773\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1373/3000]: 100%|██████████| 9/9 [00:00<00:00, 95.53it/s, loss=2.19]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1373/3000]: Train loss: 1.9737, Valid loss: 1.8288\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1374/3000]: 100%|██████████| 9/9 [00:00<00:00, 93.69it/s, loss=2.52]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1374/3000]: Train loss: 2.0295, Valid loss: 2.1504\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1375/3000]: 100%|██████████| 9/9 [00:00<00:00, 96.49it/s, loss=1.85]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1375/3000]: Train loss: 2.0928, Valid loss: 2.1458\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1376/3000]: 100%|██████████| 9/9 [00:00<00:00, 86.79it/s, loss=1.49]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1376/3000]: Train loss: 1.8823, Valid loss: 2.1014\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1377/3000]: 100%|██████████| 9/9 [00:00<00:00, 81.00it/s, loss=2.39]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1377/3000]: Train loss: 1.8496, Valid loss: 3.1399\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1378/3000]: 100%|██████████| 9/9 [00:00<00:00, 72.64it/s, loss=2.56]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1378/3000]: Train loss: 2.1048, Valid loss: 3.1076\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1379/3000]: 100%|██████████| 9/9 [00:00<00:00, 81.60it/s, loss=3.61]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1379/3000]: Train loss: 2.6317, Valid loss: 2.0500\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1380/3000]: 100%|██████████| 9/9 [00:00<00:00, 72.25it/s, loss=2.78]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1380/3000]: Train loss: 2.4284, Valid loss: 2.5539\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1381/3000]: 100%|██████████| 9/9 [00:00<00:00, 86.36it/s, loss=2.37]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1381/3000]: Train loss: 2.6359, Valid loss: 3.7967\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1382/3000]: 100%|██████████| 9/9 [00:00<00:00, 85.77it/s, loss=2.4]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1382/3000]: Train loss: 2.3463, Valid loss: 2.0455\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1383/3000]: 100%|██████████| 9/9 [00:00<00:00, 89.82it/s, loss=2.02]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1383/3000]: Train loss: 1.8732, Valid loss: 1.8775\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1384/3000]: 100%|██████████| 9/9 [00:00<00:00, 72.91it/s, loss=1.59]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1384/3000]: Train loss: 1.7724, Valid loss: 2.1091\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1385/3000]: 100%|██████████| 9/9 [00:00<00:00, 70.09it/s, loss=2.76]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1385/3000]: Train loss: 2.2274, Valid loss: 2.5945\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1386/3000]: 100%|██████████| 9/9 [00:00<00:00, 89.94it/s, loss=1.63]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1386/3000]: Train loss: 1.9993, Valid loss: 3.2317\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1387/3000]: 100%|██████████| 9/9 [00:00<00:00, 96.87it/s, loss=2.02]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1387/3000]: Train loss: 2.2212, Valid loss: 2.0591\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1388/3000]: 100%|██████████| 9/9 [00:00<00:00, 78.67it/s, loss=2.2]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1388/3000]: Train loss: 2.2146, Valid loss: 2.3368\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1389/3000]: 100%|██████████| 9/9 [00:00<00:00, 82.70it/s, loss=1.63]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1389/3000]: Train loss: 1.9401, Valid loss: 2.3631\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1390/3000]: 100%|██████████| 9/9 [00:00<00:00, 82.67it/s, loss=2.15]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1390/3000]: Train loss: 1.8121, Valid loss: 2.1690\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1391/3000]: 100%|██████████| 9/9 [00:00<00:00, 94.55it/s, loss=1.75]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1391/3000]: Train loss: 1.8418, Valid loss: 1.9014\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1392/3000]: 100%|██████████| 9/9 [00:00<00:00, 79.77it/s, loss=1.87]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1392/3000]: Train loss: 1.9081, Valid loss: 1.9295\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1393/3000]: 100%|██████████| 9/9 [00:00<00:00, 63.81it/s, loss=2.23]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1393/3000]: Train loss: 1.8962, Valid loss: 1.9879\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1394/3000]: 100%|██████████| 9/9 [00:00<00:00, 89.82it/s, loss=2.02]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1394/3000]: Train loss: 1.9454, Valid loss: 2.7752\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1395/3000]: 100%|██████████| 9/9 [00:00<00:00, 94.98it/s, loss=2.62]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1395/3000]: Train loss: 2.4390, Valid loss: 3.4716\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1396/3000]: 100%|██████████| 9/9 [00:00<00:00, 79.12it/s, loss=2.58]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1396/3000]: Train loss: 2.5263, Valid loss: 2.1547\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1397/3000]: 100%|██████████| 9/9 [00:00<00:00, 70.99it/s, loss=1.76]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1397/3000]: Train loss: 1.9365, Valid loss: 2.2199\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1398/3000]: 100%|██████████| 9/9 [00:00<00:00, 69.63it/s, loss=1.86]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1398/3000]: Train loss: 1.8186, Valid loss: 1.7843\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1399/3000]: 100%|██████████| 9/9 [00:00<00:00, 75.35it/s, loss=1.86]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1399/3000]: Train loss: 1.7860, Valid loss: 2.2128\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1400/3000]: 100%|██████████| 9/9 [00:00<00:00, 80.18it/s, loss=2.14]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1400/3000]: Train loss: 1.9752, Valid loss: 2.4944\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1401/3000]: 100%|██████████| 9/9 [00:00<00:00, 28.01it/s, loss=1.49]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1401/3000]: Train loss: 2.0287, Valid loss: 3.6195\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1402/3000]: 100%|██████████| 9/9 [00:00<00:00, 69.18it/s, loss=2]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1402/3000]: Train loss: 2.3356, Valid loss: 1.9141\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1403/3000]: 100%|██████████| 9/9 [00:00<00:00, 70.78it/s, loss=1.48]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1403/3000]: Train loss: 1.8555, Valid loss: 2.4301\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1404/3000]: 100%|██████████| 9/9 [00:00<00:00, 84.03it/s, loss=2.12]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1404/3000]: Train loss: 1.8404, Valid loss: 2.1546\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1405/3000]: 100%|██████████| 9/9 [00:00<00:00, 86.48it/s, loss=2.47]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1405/3000]: Train loss: 2.0327, Valid loss: 2.4043\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1406/3000]: 100%|██████████| 9/9 [00:00<00:00, 80.15it/s, loss=1.87]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1406/3000]: Train loss: 2.4050, Valid loss: 2.3792\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1407/3000]: 100%|██████████| 9/9 [00:00<00:00, 70.41it/s, loss=3.13]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1407/3000]: Train loss: 2.0130, Valid loss: 2.3751\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1408/3000]: 100%|██████████| 9/9 [00:00<00:00, 98.65it/s, loss=2.11]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1408/3000]: Train loss: 2.2792, Valid loss: 2.9841\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1409/3000]: 100%|██████████| 9/9 [00:00<00:00, 74.76it/s, loss=2.02]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1409/3000]: Train loss: 2.1873, Valid loss: 2.7055\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1410/3000]: 100%|██████████| 9/9 [00:00<00:00, 82.83it/s, loss=1.69]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1410/3000]: Train loss: 2.1205, Valid loss: 2.3454\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1411/3000]: 100%|██████████| 9/9 [00:00<00:00, 78.24it/s, loss=1.58]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1411/3000]: Train loss: 1.7741, Valid loss: 2.4808\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1412/3000]: 100%|██████████| 9/9 [00:00<00:00, 76.45it/s, loss=1.42]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1412/3000]: Train loss: 1.7725, Valid loss: 2.7569\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1413/3000]: 100%|██████████| 9/9 [00:00<00:00, 81.58it/s, loss=2.4]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1413/3000]: Train loss: 1.9248, Valid loss: 2.5408\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1414/3000]: 100%|██████████| 9/9 [00:00<00:00, 96.11it/s, loss=1.32]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1414/3000]: Train loss: 2.0068, Valid loss: 2.8860\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1415/3000]: 100%|██████████| 9/9 [00:00<00:00, 101.77it/s, loss=2.16]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1415/3000]: Train loss: 2.1569, Valid loss: 1.8836\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1416/3000]: 100%|██████████| 9/9 [00:00<00:00, 100.09it/s, loss=1.83]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1416/3000]: Train loss: 1.9867, Valid loss: 2.3142\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1417/3000]: 100%|██████████| 9/9 [00:00<00:00, 93.13it/s, loss=2.9]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1417/3000]: Train loss: 2.2071, Valid loss: 2.2050\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1418/3000]: 100%|██████████| 9/9 [00:00<00:00, 92.98it/s, loss=2.21]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1418/3000]: Train loss: 1.9090, Valid loss: 2.1755\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1419/3000]: 100%|██████████| 9/9 [00:00<00:00, 73.50it/s, loss=1.75]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1419/3000]: Train loss: 1.7691, Valid loss: 2.5342\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1420/3000]: 100%|██████████| 9/9 [00:00<00:00, 98.80it/s, loss=2.48]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1420/3000]: Train loss: 2.2600, Valid loss: 2.4200\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1421/3000]: 100%|██████████| 9/9 [00:00<00:00, 95.10it/s, loss=1.38]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1421/3000]: Train loss: 1.9235, Valid loss: 1.9654\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1422/3000]: 100%|██████████| 9/9 [00:00<00:00, 98.91it/s, loss=1.99]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1422/3000]: Train loss: 1.8147, Valid loss: 2.5551\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1423/3000]: 100%|██████████| 9/9 [00:00<00:00, 85.80it/s, loss=2.41]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1423/3000]: Train loss: 1.9827, Valid loss: 1.8963\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1424/3000]: 100%|██████████| 9/9 [00:00<00:00, 83.03it/s, loss=4.13]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1424/3000]: Train loss: 3.5479, Valid loss: 3.4359\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1425/3000]: 100%|██████████| 9/9 [00:00<00:00, 91.06it/s, loss=4.07]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1425/3000]: Train loss: 3.1021, Valid loss: 3.3884\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1426/3000]: 100%|██████████| 9/9 [00:00<00:00, 71.42it/s, loss=1.95]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1426/3000]: Train loss: 2.7190, Valid loss: 2.6595\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1427/3000]: 100%|██████████| 9/9 [00:00<00:00, 78.49it/s, loss=2.18]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1427/3000]: Train loss: 2.0869, Valid loss: 2.2874\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1428/3000]: 100%|██████████| 9/9 [00:00<00:00, 97.19it/s, loss=1.5]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1428/3000]: Train loss: 1.7653, Valid loss: 2.1425\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1429/3000]: 100%|██████████| 9/9 [00:00<00:00, 81.43it/s, loss=1.51]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1429/3000]: Train loss: 1.8219, Valid loss: 1.9474\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1430/3000]: 100%|██████████| 9/9 [00:00<00:00, 69.41it/s, loss=1.5]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1430/3000]: Train loss: 1.7269, Valid loss: 1.9433\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1431/3000]: 100%|██████████| 9/9 [00:00<00:00, 79.95it/s, loss=1.82]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1431/3000]: Train loss: 2.0206, Valid loss: 2.1486\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1432/3000]: 100%|██████████| 9/9 [00:00<00:00, 86.15it/s, loss=1.48]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1432/3000]: Train loss: 1.7150, Valid loss: 1.9320\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1433/3000]: 100%|██████████| 9/9 [00:00<00:00, 67.38it/s, loss=1.9]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1433/3000]: Train loss: 1.8913, Valid loss: 2.2670\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1434/3000]: 100%|██████████| 9/9 [00:00<00:00, 94.32it/s, loss=1.94]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1434/3000]: Train loss: 1.8180, Valid loss: 2.2770\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1435/3000]: 100%|██████████| 9/9 [00:00<00:00, 96.45it/s, loss=2.04]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1435/3000]: Train loss: 2.1051, Valid loss: 2.1933\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1436/3000]: 100%|██████████| 9/9 [00:00<00:00, 92.81it/s, loss=1.71]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1436/3000]: Train loss: 2.0719, Valid loss: 2.6506\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1437/3000]: 100%|██████████| 9/9 [00:00<00:00, 92.07it/s, loss=2.3]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1437/3000]: Train loss: 2.1872, Valid loss: 2.9334\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1438/3000]: 100%|██████████| 9/9 [00:00<00:00, 81.73it/s, loss=2.91]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1438/3000]: Train loss: 2.3918, Valid loss: 1.7930\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1439/3000]: 100%|██████████| 9/9 [00:00<00:00, 71.90it/s, loss=1.3]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1439/3000]: Train loss: 2.1583, Valid loss: 2.0172\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1440/3000]: 100%|██████████| 9/9 [00:00<00:00, 84.43it/s, loss=2.21]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1440/3000]: Train loss: 1.8992, Valid loss: 3.3030\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1441/3000]: 100%|██████████| 9/9 [00:00<00:00, 86.30it/s, loss=1.72]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1441/3000]: Train loss: 2.4890, Valid loss: 3.6599\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1442/3000]: 100%|██████████| 9/9 [00:00<00:00, 79.25it/s, loss=1.75]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1442/3000]: Train loss: 2.3387, Valid loss: 2.3542\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1443/3000]: 100%|██████████| 9/9 [00:00<00:00, 85.95it/s, loss=1.55]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1443/3000]: Train loss: 1.8001, Valid loss: 1.9318\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1444/3000]: 100%|██████████| 9/9 [00:00<00:00, 91.69it/s, loss=1.98]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1444/3000]: Train loss: 1.8024, Valid loss: 2.1405\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1445/3000]: 100%|██████████| 9/9 [00:00<00:00, 85.91it/s, loss=1.85]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1445/3000]: Train loss: 1.7688, Valid loss: 2.0754\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1446/3000]: 100%|██████████| 9/9 [00:00<00:00, 70.58it/s, loss=1.62]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1446/3000]: Train loss: 1.9955, Valid loss: 1.9249\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1447/3000]: 100%|██████████| 9/9 [00:00<00:00, 86.30it/s, loss=1.93]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1447/3000]: Train loss: 1.8522, Valid loss: 2.4840\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1448/3000]: 100%|██████████| 9/9 [00:00<00:00, 94.63it/s, loss=1.88]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1448/3000]: Train loss: 1.8268, Valid loss: 2.5599\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1449/3000]: 100%|██████████| 9/9 [00:00<00:00, 97.59it/s, loss=2.02]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1449/3000]: Train loss: 1.8528, Valid loss: 2.1618\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1450/3000]: 100%|██████████| 9/9 [00:00<00:00, 85.55it/s, loss=1.7]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1450/3000]: Train loss: 1.7801, Valid loss: 1.8956\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1451/3000]: 100%|██████████| 9/9 [00:00<00:00, 91.02it/s, loss=1.95]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1451/3000]: Train loss: 1.7491, Valid loss: 1.8454\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1452/3000]: 100%|██████████| 9/9 [00:00<00:00, 78.19it/s, loss=2.21]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1452/3000]: Train loss: 1.9060, Valid loss: 1.9412\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1453/3000]: 100%|██████████| 9/9 [00:00<00:00, 83.45it/s, loss=2.32]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1453/3000]: Train loss: 2.0327, Valid loss: 2.2147\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1454/3000]: 100%|██████████| 9/9 [00:00<00:00, 98.87it/s, loss=2.04]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1454/3000]: Train loss: 1.9480, Valid loss: 2.3384\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1455/3000]: 100%|██████████| 9/9 [00:00<00:00, 81.70it/s, loss=1.82]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1455/3000]: Train loss: 1.7843, Valid loss: 1.9855\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1456/3000]: 100%|██████████| 9/9 [00:00<00:00, 87.83it/s, loss=1.73]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1456/3000]: Train loss: 1.8847, Valid loss: 2.8371\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1457/3000]: 100%|██████████| 9/9 [00:00<00:00, 89.85it/s, loss=1.61]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1457/3000]: Train loss: 1.9195, Valid loss: 2.5639\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1458/3000]: 100%|██████████| 9/9 [00:00<00:00, 74.19it/s, loss=3.02]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1458/3000]: Train loss: 2.2985, Valid loss: 2.1127\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1459/3000]: 100%|██████████| 9/9 [00:00<00:00, 79.95it/s, loss=1.98]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1459/3000]: Train loss: 2.2937, Valid loss: 1.8889\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1460/3000]: 100%|██████████| 9/9 [00:00<00:00, 78.04it/s, loss=1.59]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1460/3000]: Train loss: 1.7483, Valid loss: 2.3353\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1461/3000]: 100%|██████████| 9/9 [00:00<00:00, 91.91it/s, loss=1.54]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1461/3000]: Train loss: 1.8145, Valid loss: 1.9952\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1462/3000]: 100%|██████████| 9/9 [00:00<00:00, 98.74it/s, loss=1.37]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1462/3000]: Train loss: 1.7501, Valid loss: 1.9806\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1463/3000]: 100%|██████████| 9/9 [00:00<00:00, 97.08it/s, loss=2.32]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1463/3000]: Train loss: 1.8422, Valid loss: 2.0184\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1464/3000]: 100%|██████████| 9/9 [00:00<00:00, 100.24it/s, loss=1.73]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1464/3000]: Train loss: 1.7667, Valid loss: 2.4219\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1465/3000]: 100%|██████████| 9/9 [00:00<00:00, 100.75it/s, loss=2.34]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1465/3000]: Train loss: 2.3921, Valid loss: 1.8370\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1466/3000]: 100%|██████████| 9/9 [00:00<00:00, 89.90it/s, loss=1.8]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1466/3000]: Train loss: 2.6680, Valid loss: 3.5953\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1467/3000]: 100%|██████████| 9/9 [00:00<00:00, 73.27it/s, loss=1.66]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1467/3000]: Train loss: 2.2072, Valid loss: 2.6788\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1468/3000]: 100%|██████████| 9/9 [00:00<00:00, 92.60it/s, loss=2.71]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1468/3000]: Train loss: 2.1990, Valid loss: 2.4254\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1469/3000]: 100%|██████████| 9/9 [00:00<00:00, 93.64it/s, loss=2.06]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1469/3000]: Train loss: 1.8788, Valid loss: 2.8391\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1470/3000]: 100%|██████████| 9/9 [00:00<00:00, 87.09it/s, loss=2.28]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1470/3000]: Train loss: 2.4526, Valid loss: 2.0502\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1471/3000]: 100%|██████████| 9/9 [00:00<00:00, 94.77it/s, loss=3.11]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1471/3000]: Train loss: 3.0386, Valid loss: 2.0070\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1472/3000]: 100%|██████████| 9/9 [00:00<00:00, 87.57it/s, loss=1.96]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1472/3000]: Train loss: 2.4544, Valid loss: 2.1758\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1473/3000]: 100%|██████████| 9/9 [00:00<00:00, 91.12it/s, loss=2.31]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1473/3000]: Train loss: 1.9687, Valid loss: 2.6396\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1474/3000]: 100%|██████████| 9/9 [00:00<00:00, 86.39it/s, loss=1.69]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1474/3000]: Train loss: 2.0513, Valid loss: 3.0415\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1475/3000]: 100%|██████████| 9/9 [00:00<00:00, 83.27it/s, loss=1.54]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1475/3000]: Train loss: 2.2353, Valid loss: 1.7483\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1476/3000]: 100%|██████████| 9/9 [00:00<00:00, 90.11it/s, loss=1.39]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1476/3000]: Train loss: 2.1715, Valid loss: 2.3501\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1477/3000]: 100%|██████████| 9/9 [00:00<00:00, 92.20it/s, loss=2.04]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1477/3000]: Train loss: 1.9536, Valid loss: 1.8922\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1478/3000]: 100%|██████████| 9/9 [00:00<00:00, 90.14it/s, loss=1.91]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1478/3000]: Train loss: 1.8216, Valid loss: 2.0559\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1479/3000]: 100%|██████████| 9/9 [00:00<00:00, 85.13it/s, loss=1.23]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1479/3000]: Train loss: 1.8174, Valid loss: 1.9946\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1480/3000]: 100%|██████████| 9/9 [00:00<00:00, 90.44it/s, loss=1.47]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1480/3000]: Train loss: 1.7599, Valid loss: 2.2487\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1481/3000]: 100%|██████████| 9/9 [00:00<00:00, 93.93it/s, loss=1.67]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1481/3000]: Train loss: 1.8062, Valid loss: 1.7218\n", + "Saving model with loss 1.722...\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1482/3000]: 100%|██████████| 9/9 [00:00<00:00, 92.93it/s, loss=1.52]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1482/3000]: Train loss: 1.7246, Valid loss: 2.3966\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1483/3000]: 100%|██████████| 9/9 [00:00<00:00, 29.70it/s, loss=1.71]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1483/3000]: Train loss: 1.7363, Valid loss: 1.6272\n", + "Saving model with loss 1.627...\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1484/3000]: 100%|██████████| 9/9 [00:00<00:00, 70.56it/s, loss=1.4]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1484/3000]: Train loss: 1.7284, Valid loss: 1.9830\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1485/3000]: 100%|██████████| 9/9 [00:00<00:00, 85.46it/s, loss=2.37]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1485/3000]: Train loss: 1.8361, Valid loss: 3.7253\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1486/3000]: 100%|██████████| 9/9 [00:00<00:00, 66.20it/s, loss=2.33]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1486/3000]: Train loss: 2.3987, Valid loss: 2.5974\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1487/3000]: 100%|██████████| 9/9 [00:00<00:00, 70.63it/s, loss=2.17]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1487/3000]: Train loss: 2.3695, Valid loss: 2.3688\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1488/3000]: 100%|██████████| 9/9 [00:00<00:00, 88.12it/s, loss=1.85]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1488/3000]: Train loss: 1.8377, Valid loss: 2.6417\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1489/3000]: 100%|██████████| 9/9 [00:00<00:00, 96.83it/s, loss=2.03]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1489/3000]: Train loss: 1.8688, Valid loss: 2.2295\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1490/3000]: 100%|██████████| 9/9 [00:00<00:00, 94.16it/s, loss=1.81]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1490/3000]: Train loss: 1.7608, Valid loss: 2.1687\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1491/3000]: 100%|██████████| 9/9 [00:00<00:00, 85.58it/s, loss=1.83]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1491/3000]: Train loss: 1.8530, Valid loss: 1.8633\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1492/3000]: 100%|██████████| 9/9 [00:00<00:00, 91.53it/s, loss=1.4]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1492/3000]: Train loss: 1.7641, Valid loss: 2.1231\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1493/3000]: 100%|██████████| 9/9 [00:00<00:00, 87.63it/s, loss=2.6]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1493/3000]: Train loss: 1.8125, Valid loss: 2.4234\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1494/3000]: 100%|██████████| 9/9 [00:00<00:00, 95.32it/s, loss=2.41]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1494/3000]: Train loss: 1.9852, Valid loss: 2.2969\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1495/3000]: 100%|██████████| 9/9 [00:00<00:00, 95.21it/s, loss=2.1]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1495/3000]: Train loss: 1.9719, Valid loss: 2.7215\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1496/3000]: 100%|██████████| 9/9 [00:00<00:00, 80.00it/s, loss=2.11]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1496/3000]: Train loss: 2.2357, Valid loss: 1.8807\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1497/3000]: 100%|██████████| 9/9 [00:00<00:00, 74.63it/s, loss=1.45]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1497/3000]: Train loss: 1.8821, Valid loss: 1.9447\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1498/3000]: 100%|██████████| 9/9 [00:00<00:00, 75.00it/s, loss=2.52]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1498/3000]: Train loss: 2.1692, Valid loss: 3.0157\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1499/3000]: 100%|██████████| 9/9 [00:00<00:00, 70.77it/s, loss=3.07]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1499/3000]: Train loss: 2.3044, Valid loss: 2.7877\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1500/3000]: 100%|██████████| 9/9 [00:00<00:00, 78.89it/s, loss=2.02]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1500/3000]: Train loss: 2.2162, Valid loss: 1.9155\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1501/3000]: 100%|██████████| 9/9 [00:00<00:00, 97.57it/s, loss=1.82]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1501/3000]: Train loss: 1.9173, Valid loss: 1.9047\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1502/3000]: 100%|██████████| 9/9 [00:00<00:00, 96.34it/s, loss=1.63]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1502/3000]: Train loss: 2.1816, Valid loss: 2.6362\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1503/3000]: 100%|██████████| 9/9 [00:00<00:00, 93.64it/s, loss=2.11]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1503/3000]: Train loss: 1.9845, Valid loss: 3.0660\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1504/3000]: 100%|██████████| 9/9 [00:00<00:00, 97.18it/s, loss=2.16]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1504/3000]: Train loss: 2.1090, Valid loss: 2.3136\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1505/3000]: 100%|██████████| 9/9 [00:00<00:00, 80.54it/s, loss=2]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1505/3000]: Train loss: 2.2183, Valid loss: 1.7646\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1506/3000]: 100%|██████████| 9/9 [00:00<00:00, 86.11it/s, loss=1.7]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1506/3000]: Train loss: 2.0376, Valid loss: 2.1503\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1507/3000]: 100%|██████████| 9/9 [00:00<00:00, 83.64it/s, loss=2.15]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1507/3000]: Train loss: 2.3879, Valid loss: 2.1784\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1508/3000]: 100%|██████████| 9/9 [00:00<00:00, 82.77it/s, loss=2.24]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1508/3000]: Train loss: 1.9978, Valid loss: 2.3620\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1509/3000]: 100%|██████████| 9/9 [00:00<00:00, 85.62it/s, loss=2.62]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1509/3000]: Train loss: 2.2572, Valid loss: 2.4431\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1510/3000]: 100%|██████████| 9/9 [00:00<00:00, 84.09it/s, loss=1.98]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1510/3000]: Train loss: 2.1530, Valid loss: 2.8780\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1511/3000]: 100%|██████████| 9/9 [00:00<00:00, 82.09it/s, loss=1.86]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1511/3000]: Train loss: 2.2510, Valid loss: 1.9548\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1512/3000]: 100%|██████████| 9/9 [00:00<00:00, 73.86it/s, loss=1.92]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1512/3000]: Train loss: 1.7976, Valid loss: 1.8802\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1513/3000]: 100%|██████████| 9/9 [00:00<00:00, 76.55it/s, loss=2.58]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1513/3000]: Train loss: 1.8211, Valid loss: 3.8803\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1514/3000]: 100%|██████████| 9/9 [00:00<00:00, 76.79it/s, loss=2.05]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1514/3000]: Train loss: 2.2717, Valid loss: 2.0853\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1515/3000]: 100%|██████████| 9/9 [00:00<00:00, 70.36it/s, loss=2.52]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1515/3000]: Train loss: 2.1635, Valid loss: 1.8125\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1516/3000]: 100%|██████████| 9/9 [00:00<00:00, 83.95it/s, loss=1.86]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1516/3000]: Train loss: 1.7962, Valid loss: 2.6561\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1517/3000]: 100%|██████████| 9/9 [00:00<00:00, 72.38it/s, loss=1.47]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1517/3000]: Train loss: 1.7501, Valid loss: 2.4163\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1518/3000]: 100%|██████████| 9/9 [00:00<00:00, 77.99it/s, loss=1.53]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1518/3000]: Train loss: 1.7524, Valid loss: 2.3366\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1519/3000]: 100%|██████████| 9/9 [00:00<00:00, 73.69it/s, loss=2.33]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1519/3000]: Train loss: 1.8708, Valid loss: 1.8383\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1520/3000]: 100%|██████████| 9/9 [00:00<00:00, 85.26it/s, loss=2.06]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1520/3000]: Train loss: 1.9890, Valid loss: 2.1681\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1521/3000]: 100%|██████████| 9/9 [00:00<00:00, 77.35it/s, loss=2.04]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1521/3000]: Train loss: 1.8540, Valid loss: 1.7917\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1522/3000]: 100%|██████████| 9/9 [00:00<00:00, 71.32it/s, loss=2.04]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1522/3000]: Train loss: 1.7683, Valid loss: 2.0206\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1523/3000]: 100%|██████████| 9/9 [00:00<00:00, 92.09it/s, loss=2.11]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1523/3000]: Train loss: 1.9465, Valid loss: 3.9866\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1524/3000]: 100%|██████████| 9/9 [00:00<00:00, 91.81it/s, loss=1.64]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1524/3000]: Train loss: 2.1115, Valid loss: 2.8652\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1525/3000]: 100%|██████████| 9/9 [00:00<00:00, 92.56it/s, loss=2.9]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1525/3000]: Train loss: 2.3415, Valid loss: 1.9781\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1526/3000]: 100%|██████████| 9/9 [00:00<00:00, 74.73it/s, loss=2.11]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1526/3000]: Train loss: 2.2108, Valid loss: 2.1657\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1527/3000]: 100%|██████████| 9/9 [00:00<00:00, 65.21it/s, loss=1.7]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1527/3000]: Train loss: 1.7750, Valid loss: 1.8818\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1528/3000]: 100%|██████████| 9/9 [00:00<00:00, 81.04it/s, loss=1.68]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1528/3000]: Train loss: 1.7652, Valid loss: 1.9014\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1529/3000]: 100%|██████████| 9/9 [00:00<00:00, 82.08it/s, loss=1.25]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1529/3000]: Train loss: 1.7300, Valid loss: 1.9630\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1530/3000]: 100%|██████████| 9/9 [00:00<00:00, 83.89it/s, loss=1.49]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1530/3000]: Train loss: 1.7132, Valid loss: 2.3060\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1531/3000]: 100%|██████████| 9/9 [00:00<00:00, 86.72it/s, loss=2.18]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1531/3000]: Train loss: 1.9987, Valid loss: 3.0986\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1532/3000]: 100%|██████████| 9/9 [00:00<00:00, 83.20it/s, loss=1.71]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1532/3000]: Train loss: 2.0343, Valid loss: 2.3279\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1533/3000]: 100%|██████████| 9/9 [00:00<00:00, 91.20it/s, loss=2.63]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1533/3000]: Train loss: 2.2248, Valid loss: 1.8651\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1534/3000]: 100%|██████████| 9/9 [00:00<00:00, 70.19it/s, loss=2.89]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1534/3000]: Train loss: 1.8794, Valid loss: 2.7338\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1535/3000]: 100%|██████████| 9/9 [00:00<00:00, 92.76it/s, loss=1.74]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1535/3000]: Train loss: 2.0740, Valid loss: 1.8327\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1536/3000]: 100%|██████████| 9/9 [00:00<00:00, 90.25it/s, loss=1.23]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1536/3000]: Train loss: 1.9346, Valid loss: 2.6537\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1537/3000]: 100%|██████████| 9/9 [00:00<00:00, 83.36it/s, loss=1.64]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1537/3000]: Train loss: 1.9563, Valid loss: 1.8528\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1538/3000]: 100%|██████████| 9/9 [00:00<00:00, 85.92it/s, loss=2.04]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1538/3000]: Train loss: 1.8982, Valid loss: 2.0864\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1539/3000]: 100%|██████████| 9/9 [00:00<00:00, 95.30it/s, loss=1.45]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1539/3000]: Train loss: 2.1492, Valid loss: 2.2820\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1540/3000]: 100%|██████████| 9/9 [00:00<00:00, 97.35it/s, loss=1.9]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1540/3000]: Train loss: 2.0066, Valid loss: 1.6735\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1541/3000]: 100%|██████████| 9/9 [00:00<00:00, 85.56it/s, loss=1.29]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1541/3000]: Train loss: 2.1635, Valid loss: 2.3534\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1542/3000]: 100%|██████████| 9/9 [00:00<00:00, 72.47it/s, loss=2.23]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1542/3000]: Train loss: 1.8724, Valid loss: 2.0537\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1543/3000]: 100%|██████████| 9/9 [00:00<00:00, 81.79it/s, loss=2.03]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1543/3000]: Train loss: 1.7637, Valid loss: 2.0338\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1544/3000]: 100%|██████████| 9/9 [00:00<00:00, 77.82it/s, loss=1.82]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1544/3000]: Train loss: 1.8288, Valid loss: 1.8406\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1545/3000]: 100%|██████████| 9/9 [00:00<00:00, 93.26it/s, loss=1.57]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1545/3000]: Train loss: 1.9593, Valid loss: 2.5093\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1546/3000]: 100%|██████████| 9/9 [00:00<00:00, 85.41it/s, loss=1.53]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1546/3000]: Train loss: 1.9364, Valid loss: 2.4834\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1547/3000]: 100%|██████████| 9/9 [00:00<00:00, 84.40it/s, loss=2.46]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1547/3000]: Train loss: 2.0358, Valid loss: 2.0220\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1548/3000]: 100%|██████████| 9/9 [00:00<00:00, 74.90it/s, loss=2.23]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1548/3000]: Train loss: 1.9036, Valid loss: 2.1722\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1549/3000]: 100%|██████████| 9/9 [00:00<00:00, 84.38it/s, loss=1.41]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1549/3000]: Train loss: 1.8329, Valid loss: 2.1125\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1550/3000]: 100%|██████████| 9/9 [00:00<00:00, 92.27it/s, loss=2.21]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1550/3000]: Train loss: 1.8219, Valid loss: 1.8065\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1551/3000]: 100%|██████████| 9/9 [00:00<00:00, 69.43it/s, loss=2.27]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1551/3000]: Train loss: 2.0332, Valid loss: 2.9656\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1552/3000]: 100%|██████████| 9/9 [00:00<00:00, 74.25it/s, loss=2.16]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1552/3000]: Train loss: 1.9771, Valid loss: 1.8458\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1553/3000]: 100%|██████████| 9/9 [00:00<00:00, 101.12it/s, loss=3.03]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1553/3000]: Train loss: 2.5656, Valid loss: 2.5655\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1554/3000]: 100%|██████████| 9/9 [00:00<00:00, 84.96it/s, loss=3.31]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1554/3000]: Train loss: 2.7799, Valid loss: 4.0161\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1555/3000]: 100%|██████████| 9/9 [00:00<00:00, 94.26it/s, loss=2.68]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1555/3000]: Train loss: 2.4229, Valid loss: 2.1327\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1556/3000]: 100%|██████████| 9/9 [00:00<00:00, 83.08it/s, loss=2.62]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1556/3000]: Train loss: 1.9472, Valid loss: 2.2191\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1557/3000]: 100%|██████████| 9/9 [00:00<00:00, 85.01it/s, loss=1.85]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1557/3000]: Train loss: 1.8403, Valid loss: 2.5795\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1558/3000]: 100%|██████████| 9/9 [00:00<00:00, 79.57it/s, loss=1.64]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1558/3000]: Train loss: 1.9398, Valid loss: 2.1768\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1559/3000]: 100%|██████████| 9/9 [00:00<00:00, 81.06it/s, loss=1.87]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1559/3000]: Train loss: 2.0185, Valid loss: 1.7636\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1560/3000]: 100%|██████████| 9/9 [00:00<00:00, 95.71it/s, loss=1.95]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1560/3000]: Train loss: 1.8461, Valid loss: 1.9448\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1561/3000]: 100%|██████████| 9/9 [00:00<00:00, 95.79it/s, loss=2.33]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1561/3000]: Train loss: 1.8879, Valid loss: 2.1162\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1562/3000]: 100%|██████████| 9/9 [00:00<00:00, 98.38it/s, loss=1.79]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1562/3000]: Train loss: 1.7549, Valid loss: 2.1846\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1563/3000]: 100%|██████████| 9/9 [00:00<00:00, 91.96it/s, loss=1.35]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1563/3000]: Train loss: 1.8194, Valid loss: 2.2550\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1564/3000]: 100%|██████████| 9/9 [00:00<00:00, 97.59it/s, loss=1.85]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1564/3000]: Train loss: 1.7346, Valid loss: 1.8574\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1565/3000]: 100%|██████████| 9/9 [00:00<00:00, 85.04it/s, loss=2.19]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1565/3000]: Train loss: 1.7957, Valid loss: 1.9794\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1566/3000]: 100%|██████████| 9/9 [00:00<00:00, 72.23it/s, loss=2.04]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1566/3000]: Train loss: 1.9295, Valid loss: 2.3496\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1567/3000]: 100%|██████████| 9/9 [00:00<00:00, 83.39it/s, loss=1.74]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1567/3000]: Train loss: 2.1192, Valid loss: 1.9833\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1568/3000]: 100%|██████████| 9/9 [00:00<00:00, 79.21it/s, loss=1.5]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1568/3000]: Train loss: 1.8913, Valid loss: 1.9422\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1569/3000]: 100%|██████████| 9/9 [00:00<00:00, 75.52it/s, loss=1.61]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1569/3000]: Train loss: 1.8018, Valid loss: 2.0185\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1570/3000]: 100%|██████████| 9/9 [00:00<00:00, 86.13it/s, loss=1.65]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1570/3000]: Train loss: 1.7381, Valid loss: 2.0727\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1571/3000]: 100%|██████████| 9/9 [00:00<00:00, 76.55it/s, loss=1.93]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1571/3000]: Train loss: 1.7250, Valid loss: 1.9851\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1572/3000]: 100%|██████████| 9/9 [00:00<00:00, 92.11it/s, loss=1.63]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1572/3000]: Train loss: 1.8357, Valid loss: 1.7438\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1573/3000]: 100%|██████████| 9/9 [00:00<00:00, 83.16it/s, loss=1.72]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1573/3000]: Train loss: 1.7708, Valid loss: 2.3798\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1574/3000]: 100%|██████████| 9/9 [00:00<00:00, 79.14it/s, loss=2.08]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1574/3000]: Train loss: 1.7969, Valid loss: 1.9211\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1575/3000]: 100%|██████████| 9/9 [00:00<00:00, 85.62it/s, loss=1.49]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1575/3000]: Train loss: 1.7100, Valid loss: 2.0950\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1576/3000]: 100%|██████████| 9/9 [00:00<00:00, 79.69it/s, loss=1.49]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1576/3000]: Train loss: 1.6914, Valid loss: 2.1936\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1577/3000]: 100%|██████████| 9/9 [00:00<00:00, 83.78it/s, loss=1.79]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1577/3000]: Train loss: 1.7132, Valid loss: 2.0272\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1578/3000]: 100%|██████████| 9/9 [00:00<00:00, 96.86it/s, loss=3.15]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1578/3000]: Train loss: 1.9260, Valid loss: 3.0740\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1579/3000]: 100%|██████████| 9/9 [00:00<00:00, 102.86it/s, loss=1.56]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1579/3000]: Train loss: 1.9132, Valid loss: 2.1365\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1580/3000]: 100%|██████████| 9/9 [00:00<00:00, 95.80it/s, loss=2.11]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1580/3000]: Train loss: 1.8984, Valid loss: 2.8558\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1581/3000]: 100%|██████████| 9/9 [00:00<00:00, 93.15it/s, loss=2.27]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1581/3000]: Train loss: 2.0790, Valid loss: 2.6107\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1582/3000]: 100%|██████████| 9/9 [00:00<00:00, 102.08it/s, loss=1.8]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1582/3000]: Train loss: 1.9615, Valid loss: 2.1489\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1583/3000]: 100%|██████████| 9/9 [00:00<00:00, 81.32it/s, loss=2.87]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1583/3000]: Train loss: 2.0527, Valid loss: 2.1188\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1584/3000]: 100%|██████████| 9/9 [00:00<00:00, 79.46it/s, loss=2.84]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1584/3000]: Train loss: 2.0446, Valid loss: 4.9272\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1585/3000]: 100%|██████████| 9/9 [00:00<00:00, 96.85it/s, loss=2.53]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1585/3000]: Train loss: 2.6878, Valid loss: 2.9764\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1586/3000]: 100%|██████████| 9/9 [00:00<00:00, 85.25it/s, loss=2.9]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1586/3000]: Train loss: 2.5982, Valid loss: 2.0423\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1587/3000]: 100%|██████████| 9/9 [00:00<00:00, 89.19it/s, loss=2.23]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1587/3000]: Train loss: 2.0522, Valid loss: 3.0381\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1588/3000]: 100%|██████████| 9/9 [00:00<00:00, 95.99it/s, loss=1.59]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1588/3000]: Train loss: 2.0564, Valid loss: 1.9870\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1589/3000]: 100%|██████████| 9/9 [00:00<00:00, 98.09it/s, loss=2.28]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1589/3000]: Train loss: 2.3165, Valid loss: 2.5813\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1590/3000]: 100%|██████████| 9/9 [00:00<00:00, 93.90it/s, loss=1.88]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1590/3000]: Train loss: 1.8799, Valid loss: 1.9735\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1591/3000]: 100%|██████████| 9/9 [00:00<00:00, 84.19it/s, loss=1.81]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1591/3000]: Train loss: 2.0912, Valid loss: 3.0172\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1592/3000]: 100%|██████████| 9/9 [00:00<00:00, 77.69it/s, loss=2.19]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1592/3000]: Train loss: 2.1556, Valid loss: 2.1342\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1593/3000]: 100%|██████████| 9/9 [00:00<00:00, 85.31it/s, loss=2.39]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1593/3000]: Train loss: 1.7593, Valid loss: 2.4390\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1594/3000]: 100%|██████████| 9/9 [00:00<00:00, 75.27it/s, loss=1.44]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1594/3000]: Train loss: 1.7450, Valid loss: 2.1496\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1595/3000]: 100%|██████████| 9/9 [00:00<00:00, 79.79it/s, loss=1.82]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1595/3000]: Train loss: 1.8884, Valid loss: 1.9343\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1596/3000]: 100%|██████████| 9/9 [00:00<00:00, 84.33it/s, loss=2.01]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1596/3000]: Train loss: 1.8357, Valid loss: 1.9313\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1597/3000]: 100%|██████████| 9/9 [00:00<00:00, 81.97it/s, loss=3.71]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1597/3000]: Train loss: 2.3687, Valid loss: 2.9185\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1598/3000]: 100%|██████████| 9/9 [00:00<00:00, 80.55it/s, loss=1.68]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1598/3000]: Train loss: 2.0960, Valid loss: 2.3433\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1599/3000]: 100%|██████████| 9/9 [00:00<00:00, 77.76it/s, loss=1.81]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1599/3000]: Train loss: 1.8314, Valid loss: 2.3063\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1600/3000]: 100%|██████████| 9/9 [00:00<00:00, 77.71it/s, loss=2.01]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1600/3000]: Train loss: 1.8864, Valid loss: 1.7534\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1601/3000]: 100%|██████████| 9/9 [00:00<00:00, 82.80it/s, loss=1.81]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1601/3000]: Train loss: 1.7619, Valid loss: 2.6291\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1602/3000]: 100%|██████████| 9/9 [00:00<00:00, 66.82it/s, loss=1.61]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1602/3000]: Train loss: 1.8781, Valid loss: 2.8574\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1603/3000]: 100%|██████████| 9/9 [00:00<00:00, 65.90it/s, loss=2.99]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1603/3000]: Train loss: 2.1514, Valid loss: 2.5264\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1604/3000]: 100%|██████████| 9/9 [00:00<00:00, 82.66it/s, loss=1.38]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1604/3000]: Train loss: 1.9262, Valid loss: 2.6980\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1605/3000]: 100%|██████████| 9/9 [00:00<00:00, 71.86it/s, loss=1.5]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1605/3000]: Train loss: 1.8310, Valid loss: 1.7798\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1606/3000]: 100%|██████████| 9/9 [00:00<00:00, 84.29it/s, loss=1.3]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1606/3000]: Train loss: 1.6877, Valid loss: 2.6763\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1607/3000]: 100%|██████████| 9/9 [00:00<00:00, 74.16it/s, loss=2.13]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1607/3000]: Train loss: 1.9398, Valid loss: 2.6095\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1608/3000]: 100%|██████████| 9/9 [00:00<00:00, 67.40it/s, loss=1.37]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1608/3000]: Train loss: 1.7391, Valid loss: 2.0340\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1609/3000]: 100%|██████████| 9/9 [00:00<00:00, 91.55it/s, loss=1.52]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1609/3000]: Train loss: 1.7663, Valid loss: 2.2467\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1610/3000]: 100%|██████████| 9/9 [00:00<00:00, 96.14it/s, loss=2.25]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1610/3000]: Train loss: 1.7392, Valid loss: 1.8085\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1611/3000]: 100%|██████████| 9/9 [00:00<00:00, 91.78it/s, loss=1.4]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1611/3000]: Train loss: 1.7519, Valid loss: 1.8575\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1612/3000]: 100%|██████████| 9/9 [00:00<00:00, 93.33it/s, loss=1.93]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1612/3000]: Train loss: 1.7263, Valid loss: 1.9273\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1613/3000]: 100%|██████████| 9/9 [00:00<00:00, 80.15it/s, loss=1.52]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1613/3000]: Train loss: 1.7219, Valid loss: 1.8950\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1614/3000]: 100%|██████████| 9/9 [00:00<00:00, 73.90it/s, loss=2.12]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1614/3000]: Train loss: 1.7936, Valid loss: 2.1623\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1615/3000]: 100%|██████████| 9/9 [00:00<00:00, 92.88it/s, loss=1.75]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1615/3000]: Train loss: 1.9070, Valid loss: 1.8244\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1616/3000]: 100%|██████████| 9/9 [00:00<00:00, 94.98it/s, loss=1.84]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1616/3000]: Train loss: 1.9844, Valid loss: 3.1008\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1617/3000]: 100%|██████████| 9/9 [00:00<00:00, 85.70it/s, loss=1.94]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1617/3000]: Train loss: 2.2552, Valid loss: 2.1426\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1618/3000]: 100%|██████████| 9/9 [00:00<00:00, 78.81it/s, loss=1.47]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1618/3000]: Train loss: 1.7289, Valid loss: 1.8277\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1619/3000]: 100%|██████████| 9/9 [00:00<00:00, 85.03it/s, loss=1.47]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1619/3000]: Train loss: 1.7639, Valid loss: 1.8436\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1620/3000]: 100%|██████████| 9/9 [00:00<00:00, 77.37it/s, loss=1.3]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1620/3000]: Train loss: 1.6780, Valid loss: 2.6639\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1621/3000]: 100%|██████████| 9/9 [00:00<00:00, 79.32it/s, loss=2.01]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1621/3000]: Train loss: 2.0410, Valid loss: 3.2088\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1622/3000]: 100%|██████████| 9/9 [00:00<00:00, 83.63it/s, loss=2.22]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1622/3000]: Train loss: 2.4499, Valid loss: 2.9460\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1623/3000]: 100%|██████████| 9/9 [00:00<00:00, 84.44it/s, loss=2.43]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1623/3000]: Train loss: 2.3300, Valid loss: 2.1197\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1624/3000]: 100%|██████████| 9/9 [00:00<00:00, 92.04it/s, loss=6.35]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1624/3000]: Train loss: 3.4310, Valid loss: 2.0968\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1625/3000]: 100%|██████████| 9/9 [00:00<00:00, 98.30it/s, loss=5.43]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1625/3000]: Train loss: 3.0238, Valid loss: 3.2104\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1626/3000]: 100%|██████████| 9/9 [00:00<00:00, 96.52it/s, loss=2.05]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1626/3000]: Train loss: 2.1462, Valid loss: 2.0146\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1627/3000]: 100%|██████████| 9/9 [00:00<00:00, 90.63it/s, loss=1.8]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1627/3000]: Train loss: 1.7639, Valid loss: 2.2317\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1628/3000]: 100%|██████████| 9/9 [00:00<00:00, 98.20it/s, loss=2.23]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1628/3000]: Train loss: 1.8892, Valid loss: 2.0399\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1629/3000]: 100%|██████████| 9/9 [00:00<00:00, 70.64it/s, loss=1.57]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1629/3000]: Train loss: 1.8549, Valid loss: 2.0776\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1630/3000]: 100%|██████████| 9/9 [00:00<00:00, 73.35it/s, loss=1.99]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1630/3000]: Train loss: 1.9299, Valid loss: 1.8902\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1631/3000]: 100%|██████████| 9/9 [00:00<00:00, 73.59it/s, loss=1.38]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1631/3000]: Train loss: 1.8967, Valid loss: 3.0401\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1632/3000]: 100%|██████████| 9/9 [00:00<00:00, 86.85it/s, loss=2.06]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1632/3000]: Train loss: 1.8832, Valid loss: 2.6950\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1633/3000]: 100%|██████████| 9/9 [00:00<00:00, 79.65it/s, loss=1.72]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1633/3000]: Train loss: 1.8925, Valid loss: 1.7759\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1634/3000]: 100%|██████████| 9/9 [00:00<00:00, 93.79it/s, loss=1.97]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1634/3000]: Train loss: 1.7327, Valid loss: 1.8744\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1635/3000]: 100%|██████████| 9/9 [00:00<00:00, 82.04it/s, loss=1.4]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1635/3000]: Train loss: 1.9268, Valid loss: 2.2321\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1636/3000]: 100%|██████████| 9/9 [00:00<00:00, 83.26it/s, loss=1.27]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1636/3000]: Train loss: 1.6946, Valid loss: 2.0889\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1637/3000]: 100%|██████████| 9/9 [00:00<00:00, 77.43it/s, loss=1.8]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1637/3000]: Train loss: 1.7495, Valid loss: 2.0030\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1638/3000]: 100%|██████████| 9/9 [00:00<00:00, 79.30it/s, loss=2.07]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1638/3000]: Train loss: 1.7474, Valid loss: 2.2508\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1639/3000]: 100%|██████████| 9/9 [00:00<00:00, 91.36it/s, loss=1.86]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1639/3000]: Train loss: 1.9296, Valid loss: 1.8268\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1640/3000]: 100%|██████████| 9/9 [00:00<00:00, 91.27it/s, loss=1.64]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1640/3000]: Train loss: 1.7877, Valid loss: 1.9096\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1641/3000]: 100%|██████████| 9/9 [00:00<00:00, 83.13it/s, loss=1.59]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1641/3000]: Train loss: 1.7398, Valid loss: 1.7449\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1642/3000]: 100%|██████████| 9/9 [00:00<00:00, 97.24it/s, loss=2.56]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1642/3000]: Train loss: 1.7944, Valid loss: 2.2653\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1643/3000]: 100%|██████████| 9/9 [00:00<00:00, 92.44it/s, loss=2.65]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1643/3000]: Train loss: 2.0673, Valid loss: 3.4761\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1644/3000]: 100%|██████████| 9/9 [00:00<00:00, 98.93it/s, loss=3.81]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1644/3000]: Train loss: 2.9611, Valid loss: 2.1480\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1645/3000]: 100%|██████████| 9/9 [00:00<00:00, 95.60it/s, loss=3.97]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1645/3000]: Train loss: 2.7090, Valid loss: 4.4880\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1646/3000]: 100%|██████████| 9/9 [00:00<00:00, 32.49it/s, loss=2.32]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1646/3000]: Train loss: 2.6806, Valid loss: 3.3580\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1647/3000]: 100%|██████████| 9/9 [00:00<00:00, 98.73it/s, loss=1.64]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1647/3000]: Train loss: 2.1119, Valid loss: 3.1748\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1648/3000]: 100%|██████████| 9/9 [00:00<00:00, 101.95it/s, loss=3.13]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1648/3000]: Train loss: 2.3044, Valid loss: 1.9723\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1649/3000]: 100%|██████████| 9/9 [00:00<00:00, 102.81it/s, loss=1.32]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1649/3000]: Train loss: 1.9358, Valid loss: 2.8132\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1650/3000]: 100%|██████████| 9/9 [00:00<00:00, 97.72it/s, loss=2.35]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1650/3000]: Train loss: 2.2356, Valid loss: 2.2442\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1651/3000]: 100%|██████████| 9/9 [00:00<00:00, 96.62it/s, loss=2.41]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1651/3000]: Train loss: 2.0699, Valid loss: 4.2553\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1652/3000]: 100%|██████████| 9/9 [00:00<00:00, 100.13it/s, loss=1.53]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1652/3000]: Train loss: 2.5399, Valid loss: 3.0780\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1653/3000]: 100%|██████████| 9/9 [00:00<00:00, 99.17it/s, loss=1.23]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1653/3000]: Train loss: 2.0160, Valid loss: 2.3221\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1654/3000]: 100%|██████████| 9/9 [00:00<00:00, 100.29it/s, loss=1.61]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1654/3000]: Train loss: 1.6827, Valid loss: 2.1306\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1655/3000]: 100%|██████████| 9/9 [00:00<00:00, 84.20it/s, loss=1.99]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1655/3000]: Train loss: 1.8714, Valid loss: 2.1838\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1656/3000]: 100%|██████████| 9/9 [00:00<00:00, 85.21it/s, loss=1.73]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1656/3000]: Train loss: 2.0907, Valid loss: 2.8705\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1657/3000]: 100%|██████████| 9/9 [00:00<00:00, 86.81it/s, loss=2.28]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1657/3000]: Train loss: 2.0486, Valid loss: 1.8291\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1658/3000]: 100%|██████████| 9/9 [00:00<00:00, 90.20it/s, loss=1.65]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1658/3000]: Train loss: 1.7994, Valid loss: 2.4245\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1659/3000]: 100%|██████████| 9/9 [00:00<00:00, 67.57it/s, loss=1.65]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1659/3000]: Train loss: 2.2423, Valid loss: 2.5959\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1660/3000]: 100%|██████████| 9/9 [00:00<00:00, 98.93it/s, loss=3.11]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1660/3000]: Train loss: 2.3558, Valid loss: 2.7119\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1661/3000]: 100%|██████████| 9/9 [00:00<00:00, 95.49it/s, loss=2.23]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1661/3000]: Train loss: 2.1885, Valid loss: 2.1148\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1662/3000]: 100%|██████████| 9/9 [00:00<00:00, 97.73it/s, loss=2.82]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1662/3000]: Train loss: 1.9448, Valid loss: 2.1179\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1663/3000]: 100%|██████████| 9/9 [00:00<00:00, 97.37it/s, loss=1.98]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1663/3000]: Train loss: 2.0372, Valid loss: 2.2402\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1664/3000]: 100%|██████████| 9/9 [00:00<00:00, 93.63it/s, loss=1.87]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1664/3000]: Train loss: 1.9926, Valid loss: 2.5258\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1665/3000]: 100%|██████████| 9/9 [00:00<00:00, 89.84it/s, loss=2.59]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1665/3000]: Train loss: 1.9374, Valid loss: 1.6642\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1666/3000]: 100%|██████████| 9/9 [00:00<00:00, 100.84it/s, loss=1.93]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1666/3000]: Train loss: 1.8902, Valid loss: 1.8506\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1667/3000]: 100%|██████████| 9/9 [00:00<00:00, 84.47it/s, loss=3.26]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1667/3000]: Train loss: 2.2511, Valid loss: 1.9798\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1668/3000]: 100%|██████████| 9/9 [00:00<00:00, 80.32it/s, loss=2.05]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1668/3000]: Train loss: 2.3744, Valid loss: 2.6453\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1669/3000]: 100%|██████████| 9/9 [00:00<00:00, 85.30it/s, loss=3.09]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1669/3000]: Train loss: 2.1774, Valid loss: 2.5122\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1670/3000]: 100%|██████████| 9/9 [00:00<00:00, 86.52it/s, loss=2.68]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1670/3000]: Train loss: 2.0043, Valid loss: 2.7789\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1671/3000]: 100%|██████████| 9/9 [00:00<00:00, 92.18it/s, loss=1.53]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1671/3000]: Train loss: 2.0392, Valid loss: 3.4357\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1672/3000]: 100%|██████████| 9/9 [00:00<00:00, 86.21it/s, loss=1.93]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1672/3000]: Train loss: 2.6071, Valid loss: 3.6096\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1673/3000]: 100%|██████████| 9/9 [00:00<00:00, 81.35it/s, loss=1.78]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1673/3000]: Train loss: 2.4582, Valid loss: 2.4661\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1674/3000]: 100%|██████████| 9/9 [00:00<00:00, 73.32it/s, loss=1.44]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1674/3000]: Train loss: 1.7309, Valid loss: 2.3366\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1675/3000]: 100%|██████████| 9/9 [00:00<00:00, 76.84it/s, loss=1.5]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1675/3000]: Train loss: 1.7207, Valid loss: 1.6644\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1676/3000]: 100%|██████████| 9/9 [00:00<00:00, 81.70it/s, loss=1.77]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1676/3000]: Train loss: 1.7637, Valid loss: 1.8561\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1677/3000]: 100%|██████████| 9/9 [00:00<00:00, 84.00it/s, loss=1.58]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1677/3000]: Train loss: 1.6980, Valid loss: 2.7669\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1678/3000]: 100%|██████████| 9/9 [00:00<00:00, 81.84it/s, loss=1.7]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1678/3000]: Train loss: 1.8595, Valid loss: 2.4080\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1679/3000]: 100%|██████████| 9/9 [00:00<00:00, 87.31it/s, loss=2.42]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1679/3000]: Train loss: 2.0525, Valid loss: 1.9530\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1680/3000]: 100%|██████████| 9/9 [00:00<00:00, 88.23it/s, loss=2.27]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1680/3000]: Train loss: 1.9737, Valid loss: 2.4009\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1681/3000]: 100%|██████████| 9/9 [00:00<00:00, 88.05it/s, loss=1.79]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1681/3000]: Train loss: 1.7976, Valid loss: 2.0465\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1682/3000]: 100%|██████████| 9/9 [00:00<00:00, 80.11it/s, loss=1.46]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1682/3000]: Train loss: 1.6768, Valid loss: 1.9138\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1683/3000]: 100%|██████████| 9/9 [00:00<00:00, 87.83it/s, loss=1.63]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1683/3000]: Train loss: 1.7005, Valid loss: 1.8962\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1684/3000]: 100%|██████████| 9/9 [00:00<00:00, 81.22it/s, loss=1.61]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1684/3000]: Train loss: 1.7045, Valid loss: 2.0998\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1685/3000]: 100%|██████████| 9/9 [00:00<00:00, 83.91it/s, loss=1.95]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1685/3000]: Train loss: 1.7592, Valid loss: 2.9235\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1686/3000]: 100%|██████████| 9/9 [00:00<00:00, 82.61it/s, loss=1.67]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1686/3000]: Train loss: 1.9402, Valid loss: 2.3819\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1687/3000]: 100%|██████████| 9/9 [00:00<00:00, 76.21it/s, loss=1.71]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1687/3000]: Train loss: 1.7632, Valid loss: 2.0958\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1688/3000]: 100%|██████████| 9/9 [00:00<00:00, 96.55it/s, loss=2.98]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1688/3000]: Train loss: 2.0000, Valid loss: 2.2178\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1689/3000]: 100%|██████████| 9/9 [00:00<00:00, 97.65it/s, loss=1.59]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1689/3000]: Train loss: 1.7478, Valid loss: 1.7998\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1690/3000]: 100%|██████████| 9/9 [00:00<00:00, 101.52it/s, loss=1.72]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1690/3000]: Train loss: 1.6917, Valid loss: 2.0285\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1691/3000]: 100%|██████████| 9/9 [00:00<00:00, 100.89it/s, loss=1.66]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1691/3000]: Train loss: 2.2122, Valid loss: 2.7103\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1692/3000]: 100%|██████████| 9/9 [00:00<00:00, 99.83it/s, loss=1.45]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1692/3000]: Train loss: 1.9003, Valid loss: 1.9837\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1693/3000]: 100%|██████████| 9/9 [00:00<00:00, 80.15it/s, loss=1.78]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1693/3000]: Train loss: 1.7658, Valid loss: 1.7776\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1694/3000]: 100%|██████████| 9/9 [00:00<00:00, 86.83it/s, loss=1.27]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1694/3000]: Train loss: 1.6877, Valid loss: 2.6313\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1695/3000]: 100%|██████████| 9/9 [00:00<00:00, 93.62it/s, loss=1.97]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1695/3000]: Train loss: 1.7620, Valid loss: 2.4440\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1696/3000]: 100%|██████████| 9/9 [00:00<00:00, 78.99it/s, loss=1.34]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1696/3000]: Train loss: 1.7977, Valid loss: 2.4217\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1697/3000]: 100%|██████████| 9/9 [00:00<00:00, 91.09it/s, loss=2.25]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1697/3000]: Train loss: 1.9647, Valid loss: 2.2475\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1698/3000]: 100%|██████████| 9/9 [00:00<00:00, 82.55it/s, loss=1.79]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1698/3000]: Train loss: 1.8713, Valid loss: 2.0203\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1699/3000]: 100%|██████████| 9/9 [00:00<00:00, 86.47it/s, loss=1.72]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1699/3000]: Train loss: 1.7949, Valid loss: 2.2472\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1700/3000]: 100%|██████████| 9/9 [00:00<00:00, 91.66it/s, loss=1.96]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1700/3000]: Train loss: 2.0216, Valid loss: 2.5277\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1701/3000]: 100%|██████████| 9/9 [00:00<00:00, 85.75it/s, loss=1.7]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1701/3000]: Train loss: 2.0366, Valid loss: 2.2055\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1702/3000]: 100%|██████████| 9/9 [00:00<00:00, 75.70it/s, loss=1.56]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1702/3000]: Train loss: 2.0060, Valid loss: 2.4934\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1703/3000]: 100%|██████████| 9/9 [00:00<00:00, 87.23it/s, loss=1.53]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1703/3000]: Train loss: 1.8290, Valid loss: 1.9927\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1704/3000]: 100%|██████████| 9/9 [00:00<00:00, 81.92it/s, loss=1.76]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1704/3000]: Train loss: 1.7384, Valid loss: 2.0010\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1705/3000]: 100%|██████████| 9/9 [00:00<00:00, 77.46it/s, loss=2.25]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1705/3000]: Train loss: 1.7150, Valid loss: 2.1442\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1706/3000]: 100%|██████████| 9/9 [00:00<00:00, 96.93it/s, loss=1.81]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1706/3000]: Train loss: 1.8154, Valid loss: 2.4872\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1707/3000]: 100%|██████████| 9/9 [00:00<00:00, 100.39it/s, loss=1.87]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1707/3000]: Train loss: 1.9110, Valid loss: 2.6682\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1708/3000]: 100%|██████████| 9/9 [00:00<00:00, 96.45it/s, loss=2.19]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1708/3000]: Train loss: 1.9878, Valid loss: 3.8404\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1709/3000]: 100%|██████████| 9/9 [00:00<00:00, 95.94it/s, loss=2.72]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1709/3000]: Train loss: 2.7374, Valid loss: 1.9552\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1710/3000]: 100%|██████████| 9/9 [00:00<00:00, 63.93it/s, loss=1.87]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1710/3000]: Train loss: 1.9759, Valid loss: 2.0928\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1711/3000]: 100%|██████████| 9/9 [00:00<00:00, 87.43it/s, loss=1.86]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1711/3000]: Train loss: 1.6954, Valid loss: 1.8356\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1712/3000]: 100%|██████████| 9/9 [00:00<00:00, 91.56it/s, loss=1.5]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1712/3000]: Train loss: 1.7444, Valid loss: 1.9170\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1713/3000]: 100%|██████████| 9/9 [00:00<00:00, 82.81it/s, loss=2.25]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1713/3000]: Train loss: 1.7655, Valid loss: 1.8095\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1714/3000]: 100%|██████████| 9/9 [00:00<00:00, 84.73it/s, loss=1.81]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1714/3000]: Train loss: 1.8353, Valid loss: 2.2284\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1715/3000]: 100%|██████████| 9/9 [00:00<00:00, 95.63it/s, loss=3.44]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1715/3000]: Train loss: 2.1043, Valid loss: 1.9145\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1716/3000]: 100%|██████████| 9/9 [00:00<00:00, 99.22it/s, loss=1.8]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1716/3000]: Train loss: 2.2323, Valid loss: 3.2942\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1717/3000]: 100%|██████████| 9/9 [00:00<00:00, 86.98it/s, loss=3.35]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1717/3000]: Train loss: 2.3050, Valid loss: 2.0118\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1718/3000]: 100%|██████████| 9/9 [00:00<00:00, 86.12it/s, loss=1.71]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1718/3000]: Train loss: 2.2949, Valid loss: 3.0459\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1719/3000]: 100%|██████████| 9/9 [00:00<00:00, 74.06it/s, loss=2.85]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1719/3000]: Train loss: 2.3781, Valid loss: 2.7773\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1720/3000]: 100%|██████████| 9/9 [00:00<00:00, 87.42it/s, loss=1.74]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1720/3000]: Train loss: 1.8444, Valid loss: 1.8263\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1721/3000]: 100%|██████████| 9/9 [00:00<00:00, 84.20it/s, loss=1.85]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1721/3000]: Train loss: 1.7224, Valid loss: 2.0255\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1722/3000]: 100%|██████████| 9/9 [00:00<00:00, 96.59it/s, loss=1.68]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1722/3000]: Train loss: 1.7631, Valid loss: 2.1803\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1723/3000]: 100%|██████████| 9/9 [00:00<00:00, 98.37it/s, loss=1.79]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1723/3000]: Train loss: 1.7723, Valid loss: 2.3386\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1724/3000]: 100%|██████████| 9/9 [00:00<00:00, 99.32it/s, loss=1.22]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1724/3000]: Train loss: 1.6919, Valid loss: 1.7835\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1725/3000]: 100%|██████████| 9/9 [00:00<00:00, 97.66it/s, loss=1.83]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1725/3000]: Train loss: 2.0366, Valid loss: 1.9427\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1726/3000]: 100%|██████████| 9/9 [00:00<00:00, 89.58it/s, loss=2]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1726/3000]: Train loss: 1.7071, Valid loss: 2.1373\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1727/3000]: 100%|██████████| 9/9 [00:00<00:00, 84.21it/s, loss=1.53]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1727/3000]: Train loss: 1.7061, Valid loss: 1.9154\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1728/3000]: 100%|██████████| 9/9 [00:00<00:00, 32.68it/s, loss=1.73]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1728/3000]: Train loss: 1.7984, Valid loss: 2.6073\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1729/3000]: 100%|██████████| 9/9 [00:00<00:00, 98.57it/s, loss=1.96]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1729/3000]: Train loss: 2.2537, Valid loss: 2.3603\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1730/3000]: 100%|██████████| 9/9 [00:00<00:00, 82.29it/s, loss=1.62]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1730/3000]: Train loss: 1.7604, Valid loss: 1.7280\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1731/3000]: 100%|██████████| 9/9 [00:00<00:00, 83.81it/s, loss=2.07]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1731/3000]: Train loss: 1.9340, Valid loss: 2.5522\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1732/3000]: 100%|██████████| 9/9 [00:00<00:00, 99.42it/s, loss=3.28]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1732/3000]: Train loss: 2.7051, Valid loss: 1.9549\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1733/3000]: 100%|██████████| 9/9 [00:00<00:00, 67.64it/s, loss=3.42]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1733/3000]: Train loss: 2.2780, Valid loss: 3.2502\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1734/3000]: 100%|██████████| 9/9 [00:00<00:00, 79.04it/s, loss=1.68]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1734/3000]: Train loss: 2.2852, Valid loss: 3.0276\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1735/3000]: 100%|██████████| 9/9 [00:00<00:00, 82.42it/s, loss=2.15]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1735/3000]: Train loss: 2.1141, Valid loss: 2.2074\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1736/3000]: 100%|██████████| 9/9 [00:00<00:00, 76.25it/s, loss=2.25]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1736/3000]: Train loss: 1.9206, Valid loss: 3.6417\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1737/3000]: 100%|██████████| 9/9 [00:00<00:00, 78.67it/s, loss=1.4]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1737/3000]: Train loss: 2.0212, Valid loss: 1.9345\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1738/3000]: 100%|██████████| 9/9 [00:00<00:00, 92.32it/s, loss=2.39]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1738/3000]: Train loss: 1.8832, Valid loss: 3.7284\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1739/3000]: 100%|██████████| 9/9 [00:00<00:00, 84.15it/s, loss=3.25]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1739/3000]: Train loss: 2.6505, Valid loss: 1.7948\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1740/3000]: 100%|██████████| 9/9 [00:00<00:00, 72.80it/s, loss=3.28]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1740/3000]: Train loss: 2.1527, Valid loss: 3.2843\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1741/3000]: 100%|██████████| 9/9 [00:00<00:00, 84.19it/s, loss=1.7]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1741/3000]: Train loss: 2.3662, Valid loss: 2.0382\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1742/3000]: 100%|██████████| 9/9 [00:00<00:00, 71.79it/s, loss=1.19]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1742/3000]: Train loss: 1.8375, Valid loss: 3.8907\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1743/3000]: 100%|██████████| 9/9 [00:00<00:00, 90.66it/s, loss=5.19]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1743/3000]: Train loss: 3.1187, Valid loss: 4.1624\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1744/3000]: 100%|██████████| 9/9 [00:00<00:00, 80.99it/s, loss=3.22]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1744/3000]: Train loss: 2.6998, Valid loss: 4.1647\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1745/3000]: 100%|██████████| 9/9 [00:00<00:00, 92.09it/s, loss=2.31]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1745/3000]: Train loss: 2.6232, Valid loss: 2.4282\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1746/3000]: 100%|██████████| 9/9 [00:00<00:00, 98.70it/s, loss=5.14]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1746/3000]: Train loss: 3.0686, Valid loss: 3.4069\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1747/3000]: 100%|██████████| 9/9 [00:00<00:00, 93.57it/s, loss=4.58]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1747/3000]: Train loss: 3.0461, Valid loss: 3.2609\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1748/3000]: 100%|██████████| 9/9 [00:00<00:00, 82.40it/s, loss=4.03]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1748/3000]: Train loss: 3.0288, Valid loss: 4.1358\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1749/3000]: 100%|██████████| 9/9 [00:00<00:00, 71.36it/s, loss=1.47]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1749/3000]: Train loss: 2.7410, Valid loss: 2.1218\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1750/3000]: 100%|██████████| 9/9 [00:00<00:00, 71.46it/s, loss=1.93]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1750/3000]: Train loss: 1.7423, Valid loss: 2.6285\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1751/3000]: 100%|██████████| 9/9 [00:00<00:00, 70.08it/s, loss=1.54]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1751/3000]: Train loss: 1.6878, Valid loss: 2.2599\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1752/3000]: 100%|██████████| 9/9 [00:00<00:00, 70.34it/s, loss=1.25]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1752/3000]: Train loss: 1.7352, Valid loss: 2.0077\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1753/3000]: 100%|██████████| 9/9 [00:00<00:00, 71.48it/s, loss=2.09]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1753/3000]: Train loss: 1.8228, Valid loss: 2.2391\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1754/3000]: 100%|██████████| 9/9 [00:00<00:00, 76.00it/s, loss=2.31]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1754/3000]: Train loss: 2.0538, Valid loss: 2.1892\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1755/3000]: 100%|██████████| 9/9 [00:00<00:00, 69.70it/s, loss=2.09]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1755/3000]: Train loss: 1.9220, Valid loss: 2.1247\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1756/3000]: 100%|██████████| 9/9 [00:00<00:00, 74.16it/s, loss=2.06]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1756/3000]: Train loss: 1.8473, Valid loss: 2.2840\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1757/3000]: 100%|██████████| 9/9 [00:00<00:00, 96.17it/s, loss=2.26]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1757/3000]: Train loss: 1.9791, Valid loss: 1.7479\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1758/3000]: 100%|██████████| 9/9 [00:00<00:00, 80.64it/s, loss=1.59]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1758/3000]: Train loss: 1.7929, Valid loss: 1.9353\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1759/3000]: 100%|██████████| 9/9 [00:00<00:00, 71.32it/s, loss=1.67]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1759/3000]: Train loss: 1.8190, Valid loss: 2.2017\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1760/3000]: 100%|██████████| 9/9 [00:00<00:00, 66.98it/s, loss=1.28]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1760/3000]: Train loss: 1.8138, Valid loss: 2.7741\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1761/3000]: 100%|██████████| 9/9 [00:00<00:00, 74.29it/s, loss=1.95]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1761/3000]: Train loss: 1.9952, Valid loss: 2.5063\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1762/3000]: 100%|██████████| 9/9 [00:00<00:00, 68.51it/s, loss=1.83]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1762/3000]: Train loss: 2.0931, Valid loss: 2.1551\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1763/3000]: 100%|██████████| 9/9 [00:00<00:00, 65.02it/s, loss=2.03]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1763/3000]: Train loss: 1.7443, Valid loss: 2.2235\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1764/3000]: 100%|██████████| 9/9 [00:00<00:00, 67.93it/s, loss=2.22]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1764/3000]: Train loss: 1.7343, Valid loss: 1.9766\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1765/3000]: 100%|██████████| 9/9 [00:00<00:00, 86.96it/s, loss=1.81]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1765/3000]: Train loss: 1.6638, Valid loss: 2.4393\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1766/3000]: 100%|██████████| 9/9 [00:00<00:00, 83.70it/s, loss=1.55]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1766/3000]: Train loss: 1.8689, Valid loss: 1.9970\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1767/3000]: 100%|██████████| 9/9 [00:00<00:00, 90.86it/s, loss=1.5]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1767/3000]: Train loss: 1.7343, Valid loss: 2.1709\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1768/3000]: 100%|██████████| 9/9 [00:00<00:00, 86.68it/s, loss=1.35]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1768/3000]: Train loss: 1.8019, Valid loss: 2.3670\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1769/3000]: 100%|██████████| 9/9 [00:00<00:00, 82.72it/s, loss=1.54]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1769/3000]: Train loss: 1.6761, Valid loss: 1.8411\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1770/3000]: 100%|██████████| 9/9 [00:00<00:00, 86.11it/s, loss=1.97]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1770/3000]: Train loss: 1.7435, Valid loss: 2.4475\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1771/3000]: 100%|██████████| 9/9 [00:00<00:00, 85.56it/s, loss=1.64]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1771/3000]: Train loss: 1.7288, Valid loss: 2.1937\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1772/3000]: 100%|██████████| 9/9 [00:00<00:00, 83.95it/s, loss=2.15]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1772/3000]: Train loss: 1.8008, Valid loss: 2.2449\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1773/3000]: 100%|██████████| 9/9 [00:00<00:00, 97.23it/s, loss=1.78]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1773/3000]: Train loss: 1.7580, Valid loss: 2.0296\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1774/3000]: 100%|██████████| 9/9 [00:00<00:00, 94.03it/s, loss=1.47]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1774/3000]: Train loss: 1.6561, Valid loss: 2.1574\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1775/3000]: 100%|██████████| 9/9 [00:00<00:00, 92.74it/s, loss=1.76]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1775/3000]: Train loss: 1.7334, Valid loss: 1.8307\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1776/3000]: 100%|██████████| 9/9 [00:00<00:00, 95.97it/s, loss=2]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1776/3000]: Train loss: 1.6830, Valid loss: 2.3805\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1777/3000]: 100%|██████████| 9/9 [00:00<00:00, 90.36it/s, loss=1.95]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1777/3000]: Train loss: 1.7520, Valid loss: 2.1814\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1778/3000]: 100%|██████████| 9/9 [00:00<00:00, 95.45it/s, loss=1.17]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1778/3000]: Train loss: 1.7674, Valid loss: 2.3177\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1779/3000]: 100%|██████████| 9/9 [00:00<00:00, 81.20it/s, loss=1.98]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1779/3000]: Train loss: 1.7544, Valid loss: 1.9649\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1780/3000]: 100%|██████████| 9/9 [00:00<00:00, 81.68it/s, loss=1.94]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1780/3000]: Train loss: 1.8256, Valid loss: 2.4297\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1781/3000]: 100%|██████████| 9/9 [00:00<00:00, 81.17it/s, loss=1.41]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1781/3000]: Train loss: 1.8847, Valid loss: 2.0022\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1782/3000]: 100%|██████████| 9/9 [00:00<00:00, 76.72it/s, loss=1.33]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1782/3000]: Train loss: 1.6836, Valid loss: 1.8618\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1783/3000]: 100%|██████████| 9/9 [00:00<00:00, 75.02it/s, loss=1.63]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1783/3000]: Train loss: 1.8254, Valid loss: 2.4461\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1784/3000]: 100%|██████████| 9/9 [00:00<00:00, 75.41it/s, loss=1.96]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1784/3000]: Train loss: 1.9225, Valid loss: 2.5845\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1785/3000]: 100%|██████████| 9/9 [00:00<00:00, 73.76it/s, loss=1.16]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1785/3000]: Train loss: 2.0960, Valid loss: 3.3690\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1786/3000]: 100%|██████████| 9/9 [00:00<00:00, 70.99it/s, loss=2.7]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1786/3000]: Train loss: 2.3632, Valid loss: 1.8645\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1787/3000]: 100%|██████████| 9/9 [00:00<00:00, 64.69it/s, loss=2.33]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1787/3000]: Train loss: 1.9469, Valid loss: 2.1255\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1788/3000]: 100%|██████████| 9/9 [00:00<00:00, 93.72it/s, loss=2.14]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1788/3000]: Train loss: 2.1595, Valid loss: 2.5406\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1789/3000]: 100%|██████████| 9/9 [00:00<00:00, 96.23it/s, loss=1.6]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1789/3000]: Train loss: 1.9184, Valid loss: 1.8546\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1790/3000]: 100%|██████████| 9/9 [00:00<00:00, 96.96it/s, loss=2.59]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1790/3000]: Train loss: 1.7629, Valid loss: 1.6514\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1791/3000]: 100%|██████████| 9/9 [00:00<00:00, 81.51it/s, loss=1.43]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1791/3000]: Train loss: 1.8265, Valid loss: 2.4558\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1792/3000]: 100%|██████████| 9/9 [00:00<00:00, 99.28it/s, loss=1.35]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1792/3000]: Train loss: 1.9503, Valid loss: 2.4979\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1793/3000]: 100%|██████████| 9/9 [00:00<00:00, 95.99it/s, loss=1.74]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1793/3000]: Train loss: 1.8439, Valid loss: 1.9599\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1794/3000]: 100%|██████████| 9/9 [00:00<00:00, 86.49it/s, loss=1.22]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1794/3000]: Train loss: 1.6456, Valid loss: 2.0389\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1795/3000]: 100%|██████████| 9/9 [00:00<00:00, 80.43it/s, loss=1.75]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1795/3000]: Train loss: 1.7603, Valid loss: 1.8843\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1796/3000]: 100%|██████████| 9/9 [00:00<00:00, 84.60it/s, loss=2.23]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1796/3000]: Train loss: 1.7093, Valid loss: 2.2557\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1797/3000]: 100%|██████████| 9/9 [00:00<00:00, 83.28it/s, loss=1.62]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1797/3000]: Train loss: 1.8242, Valid loss: 2.1518\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1798/3000]: 100%|██████████| 9/9 [00:00<00:00, 80.82it/s, loss=1.48]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1798/3000]: Train loss: 1.7888, Valid loss: 2.2248\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1799/3000]: 100%|██████████| 9/9 [00:00<00:00, 83.24it/s, loss=1.47]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1799/3000]: Train loss: 1.6570, Valid loss: 1.7649\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1800/3000]: 100%|██████████| 9/9 [00:00<00:00, 78.03it/s, loss=1.79]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1800/3000]: Train loss: 1.7421, Valid loss: 1.8562\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1801/3000]: 100%|██████████| 9/9 [00:00<00:00, 69.95it/s, loss=1.48]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1801/3000]: Train loss: 1.7413, Valid loss: 2.1200\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1802/3000]: 100%|██████████| 9/9 [00:00<00:00, 84.07it/s, loss=2.01]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1802/3000]: Train loss: 1.7034, Valid loss: 2.1952\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1803/3000]: 100%|██████████| 9/9 [00:00<00:00, 71.59it/s, loss=2.16]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1803/3000]: Train loss: 1.8857, Valid loss: 2.0429\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1804/3000]: 100%|██████████| 9/9 [00:00<00:00, 86.49it/s, loss=1.55]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1804/3000]: Train loss: 1.6822, Valid loss: 1.7286\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1805/3000]: 100%|██████████| 9/9 [00:00<00:00, 92.36it/s, loss=1.94]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1805/3000]: Train loss: 1.7285, Valid loss: 1.8921\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1806/3000]: 100%|██████████| 9/9 [00:00<00:00, 72.04it/s, loss=1.72]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1806/3000]: Train loss: 1.8009, Valid loss: 2.0744\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1807/3000]: 100%|██████████| 9/9 [00:00<00:00, 78.13it/s, loss=2.9]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1807/3000]: Train loss: 2.3723, Valid loss: 3.0493\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1808/3000]: 100%|██████████| 9/9 [00:00<00:00, 85.79it/s, loss=2.04]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1808/3000]: Train loss: 2.0647, Valid loss: 2.3484\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1809/3000]: 100%|██████████| 9/9 [00:00<00:00, 92.83it/s, loss=2.41]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1809/3000]: Train loss: 2.0300, Valid loss: 1.9964\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1810/3000]: 100%|██████████| 9/9 [00:00<00:00, 71.06it/s, loss=1.45]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1810/3000]: Train loss: 1.6737, Valid loss: 1.7465\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1811/3000]: 100%|██████████| 9/9 [00:00<00:00, 90.67it/s, loss=2.19]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1811/3000]: Train loss: 1.7229, Valid loss: 1.9634\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1812/3000]: 100%|██████████| 9/9 [00:00<00:00, 96.29it/s, loss=1.75]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1812/3000]: Train loss: 1.6911, Valid loss: 3.1975\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1813/3000]: 100%|██████████| 9/9 [00:00<00:00, 79.16it/s, loss=1.97]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1813/3000]: Train loss: 1.8734, Valid loss: 2.1753\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1814/3000]: 100%|██████████| 9/9 [00:00<00:00, 86.00it/s, loss=1.39]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1814/3000]: Train loss: 1.6724, Valid loss: 1.9079\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1815/3000]: 100%|██████████| 9/9 [00:00<00:00, 99.52it/s, loss=2.6]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1815/3000]: Train loss: 1.8036, Valid loss: 3.8255\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1816/3000]: 100%|██████████| 9/9 [00:00<00:00, 91.73it/s, loss=1.3]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1816/3000]: Train loss: 2.2216, Valid loss: 2.4159\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1817/3000]: 100%|██████████| 9/9 [00:00<00:00, 92.88it/s, loss=2.23]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1817/3000]: Train loss: 2.3274, Valid loss: 1.9261\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1818/3000]: 100%|██████████| 9/9 [00:00<00:00, 90.19it/s, loss=2.19]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1818/3000]: Train loss: 2.1238, Valid loss: 1.9688\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1819/3000]: 100%|██████████| 9/9 [00:00<00:00, 71.89it/s, loss=1.36]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1819/3000]: Train loss: 1.6448, Valid loss: 1.9294\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1820/3000]: 100%|██████████| 9/9 [00:00<00:00, 84.86it/s, loss=2.64]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1820/3000]: Train loss: 1.8035, Valid loss: 2.3348\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1821/3000]: 100%|██████████| 9/9 [00:00<00:00, 82.68it/s, loss=1.59]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1821/3000]: Train loss: 1.7817, Valid loss: 2.5863\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1822/3000]: 100%|██████████| 9/9 [00:00<00:00, 90.98it/s, loss=1.63]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1822/3000]: Train loss: 1.7762, Valid loss: 2.1959\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1823/3000]: 100%|██████████| 9/9 [00:00<00:00, 84.81it/s, loss=1.18]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1823/3000]: Train loss: 1.7301, Valid loss: 1.6369\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1824/3000]: 100%|██████████| 9/9 [00:00<00:00, 81.65it/s, loss=1.9]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1824/3000]: Train loss: 1.6675, Valid loss: 1.8072\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1825/3000]: 100%|██████████| 9/9 [00:00<00:00, 93.58it/s, loss=2.05]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1825/3000]: Train loss: 1.7322, Valid loss: 2.7034\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1826/3000]: 100%|██████████| 9/9 [00:00<00:00, 75.71it/s, loss=1.72]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1826/3000]: Train loss: 2.0585, Valid loss: 3.9792\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1827/3000]: 100%|██████████| 9/9 [00:00<00:00, 84.74it/s, loss=2.05]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1827/3000]: Train loss: 2.6774, Valid loss: 2.2500\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1828/3000]: 100%|██████████| 9/9 [00:00<00:00, 91.58it/s, loss=1.53]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1828/3000]: Train loss: 2.3133, Valid loss: 3.4827\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1829/3000]: 100%|██████████| 9/9 [00:00<00:00, 96.04it/s, loss=1.85]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1829/3000]: Train loss: 2.1390, Valid loss: 2.2475\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1830/3000]: 100%|██████████| 9/9 [00:00<00:00, 80.63it/s, loss=1.95]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1830/3000]: Train loss: 1.9427, Valid loss: 1.9202\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1831/3000]: 100%|██████████| 9/9 [00:00<00:00, 72.70it/s, loss=1.86]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1831/3000]: Train loss: 1.8411, Valid loss: 2.8178\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1832/3000]: 100%|██████████| 9/9 [00:00<00:00, 76.24it/s, loss=2.51]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1832/3000]: Train loss: 2.3032, Valid loss: 1.9464\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1833/3000]: 100%|██████████| 9/9 [00:00<00:00, 74.81it/s, loss=1.78]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1833/3000]: Train loss: 1.9076, Valid loss: 2.4799\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1834/3000]: 100%|██████████| 9/9 [00:00<00:00, 69.57it/s, loss=1.36]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1834/3000]: Train loss: 1.7986, Valid loss: 1.8563\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1835/3000]: 100%|██████████| 9/9 [00:00<00:00, 87.16it/s, loss=1.42]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1835/3000]: Train loss: 1.8218, Valid loss: 2.5300\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1836/3000]: 100%|██████████| 9/9 [00:00<00:00, 81.30it/s, loss=1.51]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1836/3000]: Train loss: 1.8577, Valid loss: 2.5342\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1837/3000]: 100%|██████████| 9/9 [00:00<00:00, 79.90it/s, loss=1.43]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1837/3000]: Train loss: 1.7576, Valid loss: 1.8998\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1838/3000]: 100%|██████████| 9/9 [00:00<00:00, 76.18it/s, loss=2.07]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1838/3000]: Train loss: 1.7605, Valid loss: 2.2139\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1839/3000]: 100%|██████████| 9/9 [00:00<00:00, 79.96it/s, loss=1.74]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1839/3000]: Train loss: 2.0826, Valid loss: 2.9585\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1840/3000]: 100%|██████████| 9/9 [00:00<00:00, 80.22it/s, loss=1.6]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1840/3000]: Train loss: 2.0511, Valid loss: 2.1386\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1841/3000]: 100%|██████████| 9/9 [00:00<00:00, 84.59it/s, loss=2.76]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1841/3000]: Train loss: 2.2079, Valid loss: 2.3381\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1842/3000]: 100%|██████████| 9/9 [00:00<00:00, 76.91it/s, loss=3.1]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1842/3000]: Train loss: 2.2406, Valid loss: 2.0421\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1843/3000]: 100%|██████████| 9/9 [00:00<00:00, 70.83it/s, loss=1.77]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1843/3000]: Train loss: 1.7971, Valid loss: 1.8073\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1844/3000]: 100%|██████████| 9/9 [00:00<00:00, 75.02it/s, loss=2.07]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1844/3000]: Train loss: 1.6827, Valid loss: 2.1621\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1845/3000]: 100%|██████████| 9/9 [00:00<00:00, 69.22it/s, loss=2.38]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1845/3000]: Train loss: 2.0108, Valid loss: 2.2008\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1846/3000]: 100%|██████████| 9/9 [00:00<00:00, 91.25it/s, loss=2.48]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1846/3000]: Train loss: 1.7609, Valid loss: 2.8731\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1847/3000]: 100%|██████████| 9/9 [00:00<00:00, 97.00it/s, loss=2.42]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1847/3000]: Train loss: 2.3906, Valid loss: 2.7436\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1848/3000]: 100%|██████████| 9/9 [00:00<00:00, 86.23it/s, loss=1.92]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1848/3000]: Train loss: 2.4560, Valid loss: 1.7991\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1849/3000]: 100%|██████████| 9/9 [00:00<00:00, 76.17it/s, loss=1.41]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1849/3000]: Train loss: 1.8570, Valid loss: 1.9329\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1850/3000]: 100%|██████████| 9/9 [00:00<00:00, 75.71it/s, loss=3]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1850/3000]: Train loss: 1.8630, Valid loss: 1.8623\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1851/3000]: 100%|██████████| 9/9 [00:00<00:00, 82.02it/s, loss=1.6]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1851/3000]: Train loss: 2.0719, Valid loss: 2.1294\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1852/3000]: 100%|██████████| 9/9 [00:00<00:00, 90.00it/s, loss=1.87]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1852/3000]: Train loss: 2.0159, Valid loss: 2.4490\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1853/3000]: 100%|██████████| 9/9 [00:00<00:00, 75.10it/s, loss=1.74]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1853/3000]: Train loss: 1.9266, Valid loss: 2.0831\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1854/3000]: 100%|██████████| 9/9 [00:00<00:00, 98.89it/s, loss=1.53]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1854/3000]: Train loss: 1.7136, Valid loss: 2.1380\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1855/3000]: 100%|██████████| 9/9 [00:00<00:00, 96.17it/s, loss=1.41]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1855/3000]: Train loss: 1.7171, Valid loss: 1.9395\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1856/3000]: 100%|██████████| 9/9 [00:00<00:00, 99.93it/s, loss=1.67]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1856/3000]: Train loss: 1.7994, Valid loss: 2.1777\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1857/3000]: 100%|██████████| 9/9 [00:00<00:00, 99.64it/s, loss=1.64]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1857/3000]: Train loss: 1.7475, Valid loss: 1.8626\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1858/3000]: 100%|██████████| 9/9 [00:00<00:00, 93.18it/s, loss=1.45]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1858/3000]: Train loss: 1.6456, Valid loss: 1.9568\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1859/3000]: 100%|██████████| 9/9 [00:00<00:00, 91.52it/s, loss=1.96]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1859/3000]: Train loss: 1.7254, Valid loss: 1.9918\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1860/3000]: 100%|██████████| 9/9 [00:00<00:00, 84.94it/s, loss=1.99]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1860/3000]: Train loss: 1.7861, Valid loss: 1.8181\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1861/3000]: 100%|██████████| 9/9 [00:00<00:00, 85.49it/s, loss=1.45]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1861/3000]: Train loss: 1.6892, Valid loss: 1.8816\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1862/3000]: 100%|██████████| 9/9 [00:00<00:00, 79.27it/s, loss=1.6]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1862/3000]: Train loss: 1.6252, Valid loss: 1.9818\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1863/3000]: 100%|██████████| 9/9 [00:00<00:00, 85.89it/s, loss=1.74]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1863/3000]: Train loss: 1.6723, Valid loss: 2.3293\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1864/3000]: 100%|██████████| 9/9 [00:00<00:00, 78.11it/s, loss=1.31]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1864/3000]: Train loss: 1.6585, Valid loss: 2.5187\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1865/3000]: 100%|██████████| 9/9 [00:00<00:00, 91.11it/s, loss=1.47]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1865/3000]: Train loss: 1.6926, Valid loss: 2.0945\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1866/3000]: 100%|██████████| 9/9 [00:00<00:00, 73.56it/s, loss=2.49]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1866/3000]: Train loss: 1.8650, Valid loss: 3.2989\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1867/3000]: 100%|██████████| 9/9 [00:00<00:00, 83.67it/s, loss=1.64]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1867/3000]: Train loss: 1.9180, Valid loss: 2.0471\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1868/3000]: 100%|██████████| 9/9 [00:00<00:00, 82.81it/s, loss=1.59]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1868/3000]: Train loss: 1.8552, Valid loss: 2.2137\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1869/3000]: 100%|██████████| 9/9 [00:00<00:00, 83.22it/s, loss=1.98]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1869/3000]: Train loss: 1.6767, Valid loss: 1.8809\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1870/3000]: 100%|██████████| 9/9 [00:00<00:00, 90.78it/s, loss=2.28]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1870/3000]: Train loss: 1.7033, Valid loss: 2.7594\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1871/3000]: 100%|██████████| 9/9 [00:00<00:00, 84.26it/s, loss=1.44]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1871/3000]: Train loss: 1.7522, Valid loss: 1.9301\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1872/3000]: 100%|██████████| 9/9 [00:00<00:00, 63.07it/s, loss=1.57]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1872/3000]: Train loss: 1.6861, Valid loss: 3.1541\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1873/3000]: 100%|██████████| 9/9 [00:00<00:00, 85.36it/s, loss=2.24]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1873/3000]: Train loss: 2.1815, Valid loss: 1.8528\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1874/3000]: 100%|██████████| 9/9 [00:00<00:00, 75.38it/s, loss=1.57]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1874/3000]: Train loss: 1.8303, Valid loss: 2.0746\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1875/3000]: 100%|██████████| 9/9 [00:00<00:00, 67.52it/s, loss=1.53]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1875/3000]: Train loss: 1.8559, Valid loss: 2.4715\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1876/3000]: 100%|██████████| 9/9 [00:00<00:00, 98.76it/s, loss=2.12]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1876/3000]: Train loss: 1.9996, Valid loss: 2.1386\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1877/3000]: 100%|██████████| 9/9 [00:00<00:00, 103.46it/s, loss=2.3]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1877/3000]: Train loss: 2.5319, Valid loss: 2.2137\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1878/3000]: 100%|██████████| 9/9 [00:00<00:00, 101.66it/s, loss=2.01]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1878/3000]: Train loss: 1.8005, Valid loss: 2.2831\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1879/3000]: 100%|██████████| 9/9 [00:00<00:00, 97.50it/s, loss=2.44]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1879/3000]: Train loss: 1.8971, Valid loss: 2.2999\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1880/3000]: 100%|██████████| 9/9 [00:00<00:00, 77.99it/s, loss=1.69]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1880/3000]: Train loss: 1.6671, Valid loss: 1.9465\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1881/3000]: 100%|██████████| 9/9 [00:00<00:00, 83.42it/s, loss=2.18]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1881/3000]: Train loss: 1.8515, Valid loss: 2.3277\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1882/3000]: 100%|██████████| 9/9 [00:00<00:00, 91.39it/s, loss=1.74]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1882/3000]: Train loss: 1.8015, Valid loss: 2.1103\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Epoch [1883/3000]: 100%|██████████| 9/9 [00:00<00:00, 84.04it/s, loss=1.95]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch [1883/3000]: Train loss: 1.7741, Valid loss: 2.4238\n", + "\n", + "Model is not improving, so we halt the training session.\n" + ] + } + ], + "source": [ + "model = My_Model(input_dim=x_train.shape[1]).to(device) # put your model and data on the same computation device.\n", + "trainer(train_loader, valid_loader, model, config, device)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "Ik09KPqU-di-" + }, + "source": [ + "# Plot learning curves with `tensorboard` (optional)\n", + "\n", + "`tensorboard` is a tool that allows you to visualize your training progress.\n", + "\n", + "If this block does not display your learning curve, please wait for few minutes, and re-run this block. It might take some time to load your logging information. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "loA4nKmLGQ-n", + "colab": { + "resources": { + "https://localhost:6006/?tensorboardColab=true": { + "data": "PCFkb2N0eXBlIGh0bWw+PG1ldGEgbmFtZT0idGItcmVsYXRpdmUtcm9vdCIgY29udGVudD0iLi8iPjwhZG9jdHlwZSBodG1sPjwhLS0KQGxpY2Vuc2UKQ29weXJpZ2h0IDIwMTkgVGhlIFRlbnNvckZsb3cgQXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KCkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwp5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAoKICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAoKVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQpkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZApsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLS0+PGh0bWw+PGhlYWQ+PG1ldGEgY2hhcnNldD0idXRmLTgiPgo8dGl0bGU+VGVuc29yQm9hcmQ8L3RpdGxlPgo8bGluayByZWw9InNob3J0Y3V0IGljb24iIGhyZWY9ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBTVFBQUFERUNBWUFBQURBcG81ckFBQUFCSE5DU1ZRSUNBZ0lmQWhraUFBQUFBbHdTRmx6QUFCYWJnQUFXbTRCeFdzak9BQUFBQmwwUlZoMFUyOW1kSGRoY21VQWQzZDNMbWx1YTNOallYQmxMbTl5WjV2dVBCb0FBQmwwU1VSQlZIaWM3WjE1ZUZUVjNjYy92NXNGQ1ZSeHFWdHB0VlcyVmx4ZjYxcXRpcTBMOUdsOU5YVUJGRXBGUlRJaGhCQURDVGRBTUFFa0NZc0s3cUI5K2tENzJxZkJXaXZxVzdWYTY3NGlyZTlyYXhYMWJaVldaVEhML040LzVnNEdTR0R1ekwxejc1MDVuMzg0ek13NTU4dk0vWEsyM3prSERJR2ppemhQRjNGZTBEb01JRUVMeUdkMFBvT3dhQUF1Y1Y1YWgwVzVWUEI2a0xyeUdXT0lBRkNiL3ZTakVxZ0crdXp3S3dnZHdDMTBVQ2ZWL0RzWWhmbUxNVVFXVVJ1TEVrWUQ4eEVPMnY3R2pvWndQc3hIV014aElFdWxsSzVzNnN4bmpDR3loQzdnSkpSVzRDU2daeFAwbkg0Smk1aVU4N2pmR2czR0VMNmpUUXdFNWdHamtXN2ZkK3FHU0xLV0lzcGtNbS83SU5QZ1lBemhFMnBUUWgrcXNLZ0MrZ0x1VGJCcmVpdXdtSFlhWkRxZmVpcllBQmhEZUk0cVFpTVhBd3NRRHZQQUJEMmxOeUxVczRuYnhTYWV1V3BERW1NSUQ5RWJPUUZvUlRodCs0ditHQ0w1NTdOQXVjUjRLaTNCaGwwd2h2QUFiZUFRTEd4Z0FtRDVhb0x1NmNTZml2QUxsRXFKOFk1TDZZYWRNSWJJQUxVcHBvaHJFV1lqN0wzOWpld2FJcG5lakxLUXZXbVVjV3hMNlI5ZzJBVmppRFRSdVl6Q29nWDRCcEE5RTNSUDkveiszNEdaVXNiS1hxUWJkb014aEV1MGdhTVJtbEhPOXZBQi82T1RPdGtEUXlUU3lpTW81UkxqdFo3K0hZYWVzWUlXRUJYVVpqK2RTeXZ3UE1yWkhoVzdFV0VpbjNFYVV6a1ZvUlQ0bXljbEMrZGc4Ykl1WmFYZXdvR2VsSmtIbUJaaUQ2aE5JVVdNUjJrQUR2Q29WZGlLc0pqNHJ1c0p1cHdTUHFNS3FFS2M5WXZleWttOXprMUFFd2ZTTEtXMFkrZ1ZZNGpkb1BXY2cwVUx3bEhiWDh6Y0VHc1J5bVRhN2xlY3RZbUJGRGtyM095d3hwMk9JWkxwRFFoVDVUb2UyRjNkK1l3eFJBL29IQVpCdDdCc2IxcUZGeW1nWENyZHhTVHBJczRFV2hDTzNhWE05TFdzbzRDWVhNTWJiclRrQThZUTNWQ2IvZ2lWeUU1aDJaa1o0aU9FT1J5ZWZ0U3EybGdNWURUS2ZPQWdqM1Ixb054Q0lYVXkwWVNaSnpHR3dIbmdMT2VCNnlrc083MEhML0hBaVhmN0duUVovV252d2JEcGF3U2NNUFA5VEpnNUdFT2dzMU1JeTNiL3NLMGpUa3hxL09tU2FDdURVQnFRN1R2dHZPald2WWhRTHRma2Q1aDUzaHBDYlJkaDJhay9WQnRRS3FTRzMzZ3F0aGUwbFhPQUZ1QW9EOWRFMWxKQW1mdzBQOFBNODg0UWFsTUN6clJtcW1IWmUzNlFOaUUwOFRuTlltZDNXbE50Q3RtWDhZZ3pMZHk3UmpmcFJKaDVFUTN5ay93S004OGJReWdJZFZ5TXhRTFVaVmgyNys5M290eUpNRk5xK0lmWG10MmdpOWlQUW1ZQjF5RVVibjhqTTNPOGgxTERSRmFKb0o0S0RpbDVZUWl0NVFRa2c3RHNubDk3Rkl0eXFlWlZUOFZtaUM1aEtFb3o0aHhyNDAxWDZsbVVtRnpEMHg1S0RTVTViUWl0NFJDS3NORU13N0ozZk8wdGxCcVp5UnFQNVhxS0xtWVVRZ3ZpQkI5Q3B1WlE0RjQ2cUpKSmZPQ3AyQkNSazRaUW0ySTZQUXpMVHZ5WkNLL2VoeHVsak04OWx1d0xhbFBNL3M3M0FIdDcxRnBzUmxoSVlXNkdtZWVjSVhTRzUySFpjWVQ3RUtiSkRENzBWbTEyME9VY1FnYzI0clNVNE1YMzhoWkNqVXdJZDB2cGxwd3hoTjdBVUFwb0JzN3pjQXJ5R1pTWTFQR01oMUlEUTI5MnRyZ3FwM24ySFZrOFNwd3A4bE5lOFZCcVlFVGVFR3F6SHgzTVFyZ09uTm1Wekgvc2Q0RVoxT2JlN0lvcXdpM09JUWh3R09ERjk5V0pPTE50NDRPZGJjdVV5QnBDYlFycFlEeDRHcGE5QlZqQWwyaVNDclo2S0RkMDZISks2S1FLU1NITVBOVzB4U2JpTkxGM2RNUE1JMmtJclhGV2FMMEx5MWJnRnhRd1RXWjZ0RUVuSXVqaUZNTE0zYVlUWWVZVk1pNDdLL1plRWlsRDZFd0dFZmM4TFBzNUxNcWxqajk0cHpSNjZNMmM2VXhHN0JwbTdqYjl4V3ZyS0tSTXhyTGVPNlgrRWdsRHFPMUVlU3JWQ0gyMnY1R1pJVFlDOVdBTyswcWlOaFlITzRjeGR3OHpoMHpXYlJKUnZ4M1JDRE1QdFNIVXhtSXJvN0djSHdpOGFCWGFnVnNwWWFZNURySm5kQm45c2FqRWNzTE1JUk5ESkVtRW1mY05kNWg1YUEyaE4zUUx5L1p1R25VdFFreHMvdGREcVRtTDNzb2d4T21pWm02SVpQb0ZsSElaeHhOZWF2V0swQmxDcXhpSTFXMlFCMTYwQ2kraGxNc2NmdStwMkR4QlZ6RENpWTlLVEdKa1pvaGtlaTF4SnNzNC91cWwxa3dKalNIVXBvUXR6alFnOVBXb1ZVaHMzMXpQVWxrVDNtWTZDcWhOSVY5eFRoOFJKOHdjTWpFRUpLYTVsOUNYdVZMS1o5NHFUby9BRGFFZ1RPTml4RmtvY3YrbDlwUk9YRXZWVHAwMGhYOGdGeVgwZHZaRG1RVk1BZ295TkVReS9SNUNEYU9EWHdnTjFCQTZsUk93ZWduTFR0OFE2eERLWlk2NXVOQlA5RGFHQVl1UWJyZW5adjdiL1FtTG1JemVmcEpoMWduRUVGcnVoR1h2N3JSczkxL3FCdUpNbFhubXpLRnNvcmN6Q3B4Z1NtOWFkMFdjTVBOeDJROHp6Nm9obk83Uk5KUmFoUDQ5cW5EL3BYNE0xRlBFeldMVDZhMWlReXJvWGV4Rm5BcmdCcUMvUitPL1Q3Q1lReEdMc3hrR2t2VVdRaXM0emprTjc0d2VWYVJ1aUVSWWRoR1ZZdk4vZm1nMXVFT1hjd2lGUG9XWlg1R2RNUFBBeGhCYXlTaUVWdURycmcyaFBJb3dSZWJsUnNoeHJxRjNjd0pkenRqUXV6V2tSMUhLWmJTL1czYURIVlRiRkxPWmF4SG1BRi9hUVZIUFg4eGJXTlJJUTI1dFNzbEZWQkh1OWlITUhPNmtpSmxTNmsrWWVlRFRyZ0JheGFIQUxHQUMwbU5UbTlpMldFeWoyTG0zYlRHWDBlV1VVSnppYWVhcHB6ZWgxSE1veStRc2I4ZU5vVEJFRXEzaVA1eHUxS21Pc3NURzlpNnFaRUh1Ym16UEIvUTJCbExNUE5URE1ITjRFNHNLdVpRSHZkSVpLa09BTXhNMW5URUlGMk5oeXp4ZUNGcVR3VHYwTHI3cmhKa2ZzLzNGek0xeFAzRXE1WXJNWTlSQ1p3aEQ3cU0yRm9jN1llYVNRWmo1anVrT0xHNmhnMW9aelNmcGFqT0dNQVNHcnFZL1c3dWRaZzZadHhiQyt5ZzJGbmVrRTJadURHRUlITDJQUVhTbEVXYSt1elE4ajBXNWxQS2tHeTNHRUliUW9QZHdQc0lpaEtGQXBvYUF4S1gyRStUSDNKbXFCdGUza0dvNUU3U2NIN3JOWnpEc0NibVNCOW5LMGNCRTRKOWVGQWtjNmlhRCsydDVsU05SN3RjWTYvUjZ4OGtHZzBmSVJEcGtEQ3Zvd3hCZ01XUjNIMHM2aGloeVV1ZFF3Q3NhbzFXdjZ4YW9aekI0Z0pUeXNZd21ScHpod0crelZhOTdRMWpiRFFGUUJKUlJ4SHFOTWRZelZRYURnNHhsdll6bWZJUWZnUDk3NFROcElib3pFTGhIeTNqWWRLTU1maUNYMDBZUnc0QnlTSCtkWVUrNE53UTlHaUtCTUlJQ1h0WXBOS3JOWHVuTE1oaDJSVXBwbHl0b1JSZ0cvcHlsNWEwaEVoU2pUT2Rmdks0eFJxWWp5bURZSFhJWkc4R2Z2ZGQrR0NMSk54RGFkQXB0V3NuWDA2akhZTWc2WG8waGRzZEl1bmhkSzdCTk44b1FkaktkWlVxVnZpaXorSVRYdEpJTDA4aHZNR1NGYkxRUTNUbUNPR3UxZ2pZdDUvQU15akVZZk1IUE1jVHVHRWtCYjJpbDZVWVp3a1ZRaG9Ca04rcFRYdFZwWE9CUm1RWkRSZ1JwaUNSSG9qeWdVMm5UYXRPTk1nUkx0c2NRdlNPTXBKUFh0UXBiSjNlN0ZNVmd5Q0x1RFNFK0dTSkJDY29zK3ZDYVR1dDJacWpCa0NYQzBHWGFGZUZJNEVHdG9rMm5PbWY2R0F4WklKeUcrSUxFYkpUcFJobXlSTmdOQVZBQ3pLS0VWM1U2Mzg5eTNZWThJd3FHU0RJSStLMVcwNmJUK1ZwQUdndzVUcFFNa1VBWmliQmVxN0hWcGpoUUxZYWNJM3FHU0pEb1JtM2pWYTNtZTBHTE1lUU9VVFZFa3NFSUQra050T2tNdmhxMEdFUDBpYm9oa293a3pucXRNZDBvUTJia2lpRUErZ0d6YU9jVnJlSGNvTVVZb29rclEyamk0S2RDbjdSNHhSRGdkenJEZEtNTTduSFhRbHdkZWpOMFp5U3dYbWVhYmxSZUUzZDNHSUhiTGxOWXUwdTkwUTlsRmwyOHJETVpFYlFZUTFiWmpGTFBOaGE1eWVUT0VQdEd6aEFKbEtIQTczUW1LN1dHZzRLV1kvQVZCVmJSd1NDNURGdkd1YnVDelowaE9pTnFpQVFDaktHQURUcVRtTnFSNnY0WlVrSDVFeGFueWFXTWxURzhuMDRSN2d6UkZXbERKTmtIb1lVdW50TmFUZ3Rhak1FVDNrVzRra3M1V1VwNU9wT0MzQm5DcjgxQndYQU13aE5hWjdwUmtVWFpBdFJUd0dDNWxKVWltUjllNXM0UThad3lCQ1M3VVlXOHFYWEU5QklLZ2haa1NCRmhGVVVNbHN1d3BaU3QzaFhyQXIyZW9SU3czbFdwMFVxL2hEQkpiSjdDa0plNGF5R0tjcTZGMkpsamdTZlZacVhhSEJpMEdFUDJ5ZWN4Uk0rbzA0MkNEVnBQVEZlYmJsUStZUXpST3dOUVdsalBzenFiVTRJV1k4Z091YjVTN1FYSG9meEI2MW1wOC9oeTBHSU0vbUphaU5SSWRLTTYyYUJ6VERjcWwzRm5DTW43SUxsOVVWcll3SjkwTGljSExjYmdQYWJMbEE3SzhTaFA2UnpUamNvMVRKY3BmUkxkcUM3VGpjb2xUQXVST2ZzaXRQQVhudEhabkJTMEdFTm11RE5FZXJjSDVRZktDVmc4cFhOWnFUWUhCQzNIa0I2bWhmQVdDMkVNUld6UUJtSnFwN1ZuUFZSb013T0MxcEFKdXBxRDNYemU3USsyNXowRXJxS2pjcGI5Z0JhS2VWSWJPU1pvTWVtZ1N6aFVsN0tjWXVZRXJTVWRkQlZEOUdjOFFBZFQzZVJ6TzZoMk4rMXF6SEVLU2xuUUl0eWdOc1c2aEJnV2J5SmNUWG9uc3dTRzNzZStlaCtOV0x3QzdtK21jcmRyVENsSyt5SGZNZDltNERHZ2pTNmVvSWpIMEJ6ZGt4Q25QV2dKcWFMTEdJWFNDdEc3VjF4dExJNWdOTEFBMGcvTWRMdU5NcE14eE5zb0R3TnIyWWVIeFA3aVFkRktLb0Q3TWlnN3ZBZ2RRVXZZRTdxTVk0blRnbkptMEZyU1FlL2pMT0swSUJ5ZGFWbnVER0ZSNUdKUFVoZUovUVZyRWRya0pwN3Y3WU95a0o5cEpaZEREdDVoTGVGdElYUXArd04xeEprRTBWdEgwWlY4RFl1NUtHTzg2cDY3N3pMdG5zMkkweFVxNU5leWdBOWNLTG1lTHI1TDRnUyszRUhEMTBMb2NvcG81enJpMUNQc0U3UWV0K2hLK2lGTUE2YWo3T1hsV05XTEx0UGJDQThqdTNhRjNDQ04vRldyYUVDWmwzZ2huVkpDU01nTW9Zc1p3ZWUwQU44S1dvdGJWQkh1WlF4S0U3aWJUazJWZEF6eFJWY29UcHNzN3IwcjVKb1NGckNaVWhJNzEzSURLeHlHMEtVTXBvdEZLQmRHOFQ4YnZZc1RXVVVyK0xzM3haMGh1cmliSXVaTE14LzdJVVpzT3JXUzZ4Q2VwUHQwWDIvN29LTkJvR01JYldZQVFqVmRUSUhvUlN2clBYd0Z1QkVZVFJaK2ZWZUdrS1c4NlplUTdYVXM1R21keG5MZ1dyL3J5Z29CZFpuVXhtSkE1dE9RUWFHcjZjdFd5b0Fad0pleVZXODRGMTIyVVkzdzNoNC9GNFhXSW9CWkpyMkpzOWlIRjRCN2lLSVo3bUlVVzNnRHBaRXNtZ0ZDYWdoWndpZEFoYnRNL21qSm1DeTJFSG9UWDlWbVZtTHhLRVF2WkVUdjVIaTlpOGNSZmcwY0hvU0cwSjV2S2syczFtbU1SaGpsUHJNUGd0SWxDNGJRQmZURFlockNkR0F2dit2ekdyMkgvZW1pRGdsK1BTUzBoZ0RBNG5xVXM0RCthWmNSdkRsODZ6S3BJaXppWW9TRkVMMnJpblU1UlJSekhWM2hXUThKWlpjcGlUVHhEa0s5ZHdWNlZsTHErRFR0cWdzNWtVVThDYXdtaW1hNGt4RVU4UkpLQzRURERKQmxRNmhOb2JwOUxQdlNBcnpvdVpqc21HTVR5cXRlRnFoTkhLb0xXWTd3UitCVUw4dk9Cbm9IUS9SMkhuRGkycjRadEo2ZDhkMFFPcGsrT29VUldrRXJuL0F1VTdqS1RYNng2VVM1bXNTQ29ELzRZUTdsQXl6T2tocmU4S3pJaFZ4RUFYK0c2SVZsQStqdGpBZGVROXlIWldjTFg3NVVuVUpmbmNJb25jSktDdmtRZUJnb0F3NUNhTllxQnJvcFQrYnpISEN6SDFwM3JjeVRVdDZtZ085SU5TOTdVdG9YSEVPMFk3MkdFZkp4cTJmaXRKd0JLT2NpakVMNUVkQy9sNGRySDdxNEJWek9IaWt6RUg0RTdzeVVFZW1aNHpVSytiNU1aNlBIYWd4WklLTVdRaWV4djhZWXF6SGFVRDRrTWNBYnc1NW5oVVpxQlQ5MlU1Zk01MU1rOUx2UEhxZUEwNDBab290clEraGtCbW9aVjJ1TU5ncDVuOFJxNkVqY3hza0lTN1hTM1NxcU5ISS95cTljMWVNVmUyNHQxbExDZVZMTnY3T2d4dUFUN2k1dUwrY2lMTjVCV0U3Q0JKbnNvRHVBT00ydWN5bVRJT0NIYm1kektQZnlaUzZTQ3U5dXNqRUVnOXNydGZyaDVaeU1jTGxPNVlldXNzeG5JOG9zenpSa2lzVVN1cmhTSm9ZanpOdVFHY0ZQM1FrM2F6WDd1c3JUbHlYQUgvMFJsRElLMU1zTXlzUW1IckFXZzBjRWJ3ZzRoRTZhM0dRUW16Z1dFeUd3LzVXN1VLNlJXdXlBNmpmNFJCZ01BVEJCcC9FOU54bGtIcThBUzN6U3N6dmFFUzZUT2xZRVVMZkJaOEppQ0NIT2NyVmRCdkgxb1JaNDJ4OUpQYklaWVpUTVpFMFc2elJra2JBWUFvVEQyY3hjVjFsc3RqZ2h3OW5nWXl4R1NDMi95MUo5aGdBSWp5RVNUTmJwbk80bWc4empRZUFYUHVsSjhnN0NxVEl6OElHOHdXZkNaZ2lMT0xlcjdYS1RTeWVUZ1gvNUk0bjFGSEM2MUxMQnAvSU5JU0pzaGdBWXdtWnEzV1J3RGtTYjZZT1c1eWppVEpuSjM5TXRRQnM0eWt0QkJuOEpveUVBcXJTYUUxemxLT1lXNENrUE5UekdYcHd0TmZ3ajNRTDBScVlqVkhxb3llQXpZVFZFSVhIdTBLdFREdzBSbXpnRlhJTTNheE8vQWk2UTZYeWFiZ0hhd0d6bjFBaERoQWlySVFDT1lRQlZiakxJSEY1RjBvaVAycEc3Z1V2RVpsczZtVlVSYmFBRmNkZnRNNFNETUJzQ29GYW51enlEZEFzMjhEOXAxU1kwaWMwNHNlbE1KN3V1cG9CNTNBN0UwcXJmRURoaE4wUWY0QTY5SlBXalNhU1pyVTVFYk9vSWlsSXBOdFZ1QlNiUjFSVHdaKzRDeHFkYmhpRjR3bTRJVUU3aTYweDJrMFhtOFJEQ3oxUDhlQmN3UVdaemszdHhDZFNtbUQrekJtRk11bVVZd2tINERRRWdOR2cxUjdyS0U2Y2MyTFNIVDMxT1lyeHdaN3JTMUthRVF0cUFINlZiaGlFOFJNTVFVSUp5bTVzamJHUWVIOEp1dTBEL3dtS0V6T2IrZEVYcEF2bzVabkFWbUdnSUwxRXhCTUIzcWVhbnJuSTBjQnZ3WkEvdkpJNklzWHQ4THlYVVpnRGJXQWVjblc0Wmh2QVJKVU9Bc2tCbjhOVlVQeTZKVFR3VFNIU05raVNPaUxGNUtXMFpOZ2RTd0g4REo2ZGJoaUdjUk1zUXNEZGQzT29tZzh4bEE3RFErZXZyeFBtTzJMeVZyZ0MxT1pnQ0hpR0NwMnNiOWt6VURBRndnVlp6aGFzY2hjeEZ1WnNDVHBlR0ZPNmQ2QVdkeTJGWVBBRW1QaWxYQ2ZVcGFydWhWV3RZNXd5Yzk0aXo2and1a3dyVlpqQngxa0hxWFRaRDlJaGlDd0d3UDhyaWJGV21jeGlHeFdNWU0rUThVVFVFS0tWNkF4ZjVYbzNOOGNSNUhEalU3N29Nd1JOZFF5UllwamI3K1ZXNHp1WkVoSWVCQS95cXd4QXVvbTZJZzltV2ZzakY3dERabklueUNQaG5PRVA0aUxvaFFMaEtxem5QeXlLMW52T0o4eUJadmdIVEVEelJOd1NBc0Z5cnZIbDQxZVlIS1BjRGZiMG96eEF0Y3NNUThEVUt1VEhUUXJTT3k0QmZrZ2c3TitRaHVXSUlnR3QxQm1la20xbHRya2E0bCtpdXpSZzhJSmNNWWFIY3BsUGNkM1cwamtuQXJlVFc5MkZJZzF4N0FBWlQ0dTRBWXExak9zSlNOQVEzV2hzQ0o5Y01BY3BVcmVYRWxENDZpM293SjJQa01HK2cvTkpOQm5lRzZPSnhKUFJubXhZUTV3NjFlNy9pUzBGMEZxMG9kZGtVWnNnYW00QnFDamxPUnJzN2Z0VFZBRktXOFRmZyt6cUZFY1JwQVpjblltU1A0YlJ6QTFDLzh4dHFZOUhKQ3BTZkJLREw0Qzl4NEQ2S21DcWw2UjB3bDFhWFNacFp4MWFPUXlrbjZQdmVla09vMFZxR2QzOUpMNkdBVHU1RWpCbHlEdUZSTEk2VEt4aWJyaGtnZ3pHRXJLQkRGdE5LSjBjQWkwbWNYaEVtaW9semo5cUpWbEJ0aWhuS2FvUXJneFptOEpTM0VFcmxDczZSeTNrbDA4SXlIbFRMTWo2U1ZtSUl3NEdITWkzUFk0NmpnM0tkVEI4NldRUCtSOGNhc3NabW9KNU9oc3NWM2wxZzQ5a2lsTFN3SGpoUFkxeUNNQjg0M0t1eU0wS1l6VDVjQkp3U3RCU0RKeWh3TDUxVXlUZys4THB3ejZkZHBaVTFER0FJUWpud2lkZmxwMEZmakJseWhXZFJUcE94alBYRERPRFRPb1RZdEVzenJSUXhERmdCNXRwYVEwYThoM0lsWXpoSnJ1UnBQeXZ5ZFdGTzVyTlJtcGtJbkFUOHdjKzZERG5KVnFDSnZneVZxMWdwZ3ZwZFlWWUMyYVNaNXhTK1F3VVhBd3VBdzdKUnJ5SFNyRVdaTEZmeDEyeFdtclhRRFFHVlJhemhNNzZKVUUvQy9RYkR6cnlBY29aY3hTZ1psMTB6UUFDeFRMS0NMYklRbXdJR0E2dkEvMmJRRUFrK0FzcnB4N2RsSEU4RUpTS3c0RDZaejd0eUUyT0JVeEJ6M1cwZTB3RXNwcDBqWkJ5dFVocnNBbS9nMGE2eWtHZm94Mm5PQ25KS0I0OFpjb1oxd0xFeW5waE1ERWNJVU9DR2dNU0ZpYktBbFNoSE9PT0x6L2VZeVJCbE5tQnhvWXpuWEJuUEcwR0w2VTRvREpGRUZySlo1bU5Ud0ZHSWQ4dnhodER3TWNway9zNVJNbzdmQkMybUowSzVmMWdhZVFzbzFXck9kc0xNaCs4cGp5SDh5SVRNRDRMd20xQzFFRHNqalR4S0NjY2pUSVQwUTNvTmhsUUp0U0VBeEtaVEdsbUJNQVNsQ1dnUFdwTWhkd205SVpKSUk1dGtQdFhFT1JyQzJmODBSSi9JR0NLSnpHZUROSEloY0M2RWE0YkNFSDBpWjRnazBzZzZQdUpZSjh3OEZIUFlodWdUV1VPQXM0MTFIcTNBRWM0RkttSGJ4bXFJR0pFMlJCSzVrWS9rUm1MRU9SRjRQR2c5aHVpU0U0WklJbzI4S1BNNEUvZ0I4SGJRZWd6Ukk2Y01rVVFhYUdNTDMwS3BCajROV284aE91U2tJUUNrbWEweWp5WUtHWXFhYmF5RzFNaFpReVFSbTQzU3dFU1VreENlQ2xwUHhQZ3Y0dHN2dmM4TGN0NFFTYVNCNTVqTjZRaWx3RHRCNndrNWJ3TG55eVQrVXlibjExZ3Nid3dCempiVzJheWhnR0Vrem4zZEZyU21rUEV4U2puL1pMaE00cmRCaXdtQ3ZESkVFckhaSXJPeHNSZ0VyQ0lMcHptRW5FNWdCVVVNa2NtMGlrMW4wSUtDSWk4TmtVUnMzcFhaaktXTHM0Q1hndFlUQ01vanhEbE9Kak5SSnZMUG9PVUVUVjRiSW9uTTRmY0lKK1RaTnRhL0lKUktHU01reG10Qml3a0x4aEFPWWhNWG01WEFrWkRUMjFnL1E2a0hoc3Rrc3l0eFo0d2hka0pzUGhNYm13S0dRMDQ5TUhGZ0ZjcVJFc09Xc3B3MWZFYUVjZ3RwR0pCYS9nS1VhajNuQU0xRWV4dnJNeWd4S2VlWm9JV0VIZE5DN0FHWnhTTW94ME1rdDdHK0MxeEpqRk9NR1ZMREdDSUZ4S1pUNmxoQm5LRWtia3NLKzdUa0ZxQ2VPSU9sUER1SEJPY0t4aEF1RUp1UHBZNFlCUXhIZVRCb1BUMmd3QnE2K0taTXdaWUtjMzZ1Vzh3WUlnMmtoamVCQzNRT0kwaTBHTU1DbGdUQzgwQk1wcGhyQnpMQnRCQVpJTFdzNDhzY0UvQnRyTzhqVE9UZmZOdVlJWE9NSVRKRUp0SWh0YlJpY1FTUzFXMnM3Y0JpaWhncVUxZ2h0Z2x2OXdKakNJK1FHajZTR21MQXQ4SDM0OXpYWWpGTXBoS1RzbERjNDVjem1ER0V4OGdNWGdETzBMbU13cUxWNCtMZlJEaGJwdktZeCtVYURQNmpOaVhheUJsQjZ6Q2t6djhEUWQ3UXJNYkxSMUFBQUFBQVNVVk9SSzVDWUlJPSI+CjxsaW5rIHJlbD0iYXBwbGUtdG91Y2gtaWNvbiIgaHJlZj0iZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFNUUFBQURFQ0FZQUFBREFwbzVyQUFBQUJITkNTVlFJQ0FnSWZBaGtpQUFBQUFsd1NGbHpBQUJhYmdBQVdtNEJ4V3NqT0FBQUFCbDBSVmgwVTI5bWRIZGhjbVVBZDNkM0xtbHVhM05qWVhCbExtOXlaNXZ1UEJvQUFCbDBTVVJCVkhpYzdaMTVlRlRWM2NjL3Y1c0ZDVlJ4cVZ0cHRWVzJWbHhmNjFxdGlxMEw5R2w5TlhVQkZFcEZSVEloaEJBRENUZEFNQUVrQ1lzSzdxQjkra0Q3MnFmQldpdnFXN1ZhNjc0aXJlOXJheFgxYlpWV1pUSEwvTjQvNWc0R1NHRHV6TDF6NzUwNW4zODR6TXc1NTh2TS9YSzIzemtIRElHaml6aFBGM0ZlMERvTUlFRUx5R2QwUG9Pd2FBQXVjVjVhaDBXNVZQQjZrTHJ5R1dPSUFGQ2IvdlNqRXFnRyt1endLd2dkd0MxMFVDZlYvRHNZaGZtTE1VUVdVUnVMRWtZRDh4RU8ydjdHam9ad1BzeEhXTXhoSUV1bGxLNXM2c3huakNHeWhDN2dKSlJXNENTZ1p4UDBuSDRKaTVpVTg3amZHZzNHRUw2alRRd0U1Z0dqa1c3ZmQrcUdTTEtXSXNwa01tLzdJTlBnWUF6aEUycFRRaCtxc0tnQytnTHVUYkJyZWl1d21IWWFaRHFmZWlyWUFCaERlSTRxUWlNWEF3c1FEdlBBQkQybE55TFVzNG5ieFNhZXVXcERFbU1JRDlFYk9RRm9SVGh0KzR2K0dDTDU1N05BdWNSNEtpM0JobDB3aHZBQWJlQVFMR3hnQW1ENWFvTHU2Y1NmaXZBTGxFcUo4WTVMNllhZE1JYklBTFVwcG9ockVXWWo3TDM5amV3YUlwbmVqTEtRdldtVWNXeEw2UjlnMkFWamlEVFJ1WXpDb2dYNEJwQTlFM1JQOS96KzM0R1pVc2JLWHFRYmRvTXhoRXUwZ2FNUm1sSE85dkFCLzZPVE90a0RReVRTeWlNbzVSTGp0WjcrSFlhZXNZSVdFQlhVWmorZFN5dndQTXJaSGhXN0VXRWluM0VhVXprVm9SVDRteWNsQytkZzhiSXVaYVhld29HZWxKa0htQlppRDZoTklVV01SMmtBRHZDb1ZkaUtzSmo0cnVzSnVwd1NQcU1LcUVLYzlZdmV5a205emsxQUV3ZlNMS1cwWStnVlk0amRvUFdjZzBVTHdsSGJYOHpjRUdzUnltVGE3bGVjdFltQkZEa3IzT3l3eHAyT0laTHBEUWhUNVRvZTJGM2QrWXd4UkEvb0hBWkJ0N0JzYjFxRkZ5bWdYQ3JkeFNUcElzNEVXaENPM2FYTTlMV3NvNENZWE1NYmJyVGtBOFlRM1ZDYi9naVZ5RTVoMlprWjRpT0VPUnllZnRTcTJsZ01ZRFRLZk9BZ2ozUjFvTnhDSVhVeTBZU1pKekdHd0huZ0xPZUI2eWtzTzcwSEwvSEFpWGY3R25RWi9XbnZ3YkRwYXdTY01QUDlUSmc1R0VPZ3MxTUl5M2Ivc0swalRreHEvT21TYUN1RFVCcVE3VHZ0dk9qV3ZZaFFMdGZrZDVoNTNocENiUmRoMmFrL1ZCdFFLcVNHMzNncXRoZTBsWE9BRnVBb0Q5ZEUxbEpBbWZ3MFA4UE04ODRRYWxNQ3pyUm1xbUhaZTM2UU5pRTA4VG5OWW1kM1dsTnRDdG1YOFlnekxkeTdSamZwUkpoNUVRM3lrL3dLTTg4YlF5Z0lkVnlNeFFMVVpWaDI3Kzkzb3R5Sk1GTnErSWZYbXQyZ2k5aVBRbVlCMXlFVWJuOGpNM084aDFMRFJGYUpvSjRLRGlsNVlRaXQ1UVFrZzdEc25sOTdGSXR5cWVaVlQ4Vm1pQzVoS0VvejRoeHI0MDFYNmxtVW1GekQweDVLRFNVNWJRaXQ0UkNLc05FTXc3SjNmTzB0bEJxWnlScVA1WHFLTG1ZVVFndmlCQjlDcHVaUTRGNDZxSkpKZk9DcDJCQ1JrNFpRbTJJNlBRekxUdnlaQ0svZWh4dWxqTTg5bHV3TGFsUE0vczczQUh0NzFGcHNSbGhJWVc2R21lZWNJWFNHNTJIWmNZVDdFS2JKREQ3MFZtMTIwT1VjUWdjMjRyU1U0TVgzOGhaQ2pVd0lkMHZwbHB3eGhON0FVQXBvQnM3emNBcnlHWlNZMVBHTWgxSURRMjkydHJncXAzbjJIVms4U3B3cDhsTmU4VkJxWUVUZUVHcXpIeDNNUXJnT25ObVZ6SC9zZDRFWjFPYmU3SW9xd2kzT0lRaHdHT0RGOTlXSk9MTnQ0NE9kYmN1VXlCcENiUXJwWUR4NEdwYTlCVmpBbDJpU0NyWjZLRGQwNkhKSzZLUUtTU0hNUE5XMHhTYmlOTEYzZE1QTUkya0lyWEZXYUwwTHkxYmdGeFF3VFdaNnRFRW5JdWppRk1MTTNhWVRZZVlWTWk0N0svWmVFaWxENkV3R0VmYzhMUHM1TE1xbGpqOTRwelI2Nk0yYzZVeEc3QnBtN2piOXhXdnJLS1JNeHJMZU82WCtFZ2xEcU8xRWVTclZDSDIydjVHWklUWUM5V0FPKzBxaU5oWUhPNGN4ZHc4emgweldiUkpSdngzUkNETVB0U0hVeG1Jcm83R2NId2k4YUJYYWdWc3BZYVk1RHJKbmRCbjlzYWpFY3NMTUlSTkRKRW1FbWZjTmQ1aDVhQTJoTjNRTHkvWnVHblV0UWt4cy90ZERxVG1MM3NvZ3hPbWlabTZJWlBvRmxISVp4eE5lYXZXSzBCbENxeGlJMVcyUUIxNjBDaStobE1zY2Z1K3AyRHhCVnpEQ2lZOUtUR0prWm9oa2VpMXhKc3M0L3VxbDFrd0pqU0hVcG9RdHpqUWc5UFdvVlVoczMxelBVbGtUM21ZNkNxaE5JVjl4VGg4Uko4d2NNakVFSkthNWw5Q1h1VkxLWjk0cVRvL0FEYUVnVE9OaXhGa29jditsOXBST1hFdlZUcDAwaFg4Z0Z5WDBkdlpEbVFWTUFnb3lORVF5L1I1Q0RhT0RYd2dOMUJBNmxST3dlZ25MVHQ4UTZ4REtaWTY1dU5CUDlEYUdBWXVRYnJlblp2N2IvUW1MbUl6ZWZwSmgxZ25FRUZydWhHWHY3clJzOTEvcUJ1Sk1sWG5tektGc29yY3pDcHhnU205YWQwV2NNUE54MlE4eno2b2huTzdSTkpSYWhQNDlxbkQvcFg0TTFGUEV6V0xUNmExaVF5cm9YZXhGbkFyZ0JxQy9SK08vVDdDWVF4R0xzeGtHa3ZVV1FpczR6amtONzR3ZVZhUnVpRVJZZGhHVll2Ti9mbWcxdUVPWGN3aUZQb1daWDVHZE1QUEF4aEJheVNpRVZ1RHJyZzJoUElvd1JlYmxSc2h4cnFGM2N3SmR6dGpRdXpXa1IxSEtaYlMvVzNhREhWVGJGTE9aYXhIbUFGL2FRVkhQWDh4YldOUklRMjV0U3NsRlZCSHU5aUhNSE82a2lKbFM2aytZZWVEVHJnQmF4YUhBTEdBQzBtTlRtOWkyV0V5ajJMbTNiVEdYMGVXVVVKemlhZWFwcHplaDFITW95K1FzYjhlTm9UQkVFcTNpUDV4dTFLbU9zc1RHOWk2cVpFSHVibXpQQi9RMkJsTE1QTlRETUhONEU0c0t1WlFIdmRJWktrT0FNeE0xblRFSUYyTmh5enhlQ0ZxVHdUdjBMcjdyaEprZnMvM0Z6TTF4UDNFcTVZck1ZOVJDWndoRDdxTTJGb2M3WWVhU1FaajVqdWtPTEc2aGcxb1p6U2ZwYWpPR01BU0dycVkvVzd1ZFpnNlp0eGJDK3lnMkZuZWtFMlp1REdFSUhMMlBRWFNsRVdhK3V6UThqMFc1bFBLa0d5M0dFSWJRb1Bkd1BzSWloS0ZBcG9hQXhLWDJFK1RIM0ptcUJ0ZTNrR281RTdTY0g3ck5aekRzQ2JtU0I5bkswY0JFNEo5ZUZBa2M2aWFEKzJ0NWxTTlI3dGNZNi9SNng4a0dnMGZJUkRwa0RDdm93eEJnTVdSM0gwczZoaWh5VXVkUXdDc2FvMVd2Nnhhb1p6QjRnSlR5c1l3bVJwemh3Ryt6VmE5N1ExamJEUUZRQkpSUnhIcU5NZFl6VlFhRGc0eGx2WXptZklRZmdQOTc0VE5wSWJvekVMaEh5M2pZZEtNTWZpQ1gwMFlSdzRCeVNIK2RZVSs0TndROUdpS0JNSUlDWHRZcE5Lck5YdW5MTWhoMlJVcHBseXRvUlJnRy9weWw1YTBoRWhTalRPZGZ2SzR4UnFZanltRFlIWElaRzhHZnZkZCtHQ0xKTnhEYWRBcHRXc25YMDZqSFlNZzZYbzBoZHNkSXVuaGRLN0JOTjhvUWRqS2RaVXFWdmlpeitJVFh0SklMMDhodk1HU0ZiTFFRM1RtQ09HdTFnall0NS9BTXlqRVlmTUhQTWNUdUdFa0JiMmlsNlVZWndrVlFob0JrTitwVFh0VnBYT0JSbVFaRFJnUnBpQ1JIb2p5Z1UyblRhdE9OTWdSTHRzY1F2U09NcEpQWHRRcGJKM2U3Rk1WZ3lDTHVEU0UrR1NKQkNjb3MrdkNhVHV0MlpxakJrQ1hDMEdYYUZlRkk0RUd0b2sybk9tZjZHQXhaSUp5RytJTEViSlRwUmhteVJOZ05BVkFDektLRVYzVTYzODl5M1lZOEl3cUdTRElJK0sxVzA2YlQrVnBBR2d3NVRwUU1rVUFaaWJCZXE3SFZwamhRTFlhY0kzcUdTSkRvUm0zalZhM21lMEdMTWVRT1VUVkVrc0VJRCtrTnRPa012aHEwR0VQMGlib2hrb3drem5xdE1kMG9RMmJraWlFQStnR3phT2NWcmVIY29NVVlvb2tyUTJqaTRLZENuN1I0eFJEZ2R6ckRkS01NN25IWFFsd2Rlak4wWnlTd1htZWFibFJlRTNkM0dJSGJMbE5ZdTB1OTBROWxGbDI4ckRNWkViUVlRMWJaakZMUE5oYTV5ZVRPRVB0R3poQUpsS0hBNzNRbUs3V0dnNEtXWS9BVkJWYlJ3U0M1REZ2R3VidUN6WjBoT2lOcWlBUUNqS0dBRFRxVG1OcVI2djRaVWtINUV4YW55YVdNbFRHOG4wNFI3Z3pSRldsREpOa0hvWVV1bnROYVRndGFqTUVUM2tXNGtrczVXVXA1T3BPQzNCbkNyODFCd1hBTXdoTmFaN3BSa1VYWkF0UlR3R0M1bEpVaW1SOWU1czRROFp3eUJDUzdVWVc4cVhYRTlCSUtnaFprU0JGaEZVVU1sc3V3cFpTdDNoWHJBcjJlb1JTdzNsV3AwVXEvaERCSmJKN0NrSmU0YXlHS2NxNkYySmxqZ1NmVlpxWGFIQmkwR0VQMnllY3hSTStvMDQyQ0RWcFBURmViYmxRK1lRelJPd05RV2xqUHN6cWJVNElXWThnT3ViNVM3UVhIb2Z4QjYxbXA4L2h5MEdJTS9tSmFpTlJJZEtNNjJhQnpURGNxbDNGbkNNbjdJTGw5VVZyWXdKOTBMaWNITGNiZ1BhYkxsQTdLOFNoUDZSelRqY28xVEpjcGZSTGRxQzdUamNvbFRBdVJPZnNpdFBBWG50SFpuQlMwR0VObXVETkVlcmNINVFmS0NWZzhwWE5acVRZSEJDM0hrQjZtaGZBV0MyRU1SV3pRQm1KcXA3Vm5QVlJvTXdPQzFwQUp1cHFEM1h6ZTdRKzI1ejBFcnFLamNwYjlnQmFLZVZJYk9TWm9NZW1nU3poVWw3S2NZdVlFclNVZGRCVkQ5R2M4UUFkVDNlUnpPNmgyTisxcXpIRUtTbG5RSXR5Z05zVzZoQmdXYnlKY1RYb25zd1NHM3NlK2VoK05XTHdDN20rbWNyZHJUQ2xLK3lIZk1kOW00REdnalM2ZW9JakgwQnpka3hDblBXZ0pxYUxMR0lYU0N0RzdWMXh0TEk1Z05MQUEwZy9NZEx1Tk1wTXh4TnNvRHdOcjJZZUh4UDdpUWRGS0tvRDdNaWc3dkFnZFFVdllFN3FNWTRuVGduSm0wRnJTUWUvakxPSzBJQnlkYVZudURHRlI1R0pQVWhlSi9RVnJFZHJrSnA3djdZT3lrSjlwSlpkRER0NWhMZUZ0SVhRcCt3TjF4SmtFMFZ0SDBaVjhEWXU1S0dPODZwNjc3ekx0bnMySTB4VXE1TmV5Z0E5Y0tMbWVMcjVMNGdTKzNFSEQxMExvY29wbzV6cmkxQ1BzRTdRZXQraEsraUZNQTZhajdPWGxXTldMTHRQYkNBOGp1M2FGM0NDTi9GV3JhRUNabDNnaG5WSkNTTWdNb1lzWndlZTBBTjhLV290YlZCSHVaUXhLRTdpYlRrMlZkQXp4UlZjb1Rwc3M3cjByNUpvU0ZyQ1pVaEk3MTNJREt4eUcwS1VNcG90RktCZEc4VDhidllzVFdVVXIrTHMzeFowaHVyaWJJdVpMTXgvN0lVWnNPcldTNnhDZXBQdDBYMi83b0tOQm9HTUliV1lBUWpWZFRJSG9SU3ZyUFh3RnVCRVlUUlorZlZlR2tLVzg2WmVRN1hVczVHbWR4bkxnV3Ivcnlnb0JkWm5VeG1KQTV0T1FRYUdyNmN0V3lvQVp3SmV5Vlc4NEYxMjJVWTN3M2g0L0Y0WFdJb0JaSnIySnM5aUhGNEI3aUtJWjdtSVVXM2dEcFpFc21nRkNhZ2had2lkQWhidE0vbWpKbUN5MkVIb1RYOVZtVm1MeEtFUXZaRVR2NUhpOWk4Y1JmZzBjSG9TRzBKNXZLazJzMW1tTVJoamxQck1QZ3RJbEM0YlFCZlREWWhyQ2RHQXZ2K3Z6R3IySC9lbWlEZ2wrUFNTMGhnREE0bnFVczREK2FaY1J2RGw4NnpLcElpemlZb1NGRUwycmluVTVSUlJ6SFYzaFdROEpaWmNwaVRUeERrSzlkd1Y2VmxMcStEVHRxZ3M1a1VVOENhd21pbWE0a3hFVThSSktDNFREREpCbFE2aE5vYnA5TFB2U0Fyem91WmpzbUdNVHlxdGVGcWhOSEtvTFdZN3dSK0JVTDh2T0Jub0hRL1IySG5EaTJyNFp0SjZkOGQwUU9waytPb1VSV2tFcm4vQXVVN2pLVFg2eDZVUzVtc1NDb0QvNFlRN2xBeXpPa2hyZThLekloVnhFQVgrRzZJVmxBK2p0akFkZVE5eUhaV2NMWDc1VW5VSmZuY0lvbmNKS0N2a1FlQmdvQXc1Q2FOWXFCcm9wVCtiekhIQ3pIMXAzcmN5VFV0Nm1nTzlJTlM5N1V0b1hIRU8wWTcyR0VmSnhxMmZpdEp3QktPY2lqRUw1RWRDL2w0ZHJIN3E0QlZ6T0hpa3pFSDRFN3N5VUVlbVo0elVLK2I1TVo2UEhhZ3haSUtNV1FpZXh2OFlZcXpIYVVENGtNY0FidzU1bmhVWnFCVDkyVTVmTTUxTWs5THZQSHFlQTA0MFpvb3RyUStoa0Jtb1pWMnVNTmdwNW44UnE2RWpjeHNrSVM3WFMzU3FxTkhJL3lxOWMxZU1WZTI0dDFsTENlVkxOdjdPZ3h1QVQ3aTV1TCtjaUxONUJXRTdDQkpuc29EdUFPTTJ1Y3ltVElPQ0hibWR6S1BmeVpTNlNDdTl1c2pFRWc5c3J0ZnJoNVp5TWNMbE81WWV1c3N4bkk4b3N6elJraXNVU3VyaFNKb1lqek51UUdjRlAzUWszYXpYN3VzclRseVhBSC8wUmxESUsxTXNNeXNRbUhyQVdnMGNFYndnNGhFNmEzR1FRbXpnV0V5R3cvNVc3VUs2Uld1eUE2amY0UkJnTUFUQkJwL0U5Tnhsa0hxOEFTM3pTc3p2YUVTNlRPbFlFVUxmQlo4SmlDQ0hPY3JWZEJ2SDFvUlo0Mng5SlBiSVpZWlRNWkUwVzZ6UmtrYkFZQW9URDJjeGNWMWxzdGpnaHc5bmdZeXhHU0MyL3kxSjloZ0FJanlFU1ROYnBuTzRtZzh6alFlQVhQdWxKOGc3Q3FUSXo4SUc4d1dmQ1pnaUxPTGVyN1hLVFN5ZVRnWC81STRuMUZIQzYxTExCcC9JTklTSnNoZ0FZd21acTNXUndEa1NiNllPVzV5amlUSm5KMzlNdFFCczR5a3RCQm44Sm95RUFxclNhRTF6bEtPWVc0Q2tQTlR6R1hwd3ROZndqM1FMMFJxWWpWSHFveWVBellUVkVJWEh1MEt0VER3MFJtemdGWElNM2F4Ty9BaTZRNlh5YWJnSGF3R3puMUFoRGhBaXJJUUNPWVFCVmJqTElIRjVGMG9pUDJwRzdnVXZFWmxzNm1WVVJiYUFGY2RmdE00U0RNQnNDb0ZhbnV6eURkQXMyOEQ5cDFTWTBpYzA0c2VsTUo3dXVwb0I1M0E3RTBxcmZFRGhoTjBRZjRBNjlKUFdqU2FTWnJVNUViT29JaWxJcE50VnVCU2JSMVJUd1orNEN4cWRiaGlGNHdtNElVRTdpNjB4MmswWG04UkRDejFQOGVCY3dRV1p6azN0eENkU21tRCt6Qm1GTXVtVVl3a0g0RFFFZ05HZzFSN3JLRTZjYzJMU0hUMzFPWXJ4d1o3clMxS2FFUXRxQUg2VmJoaUU4Uk1NUVVJSnltNXNqYkdRZUg4SnV1MEQvd21LRXpPYitkRVhwQXZvNVpuQVZtR2dJTDFFeEJNQjNxZWFucm5JMGNCdndaQS92Skk2SXNYdDhMeVhVWmdEYldBZWNuVzRaaHZBUkpVT0Fza0JuOE5WVVB5NkpUVHdUU0hTTmtpU09pTEY1S1cwWk5nZFN3SDhESjZkYmhpR2NSTXNRc0RkZDNPb21nOHhsQTdEUStldnJ4UG1PMkx5VnJnQzFPWmdDSGlHQ3Ayc2I5a3pVREFGd2dWWnpoYXNjaGN4RnVac0NUcGVHRk82ZDZBV2R5MkZZUEFFbVBpbFhDZlVwYXJ1aFZXdFk1d3ljOTRpejZqd3Vrd3JWWmpCeDFrSHFYVFpEOUloaUN3R3dQOHJpYkZXbWN4aUd4V01ZTStROFVUVUVLS1Y2QXhmNVhvM044Y1I1SERqVTc3b013Uk5kUXlSWXBqYjcrVlc0enVaRWhJZUJBL3lxd3hBdW9tNklnOW1XZnNqRjd0RFpuSW55Q1Bobk9FUDRpTG9oUUxoS3F6blB5eUsxbnZPSjh5Qlp2Z0hURUR6Uk53U0FzRnlydkhsNDFlWUhLUGNEZmIwb3p4QXRjc01ROERVS3VUSFRRclNPeTRCZmtnZzdOK1FodVdJSWdHdDFCbWVrbTFsdHJrYTRsK2l1elJnOElKY01ZYUhjcGxQY2QzVzBqa25BcmVUVzkyRklnMXg3QUFaVDR1NEFZcTFqT3NKU05BUTNXaHNDSjljTUFjcFVyZVhFbEQ0Nmkzb3dKMlBrTUcrZy9OSk5CbmVHNk9KeEpQUm5teFlRNXc2MWU3L2lTMEYwRnEwb2Rka1Vac2dhbTRCcUNqbE9ScnM3ZnRUVkFGS1c4VGZnK3pxRkVjUnBBWmNuWW1TUDRiUnpBMUMvOHh0cVk5SEpDcFNmQktETDRDOXg0RDZLbUNxbDZSMHdsMWFYU1pwWngxYU9ReWtuNlB2ZWVrT28wVnFHZDM5Skw2R0FUdTVFakJseUR1RlJMSTZUS3hpYnJoa2dnekdFcktCREZ0TktKMGNBaTBtY1hoRW1pb2x6ajlxSlZsQnRpaG5LYW9Rcmd4Wm04SlMzRUVybENzNlJ5M2tsMDhJeUhsVExNajZTVm1JSXc0R0hNaTNQWTQ2amczS2RUQjg2V1FQK1I4Y2Fzc1ptb0o1T2hzc1YzbDFnNDlraWxMU3dIamhQWTF5Q01CODQzS3V5TTBLWXpUNWNCSndTdEJTREp5aHdMNTFVeVRnKzhMcHd6NmRkcFpVMURHQUlRam53aWRmbHAwRmZqQmx5aFdkUlRwT3hqUFhERE9EVE9vVFl0RXN6clJReERGZ0I1dHBhUTBhOGgzSWxZemhKcnVScFB5dnlkV0ZPNXJOUm1wa0luQVQ4d2MrNkREbkpWcUNKdmd5VnExZ3BndnBkWVZZQzJhU1o1eFMrUXdVWEF3dUF3N0pScnlIU3JFV1pMRmZ4MTJ4V21yWFFEUUdWUmF6aE03NkpVRS9DL1FiRHpyeUFjb1pjeFNnWmwxMHpRQUN4VExLQ0xiSVFtd0lHQTZ2QS8yYlFFQWsrQXNycHg3ZGxIRThFSlNLdzRENlp6N3R5RTJPQlV4QnozVzBlMHdFc3BwMGpaQnl0VWhyc0FtL2cwYTZ5a0dmb3gybk9DbkpLQjQ4WmNvWjF3TEV5bnBoTURFY0lVT0NHZ01TRmliS0FsU2hIT09PTHovZVl5UkJsTm1CeG9Zem5YQm5QRzBHTDZVNG9ESkZFRnJKWjVtTlR3RkdJZDh2eGh0RHdNY3BrL3M1Uk1vN2ZCQzJtSjBLNWYxZ2FlUXNvMVdyT2RzTE1oKzhwanlIOHlJVE1ENEx3bTFDMUVEc2pqVHhLQ2NjalRJVDBRM29OaGxRSnRTRUF4S1pUR2xtQk1BU2xDV2dQV3BNaGR3bTlJWkpJSTV0a1B0WEVPUnJDMmY4MFJKL0lHQ0tKekdlRE5ISWhjQzZFYTRiQ0VIMGlaNGdrMHNnNlB1SllKOHc4RkhQWWh1Z1RXVU9BczQxMUhxM0FFYzRGS21IYnhtcUlHSkUyUkJLNWtZL2tSbUxFT1JGNFBHZzlodWlTRTRaSUlvMjhLUE00RS9nQjhIYlFlZ3pSSTZjTWtVUWFhR01MMzBLcEJqNE5XbzhoT3VTa0lRQ2ttYTB5anlZS0dZcWFiYXlHMU1oWlF5UVJtNDNTd0VTVWt4Q2VDbHBQeFBndjR0c3Z2YzhMY3Q0UVNhU0I1NWpONlFpbHdEdEI2d2s1YndMbnl5VCtVeWJuMTFnc2J3d0J6amJXMmF5aGdHRWt6bjNkRnJTbWtQRXhTam4vWkxoTTRyZEJpd21DdkRKRUVySFpJck94c1JnRXJDSUxwem1FbkU1Z0JVVU1rY20waWsxbjBJS0NJaThOa1VSczNwWFpqS1dMczRDWGd0WVRDTW9qeERsT0pqTlJKdkxQb09VRVRWNGJJb25NNGZjSUorVFpOdGEvSUpSS0dTTWt4bXRCaXdrTHhoQU9ZaE1YbTVYQWtaRFQyMWcvUTZrSGhzdGtzeXR4WjR3aGRrSnNQaE1ibXdLR1EwNDlNSEZnRmNxUkVzT1dzcHcxZkVhRWNndHBHSkJhL2dLVWFqM25BTTFFZXh2ck15Z3hLZWVab0lXRUhkTkM3QUdaeFNNb3gwTWt0N0crQzF4SmpGT01HVkxER0NJRnhLWlQ2bGhCbktFa2Jrc0srN1RrRnFDZU9JT2xQRHVIQk9jS3hoQXVFSnVQcFk0WUJReEhlVEJvUFQyZ3dCcTYrS1pNd1pZS2MzNnVXOHdZSWcya2hqZUJDM1FPSTBpMEdNTUNsZ1RDODBCTXBwaHJCekxCdEJBWklMV3M0OHNjRS9CdHJPOGpUT1RmZk51WUlYT01JVEpFSnRJaHRiUmljUVNTMVcyczdjQmlpaGdxVTFnaHRnbHY5d0pqQ0krUUdqNlNHbUxBdDhIMzQ5elhZakZNcGhLVHNsRGM0NWN6bURHRXg4Z01YZ0RPMExtTXdxTFY0K0xmUkRoYnB2S1l4K1VhRFA2ak5pWGF5QmxCNnpDa3p2OERRZDdRck1iTFIxQUFBQUFBU1VWT1JLNUNZSUk9Ij4KCjxzdHlsZT4KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNDAwOwogIHNyYzogbG9jYWwoJ1JvYm90bycpLCBsb2NhbCgnUm9ib3RvLVJlZ3VsYXInKSwgdXJsKC9mb250LXJvYm90by91WUVDTUtvSGNPOXgxd2RtYnlISW0zLV9rZjZCeVlPNkNMWWRCNEhRRS1ZLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswNDAwLTA0NUYsIFUrMDQ5MC0wNDkxLCBVKzA0QjAtMDRCMSwgVSsyMTE2Owp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDQwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8nKSwgbG9jYWwoJ1JvYm90by1SZWd1bGFyJyksIHVybCgvZm9udC1yb2JvdG8vc1RkYUE2ajBQc2I5MjBWanYtbXJ6SC1fa2Y2QnlZTzZDTFlkQjRIUUUtWS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDQ2MC0wNTJGLCBVKzIwQjQsIFUrMkRFMC0yREZGLCBVK0E2NDAtQTY5RjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA0MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvJyksIGxvY2FsKCdSb2JvdG8tUmVndWxhcicpLCB1cmwoL2ZvbnQtcm9ib3RvL19WWUZ4LXM4MjRrWHFfVWwyQkhxWUgtX2tmNkJ5WU82Q0xZZEI0SFFFLVkud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAzNzAtMDNGRjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA0MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvJyksIGxvY2FsKCdSb2JvdG8tUmVndWxhcicpLCB1cmwoL2ZvbnQtcm9ib3RvL3RuajRTQjZETmJkYVFuc004Q0ZxQlgtX2tmNkJ5WU82Q0xZZEI0SFFFLVkud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzFGMDAtMUZGRjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA0MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvJyksIGxvY2FsKCdSb2JvdG8tUmVndWxhcicpLCB1cmwoL2ZvbnQtcm9ib3RvL29NTWdmWk1RdGhPcnlRbzluMjJkY3V2dkRpbjFwSzhhS3RlTHBlWjVjMEEud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAwMDAtMDBGRiwgVSswMTMxLCBVKzAxNTItMDE1MywgVSswMkM2LCBVKzAyREEsIFUrMDJEQywgVSsyMDAwLTIwNkYsIFUrMjA3NCwgVSsyMEFDLCBVKzIyMTIsIFUrMjIxNTsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA0MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvJyksIGxvY2FsKCdSb2JvdG8tUmVndWxhcicpLCB1cmwoL2ZvbnQtcm9ib3RvL0tzX2NWeGlDaXdVV1ZzRldGQTNCam4tX2tmNkJ5WU82Q0xZZEI0SFFFLVkud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDAtMDI0RiwgVSsxRTAwLTFFRkYsIFUrMjBBMC0yMEFCLCBVKzIwQUQtMjBDRiwgVSsyQzYwLTJDN0YsIFUrQTcyMC1BN0ZGOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDQwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8nKSwgbG9jYWwoJ1JvYm90by1SZWd1bGFyJyksIHVybCgvZm9udC1yb2JvdG8vTko0dnhsZ1d3V2JFc3YxOGRBaHFubi1fa2Y2QnlZTzZDTFlkQjRIUUUtWS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMi0wMTAzLCBVKzFFQTAtMUVGOSwgVSsyMEFCOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDcwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gQm9sZCcpLCBsb2NhbCgnUm9ib3RvLUJvbGQnKSwgdXJsKC9mb250LXJvYm90by9pc1otd2JDWE5LQWJuam82X1R3SFRvWDBoVmd6WlFVZlJEdVpyUHZIM0Q4LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswNDAwLTA0NUYsIFUrMDQ5MC0wNDkxLCBVKzA0QjAtMDRCMSwgVSsyMTE2Owp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDcwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gQm9sZCcpLCBsb2NhbCgnUm9ib3RvLUJvbGQnKSwgdXJsKC9mb250LXJvYm90by83N0ZYRmpSYkd6TjRhQ3JTRmhsaDNvWDBoVmd6WlFVZlJEdVpyUHZIM0Q4LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswNDYwLTA1MkYsIFUrMjBCNCwgVSsyREUwLTJERkYsIFUrQTY0MC1BNjlGOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDcwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gQm9sZCcpLCBsb2NhbCgnUm9ib3RvLUJvbGQnKSwgdXJsKC9mb250LXJvYm90by9qU04yQ0dWRGJjVnlDbmZKZmpTZGZJWDBoVmd6WlFVZlJEdVpyUHZIM0Q4LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMzcwLTAzRkY7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNzAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBCb2xkJyksIGxvY2FsKCdSb2JvdG8tQm9sZCcpLCB1cmwoL2ZvbnQtcm9ib3RvL1VYNmk0SnhRRG0zZlZUYzFDUHV3cW9YMGhWZ3paUVVmUkR1WnJQdkgzRDgud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzFGMDAtMUZGRjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA3MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIEJvbGQnKSwgbG9jYWwoJ1JvYm90by1Cb2xkJyksIHVybCgvZm9udC1yb2JvdG8vZC02SVlwbE9Gb2NDYWNLenh3WFNPSkJ3MXhVMXJLcHRKal8wamFuczkyMC53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDAwMC0wMEZGLCBVKzAxMzEsIFUrMDE1Mi0wMTUzLCBVKzAyQzYsIFUrMDJEQSwgVSswMkRDLCBVKzIwMDAtMjA2RiwgVSsyMDc0LCBVKzIwQUMsIFUrMjIxMiwgVSsyMjE1Owp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDcwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gQm9sZCcpLCBsb2NhbCgnUm9ib3RvLUJvbGQnKSwgdXJsKC9mb250LXJvYm90by85N3VhaHhpcVpSb25jQmFDRUkzYVc0WDBoVmd6WlFVZlJEdVpyUHZIM0Q4LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAwLTAyNEYsIFUrMUUwMC0xRUZGLCBVKzIwQTAtMjBBQiwgVSsyMEFELTIwQ0YsIFUrMkM2MC0yQzdGLCBVK0E3MjAtQTdGRjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA3MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIEJvbGQnKSwgbG9jYWwoJ1JvYm90by1Cb2xkJyksIHVybCgvZm9udC1yb2JvdG8vUHdaYy1ZYklMNDE0d0I5ckIxSUFQWVgwaFZnelpRVWZSRHVaclB2SDNEOC53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMi0wMTAzLCBVKzFFQTAtMUVGOSwgVSsyMEFCOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBpdGFsaWM7CiAgZm9udC13ZWlnaHQ6IDcwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gQm9sZCBJdGFsaWMnKSwgbG9jYWwoJ1JvYm90by1Cb2xkSXRhbGljJyksIHVybCgvZm9udC1yb2JvdG8vdDZOZDRjZlBSaFpQNDRRNVFBamNDMTRzWVlkSmc1ZFUycXpKRVZTdXRhMC53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDQwMC0wNDVGLCBVKzA0OTAtMDQ5MSwgVSswNEIwLTA0QjEsIFUrMjExNjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiA3MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIEJvbGQgSXRhbGljJyksIGxvY2FsKCdSb2JvdG8tQm9sZEl0YWxpYycpLCB1cmwoL2ZvbnQtcm9ib3RvL3Q2TmQ0Y2ZQUmhaUDQ0UTVRQWpjQ19acmFSMlRnOHcybHptN2tMTkwwLXcud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzA0NjAtMDUyRiwgVSsyMEI0LCBVKzJERTAtMkRGRiwgVStBNjQwLUE2OUY7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogNzAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBCb2xkIEl0YWxpYycpLCBsb2NhbCgnUm9ib3RvLUJvbGRJdGFsaWMnKSwgdXJsKC9mb250LXJvYm90by90Nk5kNGNmUFJoWlA0NFE1UUFqY0N3dF9SbTY5MUxUZWJLZlkyWmtLU21JLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMzcwLTAzRkY7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogNzAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBCb2xkIEl0YWxpYycpLCBsb2NhbCgnUm9ib3RvLUJvbGRJdGFsaWMnKSwgdXJsKC9mb250LXJvYm90by90Nk5kNGNmUFJoWlA0NFE1UUFqY0MxQlcyNlF4cFNqLV9aS21feFQ0aFd3LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSsxRjAwLTFGRkY7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogNzAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBCb2xkIEl0YWxpYycpLCBsb2NhbCgnUm9ib3RvLUJvbGRJdGFsaWMnKSwgdXJsKC9mb250LXJvYm90by90Nk5kNGNmUFJoWlA0NFE1UUFqY0M0Z3A5UThnYllyaHFHbFJhdl9JWGZrLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMDAwLTAwRkYsIFUrMDEzMSwgVSswMTUyLTAxNTMsIFUrMDJDNiwgVSswMkRBLCBVKzAyREMsIFUrMjAwMC0yMDZGLCBVKzIwNzQsIFUrMjBBQywgVSsyMjEyLCBVKzIyMTU7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogNzAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBCb2xkIEl0YWxpYycpLCBsb2NhbCgnUm9ib3RvLUJvbGRJdGFsaWMnKSwgdXJsKC9mb250LXJvYm90by90Nk5kNGNmUFJoWlA0NFE1UUFqY0M2RThrTTR4V1IxXzFiWVVSUm9qUkdjLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAwLTAyNEYsIFUrMUUwMC0xRUZGLCBVKzIwQTAtMjBBQiwgVSsyMEFELTIwQ0YsIFUrMkM2MC0yQzdGLCBVK0E3MjAtQTdGRjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiA3MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIEJvbGQgSXRhbGljJyksIGxvY2FsKCdSb2JvdG8tQm9sZEl0YWxpYycpLCB1cmwoL2ZvbnQtcm9ib3RvL3Q2TmQ0Y2ZQUmhaUDQ0UTVRQWpjQzlEaU5zUjVhLTlPZV9JdnB1OFhXbFkud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDItMDEwMywgVSsxRUEwLTFFRjksIFUrMjBBQjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiA0MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIEl0YWxpYycpLCBsb2NhbCgnUm9ib3RvLUl0YWxpYycpLCB1cmwoL2ZvbnQtcm9ib3RvL09wWFVxVG8wVWdRUWhHal9TRmRMV0JrQXo0clluNDdaeTJydmlnV1FmNncud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzA0MDAtMDQ1RiwgVSswNDkwLTA0OTEsIFUrMDRCMC0wNEIxLCBVKzIxMTY7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogNDAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBJdGFsaWMnKSwgbG9jYWwoJ1JvYm90by1JdGFsaWMnKSwgdXJsKC9mb250LXJvYm90by9XeHJYSmEwQzNLZHRDN2xNYWZHNGRSa0F6NHJZbjQ3WnkycnZpZ1dRZjZ3LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswNDYwLTA1MkYsIFUrMjBCNCwgVSsyREUwLTJERkYsIFUrQTY0MC1BNjlGOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBpdGFsaWM7CiAgZm9udC13ZWlnaHQ6IDQwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gSXRhbGljJyksIGxvY2FsKCdSb2JvdG8tSXRhbGljJyksIHVybCgvZm9udC1yb2JvdG8vY0RLaFJhWG5RVE9WYmFveHdkT3I5eGtBejRyWW40N1p5MnJ2aWdXUWY2dy53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDM3MC0wM0ZGOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBpdGFsaWM7CiAgZm9udC13ZWlnaHQ6IDQwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gSXRhbGljJyksIGxvY2FsKCdSb2JvdG8tSXRhbGljJyksIHVybCgvZm9udC1yb2JvdG8vMWhaZjAyUE9BTmgzMmsyVmtnRW9VQmtBejRyWW40N1p5MnJ2aWdXUWY2dy53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMUYwMC0xRkZGOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBpdGFsaWM7CiAgZm9udC13ZWlnaHQ6IDQwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gSXRhbGljJyksIGxvY2FsKCdSb2JvdG8tSXRhbGljJyksIHVybCgvZm9udC1yb2JvdG8vdlBjeW5TTDBxSHFfNmRYN2xLVkJ5WFloamJTcHZjNDdlZTZ4Ul84MEhudy53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDAwMC0wMEZGLCBVKzAxMzEsIFUrMDE1Mi0wMTUzLCBVKzAyQzYsIFUrMDJEQSwgVSswMkRDLCBVKzIwMDAtMjA2RiwgVSsyMDc0LCBVKzIwQUMsIFUrMjIxMiwgVSsyMjE1Owp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBpdGFsaWM7CiAgZm9udC13ZWlnaHQ6IDQwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gSXRhbGljJyksIGxvY2FsKCdSb2JvdG8tSXRhbGljJyksIHVybCgvZm9udC1yb2JvdG8vdlN6dWxmS1NLMExMampmZWF4Y1JFaGtBejRyWW40N1p5MnJ2aWdXUWY2dy53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMC0wMjRGLCBVKzFFMDAtMUVGRiwgVSsyMEEwLTIwQUIsIFUrMjBBRC0yMENGLCBVKzJDNjAtMkM3RiwgVStBNzIwLUE3RkY7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogNDAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBJdGFsaWMnKSwgbG9jYWwoJ1JvYm90by1JdGFsaWMnKSwgdXJsKC9mb250LXJvYm90by9LMjNjeFdWVHJJRkQ2REpzRVZpMDdSa0F6NHJZbjQ3WnkycnZpZ1dRZjZ3LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAyLTAxMDMsIFUrMUVBMC0xRUY5LCBVKzIwQUI7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogMzAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBMaWdodCcpLCBsb2NhbCgnUm9ib3RvLUxpZ2h0JyksIHVybCgvZm9udC1yb2JvdG8vRmw0eTBRZE94eXlUSEVHTVhYOGtjWVgwaFZnelpRVWZSRHVaclB2SDNEOC53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDQwMC0wNDVGLCBVKzA0OTAtMDQ5MSwgVSswNEIwLTA0QjEsIFUrMjExNjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiAzMDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIExpZ2h0JyksIGxvY2FsKCdSb2JvdG8tTGlnaHQnKSwgdXJsKC9mb250LXJvYm90by8wZUM2ZmwwNmx1WEVZV3BCU0p2WENJWDBoVmd6WlFVZlJEdVpyUHZIM0Q4LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswNDYwLTA1MkYsIFUrMjBCNCwgVSsyREUwLTJERkYsIFUrQTY0MC1BNjlGOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDMwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTGlnaHQnKSwgbG9jYWwoJ1JvYm90by1MaWdodCcpLCB1cmwoL2ZvbnQtcm9ib3RvL0kzUzF3c2dTZzlZQ3VyVjZQVWtUT1lYMGhWZ3paUVVmUkR1WnJQdkgzRDgud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAzNzAtMDNGRjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiAzMDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIExpZ2h0JyksIGxvY2FsKCdSb2JvdG8tTGlnaHQnKSwgdXJsKC9mb250LXJvYm90by8tTDE0SmswNm02cFVIQi01bVhRUW5ZWDBoVmd6WlFVZlJEdVpyUHZIM0Q4LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSsxRjAwLTFGRkY7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogMzAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBMaWdodCcpLCBsb2NhbCgnUm9ib3RvLUxpZ2h0JyksIHVybCgvZm9udC1yb2JvdG8vSGdvMTNrLXRmU3BuMHFpMVNGZFVmWkJ3MXhVMXJLcHRKal8wamFuczkyMC53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDAwMC0wMEZGLCBVKzAxMzEsIFUrMDE1Mi0wMTUzLCBVKzAyQzYsIFUrMDJEQSwgVSswMkRDLCBVKzIwMDAtMjA2RiwgVSsyMDc0LCBVKzIwQUMsIFUrMjIxMiwgVSsyMjE1Owp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDMwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTGlnaHQnKSwgbG9jYWwoJ1JvYm90by1MaWdodCcpLCB1cmwoL2ZvbnQtcm9ib3RvL1BydTMzcWpTaHBaU21HM3o2Vll3bllYMGhWZ3paUVVmUkR1WnJQdkgzRDgud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDAtMDI0RiwgVSsxRTAwLTFFRkYsIFUrMjBBMC0yMEFCLCBVKzIwQUQtMjBDRiwgVSsyQzYwLTJDN0YsIFUrQTcyMC1BN0ZGOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDMwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTGlnaHQnKSwgbG9jYWwoJ1JvYm90by1MaWdodCcpLCB1cmwoL2ZvbnQtcm9ib3RvL05ZRFdCZEQ0Z0lxMjZHNVhZYkhzRklYMGhWZ3paUVVmUkR1WnJQdkgzRDgud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDItMDEwMywgVSsxRUEwLTFFRjksIFUrMjBBQjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiAzMDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIExpZ2h0IEl0YWxpYycpLCBsb2NhbCgnUm9ib3RvLUxpZ2h0SXRhbGljJyksIHVybCgvZm9udC1yb2JvdG8vN204bDdUbEZPLVMzVmtoSHVSMGF0MTRzWVlkSmc1ZFUycXpKRVZTdXRhMC53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDQwMC0wNDVGLCBVKzA0OTAtMDQ5MSwgVSswNEIwLTA0QjEsIFUrMjExNjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiAzMDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIExpZ2h0IEl0YWxpYycpLCBsb2NhbCgnUm9ib3RvLUxpZ2h0SXRhbGljJyksIHVybCgvZm9udC1yb2JvdG8vN204bDdUbEZPLVMzVmtoSHVSMGF0X1pyYVIyVGc4dzJsem03a0xOTDAtdy53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDQ2MC0wNTJGLCBVKzIwQjQsIFUrMkRFMC0yREZGLCBVK0E2NDAtQTY5RjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiAzMDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIExpZ2h0IEl0YWxpYycpLCBsb2NhbCgnUm9ib3RvLUxpZ2h0SXRhbGljJyksIHVybCgvZm9udC1yb2JvdG8vN204bDdUbEZPLVMzVmtoSHVSMGF0d3RfUm02OTFMVGViS2ZZMlprS1NtSS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDM3MC0wM0ZGOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBpdGFsaWM7CiAgZm9udC13ZWlnaHQ6IDMwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTGlnaHQgSXRhbGljJyksIGxvY2FsKCdSb2JvdG8tTGlnaHRJdGFsaWMnKSwgdXJsKC9mb250LXJvYm90by83bThsN1RsRk8tUzNWa2hIdVIwYXQxQlcyNlF4cFNqLV9aS21feFQ0aFd3LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSsxRjAwLTFGRkY7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogMzAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBMaWdodCBJdGFsaWMnKSwgbG9jYWwoJ1JvYm90by1MaWdodEl0YWxpYycpLCB1cmwoL2ZvbnQtcm9ib3RvLzdtOGw3VGxGTy1TM1ZraEh1UjBhdDRncDlROGdiWXJocUdsUmF2X0lYZmsud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAwMDAtMDBGRiwgVSswMTMxLCBVKzAxNTItMDE1MywgVSswMkM2LCBVKzAyREEsIFUrMDJEQywgVSsyMDAwLTIwNkYsIFUrMjA3NCwgVSsyMEFDLCBVKzIyMTIsIFUrMjIxNTsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiAzMDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIExpZ2h0IEl0YWxpYycpLCBsb2NhbCgnUm9ib3RvLUxpZ2h0SXRhbGljJyksIHVybCgvZm9udC1yb2JvdG8vN204bDdUbEZPLVMzVmtoSHVSMGF0NkU4a000eFdSMV8xYllVUlJvalJHYy53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMC0wMjRGLCBVKzFFMDAtMUVGRiwgVSsyMEEwLTIwQUIsIFUrMjBBRC0yMENGLCBVKzJDNjAtMkM3RiwgVStBNzIwLUE3RkY7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogMzAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBMaWdodCBJdGFsaWMnKSwgbG9jYWwoJ1JvYm90by1MaWdodEl0YWxpYycpLCB1cmwoL2ZvbnQtcm9ib3RvLzdtOGw3VGxGTy1TM1ZraEh1UjBhdDlEaU5zUjVhLTlPZV9JdnB1OFhXbFkud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDItMDEwMywgVSsxRUEwLTFFRjksIFUrMjBBQjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA1MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIE1lZGl1bScpLCBsb2NhbCgnUm9ib3RvLU1lZGl1bScpLCB1cmwoL2ZvbnQtcm9ib3RvL29IaTMwa3dRV3ZwQ1dxQWh6SGNDU0lYMGhWZ3paUVVmUkR1WnJQdkgzRDgud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzA0MDAtMDQ1RiwgVSswNDkwLTA0OTEsIFUrMDRCMC0wNEIxLCBVKzIxMTY7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNTAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBNZWRpdW0nKSwgbG9jYWwoJ1JvYm90by1NZWRpdW0nKSwgdXJsKC9mb250LXJvYm90by9aTHFLZWVsWWJBVEc2MEVwWkJTRHk0WDBoVmd6WlFVZlJEdVpyUHZIM0Q4LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswNDYwLTA1MkYsIFUrMjBCNCwgVSsyREUwLTJERkYsIFUrQTY0MC1BNjlGOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDUwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTWVkaXVtJyksIGxvY2FsKCdSb2JvdG8tTWVkaXVtJyksIHVybCgvZm9udC1yb2JvdG8vbXg5VWNrNnVCNjNWSUtGWW5FTVhyWVgwaFZnelpRVWZSRHVaclB2SDNEOC53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDM3MC0wM0ZGOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDUwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTWVkaXVtJyksIGxvY2FsKCdSb2JvdG8tTWVkaXVtJyksIHVybCgvZm9udC1yb2JvdG8vckd2SGRKbnIybDc1cWIwWU5EOU55SVgwaFZnelpRVWZSRHVaclB2SDNEOC53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMUYwMC0xRkZGOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDUwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTWVkaXVtJyksIGxvY2FsKCdSb2JvdG8tTWVkaXVtJyksIHVybCgvZm9udC1yb2JvdG8vUnhaSmRuemVvM1I1elNleGdlOFVVWkJ3MXhVMXJLcHRKal8wamFuczkyMC53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDAwMC0wMEZGLCBVKzAxMzEsIFUrMDE1Mi0wMTUzLCBVKzAyQzYsIFUrMDJEQSwgVSswMkRDLCBVKzIwMDAtMjA2RiwgVSsyMDc0LCBVKzIwQUMsIFUrMjIxMiwgVSsyMjE1Owp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDUwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTWVkaXVtJyksIGxvY2FsKCdSb2JvdG8tTWVkaXVtJyksIHVybCgvZm9udC1yb2JvdG8vb09lRndaTmxyVGVmekxZbWxWVjFVSVgwaFZnelpRVWZSRHVaclB2SDNEOC53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMC0wMjRGLCBVKzFFMDAtMUVGRiwgVSsyMEEwLTIwQUIsIFUrMjBBRC0yMENGLCBVKzJDNjAtMkM3RiwgVStBNzIwLUE3RkY7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNTAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBNZWRpdW0nKSwgbG9jYWwoJ1JvYm90by1NZWRpdW0nKSwgdXJsKC9mb250LXJvYm90by9tYm1ocHJNSDY5Wmk2ZUVQQllWRmhZWDBoVmd6WlFVZlJEdVpyUHZIM0Q4LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAyLTAxMDMsIFUrMUVBMC0xRUY5LCBVKzIwQUI7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogNTAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBNZWRpdW0gSXRhbGljJyksIGxvY2FsKCdSb2JvdG8tTWVkaXVtSXRhbGljJyksIHVybCgvZm9udC1yb2JvdG8vT0xmZkdCVGFGMFhGT1cxZ251SEYwVjRzWVlkSmc1ZFUycXpKRVZTdXRhMC53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDQwMC0wNDVGLCBVKzA0OTAtMDQ5MSwgVSswNEIwLTA0QjEsIFUrMjExNjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiA1MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIE1lZGl1bSBJdGFsaWMnKSwgbG9jYWwoJ1JvYm90by1NZWRpdW1JdGFsaWMnKSwgdXJsKC9mb250LXJvYm90by9PTGZmR0JUYUYwWEZPVzFnbnVIRjBmWnJhUjJUZzh3Mmx6bTdrTE5MMC13LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswNDYwLTA1MkYsIFUrMjBCNCwgVSsyREUwLTJERkYsIFUrQTY0MC1BNjlGOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBpdGFsaWM7CiAgZm9udC13ZWlnaHQ6IDUwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTWVkaXVtIEl0YWxpYycpLCBsb2NhbCgnUm9ib3RvLU1lZGl1bUl0YWxpYycpLCB1cmwoL2ZvbnQtcm9ib3RvL09MZmZHQlRhRjBYRk9XMWdudUhGMFF0X1JtNjkxTFRlYktmWTJaa0tTbUkud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAzNzAtMDNGRjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiA1MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIE1lZGl1bSBJdGFsaWMnKSwgbG9jYWwoJ1JvYm90by1NZWRpdW1JdGFsaWMnKSwgdXJsKC9mb250LXJvYm90by9PTGZmR0JUYUYwWEZPVzFnbnVIRjBWQlcyNlF4cFNqLV9aS21feFQ0aFd3LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSsxRjAwLTFGRkY7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogNTAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBNZWRpdW0gSXRhbGljJyksIGxvY2FsKCdSb2JvdG8tTWVkaXVtSXRhbGljJyksIHVybCgvZm9udC1yb2JvdG8vT0xmZkdCVGFGMFhGT1cxZ251SEYwWWdwOVE4Z2JZcmhxR2xSYXZfSVhmay53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDAwMC0wMEZGLCBVKzAxMzEsIFUrMDE1Mi0wMTUzLCBVKzAyQzYsIFUrMDJEQSwgVSswMkRDLCBVKzIwMDAtMjA2RiwgVSsyMDc0LCBVKzIwQUMsIFUrMjIxMiwgVSsyMjE1Owp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBpdGFsaWM7CiAgZm9udC13ZWlnaHQ6IDUwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTWVkaXVtIEl0YWxpYycpLCBsb2NhbCgnUm9ib3RvLU1lZGl1bUl0YWxpYycpLCB1cmwoL2ZvbnQtcm9ib3RvL09MZmZHQlRhRjBYRk9XMWdudUhGMGFFOGtNNHhXUjFfMWJZVVJSb2pSR2Mud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDAtMDI0RiwgVSsxRTAwLTFFRkYsIFUrMjBBMC0yMEFCLCBVKzIwQUQtMjBDRiwgVSsyQzYwLTJDN0YsIFUrQTcyMC1BN0ZGOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBpdGFsaWM7CiAgZm9udC13ZWlnaHQ6IDUwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTWVkaXVtIEl0YWxpYycpLCBsb2NhbCgnUm9ib3RvLU1lZGl1bUl0YWxpYycpLCB1cmwoL2ZvbnQtcm9ib3RvL09MZmZHQlRhRjBYRk9XMWdudUhGMGREaU5zUjVhLTlPZV9JdnB1OFhXbFkud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDItMDEwMywgVSsxRUEwLTFFRjksIFUrMjBBQjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byBNb25vJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDQwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTW9ubycpLCBsb2NhbCgnUm9ib3RvTW9uby1SZWd1bGFyJyksIHVybCgvZm9udC1yb2JvdG8vaE1xUE5Mc3VfZHl3TWE0Q19ERXBZMTRzWVlkSmc1ZFUycXpKRVZTdXRhMC53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDQwMC0wNDVGLCBVKzA0OTAtMDQ5MSwgVSswNEIwLTA0QjEsIFUrMjExNjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byBNb25vJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDQwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTW9ubycpLCBsb2NhbCgnUm9ib3RvTW9uby1SZWd1bGFyJyksIHVybCgvZm9udC1yb2JvdG8vaE1xUE5Mc3VfZHl3TWE0Q19ERXBZX1pyYVIyVGc4dzJsem03a0xOTDAtdy53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDQ2MC0wNTJGLCBVKzIwQjQsIFUrMkRFMC0yREZGLCBVK0E2NDAtQTY5RjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byBNb25vJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDQwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTW9ubycpLCBsb2NhbCgnUm9ib3RvTW9uby1SZWd1bGFyJyksIHVybCgvZm9udC1yb2JvdG8vaE1xUE5Mc3VfZHl3TWE0Q19ERXBZd3RfUm02OTFMVGViS2ZZMlprS1NtSS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDM3MC0wM0ZGOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvIE1vbm8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNDAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBNb25vJyksIGxvY2FsKCdSb2JvdG9Nb25vLVJlZ3VsYXInKSwgdXJsKC9mb250LXJvYm90by9oTXFQTkxzdV9keXdNYTRDX0RFcFkxQlcyNlF4cFNqLV9aS21feFQ0aFd3LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSsxRjAwLTFGRkY7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8gTW9ubyc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA0MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIE1vbm8nKSwgbG9jYWwoJ1JvYm90b01vbm8tUmVndWxhcicpLCB1cmwoL2ZvbnQtcm9ib3RvL2hNcVBOTHN1X2R5d01hNENfREVwWTRncDlROGdiWXJocUdsUmF2X0lYZmsud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAwMDAtMDBGRiwgVSswMTMxLCBVKzAxNTItMDE1MywgVSswMkM2LCBVKzAyREEsIFUrMDJEQywgVSsyMDAwLTIwNkYsIFUrMjA3NCwgVSsyMEFDLCBVKzIyMTIsIFUrMjIxNTsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byBNb25vJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDQwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTW9ubycpLCBsb2NhbCgnUm9ib3RvTW9uby1SZWd1bGFyJyksIHVybCgvZm9udC1yb2JvdG8vaE1xUE5Mc3VfZHl3TWE0Q19ERXBZNkU4a000eFdSMV8xYllVUlJvalJHYy53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMC0wMjRGLCBVKzFFMDAtMUVGRiwgVSsyMEEwLTIwQUIsIFUrMjBBRC0yMENGLCBVKzJDNjAtMkM3RiwgVStBNzIwLUE3RkY7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8gTW9ubyc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA0MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIE1vbm8nKSwgbG9jYWwoJ1JvYm90b01vbm8tUmVndWxhcicpLCB1cmwoL2ZvbnQtcm9ib3RvL2hNcVBOTHN1X2R5d01hNENfREVwWTlEaU5zUjVhLTlPZV9JdnB1OFhXbFkud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDItMDEwMywgVSsxRUEwLTFFRjksIFUrMjBBQjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byBNb25vJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDcwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTW9ubyBCb2xkJyksIGxvY2FsKCdSb2JvdG9Nb25vLUJvbGQnKSwgdXJsKC9mb250LXJvYm90by9ONGR1VmM5QzU4dXdQaVk4XzU5RnoxeC1NMUkxdzVPTWlxblZGOHhCTGhVLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswNDAwLTA0NUYsIFUrMDQ5MC0wNDkxLCBVKzA0QjAtMDRCMSwgVSsyMTE2Owp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvIE1vbm8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNzAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBNb25vIEJvbGQnKSwgbG9jYWwoJ1JvYm90b01vbm8tQm9sZCcpLCB1cmwoL2ZvbnQtcm9ib3RvL040ZHVWYzlDNTh1d1BpWThfNTlGendYYUFYdXA1bVpsZks2eFJMcmhzY28ud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzA0NjAtMDUyRiwgVSsyMEI0LCBVKzJERTAtMkRGRiwgVStBNjQwLUE2OUY7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8gTW9ubyc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA3MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIE1vbm8gQm9sZCcpLCBsb2NhbCgnUm9ib3RvTW9uby1Cb2xkJyksIHVybCgvZm9udC1yb2JvdG8vTjRkdVZjOUM1OHV3UGlZOF81OUZ6d242V3F4by14d3hpbERYUFU4Y2hWVS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDM3MC0wM0ZGOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvIE1vbm8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNzAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBNb25vIEJvbGQnKSwgbG9jYWwoJ1JvYm90b01vbm8tQm9sZCcpLCB1cmwoL2ZvbnQtcm9ib3RvL040ZHVWYzlDNTh1d1BpWThfNTlGejFUN2FKTEs2bktwbjM2SU13VGNNTWMud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzFGMDAtMUZGRjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byBNb25vJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDcwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTW9ubyBCb2xkJyksIGxvY2FsKCdSb2JvdG9Nb25vLUJvbGQnKSwgdXJsKC9mb250LXJvYm90by9ONGR1VmM5QzU4dXdQaVk4XzU5RnpfNzlfWnVVeENpZ00yRGVzcFRuRmF3LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMDAwLTAwRkYsIFUrMDEzMSwgVSswMTUyLTAxNTMsIFUrMDJDNiwgVSswMkRBLCBVKzAyREMsIFUrMjAwMC0yMDZGLCBVKzIwNzQsIFUrMjBBQywgVSsyMjEyLCBVKzIyMTU7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8gTW9ubyc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA3MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIE1vbm8gQm9sZCcpLCBsb2NhbCgnUm9ib3RvTW9uby1Cb2xkJyksIHVybCgvZm9udC1yb2JvdG8vTjRkdVZjOUM1OHV3UGlZOF81OUZ6NGdkOU9FUFVDTjNBZFlXMGU4dGF0NC53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMC0wMjRGLCBVKzFFMDAtMUVGRiwgVSsyMEEwLTIwQUIsIFUrMjBBRC0yMENGLCBVKzJDNjAtMkM3RiwgVStBNzIwLUE3RkY7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8gTW9ubyc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA3MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIE1vbm8gQm9sZCcpLCBsb2NhbCgnUm9ib3RvTW9uby1Cb2xkJyksIHVybCgvZm9udC1yb2JvdG8vTjRkdVZjOUM1OHV3UGlZOF81OUZ6OGJJUVNZWm5XTGFXQzlRTkNwVEtfVS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMi0wMTAzLCBVKzFFQTAtMUVGOSwgVSsyMEFCOwp9Cjwvc3R5bGU+CgoKCjxzdHlsZT4ubWF0LWJhZGdlLWNvbnRlbnR7Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsIC5tYXQtYmFkZ2UtY29udGVudHtmb250LXNpemU6OXB4fS5tYXQtYmFkZ2UtbGFyZ2UgLm1hdC1iYWRnZS1jb250ZW50e2ZvbnQtc2l6ZToyNHB4fS5tYXQtaDEsLm1hdC1oZWFkbGluZSwubWF0LXR5cG9ncmFwaHkgaDF7Zm9udDo0MDAgMjRweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDIsLm1hdC10aXRsZSwubWF0LXR5cG9ncmFwaHkgaDJ7Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDMsLm1hdC1zdWJoZWFkaW5nLTIsLm1hdC10eXBvZ3JhcGh5IGgze2ZvbnQ6NDAwIDE2cHgvMjhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg0LC5tYXQtc3ViaGVhZGluZy0xLC5tYXQtdHlwb2dyYXBoeSBoNHtmb250OjQwMCAxNXB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNSwubWF0LXR5cG9ncmFwaHkgaDV7Zm9udDo0MDAgY2FsYygxNHB4ICogMC44MykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtaDYsLm1hdC10eXBvZ3JhcGh5IGg2e2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuNjcpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWJvZHktc3Ryb25nLC5tYXQtYm9keS0ye2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keSwubWF0LWJvZHktMSwubWF0LXR5cG9ncmFwaHl7Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5IHAsLm1hdC1ib2R5LTEgcCwubWF0LXR5cG9ncmFwaHkgcHttYXJnaW46MCAwIDEycHh9Lm1hdC1zbWFsbCwubWF0LWNhcHRpb257Zm9udDo0MDAgMTJweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1kaXNwbGF5LTQsLm1hdC10eXBvZ3JhcGh5IC5tYXQtZGlzcGxheS00e2ZvbnQ6MzAwIDExMnB4LzExMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wNWVtO21hcmdpbjowIDAgNTZweH0ubWF0LWRpc3BsYXktMywubWF0LXR5cG9ncmFwaHkgLm1hdC1kaXNwbGF5LTN7Zm9udDo0MDAgNTZweC81NnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMmVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMiwubWF0LXR5cG9ncmFwaHkgLm1hdC1kaXNwbGF5LTJ7Zm9udDo0MDAgNDVweC80OHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMDVlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTEsLm1hdC10eXBvZ3JhcGh5IC5tYXQtZGlzcGxheS0xe2ZvbnQ6NDAwIDM0cHgvNDBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgNjRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJ7Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b24sLm1hdC1yYWlzZWQtYnV0dG9uLC5tYXQtaWNvbi1idXR0b24sLm1hdC1zdHJva2VkLWJ1dHRvbiwubWF0LWZsYXQtYnV0dG9uLC5tYXQtZmFiLC5tYXQtbWluaS1mYWJ7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWJ1dHRvbi10b2dnbGV7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZHtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxle2ZvbnQtc2l6ZToyNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhcmQtaGVhZGVyIC5tYXQtY2FyZC10aXRsZXtmb250LXNpemU6MjBweH0ubWF0LWNhcmQtc3VidGl0bGUsLm1hdC1jYXJkLWNvbnRlbnR7Zm9udC1zaXplOjE0cHh9Lm1hdC1jaGVja2JveHtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXQgLm1hdC1jaGVja2JveC1sYWJlbHtsaW5lLWhlaWdodDoyNHB4fS5tYXQtY2hpcHtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jaGlwIC5tYXQtY2hpcC10cmFpbGluZy1pY29uLm1hdC1pY29uLC5tYXQtY2hpcCAubWF0LWNoaXAtcmVtb3ZlLm1hdC1pY29ue2ZvbnQtc2l6ZToxOHB4fS5tYXQtdGFibGV7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGx7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2VsbCwubWF0LWZvb3Rlci1jZWxse2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2FsZW5kYXJ7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FsZW5kYXItYm9keXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWwsLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9ue2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlciB0aHtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo0MDB9Lm1hdC1kaWFsb2ctdGl0bGV7Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVye2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudHtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGR7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMTI1O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJ7cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXggLm1hdC1pY29uLC5tYXQtZm9ybS1maWVsZC1zdWZmaXggLm1hdC1pY29ue2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXggLm1hdC1pY29uLWJ1dHRvbiwubWF0LWZvcm0tZmllbGQtc3VmZml4IC5tYXQtaWNvbi1idXR0b257aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXggLm1hdC1pY29uLWJ1dHRvbiAubWF0LWljb24sLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeCAubWF0LWljb24tYnV0dG9uIC5tYXQtaWNvbntoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXh7cGFkZGluZzouNWVtIDA7Ym9yZGVyLXRvcDouODQzNzVlbSBzb2xpZCB0cmFuc3BhcmVudH0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdCAubWF0LWZvcm0tZmllbGQtbGFiZWwsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdCAubWF0LWlucHV0LXNlcnZlcjpmb2N1cysubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlciAubWF0LWZvcm0tZmllbGQtbGFiZWx7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdOm5vdCg6bGFiZWwtc2hvd24pKy5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyIC5tYXQtZm9ybS1maWVsZC1sYWJlbHt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJ7dG9wOi0wLjg0Mzc1ZW07cGFkZGluZy10b3A6Ljg0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLWxhYmVse3RvcDoxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZXtib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcntmb250LXNpemU6NzUlO21hcmdpbi10b3A6LjY2NjY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS43OTE2NjY2NjY3ZW0pfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeSAubWF0LWZvcm0tZmllbGQtd3JhcHBlcntwYWRkaW5nLWJvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5IC5tYXQtZm9ybS1maWVsZC1pbmZpeHtwYWRkaW5nOi40Mzc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdCAubWF0LWZvcm0tZmllbGQtbGFiZWwsLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdCAubWF0LWlucHV0LXNlcnZlcjpmb2N1cysubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlciAubWF0LWZvcm0tZmllbGQtbGFiZWx7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0IC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sOi13ZWJraXQtYXV0b2ZpbGwrLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXIgLm1hdC1mb3JtLWZpZWxkLWxhYmVse3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0IC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXTpub3QoOmxhYmVsLXNob3duKSsubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlciAubWF0LWZvcm0tZmllbGQtbGFiZWx7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMnB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeSAubWF0LWZvcm0tZmllbGQtbGFiZWx7dG9wOjEuMjgxMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZXtib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeSAubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJ7bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0IC5tYXQtZm9ybS1maWVsZC1sYWJlbCwubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0IC5tYXQtaW5wdXQtc2VydmVyOmZvY3VzKy5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyIC5tYXQtZm9ybS1maWVsZC1sYWJlbHt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0IC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sOi13ZWJraXQtYXV0b2ZpbGwrLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXIgLm1hdC1mb3JtLWZpZWxkLWxhYmVse3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIxZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdOm5vdCg6bGFiZWwtc2hvd24pKy5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyIC5tYXQtZm9ybS1maWVsZC1sYWJlbHt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyZW0pIHNjYWxlKDAuNzUpfX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsIC5tYXQtZm9ybS1maWVsZC1pbmZpeHtwYWRkaW5nOi4yNWVtIDAgLjc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsIC5tYXQtZm9ybS1maWVsZC1sYWJlbHt0b3A6MS4wOTM3NWVtO21hcmdpbi10b3A6LTAuNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdCAubWF0LWZvcm0tZmllbGQtbGFiZWwsLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQgLm1hdC1pbnB1dC1zZXJ2ZXI6Zm9jdXMrLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXIgLm1hdC1mb3JtLWZpZWxkLWxhYmVse3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdCAubWF0LWlucHV0LXNlcnZlcltsYWJlbF06bm90KDpsYWJlbC1zaG93bikrLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXIgLm1hdC1mb3JtLWZpZWxkLWxhYmVse3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lIC5tYXQtZm9ybS1maWVsZC1pbmZpeHtwYWRkaW5nOjFlbSAwIDFlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUgLm1hdC1mb3JtLWZpZWxkLWxhYmVse3RvcDoxLjg0Mzc1ZW07bWFyZ2luLXRvcDotMC4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdCAubWF0LWZvcm0tZmllbGQtbGFiZWwsLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQgLm1hdC1pbnB1dC1zZXJ2ZXI6Zm9jdXMrLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXIgLm1hdC1mb3JtLWZpZWxkLWxhYmVse3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdCAubWF0LWlucHV0LXNlcnZlcltsYWJlbF06bm90KDpsYWJlbC1zaG93bikrLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXIgLm1hdC1mb3JtLWZpZWxkLWxhYmVse3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWdyaWQtdGlsZS1oZWFkZXIsLm1hdC1ncmlkLXRpbGUtZm9vdGVye2ZvbnQtc2l6ZToxNHB4fS5tYXQtZ3JpZC10aWxlLWhlYWRlciAubWF0LWxpbmUsLm1hdC1ncmlkLXRpbGUtZm9vdGVyIC5tYXQtbGluZXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyIC5tYXQtbGluZTpudGgtY2hpbGQobisyKSwubWF0LWdyaWQtdGlsZS1mb290ZXIgLm1hdC1saW5lOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fWlucHV0Lm1hdC1pbnB1dC1lbGVtZW50e21hcmdpbi10b3A6LTAuMDYyNWVtfS5tYXQtbWVudS1pdGVte2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1wYWdpbmF0b3IsLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplIC5tYXQtc2VsZWN0LXRyaWdnZXJ7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4fS5tYXQtcmFkaW8tYnV0dG9ue2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdHtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3QtdHJpZ2dlcntoZWlnaHQ6MS4xMjVlbX0ubWF0LXNsaWRlLXRvZ2dsZS1jb250ZW50e2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0e2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsLC5tYXQtc3RlcHBlci1ob3Jpem9udGFse2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXN0ZXAtbGFiZWx7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtc3RlcC1zdWItbGFiZWwtZXJyb3J7Zm9udC13ZWlnaHQ6bm9ybWFsfS5tYXQtc3RlcC1sYWJlbC1lcnJvcntmb250LXNpemU6MTRweH0ubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWR7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdGFiLWdyb3Vwe2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRhYi1sYWJlbCwubWF0LXRhYi1saW5re2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10b29sYmFyLC5tYXQtdG9vbGJhciBoMSwubWF0LXRvb2xiYXIgaDIsLm1hdC10b29sYmFyIGgzLC5tYXQtdG9vbGJhciBoNCwubWF0LXRvb2xiYXIgaDUsLm1hdC10b29sYmFyIGg2e2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowfS5tYXQtdG9vbHRpcHtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEwcHg7cGFkZGluZy10b3A6NnB4O3BhZGRpbmctYm90dG9tOjZweH0ubWF0LXRvb2x0aXAtaGFuZHNldHtmb250LXNpemU6MTRweDtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4fS5tYXQtbGlzdC1pdGVte2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3Qtb3B0aW9ue2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3QtYmFzZSAubWF0LWxpc3QtaXRlbXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZSAubWF0LWxpc3QtaXRlbSAubWF0LWxpbmV7d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlIC5tYXQtbGlzdC1pdGVtIC5tYXQtbGluZTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZSAubWF0LWxpc3Qtb3B0aW9ue2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlIC5tYXQtbGlzdC1vcHRpb24gLm1hdC1saW5le3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZSAubWF0LWxpc3Qtb3B0aW9uIC5tYXQtbGluZTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZSAubWF0LXN1YmhlYWRlcntmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtbGlzdC1iYXNlW2RlbnNlXSAubWF0LWxpc3QtaXRlbXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV0gLm1hdC1saXN0LWl0ZW0gLm1hdC1saW5le3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV0gLm1hdC1saXN0LWl0ZW0gLm1hdC1saW5lOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXSAubWF0LWxpc3Qtb3B0aW9ue2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXSAubWF0LWxpc3Qtb3B0aW9uIC5tYXQtbGluZXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdIC5tYXQtbGlzdC1vcHRpb24gLm1hdC1saW5lOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXSAubWF0LXN1YmhlYWRlcntmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtb3B0aW9ue2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTZweH0ubWF0LW9wdGdyb3VwLWxhYmVse2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtc2ltcGxlLXNuYWNrYmFye2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb257bGluZS1oZWlnaHQ6MTtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRyZWV7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdHJlZS1ub2RlLC5tYXQtbmVzdGVkLXRyZWUtbm9kZXtmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjE0cHh9Lm1hdC1yaXBwbGV7b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtcmlwcGxlOm5vdCg6ZW1wdHkpe3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApfS5tYXQtcmlwcGxlLm1hdC1yaXBwbGUtdW5ib3VuZGVke292ZXJmbG93OnZpc2libGV9Lm1hdC1yaXBwbGUtZWxlbWVudHtwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItcmFkaXVzOjUwJTtwb2ludGVyLWV2ZW50czpub25lO3RyYW5zaXRpb246b3BhY2l0eSx0cmFuc2Zvcm0gMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO3RyYW5zZm9ybTpzY2FsZSgwKX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtcmlwcGxlLWVsZW1lbnR7ZGlzcGxheTpub25lfS5jZGstdmlzdWFsbHktaGlkZGVue2JvcmRlcjowO2NsaXA6cmVjdCgwIDAgMCAwKTtoZWlnaHQ6MXB4O21hcmdpbjotMXB4O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4O3doaXRlLXNwYWNlOm5vd3JhcDtvdXRsaW5lOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmV9LmNkay1vdmVybGF5LWNvbnRhaW5lciwuY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJ7cG9pbnRlci1ldmVudHM6bm9uZTt0b3A6MDtsZWZ0OjA7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uY2RrLW92ZXJsYXktY29udGFpbmVye3Bvc2l0aW9uOmZpeGVkO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktY29udGFpbmVyOmVtcHR5e2Rpc3BsYXk6bm9uZX0uY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJ7ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktcGFuZXtwb3NpdGlvbjphYnNvbHV0ZTtwb2ludGVyLWV2ZW50czphdXRvO2JveC1zaXppbmc6Ym9yZGVyLWJveDt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O21heC13aWR0aDoxMDAlO21heC1oZWlnaHQ6MTAwJX0uY2RrLW92ZXJsYXktYmFja2Ryb3B7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7bGVmdDowO3JpZ2h0OjA7ei1pbmRleDoxMDAwO3BvaW50ZXItZXZlbnRzOmF1dG87LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50O3RyYW5zaXRpb246b3BhY2l0eSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKTtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmd7b3BhY2l0eToxfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmd7b3BhY2l0eTouNn0uY2RrLW92ZXJsYXktZGFyay1iYWNrZHJvcHtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjMyKX0uY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AsLmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmd7b3BhY2l0eTowfS5jZGstb3ZlcmxheS1jb25uZWN0ZWQtcG9zaXRpb24tYm91bmRpbmctYm94e3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO21pbi13aWR0aDoxcHg7bWluLWhlaWdodDoxcHh9LmNkay1nbG9iYWwtc2Nyb2xsYmxvY2t7cG9zaXRpb246Zml4ZWQ7d2lkdGg6MTAwJTtvdmVyZmxvdy15OnNjcm9sbH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemV7cmVzaXplOm5vbmV9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZ3twYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDphdXRvICFpbXBvcnRhbnQ7b3ZlcmZsb3c6aGlkZGVuICFpbXBvcnRhbnR9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZy1maXJlZm94e3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OjAgIWltcG9ydGFudH1Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0ey8qISovfUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5key8qISovfS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWQ6LXdlYmtpdC1hdXRvZmlsbHthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnQgMHMgMW1zfS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWQ6bm90KDotd2Via2l0LWF1dG9maWxsKXthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5kIDBzIDFtc30ubWF0LWZvY3VzLWluZGljYXRvcntwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LW1kYy1mb2N1cy1pbmRpY2F0b3J7cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1yaXBwbGUtZWxlbWVudHtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjEpfS5tYXQtb3B0aW9ue2NvbG9yOiMyMTIxMjF9Lm1hdC1vcHRpb246aG92ZXI6bm90KC5tYXQtb3B0aW9uLWRpc2FibGVkKSwubWF0LW9wdGlvbjpmb2N1czpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpe2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMDQpfS5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZDpub3QoLm1hdC1vcHRpb24tbXVsdGlwbGUpOm5vdCgubWF0LW9wdGlvbi1kaXNhYmxlZCl7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4wNCl9Lm1hdC1vcHRpb24ubWF0LWFjdGl2ZXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjA0KTtjb2xvcjojMjEyMTIxfS5tYXQtb3B0aW9uLm1hdC1vcHRpb24tZGlzYWJsZWR7Y29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtcHJpbWFyeSAubWF0LW9wdGlvbi5tYXQtc2VsZWN0ZWQ6bm90KC5tYXQtb3B0aW9uLWRpc2FibGVkKXtjb2xvcjojZjU3YzAwfS5tYXQtYWNjZW50IC5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZDpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpe2NvbG9yOiNmZjk4MDB9Lm1hdC13YXJuIC5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZDpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpe2NvbG9yOiNmNDQzMzZ9Lm1hdC1vcHRncm91cC1sYWJlbHtjb2xvcjojNjE2MTYxfS5tYXQtb3B0Z3JvdXAtZGlzYWJsZWQgLm1hdC1vcHRncm91cC1sYWJlbHtjb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1wc2V1ZG8tY2hlY2tib3h7Y29sb3I6IzYxNjE2MX0ubWF0LXBzZXVkby1jaGVja2JveDo6YWZ0ZXJ7Y29sb3I6I2ZmZn0ubWF0LXBzZXVkby1jaGVja2JveC1kaXNhYmxlZHtjb2xvcjojYjBiMGIwfS5tYXQtcHJpbWFyeSAubWF0LXBzZXVkby1jaGVja2JveC1jaGVja2VkLC5tYXQtcHJpbWFyeSAubWF0LXBzZXVkby1jaGVja2JveC1pbmRldGVybWluYXRle2JhY2tncm91bmQ6I2Y1N2MwMH0ubWF0LXBzZXVkby1jaGVja2JveC1jaGVja2VkLC5tYXQtcHNldWRvLWNoZWNrYm94LWluZGV0ZXJtaW5hdGUsLm1hdC1hY2NlbnQgLm1hdC1wc2V1ZG8tY2hlY2tib3gtY2hlY2tlZCwubWF0LWFjY2VudCAubWF0LXBzZXVkby1jaGVja2JveC1pbmRldGVybWluYXRle2JhY2tncm91bmQ6I2ZmOTgwMH0ubWF0LXdhcm4gLm1hdC1wc2V1ZG8tY2hlY2tib3gtY2hlY2tlZCwubWF0LXdhcm4gLm1hdC1wc2V1ZG8tY2hlY2tib3gtaW5kZXRlcm1pbmF0ZXtiYWNrZ3JvdW5kOiNmNDQzMzZ9Lm1hdC1wc2V1ZG8tY2hlY2tib3gtY2hlY2tlZC5tYXQtcHNldWRvLWNoZWNrYm94LWRpc2FibGVkLC5tYXQtcHNldWRvLWNoZWNrYm94LWluZGV0ZXJtaW5hdGUubWF0LXBzZXVkby1jaGVja2JveC1kaXNhYmxlZHtiYWNrZ3JvdW5kOiNiMGIwYjB9Lm1hdC1hcHAtYmFja2dyb3VuZHtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Y29sb3I6IzIxMjEyMX0ubWF0LWVsZXZhdGlvbi16MHtib3gtc2hhZG93OjBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejF7Ym94LXNoYWRvdzowcHggMnB4IDFweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMXB4IDFweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDNweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16Mntib3gtc2hhZG93OjBweCAzcHggMXB4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAycHggMnB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoze2JveC1zaGFkb3c6MHB4IDNweCAzcHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDNweCA0cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCA4cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejR7Ym94LXNoYWRvdzowcHggMnB4IDRweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNHB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDEwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejV7Ym94LXNoYWRvdzowcHggM3B4IDVweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNXB4IDhweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDE0cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejZ7Ym94LXNoYWRvdzowcHggM3B4IDVweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNnB4IDEwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxOHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXo3e2JveC1zaGFkb3c6MHB4IDRweCA1cHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDdweCAxMHB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAycHggMTZweCAxcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16OHtib3gtc2hhZG93OjBweCA1cHggNXB4IC0zcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA4cHggMTBweCAxcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggM3B4IDE0cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejl7Ym94LXNoYWRvdzowcHggNXB4IDZweCAtM3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggOXB4IDEycHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDNweCAxNnB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxMHtib3gtc2hhZG93OjBweCA2cHggNnB4IC0zcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxMHB4IDE0cHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDRweCAxOHB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxMXtib3gtc2hhZG93OjBweCA2cHggN3B4IC00cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxMXB4IDE1cHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDRweCAyMHB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxMntib3gtc2hhZG93OjBweCA3cHggOHB4IC00cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxMnB4IDE3cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDVweCAyMnB4IDRweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxM3tib3gtc2hhZG93OjBweCA3cHggOHB4IC00cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxM3B4IDE5cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDVweCAyNHB4IDRweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxNHtib3gtc2hhZG93OjBweCA3cHggOXB4IC00cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxNHB4IDIxcHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDVweCAyNnB4IDRweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxNXtib3gtc2hhZG93OjBweCA4cHggOXB4IC01cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxNXB4IDIycHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDZweCAyOHB4IDVweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxNntib3gtc2hhZG93OjBweCA4cHggMTBweCAtNXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTZweCAyNHB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA2cHggMzBweCA1cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MTd7Ym94LXNoYWRvdzowcHggOHB4IDExcHggLTVweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDE3cHggMjZweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNnB4IDMycHggNXB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejE4e2JveC1zaGFkb3c6MHB4IDlweCAxMXB4IC01cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxOHB4IDI4cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDdweCAzNHB4IDZweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxOXtib3gtc2hhZG93OjBweCA5cHggMTJweCAtNnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTlweCAyOXB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA3cHggMzZweCA2cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MjB7Ym94LXNoYWRvdzowcHggMTBweCAxM3B4IC02cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAyMHB4IDMxcHggM3B4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDhweCAzOHB4IDdweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoyMXtib3gtc2hhZG93OjBweCAxMHB4IDEzcHggLTZweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDIxcHggMzNweCAzcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggOHB4IDQwcHggN3B4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejIye2JveC1zaGFkb3c6MHB4IDEwcHggMTRweCAtNnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMjJweCAzNXB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA4cHggNDJweCA3cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MjN7Ym94LXNoYWRvdzowcHggMTFweCAxNHB4IC03cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAyM3B4IDM2cHggM3B4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDlweCA0NHB4IDhweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoyNHtib3gtc2hhZG93OjBweCAxMXB4IDE1cHggLTdweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDI0cHggMzhweCAzcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggOXB4IDQ2cHggOHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC10aGVtZS1sb2FkZWQtbWFya2Vye2Rpc3BsYXk6bm9uZX0ubWF0LWF1dG9jb21wbGV0ZS1wYW5lbHtiYWNrZ3JvdW5kOiNmZmY7Y29sb3I6IzIxMjEyMX0ubWF0LWF1dG9jb21wbGV0ZS1wYW5lbDpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAycHggNHB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA0cHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggMTBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWF1dG9jb21wbGV0ZS1wYW5lbCAubWF0LW9wdGlvbi5tYXQtc2VsZWN0ZWQ6bm90KC5tYXQtYWN0aXZlKTpub3QoOmhvdmVyKXtiYWNrZ3JvdW5kOiNmZmZ9Lm1hdC1hdXRvY29tcGxldGUtcGFuZWwgLm1hdC1vcHRpb24ubWF0LXNlbGVjdGVkOm5vdCgubWF0LWFjdGl2ZSk6bm90KDpob3Zlcik6bm90KC5tYXQtb3B0aW9uLWRpc2FibGVkKXtjb2xvcjojMjEyMTIxfS5tYXQtYmFkZ2V7cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1iYWRnZS1oaWRkZW4gLm1hdC1iYWRnZS1jb250ZW50e2Rpc3BsYXk6bm9uZX0ubWF0LWJhZGdlLWNvbnRlbnR7cG9zaXRpb246YWJzb2x1dGU7dGV4dC1hbGlnbjpjZW50ZXI7ZGlzcGxheTppbmxpbmUtYmxvY2s7Ym9yZGVyLXJhZGl1czo1MCU7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gMjAwbXMgZWFzZS1pbi1vdXQ7dHJhbnNmb3JtOnNjYWxlKDAuNik7b3ZlcmZsb3c6aGlkZGVuO3doaXRlLXNwYWNlOm5vd3JhcDt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO3BvaW50ZXItZXZlbnRzOm5vbmV9Lm5nLWFuaW1hdGUtZGlzYWJsZWQgLm1hdC1iYWRnZS1jb250ZW50LC5tYXQtYmFkZ2UtY29udGVudC5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZXt0cmFuc2l0aW9uOm5vbmV9Lm1hdC1iYWRnZS1jb250ZW50Lm1hdC1iYWRnZS1hY3RpdmV7dHJhbnNmb3JtOm5vbmV9Lm1hdC1iYWRnZS1zbWFsbCAubWF0LWJhZGdlLWNvbnRlbnR7d2lkdGg6MTZweDtoZWlnaHQ6MTZweDtsaW5lLWhlaWdodDoxNnB4fS5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLWFib3ZlIC5tYXQtYmFkZ2UtY29udGVudHt0b3A6LThweH0ubWF0LWJhZGdlLXNtYWxsLm1hdC1iYWRnZS1iZWxvdyAubWF0LWJhZGdlLWNvbnRlbnR7Ym90dG9tOi04cHh9Lm1hdC1iYWRnZS1zbWFsbC5tYXQtYmFkZ2UtYmVmb3JlIC5tYXQtYmFkZ2UtY29udGVudHtsZWZ0Oi0xNnB4fVtkaXI9cnRsXSAubWF0LWJhZGdlLXNtYWxsLm1hdC1iYWRnZS1iZWZvcmUgLm1hdC1iYWRnZS1jb250ZW50e2xlZnQ6YXV0bztyaWdodDotMTZweH0ubWF0LWJhZGdlLXNtYWxsLm1hdC1iYWRnZS1hZnRlciAubWF0LWJhZGdlLWNvbnRlbnR7cmlnaHQ6LTE2cHh9W2Rpcj1ydGxdIC5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLWFmdGVyIC5tYXQtYmFkZ2UtY29udGVudHtyaWdodDphdXRvO2xlZnQ6LTE2cHh9Lm1hdC1iYWRnZS1zbWFsbC5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYmVmb3JlIC5tYXQtYmFkZ2UtY29udGVudHtsZWZ0Oi04cHh9W2Rpcj1ydGxdIC5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWJlZm9yZSAubWF0LWJhZGdlLWNvbnRlbnR7bGVmdDphdXRvO3JpZ2h0Oi04cHh9Lm1hdC1iYWRnZS1zbWFsbC5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYWZ0ZXIgLm1hdC1iYWRnZS1jb250ZW50e3JpZ2h0Oi04cHh9W2Rpcj1ydGxdIC5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWFmdGVyIC5tYXQtYmFkZ2UtY29udGVudHtyaWdodDphdXRvO2xlZnQ6LThweH0ubWF0LWJhZGdlLW1lZGl1bSAubWF0LWJhZGdlLWNvbnRlbnR7d2lkdGg6MjJweDtoZWlnaHQ6MjJweDtsaW5lLWhlaWdodDoyMnB4fS5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1hYm92ZSAubWF0LWJhZGdlLWNvbnRlbnR7dG9wOi0xMXB4fS5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1iZWxvdyAubWF0LWJhZGdlLWNvbnRlbnR7Ym90dG9tOi0xMXB4fS5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1iZWZvcmUgLm1hdC1iYWRnZS1jb250ZW50e2xlZnQ6LTIycHh9W2Rpcj1ydGxdIC5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1iZWZvcmUgLm1hdC1iYWRnZS1jb250ZW50e2xlZnQ6YXV0bztyaWdodDotMjJweH0ubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2UtYWZ0ZXIgLm1hdC1iYWRnZS1jb250ZW50e3JpZ2h0Oi0yMnB4fVtkaXI9cnRsXSAubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2UtYWZ0ZXIgLm1hdC1iYWRnZS1jb250ZW50e3JpZ2h0OmF1dG87bGVmdDotMjJweH0ubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYmVmb3JlIC5tYXQtYmFkZ2UtY29udGVudHtsZWZ0Oi0xMXB4fVtkaXI9cnRsXSAubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYmVmb3JlIC5tYXQtYmFkZ2UtY29udGVudHtsZWZ0OmF1dG87cmlnaHQ6LTExcHh9Lm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWFmdGVyIC5tYXQtYmFkZ2UtY29udGVudHtyaWdodDotMTFweH1bZGlyPXJ0bF0gLm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWFmdGVyIC5tYXQtYmFkZ2UtY29udGVudHtyaWdodDphdXRvO2xlZnQ6LTExcHh9Lm1hdC1iYWRnZS1sYXJnZSAubWF0LWJhZGdlLWNvbnRlbnR7d2lkdGg6MjhweDtoZWlnaHQ6MjhweDtsaW5lLWhlaWdodDoyOHB4fS5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLWFib3ZlIC5tYXQtYmFkZ2UtY29udGVudHt0b3A6LTE0cHh9Lm1hdC1iYWRnZS1sYXJnZS5tYXQtYmFkZ2UtYmVsb3cgLm1hdC1iYWRnZS1jb250ZW50e2JvdHRvbTotMTRweH0ubWF0LWJhZGdlLWxhcmdlLm1hdC1iYWRnZS1iZWZvcmUgLm1hdC1iYWRnZS1jb250ZW50e2xlZnQ6LTI4cHh9W2Rpcj1ydGxdIC5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLWJlZm9yZSAubWF0LWJhZGdlLWNvbnRlbnR7bGVmdDphdXRvO3JpZ2h0Oi0yOHB4fS5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLWFmdGVyIC5tYXQtYmFkZ2UtY29udGVudHtyaWdodDotMjhweH1bZGlyPXJ0bF0gLm1hdC1iYWRnZS1sYXJnZS5tYXQtYmFkZ2UtYWZ0ZXIgLm1hdC1iYWRnZS1jb250ZW50e3JpZ2h0OmF1dG87bGVmdDotMjhweH0ubWF0LWJhZGdlLWxhcmdlLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1iZWZvcmUgLm1hdC1iYWRnZS1jb250ZW50e2xlZnQ6LTE0cHh9W2Rpcj1ydGxdIC5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWJlZm9yZSAubWF0LWJhZGdlLWNvbnRlbnR7bGVmdDphdXRvO3JpZ2h0Oi0xNHB4fS5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWFmdGVyIC5tYXQtYmFkZ2UtY29udGVudHtyaWdodDotMTRweH1bZGlyPXJ0bF0gLm1hdC1iYWRnZS1sYXJnZS5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYWZ0ZXIgLm1hdC1iYWRnZS1jb250ZW50e3JpZ2h0OmF1dG87bGVmdDotMTRweH0ubWF0LWJhZGdlLWNvbnRlbnR7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kOiNmNTdjMDB9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWJhZGdlLWNvbnRlbnR7b3V0bGluZTpzb2xpZCAxcHg7Ym9yZGVyLXJhZGl1czowfS5tYXQtYmFkZ2UtYWNjZW50IC5tYXQtYmFkZ2UtY29udGVudHtiYWNrZ3JvdW5kOiNmZjk4MDA7Y29sb3I6I2ZmZn0ubWF0LWJhZGdlLXdhcm4gLm1hdC1iYWRnZS1jb250ZW50e2NvbG9yOiNmZmY7YmFja2dyb3VuZDojZjQ0MzM2fS5tYXQtYmFkZ2UtZGlzYWJsZWQgLm1hdC1iYWRnZS1jb250ZW50e2JhY2tncm91bmQ6I2JkYmRiZDtjb2xvcjojNzU3NTc1fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcntib3gtc2hhZG93OjBweCA4cHggMTBweCAtNXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTZweCAyNHB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA2cHggMzBweCA1cHggcmdiYSgwLCAwLCAwLCAwLjEyKTtiYWNrZ3JvdW5kOiNmZmY7Y29sb3I6IzIxMjEyMX0ubWF0LWJ1dHRvbiwubWF0LWljb24tYnV0dG9uLC5tYXQtc3Ryb2tlZC1idXR0b257Y29sb3I6aW5oZXJpdDtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50fS5tYXQtYnV0dG9uLm1hdC1wcmltYXJ5LC5tYXQtaWNvbi1idXR0b24ubWF0LXByaW1hcnksLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtcHJpbWFyeXtjb2xvcjojZjU3YzAwfS5tYXQtYnV0dG9uLm1hdC1hY2NlbnQsLm1hdC1pY29uLWJ1dHRvbi5tYXQtYWNjZW50LC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LWFjY2VudHtjb2xvcjojZmY5ODAwfS5tYXQtYnV0dG9uLm1hdC13YXJuLC5tYXQtaWNvbi1idXR0b24ubWF0LXdhcm4sLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtd2Fybntjb2xvcjojZjQ0MzM2fS5tYXQtYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWQsLm1hdC1idXR0b24ubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkLC5tYXQtYnV0dG9uLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWQsLm1hdC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkLC5tYXQtaWNvbi1idXR0b24ubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZCwubWF0LWljb24tYnV0dG9uLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZCwubWF0LWljb24tYnV0dG9uLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWQsLm1hdC1pY29uLWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWQsLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkLC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkLC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZCwubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZHtjb2xvcjpyZ2JhKDAsMCwwLC4yNil9Lm1hdC1idXR0b24ubWF0LXByaW1hcnkgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheSwubWF0LWljb24tYnV0dG9uLm1hdC1wcmltYXJ5IC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXksLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtcHJpbWFyeSAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5e2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LWJ1dHRvbi5tYXQtYWNjZW50IC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXksLm1hdC1pY29uLWJ1dHRvbi5tYXQtYWNjZW50IC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXksLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtYWNjZW50IC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXl7YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtYnV0dG9uLm1hdC13YXJuIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXksLm1hdC1pY29uLWJ1dHRvbi5tYXQtd2FybiAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5LC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LXdhcm4gLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZCAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5LC5tYXQtaWNvbi1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZCAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5LC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZCAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5e2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnR9Lm1hdC1idXR0b24gLm1hdC1yaXBwbGUtZWxlbWVudCwubWF0LWljb24tYnV0dG9uIC5tYXQtcmlwcGxlLWVsZW1lbnQsLm1hdC1zdHJva2VkLWJ1dHRvbiAubWF0LXJpcHBsZS1lbGVtZW50e29wYWNpdHk6LjE7YmFja2dyb3VuZC1jb2xvcjpjdXJyZW50Q29sb3J9Lm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheXtiYWNrZ3JvdW5kOiMwMDB9Lm1hdC1zdHJva2VkLWJ1dHRvbjpub3QoLm1hdC1idXR0b24tZGlzYWJsZWQpe2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1mbGF0LWJ1dHRvbiwubWF0LXJhaXNlZC1idXR0b24sLm1hdC1mYWIsLm1hdC1taW5pLWZhYntjb2xvcjojMjEyMTIxO2JhY2tncm91bmQtY29sb3I6I2ZmZn0ubWF0LWZsYXQtYnV0dG9uLm1hdC1wcmltYXJ5LC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtcHJpbWFyeSwubWF0LWZhYi5tYXQtcHJpbWFyeSwubWF0LW1pbmktZmFiLm1hdC1wcmltYXJ5e2NvbG9yOiNmZmZ9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtYWNjZW50LC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtYWNjZW50LC5tYXQtZmFiLm1hdC1hY2NlbnQsLm1hdC1taW5pLWZhYi5tYXQtYWNjZW50e2NvbG9yOiNmZmZ9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtd2FybiwubWF0LXJhaXNlZC1idXR0b24ubWF0LXdhcm4sLm1hdC1mYWIubWF0LXdhcm4sLm1hdC1taW5pLWZhYi5tYXQtd2Fybntjb2xvcjojZmZmfS5tYXQtZmxhdC1idXR0b24ubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZCwubWF0LWZsYXQtYnV0dG9uLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZCwubWF0LWZsYXQtYnV0dG9uLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWQsLm1hdC1mbGF0LWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWQsLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWQsLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZCwubWF0LXJhaXNlZC1idXR0b24ubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZCwubWF0LXJhaXNlZC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkLC5tYXQtZmFiLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWQsLm1hdC1mYWIubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkLC5tYXQtZmFiLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWQsLm1hdC1mYWIubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkLC5tYXQtbWluaS1mYWIubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZCwubWF0LW1pbmktZmFiLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZCwubWF0LW1pbmktZmFiLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWQsLm1hdC1taW5pLWZhYi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWR7Y29sb3I6cmdiYSgwLDAsMCwuMjYpfS5tYXQtZmxhdC1idXR0b24ubWF0LXByaW1hcnksLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1wcmltYXJ5LC5tYXQtZmFiLm1hdC1wcmltYXJ5LC5tYXQtbWluaS1mYWIubWF0LXByaW1hcnl7YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtZmxhdC1idXR0b24ubWF0LWFjY2VudCwubWF0LXJhaXNlZC1idXR0b24ubWF0LWFjY2VudCwubWF0LWZhYi5tYXQtYWNjZW50LC5tYXQtbWluaS1mYWIubWF0LWFjY2VudHtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtd2FybiwubWF0LXJhaXNlZC1idXR0b24ubWF0LXdhcm4sLm1hdC1mYWIubWF0LXdhcm4sLm1hdC1taW5pLWZhYi5tYXQtd2FybntiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkLC5tYXQtZmxhdC1idXR0b24ubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkLC5tYXQtZmxhdC1idXR0b24ubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZCwubWF0LWZsYXQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZCwubWF0LXJhaXNlZC1idXR0b24ubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZCwubWF0LXJhaXNlZC1idXR0b24ubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkLC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkLC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWQsLm1hdC1mYWIubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZCwubWF0LWZhYi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWQsLm1hdC1mYWIubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZCwubWF0LWZhYi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWQsLm1hdC1taW5pLWZhYi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkLC5tYXQtbWluaS1mYWIubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkLC5tYXQtbWluaS1mYWIubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZCwubWF0LW1pbmktZmFiLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZHtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWZsYXQtYnV0dG9uLm1hdC1wcmltYXJ5IC5tYXQtcmlwcGxlLWVsZW1lbnQsLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1wcmltYXJ5IC5tYXQtcmlwcGxlLWVsZW1lbnQsLm1hdC1mYWIubWF0LXByaW1hcnkgLm1hdC1yaXBwbGUtZWxlbWVudCwubWF0LW1pbmktZmFiLm1hdC1wcmltYXJ5IC5tYXQtcmlwcGxlLWVsZW1lbnR7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xKX0ubWF0LWZsYXQtYnV0dG9uLm1hdC1hY2NlbnQgLm1hdC1yaXBwbGUtZWxlbWVudCwubWF0LXJhaXNlZC1idXR0b24ubWF0LWFjY2VudCAubWF0LXJpcHBsZS1lbGVtZW50LC5tYXQtZmFiLm1hdC1hY2NlbnQgLm1hdC1yaXBwbGUtZWxlbWVudCwubWF0LW1pbmktZmFiLm1hdC1hY2NlbnQgLm1hdC1yaXBwbGUtZWxlbWVudHtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEpfS5tYXQtZmxhdC1idXR0b24ubWF0LXdhcm4gLm1hdC1yaXBwbGUtZWxlbWVudCwubWF0LXJhaXNlZC1idXR0b24ubWF0LXdhcm4gLm1hdC1yaXBwbGUtZWxlbWVudCwubWF0LWZhYi5tYXQtd2FybiAubWF0LXJpcHBsZS1lbGVtZW50LC5tYXQtbWluaS1mYWIubWF0LXdhcm4gLm1hdC1yaXBwbGUtZWxlbWVudHtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEpfS5tYXQtc3Ryb2tlZC1idXR0b246bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSksLm1hdC1mbGF0LWJ1dHRvbjpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1yYWlzZWQtYnV0dG9uOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDNweCAxcHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDJweCAycHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1yYWlzZWQtYnV0dG9uOm5vdCgubWF0LWJ1dHRvbi1kaXNhYmxlZCk6YWN0aXZlOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDVweCA1cHggLTNweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDhweCAxMHB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAzcHggMTRweCAycHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LXJhaXNlZC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZDpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1mYWI6bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSksLm1hdC1taW5pLWZhYjpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAzcHggNXB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA2cHggMTBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDE4cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1mYWI6bm90KC5tYXQtYnV0dG9uLWRpc2FibGVkKTphY3RpdmU6bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSksLm1hdC1taW5pLWZhYjpub3QoLm1hdC1idXR0b24tZGlzYWJsZWQpOmFjdGl2ZTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCA3cHggOHB4IC00cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxMnB4IDE3cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDVweCAyMnB4IDRweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZmFiLm1hdC1idXR0b24tZGlzYWJsZWQ6bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSksLm1hdC1taW5pLWZhYi5tYXQtYnV0dG9uLWRpc2FibGVkOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWJ1dHRvbi10b2dnbGUtc3RhbmRhbG9uZSwubWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXB7Ym94LXNoYWRvdzowcHggM3B4IDFweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMnB4IDJweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWJ1dHRvbi10b2dnbGUtc3RhbmRhbG9uZS5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkLC5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cC1hcHBlYXJhbmNlLXN0YW5kYXJke2JveC1zaGFkb3c6bm9uZX0ubWF0LWJ1dHRvbi10b2dnbGV7Y29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtYnV0dG9uLXRvZ2dsZSAubWF0LWJ1dHRvbi10b2dnbGUtZm9jdXMtb3ZlcmxheXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZHtjb2xvcjojMjEyMTIxO2JhY2tncm91bmQ6I2ZmZn0ubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZCAubWF0LWJ1dHRvbi10b2dnbGUtZm9jdXMtb3ZlcmxheXtiYWNrZ3JvdW5kLWNvbG9yOiMwMDB9Lm1hdC1idXR0b24tdG9nZ2xlLWdyb3VwLWFwcGVhcmFuY2Utc3RhbmRhcmQgLm1hdC1idXR0b24tdG9nZ2xlKy5tYXQtYnV0dG9uLXRvZ2dsZXtib3JkZXItbGVmdDpzb2xpZCAxcHggcmdiYSgwLDAsMCwuMTIpfVtkaXI9cnRsXSAubWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXAtYXBwZWFyYW5jZS1zdGFuZGFyZCAubWF0LWJ1dHRvbi10b2dnbGUrLm1hdC1idXR0b24tdG9nZ2xle2JvcmRlci1sZWZ0Om5vbmU7Ym9yZGVyLXJpZ2h0OnNvbGlkIDFweCByZ2JhKDAsMCwwLC4xMil9Lm1hdC1idXR0b24tdG9nZ2xlLWdyb3VwLWFwcGVhcmFuY2Utc3RhbmRhcmQubWF0LWJ1dHRvbi10b2dnbGUtdmVydGljYWwgLm1hdC1idXR0b24tdG9nZ2xlKy5tYXQtYnV0dG9uLXRvZ2dsZXtib3JkZXItbGVmdDpub25lO2JvcmRlci1yaWdodDpub25lO2JvcmRlci10b3A6c29saWQgMXB4IHJnYmEoMCwwLDAsLjEyKX0ubWF0LWJ1dHRvbi10b2dnbGUtY2hlY2tlZHtiYWNrZ3JvdW5kLWNvbG9yOiNlMGUwZTA7Y29sb3I6IzYxNjE2MX0ubWF0LWJ1dHRvbi10b2dnbGUtY2hlY2tlZC5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJke2NvbG9yOiMyMTIxMjF9Lm1hdC1idXR0b24tdG9nZ2xlLWRpc2FibGVke2NvbG9yOnJnYmEoMCwwLDAsLjI2KTtiYWNrZ3JvdW5kLWNvbG9yOiNlZWV9Lm1hdC1idXR0b24tdG9nZ2xlLWRpc2FibGVkLm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmR7YmFja2dyb3VuZDojZmZmfS5tYXQtYnV0dG9uLXRvZ2dsZS1kaXNhYmxlZC5tYXQtYnV0dG9uLXRvZ2dsZS1jaGVja2Vke2JhY2tncm91bmQtY29sb3I6I2JkYmRiZH0ubWF0LWJ1dHRvbi10b2dnbGUtc3RhbmRhbG9uZS5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkLC5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cC1hcHBlYXJhbmNlLXN0YW5kYXJke2JvcmRlcjpzb2xpZCAxcHggcmdiYSgwLDAsMCwuMTIpfS5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkIC5tYXQtYnV0dG9uLXRvZ2dsZS1sYWJlbC1jb250ZW50e2xpbmUtaGVpZ2h0OjQ4cHh9Lm1hdC1jYXJke2JhY2tncm91bmQ6I2ZmZjtjb2xvcjojMjEyMTIxfS5tYXQtY2FyZDpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAycHggMXB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxcHggMXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggM3B4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtY2FyZC5tYXQtY2FyZC1mbGF0Om5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWNhcmQtc3VidGl0bGV7Y29sb3I6IzYxNjE2MX0ubWF0LWNoZWNrYm94LWZyYW1le2JvcmRlci1jb2xvcjojNjE2MTYxfS5tYXQtY2hlY2tib3gtY2hlY2ttYXJre2ZpbGw6I2ZmZn0ubWF0LWNoZWNrYm94LWNoZWNrbWFyay1wYXRoe3N0cm9rZTojZmZmICFpbXBvcnRhbnR9Lm1hdC1jaGVja2JveC1taXhlZG1hcmt7YmFja2dyb3VuZC1jb2xvcjojZmZmfS5tYXQtY2hlY2tib3gtaW5kZXRlcm1pbmF0ZS5tYXQtcHJpbWFyeSAubWF0LWNoZWNrYm94LWJhY2tncm91bmQsLm1hdC1jaGVja2JveC1jaGVja2VkLm1hdC1wcmltYXJ5IC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZHtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC1jaGVja2JveC1pbmRldGVybWluYXRlLm1hdC1hY2NlbnQgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5kLC5tYXQtY2hlY2tib3gtY2hlY2tlZC5tYXQtYWNjZW50IC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZHtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1jaGVja2JveC1pbmRldGVybWluYXRlLm1hdC13YXJuIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZCwubWF0LWNoZWNrYm94LWNoZWNrZWQubWF0LXdhcm4gLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5ke2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LWNoZWNrYm94LWRpc2FibGVkLm1hdC1jaGVja2JveC1jaGVja2VkIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZCwubWF0LWNoZWNrYm94LWRpc2FibGVkLm1hdC1jaGVja2JveC1pbmRldGVybWluYXRlIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZHtiYWNrZ3JvdW5kLWNvbG9yOiNiMGIwYjB9Lm1hdC1jaGVja2JveC1kaXNhYmxlZDpub3QoLm1hdC1jaGVja2JveC1jaGVja2VkKSAubWF0LWNoZWNrYm94LWZyYW1le2JvcmRlci1jb2xvcjojYjBiMGIwfS5tYXQtY2hlY2tib3gtZGlzYWJsZWQgLm1hdC1jaGVja2JveC1sYWJlbHtjb2xvcjojNjE2MTYxfS5tYXQtY2hlY2tib3ggLm1hdC1yaXBwbGUtZWxlbWVudHtiYWNrZ3JvdW5kLWNvbG9yOiMwMDB9Lm1hdC1jaGVja2JveC1jaGVja2VkOm5vdCgubWF0LWNoZWNrYm94LWRpc2FibGVkKS5tYXQtcHJpbWFyeSAubWF0LXJpcHBsZS1lbGVtZW50LC5tYXQtY2hlY2tib3g6YWN0aXZlOm5vdCgubWF0LWNoZWNrYm94LWRpc2FibGVkKS5tYXQtcHJpbWFyeSAubWF0LXJpcHBsZS1lbGVtZW50e2JhY2tncm91bmQ6I2Y1N2MwMH0ubWF0LWNoZWNrYm94LWNoZWNrZWQ6bm90KC5tYXQtY2hlY2tib3gtZGlzYWJsZWQpLm1hdC1hY2NlbnQgLm1hdC1yaXBwbGUtZWxlbWVudCwubWF0LWNoZWNrYm94OmFjdGl2ZTpub3QoLm1hdC1jaGVja2JveC1kaXNhYmxlZCkubWF0LWFjY2VudCAubWF0LXJpcHBsZS1lbGVtZW50e2JhY2tncm91bmQ6I2ZmOTgwMH0ubWF0LWNoZWNrYm94LWNoZWNrZWQ6bm90KC5tYXQtY2hlY2tib3gtZGlzYWJsZWQpLm1hdC13YXJuIC5tYXQtcmlwcGxlLWVsZW1lbnQsLm1hdC1jaGVja2JveDphY3RpdmU6bm90KC5tYXQtY2hlY2tib3gtZGlzYWJsZWQpLm1hdC13YXJuIC5tYXQtcmlwcGxlLWVsZW1lbnR7YmFja2dyb3VuZDojZjQ0MzM2fS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcHtiYWNrZ3JvdW5kLWNvbG9yOiNlMGUwZTA7Y29sb3I6IzIxMjEyMX0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAgLm1hdC1jaGlwLXJlbW92ZXtjb2xvcjojMjEyMTIxO29wYWNpdHk6LjR9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwOm5vdCgubWF0LWNoaXAtZGlzYWJsZWQpOmFjdGl2ZXtib3gtc2hhZG93OjBweCAzcHggM3B4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAzcHggNHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggOHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcDpub3QoLm1hdC1jaGlwLWRpc2FibGVkKSAubWF0LWNoaXAtcmVtb3ZlOmhvdmVye29wYWNpdHk6LjU0fS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1kaXNhYmxlZHtvcGFjaXR5Oi40fS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcDo6YWZ0ZXJ7YmFja2dyb3VuZDojMDAwfS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1zZWxlY3RlZC5tYXQtcHJpbWFyeXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDA7Y29sb3I6I2ZmZn0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LXByaW1hcnkgLm1hdC1jaGlwLXJlbW92ZXtjb2xvcjojZmZmO29wYWNpdHk6LjR9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC1wcmltYXJ5IC5tYXQtcmlwcGxlLWVsZW1lbnR7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xKX0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LXdhcm57YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2O2NvbG9yOiNmZmZ9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC13YXJuIC5tYXQtY2hpcC1yZW1vdmV7Y29sb3I6I2ZmZjtvcGFjaXR5Oi40fS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1zZWxlY3RlZC5tYXQtd2FybiAubWF0LXJpcHBsZS1lbGVtZW50e2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMSl9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC1hY2NlbnR7YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwO2NvbG9yOiNmZmZ9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC1hY2NlbnQgLm1hdC1jaGlwLXJlbW92ZXtjb2xvcjojZmZmO29wYWNpdHk6LjR9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC1hY2NlbnQgLm1hdC1yaXBwbGUtZWxlbWVudHtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEpfS5tYXQtdGFibGV7YmFja2dyb3VuZDojZmZmfS5tYXQtdGFibGUgdGhlYWQsLm1hdC10YWJsZSB0Ym9keSwubWF0LXRhYmxlIHRmb290LG1hdC1oZWFkZXItcm93LG1hdC1yb3csbWF0LWZvb3Rlci1yb3csW21hdC1oZWFkZXItcm93XSxbbWF0LXJvd10sW21hdC1mb290ZXItcm93XSwubWF0LXRhYmxlLXN0aWNreXtiYWNrZ3JvdW5kOmluaGVyaXR9bWF0LXJvdyxtYXQtaGVhZGVyLXJvdyxtYXQtZm9vdGVyLXJvdyx0aC5tYXQtaGVhZGVyLWNlbGwsdGQubWF0LWNlbGwsdGQubWF0LWZvb3Rlci1jZWxse2JvcmRlci1ib3R0b20tY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtaGVhZGVyLWNlbGx7Y29sb3I6IzYxNjE2MX0ubWF0LWNlbGwsLm1hdC1mb290ZXItY2VsbHtjb2xvcjojMjEyMTIxfS5tYXQtY2FsZW5kYXItYXJyb3d7ZmlsbDpyZ2JhKDAsMCwwLC41NCl9Lm1hdC1kYXRlcGlja2VyLXRvZ2dsZSwubWF0LWRhdGVwaWNrZXItY29udGVudCAubWF0LWNhbGVuZGFyLW5leHQtYnV0dG9uLC5tYXQtZGF0ZXBpY2tlci1jb250ZW50IC5tYXQtY2FsZW5kYXItcHJldmlvdXMtYnV0dG9ue2NvbG9yOnJnYmEoMCwwLDAsLjU0KX0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcntjb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXItZGl2aWRlcjo6YWZ0ZXJ7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1jYWxlbmRhci1ib2R5LWxhYmVse2NvbG9yOiM2MTYxNjF9Lm1hdC1jYWxlbmRhci1ib2R5LWNlbGwtY29udGVudCwubWF0LWRhdGUtcmFuZ2UtaW5wdXQtc2VwYXJhdG9ye2NvbG9yOiMyMTIxMjE7Ym9yZGVyLWNvbG9yOnRyYW5zcGFyZW50fS5tYXQtY2FsZW5kYXItYm9keS1kaXNhYmxlZD4ubWF0LWNhbGVuZGFyLWJvZHktY2VsbC1jb250ZW50Om5vdCgubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQpOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwpe2NvbG9yOiM3NTc1NzV9Lm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkIC5tYXQtZGF0ZS1yYW5nZS1pbnB1dC1zZXBhcmF0b3J7Y29sb3I6Izc1NzU3NX0ubWF0LWNhbGVuZGFyLWJvZHktaW4tcHJldmlld3tjb2xvcjpyZ2JhKDAsMCwwLC4yNCl9Lm1hdC1jYWxlbmRhci1ib2R5LXRvZGF5Om5vdCgubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQpOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwpe2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1jYWxlbmRhci1ib2R5LWRpc2FibGVkPi5tYXQtY2FsZW5kYXItYm9keS10b2RheTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkKTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsKXtib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuMTgpfS5tYXQtY2FsZW5kYXItYm9keS1pbi1yYW5nZTo6YmVmb3Jle2JhY2tncm91bmQ6cmdiYSgyNDUsMTI0LDAsLjIpfS5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbCwubWF0LWNhbGVuZGFyLWJvZHktaW4tY29tcGFyaXNvbi1yYW5nZTo6YmVmb3Jle2JhY2tncm91bmQ6cmdiYSgyNDksMTcxLDAsLjIpfS5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1zdGFydDo6YmVmb3JlLFtkaXI9cnRsXSAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2UtZW5kOjpiZWZvcmV7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHJnYmEoMjQ1LCAxMjQsIDAsIDAuMikgNTAlLCByZ2JhKDI0OSwgMTcxLCAwLCAwLjIpIDUwJSl9Lm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLWVuZDo6YmVmb3JlLFtkaXI9cnRsXSAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2Utc3RhcnQ6OmJlZm9yZXtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCh0byBsZWZ0LCByZ2JhKDI0NSwgMTI0LCAwLCAwLjIpIDUwJSwgcmdiYSgyNDksIDE3MSwgMCwgMC4yKSA1MCUpfS5tYXQtY2FsZW5kYXItYm9keS1pbi1yYW5nZT4ubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwsLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2UubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2U6OmFmdGVye2JhY2tncm91bmQ6I2E4ZGFiNX0ubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQsLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2U+Lm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVke2JhY2tncm91bmQ6IzQ2YTM1ZX0ubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWR7YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwO2NvbG9yOiNmZmZ9Lm1hdC1jYWxlbmRhci1ib2R5LWRpc2FibGVkPi5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZHtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjQ1LDEyNCwwLC40KX0ubWF0LWNhbGVuZGFyLWJvZHktdG9kYXkubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWR7Ym94LXNoYWRvdzppbnNldCAwIDAgMCAxcHggI2ZmZn0ubWF0LWNhbGVuZGFyLWJvZHktY2VsbDpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWRpc2FibGVkKTpob3Zlcj4ubWF0LWNhbGVuZGFyLWJvZHktY2VsbC1jb250ZW50Om5vdCgubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQpOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwpLC5jZGsta2V5Ym9hcmQtZm9jdXNlZCAubWF0LWNhbGVuZGFyLWJvZHktYWN0aXZlPi5tYXQtY2FsZW5kYXItYm9keS1jZWxsLWNvbnRlbnQ6bm90KC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZCk6bm90KC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbCksLmNkay1wcm9ncmFtLWZvY3VzZWQgLm1hdC1jYWxlbmRhci1ib2R5LWFjdGl2ZT4ubWF0LWNhbGVuZGFyLWJvZHktY2VsbC1jb250ZW50Om5vdCgubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQpOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwpe2JhY2tncm91bmQtY29sb3I6cmdiYSgyNDUsMTI0LDAsLjMpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50e2JveC1zaGFkb3c6MHB4IDJweCA0cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDRweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpO2JhY2tncm91bmQtY29sb3I6I2ZmZjtjb2xvcjojMjEyMTIxfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnQgLm1hdC1jYWxlbmRhci1ib2R5LWluLXJhbmdlOjpiZWZvcmV7YmFja2dyb3VuZDpyZ2JhKDI1NSwxNTIsMCwuMil9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudCAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwsLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudCAubWF0LWNhbGVuZGFyLWJvZHktaW4tY29tcGFyaXNvbi1yYW5nZTo6YmVmb3Jle2JhY2tncm91bmQ6cmdiYSgyNDksMTcxLDAsLjIpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnQgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLXN0YXJ0OjpiZWZvcmUsLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudCBbZGlyPXJ0bF0gLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLWVuZDo6YmVmb3Jle2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKDI1NSwgMTUyLCAwLCAwLjIpIDUwJSwgcmdiYSgyNDksIDE3MSwgMCwgMC4yKSA1MCUpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnQgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLWVuZDo6YmVmb3JlLC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnQgW2Rpcj1ydGxdIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1zdGFydDo6YmVmb3Jle2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KHRvIGxlZnQsIHJnYmEoMjU1LCAxNTIsIDAsIDAuMikgNTAlLCByZ2JhKDI0OSwgMTcxLCAwLCAwLjIpIDUwJSl9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudCAubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2U+Lm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsLC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnQgLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2UubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2U6OmFmdGVye2JhY2tncm91bmQ6I2E4ZGFiNX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50IC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZCwubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50IC5tYXQtY2FsZW5kYXItYm9keS1pbi1jb21wYXJpc29uLXJhbmdlPi5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZHtiYWNrZ3JvdW5kOiM0NmEzNWV9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudCAubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWR7YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwO2NvbG9yOiNmZmZ9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudCAubWF0LWNhbGVuZGFyLWJvZHktZGlzYWJsZWQ+Lm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVke2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMTUyLDAsLjQpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnQgLm1hdC1jYWxlbmRhci1ib2R5LXRvZGF5Lm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVke2JveC1zaGFkb3c6aW5zZXQgMCAwIDAgMXB4ICNmZmZ9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudCAubWF0LWNhbGVuZGFyLWJvZHktY2VsbDpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWRpc2FibGVkKTpob3Zlcj4ubWF0LWNhbGVuZGFyLWJvZHktY2VsbC1jb250ZW50Om5vdCgubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQpOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwpLC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnQgLmNkay1rZXlib2FyZC1mb2N1c2VkIC5tYXQtY2FsZW5kYXItYm9keS1hY3RpdmU+Lm1hdC1jYWxlbmRhci1ib2R5LWNlbGwtY29udGVudDpub3QoLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkKTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsKSwubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50IC5jZGstcHJvZ3JhbS1mb2N1c2VkIC5tYXQtY2FsZW5kYXItYm9keS1hY3RpdmU+Lm1hdC1jYWxlbmRhci1ib2R5LWNlbGwtY29udGVudDpub3QoLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkKTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDE1MiwwLC4zKX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2FybiAubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2U6OmJlZm9yZXtiYWNrZ3JvdW5kOnJnYmEoMjQ0LDY3LDU0LC4yKX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2FybiAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwsLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm4gLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2U6OmJlZm9yZXtiYWNrZ3JvdW5kOnJnYmEoMjQ5LDE3MSwwLC4yKX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2FybiAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2Utc3RhcnQ6OmJlZm9yZSwubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2FybiBbZGlyPXJ0bF0gLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLWVuZDo6YmVmb3Jle2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKDI0NCwgNjcsIDU0LCAwLjIpIDUwJSwgcmdiYSgyNDksIDE3MSwgMCwgMC4yKSA1MCUpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1lbmQ6OmJlZm9yZSwubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2FybiBbZGlyPXJ0bF0gLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLXN0YXJ0OjpiZWZvcmV7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQodG8gbGVmdCwgcmdiYSgyNDQsIDY3LCA1NCwgMC4yKSA1MCUsIHJnYmEoMjQ5LCAxNzEsIDAsIDAuMikgNTAlKX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2FybiAubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2U+Lm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsLC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuIC5tYXQtY2FsZW5kYXItYm9keS1pbi1jb21wYXJpc29uLXJhbmdlLm1hdC1jYWxlbmRhci1ib2R5LWluLXJhbmdlOjphZnRlcntiYWNrZ3JvdW5kOiNhOGRhYjV9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm4gLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkLC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuIC5tYXQtY2FsZW5kYXItYm9keS1pbi1jb21wYXJpc29uLXJhbmdlPi5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZHtiYWNrZ3JvdW5kOiM0NmEzNWV9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm4gLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVke2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNjtjb2xvcjojZmZmfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuIC5tYXQtY2FsZW5kYXItYm9keS1kaXNhYmxlZD4ubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWR7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI0NCw2Nyw1NCwuNCl9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm4gLm1hdC1jYWxlbmRhci1ib2R5LXRvZGF5Lm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVke2JveC1zaGFkb3c6aW5zZXQgMCAwIDAgMXB4ICNmZmZ9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm4gLm1hdC1jYWxlbmRhci1ib2R5LWNlbGw6bm90KC5tYXQtY2FsZW5kYXItYm9keS1kaXNhYmxlZCk6aG92ZXI+Lm1hdC1jYWxlbmRhci1ib2R5LWNlbGwtY29udGVudDpub3QoLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkKTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsKSwubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2FybiAuY2RrLWtleWJvYXJkLWZvY3VzZWQgLm1hdC1jYWxlbmRhci1ib2R5LWFjdGl2ZT4ubWF0LWNhbGVuZGFyLWJvZHktY2VsbC1jb250ZW50Om5vdCgubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQpOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwpLC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuIC5jZGstcHJvZ3JhbS1mb2N1c2VkIC5tYXQtY2FsZW5kYXItYm9keS1hY3RpdmU+Lm1hdC1jYWxlbmRhci1ib2R5LWNlbGwtY29udGVudDpub3QoLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkKTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjQ0LDY3LDU0LC4zKX0ubWF0LWRhdGVwaWNrZXItY29udGVudC10b3VjaHtib3gtc2hhZG93OjBweCAxMXB4IDE1cHggLTdweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDI0cHggMzhweCAzcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggOXB4IDQ2cHggOHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1kYXRlcGlja2VyLXRvZ2dsZS1hY3RpdmV7Y29sb3I6I2Y1N2MwMH0ubWF0LWRhdGVwaWNrZXItdG9nZ2xlLWFjdGl2ZS5tYXQtYWNjZW50e2NvbG9yOiNmZjk4MDB9Lm1hdC1kYXRlcGlja2VyLXRvZ2dsZS1hY3RpdmUubWF0LXdhcm57Y29sb3I6I2Y0NDMzNn0ubWF0LWRhdGUtcmFuZ2UtaW5wdXQtaW5uZXJbZGlzYWJsZWRde2NvbG9yOiM3NTc1NzV9Lm1hdC1kaWFsb2ctY29udGFpbmVye2JveC1zaGFkb3c6MHB4IDExcHggMTVweCAtN3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMjRweCAzOHB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA5cHggNDZweCA4cHggcmdiYSgwLCAwLCAwLCAwLjEyKTtiYWNrZ3JvdW5kOiNmZmY7Y29sb3I6IzIxMjEyMX0ubWF0LWRpdmlkZXJ7Ym9yZGVyLXRvcC1jb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1kaXZpZGVyLXZlcnRpY2Fse2JvcmRlci1yaWdodC1jb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1leHBhbnNpb24tcGFuZWx7YmFja2dyb3VuZDojZmZmO2NvbG9yOiMyMTIxMjF9Lm1hdC1leHBhbnNpb24tcGFuZWw6bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggM3B4IDFweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMnB4IDJweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWFjdGlvbi1yb3d7Ym9yZGVyLXRvcC1jb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1leHBhbnNpb24tcGFuZWwgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLmNkay1rZXlib2FyZC1mb2N1c2VkOm5vdChbYXJpYS1kaXNhYmxlZD10cnVlXSksLm1hdC1leHBhbnNpb24tcGFuZWwgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLmNkay1wcm9ncmFtLWZvY3VzZWQ6bm90KFthcmlhLWRpc2FibGVkPXRydWVdKSwubWF0LWV4cGFuc2lvbi1wYW5lbDpub3QoLm1hdC1leHBhbmRlZCkgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyOmhvdmVyOm5vdChbYXJpYS1kaXNhYmxlZD10cnVlXSl7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4wNCl9QG1lZGlhKGhvdmVyOiBub25lKXsubWF0LWV4cGFuc2lvbi1wYW5lbDpub3QoLm1hdC1leHBhbmRlZCk6bm90KFthcmlhLWRpc2FibGVkPXRydWVdKSAubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI6aG92ZXJ7YmFja2dyb3VuZDojZmZmfX0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXItdGl0bGV7Y29sb3I6IzIxMjEyMX0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXItZGVzY3JpcHRpb24sLm1hdC1leHBhbnNpb24taW5kaWNhdG9yOjphZnRlcntjb2xvcjojNjE2MTYxfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlclthcmlhLWRpc2FibGVkPXRydWVde2NvbG9yOnJnYmEoMCwwLDAsLjI2KX0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbYXJpYS1kaXNhYmxlZD10cnVlXSAubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXItdGl0bGUsLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW2FyaWEtZGlzYWJsZWQ9dHJ1ZV0gLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLWRlc2NyaXB0aW9ue2NvbG9yOmluaGVyaXR9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVye2hlaWdodDo0OHB4fS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlci5tYXQtZXhwYW5kZWR7aGVpZ2h0OjY0cHh9Lm1hdC1mb3JtLWZpZWxkLWxhYmVse2NvbG9yOnJnYmEoOTcsOTcsOTcsLjYpfS5tYXQtaGludHtjb2xvcjpyZ2JhKDk3LDk3LDk3LC42KX0ubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWQgLm1hdC1mb3JtLWZpZWxkLWxhYmVse2NvbG9yOiNmNTdjMDB9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkIC5tYXQtZm9ybS1maWVsZC1sYWJlbC5tYXQtYWNjZW50e2NvbG9yOiNmZjk4MDB9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkIC5tYXQtZm9ybS1maWVsZC1sYWJlbC5tYXQtd2Fybntjb2xvcjojZjQ0MzM2fS5tYXQtZm9jdXNlZCAubWF0LWZvcm0tZmllbGQtcmVxdWlyZWQtbWFya2Vye2NvbG9yOiNmZjk4MDB9Lm1hdC1mb3JtLWZpZWxkLXJpcHBsZXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjg3KX0ubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWQgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkIC5tYXQtZm9ybS1maWVsZC1yaXBwbGUubWF0LWFjY2VudHtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkIC5tYXQtZm9ybS1maWVsZC1yaXBwbGUubWF0LXdhcm57YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0Lm1hdC1mb2N1c2VkOm5vdCgubWF0LWZvcm0tZmllbGQtaW52YWxpZCkgLm1hdC1mb3JtLWZpZWxkLWluZml4OjphZnRlcntjb2xvcjojZjU3YzAwfS5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0Lm1hdC1mb2N1c2VkOm5vdCgubWF0LWZvcm0tZmllbGQtaW52YWxpZCkubWF0LWFjY2VudCAubWF0LWZvcm0tZmllbGQtaW5maXg6OmFmdGVye2NvbG9yOiNmZjk4MDB9Lm1hdC1mb3JtLWZpZWxkLXR5cGUtbWF0LW5hdGl2ZS1zZWxlY3QubWF0LWZvY3VzZWQ6bm90KC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkKS5tYXQtd2FybiAubWF0LWZvcm0tZmllbGQtaW5maXg6OmFmdGVye2NvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb3JtLWZpZWxkLWludmFsaWQgLm1hdC1mb3JtLWZpZWxkLWxhYmVse2NvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb3JtLWZpZWxkLWludmFsaWQgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLm1hdC1hY2NlbnQsLm1hdC1mb3JtLWZpZWxkLm1hdC1mb3JtLWZpZWxkLWludmFsaWQgLm1hdC1mb3JtLWZpZWxkLWxhYmVsIC5tYXQtZm9ybS1maWVsZC1yZXF1aXJlZC1tYXJrZXJ7Y29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQubWF0LWZvcm0tZmllbGQtaW52YWxpZCAubWF0LWZvcm0tZmllbGQtcmlwcGxlLC5tYXQtZm9ybS1maWVsZC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkIC5tYXQtZm9ybS1maWVsZC1yaXBwbGUubWF0LWFjY2VudHtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC1lcnJvcntjb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeSAubWF0LWZvcm0tZmllbGQtbGFiZWx7Y29sb3I6IzYxNjE2MX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kgLm1hdC1oaW50e2NvbG9yOiM2MTYxNjF9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5IC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmV7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC40Mil9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmV7YmFja2dyb3VuZC1pbWFnZTpsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHJnYmEoMCwgMCwgMCwgMC40MikgMCUsIHJnYmEoMCwgMCwgMCwgMC40MikgMzMlLCB0cmFuc3BhcmVudCAwJSk7YmFja2dyb3VuZC1zaXplOjRweCAxMDAlO2JhY2tncm91bmQtcmVwZWF0OnJlcGVhdC14fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLXN0YW5kYXJkIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmV7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC40Mil9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utc3RhbmRhcmQubWF0LWZvcm0tZmllbGQtZGlzYWJsZWQgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZXtiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCh0byByaWdodCwgcmdiYSgwLCAwLCAwLCAwLjQyKSAwJSwgcmdiYSgwLCAwLCAwLCAwLjQyKSAzMyUsIHRyYW5zcGFyZW50IDAlKTtiYWNrZ3JvdW5kLXNpemU6NHB4IDEwMCU7YmFja2dyb3VuZC1yZXBlYXQ6cmVwZWF0LXh9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbCAubWF0LWZvcm0tZmllbGQtZmxleHtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjA0KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkIC5tYXQtZm9ybS1maWVsZC1mbGV4e2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMDIpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZTo6YmVmb3Jle2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuNDIpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtZGlzYWJsZWQgLm1hdC1mb3JtLWZpZWxkLWxhYmVse2NvbG9yOiM3NTc1NzV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZCAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lOjpiZWZvcmV7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5le2NvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLXRoaWNre2NvbG9yOnJnYmEoMCwwLDAsLjg3KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb2N1c2VkIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLXRoaWNre2NvbG9yOiNmNTdjMDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9jdXNlZC5tYXQtYWNjZW50IC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLXRoaWNre2NvbG9yOiNmZjk4MDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9jdXNlZC5tYXQtd2FybiAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGlja3tjb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtaW52YWxpZC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLXRoaWNre2NvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZCAubWF0LWZvcm0tZmllbGQtbGFiZWx7Y29sb3I6Izc1NzU3NX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5le2NvbG9yOnJnYmEoMCwwLDAsLjA2KX0ubWF0LWljb24ubWF0LXByaW1hcnl7Y29sb3I6I2Y1N2MwMH0ubWF0LWljb24ubWF0LWFjY2VudHtjb2xvcjojZmY5ODAwfS5tYXQtaWNvbi5tYXQtd2Fybntjb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0IC5tYXQtZm9ybS1maWVsZC1pbmZpeDo6YWZ0ZXJ7Y29sb3I6IzYxNjE2MX0ubWF0LWlucHV0LWVsZW1lbnQ6ZGlzYWJsZWQsLm1hdC1mb3JtLWZpZWxkLXR5cGUtbWF0LW5hdGl2ZS1zZWxlY3QubWF0LWZvcm0tZmllbGQtZGlzYWJsZWQgLm1hdC1mb3JtLWZpZWxkLWluZml4OjphZnRlcntjb2xvcjojNzU3NTc1fS5tYXQtaW5wdXQtZWxlbWVudHtjYXJldC1jb2xvcjojZjU3YzAwfS5tYXQtaW5wdXQtZWxlbWVudDo6cGxhY2Vob2xkZXJ7Y29sb3I6cmdiYSg5Nyw5Nyw5NywuNDIpfS5tYXQtaW5wdXQtZWxlbWVudDo6LW1vei1wbGFjZWhvbGRlcntjb2xvcjpyZ2JhKDk3LDk3LDk3LC40Mil9Lm1hdC1pbnB1dC1lbGVtZW50Ojotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVye2NvbG9yOnJnYmEoOTcsOTcsOTcsLjQyKX0ubWF0LWlucHV0LWVsZW1lbnQ6LW1zLWlucHV0LXBsYWNlaG9sZGVye2NvbG9yOnJnYmEoOTcsOTcsOTcsLjQyKX0ubWF0LWZvcm0tZmllbGQubWF0LWFjY2VudCAubWF0LWlucHV0LWVsZW1lbnR7Y2FyZXQtY29sb3I6I2ZmOTgwMH0ubWF0LWZvcm0tZmllbGQubWF0LXdhcm4gLm1hdC1pbnB1dC1lbGVtZW50LC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkIC5tYXQtaW5wdXQtZWxlbWVudHtjYXJldC1jb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0Lm1hdC1mb3JtLWZpZWxkLWludmFsaWQgLm1hdC1mb3JtLWZpZWxkLWluZml4OjphZnRlcntjb2xvcjojZjQ0MzM2fS5tYXQtbGlzdC1iYXNlIC5tYXQtbGlzdC1pdGVte2NvbG9yOiMyMTIxMjF9Lm1hdC1saXN0LWJhc2UgLm1hdC1saXN0LW9wdGlvbntjb2xvcjojMjEyMTIxfS5tYXQtbGlzdC1iYXNlIC5tYXQtc3ViaGVhZGVye2NvbG9yOiM2MTYxNjF9Lm1hdC1saXN0LWl0ZW0tZGlzYWJsZWR7YmFja2dyb3VuZC1jb2xvcjojZWVlfS5tYXQtbGlzdC1vcHRpb246aG92ZXIsLm1hdC1saXN0LW9wdGlvbjpmb2N1cywubWF0LW5hdi1saXN0IC5tYXQtbGlzdC1pdGVtOmhvdmVyLC5tYXQtbmF2LWxpc3QgLm1hdC1saXN0LWl0ZW06Zm9jdXMsLm1hdC1hY3Rpb24tbGlzdCAubWF0LWxpc3QtaXRlbTpob3ZlciwubWF0LWFjdGlvbi1saXN0IC5tYXQtbGlzdC1pdGVtOmZvY3Vze2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMDQpfS5tYXQtbGlzdC1zaW5nbGUtc2VsZWN0ZWQtb3B0aW9uLC5tYXQtbGlzdC1zaW5nbGUtc2VsZWN0ZWQtb3B0aW9uOmhvdmVyLC5tYXQtbGlzdC1zaW5nbGUtc2VsZWN0ZWQtb3B0aW9uOmZvY3Vze2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMTIpfS5tYXQtbWVudS1wYW5lbHtiYWNrZ3JvdW5kOiNmZmZ9Lm1hdC1tZW51LXBhbmVsOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDJweCA0cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDRweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtbWVudS1pdGVte2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7Y29sb3I6IzIxMjEyMX0ubWF0LW1lbnUtaXRlbVtkaXNhYmxlZF0sLm1hdC1tZW51LWl0ZW1bZGlzYWJsZWRdIC5tYXQtbWVudS1zdWJtZW51LWljb24sLm1hdC1tZW51LWl0ZW1bZGlzYWJsZWRdIC5tYXQtaWNvbi1uby1jb2xvcntjb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1tZW51LWl0ZW0gLm1hdC1pY29uLW5vLWNvbG9yLC5tYXQtbWVudS1zdWJtZW51LWljb257Y29sb3I6cmdiYSgwLDAsMCwuNTQpfS5tYXQtbWVudS1pdGVtOmhvdmVyOm5vdChbZGlzYWJsZWRdKSwubWF0LW1lbnUtaXRlbS5jZGstcHJvZ3JhbS1mb2N1c2VkOm5vdChbZGlzYWJsZWRdKSwubWF0LW1lbnUtaXRlbS5jZGsta2V5Ym9hcmQtZm9jdXNlZDpub3QoW2Rpc2FibGVkXSksLm1hdC1tZW51LWl0ZW0taGlnaGxpZ2h0ZWQ6bm90KFtkaXNhYmxlZF0pe2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMDQpfS5tYXQtcGFnaW5hdG9ye2JhY2tncm91bmQ6I2ZmZn0ubWF0LXBhZ2luYXRvciwubWF0LXBhZ2luYXRvci1wYWdlLXNpemUgLm1hdC1zZWxlY3QtdHJpZ2dlcntjb2xvcjojNjE2MTYxfS5tYXQtcGFnaW5hdG9yLWRlY3JlbWVudCwubWF0LXBhZ2luYXRvci1pbmNyZW1lbnR7Ym9yZGVyLXRvcDoycHggc29saWQgcmdiYSgwLDAsMCwuNTQpO2JvcmRlci1yaWdodDoycHggc29saWQgcmdiYSgwLDAsMCwuNTQpfS5tYXQtcGFnaW5hdG9yLWZpcnN0LC5tYXQtcGFnaW5hdG9yLWxhc3R7Ym9yZGVyLXRvcDoycHggc29saWQgcmdiYSgwLDAsMCwuNTQpfS5tYXQtaWNvbi1idXR0b25bZGlzYWJsZWRdIC5tYXQtcGFnaW5hdG9yLWRlY3JlbWVudCwubWF0LWljb24tYnV0dG9uW2Rpc2FibGVkXSAubWF0LXBhZ2luYXRvci1pbmNyZW1lbnQsLm1hdC1pY29uLWJ1dHRvbltkaXNhYmxlZF0gLm1hdC1wYWdpbmF0b3ItZmlyc3QsLm1hdC1pY29uLWJ1dHRvbltkaXNhYmxlZF0gLm1hdC1wYWdpbmF0b3ItbGFzdHtib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtcGFnaW5hdG9yLWNvbnRhaW5lcnttaW4taGVpZ2h0OjU2cHh9Lm1hdC1wcm9ncmVzcy1iYXItYmFja2dyb3VuZHtmaWxsOiNmZGRlYmZ9Lm1hdC1wcm9ncmVzcy1iYXItYnVmZmVye2JhY2tncm91bmQtY29sb3I6I2ZkZGViZn0ubWF0LXByb2dyZXNzLWJhci1maWxsOjphZnRlcntiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC1wcm9ncmVzcy1iYXIubWF0LWFjY2VudCAubWF0LXByb2dyZXNzLWJhci1iYWNrZ3JvdW5ke2ZpbGw6I2ZmZTViZn0ubWF0LXByb2dyZXNzLWJhci5tYXQtYWNjZW50IC5tYXQtcHJvZ3Jlc3MtYmFyLWJ1ZmZlcntiYWNrZ3JvdW5kLWNvbG9yOiNmZmU1YmZ9Lm1hdC1wcm9ncmVzcy1iYXIubWF0LWFjY2VudCAubWF0LXByb2dyZXNzLWJhci1maWxsOjphZnRlcntiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1wcm9ncmVzcy1iYXIubWF0LXdhcm4gLm1hdC1wcm9ncmVzcy1iYXItYmFja2dyb3VuZHtmaWxsOiNmY2QwY2R9Lm1hdC1wcm9ncmVzcy1iYXIubWF0LXdhcm4gLm1hdC1wcm9ncmVzcy1iYXItYnVmZmVye2JhY2tncm91bmQtY29sb3I6I2ZjZDBjZH0ubWF0LXByb2dyZXNzLWJhci5tYXQtd2FybiAubWF0LXByb2dyZXNzLWJhci1maWxsOjphZnRlcntiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC1wcm9ncmVzcy1zcGlubmVyIGNpcmNsZSwubWF0LXNwaW5uZXIgY2lyY2xle3N0cm9rZTojZjU3YzAwfS5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lci5tYXQtYWNjZW50IGNpcmNsZSwubWF0LXNwaW5uZXIubWF0LWFjY2VudCBjaXJjbGV7c3Ryb2tlOiNmZjk4MDB9Lm1hdC1wcm9ncmVzcy1zcGlubmVyLm1hdC13YXJuIGNpcmNsZSwubWF0LXNwaW5uZXIubWF0LXdhcm4gY2lyY2xle3N0cm9rZTojZjQ0MzM2fS5tYXQtcmFkaW8tb3V0ZXItY2lyY2xle2JvcmRlci1jb2xvcjojNjE2MTYxfS5tYXQtcmFkaW8tYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1yYWRpby1jaGVja2VkIC5tYXQtcmFkaW8tb3V0ZXItY2lyY2xle2JvcmRlci1jb2xvcjojZjU3YzAwfS5tYXQtcmFkaW8tYnV0dG9uLm1hdC1wcmltYXJ5IC5tYXQtcmFkaW8taW5uZXItY2lyY2xlLC5tYXQtcmFkaW8tYnV0dG9uLm1hdC1wcmltYXJ5IC5tYXQtcmFkaW8tcmlwcGxlIC5tYXQtcmlwcGxlLWVsZW1lbnQ6bm90KC5tYXQtcmFkaW8tcGVyc2lzdGVudC1yaXBwbGUpLC5tYXQtcmFkaW8tYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1yYWRpby1jaGVja2VkIC5tYXQtcmFkaW8tcGVyc2lzdGVudC1yaXBwbGUsLm1hdC1yYWRpby1idXR0b24ubWF0LXByaW1hcnk6YWN0aXZlIC5tYXQtcmFkaW8tcGVyc2lzdGVudC1yaXBwbGV7YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtcmFkaW8tYnV0dG9uLm1hdC1hY2NlbnQubWF0LXJhZGlvLWNoZWNrZWQgLm1hdC1yYWRpby1vdXRlci1jaXJjbGV7Ym9yZGVyLWNvbG9yOiNmZjk4MDB9Lm1hdC1yYWRpby1idXR0b24ubWF0LWFjY2VudCAubWF0LXJhZGlvLWlubmVyLWNpcmNsZSwubWF0LXJhZGlvLWJ1dHRvbi5tYXQtYWNjZW50IC5tYXQtcmFkaW8tcmlwcGxlIC5tYXQtcmlwcGxlLWVsZW1lbnQ6bm90KC5tYXQtcmFkaW8tcGVyc2lzdGVudC1yaXBwbGUpLC5tYXQtcmFkaW8tYnV0dG9uLm1hdC1hY2NlbnQubWF0LXJhZGlvLWNoZWNrZWQgLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZSwubWF0LXJhZGlvLWJ1dHRvbi5tYXQtYWNjZW50OmFjdGl2ZSAubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxle2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LXJhZGlvLWJ1dHRvbi5tYXQtd2Fybi5tYXQtcmFkaW8tY2hlY2tlZCAubWF0LXJhZGlvLW91dGVyLWNpcmNsZXtib3JkZXItY29sb3I6I2Y0NDMzNn0ubWF0LXJhZGlvLWJ1dHRvbi5tYXQtd2FybiAubWF0LXJhZGlvLWlubmVyLWNpcmNsZSwubWF0LXJhZGlvLWJ1dHRvbi5tYXQtd2FybiAubWF0LXJhZGlvLXJpcHBsZSAubWF0LXJpcHBsZS1lbGVtZW50Om5vdCgubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxlKSwubWF0LXJhZGlvLWJ1dHRvbi5tYXQtd2Fybi5tYXQtcmFkaW8tY2hlY2tlZCAubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxlLC5tYXQtcmFkaW8tYnV0dG9uLm1hdC13YXJuOmFjdGl2ZSAubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxle2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcmFkaW8tZGlzYWJsZWQubWF0LXJhZGlvLWNoZWNrZWQgLm1hdC1yYWRpby1vdXRlci1jaXJjbGUsLm1hdC1yYWRpby1idXR0b24ubWF0LXJhZGlvLWRpc2FibGVkIC5tYXQtcmFkaW8tb3V0ZXItY2lyY2xle2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1yYWRpby1idXR0b24ubWF0LXJhZGlvLWRpc2FibGVkIC5tYXQtcmFkaW8tcmlwcGxlIC5tYXQtcmlwcGxlLWVsZW1lbnQsLm1hdC1yYWRpby1idXR0b24ubWF0LXJhZGlvLWRpc2FibGVkIC5tYXQtcmFkaW8taW5uZXItY2lyY2xle2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtcmFkaW8tYnV0dG9uLm1hdC1yYWRpby1kaXNhYmxlZCAubWF0LXJhZGlvLWxhYmVsLWNvbnRlbnR7Y29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtcmFkaW8tYnV0dG9uIC5tYXQtcmlwcGxlLWVsZW1lbnR7YmFja2dyb3VuZC1jb2xvcjojMDAwfS5tYXQtc2VsZWN0LXZhbHVle2NvbG9yOiMyMTIxMjF9Lm1hdC1zZWxlY3QtcGxhY2Vob2xkZXJ7Y29sb3I6cmdiYSg5Nyw5Nyw5NywuNDIpfS5tYXQtc2VsZWN0LWRpc2FibGVkIC5tYXQtc2VsZWN0LXZhbHVle2NvbG9yOiM3NTc1NzV9Lm1hdC1zZWxlY3QtYXJyb3d7Y29sb3I6IzYxNjE2MX0ubWF0LXNlbGVjdC1wYW5lbHtiYWNrZ3JvdW5kOiNmZmZ9Lm1hdC1zZWxlY3QtcGFuZWw6bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggMnB4IDRweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNHB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDEwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1zZWxlY3QtcGFuZWwgLm1hdC1vcHRpb24ubWF0LXNlbGVjdGVkOm5vdCgubWF0LW9wdGlvbi1tdWx0aXBsZSl7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkLm1hdC1wcmltYXJ5IC5tYXQtc2VsZWN0LWFycm93e2NvbG9yOiNmNTdjMDB9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkLm1hdC1hY2NlbnQgLm1hdC1zZWxlY3QtYXJyb3d7Y29sb3I6I2ZmOTgwMH0ubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWQubWF0LXdhcm4gLm1hdC1zZWxlY3QtYXJyb3d7Y29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQgLm1hdC1zZWxlY3QubWF0LXNlbGVjdC1pbnZhbGlkIC5tYXQtc2VsZWN0LWFycm93e2NvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkIC5tYXQtc2VsZWN0Lm1hdC1zZWxlY3QtZGlzYWJsZWQgLm1hdC1zZWxlY3QtYXJyb3d7Y29sb3I6Izc1NzU3NX0ubWF0LWRyYXdlci1jb250YWluZXJ7YmFja2dyb3VuZC1jb2xvcjojZmZmO2NvbG9yOiMyMTIxMjF9Lm1hdC1kcmF3ZXJ7YmFja2dyb3VuZC1jb2xvcjojZmZmO2NvbG9yOiMyMTIxMjF9Lm1hdC1kcmF3ZXIubWF0LWRyYXdlci1wdXNoe2JhY2tncm91bmQtY29sb3I6I2ZmZn0ubWF0LWRyYXdlcjpub3QoLm1hdC1kcmF3ZXItc2lkZSl7Ym94LXNoYWRvdzowcHggOHB4IDEwcHggLTVweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDE2cHggMjRweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNnB4IDMwcHggNXB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1kcmF3ZXItc2lkZXtib3JkZXItcmlnaHQ6c29saWQgMXB4IHJnYmEoMCwwLDAsLjEyKX0ubWF0LWRyYXdlci1zaWRlLm1hdC1kcmF3ZXItZW5ke2JvcmRlci1sZWZ0OnNvbGlkIDFweCByZ2JhKDAsMCwwLC4xMik7Ym9yZGVyLXJpZ2h0Om5vbmV9W2Rpcj1ydGxdIC5tYXQtZHJhd2VyLXNpZGV7Ym9yZGVyLWxlZnQ6c29saWQgMXB4IHJnYmEoMCwwLDAsLjEyKTtib3JkZXItcmlnaHQ6bm9uZX1bZGlyPXJ0bF0gLm1hdC1kcmF3ZXItc2lkZS5tYXQtZHJhd2VyLWVuZHtib3JkZXItbGVmdDpub25lO2JvcmRlci1yaWdodDpzb2xpZCAxcHggcmdiYSgwLDAsMCwuMTIpfS5tYXQtZHJhd2VyLWJhY2tkcm9wLm1hdC1kcmF3ZXItc2hvd257YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC42KX0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtY2hlY2tlZCAubWF0LXNsaWRlLXRvZ2dsZS10aHVtYntiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1zbGlkZS10b2dnbGUubWF0LWNoZWNrZWQgLm1hdC1zbGlkZS10b2dnbGUtYmFye2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMTUyLDAsLjU0KX0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtY2hlY2tlZCAubWF0LXJpcHBsZS1lbGVtZW50e2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtcHJpbWFyeS5tYXQtY2hlY2tlZCAubWF0LXNsaWRlLXRvZ2dsZS10aHVtYntiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC1zbGlkZS10b2dnbGUubWF0LXByaW1hcnkubWF0LWNoZWNrZWQgLm1hdC1zbGlkZS10b2dnbGUtYmFye2JhY2tncm91bmQtY29sb3I6cmdiYSgyNDUsMTI0LDAsLjU0KX0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtcHJpbWFyeS5tYXQtY2hlY2tlZCAubWF0LXJpcHBsZS1lbGVtZW50e2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtd2Fybi5tYXQtY2hlY2tlZCAubWF0LXNsaWRlLXRvZ2dsZS10aHVtYntiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC1zbGlkZS10b2dnbGUubWF0LXdhcm4ubWF0LWNoZWNrZWQgLm1hdC1zbGlkZS10b2dnbGUtYmFye2JhY2tncm91bmQtY29sb3I6cmdiYSgyNDQsNjcsNTQsLjU0KX0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtd2Fybi5tYXQtY2hlY2tlZCAubWF0LXJpcHBsZS1lbGVtZW50e2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LXNsaWRlLXRvZ2dsZTpub3QoLm1hdC1jaGVja2VkKSAubWF0LXJpcHBsZS1lbGVtZW50e2JhY2tncm91bmQtY29sb3I6IzAwMH0ubWF0LXNsaWRlLXRvZ2dsZS10aHVtYntib3gtc2hhZG93OjBweCAycHggMXB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxcHggMXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggM3B4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpO2JhY2tncm91bmQtY29sb3I6I2ZhZmFmYX0ubWF0LXNsaWRlLXRvZ2dsZS1iYXJ7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1zbGlkZXItdHJhY2stYmFja2dyb3VuZHtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjI2KX0ubWF0LXByaW1hcnkgLm1hdC1zbGlkZXItdHJhY2stZmlsbCwubWF0LXByaW1hcnkgLm1hdC1zbGlkZXItdGh1bWIsLm1hdC1wcmltYXJ5IC5tYXQtc2xpZGVyLXRodW1iLWxhYmVse2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LXByaW1hcnkgLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dHtjb2xvcjojZmZmfS5tYXQtcHJpbWFyeSAubWF0LXNsaWRlci1mb2N1cy1yaW5ne2JhY2tncm91bmQtY29sb3I6cmdiYSgyNDUsMTI0LDAsLjIpfS5tYXQtYWNjZW50IC5tYXQtc2xpZGVyLXRyYWNrLWZpbGwsLm1hdC1hY2NlbnQgLm1hdC1zbGlkZXItdGh1bWIsLm1hdC1hY2NlbnQgLm1hdC1zbGlkZXItdGh1bWItbGFiZWx7YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtYWNjZW50IC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHR7Y29sb3I6I2ZmZn0ubWF0LWFjY2VudCAubWF0LXNsaWRlci1mb2N1cy1yaW5ne2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMTUyLDAsLjIpfS5tYXQtd2FybiAubWF0LXNsaWRlci10cmFjay1maWxsLC5tYXQtd2FybiAubWF0LXNsaWRlci10aHVtYiwubWF0LXdhcm4gLm1hdC1zbGlkZXItdGh1bWItbGFiZWx7YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtd2FybiAubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0e2NvbG9yOiNmZmZ9Lm1hdC13YXJuIC5tYXQtc2xpZGVyLWZvY3VzLXJpbmd7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI0NCw2Nyw1NCwuMil9Lm1hdC1zbGlkZXI6aG92ZXIgLm1hdC1zbGlkZXItdHJhY2stYmFja2dyb3VuZCwubWF0LXNsaWRlci5jZGstZm9jdXNlZCAubWF0LXNsaWRlci10cmFjay1iYWNrZ3JvdW5ke2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtc2xpZGVyLWRpc2FibGVkIC5tYXQtc2xpZGVyLXRyYWNrLWJhY2tncm91bmQsLm1hdC1zbGlkZXItZGlzYWJsZWQgLm1hdC1zbGlkZXItdHJhY2stZmlsbCwubWF0LXNsaWRlci1kaXNhYmxlZCAubWF0LXNsaWRlci10aHVtYntiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjI2KX0ubWF0LXNsaWRlci1kaXNhYmxlZDpob3ZlciAubWF0LXNsaWRlci10cmFjay1iYWNrZ3JvdW5ke2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMjYpfS5tYXQtc2xpZGVyLW1pbi12YWx1ZSAubWF0LXNsaWRlci1mb2N1cy1yaW5ne2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtc2xpZGVyLW1pbi12YWx1ZS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcgLm1hdC1zbGlkZXItdGh1bWIsLm1hdC1zbGlkZXItbWluLXZhbHVlLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZyAubWF0LXNsaWRlci10aHVtYi1sYWJlbHtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjg3KX0ubWF0LXNsaWRlci1taW4tdmFsdWUubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nLmNkay1mb2N1c2VkIC5tYXQtc2xpZGVyLXRodW1iLC5tYXQtc2xpZGVyLW1pbi12YWx1ZS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcuY2RrLWZvY3VzZWQgLm1hdC1zbGlkZXItdGh1bWItbGFiZWx7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4yNil9Lm1hdC1zbGlkZXItbWluLXZhbHVlOm5vdCgubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nKSAubWF0LXNsaWRlci10aHVtYntib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuMjYpO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnR9Lm1hdC1zbGlkZXItbWluLXZhbHVlOm5vdCgubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nKTpob3ZlciAubWF0LXNsaWRlci10aHVtYiwubWF0LXNsaWRlci1taW4tdmFsdWU6bm90KC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcpLmNkay1mb2N1c2VkIC5tYXQtc2xpZGVyLXRodW1ie2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1zbGlkZXItbWluLXZhbHVlOm5vdCgubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nKTpob3Zlci5tYXQtc2xpZGVyLWRpc2FibGVkIC5tYXQtc2xpZGVyLXRodW1iLC5tYXQtc2xpZGVyLW1pbi12YWx1ZTpub3QoLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZykuY2RrLWZvY3VzZWQubWF0LXNsaWRlci1kaXNhYmxlZCAubWF0LXNsaWRlci10aHVtYntib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuMjYpfS5tYXQtc2xpZGVyLWhhcy10aWNrcyAubWF0LXNsaWRlci13cmFwcGVyOjphZnRlcntib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuNyl9Lm1hdC1zbGlkZXItaG9yaXpvbnRhbCAubWF0LXNsaWRlci10aWNrc3tiYWNrZ3JvdW5kLWltYWdlOnJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHJnYmEoMCwgMCwgMCwgMC43KSwgcmdiYSgwLCAwLCAwLCAwLjcpIDJweCwgdHJhbnNwYXJlbnQgMCwgdHJhbnNwYXJlbnQpO2JhY2tncm91bmQtaW1hZ2U6LW1vei1yZXBlYXRpbmctbGluZWFyLWdyYWRpZW50KDAuMDAwMWRlZywgcmdiYSgwLCAwLCAwLCAwLjcpLCByZ2JhKDAsIDAsIDAsIDAuNykgMnB4LCB0cmFuc3BhcmVudCAwLCB0cmFuc3BhcmVudCl9Lm1hdC1zbGlkZXItdmVydGljYWwgLm1hdC1zbGlkZXItdGlja3N7YmFja2dyb3VuZC1pbWFnZTpyZXBlYXRpbmctbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgcmdiYSgwLCAwLCAwLCAwLjcpLCByZ2JhKDAsIDAsIDAsIDAuNykgMnB4LCB0cmFuc3BhcmVudCAwLCB0cmFuc3BhcmVudCl9Lm1hdC1zdGVwLWhlYWRlci5jZGsta2V5Ym9hcmQtZm9jdXNlZCwubWF0LXN0ZXAtaGVhZGVyLmNkay1wcm9ncmFtLWZvY3VzZWQsLm1hdC1zdGVwLWhlYWRlcjpob3Zlcjpub3QoW2FyaWEtZGlzYWJsZWRdKSwubWF0LXN0ZXAtaGVhZGVyOmhvdmVyW2FyaWEtZGlzYWJsZWQ9ZmFsc2Vde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMDQpfS5tYXQtc3RlcC1oZWFkZXI6aG92ZXJbYXJpYS1kaXNhYmxlZD10cnVlXXtjdXJzb3I6ZGVmYXVsdH1AbWVkaWEoaG92ZXI6IG5vbmUpey5tYXQtc3RlcC1oZWFkZXI6aG92ZXJ7YmFja2dyb3VuZDpub25lfX0ubWF0LXN0ZXAtaGVhZGVyIC5tYXQtc3RlcC1sYWJlbCwubWF0LXN0ZXAtaGVhZGVyIC5tYXQtc3RlcC1vcHRpb25hbHtjb2xvcjojNjE2MTYxfS5tYXQtc3RlcC1oZWFkZXIgLm1hdC1zdGVwLWljb257YmFja2dyb3VuZC1jb2xvcjojNjE2MTYxO2NvbG9yOiNmZmZ9Lm1hdC1zdGVwLWhlYWRlciAubWF0LXN0ZXAtaWNvbi1zZWxlY3RlZCwubWF0LXN0ZXAtaGVhZGVyIC5tYXQtc3RlcC1pY29uLXN0YXRlLWRvbmUsLm1hdC1zdGVwLWhlYWRlciAubWF0LXN0ZXAtaWNvbi1zdGF0ZS1lZGl0e2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMDtjb2xvcjojZmZmfS5tYXQtc3RlcC1oZWFkZXIubWF0LWFjY2VudCAubWF0LXN0ZXAtaWNvbntjb2xvcjojZmZmfS5tYXQtc3RlcC1oZWFkZXIubWF0LWFjY2VudCAubWF0LXN0ZXAtaWNvbi1zZWxlY3RlZCwubWF0LXN0ZXAtaGVhZGVyLm1hdC1hY2NlbnQgLm1hdC1zdGVwLWljb24tc3RhdGUtZG9uZSwubWF0LXN0ZXAtaGVhZGVyLm1hdC1hY2NlbnQgLm1hdC1zdGVwLWljb24tc3RhdGUtZWRpdHtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDA7Y29sb3I6I2ZmZn0ubWF0LXN0ZXAtaGVhZGVyLm1hdC13YXJuIC5tYXQtc3RlcC1pY29ue2NvbG9yOiNmZmZ9Lm1hdC1zdGVwLWhlYWRlci5tYXQtd2FybiAubWF0LXN0ZXAtaWNvbi1zZWxlY3RlZCwubWF0LXN0ZXAtaGVhZGVyLm1hdC13YXJuIC5tYXQtc3RlcC1pY29uLXN0YXRlLWRvbmUsLm1hdC1zdGVwLWhlYWRlci5tYXQtd2FybiAubWF0LXN0ZXAtaWNvbi1zdGF0ZS1lZGl0e2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNjtjb2xvcjojZmZmfS5tYXQtc3RlcC1oZWFkZXIgLm1hdC1zdGVwLWljb24tc3RhdGUtZXJyb3J7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtjb2xvcjojZjQ0MzM2fS5tYXQtc3RlcC1oZWFkZXIgLm1hdC1zdGVwLWxhYmVsLm1hdC1zdGVwLWxhYmVsLWFjdGl2ZXtjb2xvcjojMjEyMTIxfS5tYXQtc3RlcC1oZWFkZXIgLm1hdC1zdGVwLWxhYmVsLm1hdC1zdGVwLWxhYmVsLWVycm9ye2NvbG9yOiNmNDQzMzZ9Lm1hdC1zdGVwcGVyLWhvcml6b250YWwsLm1hdC1zdGVwcGVyLXZlcnRpY2Fse2JhY2tncm91bmQtY29sb3I6I2ZmZn0ubWF0LXN0ZXBwZXItdmVydGljYWwtbGluZTo6YmVmb3Jle2JvcmRlci1sZWZ0LWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWhvcml6b250YWwtc3RlcHBlci1oZWFkZXI6OmJlZm9yZSwubWF0LWhvcml6b250YWwtc3RlcHBlci1oZWFkZXI6OmFmdGVyLC5tYXQtc3RlcHBlci1ob3Jpem9udGFsLWxpbmV7Ym9yZGVyLXRvcC1jb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1ob3Jpem9udGFsLXN0ZXBwZXItaGVhZGVye2hlaWdodDo3MnB4fS5tYXQtc3RlcHBlci1sYWJlbC1wb3NpdGlvbi1ib3R0b20gLm1hdC1ob3Jpem9udGFsLXN0ZXBwZXItaGVhZGVyLC5tYXQtdmVydGljYWwtc3RlcHBlci1oZWFkZXJ7cGFkZGluZzoyNHB4IDI0cHh9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsLWxpbmU6OmJlZm9yZXt0b3A6LTE2cHg7Ym90dG9tOi0xNnB4fS5tYXQtc3RlcHBlci1sYWJlbC1wb3NpdGlvbi1ib3R0b20gLm1hdC1ob3Jpem9udGFsLXN0ZXBwZXItaGVhZGVyOjphZnRlciwubWF0LXN0ZXBwZXItbGFiZWwtcG9zaXRpb24tYm90dG9tIC5tYXQtaG9yaXpvbnRhbC1zdGVwcGVyLWhlYWRlcjo6YmVmb3Jle3RvcDozNnB4fS5tYXQtc3RlcHBlci1sYWJlbC1wb3NpdGlvbi1ib3R0b20gLm1hdC1zdGVwcGVyLWhvcml6b250YWwtbGluZXt0b3A6MzZweH0ubWF0LXNvcnQtaGVhZGVyLWFycm93e2NvbG9yOiM2MTYxNjF9Lm1hdC10YWItbmF2LWJhciwubWF0LXRhYi1oZWFkZXJ7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgcmdiYSgwLDAsMCwuMTIpfS5tYXQtdGFiLWdyb3VwLWludmVydGVkLWhlYWRlciAubWF0LXRhYi1uYXYtYmFyLC5tYXQtdGFiLWdyb3VwLWludmVydGVkLWhlYWRlciAubWF0LXRhYi1oZWFkZXJ7Ym9yZGVyLXRvcDoxcHggc29saWQgcmdiYSgwLDAsMCwuMTIpO2JvcmRlci1ib3R0b206bm9uZX0ubWF0LXRhYi1sYWJlbCwubWF0LXRhYi1saW5re2NvbG9yOiMyMTIxMjF9Lm1hdC10YWItbGFiZWwubWF0LXRhYi1kaXNhYmxlZCwubWF0LXRhYi1saW5rLm1hdC10YWItZGlzYWJsZWR7Y29sb3I6Izc1NzU3NX0ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9ue2JvcmRlci1jb2xvcjojMjEyMTIxfS5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb257Ym9yZGVyLWNvbG9yOiM3NTc1NzV9Lm1hdC10YWItZ3JvdXBbY2xhc3MqPW1hdC1iYWNrZ3JvdW5kLV0gLm1hdC10YWItaGVhZGVyLC5tYXQtdGFiLW5hdi1iYXJbY2xhc3MqPW1hdC1iYWNrZ3JvdW5kLV17Ym9yZGVyLWJvdHRvbTpub25lO2JvcmRlci10b3A6bm9uZX0ubWF0LXRhYi1ncm91cC5tYXQtcHJpbWFyeSAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLC5tYXQtdGFiLWdyb3VwLm1hdC1wcmltYXJ5IC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSwubWF0LXRhYi1ncm91cC5tYXQtcHJpbWFyeSAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksLm1hdC10YWItZ3JvdXAubWF0LXByaW1hcnkgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksLm1hdC10YWItbmF2LWJhci5tYXQtcHJpbWFyeSAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLC5tYXQtdGFiLW5hdi1iYXIubWF0LXByaW1hcnkgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLC5tYXQtdGFiLW5hdi1iYXIubWF0LXByaW1hcnkgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLC5tYXQtdGFiLW5hdi1iYXIubWF0LXByaW1hcnkgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCl7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwxNjcsMzgsLjMpfS5tYXQtdGFiLWdyb3VwLm1hdC1wcmltYXJ5IC5tYXQtaW5rLWJhciwubWF0LXRhYi1uYXYtYmFyLm1hdC1wcmltYXJ5IC5tYXQtaW5rLWJhcntiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC10YWItZ3JvdXAubWF0LXByaW1hcnkubWF0LWJhY2tncm91bmQtcHJpbWFyeT4ubWF0LXRhYi1oZWFkZXIgLm1hdC1pbmstYmFyLC5tYXQtdGFiLWdyb3VwLm1hdC1wcmltYXJ5Lm1hdC1iYWNrZ3JvdW5kLXByaW1hcnk+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+Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24gLm1hdC1yaXBwbGUtZWxlbWVudHtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEyKX0ubWF0LXRvb2xiYXJ7YmFja2dyb3VuZDojZjU3YzAwO2NvbG9yOiMyMTIxMjF9Lm1hdC10b29sYmFyLm1hdC1wcmltYXJ5e2JhY2tncm91bmQ6I2Y1N2MwMDtjb2xvcjojZmZmfS5tYXQtdG9vbGJhci5tYXQtYWNjZW50e2JhY2tncm91bmQ6I2ZmOTgwMDtjb2xvcjojZmZmfS5tYXQtdG9vbGJhci5tYXQtd2FybntiYWNrZ3JvdW5kOiNmNDQzMzY7Y29sb3I6I2ZmZn0ubWF0LXRvb2xiYXIgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZSwubWF0LXRvb2xiYXIgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZSwubWF0LXRvb2xiYXIgLm1hdC1mb2N1c2VkIC5tYXQtZm9ybS1maWVsZC1yaXBwbGV7YmFja2dyb3VuZC1jb2xvcjpjdXJyZW50Q29sb3J9Lm1hdC10b29sYmFyIC5tYXQtZm9ybS1maWVsZC1sYWJlbCwubWF0LXRvb2xiYXIgLm1hdC1mb2N1c2VkIC5tYXQtZm9ybS1maWVsZC1sYWJlbCwubWF0LXRvb2xiYXIgLm1hdC1zZWxlY3QtdmFsdWUsLm1hdC10b29sYmFyIC5tYXQtc2VsZWN0LWFycm93LC5tYXQtdG9vbGJhciAubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWQgLm1hdC1zZWxlY3QtYXJyb3d7Y29sb3I6aW5oZXJpdH0ubWF0LXRvb2xiYXIgLm1hdC1pbnB1dC1lbGVtZW50e2NhcmV0LWNvbG9yOmN1cnJlbnRDb2xvcn0ubWF0LXRvb2xiYXItbXVsdGlwbGUtcm93c3ttaW4taGVpZ2h0OjY0cHh9Lm1hdC10b29sYmFyLXJvdywubWF0LXRvb2xiYXItc2luZ2xlLXJvd3toZWlnaHQ6NjRweH1AbWVkaWEobWF4LXdpZHRoOiA1OTlweCl7Lm1hdC10b29sYmFyLW11bHRpcGxlLXJvd3N7bWluLWhlaWdodDo1NnB4fS5tYXQtdG9vbGJhci1yb3csLm1hdC10b29sYmFyLXNpbmdsZS1yb3d7aGVpZ2h0OjU2cHh9fS5tYXQtdG9vbHRpcHtiYWNrZ3JvdW5kOnJnYmEoOTcsOTcsOTcsLjkpfS5tYXQtdHJlZXtiYWNrZ3JvdW5kOiNmZmZ9Lm1hdC10cmVlLW5vZGUsLm1hdC1uZXN0ZWQtdHJlZS1ub2Rle2NvbG9yOiMyMTIxMjF9Lm1hdC10cmVlLW5vZGV7bWluLWhlaWdodDo0OHB4fS5tYXQtc25hY2stYmFyLWNvbnRhaW5lcntjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KTtiYWNrZ3JvdW5kOiMzMjMyMzI7Ym94LXNoYWRvdzowcHggM3B4IDVweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNnB4IDEwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxOHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbntjb2xvcjojZmY5ODAwfWJvZHl7b3ZlcmZsb3c6aGlkZGVufS5jZGstb3ZlcmxheS1jb250YWluZXJ7Y29udGFpbjpzdHJpY3R9YTpub3QoLm1hdC1idXR0b24sLm1hdC1pY29uLWJ1dHRvbil7Y29sb3I6IzE5NzZkMn1hOm5vdCgubWF0LWJ1dHRvbiwubWF0LWljb24tYnV0dG9uKTp2aXNpdGVke2NvbG9yOiM3YjFmYTJ9Ym9keS5kYXJrLW1vZGV7YmFja2dyb3VuZC1jb2xvcjojMzAzMDMwfWJvZHkuZGFyay1tb2RlIGE6bm90KC5tYXQtYnV0dG9uLC5tYXQtaWNvbi1idXR0b24pe2NvbG9yOiM0MmE1ZjV9Ym9keS5kYXJrLW1vZGUgYTpub3QoLm1hdC1idXR0b24sLm1hdC1pY29uLWJ1dHRvbik6dmlzaXRlZHtjb2xvcjojYmE2OGM4fWJvZHkuZGFyay1tb2RlIC5tYXQtcmlwcGxlLWVsZW1lbnR7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xKX1ib2R5LmRhcmstbW9kZSAubWF0LW9wdGlvbntjb2xvcjojZmZmfWJvZHkuZGFyay1tb2RlIC5tYXQtb3B0aW9uOmhvdmVyOm5vdCgubWF0LW9wdGlvbi1kaXNhYmxlZCksYm9keS5kYXJrLW1vZGUgLm1hdC1vcHRpb246Zm9jdXM6bm90KC5tYXQtb3B0aW9uLWRpc2FibGVkKXtiYWNrZ3JvdW5kOnJnYmEoMjU1LDI1NSwyNTUsLjA0KX1ib2R5LmRhcmstbW9kZSAubWF0LW9wdGlvbi5tYXQtc2VsZWN0ZWQ6bm90KC5tYXQtb3B0aW9uLW11bHRpcGxlKTpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpe2JhY2tncm91bmQ6cmdiYSgyNTUsMjU1LDI1NSwuMDQpfWJvZHkuZGFyay1tb2RlIC5tYXQtb3B0aW9uLm1hdC1hY3RpdmV7YmFja2dyb3VuZDpyZ2JhKDI1NSwyNTUsMjU1LC4wNCk7Y29sb3I6I2ZmZn1ib2R5LmRhcmstbW9kZSAubWF0LW9wdGlvbi5tYXQtb3B0aW9uLWRpc2FibGVke2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjUpfWJvZHkuZGFyay1tb2RlIC5tYXQtcHJpbWFyeSAubWF0LW9wdGlvbi5tYXQtc2VsZWN0ZWQ6bm90KC5tYXQtb3B0aW9uLWRpc2FibGVkKXtjb2xvcjojZWY2YzAwfWJvZHkuZGFyay1tb2RlIC5tYXQtYWNjZW50IC5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZDpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpe2NvbG9yOiNlZjZjMDB9Ym9keS5kYXJrLW1vZGUgLm1hdC13YXJuIC5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZDpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpe2NvbG9yOiNmNDQzMzZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1vcHRncm91cC1sYWJlbHtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KX1ib2R5LmRhcmstbW9kZSAubWF0LW9wdGdyb3VwLWRpc2FibGVkIC5tYXQtb3B0Z3JvdXAtbGFiZWx7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNSl9Ym9keS5kYXJrLW1vZGUgLm1hdC1wc2V1ZG8tY2hlY2tib3h7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNyl9Ym9keS5kYXJrLW1vZGUgLm1hdC1wc2V1ZG8tY2hlY2tib3g6OmFmdGVye2NvbG9yOiMzMDMwMzB9Ym9keS5kYXJrLW1vZGUgLm1hdC1wc2V1ZG8tY2hlY2tib3gtZGlzYWJsZWR7Y29sb3I6IzY4Njg2OH1ib2R5LmRhcmstbW9kZSAubWF0LXByaW1hcnkgLm1hdC1wc2V1ZG8tY2hlY2tib3gtY2hlY2tlZCxib2R5LmRhcmstbW9kZSAubWF0LXByaW1hcnkgLm1hdC1wc2V1ZG8tY2hlY2tib3gtaW5kZXRlcm1pbmF0ZXtiYWNrZ3JvdW5kOiNlZjZjMDB9Ym9keS5kYXJrLW1vZGUgLm1hdC1wc2V1ZG8tY2hlY2tib3gtY2hlY2tlZCxib2R5LmRhcmstbW9kZSAubWF0LXBzZXVkby1jaGVja2JveC1pbmRldGVybWluYXRlLGJvZHkuZGFyay1tb2RlIC5tYXQtYWNjZW50IC5tYXQtcHNldWRvLWNoZWNrYm94LWNoZWNrZWQsYm9keS5kYXJrLW1vZGUgLm1hdC1hY2NlbnQgLm1hdC1wc2V1ZG8tY2hlY2tib3gtaW5kZXRlcm1pbmF0ZXtiYWNrZ3JvdW5kOiNlZjZjMDB9Ym9keS5kYXJrLW1vZGUgLm1hdC13YXJuIC5tYXQtcHNldWRvLWNoZWNrYm94LWNoZWNrZWQsYm9keS5kYXJrLW1vZGUgLm1hdC13YXJuIC5tYXQtcHNldWRvLWNoZWNrYm94LWluZGV0ZXJtaW5hdGV7YmFja2dyb3VuZDojZjQ0MzM2fWJvZHkuZGFyay1tb2RlIC5tYXQtcHNldWRvLWNoZWNrYm94LWNoZWNrZWQubWF0LXBzZXVkby1jaGVja2JveC1kaXNhYmxlZCxib2R5LmRhcmstbW9kZSAubWF0LXBzZXVkby1jaGVja2JveC1pbmRldGVybWluYXRlLm1hdC1wc2V1ZG8tY2hlY2tib3gtZGlzYWJsZWR7YmFja2dyb3VuZDojNjg2ODY4fWJvZHkuZGFyay1tb2RlIC5tYXQtYXBwLWJhY2tncm91bmQsYm9keS5kYXJrLW1vZGUubWF0LWFwcC1iYWNrZ3JvdW5ke2JhY2tncm91bmQtY29sb3I6IzMwMzAzMDtjb2xvcjojZmZmfWJvZHkuZGFyay1tb2RlIC5tYXQtZWxldmF0aW9uLXowe2JveC1zaGFkb3c6MHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX1ib2R5LmRhcmstbW9kZSAubWF0LWVsZXZhdGlvbi16MXtib3gtc2hhZG93OjBweCAycHggMXB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxcHggMXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggM3B4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfWJvZHkuZGFyay1tb2RlIC5tYXQtZWxldmF0aW9uLXoye2JveC1zaGFkb3c6MHB4IDNweCAxcHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDJweCAycHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Ym9keS5kYXJrLW1vZGUgLm1hdC1lbGV2YXRpb24tejN7Ym94LXNoYWRvdzowcHggM3B4IDNweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggM3B4IDRweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDhweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX1ib2R5LmRhcmstbW9kZSAubWF0LWVsZXZhdGlvbi16NHtib3gtc2hhZG93OjBweCAycHggNHB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA0cHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggMTBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX1ib2R5LmRhcmstbW9kZSAubWF0LWVsZXZhdGlvbi16NXtib3gtc2hhZG93OjBweCAzcHggNXB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA1cHggOHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggMTRweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX1ib2R5LmRhcmstbW9kZSAubWF0LWVsZXZhdGlvbi16Nntib3gtc2hhZG93OjBweCAzcHggNXB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA2cHggMTBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDE4cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Ym9keS5kYXJrLW1vZGUgLm1hdC1lbGV2YXRpb24tejd7Ym94LXNoYWRvdzowcHggNHB4IDVweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggN3B4IDEwcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDJweCAxNnB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMTIpfWJvZHkuZGFyay1tb2RlIC5tYXQtZWxldmF0aW9uLXo4e2JveC1zaGFkb3c6MHB4IDVweCA1cHggLTNweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDhweCAxMHB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAzcHggMTRweCAycHggcmdiYSgwLCAwLCAwLCAwLjEyKX1ib2R5LmRhcmstbW9kZSAubWF0LWVsZXZhdGlvbi16OXtib3gtc2hhZG93OjBweCA1cHggNnB4IC0zcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA5cHggMTJweCAxcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggM3B4IDE2cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Ym9keS5kYXJrLW1vZGUgLm1hdC1lbGV2YXRpb24tejEwe2JveC1zaGFkb3c6MHB4IDZweCA2cHggLTNweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDEwcHggMTRweCAxcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNHB4IDE4cHggM3B4IHJnYmEoMCwgMCwgMCwgMC4xMil9Ym9keS5kYXJrLW1vZGUgLm1hdC1lbGV2YXRpb24tejExe2JveC1zaGFkb3c6MHB4IDZweCA3cHggLTRweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDExcHggMTVweCAxcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNHB4IDIwcHggM3B4IHJnYmEoMCwgMCwgMCwgMC4xMil9Ym9keS5kYXJrLW1vZGUgLm1hdC1lbGV2YXRpb24tejEye2JveC1zaGFkb3c6MHB4IDdweCA4cHggLTRweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDEycHggMTdweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNXB4IDIycHggNHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Ym9keS5kYXJrLW1vZGUgLm1hdC1lbGV2YXRpb24tejEze2JveC1zaGFkb3c6MHB4IDdweCA4cHggLTRweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDEzcHggMTlweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNXB4IDI0cHggNHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Ym9keS5kYXJrLW1vZGUgLm1hdC1lbGV2YXRpb24tejE0e2JveC1zaGFkb3c6MHB4IDdweCA5cHggLTRweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDE0cHggMjFweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNXB4IDI2cHggNHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Ym9keS5kYXJrLW1vZGUgLm1hdC1lbGV2YXRpb24tejE1e2JveC1zaGFkb3c6MHB4IDhweCA5cHggLTVweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDE1cHggMjJweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNnB4IDI4cHggNXB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Ym9keS5kYXJrLW1vZGUgLm1hdC1lbGV2YXRpb24tejE2e2JveC1zaGFkb3c6MHB4IDhweCAxMHB4IC01cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxNnB4IDI0cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDZweCAzMHB4IDVweCByZ2JhKDAsIDAsIDAsIDAuMTIpfWJvZHkuZGFyay1tb2RlIC5tYXQtZWxldmF0aW9uLXoxN3tib3gtc2hhZG93OjBweCA4cHggMTFweCAtNXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTdweCAyNnB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA2cHggMzJweCA1cHggcmdiYSgwLCAwLCAwLCAwLjEyKX1ib2R5LmRhcmstbW9kZSAubWF0LWVsZXZhdGlvbi16MTh7Ym94LXNoYWRvdzowcHggOXB4IDExcHggLTVweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDE4cHggMjhweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggN3B4IDM0cHggNnB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Ym9keS5kYXJrLW1vZGUgLm1hdC1lbGV2YXRpb24tejE5e2JveC1zaGFkb3c6MHB4IDlweCAxMnB4IC02cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxOXB4IDI5cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDdweCAzNnB4IDZweCByZ2JhKDAsIDAsIDAsIDAuMTIpfWJvZHkuZGFyay1tb2RlIC5tYXQtZWxldmF0aW9uLXoyMHtib3gtc2hhZG93OjBweCAxMHB4IDEzcHggLTZweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDIwcHggMzFweCAzcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggOHB4IDM4cHggN3B4IHJnYmEoMCwgMCwgMCwgMC4xMil9Ym9keS5kYXJrLW1vZGUgLm1hdC1lbGV2YXRpb24tejIxe2JveC1zaGFkb3c6MHB4IDEwcHggMTNweCAtNnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMjFweCAzM3B4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA4cHggNDBweCA3cHggcmdiYSgwLCAwLCAwLCAwLjEyKX1ib2R5LmRhcmstbW9kZSAubWF0LWVsZXZhdGlvbi16MjJ7Ym94LXNoYWRvdzowcHggMTBweCAxNHB4IC02cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAyMnB4IDM1cHggM3B4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDhweCA0MnB4IDdweCByZ2JhKDAsIDAsIDAsIDAuMTIpfWJvZHkuZGFyay1tb2RlIC5tYXQtZWxldmF0aW9uLXoyM3tib3gtc2hhZG93OjBweCAxMXB4IDE0cHggLTdweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDIzcHggMzZweCAzcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggOXB4IDQ0cHggOHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Ym9keS5kYXJrLW1vZGUgLm1hdC1lbGV2YXRpb24tejI0e2JveC1zaGFkb3c6MHB4IDExcHggMTVweCAtN3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMjRweCAzOHB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA5cHggNDZweCA4cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LXRoZW1lLWxvYWRlZC1tYXJrZXJ7ZGlzcGxheTpub25lfWJvZHkuZGFyay1tb2RlIC5tYXQtYXV0b2NvbXBsZXRlLXBhbmVse2JhY2tncm91bmQ6IzQyNDI0Mjtjb2xvcjojZmZmfWJvZHkuZGFyay1tb2RlIC5tYXQtYXV0b2NvbXBsZXRlLXBhbmVsOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDJweCA0cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDRweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfWJvZHkuZGFyay1tb2RlIC5tYXQtYXV0b2NvbXBsZXRlLXBhbmVsIC5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZDpub3QoLm1hdC1hY3RpdmUpOm5vdCg6aG92ZXIpe2JhY2tncm91bmQ6IzQyNDI0Mn1ib2R5LmRhcmstbW9kZSAubWF0LWF1dG9jb21wbGV0ZS1wYW5lbCAubWF0LW9wdGlvbi5tYXQtc2VsZWN0ZWQ6bm90KC5tYXQtYWN0aXZlKTpub3QoOmhvdmVyKTpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpe2NvbG9yOiNmZmZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1iYWRnZS1jb250ZW50e2NvbG9yOiNmZmY7YmFja2dyb3VuZDojZWY2YzAwfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgYm9keS5kYXJrLW1vZGUgLm1hdC1iYWRnZS1jb250ZW50e291dGxpbmU6c29saWQgMXB4O2JvcmRlci1yYWRpdXM6MH1ib2R5LmRhcmstbW9kZSAubWF0LWJhZGdlLWFjY2VudCAubWF0LWJhZGdlLWNvbnRlbnR7YmFja2dyb3VuZDojZWY2YzAwO2NvbG9yOiNmZmZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1iYWRnZS13YXJuIC5tYXQtYmFkZ2UtY29udGVudHtjb2xvcjojZmZmO2JhY2tncm91bmQ6I2Y0NDMzNn1ib2R5LmRhcmstbW9kZSAubWF0LWJhZGdlLWRpc2FibGVkIC5tYXQtYmFkZ2UtY29udGVudHtiYWNrZ3JvdW5kOiM2ZTZlNmU7Y29sb3I6IzYxNjE2MX1ib2R5LmRhcmstbW9kZSAubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJ7Ym94LXNoYWRvdzowcHggOHB4IDEwcHggLTVweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDE2cHggMjRweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNnB4IDMwcHggNXB4IHJnYmEoMCwgMCwgMCwgMC4xMik7YmFja2dyb3VuZDojNDI0MjQyO2NvbG9yOiNmZmZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1idXR0b24sYm9keS5kYXJrLW1vZGUgLm1hdC1pY29uLWJ1dHRvbixib2R5LmRhcmstbW9kZSAubWF0LXN0cm9rZWQtYnV0dG9ue2NvbG9yOmluaGVyaXQ7YmFja2dyb3VuZDp0cmFuc3BhcmVudH1ib2R5LmRhcmstbW9kZSAubWF0LWJ1dHRvbi5tYXQtcHJpbWFyeSxib2R5LmRhcmstbW9kZSAubWF0LWljb24tYnV0dG9uLm1hdC1wcmltYXJ5LGJvZHkuZGFyay1tb2RlIC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LXByaW1hcnl7Y29sb3I6I2VmNmMwMH1ib2R5LmRhcmstbW9kZSAubWF0LWJ1dHRvbi5tYXQtYWNjZW50LGJvZHkuZGFyay1tb2RlIC5tYXQtaWNvbi1idXR0b24ubWF0LWFjY2VudCxib2R5LmRhcmstbW9kZSAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC1hY2NlbnR7Y29sb3I6I2VmNmMwMH1ib2R5LmRhcmstbW9kZSAubWF0LWJ1dHRvbi5tYXQtd2Fybixib2R5LmRhcmstbW9kZSAubWF0LWljb24tYnV0dG9uLm1hdC13YXJuLGJvZHkuZGFyay1tb2RlIC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LXdhcm57Y29sb3I6I2Y0NDMzNn1ib2R5LmRhcmstbW9kZSAubWF0LWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkLGJvZHkuZGFyay1tb2RlIC5tYXQtYnV0dG9uLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZCxib2R5LmRhcmstbW9kZSAubWF0LWJ1dHRvbi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkLGJvZHkuZGFyay1tb2RlIC5tYXQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZCxib2R5LmRhcmstbW9kZSAubWF0LWljb24tYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWQsYm9keS5kYXJrLW1vZGUgLm1hdC1pY29uLWJ1dHRvbi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWQsYm9keS5kYXJrLW1vZGUgLm1hdC1pY29uLWJ1dHRvbi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkLGJvZHkuZGFyay1tb2RlIC5tYXQtaWNvbi1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkLGJvZHkuZGFyay1tb2RlIC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZCxib2R5LmRhcmstbW9kZSAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZCxib2R5LmRhcmstbW9kZSAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWQsYm9keS5kYXJrLW1vZGUgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWR7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMyl9Ym9keS5kYXJrLW1vZGUgLm1hdC1idXR0b24ubWF0LXByaW1hcnkgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheSxib2R5LmRhcmstbW9kZSAubWF0LWljb24tYnV0dG9uLm1hdC1wcmltYXJ5IC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXksYm9keS5kYXJrLW1vZGUgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtcHJpbWFyeSAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5e2JhY2tncm91bmQtY29sb3I6I2VmNmMwMH1ib2R5LmRhcmstbW9kZSAubWF0LWJ1dHRvbi5tYXQtYWNjZW50IC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXksYm9keS5kYXJrLW1vZGUgLm1hdC1pY29uLWJ1dHRvbi5tYXQtYWNjZW50IC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXksYm9keS5kYXJrLW1vZGUgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtYWNjZW50IC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXl7YmFja2dyb3VuZC1jb2xvcjojZWY2YzAwfWJvZHkuZGFyay1tb2RlIC5tYXQtYnV0dG9uLm1hdC13YXJuIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXksYm9keS5kYXJrLW1vZGUgLm1hdC1pY29uLWJ1dHRvbi5tYXQtd2FybiAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5LGJvZHkuZGFyay1tb2RlIC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LXdhcm4gLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZCAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5LGJvZHkuZGFyay1tb2RlIC5tYXQtaWNvbi1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZCAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5LGJvZHkuZGFyay1tb2RlIC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZCAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5e2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnR9Ym9keS5kYXJrLW1vZGUgLm1hdC1idXR0b24gLm1hdC1yaXBwbGUtZWxlbWVudCxib2R5LmRhcmstbW9kZSAubWF0LWljb24tYnV0dG9uIC5tYXQtcmlwcGxlLWVsZW1lbnQsYm9keS5kYXJrLW1vZGUgLm1hdC1zdHJva2VkLWJ1dHRvbiAubWF0LXJpcHBsZS1lbGVtZW50e29wYWNpdHk6LjE7YmFja2dyb3VuZC1jb2xvcjpjdXJyZW50Q29sb3J9Ym9keS5kYXJrLW1vZGUgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheXtiYWNrZ3JvdW5kOiNmZmZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1zdHJva2VkLWJ1dHRvbjpub3QoLm1hdC1idXR0b24tZGlzYWJsZWQpe2JvcmRlci1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xMil9Ym9keS5kYXJrLW1vZGUgLm1hdC1mbGF0LWJ1dHRvbixib2R5LmRhcmstbW9kZSAubWF0LXJhaXNlZC1idXR0b24sYm9keS5kYXJrLW1vZGUgLm1hdC1mYWIsYm9keS5kYXJrLW1vZGUgLm1hdC1taW5pLWZhYntjb2xvcjojZmZmO2JhY2tncm91bmQtY29sb3I6IzQyNDI0Mn1ib2R5LmRhcmstbW9kZSAubWF0LWZsYXQtYnV0dG9uLm1hdC1wcmltYXJ5LGJvZHkuZGFyay1tb2RlIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtcHJpbWFyeSxib2R5LmRhcmstbW9kZSAubWF0LWZhYi5tYXQtcHJpbWFyeSxib2R5LmRhcmstbW9kZSAubWF0LW1pbmktZmFiLm1hdC1wcmltYXJ5e2NvbG9yOiNmZmZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1mbGF0LWJ1dHRvbi5tYXQtYWNjZW50LGJvZHkuZGFyay1tb2RlIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtYWNjZW50LGJvZHkuZGFyay1tb2RlIC5tYXQtZmFiLm1hdC1hY2NlbnQsYm9keS5kYXJrLW1vZGUgLm1hdC1taW5pLWZhYi5tYXQtYWNjZW50e2NvbG9yOiNmZmZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1mbGF0LWJ1dHRvbi5tYXQtd2Fybixib2R5LmRhcmstbW9kZSAubWF0LXJhaXNlZC1idXR0b24ubWF0LXdhcm4sYm9keS5kYXJrLW1vZGUgLm1hdC1mYWIubWF0LXdhcm4sYm9keS5kYXJrLW1vZGUgLm1hdC1taW5pLWZhYi5tYXQtd2Fybntjb2xvcjojZmZmfWJvZHkuZGFyay1tb2RlIC5tYXQtZmxhdC1idXR0b24ubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZCxib2R5LmRhcmstbW9kZSAubWF0LWZsYXQtYnV0dG9uLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZCxib2R5LmRhcmstbW9kZSAubWF0LWZsYXQtYnV0dG9uLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWQsYm9keS5kYXJrLW1vZGUgLm1hdC1mbGF0LWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWQsYm9keS5kYXJrLW1vZGUgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWQsYm9keS5kYXJrLW1vZGUgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZCxib2R5LmRhcmstbW9kZSAubWF0LXJhaXNlZC1idXR0b24ubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZCxib2R5LmRhcmstbW9kZSAubWF0LXJhaXNlZC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkLGJvZHkuZGFyay1tb2RlIC5tYXQtZmFiLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWQsYm9keS5kYXJrLW1vZGUgLm1hdC1mYWIubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkLGJvZHkuZGFyay1tb2RlIC5tYXQtZmFiLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWQsYm9keS5kYXJrLW1vZGUgLm1hdC1mYWIubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkLGJvZHkuZGFyay1tb2RlIC5tYXQtbWluaS1mYWIubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZCxib2R5LmRhcmstbW9kZSAubWF0LW1pbmktZmFiLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZCxib2R5LmRhcmstbW9kZSAubWF0LW1pbmktZmFiLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWQsYm9keS5kYXJrLW1vZGUgLm1hdC1taW5pLWZhYi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWR7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMyl9Ym9keS5kYXJrLW1vZGUgLm1hdC1mbGF0LWJ1dHRvbi5tYXQtcHJpbWFyeSxib2R5LmRhcmstbW9kZSAubWF0LXJhaXNlZC1idXR0b24ubWF0LXByaW1hcnksYm9keS5kYXJrLW1vZGUgLm1hdC1mYWIubWF0LXByaW1hcnksYm9keS5kYXJrLW1vZGUgLm1hdC1taW5pLWZhYi5tYXQtcHJpbWFyeXtiYWNrZ3JvdW5kLWNvbG9yOiNlZjZjMDB9Ym9keS5kYXJrLW1vZGUgLm1hdC1mbGF0LWJ1dHRvbi5tYXQtYWNjZW50LGJvZHkuZGFyay1tb2RlIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtYWNjZW50LGJvZHkuZGFyay1tb2RlIC5tYXQtZmFiLm1hdC1hY2NlbnQsYm9keS5kYXJrLW1vZGUgLm1hdC1taW5pLWZhYi5tYXQtYWNjZW50e2JhY2tncm91bmQtY29sb3I6I2VmNmMwMH1ib2R5LmRhcmstbW9kZSAubWF0LWZsYXQtYnV0dG9uLm1hdC13YXJuLGJvZHkuZGFyay1tb2RlIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtd2Fybixib2R5LmRhcmstbW9kZSAubWF0LWZhYi5tYXQtd2Fybixib2R5LmRhcmstbW9kZSAubWF0LW1pbmktZmFiLm1hdC13YXJue2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn1ib2R5LmRhcmstbW9kZSAubWF0LWZsYXQtYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWQsYm9keS5kYXJrLW1vZGUgLm1hdC1mbGF0LWJ1dHRvbi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWQsYm9keS5kYXJrLW1vZGUgLm1hdC1mbGF0LWJ1dHRvbi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkLGJvZHkuZGFyay1tb2RlIC5tYXQtZmxhdC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkLGJvZHkuZGFyay1tb2RlIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkLGJvZHkuZGFyay1tb2RlIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWQsYm9keS5kYXJrLW1vZGUgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWQsYm9keS5kYXJrLW1vZGUgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZCxib2R5LmRhcmstbW9kZSAubWF0LWZhYi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkLGJvZHkuZGFyay1tb2RlIC5tYXQtZmFiLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZCxib2R5LmRhcmstbW9kZSAubWF0LWZhYi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkLGJvZHkuZGFyay1tb2RlIC5tYXQtZmFiLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZCxib2R5LmRhcmstbW9kZSAubWF0LW1pbmktZmFiLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWQsYm9keS5kYXJrLW1vZGUgLm1hdC1taW5pLWZhYi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWQsYm9keS5kYXJrLW1vZGUgLm1hdC1taW5pLWZhYi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkLGJvZHkuZGFyay1tb2RlIC5tYXQtbWluaS1mYWIubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVke2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMTIpfWJvZHkuZGFyay1tb2RlIC5tYXQtZmxhdC1idXR0b24ubWF0LXByaW1hcnkgLm1hdC1yaXBwbGUtZWxlbWVudCxib2R5LmRhcmstbW9kZSAubWF0LXJhaXNlZC1idXR0b24ubWF0LXByaW1hcnkgLm1hdC1yaXBwbGUtZWxlbWVudCxib2R5LmRhcmstbW9kZSAubWF0LWZhYi5tYXQtcHJpbWFyeSAubWF0LXJpcHBsZS1lbGVtZW50LGJvZHkuZGFyay1tb2RlIC5tYXQtbWluaS1mYWIubWF0LXByaW1hcnkgLm1hdC1yaXBwbGUtZWxlbWVudHtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEpfWJvZHkuZGFyay1tb2RlIC5tYXQtZmxhdC1idXR0b24ubWF0LWFjY2VudCAubWF0LXJpcHBsZS1lbGVtZW50LGJvZHkuZGFyay1tb2RlIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtYWNjZW50IC5tYXQtcmlwcGxlLWVsZW1lbnQsYm9keS5kYXJrLW1vZGUgLm1hdC1mYWIubWF0LWFjY2VudCAubWF0LXJpcHBsZS1lbGVtZW50LGJvZHkuZGFyay1tb2RlIC5tYXQtbWluaS1mYWIubWF0LWFjY2VudCAubWF0LXJpcHBsZS1lbGVtZW50e2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMSl9Ym9keS5kYXJrLW1vZGUgLm1hdC1mbGF0LWJ1dHRvbi5tYXQtd2FybiAubWF0LXJpcHBsZS1lbGVtZW50LGJvZHkuZGFyay1tb2RlIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtd2FybiAubWF0LXJpcHBsZS1lbGVtZW50LGJvZHkuZGFyay1tb2RlIC5tYXQtZmFiLm1hdC13YXJuIC5tYXQtcmlwcGxlLWVsZW1lbnQsYm9keS5kYXJrLW1vZGUgLm1hdC1taW5pLWZhYi5tYXQtd2FybiAubWF0LXJpcHBsZS1lbGVtZW50e2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMSl9Ym9keS5kYXJrLW1vZGUgLm1hdC1zdHJva2VkLWJ1dHRvbjpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKSxib2R5LmRhcmstbW9kZSAubWF0LWZsYXQtYnV0dG9uOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX1ib2R5LmRhcmstbW9kZSAubWF0LXJhaXNlZC1idXR0b246bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggM3B4IDFweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMnB4IDJweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX1ib2R5LmRhcmstbW9kZSAubWF0LXJhaXNlZC1idXR0b246bm90KC5tYXQtYnV0dG9uLWRpc2FibGVkKTphY3RpdmU6bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggNXB4IDVweCAtM3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggOHB4IDEwcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDNweCAxNHB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTIpfWJvZHkuZGFyay1tb2RlIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX1ib2R5LmRhcmstbW9kZSAubWF0LWZhYjpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKSxib2R5LmRhcmstbW9kZSAubWF0LW1pbmktZmFiOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDNweCA1cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDZweCAxMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggMThweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX1ib2R5LmRhcmstbW9kZSAubWF0LWZhYjpub3QoLm1hdC1idXR0b24tZGlzYWJsZWQpOmFjdGl2ZTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKSxib2R5LmRhcmstbW9kZSAubWF0LW1pbmktZmFiOm5vdCgubWF0LWJ1dHRvbi1kaXNhYmxlZCk6YWN0aXZlOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDdweCA4cHggLTRweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDEycHggMTdweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNXB4IDIycHggNHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Ym9keS5kYXJrLW1vZGUgLm1hdC1mYWIubWF0LWJ1dHRvbi1kaXNhYmxlZDpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKSxib2R5LmRhcmstbW9kZSAubWF0LW1pbmktZmFiLm1hdC1idXR0b24tZGlzYWJsZWQ6bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfWJvZHkuZGFyay1tb2RlIC5tYXQtYnV0dG9uLXRvZ2dsZS1zdGFuZGFsb25lLGJvZHkuZGFyay1tb2RlIC5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cHtib3gtc2hhZG93OjBweCAzcHggMXB4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAycHggMnB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfWJvZHkuZGFyay1tb2RlIC5tYXQtYnV0dG9uLXRvZ2dsZS1zdGFuZGFsb25lLm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmQsYm9keS5kYXJrLW1vZGUgLm1hdC1idXR0b24tdG9nZ2xlLWdyb3VwLWFwcGVhcmFuY2Utc3RhbmRhcmR7Ym94LXNoYWRvdzpub25lfWJvZHkuZGFyay1tb2RlIC5tYXQtYnV0dG9uLXRvZ2dsZXtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC41KX1ib2R5LmRhcmstbW9kZSAubWF0LWJ1dHRvbi10b2dnbGUgLm1hdC1idXR0b24tdG9nZ2xlLWZvY3VzLW92ZXJsYXl7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xMil9Ym9keS5kYXJrLW1vZGUgLm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmR7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kOiM0MjQyNDJ9Ym9keS5kYXJrLW1vZGUgLm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmQgLm1hdC1idXR0b24tdG9nZ2xlLWZvY3VzLW92ZXJsYXl7YmFja2dyb3VuZC1jb2xvcjojZmZmfWJvZHkuZGFyay1tb2RlIC5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cC1hcHBlYXJhbmNlLXN0YW5kYXJkIC5tYXQtYnV0dG9uLXRvZ2dsZSsubWF0LWJ1dHRvbi10b2dnbGV7Ym9yZGVyLWxlZnQ6c29saWQgMXB4IHJnYmEoMjU1LDI1NSwyNTUsLjEyKX1ib2R5LmRhcmstbW9kZSBbZGlyPXJ0bF0gLm1hdC1idXR0b24tdG9nZ2xlLWdyb3VwLWFwcGVhcmFuY2Utc3RhbmRhcmQgLm1hdC1idXR0b24tdG9nZ2xlKy5tYXQtYnV0dG9uLXRvZ2dsZXtib3JkZXItbGVmdDpub25lO2JvcmRlci1yaWdodDpzb2xpZCAxcHggcmdiYSgyNTUsMjU1LDI1NSwuMTIpfWJvZHkuZGFyay1tb2RlIC5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cC1hcHBlYXJhbmNlLXN0YW5kYXJkLm1hdC1idXR0b24tdG9nZ2xlLXZlcnRpY2FsIC5tYXQtYnV0dG9uLXRvZ2dsZSsubWF0LWJ1dHRvbi10b2dnbGV7Ym9yZGVyLWxlZnQ6bm9uZTtib3JkZXItcmlnaHQ6bm9uZTtib3JkZXItdG9wOnNvbGlkIDFweCByZ2JhKDI1NSwyNTUsMjU1LC4xMil9Ym9keS5kYXJrLW1vZGUgLm1hdC1idXR0b24tdG9nZ2xlLWNoZWNrZWR7YmFja2dyb3VuZC1jb2xvcjojMjEyMTIxO2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjcpfWJvZHkuZGFyay1tb2RlIC5tYXQtYnV0dG9uLXRvZ2dsZS1jaGVja2VkLm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmR7Y29sb3I6I2ZmZn1ib2R5LmRhcmstbW9kZSAubWF0LWJ1dHRvbi10b2dnbGUtZGlzYWJsZWR7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMyk7YmFja2dyb3VuZC1jb2xvcjojMDAwfWJvZHkuZGFyay1tb2RlIC5tYXQtYnV0dG9uLXRvZ2dsZS1kaXNhYmxlZC5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJke2JhY2tncm91bmQ6IzQyNDI0Mn1ib2R5LmRhcmstbW9kZSAubWF0LWJ1dHRvbi10b2dnbGUtZGlzYWJsZWQubWF0LWJ1dHRvbi10b2dnbGUtY2hlY2tlZHtiYWNrZ3JvdW5kLWNvbG9yOiM0MjQyNDJ9Ym9keS5kYXJrLW1vZGUgLm1hdC1idXR0b24tdG9nZ2xlLXN0YW5kYWxvbmUubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZCxib2R5LmRhcmstbW9kZSAubWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXAtYXBwZWFyYW5jZS1zdGFuZGFyZHtib3JkZXI6c29saWQgMXB4IHJnYmEoMjU1LDI1NSwyNTUsLjEyKX1ib2R5LmRhcmstbW9kZSAubWF0LWNhcmR7YmFja2dyb3VuZDojNDI0MjQyO2NvbG9yOiNmZmZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1jYXJkOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDJweCAxcHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDFweCAxcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAzcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Ym9keS5kYXJrLW1vZGUgLm1hdC1jYXJkLm1hdC1jYXJkLWZsYXQ6bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfWJvZHkuZGFyay1tb2RlIC5tYXQtY2FyZC1zdWJ0aXRsZXtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KX1ib2R5LmRhcmstbW9kZSAubWF0LWNoZWNrYm94LWZyYW1le2JvcmRlci1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KX1ib2R5LmRhcmstbW9kZSAubWF0LWNoZWNrYm94LWNoZWNrbWFya3tmaWxsOiMzMDMwMzB9Ym9keS5kYXJrLW1vZGUgLm1hdC1jaGVja2JveC1jaGVja21hcmstcGF0aHtzdHJva2U6IzMwMzAzMCAhaW1wb3J0YW50fWJvZHkuZGFyay1tb2RlIC5tYXQtY2hlY2tib3gtbWl4ZWRtYXJre2JhY2tncm91bmQtY29sb3I6IzMwMzAzMH1ib2R5LmRhcmstbW9kZSAubWF0LWNoZWNrYm94LWluZGV0ZXJtaW5hdGUubWF0LXByaW1hcnkgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5kLGJvZHkuZGFyay1tb2RlIC5tYXQtY2hlY2tib3gtY2hlY2tlZC5tYXQtcHJpbWFyeSAubWF0LWNoZWNrYm94LWJhY2tncm91bmR7YmFja2dyb3VuZC1jb2xvcjojZWY2YzAwfWJvZHkuZGFyay1tb2RlIC5tYXQtY2hlY2tib3gtaW5kZXRlcm1pbmF0ZS5tYXQtYWNjZW50IC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZCxib2R5LmRhcmstbW9kZSAubWF0LWNoZWNrYm94LWNoZWNrZWQubWF0LWFjY2VudCAubWF0LWNoZWNrYm94LWJhY2tncm91bmR7YmFja2dyb3VuZC1jb2xvcjojZWY2YzAwfWJvZHkuZGFyay1tb2RlIC5tYXQtY2hlY2tib3gtaW5kZXRlcm1pbmF0ZS5tYXQtd2FybiAubWF0LWNoZWNrYm94LWJhY2tncm91bmQsYm9keS5kYXJrLW1vZGUgLm1hdC1jaGVja2JveC1jaGVja2VkLm1hdC13YXJuIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZHtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1jaGVja2JveC1kaXNhYmxlZC5tYXQtY2hlY2tib3gtY2hlY2tlZCAubWF0LWNoZWNrYm94LWJhY2tncm91bmQsYm9keS5kYXJrLW1vZGUgLm1hdC1jaGVja2JveC1kaXNhYmxlZC5tYXQtY2hlY2tib3gtaW5kZXRlcm1pbmF0ZSAubWF0LWNoZWNrYm94LWJhY2tncm91bmR7YmFja2dyb3VuZC1jb2xvcjojNjg2ODY4fWJvZHkuZGFyay1tb2RlIC5tYXQtY2hlY2tib3gtZGlzYWJsZWQ6bm90KC5tYXQtY2hlY2tib3gtY2hlY2tlZCkgLm1hdC1jaGVja2JveC1mcmFtZXtib3JkZXItY29sb3I6IzY4Njg2OH1ib2R5LmRhcmstbW9kZSAubWF0LWNoZWNrYm94LWRpc2FibGVkIC5tYXQtY2hlY2tib3gtbGFiZWx7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNyl9Ym9keS5kYXJrLW1vZGUgLm1hdC1jaGVja2JveCAubWF0LXJpcHBsZS1lbGVtZW50e2JhY2tncm91bmQtY29sb3I6I2ZmZn1ib2R5LmRhcmstbW9kZSAubWF0LWNoZWNrYm94LWNoZWNrZWQ6bm90KC5tYXQtY2hlY2tib3gtZGlzYWJsZWQpLm1hdC1wcmltYXJ5IC5tYXQtcmlwcGxlLWVsZW1lbnQsYm9keS5kYXJrLW1vZGUgLm1hdC1jaGVja2JveDphY3RpdmU6bm90KC5tYXQtY2hlY2tib3gtZGlzYWJsZWQpLm1hdC1wcmltYXJ5IC5tYXQtcmlwcGxlLWVsZW1lbnR7YmFja2dyb3VuZDojZWY2YzAwfWJvZHkuZGFyay1tb2RlIC5tYXQtY2hlY2tib3gtY2hlY2tlZDpub3QoLm1hdC1jaGVja2JveC1kaXNhYmxlZCkubWF0LWFjY2VudCAubWF0LXJpcHBsZS1lbGVtZW50LGJvZHkuZGFyay1tb2RlIC5tYXQtY2hlY2tib3g6YWN0aXZlOm5vdCgubWF0LWNoZWNrYm94LWRpc2FibGVkKS5tYXQtYWNjZW50IC5tYXQtcmlwcGxlLWVsZW1lbnR7YmFja2dyb3VuZDojZWY2YzAwfWJvZHkuZGFyay1tb2RlIC5tYXQtY2hlY2tib3gtY2hlY2tlZDpub3QoLm1hdC1jaGVja2JveC1kaXNhYmxlZCkubWF0LXdhcm4gLm1hdC1yaXBwbGUtZWxlbWVudCxib2R5LmRhcmstbW9kZSAubWF0LWNoZWNrYm94OmFjdGl2ZTpub3QoLm1hdC1jaGVja2JveC1kaXNhYmxlZCkubWF0LXdhcm4gLm1hdC1yaXBwbGUtZWxlbWVudHtiYWNrZ3JvdW5kOiNmNDQzMzZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwe2JhY2tncm91bmQtY29sb3I6IzYxNjE2MTtjb2xvcjojZmZmfWJvZHkuZGFyay1tb2RlIC5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcCAubWF0LWNoaXAtcmVtb3Zle2NvbG9yOiNmZmY7b3BhY2l0eTouNH1ib2R5LmRhcmstbW9kZSAubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXA6bm90KC5tYXQtY2hpcC1kaXNhYmxlZCk6YWN0aXZle2JveC1zaGFkb3c6MHB4IDNweCAzcHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDNweCA0cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCA4cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Ym9keS5kYXJrLW1vZGUgLm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwOm5vdCgubWF0LWNoaXAtZGlzYWJsZWQpIC5tYXQtY2hpcC1yZW1vdmU6aG92ZXJ7b3BhY2l0eTouNTR9Ym9keS5kYXJrLW1vZGUgLm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLWRpc2FibGVke29wYWNpdHk6LjR9Ym9keS5kYXJrLW1vZGUgLm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwOjphZnRlcntiYWNrZ3JvdW5kOiNmZmZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC1wcmltYXJ5e2JhY2tncm91bmQtY29sb3I6I2VmNmMwMDtjb2xvcjojZmZmfWJvZHkuZGFyay1tb2RlIC5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1zZWxlY3RlZC5tYXQtcHJpbWFyeSAubWF0LWNoaXAtcmVtb3Zle2NvbG9yOiNmZmY7b3BhY2l0eTouNH1ib2R5LmRhcmstbW9kZSAubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LXByaW1hcnkgLm1hdC1yaXBwbGUtZWxlbWVudHtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEpfWJvZHkuZGFyay1tb2RlIC5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1zZWxlY3RlZC5tYXQtd2FybntiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzY7Y29sb3I6I2ZmZn1ib2R5LmRhcmstbW9kZSAubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LXdhcm4gLm1hdC1jaGlwLXJlbW92ZXtjb2xvcjojZmZmO29wYWNpdHk6LjR9Ym9keS5kYXJrLW1vZGUgLm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC13YXJuIC5tYXQtcmlwcGxlLWVsZW1lbnR7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xKX1ib2R5LmRhcmstbW9kZSAubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LWFjY2VudHtiYWNrZ3JvdW5kLWNvbG9yOiNlZjZjMDA7Y29sb3I6I2ZmZn1ib2R5LmRhcmstbW9kZSAubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LWFjY2VudCAubWF0LWNoaXAtcmVtb3Zle2NvbG9yOiNmZmY7b3BhY2l0eTouNH1ib2R5LmRhcmstbW9kZSAubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LWFjY2VudCAubWF0LXJpcHBsZS1lbGVtZW50e2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMSl9Ym9keS5kYXJrLW1vZGUgLm1hdC10YWJsZXtiYWNrZ3JvdW5kOiM0MjQyNDJ9Ym9keS5kYXJrLW1vZGUgLm1hdC10YWJsZSB0aGVhZCxib2R5LmRhcmstbW9kZSAubWF0LXRhYmxlIHRib2R5LGJvZHkuZGFyay1tb2RlIC5tYXQtdGFibGUgdGZvb3QsYm9keS5kYXJrLW1vZGUgbWF0LWhlYWRlci1yb3csYm9keS5kYXJrLW1vZGUgbWF0LXJvdyxib2R5LmRhcmstbW9kZSBtYXQtZm9vdGVyLXJvdyxib2R5LmRhcmstbW9kZSBbbWF0LWhlYWRlci1yb3ddLGJvZHkuZGFyay1tb2RlIFttYXQtcm93XSxib2R5LmRhcmstbW9kZSBbbWF0LWZvb3Rlci1yb3ddLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFibGUtc3RpY2t5e2JhY2tncm91bmQ6aW5oZXJpdH1ib2R5LmRhcmstbW9kZSBtYXQtcm93LGJvZHkuZGFyay1tb2RlIG1hdC1oZWFkZXItcm93LGJvZHkuZGFyay1tb2RlIG1hdC1mb290ZXItcm93LGJvZHkuZGFyay1tb2RlIHRoLm1hdC1oZWFkZXItY2VsbCxib2R5LmRhcmstbW9kZSB0ZC5tYXQtY2VsbCxib2R5LmRhcmstbW9kZSB0ZC5tYXQtZm9vdGVyLWNlbGx7Ym9yZGVyLWJvdHRvbS1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xMil9Ym9keS5kYXJrLW1vZGUgLm1hdC1oZWFkZXItY2VsbHtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KX1ib2R5LmRhcmstbW9kZSAubWF0LWNlbGwsYm9keS5kYXJrLW1vZGUgLm1hdC1mb290ZXItY2VsbHtjb2xvcjojZmZmfWJvZHkuZGFyay1tb2RlIC5tYXQtY2FsZW5kYXItYXJyb3d7ZmlsbDojZmZmfWJvZHkuZGFyay1tb2RlIC5tYXQtZGF0ZXBpY2tlci10b2dnbGUsYm9keS5kYXJrLW1vZGUgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQgLm1hdC1jYWxlbmRhci1uZXh0LWJ1dHRvbixib2R5LmRhcmstbW9kZSAubWF0LWRhdGVwaWNrZXItY29udGVudCAubWF0LWNhbGVuZGFyLXByZXZpb3VzLWJ1dHRvbntjb2xvcjojZmZmfWJvZHkuZGFyay1tb2RlIC5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVye2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjUpfWJvZHkuZGFyay1tb2RlIC5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyLWRpdmlkZXI6OmFmdGVye2JhY2tncm91bmQ6cmdiYSgyNTUsMjU1LDI1NSwuMTIpfWJvZHkuZGFyay1tb2RlIC5tYXQtY2FsZW5kYXItYm9keS1sYWJlbHtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KX1ib2R5LmRhcmstbW9kZSAubWF0LWNhbGVuZGFyLWJvZHktY2VsbC1jb250ZW50LGJvZHkuZGFyay1tb2RlIC5tYXQtZGF0ZS1yYW5nZS1pbnB1dC1zZXBhcmF0b3J7Y29sb3I6I2ZmZjtib3JkZXItY29sb3I6dHJhbnNwYXJlbnR9Ym9keS5kYXJrLW1vZGUgLm1hdC1jYWxlbmRhci1ib2R5LWRpc2FibGVkPi5tYXQtY2FsZW5kYXItYm9keS1jZWxsLWNvbnRlbnQ6bm90KC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZCk6bm90KC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbCl7Y29sb3I6IzYxNjE2MX1ib2R5LmRhcmstbW9kZSAubWF0LWZvcm0tZmllbGQtZGlzYWJsZWQgLm1hdC1kYXRlLXJhbmdlLWlucHV0LXNlcGFyYXRvcntjb2xvcjojNjE2MTYxfWJvZHkuZGFyay1tb2RlIC5tYXQtY2FsZW5kYXItYm9keS1pbi1wcmV2aWV3e2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjI0KX1ib2R5LmRhcmstbW9kZSAubWF0LWNhbGVuZGFyLWJvZHktdG9kYXk6bm90KC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZCk6bm90KC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbCl7Ym9yZGVyLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjUpfWJvZHkuZGFyay1tb2RlIC5tYXQtY2FsZW5kYXItYm9keS1kaXNhYmxlZD4ubWF0LWNhbGVuZGFyLWJvZHktdG9kYXk6bm90KC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZCk6bm90KC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbCl7Ym9yZGVyLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjMpfWJvZHkuZGFyay1tb2RlIC5tYXQtY2FsZW5kYXItYm9keS1pbi1yYW5nZTo6YmVmb3Jle2JhY2tncm91bmQ6cmdiYSgyMzksMTA4LDAsLjIpfWJvZHkuZGFyay1tb2RlIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbCxib2R5LmRhcmstbW9kZSAubWF0LWNhbGVuZGFyLWJvZHktaW4tY29tcGFyaXNvbi1yYW5nZTo6YmVmb3Jle2JhY2tncm91bmQ6cmdiYSgyNDksMTcxLDAsLjIpfWJvZHkuZGFyay1tb2RlIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1zdGFydDo6YmVmb3JlLGJvZHkuZGFyay1tb2RlIFtkaXI9cnRsXSAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2UtZW5kOjpiZWZvcmV7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHJnYmEoMjM5LCAxMDgsIDAsIDAuMikgNTAlLCByZ2JhKDI0OSwgMTcxLCAwLCAwLjIpIDUwJSl9Ym9keS5kYXJrLW1vZGUgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLWVuZDo6YmVmb3JlLGJvZHkuZGFyay1tb2RlIFtkaXI9cnRsXSAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2Utc3RhcnQ6OmJlZm9yZXtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCh0byBsZWZ0LCByZ2JhKDIzOSwgMTA4LCAwLCAwLjIpIDUwJSwgcmdiYSgyNDksIDE3MSwgMCwgMC4yKSA1MCUpfWJvZHkuZGFyay1tb2RlIC5tYXQtY2FsZW5kYXItYm9keS1pbi1yYW5nZT4ubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwsYm9keS5kYXJrLW1vZGUgLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2UubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2U6OmFmdGVye2JhY2tncm91bmQ6I2E4ZGFiNX1ib2R5LmRhcmstbW9kZSAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQsYm9keS5kYXJrLW1vZGUgLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2U+Lm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVke2JhY2tncm91bmQ6IzQ2YTM1ZX1ib2R5LmRhcmstbW9kZSAubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWR7YmFja2dyb3VuZC1jb2xvcjojZWY2YzAwO2NvbG9yOiNmZmZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1jYWxlbmRhci1ib2R5LWRpc2FibGVkPi5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZHtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjM5LDEwOCwwLC40KX1ib2R5LmRhcmstbW9kZSAubWF0LWNhbGVuZGFyLWJvZHktdG9kYXkubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWR7Ym94LXNoYWRvdzppbnNldCAwIDAgMCAxcHggI2ZmZn1ib2R5LmRhcmstbW9kZSAubWF0LWNhbGVuZGFyLWJvZHktY2VsbDpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWRpc2FibGVkKTpob3Zlcj4ubWF0LWNhbGVuZGFyLWJvZHktY2VsbC1jb250ZW50Om5vdCgubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQpOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwpLGJvZHkuZGFyay1tb2RlIC5jZGsta2V5Ym9hcmQtZm9jdXNlZCAubWF0LWNhbGVuZGFyLWJvZHktYWN0aXZlPi5tYXQtY2FsZW5kYXItYm9keS1jZWxsLWNvbnRlbnQ6bm90KC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZCk6bm90KC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbCksYm9keS5kYXJrLW1vZGUgLmNkay1wcm9ncmFtLWZvY3VzZWQgLm1hdC1jYWxlbmRhci1ib2R5LWFjdGl2ZT4ubWF0LWNhbGVuZGFyLWJvZHktY2VsbC1jb250ZW50Om5vdCgubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQpOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwpe2JhY2tncm91bmQtY29sb3I6cmdiYSgyMzksMTA4LDAsLjMpfWJvZHkuZGFyay1tb2RlIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50e2JveC1zaGFkb3c6MHB4IDJweCA0cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDRweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpO2JhY2tncm91bmQtY29sb3I6IzQyNDI0Mjtjb2xvcjojZmZmfWJvZHkuZGFyay1tb2RlIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnQgLm1hdC1jYWxlbmRhci1ib2R5LWluLXJhbmdlOjpiZWZvcmV7YmFja2dyb3VuZDpyZ2JhKDIzOSwxMDgsMCwuMil9Ym9keS5kYXJrLW1vZGUgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudCAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwsYm9keS5kYXJrLW1vZGUgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudCAubWF0LWNhbGVuZGFyLWJvZHktaW4tY29tcGFyaXNvbi1yYW5nZTo6YmVmb3Jle2JhY2tncm91bmQ6cmdiYSgyNDksMTcxLDAsLjIpfWJvZHkuZGFyay1tb2RlIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnQgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLXN0YXJ0OjpiZWZvcmUsYm9keS5kYXJrLW1vZGUgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudCBbZGlyPXJ0bF0gLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLWVuZDo6YmVmb3Jle2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKDIzOSwgMTA4LCAwLCAwLjIpIDUwJSwgcmdiYSgyNDksIDE3MSwgMCwgMC4yKSA1MCUpfWJvZHkuZGFyay1tb2RlIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnQgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLWVuZDo6YmVmb3JlLGJvZHkuZGFyay1tb2RlIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnQgW2Rpcj1ydGxdIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1zdGFydDo6YmVmb3Jle2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KHRvIGxlZnQsIHJnYmEoMjM5LCAxMDgsIDAsIDAuMikgNTAlLCByZ2JhKDI0OSwgMTcxLCAwLCAwLjIpIDUwJSl9Ym9keS5kYXJrLW1vZGUgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudCAubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2U+Lm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsLGJvZHkuZGFyay1tb2RlIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnQgLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2UubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2U6OmFmdGVye2JhY2tncm91bmQ6I2E4ZGFiNX1ib2R5LmRhcmstbW9kZSAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50IC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZCxib2R5LmRhcmstbW9kZSAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50IC5tYXQtY2FsZW5kYXItYm9keS1pbi1jb21wYXJpc29uLXJhbmdlPi5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZHtiYWNrZ3JvdW5kOiM0NmEzNWV9Ym9keS5kYXJrLW1vZGUgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudCAubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWR7YmFja2dyb3VuZC1jb2xvcjojZWY2YzAwO2NvbG9yOiNmZmZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudCAubWF0LWNhbGVuZGFyLWJvZHktZGlzYWJsZWQ+Lm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVke2JhY2tncm91bmQtY29sb3I6cmdiYSgyMzksMTA4LDAsLjQpfWJvZHkuZGFyay1tb2RlIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnQgLm1hdC1jYWxlbmRhci1ib2R5LXRvZGF5Lm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVke2JveC1zaGFkb3c6aW5zZXQgMCAwIDAgMXB4ICNmZmZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudCAubWF0LWNhbGVuZGFyLWJvZHktY2VsbDpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWRpc2FibGVkKTpob3Zlcj4ubWF0LWNhbGVuZGFyLWJvZHktY2VsbC1jb250ZW50Om5vdCgubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQpOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwpLGJvZHkuZGFyay1tb2RlIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnQgLmNkay1rZXlib2FyZC1mb2N1c2VkIC5tYXQtY2FsZW5kYXItYm9keS1hY3RpdmU+Lm1hdC1jYWxlbmRhci1ib2R5LWNlbGwtY29udGVudDpub3QoLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkKTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsKSxib2R5LmRhcmstbW9kZSAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50IC5jZGstcHJvZ3JhbS1mb2N1c2VkIC5tYXQtY2FsZW5kYXItYm9keS1hY3RpdmU+Lm1hdC1jYWxlbmRhci1ib2R5LWNlbGwtY29udGVudDpub3QoLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkKTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjM5LDEwOCwwLC4zKX1ib2R5LmRhcmstbW9kZSAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2FybiAubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2U6OmJlZm9yZXtiYWNrZ3JvdW5kOnJnYmEoMjQ0LDY3LDU0LC4yKX1ib2R5LmRhcmstbW9kZSAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2FybiAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwsYm9keS5kYXJrLW1vZGUgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm4gLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2U6OmJlZm9yZXtiYWNrZ3JvdW5kOnJnYmEoMjQ5LDE3MSwwLC4yKX1ib2R5LmRhcmstbW9kZSAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2FybiAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2Utc3RhcnQ6OmJlZm9yZSxib2R5LmRhcmstbW9kZSAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2FybiBbZGlyPXJ0bF0gLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLWVuZDo6YmVmb3Jle2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKDI0NCwgNjcsIDU0LCAwLjIpIDUwJSwgcmdiYSgyNDksIDE3MSwgMCwgMC4yKSA1MCUpfWJvZHkuZGFyay1tb2RlIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1lbmQ6OmJlZm9yZSxib2R5LmRhcmstbW9kZSAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2FybiBbZGlyPXJ0bF0gLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLXN0YXJ0OjpiZWZvcmV7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQodG8gbGVmdCwgcmdiYSgyNDQsIDY3LCA1NCwgMC4yKSA1MCUsIHJnYmEoMjQ5LCAxNzEsIDAsIDAuMikgNTAlKX1ib2R5LmRhcmstbW9kZSAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2FybiAubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2U+Lm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsLGJvZHkuZGFyay1tb2RlIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuIC5tYXQtY2FsZW5kYXItYm9keS1pbi1jb21wYXJpc29uLXJhbmdlLm1hdC1jYWxlbmRhci1ib2R5LWluLXJhbmdlOjphZnRlcntiYWNrZ3JvdW5kOiNhOGRhYjV9Ym9keS5kYXJrLW1vZGUgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm4gLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkLGJvZHkuZGFyay1tb2RlIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuIC5tYXQtY2FsZW5kYXItYm9keS1pbi1jb21wYXJpc29uLXJhbmdlPi5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZHtiYWNrZ3JvdW5kOiM0NmEzNWV9Ym9keS5kYXJrLW1vZGUgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm4gLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVke2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNjtjb2xvcjojZmZmfWJvZHkuZGFyay1tb2RlIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuIC5tYXQtY2FsZW5kYXItYm9keS1kaXNhYmxlZD4ubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWR7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI0NCw2Nyw1NCwuNCl9Ym9keS5kYXJrLW1vZGUgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm4gLm1hdC1jYWxlbmRhci1ib2R5LXRvZGF5Lm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVke2JveC1zaGFkb3c6aW5zZXQgMCAwIDAgMXB4ICNmZmZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm4gLm1hdC1jYWxlbmRhci1ib2R5LWNlbGw6bm90KC5tYXQtY2FsZW5kYXItYm9keS1kaXNhYmxlZCk6aG92ZXI+Lm1hdC1jYWxlbmRhci1ib2R5LWNlbGwtY29udGVudDpub3QoLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkKTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsKSxib2R5LmRhcmstbW9kZSAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2FybiAuY2RrLWtleWJvYXJkLWZvY3VzZWQgLm1hdC1jYWxlbmRhci1ib2R5LWFjdGl2ZT4ubWF0LWNhbGVuZGFyLWJvZHktY2VsbC1jb250ZW50Om5vdCgubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQpOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwpLGJvZHkuZGFyay1tb2RlIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuIC5jZGstcHJvZ3JhbS1mb2N1c2VkIC5tYXQtY2FsZW5kYXItYm9keS1hY3RpdmU+Lm1hdC1jYWxlbmRhci1ib2R5LWNlbGwtY29udGVudDpub3QoLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkKTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjQ0LDY3LDU0LC4zKX1ib2R5LmRhcmstbW9kZSAubWF0LWRhdGVwaWNrZXItY29udGVudC10b3VjaHtib3gtc2hhZG93OjBweCAxMXB4IDE1cHggLTdweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDI0cHggMzhweCAzcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggOXB4IDQ2cHggOHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Ym9keS5kYXJrLW1vZGUgLm1hdC1kYXRlcGlja2VyLXRvZ2dsZS1hY3RpdmV7Y29sb3I6I2VmNmMwMH1ib2R5LmRhcmstbW9kZSAubWF0LWRhdGVwaWNrZXItdG9nZ2xlLWFjdGl2ZS5tYXQtYWNjZW50e2NvbG9yOiNlZjZjMDB9Ym9keS5kYXJrLW1vZGUgLm1hdC1kYXRlcGlja2VyLXRvZ2dsZS1hY3RpdmUubWF0LXdhcm57Y29sb3I6I2Y0NDMzNn1ib2R5LmRhcmstbW9kZSAubWF0LWRhdGUtcmFuZ2UtaW5wdXQtaW5uZXJbZGlzYWJsZWRde2NvbG9yOiM2MTYxNjF9Ym9keS5kYXJrLW1vZGUgLm1hdC1kaWFsb2ctY29udGFpbmVye2JveC1zaGFkb3c6MHB4IDExcHggMTVweCAtN3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMjRweCAzOHB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA5cHggNDZweCA4cHggcmdiYSgwLCAwLCAwLCAwLjEyKTtiYWNrZ3JvdW5kOiM0MjQyNDI7Y29sb3I6I2ZmZn1ib2R5LmRhcmstbW9kZSAubWF0LWRpdmlkZXJ7Ym9yZGVyLXRvcC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xMil9Ym9keS5kYXJrLW1vZGUgLm1hdC1kaXZpZGVyLXZlcnRpY2Fse2JvcmRlci1yaWdodC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xMil9Ym9keS5kYXJrLW1vZGUgLm1hdC1leHBhbnNpb24tcGFuZWx7YmFja2dyb3VuZDojNDI0MjQyO2NvbG9yOiNmZmZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1leHBhbnNpb24tcGFuZWw6bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggM3B4IDFweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMnB4IDJweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX1ib2R5LmRhcmstbW9kZSAubWF0LWFjdGlvbi1yb3d7Ym9yZGVyLXRvcC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xMil9Ym9keS5kYXJrLW1vZGUgLm1hdC1leHBhbnNpb24tcGFuZWwgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLmNkay1rZXlib2FyZC1mb2N1c2VkOm5vdChbYXJpYS1kaXNhYmxlZD10cnVlXSksYm9keS5kYXJrLW1vZGUgLm1hdC1leHBhbnNpb24tcGFuZWwgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLmNkay1wcm9ncmFtLWZvY3VzZWQ6bm90KFthcmlhLWRpc2FibGVkPXRydWVdKSxib2R5LmRhcmstbW9kZSAubWF0LWV4cGFuc2lvbi1wYW5lbDpub3QoLm1hdC1leHBhbmRlZCkgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyOmhvdmVyOm5vdChbYXJpYS1kaXNhYmxlZD10cnVlXSl7YmFja2dyb3VuZDpyZ2JhKDI1NSwyNTUsMjU1LC4wNCl9QG1lZGlhKGhvdmVyOiBub25lKXtib2R5LmRhcmstbW9kZSAubWF0LWV4cGFuc2lvbi1wYW5lbDpub3QoLm1hdC1leHBhbmRlZCk6bm90KFthcmlhLWRpc2FibGVkPXRydWVdKSAubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI6aG92ZXJ7YmFja2dyb3VuZDojNDI0MjQyfX1ib2R5LmRhcmstbW9kZSAubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXItdGl0bGV7Y29sb3I6I2ZmZn1ib2R5LmRhcmstbW9kZSAubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXItZGVzY3JpcHRpb24sYm9keS5kYXJrLW1vZGUgLm1hdC1leHBhbnNpb24taW5kaWNhdG9yOjphZnRlcntjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KX1ib2R5LmRhcmstbW9kZSAubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbYXJpYS1kaXNhYmxlZD10cnVlXXtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4zKX1ib2R5LmRhcmstbW9kZSAubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbYXJpYS1kaXNhYmxlZD10cnVlXSAubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXItdGl0bGUsYm9keS5kYXJrLW1vZGUgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW2FyaWEtZGlzYWJsZWQ9dHJ1ZV0gLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLWRlc2NyaXB0aW9ue2NvbG9yOmluaGVyaXR9Ym9keS5kYXJrLW1vZGUgLm1hdC1mb3JtLWZpZWxkLWxhYmVse2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjcpfWJvZHkuZGFyay1tb2RlIC5tYXQtaGludHtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KX1ib2R5LmRhcmstbW9kZSAubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWQgLm1hdC1mb3JtLWZpZWxkLWxhYmVse2NvbG9yOiNlZjZjMDB9Ym9keS5kYXJrLW1vZGUgLm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkIC5tYXQtZm9ybS1maWVsZC1sYWJlbC5tYXQtYWNjZW50e2NvbG9yOiNlZjZjMDB9Ym9keS5kYXJrLW1vZGUgLm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkIC5tYXQtZm9ybS1maWVsZC1sYWJlbC5tYXQtd2Fybntjb2xvcjojZjQ0MzM2fWJvZHkuZGFyay1tb2RlIC5tYXQtZm9jdXNlZCAubWF0LWZvcm0tZmllbGQtcmVxdWlyZWQtbWFya2Vye2NvbG9yOiNlZjZjMDB9Ym9keS5kYXJrLW1vZGUgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZXtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkIC5tYXQtZm9ybS1maWVsZC1yaXBwbGV7YmFja2dyb3VuZC1jb2xvcjojZWY2YzAwfWJvZHkuZGFyay1tb2RlIC5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZCAubWF0LWZvcm0tZmllbGQtcmlwcGxlLm1hdC1hY2NlbnR7YmFja2dyb3VuZC1jb2xvcjojZWY2YzAwfWJvZHkuZGFyay1tb2RlIC5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZCAubWF0LWZvcm0tZmllbGQtcmlwcGxlLm1hdC13YXJue2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn1ib2R5LmRhcmstbW9kZSAubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtbmF0aXZlLXNlbGVjdC5tYXQtZm9jdXNlZDpub3QoLm1hdC1mb3JtLWZpZWxkLWludmFsaWQpIC5tYXQtZm9ybS1maWVsZC1pbmZpeDo6YWZ0ZXJ7Y29sb3I6I2VmNmMwMH1ib2R5LmRhcmstbW9kZSAubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtbmF0aXZlLXNlbGVjdC5tYXQtZm9jdXNlZDpub3QoLm1hdC1mb3JtLWZpZWxkLWludmFsaWQpLm1hdC1hY2NlbnQgLm1hdC1mb3JtLWZpZWxkLWluZml4OjphZnRlcntjb2xvcjojZWY2YzAwfWJvZHkuZGFyay1tb2RlIC5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0Lm1hdC1mb2N1c2VkOm5vdCgubWF0LWZvcm0tZmllbGQtaW52YWxpZCkubWF0LXdhcm4gLm1hdC1mb3JtLWZpZWxkLWluZml4OjphZnRlcntjb2xvcjojZjQ0MzM2fWJvZHkuZGFyay1tb2RlIC5tYXQtZm9ybS1maWVsZC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkIC5tYXQtZm9ybS1maWVsZC1sYWJlbHtjb2xvcjojZjQ0MzM2fWJvZHkuZGFyay1tb2RlIC5tYXQtZm9ybS1maWVsZC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkIC5tYXQtZm9ybS1maWVsZC1sYWJlbC5tYXQtYWNjZW50LGJvZHkuZGFyay1tb2RlIC5tYXQtZm9ybS1maWVsZC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkIC5tYXQtZm9ybS1maWVsZC1sYWJlbCAubWF0LWZvcm0tZmllbGQtcmVxdWlyZWQtbWFya2Vye2NvbG9yOiNmNDQzMzZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1mb3JtLWZpZWxkLm1hdC1mb3JtLWZpZWxkLWludmFsaWQgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZSxib2R5LmRhcmstbW9kZSAubWF0LWZvcm0tZmllbGQubWF0LWZvcm0tZmllbGQtaW52YWxpZCAubWF0LWZvcm0tZmllbGQtcmlwcGxlLm1hdC1hY2NlbnR7YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fWJvZHkuZGFyay1tb2RlIC5tYXQtZXJyb3J7Y29sb3I6I2Y0NDMzNn1ib2R5LmRhcmstbW9kZSAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kgLm1hdC1mb3JtLWZpZWxkLWxhYmVse2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjcpfWJvZHkuZGFyay1tb2RlIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeSAubWF0LWhpbnR7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNyl9Ym9keS5kYXJrLW1vZGUgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5IC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmV7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KX1ib2R5LmRhcmstbW9kZSAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtZGlzYWJsZWQgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZXtiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCh0byByaWdodCwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjcpIDAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNykgMzMlLCB0cmFuc3BhcmVudCAwJSk7YmFja2dyb3VuZC1zaXplOjRweCAxMDAlO2JhY2tncm91bmQtcmVwZWF0OnJlcGVhdC14fWJvZHkuZGFyay1tb2RlIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLXN0YW5kYXJkIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmV7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KX1ib2R5LmRhcmstbW9kZSAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1zdGFuZGFyZC5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZCAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5le2JhY2tncm91bmQtaW1hZ2U6bGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNykgMCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43KSAzMyUsIHRyYW5zcGFyZW50IDAlKTtiYWNrZ3JvdW5kLXNpemU6NHB4IDEwMCU7YmFja2dyb3VuZC1yZXBlYXQ6cmVwZWF0LXh9Ym9keS5kYXJrLW1vZGUgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbCAubWF0LWZvcm0tZmllbGQtZmxleHtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEpfWJvZHkuZGFyay1tb2RlIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtZGlzYWJsZWQgLm1hdC1mb3JtLWZpZWxkLWZsZXh7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4wNSl9Ym9keS5kYXJrLW1vZGUgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbCAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lOjpiZWZvcmV7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC41KX1ib2R5LmRhcmstbW9kZSAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkIC5tYXQtZm9ybS1maWVsZC1sYWJlbHtjb2xvcjojNjE2MTYxfWJvZHkuZGFyay1tb2RlIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtZGlzYWJsZWQgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZTo6YmVmb3Jle2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnR9Ym9keS5kYXJrLW1vZGUgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZSAubWF0LWZvcm0tZmllbGQtb3V0bGluZXtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4zKX1ib2R5LmRhcmstbW9kZSAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLXRoaWNre2NvbG9yOiNmZmZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9jdXNlZCAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGlja3tjb2xvcjojZWY2YzAwfWJvZHkuZGFyay1tb2RlIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvY3VzZWQubWF0LWFjY2VudCAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGlja3tjb2xvcjojZWY2YzAwfWJvZHkuZGFyay1tb2RlIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvY3VzZWQubWF0LXdhcm4gLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtdGhpY2t7Y29sb3I6I2Y0NDMzNn1ib2R5LmRhcmstbW9kZSAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWludmFsaWQubWF0LWZvcm0tZmllbGQtaW52YWxpZCAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGlja3tjb2xvcjojZjQ0MzM2fWJvZHkuZGFyay1tb2RlIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtZGlzYWJsZWQgLm1hdC1mb3JtLWZpZWxkLWxhYmVse2NvbG9yOiM2MTYxNjF9Ym9keS5kYXJrLW1vZGUgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZCAubWF0LWZvcm0tZmllbGQtb3V0bGluZXtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xNSl9Ym9keS5kYXJrLW1vZGUgLm1hdC1pY29uLm1hdC1wcmltYXJ5e2NvbG9yOiNlZjZjMDB9Ym9keS5kYXJrLW1vZGUgLm1hdC1pY29uLm1hdC1hY2NlbnR7Y29sb3I6I2VmNmMwMH1ib2R5LmRhcmstbW9kZSAubWF0LWljb24ubWF0LXdhcm57Y29sb3I6I2Y0NDMzNn1ib2R5LmRhcmstbW9kZSAubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtbmF0aXZlLXNlbGVjdCAubWF0LWZvcm0tZmllbGQtaW5maXg6OmFmdGVye2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjcpfWJvZHkuZGFyay1tb2RlIC5tYXQtaW5wdXQtZWxlbWVudDpkaXNhYmxlZCxib2R5LmRhcmstbW9kZSAubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtbmF0aXZlLXNlbGVjdC5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZCAubWF0LWZvcm0tZmllbGQtaW5maXg6OmFmdGVye2NvbG9yOiM2MTYxNjF9Ym9keS5kYXJrLW1vZGUgLm1hdC1pbnB1dC1lbGVtZW50e2NhcmV0LWNvbG9yOiNlZjZjMDB9Ym9keS5kYXJrLW1vZGUgLm1hdC1pbnB1dC1lbGVtZW50OjpwbGFjZWhvbGRlcntjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC41KX1ib2R5LmRhcmstbW9kZSAubWF0LWlucHV0LWVsZW1lbnQ6Oi1tb3otcGxhY2Vob2xkZXJ7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNSl9Ym9keS5kYXJrLW1vZGUgLm1hdC1pbnB1dC1lbGVtZW50Ojotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVye2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjUpfWJvZHkuZGFyay1tb2RlIC5tYXQtaW5wdXQtZWxlbWVudDotbXMtaW5wdXQtcGxhY2Vob2xkZXJ7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNSl9Ym9keS5kYXJrLW1vZGUgLm1hdC1pbnB1dC1lbGVtZW50IG9wdGlvbntjb2xvcjpyZ2JhKDAsMCwwLC44Nyl9Ym9keS5kYXJrLW1vZGUgLm1hdC1pbnB1dC1lbGVtZW50IG9wdGlvbjpkaXNhYmxlZHtjb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Ym9keS5kYXJrLW1vZGUgLm1hdC1mb3JtLWZpZWxkLm1hdC1hY2NlbnQgLm1hdC1pbnB1dC1lbGVtZW50e2NhcmV0LWNvbG9yOiNlZjZjMDB9Ym9keS5kYXJrLW1vZGUgLm1hdC1mb3JtLWZpZWxkLm1hdC13YXJuIC5tYXQtaW5wdXQtZWxlbWVudCxib2R5LmRhcmstbW9kZSAubWF0LWZvcm0tZmllbGQtaW52YWxpZCAubWF0LWlucHV0LWVsZW1lbnR7Y2FyZXQtY29sb3I6I2Y0NDMzNn1ib2R5LmRhcmstbW9kZSAubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtbmF0aXZlLXNlbGVjdC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkIC5tYXQtZm9ybS1maWVsZC1pbmZpeDo6YWZ0ZXJ7Y29sb3I6I2Y0NDMzNn1ib2R5LmRhcmstbW9kZSAubWF0LWxpc3QtYmFzZSAubWF0LWxpc3QtaXRlbXtjb2xvcjojZmZmfWJvZHkuZGFyay1tb2RlIC5tYXQtbGlzdC1iYXNlIC5tYXQtbGlzdC1vcHRpb257Y29sb3I6I2ZmZn1ib2R5LmRhcmstbW9kZSAubWF0LWxpc3QtYmFzZSAubWF0LXN1YmhlYWRlcntjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KX1ib2R5LmRhcmstbW9kZSAubWF0LWxpc3QtaXRlbS1kaXNhYmxlZHtiYWNrZ3JvdW5kLWNvbG9yOiMwMDB9Ym9keS5kYXJrLW1vZGUgLm1hdC1saXN0LW9wdGlvbjpob3Zlcixib2R5LmRhcmstbW9kZSAubWF0LWxpc3Qtb3B0aW9uOmZvY3VzLGJvZHkuZGFyay1tb2RlIC5tYXQtbmF2LWxpc3QgLm1hdC1saXN0LWl0ZW06aG92ZXIsYm9keS5kYXJrLW1vZGUgLm1hdC1uYXYtbGlzdCAubWF0LWxpc3QtaXRlbTpmb2N1cyxib2R5LmRhcmstbW9kZSAubWF0LWFjdGlvbi1saXN0IC5tYXQtbGlzdC1pdGVtOmhvdmVyLGJvZHkuZGFyay1tb2RlIC5tYXQtYWN0aW9uLWxpc3QgLm1hdC1saXN0LWl0ZW06Zm9jdXN7YmFja2dyb3VuZDpyZ2JhKDI1NSwyNTUsMjU1LC4wNCl9Ym9keS5kYXJrLW1vZGUgLm1hdC1saXN0LXNpbmdsZS1zZWxlY3RlZC1vcHRpb24sYm9keS5kYXJrLW1vZGUgLm1hdC1saXN0LXNpbmdsZS1zZWxlY3RlZC1vcHRpb246aG92ZXIsYm9keS5kYXJrLW1vZGUgLm1hdC1saXN0LXNpbmdsZS1zZWxlY3RlZC1vcHRpb246Zm9jdXN7YmFja2dyb3VuZDpyZ2JhKDI1NSwyNTUsMjU1LC4xMil9Ym9keS5kYXJrLW1vZGUgLm1hdC1tZW51LXBhbmVse2JhY2tncm91bmQ6IzQyNDI0Mn1ib2R5LmRhcmstbW9kZSAubWF0LW1lbnUtcGFuZWw6bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggMnB4IDRweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNHB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDEwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Ym9keS5kYXJrLW1vZGUgLm1hdC1tZW51LWl0ZW17YmFja2dyb3VuZDp0cmFuc3BhcmVudDtjb2xvcjojZmZmfWJvZHkuZGFyay1tb2RlIC5tYXQtbWVudS1pdGVtW2Rpc2FibGVkXSxib2R5LmRhcmstbW9kZSAubWF0LW1lbnUtaXRlbVtkaXNhYmxlZF0gLm1hdC1tZW51LXN1Ym1lbnUtaWNvbixib2R5LmRhcmstbW9kZSAubWF0LW1lbnUtaXRlbVtkaXNhYmxlZF0gLm1hdC1pY29uLW5vLWNvbG9ye2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjUpfWJvZHkuZGFyay1tb2RlIC5tYXQtbWVudS1pdGVtIC5tYXQtaWNvbi1uby1jb2xvcixib2R5LmRhcmstbW9kZSAubWF0LW1lbnUtc3VibWVudS1pY29ue2NvbG9yOiNmZmZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1tZW51LWl0ZW06aG92ZXI6bm90KFtkaXNhYmxlZF0pLGJvZHkuZGFyay1tb2RlIC5tYXQtbWVudS1pdGVtLmNkay1wcm9ncmFtLWZvY3VzZWQ6bm90KFtkaXNhYmxlZF0pLGJvZHkuZGFyay1tb2RlIC5tYXQtbWVudS1pdGVtLmNkay1rZXlib2FyZC1mb2N1c2VkOm5vdChbZGlzYWJsZWRdKSxib2R5LmRhcmstbW9kZSAubWF0LW1lbnUtaXRlbS1oaWdobGlnaHRlZDpub3QoW2Rpc2FibGVkXSl7YmFja2dyb3VuZDpyZ2JhKDI1NSwyNTUsMjU1LC4wNCl9Ym9keS5kYXJrLW1vZGUgLm1hdC1wYWdpbmF0b3J7YmFja2dyb3VuZDojNDI0MjQyfWJvZHkuZGFyay1tb2RlIC5tYXQtcGFnaW5hdG9yLGJvZHkuZGFyay1tb2RlIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZSAubWF0LXNlbGVjdC10cmlnZ2Vye2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjcpfWJvZHkuZGFyay1tb2RlIC5tYXQtcGFnaW5hdG9yLWRlY3JlbWVudCxib2R5LmRhcmstbW9kZSAubWF0LXBhZ2luYXRvci1pbmNyZW1lbnR7Ym9yZGVyLXRvcDoycHggc29saWQgI2ZmZjtib3JkZXItcmlnaHQ6MnB4IHNvbGlkICNmZmZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1wYWdpbmF0b3ItZmlyc3QsYm9keS5kYXJrLW1vZGUgLm1hdC1wYWdpbmF0b3ItbGFzdHtib3JkZXItdG9wOjJweCBzb2xpZCAjZmZmfWJvZHkuZGFyay1tb2RlIC5tYXQtaWNvbi1idXR0b25bZGlzYWJsZWRdIC5tYXQtcGFnaW5hdG9yLWRlY3JlbWVudCxib2R5LmRhcmstbW9kZSAubWF0LWljb24tYnV0dG9uW2Rpc2FibGVkXSAubWF0LXBhZ2luYXRvci1pbmNyZW1lbnQsYm9keS5kYXJrLW1vZGUgLm1hdC1pY29uLWJ1dHRvbltkaXNhYmxlZF0gLm1hdC1wYWdpbmF0b3ItZmlyc3QsYm9keS5kYXJrLW1vZGUgLm1hdC1pY29uLWJ1dHRvbltkaXNhYmxlZF0gLm1hdC1wYWdpbmF0b3ItbGFzdHtib3JkZXItY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNSl9Ym9keS5kYXJrLW1vZGUgLm1hdC1wcm9ncmVzcy1iYXItYmFja2dyb3VuZHtmaWxsOiM2MDNmMjR9Ym9keS5kYXJrLW1vZGUgLm1hdC1wcm9ncmVzcy1iYXItYnVmZmVye2JhY2tncm91bmQtY29sb3I6IzYwM2YyNH1ib2R5LmRhcmstbW9kZSAubWF0LXByb2dyZXNzLWJhci1maWxsOjphZnRlcntiYWNrZ3JvdW5kLWNvbG9yOiNlZjZjMDB9Ym9keS5kYXJrLW1vZGUgLm1hdC1wcm9ncmVzcy1iYXIubWF0LWFjY2VudCAubWF0LXByb2dyZXNzLWJhci1iYWNrZ3JvdW5ke2ZpbGw6IzYwM2YyNH1ib2R5LmRhcmstbW9kZSAubWF0LXByb2dyZXNzLWJhci5tYXQtYWNjZW50IC5tYXQtcHJvZ3Jlc3MtYmFyLWJ1ZmZlcntiYWNrZ3JvdW5kLWNvbG9yOiM2MDNmMjR9Ym9keS5kYXJrLW1vZGUgLm1hdC1wcm9ncmVzcy1iYXIubWF0LWFjY2VudCAubWF0LXByb2dyZXNzLWJhci1maWxsOjphZnRlcntiYWNrZ3JvdW5kLWNvbG9yOiNlZjZjMDB9Ym9keS5kYXJrLW1vZGUgLm1hdC1wcm9ncmVzcy1iYXIubWF0LXdhcm4gLm1hdC1wcm9ncmVzcy1iYXItYmFja2dyb3VuZHtmaWxsOiM2MTM1MzJ9Ym9keS5kYXJrLW1vZGUgLm1hdC1wcm9ncmVzcy1iYXIubWF0LXdhcm4gLm1hdC1wcm9ncmVzcy1iYXItYnVmZmVye2JhY2tncm91bmQtY29sb3I6IzYxMzUzMn1ib2R5LmRhcmstbW9kZSAubWF0LXByb2dyZXNzLWJhci5tYXQtd2FybiAubWF0LXByb2dyZXNzLWJhci1maWxsOjphZnRlcntiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1wcm9ncmVzcy1zcGlubmVyIGNpcmNsZSxib2R5LmRhcmstbW9kZSAubWF0LXNwaW5uZXIgY2lyY2xle3N0cm9rZTojZWY2YzAwfWJvZHkuZGFyay1tb2RlIC5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lci5tYXQtYWNjZW50IGNpcmNsZSxib2R5LmRhcmstbW9kZSAubWF0LXNwaW5uZXIubWF0LWFjY2VudCBjaXJjbGV7c3Ryb2tlOiNlZjZjMDB9Ym9keS5kYXJrLW1vZGUgLm1hdC1wcm9ncmVzcy1zcGlubmVyLm1hdC13YXJuIGNpcmNsZSxib2R5LmRhcmstbW9kZSAubWF0LXNwaW5uZXIubWF0LXdhcm4gY2lyY2xle3N0cm9rZTojZjQ0MzM2fWJvZHkuZGFyay1tb2RlIC5tYXQtcmFkaW8tb3V0ZXItY2lyY2xle2JvcmRlci1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KX1ib2R5LmRhcmstbW9kZSAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtcmFkaW8tY2hlY2tlZCAubWF0LXJhZGlvLW91dGVyLWNpcmNsZXtib3JkZXItY29sb3I6I2VmNmMwMH1ib2R5LmRhcmstbW9kZSAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcHJpbWFyeSAubWF0LXJhZGlvLWlubmVyLWNpcmNsZSxib2R5LmRhcmstbW9kZSAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcHJpbWFyeSAubWF0LXJhZGlvLXJpcHBsZSAubWF0LXJpcHBsZS1lbGVtZW50Om5vdCgubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxlKSxib2R5LmRhcmstbW9kZSAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtcmFkaW8tY2hlY2tlZCAubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxlLGJvZHkuZGFyay1tb2RlIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC1wcmltYXJ5OmFjdGl2ZSAubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxle2JhY2tncm91bmQtY29sb3I6I2VmNmMwMH1ib2R5LmRhcmstbW9kZSAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtYWNjZW50Lm1hdC1yYWRpby1jaGVja2VkIC5tYXQtcmFkaW8tb3V0ZXItY2lyY2xle2JvcmRlci1jb2xvcjojZWY2YzAwfWJvZHkuZGFyay1tb2RlIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC1hY2NlbnQgLm1hdC1yYWRpby1pbm5lci1jaXJjbGUsYm9keS5kYXJrLW1vZGUgLm1hdC1yYWRpby1idXR0b24ubWF0LWFjY2VudCAubWF0LXJhZGlvLXJpcHBsZSAubWF0LXJpcHBsZS1lbGVtZW50Om5vdCgubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxlKSxib2R5LmRhcmstbW9kZSAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtYWNjZW50Lm1hdC1yYWRpby1jaGVja2VkIC5tYXQtcmFkaW8tcGVyc2lzdGVudC1yaXBwbGUsYm9keS5kYXJrLW1vZGUgLm1hdC1yYWRpby1idXR0b24ubWF0LWFjY2VudDphY3RpdmUgLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZXtiYWNrZ3JvdW5kLWNvbG9yOiNlZjZjMDB9Ym9keS5kYXJrLW1vZGUgLm1hdC1yYWRpby1idXR0b24ubWF0LXdhcm4ubWF0LXJhZGlvLWNoZWNrZWQgLm1hdC1yYWRpby1vdXRlci1jaXJjbGV7Ym9yZGVyLWNvbG9yOiNmNDQzMzZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1yYWRpby1idXR0b24ubWF0LXdhcm4gLm1hdC1yYWRpby1pbm5lci1jaXJjbGUsYm9keS5kYXJrLW1vZGUgLm1hdC1yYWRpby1idXR0b24ubWF0LXdhcm4gLm1hdC1yYWRpby1yaXBwbGUgLm1hdC1yaXBwbGUtZWxlbWVudDpub3QoLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZSksYm9keS5kYXJrLW1vZGUgLm1hdC1yYWRpby1idXR0b24ubWF0LXdhcm4ubWF0LXJhZGlvLWNoZWNrZWQgLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZSxib2R5LmRhcmstbW9kZSAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtd2FybjphY3RpdmUgLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1yYWRpby1idXR0b24ubWF0LXJhZGlvLWRpc2FibGVkLm1hdC1yYWRpby1jaGVja2VkIC5tYXQtcmFkaW8tb3V0ZXItY2lyY2xlLGJvZHkuZGFyay1tb2RlIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC1yYWRpby1kaXNhYmxlZCAubWF0LXJhZGlvLW91dGVyLWNpcmNsZXtib3JkZXItY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNSl9Ym9keS5kYXJrLW1vZGUgLm1hdC1yYWRpby1idXR0b24ubWF0LXJhZGlvLWRpc2FibGVkIC5tYXQtcmFkaW8tcmlwcGxlIC5tYXQtcmlwcGxlLWVsZW1lbnQsYm9keS5kYXJrLW1vZGUgLm1hdC1yYWRpby1idXR0b24ubWF0LXJhZGlvLWRpc2FibGVkIC5tYXQtcmFkaW8taW5uZXItY2lyY2xle2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNSl9Ym9keS5kYXJrLW1vZGUgLm1hdC1yYWRpby1idXR0b24ubWF0LXJhZGlvLWRpc2FibGVkIC5tYXQtcmFkaW8tbGFiZWwtY29udGVudHtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC41KX1ib2R5LmRhcmstbW9kZSAubWF0LXJhZGlvLWJ1dHRvbiAubWF0LXJpcHBsZS1lbGVtZW50e2JhY2tncm91bmQtY29sb3I6I2ZmZn1ib2R5LmRhcmstbW9kZSAubWF0LXNlbGVjdC12YWx1ZXtjb2xvcjojZmZmfWJvZHkuZGFyay1tb2RlIC5tYXQtc2VsZWN0LXBsYWNlaG9sZGVye2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjUpfWJvZHkuZGFyay1tb2RlIC5tYXQtc2VsZWN0LWRpc2FibGVkIC5tYXQtc2VsZWN0LXZhbHVle2NvbG9yOiM2MTYxNjF9Ym9keS5kYXJrLW1vZGUgLm1hdC1zZWxlY3QtYXJyb3d7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNyl9Ym9keS5kYXJrLW1vZGUgLm1hdC1zZWxlY3QtcGFuZWx7YmFja2dyb3VuZDojNDI0MjQyfWJvZHkuZGFyay1tb2RlIC5tYXQtc2VsZWN0LXBhbmVsOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDJweCA0cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDRweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfWJvZHkuZGFyay1tb2RlIC5tYXQtc2VsZWN0LXBhbmVsIC5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZDpub3QoLm1hdC1vcHRpb24tbXVsdGlwbGUpe2JhY2tncm91bmQ6cmdiYSgyNTUsMjU1LDI1NSwuMTIpfWJvZHkuZGFyay1tb2RlIC5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZC5tYXQtcHJpbWFyeSAubWF0LXNlbGVjdC1hcnJvd3tjb2xvcjojZWY2YzAwfWJvZHkuZGFyay1tb2RlIC5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZC5tYXQtYWNjZW50IC5tYXQtc2VsZWN0LWFycm93e2NvbG9yOiNlZjZjMDB9Ym9keS5kYXJrLW1vZGUgLm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkLm1hdC13YXJuIC5tYXQtc2VsZWN0LWFycm93e2NvbG9yOiNmNDQzMzZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1mb3JtLWZpZWxkIC5tYXQtc2VsZWN0Lm1hdC1zZWxlY3QtaW52YWxpZCAubWF0LXNlbGVjdC1hcnJvd3tjb2xvcjojZjQ0MzM2fWJvZHkuZGFyay1tb2RlIC5tYXQtZm9ybS1maWVsZCAubWF0LXNlbGVjdC5tYXQtc2VsZWN0LWRpc2FibGVkIC5tYXQtc2VsZWN0LWFycm93e2NvbG9yOiM2MTYxNjF9Ym9keS5kYXJrLW1vZGUgLm1hdC1kcmF3ZXItY29udGFpbmVye2JhY2tncm91bmQtY29sb3I6IzMwMzAzMDtjb2xvcjojZmZmfWJvZHkuZGFyay1tb2RlIC5tYXQtZHJhd2Vye2JhY2tncm91bmQtY29sb3I6IzQyNDI0Mjtjb2xvcjojZmZmfWJvZHkuZGFyay1tb2RlIC5tYXQtZHJhd2VyLm1hdC1kcmF3ZXItcHVzaHtiYWNrZ3JvdW5kLWNvbG9yOiM0MjQyNDJ9Ym9keS5kYXJrLW1vZGUgLm1hdC1kcmF3ZXI6bm90KC5tYXQtZHJhd2VyLXNpZGUpe2JveC1zaGFkb3c6MHB4IDhweCAxMHB4IC01cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxNnB4IDI0cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDZweCAzMHB4IDVweCByZ2JhKDAsIDAsIDAsIDAuMTIpfWJvZHkuZGFyay1tb2RlIC5tYXQtZHJhd2VyLXNpZGV7Ym9yZGVyLXJpZ2h0OnNvbGlkIDFweCByZ2JhKDI1NSwyNTUsMjU1LC4xMil9Ym9keS5kYXJrLW1vZGUgLm1hdC1kcmF3ZXItc2lkZS5tYXQtZHJhd2VyLWVuZHtib3JkZXItbGVmdDpzb2xpZCAxcHggcmdiYSgyNTUsMjU1LDI1NSwuMTIpO2JvcmRlci1yaWdodDpub25lfWJvZHkuZGFyay1tb2RlIFtkaXI9cnRsXSAubWF0LWRyYXdlci1zaWRle2JvcmRlci1sZWZ0OnNvbGlkIDFweCByZ2JhKDI1NSwyNTUsMjU1LC4xMik7Ym9yZGVyLXJpZ2h0Om5vbmV9Ym9keS5kYXJrLW1vZGUgW2Rpcj1ydGxdIC5tYXQtZHJhd2VyLXNpZGUubWF0LWRyYXdlci1lbmR7Ym9yZGVyLWxlZnQ6bm9uZTtib3JkZXItcmlnaHQ6c29saWQgMXB4IHJnYmEoMjU1LDI1NSwyNTUsLjEyKX1ib2R5LmRhcmstbW9kZSAubWF0LWRyYXdlci1iYWNrZHJvcC5tYXQtZHJhd2VyLXNob3due2JhY2tncm91bmQtY29sb3I6cmdiYSgxODksMTg5LDE4OSwuNil9Ym9keS5kYXJrLW1vZGUgLm1hdC1zbGlkZS10b2dnbGUubWF0LWNoZWNrZWQgLm1hdC1zbGlkZS10b2dnbGUtdGh1bWJ7YmFja2dyb3VuZC1jb2xvcjojZWY2YzAwfWJvZHkuZGFyay1tb2RlIC5tYXQtc2xpZGUtdG9nZ2xlLm1hdC1jaGVja2VkIC5tYXQtc2xpZGUtdG9nZ2xlLWJhcntiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjM5LDEwOCwwLC41NCl9Ym9keS5kYXJrLW1vZGUgLm1hdC1zbGlkZS10b2dnbGUubWF0LWNoZWNrZWQgLm1hdC1yaXBwbGUtZWxlbWVudHtiYWNrZ3JvdW5kLWNvbG9yOiNlZjZjMDB9Ym9keS5kYXJrLW1vZGUgLm1hdC1zbGlkZS10b2dnbGUubWF0LXByaW1hcnkubWF0LWNoZWNrZWQgLm1hdC1zbGlkZS10b2dnbGUtdGh1bWJ7YmFja2dyb3VuZC1jb2xvcjojZWY2YzAwfWJvZHkuZGFyay1tb2RlIC5tYXQtc2xpZGUtdG9nZ2xlLm1hdC1wcmltYXJ5Lm1hdC1jaGVja2VkIC5tYXQtc2xpZGUtdG9nZ2xlLWJhcntiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjM5LDEwOCwwLC41NCl9Ym9keS5kYXJrLW1vZGUgLm1hdC1zbGlkZS10b2dnbGUubWF0LXByaW1hcnkubWF0LWNoZWNrZWQgLm1hdC1yaXBwbGUtZWxlbWVudHtiYWNrZ3JvdW5kLWNvbG9yOiNlZjZjMDB9Ym9keS5kYXJrLW1vZGUgLm1hdC1zbGlkZS10b2dnbGUubWF0LXdhcm4ubWF0LWNoZWNrZWQgLm1hdC1zbGlkZS10b2dnbGUtdGh1bWJ7YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fWJvZHkuZGFyay1tb2RlIC5tYXQtc2xpZGUtdG9nZ2xlLm1hdC13YXJuLm1hdC1jaGVja2VkIC5tYXQtc2xpZGUtdG9nZ2xlLWJhcntiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjQ0LDY3LDU0LC41NCl9Ym9keS5kYXJrLW1vZGUgLm1hdC1zbGlkZS10b2dnbGUubWF0LXdhcm4ubWF0LWNoZWNrZWQgLm1hdC1yaXBwbGUtZWxlbWVudHtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1zbGlkZS10b2dnbGU6bm90KC5tYXQtY2hlY2tlZCkgLm1hdC1yaXBwbGUtZWxlbWVudHtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1zbGlkZS10b2dnbGUtdGh1bWJ7Ym94LXNoYWRvdzowcHggMnB4IDFweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMXB4IDFweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDNweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKTtiYWNrZ3JvdW5kLWNvbG9yOiNiZGJkYmR9Ym9keS5kYXJrLW1vZGUgLm1hdC1zbGlkZS10b2dnbGUtYmFye2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNSl9Ym9keS5kYXJrLW1vZGUgLm1hdC1zbGlkZXItdHJhY2stYmFja2dyb3VuZHtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjMpfWJvZHkuZGFyay1tb2RlIC5tYXQtcHJpbWFyeSAubWF0LXNsaWRlci10cmFjay1maWxsLGJvZHkuZGFyay1tb2RlIC5tYXQtcHJpbWFyeSAubWF0LXNsaWRlci10aHVtYixib2R5LmRhcmstbW9kZSAubWF0LXByaW1hcnkgLm1hdC1zbGlkZXItdGh1bWItbGFiZWx7YmFja2dyb3VuZC1jb2xvcjojZWY2YzAwfWJvZHkuZGFyay1tb2RlIC5tYXQtcHJpbWFyeSAubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0e2NvbG9yOiNmZmZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1wcmltYXJ5IC5tYXQtc2xpZGVyLWZvY3VzLXJpbmd7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDIzOSwxMDgsMCwuMil9Ym9keS5kYXJrLW1vZGUgLm1hdC1hY2NlbnQgLm1hdC1zbGlkZXItdHJhY2stZmlsbCxib2R5LmRhcmstbW9kZSAubWF0LWFjY2VudCAubWF0LXNsaWRlci10aHVtYixib2R5LmRhcmstbW9kZSAubWF0LWFjY2VudCAubWF0LXNsaWRlci10aHVtYi1sYWJlbHtiYWNrZ3JvdW5kLWNvbG9yOiNlZjZjMDB9Ym9keS5kYXJrLW1vZGUgLm1hdC1hY2NlbnQgLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dHtjb2xvcjojZmZmfWJvZHkuZGFyay1tb2RlIC5tYXQtYWNjZW50IC5tYXQtc2xpZGVyLWZvY3VzLXJpbmd7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDIzOSwxMDgsMCwuMil9Ym9keS5kYXJrLW1vZGUgLm1hdC13YXJuIC5tYXQtc2xpZGVyLXRyYWNrLWZpbGwsYm9keS5kYXJrLW1vZGUgLm1hdC13YXJuIC5tYXQtc2xpZGVyLXRodW1iLGJvZHkuZGFyay1tb2RlIC5tYXQtd2FybiAubWF0LXNsaWRlci10aHVtYi1sYWJlbHtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Ym9keS5kYXJrLW1vZGUgLm1hdC13YXJuIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHR7Y29sb3I6I2ZmZn1ib2R5LmRhcmstbW9kZSAubWF0LXdhcm4gLm1hdC1zbGlkZXItZm9jdXMtcmluZ3tiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjQ0LDY3LDU0LC4yKX1ib2R5LmRhcmstbW9kZSAubWF0LXNsaWRlcjpob3ZlciAubWF0LXNsaWRlci10cmFjay1iYWNrZ3JvdW5kLGJvZHkuZGFyay1tb2RlIC5tYXQtc2xpZGVyLmNkay1mb2N1c2VkIC5tYXQtc2xpZGVyLXRyYWNrLWJhY2tncm91bmR7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4zKX1ib2R5LmRhcmstbW9kZSAubWF0LXNsaWRlci1kaXNhYmxlZCAubWF0LXNsaWRlci10cmFjay1iYWNrZ3JvdW5kLGJvZHkuZGFyay1tb2RlIC5tYXQtc2xpZGVyLWRpc2FibGVkIC5tYXQtc2xpZGVyLXRyYWNrLWZpbGwsYm9keS5kYXJrLW1vZGUgLm1hdC1zbGlkZXItZGlzYWJsZWQgLm1hdC1zbGlkZXItdGh1bWJ7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4zKX1ib2R5LmRhcmstbW9kZSAubWF0LXNsaWRlci1kaXNhYmxlZDpob3ZlciAubWF0LXNsaWRlci10cmFjay1iYWNrZ3JvdW5ke2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMyl9Ym9keS5kYXJrLW1vZGUgLm1hdC1zbGlkZXItbWluLXZhbHVlIC5tYXQtc2xpZGVyLWZvY3VzLXJpbmd7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xMil9Ym9keS5kYXJrLW1vZGUgLm1hdC1zbGlkZXItbWluLXZhbHVlLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZyAubWF0LXNsaWRlci10aHVtYixib2R5LmRhcmstbW9kZSAubWF0LXNsaWRlci1taW4tdmFsdWUubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVse2JhY2tncm91bmQtY29sb3I6I2ZmZn1ib2R5LmRhcmstbW9kZSAubWF0LXNsaWRlci1taW4tdmFsdWUubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nLmNkay1mb2N1c2VkIC5tYXQtc2xpZGVyLXRodW1iLGJvZHkuZGFyay1tb2RlIC5tYXQtc2xpZGVyLW1pbi12YWx1ZS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcuY2RrLWZvY3VzZWQgLm1hdC1zbGlkZXItdGh1bWItbGFiZWx7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4zKX1ib2R5LmRhcmstbW9kZSAubWF0LXNsaWRlci1taW4tdmFsdWU6bm90KC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcpIC5tYXQtc2xpZGVyLXRodW1ie2JvcmRlci1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4zKTtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50fWJvZHkuZGFyay1tb2RlIC5tYXQtc2xpZGVyLW1pbi12YWx1ZTpub3QoLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZyk6aG92ZXIgLm1hdC1zbGlkZXItdGh1bWIsYm9keS5kYXJrLW1vZGUgLm1hdC1zbGlkZXItbWluLXZhbHVlOm5vdCgubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nKS5jZGstZm9jdXNlZCAubWF0LXNsaWRlci10aHVtYntib3JkZXItY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMyl9Ym9keS5kYXJrLW1vZGUgLm1hdC1zbGlkZXItbWluLXZhbHVlOm5vdCgubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nKTpob3Zlci5tYXQtc2xpZGVyLWRpc2FibGVkIC5tYXQtc2xpZGVyLXRodW1iLGJvZHkuZGFyay1tb2RlIC5tYXQtc2xpZGVyLW1pbi12YWx1ZTpub3QoLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZykuY2RrLWZvY3VzZWQubWF0LXNsaWRlci1kaXNhYmxlZCAubWF0LXNsaWRlci10aHVtYntib3JkZXItY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMyl9Ym9keS5kYXJrLW1vZGUgLm1hdC1zbGlkZXItaGFzLXRpY2tzIC5tYXQtc2xpZGVyLXdyYXBwZXI6OmFmdGVye2JvcmRlci1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KX1ib2R5LmRhcmstbW9kZSAubWF0LXNsaWRlci1ob3Jpem9udGFsIC5tYXQtc2xpZGVyLXRpY2tze2JhY2tncm91bmQtaW1hZ2U6cmVwZWF0aW5nLWxpbmVhci1ncmFkaWVudCh0byByaWdodCwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjcpLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNykgMnB4LCB0cmFuc3BhcmVudCAwLCB0cmFuc3BhcmVudCk7YmFja2dyb3VuZC1pbWFnZTotbW96LXJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQoMC4wMDAxZGVnLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNyksIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43KSAycHgsIHRyYW5zcGFyZW50IDAsIHRyYW5zcGFyZW50KX1ib2R5LmRhcmstbW9kZSAubWF0LXNsaWRlci12ZXJ0aWNhbCAubWF0LXNsaWRlci10aWNrc3tiYWNrZ3JvdW5kLWltYWdlOnJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNyksIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43KSAycHgsIHRyYW5zcGFyZW50IDAsIHRyYW5zcGFyZW50KX1ib2R5LmRhcmstbW9kZSAubWF0LXN0ZXAtaGVhZGVyLmNkay1rZXlib2FyZC1mb2N1c2VkLGJvZHkuZGFyay1tb2RlIC5tYXQtc3RlcC1oZWFkZXIuY2RrLXByb2dyYW0tZm9jdXNlZCxib2R5LmRhcmstbW9kZSAubWF0LXN0ZXAtaGVhZGVyOmhvdmVyOm5vdChbYXJpYS1kaXNhYmxlZF0pLGJvZHkuZGFyay1tb2RlIC5tYXQtc3RlcC1oZWFkZXI6aG92ZXJbYXJpYS1kaXNhYmxlZD1mYWxzZV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4wNCl9Ym9keS5kYXJrLW1vZGUgLm1hdC1zdGVwLWhlYWRlcjpob3ZlclthcmlhLWRpc2FibGVkPXRydWVde2N1cnNvcjpkZWZhdWx0fUBtZWRpYShob3Zlcjogbm9uZSl7Ym9keS5kYXJrLW1vZGUgLm1hdC1zdGVwLWhlYWRlcjpob3ZlcntiYWNrZ3JvdW5kOm5vbmV9fWJvZHkuZGFyay1tb2RlIC5tYXQtc3RlcC1oZWFkZXIgLm1hdC1zdGVwLWxhYmVsLGJvZHkuZGFyay1tb2RlIC5tYXQtc3RlcC1oZWFkZXIgLm1hdC1zdGVwLW9wdGlvbmFse2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjcpfWJvZHkuZGFyay1tb2RlIC5tYXQtc3RlcC1oZWFkZXIgLm1hdC1zdGVwLWljb257YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KTtjb2xvcjojZmZmfWJvZHkuZGFyay1tb2RlIC5tYXQtc3RlcC1oZWFkZXIgLm1hdC1zdGVwLWljb24tc2VsZWN0ZWQsYm9keS5kYXJrLW1vZGUgLm1hdC1zdGVwLWhlYWRlciAubWF0LXN0ZXAtaWNvbi1zdGF0ZS1kb25lLGJvZHkuZGFyay1tb2RlIC5tYXQtc3RlcC1oZWFkZXIgLm1hdC1zdGVwLWljb24tc3RhdGUtZWRpdHtiYWNrZ3JvdW5kLWNvbG9yOiNlZjZjMDA7Y29sb3I6I2ZmZn1ib2R5LmRhcmstbW9kZSAubWF0LXN0ZXAtaGVhZGVyLm1hdC1hY2NlbnQgLm1hdC1zdGVwLWljb257Y29sb3I6I2ZmZn1ib2R5LmRhcmstbW9kZSAubWF0LXN0ZXAtaGVhZGVyLm1hdC1hY2NlbnQgLm1hdC1zdGVwLWljb24tc2VsZWN0ZWQsYm9keS5kYXJrLW1vZGUgLm1hdC1zdGVwLWhlYWRlci5tYXQtYWNjZW50IC5tYXQtc3RlcC1pY29uLXN0YXRlLWRvbmUsYm9keS5kYXJrLW1vZGUgLm1hdC1zdGVwLWhlYWRlci5tYXQtYWNjZW50IC5tYXQtc3RlcC1pY29uLXN0YXRlLWVkaXR7YmFja2dyb3VuZC1jb2xvcjojZWY2YzAwO2NvbG9yOiNmZmZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1zdGVwLWhlYWRlci5tYXQtd2FybiAubWF0LXN0ZXAtaWNvbntjb2xvcjojZmZmfWJvZHkuZGFyay1tb2RlIC5tYXQtc3RlcC1oZWFkZXIubWF0LXdhcm4gLm1hdC1zdGVwLWljb24tc2VsZWN0ZWQsYm9keS5kYXJrLW1vZGUgLm1hdC1zdGVwLWhlYWRlci5tYXQtd2FybiAubWF0LXN0ZXAtaWNvbi1zdGF0ZS1kb25lLGJvZHkuZGFyay1tb2RlIC5tYXQtc3RlcC1oZWFkZXIubWF0LXdhcm4gLm1hdC1zdGVwLWljb24tc3RhdGUtZWRpdHtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzY7Y29sb3I6I2ZmZn1ib2R5LmRhcmstbW9kZSAubWF0LXN0ZXAtaGVhZGVyIC5tYXQtc3RlcC1pY29uLXN0YXRlLWVycm9ye2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Y29sb3I6I2Y0NDMzNn1ib2R5LmRhcmstbW9kZSAubWF0LXN0ZXAtaGVhZGVyIC5tYXQtc3RlcC1sYWJlbC5tYXQtc3RlcC1sYWJlbC1hY3RpdmV7Y29sb3I6I2ZmZn1ib2R5LmRhcmstbW9kZSAubWF0LXN0ZXAtaGVhZGVyIC5tYXQtc3RlcC1sYWJlbC5tYXQtc3RlcC1sYWJlbC1lcnJvcntjb2xvcjojZjQ0MzM2fWJvZHkuZGFyay1tb2RlIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsLGJvZHkuZGFyay1tb2RlIC5tYXQtc3RlcHBlci12ZXJ0aWNhbHtiYWNrZ3JvdW5kLWNvbG9yOiM0MjQyNDJ9Ym9keS5kYXJrLW1vZGUgLm1hdC1zdGVwcGVyLXZlcnRpY2FsLWxpbmU6OmJlZm9yZXtib3JkZXItbGVmdC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xMil9Ym9keS5kYXJrLW1vZGUgLm1hdC1ob3Jpem9udGFsLXN0ZXBwZXItaGVhZGVyOjpiZWZvcmUsYm9keS5kYXJrLW1vZGUgLm1hdC1ob3Jpem9udGFsLXN0ZXBwZXItaGVhZGVyOjphZnRlcixib2R5LmRhcmstbW9kZSAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbC1saW5le2JvcmRlci10b3AtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMTIpfWJvZHkuZGFyay1tb2RlIC5tYXQtc29ydC1oZWFkZXItYXJyb3d7Y29sb3I6I2M2YzZjNn1ib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWhlYWRlcntib3JkZXItYm90dG9tOjFweCBzb2xpZCByZ2JhKDI1NSwyNTUsMjU1LC4xMil9Ym9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAtaW52ZXJ0ZWQtaGVhZGVyIC5tYXQtdGFiLW5hdi1iYXIsYm9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAtaW52ZXJ0ZWQtaGVhZGVyIC5tYXQtdGFiLWhlYWRlcntib3JkZXItdG9wOjFweCBzb2xpZCByZ2JhKDI1NSwyNTUsMjU1LC4xMik7Ym9yZGVyLWJvdHRvbTpub25lfWJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWxhYmVsLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWxpbmt7Y29sb3I6I2ZmZn1ib2R5LmRhcmstbW9kZSAubWF0LXRhYi1sYWJlbC5tYXQtdGFiLWRpc2FibGVkLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZHtjb2xvcjojNjE2MTYxfWJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb257Ym9yZGVyLWNvbG9yOiNmZmZ9Ym9keS5kYXJrLW1vZGUgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWQgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbntib3JkZXItY29sb3I6IzYxNjE2MX1ib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cFtjbGFzcyo9bWF0LWJhY2tncm91bmQtXSAubWF0LXRhYi1oZWFkZXIsYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhcltjbGFzcyo9bWF0LWJhY2tncm91bmQtXXtib3JkZXItYm90dG9tOm5vbmU7Ym9yZGVyLXRvcDpub25lfWJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWdyb3VwLm1hdC1wcmltYXJ5IC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksYm9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LXByaW1hcnkgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWdyb3VwLm1hdC1wcmltYXJ5IC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSxib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC5tYXQtcHJpbWFyeSAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSxib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLm1hdC1wcmltYXJ5IC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtcHJpbWFyeSAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtcHJpbWFyeSAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtcHJpbWFyeSAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjUxLDE0MCwwLC4zKX1ib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC5tYXQtcHJpbWFyeSAubWF0LWluay1iYXIsYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtcHJpbWFyeSAubWF0LWluay1iYXJ7YmFja2dyb3VuZC1jb2xvcjojZWY2YzAwfWJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWdyb3VwLm1hdC1wcmltYXJ5Lm1hdC1iYWNrZ3JvdW5kLXByaW1hcnk+Lm1hdC10YWItaGVhZGVyIC5tYXQtaW5rLWJhcixib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC5tYXQtcHJpbWFyeS5tYXQtYmFja2dyb3VuZC1wcmltYXJ5Pi5tYXQtdGFiLWxpbmstY29udGFpbmVyIC5tYXQtaW5rLWJhcixib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLm1hdC1wcmltYXJ5Lm1hdC1iYWNrZ3JvdW5kLXByaW1hcnk+Lm1hdC10YWItaGVhZGVyIC5tYXQtaW5rLWJhcixib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLm1hdC1wcmltYXJ5Lm1hdC1iYWNrZ3JvdW5kLXByaW1hcnk+Lm1hdC10YWItbGluay1jb250YWluZXIgLm1hdC1pbmstYmFye2JhY2tncm91bmQtY29sb3I6I2ZmZn1ib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC5tYXQtYWNjZW50IC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksYm9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LWFjY2VudCAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksYm9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LWFjY2VudCAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksYm9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LWFjY2VudCAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSxib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLm1hdC1hY2NlbnQgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSxib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLm1hdC1hY2NlbnQgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLW5hdi1iYXIubWF0LWFjY2VudCAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtYWNjZW50IC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpe2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTEsMTQwLDAsLjMpfWJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWdyb3VwLm1hdC1hY2NlbnQgLm1hdC1pbmstYmFyLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLW5hdi1iYXIubWF0LWFjY2VudCAubWF0LWluay1iYXJ7YmFja2dyb3VuZC1jb2xvcjojZWY2YzAwfWJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWdyb3VwLm1hdC1hY2NlbnQubWF0LWJhY2tncm91bmQtYWNjZW50Pi5tYXQtdGFiLWhlYWRlciAubWF0LWluay1iYXIsYm9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LWFjY2VudC5tYXQtYmFja2dyb3VuZC1hY2NlbnQ+Lm1hdC10YWItbGluay1jb250YWluZXIgLm1hdC1pbmstYmFyLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLW5hdi1iYXIubWF0LWFjY2VudC5tYXQtYmFja2dyb3VuZC1hY2NlbnQ+Lm1hdC10YWItaGVhZGVyIC5tYXQtaW5rLWJhcixib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLm1hdC1hY2NlbnQubWF0LWJhY2tncm91bmQtYWNjZW50Pi5tYXQtdGFiLWxpbmstY29udGFpbmVyIC5tYXQtaW5rLWJhcntiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9Ym9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LXdhcm4gLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSxib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC5tYXQtd2FybiAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksYm9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LXdhcm4gLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWdyb3VwLm1hdC13YXJuIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLW5hdi1iYXIubWF0LXdhcm4gLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSxib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLm1hdC13YXJuIC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSxib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLm1hdC13YXJuIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSxib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLm1hdC13YXJuIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpe2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjA1LDIxMCwuMyl9Ym9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LXdhcm4gLm1hdC1pbmstYmFyLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLW5hdi1iYXIubWF0LXdhcm4gLm1hdC1pbmstYmFye2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn1ib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC5tYXQtd2Fybi5tYXQtYmFja2dyb3VuZC13YXJuPi5tYXQtdGFiLWhlYWRlciAubWF0LWluay1iYXIsYm9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LXdhcm4ubWF0LWJhY2tncm91bmQtd2Fybj4ubWF0LXRhYi1saW5rLWNvbnRhaW5lciAubWF0LWluay1iYXIsYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtd2Fybi5tYXQtYmFja2dyb3VuZC13YXJuPi5tYXQtdGFiLWhlYWRlciAubWF0LWluay1iYXIsYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtd2Fybi5tYXQtYmFja2dyb3VuZC13YXJuPi5tYXQtdGFiLWxpbmstY29udGFpbmVyIC5tYXQtaW5rLWJhcntiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9Ym9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeSAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnkgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnkgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnkgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5IC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5IC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSxib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnkgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeSAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjUxLDE0MCwwLC4zKX1ib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5Pi5tYXQtdGFiLWhlYWRlcixib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5Pi5tYXQtdGFiLWxpbmstY29udGFpbmVyLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnk+Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24sYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5Pi5tYXQtdGFiLWhlYWRlcixib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnk+Lm1hdC10YWItbGluay1jb250YWluZXIsYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5Pi5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9ue2JhY2tncm91bmQtY29sb3I6I2VmNmMwMH1ib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5Pi5tYXQtdGFiLWhlYWRlciAubWF0LXRhYi1sYWJlbCxib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5Pi5tYXQtdGFiLWxpbmstY29udGFpbmVyIC5tYXQtdGFiLWxpbmssYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5Pi5tYXQtdGFiLWhlYWRlciAubWF0LXRhYi1sYWJlbCxib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnk+Lm1hdC10YWItbGluay1jb250YWluZXIgLm1hdC10YWItbGlua3tjb2xvcjojZmZmfWJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnk+Lm1hdC10YWItaGVhZGVyIC5tYXQtdGFiLWxhYmVsLm1hdC10YWItZGlzYWJsZWQsYm9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeT4ubWF0LXRhYi1saW5rLWNvbnRhaW5lciAubWF0LXRhYi1saW5rLm1hdC10YWItZGlzYWJsZWQsYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5Pi5tYXQtdGFiLWhlYWRlciAubWF0LXRhYi1sYWJlbC5tYXQtdGFiLWRpc2FibGVkLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeT4ubWF0LXRhYi1saW5rLWNvbnRhaW5lciAubWF0LXRhYi1saW5rLm1hdC10YWItZGlzYWJsZWR7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNCl9Ym9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeT4ubWF0LXRhYi1oZWFkZXIgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbixib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5Pi5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb24sYm9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeT4ubWF0LXRhYi1saW5rLWNvbnRhaW5lciAubWF0LWZvY3VzLWluZGljYXRvcjo6YmVmb3JlLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnk+Lm1hdC10YWItaGVhZGVyIC5tYXQtZm9jdXMtaW5kaWNhdG9yOjpiZWZvcmUsYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5Pi5tYXQtdGFiLWhlYWRlciAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeT4ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbiAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeT4ubWF0LXRhYi1saW5rLWNvbnRhaW5lciAubWF0LWZvY3VzLWluZGljYXRvcjo6YmVmb3JlLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeT4ubWF0LXRhYi1oZWFkZXIgLm1hdC1mb2N1cy1pbmRpY2F0b3I6OmJlZm9yZXtib3JkZXItY29sb3I6I2ZmZn1ib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5Pi5tYXQtdGFiLWhlYWRlciAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZCAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnk+Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWQgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbixib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnk+Lm1hdC10YWItaGVhZGVyIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb24sYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5Pi5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb257Ym9yZGVyLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjQpfWJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnk+Lm1hdC10YWItaGVhZGVyIC5tYXQtcmlwcGxlLWVsZW1lbnQsYm9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeT4ubWF0LXRhYi1saW5rLWNvbnRhaW5lciAubWF0LXJpcHBsZS1lbGVtZW50LGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnk+Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24gLm1hdC1yaXBwbGUtZWxlbWVudCxib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnk+Lm1hdC10YWItaGVhZGVyIC5tYXQtcmlwcGxlLWVsZW1lbnQsYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5Pi5tYXQtdGFiLWxpbmstY29udGFpbmVyIC5tYXQtcmlwcGxlLWVsZW1lbnQsYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5Pi5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uIC5tYXQtcmlwcGxlLWVsZW1lbnR7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xMil9Ym9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50IC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksYm9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50IC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSxib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnQgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudCAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSxib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudCAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50IC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSxib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudCAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnQgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCl7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1MSwxNDAsMCwuMyl9Ym9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50Pi5tYXQtdGFiLWhlYWRlcixib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnQ+Lm1hdC10YWItbGluay1jb250YWluZXIsYm9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50Pi5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50Pi5tYXQtdGFiLWhlYWRlcixib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudD4ubWF0LXRhYi1saW5rLWNvbnRhaW5lcixib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudD4ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbntiYWNrZ3JvdW5kLWNvbG9yOiNlZjZjMDB9Ym9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50Pi5tYXQtdGFiLWhlYWRlciAubWF0LXRhYi1sYWJlbCxib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnQ+Lm1hdC10YWItbGluay1jb250YWluZXIgLm1hdC10YWItbGluayxib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudD4ubWF0LXRhYi1oZWFkZXIgLm1hdC10YWItbGFiZWwsYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnQ+Lm1hdC10YWItbGluay1jb250YWluZXIgLm1hdC10YWItbGlua3tjb2xvcjojZmZmfWJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudD4ubWF0LXRhYi1oZWFkZXIgLm1hdC10YWItbGFiZWwubWF0LXRhYi1kaXNhYmxlZCxib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnQ+Lm1hdC10YWItbGluay1jb250YWluZXIgLm1hdC10YWItbGluay5tYXQtdGFiLWRpc2FibGVkLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50Pi5tYXQtdGFiLWhlYWRlciAubWF0LXRhYi1sYWJlbC5tYXQtdGFiLWRpc2FibGVkLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50Pi5tYXQtdGFiLWxpbmstY29udGFpbmVyIC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZHtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC40KX1ib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnQ+Lm1hdC10YWItaGVhZGVyIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb24sYm9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50Pi5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb24sYm9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50Pi5tYXQtdGFiLWxpbmstY29udGFpbmVyIC5tYXQtZm9jdXMtaW5kaWNhdG9yOjpiZWZvcmUsYm9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50Pi5tYXQtdGFiLWhlYWRlciAubWF0LWZvY3VzLWluZGljYXRvcjo6YmVmb3JlLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50Pi5tYXQtdGFiLWhlYWRlciAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50Pi5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb24sYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnQ+Lm1hdC10YWItbGluay1jb250YWluZXIgLm1hdC1mb2N1cy1pbmRpY2F0b3I6OmJlZm9yZSxib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudD4ubWF0LXRhYi1oZWFkZXIgLm1hdC1mb2N1cy1pbmRpY2F0b3I6OmJlZm9yZXtib3JkZXItY29sb3I6I2ZmZn1ib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnQ+Lm1hdC10YWItaGVhZGVyIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb24sYm9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50Pi5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb24sYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnQ+Lm1hdC10YWItaGVhZGVyIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb24sYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnQ+Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWQgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbntib3JkZXItY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNCl9Ym9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50Pi5tYXQtdGFiLWhlYWRlciAubWF0LXJpcHBsZS1lbGVtZW50LGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudD4ubWF0LXRhYi1saW5rLWNvbnRhaW5lciAubWF0LXJpcHBsZS1lbGVtZW50LGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudD4ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbiAubWF0LXJpcHBsZS1lbGVtZW50LGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50Pi5tYXQtdGFiLWhlYWRlciAubWF0LXJpcHBsZS1lbGVtZW50LGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50Pi5tYXQtdGFiLWxpbmstY29udGFpbmVyIC5tYXQtcmlwcGxlLWVsZW1lbnQsYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnQ+Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24gLm1hdC1yaXBwbGUtZWxlbWVudHtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEyKX1ib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksYm9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2FybiAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksYm9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2FybiAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksYm9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2FybiAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSxib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm4gLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSxib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm4gLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2FybiAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpe2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjA1LDIxMCwuMyl9Ym9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybj4ubWF0LXRhYi1oZWFkZXIsYm9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybj4ubWF0LXRhYi1saW5rLWNvbnRhaW5lcixib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuPi5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybj4ubWF0LXRhYi1oZWFkZXIsYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuPi5tYXQtdGFiLWxpbmstY29udGFpbmVyLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybj4ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbntiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Ym9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybj4ubWF0LXRhYi1oZWFkZXIgLm1hdC10YWItbGFiZWwsYm9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybj4ubWF0LXRhYi1saW5rLWNvbnRhaW5lciAubWF0LXRhYi1saW5rLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybj4ubWF0LXRhYi1oZWFkZXIgLm1hdC10YWItbGFiZWwsYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuPi5tYXQtdGFiLWxpbmstY29udGFpbmVyIC5tYXQtdGFiLWxpbmt7Y29sb3I6I2ZmZn1ib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuPi5tYXQtdGFiLWhlYWRlciAubWF0LXRhYi1sYWJlbC5tYXQtdGFiLWRpc2FibGVkLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm4+Lm1hdC10YWItbGluay1jb250YWluZXIgLm1hdC10YWItbGluay5tYXQtdGFiLWRpc2FibGVkLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybj4ubWF0LXRhYi1oZWFkZXIgLm1hdC10YWItbGFiZWwubWF0LXRhYi1kaXNhYmxlZCxib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm4+Lm1hdC10YWItbGluay1jb250YWluZXIgLm1hdC10YWItbGluay5tYXQtdGFiLWRpc2FibGVke2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjQpfWJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm4+Lm1hdC10YWItaGVhZGVyIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb24sYm9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybj4ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbiAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm4+Lm1hdC10YWItbGluay1jb250YWluZXIgLm1hdC1mb2N1cy1pbmRpY2F0b3I6OmJlZm9yZSxib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuPi5tYXQtdGFiLWhlYWRlciAubWF0LWZvY3VzLWluZGljYXRvcjo6YmVmb3JlLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybj4ubWF0LXRhYi1oZWFkZXIgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbixib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm4+Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24gLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbixib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm4+Lm1hdC10YWItbGluay1jb250YWluZXIgLm1hdC1mb2N1cy1pbmRpY2F0b3I6OmJlZm9yZSxib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm4+Lm1hdC10YWItaGVhZGVyIC5tYXQtZm9jdXMtaW5kaWNhdG9yOjpiZWZvcmV7Ym9yZGVyLWNvbG9yOiNmZmZ9Ym9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybj4ubWF0LXRhYi1oZWFkZXIgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWQgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbixib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuPi5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb24sYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuPi5tYXQtdGFiLWhlYWRlciAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZCAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybj4ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZCAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9ue2JvcmRlci1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC40KX1ib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuPi5tYXQtdGFiLWhlYWRlciAubWF0LXJpcHBsZS1lbGVtZW50LGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm4+Lm1hdC10YWItbGluay1jb250YWluZXIgLm1hdC1yaXBwbGUtZWxlbWVudCxib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuPi5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uIC5tYXQtcmlwcGxlLWVsZW1lbnQsYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuPi5tYXQtdGFiLWhlYWRlciAubWF0LXJpcHBsZS1lbGVtZW50LGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybj4ubWF0LXRhYi1saW5rLWNvbnRhaW5lciAubWF0LXJpcHBsZS1lbGVtZW50LGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybj4ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbiAubWF0LXJpcHBsZS1lbGVtZW50e2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMTIpfWJvZHkuZGFyay1tb2RlIC5tYXQtdG9vbGJhcntiYWNrZ3JvdW5kOiNlZjZjMDA7Y29sb3I6I2ZmZn1ib2R5LmRhcmstbW9kZSAubWF0LXRvb2xiYXIubWF0LXByaW1hcnl7YmFja2dyb3VuZDojZWY2YzAwO2NvbG9yOiNmZmZ9Ym9keS5kYXJrLW1vZGUgLm1hdC10b29sYmFyLm1hdC1hY2NlbnR7YmFja2dyb3VuZDojZWY2YzAwO2NvbG9yOiNmZmZ9Ym9keS5kYXJrLW1vZGUgLm1hdC10b29sYmFyLm1hdC13YXJue2JhY2tncm91bmQ6I2Y0NDMzNjtjb2xvcjojZmZmfWJvZHkuZGFyay1tb2RlIC5tYXQtdG9vbGJhciAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lLGJvZHkuZGFyay1tb2RlIC5tYXQtdG9vbGJhciAubWF0LWZvcm0tZmllbGQtcmlwcGxlLGJvZHkuZGFyay1tb2RlIC5tYXQtdG9vbGJhciAubWF0LWZvY3VzZWQgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZXtiYWNrZ3JvdW5kLWNvbG9yOmN1cnJlbnRDb2xvcn1ib2R5LmRhcmstbW9kZSAubWF0LXRvb2xiYXIgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLGJvZHkuZGFyay1tb2RlIC5tYXQtdG9vbGJhciAubWF0LWZvY3VzZWQgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLGJvZHkuZGFyay1tb2RlIC5tYXQtdG9vbGJhciAubWF0LXNlbGVjdC12YWx1ZSxib2R5LmRhcmstbW9kZSAubWF0LXRvb2xiYXIgLm1hdC1zZWxlY3QtYXJyb3csYm9keS5kYXJrLW1vZGUgLm1hdC10b29sYmFyIC5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZCAubWF0LXNlbGVjdC1hcnJvd3tjb2xvcjppbmhlcml0fWJvZHkuZGFyay1tb2RlIC5tYXQtdG9vbGJhciAubWF0LWlucHV0LWVsZW1lbnR7Y2FyZXQtY29sb3I6Y3VycmVudENvbG9yfWJvZHkuZGFyay1tb2RlIC5tYXQtdG9vbHRpcHtiYWNrZ3JvdW5kOnJnYmEoOTcsOTcsOTcsLjkpfWJvZHkuZGFyay1tb2RlIC5tYXQtdHJlZXtiYWNrZ3JvdW5kOiM0MjQyNDJ9Ym9keS5kYXJrLW1vZGUgLm1hdC10cmVlLW5vZGUsYm9keS5kYXJrLW1vZGUgLm1hdC1uZXN0ZWQtdHJlZS1ub2Rle2NvbG9yOiNmZmZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1zbmFjay1iYXItY29udGFpbmVye2NvbG9yOnJnYmEoMCwwLDAsLjg3KTtiYWNrZ3JvdW5kOiNmYWZhZmE7Ym94LXNoYWRvdzowcHggM3B4IDVweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNnB4IDEwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxOHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfWJvZHkuZGFyay1tb2RlIC5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbntjb2xvcjppbmhlcml0fQo8L3N0eWxlPgoKPHN0eWxlPgogIGh0bWwsCiAgYm9keSB7CiAgICBtYXJnaW46IDA7CiAgICBwYWRkaW5nOiAwOwogICAgaGVpZ2h0OiAxMDAlOwogICAgZm9udC1mYW1pbHk6IFJvYm90bywgc2Fucy1zZXJpZjsKICAgIGNvbG9yOiB2YXIoLS1wcmltYXJ5LXRleHQtY29sb3IpOwoKICAgIC8qIExlZ2FjeSBtZWNoYW5pc20gdG8gYXZvaWQgaXNzdWVzIHdpdGggc3VicGl4ZWwgYW50aS1hbGlhc2luZyBvbiBtYWNPUy4KICAgICAqCiAgICAgKiBJbiB0aGUgcGFzdCBbMV0sIG1hY09TIHN1YnBpeGVsIEFBIGNhdXNlZCBleGNlc3NpdmUgYm9sZGluZyBmb3IgbGlnaHQtb24tZGFyayB0ZXh0OyB0aGlzIHJ1bGUKICAgICAqIGF2b2lkcyB0aGF0IGJ5IHJlcXVlc3Rpbmcgbm9uLXN1YnBpeGVsIEFBIGFsd2F5cywgcmF0aGVyIHRoYW4gdGhlIGRlZmF1bHQgYmVoYXZpb3IsIHdoaWNoIGlzCiAgICAgKiB0byB1c2Ugc3VicGl4ZWwgQUEgd2hlbiBhdmFpbGFibGUuIFRoZSBvcmlnaW5hbCBpc3N1ZSB3YXMgImZpeGVkIiBieSByZW1vdmluZyBzdWJwaXhlbCBBQSBpbgogICAgICogbWFjT1MgMTQgKE1vamF2ZSksIGJ1dCBmb3IgbGVnYWN5IHJlYXNvbnMgdGhleSBwcmVzZXJ2ZWQgdGhlIGJvbGRpbmcgZWZmZWN0IGFzIGFuIG9wdGlvbi4KICAgICAqIENocm9tZSB0aGVuIGluIHR1cm4gdXBkYXRlZCBpdHMgZm9udCByZW5kZXJpbmcgdG8gYXBwbHkgdGhhdCBib2xkaW5nIGVmZmVjdCBbMl0sIHdoaWNoIG1lYW5zCiAgICAgKiB0aGF0IGV2ZW4gdGhvdWdoIHRoZSBgLXdlYmtpdC1mb250LXNtb290aGluZ2AgZG9jcyBbM10gc3VnZ2VzdCB0aGF0IHNldHRpbmcgYGFudGlhbGlhc2VkYAogICAgICogd291bGQgaGF2ZSBubyBlZmZlY3QgZm9yIHJlY2VudCB2ZXJzaW9ucyBvZiBtYWNPUywgaXQgc3RpbGwgaXMgbmVlZGVkIHRvIGF2b2lkIHRoZSBib2xkaW5nLgogICAgICoKICAgICAqIFsxXTogaHR0cDovL3d3dy5saWdodGVycmEuY29tL2FydGljbGVzL21hY29zeHRleHRhYWJ1Zy8KICAgICAqIFsyXTogaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9ODU4ODYxCiAgICAgKiBbM106IGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9mb250LXNtb290aAogICAgICoKICAgICAqLwoKICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkOwogIH0KICBub3NjcmlwdCB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIG1hcmdpbjogMCBhdXRvOwogICAgbWF4LXdpZHRoOiA2MDBweDsKICAgIHBhZGRpbmc6IDEwcHg7CiAgfQo8L3N0eWxlPgoKPC9oZWFkPjxib2R5Pjxub3NjcmlwdD4KICAgIDxoMT5UZW5zb3JCb2FyZCByZXF1aXJlcyBKYXZhU2NyaXB0PC9oMT4KICAgIDxwPlBsZWFzZSBlbmFibGUgSmF2YVNjcmlwdCBhbmQgcmVsb2FkIHRoaXMgcGFnZS48L3A+CiAgPC9ub3NjcmlwdD48dGItd2ViYXBwPjwvdGItd2ViYXBwPjxzY3JpcHQgc3JjPSJpbmRleC5qcz9fZmlsZV9oYXNoPTRhMzY2Y2JlIj48L3NjcmlwdD48L2JvZHk+PC9odG1sPg==", + "ok": true, + "headers": [ + [ + "content-type", + "text/html; charset=utf-8" + ] + ], + "status": 200, + "status_text": "" + }, + "https://localhost:6006/font-roboto/oMMgfZMQthOryQo9n22dcuvvDin1pK8aKteLpeZ5c0A.woff2": { + "data": "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", + "ok": true, + "headers": [ + [ + "content-type", + "font/woff2" + ] + ], + "status": 200, + "status_text": "" + }, + "https://localhost:6006/index.js?_file_hash=4a366cbe": { + "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+e3RyeXtjb25zdCB0PW5ldyBDU1NTdHlsZVNoZWV0O3QucmVwbGFjZVN5bmMoIiIpO2NvbnN0IGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7cmV0dXJuIGUuYXR0YWNoU2hhZG93KHttb2RlOiJvcGVuIn0pLGUuc2hhZG93Um9vdC5hZG9wdGVkU3R5bGVTaGVldHM9W3RdLGUuc2hhZG93Um9vdC5hZG9wdGVkU3R5bGVTaGVldHNbMF09PT10fWNhdGNoKHQpe3JldHVybiExfX0pKCk7bGV0IF89d2luZG93LlBvbHltZXImJndpbmRvdy5Qb2x5bWVyLnJvb3RQYXRofHxmKGRvY3VtZW50LmJhc2VVUkl8fHdpbmRvdy5sb2NhdGlvbi5ocmVmKSx5PXdpbmRvdy5Qb2x5bWVyJiZ3aW5kb3cuUG9seW1lci5zYW5pdGl6ZURPTVZhbHVlfHx2b2lkIDAsdj13aW5kb3cuUG9seW1lciYmd2luZG93LlBvbHltZXIuc2V0UGFzc2l2ZVRvdWNoR2VzdHVyZXN8fCExLGI9d2luZG93LlBvbHltZXImJndpbmRvdy5Qb2x5bWVyLnN0cmljdFRlbXBsYXRlUG9saWN5fHwhMSx4PXdpbmRvdy5Qb2x5bWVyJiZ3aW5kb3cuUG9seW1lci5hbGxvd1RlbXBsYXRlRnJvbURvbU1vZHVsZXx8ITEsdz13aW5kb3cuUG9seW1lciYmd2luZG93LlBvbHltZXIubGVnYWN5T3B0aW1pemF0aW9uc3x8ITEsUz13aW5kb3cuUG9seW1lciYmd2luZG93LlBvbHltZXIubGVnYWN5V2FybmluZ3N8fCExLE09d2luZG93LlBvbHltZXImJndpbmRvdy5Qb2x5bWVyLnN5bmNJbml0aWFsUmVuZGVyfHwhMSxFPXdpbmRvdy5Qb2x5bWVyJiZ3aW5kb3cuUG9seW1lci5sZWdhY3lVbmRlZmluZWR8fCExLFQ9d2luZG93LlBvbHltZXImJndpbmRvdy5Qb2x5bWVyLm9yZGVyZWRDb21wdXRlZHx8ITEsQz13aW5kb3cuUG9seW1lciYmd2luZG93LlBvbHltZXIucmVtb3ZlTmVzdGVkVGVtcGxhdGVzfHwhMSxBPXdpbmRvdy5Qb2x5bWVyJiZ3aW5kb3cuUG9seW1lci5mYXN0RG9tSWZ8fCExLGs9d2luZG93LlBvbHltZXImJndpbmRvdy5Qb2x5bWVyLnN1cHByZXNzVGVtcGxhdGVOb3RpZmljYXRpb25zfHwhMSxMPXdpbmRvdy5Qb2x5bWVyJiZ3aW5kb3cuUG9seW1lci5sZWdhY3lOb09ic2VydmVkQXR0cmlidXRlc3x8ITEsUD13aW5kb3cuUG9seW1lciYmd2luZG93LlBvbHltZXIudXNlQWRvcHRlZFN0eWxlU2hlZXRzV2l0aEJ1aWx0Q1NTfHwhMSxOPTA7Y29uc3QgST1mdW5jdGlvbih0KXtsZXQgZT10Ll9fbWl4aW5BcHBsaWNhdGlvbnM7ZXx8KGU9bmV3IFdlYWtNYXAsdC5fX21peGluQXBwbGljYXRpb25zPWUpO2xldCBuPU4rKztyZXR1cm4gZnVuY3Rpb24gaShyKXtsZXQgbz1yLl9fbWl4aW5TZXQ7aWYobyYmb1tuXSlyZXR1cm4gcjtsZXQgYT1lLHM9YS5nZXQocik7aWYoIXMpe3M9dChyKSxhLnNldChyLHMpO2xldCBlPU9iamVjdC5jcmVhdGUocy5fX21peGluU2V0fHxvfHxudWxsKTtlW25dPSEwLHMuX19taXhpblNldD1lfXJldHVybiBzfX07Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNyBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0CiAgICBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcyBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbwogICAgc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudCBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovbGV0IFI9e30sTz17fTtmdW5jdGlvbiB6KHQsZSl7Ult0XT1PW3QudG9Mb3dlckNhc2UoKV09ZX1mdW5jdGlvbiBEKHQpe3JldHVybiBSW3RdfHxPW3QudG9Mb3dlckNhc2UoKV19Y2xhc3MgQiBleHRlbmRzIEhUTUxFbGVtZW50e3N0YXRpYyBnZXQgb2JzZXJ2ZWRBdHRyaWJ1dGVzKCl7cmV0dXJuWyJpZCJdfXN0YXRpYyBpbXBvcnQodCxlKXtpZih0KXtsZXQgbj1EKHQpO3JldHVybiBuJiZlP24ucXVlcnlTZWxlY3RvcihlKTpufXJldHVybiBudWxsfWF0dHJpYnV0ZUNoYW5nZWRDYWxsYmFjayh0LGUsbixpKXtlIT09biYmdGhpcy5yZWdpc3RlcigpfWdldCBhc3NldHBhdGgoKXtpZighdGhpcy5fX2Fzc2V0cGF0aCl7Y29uc3QgdD13aW5kb3cuSFRNTEltcG9ydHMmJkhUTUxJbXBvcnRzLmltcG9ydEZvckVsZW1lbnQ/SFRNTEltcG9ydHMuaW1wb3J0Rm9yRWxlbWVudCh0aGlzKXx8ZG9jdW1lbnQ6dGhpcy5vd25lckRvY3VtZW50LGU9ZCh0aGlzLmdldEF0dHJpYnV0ZSgiYXNzZXRwYXRoIil8fCIiLHQuYmFzZVVSSSk7dGhpcy5fX2Fzc2V0cGF0aD1mKGUpfXJldHVybiB0aGlzLl9fYXNzZXRwYXRofXJlZ2lzdGVyKHQpe2lmKHQ9dHx8dGhpcy5pZCl7aWYoYiYmdm9pZCAwIT09RCh0KSl0aHJvdyB6KHQsbnVsbCksbmV3IEVycm9yKGBzdHJpY3RUZW1wbGF0ZVBvbGljeTogZG9tLW1vZHVsZSAke3R9IHJlLXJlZ2lzdGVyZWRgKTt0aGlzLmlkPXQseih0LHRoaXMpLChmdW5jdGlvbiBlKHQpe3QucXVlcnlTZWxlY3Rvcigic3R5bGUiKSYmY29uc29sZS53YXJuKCJkb20tbW9kdWxlICVzIGhhcyBzdHlsZSBvdXRzaWRlIHRlbXBsYXRlIix0LmlkKX0pKHRoaXMpfX19Qi5wcm90b3R5cGUubW9kdWxlcz1SLGN1c3RvbUVsZW1lbnRzLmRlZmluZSgiZG9tLW1vZHVsZSIsQik7Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNyBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0CiAgICBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcyBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbwogICAgc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudCBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCmNvbnN0IEg9InNoYWR5LXVuc2NvcGVkIjtmdW5jdGlvbiBGKHQpe3JldHVybiBCLmltcG9ydCh0KX1mdW5jdGlvbiBWKHQpe2NvbnN0IGU9cCgodC5ib2R5P3QuYm9keTp0KS50ZXh0Q29udGVudCx0LmJhc2VVUkkpLG49ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3R5bGUiKTtyZXR1cm4gbi50ZXh0Q29udGVudD1lLG59ZnVuY3Rpb24gVSh0KXtjb25zdCBlPXQudHJpbSgpLnNwbGl0KC9ccysvKSxuPVtdO2ZvcihsZXQgdD0wO3Q8ZS5sZW5ndGg7dCsrKW4ucHVzaCguLi5qKGVbdF0pKTtyZXR1cm4gbn1mdW5jdGlvbiBqKHQpe2NvbnN0IGU9Rih0KTtpZighZSlyZXR1cm4gY29uc29sZS53YXJuKCJDb3VsZCBub3QgZmluZCBzdHlsZSBkYXRhIGluIG1vZHVsZSBuYW1lZCIsdCksW107aWYodm9pZCAwPT09ZS5fc3R5bGVzKXtjb25zdCB0PVtdO3QucHVzaCguLi5XKGUpKTtjb25zdCBuPWUucXVlcnlTZWxlY3RvcigidGVtcGxhdGUiKTtuJiZ0LnB1c2goLi4uRyhuLGUuYXNzZXRwYXRoKSksZS5fc3R5bGVzPXR9cmV0dXJuIGUuX3N0eWxlc31mdW5jdGlvbiBHKHQsZSl7aWYoIXQuX3N0eWxlcyl7Y29uc3Qgbj1bXSxpPXQuY29udGVudC5xdWVyeVNlbGVjdG9yQWxsKCJzdHlsZSIpO2ZvcihsZXQgdD0wO3Q8aS5sZW5ndGg7dCsrKXtsZXQgcj1pW3RdLG89ci5nZXRBdHRyaWJ1dGUoImluY2x1ZGUiKTtvJiZuLnB1c2goLi4uVShvKS5maWx0ZXIoKGZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gbi5pbmRleE9mKHQpPT09ZX0pKSksZSYmKHIudGV4dENvbnRlbnQ9cChyLnRleHRDb250ZW50LGUpKSxuLnB1c2gocil9dC5fc3R5bGVzPW59cmV0dXJuIHQuX3N0eWxlc31mdW5jdGlvbiBXKHQpe2NvbnN0IGU9W10sbj10LnF1ZXJ5U2VsZWN0b3JBbGwoImxpbmtbcmVsPWltcG9ydF1bdHlwZX49Y3NzXSIpO2ZvcihsZXQgdD0wO3Q8bi5sZW5ndGg7dCsrKXtsZXQgaT1uW3RdO2lmKGkuaW1wb3J0KXtjb25zdCB0PWkuaW1wb3J0LG49aS5oYXNBdHRyaWJ1dGUoSCk7aWYobiYmIXQuX3Vuc2NvcGVkU3R5bGUpe2NvbnN0IGU9Vih0KTtlLnNldEF0dHJpYnV0ZShILCIiKSx0Ll91bnNjb3BlZFN0eWxlPWV9ZWxzZSB0Ll9zdHlsZXx8KHQuX3N0eWxlPVYodCkpO2UucHVzaChuP3QuX3Vuc2NvcGVkU3R5bGU6dC5fc3R5bGUpfX1yZXR1cm4gZX1mdW5jdGlvbiBxKHQpe2xldCBlPUYodCk7aWYoZSYmdm9pZCAwPT09ZS5fY3NzVGV4dCl7bGV0IHQ9KGZ1bmN0aW9uIG4odCl7bGV0IGU9IiIsbj1XKHQpO2ZvcihsZXQgdD0wO3Q8bi5sZW5ndGg7dCsrKWUrPW5bdF0udGV4dENvbnRlbnQ7cmV0dXJuIGV9Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNyBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0CiAgICBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcyBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbwogICAgc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudCBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovKShlKSxuPWUucXVlcnlTZWxlY3RvcigidGVtcGxhdGUiKTtuJiYodCs9KGZ1bmN0aW9uIGkodCxlKXtsZXQgbj0iIjtjb25zdCBpPUcodCxlKTtmb3IobGV0IHQ9MDt0PGkubGVuZ3RoO3QrKyl7bGV0IGU9aVt0XTtlLnBhcmVudE5vZGUmJmUucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChlKSxuKz1lLnRleHRDb250ZW50fXJldHVybiBufSkobixlLmFzc2V0cGF0aCkpLGUuX2Nzc1RleHQ9dHx8bnVsbH1yZXR1cm4gZXx8Y29uc29sZS53YXJuKCJDb3VsZCBub3QgZmluZCBzdHlsZSBkYXRhIGluIG1vZHVsZSBuYW1lZCIsdCksZSYmZS5fY3NzVGV4dHx8IiJ9Y29uc3QgWT13aW5kb3cuU2hhZHlET00mJndpbmRvdy5TaGFkeURPTS5ub1BhdGNoJiZ3aW5kb3cuU2hhZHlET00ud3JhcD93aW5kb3cuU2hhZHlET00ud3JhcDp3aW5kb3cuU2hhZHlET00/dD0+U2hhZHlET00ucGF0Y2godCk6dD0+dDsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE3IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQKICAgIENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvCiAgICBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50IGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi9mdW5jdGlvbiBYKHQpe3JldHVybiB0LmluZGV4T2YoIi4iKT49MH1mdW5jdGlvbiAkKHQpe2xldCBlPXQuaW5kZXhPZigiLiIpO3JldHVybi0xPT09ZT90OnQuc2xpY2UoMCxlKX1mdW5jdGlvbiBLKHQsZSl7cmV0dXJuIDA9PT10LmluZGV4T2YoZSsiLiIpfWZ1bmN0aW9uIFoodCxlKXtyZXR1cm4gMD09PWUuaW5kZXhPZih0KyIuIil9ZnVuY3Rpb24gSih0LGUsbil7cmV0dXJuIGUrbi5zbGljZSh0Lmxlbmd0aCl9ZnVuY3Rpb24gUSh0LGUpe3JldHVybiB0PT09ZXx8Syh0LGUpfHxaKHQsZSl9ZnVuY3Rpb24gdHQodCl7aWYoQXJyYXkuaXNBcnJheSh0KSl7bGV0IGU9W107Zm9yKGxldCBuPTA7bjx0Lmxlbmd0aDtuKyspe2xldCBpPXRbbl0udG9TdHJpbmcoKS5zcGxpdCgiLiIpO2ZvcihsZXQgdD0wO3Q8aS5sZW5ndGg7dCsrKWUucHVzaChpW3RdKX1yZXR1cm4gZS5qb2luKCIuIil9cmV0dXJuIHR9ZnVuY3Rpb24gZXQodCl7cmV0dXJuIEFycmF5LmlzQXJyYXkodCk/dHQodCkuc3BsaXQoIi4iKTp0LnRvU3RyaW5nKCkuc3BsaXQoIi4iKX1mdW5jdGlvbiBudCh0LGUsbil7bGV0IGk9dCxyPWV0KGUpO2ZvcihsZXQgdD0wO3Q8ci5sZW5ndGg7dCsrKXtpZighaSlyZXR1cm47aT1pW3JbdF1dfXJldHVybiBuJiYobi5wYXRoPXIuam9pbigiLiIpKSxpfWZ1bmN0aW9uIGl0KHQsZSxuKXtsZXQgaT10LHI9ZXQoZSksbz1yW3IubGVuZ3RoLTFdO2lmKHIubGVuZ3RoPjEpe2ZvcihsZXQgdD0wO3Q8ci5sZW5ndGgtMTt0Kyspe2lmKGk9aVtyW3RdXSwhaSlyZXR1cm59aVtvXT1ufWVsc2UgaVtlXT1uO3JldHVybiByLmpvaW4oIi4iKX0KLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE3IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQKICAgIENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvCiAgICBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50IGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi9jb25zdCBydD17fSxvdD0vLVthLXpdL2csYXQ9LyhbQS1aXSkvZztmdW5jdGlvbiBzdCh0KXtyZXR1cm4gcnRbdF18fChydFt0XT10LmluZGV4T2YoIi0iKTwwP3Q6dC5yZXBsYWNlKG90LCh0PT50WzFdLnRvVXBwZXJDYXNlKCkpKSl9ZnVuY3Rpb24gbHQodCl7cmV0dXJuIHJ0W3RdfHwocnRbdF09dC5yZXBsYWNlKGF0LCItJDEiKS50b0xvd2VyQ2FzZSgpKX0KLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE3IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQKICAgIENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvCiAgICBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50IGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi9sZXQgY3Q9MCx1dD0wLGh0PVtdLGR0PTAscHQ9ITEsZnQ9ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIiIpO25ldyB3aW5kb3cuTXV0YXRpb25PYnNlcnZlcigoZnVuY3Rpb24gbXQoKXtwdD0hMTtjb25zdCB0PWh0Lmxlbmd0aDtmb3IobGV0IGU9MDtlPHQ7ZSsrKXtsZXQgdD1odFtlXTtpZih0KXRyeXt0KCl9Y2F0Y2godCl7c2V0VGltZW91dCgoKCk9Pnt0aHJvdyB0fSkpfX1odC5zcGxpY2UoMCx0KSx1dCs9dH0pKS5vYnNlcnZlKGZ0LHtjaGFyYWN0ZXJEYXRhOiEwfSk7Y29uc3QgZ3Q9e2FmdGVyOnQ9Pih7cnVuOmU9PndpbmRvdy5zZXRUaW1lb3V0KGUsdCksY2FuY2VsKHQpe3dpbmRvdy5jbGVhclRpbWVvdXQodCl9fSkscnVuOih0LGUpPT53aW5kb3cuc2V0VGltZW91dCh0LGUpLGNhbmNlbCh0KXt3aW5kb3cuY2xlYXJUaW1lb3V0KHQpfX0sX3Q9e3J1bjp0PT53aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKHQpLGNhbmNlbCh0KXt3aW5kb3cuY2FuY2VsQW5pbWF0aW9uRnJhbWUodCl9fSx5dD17cnVuOnQ9PndpbmRvdy5yZXF1ZXN0SWRsZUNhbGxiYWNrP3dpbmRvdy5yZXF1ZXN0SWRsZUNhbGxiYWNrKHQpOndpbmRvdy5zZXRUaW1lb3V0KHQsMTYpLGNhbmNlbCh0KXt3aW5kb3cuY2FuY2VsSWRsZUNhbGxiYWNrP3dpbmRvdy5jYW5jZWxJZGxlQ2FsbGJhY2sodCk6d2luZG93LmNsZWFyVGltZW91dCh0KX19LHZ0PXtydW46dD0+KHB0fHwocHQ9ITAsZnQudGV4dENvbnRlbnQ9ZHQrKyksaHQucHVzaCh0KSxjdCsrKSxjYW5jZWwodCl7Y29uc3QgZT10LXV0O2lmKGU+PTApe2lmKCFodFtlXSl0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgYXN5bmMgaGFuZGxlOiAiK3QpO2h0W2VdPW51bGx9fX0sYnQ9dnQseHQ9SSgodD0+Y2xhc3MgZXh0ZW5kcyB0e3N0YXRpYyBjcmVhdGVQcm9wZXJ0aWVzKHQpe2NvbnN0IGU9dGhpcy5wcm90b3R5cGU7Zm9yKGxldCBuIGluIHQpbiBpbiBlfHxlLl9jcmVhdGVQcm9wZXJ0eUFjY2Vzc29yKG4pfXN0YXRpYyBhdHRyaWJ1dGVOYW1lRm9yUHJvcGVydHkodCl7cmV0dXJuIHQudG9Mb3dlckNhc2UoKX1zdGF0aWMgdHlwZUZvclByb3BlcnR5KHQpe31fY3JlYXRlUHJvcGVydHlBY2Nlc3Nvcih0LGUpe3RoaXMuX2FkZFByb3BlcnR5VG9BdHRyaWJ1dGVNYXAodCksdGhpcy5oYXNPd25Qcm9wZXJ0eShKU0NvbXBpbGVyX3JlbmFtZVByb3BlcnR5KCJfX2RhdGFIYXNBY2Nlc3NvciIsdGhpcykpfHwodGhpcy5fX2RhdGFIYXNBY2Nlc3Nvcj1PYmplY3QuYXNzaWduKHt9LHRoaXMuX19kYXRhSGFzQWNjZXNzb3IpKSx0aGlzLl9fZGF0YUhhc0FjY2Vzc29yW3RdfHwodGhpcy5fX2RhdGFIYXNBY2Nlc3Nvclt0XT0hMCx0aGlzLl9kZWZpbmVQcm9wZXJ0eUFjY2Vzc29yKHQsZSkpfV9hZGRQcm9wZXJ0eVRvQXR0cmlidXRlTWFwKHQpe3RoaXMuaGFzT3duUHJvcGVydHkoSlNDb21waWxlcl9yZW5hbWVQcm9wZXJ0eSgiX19kYXRhQXR0cmlidXRlcyIsdGhpcykpfHwodGhpcy5fX2RhdGFBdHRyaWJ1dGVzPU9iamVjdC5hc3NpZ24oe30sdGhpcy5fX2RhdGFBdHRyaWJ1dGVzKSk7bGV0IGU9dGhpcy5fX2RhdGFBdHRyaWJ1dGVzW3RdO3JldHVybiBlfHwoZT10aGlzLmNvbnN0cnVjdG9yLmF0dHJpYnV0ZU5hbWVGb3JQcm9wZXJ0eSh0KSx0aGlzLl9fZGF0YUF0dHJpYnV0ZXNbZV09dCksZX1fZGVmaW5lUHJvcGVydHlBY2Nlc3Nvcih0LGUpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLHQse2dldCgpe3JldHVybiB0aGlzLl9fZGF0YVt0XX0sc2V0OmU/ZnVuY3Rpb24oKXt9OmZ1bmN0aW9uKGUpe3RoaXMuX3NldFBlbmRpbmdQcm9wZXJ0eSh0LGUsITApJiZ0aGlzLl9pbnZhbGlkYXRlUHJvcGVydGllcygpfX0pfWNvbnN0cnVjdG9yKCl7c3VwZXIoKSx0aGlzLl9fZGF0YUVuYWJsZWQ9ITEsdGhpcy5fX2RhdGFSZWFkeT0hMSx0aGlzLl9fZGF0YUludmFsaWQ9ITEsdGhpcy5fX2RhdGE9e30sdGhpcy5fX2RhdGFQZW5kaW5nPW51bGwsdGhpcy5fX2RhdGFPbGQ9bnVsbCx0aGlzLl9fZGF0YUluc3RhbmNlUHJvcHM9bnVsbCx0aGlzLl9fZGF0YUNvdW50ZXI9MCx0aGlzLl9fc2VyaWFsaXppbmc9ITEsdGhpcy5faW5pdGlhbGl6ZVByb3BlcnRpZXMoKX1yZWFkeSgpe3RoaXMuX19kYXRhUmVhZHk9ITAsdGhpcy5fZmx1c2hQcm9wZXJ0aWVzKCl9X2luaXRpYWxpemVQcm9wZXJ0aWVzKCl7Zm9yKGxldCB0IGluIHRoaXMuX19kYXRhSGFzQWNjZXNzb3IpdGhpcy5oYXNPd25Qcm9wZXJ0eSh0KSYmKHRoaXMuX19kYXRhSW5zdGFuY2VQcm9wcz10aGlzLl9fZGF0YUluc3RhbmNlUHJvcHN8fHt9LHRoaXMuX19kYXRhSW5zdGFuY2VQcm9wc1t0XT10aGlzW3RdLGRlbGV0ZSB0aGlzW3RdKX1faW5pdGlhbGl6ZUluc3RhbmNlUHJvcGVydGllcyh0KXtPYmplY3QuYXNzaWduKHRoaXMsdCl9X3NldFByb3BlcnR5KHQsZSl7dGhpcy5fc2V0UGVuZGluZ1Byb3BlcnR5KHQsZSkmJnRoaXMuX2ludmFsaWRhdGVQcm9wZXJ0aWVzKCl9X2dldFByb3BlcnR5KHQpe3JldHVybiB0aGlzLl9fZGF0YVt0XX1fc2V0UGVuZGluZ1Byb3BlcnR5KHQsZSxuKXtsZXQgaT10aGlzLl9fZGF0YVt0XSxyPXRoaXMuX3Nob3VsZFByb3BlcnR5Q2hhbmdlKHQsZSxpKTtyZXR1cm4gciYmKHRoaXMuX19kYXRhUGVuZGluZ3x8KHRoaXMuX19kYXRhUGVuZGluZz17fSx0aGlzLl9fZGF0YU9sZD17fSksdGhpcy5fX2RhdGFPbGQmJiEodCBpbiB0aGlzLl9fZGF0YU9sZCkmJih0aGlzLl9fZGF0YU9sZFt0XT1pKSx0aGlzLl9fZGF0YVt0XT1lLHRoaXMuX19kYXRhUGVuZGluZ1t0XT1lKSxyfV9pc1Byb3BlcnR5UGVuZGluZyh0KXtyZXR1cm4hKCF0aGlzLl9fZGF0YVBlbmRpbmd8fCF0aGlzLl9fZGF0YVBlbmRpbmcuaGFzT3duUHJvcGVydHkodCkpfV9pbnZhbGlkYXRlUHJvcGVydGllcygpeyF0aGlzLl9fZGF0YUludmFsaWQmJnRoaXMuX19kYXRhUmVhZHkmJih0aGlzLl9fZGF0YUludmFsaWQ9ITAsYnQucnVuKCgoKT0+e3RoaXMuX19kYXRhSW52YWxpZCYmKHRoaXMuX19kYXRhSW52YWxpZD0hMSx0aGlzLl9mbHVzaFByb3BlcnRpZXMoKSl9KSkpfV9lbmFibGVQcm9wZXJ0aWVzKCl7dGhpcy5fX2RhdGFFbmFibGVkfHwodGhpcy5fX2RhdGFFbmFibGVkPSEwLHRoaXMuX19kYXRhSW5zdGFuY2VQcm9wcyYmKHRoaXMuX2luaXRpYWxpemVJbnN0YW5jZVByb3BlcnRpZXModGhpcy5fX2RhdGFJbnN0YW5jZVByb3BzKSx0aGlzLl9fZGF0YUluc3RhbmNlUHJvcHM9bnVsbCksdGhpcy5yZWFkeSgpKX1fZmx1c2hQcm9wZXJ0aWVzKCl7dGhpcy5fX2RhdGFDb3VudGVyKys7Y29uc3QgdD10aGlzLl9fZGF0YSxlPXRoaXMuX19kYXRhUGVuZGluZyxuPXRoaXMuX19kYXRhT2xkO3RoaXMuX3Nob3VsZFByb3BlcnRpZXNDaGFuZ2UodCxlLG4pJiYodGhpcy5fX2RhdGFQZW5kaW5nPW51bGwsdGhpcy5fX2RhdGFPbGQ9bnVsbCx0aGlzLl9wcm9wZXJ0aWVzQ2hhbmdlZCh0LGUsbikpLHRoaXMuX19kYXRhQ291bnRlci0tfV9zaG91bGRQcm9wZXJ0aWVzQ2hhbmdlKHQsZSxuKXtyZXR1cm4gQm9vbGVhbihlKX1fcHJvcGVydGllc0NoYW5nZWQodCxlLG4pe31fc2hvdWxkUHJvcGVydHlDaGFuZ2UodCxlLG4pe3JldHVybiBuIT09ZSYmKG49PW58fGU9PWUpfWF0dHJpYnV0ZUNoYW5nZWRDYWxsYmFjayh0LGUsbixpKXtlIT09biYmdGhpcy5fYXR0cmlidXRlVG9Qcm9wZXJ0eSh0LG4pLHN1cGVyLmF0dHJpYnV0ZUNoYW5nZWRDYWxsYmFjayYmc3VwZXIuYXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrKHQsZSxuLGkpfV9hdHRyaWJ1dGVUb1Byb3BlcnR5KHQsZSxuKXtpZighdGhpcy5fX3NlcmlhbGl6aW5nKXtjb25zdCBpPXRoaXMuX19kYXRhQXR0cmlidXRlcyxyPWkmJmlbdF18fHQ7dGhpc1tyXT10aGlzLl9kZXNlcmlhbGl6ZVZhbHVlKGUsbnx8dGhpcy5jb25zdHJ1Y3Rvci50eXBlRm9yUHJvcGVydHkocikpfX1fcHJvcGVydHlUb0F0dHJpYnV0ZSh0LGUsbil7dGhpcy5fX3NlcmlhbGl6aW5nPSEwLHRoaXMuX3ZhbHVlVG9Ob2RlQXR0cmlidXRlKHRoaXMsbj1hcmd1bWVudHMubGVuZ3RoPDM/dGhpc1t0XTpuLGV8fHRoaXMuY29uc3RydWN0b3IuYXR0cmlidXRlTmFtZUZvclByb3BlcnR5KHQpKSx0aGlzLl9fc2VyaWFsaXppbmc9ITF9X3ZhbHVlVG9Ob2RlQXR0cmlidXRlKHQsZSxuKXtjb25zdCBpPXRoaXMuX3NlcmlhbGl6ZVZhbHVlKGUpOyJjbGFzcyIhPT1uJiYibmFtZSIhPT1uJiYic2xvdCIhPT1ufHwodD1ZKHQpKSx2b2lkIDA9PT1pP3QucmVtb3ZlQXR0cmlidXRlKG4pOnQuc2V0QXR0cmlidXRlKG4saSl9X3NlcmlhbGl6ZVZhbHVlKHQpe3N3aXRjaCh0eXBlb2YgdCl7Y2FzZSJib29sZWFuIjpyZXR1cm4gdD8iIjp2b2lkIDA7ZGVmYXVsdDpyZXR1cm4gbnVsbCE9dD90LnRvU3RyaW5nKCk6dm9pZCAwfX1fZGVzZXJpYWxpemVWYWx1ZSh0LGUpe3N3aXRjaChlKXtjYXNlIEJvb2xlYW46cmV0dXJuIG51bGwhPT10O2Nhc2UgTnVtYmVyOnJldHVybiBOdW1iZXIodCk7ZGVmYXVsdDpyZXR1cm4gdH19fSkpLHd0PXt9O2xldCBTdD1IVE1MRWxlbWVudC5wcm90b3R5cGU7Zm9yKDtTdDspe2xldCB0PU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKFN0KTtmb3IobGV0IGU9MDtlPHQubGVuZ3RoO2UrKyl3dFt0W2VdXT0hMDtTdD1PYmplY3QuZ2V0UHJvdG90eXBlT2YoU3QpfWNvbnN0IE10PUkoKHQ9Pntjb25zdCBlPXh0KHQpO3JldHVybiBjbGFzcyBleHRlbmRzIGV7c3RhdGljIGNyZWF0ZVByb3BlcnRpZXNGb3JBdHRyaWJ1dGVzKCl7bGV0IHQ9dGhpcy5vYnNlcnZlZEF0dHJpYnV0ZXM7Zm9yKGxldCBlPTA7ZTx0Lmxlbmd0aDtlKyspdGhpcy5wcm90b3R5cGUuX2NyZWF0ZVByb3BlcnR5QWNjZXNzb3Ioc3QodFtlXSkpfXN0YXRpYyBhdHRyaWJ1dGVOYW1lRm9yUHJvcGVydHkodCl7cmV0dXJuIGx0KHQpfV9pbml0aWFsaXplUHJvcGVydGllcygpe3RoaXMuX19kYXRhUHJvdG8mJih0aGlzLl9pbml0aWFsaXplUHJvdG9Qcm9wZXJ0aWVzKHRoaXMuX19kYXRhUHJvdG8pLHRoaXMuX19kYXRhUHJvdG89bnVsbCksc3VwZXIuX2luaXRpYWxpemVQcm9wZXJ0aWVzKCl9X2luaXRpYWxpemVQcm90b1Byb3BlcnRpZXModCl7Zm9yKGxldCBlIGluIHQpdGhpcy5fc2V0UHJvcGVydHkoZSx0W2VdKX1fZW5zdXJlQXR0cmlidXRlKHQsZSl7Y29uc3Qgbj10aGlzO24uaGFzQXR0cmlidXRlKHQpfHx0aGlzLl92YWx1ZVRvTm9kZUF0dHJpYnV0ZShuLGUsdCl9X3NlcmlhbGl6ZVZhbHVlKHQpe3N3aXRjaCh0eXBlb2YgdCl7Y2FzZSJvYmplY3QiOmlmKHQgaW5zdGFuY2VvZiBEYXRlKXJldHVybiB0LnRvU3RyaW5nKCk7aWYodCl0cnl7cmV0dXJuIEpTT04uc3RyaW5naWZ5KHQpfWNhdGNoKHQpe3JldHVybiIifWRlZmF1bHQ6cmV0dXJuIHN1cGVyLl9zZXJpYWxpemVWYWx1ZSh0KX19X2Rlc2VyaWFsaXplVmFsdWUodCxlKXtsZXQgbjtzd2l0Y2goZSl7Y2FzZSBPYmplY3Q6dHJ5e249SlNPTi5wYXJzZSh0KX1jYXRjaChlKXtuPXR9YnJlYWs7Y2FzZSBBcnJheTp0cnl7bj1KU09OLnBhcnNlKHQpfWNhdGNoKGUpe249bnVsbCxjb25zb2xlLndhcm4oYFBvbHltZXI6OkF0dHJpYnV0ZXM6IGNvdWxkbid0IGRlY29kZSBBcnJheSBhcyBKU09OOiAke3R9YCl9YnJlYWs7Y2FzZSBEYXRlOm49aXNOYU4odCk/U3RyaW5nKHQpOk51bWJlcih0KSxuPW5ldyBEYXRlKG4pO2JyZWFrO2RlZmF1bHQ6bj1zdXBlci5fZGVzZXJpYWxpemVWYWx1ZSh0LGUpfXJldHVybiBufV9kZWZpbmVQcm9wZXJ0eUFjY2Vzc29yKHQsZSl7IShmdW5jdGlvbiBuKHQsZSl7aWYoIXd0W2VdKXtsZXQgbj10W2VdO3ZvaWQgMCE9PW4mJih0Ll9fZGF0YT90Ll9zZXRQZW5kaW5nUHJvcGVydHkoZSxuKToodC5fX2RhdGFQcm90bz90Lmhhc093blByb3BlcnR5KEpTQ29tcGlsZXJfcmVuYW1lUHJvcGVydHkoIl9fZGF0YVByb3RvIix0KSl8fCh0Ll9fZGF0YVByb3RvPU9iamVjdC5jcmVhdGUodC5fX2RhdGFQcm90bykpOnQuX19kYXRhUHJvdG89e30sdC5fX2RhdGFQcm90b1tlXT1uKSl9fSkodGhpcyx0KSxzdXBlci5fZGVmaW5lUHJvcGVydHlBY2Nlc3Nvcih0LGUpfV9oYXNBY2Nlc3Nvcih0KXtyZXR1cm4gdGhpcy5fX2RhdGFIYXNBY2Nlc3NvciYmdGhpcy5fX2RhdGFIYXNBY2Nlc3Nvclt0XX1faXNQcm9wZXJ0eVBlbmRpbmcodCl7cmV0dXJuIEJvb2xlYW4odGhpcy5fX2RhdGFQZW5kaW5nJiZ0IGluIHRoaXMuX19kYXRhUGVuZGluZyl9fX0pKSxFdD17ImRvbS1pZiI6ITAsImRvbS1yZXBlYXQiOiEwfTsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE3IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQKICAgIENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvCiAgICBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50IGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi9sZXQgVHQ9ITEsQ3Q9ITE7ZnVuY3Rpb24gQXQodCl7KGZ1bmN0aW9uIGUoKXtpZighVHQpe1R0PSEwO2NvbnN0IHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGV4dGFyZWEiKTt0LnBsYWNlaG9sZGVyPSJhIixDdD10LnBsYWNlaG9sZGVyPT09dC50ZXh0Q29udGVudH1yZXR1cm4gQ3R9KSgpJiYidGV4dGFyZWEiPT09dC5sb2NhbE5hbWUmJnQucGxhY2Vob2xkZXImJnQucGxhY2Vob2xkZXI9PT10LnRleHRDb250ZW50JiYodC50ZXh0Q29udGVudD1udWxsKX1mdW5jdGlvbiBrdCh0KXtsZXQgZT10LmdldEF0dHJpYnV0ZSgiaXMiKTtpZihlJiZFdFtlXSl7bGV0IG49dDtmb3Iobi5yZW1vdmVBdHRyaWJ1dGUoImlzIiksdD1uLm93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudChlKSxuLnBhcmVudE5vZGUucmVwbGFjZUNoaWxkKHQsbiksdC5hcHBlbmRDaGlsZChuKTtuLmF0dHJpYnV0ZXMubGVuZ3RoOyl0LnNldEF0dHJpYnV0ZShuLmF0dHJpYnV0ZXNbMF0ubmFtZSxuLmF0dHJpYnV0ZXNbMF0udmFsdWUpLG4ucmVtb3ZlQXR0cmlidXRlKG4uYXR0cmlidXRlc1swXS5uYW1lKX1yZXR1cm4gdH1mdW5jdGlvbiBMdCh0LGUpe2xldCBuPWUucGFyZW50SW5mbyYmTHQodCxlLnBhcmVudEluZm8pO2lmKCFuKXJldHVybiB0O2ZvcihsZXQgdD1uLmZpcnN0Q2hpbGQsaT0wO3Q7dD10Lm5leHRTaWJsaW5nKWlmKGUucGFyZW50SW5kZXg9PT1pKyspcmV0dXJuIHR9ZnVuY3Rpb24gUHQodCxlLG4saSl7aS5pZCYmKGVbaS5pZF09bil9ZnVuY3Rpb24gTnQodCxlLG4pe2lmKG4uZXZlbnRzJiZuLmV2ZW50cy5sZW5ndGgpZm9yKGxldCBpLHI9MCxvPW4uZXZlbnRzO3I8by5sZW5ndGgmJihpPW9bcl0pO3IrKyl0Ll9hZGRNZXRob2RFdmVudExpc3RlbmVyVG9Ob2RlKGUsaS5uYW1lLGkudmFsdWUsdCl9ZnVuY3Rpb24gSXQodCxlLG4saSl7bi50ZW1wbGF0ZUluZm8mJihlLl90ZW1wbGF0ZUluZm89bi50ZW1wbGF0ZUluZm8sZS5fcGFyZW50VGVtcGxhdGVJbmZvPWkpfWNvbnN0IFJ0PUkoKHQ9PmNsYXNzIGV4dGVuZHMgdHtzdGF0aWMgX3BhcnNlVGVtcGxhdGUodCxlKXtpZighdC5fdGVtcGxhdGVJbmZvKXtsZXQgbj10Ll90ZW1wbGF0ZUluZm89e307bi5ub2RlSW5mb0xpc3Q9W10sbi5uZXN0ZWRUZW1wbGF0ZT1Cb29sZWFuKGUpLG4uc3RyaXBXaGl0ZVNwYWNlPWUmJmUuc3RyaXBXaGl0ZVNwYWNlfHx0Lmhhc0F0dHJpYnV0ZSgic3RyaXAtd2hpdGVzcGFjZSIpLHRoaXMuX3BhcnNlVGVtcGxhdGVDb250ZW50KHQsbix7cGFyZW50Om51bGx9KX1yZXR1cm4gdC5fdGVtcGxhdGVJbmZvfXN0YXRpYyBfcGFyc2VUZW1wbGF0ZUNvbnRlbnQodCxlLG4pe3JldHVybiB0aGlzLl9wYXJzZVRlbXBsYXRlTm9kZSh0LmNvbnRlbnQsZSxuKX1zdGF0aWMgX3BhcnNlVGVtcGxhdGVOb2RlKHQsZSxuKXtsZXQgaT0hMSxyPXQ7cmV0dXJuInRlbXBsYXRlIiE9ci5sb2NhbE5hbWV8fHIuaGFzQXR0cmlidXRlKCJwcmVzZXJ2ZS1jb250ZW50Iik/InNsb3QiPT09ci5sb2NhbE5hbWUmJihlLmhhc0luc2VydGlvblBvaW50PSEwKTppPXRoaXMuX3BhcnNlVGVtcGxhdGVOZXN0ZWRUZW1wbGF0ZShyLGUsbil8fGksQXQociksci5maXJzdENoaWxkJiZ0aGlzLl9wYXJzZVRlbXBsYXRlQ2hpbGROb2RlcyhyLGUsbiksci5oYXNBdHRyaWJ1dGVzJiZyLmhhc0F0dHJpYnV0ZXMoKSYmKGk9dGhpcy5fcGFyc2VUZW1wbGF0ZU5vZGVBdHRyaWJ1dGVzKHIsZSxuKXx8aSksaXx8bi5ub3RlZH1zdGF0aWMgX3BhcnNlVGVtcGxhdGVDaGlsZE5vZGVzKHQsZSxuKXtpZigic2NyaXB0IiE9PXQubG9jYWxOYW1lJiYic3R5bGUiIT09dC5sb2NhbE5hbWUpZm9yKGxldCBpLHI9dC5maXJzdENoaWxkLG89MDtyO3I9aSl7aWYoInRlbXBsYXRlIj09ci5sb2NhbE5hbWUmJihyPWt0KHIpKSxpPXIubmV4dFNpYmxpbmcsci5ub2RlVHlwZT09PU5vZGUuVEVYVF9OT0RFKXtsZXQgbj1pO2Zvcig7biYmbi5ub2RlVHlwZT09PU5vZGUuVEVYVF9OT0RFOylyLnRleHRDb250ZW50Kz1uLnRleHRDb250ZW50LGk9bi5uZXh0U2libGluZyx0LnJlbW92ZUNoaWxkKG4pLG49aTtpZihlLnN0cmlwV2hpdGVTcGFjZSYmIXIudGV4dENvbnRlbnQudHJpbSgpKXt0LnJlbW92ZUNoaWxkKHIpO2NvbnRpbnVlfX1sZXQgYT17cGFyZW50SW5kZXg6byxwYXJlbnRJbmZvOm59O3RoaXMuX3BhcnNlVGVtcGxhdGVOb2RlKHIsZSxhKSYmKGEuaW5mb0luZGV4PWUubm9kZUluZm9MaXN0LnB1c2goYSktMSksci5wYXJlbnROb2RlJiZvKyt9fXN0YXRpYyBfcGFyc2VUZW1wbGF0ZU5lc3RlZFRlbXBsYXRlKHQsZSxuKXtsZXQgaT10LHI9dGhpcy5fcGFyc2VUZW1wbGF0ZShpLGUpO3JldHVybihyLmNvbnRlbnQ9aS5jb250ZW50Lm93bmVyRG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpKS5hcHBlbmRDaGlsZChpLmNvbnRlbnQpLG4udGVtcGxhdGVJbmZvPXIsITB9c3RhdGljIF9wYXJzZVRlbXBsYXRlTm9kZUF0dHJpYnV0ZXModCxlLG4pe2xldCBpPSExLHI9QXJyYXkuZnJvbSh0LmF0dHJpYnV0ZXMpO2ZvcihsZXQgbyxhPXIubGVuZ3RoLTE7bz1yW2FdO2EtLSlpPXRoaXMuX3BhcnNlVGVtcGxhdGVOb2RlQXR0cmlidXRlKHQsZSxuLG8ubmFtZSxvLnZhbHVlKXx8aTtyZXR1cm4gaX1zdGF0aWMgX3BhcnNlVGVtcGxhdGVOb2RlQXR0cmlidXRlKHQsZSxuLGkscil7cmV0dXJuIm9uLSI9PT1pLnNsaWNlKDAsMyk/KHQucmVtb3ZlQXR0cmlidXRlKGkpLG4uZXZlbnRzPW4uZXZlbnRzfHxbXSxuLmV2ZW50cy5wdXNoKHtuYW1lOmkuc2xpY2UoMyksdmFsdWU6cn0pLCEwKToiaWQiPT09aSYmKG4uaWQ9ciwhMCl9c3RhdGljIF9jb250ZW50Rm9yVGVtcGxhdGUodCl7bGV0IGU9dC5fdGVtcGxhdGVJbmZvO3JldHVybiBlJiZlLmNvbnRlbnR8fHQuY29udGVudH1fc3RhbXBUZW1wbGF0ZSh0LGUpe3QmJiF0LmNvbnRlbnQmJndpbmRvdy5IVE1MVGVtcGxhdGVFbGVtZW50JiZIVE1MVGVtcGxhdGVFbGVtZW50LmRlY29yYXRlJiZIVE1MVGVtcGxhdGVFbGVtZW50LmRlY29yYXRlKHQpO2xldCBuPShlPWV8fHRoaXMuY29uc3RydWN0b3IuX3BhcnNlVGVtcGxhdGUodCkpLm5vZGVJbmZvTGlzdCxpPWRvY3VtZW50LmltcG9ydE5vZGUoZS5jb250ZW50fHx0LmNvbnRlbnQsITApO2kuX19ub0luc2VydGlvblBvaW50PSFlLmhhc0luc2VydGlvblBvaW50O2xldCByPWkubm9kZUxpc3Q9bmV3IEFycmF5KG4ubGVuZ3RoKTtpLiQ9e307Zm9yKGxldCB0LG89MCxhPW4ubGVuZ3RoO288YSYmKHQ9bltvXSk7bysrKXtsZXQgbj1yW29dPUx0KGksdCk7UHQoMCxpLiQsbix0KSxJdCgwLG4sdCxlKSxOdCh0aGlzLG4sdCl9cmV0dXJuIGk9aSxpfV9hZGRNZXRob2RFdmVudExpc3RlbmVyVG9Ob2RlKHQsZSxuLGkpe2xldCByPShmdW5jdGlvbiBvKHQsZSxuKXtyZXR1cm4gdD10Ll9tZXRob2RIb3N0fHx0LGZ1bmN0aW9uKGUpe3Rbbl0/dFtuXShlLGUuZGV0YWlsKTpjb25zb2xlLndhcm4oImxpc3RlbmVyIG1ldGhvZCBgIituKyJgIG5vdCBkZWZpbmVkIil9fSkoaT1pfHx0LDAsbik7cmV0dXJuIHRoaXMuX2FkZEV2ZW50TGlzdGVuZXJUb05vZGUodCxlLHIpLHJ9X2FkZEV2ZW50TGlzdGVuZXJUb05vZGUodCxlLG4pe3QuYWRkRXZlbnRMaXN0ZW5lcihlLG4pfV9yZW1vdmVFdmVudExpc3RlbmVyRnJvbU5vZGUodCxlLG4pe3QucmVtb3ZlRXZlbnRMaXN0ZW5lcihlLG4pfX0pKTsKLyoqCiAgICAgKiBAZmlsZW92ZXJ2aWV3CiAgICAgKiBAc3VwcHJlc3Mge2NoZWNrUHJvdG90eXBhbFR5cGVzfQogICAgICogQGxpY2Vuc2UgQ29weXJpZ2h0IChjKSAyMDE3IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgICAqIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgICogaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQKICAgICAqIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkKICAgICAqIGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkKICAgICAqIEdvb2dsZSBhcyBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAKICAgICAqIHJpZ2h0cyBncmFudCBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICAqL2xldCBPdD0wO2NvbnN0IHp0PVtdLER0PXtDT01QVVRFOiJfX2NvbXB1dGVFZmZlY3RzIixSRUZMRUNUOiJfX3JlZmxlY3RFZmZlY3RzIixOT1RJRlk6Il9fbm90aWZ5RWZmZWN0cyIsUFJPUEFHQVRFOiJfX3Byb3BhZ2F0ZUVmZmVjdHMiLE9CU0VSVkU6Il9fb2JzZXJ2ZUVmZmVjdHMiLFJFQURfT05MWToiX19yZWFkT25seSJ9LEJ0PSJfX2NvbXB1dGVJbmZvIixIdD0vW0EtWl0vO2Z1bmN0aW9uIEZ0KHQsZSxuKXtsZXQgaT10W2VdO2lmKGkpe2lmKCF0Lmhhc093blByb3BlcnR5KGUpJiYoaT10W2VdPU9iamVjdC5jcmVhdGUodFtlXSksbikpZm9yKGxldCB0IGluIGkpe2xldCBlPWlbdF0sbj1pW3RdPUFycmF5KGUubGVuZ3RoKTtmb3IobGV0IHQ9MDt0PGUubGVuZ3RoO3QrKyluW3RdPWVbdF19fWVsc2UgaT10W2VdPXt9O3JldHVybiBpfWZ1bmN0aW9uIFZ0KHQsZSxuLGkscixvKXtpZihlKXtsZXQgYT0hMTtjb25zdCBzPU90Kys7Zm9yKGxldCBsIGluIG4pe2xldCBjPWVbcj8kKGwpOmxdO2lmKGMpZm9yKGxldCBlLHU9MCxoPWMubGVuZ3RoO3U8aCYmKGU9Y1t1XSk7dSsrKWUuaW5mbyYmZS5pbmZvLmxhc3RSdW49PT1zfHxyJiYhanQobCxlLnRyaWdnZXIpfHwoZS5pbmZvJiYoZS5pbmZvLmxhc3RSdW49cyksZS5mbih0LGwsbixpLGUuaW5mbyxyLG8pLGE9ITApfXJldHVybiBhfXJldHVybiExfWZ1bmN0aW9uIFV0KHQsZSxuLGkscixvLGEscyl7bGV0IGw9ITEsYz1lW2E/JChpKTppXTtpZihjKWZvcihsZXQgZSx1PTAsaD1jLmxlbmd0aDt1PGgmJihlPWNbdV0pO3UrKyllLmluZm8mJmUuaW5mby5sYXN0UnVuPT09bnx8YSYmIWp0KGksZS50cmlnZ2VyKXx8KGUuaW5mbyYmKGUuaW5mby5sYXN0UnVuPW4pLGUuZm4odCxpLHIsbyxlLmluZm8sYSxzKSxsPSEwKTtyZXR1cm4gbH1mdW5jdGlvbiBqdCh0LGUpe2lmKGUpe2xldCBuPWUubmFtZTtyZXR1cm4gbj09dHx8ISghZS5zdHJ1Y3R1cmVkfHwhSyhuLHQpKXx8ISghZS53aWxkY2FyZHx8IVoobix0KSl9cmV0dXJuITB9ZnVuY3Rpb24gR3QodCxlLG4saSxyKXtsZXQgbz0ic3RyaW5nIj09dHlwZW9mIHIubWV0aG9kP3Rbci5tZXRob2RdOnIubWV0aG9kLGE9ci5wcm9wZXJ0eTtvP28uY2FsbCh0LHQuX19kYXRhW2FdLGlbYV0pOnIuZHluYW1pY0ZufHxjb25zb2xlLndhcm4oIm9ic2VydmVyIG1ldGhvZCBgIityLm1ldGhvZCsiYCBub3QgZGVmaW5lZCIpfWZ1bmN0aW9uIFd0KHQsZSxuKXtsZXQgaT0kKGUpO2lmKGkhPT1lKXtyZXR1cm4gcXQodCxsdChpKSsiLWNoYW5nZWQiLG5bZV0sZSksITB9cmV0dXJuITF9ZnVuY3Rpb24gcXQodCxlLG4saSl7bGV0IHI9e3ZhbHVlOm4scXVldWVQcm9wZXJ0eTohMH07aSYmKHIucGF0aD1pKSxZKHQpLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KGUse2RldGFpbDpyfSkpfWZ1bmN0aW9uIFl0KHQsZSxuLGkscixvKXtsZXQgYT0obz8kKGUpOmUpIT1lP2U6bnVsbCxzPWE/bnQodCxhKTp0Ll9fZGF0YVtlXTthJiZ2b2lkIDA9PT1zJiYocz1uW2VdKSxxdCh0LHIuZXZlbnROYW1lLHMsYSl9ZnVuY3Rpb24gWHQodCxlLG4saSxyKXtsZXQgbz10Ll9fZGF0YVtlXTt5JiYobz15KG8sci5hdHRyTmFtZSwiYXR0cmlidXRlIix0KSksdC5fcHJvcGVydHlUb0F0dHJpYnV0ZShlLHIuYXR0ck5hbWUsbyl9ZnVuY3Rpb24gJHQodCxlLG4saSl7bGV0IHI9dFtEdC5DT01QVVRFXTtpZihyKWlmKFQpe090Kys7Y29uc3Qgbz0oZnVuY3Rpb24gbyh0KXtsZXQgZT10LmNvbnN0cnVjdG9yLl9fb3JkZXJlZENvbXB1dGVkRGVwcztpZighZSl7ZT1uZXcgTWFwO2NvbnN0IG49dFtEdC5DT01QVVRFXTtsZXQgaSx7Y291bnRzOnIscmVhZHk6byx0b3RhbDphfT0oZnVuY3Rpb24gbih0KXtjb25zdCBlPXQuX19jb21wdXRlSW5mbyxuPXt9LGk9dFtEdC5DT01QVVRFXSxyPVtdO2xldCBvPTA7Zm9yKGxldCB0IGluIGUpe2NvbnN0IGk9ZVt0XTtvKz1uW3RdPWkuYXJncy5maWx0ZXIoKHQ9PiF0LmxpdGVyYWwpKS5sZW5ndGgrKGkuZHluYW1pY0ZuPzE6MCl9Zm9yKGxldCB0IGluIGkpZVt0XXx8ci5wdXNoKHQpO3JldHVybntjb3VudHM6bixyZWFkeTpyLHRvdGFsOm99fSkodCk7Zm9yKDtpPW8uc2hpZnQoKTspe2Uuc2V0KGksZS5zaXplKTtjb25zdCB0PW5baV07dCYmdC5mb3JFYWNoKCh0PT57Y29uc3QgZT10LmluZm8ubWV0aG9kSW5mbzstLWEsMD09LS1yW2VdJiZvLnB1c2goZSl9KSl9aWYoMCE9PWEpe2NvbnNvbGUud2FybihgQ29tcHV0ZWQgZ3JhcGggZm9yICR7dC5sb2NhbE5hbWV9IGluY29tcGxldGU7IGNpcmN1bGFyP2ApfXQuY29uc3RydWN0b3IuX19vcmRlcmVkQ29tcHV0ZWREZXBzPWV9cmV0dXJuIGV9KSh0KSxhPVtdO2ZvcihsZXQgdCBpbiBlKVp0KHQscixhLG8saSk7bGV0IHM7Zm9yKDtzPWEuc2hpZnQoKTspSnQodCwiIixlLG4scykmJlp0KHMubWV0aG9kSW5mbyxyLGEsbyxpKTtPYmplY3QuYXNzaWduKG4sdC5fX2RhdGFPbGQpLE9iamVjdC5hc3NpZ24oZSx0Ll9fZGF0YVBlbmRpbmcpLHQuX19kYXRhUGVuZGluZz1udWxsfWVsc2V7bGV0IG89ZTtmb3IoO1Z0KHQscixvLG4saSk7KU9iamVjdC5hc3NpZ24obix0Ll9fZGF0YU9sZCksT2JqZWN0LmFzc2lnbihlLHQuX19kYXRhUGVuZGluZyksbz10Ll9fZGF0YVBlbmRpbmcsdC5fX2RhdGFQZW5kaW5nPW51bGx9fWNvbnN0IEt0PSh0LGUsbik9PntsZXQgaT0wLHI9ZS5sZW5ndGgtMSxvPS0xO2Zvcig7aTw9cjspe2NvbnN0IGE9aStyPj4xLHM9bi5nZXQoZVthXS5tZXRob2RJbmZvKS1uLmdldCh0Lm1ldGhvZEluZm8pO2lmKHM8MClpPWErMTtlbHNle2lmKCEocz4wKSl7bz1hO2JyZWFrfXI9YS0xfX1vPDAmJihvPXIrMSksZS5zcGxpY2UobywwLHQpfSxadD0odCxlLG4saSxyKT0+e2NvbnN0IG89ZVtyPyQodCk6dF07aWYobylmb3IobGV0IGU9MDtlPG8ubGVuZ3RoO2UrKyl7Y29uc3QgYT1vW2VdO2EuaW5mby5sYXN0UnVuPT09T3R8fHImJiFqdCh0LGEudHJpZ2dlcil8fChhLmluZm8ubGFzdFJ1bj1PdCxLdChhLmluZm8sbixpKSl9fTtmdW5jdGlvbiBKdCh0LGUsbixpLHIpe2xldCBvPW9lKHQsZSxuLGkscik7aWYobz09PXp0KXJldHVybiExO2xldCBhPXIubWV0aG9kSW5mbztyZXR1cm4gdC5fX2RhdGFIYXNBY2Nlc3NvciYmdC5fX2RhdGFIYXNBY2Nlc3NvclthXT90Ll9zZXRQZW5kaW5nUHJvcGVydHkoYSxvLCEwKToodFthXT1vLCExKX1mdW5jdGlvbiBRdCh0LGUsbixpLHIsbyxhKXtuLmJpbmRpbmdzPW4uYmluZGluZ3N8fFtdO2xldCBzPXtraW5kOmksdGFyZ2V0OnIscGFydHM6byxsaXRlcmFsOmEsaXNDb21wb3VuZDoxIT09by5sZW5ndGh9O2lmKG4uYmluZGluZ3MucHVzaChzKSwoZnVuY3Rpb24gbCh0KXtyZXR1cm4gQm9vbGVhbih0LnRhcmdldCkmJiJhdHRyaWJ1dGUiIT10LmtpbmQmJiJ0ZXh0IiE9dC5raW5kJiYhdC5pc0NvbXBvdW5kJiYieyI9PT10LnBhcnRzWzBdLm1vZGV9KShzKSl7bGV0e2V2ZW50OnQsbmVnYXRlOmV9PXMucGFydHNbMF07cy5saXN0ZW5lckV2ZW50PXR8fGx0KHIpKyItY2hhbmdlZCIscy5saXN0ZW5lck5lZ2F0ZT1lfWxldCBjPWUubm9kZUluZm9MaXN0Lmxlbmd0aDtmb3IobGV0IG49MDtuPHMucGFydHMubGVuZ3RoO24rKyl7bGV0IGk9cy5wYXJ0c1tuXTtpLmNvbXBvdW5kSW5kZXg9bix0ZSh0LGUscyxpLGMpfX1mdW5jdGlvbiB0ZSh0LGUsbixpLHIpe2lmKCFpLmxpdGVyYWwpaWYoImF0dHJpYnV0ZSI9PT1uLmtpbmQmJiItIj09PW4udGFyZ2V0WzBdKWNvbnNvbGUud2FybigiQ2Fubm90IHNldCBhdHRyaWJ1dGUgIituLnRhcmdldCsnIGJlY2F1c2UgIi0iIGlzIG5vdCBhIHZhbGlkIGF0dHJpYnV0ZSBzdGFydGluZyBjaGFyYWN0ZXInKTtlbHNle2xldCBvPWkuZGVwZW5kZW5jaWVzLGE9e2luZGV4OnIsYmluZGluZzpuLHBhcnQ6aSxldmFsdWF0b3I6dH07Zm9yKGxldCBuPTA7bjxvLmxlbmd0aDtuKyspe2xldCBpPW9bbl07InN0cmluZyI9PXR5cGVvZiBpJiYoaT11ZShpKSxpLndpbGRjYXJkPSEwKSx0Ll9hZGRUZW1wbGF0ZVByb3BlcnR5RWZmZWN0KGUsaS5yb290UHJvcGVydHkse2ZuOmVlLGluZm86YSx0cmlnZ2VyOml9KX19fWZ1bmN0aW9uIGVlKHQsZSxuLGkscixvLGEpe2xldCBzPWFbci5pbmRleF0sbD1yLmJpbmRpbmcsYz1yLnBhcnQ7aWYobyYmYy5zb3VyY2UmJmUubGVuZ3RoPmMuc291cmNlLmxlbmd0aCYmInByb3BlcnR5Ij09bC5raW5kJiYhbC5pc0NvbXBvdW5kJiZzLl9faXNQcm9wZXJ0eUVmZmVjdHNDbGllbnQmJnMuX19kYXRhSGFzQWNjZXNzb3ImJnMuX19kYXRhSGFzQWNjZXNzb3JbbC50YXJnZXRdKXtsZXQgaT1uW2VdO2U9SihjLnNvdXJjZSxsLnRhcmdldCxlKSxzLl9zZXRQZW5kaW5nUHJvcGVydHlPclBhdGgoZSxpLCExLCEwKSYmdC5fZW5xdWV1ZUNsaWVudChzKX1lbHNle2xldCBhPXIuZXZhbHVhdG9yLl9ldmFsdWF0ZUJpbmRpbmcodCxjLGUsbixpLG8pO2EhPT16dCYmKGZ1bmN0aW9uIHUodCxlLG4saSxyKXtyPShmdW5jdGlvbiBvKHQsZSxuLGkpe2lmKG4uaXNDb21wb3VuZCl7bGV0IHI9dC5fX2RhdGFDb21wb3VuZFN0b3JhZ2Vbbi50YXJnZXRdO3JbaS5jb21wb3VuZEluZGV4XT1lLGU9ci5qb2luKCIiKX0iYXR0cmlidXRlIiE9PW4ua2luZCYmKCJ0ZXh0Q29udGVudCIhPT1uLnRhcmdldCYmKCJ2YWx1ZSIhPT1uLnRhcmdldHx8ImlucHV0IiE9PXQubG9jYWxOYW1lJiYidGV4dGFyZWEiIT09dC5sb2NhbE5hbWUpfHwoZT1udWxsPT1lPyIiOmUpKTtyZXR1cm4gZX0pKGUscixuLGkpLHkmJihyPXkocixuLnRhcmdldCxuLmtpbmQsZSkpO2lmKCJhdHRyaWJ1dGUiPT1uLmtpbmQpdC5fdmFsdWVUb05vZGVBdHRyaWJ1dGUoZSxyLG4udGFyZ2V0KTtlbHNle2xldCBpPW4udGFyZ2V0O2UuX19pc1Byb3BlcnR5RWZmZWN0c0NsaWVudCYmZS5fX2RhdGFIYXNBY2Nlc3NvciYmZS5fX2RhdGFIYXNBY2Nlc3NvcltpXT9lW0R0LlJFQURfT05MWV0mJmVbRHQuUkVBRF9PTkxZXVtpXXx8ZS5fc2V0UGVuZGluZ1Byb3BlcnR5KGkscikmJnQuX2VucXVldWVDbGllbnQoZSk6dC5fc2V0VW5tYW5hZ2VkUHJvcGVydHlUb05vZGUoZSxpLHIpfX0pKHQscyxsLGMsYSl9fWZ1bmN0aW9uIG5lKHQsZSl7aWYoZS5pc0NvbXBvdW5kKXtsZXQgbj10Ll9fZGF0YUNvbXBvdW5kU3RvcmFnZXx8KHQuX19kYXRhQ29tcG91bmRTdG9yYWdlPXt9KSxpPWUucGFydHMscj1uZXcgQXJyYXkoaS5sZW5ndGgpO2ZvcihsZXQgdD0wO3Q8aS5sZW5ndGg7dCsrKXJbdF09aVt0XS5saXRlcmFsO2xldCBvPWUudGFyZ2V0O25bb109cixlLmxpdGVyYWwmJiJwcm9wZXJ0eSI9PWUua2luZCYmKCJjbGFzc05hbWUiPT09byYmKHQ9WSh0KSksdFtvXT1lLmxpdGVyYWwpfX1mdW5jdGlvbiBpZSh0LGUsbil7aWYobi5saXN0ZW5lckV2ZW50KXtsZXQgaT1uLnBhcnRzWzBdO3QuYWRkRXZlbnRMaXN0ZW5lcihuLmxpc3RlbmVyRXZlbnQsKGZ1bmN0aW9uKHQpeyEoZnVuY3Rpb24gcih0LGUsbixpLG8pe2xldCBhLHM9dC5kZXRhaWwsbD1zJiZzLnBhdGg7bD8oaT1KKG4saSxsKSxhPXMmJnMudmFsdWUpOmE9dC5jdXJyZW50VGFyZ2V0W25dLGE9bz8hYTphLGVbRHQuUkVBRF9PTkxZXSYmZVtEdC5SRUFEX09OTFldW2ldfHwhZS5fc2V0UGVuZGluZ1Byb3BlcnR5T3JQYXRoKGksYSwhMCxCb29sZWFuKGwpKXx8cyYmcy5xdWV1ZVByb3BlcnR5fHxlLl9pbnZhbGlkYXRlUHJvcGVydGllcygpfSkodCxlLG4udGFyZ2V0LGkuc291cmNlLGkubmVnYXRlKX0pKX19ZnVuY3Rpb24gcmUodCxlLG4saSxyLG8pe2xldCBhPXttZXRob2ROYW1lOmUubWV0aG9kTmFtZSxhcmdzOmUuYXJncyxtZXRob2RJbmZvOnIsZHluYW1pY0ZuOm89ZS5zdGF0aWN8fG8mJigib2JqZWN0IiE9dHlwZW9mIG98fG9bZS5tZXRob2ROYW1lXSl9O2ZvcihsZXQgcixvPTA7bzxlLmFyZ3MubGVuZ3RoJiYocj1lLmFyZ3Nbb10pO28rKylyLmxpdGVyYWx8fHQuX2FkZFByb3BlcnR5RWZmZWN0KHIucm9vdFByb3BlcnR5LG4se2ZuOmksaW5mbzphLHRyaWdnZXI6cn0pO3JldHVybiBvJiZ0Ll9hZGRQcm9wZXJ0eUVmZmVjdChlLm1ldGhvZE5hbWUsbix7Zm46aSxpbmZvOmF9KSxhfWZ1bmN0aW9uIG9lKHQsZSxuLGkscil7bGV0IG89dC5fbWV0aG9kSG9zdHx8dCxhPW9bci5tZXRob2ROYW1lXTtpZihhKXtsZXQgaT10Ll9tYXJzaGFsQXJncyhyLmFyZ3MsZSxuKTtyZXR1cm4gaT09PXp0P3p0OmEuYXBwbHkobyxpKX1yLmR5bmFtaWNGbnx8Y29uc29sZS53YXJuKCJtZXRob2QgYCIrci5tZXRob2ROYW1lKyJgIG5vdCBkZWZpbmVkIil9Y29uc3QgYWU9W10sc2U9bmV3IFJlZ0V4cCgiKFxcW1xcW3x7eylcXHMqKD86KCEpXFxzKik/KCg/OlthLXpBLVpfJF1bXFx3LjokXFwtKl0qKVxccyooPzpcXChcXHMqKD86KD86KD86KCg/OlthLXpBLVpfJF1bXFx3LjokXFwtKl0qKXwoPzpbLStdP1swLTldKlxcLj9bMC05XSsoPzpbZUVdWy0rXT9bMC05XSspPyl8KD86KD86Jyg/OlteJ1xcXFxdfFxcXFwuKSonKXwoPzpcIig/OlteXCJcXFxcXXxcXFxcLikqXCIpKSlcXHMqKSg/OixcXHMqKD86KCg/OlthLXpBLVpfJF1bXFx3LjokXFwtKl0qKXwoPzpbLStdP1swLTldKlxcLj9bMC05XSsoPzpbZUVdWy0rXT9bMC05XSspPyl8KD86KD86Jyg/OlteJ1xcXFxdfFxcXFwuKSonKXwoPzpcIig/OlteXCJcXFxcXXxcXFxcLikqXCIpKSlcXHMqKSkqKT8pXFwpXFxzKik/KSg/Ol1dfH19KSIsImciKTtmdW5jdGlvbiBsZSh0KXtsZXQgZT0iIjtmb3IobGV0IG49MDtuPHQubGVuZ3RoO24rKyl7ZSs9dFtuXS5saXRlcmFsfHwiIn1yZXR1cm4gZX1mdW5jdGlvbiBjZSh0KXtsZXQgZT10Lm1hdGNoKC8oW15cc10rPylcKChbXHNcU10qKVwpLyk7aWYoZSl7bGV0IHQ9e21ldGhvZE5hbWU6ZVsxXSxzdGF0aWM6ITAsYXJnczphZX07aWYoZVsyXS50cmltKCkpe3JldHVybihmdW5jdGlvbiBuKHQsZSl7cmV0dXJuIGUuYXJncz10Lm1hcCgoZnVuY3Rpb24odCl7bGV0IG49dWUodCk7cmV0dXJuIG4ubGl0ZXJhbHx8KGUuc3RhdGljPSExKSxufSksdGhpcyksZX0pKGVbMl0ucmVwbGFjZSgvXFwsL2csIiZjb21tYTsiKS5zcGxpdCgiLCIpLHQpfXJldHVybiB0fXJldHVybiBudWxsfWZ1bmN0aW9uIHVlKHQpe2xldCBlPXQudHJpbSgpLnJlcGxhY2UoLyZjb21tYTsvZywiLCIpLnJlcGxhY2UoL1xcKC4pL2csIiQxIiksbj17bmFtZTplLHZhbHVlOiIiLGxpdGVyYWw6ITF9LGk9ZVswXTtzd2l0Y2goIi0iPT09aSYmKGk9ZVsxXSksaT49IjAiJiZpPD0iOSImJihpPSIjIiksaSl7Y2FzZSInIjpjYXNlJyInOm4udmFsdWU9ZS5zbGljZSgxLC0xKSxuLmxpdGVyYWw9ITA7YnJlYWs7Y2FzZSIjIjpuLnZhbHVlPU51bWJlcihlKSxuLmxpdGVyYWw9ITB9cmV0dXJuIG4ubGl0ZXJhbHx8KG4ucm9vdFByb3BlcnR5PSQoZSksbi5zdHJ1Y3R1cmVkPVgoZSksbi5zdHJ1Y3R1cmVkJiYobi53aWxkY2FyZD0iLioiPT1lLnNsaWNlKC0yKSxuLndpbGRjYXJkJiYobi5uYW1lPWUuc2xpY2UoMCwtMikpKSksbn1mdW5jdGlvbiBoZSh0LGUsbil7bGV0IGk9bnQodCxuKTtyZXR1cm4gdm9pZCAwPT09aSYmKGk9ZVtuXSksaX1mdW5jdGlvbiBkZSh0LGUsbixpKXtjb25zdCByPXtpbmRleFNwbGljZXM6aX07RSYmIXQuX292ZXJyaWRlTGVnYWN5VW5kZWZpbmVkJiYoZS5zcGxpY2VzPXIpLHQubm90aWZ5UGF0aChuKyIuc3BsaWNlcyIsciksdC5ub3RpZnlQYXRoKG4rIi5sZW5ndGgiLGUubGVuZ3RoKSxFJiYhdC5fb3ZlcnJpZGVMZWdhY3lVbmRlZmluZWQmJihyLmluZGV4U3BsaWNlcz1bXSl9ZnVuY3Rpb24gcGUodCxlLG4saSxyLG8pe2RlKHQsZSxuLFt7aW5kZXg6aSxhZGRlZENvdW50OnIscmVtb3ZlZDpvLG9iamVjdDplLHR5cGU6InNwbGljZSJ9XSl9Y29uc3QgZmU9SSgodD0+e2NvbnN0IGU9UnQoTXQodCkpO3JldHVybiBjbGFzcyBleHRlbmRzIGV7Y29uc3RydWN0b3IoKXtzdXBlcigpLHRoaXMuX19pc1Byb3BlcnR5RWZmZWN0c0NsaWVudD0hMH1nZXQgUFJPUEVSVFlfRUZGRUNUX1RZUEVTKCl7cmV0dXJuIER0fV9pbml0aWFsaXplUHJvcGVydGllcygpe3N1cGVyLl9pbml0aWFsaXplUHJvcGVydGllcygpLHRoaXMuX3JlZ2lzdGVySG9zdCgpLHRoaXMuX19kYXRhQ2xpZW50c1JlYWR5PSExLHRoaXMuX19kYXRhUGVuZGluZ0NsaWVudHM9bnVsbCx0aGlzLl9fZGF0YVRvTm90aWZ5PW51bGwsdGhpcy5fX2RhdGFMaW5rZWRQYXRocz1udWxsLHRoaXMuX19kYXRhSGFzUGF0aHM9ITEsdGhpcy5fX2RhdGFDb21wb3VuZFN0b3JhZ2U9dGhpcy5fX2RhdGFDb21wb3VuZFN0b3JhZ2V8fG51bGwsdGhpcy5fX2RhdGFIb3N0PXRoaXMuX19kYXRhSG9zdHx8bnVsbCx0aGlzLl9fZGF0YVRlbXA9e30sdGhpcy5fX2RhdGFDbGllbnRzSW5pdGlhbGl6ZWQ9ITF9X3JlZ2lzdGVySG9zdCgpe2lmKG1lLmxlbmd0aCl7bGV0IHQ9bWVbbWUubGVuZ3RoLTFdO3QuX2VucXVldWVDbGllbnQodGhpcyksdGhpcy5fX2RhdGFIb3N0PXR9fV9pbml0aWFsaXplUHJvdG9Qcm9wZXJ0aWVzKHQpe3RoaXMuX19kYXRhPU9iamVjdC5jcmVhdGUodCksdGhpcy5fX2RhdGFQZW5kaW5nPU9iamVjdC5jcmVhdGUodCksdGhpcy5fX2RhdGFPbGQ9e319X2luaXRpYWxpemVJbnN0YW5jZVByb3BlcnRpZXModCl7bGV0IGU9dGhpc1tEdC5SRUFEX09OTFldO2ZvcihsZXQgbiBpbiB0KWUmJmVbbl18fCh0aGlzLl9fZGF0YVBlbmRpbmc9dGhpcy5fX2RhdGFQZW5kaW5nfHx7fSx0aGlzLl9fZGF0YU9sZD10aGlzLl9fZGF0YU9sZHx8e30sdGhpcy5fX2RhdGFbbl09dGhpcy5fX2RhdGFQZW5kaW5nW25dPXRbbl0pfV9hZGRQcm9wZXJ0eUVmZmVjdCh0LGUsbil7dGhpcy5fY3JlYXRlUHJvcGVydHlBY2Nlc3Nvcih0LGU9PUR0LlJFQURfT05MWSk7bGV0IGk9RnQodGhpcyxlLCEwKVt0XTtpfHwoaT10aGlzW2VdW3RdPVtdKSxpLnB1c2gobil9X3JlbW92ZVByb3BlcnR5RWZmZWN0KHQsZSxuKXtsZXQgaT1GdCh0aGlzLGUsITApW3RdLHI9aS5pbmRleE9mKG4pO3I+PTAmJmkuc3BsaWNlKHIsMSl9X2hhc1Byb3BlcnR5RWZmZWN0KHQsZSl7bGV0IG49dGhpc1tlXTtyZXR1cm4gQm9vbGVhbihuJiZuW3RdKX1faGFzUmVhZE9ubHlFZmZlY3QodCl7cmV0dXJuIHRoaXMuX2hhc1Byb3BlcnR5RWZmZWN0KHQsRHQuUkVBRF9PTkxZKX1faGFzTm90aWZ5RWZmZWN0KHQpe3JldHVybiB0aGlzLl9oYXNQcm9wZXJ0eUVmZmVjdCh0LER0Lk5PVElGWSl9X2hhc1JlZmxlY3RFZmZlY3QodCl7cmV0dXJuIHRoaXMuX2hhc1Byb3BlcnR5RWZmZWN0KHQsRHQuUkVGTEVDVCl9X2hhc0NvbXB1dGVkRWZmZWN0KHQpe3JldHVybiB0aGlzLl9oYXNQcm9wZXJ0eUVmZmVjdCh0LER0LkNPTVBVVEUpfV9zZXRQZW5kaW5nUHJvcGVydHlPclBhdGgodCxlLG4saSl7aWYoaXx8JChBcnJheS5pc0FycmF5KHQpP3RbMF06dCkhPT10KXtpZighaSl7bGV0IG49bnQodGhpcyx0KTtpZighKHQ9aXQodGhpcyx0LGUpKXx8IXN1cGVyLl9zaG91bGRQcm9wZXJ0eUNoYW5nZSh0LGUsbikpcmV0dXJuITF9aWYodGhpcy5fX2RhdGFIYXNQYXRocz0hMCx0aGlzLl9zZXRQZW5kaW5nUHJvcGVydHkodCxlLG4pKXJldHVybihmdW5jdGlvbiByKHQsZSxuKXtsZXQgaT10Ll9fZGF0YUxpbmtlZFBhdGhzO2lmKGkpe2xldCByO2ZvcihsZXQgbyBpbiBpKXtsZXQgYT1pW29dO1oobyxlKT8ocj1KKG8sYSxlKSx0Ll9zZXRQZW5kaW5nUHJvcGVydHlPclBhdGgocixuLCEwLCEwKSk6WihhLGUpJiYocj1KKGEsbyxlKSx0Ll9zZXRQZW5kaW5nUHJvcGVydHlPclBhdGgocixuLCEwLCEwKSl9fX0pKHRoaXMsdCxlKSwhMH1lbHNle2lmKHRoaXMuX19kYXRhSGFzQWNjZXNzb3ImJnRoaXMuX19kYXRhSGFzQWNjZXNzb3JbdF0pcmV0dXJuIHRoaXMuX3NldFBlbmRpbmdQcm9wZXJ0eSh0LGUsbik7dGhpc1t0XT1lfXJldHVybiExfV9zZXRVbm1hbmFnZWRQcm9wZXJ0eVRvTm9kZSh0LGUsbil7bj09PXRbZV0mJiJvYmplY3QiIT10eXBlb2Ygbnx8KCJjbGFzc05hbWUiPT09ZSYmKHQ9WSh0KSksdFtlXT1uKX1fc2V0UGVuZGluZ1Byb3BlcnR5KHQsZSxuKXtsZXQgaT10aGlzLl9fZGF0YUhhc1BhdGhzJiZYKHQpO3JldHVybiEhdGhpcy5fc2hvdWxkUHJvcGVydHlDaGFuZ2UodCxlLChpP3RoaXMuX19kYXRhVGVtcDp0aGlzLl9fZGF0YSlbdF0pJiYodGhpcy5fX2RhdGFQZW5kaW5nfHwodGhpcy5fX2RhdGFQZW5kaW5nPXt9LHRoaXMuX19kYXRhT2xkPXt9KSx0IGluIHRoaXMuX19kYXRhT2xkfHwodGhpcy5fX2RhdGFPbGRbdF09dGhpcy5fX2RhdGFbdF0pLGk/dGhpcy5fX2RhdGFUZW1wW3RdPWU6dGhpcy5fX2RhdGFbdF09ZSx0aGlzLl9fZGF0YVBlbmRpbmdbdF09ZSwoaXx8dGhpc1tEdC5OT1RJRlldJiZ0aGlzW0R0Lk5PVElGWV1bdF0pJiYodGhpcy5fX2RhdGFUb05vdGlmeT10aGlzLl9fZGF0YVRvTm90aWZ5fHx7fSx0aGlzLl9fZGF0YVRvTm90aWZ5W3RdPW4pLCEwKX1fc2V0UHJvcGVydHkodCxlKXt0aGlzLl9zZXRQZW5kaW5nUHJvcGVydHkodCxlLCEwKSYmdGhpcy5faW52YWxpZGF0ZVByb3BlcnRpZXMoKX1faW52YWxpZGF0ZVByb3BlcnRpZXMoKXt0aGlzLl9fZGF0YVJlYWR5JiZ0aGlzLl9mbHVzaFByb3BlcnRpZXMoKX1fZW5xdWV1ZUNsaWVudCh0KXt0aGlzLl9fZGF0YVBlbmRpbmdDbGllbnRzPXRoaXMuX19kYXRhUGVuZGluZ0NsaWVudHN8fFtdLHQhPT10aGlzJiZ0aGlzLl9fZGF0YVBlbmRpbmdDbGllbnRzLnB1c2godCl9X2ZsdXNoQ2xpZW50cygpe3RoaXMuX19kYXRhQ2xpZW50c1JlYWR5P3RoaXMuX19lbmFibGVPckZsdXNoQ2xpZW50cygpOih0aGlzLl9fZGF0YUNsaWVudHNSZWFkeT0hMCx0aGlzLl9yZWFkeUNsaWVudHMoKSx0aGlzLl9fZGF0YVJlYWR5PSEwKX1fX2VuYWJsZU9yRmx1c2hDbGllbnRzKCl7bGV0IHQ9dGhpcy5fX2RhdGFQZW5kaW5nQ2xpZW50cztpZih0KXt0aGlzLl9fZGF0YVBlbmRpbmdDbGllbnRzPW51bGw7Zm9yKGxldCBlPTA7ZTx0Lmxlbmd0aDtlKyspe2xldCBuPXRbZV07bi5fX2RhdGFFbmFibGVkP24uX19kYXRhUGVuZGluZyYmbi5fZmx1c2hQcm9wZXJ0aWVzKCk6bi5fZW5hYmxlUHJvcGVydGllcygpfX19X3JlYWR5Q2xpZW50cygpe3RoaXMuX19lbmFibGVPckZsdXNoQ2xpZW50cygpfXNldFByb3BlcnRpZXModCxlKXtmb3IobGV0IG4gaW4gdCkhZSYmdGhpc1tEdC5SRUFEX09OTFldJiZ0aGlzW0R0LlJFQURfT05MWV1bbl18fHRoaXMuX3NldFBlbmRpbmdQcm9wZXJ0eU9yUGF0aChuLHRbbl0sITApO3RoaXMuX2ludmFsaWRhdGVQcm9wZXJ0aWVzKCl9cmVhZHkoKXt0aGlzLl9mbHVzaFByb3BlcnRpZXMoKSx0aGlzLl9fZGF0YUNsaWVudHNSZWFkeXx8dGhpcy5fZmx1c2hDbGllbnRzKCksdGhpcy5fX2RhdGFQZW5kaW5nJiZ0aGlzLl9mbHVzaFByb3BlcnRpZXMoKX1fcHJvcGVydGllc0NoYW5nZWQodCxlLG4pe2xldCBpLHI9dGhpcy5fX2RhdGFIYXNQYXRoczt0aGlzLl9fZGF0YUhhc1BhdGhzPSExLCR0KHRoaXMsZSxuLHIpLGk9dGhpcy5fX2RhdGFUb05vdGlmeSx0aGlzLl9fZGF0YVRvTm90aWZ5PW51bGwsdGhpcy5fcHJvcGFnYXRlUHJvcGVydHlDaGFuZ2VzKGUsbixyKSx0aGlzLl9mbHVzaENsaWVudHMoKSxWdCh0aGlzLHRoaXNbRHQuUkVGTEVDVF0sZSxuLHIpLFZ0KHRoaXMsdGhpc1tEdC5PQlNFUlZFXSxlLG4sciksaSYmKGZ1bmN0aW9uIG8odCxlLG4saSxyKXtsZXQgbyxhLHM9dFtEdC5OT1RJRlldLGw9T3QrKztmb3IobGV0IGEgaW4gZSllW2FdJiYocyYmVXQodCxzLGwsYSxuLGkscil8fHImJld0KHQsYSxuKSkmJihvPSEwKTtvJiYoYT10Ll9fZGF0YUhvc3QpJiZhLl9pbnZhbGlkYXRlUHJvcGVydGllcyYmYS5faW52YWxpZGF0ZVByb3BlcnRpZXMoKX0pKHRoaXMsaSxlLG4sciksMT09dGhpcy5fX2RhdGFDb3VudGVyJiYodGhpcy5fX2RhdGFUZW1wPXt9KX1fcHJvcGFnYXRlUHJvcGVydHlDaGFuZ2VzKHQsZSxuKXt0aGlzW0R0LlBST1BBR0FURV0mJlZ0KHRoaXMsdGhpc1tEdC5QUk9QQUdBVEVdLHQsZSxuKSx0aGlzLl9fdGVtcGxhdGVJbmZvJiZ0aGlzLl9ydW5FZmZlY3RzRm9yVGVtcGxhdGUodGhpcy5fX3RlbXBsYXRlSW5mbyx0LGUsbil9X3J1bkVmZmVjdHNGb3JUZW1wbGF0ZSh0LGUsbixpKXtjb25zdCByPShlLGkpPT57VnQodGhpcyx0LnByb3BlcnR5RWZmZWN0cyxlLG4saSx0Lm5vZGVMaXN0KTtmb3IobGV0IHI9dC5maXJzdENoaWxkO3I7cj1yLm5leHRTaWJsaW5nKXRoaXMuX3J1bkVmZmVjdHNGb3JUZW1wbGF0ZShyLGUsbixpKX07dC5ydW5FZmZlY3RzP3QucnVuRWZmZWN0cyhyLGUsaSk6cihlLGkpfWxpbmtQYXRocyh0LGUpe3Q9dHQodCksZT10dChlKSx0aGlzLl9fZGF0YUxpbmtlZFBhdGhzPXRoaXMuX19kYXRhTGlua2VkUGF0aHN8fHt9LHRoaXMuX19kYXRhTGlua2VkUGF0aHNbdF09ZX11bmxpbmtQYXRocyh0KXt0PXR0KHQpLHRoaXMuX19kYXRhTGlua2VkUGF0aHMmJmRlbGV0ZSB0aGlzLl9fZGF0YUxpbmtlZFBhdGhzW3RdfW5vdGlmeVNwbGljZXModCxlKXtsZXQgbj17cGF0aDoiIn07ZGUodGhpcyxudCh0aGlzLHQsbiksbi5wYXRoLGUpfWdldCh0LGUpe3JldHVybiBudChlfHx0aGlzLHQpfXNldCh0LGUsbil7bj9pdChuLHQsZSk6dGhpc1tEdC5SRUFEX09OTFldJiZ0aGlzW0R0LlJFQURfT05MWV1bdF18fHRoaXMuX3NldFBlbmRpbmdQcm9wZXJ0eU9yUGF0aCh0LGUsITApJiZ0aGlzLl9pbnZhbGlkYXRlUHJvcGVydGllcygpfXB1c2godCwuLi5lKXtsZXQgbj17cGF0aDoiIn0saT1udCh0aGlzLHQsbikscj1pLmxlbmd0aCxvPWkucHVzaCguLi5lKTtyZXR1cm4gZS5sZW5ndGgmJnBlKHRoaXMsaSxuLnBhdGgscixlLmxlbmd0aCxbXSksb31wb3AodCl7bGV0IGU9e3BhdGg6IiJ9LG49bnQodGhpcyx0LGUpLGk9Qm9vbGVhbihuLmxlbmd0aCkscj1uLnBvcCgpO3JldHVybiBpJiZwZSh0aGlzLG4sZS5wYXRoLG4ubGVuZ3RoLDAsW3JdKSxyfXNwbGljZSh0LGUsbiwuLi5pKXtsZXQgcixvPXtwYXRoOiIifSxhPW50KHRoaXMsdCxvKTtyZXR1cm4gZTwwP2U9YS5sZW5ndGgtTWF0aC5mbG9vcigtZSk6ZSYmKGU9TWF0aC5mbG9vcihlKSkscj0yPT09YXJndW1lbnRzLmxlbmd0aD9hLnNwbGljZShlKTphLnNwbGljZShlLG4sLi4uaSksKGkubGVuZ3RofHxyLmxlbmd0aCkmJnBlKHRoaXMsYSxvLnBhdGgsZSxpLmxlbmd0aCxyKSxyfXNoaWZ0KHQpe2xldCBlPXtwYXRoOiIifSxuPW50KHRoaXMsdCxlKSxpPUJvb2xlYW4obi5sZW5ndGgpLHI9bi5zaGlmdCgpO3JldHVybiBpJiZwZSh0aGlzLG4sZS5wYXRoLDAsMCxbcl0pLHJ9dW5zaGlmdCh0LC4uLmUpe2xldCBuPXtwYXRoOiIifSxpPW50KHRoaXMsdCxuKSxyPWkudW5zaGlmdCguLi5lKTtyZXR1cm4gZS5sZW5ndGgmJnBlKHRoaXMsaSxuLnBhdGgsMCxlLmxlbmd0aCxbXSkscn1ub3RpZnlQYXRoKHQsZSl7bGV0IG47aWYoMT09YXJndW1lbnRzLmxlbmd0aCl7bGV0IGk9e3BhdGg6IiJ9O2U9bnQodGhpcyx0LGkpLG49aS5wYXRofWVsc2Ugbj1BcnJheS5pc0FycmF5KHQpP3R0KHQpOnQ7dGhpcy5fc2V0UGVuZGluZ1Byb3BlcnR5T3JQYXRoKG4sZSwhMCwhMCkmJnRoaXMuX2ludmFsaWRhdGVQcm9wZXJ0aWVzKCl9X2NyZWF0ZVJlYWRPbmx5UHJvcGVydHkodCxlKXt0aGlzLl9hZGRQcm9wZXJ0eUVmZmVjdCh0LER0LlJFQURfT05MWSksZSYmKHRoaXNbIl9zZXQiKyhmdW5jdGlvbiBuKHQpe3JldHVybiB0WzBdLnRvVXBwZXJDYXNlKCkrdC5zdWJzdHJpbmcoMSl9KSh0KV09ZnVuY3Rpb24oZSl7dGhpcy5fc2V0UHJvcGVydHkodCxlKX0pfV9jcmVhdGVQcm9wZXJ0eU9ic2VydmVyKHQsZSxuKXtsZXQgaT17cHJvcGVydHk6dCxtZXRob2Q6ZSxkeW5hbWljRm46Qm9vbGVhbihuKX07dGhpcy5fYWRkUHJvcGVydHlFZmZlY3QodCxEdC5PQlNFUlZFLHtmbjpHdCxpbmZvOmksdHJpZ2dlcjp7bmFtZTp0fX0pLG4mJnRoaXMuX2FkZFByb3BlcnR5RWZmZWN0KGUsRHQuT0JTRVJWRSx7Zm46R3QsaW5mbzppLHRyaWdnZXI6e25hbWU6ZX19KX1fY3JlYXRlTWV0aG9kT2JzZXJ2ZXIodCxlKXtsZXQgbj1jZSh0KTtpZighbil0aHJvdyBuZXcgRXJyb3IoIk1hbGZvcm1lZCBvYnNlcnZlciBleHByZXNzaW9uICciK3QrIiciKTtyZSh0aGlzLG4sRHQuT0JTRVJWRSxvZSxudWxsLGUpfV9jcmVhdGVOb3RpZnlpbmdQcm9wZXJ0eSh0KXt0aGlzLl9hZGRQcm9wZXJ0eUVmZmVjdCh0LER0Lk5PVElGWSx7Zm46WXQsaW5mbzp7ZXZlbnROYW1lOmx0KHQpKyItY2hhbmdlZCIscHJvcGVydHk6dH19KX1fY3JlYXRlUmVmbGVjdGVkUHJvcGVydHkodCl7bGV0IGU9dGhpcy5jb25zdHJ1Y3Rvci5hdHRyaWJ1dGVOYW1lRm9yUHJvcGVydHkodCk7Ii0iPT09ZVswXT9jb25zb2xlLndhcm4oIlByb3BlcnR5ICIrdCsiIGNhbm5vdCBiZSByZWZsZWN0ZWQgdG8gYXR0cmlidXRlICIrZSsnIGJlY2F1c2UgIi0iIGlzIG5vdCBhIHZhbGlkIHN0YXJ0aW5nIGF0dHJpYnV0ZSBuYW1lLiBVc2UgYSBsb3dlcmNhc2UgZmlyc3QgbGV0dGVyIGZvciB0aGUgcHJvcGVydHkgaW5zdGVhZC4nKTp0aGlzLl9hZGRQcm9wZXJ0eUVmZmVjdCh0LER0LlJFRkxFQ1Qse2ZuOlh0LGluZm86e2F0dHJOYW1lOmV9fSl9X2NyZWF0ZUNvbXB1dGVkUHJvcGVydHkodCxlLG4pe2xldCBpPWNlKGUpO2lmKCFpKXRocm93IG5ldyBFcnJvcigiTWFsZm9ybWVkIGNvbXB1dGVkIGV4cHJlc3Npb24gJyIrZSsiJyIpO2NvbnN0IHI9cmUodGhpcyxpLER0LkNPTVBVVEUsSnQsdCxuKTtGdCh0aGlzLEJ0KVt0XT1yfV9tYXJzaGFsQXJncyh0LGUsbil7Y29uc3QgaT10aGlzLl9fZGF0YSxyPVtdO2ZvcihsZXQgbz0wLGE9dC5sZW5ndGg7bzxhO28rKyl7bGV0e25hbWU6YSxzdHJ1Y3R1cmVkOnMsd2lsZGNhcmQ6bCx2YWx1ZTpjLGxpdGVyYWw6dX09dFtvXTtpZighdSlpZihsKXtjb25zdCB0PVooYSxlKSxyPWhlKGksbix0P2U6YSk7Yz17cGF0aDp0P2U6YSx2YWx1ZTpyLGJhc2U6dD9udChpLGEpOnJ9fWVsc2UgYz1zP2hlKGksbixhKTppW2FdO2lmKEUmJiF0aGlzLl9vdmVycmlkZUxlZ2FjeVVuZGVmaW5lZCYmdm9pZCAwPT09YyYmdC5sZW5ndGg+MSlyZXR1cm4genQ7cltvXT1jfXJldHVybiByfXN0YXRpYyBhZGRQcm9wZXJ0eUVmZmVjdCh0LGUsbil7dGhpcy5wcm90b3R5cGUuX2FkZFByb3BlcnR5RWZmZWN0KHQsZSxuKX1zdGF0aWMgY3JlYXRlUHJvcGVydHlPYnNlcnZlcih0LGUsbil7dGhpcy5wcm90b3R5cGUuX2NyZWF0ZVByb3BlcnR5T2JzZXJ2ZXIodCxlLG4pfXN0YXRpYyBjcmVhdGVNZXRob2RPYnNlcnZlcih0LGUpe3RoaXMucHJvdG90eXBlLl9jcmVhdGVNZXRob2RPYnNlcnZlcih0LGUpfXN0YXRpYyBjcmVhdGVOb3RpZnlpbmdQcm9wZXJ0eSh0KXt0aGlzLnByb3RvdHlwZS5fY3JlYXRlTm90aWZ5aW5nUHJvcGVydHkodCl9c3RhdGljIGNyZWF0ZVJlYWRPbmx5UHJvcGVydHkodCxlKXt0aGlzLnByb3RvdHlwZS5fY3JlYXRlUmVhZE9ubHlQcm9wZXJ0eSh0LGUpfXN0YXRpYyBjcmVhdGVSZWZsZWN0ZWRQcm9wZXJ0eSh0KXt0aGlzLnByb3RvdHlwZS5fY3JlYXRlUmVmbGVjdGVkUHJvcGVydHkodCl9c3RhdGljIGNyZWF0ZUNvbXB1dGVkUHJvcGVydHkodCxlLG4pe3RoaXMucHJvdG90eXBlLl9jcmVhdGVDb21wdXRlZFByb3BlcnR5KHQsZSxuKX1zdGF0aWMgYmluZFRlbXBsYXRlKHQpe3JldHVybiB0aGlzLnByb3RvdHlwZS5fYmluZFRlbXBsYXRlKHQpfV9iaW5kVGVtcGxhdGUodCxlKXtsZXQgbj10aGlzLmNvbnN0cnVjdG9yLl9wYXJzZVRlbXBsYXRlKHQpLGk9dGhpcy5fX3ByZUJvdW5kVGVtcGxhdGVJbmZvPT1uO2lmKCFpKWZvcihsZXQgdCBpbiBuLnByb3BlcnR5RWZmZWN0cyl0aGlzLl9jcmVhdGVQcm9wZXJ0eUFjY2Vzc29yKHQpO2lmKGUpaWYobj1PYmplY3QuY3JlYXRlKG4pLG4ud2FzUHJlQm91bmQ9aSx0aGlzLl9fdGVtcGxhdGVJbmZvKXtjb25zdCBlPXQuX3BhcmVudFRlbXBsYXRlSW5mb3x8dGhpcy5fX3RlbXBsYXRlSW5mbyxpPWUubGFzdENoaWxkO24ucGFyZW50PWUsZS5sYXN0Q2hpbGQ9bixuLnByZXZpb3VzU2libGluZz1pLGk/aS5uZXh0U2libGluZz1uOmUuZmlyc3RDaGlsZD1ufWVsc2UgdGhpcy5fX3RlbXBsYXRlSW5mbz1uO2Vsc2UgdGhpcy5fX3ByZUJvdW5kVGVtcGxhdGVJbmZvPW47cmV0dXJuIG59c3RhdGljIF9hZGRUZW1wbGF0ZVByb3BlcnR5RWZmZWN0KHQsZSxuKXsodC5ob3N0UHJvcHM9dC5ob3N0UHJvcHN8fHt9KVtlXT0hMDtsZXQgaT10LnByb3BlcnR5RWZmZWN0cz10LnByb3BlcnR5RWZmZWN0c3x8e307KGlbZV09aVtlXXx8W10pLnB1c2gobil9X3N0YW1wVGVtcGxhdGUodCxlKXtlPWV8fHRoaXMuX2JpbmRUZW1wbGF0ZSh0LCEwKSxtZS5wdXNoKHRoaXMpO2xldCBuPXN1cGVyLl9zdGFtcFRlbXBsYXRlKHQsZSk7aWYobWUucG9wKCksZS5ub2RlTGlzdD1uLm5vZGVMaXN0LCFlLndhc1ByZUJvdW5kKXtsZXQgdD1lLmNoaWxkTm9kZXM9W107Zm9yKGxldCBlPW4uZmlyc3RDaGlsZDtlO2U9ZS5uZXh0U2libGluZyl0LnB1c2goZSl9cmV0dXJuIG4udGVtcGxhdGVJbmZvPWUsKGZ1bmN0aW9uIGkodCxlKXtsZXR7bm9kZUxpc3Q6bixub2RlSW5mb0xpc3Q6aX09ZTtpZihpLmxlbmd0aClmb3IobGV0IGU9MDtlPGkubGVuZ3RoO2UrKyl7bGV0IHI9bltlXSxvPWlbZV0uYmluZGluZ3M7aWYobylmb3IobGV0IGU9MDtlPG8ubGVuZ3RoO2UrKyl7bGV0IG49b1tlXTtuZShyLG4pLGllKHIsdCxuKX1yLl9fZGF0YUhvc3Q9dH19KSh0aGlzLGUpLHRoaXMuX19kYXRhQ2xpZW50c1JlYWR5JiYodGhpcy5fcnVuRWZmZWN0c0ZvclRlbXBsYXRlKGUsdGhpcy5fX2RhdGEsbnVsbCwhMSksdGhpcy5fZmx1c2hDbGllbnRzKCkpLG59X3JlbW92ZUJvdW5kRG9tKHQpe2NvbnN0IGU9dC50ZW1wbGF0ZUluZm8se3ByZXZpb3VzU2libGluZzpuLG5leHRTaWJsaW5nOmkscGFyZW50OnJ9PWU7bj9uLm5leHRTaWJsaW5nPWk6ciYmKHIuZmlyc3RDaGlsZD1pKSxpP2kucHJldmlvdXNTaWJsaW5nPW46ciYmKHIubGFzdENoaWxkPW4pLGUubmV4dFNpYmxpbmc9ZS5wcmV2aW91c1NpYmxpbmc9bnVsbDtsZXQgbz1lLmNoaWxkTm9kZXM7Zm9yKGxldCB0PTA7dDxvLmxlbmd0aDt0Kyspe2xldCBlPW9bdF07WShZKGUpLnBhcmVudE5vZGUpLnJlbW92ZUNoaWxkKGUpfX1zdGF0aWMgX3BhcnNlVGVtcGxhdGVOb2RlKHQsbixpKXtsZXQgcj1lLl9wYXJzZVRlbXBsYXRlTm9kZS5jYWxsKHRoaXMsdCxuLGkpO2lmKHQubm9kZVR5cGU9PT1Ob2RlLlRFWFRfTk9ERSl7bGV0IGU9dGhpcy5fcGFyc2VCaW5kaW5ncyh0LnRleHRDb250ZW50LG4pO2UmJih0LnRleHRDb250ZW50PWxlKGUpfHwiICIsUXQodGhpcyxuLGksInRleHQiLCJ0ZXh0Q29udGVudCIsZSkscj0hMCl9cmV0dXJuIHJ9c3RhdGljIF9wYXJzZVRlbXBsYXRlTm9kZUF0dHJpYnV0ZSh0LG4saSxyLG8pe2xldCBhPXRoaXMuX3BhcnNlQmluZGluZ3MobyxuKTtpZihhKXtsZXQgZT1yLG89InByb3BlcnR5IjtIdC50ZXN0KHIpP289ImF0dHJpYnV0ZSI6IiQiPT1yW3IubGVuZ3RoLTFdJiYocj1yLnNsaWNlKDAsLTEpLG89ImF0dHJpYnV0ZSIpO2xldCBzPWxlKGEpO3JldHVybiBzJiYiYXR0cmlidXRlIj09byYmKCJjbGFzcyI9PXImJnQuaGFzQXR0cmlidXRlKCJjbGFzcyIpJiYocys9IiAiK3QuZ2V0QXR0cmlidXRlKHIpKSx0LnNldEF0dHJpYnV0ZShyLHMpKSwiYXR0cmlidXRlIj09byYmImRpc2FibGUtdXBncmFkZSQiPT1lJiZ0LnNldEF0dHJpYnV0ZShyLCIiKSwiaW5wdXQiPT09dC5sb2NhbE5hbWUmJiJ2YWx1ZSI9PT1lJiZ0LnNldEF0dHJpYnV0ZShlLCIiKSx0LnJlbW92ZUF0dHJpYnV0ZShlKSwicHJvcGVydHkiPT09byYmKHI9c3QocikpLFF0KHRoaXMsbixpLG8scixhLHMpLCEwfXJldHVybiBlLl9wYXJzZVRlbXBsYXRlTm9kZUF0dHJpYnV0ZS5jYWxsKHRoaXMsdCxuLGkscixvKX1zdGF0aWMgX3BhcnNlVGVtcGxhdGVOZXN0ZWRUZW1wbGF0ZSh0LG4saSl7bGV0IHI9ZS5fcGFyc2VUZW1wbGF0ZU5lc3RlZFRlbXBsYXRlLmNhbGwodGhpcyx0LG4saSk7Y29uc3Qgbz10LnBhcmVudE5vZGUsYT1pLnRlbXBsYXRlSW5mbyxzPSJkb20taWYiPT09by5sb2NhbE5hbWU7QyYmKHN8fCJkb20tcmVwZWF0Ij09PW8ubG9jYWxOYW1lKSYmKG8ucmVtb3ZlQ2hpbGQodCksKGk9aS5wYXJlbnRJbmZvKS50ZW1wbGF0ZUluZm89YSxpLm5vdGVkPSEwLHI9ITEpO2xldCBsPWEuaG9zdFByb3BzO2lmKEEmJnMpbCYmKG4uaG9zdFByb3BzPU9iamVjdC5hc3NpZ24obi5ob3N0UHJvcHN8fHt9LGwpLEN8fChpLnBhcmVudEluZm8ubm90ZWQ9ITApKTtlbHNle2xldCB0PSJ7Ijtmb3IobGV0IGUgaW4gbCl7UXQodGhpcyxuLGksInByb3BlcnR5IiwiX2hvc3RfIitlLFt7bW9kZTp0LHNvdXJjZTplLGRlcGVuZGVuY2llczpbZV0saG9zdFByb3A6ITB9XSl9fXJldHVybiByfXN0YXRpYyBfcGFyc2VCaW5kaW5ncyh0LGUpe2xldCBuLGk9W10scj0wO2Zvcig7bnVsbCE9PShuPXNlLmV4ZWModCkpOyl7bi5pbmRleD5yJiZpLnB1c2goe2xpdGVyYWw6dC5zbGljZShyLG4uaW5kZXgpfSk7bGV0IG89blsxXVswXSxhPUJvb2xlYW4oblsyXSkscz1uWzNdLnRyaW0oKSxsPSExLGM9IiIsdT0tMTsieyI9PW8mJih1PXMuaW5kZXhPZigiOjoiKSk+MCYmKGM9cy5zdWJzdHJpbmcodSsyKSxzPXMuc3Vic3RyaW5nKDAsdSksbD0hMCk7bGV0IGg9Y2UocyksZD1bXTtpZihoKXtsZXR7YXJnczp0LG1ldGhvZE5hbWU6bn09aDtmb3IobGV0IGU9MDtlPHQubGVuZ3RoO2UrKyl7bGV0IG49dFtlXTtuLmxpdGVyYWx8fGQucHVzaChuKX1sZXQgaT1lLmR5bmFtaWNGbnM7KGkmJmlbbl18fGguc3RhdGljKSYmKGQucHVzaChuKSxoLmR5bmFtaWNGbj0hMCl9ZWxzZSBkLnB1c2gocyk7aS5wdXNoKHtzb3VyY2U6cyxtb2RlOm8sbmVnYXRlOmEsY3VzdG9tRXZlbnQ6bCxzaWduYXR1cmU6aCxkZXBlbmRlbmNpZXM6ZCxldmVudDpjfSkscj1zZS5sYXN0SW5kZXh9aWYociYmcjx0Lmxlbmd0aCl7bGV0IGU9dC5zdWJzdHJpbmcocik7ZSYmaS5wdXNoKHtsaXRlcmFsOmV9KX1yZXR1cm4gaS5sZW5ndGg/aTpudWxsfXN0YXRpYyBfZXZhbHVhdGVCaW5kaW5nKHQsZSxuLGkscixvKXtsZXQgYTtyZXR1cm4gYT1lLnNpZ25hdHVyZT9vZSh0LG4saSwwLGUuc2lnbmF0dXJlKTpuIT1lLnNvdXJjZT9udCh0LGUuc291cmNlKTpvJiZYKG4pP250KHQsbik6dC5fX2RhdGFbbl0sZS5uZWdhdGUmJihhPSFhKSxhfX19KSksbWU9W107Y29uc3QgZ2U9SSgodD0+e2NvbnN0IGU9eHQodCk7ZnVuY3Rpb24gbih0KXtjb25zdCBlPU9iamVjdC5nZXRQcm90b3R5cGVPZih0KTtyZXR1cm4gZS5wcm90b3R5cGUgaW5zdGFuY2VvZiByP2U6bnVsbH1mdW5jdGlvbiBpKHQpe2lmKCF0Lmhhc093blByb3BlcnR5KEpTQ29tcGlsZXJfcmVuYW1lUHJvcGVydHkoIl9fb3duUHJvcGVydGllcyIsdCkpKXtsZXQgZT1udWxsO2lmKHQuaGFzT3duUHJvcGVydHkoSlNDb21waWxlcl9yZW5hbWVQcm9wZXJ0eSgicHJvcGVydGllcyIsdCkpKXtjb25zdCBuPXQucHJvcGVydGllcztuJiYoZT0oCi8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNyBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0CiAgICBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcyBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbwogICAgc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudCBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCmZ1bmN0aW9uIGUodCl7Y29uc3QgZT17fTtmb3IobGV0IG4gaW4gdCl7Y29uc3QgaT10W25dO2Vbbl09ImZ1bmN0aW9uIj09dHlwZW9mIGk/e3R5cGU6aX06aX1yZXR1cm4gZX0pKG4pKX10Ll9fb3duUHJvcGVydGllcz1lfXJldHVybiB0Ll9fb3duUHJvcGVydGllc31jbGFzcyByIGV4dGVuZHMgZXtzdGF0aWMgZ2V0IG9ic2VydmVkQXR0cmlidXRlcygpe2lmKCF0aGlzLmhhc093blByb3BlcnR5KEpTQ29tcGlsZXJfcmVuYW1lUHJvcGVydHkoIl9fb2JzZXJ2ZWRBdHRyaWJ1dGVzIix0aGlzKSkpe2NvbnN0IHQ9dGhpcy5fcHJvcGVydGllczt0aGlzLl9fb2JzZXJ2ZWRBdHRyaWJ1dGVzPXQ/T2JqZWN0LmtleXModCkubWFwKCh0PT50aGlzLnByb3RvdHlwZS5fYWRkUHJvcGVydHlUb0F0dHJpYnV0ZU1hcCh0KSkpOltdfXJldHVybiB0aGlzLl9fb2JzZXJ2ZWRBdHRyaWJ1dGVzfXN0YXRpYyBmaW5hbGl6ZSgpe2lmKCF0aGlzLmhhc093blByb3BlcnR5KEpTQ29tcGlsZXJfcmVuYW1lUHJvcGVydHkoIl9fZmluYWxpemVkIix0aGlzKSkpe2NvbnN0IHQ9bih0aGlzKTt0JiZ0LmZpbmFsaXplKCksdGhpcy5fX2ZpbmFsaXplZD0hMCx0aGlzLl9maW5hbGl6ZUNsYXNzKCl9fXN0YXRpYyBfZmluYWxpemVDbGFzcygpe2NvbnN0IHQ9aSh0aGlzKTt0JiZ0aGlzLmNyZWF0ZVByb3BlcnRpZXModCl9c3RhdGljIGdldCBfcHJvcGVydGllcygpe2lmKCF0aGlzLmhhc093blByb3BlcnR5KEpTQ29tcGlsZXJfcmVuYW1lUHJvcGVydHkoIl9fcHJvcGVydGllcyIsdGhpcykpKXtjb25zdCB0PW4odGhpcyk7dGhpcy5fX3Byb3BlcnRpZXM9T2JqZWN0LmFzc2lnbih7fSx0JiZ0Ll9wcm9wZXJ0aWVzLGkodGhpcykpfXJldHVybiB0aGlzLl9fcHJvcGVydGllc31zdGF0aWMgdHlwZUZvclByb3BlcnR5KHQpe2NvbnN0IGU9dGhpcy5fcHJvcGVydGllc1t0XTtyZXR1cm4gZSYmZS50eXBlfV9pbml0aWFsaXplUHJvcGVydGllcygpe3RoaXMuY29uc3RydWN0b3IuZmluYWxpemUoKSxzdXBlci5faW5pdGlhbGl6ZVByb3BlcnRpZXMoKX1jb25uZWN0ZWRDYWxsYmFjaygpe3N1cGVyLmNvbm5lY3RlZENhbGxiYWNrJiZzdXBlci5jb25uZWN0ZWRDYWxsYmFjaygpLHRoaXMuX2VuYWJsZVByb3BlcnRpZXMoKX1kaXNjb25uZWN0ZWRDYWxsYmFjaygpe3N1cGVyLmRpc2Nvbm5lY3RlZENhbGxiYWNrJiZzdXBlci5kaXNjb25uZWN0ZWRDYWxsYmFjaygpfX1yZXR1cm4gcn0pKSxfZT13aW5kb3cuU2hhZHlDU1MmJndpbmRvdy5TaGFkeUNTUy5jc3NCdWlsZCx5ZT1JKCh0PT57Y29uc3QgZT1nZShmZSh0KSk7ZnVuY3Rpb24gbih0LGUsbixpKXtuLmNvbXB1dGVkJiYobi5yZWFkT25seT0hMCksbi5jb21wdXRlZCYmKHQuX2hhc1JlYWRPbmx5RWZmZWN0KGUpP2NvbnNvbGUud2FybihgQ2Fubm90IHJlZGVmaW5lIGNvbXB1dGVkIHByb3BlcnR5ICcke2V9Jy5gKTp0Ll9jcmVhdGVDb21wdXRlZFByb3BlcnR5KGUsbi5jb21wdXRlZCxpKSksbi5yZWFkT25seSYmIXQuX2hhc1JlYWRPbmx5RWZmZWN0KGUpP3QuX2NyZWF0ZVJlYWRPbmx5UHJvcGVydHkoZSwhbi5jb21wdXRlZCk6ITE9PT1uLnJlYWRPbmx5JiZ0Ll9oYXNSZWFkT25seUVmZmVjdChlKSYmY29uc29sZS53YXJuKGBDYW5ub3QgbWFrZSByZWFkT25seSBwcm9wZXJ0eSAnJHtlfScgbm9uLXJlYWRPbmx5LmApLG4ucmVmbGVjdFRvQXR0cmlidXRlJiYhdC5faGFzUmVmbGVjdEVmZmVjdChlKT90Ll9jcmVhdGVSZWZsZWN0ZWRQcm9wZXJ0eShlKTohMT09PW4ucmVmbGVjdFRvQXR0cmlidXRlJiZ0Ll9oYXNSZWZsZWN0RWZmZWN0KGUpJiZjb25zb2xlLndhcm4oYENhbm5vdCBtYWtlIHJlZmxlY3RlZCBwcm9wZXJ0eSAnJHtlfScgbm9uLXJlZmxlY3RlZC5gKSxuLm5vdGlmeSYmIXQuX2hhc05vdGlmeUVmZmVjdChlKT90Ll9jcmVhdGVOb3RpZnlpbmdQcm9wZXJ0eShlKTohMT09PW4ubm90aWZ5JiZ0Ll9oYXNOb3RpZnlFZmZlY3QoZSkmJmNvbnNvbGUud2FybihgQ2Fubm90IG1ha2Ugbm90aWZ5IHByb3BlcnR5ICcke2V9JyBub24tbm90aWZ5LmApLG4ub2JzZXJ2ZXImJnQuX2NyZWF0ZVByb3BlcnR5T2JzZXJ2ZXIoZSxuLm9ic2VydmVyLGlbbi5vYnNlcnZlcl0pLHQuX2FkZFByb3BlcnR5VG9BdHRyaWJ1dGVNYXAoZSl9ZnVuY3Rpb24gaSh0LGUsbixpKXtpZighX2Upe2NvbnN0IHI9ZS5jb250ZW50LnF1ZXJ5U2VsZWN0b3JBbGwoInN0eWxlIiksbz1HKGUpLGE9KGZ1bmN0aW9uIHIodCl7bGV0IGU9Rih0KTtyZXR1cm4gZT9XKGUpOltdfSkobikscz1lLmNvbnRlbnQuZmlyc3RFbGVtZW50Q2hpbGQ7Zm9yKGxldCBuPTA7bjxhLmxlbmd0aDtuKyspe2xldCByPWFbbl07ci50ZXh0Q29udGVudD10Ll9wcm9jZXNzU3R5bGVUZXh0KHIudGV4dENvbnRlbnQsaSksZS5jb250ZW50Lmluc2VydEJlZm9yZShyLHMpfWxldCBsPTA7Zm9yKGxldCBlPTA7ZTxvLmxlbmd0aDtlKyspe2xldCBuPW9bZV0sYT1yW2xdO2EhPT1uPyhuPW4uY2xvbmVOb2RlKCEwKSxhLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKG4sYSkpOmwrKyxuLnRleHRDb250ZW50PXQuX3Byb2Nlc3NTdHlsZVRleHQobi50ZXh0Q29udGVudCxpKX19aWYod2luZG93LlNoYWR5Q1NTJiZ3aW5kb3cuU2hhZHlDU1MucHJlcGFyZVRlbXBsYXRlKGUsbiksUCYmX2UmJmcpe2NvbnN0IG49ZS5jb250ZW50LnF1ZXJ5U2VsZWN0b3JBbGwoInN0eWxlIik7aWYobil7bGV0IGU9IiI7QXJyYXkuZnJvbShuKS5mb3JFYWNoKCh0PT57ZSs9dC50ZXh0Q29udGVudCx0LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodCl9KSksdC5fc3R5bGVTaGVldD1uZXcgQ1NTU3R5bGVTaGVldCx0Ll9zdHlsZVNoZWV0LnJlcGxhY2VTeW5jKGUpfX19cmV0dXJuIGNsYXNzIGV4dGVuZHMgZXtzdGF0aWMgZ2V0IHBvbHltZXJFbGVtZW50VmVyc2lvbigpe3JldHVybiIzLjQuMSJ9c3RhdGljIF9maW5hbGl6ZUNsYXNzKCl7ZS5fZmluYWxpemVDbGFzcy5jYWxsKHRoaXMpO2NvbnN0IHQ9KGZ1bmN0aW9uIG4odCl7cmV0dXJuIHQuaGFzT3duUHJvcGVydHkoSlNDb21waWxlcl9yZW5hbWVQcm9wZXJ0eSgiX19vd25PYnNlcnZlcnMiLHQpKXx8KHQuX19vd25PYnNlcnZlcnM9dC5oYXNPd25Qcm9wZXJ0eShKU0NvbXBpbGVyX3JlbmFtZVByb3BlcnR5KCJvYnNlcnZlcnMiLHQpKT90Lm9ic2VydmVyczpudWxsKSx0Ll9fb3duT2JzZXJ2ZXJzfSkodGhpcyk7dCYmdGhpcy5jcmVhdGVPYnNlcnZlcnModCx0aGlzLl9wcm9wZXJ0aWVzKSx0aGlzLl9wcmVwYXJlVGVtcGxhdGUoKX1zdGF0aWMgX3ByZXBhcmVUZW1wbGF0ZSgpe2xldCB0PXRoaXMudGVtcGxhdGU7dCYmKCJzdHJpbmciPT10eXBlb2YgdD8oY29uc29sZS5lcnJvcigidGVtcGxhdGUgZ2V0dGVyIG11c3QgcmV0dXJuIEhUTUxUZW1wbGF0ZUVsZW1lbnQiKSx0PW51bGwpOnd8fCh0PXQuY2xvbmVOb2RlKCEwKSkpLHRoaXMucHJvdG90eXBlLl90ZW1wbGF0ZT10fXN0YXRpYyBjcmVhdGVQcm9wZXJ0aWVzKHQpe2ZvcihsZXQgZSBpbiB0KW4odGhpcy5wcm90b3R5cGUsZSx0W2VdLHQpfXN0YXRpYyBjcmVhdGVPYnNlcnZlcnModCxlKXtjb25zdCBuPXRoaXMucHJvdG90eXBlO2ZvcihsZXQgaT0wO2k8dC5sZW5ndGg7aSsrKW4uX2NyZWF0ZU1ldGhvZE9ic2VydmVyKHRbaV0sZSl9c3RhdGljIGdldCB0ZW1wbGF0ZSgpe2lmKCF0aGlzLmhhc093blByb3BlcnR5KEpTQ29tcGlsZXJfcmVuYW1lUHJvcGVydHkoIl90ZW1wbGF0ZSIsdGhpcykpKXtjb25zdCB0PXRoaXMucHJvdG90eXBlLmhhc093blByb3BlcnR5KEpTQ29tcGlsZXJfcmVuYW1lUHJvcGVydHkoIl90ZW1wbGF0ZSIsdGhpcy5wcm90b3R5cGUpKT90aGlzLnByb3RvdHlwZS5fdGVtcGxhdGU6dm9pZCAwO3RoaXMuX3RlbXBsYXRlPXZvaWQgMCE9PXQ/dDp0aGlzLmhhc093blByb3BlcnR5KEpTQ29tcGlsZXJfcmVuYW1lUHJvcGVydHkoImlzIix0aGlzKSkmJihmdW5jdGlvbiBlKHQpe2xldCBlPW51bGw7aWYodCYmKCFifHx4KSYmKGU9Qi5pbXBvcnQodCwidGVtcGxhdGUiKSxiJiYhZSkpdGhyb3cgbmV3IEVycm9yKGBzdHJpY3RUZW1wbGF0ZVBvbGljeTogZXhwZWN0aW5nIGRvbS1tb2R1bGUgb3IgbnVsbCB0ZW1wbGF0ZSBmb3IgJHt0fWApO3JldHVybiBlfSkodGhpcy5pcyl8fE9iamVjdC5nZXRQcm90b3R5cGVPZih0aGlzLnByb3RvdHlwZSkuY29uc3RydWN0b3IudGVtcGxhdGV9cmV0dXJuIHRoaXMuX3RlbXBsYXRlfXN0YXRpYyBzZXQgdGVtcGxhdGUodCl7dGhpcy5fdGVtcGxhdGU9dH1zdGF0aWMgZ2V0IGltcG9ydFBhdGgoKXtpZighdGhpcy5oYXNPd25Qcm9wZXJ0eShKU0NvbXBpbGVyX3JlbmFtZVByb3BlcnR5KCJfaW1wb3J0UGF0aCIsdGhpcykpKXtjb25zdCB0PXRoaXMuaW1wb3J0TWV0YTtpZih0KXRoaXMuX2ltcG9ydFBhdGg9Zih0LnVybCk7ZWxzZXtjb25zdCB0PUIuaW1wb3J0KHRoaXMuaXMpO3RoaXMuX2ltcG9ydFBhdGg9dCYmdC5hc3NldHBhdGh8fE9iamVjdC5nZXRQcm90b3R5cGVPZih0aGlzLnByb3RvdHlwZSkuY29uc3RydWN0b3IuaW1wb3J0UGF0aH19cmV0dXJuIHRoaXMuX2ltcG9ydFBhdGh9Y29uc3RydWN0b3IoKXtzdXBlcigpfV9pbml0aWFsaXplUHJvcGVydGllcygpe3RoaXMuY29uc3RydWN0b3IuZmluYWxpemUoKSx0aGlzLmNvbnN0cnVjdG9yLl9maW5hbGl6ZVRlbXBsYXRlKHRoaXMubG9jYWxOYW1lKSxzdXBlci5faW5pdGlhbGl6ZVByb3BlcnRpZXMoKSx0aGlzLnJvb3RQYXRoPV8sdGhpcy5pbXBvcnRQYXRoPXRoaXMuY29uc3RydWN0b3IuaW1wb3J0UGF0aDtsZXQgdD0oZnVuY3Rpb24gZSh0KXtpZighdC5oYXNPd25Qcm9wZXJ0eShKU0NvbXBpbGVyX3JlbmFtZVByb3BlcnR5KCJfX3Byb3BlcnR5RGVmYXVsdHMiLHQpKSl7dC5fX3Byb3BlcnR5RGVmYXVsdHM9bnVsbDtsZXQgZT10Ll9wcm9wZXJ0aWVzO2ZvcihsZXQgbiBpbiBlKXtsZXQgaT1lW25dOyJ2YWx1ZSJpbiBpJiYodC5fX3Byb3BlcnR5RGVmYXVsdHM9dC5fX3Byb3BlcnR5RGVmYXVsdHN8fHt9LHQuX19wcm9wZXJ0eURlZmF1bHRzW25dPWkpfX1yZXR1cm4gdC5fX3Byb3BlcnR5RGVmYXVsdHN9KSh0aGlzLmNvbnN0cnVjdG9yKTtpZih0KWZvcihsZXQgZSBpbiB0KXtsZXQgbj10W2VdO2lmKHRoaXMuX2NhbkFwcGx5UHJvcGVydHlEZWZhdWx0KGUpKXtsZXQgdD0iZnVuY3Rpb24iPT10eXBlb2Ygbi52YWx1ZT9uLnZhbHVlLmNhbGwodGhpcyk6bi52YWx1ZTt0aGlzLl9oYXNBY2Nlc3NvcihlKT90aGlzLl9zZXRQZW5kaW5nUHJvcGVydHkoZSx0LCEwKTp0aGlzW2VdPXR9fX1fY2FuQXBwbHlQcm9wZXJ0eURlZmF1bHQodCl7cmV0dXJuIXRoaXMuaGFzT3duUHJvcGVydHkodCl9c3RhdGljIF9wcm9jZXNzU3R5bGVUZXh0KHQsZSl7cmV0dXJuIHAodCxlKX1zdGF0aWMgX2ZpbmFsaXplVGVtcGxhdGUodCl7Y29uc3QgZT10aGlzLnByb3RvdHlwZS5fdGVtcGxhdGU7aWYoZSYmIWUuX19wb2x5bWVyRmluYWxpemVkKXtlLl9fcG9seW1lckZpbmFsaXplZD0hMDtjb25zdCBuPXRoaXMuaW1wb3J0UGF0aDtpKHRoaXMsZSx0LG4/ZChuKToiIiksdGhpcy5wcm90b3R5cGUuX2JpbmRUZW1wbGF0ZShlKX19Y29ubmVjdGVkQ2FsbGJhY2soKXt3aW5kb3cuU2hhZHlDU1MmJnRoaXMuX3RlbXBsYXRlJiZ3aW5kb3cuU2hhZHlDU1Muc3R5bGVFbGVtZW50KHRoaXMpLHN1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCl9cmVhZHkoKXt0aGlzLl90ZW1wbGF0ZSYmKHRoaXMucm9vdD10aGlzLl9zdGFtcFRlbXBsYXRlKHRoaXMuX3RlbXBsYXRlKSx0aGlzLiQ9dGhpcy5yb290LiQpLHN1cGVyLnJlYWR5KCl9X3JlYWR5Q2xpZW50cygpe3RoaXMuX3RlbXBsYXRlJiYodGhpcy5yb290PXRoaXMuX2F0dGFjaERvbSh0aGlzLnJvb3QpKSxzdXBlci5fcmVhZHlDbGllbnRzKCl9X2F0dGFjaERvbSh0KXtjb25zdCBlPVkodGhpcyk7aWYoZS5hdHRhY2hTaGFkb3cpcmV0dXJuIHQ/KGUuc2hhZG93Um9vdHx8KGUuYXR0YWNoU2hhZG93KHttb2RlOiJvcGVuIixzaGFkeVVwZ3JhZGVGcmFnbWVudDp0fSksZS5zaGFkb3dSb290LmFwcGVuZENoaWxkKHQpLHRoaXMuY29uc3RydWN0b3IuX3N0eWxlU2hlZXQmJihlLnNoYWRvd1Jvb3QuYWRvcHRlZFN0eWxlU2hlZXRzPVt0aGlzLmNvbnN0cnVjdG9yLl9zdHlsZVNoZWV0XSkpLE0mJndpbmRvdy5TaGFkeURPTSYmd2luZG93LlNoYWR5RE9NLmZsdXNoSW5pdGlhbChlLnNoYWRvd1Jvb3QpLGUuc2hhZG93Um9vdCk6bnVsbDt0aHJvdyBuZXcgRXJyb3IoIlNoYWRvd0RPTSBub3QgYXZhaWxhYmxlLiBQb2x5bWVyRWxlbWVudCBjYW4gY3JlYXRlIGRvbSBhcyBjaGlsZHJlbiBpbnN0ZWFkIG9mIGluIFNoYWRvd0RPTSBieSBzZXR0aW5nIGB0aGlzLnJvb3QgPSB0aGlzO2AgYmVmb3JlIGByZWFkeWAuIil9dXBkYXRlU3R5bGVzKHQpe3dpbmRvdy5TaGFkeUNTUyYmd2luZG93LlNoYWR5Q1NTLnN0eWxlU3VidHJlZSh0aGlzLHQpfXJlc29sdmVVcmwodCxlKXtyZXR1cm4hZSYmdGhpcy5pbXBvcnRQYXRoJiYoZT1kKHRoaXMuaW1wb3J0UGF0aCkpLGQodCxlKX1zdGF0aWMgX3BhcnNlVGVtcGxhdGVDb250ZW50KHQsbixpKXtyZXR1cm4gbi5keW5hbWljRm5zPW4uZHluYW1pY0Zuc3x8dGhpcy5fcHJvcGVydGllcyxlLl9wYXJzZVRlbXBsYXRlQ29udGVudC5jYWxsKHRoaXMsdCxuLGkpfXN0YXRpYyBfYWRkVGVtcGxhdGVQcm9wZXJ0eUVmZmVjdCh0LG4saSl7cmV0dXJuIVN8fG4gaW4gdGhpcy5fcHJvcGVydGllc3x8aS5pbmZvLnBhcnQuc2lnbmF0dXJlJiZpLmluZm8ucGFydC5zaWduYXR1cmUuc3RhdGljfHxpLmluZm8ucGFydC5ob3N0UHJvcHx8dC5uZXN0ZWRUZW1wbGF0ZXx8Y29uc29sZS53YXJuKGBQcm9wZXJ0eSAnJHtufScgdXNlZCBpbiB0ZW1wbGF0ZSBidXQgbm90IGRlY2xhcmVkIGluICdwcm9wZXJ0aWVzJzsgYXR0cmlidXRlIHdpbGwgbm90IGJlIG9ic2VydmVkLmApLGUuX2FkZFRlbXBsYXRlUHJvcGVydHlFZmZlY3QuY2FsbCh0aGlzLHQsbixpKX19fSkpOwovKioKICAgICAqIEBmaWxlb3ZlcnZpZXcKICAgICAqIEBzdXBwcmVzcyB7Y2hlY2tQcm90b3R5cGFsVHlwZXN9CiAgICAgKiBAbGljZW5zZSBDb3B5cmlnaHQgKGMpIDIwMTcgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgICogVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0CiAgICAgKiBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZAogICAgICogYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heQogICAgICogYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQgQ29kZSBkaXN0cmlidXRlZCBieQogICAgICogR29vZ2xlIGFzIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUAogICAgICogcmlnaHRzIGdyYW50IGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgICovCi8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNyBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0CiAgICBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcyBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbwogICAgc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudCBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCmNsYXNzIHZle2NvbnN0cnVjdG9yKHQpe3RoaXMudmFsdWU9dC50b1N0cmluZygpfXRvU3RyaW5nKCl7cmV0dXJuIHRoaXMudmFsdWV9fWZ1bmN0aW9uIGJlKHQpe2lmKHQgaW5zdGFuY2VvZiBIVE1MVGVtcGxhdGVFbGVtZW50KXJldHVybiB0LmlubmVySFRNTDtpZih0IGluc3RhbmNlb2YgdmUpcmV0dXJuKGZ1bmN0aW9uIGUodCl7aWYodCBpbnN0YW5jZW9mIHZlKXJldHVybiB0LnZhbHVlO3Rocm93IG5ldyBFcnJvcihgbm9uLWxpdGVyYWwgdmFsdWUgcGFzc2VkIHRvIFBvbHltZXIncyBodG1sTGl0ZXJhbCBmdW5jdGlvbjogJHt0fWApfSkodCk7dGhyb3cgbmV3IEVycm9yKGBub24tdGVtcGxhdGUgdmFsdWUgcGFzc2VkIHRvIFBvbHltZXIncyBodG1sIGZ1bmN0aW9uOiAke3R9YCl9Y29uc3QgeGU9ZnVuY3Rpb24gdChlLC4uLm4pe2NvbnN0IGk9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGVtcGxhdGUiKTtyZXR1cm4gaS5pbm5lckhUTUw9bi5yZWR1Y2UoKCh0LG4saSk9PnQrYmUobikrZVtpKzFdKSxlWzBdKSxpfSx3ZT15ZShIVE1MRWxlbWVudCk7Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNyBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0CiAgICBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcyBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbwogICAgc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudCBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovdmFyIFNlPSJ1bmRlZmluZWQiIT10eXBlb2YgZ2xvYmFsVGhpcz9nbG9iYWxUaGlzOiJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93P3dpbmRvdzoidW5kZWZpbmVkIiE9dHlwZW9mIGdsb2JhbD9nbG9iYWw6InVuZGVmaW5lZCIhPXR5cGVvZiBzZWxmP3NlbGY6e307ZnVuY3Rpb24gTWUodCl7aWYodC5fX2VzTW9kdWxlKXJldHVybiB0O3ZhciBlPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7cmV0dXJuIE9iamVjdC5rZXlzKHQpLmZvckVhY2goKGZ1bmN0aW9uKG4pe3ZhciBpPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxuKTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxuLGkuZ2V0P2k6e2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRbbl19fSl9KSksZX12YXIgRWUsVGUsQ2U9e2V4cG9ydHM6e319OwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBMb2Rhc2ggPGh0dHBzOi8vbG9kYXNoLmNvbS8+CiAgICAgKiBDb3B5cmlnaHQgT3BlbkpTIEZvdW5kYXRpb24gYW5kIG90aGVyIGNvbnRyaWJ1dG9ycyA8aHR0cHM6Ly9vcGVuanNmLm9yZy8+CiAgICAgKiBSZWxlYXNlZCB1bmRlciBNSVQgbGljZW5zZSA8aHR0cHM6Ly9sb2Rhc2guY29tL2xpY2Vuc2U+CiAgICAgKiBCYXNlZCBvbiBVbmRlcnNjb3JlLmpzIDEuOC4zIDxodHRwOi8vdW5kZXJzY29yZWpzLm9yZy9MSUNFTlNFPgogICAgICogQ29weXJpZ2h0IEplcmVteSBBc2hrZW5hcywgRG9jdW1lbnRDbG91ZCBhbmQgSW52ZXN0aWdhdGl2ZSBSZXBvcnRlcnMgJiBFZGl0b3JzCiAgICAgKi9FZT1DZSxUZT1DZS5leHBvcnRzLGZ1bmN0aW9uKCl7dmFyIHQsZT0iRXhwZWN0ZWQgYSBmdW5jdGlvbiIsbj0iX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfXyIsaT0iX19sb2Rhc2hfcGxhY2Vob2xkZXJfXyIscj0xNixvPTMyLGE9NjQscz0xMjgsbD0yNTYsYz0xLzAsdT05MDA3MTk5MjU0NzQwOTkxLGg9TmFOLGQ9NDI5NDk2NzI5NSxwPVtbImFyeSIsc10sWyJiaW5kIiwxXSxbImJpbmRLZXkiLDJdLFsiY3VycnkiLDhdLFsiY3VycnlSaWdodCIscl0sWyJmbGlwIiw1MTJdLFsicGFydGlhbCIsb10sWyJwYXJ0aWFsUmlnaHQiLGFdLFsicmVhcmciLGxdXSxmPSJbb2JqZWN0IEFyZ3VtZW50c10iLG09IltvYmplY3QgQXJyYXldIixnPSJbb2JqZWN0IEJvb2xlYW5dIixfPSJbb2JqZWN0IERhdGVdIix5PSJbb2JqZWN0IEVycm9yXSIsdj0iW29iamVjdCBGdW5jdGlvbl0iLGI9IltvYmplY3QgR2VuZXJhdG9yRnVuY3Rpb25dIix4PSJbb2JqZWN0IE1hcF0iLHc9IltvYmplY3QgTnVtYmVyXSIsUz0iW29iamVjdCBPYmplY3RdIixNPSJbb2JqZWN0IFByb21pc2VdIixFPSJbb2JqZWN0IFJlZ0V4cF0iLFQ9IltvYmplY3QgU2V0XSIsQz0iW29iamVjdCBTdHJpbmddIixBPSJbb2JqZWN0IFN5bWJvbF0iLGs9IltvYmplY3QgV2Vha01hcF0iLEw9IltvYmplY3QgQXJyYXlCdWZmZXJdIixQPSJbb2JqZWN0IERhdGFWaWV3XSIsTj0iW29iamVjdCBGbG9hdDMyQXJyYXldIixJPSJbb2JqZWN0IEZsb2F0NjRBcnJheV0iLFI9IltvYmplY3QgSW50OEFycmF5XSIsTz0iW29iamVjdCBJbnQxNkFycmF5XSIsej0iW29iamVjdCBJbnQzMkFycmF5XSIsRD0iW29iamVjdCBVaW50OEFycmF5XSIsQj0iW29iamVjdCBVaW50OENsYW1wZWRBcnJheV0iLEg9IltvYmplY3QgVWludDE2QXJyYXldIixGPSJbb2JqZWN0IFVpbnQzMkFycmF5XSIsVj0vXGJfX3AgXCs9ICcnOy9nLFU9L1xiKF9fcCBcKz0pICcnIFwrL2csaj0vKF9fZVwoLio/XCl8XGJfX3RcKSkgXCtcbicnOy9nLEc9LyYoPzphbXB8bHR8Z3R8cXVvdHwjMzkpOy9nLFc9L1smPD4iJ10vZyxxPVJlZ0V4cChHLnNvdXJjZSksWT1SZWdFeHAoVy5zb3VyY2UpLFg9LzwlLShbXHNcU10rPyklPi9nLCQ9LzwlKFtcc1xTXSs/KSU+L2csSz0vPCU9KFtcc1xTXSs/KSU+L2csWj0vXC58XFsoPzpbXltcXV0qfChbIiddKSg/Oig/IVwxKVteXFxdfFxcLikqP1wxKVxdLyxKPS9eXHcqJC8sUT0vW14uW1xdXSt8XFsoPzooLT9cZCsoPzpcLlxkKyk/KXwoWyInXSkoKD86KD8hXDIpW15cXF18XFwuKSo/KVwyKVxdfCg/PSg/OlwufFxbXF0pKD86XC58XFtcXXwkKSkvZyx0dD0vW1xcXiQuKis/KClbXF17fXxdL2csZXQ9UmVnRXhwKHR0LnNvdXJjZSksbnQ9L15ccysvLGl0PS9ccy8scnQ9L1x7KD86XG5cL1wqIFxbd3JhcHBlZCB3aXRoIC4rXF0gXCpcLyk/XG4/LyxvdD0vXHtcblwvXCogXFt3cmFwcGVkIHdpdGggKC4rKVxdIFwqLyxhdD0vLD8gJiAvLHN0PS9bXlx4MDAtXHgyZlx4M2EtXHg0MFx4NWItXHg2MFx4N2ItXHg3Zl0rL2csbHQ9L1soKT0se31cW1xdXC9cc10vLGN0PS9cXChcXCk/L2csdXQ9L1wkXHsoW15cXH1dKig/OlxcLlteXFx9XSopKilcfS9nLGh0PS9cdyokLyxkdD0vXlstK10weFswLTlhLWZdKyQvaSxwdD0vXjBiWzAxXSskL2ksZnQ9L15cW29iamVjdCAuKz9Db25zdHJ1Y3RvclxdJC8sbXQ9L14wb1swLTddKyQvaSxndD0vXig/OjB8WzEtOV1cZCopJC8sX3Q9L1tceGMwLVx4ZDZceGQ4LVx4ZjZceGY4LVx4ZmZcdTAxMDAtXHUwMTdmXS9nLHl0PS8oJF4pLyx2dD0vWydcblxyXHUyMDI4XHUyMDI5XFxdL2csYnQ9IlxcdTAzMDAtXFx1MDM2ZlxcdWZlMjAtXFx1ZmUyZlxcdTIwZDAtXFx1MjBmZiIseHQ9IlxcdTI3MDAtXFx1MjdiZiIsd3Q9ImEtelxceGRmLVxceGY2XFx4ZjgtXFx4ZmYiLFN0PSJBLVpcXHhjMC1cXHhkNlxceGQ4LVxceGRlIixNdD0iXFx1ZmUwZVxcdWZlMGYiLEV0PSJcXHhhY1xceGIxXFx4ZDdcXHhmN1xceDAwLVxceDJmXFx4M2EtXFx4NDBcXHg1Yi1cXHg2MFxceDdiLVxceGJmXFx1MjAwMC1cXHUyMDZmIFxcdFxceDBiXFxmXFx4YTBcXHVmZWZmXFxuXFxyXFx1MjAyOFxcdTIwMjlcXHUxNjgwXFx1MTgwZVxcdTIwMDBcXHUyMDAxXFx1MjAwMlxcdTIwMDNcXHUyMDA0XFx1MjAwNVxcdTIwMDZcXHUyMDA3XFx1MjAwOFxcdTIwMDlcXHUyMDBhXFx1MjAyZlxcdTIwNWZcXHUzMDAwIixUdD0iWyfigJldIixDdD0iW1xcdWQ4MDAtXFx1ZGZmZl0iLEF0PSJbIitFdCsiXSIsa3Q9IlsiK2J0KyJdIixMdD0iXFxkKyIsUHQ9IltcXHUyNzAwLVxcdTI3YmZdIixOdD0iWyIrd3QrIl0iLEl0PSJbXlxcdWQ4MDAtXFx1ZGZmZiIrRXQrTHQreHQrd3QrU3QrIl0iLFJ0PSJcXHVkODNjW1xcdWRmZmItXFx1ZGZmZl0iLE90PSJbXlxcdWQ4MDAtXFx1ZGZmZl0iLHp0PSIoPzpcXHVkODNjW1xcdWRkZTYtXFx1ZGRmZl0pezJ9IixEdD0iW1xcdWQ4MDAtXFx1ZGJmZl1bXFx1ZGMwMC1cXHVkZmZmXSIsQnQ9IlsiK1N0KyJdIixIdD0iKD86IitOdCsifCIrSXQrIikiLEZ0PSIoPzoiK0J0KyJ8IitJdCsiKSIsVnQ9Iig/Olsn4oCZXSg/OmR8bGx8bXxyZXxzfHR8dmUpKT8iLFV0PSIoPzpbJ+KAmV0oPzpEfExMfE18UkV8U3xUfFZFKSk/IixqdD0iKD86IitrdCsifCIrUnQrIik/IixHdD0iW1xcdWZlMGVcXHVmZTBmXT8iLFd0PUd0K2p0KyIoPzpcXHUyMDBkKD86IitbT3QsenQsRHRdLmpvaW4oInwiKSsiKSIrR3QranQrIikqIixxdD0iKD86IitbUHQsenQsRHRdLmpvaW4oInwiKSsiKSIrV3QsWXQ9Iig/OiIrW090K2t0KyI/IixrdCx6dCxEdCxDdF0uam9pbigifCIpKyIpIixYdD1SZWdFeHAoVHQsImciKSwkdD1SZWdFeHAoa3QsImciKSxLdD1SZWdFeHAoUnQrIig/PSIrUnQrIil8IitZdCtXdCwiZyIpLFp0PVJlZ0V4cChbQnQrIj8iK050KyIrIitWdCsiKD89IitbQXQsQnQsIiQiXS5qb2luKCJ8IikrIikiLEZ0KyIrIitVdCsiKD89IitbQXQsQnQrSHQsIiQiXS5qb2luKCJ8IikrIikiLEJ0KyI/IitIdCsiKyIrVnQsQnQrIisiK1V0LCJcXGQqKD86MVNUfDJORHwzUkR8KD8hWzEyM10pXFxkVEgpKD89XFxifFthLXpfXSkiLCJcXGQqKD86MXN0fDJuZHwzcmR8KD8hWzEyM10pXFxkdGgpKD89XFxifFtBLVpfXSkiLEx0LHF0XS5qb2luKCJ8IiksImciKSxKdD1SZWdFeHAoIltcXHUyMDBkXFx1ZDgwMC1cXHVkZmZmIitidCtNdCsiXSIpLFF0PS9bYS16XVtBLVpdfFtBLVpdezJ9W2Etel18WzAtOV1bYS16QS1aXXxbYS16QS1aXVswLTldfFteYS16QS1aMC05IF0vLHRlPVsiQXJyYXkiLCJCdWZmZXIiLCJEYXRhVmlldyIsIkRhdGUiLCJFcnJvciIsIkZsb2F0MzJBcnJheSIsIkZsb2F0NjRBcnJheSIsIkZ1bmN0aW9uIiwiSW50OEFycmF5IiwiSW50MTZBcnJheSIsIkludDMyQXJyYXkiLCJNYXAiLCJNYXRoIiwiT2JqZWN0IiwiUHJvbWlzZSIsIlJlZ0V4cCIsIlNldCIsIlN0cmluZyIsIlN5bWJvbCIsIlR5cGVFcnJvciIsIlVpbnQ4QXJyYXkiLCJVaW50OENsYW1wZWRBcnJheSIsIlVpbnQxNkFycmF5IiwiVWludDMyQXJyYXkiLCJXZWFrTWFwIiwiXyIsImNsZWFyVGltZW91dCIsImlzRmluaXRlIiwicGFyc2VJbnQiLCJzZXRUaW1lb3V0Il0sZWU9LTEsbmU9e307bmVbTl09bmVbSV09bmVbUl09bmVbT109bmVbel09bmVbRF09bmVbQl09bmVbSF09bmVbRl09ITAsbmVbZl09bmVbbV09bmVbTF09bmVbZ109bmVbUF09bmVbX109bmVbeV09bmVbdl09bmVbeF09bmVbd109bmVbU109bmVbRV09bmVbVF09bmVbQ109bmVba109ITE7dmFyIGllPXt9O2llW2ZdPWllW21dPWllW0xdPWllW1BdPWllW2ddPWllW19dPWllW05dPWllW0ldPWllW1JdPWllW09dPWllW3pdPWllW3hdPWllW3ddPWllW1NdPWllW0VdPWllW1RdPWllW0NdPWllW0FdPWllW0RdPWllW0JdPWllW0hdPWllW0ZdPSEwLGllW3ldPWllW3ZdPWllW2tdPSExO3ZhciByZT17IlxcIjoiXFwiLCInIjoiJyIsIlxuIjoibiIsIlxyIjoiciIsIlx1MjAyOCI6InUyMDI4IiwiXHUyMDI5IjoidTIwMjkifSxvZT1wYXJzZUZsb2F0LGFlPXBhcnNlSW50LHNlPSJvYmplY3QiPT10eXBlb2YgU2UmJlNlJiZTZS5PYmplY3Q9PT1PYmplY3QmJlNlLGxlPSJvYmplY3QiPT10eXBlb2Ygc2VsZiYmc2VsZiYmc2VsZi5PYmplY3Q9PT1PYmplY3QmJnNlbGYsY2U9c2V8fGxlfHxGdW5jdGlvbigicmV0dXJuIHRoaXMiKSgpLHVlPVRlJiYhVGUubm9kZVR5cGUmJlRlLGhlPXVlJiZFZSYmIUVlLm5vZGVUeXBlJiZFZSxkZT1oZSYmaGUuZXhwb3J0cz09PXVlLHBlPWRlJiZzZS5wcm9jZXNzLGZlPShmdW5jdGlvbigpe3RyeXt2YXIgdD1oZSYmaGUucmVxdWlyZSYmaGUucmVxdWlyZSgidXRpbCIpLnR5cGVzO3JldHVybiB0fHxwZSYmcGUuYmluZGluZyYmcGUuYmluZGluZygidXRpbCIpfWNhdGNoKHQpe319KSgpLG1lPWZlJiZmZS5pc0FycmF5QnVmZmVyLGdlPWZlJiZmZS5pc0RhdGUsX2U9ZmUmJmZlLmlzTWFwLHllPWZlJiZmZS5pc1JlZ0V4cCx2ZT1mZSYmZmUuaXNTZXQsYmU9ZmUmJmZlLmlzVHlwZWRBcnJheTtmdW5jdGlvbiB4ZSh0LGUsbil7c3dpdGNoKG4ubGVuZ3RoKXtjYXNlIDA6cmV0dXJuIHQuY2FsbChlKTtjYXNlIDE6cmV0dXJuIHQuY2FsbChlLG5bMF0pO2Nhc2UgMjpyZXR1cm4gdC5jYWxsKGUsblswXSxuWzFdKTtjYXNlIDM6cmV0dXJuIHQuY2FsbChlLG5bMF0sblsxXSxuWzJdKX1yZXR1cm4gdC5hcHBseShlLG4pfWZ1bmN0aW9uIHdlKHQsZSxuLGkpe2Zvcih2YXIgcj0tMSxvPW51bGw9PXQ/MDp0Lmxlbmd0aDsrK3I8bzspe3ZhciBhPXRbcl07ZShpLGEsbihhKSx0KX1yZXR1cm4gaX1mdW5jdGlvbiBNZSh0LGUpe2Zvcih2YXIgbj0tMSxpPW51bGw9PXQ/MDp0Lmxlbmd0aDsrK248aSYmITEhPT1lKHRbbl0sbix0KTspO3JldHVybiB0fWZ1bmN0aW9uIENlKHQsZSl7Zm9yKHZhciBuPW51bGw9PXQ/MDp0Lmxlbmd0aDtuLS0mJiExIT09ZSh0W25dLG4sdCk7KTtyZXR1cm4gdH1mdW5jdGlvbiBBZSh0LGUpe2Zvcih2YXIgbj0tMSxpPW51bGw9PXQ/MDp0Lmxlbmd0aDsrK248aTspaWYoIWUodFtuXSxuLHQpKXJldHVybiExO3JldHVybiEwfWZ1bmN0aW9uIGtlKHQsZSl7Zm9yKHZhciBuPS0xLGk9bnVsbD09dD8wOnQubGVuZ3RoLHI9MCxvPVtdOysrbjxpOyl7dmFyIGE9dFtuXTtlKGEsbix0KSYmKG9bcisrXT1hKX1yZXR1cm4gb31mdW5jdGlvbiBMZSh0LGUpe3JldHVybiEobnVsbD09dHx8IXQubGVuZ3RoKSYmRmUodCxlLDApPi0xfWZ1bmN0aW9uIFBlKHQsZSxuKXtmb3IodmFyIGk9LTEscj1udWxsPT10PzA6dC5sZW5ndGg7KytpPHI7KWlmKG4oZSx0W2ldKSlyZXR1cm4hMDtyZXR1cm4hMX1mdW5jdGlvbiBOZSh0LGUpe2Zvcih2YXIgbj0tMSxpPW51bGw9PXQ/MDp0Lmxlbmd0aCxyPUFycmF5KGkpOysrbjxpOylyW25dPWUodFtuXSxuLHQpO3JldHVybiByfWZ1bmN0aW9uIEllKHQsZSl7Zm9yKHZhciBuPS0xLGk9ZS5sZW5ndGgscj10Lmxlbmd0aDsrK248aTspdFtyK25dPWVbbl07cmV0dXJuIHR9ZnVuY3Rpb24gUmUodCxlLG4saSl7dmFyIHI9LTEsbz1udWxsPT10PzA6dC5sZW5ndGg7Zm9yKGkmJm8mJihuPXRbKytyXSk7KytyPG87KW49ZShuLHRbcl0scix0KTtyZXR1cm4gbn1mdW5jdGlvbiBPZSh0LGUsbixpKXt2YXIgcj1udWxsPT10PzA6dC5sZW5ndGg7Zm9yKGkmJnImJihuPXRbLS1yXSk7ci0tOyluPWUobix0W3JdLHIsdCk7cmV0dXJuIG59ZnVuY3Rpb24gemUodCxlKXtmb3IodmFyIG49LTEsaT1udWxsPT10PzA6dC5sZW5ndGg7KytuPGk7KWlmKGUodFtuXSxuLHQpKXJldHVybiEwO3JldHVybiExfXZhciBEZT1HZSgibGVuZ3RoIik7ZnVuY3Rpb24gQmUodCxlLG4pe3ZhciBpO3JldHVybiBuKHQsKGZ1bmN0aW9uKHQsbixyKXtpZihlKHQsbixyKSlyZXR1cm4gaT1uLCExfSkpLGl9ZnVuY3Rpb24gSGUodCxlLG4saSl7Zm9yKHZhciByPXQubGVuZ3RoLG89bisoaT8xOi0xKTtpP28tLTorK288cjspaWYoZSh0W29dLG8sdCkpcmV0dXJuIG87cmV0dXJuLTF9ZnVuY3Rpb24gRmUodCxlLG4pe3JldHVybiBlPT1lPyhmdW5jdGlvbiBpKHQsZSxuKXtmb3IodmFyIGk9bi0xLHI9dC5sZW5ndGg7KytpPHI7KWlmKHRbaV09PT1lKXJldHVybiBpO3JldHVybi0xfSkodCxlLG4pOkhlKHQsVWUsbil9ZnVuY3Rpb24gVmUodCxlLG4saSl7Zm9yKHZhciByPW4tMSxvPXQubGVuZ3RoOysrcjxvOylpZihpKHRbcl0sZSkpcmV0dXJuIHI7cmV0dXJuLTF9ZnVuY3Rpb24gVWUodCl7cmV0dXJuIHQhPXR9ZnVuY3Rpb24gamUodCxlKXt2YXIgbj1udWxsPT10PzA6dC5sZW5ndGg7cmV0dXJuIG4/WWUodCxlKS9uOmh9ZnVuY3Rpb24gR2UoZSl7cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiBudWxsPT1uP3Q6bltlXX19ZnVuY3Rpb24gV2UoZSl7cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiBudWxsPT1lP3Q6ZVtuXX19ZnVuY3Rpb24gcWUodCxlLG4saSxyKXtyZXR1cm4gcih0LChmdW5jdGlvbih0LHIsbyl7bj1pPyhpPSExLHQpOmUobix0LHIsbyl9KSksbn1mdW5jdGlvbiBZZShlLG4pe2Zvcih2YXIgaSxyPS0xLG89ZS5sZW5ndGg7KytyPG87KXt2YXIgYT1uKGVbcl0pO2EhPT10JiYoaT1pPT09dD9hOmkrYSl9cmV0dXJuIGl9ZnVuY3Rpb24gWGUodCxlKXtmb3IodmFyIG49LTEsaT1BcnJheSh0KTsrK248dDspaVtuXT1lKG4pO3JldHVybiBpfWZ1bmN0aW9uICRlKHQpe3JldHVybiB0P3Quc2xpY2UoMCxmbih0KSsxKS5yZXBsYWNlKG50LCIiKTp0fWZ1bmN0aW9uIEtlKHQpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gdChlKX19ZnVuY3Rpb24gWmUodCxlKXtyZXR1cm4gTmUoZSwoZnVuY3Rpb24oZSl7cmV0dXJuIHRbZV19KSl9ZnVuY3Rpb24gSmUodCxlKXtyZXR1cm4gdC5oYXMoZSl9ZnVuY3Rpb24gUWUodCxlKXtmb3IodmFyIG49LTEsaT10Lmxlbmd0aDsrK248aSYmRmUoZSx0W25dLDApPi0xOyk7cmV0dXJuIG59ZnVuY3Rpb24gdG4odCxlKXtmb3IodmFyIG49dC5sZW5ndGg7bi0tJiZGZShlLHRbbl0sMCk+LTE7KTtyZXR1cm4gbn1mdW5jdGlvbiBlbih0LGUpe2Zvcih2YXIgbj10Lmxlbmd0aCxpPTA7bi0tOyl0W25dPT09ZSYmKytpO3JldHVybiBpfXZhciBubj1XZSh7IsOAIjoiQSIsIsOBIjoiQSIsIsOCIjoiQSIsIsODIjoiQSIsIsOEIjoiQSIsIsOFIjoiQSIsIsOgIjoiYSIsIsOhIjoiYSIsIsOiIjoiYSIsIsOjIjoiYSIsIsOkIjoiYSIsIsOlIjoiYSIsIsOHIjoiQyIsIsOnIjoiYyIsIsOQIjoiRCIsIsOwIjoiZCIsIsOIIjoiRSIsIsOJIjoiRSIsIsOKIjoiRSIsIsOLIjoiRSIsIsOoIjoiZSIsIsOpIjoiZSIsIsOqIjoiZSIsIsOrIjoiZSIsIsOMIjoiSSIsIsONIjoiSSIsIsOOIjoiSSIsIsOPIjoiSSIsIsOsIjoiaSIsIsOtIjoiaSIsIsOuIjoiaSIsIsOvIjoiaSIsIsORIjoiTiIsIsOxIjoibiIsIsOSIjoiTyIsIsOTIjoiTyIsIsOUIjoiTyIsIsOVIjoiTyIsIsOWIjoiTyIsIsOYIjoiTyIsIsOyIjoibyIsIsOzIjoibyIsIsO0IjoibyIsIsO1IjoibyIsIsO2IjoibyIsIsO4IjoibyIsIsOZIjoiVSIsIsOaIjoiVSIsIsObIjoiVSIsIsOcIjoiVSIsIsO5IjoidSIsIsO6IjoidSIsIsO7IjoidSIsIsO8IjoidSIsIsOdIjoiWSIsIsO9IjoieSIsIsO/IjoieSIsIsOGIjoiQWUiLCLDpiI6ImFlIiwiw54iOiJUaCIsIsO+IjoidGgiLCLDnyI6InNzIiwixIAiOiJBIiwixIIiOiJBIiwixIQiOiJBIiwixIEiOiJhIiwixIMiOiJhIiwixIUiOiJhIiwixIYiOiJDIiwixIgiOiJDIiwixIoiOiJDIiwixIwiOiJDIiwixIciOiJjIiwixIkiOiJjIiwixIsiOiJjIiwixI0iOiJjIiwixI4iOiJEIiwixJAiOiJEIiwixI8iOiJkIiwixJEiOiJkIiwixJIiOiJFIiwixJQiOiJFIiwixJYiOiJFIiwixJgiOiJFIiwixJoiOiJFIiwixJMiOiJlIiwixJUiOiJlIiwixJciOiJlIiwixJkiOiJlIiwixJsiOiJlIiwixJwiOiJHIiwixJ4iOiJHIiwixKAiOiJHIiwixKIiOiJHIiwixJ0iOiJnIiwixJ8iOiJnIiwixKEiOiJnIiwixKMiOiJnIiwixKQiOiJIIiwixKYiOiJIIiwixKUiOiJoIiwixKciOiJoIiwixKgiOiJJIiwixKoiOiJJIiwixKwiOiJJIiwixK4iOiJJIiwixLAiOiJJIiwixKkiOiJpIiwixKsiOiJpIiwixK0iOiJpIiwixK8iOiJpIiwixLEiOiJpIiwixLQiOiJKIiwixLUiOiJqIiwixLYiOiJLIiwixLciOiJrIiwixLgiOiJrIiwixLkiOiJMIiwixLsiOiJMIiwixL0iOiJMIiwixL8iOiJMIiwixYEiOiJMIiwixLoiOiJsIiwixLwiOiJsIiwixL4iOiJsIiwixYAiOiJsIiwixYIiOiJsIiwixYMiOiJOIiwixYUiOiJOIiwixYciOiJOIiwixYoiOiJOIiwixYQiOiJuIiwixYYiOiJuIiwixYgiOiJuIiwixYsiOiJuIiwixYwiOiJPIiwixY4iOiJPIiwixZAiOiJPIiwixY0iOiJvIiwixY8iOiJvIiwixZEiOiJvIiwixZQiOiJSIiwixZYiOiJSIiwixZgiOiJSIiwixZUiOiJyIiwixZciOiJyIiwixZkiOiJyIiwixZoiOiJTIiwixZwiOiJTIiwixZ4iOiJTIiwixaAiOiJTIiwixZsiOiJzIiwixZ0iOiJzIiwixZ8iOiJzIiwixaEiOiJzIiwixaIiOiJUIiwixaQiOiJUIiwixaYiOiJUIiwixaMiOiJ0IiwixaUiOiJ0IiwixaciOiJ0IiwixagiOiJVIiwixaoiOiJVIiwixawiOiJVIiwixa4iOiJVIiwixbAiOiJVIiwixbIiOiJVIiwixakiOiJ1IiwixasiOiJ1Iiwixa0iOiJ1Iiwixa8iOiJ1IiwixbEiOiJ1IiwixbMiOiJ1IiwixbQiOiJXIiwixbUiOiJ3IiwixbYiOiJZIiwixbciOiJ5IiwixbgiOiJZIiwixbkiOiJaIiwixbsiOiJaIiwixb0iOiJaIiwixboiOiJ6IiwixbwiOiJ6Iiwixb4iOiJ6IiwixLIiOiJJSiIsIsSzIjoiaWoiLCLFkiI6Ik9lIiwixZMiOiJvZSIsIsWJIjoiJ24iLCLFvyI6InMifSkscm49V2UoeyImIjoiJmFtcDsiLCI8IjoiJmx0OyIsIj4iOiImZ3Q7IiwnIic6IiZxdW90OyIsIiciOiImIzM5OyJ9KTtmdW5jdGlvbiBvbih0KXtyZXR1cm4iXFwiK3JlW3RdfWZ1bmN0aW9uIGFuKHQpe3JldHVybiBKdC50ZXN0KHQpfWZ1bmN0aW9uIHNuKHQpe3ZhciBlPS0xLG49QXJyYXkodC5zaXplKTtyZXR1cm4gdC5mb3JFYWNoKChmdW5jdGlvbih0LGkpe25bKytlXT1baSx0XX0pKSxufWZ1bmN0aW9uIGxuKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiB0KGUobikpfX1mdW5jdGlvbiBjbih0LGUpe2Zvcih2YXIgbj0tMSxyPXQubGVuZ3RoLG89MCxhPVtdOysrbjxyOyl7dmFyIHM9dFtuXTtzIT09ZSYmcyE9PWl8fCh0W25dPWksYVtvKytdPW4pfXJldHVybiBhfWZ1bmN0aW9uIHVuKHQpe3ZhciBlPS0xLG49QXJyYXkodC5zaXplKTtyZXR1cm4gdC5mb3JFYWNoKChmdW5jdGlvbih0KXtuWysrZV09dH0pKSxufWZ1bmN0aW9uIGhuKHQpe3ZhciBlPS0xLG49QXJyYXkodC5zaXplKTtyZXR1cm4gdC5mb3JFYWNoKChmdW5jdGlvbih0KXtuWysrZV09W3QsdF19KSksbn1mdW5jdGlvbiBkbih0KXtyZXR1cm4gYW4odCk/KGZ1bmN0aW9uIGUodCl7Zm9yKHZhciBlPUt0Lmxhc3RJbmRleD0wO0t0LnRlc3QodCk7KSsrZTtyZXR1cm4gZX0pKHQpOkRlKHQpfWZ1bmN0aW9uIHBuKHQpe3JldHVybiBhbih0KT8oZnVuY3Rpb24gZSh0KXtyZXR1cm4gdC5tYXRjaChLdCl8fFtdfSkodCk6KGZ1bmN0aW9uIG4odCl7cmV0dXJuIHQuc3BsaXQoIiIpfSkodCl9ZnVuY3Rpb24gZm4odCl7Zm9yKHZhciBlPXQubGVuZ3RoO2UtLSYmaXQudGVzdCh0LmNoYXJBdChlKSk7KTtyZXR1cm4gZX12YXIgbW49V2UoeyImYW1wOyI6IiYiLCImbHQ7IjoiPCIsIiZndDsiOiI+IiwiJnF1b3Q7IjonIicsIiYjMzk7IjoiJyJ9KSxnbj0oZnVuY3Rpb24gaXQoYnQpe3ZhciB4dCx3dD0oYnQ9bnVsbD09YnQ/Y2U6Z24uZGVmYXVsdHMoY2UuT2JqZWN0KCksYnQsZ24ucGljayhjZSx0ZSkpKS5BcnJheSxTdD1idC5EYXRlLE10PWJ0LkVycm9yLEV0PWJ0LkZ1bmN0aW9uLFR0PWJ0Lk1hdGgsQ3Q9YnQuT2JqZWN0LEF0PWJ0LlJlZ0V4cCxrdD1idC5TdHJpbmcsTHQ9YnQuVHlwZUVycm9yLFB0PXd0LnByb3RvdHlwZSxOdD1DdC5wcm90b3R5cGUsSXQ9YnRbIl9fY29yZS1qc19zaGFyZWRfXyJdLFJ0PUV0LnByb3RvdHlwZS50b1N0cmluZyxPdD1OdC5oYXNPd25Qcm9wZXJ0eSx6dD0wLER0PSh4dD0vW14uXSskLy5leGVjKEl0JiZJdC5rZXlzJiZJdC5rZXlzLklFX1BST1RPfHwiIikpPyJTeW1ib2woc3JjKV8xLiIreHQ6IiIsQnQ9TnQudG9TdHJpbmcsSHQ9UnQuY2FsbChDdCksRnQ9Y2UuXyxWdD1BdCgiXiIrUnQuY2FsbChPdCkucmVwbGFjZSh0dCwiXFwkJiIpLnJlcGxhY2UoL2hhc093blByb3BlcnR5fChmdW5jdGlvbikuKj8oPz1cXFwoKXwgZm9yIC4rPyg/PVxcXF0pL2csIiQxLio/IikrIiQiKSxVdD1kZT9idC5CdWZmZXI6dCxqdD1idC5TeW1ib2wsR3Q9YnQuVWludDhBcnJheSxXdD1VdD9VdC5hbGxvY1Vuc2FmZTp0LHF0PWxuKEN0LmdldFByb3RvdHlwZU9mLEN0KSxZdD1DdC5jcmVhdGUsS3Q9TnQucHJvcGVydHlJc0VudW1lcmFibGUsSnQ9UHQuc3BsaWNlLHJlPWp0P2p0LmlzQ29uY2F0U3ByZWFkYWJsZTp0LHNlPWp0P2p0Lml0ZXJhdG9yOnQsbGU9anQ/anQudG9TdHJpbmdUYWc6dCx1ZT0oZnVuY3Rpb24oKXt0cnl7dmFyIHQ9T28oQ3QsImRlZmluZVByb3BlcnR5Iik7cmV0dXJuIHQoe30sIiIse30pLHR9Y2F0Y2godCl7fX0pKCksaGU9YnQuY2xlYXJUaW1lb3V0IT09Y2UuY2xlYXJUaW1lb3V0JiZidC5jbGVhclRpbWVvdXQscGU9U3QmJlN0Lm5vdyE9PWNlLkRhdGUubm93JiZTdC5ub3csZmU9YnQuc2V0VGltZW91dCE9PWNlLnNldFRpbWVvdXQmJmJ0LnNldFRpbWVvdXQsU2U9VHQuY2VpbCxFZT1UdC5mbG9vcixUZT1DdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMsRGU9VXQ/VXQuaXNCdWZmZXI6dCxXZT1idC5pc0Zpbml0ZSxfbj1QdC5qb2luLHluPWxuKEN0LmtleXMsQ3QpLHZuPVR0Lm1heCxibj1UdC5taW4seG49U3Qubm93LHduPWJ0LnBhcnNlSW50LFNuPVR0LnJhbmRvbSxNbj1QdC5yZXZlcnNlLEVuPU9vKGJ0LCJEYXRhVmlldyIpLFRuPU9vKGJ0LCJNYXAiKSxDbj1PbyhidCwiUHJvbWlzZSIpLEFuPU9vKGJ0LCJTZXQiKSxrbj1PbyhidCwiV2Vha01hcCIpLExuPU9vKEN0LCJjcmVhdGUiKSxQbj1rbiYmbmV3IGtuLE5uPXt9LEluPWNhKEVuKSxSbj1jYShUbiksT249Y2EoQ24pLHpuPWNhKEFuKSxEbj1jYShrbiksQm49anQ/anQucHJvdG90eXBlOnQsSG49Qm4/Qm4udmFsdWVPZjp0LEZuPUJuP0JuLnRvU3RyaW5nOnQ7ZnVuY3Rpb24gVm4odCl7aWYoQXModCkmJiFtcyh0KSYmISh0IGluc3RhbmNlb2YgV24pKXtpZih0IGluc3RhbmNlb2YgR24pcmV0dXJuIHQ7aWYoT3QuY2FsbCh0LCJfX3dyYXBwZWRfXyIpKXJldHVybiB1YSh0KX1yZXR1cm4gbmV3IEduKHQpfXZhciBVbj0oZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7fXJldHVybiBmdW5jdGlvbihuKXtpZighQ3MobikpcmV0dXJue307aWYoWXQpcmV0dXJuIFl0KG4pO2UucHJvdG90eXBlPW47dmFyIGk9bmV3IGU7cmV0dXJuIGUucHJvdG90eXBlPXQsaX19KSgpO2Z1bmN0aW9uIGpuKCl7fWZ1bmN0aW9uIEduKGUsbil7dGhpcy5fX3dyYXBwZWRfXz1lLHRoaXMuX19hY3Rpb25zX189W10sdGhpcy5fX2NoYWluX189ISFuLHRoaXMuX19pbmRleF9fPTAsdGhpcy5fX3ZhbHVlc19fPXR9ZnVuY3Rpb24gV24odCl7dGhpcy5fX3dyYXBwZWRfXz10LHRoaXMuX19hY3Rpb25zX189W10sdGhpcy5fX2Rpcl9fPTEsdGhpcy5fX2ZpbHRlcmVkX189ITEsdGhpcy5fX2l0ZXJhdGVlc19fPVtdLHRoaXMuX190YWtlQ291bnRfXz1kLHRoaXMuX192aWV3c19fPVtdfWZ1bmN0aW9uIHFuKHQpe3ZhciBlPS0xLG49bnVsbD09dD8wOnQubGVuZ3RoO2Zvcih0aGlzLmNsZWFyKCk7KytlPG47KXt2YXIgaT10W2VdO3RoaXMuc2V0KGlbMF0saVsxXSl9fWZ1bmN0aW9uIFluKHQpe3ZhciBlPS0xLG49bnVsbD09dD8wOnQubGVuZ3RoO2Zvcih0aGlzLmNsZWFyKCk7KytlPG47KXt2YXIgaT10W2VdO3RoaXMuc2V0KGlbMF0saVsxXSl9fWZ1bmN0aW9uIFhuKHQpe3ZhciBlPS0xLG49bnVsbD09dD8wOnQubGVuZ3RoO2Zvcih0aGlzLmNsZWFyKCk7KytlPG47KXt2YXIgaT10W2VdO3RoaXMuc2V0KGlbMF0saVsxXSl9fWZ1bmN0aW9uICRuKHQpe3ZhciBlPS0xLG49bnVsbD09dD8wOnQubGVuZ3RoO2Zvcih0aGlzLl9fZGF0YV9fPW5ldyBYbjsrK2U8bjspdGhpcy5hZGQodFtlXSl9ZnVuY3Rpb24gS24odCl7dmFyIGU9dGhpcy5fX2RhdGFfXz1uZXcgWW4odCk7dGhpcy5zaXplPWUuc2l6ZX1mdW5jdGlvbiBabih0LGUpe3ZhciBuPW1zKHQpLGk9IW4mJmZzKHQpLHI9IW4mJiFpJiZicyh0KSxvPSFuJiYhaSYmIXImJkhzKHQpLGE9bnx8aXx8cnx8byxzPWE/WGUodC5sZW5ndGgsa3QpOltdLGw9cy5sZW5ndGg7Zm9yKHZhciBjIGluIHQpIWUmJiFPdC5jYWxsKHQsYyl8fGEmJigibGVuZ3RoIj09Y3x8ciYmKCJvZmZzZXQiPT1jfHwicGFyZW50Ij09Yyl8fG8mJigiYnVmZmVyIj09Y3x8ImJ5dGVMZW5ndGgiPT1jfHwiYnl0ZU9mZnNldCI9PWMpfHxVbyhjLGwpKXx8cy5wdXNoKGMpO3JldHVybiBzfWZ1bmN0aW9uIEpuKGUpe3ZhciBuPWUubGVuZ3RoO3JldHVybiBuP2VbX3IoMCxuLTEpXTp0fWZ1bmN0aW9uIFFuKHQsZSl7cmV0dXJuIG9hKEpyKHQpLGxpKGUsMCx0Lmxlbmd0aCkpfWZ1bmN0aW9uIHRpKHQpe3JldHVybiBvYShKcih0KSl9ZnVuY3Rpb24gZWkoZSxuLGkpeyhpIT09dCYmIWhzKGVbbl0saSl8fGk9PT10JiYhKG4gaW4gZSkpJiZhaShlLG4saSl9ZnVuY3Rpb24gbmkoZSxuLGkpe3ZhciByPWVbbl07T3QuY2FsbChlLG4pJiZocyhyLGkpJiYoaSE9PXR8fG4gaW4gZSl8fGFpKGUsbixpKX1mdW5jdGlvbiBpaSh0LGUpe2Zvcih2YXIgbj10Lmxlbmd0aDtuLS07KWlmKGhzKHRbbl1bMF0sZSkpcmV0dXJuIG47cmV0dXJuLTF9ZnVuY3Rpb24gcmkodCxlLG4saSl7cmV0dXJuIE9pKHQsKGZ1bmN0aW9uKHQscixvKXtlKGksdCxuKHQpLG8pfSkpLGl9ZnVuY3Rpb24gb2kodCxlKXtyZXR1cm4gdCYmUXIoZSxsbChlKSx0KX1mdW5jdGlvbiBhaSh0LGUsbil7Il9fcHJvdG9fXyI9PWUmJnVlP3VlKHQsZSx7Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITAsdmFsdWU6bix3cml0YWJsZTohMH0pOnRbZV09bn1mdW5jdGlvbiBzaShlLG4pe2Zvcih2YXIgaT0tMSxyPW4ubGVuZ3RoLG89d3QociksYT1udWxsPT1lOysraTxyOylvW2ldPWE/dDppbChlLG5baV0pO3JldHVybiBvfWZ1bmN0aW9uIGxpKGUsbixpKXtyZXR1cm4gZT09ZSYmKGkhPT10JiYoZT1lPD1pP2U6aSksbiE9PXQmJihlPWU+PW4/ZTpuKSksZX1mdW5jdGlvbiBjaShlLG4saSxyLG8sYSl7dmFyIHMsbD0xJm4sYz0yJm4sdT00Jm47aWYoaSYmKHM9bz9pKGUscixvLGEpOmkoZSkpLHMhPT10KXJldHVybiBzO2lmKCFDcyhlKSlyZXR1cm4gZTt2YXIgaD1tcyhlKTtpZihoKXtpZihzPShmdW5jdGlvbiBkKHQpe3ZhciBlPXQubGVuZ3RoLG49bmV3IHQuY29uc3RydWN0b3IoZSk7cmV0dXJuIGUmJiJzdHJpbmciPT10eXBlb2YgdFswXSYmT3QuY2FsbCh0LCJpbmRleCIpJiYobi5pbmRleD10LmluZGV4LG4uaW5wdXQ9dC5pbnB1dCksbn0pKGUpLCFsKXJldHVybiBKcihlLHMpfWVsc2V7dmFyIHA9Qm8oZSksbT1wPT12fHxwPT1iO2lmKGJzKGUpKXJldHVybiBxcihlLGwpO2lmKHA9PVN8fHA9PWZ8fG0mJiFvKXtpZihzPWN8fG0/e306Rm8oZSksIWwpcmV0dXJuIGM/KGZ1bmN0aW9uIE0odCxlKXtyZXR1cm4gUXIodCxEbyh0KSxlKX0pKGUsKGZ1bmN0aW9uIHkodCxlKXtyZXR1cm4gdCYmUXIoZSxjbChlKSx0KX0pKHMsZSkpOihmdW5jdGlvbiBrKHQsZSl7cmV0dXJuIFFyKHQsem8odCksZSl9KShlLG9pKHMsZSkpfWVsc2V7aWYoIWllW3BdKXJldHVybiBvP2U6e307cz0oZnVuY3Rpb24gVih0LGUsbil7dmFyIGk9dC5jb25zdHJ1Y3Rvcjtzd2l0Y2goZSl7Y2FzZSBMOnJldHVybiBZcih0KTtjYXNlIGc6Y2FzZSBfOnJldHVybiBuZXcgaSgrdCk7Y2FzZSBQOnJldHVybihmdW5jdGlvbiByKHQsZSl7dmFyIG49ZT9Zcih0LmJ1ZmZlcik6dC5idWZmZXI7cmV0dXJuIG5ldyB0LmNvbnN0cnVjdG9yKG4sdC5ieXRlT2Zmc2V0LHQuYnl0ZUxlbmd0aCl9KSh0LG4pO2Nhc2UgTjpjYXNlIEk6Y2FzZSBSOmNhc2UgTzpjYXNlIHo6Y2FzZSBEOmNhc2UgQjpjYXNlIEg6Y2FzZSBGOnJldHVybiBYcih0LG4pO2Nhc2UgeDpyZXR1cm4gbmV3IGk7Y2FzZSB3OmNhc2UgQzpyZXR1cm4gbmV3IGkodCk7Y2FzZSBFOnJldHVybihmdW5jdGlvbiBvKHQpe3ZhciBlPW5ldyB0LmNvbnN0cnVjdG9yKHQuc291cmNlLGh0LmV4ZWModCkpO3JldHVybiBlLmxhc3RJbmRleD10Lmxhc3RJbmRleCxlfSkodCk7Y2FzZSBUOnJldHVybiBuZXcgaTtjYXNlIEE6cmV0dXJuKGZ1bmN0aW9uIGEodCl7cmV0dXJuIEhuP0N0KEhuLmNhbGwodCkpOnt9fSkodCl9fSkoZSxwLGwpfX1hfHwoYT1uZXcgS24pO3ZhciBVPWEuZ2V0KGUpO2lmKFUpcmV0dXJuIFU7YS5zZXQoZSxzKSxPcyhlKT9lLmZvckVhY2goKGZ1bmN0aW9uKHQpe3MuYWRkKGNpKHQsbixpLHQsZSxhKSl9KSk6a3MoZSkmJmUuZm9yRWFjaCgoZnVuY3Rpb24odCxyKXtzLnNldChyLGNpKHQsbixpLHIsZSxhKSl9KSk7dmFyIGo9aD90Oih1P2M/QW86Q286Yz9jbDpsbCkoZSk7cmV0dXJuIE1lKGp8fGUsKGZ1bmN0aW9uKHQscil7aiYmKHQ9ZVtyPXRdKSxuaShzLHIsY2kodCxuLGkscixlLGEpKX0pKSxzfWZ1bmN0aW9uIHVpKGUsbixpKXt2YXIgcj1pLmxlbmd0aDtpZihudWxsPT1lKXJldHVybiFyO2ZvcihlPUN0KGUpO3ItLTspe3ZhciBvPWlbcl0sYT1lW29dO2lmKGE9PT10JiYhKG8gaW4gZSl8fCEoMCxuW29dKShhKSlyZXR1cm4hMX1yZXR1cm4hMH1mdW5jdGlvbiBoaShuLGkscil7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIG4pdGhyb3cgbmV3IEx0KGUpO3JldHVybiBlYSgoZnVuY3Rpb24oKXtuLmFwcGx5KHQscil9KSxpKX1mdW5jdGlvbiBkaSh0LGUsbixpKXt2YXIgcj0tMSxvPUxlLGE9ITAscz10Lmxlbmd0aCxsPVtdLGM9ZS5sZW5ndGg7aWYoIXMpcmV0dXJuIGw7biYmKGU9TmUoZSxLZShuKSkpLGk/KG89UGUsYT0hMSk6ZS5sZW5ndGg+PTIwMCYmKG89SmUsYT0hMSxlPW5ldyAkbihlKSk7dDpmb3IoOysrcjxzOyl7dmFyIHU9dFtyXSxoPW51bGw9PW4/dTpuKHUpO2lmKHU9aXx8MCE9PXU/dTowLGEmJmg9PWgpe2Zvcih2YXIgZD1jO2QtLTspaWYoZVtkXT09PWgpY29udGludWUgdDtsLnB1c2godSl9ZWxzZSBvKGUsaCxpKXx8bC5wdXNoKHUpfXJldHVybiBsfVZuLnRlbXBsYXRlU2V0dGluZ3M9e2VzY2FwZTpYLGV2YWx1YXRlOiQsaW50ZXJwb2xhdGU6Syx2YXJpYWJsZToiIixpbXBvcnRzOntfOlZufX0sKFZuLnByb3RvdHlwZT1qbi5wcm90b3R5cGUpLmNvbnN0cnVjdG9yPVZuLChHbi5wcm90b3R5cGU9VW4oam4ucHJvdG90eXBlKSkuY29uc3RydWN0b3I9R24sKFduLnByb3RvdHlwZT1Vbihqbi5wcm90b3R5cGUpKS5jb25zdHJ1Y3Rvcj1Xbixxbi5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24gcGkoKXt0aGlzLl9fZGF0YV9fPUxuP0xuKG51bGwpOnt9LHRoaXMuc2l6ZT0wfSxxbi5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uIGZpKHQpe3ZhciBlPXRoaXMuaGFzKHQpJiZkZWxldGUgdGhpcy5fX2RhdGFfX1t0XTtyZXR1cm4gdGhpcy5zaXplLT1lPzE6MCxlfSxxbi5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uIG1pKGUpe3ZhciBpPXRoaXMuX19kYXRhX187aWYoTG4pe3ZhciByPWlbZV07cmV0dXJuIHI9PT1uP3Q6cn1yZXR1cm4gT3QuY2FsbChpLGUpP2lbZV06dH0scW4ucHJvdG90eXBlLmhhcz1mdW5jdGlvbiBnaShlKXt2YXIgbj10aGlzLl9fZGF0YV9fO3JldHVybiBMbj9uW2VdIT09dDpPdC5jYWxsKG4sZSl9LHFuLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24gX2koZSxpKXt2YXIgcj10aGlzLl9fZGF0YV9fO3JldHVybiB0aGlzLnNpemUrPXRoaXMuaGFzKGUpPzA6MSxyW2VdPUxuJiZpPT09dD9uOmksdGhpc30sWW4ucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uIHlpKCl7dGhpcy5fX2RhdGFfXz1bXSx0aGlzLnNpemU9MH0sWW4ucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbiB2aSh0KXt2YXIgZT10aGlzLl9fZGF0YV9fLG49aWkoZSx0KTtyZXR1cm4hKG48MHx8KG49PWUubGVuZ3RoLTE/ZS5wb3AoKTpKdC5jYWxsKGUsbiwxKSwtLXRoaXMuc2l6ZSwwKSl9LFluLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24gYmkoZSl7dmFyIG49dGhpcy5fX2RhdGFfXyxpPWlpKG4sZSk7cmV0dXJuIGk8MD90Om5baV1bMV19LFluLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24geGkodCl7cmV0dXJuIGlpKHRoaXMuX19kYXRhX18sdCk+LTF9LFluLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24gd2kodCxlKXt2YXIgbj10aGlzLl9fZGF0YV9fLGk9aWkobix0KTtyZXR1cm4gaTwwPygrK3RoaXMuc2l6ZSxuLnB1c2goW3QsZV0pKTpuW2ldWzFdPWUsdGhpc30sWG4ucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uIFNpKCl7dGhpcy5zaXplPTAsdGhpcy5fX2RhdGFfXz17aGFzaDpuZXcgcW4sbWFwOm5ldyhUbnx8WW4pLHN0cmluZzpuZXcgcW59fSxYbi5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uIE1pKHQpe3ZhciBlPUlvKHRoaXMsdCkuZGVsZXRlKHQpO3JldHVybiB0aGlzLnNpemUtPWU/MTowLGV9LFhuLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24gRWkodCl7cmV0dXJuIElvKHRoaXMsdCkuZ2V0KHQpfSxYbi5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uIFRpKHQpe3JldHVybiBJbyh0aGlzLHQpLmhhcyh0KX0sWG4ucHJvdG90eXBlLnNldD1mdW5jdGlvbiBDaSh0LGUpe3ZhciBuPUlvKHRoaXMsdCksaT1uLnNpemU7cmV0dXJuIG4uc2V0KHQsZSksdGhpcy5zaXplKz1uLnNpemU9PWk/MDoxLHRoaXN9LCRuLnByb3RvdHlwZS5hZGQ9JG4ucHJvdG90eXBlLnB1c2g9ZnVuY3Rpb24gQWkodCl7cmV0dXJuIHRoaXMuX19kYXRhX18uc2V0KHQsbiksdGhpc30sJG4ucHJvdG90eXBlLmhhcz1mdW5jdGlvbiBraSh0KXtyZXR1cm4gdGhpcy5fX2RhdGFfXy5oYXModCl9LEtuLnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbiBMaSgpe3RoaXMuX19kYXRhX189bmV3IFluLHRoaXMuc2l6ZT0wfSxLbi5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uIFBpKHQpe3ZhciBlPXRoaXMuX19kYXRhX18sbj1lLmRlbGV0ZSh0KTtyZXR1cm4gdGhpcy5zaXplPWUuc2l6ZSxufSxLbi5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uIE5pKHQpe3JldHVybiB0aGlzLl9fZGF0YV9fLmdldCh0KX0sS24ucHJvdG90eXBlLmhhcz1mdW5jdGlvbiBJaSh0KXtyZXR1cm4gdGhpcy5fX2RhdGFfXy5oYXModCl9LEtuLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24gUmkodCxlKXt2YXIgbj10aGlzLl9fZGF0YV9fO2lmKG4gaW5zdGFuY2VvZiBZbil7dmFyIGk9bi5fX2RhdGFfXztpZighVG58fGkubGVuZ3RoPDE5OSlyZXR1cm4gaS5wdXNoKFt0LGVdKSx0aGlzLnNpemU9KytuLnNpemUsdGhpcztuPXRoaXMuX19kYXRhX189bmV3IFhuKGkpfXJldHVybiBuLnNldCh0LGUpLHRoaXMuc2l6ZT1uLnNpemUsdGhpc307dmFyIE9pPW5vKGppKSx6aT1ubyhHaSwhMCk7ZnVuY3Rpb24gRGkodCxlKXt2YXIgbj0hMDtyZXR1cm4gT2kodCwoZnVuY3Rpb24odCxpLHIpe3JldHVybiBuPSEhZSh0LGkscil9KSksbn1mdW5jdGlvbiBCaShlLG4saSl7Zm9yKHZhciByPS0xLG89ZS5sZW5ndGg7KytyPG87KXt2YXIgYT1lW3JdLHM9bihhKTtpZihudWxsIT1zJiYobD09PXQ/cz09cyYmIUJzKHMpOmkocyxsKSkpdmFyIGw9cyxjPWF9cmV0dXJuIGN9ZnVuY3Rpb24gSGkodCxlKXt2YXIgbj1bXTtyZXR1cm4gT2kodCwoZnVuY3Rpb24odCxpLHIpe2UodCxpLHIpJiZuLnB1c2godCl9KSksbn1mdW5jdGlvbiBGaSh0LGUsbixpLHIpe3ZhciBvPS0xLGE9dC5sZW5ndGg7Zm9yKG58fChuPVZvKSxyfHwocj1bXSk7KytvPGE7KXt2YXIgcz10W29dO2U+MCYmbihzKT9lPjE/RmkocyxlLTEsbixpLHIpOkllKHIscyk6aXx8KHJbci5sZW5ndGhdPXMpfXJldHVybiByfXZhciBWaT1pbygpLFVpPWlvKCEwKTtmdW5jdGlvbiBqaSh0LGUpe3JldHVybiB0JiZWaSh0LGUsbGwpfWZ1bmN0aW9uIEdpKHQsZSl7cmV0dXJuIHQmJlVpKHQsZSxsbCl9ZnVuY3Rpb24gV2kodCxlKXtyZXR1cm4ga2UoZSwoZnVuY3Rpb24oZSl7cmV0dXJuIE1zKHRbZV0pfSkpfWZ1bmN0aW9uIHFpKGUsbil7Zm9yKHZhciBpPTAscj0obj1VcihuLGUpKS5sZW5ndGg7bnVsbCE9ZSYmaTxyOyllPWVbbGEobltpKytdKV07cmV0dXJuIGkmJmk9PXI/ZTp0fWZ1bmN0aW9uIFlpKHQsZSxuKXt2YXIgaT1lKHQpO3JldHVybiBtcyh0KT9pOkllKGksbih0KSl9ZnVuY3Rpb24gWGkoZSl7cmV0dXJuIG51bGw9PWU/ZT09PXQ/IltvYmplY3QgVW5kZWZpbmVkXSI6IltvYmplY3QgTnVsbF0iOmxlJiZsZSBpbiBDdChlKT8oZnVuY3Rpb24gbihlKXt2YXIgbj1PdC5jYWxsKGUsbGUpLGk9ZVtsZV07dHJ5e2VbbGVdPXQ7dmFyIHI9ITB9Y2F0Y2godCl7fXZhciBvPUJ0LmNhbGwoZSk7cmV0dXJuIHImJihuP2VbbGVdPWk6ZGVsZXRlIGVbbGVdKSxvfSkoZSk6KGZ1bmN0aW9uIGkodCl7cmV0dXJuIEJ0LmNhbGwodCl9KShlKX1mdW5jdGlvbiAkaSh0LGUpe3JldHVybiB0PmV9ZnVuY3Rpb24gS2kodCxlKXtyZXR1cm4gbnVsbCE9dCYmT3QuY2FsbCh0LGUpfWZ1bmN0aW9uIFppKHQsZSl7cmV0dXJuIG51bGwhPXQmJmUgaW4gQ3QodCl9ZnVuY3Rpb24gSmkoZSxuLGkpe2Zvcih2YXIgcj1pP1BlOkxlLG89ZVswXS5sZW5ndGgsYT1lLmxlbmd0aCxzPWEsbD13dChhKSxjPTEvMCx1PVtdO3MtLTspe3ZhciBoPWVbc107cyYmbiYmKGg9TmUoaCxLZShuKSkpLGM9Ym4oaC5sZW5ndGgsYyksbFtzXT0haSYmKG58fG8+PTEyMCYmaC5sZW5ndGg+PTEyMCk/bmV3ICRuKHMmJmgpOnR9aD1lWzBdO3ZhciBkPS0xLHA9bFswXTt0OmZvcig7KytkPG8mJnUubGVuZ3RoPGM7KXt2YXIgZj1oW2RdLG09bj9uKGYpOmY7aWYoZj1pfHwwIT09Zj9mOjAsIShwP0plKHAsbSk6cih1LG0saSkpKXtmb3Iocz1hOy0tczspe3ZhciBnPWxbc107aWYoIShnP0plKGcsbSk6cihlW3NdLG0saSkpKWNvbnRpbnVlIHR9cCYmcC5wdXNoKG0pLHUucHVzaChmKX19cmV0dXJuIHV9ZnVuY3Rpb24gUWkoZSxuLGkpe3ZhciByPW51bGw9PShlPVpvKGUsbj1VcihuLGUpKSk/ZTplW2xhKHhhKG4pKV07cmV0dXJuIG51bGw9PXI/dDp4ZShyLGUsaSl9ZnVuY3Rpb24gdHIodCl7cmV0dXJuIEFzKHQpJiZYaSh0KT09Zn1mdW5jdGlvbiBlcihlLG4saSxyLG8pe3JldHVybiBlPT09bnx8KG51bGw9PWV8fG51bGw9PW58fCFBcyhlKSYmIUFzKG4pP2UhPWUmJm4hPW46KGZ1bmN0aW9uIGEoZSxuLGkscixvLHMpe3ZhciBsPW1zKGUpLGM9bXMobiksdT1sP206Qm8oZSksaD1jP206Qm8obiksZD0odT11PT1mP1M6dSk9PVMscD0oaD1oPT1mP1M6aCk9PVMsdj11PT1oO2lmKHYmJmJzKGUpKXtpZighYnMobikpcmV0dXJuITE7bD0hMCxkPSExfWlmKHYmJiFkKXJldHVybiBzfHwocz1uZXcgS24pLGx8fEhzKGUpP0VvKGUsbixpLHIsbyxzKTooZnVuY3Rpb24gYih0LGUsbixpLHIsbyxhKXtzd2l0Y2gobil7Y2FzZSBQOmlmKHQuYnl0ZUxlbmd0aCE9ZS5ieXRlTGVuZ3RofHx0LmJ5dGVPZmZzZXQhPWUuYnl0ZU9mZnNldClyZXR1cm4hMTt0PXQuYnVmZmVyLGU9ZS5idWZmZXI7Y2FzZSBMOnJldHVybiEodC5ieXRlTGVuZ3RoIT1lLmJ5dGVMZW5ndGh8fCFvKG5ldyBHdCh0KSxuZXcgR3QoZSkpKTtjYXNlIGc6Y2FzZSBfOmNhc2UgdzpyZXR1cm4gaHMoK3QsK2UpO2Nhc2UgeTpyZXR1cm4gdC5uYW1lPT1lLm5hbWUmJnQubWVzc2FnZT09ZS5tZXNzYWdlO2Nhc2UgRTpjYXNlIEM6cmV0dXJuIHQ9PWUrIiI7Y2FzZSB4OnZhciBzPXNuO2Nhc2UgVDppZihzfHwocz11biksdC5zaXplIT1lLnNpemUmJiEoMSZpKSlyZXR1cm4hMTt2YXIgbD1hLmdldCh0KTtpZihsKXJldHVybiBsPT1lO2l8PTIsYS5zZXQodCxlKTt2YXIgYz1FbyhzKHQpLHMoZSksaSxyLG8sYSk7cmV0dXJuIGEuZGVsZXRlKHQpLGM7Y2FzZSBBOmlmKEhuKXJldHVybiBIbi5jYWxsKHQpPT1Ibi5jYWxsKGUpfXJldHVybiExfSkoZSxuLHUsaSxyLG8scyk7aWYoISgxJmkpKXt2YXIgTT1kJiZPdC5jYWxsKGUsIl9fd3JhcHBlZF9fIiksaz1wJiZPdC5jYWxsKG4sIl9fd3JhcHBlZF9fIik7aWYoTXx8ayl7dmFyIE49TT9lLnZhbHVlKCk6ZSxJPWs/bi52YWx1ZSgpOm47cmV0dXJuIHN8fChzPW5ldyBLbiksbyhOLEksaSxyLHMpfX1yZXR1cm4hIXYmJihzfHwocz1uZXcgS24pLChmdW5jdGlvbiBSKGUsbixpLHIsbyxhKXt2YXIgcz0xJmksbD1DbyhlKSxjPWwubGVuZ3RoLHU9Q28obik7aWYoYyE9dS5sZW5ndGgmJiFzKXJldHVybiExO2Zvcih2YXIgaD1jO2gtLTspe3ZhciBkPWxbaF07aWYoIShzP2QgaW4gbjpPdC5jYWxsKG4sZCkpKXJldHVybiExfXZhciBwPWEuZ2V0KGUpLGY9YS5nZXQobik7aWYocCYmZilyZXR1cm4gcD09biYmZj09ZTt2YXIgbT0hMDthLnNldChlLG4pLGEuc2V0KG4sZSk7Zm9yKHZhciBnPXM7KytoPGM7KXt2YXIgXz1lW2Q9bFtoXV0seT1uW2RdO2lmKHIpdmFyIHY9cz9yKHksXyxkLG4sZSxhKTpyKF8seSxkLGUsbixhKTtpZighKHY9PT10P189PT15fHxvKF8seSxpLHIsYSk6dikpe209ITE7YnJlYWt9Z3x8KGc9ImNvbnN0cnVjdG9yIj09ZCl9aWYobSYmIWcpe3ZhciBiPWUuY29uc3RydWN0b3IseD1uLmNvbnN0cnVjdG9yO2I9PXh8fCEoImNvbnN0cnVjdG9yImluIGUpfHwhKCJjb25zdHJ1Y3RvciJpbiBuKXx8ImZ1bmN0aW9uIj09dHlwZW9mIGImJmIgaW5zdGFuY2VvZiBiJiYiZnVuY3Rpb24iPT10eXBlb2YgeCYmeCBpbnN0YW5jZW9mIHh8fChtPSExKX1yZXR1cm4gYS5kZWxldGUoZSksYS5kZWxldGUobiksbX0pKGUsbixpLHIsbyxzKSl9KShlLG4saSxyLGVyLG8pKX1mdW5jdGlvbiBucihlLG4saSxyKXt2YXIgbz1pLmxlbmd0aCxhPW8scz0hcjtpZihudWxsPT1lKXJldHVybiFhO2ZvcihlPUN0KGUpO28tLTspe3ZhciBsPWlbb107aWYocyYmbFsyXT9sWzFdIT09ZVtsWzBdXTohKGxbMF1pbiBlKSlyZXR1cm4hMX1mb3IoOysrbzxhOyl7dmFyIGM9KGw9aVtvXSlbMF0sdT1lW2NdLGg9bFsxXTtpZihzJiZsWzJdKXtpZih1PT09dCYmIShjIGluIGUpKXJldHVybiExfWVsc2V7dmFyIGQ9bmV3IEtuO2lmKHIpdmFyIHA9cih1LGgsYyxlLG4sZCk7aWYoIShwPT09dD9lcihoLHUsMyxyLGQpOnApKXJldHVybiExfX1yZXR1cm4hMH1mdW5jdGlvbiBpcih0KXtyZXR1cm4hKCFDcyh0KXx8KGZ1bmN0aW9uIGUodCl7cmV0dXJuISFEdCYmRHQgaW4gdH0pKHQpKSYmKE1zKHQpP1Z0OmZ0KS50ZXN0KGNhKHQpKX1mdW5jdGlvbiBycih0KXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdD90Om51bGw9PXQ/Umw6Im9iamVjdCI9PXR5cGVvZiB0P21zKHQpP3VyKHRbMF0sdFsxXSk6Y3IodCk6amwodCl9ZnVuY3Rpb24gb3IodCl7aWYoIVlvKHQpKXJldHVybiB5bih0KTt2YXIgZT1bXTtmb3IodmFyIG4gaW4gQ3QodCkpT3QuY2FsbCh0LG4pJiYiY29uc3RydWN0b3IiIT1uJiZlLnB1c2gobik7cmV0dXJuIGV9ZnVuY3Rpb24gYXIodCl7aWYoIUNzKHQpKXJldHVybihmdW5jdGlvbiBlKHQpe3ZhciBlPVtdO2lmKG51bGwhPXQpZm9yKHZhciBuIGluIEN0KHQpKWUucHVzaChuKTtyZXR1cm4gZX0pKHQpO3ZhciBuPVlvKHQpLGk9W107Zm9yKHZhciByIGluIHQpKCJjb25zdHJ1Y3RvciIhPXJ8fCFuJiZPdC5jYWxsKHQscikpJiZpLnB1c2gocik7cmV0dXJuIGl9ZnVuY3Rpb24gc3IodCxlKXtyZXR1cm4gdDxlfWZ1bmN0aW9uIGxyKHQsZSl7dmFyIG49LTEsaT15cyh0KT93dCh0Lmxlbmd0aCk6W107cmV0dXJuIE9pKHQsKGZ1bmN0aW9uKHQscixvKXtpWysrbl09ZSh0LHIsbyl9KSksaX1mdW5jdGlvbiBjcih0KXt2YXIgZT1Sbyh0KTtyZXR1cm4gMT09ZS5sZW5ndGgmJmVbMF1bMl0/JG8oZVswXVswXSxlWzBdWzFdKTpmdW5jdGlvbihuKXtyZXR1cm4gbj09PXR8fG5yKG4sdCxlKX19ZnVuY3Rpb24gdXIoZSxuKXtyZXR1cm4gR28oZSkmJlhvKG4pPyRvKGxhKGUpLG4pOmZ1bmN0aW9uKGkpe3ZhciByPWlsKGksZSk7cmV0dXJuIHI9PT10JiZyPT09bj9ybChpLGUpOmVyKG4sciwzKX19ZnVuY3Rpb24gaHIoZSxuLGkscixvKXtlIT09biYmVmkobiwoZnVuY3Rpb24oYSxzKXtpZihvfHwobz1uZXcgS24pLENzKGEpKSEoZnVuY3Rpb24gbChlLG4saSxyLG8sYSxzKXt2YXIgbD1RbyhlLGkpLGM9UW8obixpKSx1PXMuZ2V0KGMpO2lmKHUpZWkoZSxpLHUpO2Vsc2V7dmFyIGg9YT9hKGwsYyxpKyIiLGUsbixzKTp0LGQ9aD09PXQ7aWYoZCl7dmFyIHA9bXMoYyksZj0hcCYmYnMoYyksbT0hcCYmIWYmJkhzKGMpO2g9YyxwfHxmfHxtP21zKGwpP2g9bDp2cyhsKT9oPUpyKGwpOmY/KGQ9ITEsaD1xcihjLCEwKSk6bT8oZD0hMSxoPVhyKGMsITApKTpoPVtdOk5zKGMpfHxmcyhjKT8oaD1sLGZzKGwpP2g9WHMobCk6Q3MobCkmJiFNcyhsKXx8KGg9Rm8oYykpKTpkPSExfWQmJihzLnNldChjLGgpLG8oaCxjLHIsYSxzKSxzLmRlbGV0ZShjKSksZWkoZSxpLGgpfX0pKGUsbixzLGksaHIscixvKTtlbHNle3ZhciBjPXI/cihRbyhlLHMpLGEscysiIixlLG4sbyk6dDtjPT09dCYmKGM9YSksZWkoZSxzLGMpfX0pLGNsKX1mdW5jdGlvbiBkcihlLG4pe3ZhciBpPWUubGVuZ3RoO2lmKGkpcmV0dXJuIFVvKG4rPW48MD9pOjAsaSk/ZVtuXTp0fWZ1bmN0aW9uIHByKHQsZSxuKXtlPWUubGVuZ3RoP05lKGUsKGZ1bmN0aW9uKHQpe3JldHVybiBtcyh0KT9mdW5jdGlvbihlKXtyZXR1cm4gcWkoZSwxPT09dC5sZW5ndGg/dFswXTp0KX06dH0pKTpbUmxdO3ZhciBpPS0xO3JldHVybiBlPU5lKGUsS2UoTm8oKSkpLChmdW5jdGlvbiByKHQsZSl7dmFyIG49dC5sZW5ndGg7Zm9yKHQuc29ydChlKTtuLS07KXRbbl09dFtuXS52YWx1ZTtyZXR1cm4gdH0pKGxyKHQsKGZ1bmN0aW9uKHQsbixyKXtyZXR1cm57Y3JpdGVyaWE6TmUoZSwoZnVuY3Rpb24oZSl7cmV0dXJuIGUodCl9KSksaW5kZXg6KytpLHZhbHVlOnR9fSkpLChmdW5jdGlvbih0LGUpe3JldHVybihmdW5jdGlvbiBpKHQsZSxuKXtmb3IodmFyIGk9LTEscj10LmNyaXRlcmlhLG89ZS5jcml0ZXJpYSxhPXIubGVuZ3RoLHM9bi5sZW5ndGg7KytpPGE7KXt2YXIgbD0kcihyW2ldLG9baV0pO2lmKGwpcmV0dXJuIGk+PXM/bDpsKigiZGVzYyI9PW5baV0/LTE6MSl9cmV0dXJuIHQuaW5kZXgtZS5pbmRleH0pKHQsZSxuKX0pKX1mdW5jdGlvbiBmcih0LGUsbil7Zm9yKHZhciBpPS0xLHI9ZS5sZW5ndGgsbz17fTsrK2k8cjspe3ZhciBhPWVbaV0scz1xaSh0LGEpO24ocyxhKSYmd3IobyxVcihhLHQpLHMpfXJldHVybiBvfWZ1bmN0aW9uIG1yKHQsZSxuLGkpe3ZhciByPWk/VmU6RmUsbz0tMSxhPWUubGVuZ3RoLHM9dDtmb3IodD09PWUmJihlPUpyKGUpKSxuJiYocz1OZSh0LEtlKG4pKSk7KytvPGE7KWZvcih2YXIgbD0wLGM9ZVtvXSx1PW4/bihjKTpjOyhsPXIocyx1LGwsaSkpPi0xOylzIT09dCYmSnQuY2FsbChzLGwsMSksSnQuY2FsbCh0LGwsMSk7cmV0dXJuIHR9ZnVuY3Rpb24gZ3IodCxlKXtmb3IodmFyIG49dD9lLmxlbmd0aDowLGk9bi0xO24tLTspe3ZhciByPWVbbl07aWYobj09aXx8ciE9PW8pe3ZhciBvPXI7VW8ocik/SnQuY2FsbCh0LHIsMSk6UnIodCxyKX19cmV0dXJuIHR9ZnVuY3Rpb24gX3IodCxlKXtyZXR1cm4gdCtFZShTbigpKihlLXQrMSkpfWZ1bmN0aW9uIHlyKHQsZSl7dmFyIG49IiI7aWYoIXR8fGU8MXx8ZT51KXJldHVybiBuO2Rve2UlMiYmKG4rPXQpLChlPUVlKGUvMikpJiYodCs9dCl9d2hpbGUoZSk7cmV0dXJuIG59ZnVuY3Rpb24gdnIodCxlKXtyZXR1cm4gbmEoS28odCxlLFJsKSx0KyIiKX1mdW5jdGlvbiBicih0KXtyZXR1cm4gSm4oX2wodCkpfWZ1bmN0aW9uIHhyKHQsZSl7dmFyIG49X2wodCk7cmV0dXJuIG9hKG4sbGkoZSwwLG4ubGVuZ3RoKSl9ZnVuY3Rpb24gd3IoZSxuLGkscil7aWYoIUNzKGUpKXJldHVybiBlO2Zvcih2YXIgbz0tMSxhPShuPVVyKG4sZSkpLmxlbmd0aCxzPWEtMSxsPWU7bnVsbCE9bCYmKytvPGE7KXt2YXIgYz1sYShuW29dKSx1PWk7aWYoIl9fcHJvdG9fXyI9PT1jfHwiY29uc3RydWN0b3IiPT09Y3x8InByb3RvdHlwZSI9PT1jKXJldHVybiBlO2lmKG8hPXMpe3ZhciBoPWxbY107KHU9cj9yKGgsYyxsKTp0KT09PXQmJih1PUNzKGgpP2g6VW8obltvKzFdKT9bXTp7fSl9bmkobCxjLHUpLGw9bFtjXX1yZXR1cm4gZX12YXIgU3I9UG4/ZnVuY3Rpb24odCxlKXtyZXR1cm4gUG4uc2V0KHQsZSksdH06UmwsTXI9dWU/ZnVuY3Rpb24odCxlKXtyZXR1cm4gdWUodCwidG9TdHJpbmciLHtjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMSx2YWx1ZTpQbChlKSx3cml0YWJsZTohMH0pfTpSbDtmdW5jdGlvbiBFcih0KXtyZXR1cm4gb2EoX2wodCkpfWZ1bmN0aW9uIFRyKHQsZSxuKXt2YXIgaT0tMSxyPXQubGVuZ3RoO2U8MCYmKGU9LWU+cj8wOnIrZSksKG49bj5yP3I6bik8MCYmKG4rPXIpLHI9ZT5uPzA6bi1lPj4+MCxlPj4+PTA7Zm9yKHZhciBvPXd0KHIpOysraTxyOylvW2ldPXRbaStlXTtyZXR1cm4gb31mdW5jdGlvbiBDcih0LGUpe3ZhciBuO3JldHVybiBPaSh0LChmdW5jdGlvbih0LGkscil7cmV0dXJuIShuPWUodCxpLHIpKX0pKSwhIW59ZnVuY3Rpb24gQXIodCxlLG4pe3ZhciBpPTAscj1udWxsPT10P2k6dC5sZW5ndGg7aWYoIm51bWJlciI9PXR5cGVvZiBlJiZlPT1lJiZyPD0yMTQ3NDgzNjQ3KXtmb3IoO2k8cjspe3ZhciBvPWkrcj4+PjEsYT10W29dO251bGwhPT1hJiYhQnMoYSkmJihuP2E8PWU6YTxlKT9pPW8rMTpyPW99cmV0dXJuIHJ9cmV0dXJuIGtyKHQsZSxSbCxuKX1mdW5jdGlvbiBrcihlLG4saSxyKXt2YXIgbz0wLGE9bnVsbD09ZT8wOmUubGVuZ3RoO2lmKDA9PT1hKXJldHVybiAwO2Zvcih2YXIgcz0obj1pKG4pKSE9bixsPW51bGw9PT1uLGM9QnMobiksdT1uPT09dDtvPGE7KXt2YXIgaD1FZSgobythKS8yKSxkPWkoZVtoXSkscD1kIT09dCxmPW51bGw9PT1kLG09ZD09ZCxnPUJzKGQpO2lmKHMpdmFyIF89cnx8bTtlbHNlIF89dT9tJiYocnx8cCk6bD9tJiZwJiYocnx8IWYpOmM/bSYmcCYmIWYmJihyfHwhZyk6IWYmJiFnJiYocj9kPD1uOmQ8bik7Xz9vPWgrMTphPWh9cmV0dXJuIGJuKGEsNDI5NDk2NzI5NCl9ZnVuY3Rpb24gTHIodCxlKXtmb3IodmFyIG49LTEsaT10Lmxlbmd0aCxyPTAsbz1bXTsrK248aTspe3ZhciBhPXRbbl0scz1lP2UoYSk6YTtpZighbnx8IWhzKHMsbCkpe3ZhciBsPXM7b1tyKytdPTA9PT1hPzA6YX19cmV0dXJuIG99ZnVuY3Rpb24gUHIodCl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiB0P3Q6QnModCk/aDordH1mdW5jdGlvbiBOcih0KXtpZigic3RyaW5nIj09dHlwZW9mIHQpcmV0dXJuIHQ7aWYobXModCkpcmV0dXJuIE5lKHQsTnIpKyIiO2lmKEJzKHQpKXJldHVybiBGbj9Gbi5jYWxsKHQpOiIiO3ZhciBlPXQrIiI7cmV0dXJuIjAiPT1lJiYxL3Q9PS0xLzA/Ii0wIjplfWZ1bmN0aW9uIElyKHQsZSxuKXt2YXIgaT0tMSxyPUxlLG89dC5sZW5ndGgsYT0hMCxzPVtdLGw9cztpZihuKWE9ITEscj1QZTtlbHNlIGlmKG8+PTIwMCl7dmFyIGM9ZT9udWxsOnZvKHQpO2lmKGMpcmV0dXJuIHVuKGMpO2E9ITEscj1KZSxsPW5ldyAkbn1lbHNlIGw9ZT9bXTpzO3Q6Zm9yKDsrK2k8bzspe3ZhciB1PXRbaV0saD1lP2UodSk6dTtpZih1PW58fDAhPT11P3U6MCxhJiZoPT1oKXtmb3IodmFyIGQ9bC5sZW5ndGg7ZC0tOylpZihsW2RdPT09aCljb250aW51ZSB0O2UmJmwucHVzaChoKSxzLnB1c2godSl9ZWxzZSByKGwsaCxuKXx8KGwhPT1zJiZsLnB1c2goaCkscy5wdXNoKHUpKX1yZXR1cm4gc31mdW5jdGlvbiBScih0LGUpe3JldHVybiBudWxsPT0odD1abyh0LGU9VXIoZSx0KSkpfHxkZWxldGUgdFtsYSh4YShlKSldfWZ1bmN0aW9uIE9yKHQsZSxuLGkpe3JldHVybiB3cih0LGUsbihxaSh0LGUpKSxpKX1mdW5jdGlvbiB6cih0LGUsbixpKXtmb3IodmFyIHI9dC5sZW5ndGgsbz1pP3I6LTE7KGk/by0tOisrbzxyKSYmZSh0W29dLG8sdCk7KTtyZXR1cm4gbj9Ucih0LGk/MDpvLGk/bysxOnIpOlRyKHQsaT9vKzE6MCxpP3I6byl9ZnVuY3Rpb24gRHIodCxlKXt2YXIgbj10O3JldHVybiBuIGluc3RhbmNlb2YgV24mJihuPW4udmFsdWUoKSksUmUoZSwoZnVuY3Rpb24odCxlKXtyZXR1cm4gZS5mdW5jLmFwcGx5KGUudGhpc0FyZyxJZShbdF0sZS5hcmdzKSl9KSxuKX1mdW5jdGlvbiBCcih0LGUsbil7dmFyIGk9dC5sZW5ndGg7aWYoaTwyKXJldHVybiBpP0lyKHRbMF0pOltdO2Zvcih2YXIgcj0tMSxvPXd0KGkpOysrcjxpOylmb3IodmFyIGE9dFtyXSxzPS0xOysrczxpOylzIT1yJiYob1tyXT1kaShvW3JdfHxhLHRbc10sZSxuKSk7cmV0dXJuIElyKEZpKG8sMSksZSxuKX1mdW5jdGlvbiBIcihlLG4saSl7Zm9yKHZhciByPS0xLG89ZS5sZW5ndGgsYT1uLmxlbmd0aCxzPXt9OysrcjxvOylpKHMsZVtyXSxyPGE/bltyXTp0KTtyZXR1cm4gc31mdW5jdGlvbiBGcih0KXtyZXR1cm4gdnModCk/dDpbXX1mdW5jdGlvbiBWcih0KXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdD90OlJsfWZ1bmN0aW9uIFVyKHQsZSl7cmV0dXJuIG1zKHQpP3Q6R28odCxlKT9bdF06YWEoJHModCkpfXZhciBqcj12cjtmdW5jdGlvbiBHcihlLG4saSl7dmFyIHI9ZS5sZW5ndGg7cmV0dXJuIGk9aT09PXQ/cjppLCFuJiZpPj1yP2U6VHIoZSxuLGkpfXZhciBXcj1oZXx8ZnVuY3Rpb24odCl7cmV0dXJuIGNlLmNsZWFyVGltZW91dCh0KX07ZnVuY3Rpb24gcXIodCxlKXtpZihlKXJldHVybiB0LnNsaWNlKCk7dmFyIG49dC5sZW5ndGgsaT1XdD9XdChuKTpuZXcgdC5jb25zdHJ1Y3RvcihuKTtyZXR1cm4gdC5jb3B5KGkpLGl9ZnVuY3Rpb24gWXIodCl7dmFyIGU9bmV3IHQuY29uc3RydWN0b3IodC5ieXRlTGVuZ3RoKTtyZXR1cm4gbmV3IEd0KGUpLnNldChuZXcgR3QodCkpLGV9ZnVuY3Rpb24gWHIodCxlKXt2YXIgbj1lP1lyKHQuYnVmZmVyKTp0LmJ1ZmZlcjtyZXR1cm4gbmV3IHQuY29uc3RydWN0b3Iobix0LmJ5dGVPZmZzZXQsdC5sZW5ndGgpfWZ1bmN0aW9uICRyKGUsbil7aWYoZSE9PW4pe3ZhciBpPWUhPT10LHI9bnVsbD09PWUsbz1lPT1lLGE9QnMoZSkscz1uIT09dCxsPW51bGw9PT1uLGM9bj09bix1PUJzKG4pO2lmKCFsJiYhdSYmIWEmJmU+bnx8YSYmcyYmYyYmIWwmJiF1fHxyJiZzJiZjfHwhaSYmY3x8IW8pcmV0dXJuIDE7aWYoIXImJiFhJiYhdSYmZTxufHx1JiZpJiZvJiYhciYmIWF8fGwmJmkmJm98fCFzJiZvfHwhYylyZXR1cm4tMX1yZXR1cm4gMH1mdW5jdGlvbiBLcih0LGUsbixpKXtmb3IodmFyIHI9LTEsbz10Lmxlbmd0aCxhPW4ubGVuZ3RoLHM9LTEsbD1lLmxlbmd0aCxjPXZuKG8tYSwwKSx1PXd0KGwrYyksaD0haTsrK3M8bDspdVtzXT1lW3NdO2Zvcig7KytyPGE7KShofHxyPG8pJiYodVtuW3JdXT10W3JdKTtmb3IoO2MtLTspdVtzKytdPXRbcisrXTtyZXR1cm4gdX1mdW5jdGlvbiBacih0LGUsbixpKXtmb3IodmFyIHI9LTEsbz10Lmxlbmd0aCxhPS0xLHM9bi5sZW5ndGgsbD0tMSxjPWUubGVuZ3RoLHU9dm4oby1zLDApLGg9d3QodStjKSxkPSFpOysrcjx1OyloW3JdPXRbcl07Zm9yKHZhciBwPXI7KytsPGM7KWhbcCtsXT1lW2xdO2Zvcig7KythPHM7KShkfHxyPG8pJiYoaFtwK25bYV1dPXRbcisrXSk7cmV0dXJuIGh9ZnVuY3Rpb24gSnIodCxlKXt2YXIgbj0tMSxpPXQubGVuZ3RoO2ZvcihlfHwoZT13dChpKSk7KytuPGk7KWVbbl09dFtuXTtyZXR1cm4gZX1mdW5jdGlvbiBRcihlLG4saSxyKXt2YXIgbz0haTtpfHwoaT17fSk7Zm9yKHZhciBhPS0xLHM9bi5sZW5ndGg7KythPHM7KXt2YXIgbD1uW2FdLGM9cj9yKGlbbF0sZVtsXSxsLGksZSk6dDtjPT09dCYmKGM9ZVtsXSksbz9haShpLGwsYyk6bmkoaSxsLGMpfXJldHVybiBpfWZ1bmN0aW9uIHRvKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKG4saSl7dmFyIHI9bXMobik/d2U6cmksbz1lP2UoKTp7fTtyZXR1cm4gcihuLHQsTm8oaSwyKSxvKX19ZnVuY3Rpb24gZW8oZSl7cmV0dXJuIHZyKChmdW5jdGlvbihuLGkpe3ZhciByPS0xLG89aS5sZW5ndGgsYT1vPjE/aVtvLTFdOnQscz1vPjI/aVsyXTp0O2ZvcihhPWUubGVuZ3RoPjMmJiJmdW5jdGlvbiI9PXR5cGVvZiBhPyhvLS0sYSk6dCxzJiZqbyhpWzBdLGlbMV0scykmJihhPW88Mz90OmEsbz0xKSxuPUN0KG4pOysrcjxvOyl7dmFyIGw9aVtyXTtsJiZlKG4sbCxyLGEpfXJldHVybiBufSkpfWZ1bmN0aW9uIG5vKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKG4saSl7aWYobnVsbD09bilyZXR1cm4gbjtpZigheXMobikpcmV0dXJuIHQobixpKTtmb3IodmFyIHI9bi5sZW5ndGgsbz1lP3I6LTEsYT1DdChuKTsoZT9vLS06KytvPHIpJiYhMSE9PWkoYVtvXSxvLGEpOyk7cmV0dXJuIG59fWZ1bmN0aW9uIGlvKHQpe3JldHVybiBmdW5jdGlvbihlLG4saSl7Zm9yKHZhciByPS0xLG89Q3QoZSksYT1pKGUpLHM9YS5sZW5ndGg7cy0tOyl7dmFyIGw9YVt0P3M6KytyXTtpZighMT09PW4ob1tsXSxsLG8pKWJyZWFrfXJldHVybiBlfX1mdW5jdGlvbiBybyhlKXtyZXR1cm4gZnVuY3Rpb24obil7dmFyIGk9YW4obj0kcyhuKSk/cG4obik6dCxyPWk/aVswXTpuLmNoYXJBdCgwKSxvPWk/R3IoaSwxKS5qb2luKCIiKTpuLnNsaWNlKDEpO3JldHVybiByW2VdKCkrb319ZnVuY3Rpb24gb28odCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBSZShBbChibChlKS5yZXBsYWNlKFh0LCIiKSksdCwiIil9fWZ1bmN0aW9uIGFvKHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciBlPWFyZ3VtZW50cztzd2l0Y2goZS5sZW5ndGgpe2Nhc2UgMDpyZXR1cm4gbmV3IHQ7Y2FzZSAxOnJldHVybiBuZXcgdChlWzBdKTtjYXNlIDI6cmV0dXJuIG5ldyB0KGVbMF0sZVsxXSk7Y2FzZSAzOnJldHVybiBuZXcgdChlWzBdLGVbMV0sZVsyXSk7Y2FzZSA0OnJldHVybiBuZXcgdChlWzBdLGVbMV0sZVsyXSxlWzNdKTtjYXNlIDU6cmV0dXJuIG5ldyB0KGVbMF0sZVsxXSxlWzJdLGVbM10sZVs0XSk7Y2FzZSA2OnJldHVybiBuZXcgdChlWzBdLGVbMV0sZVsyXSxlWzNdLGVbNF0sZVs1XSk7Y2FzZSA3OnJldHVybiBuZXcgdChlWzBdLGVbMV0sZVsyXSxlWzNdLGVbNF0sZVs1XSxlWzZdKX12YXIgbj1Vbih0LnByb3RvdHlwZSksaT10LmFwcGx5KG4sZSk7cmV0dXJuIENzKGkpP2k6bn19ZnVuY3Rpb24gc28oZSl7cmV0dXJuIGZ1bmN0aW9uKG4saSxyKXt2YXIgbz1DdChuKTtpZigheXMobikpe3ZhciBhPU5vKGksMyk7bj1sbChuKSxpPWZ1bmN0aW9uKHQpe3JldHVybiBhKG9bdF0sdCxvKX19dmFyIHM9ZShuLGkscik7cmV0dXJuIHM+LTE/b1thP25bc106c106dH19ZnVuY3Rpb24gbG8obil7cmV0dXJuIFRvKChmdW5jdGlvbihpKXt2YXIgcj1pLmxlbmd0aCxvPXIsYT1Hbi5wcm90b3R5cGUudGhydTtmb3IobiYmaS5yZXZlcnNlKCk7by0tOyl7dmFyIHM9aVtvXTtpZigiZnVuY3Rpb24iIT10eXBlb2Ygcyl0aHJvdyBuZXcgTHQoZSk7aWYoYSYmIWwmJiJ3cmFwcGVyIj09TG8ocykpdmFyIGw9bmV3IEduKFtdLCEwKX1mb3Iobz1sP286cjsrK288cjspe3ZhciBjPUxvKHM9aVtvXSksdT0id3JhcHBlciI9PWM/a28ocyk6dDtsPXUmJldvKHVbMF0pJiY0MjQ9PXVbMV0mJiF1WzRdLmxlbmd0aCYmMT09dVs5XT9sW0xvKHVbMF0pXS5hcHBseShsLHVbM10pOjE9PXMubGVuZ3RoJiZXbyhzKT9sW2NdKCk6bC50aHJ1KHMpfXJldHVybiBmdW5jdGlvbigpe3ZhciB0PWFyZ3VtZW50cyxlPXRbMF07aWYobCYmMT09dC5sZW5ndGgmJm1zKGUpKXJldHVybiBsLnBsYW50KGUpLnZhbHVlKCk7Zm9yKHZhciBuPTAsbz1yP2lbbl0uYXBwbHkodGhpcyx0KTplOysrbjxyOylvPWlbbl0uY2FsbCh0aGlzLG8pO3JldHVybiBvfX0pKX1mdW5jdGlvbiBjbyhlLG4saSxyLG8sYSxsLGMsdSxoKXt2YXIgZD1uJnMscD0xJm4sZj0yJm4sbT0yNCZuLGc9NTEyJm4sXz1mP3Q6YW8oZSk7cmV0dXJuIGZ1bmN0aW9uIHQoKXtmb3IodmFyIHM9YXJndW1lbnRzLmxlbmd0aCx5PXd0KHMpLHY9czt2LS07KXlbdl09YXJndW1lbnRzW3ZdO2lmKG0pdmFyIGI9UG8odCkseD1lbih5LGIpO2lmKHImJih5PUtyKHkscixvLG0pKSxhJiYoeT1acih5LGEsbCxtKSkscy09eCxtJiZzPGgpe3ZhciB3PWNuKHksYik7cmV0dXJuIF9vKGUsbixjbyx0LnBsYWNlaG9sZGVyLGkseSx3LGMsdSxoLXMpfXZhciBTPXA/aTp0aGlzLE09Zj9TW2VdOmU7cmV0dXJuIHM9eS5sZW5ndGgsYz95PUpvKHksYyk6ZyYmcz4xJiZ5LnJldmVyc2UoKSxkJiZ1PHMmJih5Lmxlbmd0aD11KSx0aGlzJiZ0aGlzIT09Y2UmJnRoaXMgaW5zdGFuY2VvZiB0JiYoTT1ffHxhbyhNKSksTS5hcHBseShTLHkpfX1mdW5jdGlvbiB1byh0LGUpe3JldHVybiBmdW5jdGlvbihuLGkpe3JldHVybihmdW5jdGlvbiByKHQsZSxuLGkpe3JldHVybiBqaSh0LChmdW5jdGlvbih0LHIsbyl7ZShpLG4odCkscixvKX0pKSxpfSkobix0LGUoaSkse30pfX1mdW5jdGlvbiBobyhlLG4pe3JldHVybiBmdW5jdGlvbihpLHIpe3ZhciBvO2lmKGk9PT10JiZyPT09dClyZXR1cm4gbjtpZihpIT09dCYmKG89aSksciE9PXQpe2lmKG89PT10KXJldHVybiByOyJzdHJpbmciPT10eXBlb2YgaXx8InN0cmluZyI9PXR5cGVvZiByPyhpPU5yKGkpLHI9TnIocikpOihpPVByKGkpLHI9UHIocikpLG89ZShpLHIpfXJldHVybiBvfX1mdW5jdGlvbiBwbyh0KXtyZXR1cm4gVG8oKGZ1bmN0aW9uKGUpe3JldHVybiBlPU5lKGUsS2UoTm8oKSkpLHZyKChmdW5jdGlvbihuKXt2YXIgaT10aGlzO3JldHVybiB0KGUsKGZ1bmN0aW9uKHQpe3JldHVybiB4ZSh0LGksbil9KSl9KSl9KSl9ZnVuY3Rpb24gZm8oZSxuKXt2YXIgaT0obj1uPT09dD8iICI6TnIobikpLmxlbmd0aDtpZihpPDIpcmV0dXJuIGk/eXIobixlKTpuO3ZhciByPXlyKG4sU2UoZS9kbihuKSkpO3JldHVybiBhbihuKT9HcihwbihyKSwwLGUpLmpvaW4oIiIpOnIuc2xpY2UoMCxlKX1mdW5jdGlvbiBtbyhlKXtyZXR1cm4gZnVuY3Rpb24obixpLHIpe3JldHVybiByJiYibnVtYmVyIiE9dHlwZW9mIHImJmpvKG4saSxyKSYmKGk9cj10KSxuPUdzKG4pLGk9PT10PyhpPW4sbj0wKTppPUdzKGkpLChmdW5jdGlvbiBvKHQsZSxuLGkpe2Zvcih2YXIgcj0tMSxvPXZuKFNlKChlLXQpLyhufHwxKSksMCksYT13dChvKTtvLS07KWFbaT9vOisrcl09dCx0Kz1uO3JldHVybiBhfSkobixpLHI9cj09PXQ/bjxpPzE6LTE6R3MociksZSl9fWZ1bmN0aW9uIGdvKHQpe3JldHVybiBmdW5jdGlvbihlLG4pe3JldHVybiJzdHJpbmciPT10eXBlb2YgZSYmInN0cmluZyI9PXR5cGVvZiBufHwoZT1ZcyhlKSxuPVlzKG4pKSx0KGUsbil9fWZ1bmN0aW9uIF9vKGUsbixpLHIscyxsLGMsdSxoLGQpe3ZhciBwPTgmbjtufD1wP286YSw0JihuJj1+KHA/YTpvKSl8fChuJj0tNCk7dmFyIGY9W2UsbixzLHA/bDp0LHA/Yzp0LHA/dDpsLHA/dDpjLHUsaCxkXSxtPWkuYXBwbHkodCxmKTtyZXR1cm4gV28oZSkmJnRhKG0sZiksbS5wbGFjZWhvbGRlcj1yLGlhKG0sZSxuKX1mdW5jdGlvbiB5byh0KXt2YXIgZT1UdFt0XTtyZXR1cm4gZnVuY3Rpb24odCxuKXtpZih0PVlzKHQpLChuPW51bGw9PW4/MDpibihXcyhuKSwyOTIpKSYmV2UodCkpe3ZhciBpPSgkcyh0KSsiZSIpLnNwbGl0KCJlIik7cmV0dXJuKygoaT0oJHMoZShpWzBdKyJlIisoK2lbMV0rbikpKSsiZSIpLnNwbGl0KCJlIikpWzBdKyJlIisoK2lbMV0tbikpfXJldHVybiBlKHQpfX12YXIgdm89QW4mJjEvdW4obmV3IEFuKFssLTBdKSlbMV09PWM/ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBBbih0KX06SGw7ZnVuY3Rpb24gYm8odCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciBuPUJvKGUpO3JldHVybiBuPT14P3NuKGUpOm49PVQ/aG4oZSk6KGZ1bmN0aW9uIGkodCxlKXtyZXR1cm4gTmUoZSwoZnVuY3Rpb24oZSl7cmV0dXJuW2UsdFtlXV19KSl9KShlLHQoZSkpfX1mdW5jdGlvbiB4byhuLGMsdSxoLGQscCxmLG0pe3ZhciBnPTImYztpZighZyYmImZ1bmN0aW9uIiE9dHlwZW9mIG4pdGhyb3cgbmV3IEx0KGUpO3ZhciBfPWg/aC5sZW5ndGg6MDtpZihffHwoYyY9LTk3LGg9ZD10KSxmPWY9PT10P2Y6dm4oV3MoZiksMCksbT1tPT09dD9tOldzKG0pLF8tPWQ/ZC5sZW5ndGg6MCxjJmEpe3ZhciB5PWgsdj1kO2g9ZD10fXZhciBiPWc/dDprbyhuKSx4PVtuLGMsdSxoLGQseSx2LHAsZixtXTtpZihiJiYoZnVuY3Rpb24gdyh0LGUpe3ZhciBuPXRbMV0scj1lWzFdLG89bnxyLGE9cj09cyYmOD09bnx8cj09cyYmbj09bCYmdFs3XS5sZW5ndGg8PWVbOF18fDM4ND09ciYmZVs3XS5sZW5ndGg8PWVbOF0mJjg9PW47aWYoIShvPDEzMXx8YSkpcmV0dXJuIHQ7MSZyJiYodFsyXT1lWzJdLG98PTEmbj8wOjQpO3ZhciBjPWVbM107aWYoYyl7dmFyIHU9dFszXTt0WzNdPXU/S3IodSxjLGVbNF0pOmMsdFs0XT11P2NuKHRbM10saSk6ZVs0XX1yZXR1cm4oYz1lWzVdKSYmKHRbNV09KHU9dFs1XSk/WnIodSxjLGVbNl0pOmMsdFs2XT11P2NuKHRbNV0saSk6ZVs2XSksKGM9ZVs3XSkmJih0WzddPWMpLHImcyYmKHRbOF09bnVsbD09dFs4XT9lWzhdOmJuKHRbOF0sZVs4XSkpLG51bGw9PXRbOV0mJih0WzldPWVbOV0pLHRbMF09ZVswXSx0WzFdPW8sdH0pKHgsYiksbj14WzBdLGM9eFsxXSx1PXhbMl0saD14WzNdLGQ9eFs0XSwhKG09eFs5XT14WzldPT09dD9nPzA6bi5sZW5ndGg6dm4oeFs5XS1fLDApKSYmMjQmYyYmKGMmPS0yNSksYyYmMSE9YylFPTg9PWN8fGM9PXI/KGZ1bmN0aW9uIFMoZSxuLGkpe3ZhciByPWFvKGUpO3JldHVybiBmdW5jdGlvbiBvKCl7Zm9yKHZhciBhPWFyZ3VtZW50cy5sZW5ndGgscz13dChhKSxsPWEsYz1QbyhvKTtsLS07KXNbbF09YXJndW1lbnRzW2xdO3ZhciB1PWE8MyYmc1swXSE9PWMmJnNbYS0xXSE9PWM/W106Y24ocyxjKTtyZXR1cm4oYS09dS5sZW5ndGgpPGk/X28oZSxuLGNvLG8ucGxhY2Vob2xkZXIsdCxzLHUsdCx0LGktYSk6eGUodGhpcyYmdGhpcyE9PWNlJiZ0aGlzIGluc3RhbmNlb2Ygbz9yOmUsdGhpcyxzKX19KShuLGMsbSk6YyE9byYmMzMhPWN8fGQubGVuZ3RoP2NvLmFwcGx5KHQseCk6KGZ1bmN0aW9uIE0odCxlLG4saSl7dmFyIHI9MSZlLG89YW8odCk7cmV0dXJuIGZ1bmN0aW9uIGUoKXtmb3IodmFyIGE9LTEscz1hcmd1bWVudHMubGVuZ3RoLGw9LTEsYz1pLmxlbmd0aCx1PXd0KGMrcyksaD10aGlzJiZ0aGlzIT09Y2UmJnRoaXMgaW5zdGFuY2VvZiBlP286dDsrK2w8YzspdVtsXT1pW2xdO2Zvcig7cy0tOyl1W2wrK109YXJndW1lbnRzWysrYV07cmV0dXJuIHhlKGgscj9uOnRoaXMsdSl9fSkobixjLHUsaCk7ZWxzZSB2YXIgRT0oZnVuY3Rpb24gVCh0LGUsbil7dmFyIGk9MSZlLHI9YW8odCk7cmV0dXJuIGZ1bmN0aW9uIGUoKXtyZXR1cm4odGhpcyYmdGhpcyE9PWNlJiZ0aGlzIGluc3RhbmNlb2YgZT9yOnQpLmFwcGx5KGk/bjp0aGlzLGFyZ3VtZW50cyl9fSkobixjLHUpO3JldHVybiBpYSgoYj9Tcjp0YSkoRSx4KSxuLGMpfWZ1bmN0aW9uIHdvKGUsbixpLHIpe3JldHVybiBlPT09dHx8aHMoZSxOdFtpXSkmJiFPdC5jYWxsKHIsaSk/bjplfWZ1bmN0aW9uIFNvKGUsbixpLHIsbyxhKXtyZXR1cm4gQ3MoZSkmJkNzKG4pJiYoYS5zZXQobixlKSxocihlLG4sdCxTbyxhKSxhLmRlbGV0ZShuKSksZX1mdW5jdGlvbiBNbyhlKXtyZXR1cm4gTnMoZSk/dDplfWZ1bmN0aW9uIEVvKGUsbixpLHIsbyxhKXt2YXIgcz0xJmksbD1lLmxlbmd0aCxjPW4ubGVuZ3RoO2lmKGwhPWMmJiEocyYmYz5sKSlyZXR1cm4hMTt2YXIgdT1hLmdldChlKSxoPWEuZ2V0KG4pO2lmKHUmJmgpcmV0dXJuIHU9PW4mJmg9PWU7dmFyIGQ9LTEscD0hMCxmPTImaT9uZXcgJG46dDtmb3IoYS5zZXQoZSxuKSxhLnNldChuLGUpOysrZDxsOyl7dmFyIG09ZVtkXSxnPW5bZF07aWYocil2YXIgXz1zP3IoZyxtLGQsbixlLGEpOnIobSxnLGQsZSxuLGEpO2lmKF8hPT10KXtpZihfKWNvbnRpbnVlO3A9ITE7YnJlYWt9aWYoZil7aWYoIXplKG4sKGZ1bmN0aW9uKHQsZSl7aWYoIUplKGYsZSkmJihtPT09dHx8byhtLHQsaSxyLGEpKSlyZXR1cm4gZi5wdXNoKGUpfSkpKXtwPSExO2JyZWFrfX1lbHNlIGlmKG0hPT1nJiYhbyhtLGcsaSxyLGEpKXtwPSExO2JyZWFrfX1yZXR1cm4gYS5kZWxldGUoZSksYS5kZWxldGUobikscH1mdW5jdGlvbiBUbyhlKXtyZXR1cm4gbmEoS28oZSx0LGdhKSxlKyIiKX1mdW5jdGlvbiBDbyh0KXtyZXR1cm4gWWkodCxsbCx6byl9ZnVuY3Rpb24gQW8odCl7cmV0dXJuIFlpKHQsY2wsRG8pfXZhciBrbz1Qbj9mdW5jdGlvbih0KXtyZXR1cm4gUG4uZ2V0KHQpfTpIbDtmdW5jdGlvbiBMbyh0KXtmb3IodmFyIGU9dC5uYW1lKyIiLG49Tm5bZV0saT1PdC5jYWxsKE5uLGUpP24ubGVuZ3RoOjA7aS0tOyl7dmFyIHI9bltpXSxvPXIuZnVuYztpZihudWxsPT1vfHxvPT10KXJldHVybiByLm5hbWV9cmV0dXJuIGV9ZnVuY3Rpb24gUG8odCl7cmV0dXJuKE90LmNhbGwoVm4sInBsYWNlaG9sZGVyIik/Vm46dCkucGxhY2Vob2xkZXJ9ZnVuY3Rpb24gTm8oKXt2YXIgdD1Wbi5pdGVyYXRlZXx8T2w7cmV0dXJuIHQ9dD09PU9sP3JyOnQsYXJndW1lbnRzLmxlbmd0aD90KGFyZ3VtZW50c1swXSxhcmd1bWVudHNbMV0pOnR9ZnVuY3Rpb24gSW8odCxlKXt2YXIgbj10Ll9fZGF0YV9fO3JldHVybihmdW5jdGlvbiBpKHQpe3ZhciBlPXR5cGVvZiB0O3JldHVybiJzdHJpbmciPT1lfHwibnVtYmVyIj09ZXx8InN5bWJvbCI9PWV8fCJib29sZWFuIj09ZT8iX19wcm90b19fIiE9PXQ6bnVsbD09PXR9KShlKT9uWyJzdHJpbmciPT10eXBlb2YgZT8ic3RyaW5nIjoiaGFzaCJdOm4ubWFwfWZ1bmN0aW9uIFJvKHQpe2Zvcih2YXIgZT1sbCh0KSxuPWUubGVuZ3RoO24tLTspe3ZhciBpPWVbbl0scj10W2ldO2Vbbl09W2kscixYbyhyKV19cmV0dXJuIGV9ZnVuY3Rpb24gT28oZSxuKXt2YXIgaT0oZnVuY3Rpb24gcihlLG4pe3JldHVybiBudWxsPT1lP3Q6ZVtuXX0pKGUsbik7cmV0dXJuIGlyKGkpP2k6dH12YXIgem89VGU/ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/W106KHQ9Q3QodCksa2UoVGUodCksKGZ1bmN0aW9uKGUpe3JldHVybiBLdC5jYWxsKHQsZSl9KSkpfTpxbCxEbz1UZT9mdW5jdGlvbih0KXtmb3IodmFyIGU9W107dDspSWUoZSx6byh0KSksdD1xdCh0KTtyZXR1cm4gZX06cWwsQm89WGk7ZnVuY3Rpb24gSG8odCxlLG4pe2Zvcih2YXIgaT0tMSxyPShlPVVyKGUsdCkpLmxlbmd0aCxvPSExOysraTxyOyl7dmFyIGE9bGEoZVtpXSk7aWYoIShvPW51bGwhPXQmJm4odCxhKSkpYnJlYWs7dD10W2FdfXJldHVybiBvfHwrK2khPXI/bzohIShyPW51bGw9PXQ/MDp0Lmxlbmd0aCkmJlRzKHIpJiZVbyhhLHIpJiYobXModCl8fGZzKHQpKX1mdW5jdGlvbiBGbyh0KXtyZXR1cm4iZnVuY3Rpb24iIT10eXBlb2YgdC5jb25zdHJ1Y3Rvcnx8WW8odCk/e306VW4ocXQodCkpfWZ1bmN0aW9uIFZvKHQpe3JldHVybiBtcyh0KXx8ZnModCl8fCEhKHJlJiZ0JiZ0W3JlXSl9ZnVuY3Rpb24gVW8odCxlKXt2YXIgbj10eXBlb2YgdDtyZXR1cm4hIShlPW51bGw9PWU/dTplKSYmKCJudW1iZXIiPT1ufHwic3ltYm9sIiE9biYmZ3QudGVzdCh0KSkmJnQ+LTEmJnQlMT09MCYmdDxlfWZ1bmN0aW9uIGpvKHQsZSxuKXtpZighQ3MobikpcmV0dXJuITE7dmFyIGk9dHlwZW9mIGU7cmV0dXJuISEoIm51bWJlciI9PWk/eXMobikmJlVvKGUsbi5sZW5ndGgpOiJzdHJpbmciPT1pJiZlIGluIG4pJiZocyhuW2VdLHQpfWZ1bmN0aW9uIEdvKHQsZSl7aWYobXModCkpcmV0dXJuITE7dmFyIG49dHlwZW9mIHQ7cmV0dXJuISgibnVtYmVyIiE9biYmInN5bWJvbCIhPW4mJiJib29sZWFuIiE9biYmbnVsbCE9dCYmIUJzKHQpKXx8Si50ZXN0KHQpfHwhWi50ZXN0KHQpfHxudWxsIT1lJiZ0IGluIEN0KGUpfWZ1bmN0aW9uIFdvKHQpe3ZhciBlPUxvKHQpLG49Vm5bZV07aWYoImZ1bmN0aW9uIiE9dHlwZW9mIG58fCEoZSBpbiBXbi5wcm90b3R5cGUpKXJldHVybiExO2lmKHQ9PT1uKXJldHVybiEwO3ZhciBpPWtvKG4pO3JldHVybiEhaSYmdD09PWlbMF19KEVuJiZCbyhuZXcgRW4obmV3IEFycmF5QnVmZmVyKDEpKSkhPVB8fFRuJiZCbyhuZXcgVG4pIT14fHxDbiYmQm8oQ24ucmVzb2x2ZSgpKSE9TXx8QW4mJkJvKG5ldyBBbikhPVR8fGtuJiZCbyhuZXcga24pIT1rKSYmKEJvPWZ1bmN0aW9uKGUpe3ZhciBuPVhpKGUpLGk9bj09Uz9lLmNvbnN0cnVjdG9yOnQscj1pP2NhKGkpOiIiO2lmKHIpc3dpdGNoKHIpe2Nhc2UgSW46cmV0dXJuIFA7Y2FzZSBSbjpyZXR1cm4geDtjYXNlIE9uOnJldHVybiBNO2Nhc2Ugem46cmV0dXJuIFQ7Y2FzZSBEbjpyZXR1cm4ga31yZXR1cm4gbn0pO3ZhciBxbz1JdD9NczpZbDtmdW5jdGlvbiBZbyh0KXt2YXIgZT10JiZ0LmNvbnN0cnVjdG9yO3JldHVybiB0PT09KCJmdW5jdGlvbiI9PXR5cGVvZiBlJiZlLnByb3RvdHlwZXx8TnQpfWZ1bmN0aW9uIFhvKHQpe3JldHVybiB0PT10JiYhQ3ModCl9ZnVuY3Rpb24gJG8oZSxuKXtyZXR1cm4gZnVuY3Rpb24oaSl7cmV0dXJuIG51bGwhPWkmJmlbZV09PT1uJiYobiE9PXR8fGUgaW4gQ3QoaSkpfX1mdW5jdGlvbiBLbyhlLG4saSl7cmV0dXJuIG49dm4obj09PXQ/ZS5sZW5ndGgtMTpuLDApLGZ1bmN0aW9uKCl7Zm9yKHZhciB0PWFyZ3VtZW50cyxyPS0xLG89dm4odC5sZW5ndGgtbiwwKSxhPXd0KG8pOysrcjxvOylhW3JdPXRbbityXTtyPS0xO2Zvcih2YXIgcz13dChuKzEpOysrcjxuOylzW3JdPXRbcl07cmV0dXJuIHNbbl09aShhKSx4ZShlLHRoaXMscyl9fWZ1bmN0aW9uIFpvKHQsZSl7cmV0dXJuIGUubGVuZ3RoPDI/dDpxaSh0LFRyKGUsMCwtMSkpfWZ1bmN0aW9uIEpvKGUsbil7Zm9yKHZhciBpPWUubGVuZ3RoLHI9Ym4obi5sZW5ndGgsaSksbz1KcihlKTtyLS07KXt2YXIgYT1uW3JdO2Vbcl09VW8oYSxpKT9vW2FdOnR9cmV0dXJuIGV9ZnVuY3Rpb24gUW8odCxlKXtpZigoImNvbnN0cnVjdG9yIiE9PWV8fCJmdW5jdGlvbiIhPXR5cGVvZiB0W2VdKSYmIl9fcHJvdG9fXyIhPWUpcmV0dXJuIHRbZV19dmFyIHRhPXJhKFNyKSxlYT1mZXx8ZnVuY3Rpb24odCxlKXtyZXR1cm4gY2Uuc2V0VGltZW91dCh0LGUpfSxuYT1yYShNcik7ZnVuY3Rpb24gaWEodCxlLG4pe3ZhciBpPWUrIiI7cmV0dXJuIG5hKHQsKGZ1bmN0aW9uIGEodCxlKXt2YXIgbj1lLmxlbmd0aDtpZighbilyZXR1cm4gdDt2YXIgaT1uLTE7cmV0dXJuIGVbaV09KG4+MT8iJiAiOiIiKStlW2ldLGU9ZS5qb2luKG4+Mj8iLCAiOiIgIiksdC5yZXBsYWNlKHJ0LCJ7XG4vKiBbd3JhcHBlZCB3aXRoICIrZSsiXSAqL1xuIil9KShpLChmdW5jdGlvbiBvKHQsZSl7cmV0dXJuIE1lKHAsKGZ1bmN0aW9uKG4pe3ZhciBpPSJfLiIrblswXTtlJm5bMV0mJiFMZSh0LGkpJiZ0LnB1c2goaSl9KSksdC5zb3J0KCl9KSgoZnVuY3Rpb24gcih0KXt2YXIgZT10Lm1hdGNoKG90KTtyZXR1cm4gZT9lWzFdLnNwbGl0KGF0KTpbXX0pKGkpLG4pKSl9ZnVuY3Rpb24gcmEoZSl7dmFyIG49MCxpPTA7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHI9eG4oKSxvPTE2LShyLWkpO2lmKGk9cixvPjApe2lmKCsrbj49ODAwKXJldHVybiBhcmd1bWVudHNbMF19ZWxzZSBuPTA7cmV0dXJuIGUuYXBwbHkodCxhcmd1bWVudHMpfX1mdW5jdGlvbiBvYShlLG4pe3ZhciBpPS0xLHI9ZS5sZW5ndGgsbz1yLTE7Zm9yKG49bj09PXQ/cjpuOysraTxuOyl7dmFyIGE9X3IoaSxvKSxzPWVbYV07ZVthXT1lW2ldLGVbaV09c31yZXR1cm4gZS5sZW5ndGg9bixlfXZhciBhYT0oZnVuY3Rpb24gc2EodCl7dmFyIGU9b3ModCwoZnVuY3Rpb24odCl7cmV0dXJuIDUwMD09PW4uc2l6ZSYmbi5jbGVhcigpLHR9KSksbj1lLmNhY2hlO3JldHVybiBlfSkoKGZ1bmN0aW9uKHQpe3ZhciBlPVtdO3JldHVybiA0Nj09PXQuY2hhckNvZGVBdCgwKSYmZS5wdXNoKCIiKSx0LnJlcGxhY2UoUSwoZnVuY3Rpb24odCxuLGkscil7ZS5wdXNoKGk/ci5yZXBsYWNlKGN0LCIkMSIpOm58fHQpfSkpLGV9KSk7ZnVuY3Rpb24gbGEodCl7aWYoInN0cmluZyI9PXR5cGVvZiB0fHxCcyh0KSlyZXR1cm4gdDt2YXIgZT10KyIiO3JldHVybiIwIj09ZSYmMS90PT0tMS8wPyItMCI6ZX1mdW5jdGlvbiBjYSh0KXtpZihudWxsIT10KXt0cnl7cmV0dXJuIFJ0LmNhbGwodCl9Y2F0Y2godCl7fXRyeXtyZXR1cm4gdCsiIn1jYXRjaCh0KXt9fXJldHVybiIifWZ1bmN0aW9uIHVhKHQpe2lmKHQgaW5zdGFuY2VvZiBXbilyZXR1cm4gdC5jbG9uZSgpO3ZhciBlPW5ldyBHbih0Ll9fd3JhcHBlZF9fLHQuX19jaGFpbl9fKTtyZXR1cm4gZS5fX2FjdGlvbnNfXz1Kcih0Ll9fYWN0aW9uc19fKSxlLl9faW5kZXhfXz10Ll9faW5kZXhfXyxlLl9fdmFsdWVzX189dC5fX3ZhbHVlc19fLGV9dmFyIGhhPXZyKChmdW5jdGlvbih0LGUpe3JldHVybiB2cyh0KT9kaSh0LEZpKGUsMSx2cywhMCkpOltdfSkpLGRhPXZyKChmdW5jdGlvbihlLG4pe3ZhciBpPXhhKG4pO3JldHVybiB2cyhpKSYmKGk9dCksdnMoZSk/ZGkoZSxGaShuLDEsdnMsITApLE5vKGksMikpOltdfSkpLHBhPXZyKChmdW5jdGlvbihlLG4pe3ZhciBpPXhhKG4pO3JldHVybiB2cyhpKSYmKGk9dCksdnMoZSk/ZGkoZSxGaShuLDEsdnMsITApLHQsaSk6W119KSk7ZnVuY3Rpb24gZmEodCxlLG4pe3ZhciBpPW51bGw9PXQ/MDp0Lmxlbmd0aDtpZighaSlyZXR1cm4tMTt2YXIgcj1udWxsPT1uPzA6V3Mobik7cmV0dXJuIHI8MCYmKHI9dm4oaStyLDApKSxIZSh0LE5vKGUsMykscil9ZnVuY3Rpb24gbWEoZSxuLGkpe3ZhciByPW51bGw9PWU/MDplLmxlbmd0aDtpZighcilyZXR1cm4tMTt2YXIgbz1yLTE7cmV0dXJuIGkhPT10JiYobz1XcyhpKSxvPWk8MD92bihyK28sMCk6Ym4obyxyLTEpKSxIZShlLE5vKG4sMyksbywhMCl9ZnVuY3Rpb24gZ2EodCl7cmV0dXJuIG51bGwhPXQmJnQubGVuZ3RoP0ZpKHQsMSk6W119ZnVuY3Rpb24gX2EoZSl7cmV0dXJuIGUmJmUubGVuZ3RoP2VbMF06dH12YXIgeWE9dnIoKGZ1bmN0aW9uKHQpe3ZhciBlPU5lKHQsRnIpO3JldHVybiBlLmxlbmd0aCYmZVswXT09PXRbMF0/SmkoZSk6W119KSksdmE9dnIoKGZ1bmN0aW9uKGUpe3ZhciBuPXhhKGUpLGk9TmUoZSxGcik7cmV0dXJuIG49PT14YShpKT9uPXQ6aS5wb3AoKSxpLmxlbmd0aCYmaVswXT09PWVbMF0/SmkoaSxObyhuLDIpKTpbXX0pKSxiYT12cigoZnVuY3Rpb24oZSl7dmFyIG49eGEoZSksaT1OZShlLEZyKTtyZXR1cm4obj0iZnVuY3Rpb24iPT10eXBlb2Ygbj9uOnQpJiZpLnBvcCgpLGkubGVuZ3RoJiZpWzBdPT09ZVswXT9KaShpLHQsbik6W119KSk7ZnVuY3Rpb24geGEoZSl7dmFyIG49bnVsbD09ZT8wOmUubGVuZ3RoO3JldHVybiBuP2Vbbi0xXTp0fXZhciB3YT12cihTYSk7ZnVuY3Rpb24gU2EodCxlKXtyZXR1cm4gdCYmdC5sZW5ndGgmJmUmJmUubGVuZ3RoP21yKHQsZSk6dH12YXIgTWE9VG8oKGZ1bmN0aW9uKHQsZSl7dmFyIG49bnVsbD09dD8wOnQubGVuZ3RoLGk9c2kodCxlKTtyZXR1cm4gZ3IodCxOZShlLChmdW5jdGlvbih0KXtyZXR1cm4gVW8odCxuKT8rdDp0fSkpLnNvcnQoJHIpKSxpfSkpO2Z1bmN0aW9uIEVhKHQpe3JldHVybiBudWxsPT10P3Q6TW4uY2FsbCh0KX12YXIgVGE9dnIoKGZ1bmN0aW9uKHQpe3JldHVybiBJcihGaSh0LDEsdnMsITApKX0pKSxDYT12cigoZnVuY3Rpb24oZSl7dmFyIG49eGEoZSk7cmV0dXJuIHZzKG4pJiYobj10KSxJcihGaShlLDEsdnMsITApLE5vKG4sMikpfSkpLEFhPXZyKChmdW5jdGlvbihlKXt2YXIgbj14YShlKTtyZXR1cm4gbj0iZnVuY3Rpb24iPT10eXBlb2Ygbj9uOnQsSXIoRmkoZSwxLHZzLCEwKSx0LG4pfSkpO2Z1bmN0aW9uIGthKHQpe2lmKCF0fHwhdC5sZW5ndGgpcmV0dXJuW107dmFyIGU9MDtyZXR1cm4gdD1rZSh0LChmdW5jdGlvbih0KXtpZih2cyh0KSlyZXR1cm4gZT12bih0Lmxlbmd0aCxlKSwhMH0pKSxYZShlLChmdW5jdGlvbihlKXtyZXR1cm4gTmUodCxHZShlKSl9KSl9ZnVuY3Rpb24gTGEoZSxuKXtpZighZXx8IWUubGVuZ3RoKXJldHVybltdO3ZhciBpPWthKGUpO3JldHVybiBudWxsPT1uP2k6TmUoaSwoZnVuY3Rpb24oZSl7cmV0dXJuIHhlKG4sdCxlKX0pKX12YXIgUGE9dnIoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHZzKHQpP2RpKHQsZSk6W119KSksTmE9dnIoKGZ1bmN0aW9uKHQpe3JldHVybiBCcihrZSh0LHZzKSl9KSksSWE9dnIoKGZ1bmN0aW9uKGUpe3ZhciBuPXhhKGUpO3JldHVybiB2cyhuKSYmKG49dCksQnIoa2UoZSx2cyksTm8obiwyKSl9KSksUmE9dnIoKGZ1bmN0aW9uKGUpe3ZhciBuPXhhKGUpO3JldHVybiBuPSJmdW5jdGlvbiI9PXR5cGVvZiBuP246dCxCcihrZShlLHZzKSx0LG4pfSkpLE9hPXZyKGthKSx6YT12cigoZnVuY3Rpb24oZSl7dmFyIG49ZS5sZW5ndGgsaT1uPjE/ZVtuLTFdOnQ7cmV0dXJuIGk9ImZ1bmN0aW9uIj09dHlwZW9mIGk/KGUucG9wKCksaSk6dCxMYShlLGkpfSkpO2Z1bmN0aW9uIERhKHQpe3ZhciBlPVZuKHQpO3JldHVybiBlLl9fY2hhaW5fXz0hMCxlfWZ1bmN0aW9uIEJhKHQsZSl7cmV0dXJuIGUodCl9dmFyIEhhPVRvKChmdW5jdGlvbihlKXt2YXIgbj1lLmxlbmd0aCxpPW4/ZVswXTowLHI9dGhpcy5fX3dyYXBwZWRfXyxvPWZ1bmN0aW9uKHQpe3JldHVybiBzaSh0LGUpfTtyZXR1cm4hKG4+MXx8dGhpcy5fX2FjdGlvbnNfXy5sZW5ndGgpJiZyIGluc3RhbmNlb2YgV24mJlVvKGkpPygocj1yLnNsaWNlKGksK2krKG4/MTowKSkpLl9fYWN0aW9uc19fLnB1c2goe2Z1bmM6QmEsYXJnczpbb10sdGhpc0FyZzp0fSksbmV3IEduKHIsdGhpcy5fX2NoYWluX18pLnRocnUoKGZ1bmN0aW9uKGUpe3JldHVybiBuJiYhZS5sZW5ndGgmJmUucHVzaCh0KSxlfSkpKTp0aGlzLnRocnUobyl9KSksRmE9dG8oKGZ1bmN0aW9uKHQsZSxuKXtPdC5jYWxsKHQsbik/Kyt0W25dOmFpKHQsbiwxKX0pKSxWYT1zbyhmYSksVWE9c28obWEpO2Z1bmN0aW9uIGphKHQsZSl7cmV0dXJuKG1zKHQpP01lOk9pKSh0LE5vKGUsMykpfWZ1bmN0aW9uIEdhKHQsZSl7cmV0dXJuKG1zKHQpP0NlOnppKSh0LE5vKGUsMykpfXZhciBXYT10bygoZnVuY3Rpb24odCxlLG4pe090LmNhbGwodCxuKT90W25dLnB1c2goZSk6YWkodCxuLFtlXSl9KSkscWE9dnIoKGZ1bmN0aW9uKHQsZSxuKXt2YXIgaT0tMSxyPSJmdW5jdGlvbiI9PXR5cGVvZiBlLG89eXModCk/d3QodC5sZW5ndGgpOltdO3JldHVybiBPaSh0LChmdW5jdGlvbih0KXtvWysraV09cj94ZShlLHQsbik6UWkodCxlLG4pfSkpLG99KSksWWE9dG8oKGZ1bmN0aW9uKHQsZSxuKXthaSh0LG4sZSl9KSk7ZnVuY3Rpb24gWGEodCxlKXtyZXR1cm4obXModCk/TmU6bHIpKHQsTm8oZSwzKSl9dmFyICRhPXRvKChmdW5jdGlvbih0LGUsbil7dFtuPzA6MV0ucHVzaChlKX0pLChmdW5jdGlvbigpe3JldHVybltbXSxbXV19KSksS2E9dnIoKGZ1bmN0aW9uKHQsZSl7aWYobnVsbD09dClyZXR1cm5bXTt2YXIgbj1lLmxlbmd0aDtyZXR1cm4gbj4xJiZqbyh0LGVbMF0sZVsxXSk/ZT1bXTpuPjImJmpvKGVbMF0sZVsxXSxlWzJdKSYmKGU9W2VbMF1dKSxwcih0LEZpKGUsMSksW10pfSkpLFphPXBlfHxmdW5jdGlvbigpe3JldHVybiBjZS5EYXRlLm5vdygpfTtmdW5jdGlvbiBKYShlLG4saSl7cmV0dXJuIG49aT90Om4seG8oZSxzLHQsdCx0LHQsbj1lJiZudWxsPT1uP2UubGVuZ3RoOm4pfWZ1bmN0aW9uIFFhKG4saSl7dmFyIHI7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGkpdGhyb3cgbmV3IEx0KGUpO3JldHVybiBuPVdzKG4pLGZ1bmN0aW9uKCl7cmV0dXJuLS1uPjAmJihyPWkuYXBwbHkodGhpcyxhcmd1bWVudHMpKSxuPD0xJiYoaT10KSxyfX12YXIgdHM9dnIoKGZ1bmN0aW9uKHQsZSxuKXt2YXIgaT0xO2lmKG4ubGVuZ3RoKXt2YXIgcj1jbihuLFBvKHRzKSk7aXw9b31yZXR1cm4geG8odCxpLGUsbixyKX0pKSxlcz12cigoZnVuY3Rpb24odCxlLG4pe3ZhciBpPTM7aWYobi5sZW5ndGgpe3ZhciByPWNuKG4sUG8oZXMpKTtpfD1vfXJldHVybiB4byhlLGksdCxuLHIpfSkpO2Z1bmN0aW9uIG5zKG4saSxyKXt2YXIgbyxhLHMsbCxjLHUsaD0wLGQ9ITEscD0hMSxmPSEwO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBuKXRocm93IG5ldyBMdChlKTtmdW5jdGlvbiBtKGUpe3ZhciBpPW8scj1hO3JldHVybiBvPWE9dCxoPWUsbD1uLmFwcGx5KHIsaSl9ZnVuY3Rpb24gZyh0KXtyZXR1cm4gaD10LGM9ZWEoeSxpKSxkP20odCk6bH1mdW5jdGlvbiBfKGUpe3ZhciBuPWUtdTtyZXR1cm4gdT09PXR8fG4+PWl8fG48MHx8cCYmZS1oPj1zfWZ1bmN0aW9uIHkoKXt2YXIgdD1aYSgpO2lmKF8odCkpcmV0dXJuIHYodCk7Yz1lYSh5LChmdW5jdGlvbiBlKHQpe3ZhciBlPWktKHQtdSk7cmV0dXJuIHA/Ym4oZSxzLSh0LWgpKTplfSkodCkpfWZ1bmN0aW9uIHYoZSl7cmV0dXJuIGM9dCxmJiZvP20oZSk6KG89YT10LGwpfWZ1bmN0aW9uIGIoKXt2YXIgZT1aYSgpLG49XyhlKTtpZihvPWFyZ3VtZW50cyxhPXRoaXMsdT1lLG4pe2lmKGM9PT10KXJldHVybiBnKHUpO2lmKHApcmV0dXJuIFdyKGMpLGM9ZWEoeSxpKSxtKHUpfXJldHVybiBjPT09dCYmKGM9ZWEoeSxpKSksbH1yZXR1cm4gaT1ZcyhpKXx8MCxDcyhyKSYmKGQ9ISFyLmxlYWRpbmcscz0ocD0ibWF4V2FpdCJpbiByKT92bihZcyhyLm1heFdhaXQpfHwwLGkpOnMsZj0idHJhaWxpbmciaW4gcj8hIXIudHJhaWxpbmc6ZiksYi5jYW5jZWw9ZnVuY3Rpb24geCgpe2MhPT10JiZXcihjKSxoPTAsbz11PWE9Yz10fSxiLmZsdXNoPWZ1bmN0aW9uIHcoKXtyZXR1cm4gYz09PXQ/bDp2KFphKCkpfSxifXZhciBpcz12cigoZnVuY3Rpb24odCxlKXtyZXR1cm4gaGkodCwxLGUpfSkpLHJzPXZyKChmdW5jdGlvbih0LGUsbil7cmV0dXJuIGhpKHQsWXMoZSl8fDAsbil9KSk7ZnVuY3Rpb24gb3ModCxuKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdHx8bnVsbCE9biYmImZ1bmN0aW9uIiE9dHlwZW9mIG4pdGhyb3cgbmV3IEx0KGUpO3ZhciBpPWZ1bmN0aW9uKCl7dmFyIGU9YXJndW1lbnRzLHI9bj9uLmFwcGx5KHRoaXMsZSk6ZVswXSxvPWkuY2FjaGU7aWYoby5oYXMocikpcmV0dXJuIG8uZ2V0KHIpO3ZhciBhPXQuYXBwbHkodGhpcyxlKTtyZXR1cm4gaS5jYWNoZT1vLnNldChyLGEpfHxvLGF9O3JldHVybiBpLmNhY2hlPW5ldyhvcy5DYWNoZXx8WG4pLGl9ZnVuY3Rpb24gYXModCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQpdGhyb3cgbmV3IEx0KGUpO3JldHVybiBmdW5jdGlvbigpe3ZhciBlPWFyZ3VtZW50cztzd2l0Y2goZS5sZW5ndGgpe2Nhc2UgMDpyZXR1cm4hdC5jYWxsKHRoaXMpO2Nhc2UgMTpyZXR1cm4hdC5jYWxsKHRoaXMsZVswXSk7Y2FzZSAyOnJldHVybiF0LmNhbGwodGhpcyxlWzBdLGVbMV0pO2Nhc2UgMzpyZXR1cm4hdC5jYWxsKHRoaXMsZVswXSxlWzFdLGVbMl0pfXJldHVybiF0LmFwcGx5KHRoaXMsZSl9fW9zLkNhY2hlPVhuO3ZhciBzcz1qcigoZnVuY3Rpb24odCxlKXt2YXIgbj0oZT0xPT1lLmxlbmd0aCYmbXMoZVswXSk/TmUoZVswXSxLZShObygpKSk6TmUoRmkoZSwxKSxLZShObygpKSkpLmxlbmd0aDtyZXR1cm4gdnIoKGZ1bmN0aW9uKGkpe2Zvcih2YXIgcj0tMSxvPWJuKGkubGVuZ3RoLG4pOysrcjxvOylpW3JdPWVbcl0uY2FsbCh0aGlzLGlbcl0pO3JldHVybiB4ZSh0LHRoaXMsaSl9KSl9KSksbHM9dnIoKGZ1bmN0aW9uKGUsbil7dmFyIGk9Y24obixQbyhscykpO3JldHVybiB4byhlLG8sdCxuLGkpfSkpLGNzPXZyKChmdW5jdGlvbihlLG4pe3ZhciBpPWNuKG4sUG8oY3MpKTtyZXR1cm4geG8oZSxhLHQsbixpKX0pKSx1cz1UbygoZnVuY3Rpb24oZSxuKXtyZXR1cm4geG8oZSxsLHQsdCx0LG4pfSkpO2Z1bmN0aW9uIGhzKHQsZSl7cmV0dXJuIHQ9PT1lfHx0IT10JiZlIT1lfXZhciBkcz1nbygkaSkscHM9Z28oKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQ+PWV9KSksZnM9dHIoKGZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50c30pKCkpP3RyOmZ1bmN0aW9uKHQpe3JldHVybiBBcyh0KSYmT3QuY2FsbCh0LCJjYWxsZWUiKSYmIUt0LmNhbGwodCwiY2FsbGVlIil9LG1zPXd0LmlzQXJyYXksZ3M9bWU/S2UobWUpOmZ1bmN0aW9uIF9zKHQpe3JldHVybiBBcyh0KSYmWGkodCk9PUx9O2Z1bmN0aW9uIHlzKHQpe3JldHVybiBudWxsIT10JiZUcyh0Lmxlbmd0aCkmJiFNcyh0KX1mdW5jdGlvbiB2cyh0KXtyZXR1cm4gQXModCkmJnlzKHQpfXZhciBicz1EZXx8WWwseHM9Z2U/S2UoZ2UpOmZ1bmN0aW9uIHdzKHQpe3JldHVybiBBcyh0KSYmWGkodCk9PV99O2Z1bmN0aW9uIFNzKHQpe2lmKCFBcyh0KSlyZXR1cm4hMTt2YXIgZT1YaSh0KTtyZXR1cm4gZT09eXx8IltvYmplY3QgRE9NRXhjZXB0aW9uXSI9PWV8fCJzdHJpbmciPT10eXBlb2YgdC5tZXNzYWdlJiYic3RyaW5nIj09dHlwZW9mIHQubmFtZSYmIU5zKHQpfWZ1bmN0aW9uIE1zKHQpe2lmKCFDcyh0KSlyZXR1cm4hMTt2YXIgZT1YaSh0KTtyZXR1cm4gZT09dnx8ZT09Ynx8IltvYmplY3QgQXN5bmNGdW5jdGlvbl0iPT1lfHwiW29iamVjdCBQcm94eV0iPT1lfWZ1bmN0aW9uIEVzKHQpe3JldHVybiJudW1iZXIiPT10eXBlb2YgdCYmdD09V3ModCl9ZnVuY3Rpb24gVHModCl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiB0JiZ0Pi0xJiZ0JTE9PTAmJnQ8PXV9ZnVuY3Rpb24gQ3ModCl7dmFyIGU9dHlwZW9mIHQ7cmV0dXJuIG51bGwhPXQmJigib2JqZWN0Ij09ZXx8ImZ1bmN0aW9uIj09ZSl9ZnVuY3Rpb24gQXModCl7cmV0dXJuIG51bGwhPXQmJiJvYmplY3QiPT10eXBlb2YgdH12YXIga3M9X2U/S2UoX2UpOmZ1bmN0aW9uIExzKHQpe3JldHVybiBBcyh0KSYmQm8odCk9PXh9O2Z1bmN0aW9uIFBzKHQpe3JldHVybiJudW1iZXIiPT10eXBlb2YgdHx8QXModCkmJlhpKHQpPT13fWZ1bmN0aW9uIE5zKHQpe2lmKCFBcyh0KXx8WGkodCkhPVMpcmV0dXJuITE7dmFyIGU9cXQodCk7aWYobnVsbD09PWUpcmV0dXJuITA7dmFyIG49T3QuY2FsbChlLCJjb25zdHJ1Y3RvciIpJiZlLmNvbnN0cnVjdG9yO3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBuJiZuIGluc3RhbmNlb2YgbiYmUnQuY2FsbChuKT09SHR9dmFyIElzPXllP0tlKHllKTpmdW5jdGlvbiBScyh0KXtyZXR1cm4gQXModCkmJlhpKHQpPT1FfSxPcz12ZT9LZSh2ZSk6ZnVuY3Rpb24genModCl7cmV0dXJuIEFzKHQpJiZCbyh0KT09VH07ZnVuY3Rpb24gRHModCl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0fHwhbXModCkmJkFzKHQpJiZYaSh0KT09Q31mdW5jdGlvbiBCcyh0KXtyZXR1cm4ic3ltYm9sIj09dHlwZW9mIHR8fEFzKHQpJiZYaSh0KT09QX12YXIgSHM9YmU/S2UoYmUpOmZ1bmN0aW9uIEZzKHQpe3JldHVybiBBcyh0KSYmVHModC5sZW5ndGgpJiYhIW5lW1hpKHQpXX0sVnM9Z28oc3IpLFVzPWdvKChmdW5jdGlvbih0LGUpe3JldHVybiB0PD1lfSkpO2Z1bmN0aW9uIGpzKHQpe2lmKCF0KXJldHVybltdO2lmKHlzKHQpKXJldHVybiBEcyh0KT9wbih0KTpKcih0KTtpZihzZSYmdFtzZV0pcmV0dXJuKGZ1bmN0aW9uIGUodCl7Zm9yKHZhciBlLG49W107IShlPXQubmV4dCgpKS5kb25lOyluLnB1c2goZS52YWx1ZSk7cmV0dXJuIG59KSh0W3NlXSgpKTt2YXIgbj1Cbyh0KTtyZXR1cm4obj09eD9zbjpuPT1UP3VuOl9sKSh0KX1mdW5jdGlvbiBHcyh0KXtyZXR1cm4gdD8odD1Zcyh0KSk9PT1jfHx0PT09LTEvMD8xNzk3NjkzMTM0ODYyMzE1N2UyOTIqKHQ8MD8tMToxKTp0PT10P3Q6MDowPT09dD90OjB9ZnVuY3Rpb24gV3ModCl7dmFyIGU9R3ModCksbj1lJTE7cmV0dXJuIGU9PWU/bj9lLW46ZTowfWZ1bmN0aW9uIHFzKHQpe3JldHVybiB0P2xpKFdzKHQpLDAsZCk6MH1mdW5jdGlvbiBZcyh0KXtpZigibnVtYmVyIj09dHlwZW9mIHQpcmV0dXJuIHQ7aWYoQnModCkpcmV0dXJuIGg7aWYoQ3ModCkpe3ZhciBlPSJmdW5jdGlvbiI9PXR5cGVvZiB0LnZhbHVlT2Y/dC52YWx1ZU9mKCk6dDt0PUNzKGUpP2UrIiI6ZX1pZigic3RyaW5nIiE9dHlwZW9mIHQpcmV0dXJuIDA9PT10P3Q6K3Q7dD0kZSh0KTt2YXIgbj1wdC50ZXN0KHQpO3JldHVybiBufHxtdC50ZXN0KHQpP2FlKHQuc2xpY2UoMiksbj8yOjgpOmR0LnRlc3QodCk/aDordH1mdW5jdGlvbiBYcyh0KXtyZXR1cm4gUXIodCxjbCh0KSl9ZnVuY3Rpb24gJHModCl7cmV0dXJuIG51bGw9PXQ/IiI6TnIodCl9dmFyIEtzPWVvKChmdW5jdGlvbih0LGUpe2lmKFlvKGUpfHx5cyhlKSlRcihlLGxsKGUpLHQpO2Vsc2UgZm9yKHZhciBuIGluIGUpT3QuY2FsbChlLG4pJiZuaSh0LG4sZVtuXSl9KSksWnM9ZW8oKGZ1bmN0aW9uKHQsZSl7UXIoZSxjbChlKSx0KX0pKSxKcz1lbygoZnVuY3Rpb24odCxlLG4saSl7UXIoZSxjbChlKSx0LGkpfSkpLFFzPWVvKChmdW5jdGlvbih0LGUsbixpKXtRcihlLGxsKGUpLHQsaSl9KSksdGw9VG8oc2kpLGVsPXZyKChmdW5jdGlvbihlLG4pe2U9Q3QoZSk7dmFyIGk9LTEscj1uLmxlbmd0aCxvPXI+Mj9uWzJdOnQ7Zm9yKG8mJmpvKG5bMF0sblsxXSxvKSYmKHI9MSk7KytpPHI7KWZvcih2YXIgYT1uW2ldLHM9Y2woYSksbD0tMSxjPXMubGVuZ3RoOysrbDxjOyl7dmFyIHU9c1tsXSxoPWVbdV07KGg9PT10fHxocyhoLE50W3VdKSYmIU90LmNhbGwoZSx1KSkmJihlW3VdPWFbdV0pfXJldHVybiBlfSkpLG5sPXZyKChmdW5jdGlvbihlKXtyZXR1cm4gZS5wdXNoKHQsU28pLHhlKGhsLHQsZSl9KSk7ZnVuY3Rpb24gaWwoZSxuLGkpe3ZhciByPW51bGw9PWU/dDpxaShlLG4pO3JldHVybiByPT09dD9pOnJ9ZnVuY3Rpb24gcmwodCxlKXtyZXR1cm4gbnVsbCE9dCYmSG8odCxlLFppKX12YXIgb2w9dW8oKGZ1bmN0aW9uKHQsZSxuKXtudWxsIT1lJiYiZnVuY3Rpb24iIT10eXBlb2YgZS50b1N0cmluZyYmKGU9QnQuY2FsbChlKSksdFtlXT1ufSksUGwoUmwpKSxhbD11bygoZnVuY3Rpb24odCxlLG4pe251bGwhPWUmJiJmdW5jdGlvbiIhPXR5cGVvZiBlLnRvU3RyaW5nJiYoZT1CdC5jYWxsKGUpKSxPdC5jYWxsKHQsZSk/dFtlXS5wdXNoKG4pOnRbZV09W25dfSksTm8pLHNsPXZyKFFpKTtmdW5jdGlvbiBsbCh0KXtyZXR1cm4geXModCk/Wm4odCk6b3IodCl9ZnVuY3Rpb24gY2wodCl7cmV0dXJuIHlzKHQpP1puKHQsITApOmFyKHQpfXZhciB1bD1lbygoZnVuY3Rpb24odCxlLG4pe2hyKHQsZSxuKX0pKSxobD1lbygoZnVuY3Rpb24odCxlLG4saSl7aHIodCxlLG4saSl9KSksZGw9VG8oKGZ1bmN0aW9uKHQsZSl7dmFyIG49e307aWYobnVsbD09dClyZXR1cm4gbjt2YXIgaT0hMTtlPU5lKGUsKGZ1bmN0aW9uKGUpe3JldHVybiBlPVVyKGUsdCksaXx8KGk9ZS5sZW5ndGg+MSksZX0pKSxRcih0LEFvKHQpLG4pLGkmJihuPWNpKG4sNyxNbykpO2Zvcih2YXIgcj1lLmxlbmd0aDtyLS07KVJyKG4sZVtyXSk7cmV0dXJuIG59KSkscGw9VG8oKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIG51bGw9PXQ/e306KGZ1bmN0aW9uIG4odCxlKXtyZXR1cm4gZnIodCxlLChmdW5jdGlvbihlLG4pe3JldHVybiBybCh0LG4pfSkpfSkodCxlKX0pKTtmdW5jdGlvbiBmbCh0LGUpe2lmKG51bGw9PXQpcmV0dXJue307dmFyIG49TmUoQW8odCksKGZ1bmN0aW9uKHQpe3JldHVyblt0XX0pKTtyZXR1cm4gZT1ObyhlKSxmcih0LG4sKGZ1bmN0aW9uKHQsbil7cmV0dXJuIGUodCxuWzBdKX0pKX12YXIgbWw9Ym8obGwpLGdsPWJvKGNsKTtmdW5jdGlvbiBfbCh0KXtyZXR1cm4gbnVsbD09dD9bXTpaZSh0LGxsKHQpKX12YXIgeWw9b28oKGZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gZT1lLnRvTG93ZXJDYXNlKCksdCsobj92bChlKTplKX0pKTtmdW5jdGlvbiB2bCh0KXtyZXR1cm4gQ2woJHModCkudG9Mb3dlckNhc2UoKSl9ZnVuY3Rpb24gYmwodCl7cmV0dXJuKHQ9JHModCkpJiZ0LnJlcGxhY2UoX3Qsbm4pLnJlcGxhY2UoJHQsIiIpfXZhciB4bD1vbygoZnVuY3Rpb24odCxlLG4pe3JldHVybiB0KyhuPyItIjoiIikrZS50b0xvd2VyQ2FzZSgpfSkpLHdsPW9vKChmdW5jdGlvbih0LGUsbil7cmV0dXJuIHQrKG4/IiAiOiIiKStlLnRvTG93ZXJDYXNlKCl9KSksU2w9cm8oInRvTG93ZXJDYXNlIiksTWw9b28oKGZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gdCsobj8iXyI6IiIpK2UudG9Mb3dlckNhc2UoKX0pKSxFbD1vbygoZnVuY3Rpb24odCxlLG4pe3JldHVybiB0KyhuPyIgIjoiIikrQ2woZSl9KSksVGw9b28oKGZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gdCsobj8iICI6IiIpK2UudG9VcHBlckNhc2UoKX0pKSxDbD1ybygidG9VcHBlckNhc2UiKTtmdW5jdGlvbiBBbChlLG4saSl7cmV0dXJuIGU9JHMoZSksKG49aT90Om4pPT09dD8oZnVuY3Rpb24gcih0KXtyZXR1cm4gUXQudGVzdCh0KX0pKGUpPyhmdW5jdGlvbiBvKHQpe3JldHVybiB0Lm1hdGNoKFp0KXx8W119KShlKTooZnVuY3Rpb24gYSh0KXtyZXR1cm4gdC5tYXRjaChzdCl8fFtdfSkoZSk6ZS5tYXRjaChuKXx8W119dmFyIGtsPXZyKChmdW5jdGlvbihlLG4pe3RyeXtyZXR1cm4geGUoZSx0LG4pfWNhdGNoKHQpe3JldHVybiBTcyh0KT90Om5ldyBNdCh0KX19KSksTGw9VG8oKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIE1lKGUsKGZ1bmN0aW9uKGUpe2U9bGEoZSksYWkodCxlLHRzKHRbZV0sdCkpfSkpLHR9KSk7ZnVuY3Rpb24gUGwodCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHR9fXZhciBObD1sbygpLElsPWxvKCEwKTtmdW5jdGlvbiBSbCh0KXtyZXR1cm4gdH1mdW5jdGlvbiBPbCh0KXtyZXR1cm4gcnIoImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpjaSh0LDEpKX12YXIgemw9dnIoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiBRaShuLHQsZSl9fSkpLERsPXZyKChmdW5jdGlvbih0LGUpe3JldHVybiBmdW5jdGlvbihuKXtyZXR1cm4gUWkodCxuLGUpfX0pKTtmdW5jdGlvbiBCbCh0LGUsbil7dmFyIGk9bGwoZSkscj1XaShlLGkpO251bGwhPW58fENzKGUpJiYoci5sZW5ndGh8fCFpLmxlbmd0aCl8fChuPWUsZT10LHQ9dGhpcyxyPVdpKGUsbGwoZSkpKTt2YXIgbz0hKENzKG4pJiYiY2hhaW4iaW4gbiYmIW4uY2hhaW4pLGE9TXModCk7cmV0dXJuIE1lKHIsKGZ1bmN0aW9uKG4pe3ZhciBpPWVbbl07dFtuXT1pLGEmJih0LnByb3RvdHlwZVtuXT1mdW5jdGlvbigpe3ZhciBlPXRoaXMuX19jaGFpbl9fO2lmKG98fGUpe3ZhciBuPXQodGhpcy5fX3dyYXBwZWRfXykscj1uLl9fYWN0aW9uc19fPUpyKHRoaXMuX19hY3Rpb25zX18pO3JldHVybiByLnB1c2goe2Z1bmM6aSxhcmdzOmFyZ3VtZW50cyx0aGlzQXJnOnR9KSxuLl9fY2hhaW5fXz1lLG59cmV0dXJuIGkuYXBwbHkodCxJZShbdGhpcy52YWx1ZSgpXSxhcmd1bWVudHMpKX0pfSkpLHR9ZnVuY3Rpb24gSGwoKXt9dmFyIEZsPXBvKE5lKSxWbD1wbyhBZSksVWw9cG8oemUpO2Z1bmN0aW9uIGpsKHQpe3JldHVybiBHbyh0KT9HZShsYSh0KSk6KGZ1bmN0aW9uIGUodCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBxaShlLHQpfX0pKHQpfXZhciBHbD1tbygpLFdsPW1vKCEwKTtmdW5jdGlvbiBxbCgpe3JldHVybltdfWZ1bmN0aW9uIFlsKCl7cmV0dXJuITF9dmFyIFhsLCRsPWhvKChmdW5jdGlvbih0LGUpe3JldHVybiB0K2V9KSwwKSxLbD15bygiY2VpbCIpLFpsPWhvKChmdW5jdGlvbih0LGUpe3JldHVybiB0L2V9KSwxKSxKbD15bygiZmxvb3IiKSxRbD1obygoZnVuY3Rpb24odCxlKXtyZXR1cm4gdCplfSksMSksdGM9eW8oInJvdW5kIiksZWM9aG8oKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQtZX0pLDApO3JldHVybiBWbi5hZnRlcj1mdW5jdGlvbiBuYyh0LG4pe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBuKXRocm93IG5ldyBMdChlKTtyZXR1cm4gdD1Xcyh0KSxmdW5jdGlvbigpe2lmKC0tdDwxKXJldHVybiBuLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19LFZuLmFyeT1KYSxWbi5hc3NpZ249S3MsVm4uYXNzaWduSW49WnMsVm4uYXNzaWduSW5XaXRoPUpzLFZuLmFzc2lnbldpdGg9UXMsVm4uYXQ9dGwsVm4uYmVmb3JlPVFhLFZuLmJpbmQ9dHMsVm4uYmluZEFsbD1MbCxWbi5iaW5kS2V5PWVzLFZuLmNhc3RBcnJheT1mdW5jdGlvbiBpYygpe2lmKCFhcmd1bWVudHMubGVuZ3RoKXJldHVybltdO3ZhciB0PWFyZ3VtZW50c1swXTtyZXR1cm4gbXModCk/dDpbdF19LFZuLmNoYWluPURhLFZuLmNodW5rPWZ1bmN0aW9uIHJjKGUsbixpKXtuPShpP2pvKGUsbixpKTpuPT09dCk/MTp2bihXcyhuKSwwKTt2YXIgcj1udWxsPT1lPzA6ZS5sZW5ndGg7aWYoIXJ8fG48MSlyZXR1cm5bXTtmb3IodmFyIG89MCxhPTAscz13dChTZShyL24pKTtvPHI7KXNbYSsrXT1UcihlLG8sbys9bik7cmV0dXJuIHN9LFZuLmNvbXBhY3Q9ZnVuY3Rpb24gb2ModCl7Zm9yKHZhciBlPS0xLG49bnVsbD09dD8wOnQubGVuZ3RoLGk9MCxyPVtdOysrZTxuOyl7dmFyIG89dFtlXTtvJiYocltpKytdPW8pfXJldHVybiByfSxWbi5jb25jYXQ9ZnVuY3Rpb24gYWMoKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoO2lmKCF0KXJldHVybltdO2Zvcih2YXIgZT13dCh0LTEpLG49YXJndW1lbnRzWzBdLGk9dDtpLS07KWVbaS0xXT1hcmd1bWVudHNbaV07cmV0dXJuIEllKG1zKG4pP0pyKG4pOltuXSxGaShlLDEpKX0sVm4uY29uZD1mdW5jdGlvbiBzYyh0KXt2YXIgbj1udWxsPT10PzA6dC5sZW5ndGgsaT1ObygpO3JldHVybiB0PW4/TmUodCwoZnVuY3Rpb24odCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHRbMV0pdGhyb3cgbmV3IEx0KGUpO3JldHVybltpKHRbMF0pLHRbMV1dfSkpOltdLHZyKChmdW5jdGlvbihlKXtmb3IodmFyIGk9LTE7KytpPG47KXt2YXIgcj10W2ldO2lmKHhlKHJbMF0sdGhpcyxlKSlyZXR1cm4geGUoclsxXSx0aGlzLGUpfX0pKX0sVm4uY29uZm9ybXM9ZnVuY3Rpb24gbGModCl7cmV0dXJuKGZ1bmN0aW9uIGUodCl7dmFyIGU9bGwodCk7cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiB1aShuLHQsZSl9fSkoY2kodCwxKSl9LFZuLmNvbnN0YW50PVBsLFZuLmNvdW50Qnk9RmEsVm4uY3JlYXRlPWZ1bmN0aW9uIGNjKHQsZSl7dmFyIG49VW4odCk7cmV0dXJuIG51bGw9PWU/bjpvaShuLGUpfSxWbi5jdXJyeT1mdW5jdGlvbiBlKG4saSxyKXt2YXIgbz14byhuLDgsdCx0LHQsdCx0LGk9cj90OmkpO3JldHVybiBvLnBsYWNlaG9sZGVyPWUucGxhY2Vob2xkZXIsb30sVm4uY3VycnlSaWdodD1mdW5jdGlvbiBlKG4saSxvKXt2YXIgYT14byhuLHIsdCx0LHQsdCx0LGk9bz90OmkpO3JldHVybiBhLnBsYWNlaG9sZGVyPWUucGxhY2Vob2xkZXIsYX0sVm4uZGVib3VuY2U9bnMsVm4uZGVmYXVsdHM9ZWwsVm4uZGVmYXVsdHNEZWVwPW5sLFZuLmRlZmVyPWlzLFZuLmRlbGF5PXJzLFZuLmRpZmZlcmVuY2U9aGEsVm4uZGlmZmVyZW5jZUJ5PWRhLFZuLmRpZmZlcmVuY2VXaXRoPXBhLFZuLmRyb3A9ZnVuY3Rpb24gdWMoZSxuLGkpe3ZhciByPW51bGw9PWU/MDplLmxlbmd0aDtyZXR1cm4gcj9UcihlLChuPWl8fG49PT10PzE6V3MobikpPDA/MDpuLHIpOltdfSxWbi5kcm9wUmlnaHQ9ZnVuY3Rpb24gaGMoZSxuLGkpe3ZhciByPW51bGw9PWU/MDplLmxlbmd0aDtyZXR1cm4gcj9UcihlLDAsKG49ci0obj1pfHxuPT09dD8xOldzKG4pKSk8MD8wOm4pOltdfSxWbi5kcm9wUmlnaHRXaGlsZT1mdW5jdGlvbiBkYyh0LGUpe3JldHVybiB0JiZ0Lmxlbmd0aD96cih0LE5vKGUsMyksITAsITApOltdfSxWbi5kcm9wV2hpbGU9ZnVuY3Rpb24gcGModCxlKXtyZXR1cm4gdCYmdC5sZW5ndGg/enIodCxObyhlLDMpLCEwKTpbXX0sVm4uZmlsbD1mdW5jdGlvbiBmYyhlLG4saSxyKXt2YXIgbz1udWxsPT1lPzA6ZS5sZW5ndGg7cmV0dXJuIG8/KGkmJiJudW1iZXIiIT10eXBlb2YgaSYmam8oZSxuLGkpJiYoaT0wLHI9byksKGZ1bmN0aW9uIGEoZSxuLGkscil7dmFyIG89ZS5sZW5ndGg7Zm9yKChpPVdzKGkpKTwwJiYoaT0taT5vPzA6bytpKSwocj1yPT09dHx8cj5vP286V3MocikpPDAmJihyKz1vKSxyPWk+cj8wOnFzKHIpO2k8cjspZVtpKytdPW47cmV0dXJuIGV9KShlLG4saSxyKSk6W119LFZuLmZpbHRlcj1mdW5jdGlvbiBtYyh0LGUpe3JldHVybihtcyh0KT9rZTpIaSkodCxObyhlLDMpKX0sVm4uZmxhdE1hcD1mdW5jdGlvbiBnYyh0LGUpe3JldHVybiBGaShYYSh0LGUpLDEpfSxWbi5mbGF0TWFwRGVlcD1mdW5jdGlvbiBfYyh0LGUpe3JldHVybiBGaShYYSh0LGUpLGMpfSxWbi5mbGF0TWFwRGVwdGg9ZnVuY3Rpb24geWMoZSxuLGkpe3JldHVybiBpPWk9PT10PzE6V3MoaSksRmkoWGEoZSxuKSxpKX0sVm4uZmxhdHRlbj1nYSxWbi5mbGF0dGVuRGVlcD1mdW5jdGlvbiB2Yyh0KXtyZXR1cm4gbnVsbCE9dCYmdC5sZW5ndGg/RmkodCxjKTpbXX0sVm4uZmxhdHRlbkRlcHRoPWZ1bmN0aW9uIGJjKGUsbil7cmV0dXJuIG51bGwhPWUmJmUubGVuZ3RoP0ZpKGUsbj1uPT09dD8xOldzKG4pKTpbXX0sVm4uZmxpcD1mdW5jdGlvbiB4Yyh0KXtyZXR1cm4geG8odCw1MTIpfSxWbi5mbG93PU5sLFZuLmZsb3dSaWdodD1JbCxWbi5mcm9tUGFpcnM9ZnVuY3Rpb24gd2ModCl7Zm9yKHZhciBlPS0xLG49bnVsbD09dD8wOnQubGVuZ3RoLGk9e307KytlPG47KXt2YXIgcj10W2VdO2lbclswXV09clsxXX1yZXR1cm4gaX0sVm4uZnVuY3Rpb25zPWZ1bmN0aW9uIFNjKHQpe3JldHVybiBudWxsPT10P1tdOldpKHQsbGwodCkpfSxWbi5mdW5jdGlvbnNJbj1mdW5jdGlvbiBNYyh0KXtyZXR1cm4gbnVsbD09dD9bXTpXaSh0LGNsKHQpKX0sVm4uZ3JvdXBCeT1XYSxWbi5pbml0aWFsPWZ1bmN0aW9uIEVjKHQpe3JldHVybiBudWxsIT10JiZ0Lmxlbmd0aD9Ucih0LDAsLTEpOltdfSxWbi5pbnRlcnNlY3Rpb249eWEsVm4uaW50ZXJzZWN0aW9uQnk9dmEsVm4uaW50ZXJzZWN0aW9uV2l0aD1iYSxWbi5pbnZlcnQ9b2wsVm4uaW52ZXJ0Qnk9YWwsVm4uaW52b2tlTWFwPXFhLFZuLml0ZXJhdGVlPU9sLFZuLmtleUJ5PVlhLFZuLmtleXM9bGwsVm4ua2V5c0luPWNsLFZuLm1hcD1YYSxWbi5tYXBLZXlzPWZ1bmN0aW9uIFRjKHQsZSl7dmFyIG49e307cmV0dXJuIGU9Tm8oZSwzKSxqaSh0LChmdW5jdGlvbih0LGkscil7YWkobixlKHQsaSxyKSx0KX0pKSxufSxWbi5tYXBWYWx1ZXM9ZnVuY3Rpb24gQ2ModCxlKXt2YXIgbj17fTtyZXR1cm4gZT1ObyhlLDMpLGppKHQsKGZ1bmN0aW9uKHQsaSxyKXthaShuLGksZSh0LGkscikpfSkpLG59LFZuLm1hdGNoZXM9ZnVuY3Rpb24gQWModCl7cmV0dXJuIGNyKGNpKHQsMSkpfSxWbi5tYXRjaGVzUHJvcGVydHk9ZnVuY3Rpb24ga2ModCxlKXtyZXR1cm4gdXIodCxjaShlLDEpKX0sVm4ubWVtb2l6ZT1vcyxWbi5tZXJnZT11bCxWbi5tZXJnZVdpdGg9aGwsVm4ubWV0aG9kPXpsLFZuLm1ldGhvZE9mPURsLFZuLm1peGluPUJsLFZuLm5lZ2F0ZT1hcyxWbi5udGhBcmc9ZnVuY3Rpb24gTGModCl7cmV0dXJuIHQ9V3ModCksdnIoKGZ1bmN0aW9uKGUpe3JldHVybiBkcihlLHQpfSkpfSxWbi5vbWl0PWRsLFZuLm9taXRCeT1mdW5jdGlvbiBQYyh0LGUpe3JldHVybiBmbCh0LGFzKE5vKGUpKSl9LFZuLm9uY2U9ZnVuY3Rpb24gTmModCl7cmV0dXJuIFFhKDIsdCl9LFZuLm9yZGVyQnk9ZnVuY3Rpb24gSWMoZSxuLGkscil7cmV0dXJuIG51bGw9PWU/W106KG1zKG4pfHwobj1udWxsPT1uP1tdOltuXSksbXMoaT1yP3Q6aSl8fChpPW51bGw9PWk/W106W2ldKSxwcihlLG4saSkpfSxWbi5vdmVyPUZsLFZuLm92ZXJBcmdzPXNzLFZuLm92ZXJFdmVyeT1WbCxWbi5vdmVyU29tZT1VbCxWbi5wYXJ0aWFsPWxzLFZuLnBhcnRpYWxSaWdodD1jcyxWbi5wYXJ0aXRpb249JGEsVm4ucGljaz1wbCxWbi5waWNrQnk9ZmwsVm4ucHJvcGVydHk9amwsVm4ucHJvcGVydHlPZj1mdW5jdGlvbiBSYyhlKXtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIG51bGw9PWU/dDpxaShlLG4pfX0sVm4ucHVsbD13YSxWbi5wdWxsQWxsPVNhLFZuLnB1bGxBbGxCeT1mdW5jdGlvbiBPYyh0LGUsbil7cmV0dXJuIHQmJnQubGVuZ3RoJiZlJiZlLmxlbmd0aD9tcih0LGUsTm8obiwyKSk6dH0sVm4ucHVsbEFsbFdpdGg9ZnVuY3Rpb24gemMoZSxuLGkpe3JldHVybiBlJiZlLmxlbmd0aCYmbiYmbi5sZW5ndGg/bXIoZSxuLHQsaSk6ZX0sVm4ucHVsbEF0PU1hLFZuLnJhbmdlPUdsLFZuLnJhbmdlUmlnaHQ9V2wsVm4ucmVhcmc9dXMsVm4ucmVqZWN0PWZ1bmN0aW9uIERjKHQsZSl7cmV0dXJuKG1zKHQpP2tlOkhpKSh0LGFzKE5vKGUsMykpKX0sVm4ucmVtb3ZlPWZ1bmN0aW9uIEJjKHQsZSl7dmFyIG49W107aWYoIXR8fCF0Lmxlbmd0aClyZXR1cm4gbjt2YXIgaT0tMSxyPVtdLG89dC5sZW5ndGg7Zm9yKGU9Tm8oZSwzKTsrK2k8bzspe3ZhciBhPXRbaV07ZShhLGksdCkmJihuLnB1c2goYSksci5wdXNoKGkpKX1yZXR1cm4gZ3IodCxyKSxufSxWbi5yZXN0PWZ1bmN0aW9uIEhjKG4saSl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIG4pdGhyb3cgbmV3IEx0KGUpO3JldHVybiB2cihuLGk9aT09PXQ/aTpXcyhpKSl9LFZuLnJldmVyc2U9RWEsVm4uc2FtcGxlU2l6ZT1mdW5jdGlvbiBGYyhlLG4saSl7cmV0dXJuIG49KGk/am8oZSxuLGkpOm49PT10KT8xOldzKG4pLChtcyhlKT9Rbjp4cikoZSxuKX0sVm4uc2V0PWZ1bmN0aW9uIFZjKHQsZSxuKXtyZXR1cm4gbnVsbD09dD90OndyKHQsZSxuKX0sVm4uc2V0V2l0aD1mdW5jdGlvbiBVYyhlLG4saSxyKXtyZXR1cm4gcj0iZnVuY3Rpb24iPT10eXBlb2Ygcj9yOnQsbnVsbD09ZT9lOndyKGUsbixpLHIpfSxWbi5zaHVmZmxlPWZ1bmN0aW9uIGpjKHQpe3JldHVybihtcyh0KT90aTpFcikodCl9LFZuLnNsaWNlPWZ1bmN0aW9uIEdjKGUsbixpKXt2YXIgcj1udWxsPT1lPzA6ZS5sZW5ndGg7cmV0dXJuIHI/KGkmJiJudW1iZXIiIT10eXBlb2YgaSYmam8oZSxuLGkpPyhuPTAsaT1yKToobj1udWxsPT1uPzA6V3MobiksaT1pPT09dD9yOldzKGkpKSxUcihlLG4saSkpOltdfSxWbi5zb3J0Qnk9S2EsVm4uc29ydGVkVW5pcT1mdW5jdGlvbiBXYyh0KXtyZXR1cm4gdCYmdC5sZW5ndGg/THIodCk6W119LFZuLnNvcnRlZFVuaXFCeT1mdW5jdGlvbiBxYyh0LGUpe3JldHVybiB0JiZ0Lmxlbmd0aD9Mcih0LE5vKGUsMikpOltdfSxWbi5zcGxpdD1mdW5jdGlvbiBZYyhlLG4saSl7cmV0dXJuIGkmJiJudW1iZXIiIT10eXBlb2YgaSYmam8oZSxuLGkpJiYobj1pPXQpLChpPWk9PT10P2Q6aT4+PjApPyhlPSRzKGUpKSYmKCJzdHJpbmciPT10eXBlb2Ygbnx8bnVsbCE9biYmIUlzKG4pKSYmIShuPU5yKG4pKSYmYW4oZSk/R3IocG4oZSksMCxpKTplLnNwbGl0KG4saSk6W119LFZuLnNwcmVhZD1mdW5jdGlvbiBYYyh0LG4pe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0KXRocm93IG5ldyBMdChlKTtyZXR1cm4gbj1udWxsPT1uPzA6dm4oV3MobiksMCksdnIoKGZ1bmN0aW9uKGUpe3ZhciBpPWVbbl0scj1HcihlLDAsbik7cmV0dXJuIGkmJkllKHIsaSkseGUodCx0aGlzLHIpfSkpfSxWbi50YWlsPWZ1bmN0aW9uICRjKHQpe3ZhciBlPW51bGw9PXQ/MDp0Lmxlbmd0aDtyZXR1cm4gZT9Ucih0LDEsZSk6W119LFZuLnRha2U9ZnVuY3Rpb24gS2MoZSxuLGkpe3JldHVybiBlJiZlLmxlbmd0aD9UcihlLDAsKG49aXx8bj09PXQ/MTpXcyhuKSk8MD8wOm4pOltdfSxWbi50YWtlUmlnaHQ9ZnVuY3Rpb24gWmMoZSxuLGkpe3ZhciByPW51bGw9PWU/MDplLmxlbmd0aDtyZXR1cm4gcj9UcihlLChuPXItKG49aXx8bj09PXQ/MTpXcyhuKSkpPDA/MDpuLHIpOltdfSxWbi50YWtlUmlnaHRXaGlsZT1mdW5jdGlvbiBKYyh0LGUpe3JldHVybiB0JiZ0Lmxlbmd0aD96cih0LE5vKGUsMyksITEsITApOltdfSxWbi50YWtlV2hpbGU9ZnVuY3Rpb24gUWModCxlKXtyZXR1cm4gdCYmdC5sZW5ndGg/enIodCxObyhlLDMpKTpbXX0sVm4udGFwPWZ1bmN0aW9uIHR1KHQsZSl7cmV0dXJuIGUodCksdH0sVm4udGhyb3R0bGU9ZnVuY3Rpb24gZXUodCxuLGkpe3ZhciByPSEwLG89ITA7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQpdGhyb3cgbmV3IEx0KGUpO3JldHVybiBDcyhpKSYmKHI9ImxlYWRpbmciaW4gaT8hIWkubGVhZGluZzpyLG89InRyYWlsaW5nImluIGk/ISFpLnRyYWlsaW5nOm8pLG5zKHQsbix7bGVhZGluZzpyLG1heFdhaXQ6bix0cmFpbGluZzpvfSl9LFZuLnRocnU9QmEsVm4udG9BcnJheT1qcyxWbi50b1BhaXJzPW1sLFZuLnRvUGFpcnNJbj1nbCxWbi50b1BhdGg9ZnVuY3Rpb24gbnUodCl7cmV0dXJuIG1zKHQpP05lKHQsbGEpOkJzKHQpP1t0XTpKcihhYSgkcyh0KSkpfSxWbi50b1BsYWluT2JqZWN0PVhzLFZuLnRyYW5zZm9ybT1mdW5jdGlvbiBpdSh0LGUsbil7dmFyIGk9bXModCkscj1pfHxicyh0KXx8SHModCk7aWYoZT1ObyhlLDQpLG51bGw9PW4pe3ZhciBvPXQmJnQuY29uc3RydWN0b3I7bj1yP2k/bmV3IG86W106Q3ModCkmJk1zKG8pP1VuKHF0KHQpKTp7fX1yZXR1cm4ocj9NZTpqaSkodCwoZnVuY3Rpb24odCxpLHIpe3JldHVybiBlKG4sdCxpLHIpfSkpLG59LFZuLnVuYXJ5PWZ1bmN0aW9uIHJ1KHQpe3JldHVybiBKYSh0LDEpfSxWbi51bmlvbj1UYSxWbi51bmlvbkJ5PUNhLFZuLnVuaW9uV2l0aD1BYSxWbi51bmlxPWZ1bmN0aW9uIG91KHQpe3JldHVybiB0JiZ0Lmxlbmd0aD9Jcih0KTpbXX0sVm4udW5pcUJ5PWZ1bmN0aW9uIGF1KHQsZSl7cmV0dXJuIHQmJnQubGVuZ3RoP0lyKHQsTm8oZSwyKSk6W119LFZuLnVuaXFXaXRoPWZ1bmN0aW9uIHN1KGUsbil7cmV0dXJuIG49ImZ1bmN0aW9uIj09dHlwZW9mIG4/bjp0LGUmJmUubGVuZ3RoP0lyKGUsdCxuKTpbXX0sVm4udW5zZXQ9ZnVuY3Rpb24gbHUodCxlKXtyZXR1cm4gbnVsbD09dHx8UnIodCxlKX0sVm4udW56aXA9a2EsVm4udW56aXBXaXRoPUxhLFZuLnVwZGF0ZT1mdW5jdGlvbiBjdSh0LGUsbil7cmV0dXJuIG51bGw9PXQ/dDpPcih0LGUsVnIobikpfSxWbi51cGRhdGVXaXRoPWZ1bmN0aW9uIHV1KGUsbixpLHIpe3JldHVybiByPSJmdW5jdGlvbiI9PXR5cGVvZiByP3I6dCxudWxsPT1lP2U6T3IoZSxuLFZyKGkpLHIpfSxWbi52YWx1ZXM9X2wsVm4udmFsdWVzSW49ZnVuY3Rpb24gaHUodCl7cmV0dXJuIG51bGw9PXQ/W106WmUodCxjbCh0KSl9LFZuLndpdGhvdXQ9UGEsVm4ud29yZHM9QWwsVm4ud3JhcD1mdW5jdGlvbiBkdSh0LGUpe3JldHVybiBscyhWcihlKSx0KX0sVm4ueG9yPU5hLFZuLnhvckJ5PUlhLFZuLnhvcldpdGg9UmEsVm4uemlwPU9hLFZuLnppcE9iamVjdD1mdW5jdGlvbiBwdSh0LGUpe3JldHVybiBIcih0fHxbXSxlfHxbXSxuaSl9LFZuLnppcE9iamVjdERlZXA9ZnVuY3Rpb24gZnUodCxlKXtyZXR1cm4gSHIodHx8W10sZXx8W10sd3IpfSxWbi56aXBXaXRoPXphLFZuLmVudHJpZXM9bWwsVm4uZW50cmllc0luPWdsLFZuLmV4dGVuZD1acyxWbi5leHRlbmRXaXRoPUpzLEJsKFZuLFZuKSxWbi5hZGQ9JGwsVm4uYXR0ZW1wdD1rbCxWbi5jYW1lbENhc2U9eWwsVm4uY2FwaXRhbGl6ZT12bCxWbi5jZWlsPUtsLFZuLmNsYW1wPWZ1bmN0aW9uIG11KGUsbixpKXtyZXR1cm4gaT09PXQmJihpPW4sbj10KSxpIT09dCYmKGk9KGk9WXMoaSkpPT1pP2k6MCksbiE9PXQmJihuPShuPVlzKG4pKT09bj9uOjApLGxpKFlzKGUpLG4saSl9LFZuLmNsb25lPWZ1bmN0aW9uIGd1KHQpe3JldHVybiBjaSh0LDQpfSxWbi5jbG9uZURlZXA9ZnVuY3Rpb24gX3UodCl7cmV0dXJuIGNpKHQsNSl9LFZuLmNsb25lRGVlcFdpdGg9ZnVuY3Rpb24geXUoZSxuKXtyZXR1cm4gY2koZSw1LG49ImZ1bmN0aW9uIj09dHlwZW9mIG4/bjp0KX0sVm4uY2xvbmVXaXRoPWZ1bmN0aW9uIHZ1KGUsbil7cmV0dXJuIGNpKGUsNCxuPSJmdW5jdGlvbiI9PXR5cGVvZiBuP246dCl9LFZuLmNvbmZvcm1zVG89ZnVuY3Rpb24gYnUodCxlKXtyZXR1cm4gbnVsbD09ZXx8dWkodCxlLGxsKGUpKX0sVm4uZGVidXJyPWJsLFZuLmRlZmF1bHRUbz1mdW5jdGlvbiB4dSh0LGUpe3JldHVybiBudWxsPT10fHx0IT10P2U6dH0sVm4uZGl2aWRlPVpsLFZuLmVuZHNXaXRoPWZ1bmN0aW9uIHd1KGUsbixpKXtlPSRzKGUpLG49TnIobik7dmFyIHI9ZS5sZW5ndGgsbz1pPWk9PT10P3I6bGkoV3MoaSksMCxyKTtyZXR1cm4oaS09bi5sZW5ndGgpPj0wJiZlLnNsaWNlKGksbyk9PW59LFZuLmVxPWhzLFZuLmVzY2FwZT1mdW5jdGlvbiBTdSh0KXtyZXR1cm4odD0kcyh0KSkmJlkudGVzdCh0KT90LnJlcGxhY2UoVyxybik6dH0sVm4uZXNjYXBlUmVnRXhwPWZ1bmN0aW9uIE11KHQpe3JldHVybih0PSRzKHQpKSYmZXQudGVzdCh0KT90LnJlcGxhY2UodHQsIlxcJCYiKTp0fSxWbi5ldmVyeT1mdW5jdGlvbiBFdShlLG4saSl7dmFyIHI9bXMoZSk/QWU6RGk7cmV0dXJuIGkmJmpvKGUsbixpKSYmKG49dCkscihlLE5vKG4sMykpfSxWbi5maW5kPVZhLFZuLmZpbmRJbmRleD1mYSxWbi5maW5kS2V5PWZ1bmN0aW9uIFR1KHQsZSl7cmV0dXJuIEJlKHQsTm8oZSwzKSxqaSl9LFZuLmZpbmRMYXN0PVVhLFZuLmZpbmRMYXN0SW5kZXg9bWEsVm4uZmluZExhc3RLZXk9ZnVuY3Rpb24gQ3UodCxlKXtyZXR1cm4gQmUodCxObyhlLDMpLEdpKX0sVm4uZmxvb3I9SmwsVm4uZm9yRWFjaD1qYSxWbi5mb3JFYWNoUmlnaHQ9R2EsVm4uZm9ySW49ZnVuY3Rpb24gQXUodCxlKXtyZXR1cm4gbnVsbD09dD90OlZpKHQsTm8oZSwzKSxjbCl9LFZuLmZvckluUmlnaHQ9ZnVuY3Rpb24ga3UodCxlKXtyZXR1cm4gbnVsbD09dD90OlVpKHQsTm8oZSwzKSxjbCl9LFZuLmZvck93bj1mdW5jdGlvbiBMdSh0LGUpe3JldHVybiB0JiZqaSh0LE5vKGUsMykpfSxWbi5mb3JPd25SaWdodD1mdW5jdGlvbiBQdSh0LGUpe3JldHVybiB0JiZHaSh0LE5vKGUsMykpfSxWbi5nZXQ9aWwsVm4uZ3Q9ZHMsVm4uZ3RlPXBzLFZuLmhhcz1mdW5jdGlvbiBOdSh0LGUpe3JldHVybiBudWxsIT10JiZIbyh0LGUsS2kpfSxWbi5oYXNJbj1ybCxWbi5oZWFkPV9hLFZuLmlkZW50aXR5PVJsLFZuLmluY2x1ZGVzPWZ1bmN0aW9uIEl1KHQsZSxuLGkpe3Q9eXModCk/dDpfbCh0KSxuPW4mJiFpP1dzKG4pOjA7dmFyIHI9dC5sZW5ndGg7cmV0dXJuIG48MCYmKG49dm4ocituLDApKSxEcyh0KT9uPD1yJiZ0LmluZGV4T2YoZSxuKT4tMTohIXImJkZlKHQsZSxuKT4tMX0sVm4uaW5kZXhPZj1mdW5jdGlvbiBSdSh0LGUsbil7dmFyIGk9bnVsbD09dD8wOnQubGVuZ3RoO2lmKCFpKXJldHVybi0xO3ZhciByPW51bGw9PW4/MDpXcyhuKTtyZXR1cm4gcjwwJiYocj12bihpK3IsMCkpLEZlKHQsZSxyKX0sVm4uaW5SYW5nZT1mdW5jdGlvbiBPdShlLG4saSl7cmV0dXJuIG49R3MobiksaT09PXQ/KGk9bixuPTApOmk9R3MoaSksKGZ1bmN0aW9uIHIodCxlLG4pe3JldHVybiB0Pj1ibihlLG4pJiZ0PHZuKGUsbil9KShlPVlzKGUpLG4saSl9LFZuLmludm9rZT1zbCxWbi5pc0FyZ3VtZW50cz1mcyxWbi5pc0FycmF5PW1zLFZuLmlzQXJyYXlCdWZmZXI9Z3MsVm4uaXNBcnJheUxpa2U9eXMsVm4uaXNBcnJheUxpa2VPYmplY3Q9dnMsVm4uaXNCb29sZWFuPWZ1bmN0aW9uIHp1KHQpe3JldHVybiEwPT09dHx8ITE9PT10fHxBcyh0KSYmWGkodCk9PWd9LFZuLmlzQnVmZmVyPWJzLFZuLmlzRGF0ZT14cyxWbi5pc0VsZW1lbnQ9ZnVuY3Rpb24gRHUodCl7cmV0dXJuIEFzKHQpJiYxPT09dC5ub2RlVHlwZSYmIU5zKHQpfSxWbi5pc0VtcHR5PWZ1bmN0aW9uIEJ1KHQpe2lmKG51bGw9PXQpcmV0dXJuITA7aWYoeXModCkmJihtcyh0KXx8InN0cmluZyI9PXR5cGVvZiB0fHwiZnVuY3Rpb24iPT10eXBlb2YgdC5zcGxpY2V8fGJzKHQpfHxIcyh0KXx8ZnModCkpKXJldHVybiF0Lmxlbmd0aDt2YXIgZT1Cbyh0KTtpZihlPT14fHxlPT1UKXJldHVybiF0LnNpemU7aWYoWW8odCkpcmV0dXJuIW9yKHQpLmxlbmd0aDtmb3IodmFyIG4gaW4gdClpZihPdC5jYWxsKHQsbikpcmV0dXJuITE7cmV0dXJuITB9LFZuLmlzRXF1YWw9ZnVuY3Rpb24gSHUodCxlKXtyZXR1cm4gZXIodCxlKX0sVm4uaXNFcXVhbFdpdGg9ZnVuY3Rpb24gRnUoZSxuLGkpe3ZhciByPShpPSJmdW5jdGlvbiI9PXR5cGVvZiBpP2k6dCk/aShlLG4pOnQ7cmV0dXJuIHI9PT10P2VyKGUsbix0LGkpOiEhcn0sVm4uaXNFcnJvcj1TcyxWbi5pc0Zpbml0ZT1mdW5jdGlvbiBWdSh0KXtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIHQmJldlKHQpfSxWbi5pc0Z1bmN0aW9uPU1zLFZuLmlzSW50ZWdlcj1FcyxWbi5pc0xlbmd0aD1UcyxWbi5pc01hcD1rcyxWbi5pc01hdGNoPWZ1bmN0aW9uIFV1KHQsZSl7cmV0dXJuIHQ9PT1lfHxucih0LGUsUm8oZSkpfSxWbi5pc01hdGNoV2l0aD1mdW5jdGlvbiBqdShlLG4saSl7cmV0dXJuIGk9ImZ1bmN0aW9uIj09dHlwZW9mIGk/aTp0LG5yKGUsbixSbyhuKSxpKX0sVm4uaXNOYU49ZnVuY3Rpb24gR3UodCl7cmV0dXJuIFBzKHQpJiZ0IT0rdH0sVm4uaXNOYXRpdmU9ZnVuY3Rpb24gV3UodCl7aWYocW8odCkpdGhyb3cgbmV3IE10KCJVbnN1cHBvcnRlZCBjb3JlLWpzIHVzZS4gVHJ5IGh0dHBzOi8vbnBtcy5pby9zZWFyY2g/cT1wb255ZmlsbC4iKTtyZXR1cm4gaXIodCl9LFZuLmlzTmlsPWZ1bmN0aW9uIHF1KHQpe3JldHVybiBudWxsPT10fSxWbi5pc051bGw9ZnVuY3Rpb24gWXUodCl7cmV0dXJuIG51bGw9PT10fSxWbi5pc051bWJlcj1QcyxWbi5pc09iamVjdD1DcyxWbi5pc09iamVjdExpa2U9QXMsVm4uaXNQbGFpbk9iamVjdD1OcyxWbi5pc1JlZ0V4cD1JcyxWbi5pc1NhZmVJbnRlZ2VyPWZ1bmN0aW9uIFh1KHQpe3JldHVybiBFcyh0KSYmdD49LTkwMDcxOTkyNTQ3NDA5OTEmJnQ8PXV9LFZuLmlzU2V0PU9zLFZuLmlzU3RyaW5nPURzLFZuLmlzU3ltYm9sPUJzLFZuLmlzVHlwZWRBcnJheT1IcyxWbi5pc1VuZGVmaW5lZD1mdW5jdGlvbiAkdShlKXtyZXR1cm4gZT09PXR9LFZuLmlzV2Vha01hcD1mdW5jdGlvbiBLdSh0KXtyZXR1cm4gQXModCkmJkJvKHQpPT1rfSxWbi5pc1dlYWtTZXQ9ZnVuY3Rpb24gWnUodCl7cmV0dXJuIEFzKHQpJiYiW29iamVjdCBXZWFrU2V0XSI9PVhpKHQpfSxWbi5qb2luPWZ1bmN0aW9uIEp1KHQsZSl7cmV0dXJuIG51bGw9PXQ/IiI6X24uY2FsbCh0LGUpfSxWbi5rZWJhYkNhc2U9eGwsVm4ubGFzdD14YSxWbi5sYXN0SW5kZXhPZj1mdW5jdGlvbiBRdShlLG4saSl7dmFyIHI9bnVsbD09ZT8wOmUubGVuZ3RoO2lmKCFyKXJldHVybi0xO3ZhciBvPXI7cmV0dXJuIGkhPT10JiYobz0obz1XcyhpKSk8MD92bihyK28sMCk6Ym4obyxyLTEpKSxuPT1uPyhmdW5jdGlvbiBhKHQsZSxuKXtmb3IodmFyIGk9bisxO2ktLTspaWYodFtpXT09PWUpcmV0dXJuIGk7cmV0dXJuIGl9KShlLG4sbyk6SGUoZSxVZSxvLCEwKX0sVm4ubG93ZXJDYXNlPXdsLFZuLmxvd2VyRmlyc3Q9U2wsVm4ubHQ9VnMsVm4ubHRlPVVzLFZuLm1heD1mdW5jdGlvbiB0aChlKXtyZXR1cm4gZSYmZS5sZW5ndGg/QmkoZSxSbCwkaSk6dH0sVm4ubWF4Qnk9ZnVuY3Rpb24gZWgoZSxuKXtyZXR1cm4gZSYmZS5sZW5ndGg/QmkoZSxObyhuLDIpLCRpKTp0fSxWbi5tZWFuPWZ1bmN0aW9uIG5oKHQpe3JldHVybiBqZSh0LFJsKX0sVm4ubWVhbkJ5PWZ1bmN0aW9uIGloKHQsZSl7cmV0dXJuIGplKHQsTm8oZSwyKSl9LFZuLm1pbj1mdW5jdGlvbiByaChlKXtyZXR1cm4gZSYmZS5sZW5ndGg/QmkoZSxSbCxzcik6dH0sVm4ubWluQnk9ZnVuY3Rpb24gb2goZSxuKXtyZXR1cm4gZSYmZS5sZW5ndGg/QmkoZSxObyhuLDIpLHNyKTp0fSxWbi5zdHViQXJyYXk9cWwsVm4uc3R1YkZhbHNlPVlsLFZuLnN0dWJPYmplY3Q9ZnVuY3Rpb24gYWgoKXtyZXR1cm57fX0sVm4uc3R1YlN0cmluZz1mdW5jdGlvbiBzaCgpe3JldHVybiIifSxWbi5zdHViVHJ1ZT1mdW5jdGlvbiBsaCgpe3JldHVybiEwfSxWbi5tdWx0aXBseT1RbCxWbi5udGg9ZnVuY3Rpb24gY2goZSxuKXtyZXR1cm4gZSYmZS5sZW5ndGg/ZHIoZSxXcyhuKSk6dH0sVm4ubm9Db25mbGljdD1mdW5jdGlvbiB1aCgpe3JldHVybiBjZS5fPT09dGhpcyYmKGNlLl89RnQpLHRoaXN9LFZuLm5vb3A9SGwsVm4ubm93PVphLFZuLnBhZD1mdW5jdGlvbiBoaCh0LGUsbil7dD0kcyh0KTt2YXIgaT0oZT1XcyhlKSk/ZG4odCk6MDtpZighZXx8aT49ZSlyZXR1cm4gdDt2YXIgcj0oZS1pKS8yO3JldHVybiBmbyhFZShyKSxuKSt0K2ZvKFNlKHIpLG4pfSxWbi5wYWRFbmQ9ZnVuY3Rpb24gZGgodCxlLG4pe3Q9JHModCk7dmFyIGk9KGU9V3MoZSkpP2RuKHQpOjA7cmV0dXJuIGUmJmk8ZT90K2ZvKGUtaSxuKTp0fSxWbi5wYWRTdGFydD1mdW5jdGlvbiBwaCh0LGUsbil7dD0kcyh0KTt2YXIgaT0oZT1XcyhlKSk/ZG4odCk6MDtyZXR1cm4gZSYmaTxlP2ZvKGUtaSxuKSt0OnR9LFZuLnBhcnNlSW50PWZ1bmN0aW9uIGZoKHQsZSxuKXtyZXR1cm4gbnx8bnVsbD09ZT9lPTA6ZSYmKGU9K2UpLHduKCRzKHQpLnJlcGxhY2UobnQsIiIpLGV8fDApfSxWbi5yYW5kb209ZnVuY3Rpb24gbWgoZSxuLGkpe2lmKGkmJiJib29sZWFuIiE9dHlwZW9mIGkmJmpvKGUsbixpKSYmKG49aT10KSxpPT09dCYmKCJib29sZWFuIj09dHlwZW9mIG4/KGk9bixuPXQpOiJib29sZWFuIj09dHlwZW9mIGUmJihpPWUsZT10KSksZT09PXQmJm49PT10PyhlPTAsbj0xKTooZT1HcyhlKSxuPT09dD8obj1lLGU9MCk6bj1HcyhuKSksZT5uKXt2YXIgcj1lO2U9bixuPXJ9aWYoaXx8ZSUxfHxuJTEpe3ZhciBvPVNuKCk7cmV0dXJuIGJuKGUrbyoobi1lK29lKCIxZS0iKygobysiIikubGVuZ3RoLTEpKSksbil9cmV0dXJuIF9yKGUsbil9LFZuLnJlZHVjZT1mdW5jdGlvbiBnaCh0LGUsbil7dmFyIGk9bXModCk/UmU6cWUscj1hcmd1bWVudHMubGVuZ3RoPDM7cmV0dXJuIGkodCxObyhlLDQpLG4scixPaSl9LFZuLnJlZHVjZVJpZ2h0PWZ1bmN0aW9uIF9oKHQsZSxuKXt2YXIgaT1tcyh0KT9PZTpxZSxyPWFyZ3VtZW50cy5sZW5ndGg8MztyZXR1cm4gaSh0LE5vKGUsNCksbixyLHppKX0sVm4ucmVwZWF0PWZ1bmN0aW9uIHloKGUsbixpKXtyZXR1cm4gbj0oaT9qbyhlLG4saSk6bj09PXQpPzE6V3MobikseXIoJHMoZSksbil9LFZuLnJlcGxhY2U9ZnVuY3Rpb24gdmgoKXt2YXIgdD1hcmd1bWVudHMsZT0kcyh0WzBdKTtyZXR1cm4gdC5sZW5ndGg8Mz9lOmUucmVwbGFjZSh0WzFdLHRbMl0pfSxWbi5yZXN1bHQ9ZnVuY3Rpb24gYmgoZSxuLGkpe3ZhciByPS0xLG89KG49VXIobixlKSkubGVuZ3RoO2ZvcihvfHwobz0xLGU9dCk7KytyPG87KXt2YXIgYT1udWxsPT1lP3Q6ZVtsYShuW3JdKV07YT09PXQmJihyPW8sYT1pKSxlPU1zKGEpP2EuY2FsbChlKTphfXJldHVybiBlfSxWbi5yb3VuZD10YyxWbi5ydW5JbkNvbnRleHQ9aXQsVm4uc2FtcGxlPWZ1bmN0aW9uIHhoKHQpe3JldHVybihtcyh0KT9KbjpicikodCl9LFZuLnNpemU9ZnVuY3Rpb24gd2godCl7aWYobnVsbD09dClyZXR1cm4gMDtpZih5cyh0KSlyZXR1cm4gRHModCk/ZG4odCk6dC5sZW5ndGg7dmFyIGU9Qm8odCk7cmV0dXJuIGU9PXh8fGU9PVQ/dC5zaXplOm9yKHQpLmxlbmd0aH0sVm4uc25ha2VDYXNlPU1sLFZuLnNvbWU9ZnVuY3Rpb24gU2goZSxuLGkpe3ZhciByPW1zKGUpP3plOkNyO3JldHVybiBpJiZqbyhlLG4saSkmJihuPXQpLHIoZSxObyhuLDMpKX0sVm4uc29ydGVkSW5kZXg9ZnVuY3Rpb24gTWgodCxlKXtyZXR1cm4gQXIodCxlKX0sVm4uc29ydGVkSW5kZXhCeT1mdW5jdGlvbiBFaCh0LGUsbil7cmV0dXJuIGtyKHQsZSxObyhuLDIpKX0sVm4uc29ydGVkSW5kZXhPZj1mdW5jdGlvbiBUaCh0LGUpe3ZhciBuPW51bGw9PXQ/MDp0Lmxlbmd0aDtpZihuKXt2YXIgaT1Bcih0LGUpO2lmKGk8biYmaHModFtpXSxlKSlyZXR1cm4gaX1yZXR1cm4tMX0sVm4uc29ydGVkTGFzdEluZGV4PWZ1bmN0aW9uIENoKHQsZSl7cmV0dXJuIEFyKHQsZSwhMCl9LFZuLnNvcnRlZExhc3RJbmRleEJ5PWZ1bmN0aW9uIEFoKHQsZSxuKXtyZXR1cm4ga3IodCxlLE5vKG4sMiksITApfSxWbi5zb3J0ZWRMYXN0SW5kZXhPZj1mdW5jdGlvbiBraCh0LGUpe2lmKG51bGwhPXQmJnQubGVuZ3RoKXt2YXIgbj1Bcih0LGUsITApLTE7aWYoaHModFtuXSxlKSlyZXR1cm4gbn1yZXR1cm4tMX0sVm4uc3RhcnRDYXNlPUVsLFZuLnN0YXJ0c1dpdGg9ZnVuY3Rpb24gTGgodCxlLG4pe3JldHVybiB0PSRzKHQpLG49bnVsbD09bj8wOmxpKFdzKG4pLDAsdC5sZW5ndGgpLGU9TnIoZSksdC5zbGljZShuLG4rZS5sZW5ndGgpPT1lfSxWbi5zdWJ0cmFjdD1lYyxWbi5zdW09ZnVuY3Rpb24gUGgodCl7cmV0dXJuIHQmJnQubGVuZ3RoP1llKHQsUmwpOjB9LFZuLnN1bUJ5PWZ1bmN0aW9uIE5oKHQsZSl7cmV0dXJuIHQmJnQubGVuZ3RoP1llKHQsTm8oZSwyKSk6MH0sVm4udGVtcGxhdGU9ZnVuY3Rpb24gSWgoZSxuLGkpe3ZhciByPVZuLnRlbXBsYXRlU2V0dGluZ3M7aSYmam8oZSxuLGkpJiYobj10KSxlPSRzKGUpLG49SnMoe30sbixyLHdvKTt2YXIgbyxhLHM9SnMoe30sbi5pbXBvcnRzLHIuaW1wb3J0cyx3byksbD1sbChzKSxjPVplKHMsbCksdT0wLGg9bi5pbnRlcnBvbGF0ZXx8eXQsZD0iX19wICs9ICciLHA9QXQoKG4uZXNjYXBlfHx5dCkuc291cmNlKyJ8IitoLnNvdXJjZSsifCIrKGg9PT1LP3V0Onl0KS5zb3VyY2UrInwiKyhuLmV2YWx1YXRlfHx5dCkuc291cmNlKyJ8JCIsImciKSxmPSIvLyMgc291cmNlVVJMPSIrKE90LmNhbGwobiwic291cmNlVVJMIik/KG4uc291cmNlVVJMKyIiKS5yZXBsYWNlKC9ccy9nLCIgIik6ImxvZGFzaC50ZW1wbGF0ZVNvdXJjZXNbIisgKytlZSsiXSIpKyJcbiI7ZS5yZXBsYWNlKHAsKGZ1bmN0aW9uKHQsbixpLHIscyxsKXtyZXR1cm4gaXx8KGk9ciksZCs9ZS5zbGljZSh1LGwpLnJlcGxhY2UodnQsb24pLG4mJihvPSEwLGQrPSInICtcbl9fZSgiK24rIikgK1xuJyIpLHMmJihhPSEwLGQrPSInO1xuIitzKyI7XG5fX3AgKz0gJyIpLGkmJihkKz0iJyArXG4oKF9fdCA9ICgiK2krIikpID09IG51bGwgPyAnJyA6IF9fdCkgK1xuJyIpLHU9bCt0Lmxlbmd0aCx0fSkpLGQrPSInO1xuIjt2YXIgbT1PdC5jYWxsKG4sInZhcmlhYmxlIikmJm4udmFyaWFibGU7aWYobSl7aWYobHQudGVzdChtKSl0aHJvdyBuZXcgTXQoIkludmFsaWQgYHZhcmlhYmxlYCBvcHRpb24gcGFzc2VkIGludG8gYF8udGVtcGxhdGVgIil9ZWxzZSBkPSJ3aXRoIChvYmopIHtcbiIrZCsiXG59XG4iO2Q9KGE/ZC5yZXBsYWNlKFYsIiIpOmQpLnJlcGxhY2UoVSwiJDEiKS5yZXBsYWNlKGosIiQxOyIpLGQ9ImZ1bmN0aW9uKCIrKG18fCJvYmoiKSsiKSB7XG4iKyhtPyIiOiJvYmogfHwgKG9iaiA9IHt9KTtcbiIpKyJ2YXIgX190LCBfX3AgPSAnJyIrKG8/IiwgX19lID0gXy5lc2NhcGUiOiIiKSsoYT8iLCBfX2ogPSBBcnJheS5wcm90b3R5cGUuam9pbjtcbmZ1bmN0aW9uIHByaW50KCkgeyBfX3AgKz0gX19qLmNhbGwoYXJndW1lbnRzLCAnJykgfVxuIjoiO1xuIikrZCsicmV0dXJuIF9fcFxufSI7dmFyIGc9a2woKGZ1bmN0aW9uKCl7cmV0dXJuIEV0KGwsZisicmV0dXJuICIrZCkuYXBwbHkodCxjKX0pKTtpZihnLnNvdXJjZT1kLFNzKGcpKXRocm93IGc7cmV0dXJuIGd9LFZuLnRpbWVzPWZ1bmN0aW9uIFJoKHQsZSl7aWYoKHQ9V3ModCkpPDF8fHQ+dSlyZXR1cm5bXTt2YXIgbj1kLGk9Ym4odCxkKTtlPU5vKGUpLHQtPWQ7Zm9yKHZhciByPVhlKGksZSk7KytuPHQ7KWUobik7cmV0dXJuIHJ9LFZuLnRvRmluaXRlPUdzLFZuLnRvSW50ZWdlcj1XcyxWbi50b0xlbmd0aD1xcyxWbi50b0xvd2VyPWZ1bmN0aW9uIE9oKHQpe3JldHVybiAkcyh0KS50b0xvd2VyQ2FzZSgpfSxWbi50b051bWJlcj1ZcyxWbi50b1NhZmVJbnRlZ2VyPWZ1bmN0aW9uIHpoKHQpe3JldHVybiB0P2xpKFdzKHQpLC05MDA3MTk5MjU0NzQwOTkxLHUpOjA9PT10P3Q6MH0sVm4udG9TdHJpbmc9JHMsVm4udG9VcHBlcj1mdW5jdGlvbiBEaCh0KXtyZXR1cm4gJHModCkudG9VcHBlckNhc2UoKX0sVm4udHJpbT1mdW5jdGlvbiBCaChlLG4saSl7aWYoKGU9JHMoZSkpJiYoaXx8bj09PXQpKXJldHVybiAkZShlKTtpZighZXx8IShuPU5yKG4pKSlyZXR1cm4gZTt2YXIgcj1wbihlKSxvPXBuKG4pO3JldHVybiBHcihyLFFlKHIsbyksdG4ocixvKSsxKS5qb2luKCIiKX0sVm4udHJpbUVuZD1mdW5jdGlvbiBIaChlLG4saSl7aWYoKGU9JHMoZSkpJiYoaXx8bj09PXQpKXJldHVybiBlLnNsaWNlKDAsZm4oZSkrMSk7aWYoIWV8fCEobj1OcihuKSkpcmV0dXJuIGU7dmFyIHI9cG4oZSk7cmV0dXJuIEdyKHIsMCx0bihyLHBuKG4pKSsxKS5qb2luKCIiKX0sVm4udHJpbVN0YXJ0PWZ1bmN0aW9uIEZoKGUsbixpKXtpZigoZT0kcyhlKSkmJihpfHxuPT09dCkpcmV0dXJuIGUucmVwbGFjZShudCwiIik7aWYoIWV8fCEobj1OcihuKSkpcmV0dXJuIGU7dmFyIHI9cG4oZSk7cmV0dXJuIEdyKHIsUWUocixwbihuKSkpLmpvaW4oIiIpfSxWbi50cnVuY2F0ZT1mdW5jdGlvbiBWaChlLG4pe3ZhciBpPTMwLHI9Ii4uLiI7aWYoQ3Mobikpe3ZhciBvPSJzZXBhcmF0b3IiaW4gbj9uLnNlcGFyYXRvcjpvO2k9Imxlbmd0aCJpbiBuP1dzKG4ubGVuZ3RoKTppLHI9Im9taXNzaW9uImluIG4/TnIobi5vbWlzc2lvbik6cn12YXIgYT0oZT0kcyhlKSkubGVuZ3RoO2lmKGFuKGUpKXt2YXIgcz1wbihlKTthPXMubGVuZ3RofWlmKGk+PWEpcmV0dXJuIGU7dmFyIGw9aS1kbihyKTtpZihsPDEpcmV0dXJuIHI7dmFyIGM9cz9HcihzLDAsbCkuam9pbigiIik6ZS5zbGljZSgwLGwpO2lmKG89PT10KXJldHVybiBjK3I7aWYocyYmKGwrPWMubGVuZ3RoLWwpLElzKG8pKXtpZihlLnNsaWNlKGwpLnNlYXJjaChvKSl7dmFyIHUsaD1jO2ZvcihvLmdsb2JhbHx8KG89QXQoby5zb3VyY2UsJHMoaHQuZXhlYyhvKSkrImciKSksby5sYXN0SW5kZXg9MDt1PW8uZXhlYyhoKTspdmFyIGQ9dS5pbmRleDtjPWMuc2xpY2UoMCxkPT09dD9sOmQpfX1lbHNlIGlmKGUuaW5kZXhPZihOcihvKSxsKSE9bCl7dmFyIHA9Yy5sYXN0SW5kZXhPZihvKTtwPi0xJiYoYz1jLnNsaWNlKDAscCkpfXJldHVybiBjK3J9LFZuLnVuZXNjYXBlPWZ1bmN0aW9uIFVoKHQpe3JldHVybih0PSRzKHQpKSYmcS50ZXN0KHQpP3QucmVwbGFjZShHLG1uKTp0fSxWbi51bmlxdWVJZD1mdW5jdGlvbiBqaCh0KXt2YXIgZT0rK3p0O3JldHVybiAkcyh0KStlfSxWbi51cHBlckNhc2U9VGwsVm4udXBwZXJGaXJzdD1DbCxWbi5lYWNoPWphLFZuLmVhY2hSaWdodD1HYSxWbi5maXJzdD1fYSxCbChWbiwoWGw9e30samkoVm4sKGZ1bmN0aW9uKHQsZSl7T3QuY2FsbChWbi5wcm90b3R5cGUsZSl8fChYbFtlXT10KX0pKSxYbCkse2NoYWluOiExfSksVm4uVkVSU0lPTj0iNC4xNy4yMSIsTWUoWyJiaW5kIiwiYmluZEtleSIsImN1cnJ5IiwiY3VycnlSaWdodCIsInBhcnRpYWwiLCJwYXJ0aWFsUmlnaHQiXSwoZnVuY3Rpb24odCl7Vm5bdF0ucGxhY2Vob2xkZXI9Vm59KSksTWUoWyJkcm9wIiwidGFrZSJdLChmdW5jdGlvbihlLG4pe1duLnByb3RvdHlwZVtlXT1mdW5jdGlvbihpKXtpPWk9PT10PzE6dm4oV3MoaSksMCk7dmFyIHI9dGhpcy5fX2ZpbHRlcmVkX18mJiFuP25ldyBXbih0aGlzKTp0aGlzLmNsb25lKCk7cmV0dXJuIHIuX19maWx0ZXJlZF9fP3IuX190YWtlQ291bnRfXz1ibihpLHIuX190YWtlQ291bnRfXyk6ci5fX3ZpZXdzX18ucHVzaCh7c2l6ZTpibihpLGQpLHR5cGU6ZSsoci5fX2Rpcl9fPDA/IlJpZ2h0IjoiIil9KSxyfSxXbi5wcm90b3R5cGVbZSsiUmlnaHQiXT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5yZXZlcnNlKClbZV0odCkucmV2ZXJzZSgpfX0pKSxNZShbImZpbHRlciIsIm1hcCIsInRha2VXaGlsZSJdLChmdW5jdGlvbih0LGUpe3ZhciBuPWUrMSxpPTE9PW58fDM9PW47V24ucHJvdG90eXBlW3RdPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuY2xvbmUoKTtyZXR1cm4gZS5fX2l0ZXJhdGVlc19fLnB1c2goe2l0ZXJhdGVlOk5vKHQsMyksdHlwZTpufSksZS5fX2ZpbHRlcmVkX189ZS5fX2ZpbHRlcmVkX198fGksZX19KSksTWUoWyJoZWFkIiwibGFzdCJdLChmdW5jdGlvbih0LGUpe3ZhciBuPSJ0YWtlIisoZT8iUmlnaHQiOiIiKTtXbi5wcm90b3R5cGVbdF09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc1tuXSgxKS52YWx1ZSgpWzBdfX0pKSxNZShbImluaXRpYWwiLCJ0YWlsIl0sKGZ1bmN0aW9uKHQsZSl7dmFyIG49ImRyb3AiKyhlPyIiOiJSaWdodCIpO1duLnByb3RvdHlwZVt0XT1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9fZmlsdGVyZWRfXz9uZXcgV24odGhpcyk6dGhpc1tuXSgxKX19KSksV24ucHJvdG90eXBlLmNvbXBhY3Q9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5maWx0ZXIoUmwpfSxXbi5wcm90b3R5cGUuZmluZD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5maWx0ZXIodCkuaGVhZCgpfSxXbi5wcm90b3R5cGUuZmluZExhc3Q9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucmV2ZXJzZSgpLmZpbmQodCl9LFduLnByb3RvdHlwZS5pbnZva2VNYXA9dnIoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHQ/bmV3IFduKHRoaXMpOnRoaXMubWFwKChmdW5jdGlvbihuKXtyZXR1cm4gUWkobix0LGUpfSkpfSkpLFduLnByb3RvdHlwZS5yZWplY3Q9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZmlsdGVyKGFzKE5vKHQpKSl9LFduLnByb3RvdHlwZS5zbGljZT1mdW5jdGlvbihlLG4pe2U9V3MoZSk7dmFyIGk9dGhpcztyZXR1cm4gaS5fX2ZpbHRlcmVkX18mJihlPjB8fG48MCk/bmV3IFduKGkpOihlPDA/aT1pLnRha2VSaWdodCgtZSk6ZSYmKGk9aS5kcm9wKGUpKSxuIT09dCYmKGk9KG49V3MobikpPDA/aS5kcm9wUmlnaHQoLW4pOmkudGFrZShuLWUpKSxpKX0sV24ucHJvdG90eXBlLnRha2VSaWdodFdoaWxlPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnJldmVyc2UoKS50YWtlV2hpbGUodCkucmV2ZXJzZSgpfSxXbi5wcm90b3R5cGUudG9BcnJheT1mdW5jdGlvbigpe3JldHVybiB0aGlzLnRha2UoZCl9LGppKFduLnByb3RvdHlwZSwoZnVuY3Rpb24oZSxuKXt2YXIgaT0vXig/OmZpbHRlcnxmaW5kfG1hcHxyZWplY3QpfFdoaWxlJC8udGVzdChuKSxyPS9eKD86aGVhZHxsYXN0KSQvLnRlc3Qobiksbz1WbltyPyJ0YWtlIisoImxhc3QiPT1uPyJSaWdodCI6IiIpOm5dLGE9cnx8L15maW5kLy50ZXN0KG4pO28mJihWbi5wcm90b3R5cGVbbl09ZnVuY3Rpb24oKXt2YXIgbj10aGlzLl9fd3JhcHBlZF9fLHM9cj9bMV06YXJndW1lbnRzLGw9biBpbnN0YW5jZW9mIFduLGM9c1swXSx1PWx8fG1zKG4pLGg9ZnVuY3Rpb24odCl7dmFyIGU9by5hcHBseShWbixJZShbdF0scykpO3JldHVybiByJiZkP2VbMF06ZX07dSYmaSYmImZ1bmN0aW9uIj09dHlwZW9mIGMmJjEhPWMubGVuZ3RoJiYobD11PSExKTt2YXIgZD10aGlzLl9fY2hhaW5fXyxwPSEhdGhpcy5fX2FjdGlvbnNfXy5sZW5ndGgsZj1hJiYhZCxtPWwmJiFwO2lmKCFhJiZ1KXtuPW0/bjpuZXcgV24odGhpcyk7dmFyIGc9ZS5hcHBseShuLHMpO3JldHVybiBnLl9fYWN0aW9uc19fLnB1c2goe2Z1bmM6QmEsYXJnczpbaF0sdGhpc0FyZzp0fSksbmV3IEduKGcsZCl9cmV0dXJuIGYmJm0/ZS5hcHBseSh0aGlzLHMpOihnPXRoaXMudGhydShoKSxmP3I/Zy52YWx1ZSgpWzBdOmcudmFsdWUoKTpnKX0pfSkpLE1lKFsicG9wIiwicHVzaCIsInNoaWZ0Iiwic29ydCIsInNwbGljZSIsInVuc2hpZnQiXSwoZnVuY3Rpb24odCl7dmFyIGU9UHRbdF0sbj0vXig/OnB1c2h8c29ydHx1bnNoaWZ0KSQvLnRlc3QodCk/InRhcCI6InRocnUiLGk9L14oPzpwb3B8c2hpZnQpJC8udGVzdCh0KTtWbi5wcm90b3R5cGVbdF09ZnVuY3Rpb24oKXt2YXIgdD1hcmd1bWVudHM7aWYoaSYmIXRoaXMuX19jaGFpbl9fKXt2YXIgcj10aGlzLnZhbHVlKCk7cmV0dXJuIGUuYXBwbHkobXMocik/cjpbXSx0KX1yZXR1cm4gdGhpc1tuXSgoZnVuY3Rpb24obil7cmV0dXJuIGUuYXBwbHkobXMobik/bjpbXSx0KX0pKX19KSksamkoV24ucHJvdG90eXBlLChmdW5jdGlvbih0LGUpe3ZhciBuPVZuW2VdO2lmKG4pe3ZhciBpPW4ubmFtZSsiIjtPdC5jYWxsKE5uLGkpfHwoTm5baV09W10pLE5uW2ldLnB1c2goe25hbWU6ZSxmdW5jOm59KX19KSksTm5bY28odCwyKS5uYW1lXT1be25hbWU6IndyYXBwZXIiLGZ1bmM6dH1dLFduLnByb3RvdHlwZS5jbG9uZT1mdW5jdGlvbiBHaCgpe3ZhciB0PW5ldyBXbih0aGlzLl9fd3JhcHBlZF9fKTtyZXR1cm4gdC5fX2FjdGlvbnNfXz1Kcih0aGlzLl9fYWN0aW9uc19fKSx0Ll9fZGlyX189dGhpcy5fX2Rpcl9fLHQuX19maWx0ZXJlZF9fPXRoaXMuX19maWx0ZXJlZF9fLHQuX19pdGVyYXRlZXNfXz1Kcih0aGlzLl9faXRlcmF0ZWVzX18pLHQuX190YWtlQ291bnRfXz10aGlzLl9fdGFrZUNvdW50X18sdC5fX3ZpZXdzX189SnIodGhpcy5fX3ZpZXdzX18pLHR9LFduLnByb3RvdHlwZS5yZXZlcnNlPWZ1bmN0aW9uIFdoKCl7aWYodGhpcy5fX2ZpbHRlcmVkX18pe3ZhciB0PW5ldyBXbih0aGlzKTt0Ll9fZGlyX189LTEsdC5fX2ZpbHRlcmVkX189ITB9ZWxzZSh0PXRoaXMuY2xvbmUoKSkuX19kaXJfXyo9LTE7cmV0dXJuIHR9LFduLnByb3RvdHlwZS52YWx1ZT1mdW5jdGlvbiBxaCgpe3ZhciB0PXRoaXMuX193cmFwcGVkX18udmFsdWUoKSxlPXRoaXMuX19kaXJfXyxuPW1zKHQpLGk9ZTwwLHI9bj90Lmxlbmd0aDowLG89KGZ1bmN0aW9uIGEodCxlLG4pe2Zvcih2YXIgaT0tMSxyPW4ubGVuZ3RoOysraTxyOyl7dmFyIG89bltpXSxhPW8uc2l6ZTtzd2l0Y2goby50eXBlKXtjYXNlImRyb3AiOnQrPWE7YnJlYWs7Y2FzZSJkcm9wUmlnaHQiOmUtPWE7YnJlYWs7Y2FzZSJ0YWtlIjplPWJuKGUsdCthKTticmVhaztjYXNlInRha2VSaWdodCI6dD12bih0LGUtYSl9fXJldHVybntzdGFydDp0LGVuZDplfX0pKDAscix0aGlzLl9fdmlld3NfXykscz1vLnN0YXJ0LGw9by5lbmQsYz1sLXMsdT1pP2w6cy0xLGg9dGhpcy5fX2l0ZXJhdGVlc19fLGQ9aC5sZW5ndGgscD0wLGY9Ym4oYyx0aGlzLl9fdGFrZUNvdW50X18pO2lmKCFufHwhaSYmcj09YyYmZj09YylyZXR1cm4gRHIodCx0aGlzLl9fYWN0aW9uc19fKTt2YXIgbT1bXTt0OmZvcig7Yy0tJiZwPGY7KXtmb3IodmFyIGc9LTEsXz10W3UrPWVdOysrZzxkOyl7dmFyIHk9aFtnXSx2PXkudHlwZSxiPSgwLHkuaXRlcmF0ZWUpKF8pO2lmKDI9PXYpXz1iO2Vsc2UgaWYoIWIpe2lmKDE9PXYpY29udGludWUgdDticmVhayB0fX1tW3ArK109X31yZXR1cm4gbX0sVm4ucHJvdG90eXBlLmF0PUhhLFZuLnByb3RvdHlwZS5jaGFpbj1mdW5jdGlvbiBZaCgpe3JldHVybiBEYSh0aGlzKX0sVm4ucHJvdG90eXBlLmNvbW1pdD1mdW5jdGlvbiBYaCgpe3JldHVybiBuZXcgR24odGhpcy52YWx1ZSgpLHRoaXMuX19jaGFpbl9fKX0sVm4ucHJvdG90eXBlLm5leHQ9ZnVuY3Rpb24gJGgoKXt0aGlzLl9fdmFsdWVzX189PT10JiYodGhpcy5fX3ZhbHVlc19fPWpzKHRoaXMudmFsdWUoKSkpO3ZhciBlPXRoaXMuX19pbmRleF9fPj10aGlzLl9fdmFsdWVzX18ubGVuZ3RoO3JldHVybntkb25lOmUsdmFsdWU6ZT90OnRoaXMuX192YWx1ZXNfX1t0aGlzLl9faW5kZXhfXysrXX19LFZuLnByb3RvdHlwZS5wbGFudD1mdW5jdGlvbiBLaChlKXtmb3IodmFyIG4saT10aGlzO2kgaW5zdGFuY2VvZiBqbjspe3ZhciByPXVhKGkpO3IuX19pbmRleF9fPTAsci5fX3ZhbHVlc19fPXQsbj9vLl9fd3JhcHBlZF9fPXI6bj1yO3ZhciBvPXI7aT1pLl9fd3JhcHBlZF9ffXJldHVybiBvLl9fd3JhcHBlZF9fPWUsbn0sVm4ucHJvdG90eXBlLnJldmVyc2U9ZnVuY3Rpb24gWmgoKXt2YXIgZT10aGlzLl9fd3JhcHBlZF9fO2lmKGUgaW5zdGFuY2VvZiBXbil7dmFyIG49ZTtyZXR1cm4gdGhpcy5fX2FjdGlvbnNfXy5sZW5ndGgmJihuPW5ldyBXbih0aGlzKSksKG49bi5yZXZlcnNlKCkpLl9fYWN0aW9uc19fLnB1c2goe2Z1bmM6QmEsYXJnczpbRWFdLHRoaXNBcmc6dH0pLG5ldyBHbihuLHRoaXMuX19jaGFpbl9fKX1yZXR1cm4gdGhpcy50aHJ1KEVhKX0sVm4ucHJvdG90eXBlLnRvSlNPTj1Wbi5wcm90b3R5cGUudmFsdWVPZj1Wbi5wcm90b3R5cGUudmFsdWU9ZnVuY3Rpb24gSmgoKXtyZXR1cm4gRHIodGhpcy5fX3dyYXBwZWRfXyx0aGlzLl9fYWN0aW9uc19fKX0sVm4ucHJvdG90eXBlLmZpcnN0PVZuLnByb3RvdHlwZS5oZWFkLHNlJiYoVm4ucHJvdG90eXBlW3NlXT1mdW5jdGlvbiBRaCgpe3JldHVybiB0aGlzfSksVm59KSgpO2hlPygoaGUuZXhwb3J0cz1nbikuXz1nbix1ZS5fPWduKTpjZS5fPWdufS5jYWxsKFNlKTsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE3IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQKICAgIENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvCiAgICBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50IGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KY29uc3QgQWU9ISh3aW5kb3cuU2hhZHlET00mJndpbmRvdy5TaGFkeURPTS5pblVzZSk7bGV0IGtlLExlO2Z1bmN0aW9uIFBlKHQpe2tlPSghdHx8IXQuc2hpbWNzc3Byb3BlcnRpZXMpJiYoQWV8fEJvb2xlYW4oIW5hdmlnYXRvci51c2VyQWdlbnQubWF0Y2goL0FwcGxlV2ViS2l0XC82MDF8RWRnZVwvMTUvKSYmd2luZG93LkNTUyYmQ1NTLnN1cHBvcnRzJiZDU1Muc3VwcG9ydHMoImJveC1zaGFkb3ciLCIwIDAgMCB2YXIoLS1mb28pIikpKX13aW5kb3cuU2hhZHlDU1MmJnZvaWQgMCE9PXdpbmRvdy5TaGFkeUNTUy5jc3NCdWlsZCYmKExlPXdpbmRvdy5TaGFkeUNTUy5jc3NCdWlsZCk7Y29uc3QgTmU9Qm9vbGVhbih3aW5kb3cuU2hhZHlDU1MmJndpbmRvdy5TaGFkeUNTUy5kaXNhYmxlUnVudGltZSk7d2luZG93LlNoYWR5Q1NTJiZ2b2lkIDAhPT13aW5kb3cuU2hhZHlDU1MubmF0aXZlQ3NzP2tlPXdpbmRvdy5TaGFkeUNTUy5uYXRpdmVDc3M6d2luZG93LlNoYWR5Q1NTPyhQZSh3aW5kb3cuU2hhZHlDU1MpLHdpbmRvdy5TaGFkeUNTUz12b2lkIDApOlBlKHdpbmRvdy5XZWJDb21wb25lbnRzJiZ3aW5kb3cuV2ViQ29tcG9uZW50cy5mbGFncyk7Y29uc3QgSWU9a2U7Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNyBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0CiAgICBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcyBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbwogICAgc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudCBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovY2xhc3MgUmV7Y29uc3RydWN0b3IoKXt0aGlzLnN0YXJ0PTAsdGhpcy5lbmQ9MCx0aGlzLnByZXZpb3VzPW51bGwsdGhpcy5wYXJlbnQ9bnVsbCx0aGlzLnJ1bGVzPW51bGwsdGhpcy5wYXJzZWRDc3NUZXh0PSIiLHRoaXMuY3NzVGV4dD0iIix0aGlzLmF0UnVsZT0hMSx0aGlzLnR5cGU9MCx0aGlzLmtleWZyYW1lc05hbWU9IiIsdGhpcy5zZWxlY3Rvcj0iIix0aGlzLnBhcnNlZFNlbGVjdG9yPSIifX1mdW5jdGlvbiBPZSh0KXtyZXR1cm4gemUoKGZ1bmN0aW9uIG4odCl7bGV0IGU9bmV3IFJlO2Uuc3RhcnQ9MCxlLmVuZD10Lmxlbmd0aDtsZXQgbj1lO2ZvcihsZXQgaT0wLHI9dC5sZW5ndGg7aTxyO2krKylpZih0W2ldPT09SGUpe24ucnVsZXN8fChuLnJ1bGVzPVtdKTtsZXQgdD1uLGU9dC5ydWxlc1t0LnJ1bGVzLmxlbmd0aC0xXXx8bnVsbDtuPW5ldyBSZSxuLnN0YXJ0PWkrMSxuLnBhcmVudD10LG4ucHJldmlvdXM9ZSx0LnJ1bGVzLnB1c2gobil9ZWxzZSB0W2ldPT09RmUmJihuLmVuZD1pKzEsbj1uLnBhcmVudHx8ZSk7cmV0dXJuIGV9KSh0PShmdW5jdGlvbiBlKHQpe3JldHVybiB0LnJlcGxhY2UoVmUuY29tbWVudHMsIiIpLnJlcGxhY2UoVmUucG9ydCwiIil9KSh0KSksdCl9ZnVuY3Rpb24gemUodCxlKXtsZXQgbj1lLnN1YnN0cmluZyh0LnN0YXJ0LHQuZW5kLTEpO2lmKHQucGFyc2VkQ3NzVGV4dD10LmNzc1RleHQ9bi50cmltKCksdC5wYXJlbnQpe249ZS5zdWJzdHJpbmcodC5wcmV2aW91cz90LnByZXZpb3VzLmVuZDp0LnBhcmVudC5zdGFydCx0LnN0YXJ0LTEpLG49KGZ1bmN0aW9uIGkodCl7cmV0dXJuIHQucmVwbGFjZSgvXFwoWzAtOWEtZl17MSw2fSlccy9naSwoZnVuY3Rpb24oKXtsZXQgdD1hcmd1bWVudHNbMV0sZT02LXQubGVuZ3RoO2Zvcig7ZS0tOyl0PSIwIit0O3JldHVybiJcXCIrdH0pKX0pKG4pLG49bi5yZXBsYWNlKFZlLm11bHRpcGxlU3BhY2VzLCIgIiksbj1uLnN1YnN0cmluZyhuLmxhc3RJbmRleE9mKCI7IikrMSk7bGV0IGk9dC5wYXJzZWRTZWxlY3Rvcj10LnNlbGVjdG9yPW4udHJpbSgpO3QuYXRSdWxlPTA9PT1pLmluZGV4T2YoR2UpLHQuYXRSdWxlPzA9PT1pLmluZGV4T2YoamUpP3QudHlwZT1CZS5NRURJQV9SVUxFOmkubWF0Y2goVmUua2V5ZnJhbWVzUnVsZSkmJih0LnR5cGU9QmUuS0VZRlJBTUVTX1JVTEUsdC5rZXlmcmFtZXNOYW1lPXQuc2VsZWN0b3Iuc3BsaXQoVmUubXVsdGlwbGVTcGFjZXMpLnBvcCgpKTp0LnR5cGU9MD09PWkuaW5kZXhPZihVZSk/QmUuTUlYSU5fUlVMRTpCZS5TVFlMRV9SVUxFfWxldCByPXQucnVsZXM7aWYocilmb3IobGV0IHQsbj0wLGk9ci5sZW5ndGg7bjxpJiYodD1yW25dKTtuKyspemUodCxlKTtyZXR1cm4gdH1mdW5jdGlvbiBEZSh0LGUsbj0iIil7bGV0IGk9IiI7aWYodC5jc3NUZXh0fHx0LnJ1bGVzKXtsZXQgbj10LnJ1bGVzO2lmKG4mJiEoZnVuY3Rpb24gcih0KXtsZXQgZT10WzBdO3JldHVybiBCb29sZWFuKGUpJiZCb29sZWFuKGUuc2VsZWN0b3IpJiYwPT09ZS5zZWxlY3Rvci5pbmRleE9mKFVlKX0pKG4pKWZvcihsZXQgdCxyPTAsbz1uLmxlbmd0aDtyPG8mJih0PW5bcl0pO3IrKylpPURlKHQsZSxpKTtlbHNlIGk9ZT90LmNzc1RleHQ6KGZ1bmN0aW9uIG8odCl7cmV0dXJuKGZ1bmN0aW9uIG4odCl7cmV0dXJuIHQucmVwbGFjZShWZS5taXhpbkFwcGx5LCIiKS5yZXBsYWNlKFZlLnZhckFwcGx5LCIiKX0pKHQ9KGZ1bmN0aW9uIGUodCl7cmV0dXJuIHQucmVwbGFjZShWZS5jdXN0b21Qcm9wLCIiKS5yZXBsYWNlKFZlLm1peGluUHJvcCwiIil9KSh0KSl9KSh0LmNzc1RleHQpLGk9aS50cmltKCksaSYmKGk9IiAgIitpKyJcbiIpfXJldHVybiBpJiYodC5zZWxlY3RvciYmKG4rPXQuc2VsZWN0b3IrIiAiK0hlKyJcbiIpLG4rPWksdC5zZWxlY3RvciYmKG4rPUZlKyJcblxuIikpLG59Y29uc3QgQmU9e1NUWUxFX1JVTEU6MSxLRVlGUkFNRVNfUlVMRTo3LE1FRElBX1JVTEU6NCxNSVhJTl9SVUxFOjFlM30sSGU9InsiLEZlPSJ9IixWZT17Y29tbWVudHM6L1wvXCpbXipdKlwqKyhbXi8qXVteKl0qXCorKSpcLy9naW0scG9ydDovQGltcG9ydFteO10qOy9naW0sY3VzdG9tUHJvcDovKD86XlteO1wtXHN9XSspPy0tW147e31dKj86W157fTtdKj8oPzpbO1xuXXwkKS9naW0sbWl4aW5Qcm9wOi8oPzpeW147XC1cc31dKyk/LS1bXjt7fV0qPzpbXnt9O10qP3tbXn1dKj99KD86Wztcbl18JCk/L2dpbSxtaXhpbkFwcGx5Oi9AYXBwbHlccypcKD9bXik7XSpcKT9ccyooPzpbO1xuXXwkKT8vZ2ltLHZhckFwcGx5Oi9bXjs6XSo/OlteO10qP3ZhclwoW147XSpcKSg/Ols7XG5dfCQpPy9naW0sa2V5ZnJhbWVzUnVsZTovXkBbXlxzXSprZXlmcmFtZXMvLG11bHRpcGxlU3BhY2VzOi9ccysvZ30sVWU9Ii0tIixqZT0iQG1lZGlhIixHZT0iQCIsV2U9Lyg/Ol58Wztcc3tdXHMqKSgtLVtcdy1dKj8pXHMqOlxzKig/OigoPzonKD86XFwnfC4pKj8nfCIoPzpcXCJ8LikqPyJ8XChbXildKj9cKXxbXn07e10pKyl8XHsoW159XSopXH0oPzooPz1bO1xzfV0pfCQpKS9naSxxZT0vKD86XnxcVyspQGFwcGx5XHMqXCg/KFteKTtcbl0qKVwpPy9naSxZZT0vQG1lZGlhXHMoLiopLyxYZT1uZXcgU2V0O2Z1bmN0aW9uICRlKHQpe2NvbnN0IGU9dC50ZXh0Q29udGVudDtpZighWGUuaGFzKGUpKXtYZS5hZGQoZSk7Y29uc3QgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzdHlsZSIpO3Quc2V0QXR0cmlidXRlKCJzaGFkeS11bnNjb3BlZCIsIiIpLHQudGV4dENvbnRlbnQ9ZSxkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHQpfX1mdW5jdGlvbiBLZSh0KXtyZXR1cm4gdC5oYXNBdHRyaWJ1dGUoInNoYWR5LXVuc2NvcGVkIil9Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNyBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0CiAgICBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcyBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbwogICAgc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudCBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovZnVuY3Rpb24gWmUodCxlKXtyZXR1cm4gdD8oInN0cmluZyI9PXR5cGVvZiB0JiYodD1PZSh0KSksZSYmUWUodCxlKSxEZSh0LEllKSk6IiJ9ZnVuY3Rpb24gSmUodCl7cmV0dXJuIXQuX19jc3NSdWxlcyYmdC50ZXh0Q29udGVudCYmKHQuX19jc3NSdWxlcz1PZSh0LnRleHRDb250ZW50KSksdC5fX2Nzc1J1bGVzfHxudWxsfWZ1bmN0aW9uIFFlKHQsZSxuLGkpe2lmKCF0KXJldHVybjtsZXQgcj0hMSxvPXQudHlwZTtpZihpJiZvPT09QmUuTUVESUFfUlVMRSl7bGV0IGU9dC5zZWxlY3Rvci5tYXRjaChZZSk7ZSYmKHdpbmRvdy5tYXRjaE1lZGlhKGVbMV0pLm1hdGNoZXN8fChyPSEwKSl9bz09PUJlLlNUWUxFX1JVTEU/ZSh0KTpuJiZvPT09QmUuS0VZRlJBTUVTX1JVTEU/bih0KTpvPT09QmUuTUlYSU5fUlVMRSYmKHI9ITApO2xldCBhPXQucnVsZXM7aWYoYSYmIXIpZm9yKGxldCB0LHI9MCxvPWEubGVuZ3RoO3I8byYmKHQ9YVtyXSk7cisrKVFlKHQsZSxuLGkpfWZ1bmN0aW9uIHRuKHQsZSl7bGV0IG49dC5pbmRleE9mKCJ2YXIoIik7aWYoLTE9PT1uKXJldHVybiBlKHQsIiIsIiIsIiIpO2xldCBpPShmdW5jdGlvbiByKHQsZSl7bGV0IG49MDtmb3IobGV0IGk9ZSxyPXQubGVuZ3RoO2k8cjtpKyspaWYoIigiPT09dFtpXSluKys7ZWxzZSBpZigiKSI9PT10W2ldJiYwPT0tLW4pcmV0dXJuIGk7cmV0dXJuLTF9KSh0LG4rMyksbz10LnN1YnN0cmluZyhuKzQsaSksYT10LnN1YnN0cmluZygwLG4pLHM9dG4odC5zdWJzdHJpbmcoaSsxKSxlKSxsPW8uaW5kZXhPZigiLCIpO3JldHVybi0xPT09bD9lKGEsby50cmltKCksIiIscyk6ZShhLG8uc3Vic3RyaW5nKDAsbCkudHJpbSgpLG8uc3Vic3RyaW5nKGwrMSkudHJpbSgpLHMpfXdpbmRvdy5TaGFkeURPTSYmd2luZG93O2NvbnN0IGVuPSJjc3MtYnVpbGQiO2Z1bmN0aW9uIG5uKHQpe2lmKHZvaWQgMCE9PUxlKXJldHVybiBMZTtpZih2b2lkIDA9PT10Ll9fY3NzQnVpbGQpe2NvbnN0IGU9dC5nZXRBdHRyaWJ1dGUoZW4pO2lmKGUpdC5fX2Nzc0J1aWxkPWU7ZWxzZXtjb25zdCBlPShmdW5jdGlvbiBlKHQpe2NvbnN0IGU9InRlbXBsYXRlIj09PXQubG9jYWxOYW1lP3QuY29udGVudC5maXJzdENoaWxkOnQuZmlyc3RDaGlsZDtpZihlIGluc3RhbmNlb2YgQ29tbWVudCl7Y29uc3QgdD1lLnRleHRDb250ZW50LnRyaW0oKS5zcGxpdCgiOiIpO2lmKHRbMF09PT1lbilyZXR1cm4gdFsxXX1yZXR1cm4iIn0pKHQpOyIiIT09ZSYmKGZ1bmN0aW9uIG4odCl7Y29uc3QgZT0idGVtcGxhdGUiPT09dC5sb2NhbE5hbWU/dC5jb250ZW50LmZpcnN0Q2hpbGQ6dC5maXJzdENoaWxkO2UucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChlKX0KLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE3IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQKICAgIENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvCiAgICBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50IGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8pKHQpLHQuX19jc3NCdWlsZD1lfX1yZXR1cm4gdC5fX2Nzc0J1aWxkfHwiIn1mdW5jdGlvbiBybih0KXtyZXR1cm4iIiE9PW5uKHQpfWZ1bmN0aW9uIG9uKHQsZSl7Zm9yKGxldCBuIGluIGUpbnVsbD09PW4/dC5zdHlsZS5yZW1vdmVQcm9wZXJ0eShuKTp0LnN0eWxlLnNldFByb3BlcnR5KG4sZVtuXSl9ZnVuY3Rpb24gYW4odCxlKXtjb25zdCBuPXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHQpLmdldFByb3BlcnR5VmFsdWUoZSk7cmV0dXJuIG4/bi50cmltKCk6IiJ9Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNyBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0CiAgICBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcyBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbwogICAgc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudCBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCmNvbnN0IHNuPS87XHMqL20sbG49L15ccyooaW5pdGlhbCl8KGluaGVyaXQpXHMqJC8sY249L1xzKiFpbXBvcnRhbnQvLHVuPSJfLV8iO2NsYXNzIGhue2NvbnN0cnVjdG9yKCl7dGhpcy5fbWFwPXt9fXNldCh0LGUpe3Q9dC50cmltKCksdGhpcy5fbWFwW3RdPXtwcm9wZXJ0aWVzOmUsZGVwZW5kYW50czp7fX19Z2V0KHQpe3JldHVybiB0PXQudHJpbSgpLHRoaXMuX21hcFt0XXx8bnVsbH19bGV0IGRuPW51bGw7Y2xhc3MgcG57Y29uc3RydWN0b3IoKXt0aGlzLl9jdXJyZW50RWxlbWVudD1udWxsLHRoaXMuX21lYXN1cmVFbGVtZW50PW51bGwsdGhpcy5fbWFwPW5ldyBobn1kZXRlY3RNaXhpbih0KXtyZXR1cm4oZnVuY3Rpb24gZSh0KXtjb25zdCBlPXFlLnRlc3QodCl8fFdlLnRlc3QodCk7cmV0dXJuIHFlLmxhc3RJbmRleD0wLFdlLmxhc3RJbmRleD0wLGV9KSh0KX1nYXRoZXJTdHlsZXModCl7Y29uc3QgZT0oZnVuY3Rpb24gbih0KXtjb25zdCBlPVtdLG49dC5xdWVyeVNlbGVjdG9yQWxsKCJzdHlsZSIpO2ZvcihsZXQgdD0wO3Q8bi5sZW5ndGg7dCsrKXtjb25zdCBpPW5bdF07S2UoaSk/QWV8fCgkZShpKSxpLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoaSkpOihlLnB1c2goaS50ZXh0Q29udGVudCksaS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGkpKX1yZXR1cm4gZS5qb2luKCIiKS50cmltKCl9KSh0LmNvbnRlbnQpO2lmKGUpe2NvbnN0IG49ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3R5bGUiKTtyZXR1cm4gbi50ZXh0Q29udGVudD1lLHQuY29udGVudC5pbnNlcnRCZWZvcmUobix0LmNvbnRlbnQuZmlyc3RDaGlsZCksbn1yZXR1cm4gbnVsbH10cmFuc2Zvcm1UZW1wbGF0ZSh0LGUpe3ZvaWQgMD09PXQuX2dhdGhlcmVkU3R5bGUmJih0Ll9nYXRoZXJlZFN0eWxlPXRoaXMuZ2F0aGVyU3R5bGVzKHQpKTtjb25zdCBuPXQuX2dhdGhlcmVkU3R5bGU7cmV0dXJuIG4/dGhpcy50cmFuc2Zvcm1TdHlsZShuLGUpOm51bGx9dHJhbnNmb3JtU3R5bGUodCxlPSIiKXtsZXQgbj1KZSh0KTtyZXR1cm4gdGhpcy50cmFuc2Zvcm1SdWxlcyhuLGUpLHQudGV4dENvbnRlbnQ9WmUobiksbn10cmFuc2Zvcm1DdXN0b21TdHlsZSh0KXtsZXQgZT1KZSh0KTtyZXR1cm4gUWUoZSwodD0+eyI6cm9vdCI9PT10LnNlbGVjdG9yJiYodC5zZWxlY3Rvcj0iaHRtbCIpLHRoaXMudHJhbnNmb3JtUnVsZSh0KX0pKSx0LnRleHRDb250ZW50PVplKGUpLGV9dHJhbnNmb3JtUnVsZXModCxlKXt0aGlzLl9jdXJyZW50RWxlbWVudD1lLFFlKHQsKHQ9Pnt0aGlzLnRyYW5zZm9ybVJ1bGUodCl9KSksdGhpcy5fY3VycmVudEVsZW1lbnQ9bnVsbH10cmFuc2Zvcm1SdWxlKHQpe3QuY3NzVGV4dD10aGlzLnRyYW5zZm9ybUNzc1RleHQodC5wYXJzZWRDc3NUZXh0LHQpLCI6cm9vdCI9PT10LnNlbGVjdG9yJiYodC5zZWxlY3Rvcj0iOmhvc3QgPiAqIil9dHJhbnNmb3JtQ3NzVGV4dCh0LGUpe3JldHVybiB0PXQucmVwbGFjZShXZSwoKHQsbixpLHIpPT50aGlzLl9wcm9kdWNlQ3NzUHJvcGVydGllcyh0LG4saSxyLGUpKSksdGhpcy5fY29uc3VtZUNzc1Byb3BlcnRpZXModCxlKX1fZ2V0SW5pdGlhbFZhbHVlRm9yUHJvcGVydHkodCl7cmV0dXJuIHRoaXMuX21lYXN1cmVFbGVtZW50fHwodGhpcy5fbWVhc3VyZUVsZW1lbnQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibWV0YSIpLHRoaXMuX21lYXN1cmVFbGVtZW50LnNldEF0dHJpYnV0ZSgiYXBwbHktc2hpbS1tZWFzdXJlIiwiIiksdGhpcy5fbWVhc3VyZUVsZW1lbnQuc3R5bGUuYWxsPSJpbml0aWFsIixkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHRoaXMuX21lYXN1cmVFbGVtZW50KSksd2luZG93LmdldENvbXB1dGVkU3R5bGUodGhpcy5fbWVhc3VyZUVsZW1lbnQpLmdldFByb3BlcnR5VmFsdWUodCl9X2ZhbGxiYWNrc0Zyb21QcmV2aW91c1J1bGVzKHQpe2xldCBlPXQ7Zm9yKDtlLnBhcmVudDspZT1lLnBhcmVudDtjb25zdCBuPXt9O2xldCBpPSExO3JldHVybiBRZShlLChlPT57aT1pfHxlPT09dCxpfHxlLnNlbGVjdG9yPT09dC5zZWxlY3RvciYmT2JqZWN0LmFzc2lnbihuLHRoaXMuX2Nzc1RleHRUb01hcChlLnBhcnNlZENzc1RleHQpKX0pKSxufV9jb25zdW1lQ3NzUHJvcGVydGllcyh0LGUpe2xldCBuPW51bGw7Zm9yKDtuPXFlLmV4ZWModCk7KXtsZXQgaT1uWzBdLHI9blsxXSxvPW4uaW5kZXgsYT1vK2kuaW5kZXhPZigiQGFwcGx5Iikscz1vK2kubGVuZ3RoLGw9dC5zbGljZSgwLGEpLGM9dC5zbGljZShzKSx1PWU/dGhpcy5fZmFsbGJhY2tzRnJvbVByZXZpb3VzUnVsZXMoZSk6e307T2JqZWN0LmFzc2lnbih1LHRoaXMuX2Nzc1RleHRUb01hcChsKSk7bGV0IGg9dGhpcy5fYXRBcHBseVRvQ3NzUHJvcGVydGllcyhyLHUpO3Q9YCR7bH0ke2h9JHtjfWAscWUubGFzdEluZGV4PW8raC5sZW5ndGh9cmV0dXJuIHR9X2F0QXBwbHlUb0Nzc1Byb3BlcnRpZXModCxlKXt0PXQucmVwbGFjZShzbiwiIik7bGV0IG49W10saT10aGlzLl9tYXAuZ2V0KHQpO2lmKGl8fCh0aGlzLl9tYXAuc2V0KHQse30pLGk9dGhpcy5fbWFwLmdldCh0KSksaSl7bGV0IHIsbyxhO3RoaXMuX2N1cnJlbnRFbGVtZW50JiYoaS5kZXBlbmRhbnRzW3RoaXMuX2N1cnJlbnRFbGVtZW50XT0hMCk7Y29uc3Qgcz1pLnByb3BlcnRpZXM7Zm9yKHIgaW4gcylhPWUmJmVbcl0sbz1bciwiOiB2YXIoIix0LHVuLHJdLGEmJm8ucHVzaCgiLCIsYS5yZXBsYWNlKGNuLCIiKSksby5wdXNoKCIpIiksY24udGVzdChzW3JdKSYmby5wdXNoKCIgIWltcG9ydGFudCIpLG4ucHVzaChvLmpvaW4oIiIpKX1yZXR1cm4gbi5qb2luKCI7ICIpfV9yZXBsYWNlSW5pdGlhbE9ySW5oZXJpdCh0LGUpe2xldCBuPWxuLmV4ZWMoZSk7cmV0dXJuIG4mJihlPW5bMV0/dGhpcy5fZ2V0SW5pdGlhbFZhbHVlRm9yUHJvcGVydHkodCk6ImFwcGx5LXNoaW0taW5oZXJpdCIpLGV9X2Nzc1RleHRUb01hcCh0LGU9ITEpe2xldCBuLGkscj10LnNwbGl0KCI7Iiksbz17fTtmb3IobGV0IHQsYSxzPTA7czxyLmxlbmd0aDtzKyspdD1yW3NdLHQmJihhPXQuc3BsaXQoIjoiKSxhLmxlbmd0aD4xJiYobj1hWzBdLnRyaW0oKSxpPWEuc2xpY2UoMSkuam9pbigiOiIpLGUmJihpPXRoaXMuX3JlcGxhY2VJbml0aWFsT3JJbmhlcml0KG4saSkpLG9bbl09aSkpO3JldHVybiBvfV9pbnZhbGlkYXRlTWl4aW5FbnRyeSh0KXtpZihkbilmb3IobGV0IGUgaW4gdC5kZXBlbmRhbnRzKWUhPT10aGlzLl9jdXJyZW50RWxlbWVudCYmZG4oZSl9X3Byb2R1Y2VDc3NQcm9wZXJ0aWVzKHQsZSxuLGkscil7aWYobiYmdG4obiwoKHQsZSk9PntlJiZ0aGlzLl9tYXAuZ2V0KGUpJiYoaT1gQGFwcGx5ICR7ZX07YCl9KSksIWkpcmV0dXJuIHQ7bGV0IG89dGhpcy5fY29uc3VtZUNzc1Byb3BlcnRpZXMoIiIraSxyKSxhPXQuc2xpY2UoMCx0LmluZGV4T2YoIi0tIikpLHM9dGhpcy5fY3NzVGV4dFRvTWFwKG8sITApLGw9cyxjPXRoaXMuX21hcC5nZXQoZSksdT1jJiZjLnByb3BlcnRpZXM7dT9sPU9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZSh1KSxzKTp0aGlzLl9tYXAuc2V0KGUsbCk7bGV0IGgsZCxwPVtdLGY9ITE7Zm9yKGggaW4gbClkPXNbaF0sdm9pZCAwPT09ZCYmKGQ9ImluaXRpYWwiKSx1JiYhKGggaW4gdSkmJihmPSEwKSxwLnB1c2goYCR7ZX1fLV8ke2h9OiAke2R9YCk7cmV0dXJuIGYmJnRoaXMuX2ludmFsaWRhdGVNaXhpbkVudHJ5KGMpLGMmJihjLnByb3BlcnRpZXM9bCksbiYmKGE9YCR7dH07JHthfWApLGAke2F9JHtwLmpvaW4oIjsgIil9O2B9fXBuLnByb3RvdHlwZS5kZXRlY3RNaXhpbj1wbi5wcm90b3R5cGUuZGV0ZWN0TWl4aW4scG4ucHJvdG90eXBlLnRyYW5zZm9ybVN0eWxlPXBuLnByb3RvdHlwZS50cmFuc2Zvcm1TdHlsZSxwbi5wcm90b3R5cGUudHJhbnNmb3JtQ3VzdG9tU3R5bGU9cG4ucHJvdG90eXBlLnRyYW5zZm9ybUN1c3RvbVN0eWxlLHBuLnByb3RvdHlwZS50cmFuc2Zvcm1SdWxlcz1wbi5wcm90b3R5cGUudHJhbnNmb3JtUnVsZXMscG4ucHJvdG90eXBlLnRyYW5zZm9ybVJ1bGU9cG4ucHJvdG90eXBlLnRyYW5zZm9ybVJ1bGUscG4ucHJvdG90eXBlLnRyYW5zZm9ybVRlbXBsYXRlPXBuLnByb3RvdHlwZS50cmFuc2Zvcm1UZW1wbGF0ZSxwbi5wcm90b3R5cGUuX3NlcGFyYXRvcj11bixPYmplY3QuZGVmaW5lUHJvcGVydHkocG4ucHJvdG90eXBlLCJpbnZhbGlkQ2FsbGJhY2siLHtnZXQ6KCk9PmRuLHNldCh0KXtkbj10fX0pOwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTcgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dAogICAgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28KICAgIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwpjb25zdCBmbj17fSxtbj0iX2FwcGx5U2hpbUN1cnJlbnRWZXJzaW9uIixnbj0iX2FwcGx5U2hpbU5leHRWZXJzaW9uIixfbj0iX2FwcGx5U2hpbVZhbGlkYXRpbmdWZXJzaW9uIix5bj1Qcm9taXNlLnJlc29sdmUoKTsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE3IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQKICAgIENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvCiAgICBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50IGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi9mdW5jdGlvbiB2bih0KXtsZXQgZT1mblt0XTtlJiYoZnVuY3Rpb24gbih0KXt0W21uXT10W21uXXx8MCx0W19uXT10W19uXXx8MCx0W2duXT0odFtnbl18fDApKzF9KShlKX1mdW5jdGlvbiBibih0KXtyZXR1cm4gdFttbl09PT10W2duXX0KLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE3IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQKICAgIENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvCiAgICBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50IGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KbGV0IHhuLHduPW51bGwsU249d2luZG93LkhUTUxJbXBvcnRzJiZ3aW5kb3cuSFRNTEltcG9ydHMud2hlblJlYWR5fHxudWxsO2Z1bmN0aW9uIE1uKHQpe3JlcXVlc3RBbmltYXRpb25GcmFtZSgoZnVuY3Rpb24oKXtTbj9Tbih0KTood258fCh3bj1uZXcgUHJvbWlzZSgodD0+e3huPXR9KSksImNvbXBsZXRlIj09PWRvY3VtZW50LnJlYWR5U3RhdGU/eG4oKTpkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJyZWFkeXN0YXRlY2hhbmdlIiwoKCk9PnsiY29tcGxldGUiPT09ZG9jdW1lbnQucmVhZHlTdGF0ZSYmeG4oKX0pKSksd24udGhlbigoZnVuY3Rpb24oKXt0JiZ0KCl9KSkpfSkpfQovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTcgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dAogICAgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28KICAgIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqL2NvbnN0IEVuPSJfX3NlZW5CeVNoYWR5Q1NTIixUbj0iX19zaGFkeUNTU0NhY2hlZFN0eWxlIjtsZXQgQ249bnVsbCxBbj1udWxsO2NsYXNzIGtue2NvbnN0cnVjdG9yKCl7dGhpcy5jdXN0b21TdHlsZXM9W10sdGhpcy5lbnF1ZXVlZD0hMSxNbigoKCk9Pnt3aW5kb3cuU2hhZHlDU1MuZmx1c2hDdXN0b21TdHlsZXMmJndpbmRvdy5TaGFkeUNTUy5mbHVzaEN1c3RvbVN0eWxlcygpfSkpfWVucXVldWVEb2N1bWVudFZhbGlkYXRpb24oKXshdGhpcy5lbnF1ZXVlZCYmQW4mJih0aGlzLmVucXVldWVkPSEwLE1uKEFuKSl9YWRkQ3VzdG9tU3R5bGUodCl7dFtFbl18fCh0W0VuXT0hMCx0aGlzLmN1c3RvbVN0eWxlcy5wdXNoKHQpLHRoaXMuZW5xdWV1ZURvY3VtZW50VmFsaWRhdGlvbigpKX1nZXRTdHlsZUZvckN1c3RvbVN0eWxlKHQpe2lmKHRbVG5dKXJldHVybiB0W1RuXTtsZXQgZTtyZXR1cm4gZT10LmdldFN0eWxlP3QuZ2V0U3R5bGUoKTp0LGV9cHJvY2Vzc1N0eWxlcygpe2NvbnN0IHQ9dGhpcy5jdXN0b21TdHlsZXM7Zm9yKGxldCBlPTA7ZTx0Lmxlbmd0aDtlKyspe2NvbnN0IG49dFtlXTtpZihuW1RuXSljb250aW51ZTtjb25zdCBpPXRoaXMuZ2V0U3R5bGVGb3JDdXN0b21TdHlsZShuKTtpZihpKXtjb25zdCB0PWkuX19hcHBsaWVkRWxlbWVudHx8aTtDbiYmQ24odCksbltUbl09dH19cmV0dXJuIHR9fWtuLnByb3RvdHlwZS5hZGRDdXN0b21TdHlsZT1rbi5wcm90b3R5cGUuYWRkQ3VzdG9tU3R5bGUsa24ucHJvdG90eXBlLmdldFN0eWxlRm9yQ3VzdG9tU3R5bGU9a24ucHJvdG90eXBlLmdldFN0eWxlRm9yQ3VzdG9tU3R5bGUsa24ucHJvdG90eXBlLnByb2Nlc3NTdHlsZXM9a24ucHJvdG90eXBlLnByb2Nlc3NTdHlsZXMsT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoa24ucHJvdG90eXBlLHt0cmFuc2Zvcm1DYWxsYmFjazp7Z2V0OigpPT5DbixzZXQodCl7Q249dH19LHZhbGlkYXRlQ2FsbGJhY2s6e2dldDooKT0+QW4sc2V0KHQpe2xldCBlPSExO0FufHwoZT0hMCksQW49dCxlJiZ0aGlzLmVucXVldWVEb2N1bWVudFZhbGlkYXRpb24oKX19fSk7Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNyBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0CiAgICBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcyBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbwogICAgc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudCBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCmNvbnN0IExuPW5ldyBwbjtjbGFzcyBQbntjb25zdHJ1Y3Rvcigpe3RoaXMuY3VzdG9tU3R5bGVJbnRlcmZhY2U9bnVsbCxMbi5pbnZhbGlkQ2FsbGJhY2s9dm59ZW5zdXJlKCl7dGhpcy5jdXN0b21TdHlsZUludGVyZmFjZXx8d2luZG93LlNoYWR5Q1NTLkN1c3RvbVN0eWxlSW50ZXJmYWNlJiYodGhpcy5jdXN0b21TdHlsZUludGVyZmFjZT13aW5kb3cuU2hhZHlDU1MuQ3VzdG9tU3R5bGVJbnRlcmZhY2UsdGhpcy5jdXN0b21TdHlsZUludGVyZmFjZS50cmFuc2Zvcm1DYWxsYmFjaz10PT57TG4udHJhbnNmb3JtQ3VzdG9tU3R5bGUodCl9LHRoaXMuY3VzdG9tU3R5bGVJbnRlcmZhY2UudmFsaWRhdGVDYWxsYmFjaz0oKT0+e3JlcXVlc3RBbmltYXRpb25GcmFtZSgoKCk9Pnt0aGlzLmN1c3RvbVN0eWxlSW50ZXJmYWNlLmVucXVldWVkJiZ0aGlzLmZsdXNoQ3VzdG9tU3R5bGVzKCl9KSl9KX1wcmVwYXJlVGVtcGxhdGUodCxlKXtpZih0aGlzLmVuc3VyZSgpLHJuKHQpKXJldHVybjtmbltlXT10O2xldCBuPUxuLnRyYW5zZm9ybVRlbXBsYXRlKHQsZSk7dC5fc3R5bGVBc3Q9bn1mbHVzaEN1c3RvbVN0eWxlcygpe2lmKHRoaXMuZW5zdXJlKCksIXRoaXMuY3VzdG9tU3R5bGVJbnRlcmZhY2UpcmV0dXJuO2xldCB0PXRoaXMuY3VzdG9tU3R5bGVJbnRlcmZhY2UucHJvY2Vzc1N0eWxlcygpO2lmKHRoaXMuY3VzdG9tU3R5bGVJbnRlcmZhY2UuZW5xdWV1ZWQpe2ZvcihsZXQgZT0wO2U8dC5sZW5ndGg7ZSsrKXtsZXQgbj10aGlzLmN1c3RvbVN0eWxlSW50ZXJmYWNlLmdldFN0eWxlRm9yQ3VzdG9tU3R5bGUodFtlXSk7biYmTG4udHJhbnNmb3JtQ3VzdG9tU3R5bGUobil9dGhpcy5jdXN0b21TdHlsZUludGVyZmFjZS5lbnF1ZXVlZD0hMX19c3R5bGVTdWJ0cmVlKHQsZSl7aWYodGhpcy5lbnN1cmUoKSxlJiZvbih0LGUpLHQuc2hhZG93Um9vdCl7dGhpcy5zdHlsZUVsZW1lbnQodCk7bGV0IGU9dC5zaGFkb3dSb290LmNoaWxkcmVufHx0LnNoYWRvd1Jvb3QuY2hpbGROb2Rlcztmb3IobGV0IHQ9MDt0PGUubGVuZ3RoO3QrKyl0aGlzLnN0eWxlU3VidHJlZShlW3RdKX1lbHNle2xldCBlPXQuY2hpbGRyZW58fHQuY2hpbGROb2Rlcztmb3IobGV0IHQ9MDt0PGUubGVuZ3RoO3QrKyl0aGlzLnN0eWxlU3VidHJlZShlW3RdKX19c3R5bGVFbGVtZW50KHQpe3RoaXMuZW5zdXJlKCk7bGV0e2lzOmV9PShmdW5jdGlvbiBuKHQpe2xldCBlPXQubG9jYWxOYW1lLG49IiIsaT0iIjtyZXR1cm4gZT9lLmluZGV4T2YoIi0iKT4tMT9uPWU6KGk9ZSxuPXQuZ2V0QXR0cmlidXRlJiZ0LmdldEF0dHJpYnV0ZSgiaXMiKXx8IiIpOihuPXQuaXMsaT10LmV4dGVuZHMpLHtpczpuLHR5cGVFeHRlbnNpb246aX19KSh0KSxpPWZuW2VdO2lmKCghaXx8IXJuKGkpKSYmaSYmIWJuKGkpKXsoZnVuY3Rpb24gbih0KXtyZXR1cm4hYm4odCkmJnRbX25dPT09dFtnbl19KShpKXx8KHRoaXMucHJlcGFyZVRlbXBsYXRlKGksZSksKGZ1bmN0aW9uIHIodCl7dFtfbl09dFtnbl0sdC5fdmFsaWRhdGluZ3x8KHQuX3ZhbGlkYXRpbmc9ITAseW4udGhlbigoZnVuY3Rpb24oKXt0W21uXT10W2duXSx0Ll92YWxpZGF0aW5nPSExfSkpKX0pKGkpKTtsZXQgbz10LnNoYWRvd1Jvb3Q7aWYobyl7bGV0IHQ9by5xdWVyeVNlbGVjdG9yKCJzdHlsZSIpO3QmJih0Ll9fY3NzUnVsZXM9aS5fc3R5bGVBc3QsdC50ZXh0Q29udGVudD1aZShpLl9zdHlsZUFzdCkpfX19c3R5bGVEb2N1bWVudCh0KXt0aGlzLmVuc3VyZSgpLHRoaXMuc3R5bGVTdWJ0cmVlKGRvY3VtZW50LmJvZHksdCl9fWlmKCF3aW5kb3cuU2hhZHlDU1N8fCF3aW5kb3cuU2hhZHlDU1MuU2NvcGluZ1NoaW0pe2NvbnN0IHQ9bmV3IFBuO2xldCBlPXdpbmRvdy5TaGFkeUNTUyYmd2luZG93LlNoYWR5Q1NTLkN1c3RvbVN0eWxlSW50ZXJmYWNlO3dpbmRvdy5TaGFkeUNTUz17cHJlcGFyZVRlbXBsYXRlKGUsbixpKXt0LmZsdXNoQ3VzdG9tU3R5bGVzKCksdC5wcmVwYXJlVGVtcGxhdGUoZSxuKX0scHJlcGFyZVRlbXBsYXRlU3R5bGVzKHQsZSxuKXt3aW5kb3cuU2hhZHlDU1MucHJlcGFyZVRlbXBsYXRlKHQsZSxuKX0scHJlcGFyZVRlbXBsYXRlRG9tKHQsZSl7fSxzdHlsZVN1YnRyZWUoZSxuKXt0LmZsdXNoQ3VzdG9tU3R5bGVzKCksdC5zdHlsZVN1YnRyZWUoZSxuKX0sc3R5bGVFbGVtZW50KGUpe3QuZmx1c2hDdXN0b21TdHlsZXMoKSx0LnN0eWxlRWxlbWVudChlKX0sc3R5bGVEb2N1bWVudChlKXt0LmZsdXNoQ3VzdG9tU3R5bGVzKCksdC5zdHlsZURvY3VtZW50KGUpfSxnZXRDb21wdXRlZFN0eWxlVmFsdWU6KHQsZSk9PmFuKHQsZSksZmx1c2hDdXN0b21TdHlsZXMoKXt0LmZsdXNoQ3VzdG9tU3R5bGVzKCl9LG5hdGl2ZUNzczpJZSxuYXRpdmVTaGFkb3c6QWUsY3NzQnVpbGQ6TGUsZGlzYWJsZVJ1bnRpbWU6TmV9LGUmJih3aW5kb3cuU2hhZHlDU1MuQ3VzdG9tU3R5bGVJbnRlcmZhY2U9ZSl9d2luZG93LlNoYWR5Q1NTLkFwcGx5U2hpbT1MbjsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE3IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQKICAgIENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvCiAgICBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50IGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KY2xhc3MgTm57Y29uc3RydWN0b3IoKXt0aGlzLl9hc3luY01vZHVsZT1udWxsLHRoaXMuX2NhbGxiYWNrPW51bGwsdGhpcy5fdGltZXI9bnVsbH1zZXRDb25maWcodCxlKXt0aGlzLl9hc3luY01vZHVsZT10LHRoaXMuX2NhbGxiYWNrPWUsdGhpcy5fdGltZXI9dGhpcy5fYXN5bmNNb2R1bGUucnVuKCgoKT0+e3RoaXMuX3RpbWVyPW51bGwsSW4uZGVsZXRlKHRoaXMpLHRoaXMuX2NhbGxiYWNrKCl9KSl9Y2FuY2VsKCl7dGhpcy5pc0FjdGl2ZSgpJiYodGhpcy5fY2FuY2VsQXN5bmMoKSxJbi5kZWxldGUodGhpcykpfV9jYW5jZWxBc3luYygpe3RoaXMuaXNBY3RpdmUoKSYmKHRoaXMuX2FzeW5jTW9kdWxlLmNhbmNlbCh0aGlzLl90aW1lciksdGhpcy5fdGltZXI9bnVsbCl9Zmx1c2goKXt0aGlzLmlzQWN0aXZlKCkmJih0aGlzLmNhbmNlbCgpLHRoaXMuX2NhbGxiYWNrKCkpfWlzQWN0aXZlKCl7cmV0dXJuIG51bGwhPXRoaXMuX3RpbWVyfXN0YXRpYyBkZWJvdW5jZSh0LGUsbil7cmV0dXJuIHQgaW5zdGFuY2VvZiBObj90Ll9jYW5jZWxBc3luYygpOnQ9bmV3IE5uLHQuc2V0Q29uZmlnKGUsbiksdH19bGV0IEluPW5ldyBTZXQ7Y29uc3QgUm49ZnVuY3Rpb24odCl7SW4uYWRkKHQpfSxPbj1mdW5jdGlvbigpe2NvbnN0IHQ9Qm9vbGVhbihJbi5zaXplKTtyZXR1cm4gSW4uZm9yRWFjaCgodD0+e3RyeXt0LmZsdXNoKCl9Y2F0Y2godCl7c2V0VGltZW91dCgoKCk9Pnt0aHJvdyB0fSkpfX0pKSx0fTsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE3IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQKICAgIENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvCiAgICBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50IGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KbGV0IHpuPSJzdHJpbmciPT10eXBlb2YgZG9jdW1lbnQuaGVhZC5zdHlsZS50b3VjaEFjdGlvbixEbj0iX19wb2x5bWVyR2VzdHVyZXMiLEJuPSJfX3BvbHltZXJHZXN0dXJlc0hhbmRsZWQiLEhuPSJfX3BvbHltZXJHZXN0dXJlc1RvdWNoQWN0aW9uIixGbj1bIm1vdXNlZG93biIsIm1vdXNlbW92ZSIsIm1vdXNldXAiLCJjbGljayJdLFZuPVswLDEsNCwyXSxVbj0oZnVuY3Rpb24oKXt0cnl7cmV0dXJuIDE9PT1uZXcgTW91c2VFdmVudCgidGVzdCIse2J1dHRvbnM6MX0pLmJ1dHRvbnN9Y2F0Y2godCl7cmV0dXJuITF9fSkoKTtmdW5jdGlvbiBqbih0KXtyZXR1cm4gRm4uaW5kZXhPZih0KT4tMX1sZXQgR249ITE7ZnVuY3Rpb24gV24odCl7aWYoIWpuKHQpJiYidG91Y2hlbmQiIT09dClyZXR1cm4gem4mJkduJiZ2P3twYXNzaXZlOiEwfTp2b2lkIDB9IShmdW5jdGlvbigpe3RyeXtsZXQgdD1PYmplY3QuZGVmaW5lUHJvcGVydHkoe30sInBhc3NpdmUiLHtnZXQoKXtHbj0hMH19KTt3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigidGVzdCIsbnVsbCx0KSx3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigidGVzdCIsbnVsbCx0KX1jYXRjaCh0KXt9fSkoKTtsZXQgcW49bmF2aWdhdG9yLnVzZXJBZ2VudC5tYXRjaCgvaVAoPzpbb2FdZHxob25lKXxBbmRyb2lkLyk7Y29uc3QgWW49W10sWG49e2J1dHRvbjohMCxpbnB1dDohMCxrZXlnZW46ITAsbWV0ZXI6ITAsb3V0cHV0OiEwLHRleHRhcmVhOiEwLHByb2dyZXNzOiEwLHNlbGVjdDohMH0sJG49e2J1dHRvbjohMCxjb21tYW5kOiEwLGZpZWxkc2V0OiEwLGlucHV0OiEwLGtleWdlbjohMCxvcHRncm91cDohMCxvcHRpb246ITAsc2VsZWN0OiEwLHRleHRhcmVhOiEwfTtmdW5jdGlvbiBLbih0KXtsZXQgZT1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0LmxhYmVsc3x8W10pO2lmKCFlLmxlbmd0aCl7ZT1bXTtsZXQgbj10LmdldFJvb3ROb2RlKCk7aWYodC5pZCl7bGV0IGk9bi5xdWVyeVNlbGVjdG9yQWxsKGBsYWJlbFtmb3IgPSAke3QuaWR9XWApO2ZvcihsZXQgdD0wO3Q8aS5sZW5ndGg7dCsrKWUucHVzaChpW3RdKX19cmV0dXJuIGV9bGV0IFpuPWZ1bmN0aW9uKHQpe2xldCBlPXQuc291cmNlQ2FwYWJpbGl0aWVzO2lmKCghZXx8ZS5maXJlc1RvdWNoRXZlbnRzKSYmKHRbQm5dPXtza2lwOiEwfSwiY2xpY2siPT09dC50eXBlKSl7bGV0IGU9ITEsbj1yaSh0KTtmb3IobGV0IHQ9MDt0PG4ubGVuZ3RoO3QrKyl7aWYoblt0XS5ub2RlVHlwZT09PU5vZGUuRUxFTUVOVF9OT0RFKWlmKCJsYWJlbCI9PT1uW3RdLmxvY2FsTmFtZSlZbi5wdXNoKG5bdF0pO2Vsc2UgaWYoWG5bblt0XS5sb2NhbE5hbWVdKXtsZXQgaT1LbihuW3RdKTtmb3IobGV0IHQ9MDt0PGkubGVuZ3RoO3QrKyllPWV8fFluLmluZGV4T2YoaVt0XSk+LTF9aWYoblt0XT09PXRpLm1vdXNlLnRhcmdldClyZXR1cm59aWYoZSlyZXR1cm47dC5wcmV2ZW50RGVmYXVsdCgpLHQuc3RvcFByb3BhZ2F0aW9uKCl9fTtmdW5jdGlvbiBKbih0KXtsZXQgZT1xbj9bImNsaWNrIl06Rm47Zm9yKGxldCBuLGk9MDtpPGUubGVuZ3RoO2krKyluPWVbaV0sdD8oWW4ubGVuZ3RoPTAsZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihuLFpuLCEwKSk6ZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihuLFpuLCEwKX1mdW5jdGlvbiBRbih0KXtsZXQgZT10LnR5cGU7aWYoIWpuKGUpKXJldHVybiExO2lmKCJtb3VzZW1vdmUiPT09ZSl7bGV0IGU9dm9pZCAwPT09dC5idXR0b25zPzE6dC5idXR0b25zO3JldHVybiB0IGluc3RhbmNlb2Ygd2luZG93Lk1vdXNlRXZlbnQmJiFVbiYmKGU9Vm5bdC53aGljaF18fDApLEJvb2xlYW4oMSZlKX1yZXR1cm4gMD09PSh2b2lkIDA9PT10LmJ1dHRvbj8wOnQuYnV0dG9uKX1sZXQgdGk9e21vdXNlOnt0YXJnZXQ6bnVsbCxtb3VzZUlnbm9yZUpvYjpudWxsfSx0b3VjaDp7eDowLHk6MCxpZDotMSxzY3JvbGxEZWNpZGVkOiExfX07ZnVuY3Rpb24gZWkodCxlLG4pe3QubW92ZWZuPWUsdC51cGZuPW4sZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vtb3ZlIixlKSxkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZXVwIixuKX1mdW5jdGlvbiBuaSh0KXtkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZW1vdmUiLHQubW92ZWZuKSxkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZXVwIix0LnVwZm4pLHQubW92ZWZuPW51bGwsdC51cGZuPW51bGx9ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2hlbmQiLChmdW5jdGlvbiBpaSh0KXt0aS5tb3VzZS5tb3VzZUlnbm9yZUpvYnx8Sm4oITApLHRpLm1vdXNlLnRhcmdldD1yaSh0KVswXSx0aS5tb3VzZS5tb3VzZUlnbm9yZUpvYj1Obi5kZWJvdW5jZSh0aS5tb3VzZS5tb3VzZUlnbm9yZUpvYixndC5hZnRlcigyNTAwKSwoZnVuY3Rpb24oKXtKbigpLHRpLm1vdXNlLnRhcmdldD1udWxsLHRpLm1vdXNlLm1vdXNlSWdub3JlSm9iPW51bGx9KSl9KSwhIUduJiZ7cGFzc2l2ZTohMH0pO2NvbnN0IHJpPXdpbmRvdy5TaGFkeURPTSYmd2luZG93LlNoYWR5RE9NLm5vUGF0Y2g/d2luZG93LlNoYWR5RE9NLmNvbXBvc2VkUGF0aDp0PT50LmNvbXBvc2VkUGF0aCYmdC5jb21wb3NlZFBhdGgoKXx8W10sb2k9e30sYWk9W107ZnVuY3Rpb24gc2kodCl7Y29uc3QgZT1yaSh0KTtyZXR1cm4gZS5sZW5ndGg+MD9lWzBdOnQudGFyZ2V0fWZ1bmN0aW9uIGxpKHQpe2xldCBlLG49dC50eXBlLGk9dC5jdXJyZW50VGFyZ2V0W0RuXTtpZighaSlyZXR1cm47bGV0IHI9aVtuXTtpZihyKXtpZighdFtCbl0mJih0W0JuXT17fSwidG91Y2giPT09bi5zbGljZSgwLDUpKSl7bGV0IGU9KHQ9dCkuY2hhbmdlZFRvdWNoZXNbMF07aWYoInRvdWNoc3RhcnQiPT09biYmMT09PXQudG91Y2hlcy5sZW5ndGgmJih0aS50b3VjaC5pZD1lLmlkZW50aWZpZXIpLHRpLnRvdWNoLmlkIT09ZS5pZGVudGlmaWVyKXJldHVybjt6bnx8InRvdWNoc3RhcnQiIT09biYmInRvdWNobW92ZSIhPT1ufHwoZnVuY3Rpb24gbyh0KXtsZXQgZT10LmNoYW5nZWRUb3VjaGVzWzBdLG49dC50eXBlO2lmKCJ0b3VjaHN0YXJ0Ij09PW4pdGkudG91Y2gueD1lLmNsaWVudFgsdGkudG91Y2gueT1lLmNsaWVudFksdGkudG91Y2guc2Nyb2xsRGVjaWRlZD0hMTtlbHNlIGlmKCJ0b3VjaG1vdmUiPT09bil7aWYodGkudG91Y2guc2Nyb2xsRGVjaWRlZClyZXR1cm47dGkudG91Y2guc2Nyb2xsRGVjaWRlZD0hMDtsZXQgbj0oZnVuY3Rpb24gaSh0KXtsZXQgZT0iYXV0byIsbj1yaSh0KTtmb3IobGV0IHQsaT0wO2k8bi5sZW5ndGg7aSsrKWlmKHQ9bltpXSx0W0huXSl7ZT10W0huXTticmVha31yZXR1cm4gZX0pKHQpLGk9ITEscj1NYXRoLmFicyh0aS50b3VjaC54LWUuY2xpZW50WCksbz1NYXRoLmFicyh0aS50b3VjaC55LWUuY2xpZW50WSk7dC5jYW5jZWxhYmxlJiYoIm5vbmUiPT09bj9pPSEwOiJwYW4teCI9PT1uP2k9bz5yOiJwYW4teSI9PT1uJiYoaT1yPm8pKSxpP3QucHJldmVudERlZmF1bHQoKTpmaSgidHJhY2siKX19KSh0KX1pZihlPXRbQm5dLCFlLnNraXApe2ZvcihsZXQgbixpPTA7aTxhaS5sZW5ndGg7aSsrKW49YWlbaV0scltuLm5hbWVdJiYhZVtuLm5hbWVdJiZuLmZsb3cmJm4uZmxvdy5zdGFydC5pbmRleE9mKHQudHlwZSk+LTEmJm4ucmVzZXQmJm4ucmVzZXQoKTtmb3IobGV0IGksbz0wO288YWkubGVuZ3RoO28rKylpPWFpW29dLHJbaS5uYW1lXSYmIWVbaS5uYW1lXSYmKGVbaS5uYW1lXT0hMCxpW25dKHQpKX19fWZ1bmN0aW9uIGNpKHQsZSxuKXtyZXR1cm4hIW9pW2VdJiYoKGZ1bmN0aW9uIGkodCxlLG4pe2xldCBpPW9pW2VdLHI9aS5kZXBzLG89aS5uYW1lLGE9dFtEbl07YXx8KHRbRG5dPWE9e30pO2ZvcihsZXQgZSxuLGk9MDtpPHIubGVuZ3RoO2krKyllPXJbaV0scW4mJmpuKGUpJiYiY2xpY2siIT09ZXx8KG49YVtlXSxufHwoYVtlXT1uPXtfY291bnQ6MH0pLDA9PT1uLl9jb3VudCYmdC5hZGRFdmVudExpc3RlbmVyKGUsbGksV24oZSkpLG5bb109KG5bb118fDApKzEsbi5fY291bnQ9KG4uX2NvdW50fHwwKSsxKTt0LmFkZEV2ZW50TGlzdGVuZXIoZSxuKSxpLnRvdWNoQWN0aW9uJiZkaSh0LGkudG91Y2hBY3Rpb24pfSkodCxlLG4pLCEwKX1mdW5jdGlvbiB1aSh0LGUsbil7cmV0dXJuISFvaVtlXSYmKChmdW5jdGlvbiBpKHQsZSxuKXtsZXQgaT1vaVtlXSxyPWkuZGVwcyxvPWkubmFtZSxhPXRbRG5dO2lmKGEpZm9yKGxldCBlLG4saT0wO2k8ci5sZW5ndGg7aSsrKWU9cltpXSxuPWFbZV0sbiYmbltvXSYmKG5bb109KG5bb118fDEpLTEsbi5fY291bnQ9KG4uX2NvdW50fHwxKS0xLDA9PT1uLl9jb3VudCYmdC5yZW1vdmVFdmVudExpc3RlbmVyKGUsbGksV24oZSkpKTt0LnJlbW92ZUV2ZW50TGlzdGVuZXIoZSxuKX0pKHQsZSxuKSwhMCl9ZnVuY3Rpb24gaGkodCl7YWkucHVzaCh0KTtmb3IobGV0IGU9MDtlPHQuZW1pdHMubGVuZ3RoO2UrKylvaVt0LmVtaXRzW2VdXT10fWZ1bmN0aW9uIGRpKHQsZSl7em4mJnQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCYmdnQucnVuKCgoKT0+e3Quc3R5bGUudG91Y2hBY3Rpb249ZX0pKSx0W0huXT1lfWZ1bmN0aW9uIHBpKHQsZSxuKXtsZXQgaT1uZXcgRXZlbnQoZSx7YnViYmxlczohMCxjYW5jZWxhYmxlOiEwLGNvbXBvc2VkOiEwfSk7aWYoaS5kZXRhaWw9bixZKHQpLmRpc3BhdGNoRXZlbnQoaSksaS5kZWZhdWx0UHJldmVudGVkKXtsZXQgdD1uLnByZXZlbnRlcnx8bi5zb3VyY2VFdmVudDt0JiZ0LnByZXZlbnREZWZhdWx0JiZ0LnByZXZlbnREZWZhdWx0KCl9fWZ1bmN0aW9uIGZpKHQpe2xldCBlPShmdW5jdGlvbiBuKHQpe2ZvcihsZXQgZSxuPTA7bjxhaS5sZW5ndGg7bisrKXtlPWFpW25dO2ZvcihsZXQgbixpPTA7aTxlLmVtaXRzLmxlbmd0aDtpKyspaWYobj1lLmVtaXRzW2ldLG49PT10KXJldHVybiBlfXJldHVybiBudWxsfSkodCk7ZS5pbmZvJiYoZS5pbmZvLnByZXZlbnQ9ITApfWZ1bmN0aW9uIG1pKHQsZSxuLGkpe2UmJnBpKGUsdCx7eDpuLmNsaWVudFgseTpuLmNsaWVudFksc291cmNlRXZlbnQ6bixwcmV2ZW50ZXI6aSxwcmV2ZW50OmZ1bmN0aW9uKHQpe3JldHVybiBmaSh0KX19KX1mdW5jdGlvbiBnaSh0LGUsbil7aWYodC5wcmV2ZW50KXJldHVybiExO2lmKHQuc3RhcnRlZClyZXR1cm4hMDtsZXQgaT1NYXRoLmFicyh0LngtZSkscj1NYXRoLmFicyh0Lnktbik7cmV0dXJuIGk+PTV8fHI+PTV9ZnVuY3Rpb24gX2kodCxlLG4pe2lmKCFlKXJldHVybjtsZXQgaSxyPXQubW92ZXNbdC5tb3Zlcy5sZW5ndGgtMl0sbz10Lm1vdmVzW3QubW92ZXMubGVuZ3RoLTFdLGE9MDtyJiYoaT1vLngtci54LGE9by55LXIueSkscGkoZSwidHJhY2siLHtzdGF0ZTp0LnN0YXRlLHg6bi5jbGllbnRYLHk6bi5jbGllbnRZLGR4Om8ueC10LngsZHk6by55LXQueSxkZHg6aSxkZHk6YSxzb3VyY2VFdmVudDpuLGhvdmVyOmZ1bmN0aW9uKCl7cmV0dXJuKGZ1bmN0aW9uIHQoZSxuKXtsZXQgaT1kb2N1bWVudC5lbGVtZW50RnJvbVBvaW50KGUsbikscj1pO2Zvcig7ciYmci5zaGFkb3dSb290JiYhd2luZG93LlNoYWR5RE9NOyl7bGV0IHQ9cjtpZihyPXIuc2hhZG93Um9vdC5lbGVtZW50RnJvbVBvaW50KGUsbiksdD09PXIpYnJlYWs7ciYmKGk9cil9cmV0dXJuIGl9KShuLmNsaWVudFgsbi5jbGllbnRZKX19KX1mdW5jdGlvbiB5aSh0LGUsbil7bGV0IGk9TWF0aC5hYnMoZS5jbGllbnRYLXQueCkscj1NYXRoLmFicyhlLmNsaWVudFktdC55KSxvPXNpKG58fGUpOyFvfHwkbltvLmxvY2FsTmFtZV0mJm8uaGFzQXR0cmlidXRlKCJkaXNhYmxlZCIpfHwoaXNOYU4oaSl8fGlzTmFOKHIpfHxpPD0yNSYmcjw9MjV8fChmdW5jdGlvbiBhKHQpe2lmKCJjbGljayI9PT10LnR5cGUpe2lmKDA9PT10LmRldGFpbClyZXR1cm4hMDtsZXQgZT1zaSh0KTtpZighZS5ub2RlVHlwZXx8ZS5ub2RlVHlwZSE9PU5vZGUuRUxFTUVOVF9OT0RFKXJldHVybiEwO2xldCBuPWUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksaT10LnBhZ2VYLHI9dC5wYWdlWTtyZXR1cm4hKGk+PW4ubGVmdCYmaTw9bi5yaWdodCYmcj49bi50b3AmJnI8PW4uYm90dG9tKX1yZXR1cm4hMX0pKGUpKSYmKHQucHJldmVudHx8cGkobywidGFwIix7eDplLmNsaWVudFgseTplLmNsaWVudFksc291cmNlRXZlbnQ6ZSxwcmV2ZW50ZXI6bn0pKX1oaSh7bmFtZToiZG93bnVwIixkZXBzOlsibW91c2Vkb3duIiwidG91Y2hzdGFydCIsInRvdWNoZW5kIl0sZmxvdzp7c3RhcnQ6WyJtb3VzZWRvd24iLCJ0b3VjaHN0YXJ0Il0sZW5kOlsibW91c2V1cCIsInRvdWNoZW5kIl19LGVtaXRzOlsiZG93biIsInVwIl0saW5mbzp7bW92ZWZuOm51bGwsdXBmbjpudWxsfSxyZXNldDpmdW5jdGlvbigpe25pKHRoaXMuaW5mbyl9LG1vdXNlZG93bjpmdW5jdGlvbih0KXtpZighUW4odCkpcmV0dXJuO2xldCBlPXNpKHQpLG49dGhpcztlaSh0aGlzLmluZm8sKGZ1bmN0aW9uIHQoaSl7UW4oaSl8fChtaSgidXAiLGUsaSksbmkobi5pbmZvKSl9KSwoZnVuY3Rpb24gdChpKXtRbihpKSYmbWkoInVwIixlLGkpLG5pKG4uaW5mbyl9KSksbWkoImRvd24iLGUsdCl9LHRvdWNoc3RhcnQ6ZnVuY3Rpb24odCl7bWkoImRvd24iLHNpKHQpLHQuY2hhbmdlZFRvdWNoZXNbMF0sdCl9LHRvdWNoZW5kOmZ1bmN0aW9uKHQpe21pKCJ1cCIsc2kodCksdC5jaGFuZ2VkVG91Y2hlc1swXSx0KX19KSxoaSh7bmFtZToidHJhY2siLHRvdWNoQWN0aW9uOiJub25lIixkZXBzOlsibW91c2Vkb3duIiwidG91Y2hzdGFydCIsInRvdWNobW92ZSIsInRvdWNoZW5kIl0sZmxvdzp7c3RhcnQ6WyJtb3VzZWRvd24iLCJ0b3VjaHN0YXJ0Il0sZW5kOlsibW91c2V1cCIsInRvdWNoZW5kIl19LGVtaXRzOlsidHJhY2siXSxpbmZvOnt4OjAseTowLHN0YXRlOiJzdGFydCIsc3RhcnRlZDohMSxtb3ZlczpbXSxhZGRNb3ZlOmZ1bmN0aW9uKHQpe3RoaXMubW92ZXMubGVuZ3RoPjImJnRoaXMubW92ZXMuc2hpZnQoKSx0aGlzLm1vdmVzLnB1c2godCl9LG1vdmVmbjpudWxsLHVwZm46bnVsbCxwcmV2ZW50OiExfSxyZXNldDpmdW5jdGlvbigpe3RoaXMuaW5mby5zdGF0ZT0ic3RhcnQiLHRoaXMuaW5mby5zdGFydGVkPSExLHRoaXMuaW5mby5tb3Zlcz1bXSx0aGlzLmluZm8ueD0wLHRoaXMuaW5mby55PTAsdGhpcy5pbmZvLnByZXZlbnQ9ITEsbmkodGhpcy5pbmZvKX0sbW91c2Vkb3duOmZ1bmN0aW9uKHQpe2lmKCFRbih0KSlyZXR1cm47bGV0IGU9c2kodCksbj10aGlzLGk9ZnVuY3Rpb24gdChpKXtsZXQgcj1pLmNsaWVudFgsbz1pLmNsaWVudFk7Z2kobi5pbmZvLHIsbykmJihuLmluZm8uc3RhdGU9bi5pbmZvLnN0YXJ0ZWQ/Im1vdXNldXAiPT09aS50eXBlPyJlbmQiOiJ0cmFjayI6InN0YXJ0Iiwic3RhcnQiPT09bi5pbmZvLnN0YXRlJiZmaSgidGFwIiksbi5pbmZvLmFkZE1vdmUoe3g6cix5Om99KSxRbihpKXx8KG4uaW5mby5zdGF0ZT0iZW5kIixuaShuLmluZm8pKSxlJiZfaShuLmluZm8sZSxpKSxuLmluZm8uc3RhcnRlZD0hMCl9O2VpKHRoaXMuaW5mbyxpLChmdW5jdGlvbiB0KGUpe24uaW5mby5zdGFydGVkJiZpKGUpLG5pKG4uaW5mbyl9KSksdGhpcy5pbmZvLng9dC5jbGllbnRYLHRoaXMuaW5mby55PXQuY2xpZW50WX0sdG91Y2hzdGFydDpmdW5jdGlvbih0KXtsZXQgZT10LmNoYW5nZWRUb3VjaGVzWzBdO3RoaXMuaW5mby54PWUuY2xpZW50WCx0aGlzLmluZm8ueT1lLmNsaWVudFl9LHRvdWNobW92ZTpmdW5jdGlvbih0KXtsZXQgZT1zaSh0KSxuPXQuY2hhbmdlZFRvdWNoZXNbMF0saT1uLmNsaWVudFgscj1uLmNsaWVudFk7Z2kodGhpcy5pbmZvLGkscikmJigic3RhcnQiPT09dGhpcy5pbmZvLnN0YXRlJiZmaSgidGFwIiksdGhpcy5pbmZvLmFkZE1vdmUoe3g6aSx5OnJ9KSxfaSh0aGlzLmluZm8sZSxuKSx0aGlzLmluZm8uc3RhdGU9InRyYWNrIix0aGlzLmluZm8uc3RhcnRlZD0hMCl9LHRvdWNoZW5kOmZ1bmN0aW9uKHQpe2xldCBlPXNpKHQpLG49dC5jaGFuZ2VkVG91Y2hlc1swXTt0aGlzLmluZm8uc3RhcnRlZCYmKHRoaXMuaW5mby5zdGF0ZT0iZW5kIix0aGlzLmluZm8uYWRkTW92ZSh7eDpuLmNsaWVudFgseTpuLmNsaWVudFl9KSxfaSh0aGlzLmluZm8sZSxuKSl9fSksaGkoe25hbWU6InRhcCIsZGVwczpbIm1vdXNlZG93biIsImNsaWNrIiwidG91Y2hzdGFydCIsInRvdWNoZW5kIl0sZmxvdzp7c3RhcnQ6WyJtb3VzZWRvd24iLCJ0b3VjaHN0YXJ0Il0sZW5kOlsiY2xpY2siLCJ0b3VjaGVuZCJdfSxlbWl0czpbInRhcCJdLGluZm86e3g6TmFOLHk6TmFOLHByZXZlbnQ6ITF9LHJlc2V0OmZ1bmN0aW9uKCl7dGhpcy5pbmZvLng9TmFOLHRoaXMuaW5mby55PU5hTix0aGlzLmluZm8ucHJldmVudD0hMX0sbW91c2Vkb3duOmZ1bmN0aW9uKHQpe1FuKHQpJiYodGhpcy5pbmZvLng9dC5jbGllbnRYLHRoaXMuaW5mby55PXQuY2xpZW50WSl9LGNsaWNrOmZ1bmN0aW9uKHQpe1FuKHQpJiZ5aSh0aGlzLmluZm8sdCl9LHRvdWNoc3RhcnQ6ZnVuY3Rpb24odCl7Y29uc3QgZT10LmNoYW5nZWRUb3VjaGVzWzBdO3RoaXMuaW5mby54PWUuY2xpZW50WCx0aGlzLmluZm8ueT1lLmNsaWVudFl9LHRvdWNoZW5kOmZ1bmN0aW9uKHQpe3lpKHRoaXMuaW5mbyx0LmNoYW5nZWRUb3VjaGVzWzBdLHQpfX0pO2NvbnN0IHZpPXNpLGJpPUkoKHQ9PmNsYXNzIGV4dGVuZHMgdHtfYWRkRXZlbnRMaXN0ZW5lclRvTm9kZSh0LGUsbil7Y2kodCxlLG4pfHxzdXBlci5fYWRkRXZlbnRMaXN0ZW5lclRvTm9kZSh0LGUsbil9X3JlbW92ZUV2ZW50TGlzdGVuZXJGcm9tTm9kZSh0LGUsbil7dWkodCxlLG4pfHxzdXBlci5fcmVtb3ZlRXZlbnRMaXN0ZW5lckZyb21Ob2RlKHQsZSxuKX19KSkseGk9Lzpob3N0XCg6ZGlyXCgobHRyfHJ0bClcKVwpL2csd2k9LyhbXHNcdy0jXC5cW1xdXCpdKik6ZGlyXCgobHRyfHJ0bClcKS9nLFNpPS86ZGlyXCgoPzpsdHJ8cnRsKVwpLyxNaT1Cb29sZWFuKHdpbmRvdy5TaGFkeURPTSYmd2luZG93LlNoYWR5RE9NLmluVXNlKSxFaT1bXTsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE3IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQKICAgIENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvCiAgICBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50IGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi9sZXQgVGk9bnVsbCxDaT0iIjtmdW5jdGlvbiBBaSgpe0NpPWRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5nZXRBdHRyaWJ1dGUoImRpciIpfWZ1bmN0aW9uIGtpKHQpe2lmKCF0Ll9fYXV0b0Rpck9wdE91dCl7dC5zZXRBdHRyaWJ1dGUoImRpciIsQ2kpfX1mdW5jdGlvbiBMaSgpe0FpKCksQ2k9ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmdldEF0dHJpYnV0ZSgiZGlyIik7Zm9yKGxldCB0PTA7dDxFaS5sZW5ndGg7dCsrKWtpKEVpW3RdKX1jb25zdCBQaT1JKCh0PT57TWl8fFRpfHwoQWkoKSxUaT1uZXcgTXV0YXRpb25PYnNlcnZlcihMaSksVGkub2JzZXJ2ZShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQse2F0dHJpYnV0ZXM6ITAsYXR0cmlidXRlRmlsdGVyOlsiZGlyIl19KSk7Y29uc3QgZT1NdCh0KTtjbGFzcyBuIGV4dGVuZHMgZXtzdGF0aWMgX3Byb2Nlc3NTdHlsZVRleHQodCxuKXtyZXR1cm4gdD1lLl9wcm9jZXNzU3R5bGVUZXh0LmNhbGwodGhpcyx0LG4pLCFNaSYmU2kudGVzdCh0KSYmKHQ9dGhpcy5fcmVwbGFjZURpckluQ3NzVGV4dCh0KSx0aGlzLl9fYWN0aXZhdGVEaXI9ITApLHR9c3RhdGljIF9yZXBsYWNlRGlySW5Dc3NUZXh0KHQpe2xldCBlPXQ7cmV0dXJuIGU9ZS5yZXBsYWNlKHhpLCc6aG9zdChbZGlyPSIkMSJdKScpLGU9ZS5yZXBsYWNlKHdpLCc6aG9zdChbZGlyPSIkMiJdKSAkMScpLGV9Y29uc3RydWN0b3IoKXtzdXBlcigpLHRoaXMuX19hdXRvRGlyT3B0T3V0PSExfXJlYWR5KCl7c3VwZXIucmVhZHkoKSx0aGlzLl9fYXV0b0Rpck9wdE91dD10aGlzLmhhc0F0dHJpYnV0ZSgiZGlyIil9Y29ubmVjdGVkQ2FsbGJhY2soKXtlLnByb3RvdHlwZS5jb25uZWN0ZWRDYWxsYmFjayYmc3VwZXIuY29ubmVjdGVkQ2FsbGJhY2soKSx0aGlzLmNvbnN0cnVjdG9yLl9fYWN0aXZhdGVEaXImJighKGZ1bmN0aW9uIHQoKXtUaSYmVGkudGFrZVJlY29yZHMoKS5sZW5ndGgmJkxpKCl9KSgpLEVpLnB1c2godGhpcyksa2kodGhpcykpfWRpc2Nvbm5lY3RlZENhbGxiYWNrKCl7aWYoZS5wcm90b3R5cGUuZGlzY29ubmVjdGVkQ2FsbGJhY2smJnN1cGVyLmRpc2Nvbm5lY3RlZENhbGxiYWNrKCksdGhpcy5jb25zdHJ1Y3Rvci5fX2FjdGl2YXRlRGlyKXtjb25zdCB0PUVpLmluZGV4T2YodGhpcyk7dD4tMSYmRWkuc3BsaWNlKHQsMSl9fX1yZXR1cm4gbi5fX2FjdGl2YXRlRGlyPSExLG59KSk7Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNyBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0CiAgICBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcyBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbwogICAgc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudCBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovbGV0IE5pPSExLElpPVtdLFJpPVtdO2Z1bmN0aW9uIE9pKCl7Tmk9ITAscmVxdWVzdEFuaW1hdGlvbkZyYW1lKChmdW5jdGlvbigpe05pPSExLChmdW5jdGlvbiB0KGUpe2Zvcig7ZS5sZW5ndGg7KXppKGUuc2hpZnQoKSl9KShJaSksc2V0VGltZW91dCgoZnVuY3Rpb24oKXshKGZ1bmN0aW9uIHQoZSl7Zm9yKGxldCB0PTAsbj1lLmxlbmd0aDt0PG47dCsrKXppKGUuc2hpZnQoKSl9KShSaSl9KSl9KSl9ZnVuY3Rpb24gemkodCl7Y29uc3QgZT10WzBdLG49dFsxXSxpPXRbMl07dHJ5e24uYXBwbHkoZSxpKX1jYXRjaCh0KXtzZXRUaW1lb3V0KCgoKT0+e3Rocm93IHR9KSl9fWZ1bmN0aW9uIERpKHQsZSxuKXtOaXx8T2koKSxSaS5wdXNoKFt0LGUsbl0pfQovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTcgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dAogICAgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28KICAgIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqL2Z1bmN0aW9uIEJpKCl7ZG9jdW1lbnQuYm9keS5yZW1vdmVBdHRyaWJ1dGUoInVucmVzb2x2ZWQiKX0KLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE3IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQKICAgIENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvCiAgICBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50IGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KZnVuY3Rpb24gSGkodCxlLG4pe3JldHVybntpbmRleDp0LHJlbW92ZWQ6ZSxhZGRlZENvdW50Om59fSJpbnRlcmFjdGl2ZSI9PT1kb2N1bWVudC5yZWFkeVN0YXRlfHwiY29tcGxldGUiPT09ZG9jdW1lbnQucmVhZHlTdGF0ZT9CaSgpOndpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIixCaSk7ZnVuY3Rpb24gRmkodCxlLG4saSxyLG8pe2xldCBhLHM9MCxsPTAsYz1NYXRoLm1pbihuLWUsby1yKTtpZigwPT1lJiYwPT1yJiYocz0oZnVuY3Rpb24gdSh0LGUsbil7Zm9yKGxldCBpPTA7aTxuO2krKylpZighVWkodFtpXSxlW2ldKSlyZXR1cm4gaTtyZXR1cm4gbn0pKHQsaSxjKSksbj09dC5sZW5ndGgmJm89PWkubGVuZ3RoJiYobD0oZnVuY3Rpb24gaCh0LGUsbil7bGV0IGk9dC5sZW5ndGgscj1lLmxlbmd0aCxvPTA7Zm9yKDtvPG4mJlVpKHRbLS1pXSxlWy0tcl0pOylvKys7cmV0dXJuIG99KSh0LGksYy1zKSkscis9cyxvLT1sLChuLT1sKS0oZSs9cyk9PTAmJm8tcj09MClyZXR1cm5bXTtpZihlPT1uKXtmb3IoYT1IaShlLFtdLDApO3I8bzspYS5yZW1vdmVkLnB1c2goaVtyKytdKTtyZXR1cm5bYV19aWYocj09bylyZXR1cm5bSGkoZSxbXSxuLWUpXTtsZXQgZD0oZnVuY3Rpb24gZih0KXtsZXQgZT10Lmxlbmd0aC0xLG49dFswXS5sZW5ndGgtMSxpPXRbZV1bbl0scj1bXTtmb3IoO2U+MHx8bj4wOyl7aWYoMD09ZSl7ci5wdXNoKDIpLG4tLTtjb250aW51ZX1pZigwPT1uKXtyLnB1c2goMyksZS0tO2NvbnRpbnVlfWxldCBvLGE9dFtlLTFdW24tMV0scz10W2UtMV1bbl0sbD10W2VdW24tMV07bz1zPGw/czxhP3M6YTpsPGE/bDphLG89PWE/KGE9PWk/ci5wdXNoKDApOihyLnB1c2goMSksaT1hKSxlLS0sbi0tKTpvPT1zPyhyLnB1c2goMyksZS0tLGk9cyk6KHIucHVzaCgyKSxuLS0saT1sKX1yZXR1cm4gci5yZXZlcnNlKCkscn0pKChmdW5jdGlvbiBwKHQsZSxuLGkscixvKXtsZXQgYT1vLXIrMSxzPW4tZSsxLGw9bmV3IEFycmF5KGEpO2ZvcihsZXQgdD0wO3Q8YTt0KyspbFt0XT1uZXcgQXJyYXkocyksbFt0XVswXT10O2ZvcihsZXQgdD0wO3Q8czt0KyspbFswXVt0XT10O2ZvcihsZXQgbj0xO248YTtuKyspZm9yKGxldCBvPTE7bzxzO28rKylpZihVaSh0W2Urby0xXSxpW3Irbi0xXSkpbFtuXVtvXT1sW24tMV1bby0xXTtlbHNle2xldCB0PWxbbi0xXVtvXSsxLGU9bFtuXVtvLTFdKzE7bFtuXVtvXT10PGU/dDplfXJldHVybiBsfSkodCxlLG4saSxyLG8pKTthPXZvaWQgMDtsZXQgbT1bXSxnPWUsXz1yO2ZvcihsZXQgdD0wO3Q8ZC5sZW5ndGg7dCsrKXN3aXRjaChkW3RdKXtjYXNlIDA6YSYmKG0ucHVzaChhKSxhPXZvaWQgMCksZysrLF8rKzticmVhaztjYXNlIDE6YXx8KGE9SGkoZyxbXSwwKSksYS5hZGRlZENvdW50KyssZysrLGEucmVtb3ZlZC5wdXNoKGlbX10pLF8rKzticmVhaztjYXNlIDI6YXx8KGE9SGkoZyxbXSwwKSksYS5hZGRlZENvdW50KyssZysrO2JyZWFrO2Nhc2UgMzphfHwoYT1IaShnLFtdLDApKSxhLnJlbW92ZWQucHVzaChpW19dKSxfKyt9cmV0dXJuIGEmJm0ucHVzaChhKSxtfWZ1bmN0aW9uIFZpKHQsZSl7cmV0dXJuIEZpKHQsMCx0Lmxlbmd0aCxlLDAsZS5sZW5ndGgpfWZ1bmN0aW9uIFVpKHQsZSl7cmV0dXJuIHQ9PT1lfQovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTcgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dAogICAgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28KICAgIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqL2Z1bmN0aW9uIGppKHQpe3JldHVybiJzbG90Ij09PXQubG9jYWxOYW1lfWxldCBHaT1jbGFzc3tzdGF0aWMgZ2V0RmxhdHRlbmVkTm9kZXModCl7Y29uc3QgZT1ZKHQpO3JldHVybiBqaSh0KT8odD10LGUuYXNzaWduZWROb2Rlcyh7ZmxhdHRlbjohMH0pKTpBcnJheS5mcm9tKGUuY2hpbGROb2RlcykubWFwKCh0PT5qaSh0KT9ZKHQ9dCkuYXNzaWduZWROb2Rlcyh7ZmxhdHRlbjohMH0pOlt0XSkpLnJlZHVjZSgoKHQsZSk9PnQuY29uY2F0KGUpKSxbXSl9Y29uc3RydWN0b3IodCxlKXt0aGlzLl9zaGFkeUNoaWxkcmVuT2JzZXJ2ZXI9bnVsbCx0aGlzLl9uYXRpdmVDaGlsZHJlbk9ic2VydmVyPW51bGwsdGhpcy5fY29ubmVjdGVkPSExLHRoaXMuX3RhcmdldD10LHRoaXMuY2FsbGJhY2s9ZSx0aGlzLl9lZmZlY3RpdmVOb2Rlcz1bXSx0aGlzLl9vYnNlcnZlcj1udWxsLHRoaXMuX3NjaGVkdWxlZD0hMSx0aGlzLl9ib3VuZFNjaGVkdWxlPSgpPT57dGhpcy5fc2NoZWR1bGUoKX0sdGhpcy5jb25uZWN0KCksdGhpcy5fc2NoZWR1bGUoKX1jb25uZWN0KCl7amkodGhpcy5fdGFyZ2V0KT90aGlzLl9saXN0ZW5TbG90cyhbdGhpcy5fdGFyZ2V0XSk6WSh0aGlzLl90YXJnZXQpLmNoaWxkcmVuJiYodGhpcy5fbGlzdGVuU2xvdHMoWSh0aGlzLl90YXJnZXQpLmNoaWxkcmVuKSx3aW5kb3cuU2hhZHlET00/dGhpcy5fc2hhZHlDaGlsZHJlbk9ic2VydmVyPXdpbmRvdy5TaGFkeURPTS5vYnNlcnZlQ2hpbGRyZW4odGhpcy5fdGFyZ2V0LCh0PT57dGhpcy5fcHJvY2Vzc011dGF0aW9ucyh0KX0pKToodGhpcy5fbmF0aXZlQ2hpbGRyZW5PYnNlcnZlcj1uZXcgTXV0YXRpb25PYnNlcnZlcigodD0+e3RoaXMuX3Byb2Nlc3NNdXRhdGlvbnModCl9KSksdGhpcy5fbmF0aXZlQ2hpbGRyZW5PYnNlcnZlci5vYnNlcnZlKHRoaXMuX3RhcmdldCx7Y2hpbGRMaXN0OiEwfSkpKSx0aGlzLl9jb25uZWN0ZWQ9ITB9ZGlzY29ubmVjdCgpe2ppKHRoaXMuX3RhcmdldCk/dGhpcy5fdW5saXN0ZW5TbG90cyhbdGhpcy5fdGFyZ2V0XSk6WSh0aGlzLl90YXJnZXQpLmNoaWxkcmVuJiYodGhpcy5fdW5saXN0ZW5TbG90cyhZKHRoaXMuX3RhcmdldCkuY2hpbGRyZW4pLHdpbmRvdy5TaGFkeURPTSYmdGhpcy5fc2hhZHlDaGlsZHJlbk9ic2VydmVyPyh3aW5kb3cuU2hhZHlET00udW5vYnNlcnZlQ2hpbGRyZW4odGhpcy5fc2hhZHlDaGlsZHJlbk9ic2VydmVyKSx0aGlzLl9zaGFkeUNoaWxkcmVuT2JzZXJ2ZXI9bnVsbCk6dGhpcy5fbmF0aXZlQ2hpbGRyZW5PYnNlcnZlciYmKHRoaXMuX25hdGl2ZUNoaWxkcmVuT2JzZXJ2ZXIuZGlzY29ubmVjdCgpLHRoaXMuX25hdGl2ZUNoaWxkcmVuT2JzZXJ2ZXI9bnVsbCkpLHRoaXMuX2Nvbm5lY3RlZD0hMX1fc2NoZWR1bGUoKXt0aGlzLl9zY2hlZHVsZWR8fCh0aGlzLl9zY2hlZHVsZWQ9ITAsdnQucnVuKCgoKT0+dGhpcy5mbHVzaCgpKSkpfV9wcm9jZXNzTXV0YXRpb25zKHQpe3RoaXMuX3Byb2Nlc3NTbG90TXV0YXRpb25zKHQpLHRoaXMuZmx1c2goKX1fcHJvY2Vzc1Nsb3RNdXRhdGlvbnModCl7aWYodClmb3IobGV0IGU9MDtlPHQubGVuZ3RoO2UrKyl7bGV0IG49dFtlXTtuLmFkZGVkTm9kZXMmJnRoaXMuX2xpc3RlblNsb3RzKG4uYWRkZWROb2Rlcyksbi5yZW1vdmVkTm9kZXMmJnRoaXMuX3VubGlzdGVuU2xvdHMobi5yZW1vdmVkTm9kZXMpfX1mbHVzaCgpe2lmKCF0aGlzLl9jb25uZWN0ZWQpcmV0dXJuITE7d2luZG93LlNoYWR5RE9NJiZTaGFkeURPTS5mbHVzaCgpLHRoaXMuX25hdGl2ZUNoaWxkcmVuT2JzZXJ2ZXI/dGhpcy5fcHJvY2Vzc1Nsb3RNdXRhdGlvbnModGhpcy5fbmF0aXZlQ2hpbGRyZW5PYnNlcnZlci50YWtlUmVjb3JkcygpKTp0aGlzLl9zaGFkeUNoaWxkcmVuT2JzZXJ2ZXImJnRoaXMuX3Byb2Nlc3NTbG90TXV0YXRpb25zKHRoaXMuX3NoYWR5Q2hpbGRyZW5PYnNlcnZlci50YWtlUmVjb3JkcygpKSx0aGlzLl9zY2hlZHVsZWQ9ITE7bGV0IHQ9e3RhcmdldDp0aGlzLl90YXJnZXQsYWRkZWROb2RlczpbXSxyZW1vdmVkTm9kZXM6W119LGU9dGhpcy5jb25zdHJ1Y3Rvci5nZXRGbGF0dGVuZWROb2Rlcyh0aGlzLl90YXJnZXQpLG49VmkoZSx0aGlzLl9lZmZlY3RpdmVOb2Rlcyk7Zm9yKGxldCBlLGk9MDtpPG4ubGVuZ3RoJiYoZT1uW2ldKTtpKyspZm9yKGxldCBuLGk9MDtpPGUucmVtb3ZlZC5sZW5ndGgmJihuPWUucmVtb3ZlZFtpXSk7aSsrKXQucmVtb3ZlZE5vZGVzLnB1c2gobik7Zm9yKGxldCBpLHI9MDtyPG4ubGVuZ3RoJiYoaT1uW3JdKTtyKyspZm9yKGxldCBuPWkuaW5kZXg7bjxpLmluZGV4K2kuYWRkZWRDb3VudDtuKyspdC5hZGRlZE5vZGVzLnB1c2goZVtuXSk7dGhpcy5fZWZmZWN0aXZlTm9kZXM9ZTtsZXQgaT0hMTtyZXR1cm4odC5hZGRlZE5vZGVzLmxlbmd0aHx8dC5yZW1vdmVkTm9kZXMubGVuZ3RoKSYmKGk9ITAsdGhpcy5jYWxsYmFjay5jYWxsKHRoaXMuX3RhcmdldCx0KSksaX1fbGlzdGVuU2xvdHModCl7Zm9yKGxldCBlPTA7ZTx0Lmxlbmd0aDtlKyspe2xldCBuPXRbZV07amkobikmJm4uYWRkRXZlbnRMaXN0ZW5lcigic2xvdGNoYW5nZSIsdGhpcy5fYm91bmRTY2hlZHVsZSl9fV91bmxpc3RlblNsb3RzKHQpe2ZvcihsZXQgZT0wO2U8dC5sZW5ndGg7ZSsrKXtsZXQgbj10W2VdO2ppKG4pJiZuLnJlbW92ZUV2ZW50TGlzdGVuZXIoInNsb3RjaGFuZ2UiLHRoaXMuX2JvdW5kU2NoZWR1bGUpfX19OwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTcgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dAogICAgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28KICAgIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqL2NvbnN0IFdpPWZ1bmN0aW9uKCl7bGV0IHQsZTtkb3t0PXdpbmRvdy5TaGFkeURPTSYmU2hhZHlET00uZmx1c2goKSx3aW5kb3cuU2hhZHlDU1MmJndpbmRvdy5TaGFkeUNTUy5TY29waW5nU2hpbSYmd2luZG93LlNoYWR5Q1NTLlNjb3BpbmdTaGltLmZsdXNoKCksZT1PbigpfXdoaWxlKHR8fGUpfSxxaT1FbGVtZW50LnByb3RvdHlwZSxZaT1xaS5tYXRjaGVzfHxxaS5tYXRjaGVzU2VsZWN0b3J8fHFpLm1vek1hdGNoZXNTZWxlY3Rvcnx8cWkubXNNYXRjaGVzU2VsZWN0b3J8fHFpLm9NYXRjaGVzU2VsZWN0b3J8fHFpLndlYmtpdE1hdGNoZXNTZWxlY3RvcixYaT1mdW5jdGlvbih0LGUpe3JldHVybiBZaS5jYWxsKHQsZSl9OwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTcgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dAogICAgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28KICAgIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqL2NsYXNzICRpe2NvbnN0cnVjdG9yKHQpe3dpbmRvdy5TaGFkeURPTSYmd2luZG93LlNoYWR5RE9NLmluVXNlJiZ3aW5kb3cuU2hhZHlET00ucGF0Y2godCksdGhpcy5ub2RlPXR9b2JzZXJ2ZU5vZGVzKHQpe3JldHVybiBuZXcgR2kodGhpcy5ub2RlLHQpfXVub2JzZXJ2ZU5vZGVzKHQpe3QuZGlzY29ubmVjdCgpfW5vdGlmeU9ic2VydmVyKCl7fWRlZXBDb250YWlucyh0KXtpZihZKHRoaXMubm9kZSkuY29udGFpbnModCkpcmV0dXJuITA7bGV0IGU9dCxuPXQub3duZXJEb2N1bWVudDtmb3IoO2UmJmUhPT1uJiZlIT09dGhpcy5ub2RlOyllPVkoZSkucGFyZW50Tm9kZXx8WShlKS5ob3N0O3JldHVybiBlPT09dGhpcy5ub2RlfWdldE93bmVyUm9vdCgpe3JldHVybiBZKHRoaXMubm9kZSkuZ2V0Um9vdE5vZGUoKX1nZXREaXN0cmlidXRlZE5vZGVzKCl7cmV0dXJuInNsb3QiPT09dGhpcy5ub2RlLmxvY2FsTmFtZT9ZKHRoaXMubm9kZSkuYXNzaWduZWROb2Rlcyh7ZmxhdHRlbjohMH0pOltdfWdldERlc3RpbmF0aW9uSW5zZXJ0aW9uUG9pbnRzKCl7bGV0IHQ9W10sZT1ZKHRoaXMubm9kZSkuYXNzaWduZWRTbG90O2Zvcig7ZTspdC5wdXNoKGUpLGU9WShlKS5hc3NpZ25lZFNsb3Q7cmV0dXJuIHR9aW1wb3J0Tm9kZSh0LGUpe2xldCBuPXRoaXMubm9kZSBpbnN0YW5jZW9mIERvY3VtZW50P3RoaXMubm9kZTp0aGlzLm5vZGUub3duZXJEb2N1bWVudDtyZXR1cm4gWShuKS5pbXBvcnROb2RlKHQsZSl9Z2V0RWZmZWN0aXZlQ2hpbGROb2Rlcygpe3JldHVybiBHaS5nZXRGbGF0dGVuZWROb2Rlcyh0aGlzLm5vZGUpfXF1ZXJ5RGlzdHJpYnV0ZWRFbGVtZW50cyh0KXtsZXQgZT10aGlzLmdldEVmZmVjdGl2ZUNoaWxkTm9kZXMoKSxuPVtdO2ZvcihsZXQgaSxyPTAsbz1lLmxlbmd0aDtyPG8mJihpPWVbcl0pO3IrKylpLm5vZGVUeXBlPT09Tm9kZS5FTEVNRU5UX05PREUmJlhpKGksdCkmJm4ucHVzaChpKTtyZXR1cm4gbn1nZXQgYWN0aXZlRWxlbWVudCgpe2xldCB0PXRoaXMubm9kZTtyZXR1cm4gdm9pZCAwIT09dC5fYWN0aXZlRWxlbWVudD90Ll9hY3RpdmVFbGVtZW50OnQuYWN0aXZlRWxlbWVudH19ZnVuY3Rpb24gS2kodCxlKXtmb3IobGV0IG49MDtuPGUubGVuZ3RoO24rKyl7bGV0IGk9ZVtuXTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxpLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ub2RlW2ldfSxjb25maWd1cmFibGU6ITB9KX19Y2xhc3MgWml7Y29uc3RydWN0b3IodCl7dGhpcy5ldmVudD10fWdldCByb290VGFyZ2V0KCl7cmV0dXJuIHRoaXMucGF0aFswXX1nZXQgbG9jYWxUYXJnZXQoKXtyZXR1cm4gdGhpcy5ldmVudC50YXJnZXR9Z2V0IHBhdGgoKXtyZXR1cm4gdGhpcy5ldmVudC5jb21wb3NlZFBhdGgoKX19bGV0IEppPSRpO2lmKHdpbmRvdy5TaGFkeURPTSYmd2luZG93LlNoYWR5RE9NLmluVXNlJiZ3aW5kb3cuU2hhZHlET00ubm9QYXRjaCYmd2luZG93LlNoYWR5RE9NLldyYXBwZXIpe2NsYXNzIHQgZXh0ZW5kcyB3aW5kb3cuU2hhZHlET00uV3JhcHBlcnt9T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoJGkucHJvdG90eXBlKS5mb3JFYWNoKChlPT57ImFjdGl2ZUVsZW1lbnQiIT1lJiYodC5wcm90b3R5cGVbZV09JGkucHJvdG90eXBlW2VdKX0pKSxLaSh0LnByb3RvdHlwZSxbImNsYXNzTGlzdCJdKSxKaT10LE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKFppLnByb3RvdHlwZSx7bG9jYWxUYXJnZXQ6e2dldCgpe2NvbnN0IHQ9dGhpcy5ldmVudC5jdXJyZW50VGFyZ2V0LGU9dCYmZXIodCkuZ2V0T3duZXJSb290KCksbj10aGlzLnBhdGg7Zm9yKGxldCB0PTA7dDxuLmxlbmd0aDt0Kyspe2NvbnN0IGk9blt0XTtpZihlcihpKS5nZXRPd25lclJvb3QoKT09PWUpcmV0dXJuIGl9fSxjb25maWd1cmFibGU6ITB9LHBhdGg6e2dldCgpe3JldHVybiB3aW5kb3cuU2hhZHlET00uY29tcG9zZWRQYXRoKHRoaXMuZXZlbnQpfSxjb25maWd1cmFibGU6ITB9fSl9ZWxzZSEoZnVuY3Rpb24gUWkodCxlKXtmb3IobGV0IG49MDtuPGUubGVuZ3RoO24rKyl7bGV0IGk9ZVtuXTt0W2ldPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubm9kZVtpXS5hcHBseSh0aGlzLm5vZGUsYXJndW1lbnRzKX19fSkoJGkucHJvdG90eXBlLFsiY2xvbmVOb2RlIiwiYXBwZW5kQ2hpbGQiLCJpbnNlcnRCZWZvcmUiLCJyZW1vdmVDaGlsZCIsInJlcGxhY2VDaGlsZCIsInNldEF0dHJpYnV0ZSIsInJlbW92ZUF0dHJpYnV0ZSIsInF1ZXJ5U2VsZWN0b3IiLCJxdWVyeVNlbGVjdG9yQWxsIl0pLEtpKCRpLnByb3RvdHlwZSxbInBhcmVudE5vZGUiLCJmaXJzdENoaWxkIiwibGFzdENoaWxkIiwibmV4dFNpYmxpbmciLCJwcmV2aW91c1NpYmxpbmciLCJmaXJzdEVsZW1lbnRDaGlsZCIsImxhc3RFbGVtZW50Q2hpbGQiLCJuZXh0RWxlbWVudFNpYmxpbmciLCJwcmV2aW91c0VsZW1lbnRTaWJsaW5nIiwiY2hpbGROb2RlcyIsImNoaWxkcmVuIiwiY2xhc3NMaXN0Il0pLChmdW5jdGlvbiB0cih0LGUpe2ZvcihsZXQgbj0wO248ZS5sZW5ndGg7bisrKXtsZXQgaT1lW25dO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGkse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm5vZGVbaV19LHNldDpmdW5jdGlvbih0KXt0aGlzLm5vZGVbaV09dH0sY29uZmlndXJhYmxlOiEwfSl9fSkoJGkucHJvdG90eXBlLFsidGV4dENvbnRlbnQiLCJpbm5lckhUTUwiLCJjbGFzc05hbWUiXSk7Y29uc3QgZXI9ZnVuY3Rpb24odCl7aWYoKHQ9dHx8ZG9jdW1lbnQpaW5zdGFuY2VvZiBKaSlyZXR1cm4gdDtpZih0IGluc3RhbmNlb2YgWmkpcmV0dXJuIHQ7bGV0IGU9dC5fX2RvbUFwaTtyZXR1cm4gZXx8KGU9dCBpbnN0YW5jZW9mIEV2ZW50P25ldyBaaSh0KTpuZXcgSmkodCksdC5fX2RvbUFwaT1lKSxlfSxucj13aW5kb3cuU2hhZHlET00saXI9d2luZG93LlNoYWR5Q1NTOwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dAogICAgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28KICAgIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqL2Z1bmN0aW9uIHJyKHQsZSl7cmV0dXJuIFkodCkuZ2V0Um9vdE5vZGUoKT09PWV9Ci8qKgogICAgICogQGZpbGVvdmVydmlldwogICAgICogQHN1cHByZXNzIHtjaGVja1Byb3RvdHlwYWxUeXBlc30KICAgICAqIEBsaWNlbnNlIENvcHlyaWdodCAoYykgMjAxNyBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICAgKiBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgICAqIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kCiAgICAgKiBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5CiAgICAgKiBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5CiAgICAgKiBHb29nbGUgYXMgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQCiAgICAgKiByaWdodHMgZ3JhbnQgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAgKi8KY29uc3Qgb3I9ImRpc2FibGUtdXBncmFkZSIsYXI9dD0+e2Zvcig7dDspe2NvbnN0IGU9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LCJvYnNlcnZlZEF0dHJpYnV0ZXMiKTtpZihlKXJldHVybiBlLmdldDt0PU9iamVjdC5nZXRQcm90b3R5cGVPZih0LnByb3RvdHlwZSkuY29uc3RydWN0b3J9cmV0dXJuKCk9PltdfTtJKCh0PT57Y29uc3QgZT15ZSh0KTtsZXQgbj1hcihlKTtyZXR1cm4gY2xhc3MgZXh0ZW5kcyBle2NvbnN0cnVjdG9yKCl7c3VwZXIoKX1zdGF0aWMgZ2V0IG9ic2VydmVkQXR0cmlidXRlcygpe3JldHVybiBuLmNhbGwodGhpcykuY29uY2F0KG9yKX1faW5pdGlhbGl6ZVByb3BlcnRpZXMoKXt0aGlzLmhhc0F0dHJpYnV0ZShvcik/dGhpcy5fX2lzVXBncmFkZURpc2FibGVkPSEwOnN1cGVyLl9pbml0aWFsaXplUHJvcGVydGllcygpfV9lbmFibGVQcm9wZXJ0aWVzKCl7dGhpcy5fX2lzVXBncmFkZURpc2FibGVkfHxzdXBlci5fZW5hYmxlUHJvcGVydGllcygpfV9jYW5BcHBseVByb3BlcnR5RGVmYXVsdCh0KXtyZXR1cm4gc3VwZXIuX2NhbkFwcGx5UHJvcGVydHlEZWZhdWx0KHQpJiYhKHRoaXMuX19pc1VwZ3JhZGVEaXNhYmxlZCYmdGhpcy5faXNQcm9wZXJ0eVBlbmRpbmcodCkpfWF0dHJpYnV0ZUNoYW5nZWRDYWxsYmFjayh0LGUsbixpKXt0PT1vcj90aGlzLl9faXNVcGdyYWRlRGlzYWJsZWQmJm51bGw9PW4mJihzdXBlci5faW5pdGlhbGl6ZVByb3BlcnRpZXMoKSx0aGlzLl9faXNVcGdyYWRlRGlzYWJsZWQ9ITEsWSh0aGlzKS5pc0Nvbm5lY3RlZCYmc3VwZXIuY29ubmVjdGVkQ2FsbGJhY2soKSk6c3VwZXIuYXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrKHQsZSxuLGkpfWNvbm5lY3RlZENhbGxiYWNrKCl7dGhpcy5fX2lzVXBncmFkZURpc2FibGVkfHxzdXBlci5jb25uZWN0ZWRDYWxsYmFjaygpfWRpc2Nvbm5lY3RlZENhbGxiYWNrKCl7dGhpcy5fX2lzVXBncmFkZURpc2FibGVkfHxzdXBlci5kaXNjb25uZWN0ZWRDYWxsYmFjaygpfX19KSk7Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNyBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0CiAgICBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcyBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbwogICAgc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudCBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCmNvbnN0IHNyPSJkaXNhYmxlLXVwZ3JhZGUiO2xldCBscj13aW5kb3cuU2hhZHlDU1M7Y29uc3QgY3I9SSgodD0+e2NvbnN0IGU9YmkoeWUodCkpLG49X2U/ZTpQaShlKSxpPWFyKG4pLHI9e3g6InBhbi14Iix5OiJwYW4teSIsbm9uZToibm9uZSIsYWxsOiJhdXRvIn07Y2xhc3MgbyBleHRlbmRzIG57Y29uc3RydWN0b3IoKXtzdXBlcigpfXN0YXRpYyBnZXQgaW1wb3J0TWV0YSgpe3JldHVybiB0aGlzLnByb3RvdHlwZS5pbXBvcnRNZXRhfWNyZWF0ZWQoKXt9X19hdHRyaWJ1dGVSZWFjdGlvbih0LGUsbil7KHRoaXMuX19kYXRhQXR0cmlidXRlcyYmdGhpcy5fX2RhdGFBdHRyaWJ1dGVzW3RdfHx0PT09c3IpJiZ0aGlzLmF0dHJpYnV0ZUNoYW5nZWRDYWxsYmFjayh0LGUsbixudWxsKX1zZXRBdHRyaWJ1dGUodCxlKXtpZihMJiYhdGhpcy5fbGVnYWN5Rm9yY2VPYnNlcnZlZEF0dHJpYnV0ZXMpe2NvbnN0IG49dGhpcy5nZXRBdHRyaWJ1dGUodCk7c3VwZXIuc2V0QXR0cmlidXRlKHQsZSksdGhpcy5fX2F0dHJpYnV0ZVJlYWN0aW9uKHQsbixTdHJpbmcoZSkpfWVsc2Ugc3VwZXIuc2V0QXR0cmlidXRlKHQsZSl9cmVtb3ZlQXR0cmlidXRlKHQpe2lmKEwmJiF0aGlzLl9sZWdhY3lGb3JjZU9ic2VydmVkQXR0cmlidXRlcyl7Y29uc3QgZT10aGlzLmdldEF0dHJpYnV0ZSh0KTtzdXBlci5yZW1vdmVBdHRyaWJ1dGUodCksdGhpcy5fX2F0dHJpYnV0ZVJlYWN0aW9uKHQsZSxudWxsKX1lbHNlIHN1cGVyLnJlbW92ZUF0dHJpYnV0ZSh0KX1zdGF0aWMgZ2V0IG9ic2VydmVkQXR0cmlidXRlcygpe3JldHVybiBMJiYhdGhpcy5wcm90b3R5cGUuX2xlZ2FjeUZvcmNlT2JzZXJ2ZWRBdHRyaWJ1dGVzPyh0aGlzLmhhc093blByb3BlcnR5KEpTQ29tcGlsZXJfcmVuYW1lUHJvcGVydHkoIl9fb2JzZXJ2ZWRBdHRyaWJ1dGVzIix0aGlzKSl8fCh0aGlzLl9fb2JzZXJ2ZWRBdHRyaWJ1dGVzPVtdKSx0aGlzLl9fb2JzZXJ2ZWRBdHRyaWJ1dGVzKTppLmNhbGwodGhpcykuY29uY2F0KHNyKX1fZW5hYmxlUHJvcGVydGllcygpe3RoaXMuX19pc1VwZ3JhZGVEaXNhYmxlZHx8c3VwZXIuX2VuYWJsZVByb3BlcnRpZXMoKX1fY2FuQXBwbHlQcm9wZXJ0eURlZmF1bHQodCl7cmV0dXJuIHN1cGVyLl9jYW5BcHBseVByb3BlcnR5RGVmYXVsdCh0KSYmISh0aGlzLl9faXNVcGdyYWRlRGlzYWJsZWQmJnRoaXMuX2lzUHJvcGVydHlQZW5kaW5nKHQpKX1jb25uZWN0ZWRDYWxsYmFjaygpe3RoaXMuX19uZWVkc0F0dHJpYnV0ZXNBdENvbm5lY3RlZCYmdGhpcy5fdGFrZUF0dHJpYnV0ZXMoKSx0aGlzLl9faXNVcGdyYWRlRGlzYWJsZWR8fChzdXBlci5jb25uZWN0ZWRDYWxsYmFjaygpLHRoaXMuaXNBdHRhY2hlZD0hMCx0aGlzLmF0dGFjaGVkKCkpfWF0dGFjaGVkKCl7fWRpc2Nvbm5lY3RlZENhbGxiYWNrKCl7dGhpcy5fX2lzVXBncmFkZURpc2FibGVkfHwoc3VwZXIuZGlzY29ubmVjdGVkQ2FsbGJhY2soKSx0aGlzLmlzQXR0YWNoZWQ9ITEsdGhpcy5kZXRhY2hlZCgpKX1kZXRhY2hlZCgpe31hdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2sodCxlLG4saSl7ZSE9PW4mJih0PT1zcj90aGlzLl9faXNVcGdyYWRlRGlzYWJsZWQmJm51bGw9PW4mJih0aGlzLl9pbml0aWFsaXplUHJvcGVydGllcygpLHRoaXMuX19pc1VwZ3JhZGVEaXNhYmxlZD0hMSxZKHRoaXMpLmlzQ29ubmVjdGVkJiZ0aGlzLmNvbm5lY3RlZENhbGxiYWNrKCkpOihzdXBlci5hdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2sodCxlLG4saSksdGhpcy5hdHRyaWJ1dGVDaGFuZ2VkKHQsZSxuKSkpfWF0dHJpYnV0ZUNoYW5nZWQodCxlLG4pe31faW5pdGlhbGl6ZVByb3BlcnRpZXMoKXtpZih3JiZ0aGlzLmhhc0F0dHJpYnV0ZShzcikpdGhpcy5fX2lzVXBncmFkZURpc2FibGVkPSEwO2Vsc2V7bGV0IHQ9T2JqZWN0LmdldFByb3RvdHlwZU9mKHRoaXMpO3QuaGFzT3duUHJvcGVydHkoSlNDb21waWxlcl9yZW5hbWVQcm9wZXJ0eSgiX19oYXNSZWdpc3RlckZpbmlzaGVkIix0KSl8fCh0aGlzLl9yZWdpc3RlcmVkKCksdC5fX2hhc1JlZ2lzdGVyRmluaXNoZWQ9ITApLHN1cGVyLl9pbml0aWFsaXplUHJvcGVydGllcygpLHRoaXMucm9vdD10aGlzLHRoaXMuY3JlYXRlZCgpLEwmJiF0aGlzLl9sZWdhY3lGb3JjZU9ic2VydmVkQXR0cmlidXRlcyYmKHRoaXMuaGFzQXR0cmlidXRlcygpP3RoaXMuX3Rha2VBdHRyaWJ1dGVzKCk6dGhpcy5wYXJlbnROb2RlfHwodGhpcy5fX25lZWRzQXR0cmlidXRlc0F0Q29ubmVjdGVkPSEwKSksdGhpcy5fYXBwbHlMaXN0ZW5lcnMoKX19X3Rha2VBdHRyaWJ1dGVzKCl7Y29uc3QgdD10aGlzLmF0dHJpYnV0ZXM7Zm9yKGxldCBlPTAsbj10Lmxlbmd0aDtlPG47ZSsrKXtjb25zdCBuPXRbZV07dGhpcy5fX2F0dHJpYnV0ZVJlYWN0aW9uKG4ubmFtZSxudWxsLG4udmFsdWUpfX1fcmVnaXN0ZXJlZCgpe31yZWFkeSgpe3RoaXMuX2Vuc3VyZUF0dHJpYnV0ZXMoKSxzdXBlci5yZWFkeSgpfV9lbnN1cmVBdHRyaWJ1dGVzKCl7fV9hcHBseUxpc3RlbmVycygpe31zZXJpYWxpemUodCl7cmV0dXJuIHRoaXMuX3NlcmlhbGl6ZVZhbHVlKHQpfWRlc2VyaWFsaXplKHQsZSl7cmV0dXJuIHRoaXMuX2Rlc2VyaWFsaXplVmFsdWUodCxlKX1yZWZsZWN0UHJvcGVydHlUb0F0dHJpYnV0ZSh0LGUsbil7dGhpcy5fcHJvcGVydHlUb0F0dHJpYnV0ZSh0LGUsbil9c2VyaWFsaXplVmFsdWVUb0F0dHJpYnV0ZSh0LGUsbil7dGhpcy5fdmFsdWVUb05vZGVBdHRyaWJ1dGUobnx8dGhpcyx0LGUpfWV4dGVuZCh0LGUpe2lmKCF0fHwhZSlyZXR1cm4gdHx8ZTtsZXQgbj1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhlKTtmb3IobGV0IGkscj0wO3I8bi5sZW5ndGgmJihpPW5bcl0pO3IrKyl7bGV0IG49T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLGkpO24mJk9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGksbil9cmV0dXJuIHR9bWl4aW4odCxlKXtmb3IobGV0IG4gaW4gZSl0W25dPWVbbl07cmV0dXJuIHR9Y2hhaW5PYmplY3QodCxlKXtyZXR1cm4gdCYmZSYmdCE9PWUmJih0Ll9fcHJvdG9fXz1lKSx0fWluc3RhbmNlVGVtcGxhdGUodCl7bGV0IGU9dGhpcy5jb25zdHJ1Y3Rvci5fY29udGVudEZvclRlbXBsYXRlKHQpO3JldHVybiBkb2N1bWVudC5pbXBvcnROb2RlKGUsITApfWZpcmUodCxlLG4pe249bnx8e30sZT1udWxsPT1lP3t9OmU7bGV0IGk9bmV3IEV2ZW50KHQse2J1YmJsZXM6dm9pZCAwPT09bi5idWJibGVzfHxuLmJ1YmJsZXMsY2FuY2VsYWJsZTpCb29sZWFuKG4uY2FuY2VsYWJsZSksY29tcG9zZWQ6dm9pZCAwPT09bi5jb21wb3NlZHx8bi5jb21wb3NlZH0pO3JldHVybiBpLmRldGFpbD1lLFkobi5ub2RlfHx0aGlzKS5kaXNwYXRjaEV2ZW50KGkpLGl9bGlzdGVuKHQsZSxuKXt0PXR8fHRoaXM7bGV0IGk9dGhpcy5fX2JvdW5kTGlzdGVuZXJzfHwodGhpcy5fX2JvdW5kTGlzdGVuZXJzPW5ldyBXZWFrTWFwKSxyPWkuZ2V0KHQpO3J8fChyPXt9LGkuc2V0KHQscikpO2xldCBvPWUrbjtyW29dfHwocltvXT10aGlzLl9hZGRNZXRob2RFdmVudExpc3RlbmVyVG9Ob2RlKHQsZSxuLHRoaXMpKX11bmxpc3Rlbih0LGUsbil7dD10fHx0aGlzO2xldCBpPXRoaXMuX19ib3VuZExpc3RlbmVycyYmdGhpcy5fX2JvdW5kTGlzdGVuZXJzLmdldCh0KSxyPWUrbixvPWkmJmlbcl07byYmKHRoaXMuX3JlbW92ZUV2ZW50TGlzdGVuZXJGcm9tTm9kZSh0LGUsbyksaVtyXT1udWxsKX1zZXRTY3JvbGxEaXJlY3Rpb24odCxlKXtkaShlfHx0aGlzLHJbdF18fCJhdXRvIil9JCQodCl7cmV0dXJuIHRoaXMucm9vdC5xdWVyeVNlbGVjdG9yKHQpfWdldCBkb21Ib3N0KCl7bGV0IHQ9WSh0aGlzKS5nZXRSb290Tm9kZSgpO3JldHVybiB0IGluc3RhbmNlb2YgRG9jdW1lbnRGcmFnbWVudD90Lmhvc3Q6dH1kaXN0cmlidXRlQ29udGVudCgpe2NvbnN0IHQ9ZXIodGhpcyk7d2luZG93LlNoYWR5RE9NJiZ0LnNoYWRvd1Jvb3QmJlNoYWR5RE9NLmZsdXNoKCl9Z2V0RWZmZWN0aXZlQ2hpbGROb2Rlcygpe3JldHVybiBlcih0aGlzKS5nZXRFZmZlY3RpdmVDaGlsZE5vZGVzKCl9cXVlcnlEaXN0cmlidXRlZEVsZW1lbnRzKHQpe3JldHVybiBlcih0aGlzKS5xdWVyeURpc3RyaWJ1dGVkRWxlbWVudHModCl9Z2V0RWZmZWN0aXZlQ2hpbGRyZW4oKXtyZXR1cm4gdGhpcy5nZXRFZmZlY3RpdmVDaGlsZE5vZGVzKCkuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gdC5ub2RlVHlwZT09PU5vZGUuRUxFTUVOVF9OT0RFfSkpfWdldEVmZmVjdGl2ZVRleHRDb250ZW50KCl7bGV0IHQ9dGhpcy5nZXRFZmZlY3RpdmVDaGlsZE5vZGVzKCksZT1bXTtmb3IobGV0IG4saT0wO249dFtpXTtpKyspbi5ub2RlVHlwZSE9PU5vZGUuQ09NTUVOVF9OT0RFJiZlLnB1c2gobi50ZXh0Q29udGVudCk7cmV0dXJuIGUuam9pbigiIil9cXVlcnlFZmZlY3RpdmVDaGlsZHJlbih0KXtsZXQgZT10aGlzLnF1ZXJ5RGlzdHJpYnV0ZWRFbGVtZW50cyh0KTtyZXR1cm4gZSYmZVswXX1xdWVyeUFsbEVmZmVjdGl2ZUNoaWxkcmVuKHQpe3JldHVybiB0aGlzLnF1ZXJ5RGlzdHJpYnV0ZWRFbGVtZW50cyh0KX1nZXRDb250ZW50Q2hpbGROb2Rlcyh0KXtsZXQgZT10aGlzLnJvb3QucXVlcnlTZWxlY3Rvcih0fHwic2xvdCIpO3JldHVybiBlP2VyKGUpLmdldERpc3RyaWJ1dGVkTm9kZXMoKTpbXX1nZXRDb250ZW50Q2hpbGRyZW4odCl7cmV0dXJuIHRoaXMuZ2V0Q29udGVudENoaWxkTm9kZXModCkuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gdC5ub2RlVHlwZT09PU5vZGUuRUxFTUVOVF9OT0RFfSkpfWlzTGlnaHREZXNjZW5kYW50KHQpe2NvbnN0IGU9dGhpcztyZXR1cm4gZSE9PXQmJlkoZSkuY29udGFpbnModCkmJlkoZSkuZ2V0Um9vdE5vZGUoKT09PVkodCkuZ2V0Um9vdE5vZGUoKX1pc0xvY2FsRGVzY2VuZGFudCh0KXtyZXR1cm4gdGhpcy5yb290PT09WSh0KS5nZXRSb290Tm9kZSgpfXNjb3BlU3VidHJlZSh0LGU9ITEpe3JldHVybihmdW5jdGlvbiBuKHQsZT0hMSl7aWYoIW5yfHwhaXIpcmV0dXJuIG51bGw7aWYoIW5yLmhhbmRsZXNEeW5hbWljU2NvcGluZylyZXR1cm4gbnVsbDtjb25zdCBuPWlyLlNjb3BpbmdTaGltO2lmKCFuKXJldHVybiBudWxsO2NvbnN0IGk9bi5zY29wZUZvck5vZGUodCkscj1ZKHQpLmdldFJvb3ROb2RlKCksbz10PT57aWYoIXJyKHQscikpcmV0dXJuO2NvbnN0IGU9QXJyYXkuZnJvbShuci5uYXRpdmVNZXRob2RzLnF1ZXJ5U2VsZWN0b3JBbGwuY2FsbCh0LCIqIikpO2UucHVzaCh0KTtmb3IobGV0IHQ9MDt0PGUubGVuZ3RoO3QrKyl7Y29uc3Qgbz1lW3RdO2lmKCFycihvLHIpKWNvbnRpbnVlO2NvbnN0IGE9bi5jdXJyZW50U2NvcGVGb3JOb2RlKG8pO2EhPT1pJiYoIiIhPT1hJiZuLnVuc2NvcGVOb2RlKG8sYSksbi5zY29wZU5vZGUobyxpKSl9fTtpZihvKHQpLGUpe2NvbnN0IGU9bmV3IE11dGF0aW9uT2JzZXJ2ZXIoKHQ9Pntmb3IobGV0IGU9MDtlPHQubGVuZ3RoO2UrKyl7Y29uc3Qgbj10W2VdO2ZvcihsZXQgdD0wO3Q8bi5hZGRlZE5vZGVzLmxlbmd0aDt0Kyspe2NvbnN0IGU9bi5hZGRlZE5vZGVzW3RdO2Uubm9kZVR5cGU9PT1Ob2RlLkVMRU1FTlRfTk9ERSYmbyhlKX19fSkpO3JldHVybiBlLm9ic2VydmUodCx7Y2hpbGRMaXN0OiEwLHN1YnRyZWU6ITB9KSxlfXJldHVybiBudWxsfSkodCxlKX1nZXRDb21wdXRlZFN0eWxlVmFsdWUodCl7cmV0dXJuIGxyLmdldENvbXB1dGVkU3R5bGVWYWx1ZSh0aGlzLHQpfWRlYm91bmNlKHQsZSxuKXtyZXR1cm4gdGhpcy5fZGVib3VuY2Vycz10aGlzLl9kZWJvdW5jZXJzfHx7fSx0aGlzLl9kZWJvdW5jZXJzW3RdPU5uLmRlYm91bmNlKHRoaXMuX2RlYm91bmNlcnNbdF0sbj4wP2d0LmFmdGVyKG4pOnZ0LGUuYmluZCh0aGlzKSl9aXNEZWJvdW5jZXJBY3RpdmUodCl7dGhpcy5fZGVib3VuY2Vycz10aGlzLl9kZWJvdW5jZXJzfHx7fTtsZXQgZT10aGlzLl9kZWJvdW5jZXJzW3RdO3JldHVybiEoIWV8fCFlLmlzQWN0aXZlKCkpfWZsdXNoRGVib3VuY2VyKHQpe3RoaXMuX2RlYm91bmNlcnM9dGhpcy5fZGVib3VuY2Vyc3x8e307bGV0IGU9dGhpcy5fZGVib3VuY2Vyc1t0XTtlJiZlLmZsdXNoKCl9Y2FuY2VsRGVib3VuY2VyKHQpe3RoaXMuX2RlYm91bmNlcnM9dGhpcy5fZGVib3VuY2Vyc3x8e307bGV0IGU9dGhpcy5fZGVib3VuY2Vyc1t0XTtlJiZlLmNhbmNlbCgpfWFzeW5jKHQsZSl7cmV0dXJuIGU+MD9ndC5ydW4odC5iaW5kKHRoaXMpLGUpOn52dC5ydW4odC5iaW5kKHRoaXMpKX1jYW5jZWxBc3luYyh0KXt0PDA/dnQuY2FuY2VsKH50KTpndC5jYW5jZWwodCl9Y3JlYXRlKHQsZSl7bGV0IG49ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0KTtpZihlKWlmKG4uc2V0UHJvcGVydGllcyluLnNldFByb3BlcnRpZXMoZSk7ZWxzZSBmb3IobGV0IHQgaW4gZSluW3RdPWVbdF07cmV0dXJuIG59ZWxlbWVudE1hdGNoZXModCxlKXtyZXR1cm4gWGkoZXx8dGhpcyx0KX10b2dnbGVBdHRyaWJ1dGUodCxlKXtsZXQgbj10aGlzO3JldHVybiAzPT09YXJndW1lbnRzLmxlbmd0aCYmKG49YXJndW1lbnRzWzJdKSwxPT1hcmd1bWVudHMubGVuZ3RoJiYoZT0hbi5oYXNBdHRyaWJ1dGUodCkpLGU/KFkobikuc2V0QXR0cmlidXRlKHQsIiIpLCEwKTooWShuKS5yZW1vdmVBdHRyaWJ1dGUodCksITEpfXRvZ2dsZUNsYXNzKHQsZSxuKXtuPW58fHRoaXMsMT09YXJndW1lbnRzLmxlbmd0aCYmKGU9IW4uY2xhc3NMaXN0LmNvbnRhaW5zKHQpKSxlP24uY2xhc3NMaXN0LmFkZCh0KTpuLmNsYXNzTGlzdC5yZW1vdmUodCl9dHJhbnNmb3JtKHQsZSl7KGU9ZXx8dGhpcykuc3R5bGUud2Via2l0VHJhbnNmb3JtPXQsZS5zdHlsZS50cmFuc2Zvcm09dH10cmFuc2xhdGUzZCh0LGUsbixpKXt0aGlzLnRyYW5zZm9ybSgidHJhbnNsYXRlM2QoIit0KyIsIitlKyIsIituKyIpIixpPWl8fHRoaXMpfWFycmF5RGVsZXRlKHQsZSl7bGV0IG47aWYoQXJyYXkuaXNBcnJheSh0KSl7aWYobj10LmluZGV4T2YoZSksbj49MClyZXR1cm4gdC5zcGxpY2UobiwxKX1lbHNle2lmKG49bnQodGhpcyx0KS5pbmRleE9mKGUpLG4+PTApcmV0dXJuIHRoaXMuc3BsaWNlKHQsbiwxKX1yZXR1cm4gbnVsbH1fbG9nZ2VyKHQsZSl7c3dpdGNoKEFycmF5LmlzQXJyYXkoZSkmJjE9PT1lLmxlbmd0aCYmQXJyYXkuaXNBcnJheShlWzBdKSYmKGU9ZVswXSksdCl7Y2FzZSJsb2ciOmNhc2Uid2FybiI6Y2FzZSJlcnJvciI6Y29uc29sZVt0XSguLi5lKX19X2xvZyguLi50KXt0aGlzLl9sb2dnZXIoImxvZyIsdCl9X3dhcm4oLi4udCl7dGhpcy5fbG9nZ2VyKCJ3YXJuIix0KX1fZXJyb3IoLi4udCl7dGhpcy5fbG9nZ2VyKCJlcnJvciIsdCl9X2xvZ2YodCwuLi5lKXtyZXR1cm5bIlslczo6JXNdIix0aGlzLmlzLHQsLi4uZV19fXJldHVybiBvLnByb3RvdHlwZS5pcz0iIixvfSkpO2Z1bmN0aW9uIHVyKHQsZSl7bGV0IG49MCxpPTA7Zm9yKDs7KXtpZihuPT09dC5sZW5ndGgpcmV0dXJuIGk9PT1lLmxlbmd0aD8wOi0xO2lmKGk9PT1lLmxlbmd0aClyZXR1cm4gMTtpZihkcih0W25dKSYmZHIoZVtpXSkpe2NvbnN0IHI9bixvPWk7bj1ocih0LG4rMSksaT1ocihlLGkrMSk7Y29uc3QgYT1wYXJzZUZsb2F0KHQuc2xpY2UocixuKSkscz1wYXJzZUZsb2F0KGUuc2xpY2UobyxpKSk7aWYoYTxzKXJldHVybi0xO2lmKGE+cylyZXR1cm4gMX1lbHNle2lmKHByKHRbbl0pKXtpZighcHIoZVtpXSkpcmV0dXJuLTF9ZWxzZXtpZihwcihlW2ldKSlyZXR1cm4gMTtpZih0W25dPGVbaV0pcmV0dXJuLTE7aWYodFtuXT5lW2ldKXJldHVybiAxfW4rKyxpKyt9fX1mdW5jdGlvbiBocih0LGUpe2xldCBuOyEoZnVuY3Rpb24odCl7dFt0Lk5BVFVSQUw9MF09Ik5BVFVSQUwiLHRbdC5SRUFMPTFdPSJSRUFMIix0W3QuRVhQT05FTlRfU0lHTj0yXT0iRVhQT05FTlRfU0lHTiIsdFt0LkVYUE9ORU5UPTNdPSJFWFBPTkVOVCJ9KShufHwobj17fSkpO2xldCBpPW4uTkFUVVJBTDtmb3IoO2U8dC5sZW5ndGg7ZSsrKWlmKGk9PT1uLk5BVFVSQUwpe2lmKCIuIj09PXRbZV0paT1uLlJFQUw7ZWxzZSBpZigiZSI9PT10W2VdfHwiRSI9PT10W2VdKWk9bi5FWFBPTkVOVF9TSUdOO2Vsc2UgaWYoIWRyKHRbZV0pKWJyZWFrfWVsc2UgaWYoaT09PW4uUkVBTCl7aWYoImUiPT09dFtlXXx8IkUiPT09dFtlXSlpPW4uRVhQT05FTlRfU0lHTjtlbHNlIGlmKCFkcih0W2VdKSlicmVha31lbHNlIGlmKGk9PT1uLkVYUE9ORU5UX1NJR04pe2lmKCFkcih0W2VdKSYmIisiIT09dFtlXSYmIi0iIT09dFtlXSlicmVhaztpPW4uRVhQT05FTlR9ZWxzZSBpZihpPT09bi5FWFBPTkVOVCYmIWRyKHRbZV0pKWJyZWFrO3JldHVybiBlfWZ1bmN0aW9uIGRyKHQpe3JldHVybiIwIjw9dCYmdDw9IjkifWZ1bmN0aW9uIHByKHQpe3JldHVybiIvIj09PXR8fCJfIj09PXR8fGRyKHQpfWZ1bmN0aW9uIGZyKHQpe3JldHVybiBDZS5leHBvcnRzLnVuaW9uLmFwcGx5KG51bGwsQ2UuZXhwb3J0cy52YWx1ZXModCkpLnNvcnQodXIpfWNsYXNzIG1yIGV4dGVuZHMgRXJyb3J7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMubmFtZT0iUmVxdWVzdENhbmNlbGxhdGlvbkVycm9yIn19Y2xhc3MgZ3IgZXh0ZW5kcyBFcnJvcntjb25zdHJ1Y3Rvcih0KXtzdXBlcih0KSx0aGlzLm5hbWU9IkludmFsaWRSZXF1ZXN0T3B0aW9uc0Vycm9yIixPYmplY3Quc2V0UHJvdG90eXBlT2YodGhpcyxnci5wcm90b3R5cGUpfX1jbGFzcyBfciBleHRlbmRzIEVycm9ye2NvbnN0cnVjdG9yKHQsZSl7c3VwZXIoKSx0aGlzLm1lc3NhZ2U9YFJlcXVlc3ROZXR3b3JrRXJyb3I6ICR7dC5zdGF0dXN9IGF0ICR7ZX1gLHRoaXMubmFtZT0iUmVxdWVzdE5ldHdvcmtFcnJvciIsdGhpcy5yZXE9dCx0aGlzLnVybD1lfX12YXIgeXI7IShmdW5jdGlvbih0KXt0LkdFVD0iR0VUIix0LlBPU1Q9IlBPU1QifSkoeXJ8fCh5cj17fSkpO2NsYXNzIHZye3ZhbGlkYXRlKCl7aWYodGhpcy5tZXRob2RUeXBlPT09eXIuR0VUJiZ0aGlzLmJvZHkpdGhyb3cgbmV3IGdyKCJib2R5IG11c3QgYmUgbWlzc2luZyBmb3IgYSBHRVQgcmVxdWVzdC4iKX19Y2xhc3MgYnJ7Y29uc3RydWN0b3IodD0xZTMsZT0zKXt0aGlzLl9xdWV1ZT1bXSx0aGlzLl9uQWN0aXZlUmVxdWVzdHM9MCx0aGlzLl9uU2ltdWx0YW5lb3VzUmVxdWVzdHM9dCx0aGlzLl9tYXhSZXRyaWVzPWV9cmVxdWVzdCh0LGUpe2NvbnN0IG49KGZ1bmN0aW9uIGkodCl7Y29uc3QgZT1uZXcgdnI7aWYoIXQpcmV0dXJuIGUubWV0aG9kVHlwZT15ci5HRVQsZTtyZXR1cm4gZS5tZXRob2RUeXBlPXlyLlBPU1QsZS5ib2R5PShmdW5jdGlvbiBuKHQpe2NvbnN0IGU9bmV3IEZvcm1EYXRhO2Zvcihjb25zdFtuLGldb2YgT2JqZWN0LmVudHJpZXModCkpe2NvbnN0IHQ9QXJyYXkuaXNBcnJheShpKT9pOltpXTtmb3IoY29uc3QgaSBvZiB0KWUuYXBwZW5kKG4saSl9cmV0dXJuIGV9KSh0KSxlfSkoZSk7cmV0dXJuIHRoaXMucmVxdWVzdFdpdGhPcHRpb25zKHQsbil9cmVxdWVzdFdpdGhPcHRpb25zKHQsZSl7ZS52YWxpZGF0ZSgpO3JldHVybiBuZXcgUHJvbWlzZSgoKHQsZSk9Pnt0aGlzLl9xdWV1ZS5wdXNoKHtyZXNvbHZlOnQscmVqZWN0OmV9KSx0aGlzLmxhdW5jaFJlcXVlc3RzKCl9KSkudGhlbigoKCk9PnRoaXMucHJvbWlzZVdpdGhSZXRyaWVzKHQsdGhpcy5fbWF4UmV0cmllcyxlKSkpLnRoZW4oKHQ9Pih0aGlzLl9uQWN0aXZlUmVxdWVzdHMtLSx0aGlzLmxhdW5jaFJlcXVlc3RzKCksdCkpLCh0PT4oIlJlcXVlc3ROZXR3b3JrRXJyb3IiPT09dC5uYW1lJiYodGhpcy5fbkFjdGl2ZVJlcXVlc3RzLS0sdGhpcy5sYXVuY2hSZXF1ZXN0cygpKSxQcm9taXNlLnJlamVjdCh0KSkpKX1mZXRjaCh0LGUpe3JldHVybiBuZXcgUHJvbWlzZSgoKHQsZSk9Pnt0aGlzLl9xdWV1ZS5wdXNoKHtyZXNvbHZlOnQscmVqZWN0OmV9KSx0aGlzLmxhdW5jaFJlcXVlc3RzKCl9KSkudGhlbigoKCk9PntsZXQgbj0xO3JldHVybiBuZXcgUHJvbWlzZSgoaT0+e2NvbnN0IHI9KCk9PntmZXRjaCh0LGUpLnRoZW4oKHQ9PntpZighdC5vayYmdGhpcy5fbWF4UmV0cmllcz5uKXJldHVybiBuKyssdm9pZCByKCk7aSh0KSx0aGlzLl9uQWN0aXZlUmVxdWVzdHMtLSx0aGlzLmxhdW5jaFJlcXVlc3RzKCl9KSl9O3IoKX0pKX0pKX1jbGVhclF1ZXVlKCl7Zm9yKDt0aGlzLl9xdWV1ZS5sZW5ndGg+MDspdGhpcy5fcXVldWUucG9wKCkucmVqZWN0KG5ldyBtcigiUmVxdWVzdCBjYW5jZWxsZWQgYnkgY2xlYXJRdWV1ZSIpKX1hY3RpdmVSZXF1ZXN0cygpe3JldHVybiB0aGlzLl9uQWN0aXZlUmVxdWVzdHN9b3V0c3RhbmRpbmdSZXF1ZXN0cygpe3JldHVybiB0aGlzLl9uQWN0aXZlUmVxdWVzdHMrdGhpcy5fcXVldWUubGVuZ3RofWxhdW5jaFJlcXVlc3RzKCl7Zm9yKDt0aGlzLl9uQWN0aXZlUmVxdWVzdHM8dGhpcy5fblNpbXVsdGFuZW91c1JlcXVlc3RzJiZ0aGlzLl9xdWV1ZS5sZW5ndGg+MDspdGhpcy5fbkFjdGl2ZVJlcXVlc3RzKyssdGhpcy5fcXVldWUucG9wKCkucmVzb2x2ZSh2b2lkIDApfXByb21pc2VXaXRoUmV0cmllcyh0LGUsbil7cmV0dXJuIHRoaXMuX3Byb21pc2VGcm9tVXJsKHQsbikudGhlbigodD0+dCksKGk9PmU+MD90aGlzLnByb21pc2VXaXRoUmV0cmllcyh0LGUtMSxuKTpQcm9taXNlLnJlamVjdChpKSkpfV9wcm9taXNlRnJvbVVybCh0LGUpe3JldHVybiBuZXcgUHJvbWlzZSgoKG4saSk9Pntjb25zdCByPShmdW5jdGlvbiBvKHQsZSxuLGkpe2NvbnN0IHI9bmV3IFhNTEh0dHBSZXF1ZXN0O3Iub3Blbih0LGUpLG4mJihyLndpdGhDcmVkZW50aWFscz1uKTtpJiZyLnNldFJlcXVlc3RIZWFkZXIoIkNvbnRlbnQtVHlwZSIsaSk7cmV0dXJuIHJ9KShlLm1ldGhvZFR5cGUsdCxlLndpdGhDcmVkZW50aWFscyxlLmNvbnRlbnRUeXBlKTtyLm9ubG9hZD1mdW5jdGlvbigpezIwMD09PXIuc3RhdHVzP24oSlNPTi5wYXJzZShyLnJlc3BvbnNlVGV4dCkpOmkobmV3IF9yKHIsdCkpfSxyLm9uZXJyb3I9ZnVuY3Rpb24oKXtpKG5ldyBfcihyLHQpKX0sZS5ib2R5P3Iuc2VuZChlLmJvZHkpOnIuc2VuZCgpfSkpfX1jb25zdCB4cj0iZXhwZXJpbWVudGFsUGx1Z2luIix3cj1uZXcgVVJMU2VhcmNoUGFyYW1zKHdpbmRvdy5sb2NhdGlvbi5zZWFyY2gpO2xldCBTcj1NcigpO2Z1bmN0aW9uIE1yKHQ9ImRhdGEiLGU9d3Ipe3JldHVybiIvIj09PXRbdC5sZW5ndGgtMV0mJih0PXQuc2xpY2UoMCx0Lmxlbmd0aC0xKSkse2Vudmlyb25tZW50OigpPT5Ucih0LCIvZW52aXJvbm1lbnQiKSxleHBlcmltZW50czooKT0+VHIodCwiL2V4cGVyaW1lbnRzIikscGx1Z2luUm91dGU6KGUsbixpKT0+VHIodCsiL3BsdWdpbiIsYC8ke2V9JHtufWAsaSkscGx1Z2luc0xpc3Rpbmc6KCk9PlRyKHQsIi9wbHVnaW5zX2xpc3RpbmciLENyKHtbeHJdOmUuZ2V0QWxsKHhyKX0pKSxydW5zOigpPT5Ucih0LCIvcnVucyIpLHJ1bnNGb3JFeHBlcmltZW50OmU9PlRyKHQsIi9leHBlcmltZW50X3J1bnMiLENyKHtleHBlcmltZW50OlN0cmluZyhlKX0pKX19ZnVuY3Rpb24gRXIoKXtyZXR1cm4gU3J9ZnVuY3Rpb24gVHIodCxlLG49bmV3IFVSTFNlYXJjaFBhcmFtcyl7bGV0IGk9dCtlO2lmKFN0cmluZyhuKSl7aSs9KGUuaW5jbHVkZXMoIj8iKT8iJiI6Ij8iKStTdHJpbmcobil9cmV0dXJuIGl9ZnVuY3Rpb24gQ3IodD17fSl7Y29uc3QgZT1PYmplY3Qua2V5cyh0KS5zb3J0KCkuZmlsdGVyKChlPT50W2VdKSksbj1uZXcgVVJMU2VhcmNoUGFyYW1zO3JldHVybiBlLmZvckVhY2goKGU9Pntjb25zdCBpPXRbZV07KEFycmF5LmlzQXJyYXkoaSk/aTpbaV0pLmZvckVhY2goKHQ9Pm4uYXBwZW5kKGUsdCkpKX0pKSxufXZhciBBcjtmdW5jdGlvbiBrcih0LGUpe2NvbnN0IG49KCgpPT57dHJ5e3JldHVybiBuZXcgUmVnRXhwKGUpfWNhdGNoKHQpe3JldHVybiBudWxsfX0pKCk7cmV0dXJue25hbWU6ZSxtZXRhZGF0YTp7dHlwZTpBci5TRUFSQ0hfUkVTVUxUUyx2YWxpZFJlZ2V4OiEhbix1bml2ZXJzYWxSZWdleDoiLioiPT09ZX0saXRlbXM6bj90LmZpbHRlcigodD0+dC5tYXRjaChuKSkpOltdfX1mdW5jdGlvbiBMcih0LGU9IiIpe2NvbnN0IG49W2tyKHQsZSldLGk9KGZ1bmN0aW9uIHIodCxlPSIvIil7Y29uc3Qgbj1bXSxpPXt9O3JldHVybiB0LmZvckVhY2goKHQ9Pntjb25zdCByPXQuaW5kZXhPZihlKSxvPXI+PTA/dC5zbGljZSgwLHIpOnQ7aWYoIWlbb10pe2NvbnN0IHQ9e25hbWU6byxtZXRhZGF0YTp7dHlwZTpBci5QUkVGSVhfR1JPVVB9LGl0ZW1zOltdfTtpW29dPXQsbi5wdXNoKHQpfWlbb10uaXRlbXMucHVzaCh0KX0pKSxufSkodCk7cmV0dXJuW10uY29uY2F0KG4saSl9ZnVuY3Rpb24gUHIodCxlLG4pe2NvbnN0IGk9THIoZnIodCksbikscj0oZnVuY3Rpb24gbyh0KXtjb25zdCBlPW5ldyBNYXA7cmV0dXJuIE9iamVjdC5rZXlzKHQpLmZvckVhY2goKG49Pnt0W25dLmZvckVhY2goKHQ9Pntjb25zdCBpPWUuZ2V0KHQpfHxbXTtpLnB1c2gobiksZS5zZXQodCxpKX0pKX0pKSxlfSkoQ2UuZXhwb3J0cy5waWNrKHQsZSkpO3JldHVybiBpLm1hcCgoKHtuYW1lOnQsbWV0YWRhdGE6ZSxpdGVtczpufSk9Pih7bmFtZTp0LG1ldGFkYXRhOmUsaXRlbXM6bi5tYXAoKHQ9Pih7dGFnOnQscnVuczooci5nZXQodCl8fFtdKS5zbGljZSgpfSkpKX0pKSl9ZnVuY3Rpb24gTnIodCxlKXtjb25zdCBuPXVyKHQudGFnLGUudGFnKTtyZXR1cm4gMCE9bj9uOnVyKHQucnVuLGUucnVuKX1mdW5jdGlvbiBJcih0LGUsbil7cmV0dXJuIFByKHQsZSxuKS5tYXAoKGZ1bmN0aW9uIGkodCl7Y29uc3QgZT1DZS5leHBvcnRzLmZsYXR0ZW4odC5pdGVtcy5tYXAoKCh7dGFnOnQscnVuczplfSk9PmUubWFwKChlPT4oe3RhZzp0LHJ1bjplfSkpKSkpKTtyZXR1cm4gZS5zb3J0KE5yKSx7bmFtZTp0Lm5hbWUsbWV0YWRhdGE6dC5tZXRhZGF0YSxpdGVtczplfX0pKX0KLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE3IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQKICAgIENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvCiAgICBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50IGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8hKGZ1bmN0aW9uKHQpe3RbdC5TRUFSQ0hfUkVTVUxUUz0wXT0iU0VBUkNIX1JFU1VMVFMiLHRbdC5QUkVGSVhfR1JPVVA9MV09IlBSRUZJWF9HUk9VUCJ9KShBcnx8KEFyPXt9KSk7Y29uc3QgUnI9e2F0dGFjaGVkOiEwLGRldGFjaGVkOiEwLHJlYWR5OiEwLGNyZWF0ZWQ6ITAsYmVmb3JlUmVnaXN0ZXI6ITAscmVnaXN0ZXJlZDohMCxhdHRyaWJ1dGVDaGFuZ2VkOiEwLGxpc3RlbmVyczohMCxob3N0QXR0cmlidXRlczohMH0sT3I9e2F0dGFjaGVkOiEwLGRldGFjaGVkOiEwLHJlYWR5OiEwLGNyZWF0ZWQ6ITAsYmVmb3JlUmVnaXN0ZXI6ITAscmVnaXN0ZXJlZDohMCxhdHRyaWJ1dGVDaGFuZ2VkOiEwLGJlaGF2aW9yczohMCxfbm9BY2Nlc3NvcnM6ITB9LHpyPU9iamVjdC5hc3NpZ24oe2xpc3RlbmVyczohMCxob3N0QXR0cmlidXRlczohMCxwcm9wZXJ0aWVzOiEwLG9ic2VydmVyczohMH0sT3IpO2Z1bmN0aW9uIERyKHQsZSxuLGkpeyEoZnVuY3Rpb24gcih0LGUsbil7Y29uc3QgaT10Ll9ub0FjY2Vzc29ycyxyPU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHQpO2ZvcihsZXQgbz0wO288ci5sZW5ndGg7bysrKXtsZXQgYT1yW29dO2lmKCEoYSBpbiBuKSlpZihpKWVbYV09dFthXTtlbHNle2xldCBuPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxhKTtuJiYobi5jb25maWd1cmFibGU9ITAsT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsYSxuKSl9fX0pKGUsdCxpKTtmb3IobGV0IHQgaW4gUnIpZVt0XSYmKG5bdF09blt0XXx8W10sblt0XS5wdXNoKGVbdF0pKX1mdW5jdGlvbiBCcih0LGUsbil7ZT1lfHxbXTtmb3IobGV0IGk9dC5sZW5ndGgtMTtpPj0wO2ktLSl7bGV0IHI9dFtpXTtyP0FycmF5LmlzQXJyYXkocik/QnIocixlKTplLmluZGV4T2Yocik8MCYmKCFufHxuLmluZGV4T2Yocik8MCkmJmUudW5zaGlmdChyKTpjb25zb2xlLndhcm4oImJlaGF2aW9yIGlzIG51bGwsIGNoZWNrIGZvciBtaXNzaW5nIG9yIDQwNCBpbXBvcnQiKX1yZXR1cm4gZX1mdW5jdGlvbiBIcih0LGUpe2Zvcihjb25zdCBuIGluIGUpe2NvbnN0IGk9dFtuXSxyPWVbbl07dFtuXT0hKCJ2YWx1ZSJpbiByKSYmaSYmInZhbHVlImluIGk/T2JqZWN0LmFzc2lnbih7dmFsdWU6aS52YWx1ZX0scik6cn19Y29uc3QgRnI9Y3IoSFRNTEVsZW1lbnQpO2Z1bmN0aW9uIFZyKHQsZSxuKXtsZXQgaTtjb25zdCByPXt9O2NsYXNzIG8gZXh0ZW5kcyBle3N0YXRpYyBfZmluYWxpemVDbGFzcygpe2lmKHRoaXMuaGFzT3duUHJvcGVydHkoSlNDb21waWxlcl9yZW5hbWVQcm9wZXJ0eSgiZ2VuZXJhdGVkRnJvbSIsdGhpcykpKXtpZihpKWZvcihsZXQgdCxlPTA7ZTxpLmxlbmd0aDtlKyspdD1pW2VdLHQucHJvcGVydGllcyYmdGhpcy5jcmVhdGVQcm9wZXJ0aWVzKHQucHJvcGVydGllcyksdC5vYnNlcnZlcnMmJnRoaXMuY3JlYXRlT2JzZXJ2ZXJzKHQub2JzZXJ2ZXJzLHQucHJvcGVydGllcyk7dC5wcm9wZXJ0aWVzJiZ0aGlzLmNyZWF0ZVByb3BlcnRpZXModC5wcm9wZXJ0aWVzKSx0Lm9ic2VydmVycyYmdGhpcy5jcmVhdGVPYnNlcnZlcnModC5vYnNlcnZlcnMsdC5wcm9wZXJ0aWVzKSx0aGlzLl9wcmVwYXJlVGVtcGxhdGUoKX1lbHNlIGUuX2ZpbmFsaXplQ2xhc3MuY2FsbCh0aGlzKX1zdGF0aWMgZ2V0IHByb3BlcnRpZXMoKXtjb25zdCBlPXt9O2lmKGkpZm9yKGxldCB0PTA7dDxpLmxlbmd0aDt0KyspSHIoZSxpW3RdLnByb3BlcnRpZXMpO3JldHVybiBIcihlLHQucHJvcGVydGllcyksZX1zdGF0aWMgZ2V0IG9ic2VydmVycygpe2xldCBlPVtdO2lmKGkpZm9yKGxldCB0LG49MDtuPGkubGVuZ3RoO24rKyl0PWlbbl0sdC5vYnNlcnZlcnMmJihlPWUuY29uY2F0KHQub2JzZXJ2ZXJzKSk7cmV0dXJuIHQub2JzZXJ2ZXJzJiYoZT1lLmNvbmNhdCh0Lm9ic2VydmVycykpLGV9Y3JlYXRlZCgpe3N1cGVyLmNyZWF0ZWQoKTtjb25zdCB0PXIuY3JlYXRlZDtpZih0KWZvcihsZXQgZT0wO2U8dC5sZW5ndGg7ZSsrKXRbZV0uY2FsbCh0aGlzKX1fcmVnaXN0ZXJlZCgpe2NvbnN0IHQ9by5wcm90b3R5cGU7aWYoIXQuaGFzT3duUHJvcGVydHkoSlNDb21waWxlcl9yZW5hbWVQcm9wZXJ0eSgiX19oYXNSZWdpc3RlckZpbmlzaGVkIix0KSkpe3QuX19oYXNSZWdpc3RlckZpbmlzaGVkPSEwLHN1cGVyLl9yZWdpc3RlcmVkKCksdyYmYSh0KTtjb25zdCBlPU9iamVjdC5nZXRQcm90b3R5cGVPZih0aGlzKTtsZXQgbj1yLmJlZm9yZVJlZ2lzdGVyO2lmKG4pZm9yKGxldCB0PTA7dDxuLmxlbmd0aDt0Kyspblt0XS5jYWxsKGUpO2lmKG49ci5yZWdpc3RlcmVkLG4pZm9yKGxldCB0PTA7dDxuLmxlbmd0aDt0Kyspblt0XS5jYWxsKGUpfX1fYXBwbHlMaXN0ZW5lcnMoKXtzdXBlci5fYXBwbHlMaXN0ZW5lcnMoKTtjb25zdCB0PXIubGlzdGVuZXJzO2lmKHQpZm9yKGxldCBlPTA7ZTx0Lmxlbmd0aDtlKyspe2NvbnN0IG49dFtlXTtpZihuKWZvcihsZXQgdCBpbiBuKXRoaXMuX2FkZE1ldGhvZEV2ZW50TGlzdGVuZXJUb05vZGUodGhpcyx0LG5bdF0pfX1fZW5zdXJlQXR0cmlidXRlcygpe2NvbnN0IHQ9ci5ob3N0QXR0cmlidXRlcztpZih0KWZvcihsZXQgZT10Lmxlbmd0aC0xO2U+PTA7ZS0tKXtjb25zdCBuPXRbZV07Zm9yKGxldCB0IGluIG4pdGhpcy5fZW5zdXJlQXR0cmlidXRlKHQsblt0XSl9c3VwZXIuX2Vuc3VyZUF0dHJpYnV0ZXMoKX1yZWFkeSgpe3N1cGVyLnJlYWR5KCk7bGV0IHQ9ci5yZWFkeTtpZih0KWZvcihsZXQgZT0wO2U8dC5sZW5ndGg7ZSsrKXRbZV0uY2FsbCh0aGlzKX1hdHRhY2hlZCgpe3N1cGVyLmF0dGFjaGVkKCk7bGV0IHQ9ci5hdHRhY2hlZDtpZih0KWZvcihsZXQgZT0wO2U8dC5sZW5ndGg7ZSsrKXRbZV0uY2FsbCh0aGlzKX1kZXRhY2hlZCgpe3N1cGVyLmRldGFjaGVkKCk7bGV0IHQ9ci5kZXRhY2hlZDtpZih0KWZvcihsZXQgZT0wO2U8dC5sZW5ndGg7ZSsrKXRbZV0uY2FsbCh0aGlzKX1hdHRyaWJ1dGVDaGFuZ2VkKHQsZSxuKXtzdXBlci5hdHRyaWJ1dGVDaGFuZ2VkKCk7bGV0IGk9ci5hdHRyaWJ1dGVDaGFuZ2VkO2lmKGkpZm9yKGxldCByPTA7cjxpLmxlbmd0aDtyKyspaVtyXS5jYWxsKHRoaXMsdCxlLG4pfX1pZihuKXtBcnJheS5pc0FycmF5KG4pfHwobj1bbl0pO2xldCB0PWUucHJvdG90eXBlLmJlaGF2aW9ycztpPUJyKG4sbnVsbCx0KSxvLnByb3RvdHlwZS5iZWhhdmlvcnM9dD90LmNvbmNhdChuKTppfWNvbnN0IGE9ZT0+e2kmJihmdW5jdGlvbiBuKHQsZSxpKXtmb3IobGV0IG49MDtuPGUubGVuZ3RoO24rKylEcih0LGVbbl0saSx6cil9KShlLGksciksRHIoZSx0LHIsT3IpfTtyZXR1cm4gd3x8YShvLnByb3RvdHlwZSksby5nZW5lcmF0ZWRGcm9tPXQsb31jb25zdCBVcj1mdW5jdGlvbih0LGUpe3R8fGNvbnNvbGUud2FybigiUG9seW1lci5DbGFzcyByZXF1aXJlcyBgaW5mb2AgYXJndW1lbnQiKTtsZXQgbj1lP2UoRnIpOkZyO3JldHVybiBuPVZyKHQsbix0LmJlaGF2aW9ycyksbi5pcz1uLnByb3RvdHlwZS5pcz10LmlzLG59LGpyPWZ1bmN0aW9uKHQpe2xldCBlO3JldHVybiBlPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6anIuQ2xhc3ModCksdC5fbGVnYWN5Rm9yY2VPYnNlcnZlZEF0dHJpYnV0ZXMmJihlLnByb3RvdHlwZS5fbGVnYWN5Rm9yY2VPYnNlcnZlZEF0dHJpYnV0ZXM9dC5fbGVnYWN5Rm9yY2VPYnNlcnZlZEF0dHJpYnV0ZXMpLGN1c3RvbUVsZW1lbnRzLmRlZmluZShlLmlzLGUpLGV9OwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTcgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dAogICAgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28KICAgIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTcgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dAogICAgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28KICAgIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwpmdW5jdGlvbiBHcih0LGUsbixpLHIpe2xldCBvO3ImJihvPSJvYmplY3QiPT10eXBlb2YgbiYmbnVsbCE9PW4sbyYmKGk9dC5fX2RhdGFUZW1wW2VdKSk7bGV0IGE9aSE9PW4mJihpPT1pfHxuPT1uKTtyZXR1cm4gbyYmYSYmKHQuX19kYXRhVGVtcFtlXT1uKSxhfWpyLkNsYXNzPVVyO2NvbnN0IFdyPUkoKHQ9PmNsYXNzIGV4dGVuZHMgdHtfc2hvdWxkUHJvcGVydHlDaGFuZ2UodCxlLG4pe3JldHVybiBHcih0aGlzLHQsZSxuLCEwKX19KSkscXI9SSgodD0+Y2xhc3MgZXh0ZW5kcyB0e3N0YXRpYyBnZXQgcHJvcGVydGllcygpe3JldHVybnttdXRhYmxlRGF0YTpCb29sZWFufX1fc2hvdWxkUHJvcGVydHlDaGFuZ2UodCxlLG4pe3JldHVybiBHcih0aGlzLHQsZSxuLHRoaXMubXV0YWJsZURhdGEpfX0pKTtXci5fbXV0YWJsZVByb3BlcnR5Q2hhbmdlPUdyOwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTcgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dAogICAgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28KICAgIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwpsZXQgWXI9bnVsbDtmdW5jdGlvbiBYcigpe3JldHVybiBZcn1Yci5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShIVE1MVGVtcGxhdGVFbGVtZW50LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOlhyLHdyaXRhYmxlOiEwfX0pO2NvbnN0ICRyPWZlKFhyKSxLcj1Xcigkcik7Y29uc3QgWnI9ZmUoY2xhc3N7fSk7ZnVuY3Rpb24gSnIodCxlKXtmb3IobGV0IG49MDtuPGUubGVuZ3RoO24rKyl7bGV0IGk9ZVtuXTtpZihCb29sZWFuKHQpIT1Cb29sZWFuKGkuX19oaWRlVGVtcGxhdGVDaGlsZHJlbl9fKSlpZihpLm5vZGVUeXBlPT09Tm9kZS5URVhUX05PREUpdD8oaS5fX3BvbHltZXJUZXh0Q29udGVudF9fPWkudGV4dENvbnRlbnQsaS50ZXh0Q29udGVudD0iIik6aS50ZXh0Q29udGVudD1pLl9fcG9seW1lclRleHRDb250ZW50X187ZWxzZSBpZigic2xvdCI9PT1pLmxvY2FsTmFtZSlpZih0KWkuX19wb2x5bWVyUmVwbGFjZWRfXz1kb2N1bWVudC5jcmVhdGVDb21tZW50KCJoaWRkZW4tc2xvdCIpLFkoWShpKS5wYXJlbnROb2RlKS5yZXBsYWNlQ2hpbGQoaS5fX3BvbHltZXJSZXBsYWNlZF9fLGkpO2Vsc2V7Y29uc3QgdD1pLl9fcG9seW1lclJlcGxhY2VkX187dCYmWShZKHQpLnBhcmVudE5vZGUpLnJlcGxhY2VDaGlsZChpLHQpfWVsc2UgaS5zdHlsZSYmKHQ/KGkuX19wb2x5bWVyRGlzcGxheV9fPWkuc3R5bGUuZGlzcGxheSxpLnN0eWxlLmRpc3BsYXk9Im5vbmUiKTppLnN0eWxlLmRpc3BsYXk9aS5fX3BvbHltZXJEaXNwbGF5X18pO2kuX19oaWRlVGVtcGxhdGVDaGlsZHJlbl9fPXQsaS5fc2hvd0hpZGVDaGlsZHJlbiYmaS5fc2hvd0hpZGVDaGlsZHJlbih0KX19Y2xhc3MgUXIgZXh0ZW5kcyBacntjb25zdHJ1Y3Rvcih0KXtzdXBlcigpLHRoaXMuX2NvbmZpZ3VyZVByb3BlcnRpZXModCksdGhpcy5yb290PXRoaXMuX3N0YW1wVGVtcGxhdGUodGhpcy5fX2RhdGFIb3N0KTtsZXQgZT1bXTt0aGlzLmNoaWxkcmVuPWU7Zm9yKGxldCB0PXRoaXMucm9vdC5maXJzdENoaWxkO3Q7dD10Lm5leHRTaWJsaW5nKWUucHVzaCh0KSx0Ll9fdGVtcGxhdGl6ZUluc3RhbmNlPXRoaXM7dGhpcy5fX3RlbXBsYXRpemVPd25lciYmdGhpcy5fX3RlbXBsYXRpemVPd25lci5fX2hpZGVUZW1wbGF0ZUNoaWxkcmVuX18mJnRoaXMuX3Nob3dIaWRlQ2hpbGRyZW4oITApO2xldCBuPXRoaXMuX190ZW1wbGF0aXplT3B0aW9uczsodCYmbi5pbnN0YW5jZVByb3BzfHwhbi5pbnN0YW5jZVByb3BzKSYmdGhpcy5fZW5hYmxlUHJvcGVydGllcygpfV9jb25maWd1cmVQcm9wZXJ0aWVzKHQpe2lmKHRoaXMuX190ZW1wbGF0aXplT3B0aW9ucy5mb3J3YXJkSG9zdFByb3ApZm9yKGxldCB0IGluIHRoaXMuX19ob3N0UHJvcHMpdGhpcy5fc2V0UGVuZGluZ1Byb3BlcnR5KHQsdGhpcy5fX2RhdGFIb3N0WyJfaG9zdF8iK3RdKTtmb3IobGV0IGUgaW4gdCl0aGlzLl9zZXRQZW5kaW5nUHJvcGVydHkoZSx0W2VdKX1mb3J3YXJkSG9zdFByb3AodCxlKXt0aGlzLl9zZXRQZW5kaW5nUHJvcGVydHlPclBhdGgodCxlLCExLCEwKSYmdGhpcy5fX2RhdGFIb3N0Ll9lbnF1ZXVlQ2xpZW50KHRoaXMpfV9hZGRFdmVudExpc3RlbmVyVG9Ob2RlKHQsZSxuKXtpZih0aGlzLl9tZXRob2RIb3N0JiZ0aGlzLl9fdGVtcGxhdGl6ZU9wdGlvbnMucGFyZW50TW9kZWwpdGhpcy5fbWV0aG9kSG9zdC5fYWRkRXZlbnRMaXN0ZW5lclRvTm9kZSh0LGUsKHQ9Pnt0Lm1vZGVsPXRoaXMsbih0KX0pKTtlbHNle2xldCBpPXRoaXMuX19kYXRhSG9zdC5fX2RhdGFIb3N0O2kmJmkuX2FkZEV2ZW50TGlzdGVuZXJUb05vZGUodCxlLG4pfX1fc2hvd0hpZGVDaGlsZHJlbih0KXtKcih0LHRoaXMuY2hpbGRyZW4pfV9zZXRVbm1hbmFnZWRQcm9wZXJ0eVRvTm9kZSh0LGUsbil7dC5fX2hpZGVUZW1wbGF0ZUNoaWxkcmVuX18mJnQubm9kZVR5cGU9PU5vZGUuVEVYVF9OT0RFJiYidGV4dENvbnRlbnQiPT1lP3QuX19wb2x5bWVyVGV4dENvbnRlbnRfXz1uOnN1cGVyLl9zZXRVbm1hbmFnZWRQcm9wZXJ0eVRvTm9kZSh0LGUsbil9Z2V0IHBhcmVudE1vZGVsKCl7bGV0IHQ9dGhpcy5fX3BhcmVudE1vZGVsO2lmKCF0KXtsZXQgZTt0PXRoaXM7ZG97dD10Ll9fZGF0YUhvc3QuX19kYXRhSG9zdH13aGlsZSgoZT10Ll9fdGVtcGxhdGl6ZU9wdGlvbnMpJiYhZS5wYXJlbnRNb2RlbCk7dGhpcy5fX3BhcmVudE1vZGVsPXR9cmV0dXJuIHR9ZGlzcGF0Y2hFdmVudCh0KXtyZXR1cm4hMH19Y29uc3QgdG89V3IoUXIpO2Z1bmN0aW9uIGVvKHQpe2xldCBlPXQuX19kYXRhSG9zdDtyZXR1cm4gZSYmZS5fbWV0aG9kSG9zdHx8ZX1mdW5jdGlvbiBubyh0LGUsbil7bGV0IGk9bi5tdXRhYmxlRGF0YT90bzpRcjthby5taXhpbiYmKGk9YW8ubWl4aW4oaSkpO2xldCByPWNsYXNzIGV4dGVuZHMgaXt9O3JldHVybiByLnByb3RvdHlwZS5fX3RlbXBsYXRpemVPcHRpb25zPW4sci5wcm90b3R5cGUuX2JpbmRUZW1wbGF0ZSh0KSwoZnVuY3Rpb24gbyh0LGUsbixpKXtsZXQgcj1uLmhvc3RQcm9wc3x8e307Zm9yKGxldCBlIGluIGkuaW5zdGFuY2VQcm9wcyl7ZGVsZXRlIHJbZV07bGV0IG49aS5ub3RpZnlJbnN0YW5jZVByb3A7biYmdC5wcm90b3R5cGUuX2FkZFByb3BlcnR5RWZmZWN0KGUsdC5wcm90b3R5cGUuUFJPUEVSVFlfRUZGRUNUX1RZUEVTLk5PVElGWSx7Zm46b28oZSxuKX0pfWlmKGkuZm9yd2FyZEhvc3RQcm9wJiZlLl9fZGF0YUhvc3QpZm9yKGxldCBlIGluIHIpbi5oYXNIb3N0UHJvcHN8fChuLmhhc0hvc3RQcm9wcz0hMCksdC5wcm90b3R5cGUuX2FkZFByb3BlcnR5RWZmZWN0KGUsdC5wcm90b3R5cGUuUFJPUEVSVFlfRUZGRUNUX1RZUEVTLk5PVElGWSx7Zm46ZnVuY3Rpb24gdChlLG4saSl7ZS5fX2RhdGFIb3N0Ll9zZXRQZW5kaW5nUHJvcGVydHlPclBhdGgoIl9ob3N0XyIrbixpW25dLCEwLCEwKX19KX0pKHIsdCxlLG4pLHJ9ZnVuY3Rpb24gaW8odCxlLG4saSl7bGV0IHI9bi5mb3J3YXJkSG9zdFByb3A7aWYociYmZS5oYXNIb3N0UHJvcHMpe2NvbnN0IG89InRlbXBsYXRlIj09dC5sb2NhbE5hbWU7bGV0IGE9ZS50ZW1wbGF0aXplVGVtcGxhdGVDbGFzcztpZighYSl7aWYobyl7bGV0IHQ9bi5tdXRhYmxlRGF0YT9LcjokcjtjbGFzcyBpIGV4dGVuZHMgdHt9YT1lLnRlbXBsYXRpemVUZW1wbGF0ZUNsYXNzPWl9ZWxzZXtjb25zdCBuPXQuY29uc3RydWN0b3I7Y2xhc3MgaSBleHRlbmRzIG57fWE9ZS50ZW1wbGF0aXplVGVtcGxhdGVDbGFzcz1pfWxldCBzPWUuaG9zdFByb3BzO2ZvcihsZXQgdCBpbiBzKWEucHJvdG90eXBlLl9hZGRQcm9wZXJ0eUVmZmVjdCgiX2hvc3RfIit0LGEucHJvdG90eXBlLlBST1BFUlRZX0VGRkVDVF9UWVBFUy5QUk9QQUdBVEUse2ZuOnJvKHQscil9KSxhLnByb3RvdHlwZS5fY3JlYXRlTm90aWZ5aW5nUHJvcGVydHkoIl9ob3N0XyIrdCk7UyYmaSYmKGZ1bmN0aW9uIG8odCxlLG4pe2NvbnN0IGk9bi5jb25zdHJ1Y3Rvci5fcHJvcGVydGllcyx7cHJvcGVydHlFZmZlY3RzOnJ9PXQse2luc3RhbmNlUHJvcHM6b309ZTtmb3IobGV0IHQgaW4gcilpZighKGlbdF18fG8mJm9bdF0pKXtjb25zdCBlPXJbdF07Zm9yKGxldCBuPTA7bjxlLmxlbmd0aDtuKyspe2NvbnN0e3BhcnQ6aX09ZVtuXS5pbmZvO2lmKCFpLnNpZ25hdHVyZXx8IWkuc2lnbmF0dXJlLnN0YXRpYyl7Y29uc29sZS53YXJuKGBQcm9wZXJ0eSAnJHt0fScgdXNlZCBpbiB0ZW1wbGF0ZSBidXQgbm90IGRlY2xhcmVkIGluICdwcm9wZXJ0aWVzJzsgYXR0cmlidXRlIHdpbGwgbm90IGJlIG9ic2VydmVkLmApO2JyZWFrfX19fSkoZSxuLGkpfWlmKHQuX19kYXRhUHJvdG8mJk9iamVjdC5hc3NpZ24odC5fX2RhdGEsdC5fX2RhdGFQcm90byksbykhKGZ1bmN0aW9uIGEodCxlKXtZcj10LE9iamVjdC5zZXRQcm90b3R5cGVPZih0LGUucHJvdG90eXBlKSxuZXcgZSxZcj1udWxsfSkodCxhKSx0Ll9fZGF0YVRlbXA9e30sdC5fX2RhdGFQZW5kaW5nPW51bGwsdC5fX2RhdGFPbGQ9bnVsbCx0Ll9lbmFibGVQcm9wZXJ0aWVzKCk7ZWxzZXtPYmplY3Quc2V0UHJvdG90eXBlT2YodCxhLnByb3RvdHlwZSk7Y29uc3Qgbj1lLmhvc3RQcm9wcztmb3IobGV0IGUgaW4gbilpZihlPSJfaG9zdF8iK2UsZSBpbiB0KXtjb25zdCBuPXRbZV07ZGVsZXRlIHRbZV0sdC5fX2RhdGFbZV09bn19fX1mdW5jdGlvbiBybyh0LGUpe3JldHVybiBmdW5jdGlvbiB0KG4saSxyKXtlLmNhbGwobi5fX3RlbXBsYXRpemVPd25lcixpLnN1YnN0cmluZygiX2hvc3RfIi5sZW5ndGgpLHJbaV0pfX1mdW5jdGlvbiBvbyh0LGUpe3JldHVybiBmdW5jdGlvbiB0KG4saSxyKXtlLmNhbGwobi5fX3RlbXBsYXRpemVPd25lcixuLGkscltpXSl9fWZ1bmN0aW9uIGFvKHQsZSxuKXtpZihiJiYhZW8odCkpdGhyb3cgbmV3IEVycm9yKCJzdHJpY3RUZW1wbGF0ZVBvbGljeTogdGVtcGxhdGUgb3duZXIgbm90IHRydXN0ZWQiKTtpZihuPW58fHt9LHQuX190ZW1wbGF0aXplT3duZXIpdGhyb3cgbmV3IEVycm9yKCJBIDx0ZW1wbGF0ZT4gY2FuIG9ubHkgYmUgdGVtcGxhdGl6ZWQgb25jZSIpO3QuX190ZW1wbGF0aXplT3duZXI9ZTtsZXQgaT0oZT9lLmNvbnN0cnVjdG9yOlFyKS5fcGFyc2VUZW1wbGF0ZSh0KSxyPWkudGVtcGxhdGl6ZUluc3RhbmNlQ2xhc3M7cnx8KHI9bm8odCxpLG4pLGkudGVtcGxhdGl6ZUluc3RhbmNlQ2xhc3M9cik7Y29uc3Qgbz1lbyh0KTtpbyh0LGksbixvKTtsZXQgYT1jbGFzcyBleHRlbmRzIHJ7fTtyZXR1cm4gYS5wcm90b3R5cGUuX21ldGhvZEhvc3Q9byxhLnByb3RvdHlwZS5fX2RhdGFIb3N0PXQsYS5wcm90b3R5cGUuX190ZW1wbGF0aXplT3duZXI9ZSxhLnByb3RvdHlwZS5fX2hvc3RQcm9wcz1pLmhvc3RQcm9wcyxhPWEsYX1mdW5jdGlvbiBzbyh0LGUpe2xldCBuO2Zvcig7ZTspaWYobj1lLl9fZGF0YUhvc3Q/ZTplLl9fdGVtcGxhdGl6ZUluc3RhbmNlKXtpZihuLl9fZGF0YUhvc3Q9PXQpcmV0dXJuIG47ZT1uLl9fZGF0YUhvc3R9ZWxzZSBlPVkoZSkucGFyZW50Tm9kZTtyZXR1cm4gbnVsbH0KLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE3IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQKICAgIENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvCiAgICBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50IGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi9jb25zdCBsbz17dGVtcGxhdGl6ZSh0LGUpe3RoaXMuX3RlbXBsYXRpemVyVGVtcGxhdGU9dCx0aGlzLmN0b3I9YW8odCx0aGlzLHttdXRhYmxlRGF0YTpCb29sZWFuKGUpLHBhcmVudE1vZGVsOnRoaXMuX3BhcmVudE1vZGVsLGluc3RhbmNlUHJvcHM6dGhpcy5faW5zdGFuY2VQcm9wcyxmb3J3YXJkSG9zdFByb3A6dGhpcy5fZm9yd2FyZEhvc3RQcm9wVjIsbm90aWZ5SW5zdGFuY2VQcm9wOnRoaXMuX25vdGlmeUluc3RhbmNlUHJvcFYyfSl9LHN0YW1wKHQpe3JldHVybiBuZXcgdGhpcy5jdG9yKHQpfSxtb2RlbEZvckVsZW1lbnQodCl7cmV0dXJuIHNvKHRoaXMuX3RlbXBsYXRpemVyVGVtcGxhdGUsdCl9fTsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE3IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQKICAgIENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvCiAgICBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50IGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi9sZXQgY289ITE7ZnVuY3Rpb24gdW8oKXtpZih3JiYhbSl7aWYoIWNvKXtjbz0hMDtjb25zdCB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxlIik7dC50ZXh0Q29udGVudD0iZG9tLWJpbmQsZG9tLWlmLGRvbS1yZXBlYXR7ZGlzcGxheTpub25lO30iLGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQodCl9cmV0dXJuITB9cmV0dXJuITF9Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNyBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0CiAgICBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcyBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbwogICAgc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudCBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovY29uc3QgaG89YmkocXIoZmUoSFRNTEVsZW1lbnQpKSk7Y3VzdG9tRWxlbWVudHMuZGVmaW5lKCJkb20tYmluZCIsY2xhc3MgZXh0ZW5kcyBob3tzdGF0aWMgZ2V0IG9ic2VydmVkQXR0cmlidXRlcygpe3JldHVyblsibXV0YWJsZS1kYXRhIl19Y29uc3RydWN0b3IoKXtpZihzdXBlcigpLGIpdGhyb3cgbmV3IEVycm9yKCJzdHJpY3RUZW1wbGF0ZVBvbGljeTogZG9tLWJpbmQgbm90IGFsbG93ZWQiKTt0aGlzLnJvb3Q9bnVsbCx0aGlzLiQ9bnVsbCx0aGlzLl9fY2hpbGRyZW49bnVsbH1hdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2sodCxlLG4saSl7dGhpcy5tdXRhYmxlRGF0YT0hMH1jb25uZWN0ZWRDYWxsYmFjaygpe3VvKCl8fCh0aGlzLnN0eWxlLmRpc3BsYXk9Im5vbmUiKSx0aGlzLnJlbmRlcigpfWRpc2Nvbm5lY3RlZENhbGxiYWNrKCl7dGhpcy5fX3JlbW92ZUNoaWxkcmVuKCl9X19pbnNlcnRDaGlsZHJlbigpe1koWSh0aGlzKS5wYXJlbnROb2RlKS5pbnNlcnRCZWZvcmUodGhpcy5yb290LHRoaXMpfV9fcmVtb3ZlQ2hpbGRyZW4oKXtpZih0aGlzLl9fY2hpbGRyZW4pZm9yKGxldCB0PTA7dDx0aGlzLl9fY2hpbGRyZW4ubGVuZ3RoO3QrKyl0aGlzLnJvb3QuYXBwZW5kQ2hpbGQodGhpcy5fX2NoaWxkcmVuW3RdKX1yZW5kZXIoKXtsZXQgdDtpZighdGhpcy5fX2NoaWxkcmVuKXtpZih0PXR8fHRoaXMucXVlcnlTZWxlY3RvcigidGVtcGxhdGUiKSwhdCl7bGV0IGU9bmV3IE11dGF0aW9uT2JzZXJ2ZXIoKCgpPT57aWYodD10aGlzLnF1ZXJ5U2VsZWN0b3IoInRlbXBsYXRlIiksIXQpdGhyb3cgbmV3IEVycm9yKCJkb20tYmluZCByZXF1aXJlcyBhIDx0ZW1wbGF0ZT4gY2hpbGQiKTtlLmRpc2Nvbm5lY3QoKSx0aGlzLnJlbmRlcigpfSkpO3JldHVybiB2b2lkIGUub2JzZXJ2ZSh0aGlzLHtjaGlsZExpc3Q6ITB9KX10aGlzLnJvb3Q9dGhpcy5fc3RhbXBUZW1wbGF0ZSh0KSx0aGlzLiQ9dGhpcy5yb290LiQsdGhpcy5fX2NoaWxkcmVuPVtdO2ZvcihsZXQgdD10aGlzLnJvb3QuZmlyc3RDaGlsZDt0O3Q9dC5uZXh0U2libGluZyl0aGlzLl9fY2hpbGRyZW5bdGhpcy5fX2NoaWxkcmVuLmxlbmd0aF09dDt0aGlzLl9lbmFibGVQcm9wZXJ0aWVzKCl9dGhpcy5fX2luc2VydENoaWxkcmVuKCksdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgiZG9tLWNoYW5nZSIse2J1YmJsZXM6ITAsY29tcG9zZWQ6ITB9KSl9fSk7Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNyBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0CiAgICBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcyBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbwogICAgc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudCBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCmNvbnN0IHBvPXFyKHdlKTtjbGFzcyBmbyBleHRlbmRzIHBve3N0YXRpYyBnZXQgaXMoKXtyZXR1cm4iZG9tLXJlcGVhdCJ9c3RhdGljIGdldCB0ZW1wbGF0ZSgpe3JldHVybiBudWxsfXN0YXRpYyBnZXQgcHJvcGVydGllcygpe3JldHVybntpdGVtczp7dHlwZTpBcnJheX0sYXM6e3R5cGU6U3RyaW5nLHZhbHVlOiJpdGVtIn0saW5kZXhBczp7dHlwZTpTdHJpbmcsdmFsdWU6ImluZGV4In0saXRlbXNJbmRleEFzOnt0eXBlOlN0cmluZyx2YWx1ZToiaXRlbXNJbmRleCJ9LHNvcnQ6e3R5cGU6RnVuY3Rpb24sb2JzZXJ2ZXI6Il9fc29ydENoYW5nZWQifSxmaWx0ZXI6e3R5cGU6RnVuY3Rpb24sb2JzZXJ2ZXI6Il9fZmlsdGVyQ2hhbmdlZCJ9LG9ic2VydmU6e3R5cGU6U3RyaW5nLG9ic2VydmVyOiJfX29ic2VydmVDaGFuZ2VkIn0sZGVsYXk6TnVtYmVyLHJlbmRlcmVkSXRlbUNvdW50Ont0eXBlOk51bWJlcixub3RpZnk6IWsscmVhZE9ubHk6ITB9LGluaXRpYWxDb3VudDp7dHlwZTpOdW1iZXJ9LHRhcmdldEZyYW1lcmF0ZTp7dHlwZTpOdW1iZXIsdmFsdWU6MjB9LF90YXJnZXRGcmFtZVRpbWU6e3R5cGU6TnVtYmVyLGNvbXB1dGVkOiJfX2NvbXB1dGVGcmFtZVRpbWUodGFyZ2V0RnJhbWVyYXRlKSJ9LG5vdGlmeURvbUNoYW5nZTp7dHlwZTpCb29sZWFufSxyZXVzZUNodW5rZWRJbnN0YW5jZXM6e3R5cGU6Qm9vbGVhbn19fXN0YXRpYyBnZXQgb2JzZXJ2ZXJzKCl7cmV0dXJuWyJfX2l0ZW1zQ2hhbmdlZChpdGVtcy4qKSJdfWNvbnN0cnVjdG9yKCl7c3VwZXIoKSx0aGlzLl9faW5zdGFuY2VzPVtdLHRoaXMuX19yZW5kZXJEZWJvdW5jZXI9bnVsbCx0aGlzLl9faXRlbXNJZHhUb0luc3RJZHg9e30sdGhpcy5fX2NodW5rQ291bnQ9bnVsbCx0aGlzLl9fcmVuZGVyU3RhcnRUaW1lPW51bGwsdGhpcy5fX2l0ZW1zQXJyYXlDaGFuZ2VkPSExLHRoaXMuX19zaG91bGRNZWFzdXJlQ2h1bms9ITEsdGhpcy5fX3Nob3VsZENvbnRpbnVlQ2h1bmtpbmc9ITEsdGhpcy5fX2NodW5raW5nSWQ9MCx0aGlzLl9fc29ydEZuPW51bGwsdGhpcy5fX2ZpbHRlckZuPW51bGwsdGhpcy5fX29ic2VydmVQYXRocz1udWxsLHRoaXMuX19jdG9yPW51bGwsdGhpcy5fX2lzRGV0YWNoZWQ9ITAsdGhpcy50ZW1wbGF0ZT1udWxsfWRpc2Nvbm5lY3RlZENhbGxiYWNrKCl7c3VwZXIuZGlzY29ubmVjdGVkQ2FsbGJhY2soKSx0aGlzLl9faXNEZXRhY2hlZD0hMDtmb3IobGV0IHQ9MDt0PHRoaXMuX19pbnN0YW5jZXMubGVuZ3RoO3QrKyl0aGlzLl9fZGV0YWNoSW5zdGFuY2UodCl9Y29ubmVjdGVkQ2FsbGJhY2soKXtpZihzdXBlci5jb25uZWN0ZWRDYWxsYmFjaygpLHVvKCl8fCh0aGlzLnN0eWxlLmRpc3BsYXk9Im5vbmUiKSx0aGlzLl9faXNEZXRhY2hlZCl7dGhpcy5fX2lzRGV0YWNoZWQ9ITE7bGV0IHQ9WShZKHRoaXMpLnBhcmVudE5vZGUpO2ZvcihsZXQgZT0wO2U8dGhpcy5fX2luc3RhbmNlcy5sZW5ndGg7ZSsrKXRoaXMuX19hdHRhY2hJbnN0YW5jZShlLHQpfX1fX2Vuc3VyZVRlbXBsYXRpemVkKCl7aWYoIXRoaXMuX19jdG9yKXtjb25zdCB0PXRoaXM7bGV0IGU9dGhpcy50ZW1wbGF0ZT10Ll90ZW1wbGF0ZUluZm8/dDp0aGlzLnF1ZXJ5U2VsZWN0b3IoInRlbXBsYXRlIik7aWYoIWUpe2xldCB0PW5ldyBNdXRhdGlvbk9ic2VydmVyKCgoKT0+e2lmKCF0aGlzLnF1ZXJ5U2VsZWN0b3IoInRlbXBsYXRlIikpdGhyb3cgbmV3IEVycm9yKCJkb20tcmVwZWF0IHJlcXVpcmVzIGEgPHRlbXBsYXRlPiBjaGlsZCIpO3QuZGlzY29ubmVjdCgpLHRoaXMuX19yZW5kZXIoKX0pKTtyZXR1cm4gdC5vYnNlcnZlKHRoaXMse2NoaWxkTGlzdDohMH0pLCExfWxldCBuPXt9O25bdGhpcy5hc109ITAsblt0aGlzLmluZGV4QXNdPSEwLG5bdGhpcy5pdGVtc0luZGV4QXNdPSEwLHRoaXMuX19jdG9yPWFvKGUsdGhpcyx7bXV0YWJsZURhdGE6dGhpcy5tdXRhYmxlRGF0YSxwYXJlbnRNb2RlbDohMCxpbnN0YW5jZVByb3BzOm4sZm9yd2FyZEhvc3RQcm9wOmZ1bmN0aW9uKHQsZSl7bGV0IG49dGhpcy5fX2luc3RhbmNlcztmb3IobGV0IGkscj0wO3I8bi5sZW5ndGgmJihpPW5bcl0pO3IrKylpLmZvcndhcmRIb3N0UHJvcCh0LGUpfSxub3RpZnlJbnN0YW5jZVByb3A6ZnVuY3Rpb24odCxlLG4pe2lmKFEodGhpcy5hcyxlKSl7bGV0IGk9dFt0aGlzLml0ZW1zSW5kZXhBc107ZT09dGhpcy5hcyYmKHRoaXMuaXRlbXNbaV09bik7bGV0IHI9Sih0aGlzLmFzLGAke0pTQ29tcGlsZXJfcmVuYW1lUHJvcGVydHkoIml0ZW1zIix0aGlzKX0uJHtpfWAsZSk7dGhpcy5ub3RpZnlQYXRoKHIsbil9fX0pfXJldHVybiEwfV9fZ2V0TWV0aG9kSG9zdCgpe3JldHVybiB0aGlzLl9fZGF0YUhvc3QuX21ldGhvZEhvc3R8fHRoaXMuX19kYXRhSG9zdH1fX2Z1bmN0aW9uRnJvbVByb3BlcnR5VmFsdWUodCl7aWYoInN0cmluZyI9PXR5cGVvZiB0KXtsZXQgZT10LG49dGhpcy5fX2dldE1ldGhvZEhvc3QoKTtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gbltlXS5hcHBseShuLGFyZ3VtZW50cyl9fXJldHVybiB0fV9fc29ydENoYW5nZWQodCl7dGhpcy5fX3NvcnRGbj10aGlzLl9fZnVuY3Rpb25Gcm9tUHJvcGVydHlWYWx1ZSh0KSx0aGlzLml0ZW1zJiZ0aGlzLl9fZGVib3VuY2VSZW5kZXIodGhpcy5fX3JlbmRlcil9X19maWx0ZXJDaGFuZ2VkKHQpe3RoaXMuX19maWx0ZXJGbj10aGlzLl9fZnVuY3Rpb25Gcm9tUHJvcGVydHlWYWx1ZSh0KSx0aGlzLml0ZW1zJiZ0aGlzLl9fZGVib3VuY2VSZW5kZXIodGhpcy5fX3JlbmRlcil9X19jb21wdXRlRnJhbWVUaW1lKHQpe3JldHVybiBNYXRoLmNlaWwoMWUzL3QpfV9fb2JzZXJ2ZUNoYW5nZWQoKXt0aGlzLl9fb2JzZXJ2ZVBhdGhzPXRoaXMub2JzZXJ2ZSYmdGhpcy5vYnNlcnZlLnJlcGxhY2UoIi4qIiwiLiIpLnNwbGl0KCIgIil9X19oYW5kbGVPYnNlcnZlZFBhdGhzKHQpe2lmKHRoaXMuX19zb3J0Rm58fHRoaXMuX19maWx0ZXJGbilpZih0KXtpZih0aGlzLl9fb2JzZXJ2ZVBhdGhzKXtsZXQgZT10aGlzLl9fb2JzZXJ2ZVBhdGhzO2ZvcihsZXQgbj0wO248ZS5sZW5ndGg7bisrKTA9PT10LmluZGV4T2YoZVtuXSkmJnRoaXMuX19kZWJvdW5jZVJlbmRlcih0aGlzLl9fcmVuZGVyLHRoaXMuZGVsYXkpfX1lbHNlIHRoaXMuX19kZWJvdW5jZVJlbmRlcih0aGlzLl9fcmVuZGVyLHRoaXMuZGVsYXkpfV9faXRlbXNDaGFuZ2VkKHQpe3RoaXMuaXRlbXMmJiFBcnJheS5pc0FycmF5KHRoaXMuaXRlbXMpJiZjb25zb2xlLndhcm4oImRvbS1yZXBlYXQgZXhwZWN0ZWQgYXJyYXkgZm9yIGBpdGVtc2AsIGZvdW5kIix0aGlzLml0ZW1zKSx0aGlzLl9faGFuZGxlSXRlbVBhdGgodC5wYXRoLHQudmFsdWUpfHwoIml0ZW1zIj09PXQucGF0aCYmKHRoaXMuX19pdGVtc0FycmF5Q2hhbmdlZD0hMCksdGhpcy5fX2RlYm91bmNlUmVuZGVyKHRoaXMuX19yZW5kZXIpKX1fX2RlYm91bmNlUmVuZGVyKHQsZT0wKXt0aGlzLl9fcmVuZGVyRGVib3VuY2VyPU5uLmRlYm91bmNlKHRoaXMuX19yZW5kZXJEZWJvdW5jZXIsZT4wP2d0LmFmdGVyKGUpOnZ0LHQuYmluZCh0aGlzKSksUm4odGhpcy5fX3JlbmRlckRlYm91bmNlcil9cmVuZGVyKCl7dGhpcy5fX2RlYm91bmNlUmVuZGVyKHRoaXMuX19yZW5kZXIpLFdpKCl9X19yZW5kZXIoKXtpZighdGhpcy5fX2Vuc3VyZVRlbXBsYXRpemVkKCkpcmV0dXJuO2xldCB0PXRoaXMuaXRlbXN8fFtdO2NvbnN0IGU9dGhpcy5fX3NvcnRBbmRGaWx0ZXJJdGVtcyh0KSxuPXRoaXMuX19jYWxjdWxhdGVMaW1pdChlLmxlbmd0aCk7dGhpcy5fX3VwZGF0ZUluc3RhbmNlcyh0LG4sZSksdGhpcy5pbml0aWFsQ291bnQmJih0aGlzLl9fc2hvdWxkTWVhc3VyZUNodW5rfHx0aGlzLl9fc2hvdWxkQ29udGludWVDaHVua2luZykmJihjYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLl9fY2h1bmtpbmdJZCksdGhpcy5fX2NodW5raW5nSWQ9cmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgoKT0+dGhpcy5fX2NvbnRpbnVlQ2h1bmtpbmcoKSkpKSx0aGlzLl9zZXRSZW5kZXJlZEl0ZW1Db3VudCh0aGlzLl9faW5zdGFuY2VzLmxlbmd0aCksayYmIXRoaXMubm90aWZ5RG9tQ2hhbmdlfHx0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJkb20tY2hhbmdlIix7YnViYmxlczohMCxjb21wb3NlZDohMH0pKX1fX3NvcnRBbmRGaWx0ZXJJdGVtcyh0KXtsZXQgZT1uZXcgQXJyYXkodC5sZW5ndGgpO2ZvcihsZXQgbj0wO248dC5sZW5ndGg7bisrKWVbbl09bjtyZXR1cm4gdGhpcy5fX2ZpbHRlckZuJiYoZT1lLmZpbHRlcigoKGUsbixpKT0+dGhpcy5fX2ZpbHRlckZuKHRbZV0sbixpKSkpKSx0aGlzLl9fc29ydEZuJiZlLnNvcnQoKChlLG4pPT50aGlzLl9fc29ydEZuKHRbZV0sdFtuXSkpKSxlfV9fY2FsY3VsYXRlTGltaXQodCl7bGV0IGU9dDtjb25zdCBuPXRoaXMuX19pbnN0YW5jZXMubGVuZ3RoO2lmKHRoaXMuaW5pdGlhbENvdW50KXtsZXQgaTshdGhpcy5fX2NodW5rQ291bnR8fHRoaXMuX19pdGVtc0FycmF5Q2hhbmdlZCYmIXRoaXMucmV1c2VDaHVua2VkSW5zdGFuY2VzPyhlPU1hdGgubWluKHQsdGhpcy5pbml0aWFsQ291bnQpLGk9TWF0aC5tYXgoZS1uLDApLHRoaXMuX19jaHVua0NvdW50PWl8fDEpOihpPU1hdGgubWluKE1hdGgubWF4KHQtbiwwKSx0aGlzLl9fY2h1bmtDb3VudCksZT1NYXRoLm1pbihuK2ksdCkpLHRoaXMuX19zaG91bGRNZWFzdXJlQ2h1bms9aT09PXRoaXMuX19jaHVua0NvdW50LHRoaXMuX19zaG91bGRDb250aW51ZUNodW5raW5nPWU8dCx0aGlzLl9fcmVuZGVyU3RhcnRUaW1lPXBlcmZvcm1hbmNlLm5vdygpfXJldHVybiB0aGlzLl9faXRlbXNBcnJheUNoYW5nZWQ9ITEsZX1fX2NvbnRpbnVlQ2h1bmtpbmcoKXtpZih0aGlzLl9fc2hvdWxkTWVhc3VyZUNodW5rKXtjb25zdCB0PXBlcmZvcm1hbmNlLm5vdygpLXRoaXMuX19yZW5kZXJTdGFydFRpbWU7dGhpcy5fX2NodW5rQ291bnQ9TWF0aC5yb3VuZCh0aGlzLl9fY2h1bmtDb3VudCoodGhpcy5fdGFyZ2V0RnJhbWVUaW1lL3QpKXx8MX10aGlzLl9fc2hvdWxkQ29udGludWVDaHVua2luZyYmdGhpcy5fX2RlYm91bmNlUmVuZGVyKHRoaXMuX19yZW5kZXIpfV9fdXBkYXRlSW5zdGFuY2VzKHQsZSxuKXtjb25zdCBpPXRoaXMuX19pdGVtc0lkeFRvSW5zdElkeD17fTtsZXQgcjtmb3Iocj0wO3I8ZTtyKyspe2xldCBlPXRoaXMuX19pbnN0YW5jZXNbcl0sbz1uW3JdLGE9dFtvXTtpW29dPXIsZT8oZS5fc2V0UGVuZGluZ1Byb3BlcnR5KHRoaXMuYXMsYSksZS5fc2V0UGVuZGluZ1Byb3BlcnR5KHRoaXMuaW5kZXhBcyxyKSxlLl9zZXRQZW5kaW5nUHJvcGVydHkodGhpcy5pdGVtc0luZGV4QXMsbyksZS5fZmx1c2hQcm9wZXJ0aWVzKCkpOnRoaXMuX19pbnNlcnRJbnN0YW5jZShhLHIsbyl9Zm9yKGxldCB0PXRoaXMuX19pbnN0YW5jZXMubGVuZ3RoLTE7dD49cjt0LS0pdGhpcy5fX2RldGFjaEFuZFJlbW92ZUluc3RhbmNlKHQpfV9fZGV0YWNoSW5zdGFuY2UodCl7bGV0IGU9dGhpcy5fX2luc3RhbmNlc1t0XTtjb25zdCBuPVkoZS5yb290KTtmb3IobGV0IHQ9MDt0PGUuY2hpbGRyZW4ubGVuZ3RoO3QrKyl7bi5hcHBlbmRDaGlsZChlLmNoaWxkcmVuW3RdKX1yZXR1cm4gZX1fX2F0dGFjaEluc3RhbmNlKHQsZSl7ZS5pbnNlcnRCZWZvcmUodGhpcy5fX2luc3RhbmNlc1t0XS5yb290LHRoaXMpfV9fZGV0YWNoQW5kUmVtb3ZlSW5zdGFuY2UodCl7dGhpcy5fX2RldGFjaEluc3RhbmNlKHQpLHRoaXMuX19pbnN0YW5jZXMuc3BsaWNlKHQsMSl9X19zdGFtcEluc3RhbmNlKHQsZSxuKXtsZXQgaT17fTtyZXR1cm4gaVt0aGlzLmFzXT10LGlbdGhpcy5pbmRleEFzXT1lLGlbdGhpcy5pdGVtc0luZGV4QXNdPW4sbmV3IHRoaXMuX19jdG9yKGkpfV9faW5zZXJ0SW5zdGFuY2UodCxlLG4pe2NvbnN0IGk9dGhpcy5fX3N0YW1wSW5zdGFuY2UodCxlLG4pO2xldCByPXRoaXMuX19pbnN0YW5jZXNbZSsxXSxvPXI/ci5jaGlsZHJlblswXTp0aGlzO3JldHVybiBZKFkodGhpcykucGFyZW50Tm9kZSkuaW5zZXJ0QmVmb3JlKGkucm9vdCxvKSx0aGlzLl9faW5zdGFuY2VzW2VdPWksaX1fc2hvd0hpZGVDaGlsZHJlbih0KXtmb3IobGV0IGU9MDtlPHRoaXMuX19pbnN0YW5jZXMubGVuZ3RoO2UrKyl0aGlzLl9faW5zdGFuY2VzW2VdLl9zaG93SGlkZUNoaWxkcmVuKHQpfV9faGFuZGxlSXRlbVBhdGgodCxlKXtsZXQgbj10LnNsaWNlKDYpLGk9bi5pbmRleE9mKCIuIikscj1pPDA/bjpuLnN1YnN0cmluZygwLGkpO2lmKHI9PXBhcnNlSW50KHIsMTApKXtsZXQgdD1pPDA/IiI6bi5zdWJzdHJpbmcoaSsxKTt0aGlzLl9faGFuZGxlT2JzZXJ2ZWRQYXRocyh0KTtsZXQgbz10aGlzLl9faW5zdGFuY2VzW3RoaXMuX19pdGVtc0lkeFRvSW5zdElkeFtyXV07aWYobyl7by5fc2V0UGVuZGluZ1Byb3BlcnR5T3JQYXRoKHRoaXMuYXMrKHQ/Ii4iK3Q6IiIpLGUsITEsITApLG8uX2ZsdXNoUHJvcGVydGllcygpfXJldHVybiEwfX1pdGVtRm9yRWxlbWVudCh0KXtsZXQgZT10aGlzLm1vZGVsRm9yRWxlbWVudCh0KTtyZXR1cm4gZSYmZVt0aGlzLmFzXX1pbmRleEZvckVsZW1lbnQodCl7bGV0IGU9dGhpcy5tb2RlbEZvckVsZW1lbnQodCk7cmV0dXJuIGUmJmVbdGhpcy5pbmRleEFzXX1tb2RlbEZvckVsZW1lbnQodCl7cmV0dXJuIHNvKHRoaXMudGVtcGxhdGUsdCl9fWN1c3RvbUVsZW1lbnRzLmRlZmluZShmby5pcyxmbyk7Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNyBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0CiAgICBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcyBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbwogICAgc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudCBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCmNsYXNzIG1vIGV4dGVuZHMgd2V7c3RhdGljIGdldCBpcygpe3JldHVybiJkb20taWYifXN0YXRpYyBnZXQgdGVtcGxhdGUoKXtyZXR1cm4gbnVsbH1zdGF0aWMgZ2V0IHByb3BlcnRpZXMoKXtyZXR1cm57aWY6e3R5cGU6Qm9vbGVhbixvYnNlcnZlcjoiX19kZWJvdW5jZVJlbmRlciJ9LHJlc3RhbXA6e3R5cGU6Qm9vbGVhbixvYnNlcnZlcjoiX19kZWJvdW5jZVJlbmRlciJ9LG5vdGlmeURvbUNoYW5nZTp7dHlwZTpCb29sZWFufX19Y29uc3RydWN0b3IoKXtzdXBlcigpLHRoaXMuX19yZW5kZXJEZWJvdW5jZXI9bnVsbCx0aGlzLl9sYXN0SWY9ITEsdGhpcy5fX2hpZGVUZW1wbGF0ZUNoaWxkcmVuX189ITF9X19kZWJvdW5jZVJlbmRlcigpe3RoaXMuX19yZW5kZXJEZWJvdW5jZXI9Tm4uZGVib3VuY2UodGhpcy5fX3JlbmRlckRlYm91bmNlcix2dCwoKCk9PnRoaXMuX19yZW5kZXIoKSkpLFJuKHRoaXMuX19yZW5kZXJEZWJvdW5jZXIpfWRpc2Nvbm5lY3RlZENhbGxiYWNrKCl7c3VwZXIuZGlzY29ubmVjdGVkQ2FsbGJhY2soKTtjb25zdCB0PVkodGhpcykucGFyZW50Tm9kZTt0JiYodC5ub2RlVHlwZSE9Tm9kZS5ET0NVTUVOVF9GUkFHTUVOVF9OT0RFfHxZKHQpLmhvc3QpfHx0aGlzLl9fdGVhcmRvd25JbnN0YW5jZSgpfWNvbm5lY3RlZENhbGxiYWNrKCl7c3VwZXIuY29ubmVjdGVkQ2FsbGJhY2soKSx1bygpfHwodGhpcy5zdHlsZS5kaXNwbGF5PSJub25lIiksdGhpcy5pZiYmdGhpcy5fX2RlYm91bmNlUmVuZGVyKCl9X19lbnN1cmVUZW1wbGF0ZSgpe2lmKCF0aGlzLl9fdGVtcGxhdGUpe2NvbnN0IHQ9dGhpcztsZXQgZT10Ll90ZW1wbGF0ZUluZm8/dDpZKHQpLnF1ZXJ5U2VsZWN0b3IoInRlbXBsYXRlIik7aWYoIWUpe2xldCB0PW5ldyBNdXRhdGlvbk9ic2VydmVyKCgoKT0+e2lmKCFZKHRoaXMpLnF1ZXJ5U2VsZWN0b3IoInRlbXBsYXRlIikpdGhyb3cgbmV3IEVycm9yKCJkb20taWYgcmVxdWlyZXMgYSA8dGVtcGxhdGU+IGNoaWxkIik7dC5kaXNjb25uZWN0KCksdGhpcy5fX3JlbmRlcigpfSkpO3JldHVybiB0Lm9ic2VydmUodGhpcyx7Y2hpbGRMaXN0OiEwfSksITF9dGhpcy5fX3RlbXBsYXRlPWV9cmV0dXJuITB9X19lbnN1cmVJbnN0YW5jZSgpe2xldCB0PVkodGhpcykucGFyZW50Tm9kZTtpZih0aGlzLl9faGFzSW5zdGFuY2UoKSl7bGV0IGU9dGhpcy5fX2dldEluc3RhbmNlTm9kZXMoKTtpZihlJiZlLmxlbmd0aCl7aWYoWSh0aGlzKS5wcmV2aW91c1NpYmxpbmchPT1lW2UubGVuZ3RoLTFdKWZvcihsZXQgbixpPTA7aTxlLmxlbmd0aCYmKG49ZVtpXSk7aSsrKVkodCkuaW5zZXJ0QmVmb3JlKG4sdGhpcyl9fWVsc2V7aWYoIXQpcmV0dXJuITE7aWYoIXRoaXMuX19lbnN1cmVUZW1wbGF0ZSgpKXJldHVybiExO3RoaXMuX19jcmVhdGVBbmRJbnNlcnRJbnN0YW5jZSh0KX1yZXR1cm4hMH1yZW5kZXIoKXtXaSgpfV9fcmVuZGVyKCl7aWYodGhpcy5pZil7aWYoIXRoaXMuX19lbnN1cmVJbnN0YW5jZSgpKXJldHVybn1lbHNlIHRoaXMucmVzdGFtcCYmdGhpcy5fX3RlYXJkb3duSW5zdGFuY2UoKTt0aGlzLl9zaG93SGlkZUNoaWxkcmVuKCksayYmIXRoaXMubm90aWZ5RG9tQ2hhbmdlfHx0aGlzLmlmPT10aGlzLl9sYXN0SWZ8fCh0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJkb20tY2hhbmdlIix7YnViYmxlczohMCxjb21wb3NlZDohMH0pKSx0aGlzLl9sYXN0SWY9dGhpcy5pZil9X19oYXNJbnN0YW5jZSgpe31fX2dldEluc3RhbmNlTm9kZXMoKXt9X19jcmVhdGVBbmRJbnNlcnRJbnN0YW5jZSh0KXt9X190ZWFyZG93bkluc3RhbmNlKCl7fV9zaG93SGlkZUNoaWxkcmVuKCl7fX1jb25zdCBnbz1BP2NsYXNzIGV4dGVuZHMgbW97Y29uc3RydWN0b3IoKXtzdXBlcigpLHRoaXMuX19pbnN0YW5jZT1udWxsLHRoaXMuX19zeW5jSW5mbz1udWxsfV9faGFzSW5zdGFuY2UoKXtyZXR1cm4gQm9vbGVhbih0aGlzLl9faW5zdGFuY2UpfV9fZ2V0SW5zdGFuY2VOb2Rlcygpe3JldHVybiB0aGlzLl9faW5zdGFuY2UudGVtcGxhdGVJbmZvLmNoaWxkTm9kZXN9X19jcmVhdGVBbmRJbnNlcnRJbnN0YW5jZSh0KXtjb25zdCBlPXRoaXMuX19kYXRhSG9zdHx8dGhpcztpZihiJiYhdGhpcy5fX2RhdGFIb3N0KXRocm93IG5ldyBFcnJvcigic3RyaWN0VGVtcGxhdGVQb2xpY3k6IHRlbXBsYXRlIG93bmVyIG5vdCB0cnVzdGVkIik7Y29uc3Qgbj1lLl9iaW5kVGVtcGxhdGUodGhpcy5fX3RlbXBsYXRlLCEwKTtuLnJ1bkVmZmVjdHM9KHQsZSxuKT0+e2xldCBpPXRoaXMuX19zeW5jSW5mbztpZih0aGlzLmlmKWkmJih0aGlzLl9fc3luY0luZm89bnVsbCx0aGlzLl9zaG93SGlkZUNoaWxkcmVuKCksZT1PYmplY3QuYXNzaWduKGkuY2hhbmdlZFByb3BzLGUpKSx0KGUsbik7ZWxzZSBpZih0aGlzLl9faW5zdGFuY2UpaWYoaXx8KGk9dGhpcy5fX3N5bmNJbmZvPXtydW5FZmZlY3RzOnQsY2hhbmdlZFByb3BzOnt9fSksbilmb3IoY29uc3QgdCBpbiBlKXtjb25zdCBlPSQodCk7aS5jaGFuZ2VkUHJvcHNbZV09dGhpcy5fX2RhdGFIb3N0W2VdfWVsc2UgT2JqZWN0LmFzc2lnbihpLmNoYW5nZWRQcm9wcyxlKX0sdGhpcy5fX2luc3RhbmNlPWUuX3N0YW1wVGVtcGxhdGUodGhpcy5fX3RlbXBsYXRlLG4pLFkodCkuaW5zZXJ0QmVmb3JlKHRoaXMuX19pbnN0YW5jZSx0aGlzKX1fX3N5bmNIb3N0UHJvcGVydGllcygpe2NvbnN0IHQ9dGhpcy5fX3N5bmNJbmZvO3QmJih0aGlzLl9fc3luY0luZm89bnVsbCx0LnJ1bkVmZmVjdHModC5jaGFuZ2VkUHJvcHMsITEpKX1fX3RlYXJkb3duSW5zdGFuY2UoKXt0aGlzLl9faW5zdGFuY2UmJigodGhpcy5fX2RhdGFIb3N0fHx0aGlzKS5fcmVtb3ZlQm91bmREb20odGhpcy5fX2luc3RhbmNlKSx0aGlzLl9faW5zdGFuY2U9bnVsbCx0aGlzLl9fc3luY0luZm89bnVsbCl9X3Nob3dIaWRlQ2hpbGRyZW4oKXtjb25zdCB0PXRoaXMuX19oaWRlVGVtcGxhdGVDaGlsZHJlbl9ffHwhdGhpcy5pZjt0aGlzLl9faW5zdGFuY2UmJkJvb2xlYW4odGhpcy5fX2luc3RhbmNlLl9faGlkZGVuKSE9PXQmJih0aGlzLl9faW5zdGFuY2UuX19oaWRkZW49dCxKcih0LHRoaXMuX19pbnN0YW5jZS50ZW1wbGF0ZUluZm8uY2hpbGROb2RlcykpLHR8fHRoaXMuX19zeW5jSG9zdFByb3BlcnRpZXMoKX19OmNsYXNzIGV4dGVuZHMgbW97Y29uc3RydWN0b3IoKXtzdXBlcigpLHRoaXMuX19jdG9yPW51bGwsdGhpcy5fX2luc3RhbmNlPW51bGwsdGhpcy5fX2ludmFsaWRQcm9wcz1udWxsfV9faGFzSW5zdGFuY2UoKXtyZXR1cm4gQm9vbGVhbih0aGlzLl9faW5zdGFuY2UpfV9fZ2V0SW5zdGFuY2VOb2Rlcygpe3JldHVybiB0aGlzLl9faW5zdGFuY2UuY2hpbGRyZW59X19jcmVhdGVBbmRJbnNlcnRJbnN0YW5jZSh0KXt0aGlzLl9fY3Rvcnx8KHRoaXMuX19jdG9yPWFvKHRoaXMuX190ZW1wbGF0ZSx0aGlzLHttdXRhYmxlRGF0YTohMCxmb3J3YXJkSG9zdFByb3A6ZnVuY3Rpb24odCxlKXt0aGlzLl9faW5zdGFuY2UmJih0aGlzLmlmP3RoaXMuX19pbnN0YW5jZS5mb3J3YXJkSG9zdFByb3AodCxlKToodGhpcy5fX2ludmFsaWRQcm9wcz10aGlzLl9faW52YWxpZFByb3BzfHxPYmplY3QuY3JlYXRlKG51bGwpLHRoaXMuX19pbnZhbGlkUHJvcHNbJCh0KV09ITApKX19KSksdGhpcy5fX2luc3RhbmNlPW5ldyB0aGlzLl9fY3RvcixZKHQpLmluc2VydEJlZm9yZSh0aGlzLl9faW5zdGFuY2Uucm9vdCx0aGlzKX1fX3RlYXJkb3duSW5zdGFuY2UoKXtpZih0aGlzLl9faW5zdGFuY2Upe2xldCB0PXRoaXMuX19pbnN0YW5jZS5jaGlsZHJlbjtpZih0JiZ0Lmxlbmd0aCl7bGV0IGU9WSh0WzBdKS5wYXJlbnROb2RlO2lmKGUpe2U9WShlKTtmb3IobGV0IG4saT0wO2k8dC5sZW5ndGgmJihuPXRbaV0pO2krKyllLnJlbW92ZUNoaWxkKG4pfX10aGlzLl9faW52YWxpZFByb3BzPW51bGwsdGhpcy5fX2luc3RhbmNlPW51bGx9fV9fc3luY0hvc3RQcm9wZXJ0aWVzKCl7bGV0IHQ9dGhpcy5fX2ludmFsaWRQcm9wcztpZih0KXt0aGlzLl9faW52YWxpZFByb3BzPW51bGw7Zm9yKGxldCBlIGluIHQpdGhpcy5fX2luc3RhbmNlLl9zZXRQZW5kaW5nUHJvcGVydHkoZSx0aGlzLl9fZGF0YUhvc3RbZV0pO3RoaXMuX19pbnN0YW5jZS5fZmx1c2hQcm9wZXJ0aWVzKCl9fV9zaG93SGlkZUNoaWxkcmVuKCl7Y29uc3QgdD10aGlzLl9faGlkZVRlbXBsYXRlQ2hpbGRyZW5fX3x8IXRoaXMuaWY7dGhpcy5fX2luc3RhbmNlJiZCb29sZWFuKHRoaXMuX19pbnN0YW5jZS5fX2hpZGRlbikhPT10JiYodGhpcy5fX2luc3RhbmNlLl9faGlkZGVuPXQsdGhpcy5fX2luc3RhbmNlLl9zaG93SGlkZUNoaWxkcmVuKHQpKSx0fHx0aGlzLl9fc3luY0hvc3RQcm9wZXJ0aWVzKCl9fTtjdXN0b21FbGVtZW50cy5kZWZpbmUoZ28uaXMsZ28pOwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTcgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dAogICAgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28KICAgIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwpsZXQgX289SSgodD0+e2xldCBlPXllKHQpO3JldHVybiBjbGFzcyBleHRlbmRzIGV7c3RhdGljIGdldCBwcm9wZXJ0aWVzKCl7cmV0dXJue2l0ZW1zOnt0eXBlOkFycmF5fSxtdWx0aTp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxzZWxlY3RlZDp7dHlwZTpPYmplY3Qsbm90aWZ5OiEwfSxzZWxlY3RlZEl0ZW06e3R5cGU6T2JqZWN0LG5vdGlmeTohMH0sdG9nZ2xlOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITF9fX1zdGF0aWMgZ2V0IG9ic2VydmVycygpe3JldHVyblsiX191cGRhdGVTZWxlY3Rpb24obXVsdGksIGl0ZW1zLiopIl19Y29uc3RydWN0b3IoKXtzdXBlcigpLHRoaXMuX19sYXN0SXRlbXM9bnVsbCx0aGlzLl9fbGFzdE11bHRpPW51bGwsdGhpcy5fX3NlbGVjdGVkTWFwPW51bGx9X191cGRhdGVTZWxlY3Rpb24odCxlKXtsZXQgbj1lLnBhdGg7aWYobj09SlNDb21waWxlcl9yZW5hbWVQcm9wZXJ0eSgiaXRlbXMiLHRoaXMpKXtsZXQgbj1lLmJhc2V8fFtdLGk9dGhpcy5fX2xhc3RJdGVtcztpZih0IT09dGhpcy5fX2xhc3RNdWx0aSYmdGhpcy5jbGVhclNlbGVjdGlvbigpLGkpe2xldCB0PVZpKG4saSk7dGhpcy5fX2FwcGx5U3BsaWNlcyh0KX10aGlzLl9fbGFzdEl0ZW1zPW4sdGhpcy5fX2xhc3RNdWx0aT10fWVsc2UgaWYoZS5wYXRoPT1gJHtKU0NvbXBpbGVyX3JlbmFtZVByb3BlcnR5KCJpdGVtcyIsdGhpcyl9LnNwbGljZXNgKXRoaXMuX19hcHBseVNwbGljZXMoZS52YWx1ZS5pbmRleFNwbGljZXMpO2Vsc2V7bGV0IHQ9bi5zbGljZShgJHtKU0NvbXBpbGVyX3JlbmFtZVByb3BlcnR5KCJpdGVtcyIsdGhpcyl9LmAubGVuZ3RoKSxlPXBhcnNlSW50KHQsMTApO3QuaW5kZXhPZigiLiIpPDAmJnQ9PWUmJnRoaXMuX19kZXNlbGVjdENoYW5nZWRJZHgoZSl9fV9fYXBwbHlTcGxpY2VzKHQpe2xldCBlPXRoaXMuX19zZWxlY3RlZE1hcDtmb3IobGV0IG49MDtuPHQubGVuZ3RoO24rKyl7bGV0IGk9dFtuXTtlLmZvckVhY2goKCh0LG4pPT57dDxpLmluZGV4fHxlLnNldChuLHQ+PWkuaW5kZXgraS5yZW1vdmVkLmxlbmd0aD90K2kuYWRkZWRDb3VudC1pLnJlbW92ZWQubGVuZ3RoOi0xKX0pKTtmb3IobGV0IHQ9MDt0PGkuYWRkZWRDb3VudDt0Kyspe2xldCBuPWkuaW5kZXgrdDtlLmhhcyh0aGlzLml0ZW1zW25dKSYmZS5zZXQodGhpcy5pdGVtc1tuXSxuKX19dGhpcy5fX3VwZGF0ZUxpbmtzKCk7bGV0IG49MDtlLmZvckVhY2goKCh0LGkpPT57dDwwPyh0aGlzLm11bHRpP3RoaXMuc3BsaWNlKEpTQ29tcGlsZXJfcmVuYW1lUHJvcGVydHkoInNlbGVjdGVkIix0aGlzKSxuLDEpOnRoaXMuc2VsZWN0ZWQ9dGhpcy5zZWxlY3RlZEl0ZW09bnVsbCxlLmRlbGV0ZShpKSk6bisrfSkpfV9fdXBkYXRlTGlua3MoKXtpZih0aGlzLl9fZGF0YUxpbmtlZFBhdGhzPXt9LHRoaXMubXVsdGkpe2xldCB0PTA7dGhpcy5fX3NlbGVjdGVkTWFwLmZvckVhY2goKGU9PntlPj0wJiZ0aGlzLmxpbmtQYXRocyhgJHtKU0NvbXBpbGVyX3JlbmFtZVByb3BlcnR5KCJpdGVtcyIsdGhpcyl9LiR7ZX1gLGAke0pTQ29tcGlsZXJfcmVuYW1lUHJvcGVydHkoInNlbGVjdGVkIix0aGlzKX0uJHt0Kyt9YCl9KSl9ZWxzZSB0aGlzLl9fc2VsZWN0ZWRNYXAuZm9yRWFjaCgodD0+e3RoaXMubGlua1BhdGhzKEpTQ29tcGlsZXJfcmVuYW1lUHJvcGVydHkoInNlbGVjdGVkIix0aGlzKSxgJHtKU0NvbXBpbGVyX3JlbmFtZVByb3BlcnR5KCJpdGVtcyIsdGhpcyl9LiR7dH1gKSx0aGlzLmxpbmtQYXRocyhKU0NvbXBpbGVyX3JlbmFtZVByb3BlcnR5KCJzZWxlY3RlZEl0ZW0iLHRoaXMpLGAke0pTQ29tcGlsZXJfcmVuYW1lUHJvcGVydHkoIml0ZW1zIix0aGlzKX0uJHt0fWApfSkpfWNsZWFyU2VsZWN0aW9uKCl7dGhpcy5fX2RhdGFMaW5rZWRQYXRocz17fSx0aGlzLl9fc2VsZWN0ZWRNYXA9bmV3IE1hcCx0aGlzLnNlbGVjdGVkPXRoaXMubXVsdGk/W106bnVsbCx0aGlzLnNlbGVjdGVkSXRlbT1udWxsfWlzU2VsZWN0ZWQodCl7cmV0dXJuIHRoaXMuX19zZWxlY3RlZE1hcC5oYXModCl9aXNJbmRleFNlbGVjdGVkKHQpe3JldHVybiB0aGlzLmlzU2VsZWN0ZWQodGhpcy5pdGVtc1t0XSl9X19kZXNlbGVjdENoYW5nZWRJZHgodCl7bGV0IGU9dGhpcy5fX3NlbGVjdGVkSW5kZXhGb3JJdGVtSW5kZXgodCk7aWYoZT49MCl7bGV0IHQ9MDt0aGlzLl9fc2VsZWN0ZWRNYXAuZm9yRWFjaCgoKG4saSk9PntlPT10KysmJnRoaXMuZGVzZWxlY3QoaSl9KSl9fV9fc2VsZWN0ZWRJbmRleEZvckl0ZW1JbmRleCh0KXtsZXQgZT10aGlzLl9fZGF0YUxpbmtlZFBhdGhzW2Ake0pTQ29tcGlsZXJfcmVuYW1lUHJvcGVydHkoIml0ZW1zIix0aGlzKX0uJHt0fWBdO2lmKGUpcmV0dXJuIHBhcnNlSW50KGUuc2xpY2UoYCR7SlNDb21waWxlcl9yZW5hbWVQcm9wZXJ0eSgic2VsZWN0ZWQiLHRoaXMpfS5gLmxlbmd0aCksMTApfWRlc2VsZWN0KHQpe2xldCBlPXRoaXMuX19zZWxlY3RlZE1hcC5nZXQodCk7aWYoZT49MCl7bGV0IG47dGhpcy5fX3NlbGVjdGVkTWFwLmRlbGV0ZSh0KSx0aGlzLm11bHRpJiYobj10aGlzLl9fc2VsZWN0ZWRJbmRleEZvckl0ZW1JbmRleChlKSksdGhpcy5fX3VwZGF0ZUxpbmtzKCksdGhpcy5tdWx0aT90aGlzLnNwbGljZShKU0NvbXBpbGVyX3JlbmFtZVByb3BlcnR5KCJzZWxlY3RlZCIsdGhpcyksbiwxKTp0aGlzLnNlbGVjdGVkPXRoaXMuc2VsZWN0ZWRJdGVtPW51bGx9fWRlc2VsZWN0SW5kZXgodCl7dGhpcy5kZXNlbGVjdCh0aGlzLml0ZW1zW3RdKX1zZWxlY3QodCl7dGhpcy5zZWxlY3RJbmRleCh0aGlzLml0ZW1zLmluZGV4T2YodCkpfXNlbGVjdEluZGV4KHQpe2xldCBlPXRoaXMuaXRlbXNbdF07dGhpcy5pc1NlbGVjdGVkKGUpP3RoaXMudG9nZ2xlJiZ0aGlzLmRlc2VsZWN0SW5kZXgodCk6KHRoaXMubXVsdGl8fHRoaXMuX19zZWxlY3RlZE1hcC5jbGVhcigpLHRoaXMuX19zZWxlY3RlZE1hcC5zZXQoZSx0KSx0aGlzLl9fdXBkYXRlTGlua3MoKSx0aGlzLm11bHRpP3RoaXMucHVzaChKU0NvbXBpbGVyX3JlbmFtZVByb3BlcnR5KCJzZWxlY3RlZCIsdGhpcyksZSk6dGhpcy5zZWxlY3RlZD10aGlzLnNlbGVjdGVkSXRlbT1lKX19fSkpKHdlKTtjbGFzcyB5byBleHRlbmRzIF9ve3N0YXRpYyBnZXQgaXMoKXtyZXR1cm4iYXJyYXktc2VsZWN0b3IifXN0YXRpYyBnZXQgdGVtcGxhdGUoKXtyZXR1cm4gbnVsbH19Y3VzdG9tRWxlbWVudHMuZGVmaW5lKHlvLmlzLHlvKTsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE3IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQKICAgIENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvCiAgICBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50IGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KY29uc3Qgdm89bmV3IGtuO3dpbmRvdy5TaGFkeUNTU3x8KHdpbmRvdy5TaGFkeUNTUz17cHJlcGFyZVRlbXBsYXRlKHQsZSxuKXt9LHByZXBhcmVUZW1wbGF0ZURvbSh0LGUpe30scHJlcGFyZVRlbXBsYXRlU3R5bGVzKHQsZSxuKXt9LHN0eWxlU3VidHJlZSh0LGUpe3ZvLnByb2Nlc3NTdHlsZXMoKSxvbih0LGUpfSxzdHlsZUVsZW1lbnQodCl7dm8ucHJvY2Vzc1N0eWxlcygpfSxzdHlsZURvY3VtZW50KHQpe3ZvLnByb2Nlc3NTdHlsZXMoKSxvbihkb2N1bWVudC5ib2R5LHQpfSxnZXRDb21wdXRlZFN0eWxlVmFsdWU6KHQsZSk9PmFuKHQsZSksZmx1c2hDdXN0b21TdHlsZXMoKXt9LG5hdGl2ZUNzczpJZSxuYXRpdmVTaGFkb3c6QWUsY3NzQnVpbGQ6TGUsZGlzYWJsZVJ1bnRpbWU6TmV9KSx3aW5kb3cuU2hhZHlDU1MuQ3VzdG9tU3R5bGVJbnRlcmZhY2U9dm87Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNyBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0CiAgICBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcyBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbwogICAgc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudCBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCmNvbnN0IGJvPSJpbmNsdWRlIix4bz13aW5kb3cuU2hhZHlDU1MuQ3VzdG9tU3R5bGVJbnRlcmZhY2U7Y2xhc3Mgd28gZXh0ZW5kcyBIVE1MRWxlbWVudHtjb25zdHJ1Y3Rvcigpe3N1cGVyKCksdGhpcy5fc3R5bGU9bnVsbCx4by5hZGRDdXN0b21TdHlsZSh0aGlzKX1nZXRTdHlsZSgpe2lmKHRoaXMuX3N0eWxlKXJldHVybiB0aGlzLl9zdHlsZTtjb25zdCB0PXRoaXMucXVlcnlTZWxlY3Rvcigic3R5bGUiKTtpZighdClyZXR1cm4gbnVsbDt0aGlzLl9zdHlsZT10O2NvbnN0IGU9dC5nZXRBdHRyaWJ1dGUoYm8pO3JldHVybiBlJiYodC5yZW1vdmVBdHRyaWJ1dGUoYm8pLHQudGV4dENvbnRlbnQ9KGZ1bmN0aW9uIG4odCl7bGV0IGU9dC50cmltKCkuc3BsaXQoL1xzKy8pLG49IiI7Zm9yKGxldCB0PTA7dDxlLmxlbmd0aDt0Kyspbis9cShlW3RdKTtyZXR1cm4gbn0pKGUpK3QudGV4dENvbnRlbnQpLHRoaXMub3duZXJEb2N1bWVudCE9PXdpbmRvdy5kb2N1bWVudCYmd2luZG93LmRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQodGhpcyksdGhpcy5fc3R5bGV9fQovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTcgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dAogICAgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28KICAgIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwpsZXQgU287d2luZG93LmN1c3RvbUVsZW1lbnRzLmRlZmluZSgiY3VzdG9tLXN0eWxlIix3byksU289V3IuX211dGFibGVQcm9wZXJ0eUNoYW5nZTtjb25zdCBNbz17cHJvcGVydGllczp7bXV0YWJsZURhdGE6Qm9vbGVhbn0sX3Nob3VsZFByb3BlcnR5Q2hhbmdlKHQsZSxuKXtyZXR1cm4gU28odGhpcyx0LGUsbix0aGlzLm11dGFibGVEYXRhKX19LEVvPWNyKEhUTUxFbGVtZW50KS5wcm90b3R5cGU7Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNyBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0CiAgICBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcyBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbwogICAgc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudCBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCi8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNSBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlCiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcwogICAgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudAogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwp2YXIgVG89bmV3IFNldDtjb25zdCBDbz17cHJvcGVydGllczp7X3BhcmVudFJlc2l6YWJsZTp7dHlwZTpPYmplY3Qsb2JzZXJ2ZXI6Il9wYXJlbnRSZXNpemFibGVDaGFuZ2VkIn0sX25vdGlmeWluZ0Rlc2NlbmRhbnQ6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMX19LGxpc3RlbmVyczp7Imlyb24tcmVxdWVzdC1yZXNpemUtbm90aWZpY2F0aW9ucyI6Il9vbklyb25SZXF1ZXN0UmVzaXplTm90aWZpY2F0aW9ucyJ9LGNyZWF0ZWQ6ZnVuY3Rpb24oKXt0aGlzLl9pbnRlcmVzdGVkUmVzaXphYmxlcz1bXSx0aGlzLl9ib3VuZE5vdGlmeVJlc2l6ZT10aGlzLm5vdGlmeVJlc2l6ZS5iaW5kKHRoaXMpLHRoaXMuX2JvdW5kT25EZXNjZW5kYW50SXJvblJlc2l6ZT10aGlzLl9vbkRlc2NlbmRhbnRJcm9uUmVzaXplLmJpbmQodGhpcyl9LGF0dGFjaGVkOmZ1bmN0aW9uKCl7dGhpcy5fcmVxdWVzdFJlc2l6ZU5vdGlmaWNhdGlvbnMoKX0sZGV0YWNoZWQ6ZnVuY3Rpb24oKXt0aGlzLl9wYXJlbnRSZXNpemFibGU/dGhpcy5fcGFyZW50UmVzaXphYmxlLnN0b3BSZXNpemVOb3RpZmljYXRpb25zRm9yKHRoaXMpOihUby5kZWxldGUodGhpcyksd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoInJlc2l6ZSIsdGhpcy5fYm91bmROb3RpZnlSZXNpemUpKSx0aGlzLl9wYXJlbnRSZXNpemFibGU9bnVsbH0sbm90aWZ5UmVzaXplOmZ1bmN0aW9uKCl7dGhpcy5pc0F0dGFjaGVkJiYodGhpcy5faW50ZXJlc3RlZFJlc2l6YWJsZXMuZm9yRWFjaCgoZnVuY3Rpb24odCl7dGhpcy5yZXNpemVyU2hvdWxkTm90aWZ5KHQpJiZ0aGlzLl9ub3RpZnlEZXNjZW5kYW50KHQpfSksdGhpcyksdGhpcy5fZmlyZVJlc2l6ZSgpKX0sYXNzaWduUGFyZW50UmVzaXphYmxlOmZ1bmN0aW9uKHQpe3RoaXMuX3BhcmVudFJlc2l6YWJsZSYmdGhpcy5fcGFyZW50UmVzaXphYmxlLnN0b3BSZXNpemVOb3RpZmljYXRpb25zRm9yKHRoaXMpLHRoaXMuX3BhcmVudFJlc2l6YWJsZT10LHQmJi0xPT09dC5faW50ZXJlc3RlZFJlc2l6YWJsZXMuaW5kZXhPZih0aGlzKSYmKHQuX2ludGVyZXN0ZWRSZXNpemFibGVzLnB1c2godGhpcyksdC5fc3Vic2NyaWJlSXJvblJlc2l6ZSh0aGlzKSl9LHN0b3BSZXNpemVOb3RpZmljYXRpb25zRm9yOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX2ludGVyZXN0ZWRSZXNpemFibGVzLmluZGV4T2YodCk7ZT4tMSYmKHRoaXMuX2ludGVyZXN0ZWRSZXNpemFibGVzLnNwbGljZShlLDEpLHRoaXMuX3Vuc3Vic2NyaWJlSXJvblJlc2l6ZSh0KSl9LF9zdWJzY3JpYmVJcm9uUmVzaXplOmZ1bmN0aW9uKHQpe3QuYWRkRXZlbnRMaXN0ZW5lcigiaXJvbi1yZXNpemUiLHRoaXMuX2JvdW5kT25EZXNjZW5kYW50SXJvblJlc2l6ZSl9LF91bnN1YnNjcmliZUlyb25SZXNpemU6ZnVuY3Rpb24odCl7dC5yZW1vdmVFdmVudExpc3RlbmVyKCJpcm9uLXJlc2l6ZSIsdGhpcy5fYm91bmRPbkRlc2NlbmRhbnRJcm9uUmVzaXplKX0scmVzaXplclNob3VsZE5vdGlmeTpmdW5jdGlvbih0KXtyZXR1cm4hMH0sX29uRGVzY2VuZGFudElyb25SZXNpemU6ZnVuY3Rpb24odCl7dGhpcy5fbm90aWZ5aW5nRGVzY2VuZGFudD90LnN0b3BQcm9wYWdhdGlvbigpOm18fHRoaXMuX2ZpcmVSZXNpemUoKX0sX2ZpcmVSZXNpemU6ZnVuY3Rpb24oKXt0aGlzLmZpcmUoImlyb24tcmVzaXplIixudWxsLHtub2RlOnRoaXMsYnViYmxlczohMX0pfSxfb25Jcm9uUmVxdWVzdFJlc2l6ZU5vdGlmaWNhdGlvbnM6ZnVuY3Rpb24odCl7dmFyIGU9ZXIodCkucm9vdFRhcmdldDtlIT09dGhpcyYmKGUuYXNzaWduUGFyZW50UmVzaXphYmxlKHRoaXMpLHRoaXMuX25vdGlmeURlc2NlbmRhbnQoZSksdC5zdG9wUHJvcGFnYXRpb24oKSl9LF9wYXJlbnRSZXNpemFibGVDaGFuZ2VkOmZ1bmN0aW9uKHQpe3QmJndpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJyZXNpemUiLHRoaXMuX2JvdW5kTm90aWZ5UmVzaXplKX0sX25vdGlmeURlc2NlbmRhbnQ6ZnVuY3Rpb24odCl7dGhpcy5pc0F0dGFjaGVkJiYodGhpcy5fbm90aWZ5aW5nRGVzY2VuZGFudD0hMCx0Lm5vdGlmeVJlc2l6ZSgpLHRoaXMuX25vdGlmeWluZ0Rlc2NlbmRhbnQ9ITEpfSxfcmVxdWVzdFJlc2l6ZU5vdGlmaWNhdGlvbnM6ZnVuY3Rpb24oKXtpZih0aGlzLmlzQXR0YWNoZWQpaWYoImxvYWRpbmciPT09ZG9jdW1lbnQucmVhZHlTdGF0ZSl7dmFyIHQ9dGhpcy5fcmVxdWVzdFJlc2l6ZU5vdGlmaWNhdGlvbnMuYmluZCh0aGlzKTtkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJyZWFkeXN0YXRlY2hhbmdlIiwoZnVuY3Rpb24gZSgpe2RvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoInJlYWR5c3RhdGVjaGFuZ2UiLGUpLHQoKX0pKX1lbHNlIHRoaXMuX2ZpbmRQYXJlbnQoKSx0aGlzLl9wYXJlbnRSZXNpemFibGU/dGhpcy5fcGFyZW50UmVzaXphYmxlLl9pbnRlcmVzdGVkUmVzaXphYmxlcy5mb3JFYWNoKChmdW5jdGlvbih0KXt0IT09dGhpcyYmdC5fZmluZFBhcmVudCgpfSksdGhpcyk6KFRvLmZvckVhY2goKGZ1bmN0aW9uKHQpe3QhPT10aGlzJiZ0Ll9maW5kUGFyZW50KCl9KSx0aGlzKSx3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigicmVzaXplIix0aGlzLl9ib3VuZE5vdGlmeVJlc2l6ZSksdGhpcy5ub3RpZnlSZXNpemUoKSl9LF9maW5kUGFyZW50OmZ1bmN0aW9uKCl7dGhpcy5hc3NpZ25QYXJlbnRSZXNpemFibGUobnVsbCksdGhpcy5maXJlKCJpcm9uLXJlcXVlc3QtcmVzaXplLW5vdGlmaWNhdGlvbnMiLG51bGwse25vZGU6dGhpcyxidWJibGVzOiEwLGNhbmNlbGFibGU6ITB9KSx0aGlzLl9wYXJlbnRSZXNpemFibGU/VG8uZGVsZXRlKHRoaXMpOlRvLmFkZCh0aGlzKX19O3ZhciBBbz1PYmplY3QuZnJlZXplKHtfX3Byb3RvX186bnVsbCxJcm9uUmVzaXphYmxlQmVoYXZpb3I6Q299KTsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzCiAgICBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50CiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovanIoe190ZW1wbGF0ZTp4ZWAKICAgIDxzdHlsZT4KICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIHRyYW5zaXRpb24tZHVyYXRpb246IHZhcigtLWlyb24tY29sbGFwc2UtdHJhbnNpdGlvbi1kdXJhdGlvbiwgMzAwbXMpOwogICAgICAgIC8qIFNhZmFyaSAxMCBuZWVkcyB0aGlzIHByb3BlcnR5IHByZWZpeGVkIHRvIGNvcnJlY3RseSBhcHBseSB0aGUgY3VzdG9tIHByb3BlcnR5ICovCiAgICAgICAgLXdlYmtpdC10cmFuc2l0aW9uLWR1cmF0aW9uOiB2YXIoLS1pcm9uLWNvbGxhcHNlLXRyYW5zaXRpb24tZHVyYXRpb24sIDMwMG1zKTsKICAgICAgICBvdmVyZmxvdzogdmlzaWJsZTsKICAgICAgfQoKICAgICAgOmhvc3QoLmlyb24tY29sbGFwc2UtY2xvc2VkKSB7CiAgICAgICAgZGlzcGxheTogbm9uZTsKICAgICAgfQoKICAgICAgOmhvc3QoOm5vdCguaXJvbi1jb2xsYXBzZS1vcGVuZWQpKSB7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgfQogICAgPC9zdHlsZT4KCiAgICA8c2xvdD48L3Nsb3Q+CmAsaXM6Imlyb24tY29sbGFwc2UiLGJlaGF2aW9yczpbQ29dLHByb3BlcnRpZXM6e2hvcml6b250YWw6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMSxvYnNlcnZlcjoiX2hvcml6b250YWxDaGFuZ2VkIn0sb3BlbmVkOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITEsbm90aWZ5OiEwLG9ic2VydmVyOiJfb3BlbmVkQ2hhbmdlZCJ9LHRyYW5zaXRpb25pbmc6e3R5cGU6Qm9vbGVhbixub3RpZnk6ITAscmVhZE9ubHk6ITB9LG5vQW5pbWF0aW9uOnt0eXBlOkJvb2xlYW59LF9kZXNpcmVkU2l6ZTp7dHlwZTpTdHJpbmcsdmFsdWU6IiJ9fSxnZXQgZGltZW5zaW9uKCl7cmV0dXJuIHRoaXMuaG9yaXpvbnRhbD8id2lkdGgiOiJoZWlnaHQifSxnZXQgX2RpbWVuc2lvbk1heCgpe3JldHVybiB0aGlzLmhvcml6b250YWw/Im1heFdpZHRoIjoibWF4SGVpZ2h0In0sZ2V0IF9kaW1lbnNpb25NYXhDc3MoKXtyZXR1cm4gdGhpcy5ob3Jpem9udGFsPyJtYXgtd2lkdGgiOiJtYXgtaGVpZ2h0In0saG9zdEF0dHJpYnV0ZXM6e3JvbGU6Imdyb3VwIiwiYXJpYS1oaWRkZW4iOiJ0cnVlIn0sbGlzdGVuZXJzOnt0cmFuc2l0aW9uZW5kOiJfb25UcmFuc2l0aW9uRW5kIn0sdG9nZ2xlOmZ1bmN0aW9uKCl7dGhpcy5vcGVuZWQ9IXRoaXMub3BlbmVkfSxzaG93OmZ1bmN0aW9uKCl7dGhpcy5vcGVuZWQ9ITB9LGhpZGU6ZnVuY3Rpb24oKXt0aGlzLm9wZW5lZD0hMX0sdXBkYXRlU2l6ZTpmdW5jdGlvbih0LGUpe3Q9ImF1dG8iPT09dD8iIjp0O3ZhciBuPWUmJiF0aGlzLm5vQW5pbWF0aW9uJiZ0aGlzLmlzQXR0YWNoZWQmJnRoaXMuX2Rlc2lyZWRTaXplIT09dDtpZih0aGlzLl9kZXNpcmVkU2l6ZT10LHRoaXMuX3VwZGF0ZVRyYW5zaXRpb24oITEpLG4pe3ZhciBpPXRoaXMuX2NhbGNTaXplKCk7IiI9PT10JiYodGhpcy5zdHlsZVt0aGlzLl9kaW1lbnNpb25NYXhdPSIiLHQ9dGhpcy5fY2FsY1NpemUoKSksdGhpcy5zdHlsZVt0aGlzLl9kaW1lbnNpb25NYXhdPWksdGhpcy5zY3JvbGxUb3A9dGhpcy5zY3JvbGxUb3AsdGhpcy5fdXBkYXRlVHJhbnNpdGlvbighMCksbj10IT09aX10aGlzLnN0eWxlW3RoaXMuX2RpbWVuc2lvbk1heF09dCxufHx0aGlzLl90cmFuc2l0aW9uRW5kKCl9LGVuYWJsZVRyYW5zaXRpb246ZnVuY3Rpb24odCl7RW8uX3dhcm4oImBlbmFibGVUcmFuc2l0aW9uKClgIGlzIGRlcHJlY2F0ZWQsIHVzZSBgbm9BbmltYXRpb25gIGluc3RlYWQuIiksdGhpcy5ub0FuaW1hdGlvbj0hdH0sX3VwZGF0ZVRyYW5zaXRpb246ZnVuY3Rpb24odCl7dGhpcy5zdHlsZS50cmFuc2l0aW9uRHVyYXRpb249dCYmIXRoaXMubm9BbmltYXRpb24/IiI6IjBzIn0sX2hvcml6b250YWxDaGFuZ2VkOmZ1bmN0aW9uKCl7dGhpcy5zdHlsZS50cmFuc2l0aW9uUHJvcGVydHk9dGhpcy5fZGltZW5zaW9uTWF4Q3NzLHRoaXMuc3R5bGVbIm1heFdpZHRoIj09PXRoaXMuX2RpbWVuc2lvbk1heD8ibWF4SGVpZ2h0IjoibWF4V2lkdGgiXT0iIix0aGlzLnVwZGF0ZVNpemUodGhpcy5vcGVuZWQ/ImF1dG8iOiIwcHgiLCExKX0sX29wZW5lZENoYW5nZWQ6ZnVuY3Rpb24oKXt0aGlzLnNldEF0dHJpYnV0ZSgiYXJpYS1oaWRkZW4iLCF0aGlzLm9wZW5lZCksdGhpcy5fc2V0VHJhbnNpdGlvbmluZyghMCksdGhpcy50b2dnbGVDbGFzcygiaXJvbi1jb2xsYXBzZS1jbG9zZWQiLCExKSx0aGlzLnRvZ2dsZUNsYXNzKCJpcm9uLWNvbGxhcHNlLW9wZW5lZCIsITEpLHRoaXMudXBkYXRlU2l6ZSh0aGlzLm9wZW5lZD8iYXV0byI6IjBweCIsITApLHRoaXMub3BlbmVkJiZ0aGlzLmZvY3VzKCl9LF90cmFuc2l0aW9uRW5kOmZ1bmN0aW9uKCl7dGhpcy5zdHlsZVt0aGlzLl9kaW1lbnNpb25NYXhdPXRoaXMuX2Rlc2lyZWRTaXplLHRoaXMudG9nZ2xlQ2xhc3MoImlyb24tY29sbGFwc2UtY2xvc2VkIiwhdGhpcy5vcGVuZWQpLHRoaXMudG9nZ2xlQ2xhc3MoImlyb24tY29sbGFwc2Utb3BlbmVkIix0aGlzLm9wZW5lZCksdGhpcy5fdXBkYXRlVHJhbnNpdGlvbighMSksdGhpcy5ub3RpZnlSZXNpemUoKSx0aGlzLl9zZXRUcmFuc2l0aW9uaW5nKCExKX0sX29uVHJhbnNpdGlvbkVuZDpmdW5jdGlvbih0KXtlcih0KS5yb290VGFyZ2V0PT09dGhpcyYmdGhpcy5fdHJhbnNpdGlvbkVuZCgpfSxfY2FsY1NpemU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVt0aGlzLmRpbWVuc2lvbl0rInB4In19KTsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzCiAgICBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50CiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCmNvbnN0IGtvPXhlYAovKiBNb3N0IGNvbW1vbiB1c2VkIGZsZXggc3R5bGVzKi8KPGRvbS1tb2R1bGUgaWQ9Imlyb24tZmxleCI+CiAgPHRlbXBsYXRlPgogICAgPHN0eWxlPgogICAgICAubGF5b3V0Lmhvcml6b250YWwsCiAgICAgIC5sYXlvdXQudmVydGljYWwgewogICAgICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogICAgICAgIGRpc3BsYXk6IC13ZWJraXQtZmxleDsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICB9CgogICAgICAubGF5b3V0LmlubGluZSB7CiAgICAgICAgZGlzcGxheTogLW1zLWlubGluZS1mbGV4Ym94OwogICAgICAgIGRpc3BsYXk6IC13ZWJraXQtaW5saW5lLWZsZXg7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7CiAgICAgIH0KCiAgICAgIC5sYXlvdXQuaG9yaXpvbnRhbCB7CiAgICAgICAgLW1zLWZsZXgtZGlyZWN0aW9uOiByb3c7CiAgICAgICAgLXdlYmtpdC1mbGV4LWRpcmVjdGlvbjogcm93OwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7CiAgICAgIH0KCiAgICAgIC5sYXlvdXQudmVydGljYWwgewogICAgICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgIC13ZWJraXQtZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICB9CgogICAgICAubGF5b3V0LndyYXAgewogICAgICAgIC1tcy1mbGV4LXdyYXA6IHdyYXA7CiAgICAgICAgLXdlYmtpdC1mbGV4LXdyYXA6IHdyYXA7CiAgICAgICAgZmxleC13cmFwOiB3cmFwOwogICAgICB9CgogICAgICAubGF5b3V0Lm5vLXdyYXAgewogICAgICAgIC1tcy1mbGV4LXdyYXA6IG5vd3JhcDsKICAgICAgICAtd2Via2l0LWZsZXgtd3JhcDogbm93cmFwOwogICAgICAgIGZsZXgtd3JhcDogbm93cmFwOwogICAgICB9CgogICAgICAubGF5b3V0LmNlbnRlciwKICAgICAgLmxheW91dC5jZW50ZXItY2VudGVyIHsKICAgICAgICAtbXMtZmxleC1hbGlnbjogY2VudGVyOwogICAgICAgIC13ZWJraXQtYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICB9CgogICAgICAubGF5b3V0LmNlbnRlci1qdXN0aWZpZWQsCiAgICAgIC5sYXlvdXQuY2VudGVyLWNlbnRlciB7CiAgICAgICAgLW1zLWZsZXgtcGFjazogY2VudGVyOwogICAgICAgIC13ZWJraXQtanVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgIH0KCiAgICAgIC5mbGV4IHsKICAgICAgICAtbXMtZmxleDogMSAxIDAuMDAwMDAwMDAxcHg7CiAgICAgICAgLXdlYmtpdC1mbGV4OiAxOwogICAgICAgIGZsZXg6IDE7CiAgICAgICAgLXdlYmtpdC1mbGV4LWJhc2lzOiAwLjAwMDAwMDAwMXB4OwogICAgICAgIGZsZXgtYmFzaXM6IDAuMDAwMDAwMDAxcHg7CiAgICAgIH0KCiAgICAgIC5mbGV4LWF1dG8gewogICAgICAgIC1tcy1mbGV4OiAxIDEgYXV0bzsKICAgICAgICAtd2Via2l0LWZsZXg6IDEgMSBhdXRvOwogICAgICAgIGZsZXg6IDEgMSBhdXRvOwogICAgICB9CgogICAgICAuZmxleC1ub25lIHsKICAgICAgICAtbXMtZmxleDogbm9uZTsKICAgICAgICAtd2Via2l0LWZsZXg6IG5vbmU7CiAgICAgICAgZmxleDogbm9uZTsKICAgICAgfQogICAgPC9zdHlsZT4KICA8L3RlbXBsYXRlPgo8L2RvbS1tb2R1bGU+Ci8qIEJhc2ljIGZsZXhib3ggcmV2ZXJzZSBzdHlsZXMgKi8KPGRvbS1tb2R1bGUgaWQ9Imlyb24tZmxleC1yZXZlcnNlIj4KICA8dGVtcGxhdGU+CiAgICA8c3R5bGU+CiAgICAgIC5sYXlvdXQuaG9yaXpvbnRhbC1yZXZlcnNlLAogICAgICAubGF5b3V0LnZlcnRpY2FsLXJldmVyc2UgewogICAgICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogICAgICAgIGRpc3BsYXk6IC13ZWJraXQtZmxleDsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICB9CgogICAgICAubGF5b3V0Lmhvcml6b250YWwtcmV2ZXJzZSB7CiAgICAgICAgLW1zLWZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZTsKICAgICAgICAtd2Via2l0LWZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZTsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2U7CiAgICAgIH0KCiAgICAgIC5sYXlvdXQudmVydGljYWwtcmV2ZXJzZSB7CiAgICAgICAgLW1zLWZsZXgtZGlyZWN0aW9uOiBjb2x1bW4tcmV2ZXJzZTsKICAgICAgICAtd2Via2l0LWZsZXgtZGlyZWN0aW9uOiBjb2x1bW4tcmV2ZXJzZTsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uLXJldmVyc2U7CiAgICAgIH0KCiAgICAgIC5sYXlvdXQud3JhcC1yZXZlcnNlIHsKICAgICAgICAtbXMtZmxleC13cmFwOiB3cmFwLXJldmVyc2U7CiAgICAgICAgLXdlYmtpdC1mbGV4LXdyYXA6IHdyYXAtcmV2ZXJzZTsKICAgICAgICBmbGV4LXdyYXA6IHdyYXAtcmV2ZXJzZTsKICAgICAgfQogICAgPC9zdHlsZT4KICA8L3RlbXBsYXRlPgo8L2RvbS1tb2R1bGU+Ci8qIEZsZXhib3ggYWxpZ25tZW50ICovCjxkb20tbW9kdWxlIGlkPSJpcm9uLWZsZXgtYWxpZ25tZW50Ij4KICA8dGVtcGxhdGU+CiAgICA8c3R5bGU+CiAgICAgIC8qKgogICAgICAgKiBBbGlnbm1lbnQgaW4gY3Jvc3MgYXhpcy4KICAgICAgICovCiAgICAgIC5sYXlvdXQuc3RhcnQgewogICAgICAgIC1tcy1mbGV4LWFsaWduOiBzdGFydDsKICAgICAgICAtd2Via2l0LWFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0OwogICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0OwogICAgICB9CgogICAgICAubGF5b3V0LmNlbnRlciwKICAgICAgLmxheW91dC5jZW50ZXItY2VudGVyIHsKICAgICAgICAtbXMtZmxleC1hbGlnbjogY2VudGVyOwogICAgICAgIC13ZWJraXQtYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICB9CgogICAgICAubGF5b3V0LmVuZCB7CiAgICAgICAgLW1zLWZsZXgtYWxpZ246IGVuZDsKICAgICAgICAtd2Via2l0LWFsaWduLWl0ZW1zOiBmbGV4LWVuZDsKICAgICAgICBhbGlnbi1pdGVtczogZmxleC1lbmQ7CiAgICAgIH0KCiAgICAgIC5sYXlvdXQuYmFzZWxpbmUgewogICAgICAgIC1tcy1mbGV4LWFsaWduOiBiYXNlbGluZTsKICAgICAgICAtd2Via2l0LWFsaWduLWl0ZW1zOiBiYXNlbGluZTsKICAgICAgICBhbGlnbi1pdGVtczogYmFzZWxpbmU7CiAgICAgIH0KCiAgICAgIC8qKgogICAgICAgKiBBbGlnbm1lbnQgaW4gbWFpbiBheGlzLgogICAgICAgKi8KICAgICAgLmxheW91dC5zdGFydC1qdXN0aWZpZWQgewogICAgICAgIC1tcy1mbGV4LXBhY2s6IHN0YXJ0OwogICAgICAgIC13ZWJraXQtanVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0OwogICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDsKICAgICAgfQoKICAgICAgLmxheW91dC5jZW50ZXItanVzdGlmaWVkLAogICAgICAubGF5b3V0LmNlbnRlci1jZW50ZXIgewogICAgICAgIC1tcy1mbGV4LXBhY2s6IGNlbnRlcjsKICAgICAgICAtd2Via2l0LWp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICB9CgogICAgICAubGF5b3V0LmVuZC1qdXN0aWZpZWQgewogICAgICAgIC1tcy1mbGV4LXBhY2s6IGVuZDsKICAgICAgICAtd2Via2l0LWp1c3RpZnktY29udGVudDogZmxleC1lbmQ7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDsKICAgICAgfQoKICAgICAgLmxheW91dC5hcm91bmQtanVzdGlmaWVkIHsKICAgICAgICAtbXMtZmxleC1wYWNrOiBkaXN0cmlidXRlOwogICAgICAgIC13ZWJraXQtanVzdGlmeS1jb250ZW50OiBzcGFjZS1hcm91bmQ7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1hcm91bmQ7CiAgICAgIH0KCiAgICAgIC5sYXlvdXQuanVzdGlmaWVkIHsKICAgICAgICAtbXMtZmxleC1wYWNrOiBqdXN0aWZ5OwogICAgICAgIC13ZWJraXQtanVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKICAgICAgfQoKICAgICAgLyoqCiAgICAgICAqIFNlbGYgYWxpZ25tZW50LgogICAgICAgKi8KICAgICAgLnNlbGYtc3RhcnQgewogICAgICAgIC1tcy1hbGlnbi1zZWxmOiBmbGV4LXN0YXJ0OwogICAgICAgIC13ZWJraXQtYWxpZ24tc2VsZjogZmxleC1zdGFydDsKICAgICAgICBhbGlnbi1zZWxmOiBmbGV4LXN0YXJ0OwogICAgICB9CgogICAgICAuc2VsZi1jZW50ZXIgewogICAgICAgIC1tcy1hbGlnbi1zZWxmOiBjZW50ZXI7CiAgICAgICAgLXdlYmtpdC1hbGlnbi1zZWxmOiBjZW50ZXI7CiAgICAgICAgYWxpZ24tc2VsZjogY2VudGVyOwogICAgICB9CgogICAgICAuc2VsZi1lbmQgewogICAgICAgIC1tcy1hbGlnbi1zZWxmOiBmbGV4LWVuZDsKICAgICAgICAtd2Via2l0LWFsaWduLXNlbGY6IGZsZXgtZW5kOwogICAgICAgIGFsaWduLXNlbGY6IGZsZXgtZW5kOwogICAgICB9CgogICAgICAuc2VsZi1zdHJldGNoIHsKICAgICAgICAtbXMtYWxpZ24tc2VsZjogc3RyZXRjaDsKICAgICAgICAtd2Via2l0LWFsaWduLXNlbGY6IHN0cmV0Y2g7CiAgICAgICAgYWxpZ24tc2VsZjogc3RyZXRjaDsKICAgICAgfQoKICAgICAgLnNlbGYtYmFzZWxpbmUgewogICAgICAgIC1tcy1hbGlnbi1zZWxmOiBiYXNlbGluZTsKICAgICAgICAtd2Via2l0LWFsaWduLXNlbGY6IGJhc2VsaW5lOwogICAgICAgIGFsaWduLXNlbGY6IGJhc2VsaW5lOwogICAgICB9CgogICAgICAvKioKICAgICAgICogbXVsdGktbGluZSBhbGlnbm1lbnQgaW4gbWFpbiBheGlzLgogICAgICAgKi8KICAgICAgLmxheW91dC5zdGFydC1hbGlnbmVkIHsKICAgICAgICAtbXMtZmxleC1saW5lLXBhY2s6IHN0YXJ0OyAgLyogSUUxMCAqLwogICAgICAgIC1tcy1hbGlnbi1jb250ZW50OiBmbGV4LXN0YXJ0OwogICAgICAgIC13ZWJraXQtYWxpZ24tY29udGVudDogZmxleC1zdGFydDsKICAgICAgICBhbGlnbi1jb250ZW50OiBmbGV4LXN0YXJ0OwogICAgICB9CgogICAgICAubGF5b3V0LmVuZC1hbGlnbmVkIHsKICAgICAgICAtbXMtZmxleC1saW5lLXBhY2s6IGVuZDsgIC8qIElFMTAgKi8KICAgICAgICAtbXMtYWxpZ24tY29udGVudDogZmxleC1lbmQ7CiAgICAgICAgLXdlYmtpdC1hbGlnbi1jb250ZW50OiBmbGV4LWVuZDsKICAgICAgICBhbGlnbi1jb250ZW50OiBmbGV4LWVuZDsKICAgICAgfQoKICAgICAgLmxheW91dC5jZW50ZXItYWxpZ25lZCB7CiAgICAgICAgLW1zLWZsZXgtbGluZS1wYWNrOiBjZW50ZXI7ICAvKiBJRTEwICovCiAgICAgICAgLW1zLWFsaWduLWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICAtd2Via2l0LWFsaWduLWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICBhbGlnbi1jb250ZW50OiBjZW50ZXI7CiAgICAgIH0KCiAgICAgIC5sYXlvdXQuYmV0d2Vlbi1hbGlnbmVkIHsKICAgICAgICAtbXMtZmxleC1saW5lLXBhY2s6IGp1c3RpZnk7ICAvKiBJRTEwICovCiAgICAgICAgLW1zLWFsaWduLWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47CiAgICAgICAgLXdlYmtpdC1hbGlnbi1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogICAgICAgIGFsaWduLWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47CiAgICAgIH0KCiAgICAgIC5sYXlvdXQuYXJvdW5kLWFsaWduZWQgewogICAgICAgIC1tcy1mbGV4LWxpbmUtcGFjazogZGlzdHJpYnV0ZTsgIC8qIElFMTAgKi8KICAgICAgICAtbXMtYWxpZ24tY29udGVudDogc3BhY2UtYXJvdW5kOwogICAgICAgIC13ZWJraXQtYWxpZ24tY29udGVudDogc3BhY2UtYXJvdW5kOwogICAgICAgIGFsaWduLWNvbnRlbnQ6IHNwYWNlLWFyb3VuZDsKICAgICAgfQogICAgPC9zdHlsZT4KICA8L3RlbXBsYXRlPgo8L2RvbS1tb2R1bGU+Ci8qIE5vbi1mbGV4Ym94IHBvc2l0aW9uaW5nIGhlbHBlciBzdHlsZXMgKi8KPGRvbS1tb2R1bGUgaWQ9Imlyb24tZmxleC1mYWN0b3JzIj4KICA8dGVtcGxhdGU+CiAgICA8c3R5bGU+CiAgICAgIC5mbGV4LAogICAgICAuZmxleC0xIHsKICAgICAgICAtbXMtZmxleDogMSAxIDAuMDAwMDAwMDAxcHg7CiAgICAgICAgLXdlYmtpdC1mbGV4OiAxOwogICAgICAgIGZsZXg6IDE7CiAgICAgICAgLXdlYmtpdC1mbGV4LWJhc2lzOiAwLjAwMDAwMDAwMXB4OwogICAgICAgIGZsZXgtYmFzaXM6IDAuMDAwMDAwMDAxcHg7CiAgICAgIH0KCiAgICAgIC5mbGV4LTIgewogICAgICAgIC1tcy1mbGV4OiAyOwogICAgICAgIC13ZWJraXQtZmxleDogMjsKICAgICAgICBmbGV4OiAyOwogICAgICB9CgogICAgICAuZmxleC0zIHsKICAgICAgICAtbXMtZmxleDogMzsKICAgICAgICAtd2Via2l0LWZsZXg6IDM7CiAgICAgICAgZmxleDogMzsKICAgICAgfQoKICAgICAgLmZsZXgtNCB7CiAgICAgICAgLW1zLWZsZXg6IDQ7CiAgICAgICAgLXdlYmtpdC1mbGV4OiA0OwogICAgICAgIGZsZXg6IDQ7CiAgICAgIH0KCiAgICAgIC5mbGV4LTUgewogICAgICAgIC1tcy1mbGV4OiA1OwogICAgICAgIC13ZWJraXQtZmxleDogNTsKICAgICAgICBmbGV4OiA1OwogICAgICB9CgogICAgICAuZmxleC02IHsKICAgICAgICAtbXMtZmxleDogNjsKICAgICAgICAtd2Via2l0LWZsZXg6IDY7CiAgICAgICAgZmxleDogNjsKICAgICAgfQoKICAgICAgLmZsZXgtNyB7CiAgICAgICAgLW1zLWZsZXg6IDc7CiAgICAgICAgLXdlYmtpdC1mbGV4OiA3OwogICAgICAgIGZsZXg6IDc7CiAgICAgIH0KCiAgICAgIC5mbGV4LTggewogICAgICAgIC1tcy1mbGV4OiA4OwogICAgICAgIC13ZWJraXQtZmxleDogODsKICAgICAgICBmbGV4OiA4OwogICAgICB9CgogICAgICAuZmxleC05IHsKICAgICAgICAtbXMtZmxleDogOTsKICAgICAgICAtd2Via2l0LWZsZXg6IDk7CiAgICAgICAgZmxleDogOTsKICAgICAgfQoKICAgICAgLmZsZXgtMTAgewogICAgICAgIC1tcy1mbGV4OiAxMDsKICAgICAgICAtd2Via2l0LWZsZXg6IDEwOwogICAgICAgIGZsZXg6IDEwOwogICAgICB9CgogICAgICAuZmxleC0xMSB7CiAgICAgICAgLW1zLWZsZXg6IDExOwogICAgICAgIC13ZWJraXQtZmxleDogMTE7CiAgICAgICAgZmxleDogMTE7CiAgICAgIH0KCiAgICAgIC5mbGV4LTEyIHsKICAgICAgICAtbXMtZmxleDogMTI7CiAgICAgICAgLXdlYmtpdC1mbGV4OiAxMjsKICAgICAgICBmbGV4OiAxMjsKICAgICAgfQogICAgPC9zdHlsZT4KICA8L3RlbXBsYXRlPgo8L2RvbS1tb2R1bGU+Cjxkb20tbW9kdWxlIGlkPSJpcm9uLXBvc2l0aW9uaW5nIj4KICA8dGVtcGxhdGU+CiAgICA8c3R5bGU+CiAgICAgIC5ibG9jayB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgIH0KCiAgICAgIFtoaWRkZW5dIHsKICAgICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7CiAgICAgIH0KCiAgICAgIC5pbnZpc2libGUgewogICAgICAgIHZpc2liaWxpdHk6IGhpZGRlbiAhaW1wb3J0YW50OwogICAgICB9CgogICAgICAucmVsYXRpdmUgewogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgfQoKICAgICAgLmZpdCB7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIHRvcDogMDsKICAgICAgICByaWdodDogMDsKICAgICAgICBib3R0b206IDA7CiAgICAgICAgbGVmdDogMDsKICAgICAgfQoKICAgICAgYm9keS5mdWxsYmxlZWQgewogICAgICAgIG1hcmdpbjogMDsKICAgICAgICBoZWlnaHQ6IDEwMHZoOwogICAgICB9CgogICAgICAuc2Nyb2xsIHsKICAgICAgICAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7CiAgICAgICAgb3ZlcmZsb3c6IGF1dG87CiAgICAgIH0KCiAgICAgIC8qIGZpeGVkIHBvc2l0aW9uICovCiAgICAgIC5maXhlZC1ib3R0b20sCiAgICAgIC5maXhlZC1sZWZ0LAogICAgICAuZml4ZWQtcmlnaHQsCiAgICAgIC5maXhlZC10b3AgewogICAgICAgIHBvc2l0aW9uOiBmaXhlZDsKICAgICAgfQoKICAgICAgLmZpeGVkLXRvcCB7CiAgICAgICAgdG9wOiAwOwogICAgICAgIGxlZnQ6IDA7CiAgICAgICAgcmlnaHQ6IDA7CiAgICAgIH0KCiAgICAgIC5maXhlZC1yaWdodCB7CiAgICAgICAgdG9wOiAwOwogICAgICAgIHJpZ2h0OiAwOwogICAgICAgIGJvdHRvbTogMDsKICAgICAgfQoKICAgICAgLmZpeGVkLWJvdHRvbSB7CiAgICAgICAgcmlnaHQ6IDA7CiAgICAgICAgYm90dG9tOiAwOwogICAgICAgIGxlZnQ6IDA7CiAgICAgIH0KCiAgICAgIC5maXhlZC1sZWZ0IHsKICAgICAgICB0b3A6IDA7CiAgICAgICAgYm90dG9tOiAwOwogICAgICAgIGxlZnQ6IDA7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgPC90ZW1wbGF0ZT4KPC9kb20tbW9kdWxlPgpgO2tvLnNldEF0dHJpYnV0ZSgic3R5bGUiLCJkaXNwbGF5OiBub25lOyIpLGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoa28uY29udGVudCk7Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNSBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlCiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcwogICAgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudAogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwpjb25zdCBMbz14ZWAKPGN1c3RvbS1zdHlsZT4KICA8c3R5bGUgaXM9ImN1c3RvbS1zdHlsZSI+CiAgICBbaGlkZGVuXSB7CiAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKICAgIH0KICA8L3N0eWxlPgo8L2N1c3RvbS1zdHlsZT4KPGN1c3RvbS1zdHlsZT4KICA8c3R5bGUgaXM9ImN1c3RvbS1zdHlsZSI+CiAgICBodG1sIHsKCiAgICAgIC0tbGF5b3V0OiB7CiAgICAgICAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgICAgICAgZGlzcGxheTogLXdlYmtpdC1mbGV4OwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgIH07CgogICAgICAtLWxheW91dC1pbmxpbmU6IHsKICAgICAgICBkaXNwbGF5OiAtbXMtaW5saW5lLWZsZXhib3g7CiAgICAgICAgZGlzcGxheTogLXdlYmtpdC1pbmxpbmUtZmxleDsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICAgICAgfTsKCiAgICAgIC0tbGF5b3V0LWhvcml6b250YWw6IHsKICAgICAgICBAYXBwbHkgLS1sYXlvdXQ7CgogICAgICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogcm93OwogICAgICAgIC13ZWJraXQtZmxleC1kaXJlY3Rpb246IHJvdzsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93OwogICAgICB9OwoKICAgICAgLS1sYXlvdXQtaG9yaXpvbnRhbC1yZXZlcnNlOiB7CiAgICAgICAgQGFwcGx5IC0tbGF5b3V0OwoKICAgICAgICAtbXMtZmxleC1kaXJlY3Rpb246IHJvdy1yZXZlcnNlOwogICAgICAgIC13ZWJraXQtZmxleC1kaXJlY3Rpb246IHJvdy1yZXZlcnNlOwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZTsKICAgICAgfTsKCiAgICAgIC0tbGF5b3V0LXZlcnRpY2FsOiB7CiAgICAgICAgQGFwcGx5IC0tbGF5b3V0OwoKICAgICAgICAtbXMtZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICAtd2Via2l0LWZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgfTsKCiAgICAgIC0tbGF5b3V0LXZlcnRpY2FsLXJldmVyc2U6IHsKICAgICAgICBAYXBwbHkgLS1sYXlvdXQ7CgogICAgICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogY29sdW1uLXJldmVyc2U7CiAgICAgICAgLXdlYmtpdC1mbGV4LWRpcmVjdGlvbjogY29sdW1uLXJldmVyc2U7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbi1yZXZlcnNlOwogICAgICB9OwoKICAgICAgLS1sYXlvdXQtd3JhcDogewogICAgICAgIC1tcy1mbGV4LXdyYXA6IHdyYXA7CiAgICAgICAgLXdlYmtpdC1mbGV4LXdyYXA6IHdyYXA7CiAgICAgICAgZmxleC13cmFwOiB3cmFwOwogICAgICB9OwoKICAgICAgLS1sYXlvdXQtd3JhcC1yZXZlcnNlOiB7CiAgICAgICAgLW1zLWZsZXgtd3JhcDogd3JhcC1yZXZlcnNlOwogICAgICAgIC13ZWJraXQtZmxleC13cmFwOiB3cmFwLXJldmVyc2U7CiAgICAgICAgZmxleC13cmFwOiB3cmFwLXJldmVyc2U7CiAgICAgIH07CgogICAgICAtLWxheW91dC1mbGV4LWF1dG86IHsKICAgICAgICAtbXMtZmxleDogMSAxIGF1dG87CiAgICAgICAgLXdlYmtpdC1mbGV4OiAxIDEgYXV0bzsKICAgICAgICBmbGV4OiAxIDEgYXV0bzsKICAgICAgfTsKCiAgICAgIC0tbGF5b3V0LWZsZXgtbm9uZTogewogICAgICAgIC1tcy1mbGV4OiBub25lOwogICAgICAgIC13ZWJraXQtZmxleDogbm9uZTsKICAgICAgICBmbGV4OiBub25lOwogICAgICB9OwoKICAgICAgLS1sYXlvdXQtZmxleDogewogICAgICAgIC1tcy1mbGV4OiAxIDEgMC4wMDAwMDAwMDFweDsKICAgICAgICAtd2Via2l0LWZsZXg6IDE7CiAgICAgICAgZmxleDogMTsKICAgICAgICAtd2Via2l0LWZsZXgtYmFzaXM6IDAuMDAwMDAwMDAxcHg7CiAgICAgICAgZmxleC1iYXNpczogMC4wMDAwMDAwMDFweDsKICAgICAgfTsKCiAgICAgIC0tbGF5b3V0LWZsZXgtMjogewogICAgICAgIC1tcy1mbGV4OiAyOwogICAgICAgIC13ZWJraXQtZmxleDogMjsKICAgICAgICBmbGV4OiAyOwogICAgICB9OwoKICAgICAgLS1sYXlvdXQtZmxleC0zOiB7CiAgICAgICAgLW1zLWZsZXg6IDM7CiAgICAgICAgLXdlYmtpdC1mbGV4OiAzOwogICAgICAgIGZsZXg6IDM7CiAgICAgIH07CgogICAgICAtLWxheW91dC1mbGV4LTQ6IHsKICAgICAgICAtbXMtZmxleDogNDsKICAgICAgICAtd2Via2l0LWZsZXg6IDQ7CiAgICAgICAgZmxleDogNDsKICAgICAgfTsKCiAgICAgIC0tbGF5b3V0LWZsZXgtNTogewogICAgICAgIC1tcy1mbGV4OiA1OwogICAgICAgIC13ZWJraXQtZmxleDogNTsKICAgICAgICBmbGV4OiA1OwogICAgICB9OwoKICAgICAgLS1sYXlvdXQtZmxleC02OiB7CiAgICAgICAgLW1zLWZsZXg6IDY7CiAgICAgICAgLXdlYmtpdC1mbGV4OiA2OwogICAgICAgIGZsZXg6IDY7CiAgICAgIH07CgogICAgICAtLWxheW91dC1mbGV4LTc6IHsKICAgICAgICAtbXMtZmxleDogNzsKICAgICAgICAtd2Via2l0LWZsZXg6IDc7CiAgICAgICAgZmxleDogNzsKICAgICAgfTsKCiAgICAgIC0tbGF5b3V0LWZsZXgtODogewogICAgICAgIC1tcy1mbGV4OiA4OwogICAgICAgIC13ZWJraXQtZmxleDogODsKICAgICAgICBmbGV4OiA4OwogICAgICB9OwoKICAgICAgLS1sYXlvdXQtZmxleC05OiB7CiAgICAgICAgLW1zLWZsZXg6IDk7CiAgICAgICAgLXdlYmtpdC1mbGV4OiA5OwogICAgICAgIGZsZXg6IDk7CiAgICAgIH07CgogICAgICAtLWxheW91dC1mbGV4LTEwOiB7CiAgICAgICAgLW1zLWZsZXg6IDEwOwogICAgICAgIC13ZWJraXQtZmxleDogMTA7CiAgICAgICAgZmxleDogMTA7CiAgICAgIH07CgogICAgICAtLWxheW91dC1mbGV4LTExOiB7CiAgICAgICAgLW1zLWZsZXg6IDExOwogICAgICAgIC13ZWJraXQtZmxleDogMTE7CiAgICAgICAgZmxleDogMTE7CiAgICAgIH07CgogICAgICAtLWxheW91dC1mbGV4LTEyOiB7CiAgICAgICAgLW1zLWZsZXg6IDEyOwogICAgICAgIC13ZWJraXQtZmxleDogMTI7CiAgICAgICAgZmxleDogMTI7CiAgICAgIH07CgogICAgICAvKiBhbGlnbm1lbnQgaW4gY3Jvc3MgYXhpcyAqLwoKICAgICAgLS1sYXlvdXQtc3RhcnQ6IHsKICAgICAgICAtbXMtZmxleC1hbGlnbjogc3RhcnQ7CiAgICAgICAgLXdlYmtpdC1hbGlnbi1pdGVtczogZmxleC1zdGFydDsKICAgICAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDsKICAgICAgfTsKCiAgICAgIC0tbGF5b3V0LWNlbnRlcjogewogICAgICAgIC1tcy1mbGV4LWFsaWduOiBjZW50ZXI7CiAgICAgICAgLXdlYmtpdC1hbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgIH07CgogICAgICAtLWxheW91dC1lbmQ6IHsKICAgICAgICAtbXMtZmxleC1hbGlnbjogZW5kOwogICAgICAgIC13ZWJraXQtYWxpZ24taXRlbXM6IGZsZXgtZW5kOwogICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LWVuZDsKICAgICAgfTsKCiAgICAgIC0tbGF5b3V0LWJhc2VsaW5lOiB7CiAgICAgICAgLW1zLWZsZXgtYWxpZ246IGJhc2VsaW5lOwogICAgICAgIC13ZWJraXQtYWxpZ24taXRlbXM6IGJhc2VsaW5lOwogICAgICAgIGFsaWduLWl0ZW1zOiBiYXNlbGluZTsKICAgICAgfTsKCiAgICAgIC8qIGFsaWdubWVudCBpbiBtYWluIGF4aXMgKi8KCiAgICAgIC0tbGF5b3V0LXN0YXJ0LWp1c3RpZmllZDogewogICAgICAgIC1tcy1mbGV4LXBhY2s6IHN0YXJ0OwogICAgICAgIC13ZWJraXQtanVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0OwogICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDsKICAgICAgfTsKCiAgICAgIC0tbGF5b3V0LWNlbnRlci1qdXN0aWZpZWQ6IHsKICAgICAgICAtbXMtZmxleC1wYWNrOiBjZW50ZXI7CiAgICAgICAgLXdlYmtpdC1qdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgfTsKCiAgICAgIC0tbGF5b3V0LWVuZC1qdXN0aWZpZWQ6IHsKICAgICAgICAtbXMtZmxleC1wYWNrOiBlbmQ7CiAgICAgICAgLXdlYmtpdC1qdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kOwogICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7CiAgICAgIH07CgogICAgICAtLWxheW91dC1hcm91bmQtanVzdGlmaWVkOiB7CiAgICAgICAgLW1zLWZsZXgtcGFjazogZGlzdHJpYnV0ZTsKICAgICAgICAtd2Via2l0LWp1c3RpZnktY29udGVudDogc3BhY2UtYXJvdW5kOwogICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYXJvdW5kOwogICAgICB9OwoKICAgICAgLS1sYXlvdXQtanVzdGlmaWVkOiB7CiAgICAgICAgLW1zLWZsZXgtcGFjazoganVzdGlmeTsKICAgICAgICAtd2Via2l0LWp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47CiAgICAgIH07CgogICAgICAtLWxheW91dC1jZW50ZXItY2VudGVyOiB7CiAgICAgICAgQGFwcGx5IC0tbGF5b3V0LWNlbnRlcjsKICAgICAgICBAYXBwbHkgLS1sYXlvdXQtY2VudGVyLWp1c3RpZmllZDsKICAgICAgfTsKCiAgICAgIC8qIHNlbGYgYWxpZ25tZW50ICovCgogICAgICAtLWxheW91dC1zZWxmLXN0YXJ0OiB7CiAgICAgICAgLW1zLWFsaWduLXNlbGY6IGZsZXgtc3RhcnQ7CiAgICAgICAgLXdlYmtpdC1hbGlnbi1zZWxmOiBmbGV4LXN0YXJ0OwogICAgICAgIGFsaWduLXNlbGY6IGZsZXgtc3RhcnQ7CiAgICAgIH07CgogICAgICAtLWxheW91dC1zZWxmLWNlbnRlcjogewogICAgICAgIC1tcy1hbGlnbi1zZWxmOiBjZW50ZXI7CiAgICAgICAgLXdlYmtpdC1hbGlnbi1zZWxmOiBjZW50ZXI7CiAgICAgICAgYWxpZ24tc2VsZjogY2VudGVyOwogICAgICB9OwoKICAgICAgLS1sYXlvdXQtc2VsZi1lbmQ6IHsKICAgICAgICAtbXMtYWxpZ24tc2VsZjogZmxleC1lbmQ7CiAgICAgICAgLXdlYmtpdC1hbGlnbi1zZWxmOiBmbGV4LWVuZDsKICAgICAgICBhbGlnbi1zZWxmOiBmbGV4LWVuZDsKICAgICAgfTsKCiAgICAgIC0tbGF5b3V0LXNlbGYtc3RyZXRjaDogewogICAgICAgIC1tcy1hbGlnbi1zZWxmOiBzdHJldGNoOwogICAgICAgIC13ZWJraXQtYWxpZ24tc2VsZjogc3RyZXRjaDsKICAgICAgICBhbGlnbi1zZWxmOiBzdHJldGNoOwogICAgICB9OwoKICAgICAgLS1sYXlvdXQtc2VsZi1iYXNlbGluZTogewogICAgICAgIC1tcy1hbGlnbi1zZWxmOiBiYXNlbGluZTsKICAgICAgICAtd2Via2l0LWFsaWduLXNlbGY6IGJhc2VsaW5lOwogICAgICAgIGFsaWduLXNlbGY6IGJhc2VsaW5lOwogICAgICB9OwoKICAgICAgLyogbXVsdGktbGluZSBhbGlnbm1lbnQgaW4gbWFpbiBheGlzICovCgogICAgICAtLWxheW91dC1zdGFydC1hbGlnbmVkOiB7CiAgICAgICAgLW1zLWZsZXgtbGluZS1wYWNrOiBzdGFydDsgIC8qIElFMTAgKi8KICAgICAgICAtbXMtYWxpZ24tY29udGVudDogZmxleC1zdGFydDsKICAgICAgICAtd2Via2l0LWFsaWduLWNvbnRlbnQ6IGZsZXgtc3RhcnQ7CiAgICAgICAgYWxpZ24tY29udGVudDogZmxleC1zdGFydDsKICAgICAgfTsKCiAgICAgIC0tbGF5b3V0LWVuZC1hbGlnbmVkOiB7CiAgICAgICAgLW1zLWZsZXgtbGluZS1wYWNrOiBlbmQ7ICAvKiBJRTEwICovCiAgICAgICAgLW1zLWFsaWduLWNvbnRlbnQ6IGZsZXgtZW5kOwogICAgICAgIC13ZWJraXQtYWxpZ24tY29udGVudDogZmxleC1lbmQ7CiAgICAgICAgYWxpZ24tY29udGVudDogZmxleC1lbmQ7CiAgICAgIH07CgogICAgICAtLWxheW91dC1jZW50ZXItYWxpZ25lZDogewogICAgICAgIC1tcy1mbGV4LWxpbmUtcGFjazogY2VudGVyOyAgLyogSUUxMCAqLwogICAgICAgIC1tcy1hbGlnbi1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgLXdlYmtpdC1hbGlnbi1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgYWxpZ24tY29udGVudDogY2VudGVyOwogICAgICB9OwoKICAgICAgLS1sYXlvdXQtYmV0d2Vlbi1hbGlnbmVkOiB7CiAgICAgICAgLW1zLWZsZXgtbGluZS1wYWNrOiBqdXN0aWZ5OyAgLyogSUUxMCAqLwogICAgICAgIC1tcy1hbGlnbi1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogICAgICAgIC13ZWJraXQtYWxpZ24tY29udGVudDogc3BhY2UtYmV0d2VlbjsKICAgICAgICBhbGlnbi1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogICAgICB9OwoKICAgICAgLS1sYXlvdXQtYXJvdW5kLWFsaWduZWQ6IHsKICAgICAgICAtbXMtZmxleC1saW5lLXBhY2s6IGRpc3RyaWJ1dGU7ICAvKiBJRTEwICovCiAgICAgICAgLW1zLWFsaWduLWNvbnRlbnQ6IHNwYWNlLWFyb3VuZDsKICAgICAgICAtd2Via2l0LWFsaWduLWNvbnRlbnQ6IHNwYWNlLWFyb3VuZDsKICAgICAgICBhbGlnbi1jb250ZW50OiBzcGFjZS1hcm91bmQ7CiAgICAgIH07CgogICAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAgICAgICAgICAgICAgT3RoZXIgTGF5b3V0CiAgICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgogICAgICAtLWxheW91dC1ibG9jazogewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICB9OwoKICAgICAgLS1sYXlvdXQtaW52aXNpYmxlOiB7CiAgICAgICAgdmlzaWJpbGl0eTogaGlkZGVuICFpbXBvcnRhbnQ7CiAgICAgIH07CgogICAgICAtLWxheW91dC1yZWxhdGl2ZTogewogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgfTsKCiAgICAgIC0tbGF5b3V0LWZpdDogewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICB0b3A6IDA7CiAgICAgICAgcmlnaHQ6IDA7CiAgICAgICAgYm90dG9tOiAwOwogICAgICAgIGxlZnQ6IDA7CiAgICAgIH07CgogICAgICAtLWxheW91dC1zY3JvbGw6IHsKICAgICAgICAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7CiAgICAgICAgb3ZlcmZsb3c6IGF1dG87CiAgICAgIH07CgogICAgICAtLWxheW91dC1mdWxsYmxlZWQ6IHsKICAgICAgICBtYXJnaW46IDA7CiAgICAgICAgaGVpZ2h0OiAxMDB2aDsKICAgICAgfTsKCiAgICAgIC8qIGZpeGVkIHBvc2l0aW9uICovCgogICAgICAtLWxheW91dC1maXhlZC10b3A6IHsKICAgICAgICBwb3NpdGlvbjogZml4ZWQ7CiAgICAgICAgdG9wOiAwOwogICAgICAgIGxlZnQ6IDA7CiAgICAgICAgcmlnaHQ6IDA7CiAgICAgIH07CgogICAgICAtLWxheW91dC1maXhlZC1yaWdodDogewogICAgICAgIHBvc2l0aW9uOiBmaXhlZDsKICAgICAgICB0b3A6IDA7CiAgICAgICAgcmlnaHQ6IDA7CiAgICAgICAgYm90dG9tOiAwOwogICAgICB9OwoKICAgICAgLS1sYXlvdXQtZml4ZWQtYm90dG9tOiB7CiAgICAgICAgcG9zaXRpb246IGZpeGVkOwogICAgICAgIHJpZ2h0OiAwOwogICAgICAgIGJvdHRvbTogMDsKICAgICAgICBsZWZ0OiAwOwogICAgICB9OwoKICAgICAgLS1sYXlvdXQtZml4ZWQtbGVmdDogewogICAgICAgIHBvc2l0aW9uOiBmaXhlZDsKICAgICAgICB0b3A6IDA7CiAgICAgICAgYm90dG9tOiAwOwogICAgICAgIGxlZnQ6IDA7CiAgICAgIH07CgogICAgfQogIDwvc3R5bGU+CjwvY3VzdG9tLXN0eWxlPmA7TG8uc2V0QXR0cmlidXRlKCJzdHlsZSIsImRpc3BsYXk6IG5vbmU7IiksZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChMby5jb250ZW50KTt2YXIgUG89ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3R5bGUiKTtQby50ZXh0Q29udGVudD0iW2hpZGRlbl0geyBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7IH0iLGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoUG8pOwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZQogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMKICAgIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KY2xhc3MgTm97Y29uc3RydWN0b3IodCl7Tm9bIiAiXSh0KSx0aGlzLnR5cGU9dCYmdC50eXBlfHwiZGVmYXVsdCIsdGhpcy5rZXk9dCYmdC5rZXksdCYmInZhbHVlImluIHQmJih0aGlzLnZhbHVlPXQudmFsdWUpfWdldCB2YWx1ZSgpe3ZhciB0PXRoaXMudHlwZSxlPXRoaXMua2V5O2lmKHQmJmUpcmV0dXJuIE5vLnR5cGVzW3RdJiZOby50eXBlc1t0XVtlXX1zZXQgdmFsdWUodCl7dmFyIGU9dGhpcy50eXBlLG49dGhpcy5rZXk7ZSYmbiYmKGU9Tm8udHlwZXNbZV09Tm8udHlwZXNbZV18fHt9LG51bGw9PXQ/ZGVsZXRlIGVbbl06ZVtuXT10KX1nZXQgbGlzdCgpe2lmKHRoaXMudHlwZSl7dmFyIHQ9Tm8udHlwZXNbdGhpcy50eXBlXTtyZXR1cm4gdD9PYmplY3Qua2V5cyh0KS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBJb1t0aGlzLnR5cGVdW3RdfSksdGhpcyk6W119fWJ5S2V5KHQpe3JldHVybiB0aGlzLmtleT10LHRoaXMudmFsdWV9fU5vWyIgIl09ZnVuY3Rpb24oKXt9LE5vLnR5cGVzPXt9O3ZhciBJbz1Oby50eXBlcztqcih7aXM6Imlyb24tbWV0YSIscHJvcGVydGllczp7dHlwZTp7dHlwZTpTdHJpbmcsdmFsdWU6ImRlZmF1bHQifSxrZXk6e3R5cGU6U3RyaW5nfSx2YWx1ZTp7dHlwZTpTdHJpbmcsbm90aWZ5OiEwfSxzZWxmOnt0eXBlOkJvb2xlYW4sb2JzZXJ2ZXI6Il9zZWxmQ2hhbmdlZCJ9LF9fbWV0YTp7dHlwZTpCb29sZWFuLGNvbXB1dGVkOiJfX2NvbXB1dGVNZXRhKHR5cGUsIGtleSwgdmFsdWUpIn19LGhvc3RBdHRyaWJ1dGVzOntoaWRkZW46ITB9LF9fY29tcHV0ZU1ldGE6ZnVuY3Rpb24odCxlLG4pe3ZhciBpPW5ldyBObyh7dHlwZTp0LGtleTplfSk7cmV0dXJuIHZvaWQgMCE9PW4mJm4hPT1pLnZhbHVlP2kudmFsdWU9bjp0aGlzLnZhbHVlIT09aS52YWx1ZSYmKHRoaXMudmFsdWU9aS52YWx1ZSksaX0sZ2V0IGxpc3QoKXtyZXR1cm4gdGhpcy5fX21ldGEmJnRoaXMuX19tZXRhLmxpc3R9LF9zZWxmQ2hhbmdlZDpmdW5jdGlvbih0KXt0JiYodGhpcy52YWx1ZT10aGlzKX0sYnlLZXk6ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBObyh7dHlwZTp0aGlzLnR5cGUsa2V5OnR9KS52YWx1ZX19KSwKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzCiAgICBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50CiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCmpyKHtfdGVtcGxhdGU6eGVgCiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICBAYXBwbHkgLS1sYXlvdXQtaW5saW5lOwogICAgICAgIEBhcHBseSAtLWxheW91dC1jZW50ZXItY2VudGVyOwogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKCiAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKCiAgICAgICAgZmlsbDogdmFyKC0taXJvbi1pY29uLWZpbGwtY29sb3IsIGN1cnJlbnRjb2xvcik7CiAgICAgICAgc3Ryb2tlOiB2YXIoLS1pcm9uLWljb24tc3Ryb2tlLWNvbG9yLCBub25lKTsKCiAgICAgICAgd2lkdGg6IHZhcigtLWlyb24taWNvbi13aWR0aCwgMjRweCk7CiAgICAgICAgaGVpZ2h0OiB2YXIoLS1pcm9uLWljb24taGVpZ2h0LCAyNHB4KTsKICAgICAgICBAYXBwbHkgLS1pcm9uLWljb247CiAgICAgIH0KCiAgICAgIDpob3N0KFtoaWRkZW5dKSB7CiAgICAgICAgZGlzcGxheTogbm9uZTsKICAgICAgfQogICAgPC9zdHlsZT4KYCxpczoiaXJvbi1pY29uIixwcm9wZXJ0aWVzOntpY29uOnt0eXBlOlN0cmluZ30sdGhlbWU6e3R5cGU6U3RyaW5nfSxzcmM6e3R5cGU6U3RyaW5nfSxfbWV0YTp7dmFsdWU6RW8uY3JlYXRlKCJpcm9uLW1ldGEiLHt0eXBlOiJpY29uc2V0In0pfX0sb2JzZXJ2ZXJzOlsiX3VwZGF0ZUljb24oX21ldGEsIGlzQXR0YWNoZWQpIiwiX3VwZGF0ZUljb24odGhlbWUsIGlzQXR0YWNoZWQpIiwiX3NyY0NoYW5nZWQoc3JjLCBpc0F0dGFjaGVkKSIsIl9pY29uQ2hhbmdlZChpY29uLCBpc0F0dGFjaGVkKSJdLF9ERUZBVUxUX0lDT05TRVQ6Imljb25zIixfaWNvbkNoYW5nZWQ6ZnVuY3Rpb24odCl7dmFyIGU9KHR8fCIiKS5zcGxpdCgiOiIpO3RoaXMuX2ljb25OYW1lPWUucG9wKCksdGhpcy5faWNvbnNldE5hbWU9ZS5wb3AoKXx8dGhpcy5fREVGQVVMVF9JQ09OU0VULHRoaXMuX3VwZGF0ZUljb24oKX0sX3NyY0NoYW5nZWQ6ZnVuY3Rpb24odCl7dGhpcy5fdXBkYXRlSWNvbigpfSxfdXNlc0ljb25zZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pY29ufHwhdGhpcy5zcmN9LF91cGRhdGVJY29uOmZ1bmN0aW9uKCl7dGhpcy5fdXNlc0ljb25zZXQoKT8odGhpcy5faW1nJiZ0aGlzLl9pbWcucGFyZW50Tm9kZSYmZXIodGhpcy5yb290KS5yZW1vdmVDaGlsZCh0aGlzLl9pbWcpLCIiPT09dGhpcy5faWNvbk5hbWU/dGhpcy5faWNvbnNldCYmdGhpcy5faWNvbnNldC5yZW1vdmVJY29uKHRoaXMpOnRoaXMuX2ljb25zZXROYW1lJiZ0aGlzLl9tZXRhJiYodGhpcy5faWNvbnNldD10aGlzLl9tZXRhLmJ5S2V5KHRoaXMuX2ljb25zZXROYW1lKSx0aGlzLl9pY29uc2V0Pyh0aGlzLl9pY29uc2V0LmFwcGx5SWNvbih0aGlzLHRoaXMuX2ljb25OYW1lLHRoaXMudGhlbWUpLHRoaXMudW5saXN0ZW4od2luZG93LCJpcm9uLWljb25zZXQtYWRkZWQiLCJfdXBkYXRlSWNvbiIpKTp0aGlzLmxpc3Rlbih3aW5kb3csImlyb24taWNvbnNldC1hZGRlZCIsIl91cGRhdGVJY29uIikpKToodGhpcy5faWNvbnNldCYmdGhpcy5faWNvbnNldC5yZW1vdmVJY29uKHRoaXMpLHRoaXMuX2ltZ3x8KHRoaXMuX2ltZz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbWciKSx0aGlzLl9pbWcuc3R5bGUud2lkdGg9IjEwMCUiLHRoaXMuX2ltZy5zdHlsZS5oZWlnaHQ9IjEwMCUiLHRoaXMuX2ltZy5kcmFnZ2FibGU9ITEpLHRoaXMuX2ltZy5zcmM9dGhpcy5zcmMsZXIodGhpcy5yb290KS5hcHBlbmRDaGlsZCh0aGlzLl9pbWcpKX19KSwKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzCiAgICBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50CiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCmpyKHtpczoiaXJvbi1pY29uc2V0LXN2ZyIscHJvcGVydGllczp7bmFtZTp7dHlwZTpTdHJpbmcsb2JzZXJ2ZXI6Il9uYW1lQ2hhbmdlZCJ9LHNpemU6e3R5cGU6TnVtYmVyLHZhbHVlOjI0fSxydGxNaXJyb3Jpbmc6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMX0sdXNlR2xvYmFsUnRsQXR0cmlidXRlOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITF9fSxjcmVhdGVkOmZ1bmN0aW9uKCl7dGhpcy5fbWV0YT1uZXcgTm8oe3R5cGU6Imljb25zZXQiLGtleTpudWxsLHZhbHVlOm51bGx9KX0sYXR0YWNoZWQ6ZnVuY3Rpb24oKXt0aGlzLnN0eWxlLmRpc3BsYXk9Im5vbmUifSxnZXRJY29uTmFtZXM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5faWNvbnM9dGhpcy5fY3JlYXRlSWNvbk1hcCgpLE9iamVjdC5rZXlzKHRoaXMuX2ljb25zKS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLm5hbWUrIjoiK3R9KSx0aGlzKX0sYXBwbHlJY29uOmZ1bmN0aW9uKHQsZSl7dGhpcy5yZW1vdmVJY29uKHQpO3ZhciBuPXRoaXMuX2Nsb25lSWNvbihlLHRoaXMucnRsTWlycm9yaW5nJiZ0aGlzLl90YXJnZXRJc1JUTCh0KSk7aWYobil7dmFyIGk9ZXIodC5yb290fHx0KTtyZXR1cm4gaS5pbnNlcnRCZWZvcmUobixpLmNoaWxkTm9kZXNbMF0pLHQuX3N2Z0ljb249bn1yZXR1cm4gbnVsbH0scmVtb3ZlSWNvbjpmdW5jdGlvbih0KXt0Ll9zdmdJY29uJiYoZXIodC5yb290fHx0KS5yZW1vdmVDaGlsZCh0Ll9zdmdJY29uKSx0Ll9zdmdJY29uPW51bGwpfSxfdGFyZ2V0SXNSVEw6ZnVuY3Rpb24odCl7aWYobnVsbD09dGhpcy5fX3RhcmdldElzUlRMKWlmKHRoaXMudXNlR2xvYmFsUnRsQXR0cmlidXRlKXt2YXIgZT1kb2N1bWVudC5ib2R5JiZkb2N1bWVudC5ib2R5Lmhhc0F0dHJpYnV0ZSgiZGlyIik/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+MCYmdC5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuX2ZvY3VzUGh5c2ljYWxJdGVtKHRoaXMuX2ZvY3VzZWRWaXJ0dWFsSW5kZXgtKHRoaXMuZ3JpZD90aGlzLl9pdGVtc1BlclJvdzoxKSk7YnJlYWs7Y2FzZSAzNzp0aGlzLmdyaWQmJnRoaXMuX2ZvY3VzUGh5c2ljYWxJdGVtKHRoaXMuX2ZvY3VzZWRWaXJ0dWFsSW5kZXgrKHRoaXMuX2lzUlRMPzE6LTEpKTticmVhaztjYXNlIDEzOnRoaXMuX2ZvY3VzUGh5c2ljYWxJdGVtKHRoaXMuX2ZvY3VzZWRWaXJ0dWFsSW5kZXgpLHRoaXMuc2VsZWN0aW9uRW5hYmxlZCYmdGhpcy5fc2VsZWN0aW9uSGFuZGxlcih0KX19LF9jbGFtcDpmdW5jdGlvbih0LGUsbil7cmV0dXJuIE1hdGgubWluKG4sTWF0aC5tYXgoZSx0KSl9LF9kZWJvdW5jZTpmdW5jdGlvbih0LGUsbil7dGhpcy5fZGVib3VuY2Vycz10aGlzLl9kZWJvdW5jZXJzfHx7fSx0aGlzLl9kZWJvdW5jZXJzW3RdPU5uLmRlYm91bmNlKHRoaXMuX2RlYm91bmNlcnNbdF0sbixlLmJpbmQodGhpcykpLFJuKHRoaXMuX2RlYm91bmNlcnNbdF0pfSxfZm9yd2FyZFByb3BlcnR5OmZ1bmN0aW9uKHQsZSxuKXt0Ll9zZXRQZW5kaW5nUHJvcGVydHkoZSxuKX0sX2ZvcndhcmRIb3N0UHJvcFYyOmZ1bmN0aW9uKHQsZSl7KHRoaXMuX3BoeXNpY2FsSXRlbXN8fFtdKS5jb25jYXQoW3RoaXMuX29mZnNjcmVlbkZvY3VzZWRJdGVtLHRoaXMuX2ZvY3VzQmFja2ZpbGxJdGVtXSkuZm9yRWFjaCgoZnVuY3Rpb24obil7biYmdGhpcy5tb2RlbEZvckVsZW1lbnQobikuZm9yd2FyZEhvc3RQcm9wKHQsZSl9KSx0aGlzKX0sX25vdGlmeUluc3RhbmNlUHJvcFYyOmZ1bmN0aW9uKHQsZSxuKXtpZihRKHRoaXMuYXMsZSkpe3ZhciBpPXRbdGhpcy5pbmRleEFzXTtlPT10aGlzLmFzJiYodGhpcy5pdGVtc1tpXT1uKSx0aGlzLm5vdGlmeVBhdGgoSih0aGlzLmFzLCJpdGVtcy4iK2ksZSksbil9fSxfZ2V0U3RhbXBlZENoaWxkcmVuOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3BoeXNpY2FsSXRlbXN9LF9mb3J3YXJkSW5zdGFuY2VQYXRoOmZ1bmN0aW9uKHQsZSxuKXswPT09ZS5pbmRleE9mKHRoaXMuYXMrIi4iKSYmdGhpcy5ub3RpZnlQYXRoKCJpdGVtcy4iK3QuX19rZXlfXysiLiIrZS5zbGljZSh0aGlzLmFzLmxlbmd0aCsxKSxuKX0sX2ZvcndhcmRQYXJlbnRQYXRoOmZ1bmN0aW9uKHQsZSl7KHRoaXMuX3BoeXNpY2FsSXRlbXN8fFtdKS5jb25jYXQoW3RoaXMuX29mZnNjcmVlbkZvY3VzZWRJdGVtLHRoaXMuX2ZvY3VzQmFja2ZpbGxJdGVtXSkuZm9yRWFjaCgoZnVuY3Rpb24obil7biYmdGhpcy5tb2RlbEZvckVsZW1lbnQobikubm90aWZ5UGF0aCh0LGUpfSksdGhpcyl9LF9mb3J3YXJkUGFyZW50UHJvcDpmdW5jdGlvbih0LGUpeyh0aGlzLl9waHlzaWNhbEl0ZW1zfHxbXSkuY29uY2F0KFt0aGlzLl9vZmZzY3JlZW5Gb2N1c2VkSXRlbSx0aGlzLl9mb2N1c0JhY2tmaWxsSXRlbV0pLmZvckVhY2goKGZ1bmN0aW9uKG4pe24mJih0aGlzLm1vZGVsRm9yRWxlbWVudChuKVt0XT1lKX0pLHRoaXMpfSxfZ2V0QWN0aXZlRWxlbWVudDpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX2l0ZW1zUGFyZW50Lm5vZGUuZG9tSG9zdDtyZXR1cm4gZXIodD90LnJvb3Q6ZG9jdW1lbnQpLmFjdGl2ZUVsZW1lbnR9fSk7Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNSBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlCiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcwogICAgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudAogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwpjbGFzcyB0YXtjb25zdHJ1Y3Rvcih0KXt0aGlzLnNlbGVjdGlvbj1bXSx0aGlzLnNlbGVjdENhbGxiYWNrPXR9Z2V0KCl7cmV0dXJuIHRoaXMubXVsdGk/dGhpcy5zZWxlY3Rpb24uc2xpY2UoKTp0aGlzLnNlbGVjdGlvblswXX1jbGVhcih0KXt0aGlzLnNlbGVjdGlvbi5zbGljZSgpLmZvckVhY2goKGZ1bmN0aW9uKGUpeyghdHx8dC5pbmRleE9mKGUpPDApJiZ0aGlzLnNldEl0ZW1TZWxlY3RlZChlLCExKX0pLHRoaXMpfWlzU2VsZWN0ZWQodCl7cmV0dXJuIHRoaXMuc2VsZWN0aW9uLmluZGV4T2YodCk+PTB9c2V0SXRlbVNlbGVjdGVkKHQsZSl7aWYobnVsbCE9dCYmZSE9PXRoaXMuaXNTZWxlY3RlZCh0KSl7aWYoZSl0aGlzLnNlbGVjdGlvbi5wdXNoKHQpO2Vsc2V7dmFyIG49dGhpcy5zZWxlY3Rpb24uaW5kZXhPZih0KTtuPj0wJiZ0aGlzLnNlbGVjdGlvbi5zcGxpY2UobiwxKX10aGlzLnNlbGVjdENhbGxiYWNrJiZ0aGlzLnNlbGVjdENhbGxiYWNrKHQsZSl9fXNlbGVjdCh0KXt0aGlzLm11bHRpP3RoaXMudG9nZ2xlKHQpOnRoaXMuZ2V0KCkhPT10JiYodGhpcy5zZXRJdGVtU2VsZWN0ZWQodGhpcy5nZXQoKSwhMSksdGhpcy5zZXRJdGVtU2VsZWN0ZWQodCwhMCkpfXRvZ2dsZSh0KXt0aGlzLnNldEl0ZW1TZWxlY3RlZCh0LCF0aGlzLmlzU2VsZWN0ZWQodCkpfX0KLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzCiAgICBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50CiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovY29uc3QgZWE9e3Byb3BlcnRpZXM6e2F0dHJGb3JTZWxlY3RlZDp7dHlwZTpTdHJpbmcsdmFsdWU6bnVsbH0sc2VsZWN0ZWQ6e3R5cGU6U3RyaW5nLG5vdGlmeTohMH0sc2VsZWN0ZWRJdGVtOnt0eXBlOk9iamVjdCxyZWFkT25seTohMCxub3RpZnk6ITB9LGFjdGl2YXRlRXZlbnQ6e3R5cGU6U3RyaW5nLHZhbHVlOiJ0YXAiLG9ic2VydmVyOiJfYWN0aXZhdGVFdmVudENoYW5nZWQifSxzZWxlY3RhYmxlOlN0cmluZyxzZWxlY3RlZENsYXNzOnt0eXBlOlN0cmluZyx2YWx1ZToiaXJvbi1zZWxlY3RlZCJ9LHNlbGVjdGVkQXR0cmlidXRlOnt0eXBlOlN0cmluZyx2YWx1ZTpudWxsfSxmYWxsYmFja1NlbGVjdGlvbjp7dHlwZTpTdHJpbmcsdmFsdWU6bnVsbH0saXRlbXM6e3R5cGU6QXJyYXkscmVhZE9ubHk6ITAsbm90aWZ5OiEwLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuW119fSxfZXhjbHVkZWRMb2NhbE5hbWVzOnt0eXBlOk9iamVjdCx2YWx1ZTpmdW5jdGlvbigpe3JldHVybnt0ZW1wbGF0ZToxLCJkb20tYmluZCI6MSwiZG9tLWlmIjoxLCJkb20tcmVwZWF0IjoxfX19fSxvYnNlcnZlcnM6WyJfdXBkYXRlQXR0ckZvclNlbGVjdGVkKGF0dHJGb3JTZWxlY3RlZCkiLCJfdXBkYXRlU2VsZWN0ZWQoc2VsZWN0ZWQpIiwiX2NoZWNrRmFsbGJhY2soZmFsbGJhY2tTZWxlY3Rpb24pIl0sY3JlYXRlZDpmdW5jdGlvbigpe3RoaXMuX2JpbmRGaWx0ZXJJdGVtPXRoaXMuX2ZpbHRlckl0ZW0uYmluZCh0aGlzKSx0aGlzLl9zZWxlY3Rpb249bmV3IHRhKHRoaXMuX2FwcGx5U2VsZWN0aW9uLmJpbmQodGhpcykpfSxhdHRhY2hlZDpmdW5jdGlvbigpe3RoaXMuX29ic2VydmVyPXRoaXMuX29ic2VydmVJdGVtcyh0aGlzKSx0aGlzLl9hZGRMaXN0ZW5lcih0aGlzLmFjdGl2YXRlRXZlbnQpfSxkZXRhY2hlZDpmdW5jdGlvbigpe3RoaXMuX29ic2VydmVyJiZlcih0aGlzKS51bm9ic2VydmVOb2Rlcyh0aGlzLl9vYnNlcnZlciksdGhpcy5fcmVtb3ZlTGlzdGVuZXIodGhpcy5hY3RpdmF0ZUV2ZW50KX0saW5kZXhPZjpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5pdGVtcz90aGlzLml0ZW1zLmluZGV4T2YodCk6LTF9LHNlbGVjdDpmdW5jdGlvbih0KXt0aGlzLnNlbGVjdGVkPXR9LHNlbGVjdFByZXZpb3VzOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5pdGVtcy5sZW5ndGgsZT10LTE7dm9pZCAwIT09dGhpcy5zZWxlY3RlZCYmKGU9KE51bWJlcih0aGlzLl92YWx1ZVRvSW5kZXgodGhpcy5zZWxlY3RlZCkpLTErdCkldCksdGhpcy5zZWxlY3RlZD10aGlzLl9pbmRleFRvVmFsdWUoZSl9LHNlbGVjdE5leHQ6ZnVuY3Rpb24oKXt2YXIgdD0wO3ZvaWQgMCE9PXRoaXMuc2VsZWN0ZWQmJih0PShOdW1iZXIodGhpcy5fdmFsdWVUb0luZGV4KHRoaXMuc2VsZWN0ZWQpKSsxKSV0aGlzLml0ZW1zLmxlbmd0aCksdGhpcy5zZWxlY3RlZD10aGlzLl9pbmRleFRvVmFsdWUodCl9LHNlbGVjdEluZGV4OmZ1bmN0aW9uKHQpe3RoaXMuc2VsZWN0KHRoaXMuX2luZGV4VG9WYWx1ZSh0KSl9LGZvcmNlU3luY2hyb25vdXNJdGVtVXBkYXRlOmZ1bmN0aW9uKCl7dGhpcy5fb2JzZXJ2ZXImJiJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzLl9vYnNlcnZlci5mbHVzaD90aGlzLl9vYnNlcnZlci5mbHVzaCgpOnRoaXMuX3VwZGF0ZUl0ZW1zKCl9LGdldCBfc2hvdWxkVXBkYXRlU2VsZWN0aW9uKCl7cmV0dXJuIG51bGwhPXRoaXMuc2VsZWN0ZWR9LF9jaGVja0ZhbGxiYWNrOmZ1bmN0aW9uKCl7dGhpcy5fdXBkYXRlU2VsZWN0ZWQoKX0sX2FkZExpc3RlbmVyOmZ1bmN0aW9uKHQpe3RoaXMubGlzdGVuKHRoaXMsdCwiX2FjdGl2YXRlSGFuZGxlciIpfSxfcmVtb3ZlTGlzdGVuZXI6ZnVuY3Rpb24odCl7dGhpcy51bmxpc3Rlbih0aGlzLHQsIl9hY3RpdmF0ZUhhbmRsZXIiKX0sX2FjdGl2YXRlRXZlbnRDaGFuZ2VkOmZ1bmN0aW9uKHQsZSl7dGhpcy5fcmVtb3ZlTGlzdGVuZXIoZSksdGhpcy5fYWRkTGlzdGVuZXIodCl9LF91cGRhdGVJdGVtczpmdW5jdGlvbigpe3ZhciB0PWVyKHRoaXMpLnF1ZXJ5RGlzdHJpYnV0ZWRFbGVtZW50cyh0aGlzLnNlbGVjdGFibGV8fCIqIik7dD1BcnJheS5wcm90b3R5cGUuZmlsdGVyLmNhbGwodCx0aGlzLl9iaW5kRmlsdGVySXRlbSksdGhpcy5fc2V0SXRlbXModCl9LF91cGRhdGVBdHRyRm9yU2VsZWN0ZWQ6ZnVuY3Rpb24oKXt0aGlzLnNlbGVjdGVkSXRlbSYmKHRoaXMuc2VsZWN0ZWQ9dGhpcy5fdmFsdWVGb3JJdGVtKHRoaXMuc2VsZWN0ZWRJdGVtKSl9LF91cGRhdGVTZWxlY3RlZDpmdW5jdGlvbigpe3RoaXMuX3NlbGVjdFNlbGVjdGVkKHRoaXMuc2VsZWN0ZWQpfSxfc2VsZWN0U2VsZWN0ZWQ6ZnVuY3Rpb24odCl7aWYodGhpcy5pdGVtcyl7dmFyIGU9dGhpcy5fdmFsdWVUb0l0ZW0odGhpcy5zZWxlY3RlZCk7ZT90aGlzLl9zZWxlY3Rpb24uc2VsZWN0KGUpOnRoaXMuX3NlbGVjdGlvbi5jbGVhcigpLHRoaXMuZmFsbGJhY2tTZWxlY3Rpb24mJnRoaXMuaXRlbXMubGVuZ3RoJiZ2b2lkIDA9PT10aGlzLl9zZWxlY3Rpb24uZ2V0KCkmJih0aGlzLnNlbGVjdGVkPXRoaXMuZmFsbGJhY2tTZWxlY3Rpb24pfX0sX2ZpbHRlckl0ZW06ZnVuY3Rpb24odCl7cmV0dXJuIXRoaXMuX2V4Y2x1ZGVkTG9jYWxOYW1lc1t0LmxvY2FsTmFtZV19LF92YWx1ZVRvSXRlbTpmdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD9udWxsOnRoaXMuaXRlbXNbdGhpcy5fdmFsdWVUb0luZGV4KHQpXX0sX3ZhbHVlVG9JbmRleDpmdW5jdGlvbih0KXtpZighdGhpcy5hdHRyRm9yU2VsZWN0ZWQpcmV0dXJuIE51bWJlcih0KTtmb3IodmFyIGUsbj0wO2U9dGhpcy5pdGVtc1tuXTtuKyspaWYodGhpcy5fdmFsdWVGb3JJdGVtKGUpPT10KXJldHVybiBufSxfaW5kZXhUb1ZhbHVlOmZ1bmN0aW9uKHQpe2lmKCF0aGlzLmF0dHJGb3JTZWxlY3RlZClyZXR1cm4gdDt2YXIgZT10aGlzLml0ZW1zW3RdO3JldHVybiBlP3RoaXMuX3ZhbHVlRm9ySXRlbShlKTp2b2lkIDB9LF92YWx1ZUZvckl0ZW06ZnVuY3Rpb24odCl7aWYoIXQpcmV0dXJuIG51bGw7aWYoIXRoaXMuYXR0ckZvclNlbGVjdGVkKXt2YXIgZT10aGlzLmluZGV4T2YodCk7cmV0dXJuLTE9PT1lP251bGw6ZX12YXIgbj10W3N0KHRoaXMuYXR0ckZvclNlbGVjdGVkKV07cmV0dXJuIG51bGwhPW4/bjp0LmdldEF0dHJpYnV0ZSh0aGlzLmF0dHJGb3JTZWxlY3RlZCl9LF9hcHBseVNlbGVjdGlvbjpmdW5jdGlvbih0LGUpe3RoaXMuc2VsZWN0ZWRDbGFzcyYmdGhpcy50b2dnbGVDbGFzcyh0aGlzLnNlbGVjdGVkQ2xhc3MsZSx0KSx0aGlzLnNlbGVjdGVkQXR0cmlidXRlJiZ0aGlzLnRvZ2dsZUF0dHJpYnV0ZSh0aGlzLnNlbGVjdGVkQXR0cmlidXRlLGUsdCksdGhpcy5fc2VsZWN0aW9uQ2hhbmdlKCksdGhpcy5maXJlKCJpcm9uLSIrKGU/InNlbGVjdCI6ImRlc2VsZWN0Iikse2l0ZW06dH0pfSxfc2VsZWN0aW9uQ2hhbmdlOmZ1bmN0aW9uKCl7dGhpcy5fc2V0U2VsZWN0ZWRJdGVtKHRoaXMuX3NlbGVjdGlvbi5nZXQoKSl9LF9vYnNlcnZlSXRlbXM6ZnVuY3Rpb24odCl7cmV0dXJuIGVyKHQpLm9ic2VydmVOb2RlcygoZnVuY3Rpb24odCl7dGhpcy5fdXBkYXRlSXRlbXMoKSx0aGlzLl91cGRhdGVTZWxlY3RlZCgpLHRoaXMuZmlyZSgiaXJvbi1pdGVtcy1jaGFuZ2VkIix0LHtidWJibGVzOiExLGNhbmNlbGFibGU6ITF9KX0pKX0sX2FjdGl2YXRlSGFuZGxlcjpmdW5jdGlvbih0KXtmb3IodmFyIGU9dC50YXJnZXQsbj10aGlzLml0ZW1zO2UmJmUhPXRoaXM7KXt2YXIgaT1uLmluZGV4T2YoZSk7aWYoaT49MCl7dmFyIHI9dGhpcy5faW5kZXhUb1ZhbHVlKGkpO3JldHVybiB2b2lkIHRoaXMuX2l0ZW1BY3RpdmF0ZShyLGUpfWU9ZS5wYXJlbnROb2RlfX0sX2l0ZW1BY3RpdmF0ZTpmdW5jdGlvbih0LGUpe3RoaXMuZmlyZSgiaXJvbi1hY3RpdmF0ZSIse3NlbGVjdGVkOnQsaXRlbTplfSx7Y2FuY2VsYWJsZTohMH0pLmRlZmF1bHRQcmV2ZW50ZWR8fHRoaXMuc2VsZWN0KHQpfX07Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNSBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlCiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcwogICAgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudAogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqL2pyKHtfdGVtcGxhdGU6eGVgCiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgfQoKICAgICAgOmhvc3QgPiA6OnNsb3R0ZWQoOm5vdChzbG90KTpub3QoLmlyb24tc2VsZWN0ZWQpKSB7CiAgICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OwogICAgICB9CiAgICA8L3N0eWxlPgoKICAgIDxzbG90Pjwvc2xvdD4KYCxpczoiaXJvbi1wYWdlcyIsYmVoYXZpb3JzOltDbyxlYV0scHJvcGVydGllczp7YWN0aXZhdGVFdmVudDp7dHlwZTpTdHJpbmcsdmFsdWU6bnVsbH19LG9ic2VydmVyczpbIl9zZWxlY3RlZFBhZ2VDaGFuZ2VkKHNlbGVjdGVkKSJdLF9zZWxlY3RlZFBhZ2VDaGFuZ2VkOmZ1bmN0aW9uKHQsZSl7dGhpcy5hc3luYyh0aGlzLm5vdGlmeVJlc2l6ZSl9fSk7Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNSBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlCiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcwogICAgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudAogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwpjb25zdCBuYT14ZWAKPGN1c3RvbS1zdHlsZT4KICA8c3R5bGUgaXM9ImN1c3RvbS1zdHlsZSI+CiAgICBodG1sIHsKCiAgICAgIC0tc2hhZG93LXRyYW5zaXRpb246IHsKICAgICAgICB0cmFuc2l0aW9uOiBib3gtc2hhZG93IDAuMjhzIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSk7CiAgICAgIH07CgogICAgICAtLXNoYWRvdy1ub25lOiB7CiAgICAgICAgYm94LXNoYWRvdzogbm9uZTsKICAgICAgfTsKCiAgICAgIC8qIGZyb20gaHR0cDovL2NvZGVwZW4uaW8vc2h5bmRtYW4vcGVuL2M1Mzk0ZGRmMmU4YjJhNWM5MTg1OTA0YjU3NDIxY2RiICovCgogICAgICAtLXNoYWRvdy1lbGV2YXRpb24tMmRwOiB7CiAgICAgICAgYm94LXNoYWRvdzogMCAycHggMnB4IDAgcmdiYSgwLCAwLCAwLCAwLjE0KSwKICAgICAgICAgICAgICAgICAgICAwIDFweCA1cHggMCByZ2JhKDAsIDAsIDAsIDAuMTIpLAogICAgICAgICAgICAgICAgICAgIDAgM3B4IDFweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKTsKICAgICAgfTsKCiAgICAgIC0tc2hhZG93LWVsZXZhdGlvbi0zZHA6IHsKICAgICAgICBib3gtc2hhZG93OiAwIDNweCA0cHggMCByZ2JhKDAsIDAsIDAsIDAuMTQpLAogICAgICAgICAgICAgICAgICAgIDAgMXB4IDhweCAwIHJnYmEoMCwgMCwgMCwgMC4xMiksCiAgICAgICAgICAgICAgICAgICAgMCAzcHggM3B4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjQpOwogICAgICB9OwoKICAgICAgLS1zaGFkb3ctZWxldmF0aW9uLTRkcDogewogICAgICAgIGJveC1zaGFkb3c6IDAgNHB4IDVweCAwIHJnYmEoMCwgMCwgMCwgMC4xNCksCiAgICAgICAgICAgICAgICAgICAgMCAxcHggMTBweCAwIHJnYmEoMCwgMCwgMCwgMC4xMiksCiAgICAgICAgICAgICAgICAgICAgMCAycHggNHB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjQpOwogICAgICB9OwoKICAgICAgLS1zaGFkb3ctZWxldmF0aW9uLTZkcDogewogICAgICAgIGJveC1zaGFkb3c6IDAgNnB4IDEwcHggMCByZ2JhKDAsIDAsIDAsIDAuMTQpLAogICAgICAgICAgICAgICAgICAgIDAgMXB4IDE4cHggMCByZ2JhKDAsIDAsIDAsIDAuMTIpLAogICAgICAgICAgICAgICAgICAgIDAgM3B4IDVweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC40KTsKICAgICAgfTsKCiAgICAgIC0tc2hhZG93LWVsZXZhdGlvbi04ZHA6IHsKICAgICAgICBib3gtc2hhZG93OiAwIDhweCAxMHB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMTQpLAogICAgICAgICAgICAgICAgICAgIDAgM3B4IDE0cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xMiksCiAgICAgICAgICAgICAgICAgICAgMCA1cHggNXB4IC0zcHggcmdiYSgwLCAwLCAwLCAwLjQpOwogICAgICB9OwoKICAgICAgLS1zaGFkb3ctZWxldmF0aW9uLTEyZHA6IHsKICAgICAgICBib3gtc2hhZG93OiAwIDEycHggMTZweCAxcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwKICAgICAgICAgICAgICAgICAgICAwIDRweCAyMnB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTIpLAogICAgICAgICAgICAgICAgICAgIDAgNnB4IDdweCAtNHB4IHJnYmEoMCwgMCwgMCwgMC40KTsKICAgICAgfTsKCiAgICAgIC0tc2hhZG93LWVsZXZhdGlvbi0xNmRwOiB7CiAgICAgICAgYm94LXNoYWRvdzogMCAxNnB4IDI0cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksCiAgICAgICAgICAgICAgICAgICAgMCAgNnB4IDMwcHggNXB4IHJnYmEoMCwgMCwgMCwgMC4xMiksCiAgICAgICAgICAgICAgICAgICAgMCAgOHB4IDEwcHggLTVweCByZ2JhKDAsIDAsIDAsIDAuNCk7CiAgICAgIH07CgogICAgICAtLXNoYWRvdy1lbGV2YXRpb24tMjRkcDogewogICAgICAgIGJveC1zaGFkb3c6IDAgMjRweCAzOHB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTQpLAogICAgICAgICAgICAgICAgICAgIDAgOXB4IDQ2cHggOHB4IHJnYmEoMCwgMCwgMCwgMC4xMiksCiAgICAgICAgICAgICAgICAgICAgMCAxMXB4IDE1cHggLTdweCByZ2JhKDAsIDAsIDAsIDAuNCk7CiAgICAgIH07CiAgICB9CiAgPC9zdHlsZT4KPC9jdXN0b20tc3R5bGU+YDtuYS5zZXRBdHRyaWJ1dGUoInN0eWxlIiwiZGlzcGxheTogbm9uZTsiKSxkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKG5hLmNvbnRlbnQpOwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTcgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZQogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMKICAgIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KY29uc3QgaWE9eGVgCjxkb20tbW9kdWxlIGlkPSJwYXBlci1tYXRlcmlhbC1zdHlsZXMiPgogIDx0ZW1wbGF0ZT4KICAgIDxzdHlsZT4KICAgICAgaHRtbCB7CiAgICAgICAgLS1wYXBlci1tYXRlcmlhbDogewogICAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgfTsKICAgICAgICAtLXBhcGVyLW1hdGVyaWFsLWVsZXZhdGlvbi0xOiB7CiAgICAgICAgICBAYXBwbHkgLS1zaGFkb3ctZWxldmF0aW9uLTJkcDsKICAgICAgICB9OwogICAgICAgIC0tcGFwZXItbWF0ZXJpYWwtZWxldmF0aW9uLTI6IHsKICAgICAgICAgIEBhcHBseSAtLXNoYWRvdy1lbGV2YXRpb24tNGRwOwogICAgICAgIH07CiAgICAgICAgLS1wYXBlci1tYXRlcmlhbC1lbGV2YXRpb24tMzogewogICAgICAgICAgQGFwcGx5IC0tc2hhZG93LWVsZXZhdGlvbi02ZHA7CiAgICAgICAgfTsKICAgICAgICAtLXBhcGVyLW1hdGVyaWFsLWVsZXZhdGlvbi00OiB7CiAgICAgICAgICBAYXBwbHkgLS1zaGFkb3ctZWxldmF0aW9uLThkcDsKICAgICAgICB9OwogICAgICAgIC0tcGFwZXItbWF0ZXJpYWwtZWxldmF0aW9uLTU6IHsKICAgICAgICAgIEBhcHBseSAtLXNoYWRvdy1lbGV2YXRpb24tMTZkcDsKICAgICAgICB9OwogICAgICB9CiAgICAgIC5wYXBlci1tYXRlcmlhbCB7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItbWF0ZXJpYWw7CiAgICAgIH0KICAgICAgLnBhcGVyLW1hdGVyaWFsW2VsZXZhdGlvbj0iMSJdIHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1tYXRlcmlhbC1lbGV2YXRpb24tMTsKICAgICAgfQogICAgICAucGFwZXItbWF0ZXJpYWxbZWxldmF0aW9uPSIyIl0gewogICAgICAgIEBhcHBseSAtLXBhcGVyLW1hdGVyaWFsLWVsZXZhdGlvbi0yOwogICAgICB9CiAgICAgIC5wYXBlci1tYXRlcmlhbFtlbGV2YXRpb249IjMiXSB7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItbWF0ZXJpYWwtZWxldmF0aW9uLTM7CiAgICAgIH0KICAgICAgLnBhcGVyLW1hdGVyaWFsW2VsZXZhdGlvbj0iNCJdIHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1tYXRlcmlhbC1lbGV2YXRpb24tNDsKICAgICAgfQogICAgICAucGFwZXItbWF0ZXJpYWxbZWxldmF0aW9uPSI1Il0gewogICAgICAgIEBhcHBseSAtLXBhcGVyLW1hdGVyaWFsLWVsZXZhdGlvbi01OwogICAgICB9CgogICAgICAvKiBEdXBsaWNhdGUgdGhlIHN0eWxlcyBiZWNhdXNlIG9mIGh0dHBzOi8vZ2l0aHViLmNvbS93ZWJjb21wb25lbnRzL3NoYWR5Y3NzL2lzc3Vlcy8xOTMgKi8KICAgICAgOmhvc3QgewogICAgICAgIC0tcGFwZXItbWF0ZXJpYWw6IHsKICAgICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIH07CiAgICAgICAgLS1wYXBlci1tYXRlcmlhbC1lbGV2YXRpb24tMTogewogICAgICAgICAgQGFwcGx5IC0tc2hhZG93LWVsZXZhdGlvbi0yZHA7CiAgICAgICAgfTsKICAgICAgICAtLXBhcGVyLW1hdGVyaWFsLWVsZXZhdGlvbi0yOiB7CiAgICAgICAgICBAYXBwbHkgLS1zaGFkb3ctZWxldmF0aW9uLTRkcDsKICAgICAgICB9OwogICAgICAgIC0tcGFwZXItbWF0ZXJpYWwtZWxldmF0aW9uLTM6IHsKICAgICAgICAgIEBhcHBseSAtLXNoYWRvdy1lbGV2YXRpb24tNmRwOwogICAgICAgIH07CiAgICAgICAgLS1wYXBlci1tYXRlcmlhbC1lbGV2YXRpb24tNDogewogICAgICAgICAgQGFwcGx5IC0tc2hhZG93LWVsZXZhdGlvbi04ZHA7CiAgICAgICAgfTsKICAgICAgICAtLXBhcGVyLW1hdGVyaWFsLWVsZXZhdGlvbi01OiB7CiAgICAgICAgICBAYXBwbHkgLS1zaGFkb3ctZWxldmF0aW9uLTE2ZHA7CiAgICAgICAgfTsKICAgICAgfQogICAgICA6aG9zdCgucGFwZXItbWF0ZXJpYWwpIHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1tYXRlcmlhbDsKICAgICAgfQogICAgICA6aG9zdCgucGFwZXItbWF0ZXJpYWxbZWxldmF0aW9uPSIxIl0pIHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1tYXRlcmlhbC1lbGV2YXRpb24tMTsKICAgICAgfQogICAgICA6aG9zdCgucGFwZXItbWF0ZXJpYWxbZWxldmF0aW9uPSIyIl0pIHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1tYXRlcmlhbC1lbGV2YXRpb24tMjsKICAgICAgfQogICAgICA6aG9zdCgucGFwZXItbWF0ZXJpYWxbZWxldmF0aW9uPSIzIl0pIHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1tYXRlcmlhbC1lbGV2YXRpb24tMzsKICAgICAgfQogICAgICA6aG9zdCgucGFwZXItbWF0ZXJpYWxbZWxldmF0aW9uPSI0Il0pIHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1tYXRlcmlhbC1lbGV2YXRpb24tNDsKICAgICAgfQogICAgICA6aG9zdCgucGFwZXItbWF0ZXJpYWxbZWxldmF0aW9uPSI1Il0pIHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1tYXRlcmlhbC1lbGV2YXRpb24tNTsKICAgICAgfQogICAgPC9zdHlsZT4KICA8L3RlbXBsYXRlPgo8L2RvbS1tb2R1bGU+YDtpYS5zZXRBdHRyaWJ1dGUoInN0eWxlIiwiZGlzcGxheTogbm9uZTsiKSxkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKGlhLmNvbnRlbnQpOwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZQogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMKICAgIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KY29uc3QgcmE9e3Byb3BlcnRpZXM6e2ZvY3VzZWQ6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMSxub3RpZnk6ITAscmVhZE9ubHk6ITAscmVmbGVjdFRvQXR0cmlidXRlOiEwfSxkaXNhYmxlZDp7dHlwZTpCb29sZWFuLHZhbHVlOiExLG5vdGlmeTohMCxvYnNlcnZlcjoiX2Rpc2FibGVkQ2hhbmdlZCIscmVmbGVjdFRvQXR0cmlidXRlOiEwfSxfb2xkVGFiSW5kZXg6e3R5cGU6U3RyaW5nfSxfYm91bmRGb2N1c0JsdXJIYW5kbGVyOnt0eXBlOkZ1bmN0aW9uLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2ZvY3VzQmx1ckhhbmRsZXIuYmluZCh0aGlzKX19fSxvYnNlcnZlcnM6WyJfY2hhbmdlZENvbnRyb2xTdGF0ZShmb2N1c2VkLCBkaXNhYmxlZCkiXSxyZWFkeTpmdW5jdGlvbigpe3RoaXMuYWRkRXZlbnRMaXN0ZW5lcigiZm9jdXMiLHRoaXMuX2JvdW5kRm9jdXNCbHVySGFuZGxlciwhMCksdGhpcy5hZGRFdmVudExpc3RlbmVyKCJibHVyIix0aGlzLl9ib3VuZEZvY3VzQmx1ckhhbmRsZXIsITApfSxfZm9jdXNCbHVySGFuZGxlcjpmdW5jdGlvbih0KXt0aGlzLl9zZXRGb2N1c2VkKCJmb2N1cyI9PT10LnR5cGUpfSxfZGlzYWJsZWRDaGFuZ2VkOmZ1bmN0aW9uKHQsZSl7dGhpcy5zZXRBdHRyaWJ1dGUoImFyaWEtZGlzYWJsZWQiLHQ/InRydWUiOiJmYWxzZSIpLHRoaXMuc3R5bGUucG9pbnRlckV2ZW50cz10PyJub25lIjoiIix0Pyh0aGlzLl9vbGRUYWJJbmRleD10aGlzLmdldEF0dHJpYnV0ZSgidGFiaW5kZXgiKSx0aGlzLl9zZXRGb2N1c2VkKCExKSx0aGlzLnRhYkluZGV4PS0xLHRoaXMuYmx1cigpKTp2b2lkIDAhPT10aGlzLl9vbGRUYWJJbmRleCYmKG51bGw9PT10aGlzLl9vbGRUYWJJbmRleD90aGlzLnJlbW92ZUF0dHJpYnV0ZSgidGFiaW5kZXgiKTp0aGlzLnNldEF0dHJpYnV0ZSgidGFiaW5kZXgiLHRoaXMuX29sZFRhYkluZGV4KSl9LF9jaGFuZ2VkQ29udHJvbFN0YXRlOmZ1bmN0aW9uKCl7dGhpcy5fY29udHJvbFN0YXRlQ2hhbmdlZCYmdGhpcy5fY29udHJvbFN0YXRlQ2hhbmdlZCgpfX0sb2E9e3Byb3BlcnRpZXM6e3ByZXNzZWQ6e3R5cGU6Qm9vbGVhbixyZWFkT25seTohMCx2YWx1ZTohMSxyZWZsZWN0VG9BdHRyaWJ1dGU6ITAsb2JzZXJ2ZXI6Il9wcmVzc2VkQ2hhbmdlZCJ9LHRvZ2dsZXM6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMSxyZWZsZWN0VG9BdHRyaWJ1dGU6ITB9LGFjdGl2ZTp7dHlwZTpCb29sZWFuLHZhbHVlOiExLG5vdGlmeTohMCxyZWZsZWN0VG9BdHRyaWJ1dGU6ITB9LHBvaW50ZXJEb3duOnt0eXBlOkJvb2xlYW4scmVhZE9ubHk6ITAsdmFsdWU6ITF9LHJlY2VpdmVkRm9jdXNGcm9tS2V5Ym9hcmQ6e3R5cGU6Qm9vbGVhbixyZWFkT25seTohMH0sYXJpYUFjdGl2ZUF0dHJpYnV0ZTp7dHlwZTpTdHJpbmcsdmFsdWU6ImFyaWEtcHJlc3NlZCIsb2JzZXJ2ZXI6Il9hcmlhQWN0aXZlQXR0cmlidXRlQ2hhbmdlZCJ9fSxsaXN0ZW5lcnM6e2Rvd246Il9kb3duSGFuZGxlciIsdXA6Il91cEhhbmRsZXIiLHRhcDoiX3RhcEhhbmRsZXIifSxvYnNlcnZlcnM6WyJfZm9jdXNDaGFuZ2VkKGZvY3VzZWQpIiwiX2FjdGl2ZUNoYW5nZWQoYWN0aXZlLCBhcmlhQWN0aXZlQXR0cmlidXRlKSJdLGtleUJpbmRpbmdzOnsiZW50ZXI6a2V5ZG93biI6Il9hc3luY0NsaWNrIiwic3BhY2U6a2V5ZG93biI6Il9zcGFjZUtleURvd25IYW5kbGVyIiwic3BhY2U6a2V5dXAiOiJfc3BhY2VLZXlVcEhhbmRsZXIifSxfbW91c2VFdmVudFJlOi9ebW91c2UvLF90YXBIYW5kbGVyOmZ1bmN0aW9uKCl7dGhpcy50b2dnbGVzP3RoaXMuX3VzZXJBY3RpdmF0ZSghdGhpcy5hY3RpdmUpOnRoaXMuYWN0aXZlPSExfSxfZm9jdXNDaGFuZ2VkOmZ1bmN0aW9uKHQpe3RoaXMuX2RldGVjdEtleWJvYXJkRm9jdXModCksdHx8dGhpcy5fc2V0UHJlc3NlZCghMSl9LF9kZXRlY3RLZXlib2FyZEZvY3VzOmZ1bmN0aW9uKHQpe3RoaXMuX3NldFJlY2VpdmVkRm9jdXNGcm9tS2V5Ym9hcmQoIXRoaXMucG9pbnRlckRvd24mJnQpfSxfdXNlckFjdGl2YXRlOmZ1bmN0aW9uKHQpe3RoaXMuYWN0aXZlIT09dCYmKHRoaXMuYWN0aXZlPXQsdGhpcy5maXJlKCJjaGFuZ2UiKSl9LF9kb3duSGFuZGxlcjpmdW5jdGlvbih0KXt0aGlzLl9zZXRQb2ludGVyRG93bighMCksdGhpcy5fc2V0UHJlc3NlZCghMCksdGhpcy5fc2V0UmVjZWl2ZWRGb2N1c0Zyb21LZXlib2FyZCghMSl9LF91cEhhbmRsZXI6ZnVuY3Rpb24oKXt0aGlzLl9zZXRQb2ludGVyRG93bighMSksdGhpcy5fc2V0UHJlc3NlZCghMSl9LF9zcGFjZUtleURvd25IYW5kbGVyOmZ1bmN0aW9uKHQpe3ZhciBlPXQuZGV0YWlsLmtleWJvYXJkRXZlbnQsbj1lcihlKS5sb2NhbFRhcmdldDt0aGlzLmlzTGlnaHREZXNjZW5kYW50KG4pfHwoZS5wcmV2ZW50RGVmYXVsdCgpLGUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCksdGhpcy5fc2V0UHJlc3NlZCghMCkpfSxfc3BhY2VLZXlVcEhhbmRsZXI6ZnVuY3Rpb24odCl7dmFyIGU9ZXIodC5kZXRhaWwua2V5Ym9hcmRFdmVudCkubG9jYWxUYXJnZXQ7dGhpcy5pc0xpZ2h0RGVzY2VuZGFudChlKXx8KHRoaXMucHJlc3NlZCYmdGhpcy5fYXN5bmNDbGljaygpLHRoaXMuX3NldFByZXNzZWQoITEpKX0sX2FzeW5jQ2xpY2s6ZnVuY3Rpb24oKXt0aGlzLmFzeW5jKChmdW5jdGlvbigpe3RoaXMuY2xpY2soKX0pLDEpfSxfcHJlc3NlZENoYW5nZWQ6ZnVuY3Rpb24odCl7dGhpcy5fY2hhbmdlZEJ1dHRvblN0YXRlKCl9LF9hcmlhQWN0aXZlQXR0cmlidXRlQ2hhbmdlZDpmdW5jdGlvbih0LGUpe2UmJmUhPXQmJnRoaXMuaGFzQXR0cmlidXRlKGUpJiZ0aGlzLnJlbW92ZUF0dHJpYnV0ZShlKX0sX2FjdGl2ZUNoYW5nZWQ6ZnVuY3Rpb24odCxlKXt0aGlzLnRvZ2dsZXM/dGhpcy5zZXRBdHRyaWJ1dGUodGhpcy5hcmlhQWN0aXZlQXR0cmlidXRlLHQ/InRydWUiOiJmYWxzZSIpOnRoaXMucmVtb3ZlQXR0cmlidXRlKHRoaXMuYXJpYUFjdGl2ZUF0dHJpYnV0ZSksdGhpcy5fY2hhbmdlZEJ1dHRvblN0YXRlKCl9LF9jb250cm9sU3RhdGVDaGFuZ2VkOmZ1bmN0aW9uKCl7dGhpcy5kaXNhYmxlZD90aGlzLl9zZXRQcmVzc2VkKCExKTp0aGlzLl9jaGFuZ2VkQnV0dG9uU3RhdGUoKX0sX2NoYW5nZWRCdXR0b25TdGF0ZTpmdW5jdGlvbigpe3RoaXMuX2J1dHRvblN0YXRlQ2hhbmdlZCYmdGhpcy5fYnV0dG9uU3RhdGVDaGFuZ2VkKCl9fSxhYT1bWG8sb2FdOwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZQogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMKICAgIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE0IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzCiAgICBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50CiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCnZhciBzYT17ZGlzdGFuY2U6ZnVuY3Rpb24odCxlLG4saSl7dmFyIHI9dC1uLG89ZS1pO3JldHVybiBNYXRoLnNxcnQocipyK28qbyl9LG5vdzp3aW5kb3cucGVyZm9ybWFuY2UmJndpbmRvdy5wZXJmb3JtYW5jZS5ub3c/d2luZG93LnBlcmZvcm1hbmNlLm5vdy5iaW5kKHdpbmRvdy5wZXJmb3JtYW5jZSk6RGF0ZS5ub3d9O2Z1bmN0aW9uIGxhKHQpe3RoaXMuZWxlbWVudD10LHRoaXMud2lkdGg9dGhpcy5ib3VuZGluZ1JlY3Qud2lkdGgsdGhpcy5oZWlnaHQ9dGhpcy5ib3VuZGluZ1JlY3QuaGVpZ2h0LHRoaXMuc2l6ZT1NYXRoLm1heCh0aGlzLndpZHRoLHRoaXMuaGVpZ2h0KX1mdW5jdGlvbiBjYSh0KXt0aGlzLmVsZW1lbnQ9dCx0aGlzLmNvbG9yPXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHQpLmNvbG9yLHRoaXMud2F2ZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSx0aGlzLndhdmVDb250YWluZXI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksdGhpcy53YXZlLnN0eWxlLmJhY2tncm91bmRDb2xvcj10aGlzLmNvbG9yLHRoaXMud2F2ZS5jbGFzc0xpc3QuYWRkKCJ3YXZlIiksdGhpcy53YXZlQ29udGFpbmVyLmNsYXNzTGlzdC5hZGQoIndhdmUtY29udGFpbmVyIiksZXIodGhpcy53YXZlQ29udGFpbmVyKS5hcHBlbmRDaGlsZCh0aGlzLndhdmUpLHRoaXMucmVzZXRJbnRlcmFjdGlvblN0YXRlKCl9bGEucHJvdG90eXBlPXtnZXQgYm91bmRpbmdSZWN0KCl7cmV0dXJuIHRoaXMuZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKX0sZnVydGhlc3RDb3JuZXJEaXN0YW5jZUZyb206ZnVuY3Rpb24odCxlKXt2YXIgbj1zYS5kaXN0YW5jZSh0LGUsMCwwKSxpPXNhLmRpc3RhbmNlKHQsZSx0aGlzLndpZHRoLDApLHI9c2EuZGlzdGFuY2UodCxlLDAsdGhpcy5oZWlnaHQpLG89c2EuZGlzdGFuY2UodCxlLHRoaXMud2lkdGgsdGhpcy5oZWlnaHQpO3JldHVybiBNYXRoLm1heChuLGkscixvKX19LGNhLk1BWF9SQURJVVM9MzAwLGNhLnByb3RvdHlwZT17Z2V0IHJlY2VudGVycygpe3JldHVybiB0aGlzLmVsZW1lbnQucmVjZW50ZXJzfSxnZXQgY2VudGVyKCl7cmV0dXJuIHRoaXMuZWxlbWVudC5jZW50ZXJ9LGdldCBtb3VzZURvd25FbGFwc2VkKCl7dmFyIHQ7cmV0dXJuIHRoaXMubW91c2VEb3duU3RhcnQ/KHQ9c2Eubm93KCktdGhpcy5tb3VzZURvd25TdGFydCx0aGlzLm1vdXNlVXBTdGFydCYmKHQtPXRoaXMubW91c2VVcEVsYXBzZWQpLHQpOjB9LGdldCBtb3VzZVVwRWxhcHNlZCgpe3JldHVybiB0aGlzLm1vdXNlVXBTdGFydD9zYS5ub3coKS10aGlzLm1vdXNlVXBTdGFydDowfSxnZXQgbW91c2VEb3duRWxhcHNlZFNlY29uZHMoKXtyZXR1cm4gdGhpcy5tb3VzZURvd25FbGFwc2VkLzFlM30sZ2V0IG1vdXNlVXBFbGFwc2VkU2Vjb25kcygpe3JldHVybiB0aGlzLm1vdXNlVXBFbGFwc2VkLzFlM30sZ2V0IG1vdXNlSW50ZXJhY3Rpb25TZWNvbmRzKCl7cmV0dXJuIHRoaXMubW91c2VEb3duRWxhcHNlZFNlY29uZHMrdGhpcy5tb3VzZVVwRWxhcHNlZFNlY29uZHN9LGdldCBpbml0aWFsT3BhY2l0eSgpe3JldHVybiB0aGlzLmVsZW1lbnQuaW5pdGlhbE9wYWNpdHl9LGdldCBvcGFjaXR5RGVjYXlWZWxvY2l0eSgpe3JldHVybiB0aGlzLmVsZW1lbnQub3BhY2l0eURlY2F5VmVsb2NpdHl9LGdldCByYWRpdXMoKXt2YXIgdD0xLjEqTWF0aC5taW4oTWF0aC5zcXJ0KHRoaXMuY29udGFpbmVyTWV0cmljcy53aWR0aCp0aGlzLmNvbnRhaW5lck1ldHJpY3Mud2lkdGgrdGhpcy5jb250YWluZXJNZXRyaWNzLmhlaWdodCp0aGlzLmNvbnRhaW5lck1ldHJpY3MuaGVpZ2h0KSxjYS5NQVhfUkFESVVTKSs1LGU9dCooMS1NYXRoLnBvdyg4MCwtKHRoaXMubW91c2VJbnRlcmFjdGlvblNlY29uZHMvKDEuMS10L2NhLk1BWF9SQURJVVMqLjIpKSkpO3JldHVybiBNYXRoLmFicyhlKX0sZ2V0IG9wYWNpdHkoKXtyZXR1cm4gdGhpcy5tb3VzZVVwU3RhcnQ/TWF0aC5tYXgoMCx0aGlzLmluaXRpYWxPcGFjaXR5LXRoaXMubW91c2VVcEVsYXBzZWRTZWNvbmRzKnRoaXMub3BhY2l0eURlY2F5VmVsb2NpdHkpOnRoaXMuaW5pdGlhbE9wYWNpdHl9LGdldCBvdXRlck9wYWNpdHkoKXtyZXR1cm4gTWF0aC5tYXgoMCxNYXRoLm1pbiguMyp0aGlzLm1vdXNlVXBFbGFwc2VkU2Vjb25kcyx0aGlzLm9wYWNpdHkpKX0sZ2V0IGlzT3BhY2l0eUZ1bGx5RGVjYXllZCgpe3JldHVybiB0aGlzLm9wYWNpdHk8LjAxJiZ0aGlzLnJhZGl1cz49TWF0aC5taW4odGhpcy5tYXhSYWRpdXMsY2EuTUFYX1JBRElVUyl9LGdldCBpc1Jlc3RpbmdBdE1heFJhZGl1cygpe3JldHVybiB0aGlzLm9wYWNpdHk+PXRoaXMuaW5pdGlhbE9wYWNpdHkmJnRoaXMucmFkaXVzPj1NYXRoLm1pbih0aGlzLm1heFJhZGl1cyxjYS5NQVhfUkFESVVTKX0sZ2V0IGlzQW5pbWF0aW9uQ29tcGxldGUoKXtyZXR1cm4gdGhpcy5tb3VzZVVwU3RhcnQ/dGhpcy5pc09wYWNpdHlGdWxseURlY2F5ZWQ6dGhpcy5pc1Jlc3RpbmdBdE1heFJhZGl1c30sZ2V0IHRyYW5zbGF0aW9uRnJhY3Rpb24oKXtyZXR1cm4gTWF0aC5taW4oMSx0aGlzLnJhZGl1cy90aGlzLmNvbnRhaW5lck1ldHJpY3Muc2l6ZSoyL01hdGguc3FydCgyKSl9LGdldCB4Tm93KCl7cmV0dXJuIHRoaXMueEVuZD90aGlzLnhTdGFydCt0aGlzLnRyYW5zbGF0aW9uRnJhY3Rpb24qKHRoaXMueEVuZC10aGlzLnhTdGFydCk6dGhpcy54U3RhcnR9LGdldCB5Tm93KCl7cmV0dXJuIHRoaXMueUVuZD90aGlzLnlTdGFydCt0aGlzLnRyYW5zbGF0aW9uRnJhY3Rpb24qKHRoaXMueUVuZC10aGlzLnlTdGFydCk6dGhpcy55U3RhcnR9LGdldCBpc01vdXNlRG93bigpe3JldHVybiB0aGlzLm1vdXNlRG93blN0YXJ0JiYhdGhpcy5tb3VzZVVwU3RhcnR9LHJlc2V0SW50ZXJhY3Rpb25TdGF0ZTpmdW5jdGlvbigpe3RoaXMubWF4UmFkaXVzPTAsdGhpcy5tb3VzZURvd25TdGFydD0wLHRoaXMubW91c2VVcFN0YXJ0PTAsdGhpcy54U3RhcnQ9MCx0aGlzLnlTdGFydD0wLHRoaXMueEVuZD0wLHRoaXMueUVuZD0wLHRoaXMuc2xpZGVEaXN0YW5jZT0wLHRoaXMuY29udGFpbmVyTWV0cmljcz1uZXcgbGEodGhpcy5lbGVtZW50KX0sZHJhdzpmdW5jdGlvbigpe3ZhciB0LGUsbjt0aGlzLndhdmUuc3R5bGUub3BhY2l0eT10aGlzLm9wYWNpdHksdD10aGlzLnJhZGl1cy8odGhpcy5jb250YWluZXJNZXRyaWNzLnNpemUvMiksdGhpcy53YXZlQ29udGFpbmVyLnN0eWxlLndlYmtpdFRyYW5zZm9ybT0idHJhbnNsYXRlKCIrKGU9dGhpcy54Tm93LXRoaXMuY29udGFpbmVyTWV0cmljcy53aWR0aC8yKSsicHgsICIrKG49dGhpcy55Tm93LXRoaXMuY29udGFpbmVyTWV0cmljcy5oZWlnaHQvMikrInB4KSIsdGhpcy53YXZlQ29udGFpbmVyLnN0eWxlLnRyYW5zZm9ybT0idHJhbnNsYXRlM2QoIitlKyJweCwgIituKyJweCwgMCkiLHRoaXMud2F2ZS5zdHlsZS53ZWJraXRUcmFuc2Zvcm09InNjYWxlKCIrdCsiLCIrdCsiKSIsdGhpcy53YXZlLnN0eWxlLnRyYW5zZm9ybT0ic2NhbGUzZCgiK3QrIiwiK3QrIiwxKSJ9LGRvd25BY3Rpb246ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5jb250YWluZXJNZXRyaWNzLndpZHRoLzIsbj10aGlzLmNvbnRhaW5lck1ldHJpY3MuaGVpZ2h0LzI7dGhpcy5yZXNldEludGVyYWN0aW9uU3RhdGUoKSx0aGlzLm1vdXNlRG93blN0YXJ0PXNhLm5vdygpLHRoaXMuY2VudGVyPyh0aGlzLnhTdGFydD1lLHRoaXMueVN0YXJ0PW4sdGhpcy5zbGlkZURpc3RhbmNlPXNhLmRpc3RhbmNlKHRoaXMueFN0YXJ0LHRoaXMueVN0YXJ0LHRoaXMueEVuZCx0aGlzLnlFbmQpKToodGhpcy54U3RhcnQ9dD90LmRldGFpbC54LXRoaXMuY29udGFpbmVyTWV0cmljcy5ib3VuZGluZ1JlY3QubGVmdDp0aGlzLmNvbnRhaW5lck1ldHJpY3Mud2lkdGgvMix0aGlzLnlTdGFydD10P3QuZGV0YWlsLnktdGhpcy5jb250YWluZXJNZXRyaWNzLmJvdW5kaW5nUmVjdC50b3A6dGhpcy5jb250YWluZXJNZXRyaWNzLmhlaWdodC8yKSx0aGlzLnJlY2VudGVycyYmKHRoaXMueEVuZD1lLHRoaXMueUVuZD1uLHRoaXMuc2xpZGVEaXN0YW5jZT1zYS5kaXN0YW5jZSh0aGlzLnhTdGFydCx0aGlzLnlTdGFydCx0aGlzLnhFbmQsdGhpcy55RW5kKSksdGhpcy5tYXhSYWRpdXM9dGhpcy5jb250YWluZXJNZXRyaWNzLmZ1cnRoZXN0Q29ybmVyRGlzdGFuY2VGcm9tKHRoaXMueFN0YXJ0LHRoaXMueVN0YXJ0KSx0aGlzLndhdmVDb250YWluZXIuc3R5bGUudG9wPSh0aGlzLmNvbnRhaW5lck1ldHJpY3MuaGVpZ2h0LXRoaXMuY29udGFpbmVyTWV0cmljcy5zaXplKS8yKyJweCIsdGhpcy53YXZlQ29udGFpbmVyLnN0eWxlLmxlZnQ9KHRoaXMuY29udGFpbmVyTWV0cmljcy53aWR0aC10aGlzLmNvbnRhaW5lck1ldHJpY3Muc2l6ZSkvMisicHgiLHRoaXMud2F2ZUNvbnRhaW5lci5zdHlsZS53aWR0aD10aGlzLmNvbnRhaW5lck1ldHJpY3Muc2l6ZSsicHgiLHRoaXMud2F2ZUNvbnRhaW5lci5zdHlsZS5oZWlnaHQ9dGhpcy5jb250YWluZXJNZXRyaWNzLnNpemUrInB4In0sdXBBY3Rpb246ZnVuY3Rpb24odCl7dGhpcy5pc01vdXNlRG93biYmKHRoaXMubW91c2VVcFN0YXJ0PXNhLm5vdygpKX0scmVtb3ZlOmZ1bmN0aW9uKCl7ZXIoZXIodGhpcy53YXZlQ29udGFpbmVyKS5wYXJlbnROb2RlKS5yZW1vdmVDaGlsZCh0aGlzLndhdmVDb250YWluZXIpfX0sanIoe190ZW1wbGF0ZTp4ZWAKICAgIDxzdHlsZT4KICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICBib3JkZXItcmFkaXVzOiBpbmhlcml0OwogICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgICAgdG9wOiAwOwogICAgICAgIGxlZnQ6IDA7CiAgICAgICAgcmlnaHQ6IDA7CiAgICAgICAgYm90dG9tOiAwOwoKICAgICAgICAvKiBTZWUgUG9seW1lckVsZW1lbnRzL3BhcGVyLWJlaGF2aW9ycy9pc3N1ZXMvMzQuIE9uIG5vbi1DaHJvbWUgYnJvd3NlcnMsCiAgICAgICAgICogY3JlYXRpbmcgYSBub2RlICh3aXRoIGEgcG9zaXRpb246YWJzb2x1dGUpIGluIHRoZSBtaWRkbGUgb2YgYW4gZXZlbnQKICAgICAgICAgKiBoYW5kbGVyICJpbnRlcnJ1cHRzIiB0aGF0IGV2ZW50IGhhbmRsZXIgKHdoaWNoIGhhcHBlbnMgd2hlbiB0aGUKICAgICAgICAgKiByaXBwbGUgaXMgY3JlYXRlZCBvbiBkZW1hbmQpICovCiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAgIH0KCiAgICAgIDpob3N0KFthbmltYXRpbmddKSB7CiAgICAgICAgLyogVGhpcyByZXNvbHZlcyBhIHJlbmRlcmluZyBpc3N1ZSBpbiBDaHJvbWUgKGFzIG9mIDQwKSB3aGVyZSB0aGUKICAgICAgICAgICByaXBwbGUgaXMgbm90IHByb3Blcmx5IGNsaXBwZWQgYnkgaXRzIHBhcmVudCAod2hpY2ggbWF5IGhhdmUKICAgICAgICAgICByb3VuZGVkIGNvcm5lcnMpLiBTZWU6IGh0dHA6Ly9qc2Jpbi5jb20vdGVtZXhhLzQKCiAgICAgICAgICAgTm90ZTogV2Ugb25seSBhcHBseSB0aGlzIHN0eWxlIGNvbmRpdGlvbmFsbHkuIE90aGVyd2lzZSwgdGhlIGJyb3dzZXIKICAgICAgICAgICB3aWxsIGNyZWF0ZSBhIG5ldyBjb21wb3NpdGluZyBsYXllciBmb3IgZXZlcnkgcmlwcGxlIGVsZW1lbnQgb24gdGhlCiAgICAgICAgICAgcGFnZSwgYW5kIHRoYXQgd291bGQgYmUgYmFkLiAqLwogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCk7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTsKICAgICAgfQoKICAgICAgI2JhY2tncm91bmQsCiAgICAgICN3YXZlcywKICAgICAgLndhdmUtY29udGFpbmVyLAogICAgICAud2F2ZSB7CiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIHRvcDogMDsKICAgICAgICBsZWZ0OiAwOwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgfQoKICAgICAgI2JhY2tncm91bmQsCiAgICAgIC53YXZlIHsKICAgICAgICBvcGFjaXR5OiAwOwogICAgICB9CgogICAgICAjd2F2ZXMsCiAgICAgIC53YXZlIHsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICB9CgogICAgICAud2F2ZS1jb250YWluZXIsCiAgICAgIC53YXZlIHsKICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICAgIH0KCiAgICAgIDpob3N0KC5jaXJjbGUpICNiYWNrZ3JvdW5kLAogICAgICA6aG9zdCguY2lyY2xlKSAjd2F2ZXMgewogICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgICAgfQoKICAgICAgOmhvc3QoLmNpcmNsZSkgLndhdmUtY29udGFpbmVyIHsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICB9CiAgICA8L3N0eWxlPgoKICAgIDxkaXYgaWQ9ImJhY2tncm91bmQiPjwvZGl2PgogICAgPGRpdiBpZD0id2F2ZXMiPjwvZGl2PgpgLGlzOiJwYXBlci1yaXBwbGUiLGJlaGF2aW9yczpbWG9dLHByb3BlcnRpZXM6e2luaXRpYWxPcGFjaXR5Ont0eXBlOk51bWJlcix2YWx1ZTouMjV9LG9wYWNpdHlEZWNheVZlbG9jaXR5Ont0eXBlOk51bWJlcix2YWx1ZTouOH0scmVjZW50ZXJzOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITF9LGNlbnRlcjp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxyaXBwbGVzOnt0eXBlOkFycmF5LHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuW119fSxhbmltYXRpbmc6e3R5cGU6Qm9vbGVhbixyZWFkT25seTohMCxyZWZsZWN0VG9BdHRyaWJ1dGU6ITAsdmFsdWU6ITF9LGhvbGREb3duOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITEsb2JzZXJ2ZXI6Il9ob2xkRG93bkNoYW5nZWQifSxub2luazp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxfYW5pbWF0aW5nOnt0eXBlOkJvb2xlYW59LF9ib3VuZEFuaW1hdGU6e3R5cGU6RnVuY3Rpb24sdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hbmltYXRlLmJpbmQodGhpcyl9fX0sZ2V0IHRhcmdldCgpe3JldHVybiB0aGlzLmtleUV2ZW50VGFyZ2V0fSxrZXlCaW5kaW5nczp7ImVudGVyOmtleWRvd24iOiJfb25FbnRlcktleWRvd24iLCJzcGFjZTprZXlkb3duIjoiX29uU3BhY2VLZXlkb3duIiwic3BhY2U6a2V5dXAiOiJfb25TcGFjZUtleXVwIn0sYXR0YWNoZWQ6ZnVuY3Rpb24oKXt0aGlzLmtleUV2ZW50VGFyZ2V0PTExPT1lcih0aGlzKS5wYXJlbnROb2RlLm5vZGVUeXBlP2VyKHRoaXMpLmdldE93bmVyUm9vdCgpLmhvc3Q6ZXIodGhpcykucGFyZW50Tm9kZTt2YXIgdD10aGlzLmtleUV2ZW50VGFyZ2V0O3RoaXMubGlzdGVuKHQsInVwIiwidWlVcEFjdGlvbiIpLHRoaXMubGlzdGVuKHQsImRvd24iLCJ1aURvd25BY3Rpb24iKX0sZGV0YWNoZWQ6ZnVuY3Rpb24oKXt0aGlzLnVubGlzdGVuKHRoaXMua2V5RXZlbnRUYXJnZXQsInVwIiwidWlVcEFjdGlvbiIpLHRoaXMudW5saXN0ZW4odGhpcy5rZXlFdmVudFRhcmdldCwiZG93biIsInVpRG93bkFjdGlvbiIpLHRoaXMua2V5RXZlbnRUYXJnZXQ9bnVsbH0sZ2V0IHNob3VsZEtlZXBBbmltYXRpbmcoKXtmb3IodmFyIHQ9MDt0PHRoaXMucmlwcGxlcy5sZW5ndGg7Kyt0KWlmKCF0aGlzLnJpcHBsZXNbdF0uaXNBbmltYXRpb25Db21wbGV0ZSlyZXR1cm4hMDtyZXR1cm4hMX0sc2ltdWxhdGVkUmlwcGxlOmZ1bmN0aW9uKCl7dGhpcy5kb3duQWN0aW9uKG51bGwpLHRoaXMuYXN5bmMoKGZ1bmN0aW9uKCl7dGhpcy51cEFjdGlvbigpfSksMSl9LHVpRG93bkFjdGlvbjpmdW5jdGlvbih0KXt0aGlzLm5vaW5rfHx0aGlzLmRvd25BY3Rpb24odCl9LGRvd25BY3Rpb246ZnVuY3Rpb24odCl7dGhpcy5ob2xkRG93biYmdGhpcy5yaXBwbGVzLmxlbmd0aD4wfHwodGhpcy5hZGRSaXBwbGUoKS5kb3duQWN0aW9uKHQpLHRoaXMuX2FuaW1hdGluZ3x8KHRoaXMuX2FuaW1hdGluZz0hMCx0aGlzLmFuaW1hdGUoKSkpfSx1aVVwQWN0aW9uOmZ1bmN0aW9uKHQpe3RoaXMubm9pbmt8fHRoaXMudXBBY3Rpb24odCl9LHVwQWN0aW9uOmZ1bmN0aW9uKHQpe3RoaXMuaG9sZERvd258fCh0aGlzLnJpcHBsZXMuZm9yRWFjaCgoZnVuY3Rpb24oZSl7ZS51cEFjdGlvbih0KX0pKSx0aGlzLl9hbmltYXRpbmc9ITAsdGhpcy5hbmltYXRlKCkpfSxvbkFuaW1hdGlvbkNvbXBsZXRlOmZ1bmN0aW9uKCl7dGhpcy5fYW5pbWF0aW5nPSExLHRoaXMuJC5iYWNrZ3JvdW5kLnN0eWxlLmJhY2tncm91bmRDb2xvcj0iIix0aGlzLmZpcmUoInRyYW5zaXRpb25lbmQiKX0sYWRkUmlwcGxlOmZ1bmN0aW9uKCl7dmFyIHQ9bmV3IGNhKHRoaXMpO3JldHVybiBlcih0aGlzLiQud2F2ZXMpLmFwcGVuZENoaWxkKHQud2F2ZUNvbnRhaW5lciksdGhpcy4kLmJhY2tncm91bmQuc3R5bGUuYmFja2dyb3VuZENvbG9yPXQuY29sb3IsdGhpcy5yaXBwbGVzLnB1c2godCksdGhpcy5fc2V0QW5pbWF0aW5nKCEwKSx0fSxyZW1vdmVSaXBwbGU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5yaXBwbGVzLmluZGV4T2YodCk7ZTwwfHwodGhpcy5yaXBwbGVzLnNwbGljZShlLDEpLHQucmVtb3ZlKCksdGhpcy5yaXBwbGVzLmxlbmd0aHx8dGhpcy5fc2V0QW5pbWF0aW5nKCExKSl9LGFuaW1hdGU6ZnVuY3Rpb24oKXtpZih0aGlzLl9hbmltYXRpbmcpe3ZhciB0LGU7Zm9yKHQ9MDt0PHRoaXMucmlwcGxlcy5sZW5ndGg7Kyt0KShlPXRoaXMucmlwcGxlc1t0XSkuZHJhdygpLHRoaXMuJC5iYWNrZ3JvdW5kLnN0eWxlLm9wYWNpdHk9ZS5vdXRlck9wYWNpdHksZS5pc09wYWNpdHlGdWxseURlY2F5ZWQmJiFlLmlzUmVzdGluZ0F0TWF4UmFkaXVzJiZ0aGlzLnJlbW92ZVJpcHBsZShlKTt0aGlzLnNob3VsZEtlZXBBbmltYXRpbmd8fDAhPT10aGlzLnJpcHBsZXMubGVuZ3RoP3dpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUodGhpcy5fYm91bmRBbmltYXRlKTp0aGlzLm9uQW5pbWF0aW9uQ29tcGxldGUoKX19LGFuaW1hdGVSaXBwbGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hbmltYXRlKCl9LF9vbkVudGVyS2V5ZG93bjpmdW5jdGlvbigpe3RoaXMudWlEb3duQWN0aW9uKCksdGhpcy5hc3luYyh0aGlzLnVpVXBBY3Rpb24sMSl9LF9vblNwYWNlS2V5ZG93bjpmdW5jdGlvbigpe3RoaXMudWlEb3duQWN0aW9uKCl9LF9vblNwYWNlS2V5dXA6ZnVuY3Rpb24oKXt0aGlzLnVpVXBBY3Rpb24oKX0sX2hvbGREb3duQ2hhbmdlZDpmdW5jdGlvbih0LGUpe3ZvaWQgMCE9PWUmJih0P3RoaXMuZG93bkFjdGlvbigpOnRoaXMudXBBY3Rpb24oKSl9fSk7Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNSBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlCiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcwogICAgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudAogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwpjb25zdCB1YT17cHJvcGVydGllczp7bm9pbms6e3R5cGU6Qm9vbGVhbixvYnNlcnZlcjoiX25vaW5rQ2hhbmdlZCJ9LF9yaXBwbGVDb250YWluZXI6e3R5cGU6T2JqZWN0fX0sX2J1dHRvblN0YXRlQ2hhbmdlZDpmdW5jdGlvbigpe3RoaXMuZm9jdXNlZCYmdGhpcy5lbnN1cmVSaXBwbGUoKX0sX2Rvd25IYW5kbGVyOmZ1bmN0aW9uKHQpe29hLl9kb3duSGFuZGxlci5jYWxsKHRoaXMsdCksdGhpcy5wcmVzc2VkJiZ0aGlzLmVuc3VyZVJpcHBsZSh0KX0sZW5zdXJlUmlwcGxlOmZ1bmN0aW9uKHQpe2lmKCF0aGlzLmhhc1JpcHBsZSgpKXt0aGlzLl9yaXBwbGU9dGhpcy5fY3JlYXRlUmlwcGxlKCksdGhpcy5fcmlwcGxlLm5vaW5rPXRoaXMubm9pbms7dmFyIGU9dGhpcy5fcmlwcGxlQ29udGFpbmVyfHx0aGlzLnJvb3Q7aWYoZSYmZXIoZSkuYXBwZW5kQ2hpbGQodGhpcy5fcmlwcGxlKSx0KXt2YXIgbj1lcih0aGlzLl9yaXBwbGVDb250YWluZXJ8fHRoaXMpLGk9ZXIodCkucm9vdFRhcmdldDtuLmRlZXBDb250YWlucyhpKSYmdGhpcy5fcmlwcGxlLnVpRG93bkFjdGlvbih0KX19fSxnZXRSaXBwbGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lbnN1cmVSaXBwbGUoKSx0aGlzLl9yaXBwbGV9LGhhc1JpcHBsZTpmdW5jdGlvbigpe3JldHVybiBCb29sZWFuKHRoaXMuX3JpcHBsZSl9LF9jcmVhdGVSaXBwbGU6ZnVuY3Rpb24oKXtyZXR1cm4gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgicGFwZXItcmlwcGxlIil9LF9ub2lua0NoYW5nZWQ6ZnVuY3Rpb24odCl7dGhpcy5oYXNSaXBwbGUoKSYmKHRoaXMuX3JpcHBsZS5ub2luaz10KX19LGhhPXtwcm9wZXJ0aWVzOntlbGV2YXRpb246e3R5cGU6TnVtYmVyLHJlZmxlY3RUb0F0dHJpYnV0ZTohMCxyZWFkT25seTohMH19LG9ic2VydmVyczpbIl9jYWxjdWxhdGVFbGV2YXRpb24oZm9jdXNlZCwgZGlzYWJsZWQsIGFjdGl2ZSwgcHJlc3NlZCwgcmVjZWl2ZWRGb2N1c0Zyb21LZXlib2FyZCkiLCJfY29tcHV0ZUtleWJvYXJkQ2xhc3MocmVjZWl2ZWRGb2N1c0Zyb21LZXlib2FyZCkiXSxob3N0QXR0cmlidXRlczp7cm9sZToiYnV0dG9uIix0YWJpbmRleDoiMCIsYW5pbWF0ZWQ6ITB9LF9jYWxjdWxhdGVFbGV2YXRpb246ZnVuY3Rpb24oKXt2YXIgdD0xO3RoaXMuZGlzYWJsZWQ/dD0wOnRoaXMuYWN0aXZlfHx0aGlzLnByZXNzZWQ/dD00OnRoaXMucmVjZWl2ZWRGb2N1c0Zyb21LZXlib2FyZCYmKHQ9MyksdGhpcy5fc2V0RWxldmF0aW9uKHQpfSxfY29tcHV0ZUtleWJvYXJkQ2xhc3M6ZnVuY3Rpb24odCl7dGhpcy50b2dnbGVDbGFzcygia2V5Ym9hcmQtZm9jdXMiLHQpfSxfc3BhY2VLZXlEb3duSGFuZGxlcjpmdW5jdGlvbih0KXtvYS5fc3BhY2VLZXlEb3duSGFuZGxlci5jYWxsKHRoaXMsdCksdGhpcy5oYXNSaXBwbGUoKSYmdGhpcy5nZXRSaXBwbGUoKS5yaXBwbGVzLmxlbmd0aDwxJiZ0aGlzLl9yaXBwbGUudWlEb3duQWN0aW9uKCl9LF9zcGFjZUtleVVwSGFuZGxlcjpmdW5jdGlvbih0KXtvYS5fc3BhY2VLZXlVcEhhbmRsZXIuY2FsbCh0aGlzLHQpLHRoaXMuaGFzUmlwcGxlKCkmJnRoaXMuX3JpcHBsZS51aVVwQWN0aW9uKCl9fSxkYT1bYWEscmEsdWEsaGFdLHBhPXhlYAogIDxzdHlsZSBpbmNsdWRlPSJwYXBlci1tYXRlcmlhbC1zdHlsZXMiPgogICAgLyogTmVlZCB0byBzcGVjaWZ5IHRoZSBzYW1lIHNwZWNpZmljaXR5IGFzIHRoZSBzdHlsZXMgaW1wb3J0ZWQgZnJvbSBwYXBlci1tYXRlcmlhbC4gKi8KICAgIDpob3N0IHsKICAgICAgQGFwcGx5IC0tbGF5b3V0LWlubGluZTsKICAgICAgQGFwcGx5IC0tbGF5b3V0LWNlbnRlci1jZW50ZXI7CiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgbWluLXdpZHRoOiA1LjE0ZW07CiAgICAgIG1hcmdpbjogMCAwLjI5ZW07CiAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogICAgICAtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMCk7CiAgICAgIC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgICAgIGZvbnQ6IGluaGVyaXQ7CiAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7CiAgICAgIG91dGxpbmUtd2lkdGg6IDA7CiAgICAgIGJvcmRlci1yYWRpdXM6IDNweDsKICAgICAgLW1vei11c2VyLXNlbGVjdDogbm9uZTsKICAgICAgLW1zLXVzZXItc2VsZWN0OiBub25lOwogICAgICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lOwogICAgICB1c2VyLXNlbGVjdDogbm9uZTsKICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICB6LWluZGV4OiAwOwogICAgICBwYWRkaW5nOiAwLjdlbSAwLjU3ZW07CgogICAgICBAYXBwbHkgLS1wYXBlci1mb250LWNvbW1vbi1iYXNlOwogICAgICBAYXBwbHkgLS1wYXBlci1idXR0b247CiAgICB9CgogICAgOmhvc3QoW2VsZXZhdGlvbj0iMSJdKSB7CiAgICAgIEBhcHBseSAtLXBhcGVyLW1hdGVyaWFsLWVsZXZhdGlvbi0xOwogICAgfQoKICAgIDpob3N0KFtlbGV2YXRpb249IjIiXSkgewogICAgICBAYXBwbHkgLS1wYXBlci1tYXRlcmlhbC1lbGV2YXRpb24tMjsKICAgIH0KCiAgICA6aG9zdChbZWxldmF0aW9uPSIzIl0pIHsKICAgICAgQGFwcGx5IC0tcGFwZXItbWF0ZXJpYWwtZWxldmF0aW9uLTM7CiAgICB9CgogICAgOmhvc3QoW2VsZXZhdGlvbj0iNCJdKSB7CiAgICAgIEBhcHBseSAtLXBhcGVyLW1hdGVyaWFsLWVsZXZhdGlvbi00OwogICAgfQoKICAgIDpob3N0KFtlbGV2YXRpb249IjUiXSkgewogICAgICBAYXBwbHkgLS1wYXBlci1tYXRlcmlhbC1lbGV2YXRpb24tNTsKICAgIH0KCiAgICA6aG9zdChbaGlkZGVuXSkgewogICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7CiAgICB9CgogICAgOmhvc3QoW3JhaXNlZF0ua2V5Ym9hcmQtZm9jdXMpIHsKICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7CiAgICAgIEBhcHBseSAtLXBhcGVyLWJ1dHRvbi1yYWlzZWQta2V5Ym9hcmQtZm9jdXM7CiAgICB9CgogICAgOmhvc3QoOm5vdChbcmFpc2VkXSkua2V5Ym9hcmQtZm9jdXMpIHsKICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7CiAgICAgIEBhcHBseSAtLXBhcGVyLWJ1dHRvbi1mbGF0LWtleWJvYXJkLWZvY3VzOwogICAgfQoKICAgIDpob3N0KFtkaXNhYmxlZF0pIHsKICAgICAgYmFja2dyb3VuZDogbm9uZTsKICAgICAgY29sb3I6ICNhOGE4YTg7CiAgICAgIGN1cnNvcjogYXV0bzsKICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CgogICAgICBAYXBwbHkgLS1wYXBlci1idXR0b24tZGlzYWJsZWQ7CiAgICB9CgogICAgOmhvc3QoW2Rpc2FibGVkXVtyYWlzZWRdKSB7CiAgICAgIGJhY2tncm91bmQ6ICNlYWVhZWE7CiAgICB9CgoKICAgIDpob3N0KFthbmltYXRlZF0pIHsKICAgICAgQGFwcGx5IC0tc2hhZG93LXRyYW5zaXRpb247CiAgICB9CgogICAgcGFwZXItcmlwcGxlIHsKICAgICAgY29sb3I6IHZhcigtLXBhcGVyLWJ1dHRvbi1pbmstY29sb3IpOwogICAgfQogIDwvc3R5bGU+CgogIDxzbG90Pjwvc2xvdD5gOwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZQogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMKICAgIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi9wYS5zZXRBdHRyaWJ1dGUoInN0cmlwLXdoaXRlc3BhY2UiLCIiKSxqcih7X3RlbXBsYXRlOnBhLGlzOiJwYXBlci1idXR0b24iLGJlaGF2aW9yczpbZGFdLHByb3BlcnRpZXM6e3JhaXNlZDp7dHlwZTpCb29sZWFuLHJlZmxlY3RUb0F0dHJpYnV0ZTohMCx2YWx1ZTohMSxvYnNlcnZlcjoiX2NhbGN1bGF0ZUVsZXZhdGlvbiJ9fSxfY2FsY3VsYXRlRWxldmF0aW9uOmZ1bmN0aW9uKCl7dGhpcy5yYWlzZWQ/aGEuX2NhbGN1bGF0ZUVsZXZhdGlvbi5hcHBseSh0aGlzKTp0aGlzLl9zZXRFbGV2YXRpb24oMCl9fSk7Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNSBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlCiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcwogICAgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudAogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwpjb25zdCBmYT14ZWAKPGN1c3RvbS1zdHlsZT4KICA8c3R5bGUgaXM9ImN1c3RvbS1zdHlsZSI+CiAgICBodG1sIHsKCiAgICAgIC8qIE1hdGVyaWFsIERlc2lnbiBjb2xvciBwYWxldHRlIGZvciBHb29nbGUgcHJvZHVjdHMgKi8KCiAgICAgIC0tZ29vZ2xlLXJlZC0xMDA6ICNmNGM3YzM7CiAgICAgIC0tZ29vZ2xlLXJlZC0zMDA6ICNlNjdjNzM7CiAgICAgIC0tZ29vZ2xlLXJlZC01MDA6ICNkYjQ0Mzc7CiAgICAgIC0tZ29vZ2xlLXJlZC03MDA6ICNjNTM5Mjk7CgogICAgICAtLWdvb2dsZS1ibHVlLTEwMDogI2M2ZGFmYzsKICAgICAgLS1nb29nbGUtYmx1ZS0zMDA6ICM3YmFhZjc7CiAgICAgIC0tZ29vZ2xlLWJsdWUtNTAwOiAjNDI4NWY0OwogICAgICAtLWdvb2dsZS1ibHVlLTcwMDogIzMzNjdkNjsKCiAgICAgIC0tZ29vZ2xlLWdyZWVuLTEwMDogI2I3ZTFjZDsKICAgICAgLS1nb29nbGUtZ3JlZW4tMzAwOiAjNTdiYjhhOwogICAgICAtLWdvb2dsZS1ncmVlbi01MDA6ICMwZjlkNTg7CiAgICAgIC0tZ29vZ2xlLWdyZWVuLTcwMDogIzBiODA0MzsKCiAgICAgIC0tZ29vZ2xlLXllbGxvdy0xMDA6ICNmY2U4YjI7CiAgICAgIC0tZ29vZ2xlLXllbGxvdy0zMDA6ICNmN2NiNGQ7CiAgICAgIC0tZ29vZ2xlLXllbGxvdy01MDA6ICNmNGI0MDA7CiAgICAgIC0tZ29vZ2xlLXllbGxvdy03MDA6ICNmMDkzMDA7CgogICAgICAtLWdvb2dsZS1ncmV5LTEwMDogI2Y1ZjVmNTsKICAgICAgLS1nb29nbGUtZ3JleS0zMDA6ICNlMGUwZTA7CiAgICAgIC0tZ29vZ2xlLWdyZXktNTAwOiAjOWU5ZTllOwogICAgICAtLWdvb2dsZS1ncmV5LTcwMDogIzYxNjE2MTsKCiAgICAgIC8qIE1hdGVyaWFsIERlc2lnbiBjb2xvciBwYWxldHRlIGZyb20gb25saW5lIHNwZWMgZG9jdW1lbnQgKi8KCiAgICAgIC0tcGFwZXItcmVkLTUwOiAjZmZlYmVlOwogICAgICAtLXBhcGVyLXJlZC0xMDA6ICNmZmNkZDI7CiAgICAgIC0tcGFwZXItcmVkLTIwMDogI2VmOWE5YTsKICAgICAgLS1wYXBlci1yZWQtMzAwOiAjZTU3MzczOwogICAgICAtLXBhcGVyLXJlZC00MDA6ICNlZjUzNTA7CiAgICAgIC0tcGFwZXItcmVkLTUwMDogI2Y0NDMzNjsKICAgICAgLS1wYXBlci1yZWQtNjAwOiAjZTUzOTM1OwogICAgICAtLXBhcGVyLXJlZC03MDA6ICNkMzJmMmY7CiAgICAgIC0tcGFwZXItcmVkLTgwMDogI2M2MjgyODsKICAgICAgLS1wYXBlci1yZWQtOTAwOiAjYjcxYzFjOwogICAgICAtLXBhcGVyLXJlZC1hMTAwOiAjZmY4YTgwOwogICAgICAtLXBhcGVyLXJlZC1hMjAwOiAjZmY1MjUyOwogICAgICAtLXBhcGVyLXJlZC1hNDAwOiAjZmYxNzQ0OwogICAgICAtLXBhcGVyLXJlZC1hNzAwOiAjZDUwMDAwOwoKICAgICAgLS1wYXBlci1waW5rLTUwOiAjZmNlNGVjOwogICAgICAtLXBhcGVyLXBpbmstMTAwOiAjZjhiYmQwOwogICAgICAtLXBhcGVyLXBpbmstMjAwOiAjZjQ4ZmIxOwogICAgICAtLXBhcGVyLXBpbmstMzAwOiAjZjA2MjkyOwogICAgICAtLXBhcGVyLXBpbmstNDAwOiAjZWM0MDdhOwogICAgICAtLXBhcGVyLXBpbmstNTAwOiAjZTkxZTYzOwogICAgICAtLXBhcGVyLXBpbmstNjAwOiAjZDgxYjYwOwogICAgICAtLXBhcGVyLXBpbmstNzAwOiAjYzIxODViOwogICAgICAtLXBhcGVyLXBpbmstODAwOiAjYWQxNDU3OwogICAgICAtLXBhcGVyLXBpbmstOTAwOiAjODgwZTRmOwogICAgICAtLXBhcGVyLXBpbmstYTEwMDogI2ZmODBhYjsKICAgICAgLS1wYXBlci1waW5rLWEyMDA6ICNmZjQwODE7CiAgICAgIC0tcGFwZXItcGluay1hNDAwOiAjZjUwMDU3OwogICAgICAtLXBhcGVyLXBpbmstYTcwMDogI2M1MTE2MjsKCiAgICAgIC0tcGFwZXItcHVycGxlLTUwOiAjZjNlNWY1OwogICAgICAtLXBhcGVyLXB1cnBsZS0xMDA6ICNlMWJlZTc7CiAgICAgIC0tcGFwZXItcHVycGxlLTIwMDogI2NlOTNkODsKICAgICAgLS1wYXBlci1wdXJwbGUtMzAwOiAjYmE2OGM4OwogICAgICAtLXBhcGVyLXB1cnBsZS00MDA6ICNhYjQ3YmM7CiAgICAgIC0tcGFwZXItcHVycGxlLTUwMDogIzljMjdiMDsKICAgICAgLS1wYXBlci1wdXJwbGUtNjAwOiAjOGUyNGFhOwogICAgICAtLXBhcGVyLXB1cnBsZS03MDA6ICM3YjFmYTI7CiAgICAgIC0tcGFwZXItcHVycGxlLTgwMDogIzZhMWI5YTsKICAgICAgLS1wYXBlci1wdXJwbGUtOTAwOiAjNGExNDhjOwogICAgICAtLXBhcGVyLXB1cnBsZS1hMTAwOiAjZWE4MGZjOwogICAgICAtLXBhcGVyLXB1cnBsZS1hMjAwOiAjZTA0MGZiOwogICAgICAtLXBhcGVyLXB1cnBsZS1hNDAwOiAjZDUwMGY5OwogICAgICAtLXBhcGVyLXB1cnBsZS1hNzAwOiAjYWEwMGZmOwoKICAgICAgLS1wYXBlci1kZWVwLXB1cnBsZS01MDogI2VkZTdmNjsKICAgICAgLS1wYXBlci1kZWVwLXB1cnBsZS0xMDA6ICNkMWM0ZTk7CiAgICAgIC0tcGFwZXItZGVlcC1wdXJwbGUtMjAwOiAjYjM5ZGRiOwogICAgICAtLXBhcGVyLWRlZXAtcHVycGxlLTMwMDogIzk1NzVjZDsKICAgICAgLS1wYXBlci1kZWVwLXB1cnBsZS00MDA6ICM3ZTU3YzI7CiAgICAgIC0tcGFwZXItZGVlcC1wdXJwbGUtNTAwOiAjNjczYWI3OwogICAgICAtLXBhcGVyLWRlZXAtcHVycGxlLTYwMDogIzVlMzViMTsKICAgICAgLS1wYXBlci1kZWVwLXB1cnBsZS03MDA6ICM1MTJkYTg7CiAgICAgIC0tcGFwZXItZGVlcC1wdXJwbGUtODAwOiAjNDUyN2EwOwogICAgICAtLXBhcGVyLWRlZXAtcHVycGxlLTkwMDogIzMxMWI5MjsKICAgICAgLS1wYXBlci1kZWVwLXB1cnBsZS1hMTAwOiAjYjM4OGZmOwogICAgICAtLXBhcGVyLWRlZXAtcHVycGxlLWEyMDA6ICM3YzRkZmY7CiAgICAgIC0tcGFwZXItZGVlcC1wdXJwbGUtYTQwMDogIzY1MWZmZjsKICAgICAgLS1wYXBlci1kZWVwLXB1cnBsZS1hNzAwOiAjNjIwMGVhOwoKICAgICAgLS1wYXBlci1pbmRpZ28tNTA6ICNlOGVhZjY7CiAgICAgIC0tcGFwZXItaW5kaWdvLTEwMDogI2M1Y2FlOTsKICAgICAgLS1wYXBlci1pbmRpZ28tMjAwOiAjOWZhOGRhOwogICAgICAtLXBhcGVyLWluZGlnby0zMDA6ICM3OTg2Y2I7CiAgICAgIC0tcGFwZXItaW5kaWdvLTQwMDogIzVjNmJjMDsKICAgICAgLS1wYXBlci1pbmRpZ28tNTAwOiAjM2Y1MWI1OwogICAgICAtLXBhcGVyLWluZGlnby02MDA6ICMzOTQ5YWI7CiAgICAgIC0tcGFwZXItaW5kaWdvLTcwMDogIzMwM2Y5ZjsKICAgICAgLS1wYXBlci1pbmRpZ28tODAwOiAjMjgzNTkzOwogICAgICAtLXBhcGVyLWluZGlnby05MDA6ICMxYTIzN2U7CiAgICAgIC0tcGFwZXItaW5kaWdvLWExMDA6ICM4YzllZmY7CiAgICAgIC0tcGFwZXItaW5kaWdvLWEyMDA6ICM1MzZkZmU7CiAgICAgIC0tcGFwZXItaW5kaWdvLWE0MDA6ICMzZDVhZmU7CiAgICAgIC0tcGFwZXItaW5kaWdvLWE3MDA6ICMzMDRmZmU7CgogICAgICAtLXBhcGVyLWJsdWUtNTA6ICNlM2YyZmQ7CiAgICAgIC0tcGFwZXItYmx1ZS0xMDA6ICNiYmRlZmI7CiAgICAgIC0tcGFwZXItYmx1ZS0yMDA6ICM5MGNhZjk7CiAgICAgIC0tcGFwZXItYmx1ZS0zMDA6ICM2NGI1ZjY7CiAgICAgIC0tcGFwZXItYmx1ZS00MDA6ICM0MmE1ZjU7CiAgICAgIC0tcGFwZXItYmx1ZS01MDA6ICMyMTk2ZjM7CiAgICAgIC0tcGFwZXItYmx1ZS02MDA6ICMxZTg4ZTU7CiAgICAgIC0tcGFwZXItYmx1ZS03MDA6ICMxOTc2ZDI7CiAgICAgIC0tcGFwZXItYmx1ZS04MDA6ICMxNTY1YzA7CiAgICAgIC0tcGFwZXItYmx1ZS05MDA6ICMwZDQ3YTE7CiAgICAgIC0tcGFwZXItYmx1ZS1hMTAwOiAjODJiMWZmOwogICAgICAtLXBhcGVyLWJsdWUtYTIwMDogIzQ0OGFmZjsKICAgICAgLS1wYXBlci1ibHVlLWE0MDA6ICMyOTc5ZmY7CiAgICAgIC0tcGFwZXItYmx1ZS1hNzAwOiAjMjk2MmZmOwoKICAgICAgLS1wYXBlci1saWdodC1ibHVlLTUwOiAjZTFmNWZlOwogICAgICAtLXBhcGVyLWxpZ2h0LWJsdWUtMTAwOiAjYjNlNWZjOwogICAgICAtLXBhcGVyLWxpZ2h0LWJsdWUtMjAwOiAjODFkNGZhOwogICAgICAtLXBhcGVyLWxpZ2h0LWJsdWUtMzAwOiAjNGZjM2Y3OwogICAgICAtLXBhcGVyLWxpZ2h0LWJsdWUtNDAwOiAjMjliNmY2OwogICAgICAtLXBhcGVyLWxpZ2h0LWJsdWUtNTAwOiAjMDNhOWY0OwogICAgICAtLXBhcGVyLWxpZ2h0LWJsdWUtNjAwOiAjMDM5YmU1OwogICAgICAtLXBhcGVyLWxpZ2h0LWJsdWUtNzAwOiAjMDI4OGQxOwogICAgICAtLXBhcGVyLWxpZ2h0LWJsdWUtODAwOiAjMDI3N2JkOwogICAgICAtLXBhcGVyLWxpZ2h0LWJsdWUtOTAwOiAjMDE1NzliOwogICAgICAtLXBhcGVyLWxpZ2h0LWJsdWUtYTEwMDogIzgwZDhmZjsKICAgICAgLS1wYXBlci1saWdodC1ibHVlLWEyMDA6ICM0MGM0ZmY7CiAgICAgIC0tcGFwZXItbGlnaHQtYmx1ZS1hNDAwOiAjMDBiMGZmOwogICAgICAtLXBhcGVyLWxpZ2h0LWJsdWUtYTcwMDogIzAwOTFlYTsKCiAgICAgIC0tcGFwZXItY3lhbi01MDogI2UwZjdmYTsKICAgICAgLS1wYXBlci1jeWFuLTEwMDogI2IyZWJmMjsKICAgICAgLS1wYXBlci1jeWFuLTIwMDogIzgwZGVlYTsKICAgICAgLS1wYXBlci1jeWFuLTMwMDogIzRkZDBlMTsKICAgICAgLS1wYXBlci1jeWFuLTQwMDogIzI2YzZkYTsKICAgICAgLS1wYXBlci1jeWFuLTUwMDogIzAwYmNkNDsKICAgICAgLS1wYXBlci1jeWFuLTYwMDogIzAwYWNjMTsKICAgICAgLS1wYXBlci1jeWFuLTcwMDogIzAwOTdhNzsKICAgICAgLS1wYXBlci1jeWFuLTgwMDogIzAwODM4ZjsKICAgICAgLS1wYXBlci1jeWFuLTkwMDogIzAwNjA2NDsKICAgICAgLS1wYXBlci1jeWFuLWExMDA6ICM4NGZmZmY7CiAgICAgIC0tcGFwZXItY3lhbi1hMjAwOiAjMThmZmZmOwogICAgICAtLXBhcGVyLWN5YW4tYTQwMDogIzAwZTVmZjsKICAgICAgLS1wYXBlci1jeWFuLWE3MDA6ICMwMGI4ZDQ7CgogICAgICAtLXBhcGVyLXRlYWwtNTA6ICNlMGYyZjE7CiAgICAgIC0tcGFwZXItdGVhbC0xMDA6ICNiMmRmZGI7CiAgICAgIC0tcGFwZXItdGVhbC0yMDA6ICM4MGNiYzQ7CiAgICAgIC0tcGFwZXItdGVhbC0zMDA6ICM0ZGI2YWM7CiAgICAgIC0tcGFwZXItdGVhbC00MDA6ICMyNmE2OWE7CiAgICAgIC0tcGFwZXItdGVhbC01MDA6ICMwMDk2ODg7CiAgICAgIC0tcGFwZXItdGVhbC02MDA6ICMwMDg5N2I7CiAgICAgIC0tcGFwZXItdGVhbC03MDA6ICMwMDc5NmI7CiAgICAgIC0tcGFwZXItdGVhbC04MDA6ICMwMDY5NWM7CiAgICAgIC0tcGFwZXItdGVhbC05MDA6ICMwMDRkNDA7CiAgICAgIC0tcGFwZXItdGVhbC1hMTAwOiAjYTdmZmViOwogICAgICAtLXBhcGVyLXRlYWwtYTIwMDogIzY0ZmZkYTsKICAgICAgLS1wYXBlci10ZWFsLWE0MDA6ICMxZGU5YjY7CiAgICAgIC0tcGFwZXItdGVhbC1hNzAwOiAjMDBiZmE1OwoKICAgICAgLS1wYXBlci1ncmVlbi01MDogI2U4ZjVlOTsKICAgICAgLS1wYXBlci1ncmVlbi0xMDA6ICNjOGU2Yzk7CiAgICAgIC0tcGFwZXItZ3JlZW4tMjAwOiAjYTVkNmE3OwogICAgICAtLXBhcGVyLWdyZWVuLTMwMDogIzgxYzc4NDsKICAgICAgLS1wYXBlci1ncmVlbi00MDA6ICM2NmJiNmE7CiAgICAgIC0tcGFwZXItZ3JlZW4tNTAwOiAjNGNhZjUwOwogICAgICAtLXBhcGVyLWdyZWVuLTYwMDogIzQzYTA0NzsKICAgICAgLS1wYXBlci1ncmVlbi03MDA6ICMzODhlM2M7CiAgICAgIC0tcGFwZXItZ3JlZW4tODAwOiAjMmU3ZDMyOwogICAgICAtLXBhcGVyLWdyZWVuLTkwMDogIzFiNWUyMDsKICAgICAgLS1wYXBlci1ncmVlbi1hMTAwOiAjYjlmNmNhOwogICAgICAtLXBhcGVyLWdyZWVuLWEyMDA6ICM2OWYwYWU7CiAgICAgIC0tcGFwZXItZ3JlZW4tYTQwMDogIzAwZTY3NjsKICAgICAgLS1wYXBlci1ncmVlbi1hNzAwOiAjMDBjODUzOwoKICAgICAgLS1wYXBlci1saWdodC1ncmVlbi01MDogI2YxZjhlOTsKICAgICAgLS1wYXBlci1saWdodC1ncmVlbi0xMDA6ICNkY2VkYzg7CiAgICAgIC0tcGFwZXItbGlnaHQtZ3JlZW4tMjAwOiAjYzVlMWE1OwogICAgICAtLXBhcGVyLWxpZ2h0LWdyZWVuLTMwMDogI2FlZDU4MTsKICAgICAgLS1wYXBlci1saWdodC1ncmVlbi00MDA6ICM5Y2NjNjU7CiAgICAgIC0tcGFwZXItbGlnaHQtZ3JlZW4tNTAwOiAjOGJjMzRhOwogICAgICAtLXBhcGVyLWxpZ2h0LWdyZWVuLTYwMDogIzdjYjM0MjsKICAgICAgLS1wYXBlci1saWdodC1ncmVlbi03MDA6ICM2ODlmMzg7CiAgICAgIC0tcGFwZXItbGlnaHQtZ3JlZW4tODAwOiAjNTU4YjJmOwogICAgICAtLXBhcGVyLWxpZ2h0LWdyZWVuLTkwMDogIzMzNjkxZTsKICAgICAgLS1wYXBlci1saWdodC1ncmVlbi1hMTAwOiAjY2NmZjkwOwogICAgICAtLXBhcGVyLWxpZ2h0LWdyZWVuLWEyMDA6ICNiMmZmNTk7CiAgICAgIC0tcGFwZXItbGlnaHQtZ3JlZW4tYTQwMDogIzc2ZmYwMzsKICAgICAgLS1wYXBlci1saWdodC1ncmVlbi1hNzAwOiAjNjRkZDE3OwoKICAgICAgLS1wYXBlci1saW1lLTUwOiAjZjlmYmU3OwogICAgICAtLXBhcGVyLWxpbWUtMTAwOiAjZjBmNGMzOwogICAgICAtLXBhcGVyLWxpbWUtMjAwOiAjZTZlZTljOwogICAgICAtLXBhcGVyLWxpbWUtMzAwOiAjZGNlNzc1OwogICAgICAtLXBhcGVyLWxpbWUtNDAwOiAjZDRlMTU3OwogICAgICAtLXBhcGVyLWxpbWUtNTAwOiAjY2RkYzM5OwogICAgICAtLXBhcGVyLWxpbWUtNjAwOiAjYzBjYTMzOwogICAgICAtLXBhcGVyLWxpbWUtNzAwOiAjYWZiNDJiOwogICAgICAtLXBhcGVyLWxpbWUtODAwOiAjOWU5ZDI0OwogICAgICAtLXBhcGVyLWxpbWUtOTAwOiAjODI3NzE3OwogICAgICAtLXBhcGVyLWxpbWUtYTEwMDogI2Y0ZmY4MTsKICAgICAgLS1wYXBlci1saW1lLWEyMDA6ICNlZWZmNDE7CiAgICAgIC0tcGFwZXItbGltZS1hNDAwOiAjYzZmZjAwOwogICAgICAtLXBhcGVyLWxpbWUtYTcwMDogI2FlZWEwMDsKCiAgICAgIC0tcGFwZXIteWVsbG93LTUwOiAjZmZmZGU3OwogICAgICAtLXBhcGVyLXllbGxvdy0xMDA6ICNmZmY5YzQ7CiAgICAgIC0tcGFwZXIteWVsbG93LTIwMDogI2ZmZjU5ZDsKICAgICAgLS1wYXBlci15ZWxsb3ctMzAwOiAjZmZmMTc2OwogICAgICAtLXBhcGVyLXllbGxvdy00MDA6ICNmZmVlNTg7CiAgICAgIC0tcGFwZXIteWVsbG93LTUwMDogI2ZmZWIzYjsKICAgICAgLS1wYXBlci15ZWxsb3ctNjAwOiAjZmRkODM1OwogICAgICAtLXBhcGVyLXllbGxvdy03MDA6ICNmYmMwMmQ7CiAgICAgIC0tcGFwZXIteWVsbG93LTgwMDogI2Y5YTgyNTsKICAgICAgLS1wYXBlci15ZWxsb3ctOTAwOiAjZjU3ZjE3OwogICAgICAtLXBhcGVyLXllbGxvdy1hMTAwOiAjZmZmZjhkOwogICAgICAtLXBhcGVyLXllbGxvdy1hMjAwOiAjZmZmZjAwOwogICAgICAtLXBhcGVyLXllbGxvdy1hNDAwOiAjZmZlYTAwOwogICAgICAtLXBhcGVyLXllbGxvdy1hNzAwOiAjZmZkNjAwOwoKICAgICAgLS1wYXBlci1hbWJlci01MDogI2ZmZjhlMTsKICAgICAgLS1wYXBlci1hbWJlci0xMDA6ICNmZmVjYjM7CiAgICAgIC0tcGFwZXItYW1iZXItMjAwOiAjZmZlMDgyOwogICAgICAtLXBhcGVyLWFtYmVyLTMwMDogI2ZmZDU0ZjsKICAgICAgLS1wYXBlci1hbWJlci00MDA6ICNmZmNhMjg7CiAgICAgIC0tcGFwZXItYW1iZXItNTAwOiAjZmZjMTA3OwogICAgICAtLXBhcGVyLWFtYmVyLTYwMDogI2ZmYjMwMDsKICAgICAgLS1wYXBlci1hbWJlci03MDA6ICNmZmEwMDA7CiAgICAgIC0tcGFwZXItYW1iZXItODAwOiAjZmY4ZjAwOwogICAgICAtLXBhcGVyLWFtYmVyLTkwMDogI2ZmNmYwMDsKICAgICAgLS1wYXBlci1hbWJlci1hMTAwOiAjZmZlNTdmOwogICAgICAtLXBhcGVyLWFtYmVyLWEyMDA6ICNmZmQ3NDA7CiAgICAgIC0tcGFwZXItYW1iZXItYTQwMDogI2ZmYzQwMDsKICAgICAgLS1wYXBlci1hbWJlci1hNzAwOiAjZmZhYjAwOwoKICAgICAgLS1wYXBlci1vcmFuZ2UtNTA6ICNmZmYzZTA7CiAgICAgIC0tcGFwZXItb3JhbmdlLTEwMDogI2ZmZTBiMjsKICAgICAgLS1wYXBlci1vcmFuZ2UtMjAwOiAjZmZjYzgwOwogICAgICAtLXBhcGVyLW9yYW5nZS0zMDA6ICNmZmI3NGQ7CiAgICAgIC0tcGFwZXItb3JhbmdlLTQwMDogI2ZmYTcyNjsKICAgICAgLS1wYXBlci1vcmFuZ2UtNTAwOiAjZmY5ODAwOwogICAgICAtLXBhcGVyLW9yYW5nZS02MDA6ICNmYjhjMDA7CiAgICAgIC0tcGFwZXItb3JhbmdlLTcwMDogI2Y1N2MwMDsKICAgICAgLS1wYXBlci1vcmFuZ2UtODAwOiAjZWY2YzAwOwogICAgICAtLXBhcGVyLW9yYW5nZS05MDA6ICNlNjUxMDA7CiAgICAgIC0tcGFwZXItb3JhbmdlLWExMDA6ICNmZmQxODA7CiAgICAgIC0tcGFwZXItb3JhbmdlLWEyMDA6ICNmZmFiNDA7CiAgICAgIC0tcGFwZXItb3JhbmdlLWE0MDA6ICNmZjkxMDA7CiAgICAgIC0tcGFwZXItb3JhbmdlLWE3MDA6ICNmZjY1MDA7CgogICAgICAtLXBhcGVyLWRlZXAtb3JhbmdlLTUwOiAjZmJlOWU3OwogICAgICAtLXBhcGVyLWRlZXAtb3JhbmdlLTEwMDogI2ZmY2NiYzsKICAgICAgLS1wYXBlci1kZWVwLW9yYW5nZS0yMDA6ICNmZmFiOTE7CiAgICAgIC0tcGFwZXItZGVlcC1vcmFuZ2UtMzAwOiAjZmY4YTY1OwogICAgICAtLXBhcGVyLWRlZXAtb3JhbmdlLTQwMDogI2ZmNzA0MzsKICAgICAgLS1wYXBlci1kZWVwLW9yYW5nZS01MDA6ICNmZjU3MjI7CiAgICAgIC0tcGFwZXItZGVlcC1vcmFuZ2UtNjAwOiAjZjQ1MTFlOwogICAgICAtLXBhcGVyLWRlZXAtb3JhbmdlLTcwMDogI2U2NGExOTsKICAgICAgLS1wYXBlci1kZWVwLW9yYW5nZS04MDA6ICNkODQzMTU7CiAgICAgIC0tcGFwZXItZGVlcC1vcmFuZ2UtOTAwOiAjYmYzNjBjOwogICAgICAtLXBhcGVyLWRlZXAtb3JhbmdlLWExMDA6ICNmZjllODA7CiAgICAgIC0tcGFwZXItZGVlcC1vcmFuZ2UtYTIwMDogI2ZmNmU0MDsKICAgICAgLS1wYXBlci1kZWVwLW9yYW5nZS1hNDAwOiAjZmYzZDAwOwogICAgICAtLXBhcGVyLWRlZXAtb3JhbmdlLWE3MDA6ICNkZDJjMDA7CgogICAgICAtLXBhcGVyLWJyb3duLTUwOiAjZWZlYmU5OwogICAgICAtLXBhcGVyLWJyb3duLTEwMDogI2Q3Y2NjODsKICAgICAgLS1wYXBlci1icm93bi0yMDA6ICNiY2FhYTQ7CiAgICAgIC0tcGFwZXItYnJvd24tMzAwOiAjYTE4ODdmOwogICAgICAtLXBhcGVyLWJyb3duLTQwMDogIzhkNmU2MzsKICAgICAgLS1wYXBlci1icm93bi01MDA6ICM3OTU1NDg7CiAgICAgIC0tcGFwZXItYnJvd24tNjAwOiAjNmQ0YzQxOwogICAgICAtLXBhcGVyLWJyb3duLTcwMDogIzVkNDAzNzsKICAgICAgLS1wYXBlci1icm93bi04MDA6ICM0ZTM0MmU7CiAgICAgIC0tcGFwZXItYnJvd24tOTAwOiAjM2UyNzIzOwoKICAgICAgLS1wYXBlci1ncmV5LTUwOiAjZmFmYWZhOwogICAgICAtLXBhcGVyLWdyZXktMTAwOiAjZjVmNWY1OwogICAgICAtLXBhcGVyLWdyZXktMjAwOiAjZWVlZWVlOwogICAgICAtLXBhcGVyLWdyZXktMzAwOiAjZTBlMGUwOwogICAgICAtLXBhcGVyLWdyZXktNDAwOiAjYmRiZGJkOwogICAgICAtLXBhcGVyLWdyZXktNTAwOiAjOWU5ZTllOwogICAgICAtLXBhcGVyLWdyZXktNjAwOiAjNzU3NTc1OwogICAgICAtLXBhcGVyLWdyZXktNzAwOiAjNjE2MTYxOwogICAgICAtLXBhcGVyLWdyZXktODAwOiAjNDI0MjQyOwogICAgICAtLXBhcGVyLWdyZXktOTAwOiAjMjEyMTIxOwoKICAgICAgLS1wYXBlci1ibHVlLWdyZXktNTA6ICNlY2VmZjE7CiAgICAgIC0tcGFwZXItYmx1ZS1ncmV5LTEwMDogI2NmZDhkYzsKICAgICAgLS1wYXBlci1ibHVlLWdyZXktMjAwOiAjYjBiZWM1OwogICAgICAtLXBhcGVyLWJsdWUtZ3JleS0zMDA6ICM5MGE0YWU7CiAgICAgIC0tcGFwZXItYmx1ZS1ncmV5LTQwMDogIzc4OTA5YzsKICAgICAgLS1wYXBlci1ibHVlLWdyZXktNTAwOiAjNjA3ZDhiOwogICAgICAtLXBhcGVyLWJsdWUtZ3JleS02MDA6ICM1NDZlN2E7CiAgICAgIC0tcGFwZXItYmx1ZS1ncmV5LTcwMDogIzQ1NWE2NDsKICAgICAgLS1wYXBlci1ibHVlLWdyZXktODAwOiAjMzc0NzRmOwogICAgICAtLXBhcGVyLWJsdWUtZ3JleS05MDA6ICMyNjMyMzg7CgogICAgICAvKiBvcGFjaXR5IGZvciBkYXJrIHRleHQgb24gYSBsaWdodCBiYWNrZ3JvdW5kICovCiAgICAgIC0tZGFyay1kaXZpZGVyLW9wYWNpdHk6IDAuMTI7CiAgICAgIC0tZGFyay1kaXNhYmxlZC1vcGFjaXR5OiAwLjM4OyAvKiBvciBoaW50IHRleHQgb3IgaWNvbiAqLwogICAgICAtLWRhcmstc2Vjb25kYXJ5LW9wYWNpdHk6IDAuNTQ7CiAgICAgIC0tZGFyay1wcmltYXJ5LW9wYWNpdHk6IDAuODc7CgogICAgICAvKiBvcGFjaXR5IGZvciBsaWdodCB0ZXh0IG9uIGEgZGFyayBiYWNrZ3JvdW5kICovCiAgICAgIC0tbGlnaHQtZGl2aWRlci1vcGFjaXR5OiAwLjEyOwogICAgICAtLWxpZ2h0LWRpc2FibGVkLW9wYWNpdHk6IDAuMzsgLyogb3IgaGludCB0ZXh0IG9yIGljb24gKi8KICAgICAgLS1saWdodC1zZWNvbmRhcnktb3BhY2l0eTogMC43OwogICAgICAtLWxpZ2h0LXByaW1hcnktb3BhY2l0eTogMS4wOwoKICAgIH0KCiAgPC9zdHlsZT4KPC9jdXN0b20tc3R5bGU+CmA7ZmEuc2V0QXR0cmlidXRlKCJzdHlsZSIsImRpc3BsYXk6IG5vbmU7IiksZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChmYS5jb250ZW50KTsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzCiAgICBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50CiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCmNvbnN0IG1hPXhlYAo8Y3VzdG9tLXN0eWxlPgogIDxzdHlsZSBpcz0iY3VzdG9tLXN0eWxlIj4KICAgIGh0bWwgewogICAgICAvKgogICAgICAgKiBZb3UgY2FuIHVzZSB0aGVzZSBnZW5lcmljIHZhcmlhYmxlcyBpbiB5b3VyIGVsZW1lbnRzIGZvciBlYXN5IHRoZW1pbmcuCiAgICAgICAqIEZvciBleGFtcGxlLCBpZiBhbGwgeW91ciBlbGVtZW50cyB1c2UgXGAtLXByaW1hcnktdGV4dC1jb2xvclxgIGFzIGl0cyBtYWluCiAgICAgICAqIGNvbG9yLCB0aGVuIHN3aXRjaGluZyBmcm9tIGEgbGlnaHQgdG8gYSBkYXJrIHRoZW1lIGlzIGp1c3QgYSBtYXR0ZXIgb2YKICAgICAgICogY2hhbmdpbmcgdGhlIHZhbHVlIG9mIFxgLS1wcmltYXJ5LXRleHQtY29sb3JcYCBpbiB5b3VyIGFwcGxpY2F0aW9uLgogICAgICAgKi8KICAgICAgLS1wcmltYXJ5LXRleHQtY29sb3I6IHZhcigtLWxpZ2h0LXRoZW1lLXRleHQtY29sb3IpOwogICAgICAtLXByaW1hcnktYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbGlnaHQtdGhlbWUtYmFja2dyb3VuZC1jb2xvcik7CiAgICAgIC0tc2Vjb25kYXJ5LXRleHQtY29sb3I6IHZhcigtLWxpZ2h0LXRoZW1lLXNlY29uZGFyeS1jb2xvcik7CiAgICAgIC0tZGlzYWJsZWQtdGV4dC1jb2xvcjogdmFyKC0tbGlnaHQtdGhlbWUtZGlzYWJsZWQtY29sb3IpOwogICAgICAtLWRpdmlkZXItY29sb3I6IHZhcigtLWxpZ2h0LXRoZW1lLWRpdmlkZXItY29sb3IpOwogICAgICAtLWVycm9yLWNvbG9yOiB2YXIoLS1wYXBlci1kZWVwLW9yYW5nZS1hNzAwKTsKCiAgICAgIC8qCiAgICAgICAqIFByaW1hcnkgYW5kIGFjY2VudCBjb2xvcnMuIEFsc28gc2VlIGNvbG9yLmpzIGZvciBtb3JlIGNvbG9ycy4KICAgICAgICovCiAgICAgIC0tcHJpbWFyeS1jb2xvcjogdmFyKC0tcGFwZXItaW5kaWdvLTUwMCk7CiAgICAgIC0tbGlnaHQtcHJpbWFyeS1jb2xvcjogdmFyKC0tcGFwZXItaW5kaWdvLTEwMCk7CiAgICAgIC0tZGFyay1wcmltYXJ5LWNvbG9yOiB2YXIoLS1wYXBlci1pbmRpZ28tNzAwKTsKCiAgICAgIC0tYWNjZW50LWNvbG9yOiB2YXIoLS1wYXBlci1waW5rLWEyMDApOwogICAgICAtLWxpZ2h0LWFjY2VudC1jb2xvcjogdmFyKC0tcGFwZXItcGluay1hMTAwKTsKICAgICAgLS1kYXJrLWFjY2VudC1jb2xvcjogdmFyKC0tcGFwZXItcGluay1hNDAwKTsKCgogICAgICAvKgogICAgICAgKiBNYXRlcmlhbCBEZXNpZ24gTGlnaHQgYmFja2dyb3VuZCB0aGVtZQogICAgICAgKi8KICAgICAgLS1saWdodC10aGVtZS1iYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmOwogICAgICAtLWxpZ2h0LXRoZW1lLWJhc2UtY29sb3I6ICMwMDAwMDA7CiAgICAgIC0tbGlnaHQtdGhlbWUtdGV4dC1jb2xvcjogdmFyKC0tcGFwZXItZ3JleS05MDApOwogICAgICAtLWxpZ2h0LXRoZW1lLXNlY29uZGFyeS1jb2xvcjogIzczNzM3MzsgIC8qIGZvciBzZWNvbmRhcnkgdGV4dCBhbmQgaWNvbnMgKi8KICAgICAgLS1saWdodC10aGVtZS1kaXNhYmxlZC1jb2xvcjogIzliOWI5YjsgIC8qIGRpc2FibGVkL2hpbnQgdGV4dCAqLwogICAgICAtLWxpZ2h0LXRoZW1lLWRpdmlkZXItY29sb3I6ICNkYmRiZGI7CgogICAgICAvKgogICAgICAgKiBNYXRlcmlhbCBEZXNpZ24gRGFyayBiYWNrZ3JvdW5kIHRoZW1lCiAgICAgICAqLwogICAgICAtLWRhcmstdGhlbWUtYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tcGFwZXItZ3JleS05MDApOwogICAgICAtLWRhcmstdGhlbWUtYmFzZS1jb2xvcjogI2ZmZmZmZjsKICAgICAgLS1kYXJrLXRoZW1lLXRleHQtY29sb3I6ICNmZmZmZmY7CiAgICAgIC0tZGFyay10aGVtZS1zZWNvbmRhcnktY29sb3I6ICNiY2JjYmM7ICAvKiBmb3Igc2Vjb25kYXJ5IHRleHQgYW5kIGljb25zICovCiAgICAgIC0tZGFyay10aGVtZS1kaXNhYmxlZC1jb2xvcjogIzY0NjQ2NDsgIC8qIGRpc2FibGVkL2hpbnQgdGV4dCAqLwogICAgICAtLWRhcmstdGhlbWUtZGl2aWRlci1jb2xvcjogIzNjM2MzYzsKCiAgICAgIC8qCiAgICAgICAqIERlcHJlY2F0ZWQgdmFsdWVzIGJlY2F1c2Ugb2YgdGhlaXIgY29uZnVzaW5nIG5hbWVzLgogICAgICAgKi8KICAgICAgLS10ZXh0LXByaW1hcnktY29sb3I6IHZhcigtLWRhcmstdGhlbWUtdGV4dC1jb2xvcik7CiAgICAgIC0tZGVmYXVsdC1wcmltYXJ5LWNvbG9yOiB2YXIoLS1wcmltYXJ5LWNvbG9yKTsKICAgIH0KICA8L3N0eWxlPgo8L2N1c3RvbS1zdHlsZT5gO21hLnNldEF0dHJpYnV0ZSgic3R5bGUiLCJkaXNwbGF5OiBub25lOyIpLGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQobWEuY29udGVudCk7Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNSBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlCiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcwogICAgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudAogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwpjb25zdCBnYT17cHJvcGVydGllczp7bmFtZTp7dHlwZTpTdHJpbmd9LHZhbHVlOntub3RpZnk6ITAsdHlwZTpTdHJpbmd9LHJlcXVpcmVkOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITF9fSxhdHRhY2hlZDpmdW5jdGlvbigpe30sZGV0YWNoZWQ6ZnVuY3Rpb24oKXt9fTsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzCiAgICBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50CiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovbGV0IF9hPW51bGw7Y29uc3QgeWE9e3Byb3BlcnRpZXM6e3ZhbGlkYXRvcjp7dHlwZTpTdHJpbmd9LGludmFsaWQ6e25vdGlmeTohMCxyZWZsZWN0VG9BdHRyaWJ1dGU6ITAsdHlwZTpCb29sZWFuLHZhbHVlOiExLG9ic2VydmVyOiJfaW52YWxpZENoYW5nZWQifX0scmVnaXN0ZXJlZDpmdW5jdGlvbigpe19hPW5ldyBObyh7dHlwZToidmFsaWRhdG9yIn0pfSxfaW52YWxpZENoYW5nZWQ6ZnVuY3Rpb24oKXt0aGlzLmludmFsaWQ/dGhpcy5zZXRBdHRyaWJ1dGUoImFyaWEtaW52YWxpZCIsInRydWUiKTp0aGlzLnJlbW92ZUF0dHJpYnV0ZSgiYXJpYS1pbnZhbGlkIil9LGdldCBfdmFsaWRhdG9yKCl7cmV0dXJuIF9hJiZfYS5ieUtleSh0aGlzLnZhbGlkYXRvcil9LGhhc1ZhbGlkYXRvcjpmdW5jdGlvbigpe3JldHVybiBudWxsIT10aGlzLl92YWxpZGF0b3J9LHZhbGlkYXRlOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmludmFsaWQ9dm9pZCAwPT09dCYmdm9pZCAwIT09dGhpcy52YWx1ZT8hdGhpcy5fZ2V0VmFsaWRpdHkodGhpcy52YWx1ZSk6IXRoaXMuX2dldFZhbGlkaXR5KHQpLCF0aGlzLmludmFsaWR9LF9nZXRWYWxpZGl0eTpmdW5jdGlvbih0KXtyZXR1cm4hdGhpcy5oYXNWYWxpZGF0b3IoKXx8dGhpcy5fdmFsaWRhdG9yLnZhbGlkYXRlKHQpfX0sdmE9e3Byb3BlcnRpZXM6e2NoZWNrZWQ6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMSxyZWZsZWN0VG9BdHRyaWJ1dGU6ITAsbm90aWZ5OiEwLG9ic2VydmVyOiJfY2hlY2tlZENoYW5nZWQifSx0b2dnbGVzOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITAscmVmbGVjdFRvQXR0cmlidXRlOiEwfSx2YWx1ZTp7dHlwZTpTdHJpbmcsdmFsdWU6Im9uIixvYnNlcnZlcjoiX3ZhbHVlQ2hhbmdlZCJ9fSxvYnNlcnZlcnM6WyJfcmVxdWlyZWRDaGFuZ2VkKHJlcXVpcmVkKSJdLGNyZWF0ZWQ6ZnVuY3Rpb24oKXt0aGlzLl9oYXNJcm9uQ2hlY2tlZEVsZW1lbnRCZWhhdmlvcj0hMH0sX2dldFZhbGlkaXR5OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmRpc2FibGVkfHwhdGhpcy5yZXF1aXJlZHx8dGhpcy5jaGVja2VkfSxfcmVxdWlyZWRDaGFuZ2VkOmZ1bmN0aW9uKCl7dGhpcy5yZXF1aXJlZD90aGlzLnNldEF0dHJpYnV0ZSgiYXJpYS1yZXF1aXJlZCIsInRydWUiKTp0aGlzLnJlbW92ZUF0dHJpYnV0ZSgiYXJpYS1yZXF1aXJlZCIpfSxfY2hlY2tlZENoYW5nZWQ6ZnVuY3Rpb24oKXt0aGlzLmFjdGl2ZT10aGlzLmNoZWNrZWQsdGhpcy5maXJlKCJpcm9uLWNoYW5nZSIpfSxfdmFsdWVDaGFuZ2VkOmZ1bmN0aW9uKCl7bnVsbD09dGhpcy52YWx1ZSYmKHRoaXMudmFsdWU9Im9uIil9fSxiYT17b2JzZXJ2ZXJzOlsiX2ZvY3VzZWRDaGFuZ2VkKHJlY2VpdmVkRm9jdXNGcm9tS2V5Ym9hcmQpIl0sX2ZvY3VzZWRDaGFuZ2VkOmZ1bmN0aW9uKHQpe3QmJnRoaXMuZW5zdXJlUmlwcGxlKCksdGhpcy5oYXNSaXBwbGUoKSYmKHRoaXMuX3JpcHBsZS5ob2xkRG93bj10KX0sX2NyZWF0ZVJpcHBsZTpmdW5jdGlvbigpe3ZhciB0PXVhLl9jcmVhdGVSaXBwbGUoKTtyZXR1cm4gdC5pZD0iaW5rIix0LnNldEF0dHJpYnV0ZSgiY2VudGVyIiwiIiksdC5jbGFzc0xpc3QuYWRkKCJjaXJjbGUiKSx0fX0seGE9W2FhLHJhLHVhLGJhXSx3YT1beGEsW2dhLHlhLHZhXSx7X2NoZWNrZWRDaGFuZ2VkOmZ1bmN0aW9uKCl7dmEuX2NoZWNrZWRDaGFuZ2VkLmNhbGwodGhpcyksdGhpcy5oYXNSaXBwbGUoKSYmKHRoaXMuY2hlY2tlZD90aGlzLl9yaXBwbGUuc2V0QXR0cmlidXRlKCJjaGVja2VkIiwiIik6dGhpcy5fcmlwcGxlLnJlbW92ZUF0dHJpYnV0ZSgiY2hlY2tlZCIpKX0sX2J1dHRvblN0YXRlQ2hhbmdlZDpmdW5jdGlvbigpe3VhLl9idXR0b25TdGF0ZUNoYW5nZWQuY2FsbCh0aGlzKSx0aGlzLmRpc2FibGVkfHx0aGlzLmlzQXR0YWNoZWQmJih0aGlzLmNoZWNrZWQ9dGhpcy5hY3RpdmUpfX1dLFNhPXhlYDxzdHlsZT4KICA6aG9zdCB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgY3Vyc29yOiBwb2ludGVyOwogICAgLS1jYWxjdWxhdGVkLXBhcGVyLWNoZWNrYm94LXNpemU6IHZhcigtLXBhcGVyLWNoZWNrYm94LXNpemUsIDE4cHgpOwogICAgLyogLTFweCBpcyBhIHNlbnRpbmVsIGZvciB0aGUgZGVmYXVsdCBhbmQgaXMgcmVwbGFjZWQgaW4gXGBhdHRhY2hlZFxgLiAqLwogICAgLS1jYWxjdWxhdGVkLXBhcGVyLWNoZWNrYm94LWluay1zaXplOiB2YXIoLS1wYXBlci1jaGVja2JveC1pbmstc2l6ZSwgLTFweCk7CiAgICBAYXBwbHkgLS1wYXBlci1mb250LWNvbW1vbi1iYXNlOwogICAgbGluZS1oZWlnaHQ6IDA7CiAgICAtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50OwogIH0KCiAgOmhvc3QoW2hpZGRlbl0pIHsKICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKICB9CgogIDpob3N0KDpmb2N1cykgewogICAgb3V0bGluZTogbm9uZTsKICB9CgogIC5oaWRkZW4gewogICAgZGlzcGxheTogbm9uZTsKICB9CgogICNjaGVja2JveENvbnRhaW5lciB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICB3aWR0aDogdmFyKC0tY2FsY3VsYXRlZC1wYXBlci1jaGVja2JveC1zaXplKTsKICAgIGhlaWdodDogdmFyKC0tY2FsY3VsYXRlZC1wYXBlci1jaGVja2JveC1zaXplKTsKICAgIG1pbi13aWR0aDogdmFyKC0tY2FsY3VsYXRlZC1wYXBlci1jaGVja2JveC1zaXplKTsKICAgIG1hcmdpbjogdmFyKC0tcGFwZXItY2hlY2tib3gtbWFyZ2luLCBpbml0aWFsKTsKICAgIHZlcnRpY2FsLWFsaWduOiB2YXIoLS1wYXBlci1jaGVja2JveC12ZXJ0aWNhbC1hbGlnbiwgbWlkZGxlKTsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXBhcGVyLWNoZWNrYm94LXVuY2hlY2tlZC1iYWNrZ3JvdW5kLWNvbG9yLCB0cmFuc3BhcmVudCk7CiAgfQoKICAjaW5rIHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKCiAgICAvKiBDZW50ZXIgdGhlIHJpcHBsZSBpbiB0aGUgY2hlY2tib3ggYnkgbmVnYXRpdmUgb2Zmc2V0dGluZyBpdCBieQogICAgICogKGlua1dpZHRoIC0gcmlwcGxlV2lkdGgpIC8gMiAqLwogICAgdG9wOiBjYWxjKDBweCAtICh2YXIoLS1jYWxjdWxhdGVkLXBhcGVyLWNoZWNrYm94LWluay1zaXplKSAtIHZhcigtLWNhbGN1bGF0ZWQtcGFwZXItY2hlY2tib3gtc2l6ZSkpIC8gMik7CiAgICBsZWZ0OiBjYWxjKDBweCAtICh2YXIoLS1jYWxjdWxhdGVkLXBhcGVyLWNoZWNrYm94LWluay1zaXplKSAtIHZhcigtLWNhbGN1bGF0ZWQtcGFwZXItY2hlY2tib3gtc2l6ZSkpIC8gMik7CiAgICB3aWR0aDogdmFyKC0tY2FsY3VsYXRlZC1wYXBlci1jaGVja2JveC1pbmstc2l6ZSk7CiAgICBoZWlnaHQ6IHZhcigtLWNhbGN1bGF0ZWQtcGFwZXItY2hlY2tib3gtaW5rLXNpemUpOwogICAgY29sb3I6IHZhcigtLXBhcGVyLWNoZWNrYm94LXVuY2hlY2tlZC1pbmstY29sb3IsIHZhcigtLXByaW1hcnktdGV4dC1jb2xvcikpOwogICAgb3BhY2l0eTogMC42OwogICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgfQoKICAjaW5rOmRpcihydGwpIHsKICAgIHJpZ2h0OiBjYWxjKDBweCAtICh2YXIoLS1jYWxjdWxhdGVkLXBhcGVyLWNoZWNrYm94LWluay1zaXplKSAtIHZhcigtLWNhbGN1bGF0ZWQtcGFwZXItY2hlY2tib3gtc2l6ZSkpIC8gMik7CiAgICBsZWZ0OiBhdXRvOwogIH0KCiAgI2lua1tjaGVja2VkXSB7CiAgICBjb2xvcjogdmFyKC0tcGFwZXItY2hlY2tib3gtY2hlY2tlZC1pbmstY29sb3IsIHZhcigtLXByaW1hcnktY29sb3IpKTsKICB9CgogICNjaGVja2JveCB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgaGVpZ2h0OiAxMDAlOwogICAgYm9yZGVyOiBzb2xpZCAycHg7CiAgICBib3JkZXItY29sb3I6IHZhcigtLXBhcGVyLWNoZWNrYm94LXVuY2hlY2tlZC1jb2xvciwgdmFyKC0tcHJpbWFyeS10ZXh0LWNvbG9yKSk7CiAgICBib3JkZXItcmFkaXVzOiAycHg7CiAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgIC13ZWJraXQtdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAxNDBtcywgYm9yZGVyLWNvbG9yIDE0MG1zOwogICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAxNDBtcywgYm9yZGVyLWNvbG9yIDE0MG1zOwoKICAgIC13ZWJraXQtdHJhbnNpdGlvbi1kdXJhdGlvbjogdmFyKC0tcGFwZXItY2hlY2tib3gtYW5pbWF0aW9uLWR1cmF0aW9uLCAxNDBtcyk7CiAgICB0cmFuc2l0aW9uLWR1cmF0aW9uOiB2YXIoLS1wYXBlci1jaGVja2JveC1hbmltYXRpb24tZHVyYXRpb24sIDE0MG1zKTsKICB9CgogIC8qIGNoZWNrYm94IGNoZWNrZWQgYW5pbWF0aW9ucyAqLwogICNjaGVja2JveC5jaGVja2VkICNjaGVja21hcmsgewogICAgLXdlYmtpdC1hbmltYXRpb246IGNoZWNrbWFyay1leHBhbmQgMTQwbXMgZWFzZS1vdXQgZm9yd2FyZHM7CiAgICBhbmltYXRpb246IGNoZWNrbWFyay1leHBhbmQgMTQwbXMgZWFzZS1vdXQgZm9yd2FyZHM7CgogICAgLXdlYmtpdC1hbmltYXRpb24tZHVyYXRpb246IHZhcigtLXBhcGVyLWNoZWNrYm94LWFuaW1hdGlvbi1kdXJhdGlvbiwgMTQwbXMpOwogICAgYW5pbWF0aW9uLWR1cmF0aW9uOiB2YXIoLS1wYXBlci1jaGVja2JveC1hbmltYXRpb24tZHVyYXRpb24sIDE0MG1zKTsKICB9CgogIEAtd2Via2l0LWtleWZyYW1lcyBjaGVja21hcmstZXhwYW5kIHsKICAgIDAlIHsKICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDAsIDApIHJvdGF0ZSg0NWRlZyk7CiAgICB9CiAgICAxMDAlIHsKICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDEsIDEpIHJvdGF0ZSg0NWRlZyk7CiAgICB9CiAgfQoKICBAa2V5ZnJhbWVzIGNoZWNrbWFyay1leHBhbmQgewogICAgMCUgewogICAgICB0cmFuc2Zvcm06IHNjYWxlKDAsIDApIHJvdGF0ZSg0NWRlZyk7CiAgICB9CiAgICAxMDAlIHsKICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxLCAxKSByb3RhdGUoNDVkZWcpOwogICAgfQogIH0KCiAgI2NoZWNrYm94LmNoZWNrZWQgewogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tcGFwZXItY2hlY2tib3gtY2hlY2tlZC1jb2xvciwgdmFyKC0tcHJpbWFyeS1jb2xvcikpOwogICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1wYXBlci1jaGVja2JveC1jaGVja2VkLWNvbG9yLCB2YXIoLS1wcmltYXJ5LWNvbG9yKSk7CiAgfQoKICAjY2hlY2ttYXJrIHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHdpZHRoOiAzNiU7CiAgICBoZWlnaHQ6IDcwJTsKICAgIGJvcmRlci1zdHlsZTogc29saWQ7CiAgICBib3JkZXItdG9wOiBub25lOwogICAgYm9yZGVyLWxlZnQ6IG5vbmU7CiAgICBib3JkZXItcmlnaHQtd2lkdGg6IGNhbGMoMi8xNSAqIHZhcigtLWNhbGN1bGF0ZWQtcGFwZXItY2hlY2tib3gtc2l6ZSkpOwogICAgYm9yZGVyLWJvdHRvbS13aWR0aDogY2FsYygyLzE1ICogdmFyKC0tY2FsY3VsYXRlZC1wYXBlci1jaGVja2JveC1zaXplKSk7CiAgICBib3JkZXItY29sb3I6IHZhcigtLXBhcGVyLWNoZWNrYm94LWNoZWNrbWFyay1jb2xvciwgd2hpdGUpOwogICAgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiA5NyUgODYlOwogICAgdHJhbnNmb3JtLW9yaWdpbjogOTclIDg2JTsKICAgIGJveC1zaXppbmc6IGNvbnRlbnQtYm94OyAvKiBwcm90ZWN0IGFnYWluc3QgcGFnZS1sZXZlbCBib3gtc2l6aW5nICovCiAgfQoKICAjY2hlY2ttYXJrOmRpcihydGwpIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjogNTAlIDE0JTsKICAgIHRyYW5zZm9ybS1vcmlnaW46IDUwJSAxNCU7CiAgfQoKICAvKiBsYWJlbCAqLwogICNjaGVja2JveExhYmVsIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CiAgICBwYWRkaW5nLWxlZnQ6IHZhcigtLXBhcGVyLWNoZWNrYm94LWxhYmVsLXNwYWNpbmcsIDhweCk7CiAgICB3aGl0ZS1zcGFjZTogbm9ybWFsOwogICAgbGluZS1oZWlnaHQ6IG5vcm1hbDsKICAgIGNvbG9yOiB2YXIoLS1wYXBlci1jaGVja2JveC1sYWJlbC1jb2xvciwgdmFyKC0tcHJpbWFyeS10ZXh0LWNvbG9yKSk7CiAgICBAYXBwbHkgLS1wYXBlci1jaGVja2JveC1sYWJlbDsKICB9CgogIDpob3N0KFtjaGVja2VkXSkgI2NoZWNrYm94TGFiZWwgewogICAgY29sb3I6IHZhcigtLXBhcGVyLWNoZWNrYm94LWxhYmVsLWNoZWNrZWQtY29sb3IsIHZhcigtLXBhcGVyLWNoZWNrYm94LWxhYmVsLWNvbG9yLCB2YXIoLS1wcmltYXJ5LXRleHQtY29sb3IpKSk7CiAgICBAYXBwbHkgLS1wYXBlci1jaGVja2JveC1sYWJlbC1jaGVja2VkOwogIH0KCiAgI2NoZWNrYm94TGFiZWw6ZGlyKHJ0bCkgewogICAgcGFkZGluZy1yaWdodDogdmFyKC0tcGFwZXItY2hlY2tib3gtbGFiZWwtc3BhY2luZywgOHB4KTsKICAgIHBhZGRpbmctbGVmdDogMDsKICB9CgogICNjaGVja2JveExhYmVsW2hpZGRlbl0gewogICAgZGlzcGxheTogbm9uZTsKICB9CgogIC8qIGRpc2FibGVkIHN0YXRlICovCgogIDpob3N0KFtkaXNhYmxlZF0pICNjaGVja2JveCB7CiAgICBvcGFjaXR5OiAwLjU7CiAgICBib3JkZXItY29sb3I6IHZhcigtLXBhcGVyLWNoZWNrYm94LXVuY2hlY2tlZC1jb2xvciwgdmFyKC0tcHJpbWFyeS10ZXh0LWNvbG9yKSk7CiAgfQoKICA6aG9zdChbZGlzYWJsZWRdW2NoZWNrZWRdKSAjY2hlY2tib3ggewogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tcGFwZXItY2hlY2tib3gtdW5jaGVja2VkLWNvbG9yLCB2YXIoLS1wcmltYXJ5LXRleHQtY29sb3IpKTsKICAgIG9wYWNpdHk6IDAuNTsKICB9CgogIDpob3N0KFtkaXNhYmxlZF0pICNjaGVja2JveExhYmVsICB7CiAgICBvcGFjaXR5OiAwLjY1OwogIH0KCiAgLyogaW52YWxpZCBzdGF0ZSAqLwogICNjaGVja2JveC5pbnZhbGlkOm5vdCguY2hlY2tlZCkgewogICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1wYXBlci1jaGVja2JveC1lcnJvci1jb2xvciwgdmFyKC0tZXJyb3ItY29sb3IpKTsKICB9Cjwvc3R5bGU+Cgo8ZGl2IGlkPSJjaGVja2JveENvbnRhaW5lciI+CiAgPGRpdiBpZD0iY2hlY2tib3giIGNsYXNzJD0iW1tfY29tcHV0ZUNoZWNrYm94Q2xhc3MoY2hlY2tlZCwgaW52YWxpZCldXSI+CiAgICA8ZGl2IGlkPSJjaGVja21hcmsiIGNsYXNzJD0iW1tfY29tcHV0ZUNoZWNrbWFya0NsYXNzKGNoZWNrZWQpXV0iPjwvZGl2PgogIDwvZGl2Pgo8L2Rpdj4KCjxkaXYgaWQ9ImNoZWNrYm94TGFiZWwiPjxzbG90Pjwvc2xvdD48L2Rpdj5gOwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZQogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMKICAgIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzCiAgICBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50CiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCmlmKFNhLnNldEF0dHJpYnV0ZSgic3RyaXAtd2hpdGVzcGFjZSIsIiIpLGpyKHtfdGVtcGxhdGU6U2EsaXM6InBhcGVyLWNoZWNrYm94IixiZWhhdmlvcnM6W3dhXSxob3N0QXR0cmlidXRlczp7cm9sZToiY2hlY2tib3giLCJhcmlhLWNoZWNrZWQiOiExLHRhYmluZGV4OjB9LHByb3BlcnRpZXM6e2FyaWFBY3RpdmVBdHRyaWJ1dGU6e3R5cGU6U3RyaW5nLHZhbHVlOiJhcmlhLWNoZWNrZWQifX0sYXR0YWNoZWQ6ZnVuY3Rpb24oKXtEaSh0aGlzLChmdW5jdGlvbigpe2lmKCItMXB4Ij09PXRoaXMuZ2V0Q29tcHV0ZWRTdHlsZVZhbHVlKCItLWNhbGN1bGF0ZWQtcGFwZXItY2hlY2tib3gtaW5rLXNpemUiKS50cmltKCkpe3ZhciB0PXRoaXMuZ2V0Q29tcHV0ZWRTdHlsZVZhbHVlKCItLWNhbGN1bGF0ZWQtcGFwZXItY2hlY2tib3gtc2l6ZSIpLnRyaW0oKSxlPSJweCIsbj10Lm1hdGNoKC9bQS1aYS16XSskLyk7bnVsbCE9PW4mJihlPW5bMF0pO3ZhciBpPXBhcnNlRmxvYXQodCkscj04LzMqaTsicHgiPT09ZSYmKHI9TWF0aC5mbG9vcihyKSklMiE9aSUyJiZyKyssdGhpcy51cGRhdGVTdHlsZXMoeyItLXBhcGVyLWNoZWNrYm94LWluay1zaXplIjpyK2V9KX19KSl9LF9jb21wdXRlQ2hlY2tib3hDbGFzczpmdW5jdGlvbih0LGUpe3ZhciBuPSIiO3JldHVybiB0JiYobis9ImNoZWNrZWQgIiksZSYmKG4rPSJpbnZhbGlkIiksbn0sX2NvbXB1dGVDaGVja21hcmtDbGFzczpmdW5jdGlvbih0KXtyZXR1cm4gdD8iIjoiaGlkZGVuIn0sX2NyZWF0ZVJpcHBsZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9yaXBwbGVDb250YWluZXI9dGhpcy4kLmNoZWNrYm94Q29udGFpbmVyLGJhLl9jcmVhdGVSaXBwbGUuY2FsbCh0aGlzKX19KSwhd2luZG93LnBvbHltZXJTa2lwTG9hZGluZ0ZvbnRSb2JvdG8pe2NvbnN0IHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGluayIpO3QucmVsPSJzdHlsZXNoZWV0Iix0LnR5cGU9InRleHQvY3NzIix0LmNyb3NzT3JpZ2luPSJhbm9ueW1vdXMiLHQuaHJlZj0iaHR0cHM6Ly9mb250cy5nb29nbGVhcGlzLmNvbS9jc3M/ZmFtaWx5PVJvYm90bytNb25vOjQwMCw3MDB8Um9ib3RvOjQwMCwzMDAsMzAwaXRhbGljLDQwMGl0YWxpYyw1MDAsNTAwaXRhbGljLDcwMCw3MDBpdGFsaWMiLGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQodCl9Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNSBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlCiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcwogICAgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudAogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqL2NvbnN0IE1hPXhlYDxjdXN0b20tc3R5bGU+CiAgPHN0eWxlIGlzPSJjdXN0b20tc3R5bGUiPgogICAgaHRtbCB7CgogICAgICAvKiBTaGFyZWQgU3R5bGVzICovCiAgICAgIC0tcGFwZXItZm9udC1jb21tb24tYmFzZTogewogICAgICAgIGZvbnQtZmFtaWx5OiAnUm9ib3RvJywgJ05vdG8nLCBzYW5zLXNlcmlmOwogICAgICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkOwogICAgICB9OwoKICAgICAgLS1wYXBlci1mb250LWNvbW1vbi1jb2RlOiB7CiAgICAgICAgZm9udC1mYW1pbHk6ICdSb2JvdG8gTW9ubycsICdDb25zb2xhcycsICdNZW5sbycsIG1vbm9zcGFjZTsKICAgICAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDsKICAgICAgfTsKCiAgICAgIC0tcGFwZXItZm9udC1jb21tb24tZXhwZW5zaXZlLWtlcm5pbmc6IHsKICAgICAgICB0ZXh0LXJlbmRlcmluZzogb3B0aW1pemVMZWdpYmlsaXR5OwogICAgICB9OwoKICAgICAgLS1wYXBlci1mb250LWNvbW1vbi1ub3dyYXA6IHsKICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7CiAgICAgIH07CgogICAgICAvKiBNYXRlcmlhbCBGb250IFN0eWxlcyAqLwoKICAgICAgLS1wYXBlci1mb250LWRpc3BsYXk0OiB7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItZm9udC1jb21tb24tYmFzZTsKICAgICAgICBAYXBwbHkgLS1wYXBlci1mb250LWNvbW1vbi1ub3dyYXA7CgogICAgICAgIGZvbnQtc2l6ZTogMTEycHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDMwMDsKICAgICAgICBsZXR0ZXItc3BhY2luZzogLS4wNDRlbTsKICAgICAgICBsaW5lLWhlaWdodDogMTIwcHg7CiAgICAgIH07CgogICAgICAtLXBhcGVyLWZvbnQtZGlzcGxheTM6IHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1mb250LWNvbW1vbi1iYXNlOwogICAgICAgIEBhcHBseSAtLXBhcGVyLWZvbnQtY29tbW9uLW5vd3JhcDsKCiAgICAgICAgZm9udC1zaXplOiA1NnB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA0MDA7CiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IC0uMDI2ZW07CiAgICAgICAgbGluZS1oZWlnaHQ6IDYwcHg7CiAgICAgIH07CgogICAgICAtLXBhcGVyLWZvbnQtZGlzcGxheTI6IHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1mb250LWNvbW1vbi1iYXNlOwoKICAgICAgICBmb250LXNpemU6IDQ1cHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDQwMDsKICAgICAgICBsZXR0ZXItc3BhY2luZzogLS4wMThlbTsKICAgICAgICBsaW5lLWhlaWdodDogNDhweDsKICAgICAgfTsKCiAgICAgIC0tcGFwZXItZm9udC1kaXNwbGF5MTogewogICAgICAgIEBhcHBseSAtLXBhcGVyLWZvbnQtY29tbW9uLWJhc2U7CgogICAgICAgIGZvbnQtc2l6ZTogMzRweDsKICAgICAgICBmb250LXdlaWdodDogNDAwOwogICAgICAgIGxldHRlci1zcGFjaW5nOiAtLjAxZW07CiAgICAgICAgbGluZS1oZWlnaHQ6IDQwcHg7CiAgICAgIH07CgogICAgICAtLXBhcGVyLWZvbnQtaGVhZGxpbmU6IHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1mb250LWNvbW1vbi1iYXNlOwoKICAgICAgICBmb250LXNpemU6IDI0cHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDQwMDsKICAgICAgICBsZXR0ZXItc3BhY2luZzogLS4wMTJlbTsKICAgICAgICBsaW5lLWhlaWdodDogMzJweDsKICAgICAgfTsKCiAgICAgIC0tcGFwZXItZm9udC10aXRsZTogewogICAgICAgIEBhcHBseSAtLXBhcGVyLWZvbnQtY29tbW9uLWJhc2U7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItZm9udC1jb21tb24tbm93cmFwOwoKICAgICAgICBmb250LXNpemU6IDIwcHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgICBsaW5lLWhlaWdodDogMjhweDsKICAgICAgfTsKCiAgICAgIC0tcGFwZXItZm9udC1zdWJoZWFkOiB7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItZm9udC1jb21tb24tYmFzZTsKCiAgICAgICAgZm9udC1zaXplOiAxNnB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA0MDA7CiAgICAgICAgbGluZS1oZWlnaHQ6IDI0cHg7CiAgICAgIH07CgogICAgICAtLXBhcGVyLWZvbnQtYm9keTI6IHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1mb250LWNvbW1vbi1iYXNlOwoKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgICBsaW5lLWhlaWdodDogMjRweDsKICAgICAgfTsKCiAgICAgIC0tcGFwZXItZm9udC1ib2R5MTogewogICAgICAgIEBhcHBseSAtLXBhcGVyLWZvbnQtY29tbW9uLWJhc2U7CgogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBmb250LXdlaWdodDogNDAwOwogICAgICAgIGxpbmUtaGVpZ2h0OiAyMHB4OwogICAgICB9OwoKICAgICAgLS1wYXBlci1mb250LWNhcHRpb246IHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1mb250LWNvbW1vbi1iYXNlOwogICAgICAgIEBhcHBseSAtLXBhcGVyLWZvbnQtY29tbW9uLW5vd3JhcDsKCiAgICAgICAgZm9udC1zaXplOiAxMnB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA0MDA7CiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDExZW07CiAgICAgICAgbGluZS1oZWlnaHQ6IDIwcHg7CiAgICAgIH07CgogICAgICAtLXBhcGVyLWZvbnQtbWVudTogewogICAgICAgIEBhcHBseSAtLXBhcGVyLWZvbnQtY29tbW9uLWJhc2U7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItZm9udC1jb21tb24tbm93cmFwOwoKICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgICBsaW5lLWhlaWdodDogMjRweDsKICAgICAgfTsKCiAgICAgIC0tcGFwZXItZm9udC1idXR0b246IHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1mb250LWNvbW1vbi1iYXNlOwogICAgICAgIEBhcHBseSAtLXBhcGVyLWZvbnQtY29tbW9uLW5vd3JhcDsKCiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDE4ZW07CiAgICAgICAgbGluZS1oZWlnaHQ6IDI0cHg7CiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKICAgICAgfTsKCiAgICAgIC0tcGFwZXItZm9udC1jb2RlMjogewogICAgICAgIEBhcHBseSAtLXBhcGVyLWZvbnQtY29tbW9uLWNvZGU7CgogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBmb250LXdlaWdodDogNzAwOwogICAgICAgIGxpbmUtaGVpZ2h0OiAyMHB4OwogICAgICB9OwoKICAgICAgLS1wYXBlci1mb250LWNvZGUxOiB7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItZm9udC1jb21tb24tY29kZTsKCiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgICAgbGluZS1oZWlnaHQ6IDIwcHg7CiAgICAgIH07CgogICAgfQoKICA8L3N0eWxlPgo8L2N1c3RvbS1zdHlsZT5gO01hLnNldEF0dHJpYnV0ZSgic3R5bGUiLCJkaXNwbGF5OiBub25lOyIpLGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoTWEuY29udGVudCk7Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNSBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlCiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcwogICAgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudAogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwpjb25zdCBFYT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZW1wbGF0ZSIpO0VhLnNldEF0dHJpYnV0ZSgic3R5bGUiLCJkaXNwbGF5OiBub25lOyIpLEVhLmlubmVySFRNTD0nPGRvbS1tb2R1bGUgaWQ9InBhcGVyLWRpYWxvZy1zaGFyZWQtc3R5bGVzIj5cbiAgPHRlbXBsYXRlPlxuICAgIDxzdHlsZT5cbiAgICAgIDpob3N0IHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIG1hcmdpbjogMjRweCA0MHB4O1xuXG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXBhcGVyLWRpYWxvZy1iYWNrZ3JvdW5kLWNvbG9yLCB2YXIoLS1wcmltYXJ5LWJhY2tncm91bmQtY29sb3IpKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXBhcGVyLWRpYWxvZy1jb2xvciwgdmFyKC0tcHJpbWFyeS10ZXh0LWNvbG9yKSk7XG5cbiAgICAgICAgQGFwcGx5IC0tcGFwZXItZm9udC1ib2R5MTtcbiAgICAgICAgQGFwcGx5IC0tc2hhZG93LWVsZXZhdGlvbi0xNmRwO1xuICAgICAgICBAYXBwbHkgLS1wYXBlci1kaWFsb2c7XG4gICAgICB9XG5cbiAgICAgIDpob3N0ID4gOjpzbG90dGVkKCopIHtcbiAgICAgICAgbWFyZ2luLXRvcDogMjBweDtcbiAgICAgICAgcGFkZGluZzogMCAyNHB4O1xuICAgICAgfVxuXG4gICAgICA6aG9zdCA+IDo6c2xvdHRlZCgubm8tcGFkZGluZykge1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgfVxuXG4gICAgICBcbiAgICAgIDpob3N0ID4gOjpzbG90dGVkKCo6Zmlyc3QtY2hpbGQpIHtcbiAgICAgICAgbWFyZ2luLXRvcDogMjRweDtcbiAgICAgIH1cblxuICAgICAgOmhvc3QgPiA6OnNsb3R0ZWQoKjpsYXN0LWNoaWxkKSB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDI0cHg7XG4gICAgICB9XG5cbiAgICAgIC8qIEluIDEueCwgdGhpcyBzZWxlY3RvciB3YXMgYDpob3N0ID4gOjpjb250ZW50IGgyYC4gSW4gMi54IDxzbG90PiBhbGxvd3NcbiAgICAgIHRvIHNlbGVjdCBkaXJlY3QgY2hpbGRyZW4gb25seSwgd2hpY2ggaW5jcmVhc2VzIHRoZSB3ZWlnaHQgb2YgdGhpc1xuICAgICAgc2VsZWN0b3IsIHNvIHdlIGhhdmUgdG8gcmUtZGVmaW5lIGZpcnN0LWNoaWxkL2xhc3QtY2hpbGQgbWFyZ2lucyBiZWxvdy4gKi9cbiAgICAgIDpob3N0ID4gOjpzbG90dGVkKGgyKSB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgbWFyZ2luOiAwO1xuXG4gICAgICAgIEBhcHBseSAtLXBhcGVyLWZvbnQtdGl0bGU7XG4gICAgICAgIEBhcHBseSAtLXBhcGVyLWRpYWxvZy10aXRsZTtcbiAgICAgIH1cblxuICAgICAgLyogQXBwbHkgbWl4aW4gYWdhaW4sIGluIGNhc2UgaXQgc2V0cyBtYXJnaW4tdG9wLiAqL1xuICAgICAgOmhvc3QgPiA6OnNsb3R0ZWQoaDI6Zmlyc3QtY2hpbGQpIHtcbiAgICAgICAgbWFyZ2luLXRvcDogMjRweDtcbiAgICAgICAgQGFwcGx5IC0tcGFwZXItZGlhbG9nLXRpdGxlO1xuICAgICAgfVxuXG4gICAgICAvKiBBcHBseSBtaXhpbiBhZ2FpbiwgaW4gY2FzZSBpdCBzZXRzIG1hcmdpbi1ib3R0b20uICovXG4gICAgICA6aG9zdCA+IDo6c2xvdHRlZChoMjpsYXN0LWNoaWxkKSB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDI0cHg7XG4gICAgICAgIEBhcHBseSAtLXBhcGVyLWRpYWxvZy10aXRsZTtcbiAgICAgIH1cblxuICAgICAgOmhvc3QgPiA6OnNsb3R0ZWQoLnBhcGVyLWRpYWxvZy1idXR0b25zKSxcbiAgICAgIDpob3N0ID4gOjpzbG90dGVkKC5idXR0b25zKSB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgcGFkZGluZzogOHB4IDhweCA4cHggMjRweDtcbiAgICAgICAgbWFyZ2luOiAwO1xuXG4gICAgICAgIGNvbG9yOiB2YXIoLS1wYXBlci1kaWFsb2ctYnV0dG9uLWNvbG9yLCB2YXIoLS1wcmltYXJ5LWNvbG9yKSk7XG5cbiAgICAgICAgQGFwcGx5IC0tbGF5b3V0LWhvcml6b250YWw7XG4gICAgICAgIEBhcHBseSAtLWxheW91dC1lbmQtanVzdGlmaWVkO1xuICAgICAgfVxuICAgIDwvc3R5bGU+XG4gIDwvdGVtcGxhdGU+XG48L2RvbS1tb2R1bGU+Jyxkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKEVhLmNvbnRlbnQpOwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZQogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMKICAgIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KY29uc3QgVGE9W3twcm9wZXJ0aWVzOnthbmltYXRpb25Db25maWc6e3R5cGU6T2JqZWN0fSxlbnRyeUFuaW1hdGlvbjp7b2JzZXJ2ZXI6Il9lbnRyeUFuaW1hdGlvbkNoYW5nZWQiLHR5cGU6U3RyaW5nfSxleGl0QW5pbWF0aW9uOntvYnNlcnZlcjoiX2V4aXRBbmltYXRpb25DaGFuZ2VkIix0eXBlOlN0cmluZ319LF9lbnRyeUFuaW1hdGlvbkNoYW5nZWQ6ZnVuY3Rpb24oKXt0aGlzLmFuaW1hdGlvbkNvbmZpZz10aGlzLmFuaW1hdGlvbkNvbmZpZ3x8e30sdGhpcy5hbmltYXRpb25Db25maWcuZW50cnk9W3tuYW1lOnRoaXMuZW50cnlBbmltYXRpb24sbm9kZTp0aGlzfV19LF9leGl0QW5pbWF0aW9uQ2hhbmdlZDpmdW5jdGlvbigpe3RoaXMuYW5pbWF0aW9uQ29uZmlnPXRoaXMuYW5pbWF0aW9uQ29uZmlnfHx7fSx0aGlzLmFuaW1hdGlvbkNvbmZpZy5leGl0PVt7bmFtZTp0aGlzLmV4aXRBbmltYXRpb24sbm9kZTp0aGlzfV19LF9jb3B5UHJvcGVydGllczpmdW5jdGlvbih0LGUpe2Zvcih2YXIgbiBpbiBlKXRbbl09ZVtuXX0sX2Nsb25lQ29uZmlnOmZ1bmN0aW9uKHQpe3ZhciBlPXtpc0Nsb25lOiEwfTtyZXR1cm4gdGhpcy5fY29weVByb3BlcnRpZXMoZSx0KSxlfSxfZ2V0QW5pbWF0aW9uQ29uZmlnUmVjdXJzaXZlOmZ1bmN0aW9uKHQsZSxuKXt2YXIgaTtpZih0aGlzLmFuaW1hdGlvbkNvbmZpZylpZih0aGlzLmFuaW1hdGlvbkNvbmZpZy52YWx1ZSYmImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMuYW5pbWF0aW9uQ29uZmlnLnZhbHVlKXRoaXMuX3dhcm4odGhpcy5fbG9nZigicGxheUFuaW1hdGlvbiIsIlBsZWFzZSBwdXQgJ2FuaW1hdGlvbkNvbmZpZycgaW5zaWRlIG9mIHlvdXIgY29tcG9uZW50cyAncHJvcGVydGllcycgb2JqZWN0IGluc3RlYWQgb2Ygb3V0c2lkZSBvZiBpdC4iKSk7ZWxzZSBpZihpPXQ/dGhpcy5hbmltYXRpb25Db25maWdbdF06dGhpcy5hbmltYXRpb25Db25maWcsQXJyYXkuaXNBcnJheShpKXx8KGk9W2ldKSxpKWZvcih2YXIgcixvPTA7cj1pW29dO28rKylpZihyLmFuaW1hdGFibGUpci5hbmltYXRhYmxlLl9nZXRBbmltYXRpb25Db25maWdSZWN1cnNpdmUoci50eXBlfHx0LGUsbik7ZWxzZSBpZihyLmlkKXt2YXIgYT1lW3IuaWRdO2E/KGEuaXNDbG9uZXx8KGVbci5pZF09dGhpcy5fY2xvbmVDb25maWcoYSksYT1lW3IuaWRdKSx0aGlzLl9jb3B5UHJvcGVydGllcyhhLHIpKTplW3IuaWRdPXJ9ZWxzZSBuLnB1c2gocil9LGdldEFuaW1hdGlvbkNvbmZpZzpmdW5jdGlvbih0KXt2YXIgZT17fSxuPVtdO2Zvcih2YXIgaSBpbiB0aGlzLl9nZXRBbmltYXRpb25Db25maWdSZWN1cnNpdmUodCxlLG4pLGUpbi5wdXNoKGVbaV0pO3JldHVybiBufX0se19jb25maWd1cmVBbmltYXRpb25zOmZ1bmN0aW9uKHQpe3ZhciBlPVtdLG49W107aWYodC5sZW5ndGg+MClmb3IobGV0IGUsaT0wO2U9dFtpXTtpKyspe2xldCB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoZS5uYW1lKTtpZih0LmlzTmVvbkFuaW1hdGlvbil7bGV0IGk9bnVsbDt0LmNvbmZpZ3VyZXx8KHQuY29uZmlndXJlPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsfSksaT10LmNvbmZpZ3VyZShlKSxuLnB1c2goe3Jlc3VsdDppLGNvbmZpZzplLG5lb25BbmltYXRpb246dH0pfWVsc2UgY29uc29sZS53YXJuKHRoaXMuaXMrIjoiLGUubmFtZSwibm90IGZvdW5kISIpfWZvcih2YXIgaT0wO2k8bi5sZW5ndGg7aSsrKXtsZXQgdD1uW2ldLnJlc3VsdCxyPW5baV0uY29uZmlnLG89bltpXS5uZW9uQW5pbWF0aW9uO3RyeXsiZnVuY3Rpb24iIT10eXBlb2YgdC5jYW5jZWwmJih0PWRvY3VtZW50LnRpbWVsaW5lLnBsYXkodCkpfWNhdGNoKGUpe3Q9bnVsbCxjb25zb2xlLndhcm4oIkNvdWxkbnQgcGxheSIsIigiLHIubmFtZSwiKS4iLGUpfXQmJmUucHVzaCh7bmVvbkFuaW1hdGlvbjpvLGNvbmZpZzpyLGFuaW1hdGlvbjp0fSl9cmV0dXJuIGV9LF9zaG91bGRDb21wbGV0ZTpmdW5jdGlvbih0KXtmb3IodmFyIGU9ITAsbj0wO248dC5sZW5ndGg7bisrKWlmKCJmaW5pc2hlZCIhPXRbbl0uYW5pbWF0aW9uLnBsYXlTdGF0ZSl7ZT0hMTticmVha31yZXR1cm4gZX0sX2NvbXBsZXRlOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0wO2U8dC5sZW5ndGg7ZSsrKXRbZV0ubmVvbkFuaW1hdGlvbi5jb21wbGV0ZSh0W2VdLmNvbmZpZyk7Zm9yKGU9MDtlPHQubGVuZ3RoO2UrKyl0W2VdLmFuaW1hdGlvbi5jYW5jZWwoKX0scGxheUFuaW1hdGlvbjpmdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMuZ2V0QW5pbWF0aW9uQ29uZmlnKHQpO2lmKG4pe3RoaXMuX2FjdGl2ZT10aGlzLl9hY3RpdmV8fHt9LHRoaXMuX2FjdGl2ZVt0XSYmKHRoaXMuX2NvbXBsZXRlKHRoaXMuX2FjdGl2ZVt0XSksZGVsZXRlIHRoaXMuX2FjdGl2ZVt0XSk7dmFyIGk9dGhpcy5fY29uZmlndXJlQW5pbWF0aW9ucyhuKTtpZigwIT1pLmxlbmd0aCl7dGhpcy5fYWN0aXZlW3RdPWk7Zm9yKHZhciByPTA7cjxpLmxlbmd0aDtyKyspaVtyXS5hbmltYXRpb24ub25maW5pc2g9ZnVuY3Rpb24oKXt0aGlzLl9zaG91bGRDb21wbGV0ZShpKSYmKHRoaXMuX2NvbXBsZXRlKGkpLGRlbGV0ZSB0aGlzLl9hY3RpdmVbdF0sdGhpcy5maXJlKCJuZW9uLWFuaW1hdGlvbi1maW5pc2giLGUse2J1YmJsZXM6ITF9KSl9LmJpbmQodGhpcyl9ZWxzZSB0aGlzLmZpcmUoIm5lb24tYW5pbWF0aW9uLWZpbmlzaCIsZSx7YnViYmxlczohMX0pfX0sY2FuY2VsQW5pbWF0aW9uOmZ1bmN0aW9uKCl7Zm9yKHZhciB0IGluIHRoaXMuX2FjdGl2ZSl7dmFyIGU9dGhpcy5fYWN0aXZlW3RdO2Zvcih2YXIgbiBpbiBlKWVbbl0uYW5pbWF0aW9uLmNhbmNlbCgpfXRoaXMuX2FjdGl2ZT17fX19XTsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzCiAgICBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50CiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCi8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNSBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlCiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcwogICAgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudAogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwpsZXQgQ2E7Y29uc3QgQWE9e3Byb3BlcnRpZXM6e3NpemluZ1RhcmdldDp7dHlwZTpPYmplY3QsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc319LGZpdEludG86e3R5cGU6T2JqZWN0LHZhbHVlOndpbmRvd30sbm9PdmVybGFwOnt0eXBlOkJvb2xlYW59LHBvc2l0aW9uVGFyZ2V0Ont0eXBlOkVsZW1lbnR9LGhvcml6b250YWxBbGlnbjp7dHlwZTpTdHJpbmd9LHZlcnRpY2FsQWxpZ246e3R5cGU6U3RyaW5nfSxkeW5hbWljQWxpZ246e3R5cGU6Qm9vbGVhbn0saG9yaXpvbnRhbE9mZnNldDp7dHlwZTpOdW1iZXIsdmFsdWU6MCxub3RpZnk6ITB9LHZlcnRpY2FsT2Zmc2V0Ont0eXBlOk51bWJlcix2YWx1ZTowLG5vdGlmeTohMH0sYXV0b0ZpdE9uQXR0YWNoOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITF9LGV4cGFuZFNpemluZ1RhcmdldEZvclNjcm9sbGJhcnM6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMX0sX2ZpdEluZm86e3R5cGU6T2JqZWN0fX0sZ2V0IF9maXRXaWR0aCgpe3JldHVybiB0aGlzLmZpdEludG89PT13aW5kb3c/dGhpcy5maXRJbnRvLmlubmVyV2lkdGg6dGhpcy5maXRJbnRvLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRofSxnZXQgX2ZpdEhlaWdodCgpe3JldHVybiB0aGlzLmZpdEludG89PT13aW5kb3c/dGhpcy5maXRJbnRvLmlubmVySGVpZ2h0OnRoaXMuZml0SW50by5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHR9LGdldCBfZml0TGVmdCgpe3JldHVybiB0aGlzLmZpdEludG89PT13aW5kb3c/MDp0aGlzLmZpdEludG8uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdH0sZ2V0IF9maXRUb3AoKXtyZXR1cm4gdGhpcy5maXRJbnRvPT09d2luZG93PzA6dGhpcy5maXRJbnRvLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcH0sZ2V0IF9kZWZhdWx0UG9zaXRpb25UYXJnZXQoKXt2YXIgdD1lcih0aGlzKS5wYXJlbnROb2RlO3JldHVybiB0JiZ0Lm5vZGVUeXBlPT09Tm9kZS5ET0NVTUVOVF9GUkFHTUVOVF9OT0RFJiYodD10Lmhvc3QpLHR9LGdldCBfbG9jYWxlSG9yaXpvbnRhbEFsaWduKCl7aWYodGhpcy5faXNSVEwpe2lmKCJyaWdodCI9PT10aGlzLmhvcml6b250YWxBbGlnbilyZXR1cm4ibGVmdCI7aWYoImxlZnQiPT09dGhpcy5ob3Jpem9udGFsQWxpZ24pcmV0dXJuInJpZ2h0In1yZXR1cm4gdGhpcy5ob3Jpem9udGFsQWxpZ259LGdldCBfX3Nob3VsZFBvc2l0aW9uKCl7cmV0dXJuKHRoaXMuaG9yaXpvbnRhbEFsaWdufHx0aGlzLnZlcnRpY2FsQWxpZ24pJiZ0aGlzLnBvc2l0aW9uVGFyZ2V0fSxnZXQgX2lzUlRMKCl7cmV0dXJuIHZvaWQgMD09PXRoaXMuX21lbW9pemVkSXNSVEwmJih0aGlzLl9tZW1vaXplZElzUlRMPSJydGwiPT13aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzKS5kaXJlY3Rpb24pLHRoaXMuX21lbW9pemVkSXNSVEx9LGF0dGFjaGVkOmZ1bmN0aW9uKCl7dGhpcy5wb3NpdGlvblRhcmdldD10aGlzLnBvc2l0aW9uVGFyZ2V0fHx0aGlzLl9kZWZhdWx0UG9zaXRpb25UYXJnZXQsdGhpcy5hdXRvRml0T25BdHRhY2gmJigibm9uZSI9PT13aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzKS5kaXNwbGF5P3NldFRpbWVvdXQoZnVuY3Rpb24oKXt0aGlzLmZpdCgpfS5iaW5kKHRoaXMpKTood2luZG93LlNoYWR5RE9NJiZTaGFkeURPTS5mbHVzaCgpLHRoaXMuZml0KCkpKX0sZGV0YWNoZWQ6ZnVuY3Rpb24oKXt0aGlzLl9fZGVmZXJyZWRGaXQmJihjbGVhclRpbWVvdXQodGhpcy5fX2RlZmVycmVkRml0KSx0aGlzLl9fZGVmZXJyZWRGaXQ9bnVsbCl9LGZpdDpmdW5jdGlvbigpe3RoaXMucG9zaXRpb24oKSx0aGlzLmNvbnN0cmFpbigpLHRoaXMuY2VudGVyKCl9LF9kaXNjb3ZlckluZm86ZnVuY3Rpb24oKXtpZighdGhpcy5fZml0SW5mbyl7dmFyIHQ9d2luZG93LmdldENvbXB1dGVkU3R5bGUodGhpcyksZT13aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzLnNpemluZ1RhcmdldCk7dGhpcy5fZml0SW5mbz17aW5saW5lU3R5bGU6e3RvcDp0aGlzLnN0eWxlLnRvcHx8IiIsbGVmdDp0aGlzLnN0eWxlLmxlZnR8fCIiLHBvc2l0aW9uOnRoaXMuc3R5bGUucG9zaXRpb258fCIifSxzaXplcklubGluZVN0eWxlOnttYXhXaWR0aDp0aGlzLnNpemluZ1RhcmdldC5zdHlsZS5tYXhXaWR0aHx8IiIsbWF4SGVpZ2h0OnRoaXMuc2l6aW5nVGFyZ2V0LnN0eWxlLm1heEhlaWdodHx8IiIsYm94U2l6aW5nOnRoaXMuc2l6aW5nVGFyZ2V0LnN0eWxlLmJveFNpemluZ3x8IiJ9LHBvc2l0aW9uZWRCeTp7dmVydGljYWxseToiYXV0byIhPT10LnRvcD8idG9wIjoiYXV0byIhPT10LmJvdHRvbT8iYm90dG9tIjpudWxsLGhvcml6b250YWxseToiYXV0byIhPT10LmxlZnQ/ImxlZnQiOiJhdXRvIiE9PXQucmlnaHQ/InJpZ2h0IjpudWxsfSxzaXplZEJ5OntoZWlnaHQ6Im5vbmUiIT09ZS5tYXhIZWlnaHQsd2lkdGg6Im5vbmUiIT09ZS5tYXhXaWR0aCxtaW5XaWR0aDpwYXJzZUludChlLm1pbldpZHRoLDEwKXx8MCxtaW5IZWlnaHQ6cGFyc2VJbnQoZS5taW5IZWlnaHQsMTApfHwwfSxtYXJnaW46e3RvcDpwYXJzZUludCh0Lm1hcmdpblRvcCwxMCl8fDAscmlnaHQ6cGFyc2VJbnQodC5tYXJnaW5SaWdodCwxMCl8fDAsYm90dG9tOnBhcnNlSW50KHQubWFyZ2luQm90dG9tLDEwKXx8MCxsZWZ0OnBhcnNlSW50KHQubWFyZ2luTGVmdCwxMCl8fDB9fX19LHJlc2V0Rml0OmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fZml0SW5mb3x8e307Zm9yKHZhciBlIGluIHQuc2l6ZXJJbmxpbmVTdHlsZSl0aGlzLnNpemluZ1RhcmdldC5zdHlsZVtlXT10LnNpemVySW5saW5lU3R5bGVbZV07Zm9yKHZhciBlIGluIHQuaW5saW5lU3R5bGUpdGhpcy5zdHlsZVtlXT10LmlubGluZVN0eWxlW2VdO3RoaXMuX2ZpdEluZm89bnVsbH0scmVmaXQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnNpemluZ1RhcmdldC5zY3JvbGxMZWZ0LGU9dGhpcy5zaXppbmdUYXJnZXQuc2Nyb2xsVG9wO3RoaXMucmVzZXRGaXQoKSx0aGlzLmZpdCgpLHRoaXMuc2l6aW5nVGFyZ2V0LnNjcm9sbExlZnQ9dCx0aGlzLnNpemluZ1RhcmdldC5zY3JvbGxUb3A9ZX0scG9zaXRpb246ZnVuY3Rpb24oKXtpZighdGhpcy5fX3Nob3VsZFBvc2l0aW9uKXJldHVybjt0aGlzLl9kaXNjb3ZlckluZm8oKSx3aW5kb3cuU2hhZHlET00mJndpbmRvdy5TaGFkeURPTS5mbHVzaCgpLHRoaXMuc3R5bGUucG9zaXRpb249ImZpeGVkIix0aGlzLnNpemluZ1RhcmdldC5zdHlsZS5ib3hTaXppbmc9ImJvcmRlci1ib3giLHRoaXMuc3R5bGUubGVmdD0iMHB4Iix0aGlzLnN0eWxlLnRvcD0iMHB4Ijt2YXIgdD10aGlzLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGU9dGhpcy5fX2dldE5vcm1hbGl6ZWRSZWN0KHRoaXMucG9zaXRpb25UYXJnZXQpLG49dGhpcy5fX2dldE5vcm1hbGl6ZWRSZWN0KHRoaXMuZml0SW50byk7bGV0IGkscixvLGE7dGhpcy5leHBhbmRTaXppbmdUYXJnZXRGb3JTY3JvbGxiYXJzJiYoaT10aGlzLnNpemluZ1RhcmdldC5vZmZzZXRXaWR0aCxyPXRoaXMuc2l6aW5nVGFyZ2V0Lm9mZnNldEhlaWdodCxvPXRoaXMuc2l6aW5nVGFyZ2V0LmNsaWVudFdpZHRoLGE9dGhpcy5zaXppbmdUYXJnZXQuY2xpZW50SGVpZ2h0KTt2YXIgcz10aGlzLl9maXRJbmZvLm1hcmdpbixsPXRoaXMuX19nZXRQb3NpdGlvbih0aGlzLl9sb2NhbGVIb3Jpem9udGFsQWxpZ24sdGhpcy52ZXJ0aWNhbEFsaWduLHt3aWR0aDp0LndpZHRoK3MubGVmdCtzLnJpZ2h0LGhlaWdodDp0LmhlaWdodCtzLnRvcCtzLmJvdHRvbX0sdCxlLG4pLGM9bC5sZWZ0K3MubGVmdCx1PWwudG9wK3MudG9wLGg9TWF0aC5taW4obi5yaWdodC1zLnJpZ2h0LGMrdC53aWR0aCksZD1NYXRoLm1pbihuLmJvdHRvbS1zLmJvdHRvbSx1K3QuaGVpZ2h0KTtjPU1hdGgubWF4KG4ubGVmdCtzLmxlZnQsTWF0aC5taW4oYyxoLXRoaXMuX2ZpdEluZm8uc2l6ZWRCeS5taW5XaWR0aCkpLHU9TWF0aC5tYXgobi50b3Arcy50b3AsTWF0aC5taW4odSxkLXRoaXMuX2ZpdEluZm8uc2l6ZWRCeS5taW5IZWlnaHQpKTtjb25zdCBwPU1hdGgubWF4KGgtYyx0aGlzLl9maXRJbmZvLnNpemVkQnkubWluV2lkdGgpLGY9TWF0aC5tYXgoZC11LHRoaXMuX2ZpdEluZm8uc2l6ZWRCeS5taW5IZWlnaHQpO3RoaXMuc2l6aW5nVGFyZ2V0LnN0eWxlLm1heFdpZHRoPXArInB4Iix0aGlzLnNpemluZ1RhcmdldC5zdHlsZS5tYXhIZWlnaHQ9ZisicHgiO2NvbnN0IG09Yy10LmxlZnQsZz11LXQudG9wO2lmKHRoaXMuc3R5bGUubGVmdD1gJHttfXB4YCx0aGlzLnN0eWxlLnRvcD1gJHtnfXB4YCx0aGlzLmV4cGFuZFNpemluZ1RhcmdldEZvclNjcm9sbGJhcnMpe2NvbnN0IHQ9dGhpcy5zaXppbmdUYXJnZXQub2Zmc2V0SGVpZ2h0LGU9dC10aGlzLnNpemluZ1RhcmdldC5jbGllbnRIZWlnaHQtKHItYSk7aWYoZT4wKXtjb25zdCBpPU1hdGgubWluKG4uaGVpZ2h0LXMudG9wLXMuYm90dG9tLGYrZSk7dGhpcy5zaXppbmdUYXJnZXQuc3R5bGUubWF4SGVpZ2h0PWAke2l9cHhgO2NvbnN0IHI9dGhpcy5zaXppbmdUYXJnZXQub2Zmc2V0SGVpZ2h0LG89ci10O2xldCBhOyJ0b3AiPT09bC52ZXJ0aWNhbEFsaWduP2E9ZzoibWlkZGxlIj09PWwudmVydGljYWxBbGlnbj9hPWctby8yOiJib3R0b20iPT09bC52ZXJ0aWNhbEFsaWduJiYoYT1nLW8pLGE9TWF0aC5tYXgobi50b3Arcy50b3AsTWF0aC5taW4oYSxuLmJvdHRvbS1zLmJvdHRvbS1yKSksdGhpcy5zdHlsZS50b3A9YCR7YX1weGB9Y29uc3QgYz10aGlzLnNpemluZ1RhcmdldC5vZmZzZXRXaWR0aCx1PWMtdGhpcy5zaXppbmdUYXJnZXQuY2xpZW50V2lkdGgtKGktbyk7aWYodT4wKXtjb25zdCB0PSgoKT0+e2lmKHZvaWQgMCE9PUNhKXJldHVybiBDYTtjb25zdCB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO09iamVjdC5hc3NpZ24odC5zdHlsZSx7b3ZlcmZsb3c6ImF1dG8iLHBvc2l0aW9uOiJmaXhlZCIsbGVmdDoiMHB4Iix0b3A6IjBweCIsbWF4V2lkdGg6IjEwMHB4IixtYXhIZWlnaHQ6IjEwMHB4In0pO2NvbnN0IGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7cmV0dXJuIGUuc3R5bGUud2lkdGg9IjIwMHB4IixlLnN0eWxlLmhlaWdodD0iMjAwcHgiLHQuYXBwZW5kQ2hpbGQoZSksZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0KSxDYT1NYXRoLmFicyh0Lm9mZnNldFdpZHRoLTEwMCk+MT90Lm9mZnNldFdpZHRoLXQuY2xpZW50V2lkdGg6MCxkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKHQpLENhfSkoKSxlPU1hdGgubWluKG4ud2lkdGgtcy5sZWZ0LXMucmlnaHQscCt1LXQpO3RoaXMuc2l6aW5nVGFyZ2V0LnN0eWxlLm1heFdpZHRoPWAke2V9cHhgO2NvbnN0IGk9dGhpcy5zaXppbmdUYXJnZXQub2Zmc2V0V2lkdGgrdCxyPWktYztsZXQgbzsibGVmdCI9PT1sLmhvcml6b250YWxBbGlnbj9vPW06ImNlbnRlciI9PT1sLmhvcml6b250YWxBbGlnbj9vPW0tci8yOiJyaWdodCI9PT1sLmhvcml6b250YWxBbGlnbiYmKG89bS1yKSxvPU1hdGgubWF4KG4ubGVmdCtzLmxlZnQsTWF0aC5taW4obyxuLnJpZ2h0LXMucmlnaHQtaSkpLHRoaXMuc3R5bGUubGVmdD1gJHtvfXB4YH19fSxjb25zdHJhaW46ZnVuY3Rpb24oKXtpZighdGhpcy5fX3Nob3VsZFBvc2l0aW9uKXt0aGlzLl9kaXNjb3ZlckluZm8oKTt2YXIgdD10aGlzLl9maXRJbmZvO3QucG9zaXRpb25lZEJ5LnZlcnRpY2FsbHl8fCh0aGlzLnN0eWxlLnBvc2l0aW9uPSJmaXhlZCIsdGhpcy5zdHlsZS50b3A9IjBweCIpLHQucG9zaXRpb25lZEJ5Lmhvcml6b250YWxseXx8KHRoaXMuc3R5bGUucG9zaXRpb249ImZpeGVkIix0aGlzLnN0eWxlLmxlZnQ9IjBweCIpLHRoaXMuc2l6aW5nVGFyZ2V0LnN0eWxlLmJveFNpemluZz0iYm9yZGVyLWJveCI7dmFyIGU9dGhpcy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTt0LnNpemVkQnkuaGVpZ2h0fHx0aGlzLl9fc2l6ZURpbWVuc2lvbihlLHQucG9zaXRpb25lZEJ5LnZlcnRpY2FsbHksInRvcCIsImJvdHRvbSIsIkhlaWdodCIpLHQuc2l6ZWRCeS53aWR0aHx8dGhpcy5fX3NpemVEaW1lbnNpb24oZSx0LnBvc2l0aW9uZWRCeS5ob3Jpem9udGFsbHksImxlZnQiLCJyaWdodCIsIldpZHRoIil9fSxfc2l6ZURpbWVuc2lvbjpmdW5jdGlvbih0LGUsbixpLHIpe3RoaXMuX19zaXplRGltZW5zaW9uKHQsZSxuLGkscil9LF9fc2l6ZURpbWVuc2lvbjpmdW5jdGlvbih0LGUsbixpLHIpe3ZhciBvPXRoaXMuX2ZpdEluZm8sYT10aGlzLl9fZ2V0Tm9ybWFsaXplZFJlY3QodGhpcy5maXRJbnRvKSxzPSJXaWR0aCI9PT1yP2Eud2lkdGg6YS5oZWlnaHQsbD1lPT09aSxjPSJvZmZzZXQiK3I7dGhpcy5zaXppbmdUYXJnZXQuc3R5bGVbIm1heCIrcl09cy1vLm1hcmdpbltsP246aV0tKGw/cy10W2ldOnRbbl0pLSh0aGlzW2NdLXRoaXMuc2l6aW5nVGFyZ2V0W2NdKSsicHgifSxjZW50ZXI6ZnVuY3Rpb24oKXtpZighdGhpcy5fX3Nob3VsZFBvc2l0aW9uKXt0aGlzLl9kaXNjb3ZlckluZm8oKTt2YXIgdD10aGlzLl9maXRJbmZvLnBvc2l0aW9uZWRCeTtpZighdC52ZXJ0aWNhbGx5fHwhdC5ob3Jpem9udGFsbHkpe3RoaXMuc3R5bGUucG9zaXRpb249ImZpeGVkIix0LnZlcnRpY2FsbHl8fCh0aGlzLnN0eWxlLnRvcD0iMHB4IiksdC5ob3Jpem9udGFsbHl8fCh0aGlzLnN0eWxlLmxlZnQ9IjBweCIpO3ZhciBlPXRoaXMuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksbj10aGlzLl9fZ2V0Tm9ybWFsaXplZFJlY3QodGhpcy5maXRJbnRvKTtpZighdC52ZXJ0aWNhbGx5KXRoaXMuc3R5bGUudG9wPW4udG9wLWUudG9wKyhuLmhlaWdodC1lLmhlaWdodCkvMisicHgiO2lmKCF0Lmhvcml6b250YWxseSl0aGlzLnN0eWxlLmxlZnQ9bi5sZWZ0LWUubGVmdCsobi53aWR0aC1lLndpZHRoKS8yKyJweCJ9fX0sX19nZXROb3JtYWxpemVkUmVjdDpmdW5jdGlvbih0KXtyZXR1cm4gdD09PWRvY3VtZW50LmRvY3VtZW50RWxlbWVudHx8dD09PXdpbmRvdz97dG9wOjAsbGVmdDowLHdpZHRoOndpbmRvdy5pbm5lcldpZHRoLGhlaWdodDp3aW5kb3cuaW5uZXJIZWlnaHQscmlnaHQ6d2luZG93LmlubmVyV2lkdGgsYm90dG9tOndpbmRvdy5pbm5lckhlaWdodH06dC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKX0sX19nZXRPZmZzY3JlZW5BcmVhOmZ1bmN0aW9uKHQsZSxuKXt2YXIgaT1NYXRoLm1pbigwLHQudG9wKStNYXRoLm1pbigwLG4uYm90dG9tLSh0LnRvcCtlLmhlaWdodCkpLHI9TWF0aC5taW4oMCx0LmxlZnQpK01hdGgubWluKDAsbi5yaWdodC0odC5sZWZ0K2Uud2lkdGgpKTtyZXR1cm4gTWF0aC5hYnMoaSkqZS53aWR0aCtNYXRoLmFicyhyKSplLmhlaWdodH0sX19nZXRQb3NpdGlvbjpmdW5jdGlvbih0LGUsbixpLHIsbyl7dmFyIGEscz1be3ZlcnRpY2FsQWxpZ246InRvcCIsaG9yaXpvbnRhbEFsaWduOiJsZWZ0Iix0b3A6ci50b3ArdGhpcy52ZXJ0aWNhbE9mZnNldCxsZWZ0OnIubGVmdCt0aGlzLmhvcml6b250YWxPZmZzZXR9LHt2ZXJ0aWNhbEFsaWduOiJ0b3AiLGhvcml6b250YWxBbGlnbjoicmlnaHQiLHRvcDpyLnRvcCt0aGlzLnZlcnRpY2FsT2Zmc2V0LGxlZnQ6ci5yaWdodC1uLndpZHRoLXRoaXMuaG9yaXpvbnRhbE9mZnNldH0se3ZlcnRpY2FsQWxpZ246ImJvdHRvbSIsaG9yaXpvbnRhbEFsaWduOiJsZWZ0Iix0b3A6ci5ib3R0b20tbi5oZWlnaHQtdGhpcy52ZXJ0aWNhbE9mZnNldCxsZWZ0OnIubGVmdCt0aGlzLmhvcml6b250YWxPZmZzZXR9LHt2ZXJ0aWNhbEFsaWduOiJib3R0b20iLGhvcml6b250YWxBbGlnbjoicmlnaHQiLHRvcDpyLmJvdHRvbS1uLmhlaWdodC10aGlzLnZlcnRpY2FsT2Zmc2V0LGxlZnQ6ci5yaWdodC1uLndpZHRoLXRoaXMuaG9yaXpvbnRhbE9mZnNldH1dO2lmKHRoaXMubm9PdmVybGFwKXtmb3IodmFyIGw9MCxjPXMubGVuZ3RoO2w8YztsKyspe3ZhciB1PXt9O2Zvcih2YXIgaCBpbiBzW2xdKXVbaF09c1tsXVtoXTtzLnB1c2godSl9c1swXS50b3A9c1sxXS50b3ArPXIuaGVpZ2h0LHNbMl0udG9wPXNbM10udG9wLT1yLmhlaWdodCxzWzRdLmxlZnQ9c1s2XS5sZWZ0Kz1yLndpZHRoLHNbNV0ubGVmdD1zWzddLmxlZnQtPXIud2lkdGh9ZT0iYXV0byI9PT1lP251bGw6ZSwodD0iYXV0byI9PT10P251bGw6dCkmJiJjZW50ZXIiIT09dHx8KHMucHVzaCh7dmVydGljYWxBbGlnbjoidG9wIixob3Jpem9udGFsQWxpZ246ImNlbnRlciIsdG9wOnIudG9wK3RoaXMudmVydGljYWxPZmZzZXQrKHRoaXMubm9PdmVybGFwP3IuaGVpZ2h0OjApLGxlZnQ6ci5sZWZ0LWkud2lkdGgvMityLndpZHRoLzIrdGhpcy5ob3Jpem9udGFsT2Zmc2V0fSkscy5wdXNoKHt2ZXJ0aWNhbEFsaWduOiJib3R0b20iLGhvcml6b250YWxBbGlnbjoiY2VudGVyIix0b3A6ci5ib3R0b20tbi5oZWlnaHQtdGhpcy52ZXJ0aWNhbE9mZnNldC0odGhpcy5ub092ZXJsYXA/ci5oZWlnaHQ6MCksbGVmdDpyLmxlZnQtaS53aWR0aC8yK3Iud2lkdGgvMit0aGlzLmhvcml6b250YWxPZmZzZXR9KSksZSYmIm1pZGRsZSIhPT1lfHwocy5wdXNoKHt2ZXJ0aWNhbEFsaWduOiJtaWRkbGUiLGhvcml6b250YWxBbGlnbjoibGVmdCIsdG9wOnIudG9wLWkuaGVpZ2h0LzIrci5oZWlnaHQvMit0aGlzLnZlcnRpY2FsT2Zmc2V0LGxlZnQ6ci5sZWZ0K3RoaXMuaG9yaXpvbnRhbE9mZnNldCsodGhpcy5ub092ZXJsYXA/ci53aWR0aDowKX0pLHMucHVzaCh7dmVydGljYWxBbGlnbjoibWlkZGxlIixob3Jpem9udGFsQWxpZ246InJpZ2h0Iix0b3A6ci50b3AtaS5oZWlnaHQvMityLmhlaWdodC8yK3RoaXMudmVydGljYWxPZmZzZXQsbGVmdDpyLnJpZ2h0LW4ud2lkdGgtdGhpcy5ob3Jpem9udGFsT2Zmc2V0LSh0aGlzLm5vT3ZlcmxhcD9yLndpZHRoOjApfSkpLCJtaWRkbGUiPT09ZSYmImNlbnRlciI9PT10JiZzLnB1c2goe3ZlcnRpY2FsQWxpZ246Im1pZGRsZSIsaG9yaXpvbnRhbEFsaWduOiJjZW50ZXIiLHRvcDpyLnRvcC1pLmhlaWdodC8yK3IuaGVpZ2h0LzIrdGhpcy52ZXJ0aWNhbE9mZnNldCxsZWZ0OnIubGVmdC1pLndpZHRoLzIrci53aWR0aC8yK3RoaXMuaG9yaXpvbnRhbE9mZnNldH0pO2ZvcihsPTA7bDxzLmxlbmd0aDtsKyspe3ZhciBkPXNbbF0scD1kLnZlcnRpY2FsQWxpZ249PT1lLGY9ZC5ob3Jpem9udGFsQWxpZ249PT10O2lmKCF0aGlzLmR5bmFtaWNBbGlnbiYmIXRoaXMubm9PdmVybGFwJiZwJiZmKXthPWQ7YnJlYWt9dmFyIG09KCFlfHxwKSYmKCF0fHxmKTtpZih0aGlzLmR5bmFtaWNBbGlnbnx8bSl7aWYoZC5vZmZzY3JlZW5BcmVhPXRoaXMuX19nZXRPZmZzY3JlZW5BcmVhKGQsbixvKSwwPT09ZC5vZmZzY3JlZW5BcmVhJiZtKXthPWQ7YnJlYWt9dmFyIGc9ZC5vZmZzY3JlZW5BcmVhLShhPWF8fGQpLm9mZnNjcmVlbkFyZWE7KGc8MHx8MD09PWcmJihwfHxmKSkmJihhPWQpfX1yZXR1cm4gYX19OwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTYgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZQogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMKICAgIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KdmFyIGthPUVsZW1lbnQucHJvdG90eXBlLExhPWthLm1hdGNoZXN8fGthLm1hdGNoZXNTZWxlY3Rvcnx8a2EubW96TWF0Y2hlc1NlbGVjdG9yfHxrYS5tc01hdGNoZXNTZWxlY3Rvcnx8a2Eub01hdGNoZXNTZWxlY3Rvcnx8a2Eud2Via2l0TWF0Y2hlc1NlbGVjdG9yO2NvbnN0IFBhPW5ldyBjbGFzc3tnZXRUYWJiYWJsZU5vZGVzKHQpe3ZhciBlPVtdO3JldHVybiB0aGlzLl9jb2xsZWN0VGFiYmFibGVOb2Rlcyh0LGUpP3RoaXMuX3NvcnRCeVRhYkluZGV4KGUpOmV9aXNGb2N1c2FibGUodCl7cmV0dXJuIExhLmNhbGwodCwiaW5wdXQsIHNlbGVjdCwgdGV4dGFyZWEsIGJ1dHRvbiwgb2JqZWN0Iik/TGEuY2FsbCh0LCI6bm90KFtkaXNhYmxlZF0pIik6TGEuY2FsbCh0LCJhW2hyZWZdLCBhcmVhW2hyZWZdLCBpZnJhbWUsIFt0YWJpbmRleF0sIFtjb250ZW50RWRpdGFibGVdIil9aXNUYWJiYWJsZSh0KXtyZXR1cm4gdGhpcy5pc0ZvY3VzYWJsZSh0KSYmTGEuY2FsbCh0LCc6bm90KFt0YWJpbmRleD0iLTEiXSknKSYmdGhpcy5faXNWaXNpYmxlKHQpfV9ub3JtYWxpemVkVGFiSW5kZXgodCl7aWYodGhpcy5pc0ZvY3VzYWJsZSh0KSl7dmFyIGU9dC5nZXRBdHRyaWJ1dGUoInRhYmluZGV4Iil8fDA7cmV0dXJuIE51bWJlcihlKX1yZXR1cm4tMX1fY29sbGVjdFRhYmJhYmxlTm9kZXModCxlKXtpZih0Lm5vZGVUeXBlIT09Tm9kZS5FTEVNRU5UX05PREUpcmV0dXJuITE7dmFyIG49dDtpZighdGhpcy5faXNWaXNpYmxlKG4pKXJldHVybiExO3ZhciBpLHI9dGhpcy5fbm9ybWFsaXplZFRhYkluZGV4KG4pLG89cj4wO3I+PTAmJmUucHVzaChuKSxpPSJjb250ZW50Ij09PW4ubG9jYWxOYW1lfHwic2xvdCI9PT1uLmxvY2FsTmFtZT9lcihuKS5nZXREaXN0cmlidXRlZE5vZGVzKCk6ZXIobi5yb290fHxuKS5jaGlsZHJlbjtmb3IodmFyIGE9MDthPGkubGVuZ3RoO2ErKylvPXRoaXMuX2NvbGxlY3RUYWJiYWJsZU5vZGVzKGlbYV0sZSl8fG87cmV0dXJuIG99X2lzVmlzaWJsZSh0KXt2YXIgZT10LnN0eWxlO3JldHVybiJoaWRkZW4iIT09ZS52aXNpYmlsaXR5JiYibm9uZSIhPT1lLmRpc3BsYXkmJigiaGlkZGVuIiE9PShlPXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHQpKS52aXNpYmlsaXR5JiYibm9uZSIhPT1lLmRpc3BsYXkpfV9zb3J0QnlUYWJJbmRleCh0KXt2YXIgZT10Lmxlbmd0aDtpZihlPDIpcmV0dXJuIHQ7dmFyIG49TWF0aC5jZWlsKGUvMiksaT10aGlzLl9zb3J0QnlUYWJJbmRleCh0LnNsaWNlKDAsbikpLHI9dGhpcy5fc29ydEJ5VGFiSW5kZXgodC5zbGljZShuKSk7cmV0dXJuIHRoaXMuX21lcmdlU29ydEJ5VGFiSW5kZXgoaSxyKX1fbWVyZ2VTb3J0QnlUYWJJbmRleCh0LGUpe2Zvcih2YXIgbj1bXTt0Lmxlbmd0aD4wJiZlLmxlbmd0aD4wOyl0aGlzLl9oYXNMb3dlclRhYk9yZGVyKHRbMF0sZVswXSk/bi5wdXNoKGUuc2hpZnQoKSk6bi5wdXNoKHQuc2hpZnQoKSk7cmV0dXJuIG4uY29uY2F0KHQsZSl9X2hhc0xvd2VyVGFiT3JkZXIodCxlKXt2YXIgbj1NYXRoLm1heCh0LnRhYkluZGV4LDApLGk9TWF0aC5tYXgoZS50YWJJbmRleCwwKTtyZXR1cm4gMD09PW58fDA9PT1pP2k+bjpuPml9fTsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzCiAgICBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50CiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovanIoe190ZW1wbGF0ZTp4ZWAKICAgIDxzdHlsZT4KICAgICAgOmhvc3QgewogICAgICAgIHBvc2l0aW9uOiBmaXhlZDsKICAgICAgICB0b3A6IDA7CiAgICAgICAgbGVmdDogMDsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0taXJvbi1vdmVybGF5LWJhY2tkcm9wLWJhY2tncm91bmQtY29sb3IsICMwMDApOwogICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjJzOwogICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgICAgIEBhcHBseSAtLWlyb24tb3ZlcmxheS1iYWNrZHJvcDsKICAgICAgfQoKICAgICAgOmhvc3QoLm9wZW5lZCkgewogICAgICAgIG9wYWNpdHk6IHZhcigtLWlyb24tb3ZlcmxheS1iYWNrZHJvcC1vcGFjaXR5LCAwLjYpOwogICAgICAgIHBvaW50ZXItZXZlbnRzOiBhdXRvOwogICAgICAgIEBhcHBseSAtLWlyb24tb3ZlcmxheS1iYWNrZHJvcC1vcGVuZWQ7CiAgICAgIH0KICAgIDwvc3R5bGU+CgogICAgPHNsb3Q+PC9zbG90PgpgLGlzOiJpcm9uLW92ZXJsYXktYmFja2Ryb3AiLHByb3BlcnRpZXM6e29wZW5lZDp7cmVmbGVjdFRvQXR0cmlidXRlOiEwLHR5cGU6Qm9vbGVhbix2YWx1ZTohMSxvYnNlcnZlcjoiX29wZW5lZENoYW5nZWQifX0sbGlzdGVuZXJzOnt0cmFuc2l0aW9uZW5kOiJfb25UcmFuc2l0aW9uZW5kIn0sY3JlYXRlZDpmdW5jdGlvbigpe3RoaXMuX19vcGVuZWRSYWY9bnVsbH0sYXR0YWNoZWQ6ZnVuY3Rpb24oKXt0aGlzLm9wZW5lZCYmdGhpcy5fb3BlbmVkQ2hhbmdlZCh0aGlzLm9wZW5lZCl9LHByZXBhcmU6ZnVuY3Rpb24oKXt0aGlzLm9wZW5lZCYmIXRoaXMucGFyZW50Tm9kZSYmZXIoZG9jdW1lbnQuYm9keSkuYXBwZW5kQ2hpbGQodGhpcyl9LG9wZW46ZnVuY3Rpb24oKXt0aGlzLm9wZW5lZD0hMH0sY2xvc2U6ZnVuY3Rpb24oKXt0aGlzLm9wZW5lZD0hMX0sY29tcGxldGU6ZnVuY3Rpb24oKXt0aGlzLm9wZW5lZHx8dGhpcy5wYXJlbnROb2RlIT09ZG9jdW1lbnQuYm9keXx8ZXIodGhpcy5wYXJlbnROb2RlKS5yZW1vdmVDaGlsZCh0aGlzKX0sX29uVHJhbnNpdGlvbmVuZDpmdW5jdGlvbih0KXt0JiZ0LnRhcmdldD09PXRoaXMmJnRoaXMuY29tcGxldGUoKX0sX29wZW5lZENoYW5nZWQ6ZnVuY3Rpb24odCl7aWYodCl0aGlzLnByZXBhcmUoKTtlbHNle3ZhciBlPXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHRoaXMpOyIwcyIhPT1lLnRyYW5zaXRpb25EdXJhdGlvbiYmMCE9ZS5vcGFjaXR5fHx0aGlzLmNvbXBsZXRlKCl9dGhpcy5pc0F0dGFjaGVkJiYodGhpcy5fX29wZW5lZFJhZiYmKHdpbmRvdy5jYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLl9fb3BlbmVkUmFmKSx0aGlzLl9fb3BlbmVkUmFmPW51bGwpLHRoaXMuc2Nyb2xsVG9wPXRoaXMuc2Nyb2xsVG9wLHRoaXMuX19vcGVuZWRSYWY9d2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZShmdW5jdGlvbigpe3RoaXMuX19vcGVuZWRSYWY9bnVsbCx0aGlzLnRvZ2dsZUNsYXNzKCJvcGVuZWQiLHRoaXMub3BlbmVkKX0uYmluZCh0aGlzKSkpfX0pO2NvbnN0IE5hPW5ldwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZQogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMKICAgIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KY2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLl9vdmVybGF5cz1bXSx0aGlzLl9taW5pbXVtWj0xMDEsdGhpcy5fYmFja2Ryb3BFbGVtZW50PW51bGwsY2koZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LCJ0YXAiLChmdW5jdGlvbigpe30pKSxkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJ0YXAiLHRoaXMuX29uQ2FwdHVyZUNsaWNrLmJpbmQodGhpcyksITApLGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoImZvY3VzIix0aGlzLl9vbkNhcHR1cmVGb2N1cy5iaW5kKHRoaXMpLCEwKSxkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIix0aGlzLl9vbkNhcHR1cmVLZXlEb3duLmJpbmQodGhpcyksITApfWdldCBiYWNrZHJvcEVsZW1lbnQoKXtyZXR1cm4gdGhpcy5fYmFja2Ryb3BFbGVtZW50fHwodGhpcy5fYmFja2Ryb3BFbGVtZW50PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlyb24tb3ZlcmxheS1iYWNrZHJvcCIpKSx0aGlzLl9iYWNrZHJvcEVsZW1lbnR9Z2V0IGRlZXBBY3RpdmVFbGVtZW50KCl7dmFyIHQ9ZG9jdW1lbnQuYWN0aXZlRWxlbWVudDtmb3IodCYmdCBpbnN0YW5jZW9mIEVsZW1lbnQhPSExfHwodD1kb2N1bWVudC5ib2R5KTt0LnJvb3QmJmVyKHQucm9vdCkuYWN0aXZlRWxlbWVudDspdD1lcih0LnJvb3QpLmFjdGl2ZUVsZW1lbnQ7cmV0dXJuIHR9X2JyaW5nT3ZlcmxheUF0SW5kZXhUb0Zyb250KHQpe3ZhciBlPXRoaXMuX292ZXJsYXlzW3RdO2lmKGUpe3ZhciBuPXRoaXMuX292ZXJsYXlzLmxlbmd0aC0xLGk9dGhpcy5fb3ZlcmxheXNbbl07aWYoaSYmdGhpcy5fc2hvdWxkQmVCZWhpbmRPdmVybGF5KGUsaSkmJm4tLSwhKHQ+PW4pKXt2YXIgcj1NYXRoLm1heCh0aGlzLmN1cnJlbnRPdmVybGF5WigpLHRoaXMuX21pbmltdW1aKTtmb3IodGhpcy5fZ2V0WihlKTw9ciYmdGhpcy5fYXBwbHlPdmVybGF5WihlLHIpO3Q8bjspdGhpcy5fb3ZlcmxheXNbdF09dGhpcy5fb3ZlcmxheXNbdCsxXSx0Kys7dGhpcy5fb3ZlcmxheXNbbl09ZX19fWFkZE9yUmVtb3ZlT3ZlcmxheSh0KXt0Lm9wZW5lZD90aGlzLmFkZE92ZXJsYXkodCk6dGhpcy5yZW1vdmVPdmVybGF5KHQpfWFkZE92ZXJsYXkodCl7dmFyIGU9dGhpcy5fb3ZlcmxheXMuaW5kZXhPZih0KTtpZihlPj0wKXJldHVybiB0aGlzLl9icmluZ092ZXJsYXlBdEluZGV4VG9Gcm9udChlKSx2b2lkIHRoaXMudHJhY2tCYWNrZHJvcCgpO3ZhciBuPXRoaXMuX292ZXJsYXlzLmxlbmd0aCxpPXRoaXMuX292ZXJsYXlzW24tMV0scj1NYXRoLm1heCh0aGlzLl9nZXRaKGkpLHRoaXMuX21pbmltdW1aKSxvPXRoaXMuX2dldFoodCk7aSYmdGhpcy5fc2hvdWxkQmVCZWhpbmRPdmVybGF5KHQsaSkmJih0aGlzLl9hcHBseU92ZXJsYXlaKGksciksbi0tLHI9TWF0aC5tYXgodGhpcy5fZ2V0Wih0aGlzLl9vdmVybGF5c1tuLTFdKSx0aGlzLl9taW5pbXVtWikpO288PXImJnRoaXMuX2FwcGx5T3ZlcmxheVoodCxyKSx0aGlzLl9vdmVybGF5cy5zcGxpY2UobiwwLHQpLHRoaXMudHJhY2tCYWNrZHJvcCgpfXJlbW92ZU92ZXJsYXkodCl7dmFyIGU9dGhpcy5fb3ZlcmxheXMuaW5kZXhPZih0KTstMSE9PWUmJih0aGlzLl9vdmVybGF5cy5zcGxpY2UoZSwxKSx0aGlzLnRyYWNrQmFja2Ryb3AoKSl9Y3VycmVudE92ZXJsYXkoKXtyZXR1cm4gdGhpcy5fb3ZlcmxheXNbdGhpcy5fb3ZlcmxheXMubGVuZ3RoLTFdfWN1cnJlbnRPdmVybGF5Wigpe3JldHVybiB0aGlzLl9nZXRaKHRoaXMuY3VycmVudE92ZXJsYXkoKSl9ZW5zdXJlTWluaW11bVoodCl7dGhpcy5fbWluaW11bVo9TWF0aC5tYXgodGhpcy5fbWluaW11bVosdCl9Zm9jdXNPdmVybGF5KCl7dmFyIHQ9dGhpcy5jdXJyZW50T3ZlcmxheSgpO3QmJnQuX2FwcGx5Rm9jdXMoKX10cmFja0JhY2tkcm9wKCl7dmFyIHQ9dGhpcy5fb3ZlcmxheVdpdGhCYWNrZHJvcCgpOyh0fHx0aGlzLl9iYWNrZHJvcEVsZW1lbnQpJiYodGhpcy5iYWNrZHJvcEVsZW1lbnQuc3R5bGUuekluZGV4PXRoaXMuX2dldFoodCktMSx0aGlzLmJhY2tkcm9wRWxlbWVudC5vcGVuZWQ9ISF0LHRoaXMuYmFja2Ryb3BFbGVtZW50LnByZXBhcmUoKSl9Z2V0QmFja2Ryb3BzKCl7Zm9yKHZhciB0PVtdLGU9MDtlPHRoaXMuX292ZXJsYXlzLmxlbmd0aDtlKyspdGhpcy5fb3ZlcmxheXNbZV0ud2l0aEJhY2tkcm9wJiZ0LnB1c2godGhpcy5fb3ZlcmxheXNbZV0pO3JldHVybiB0fWJhY2tkcm9wWigpe3JldHVybiB0aGlzLl9nZXRaKHRoaXMuX292ZXJsYXlXaXRoQmFja2Ryb3AoKSktMX1fb3ZlcmxheVdpdGhCYWNrZHJvcCgpe2Zvcih2YXIgdD10aGlzLl9vdmVybGF5cy5sZW5ndGgtMTt0Pj0wO3QtLSlpZih0aGlzLl9vdmVybGF5c1t0XS53aXRoQmFja2Ryb3ApcmV0dXJuIHRoaXMuX292ZXJsYXlzW3RdfV9nZXRaKHQpe3ZhciBlPXRoaXMuX21pbmltdW1aO2lmKHQpe3ZhciBuPU51bWJlcih0LnN0eWxlLnpJbmRleHx8d2luZG93LmdldENvbXB1dGVkU3R5bGUodCkuekluZGV4KTtuPT1uJiYoZT1uKX1yZXR1cm4gZX1fc2V0Wih0LGUpe3Quc3R5bGUuekluZGV4PWV9X2FwcGx5T3ZlcmxheVoodCxlKXt0aGlzLl9zZXRaKHQsZSsyKX1fb3ZlcmxheUluUGF0aCh0KXt0PXR8fFtdO2Zvcih2YXIgZT0wO2U8dC5sZW5ndGg7ZSsrKWlmKHRbZV0uX21hbmFnZXI9PT10aGlzKXJldHVybiB0W2VdfV9vbkNhcHR1cmVDbGljayh0KXt2YXIgZT10aGlzLl9vdmVybGF5cy5sZW5ndGgtMTtpZigtMSE9PWUpZm9yKHZhciBuLGk9ZXIodCkucGF0aDsobj10aGlzLl9vdmVybGF5c1tlXSkmJnRoaXMuX292ZXJsYXlJblBhdGgoaSkhPT1uJiYobi5fb25DYXB0dXJlQ2xpY2sodCksbi5hbGxvd0NsaWNrVGhyb3VnaCk7KWUtLX1fb25DYXB0dXJlRm9jdXModCl7dmFyIGU9dGhpcy5jdXJyZW50T3ZlcmxheSgpO2UmJmUuX29uQ2FwdHVyZUZvY3VzKHQpfV9vbkNhcHR1cmVLZXlEb3duKHQpe3ZhciBlPXRoaXMuY3VycmVudE92ZXJsYXkoKTtlJiYoWG8ua2V5Ym9hcmRFdmVudE1hdGNoZXNLZXlzKHQsImVzYyIpP2UuX29uQ2FwdHVyZUVzYyh0KTpYby5rZXlib2FyZEV2ZW50TWF0Y2hlc0tleXModCwidGFiIikmJmUuX29uQ2FwdHVyZVRhYih0KSl9X3Nob3VsZEJlQmVoaW5kT3ZlcmxheSh0LGUpe3JldHVybiF0LmFsd2F5c09uVG9wJiZlLmFsd2F5c09uVG9wfX07Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNyBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlCiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcwogICAgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudAogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqL3ZhciBJYSxSYSxPYT17cGFnZVg6MCxwYWdlWTowfSx6YT1udWxsLERhPVtdLEJhPVsid2hlZWwiLCJtb3VzZXdoZWVsIiwiRE9NTW91c2VTY3JvbGwiLCJ0b3VjaHN0YXJ0IiwidG91Y2htb3ZlIl07ZnVuY3Rpb24gSGEodCl7VmEuaW5kZXhPZih0KT49MHx8KDA9PT1WYS5sZW5ndGgmJihmdW5jdGlvbiBlKCl7SWE9SWF8fFVhLmJpbmQodm9pZCAwKTtmb3IodmFyIHQ9MCxlPUJhLmxlbmd0aDt0PGU7dCsrKWRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoQmFbdF0sSWEse2NhcHR1cmU6ITAscGFzc2l2ZTohMX0pfSkoKSxWYS5wdXNoKHQpLFJhPVZhW1ZhLmxlbmd0aC0xXSl9ZnVuY3Rpb24gRmEodCl7dmFyIGU9VmEuaW5kZXhPZih0KTstMSE9PWUmJihWYS5zcGxpY2UoZSwxKSxSYT1WYVtWYS5sZW5ndGgtMV0sMD09PVZhLmxlbmd0aCYmKGZ1bmN0aW9uIG4oKXtmb3IodmFyIHQ9MCxlPUJhLmxlbmd0aDt0PGU7dCsrKWRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoQmFbdF0sSWEse2NhcHR1cmU6ITAscGFzc2l2ZTohMX0pfSkoKSl9Y29uc3QgVmE9W107ZnVuY3Rpb24gVWEodCl7aWYodC5jYW5jZWxhYmxlJiYoZnVuY3Rpb24gZSh0KXt2YXIgZT1lcih0KS5yb290VGFyZ2V0OyJ0b3VjaG1vdmUiIT09dC50eXBlJiZ6YSE9PWUmJih6YT1lLERhPShmdW5jdGlvbiBuKHQpe2Zvcih2YXIgZT1bXSxuPXQuaW5kZXhPZihSYSksaT0wO2k8PW47aSsrKWlmKHRbaV0ubm9kZVR5cGU9PT1Ob2RlLkVMRU1FTlRfTk9ERSl7dmFyIHI9dFtpXSxvPXIuc3R5bGU7InNjcm9sbCIhPT1vLm92ZXJmbG93JiYiYXV0byIhPT1vLm92ZXJmbG93JiYobz13aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShyKSksInNjcm9sbCIhPT1vLm92ZXJmbG93JiYiYXV0byIhPT1vLm92ZXJmbG93fHxlLnB1c2gocil9cmV0dXJuIGV9KShlcih0KS5wYXRoKSk7aWYoIURhLmxlbmd0aClyZXR1cm4hMDtpZigidG91Y2hzdGFydCI9PT10LnR5cGUpcmV0dXJuITE7dmFyIGk9KGZ1bmN0aW9uIHIodCl7dmFyIGU9e2RlbHRhWDp0LmRlbHRhWCxkZWx0YVk6dC5kZWx0YVl9O2lmKCJkZWx0YVgiaW4gdCk7ZWxzZSBpZigid2hlZWxEZWx0YVgiaW4gdCYmIndoZWVsRGVsdGFZImluIHQpZS5kZWx0YVg9LXQud2hlZWxEZWx0YVgsZS5kZWx0YVk9LXQud2hlZWxEZWx0YVk7ZWxzZSBpZigid2hlZWxEZWx0YSJpbiB0KWUuZGVsdGFYPTAsZS5kZWx0YVk9LXQud2hlZWxEZWx0YTtlbHNlIGlmKCJheGlzImluIHQpZS5kZWx0YVg9MT09PXQuYXhpcz90LmRldGFpbDowLGUuZGVsdGFZPTI9PT10LmF4aXM/dC5kZXRhaWw6MDtlbHNlIGlmKHQudGFyZ2V0VG91Y2hlcyl7dmFyIG49dC50YXJnZXRUb3VjaGVzWzBdO2UuZGVsdGFYPU9hLnBhZ2VYLW4ucGFnZVgsZS5kZWx0YVk9T2EucGFnZVktbi5wYWdlWX1yZXR1cm4gZX0KLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzCiAgICBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50CiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovKSh0KTtyZXR1cm4hKGZ1bmN0aW9uIG8odCxlLG4pe2lmKCFlJiYhbilyZXR1cm47Zm9yKHZhciBpPU1hdGguYWJzKG4pPj1NYXRoLmFicyhlKSxyPTA7cjx0Lmxlbmd0aDtyKyspe3ZhciBvPXRbcl07aWYoaT9uPDA/by5zY3JvbGxUb3A+MDpvLnNjcm9sbFRvcDxvLnNjcm9sbEhlaWdodC1vLmNsaWVudEhlaWdodDplPDA/by5zY3JvbGxMZWZ0PjA6by5zY3JvbGxMZWZ0PG8uc2Nyb2xsV2lkdGgtby5jbGllbnRXaWR0aClyZXR1cm4gb319KShEYSxpLmRlbHRhWCxpLmRlbHRhWSl9KSh0KSYmdC5wcmV2ZW50RGVmYXVsdCgpLHQudGFyZ2V0VG91Y2hlcyl7dmFyIG49dC50YXJnZXRUb3VjaGVzWzBdO09hLnBhZ2VYPW4ucGFnZVgsT2EucGFnZVk9bi5wYWdlWX19Y29uc3QgamE9e3Byb3BlcnRpZXM6e29wZW5lZDp7b2JzZXJ2ZXI6Il9vcGVuZWRDaGFuZ2VkIix0eXBlOkJvb2xlYW4sdmFsdWU6ITEsbm90aWZ5OiEwfSxjYW5jZWxlZDp7b2JzZXJ2ZXI6Il9jYW5jZWxlZENoYW5nZWQiLHJlYWRPbmx5OiEwLHR5cGU6Qm9vbGVhbix2YWx1ZTohMX0sd2l0aEJhY2tkcm9wOntvYnNlcnZlcjoiX3dpdGhCYWNrZHJvcENoYW5nZWQiLHR5cGU6Qm9vbGVhbn0sbm9BdXRvRm9jdXM6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMX0sbm9DYW5jZWxPbkVzY0tleTp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxub0NhbmNlbE9uT3V0c2lkZUNsaWNrOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITF9LGNsb3NpbmdSZWFzb246e3R5cGU6T2JqZWN0fSxyZXN0b3JlRm9jdXNPbkNsb3NlOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITF9LGFsbG93Q2xpY2tUaHJvdWdoOnt0eXBlOkJvb2xlYW59LGFsd2F5c09uVG9wOnt0eXBlOkJvb2xlYW59LHNjcm9sbEFjdGlvbjp7dHlwZTpTdHJpbmd9LF9tYW5hZ2VyOnt0eXBlOk9iamVjdCx2YWx1ZTpOYX0sX2ZvY3VzZWRDaGlsZDp7dHlwZTpPYmplY3R9fSxsaXN0ZW5lcnM6eyJpcm9uLXJlc2l6ZSI6Il9vbklyb25SZXNpemUifSxvYnNlcnZlcnM6WyJfX3VwZGF0ZVNjcm9sbE9ic2VydmVycyhpc0F0dGFjaGVkLCBvcGVuZWQsIHNjcm9sbEFjdGlvbikiXSxnZXQgYmFja2Ryb3BFbGVtZW50KCl7cmV0dXJuIHRoaXMuX21hbmFnZXIuYmFja2Ryb3BFbGVtZW50fSxnZXQgX2ZvY3VzTm9kZSgpe3JldHVybiB0aGlzLl9mb2N1c2VkQ2hpbGR8fGVyKHRoaXMpLnF1ZXJ5U2VsZWN0b3IoIlthdXRvZm9jdXNdIil8fHRoaXN9LGdldCBfZm9jdXNhYmxlTm9kZXMoKXtyZXR1cm4gUGEuZ2V0VGFiYmFibGVOb2Rlcyh0aGlzKX0scmVhZHk6ZnVuY3Rpb24oKXt0aGlzLl9faXNBbmltYXRpbmc9ITEsdGhpcy5fX3Nob3VsZFJlbW92ZVRhYkluZGV4PSExLHRoaXMuX19maXJzdEZvY3VzYWJsZU5vZGU9dGhpcy5fX2xhc3RGb2N1c2FibGVOb2RlPW51bGwsdGhpcy5fX3JhZnM9e30sdGhpcy5fX3Jlc3RvcmVGb2N1c05vZGU9bnVsbCx0aGlzLl9fc2Nyb2xsVG9wPXRoaXMuX19zY3JvbGxMZWZ0PW51bGwsdGhpcy5fX29uQ2FwdHVyZVNjcm9sbD10aGlzLl9fb25DYXB0dXJlU2Nyb2xsLmJpbmQodGhpcyksdGhpcy5fX3Jvb3ROb2Rlcz1udWxsLHRoaXMuX2Vuc3VyZVNldHVwKCl9LGF0dGFjaGVkOmZ1bmN0aW9uKCl7dGhpcy5vcGVuZWQmJnRoaXMuX29wZW5lZENoYW5nZWQodGhpcy5vcGVuZWQpLHRoaXMuX29ic2VydmVyPWVyKHRoaXMpLm9ic2VydmVOb2Rlcyh0aGlzLl9vbk5vZGVzQ2hhbmdlKX0sZGV0YWNoZWQ6ZnVuY3Rpb24oKXtmb3IodmFyIHQgaW4gdGhpcy5fb2JzZXJ2ZXImJmVyKHRoaXMpLnVub2JzZXJ2ZU5vZGVzKHRoaXMuX29ic2VydmVyKSx0aGlzLl9vYnNlcnZlcj1udWxsLHRoaXMuX19yYWZzKW51bGwhPT10aGlzLl9fcmFmc1t0XSYmY2FuY2VsQW5pbWF0aW9uRnJhbWUodGhpcy5fX3JhZnNbdF0pO3RoaXMuX19yYWZzPXt9LHRoaXMuX21hbmFnZXIucmVtb3ZlT3ZlcmxheSh0aGlzKSx0aGlzLl9faXNBbmltYXRpbmcmJih0aGlzLm9wZW5lZD90aGlzLl9maW5pc2hSZW5kZXJPcGVuZWQoKToodGhpcy5fYXBwbHlGb2N1cygpLHRoaXMuX2ZpbmlzaFJlbmRlckNsb3NlZCgpKSl9LHRvZ2dsZTpmdW5jdGlvbigpe3RoaXMuX3NldENhbmNlbGVkKCExKSx0aGlzLm9wZW5lZD0hdGhpcy5vcGVuZWR9LG9wZW46ZnVuY3Rpb24oKXt0aGlzLl9zZXRDYW5jZWxlZCghMSksdGhpcy5vcGVuZWQ9ITB9LGNsb3NlOmZ1bmN0aW9uKCl7dGhpcy5fc2V0Q2FuY2VsZWQoITEpLHRoaXMub3BlbmVkPSExfSxjYW5jZWw6ZnVuY3Rpb24odCl7dGhpcy5maXJlKCJpcm9uLW92ZXJsYXktY2FuY2VsZWQiLHQse2NhbmNlbGFibGU6ITB9KS5kZWZhdWx0UHJldmVudGVkfHwodGhpcy5fc2V0Q2FuY2VsZWQoITApLHRoaXMub3BlbmVkPSExKX0saW52YWxpZGF0ZVRhYmJhYmxlczpmdW5jdGlvbigpe3RoaXMuX19maXJzdEZvY3VzYWJsZU5vZGU9dGhpcy5fX2xhc3RGb2N1c2FibGVOb2RlPW51bGx9LF9lbnN1cmVTZXR1cDpmdW5jdGlvbigpe3RoaXMuX292ZXJsYXlTZXR1cHx8KHRoaXMuX292ZXJsYXlTZXR1cD0hMCx0aGlzLnN0eWxlLm91dGxpbmU9Im5vbmUiLHRoaXMuc3R5bGUuZGlzcGxheT0ibm9uZSIpfSxfb3BlbmVkQ2hhbmdlZDpmdW5jdGlvbih0KXt0P3RoaXMucmVtb3ZlQXR0cmlidXRlKCJhcmlhLWhpZGRlbiIpOnRoaXMuc2V0QXR0cmlidXRlKCJhcmlhLWhpZGRlbiIsInRydWUiKSx0aGlzLmlzQXR0YWNoZWQmJih0aGlzLl9faXNBbmltYXRpbmc9ITAsdGhpcy5fX2RlcmFmKCJfX29wZW5lZENoYW5nZWQiLHRoaXMuX19vcGVuZWRDaGFuZ2VkKSl9LF9jYW5jZWxlZENoYW5nZWQ6ZnVuY3Rpb24oKXt0aGlzLmNsb3NpbmdSZWFzb249dGhpcy5jbG9zaW5nUmVhc29ufHx7fSx0aGlzLmNsb3NpbmdSZWFzb24uY2FuY2VsZWQ9dGhpcy5jYW5jZWxlZH0sX3dpdGhCYWNrZHJvcENoYW5nZWQ6ZnVuY3Rpb24oKXt0aGlzLndpdGhCYWNrZHJvcCYmIXRoaXMuaGFzQXR0cmlidXRlKCJ0YWJpbmRleCIpPyh0aGlzLnNldEF0dHJpYnV0ZSgidGFiaW5kZXgiLCItMSIpLHRoaXMuX19zaG91bGRSZW1vdmVUYWJJbmRleD0hMCk6dGhpcy5fX3Nob3VsZFJlbW92ZVRhYkluZGV4JiYodGhpcy5yZW1vdmVBdHRyaWJ1dGUoInRhYmluZGV4IiksdGhpcy5fX3Nob3VsZFJlbW92ZVRhYkluZGV4PSExKSx0aGlzLm9wZW5lZCYmdGhpcy5pc0F0dGFjaGVkJiZ0aGlzLl9tYW5hZ2VyLnRyYWNrQmFja2Ryb3AoKX0sX3ByZXBhcmVSZW5kZXJPcGVuZWQ6ZnVuY3Rpb24oKXt0aGlzLl9fcmVzdG9yZUZvY3VzTm9kZT10aGlzLl9tYW5hZ2VyLmRlZXBBY3RpdmVFbGVtZW50LHRoaXMuX3ByZXBhcmVQb3NpdGlvbmluZygpLHRoaXMucmVmaXQoKSx0aGlzLl9maW5pc2hQb3NpdGlvbmluZygpLHRoaXMubm9BdXRvRm9jdXMmJmRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ9PT10aGlzLl9mb2N1c05vZGUmJih0aGlzLl9mb2N1c05vZGUuYmx1cigpLHRoaXMuX19yZXN0b3JlRm9jdXNOb2RlLmZvY3VzKCkpfSxfcmVuZGVyT3BlbmVkOmZ1bmN0aW9uKCl7dGhpcy5fZmluaXNoUmVuZGVyT3BlbmVkKCl9LF9yZW5kZXJDbG9zZWQ6ZnVuY3Rpb24oKXt0aGlzLl9maW5pc2hSZW5kZXJDbG9zZWQoKX0sX2ZpbmlzaFJlbmRlck9wZW5lZDpmdW5jdGlvbigpe3RoaXMubm90aWZ5UmVzaXplKCksdGhpcy5fX2lzQW5pbWF0aW5nPSExLHRoaXMuZmlyZSgiaXJvbi1vdmVybGF5LW9wZW5lZCIpfSxfZmluaXNoUmVuZGVyQ2xvc2VkOmZ1bmN0aW9uKCl7dGhpcy5zdHlsZS5kaXNwbGF5PSJub25lIix0aGlzLnN0eWxlLnpJbmRleD0iIix0aGlzLm5vdGlmeVJlc2l6ZSgpLHRoaXMuX19pc0FuaW1hdGluZz0hMSx0aGlzLmZpcmUoImlyb24tb3ZlcmxheS1jbG9zZWQiLHRoaXMuY2xvc2luZ1JlYXNvbil9LF9wcmVwYXJlUG9zaXRpb25pbmc6ZnVuY3Rpb24oKXt0aGlzLnN0eWxlLnRyYW5zaXRpb249dGhpcy5zdHlsZS53ZWJraXRUcmFuc2l0aW9uPSJub25lIix0aGlzLnN0eWxlLnRyYW5zZm9ybT10aGlzLnN0eWxlLndlYmtpdFRyYW5zZm9ybT0ibm9uZSIsdGhpcy5zdHlsZS5kaXNwbGF5PSIifSxfZmluaXNoUG9zaXRpb25pbmc6ZnVuY3Rpb24oKXt0aGlzLnN0eWxlLmRpc3BsYXk9Im5vbmUiLHRoaXMuc2Nyb2xsVG9wPXRoaXMuc2Nyb2xsVG9wLHRoaXMuc3R5bGUudHJhbnNpdGlvbj10aGlzLnN0eWxlLndlYmtpdFRyYW5zaXRpb249IiIsdGhpcy5zdHlsZS50cmFuc2Zvcm09dGhpcy5zdHlsZS53ZWJraXRUcmFuc2Zvcm09IiIsdGhpcy5zdHlsZS5kaXNwbGF5PSIiLHRoaXMuc2Nyb2xsVG9wPXRoaXMuc2Nyb2xsVG9wfSxfYXBwbHlGb2N1czpmdW5jdGlvbigpe2lmKHRoaXMub3BlbmVkKXRoaXMubm9BdXRvRm9jdXN8fHRoaXMuX2ZvY3VzTm9kZS5mb2N1cygpO2Vsc2V7aWYodGhpcy5yZXN0b3JlRm9jdXNPbkNsb3NlJiZ0aGlzLl9fcmVzdG9yZUZvY3VzTm9kZSl7dmFyIHQ9dGhpcy5fbWFuYWdlci5kZWVwQWN0aXZlRWxlbWVudDsodD09PWRvY3VtZW50LmJvZHl8fEdhKHRoaXMsdCkpJiZ0aGlzLl9fcmVzdG9yZUZvY3VzTm9kZS5mb2N1cygpfXRoaXMuX19yZXN0b3JlRm9jdXNOb2RlPW51bGwsdGhpcy5fZm9jdXNOb2RlLmJsdXIoKSx0aGlzLl9mb2N1c2VkQ2hpbGQ9bnVsbH19LF9vbkNhcHR1cmVDbGljazpmdW5jdGlvbih0KXt0aGlzLm5vQ2FuY2VsT25PdXRzaWRlQ2xpY2t8fHRoaXMuY2FuY2VsKHQpfSxfb25DYXB0dXJlRm9jdXM6ZnVuY3Rpb24odCl7aWYodGhpcy53aXRoQmFja2Ryb3Ape3ZhciBlPWVyKHQpLnBhdGg7LTE9PT1lLmluZGV4T2YodGhpcyk/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+dC5saXN0ZW5lcigpKSl9ZnVuY3Rpb24gTHModCl7RXMuZGVsZXRlKHQpfWZ1bmN0aW9uIFBzKHQpe1RzLmRlbGV0ZSh0KX13aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigiaGFzaGNoYW5nZSIsKCgpPT57RXMuZm9yRWFjaCgodD0+dC5saXN0ZW5lcigpKSl9KSksd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInN0b3JhZ2UiLCgoKT0+e1RzLmZvckVhY2goKHQ9PnQubGlzdGVuZXIoKSkpfSkpO2xldCBOcz0hMTtmdW5jdGlvbiBJcygpe3JldHVybiBOc31sZXQgUnM9IiI7ZnVuY3Rpb24gT3ModCl7UnM9dH1mdW5jdGlvbiB6cygpe3JldHVybiBSc312YXIgRHM9T2JqZWN0LmZyZWV6ZSh7X19wcm90b19fOm51bGwsc2V0VXNlSGFzaDpmdW5jdGlvbiBCcyh0KXtOcz10fSx1c2VIYXNoOklzLHNldEZha2VIYXNoOk9zLGdldEZha2VIYXNoOnpzfSk7Y29uc3QgSHM9Il9fdGFiX18iO2xldCBGcz17fTtmdW5jdGlvbiBWcygpe3JldHVybiBJcygpP3dpbmRvdy5sb2NhdGlvbi5oYXNoLnNsaWNlKDEpOnpzKCl9ZnVuY3Rpb24gVXModCl7Y29uc3QgZT17fTtyZXR1cm4gdC5zcGxpdCgiJiIpLmZvckVhY2goKHQ9Pntjb25zdCBuPXQuc3BsaXQoIj0iKTsxPT09bi5sZW5ndGg/ZS5fX3RhYl9fPW5bMF06Mj09PW4ubGVuZ3RoJiYoZVtkZWNvZGVVUklDb21wb25lbnQoblswXSldPWRlY29kZVVSSUNvbXBvbmVudChuWzFdKSl9KSksZX1mdW5jdGlvbiBqcyh0LGU9ITEpe2lmKElzKCkpaWYoZSl7Y29uc3QgZT1uZXcgVVJMKHdpbmRvdy5sb2NhdGlvbi5ocmVmKTtlLmhhc2g9dCx3aW5kb3cuaGlzdG9yeS5yZXBsYWNlU3RhdGUod2luZG93Lmhpc3Rvcnkuc3RhdGUsIiIsZS50b1N0cmluZygpKX1lbHNlIHdpbmRvdy5sb2NhdGlvbi5oYXNoPXQ7ZWxzZSBPcyh0KX1mdW5jdGlvbiBHcyh0KXtsZXQgZT0iIjt2b2lkIDAhPT10Ll9fdGFiX18mJihlKz10Ll9fdGFiX18pO2NvbnN0IG49T2JqZWN0LmtleXModCkubWFwKChlPT5bZSx0W2VdXSkpLmZpbHRlcigodD0+dFswXSE9PUhzKSkubWFwKCh0PT5lbmNvZGVVUklDb21wb25lbnQodFswXSkrIj0iK2VuY29kZVVSSUNvbXBvbmVudCh0WzFdKSkpLmpvaW4oIiYiKTtyZXR1cm4gbi5sZW5ndGg+MD9lKyImIituOmV9Q3MoKCgpPT57RnM9VXMoVnMoKSl9KSk7Y29uc3QgV3M9ImRpc2FtYmlndWF0b3IiLHtnZXQ6cXMsc2V0OllzLGdldEluaXRpYWxpemVyOlhzLGdldE9ic2VydmVyOiRzLGRpc3Bvc2VCaW5kaW5nOktzfT1kbCgodD0+dCksKHQ9PnQpKSx7Z2V0OlpzLHNldDpKcyxnZXRJbml0aWFsaXplcjpRcyxnZXRPYnNlcnZlcjp0bCxkaXNwb3NlQmluZGluZzplbH09ZGwoKHQ9PiJ0cnVlIj09PXR8fCJmYWxzZSIhPT10JiZ2b2lkIDApLCh0PT50LnRvU3RyaW5nKCkpKSx7Z2V0Om5sLHNldDppbCxnZXRJbml0aWFsaXplcjpybCxnZXRPYnNlcnZlcjpvbCxkaXNwb3NlQmluZGluZzphbH09ZGwoKHQ9Pit0KSwodD0+dC50b1N0cmluZygpKSkse2dldDpzbCxzZXQ6bGwsZ2V0SW5pdGlhbGl6ZXI6Y2wsZ2V0T2JzZXJ2ZXI6dWwsZGlzcG9zZUJpbmRpbmc6aGx9PWRsKCh0PT5KU09OLnBhcnNlKGF0b2IodCkpKSwodD0+YnRvYShKU09OLnN0cmluZ2lmeSh0KSkpKTtmdW5jdGlvbiBkbCh0LGUpe2NvbnN0IG49W10saT1bXTtmdW5jdGlvbiByKGUsbj17fSl7Y29uc3R7ZGVmYXVsdFZhbHVlOmksdXNlTG9jYWxTdG9yYWdlOnI9ITF9PW4sbz1yP3dpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbShlKTpVcyhWcygpKVtlXTtyZXR1cm4gbnVsbD09bz9DZS5leHBvcnRzLmNsb25lRGVlcChpKTp0KG8pfWZ1bmN0aW9uIG8odCxuLGk9e30pe2NvbnN0e2RlZmF1bHRWYWx1ZTpvLHVzZUxvY2FsU3RvcmFnZTphPSExLHVzZUxvY2F0aW9uUmVwbGFjZTpzPSExfT1pLGw9ZShuKTtpZihhKXdpbmRvdy5sb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0LGwpLGtzKCk7ZWxzZSBpZighQ2UuZXhwb3J0cy5pc0VxdWFsKG4scih0LHt1c2VMb2NhbFN0b3JhZ2U6YX0pKSlpZihDZS5leHBvcnRzLmlzRXF1YWwobixvKSkhKGZ1bmN0aW9uIGModCl7Y29uc3QgZT1VcyhWcygpKTtkZWxldGUgZVt0XSxqcyhHcyhlKSl9KSh0KTtlbHNle2NvbnN0IGU9VXMoVnMoKSk7ZVt0XT1sLGpzKEdzKGUpLHMpfX1yZXR1cm57Z2V0OnIsc2V0Om8sZ2V0SW5pdGlhbGl6ZXI6ZnVuY3Rpb24gYSh0LGUpe2NvbnN0IG89T2JqZWN0LmFzc2lnbih7ZGVmYXVsdFZhbHVlOmUuZGVmYXVsdFZhbHVlLHBvbHltZXJQcm9wZXJ0eTp0LHVzZUxvY2FsU3RvcmFnZTohMX0sZSk7cmV0dXJuIGZ1bmN0aW9uKCl7Y29uc3QgZT1wbCh0aGlzLHQpLGE9KCk9Pntjb25zdCB0PXIoZSxvKTtDZS5leHBvcnRzLmlzRXF1YWwodCx0aGlzW28ucG9seW1lclByb3BlcnR5XSl8fCh0aGlzW28ucG9seW1lclByb3BlcnR5XT10KX0scz0oby51c2VMb2NhbFN0b3JhZ2U/QXM6Q3MpKCgoKT0+YSgpKSk7cmV0dXJuIG8udXNlTG9jYWxTdG9yYWdlP2kucHVzaChzKTpuLnB1c2gocyksYSgpLHRoaXNbby5wb2x5bWVyUHJvcGVydHldfX0sZ2V0T2JzZXJ2ZXI6ZnVuY3Rpb24gcyh0LGUpe2NvbnN0IG49T2JqZWN0LmFzc2lnbih7ZGVmYXVsdFZhbHVlOmUuZGVmYXVsdFZhbHVlLHBvbHltZXJQcm9wZXJ0eTp0LHVzZUxvY2FsU3RvcmFnZTohMX0sZSk7cmV0dXJuIGZ1bmN0aW9uKCl7byhwbCh0aGlzLHQpLHRoaXNbbi5wb2x5bWVyUHJvcGVydHldLG4pfX0sZGlzcG9zZUJpbmRpbmc6ZnVuY3Rpb24gbCgpe24uZm9yRWFjaCgodD0+THModCkpKSxpLmZvckVhY2goKHQ9PlBzKHQpKSl9fX1mdW5jdGlvbiBwbCh0LGUpe2NvbnN0IG49dC5kaXNhbWJpZ3VhdG9yO3JldHVybihudWxsPT1uP1tlXTpbbixlXSkuam9pbigiLiIpfWxldCBmbD1jbGFzcyBleHRlbmRzIHdle2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLl90YWdGaWx0ZXI9WHMoInRhZ0ZpbHRlciIse2RlZmF1bHRWYWx1ZToiIix1c2VMb2NhbFN0b3JhZ2U6ITEscG9seW1lclByb3BlcnR5OiJfdGFnRmlsdGVyIn0pLmNhbGwodGhpcyksdGhpcy5fdGFnRmlsdGVyT2JzZXJ2ZXI9JHMoInRhZ0ZpbHRlciIse2RlZmF1bHRWYWx1ZToiIix1c2VMb2NhbFN0b3JhZ2U6ITEscG9seW1lclByb3BlcnR5OiJfdGFnRmlsdGVyIn0pfV9jb21wdXRlVGFnRmlsdGVyKCl7cmV0dXJuIHRoaXMuX3RhZ0ZpbHRlcn19O2Z1bmN0aW9uIG1sKHQpe2NvbnN0e21vZHVsZU5hbWU6ZSxzdHlsZUNvbnRlbnQ6bn09dCxpPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRvbS1tb2R1bGUiKSxyPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRlbXBsYXRlIiksbz1bXTt0LnN0eWxlRGVwZW5kZW5jaWVzJiZ0LnN0eWxlRGVwZW5kZW5jaWVzLmZvckVhY2goKHQ9Pntjb25zdCBlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxlIik7ZS5zZXRBdHRyaWJ1dGUoImluY2x1ZGUiLHQpLG8ucHVzaChlKX0pKTtjb25zdCBhPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxlIik7T2JqZWN0LmFzc2lnbihhLHt0ZXh0Q29udGVudDpufSksby5mb3JFYWNoKCh0PT57ci5jb250ZW50LmFwcGVuZENoaWxkKHQpfSkpLHIuY29udGVudC5hcHBlbmRDaGlsZChhKSxpLmFwcGVuZENoaWxkKHIpLGkucmVnaXN0ZXIoZSl9ZnVuY3Rpb24gZ2wodCl7cmV0dXJuIGNsYXNzIGV4dGVuZHMgdHtjb25uZWN0ZWRDYWxsYmFjaygpe3N1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCksdGhpcy5fbWF5YmVTZXREYXJrTW9kZSgpLHRoaXMub2JzZXJ2ZXI9bmV3IE11dGF0aW9uT2JzZXJ2ZXIoKHQ9Pnt0LnNvbWUoKHQ9PiJjbGFzcyI9PT10LmF0dHJpYnV0ZU5hbWUpKSYmdGhpcy5fbWF5YmVTZXREYXJrTW9kZSgpfSkpLHRoaXMub2JzZXJ2ZXIub2JzZXJ2ZShkb2N1bWVudC5ib2R5LHthdHRyaWJ1dGVzOiEwfSl9ZGlzY29ubmVjdGVkQ2FsbGJhY2soKXt2YXIgdDtzdXBlci5kaXNjb25uZWN0ZWRDYWxsYmFjaygpLG51bGw9PT0odD10aGlzLm9ic2VydmVyKXx8dm9pZCAwPT09dHx8dC5kaXNjb25uZWN0KCl9X21heWJlU2V0RGFya01vZGUoKXt0aGlzLmNsYXNzTGlzdC50b2dnbGUoImRhcmstbW9kZSIsZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuY29udGFpbnMoImRhcmstbW9kZSIpKX19fWZsLnRlbXBsYXRlPXhlYAogICAgPHBhcGVyLWlucHV0CiAgICAgIG5vLWxhYmVsLWZsb2F0PSIiCiAgICAgIGxhYmVsPSJGaWx0ZXIgdGFncyAocmVndWxhciBleHByZXNzaW9ucyBzdXBwb3J0ZWQpIgogICAgICB2YWx1ZT0ie3tfdGFnRmlsdGVyfX0iCiAgICAgIGNsYXNzPSJzZWFyY2gtaW5wdXQiCiAgICA+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+e3RoaXMuaW5pdGlhbGl6ZWQ9ITB9KSl9YWRkTGlzdGVuZXIodCl7Y29uc3QgZT1uZXcgQWwodCk7cmV0dXJuIHRoaXMuX2xpc3RlbmVycy5hZGQoZSksZX1yZW1vdmVMaXN0ZW5lckJ5S2V5KHQpe3RoaXMuX2xpc3RlbmVycy5kZWxldGUodCl9ZW1pdENoYW5nZSgpe3RoaXMuX2xpc3RlbmVycy5mb3JFYWNoKCh0PT57dHJ5e3QubGlzdGVuZXIoKX1jYXRjaCh0KXt9fSkpfX1jbGFzcyBMbCBleHRlbmRzIGtse2xvYWQoKXtjb25zdCB0PUVyKCkuZW52aXJvbm1lbnQoKTtyZXR1cm4gdGhpcy5yZXF1ZXN0TWFuYWdlci5yZXF1ZXN0KHQpLnRoZW4oKHQ9Pntjb25zdCBlPXtkYXRhTG9jYXRpb246dC5kYXRhX2xvY2F0aW9uLHdpbmRvd1RpdGxlOnQud2luZG93X3RpdGxlfTt2b2lkIDAhPT10LmV4cGVyaW1lbnRfbmFtZSYmKGUuZXhwZXJpbWVudE5hbWU9dC5leHBlcmltZW50X25hbWUpLHZvaWQgMCE9PXQuZXhwZXJpbWVudF9kZXNjcmlwdGlvbiYmKGUuZXhwZXJpbWVudERlc2NyaXB0aW9uPXQuZXhwZXJpbWVudF9kZXNjcmlwdGlvbiksdm9pZCAwIT09dC5jcmVhdGlvbl90aW1lJiYoZS5jcmVhdGlvblRpbWU9dC5jcmVhdGlvbl90aW1lKSxDZS5leHBvcnRzLmlzRXF1YWwodGhpcy5lbnZpcm9ubWVudCxlKXx8KHRoaXMuZW52aXJvbm1lbnQ9ZSx0aGlzLmVtaXRDaGFuZ2UoKSl9KSl9Z2V0RGF0YUxvY2F0aW9uKCl7cmV0dXJuIHRoaXMuZW52aXJvbm1lbnQ/dGhpcy5lbnZpcm9ubWVudC5kYXRhTG9jYXRpb246IiJ9Z2V0V2luZG93VGl0bGUoKXtyZXR1cm4gdGhpcy5lbnZpcm9ubWVudD90aGlzLmVudmlyb25tZW50LndpbmRvd1RpdGxlOiIifWdldEV4cGVyaW1lbnROYW1lKCl7cmV0dXJuIHRoaXMuZW52aXJvbm1lbnQ/dGhpcy5lbnZpcm9ubWVudC5leHBlcmltZW50TmFtZToiIn1nZXRFeHBlcmltZW50RGVzY3JpcHRpb24oKXtyZXR1cm4gdGhpcy5lbnZpcm9ubWVudD90aGlzLmVudmlyb25tZW50LmV4cGVyaW1lbnREZXNjcmlwdGlvbjoiIn1nZXRDcmVhdGlvblRpbWUoKXtyZXR1cm4gdGhpcy5lbnZpcm9ubWVudD90aGlzLmVudmlyb25tZW50LmNyZWF0aW9uVGltZTpudWxsfX1jb25zdCBQbD1uZXcgTGw7Y2xhc3MgTmwgZXh0ZW5kcyBrbHtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5fcnVucz1bXX1sb2FkKCl7Y29uc3QgdD1FcigpLnJ1bnMoKTtyZXR1cm4gdGhpcy5yZXF1ZXN0TWFuYWdlci5yZXF1ZXN0KHQpLnRoZW4oKHQ9PntDZS5leHBvcnRzLmlzRXF1YWwodGhpcy5fcnVucyx0KXx8KHRoaXMuX3J1bnM9dCx0aGlzLmVtaXRDaGFuZ2UoKSl9KSl9Z2V0UnVucygpe3JldHVybiB0aGlzLl9ydW5zLnNsaWNlKCl9fWNvbnN0IElsPW5ldyBObDtmdW5jdGlvbiBSbCh0LGUpe3JldHVybiB0PGU/LTE6dD5lPzE6dD49ZT8wOk5hTn1mdW5jdGlvbiBPbCh0KXtyZXR1cm4gMT09PXQubGVuZ3RoJiYodD0oZnVuY3Rpb24gZSh0KXtyZXR1cm4gZnVuY3Rpb24oZSxuKXtyZXR1cm4gUmwodChlKSxuKX19KSh0KSkse2xlZnQ6ZnVuY3Rpb24oZSxuLGkscil7Zm9yKG51bGw9PWkmJihpPTApLG51bGw9PXImJihyPWUubGVuZ3RoKTtpPHI7KXt2YXIgbz1pK3I+Pj4xO3QoZVtvXSxuKTwwP2k9bysxOnI9b31yZXR1cm4gaX0scmlnaHQ6ZnVuY3Rpb24oZSxuLGkscil7Zm9yKG51bGw9PWkmJihpPTApLG51bGw9PXImJihyPWUubGVuZ3RoKTtpPHI7KXt2YXIgbz1pK3I+Pj4xO3QoZVtvXSxuKT4wP3I9bzppPW8rMX1yZXR1cm4gaX19fXZhciB6bD1PbChSbCksRGw9emwucmlnaHQsQmw9emwubGVmdDtmdW5jdGlvbiBIbCh0LGUpe3JldHVyblt0LGVdfWZ1bmN0aW9uIEZsKHQsZSxuKXt2YXIgaSxyLG8sYSxzPXQubGVuZ3RoLGw9ZS5sZW5ndGgsYz1uZXcgQXJyYXkocypsKTtmb3IobnVsbD09biYmKG49SGwpLGk9bz0wO2k8czsrK2kpZm9yKGE9dFtpXSxyPTA7cjxsOysrciwrK28pY1tvXT1uKGEsZVtyXSk7cmV0dXJuIGN9ZnVuY3Rpb24gVmwodCl7cmV0dXJuIG51bGw9PT10P05hTjordH1mdW5jdGlvbiBVbCh0LGUpe3ZhciBuLGkscj10Lmxlbmd0aCxvPTAsYT0tMSxzPTAsbD0wO2lmKG51bGw9PWUpZm9yKDsrK2E8cjspaXNOYU4obj1WbCh0W2FdKSl8fChsKz0oaT1uLXMpKihuLShzKz1pLysrbykpKTtlbHNlIGZvcig7KythPHI7KWlzTmFOKG49VmwoZSh0W2FdLGEsdCkpKXx8KGwrPShpPW4tcykqKG4tKHMrPWkvKytvKSkpO2lmKG8+MSlyZXR1cm4gbC8oby0xKX1mdW5jdGlvbiBqbCh0LGUpe3ZhciBuPVVsKHQsZSk7cmV0dXJuIG4/TWF0aC5zcXJ0KG4pOm59ZnVuY3Rpb24gR2wodCxlKXt2YXIgbixpLHIsbz10Lmxlbmd0aCxhPS0xO2lmKG51bGw9PWUpe2Zvcig7KythPG87KWlmKG51bGwhPShuPXRbYV0pJiZuPj1uKWZvcihpPXI9bjsrK2E8bzspbnVsbCE9KG49dFthXSkmJihpPm4mJihpPW4pLHI8biYmKHI9bikpfWVsc2UgZm9yKDsrK2E8bzspaWYobnVsbCE9KG49ZSh0W2FdLGEsdCkpJiZuPj1uKWZvcihpPXI9bjsrK2E8bzspbnVsbCE9KG49ZSh0W2FdLGEsdCkpJiYoaT5uJiYoaT1uKSxyPG4mJihyPW4pKTtyZXR1cm5baSxyXX12YXIgV2w9QXJyYXkucHJvdG90eXBlLHFsPVdsLnNsaWNlLFlsPVdsLm1hcDtmdW5jdGlvbiBYbCh0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19ZnVuY3Rpb24gJGwodCl7cmV0dXJuIHR9ZnVuY3Rpb24gS2wodCxlLG4pe3Q9K3QsZT0rZSxuPShyPWFyZ3VtZW50cy5sZW5ndGgpPDI/KGU9dCx0PTAsMSk6cjwzPzE6K247Zm9yKHZhciBpPS0xLHI9MHxNYXRoLm1heCgwLE1hdGguY2VpbCgoZS10KS9uKSksbz1uZXcgQXJyYXkocik7KytpPHI7KW9baV09dCtpKm47cmV0dXJuIG99dmFyIFpsPU1hdGguc3FydCg1MCksSmw9TWF0aC5zcXJ0KDEwKSxRbD1NYXRoLnNxcnQoMik7ZnVuY3Rpb24gdGModCxlLG4pe3ZhciBpLHIsbyxhLHM9LTE7aWYobj0rbiwodD0rdCk9PT0oZT0rZSkmJm4+MClyZXR1cm5bdF07aWYoKGk9ZTx0KSYmKHI9dCx0PWUsZT1yKSwwPT09KGE9ZWModCxlLG4pKXx8IWlzRmluaXRlKGEpKXJldHVybltdO2lmKGE+MClmb3IodD1NYXRoLmNlaWwodC9hKSxlPU1hdGguZmxvb3IoZS9hKSxvPW5ldyBBcnJheShyPU1hdGguY2VpbChlLXQrMSkpOysrczxyOylvW3NdPSh0K3MpKmE7ZWxzZSBmb3IodD1NYXRoLmZsb29yKHQqYSksZT1NYXRoLmNlaWwoZSphKSxvPW5ldyBBcnJheShyPU1hdGguY2VpbCh0LWUrMSkpOysrczxyOylvW3NdPSh0LXMpL2E7cmV0dXJuIGkmJm8ucmV2ZXJzZSgpLG99ZnVuY3Rpb24gZWModCxlLG4pe3ZhciBpPShlLXQpL01hdGgubWF4KDAsbikscj1NYXRoLmZsb29yKE1hdGgubG9nKGkpL01hdGguTE4xMCksbz1pL01hdGgucG93KDEwLHIpO3JldHVybiByPj0wPyhvPj1abD8xMDpvPj1KbD81Om8+PVFsPzI6MSkqTWF0aC5wb3coMTAscik6LU1hdGgucG93KDEwLC1yKS8obz49Wmw/MTA6bz49Smw/NTpvPj1RbD8yOjEpfWZ1bmN0aW9uIG5jKHQsZSxuKXt2YXIgaT1NYXRoLmFicyhlLXQpL01hdGgubWF4KDAsbikscj1NYXRoLnBvdygxMCxNYXRoLmZsb29yKE1hdGgubG9nKGkpL01hdGguTE4xMCkpLG89aS9yO3JldHVybiBvPj1abD9yKj0xMDpvPj1KbD9yKj01Om8+PVFsJiYocio9MiksZTx0Py1yOnJ9ZnVuY3Rpb24gaWModCl7cmV0dXJuIE1hdGguY2VpbChNYXRoLmxvZyh0Lmxlbmd0aCkvTWF0aC5MTjIpKzF9ZnVuY3Rpb24gcmModCxlLG4pe2lmKG51bGw9PW4mJihuPVZsKSxpPXQubGVuZ3RoKXtpZigoZT0rZSk8PTB8fGk8MilyZXR1cm4rbih0WzBdLDAsdCk7aWYoZT49MSlyZXR1cm4rbih0W2ktMV0saS0xLHQpO3ZhciBpLHI9KGktMSkqZSxvPU1hdGguZmxvb3IociksYT0rbih0W29dLG8sdCk7cmV0dXJuIGErKCtuKHRbbysxXSxvKzEsdCktYSkqKHItbyl9fWZ1bmN0aW9uIG9jKHQsZSl7dmFyIG4saSxyPXQubGVuZ3RoLG89LTE7aWYobnVsbD09ZSl7Zm9yKDsrK288cjspaWYobnVsbCE9KG49dFtvXSkmJm4+PW4pZm9yKGk9bjsrK288cjspbnVsbCE9KG49dFtvXSkmJm4+aSYmKGk9bil9ZWxzZSBmb3IoOysrbzxyOylpZihudWxsIT0obj1lKHRbb10sbyx0KSkmJm4+PW4pZm9yKGk9bjsrK288cjspbnVsbCE9KG49ZSh0W29dLG8sdCkpJiZuPmkmJihpPW4pO3JldHVybiBpfWZ1bmN0aW9uIGFjKHQpe2Zvcih2YXIgZSxuLGkscj10Lmxlbmd0aCxvPS0xLGE9MDsrK288cjspYSs9dFtvXS5sZW5ndGg7Zm9yKG49bmV3IEFycmF5KGEpOy0tcj49MDspZm9yKGU9KGk9dFtyXSkubGVuZ3RoOy0tZT49MDspblstLWFdPWlbZV07cmV0dXJuIG59ZnVuY3Rpb24gc2ModCxlKXt2YXIgbixpLHI9dC5sZW5ndGgsbz0tMTtpZihudWxsPT1lKXtmb3IoOysrbzxyOylpZihudWxsIT0obj10W29dKSYmbj49bilmb3IoaT1uOysrbzxyOyludWxsIT0obj10W29dKSYmaT5uJiYoaT1uKX1lbHNlIGZvcig7KytvPHI7KWlmKG51bGwhPShuPWUodFtvXSxvLHQpKSYmbj49bilmb3IoaT1uOysrbzxyOyludWxsIT0obj1lKHRbb10sbyx0KSkmJmk+biYmKGk9bik7cmV0dXJuIGl9ZnVuY3Rpb24gbGModCl7aWYoIShyPXQubGVuZ3RoKSlyZXR1cm5bXTtmb3IodmFyIGU9LTEsbj1zYyh0LGNjKSxpPW5ldyBBcnJheShuKTsrK2U8bjspZm9yKHZhciByLG89LTEsYT1pW2VdPW5ldyBBcnJheShyKTsrK288cjspYVtvXT10W29dW2VdO3JldHVybiBpfWZ1bmN0aW9uIGNjKHQpe3JldHVybiB0Lmxlbmd0aH12YXIgdWM9QXJyYXkucHJvdG90eXBlLnNsaWNlO2Z1bmN0aW9uIGhjKHQpe3JldHVybiB0fXZhciBkYz0xZS02O2Z1bmN0aW9uIHBjKHQpe3JldHVybiJ0cmFuc2xhdGUoIisodCsuNSkrIiwwKSJ9ZnVuY3Rpb24gZmModCl7cmV0dXJuInRyYW5zbGF0ZSgwLCIrKHQrLjUpKyIpIn1mdW5jdGlvbiBtYyh0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuK3QoZSl9fWZ1bmN0aW9uIGdjKHQpe3ZhciBlPU1hdGgubWF4KDAsdC5iYW5kd2lkdGgoKS0xKS8yO3JldHVybiB0LnJvdW5kKCkmJihlPU1hdGgucm91bmQoZSkpLGZ1bmN0aW9uKG4pe3JldHVybit0KG4pK2V9fWZ1bmN0aW9uIF9jKCl7cmV0dXJuIXRoaXMuX19heGlzfWZ1bmN0aW9uIHljKHQsZSl7dmFyIG49W10saT1udWxsLHI9bnVsbCxvPTYsYT02LHM9MyxsPTE9PT10fHw0PT09dD8tMToxLGM9ND09PXR8fDI9PT10PyJ4IjoieSIsdT0xPT09dHx8Mz09PXQ/cGM6ZmM7ZnVuY3Rpb24gaChoKXt2YXIgZD1udWxsPT1pP2UudGlja3M/ZS50aWNrcy5hcHBseShlLG4pOmUuZG9tYWluKCk6aSxwPW51bGw9PXI/ZS50aWNrRm9ybWF0P2UudGlja0Zvcm1hdC5hcHBseShlLG4pOmhjOnIsZj1NYXRoLm1heChvLDApK3MsbT1lLnJhbmdlKCksZz0rbVswXSsuNSxfPSttW20ubGVuZ3RoLTFdKy41LHk9KGUuYmFuZHdpZHRoP2djOm1jKShlLmNvcHkoKSksdj1oLnNlbGVjdGlvbj9oLnNlbGVjdGlvbigpOmgsYj12LnNlbGVjdEFsbCgiLmRvbWFpbiIpLmRhdGEoW251bGxdKSx4PXYuc2VsZWN0QWxsKCIudGljayIpLmRhdGEoZCxlKS5vcmRlcigpLHc9eC5leGl0KCksUz14LmVudGVyKCkuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJ0aWNrIiksTT14LnNlbGVjdCgibGluZSIpLEU9eC5zZWxlY3QoInRleHQiKTtiPWIubWVyZ2UoYi5lbnRlcigpLmluc2VydCgicGF0aCIsIi50aWNrIikuYXR0cigiY2xhc3MiLCJkb21haW4iKS5hdHRyKCJzdHJva2UiLCJjdXJyZW50Q29sb3IiKSkseD14Lm1lcmdlKFMpLE09TS5tZXJnZShTLmFwcGVuZCgibGluZSIpLmF0dHIoInN0cm9rZSIsImN1cnJlbnRDb2xvciIpLmF0dHIoYysiMiIsbCpvKSksRT1FLm1lcmdlKFMuYXBwZW5kKCJ0ZXh0IikuYXR0cigiZmlsbCIsImN1cnJlbnRDb2xvciIpLmF0dHIoYyxsKmYpLmF0dHIoImR5IiwxPT09dD8iMGVtIjozPT09dD8iMC43MWVtIjoiMC4zMmVtIikpLGghPT12JiYoYj1iLnRyYW5zaXRpb24oaCkseD14LnRyYW5zaXRpb24oaCksTT1NLnRyYW5zaXRpb24oaCksRT1FLnRyYW5zaXRpb24oaCksdz13LnRyYW5zaXRpb24oaCkuYXR0cigib3BhY2l0eSIsZGMpLmF0dHIoInRyYW5zZm9ybSIsKGZ1bmN0aW9uKHQpe3JldHVybiBpc0Zpbml0ZSh0PXkodCkpP3UodCk6dGhpcy5nZXRBdHRyaWJ1dGUoInRyYW5zZm9ybSIpfSkpLFMuYXR0cigib3BhY2l0eSIsZGMpLmF0dHIoInRyYW5zZm9ybSIsKGZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMucGFyZW50Tm9kZS5fX2F4aXM7cmV0dXJuIHUoZSYmaXNGaW5pdGUoZT1lKHQpKT9lOnkodCkpfSkpKSx3LnJlbW92ZSgpLGIuYXR0cigiZCIsND09PXR8fDI9PXQ/YT8iTSIrbCphKyIsIitnKyJIMC41ViIrXysiSCIrbCphOiJNMC41LCIrZysiViIrXzphPyJNIitnKyIsIitsKmErIlYwLjVIIitfKyJWIitsKmE6Ik0iK2crIiwwLjVIIitfKSx4LmF0dHIoIm9wYWNpdHkiLDEpLmF0dHIoInRyYW5zZm9ybSIsKGZ1bmN0aW9uKHQpe3JldHVybiB1KHkodCkpfSkpLE0uYXR0cihjKyIyIixsKm8pLEUuYXR0cihjLGwqZikudGV4dChwKSx2LmZpbHRlcihfYykuYXR0cigiZmlsbCIsIm5vbmUiKS5hdHRyKCJmb250LXNpemUiLDEwKS5hdHRyKCJmb250LWZhbWlseSIsInNhbnMtc2VyaWYiKS5hdHRyKCJ0ZXh0LWFuY2hvciIsMj09PXQ/InN0YXJ0Ijo0PT09dD8iZW5kIjoibWlkZGxlIiksdi5lYWNoKChmdW5jdGlvbigpe3RoaXMuX19heGlzPXl9KSl9cmV0dXJuIGguc2NhbGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9dCxoKTplfSxoLnRpY2tzPWZ1bmN0aW9uKCl7cmV0dXJuIG49dWMuY2FsbChhcmd1bWVudHMpLGh9LGgudGlja0FyZ3VtZW50cz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj1udWxsPT10P1tdOnVjLmNhbGwodCksaCk6bi5zbGljZSgpfSxoLnRpY2tWYWx1ZXM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9bnVsbD09dD9udWxsOnVjLmNhbGwodCksaCk6aSYmaS5zbGljZSgpfSxoLnRpY2tGb3JtYXQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9dCxoKTpyfSxoLnRpY2tTaXplPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPWE9K3QsaCk6b30saC50aWNrU2l6ZUlubmVyPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPSt0LGgpOm99LGgudGlja1NpemVPdXRlcj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT0rdCxoKTphfSxoLnRpY2tQYWRkaW5nPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhzPSt0LGgpOnN9LGh9ZnVuY3Rpb24gdmModCl7cmV0dXJuIHljKDMsdCl9ZnVuY3Rpb24gYmModCl7cmV0dXJuIHljKDQsdCl9dmFyIHhjPXt2YWx1ZTpmdW5jdGlvbigpe319O2Z1bmN0aW9uIHdjKCl7Zm9yKHZhciB0LGU9MCxuPWFyZ3VtZW50cy5sZW5ndGgsaT17fTtlPG47KytlKXtpZighKHQ9YXJndW1lbnRzW2VdKyIiKXx8dCBpbiBpfHwvW1xzLl0vLnRlc3QodCkpdGhyb3cgbmV3IEVycm9yKCJpbGxlZ2FsIHR5cGU6ICIrdCk7aVt0XT1bXX1yZXR1cm4gbmV3IFNjKGkpfWZ1bmN0aW9uIFNjKHQpe3RoaXMuXz10fWZ1bmN0aW9uIE1jKHQsZSl7cmV0dXJuIHQudHJpbSgpLnNwbGl0KC9efFxzKy8pLm1hcCgoZnVuY3Rpb24odCl7dmFyIG49IiIsaT10LmluZGV4T2YoIi4iKTtpZihpPj0wJiYobj10LnNsaWNlKGkrMSksdD10LnNsaWNlKDAsaSkpLHQmJiFlLmhhc093blByb3BlcnR5KHQpKXRocm93IG5ldyBFcnJvcigidW5rbm93biB0eXBlOiAiK3QpO3JldHVybnt0eXBlOnQsbmFtZTpufX0pKX1mdW5jdGlvbiBFYyh0LGUpe2Zvcih2YXIgbixpPTAscj10Lmxlbmd0aDtpPHI7KytpKWlmKChuPXRbaV0pLm5hbWU9PT1lKXJldHVybiBuLnZhbHVlfWZ1bmN0aW9uIFRjKHQsZSxuKXtmb3IodmFyIGk9MCxyPXQubGVuZ3RoO2k8cjsrK2kpaWYodFtpXS5uYW1lPT09ZSl7dFtpXT14Yyx0PXQuc2xpY2UoMCxpKS5jb25jYXQodC5zbGljZShpKzEpKTticmVha31yZXR1cm4gbnVsbCE9biYmdC5wdXNoKHtuYW1lOmUsdmFsdWU6bn0pLHR9U2MucHJvdG90eXBlPXdjLnByb3RvdHlwZT17Y29uc3RydWN0b3I6U2Msb246ZnVuY3Rpb24odCxlKXt2YXIgbixpPXRoaXMuXyxyPU1jKHQrIiIsaSksbz0tMSxhPXIubGVuZ3RoO2lmKCEoYXJndW1lbnRzLmxlbmd0aDwyKSl7aWYobnVsbCE9ZSYmImZ1bmN0aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIGNhbGxiYWNrOiAiK2UpO2Zvcig7KytvPGE7KWlmKG49KHQ9cltvXSkudHlwZSlpW25dPVRjKGlbbl0sdC5uYW1lLGUpO2Vsc2UgaWYobnVsbD09ZSlmb3IobiBpbiBpKWlbbl09VGMoaVtuXSx0Lm5hbWUsbnVsbCk7cmV0dXJuIHRoaXN9Zm9yKDsrK288YTspaWYoKG49KHQ9cltvXSkudHlwZSkmJihuPUVjKGlbbl0sdC5uYW1lKSkpcmV0dXJuIG59LGNvcHk6ZnVuY3Rpb24oKXt2YXIgdD17fSxlPXRoaXMuXztmb3IodmFyIG4gaW4gZSl0W25dPWVbbl0uc2xpY2UoKTtyZXR1cm4gbmV3IFNjKHQpfSxjYWxsOmZ1bmN0aW9uKHQsZSl7aWYoKG49YXJndW1lbnRzLmxlbmd0aC0yKT4wKWZvcih2YXIgbixpLHI9bmV3IEFycmF5KG4pLG89MDtvPG47KytvKXJbb109YXJndW1lbnRzW28rMl07aWYoIXRoaXMuXy5oYXNPd25Qcm9wZXJ0eSh0KSl0aHJvdyBuZXcgRXJyb3IoInVua25vd24gdHlwZTogIit0KTtmb3Iobz0wLG49KGk9dGhpcy5fW3RdKS5sZW5ndGg7bzxuOysrbylpW29dLnZhbHVlLmFwcGx5KGUscil9LGFwcGx5OmZ1bmN0aW9uKHQsZSxuKXtpZighdGhpcy5fLmhhc093blByb3BlcnR5KHQpKXRocm93IG5ldyBFcnJvcigidW5rbm93biB0eXBlOiAiK3QpO2Zvcih2YXIgaT10aGlzLl9bdF0scj0wLG89aS5sZW5ndGg7cjxvOysrcilpW3JdLnZhbHVlLmFwcGx5KGUsbil9fTt2YXIgQ2M9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiLEFjPXtzdmc6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIix4aHRtbDpDYyx4bGluazoiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIseG1sOiJodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2UiLHhtbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3htbG5zLyJ9O2Z1bmN0aW9uIGtjKHQpe3ZhciBlPXQrPSIiLG49ZS5pbmRleE9mKCI6Iik7cmV0dXJuIG4+PTAmJiJ4bWxucyIhPT0oZT10LnNsaWNlKDAsbikpJiYodD10LnNsaWNlKG4rMSkpLEFjLmhhc093blByb3BlcnR5KGUpP3tzcGFjZTpBY1tlXSxsb2NhbDp0fTp0fWZ1bmN0aW9uIExjKHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciBlPXRoaXMub3duZXJEb2N1bWVudCxuPXRoaXMubmFtZXNwYWNlVVJJO3JldHVybiBuPT09Q2MmJmUuZG9jdW1lbnRFbGVtZW50Lm5hbWVzcGFjZVVSST09PUNjP2UuY3JlYXRlRWxlbWVudCh0KTplLmNyZWF0ZUVsZW1lbnROUyhuLHQpfX1mdW5jdGlvbiBQYyh0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vd25lckRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyh0LnNwYWNlLHQubG9jYWwpfX1mdW5jdGlvbiBOYyh0KXt2YXIgZT1rYyh0KTtyZXR1cm4oZS5sb2NhbD9QYzpMYykoZSl9ZnVuY3Rpb24gSWMoKXt9ZnVuY3Rpb24gUmModCl7cmV0dXJuIG51bGw9PXQ/SWM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5xdWVyeVNlbGVjdG9yKHQpfX1mdW5jdGlvbiBPYygpe3JldHVybltdfWZ1bmN0aW9uIHpjKHQpe3JldHVybiBudWxsPT10P09jOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucXVlcnlTZWxlY3RvckFsbCh0KX19ZnVuY3Rpb24gRGModCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWF0Y2hlcyh0KX19ZnVuY3Rpb24gQmModCl7cmV0dXJuIG5ldyBBcnJheSh0Lmxlbmd0aCl9ZnVuY3Rpb24gSGModCxlKXt0aGlzLm93bmVyRG9jdW1lbnQ9dC5vd25lckRvY3VtZW50LHRoaXMubmFtZXNwYWNlVVJJPXQubmFtZXNwYWNlVVJJLHRoaXMuX25leHQ9bnVsbCx0aGlzLl9wYXJlbnQ9dCx0aGlzLl9fZGF0YV9fPWV9SGMucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpIYyxhcHBlbmRDaGlsZDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fcGFyZW50Lmluc2VydEJlZm9yZSh0LHRoaXMuX25leHQpfSxpbnNlcnRCZWZvcmU6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5fcGFyZW50Lmluc2VydEJlZm9yZSh0LGUpfSxxdWVyeVNlbGVjdG9yOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9wYXJlbnQucXVlcnlTZWxlY3Rvcih0KX0scXVlcnlTZWxlY3RvckFsbDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fcGFyZW50LnF1ZXJ5U2VsZWN0b3JBbGwodCl9fTtmdW5jdGlvbiBGYyh0LGUsbixpLHIsbyl7Zm9yKHZhciBhLHM9MCxsPWUubGVuZ3RoLGM9by5sZW5ndGg7czxjOysrcykoYT1lW3NdKT8oYS5fX2RhdGFfXz1vW3NdLGlbc109YSk6bltzXT1uZXcgSGModCxvW3NdKTtmb3IoO3M8bDsrK3MpKGE9ZVtzXSkmJihyW3NdPWEpfWZ1bmN0aW9uIFZjKHQsZSxuLGkscixvLGEpe3ZhciBzLGwsYyx1PXt9LGg9ZS5sZW5ndGgsZD1vLmxlbmd0aCxwPW5ldyBBcnJheShoKTtmb3Iocz0wO3M8aDsrK3MpKGw9ZVtzXSkmJihwW3NdPWM9IiQiK2EuY2FsbChsLGwuX19kYXRhX18scyxlKSxjIGluIHU/cltzXT1sOnVbY109bCk7Zm9yKHM9MDtzPGQ7KytzKShsPXVbYz0iJCIrYS5jYWxsKHQsb1tzXSxzLG8pXSk/KGlbc109bCxsLl9fZGF0YV9fPW9bc10sdVtjXT1udWxsKTpuW3NdPW5ldyBIYyh0LG9bc10pO2ZvcihzPTA7czxoOysrcykobD1lW3NdKSYmdVtwW3NdXT09PWwmJihyW3NdPWwpfWZ1bmN0aW9uIFVjKHQsZSl7cmV0dXJuIHQ8ZT8tMTp0PmU/MTp0Pj1lPzA6TmFOfWZ1bmN0aW9uIGpjKHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMucmVtb3ZlQXR0cmlidXRlKHQpfX1mdW5jdGlvbiBHYyh0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnJlbW92ZUF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCl9fWZ1bmN0aW9uIFdjKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5zZXRBdHRyaWJ1dGUodCxlKX19ZnVuY3Rpb24gcWModCxlKXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnNldEF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCxlKX19ZnVuY3Rpb24gWWModCxlKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbj1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtudWxsPT1uP3RoaXMucmVtb3ZlQXR0cmlidXRlKHQpOnRoaXMuc2V0QXR0cmlidXRlKHQsbil9fWZ1bmN0aW9uIFhjKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG49ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7bnVsbD09bj90aGlzLnJlbW92ZUF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCk6dGhpcy5zZXRBdHRyaWJ1dGVOUyh0LnNwYWNlLHQubG9jYWwsbil9fWZ1bmN0aW9uICRjKHQpe3JldHVybiB0Lm93bmVyRG9jdW1lbnQmJnQub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlld3x8dC5kb2N1bWVudCYmdHx8dC5kZWZhdWx0Vmlld31mdW5jdGlvbiBLYyh0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KHQpfX1mdW5jdGlvbiBaYyh0LGUsbil7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5zdHlsZS5zZXRQcm9wZXJ0eSh0LGUsbil9fWZ1bmN0aW9uIEpjKHQsZSxuKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgaT1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtudWxsPT1pP3RoaXMuc3R5bGUucmVtb3ZlUHJvcGVydHkodCk6dGhpcy5zdHlsZS5zZXRQcm9wZXJ0eSh0LGksbil9fWZ1bmN0aW9uIFFjKHQsZSl7cmV0dXJuIHQuc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZShlKXx8JGModCkuZ2V0Q29tcHV0ZWRTdHlsZSh0LG51bGwpLmdldFByb3BlcnR5VmFsdWUoZSl9ZnVuY3Rpb24gdHUodCl7cmV0dXJuIGZ1bmN0aW9uKCl7ZGVsZXRlIHRoaXNbdF19fWZ1bmN0aW9uIGV1KHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpc1t0XT1lfX1mdW5jdGlvbiBudSh0LGUpe3JldHVybiBmdW5jdGlvbigpe3ZhciBuPWUuYXBwbHkodGhpcyxhcmd1bWVudHMpO251bGw9PW4/ZGVsZXRlIHRoaXNbdF06dGhpc1t0XT1ufX1mdW5jdGlvbiBpdSh0KXtyZXR1cm4gdC50cmltKCkuc3BsaXQoL158XHMrLyl9ZnVuY3Rpb24gcnUodCl7cmV0dXJuIHQuY2xhc3NMaXN0fHxuZXcgb3UodCl9ZnVuY3Rpb24gb3UodCl7dGhpcy5fbm9kZT10LHRoaXMuX25hbWVzPWl1KHQuZ2V0QXR0cmlidXRlKCJjbGFzcyIpfHwiIil9ZnVuY3Rpb24gYXUodCxlKXtmb3IodmFyIG49cnUodCksaT0tMSxyPWUubGVuZ3RoOysraTxyOyluLmFkZChlW2ldKX1mdW5jdGlvbiBzdSh0LGUpe2Zvcih2YXIgbj1ydSh0KSxpPS0xLHI9ZS5sZW5ndGg7KytpPHI7KW4ucmVtb3ZlKGVbaV0pfWZ1bmN0aW9uIGx1KHQpe3JldHVybiBmdW5jdGlvbigpe2F1KHRoaXMsdCl9fWZ1bmN0aW9uIGN1KHQpe3JldHVybiBmdW5jdGlvbigpe3N1KHRoaXMsdCl9fWZ1bmN0aW9uIHV1KHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7KGUuYXBwbHkodGhpcyxhcmd1bWVudHMpP2F1OnN1KSh0aGlzLHQpfX1mdW5jdGlvbiBodSgpe3RoaXMudGV4dENvbnRlbnQ9IiJ9ZnVuY3Rpb24gZHUodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy50ZXh0Q29udGVudD10fX1mdW5jdGlvbiBwdSh0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT10LmFwcGx5KHRoaXMsYXJndW1lbnRzKTt0aGlzLnRleHRDb250ZW50PW51bGw9PWU/IiI6ZX19ZnVuY3Rpb24gZnUoKXt0aGlzLmlubmVySFRNTD0iIn1mdW5jdGlvbiBtdSh0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLmlubmVySFRNTD10fX1mdW5jdGlvbiBndSh0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT10LmFwcGx5KHRoaXMsYXJndW1lbnRzKTt0aGlzLmlubmVySFRNTD1udWxsPT1lPyIiOmV9fWZ1bmN0aW9uIF91KCl7dGhpcy5uZXh0U2libGluZyYmdGhpcy5wYXJlbnROb2RlLmFwcGVuZENoaWxkKHRoaXMpfWZ1bmN0aW9uIHl1KCl7dGhpcy5wcmV2aW91c1NpYmxpbmcmJnRoaXMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUodGhpcyx0aGlzLnBhcmVudE5vZGUuZmlyc3RDaGlsZCl9ZnVuY3Rpb24gdnUoKXtyZXR1cm4gbnVsbH1mdW5jdGlvbiBidSgpe3ZhciB0PXRoaXMucGFyZW50Tm9kZTt0JiZ0LnJlbW92ZUNoaWxkKHRoaXMpfWZ1bmN0aW9uIHh1KCl7dmFyIHQ9dGhpcy5jbG9uZU5vZGUoITEpLGU9dGhpcy5wYXJlbnROb2RlO3JldHVybiBlP2UuaW5zZXJ0QmVmb3JlKHQsdGhpcy5uZXh0U2libGluZyk6dH1mdW5jdGlvbiB3dSgpe3ZhciB0PXRoaXMuY2xvbmVOb2RlKCEwKSxlPXRoaXMucGFyZW50Tm9kZTtyZXR1cm4gZT9lLmluc2VydEJlZm9yZSh0LHRoaXMubmV4dFNpYmxpbmcpOnR9b3UucHJvdG90eXBlPXthZGQ6ZnVuY3Rpb24odCl7dGhpcy5fbmFtZXMuaW5kZXhPZih0KTwwJiYodGhpcy5fbmFtZXMucHVzaCh0KSx0aGlzLl9ub2RlLnNldEF0dHJpYnV0ZSgiY2xhc3MiLHRoaXMuX25hbWVzLmpvaW4oIiAiKSkpfSxyZW1vdmU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fbmFtZXMuaW5kZXhPZih0KTtlPj0wJiYodGhpcy5fbmFtZXMuc3BsaWNlKGUsMSksdGhpcy5fbm9kZS5zZXRBdHRyaWJ1dGUoImNsYXNzIix0aGlzLl9uYW1lcy5qb2luKCIgIikpKX0sY29udGFpbnM6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX25hbWVzLmluZGV4T2YodCk+PTB9fTt2YXIgU3U9e30sTXU9bnVsbDsidW5kZWZpbmVkIiE9dHlwZW9mIGRvY3VtZW50JiYoIm9ubW91c2VlbnRlciJpbiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnR8fChTdT17bW91c2VlbnRlcjoibW91c2VvdmVyIixtb3VzZWxlYXZlOiJtb3VzZW91dCJ9KSk7ZnVuY3Rpb24gRXUodCxlLG4pe3JldHVybiB0PVR1KHQsZSxuKSxmdW5jdGlvbihlKXt2YXIgbj1lLnJlbGF0ZWRUYXJnZXQ7biYmKG49PT10aGlzfHw4Jm4uY29tcGFyZURvY3VtZW50UG9zaXRpb24odGhpcykpfHx0LmNhbGwodGhpcyxlKX19ZnVuY3Rpb24gVHUodCxlLG4pe3JldHVybiBmdW5jdGlvbihpKXt2YXIgcj1NdTtNdT1pO3RyeXt0LmNhbGwodGhpcyx0aGlzLl9fZGF0YV9fLGUsbil9ZmluYWxseXtNdT1yfX19ZnVuY3Rpb24gQ3UodCl7cmV0dXJuIHQudHJpbSgpLnNwbGl0KC9efFxzKy8pLm1hcCgoZnVuY3Rpb24odCl7dmFyIGU9IiIsbj10LmluZGV4T2YoIi4iKTtyZXR1cm4gbj49MCYmKGU9dC5zbGljZShuKzEpLHQ9dC5zbGljZSgwLG4pKSx7dHlwZTp0LG5hbWU6ZX19KSl9ZnVuY3Rpb24gQXUodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5fX29uO2lmKGUpe2Zvcih2YXIgbixpPTAscj0tMSxvPWUubGVuZ3RoO2k8bzsrK2kpbj1lW2ldLHQudHlwZSYmbi50eXBlIT09dC50eXBlfHxuLm5hbWUhPT10Lm5hbWU/ZVsrK3JdPW46dGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKG4udHlwZSxuLmxpc3RlbmVyLG4uY2FwdHVyZSk7KytyP2UubGVuZ3RoPXI6ZGVsZXRlIHRoaXMuX19vbn19fWZ1bmN0aW9uIGt1KHQsZSxuKXt2YXIgaT1TdS5oYXNPd25Qcm9wZXJ0eSh0LnR5cGUpP0V1OlR1O3JldHVybiBmdW5jdGlvbihyLG8sYSl7dmFyIHMsbD10aGlzLl9fb24sYz1pKGUsbyxhKTtpZihsKWZvcih2YXIgdT0wLGg9bC5sZW5ndGg7dTxoOysrdSlpZigocz1sW3VdKS50eXBlPT09dC50eXBlJiZzLm5hbWU9PT10Lm5hbWUpcmV0dXJuIHRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcihzLnR5cGUscy5saXN0ZW5lcixzLmNhcHR1cmUpLHRoaXMuYWRkRXZlbnRMaXN0ZW5lcihzLnR5cGUscy5saXN0ZW5lcj1jLHMuY2FwdHVyZT1uKSx2b2lkKHMudmFsdWU9ZSk7dGhpcy5hZGRFdmVudExpc3RlbmVyKHQudHlwZSxjLG4pLHM9e3R5cGU6dC50eXBlLG5hbWU6dC5uYW1lLHZhbHVlOmUsbGlzdGVuZXI6YyxjYXB0dXJlOm59LGw/bC5wdXNoKHMpOnRoaXMuX19vbj1bc119fWZ1bmN0aW9uIEx1KHQsZSxuLGkpe3ZhciByPU11O3Quc291cmNlRXZlbnQ9TXUsTXU9dDt0cnl7cmV0dXJuIGUuYXBwbHkobixpKX1maW5hbGx5e011PXJ9fWZ1bmN0aW9uIFB1KHQsZSxuKXt2YXIgaT0kYyh0KSxyPWkuQ3VzdG9tRXZlbnQ7ImZ1bmN0aW9uIj09dHlwZW9mIHI/cj1uZXcgcihlLG4pOihyPWkuZG9jdW1lbnQuY3JlYXRlRXZlbnQoIkV2ZW50Iiksbj8oci5pbml0RXZlbnQoZSxuLmJ1YmJsZXMsbi5jYW5jZWxhYmxlKSxyLmRldGFpbD1uLmRldGFpbCk6ci5pbml0RXZlbnQoZSwhMSwhMSkpLHQuZGlzcGF0Y2hFdmVudChyKX1mdW5jdGlvbiBOdSh0LGUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBQdSh0aGlzLHQsZSl9fWZ1bmN0aW9uIEl1KHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIFB1KHRoaXMsdCxlLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9fXZhciBSdT1bbnVsbF07ZnVuY3Rpb24gT3UodCxlKXt0aGlzLl9ncm91cHM9dCx0aGlzLl9wYXJlbnRzPWV9ZnVuY3Rpb24genUoKXtyZXR1cm4gbmV3IE91KFtbZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50XV0sUnUpfWZ1bmN0aW9uIER1KHQpe3JldHVybiJzdHJpbmciPT10eXBlb2YgdD9uZXcgT3UoW1tkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHQpXV0sW2RvY3VtZW50LmRvY3VtZW50RWxlbWVudF0pOm5ldyBPdShbW3RdXSxSdSl9T3UucHJvdG90eXBlPXp1LnByb3RvdHlwZT17Y29uc3RydWN0b3I6T3Usc2VsZWN0OmZ1bmN0aW9uIEJ1KHQpeyJmdW5jdGlvbiIhPXR5cGVvZiB0JiYodD1SYyh0KSk7Zm9yKHZhciBlPXRoaXMuX2dyb3VwcyxuPWUubGVuZ3RoLGk9bmV3IEFycmF5KG4pLHI9MDtyPG47KytyKWZvcih2YXIgbyxhLHM9ZVtyXSxsPXMubGVuZ3RoLGM9aVtyXT1uZXcgQXJyYXkobCksdT0wO3U8bDsrK3UpKG89c1t1XSkmJihhPXQuY2FsbChvLG8uX19kYXRhX18sdSxzKSkmJigiX19kYXRhX18iaW4gbyYmKGEuX19kYXRhX189by5fX2RhdGFfXyksY1t1XT1hKTtyZXR1cm4gbmV3IE91KGksdGhpcy5fcGFyZW50cyl9LHNlbGVjdEFsbDpmdW5jdGlvbiBIdSh0KXsiZnVuY3Rpb24iIT10eXBlb2YgdCYmKHQ9emModCkpO2Zvcih2YXIgZT10aGlzLl9ncm91cHMsbj1lLmxlbmd0aCxpPVtdLHI9W10sbz0wO288bjsrK28pZm9yKHZhciBhLHM9ZVtvXSxsPXMubGVuZ3RoLGM9MDtjPGw7KytjKShhPXNbY10pJiYoaS5wdXNoKHQuY2FsbChhLGEuX19kYXRhX18sYyxzKSksci5wdXNoKGEpKTtyZXR1cm4gbmV3IE91KGkscil9LGZpbHRlcjpmdW5jdGlvbiBGdSh0KXsiZnVuY3Rpb24iIT10eXBlb2YgdCYmKHQ9RGModCkpO2Zvcih2YXIgZT10aGlzLl9ncm91cHMsbj1lLmxlbmd0aCxpPW5ldyBBcnJheShuKSxyPTA7cjxuOysrcilmb3IodmFyIG8sYT1lW3JdLHM9YS5sZW5ndGgsbD1pW3JdPVtdLGM9MDtjPHM7KytjKShvPWFbY10pJiZ0LmNhbGwobyxvLl9fZGF0YV9fLGMsYSkmJmwucHVzaChvKTtyZXR1cm4gbmV3IE91KGksdGhpcy5fcGFyZW50cyl9LGRhdGE6ZnVuY3Rpb24gVnUodCxlKXtpZighdClyZXR1cm4gZj1uZXcgQXJyYXkodGhpcy5zaXplKCkpLHU9LTEsdGhpcy5lYWNoKChmdW5jdGlvbih0KXtmWysrdV09dH0pKSxmO3ZhciBuPWU/VmM6RmMsaT10aGlzLl9wYXJlbnRzLHI9dGhpcy5fZ3JvdXBzOyJmdW5jdGlvbiIhPXR5cGVvZiB0JiYodD0oZnVuY3Rpb24gbyh0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19KSh0KSk7Zm9yKHZhciBhPXIubGVuZ3RoLHM9bmV3IEFycmF5KGEpLGw9bmV3IEFycmF5KGEpLGM9bmV3IEFycmF5KGEpLHU9MDt1PGE7Kyt1KXt2YXIgaD1pW3VdLGQ9clt1XSxwPWQubGVuZ3RoLGY9dC5jYWxsKGgsaCYmaC5fX2RhdGFfXyx1LGkpLG09Zi5sZW5ndGgsZz1sW3VdPW5ldyBBcnJheShtKSxfPXNbdV09bmV3IEFycmF5KG0pO24oaCxkLGcsXyxjW3VdPW5ldyBBcnJheShwKSxmLGUpO2Zvcih2YXIgeSx2LGI9MCx4PTA7YjxtOysrYilpZih5PWdbYl0pe2ZvcihiPj14JiYoeD1iKzEpOyEodj1fW3hdKSYmKyt4PG07KTt5Ll9uZXh0PXZ8fG51bGx9fXJldHVybihzPW5ldyBPdShzLGkpKS5fZW50ZXI9bCxzLl9leGl0PWMsc30sZW50ZXI6ZnVuY3Rpb24gVXUoKXtyZXR1cm4gbmV3IE91KHRoaXMuX2VudGVyfHx0aGlzLl9ncm91cHMubWFwKEJjKSx0aGlzLl9wYXJlbnRzKX0sZXhpdDpmdW5jdGlvbiBqdSgpe3JldHVybiBuZXcgT3UodGhpcy5fZXhpdHx8dGhpcy5fZ3JvdXBzLm1hcChCYyksdGhpcy5fcGFyZW50cyl9LGpvaW46ZnVuY3Rpb24gR3UodCxlLG4pe3ZhciBpPXRoaXMuZW50ZXIoKSxyPXRoaXMsbz10aGlzLmV4aXQoKTtyZXR1cm4gaT0iZnVuY3Rpb24iPT10eXBlb2YgdD90KGkpOmkuYXBwZW5kKHQrIiIpLG51bGwhPWUmJihyPWUocikpLG51bGw9PW4/by5yZW1vdmUoKTpuKG8pLGkmJnI/aS5tZXJnZShyKS5vcmRlcigpOnJ9LG1lcmdlOmZ1bmN0aW9uIFd1KHQpe2Zvcih2YXIgZT10aGlzLl9ncm91cHMsbj10Ll9ncm91cHMsaT1lLmxlbmd0aCxyPU1hdGgubWluKGksbi5sZW5ndGgpLG89bmV3IEFycmF5KGkpLGE9MDthPHI7KythKWZvcih2YXIgcyxsPWVbYV0sYz1uW2FdLHU9bC5sZW5ndGgsaD1vW2FdPW5ldyBBcnJheSh1KSxkPTA7ZDx1OysrZCkocz1sW2RdfHxjW2RdKSYmKGhbZF09cyk7Zm9yKDthPGk7KythKW9bYV09ZVthXTtyZXR1cm4gbmV3IE91KG8sdGhpcy5fcGFyZW50cyl9LG9yZGVyOmZ1bmN0aW9uIHF1KCl7Zm9yKHZhciB0PXRoaXMuX2dyb3VwcyxlPS0xLG49dC5sZW5ndGg7KytlPG47KWZvcih2YXIgaSxyPXRbZV0sbz1yLmxlbmd0aC0xLGE9cltvXTstLW8+PTA7KShpPXJbb10pJiYoYSYmNF5pLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGEpJiZhLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGksYSksYT1pKTtyZXR1cm4gdGhpc30sc29ydDpmdW5jdGlvbiBZdSh0KXtmdW5jdGlvbiBlKGUsbil7cmV0dXJuIGUmJm4/dChlLl9fZGF0YV9fLG4uX19kYXRhX18pOiFlLSFufXR8fCh0PVVjKTtmb3IodmFyIG49dGhpcy5fZ3JvdXBzLGk9bi5sZW5ndGgscj1uZXcgQXJyYXkoaSksbz0wO288aTsrK28pe2Zvcih2YXIgYSxzPW5bb10sbD1zLmxlbmd0aCxjPXJbb109bmV3IEFycmF5KGwpLHU9MDt1PGw7Kyt1KShhPXNbdV0pJiYoY1t1XT1hKTtjLnNvcnQoZSl9cmV0dXJuIG5ldyBPdShyLHRoaXMuX3BhcmVudHMpLm9yZGVyKCl9LGNhbGw6ZnVuY3Rpb24gWHUoKXt2YXIgdD1hcmd1bWVudHNbMF07cmV0dXJuIGFyZ3VtZW50c1swXT10aGlzLHQuYXBwbHkobnVsbCxhcmd1bWVudHMpLHRoaXN9LG5vZGVzOmZ1bmN0aW9uICR1KCl7dmFyIHQ9bmV3IEFycmF5KHRoaXMuc2l6ZSgpKSxlPS0xO3JldHVybiB0aGlzLmVhY2goKGZ1bmN0aW9uKCl7dFsrK2VdPXRoaXN9KSksdH0sbm9kZTpmdW5jdGlvbiBLdSgpe2Zvcih2YXIgdD10aGlzLl9ncm91cHMsZT0wLG49dC5sZW5ndGg7ZTxuOysrZSlmb3IodmFyIGk9dFtlXSxyPTAsbz1pLmxlbmd0aDtyPG87KytyKXt2YXIgYT1pW3JdO2lmKGEpcmV0dXJuIGF9cmV0dXJuIG51bGx9LHNpemU6ZnVuY3Rpb24gWnUoKXt2YXIgdD0wO3JldHVybiB0aGlzLmVhY2goKGZ1bmN0aW9uKCl7Kyt0fSkpLHR9LGVtcHR5OmZ1bmN0aW9uIEp1KCl7cmV0dXJuIXRoaXMubm9kZSgpfSxlYWNoOmZ1bmN0aW9uIFF1KHQpe2Zvcih2YXIgZT10aGlzLl9ncm91cHMsbj0wLGk9ZS5sZW5ndGg7bjxpOysrbilmb3IodmFyIHIsbz1lW25dLGE9MCxzPW8ubGVuZ3RoO2E8czsrK2EpKHI9b1thXSkmJnQuY2FsbChyLHIuX19kYXRhX18sYSxvKTtyZXR1cm4gdGhpc30sYXR0cjpmdW5jdGlvbiB0aCh0LGUpe3ZhciBuPWtjKHQpO2lmKGFyZ3VtZW50cy5sZW5ndGg8Mil7dmFyIGk9dGhpcy5ub2RlKCk7cmV0dXJuIG4ubG9jYWw/aS5nZXRBdHRyaWJ1dGVOUyhuLnNwYWNlLG4ubG9jYWwpOmkuZ2V0QXR0cmlidXRlKG4pfXJldHVybiB0aGlzLmVhY2goKG51bGw9PWU/bi5sb2NhbD9HYzpqYzoiZnVuY3Rpb24iPT10eXBlb2YgZT9uLmxvY2FsP1hjOlljOm4ubG9jYWw/cWM6V2MpKG4sZSkpfSxzdHlsZTpmdW5jdGlvbiBlaCh0LGUsbil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg+MT90aGlzLmVhY2goKG51bGw9PWU/S2M6ImZ1bmN0aW9uIj09dHlwZW9mIGU/SmM6WmMpKHQsZSxudWxsPT1uPyIiOm4pKTpRYyh0aGlzLm5vZGUoKSx0KX0scHJvcGVydHk6ZnVuY3Rpb24gbmgodCxlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD4xP3RoaXMuZWFjaCgobnVsbD09ZT90dToiZnVuY3Rpb24iPT10eXBlb2YgZT9udTpldSkodCxlKSk6dGhpcy5ub2RlKClbdF19LGNsYXNzZWQ6ZnVuY3Rpb24gaWgodCxlKXt2YXIgbj1pdSh0KyIiKTtpZihhcmd1bWVudHMubGVuZ3RoPDIpe2Zvcih2YXIgaT1ydSh0aGlzLm5vZGUoKSkscj0tMSxvPW4ubGVuZ3RoOysrcjxvOylpZighaS5jb250YWlucyhuW3JdKSlyZXR1cm4hMTtyZXR1cm4hMH1yZXR1cm4gdGhpcy5lYWNoKCgiZnVuY3Rpb24iPT10eXBlb2YgZT91dTplP2x1OmN1KShuLGUpKX0sdGV4dDpmdW5jdGlvbiByaCh0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90aGlzLmVhY2gobnVsbD09dD9odTooImZ1bmN0aW9uIj09dHlwZW9mIHQ/cHU6ZHUpKHQpKTp0aGlzLm5vZGUoKS50ZXh0Q29udGVudH0saHRtbDpmdW5jdGlvbiBvaCh0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90aGlzLmVhY2gobnVsbD09dD9mdTooImZ1bmN0aW9uIj09dHlwZW9mIHQ/Z3U6bXUpKHQpKTp0aGlzLm5vZGUoKS5pbm5lckhUTUx9LHJhaXNlOmZ1bmN0aW9uIGFoKCl7cmV0dXJuIHRoaXMuZWFjaChfdSl9LGxvd2VyOmZ1bmN0aW9uIHNoKCl7cmV0dXJuIHRoaXMuZWFjaCh5dSl9LGFwcGVuZDpmdW5jdGlvbiBsaCh0KXt2YXIgZT0iZnVuY3Rpb24iPT10eXBlb2YgdD90Ok5jKHQpO3JldHVybiB0aGlzLnNlbGVjdCgoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hcHBlbmRDaGlsZChlLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9KSl9LGluc2VydDpmdW5jdGlvbiBjaCh0LGUpe3ZhciBuPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6TmModCksaT1udWxsPT1lP3Z1OiJmdW5jdGlvbiI9PXR5cGVvZiBlP2U6UmMoZSk7cmV0dXJuIHRoaXMuc2VsZWN0KChmdW5jdGlvbigpe3JldHVybiB0aGlzLmluc2VydEJlZm9yZShuLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxpLmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8bnVsbCl9KSl9LHJlbW92ZTpmdW5jdGlvbiB1aCgpe3JldHVybiB0aGlzLmVhY2goYnUpfSxjbG9uZTpmdW5jdGlvbiBoaCh0KXtyZXR1cm4gdGhpcy5zZWxlY3QodD93dTp4dSl9LGRhdHVtOmZ1bmN0aW9uIGRoKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3RoaXMucHJvcGVydHkoIl9fZGF0YV9fIix0KTp0aGlzLm5vZGUoKS5fX2RhdGFfX30sb246ZnVuY3Rpb24gcGgodCxlLG4pe3ZhciBpLHIsbz1DdSh0KyIiKSxhPW8ubGVuZ3RoO2lmKCEoYXJndW1lbnRzLmxlbmd0aDwyKSl7Zm9yKHM9ZT9rdTpBdSxudWxsPT1uJiYobj0hMSksaT0wO2k8YTsrK2kpdGhpcy5lYWNoKHMob1tpXSxlLG4pKTtyZXR1cm4gdGhpc312YXIgcz10aGlzLm5vZGUoKS5fX29uO2lmKHMpZm9yKHZhciBsLGM9MCx1PXMubGVuZ3RoO2M8dTsrK2MpZm9yKGk9MCxsPXNbY107aTxhOysraSlpZigocj1vW2ldKS50eXBlPT09bC50eXBlJiZyLm5hbWU9PT1sLm5hbWUpcmV0dXJuIGwudmFsdWV9LGRpc3BhdGNoOmZ1bmN0aW9uIGZoKHQsZSl7cmV0dXJuIHRoaXMuZWFjaCgoImZ1bmN0aW9uIj09dHlwZW9mIGU/SXU6TnUpKHQsZSkpfX07dmFyIG1oPTA7ZnVuY3Rpb24gZ2goKXtyZXR1cm4gbmV3IF9ofWZ1bmN0aW9uIF9oKCl7dGhpcy5fPSJAIisoKyttaCkudG9TdHJpbmcoMzYpfWZ1bmN0aW9uIHloKCl7Zm9yKHZhciB0LGU9TXU7dD1lLnNvdXJjZUV2ZW50OyllPXQ7cmV0dXJuIGV9ZnVuY3Rpb24gdmgodCxlKXt2YXIgbj10Lm93bmVyU1ZHRWxlbWVudHx8dDtpZihuLmNyZWF0ZVNWR1BvaW50KXt2YXIgaT1uLmNyZWF0ZVNWR1BvaW50KCk7cmV0dXJuIGkueD1lLmNsaWVudFgsaS55PWUuY2xpZW50WSxbKGk9aS5tYXRyaXhUcmFuc2Zvcm0odC5nZXRTY3JlZW5DVE0oKS5pbnZlcnNlKCkpKS54LGkueV19dmFyIHI9dC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtyZXR1cm5bZS5jbGllbnRYLXIubGVmdC10LmNsaWVudExlZnQsZS5jbGllbnRZLXIudG9wLXQuY2xpZW50VG9wXX1mdW5jdGlvbiBiaCh0KXt2YXIgZT15aCgpO3JldHVybiBlLmNoYW5nZWRUb3VjaGVzJiYoZT1lLmNoYW5nZWRUb3VjaGVzWzBdKSx2aCh0LGUpfWZ1bmN0aW9uIHhoKHQpe3JldHVybiJzdHJpbmciPT10eXBlb2YgdD9uZXcgT3UoW2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwodCldLFtkb2N1bWVudC5kb2N1bWVudEVsZW1lbnRdKTpuZXcgT3UoW251bGw9PXQ/W106dF0sUnUpfWZ1bmN0aW9uIHdoKHQsZSxuKXthcmd1bWVudHMubGVuZ3RoPDMmJihuPWUsZT15aCgpLmNoYW5nZWRUb3VjaGVzKTtmb3IodmFyIGkscj0wLG89ZT9lLmxlbmd0aDowO3I8bzsrK3IpaWYoKGk9ZVtyXSkuaWRlbnRpZmllcj09PW4pcmV0dXJuIHZoKHQsaSk7cmV0dXJuIG51bGx9ZnVuY3Rpb24gU2goKXtNdS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKX1mdW5jdGlvbiBNaCgpe011LnByZXZlbnREZWZhdWx0KCksTXUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCl9ZnVuY3Rpb24gRWgodCl7dmFyIGU9dC5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsbj1EdSh0KS5vbigiZHJhZ3N0YXJ0LmRyYWciLE1oLCEwKTsib25zZWxlY3RzdGFydCJpbiBlP24ub24oInNlbGVjdHN0YXJ0LmRyYWciLE1oLCEwKTooZS5fX25vc2VsZWN0PWUuc3R5bGUuTW96VXNlclNlbGVjdCxlLnN0eWxlLk1velVzZXJTZWxlY3Q9Im5vbmUiKX1mdW5jdGlvbiBUaCh0LGUpe3ZhciBuPXQuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LGk9RHUodCkub24oImRyYWdzdGFydC5kcmFnIixudWxsKTtlJiYoaS5vbigiY2xpY2suZHJhZyIsTWgsITApLHNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7aS5vbigiY2xpY2suZHJhZyIsbnVsbCl9KSwwKSksIm9uc2VsZWN0c3RhcnQiaW4gbj9pLm9uKCJzZWxlY3RzdGFydC5kcmFnIixudWxsKToobi5zdHlsZS5Nb3pVc2VyU2VsZWN0PW4uX19ub3NlbGVjdCxkZWxldGUgbi5fX25vc2VsZWN0KX1mdW5jdGlvbiBDaCh0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19ZnVuY3Rpb24gQWgodCxlLG4saSxyLG8sYSxzLGwsYyl7dGhpcy50YXJnZXQ9dCx0aGlzLnR5cGU9ZSx0aGlzLnN1YmplY3Q9bix0aGlzLmlkZW50aWZpZXI9aSx0aGlzLmFjdGl2ZT1yLHRoaXMueD1vLHRoaXMueT1hLHRoaXMuZHg9cyx0aGlzLmR5PWwsdGhpcy5fPWN9ZnVuY3Rpb24ga2goKXtyZXR1cm4hTXUuY3RybEtleSYmIU11LmJ1dHRvbn1mdW5jdGlvbiBMaCgpe3JldHVybiB0aGlzLnBhcmVudE5vZGV9ZnVuY3Rpb24gUGgodCl7cmV0dXJuIG51bGw9PXQ/e3g6TXUueCx5Ok11Lnl9OnR9ZnVuY3Rpb24gTmgoKXtyZXR1cm4gbmF2aWdhdG9yLm1heFRvdWNoUG9pbnRzfHwib250b3VjaHN0YXJ0ImluIHRoaXN9ZnVuY3Rpb24gSWgoKXt2YXIgdCxlLG4saSxyPWtoLG89TGgsYT1QaCxzPU5oLGw9e30sYz13Yygic3RhcnQiLCJkcmFnIiwiZW5kIiksdT0wLGg9MDtmdW5jdGlvbiBkKHQpe3Qub24oIm1vdXNlZG93bi5kcmFnIixwKS5maWx0ZXIocykub24oInRvdWNoc3RhcnQuZHJhZyIsZykub24oInRvdWNobW92ZS5kcmFnIixfKS5vbigidG91Y2hlbmQuZHJhZyB0b3VjaGNhbmNlbC5kcmFnIix5KS5zdHlsZSgidG91Y2gtYWN0aW9uIiwibm9uZSIpLnN0eWxlKCItd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3IiLCJyZ2JhKDAsMCwwLDApIil9ZnVuY3Rpb24gcCgpe2lmKCFpJiZyLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl7dmFyIGE9digibW91c2UiLG8uYXBwbHkodGhpcyxhcmd1bWVudHMpLGJoLHRoaXMsYXJndW1lbnRzKTthJiYoRHUoTXUudmlldykub24oIm1vdXNlbW92ZS5kcmFnIixmLCEwKS5vbigibW91c2V1cC5kcmFnIixtLCEwKSxFaChNdS52aWV3KSxTaCgpLG49ITEsdD1NdS5jbGllbnRYLGU9TXUuY2xpZW50WSxhKCJzdGFydCIpKX19ZnVuY3Rpb24gZigpe2lmKE1oKCksIW4pe3ZhciBpPU11LmNsaWVudFgtdCxyPU11LmNsaWVudFktZTtuPWkqaStyKnI+aH1sLm1vdXNlKCJkcmFnIil9ZnVuY3Rpb24gbSgpe0R1KE11LnZpZXcpLm9uKCJtb3VzZW1vdmUuZHJhZyBtb3VzZXVwLmRyYWciLG51bGwpLFRoKE11LnZpZXcsbiksTWgoKSxsLm1vdXNlKCJlbmQiKX1mdW5jdGlvbiBnKCl7aWYoci5hcHBseSh0aGlzLGFyZ3VtZW50cykpe3ZhciB0LGUsbj1NdS5jaGFuZ2VkVG91Y2hlcyxpPW8uYXBwbHkodGhpcyxhcmd1bWVudHMpLGE9bi5sZW5ndGg7Zm9yKHQ9MDt0PGE7Kyt0KShlPXYoblt0XS5pZGVudGlmaWVyLGksd2gsdGhpcyxhcmd1bWVudHMpKSYmKFNoKCksZSgic3RhcnQiKSl9fWZ1bmN0aW9uIF8oKXt2YXIgdCxlLG49TXUuY2hhbmdlZFRvdWNoZXMsaT1uLmxlbmd0aDtmb3IodD0wO3Q8aTsrK3QpKGU9bFtuW3RdLmlkZW50aWZpZXJdKSYmKE1oKCksZSgiZHJhZyIpKX1mdW5jdGlvbiB5KCl7dmFyIHQsZSxuPU11LmNoYW5nZWRUb3VjaGVzLHI9bi5sZW5ndGg7Zm9yKGkmJmNsZWFyVGltZW91dChpKSxpPXNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7aT1udWxsfSksNTAwKSx0PTA7dDxyOysrdCkoZT1sW25bdF0uaWRlbnRpZmllcl0pJiYoU2goKSxlKCJlbmQiKSl9ZnVuY3Rpb24gdih0LGUsbixpLHIpe3ZhciBvLHMsaCxwPW4oZSx0KSxmPWMuY29weSgpO2lmKEx1KG5ldyBBaChkLCJiZWZvcmVzdGFydCIsbyx0LHUscFswXSxwWzFdLDAsMCxmKSwoZnVuY3Rpb24oKXtyZXR1cm4gbnVsbCE9KE11LnN1YmplY3Q9bz1hLmFwcGx5KGkscikpJiYocz1vLngtcFswXXx8MCxoPW8ueS1wWzFdfHwwLCEwKX0pKSlyZXR1cm4gZnVuY3Rpb24gYShjKXt2YXIgbSxnPXA7c3dpdGNoKGMpe2Nhc2Uic3RhcnQiOmxbdF09YSxtPXUrKzticmVhaztjYXNlImVuZCI6ZGVsZXRlIGxbdF0sLS11O2Nhc2UiZHJhZyI6cD1uKGUsdCksbT11fUx1KG5ldyBBaChkLGMsbyx0LG0scFswXStzLHBbMV0raCxwWzBdLWdbMF0scFsxXS1nWzFdLGYpLGYuYXBwbHksZixbYyxpLHJdKX19cmV0dXJuIGQuZmlsdGVyPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6Q2goISF0KSxkKTpyfSxkLmNvbnRhaW5lcj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz0iZnVuY3Rpb24iPT10eXBlb2YgdD90OkNoKHQpLGQpOm99LGQuc3ViamVjdD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT0iZnVuY3Rpb24iPT10eXBlb2YgdD90OkNoKHQpLGQpOmF9LGQudG91Y2hhYmxlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhzPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6Q2goISF0KSxkKTpzfSxkLm9uPWZ1bmN0aW9uKCl7dmFyIHQ9Yy5vbi5hcHBseShjLGFyZ3VtZW50cyk7cmV0dXJuIHQ9PT1jP2Q6dH0sZC5jbGlja0Rpc3RhbmNlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhoPSh0PSt0KSp0LGQpOk1hdGguc3FydChoKX0sZH1mdW5jdGlvbiBSaCh0LGUsbil7dC5wcm90b3R5cGU9ZS5wcm90b3R5cGU9bixuLmNvbnN0cnVjdG9yPXR9ZnVuY3Rpb24gT2godCxlKXt2YXIgbj1PYmplY3QuY3JlYXRlKHQucHJvdG90eXBlKTtmb3IodmFyIGkgaW4gZSluW2ldPWVbaV07cmV0dXJuIG59ZnVuY3Rpb24gemgoKXt9X2gucHJvdG90eXBlPWdoLnByb3RvdHlwZT17Y29uc3RydWN0b3I6X2gsZ2V0OmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10aGlzLl87IShlIGluIHQpOylpZighKHQ9dC5wYXJlbnROb2RlKSlyZXR1cm47cmV0dXJuIHRbZV19LHNldDpmdW5jdGlvbih0LGUpe3JldHVybiB0W3RoaXMuX109ZX0scmVtb3ZlOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl8gaW4gdCYmZGVsZXRlIHRbdGhpcy5fXX0sdG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ffX0sQWgucHJvdG90eXBlLm9uPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fLm9uLmFwcGx5KHRoaXMuXyxhcmd1bWVudHMpO3JldHVybiB0PT09dGhpcy5fP3RoaXM6dH07dmFyIERoPS43LEJoPTEvRGgsSGg9IlxccyooWystXT9cXGQrKVxccyoiLEZoPSJcXHMqKFsrLV0/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/IikiOiIsICIrdCsiKSIpfX0pKTt2YXIgcGQ9TWF0aC5QSS8xODAsZmQ9MTgwL01hdGguUEksbWQ9Ljk2NDIyLGdkPS44MjUyMSxfZD00LzI5LHlkPTYvMjksdmQ9Myp5ZCp5ZDtmdW5jdGlvbiBiZCh0KXtpZih0IGluc3RhbmNlb2Ygd2QpcmV0dXJuIG5ldyB3ZCh0LmwsdC5hLHQuYix0Lm9wYWNpdHkpO2lmKHQgaW5zdGFuY2VvZiBrZClyZXR1cm4gTGQodCk7dCBpbnN0YW5jZW9mIGlkfHwodD1lZCh0KSk7dmFyIGUsbixpPVRkKHQucikscj1UZCh0LmcpLG89VGQodC5iKSxhPVNkKCguMjIyNTA0NSppKy43MTY4Nzg2KnIrLjA2MDYxNjkqbykvMSk7cmV0dXJuIGk9PT1yJiZyPT09bz9lPW49YTooZT1TZCgoLjQzNjA3NDcqaSsuMzg1MDY0OSpyKy4xNDMwODA0Km8pL21kKSxuPVNkKCguMDEzOTMyMippKy4wOTcxMDQ1KnIrLjcxNDE3MzMqbykvZ2QpKSxuZXcgd2QoMTE2KmEtMTYsNTAwKihlLWEpLDIwMCooYS1uKSx0Lm9wYWNpdHkpfWZ1bmN0aW9uIHhkKHQsZSxuLGkpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9iZCh0KTpuZXcgd2QodCxlLG4sbnVsbD09aT8xOmkpfWZ1bmN0aW9uIHdkKHQsZSxuLGkpe3RoaXMubD0rdCx0aGlzLmE9K2UsdGhpcy5iPStuLHRoaXMub3BhY2l0eT0raX1mdW5jdGlvbiBTZCh0KXtyZXR1cm4gdD4uMDA4ODU2NDUxNjc5MDM1NjMxP01hdGgucG93KHQsMS8zKTp0L3ZkK19kfWZ1bmN0aW9uIE1kKHQpe3JldHVybiB0PnlkP3QqdCp0OnZkKih0LV9kKX1mdW5jdGlvbiBFZCh0KXtyZXR1cm4gMjU1Kih0PD0uMDAzMTMwOD8xMi45Mip0OjEuMDU1Kk1hdGgucG93KHQsMS8yLjQpLS4wNTUpfWZ1bmN0aW9uIFRkKHQpe3JldHVybih0Lz0yNTUpPD0uMDQwNDU/dC8xMi45MjpNYXRoLnBvdygodCsuMDU1KS8xLjA1NSwyLjQpfWZ1bmN0aW9uIENkKHQpe2lmKHQgaW5zdGFuY2VvZiBrZClyZXR1cm4gbmV3IGtkKHQuaCx0LmMsdC5sLHQub3BhY2l0eSk7aWYodCBpbnN0YW5jZW9mIHdkfHwodD1iZCh0KSksMD09PXQuYSYmMD09PXQuYilyZXR1cm4gbmV3IGtkKE5hTiwwPHQubCYmdC5sPDEwMD8wOk5hTix0LmwsdC5vcGFjaXR5KTt2YXIgZT1NYXRoLmF0YW4yKHQuYix0LmEpKmZkO3JldHVybiBuZXcga2QoZTwwP2UrMzYwOmUsTWF0aC5zcXJ0KHQuYSp0LmErdC5iKnQuYiksdC5sLHQub3BhY2l0eSl9ZnVuY3Rpb24gQWQodCxlLG4saSl7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP0NkKHQpOm5ldyBrZCh0LGUsbixudWxsPT1pPzE6aSl9ZnVuY3Rpb24ga2QodCxlLG4saSl7dGhpcy5oPSt0LHRoaXMuYz0rZSx0aGlzLmw9K24sdGhpcy5vcGFjaXR5PStpfWZ1bmN0aW9uIExkKHQpe2lmKGlzTmFOKHQuaCkpcmV0dXJuIG5ldyB3ZCh0LmwsMCwwLHQub3BhY2l0eSk7dmFyIGU9dC5oKnBkO3JldHVybiBuZXcgd2QodC5sLE1hdGguY29zKGUpKnQuYyxNYXRoLnNpbihlKSp0LmMsdC5vcGFjaXR5KX1SaCh3ZCx4ZCxPaCh6aCx7YnJpZ2h0ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyB3ZCh0aGlzLmwrMTgqKG51bGw9PXQ/MTp0KSx0aGlzLmEsdGhpcy5iLHRoaXMub3BhY2l0eSl9LGRhcmtlcjpmdW5jdGlvbih0KXtyZXR1cm4gbmV3IHdkKHRoaXMubC0xOCoobnVsbD09dD8xOnQpLHRoaXMuYSx0aGlzLmIsdGhpcy5vcGFjaXR5KX0scmdiOmZ1bmN0aW9uKCl7dmFyIHQ9KHRoaXMubCsxNikvMTE2LGU9aXNOYU4odGhpcy5hKT90OnQrdGhpcy5hLzUwMCxuPWlzTmFOKHRoaXMuYik/dDp0LXRoaXMuYi8yMDA7cmV0dXJuIG5ldyBpZChFZCgzLjEzMzg1NjEqKGU9bWQqTWQoZSkpLTEuNjE2ODY2NyoodD0xKk1kKHQpKS0uNDkwNjE0Nioobj1nZCpNZChuKSkpLEVkKC0uOTc4NzY4NCplKzEuOTE2MTQxNSp0Ky4wMzM0NTQqbiksRWQoLjA3MTk0NTMqZS0uMjI4OTkxNCp0KzEuNDA1MjQyNypuKSx0aGlzLm9wYWNpdHkpfX0pKSxSaChrZCxBZCxPaCh6aCx7YnJpZ2h0ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBrZCh0aGlzLmgsdGhpcy5jLHRoaXMubCsxOCoobnVsbD09dD8xOnQpLHRoaXMub3BhY2l0eSl9LGRhcmtlcjpmdW5jdGlvbih0KXtyZXR1cm4gbmV3IGtkKHRoaXMuaCx0aGlzLmMsdGhpcy5sLTE4KihudWxsPT10PzE6dCksdGhpcy5vcGFjaXR5KX0scmdiOmZ1bmN0aW9uKCl7cmV0dXJuIExkKHRoaXMpLnJnYigpfX0pKTt2YXIgUGQ9LS4xNDg2MSxOZD0xLjc4Mjc3LElkPS0uMjkyMjcsUmQ9LS45MDY0OSxPZD0xLjk3Mjk0LHpkPU9kKlJkLERkPU9kKk5kLEJkPU5kKklkLVJkKlBkO2Z1bmN0aW9uIEhkKHQpe2lmKHQgaW5zdGFuY2VvZiBWZClyZXR1cm4gbmV3IFZkKHQuaCx0LnMsdC5sLHQub3BhY2l0eSk7dCBpbnN0YW5jZW9mIGlkfHwodD1lZCh0KSk7dmFyIGU9dC5nLzI1NSxuPXQuYi8yNTUsaT0oQmQqbit6ZCoodC5yLzI1NSktRGQqZSkvLTUuOTYxNTEyMjkxMixyPW4taSxvPShPZCooZS1pKS1JZCpyKS9SZCxhPU1hdGguc3FydChvKm8rcipyKS8oT2QqaSooMS1pKSkscz1hP01hdGguYXRhbjIobyxyKSpmZC0xMjA6TmFOO3JldHVybiBuZXcgVmQoczwwP3MrMzYwOnMsYSxpLHQub3BhY2l0eSl9ZnVuY3Rpb24gRmQodCxlLG4saSl7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP0hkKHQpOm5ldyBWZCh0LGUsbixudWxsPT1pPzE6aSl9ZnVuY3Rpb24gVmQodCxlLG4saSl7dGhpcy5oPSt0LHRoaXMucz0rZSx0aGlzLmw9K24sdGhpcy5vcGFjaXR5PStpfWZ1bmN0aW9uIFVkKHQsZSxuLGkscil7dmFyIG89dCp0LGE9byp0O3JldHVybigoMS0zKnQrMypvLWEpKmUrKDQtNipvKzMqYSkqbisoMSszKnQrMypvLTMqYSkqaSthKnIpLzZ9ZnVuY3Rpb24gamQodCl7dmFyIGU9dC5sZW5ndGgtMTtyZXR1cm4gZnVuY3Rpb24obil7dmFyIGk9bjw9MD9uPTA6bj49MT8obj0xLGUtMSk6TWF0aC5mbG9vcihuKmUpLHI9dFtpXSxvPXRbaSsxXTtyZXR1cm4gVWQoKG4taS9lKSplLGk+MD90W2ktMV06MipyLW8scixvLGk8ZS0xP3RbaSsyXToyKm8tcil9fWZ1bmN0aW9uIEdkKHQpe3ZhciBlPXQubGVuZ3RoO3JldHVybiBmdW5jdGlvbihuKXt2YXIgaT1NYXRoLmZsb29yKCgobiU9MSk8MD8rK246bikqZSk7cmV0dXJuIFVkKChuLWkvZSkqZSx0WyhpK2UtMSklZV0sdFtpJWVdLHRbKGkrMSklZV0sdFsoaSsyKSVlXSl9fWZ1bmN0aW9uIFdkKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0fX1mdW5jdGlvbiBxZCh0LGUpe3JldHVybiBmdW5jdGlvbihuKXtyZXR1cm4gdCtuKmV9fWZ1bmN0aW9uIFlkKHQsZSl7dmFyIG49ZS10O3JldHVybiBuP3FkKHQsbj4xODB8fG48LTE4MD9uLTM2MCpNYXRoLnJvdW5kKG4vMzYwKTpuKTpXZChpc05hTih0KT9lOnQpfWZ1bmN0aW9uIFhkKHQpe3JldHVybiAxPT0odD0rdCk/JGQ6ZnVuY3Rpb24oZSxuKXtyZXR1cm4gbi1lPyhmdW5jdGlvbiBpKHQsZSxuKXtyZXR1cm4gdD1NYXRoLnBvdyh0LG4pLGU9TWF0aC5wb3coZSxuKS10LG49MS9uLGZ1bmN0aW9uKGkpe3JldHVybiBNYXRoLnBvdyh0K2kqZSxuKX19KShlLG4sdCk6V2QoaXNOYU4oZSk/bjplKX19ZnVuY3Rpb24gJGQodCxlKXt2YXIgbj1lLXQ7cmV0dXJuIG4/cWQodCxuKTpXZChpc05hTih0KT9lOnQpfVJoKFZkLEZkLE9oKHpoLHticmlnaHRlcjpmdW5jdGlvbih0KXtyZXR1cm4gdD1udWxsPT10P0JoOk1hdGgucG93KEJoLHQpLG5ldyBWZCh0aGlzLmgsdGhpcy5zLHRoaXMubCp0LHRoaXMub3BhY2l0eSl9LGRhcmtlcjpmdW5jdGlvbih0KXtyZXR1cm4gdD1udWxsPT10P0RoOk1hdGgucG93KERoLHQpLG5ldyBWZCh0aGlzLmgsdGhpcy5zLHRoaXMubCp0LHRoaXMub3BhY2l0eSl9LHJnYjpmdW5jdGlvbigpe3ZhciB0PWlzTmFOKHRoaXMuaCk/MDoodGhpcy5oKzEyMCkqcGQsZT0rdGhpcy5sLG49aXNOYU4odGhpcy5zKT8wOnRoaXMucyplKigxLWUpLGk9TWF0aC5jb3ModCkscj1NYXRoLnNpbih0KTtyZXR1cm4gbmV3IGlkKDI1NSooZStuKihQZCppK05kKnIpKSwyNTUqKGUrbiooSWQqaStSZCpyKSksMjU1KihlK24qKE9kKmkpKSx0aGlzLm9wYWNpdHkpfX0pKTt2YXIgS2Q9KGZ1bmN0aW9uIHQoZSl7dmFyIG49WGQoZSk7ZnVuY3Rpb24gaSh0LGUpe3ZhciBpPW4oKHQ9bmQodCkpLnIsKGU9bmQoZSkpLnIpLHI9bih0LmcsZS5nKSxvPW4odC5iLGUuYiksYT0kZCh0Lm9wYWNpdHksZS5vcGFjaXR5KTtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIHQucj1pKGUpLHQuZz1yKGUpLHQuYj1vKGUpLHQub3BhY2l0eT1hKGUpLHQrIiJ9fXJldHVybiBpLmdhbW1hPXQsaX0pKDEpO2Z1bmN0aW9uIFpkKHQpe3JldHVybiBmdW5jdGlvbihlKXt2YXIgbixpLHI9ZS5sZW5ndGgsbz1uZXcgQXJyYXkociksYT1uZXcgQXJyYXkocikscz1uZXcgQXJyYXkocik7Zm9yKG49MDtuPHI7KytuKWk9bmQoZVtuXSksb1tuXT1pLnJ8fDAsYVtuXT1pLmd8fDAsc1tuXT1pLmJ8fDA7cmV0dXJuIG89dChvKSxhPXQoYSkscz10KHMpLGkub3BhY2l0eT0xLGZ1bmN0aW9uKHQpe3JldHVybiBpLnI9byh0KSxpLmc9YSh0KSxpLmI9cyh0KSxpKyIifX19dmFyIEpkPVpkKGpkKSxRZD1aZChHZCk7ZnVuY3Rpb24gdHAodCxlKXtlfHwoZT1bXSk7dmFyIG4saT10P01hdGgubWluKGUubGVuZ3RoLHQubGVuZ3RoKTowLHI9ZS5zbGljZSgpO3JldHVybiBmdW5jdGlvbihvKXtmb3Iobj0wO248aTsrK24pcltuXT10W25dKigxLW8pK2Vbbl0qbztyZXR1cm4gcn19ZnVuY3Rpb24gZXAodCl7cmV0dXJuIEFycmF5QnVmZmVyLmlzVmlldyh0KSYmISh0IGluc3RhbmNlb2YgRGF0YVZpZXcpfWZ1bmN0aW9uIG5wKHQsZSl7dmFyIG4saT1lP2UubGVuZ3RoOjAscj10P01hdGgubWluKGksdC5sZW5ndGgpOjAsbz1uZXcgQXJyYXkociksYT1uZXcgQXJyYXkoaSk7Zm9yKG49MDtuPHI7KytuKW9bbl09Y3AodFtuXSxlW25dKTtmb3IoO248aTsrK24pYVtuXT1lW25dO3JldHVybiBmdW5jdGlvbih0KXtmb3Iobj0wO248cjsrK24pYVtuXT1vW25dKHQpO3JldHVybiBhfX1mdW5jdGlvbiBpcCh0LGUpe3ZhciBuPW5ldyBEYXRlO3JldHVybiB0PSt0LGU9K2UsZnVuY3Rpb24oaSl7cmV0dXJuIG4uc2V0VGltZSh0KigxLWkpK2UqaSksbn19ZnVuY3Rpb24gcnAodCxlKXtyZXR1cm4gdD0rdCxlPStlLGZ1bmN0aW9uKG4pe3JldHVybiB0KigxLW4pK2Uqbn19ZnVuY3Rpb24gb3AodCxlKXt2YXIgbixpPXt9LHI9e307Zm9yKG4gaW4gbnVsbCE9PXQmJiJvYmplY3QiPT10eXBlb2YgdHx8KHQ9e30pLG51bGwhPT1lJiYib2JqZWN0Ij09dHlwZW9mIGV8fChlPXt9KSxlKW4gaW4gdD9pW25dPWNwKHRbbl0sZVtuXSk6cltuXT1lW25dO3JldHVybiBmdW5jdGlvbih0KXtmb3IobiBpbiBpKXJbbl09aVtuXSh0KTtyZXR1cm4gcn19dmFyIGFwPS9bLStdPyg/OlxkK1wuP1xkKnxcLj9cZCspKD86W2VFXVstK10/XGQrKT8vZyxzcD1uZXcgUmVnRXhwKGFwLnNvdXJjZSwiZyIpO2Z1bmN0aW9uIGxwKHQsZSl7dmFyIG4saSxyLG89YXAubGFzdEluZGV4PXNwLmxhc3RJbmRleD0wLGE9LTEscz1bXSxsPVtdO2Zvcih0Kz0iIixlKz0iIjsobj1hcC5leGVjKHQpKSYmKGk9c3AuZXhlYyhlKSk7KShyPWkuaW5kZXgpPm8mJihyPWUuc2xpY2UobyxyKSxzW2FdP3NbYV0rPXI6c1srK2FdPXIpLChuPW5bMF0pPT09KGk9aVswXSk/c1thXT9zW2FdKz1pOnNbKythXT1pOihzWysrYV09bnVsbCxsLnB1c2goe2k6YSx4OnJwKG4saSl9KSksbz1zcC5sYXN0SW5kZXg7cmV0dXJuIG88ZS5sZW5ndGgmJihyPWUuc2xpY2Uobyksc1thXT9zW2FdKz1yOnNbKythXT1yKSxzLmxlbmd0aDwyP2xbMF0/KGZ1bmN0aW9uIGModCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiB0KGUpKyIifX0pKGxbMF0ueCk6KGZ1bmN0aW9uIHUodCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHR9fSkoZSk6KGU9bC5sZW5ndGgsZnVuY3Rpb24odCl7Zm9yKHZhciBuLGk9MDtpPGU7KytpKXNbKG49bFtpXSkuaV09bi54KHQpO3JldHVybiBzLmpvaW4oIiIpfSl9ZnVuY3Rpb24gY3AodCxlKXt2YXIgbixpPXR5cGVvZiBlO3JldHVybiBudWxsPT1lfHwiYm9vbGVhbiI9PT1pP1dkKGUpOigibnVtYmVyIj09PWk/cnA6InN0cmluZyI9PT1pPyhuPUpoKGUpKT8oZT1uLEtkKTpscDplIGluc3RhbmNlb2YgSmg/S2Q6ZSBpbnN0YW5jZW9mIERhdGU/aXA6ZXAoZSk/dHA6QXJyYXkuaXNBcnJheShlKT9ucDoiZnVuY3Rpb24iIT10eXBlb2YgZS52YWx1ZU9mJiYiZnVuY3Rpb24iIT10eXBlb2YgZS50b1N0cmluZ3x8aXNOYU4oZSk/b3A6cnApKHQsZSl9ZnVuY3Rpb24gdXAodCxlKXtyZXR1cm4gdD0rdCxlPStlLGZ1bmN0aW9uKG4pe3JldHVybiBNYXRoLnJvdW5kKHQqKDEtbikrZSpuKX19dmFyIGhwLGRwLHBwLGZwLG1wPTE4MC9NYXRoLlBJLGdwPXt0cmFuc2xhdGVYOjAsdHJhbnNsYXRlWTowLHJvdGF0ZTowLHNrZXdYOjAsc2NhbGVYOjEsc2NhbGVZOjF9O2Z1bmN0aW9uIF9wKHQsZSxuLGkscixvKXt2YXIgYSxzLGw7cmV0dXJuKGE9TWF0aC5zcXJ0KHQqdCtlKmUpKSYmKHQvPWEsZS89YSksKGw9dCpuK2UqaSkmJihuLT10KmwsaS09ZSpsKSwocz1NYXRoLnNxcnQobipuK2kqaSkpJiYobi89cyxpLz1zLGwvPXMpLHQqaTxlKm4mJih0PS10LGU9LWUsbD0tbCxhPS1hKSx7dHJhbnNsYXRlWDpyLHRyYW5zbGF0ZVk6byxyb3RhdGU6TWF0aC5hdGFuMihlLHQpKm1wLHNrZXdYOk1hdGguYXRhbihsKSptcCxzY2FsZVg6YSxzY2FsZVk6c319ZnVuY3Rpb24geXAodCxlLG4saSl7ZnVuY3Rpb24gcih0KXtyZXR1cm4gdC5sZW5ndGg/dC5wb3AoKSsiICI6IiJ9cmV0dXJuIGZ1bmN0aW9uKG8sYSl7dmFyIHM9W10sbD1bXTtyZXR1cm4gbz10KG8pLGE9dChhKSwoZnVuY3Rpb24gYyh0LGkscixvLGEscyl7aWYodCE9PXJ8fGkhPT1vKXt2YXIgbD1hLnB1c2goInRyYW5zbGF0ZSgiLG51bGwsZSxudWxsLG4pO3MucHVzaCh7aTpsLTQseDpycCh0LHIpfSx7aTpsLTIseDpycChpLG8pfSl9ZWxzZShyfHxvKSYmYS5wdXNoKCJ0cmFuc2xhdGUoIityK2UrbytuKX0pKG8udHJhbnNsYXRlWCxvLnRyYW5zbGF0ZVksYS50cmFuc2xhdGVYLGEudHJhbnNsYXRlWSxzLGwpLChmdW5jdGlvbiB1KHQsZSxuLG8pe3QhPT1lPyh0LWU+MTgwP2UrPTM2MDplLXQ+MTgwJiYodCs9MzYwKSxvLnB1c2goe2k6bi5wdXNoKHIobikrInJvdGF0ZSgiLG51bGwsaSktMix4OnJwKHQsZSl9KSk6ZSYmbi5wdXNoKHIobikrInJvdGF0ZSgiK2UraSl9KShvLnJvdGF0ZSxhLnJvdGF0ZSxzLGwpLChmdW5jdGlvbiBoKHQsZSxuLG8pe3QhPT1lP28ucHVzaCh7aTpuLnB1c2gocihuKSsic2tld1goIixudWxsLGkpLTIseDpycCh0LGUpfSk6ZSYmbi5wdXNoKHIobikrInNrZXdYKCIrZStpKX0pKG8uc2tld1gsYS5za2V3WCxzLGwpLChmdW5jdGlvbiBkKHQsZSxuLGksbyxhKXtpZih0IT09bnx8ZSE9PWkpe3ZhciBzPW8ucHVzaChyKG8pKyJzY2FsZSgiLG51bGwsIiwiLG51bGwsIikiKTthLnB1c2goe2k6cy00LHg6cnAodCxuKX0se2k6cy0yLHg6cnAoZSxpKX0pfWVsc2UgMT09PW4mJjE9PT1pfHxvLnB1c2gocihvKSsic2NhbGUoIituKyIsIitpKyIpIil9KShvLnNjYWxlWCxvLnNjYWxlWSxhLnNjYWxlWCxhLnNjYWxlWSxzLGwpLG89YT1udWxsLGZ1bmN0aW9uKHQpe2Zvcih2YXIgZSxuPS0xLGk9bC5sZW5ndGg7KytuPGk7KXNbKGU9bFtuXSkuaV09ZS54KHQpO3JldHVybiBzLmpvaW4oIiIpfX19dmFyIHZwPXlwKChmdW5jdGlvbiBicCh0KXtyZXR1cm4ibm9uZSI9PT10P2dwOihocHx8KGhwPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIkRJViIpLGRwPWRvY3VtZW50LmRvY3VtZW50RWxlbWVudCxwcD1kb2N1bWVudC5kZWZhdWx0VmlldyksaHAuc3R5bGUudHJhbnNmb3JtPXQsdD1wcC5nZXRDb21wdXRlZFN0eWxlKGRwLmFwcGVuZENoaWxkKGhwKSxudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCJ0cmFuc2Zvcm0iKSxkcC5yZW1vdmVDaGlsZChocCksX3AoKyh0PXQuc2xpY2UoNywtMSkuc3BsaXQoIiwiKSlbMF0sK3RbMV0sK3RbMl0sK3RbM10sK3RbNF0sK3RbNV0pKX0pLCJweCwgIiwicHgpIiwiZGVnKSIpLHhwPXlwKChmdW5jdGlvbiB3cCh0KXtyZXR1cm4gbnVsbD09dD9ncDooZnB8fChmcD1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwiZyIpKSxmcC5zZXRBdHRyaWJ1dGUoInRyYW5zZm9ybSIsdCksKHQ9ZnAudHJhbnNmb3JtLmJhc2VWYWwuY29uc29saWRhdGUoKSk/X3AoKHQ9dC5tYXRyaXgpLmEsdC5iLHQuYyx0LmQsdC5lLHQuZik6Z3ApfSksIiwgIiwiKSIsIikiKSxTcD1NYXRoLlNRUlQyO2Z1bmN0aW9uIE1wKHQpe3JldHVybigodD1NYXRoLmV4cCh0KSkrMS90KS8yfWZ1bmN0aW9uIEVwKHQsZSl7dmFyIG4saSxyPXRbMF0sbz10WzFdLGE9dFsyXSxzPWVbMl0sbD1lWzBdLXIsYz1lWzFdLW8sdT1sKmwrYypjO2lmKHU8MWUtMTIpaT1NYXRoLmxvZyhzL2EpL1NwLG49ZnVuY3Rpb24odCl7cmV0dXJuW3IrdCpsLG8rdCpjLGEqTWF0aC5leHAoU3AqdCppKV19O2Vsc2V7dmFyIGg9TWF0aC5zcXJ0KHUpLGQ9KHMqcy1hKmErNCp1KS8oMiphKjIqaCkscD0ocypzLWEqYS00KnUpLygyKnMqMipoKSxmPU1hdGgubG9nKE1hdGguc3FydChkKmQrMSktZCksbT1NYXRoLmxvZyhNYXRoLnNxcnQocCpwKzEpLXApO2k9KG0tZikvU3Asbj1mdW5jdGlvbih0KXt2YXIgZT10Kmksbj1NcChmKSxzPWEvKDIqaCkqKG4qKGZ1bmN0aW9uIHUodCl7cmV0dXJuKCh0PU1hdGguZXhwKDIqdCkpLTEpLyh0KzEpfSkoU3AqZStmKS0oZnVuY3Rpb24gZCh0KXtyZXR1cm4oKHQ9TWF0aC5leHAodCkpLTEvdCkvMn0pKGYpKTtyZXR1cm5bcitzKmwsbytzKmMsYSpuL01wKFNwKmUrZildfX1yZXR1cm4gbi5kdXJhdGlvbj0xZTMqaSxufWZ1bmN0aW9uIFRwKHQpe3JldHVybiBmdW5jdGlvbihlLG4pe3ZhciBpPXQoKGU9Y2QoZSkpLmgsKG49Y2QobikpLmgpLHI9JGQoZS5zLG4ucyksbz0kZChlLmwsbi5sKSxhPSRkKGUub3BhY2l0eSxuLm9wYWNpdHkpO3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gZS5oPWkodCksZS5zPXIodCksZS5sPW8odCksZS5vcGFjaXR5PWEodCksZSsiIn19fXZhciBDcD1UcChZZCksQXA9VHAoJGQpO2Z1bmN0aW9uIGtwKHQsZSl7dmFyIG49JGQoKHQ9eGQodCkpLmwsKGU9eGQoZSkpLmwpLGk9JGQodC5hLGUuYSkscj0kZCh0LmIsZS5iKSxvPSRkKHQub3BhY2l0eSxlLm9wYWNpdHkpO3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gdC5sPW4oZSksdC5hPWkoZSksdC5iPXIoZSksdC5vcGFjaXR5PW8oZSksdCsiIn19ZnVuY3Rpb24gTHAodCl7cmV0dXJuIGZ1bmN0aW9uKGUsbil7dmFyIGk9dCgoZT1BZChlKSkuaCwobj1BZChuKSkuaCkscj0kZChlLmMsbi5jKSxvPSRkKGUubCxuLmwpLGE9JGQoZS5vcGFjaXR5LG4ub3BhY2l0eSk7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBlLmg9aSh0KSxlLmM9cih0KSxlLmw9byh0KSxlLm9wYWNpdHk9YSh0KSxlKyIifX19dmFyIFBwPUxwKFlkKSxOcD1McCgkZCk7ZnVuY3Rpb24gSXAodCl7cmV0dXJuKGZ1bmN0aW9uIGUobil7ZnVuY3Rpb24gaShlLGkpe3ZhciByPXQoKGU9RmQoZSkpLmgsKGk9RmQoaSkpLmgpLG89JGQoZS5zLGkucyksYT0kZChlLmwsaS5sKSxzPSRkKGUub3BhY2l0eSxpLm9wYWNpdHkpO3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gZS5oPXIodCksZS5zPW8odCksZS5sPWEoTWF0aC5wb3codCxuKSksZS5vcGFjaXR5PXModCksZSsiIn19cmV0dXJuIG49K24saS5nYW1tYT1lLGl9KSgxKX12YXIgUnA9SXAoWWQpLE9wPUlwKCRkKTt2YXIgenAsRHAsQnA9MCxIcD0wLEZwPTAsVnA9MCxVcD0wLGpwPTAsR3A9Im9iamVjdCI9PXR5cGVvZiBwZXJmb3JtYW5jZSYmcGVyZm9ybWFuY2Uubm93P3BlcmZvcm1hbmNlOkRhdGUsV3A9Im9iamVjdCI9PXR5cGVvZiB3aW5kb3cmJndpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWU/d2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZS5iaW5kKHdpbmRvdyk6ZnVuY3Rpb24odCl7c2V0VGltZW91dCh0LDE3KX07ZnVuY3Rpb24gcXAoKXtyZXR1cm4gVXB8fChXcChZcCksVXA9R3Aubm93KCkranApfWZ1bmN0aW9uIFlwKCl7VXA9MH1mdW5jdGlvbiBYcCgpe3RoaXMuX2NhbGw9dGhpcy5fdGltZT10aGlzLl9uZXh0PW51bGx9ZnVuY3Rpb24gJHAodCxlLG4pe3ZhciBpPW5ldyBYcDtyZXR1cm4gaS5yZXN0YXJ0KHQsZSxuKSxpfWZ1bmN0aW9uIEtwKCl7cXAoKSwrK0JwO2Zvcih2YXIgdCxlPXpwO2U7KSh0PVVwLWUuX3RpbWUpPj0wJiZlLl9jYWxsLmNhbGwobnVsbCx0KSxlPWUuX25leHQ7LS1CcH1mdW5jdGlvbiBacCgpe1VwPShWcD1HcC5ub3coKSkranAsQnA9SHA9MDt0cnl7S3AoKX1maW5hbGx5e0JwPTAsKGZ1bmN0aW9uIHQoKXt2YXIgdCxlLG49enAsaT0xLzA7Zm9yKDtuOyluLl9jYWxsPyhpPm4uX3RpbWUmJihpPW4uX3RpbWUpLHQ9bixuPW4uX25leHQpOihlPW4uX25leHQsbi5fbmV4dD1udWxsLG49dD90Ll9uZXh0PWU6enA9ZSk7RHA9dCxRcChpKX0pKCksVXA9MH19ZnVuY3Rpb24gSnAoKXt2YXIgdD1HcC5ub3coKSxlPXQtVnA7ZT4xZTMmJihqcC09ZSxWcD10KX1mdW5jdGlvbiBRcCh0KXtCcHx8KEhwJiYoSHA9Y2xlYXJUaW1lb3V0KEhwKSksdC1VcD4yND8odDwxLzAmJihIcD1zZXRUaW1lb3V0KFpwLHQtR3Aubm93KCktanApKSxGcCYmKEZwPWNsZWFySW50ZXJ2YWwoRnApKSk6KEZwfHwoVnA9R3Aubm93KCksRnA9c2V0SW50ZXJ2YWwoSnAsMWUzKSksQnA9MSxXcChacCkpKX1mdW5jdGlvbiB0Zih0LGUsbil7dmFyIGk9bmV3IFhwO3JldHVybiBpLnJlc3RhcnQoKGZ1bmN0aW9uKG4pe2kuc3RvcCgpLHQobitlKX0pLGU9bnVsbD09ZT8wOitlLG4pLGl9WHAucHJvdG90eXBlPSRwLnByb3RvdHlwZT17Y29uc3RydWN0b3I6WHAscmVzdGFydDpmdW5jdGlvbih0LGUsbil7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQpdGhyb3cgbmV3IFR5cGVFcnJvcigiY2FsbGJhY2sgaXMgbm90IGEgZnVuY3Rpb24iKTtuPShudWxsPT1uP3FwKCk6K24pKyhudWxsPT1lPzA6K2UpLHRoaXMuX25leHR8fERwPT09dGhpc3x8KERwP0RwLl9uZXh0PXRoaXM6enA9dGhpcyxEcD10aGlzKSx0aGlzLl9jYWxsPXQsdGhpcy5fdGltZT1uLFFwKCl9LHN0b3A6ZnVuY3Rpb24oKXt0aGlzLl9jYWxsJiYodGhpcy5fY2FsbD1udWxsLHRoaXMuX3RpbWU9MS8wLFFwKCkpfX07dmFyIGVmPXdjKCJzdGFydCIsImVuZCIsImNhbmNlbCIsImludGVycnVwdCIpLG5mPVtdO2Z1bmN0aW9uIHJmKHQsZSxuLGkscixvKXt2YXIgYT10Ll9fdHJhbnNpdGlvbjtpZihhKXtpZihuIGluIGEpcmV0dXJufWVsc2UgdC5fX3RyYW5zaXRpb249e307IShmdW5jdGlvbiBzKHQsZSxuKXt2YXIgaSxyPXQuX190cmFuc2l0aW9uO2Z1bmN0aW9uIG8odCl7bi5zdGF0ZT0xLG4udGltZXIucmVzdGFydChhLG4uZGVsYXksbi50aW1lKSxuLmRlbGF5PD10JiZhKHQtbi5kZWxheSl9ZnVuY3Rpb24gYShvKXt2YXIgYyx1LGgsZDtpZigxIT09bi5zdGF0ZSlyZXR1cm4gbCgpO2ZvcihjIGluIHIpaWYoKGQ9cltjXSkubmFtZT09PW4ubmFtZSl7aWYoMz09PWQuc3RhdGUpcmV0dXJuIHRmKGEpOzQ9PT1kLnN0YXRlPyhkLnN0YXRlPTYsZC50aW1lci5zdG9wKCksZC5vbi5jYWxsKCJpbnRlcnJ1cHQiLHQsdC5fX2RhdGFfXyxkLmluZGV4LGQuZ3JvdXApLGRlbGV0ZSByW2NdKTorYzxlJiYoZC5zdGF0ZT02LGQudGltZXIuc3RvcCgpLGQub24uY2FsbCgiY2FuY2VsIix0LHQuX19kYXRhX18sZC5pbmRleCxkLmdyb3VwKSxkZWxldGUgcltjXSl9aWYodGYoKGZ1bmN0aW9uKCl7Mz09PW4uc3RhdGUmJihuLnN0YXRlPTQsbi50aW1lci5yZXN0YXJ0KHMsbi5kZWxheSxuLnRpbWUpLHMobykpfSkpLG4uc3RhdGU9MixuLm9uLmNhbGwoInN0YXJ0Iix0LHQuX19kYXRhX18sbi5pbmRleCxuLmdyb3VwKSwyPT09bi5zdGF0ZSl7Zm9yKG4uc3RhdGU9MyxpPW5ldyBBcnJheShoPW4udHdlZW4ubGVuZ3RoKSxjPTAsdT0tMTtjPGg7KytjKShkPW4udHdlZW5bY10udmFsdWUuY2FsbCh0LHQuX19kYXRhX18sbi5pbmRleCxuLmdyb3VwKSkmJihpWysrdV09ZCk7aS5sZW5ndGg9dSsxfX1mdW5jdGlvbiBzKGUpe2Zvcih2YXIgcj1lPG4uZHVyYXRpb24/bi5lYXNlLmNhbGwobnVsbCxlL24uZHVyYXRpb24pOihuLnRpbWVyLnJlc3RhcnQobCksbi5zdGF0ZT01LDEpLG89LTEsYT1pLmxlbmd0aDsrK288YTspaVtvXS5jYWxsKHQscik7NT09PW4uc3RhdGUmJihuLm9uLmNhbGwoImVuZCIsdCx0Ll9fZGF0YV9fLG4uaW5kZXgsbi5ncm91cCksbCgpKX1mdW5jdGlvbiBsKCl7Zm9yKHZhciBpIGluIG4uc3RhdGU9NixuLnRpbWVyLnN0b3AoKSxkZWxldGUgcltlXSxyKXJldHVybjtkZWxldGUgdC5fX3RyYW5zaXRpb259cltlXT1uLG4udGltZXI9JHAobywwLG4udGltZSl9KSh0LG4se25hbWU6ZSxpbmRleDppLGdyb3VwOnIsb246ZWYsdHdlZW46bmYsdGltZTpvLnRpbWUsZGVsYXk6by5kZWxheSxkdXJhdGlvbjpvLmR1cmF0aW9uLGVhc2U6by5lYXNlLHRpbWVyOm51bGwsc3RhdGU6MH0pfWZ1bmN0aW9uIG9mKHQsZSl7dmFyIG49c2YodCxlKTtpZihuLnN0YXRlPjApdGhyb3cgbmV3IEVycm9yKCJ0b28gbGF0ZTsgYWxyZWFkeSBzY2hlZHVsZWQiKTtyZXR1cm4gbn1mdW5jdGlvbiBhZih0LGUpe3ZhciBuPXNmKHQsZSk7aWYobi5zdGF0ZT4zKXRocm93IG5ldyBFcnJvcigidG9vIGxhdGU7IGFscmVhZHkgcnVubmluZyIpO3JldHVybiBufWZ1bmN0aW9uIHNmKHQsZSl7dmFyIG49dC5fX3RyYW5zaXRpb247aWYoIW58fCEobj1uW2VdKSl0aHJvdyBuZXcgRXJyb3IoInRyYW5zaXRpb24gbm90IGZvdW5kIik7cmV0dXJuIG59ZnVuY3Rpb24gbGYodCxlKXt2YXIgbixpLHIsbz10Ll9fdHJhbnNpdGlvbixhPSEwO2lmKG8pe2ZvcihyIGluIGU9bnVsbD09ZT9udWxsOmUrIiIsbykobj1vW3JdKS5uYW1lPT09ZT8oaT1uLnN0YXRlPjImJm4uc3RhdGU8NSxuLnN0YXRlPTYsbi50aW1lci5zdG9wKCksbi5vbi5jYWxsKGk/ImludGVycnVwdCI6ImNhbmNlbCIsdCx0Ll9fZGF0YV9fLG4uaW5kZXgsbi5ncm91cCksZGVsZXRlIG9bcl0pOmE9ITE7YSYmZGVsZXRlIHQuX190cmFuc2l0aW9ufX1mdW5jdGlvbiBjZih0LGUpe3ZhciBuLGk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHI9YWYodGhpcyx0KSxvPXIudHdlZW47aWYobyE9PW4pZm9yKHZhciBhPTAscz0oaT1uPW8pLmxlbmd0aDthPHM7KythKWlmKGlbYV0ubmFtZT09PWUpeyhpPWkuc2xpY2UoKSkuc3BsaWNlKGEsMSk7YnJlYWt9ci50d2Vlbj1pfX1mdW5jdGlvbiB1Zih0LGUsbil7dmFyIGkscjtpZigiZnVuY3Rpb24iIT10eXBlb2Ygbil0aHJvdyBuZXcgRXJyb3I7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG89YWYodGhpcyx0KSxhPW8udHdlZW47aWYoYSE9PWkpe3I9KGk9YSkuc2xpY2UoKTtmb3IodmFyIHM9e25hbWU6ZSx2YWx1ZTpufSxsPTAsYz1yLmxlbmd0aDtsPGM7KytsKWlmKHJbbF0ubmFtZT09PWUpe3JbbF09czticmVha31sPT09YyYmci5wdXNoKHMpfW8udHdlZW49cn19ZnVuY3Rpb24gaGYodCxlLG4pe3ZhciBpPXQuX2lkO3JldHVybiB0LmVhY2goKGZ1bmN0aW9uKCl7dmFyIHQ9YWYodGhpcyxpKTsodC52YWx1ZXx8KHQudmFsdWU9e30pKVtlXT1uLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0pKSxmdW5jdGlvbih0KXtyZXR1cm4gc2YodCxpKS52YWx1ZVtlXX19ZnVuY3Rpb24gZGYodCxlKXt2YXIgbjtyZXR1cm4oIm51bWJlciI9PXR5cGVvZiBlP3JwOmUgaW5zdGFuY2VvZiBKaD9LZDoobj1KaChlKSk/KGU9bixLZCk6bHApKHQsZSl9ZnVuY3Rpb24gcGYodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5yZW1vdmVBdHRyaWJ1dGUodCl9fWZ1bmN0aW9uIGZmKHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMucmVtb3ZlQXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsKX19ZnVuY3Rpb24gbWYodCxlLG4pe3ZhciBpLHIsbz1uKyIiO3JldHVybiBmdW5jdGlvbigpe3ZhciBhPXRoaXMuZ2V0QXR0cmlidXRlKHQpO3JldHVybiBhPT09bz9udWxsOmE9PT1pP3I6cj1lKGk9YSxuKX19ZnVuY3Rpb24gZ2YodCxlLG4pe3ZhciBpLHIsbz1uKyIiO3JldHVybiBmdW5jdGlvbigpe3ZhciBhPXRoaXMuZ2V0QXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsKTtyZXR1cm4gYT09PW8/bnVsbDphPT09aT9yOnI9ZShpPWEsbil9fWZ1bmN0aW9uIF9mKHQsZSxuKXt2YXIgaSxyLG87cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGEscyxsPW4odGhpcyk7aWYobnVsbCE9bClyZXR1cm4oYT10aGlzLmdldEF0dHJpYnV0ZSh0KSk9PT0ocz1sKyIiKT9udWxsOmE9PT1pJiZzPT09cj9vOihyPXMsbz1lKGk9YSxsKSk7dGhpcy5yZW1vdmVBdHRyaWJ1dGUodCl9fWZ1bmN0aW9uIHlmKHQsZSxuKXt2YXIgaSxyLG87cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGEscyxsPW4odGhpcyk7aWYobnVsbCE9bClyZXR1cm4oYT10aGlzLmdldEF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCkpPT09KHM9bCsiIik/bnVsbDphPT09aSYmcz09PXI/bzoocj1zLG89ZShpPWEsbCkpO3RoaXMucmVtb3ZlQXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsKX19ZnVuY3Rpb24gdmYodCxlKXtyZXR1cm4gZnVuY3Rpb24obil7dGhpcy5zZXRBdHRyaWJ1dGUodCxlLmNhbGwodGhpcyxuKSl9fWZ1bmN0aW9uIGJmKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKG4pe3RoaXMuc2V0QXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsLGUuY2FsbCh0aGlzLG4pKX19ZnVuY3Rpb24geGYodCxlKXt2YXIgbixpO2Z1bmN0aW9uIHIoKXt2YXIgcj1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gciE9PWkmJihuPShpPXIpJiZiZih0LHIpKSxufXJldHVybiByLl92YWx1ZT1lLHJ9ZnVuY3Rpb24gd2YodCxlKXt2YXIgbixpO2Z1bmN0aW9uIHIoKXt2YXIgcj1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gciE9PWkmJihuPShpPXIpJiZ2Zih0LHIpKSxufXJldHVybiByLl92YWx1ZT1lLHJ9ZnVuY3Rpb24gU2YodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXtvZih0aGlzLHQpLmRlbGF5PStlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19ZnVuY3Rpb24gTWYodCxlKXtyZXR1cm4gZT0rZSxmdW5jdGlvbigpe29mKHRoaXMsdCkuZGVsYXk9ZX19ZnVuY3Rpb24gRWYodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXthZih0aGlzLHQpLmR1cmF0aW9uPStlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19ZnVuY3Rpb24gVGYodCxlKXtyZXR1cm4gZT0rZSxmdW5jdGlvbigpe2FmKHRoaXMsdCkuZHVyYXRpb249ZX19ZnVuY3Rpb24gQ2YodCxlKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgZSl0aHJvdyBuZXcgRXJyb3I7cmV0dXJuIGZ1bmN0aW9uKCl7YWYodGhpcyx0KS5lYXNlPWV9fWZ1bmN0aW9uIEFmKHQsZSxuKXt2YXIgaSxyLG89KGZ1bmN0aW9uIGEodCl7cmV0dXJuKHQrIiIpLnRyaW0oKS5zcGxpdCgvXnxccysvKS5ldmVyeSgoZnVuY3Rpb24odCl7dmFyIGU9dC5pbmRleE9mKCIuIik7cmV0dXJuIGU+PTAmJih0PXQuc2xpY2UoMCxlKSksIXR8fCJzdGFydCI9PT10fSkpfSkoZSk/b2Y6YWY7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGE9byh0aGlzLHQpLHM9YS5vbjtzIT09aSYmKHI9KGk9cykuY29weSgpKS5vbihlLG4pLGEub249cn19dmFyIGtmPXp1LnByb3RvdHlwZS5jb25zdHJ1Y3RvcjtmdW5jdGlvbiBMZih0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KHQpfX1mdW5jdGlvbiBQZih0LGUsbil7cmV0dXJuIGZ1bmN0aW9uKGkpe3RoaXMuc3R5bGUuc2V0UHJvcGVydHkodCxlLmNhbGwodGhpcyxpKSxuKX19ZnVuY3Rpb24gTmYodCxlLG4pe3ZhciBpLHI7ZnVuY3Rpb24gbygpe3ZhciBvPWUuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBvIT09ciYmKGk9KHI9bykmJlBmKHQsbyxuKSksaX1yZXR1cm4gby5fdmFsdWU9ZSxvfWZ1bmN0aW9uIElmKHQpe3JldHVybiBmdW5jdGlvbihlKXt0aGlzLnRleHRDb250ZW50PXQuY2FsbCh0aGlzLGUpfX1mdW5jdGlvbiBSZih0KXt2YXIgZSxuO2Z1bmN0aW9uIGkoKXt2YXIgaT10LmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gaSE9PW4mJihlPShuPWkpJiZJZihpKSksZX1yZXR1cm4gaS5fdmFsdWU9dCxpfXZhciBPZj0wO2Z1bmN0aW9uIHpmKHQsZSxuLGkpe3RoaXMuX2dyb3Vwcz10LHRoaXMuX3BhcmVudHM9ZSx0aGlzLl9uYW1lPW4sdGhpcy5faWQ9aX1mdW5jdGlvbiBEZih0KXtyZXR1cm4genUoKS50cmFuc2l0aW9uKHQpfWZ1bmN0aW9uIEJmKCl7cmV0dXJuKytPZn12YXIgSGY9enUucHJvdG90eXBlO2Z1bmN0aW9uIEZmKHQpe3JldHVybit0fWZ1bmN0aW9uIFZmKHQpe3JldHVybiB0KnR9ZnVuY3Rpb24gVWYodCl7cmV0dXJuIHQqKDItdCl9ZnVuY3Rpb24gamYodCl7cmV0dXJuKCh0Kj0yKTw9MT90KnQ6LS10KigyLXQpKzEpLzJ9ZnVuY3Rpb24gR2YodCl7cmV0dXJuIHQqdCp0fWZ1bmN0aW9uIFdmKHQpe3JldHVybi0tdCp0KnQrMX1mdW5jdGlvbiBxZih0KXtyZXR1cm4oKHQqPTIpPD0xP3QqdCp0Oih0LT0yKSp0KnQrMikvMn16Zi5wcm90b3R5cGU9RGYucHJvdG90eXBlPXtjb25zdHJ1Y3Rvcjp6ZixzZWxlY3Q6ZnVuY3Rpb24gWWYodCl7dmFyIGU9dGhpcy5fbmFtZSxuPXRoaXMuX2lkOyJmdW5jdGlvbiIhPXR5cGVvZiB0JiYodD1SYyh0KSk7Zm9yKHZhciBpPXRoaXMuX2dyb3VwcyxyPWkubGVuZ3RoLG89bmV3IEFycmF5KHIpLGE9MDthPHI7KythKWZvcih2YXIgcyxsLGM9aVthXSx1PWMubGVuZ3RoLGg9b1thXT1uZXcgQXJyYXkodSksZD0wO2Q8dTsrK2QpKHM9Y1tkXSkmJihsPXQuY2FsbChzLHMuX19kYXRhX18sZCxjKSkmJigiX19kYXRhX18iaW4gcyYmKGwuX19kYXRhX189cy5fX2RhdGFfXyksaFtkXT1sLHJmKGhbZF0sZSxuLGQsaCxzZihzLG4pKSk7cmV0dXJuIG5ldyB6ZihvLHRoaXMuX3BhcmVudHMsZSxuKX0sc2VsZWN0QWxsOmZ1bmN0aW9uIFhmKHQpe3ZhciBlPXRoaXMuX25hbWUsbj10aGlzLl9pZDsiZnVuY3Rpb24iIT10eXBlb2YgdCYmKHQ9emModCkpO2Zvcih2YXIgaT10aGlzLl9ncm91cHMscj1pLmxlbmd0aCxvPVtdLGE9W10scz0wO3M8cjsrK3MpZm9yKHZhciBsLGM9aVtzXSx1PWMubGVuZ3RoLGg9MDtoPHU7KytoKWlmKGw9Y1toXSl7Zm9yKHZhciBkLHA9dC5jYWxsKGwsbC5fX2RhdGFfXyxoLGMpLGY9c2YobCxuKSxtPTAsZz1wLmxlbmd0aDttPGc7KyttKShkPXBbbV0pJiZyZihkLGUsbixtLHAsZik7by5wdXNoKHApLGEucHVzaChsKX1yZXR1cm4gbmV3IHpmKG8sYSxlLG4pfSxmaWx0ZXI6ZnVuY3Rpb24gJGYodCl7ImZ1bmN0aW9uIiE9dHlwZW9mIHQmJih0PURjKHQpKTtmb3IodmFyIGU9dGhpcy5fZ3JvdXBzLG49ZS5sZW5ndGgsaT1uZXcgQXJyYXkobikscj0wO3I8bjsrK3IpZm9yKHZhciBvLGE9ZVtyXSxzPWEubGVuZ3RoLGw9aVtyXT1bXSxjPTA7YzxzOysrYykobz1hW2NdKSYmdC5jYWxsKG8sby5fX2RhdGFfXyxjLGEpJiZsLnB1c2gobyk7cmV0dXJuIG5ldyB6ZihpLHRoaXMuX3BhcmVudHMsdGhpcy5fbmFtZSx0aGlzLl9pZCl9LG1lcmdlOmZ1bmN0aW9uIEtmKHQpe2lmKHQuX2lkIT09dGhpcy5faWQpdGhyb3cgbmV3IEVycm9yO2Zvcih2YXIgZT10aGlzLl9ncm91cHMsbj10Ll9ncm91cHMsaT1lLmxlbmd0aCxyPU1hdGgubWluKGksbi5sZW5ndGgpLG89bmV3IEFycmF5KGkpLGE9MDthPHI7KythKWZvcih2YXIgcyxsPWVbYV0sYz1uW2FdLHU9bC5sZW5ndGgsaD1vW2FdPW5ldyBBcnJheSh1KSxkPTA7ZDx1OysrZCkocz1sW2RdfHxjW2RdKSYmKGhbZF09cyk7Zm9yKDthPGk7KythKW9bYV09ZVthXTtyZXR1cm4gbmV3IHpmKG8sdGhpcy5fcGFyZW50cyx0aGlzLl9uYW1lLHRoaXMuX2lkKX0sc2VsZWN0aW9uOmZ1bmN0aW9uIFpmKCl7cmV0dXJuIG5ldyBrZih0aGlzLl9ncm91cHMsdGhpcy5fcGFyZW50cyl9LHRyYW5zaXRpb246ZnVuY3Rpb24gSmYoKXtmb3IodmFyIHQ9dGhpcy5fbmFtZSxlPXRoaXMuX2lkLG49QmYoKSxpPXRoaXMuX2dyb3VwcyxyPWkubGVuZ3RoLG89MDtvPHI7KytvKWZvcih2YXIgYSxzPWlbb10sbD1zLmxlbmd0aCxjPTA7YzxsOysrYylpZihhPXNbY10pe3ZhciB1PXNmKGEsZSk7cmYoYSx0LG4sYyxzLHt0aW1lOnUudGltZSt1LmRlbGF5K3UuZHVyYXRpb24sZGVsYXk6MCxkdXJhdGlvbjp1LmR1cmF0aW9uLGVhc2U6dS5lYXNlfSl9cmV0dXJuIG5ldyB6ZihpLHRoaXMuX3BhcmVudHMsdCxuKX0sY2FsbDpIZi5jYWxsLG5vZGVzOkhmLm5vZGVzLG5vZGU6SGYubm9kZSxzaXplOkhmLnNpemUsZW1wdHk6SGYuZW1wdHksZWFjaDpIZi5lYWNoLG9uOmZ1bmN0aW9uIFFmKHQsZSl7dmFyIG49dGhpcy5faWQ7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg8Mj9zZih0aGlzLm5vZGUoKSxuKS5vbi5vbih0KTp0aGlzLmVhY2goQWYobix0LGUpKX0sYXR0cjpmdW5jdGlvbiB0bSh0LGUpe3ZhciBuPWtjKHQpLGk9InRyYW5zZm9ybSI9PT1uP3hwOmRmO3JldHVybiB0aGlzLmF0dHJUd2Vlbih0LCJmdW5jdGlvbiI9PXR5cGVvZiBlPyhuLmxvY2FsP3lmOl9mKShuLGksaGYodGhpcywiYXR0ci4iK3QsZSkpOm51bGw9PWU/KG4ubG9jYWw/ZmY6cGYpKG4pOihuLmxvY2FsP2dmOm1mKShuLGksZSkpfSxhdHRyVHdlZW46ZnVuY3Rpb24gZW0odCxlKXt2YXIgbj0iYXR0ci4iK3Q7aWYoYXJndW1lbnRzLmxlbmd0aDwyKXJldHVybihuPXRoaXMudHdlZW4obikpJiZuLl92YWx1ZTtpZihudWxsPT1lKXJldHVybiB0aGlzLnR3ZWVuKG4sbnVsbCk7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3IEVycm9yO3ZhciBpPWtjKHQpO3JldHVybiB0aGlzLnR3ZWVuKG4sKGkubG9jYWw/eGY6d2YpKGksZSkpfSxzdHlsZTpmdW5jdGlvbiBubSh0LGUsbil7dmFyIGk9InRyYW5zZm9ybSI9PSh0Kz0iIik/dnA6ZGY7cmV0dXJuIG51bGw9PWU/dGhpcy5zdHlsZVR3ZWVuKHQsKGZ1bmN0aW9uIHIodCxlKXt2YXIgbixpLHI7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG89UWModGhpcyx0KSxhPSh0aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KHQpLFFjKHRoaXMsdCkpO3JldHVybiBvPT09YT9udWxsOm89PT1uJiZhPT09aT9yOnI9ZShuPW8saT1hKX19KSh0LGkpKS5vbigiZW5kLnN0eWxlLiIrdCxMZih0KSk6ImZ1bmN0aW9uIj09dHlwZW9mIGU/dGhpcy5zdHlsZVR3ZWVuKHQsKGZ1bmN0aW9uIGEodCxlLG4pe3ZhciBpLHIsbztyZXR1cm4gZnVuY3Rpb24oKXt2YXIgYT1RYyh0aGlzLHQpLHM9bih0aGlzKSxsPXMrIiI7cmV0dXJuIG51bGw9PXMmJih0aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KHQpLGw9cz1RYyh0aGlzLHQpKSxhPT09bD9udWxsOmE9PT1pJiZsPT09cj9vOihyPWwsbz1lKGk9YSxzKSl9fSkodCxpLGhmKHRoaXMsInN0eWxlLiIrdCxlKSkpLmVhY2goKGZ1bmN0aW9uIG8odCxlKXt2YXIgbixpLHIsbyxhPSJzdHlsZS4iK2Uscz0iZW5kLiIrYTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbD1hZih0aGlzLHQpLGM9bC5vbix1PW51bGw9PWwudmFsdWVbYV0/b3x8KG89TGYoZSkpOnZvaWQgMDtjPT09biYmcj09PXV8fChpPShuPWMpLmNvcHkoKSkub24ocyxyPXUpLGwub249aX19KSh0aGlzLl9pZCx0KSk6dGhpcy5zdHlsZVR3ZWVuKHQsKGZ1bmN0aW9uIHModCxlLG4pe3ZhciBpLHIsbz1uKyIiO3JldHVybiBmdW5jdGlvbigpe3ZhciBhPVFjKHRoaXMsdCk7cmV0dXJuIGE9PT1vP251bGw6YT09PWk/cjpyPWUoaT1hLG4pfX0pKHQsaSxlKSxuKS5vbigiZW5kLnN0eWxlLiIrdCxudWxsKX0sc3R5bGVUd2VlbjpmdW5jdGlvbiBpbSh0LGUsbil7dmFyIGk9InN0eWxlLiIrKHQrPSIiKTtpZihhcmd1bWVudHMubGVuZ3RoPDIpcmV0dXJuKGk9dGhpcy50d2VlbihpKSkmJmkuX3ZhbHVlO2lmKG51bGw9PWUpcmV0dXJuIHRoaXMudHdlZW4oaSxudWxsKTtpZigiZnVuY3Rpb24iIT10eXBlb2YgZSl0aHJvdyBuZXcgRXJyb3I7cmV0dXJuIHRoaXMudHdlZW4oaSxOZih0LGUsbnVsbD09bj8iIjpuKSl9LHRleHQ6ZnVuY3Rpb24gcm0odCl7cmV0dXJuIHRoaXMudHdlZW4oInRleHQiLCJmdW5jdGlvbiI9PXR5cGVvZiB0PyhmdW5jdGlvbiBlKHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciBlPXQodGhpcyk7dGhpcy50ZXh0Q29udGVudD1udWxsPT1lPyIiOmV9fSkoaGYodGhpcywidGV4dCIsdCkpOihmdW5jdGlvbiBuKHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMudGV4dENvbnRlbnQ9dH19KShudWxsPT10PyIiOnQrIiIpKX0sdGV4dFR3ZWVuOmZ1bmN0aW9uIG9tKHQpe3ZhciBlPSJ0ZXh0IjtpZihhcmd1bWVudHMubGVuZ3RoPDEpcmV0dXJuKGU9dGhpcy50d2VlbihlKSkmJmUuX3ZhbHVlO2lmKG51bGw9PXQpcmV0dXJuIHRoaXMudHdlZW4oZSxudWxsKTtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCl0aHJvdyBuZXcgRXJyb3I7cmV0dXJuIHRoaXMudHdlZW4oZSxSZih0KSl9LHJlbW92ZTpmdW5jdGlvbiBhbSgpe3JldHVybiB0aGlzLm9uKCJlbmQucmVtb3ZlIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgdD10aGlzLnBhcmVudE5vZGU7Zm9yKHZhciBuIGluIHRoaXMuX190cmFuc2l0aW9uKWlmKCtuIT09ZSlyZXR1cm47dCYmdC5yZW1vdmVDaGlsZCh0aGlzKX19KSh0aGlzLl9pZCkpfSx0d2VlbjpmdW5jdGlvbiBzbSh0LGUpe3ZhciBuPXRoaXMuX2lkO2lmKHQrPSIiLGFyZ3VtZW50cy5sZW5ndGg8Mil7Zm9yKHZhciBpLHI9c2YodGhpcy5ub2RlKCksbikudHdlZW4sbz0wLGE9ci5sZW5ndGg7bzxhOysrbylpZigoaT1yW29dKS5uYW1lPT09dClyZXR1cm4gaS52YWx1ZTtyZXR1cm4gbnVsbH1yZXR1cm4gdGhpcy5lYWNoKChudWxsPT1lP2NmOnVmKShuLHQsZSkpfSxkZWxheTpmdW5jdGlvbiBsbSh0KXt2YXIgZT10aGlzLl9pZDtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90aGlzLmVhY2goKCJmdW5jdGlvbiI9PXR5cGVvZiB0P1NmOk1mKShlLHQpKTpzZih0aGlzLm5vZGUoKSxlKS5kZWxheX0sZHVyYXRpb246ZnVuY3Rpb24gY20odCl7dmFyIGU9dGhpcy5faWQ7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5lYWNoKCgiZnVuY3Rpb24iPT10eXBlb2YgdD9FZjpUZikoZSx0KSk6c2YodGhpcy5ub2RlKCksZSkuZHVyYXRpb259LGVhc2U6ZnVuY3Rpb24gdW0odCl7dmFyIGU9dGhpcy5faWQ7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5lYWNoKENmKGUsdCkpOnNmKHRoaXMubm9kZSgpLGUpLmVhc2V9LGVuZDpmdW5jdGlvbiBobSgpe3ZhciB0LGUsbj10aGlzLGk9bi5faWQscj1uLnNpemUoKTtyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKG8sYSl7dmFyIHM9e3ZhbHVlOmF9LGw9e3ZhbHVlOmZ1bmN0aW9uKCl7MD09LS1yJiZvKCl9fTtuLmVhY2goKGZ1bmN0aW9uKCl7dmFyIG49YWYodGhpcyxpKSxyPW4ub247ciE9PXQmJigoZT0odD1yKS5jb3B5KCkpLl8uY2FuY2VsLnB1c2gocyksZS5fLmludGVycnVwdC5wdXNoKHMpLGUuXy5lbmQucHVzaChsKSksbi5vbj1lfSkpfSkpfX07dmFyIGRtPShmdW5jdGlvbiB0KGUpe2Z1bmN0aW9uIG4odCl7cmV0dXJuIE1hdGgucG93KHQsZSl9cmV0dXJuIGU9K2Usbi5leHBvbmVudD10LG59KSgzKSxwbT0oZnVuY3Rpb24gdChlKXtmdW5jdGlvbiBuKHQpe3JldHVybiAxLU1hdGgucG93KDEtdCxlKX1yZXR1cm4gZT0rZSxuLmV4cG9uZW50PXQsbn0pKDMpLGZtPShmdW5jdGlvbiB0KGUpe2Z1bmN0aW9uIG4odCl7cmV0dXJuKCh0Kj0yKTw9MT9NYXRoLnBvdyh0LGUpOjItTWF0aC5wb3coMi10LGUpKS8yfXJldHVybiBlPStlLG4uZXhwb25lbnQ9dCxufSkoMyksbW09TWF0aC5QSSxnbT1tbS8yO2Z1bmN0aW9uIF9tKHQpe3JldHVybiAxPT0rdD8xOjEtTWF0aC5jb3ModCpnbSl9ZnVuY3Rpb24geW0odCl7cmV0dXJuIE1hdGguc2luKHQqZ20pfWZ1bmN0aW9uIHZtKHQpe3JldHVybigxLU1hdGguY29zKG1tKnQpKS8yfWZ1bmN0aW9uIGJtKHQpe3JldHVybiAxLjAwMDk3NzUxNzEwNjU0OTQqKE1hdGgucG93KDIsLTEwKnQpLS4wMDA5NzY1NjI1KX1mdW5jdGlvbiB4bSh0KXtyZXR1cm4gYm0oMS0rdCl9ZnVuY3Rpb24gd20odCl7cmV0dXJuIDEtYm0odCl9ZnVuY3Rpb24gU20odCl7cmV0dXJuKCh0Kj0yKTw9MT9ibSgxLXQpOjItYm0odC0xKSkvMn1mdW5jdGlvbiBNbSh0KXtyZXR1cm4gMS1NYXRoLnNxcnQoMS10KnQpfWZ1bmN0aW9uIEVtKHQpe3JldHVybiBNYXRoLnNxcnQoMS0gLS10KnQpfWZ1bmN0aW9uIFRtKHQpe3JldHVybigodCo9Mik8PTE/MS1NYXRoLnNxcnQoMS10KnQpOk1hdGguc3FydCgxLSh0LT0yKSp0KSsxKS8yfXZhciBDbT00LzExLEFtPTcuNTYyNTtmdW5jdGlvbiBrbSh0KXtyZXR1cm4gMS1MbSgxLXQpfWZ1bmN0aW9uIExtKHQpe3JldHVybih0PSt0KTxDbT9BbSp0KnQ6dDwuNzI3MjcyNzI3MjcyNzI3Mz9BbSoodC09LjU0NTQ1NDU0NTQ1NDU0NTQpKnQrLjc1OnQ8LjkwOTA5MDkwOTA5MDkwOTE/QW0qKHQtPS44MTgxODE4MTgxODE4MTgyKSp0Ky45Mzc1OkFtKih0LT0uOTU0NTQ1NDU0NTQ1NDU0NikqdCsuOTg0Mzc1fWZ1bmN0aW9uIFBtKHQpe3JldHVybigodCo9Mik8PTE/MS1MbSgxLXQpOkxtKHQtMSkrMSkvMn12YXIgTm09MS43MDE1OCxJbT0oZnVuY3Rpb24gdChlKXtmdW5jdGlvbiBuKHQpe3JldHVybih0PSt0KSp0KihlKih0LTEpK3QpfXJldHVybiBlPStlLG4ub3ZlcnNob290PXQsbn0pKE5tKSxSbT0oZnVuY3Rpb24gdChlKXtmdW5jdGlvbiBuKHQpe3JldHVybi0tdCp0KigodCsxKSplK3QpKzF9cmV0dXJuIGU9K2Usbi5vdmVyc2hvb3Q9dCxufSkoTm0pLE9tPShmdW5jdGlvbiB0KGUpe2Z1bmN0aW9uIG4odCl7cmV0dXJuKCh0Kj0yKTwxP3QqdCooKGUrMSkqdC1lKToodC09MikqdCooKGUrMSkqdCtlKSsyKS8yfXJldHVybiBlPStlLG4ub3ZlcnNob290PXQsbn0pKE5tKSx6bT0yKk1hdGguUEksRG09KGZ1bmN0aW9uIHQoZSxuKXt2YXIgaT1NYXRoLmFzaW4oMS8oZT1NYXRoLm1heCgxLGUpKSkqKG4vPXptKTtmdW5jdGlvbiByKHQpe3JldHVybiBlKmJtKC0gLS10KSpNYXRoLnNpbigoaS10KS9uKX1yZXR1cm4gci5hbXBsaXR1ZGU9ZnVuY3Rpb24oZSl7cmV0dXJuIHQoZSxuKnptKX0sci5wZXJpb2Q9ZnVuY3Rpb24obil7cmV0dXJuIHQoZSxuKX0scn0pKDEsLjMpLEJtPShmdW5jdGlvbiB0KGUsbil7dmFyIGk9TWF0aC5hc2luKDEvKGU9TWF0aC5tYXgoMSxlKSkpKihuLz16bSk7ZnVuY3Rpb24gcih0KXtyZXR1cm4gMS1lKmJtKHQ9K3QpKk1hdGguc2luKCh0K2kpL24pfXJldHVybiByLmFtcGxpdHVkZT1mdW5jdGlvbihlKXtyZXR1cm4gdChlLG4qem0pfSxyLnBlcmlvZD1mdW5jdGlvbihuKXtyZXR1cm4gdChlLG4pfSxyfSkoMSwuMyksSG09KGZ1bmN0aW9uIHQoZSxuKXt2YXIgaT1NYXRoLmFzaW4oMS8oZT1NYXRoLm1heCgxLGUpKSkqKG4vPXptKTtmdW5jdGlvbiByKHQpe3JldHVybigodD0yKnQtMSk8MD9lKmJtKC10KSpNYXRoLnNpbigoaS10KS9uKToyLWUqYm0odCkqTWF0aC5zaW4oKGkrdCkvbikpLzJ9cmV0dXJuIHIuYW1wbGl0dWRlPWZ1bmN0aW9uKGUpe3JldHVybiB0KGUsbip6bSl9LHIucGVyaW9kPWZ1bmN0aW9uKG4pe3JldHVybiB0KGUsbil9LHJ9KSgxLC4zKSxGbT1PYmplY3QuZnJlZXplKHtfX3Byb3RvX186bnVsbCxlYXNlTGluZWFyOkZmLGVhc2VRdWFkOmpmLGVhc2VRdWFkSW46VmYsZWFzZVF1YWRPdXQ6VWYsZWFzZVF1YWRJbk91dDpqZixlYXNlQ3ViaWM6cWYsZWFzZUN1YmljSW46R2YsZWFzZUN1YmljT3V0OldmLGVhc2VDdWJpY0luT3V0OnFmLGVhc2VQb2x5OmZtLGVhc2VQb2x5SW46ZG0sZWFzZVBvbHlPdXQ6cG0sZWFzZVBvbHlJbk91dDpmbSxlYXNlU2luOnZtLGVhc2VTaW5JbjpfbSxlYXNlU2luT3V0OnltLGVhc2VTaW5Jbk91dDp2bSxlYXNlRXhwOlNtLGVhc2VFeHBJbjp4bSxlYXNlRXhwT3V0OndtLGVhc2VFeHBJbk91dDpTbSxlYXNlQ2lyY2xlOlRtLGVhc2VDaXJjbGVJbjpNbSxlYXNlQ2lyY2xlT3V0OkVtLGVhc2VDaXJjbGVJbk91dDpUbSxlYXNlQm91bmNlOkxtLGVhc2VCb3VuY2VJbjprbSxlYXNlQm91bmNlT3V0OkxtLGVhc2VCb3VuY2VJbk91dDpQbSxlYXNlQmFjazpPbSxlYXNlQmFja0luOkltLGVhc2VCYWNrT3V0OlJtLGVhc2VCYWNrSW5PdXQ6T20sZWFzZUVsYXN0aWM6Qm0sZWFzZUVsYXN0aWNJbjpEbSxlYXNlRWxhc3RpY091dDpCbSxlYXNlRWxhc3RpY0luT3V0OkhtfSksVm09e3RpbWU6bnVsbCxkZWxheTowLGR1cmF0aW9uOjI1MCxlYXNlOnFmfTtmdW5jdGlvbiBVbSh0LGUpe2Zvcih2YXIgbjshKG49dC5fX3RyYW5zaXRpb24pfHwhKG49bltlXSk7KWlmKCEodD10LnBhcmVudE5vZGUpKXJldHVybiBWbS50aW1lPXFwKCksVm07cmV0dXJuIG59enUucHJvdG90eXBlLmludGVycnVwdD1mdW5jdGlvbiBqbSh0KXtyZXR1cm4gdGhpcy5lYWNoKChmdW5jdGlvbigpe2xmKHRoaXMsdCl9KSl9LHp1LnByb3RvdHlwZS50cmFuc2l0aW9uPWZ1bmN0aW9uIEdtKHQpe3ZhciBlLG47dCBpbnN0YW5jZW9mIHpmPyhlPXQuX2lkLHQ9dC5fbmFtZSk6KGU9QmYoKSwobj1WbSkudGltZT1xcCgpLHQ9bnVsbD09dD9udWxsOnQrIiIpO2Zvcih2YXIgaT10aGlzLl9ncm91cHMscj1pLmxlbmd0aCxvPTA7bzxyOysrbylmb3IodmFyIGEscz1pW29dLGw9cy5sZW5ndGgsYz0wO2M8bDsrK2MpKGE9c1tjXSkmJnJmKGEsdCxlLGMscyxufHxVbShhLGUpKTtyZXR1cm4gbmV3IHpmKGksdGhpcy5fcGFyZW50cyx0LGUpfTt2YXIgV209W251bGxdO2Z1bmN0aW9uIHFtKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0fX1mdW5jdGlvbiBZbSh0LGUsbil7dGhpcy50YXJnZXQ9dCx0aGlzLnR5cGU9ZSx0aGlzLnNlbGVjdGlvbj1ufWZ1bmN0aW9uIFhtKCl7TXUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCl9ZnVuY3Rpb24gJG0oKXtNdS5wcmV2ZW50RGVmYXVsdCgpLE11LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpfXZhciBLbT17bmFtZToiZHJhZyJ9LFptPXtuYW1lOiJzcGFjZSJ9LEptPXtuYW1lOiJoYW5kbGUifSxRbT17bmFtZToiY2VudGVyIn07ZnVuY3Rpb24gdGcodCl7cmV0dXJuWyt0WzBdLCt0WzFdXX1mdW5jdGlvbiBlZyh0KXtyZXR1cm5bdGcodFswXSksdGcodFsxXSldfWZ1bmN0aW9uIG5nKHQpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gd2goZSxNdS50b3VjaGVzLHQpfX12YXIgaWc9e25hbWU6IngiLGhhbmRsZXM6WyJ3IiwiZSJdLm1hcChoZyksaW5wdXQ6ZnVuY3Rpb24odCxlKXtyZXR1cm4gbnVsbD09dD9udWxsOltbK3RbMF0sZVswXVsxXV0sWyt0WzFdLGVbMV1bMV1dXX0sb3V0cHV0OmZ1bmN0aW9uKHQpe3JldHVybiB0JiZbdFswXVswXSx0WzFdWzBdXX19LHJnPXtuYW1lOiJ5IixoYW5kbGVzOlsibiIsInMiXS5tYXAoaGcpLGlucHV0OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIG51bGw9PXQ/bnVsbDpbW2VbMF1bMF0sK3RbMF1dLFtlWzFdWzBdLCt0WzFdXV19LG91dHB1dDpmdW5jdGlvbih0KXtyZXR1cm4gdCYmW3RbMF1bMV0sdFsxXVsxXV19fSxvZz17bmFtZToieHkiLGhhbmRsZXM6WyJuIiwidyIsImUiLCJzIiwibnciLCJuZSIsInN3Iiwic2UiXS5tYXAoaGcpLGlucHV0OmZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P251bGw6ZWcodCl9LG91dHB1dDpmdW5jdGlvbih0KXtyZXR1cm4gdH19LGFnPXtvdmVybGF5OiJjcm9zc2hhaXIiLHNlbGVjdGlvbjoibW92ZSIsbjoibnMtcmVzaXplIixlOiJldy1yZXNpemUiLHM6Im5zLXJlc2l6ZSIsdzoiZXctcmVzaXplIixudzoibndzZS1yZXNpemUiLG5lOiJuZXN3LXJlc2l6ZSIsc2U6Im53c2UtcmVzaXplIixzdzoibmVzdy1yZXNpemUifSxzZz17ZToidyIsdzoiZSIsbnc6Im5lIixuZToibnciLHNlOiJzdyIsc3c6InNlIn0sbGc9e246InMiLHM6Im4iLG53OiJzdyIsbmU6InNlIixzZToibmUiLHN3OiJudyJ9LGNnPXtvdmVybGF5OjEsc2VsZWN0aW9uOjEsbjpudWxsLGU6MSxzOm51bGwsdzotMSxudzotMSxuZToxLHNlOjEsc3c6LTF9LHVnPXtvdmVybGF5OjEsc2VsZWN0aW9uOjEsbjotMSxlOm51bGwsczoxLHc6bnVsbCxudzotMSxuZTotMSxzZToxLHN3OjF9O2Z1bmN0aW9uIGhnKHQpe3JldHVybnt0eXBlOnR9fWZ1bmN0aW9uIGRnKCl7cmV0dXJuIU11LmN0cmxLZXkmJiFNdS5idXR0b259ZnVuY3Rpb24gcGcoKXt2YXIgdD10aGlzLm93bmVyU1ZHRWxlbWVudHx8dGhpcztyZXR1cm4gdC5oYXNBdHRyaWJ1dGUoInZpZXdCb3giKT9bWyh0PXQudmlld0JveC5iYXNlVmFsKS54LHQueV0sW3QueCt0LndpZHRoLHQueSt0LmhlaWdodF1dOltbMCwwXSxbdC53aWR0aC5iYXNlVmFsLnZhbHVlLHQuaGVpZ2h0LmJhc2VWYWwudmFsdWVdXX1mdW5jdGlvbiBmZygpe3JldHVybiBuYXZpZ2F0b3IubWF4VG91Y2hQb2ludHN8fCJvbnRvdWNoc3RhcnQiaW4gdGhpc31mdW5jdGlvbiBtZyh0KXtmb3IoOyF0Ll9fYnJ1c2g7KWlmKCEodD10LnBhcmVudE5vZGUpKXJldHVybjtyZXR1cm4gdC5fX2JydXNofWZ1bmN0aW9uIGdnKHQpe3JldHVybiB0WzBdWzBdPT09dFsxXVswXXx8dFswXVsxXT09PXRbMV1bMV19ZnVuY3Rpb24gX2codCl7dmFyIGU9dC5fX2JydXNoO3JldHVybiBlP2UuZGltLm91dHB1dChlLnNlbGVjdGlvbik6bnVsbH1mdW5jdGlvbiB5Zygpe3JldHVybiBiZyhyZyl9ZnVuY3Rpb24gdmcoKXtyZXR1cm4gYmcob2cpfWZ1bmN0aW9uIGJnKHQpe3ZhciBlLG49cGcsaT1kZyxyPWZnLG89ITAsYT13Yygic3RhcnQiLCJicnVzaCIsImVuZCIpLHM9NjtmdW5jdGlvbiBsKGUpe3ZhciBuPWUucHJvcGVydHkoIl9fYnJ1c2giLG0pLnNlbGVjdEFsbCgiLm92ZXJsYXkiKS5kYXRhKFtoZygib3ZlcmxheSIpXSk7bi5lbnRlcigpLmFwcGVuZCgicmVjdCIpLmF0dHIoImNsYXNzIiwib3ZlcmxheSIpLmF0dHIoInBvaW50ZXItZXZlbnRzIiwiYWxsIikuYXR0cigiY3Vyc29yIixhZy5vdmVybGF5KS5tZXJnZShuKS5lYWNoKChmdW5jdGlvbigpe3ZhciB0PW1nKHRoaXMpLmV4dGVudDtEdSh0aGlzKS5hdHRyKCJ4Iix0WzBdWzBdKS5hdHRyKCJ5Iix0WzBdWzFdKS5hdHRyKCJ3aWR0aCIsdFsxXVswXS10WzBdWzBdKS5hdHRyKCJoZWlnaHQiLHRbMV1bMV0tdFswXVsxXSl9KSksZS5zZWxlY3RBbGwoIi5zZWxlY3Rpb24iKS5kYXRhKFtoZygic2VsZWN0aW9uIildKS5lbnRlcigpLmFwcGVuZCgicmVjdCIpLmF0dHIoImNsYXNzIiwic2VsZWN0aW9uIikuYXR0cigiY3Vyc29yIixhZy5zZWxlY3Rpb24pLmF0dHIoImZpbGwiLCIjNzc3IikuYXR0cigiZmlsbC1vcGFjaXR5IiwuMykuYXR0cigic3Ryb2tlIiwiI2ZmZiIpLmF0dHIoInNoYXBlLXJlbmRlcmluZyIsImNyaXNwRWRnZXMiKTt2YXIgaT1lLnNlbGVjdEFsbCgiLmhhbmRsZSIpLmRhdGEodC5oYW5kbGVzLChmdW5jdGlvbih0KXtyZXR1cm4gdC50eXBlfSkpO2kuZXhpdCgpLnJlbW92ZSgpLGkuZW50ZXIoKS5hcHBlbmQoInJlY3QiKS5hdHRyKCJjbGFzcyIsKGZ1bmN0aW9uKHQpe3JldHVybiJoYW5kbGUgaGFuZGxlLS0iK3QudHlwZX0pKS5hdHRyKCJjdXJzb3IiLChmdW5jdGlvbih0KXtyZXR1cm4gYWdbdC50eXBlXX0pKSxlLmVhY2goYykuYXR0cigiZmlsbCIsIm5vbmUiKS5hdHRyKCJwb2ludGVyLWV2ZW50cyIsImFsbCIpLm9uKCJtb3VzZWRvd24uYnJ1c2giLGQpLmZpbHRlcihyKS5vbigidG91Y2hzdGFydC5icnVzaCIsZCkub24oInRvdWNobW92ZS5icnVzaCIscCkub24oInRvdWNoZW5kLmJydXNoIHRvdWNoY2FuY2VsLmJydXNoIixmKS5zdHlsZSgidG91Y2gtYWN0aW9uIiwibm9uZSIpLnN0eWxlKCItd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3IiLCJyZ2JhKDAsMCwwLDApIil9ZnVuY3Rpb24gYygpe3ZhciB0PUR1KHRoaXMpLGU9bWcodGhpcykuc2VsZWN0aW9uO2U/KHQuc2VsZWN0QWxsKCIuc2VsZWN0aW9uIikuc3R5bGUoImRpc3BsYXkiLG51bGwpLmF0dHIoIngiLGVbMF1bMF0pLmF0dHIoInkiLGVbMF1bMV0pLmF0dHIoIndpZHRoIixlWzFdWzBdLWVbMF1bMF0pLmF0dHIoImhlaWdodCIsZVsxXVsxXS1lWzBdWzFdKSx0LnNlbGVjdEFsbCgiLmhhbmRsZSIpLnN0eWxlKCJkaXNwbGF5IixudWxsKS5hdHRyKCJ4IiwoZnVuY3Rpb24odCl7cmV0dXJuImUiPT09dC50eXBlW3QudHlwZS5sZW5ndGgtMV0/ZVsxXVswXS1zLzI6ZVswXVswXS1zLzJ9KSkuYXR0cigieSIsKGZ1bmN0aW9uKHQpe3JldHVybiJzIj09PXQudHlwZVswXT9lWzFdWzFdLXMvMjplWzBdWzFdLXMvMn0pKS5hdHRyKCJ3aWR0aCIsKGZ1bmN0aW9uKHQpe3JldHVybiJuIj09PXQudHlwZXx8InMiPT09dC50eXBlP2VbMV1bMF0tZVswXVswXStzOnN9KSkuYXR0cigiaGVpZ2h0IiwoZnVuY3Rpb24odCl7cmV0dXJuImUiPT09dC50eXBlfHwidyI9PT10LnR5cGU/ZVsxXVsxXS1lWzBdWzFdK3M6c30pKSk6dC5zZWxlY3RBbGwoIi5zZWxlY3Rpb24sLmhhbmRsZSIpLnN0eWxlKCJkaXNwbGF5Iiwibm9uZSIpLmF0dHIoIngiLG51bGwpLmF0dHIoInkiLG51bGwpLmF0dHIoIndpZHRoIixudWxsKS5hdHRyKCJoZWlnaHQiLG51bGwpfWZ1bmN0aW9uIHUodCxlLG4pe3ZhciBpPXQuX19icnVzaC5lbWl0dGVyO3JldHVybiFpfHxuJiZpLmNsZWFuP25ldyBoKHQsZSxuKTppfWZ1bmN0aW9uIGgodCxlLG4pe3RoaXMudGhhdD10LHRoaXMuYXJncz1lLHRoaXMuc3RhdGU9dC5fX2JydXNoLHRoaXMuYWN0aXZlPTAsdGhpcy5jbGVhbj1ufWZ1bmN0aW9uIGQoKXtpZigoIWV8fE11LnRvdWNoZXMpJiZpLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl7dmFyIG4scixhLHMsbCxoLGQscCxmLG0sZyxfPXRoaXMseT1NdS50YXJnZXQuX19kYXRhX18udHlwZSx2PSJzZWxlY3Rpb24iPT09KG8mJk11Lm1ldGFLZXk/eT0ib3ZlcmxheSI6eSk/S206byYmTXUuYWx0S2V5P1FtOkptLGI9dD09PXJnP251bGw6Y2dbeV0seD10PT09aWc/bnVsbDp1Z1t5XSx3PW1nKF8pLFM9dy5leHRlbnQsTT13LnNlbGVjdGlvbixFPVNbMF1bMF0sVD1TWzBdWzFdLEM9U1sxXVswXSxBPVNbMV1bMV0saz0wLEw9MCxQPWImJngmJm8mJk11LnNoaWZ0S2V5LE49TXUudG91Y2hlcz9uZyhNdS5jaGFuZ2VkVG91Y2hlc1swXS5pZGVudGlmaWVyKTpiaCxJPU4oXyksUj1JLE89dShfLGFyZ3VtZW50cywhMCkuYmVmb3Jlc3RhcnQoKTsib3ZlcmxheSI9PT15PyhNJiYoZj0hMCksdy5zZWxlY3Rpb249TT1bW249dD09PXJnP0U6SVswXSxhPXQ9PT1pZz9UOklbMV1dLFtsPXQ9PT1yZz9DOm4sZD10PT09aWc/QTphXV0pOihuPU1bMF1bMF0sYT1NWzBdWzFdLGw9TVsxXVswXSxkPU1bMV1bMV0pLHI9bixzPWEsaD1sLHA9ZDt2YXIgej1EdShfKS5hdHRyKCJwb2ludGVyLWV2ZW50cyIsIm5vbmUiKSxEPXouc2VsZWN0QWxsKCIub3ZlcmxheSIpLmF0dHIoImN1cnNvciIsYWdbeV0pO2lmKE11LnRvdWNoZXMpTy5tb3ZlZD1ILE8uZW5kZWQ9VjtlbHNle3ZhciBCPUR1KE11LnZpZXcpLm9uKCJtb3VzZW1vdmUuYnJ1c2giLEgsITApLm9uKCJtb3VzZXVwLmJydXNoIixWLCEwKTtvJiZCLm9uKCJrZXlkb3duLmJydXNoIixVLCEwKS5vbigia2V5dXAuYnJ1c2giLGosITApLEVoKE11LnZpZXcpfVhtKCksbGYoXyksYy5jYWxsKF8pLE8uc3RhcnQoKX1mdW5jdGlvbiBIKCl7dmFyIHQ9TihfKTshUHx8bXx8Z3x8KE1hdGguYWJzKHRbMF0tUlswXSk+TWF0aC5hYnModFsxXS1SWzFdKT9nPSEwOm09ITApLFI9dCxmPSEwLCRtKCksRigpfWZ1bmN0aW9uIEYoKXt2YXIgdDtzd2l0Y2goaz1SWzBdLUlbMF0sTD1SWzFdLUlbMV0sdil7Y2FzZSBabTpjYXNlIEttOmImJihrPU1hdGgubWF4KEUtbixNYXRoLm1pbihDLWwsaykpLHI9bitrLGg9bCtrKSx4JiYoTD1NYXRoLm1heChULWEsTWF0aC5taW4oQS1kLEwpKSxzPWErTCxwPWQrTCk7YnJlYWs7Y2FzZSBKbTpiPDA/KGs9TWF0aC5tYXgoRS1uLE1hdGgubWluKEMtbixrKSkscj1uK2ssaD1sKTpiPjAmJihrPU1hdGgubWF4KEUtbCxNYXRoLm1pbihDLWwsaykpLHI9bixoPWwraykseDwwPyhMPU1hdGgubWF4KFQtYSxNYXRoLm1pbihBLWEsTCkpLHM9YStMLHA9ZCk6eD4wJiYoTD1NYXRoLm1heChULWQsTWF0aC5taW4oQS1kLEwpKSxzPWEscD1kK0wpO2JyZWFrO2Nhc2UgUW06YiYmKHI9TWF0aC5tYXgoRSxNYXRoLm1pbihDLG4taypiKSksaD1NYXRoLm1heChFLE1hdGgubWluKEMsbCtrKmIpKSkseCYmKHM9TWF0aC5tYXgoVCxNYXRoLm1pbihBLGEtTCp4KSkscD1NYXRoLm1heChULE1hdGgubWluKEEsZCtMKngpKSl9aDxyJiYoYio9LTEsdD1uLG49bCxsPXQsdD1yLHI9aCxoPXQseSBpbiBzZyYmRC5hdHRyKCJjdXJzb3IiLGFnW3k9c2dbeV1dKSkscDxzJiYoeCo9LTEsdD1hLGE9ZCxkPXQsdD1zLHM9cCxwPXQseSBpbiBsZyYmRC5hdHRyKCJjdXJzb3IiLGFnW3k9bGdbeV1dKSksdy5zZWxlY3Rpb24mJihNPXcuc2VsZWN0aW9uKSxtJiYocj1NWzBdWzBdLGg9TVsxXVswXSksZyYmKHM9TVswXVsxXSxwPU1bMV1bMV0pLE1bMF1bMF09PT1yJiZNWzBdWzFdPT09cyYmTVsxXVswXT09PWgmJk1bMV1bMV09PT1wfHwody5zZWxlY3Rpb249W1tyLHNdLFtoLHBdXSxjLmNhbGwoXyksTy5icnVzaCgpKX1mdW5jdGlvbiBWKCl7aWYoWG0oKSxNdS50b3VjaGVzKXtpZihNdS50b3VjaGVzLmxlbmd0aClyZXR1cm47ZSYmY2xlYXJUaW1lb3V0KGUpLGU9c2V0VGltZW91dCgoZnVuY3Rpb24oKXtlPW51bGx9KSw1MDApfWVsc2UgVGgoTXUudmlldyxmKSxCLm9uKCJrZXlkb3duLmJydXNoIGtleXVwLmJydXNoIG1vdXNlbW92ZS5icnVzaCBtb3VzZXVwLmJydXNoIixudWxsKTt6LmF0dHIoInBvaW50ZXItZXZlbnRzIiwiYWxsIiksRC5hdHRyKCJjdXJzb3IiLGFnLm92ZXJsYXkpLHcuc2VsZWN0aW9uJiYoTT13LnNlbGVjdGlvbiksZ2coTSkmJih3LnNlbGVjdGlvbj1udWxsLGMuY2FsbChfKSksTy5lbmQoKX1mdW5jdGlvbiBVKCl7c3dpdGNoKE11LmtleUNvZGUpe2Nhc2UgMTY6UD1iJiZ4O2JyZWFrO2Nhc2UgMTg6dj09PUptJiYoYiYmKGw9aC1rKmIsbj1yK2sqYikseCYmKGQ9cC1MKngsYT1zK0wqeCksdj1RbSxGKCkpO2JyZWFrO2Nhc2UgMzI6diE9PUptJiZ2IT09UW18fChiPDA/bD1oLWs6Yj4wJiYobj1yLWspLHg8MD9kPXAtTDp4PjAmJihhPXMtTCksdj1abSxELmF0dHIoImN1cnNvciIsYWcuc2VsZWN0aW9uKSxGKCkpO2JyZWFrO2RlZmF1bHQ6cmV0dXJufSRtKCl9ZnVuY3Rpb24gaigpe3N3aXRjaChNdS5rZXlDb2RlKXtjYXNlIDE2OlAmJihtPWc9UD0hMSxGKCkpO2JyZWFrO2Nhc2UgMTg6dj09PVFtJiYoYjwwP2w9aDpiPjAmJihuPXIpLHg8MD9kPXA6eD4wJiYoYT1zKSx2PUptLEYoKSk7YnJlYWs7Y2FzZSAzMjp2PT09Wm0mJihNdS5hbHRLZXk/KGImJihsPWgtaypiLG49citrKmIpLHgmJihkPXAtTCp4LGE9cytMKngpLHY9UW0pOihiPDA/bD1oOmI+MCYmKG49cikseDwwP2Q9cDp4PjAmJihhPXMpLHY9Sm0pLEQuYXR0cigiY3Vyc29yIixhZ1t5XSksRigpKTticmVhaztkZWZhdWx0OnJldHVybn0kbSgpfX1mdW5jdGlvbiBwKCl7dSh0aGlzLGFyZ3VtZW50cykubW92ZWQoKX1mdW5jdGlvbiBmKCl7dSh0aGlzLGFyZ3VtZW50cykuZW5kZWQoKX1mdW5jdGlvbiBtKCl7dmFyIGU9dGhpcy5fX2JydXNofHx7c2VsZWN0aW9uOm51bGx9O3JldHVybiBlLmV4dGVudD1lZyhuLmFwcGx5KHRoaXMsYXJndW1lbnRzKSksZS5kaW09dCxlfXJldHVybiBsLm1vdmU9ZnVuY3Rpb24oZSxuKXtlLnNlbGVjdGlvbj9lLm9uKCJzdGFydC5icnVzaCIsKGZ1bmN0aW9uKCl7dSh0aGlzLGFyZ3VtZW50cykuYmVmb3Jlc3RhcnQoKS5zdGFydCgpfSkpLm9uKCJpbnRlcnJ1cHQuYnJ1c2ggZW5kLmJydXNoIiwoZnVuY3Rpb24oKXt1KHRoaXMsYXJndW1lbnRzKS5lbmQoKX0pKS50d2VlbigiYnJ1c2giLChmdW5jdGlvbigpe3ZhciBlPXRoaXMsaT1lLl9fYnJ1c2gscj11KGUsYXJndW1lbnRzKSxvPWkuc2VsZWN0aW9uLGE9dC5pbnB1dCgiZnVuY3Rpb24iPT10eXBlb2Ygbj9uLmFwcGx5KHRoaXMsYXJndW1lbnRzKTpuLGkuZXh0ZW50KSxzPWNwKG8sYSk7ZnVuY3Rpb24gbCh0KXtpLnNlbGVjdGlvbj0xPT09dCYmbnVsbD09PWE/bnVsbDpzKHQpLGMuY2FsbChlKSxyLmJydXNoKCl9cmV0dXJuIG51bGwhPT1vJiZudWxsIT09YT9sOmwoMSl9KSk6ZS5lYWNoKChmdW5jdGlvbigpe3ZhciBlPXRoaXMsaT1hcmd1bWVudHMscj1lLl9fYnJ1c2gsbz10LmlucHV0KCJmdW5jdGlvbiI9PXR5cGVvZiBuP24uYXBwbHkoZSxpKTpuLHIuZXh0ZW50KSxhPXUoZSxpKS5iZWZvcmVzdGFydCgpO2xmKGUpLHIuc2VsZWN0aW9uPW51bGw9PT1vP251bGw6byxjLmNhbGwoZSksYS5zdGFydCgpLmJydXNoKCkuZW5kKCl9KSl9LGwuY2xlYXI9ZnVuY3Rpb24odCl7bC5tb3ZlKHQsbnVsbCl9LGgucHJvdG90eXBlPXtiZWZvcmVzdGFydDpmdW5jdGlvbigpe3JldHVybiAxPT0rK3RoaXMuYWN0aXZlJiYodGhpcy5zdGF0ZS5lbWl0dGVyPXRoaXMsdGhpcy5zdGFydGluZz0hMCksdGhpc30sc3RhcnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zdGFydGluZz8odGhpcy5zdGFydGluZz0hMSx0aGlzLmVtaXQoInN0YXJ0IikpOnRoaXMuZW1pdCgiYnJ1c2giKSx0aGlzfSxicnVzaDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVtaXQoImJydXNoIiksdGhpc30sZW5kOmZ1bmN0aW9uKCl7cmV0dXJuIDA9PS0tdGhpcy5hY3RpdmUmJihkZWxldGUgdGhpcy5zdGF0ZS5lbWl0dGVyLHRoaXMuZW1pdCgiZW5kIikpLHRoaXN9LGVtaXQ6ZnVuY3Rpb24oZSl7THUobmV3IFltKGwsZSx0Lm91dHB1dCh0aGlzLnN0YXRlLnNlbGVjdGlvbikpLGEuYXBwbHksYSxbZSx0aGlzLnRoYXQsdGhpcy5hcmdzXSl9fSxsLmV4dGVudD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj0iZnVuY3Rpb24iPT10eXBlb2YgdD90OnFtKGVnKHQpKSxsKTpufSxsLmZpbHRlcj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0iZnVuY3Rpb24iPT10eXBlb2YgdD90OnFtKCEhdCksbCk6aX0sbC50b3VjaGFibGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpxbSghIXQpLGwpOnJ9LGwuaGFuZGxlU2l6ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocz0rdCxsKTpzfSxsLmtleU1vZGlmaWVycz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz0hIXQsbCk6b30sbC5vbj1mdW5jdGlvbigpe3ZhciB0PWEub24uYXBwbHkoYSxhcmd1bWVudHMpO3JldHVybiB0PT09YT9sOnR9LGx9dmFyIHhnPU1hdGguY29zLHdnPU1hdGguc2luLFNnPU1hdGguUEksTWc9U2cvMixFZz0yKlNnLFRnPU1hdGgubWF4O2Z1bmN0aW9uIENnKHQpe3JldHVybiBmdW5jdGlvbihlLG4pe3JldHVybiB0KGUuc291cmNlLnZhbHVlK2UudGFyZ2V0LnZhbHVlLG4uc291cmNlLnZhbHVlK24udGFyZ2V0LnZhbHVlKX19dmFyIEFnPUFycmF5LnByb3RvdHlwZS5zbGljZTtmdW5jdGlvbiBrZyh0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19dmFyIExnPU1hdGguUEksUGc9MipMZyxOZz0xZS02LElnPVBnLU5nO2Z1bmN0aW9uIFJnKCl7dGhpcy5feDA9dGhpcy5feTA9dGhpcy5feDE9dGhpcy5feTE9bnVsbCx0aGlzLl89IiJ9ZnVuY3Rpb24gT2coKXtyZXR1cm4gbmV3IFJnfWZ1bmN0aW9uIHpnKHQpe3JldHVybiB0LnNvdXJjZX1mdW5jdGlvbiBEZyh0KXtyZXR1cm4gdC50YXJnZXR9ZnVuY3Rpb24gQmcodCl7cmV0dXJuIHQucmFkaXVzfWZ1bmN0aW9uIEhnKHQpe3JldHVybiB0LnN0YXJ0QW5nbGV9ZnVuY3Rpb24gRmcodCl7cmV0dXJuIHQuZW5kQW5nbGV9UmcucHJvdG90eXBlPU9nLnByb3RvdHlwZT17Y29uc3RydWN0b3I6UmcsbW92ZVRvOmZ1bmN0aW9uKHQsZSl7dGhpcy5fKz0iTSIrKHRoaXMuX3gwPXRoaXMuX3gxPSt0KSsiLCIrKHRoaXMuX3kwPXRoaXMuX3kxPStlKX0sY2xvc2VQYXRoOmZ1bmN0aW9uKCl7bnVsbCE9PXRoaXMuX3gxJiYodGhpcy5feDE9dGhpcy5feDAsdGhpcy5feTE9dGhpcy5feTAsdGhpcy5fKz0iWiIpfSxsaW5lVG86ZnVuY3Rpb24odCxlKXt0aGlzLl8rPSJMIisodGhpcy5feDE9K3QpKyIsIisodGhpcy5feTE9K2UpfSxxdWFkcmF0aWNDdXJ2ZVRvOmZ1bmN0aW9uKHQsZSxuLGkpe3RoaXMuXys9IlEiKyArdCsiLCIrICtlKyIsIisodGhpcy5feDE9K24pKyIsIisodGhpcy5feTE9K2kpfSxiZXppZXJDdXJ2ZVRvOmZ1bmN0aW9uKHQsZSxuLGkscixvKXt0aGlzLl8rPSJDIisgK3QrIiwiKyArZSsiLCIrICtuKyIsIisgK2krIiwiKyh0aGlzLl94MT0rcikrIiwiKyh0aGlzLl95MT0rbyl9LGFyY1RvOmZ1bmN0aW9uKHQsZSxuLGkscil7dmFyIG89dGhpcy5feDEsYT10aGlzLl95MSxzPShuPStuKS0odD0rdCksbD0oaT0raSktKGU9K2UpLGM9by10LHU9YS1lLGg9YypjK3UqdTtpZigocj0rcik8MCl0aHJvdyBuZXcgRXJyb3IoIm5lZ2F0aXZlIHJhZGl1czogIityKTtpZihudWxsPT09dGhpcy5feDEpdGhpcy5fKz0iTSIrKHRoaXMuX3gxPXQpKyIsIisodGhpcy5feTE9ZSk7ZWxzZSBpZihoPk5nKWlmKE1hdGguYWJzKHUqcy1sKmMpPk5nJiZyKXt2YXIgZD1uLW8scD1pLWEsZj1zKnMrbCpsLG09ZCpkK3AqcCxnPU1hdGguc3FydChmKSxfPU1hdGguc3FydChoKSx5PXIqTWF0aC50YW4oKExnLU1hdGguYWNvcygoZitoLW0pLygyKmcqXykpKS8yKSx2PXkvXyxiPXkvZztNYXRoLmFicyh2LTEpPk5nJiYodGhpcy5fKz0iTCIrKHQrdipjKSsiLCIrKGUrdip1KSksdGhpcy5fKz0iQSIrcisiLCIrcisiLDAsMCwiKyArKHUqZD5jKnApKyIsIisodGhpcy5feDE9dCtiKnMpKyIsIisodGhpcy5feTE9ZStiKmwpfWVsc2UgdGhpcy5fKz0iTCIrKHRoaXMuX3gxPXQpKyIsIisodGhpcy5feTE9ZSk7ZWxzZTt9LGFyYzpmdW5jdGlvbih0LGUsbixpLHIsbyl7dD0rdCxlPStlLG89ISFvO3ZhciBhPShuPStuKSpNYXRoLmNvcyhpKSxzPW4qTWF0aC5zaW4oaSksbD10K2EsYz1lK3MsdT0xXm8saD1vP2ktcjpyLWk7aWYobjwwKXRocm93IG5ldyBFcnJvcigibmVnYXRpdmUgcmFkaXVzOiAiK24pO251bGw9PT10aGlzLl94MT90aGlzLl8rPSJNIitsKyIsIitjOihNYXRoLmFicyh0aGlzLl94MS1sKT5OZ3x8TWF0aC5hYnModGhpcy5feTEtYyk+TmcpJiYodGhpcy5fKz0iTCIrbCsiLCIrYyksbiYmKGg8MCYmKGg9aCVQZytQZyksaD5JZz90aGlzLl8rPSJBIituKyIsIituKyIsMCwxLCIrdSsiLCIrKHQtYSkrIiwiKyhlLXMpKyJBIituKyIsIituKyIsMCwxLCIrdSsiLCIrKHRoaXMuX3gxPWwpKyIsIisodGhpcy5feTE9Yyk6aD5OZyYmKHRoaXMuXys9IkEiK24rIiwiK24rIiwwLCIrICsoaD49TGcpKyIsIit1KyIsIisodGhpcy5feDE9dCtuKk1hdGguY29zKHIpKSsiLCIrKHRoaXMuX3kxPWUrbipNYXRoLnNpbihyKSkpKX0scmVjdDpmdW5jdGlvbih0LGUsbixpKXt0aGlzLl8rPSJNIisodGhpcy5feDA9dGhpcy5feDE9K3QpKyIsIisodGhpcy5feTA9dGhpcy5feTE9K2UpKyJoIisgK24rInYiKyAraSsiaCIrLW4rIloifSx0b1N0cmluZzpmdW5jdGlvbigpe3JldHVybiB0aGlzLl99fTt2YXIgVmc9IiQiO2Z1bmN0aW9uIFVnKCl7fWZ1bmN0aW9uIGpnKHQsZSl7dmFyIG49bmV3IFVnO2lmKHQgaW5zdGFuY2VvZiBVZyl0LmVhY2goKGZ1bmN0aW9uKHQsZSl7bi5zZXQoZSx0KX0pKTtlbHNlIGlmKEFycmF5LmlzQXJyYXkodCkpe3ZhciBpLHI9LTEsbz10Lmxlbmd0aDtpZihudWxsPT1lKWZvcig7KytyPG87KW4uc2V0KHIsdFtyXSk7ZWxzZSBmb3IoOysrcjxvOyluLnNldChlKGk9dFtyXSxyLHQpLGkpfWVsc2UgaWYodClmb3IodmFyIGEgaW4gdCluLnNldChhLHRbYV0pO3JldHVybiBufWZ1bmN0aW9uIEdnKCl7cmV0dXJue319ZnVuY3Rpb24gV2codCxlLG4pe3RbZV09bn1mdW5jdGlvbiBxZygpe3JldHVybiBqZygpfWZ1bmN0aW9uIFlnKHQsZSxuKXt0LnNldChlLG4pfWZ1bmN0aW9uIFhnKCl7fVVnLnByb3RvdHlwZT1qZy5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOlVnLGhhczpmdW5jdGlvbih0KXtyZXR1cm4gVmcrdCBpbiB0aGlzfSxnZXQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXNbVmcrdF19LHNldDpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzW1ZnK3RdPWUsdGhpc30scmVtb3ZlOmZ1bmN0aW9uKHQpe3ZhciBlPVZnK3Q7cmV0dXJuIGUgaW4gdGhpcyYmZGVsZXRlIHRoaXNbZV19LGNsZWFyOmZ1bmN0aW9uKCl7Zm9yKHZhciB0IGluIHRoaXMpdFswXT09PVZnJiZkZWxldGUgdGhpc1t0XX0sa2V5czpmdW5jdGlvbigpe3ZhciB0PVtdO2Zvcih2YXIgZSBpbiB0aGlzKWVbMF09PT1WZyYmdC5wdXNoKGUuc2xpY2UoMSkpO3JldHVybiB0fSx2YWx1ZXM6ZnVuY3Rpb24oKXt2YXIgdD1bXTtmb3IodmFyIGUgaW4gdGhpcyllWzBdPT09VmcmJnQucHVzaCh0aGlzW2VdKTtyZXR1cm4gdH0sZW50cmllczpmdW5jdGlvbigpe3ZhciB0PVtdO2Zvcih2YXIgZSBpbiB0aGlzKWVbMF09PT1WZyYmdC5wdXNoKHtrZXk6ZS5zbGljZSgxKSx2YWx1ZTp0aGlzW2VdfSk7cmV0dXJuIHR9LHNpemU6ZnVuY3Rpb24oKXt2YXIgdD0wO2Zvcih2YXIgZSBpbiB0aGlzKWVbMF09PT1WZyYmKyt0O3JldHVybiB0fSxlbXB0eTpmdW5jdGlvbigpe2Zvcih2YXIgdCBpbiB0aGlzKWlmKHRbMF09PT1WZylyZXR1cm4hMTtyZXR1cm4hMH0sZWFjaDpmdW5jdGlvbih0KXtmb3IodmFyIGUgaW4gdGhpcyllWzBdPT09VmcmJnQodGhpc1tlXSxlLnNsaWNlKDEpLHRoaXMpfX07dmFyICRnPWpnLnByb3RvdHlwZTtmdW5jdGlvbiBLZyh0LGUpe3ZhciBuPW5ldyBYZztpZih0IGluc3RhbmNlb2YgWGcpdC5lYWNoKChmdW5jdGlvbih0KXtuLmFkZCh0KX0pKTtlbHNlIGlmKHQpe3ZhciBpPS0xLHI9dC5sZW5ndGg7aWYobnVsbD09ZSlmb3IoOysraTxyOyluLmFkZCh0W2ldKTtlbHNlIGZvcig7KytpPHI7KW4uYWRkKGUodFtpXSxpLHQpKX1yZXR1cm4gbn1mdW5jdGlvbiBaZyh0KXt2YXIgZT1bXTtmb3IodmFyIG4gaW4gdCllLnB1c2gobik7cmV0dXJuIGV9WGcucHJvdG90eXBlPUtnLnByb3RvdHlwZT17Y29uc3RydWN0b3I6WGcsaGFzOiRnLmhhcyxhZGQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXNbVmcrKHQrPSIiKV09dCx0aGlzfSxyZW1vdmU6JGcucmVtb3ZlLGNsZWFyOiRnLmNsZWFyLHZhbHVlczokZy5rZXlzLHNpemU6JGcuc2l6ZSxlbXB0eTokZy5lbXB0eSxlYWNoOiRnLmVhY2h9O3ZhciBKZz1BcnJheS5wcm90b3R5cGUuc2xpY2U7ZnVuY3Rpb24gUWcodCxlKXtyZXR1cm4gdC1lfWZ1bmN0aW9uIHRfKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0fX1mdW5jdGlvbiBlXyh0LGUpe2Zvcih2YXIgbixpPS0xLHI9ZS5sZW5ndGg7KytpPHI7KWlmKG49bl8odCxlW2ldKSlyZXR1cm4gbjtyZXR1cm4gMH1mdW5jdGlvbiBuXyh0LGUpe2Zvcih2YXIgbj1lWzBdLGk9ZVsxXSxyPS0xLG89MCxhPXQubGVuZ3RoLHM9YS0xO288YTtzPW8rKyl7dmFyIGw9dFtvXSxjPWxbMF0sdT1sWzFdLGg9dFtzXSxkPWhbMF0scD1oWzFdO2lmKGlfKGwsaCxlKSlyZXR1cm4gMDt1PmkhPXA+aSYmbjwoZC1jKSooaS11KS8ocC11KStjJiYocj0tcil9cmV0dXJuIHJ9ZnVuY3Rpb24gaV8odCxlLG4pe3ZhciBpO3JldHVybihmdW5jdGlvbiByKHQsZSxuKXtyZXR1cm4oZVswXS10WzBdKSooblsxXS10WzFdKT09KG5bMF0tdFswXSkqKGVbMV0tdFsxXSl9KSh0LGUsbikmJihmdW5jdGlvbiBvKHQsZSxuKXtyZXR1cm4gdDw9ZSYmZTw9bnx8bjw9ZSYmZTw9dH0pKHRbaT0rKHRbMF09PT1lWzBdKV0sbltpXSxlW2ldKX1mdW5jdGlvbiByXygpe312YXIgb189W1tdLFtbWzEsMS41XSxbLjUsMV1dXSxbW1sxLjUsMV0sWzEsMS41XV1dLFtbWzEuNSwxXSxbLjUsMV1dXSxbW1sxLC41XSxbMS41LDFdXV0sW1tbMSwxLjVdLFsuNSwxXV0sW1sxLC41XSxbMS41LDFdXV0sW1tbMSwuNV0sWzEsMS41XV1dLFtbWzEsLjVdLFsuNSwxXV1dLFtbWy41LDFdLFsxLC41XV1dLFtbWzEsMS41XSxbMSwuNV1dXSxbW1suNSwxXSxbMSwuNV1dLFtbMS41LDFdLFsxLDEuNV1dXSxbW1sxLjUsMV0sWzEsLjVdXV0sW1tbLjUsMV0sWzEuNSwxXV1dLFtbWzEsMS41XSxbMS41LDFdXV0sW1tbLjUsMV0sWzEsMS41XV1dLFtdXTtmdW5jdGlvbiBhXygpe3ZhciB0PTEsZT0xLG49aWMsaT1zO2Z1bmN0aW9uIHIodCl7dmFyIGU9bih0KTtpZihBcnJheS5pc0FycmF5KGUpKWU9ZS5zbGljZSgpLnNvcnQoUWcpO2Vsc2V7dmFyIGk9R2wodCkscj1pWzBdLGE9aVsxXTtlPW5jKHIsYSxlKSxlPUtsKE1hdGguZmxvb3Ioci9lKSplLE1hdGguZmxvb3IoYS9lKSplLGUpfXJldHVybiBlLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIG8odCxlKX0pKX1mdW5jdGlvbiBvKG4scil7dmFyIG89W10scz1bXTtyZXR1cm4oZnVuY3Rpb24gbChuLGkscil7dmFyIG8scyxsLGMsdSxoPW5ldyBBcnJheSxkPW5ldyBBcnJheTtvPXM9LTEsb19bKGw9blswXT49aSk8PDFdLmZvckVhY2gocCk7Zm9yKDsrK288dC0xOylvX1tsfChsPW5bbysxXT49aSk8PDFdLmZvckVhY2gocCk7b19bbDw8MF0uZm9yRWFjaChwKTtmb3IoOysrczxlLTE7KXtmb3Iobz0tMSxvX1sobD1uW3MqdCt0XT49aSk8PDF8KGM9bltzKnRdPj1pKTw8Ml0uZm9yRWFjaChwKTsrK288dC0xOyl1PWMsb19bbHwobD1uW3MqdCt0K28rMV0+PWkpPDwxfChjPW5bcyp0K28rMV0+PWkpPDwyfHU8PDNdLmZvckVhY2gocCk7b19bbHxjPDwzXS5mb3JFYWNoKHApfW89LTEsb19bKGM9bltzKnRdPj1pKTw8Ml0uZm9yRWFjaChwKTtmb3IoOysrbzx0LTE7KXU9YyxvX1soYz1uW3MqdCtvKzFdPj1pKTw8Mnx1PDwzXS5mb3JFYWNoKHApO2Z1bmN0aW9uIHAodCl7dmFyIGUsbixpPVt0WzBdWzBdK28sdFswXVsxXStzXSxsPVt0WzFdWzBdK28sdFsxXVsxXStzXSxjPWEoaSksdT1hKGwpOyhlPWRbY10pPyhuPWhbdV0pPyhkZWxldGUgZFtlLmVuZF0sZGVsZXRlIGhbbi5zdGFydF0sZT09PW4/KGUucmluZy5wdXNoKGwpLHIoZS5yaW5nKSk6aFtlLnN0YXJ0XT1kW24uZW5kXT17c3RhcnQ6ZS5zdGFydCxlbmQ6bi5lbmQscmluZzplLnJpbmcuY29uY2F0KG4ucmluZyl9KTooZGVsZXRlIGRbZS5lbmRdLGUucmluZy5wdXNoKGwpLGRbZS5lbmQ9dV09ZSk6KGU9aFt1XSk/KG49ZFtjXSk/KGRlbGV0ZSBoW2Uuc3RhcnRdLGRlbGV0ZSBkW24uZW5kXSxlPT09bj8oZS5yaW5nLnB1c2gobCkscihlLnJpbmcpKTpoW24uc3RhcnRdPWRbZS5lbmRdPXtzdGFydDpuLnN0YXJ0LGVuZDplLmVuZCxyaW5nOm4ucmluZy5jb25jYXQoZS5yaW5nKX0pOihkZWxldGUgaFtlLnN0YXJ0XSxlLnJpbmcudW5zaGlmdChpKSxoW2Uuc3RhcnQ9Y109ZSk6aFtjXT1kW3VdPXtzdGFydDpjLGVuZDp1LHJpbmc6W2ksbF19fW9fW2M8PDNdLmZvckVhY2gocCl9KShuLHIsKGZ1bmN0aW9uKHQpe2kodCxuLHIpLChmdW5jdGlvbiBlKHQpe2Zvcih2YXIgZT0wLG49dC5sZW5ndGgsaT10W24tMV1bMV0qdFswXVswXS10W24tMV1bMF0qdFswXVsxXTsrK2U8bjspaSs9dFtlLTFdWzFdKnRbZV1bMF0tdFtlLTFdWzBdKnRbZV1bMV07cmV0dXJuIGl9KSh0KT4wP28ucHVzaChbdF0pOnMucHVzaCh0KX0pKSxzLmZvckVhY2goKGZ1bmN0aW9uKHQpe2Zvcih2YXIgZSxuPTAsaT1vLmxlbmd0aDtuPGk7KytuKWlmKC0xIT09ZV8oKGU9b1tuXSlbMF0sdCkpcmV0dXJuIHZvaWQgZS5wdXNoKHQpfSkpLHt0eXBlOiJNdWx0aVBvbHlnb24iLHZhbHVlOnIsY29vcmRpbmF0ZXM6b319ZnVuY3Rpb24gYShlKXtyZXR1cm4gMiplWzBdK2VbMV0qKHQrMSkqNH1mdW5jdGlvbiBzKG4saSxyKXtuLmZvckVhY2goKGZ1bmN0aW9uKG4pe3ZhciBvLGE9blswXSxzPW5bMV0sbD0wfGEsYz0wfHMsdT1pW2MqdCtsXTthPjAmJmE8dCYmbD09PWEmJihuWzBdPWErKHItKG89aVtjKnQrbC0xXSkpLyh1LW8pLS41KSxzPjAmJnM8ZSYmYz09PXMmJihuWzFdPXMrKHItKG89aVsoYy0xKSp0K2xdKSkvKHUtbyktLjUpfSkpfXJldHVybiByLmNvbnRvdXI9byxyLnNpemU9ZnVuY3Rpb24obil7aWYoIWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuW3QsZV07dmFyIGk9TWF0aC5jZWlsKG5bMF0pLG89TWF0aC5jZWlsKG5bMV0pO2lmKCEoaT4wJiZvPjApKXRocm93IG5ldyBFcnJvcigiaW52YWxpZCBzaXplIik7cmV0dXJuIHQ9aSxlPW8scn0sci50aHJlc2hvbGRzPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6QXJyYXkuaXNBcnJheSh0KT90XyhKZy5jYWxsKHQpKTp0Xyh0KSxyKTpufSxyLnNtb290aD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT10P3M6cl8scik6aT09PXN9LHJ9ZnVuY3Rpb24gc18odCxlLG4pe2Zvcih2YXIgaT10LndpZHRoLHI9dC5oZWlnaHQsbz0xKyhuPDwxKSxhPTA7YTxyOysrYSlmb3IodmFyIHM9MCxsPTA7czxpK247KytzKXM8aSYmKGwrPXQuZGF0YVtzK2EqaV0pLHM+PW4mJihzPj1vJiYobC09dC5kYXRhW3MtbythKmldKSxlLmRhdGFbcy1uK2EqaV09bC9NYXRoLm1pbihzKzEsaS0xK28tcyxvKSl9ZnVuY3Rpb24gbF8odCxlLG4pe2Zvcih2YXIgaT10LndpZHRoLHI9dC5oZWlnaHQsbz0xKyhuPDwxKSxhPTA7YTxpOysrYSlmb3IodmFyIHM9MCxsPTA7czxyK247KytzKXM8ciYmKGwrPXQuZGF0YVthK3MqaV0pLHM+PW4mJihzPj1vJiYobC09dC5kYXRhW2ErKHMtbykqaV0pLGUuZGF0YVthKyhzLW4pKmldPWwvTWF0aC5taW4ocysxLHItMStvLXMsbykpfWZ1bmN0aW9uIGNfKHQpe3JldHVybiB0WzBdfWZ1bmN0aW9uIHVfKHQpe3JldHVybiB0WzFdfWZ1bmN0aW9uIGhfKCl7cmV0dXJuIDF9dmFyIGRfPXt9LHBfPXt9O2Z1bmN0aW9uIGZfKHQpe3JldHVybiBuZXcgRnVuY3Rpb24oImQiLCJyZXR1cm4geyIrdC5tYXAoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIEpTT04uc3RyaW5naWZ5KHQpKyI6IGRbIitlKyddIHx8ICIiJ30pKS5qb2luKCIsIikrIn0iKX1mdW5jdGlvbiBtXyh0KXt2YXIgZT1PYmplY3QuY3JlYXRlKG51bGwpLG49W107cmV0dXJuIHQuZm9yRWFjaCgoZnVuY3Rpb24odCl7Zm9yKHZhciBpIGluIHQpaSBpbiBlfHxuLnB1c2goZVtpXT1pKX0pKSxufWZ1bmN0aW9uIGdfKHQsZSl7dmFyIG49dCsiIixpPW4ubGVuZ3RoO3JldHVybiBpPGU/bmV3IEFycmF5KGUtaSsxKS5qb2luKDApK246bn1mdW5jdGlvbiBfXyh0KXt2YXIgZT10LmdldFVUQ0hvdXJzKCksbj10LmdldFVUQ01pbnV0ZXMoKSxpPXQuZ2V0VVRDU2Vjb25kcygpLHI9dC5nZXRVVENNaWxsaXNlY29uZHMoKTtyZXR1cm4gaXNOYU4odCk/IkludmFsaWQgRGF0ZSI6KGZ1bmN0aW9uIG8odCl7cmV0dXJuIHQ8MD8iLSIrZ18oLXQsNik6dD45OTk5PyIrIitnXyh0LDYpOmdfKHQsNCl9KSh0LmdldFVUQ0Z1bGxZZWFyKCkpKyItIitnXyh0LmdldFVUQ01vbnRoKCkrMSwyKSsiLSIrZ18odC5nZXRVVENEYXRlKCksMikrKHI/IlQiK2dfKGUsMikrIjoiK2dfKG4sMikrIjoiK2dfKGksMikrIi4iK2dfKHIsMykrIloiOmk/IlQiK2dfKGUsMikrIjoiK2dfKG4sMikrIjoiK2dfKGksMikrIloiOm58fGU/IlQiK2dfKGUsMikrIjoiK2dfKG4sMikrIloiOiIiKX1mdW5jdGlvbiB5Xyh0KXt2YXIgZT1uZXcgUmVnRXhwKCdbIicrdCsiXG5ccl0iKSxuPXQuY2hhckNvZGVBdCgwKTtmdW5jdGlvbiBpKHQsZSl7dmFyIGkscj1bXSxvPXQubGVuZ3RoLGE9MCxzPTAsbD1vPD0wLGM9ITE7ZnVuY3Rpb24gdSgpe2lmKGwpcmV0dXJuIHBfO2lmKGMpcmV0dXJuIGM9ITEsZF87dmFyIGUsaSxyPWE7aWYoMzQ9PT10LmNoYXJDb2RlQXQocikpe2Zvcig7YSsrPG8mJjM0IT09dC5jaGFyQ29kZUF0KGEpfHwzND09PXQuY2hhckNvZGVBdCgrK2EpOyk7cmV0dXJuKGU9YSk+PW8/bD0hMDoxMD09PShpPXQuY2hhckNvZGVBdChhKyspKT9jPSEwOjEzPT09aSYmKGM9ITAsMTA9PT10LmNoYXJDb2RlQXQoYSkmJisrYSksdC5zbGljZShyKzEsZS0xKS5yZXBsYWNlKC8iIi9nLCciJyl9Zm9yKDthPG87KXtpZigxMD09PShpPXQuY2hhckNvZGVBdChlPWErKykpKWM9ITA7ZWxzZSBpZigxMz09PWkpYz0hMCwxMD09PXQuY2hhckNvZGVBdChhKSYmKythO2Vsc2UgaWYoaSE9PW4pY29udGludWU7cmV0dXJuIHQuc2xpY2UocixlKX1yZXR1cm4gbD0hMCx0LnNsaWNlKHIsbyl9Zm9yKDEwPT09dC5jaGFyQ29kZUF0KG8tMSkmJi0tbywxMz09PXQuY2hhckNvZGVBdChvLTEpJiYtLW87KGk9dSgpKSE9PXBfOyl7Zm9yKHZhciBoPVtdO2khPT1kXyYmaSE9PXBfOyloLnB1c2goaSksaT11KCk7ZSYmbnVsbD09KGg9ZShoLHMrKykpfHxyLnB1c2goaCl9cmV0dXJuIHJ9ZnVuY3Rpb24gcihlLG4pe3JldHVybiBlLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIG4ubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gYShlW3RdKX0pKS5qb2luKHQpfSkpfWZ1bmN0aW9uIG8oZSl7cmV0dXJuIGUubWFwKGEpLmpvaW4odCl9ZnVuY3Rpb24gYSh0KXtyZXR1cm4gbnVsbD09dD8iIjp0IGluc3RhbmNlb2YgRGF0ZT9fXyh0KTplLnRlc3QodCs9IiIpPyciJyt0LnJlcGxhY2UoLyIvZywnIiInKSsnIic6dH1yZXR1cm57cGFyc2U6ZnVuY3Rpb24gcyh0LGUpe3ZhciBuLHIsbz1pKHQsKGZ1bmN0aW9uKHQsaSl7aWYobilyZXR1cm4gbih0LGktMSk7cj10LG49ZT8oZnVuY3Rpb24gbyh0LGUpe3ZhciBuPWZfKHQpO3JldHVybiBmdW5jdGlvbihpLHIpe3JldHVybiBlKG4oaSkscix0KX19KSh0LGUpOmZfKHQpfSkpO3JldHVybiBvLmNvbHVtbnM9cnx8W10sb30scGFyc2VSb3dzOmksZm9ybWF0OmZ1bmN0aW9uIGwoZSxuKXtyZXR1cm4gbnVsbD09biYmKG49bV8oZSkpLFtuLm1hcChhKS5qb2luKHQpXS5jb25jYXQocihlLG4pKS5qb2luKCJcbiIpfSxmb3JtYXRCb2R5OmZ1bmN0aW9uIGModCxlKXtyZXR1cm4gbnVsbD09ZSYmKGU9bV8odCkpLHIodCxlKS5qb2luKCJcbiIpfSxmb3JtYXRSb3dzOmZ1bmN0aW9uIHUodCl7cmV0dXJuIHQubWFwKG8pLmpvaW4oIlxuIil9LGZvcm1hdFJvdzpvLGZvcm1hdFZhbHVlOmF9fXZhciB2Xz15XygiLCIpLGJfPXZfLnBhcnNlLHhfPXZfLnBhcnNlUm93cyx3Xz12Xy5mb3JtYXQsU189dl8uZm9ybWF0Qm9keSxNXz12Xy5mb3JtYXRSb3dzLEVfPXZfLmZvcm1hdFJvdyxUXz12Xy5mb3JtYXRWYWx1ZSxDXz15XygiXHQiKSxBXz1DXy5wYXJzZSxrXz1DXy5wYXJzZVJvd3MsTF89Q18uZm9ybWF0LFBfPUNfLmZvcm1hdEJvZHksTl89Q18uZm9ybWF0Um93cyxJXz1DXy5mb3JtYXRSb3csUl89Q18uZm9ybWF0VmFsdWU7dmFyIE9fPW5ldyBEYXRlKCIyMDE5LTAxLTAxVDAwOjAwIikuZ2V0SG91cnMoKXx8bmV3IERhdGUoIjIwMTktMDctMDFUMDA6MDAiKS5nZXRIb3VycygpO2Z1bmN0aW9uIHpfKHQpe2lmKCF0Lm9rKXRocm93IG5ldyBFcnJvcih0LnN0YXR1cysiICIrdC5zdGF0dXNUZXh0KTtyZXR1cm4gdC5ibG9iKCl9ZnVuY3Rpb24gRF8odCl7aWYoIXQub2spdGhyb3cgbmV3IEVycm9yKHQuc3RhdHVzKyIgIit0LnN0YXR1c1RleHQpO3JldHVybiB0LmFycmF5QnVmZmVyKCl9ZnVuY3Rpb24gQl8odCl7aWYoIXQub2spdGhyb3cgbmV3IEVycm9yKHQuc3RhdHVzKyIgIit0LnN0YXR1c1RleHQpO3JldHVybiB0LnRleHQoKX1mdW5jdGlvbiBIXyh0LGUpe3JldHVybiBmZXRjaCh0LGUpLnRoZW4oQl8pfWZ1bmN0aW9uIEZfKHQpe3JldHVybiBmdW5jdGlvbihlLG4saSl7cmV0dXJuIDI9PT1hcmd1bWVudHMubGVuZ3RoJiYiZnVuY3Rpb24iPT10eXBlb2YgbiYmKGk9bixuPXZvaWQgMCksSF8oZSxuKS50aGVuKChmdW5jdGlvbihlKXtyZXR1cm4gdChlLGkpfSkpfX12YXIgVl89Rl8oYl8pLFVfPUZfKEFfKTtmdW5jdGlvbiBqXyh0KXtpZighdC5vayl0aHJvdyBuZXcgRXJyb3IodC5zdGF0dXMrIiAiK3Quc3RhdHVzVGV4dCk7aWYoMjA0IT09dC5zdGF0dXMmJjIwNSE9PXQuc3RhdHVzKXJldHVybiB0Lmpzb24oKX1mdW5jdGlvbiBHXyh0KXtyZXR1cm4gZnVuY3Rpb24oZSxuKXtyZXR1cm4gSF8oZSxuKS50aGVuKChmdW5jdGlvbihlKXtyZXR1cm4obmV3IERPTVBhcnNlcikucGFyc2VGcm9tU3RyaW5nKGUsdCl9KSl9fXZhciBXXz1HXygiYXBwbGljYXRpb24veG1sIikscV89R18oInRleHQvaHRtbCIpLFlfPUdfKCJpbWFnZS9zdmcreG1sIik7ZnVuY3Rpb24gWF8odCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHR9fWZ1bmN0aW9uICRfKCl7cmV0dXJuIDFlLTYqKE1hdGgucmFuZG9tKCktLjUpfWZ1bmN0aW9uIEtfKHQsZSxuLGkpe2lmKGlzTmFOKGUpfHxpc05hTihuKSlyZXR1cm4gdDt2YXIgcixvLGEscyxsLGMsdSxoLGQscD10Ll9yb290LGY9e2RhdGE6aX0sbT10Ll94MCxnPXQuX3kwLF89dC5feDEseT10Ll95MTtpZighcClyZXR1cm4gdC5fcm9vdD1mLHQ7Zm9yKDtwLmxlbmd0aDspaWYoKGM9ZT49KG89KG0rXykvMikpP209bzpfPW8sKHU9bj49KGE9KGcreSkvMikpP2c9YTp5PWEscj1wLCEocD1wW2g9dTw8MXxjXSkpcmV0dXJuIHJbaF09Zix0O2lmKHM9K3QuX3guY2FsbChudWxsLHAuZGF0YSksbD0rdC5feS5jYWxsKG51bGwscC5kYXRhKSxlPT09cyYmbj09PWwpcmV0dXJuIGYubmV4dD1wLHI/cltoXT1mOnQuX3Jvb3Q9Zix0O2Rve3I9cj9yW2hdPW5ldyBBcnJheSg0KTp0Ll9yb290PW5ldyBBcnJheSg0KSwoYz1lPj0obz0obStfKS8yKSk/bT1vOl89bywodT1uPj0oYT0oZyt5KS8yKSk/Zz1hOnk9YX13aGlsZSgoaD11PDwxfGMpPT0oZD0obD49YSk8PDF8cz49bykpO3JldHVybiByW2RdPXAscltoXT1mLHR9ZnVuY3Rpb24gWl8odCxlLG4saSxyKXt0aGlzLm5vZGU9dCx0aGlzLngwPWUsdGhpcy55MD1uLHRoaXMueDE9aSx0aGlzLnkxPXJ9ZnVuY3Rpb24gSl8odCl7cmV0dXJuIHRbMF19ZnVuY3Rpb24gUV8odCl7cmV0dXJuIHRbMV19ZnVuY3Rpb24gdHkodCxlLG4pe3ZhciBpPW5ldyBleShudWxsPT1lP0pfOmUsbnVsbD09bj9RXzpuLE5hTixOYU4sTmFOLE5hTik7cmV0dXJuIG51bGw9PXQ/aTppLmFkZEFsbCh0KX1mdW5jdGlvbiBleSh0LGUsbixpLHIsbyl7dGhpcy5feD10LHRoaXMuX3k9ZSx0aGlzLl94MD1uLHRoaXMuX3kwPWksdGhpcy5feDE9cix0aGlzLl95MT1vLHRoaXMuX3Jvb3Q9dm9pZCAwfWZ1bmN0aW9uIG55KHQpe2Zvcih2YXIgZT17ZGF0YTp0LmRhdGF9LG49ZTt0PXQubmV4dDspbj1uLm5leHQ9e2RhdGE6dC5kYXRhfTtyZXR1cm4gZX12YXIgaXk9dHkucHJvdG90eXBlPWV5LnByb3RvdHlwZTtmdW5jdGlvbiByeSh0KXtyZXR1cm4gdC54K3Qudnh9ZnVuY3Rpb24gb3kodCl7cmV0dXJuIHQueSt0LnZ5fWZ1bmN0aW9uIGF5KHQpe3JldHVybiB0LmluZGV4fWZ1bmN0aW9uIHN5KHQsZSl7dmFyIG49dC5nZXQoZSk7aWYoIW4pdGhyb3cgbmV3IEVycm9yKCJtaXNzaW5nOiAiK2UpO3JldHVybiBufWZ1bmN0aW9uIGx5KHQpe3JldHVybiB0Lnh9ZnVuY3Rpb24gY3kodCl7cmV0dXJuIHQueX1peS5jb3B5PWZ1bmN0aW9uKCl7dmFyIHQsZSxuPW5ldyBleSh0aGlzLl94LHRoaXMuX3ksdGhpcy5feDAsdGhpcy5feTAsdGhpcy5feDEsdGhpcy5feTEpLGk9dGhpcy5fcm9vdDtpZighaSlyZXR1cm4gbjtpZighaS5sZW5ndGgpcmV0dXJuIG4uX3Jvb3Q9bnkoaSksbjtmb3IodD1be3NvdXJjZTppLHRhcmdldDpuLl9yb290PW5ldyBBcnJheSg0KX1dO2k9dC5wb3AoKTspZm9yKHZhciByPTA7cjw0OysrcikoZT1pLnNvdXJjZVtyXSkmJihlLmxlbmd0aD90LnB1c2goe3NvdXJjZTplLHRhcmdldDppLnRhcmdldFtyXT1uZXcgQXJyYXkoNCl9KTppLnRhcmdldFtyXT1ueShlKSk7cmV0dXJuIG59LGl5LmFkZD1mdW5jdGlvbiB1eSh0KXt2YXIgZT0rdGhpcy5feC5jYWxsKG51bGwsdCksbj0rdGhpcy5feS5jYWxsKG51bGwsdCk7cmV0dXJuIEtfKHRoaXMuY292ZXIoZSxuKSxlLG4sdCl9LGl5LmFkZEFsbD1mdW5jdGlvbiBoeSh0KXt2YXIgZSxuLGkscixvPXQubGVuZ3RoLGE9bmV3IEFycmF5KG8pLHM9bmV3IEFycmF5KG8pLGw9MS8wLGM9MS8wLHU9LTEvMCxoPS0xLzA7Zm9yKG49MDtuPG87KytuKWlzTmFOKGk9K3RoaXMuX3guY2FsbChudWxsLGU9dFtuXSkpfHxpc05hTihyPSt0aGlzLl95LmNhbGwobnVsbCxlKSl8fChhW25dPWksc1tuXT1yLGk8bCYmKGw9aSksaT51JiYodT1pKSxyPGMmJihjPXIpLHI+aCYmKGg9cikpO2lmKGw+dXx8Yz5oKXJldHVybiB0aGlzO2Zvcih0aGlzLmNvdmVyKGwsYykuY292ZXIodSxoKSxuPTA7bjxvOysrbilLXyh0aGlzLGFbbl0sc1tuXSx0W25dKTtyZXR1cm4gdGhpc30saXkuY292ZXI9ZnVuY3Rpb24gZHkodCxlKXtpZihpc05hTih0PSt0KXx8aXNOYU4oZT0rZSkpcmV0dXJuIHRoaXM7dmFyIG49dGhpcy5feDAsaT10aGlzLl95MCxyPXRoaXMuX3gxLG89dGhpcy5feTE7aWYoaXNOYU4obikpcj0obj1NYXRoLmZsb29yKHQpKSsxLG89KGk9TWF0aC5mbG9vcihlKSkrMTtlbHNle2Zvcih2YXIgYSxzLGw9ci1uLGM9dGhpcy5fcm9vdDtuPnR8fHQ+PXJ8fGk+ZXx8ZT49bzspc3dpdGNoKHM9KGU8aSk8PDF8dDxuLChhPW5ldyBBcnJheSg0KSlbc109YyxjPWEsbCo9MixzKXtjYXNlIDA6cj1uK2wsbz1pK2w7YnJlYWs7Y2FzZSAxOm49ci1sLG89aStsO2JyZWFrO2Nhc2UgMjpyPW4rbCxpPW8tbDticmVhaztjYXNlIDM6bj1yLWwsaT1vLWx9dGhpcy5fcm9vdCYmdGhpcy5fcm9vdC5sZW5ndGgmJih0aGlzLl9yb290PWMpfXJldHVybiB0aGlzLl94MD1uLHRoaXMuX3kwPWksdGhpcy5feDE9cix0aGlzLl95MT1vLHRoaXN9LGl5LmRhdGE9ZnVuY3Rpb24gcHkoKXt2YXIgdD1bXTtyZXR1cm4gdGhpcy52aXNpdCgoZnVuY3Rpb24oZSl7aWYoIWUubGVuZ3RoKWRve3QucHVzaChlLmRhdGEpfXdoaWxlKGU9ZS5uZXh0KX0pKSx0fSxpeS5leHRlbnQ9ZnVuY3Rpb24gZnkodCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5jb3ZlcigrdFswXVswXSwrdFswXVsxXSkuY292ZXIoK3RbMV1bMF0sK3RbMV1bMV0pOmlzTmFOKHRoaXMuX3gwKT92b2lkIDA6W1t0aGlzLl94MCx0aGlzLl95MF0sW3RoaXMuX3gxLHRoaXMuX3kxXV19LGl5LmZpbmQ9ZnVuY3Rpb24gbXkodCxlLG4pe3ZhciBpLHIsbyxhLHMsbCxjLHU9dGhpcy5feDAsaD10aGlzLl95MCxkPXRoaXMuX3gxLHA9dGhpcy5feTEsZj1bXSxtPXRoaXMuX3Jvb3Q7Zm9yKG0mJmYucHVzaChuZXcgWl8obSx1LGgsZCxwKSksbnVsbD09bj9uPTEvMDoodT10LW4saD1lLW4sZD10K24scD1lK24sbio9bik7bD1mLnBvcCgpOylpZighKCEobT1sLm5vZGUpfHwocj1sLngwKT5kfHwobz1sLnkwKT5wfHwoYT1sLngxKTx1fHwocz1sLnkxKTxoKSlpZihtLmxlbmd0aCl7dmFyIGc9KHIrYSkvMixfPShvK3MpLzI7Zi5wdXNoKG5ldyBaXyhtWzNdLGcsXyxhLHMpLG5ldyBaXyhtWzJdLHIsXyxnLHMpLG5ldyBaXyhtWzFdLGcsbyxhLF8pLG5ldyBaXyhtWzBdLHIsbyxnLF8pKSwoYz0oZT49Xyk8PDF8dD49ZykmJihsPWZbZi5sZW5ndGgtMV0sZltmLmxlbmd0aC0xXT1mW2YubGVuZ3RoLTEtY10sZltmLmxlbmd0aC0xLWNdPWwpfWVsc2V7dmFyIHk9dC0rdGhpcy5feC5jYWxsKG51bGwsbS5kYXRhKSx2PWUtK3RoaXMuX3kuY2FsbChudWxsLG0uZGF0YSksYj15Knkrdip2O2lmKGI8bil7dmFyIHg9TWF0aC5zcXJ0KG49Yik7dT10LXgsaD1lLXgsZD10K3gscD1lK3gsaT1tLmRhdGF9fXJldHVybiBpfSxpeS5yZW1vdmU9ZnVuY3Rpb24gZ3kodCl7aWYoaXNOYU4obz0rdGhpcy5feC5jYWxsKG51bGwsdCkpfHxpc05hTihhPSt0aGlzLl95LmNhbGwobnVsbCx0KSkpcmV0dXJuIHRoaXM7dmFyIGUsbixpLHIsbyxhLHMsbCxjLHUsaCxkLHA9dGhpcy5fcm9vdCxmPXRoaXMuX3gwLG09dGhpcy5feTAsZz10aGlzLl94MSxfPXRoaXMuX3kxO2lmKCFwKXJldHVybiB0aGlzO2lmKHAubGVuZ3RoKWZvcig7Oyl7aWYoKGM9bz49KHM9KGYrZykvMikpP2Y9czpnPXMsKHU9YT49KGw9KG0rXykvMikpP209bDpfPWwsZT1wLCEocD1wW2g9dTw8MXxjXSkpcmV0dXJuIHRoaXM7aWYoIXAubGVuZ3RoKWJyZWFrOyhlW2grMSYzXXx8ZVtoKzImM118fGVbaCszJjNdKSYmKG49ZSxkPWgpfWZvcig7cC5kYXRhIT09dDspaWYoaT1wLCEocD1wLm5leHQpKXJldHVybiB0aGlzO3JldHVybihyPXAubmV4dCkmJmRlbGV0ZSBwLm5leHQsaT8ocj9pLm5leHQ9cjpkZWxldGUgaS5uZXh0LHRoaXMpOmU/KHI/ZVtoXT1yOmRlbGV0ZSBlW2hdLChwPWVbMF18fGVbMV18fGVbMl18fGVbM10pJiZwPT09KGVbM118fGVbMl18fGVbMV18fGVbMF0pJiYhcC5sZW5ndGgmJihuP25bZF09cDp0aGlzLl9yb290PXApLHRoaXMpOih0aGlzLl9yb290PXIsdGhpcyl9LGl5LnJlbW92ZUFsbD1mdW5jdGlvbiBfeSh0KXtmb3IodmFyIGU9MCxuPXQubGVuZ3RoO2U8bjsrK2UpdGhpcy5yZW1vdmUodFtlXSk7cmV0dXJuIHRoaXN9LGl5LnJvb3Q9ZnVuY3Rpb24geXkoKXtyZXR1cm4gdGhpcy5fcm9vdH0saXkuc2l6ZT1mdW5jdGlvbiB2eSgpe3ZhciB0PTA7cmV0dXJuIHRoaXMudmlzaXQoKGZ1bmN0aW9uKGUpe2lmKCFlLmxlbmd0aClkb3srK3R9d2hpbGUoZT1lLm5leHQpfSkpLHR9LGl5LnZpc2l0PWZ1bmN0aW9uIGJ5KHQpe3ZhciBlLG4saSxyLG8sYSxzPVtdLGw9dGhpcy5fcm9vdDtmb3IobCYmcy5wdXNoKG5ldyBaXyhsLHRoaXMuX3gwLHRoaXMuX3kwLHRoaXMuX3gxLHRoaXMuX3kxKSk7ZT1zLnBvcCgpOylpZighdChsPWUubm9kZSxpPWUueDAscj1lLnkwLG89ZS54MSxhPWUueTEpJiZsLmxlbmd0aCl7dmFyIGM9KGkrbykvMix1PShyK2EpLzI7KG49bFszXSkmJnMucHVzaChuZXcgWl8obixjLHUsbyxhKSksKG49bFsyXSkmJnMucHVzaChuZXcgWl8obixpLHUsYyxhKSksKG49bFsxXSkmJnMucHVzaChuZXcgWl8obixjLHIsbyx1KSksKG49bFswXSkmJnMucHVzaChuZXcgWl8obixpLHIsYyx1KSl9cmV0dXJuIHRoaXN9LGl5LnZpc2l0QWZ0ZXI9ZnVuY3Rpb24geHkodCl7dmFyIGUsbj1bXSxpPVtdO2Zvcih0aGlzLl9yb290JiZuLnB1c2gobmV3IFpfKHRoaXMuX3Jvb3QsdGhpcy5feDAsdGhpcy5feTAsdGhpcy5feDEsdGhpcy5feTEpKTtlPW4ucG9wKCk7KXt2YXIgcj1lLm5vZGU7aWYoci5sZW5ndGgpe3ZhciBvLGE9ZS54MCxzPWUueTAsbD1lLngxLGM9ZS55MSx1PShhK2wpLzIsaD0ocytjKS8yOyhvPXJbMF0pJiZuLnB1c2gobmV3IFpfKG8sYSxzLHUsaCkpLChvPXJbMV0pJiZuLnB1c2gobmV3IFpfKG8sdSxzLGwsaCkpLChvPXJbMl0pJiZuLnB1c2gobmV3IFpfKG8sYSxoLHUsYykpLChvPXJbM10pJiZuLnB1c2gobmV3IFpfKG8sdSxoLGwsYykpfWkucHVzaChlKX1mb3IoO2U9aS5wb3AoKTspdChlLm5vZGUsZS54MCxlLnkwLGUueDEsZS55MSk7cmV0dXJuIHRoaXN9LGl5Lng9ZnVuY3Rpb24gd3kodCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHRoaXMuX3g9dCx0aGlzKTp0aGlzLl94fSxpeS55PWZ1bmN0aW9uIFN5KHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0aGlzLl95PXQsdGhpcyk6dGhpcy5feX07dmFyIE15PU1hdGguUEkqKDMtTWF0aC5zcXJ0KDUpKTtmdW5jdGlvbiBFeSh0LGUpe2lmKChuPSh0PWU/dC50b0V4cG9uZW50aWFsKGUtMSk6dC50b0V4cG9uZW50aWFsKCkpLmluZGV4T2YoImUiKSk8MClyZXR1cm4gbnVsbDt2YXIgbixpPXQuc2xpY2UoMCxuKTtyZXR1cm5baS5sZW5ndGg+MT9pWzBdK2kuc2xpY2UoMik6aSwrdC5zbGljZShuKzEpXX1mdW5jdGlvbiBUeSh0KXtyZXR1cm4odD1FeShNYXRoLmFicyh0KSkpP3RbMV06TmFOfXZhciBDeSxBeT0vXig/OiguKT8oWzw+PV5dKSk/KFsrXC0oIF0pPyhbJCNdKT8oMCk/KFxkKyk/KCwpPyhcLlxkKyk/KH4pPyhbYS16JV0pPyQvaTtmdW5jdGlvbiBreSh0KXtpZighKGU9QXkuZXhlYyh0KSkpdGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIGZvcm1hdDogIit0KTt2YXIgZTtyZXR1cm4gbmV3IEx5KHtmaWxsOmVbMV0sYWxpZ246ZVsyXSxzaWduOmVbM10sc3ltYm9sOmVbNF0semVybzplWzVdLHdpZHRoOmVbNl0sY29tbWE6ZVs3XSxwcmVjaXNpb246ZVs4XSYmZVs4XS5zbGljZSgxKSx0cmltOmVbOV0sdHlwZTplWzEwXX0pfWZ1bmN0aW9uIEx5KHQpe3RoaXMuZmlsbD12b2lkIDA9PT10LmZpbGw/IiAiOnQuZmlsbCsiIix0aGlzLmFsaWduPXZvaWQgMD09PXQuYWxpZ24/Ij4iOnQuYWxpZ24rIiIsdGhpcy5zaWduPXZvaWQgMD09PXQuc2lnbj8iLSI6dC5zaWduKyIiLHRoaXMuc3ltYm9sPXZvaWQgMD09PXQuc3ltYm9sPyIiOnQuc3ltYm9sKyIiLHRoaXMuemVybz0hIXQuemVybyx0aGlzLndpZHRoPXZvaWQgMD09PXQud2lkdGg/dm9pZCAwOit0LndpZHRoLHRoaXMuY29tbWE9ISF0LmNvbW1hLHRoaXMucHJlY2lzaW9uPXZvaWQgMD09PXQucHJlY2lzaW9uP3ZvaWQgMDordC5wcmVjaXNpb24sdGhpcy50cmltPSEhdC50cmltLHRoaXMudHlwZT12b2lkIDA9PT10LnR5cGU/IiI6dC50eXBlKyIifWZ1bmN0aW9uIFB5KHQsZSl7dmFyIG49RXkodCxlKTtpZighbilyZXR1cm4gdCsiIjt2YXIgaT1uWzBdLHI9blsxXTtyZXR1cm4gcjwwPyIwLiIrbmV3IEFycmF5KC1yKS5qb2luKCIwIikraTppLmxlbmd0aD5yKzE/aS5zbGljZSgwLHIrMSkrIi4iK2kuc2xpY2UocisxKTppK25ldyBBcnJheShyLWkubGVuZ3RoKzIpLmpvaW4oIjAiKX1reS5wcm90b3R5cGU9THkucHJvdG90eXBlLEx5LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmZpbGwrdGhpcy5hbGlnbit0aGlzLnNpZ24rdGhpcy5zeW1ib2wrKHRoaXMuemVybz8iMCI6IiIpKyh2b2lkIDA9PT10aGlzLndpZHRoPyIiOk1hdGgubWF4KDEsMHx0aGlzLndpZHRoKSkrKHRoaXMuY29tbWE/IiwiOiIiKSsodm9pZCAwPT09dGhpcy5wcmVjaXNpb24/IiI6Ii4iK01hdGgubWF4KDAsMHx0aGlzLnByZWNpc2lvbikpKyh0aGlzLnRyaW0/In4iOiIiKSt0aGlzLnR5cGV9O3ZhciBOeT17IiUiOmZ1bmN0aW9uKHQsZSl7cmV0dXJuKDEwMCp0KS50b0ZpeGVkKGUpfSxiOmZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLnJvdW5kKHQpLnRvU3RyaW5nKDIpfSxjOmZ1bmN0aW9uKHQpe3JldHVybiB0KyIifSxkOmZ1bmN0aW9uIEl5KHQpe3JldHVybiBNYXRoLmFicyh0PU1hdGgucm91bmQodCkpPj0xZTIxP3QudG9Mb2NhbGVTdHJpbmcoImVuIikucmVwbGFjZSgvLC9nLCIiKTp0LnRvU3RyaW5nKDEwKX0sZTpmdW5jdGlvbih0LGUpe3JldHVybiB0LnRvRXhwb25lbnRpYWwoZSl9LGY6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC50b0ZpeGVkKGUpfSxnOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQudG9QcmVjaXNpb24oZSl9LG86ZnVuY3Rpb24odCl7cmV0dXJuIE1hdGgucm91bmQodCkudG9TdHJpbmcoOCl9LHA6ZnVuY3Rpb24odCxlKXtyZXR1cm4gUHkoMTAwKnQsZSl9LHI6UHksczpmdW5jdGlvbiBSeSh0LGUpe3ZhciBuPUV5KHQsZSk7aWYoIW4pcmV0dXJuIHQrIiI7dmFyIGk9blswXSxyPW5bMV0sbz1yLShDeT0zKk1hdGgubWF4KC04LE1hdGgubWluKDgsTWF0aC5mbG9vcihyLzMpKSkpKzEsYT1pLmxlbmd0aDtyZXR1cm4gbz09PWE/aTpvPmE/aStuZXcgQXJyYXkoby1hKzEpLmpvaW4oIjAiKTpvPjA/aS5zbGljZSgwLG8pKyIuIitpLnNsaWNlKG8pOiIwLiIrbmV3IEFycmF5KDEtbykuam9pbigiMCIpK0V5KHQsTWF0aC5tYXgoMCxlK28tMSkpWzBdfSxYOmZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLnJvdW5kKHQpLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpfSx4OmZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLnJvdW5kKHQpLnRvU3RyaW5nKDE2KX19O2Z1bmN0aW9uIE95KHQpe3JldHVybiB0fXZhciB6eSxEeSxCeSxIeT1BcnJheS5wcm90b3R5cGUubWFwLEZ5PVsieSIsInoiLCJhIiwiZiIsInAiLCJuIiwiwrUiLCJtIiwiIiwiayIsIk0iLCJHIiwiVCIsIlAiLCJFIiwiWiIsIlkiXTtmdW5jdGlvbiBWeSh0KXt2YXIgZT12b2lkIDA9PT10Lmdyb3VwaW5nfHx2b2lkIDA9PT10LnRob3VzYW5kcz9PeTooZnVuY3Rpb24gbih0LGUpe3JldHVybiBmdW5jdGlvbihuLGkpe2Zvcih2YXIgcj1uLmxlbmd0aCxvPVtdLGE9MCxzPXRbMF0sbD0wO3I+MCYmcz4wJiYobCtzKzE+aSYmKHM9TWF0aC5tYXgoMSxpLWwpKSxvLnB1c2gobi5zdWJzdHJpbmcoci09cyxyK3MpKSwhKChsKz1zKzEpPmkpKTspcz10W2E9KGErMSkldC5sZW5ndGhdO3JldHVybiBvLnJldmVyc2UoKS5qb2luKGUpfX0pKEh5LmNhbGwodC5ncm91cGluZyxOdW1iZXIpLHQudGhvdXNhbmRzKyIiKSxpPXZvaWQgMD09PXQuY3VycmVuY3k/IiI6dC5jdXJyZW5jeVswXSsiIixyPXZvaWQgMD09PXQuY3VycmVuY3k/IiI6dC5jdXJyZW5jeVsxXSsiIixvPXZvaWQgMD09PXQuZGVjaW1hbD8iLiI6dC5kZWNpbWFsKyIiLGE9dm9pZCAwPT09dC5udW1lcmFscz9PeTooZnVuY3Rpb24gcyh0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIGUucmVwbGFjZSgvWzAtOV0vZywoZnVuY3Rpb24oZSl7cmV0dXJuIHRbK2VdfSkpfX0pKEh5LmNhbGwodC5udW1lcmFscyxTdHJpbmcpKSxsPXZvaWQgMD09PXQucGVyY2VudD8iJSI6dC5wZXJjZW50KyIiLGM9dm9pZCAwPT09dC5taW51cz8iLSI6dC5taW51cysiIix1PXZvaWQgMD09PXQubmFuPyJOYU4iOnQubmFuKyIiO2Z1bmN0aW9uIGgodCl7dmFyIG49KHQ9a3kodCkpLmZpbGwscz10LmFsaWduLGg9dC5zaWduLGQ9dC5zeW1ib2wscD10Lnplcm8sZj10LndpZHRoLG09dC5jb21tYSxnPXQucHJlY2lzaW9uLF89dC50cmltLHk9dC50eXBlOyJuIj09PXk/KG09ITAseT0iZyIpOk55W3ldfHwodm9pZCAwPT09ZyYmKGc9MTIpLF89ITAseT0iZyIpLChwfHwiMCI9PT1uJiYiPSI9PT1zKSYmKHA9ITAsbj0iMCIscz0iPSIpO3ZhciB2PSIkIj09PWQ/aToiIyI9PT1kJiYvW2JveFhdLy50ZXN0KHkpPyIwIit5LnRvTG93ZXJDYXNlKCk6IiIsYj0iJCI9PT1kP3I6L1slcF0vLnRlc3QoeSk/bDoiIix4PU55W3ldLHc9L1tkZWZncHJzJV0vLnRlc3QoeSk7ZnVuY3Rpb24gUyh0KXt2YXIgaSxyLGwsZD12LFM9YjtpZigiYyI9PT15KVM9eCh0KStTLHQ9IiI7ZWxzZXt2YXIgTT0odD0rdCk8MHx8MS90PDA7aWYodD1pc05hTih0KT91OngoTWF0aC5hYnModCksZyksXyYmKHQ9KGZ1bmN0aW9uIEUodCl7dDpmb3IodmFyIGUsbj10Lmxlbmd0aCxpPTEscj0tMTtpPG47KytpKXN3aXRjaCh0W2ldKXtjYXNlIi4iOnI9ZT1pO2JyZWFrO2Nhc2UiMCI6MD09PXImJihyPWkpLGU9aTticmVhaztkZWZhdWx0OmlmKCErdFtpXSlicmVhayB0O3I+MCYmKHI9MCl9cmV0dXJuIHI+MD90LnNsaWNlKDAscikrdC5zbGljZShlKzEpOnR9KSh0KSksTSYmMD09K3QmJiIrIiE9PWgmJihNPSExKSxkPShNPyIoIj09PWg/aDpjOiItIj09PWh8fCIoIj09PWg/IiI6aCkrZCxTPSgicyI9PT15P0Z5WzgrQ3kvM106IiIpK1MrKE0mJiIoIj09PWg/IikiOiIiKSx3KWZvcihpPS0xLHI9dC5sZW5ndGg7KytpPHI7KWlmKDQ4PihsPXQuY2hhckNvZGVBdChpKSl8fGw+NTcpe1M9KDQ2PT09bD9vK3Quc2xpY2UoaSsxKTp0LnNsaWNlKGkpKStTLHQ9dC5zbGljZSgwLGkpO2JyZWFrfX1tJiYhcCYmKHQ9ZSh0LDEvMCkpO3ZhciBUPWQubGVuZ3RoK3QubGVuZ3RoK1MubGVuZ3RoLEM9VDxmP25ldyBBcnJheShmLVQrMSkuam9pbihuKToiIjtzd2l0Y2gobSYmcCYmKHQ9ZShDK3QsQy5sZW5ndGg/Zi1TLmxlbmd0aDoxLzApLEM9IiIpLHMpe2Nhc2UiPCI6dD1kK3QrUytDO2JyZWFrO2Nhc2UiPSI6dD1kK0MrdCtTO2JyZWFrO2Nhc2UiXiI6dD1DLnNsaWNlKDAsVD1DLmxlbmd0aD4+MSkrZCt0K1MrQy5zbGljZShUKTticmVhaztkZWZhdWx0OnQ9QytkK3QrU31yZXR1cm4gYSh0KX1yZXR1cm4gZz12b2lkIDA9PT1nPzY6L1tncHJzXS8udGVzdCh5KT9NYXRoLm1heCgxLE1hdGgubWluKDIxLGcpKTpNYXRoLm1heCgwLE1hdGgubWluKDIwLGcpKSxTLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHQrIiJ9LFN9cmV0dXJue2Zvcm1hdDpoLGZvcm1hdFByZWZpeDpmdW5jdGlvbiBkKHQsZSl7dmFyIG49aCgoKHQ9a3kodCkpLnR5cGU9ImYiLHQpKSxpPTMqTWF0aC5tYXgoLTgsTWF0aC5taW4oOCxNYXRoLmZsb29yKFR5KGUpLzMpKSkscj1NYXRoLnBvdygxMCwtaSksbz1GeVs4K2kvM107cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBuKHIqdCkrb319fX1mdW5jdGlvbiBVeSh0KXtyZXR1cm4genk9VnkodCksRHk9enkuZm9ybWF0LEJ5PXp5LmZvcm1hdFByZWZpeCx6eX1mdW5jdGlvbiBqeSh0KXtyZXR1cm4gTWF0aC5tYXgoMCwtVHkoTWF0aC5hYnModCkpKX1mdW5jdGlvbiBHeSh0LGUpe3JldHVybiBNYXRoLm1heCgwLDMqTWF0aC5tYXgoLTgsTWF0aC5taW4oOCxNYXRoLmZsb29yKFR5KGUpLzMpKSktVHkoTWF0aC5hYnModCkpKX1mdW5jdGlvbiBXeSh0LGUpe3JldHVybiB0PU1hdGguYWJzKHQpLGU9TWF0aC5hYnMoZSktdCxNYXRoLm1heCgwLFR5KGUpLVR5KHQpKSsxfWZ1bmN0aW9uIHF5KCl7cmV0dXJuIG5ldyBZeX1mdW5jdGlvbiBZeSgpe3RoaXMucmVzZXQoKX1VeSh7ZGVjaW1hbDoiLiIsdGhvdXNhbmRzOiIsIixncm91cGluZzpbM10sY3VycmVuY3k6WyIkIiwiIl0sbWludXM6Ii0ifSksWXkucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpZeSxyZXNldDpmdW5jdGlvbigpe3RoaXMucz10aGlzLnQ9MH0sYWRkOmZ1bmN0aW9uKHQpeyR5KFh5LHQsdGhpcy50KSwkeSh0aGlzLFh5LnMsdGhpcy5zKSx0aGlzLnM/dGhpcy50Kz1YeS50OnRoaXMucz1YeS50fSx2YWx1ZU9mOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc319O3ZhciBYeT1uZXcgWXk7ZnVuY3Rpb24gJHkodCxlLG4pe3ZhciBpPXQucz1lK24scj1pLWU7dC50PWUtKGktcikrKG4tcil9dmFyIEt5PTFlLTYsWnk9MWUtMTIsSnk9TWF0aC5QSSxReT1KeS8yLHR2PUp5LzQsZXY9MipKeSxudj0xODAvSnksaXY9SnkvMTgwLHJ2PU1hdGguYWJzLG92PU1hdGguYXRhbixhdj1NYXRoLmF0YW4yLHN2PU1hdGguY29zLGx2PU1hdGguY2VpbCxjdj1NYXRoLmV4cCx1dj1NYXRoLmxvZyxodj1NYXRoLnBvdyxkdj1NYXRoLnNpbixwdj1NYXRoLnNpZ258fGZ1bmN0aW9uKHQpe3JldHVybiB0PjA/MTp0PDA/LTE6MH0sZnY9TWF0aC5zcXJ0LG12PU1hdGgudGFuO2Z1bmN0aW9uIGd2KHQpe3JldHVybiB0PjE/MDp0PC0xP0p5Ok1hdGguYWNvcyh0KX1mdW5jdGlvbiBfdih0KXtyZXR1cm4gdD4xP1F5OnQ8LTE/LVF5Ok1hdGguYXNpbih0KX1mdW5jdGlvbiB5dih0KXtyZXR1cm4odD1kdih0LzIpKSp0fWZ1bmN0aW9uIHZ2KCl7fWZ1bmN0aW9uIGJ2KHQsZSl7dCYmd3YuaGFzT3duUHJvcGVydHkodC50eXBlKSYmd3ZbdC50eXBlXSh0LGUpfXZhciB4dj17RmVhdHVyZTpmdW5jdGlvbih0LGUpe2J2KHQuZ2VvbWV0cnksZSl9LEZlYXR1cmVDb2xsZWN0aW9uOmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuPXQuZmVhdHVyZXMsaT0tMSxyPW4ubGVuZ3RoOysraTxyOylidihuW2ldLmdlb21ldHJ5LGUpfX0sd3Y9e1NwaGVyZTpmdW5jdGlvbih0LGUpe2Uuc3BoZXJlKCl9LFBvaW50OmZ1bmN0aW9uKHQsZSl7ZS5wb2ludCgodD10LmNvb3JkaW5hdGVzKVswXSx0WzFdLHRbMl0pfSxNdWx0aVBvaW50OmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuPXQuY29vcmRpbmF0ZXMsaT0tMSxyPW4ubGVuZ3RoOysraTxyOyllLnBvaW50KCh0PW5baV0pWzBdLHRbMV0sdFsyXSl9LExpbmVTdHJpbmc6ZnVuY3Rpb24odCxlKXtTdih0LmNvb3JkaW5hdGVzLGUsMCl9LE11bHRpTGluZVN0cmluZzpmdW5jdGlvbih0LGUpe2Zvcih2YXIgbj10LmNvb3JkaW5hdGVzLGk9LTEscj1uLmxlbmd0aDsrK2k8cjspU3YobltpXSxlLDApfSxQb2x5Z29uOmZ1bmN0aW9uKHQsZSl7TXYodC5jb29yZGluYXRlcyxlKX0sTXVsdGlQb2x5Z29uOmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuPXQuY29vcmRpbmF0ZXMsaT0tMSxyPW4ubGVuZ3RoOysraTxyOylNdihuW2ldLGUpfSxHZW9tZXRyeUNvbGxlY3Rpb246ZnVuY3Rpb24odCxlKXtmb3IodmFyIG49dC5nZW9tZXRyaWVzLGk9LTEscj1uLmxlbmd0aDsrK2k8cjspYnYobltpXSxlKX19O2Z1bmN0aW9uIFN2KHQsZSxuKXt2YXIgaSxyPS0xLG89dC5sZW5ndGgtbjtmb3IoZS5saW5lU3RhcnQoKTsrK3I8bzspZS5wb2ludCgoaT10W3JdKVswXSxpWzFdLGlbMl0pO2UubGluZUVuZCgpfWZ1bmN0aW9uIE12KHQsZSl7dmFyIG49LTEsaT10Lmxlbmd0aDtmb3IoZS5wb2x5Z29uU3RhcnQoKTsrK248aTspU3YodFtuXSxlLDEpO2UucG9seWdvbkVuZCgpfWZ1bmN0aW9uIEV2KHQsZSl7dCYmeHYuaGFzT3duUHJvcGVydHkodC50eXBlKT94dlt0LnR5cGVdKHQsZSk6YnYodCxlKX12YXIgVHYsQ3YsQXYsa3YsTHYsUHY9cXkoKSxOdj1xeSgpLEl2PXtwb2ludDp2dixsaW5lU3RhcnQ6dnYsbGluZUVuZDp2dixwb2x5Z29uU3RhcnQ6ZnVuY3Rpb24oKXtQdi5yZXNldCgpLEl2LmxpbmVTdGFydD1SdixJdi5saW5lRW5kPU92fSxwb2x5Z29uRW5kOmZ1bmN0aW9uKCl7dmFyIHQ9K1B2O052LmFkZCh0PDA/ZXYrdDp0KSx0aGlzLmxpbmVTdGFydD10aGlzLmxpbmVFbmQ9dGhpcy5wb2ludD12dn0sc3BoZXJlOmZ1bmN0aW9uKCl7TnYuYWRkKGV2KX19O2Z1bmN0aW9uIFJ2KCl7SXYucG9pbnQ9enZ9ZnVuY3Rpb24gT3YoKXtEdihUdixDdil9ZnVuY3Rpb24genYodCxlKXtJdi5wb2ludD1EdixUdj10LEN2PWUsQXY9dCo9aXYsa3Y9c3YoZT0oZSo9aXYpLzIrdHYpLEx2PWR2KGUpfWZ1bmN0aW9uIER2KHQsZSl7dmFyIG49KHQqPWl2KS1BdixpPW4+PTA/MTotMSxyPWkqbixvPXN2KGU9KGUqPWl2KS8yK3R2KSxhPWR2KGUpLHM9THYqYSxsPWt2Km8rcypzdihyKSxjPXMqaSpkdihyKTtQdi5hZGQoYXYoYyxsKSksQXY9dCxrdj1vLEx2PWF9ZnVuY3Rpb24gQnYodCl7cmV0dXJuW2F2KHRbMV0sdFswXSksX3YodFsyXSldfWZ1bmN0aW9uIEh2KHQpe3ZhciBlPXRbMF0sbj10WzFdLGk9c3Yobik7cmV0dXJuW2kqc3YoZSksaSpkdihlKSxkdihuKV19ZnVuY3Rpb24gRnYodCxlKXtyZXR1cm4gdFswXSplWzBdK3RbMV0qZVsxXSt0WzJdKmVbMl19ZnVuY3Rpb24gVnYodCxlKXtyZXR1cm5bdFsxXSplWzJdLXRbMl0qZVsxXSx0WzJdKmVbMF0tdFswXSplWzJdLHRbMF0qZVsxXS10WzFdKmVbMF1dfWZ1bmN0aW9uIFV2KHQsZSl7dFswXSs9ZVswXSx0WzFdKz1lWzFdLHRbMl0rPWVbMl19ZnVuY3Rpb24ganYodCxlKXtyZXR1cm5bdFswXSplLHRbMV0qZSx0WzJdKmVdfWZ1bmN0aW9uIEd2KHQpe3ZhciBlPWZ2KHRbMF0qdFswXSt0WzFdKnRbMV0rdFsyXSp0WzJdKTt0WzBdLz1lLHRbMV0vPWUsdFsyXS89ZX12YXIgV3YscXYsWXYsWHYsJHYsS3YsWnYsSnYsUXYsdGIsZWIsbmIsaWIscmIsb2IsYWIsc2IsbGIsY2IsdWIsaGIsZGIscGIsZmIsbWIsZ2IsX2I9cXkoKSx5Yj17cG9pbnQ6dmIsbGluZVN0YXJ0OnhiLGxpbmVFbmQ6d2IscG9seWdvblN0YXJ0OmZ1bmN0aW9uKCl7eWIucG9pbnQ9U2IseWIubGluZVN0YXJ0PU1iLHliLmxpbmVFbmQ9RWIsX2IucmVzZXQoKSxJdi5wb2x5Z29uU3RhcnQoKX0scG9seWdvbkVuZDpmdW5jdGlvbigpe0l2LnBvbHlnb25FbmQoKSx5Yi5wb2ludD12Yix5Yi5saW5lU3RhcnQ9eGIseWIubGluZUVuZD13YixQdjwwPyhXdj0tKFl2PTE4MCkscXY9LShYdj05MCkpOl9iPkt5P1h2PTkwOl9iPC0xZS02JiYocXY9LTkwKSx0YlswXT1Xdix0YlsxXT1Zdn0sc3BoZXJlOmZ1bmN0aW9uKCl7V3Y9LShZdj0xODApLHF2PS0oWHY9OTApfX07ZnVuY3Rpb24gdmIodCxlKXtRdi5wdXNoKHRiPVtXdj10LFl2PXRdKSxlPHF2JiYocXY9ZSksZT5YdiYmKFh2PWUpfWZ1bmN0aW9uIGJiKHQsZSl7dmFyIG49SHYoW3QqaXYsZSppdl0pO2lmKEp2KXt2YXIgaT1WdihKdixuKSxyPVZ2KFtpWzFdLC1pWzBdLDBdLGkpO0d2KHIpLHI9QnYocik7dmFyIG8sYT10LSR2LHM9YT4wPzE6LTEsbD1yWzBdKm52KnMsYz1ydihhKT4xODA7Y14ocyokdjxsJiZsPHMqdCk/KG89clsxXSpudik+WHYmJihYdj1vKTpjXihzKiR2PChsPShsKzM2MCklMzYwLTE4MCkmJmw8cyp0KT8obz0tclsxXSpudik8cXYmJihxdj1vKTooZTxxdiYmKHF2PWUpLGU+WHYmJihYdj1lKSksYz90PCR2P1RiKFd2LHQpPlRiKFd2LFl2KSYmKFl2PXQpOlRiKHQsWXYpPlRiKFd2LFl2KSYmKFd2PXQpOll2Pj1Xdj8odDxXdiYmKFd2PXQpLHQ+WXYmJihZdj10KSk6dD4kdj9UYihXdix0KT5UYihXdixZdikmJihZdj10KTpUYih0LFl2KT5UYihXdixZdikmJihXdj10KX1lbHNlIFF2LnB1c2godGI9W1d2PXQsWXY9dF0pO2U8cXYmJihxdj1lKSxlPlh2JiYoWHY9ZSksSnY9biwkdj10fWZ1bmN0aW9uIHhiKCl7eWIucG9pbnQ9YmJ9ZnVuY3Rpb24gd2IoKXt0YlswXT1Xdix0YlsxXT1Zdix5Yi5wb2ludD12YixKdj1udWxsfWZ1bmN0aW9uIFNiKHQsZSl7aWYoSnYpe3ZhciBuPXQtJHY7X2IuYWRkKHJ2KG4pPjE4MD9uKyhuPjA/MzYwOi0zNjApOm4pfWVsc2UgS3Y9dCxadj1lO0l2LnBvaW50KHQsZSksYmIodCxlKX1mdW5jdGlvbiBNYigpe0l2LmxpbmVTdGFydCgpfWZ1bmN0aW9uIEViKCl7U2IoS3YsWnYpLEl2LmxpbmVFbmQoKSxydihfYik+S3kmJihXdj0tKFl2PTE4MCkpLHRiWzBdPVd2LHRiWzFdPVl2LEp2PW51bGx9ZnVuY3Rpb24gVGIodCxlKXtyZXR1cm4oZS09dCk8MD9lKzM2MDplfWZ1bmN0aW9uIENiKHQsZSl7cmV0dXJuIHRbMF0tZVswXX1mdW5jdGlvbiBBYih0LGUpe3JldHVybiB0WzBdPD10WzFdP3RbMF08PWUmJmU8PXRbMV06ZTx0WzBdfHx0WzFdPGV9dmFyIGtiPXtzcGhlcmU6dnYscG9pbnQ6TGIsbGluZVN0YXJ0Ok5iLGxpbmVFbmQ6T2IscG9seWdvblN0YXJ0OmZ1bmN0aW9uKCl7a2IubGluZVN0YXJ0PXpiLGtiLmxpbmVFbmQ9RGJ9LHBvbHlnb25FbmQ6ZnVuY3Rpb24oKXtrYi5saW5lU3RhcnQ9TmIsa2IubGluZUVuZD1PYn19O2Z1bmN0aW9uIExiKHQsZSl7dCo9aXY7dmFyIG49c3YoZSo9aXYpO1BiKG4qc3YodCksbipkdih0KSxkdihlKSl9ZnVuY3Rpb24gUGIodCxlLG4peysrZWIsaWIrPSh0LWliKS9lYixyYis9KGUtcmIpL2ViLG9iKz0obi1vYikvZWJ9ZnVuY3Rpb24gTmIoKXtrYi5wb2ludD1JYn1mdW5jdGlvbiBJYih0LGUpe3QqPWl2O3ZhciBuPXN2KGUqPWl2KTtmYj1uKnN2KHQpLG1iPW4qZHYodCksZ2I9ZHYoZSksa2IucG9pbnQ9UmIsUGIoZmIsbWIsZ2IpfWZ1bmN0aW9uIFJiKHQsZSl7dCo9aXY7dmFyIG49c3YoZSo9aXYpLGk9bipzdih0KSxyPW4qZHYodCksbz1kdihlKSxhPWF2KGZ2KChhPW1iKm8tZ2IqcikqYSsoYT1nYippLWZiKm8pKmErKGE9ZmIqci1tYippKSphKSxmYippK21iKnIrZ2Iqbyk7bmIrPWEsYWIrPWEqKGZiKyhmYj1pKSksc2IrPWEqKG1iKyhtYj1yKSksbGIrPWEqKGdiKyhnYj1vKSksUGIoZmIsbWIsZ2IpfWZ1bmN0aW9uIE9iKCl7a2IucG9pbnQ9TGJ9ZnVuY3Rpb24gemIoKXtrYi5wb2ludD1CYn1mdW5jdGlvbiBEYigpe0hiKGRiLHBiKSxrYi5wb2ludD1MYn1mdW5jdGlvbiBCYih0LGUpe2RiPXQscGI9ZSx0Kj1pdixlKj1pdixrYi5wb2ludD1IYjt2YXIgbj1zdihlKTtmYj1uKnN2KHQpLG1iPW4qZHYodCksZ2I9ZHYoZSksUGIoZmIsbWIsZ2IpfWZ1bmN0aW9uIEhiKHQsZSl7dCo9aXY7dmFyIG49c3YoZSo9aXYpLGk9bipzdih0KSxyPW4qZHYodCksbz1kdihlKSxhPW1iKm8tZ2IqcixzPWdiKmktZmIqbyxsPWZiKnItbWIqaSxjPWZ2KGEqYStzKnMrbCpsKSx1PV92KGMpLGg9YyYmLXUvYztjYis9aCphLHViKz1oKnMsaGIrPWgqbCxuYis9dSxhYis9dSooZmIrKGZiPWkpKSxzYis9dSoobWIrKG1iPXIpKSxsYis9dSooZ2IrKGdiPW8pKSxQYihmYixtYixnYil9ZnVuY3Rpb24gRmIodCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHR9fWZ1bmN0aW9uIFZiKHQsZSl7ZnVuY3Rpb24gbihuLGkpe3JldHVybiBuPXQobixpKSxlKG5bMF0sblsxXSl9cmV0dXJuIHQuaW52ZXJ0JiZlLmludmVydCYmKG4uaW52ZXJ0PWZ1bmN0aW9uKG4saSl7cmV0dXJuKG49ZS5pbnZlcnQobixpKSkmJnQuaW52ZXJ0KG5bMF0sblsxXSl9KSxufWZ1bmN0aW9uIFViKHQsZSl7cmV0dXJuW3J2KHQpPkp5P3QrTWF0aC5yb3VuZCgtdC9ldikqZXY6dCxlXX1mdW5jdGlvbiBqYih0LGUsbil7cmV0dXJuKHQlPWV2KT9lfHxuP1ZiKFdiKHQpLHFiKGUsbikpOldiKHQpOmV8fG4/cWIoZSxuKTpVYn1mdW5jdGlvbiBHYih0KXtyZXR1cm4gZnVuY3Rpb24oZSxuKXtyZXR1cm5bKGUrPXQpPkp5P2UtZXY6ZTwtSnk/ZStldjplLG5dfX1mdW5jdGlvbiBXYih0KXt2YXIgZT1HYih0KTtyZXR1cm4gZS5pbnZlcnQ9R2IoLXQpLGV9ZnVuY3Rpb24gcWIodCxlKXt2YXIgbj1zdih0KSxpPWR2KHQpLHI9c3YoZSksbz1kdihlKTtmdW5jdGlvbiBhKHQsZSl7dmFyIGE9c3YoZSkscz1zdih0KSphLGw9ZHYodCkqYSxjPWR2KGUpLHU9YypuK3MqaTtyZXR1cm5bYXYobCpyLXUqbyxzKm4tYyppKSxfdih1KnIrbCpvKV19cmV0dXJuIGEuaW52ZXJ0PWZ1bmN0aW9uKHQsZSl7dmFyIGE9c3YoZSkscz1zdih0KSphLGw9ZHYodCkqYSxjPWR2KGUpLHU9YypyLWwqbztyZXR1cm5bYXYobCpyK2MqbyxzKm4rdSppKSxfdih1Km4tcyppKV19LGF9ZnVuY3Rpb24gWWIodCl7ZnVuY3Rpb24gZShlKXtyZXR1cm4oZT10KGVbMF0qaXYsZVsxXSppdikpWzBdKj1udixlWzFdKj1udixlfXJldHVybiB0PWpiKHRbMF0qaXYsdFsxXSppdix0Lmxlbmd0aD4yP3RbMl0qaXY6MCksZS5pbnZlcnQ9ZnVuY3Rpb24oZSl7cmV0dXJuKGU9dC5pbnZlcnQoZVswXSppdixlWzFdKml2KSlbMF0qPW52LGVbMV0qPW52LGV9LGV9ZnVuY3Rpb24gWGIodCxlLG4saSxyLG8pe2lmKG4pe3ZhciBhPXN2KGUpLHM9ZHYoZSksbD1pKm47bnVsbD09cj8ocj1lK2kqZXYsbz1lLWwvMik6KHI9JGIoYSxyKSxvPSRiKGEsbyksKGk+MD9yPG86cj5vKSYmKHIrPWkqZXYpKTtmb3IodmFyIGMsdT1yO2k+MD91Pm86dTxvO3UtPWwpYz1CdihbYSwtcypzdih1KSwtcypkdih1KV0pLHQucG9pbnQoY1swXSxjWzFdKX19ZnVuY3Rpb24gJGIodCxlKXsoZT1IdihlKSlbMF0tPXQsR3YoZSk7dmFyIG49Z3YoLWVbMV0pO3JldHVybigoLWVbMl08MD8tbjpuKStldi1LeSklZXZ9ZnVuY3Rpb24gS2IoKXt2YXIgdCxlPVtdO3JldHVybntwb2ludDpmdW5jdGlvbihlLG4saSl7dC5wdXNoKFtlLG4saV0pfSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXtlLnB1c2godD1bXSl9LGxpbmVFbmQ6dnYscmVqb2luOmZ1bmN0aW9uKCl7ZS5sZW5ndGg+MSYmZS5wdXNoKGUucG9wKCkuY29uY2F0KGUuc2hpZnQoKSkpfSxyZXN1bHQ6ZnVuY3Rpb24oKXt2YXIgbj1lO3JldHVybiBlPVtdLHQ9bnVsbCxufX19ZnVuY3Rpb24gWmIodCxlKXtyZXR1cm4gcnYodFswXS1lWzBdKTxLeSYmcnYodFsxXS1lWzFdKTxLeX1mdW5jdGlvbiBKYih0LGUsbixpKXt0aGlzLng9dCx0aGlzLno9ZSx0aGlzLm89bix0aGlzLmU9aSx0aGlzLnY9ITEsdGhpcy5uPXRoaXMucD1udWxsfWZ1bmN0aW9uIFFiKHQsZSxuLGkscil7dmFyIG8sYSxzPVtdLGw9W107aWYodC5mb3JFYWNoKChmdW5jdGlvbih0KXtpZighKChlPXQubGVuZ3RoLTEpPD0wKSl7dmFyIGUsbixpPXRbMF0sYT10W2VdO2lmKFpiKGksYSkpe2lmKCFpWzJdJiYhYVsyXSl7Zm9yKHIubGluZVN0YXJ0KCksbz0wO288ZTsrK28pci5wb2ludCgoaT10W29dKVswXSxpWzFdKTtyZXR1cm4gdm9pZCByLmxpbmVFbmQoKX1hWzBdKz0yZS02fXMucHVzaChuPW5ldyBKYihpLHQsbnVsbCwhMCkpLGwucHVzaChuLm89bmV3IEpiKGksbnVsbCxuLCExKSkscy5wdXNoKG49bmV3IEpiKGEsdCxudWxsLCExKSksbC5wdXNoKG4ubz1uZXcgSmIoYSxudWxsLG4sITApKX19KSkscy5sZW5ndGgpe2ZvcihsLnNvcnQoZSksdHgocyksdHgobCksbz0wLGE9bC5sZW5ndGg7bzxhOysrbylsW29dLmU9bj0hbjtmb3IodmFyIGMsdSxoPXNbMF07Oyl7Zm9yKHZhciBkPWgscD0hMDtkLnY7KWlmKChkPWQubik9PT1oKXJldHVybjtjPWQueixyLmxpbmVTdGFydCgpO2Rve2lmKGQudj1kLm8udj0hMCxkLmUpe2lmKHApZm9yKG89MCxhPWMubGVuZ3RoO288YTsrK28pci5wb2ludCgodT1jW29dKVswXSx1WzFdKTtlbHNlIGkoZC54LGQubi54LDEscik7ZD1kLm59ZWxzZXtpZihwKWZvcihvPShjPWQucC56KS5sZW5ndGgtMTtvPj0wOy0tbylyLnBvaW50KCh1PWNbb10pWzBdLHVbMV0pO2Vsc2UgaShkLngsZC5wLngsLTEscik7ZD1kLnB9Yz0oZD1kLm8pLnoscD0hcH13aGlsZSghZC52KTtyLmxpbmVFbmQoKX19fWZ1bmN0aW9uIHR4KHQpe2lmKGU9dC5sZW5ndGgpe2Zvcih2YXIgZSxuLGk9MCxyPXRbMF07KytpPGU7KXIubj1uPXRbaV0sbi5wPXIscj1uO3Iubj1uPXRbMF0sbi5wPXJ9fVViLmludmVydD1VYjt2YXIgZXg9cXkoKTtmdW5jdGlvbiBueCh0KXtyZXR1cm4gcnYodFswXSk8PUp5P3RbMF06cHYodFswXSkqKChydih0WzBdKStKeSklZXYtSnkpfWZ1bmN0aW9uIGl4KHQsZSl7dmFyIG49bngoZSksaT1lWzFdLHI9ZHYoaSksbz1bZHYobiksLXN2KG4pLDBdLGE9MCxzPTA7ZXgucmVzZXQoKSwxPT09cj9pPVF5K0t5Oi0xPT09ciYmKGk9LVF5LUt5KTtmb3IodmFyIGw9MCxjPXQubGVuZ3RoO2w8YzsrK2wpaWYoaD0odT10W2xdKS5sZW5ndGgpZm9yKHZhciB1LGgsZD11W2gtMV0scD1ueChkKSxmPWRbMV0vMit0dixtPWR2KGYpLGc9c3YoZiksXz0wO188aDsrK18scD12LG09eCxnPXcsZD15KXt2YXIgeT11W19dLHY9bngoeSksYj15WzFdLzIrdHYseD1kdihiKSx3PXN2KGIpLFM9di1wLE09Uz49MD8xOi0xLEU9TSpTLFQ9RT5KeSxDPW0qeDtpZihleC5hZGQoYXYoQypNKmR2KEUpLGcqdytDKnN2KEUpKSksYSs9VD9TK00qZXY6UyxUXnA+PW5edj49bil7dmFyIEE9VnYoSHYoZCksSHYoeSkpO0d2KEEpO3ZhciBrPVZ2KG8sQSk7R3Yoayk7dmFyIEw9KFReUz49MD8tMToxKSpfdihrWzJdKTsoaT5MfHxpPT09TCYmKEFbMF18fEFbMV0pKSYmKHMrPVReUz49MD8xOi0xKX19cmV0dXJuKGE8LTFlLTZ8fGE8S3kmJmV4PC0xZS02KV4xJnN9ZnVuY3Rpb24gcngodCxlLG4saSl7cmV0dXJuIGZ1bmN0aW9uKHIpe3ZhciBvLGEscyxsPWUociksYz1LYigpLHU9ZShjKSxoPSExLGQ9e3BvaW50OnAsbGluZVN0YXJ0Om0sbGluZUVuZDpnLHBvbHlnb25TdGFydDpmdW5jdGlvbigpe2QucG9pbnQ9XyxkLmxpbmVTdGFydD15LGQubGluZUVuZD12LGE9W10sbz1bXX0scG9seWdvbkVuZDpmdW5jdGlvbigpe2QucG9pbnQ9cCxkLmxpbmVTdGFydD1tLGQubGluZUVuZD1nLGE9YWMoYSk7dmFyIHQ9aXgobyxpKTthLmxlbmd0aD8oaHx8KHIucG9seWdvblN0YXJ0KCksaD0hMCksUWIoYSxheCx0LG4scikpOnQmJihofHwoci5wb2x5Z29uU3RhcnQoKSxoPSEwKSxyLmxpbmVTdGFydCgpLG4obnVsbCxudWxsLDEsciksci5saW5lRW5kKCkpLGgmJihyLnBvbHlnb25FbmQoKSxoPSExKSxhPW89bnVsbH0sc3BoZXJlOmZ1bmN0aW9uKCl7ci5wb2x5Z29uU3RhcnQoKSxyLmxpbmVTdGFydCgpLG4obnVsbCxudWxsLDEsciksci5saW5lRW5kKCksci5wb2x5Z29uRW5kKCl9fTtmdW5jdGlvbiBwKGUsbil7dChlLG4pJiZyLnBvaW50KGUsbil9ZnVuY3Rpb24gZih0LGUpe2wucG9pbnQodCxlKX1mdW5jdGlvbiBtKCl7ZC5wb2ludD1mLGwubGluZVN0YXJ0KCl9ZnVuY3Rpb24gZygpe2QucG9pbnQ9cCxsLmxpbmVFbmQoKX1mdW5jdGlvbiBfKHQsZSl7cy5wdXNoKFt0LGVdKSx1LnBvaW50KHQsZSl9ZnVuY3Rpb24geSgpe3UubGluZVN0YXJ0KCkscz1bXX1mdW5jdGlvbiB2KCl7XyhzWzBdWzBdLHNbMF1bMV0pLHUubGluZUVuZCgpO3ZhciB0LGUsbixpLGw9dS5jbGVhbigpLGQ9Yy5yZXN1bHQoKSxwPWQubGVuZ3RoO2lmKHMucG9wKCksby5wdXNoKHMpLHM9bnVsbCxwKWlmKDEmbCl7aWYoKGU9KG49ZFswXSkubGVuZ3RoLTEpPjApe2ZvcihofHwoci5wb2x5Z29uU3RhcnQoKSxoPSEwKSxyLmxpbmVTdGFydCgpLHQ9MDt0PGU7Kyt0KXIucG9pbnQoKGk9blt0XSlbMF0saVsxXSk7ci5saW5lRW5kKCl9fWVsc2UgcD4xJiYyJmwmJmQucHVzaChkLnBvcCgpLmNvbmNhdChkLnNoaWZ0KCkpKSxhLnB1c2goZC5maWx0ZXIob3gpKX1yZXR1cm4gZH19ZnVuY3Rpb24gb3godCl7cmV0dXJuIHQubGVuZ3RoPjF9ZnVuY3Rpb24gYXgodCxlKXtyZXR1cm4oKHQ9dC54KVswXTwwP3RbMV0tUXktS3k6UXktdFsxXSktKChlPWUueClbMF08MD9lWzFdLVF5LUt5OlF5LWVbMV0pfXZhciBzeD1yeCgoZnVuY3Rpb24oKXtyZXR1cm4hMH0pLChmdW5jdGlvbiBseCh0KXt2YXIgZSxuPU5hTixpPU5hTixyPU5hTjtyZXR1cm57bGluZVN0YXJ0OmZ1bmN0aW9uKCl7dC5saW5lU3RhcnQoKSxlPTF9LHBvaW50OmZ1bmN0aW9uKG8sYSl7dmFyIHM9bz4wP0p5Oi1KeSxsPXJ2KG8tbik7cnYobC1KeSk8S3k/KHQucG9pbnQobixpPShpK2EpLzI+MD9ReTotUXkpLHQucG9pbnQocixpKSx0LmxpbmVFbmQoKSx0LmxpbmVTdGFydCgpLHQucG9pbnQocyxpKSx0LnBvaW50KG8saSksZT0wKTpyIT09cyYmbD49SnkmJihydihuLXIpPEt5JiYobi09cipLeSkscnYoby1zKTxLeSYmKG8tPXMqS3kpLGk9KGZ1bmN0aW9uIGModCxlLG4saSl7dmFyIHIsbyxhPWR2KHQtbik7cmV0dXJuIHJ2KGEpPkt5P292KChkdihlKSoobz1zdihpKSkqZHYobiktZHYoaSkqKHI9c3YoZSkpKmR2KHQpKS8ocipvKmEpKTooZStpKS8yfSkobixpLG8sYSksdC5wb2ludChyLGkpLHQubGluZUVuZCgpLHQubGluZVN0YXJ0KCksdC5wb2ludChzLGkpLGU9MCksdC5wb2ludChuPW8saT1hKSxyPXN9LGxpbmVFbmQ6ZnVuY3Rpb24oKXt0LmxpbmVFbmQoKSxuPWk9TmFOfSxjbGVhbjpmdW5jdGlvbigpe3JldHVybiAyLWV9fX0pLChmdW5jdGlvbiBjeCh0LGUsbixpKXt2YXIgcjtpZihudWxsPT10KWkucG9pbnQoLUp5LHI9bipReSksaS5wb2ludCgwLHIpLGkucG9pbnQoSnksciksaS5wb2ludChKeSwwKSxpLnBvaW50KEp5LC1yKSxpLnBvaW50KDAsLXIpLGkucG9pbnQoLUp5LC1yKSxpLnBvaW50KC1KeSwwKSxpLnBvaW50KC1KeSxyKTtlbHNlIGlmKHJ2KHRbMF0tZVswXSk+S3kpe3ZhciBvPXRbMF08ZVswXT9KeTotSnk7aS5wb2ludCgtbyxyPW4qby8yKSxpLnBvaW50KDAsciksaS5wb2ludChvLHIpfWVsc2UgaS5wb2ludChlWzBdLGVbMV0pfSksWy1KeSwtUXldKTtmdW5jdGlvbiB1eCh0KXt2YXIgZT1zdih0KSxuPTYqaXYsaT1lPjAscj1ydihlKT5LeTtmdW5jdGlvbiBvKHQsbil7cmV0dXJuIHN2KHQpKnN2KG4pPmV9ZnVuY3Rpb24gYSh0LG4saSl7dmFyIHI9WzEsMCwwXSxvPVZ2KEh2KHQpLEh2KG4pKSxhPUZ2KG8sbykscz1vWzBdLGw9YS1zKnM7aWYoIWwpcmV0dXJuIWkmJnQ7dmFyIGM9ZSphL2wsdT0tZSpzL2wsaD1WdihyLG8pLGQ9anYocixjKTtVdihkLGp2KG8sdSkpO3ZhciBwPWgsZj1GdihkLHApLG09RnYocCxwKSxnPWYqZi1tKihGdihkLGQpLTEpO2lmKCEoZzwwKSl7dmFyIF89ZnYoZykseT1qdihwLCgtZi1fKS9tKTtpZihVdih5LGQpLHk9QnYoeSksIWkpcmV0dXJuIHk7dmFyIHYsYj10WzBdLHg9blswXSx3PXRbMV0sUz1uWzFdO3g8YiYmKHY9YixiPXgseD12KTt2YXIgTT14LWIsRT1ydihNLUp5KTxLeTtpZighRSYmUzx3JiYodj13LHc9UyxTPXYpLEV8fE08S3k/RT93K1M+MF55WzFdPChydih5WzBdLWIpPEt5P3c6Uyk6dzw9eVsxXSYmeVsxXTw9UzpNPkp5XihiPD15WzBdJiZ5WzBdPD14KSl7dmFyIFQ9anYocCwoLWYrXykvbSk7cmV0dXJuIFV2KFQsZCksW3ksQnYoVCldfX19ZnVuY3Rpb24gcyhlLG4pe3ZhciByPWk/dDpKeS10LG89MDtyZXR1cm4gZTwtcj9vfD0xOmU+ciYmKG98PTIpLG48LXI/b3w9NDpuPnImJihvfD04KSxvfXJldHVybiByeChvLChmdW5jdGlvbiBsKHQpe3ZhciBlLG4sbCxjLHU7cmV0dXJue2xpbmVTdGFydDpmdW5jdGlvbigpe2M9bD0hMSx1PTF9LHBvaW50OmZ1bmN0aW9uKGgsZCl7dmFyIHAsZj1baCxkXSxtPW8oaCxkKSxnPWk/bT8wOnMoaCxkKTptP3MoaCsoaDwwP0p5Oi1KeSksZCk6MDtpZighZSYmKGM9bD1tKSYmdC5saW5lU3RhcnQoKSxtIT09bCYmKCEocD1hKGUsZikpfHxaYihlLHApfHxaYihmLHApKSYmKGZbMl09MSksbSE9PWwpdT0wLG0/KHQubGluZVN0YXJ0KCkscD1hKGYsZSksdC5wb2ludChwWzBdLHBbMV0pKToocD1hKGUsZiksdC5wb2ludChwWzBdLHBbMV0sMiksdC5saW5lRW5kKCkpLGU9cDtlbHNlIGlmKHImJmUmJmlebSl7dmFyIF87ZyZufHwhKF89YShmLGUsITApKXx8KHU9MCxpPyh0LmxpbmVTdGFydCgpLHQucG9pbnQoX1swXVswXSxfWzBdWzFdKSx0LnBvaW50KF9bMV1bMF0sX1sxXVsxXSksdC5saW5lRW5kKCkpOih0LnBvaW50KF9bMV1bMF0sX1sxXVsxXSksdC5saW5lRW5kKCksdC5saW5lU3RhcnQoKSx0LnBvaW50KF9bMF1bMF0sX1swXVsxXSwzKSkpfSFtfHxlJiZaYihlLGYpfHx0LnBvaW50KGZbMF0sZlsxXSksZT1mLGw9bSxuPWd9LGxpbmVFbmQ6ZnVuY3Rpb24oKXtsJiZ0LmxpbmVFbmQoKSxlPW51bGx9LGNsZWFuOmZ1bmN0aW9uKCl7cmV0dXJuIHV8KGMmJmwpPDwxfX19KSwoZnVuY3Rpb24gYyhlLGkscixvKXtYYihvLHQsbixyLGUsaSl9KSxpP1swLC10XTpbLUp5LHQtSnldKX12YXIgaHg9MWU5LGR4PS1oeDtmdW5jdGlvbiBweCh0LGUsbixpKXtmdW5jdGlvbiByKHIsbyl7cmV0dXJuIHQ8PXImJnI8PW4mJmU8PW8mJm88PWl9ZnVuY3Rpb24gbyhyLG8scyxjKXt2YXIgdT0wLGg9MDtpZihudWxsPT1yfHwodT1hKHIscykpIT09KGg9YShvLHMpKXx8bChyLG8pPDBecz4wKWRve2MucG9pbnQoMD09PXV8fDM9PT11P3Q6bix1PjE/aTplKX13aGlsZSgodT0odStzKzQpJTQpIT09aCk7ZWxzZSBjLnBvaW50KG9bMF0sb1sxXSl9ZnVuY3Rpb24gYShpLHIpe3JldHVybiBydihpWzBdLXQpPEt5P3I+MD8wOjM6cnYoaVswXS1uKTxLeT9yPjA/MjoxOnJ2KGlbMV0tZSk8S3k/cj4wPzE6MDpyPjA/MzoyfWZ1bmN0aW9uIHModCxlKXtyZXR1cm4gbCh0LngsZS54KX1mdW5jdGlvbiBsKHQsZSl7dmFyIG49YSh0LDEpLGk9YShlLDEpO3JldHVybiBuIT09aT9uLWk6MD09PW4/ZVsxXS10WzFdOjE9PT1uP3RbMF0tZVswXToyPT09bj90WzFdLWVbMV06ZVswXS10WzBdfXJldHVybiBmdW5jdGlvbihhKXt2YXIgbCxjLHUsaCxkLHAsZixtLGcsXyx5LHY9YSxiPUtiKCkseD17cG9pbnQ6VCxsaW5lU3RhcnQ6ZnVuY3Rpb24gdygpe3gucG9pbnQ9QyxjJiZjLnB1c2godT1bXSk7Xz0hMCxnPSExLGY9bT1OYU59LGxpbmVFbmQ6ZnVuY3Rpb24gUygpe2wmJihDKGgsZCkscCYmZyYmYi5yZWpvaW4oKSxsLnB1c2goYi5yZXN1bHQoKSkpO3gucG9pbnQ9VCxnJiZ2LmxpbmVFbmQoKX0scG9seWdvblN0YXJ0OmZ1bmN0aW9uIE0oKXt2PWIsbD1bXSxjPVtdLHk9ITB9LHBvbHlnb25FbmQ6ZnVuY3Rpb24gRSgpe3ZhciBlPShmdW5jdGlvbiBuKCl7Zm9yKHZhciBlPTAsbj0wLHI9Yy5sZW5ndGg7bjxyOysrbilmb3IodmFyIG8sYSxzPWNbbl0sbD0xLHU9cy5sZW5ndGgsaD1zWzBdLGQ9aFswXSxwPWhbMV07bDx1OysrbClvPWQsYT1wLGQ9KGg9c1tsXSlbMF0scD1oWzFdLGE8PWk/cD5pJiYoZC1vKSooaS1hKT4ocC1hKSoodC1vKSYmKytlOnA8PWkmJihkLW8pKihpLWEpPChwLWEpKih0LW8pJiYtLWU7cmV0dXJuIGV9KSgpLHI9eSYmZSxoPShsPWFjKGwpKS5sZW5ndGg7KHJ8fGgpJiYoYS5wb2x5Z29uU3RhcnQoKSxyJiYoYS5saW5lU3RhcnQoKSxvKG51bGwsbnVsbCwxLGEpLGEubGluZUVuZCgpKSxoJiZRYihsLHMsZSxvLGEpLGEucG9seWdvbkVuZCgpKTt2PWEsbD1jPXU9bnVsbH19O2Z1bmN0aW9uIFQodCxlKXtyKHQsZSkmJnYucG9pbnQodCxlKX1mdW5jdGlvbiBDKG8sYSl7dmFyIHM9cihvLGEpO2lmKGMmJnUucHVzaChbbyxhXSksXyloPW8sZD1hLHA9cyxfPSExLHMmJih2LmxpbmVTdGFydCgpLHYucG9pbnQobyxhKSk7ZWxzZSBpZihzJiZnKXYucG9pbnQobyxhKTtlbHNle3ZhciBsPVtmPU1hdGgubWF4KGR4LE1hdGgubWluKGh4LGYpKSxtPU1hdGgubWF4KGR4LE1hdGgubWluKGh4LG0pKV0sYj1bbz1NYXRoLm1heChkeCxNYXRoLm1pbihoeCxvKSksYT1NYXRoLm1heChkeCxNYXRoLm1pbihoeCxhKSldOyEoZnVuY3Rpb24geCh0LGUsbixpLHIsbyl7dmFyIGEscz10WzBdLGw9dFsxXSxjPTAsdT0xLGg9ZVswXS1zLGQ9ZVsxXS1sO2lmKGE9bi1zLGh8fCEoYT4wKSl7aWYoYS89aCxoPDApe2lmKGE8YylyZXR1cm47YTx1JiYodT1hKX1lbHNlIGlmKGg+MCl7aWYoYT51KXJldHVybjthPmMmJihjPWEpfWlmKGE9ci1zLGh8fCEoYTwwKSl7aWYoYS89aCxoPDApe2lmKGE+dSlyZXR1cm47YT5jJiYoYz1hKX1lbHNlIGlmKGg+MCl7aWYoYTxjKXJldHVybjthPHUmJih1PWEpfWlmKGE9aS1sLGR8fCEoYT4wKSl7aWYoYS89ZCxkPDApe2lmKGE8YylyZXR1cm47YTx1JiYodT1hKX1lbHNlIGlmKGQ+MCl7aWYoYT51KXJldHVybjthPmMmJihjPWEpfWlmKGE9by1sLGR8fCEoYTwwKSl7aWYoYS89ZCxkPDApe2lmKGE+dSlyZXR1cm47YT5jJiYoYz1hKX1lbHNlIGlmKGQ+MCl7aWYoYTxjKXJldHVybjthPHUmJih1PWEpfXJldHVybiBjPjAmJih0WzBdPXMrYypoLHRbMV09bCtjKmQpLHU8MSYmKGVbMF09cyt1KmgsZVsxXT1sK3UqZCksITB9fX19fSkobCxiLHQsZSxuLGkpP3MmJih2LmxpbmVTdGFydCgpLHYucG9pbnQobyxhKSx5PSExKTooZ3x8KHYubGluZVN0YXJ0KCksdi5wb2ludChsWzBdLGxbMV0pKSx2LnBvaW50KGJbMF0sYlsxXSksc3x8di5saW5lRW5kKCkseT0hMSl9Zj1vLG09YSxnPXN9cmV0dXJuIHh9fXZhciBmeCxteCxneCxfeD1xeSgpLHl4PXtzcGhlcmU6dnYscG9pbnQ6dnYsbGluZVN0YXJ0OmZ1bmN0aW9uIHZ4KCl7eXgucG9pbnQ9eHgseXgubGluZUVuZD1ieH0sbGluZUVuZDp2dixwb2x5Z29uU3RhcnQ6dnYscG9seWdvbkVuZDp2dn07ZnVuY3Rpb24gYngoKXt5eC5wb2ludD15eC5saW5lRW5kPXZ2fWZ1bmN0aW9uIHh4KHQsZSl7Zng9dCo9aXYsbXg9ZHYoZSo9aXYpLGd4PXN2KGUpLHl4LnBvaW50PXd4fWZ1bmN0aW9uIHd4KHQsZSl7dCo9aXY7dmFyIG49ZHYoZSo9aXYpLGk9c3YoZSkscj1ydih0LWZ4KSxvPXN2KHIpLGE9aSpkdihyKSxzPWd4Km4tbXgqaSpvLGw9bXgqbitneCppKm87X3guYWRkKGF2KGZ2KGEqYStzKnMpLGwpKSxmeD10LG14PW4sZ3g9aX1mdW5jdGlvbiBTeCh0KXtyZXR1cm4gX3gucmVzZXQoKSxFdih0LHl4KSwrX3h9dmFyIE14PVtudWxsLG51bGxdLEV4PXt0eXBlOiJMaW5lU3RyaW5nIixjb29yZGluYXRlczpNeH07ZnVuY3Rpb24gVHgodCxlKXtyZXR1cm4gTXhbMF09dCxNeFsxXT1lLFN4KEV4KX12YXIgQ3g9e0ZlYXR1cmU6ZnVuY3Rpb24odCxlKXtyZXR1cm4ga3godC5nZW9tZXRyeSxlKX0sRmVhdHVyZUNvbGxlY3Rpb246ZnVuY3Rpb24odCxlKXtmb3IodmFyIG49dC5mZWF0dXJlcyxpPS0xLHI9bi5sZW5ndGg7KytpPHI7KWlmKGt4KG5baV0uZ2VvbWV0cnksZSkpcmV0dXJuITA7cmV0dXJuITF9fSxBeD17U3BoZXJlOmZ1bmN0aW9uKCl7cmV0dXJuITB9LFBvaW50OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIEx4KHQuY29vcmRpbmF0ZXMsZSl9LE11bHRpUG9pbnQ6ZnVuY3Rpb24odCxlKXtmb3IodmFyIG49dC5jb29yZGluYXRlcyxpPS0xLHI9bi5sZW5ndGg7KytpPHI7KWlmKEx4KG5baV0sZSkpcmV0dXJuITA7cmV0dXJuITF9LExpbmVTdHJpbmc6ZnVuY3Rpb24odCxlKXtyZXR1cm4gUHgodC5jb29yZGluYXRlcyxlKX0sTXVsdGlMaW5lU3RyaW5nOmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuPXQuY29vcmRpbmF0ZXMsaT0tMSxyPW4ubGVuZ3RoOysraTxyOylpZihQeChuW2ldLGUpKXJldHVybiEwO3JldHVybiExfSxQb2x5Z29uOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIE54KHQuY29vcmRpbmF0ZXMsZSl9LE11bHRpUG9seWdvbjpmdW5jdGlvbih0LGUpe2Zvcih2YXIgbj10LmNvb3JkaW5hdGVzLGk9LTEscj1uLmxlbmd0aDsrK2k8cjspaWYoTngobltpXSxlKSlyZXR1cm4hMDtyZXR1cm4hMX0sR2VvbWV0cnlDb2xsZWN0aW9uOmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuPXQuZ2VvbWV0cmllcyxpPS0xLHI9bi5sZW5ndGg7KytpPHI7KWlmKGt4KG5baV0sZSkpcmV0dXJuITA7cmV0dXJuITF9fTtmdW5jdGlvbiBreCh0LGUpe3JldHVybiEoIXR8fCFBeC5oYXNPd25Qcm9wZXJ0eSh0LnR5cGUpKSYmQXhbdC50eXBlXSh0LGUpfWZ1bmN0aW9uIEx4KHQsZSl7cmV0dXJuIDA9PT1UeCh0LGUpfWZ1bmN0aW9uIFB4KHQsZSl7Zm9yKHZhciBuLGkscixvPTAsYT10Lmxlbmd0aDtvPGE7bysrKXtpZigwPT09KGk9VHgodFtvXSxlKSkpcmV0dXJuITA7aWYobz4wJiYocj1UeCh0W29dLHRbby0xXSkpPjAmJm48PXImJmk8PXImJihuK2ktcikqKDEtTWF0aC5wb3coKG4taSkvciwyKSk8WnkqcilyZXR1cm4hMDtuPWl9cmV0dXJuITF9ZnVuY3Rpb24gTngodCxlKXtyZXR1cm4hIWl4KHQubWFwKEl4KSxSeChlKSl9ZnVuY3Rpb24gSXgodCl7cmV0dXJuKHQ9dC5tYXAoUngpKS5wb3AoKSx0fWZ1bmN0aW9uIFJ4KHQpe3JldHVyblt0WzBdKml2LHRbMV0qaXZdfWZ1bmN0aW9uIE94KHQsZSxuKXt2YXIgaT1LbCh0LGUtS3ksbikuY29uY2F0KGUpO3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gaS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVyblt0LGVdfSkpfX1mdW5jdGlvbiB6eCh0LGUsbil7dmFyIGk9S2wodCxlLUt5LG4pLmNvbmNhdChlKTtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIGkubWFwKChmdW5jdGlvbihlKXtyZXR1cm5bZSx0XX0pKX19ZnVuY3Rpb24gRHgoKXt2YXIgdCxlLG4saSxyLG8sYSxzLGwsYyx1LGgsZD0xMCxwPWQsZj05MCxtPTM2MCxnPTIuNTtmdW5jdGlvbiBfKCl7cmV0dXJue3R5cGU6Ik11bHRpTGluZVN0cmluZyIsY29vcmRpbmF0ZXM6eSgpfX1mdW5jdGlvbiB5KCl7cmV0dXJuIEtsKGx2KGkvZikqZixuLGYpLm1hcCh1KS5jb25jYXQoS2wobHYocy9tKSptLGEsbSkubWFwKGgpKS5jb25jYXQoS2wobHYoZS9kKSpkLHQsZCkuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gcnYodCVmKT5LeX0pKS5tYXAobCkpLmNvbmNhdChLbChsdihvL3ApKnAscixwKS5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiBydih0JW0pPkt5fSkpLm1hcChjKSl9cmV0dXJuIF8ubGluZXM9ZnVuY3Rpb24oKXtyZXR1cm4geSgpLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJue3R5cGU6IkxpbmVTdHJpbmciLGNvb3JkaW5hdGVzOnR9fSkpfSxfLm91dGxpbmU9ZnVuY3Rpb24oKXtyZXR1cm57dHlwZToiUG9seWdvbiIsY29vcmRpbmF0ZXM6W3UoaSkuY29uY2F0KGgoYSkuc2xpY2UoMSksdShuKS5yZXZlcnNlKCkuc2xpY2UoMSksaChzKS5yZXZlcnNlKCkuc2xpY2UoMSkpXX19LF8uZXh0ZW50PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP18uZXh0ZW50TWFqb3IodCkuZXh0ZW50TWlub3IodCk6Xy5leHRlbnRNaW5vcigpfSxfLmV4dGVudE1ham9yPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhzPSt0WzBdWzFdLGE9K3RbMV1bMV0sKGk9K3RbMF1bMF0pPihuPSt0WzFdWzBdKSYmKHQ9aSxpPW4sbj10KSxzPmEmJih0PXMscz1hLGE9dCksXy5wcmVjaXNpb24oZykpOltbaSxzXSxbbixhXV19LF8uZXh0ZW50TWlub3I9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89K25bMF1bMV0scj0rblsxXVsxXSwoZT0rblswXVswXSk+KHQ9K25bMV1bMF0pJiYobj1lLGU9dCx0PW4pLG8+ciYmKG49byxvPXIscj1uKSxfLnByZWNpc2lvbihnKSk6W1tlLG9dLFt0LHJdXX0sXy5zdGVwPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP18uc3RlcE1ham9yKHQpLnN0ZXBNaW5vcih0KTpfLnN0ZXBNaW5vcigpfSxfLnN0ZXBNYWpvcj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZj0rdFswXSxtPSt0WzFdLF8pOltmLG1dfSxfLnN0ZXBNaW5vcj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZD0rdFswXSxwPSt0WzFdLF8pOltkLHBdfSxfLnByZWNpc2lvbj1mdW5jdGlvbihkKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZz0rZCxsPU94KG8sciw5MCksYz16eChlLHQsZyksdT1PeChzLGEsOTApLGg9engoaSxuLGcpLF8pOmd9LF8uZXh0ZW50TWFqb3IoW1stMTgwLC04OS45OTk5OTldLFsxODAsODkuOTk5OTk5XV0pLmV4dGVudE1pbm9yKFtbLTE4MCwtODAuMDAwMDAxXSxbMTgwLDgwLjAwMDAwMV1dKX1mdW5jdGlvbiBCeCh0KXtyZXR1cm4gdH12YXIgSHgsRngsVngsVXgsang9cXkoKSxHeD1xeSgpLFd4PXtwb2ludDp2dixsaW5lU3RhcnQ6dnYsbGluZUVuZDp2dixwb2x5Z29uU3RhcnQ6ZnVuY3Rpb24oKXtXeC5saW5lU3RhcnQ9cXgsV3gubGluZUVuZD0keH0scG9seWdvbkVuZDpmdW5jdGlvbigpe1d4LmxpbmVTdGFydD1XeC5saW5lRW5kPVd4LnBvaW50PXZ2LGp4LmFkZChydihHeCkpLEd4LnJlc2V0KCl9LHJlc3VsdDpmdW5jdGlvbigpe3ZhciB0PWp4LzI7cmV0dXJuIGp4LnJlc2V0KCksdH19O2Z1bmN0aW9uIHF4KCl7V3gucG9pbnQ9WXh9ZnVuY3Rpb24gWXgodCxlKXtXeC5wb2ludD1YeCxIeD1WeD10LEZ4PVV4PWV9ZnVuY3Rpb24gWHgodCxlKXtHeC5hZGQoVXgqdC1WeCplKSxWeD10LFV4PWV9ZnVuY3Rpb24gJHgoKXtYeChIeCxGeCl9dmFyIEt4PVd4LFp4PTEvMCxKeD1aeCxReD0tWngsdHc9UXg7dmFyIGV3LG53LGl3LHJ3LG93PXtwb2ludDpmdW5jdGlvbiBhdyh0LGUpe3Q8WngmJihaeD10KTt0PlF4JiYoUXg9dCk7ZTxKeCYmKEp4PWUpO2U+dHcmJih0dz1lKX0sbGluZVN0YXJ0OnZ2LGxpbmVFbmQ6dnYscG9seWdvblN0YXJ0OnZ2LHBvbHlnb25FbmQ6dnYscmVzdWx0OmZ1bmN0aW9uKCl7dmFyIHQ9W1taeCxKeF0sW1F4LHR3XV07cmV0dXJuIFF4PXR3PS0oSng9Wng9MS8wKSx0fX0sc3c9MCxsdz0wLGN3PTAsdXc9MCxodz0wLGR3PTAscHc9MCxmdz0wLG13PTAsZ3c9e3BvaW50Ol93LGxpbmVTdGFydDp5dyxsaW5lRW5kOnh3LHBvbHlnb25TdGFydDpmdW5jdGlvbigpe2d3LmxpbmVTdGFydD13dyxndy5saW5lRW5kPVN3fSxwb2x5Z29uRW5kOmZ1bmN0aW9uKCl7Z3cucG9pbnQ9X3csZ3cubGluZVN0YXJ0PXl3LGd3LmxpbmVFbmQ9eHd9LHJlc3VsdDpmdW5jdGlvbigpe3ZhciB0PW13P1twdy9tdyxmdy9td106ZHc/W3V3L2R3LGh3L2R3XTpjdz9bc3cvY3csbHcvY3ddOltOYU4sTmFOXTtyZXR1cm4gc3c9bHc9Y3c9dXc9aHc9ZHc9cHc9Znc9bXc9MCx0fX07ZnVuY3Rpb24gX3codCxlKXtzdys9dCxsdys9ZSwrK2N3fWZ1bmN0aW9uIHl3KCl7Z3cucG9pbnQ9dnd9ZnVuY3Rpb24gdncodCxlKXtndy5wb2ludD1idyxfdyhpdz10LHJ3PWUpfWZ1bmN0aW9uIGJ3KHQsZSl7dmFyIG49dC1pdyxpPWUtcncscj1mdihuKm4raSppKTt1dys9ciooaXcrdCkvMixodys9cioocncrZSkvMixkdys9cixfdyhpdz10LHJ3PWUpfWZ1bmN0aW9uIHh3KCl7Z3cucG9pbnQ9X3d9ZnVuY3Rpb24gd3coKXtndy5wb2ludD1Nd31mdW5jdGlvbiBTdygpe0V3KGV3LG53KX1mdW5jdGlvbiBNdyh0LGUpe2d3LnBvaW50PUV3LF93KGV3PWl3PXQsbnc9cnc9ZSl9ZnVuY3Rpb24gRXcodCxlKXt2YXIgbj10LWl3LGk9ZS1ydyxyPWZ2KG4qbitpKmkpO3V3Kz1yKihpdyt0KS8yLGh3Kz1yKihydytlKS8yLGR3Kz1yLHB3Kz0ocj1ydyp0LWl3KmUpKihpdyt0KSxmdys9cioocncrZSksbXcrPTMqcixfdyhpdz10LHJ3PWUpfXZhciBUdz1ndztmdW5jdGlvbiBDdyh0KXt0aGlzLl9jb250ZXh0PXR9Q3cucHJvdG90eXBlPXtfcmFkaXVzOjQuNSxwb2ludFJhZGl1czpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fcmFkaXVzPXQsdGhpc30scG9seWdvblN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fbGluZT0wfSxwb2x5Z29uRW5kOmZ1bmN0aW9uKCl7dGhpcy5fbGluZT1OYU59LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3BvaW50PTB9LGxpbmVFbmQ6ZnVuY3Rpb24oKXswPT09dGhpcy5fbGluZSYmdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKSx0aGlzLl9wb2ludD1OYU59LHBvaW50OmZ1bmN0aW9uKHQsZSl7c3dpdGNoKHRoaXMuX3BvaW50KXtjYXNlIDA6dGhpcy5fY29udGV4dC5tb3ZlVG8odCxlKSx0aGlzLl9wb2ludD0xO2JyZWFrO2Nhc2UgMTp0aGlzLl9jb250ZXh0LmxpbmVUbyh0LGUpO2JyZWFrO2RlZmF1bHQ6dGhpcy5fY29udGV4dC5tb3ZlVG8odCt0aGlzLl9yYWRpdXMsZSksdGhpcy5fY29udGV4dC5hcmModCxlLHRoaXMuX3JhZGl1cywwLGV2KX19LHJlc3VsdDp2dn07dmFyIEF3LGt3LEx3LFB3LE53LEl3PXF5KCksUnc9e3BvaW50OnZ2LGxpbmVTdGFydDpmdW5jdGlvbigpe1J3LnBvaW50PU93fSxsaW5lRW5kOmZ1bmN0aW9uKCl7QXcmJnp3KGt3LEx3KSxSdy5wb2ludD12dn0scG9seWdvblN0YXJ0OmZ1bmN0aW9uKCl7QXc9ITB9LHBvbHlnb25FbmQ6ZnVuY3Rpb24oKXtBdz1udWxsfSxyZXN1bHQ6ZnVuY3Rpb24oKXt2YXIgdD0rSXc7cmV0dXJuIEl3LnJlc2V0KCksdH19O2Z1bmN0aW9uIE93KHQsZSl7UncucG9pbnQ9encsa3c9UHc9dCxMdz1Odz1lfWZ1bmN0aW9uIHp3KHQsZSl7SXcuYWRkKGZ2KChQdy09dCkqUHcrKE53LT1lKSpOdykpLFB3PXQsTnc9ZX12YXIgRHc9Unc7ZnVuY3Rpb24gQncoKXt0aGlzLl9zdHJpbmc9W119ZnVuY3Rpb24gSHcodCl7cmV0dXJuIm0wLCIrdCsiYSIrdCsiLCIrdCsiIDAgMSwxIDAsIistMip0KyJhIit0KyIsIit0KyIgMCAxLDEgMCwiKzIqdCsieiJ9ZnVuY3Rpb24gRncodCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciBuPW5ldyBWdztmb3IodmFyIGkgaW4gdCluW2ldPXRbaV07cmV0dXJuIG4uc3RyZWFtPWUsbn19ZnVuY3Rpb24gVncoKXt9ZnVuY3Rpb24gVXcodCxlLG4pe3ZhciBpPXQuY2xpcEV4dGVudCYmdC5jbGlwRXh0ZW50KCk7cmV0dXJuIHQuc2NhbGUoMTUwKS50cmFuc2xhdGUoWzAsMF0pLG51bGwhPWkmJnQuY2xpcEV4dGVudChudWxsKSxFdihuLHQuc3RyZWFtKG93KSksZShvdy5yZXN1bHQoKSksbnVsbCE9aSYmdC5jbGlwRXh0ZW50KGkpLHR9ZnVuY3Rpb24gancodCxlLG4pe3JldHVybiBVdyh0LChmdW5jdGlvbihuKXt2YXIgaT1lWzFdWzBdLWVbMF1bMF0scj1lWzFdWzFdLWVbMF1bMV0sbz1NYXRoLm1pbihpLyhuWzFdWzBdLW5bMF1bMF0pLHIvKG5bMV1bMV0tblswXVsxXSkpLGE9K2VbMF1bMF0rKGktbyooblsxXVswXStuWzBdWzBdKSkvMixzPStlWzBdWzFdKyhyLW8qKG5bMV1bMV0rblswXVsxXSkpLzI7dC5zY2FsZSgxNTAqbykudHJhbnNsYXRlKFthLHNdKX0pLG4pfWZ1bmN0aW9uIEd3KHQsZSxuKXtyZXR1cm4gancodCxbWzAsMF0sZV0sbil9ZnVuY3Rpb24gV3codCxlLG4pe3JldHVybiBVdyh0LChmdW5jdGlvbihuKXt2YXIgaT0rZSxyPWkvKG5bMV1bMF0tblswXVswXSksbz0oaS1yKihuWzFdWzBdK25bMF1bMF0pKS8yLGE9LXIqblswXVsxXTt0LnNjYWxlKDE1MCpyKS50cmFuc2xhdGUoW28sYV0pfSksbil9ZnVuY3Rpb24gcXcodCxlLG4pe3JldHVybiBVdyh0LChmdW5jdGlvbihuKXt2YXIgaT0rZSxyPWkvKG5bMV1bMV0tblswXVsxXSksbz0tcipuWzBdWzBdLGE9KGktciooblsxXVsxXStuWzBdWzFdKSkvMjt0LnNjYWxlKDE1MCpyKS50cmFuc2xhdGUoW28sYV0pfSksbil9QncucHJvdG90eXBlPXtfcmFkaXVzOjQuNSxfY2lyY2xlOkh3KDQuNSkscG9pbnRSYWRpdXM6ZnVuY3Rpb24odCl7cmV0dXJuKHQ9K3QpIT09dGhpcy5fcmFkaXVzJiYodGhpcy5fcmFkaXVzPXQsdGhpcy5fY2lyY2xlPW51bGwpLHRoaXN9LHBvbHlnb25TdGFydDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9MH0scG9seWdvbkVuZDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9TmFOfSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl9wb2ludD0wfSxsaW5lRW5kOmZ1bmN0aW9uKCl7MD09PXRoaXMuX2xpbmUmJnRoaXMuX3N0cmluZy5wdXNoKCJaIiksdGhpcy5fcG9pbnQ9TmFOfSxwb2ludDpmdW5jdGlvbih0LGUpe3N3aXRjaCh0aGlzLl9wb2ludCl7Y2FzZSAwOnRoaXMuX3N0cmluZy5wdXNoKCJNIix0LCIsIixlKSx0aGlzLl9wb2ludD0xO2JyZWFrO2Nhc2UgMTp0aGlzLl9zdHJpbmcucHVzaCgiTCIsdCwiLCIsZSk7YnJlYWs7ZGVmYXVsdDpudWxsPT10aGlzLl9jaXJjbGUmJih0aGlzLl9jaXJjbGU9SHcodGhpcy5fcmFkaXVzKSksdGhpcy5fc3RyaW5nLnB1c2goIk0iLHQsIiwiLGUsdGhpcy5fY2lyY2xlKX19LHJlc3VsdDpmdW5jdGlvbigpe2lmKHRoaXMuX3N0cmluZy5sZW5ndGgpe3ZhciB0PXRoaXMuX3N0cmluZy5qb2luKCIiKTtyZXR1cm4gdGhpcy5fc3RyaW5nPVtdLHR9cmV0dXJuIG51bGx9fSxWdy5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOlZ3LHBvaW50OmZ1bmN0aW9uKHQsZSl7dGhpcy5zdHJlYW0ucG9pbnQodCxlKX0sc3BoZXJlOmZ1bmN0aW9uKCl7dGhpcy5zdHJlYW0uc3BoZXJlKCl9LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuc3RyZWFtLmxpbmVTdGFydCgpfSxsaW5lRW5kOmZ1bmN0aW9uKCl7dGhpcy5zdHJlYW0ubGluZUVuZCgpfSxwb2x5Z29uU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLnN0cmVhbS5wb2x5Z29uU3RhcnQoKX0scG9seWdvbkVuZDpmdW5jdGlvbigpe3RoaXMuc3RyZWFtLnBvbHlnb25FbmQoKX19O3ZhciBZdz1zdigzMCppdik7ZnVuY3Rpb24gWHcodCxlKXtyZXR1cm4rZT8oZnVuY3Rpb24gbih0LGUpe2Z1bmN0aW9uIG4oaSxyLG8sYSxzLGwsYyx1LGgsZCxwLGYsbSxnKXt2YXIgXz1jLWkseT11LXIsdj1fKl8reSp5O2lmKHY+NCplJiZtLS0pe3ZhciBiPWErZCx4PXMrcCx3PWwrZixTPWZ2KGIqYit4Kngrdyp3KSxNPV92KHcvPVMpLEU9cnYocnYodyktMSk8S3l8fHJ2KG8taCk8S3k/KG8raCkvMjphdih4LGIpLFQ9dChFLE0pLEM9VFswXSxBPVRbMV0saz1DLWksTD1BLXIsUD15KmstXypMOyhQKlAvdj5lfHxydigoXyprK3kqTCkvdi0uNSk+LjN8fGEqZCtzKnArbCpmPFl3KSYmKG4oaSxyLG8sYSxzLGwsQyxBLEUsYi89Uyx4Lz1TLHcsbSxnKSxnLnBvaW50KEMsQSksbihDLEEsRSxiLHgsdyxjLHUsaCxkLHAsZixtLGcpKX19cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciBpLHIsbyxhLHMsbCxjLHUsaCxkLHAsZixtPXtwb2ludDpnLGxpbmVTdGFydDpfLGxpbmVFbmQ6dixwb2x5Z29uU3RhcnQ6ZnVuY3Rpb24oKXtlLnBvbHlnb25TdGFydCgpLG0ubGluZVN0YXJ0PWJ9LHBvbHlnb25FbmQ6ZnVuY3Rpb24oKXtlLnBvbHlnb25FbmQoKSxtLmxpbmVTdGFydD1ffX07ZnVuY3Rpb24gZyhuLGkpe249dChuLGkpLGUucG9pbnQoblswXSxuWzFdKX1mdW5jdGlvbiBfKCl7dT1OYU4sbS5wb2ludD15LGUubGluZVN0YXJ0KCl9ZnVuY3Rpb24geShpLHIpe3ZhciBvPUh2KFtpLHJdKSxhPXQoaSxyKTtuKHUsaCxjLGQscCxmLHU9YVswXSxoPWFbMV0sYz1pLGQ9b1swXSxwPW9bMV0sZj1vWzJdLDE2LGUpLGUucG9pbnQodSxoKX1mdW5jdGlvbiB2KCl7bS5wb2ludD1nLGUubGluZUVuZCgpfWZ1bmN0aW9uIGIoKXtfKCksbS5wb2ludD14LG0ubGluZUVuZD13fWZ1bmN0aW9uIHgodCxlKXt5KGk9dCxlKSxyPXUsbz1oLGE9ZCxzPXAsbD1mLG0ucG9pbnQ9eX1mdW5jdGlvbiB3KCl7bih1LGgsYyxkLHAsZixyLG8saSxhLHMsbCwxNixlKSxtLmxpbmVFbmQ9dix2KCl9cmV0dXJuIG19fSkodCxlKTooZnVuY3Rpb24gaSh0KXtyZXR1cm4gRncoe3BvaW50OmZ1bmN0aW9uKGUsbil7ZT10KGUsbiksdGhpcy5zdHJlYW0ucG9pbnQoZVswXSxlWzFdKX19KX0pKHQpfXZhciAkdz1Gdyh7cG9pbnQ6ZnVuY3Rpb24odCxlKXt0aGlzLnN0cmVhbS5wb2ludCh0Kml2LGUqaXYpfX0pO2Z1bmN0aW9uIEt3KHQsZSxuLGkscil7ZnVuY3Rpb24gbyhvLGEpe3JldHVybltlK3QqKG8qPWkpLG4tdCooYSo9cildfXJldHVybiBvLmludmVydD1mdW5jdGlvbihvLGEpe3JldHVyblsoby1lKS90KmksKG4tYSkvdCpyXX0sb31mdW5jdGlvbiBadyh0LGUsbixpLHIsbyl7dmFyIGE9c3Yobykscz1kdihvKSxsPWEqdCxjPXMqdCx1PWEvdCxoPXMvdCxkPShzKm4tYSplKS90LHA9KHMqZSthKm4pL3Q7ZnVuY3Rpb24gZih0LG8pe3JldHVybltsKih0Kj1pKS1jKihvKj1yKStlLG4tYyp0LWwqb119cmV0dXJuIGYuaW52ZXJ0PWZ1bmN0aW9uKHQsZSl7cmV0dXJuW2kqKHUqdC1oKmUrZCkscioocC1oKnQtdSplKV19LGZ9ZnVuY3Rpb24gSncodCl7cmV0dXJuIFF3KChmdW5jdGlvbigpe3JldHVybiB0fSkpKCl9ZnVuY3Rpb24gUXcodCl7dmFyIGUsbixpLHIsbyxhLHMsbCxjLHUsaD0xNTAsZD00ODAscD0yNTAsZj0wLG09MCxnPTAsXz0wLHk9MCx2PTAsYj0xLHg9MSx3PW51bGwsUz1zeCxNPW51bGwsRT1CeCxUPS41O2Z1bmN0aW9uIEModCl7cmV0dXJuIGwodFswXSppdix0WzFdKml2KX1mdW5jdGlvbiBBKHQpe3JldHVybih0PWwuaW52ZXJ0KHRbMF0sdFsxXSkpJiZbdFswXSpudix0WzFdKm52XX1mdW5jdGlvbiBrKCl7dmFyIHQ9WncoaCwwLDAsYix4LHYpLmFwcGx5KG51bGwsZShmLG0pKSxpPSh2P1p3Okt3KShoLGQtdFswXSxwLXRbMV0sYix4LHYpO3JldHVybiBuPWpiKGcsXyx5KSxzPVZiKGUsaSksbD1WYihuLHMpLGE9WHcocyxUKSxMKCl9ZnVuY3Rpb24gTCgpe3JldHVybiBjPXU9bnVsbCxDfXJldHVybiBDLnN0cmVhbT1mdW5jdGlvbih0KXtyZXR1cm4gYyYmdT09PXQ/YzpjPSR3KChmdW5jdGlvbiBlKHQpe3JldHVybiBGdyh7cG9pbnQ6ZnVuY3Rpb24oZSxuKXt2YXIgaT10KGUsbik7cmV0dXJuIHRoaXMuc3RyZWFtLnBvaW50KGlbMF0saVsxXSl9fSl9KShuKShTKGEoRSh1PXQpKSkpKX0sQy5wcmVjbGlwPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhTPXQsdz12b2lkIDAsTCgpKTpTfSxDLnBvc3RjbGlwPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhFPXQsTT1pPXI9bz1udWxsLEwoKSk6RX0sQy5jbGlwQW5nbGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KFM9K3Q/dXgodz10Kml2KToodz1udWxsLHN4KSxMKCkpOncqbnZ9LEMuY2xpcEV4dGVudD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oRT1udWxsPT10PyhNPWk9cj1vPW51bGwsQngpOnB4KE09K3RbMF1bMF0saT0rdFswXVsxXSxyPSt0WzFdWzBdLG89K3RbMV1bMV0pLEwoKSk6bnVsbD09TT9udWxsOltbTSxpXSxbcixvXV19LEMuc2NhbGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGg9K3QsaygpKTpofSxDLnRyYW5zbGF0ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZD0rdFswXSxwPSt0WzFdLGsoKSk6W2QscF19LEMuY2VudGVyPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhmPXRbMF0lMzYwKml2LG09dFsxXSUzNjAqaXYsaygpKTpbZipudixtKm52XX0sQy5yb3RhdGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGc9dFswXSUzNjAqaXYsXz10WzFdJTM2MCppdix5PXQubGVuZ3RoPjI/dFsyXSUzNjAqaXY6MCxrKCkpOltnKm52LF8qbnYseSpudl19LEMuYW5nbGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHY9dCUzNjAqaXYsaygpKTp2Km52fSxDLnJlZmxlY3RYPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhiPXQ/LTE6MSxrKCkpOmI8MH0sQy5yZWZsZWN0WT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oeD10Py0xOjEsaygpKTp4PDB9LEMucHJlY2lzaW9uPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPVh3KHMsVD10KnQpLEwoKSk6ZnYoVCl9LEMuZml0RXh0ZW50PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGp3KEMsdCxlKX0sQy5maXRTaXplPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIEd3KEMsdCxlKX0sQy5maXRXaWR0aD1mdW5jdGlvbih0LGUpe3JldHVybiBXdyhDLHQsZSl9LEMuZml0SGVpZ2h0PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHF3KEMsdCxlKX0sZnVuY3Rpb24oKXtyZXR1cm4gZT10LmFwcGx5KHRoaXMsYXJndW1lbnRzKSxDLmludmVydD1lLmludmVydCYmQSxrKCl9fWZ1bmN0aW9uIHRTKHQpe3ZhciBlPTAsbj1KeS8zLGk9UXcodCkscj1pKGUsbik7cmV0dXJuIHIucGFyYWxsZWxzPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP2koZT10WzBdKml2LG49dFsxXSppdik6W2UqbnYsbipudl19LHJ9ZnVuY3Rpb24gZVModCxlKXt2YXIgbj1kdih0KSxpPShuK2R2KGUpKS8yO2lmKHJ2KGkpPEt5KXJldHVybihmdW5jdGlvbiByKHQpe3ZhciBlPXN2KHQpO2Z1bmN0aW9uIG4odCxuKXtyZXR1cm5bdCplLGR2KG4pL2VdfXJldHVybiBuLmludmVydD1mdW5jdGlvbih0LG4pe3JldHVyblt0L2UsX3YobiplKV19LG59KSh0KTt2YXIgbz0xK24qKDIqaS1uKSxhPWZ2KG8pL2k7ZnVuY3Rpb24gcyh0LGUpe3ZhciBuPWZ2KG8tMippKmR2KGUpKS9pO3JldHVybltuKmR2KHQqPWkpLGEtbipzdih0KV19cmV0dXJuIHMuaW52ZXJ0PWZ1bmN0aW9uKHQsZSl7dmFyIG49YS1lLHI9YXYodCxydihuKSkqcHYobik7cmV0dXJuIG4qaTwwJiYoci09SnkqcHYodCkqcHYobikpLFtyL2ksX3YoKG8tKHQqdCtuKm4pKmkqaSkvKDIqaSkpXX0sc31mdW5jdGlvbiBuUygpe3JldHVybiB0UyhlUykuc2NhbGUoMTU1LjQyNCkuY2VudGVyKFswLDMzLjY0NDJdKX1mdW5jdGlvbiBpUygpe3JldHVybiBuUygpLnBhcmFsbGVscyhbMjkuNSw0NS41XSkuc2NhbGUoMTA3MCkudHJhbnNsYXRlKFs0ODAsMjUwXSkucm90YXRlKFs5NiwwXSkuY2VudGVyKFstLjYsMzguN10pfWZ1bmN0aW9uIHJTKHQpe3JldHVybiBmdW5jdGlvbihlLG4pe3ZhciBpPXN2KGUpLHI9c3Yobiksbz10KGkqcik7cmV0dXJuW28qcipkdihlKSxvKmR2KG4pXX19ZnVuY3Rpb24gb1ModCl7cmV0dXJuIGZ1bmN0aW9uKGUsbil7dmFyIGk9ZnYoZSplK24qbikscj10KGkpLG89ZHYociksYT1zdihyKTtyZXR1cm5bYXYoZSpvLGkqYSksX3YoaSYmbipvL2kpXX19dmFyIGFTPXJTKChmdW5jdGlvbih0KXtyZXR1cm4gZnYoMi8oMSt0KSl9KSk7YVMuaW52ZXJ0PW9TKChmdW5jdGlvbih0KXtyZXR1cm4gMipfdih0LzIpfSkpO3ZhciBzUz1yUygoZnVuY3Rpb24odCl7cmV0dXJuKHQ9Z3YodCkpJiZ0L2R2KHQpfSkpO2Z1bmN0aW9uIGxTKHQsZSl7cmV0dXJuW3QsdXYobXYoKFF5K2UpLzIpKV19ZnVuY3Rpb24gY1ModCl7dmFyIGUsbixpLHI9SncodCksbz1yLmNlbnRlcixhPXIuc2NhbGUscz1yLnRyYW5zbGF0ZSxsPXIuY2xpcEV4dGVudCxjPW51bGw7ZnVuY3Rpb24gdSgpe3ZhciBvPUp5KmEoKSxzPXIoWWIoci5yb3RhdGUoKSkuaW52ZXJ0KFswLDBdKSk7cmV0dXJuIGwobnVsbD09Yz9bW3NbMF0tbyxzWzFdLW9dLFtzWzBdK28sc1sxXStvXV06dD09PWxTP1tbTWF0aC5tYXgoc1swXS1vLGMpLGVdLFtNYXRoLm1pbihzWzBdK28sbiksaV1dOltbYyxNYXRoLm1heChzWzFdLW8sZSldLFtuLE1hdGgubWluKHNbMV0rbyxpKV1dKX1yZXR1cm4gci5zY2FsZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYSh0KSx1KCkpOmEoKX0sci50cmFuc2xhdGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHModCksdSgpKTpzKCl9LHIuY2VudGVyPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvKHQpLHUoKSk6bygpfSxyLmNsaXBFeHRlbnQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG51bGw9PXQ/Yz1lPW49aT1udWxsOihjPSt0WzBdWzBdLGU9K3RbMF1bMV0sbj0rdFsxXVswXSxpPSt0WzFdWzFdKSx1KCkpOm51bGw9PWM/bnVsbDpbW2MsZV0sW24saV1dfSx1KCl9ZnVuY3Rpb24gdVModCl7cmV0dXJuIG12KChReSt0KS8yKX1mdW5jdGlvbiBoUyh0LGUpe3ZhciBuPXN2KHQpLGk9dD09PWU/ZHYodCk6dXYobi9zdihlKSkvdXYodVMoZSkvdVModCkpLHI9bipodih1Uyh0KSxpKS9pO2lmKCFpKXJldHVybiBsUztmdW5jdGlvbiBvKHQsZSl7cj4wP2U8LVF5K0t5JiYoZT0tUXkrS3kpOmU+UXktS3kmJihlPVF5LUt5KTt2YXIgbj1yL2h2KHVTKGUpLGkpO3JldHVybltuKmR2KGkqdCksci1uKnN2KGkqdCldfXJldHVybiBvLmludmVydD1mdW5jdGlvbih0LGUpe3ZhciBuPXItZSxvPXB2KGkpKmZ2KHQqdCtuKm4pLGE9YXYodCxydihuKSkqcHYobik7cmV0dXJuIG4qaTwwJiYoYS09SnkqcHYodCkqcHYobikpLFthL2ksMipvdihodihyL28sMS9pKSktUXldfSxvfWZ1bmN0aW9uIGRTKHQsZSl7cmV0dXJuW3QsZV19ZnVuY3Rpb24gcFModCxlKXt2YXIgbj1zdih0KSxpPXQ9PT1lP2R2KHQpOihuLXN2KGUpKS8oZS10KSxyPW4vaSt0O2lmKHJ2KGkpPEt5KXJldHVybiBkUztmdW5jdGlvbiBvKHQsZSl7dmFyIG49ci1lLG89aSp0O3JldHVybltuKmR2KG8pLHItbipzdihvKV19cmV0dXJuIG8uaW52ZXJ0PWZ1bmN0aW9uKHQsZSl7dmFyIG49ci1lLG89YXYodCxydihuKSkqcHYobik7cmV0dXJuIG4qaTwwJiYoby09SnkqcHYodCkqcHYobikpLFtvL2ksci1wdihpKSpmdih0KnQrbipuKV19LG99c1MuaW52ZXJ0PW9TKChmdW5jdGlvbih0KXtyZXR1cm4gdH0pKSxsUy5pbnZlcnQ9ZnVuY3Rpb24odCxlKXtyZXR1cm5bdCwyKm92KGN2KGUpKS1ReV19LGRTLmludmVydD1kUzt2YXIgZlM9MS4zNDAyNjQsbVM9LS4wODExMDYsZ1M9ODkzZS02LF9TPS4wMDM3OTYseVM9ZnYoMykvMjtmdW5jdGlvbiB2Uyh0LGUpe3ZhciBuPV92KHlTKmR2KGUpKSxpPW4qbixyPWkqaSppO3JldHVyblt0KnN2KG4pLyh5UyooZlMrMyptUyppK3IqKDcqZ1MrOSpfUyppKSkpLG4qKGZTK21TKmkrciooZ1MrX1MqaSkpXX1mdW5jdGlvbiBiUyh0LGUpe3ZhciBuPXN2KGUpLGk9c3YodCkqbjtyZXR1cm5bbipkdih0KS9pLGR2KGUpL2ldfWZ1bmN0aW9uIHhTKHQsZSl7dmFyIG49ZSplLGk9bipuO3JldHVyblt0KiguODcwNy0uMTMxOTc5Km4raSooaSooLjAwMzk3MSpuLS4wMDE1MjkqaSktLjAxMzc5MSkpLGUqKDEuMDA3MjI2K24qKC4wMTUwODUraSooLjAyODg3NCpuLS4wNDQ0NzUtLjAwNTkxNippKSkpXX1mdW5jdGlvbiB3Uyh0LGUpe3JldHVybltzdihlKSpkdih0KSxkdihlKV19ZnVuY3Rpb24gU1ModCxlKXt2YXIgbj1zdihlKSxpPTErc3YodCkqbjtyZXR1cm5bbipkdih0KS9pLGR2KGUpL2ldfWZ1bmN0aW9uIE1TKHQsZSl7cmV0dXJuW3V2KG12KChReStlKS8yKSksLXRdfWZ1bmN0aW9uIEVTKHQsZSl7cmV0dXJuIHQucGFyZW50PT09ZS5wYXJlbnQ/MToyfWZ1bmN0aW9uIFRTKHQsZSl7cmV0dXJuIHQrZS54fWZ1bmN0aW9uIENTKHQsZSl7cmV0dXJuIE1hdGgubWF4KHQsZS55KX1mdW5jdGlvbiBBUyh0KXt2YXIgZT0wLG49dC5jaGlsZHJlbixpPW4mJm4ubGVuZ3RoO2lmKGkpZm9yKDstLWk+PTA7KWUrPW5baV0udmFsdWU7ZWxzZSBlPTE7dC52YWx1ZT1lfWZ1bmN0aW9uIGtTKHQsZSl7dmFyIG4saSxyLG8sYSxzPW5ldyBJUyh0KSxsPSt0LnZhbHVlJiYocy52YWx1ZT10LnZhbHVlKSxjPVtzXTtmb3IobnVsbD09ZSYmKGU9TFMpO249Yy5wb3AoKTspaWYobCYmKG4udmFsdWU9K24uZGF0YS52YWx1ZSksKHI9ZShuLmRhdGEpKSYmKGE9ci5sZW5ndGgpKWZvcihuLmNoaWxkcmVuPW5ldyBBcnJheShhKSxvPWEtMTtvPj0wOy0tbyljLnB1c2goaT1uLmNoaWxkcmVuW29dPW5ldyBJUyhyW29dKSksaS5wYXJlbnQ9bixpLmRlcHRoPW4uZGVwdGgrMTtyZXR1cm4gcy5lYWNoQmVmb3JlKE5TKX1mdW5jdGlvbiBMUyh0KXtyZXR1cm4gdC5jaGlsZHJlbn1mdW5jdGlvbiBQUyh0KXt0LmRhdGE9dC5kYXRhLmRhdGF9ZnVuY3Rpb24gTlModCl7dmFyIGU9MDtkb3t0LmhlaWdodD1lfXdoaWxlKCh0PXQucGFyZW50KSYmdC5oZWlnaHQ8KytlKX1mdW5jdGlvbiBJUyh0KXt0aGlzLmRhdGE9dCx0aGlzLmRlcHRoPXRoaXMuaGVpZ2h0PTAsdGhpcy5wYXJlbnQ9bnVsbH12Uy5pbnZlcnQ9ZnVuY3Rpb24odCxlKXtmb3IodmFyIG4saT1lLHI9aSppLG89cipyKnIsYT0wO2E8MTImJihvPShyPShpLT1uPShpKihmUyttUypyK28qKGdTK19TKnIpKS1lKS8oZlMrMyptUypyK28qKDcqZ1MrOSpfUypyKSkpKmkpKnIqciwhKHJ2KG4pPFp5KSk7KythKTtyZXR1cm5beVMqdCooZlMrMyptUypyK28qKDcqZ1MrOSpfUypyKSkvc3YoaSksX3YoZHYoaSkveVMpXX0sYlMuaW52ZXJ0PW9TKG92KSx4Uy5pbnZlcnQ9ZnVuY3Rpb24odCxlKXt2YXIgbixpPWUscj0yNTtkb3t2YXIgbz1pKmksYT1vKm87aS09bj0oaSooMS4wMDcyMjYrbyooLjAxNTA4NSthKiguMDI4ODc0Km8tLjA0NDQ3NS0uMDA1OTE2KmEpKSktZSkvKDEuMDA3MjI2K28qKC4wNDUyNTUrYSooLjI1OTg2NipvLS4zMTEzMjUtLjAwNTkxNioxMSphKSkpfXdoaWxlKHJ2KG4pPkt5JiYtLXI+MCk7cmV0dXJuW3QvKC44NzA3KyhvPWkqaSkqKG8qKG8qbypvKiguMDAzOTcxLS4wMDE1MjkqbyktLjAxMzc5MSktLjEzMTk3OSkpLGldfSx3Uy5pbnZlcnQ9b1MoX3YpLFNTLmludmVydD1vUygoZnVuY3Rpb24odCl7cmV0dXJuIDIqb3YodCl9KSksTVMuaW52ZXJ0PWZ1bmN0aW9uKHQsZSl7cmV0dXJuWy1lLDIqb3YoY3YodCkpLVF5XX0sSVMucHJvdG90eXBlPWtTLnByb3RvdHlwZT17Y29uc3RydWN0b3I6SVMsY291bnQ6ZnVuY3Rpb24gUlMoKXtyZXR1cm4gdGhpcy5lYWNoQWZ0ZXIoQVMpfSxlYWNoOmZ1bmN0aW9uIE9TKHQpe3ZhciBlLG4saSxyLG89dGhpcyxhPVtvXTtkb3tmb3IoZT1hLnJldmVyc2UoKSxhPVtdO289ZS5wb3AoKTspaWYodChvKSxuPW8uY2hpbGRyZW4pZm9yKGk9MCxyPW4ubGVuZ3RoO2k8cjsrK2kpYS5wdXNoKG5baV0pfXdoaWxlKGEubGVuZ3RoKTtyZXR1cm4gdGhpc30sZWFjaEFmdGVyOmZ1bmN0aW9uIHpTKHQpe2Zvcih2YXIgZSxuLGkscj10aGlzLG89W3JdLGE9W107cj1vLnBvcCgpOylpZihhLnB1c2gociksZT1yLmNoaWxkcmVuKWZvcihuPTAsaT1lLmxlbmd0aDtuPGk7KytuKW8ucHVzaChlW25dKTtmb3IoO3I9YS5wb3AoKTspdChyKTtyZXR1cm4gdGhpc30sZWFjaEJlZm9yZTpmdW5jdGlvbiBEUyh0KXtmb3IodmFyIGUsbixpPXRoaXMscj1baV07aT1yLnBvcCgpOylpZih0KGkpLGU9aS5jaGlsZHJlbilmb3Iobj1lLmxlbmd0aC0xO24+PTA7LS1uKXIucHVzaChlW25dKTtyZXR1cm4gdGhpc30sc3VtOmZ1bmN0aW9uIEJTKHQpe3JldHVybiB0aGlzLmVhY2hBZnRlcigoZnVuY3Rpb24oZSl7Zm9yKHZhciBuPSt0KGUuZGF0YSl8fDAsaT1lLmNoaWxkcmVuLHI9aSYmaS5sZW5ndGg7LS1yPj0wOyluKz1pW3JdLnZhbHVlO2UudmFsdWU9bn0pKX0sc29ydDpmdW5jdGlvbiBIUyh0KXtyZXR1cm4gdGhpcy5lYWNoQmVmb3JlKChmdW5jdGlvbihlKXtlLmNoaWxkcmVuJiZlLmNoaWxkcmVuLnNvcnQodCl9KSl9LHBhdGg6ZnVuY3Rpb24gRlModCl7Zm9yKHZhciBlPXRoaXMsbj0oZnVuY3Rpb24gaSh0LGUpe2lmKHQ9PT1lKXJldHVybiB0O3ZhciBuPXQuYW5jZXN0b3JzKCksaT1lLmFuY2VzdG9ycygpLHI9bnVsbDt0PW4ucG9wKCksZT1pLnBvcCgpO2Zvcig7dD09PWU7KXI9dCx0PW4ucG9wKCksZT1pLnBvcCgpO3JldHVybiByfSkoZSx0KSxyPVtlXTtlIT09bjspci5wdXNoKGU9ZS5wYXJlbnQpO2Zvcih2YXIgbz1yLmxlbmd0aDt0IT09bjspci5zcGxpY2UobywwLHQpLHQ9dC5wYXJlbnQ7cmV0dXJuIHJ9LGFuY2VzdG9yczpmdW5jdGlvbiBWUygpe2Zvcih2YXIgdD10aGlzLGU9W3RdO3Q9dC5wYXJlbnQ7KWUucHVzaCh0KTtyZXR1cm4gZX0sZGVzY2VuZGFudHM6ZnVuY3Rpb24gVVMoKXt2YXIgdD1bXTtyZXR1cm4gdGhpcy5lYWNoKChmdW5jdGlvbihlKXt0LnB1c2goZSl9KSksdH0sbGVhdmVzOmZ1bmN0aW9uIGpTKCl7dmFyIHQ9W107cmV0dXJuIHRoaXMuZWFjaEJlZm9yZSgoZnVuY3Rpb24oZSl7ZS5jaGlsZHJlbnx8dC5wdXNoKGUpfSkpLHR9LGxpbmtzOmZ1bmN0aW9uIEdTKCl7dmFyIHQ9dGhpcyxlPVtdO3JldHVybiB0LmVhY2goKGZ1bmN0aW9uKG4pe24hPT10JiZlLnB1c2goe3NvdXJjZTpuLnBhcmVudCx0YXJnZXQ6bn0pfSkpLGV9LGNvcHk6ZnVuY3Rpb24gV1MoKXtyZXR1cm4ga1ModGhpcykuZWFjaEJlZm9yZShQUyl9fTt2YXIgcVM9QXJyYXkucHJvdG90eXBlLnNsaWNlO2Z1bmN0aW9uIFlTKHQpe2Zvcih2YXIgZSxuLGk9MCxyPSh0PShmdW5jdGlvbiBvKHQpe2Zvcih2YXIgZSxuLGk9dC5sZW5ndGg7aTspbj1NYXRoLnJhbmRvbSgpKmktLXwwLGU9dFtpXSx0W2ldPXRbbl0sdFtuXT1lO3JldHVybiB0fSkocVMuY2FsbCh0KSkpLmxlbmd0aCxhPVtdO2k8cjspZT10W2ldLG4mJktTKG4sZSk/KytpOihuPUpTKGE9WFMoYSxlKSksaT0wKTtyZXR1cm4gbn1mdW5jdGlvbiBYUyh0LGUpe3ZhciBuLGk7aWYoWlMoZSx0KSlyZXR1cm5bZV07Zm9yKG49MDtuPHQubGVuZ3RoOysrbilpZigkUyhlLHRbbl0pJiZaUyhRUyh0W25dLGUpLHQpKXJldHVyblt0W25dLGVdO2ZvcihuPTA7bjx0Lmxlbmd0aC0xOysrbilmb3IoaT1uKzE7aTx0Lmxlbmd0aDsrK2kpaWYoJFMoUVModFtuXSx0W2ldKSxlKSYmJFMoUVModFtuXSxlKSx0W2ldKSYmJFMoUVModFtpXSxlKSx0W25dKSYmWlModE0odFtuXSx0W2ldLGUpLHQpKXJldHVyblt0W25dLHRbaV0sZV07dGhyb3cgbmV3IEVycm9yfWZ1bmN0aW9uICRTKHQsZSl7dmFyIG49dC5yLWUucixpPWUueC10Lngscj1lLnktdC55O3JldHVybiBuPDB8fG4qbjxpKmkrcipyfWZ1bmN0aW9uIEtTKHQsZSl7dmFyIG49dC5yLWUucisxZS02LGk9ZS54LXQueCxyPWUueS10Lnk7cmV0dXJuIG4+MCYmbipuPmkqaStyKnJ9ZnVuY3Rpb24gWlModCxlKXtmb3IodmFyIG49MDtuPGUubGVuZ3RoOysrbilpZighS1ModCxlW25dKSlyZXR1cm4hMTtyZXR1cm4hMH1mdW5jdGlvbiBKUyh0KXtzd2l0Y2godC5sZW5ndGgpe2Nhc2UgMTpyZXR1cm4oZnVuY3Rpb24gZSh0KXtyZXR1cm57eDp0LngseTp0Lnkscjp0LnJ9fSkodFswXSk7Y2FzZSAyOnJldHVybiBRUyh0WzBdLHRbMV0pO2Nhc2UgMzpyZXR1cm4gdE0odFswXSx0WzFdLHRbMl0pfX1mdW5jdGlvbiBRUyh0LGUpe3ZhciBuPXQueCxpPXQueSxyPXQucixvPWUueCxhPWUueSxzPWUucixsPW8tbixjPWEtaSx1PXMtcixoPU1hdGguc3FydChsKmwrYypjKTtyZXR1cm57eDoobitvK2wvaCp1KS8yLHk6KGkrYStjL2gqdSkvMixyOihoK3IrcykvMn19ZnVuY3Rpb24gdE0odCxlLG4pe3ZhciBpPXQueCxyPXQueSxvPXQucixhPWUueCxzPWUueSxsPWUucixjPW4ueCx1PW4ueSxoPW4ucixkPWktYSxwPWktYyxmPXItcyxtPXItdSxnPWwtbyxfPWgtbyx5PWkqaStyKnItbypvLHY9eS1hKmEtcypzK2wqbCxiPXktYypjLXUqdStoKmgseD1wKmYtZCptLHc9KGYqYi1tKnYpLygyKngpLWksUz0obSpnLWYqXykveCxNPShwKnYtZCpiKS8oMip4KS1yLEU9KGQqXy1wKmcpL3gsVD1TKlMrRSpFLTEsQz0yKihvK3cqUytNKkUpLEE9dyp3K00qTS1vKm8saz0tKFQ/KEMrTWF0aC5zcXJ0KEMqQy00KlQqQSkpLygyKlQpOkEvQyk7cmV0dXJue3g6aSt3K1Mqayx5OnIrTStFKmsscjprfX1mdW5jdGlvbiBlTSh0LGUsbil7dmFyIGkscixvLGEscz10LngtZS54LGw9dC55LWUueSxjPXMqcytsKmw7Yz8ocj1lLnIrbi5yLGE9dC5yK24uciwocio9cik+KGEqPWEpPyhpPShjK2EtcikvKDIqYyksbz1NYXRoLnNxcnQoTWF0aC5tYXgoMCxhL2MtaSppKSksbi54PXQueC1pKnMtbypsLG4ueT10LnktaSpsK28qcyk6KGk9KGMrci1hKS8oMipjKSxvPU1hdGguc3FydChNYXRoLm1heCgwLHIvYy1pKmkpKSxuLng9ZS54K2kqcy1vKmwsbi55PWUueStpKmwrbypzKSk6KG4ueD1lLngrbi5yLG4ueT1lLnkpfWZ1bmN0aW9uIG5NKHQsZSl7dmFyIG49dC5yK2Uuci0xZS02LGk9ZS54LXQueCxyPWUueS10Lnk7cmV0dXJuIG4+MCYmbipuPmkqaStyKnJ9ZnVuY3Rpb24gaU0odCl7dmFyIGU9dC5fLG49dC5uZXh0Ll8saT1lLnIrbi5yLHI9KGUueCpuLnIrbi54KmUucikvaSxvPShlLnkqbi5yK24ueSplLnIpL2k7cmV0dXJuIHIqcitvKm99ZnVuY3Rpb24gck0odCl7dGhpcy5fPXQsdGhpcy5uZXh0PW51bGwsdGhpcy5wcmV2aW91cz1udWxsfWZ1bmN0aW9uIG9NKHQpe2lmKCEocj10Lmxlbmd0aCkpcmV0dXJuIDA7dmFyIGUsbixpLHIsbyxhLHMsbCxjLHUsaDtpZigoZT10WzBdKS54PTAsZS55PTAsIShyPjEpKXJldHVybiBlLnI7aWYoZS54PS0obj10WzFdKS5yLG4ueD1lLnIsbi55PTAsIShyPjIpKXJldHVybiBlLnIrbi5yO2VNKG4sZSxpPXRbMl0pLGU9bmV3IHJNKGUpLG49bmV3IHJNKG4pLGk9bmV3IHJNKGkpLGUubmV4dD1pLnByZXZpb3VzPW4sbi5uZXh0PWUucHJldmlvdXM9aSxpLm5leHQ9bi5wcmV2aW91cz1lO3Q6Zm9yKHM9MztzPHI7KytzKXtlTShlLl8sbi5fLGk9dFtzXSksaT1uZXcgck0oaSksbD1uLm5leHQsYz1lLnByZXZpb3VzLHU9bi5fLnIsaD1lLl8ucjtkb3tpZih1PD1oKXtpZihuTShsLl8saS5fKSl7ZS5uZXh0PW49bCxuLnByZXZpb3VzPWUsLS1zO2NvbnRpbnVlIHR9dSs9bC5fLnIsbD1sLm5leHR9ZWxzZXtpZihuTShjLl8saS5fKSl7KGU9YykubmV4dD1uLG4ucHJldmlvdXM9ZSwtLXM7Y29udGludWUgdH1oKz1jLl8ucixjPWMucHJldmlvdXN9fXdoaWxlKGwhPT1jLm5leHQpO2ZvcihpLnByZXZpb3VzPWUsaS5uZXh0PW4sZS5uZXh0PW4ucHJldmlvdXM9bj1pLG89aU0oZSk7KGk9aS5uZXh0KSE9PW47KShhPWlNKGkpKTxvJiYoZT1pLG89YSk7bj1lLm5leHR9Zm9yKGU9W24uX10saT1uOyhpPWkubmV4dCkhPT1uOyllLnB1c2goaS5fKTtmb3IoaT1ZUyhlKSxzPTA7czxyOysrcykoZT10W3NdKS54LT1pLngsZS55LT1pLnk7cmV0dXJuIGkucn1mdW5jdGlvbiBhTSh0KXtyZXR1cm4gbnVsbD09dD9udWxsOnNNKHQpfWZ1bmN0aW9uIHNNKHQpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0KXRocm93IG5ldyBFcnJvcjtyZXR1cm4gdH1mdW5jdGlvbiBsTSgpe3JldHVybiAwfWZ1bmN0aW9uIGNNKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0fX1mdW5jdGlvbiB1TSh0KXtyZXR1cm4gTWF0aC5zcXJ0KHQudmFsdWUpfWZ1bmN0aW9uIGhNKHQpe3JldHVybiBmdW5jdGlvbihlKXtlLmNoaWxkcmVufHwoZS5yPU1hdGgubWF4KDAsK3QoZSl8fDApKX19ZnVuY3Rpb24gZE0odCxlKXtyZXR1cm4gZnVuY3Rpb24obil7aWYoaT1uLmNoaWxkcmVuKXt2YXIgaSxyLG8sYT1pLmxlbmd0aCxzPXQobikqZXx8MDtpZihzKWZvcihyPTA7cjxhOysrcilpW3JdLnIrPXM7aWYobz1vTShpKSxzKWZvcihyPTA7cjxhOysrcilpW3JdLnItPXM7bi5yPW8rc319fWZ1bmN0aW9uIHBNKHQpe3JldHVybiBmdW5jdGlvbihlKXt2YXIgbj1lLnBhcmVudDtlLnIqPXQsbiYmKGUueD1uLngrdCplLngsZS55PW4ueSt0KmUueSl9fWZ1bmN0aW9uIGZNKHQpe3QueDA9TWF0aC5yb3VuZCh0LngwKSx0LnkwPU1hdGgucm91bmQodC55MCksdC54MT1NYXRoLnJvdW5kKHQueDEpLHQueTE9TWF0aC5yb3VuZCh0LnkxKX1mdW5jdGlvbiBtTSh0LGUsbixpLHIpe2Zvcih2YXIgbyxhPXQuY2hpbGRyZW4scz0tMSxsPWEubGVuZ3RoLGM9dC52YWx1ZSYmKGktZSkvdC52YWx1ZTsrK3M8bDspKG89YVtzXSkueTA9bixvLnkxPXIsby54MD1lLG8ueDE9ZSs9by52YWx1ZSpjfXZhciBnTT17ZGVwdGg6LTF9LF9NPXt9O2Z1bmN0aW9uIHlNKHQpe3JldHVybiB0LmlkfWZ1bmN0aW9uIHZNKHQpe3JldHVybiB0LnBhcmVudElkfWZ1bmN0aW9uIGJNKHQsZSl7cmV0dXJuIHQucGFyZW50PT09ZS5wYXJlbnQ/MToyfWZ1bmN0aW9uIHhNKHQpe3ZhciBlPXQuY2hpbGRyZW47cmV0dXJuIGU/ZVswXTp0LnR9ZnVuY3Rpb24gd00odCl7dmFyIGU9dC5jaGlsZHJlbjtyZXR1cm4gZT9lW2UubGVuZ3RoLTFdOnQudH1mdW5jdGlvbiBTTSh0LGUsbil7dmFyIGk9bi8oZS5pLXQuaSk7ZS5jLT1pLGUucys9bix0LmMrPWksZS56Kz1uLGUubSs9bn1mdW5jdGlvbiBNTSh0LGUsbil7cmV0dXJuIHQuYS5wYXJlbnQ9PT1lLnBhcmVudD90LmE6bn1mdW5jdGlvbiBFTSh0LGUpe3RoaXMuXz10LHRoaXMucGFyZW50PW51bGwsdGhpcy5jaGlsZHJlbj1udWxsLHRoaXMuQT1udWxsLHRoaXMuYT10aGlzLHRoaXMuej0wLHRoaXMubT0wLHRoaXMuYz0wLHRoaXMucz0wLHRoaXMudD1udWxsLHRoaXMuaT1lfWZ1bmN0aW9uIFRNKHQsZSxuLGkscil7Zm9yKHZhciBvLGE9dC5jaGlsZHJlbixzPS0xLGw9YS5sZW5ndGgsYz10LnZhbHVlJiYoci1uKS90LnZhbHVlOysrczxsOykobz1hW3NdKS54MD1lLG8ueDE9aSxvLnkwPW4sby55MT1uKz1vLnZhbHVlKmN9RU0ucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoSVMucHJvdG90eXBlKTt2YXIgQ009KDErTWF0aC5zcXJ0KDUpKS8yO2Z1bmN0aW9uIEFNKHQsZSxuLGkscixvKXtmb3IodmFyIGEscyxsLGMsdSxoLGQscCxmLG0sZyxfPVtdLHk9ZS5jaGlsZHJlbix2PTAsYj0wLHg9eS5sZW5ndGgsdz1lLnZhbHVlO3Y8eDspe2w9ci1uLGM9by1pO2Rve3U9eVtiKytdLnZhbHVlfXdoaWxlKCF1JiZiPHgpO2ZvcihoPWQ9dSxnPXUqdSoobT1NYXRoLm1heChjL2wsbC9jKS8odyp0KSksZj1NYXRoLm1heChkL2csZy9oKTtiPHg7KytiKXtpZih1Kz1zPXlbYl0udmFsdWUsczxoJiYoaD1zKSxzPmQmJihkPXMpLGc9dSp1Km0sKHA9TWF0aC5tYXgoZC9nLGcvaCkpPmYpe3UtPXM7YnJlYWt9Zj1wfV8ucHVzaChhPXt2YWx1ZTp1LGRpY2U6bDxjLGNoaWxkcmVuOnkuc2xpY2UodixiKX0pLGEuZGljZT9tTShhLG4saSxyLHc/aSs9Yyp1L3c6byk6VE0oYSxuLGksdz9uKz1sKnUvdzpyLG8pLHctPXUsdj1ifXJldHVybiBffXZhciBrTT0oZnVuY3Rpb24gdChlKXtmdW5jdGlvbiBuKHQsbixpLHIsbyl7QU0oZSx0LG4saSxyLG8pfXJldHVybiBuLnJhdGlvPWZ1bmN0aW9uKGUpe3JldHVybiB0KChlPStlKT4xP2U6MSl9LG59KShDTSk7dmFyIExNPShmdW5jdGlvbiB0KGUpe2Z1bmN0aW9uIG4odCxuLGkscixvKXtpZigoYT10Ll9zcXVhcmlmeSkmJmEucmF0aW89PT1lKWZvcih2YXIgYSxzLGwsYyx1LGg9LTEsZD1hLmxlbmd0aCxwPXQudmFsdWU7KytoPGQ7KXtmb3IobD0ocz1hW2hdKS5jaGlsZHJlbixjPXMudmFsdWU9MCx1PWwubGVuZ3RoO2M8dTsrK2Mpcy52YWx1ZSs9bFtjXS52YWx1ZTtzLmRpY2U/bU0ocyxuLGkscixpKz0oby1pKSpzLnZhbHVlL3ApOlRNKHMsbixpLG4rPShyLW4pKnMudmFsdWUvcCxvKSxwLT1zLnZhbHVlfWVsc2UgdC5fc3F1YXJpZnk9YT1BTShlLHQsbixpLHIsbyksYS5yYXRpbz1lfXJldHVybiBuLnJhdGlvPWZ1bmN0aW9uKGUpe3JldHVybiB0KChlPStlKT4xP2U6MSl9LG59KShDTSk7ZnVuY3Rpb24gUE0odCxlLG4pe3JldHVybihlWzBdLXRbMF0pKihuWzFdLXRbMV0pLShlWzFdLXRbMV0pKihuWzBdLXRbMF0pfWZ1bmN0aW9uIE5NKHQsZSl7cmV0dXJuIHRbMF0tZVswXXx8dFsxXS1lWzFdfWZ1bmN0aW9uIElNKHQpe2Zvcih2YXIgZT10Lmxlbmd0aCxuPVswLDFdLGk9MixyPTI7cjxlOysrcil7Zm9yKDtpPjEmJlBNKHRbbltpLTJdXSx0W25baS0xXV0sdFtyXSk8PTA7KS0taTtuW2krK109cn1yZXR1cm4gbi5zbGljZSgwLGkpfWZ1bmN0aW9uIFJNKCl7cmV0dXJuIE1hdGgucmFuZG9tKCl9dmFyIE9NPShmdW5jdGlvbiB0KGUpe2Z1bmN0aW9uIG4odCxuKXtyZXR1cm4gdD1udWxsPT10PzA6K3Qsbj1udWxsPT1uPzE6K24sMT09PWFyZ3VtZW50cy5sZW5ndGg/KG49dCx0PTApOm4tPXQsZnVuY3Rpb24oKXtyZXR1cm4gZSgpKm4rdH19cmV0dXJuIG4uc291cmNlPXQsbn0pKFJNKSx6TT0oZnVuY3Rpb24gdChlKXtmdW5jdGlvbiBuKHQsbil7dmFyIGkscjtyZXR1cm4gdD1udWxsPT10PzA6K3Qsbj1udWxsPT1uPzE6K24sZnVuY3Rpb24oKXt2YXIgbztpZihudWxsIT1pKW89aSxpPW51bGw7ZWxzZSBkb3tpPTIqZSgpLTEsbz0yKmUoKS0xLHI9aSppK28qb313aGlsZSghcnx8cj4xKTtyZXR1cm4gdCtuKm8qTWF0aC5zcXJ0KC0yKk1hdGgubG9nKHIpL3IpfX1yZXR1cm4gbi5zb3VyY2U9dCxufSkoUk0pLERNPShmdW5jdGlvbiB0KGUpe2Z1bmN0aW9uIG4oKXt2YXIgdD16TS5zb3VyY2UoZSkuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBmdW5jdGlvbigpe3JldHVybiBNYXRoLmV4cCh0KCkpfX1yZXR1cm4gbi5zb3VyY2U9dCxufSkoUk0pLEJNPShmdW5jdGlvbiB0KGUpe2Z1bmN0aW9uIG4odCl7cmV0dXJuIGZ1bmN0aW9uKCl7Zm9yKHZhciBuPTAsaT0wO2k8dDsrK2kpbis9ZSgpO3JldHVybiBufX1yZXR1cm4gbi5zb3VyY2U9dCxufSkoUk0pLEhNPShmdW5jdGlvbiB0KGUpe2Z1bmN0aW9uIG4odCl7dmFyIG49Qk0uc291cmNlKGUpKHQpO3JldHVybiBmdW5jdGlvbigpe3JldHVybiBuKCkvdH19cmV0dXJuIG4uc291cmNlPXQsbn0pKFJNKSxGTT0oZnVuY3Rpb24gdChlKXtmdW5jdGlvbiBuKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybi1NYXRoLmxvZygxLWUoKSkvdH19cmV0dXJuIG4uc291cmNlPXQsbn0pKFJNKTtmdW5jdGlvbiBWTSh0LGUpe3N3aXRjaChhcmd1bWVudHMubGVuZ3RoKXtjYXNlIDA6YnJlYWs7Y2FzZSAxOnRoaXMucmFuZ2UodCk7YnJlYWs7ZGVmYXVsdDp0aGlzLnJhbmdlKGUpLmRvbWFpbih0KX1yZXR1cm4gdGhpc31mdW5jdGlvbiBVTSh0LGUpe3N3aXRjaChhcmd1bWVudHMubGVuZ3RoKXtjYXNlIDA6YnJlYWs7Y2FzZSAxOnRoaXMuaW50ZXJwb2xhdG9yKHQpO2JyZWFrO2RlZmF1bHQ6dGhpcy5pbnRlcnBvbGF0b3IoZSkuZG9tYWluKHQpfXJldHVybiB0aGlzfXZhciBqTT1BcnJheS5wcm90b3R5cGUsR009ak0ubWFwLFdNPWpNLnNsaWNlLHFNPXtuYW1lOiJpbXBsaWNpdCJ9O2Z1bmN0aW9uIFlNKCl7dmFyIHQ9amcoKSxlPVtdLG49W10saT1xTTtmdW5jdGlvbiByKHIpe3ZhciBvPXIrIiIsYT10LmdldChvKTtpZighYSl7aWYoaSE9PXFNKXJldHVybiBpO3Quc2V0KG8sYT1lLnB1c2gocikpfXJldHVybiBuWyhhLTEpJW4ubGVuZ3RoXX1yZXR1cm4gci5kb21haW49ZnVuY3Rpb24obil7aWYoIWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGUuc2xpY2UoKTtlPVtdLHQ9amcoKTtmb3IodmFyIGksbyxhPS0xLHM9bi5sZW5ndGg7KythPHM7KXQuaGFzKG89KGk9blthXSkrIiIpfHx0LnNldChvLGUucHVzaChpKSk7cmV0dXJuIHJ9LHIucmFuZ2U9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49V00uY2FsbCh0KSxyKTpuLnNsaWNlKCl9LHIudW5rbm93bj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT10LHIpOml9LHIuY29weT1mdW5jdGlvbigpe3JldHVybiBZTShlLG4pLnVua25vd24oaSl9LFZNLmFwcGx5KHIsYXJndW1lbnRzKSxyfWZ1bmN0aW9uIFhNKCl7dmFyIHQsZSxuPVlNKCkudW5rbm93bih2b2lkIDApLGk9bi5kb21haW4scj1uLnJhbmdlLG89WzAsMV0sYT0hMSxzPTAsbD0wLGM9LjU7ZnVuY3Rpb24gdSgpe3ZhciBuPWkoKS5sZW5ndGgsdT1vWzFdPG9bMF0saD1vW3UtMF0sZD1vWzEtdV07dD0oZC1oKS9NYXRoLm1heCgxLG4tcysyKmwpLGEmJih0PU1hdGguZmxvb3IodCkpLGgrPShkLWgtdCoobi1zKSkqYyxlPXQqKDEtcyksYSYmKGg9TWF0aC5yb3VuZChoKSxlPU1hdGgucm91bmQoZSkpO3ZhciBwPUtsKG4pLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIGgrdCplfSkpO3JldHVybiByKHU/cC5yZXZlcnNlKCk6cCl9cmV0dXJuIGRlbGV0ZSBuLnVua25vd24sbi5kb21haW49ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGkodCksdSgpKTppKCl9LG4ucmFuZ2U9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89Wyt0WzBdLCt0WzFdXSx1KCkpOm8uc2xpY2UoKX0sbi5yYW5nZVJvdW5kPWZ1bmN0aW9uKHQpe3JldHVybiBvPVsrdFswXSwrdFsxXV0sYT0hMCx1KCl9LG4uYmFuZHdpZHRoPWZ1bmN0aW9uKCl7cmV0dXJuIGV9LG4uc3RlcD1mdW5jdGlvbigpe3JldHVybiB0fSxuLnJvdW5kPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPSEhdCx1KCkpOmF9LG4ucGFkZGluZz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocz1NYXRoLm1pbigxLGw9K3QpLHUoKSk6c30sbi5wYWRkaW5nSW5uZXI9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9TWF0aC5taW4oMSx0KSx1KCkpOnN9LG4ucGFkZGluZ091dGVyPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhsPSt0LHUoKSk6bH0sbi5hbGlnbj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYz1NYXRoLm1heCgwLE1hdGgubWluKDEsdCkpLHUoKSk6Y30sbi5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIFhNKGkoKSxvKS5yb3VuZChhKS5wYWRkaW5nSW5uZXIocykucGFkZGluZ091dGVyKGwpLmFsaWduKGMpfSxWTS5hcHBseSh1KCksYXJndW1lbnRzKX1mdW5jdGlvbiAkTSh0KXt2YXIgZT10LmNvcHk7cmV0dXJuIHQucGFkZGluZz10LnBhZGRpbmdPdXRlcixkZWxldGUgdC5wYWRkaW5nSW5uZXIsZGVsZXRlIHQucGFkZGluZ091dGVyLHQuY29weT1mdW5jdGlvbigpe3JldHVybiAkTShlKCkpfSx0fWZ1bmN0aW9uIEtNKCl7cmV0dXJuICRNKFhNLmFwcGx5KG51bGwsYXJndW1lbnRzKS5wYWRkaW5nSW5uZXIoMSkpfWZ1bmN0aW9uIFpNKHQpe3JldHVybit0fXZhciBKTT1bMCwxXTtmdW5jdGlvbiBRTSh0KXtyZXR1cm4gdH1mdW5jdGlvbiB0RSh0LGUpe3JldHVybihlLT10PSt0KT9mdW5jdGlvbihuKXtyZXR1cm4obi10KS9lfTooZnVuY3Rpb24gbih0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19KShpc05hTihlKT9OYU46LjUpfWZ1bmN0aW9uIGVFKHQpe3ZhciBlLG49dFswXSxpPXRbdC5sZW5ndGgtMV07cmV0dXJuIG4+aSYmKGU9bixuPWksaT1lKSxmdW5jdGlvbih0KXtyZXR1cm4gTWF0aC5tYXgobixNYXRoLm1pbihpLHQpKX19ZnVuY3Rpb24gbkUodCxlLG4pe3ZhciBpPXRbMF0scj10WzFdLG89ZVswXSxhPWVbMV07cmV0dXJuIHI8aT8oaT10RShyLGkpLG89bihhLG8pKTooaT10RShpLHIpLG89bihvLGEpKSxmdW5jdGlvbih0KXtyZXR1cm4gbyhpKHQpKX19ZnVuY3Rpb24gaUUodCxlLG4pe3ZhciBpPU1hdGgubWluKHQubGVuZ3RoLGUubGVuZ3RoKS0xLHI9bmV3IEFycmF5KGkpLG89bmV3IEFycmF5KGkpLGE9LTE7Zm9yKHRbaV08dFswXSYmKHQ9dC5zbGljZSgpLnJldmVyc2UoKSxlPWUuc2xpY2UoKS5yZXZlcnNlKCkpOysrYTxpOylyW2FdPXRFKHRbYV0sdFthKzFdKSxvW2FdPW4oZVthXSxlW2ErMV0pO3JldHVybiBmdW5jdGlvbihlKXt2YXIgbj1EbCh0LGUsMSxpKS0xO3JldHVybiBvW25dKHJbbl0oZSkpfX1mdW5jdGlvbiByRSh0LGUpe3JldHVybiBlLmRvbWFpbih0LmRvbWFpbigpKS5yYW5nZSh0LnJhbmdlKCkpLmludGVycG9sYXRlKHQuaW50ZXJwb2xhdGUoKSkuY2xhbXAodC5jbGFtcCgpKS51bmtub3duKHQudW5rbm93bigpKX1mdW5jdGlvbiBvRSgpe3ZhciB0LGUsbixpLHIsbyxhPUpNLHM9Sk0sbD1jcCxjPVFNO2Z1bmN0aW9uIHUoKXtyZXR1cm4gaT1NYXRoLm1pbihhLmxlbmd0aCxzLmxlbmd0aCk+Mj9pRTpuRSxyPW89bnVsbCxofWZ1bmN0aW9uIGgoZSl7cmV0dXJuIGlzTmFOKGU9K2UpP246KHJ8fChyPWkoYS5tYXAodCkscyxsKSkpKHQoYyhlKSkpfXJldHVybiBoLmludmVydD1mdW5jdGlvbihuKXtyZXR1cm4gYyhlKChvfHwobz1pKHMsYS5tYXAodCkscnApKSkobikpKX0saC5kb21haW49ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9R00uY2FsbCh0LFpNKSxjPT09UU18fChjPWVFKGEpKSx1KCkpOmEuc2xpY2UoKX0saC5yYW5nZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocz1XTS5jYWxsKHQpLHUoKSk6cy5zbGljZSgpfSxoLnJhbmdlUm91bmQ9ZnVuY3Rpb24odCl7cmV0dXJuIHM9V00uY2FsbCh0KSxsPXVwLHUoKX0saC5jbGFtcD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYz10P2VFKGEpOlFNLGgpOmMhPT1RTX0saC5pbnRlcnBvbGF0ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obD10LHUoKSk6bH0saC51bmtub3duPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPXQsaCk6bn0sZnVuY3Rpb24obixpKXtyZXR1cm4gdD1uLGU9aSx1KCl9fWZ1bmN0aW9uIGFFKHQsZSl7cmV0dXJuIG9FKCkodCxlKX1mdW5jdGlvbiBzRSh0LGUsbixpKXt2YXIgcixvPW5jKHQsZSxuKTtzd2l0Y2goKGk9a3kobnVsbD09aT8iLGYiOmkpKS50eXBlKXtjYXNlInMiOnZhciBhPU1hdGgubWF4KE1hdGguYWJzKHQpLE1hdGguYWJzKGUpKTtyZXR1cm4gbnVsbCE9aS5wcmVjaXNpb258fGlzTmFOKHI9R3kobyxhKSl8fChpLnByZWNpc2lvbj1yKSxCeShpLGEpO2Nhc2UiIjpjYXNlImUiOmNhc2UiZyI6Y2FzZSJwIjpjYXNlInIiOm51bGwhPWkucHJlY2lzaW9ufHxpc05hTihyPVd5KG8sTWF0aC5tYXgoTWF0aC5hYnModCksTWF0aC5hYnMoZSkpKSl8fChpLnByZWNpc2lvbj1yLSgiZSI9PT1pLnR5cGUpKTticmVhaztjYXNlImYiOmNhc2UiJSI6bnVsbCE9aS5wcmVjaXNpb258fGlzTmFOKHI9ankobykpfHwoaS5wcmVjaXNpb249ci0yKigiJSI9PT1pLnR5cGUpKX1yZXR1cm4gRHkoaSl9ZnVuY3Rpb24gbEUodCl7dmFyIGU9dC5kb21haW47cmV0dXJuIHQudGlja3M9ZnVuY3Rpb24odCl7dmFyIG49ZSgpO3JldHVybiB0YyhuWzBdLG5bbi5sZW5ndGgtMV0sbnVsbD09dD8xMDp0KX0sdC50aWNrRm9ybWF0PWZ1bmN0aW9uKHQsbil7dmFyIGk9ZSgpO3JldHVybiBzRShpWzBdLGlbaS5sZW5ndGgtMV0sbnVsbD09dD8xMDp0LG4pfSx0Lm5pY2U9ZnVuY3Rpb24obil7bnVsbD09biYmKG49MTApO3ZhciBpLHI9ZSgpLG89MCxhPXIubGVuZ3RoLTEscz1yW29dLGw9clthXTtyZXR1cm4gbDxzJiYoaT1zLHM9bCxsPWksaT1vLG89YSxhPWkpLChpPWVjKHMsbCxuKSk+MD9pPWVjKHM9TWF0aC5mbG9vcihzL2kpKmksbD1NYXRoLmNlaWwobC9pKSppLG4pOmk8MCYmKGk9ZWMocz1NYXRoLmNlaWwocyppKS9pLGw9TWF0aC5mbG9vcihsKmkpL2ksbikpLGk+MD8ocltvXT1NYXRoLmZsb29yKHMvaSkqaSxyW2FdPU1hdGguY2VpbChsL2kpKmksZShyKSk6aTwwJiYocltvXT1NYXRoLmNlaWwocyppKS9pLHJbYV09TWF0aC5mbG9vcihsKmkpL2ksZShyKSksdH0sdH1mdW5jdGlvbiBjRSgpe3ZhciB0PWFFKFFNLFFNKTtyZXR1cm4gdC5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIHJFKHQsY0UoKSl9LFZNLmFwcGx5KHQsYXJndW1lbnRzKSxsRSh0KX1mdW5jdGlvbiB1RSh0LGUpe3ZhciBuLGk9MCxyPSh0PXQuc2xpY2UoKSkubGVuZ3RoLTEsbz10W2ldLGE9dFtyXTtyZXR1cm4gYTxvJiYobj1pLGk9cixyPW4sbj1vLG89YSxhPW4pLHRbaV09ZS5mbG9vcihvKSx0W3JdPWUuY2VpbChhKSx0fWZ1bmN0aW9uIGhFKHQpe3JldHVybiBNYXRoLmxvZyh0KX1mdW5jdGlvbiBkRSh0KXtyZXR1cm4gTWF0aC5leHAodCl9ZnVuY3Rpb24gcEUodCl7cmV0dXJuLU1hdGgubG9nKC10KX1mdW5jdGlvbiBmRSh0KXtyZXR1cm4tTWF0aC5leHAoLXQpfWZ1bmN0aW9uIG1FKHQpe3JldHVybiBpc0Zpbml0ZSh0KT8rKCIxZSIrdCk6dDwwPzA6dH1mdW5jdGlvbiBnRSh0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuLXQoLWUpfX1mdW5jdGlvbiBfRSh0KXt2YXIgZSxuLGk9dChoRSxkRSkscj1pLmRvbWFpbixvPTEwO2Z1bmN0aW9uIGEoKXtyZXR1cm4gZT0oZnVuY3Rpb24gYSh0KXtyZXR1cm4gdD09PU1hdGguRT9NYXRoLmxvZzoxMD09PXQmJk1hdGgubG9nMTB8fDI9PT10JiZNYXRoLmxvZzJ8fCh0PU1hdGgubG9nKHQpLGZ1bmN0aW9uKGUpe3JldHVybiBNYXRoLmxvZyhlKS90fSl9KShvKSxuPShmdW5jdGlvbiBzKHQpe3JldHVybiAxMD09PXQ/bUU6dD09PU1hdGguRT9NYXRoLmV4cDpmdW5jdGlvbihlKXtyZXR1cm4gTWF0aC5wb3codCxlKX19KShvKSxyKClbMF08MD8oZT1nRShlKSxuPWdFKG4pLHQocEUsZkUpKTp0KGhFLGRFKSxpfXJldHVybiBpLmJhc2U9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89K3QsYSgpKTpvfSxpLmRvbWFpbj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocih0KSxhKCkpOnIoKX0saS50aWNrcz1mdW5jdGlvbih0KXt2YXIgaSxhPXIoKSxzPWFbMF0sbD1hW2EubGVuZ3RoLTFdOyhpPWw8cykmJihkPXMscz1sLGw9ZCk7dmFyIGMsdSxoLGQ9ZShzKSxwPWUobCksZj1udWxsPT10PzEwOit0LG09W107aWYoIShvJTEpJiZwLWQ8Zil7aWYoZD1NYXRoLnJvdW5kKGQpLTEscD1NYXRoLnJvdW5kKHApKzEscz4wKXtmb3IoO2Q8cDsrK2QpZm9yKHU9MSxjPW4oZCk7dTxvOysrdSlpZighKChoPWMqdSk8cykpe2lmKGg+bClicmVhazttLnB1c2goaCl9fWVsc2UgZm9yKDtkPHA7KytkKWZvcih1PW8tMSxjPW4oZCk7dT49MTstLXUpaWYoISgoaD1jKnUpPHMpKXtpZihoPmwpYnJlYWs7bS5wdXNoKGgpfX1lbHNlIG09dGMoZCxwLE1hdGgubWluKHAtZCxmKSkubWFwKG4pO3JldHVybiBpP20ucmV2ZXJzZSgpOm19LGkudGlja0Zvcm1hdD1mdW5jdGlvbih0LHIpe2lmKG51bGw9PXImJihyPTEwPT09bz8iLjBlIjoiLCIpLCJmdW5jdGlvbiIhPXR5cGVvZiByJiYocj1EeShyKSksdD09PTEvMClyZXR1cm4gcjtudWxsPT10JiYodD0xMCk7dmFyIGE9TWF0aC5tYXgoMSxvKnQvaS50aWNrcygpLmxlbmd0aCk7cmV0dXJuIGZ1bmN0aW9uKHQpe3ZhciBpPXQvbihNYXRoLnJvdW5kKGUodCkpKTtyZXR1cm4gaSpvPG8tLjUmJihpKj1vKSxpPD1hP3IodCk6IiJ9fSxpLm5pY2U9ZnVuY3Rpb24oKXtyZXR1cm4gcih1RShyKCkse2Zsb29yOmZ1bmN0aW9uKHQpe3JldHVybiBuKE1hdGguZmxvb3IoZSh0KSkpfSxjZWlsOmZ1bmN0aW9uKHQpe3JldHVybiBuKE1hdGguY2VpbChlKHQpKSl9fSkpfSxpfWZ1bmN0aW9uIHlFKCl7dmFyIHQ9X0Uob0UoKSkuZG9tYWluKFsxLDEwXSk7cmV0dXJuIHQuY29weT1mdW5jdGlvbigpe3JldHVybiByRSh0LHlFKCkpLmJhc2UodC5iYXNlKCkpfSxWTS5hcHBseSh0LGFyZ3VtZW50cyksdH1mdW5jdGlvbiB2RSh0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIE1hdGguc2lnbihlKSpNYXRoLmxvZzFwKE1hdGguYWJzKGUvdCkpfX1mdW5jdGlvbiBiRSh0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIE1hdGguc2lnbihlKSpNYXRoLmV4cG0xKE1hdGguYWJzKGUpKSp0fX1mdW5jdGlvbiB4RSh0KXt2YXIgZT0xLG49dCh2RShlKSxiRShlKSk7cmV0dXJuIG4uY29uc3RhbnQ9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dCh2RShlPStuKSxiRShlKSk6ZX0sbEUobil9ZnVuY3Rpb24gd0UodCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBlPDA/LU1hdGgucG93KC1lLHQpOk1hdGgucG93KGUsdCl9fWZ1bmN0aW9uIFNFKHQpe3JldHVybiB0PDA/LU1hdGguc3FydCgtdCk6TWF0aC5zcXJ0KHQpfWZ1bmN0aW9uIE1FKHQpe3JldHVybiB0PDA/LXQqdDp0KnR9ZnVuY3Rpb24gRUUodCl7dmFyIGU9dChRTSxRTSksbj0xO2Z1bmN0aW9uIGkoKXtyZXR1cm4gMT09PW4/dChRTSxRTSk6LjU9PT1uP3QoU0UsTUUpOnQod0Uobiksd0UoMS9uKSl9cmV0dXJuIGUuZXhwb25lbnQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49K3QsaSgpKTpufSxsRShlKX1mdW5jdGlvbiBURSgpe3ZhciB0PUVFKG9FKCkpO3JldHVybiB0LmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gckUodCxURSgpKS5leHBvbmVudCh0LmV4cG9uZW50KCkpfSxWTS5hcHBseSh0LGFyZ3VtZW50cyksdH1mdW5jdGlvbiBDRSgpe3ZhciB0LGU9W10sbj1bXSxpPVtdO2Z1bmN0aW9uIHIoKXt2YXIgdD0wLHI9TWF0aC5tYXgoMSxuLmxlbmd0aCk7Zm9yKGk9bmV3IEFycmF5KHItMSk7Kyt0PHI7KWlbdC0xXT1yYyhlLHQvcik7cmV0dXJuIG99ZnVuY3Rpb24gbyhlKXtyZXR1cm4gaXNOYU4oZT0rZSk/dDpuW0RsKGksZSldfXJldHVybiBvLmludmVydEV4dGVudD1mdW5jdGlvbih0KXt2YXIgcj1uLmluZGV4T2YodCk7cmV0dXJuIHI8MD9bTmFOLE5hTl06W3I+MD9pW3ItMV06ZVswXSxyPGkubGVuZ3RoP2lbcl06ZVtlLmxlbmd0aC0xXV19LG8uZG9tYWluPWZ1bmN0aW9uKHQpe2lmKCFhcmd1bWVudHMubGVuZ3RoKXJldHVybiBlLnNsaWNlKCk7ZT1bXTtmb3IodmFyIG4saT0wLG89dC5sZW5ndGg7aTxvOysraSludWxsPT0obj10W2ldKXx8aXNOYU4obj0rbil8fGUucHVzaChuKTtyZXR1cm4gZS5zb3J0KFJsKSxyKCl9LG8ucmFuZ2U9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49V00uY2FsbCh0KSxyKCkpOm4uc2xpY2UoKX0sby51bmtub3duPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PWUsbyk6dH0sby5xdWFudGlsZXM9ZnVuY3Rpb24oKXtyZXR1cm4gaS5zbGljZSgpfSxvLmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gQ0UoKS5kb21haW4oZSkucmFuZ2UobikudW5rbm93bih0KX0sVk0uYXBwbHkobyxhcmd1bWVudHMpfWZ1bmN0aW9uIEFFKCl7dmFyIHQsZT0wLG49MSxpPTEscj1bLjVdLG89WzAsMV07ZnVuY3Rpb24gYShlKXtyZXR1cm4gZTw9ZT9vW0RsKHIsZSwwLGkpXTp0fWZ1bmN0aW9uIHMoKXt2YXIgdD0tMTtmb3Iocj1uZXcgQXJyYXkoaSk7Kyt0PGk7KXJbdF09KCh0KzEpKm4tKHQtaSkqZSkvKGkrMSk7cmV0dXJuIGF9cmV0dXJuIGEuZG9tYWluPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPSt0WzBdLG49K3RbMV0scygpKTpbZSxuXX0sYS5yYW5nZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0obz1XTS5jYWxsKHQpKS5sZW5ndGgtMSxzKCkpOm8uc2xpY2UoKX0sYS5pbnZlcnRFeHRlbnQ9ZnVuY3Rpb24odCl7dmFyIGE9by5pbmRleE9mKHQpO3JldHVybiBhPDA/W05hTixOYU5dOmE8MT9bZSxyWzBdXTphPj1pP1tyW2ktMV0sbl06W3JbYS0xXSxyW2FdXX0sYS51bmtub3duPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PWUsYSk6YX0sYS50aHJlc2hvbGRzPWZ1bmN0aW9uKCl7cmV0dXJuIHIuc2xpY2UoKX0sYS5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIEFFKCkuZG9tYWluKFtlLG5dKS5yYW5nZShvKS51bmtub3duKHQpfSxWTS5hcHBseShsRShhKSxhcmd1bWVudHMpfXZhciBrRT1uZXcgRGF0ZSxMRT1uZXcgRGF0ZTtmdW5jdGlvbiBQRSh0LGUsbixpKXtmdW5jdGlvbiByKGUpe3JldHVybiB0KGU9MD09PWFyZ3VtZW50cy5sZW5ndGg/bmV3IERhdGU6bmV3IERhdGUoK2UpKSxlfXJldHVybiByLmZsb29yPWZ1bmN0aW9uKGUpe3JldHVybiB0KGU9bmV3IERhdGUoK2UpKSxlfSxyLmNlaWw9ZnVuY3Rpb24obil7cmV0dXJuIHQobj1uZXcgRGF0ZShuLTEpKSxlKG4sMSksdChuKSxufSxyLnJvdW5kPWZ1bmN0aW9uKHQpe3ZhciBlPXIodCksbj1yLmNlaWwodCk7cmV0dXJuIHQtZTxuLXQ/ZTpufSxyLm9mZnNldD1mdW5jdGlvbih0LG4pe3JldHVybiBlKHQ9bmV3IERhdGUoK3QpLG51bGw9PW4/MTpNYXRoLmZsb29yKG4pKSx0fSxyLnJhbmdlPWZ1bmN0aW9uKG4saSxvKXt2YXIgYSxzPVtdO2lmKG49ci5jZWlsKG4pLG89bnVsbD09bz8xOk1hdGguZmxvb3IobyksIShuPGkmJm8+MCkpcmV0dXJuIHM7ZG97cy5wdXNoKGE9bmV3IERhdGUoK24pKSxlKG4sbyksdChuKX13aGlsZShhPG4mJm48aSk7cmV0dXJuIHN9LHIuZmlsdGVyPWZ1bmN0aW9uKG4pe3JldHVybiBQRSgoZnVuY3Rpb24oZSl7aWYoZT49ZSlmb3IoO3QoZSksIW4oZSk7KWUuc2V0VGltZShlLTEpfSksKGZ1bmN0aW9uKHQsaSl7aWYodD49dClpZihpPDApZm9yKDsrK2k8PTA7KWZvcig7ZSh0LC0xKSwhbih0KTspO2Vsc2UgZm9yKDstLWk+PTA7KWZvcig7ZSh0LDEpLCFuKHQpOyk7fSkpfSxuJiYoci5jb3VudD1mdW5jdGlvbihlLGkpe3JldHVybiBrRS5zZXRUaW1lKCtlKSxMRS5zZXRUaW1lKCtpKSx0KGtFKSx0KExFKSxNYXRoLmZsb29yKG4oa0UsTEUpKX0sci5ldmVyeT1mdW5jdGlvbih0KXtyZXR1cm4gdD1NYXRoLmZsb29yKHQpLGlzRmluaXRlKHQpJiZ0PjA/dD4xP3IuZmlsdGVyKGk/ZnVuY3Rpb24oZSl7cmV0dXJuIGkoZSkldD09MH06ZnVuY3Rpb24oZSl7cmV0dXJuIHIuY291bnQoMCxlKSV0PT0wfSk6cjpudWxsfSkscn12YXIgTkU9UEUoKGZ1bmN0aW9uKCl7fSksKGZ1bmN0aW9uKHQsZSl7dC5zZXRUaW1lKCt0K2UpfSksKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUtdH0pKTtORS5ldmVyeT1mdW5jdGlvbih0KXtyZXR1cm4gdD1NYXRoLmZsb29yKHQpLGlzRmluaXRlKHQpJiZ0PjA/dD4xP1BFKChmdW5jdGlvbihlKXtlLnNldFRpbWUoTWF0aC5mbG9vcihlL3QpKnQpfSksKGZ1bmN0aW9uKGUsbil7ZS5zZXRUaW1lKCtlK24qdCl9KSwoZnVuY3Rpb24oZSxuKXtyZXR1cm4obi1lKS90fSkpOk5FOm51bGx9O3ZhciBJRT1ORSxSRT1ORS5yYW5nZSxPRT0xZTMsekU9NmU0LERFPTM2ZTUsQkU9ODY0ZTUsSEU9NjA0OGU1LEZFPVBFKChmdW5jdGlvbih0KXt0LnNldFRpbWUodC10LmdldE1pbGxpc2Vjb25kcygpKX0pLChmdW5jdGlvbih0LGUpe3Quc2V0VGltZSgrdCtlKk9FKX0pLChmdW5jdGlvbih0LGUpe3JldHVybihlLXQpL09FfSksKGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldFVUQ1NlY29uZHMoKX0pKSxWRT1GRSxVRT1GRS5yYW5nZSxqRT1QRSgoZnVuY3Rpb24odCl7dC5zZXRUaW1lKHQtdC5nZXRNaWxsaXNlY29uZHMoKS10LmdldFNlY29uZHMoKSpPRSl9KSwoZnVuY3Rpb24odCxlKXt0LnNldFRpbWUoK3QrZSp6RSl9KSwoZnVuY3Rpb24odCxlKXtyZXR1cm4oZS10KS96RX0pLChmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXRNaW51dGVzKCl9KSksR0U9akUsV0U9akUucmFuZ2UscUU9UEUoKGZ1bmN0aW9uKHQpe3Quc2V0VGltZSh0LXQuZ2V0TWlsbGlzZWNvbmRzKCktdC5nZXRTZWNvbmRzKCkqT0UtdC5nZXRNaW51dGVzKCkqekUpfSksKGZ1bmN0aW9uKHQsZSl7dC5zZXRUaW1lKCt0K2UqREUpfSksKGZ1bmN0aW9uKHQsZSl7cmV0dXJuKGUtdCkvREV9KSwoZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0SG91cnMoKX0pKSxZRT1xRSxYRT1xRS5yYW5nZSwkRT1QRSgoZnVuY3Rpb24odCl7dC5zZXRIb3VycygwLDAsMCwwKX0pLChmdW5jdGlvbih0LGUpe3Quc2V0RGF0ZSh0LmdldERhdGUoKStlKX0pLChmdW5jdGlvbih0LGUpe3JldHVybihlLXQtKGUuZ2V0VGltZXpvbmVPZmZzZXQoKS10LmdldFRpbWV6b25lT2Zmc2V0KCkpKnpFKS9CRX0pLChmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXREYXRlKCktMX0pKSxLRT0kRSxaRT0kRS5yYW5nZTtmdW5jdGlvbiBKRSh0KXtyZXR1cm4gUEUoKGZ1bmN0aW9uKGUpe2Uuc2V0RGF0ZShlLmdldERhdGUoKS0oZS5nZXREYXkoKSs3LXQpJTcpLGUuc2V0SG91cnMoMCwwLDAsMCl9KSwoZnVuY3Rpb24odCxlKXt0LnNldERhdGUodC5nZXREYXRlKCkrNyplKX0pLChmdW5jdGlvbih0LGUpe3JldHVybihlLXQtKGUuZ2V0VGltZXpvbmVPZmZzZXQoKS10LmdldFRpbWV6b25lT2Zmc2V0KCkpKnpFKS9IRX0pKX12YXIgUUU9SkUoMCksdFQ9SkUoMSksZVQ9SkUoMiksblQ9SkUoMyksaVQ9SkUoNCksclQ9SkUoNSksb1Q9SkUoNiksYVQ9UUUucmFuZ2Usc1Q9dFQucmFuZ2UsbFQ9ZVQucmFuZ2UsY1Q9blQucmFuZ2UsdVQ9aVQucmFuZ2UsaFQ9clQucmFuZ2UsZFQ9b1QucmFuZ2UscFQ9UEUoKGZ1bmN0aW9uKHQpe3Quc2V0RGF0ZSgxKSx0LnNldEhvdXJzKDAsMCwwLDApfSksKGZ1bmN0aW9uKHQsZSl7dC5zZXRNb250aCh0LmdldE1vbnRoKCkrZSl9KSwoZnVuY3Rpb24odCxlKXtyZXR1cm4gZS5nZXRNb250aCgpLXQuZ2V0TW9udGgoKSsxMiooZS5nZXRGdWxsWWVhcigpLXQuZ2V0RnVsbFllYXIoKSl9KSwoZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0TW9udGgoKX0pKSxmVD1wVCxtVD1wVC5yYW5nZSxnVD1QRSgoZnVuY3Rpb24odCl7dC5zZXRNb250aCgwLDEpLHQuc2V0SG91cnMoMCwwLDAsMCl9KSwoZnVuY3Rpb24odCxlKXt0LnNldEZ1bGxZZWFyKHQuZ2V0RnVsbFllYXIoKStlKX0pLChmdW5jdGlvbih0LGUpe3JldHVybiBlLmdldEZ1bGxZZWFyKCktdC5nZXRGdWxsWWVhcigpfSksKGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldEZ1bGxZZWFyKCl9KSk7Z1QuZXZlcnk9ZnVuY3Rpb24odCl7cmV0dXJuIGlzRmluaXRlKHQ9TWF0aC5mbG9vcih0KSkmJnQ+MD9QRSgoZnVuY3Rpb24oZSl7ZS5zZXRGdWxsWWVhcihNYXRoLmZsb29yKGUuZ2V0RnVsbFllYXIoKS90KSp0KSxlLnNldE1vbnRoKDAsMSksZS5zZXRIb3VycygwLDAsMCwwKX0pLChmdW5jdGlvbihlLG4pe2Uuc2V0RnVsbFllYXIoZS5nZXRGdWxsWWVhcigpK24qdCl9KSk6bnVsbH07dmFyIF9UPWdULHlUPWdULnJhbmdlLHZUPVBFKChmdW5jdGlvbih0KXt0LnNldFVUQ1NlY29uZHMoMCwwKX0pLChmdW5jdGlvbih0LGUpe3Quc2V0VGltZSgrdCtlKnpFKX0pLChmdW5jdGlvbih0LGUpe3JldHVybihlLXQpL3pFfSksKGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldFVUQ01pbnV0ZXMoKX0pKSxiVD12VCx4VD12VC5yYW5nZSx3VD1QRSgoZnVuY3Rpb24odCl7dC5zZXRVVENNaW51dGVzKDAsMCwwKX0pLChmdW5jdGlvbih0LGUpe3Quc2V0VGltZSgrdCtlKkRFKX0pLChmdW5jdGlvbih0LGUpe3JldHVybihlLXQpL0RFfSksKGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldFVUQ0hvdXJzKCl9KSksU1Q9d1QsTVQ9d1QucmFuZ2UsRVQ9UEUoKGZ1bmN0aW9uKHQpe3Quc2V0VVRDSG91cnMoMCwwLDAsMCl9KSwoZnVuY3Rpb24odCxlKXt0LnNldFVUQ0RhdGUodC5nZXRVVENEYXRlKCkrZSl9KSwoZnVuY3Rpb24odCxlKXtyZXR1cm4oZS10KS9CRX0pLChmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXRVVENEYXRlKCktMX0pKSxUVD1FVCxDVD1FVC5yYW5nZTtmdW5jdGlvbiBBVCh0KXtyZXR1cm4gUEUoKGZ1bmN0aW9uKGUpe2Uuc2V0VVRDRGF0ZShlLmdldFVUQ0RhdGUoKS0oZS5nZXRVVENEYXkoKSs3LXQpJTcpLGUuc2V0VVRDSG91cnMoMCwwLDAsMCl9KSwoZnVuY3Rpb24odCxlKXt0LnNldFVUQ0RhdGUodC5nZXRVVENEYXRlKCkrNyplKX0pLChmdW5jdGlvbih0LGUpe3JldHVybihlLXQpL0hFfSkpfXZhciBrVD1BVCgwKSxMVD1BVCgxKSxQVD1BVCgyKSxOVD1BVCgzKSxJVD1BVCg0KSxSVD1BVCg1KSxPVD1BVCg2KSx6VD1rVC5yYW5nZSxEVD1MVC5yYW5nZSxCVD1QVC5yYW5nZSxIVD1OVC5yYW5nZSxGVD1JVC5yYW5nZSxWVD1SVC5yYW5nZSxVVD1PVC5yYW5nZSxqVD1QRSgoZnVuY3Rpb24odCl7dC5zZXRVVENEYXRlKDEpLHQuc2V0VVRDSG91cnMoMCwwLDAsMCl9KSwoZnVuY3Rpb24odCxlKXt0LnNldFVUQ01vbnRoKHQuZ2V0VVRDTW9udGgoKStlKX0pLChmdW5jdGlvbih0LGUpe3JldHVybiBlLmdldFVUQ01vbnRoKCktdC5nZXRVVENNb250aCgpKzEyKihlLmdldFVUQ0Z1bGxZZWFyKCktdC5nZXRVVENGdWxsWWVhcigpKX0pLChmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXRVVENNb250aCgpfSkpLEdUPWpULFdUPWpULnJhbmdlLHFUPVBFKChmdW5jdGlvbih0KXt0LnNldFVUQ01vbnRoKDAsMSksdC5zZXRVVENIb3VycygwLDAsMCwwKX0pLChmdW5jdGlvbih0LGUpe3Quc2V0VVRDRnVsbFllYXIodC5nZXRVVENGdWxsWWVhcigpK2UpfSksKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUuZ2V0VVRDRnVsbFllYXIoKS10LmdldFVUQ0Z1bGxZZWFyKCl9KSwoZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0VVRDRnVsbFllYXIoKX0pKTtxVC5ldmVyeT1mdW5jdGlvbih0KXtyZXR1cm4gaXNGaW5pdGUodD1NYXRoLmZsb29yKHQpKSYmdD4wP1BFKChmdW5jdGlvbihlKXtlLnNldFVUQ0Z1bGxZZWFyKE1hdGguZmxvb3IoZS5nZXRVVENGdWxsWWVhcigpL3QpKnQpLGUuc2V0VVRDTW9udGgoMCwxKSxlLnNldFVUQ0hvdXJzKDAsMCwwLDApfSksKGZ1bmN0aW9uKGUsbil7ZS5zZXRVVENGdWxsWWVhcihlLmdldFVUQ0Z1bGxZZWFyKCkrbip0KX0pKTpudWxsfTt2YXIgWVQ9cVQsWFQ9cVQucmFuZ2U7ZnVuY3Rpb24gJFQodCl7aWYoMDw9dC55JiZ0Lnk8MTAwKXt2YXIgZT1uZXcgRGF0ZSgtMSx0Lm0sdC5kLHQuSCx0Lk0sdC5TLHQuTCk7cmV0dXJuIGUuc2V0RnVsbFllYXIodC55KSxlfXJldHVybiBuZXcgRGF0ZSh0LnksdC5tLHQuZCx0LkgsdC5NLHQuUyx0LkwpfWZ1bmN0aW9uIEtUKHQpe2lmKDA8PXQueSYmdC55PDEwMCl7dmFyIGU9bmV3IERhdGUoRGF0ZS5VVEMoLTEsdC5tLHQuZCx0LkgsdC5NLHQuUyx0LkwpKTtyZXR1cm4gZS5zZXRVVENGdWxsWWVhcih0LnkpLGV9cmV0dXJuIG5ldyBEYXRlKERhdGUuVVRDKHQueSx0Lm0sdC5kLHQuSCx0Lk0sdC5TLHQuTCkpfWZ1bmN0aW9uIFpUKHQsZSxuKXtyZXR1cm57eTp0LG06ZSxkOm4sSDowLE06MCxTOjAsTDowfX1mdW5jdGlvbiBKVCh0KXt2YXIgZT10LmRhdGVUaW1lLG49dC5kYXRlLGk9dC50aW1lLHI9dC5wZXJpb2RzLG89dC5kYXlzLGE9dC5zaG9ydERheXMscz10Lm1vbnRocyxsPXQuc2hvcnRNb250aHMsYz11QyhyKSx1PWhDKHIpLGg9dUMobyksZD1oQyhvKSxwPXVDKGEpLGY9aEMoYSksbT11QyhzKSxnPWhDKHMpLF89dUMobCkseT1oQyhsKSx2PXthOmZ1bmN0aW9uIGIodCl7cmV0dXJuIGFbdC5nZXREYXkoKV19LEE6ZnVuY3Rpb24geCh0KXtyZXR1cm4gb1t0LmdldERheSgpXX0sYjpmdW5jdGlvbiB3KHQpe3JldHVybiBsW3QuZ2V0TW9udGgoKV19LEI6ZnVuY3Rpb24gUyh0KXtyZXR1cm4gc1t0LmdldE1vbnRoKCldfSxjOm51bGwsZDpOQyxlOk5DLGY6REMsZzpYQyxHOktDLEg6SUMsSTpSQyxqOk9DLEw6ekMsbTpCQyxNOkhDLHA6ZnVuY3Rpb24gTSh0KXtyZXR1cm4gclsrKHQuZ2V0SG91cnMoKT49MTIpXX0scTpmdW5jdGlvbiBFKHQpe3JldHVybiAxK35+KHQuZ2V0TW9udGgoKS8zKX0sUTp2QSxzOmJBLFM6RkMsdTpWQyxVOlVDLFY6R0MsdzpXQyxXOnFDLHg6bnVsbCxYOm51bGwseTpZQyxZOiRDLFo6WkMsIiUiOnlBfSxUPXthOmZ1bmN0aW9uIEModCl7cmV0dXJuIGFbdC5nZXRVVENEYXkoKV19LEE6ZnVuY3Rpb24gQSh0KXtyZXR1cm4gb1t0LmdldFVUQ0RheSgpXX0sYjpmdW5jdGlvbiBrKHQpe3JldHVybiBsW3QuZ2V0VVRDTW9udGgoKV19LEI6ZnVuY3Rpb24gTCh0KXtyZXR1cm4gc1t0LmdldFVUQ01vbnRoKCldfSxjOm51bGwsZDpKQyxlOkpDLGY6aUEsZzpmQSxHOmdBLEg6UUMsSTp0QSxqOmVBLEw6bkEsbTpyQSxNOm9BLHA6ZnVuY3Rpb24gUCh0KXtyZXR1cm4gclsrKHQuZ2V0VVRDSG91cnMoKT49MTIpXX0scTpmdW5jdGlvbiBOKHQpe3JldHVybiAxK35+KHQuZ2V0VVRDTW9udGgoKS8zKX0sUTp2QSxzOmJBLFM6YUEsdTpzQSxVOmxBLFY6dUEsdzpoQSxXOmRBLHg6bnVsbCxYOm51bGwseTpwQSxZOm1BLFo6X0EsIiUiOnlBfSxJPXthOmZ1bmN0aW9uIFIodCxlLG4pe3ZhciBpPXAuZXhlYyhlLnNsaWNlKG4pKTtyZXR1cm4gaT8odC53PWZbaVswXS50b0xvd2VyQ2FzZSgpXSxuK2lbMF0ubGVuZ3RoKTotMX0sQTpmdW5jdGlvbiBPKHQsZSxuKXt2YXIgaT1oLmV4ZWMoZS5zbGljZShuKSk7cmV0dXJuIGk/KHQudz1kW2lbMF0udG9Mb3dlckNhc2UoKV0sbitpWzBdLmxlbmd0aCk6LTF9LGI6ZnVuY3Rpb24geih0LGUsbil7dmFyIGk9Xy5leGVjKGUuc2xpY2UobikpO3JldHVybiBpPyh0Lm09eVtpWzBdLnRvTG93ZXJDYXNlKCldLG4raVswXS5sZW5ndGgpOi0xfSxCOmZ1bmN0aW9uIEQodCxlLG4pe3ZhciBpPW0uZXhlYyhlLnNsaWNlKG4pKTtyZXR1cm4gaT8odC5tPWdbaVswXS50b0xvd2VyQ2FzZSgpXSxuK2lbMF0ubGVuZ3RoKTotMX0sYzpmdW5jdGlvbiBCKHQsbixpKXtyZXR1cm4gRyh0LGUsbixpKX0sZDp3QyxlOndDLGY6QUMsZzp5QyxHOl9DLEg6TUMsSTpNQyxqOlNDLEw6Q0MsbTp4QyxNOkVDLHA6ZnVuY3Rpb24gSCh0LGUsbil7dmFyIGk9Yy5leGVjKGUuc2xpY2UobikpO3JldHVybiBpPyh0LnA9dVtpWzBdLnRvTG93ZXJDYXNlKCldLG4raVswXS5sZW5ndGgpOi0xfSxxOmJDLFE6TEMsczpQQyxTOlRDLHU6cEMsVTpmQyxWOm1DLHc6ZEMsVzpnQyx4OmZ1bmN0aW9uIEYodCxlLGkpe3JldHVybiBHKHQsbixlLGkpfSxYOmZ1bmN0aW9uIFYodCxlLG4pe3JldHVybiBHKHQsaSxlLG4pfSx5OnlDLFk6X0MsWjp2QywiJSI6a0N9O2Z1bmN0aW9uIFUodCxlKXtyZXR1cm4gZnVuY3Rpb24obil7dmFyIGkscixvLGE9W10scz0tMSxsPTAsYz10Lmxlbmd0aDtmb3IobiBpbnN0YW5jZW9mIERhdGV8fChuPW5ldyBEYXRlKCtuKSk7KytzPGM7KTM3PT09dC5jaGFyQ29kZUF0KHMpJiYoYS5wdXNoKHQuc2xpY2UobCxzKSksbnVsbCE9KHI9ckNbaT10LmNoYXJBdCgrK3MpXSk/aT10LmNoYXJBdCgrK3MpOnI9ImUiPT09aT8iICI6IjAiLChvPWVbaV0pJiYoaT1vKG4scikpLGEucHVzaChpKSxsPXMrMSk7cmV0dXJuIGEucHVzaCh0LnNsaWNlKGwscykpLGEuam9pbigiIil9fWZ1bmN0aW9uIGoodCxlKXtyZXR1cm4gZnVuY3Rpb24obil7dmFyIGkscixvPVpUKDE5MDAsdm9pZCAwLDEpO2lmKEcobyx0LG4rPSIiLDApIT1uLmxlbmd0aClyZXR1cm4gbnVsbDtpZigiUSJpbiBvKXJldHVybiBuZXcgRGF0ZShvLlEpO2lmKCJzImluIG8pcmV0dXJuIG5ldyBEYXRlKDFlMypvLnMrKCJMImluIG8/by5MOjApKTtpZihlJiYhKCJaImluIG8pJiYoby5aPTApLCJwImluIG8mJihvLkg9by5IJTEyKzEyKm8ucCksdm9pZCAwPT09by5tJiYoby5tPSJxImluIG8/by5xOjApLCJWImluIG8pe2lmKG8uVjwxfHxvLlY+NTMpcmV0dXJuIG51bGw7InciaW4gb3x8KG8udz0xKSwiWiJpbiBvPyhyPShpPUtUKFpUKG8ueSwwLDEpKSkuZ2V0VVRDRGF5KCksaT1yPjR8fDA9PT1yP0xULmNlaWwoaSk6TFQoaSksaT1UVC5vZmZzZXQoaSw3KihvLlYtMSkpLG8ueT1pLmdldFVUQ0Z1bGxZZWFyKCksby5tPWkuZ2V0VVRDTW9udGgoKSxvLmQ9aS5nZXRVVENEYXRlKCkrKG8udys2KSU3KToocj0oaT0kVChaVChvLnksMCwxKSkpLmdldERheSgpLGk9cj40fHwwPT09cj90VC5jZWlsKGkpOnRUKGkpLGk9S0Uub2Zmc2V0KGksNyooby5WLTEpKSxvLnk9aS5nZXRGdWxsWWVhcigpLG8ubT1pLmdldE1vbnRoKCksby5kPWkuZ2V0RGF0ZSgpKyhvLncrNiklNyl9ZWxzZSgiVyJpbiBvfHwiVSJpbiBvKSYmKCJ3ImluIG98fChvLnc9InUiaW4gbz9vLnUlNzoiVyJpbiBvPzE6MCkscj0iWiJpbiBvP0tUKFpUKG8ueSwwLDEpKS5nZXRVVENEYXkoKTokVChaVChvLnksMCwxKSkuZ2V0RGF5KCksby5tPTAsby5kPSJXImluIG8/KG8udys2KSU3Kzcqby5XLShyKzUpJTc6by53Kzcqby5VLShyKzYpJTcpO3JldHVybiJaImluIG8/KG8uSCs9by5aLzEwMHwwLG8uTSs9by5aJTEwMCxLVChvKSk6JFQobyl9fWZ1bmN0aW9uIEcodCxlLG4saSl7Zm9yKHZhciByLG8sYT0wLHM9ZS5sZW5ndGgsbD1uLmxlbmd0aDthPHM7KXtpZihpPj1sKXJldHVybi0xO2lmKDM3PT09KHI9ZS5jaGFyQ29kZUF0KGErKykpKXtpZihyPWUuY2hhckF0KGErKyksIShvPUlbciBpbiByQz9lLmNoYXJBdChhKyspOnJdKXx8KGk9byh0LG4saSkpPDApcmV0dXJuLTF9ZWxzZSBpZihyIT1uLmNoYXJDb2RlQXQoaSsrKSlyZXR1cm4tMX1yZXR1cm4gaX1yZXR1cm4gdi54PVUobix2KSx2Llg9VShpLHYpLHYuYz1VKGUsdiksVC54PVUobixUKSxULlg9VShpLFQpLFQuYz1VKGUsVCkse2Zvcm1hdDpmdW5jdGlvbih0KXt2YXIgZT1VKHQrPSIiLHYpO3JldHVybiBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHR9LGV9LHBhcnNlOmZ1bmN0aW9uKHQpe3ZhciBlPWoodCs9IiIsITEpO3JldHVybiBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHR9LGV9LHV0Y0Zvcm1hdDpmdW5jdGlvbih0KXt2YXIgZT1VKHQrPSIiLFQpO3JldHVybiBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHR9LGV9LHV0Y1BhcnNlOmZ1bmN0aW9uKHQpe3ZhciBlPWoodCs9IiIsITApO3JldHVybiBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHR9LGV9fX12YXIgUVQsdEMsZUMsbkMsaUMsckM9eyItIjoiIixfOiIgIiwwOiIwIn0sb0M9L15ccypcZCsvLGFDPS9eJS8sc0M9L1tcXF4kKis/fFtcXSgpLnt9XS9nO2Z1bmN0aW9uIGxDKHQsZSxuKXt2YXIgaT10PDA/Ii0iOiIiLHI9KGk/LXQ6dCkrIiIsbz1yLmxlbmd0aDtyZXR1cm4gaSsobzxuP25ldyBBcnJheShuLW8rMSkuam9pbihlKStyOnIpfWZ1bmN0aW9uIGNDKHQpe3JldHVybiB0LnJlcGxhY2Uoc0MsIlxcJCYiKX1mdW5jdGlvbiB1Qyh0KXtyZXR1cm4gbmV3IFJlZ0V4cCgiXig/OiIrdC5tYXAoY0MpLmpvaW4oInwiKSsiKSIsImkiKX1mdW5jdGlvbiBoQyh0KXtmb3IodmFyIGU9e30sbj0tMSxpPXQubGVuZ3RoOysrbjxpOyllW3Rbbl0udG9Mb3dlckNhc2UoKV09bjtyZXR1cm4gZX1mdW5jdGlvbiBkQyh0LGUsbil7dmFyIGk9b0MuZXhlYyhlLnNsaWNlKG4sbisxKSk7cmV0dXJuIGk/KHQudz0raVswXSxuK2lbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBwQyh0LGUsbil7dmFyIGk9b0MuZXhlYyhlLnNsaWNlKG4sbisxKSk7cmV0dXJuIGk/KHQudT0raVswXSxuK2lbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBmQyh0LGUsbil7dmFyIGk9b0MuZXhlYyhlLnNsaWNlKG4sbisyKSk7cmV0dXJuIGk/KHQuVT0raVswXSxuK2lbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBtQyh0LGUsbil7dmFyIGk9b0MuZXhlYyhlLnNsaWNlKG4sbisyKSk7cmV0dXJuIGk/KHQuVj0raVswXSxuK2lbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBnQyh0LGUsbil7dmFyIGk9b0MuZXhlYyhlLnNsaWNlKG4sbisyKSk7cmV0dXJuIGk/KHQuVz0raVswXSxuK2lbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBfQyh0LGUsbil7dmFyIGk9b0MuZXhlYyhlLnNsaWNlKG4sbis0KSk7cmV0dXJuIGk/KHQueT0raVswXSxuK2lbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiB5Qyh0LGUsbil7dmFyIGk9b0MuZXhlYyhlLnNsaWNlKG4sbisyKSk7cmV0dXJuIGk/KHQueT0raVswXSsoK2lbMF0+Njg/MTkwMDoyZTMpLG4raVswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIHZDKHQsZSxuKXt2YXIgaT0vXihaKXwoWystXVxkXGQpKD86Oj8oXGRcZCkpPy8uZXhlYyhlLnNsaWNlKG4sbis2KSk7cmV0dXJuIGk/KHQuWj1pWzFdPzA6LShpWzJdKyhpWzNdfHwiMDAiKSksbitpWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gYkModCxlLG4pe3ZhciBpPW9DLmV4ZWMoZS5zbGljZShuLG4rMSkpO3JldHVybiBpPyh0LnE9MyppWzBdLTMsbitpWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24geEModCxlLG4pe3ZhciBpPW9DLmV4ZWMoZS5zbGljZShuLG4rMikpO3JldHVybiBpPyh0Lm09aVswXS0xLG4raVswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIHdDKHQsZSxuKXt2YXIgaT1vQy5leGVjKGUuc2xpY2UobixuKzIpKTtyZXR1cm4gaT8odC5kPStpWzBdLG4raVswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIFNDKHQsZSxuKXt2YXIgaT1vQy5leGVjKGUuc2xpY2UobixuKzMpKTtyZXR1cm4gaT8odC5tPTAsdC5kPStpWzBdLG4raVswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIE1DKHQsZSxuKXt2YXIgaT1vQy5leGVjKGUuc2xpY2UobixuKzIpKTtyZXR1cm4gaT8odC5IPStpWzBdLG4raVswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIEVDKHQsZSxuKXt2YXIgaT1vQy5leGVjKGUuc2xpY2UobixuKzIpKTtyZXR1cm4gaT8odC5NPStpWzBdLG4raVswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIFRDKHQsZSxuKXt2YXIgaT1vQy5leGVjKGUuc2xpY2UobixuKzIpKTtyZXR1cm4gaT8odC5TPStpWzBdLG4raVswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIENDKHQsZSxuKXt2YXIgaT1vQy5leGVjKGUuc2xpY2UobixuKzMpKTtyZXR1cm4gaT8odC5MPStpWzBdLG4raVswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIEFDKHQsZSxuKXt2YXIgaT1vQy5leGVjKGUuc2xpY2UobixuKzYpKTtyZXR1cm4gaT8odC5MPU1hdGguZmxvb3IoaVswXS8xZTMpLG4raVswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIGtDKHQsZSxuKXt2YXIgaT1hQy5leGVjKGUuc2xpY2UobixuKzEpKTtyZXR1cm4gaT9uK2lbMF0ubGVuZ3RoOi0xfWZ1bmN0aW9uIExDKHQsZSxuKXt2YXIgaT1vQy5leGVjKGUuc2xpY2UobikpO3JldHVybiBpPyh0LlE9K2lbMF0sbitpWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gUEModCxlLG4pe3ZhciBpPW9DLmV4ZWMoZS5zbGljZShuKSk7cmV0dXJuIGk/KHQucz0raVswXSxuK2lbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBOQyh0LGUpe3JldHVybiBsQyh0LmdldERhdGUoKSxlLDIpfWZ1bmN0aW9uIElDKHQsZSl7cmV0dXJuIGxDKHQuZ2V0SG91cnMoKSxlLDIpfWZ1bmN0aW9uIFJDKHQsZSl7cmV0dXJuIGxDKHQuZ2V0SG91cnMoKSUxMnx8MTIsZSwyKX1mdW5jdGlvbiBPQyh0LGUpe3JldHVybiBsQygxK0tFLmNvdW50KF9UKHQpLHQpLGUsMyl9ZnVuY3Rpb24gekModCxlKXtyZXR1cm4gbEModC5nZXRNaWxsaXNlY29uZHMoKSxlLDMpfWZ1bmN0aW9uIERDKHQsZSl7cmV0dXJuIHpDKHQsZSkrIjAwMCJ9ZnVuY3Rpb24gQkModCxlKXtyZXR1cm4gbEModC5nZXRNb250aCgpKzEsZSwyKX1mdW5jdGlvbiBIQyh0LGUpe3JldHVybiBsQyh0LmdldE1pbnV0ZXMoKSxlLDIpfWZ1bmN0aW9uIEZDKHQsZSl7cmV0dXJuIGxDKHQuZ2V0U2Vjb25kcygpLGUsMil9ZnVuY3Rpb24gVkModCl7dmFyIGU9dC5nZXREYXkoKTtyZXR1cm4gMD09PWU/NzplfWZ1bmN0aW9uIFVDKHQsZSl7cmV0dXJuIGxDKFFFLmNvdW50KF9UKHQpLTEsdCksZSwyKX1mdW5jdGlvbiBqQyh0KXt2YXIgZT10LmdldERheSgpO3JldHVybiBlPj00fHwwPT09ZT9pVCh0KTppVC5jZWlsKHQpfWZ1bmN0aW9uIEdDKHQsZSl7cmV0dXJuIHQ9akModCksbEMoaVQuY291bnQoX1QodCksdCkrKDQ9PT1fVCh0KS5nZXREYXkoKSksZSwyKX1mdW5jdGlvbiBXQyh0KXtyZXR1cm4gdC5nZXREYXkoKX1mdW5jdGlvbiBxQyh0LGUpe3JldHVybiBsQyh0VC5jb3VudChfVCh0KS0xLHQpLGUsMil9ZnVuY3Rpb24gWUModCxlKXtyZXR1cm4gbEModC5nZXRGdWxsWWVhcigpJTEwMCxlLDIpfWZ1bmN0aW9uIFhDKHQsZSl7cmV0dXJuIGxDKCh0PWpDKHQpKS5nZXRGdWxsWWVhcigpJTEwMCxlLDIpfWZ1bmN0aW9uICRDKHQsZSl7cmV0dXJuIGxDKHQuZ2V0RnVsbFllYXIoKSUxZTQsZSw0KX1mdW5jdGlvbiBLQyh0LGUpe3ZhciBuPXQuZ2V0RGF5KCk7cmV0dXJuIGxDKCh0PW4+PTR8fDA9PT1uP2lUKHQpOmlULmNlaWwodCkpLmdldEZ1bGxZZWFyKCklMWU0LGUsNCl9ZnVuY3Rpb24gWkModCl7dmFyIGU9dC5nZXRUaW1lem9uZU9mZnNldCgpO3JldHVybihlPjA/Ii0iOihlKj0tMSwiKyIpKStsQyhlLzYwfDAsIjAiLDIpK2xDKGUlNjAsIjAiLDIpfWZ1bmN0aW9uIEpDKHQsZSl7cmV0dXJuIGxDKHQuZ2V0VVRDRGF0ZSgpLGUsMil9ZnVuY3Rpb24gUUModCxlKXtyZXR1cm4gbEModC5nZXRVVENIb3VycygpLGUsMil9ZnVuY3Rpb24gdEEodCxlKXtyZXR1cm4gbEModC5nZXRVVENIb3VycygpJTEyfHwxMixlLDIpfWZ1bmN0aW9uIGVBKHQsZSl7cmV0dXJuIGxDKDErVFQuY291bnQoWVQodCksdCksZSwzKX1mdW5jdGlvbiBuQSh0LGUpe3JldHVybiBsQyh0LmdldFVUQ01pbGxpc2Vjb25kcygpLGUsMyl9ZnVuY3Rpb24gaUEodCxlKXtyZXR1cm4gbkEodCxlKSsiMDAwIn1mdW5jdGlvbiByQSh0LGUpe3JldHVybiBsQyh0LmdldFVUQ01vbnRoKCkrMSxlLDIpfWZ1bmN0aW9uIG9BKHQsZSl7cmV0dXJuIGxDKHQuZ2V0VVRDTWludXRlcygpLGUsMil9ZnVuY3Rpb24gYUEodCxlKXtyZXR1cm4gbEModC5nZXRVVENTZWNvbmRzKCksZSwyKX1mdW5jdGlvbiBzQSh0KXt2YXIgZT10LmdldFVUQ0RheSgpO3JldHVybiAwPT09ZT83OmV9ZnVuY3Rpb24gbEEodCxlKXtyZXR1cm4gbEMoa1QuY291bnQoWVQodCktMSx0KSxlLDIpfWZ1bmN0aW9uIGNBKHQpe3ZhciBlPXQuZ2V0VVRDRGF5KCk7cmV0dXJuIGU+PTR8fDA9PT1lP0lUKHQpOklULmNlaWwodCl9ZnVuY3Rpb24gdUEodCxlKXtyZXR1cm4gdD1jQSh0KSxsQyhJVC5jb3VudChZVCh0KSx0KSsoND09PVlUKHQpLmdldFVUQ0RheSgpKSxlLDIpfWZ1bmN0aW9uIGhBKHQpe3JldHVybiB0LmdldFVUQ0RheSgpfWZ1bmN0aW9uIGRBKHQsZSl7cmV0dXJuIGxDKExULmNvdW50KFlUKHQpLTEsdCksZSwyKX1mdW5jdGlvbiBwQSh0LGUpe3JldHVybiBsQyh0LmdldFVUQ0Z1bGxZZWFyKCklMTAwLGUsMil9ZnVuY3Rpb24gZkEodCxlKXtyZXR1cm4gbEMoKHQ9Y0EodCkpLmdldFVUQ0Z1bGxZZWFyKCklMTAwLGUsMil9ZnVuY3Rpb24gbUEodCxlKXtyZXR1cm4gbEModC5nZXRVVENGdWxsWWVhcigpJTFlNCxlLDQpfWZ1bmN0aW9uIGdBKHQsZSl7dmFyIG49dC5nZXRVVENEYXkoKTtyZXR1cm4gbEMoKHQ9bj49NHx8MD09PW4/SVQodCk6SVQuY2VpbCh0KSkuZ2V0VVRDRnVsbFllYXIoKSUxZTQsZSw0KX1mdW5jdGlvbiBfQSgpe3JldHVybiIrMDAwMCJ9ZnVuY3Rpb24geUEoKXtyZXR1cm4iJSJ9ZnVuY3Rpb24gdkEodCl7cmV0dXJuK3R9ZnVuY3Rpb24gYkEodCl7cmV0dXJuIE1hdGguZmxvb3IoK3QvMWUzKX1mdW5jdGlvbiB4QSh0KXtyZXR1cm4gUVQ9SlQodCksdEM9UVQuZm9ybWF0LGVDPVFULnBhcnNlLG5DPVFULnV0Y0Zvcm1hdCxpQz1RVC51dGNQYXJzZSxRVH14QSh7ZGF0ZVRpbWU6IiV4LCAlWCIsZGF0ZToiJS1tLyUtZC8lWSIsdGltZToiJS1JOiVNOiVTICVwIixwZXJpb2RzOlsiQU0iLCJQTSJdLGRheXM6WyJTdW5kYXkiLCJNb25kYXkiLCJUdWVzZGF5IiwiV2VkbmVzZGF5IiwiVGh1cnNkYXkiLCJGcmlkYXkiLCJTYXR1cmRheSJdLHNob3J0RGF5czpbIlN1biIsIk1vbiIsIlR1ZSIsIldlZCIsIlRodSIsIkZyaSIsIlNhdCJdLG1vbnRoczpbIkphbnVhcnkiLCJGZWJydWFyeSIsIk1hcmNoIiwiQXByaWwiLCJNYXkiLCJKdW5lIiwiSnVseSIsIkF1Z3VzdCIsIlNlcHRlbWJlciIsIk9jdG9iZXIiLCJOb3ZlbWJlciIsIkRlY2VtYmVyIl0sc2hvcnRNb250aHM6WyJKYW4iLCJGZWIiLCJNYXIiLCJBcHIiLCJNYXkiLCJKdW4iLCJKdWwiLCJBdWciLCJTZXAiLCJPY3QiLCJOb3YiLCJEZWMiXX0pO3ZhciB3QT0iJVktJW0tJWRUJUg6JU06JVMuJUxaIjt2YXIgU0E9RGF0ZS5wcm90b3R5cGUudG9JU09TdHJpbmc/ZnVuY3Rpb24gTUEodCl7cmV0dXJuIHQudG9JU09TdHJpbmcoKX06bkMod0EpO3ZhciBFQT0rbmV3IERhdGUoIjIwMDAtMDEtMDFUMDA6MDA6MDAuMDAwWiIpP2Z1bmN0aW9uIFRBKHQpe3ZhciBlPW5ldyBEYXRlKHQpO3JldHVybiBpc05hTihlKT9udWxsOmV9OmlDKHdBKSxDQT0xZTMsQUE9NmU0LGtBPTM2ZTUsTEE9ODY0ZTUsUEE9MjU5MmU2LE5BPTMxNTM2ZTY7ZnVuY3Rpb24gSUEodCl7cmV0dXJuIG5ldyBEYXRlKHQpfWZ1bmN0aW9uIFJBKHQpe3JldHVybiB0IGluc3RhbmNlb2YgRGF0ZT8rdDorbmV3IERhdGUoK3QpfWZ1bmN0aW9uIE9BKHQsZSxuLGkscixvLGEscyxsKXt2YXIgYz1hRShRTSxRTSksdT1jLmludmVydCxoPWMuZG9tYWluLGQ9bCgiLiVMIikscD1sKCI6JVMiKSxmPWwoIiVJOiVNIiksbT1sKCIlSSAlcCIpLGc9bCgiJWEgJWQiKSxfPWwoIiViICVkIikseT1sKCIlQiIpLHY9bCgiJVkiKSxiPVtbYSwxLENBXSxbYSw1LDVlM10sW2EsMTUsMTVlM10sW2EsMzAsM2U0XSxbbywxLEFBXSxbbyw1LDNlNV0sW28sMTUsOWU1XSxbbywzMCwxOGU1XSxbciwxLGtBXSxbciwzLDEwOGU1XSxbciw2LDIxNmU1XSxbciwxMiw0MzJlNV0sW2ksMSxMQV0sW2ksMiwxNzI4ZTVdLFtuLDEsNjA0OGU1XSxbZSwxLFBBXSxbZSwzLDc3NzZlNl0sW3QsMSxOQV1dO2Z1bmN0aW9uIHgocyl7cmV0dXJuKGEocyk8cz9kOm8ocyk8cz9wOnIocyk8cz9mOmkocyk8cz9tOmUocyk8cz9uKHMpPHM/ZzpfOnQocyk8cz95OnYpKHMpfWZ1bmN0aW9uIHcoZSxuLGkscil7aWYobnVsbD09ZSYmKGU9MTApLCJudW1iZXIiPT10eXBlb2YgZSl7dmFyIG89TWF0aC5hYnMoaS1uKS9lLGE9T2woKGZ1bmN0aW9uKHQpe3JldHVybiB0WzJdfSkpLnJpZ2h0KGIsbyk7YT09PWIubGVuZ3RoPyhyPW5jKG4vTkEsaS9OQSxlKSxlPXQpOmE/KHI9KGE9YltvL2JbYS0xXVsyXTxiW2FdWzJdL28/YS0xOmFdKVsxXSxlPWFbMF0pOihyPU1hdGgubWF4KG5jKG4saSxlKSwxKSxlPXMpfXJldHVybiBudWxsPT1yP2U6ZS5ldmVyeShyKX1yZXR1cm4gYy5pbnZlcnQ9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBEYXRlKHUodCkpfSxjLmRvbWFpbj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD9oKEdNLmNhbGwodCxSQSkpOmgoKS5tYXAoSUEpfSxjLnRpY2tzPWZ1bmN0aW9uKHQsZSl7dmFyIG4saT1oKCkscj1pWzBdLG89aVtpLmxlbmd0aC0xXSxhPW88cjtyZXR1cm4gYSYmKG49cixyPW8sbz1uKSxuPShuPXcodCxyLG8sZSkpP24ucmFuZ2UocixvKzEpOltdLGE/bi5yZXZlcnNlKCk6bn0sYy50aWNrRm9ybWF0PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIG51bGw9PWU/eDpsKGUpfSxjLm5pY2U9ZnVuY3Rpb24odCxlKXt2YXIgbj1oKCk7cmV0dXJuKHQ9dyh0LG5bMF0sbltuLmxlbmd0aC0xXSxlKSk/aCh1RShuLHQpKTpjfSxjLmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gckUoYyxPQSh0LGUsbixpLHIsbyxhLHMsbCkpfSxjfWZ1bmN0aW9uIHpBKCl7cmV0dXJuIFZNLmFwcGx5KE9BKF9ULGZULFFFLEtFLFlFLEdFLFZFLElFLHRDKS5kb21haW4oW25ldyBEYXRlKDJlMywwLDEpLG5ldyBEYXRlKDJlMywwLDIpXSksYXJndW1lbnRzKX1mdW5jdGlvbiBEQSgpe3ZhciB0LGUsbixpLHIsbz0wLGE9MSxzPVFNLGw9ITE7ZnVuY3Rpb24gYyhlKXtyZXR1cm4gaXNOYU4oZT0rZSk/cjpzKDA9PT1uPy41OihlPShpKGUpLXQpKm4sbD9NYXRoLm1heCgwLE1hdGgubWluKDEsZSkpOmUpKX1yZXR1cm4gYy5kb21haW49ZnVuY3Rpb24ocil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9aShvPStyWzBdKSxlPWkoYT0rclsxXSksbj10PT09ZT8wOjEvKGUtdCksYyk6W28sYV19LGMuY2xhbXA9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGw9ISF0LGMpOmx9LGMuaW50ZXJwb2xhdG9yPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhzPXQsYyk6c30sYy51bmtub3duPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPXQsYyk6cn0sZnVuY3Rpb24ocil7cmV0dXJuIGk9cix0PXIobyksZT1yKGEpLG49dD09PWU/MDoxLyhlLXQpLGN9fWZ1bmN0aW9uIEJBKHQsZSl7cmV0dXJuIGUuZG9tYWluKHQuZG9tYWluKCkpLmludGVycG9sYXRvcih0LmludGVycG9sYXRvcigpKS5jbGFtcCh0LmNsYW1wKCkpLnVua25vd24odC51bmtub3duKCkpfWZ1bmN0aW9uIEhBKCl7dmFyIHQ9RUUoREEoKSk7cmV0dXJuIHQuY29weT1mdW5jdGlvbigpe3JldHVybiBCQSh0LEhBKCkpLmV4cG9uZW50KHQuZXhwb25lbnQoKSl9LFVNLmFwcGx5KHQsYXJndW1lbnRzKX1mdW5jdGlvbiBGQSgpe3ZhciB0LGUsbixpLHIsbyxhLHM9MCxsPS41LGM9MSx1PVFNLGg9ITE7ZnVuY3Rpb24gZCh0KXtyZXR1cm4gaXNOYU4odD0rdCk/YToodD0uNSsoKHQ9K28odCkpLWUpKih0PGU/aTpyKSx1KGg/TWF0aC5tYXgoMCxNYXRoLm1pbigxLHQpKTp0KSl9cmV0dXJuIGQuZG9tYWluPWZ1bmN0aW9uKGEpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PW8ocz0rYVswXSksZT1vKGw9K2FbMV0pLG49byhjPSthWzJdKSxpPXQ9PT1lPzA6LjUvKGUtdCkscj1lPT09bj8wOi41LyhuLWUpLGQpOltzLGwsY119LGQuY2xhbXA9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGg9ISF0LGQpOmh9LGQuaW50ZXJwb2xhdG9yPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh1PXQsZCk6dX0sZC51bmtub3duPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPXQsZCk6YX0sZnVuY3Rpb24oYSl7cmV0dXJuIG89YSx0PWEocyksZT1hKGwpLG49YShjKSxpPXQ9PT1lPzA6LjUvKGUtdCkscj1lPT09bj8wOi41LyhuLWUpLGR9fWZ1bmN0aW9uIFZBKCl7dmFyIHQ9RUUoRkEoKSk7cmV0dXJuIHQuY29weT1mdW5jdGlvbigpe3JldHVybiBCQSh0LFZBKCkpLmV4cG9uZW50KHQuZXhwb25lbnQoKSl9LFVNLmFwcGx5KHQsYXJndW1lbnRzKX1mdW5jdGlvbiBVQSh0KXtmb3IodmFyIGU9dC5sZW5ndGgvNnwwLG49bmV3IEFycmF5KGUpLGk9MDtpPGU7KW5baV09IiMiK3Quc2xpY2UoNippLDYqKytpKTtyZXR1cm4gbn12YXIgakE9VUEoIjFmNzdiNGZmN2YwZTJjYTAyY2Q2MjcyODk0NjdiZDhjNTY0YmUzNzdjMjdmN2Y3ZmJjYmQyMjE3YmVjZiIpLEdBPVVBKCI3ZmM5N2ZiZWFlZDRmZGMwODZmZmZmOTkzODZjYjBmMDAyN2ZiZjViMTc2NjY2NjYiKSxXQT1VQSgiMWI5ZTc3ZDk1ZjAyNzU3MGIzZTcyOThhNjZhNjFlZTZhYjAyYTY3NjFkNjY2NjY2IikscUE9VUEoImE2Y2VlMzFmNzhiNGIyZGY4YTMzYTAyY2ZiOWE5OWUzMWExY2ZkYmY2ZmZmN2YwMGNhYjJkNjZhM2Q5YWZmZmY5OWIxNTkyOCIpLFlBPVVBKCJmYmI0YWViM2NkZTNjY2ViYzVkZWNiZTRmZWQ5YTZmZmZmY2NlNWQ4YmRmZGRhZWNmMmYyZjIiKSxYQT1VQSgiYjNlMmNkZmRjZGFjY2JkNWU4ZjRjYWU0ZTZmNWM5ZmZmMmFlZjFlMmNjY2NjY2NjIiksJEE9VUEoImU0MWExYzM3N2ViODRkYWY0YTk4NGVhM2ZmN2YwMGZmZmYzM2E2NTYyOGY3ODFiZjk5OTk5OSIpLEtBPVVBKCI2NmMyYTVmYzhkNjI4ZGEwY2JlNzhhYzNhNmQ4NTRmZmQ5MmZlNWM0OTRiM2IzYjMiKSxaQT1VQSgiOGRkM2M3ZmZmZmIzYmViYWRhZmI4MDcyODBiMWQzZmRiNDYyYjNkZTY5ZmNjZGU1ZDlkOWQ5YmM4MGJkY2NlYmM1ZmZlZDZmIiksSkE9VUEoIjRlNzlhN2YyOGUyY2UxNTc1OTc2YjdiMjU5YTE0ZmVkYzk0OWFmN2FhMWZmOWRhNzljNzU1ZmJhYjBhYiIpO2Z1bmN0aW9uIFFBKHQpe3JldHVybiBKZCh0W3QubGVuZ3RoLTFdKX12YXIgdGs9bmV3IEFycmF5KDMpLmNvbmNhdCgiZDhiMzY1ZjVmNWY1NWFiNGFjIiwiYTY2MTFhZGZjMjdkODBjZGMxMDE4NTcxIiwiYTY2MTFhZGZjMjdkZjVmNWY1ODBjZGMxMDE4NTcxIiwiOGM1MTBhZDhiMzY1ZjZlOGMzYzdlYWU1NWFiNGFjMDE2NjVlIiwiOGM1MTBhZDhiMzY1ZjZlOGMzZjVmNWY1YzdlYWU1NWFiNGFjMDE2NjVlIiwiOGM1MTBhYmY4MTJkZGZjMjdkZjZlOGMzYzdlYWU1ODBjZGMxMzU5NzhmMDE2NjVlIiwiOGM1MTBhYmY4MTJkZGZjMjdkZjZlOGMzZjVmNWY1YzdlYWU1ODBjZGMxMzU5NzhmMDE2NjVlIiwiNTQzMDA1OGM1MTBhYmY4MTJkZGZjMjdkZjZlOGMzYzdlYWU1ODBjZGMxMzU5NzhmMDE2NjVlMDAzYzMwIiwiNTQzMDA1OGM1MTBhYmY4MTJkZGZjMjdkZjZlOGMzZjVmNWY1YzdlYWU1ODBjZGMxMzU5NzhmMDE2NjVlMDAzYzMwIikubWFwKFVBKSxlaz1RQSh0ayksbms9bmV3IEFycmF5KDMpLmNvbmNhdCgiYWY4ZGMzZjdmN2Y3N2ZiZjdiIiwiN2IzMjk0YzJhNWNmYTZkYmEwMDA4ODM3IiwiN2IzMjk0YzJhNWNmZjdmN2Y3YTZkYmEwMDA4ODM3IiwiNzYyYTgzYWY4ZGMzZTdkNGU4ZDlmMGQzN2ZiZjdiMWI3ODM3IiwiNzYyYTgzYWY4ZGMzZTdkNGU4ZjdmN2Y3ZDlmMGQzN2ZiZjdiMWI3ODM3IiwiNzYyYTgzOTk3MGFiYzJhNWNmZTdkNGU4ZDlmMGQzYTZkYmEwNWFhZTYxMWI3ODM3IiwiNzYyYTgzOTk3MGFiYzJhNWNmZTdkNGU4ZjdmN2Y3ZDlmMGQzYTZkYmEwNWFhZTYxMWI3ODM3IiwiNDAwMDRiNzYyYTgzOTk3MGFiYzJhNWNmZTdkNGU4ZDlmMGQzYTZkYmEwNWFhZTYxMWI3ODM3MDA0NDFiIiwiNDAwMDRiNzYyYTgzOTk3MGFiYzJhNWNmZTdkNGU4ZjdmN2Y3ZDlmMGQzYTZkYmEwNWFhZTYxMWI3ODM3MDA0NDFiIikubWFwKFVBKSxpaz1RQShuaykscms9bmV3IEFycmF5KDMpLmNvbmNhdCgiZTlhM2M5ZjdmN2Y3YTFkNzZhIiwiZDAxYzhiZjFiNmRhYjhlMTg2NGRhYzI2IiwiZDAxYzhiZjFiNmRhZjdmN2Y3YjhlMTg2NGRhYzI2IiwiYzUxYjdkZTlhM2M5ZmRlMGVmZTZmNWQwYTFkNzZhNGQ5MjIxIiwiYzUxYjdkZTlhM2M5ZmRlMGVmZjdmN2Y3ZTZmNWQwYTFkNzZhNGQ5MjIxIiwiYzUxYjdkZGU3N2FlZjFiNmRhZmRlMGVmZTZmNWQwYjhlMTg2N2ZiYzQxNGQ5MjIxIiwiYzUxYjdkZGU3N2FlZjFiNmRhZmRlMGVmZjdmN2Y3ZTZmNWQwYjhlMTg2N2ZiYzQxNGQ5MjIxIiwiOGUwMTUyYzUxYjdkZGU3N2FlZjFiNmRhZmRlMGVmZTZmNWQwYjhlMTg2N2ZiYzQxNGQ5MjIxMjc2NDE5IiwiOGUwMTUyYzUxYjdkZGU3N2FlZjFiNmRhZmRlMGVmZjdmN2Y3ZTZmNWQwYjhlMTg2N2ZiYzQxNGQ5MjIxMjc2NDE5IikubWFwKFVBKSxvaz1RQShyayksYWs9bmV3IEFycmF5KDMpLmNvbmNhdCgiOTk4ZWMzZjdmN2Y3ZjFhMzQwIiwiNWUzYzk5YjJhYmQyZmRiODYzZTY2MTAxIiwiNWUzYzk5YjJhYmQyZjdmN2Y3ZmRiODYzZTY2MTAxIiwiNTQyNzg4OTk4ZWMzZDhkYWViZmVlMGI2ZjFhMzQwYjM1ODA2IiwiNTQyNzg4OTk4ZWMzZDhkYWViZjdmN2Y3ZmVlMGI2ZjFhMzQwYjM1ODA2IiwiNTQyNzg4ODA3M2FjYjJhYmQyZDhkYWViZmVlMGI2ZmRiODYzZTA4MjE0YjM1ODA2IiwiNTQyNzg4ODA3M2FjYjJhYmQyZDhkYWViZjdmN2Y3ZmVlMGI2ZmRiODYzZTA4MjE0YjM1ODA2IiwiMmQwMDRiNTQyNzg4ODA3M2FjYjJhYmQyZDhkYWViZmVlMGI2ZmRiODYzZTA4MjE0YjM1ODA2N2YzYjA4IiwiMmQwMDRiNTQyNzg4ODA3M2FjYjJhYmQyZDhkYWViZjdmN2Y3ZmVlMGI2ZmRiODYzZTA4MjE0YjM1ODA2N2YzYjA4IikubWFwKFVBKSxzaz1RQShhayksbGs9bmV3IEFycmF5KDMpLmNvbmNhdCgiZWY4YTYyZjdmN2Y3NjdhOWNmIiwiY2EwMDIwZjRhNTgyOTJjNWRlMDU3MWIwIiwiY2EwMDIwZjRhNTgyZjdmN2Y3OTJjNWRlMDU3MWIwIiwiYjIxODJiZWY4YTYyZmRkYmM3ZDFlNWYwNjdhOWNmMjE2NmFjIiwiYjIxODJiZWY4YTYyZmRkYmM3ZjdmN2Y3ZDFlNWYwNjdhOWNmMjE2NmFjIiwiYjIxODJiZDY2MDRkZjRhNTgyZmRkYmM3ZDFlNWYwOTJjNWRlNDM5M2MzMjE2NmFjIiwiYjIxODJiZDY2MDRkZjRhNTgyZmRkYmM3ZjdmN2Y3ZDFlNWYwOTJjNWRlNDM5M2MzMjE2NmFjIiwiNjcwMDFmYjIxODJiZDY2MDRkZjRhNTgyZmRkYmM3ZDFlNWYwOTJjNWRlNDM5M2MzMjE2NmFjMDUzMDYxIiwiNjcwMDFmYjIxODJiZDY2MDRkZjRhNTgyZmRkYmM3ZjdmN2Y3ZDFlNWYwOTJjNWRlNDM5M2MzMjE2NmFjMDUzMDYxIikubWFwKFVBKSxjaz1RQShsayksdWs9bmV3IEFycmF5KDMpLmNvbmNhdCgiZWY4YTYyZmZmZmZmOTk5OTk5IiwiY2EwMDIwZjRhNTgyYmFiYWJhNDA0MDQwIiwiY2EwMDIwZjRhNTgyZmZmZmZmYmFiYWJhNDA0MDQwIiwiYjIxODJiZWY4YTYyZmRkYmM3ZTBlMGUwOTk5OTk5NGQ0ZDRkIiwiYjIxODJiZWY4YTYyZmRkYmM3ZmZmZmZmZTBlMGUwOTk5OTk5NGQ0ZDRkIiwiYjIxODJiZDY2MDRkZjRhNTgyZmRkYmM3ZTBlMGUwYmFiYWJhODc4Nzg3NGQ0ZDRkIiwiYjIxODJiZDY2MDRkZjRhNTgyZmRkYmM3ZmZmZmZmZTBlMGUwYmFiYWJhODc4Nzg3NGQ0ZDRkIiwiNjcwMDFmYjIxODJiZDY2MDRkZjRhNTgyZmRkYmM3ZTBlMGUwYmFiYWJhODc4Nzg3NGQ0ZDRkMWExYTFhIiwiNjcwMDFmYjIxODJiZDY2MDRkZjRhNTgyZmRkYmM3ZmZmZmZmZTBlMGUwYmFiYWJhODc4Nzg3NGQ0ZDRkMWExYTFhIikubWFwKFVBKSxoaz1RQSh1ayksZGs9bmV3IEFycmF5KDMpLmNvbmNhdCgiZmM4ZDU5ZmZmZmJmOTFiZmRiIiwiZDcxOTFjZmRhZTYxYWJkOWU5MmM3YmI2IiwiZDcxOTFjZmRhZTYxZmZmZmJmYWJkOWU5MmM3YmI2IiwiZDczMDI3ZmM4ZDU5ZmVlMDkwZTBmM2Y4OTFiZmRiNDU3NWI0IiwiZDczMDI3ZmM4ZDU5ZmVlMDkwZmZmZmJmZTBmM2Y4OTFiZmRiNDU3NWI0IiwiZDczMDI3ZjQ2ZDQzZmRhZTYxZmVlMDkwZTBmM2Y4YWJkOWU5NzRhZGQxNDU3NWI0IiwiZDczMDI3ZjQ2ZDQzZmRhZTYxZmVlMDkwZmZmZmJmZTBmM2Y4YWJkOWU5NzRhZGQxNDU3NWI0IiwiYTUwMDI2ZDczMDI3ZjQ2ZDQzZmRhZTYxZmVlMDkwZTBmM2Y4YWJkOWU5NzRhZGQxNDU3NWI0MzEzNjk1IiwiYTUwMDI2ZDczMDI3ZjQ2ZDQzZmRhZTYxZmVlMDkwZmZmZmJmZTBmM2Y4YWJkOWU5NzRhZGQxNDU3NWI0MzEzNjk1IikubWFwKFVBKSxwaz1RQShkayksZms9bmV3IEFycmF5KDMpLmNvbmNhdCgiZmM4ZDU5ZmZmZmJmOTFjZjYwIiwiZDcxOTFjZmRhZTYxYTZkOTZhMWE5NjQxIiwiZDcxOTFjZmRhZTYxZmZmZmJmYTZkOTZhMWE5NjQxIiwiZDczMDI3ZmM4ZDU5ZmVlMDhiZDllZjhiOTFjZjYwMWE5ODUwIiwiZDczMDI3ZmM4ZDU5ZmVlMDhiZmZmZmJmZDllZjhiOTFjZjYwMWE5ODUwIiwiZDczMDI3ZjQ2ZDQzZmRhZTYxZmVlMDhiZDllZjhiYTZkOTZhNjZiZDYzMWE5ODUwIiwiZDczMDI3ZjQ2ZDQzZmRhZTYxZmVlMDhiZmZmZmJmZDllZjhiYTZkOTZhNjZiZDYzMWE5ODUwIiwiYTUwMDI2ZDczMDI3ZjQ2ZDQzZmRhZTYxZmVlMDhiZDllZjhiYTZkOTZhNjZiZDYzMWE5ODUwMDA2ODM3IiwiYTUwMDI2ZDczMDI3ZjQ2ZDQzZmRhZTYxZmVlMDhiZmZmZmJmZDllZjhiYTZkOTZhNjZiZDYzMWE5ODUwMDA2ODM3IikubWFwKFVBKSxtaz1RQShmayksZ2s9bmV3IEFycmF5KDMpLmNvbmNhdCgiZmM4ZDU5ZmZmZmJmOTlkNTk0IiwiZDcxOTFjZmRhZTYxYWJkZGE0MmI4M2JhIiwiZDcxOTFjZmRhZTYxZmZmZmJmYWJkZGE0MmI4M2JhIiwiZDUzZTRmZmM4ZDU5ZmVlMDhiZTZmNTk4OTlkNTk0MzI4OGJkIiwiZDUzZTRmZmM4ZDU5ZmVlMDhiZmZmZmJmZTZmNTk4OTlkNTk0MzI4OGJkIiwiZDUzZTRmZjQ2ZDQzZmRhZTYxZmVlMDhiZTZmNTk4YWJkZGE0NjZjMmE1MzI4OGJkIiwiZDUzZTRmZjQ2ZDQzZmRhZTYxZmVlMDhiZmZmZmJmZTZmNTk4YWJkZGE0NjZjMmE1MzI4OGJkIiwiOWUwMTQyZDUzZTRmZjQ2ZDQzZmRhZTYxZmVlMDhiZTZmNTk4YWJkZGE0NjZjMmE1MzI4OGJkNWU0ZmEyIiwiOWUwMTQyZDUzZTRmZjQ2ZDQzZmRhZTYxZmVlMDhiZmZmZmJmZTZmNTk4YWJkZGE0NjZjMmE1MzI4OGJkNWU0ZmEyIikubWFwKFVBKSxfaz1RQShnaykseWs9bmV3IEFycmF5KDMpLmNvbmNhdCgiZTVmNWY5OTlkOGM5MmNhMjVmIiwiZWRmOGZiYjJlMmUyNjZjMmE0MjM4YjQ1IiwiZWRmOGZiYjJlMmUyNjZjMmE0MmNhMjVmMDA2ZDJjIiwiZWRmOGZiY2NlY2U2OTlkOGM5NjZjMmE0MmNhMjVmMDA2ZDJjIiwiZWRmOGZiY2NlY2U2OTlkOGM5NjZjMmE0NDFhZTc2MjM4YjQ1MDA1ODI0IiwiZjdmY2ZkZTVmNWY5Y2NlY2U2OTlkOGM5NjZjMmE0NDFhZTc2MjM4YjQ1MDA1ODI0IiwiZjdmY2ZkZTVmNWY5Y2NlY2U2OTlkOGM5NjZjMmE0NDFhZTc2MjM4YjQ1MDA2ZDJjMDA0NDFiIikubWFwKFVBKSx2az1RQSh5ayksYms9bmV3IEFycmF5KDMpLmNvbmNhdCgiZTBlY2Y0OWViY2RhODg1NmE3IiwiZWRmOGZiYjNjZGUzOGM5NmM2ODg0MTlkIiwiZWRmOGZiYjNjZGUzOGM5NmM2ODg1NmE3ODEwZjdjIiwiZWRmOGZiYmZkM2U2OWViY2RhOGM5NmM2ODg1NmE3ODEwZjdjIiwiZWRmOGZiYmZkM2U2OWViY2RhOGM5NmM2OGM2YmIxODg0MTlkNmUwMTZiIiwiZjdmY2ZkZTBlY2Y0YmZkM2U2OWViY2RhOGM5NmM2OGM2YmIxODg0MTlkNmUwMTZiIiwiZjdmY2ZkZTBlY2Y0YmZkM2U2OWViY2RhOGM5NmM2OGM2YmIxODg0MTlkODEwZjdjNGQwMDRiIikubWFwKFVBKSx4az1RQShiayksd2s9bmV3IEFycmF5KDMpLmNvbmNhdCgiZTBmM2RiYThkZGI1NDNhMmNhIiwiZjBmOWU4YmFlNGJjN2JjY2M0MmI4Y2JlIiwiZjBmOWU4YmFlNGJjN2JjY2M0NDNhMmNhMDg2OGFjIiwiZjBmOWU4Y2NlYmM1YThkZGI1N2JjY2M0NDNhMmNhMDg2OGFjIiwiZjBmOWU4Y2NlYmM1YThkZGI1N2JjY2M0NGViM2QzMmI4Y2JlMDg1ODllIiwiZjdmY2YwZTBmM2RiY2NlYmM1YThkZGI1N2JjY2M0NGViM2QzMmI4Y2JlMDg1ODllIiwiZjdmY2YwZTBmM2RiY2NlYmM1YThkZGI1N2JjY2M0NGViM2QzMmI4Y2JlMDg2OGFjMDg0MDgxIikubWFwKFVBKSxTaz1RQSh3ayksTWs9bmV3IEFycmF5KDMpLmNvbmNhdCgiZmVlOGM4ZmRiYjg0ZTM0YTMzIiwiZmVmMGQ5ZmRjYzhhZmM4ZDU5ZDczMDFmIiwiZmVmMGQ5ZmRjYzhhZmM4ZDU5ZTM0YTMzYjMwMDAwIiwiZmVmMGQ5ZmRkNDllZmRiYjg0ZmM4ZDU5ZTM0YTMzYjMwMDAwIiwiZmVmMGQ5ZmRkNDllZmRiYjg0ZmM4ZDU5ZWY2NTQ4ZDczMDFmOTkwMDAwIiwiZmZmN2VjZmVlOGM4ZmRkNDllZmRiYjg0ZmM4ZDU5ZWY2NTQ4ZDczMDFmOTkwMDAwIiwiZmZmN2VjZmVlOGM4ZmRkNDllZmRiYjg0ZmM4ZDU5ZWY2NTQ4ZDczMDFmYjMwMDAwN2YwMDAwIikubWFwKFVBKSxFaz1RQShNayksVGs9bmV3IEFycmF5KDMpLmNvbmNhdCgiZWNlMmYwYTZiZGRiMWM5MDk5IiwiZjZlZmY3YmRjOWUxNjdhOWNmMDI4MThhIiwiZjZlZmY3YmRjOWUxNjdhOWNmMWM5MDk5MDE2YzU5IiwiZjZlZmY3ZDBkMWU2YTZiZGRiNjdhOWNmMWM5MDk5MDE2YzU5IiwiZjZlZmY3ZDBkMWU2YTZiZGRiNjdhOWNmMzY5MGMwMDI4MThhMDE2NDUwIiwiZmZmN2ZiZWNlMmYwZDBkMWU2YTZiZGRiNjdhOWNmMzY5MGMwMDI4MThhMDE2NDUwIiwiZmZmN2ZiZWNlMmYwZDBkMWU2YTZiZGRiNjdhOWNmMzY5MGMwMDI4MThhMDE2YzU5MDE0NjM2IikubWFwKFVBKSxDaz1RQShUayksQWs9bmV3IEFycmF5KDMpLmNvbmNhdCgiZWNlN2YyYTZiZGRiMmI4Y2JlIiwiZjFlZWY2YmRjOWUxNzRhOWNmMDU3MGIwIiwiZjFlZWY2YmRjOWUxNzRhOWNmMmI4Y2JlMDQ1YThkIiwiZjFlZWY2ZDBkMWU2YTZiZGRiNzRhOWNmMmI4Y2JlMDQ1YThkIiwiZjFlZWY2ZDBkMWU2YTZiZGRiNzRhOWNmMzY5MGMwMDU3MGIwMDM0ZTdiIiwiZmZmN2ZiZWNlN2YyZDBkMWU2YTZiZGRiNzRhOWNmMzY5MGMwMDU3MGIwMDM0ZTdiIiwiZmZmN2ZiZWNlN2YyZDBkMWU2YTZiZGRiNzRhOWNmMzY5MGMwMDU3MGIwMDQ1YThkMDIzODU4IikubWFwKFVBKSxraz1RQShBayksTGs9bmV3IEFycmF5KDMpLmNvbmNhdCgiZTdlMWVmYzk5NGM3ZGQxYzc3IiwiZjFlZWY2ZDdiNWQ4ZGY2NWIwY2UxMjU2IiwiZjFlZWY2ZDdiNWQ4ZGY2NWIwZGQxYzc3OTgwMDQzIiwiZjFlZWY2ZDRiOWRhYzk5NGM3ZGY2NWIwZGQxYzc3OTgwMDQzIiwiZjFlZWY2ZDRiOWRhYzk5NGM3ZGY2NWIwZTcyOThhY2UxMjU2OTEwMDNmIiwiZjdmNGY5ZTdlMWVmZDRiOWRhYzk5NGM3ZGY2NWIwZTcyOThhY2UxMjU2OTEwMDNmIiwiZjdmNGY5ZTdlMWVmZDRiOWRhYzk5NGM3ZGY2NWIwZTcyOThhY2UxMjU2OTgwMDQzNjcwMDFmIikubWFwKFVBKSxQaz1RQShMayksTms9bmV3IEFycmF5KDMpLmNvbmNhdCgiZmRlMGRkZmE5ZmI1YzUxYjhhIiwiZmVlYmUyZmJiNGI5Zjc2OGExYWUwMTdlIiwiZmVlYmUyZmJiNGI5Zjc2OGExYzUxYjhhN2EwMTc3IiwiZmVlYmUyZmNjNWMwZmE5ZmI1Zjc2OGExYzUxYjhhN2EwMTc3IiwiZmVlYmUyZmNjNWMwZmE5ZmI1Zjc2OGExZGQzNDk3YWUwMTdlN2EwMTc3IiwiZmZmN2YzZmRlMGRkZmNjNWMwZmE5ZmI1Zjc2OGExZGQzNDk3YWUwMTdlN2EwMTc3IiwiZmZmN2YzZmRlMGRkZmNjNWMwZmE5ZmI1Zjc2OGExZGQzNDk3YWUwMTdlN2EwMTc3NDkwMDZhIikubWFwKFVBKSxJaz1RQShOayksUms9bmV3IEFycmF5KDMpLmNvbmNhdCgiZWRmOGIxN2ZjZGJiMmM3ZmI4IiwiZmZmZmNjYTFkYWI0NDFiNmM0MjI1ZWE4IiwiZmZmZmNjYTFkYWI0NDFiNmM0MmM3ZmI4MjUzNDk0IiwiZmZmZmNjYzdlOWI0N2ZjZGJiNDFiNmM0MmM3ZmI4MjUzNDk0IiwiZmZmZmNjYzdlOWI0N2ZjZGJiNDFiNmM0MWQ5MWMwMjI1ZWE4MGMyYzg0IiwiZmZmZmQ5ZWRmOGIxYzdlOWI0N2ZjZGJiNDFiNmM0MWQ5MWMwMjI1ZWE4MGMyYzg0IiwiZmZmZmQ5ZWRmOGIxYzdlOWI0N2ZjZGJiNDFiNmM0MWQ5MWMwMjI1ZWE4MjUzNDk0MDgxZDU4IikubWFwKFVBKSxPaz1RQShSayksems9bmV3IEFycmF5KDMpLmNvbmNhdCgiZjdmY2I5YWRkZDhlMzFhMzU0IiwiZmZmZmNjYzJlNjk5NzhjNjc5MjM4NDQzIiwiZmZmZmNjYzJlNjk5NzhjNjc5MzFhMzU0MDA2ODM3IiwiZmZmZmNjZDlmMGEzYWRkZDhlNzhjNjc5MzFhMzU0MDA2ODM3IiwiZmZmZmNjZDlmMGEzYWRkZDhlNzhjNjc5NDFhYjVkMjM4NDQzMDA1YTMyIiwiZmZmZmU1ZjdmY2I5ZDlmMGEzYWRkZDhlNzhjNjc5NDFhYjVkMjM4NDQzMDA1YTMyIiwiZmZmZmU1ZjdmY2I5ZDlmMGEzYWRkZDhlNzhjNjc5NDFhYjVkMjM4NDQzMDA2ODM3MDA0NTI5IikubWFwKFVBKSxEaz1RQSh6ayksQms9bmV3IEFycmF5KDMpLmNvbmNhdCgiZmZmN2JjZmVjNDRmZDk1ZjBlIiwiZmZmZmQ0ZmVkOThlZmU5OTI5Y2M0YzAyIiwiZmZmZmQ0ZmVkOThlZmU5OTI5ZDk1ZjBlOTkzNDA0IiwiZmZmZmQ0ZmVlMzkxZmVjNDRmZmU5OTI5ZDk1ZjBlOTkzNDA0IiwiZmZmZmQ0ZmVlMzkxZmVjNDRmZmU5OTI5ZWM3MDE0Y2M0YzAyOGMyZDA0IiwiZmZmZmU1ZmZmN2JjZmVlMzkxZmVjNDRmZmU5OTI5ZWM3MDE0Y2M0YzAyOGMyZDA0IiwiZmZmZmU1ZmZmN2JjZmVlMzkxZmVjNDRmZmU5OTI5ZWM3MDE0Y2M0YzAyOTkzNDA0NjYyNTA2IikubWFwKFVBKSxIaz1RQShCayksRms9bmV3IEFycmF5KDMpLmNvbmNhdCgiZmZlZGEwZmViMjRjZjAzYjIwIiwiZmZmZmIyZmVjYzVjZmQ4ZDNjZTMxYTFjIiwiZmZmZmIyZmVjYzVjZmQ4ZDNjZjAzYjIwYmQwMDI2IiwiZmZmZmIyZmVkOTc2ZmViMjRjZmQ4ZDNjZjAzYjIwYmQwMDI2IiwiZmZmZmIyZmVkOTc2ZmViMjRjZmQ4ZDNjZmM0ZTJhZTMxYTFjYjEwMDI2IiwiZmZmZmNjZmZlZGEwZmVkOTc2ZmViMjRjZmQ4ZDNjZmM0ZTJhZTMxYTFjYjEwMDI2IiwiZmZmZmNjZmZlZGEwZmVkOTc2ZmViMjRjZmQ4ZDNjZmM0ZTJhZTMxYTFjYmQwMDI2ODAwMDI2IikubWFwKFVBKSxWaz1RQShGayksVWs9bmV3IEFycmF5KDMpLmNvbmNhdCgiZGVlYmY3OWVjYWUxMzE4MmJkIiwiZWZmM2ZmYmRkN2U3NmJhZWQ2MjE3MWI1IiwiZWZmM2ZmYmRkN2U3NmJhZWQ2MzE4MmJkMDg1MTljIiwiZWZmM2ZmYzZkYmVmOWVjYWUxNmJhZWQ2MzE4MmJkMDg1MTljIiwiZWZmM2ZmYzZkYmVmOWVjYWUxNmJhZWQ2NDI5MmM2MjE3MWI1MDg0NTk0IiwiZjdmYmZmZGVlYmY3YzZkYmVmOWVjYWUxNmJhZWQ2NDI5MmM2MjE3MWI1MDg0NTk0IiwiZjdmYmZmZGVlYmY3YzZkYmVmOWVjYWUxNmJhZWQ2NDI5MmM2MjE3MWI1MDg1MTljMDgzMDZiIikubWFwKFVBKSxqaz1RQShVayksR2s9bmV3IEFycmF5KDMpLmNvbmNhdCgiZTVmNWUwYTFkOTliMzFhMzU0IiwiZWRmOGU5YmFlNGIzNzRjNDc2MjM4YjQ1IiwiZWRmOGU5YmFlNGIzNzRjNDc2MzFhMzU0MDA2ZDJjIiwiZWRmOGU5YzdlOWMwYTFkOTliNzRjNDc2MzFhMzU0MDA2ZDJjIiwiZWRmOGU5YzdlOWMwYTFkOTliNzRjNDc2NDFhYjVkMjM4YjQ1MDA1YTMyIiwiZjdmY2Y1ZTVmNWUwYzdlOWMwYTFkOTliNzRjNDc2NDFhYjVkMjM4YjQ1MDA1YTMyIiwiZjdmY2Y1ZTVmNWUwYzdlOWMwYTFkOTliNzRjNDc2NDFhYjVkMjM4YjQ1MDA2ZDJjMDA0NDFiIikubWFwKFVBKSxXaz1RQShHaykscWs9bmV3IEFycmF5KDMpLmNvbmNhdCgiZjBmMGYwYmRiZGJkNjM2MzYzIiwiZjdmN2Y3Y2NjY2NjOTY5Njk2NTI1MjUyIiwiZjdmN2Y3Y2NjY2NjOTY5Njk2NjM2MzYzMjUyNTI1IiwiZjdmN2Y3ZDlkOWQ5YmRiZGJkOTY5Njk2NjM2MzYzMjUyNTI1IiwiZjdmN2Y3ZDlkOWQ5YmRiZGJkOTY5Njk2NzM3MzczNTI1MjUyMjUyNTI1IiwiZmZmZmZmZjBmMGYwZDlkOWQ5YmRiZGJkOTY5Njk2NzM3MzczNTI1MjUyMjUyNTI1IiwiZmZmZmZmZjBmMGYwZDlkOWQ5YmRiZGJkOTY5Njk2NzM3MzczNTI1MjUyMjUyNTI1MDAwMDAwIikubWFwKFVBKSxZaz1RQShxayksWGs9bmV3IEFycmF5KDMpLmNvbmNhdCgiZWZlZGY1YmNiZGRjNzU2YmIxIiwiZjJmMGY3Y2JjOWUyOWU5YWM4NmE1MWEzIiwiZjJmMGY3Y2JjOWUyOWU5YWM4NzU2YmIxNTQyNzhmIiwiZjJmMGY3ZGFkYWViYmNiZGRjOWU5YWM4NzU2YmIxNTQyNzhmIiwiZjJmMGY3ZGFkYWViYmNiZGRjOWU5YWM4ODA3ZGJhNmE1MWEzNGExNDg2IiwiZmNmYmZkZWZlZGY1ZGFkYWViYmNiZGRjOWU5YWM4ODA3ZGJhNmE1MWEzNGExNDg2IiwiZmNmYmZkZWZlZGY1ZGFkYWViYmNiZGRjOWU5YWM4ODA3ZGJhNmE1MWEzNTQyNzhmM2YwMDdkIikubWFwKFVBKSwkaz1RQShYayksS2s9bmV3IEFycmF5KDMpLmNvbmNhdCgiZmVlMGQyZmM5MjcyZGUyZDI2IiwiZmVlNWQ5ZmNhZTkxZmI2YTRhY2IxODFkIiwiZmVlNWQ5ZmNhZTkxZmI2YTRhZGUyZDI2YTUwZjE1IiwiZmVlNWQ5ZmNiYmExZmM5MjcyZmI2YTRhZGUyZDI2YTUwZjE1IiwiZmVlNWQ5ZmNiYmExZmM5MjcyZmI2YTRhZWYzYjJjY2IxODFkOTkwMDBkIiwiZmZmNWYwZmVlMGQyZmNiYmExZmM5MjcyZmI2YTRhZWYzYjJjY2IxODFkOTkwMDBkIiwiZmZmNWYwZmVlMGQyZmNiYmExZmM5MjcyZmI2YTRhZWYzYjJjY2IxODFkYTUwZjE1NjcwMDBkIikubWFwKFVBKSxaaz1RQShLayksSms9bmV3IEFycmF5KDMpLmNvbmNhdCgiZmVlNmNlZmRhZTZiZTY1NTBkIiwiZmVlZGRlZmRiZTg1ZmQ4ZDNjZDk0NzAxIiwiZmVlZGRlZmRiZTg1ZmQ4ZDNjZTY1NTBkYTYzNjAzIiwiZmVlZGRlZmRkMGEyZmRhZTZiZmQ4ZDNjZTY1NTBkYTYzNjAzIiwiZmVlZGRlZmRkMGEyZmRhZTZiZmQ4ZDNjZjE2OTEzZDk0ODAxOGMyZDA0IiwiZmZmNWViZmVlNmNlZmRkMGEyZmRhZTZiZmQ4ZDNjZjE2OTEzZDk0ODAxOGMyZDA0IiwiZmZmNWViZmVlNmNlZmRkMGEyZmRhZTZiZmQ4ZDNjZjE2OTEzZDk0ODAxYTYzNjAzN2YyNzA0IikubWFwKFVBKSxRaz1RQShKayk7dmFyIHRMPU9wKEZkKDMwMCwuNSwwKSxGZCgtMjQwLC41LDEpKSxlTD1PcChGZCgtMTAwLC43NSwuMzUpLEZkKDgwLDEuNSwuOCkpLG5MPU9wKEZkKDI2MCwuNzUsLjM1KSxGZCg4MCwxLjUsLjgpKSxpTD1GZCgpO3ZhciByTD1uZCgpLG9MPU1hdGguUEkvMyxhTD0yKk1hdGguUEkvMztmdW5jdGlvbiBzTCh0KXt2YXIgZT10Lmxlbmd0aDtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIHRbTWF0aC5tYXgoMCxNYXRoLm1pbihlLTEsTWF0aC5mbG9vcihuKmUpKSldfX12YXIgbEw9c0woVUEoIjQ0MDE1NDQ0MDI1NjQ1MDQ1NzQ1MDU1OTQ2MDc1YTQ2MDg1YzQ2MGE1ZDQ2MGI1ZTQ3MGQ2MDQ3MGU2MTQ3MTA2MzQ3MTE2NDQ3MTM2NTQ4MTQ2NzQ4MTY2ODQ4MTc2OTQ4MTg2YTQ4MWE2YzQ4MWI2ZDQ4MWM2ZTQ4MWQ2ZjQ4MWY3MDQ4MjA3MTQ4MjE3MzQ4MjM3NDQ4MjQ3NTQ4MjU3NjQ4MjY3NzQ4Mjg3ODQ4Mjk3OTQ3MmE3YTQ3MmM3YTQ3MmQ3YjQ3MmU3YzQ3MmY3ZDQ2MzA3ZTQ2MzI3ZTQ2MzM3ZjQ2MzQ4MDQ1MzU4MTQ1Mzc4MTQ1Mzg4MjQ0Mzk4MzQ0M2E4MzQ0M2I4NDQzM2Q4NDQzM2U4NTQyM2Y4NTQyNDA4NjQyNDE4NjQxNDI4NzQxNDQ4NzQwNDU4ODQwNDY4ODNmNDc4ODNmNDg4OTNlNDk4OTNlNGE4OTNlNGM4YTNkNGQ4YTNkNGU4YTNjNGY4YTNjNTA4YjNiNTE4YjNiNTI4YjNhNTM4YjNhNTQ4YzM5NTU4YzM5NTY4YzM4NTg4YzM4NTk4YzM3NWE4YzM3NWI4ZDM2NWM4ZDM2NWQ4ZDM1NWU4ZDM1NWY4ZDM0NjA4ZDM0NjE4ZDMzNjI4ZDMzNjM4ZDMyNjQ4ZTMyNjU4ZTMxNjY4ZTMxNjc4ZTMxNjg4ZTMwNjk4ZTMwNmE4ZTJmNmI4ZTJmNmM4ZTJlNmQ4ZTJlNmU4ZTJlNmY4ZTJkNzA4ZTJkNzE4ZTJjNzE4ZTJjNzI4ZTJjNzM4ZTJiNzQ4ZTJiNzU4ZTJhNzY4ZTJhNzc4ZTJhNzg4ZTI5Nzk4ZTI5N2E4ZTI5N2I4ZTI4N2M4ZTI4N2Q4ZTI3N2U4ZTI3N2Y4ZTI3ODA4ZTI2ODE4ZTI2ODI4ZTI2ODI4ZTI1ODM4ZTI1ODQ4ZTI1ODU4ZTI0ODY4ZTI0ODc4ZTIzODg4ZTIzODk4ZTIzOGE4ZDIyOGI4ZDIyOGM4ZDIyOGQ4ZDIxOGU4ZDIxOGY4ZDIxOTA4ZDIxOTE4YzIwOTI4YzIwOTI4YzIwOTM4YzFmOTQ4YzFmOTU4YjFmOTY4YjFmOTc4YjFmOTg4YjFmOTk4YTFmOWE4YTFlOWI4YTFlOWM4OTFlOWQ4OTFmOWU4OTFmOWY4ODFmYTA4ODFmYTE4ODFmYTE4NzFmYTI4NzIwYTM4NjIwYTQ4NjIxYTU4NTIxYTY4NTIyYTc4NTIyYTg4NDIzYTk4MzI0YWE4MzI1YWI4MjI1YWM4MjI2YWQ4MTI3YWQ4MTI4YWU4MDI5YWY3ZjJhYjA3ZjJjYjE3ZTJkYjI3ZDJlYjM3YzJmYjQ3YzMxYjU3YjMyYjY3YTM0YjY3OTM1Yjc3OTM3Yjg3ODM4Yjk3NzNhYmE3NjNiYmI3NTNkYmM3NDNmYmM3MzQwYmQ3MjQyYmU3MTQ0YmY3MDQ2YzA2ZjQ4YzE2ZTRhYzE2ZDRjYzI2YzRlYzM2YjUwYzQ2YTUyYzU2OTU0YzU2ODU2YzY2NzU4Yzc2NTVhYzg2NDVjYzg2MzVlYzk2MjYwY2E2MDYzY2I1ZjY1Y2I1ZTY3Y2M1YzY5Y2Q1YjZjY2Q1YTZlY2U1ODcwY2Y1NzczZDA1Njc1ZDA1NDc3ZDE1MzdhZDE1MTdjZDI1MDdmZDM0ZTgxZDM0ZDg0ZDQ0Yjg2ZDU0OTg5ZDU0ODhiZDY0NjhlZDY0NTkwZDc0MzkzZDc0MTk1ZDg0MDk4ZDgzZTliZDkzYzlkZDkzYmEwZGEzOWEyZGEzN2E1ZGIzNmE4ZGIzNGFhZGMzMmFkZGMzMGIwZGQyZmIyZGQyZGI1ZGUyYmI4ZGUyOWJhZGUyOGJkZGYyNmMwZGYyNWMyZGYyM2M1ZTAyMWM4ZTAyMGNhZTExZmNkZTExZGQwZTExY2QyZTIxYmQ1ZTIxYWQ4ZTIxOWRhZTMxOWRkZTMxOGRmZTMxOGUyZTQxOGU1ZTQxOWU3ZTQxOWVhZTUxYWVjZTUxYmVmZTUxY2YxZTUxZGY0ZTYxZWY2ZTYyMGY4ZTYyMWZiZTcyM2ZkZTcyNSIpKSxjTD1zTChVQSgiMDAwMDA0MDEwMDA1MDEwMTA2MDEwMTA4MDIwMTA5MDIwMjBiMDIwMjBkMDMwMzBmMDMwMzEyMDQwNDE0MDUwNDE2MDYwNTE4MDYwNTFhMDcwNjFjMDgwNzFlMDkwNzIwMGEwODIyMGIwOTI0MGMwOTI2MGQwYTI5MGUwYjJiMTAwYjJkMTEwYzJmMTIwZDMxMTMwZDM0MTQwZTM2MTUwZTM4MTYwZjNiMTgwZjNkMTkxMDNmMWExMDQyMWMxMDQ0MWQxMTQ3MWUxMTQ5MjAxMTRiMjExMTRlMjIxMTUwMjQxMjUzMjUxMjU1MjcxMjU4MjkxMTVhMmExMTVjMmMxMTVmMmQxMTYxMmYxMTYzMzExMTY1MzMxMDY3MzQxMDY5MzYxMDZiMzgxMDZjMzkwZjZlM2IwZjcwM2QwZjcxM2YwZjcyNDAwZjc0NDIwZjc1NDQwZjc2NDUxMDc3NDcxMDc4NDkxMDc4NGExMDc5NGMxMTdhNGUxMTdiNGYxMjdiNTExMjdjNTIxMzdjNTQxMzdkNTYxNDdkNTcxNTdlNTkxNTdlNWExNjdlNWMxNjdmNWQxNzdmNWYxODdmNjAxODgwNjIxOTgwNjQxYTgwNjUxYTgwNjcxYjgwNjgxYzgxNmExYzgxNmIxZDgxNmQxZDgxNmUxZTgxNzAxZjgxNzIxZjgxNzMyMDgxNzUyMTgxNzYyMTgxNzgyMjgxNzkyMjgyN2IyMzgyN2MyMzgyN2UyNDgyODAyNTgyODEyNTgxODMyNjgxODQyNjgxODYyNzgxODgyNzgxODkyODgxOGIyOTgxOGMyOTgxOGUyYTgxOTAyYTgxOTEyYjgxOTMyYjgwOTQyYzgwOTYyYzgwOTgyZDgwOTkyZDgwOWIyZTdmOWMyZTdmOWUyZjdmYTAyZjdmYTEzMDdlYTMzMDdlYTUzMTdlYTYzMTdkYTgzMjdkYWEzMzdkYWIzMzdjYWQzNDdjYWUzNDdiYjAzNTdiYjIzNTdiYjMzNjdhYjUzNjdhYjczNzc5YjgzNzc5YmEzODc4YmMzOTc4YmQzOTc3YmYzYTc3YzAzYTc2YzIzYjc1YzQzYzc1YzUzYzc0YzczZDczYzgzZTczY2EzZTcyY2MzZjcxY2Q0MDcxY2Y0MDcwZDA0MTZmZDI0MjZmZDM0MzZlZDU0NDZkZDY0NTZjZDg0NTZjZDk0NjZiZGI0NzZhZGM0ODY5ZGU0OTY4ZGY0YTY4ZTA0YzY3ZTI0ZDY2ZTM0ZTY1ZTQ0ZjY0ZTU1MDY0ZTc1MjYzZTg1MzYyZTk1NDYyZWE1NjYxZWI1NzYwZWM1ODYwZWQ1YTVmZWU1YjVlZWY1ZDVlZjA1ZjVlZjE2MDVkZjI2MjVkZjI2NDVjZjM2NTVjZjQ2NzVjZjQ2OTVjZjU2YjVjZjY2YzVjZjY2ZTVjZjc3MDVjZjc3MjVjZjg3NDVjZjg3NjVjZjk3ODVkZjk3OTVkZjk3YjVkZmE3ZDVlZmE3ZjVlZmE4MTVmZmI4MzVmZmI4NTYwZmI4NzYxZmM4OTYxZmM4YTYyZmM4YzYzZmM4ZTY0ZmM5MDY1ZmQ5MjY2ZmQ5NDY3ZmQ5NjY4ZmQ5ODY5ZmQ5YTZhZmQ5YjZiZmU5ZDZjZmU5ZjZkZmVhMTZlZmVhMzZmZmVhNTcxZmVhNzcyZmVhOTczZmVhYTc0ZmVhYzc2ZmVhZTc3ZmViMDc4ZmViMjdhZmViNDdiZmViNjdjZmViNzdlZmViOTdmZmViYjgxZmViZDgyZmViZjg0ZmVjMTg1ZmVjMjg3ZmVjNDg4ZmVjNjhhZmVjODhjZmVjYThkZmVjYzhmZmVjZDkwZmVjZjkyZmVkMTk0ZmVkMzk1ZmVkNTk3ZmVkNzk5ZmVkODlhZmRkYTljZmRkYzllZmRkZWEwZmRlMGExZmRlMmEzZmRlM2E1ZmRlNWE3ZmRlN2E5ZmRlOWFhZmRlYmFjZmNlY2FlZmNlZWIwZmNmMGIyZmNmMmI0ZmNmNGI2ZmNmNmI4ZmNmN2I5ZmNmOWJiZmNmYmJkZmNmZGJmIikpLHVMPXNMKFVBKCIwMDAwMDQwMTAwMDUwMTAxMDYwMTAxMDgwMjAxMGEwMjAyMGMwMjAyMGUwMzAyMTAwNDAzMTIwNDAzMTQwNTA0MTcwNjA0MTkwNzA1MWIwODA1MWQwOTA2MWYwYTA3MjIwYjA3MjQwYzA4MjYwZDA4MjkwZTA5MmIxMDA5MmQxMTBhMzAxMjBhMzIxNDBiMzQxNTBiMzcxNjBiMzkxODBjM2MxOTBjM2UxYjBjNDExYzBjNDMxZTBjNDUxZjBjNDgyMTBjNGEyMzBjNGMyNDBjNGYyNjBjNTEyODBiNTMyOTBiNTUyYjBiNTcyZDBiNTkyZjBhNWIzMTBhNWMzMjBhNWUzNDBhNWYzNjA5NjEzODA5NjIzOTA5NjMzYjA5NjQzZDA5NjUzZTA5NjY0MDBhNjc0MjBhNjg0NDBhNjg0NTBhNjk0NzBiNmE0OTBiNmE0YTBjNmI0YzBjNmI0ZDBkNmM0ZjBkNmM1MTBlNmM1MjBlNmQ1NDBmNmQ1NTBmNmQ1NzEwNmU1OTEwNmU1YTExNmU1YzEyNmU1ZDEyNmU1ZjEzNmU2MTEzNmU2MjE0NmU2NDE1NmU2NTE1NmU2NzE2NmU2OTE2NmU2YTE3NmU2YzE4NmU2ZDE4NmU2ZjE5NmU3MTE5NmU3MjFhNmU3NDFhNmU3NTFiNmU3NzFjNmQ3ODFjNmQ3YTFkNmQ3YzFkNmQ3ZDFlNmQ3ZjFlNmM4MDFmNmM4MjIwNmM4NDIwNmI4NTIxNmI4NzIxNmI4ODIyNmE4YTIyNmE4YzIzNjk4ZDIzNjk4ZjI0Njk5MDI1Njg5MjI1Njg5MzI2Njc5NTI2Njc5NzI3NjY5ODI3NjY5YTI4NjU5YjI5NjQ5ZDI5NjQ5ZjJhNjNhMDJhNjNhMjJiNjJhMzJjNjFhNTJjNjBhNjJkNjBhODJlNWZhOTJlNWVhYjJmNWVhZDMwNWRhZTMwNWNiMDMxNWJiMTMyNWFiMzMyNWFiNDMzNTliNjM0NThiNzM1NTdiOTM1NTZiYTM2NTViYzM3NTRiZDM4NTNiZjM5NTJjMDNhNTFjMTNhNTBjMzNiNGZjNDNjNGVjNjNkNGRjNzNlNGNjODNmNGJjYTQwNGFjYjQxNDljYzQyNDhjZTQzNDdjZjQ0NDZkMDQ1NDVkMjQ2NDRkMzQ3NDNkNDQ4NDJkNTRhNDFkNzRiM2ZkODRjM2VkOTRkM2RkYTRlM2NkYjUwM2JkZDUxM2FkZTUyMzhkZjUzMzdlMDU1MzZlMTU2MzVlMjU3MzRlMzU5MzNlNDVhMzFlNTVjMzBlNjVkMmZlNzVlMmVlODYwMmRlOTYxMmJlYTYzMmFlYjY0MjllYjY2MjhlYzY3MjZlZDY5MjVlZTZhMjRlZjZjMjNlZjZlMjFmMDZmMjBmMTcxMWZmMTczMWRmMjc0MWNmMzc2MWJmMzc4MTlmNDc5MThmNTdiMTdmNTdkMTVmNjdlMTRmNjgwMTNmNzgyMTJmNzg0MTBmODg1MGZmODg3MGVmODg5MGNmOThiMGJmOThjMGFmOThlMDlmYTkwMDhmYTkyMDdmYTk0MDdmYjk2MDZmYjk3MDZmYjk5MDZmYjliMDZmYjlkMDdmYzlmMDdmY2ExMDhmY2EzMDlmY2E1MGFmY2E2MGNmY2E4MGRmY2FhMGZmY2FjMTFmY2FlMTJmY2IwMTRmY2IyMTZmY2I0MThmYmI2MWFmYmI4MWRmYmJhMWZmYmJjMjFmYmJlMjNmYWMwMjZmYWMyMjhmYWM0MmFmYWM2MmRmOWM3MmZmOWM5MzJmOWNiMzVmOGNkMzdmOGNmM2FmN2QxM2RmN2QzNDBmNmQ1NDNmNmQ3NDZmNWQ5NDlmNWRiNGNmNGRkNGZmNGRmNTNmNGUxNTZmM2UzNWFmM2U1NWRmMmU2NjFmMmU4NjVmMmVhNjlmMWVjNmRmMWVkNzFmMWVmNzVmMWYxNzlmMmYyN2RmMmY0ODJmM2Y1ODZmM2Y2OGFmNGY4OGVmNWY5OTJmNmZhOTZmOGZiOWFmOWZjOWRmYWZkYTFmY2ZmYTQiKSksaEw9c0woVUEoIjBkMDg4NzEwMDc4ODEzMDc4OTE2MDc4YTE5MDY4YzFiMDY4ZDFkMDY4ZTIwMDY4ZjIyMDY5MDI0MDY5MTI2MDU5MTI4MDU5MjJhMDU5MzJjMDU5NDJlMDU5NTJmMDU5NjMxMDU5NzMzMDU5NzM1MDQ5ODM3MDQ5OTM4MDQ5YTNhMDQ5YTNjMDQ5YjNlMDQ5YzNmMDQ5YzQxMDQ5ZDQzMDM5ZTQ0MDM5ZTQ2MDM5ZjQ4MDM5ZjQ5MDNhMDRiMDNhMTRjMDJhMTRlMDJhMjUwMDJhMjUxMDJhMzUzMDJhMzU1MDJhNDU2MDFhNDU4MDFhNDU5MDFhNTViMDFhNTVjMDFhNjVlMDFhNjYwMDFhNjYxMDBhNzYzMDBhNzY0MDBhNzY2MDBhNzY3MDBhODY5MDBhODZhMDBhODZjMDBhODZlMDBhODZmMDBhODcxMDBhODcyMDFhODc0MDFhODc1MDFhODc3MDFhODc4MDFhODdhMDJhODdiMDJhODdkMDNhODdlMDNhODgwMDRhODgxMDRhNzgzMDVhNzg0MDVhNzg2MDZhNjg3MDdhNjg4MDhhNjhhMDlhNThiMGFhNThkMGJhNThlMGNhNDhmMGRhNDkxMGVhMzkyMGZhMzk0MTBhMjk1MTFhMTk2MTNhMTk4MTRhMDk5MTU5ZjlhMTY5ZjljMTc5ZTlkMTg5ZDllMTk5ZGEwMWE5Y2ExMWI5YmEyMWQ5YWEzMWU5YWE1MWY5OWE2MjA5OGE3MjE5N2E4MjI5NmFhMjM5NWFiMjQ5NGFjMjY5NGFkMjc5M2FlMjg5MmIwMjk5MWIxMmE5MGIyMmI4ZmIzMmM4ZWI0MmU4ZGI1MmY4Y2I2MzA4YmI3MzE4YWI4MzI4OWJhMzM4OGJiMzQ4OGJjMzU4N2JkMzc4NmJlMzg4NWJmMzk4NGMwM2E4M2MxM2I4MmMyM2M4MWMzM2Q4MGM0M2U3ZmM1NDA3ZWM2NDE3ZGM3NDI3Y2M4NDM3YmM5NDQ3YWNhNDU3YWNiNDY3OWNjNDc3OGNjNDk3N2NkNGE3NmNlNGI3NWNmNGM3NGQwNGQ3M2QxNGU3MmQyNGY3MWQzNTE3MWQ0NTI3MGQ1NTM2ZmQ1NTQ2ZWQ2NTU2ZGQ3NTY2Y2Q4NTc2YmQ5NTg2YWRhNWE2YWRhNWI2OWRiNWM2OGRjNWQ2N2RkNWU2NmRlNWY2NWRlNjE2NGRmNjI2M2UwNjM2M2UxNjQ2MmUyNjU2MWUyNjY2MGUzNjg1ZmU0Njk1ZWU1NmE1ZGU1NmI1ZGU2NmM1Y2U3NmU1YmU3NmY1YWU4NzA1OWU5NzE1OGU5NzI1N2VhNzQ1N2ViNzU1NmViNzY1NWVjNzc1NGVkNzk1M2VkN2E1MmVlN2I1MWVmN2M1MWVmN2U1MGYwN2Y0ZmYwODA0ZWYxODE0ZGYxODM0Y2YyODQ0YmYzODU0YmYzODc0YWY0ODg0OWY0ODk0OGY1OGI0N2Y1OGM0NmY2OGQ0NWY2OGY0NGY3OTA0NGY3OTE0M2Y3OTM0MmY4OTQ0MWY4OTU0MGY5OTczZmY5OTgzZWY5OWEzZWZhOWIzZGZhOWMzY2ZhOWUzYmZiOWYzYWZiYTEzOWZiYTIzOGZjYTMzOGZjYTUzN2ZjYTYzNmZjYTgzNWZjYTkzNGZkYWIzM2ZkYWMzM2ZkYWUzMmZkYWYzMWZkYjEzMGZkYjIyZmZkYjQyZmZkYjUyZWZlYjcyZGZlYjgyY2ZlYmEyY2ZlYmIyYmZlYmQyYWZlYmUyYWZlYzAyOWZkYzIyOWZkYzMyOGZkYzUyN2ZkYzYyN2ZkYzgyN2ZkY2EyNmZkY2IyNmZjY2QyNWZjY2UyNWZjZDAyNWZjZDIyNWZiZDMyNGZiZDUyNGZiZDcyNGZhZDgyNGZhZGEyNGY5ZGMyNGY5ZGQyNWY4ZGYyNWY4ZTEyNWY3ZTIyNWY3ZTQyNWY2ZTYyNmY2ZTgyNmY1ZTkyNmY1ZWIyN2Y0ZWQyN2YzZWUyN2YzZjAyN2YyZjIyN2YxZjQyNmYxZjUyNWYwZjcyNGYwZjkyMSIpKTtmdW5jdGlvbiBkTCh0KXtyZXR1cm4gZnVuY3Rpb24gZSgpe3JldHVybiB0fX12YXIgcEw9TWF0aC5hYnMsZkw9TWF0aC5hdGFuMixtTD1NYXRoLmNvcyxnTD1NYXRoLm1heCxfTD1NYXRoLm1pbix5TD1NYXRoLnNpbix2TD1NYXRoLnNxcnQsYkw9MWUtMTIseEw9TWF0aC5QSSx3TD14TC8yLFNMPTIqeEw7ZnVuY3Rpb24gTUwodCl7cmV0dXJuIHQ+MT8wOnQ8LTE/eEw6TWF0aC5hY29zKHQpfWZ1bmN0aW9uIEVMKHQpe3JldHVybiB0Pj0xP3dMOnQ8PS0xPy13TDpNYXRoLmFzaW4odCl9ZnVuY3Rpb24gVEwodCl7cmV0dXJuIHQuaW5uZXJSYWRpdXN9ZnVuY3Rpb24gQ0wodCl7cmV0dXJuIHQub3V0ZXJSYWRpdXN9ZnVuY3Rpb24gQUwodCl7cmV0dXJuIHQuc3RhcnRBbmdsZX1mdW5jdGlvbiBrTCh0KXtyZXR1cm4gdC5lbmRBbmdsZX1mdW5jdGlvbiBMTCh0KXtyZXR1cm4gdCYmdC5wYWRBbmdsZX1mdW5jdGlvbiBQTCh0LGUsbixpLHIsbyxhLHMpe3ZhciBsPW4tdCxjPWktZSx1PWEtcixoPXMtbyxkPWgqbC11KmM7aWYoIShkKmQ8YkwpKXJldHVyblt0KyhkPSh1KihlLW8pLWgqKHQtcikpL2QpKmwsZStkKmNdfWZ1bmN0aW9uIE5MKHQsZSxuLGkscixvLGEpe3ZhciBzPXQtbixsPWUtaSxjPShhP286LW8pL3ZMKHMqcytsKmwpLHU9YypsLGg9LWMqcyxkPXQrdSxwPWUraCxmPW4rdSxtPWkraCxnPShkK2YpLzIsXz0ocCttKS8yLHk9Zi1kLHY9bS1wLGI9eSp5K3Yqdix4PXItbyx3PWQqbS1mKnAsUz0odjwwPy0xOjEpKnZMKGdMKDAseCp4KmItdyp3KSksTT0odyp2LXkqUykvYixFPSgtdyp5LXYqUykvYixUPSh3KnYreSpTKS9iLEM9KC13KnkrdipTKS9iLEE9TS1nLGs9RS1fLEw9VC1nLFA9Qy1fO3JldHVybiBBKkErayprPkwqTCtQKlAmJihNPVQsRT1DKSx7Y3g6TSxjeTpFLHgwMTotdSx5MDE6LWgseDExOk0qKHIveC0xKSx5MTE6RSooci94LTEpfX1mdW5jdGlvbiBJTCh0KXt0aGlzLl9jb250ZXh0PXR9ZnVuY3Rpb24gUkwodCl7cmV0dXJuIG5ldyBJTCh0KX1mdW5jdGlvbiBPTCh0KXtyZXR1cm4gdFswXX1mdW5jdGlvbiB6TCh0KXtyZXR1cm4gdFsxXX1mdW5jdGlvbiBETCgpe3ZhciB0PU9MLGU9ekwsbj1kTCghMCksaT1udWxsLHI9Ukwsbz1udWxsO2Z1bmN0aW9uIGEoYSl7dmFyIHMsbCxjLHU9YS5sZW5ndGgsaD0hMTtmb3IobnVsbD09aSYmKG89cihjPU9nKCkpKSxzPTA7czw9dTsrK3MpIShzPHUmJm4obD1hW3NdLHMsYSkpPT09aCYmKChoPSFoKT9vLmxpbmVTdGFydCgpOm8ubGluZUVuZCgpKSxoJiZvLnBvaW50KCt0KGwscyxhKSwrZShsLHMsYSkpO2lmKGMpcmV0dXJuIG89bnVsbCxjKyIifHxudWxsfXJldHVybiBhLng9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZTpkTCgrZSksYSk6dH0sYS55PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6ZEwoK3QpLGEpOmV9LGEuZGVmaW5lZD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj0iZnVuY3Rpb24iPT10eXBlb2YgdD90OmRMKCEhdCksYSk6bn0sYS5jdXJ2ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj10LG51bGwhPWkmJihvPXIoaSkpLGEpOnJ9LGEuY29udGV4dD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obnVsbD09dD9pPW89bnVsbDpvPXIoaT10KSxhKTppfSxhfWZ1bmN0aW9uIEJMKCl7dmFyIHQ9T0wsZT1udWxsLG49ZEwoMCksaT16TCxyPWRMKCEwKSxvPW51bGwsYT1STCxzPW51bGw7ZnVuY3Rpb24gbChsKXt2YXIgYyx1LGgsZCxwLGY9bC5sZW5ndGgsbT0hMSxnPW5ldyBBcnJheShmKSxfPW5ldyBBcnJheShmKTtmb3IobnVsbD09byYmKHM9YShwPU9nKCkpKSxjPTA7Yzw9ZjsrK2Mpe2lmKCEoYzxmJiZyKGQ9bFtjXSxjLGwpKT09PW0paWYobT0hbSl1PWMscy5hcmVhU3RhcnQoKSxzLmxpbmVTdGFydCgpO2Vsc2V7Zm9yKHMubGluZUVuZCgpLHMubGluZVN0YXJ0KCksaD1jLTE7aD49dTstLWgpcy5wb2ludChnW2hdLF9baF0pO3MubGluZUVuZCgpLHMuYXJlYUVuZCgpfW0mJihnW2NdPSt0KGQsYyxsKSxfW2NdPStuKGQsYyxsKSxzLnBvaW50KGU/K2UoZCxjLGwpOmdbY10saT8raShkLGMsbCk6X1tjXSkpfWlmKHApcmV0dXJuIHM9bnVsbCxwKyIifHxudWxsfWZ1bmN0aW9uIGMoKXtyZXR1cm4gREwoKS5kZWZpbmVkKHIpLmN1cnZlKGEpLmNvbnRleHQobyl9cmV0dXJuIGwueD1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0iZnVuY3Rpb24iPT10eXBlb2Ygbj9uOmRMKCtuKSxlPW51bGwsbCk6dH0sbC54MD1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0iZnVuY3Rpb24iPT10eXBlb2YgZT9lOmRMKCtlKSxsKTp0fSxsLngxPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPW51bGw9PXQ/bnVsbDoiZnVuY3Rpb24iPT10eXBlb2YgdD90OmRMKCt0KSxsKTplfSxsLnk9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpkTCgrdCksaT1udWxsLGwpOm59LGwueTA9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpkTCgrdCksbCk6bn0sbC55MT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT1udWxsPT10P251bGw6ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpkTCgrdCksbCk6aX0sbC5saW5lWDA9bC5saW5lWTA9ZnVuY3Rpb24oKXtyZXR1cm4gYygpLngodCkueShuKX0sbC5saW5lWTE9ZnVuY3Rpb24oKXtyZXR1cm4gYygpLngodCkueShpKX0sbC5saW5lWDE9ZnVuY3Rpb24oKXtyZXR1cm4gYygpLngoZSkueShuKX0sbC5kZWZpbmVkPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6ZEwoISF0KSxsKTpyfSxsLmN1cnZlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPXQsbnVsbCE9byYmKHM9YShvKSksbCk6YX0sbC5jb250ZXh0PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhudWxsPT10P289cz1udWxsOnM9YShvPXQpLGwpOm99LGx9ZnVuY3Rpb24gSEwodCxlKXtyZXR1cm4gZTx0Py0xOmU+dD8xOmU+PXQ/MDpOYU59ZnVuY3Rpb24gRkwodCl7cmV0dXJuIHR9SUwucHJvdG90eXBlPXthcmVhU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPTB9LGFyZWFFbmQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPU5hTn0sbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fcG9pbnQ9MH0sbGluZUVuZDpmdW5jdGlvbigpeyh0aGlzLl9saW5lfHwwIT09dGhpcy5fbGluZSYmMT09PXRoaXMuX3BvaW50KSYmdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKSx0aGlzLl9saW5lPTEtdGhpcy5fbGluZX0scG9pbnQ6ZnVuY3Rpb24odCxlKXtzd2l0Y2godD0rdCxlPStlLHRoaXMuX3BvaW50KXtjYXNlIDA6dGhpcy5fcG9pbnQ9MSx0aGlzLl9saW5lP3RoaXMuX2NvbnRleHQubGluZVRvKHQsZSk6dGhpcy5fY29udGV4dC5tb3ZlVG8odCxlKTticmVhaztjYXNlIDE6dGhpcy5fcG9pbnQ9MjtkZWZhdWx0OnRoaXMuX2NvbnRleHQubGluZVRvKHQsZSl9fX07dmFyIFZMPWpMKFJMKTtmdW5jdGlvbiBVTCh0KXt0aGlzLl9jdXJ2ZT10fWZ1bmN0aW9uIGpMKHQpe2Z1bmN0aW9uIGUoZSl7cmV0dXJuIG5ldyBVTCh0KGUpKX1yZXR1cm4gZS5fY3VydmU9dCxlfWZ1bmN0aW9uIEdMKHQpe3ZhciBlPXQuY3VydmU7cmV0dXJuIHQuYW5nbGU9dC54LGRlbGV0ZSB0LngsdC5yYWRpdXM9dC55LGRlbGV0ZSB0LnksdC5jdXJ2ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD9lKGpMKHQpKTplKCkuX2N1cnZlfSx0fWZ1bmN0aW9uIFdMKCl7cmV0dXJuIEdMKERMKCkuY3VydmUoVkwpKX1mdW5jdGlvbiBxTCgpe3ZhciB0PUJMKCkuY3VydmUoVkwpLGU9dC5jdXJ2ZSxuPXQubGluZVgwLGk9dC5saW5lWDEscj10LmxpbmVZMCxvPXQubGluZVkxO3JldHVybiB0LmFuZ2xlPXQueCxkZWxldGUgdC54LHQuc3RhcnRBbmdsZT10LngwLGRlbGV0ZSB0LngwLHQuZW5kQW5nbGU9dC54MSxkZWxldGUgdC54MSx0LnJhZGl1cz10LnksZGVsZXRlIHQueSx0LmlubmVyUmFkaXVzPXQueTAsZGVsZXRlIHQueTAsdC5vdXRlclJhZGl1cz10LnkxLGRlbGV0ZSB0LnkxLHQubGluZVN0YXJ0QW5nbGU9ZnVuY3Rpb24oKXtyZXR1cm4gR0wobigpKX0sZGVsZXRlIHQubGluZVgwLHQubGluZUVuZEFuZ2xlPWZ1bmN0aW9uKCl7cmV0dXJuIEdMKGkoKSl9LGRlbGV0ZSB0LmxpbmVYMSx0LmxpbmVJbm5lclJhZGl1cz1mdW5jdGlvbigpe3JldHVybiBHTChyKCkpfSxkZWxldGUgdC5saW5lWTAsdC5saW5lT3V0ZXJSYWRpdXM9ZnVuY3Rpb24oKXtyZXR1cm4gR0wobygpKX0sZGVsZXRlIHQubGluZVkxLHQuY3VydmU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/ZShqTCh0KSk6ZSgpLl9jdXJ2ZX0sdH1mdW5jdGlvbiBZTCh0LGUpe3JldHVyblsoZT0rZSkqTWF0aC5jb3ModC09TWF0aC5QSS8yKSxlKk1hdGguc2luKHQpXX1VTC5wcm90b3R5cGU9e2FyZWFTdGFydDpmdW5jdGlvbigpe3RoaXMuX2N1cnZlLmFyZWFTdGFydCgpfSxhcmVhRW5kOmZ1bmN0aW9uKCl7dGhpcy5fY3VydmUuYXJlYUVuZCgpfSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl9jdXJ2ZS5saW5lU3RhcnQoKX0sbGluZUVuZDpmdW5jdGlvbigpe3RoaXMuX2N1cnZlLmxpbmVFbmQoKX0scG9pbnQ6ZnVuY3Rpb24odCxlKXt0aGlzLl9jdXJ2ZS5wb2ludChlKk1hdGguc2luKHQpLGUqLU1hdGguY29zKHQpKX19O3ZhciBYTD1BcnJheS5wcm90b3R5cGUuc2xpY2U7ZnVuY3Rpb24gJEwodCl7cmV0dXJuIHQuc291cmNlfWZ1bmN0aW9uIEtMKHQpe3JldHVybiB0LnRhcmdldH1mdW5jdGlvbiBaTCh0KXt2YXIgZT0kTCxuPUtMLGk9T0wscj16TCxvPW51bGw7ZnVuY3Rpb24gYSgpe3ZhciBhLHM9WEwuY2FsbChhcmd1bWVudHMpLGw9ZS5hcHBseSh0aGlzLHMpLGM9bi5hcHBseSh0aGlzLHMpO2lmKG98fChvPWE9T2coKSksdChvLCtpLmFwcGx5KHRoaXMsKHNbMF09bCxzKSksK3IuYXBwbHkodGhpcyxzKSwraS5hcHBseSh0aGlzLChzWzBdPWMscykpLCtyLmFwcGx5KHRoaXMscykpLGEpcmV0dXJuIG89bnVsbCxhKyIifHxudWxsfXJldHVybiBhLnNvdXJjZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT10LGEpOmV9LGEudGFyZ2V0PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPXQsYSk6bn0sYS54PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6ZEwoK3QpLGEpOml9LGEueT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj0iZnVuY3Rpb24iPT10eXBlb2YgdD90OmRMKCt0KSxhKTpyfSxhLmNvbnRleHQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89bnVsbD09dD9udWxsOnQsYSk6b30sYX1mdW5jdGlvbiBKTCh0LGUsbixpLHIpe3QubW92ZVRvKGUsbiksdC5iZXppZXJDdXJ2ZVRvKGU9KGUraSkvMixuLGUscixpLHIpfWZ1bmN0aW9uIFFMKHQsZSxuLGkscil7dC5tb3ZlVG8oZSxuKSx0LmJlemllckN1cnZlVG8oZSxuPShuK3IpLzIsaSxuLGkscil9ZnVuY3Rpb24gdFAodCxlLG4saSxyKXt2YXIgbz1ZTChlLG4pLGE9WUwoZSxuPShuK3IpLzIpLHM9WUwoaSxuKSxsPVlMKGkscik7dC5tb3ZlVG8ob1swXSxvWzFdKSx0LmJlemllckN1cnZlVG8oYVswXSxhWzFdLHNbMF0sc1sxXSxsWzBdLGxbMV0pfXZhciBlUD17ZHJhdzpmdW5jdGlvbih0LGUpe3ZhciBuPU1hdGguc3FydChlL3hMKTt0Lm1vdmVUbyhuLDApLHQuYXJjKDAsMCxuLDAsU0wpfX0sblA9e2RyYXc6ZnVuY3Rpb24odCxlKXt2YXIgbj1NYXRoLnNxcnQoZS81KS8yO3QubW92ZVRvKC0zKm4sLW4pLHQubGluZVRvKC1uLC1uKSx0LmxpbmVUbygtbiwtMypuKSx0LmxpbmVUbyhuLC0zKm4pLHQubGluZVRvKG4sLW4pLHQubGluZVRvKDMqbiwtbiksdC5saW5lVG8oMypuLG4pLHQubGluZVRvKG4sbiksdC5saW5lVG8obiwzKm4pLHQubGluZVRvKC1uLDMqbiksdC5saW5lVG8oLW4sbiksdC5saW5lVG8oLTMqbixuKSx0LmNsb3NlUGF0aCgpfX0saVA9TWF0aC5zcXJ0KDEvMyksclA9MippUCxvUD17ZHJhdzpmdW5jdGlvbih0LGUpe3ZhciBuPU1hdGguc3FydChlL3JQKSxpPW4qaVA7dC5tb3ZlVG8oMCwtbiksdC5saW5lVG8oaSwwKSx0LmxpbmVUbygwLG4pLHQubGluZVRvKC1pLDApLHQuY2xvc2VQYXRoKCl9fSxhUD1NYXRoLnNpbih4TC8xMCkvTWF0aC5zaW4oNyp4TC8xMCksc1A9TWF0aC5zaW4oU0wvMTApKmFQLGxQPS1NYXRoLmNvcyhTTC8xMCkqYVAsY1A9e2RyYXc6ZnVuY3Rpb24odCxlKXt2YXIgbj1NYXRoLnNxcnQoLjg5MDgxMzA5MTUyOTI4NTIqZSksaT1zUCpuLHI9bFAqbjt0Lm1vdmVUbygwLC1uKSx0LmxpbmVUbyhpLHIpO2Zvcih2YXIgbz0xO288NTsrK28pe3ZhciBhPVNMKm8vNSxzPU1hdGguY29zKGEpLGw9TWF0aC5zaW4oYSk7dC5saW5lVG8obCpuLC1zKm4pLHQubGluZVRvKHMqaS1sKnIsbCppK3Mqcil9dC5jbG9zZVBhdGgoKX19LHVQPXtkcmF3OmZ1bmN0aW9uKHQsZSl7dmFyIG49TWF0aC5zcXJ0KGUpLGk9LW4vMjt0LnJlY3QoaSxpLG4sbil9fSxoUD1NYXRoLnNxcnQoMyksZFA9e2RyYXc6ZnVuY3Rpb24odCxlKXt2YXIgbj0tTWF0aC5zcXJ0KGUvKDMqaFApKTt0Lm1vdmVUbygwLDIqbiksdC5saW5lVG8oLWhQKm4sLW4pLHQubGluZVRvKGhQKm4sLW4pLHQuY2xvc2VQYXRoKCl9fSxwUD0tLjUsZlA9TWF0aC5zcXJ0KDMpLzIsbVA9MS9NYXRoLnNxcnQoMTIpLGdQPTMqKG1QLzIrMSksX1A9e2RyYXc6ZnVuY3Rpb24odCxlKXt2YXIgbj1NYXRoLnNxcnQoZS9nUCksaT1uLzIscj1uKm1QLG89aSxhPW4qbVArbixzPS1vLGw9YTt0Lm1vdmVUbyhpLHIpLHQubGluZVRvKG8sYSksdC5saW5lVG8ocyxsKSx0LmxpbmVUbyhwUCppLWZQKnIsZlAqaStwUCpyKSx0LmxpbmVUbyhwUCpvLWZQKmEsZlAqbytwUCphKSx0LmxpbmVUbyhwUCpzLWZQKmwsZlAqcytwUCpsKSx0LmxpbmVUbyhwUCppK2ZQKnIscFAqci1mUCppKSx0LmxpbmVUbyhwUCpvK2ZQKmEscFAqYS1mUCpvKSx0LmxpbmVUbyhwUCpzK2ZQKmwscFAqbC1mUCpzKSx0LmNsb3NlUGF0aCgpfX0seVA9W2VQLG5QLG9QLHVQLGNQLGRQLF9QXTtmdW5jdGlvbiB2UCgpe31mdW5jdGlvbiBiUCh0LGUsbil7dC5fY29udGV4dC5iZXppZXJDdXJ2ZVRvKCgyKnQuX3gwK3QuX3gxKS8zLCgyKnQuX3kwK3QuX3kxKS8zLCh0Ll94MCsyKnQuX3gxKS8zLCh0Ll95MCsyKnQuX3kxKS8zLCh0Ll94MCs0KnQuX3gxK2UpLzYsKHQuX3kwKzQqdC5feTErbikvNil9ZnVuY3Rpb24geFAodCl7dGhpcy5fY29udGV4dD10fWZ1bmN0aW9uIHdQKHQpe3JldHVybiBuZXcgeFAodCl9ZnVuY3Rpb24gU1AodCl7dGhpcy5fY29udGV4dD10fWZ1bmN0aW9uIE1QKHQpe3RoaXMuX2NvbnRleHQ9dH1mdW5jdGlvbiBFUCh0LGUpe3RoaXMuX2Jhc2lzPW5ldyB4UCh0KSx0aGlzLl9iZXRhPWV9eFAucHJvdG90eXBlPXthcmVhU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPTB9LGFyZWFFbmQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPU5hTn0sbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5feDA9dGhpcy5feDE9dGhpcy5feTA9dGhpcy5feTE9TmFOLHRoaXMuX3BvaW50PTB9LGxpbmVFbmQ6ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5fcG9pbnQpe2Nhc2UgMzpiUCh0aGlzLHRoaXMuX3gxLHRoaXMuX3kxKTtjYXNlIDI6dGhpcy5fY29udGV4dC5saW5lVG8odGhpcy5feDEsdGhpcy5feTEpfSh0aGlzLl9saW5lfHwwIT09dGhpcy5fbGluZSYmMT09PXRoaXMuX3BvaW50KSYmdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKSx0aGlzLl9saW5lPTEtdGhpcy5fbGluZX0scG9pbnQ6ZnVuY3Rpb24odCxlKXtzd2l0Y2godD0rdCxlPStlLHRoaXMuX3BvaW50KXtjYXNlIDA6dGhpcy5fcG9pbnQ9MSx0aGlzLl9saW5lP3RoaXMuX2NvbnRleHQubGluZVRvKHQsZSk6dGhpcy5fY29udGV4dC5tb3ZlVG8odCxlKTticmVhaztjYXNlIDE6dGhpcy5fcG9pbnQ9MjticmVhaztjYXNlIDI6dGhpcy5fcG9pbnQ9Myx0aGlzLl9jb250ZXh0LmxpbmVUbygoNSp0aGlzLl94MCt0aGlzLl94MSkvNiwoNSp0aGlzLl95MCt0aGlzLl95MSkvNik7ZGVmYXVsdDpiUCh0aGlzLHQsZSl9dGhpcy5feDA9dGhpcy5feDEsdGhpcy5feDE9dCx0aGlzLl95MD10aGlzLl95MSx0aGlzLl95MT1lfX0sU1AucHJvdG90eXBlPXthcmVhU3RhcnQ6dlAsYXJlYUVuZDp2UCxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl94MD10aGlzLl94MT10aGlzLl94Mj10aGlzLl94Mz10aGlzLl94ND10aGlzLl95MD10aGlzLl95MT10aGlzLl95Mj10aGlzLl95Mz10aGlzLl95ND1OYU4sdGhpcy5fcG9pbnQ9MH0sbGluZUVuZDpmdW5jdGlvbigpe3N3aXRjaCh0aGlzLl9wb2ludCl7Y2FzZSAxOnRoaXMuX2NvbnRleHQubW92ZVRvKHRoaXMuX3gyLHRoaXMuX3kyKSx0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpO2JyZWFrO2Nhc2UgMjp0aGlzLl9jb250ZXh0Lm1vdmVUbygodGhpcy5feDIrMip0aGlzLl94MykvMywodGhpcy5feTIrMip0aGlzLl95MykvMyksdGhpcy5fY29udGV4dC5saW5lVG8oKHRoaXMuX3gzKzIqdGhpcy5feDIpLzMsKHRoaXMuX3kzKzIqdGhpcy5feTIpLzMpLHRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCk7YnJlYWs7Y2FzZSAzOnRoaXMucG9pbnQodGhpcy5feDIsdGhpcy5feTIpLHRoaXMucG9pbnQodGhpcy5feDMsdGhpcy5feTMpLHRoaXMucG9pbnQodGhpcy5feDQsdGhpcy5feTQpfX0scG9pbnQ6ZnVuY3Rpb24odCxlKXtzd2l0Y2godD0rdCxlPStlLHRoaXMuX3BvaW50KXtjYXNlIDA6dGhpcy5fcG9pbnQ9MSx0aGlzLl94Mj10LHRoaXMuX3kyPWU7YnJlYWs7Y2FzZSAxOnRoaXMuX3BvaW50PTIsdGhpcy5feDM9dCx0aGlzLl95Mz1lO2JyZWFrO2Nhc2UgMjp0aGlzLl9wb2ludD0zLHRoaXMuX3g0PXQsdGhpcy5feTQ9ZSx0aGlzLl9jb250ZXh0Lm1vdmVUbygodGhpcy5feDArNCp0aGlzLl94MSt0KS82LCh0aGlzLl95MCs0KnRoaXMuX3kxK2UpLzYpO2JyZWFrO2RlZmF1bHQ6YlAodGhpcyx0LGUpfXRoaXMuX3gwPXRoaXMuX3gxLHRoaXMuX3gxPXQsdGhpcy5feTA9dGhpcy5feTEsdGhpcy5feTE9ZX19LE1QLnByb3RvdHlwZT17YXJlYVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fbGluZT0wfSxhcmVhRW5kOmZ1bmN0aW9uKCl7dGhpcy5fbGluZT1OYU59LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3gwPXRoaXMuX3gxPXRoaXMuX3kwPXRoaXMuX3kxPU5hTix0aGlzLl9wb2ludD0wfSxsaW5lRW5kOmZ1bmN0aW9uKCl7KHRoaXMuX2xpbmV8fDAhPT10aGlzLl9saW5lJiYzPT09dGhpcy5fcG9pbnQpJiZ0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpLHRoaXMuX2xpbmU9MS10aGlzLl9saW5lfSxwb2ludDpmdW5jdGlvbih0LGUpe3N3aXRjaCh0PSt0LGU9K2UsdGhpcy5fcG9pbnQpe2Nhc2UgMDp0aGlzLl9wb2ludD0xO2JyZWFrO2Nhc2UgMTp0aGlzLl9wb2ludD0yO2JyZWFrO2Nhc2UgMjp0aGlzLl9wb2ludD0zO3ZhciBuPSh0aGlzLl94MCs0KnRoaXMuX3gxK3QpLzYsaT0odGhpcy5feTArNCp0aGlzLl95MStlKS82O3RoaXMuX2xpbmU/dGhpcy5fY29udGV4dC5saW5lVG8obixpKTp0aGlzLl9jb250ZXh0Lm1vdmVUbyhuLGkpO2JyZWFrO2Nhc2UgMzp0aGlzLl9wb2ludD00O2RlZmF1bHQ6YlAodGhpcyx0LGUpfXRoaXMuX3gwPXRoaXMuX3gxLHRoaXMuX3gxPXQsdGhpcy5feTA9dGhpcy5feTEsdGhpcy5feTE9ZX19LEVQLnByb3RvdHlwZT17bGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5feD1bXSx0aGlzLl95PVtdLHRoaXMuX2Jhc2lzLmxpbmVTdGFydCgpfSxsaW5lRW5kOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5feCxlPXRoaXMuX3ksbj10Lmxlbmd0aC0xO2lmKG4+MClmb3IodmFyIGkscj10WzBdLG89ZVswXSxhPXRbbl0tcixzPWVbbl0tbyxsPS0xOysrbDw9bjspdGhpcy5fYmFzaXMucG9pbnQodGhpcy5fYmV0YSp0W2xdKygxLXRoaXMuX2JldGEpKihyKyhpPWwvbikqYSksdGhpcy5fYmV0YSplW2xdKygxLXRoaXMuX2JldGEpKihvK2kqcykpO3RoaXMuX3g9dGhpcy5feT1udWxsLHRoaXMuX2Jhc2lzLmxpbmVFbmQoKX0scG9pbnQ6ZnVuY3Rpb24odCxlKXt0aGlzLl94LnB1c2goK3QpLHRoaXMuX3kucHVzaCgrZSl9fTt2YXIgVFA9KGZ1bmN0aW9uIHQoZSl7ZnVuY3Rpb24gbih0KXtyZXR1cm4gMT09PWU/bmV3IHhQKHQpOm5ldyBFUCh0LGUpfXJldHVybiBuLmJldGE9ZnVuY3Rpb24oZSl7cmV0dXJuIHQoK2UpfSxufSkoLjg1KTtmdW5jdGlvbiBDUCh0LGUsbil7dC5fY29udGV4dC5iZXppZXJDdXJ2ZVRvKHQuX3gxK3QuX2sqKHQuX3gyLXQuX3gwKSx0Ll95MSt0Ll9rKih0Ll95Mi10Ll95MCksdC5feDIrdC5fayoodC5feDEtZSksdC5feTIrdC5fayoodC5feTEtbiksdC5feDIsdC5feTIpfWZ1bmN0aW9uIEFQKHQsZSl7dGhpcy5fY29udGV4dD10LHRoaXMuX2s9KDEtZSkvNn1BUC5wcm90b3R5cGU9e2FyZWFTdGFydDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9MH0sYXJlYUVuZDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9TmFOfSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl94MD10aGlzLl94MT10aGlzLl94Mj10aGlzLl95MD10aGlzLl95MT10aGlzLl95Mj1OYU4sdGhpcy5fcG9pbnQ9MH0sbGluZUVuZDpmdW5jdGlvbigpe3N3aXRjaCh0aGlzLl9wb2ludCl7Y2FzZSAyOnRoaXMuX2NvbnRleHQubGluZVRvKHRoaXMuX3gyLHRoaXMuX3kyKTticmVhaztjYXNlIDM6Q1AodGhpcyx0aGlzLl94MSx0aGlzLl95MSl9KHRoaXMuX2xpbmV8fDAhPT10aGlzLl9saW5lJiYxPT09dGhpcy5fcG9pbnQpJiZ0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpLHRoaXMuX2xpbmU9MS10aGlzLl9saW5lfSxwb2ludDpmdW5jdGlvbih0LGUpe3N3aXRjaCh0PSt0LGU9K2UsdGhpcy5fcG9pbnQpe2Nhc2UgMDp0aGlzLl9wb2ludD0xLHRoaXMuX2xpbmU/dGhpcy5fY29udGV4dC5saW5lVG8odCxlKTp0aGlzLl9jb250ZXh0Lm1vdmVUbyh0LGUpO2JyZWFrO2Nhc2UgMTp0aGlzLl9wb2ludD0yLHRoaXMuX3gxPXQsdGhpcy5feTE9ZTticmVhaztjYXNlIDI6dGhpcy5fcG9pbnQ9MztkZWZhdWx0OkNQKHRoaXMsdCxlKX10aGlzLl94MD10aGlzLl94MSx0aGlzLl94MT10aGlzLl94Mix0aGlzLl94Mj10LHRoaXMuX3kwPXRoaXMuX3kxLHRoaXMuX3kxPXRoaXMuX3kyLHRoaXMuX3kyPWV9fTt2YXIga1A9KGZ1bmN0aW9uIHQoZSl7ZnVuY3Rpb24gbih0KXtyZXR1cm4gbmV3IEFQKHQsZSl9cmV0dXJuIG4udGVuc2lvbj1mdW5jdGlvbihlKXtyZXR1cm4gdCgrZSl9LG59KSgwKTtmdW5jdGlvbiBMUCh0LGUpe3RoaXMuX2NvbnRleHQ9dCx0aGlzLl9rPSgxLWUpLzZ9TFAucHJvdG90eXBlPXthcmVhU3RhcnQ6dlAsYXJlYUVuZDp2UCxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl94MD10aGlzLl94MT10aGlzLl94Mj10aGlzLl94Mz10aGlzLl94ND10aGlzLl94NT10aGlzLl95MD10aGlzLl95MT10aGlzLl95Mj10aGlzLl95Mz10aGlzLl95ND10aGlzLl95NT1OYU4sdGhpcy5fcG9pbnQ9MH0sbGluZUVuZDpmdW5jdGlvbigpe3N3aXRjaCh0aGlzLl9wb2ludCl7Y2FzZSAxOnRoaXMuX2NvbnRleHQubW92ZVRvKHRoaXMuX3gzLHRoaXMuX3kzKSx0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpO2JyZWFrO2Nhc2UgMjp0aGlzLl9jb250ZXh0LmxpbmVUbyh0aGlzLl94Myx0aGlzLl95MyksdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKTticmVhaztjYXNlIDM6dGhpcy5wb2ludCh0aGlzLl94Myx0aGlzLl95MyksdGhpcy5wb2ludCh0aGlzLl94NCx0aGlzLl95NCksdGhpcy5wb2ludCh0aGlzLl94NSx0aGlzLl95NSl9fSxwb2ludDpmdW5jdGlvbih0LGUpe3N3aXRjaCh0PSt0LGU9K2UsdGhpcy5fcG9pbnQpe2Nhc2UgMDp0aGlzLl9wb2ludD0xLHRoaXMuX3gzPXQsdGhpcy5feTM9ZTticmVhaztjYXNlIDE6dGhpcy5fcG9pbnQ9Mix0aGlzLl9jb250ZXh0Lm1vdmVUbyh0aGlzLl94ND10LHRoaXMuX3k0PWUpO2JyZWFrO2Nhc2UgMjp0aGlzLl9wb2ludD0zLHRoaXMuX3g1PXQsdGhpcy5feTU9ZTticmVhaztkZWZhdWx0OkNQKHRoaXMsdCxlKX10aGlzLl94MD10aGlzLl94MSx0aGlzLl94MT10aGlzLl94Mix0aGlzLl94Mj10LHRoaXMuX3kwPXRoaXMuX3kxLHRoaXMuX3kxPXRoaXMuX3kyLHRoaXMuX3kyPWV9fTt2YXIgUFA9KGZ1bmN0aW9uIHQoZSl7ZnVuY3Rpb24gbih0KXtyZXR1cm4gbmV3IExQKHQsZSl9cmV0dXJuIG4udGVuc2lvbj1mdW5jdGlvbihlKXtyZXR1cm4gdCgrZSl9LG59KSgwKTtmdW5jdGlvbiBOUCh0LGUpe3RoaXMuX2NvbnRleHQ9dCx0aGlzLl9rPSgxLWUpLzZ9TlAucHJvdG90eXBlPXthcmVhU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPTB9LGFyZWFFbmQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPU5hTn0sbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5feDA9dGhpcy5feDE9dGhpcy5feDI9dGhpcy5feTA9dGhpcy5feTE9dGhpcy5feTI9TmFOLHRoaXMuX3BvaW50PTB9LGxpbmVFbmQ6ZnVuY3Rpb24oKXsodGhpcy5fbGluZXx8MCE9PXRoaXMuX2xpbmUmJjM9PT10aGlzLl9wb2ludCkmJnRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCksdGhpcy5fbGluZT0xLXRoaXMuX2xpbmV9LHBvaW50OmZ1bmN0aW9uKHQsZSl7c3dpdGNoKHQ9K3QsZT0rZSx0aGlzLl9wb2ludCl7Y2FzZSAwOnRoaXMuX3BvaW50PTE7YnJlYWs7Y2FzZSAxOnRoaXMuX3BvaW50PTI7YnJlYWs7Y2FzZSAyOnRoaXMuX3BvaW50PTMsdGhpcy5fbGluZT90aGlzLl9jb250ZXh0LmxpbmVUbyh0aGlzLl94Mix0aGlzLl95Mik6dGhpcy5fY29udGV4dC5tb3ZlVG8odGhpcy5feDIsdGhpcy5feTIpO2JyZWFrO2Nhc2UgMzp0aGlzLl9wb2ludD00O2RlZmF1bHQ6Q1AodGhpcyx0LGUpfXRoaXMuX3gwPXRoaXMuX3gxLHRoaXMuX3gxPXRoaXMuX3gyLHRoaXMuX3gyPXQsdGhpcy5feTA9dGhpcy5feTEsdGhpcy5feTE9dGhpcy5feTIsdGhpcy5feTI9ZX19O3ZhciBJUD0oZnVuY3Rpb24gdChlKXtmdW5jdGlvbiBuKHQpe3JldHVybiBuZXcgTlAodCxlKX1yZXR1cm4gbi50ZW5zaW9uPWZ1bmN0aW9uKGUpe3JldHVybiB0KCtlKX0sbn0pKDApO2Z1bmN0aW9uIFJQKHQsZSxuKXt2YXIgaT10Ll94MSxyPXQuX3kxLG89dC5feDIsYT10Ll95MjtpZih0Ll9sMDFfYT5iTCl7dmFyIHM9Mip0Ll9sMDFfMmErMyp0Ll9sMDFfYSp0Ll9sMTJfYSt0Ll9sMTJfMmEsbD0zKnQuX2wwMV9hKih0Ll9sMDFfYSt0Ll9sMTJfYSk7aT0oaSpzLXQuX3gwKnQuX2wxMl8yYSt0Ll94Mip0Ll9sMDFfMmEpL2wscj0ocipzLXQuX3kwKnQuX2wxMl8yYSt0Ll95Mip0Ll9sMDFfMmEpL2x9aWYodC5fbDIzX2E+Ykwpe3ZhciBjPTIqdC5fbDIzXzJhKzMqdC5fbDIzX2EqdC5fbDEyX2ErdC5fbDEyXzJhLHU9Myp0Ll9sMjNfYSoodC5fbDIzX2ErdC5fbDEyX2EpO289KG8qYyt0Ll94MSp0Ll9sMjNfMmEtZSp0Ll9sMTJfMmEpL3UsYT0oYSpjK3QuX3kxKnQuX2wyM18yYS1uKnQuX2wxMl8yYSkvdX10Ll9jb250ZXh0LmJlemllckN1cnZlVG8oaSxyLG8sYSx0Ll94Mix0Ll95Mil9ZnVuY3Rpb24gT1AodCxlKXt0aGlzLl9jb250ZXh0PXQsdGhpcy5fYWxwaGE9ZX1PUC5wcm90b3R5cGU9e2FyZWFTdGFydDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9MH0sYXJlYUVuZDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9TmFOfSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl94MD10aGlzLl94MT10aGlzLl94Mj10aGlzLl95MD10aGlzLl95MT10aGlzLl95Mj1OYU4sdGhpcy5fbDAxX2E9dGhpcy5fbDEyX2E9dGhpcy5fbDIzX2E9dGhpcy5fbDAxXzJhPXRoaXMuX2wxMl8yYT10aGlzLl9sMjNfMmE9dGhpcy5fcG9pbnQ9MH0sbGluZUVuZDpmdW5jdGlvbigpe3N3aXRjaCh0aGlzLl9wb2ludCl7Y2FzZSAyOnRoaXMuX2NvbnRleHQubGluZVRvKHRoaXMuX3gyLHRoaXMuX3kyKTticmVhaztjYXNlIDM6dGhpcy5wb2ludCh0aGlzLl94Mix0aGlzLl95Mil9KHRoaXMuX2xpbmV8fDAhPT10aGlzLl9saW5lJiYxPT09dGhpcy5fcG9pbnQpJiZ0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpLHRoaXMuX2xpbmU9MS10aGlzLl9saW5lfSxwb2ludDpmdW5jdGlvbih0LGUpe2lmKHQ9K3QsZT0rZSx0aGlzLl9wb2ludCl7dmFyIG49dGhpcy5feDItdCxpPXRoaXMuX3kyLWU7dGhpcy5fbDIzX2E9TWF0aC5zcXJ0KHRoaXMuX2wyM18yYT1NYXRoLnBvdyhuKm4raSppLHRoaXMuX2FscGhhKSl9c3dpdGNoKHRoaXMuX3BvaW50KXtjYXNlIDA6dGhpcy5fcG9pbnQ9MSx0aGlzLl9saW5lP3RoaXMuX2NvbnRleHQubGluZVRvKHQsZSk6dGhpcy5fY29udGV4dC5tb3ZlVG8odCxlKTticmVhaztjYXNlIDE6dGhpcy5fcG9pbnQ9MjticmVhaztjYXNlIDI6dGhpcy5fcG9pbnQ9MztkZWZhdWx0OlJQKHRoaXMsdCxlKX10aGlzLl9sMDFfYT10aGlzLl9sMTJfYSx0aGlzLl9sMTJfYT10aGlzLl9sMjNfYSx0aGlzLl9sMDFfMmE9dGhpcy5fbDEyXzJhLHRoaXMuX2wxMl8yYT10aGlzLl9sMjNfMmEsdGhpcy5feDA9dGhpcy5feDEsdGhpcy5feDE9dGhpcy5feDIsdGhpcy5feDI9dCx0aGlzLl95MD10aGlzLl95MSx0aGlzLl95MT10aGlzLl95Mix0aGlzLl95Mj1lfX07dmFyIHpQPShmdW5jdGlvbiB0KGUpe2Z1bmN0aW9uIG4odCl7cmV0dXJuIGU/bmV3IE9QKHQsZSk6bmV3IEFQKHQsMCl9cmV0dXJuIG4uYWxwaGE9ZnVuY3Rpb24oZSl7cmV0dXJuIHQoK2UpfSxufSkoLjUpO2Z1bmN0aW9uIERQKHQsZSl7dGhpcy5fY29udGV4dD10LHRoaXMuX2FscGhhPWV9RFAucHJvdG90eXBlPXthcmVhU3RhcnQ6dlAsYXJlYUVuZDp2UCxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl94MD10aGlzLl94MT10aGlzLl94Mj10aGlzLl94Mz10aGlzLl94ND10aGlzLl94NT10aGlzLl95MD10aGlzLl95MT10aGlzLl95Mj10aGlzLl95Mz10aGlzLl95ND10aGlzLl95NT1OYU4sdGhpcy5fbDAxX2E9dGhpcy5fbDEyX2E9dGhpcy5fbDIzX2E9dGhpcy5fbDAxXzJhPXRoaXMuX2wxMl8yYT10aGlzLl9sMjNfMmE9dGhpcy5fcG9pbnQ9MH0sbGluZUVuZDpmdW5jdGlvbigpe3N3aXRjaCh0aGlzLl9wb2ludCl7Y2FzZSAxOnRoaXMuX2NvbnRleHQubW92ZVRvKHRoaXMuX3gzLHRoaXMuX3kzKSx0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpO2JyZWFrO2Nhc2UgMjp0aGlzLl9jb250ZXh0LmxpbmVUbyh0aGlzLl94Myx0aGlzLl95MyksdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKTticmVhaztjYXNlIDM6dGhpcy5wb2ludCh0aGlzLl94Myx0aGlzLl95MyksdGhpcy5wb2ludCh0aGlzLl94NCx0aGlzLl95NCksdGhpcy5wb2ludCh0aGlzLl94NSx0aGlzLl95NSl9fSxwb2ludDpmdW5jdGlvbih0LGUpe2lmKHQ9K3QsZT0rZSx0aGlzLl9wb2ludCl7dmFyIG49dGhpcy5feDItdCxpPXRoaXMuX3kyLWU7dGhpcy5fbDIzX2E9TWF0aC5zcXJ0KHRoaXMuX2wyM18yYT1NYXRoLnBvdyhuKm4raSppLHRoaXMuX2FscGhhKSl9c3dpdGNoKHRoaXMuX3BvaW50KXtjYXNlIDA6dGhpcy5fcG9pbnQ9MSx0aGlzLl94Mz10LHRoaXMuX3kzPWU7YnJlYWs7Y2FzZSAxOnRoaXMuX3BvaW50PTIsdGhpcy5fY29udGV4dC5tb3ZlVG8odGhpcy5feDQ9dCx0aGlzLl95ND1lKTticmVhaztjYXNlIDI6dGhpcy5fcG9pbnQ9Myx0aGlzLl94NT10LHRoaXMuX3k1PWU7YnJlYWs7ZGVmYXVsdDpSUCh0aGlzLHQsZSl9dGhpcy5fbDAxX2E9dGhpcy5fbDEyX2EsdGhpcy5fbDEyX2E9dGhpcy5fbDIzX2EsdGhpcy5fbDAxXzJhPXRoaXMuX2wxMl8yYSx0aGlzLl9sMTJfMmE9dGhpcy5fbDIzXzJhLHRoaXMuX3gwPXRoaXMuX3gxLHRoaXMuX3gxPXRoaXMuX3gyLHRoaXMuX3gyPXQsdGhpcy5feTA9dGhpcy5feTEsdGhpcy5feTE9dGhpcy5feTIsdGhpcy5feTI9ZX19O3ZhciBCUD0oZnVuY3Rpb24gdChlKXtmdW5jdGlvbiBuKHQpe3JldHVybiBlP25ldyBEUCh0LGUpOm5ldyBMUCh0LDApfXJldHVybiBuLmFscGhhPWZ1bmN0aW9uKGUpe3JldHVybiB0KCtlKX0sbn0pKC41KTtmdW5jdGlvbiBIUCh0LGUpe3RoaXMuX2NvbnRleHQ9dCx0aGlzLl9hbHBoYT1lfUhQLnByb3RvdHlwZT17YXJlYVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fbGluZT0wfSxhcmVhRW5kOmZ1bmN0aW9uKCl7dGhpcy5fbGluZT1OYU59LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3gwPXRoaXMuX3gxPXRoaXMuX3gyPXRoaXMuX3kwPXRoaXMuX3kxPXRoaXMuX3kyPU5hTix0aGlzLl9sMDFfYT10aGlzLl9sMTJfYT10aGlzLl9sMjNfYT10aGlzLl9sMDFfMmE9dGhpcy5fbDEyXzJhPXRoaXMuX2wyM18yYT10aGlzLl9wb2ludD0wfSxsaW5lRW5kOmZ1bmN0aW9uKCl7KHRoaXMuX2xpbmV8fDAhPT10aGlzLl9saW5lJiYzPT09dGhpcy5fcG9pbnQpJiZ0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpLHRoaXMuX2xpbmU9MS10aGlzLl9saW5lfSxwb2ludDpmdW5jdGlvbih0LGUpe2lmKHQ9K3QsZT0rZSx0aGlzLl9wb2ludCl7dmFyIG49dGhpcy5feDItdCxpPXRoaXMuX3kyLWU7dGhpcy5fbDIzX2E9TWF0aC5zcXJ0KHRoaXMuX2wyM18yYT1NYXRoLnBvdyhuKm4raSppLHRoaXMuX2FscGhhKSl9c3dpdGNoKHRoaXMuX3BvaW50KXtjYXNlIDA6dGhpcy5fcG9pbnQ9MTticmVhaztjYXNlIDE6dGhpcy5fcG9pbnQ9MjticmVhaztjYXNlIDI6dGhpcy5fcG9pbnQ9Myx0aGlzLl9saW5lP3RoaXMuX2NvbnRleHQubGluZVRvKHRoaXMuX3gyLHRoaXMuX3kyKTp0aGlzLl9jb250ZXh0Lm1vdmVUbyh0aGlzLl94Mix0aGlzLl95Mik7YnJlYWs7Y2FzZSAzOnRoaXMuX3BvaW50PTQ7ZGVmYXVsdDpSUCh0aGlzLHQsZSl9dGhpcy5fbDAxX2E9dGhpcy5fbDEyX2EsdGhpcy5fbDEyX2E9dGhpcy5fbDIzX2EsdGhpcy5fbDAxXzJhPXRoaXMuX2wxMl8yYSx0aGlzLl9sMTJfMmE9dGhpcy5fbDIzXzJhLHRoaXMuX3gwPXRoaXMuX3gxLHRoaXMuX3gxPXRoaXMuX3gyLHRoaXMuX3gyPXQsdGhpcy5feTA9dGhpcy5feTEsdGhpcy5feTE9dGhpcy5feTIsdGhpcy5feTI9ZX19O3ZhciBGUD0oZnVuY3Rpb24gdChlKXtmdW5jdGlvbiBuKHQpe3JldHVybiBlP25ldyBIUCh0LGUpOm5ldyBOUCh0LDApfXJldHVybiBuLmFscGhhPWZ1bmN0aW9uKGUpe3JldHVybiB0KCtlKX0sbn0pKC41KTtmdW5jdGlvbiBWUCh0KXt0aGlzLl9jb250ZXh0PXR9ZnVuY3Rpb24gVVAodCl7cmV0dXJuIHQ8MD8tMToxfWZ1bmN0aW9uIGpQKHQsZSxuKXt2YXIgaT10Ll94MS10Ll94MCxyPWUtdC5feDEsbz0odC5feTEtdC5feTApLyhpfHxyPDAmJi0wKSxhPShuLXQuX3kxKS8ocnx8aTwwJiYtMCkscz0obypyK2EqaSkvKGkrcik7cmV0dXJuKFVQKG8pK1VQKGEpKSpNYXRoLm1pbihNYXRoLmFicyhvKSxNYXRoLmFicyhhKSwuNSpNYXRoLmFicyhzKSl8fDB9ZnVuY3Rpb24gR1AodCxlKXt2YXIgbj10Ll94MS10Ll94MDtyZXR1cm4gbj8oMyoodC5feTEtdC5feTApL24tZSkvMjplfWZ1bmN0aW9uIFdQKHQsZSxuKXt2YXIgaT10Ll94MCxyPXQuX3gxLG89dC5feTEsYT0oci1pKS8zO3QuX2NvbnRleHQuYmV6aWVyQ3VydmVUbyhpK2EsdC5feTArYSplLHItYSxvLWEqbixyLG8pfWZ1bmN0aW9uIHFQKHQpe3RoaXMuX2NvbnRleHQ9dH1mdW5jdGlvbiBZUCh0KXt0aGlzLl9jb250ZXh0PW5ldyBYUCh0KX1mdW5jdGlvbiBYUCh0KXt0aGlzLl9jb250ZXh0PXR9ZnVuY3Rpb24gJFAodCl7dGhpcy5fY29udGV4dD10fWZ1bmN0aW9uIEtQKHQpe3ZhciBlLG4saT10Lmxlbmd0aC0xLHI9bmV3IEFycmF5KGkpLG89bmV3IEFycmF5KGkpLGE9bmV3IEFycmF5KGkpO2ZvcihyWzBdPTAsb1swXT0yLGFbMF09dFswXSsyKnRbMV0sZT0xO2U8aS0xOysrZSlyW2VdPTEsb1tlXT00LGFbZV09NCp0W2VdKzIqdFtlKzFdO2ZvcihyW2ktMV09MixvW2ktMV09NyxhW2ktMV09OCp0W2ktMV0rdFtpXSxlPTE7ZTxpOysrZSlvW2VdLT1uPXJbZV0vb1tlLTFdLGFbZV0tPW4qYVtlLTFdO2ZvcihyW2ktMV09YVtpLTFdL29baS0xXSxlPWktMjtlPj0wOy0tZSlyW2VdPShhW2VdLXJbZSsxXSkvb1tlXTtmb3Iob1tpLTFdPSh0W2ldK3JbaS0xXSkvMixlPTA7ZTxpLTE7KytlKW9bZV09Mip0W2UrMV0tcltlKzFdO3JldHVybltyLG9dfWZ1bmN0aW9uIFpQKHQsZSl7dGhpcy5fY29udGV4dD10LHRoaXMuX3Q9ZX1mdW5jdGlvbiBKUCh0LGUpe2lmKChyPXQubGVuZ3RoKT4xKWZvcih2YXIgbixpLHIsbz0xLGE9dFtlWzBdXSxzPWEubGVuZ3RoO288cjsrK28pZm9yKGk9YSxhPXRbZVtvXV0sbj0wO248czsrK24pYVtuXVsxXSs9YVtuXVswXT1pc05hTihpW25dWzFdKT9pW25dWzBdOmlbbl1bMV19ZnVuY3Rpb24gUVAodCl7Zm9yKHZhciBlPXQubGVuZ3RoLG49bmV3IEFycmF5KGUpOy0tZT49MDspbltlXT1lO3JldHVybiBufWZ1bmN0aW9uIHROKHQsZSl7cmV0dXJuIHRbZV19ZnVuY3Rpb24gZU4odCl7dmFyIGU9dC5tYXAobk4pO3JldHVybiBRUCh0KS5zb3J0KChmdW5jdGlvbih0LG4pe3JldHVybiBlW3RdLWVbbl19KSl9ZnVuY3Rpb24gbk4odCl7Zm9yKHZhciBlLG49LTEsaT0wLHI9dC5sZW5ndGgsbz0tMS8wOysrbjxyOykoZT0rdFtuXVsxXSk+byYmKG89ZSxpPW4pO3JldHVybiBpfWZ1bmN0aW9uIGlOKHQpe3ZhciBlPXQubWFwKHJOKTtyZXR1cm4gUVAodCkuc29ydCgoZnVuY3Rpb24odCxuKXtyZXR1cm4gZVt0XS1lW25dfSkpfWZ1bmN0aW9uIHJOKHQpe2Zvcih2YXIgZSxuPTAsaT0tMSxyPXQubGVuZ3RoOysraTxyOykoZT0rdFtpXVsxXSkmJihuKz1lKTtyZXR1cm4gbn1mdW5jdGlvbiBvTih0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19ZnVuY3Rpb24gYU4odCl7cmV0dXJuIHRbMF19ZnVuY3Rpb24gc04odCl7cmV0dXJuIHRbMV19ZnVuY3Rpb24gbE4oKXt0aGlzLl89bnVsbH1mdW5jdGlvbiBjTih0KXt0LlU9dC5DPXQuTD10LlI9dC5QPXQuTj1udWxsfWZ1bmN0aW9uIHVOKHQsZSl7dmFyIG49ZSxpPWUuUixyPW4uVTtyP3IuTD09PW4/ci5MPWk6ci5SPWk6dC5fPWksaS5VPXIsbi5VPWksbi5SPWkuTCxuLlImJihuLlIuVT1uKSxpLkw9bn1mdW5jdGlvbiBoTih0LGUpe3ZhciBuPWUsaT1lLkwscj1uLlU7cj9yLkw9PT1uP3IuTD1pOnIuUj1pOnQuXz1pLGkuVT1yLG4uVT1pLG4uTD1pLlIsbi5MJiYobi5MLlU9biksaS5SPW59ZnVuY3Rpb24gZE4odCl7Zm9yKDt0Lkw7KXQ9dC5MO3JldHVybiB0fWZ1bmN0aW9uIHBOKHQsZSxuLGkpe3ZhciByPVtudWxsLG51bGxdLG89RE4ucHVzaChyKS0xO3JldHVybiByLmxlZnQ9dCxyLnJpZ2h0PWUsbiYmbU4ocix0LGUsbiksaSYmbU4ocixlLHQsaSksT05bdC5pbmRleF0uaGFsZmVkZ2VzLnB1c2gobyksT05bZS5pbmRleF0uaGFsZmVkZ2VzLnB1c2gobykscn1mdW5jdGlvbiBmTih0LGUsbil7dmFyIGk9W2Usbl07cmV0dXJuIGkubGVmdD10LGl9ZnVuY3Rpb24gbU4odCxlLG4saSl7dFswXXx8dFsxXT90LmxlZnQ9PT1uP3RbMV09aTp0WzBdPWk6KHRbMF09aSx0LmxlZnQ9ZSx0LnJpZ2h0PW4pfWZ1bmN0aW9uIGdOKHQsZSxuLGkscil7dmFyIG8sYT10WzBdLHM9dFsxXSxsPWFbMF0sYz1hWzFdLHU9MCxoPTEsZD1zWzBdLWwscD1zWzFdLWM7aWYobz1lLWwsZHx8IShvPjApKXtpZihvLz1kLGQ8MCl7aWYobzx1KXJldHVybjtvPGgmJihoPW8pfWVsc2UgaWYoZD4wKXtpZihvPmgpcmV0dXJuO28+dSYmKHU9byl9aWYobz1pLWwsZHx8IShvPDApKXtpZihvLz1kLGQ8MCl7aWYobz5oKXJldHVybjtvPnUmJih1PW8pfWVsc2UgaWYoZD4wKXtpZihvPHUpcmV0dXJuO288aCYmKGg9byl9aWYobz1uLWMscHx8IShvPjApKXtpZihvLz1wLHA8MCl7aWYobzx1KXJldHVybjtvPGgmJihoPW8pfWVsc2UgaWYocD4wKXtpZihvPmgpcmV0dXJuO28+dSYmKHU9byl9aWYobz1yLWMscHx8IShvPDApKXtpZihvLz1wLHA8MCl7aWYobz5oKXJldHVybjtvPnUmJih1PW8pfWVsc2UgaWYocD4wKXtpZihvPHUpcmV0dXJuO288aCYmKGg9byl9cmV0dXJuISh1PjB8fGg8MSl8fCh1PjAmJih0WzBdPVtsK3UqZCxjK3UqcF0pLGg8MSYmKHRbMV09W2wraCpkLGMraCpwXSksITApfX19fX1mdW5jdGlvbiBfTih0LGUsbixpLHIpe3ZhciBvPXRbMV07aWYobylyZXR1cm4hMDt2YXIgYSxzLGw9dFswXSxjPXQubGVmdCx1PXQucmlnaHQsaD1jWzBdLGQ9Y1sxXSxwPXVbMF0sZj11WzFdLG09KGgrcCkvMjtpZihmPT09ZCl7aWYobTxlfHxtPj1pKXJldHVybjtpZihoPnApe2lmKGwpe2lmKGxbMV0+PXIpcmV0dXJufWVsc2UgbD1bbSxuXTtvPVttLHJdfWVsc2V7aWYobCl7aWYobFsxXTxuKXJldHVybn1lbHNlIGw9W20scl07bz1bbSxuXX19ZWxzZSBpZihzPShkK2YpLzItKGE9KGgtcCkvKGYtZCkpKm0sYTwtMXx8YT4xKWlmKGg+cCl7aWYobCl7aWYobFsxXT49cilyZXR1cm59ZWxzZSBsPVsobi1zKS9hLG5dO289WyhyLXMpL2Escl19ZWxzZXtpZihsKXtpZihsWzFdPG4pcmV0dXJufWVsc2UgbD1bKHItcykvYSxyXTtvPVsobi1zKS9hLG5dfWVsc2UgaWYoZDxmKXtpZihsKXtpZihsWzBdPj1pKXJldHVybn1lbHNlIGw9W2UsYSplK3NdO289W2ksYSppK3NdfWVsc2V7aWYobCl7aWYobFswXTxlKXJldHVybn1lbHNlIGw9W2ksYSppK3NdO289W2UsYSplK3NdfXJldHVybiB0WzBdPWwsdFsxXT1vLCEwfWZ1bmN0aW9uIHlOKHQsZSl7dmFyIG49dC5zaXRlLGk9ZS5sZWZ0LHI9ZS5yaWdodDtyZXR1cm4gbj09PXImJihyPWksaT1uKSxyP01hdGguYXRhbjIoclsxXS1pWzFdLHJbMF0taVswXSk6KG49PT1pPyhpPWVbMV0scj1lWzBdKTooaT1lWzBdLHI9ZVsxXSksTWF0aC5hdGFuMihpWzBdLXJbMF0sclsxXS1pWzFdKSl9ZnVuY3Rpb24gdk4odCxlKXtyZXR1cm4gZVsrKGUubGVmdCE9PXQuc2l0ZSldfWZ1bmN0aW9uIGJOKHQsZSl7cmV0dXJuIGVbKyhlLmxlZnQ9PT10LnNpdGUpXX1WUC5wcm90b3R5cGU9e2FyZWFTdGFydDp2UCxhcmVhRW5kOnZQLGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3BvaW50PTB9LGxpbmVFbmQ6ZnVuY3Rpb24oKXt0aGlzLl9wb2ludCYmdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKX0scG9pbnQ6ZnVuY3Rpb24odCxlKXt0PSt0LGU9K2UsdGhpcy5fcG9pbnQ/dGhpcy5fY29udGV4dC5saW5lVG8odCxlKToodGhpcy5fcG9pbnQ9MSx0aGlzLl9jb250ZXh0Lm1vdmVUbyh0LGUpKX19LHFQLnByb3RvdHlwZT17YXJlYVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fbGluZT0wfSxhcmVhRW5kOmZ1bmN0aW9uKCl7dGhpcy5fbGluZT1OYU59LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3gwPXRoaXMuX3gxPXRoaXMuX3kwPXRoaXMuX3kxPXRoaXMuX3QwPU5hTix0aGlzLl9wb2ludD0wfSxsaW5lRW5kOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuX3BvaW50KXtjYXNlIDI6dGhpcy5fY29udGV4dC5saW5lVG8odGhpcy5feDEsdGhpcy5feTEpO2JyZWFrO2Nhc2UgMzpXUCh0aGlzLHRoaXMuX3QwLEdQKHRoaXMsdGhpcy5fdDApKX0odGhpcy5fbGluZXx8MCE9PXRoaXMuX2xpbmUmJjE9PT10aGlzLl9wb2ludCkmJnRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCksdGhpcy5fbGluZT0xLXRoaXMuX2xpbmV9LHBvaW50OmZ1bmN0aW9uKHQsZSl7dmFyIG49TmFOO2lmKGU9K2UsKHQ9K3QpIT09dGhpcy5feDF8fGUhPT10aGlzLl95MSl7c3dpdGNoKHRoaXMuX3BvaW50KXtjYXNlIDA6dGhpcy5fcG9pbnQ9MSx0aGlzLl9saW5lP3RoaXMuX2NvbnRleHQubGluZVRvKHQsZSk6dGhpcy5fY29udGV4dC5tb3ZlVG8odCxlKTticmVhaztjYXNlIDE6dGhpcy5fcG9pbnQ9MjticmVhaztjYXNlIDI6dGhpcy5fcG9pbnQ9MyxXUCh0aGlzLEdQKHRoaXMsbj1qUCh0aGlzLHQsZSkpLG4pO2JyZWFrO2RlZmF1bHQ6V1AodGhpcyx0aGlzLl90MCxuPWpQKHRoaXMsdCxlKSl9dGhpcy5feDA9dGhpcy5feDEsdGhpcy5feDE9dCx0aGlzLl95MD10aGlzLl95MSx0aGlzLl95MT1lLHRoaXMuX3QwPW59fX0sKFlQLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHFQLnByb3RvdHlwZSkpLnBvaW50PWZ1bmN0aW9uKHQsZSl7cVAucHJvdG90eXBlLnBvaW50LmNhbGwodGhpcyxlLHQpfSxYUC5wcm90b3R5cGU9e21vdmVUbzpmdW5jdGlvbih0LGUpe3RoaXMuX2NvbnRleHQubW92ZVRvKGUsdCl9LGNsb3NlUGF0aDpmdW5jdGlvbigpe3RoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCl9LGxpbmVUbzpmdW5jdGlvbih0LGUpe3RoaXMuX2NvbnRleHQubGluZVRvKGUsdCl9LGJlemllckN1cnZlVG86ZnVuY3Rpb24odCxlLG4saSxyLG8pe3RoaXMuX2NvbnRleHQuYmV6aWVyQ3VydmVUbyhlLHQsaSxuLG8scil9fSwkUC5wcm90b3R5cGU9e2FyZWFTdGFydDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9MH0sYXJlYUVuZDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9TmFOfSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl94PVtdLHRoaXMuX3k9W119LGxpbmVFbmQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl94LGU9dGhpcy5feSxuPXQubGVuZ3RoO2lmKG4paWYodGhpcy5fbGluZT90aGlzLl9jb250ZXh0LmxpbmVUbyh0WzBdLGVbMF0pOnRoaXMuX2NvbnRleHQubW92ZVRvKHRbMF0sZVswXSksMj09PW4pdGhpcy5fY29udGV4dC5saW5lVG8odFsxXSxlWzFdKTtlbHNlIGZvcih2YXIgaT1LUCh0KSxyPUtQKGUpLG89MCxhPTE7YTxuOysrbywrK2EpdGhpcy5fY29udGV4dC5iZXppZXJDdXJ2ZVRvKGlbMF1bb10sclswXVtvXSxpWzFdW29dLHJbMV1bb10sdFthXSxlW2FdKTsodGhpcy5fbGluZXx8MCE9PXRoaXMuX2xpbmUmJjE9PT1uKSYmdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKSx0aGlzLl9saW5lPTEtdGhpcy5fbGluZSx0aGlzLl94PXRoaXMuX3k9bnVsbH0scG9pbnQ6ZnVuY3Rpb24odCxlKXt0aGlzLl94LnB1c2goK3QpLHRoaXMuX3kucHVzaCgrZSl9fSxaUC5wcm90b3R5cGU9e2FyZWFTdGFydDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9MH0sYXJlYUVuZDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9TmFOfSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl94PXRoaXMuX3k9TmFOLHRoaXMuX3BvaW50PTB9LGxpbmVFbmQ6ZnVuY3Rpb24oKXswPHRoaXMuX3QmJnRoaXMuX3Q8MSYmMj09PXRoaXMuX3BvaW50JiZ0aGlzLl9jb250ZXh0LmxpbmVUbyh0aGlzLl94LHRoaXMuX3kpLCh0aGlzLl9saW5lfHwwIT09dGhpcy5fbGluZSYmMT09PXRoaXMuX3BvaW50KSYmdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKSx0aGlzLl9saW5lPj0wJiYodGhpcy5fdD0xLXRoaXMuX3QsdGhpcy5fbGluZT0xLXRoaXMuX2xpbmUpfSxwb2ludDpmdW5jdGlvbih0LGUpe3N3aXRjaCh0PSt0LGU9K2UsdGhpcy5fcG9pbnQpe2Nhc2UgMDp0aGlzLl9wb2ludD0xLHRoaXMuX2xpbmU/dGhpcy5fY29udGV4dC5saW5lVG8odCxlKTp0aGlzLl9jb250ZXh0Lm1vdmVUbyh0LGUpO2JyZWFrO2Nhc2UgMTp0aGlzLl9wb2ludD0yO2RlZmF1bHQ6aWYodGhpcy5fdDw9MCl0aGlzLl9jb250ZXh0LmxpbmVUbyh0aGlzLl94LGUpLHRoaXMuX2NvbnRleHQubGluZVRvKHQsZSk7ZWxzZXt2YXIgbj10aGlzLl94KigxLXRoaXMuX3QpK3QqdGhpcy5fdDt0aGlzLl9jb250ZXh0LmxpbmVUbyhuLHRoaXMuX3kpLHRoaXMuX2NvbnRleHQubGluZVRvKG4sZSl9fXRoaXMuX3g9dCx0aGlzLl95PWV9fSxsTi5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOmxOLGluc2VydDpmdW5jdGlvbih0LGUpe3ZhciBuLGkscjtpZih0KXtpZihlLlA9dCxlLk49dC5OLHQuTiYmKHQuTi5QPWUpLHQuTj1lLHQuUil7Zm9yKHQ9dC5SO3QuTDspdD10Lkw7dC5MPWV9ZWxzZSB0LlI9ZTtuPXR9ZWxzZSB0aGlzLl8/KHQ9ZE4odGhpcy5fKSxlLlA9bnVsbCxlLk49dCx0LlA9dC5MPWUsbj10KTooZS5QPWUuTj1udWxsLHRoaXMuXz1lLG49bnVsbCk7Zm9yKGUuTD1lLlI9bnVsbCxlLlU9bixlLkM9ITAsdD1lO24mJm4uQzspbj09PShpPW4uVSkuTD8ocj1pLlIpJiZyLkM/KG4uQz1yLkM9ITEsaS5DPSEwLHQ9aSk6KHQ9PT1uLlImJih1Tih0aGlzLG4pLG49KHQ9bikuVSksbi5DPSExLGkuQz0hMCxoTih0aGlzLGkpKToocj1pLkwpJiZyLkM/KG4uQz1yLkM9ITEsaS5DPSEwLHQ9aSk6KHQ9PT1uLkwmJihoTih0aGlzLG4pLG49KHQ9bikuVSksbi5DPSExLGkuQz0hMCx1Tih0aGlzLGkpKSxuPXQuVTt0aGlzLl8uQz0hMX0scmVtb3ZlOmZ1bmN0aW9uKHQpe3QuTiYmKHQuTi5QPXQuUCksdC5QJiYodC5QLk49dC5OKSx0Lk49dC5QPW51bGw7dmFyIGUsbixpLHI9dC5VLG89dC5MLGE9dC5SO2lmKG49bz9hP2ROKGEpOm86YSxyP3IuTD09PXQ/ci5MPW46ci5SPW46dGhpcy5fPW4sbyYmYT8oaT1uLkMsbi5DPXQuQyxuLkw9byxvLlU9bixuIT09YT8ocj1uLlUsbi5VPXQuVSxyLkw9dD1uLlIsbi5SPWEsYS5VPW4pOihuLlU9cixyPW4sdD1uLlIpKTooaT10LkMsdD1uKSx0JiYodC5VPXIpLCFpKWlmKHQmJnQuQyl0LkM9ITE7ZWxzZXtkb3tpZih0PT09dGhpcy5fKWJyZWFrO2lmKHQ9PT1yLkwpe2lmKChlPXIuUikuQyYmKGUuQz0hMSxyLkM9ITAsdU4odGhpcyxyKSxlPXIuUiksZS5MJiZlLkwuQ3x8ZS5SJiZlLlIuQyl7ZS5SJiZlLlIuQ3x8KGUuTC5DPSExLGUuQz0hMCxoTih0aGlzLGUpLGU9ci5SKSxlLkM9ci5DLHIuQz1lLlIuQz0hMSx1Tih0aGlzLHIpLHQ9dGhpcy5fO2JyZWFrfX1lbHNlIGlmKChlPXIuTCkuQyYmKGUuQz0hMSxyLkM9ITAsaE4odGhpcyxyKSxlPXIuTCksZS5MJiZlLkwuQ3x8ZS5SJiZlLlIuQyl7ZS5MJiZlLkwuQ3x8KGUuUi5DPSExLGUuQz0hMCx1Tih0aGlzLGUpLGU9ci5MKSxlLkM9ci5DLHIuQz1lLkwuQz0hMSxoTih0aGlzLHIpLHQ9dGhpcy5fO2JyZWFrfWUuQz0hMCx0PXIscj1yLlV9d2hpbGUoIXQuQyk7dCYmKHQuQz0hMSl9fX07dmFyIHhOLHdOPVtdO2Z1bmN0aW9uIFNOKCl7Y04odGhpcyksdGhpcy54PXRoaXMueT10aGlzLmFyYz10aGlzLnNpdGU9dGhpcy5jeT1udWxsfWZ1bmN0aW9uIE1OKHQpe3ZhciBlPXQuUCxuPXQuTjtpZihlJiZuKXt2YXIgaT1lLnNpdGUscj10LnNpdGUsbz1uLnNpdGU7aWYoaSE9PW8pe3ZhciBhPXJbMF0scz1yWzFdLGw9aVswXS1hLGM9aVsxXS1zLHU9b1swXS1hLGg9b1sxXS1zLGQ9MioobCpoLWMqdSk7aWYoIShkPj0tSE4pKXt2YXIgcD1sKmwrYypjLGY9dSp1K2gqaCxtPShoKnAtYypmKS9kLGc9KGwqZi11KnApL2QsXz13Ti5wb3AoKXx8bmV3IFNOO18uYXJjPXQsXy5zaXRlPXIsXy54PW0rYSxfLnk9KF8uY3k9ZytzKStNYXRoLnNxcnQobSptK2cqZyksdC5jaXJjbGU9Xztmb3IodmFyIHk9bnVsbCx2PXpOLl87djspaWYoXy55PHYueXx8Xy55PT09di55JiZfLng8PXYueCl7aWYoIXYuTCl7eT12LlA7YnJlYWt9dj12Lkx9ZWxzZXtpZighdi5SKXt5PXY7YnJlYWt9dj12LlJ9ek4uaW5zZXJ0KHksXykseXx8KHhOPV8pfX19fWZ1bmN0aW9uIEVOKHQpe3ZhciBlPXQuY2lyY2xlO2UmJihlLlB8fCh4Tj1lLk4pLHpOLnJlbW92ZShlKSx3Ti5wdXNoKGUpLGNOKGUpLHQuY2lyY2xlPW51bGwpfXZhciBUTj1bXTtmdW5jdGlvbiBDTigpe2NOKHRoaXMpLHRoaXMuZWRnZT10aGlzLnNpdGU9dGhpcy5jaXJjbGU9bnVsbH1mdW5jdGlvbiBBTih0KXt2YXIgZT1UTi5wb3AoKXx8bmV3IENOO3JldHVybiBlLnNpdGU9dCxlfWZ1bmN0aW9uIGtOKHQpe0VOKHQpLFJOLnJlbW92ZSh0KSxUTi5wdXNoKHQpLGNOKHQpfWZ1bmN0aW9uIExOKHQpe3ZhciBlPXQuY2lyY2xlLG49ZS54LGk9ZS5jeSxyPVtuLGldLG89dC5QLGE9dC5OLHM9W3RdO2tOKHQpO2Zvcih2YXIgbD1vO2wuY2lyY2xlJiZNYXRoLmFicyhuLWwuY2lyY2xlLngpPEJOJiZNYXRoLmFicyhpLWwuY2lyY2xlLmN5KTxCTjspbz1sLlAscy51bnNoaWZ0KGwpLGtOKGwpLGw9bztzLnVuc2hpZnQobCksRU4obCk7Zm9yKHZhciBjPWE7Yy5jaXJjbGUmJk1hdGguYWJzKG4tYy5jaXJjbGUueCk8Qk4mJk1hdGguYWJzKGktYy5jaXJjbGUuY3kpPEJOOylhPWMuTixzLnB1c2goYyksa04oYyksYz1hO3MucHVzaChjKSxFTihjKTt2YXIgdSxoPXMubGVuZ3RoO2Zvcih1PTE7dTxoOysrdSltTigoYz1zW3VdKS5lZGdlLChsPXNbdS0xXSkuc2l0ZSxjLnNpdGUscik7KGM9c1toLTFdKS5lZGdlPXBOKChsPXNbMF0pLnNpdGUsYy5zaXRlLG51bGwsciksTU4obCksTU4oYyl9ZnVuY3Rpb24gUE4odCl7Zm9yKHZhciBlLG4saSxyLG89dFswXSxhPXRbMV0scz1STi5fO3M7KWlmKChpPU5OKHMsYSktbyk+Qk4pcz1zLkw7ZWxzZXtpZighKChyPW8tSU4ocyxhKSk+Qk4pKXtpPi1CTj8oZT1zLlAsbj1zKTpyPi1CTj8oZT1zLG49cy5OKTplPW49czticmVha31pZighcy5SKXtlPXM7YnJlYWt9cz1zLlJ9IShmdW5jdGlvbiBsKHQpe3JldHVybiBPTlt0LmluZGV4XT17c2l0ZTp0LGhhbGZlZGdlczpbXX19KSh0KTt2YXIgYz1BTih0KTtpZihSTi5pbnNlcnQoZSxjKSxlfHxuKXtpZihlPT09bilyZXR1cm4gRU4oZSksbj1BTihlLnNpdGUpLFJOLmluc2VydChjLG4pLGMuZWRnZT1uLmVkZ2U9cE4oZS5zaXRlLGMuc2l0ZSksTU4oZSksdm9pZCBNTihuKTtpZihuKXtFTihlKSxFTihuKTt2YXIgdT1lLnNpdGUsaD11WzBdLGQ9dVsxXSxwPXRbMF0taCxmPXRbMV0tZCxtPW4uc2l0ZSxnPW1bMF0taCxfPW1bMV0tZCx5PTIqKHAqXy1mKmcpLHY9cCpwK2YqZixiPWcqZytfKl8seD1bKF8qdi1mKmIpL3kraCwocCpiLWcqdikveStkXTttTihuLmVkZ2UsdSxtLHgpLGMuZWRnZT1wTih1LHQsbnVsbCx4KSxuLmVkZ2U9cE4odCxtLG51bGwseCksTU4oZSksTU4obil9ZWxzZSBjLmVkZ2U9cE4oZS5zaXRlLGMuc2l0ZSl9fWZ1bmN0aW9uIE5OKHQsZSl7dmFyIG49dC5zaXRlLGk9blswXSxyPW5bMV0sbz1yLWU7aWYoIW8pcmV0dXJuIGk7dmFyIGE9dC5QO2lmKCFhKXJldHVybi0xLzA7dmFyIHM9KG49YS5zaXRlKVswXSxsPW5bMV0sYz1sLWU7aWYoIWMpcmV0dXJuIHM7dmFyIHU9cy1pLGg9MS9vLTEvYyxkPXUvYztyZXR1cm4gaD8oLWQrTWF0aC5zcXJ0KGQqZC0yKmgqKHUqdS8oLTIqYyktbCtjLzIrci1vLzIpKSkvaCtpOihpK3MpLzJ9ZnVuY3Rpb24gSU4odCxlKXt2YXIgbj10Lk47aWYobilyZXR1cm4gTk4obixlKTt2YXIgaT10LnNpdGU7cmV0dXJuIGlbMV09PT1lP2lbMF06MS8wfXZhciBSTixPTix6TixETixCTj0xZS02LEhOPTFlLTEyO2Z1bmN0aW9uIEZOKHQsZSxuKXtyZXR1cm4odFswXS1uWzBdKSooZVsxXS10WzFdKS0odFswXS1lWzBdKSooblsxXS10WzFdKX1mdW5jdGlvbiBWTih0LGUpe3JldHVybiBlWzFdLXRbMV18fGVbMF0tdFswXX1mdW5jdGlvbiBVTih0LGUpe3ZhciBuLGkscixvPXQuc29ydChWTikucG9wKCk7Zm9yKEROPVtdLE9OPW5ldyBBcnJheSh0Lmxlbmd0aCksUk49bmV3IGxOLHpOPW5ldyBsTjs7KWlmKHI9eE4sbyYmKCFyfHxvWzFdPHIueXx8b1sxXT09PXIueSYmb1swXTxyLngpKW9bMF09PT1uJiZvWzFdPT09aXx8KFBOKG8pLG49b1swXSxpPW9bMV0pLG89dC5wb3AoKTtlbHNle2lmKCFyKWJyZWFrO0xOKHIuYXJjKX1pZigoZnVuY3Rpb24gYSgpe2Zvcih2YXIgdCxlLG4saSxyPTAsbz1PTi5sZW5ndGg7cjxvOysrcilpZigodD1PTltyXSkmJihpPShlPXQuaGFsZmVkZ2VzKS5sZW5ndGgpKXt2YXIgYT1uZXcgQXJyYXkoaSkscz1uZXcgQXJyYXkoaSk7Zm9yKG49MDtuPGk7KytuKWFbbl09bixzW25dPXlOKHQsRE5bZVtuXV0pO2ZvcihhLnNvcnQoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHNbZV0tc1t0XX0pKSxuPTA7bjxpOysrbilzW25dPWVbYVtuXV07Zm9yKG49MDtuPGk7KytuKWVbbl09c1tuXX19KSgpLGUpe3ZhciBzPStlWzBdWzBdLGw9K2VbMF1bMV0sYz0rZVsxXVswXSx1PStlWzFdWzFdOyEoZnVuY3Rpb24gaCh0LGUsbixpKXtmb3IodmFyIHIsbz1ETi5sZW5ndGg7by0tOylfTihyPUROW29dLHQsZSxuLGkpJiZnTihyLHQsZSxuLGkpJiYoTWF0aC5hYnMoclswXVswXS1yWzFdWzBdKT5CTnx8TWF0aC5hYnMoclswXVsxXS1yWzFdWzFdKT5CTil8fGRlbGV0ZSBETltvXX0pKHMsbCxjLHUpLChmdW5jdGlvbiBkKHQsZSxuLGkpe3ZhciByLG8sYSxzLGwsYyx1LGgsZCxwLGYsbSxnPU9OLmxlbmd0aCxfPSEwO2ZvcihyPTA7cjxnOysrcilpZihvPU9OW3JdKXtmb3IoYT1vLnNpdGUscz0obD1vLmhhbGZlZGdlcykubGVuZ3RoO3MtLTspRE5bbFtzXV18fGwuc3BsaWNlKHMsMSk7Zm9yKHM9MCxjPWwubGVuZ3RoO3M8YzspZj0ocD1iTihvLEROW2xbc11dKSlbMF0sbT1wWzFdLGg9KHU9dk4obyxETltsWysrcyVjXV0pKVswXSxkPXVbMV0sKE1hdGguYWJzKGYtaCk+Qk58fE1hdGguYWJzKG0tZCk+Qk4pJiYobC5zcGxpY2UocywwLEROLnB1c2goZk4oYSxwLE1hdGguYWJzKGYtdCk8Qk4mJmktbT5CTj9bdCxNYXRoLmFicyhoLXQpPEJOP2Q6aV06TWF0aC5hYnMobS1pKTxCTiYmbi1mPkJOP1tNYXRoLmFicyhkLWkpPEJOP2g6bixpXTpNYXRoLmFicyhmLW4pPEJOJiZtLWU+Qk4/W24sTWF0aC5hYnMoaC1uKTxCTj9kOmVdOk1hdGguYWJzKG0tZSk8Qk4mJmYtdD5CTj9bTWF0aC5hYnMoZC1lKTxCTj9oOnQsZV06bnVsbCkpLTEpLCsrYyk7YyYmKF89ITEpfWlmKF8pe3ZhciB5LHYsYix4PTEvMDtmb3Iocj0wLF89bnVsbDtyPGc7KytyKShvPU9OW3JdKSYmKGI9KHk9KGE9by5zaXRlKVswXS10KSp5Kyh2PWFbMV0tZSkqdik8eCYmKHg9YixfPW8pO2lmKF8pe3ZhciB3PVt0LGVdLFM9W3QsaV0sTT1bbixpXSxFPVtuLGVdO18uaGFsZmVkZ2VzLnB1c2goRE4ucHVzaChmTihhPV8uc2l0ZSx3LFMpKS0xLEROLnB1c2goZk4oYSxTLE0pKS0xLEROLnB1c2goZk4oYSxNLEUpKS0xLEROLnB1c2goZk4oYSxFLHcpKS0xKX19Zm9yKHI9MDtyPGc7KytyKShvPU9OW3JdKSYmKG8uaGFsZmVkZ2VzLmxlbmd0aHx8ZGVsZXRlIE9OW3JdKX0pKHMsbCxjLHUpfXRoaXMuZWRnZXM9RE4sdGhpcy5jZWxscz1PTixSTj16Tj1ETj1PTj1udWxsfWZ1bmN0aW9uIGpOKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0fX1mdW5jdGlvbiBHTih0LGUsbil7dGhpcy50YXJnZXQ9dCx0aGlzLnR5cGU9ZSx0aGlzLnRyYW5zZm9ybT1ufWZ1bmN0aW9uIFdOKHQsZSxuKXt0aGlzLms9dCx0aGlzLng9ZSx0aGlzLnk9bn1VTi5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOlVOLHBvbHlnb25zOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5lZGdlcztyZXR1cm4gdGhpcy5jZWxscy5tYXAoKGZ1bmN0aW9uKGUpe3ZhciBuPWUuaGFsZmVkZ2VzLm1hcCgoZnVuY3Rpb24obil7cmV0dXJuIHZOKGUsdFtuXSl9KSk7cmV0dXJuIG4uZGF0YT1lLnNpdGUuZGF0YSxufSkpfSx0cmlhbmdsZXM6ZnVuY3Rpb24oKXt2YXIgdD1bXSxlPXRoaXMuZWRnZXM7cmV0dXJuIHRoaXMuY2VsbHMuZm9yRWFjaCgoZnVuY3Rpb24obixpKXtpZihvPShyPW4uaGFsZmVkZ2VzKS5sZW5ndGgpZm9yKHZhciByLG8sYSxzPW4uc2l0ZSxsPS0xLGM9ZVtyW28tMV1dLHU9Yy5sZWZ0PT09cz9jLnJpZ2h0OmMubGVmdDsrK2w8bzspYT11LHU9KGM9ZVtyW2xdXSkubGVmdD09PXM/Yy5yaWdodDpjLmxlZnQsYSYmdSYmaTxhLmluZGV4JiZpPHUuaW5kZXgmJkZOKHMsYSx1KTwwJiZ0LnB1c2goW3MuZGF0YSxhLmRhdGEsdS5kYXRhXSl9KSksdH0sbGlua3M6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lZGdlcy5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiB0LnJpZ2h0fSkpLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJue3NvdXJjZTp0LmxlZnQuZGF0YSx0YXJnZXQ6dC5yaWdodC5kYXRhfX0pKX0sZmluZDpmdW5jdGlvbih0LGUsbil7Zm9yKHZhciBpLHIsbz10aGlzLGE9by5fZm91bmR8fDAscz1vLmNlbGxzLmxlbmd0aDshKHI9by5jZWxsc1thXSk7KWlmKCsrYT49cylyZXR1cm4gbnVsbDt2YXIgbD10LXIuc2l0ZVswXSxjPWUtci5zaXRlWzFdLHU9bCpsK2MqYztkb3tyPW8uY2VsbHNbaT1hXSxhPW51bGwsci5oYWxmZWRnZXMuZm9yRWFjaCgoZnVuY3Rpb24obil7dmFyIGk9by5lZGdlc1tuXSxzPWkubGVmdDtpZihzIT09ci5zaXRlJiZzfHwocz1pLnJpZ2h0KSl7dmFyIGw9dC1zWzBdLGM9ZS1zWzFdLGg9bCpsK2MqYztoPHUmJih1PWgsYT1zLmluZGV4KX19KSl9d2hpbGUobnVsbCE9PWEpO3JldHVybiBvLl9mb3VuZD1pLG51bGw9PW58fHU8PW4qbj9yLnNpdGU6bnVsbH19LFdOLnByb3RvdHlwZT17Y29uc3RydWN0b3I6V04sc2NhbGU6ZnVuY3Rpb24odCl7cmV0dXJuIDE9PT10P3RoaXM6bmV3IFdOKHRoaXMuayp0LHRoaXMueCx0aGlzLnkpfSx0cmFuc2xhdGU6ZnVuY3Rpb24odCxlKXtyZXR1cm4gMD09PXQmMD09PWU/dGhpczpuZXcgV04odGhpcy5rLHRoaXMueCt0aGlzLmsqdCx0aGlzLnkrdGhpcy5rKmUpfSxhcHBseTpmdW5jdGlvbih0KXtyZXR1cm5bdFswXSp0aGlzLmsrdGhpcy54LHRbMV0qdGhpcy5rK3RoaXMueV19LGFwcGx5WDpmdW5jdGlvbih0KXtyZXR1cm4gdCp0aGlzLmsrdGhpcy54fSxhcHBseVk6ZnVuY3Rpb24odCl7cmV0dXJuIHQqdGhpcy5rK3RoaXMueX0saW52ZXJ0OmZ1bmN0aW9uKHQpe3JldHVyblsodFswXS10aGlzLngpL3RoaXMuaywodFsxXS10aGlzLnkpL3RoaXMua119LGludmVydFg6ZnVuY3Rpb24odCl7cmV0dXJuKHQtdGhpcy54KS90aGlzLmt9LGludmVydFk6ZnVuY3Rpb24odCl7cmV0dXJuKHQtdGhpcy55KS90aGlzLmt9LHJlc2NhbGVYOmZ1bmN0aW9uKHQpe3JldHVybiB0LmNvcHkoKS5kb21haW4odC5yYW5nZSgpLm1hcCh0aGlzLmludmVydFgsdGhpcykubWFwKHQuaW52ZXJ0LHQpKX0scmVzY2FsZVk6ZnVuY3Rpb24odCl7cmV0dXJuIHQuY29weSgpLmRvbWFpbih0LnJhbmdlKCkubWFwKHRoaXMuaW52ZXJ0WSx0aGlzKS5tYXAodC5pbnZlcnQsdCkpfSx0b1N0cmluZzpmdW5jdGlvbigpe3JldHVybiJ0cmFuc2xhdGUoIit0aGlzLngrIiwiK3RoaXMueSsiKSBzY2FsZSgiK3RoaXMuaysiKSJ9fTt2YXIgcU49bmV3IFdOKDEsMCwwKTtmdW5jdGlvbiBZTih0KXtmb3IoOyF0Ll9fem9vbTspaWYoISh0PXQucGFyZW50Tm9kZSkpcmV0dXJuIHFOO3JldHVybiB0Ll9fem9vbX1mdW5jdGlvbiBYTigpe011LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpfWZ1bmN0aW9uICROKCl7TXUucHJldmVudERlZmF1bHQoKSxNdS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKX1mdW5jdGlvbiBLTigpe3JldHVybiFNdS5jdHJsS2V5JiYhTXUuYnV0dG9ufWZ1bmN0aW9uIFpOKCl7dmFyIHQ9dGhpcztyZXR1cm4gdCBpbnN0YW5jZW9mIFNWR0VsZW1lbnQ/KHQ9dC5vd25lclNWR0VsZW1lbnR8fHQpLmhhc0F0dHJpYnV0ZSgidmlld0JveCIpP1tbKHQ9dC52aWV3Qm94LmJhc2VWYWwpLngsdC55XSxbdC54K3Qud2lkdGgsdC55K3QuaGVpZ2h0XV06W1swLDBdLFt0LndpZHRoLmJhc2VWYWwudmFsdWUsdC5oZWlnaHQuYmFzZVZhbC52YWx1ZV1dOltbMCwwXSxbdC5jbGllbnRXaWR0aCx0LmNsaWVudEhlaWdodF1dfWZ1bmN0aW9uIEpOKCl7cmV0dXJuIHRoaXMuX196b29tfHxxTn1mdW5jdGlvbiBRTigpe3JldHVybi1NdS5kZWx0YVkqKDE9PT1NdS5kZWx0YU1vZGU/LjA1Ok11LmRlbHRhTW9kZT8xOi4wMDIpfWZ1bmN0aW9uIHRJKCl7cmV0dXJuIG5hdmlnYXRvci5tYXhUb3VjaFBvaW50c3x8Im9udG91Y2hzdGFydCJpbiB0aGlzfWZ1bmN0aW9uIGVJKHQsZSxuKXt2YXIgaT10LmludmVydFgoZVswXVswXSktblswXVswXSxyPXQuaW52ZXJ0WChlWzFdWzBdKS1uWzFdWzBdLG89dC5pbnZlcnRZKGVbMF1bMV0pLW5bMF1bMV0sYT10LmludmVydFkoZVsxXVsxXSktblsxXVsxXTtyZXR1cm4gdC50cmFuc2xhdGUocj5pPyhpK3IpLzI6TWF0aC5taW4oMCxpKXx8TWF0aC5tYXgoMCxyKSxhPm8/KG8rYSkvMjpNYXRoLm1pbigwLG8pfHxNYXRoLm1heCgwLGEpKX1mdW5jdGlvbiBuSSgpe3ZhciB0LGUsbj1LTixpPVpOLHI9ZUksbz1RTixhPXRJLHM9WzAsMS8wXSxsPVtbLTEvMCwtMS8wXSxbMS8wLDEvMF1dLGM9MjUwLHU9RXAsaD13Yygic3RhcnQiLCJ6b29tIiwiZW5kIiksZD01MDAscD0wO2Z1bmN0aW9uIGYodCl7dC5wcm9wZXJ0eSgiX196b29tIixKTikub24oIndoZWVsLnpvb20iLHgpLm9uKCJtb3VzZWRvd24uem9vbSIsdykub24oImRibGNsaWNrLnpvb20iLFMpLmZpbHRlcihhKS5vbigidG91Y2hzdGFydC56b29tIixNKS5vbigidG91Y2htb3ZlLnpvb20iLEUpLm9uKCJ0b3VjaGVuZC56b29tIHRvdWNoY2FuY2VsLnpvb20iLFQpLnN0eWxlKCJ0b3VjaC1hY3Rpb24iLCJub25lIikuc3R5bGUoIi13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvciIsInJnYmEoMCwwLDAsMCkiKX1mdW5jdGlvbiBtKHQsZSl7cmV0dXJuKGU9TWF0aC5tYXgoc1swXSxNYXRoLm1pbihzWzFdLGUpKSk9PT10Lms/dDpuZXcgV04oZSx0LngsdC55KX1mdW5jdGlvbiBnKHQsZSxuKXt2YXIgaT1lWzBdLW5bMF0qdC5rLHI9ZVsxXS1uWzFdKnQuaztyZXR1cm4gaT09PXQueCYmcj09PXQueT90Om5ldyBXTih0LmssaSxyKX1mdW5jdGlvbiBfKHQpe3JldHVyblsoK3RbMF1bMF0rICt0WzFdWzBdKS8yLCgrdFswXVsxXSsgK3RbMV1bMV0pLzJdfWZ1bmN0aW9uIHkodCxlLG4pe3Qub24oInN0YXJ0Lnpvb20iLChmdW5jdGlvbigpe3YodGhpcyxhcmd1bWVudHMpLnN0YXJ0KCl9KSkub24oImludGVycnVwdC56b29tIGVuZC56b29tIiwoZnVuY3Rpb24oKXt2KHRoaXMsYXJndW1lbnRzKS5lbmQoKX0pKS50d2Vlbigiem9vbSIsKGZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxyPWFyZ3VtZW50cyxvPXYodCxyKSxhPWkuYXBwbHkodCxyKSxzPW51bGw9PW4/XyhhKToiZnVuY3Rpb24iPT10eXBlb2Ygbj9uLmFwcGx5KHQscik6bixsPU1hdGgubWF4KGFbMV1bMF0tYVswXVswXSxhWzFdWzFdLWFbMF1bMV0pLGM9dC5fX3pvb20saD0iZnVuY3Rpb24iPT10eXBlb2YgZT9lLmFwcGx5KHQscik6ZSxkPXUoYy5pbnZlcnQocykuY29uY2F0KGwvYy5rKSxoLmludmVydChzKS5jb25jYXQobC9oLmspKTtyZXR1cm4gZnVuY3Rpb24odCl7aWYoMT09PXQpdD1oO2Vsc2V7dmFyIGU9ZCh0KSxuPWwvZVsyXTt0PW5ldyBXTihuLHNbMF0tZVswXSpuLHNbMV0tZVsxXSpuKX1vLnpvb20obnVsbCx0KX19KSl9ZnVuY3Rpb24gdih0LGUsbil7cmV0dXJuIW4mJnQuX196b29taW5nfHxuZXcgYih0LGUpfWZ1bmN0aW9uIGIodCxlKXt0aGlzLnRoYXQ9dCx0aGlzLmFyZ3M9ZSx0aGlzLmFjdGl2ZT0wLHRoaXMuZXh0ZW50PWkuYXBwbHkodCxlKSx0aGlzLnRhcHM9MH1mdW5jdGlvbiB4KCl7aWYobi5hcHBseSh0aGlzLGFyZ3VtZW50cykpe3ZhciB0PXYodGhpcyxhcmd1bWVudHMpLGU9dGhpcy5fX3pvb20saT1NYXRoLm1heChzWzBdLE1hdGgubWluKHNbMV0sZS5rKk1hdGgucG93KDIsby5hcHBseSh0aGlzLGFyZ3VtZW50cykpKSksYT1iaCh0aGlzKTtpZih0LndoZWVsKXQubW91c2VbMF1bMF09PT1hWzBdJiZ0Lm1vdXNlWzBdWzFdPT09YVsxXXx8KHQubW91c2VbMV09ZS5pbnZlcnQodC5tb3VzZVswXT1hKSksY2xlYXJUaW1lb3V0KHQud2hlZWwpO2Vsc2V7aWYoZS5rPT09aSlyZXR1cm47dC5tb3VzZT1bYSxlLmludmVydChhKV0sbGYodGhpcyksdC5zdGFydCgpfSROKCksdC53aGVlbD1zZXRUaW1lb3V0KGMsMTUwKSx0Lnpvb20oIm1vdXNlIixyKGcobShlLGkpLHQubW91c2VbMF0sdC5tb3VzZVsxXSksdC5leHRlbnQsbCkpfWZ1bmN0aW9uIGMoKXt0LndoZWVsPW51bGwsdC5lbmQoKX19ZnVuY3Rpb24gdygpe2lmKCFlJiZuLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl7dmFyIHQ9dih0aGlzLGFyZ3VtZW50cywhMCksaT1EdShNdS52aWV3KS5vbigibW91c2Vtb3ZlLnpvb20iLGMsITApLm9uKCJtb3VzZXVwLnpvb20iLHUsITApLG89YmgodGhpcyksYT1NdS5jbGllbnRYLHM9TXUuY2xpZW50WTtFaChNdS52aWV3KSxYTigpLHQubW91c2U9W28sdGhpcy5fX3pvb20uaW52ZXJ0KG8pXSxsZih0aGlzKSx0LnN0YXJ0KCl9ZnVuY3Rpb24gYygpe2lmKCROKCksIXQubW92ZWQpe3ZhciBlPU11LmNsaWVudFgtYSxuPU11LmNsaWVudFktczt0Lm1vdmVkPWUqZStuKm4+cH10Lnpvb20oIm1vdXNlIixyKGcodC50aGF0Ll9fem9vbSx0Lm1vdXNlWzBdPWJoKHQudGhhdCksdC5tb3VzZVsxXSksdC5leHRlbnQsbCkpfWZ1bmN0aW9uIHUoKXtpLm9uKCJtb3VzZW1vdmUuem9vbSBtb3VzZXVwLnpvb20iLG51bGwpLFRoKE11LnZpZXcsdC5tb3ZlZCksJE4oKSx0LmVuZCgpfX1mdW5jdGlvbiBTKCl7aWYobi5hcHBseSh0aGlzLGFyZ3VtZW50cykpe3ZhciB0PXRoaXMuX196b29tLGU9YmgodGhpcyksbz10LmludmVydChlKSxhPXQuayooTXUuc2hpZnRLZXk/LjU6Mikscz1yKGcobSh0LGEpLGUsbyksaS5hcHBseSh0aGlzLGFyZ3VtZW50cyksbCk7JE4oKSxjPjA/RHUodGhpcykudHJhbnNpdGlvbigpLmR1cmF0aW9uKGMpLmNhbGwoeSxzLGUpOkR1KHRoaXMpLmNhbGwoZi50cmFuc2Zvcm0scyl9fWZ1bmN0aW9uIE0oKXtpZihuLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl7dmFyIGUsaSxyLG8sYT1NdS50b3VjaGVzLHM9YS5sZW5ndGgsbD12KHRoaXMsYXJndW1lbnRzLE11LmNoYW5nZWRUb3VjaGVzLmxlbmd0aD09PXMpO2ZvcihYTigpLGk9MDtpPHM7KytpKW89W289d2godGhpcyxhLChyPWFbaV0pLmlkZW50aWZpZXIpLHRoaXMuX196b29tLmludmVydChvKSxyLmlkZW50aWZpZXJdLGwudG91Y2gwP2wudG91Y2gxfHxsLnRvdWNoMFsyXT09PW9bMl18fChsLnRvdWNoMT1vLGwudGFwcz0wKToobC50b3VjaDA9byxlPSEwLGwudGFwcz0xKyEhdCk7dCYmKHQ9Y2xlYXJUaW1lb3V0KHQpKSxlJiYobC50YXBzPDImJih0PXNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7dD1udWxsfSksZCkpLGxmKHRoaXMpLGwuc3RhcnQoKSl9fWZ1bmN0aW9uIEUoKXtpZih0aGlzLl9fem9vbWluZyl7dmFyIGUsbixpLG8sYT12KHRoaXMsYXJndW1lbnRzKSxzPU11LmNoYW5nZWRUb3VjaGVzLGM9cy5sZW5ndGg7Zm9yKCROKCksdCYmKHQ9Y2xlYXJUaW1lb3V0KHQpKSxhLnRhcHM9MCxlPTA7ZTxjOysrZSlpPXdoKHRoaXMscywobj1zW2VdKS5pZGVudGlmaWVyKSxhLnRvdWNoMCYmYS50b3VjaDBbMl09PT1uLmlkZW50aWZpZXI/YS50b3VjaDBbMF09aTphLnRvdWNoMSYmYS50b3VjaDFbMl09PT1uLmlkZW50aWZpZXImJihhLnRvdWNoMVswXT1pKTtpZihuPWEudGhhdC5fX3pvb20sYS50b3VjaDEpe3ZhciB1PWEudG91Y2gwWzBdLGg9YS50b3VjaDBbMV0sZD1hLnRvdWNoMVswXSxwPWEudG91Y2gxWzFdLGY9KGY9ZFswXS11WzBdKSpmKyhmPWRbMV0tdVsxXSkqZixfPShfPXBbMF0taFswXSkqXysoXz1wWzFdLWhbMV0pKl87bj1tKG4sTWF0aC5zcXJ0KGYvXykpLGk9Wyh1WzBdK2RbMF0pLzIsKHVbMV0rZFsxXSkvMl0sbz1bKGhbMF0rcFswXSkvMiwoaFsxXStwWzFdKS8yXX1lbHNle2lmKCFhLnRvdWNoMClyZXR1cm47aT1hLnRvdWNoMFswXSxvPWEudG91Y2gwWzFdfWEuem9vbSgidG91Y2giLHIoZyhuLGksbyksYS5leHRlbnQsbCkpfX1mdW5jdGlvbiBUKCl7aWYodGhpcy5fX3pvb21pbmcpe3ZhciB0LG4saT12KHRoaXMsYXJndW1lbnRzKSxyPU11LmNoYW5nZWRUb3VjaGVzLG89ci5sZW5ndGg7Zm9yKFhOKCksZSYmY2xlYXJUaW1lb3V0KGUpLGU9c2V0VGltZW91dCgoZnVuY3Rpb24oKXtlPW51bGx9KSxkKSx0PTA7dDxvOysrdCluPXJbdF0saS50b3VjaDAmJmkudG91Y2gwWzJdPT09bi5pZGVudGlmaWVyP2RlbGV0ZSBpLnRvdWNoMDppLnRvdWNoMSYmaS50b3VjaDFbMl09PT1uLmlkZW50aWZpZXImJmRlbGV0ZSBpLnRvdWNoMTtpZihpLnRvdWNoMSYmIWkudG91Y2gwJiYoaS50b3VjaDA9aS50b3VjaDEsZGVsZXRlIGkudG91Y2gxKSxpLnRvdWNoMClpLnRvdWNoMFsxXT10aGlzLl9fem9vbS5pbnZlcnQoaS50b3VjaDBbMF0pO2Vsc2UgaWYoaS5lbmQoKSwyPT09aS50YXBzKXt2YXIgYT1EdSh0aGlzKS5vbigiZGJsY2xpY2suem9vbSIpO2EmJmEuYXBwbHkodGhpcyxhcmd1bWVudHMpfX19cmV0dXJuIGYudHJhbnNmb3JtPWZ1bmN0aW9uKHQsZSxuKXt2YXIgaT10LnNlbGVjdGlvbj90LnNlbGVjdGlvbigpOnQ7aS5wcm9wZXJ0eSgiX196b29tIixKTiksdCE9PWk/eSh0LGUsbik6aS5pbnRlcnJ1cHQoKS5lYWNoKChmdW5jdGlvbigpe3YodGhpcyxhcmd1bWVudHMpLnN0YXJ0KCkuem9vbShudWxsLCJmdW5jdGlvbiI9PXR5cGVvZiBlP2UuYXBwbHkodGhpcyxhcmd1bWVudHMpOmUpLmVuZCgpfSkpfSxmLnNjYWxlQnk9ZnVuY3Rpb24odCxlLG4pe2Yuc2NhbGVUbyh0LChmdW5jdGlvbigpe3ZhciB0PXRoaXMuX196b29tLmssbj0iZnVuY3Rpb24iPT10eXBlb2YgZT9lLmFwcGx5KHRoaXMsYXJndW1lbnRzKTplO3JldHVybiB0Km59KSxuKX0sZi5zY2FsZVRvPWZ1bmN0aW9uKHQsZSxuKXtmLnRyYW5zZm9ybSh0LChmdW5jdGlvbigpe3ZhciB0PWkuYXBwbHkodGhpcyxhcmd1bWVudHMpLG89dGhpcy5fX3pvb20sYT1udWxsPT1uP18odCk6ImZ1bmN0aW9uIj09dHlwZW9mIG4/bi5hcHBseSh0aGlzLGFyZ3VtZW50cyk6bixzPW8uaW52ZXJ0KGEpLGM9ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk6ZTtyZXR1cm4gcihnKG0obyxjKSxhLHMpLHQsbCl9KSxuKX0sZi50cmFuc2xhdGVCeT1mdW5jdGlvbih0LGUsbil7Zi50cmFuc2Zvcm0odCwoZnVuY3Rpb24oKXtyZXR1cm4gcih0aGlzLl9fem9vbS50cmFuc2xhdGUoImZ1bmN0aW9uIj09dHlwZW9mIGU/ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk6ZSwiZnVuY3Rpb24iPT10eXBlb2Ygbj9uLmFwcGx5KHRoaXMsYXJndW1lbnRzKTpuKSxpLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxsKX0pKX0sZi50cmFuc2xhdGVUbz1mdW5jdGlvbih0LGUsbixvKXtmLnRyYW5zZm9ybSh0LChmdW5jdGlvbigpe3ZhciB0PWkuYXBwbHkodGhpcyxhcmd1bWVudHMpLGE9dGhpcy5fX3pvb20scz1udWxsPT1vP18odCk6ImZ1bmN0aW9uIj09dHlwZW9mIG8/by5hcHBseSh0aGlzLGFyZ3VtZW50cyk6bztyZXR1cm4gcihxTi50cmFuc2xhdGUoc1swXSxzWzFdKS5zY2FsZShhLmspLnRyYW5zbGF0ZSgiZnVuY3Rpb24iPT10eXBlb2YgZT8tZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk6LWUsImZ1bmN0aW9uIj09dHlwZW9mIG4/LW4uYXBwbHkodGhpcyxhcmd1bWVudHMpOi1uKSx0LGwpfSksbyl9LGIucHJvdG90eXBlPXtzdGFydDpmdW5jdGlvbigpe3JldHVybiAxPT0rK3RoaXMuYWN0aXZlJiYodGhpcy50aGF0Ll9fem9vbWluZz10aGlzLHRoaXMuZW1pdCgic3RhcnQiKSksdGhpc30sem9vbTpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLm1vdXNlJiYibW91c2UiIT09dCYmKHRoaXMubW91c2VbMV09ZS5pbnZlcnQodGhpcy5tb3VzZVswXSkpLHRoaXMudG91Y2gwJiYidG91Y2giIT09dCYmKHRoaXMudG91Y2gwWzFdPWUuaW52ZXJ0KHRoaXMudG91Y2gwWzBdKSksdGhpcy50b3VjaDEmJiJ0b3VjaCIhPT10JiYodGhpcy50b3VjaDFbMV09ZS5pbnZlcnQodGhpcy50b3VjaDFbMF0pKSx0aGlzLnRoYXQuX196b29tPWUsdGhpcy5lbWl0KCJ6b29tIiksdGhpc30sZW5kOmZ1bmN0aW9uKCl7cmV0dXJuIDA9PS0tdGhpcy5hY3RpdmUmJihkZWxldGUgdGhpcy50aGF0Ll9fem9vbWluZyx0aGlzLmVtaXQoImVuZCIpKSx0aGlzfSxlbWl0OmZ1bmN0aW9uKHQpe0x1KG5ldyBHTihmLHQsdGhpcy50aGF0Ll9fem9vbSksaC5hcHBseSxoLFt0LHRoaXMudGhhdCx0aGlzLmFyZ3NdKX19LGYud2hlZWxEZWx0YT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz0iZnVuY3Rpb24iPT10eXBlb2YgdD90OmpOKCt0KSxmKTpvfSxmLmZpbHRlcj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj0iZnVuY3Rpb24iPT10eXBlb2YgdD90OmpOKCEhdCksZik6bn0sZi50b3VjaGFibGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpqTighIXQpLGYpOmF9LGYuZXh0ZW50PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6ak4oW1srdFswXVswXSwrdFswXVsxXV0sWyt0WzFdWzBdLCt0WzFdWzFdXV0pLGYpOml9LGYuc2NhbGVFeHRlbnQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHNbMF09K3RbMF0sc1sxXT0rdFsxXSxmKTpbc1swXSxzWzFdXX0sZi50cmFuc2xhdGVFeHRlbnQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGxbMF1bMF09K3RbMF1bMF0sbFsxXVswXT0rdFsxXVswXSxsWzBdWzFdPSt0WzBdWzFdLGxbMV1bMV09K3RbMV1bMV0sZik6W1tsWzBdWzBdLGxbMF1bMV1dLFtsWzFdWzBdLGxbMV1bMV1dXX0sZi5jb25zdHJhaW49ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9dCxmKTpyfSxmLmR1cmF0aW9uPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhjPSt0LGYpOmN9LGYuaW50ZXJwb2xhdGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHU9dCxmKTp1fSxmLm9uPWZ1bmN0aW9uKCl7dmFyIHQ9aC5vbi5hcHBseShoLGFyZ3VtZW50cyk7cmV0dXJuIHQ9PT1oP2Y6dH0sZi5jbGlja0Rpc3RhbmNlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhwPSh0PSt0KSp0LGYpOk1hdGguc3FydChwKX0sZn1ZTi5wcm90b3R5cGU9V04ucHJvdG90eXBlO3ZhciBpST1PYmplY3QuZnJlZXplKHtfX3Byb3RvX186bnVsbCx2ZXJzaW9uOiI1LjcuMCIsYmlzZWN0OkRsLGJpc2VjdFJpZ2h0OkRsLGJpc2VjdExlZnQ6QmwsYXNjZW5kaW5nOlJsLGJpc2VjdG9yOk9sLGNyb3NzOkZsLGRlc2NlbmRpbmc6ZnVuY3Rpb24gckkodCxlKXtyZXR1cm4gZTx0Py0xOmU+dD8xOmU+PXQ/MDpOYU59LGRldmlhdGlvbjpqbCxleHRlbnQ6R2wsaGlzdG9ncmFtOmZ1bmN0aW9uIG9JKCl7dmFyIHQ9JGwsZT1HbCxuPWljO2Z1bmN0aW9uIGkoaSl7dmFyIHIsbyxhPWkubGVuZ3RoLHM9bmV3IEFycmF5KGEpO2ZvcihyPTA7cjxhOysrcilzW3JdPXQoaVtyXSxyLGkpO3ZhciBsPWUocyksYz1sWzBdLHU9bFsxXSxoPW4ocyxjLHUpO0FycmF5LmlzQXJyYXkoaCl8fChoPW5jKGMsdSxoKSxoPUtsKE1hdGguY2VpbChjL2gpKmgsdSxoKSk7Zm9yKHZhciBkPWgubGVuZ3RoO2hbMF08PWM7KWguc2hpZnQoKSwtLWQ7Zm9yKDtoW2QtMV0+dTspaC5wb3AoKSwtLWQ7dmFyIHAsZj1uZXcgQXJyYXkoZCsxKTtmb3Iocj0wO3I8PWQ7KytyKShwPWZbcl09W10pLngwPXI+MD9oW3ItMV06YyxwLngxPXI8ZD9oW3JdOnU7Zm9yKHI9MDtyPGE7KytyKWM8PShvPXNbcl0pJiZvPD11JiZmW0RsKGgsbywwLGQpXS5wdXNoKGlbcl0pO3JldHVybiBmfXJldHVybiBpLnZhbHVlPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PSJmdW5jdGlvbiI9PXR5cGVvZiBlP2U6WGwoZSksaSk6dH0saS5kb21haW49ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpYbChbdFswXSx0WzFdXSksaSk6ZX0saS50aHJlc2hvbGRzPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6QXJyYXkuaXNBcnJheSh0KT9YbChxbC5jYWxsKHQpKTpYbCh0KSxpKTpufSxpfSx0aHJlc2hvbGRGcmVlZG1hbkRpYWNvbmlzOmZ1bmN0aW9uIGFJKHQsZSxuKXtyZXR1cm4gdD1ZbC5jYWxsKHQsVmwpLnNvcnQoUmwpLE1hdGguY2VpbCgobi1lKS8oMioocmModCwuNzUpLXJjKHQsLjI1KSkqTWF0aC5wb3codC5sZW5ndGgsLTEvMykpKX0sdGhyZXNob2xkU2NvdHQ6ZnVuY3Rpb24gc0kodCxlLG4pe3JldHVybiBNYXRoLmNlaWwoKG4tZSkvKDMuNSpqbCh0KSpNYXRoLnBvdyh0Lmxlbmd0aCwtMS8zKSkpfSx0aHJlc2hvbGRTdHVyZ2VzOmljLG1heDpvYyxtZWFuOmZ1bmN0aW9uIGxJKHQsZSl7dmFyIG4saT10Lmxlbmd0aCxyPWksbz0tMSxhPTA7aWYobnVsbD09ZSlmb3IoOysrbzxpOylpc05hTihuPVZsKHRbb10pKT8tLXI6YSs9bjtlbHNlIGZvcig7KytvPGk7KWlzTmFOKG49VmwoZSh0W29dLG8sdCkpKT8tLXI6YSs9bjtpZihyKXJldHVybiBhL3J9LG1lZGlhbjpmdW5jdGlvbiBjSSh0LGUpe3ZhciBuLGk9dC5sZW5ndGgscj0tMSxvPVtdO2lmKG51bGw9PWUpZm9yKDsrK3I8aTspaXNOYU4obj1WbCh0W3JdKSl8fG8ucHVzaChuKTtlbHNlIGZvcig7KytyPGk7KWlzTmFOKG49VmwoZSh0W3JdLHIsdCkpKXx8by5wdXNoKG4pO3JldHVybiByYyhvLnNvcnQoUmwpLC41KX0sbWVyZ2U6YWMsbWluOnNjLHBhaXJzOmZ1bmN0aW9uIHVJKHQsZSl7bnVsbD09ZSYmKGU9SGwpO2Zvcih2YXIgbj0wLGk9dC5sZW5ndGgtMSxyPXRbMF0sbz1uZXcgQXJyYXkoaTwwPzA6aSk7bjxpOylvW25dPWUocixyPXRbKytuXSk7cmV0dXJuIG99LHBlcm11dGU6ZnVuY3Rpb24gaEkodCxlKXtmb3IodmFyIG49ZS5sZW5ndGgsaT1uZXcgQXJyYXkobik7bi0tOylpW25dPXRbZVtuXV07cmV0dXJuIGl9LHF1YW50aWxlOnJjLHJhbmdlOktsLHNjYW46ZnVuY3Rpb24gZEkodCxlKXtpZihuPXQubGVuZ3RoKXt2YXIgbixpLHI9MCxvPTAsYT10W29dO2ZvcihudWxsPT1lJiYoZT1SbCk7KytyPG47KShlKGk9dFtyXSxhKTwwfHwwIT09ZShhLGEpKSYmKGE9aSxvPXIpO3JldHVybiAwPT09ZShhLGEpP286dm9pZCAwfX0sc2h1ZmZsZTpmdW5jdGlvbiBwSSh0LGUsbil7Zm9yKHZhciBpLHIsbz0obnVsbD09bj90Lmxlbmd0aDpuKS0oZT1udWxsPT1lPzA6K2UpO287KXI9TWF0aC5yYW5kb20oKSpvLS18MCxpPXRbbytlXSx0W28rZV09dFtyK2VdLHRbcitlXT1pO3JldHVybiB0fSxzdW06ZnVuY3Rpb24gZkkodCxlKXt2YXIgbixpPXQubGVuZ3RoLHI9LTEsbz0wO2lmKG51bGw9PWUpZm9yKDsrK3I8aTspKG49K3Rbcl0pJiYobys9bik7ZWxzZSBmb3IoOysrcjxpOykobj0rZSh0W3JdLHIsdCkpJiYobys9bik7cmV0dXJuIG99LHRpY2tzOnRjLHRpY2tJbmNyZW1lbnQ6ZWMsdGlja1N0ZXA6bmMsdHJhbnNwb3NlOmxjLHZhcmlhbmNlOlVsLHppcDpmdW5jdGlvbiBtSSgpe3JldHVybiBsYyhhcmd1bWVudHMpfSxheGlzVG9wOmZ1bmN0aW9uIGdJKHQpe3JldHVybiB5YygxLHQpfSxheGlzUmlnaHQ6ZnVuY3Rpb24gX0kodCl7cmV0dXJuIHljKDIsdCl9LGF4aXNCb3R0b206dmMsYXhpc0xlZnQ6YmMsYnJ1c2g6dmcsYnJ1c2hYOmZ1bmN0aW9uIHlJKCl7cmV0dXJuIGJnKGlnKX0sYnJ1c2hZOnlnLGJydXNoU2VsZWN0aW9uOl9nLGNob3JkOmZ1bmN0aW9uIHZJKCl7dmFyIHQ9MCxlPW51bGwsbj1udWxsLGk9bnVsbDtmdW5jdGlvbiByKHIpe3ZhciBvLGEscyxsLGMsdSxoPXIubGVuZ3RoLGQ9W10scD1LbChoKSxmPVtdLG09W10sZz1tLmdyb3Vwcz1uZXcgQXJyYXkoaCksXz1uZXcgQXJyYXkoaCpoKTtmb3Iobz0wLGM9LTE7KytjPGg7KXtmb3IoYT0wLHU9LTE7Kyt1PGg7KWErPXJbY11bdV07ZC5wdXNoKGEpLGYucHVzaChLbChoKSksbys9YX1mb3IoZSYmcC5zb3J0KChmdW5jdGlvbih0LG4pe3JldHVybiBlKGRbdF0sZFtuXSl9KSksbiYmZi5mb3JFYWNoKChmdW5jdGlvbih0LGUpe3Quc29ydCgoZnVuY3Rpb24odCxpKXtyZXR1cm4gbihyW2VdW3RdLHJbZV1baV0pfSkpfSkpLGw9KG89VGcoMCxFZy10KmgpL28pP3Q6RWcvaCxhPTAsYz0tMTsrK2M8aDspe2ZvcihzPWEsdT0tMTsrK3U8aDspe3ZhciB5PXBbY10sdj1mW3ldW3VdLGI9clt5XVt2XSx4PWEsdz1hKz1iKm87X1t2KmgreV09e2luZGV4Onksc3ViaW5kZXg6dixzdGFydEFuZ2xlOngsZW5kQW5nbGU6dyx2YWx1ZTpifX1nW3ldPXtpbmRleDp5LHN0YXJ0QW5nbGU6cyxlbmRBbmdsZTphLHZhbHVlOmRbeV19LGErPWx9Zm9yKGM9LTE7KytjPGg7KWZvcih1PWMtMTsrK3U8aDspe3ZhciBTPV9bdSpoK2NdLE09X1tjKmgrdV07KFMudmFsdWV8fE0udmFsdWUpJiZtLnB1c2goUy52YWx1ZTxNLnZhbHVlP3tzb3VyY2U6TSx0YXJnZXQ6U306e3NvdXJjZTpTLHRhcmdldDpNfSl9cmV0dXJuIGk/bS5zb3J0KGkpOm19cmV0dXJuIHIucGFkQW5nbGU9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9VGcoMCxlKSxyKTp0fSxyLnNvcnRHcm91cHM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9dCxyKTplfSxyLnNvcnRTdWJncm91cHM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49dCxyKTpufSxyLnNvcnRDaG9yZHM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG51bGw9PXQ/aT1udWxsOihpPUNnKHQpKS5fPXQscik6aSYmaS5ffSxyfSxyaWJib246ZnVuY3Rpb24gYkkoKXt2YXIgdD16ZyxlPURnLG49QmcsaT1IZyxyPUZnLG89bnVsbDtmdW5jdGlvbiBhKCl7dmFyIGEscz1BZy5jYWxsKGFyZ3VtZW50cyksbD10LmFwcGx5KHRoaXMscyksYz1lLmFwcGx5KHRoaXMscyksdT0rbi5hcHBseSh0aGlzLChzWzBdPWwscykpLGg9aS5hcHBseSh0aGlzLHMpLU1nLGQ9ci5hcHBseSh0aGlzLHMpLU1nLHA9dSp4ZyhoKSxmPXUqd2coaCksbT0rbi5hcHBseSh0aGlzLChzWzBdPWMscykpLGc9aS5hcHBseSh0aGlzLHMpLU1nLF89ci5hcHBseSh0aGlzLHMpLU1nO2lmKG98fChvPWE9T2coKSksby5tb3ZlVG8ocCxmKSxvLmFyYygwLDAsdSxoLGQpLGg9PT1nJiZkPT09X3x8KG8ucXVhZHJhdGljQ3VydmVUbygwLDAsbSp4ZyhnKSxtKndnKGcpKSxvLmFyYygwLDAsbSxnLF8pKSxvLnF1YWRyYXRpY0N1cnZlVG8oMCwwLHAsZiksby5jbG9zZVBhdGgoKSxhKXJldHVybiBvPW51bGwsYSsiInx8bnVsbH1yZXR1cm4gYS5yYWRpdXM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDprZygrdCksYSk6bn0sYS5zdGFydEFuZ2xlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6a2coK3QpLGEpOml9LGEuZW5kQW5nbGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDprZygrdCksYSk6cn0sYS5zb3VyY2U9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9ZSxhKTp0fSxhLnRhcmdldD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT10LGEpOmV9LGEuY29udGV4dD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz1udWxsPT10P251bGw6dCxhKTpvfSxhfSxuZXN0OmZ1bmN0aW9uIHhJKCl7dmFyIHQsZSxuLGk9W10scj1bXTtmdW5jdGlvbiBvKG4scixhLHMpe2lmKHI+PWkubGVuZ3RoKXJldHVybiBudWxsIT10JiZuLnNvcnQodCksbnVsbCE9ZT9lKG4pOm47Zm9yKHZhciBsLGMsdSxoPS0xLGQ9bi5sZW5ndGgscD1pW3IrK10sZj1qZygpLG09YSgpOysraDxkOykodT1mLmdldChsPXAoYz1uW2hdKSsiIikpP3UucHVzaChjKTpmLnNldChsLFtjXSk7cmV0dXJuIGYuZWFjaCgoZnVuY3Rpb24odCxlKXtzKG0sZSxvKHQscixhLHMpKX0pKSxtfWZ1bmN0aW9uIGEodCxuKXtpZigrK24+aS5sZW5ndGgpcmV0dXJuIHQ7dmFyIG8scz1yW24tMV07cmV0dXJuIG51bGwhPWUmJm4+PWkubGVuZ3RoP289dC5lbnRyaWVzKCk6KG89W10sdC5lYWNoKChmdW5jdGlvbih0LGUpe28ucHVzaCh7a2V5OmUsdmFsdWVzOmEodCxuKX0pfSkpKSxudWxsIT1zP28uc29ydCgoZnVuY3Rpb24odCxlKXtyZXR1cm4gcyh0LmtleSxlLmtleSl9KSk6b31yZXR1cm4gbj17b2JqZWN0OmZ1bmN0aW9uKHQpe3JldHVybiBvKHQsMCxHZyxXZyl9LG1hcDpmdW5jdGlvbih0KXtyZXR1cm4gbyh0LDAscWcsWWcpfSxlbnRyaWVzOmZ1bmN0aW9uKHQpe3JldHVybiBhKG8odCwwLHFnLFlnKSwwKX0sa2V5OmZ1bmN0aW9uKHQpe3JldHVybiBpLnB1c2godCksbn0sc29ydEtleXM6ZnVuY3Rpb24odCl7cmV0dXJuIHJbaS5sZW5ndGgtMV09dCxufSxzb3J0VmFsdWVzOmZ1bmN0aW9uKGUpe3JldHVybiB0PWUsbn0scm9sbHVwOmZ1bmN0aW9uKHQpe3JldHVybiBlPXQsbn19fSxzZXQ6S2csbWFwOmpnLGtleXM6WmcsdmFsdWVzOmZ1bmN0aW9uIHdJKHQpe3ZhciBlPVtdO2Zvcih2YXIgbiBpbiB0KWUucHVzaCh0W25dKTtyZXR1cm4gZX0sZW50cmllczpmdW5jdGlvbiBTSSh0KXt2YXIgZT1bXTtmb3IodmFyIG4gaW4gdCllLnB1c2goe2tleTpuLHZhbHVlOnRbbl19KTtyZXR1cm4gZX0sY29sb3I6SmgscmdiOm5kLGhzbDpjZCxsYWI6eGQsaGNsOkFkLGxjaDpmdW5jdGlvbiBNSSh0LGUsbixpKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/Q2QodCk6bmV3IGtkKG4sZSx0LG51bGw9PWk/MTppKX0sZ3JheTpmdW5jdGlvbiBFSSh0LGUpe3JldHVybiBuZXcgd2QodCwwLDAsbnVsbD09ZT8xOmUpfSxjdWJlaGVsaXg6RmQsY29udG91cnM6YV8sY29udG91ckRlbnNpdHk6ZnVuY3Rpb24gVEkoKXt2YXIgdD1jXyxlPXVfLG49aF8saT05NjAscj01MDAsbz0yMCxhPTIscz0zKm8sbD1pKzIqcz4+YSxjPXIrMipzPj5hLHU9dF8oMjApO2Z1bmN0aW9uIGgoaSl7dmFyIHI9bmV3IEZsb2F0MzJBcnJheShsKmMpLGg9bmV3IEZsb2F0MzJBcnJheShsKmMpO2kuZm9yRWFjaCgoZnVuY3Rpb24oaSxvLHUpe3ZhciBoPSt0KGksbyx1KStzPj5hLGQ9K2UoaSxvLHUpK3M+PmEscD0rbihpLG8sdSk7aD49MCYmaDxsJiZkPj0wJiZkPGMmJihyW2grZCpsXSs9cCl9KSksc18oe3dpZHRoOmwsaGVpZ2h0OmMsZGF0YTpyfSx7d2lkdGg6bCxoZWlnaHQ6YyxkYXRhOmh9LG8+PmEpLGxfKHt3aWR0aDpsLGhlaWdodDpjLGRhdGE6aH0se3dpZHRoOmwsaGVpZ2h0OmMsZGF0YTpyfSxvPj5hKSxzXyh7d2lkdGg6bCxoZWlnaHQ6YyxkYXRhOnJ9LHt3aWR0aDpsLGhlaWdodDpjLGRhdGE6aH0sbz4+YSksbF8oe3dpZHRoOmwsaGVpZ2h0OmMsZGF0YTpofSx7d2lkdGg6bCxoZWlnaHQ6YyxkYXRhOnJ9LG8+PmEpLHNfKHt3aWR0aDpsLGhlaWdodDpjLGRhdGE6cn0se3dpZHRoOmwsaGVpZ2h0OmMsZGF0YTpofSxvPj5hKSxsXyh7d2lkdGg6bCxoZWlnaHQ6YyxkYXRhOmh9LHt3aWR0aDpsLGhlaWdodDpjLGRhdGE6cn0sbz4+YSk7dmFyIHA9dShyKTtpZighQXJyYXkuaXNBcnJheShwKSl7dmFyIGY9b2Mocik7cD1uYygwLGYscCksKHA9S2woMCxNYXRoLmZsb29yKGYvcCkqcCxwKSkuc2hpZnQoKX1yZXR1cm4gYV8oKS50aHJlc2hvbGRzKHApLnNpemUoW2wsY10pKHIpLm1hcChkKX1mdW5jdGlvbiBkKHQpe3JldHVybiB0LnZhbHVlKj1NYXRoLnBvdygyLC0yKmEpLHQuY29vcmRpbmF0ZXMuZm9yRWFjaChwKSx0fWZ1bmN0aW9uIHAodCl7dC5mb3JFYWNoKGYpfWZ1bmN0aW9uIGYodCl7dC5mb3JFYWNoKG0pfWZ1bmN0aW9uIG0odCl7dFswXT10WzBdKk1hdGgucG93KDIsYSktcyx0WzFdPXRbMV0qTWF0aC5wb3coMixhKS1zfWZ1bmN0aW9uIGcoKXtyZXR1cm4gbD1pKzIqKHM9MypvKT4+YSxjPXIrMipzPj5hLGh9cmV0dXJuIGgueD1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0iZnVuY3Rpb24iPT10eXBlb2YgZT9lOnRfKCtlKSxoKTp0fSxoLnk9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDp0XygrdCksaCk6ZX0saC53ZWlnaHQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDp0XygrdCksaCk6bn0saC5zaXplPWZ1bmN0aW9uKHQpe2lmKCFhcmd1bWVudHMubGVuZ3RoKXJldHVybltpLHJdO3ZhciBlPU1hdGguY2VpbCh0WzBdKSxuPU1hdGguY2VpbCh0WzFdKTtpZighKGU+PTB8fGU+PTApKXRocm93IG5ldyBFcnJvcigiaW52YWxpZCBzaXplIik7cmV0dXJuIGk9ZSxyPW4sZygpfSxoLmNlbGxTaXplPWZ1bmN0aW9uKHQpe2lmKCFhcmd1bWVudHMubGVuZ3RoKXJldHVybiAxPDxhO2lmKCEoKHQ9K3QpPj0xKSl0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgY2VsbCBzaXplIik7cmV0dXJuIGE9TWF0aC5mbG9vcihNYXRoLmxvZyh0KS9NYXRoLkxOMiksZygpfSxoLnRocmVzaG9sZHM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHU9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpBcnJheS5pc0FycmF5KHQpP3RfKEpnLmNhbGwodCkpOnRfKHQpLGgpOnV9LGguYmFuZHdpZHRoPWZ1bmN0aW9uKHQpe2lmKCFhcmd1bWVudHMubGVuZ3RoKXJldHVybiBNYXRoLnNxcnQobyoobysxKSk7aWYoISgodD0rdCk+PTApKXRocm93IG5ldyBFcnJvcigiaW52YWxpZCBiYW5kd2lkdGgiKTtyZXR1cm4gbz1NYXRoLnJvdW5kKChNYXRoLnNxcnQoNCp0KnQrMSktMSkvMiksZygpfSxofSxkaXNwYXRjaDp3YyxkcmFnOkloLGRyYWdEaXNhYmxlOkVoLGRyYWdFbmFibGU6VGgsZHN2Rm9ybWF0OnlfLGNzdlBhcnNlOmJfLGNzdlBhcnNlUm93czp4Xyxjc3ZGb3JtYXQ6d18sY3N2Rm9ybWF0Qm9keTpTXyxjc3ZGb3JtYXRSb3dzOk1fLGNzdkZvcm1hdFJvdzpFXyxjc3ZGb3JtYXRWYWx1ZTpUXyx0c3ZQYXJzZTpBXyx0c3ZQYXJzZVJvd3M6a18sdHN2Rm9ybWF0OkxfLHRzdkZvcm1hdEJvZHk6UF8sdHN2Rm9ybWF0Um93czpOXyx0c3ZGb3JtYXRSb3c6SV8sdHN2Rm9ybWF0VmFsdWU6Ul8sYXV0b1R5cGU6ZnVuY3Rpb24gQ0kodCl7Zm9yKHZhciBlIGluIHQpe3ZhciBuLGkscj10W2VdLnRyaW0oKTtpZihyKWlmKCJ0cnVlIj09PXIpcj0hMDtlbHNlIGlmKCJmYWxzZSI9PT1yKXI9ITE7ZWxzZSBpZigiTmFOIj09PXIpcj1OYU47ZWxzZSBpZihpc05hTihuPStyKSl7aWYoIShpPXIubWF0Y2goL14oWy0rXVxkezJ9KT9cZHs0fSgtXGR7Mn0oLVxkezJ9KT8pPyhUXGR7Mn06XGR7Mn0oOlxkezJ9KFwuXGR7M30pPyk/KFp8Wy0rXVxkezJ9OlxkezJ9KT8pPyQvKSkpY29udGludWU7T18mJmlbNF0mJiFpWzddJiYocj1yLnJlcGxhY2UoLy0vZywiLyIpLnJlcGxhY2UoL1QvLCIgIikpLHI9bmV3IERhdGUocil9ZWxzZSByPW47ZWxzZSByPW51bGw7dFtlXT1yfXJldHVybiB0fSxlYXNlTGluZWFyOkZmLGVhc2VRdWFkOmpmLGVhc2VRdWFkSW46VmYsZWFzZVF1YWRPdXQ6VWYsZWFzZVF1YWRJbk91dDpqZixlYXNlQ3ViaWM6cWYsZWFzZUN1YmljSW46R2YsZWFzZUN1YmljT3V0OldmLGVhc2VDdWJpY0luT3V0OnFmLGVhc2VQb2x5OmZtLGVhc2VQb2x5SW46ZG0sZWFzZVBvbHlPdXQ6cG0sZWFzZVBvbHlJbk91dDpmbSxlYXNlU2luOnZtLGVhc2VTaW5JbjpfbSxlYXNlU2luT3V0OnltLGVhc2VTaW5Jbk91dDp2bSxlYXNlRXhwOlNtLGVhc2VFeHBJbjp4bSxlYXNlRXhwT3V0OndtLGVhc2VFeHBJbk91dDpTbSxlYXNlQ2lyY2xlOlRtLGVhc2VDaXJjbGVJbjpNbSxlYXNlQ2lyY2xlT3V0OkVtLGVhc2VDaXJjbGVJbk91dDpUbSxlYXNlQm91bmNlOkxtLGVhc2VCb3VuY2VJbjprbSxlYXNlQm91bmNlT3V0OkxtLGVhc2VCb3VuY2VJbk91dDpQbSxlYXNlQmFjazpPbSxlYXNlQmFja0luOkltLGVhc2VCYWNrT3V0OlJtLGVhc2VCYWNrSW5PdXQ6T20sZWFzZUVsYXN0aWM6Qm0sZWFzZUVsYXN0aWNJbjpEbSxlYXNlRWxhc3RpY091dDpCbSxlYXNlRWxhc3RpY0luT3V0OkhtLGJsb2I6ZnVuY3Rpb24gQUkodCxlKXtyZXR1cm4gZmV0Y2godCxlKS50aGVuKHpfKX0sYnVmZmVyOmZ1bmN0aW9uIGtJKHQsZSl7cmV0dXJuIGZldGNoKHQsZSkudGhlbihEXyl9LGRzdjpmdW5jdGlvbiBMSSh0LGUsbixpKXszPT09YXJndW1lbnRzLmxlbmd0aCYmImZ1bmN0aW9uIj09dHlwZW9mIG4mJihpPW4sbj12b2lkIDApO3ZhciByPXlfKHQpO3JldHVybiBIXyhlLG4pLnRoZW4oKGZ1bmN0aW9uKHQpe3JldHVybiByLnBhcnNlKHQsaSl9KSl9LGNzdjpWXyx0c3Y6VV8saW1hZ2U6ZnVuY3Rpb24gUEkodCxlKXtyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKG4saSl7dmFyIHI9bmV3IEltYWdlO2Zvcih2YXIgbyBpbiBlKXJbb109ZVtvXTtyLm9uZXJyb3I9aSxyLm9ubG9hZD1mdW5jdGlvbigpe24ocil9LHIuc3JjPXR9KSl9LGpzb246ZnVuY3Rpb24gTkkodCxlKXtyZXR1cm4gZmV0Y2godCxlKS50aGVuKGpfKX0sdGV4dDpIXyx4bWw6V18saHRtbDpxXyxzdmc6WV8sZm9yY2VDZW50ZXI6ZnVuY3Rpb24gSUkodCxlKXt2YXIgbjtmdW5jdGlvbiBpKCl7dmFyIGkscixvPW4ubGVuZ3RoLGE9MCxzPTA7Zm9yKGk9MDtpPG87KytpKWErPShyPW5baV0pLngscys9ci55O2ZvcihhPWEvby10LHM9cy9vLWUsaT0wO2k8bzsrK2kpKHI9bltpXSkueC09YSxyLnktPXN9cmV0dXJuIG51bGw9PXQmJih0PTApLG51bGw9PWUmJihlPTApLGkuaW5pdGlhbGl6ZT1mdW5jdGlvbih0KXtuPXR9LGkueD1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0rZSxpKTp0fSxpLnk9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9K3QsaSk6ZX0saX0sZm9yY2VDb2xsaWRlOmZ1bmN0aW9uIFJJKHQpe3ZhciBlLG4saT0xLHI9MTtmdW5jdGlvbiBvKCl7Zm9yKHZhciB0LG8scyxsLGMsdSxoLGQ9ZS5sZW5ndGgscD0wO3A8cjsrK3ApZm9yKG89dHkoZSxyeSxveSkudmlzaXRBZnRlcihhKSx0PTA7dDxkOysrdCloPSh1PW5bKHM9ZVt0XSkuaW5kZXhdKSp1LGw9cy54K3MudngsYz1zLnkrcy52eSxvLnZpc2l0KGYpO2Z1bmN0aW9uIGYodCxlLG4scixvKXt2YXIgYT10LmRhdGEsZD10LnIscD11K2Q7aWYoIWEpcmV0dXJuIGU+bCtwfHxyPGwtcHx8bj5jK3B8fG88Yy1wO2lmKGEuaW5kZXg+cy5pbmRleCl7dmFyIGY9bC1hLngtYS52eCxtPWMtYS55LWEudnksZz1mKmYrbSptO2c8cCpwJiYoMD09PWYmJihnKz0oZj0kXygpKSpmKSwwPT09bSYmKGcrPShtPSRfKCkpKm0pLGc9KHAtKGc9TWF0aC5zcXJ0KGcpKSkvZyppLHMudngrPShmKj1nKSoocD0oZCo9ZCkvKGgrZCkpLHMudnkrPShtKj1nKSpwLGEudngtPWYqKHA9MS1wKSxhLnZ5LT1tKnApfX19ZnVuY3Rpb24gYSh0KXtpZih0LmRhdGEpcmV0dXJuIHQucj1uW3QuZGF0YS5pbmRleF07Zm9yKHZhciBlPXQucj0wO2U8NDsrK2UpdFtlXSYmdFtlXS5yPnQuciYmKHQucj10W2VdLnIpfWZ1bmN0aW9uIHMoKXtpZihlKXt2YXIgaSxyLG89ZS5sZW5ndGg7Zm9yKG49bmV3IEFycmF5KG8pLGk9MDtpPG87KytpKW5bKHI9ZVtpXSkuaW5kZXhdPSt0KHIsaSxlKX19cmV0dXJuImZ1bmN0aW9uIiE9dHlwZW9mIHQmJih0PVhfKG51bGw9PXQ/MTordCkpLG8uaW5pdGlhbGl6ZT1mdW5jdGlvbih0KXtlPXQscygpfSxvLml0ZXJhdGlvbnM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9K3Qsbyk6cn0sby5zdHJlbmd0aD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0rdCxvKTppfSxvLnJhZGl1cz1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0iZnVuY3Rpb24iPT10eXBlb2YgZT9lOlhfKCtlKSxzKCksbyk6dH0sb30sZm9yY2VMaW5rOmZ1bmN0aW9uIE9JKHQpe3ZhciBlLG4saSxyLG8sYT1heSxzPWZ1bmN0aW9uIGwodCl7cmV0dXJuIDEvTWF0aC5taW4oclt0LnNvdXJjZS5pbmRleF0sclt0LnRhcmdldC5pbmRleF0pfSxjPVhfKDMwKSx1PTE7ZnVuY3Rpb24gaChpKXtmb3IodmFyIHI9MCxhPXQubGVuZ3RoO3I8dTsrK3IpZm9yKHZhciBzLGwsYyxoLGQscCxmLG09MDttPGE7KyttKWg9KGM9KHM9dFttXSkudGFyZ2V0KS54K2MudngtKGw9cy5zb3VyY2UpLngtbC52eHx8JF8oKSxkPWMueStjLnZ5LWwueS1sLnZ5fHwkXygpLGQqPXA9KChwPU1hdGguc3FydChoKmgrZCpkKSktblttXSkvcCppKmVbbV0sYy52eC09KGgqPXApKihmPW9bbV0pLGMudnktPWQqZixsLnZ4Kz1oKihmPTEtZiksbC52eSs9ZCpmfWZ1bmN0aW9uIGQoKXtpZihpKXt2YXIgcyxsLGM9aS5sZW5ndGgsdT10Lmxlbmd0aCxoPWpnKGksYSk7Zm9yKHM9MCxyPW5ldyBBcnJheShjKTtzPHU7KytzKShsPXRbc10pLmluZGV4PXMsIm9iamVjdCIhPXR5cGVvZiBsLnNvdXJjZSYmKGwuc291cmNlPXN5KGgsbC5zb3VyY2UpKSwib2JqZWN0IiE9dHlwZW9mIGwudGFyZ2V0JiYobC50YXJnZXQ9c3koaCxsLnRhcmdldCkpLHJbbC5zb3VyY2UuaW5kZXhdPShyW2wuc291cmNlLmluZGV4XXx8MCkrMSxyW2wudGFyZ2V0LmluZGV4XT0ocltsLnRhcmdldC5pbmRleF18fDApKzE7Zm9yKHM9MCxvPW5ldyBBcnJheSh1KTtzPHU7KytzKW9bc109clsobD10W3NdKS5zb3VyY2UuaW5kZXhdLyhyW2wuc291cmNlLmluZGV4XStyW2wudGFyZ2V0LmluZGV4XSk7ZT1uZXcgQXJyYXkodSkscCgpLG49bmV3IEFycmF5KHUpLGYoKX19ZnVuY3Rpb24gcCgpe2lmKGkpZm9yKHZhciBuPTAscj10Lmxlbmd0aDtuPHI7KytuKWVbbl09K3ModFtuXSxuLHQpfWZ1bmN0aW9uIGYoKXtpZihpKWZvcih2YXIgZT0wLHI9dC5sZW5ndGg7ZTxyOysrZSluW2VdPStjKHRbZV0sZSx0KX1yZXR1cm4gbnVsbD09dCYmKHQ9W10pLGguaW5pdGlhbGl6ZT1mdW5jdGlvbih0KXtpPXQsZCgpfSxoLmxpbmtzPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PWUsZCgpLGgpOnR9LGguaWQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9dCxoKTphfSxoLml0ZXJhdGlvbnM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHU9K3QsaCk6dX0saC5zdHJlbmd0aD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocz0iZnVuY3Rpb24iPT10eXBlb2YgdD90OlhfKCt0KSxwKCksaCk6c30saC5kaXN0YW5jZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYz0iZnVuY3Rpb24iPT10eXBlb2YgdD90OlhfKCt0KSxmKCksaCk6Y30saH0sZm9yY2VNYW55Qm9keTpmdW5jdGlvbiB6SSgpe3ZhciB0LGUsbixpLHI9WF8oLTMwKSxvPTEsYT0xLzAscz0uODE7ZnVuY3Rpb24gbChpKXt2YXIgcixvPXQubGVuZ3RoLGE9dHkodCxseSxjeSkudmlzaXRBZnRlcih1KTtmb3Iobj1pLHI9MDtyPG87KytyKWU9dFtyXSxhLnZpc2l0KGgpfWZ1bmN0aW9uIGMoKXtpZih0KXt2YXIgZSxuLG89dC5sZW5ndGg7Zm9yKGk9bmV3IEFycmF5KG8pLGU9MDtlPG87KytlKWlbKG49dFtlXSkuaW5kZXhdPStyKG4sZSx0KX19ZnVuY3Rpb24gdSh0KXt2YXIgZSxuLHIsbyxhLHM9MCxsPTA7aWYodC5sZW5ndGgpe2ZvcihyPW89YT0wO2E8NDsrK2EpKGU9dFthXSkmJihuPU1hdGguYWJzKGUudmFsdWUpKSYmKHMrPWUudmFsdWUsbCs9bixyKz1uKmUueCxvKz1uKmUueSk7dC54PXIvbCx0Lnk9by9sfWVsc2V7KGU9dCkueD1lLmRhdGEueCxlLnk9ZS5kYXRhLnk7ZG97cys9aVtlLmRhdGEuaW5kZXhdfXdoaWxlKGU9ZS5uZXh0KX10LnZhbHVlPXN9ZnVuY3Rpb24gaCh0LHIsbCxjKXtpZighdC52YWx1ZSlyZXR1cm4hMDt2YXIgdT10LngtZS54LGg9dC55LWUueSxkPWMtcixwPXUqdStoKmg7aWYoZCpkL3M8cClyZXR1cm4gcDxhJiYoMD09PXUmJihwKz0odT0kXygpKSp1KSwwPT09aCYmKHArPShoPSRfKCkpKmgpLHA8byYmKHA9TWF0aC5zcXJ0KG8qcCkpLGUudngrPXUqdC52YWx1ZSpuL3AsZS52eSs9aCp0LnZhbHVlKm4vcCksITA7aWYoISh0Lmxlbmd0aHx8cD49YSkpeyh0LmRhdGEhPT1lfHx0Lm5leHQpJiYoMD09PXUmJihwKz0odT0kXygpKSp1KSwwPT09aCYmKHArPShoPSRfKCkpKmgpLHA8byYmKHA9TWF0aC5zcXJ0KG8qcCkpKTtkb3t0LmRhdGEhPT1lJiYoZS52eCs9dSooZD1pW3QuZGF0YS5pbmRleF0qbi9wKSxlLnZ5Kz1oKmQpfXdoaWxlKHQ9dC5uZXh0KX19cmV0dXJuIGwuaW5pdGlhbGl6ZT1mdW5jdGlvbihlKXt0PWUsYygpfSxsLnN0cmVuZ3RoPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6WF8oK3QpLGMoKSxsKTpyfSxsLmRpc3RhbmNlTWluPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPXQqdCxsKTpNYXRoLnNxcnQobyl9LGwuZGlzdGFuY2VNYXg9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9dCp0LGwpOk1hdGguc3FydChhKX0sbC50aGV0YT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocz10KnQsbCk6TWF0aC5zcXJ0KHMpfSxsfSxmb3JjZVJhZGlhbDpmdW5jdGlvbiBESSh0LGUsbil7dmFyIGkscixvLGE9WF8oLjEpO2Z1bmN0aW9uIHModCl7Zm9yKHZhciBhPTAscz1pLmxlbmd0aDthPHM7KythKXt2YXIgbD1pW2FdLGM9bC54LWV8fDFlLTYsdT1sLnktbnx8MWUtNixoPU1hdGguc3FydChjKmMrdSp1KSxkPShvW2FdLWgpKnJbYV0qdC9oO2wudngrPWMqZCxsLnZ5Kz11KmR9fWZ1bmN0aW9uIGwoKXtpZihpKXt2YXIgZSxuPWkubGVuZ3RoO2ZvcihyPW5ldyBBcnJheShuKSxvPW5ldyBBcnJheShuKSxlPTA7ZTxuOysrZSlvW2VdPSt0KGlbZV0sZSxpKSxyW2VdPWlzTmFOKG9bZV0pPzA6K2EoaVtlXSxlLGkpfX1yZXR1cm4iZnVuY3Rpb24iIT10eXBlb2YgdCYmKHQ9WF8oK3QpKSxudWxsPT1lJiYoZT0wKSxudWxsPT1uJiYobj0wKSxzLmluaXRpYWxpemU9ZnVuY3Rpb24odCl7aT10LGwoKX0scy5zdHJlbmd0aD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT0iZnVuY3Rpb24iPT10eXBlb2YgdD90OlhfKCt0KSxsKCkscyk6YX0scy5yYWRpdXM9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZTpYXygrZSksbCgpLHMpOnR9LHMueD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT0rdCxzKTplfSxzLnk9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49K3Qscyk6bn0sc30sZm9yY2VTaW11bGF0aW9uOmZ1bmN0aW9uIEJJKHQpe3ZhciBlLG49MSxpPS4wMDEscj0xLU1hdGgucG93KGksMS8zMDApLG89MCxhPS42LHM9amcoKSxsPSRwKHUpLGM9d2MoInRpY2siLCJlbmQiKTtmdW5jdGlvbiB1KCl7aCgpLGMuY2FsbCgidGljayIsZSksbjxpJiYobC5zdG9wKCksYy5jYWxsKCJlbmQiLGUpKX1mdW5jdGlvbiBoKGkpe3ZhciBsLGMsdT10Lmxlbmd0aDt2b2lkIDA9PT1pJiYoaT0xKTtmb3IodmFyIGg9MDtoPGk7KytoKWZvcihuKz0oby1uKSpyLHMuZWFjaCgoZnVuY3Rpb24odCl7dChuKX0pKSxsPTA7bDx1OysrbCludWxsPT0oYz10W2xdKS5meD9jLngrPWMudngqPWE6KGMueD1jLmZ4LGMudng9MCksbnVsbD09Yy5meT9jLnkrPWMudnkqPWE6KGMueT1jLmZ5LGMudnk9MCk7cmV0dXJuIGV9ZnVuY3Rpb24gZCgpe2Zvcih2YXIgZSxuPTAsaT10Lmxlbmd0aDtuPGk7KytuKXtpZigoZT10W25dKS5pbmRleD1uLG51bGwhPWUuZngmJihlLng9ZS5meCksbnVsbCE9ZS5meSYmKGUueT1lLmZ5KSxpc05hTihlLngpfHxpc05hTihlLnkpKXt2YXIgcj0xMCpNYXRoLnNxcnQobiksbz1uKk15O2UueD1yKk1hdGguY29zKG8pLGUueT1yKk1hdGguc2luKG8pfShpc05hTihlLnZ4KXx8aXNOYU4oZS52eSkpJiYoZS52eD1lLnZ5PTApfX1mdW5jdGlvbiBwKGUpe3JldHVybiBlLmluaXRpYWxpemUmJmUuaW5pdGlhbGl6ZSh0KSxlfXJldHVybiBudWxsPT10JiYodD1bXSksZCgpLGU9e3RpY2s6aCxyZXN0YXJ0OmZ1bmN0aW9uKCl7cmV0dXJuIGwucmVzdGFydCh1KSxlfSxzdG9wOmZ1bmN0aW9uKCl7cmV0dXJuIGwuc3RvcCgpLGV9LG5vZGVzOmZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PW4sZCgpLHMuZWFjaChwKSxlKTp0fSxhbHBoYTpmdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj0rdCxlKTpufSxhbHBoYU1pbjpmdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0rdCxlKTppfSxhbHBoYURlY2F5OmZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPSt0LGUpOityfSxhbHBoYVRhcmdldDpmdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz0rdCxlKTpvfSx2ZWxvY2l0eURlY2F5OmZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPTEtdCxlKToxLWF9LGZvcmNlOmZ1bmN0aW9uKHQsbil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg+MT8obnVsbD09bj9zLnJlbW92ZSh0KTpzLnNldCh0LHAobikpLGUpOnMuZ2V0KHQpfSxmaW5kOmZ1bmN0aW9uKGUsbixpKXt2YXIgcixvLGEscyxsLGM9MCx1PXQubGVuZ3RoO2ZvcihudWxsPT1pP2k9MS8wOmkqPWksYz0wO2M8dTsrK2MpKGE9KHI9ZS0ocz10W2NdKS54KSpyKyhvPW4tcy55KSpvKTxpJiYobD1zLGk9YSk7cmV0dXJuIGx9LG9uOmZ1bmN0aW9uKHQsbil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg+MT8oYy5vbih0LG4pLGUpOmMub24odCl9fX0sZm9yY2VYOmZ1bmN0aW9uIEhJKHQpe3ZhciBlLG4saSxyPVhfKC4xKTtmdW5jdGlvbiBvKHQpe2Zvcih2YXIgcixvPTAsYT1lLmxlbmd0aDtvPGE7KytvKShyPWVbb10pLnZ4Kz0oaVtvXS1yLngpKm5bb10qdH1mdW5jdGlvbiBhKCl7aWYoZSl7dmFyIG8sYT1lLmxlbmd0aDtmb3Iobj1uZXcgQXJyYXkoYSksaT1uZXcgQXJyYXkoYSksbz0wO288YTsrK28pbltvXT1pc05hTihpW29dPSt0KGVbb10sbyxlKSk/MDorcihlW29dLG8sZSl9fXJldHVybiJmdW5jdGlvbiIhPXR5cGVvZiB0JiYodD1YXyhudWxsPT10PzA6K3QpKSxvLmluaXRpYWxpemU9ZnVuY3Rpb24odCl7ZT10LGEoKX0sby5zdHJlbmd0aD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj0iZnVuY3Rpb24iPT10eXBlb2YgdD90OlhfKCt0KSxhKCksbyk6cn0sby54PWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PSJmdW5jdGlvbiI9PXR5cGVvZiBlP2U6WF8oK2UpLGEoKSxvKTp0fSxvfSxmb3JjZVk6ZnVuY3Rpb24gRkkodCl7dmFyIGUsbixpLHI9WF8oLjEpO2Z1bmN0aW9uIG8odCl7Zm9yKHZhciByLG89MCxhPWUubGVuZ3RoO288YTsrK28pKHI9ZVtvXSkudnkrPShpW29dLXIueSkqbltvXSp0fWZ1bmN0aW9uIGEoKXtpZihlKXt2YXIgbyxhPWUubGVuZ3RoO2ZvcihuPW5ldyBBcnJheShhKSxpPW5ldyBBcnJheShhKSxvPTA7bzxhOysrbyluW29dPWlzTmFOKGlbb109K3QoZVtvXSxvLGUpKT8wOityKGVbb10sbyxlKX19cmV0dXJuImZ1bmN0aW9uIiE9dHlwZW9mIHQmJih0PVhfKG51bGw9PXQ/MDordCkpLG8uaW5pdGlhbGl6ZT1mdW5jdGlvbih0KXtlPXQsYSgpfSxvLnN0cmVuZ3RoPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6WF8oK3QpLGEoKSxvKTpyfSxvLnk9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZTpYXygrZSksYSgpLG8pOnR9LG99LGZvcm1hdERlZmF1bHRMb2NhbGU6VXksZ2V0IGZvcm1hdCgpe3JldHVybiBEeX0sZ2V0IGZvcm1hdFByZWZpeCgpe3JldHVybiBCeX0sZm9ybWF0TG9jYWxlOlZ5LGZvcm1hdFNwZWNpZmllcjpreSxGb3JtYXRTcGVjaWZpZXI6THkscHJlY2lzaW9uRml4ZWQ6ankscHJlY2lzaW9uUHJlZml4Okd5LHByZWNpc2lvblJvdW5kOld5LGdlb0FyZWE6ZnVuY3Rpb24gVkkodCl7cmV0dXJuIE52LnJlc2V0KCksRXYodCxJdiksMipOdn0sZ2VvQm91bmRzOmZ1bmN0aW9uIFVJKHQpe3ZhciBlLG4saSxyLG8sYSxzO2lmKFh2PVl2PS0oV3Y9cXY9MS8wKSxRdj1bXSxFdih0LHliKSxuPVF2Lmxlbmd0aCl7Zm9yKFF2LnNvcnQoQ2IpLGU9MSxvPVtpPVF2WzBdXTtlPG47KytlKUFiKGksKHI9UXZbZV0pWzBdKXx8QWIoaSxyWzFdKT8oVGIoaVswXSxyWzFdKT5UYihpWzBdLGlbMV0pJiYoaVsxXT1yWzFdKSxUYihyWzBdLGlbMV0pPlRiKGlbMF0saVsxXSkmJihpWzBdPXJbMF0pKTpvLnB1c2goaT1yKTtmb3IoYT0tMS8wLGU9MCxpPW9bbj1vLmxlbmd0aC0xXTtlPD1uO2k9ciwrK2UpKHM9VGIoaVsxXSwocj1vW2VdKVswXSkpPmEmJihhPXMsV3Y9clswXSxZdj1pWzFdKX1yZXR1cm4gUXY9dGI9bnVsbCxXdj09PTEvMHx8cXY9PT0xLzA/W1tOYU4sTmFOXSxbTmFOLE5hTl1dOltbV3YscXZdLFtZdixYdl1dfSxnZW9DZW50cm9pZDpmdW5jdGlvbiBqSSh0KXtlYj1uYj1pYj1yYj1vYj1hYj1zYj1sYj1jYj11Yj1oYj0wLEV2KHQsa2IpO3ZhciBlPWNiLG49dWIsaT1oYixyPWUqZStuKm4raSppO3JldHVybiByPFp5JiYoZT1hYixuPXNiLGk9bGIsbmI8S3kmJihlPWliLG49cmIsaT1vYiksKHI9ZSplK24qbitpKmkpPFp5KT9bTmFOLE5hTl06W2F2KG4sZSkqbnYsX3YoaS9mdihyKSkqbnZdfSxnZW9DaXJjbGU6ZnVuY3Rpb24gR0koKXt2YXIgdCxlLG49RmIoWzAsMF0pLGk9RmIoOTApLHI9RmIoNiksbz17cG9pbnQ6ZnVuY3Rpb24gYShuLGkpe3QucHVzaChuPWUobixpKSksblswXSo9bnYsblsxXSo9bnZ9fTtmdW5jdGlvbiBzKCl7dmFyIGE9bi5hcHBseSh0aGlzLGFyZ3VtZW50cykscz1pLmFwcGx5KHRoaXMsYXJndW1lbnRzKSppdixsPXIuYXBwbHkodGhpcyxhcmd1bWVudHMpKml2O3JldHVybiB0PVtdLGU9amIoLWFbMF0qaXYsLWFbMV0qaXYsMCkuaW52ZXJ0LFhiKG8scyxsLDEpLGE9e3R5cGU6IlBvbHlnb24iLGNvb3JkaW5hdGVzOlt0XX0sdD1lPW51bGwsYX1yZXR1cm4gcy5jZW50ZXI9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpGYihbK3RbMF0sK3RbMV1dKSxzKTpufSxzLnJhZGl1cz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0iZnVuY3Rpb24iPT10eXBlb2YgdD90OkZiKCt0KSxzKTppfSxzLnByZWNpc2lvbj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj0iZnVuY3Rpb24iPT10eXBlb2YgdD90OkZiKCt0KSxzKTpyfSxzfSxnZW9DbGlwQW50aW1lcmlkaWFuOnN4LGdlb0NsaXBDaXJjbGU6dXgsZ2VvQ2xpcEV4dGVudDpmdW5jdGlvbiBXSSgpe3ZhciB0LGUsbixpPTAscj0wLG89OTYwLGE9NTAwO3JldHVybiBuPXtzdHJlYW06ZnVuY3Rpb24obil7cmV0dXJuIHQmJmU9PT1uP3Q6dD1weChpLHIsbyxhKShlPW4pfSxleHRlbnQ6ZnVuY3Rpb24ocyl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9K3NbMF1bMF0scj0rc1swXVsxXSxvPStzWzFdWzBdLGE9K3NbMV1bMV0sdD1lPW51bGwsbik6W1tpLHJdLFtvLGFdXX19fSxnZW9DbGlwUmVjdGFuZ2xlOnB4LGdlb0NvbnRhaW5zOmZ1bmN0aW9uIHFJKHQsZSl7cmV0dXJuKHQmJkN4Lmhhc093blByb3BlcnR5KHQudHlwZSk/Q3hbdC50eXBlXTpreCkodCxlKX0sZ2VvRGlzdGFuY2U6VHgsZ2VvR3JhdGljdWxlOkR4LGdlb0dyYXRpY3VsZTEwOmZ1bmN0aW9uIFlJKCl7cmV0dXJuIER4KCkoKX0sZ2VvSW50ZXJwb2xhdGU6ZnVuY3Rpb24gWEkodCxlKXt2YXIgbj10WzBdKml2LGk9dFsxXSppdixyPWVbMF0qaXYsbz1lWzFdKml2LGE9c3YoaSkscz1kdihpKSxsPXN2KG8pLGM9ZHYobyksdT1hKnN2KG4pLGg9YSpkdihuKSxkPWwqc3YocikscD1sKmR2KHIpLGY9Mipfdihmdih5dihvLWkpK2EqbCp5dihyLW4pKSksbT1kdihmKSxnPWY/ZnVuY3Rpb24odCl7dmFyIGU9ZHYodCo9ZikvbSxuPWR2KGYtdCkvbSxpPW4qdStlKmQscj1uKmgrZSpwLG89bipzK2UqYztyZXR1cm5bYXYocixpKSpudixhdihvLGZ2KGkqaStyKnIpKSpudl19OmZ1bmN0aW9uKCl7cmV0dXJuW24qbnYsaSpudl19O3JldHVybiBnLmRpc3RhbmNlPWYsZ30sZ2VvTGVuZ3RoOlN4LGdlb1BhdGg6ZnVuY3Rpb24gJEkodCxlKXt2YXIgbixpLHI9NC41O2Z1bmN0aW9uIG8odCl7cmV0dXJuIHQmJigiZnVuY3Rpb24iPT10eXBlb2YgciYmaS5wb2ludFJhZGl1cygrci5hcHBseSh0aGlzLGFyZ3VtZW50cykpLEV2KHQsbihpKSkpLGkucmVzdWx0KCl9cmV0dXJuIG8uYXJlYT1mdW5jdGlvbih0KXtyZXR1cm4gRXYodCxuKEt4KSksS3gucmVzdWx0KCl9LG8ubWVhc3VyZT1mdW5jdGlvbih0KXtyZXR1cm4gRXYodCxuKER3KSksRHcucmVzdWx0KCl9LG8uYm91bmRzPWZ1bmN0aW9uKHQpe3JldHVybiBFdih0LG4ob3cpKSxvdy5yZXN1bHQoKX0sby5jZW50cm9pZD1mdW5jdGlvbih0KXtyZXR1cm4gRXYodCxuKFR3KSksVHcucmVzdWx0KCl9LG8ucHJvamVjdGlvbj1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj1udWxsPT1lPyh0PW51bGwsQngpOih0PWUpLnN0cmVhbSxvKTp0fSxvLmNvbnRleHQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9bnVsbD09dD8oZT1udWxsLG5ldyBCdyk6bmV3IEN3KGU9dCksImZ1bmN0aW9uIiE9dHlwZW9mIHImJmkucG9pbnRSYWRpdXMociksbyk6ZX0sby5wb2ludFJhZGl1cz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj0iZnVuY3Rpb24iPT10eXBlb2YgdD90OihpLnBvaW50UmFkaXVzKCt0KSwrdCksbyk6cn0sby5wcm9qZWN0aW9uKHQpLmNvbnRleHQoZSl9LGdlb0FsYmVyczppUyxnZW9BbGJlcnNVc2E6ZnVuY3Rpb24gS0koKXt2YXIgdCxlLG4saSxyLG8sYT1pUygpLHM9blMoKS5yb3RhdGUoWzE1NCwwXSkuY2VudGVyKFstMiw1OC41XSkucGFyYWxsZWxzKFs1NSw2NV0pLGw9blMoKS5yb3RhdGUoWzE1NywwXSkuY2VudGVyKFstMywxOS45XSkucGFyYWxsZWxzKFs4LDE4XSksYz17cG9pbnQ6ZnVuY3Rpb24odCxlKXtvPVt0LGVdfX07ZnVuY3Rpb24gdSh0KXt2YXIgZT10WzBdLGE9dFsxXTtyZXR1cm4gbz1udWxsLG4ucG9pbnQoZSxhKSxvfHwoaS5wb2ludChlLGEpLG8pfHwoci5wb2ludChlLGEpLG8pfWZ1bmN0aW9uIGgoKXtyZXR1cm4gdD1lPW51bGwsdX1yZXR1cm4gdS5pbnZlcnQ9ZnVuY3Rpb24odCl7dmFyIGU9YS5zY2FsZSgpLG49YS50cmFuc2xhdGUoKSxpPSh0WzBdLW5bMF0pL2Uscj0odFsxXS1uWzFdKS9lO3JldHVybihyPj0uMTImJnI8LjIzNCYmaT49LS40MjUmJmk8LS4yMTQ/czpyPj0uMTY2JiZyPC4yMzQmJmk+PS0uMjE0JiZpPC0uMTE1P2w6YSkuaW52ZXJ0KHQpfSx1LnN0cmVhbT1mdW5jdGlvbihuKXtyZXR1cm4gdCYmZT09PW4/dDp0PShmdW5jdGlvbiBpKHQpe3ZhciBlPXQubGVuZ3RoO3JldHVybntwb2ludDpmdW5jdGlvbihuLGkpe2Zvcih2YXIgcj0tMTsrK3I8ZTspdFtyXS5wb2ludChuLGkpfSxzcGhlcmU6ZnVuY3Rpb24oKXtmb3IodmFyIG49LTE7KytuPGU7KXRbbl0uc3BoZXJlKCl9LGxpbmVTdGFydDpmdW5jdGlvbigpe2Zvcih2YXIgbj0tMTsrK248ZTspdFtuXS5saW5lU3RhcnQoKX0sbGluZUVuZDpmdW5jdGlvbigpe2Zvcih2YXIgbj0tMTsrK248ZTspdFtuXS5saW5lRW5kKCl9LHBvbHlnb25TdGFydDpmdW5jdGlvbigpe2Zvcih2YXIgbj0tMTsrK248ZTspdFtuXS5wb2x5Z29uU3RhcnQoKX0scG9seWdvbkVuZDpmdW5jdGlvbigpe2Zvcih2YXIgbj0tMTsrK248ZTspdFtuXS5wb2x5Z29uRW5kKCl9fX0pKFthLnN0cmVhbShlPW4pLHMuc3RyZWFtKG4pLGwuc3RyZWFtKG4pXSl9LHUucHJlY2lzaW9uPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhLnByZWNpc2lvbih0KSxzLnByZWNpc2lvbih0KSxsLnByZWNpc2lvbih0KSxoKCkpOmEucHJlY2lzaW9uKCl9LHUuc2NhbGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGEuc2NhbGUodCkscy5zY2FsZSguMzUqdCksbC5zY2FsZSh0KSx1LnRyYW5zbGF0ZShhLnRyYW5zbGF0ZSgpKSk6YS5zY2FsZSgpfSx1LnRyYW5zbGF0ZT1mdW5jdGlvbih0KXtpZighYXJndW1lbnRzLmxlbmd0aClyZXR1cm4gYS50cmFuc2xhdGUoKTt2YXIgZT1hLnNjYWxlKCksbz0rdFswXSx1PSt0WzFdO3JldHVybiBuPWEudHJhbnNsYXRlKHQpLmNsaXBFeHRlbnQoW1tvLS40NTUqZSx1LS4yMzgqZV0sW28rLjQ1NSplLHUrLjIzOCplXV0pLnN0cmVhbShjKSxpPXMudHJhbnNsYXRlKFtvLS4zMDcqZSx1Ky4yMDEqZV0pLmNsaXBFeHRlbnQoW1tvLS40MjUqZStLeSx1Ky4xMiplK0t5XSxbby0uMjE0KmUtS3ksdSsuMjM0KmUtS3ldXSkuc3RyZWFtKGMpLHI9bC50cmFuc2xhdGUoW28tLjIwNSplLHUrLjIxMiplXSkuY2xpcEV4dGVudChbW28tLjIxNCplK0t5LHUrLjE2NiplK0t5XSxbby0uMTE1KmUtS3ksdSsuMjM0KmUtS3ldXSkuc3RyZWFtKGMpLGgoKX0sdS5maXRFeHRlbnQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gancodSx0LGUpfSx1LmZpdFNpemU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gR3codSx0LGUpfSx1LmZpdFdpZHRoPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIFd3KHUsdCxlKX0sdS5maXRIZWlnaHQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gcXcodSx0LGUpfSx1LnNjYWxlKDEwNzApfSxnZW9BemltdXRoYWxFcXVhbEFyZWE6ZnVuY3Rpb24gWkkoKXtyZXR1cm4gSncoYVMpLnNjYWxlKDEyNC43NSkuY2xpcEFuZ2xlKDE3OS45OTkpfSxnZW9BemltdXRoYWxFcXVhbEFyZWFSYXc6YVMsZ2VvQXppbXV0aGFsRXF1aWRpc3RhbnQ6ZnVuY3Rpb24gSkkoKXtyZXR1cm4gSncoc1MpLnNjYWxlKDc5LjQxODgpLmNsaXBBbmdsZSgxNzkuOTk5KX0sZ2VvQXppbXV0aGFsRXF1aWRpc3RhbnRSYXc6c1MsZ2VvQ29uaWNDb25mb3JtYWw6ZnVuY3Rpb24gUUkoKXtyZXR1cm4gdFMoaFMpLnNjYWxlKDEwOS41KS5wYXJhbGxlbHMoWzMwLDMwXSl9LGdlb0NvbmljQ29uZm9ybWFsUmF3OmhTLGdlb0NvbmljRXF1YWxBcmVhOm5TLGdlb0NvbmljRXF1YWxBcmVhUmF3OmVTLGdlb0NvbmljRXF1aWRpc3RhbnQ6ZnVuY3Rpb24gdFIoKXtyZXR1cm4gdFMocFMpLnNjYWxlKDEzMS4xNTQpLmNlbnRlcihbMCwxMy45Mzg5XSl9LGdlb0NvbmljRXF1aWRpc3RhbnRSYXc6cFMsZ2VvRXF1YWxFYXJ0aDpmdW5jdGlvbiBlUigpe3JldHVybiBKdyh2Uykuc2NhbGUoMTc3LjE1OCl9LGdlb0VxdWFsRWFydGhSYXc6dlMsZ2VvRXF1aXJlY3Rhbmd1bGFyOmZ1bmN0aW9uIG5SKCl7cmV0dXJuIEp3KGRTKS5zY2FsZSgxNTIuNjMpfSxnZW9FcXVpcmVjdGFuZ3VsYXJSYXc6ZFMsZ2VvR25vbW9uaWM6ZnVuY3Rpb24gaVIoKXtyZXR1cm4gSncoYlMpLnNjYWxlKDE0NC4wNDkpLmNsaXBBbmdsZSg2MCl9LGdlb0dub21vbmljUmF3OmJTLGdlb0lkZW50aXR5OmZ1bmN0aW9uIHJSKCl7dmFyIHQsZSxuLGkscixvLGEscz0xLGw9MCxjPTAsdT0xLGg9MSxkPTAscD1udWxsLGY9MSxtPTEsZz1Gdyh7cG9pbnQ6ZnVuY3Rpb24odCxlKXt2YXIgbj12KFt0LGVdKTt0aGlzLnN0cmVhbS5wb2ludChuWzBdLG5bMV0pfX0pLF89Qng7ZnVuY3Rpb24geSgpe3JldHVybiBmPXMqdSxtPXMqaCxvPWE9bnVsbCx2fWZ1bmN0aW9uIHYobil7dmFyIGk9blswXSpmLHI9blsxXSptO2lmKGQpe3ZhciBvPXIqdC1pKmU7aT1pKnQrciplLHI9b31yZXR1cm5baStsLHIrY119cmV0dXJuIHYuaW52ZXJ0PWZ1bmN0aW9uKG4pe3ZhciBpPW5bMF0tbCxyPW5bMV0tYztpZihkKXt2YXIgbz1yKnQraSplO2k9aSp0LXIqZSxyPW99cmV0dXJuW2kvZixyL21dfSx2LnN0cmVhbT1mdW5jdGlvbih0KXtyZXR1cm4gbyYmYT09PXQ/bzpvPWcoXyhhPXQpKX0sdi5wb3N0Y2xpcD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oXz10LHA9bj1pPXI9bnVsbCx5KCkpOl99LHYuY2xpcEV4dGVudD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oXz1udWxsPT10PyhwPW49aT1yPW51bGwsQngpOnB4KHA9K3RbMF1bMF0sbj0rdFswXVsxXSxpPSt0WzFdWzBdLHI9K3RbMV1bMV0pLHkoKSk6bnVsbD09cD9udWxsOltbcCxuXSxbaSxyXV19LHYuc2NhbGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9K3QseSgpKTpzfSx2LnRyYW5zbGF0ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obD0rdFswXSxjPSt0WzFdLHkoKSk6W2wsY119LHYuYW5nbGU9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9ZHYoZD1uJTM2MCppdiksdD1zdihkKSx5KCkpOmQqbnZ9LHYucmVmbGVjdFg9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHU9dD8tMToxLHkoKSk6dTwwfSx2LnJlZmxlY3RZPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhoPXQ/LTE6MSx5KCkpOmg8MH0sdi5maXRFeHRlbnQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gancodix0LGUpfSx2LmZpdFNpemU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gR3codix0LGUpfSx2LmZpdFdpZHRoPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIFd3KHYsdCxlKX0sdi5maXRIZWlnaHQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gcXcodix0LGUpfSx2fSxnZW9Qcm9qZWN0aW9uOkp3LGdlb1Byb2plY3Rpb25NdXRhdG9yOlF3LGdlb01lcmNhdG9yOmZ1bmN0aW9uIG9SKCl7cmV0dXJuIGNTKGxTKS5zY2FsZSg5NjEvZXYpfSxnZW9NZXJjYXRvclJhdzpsUyxnZW9OYXR1cmFsRWFydGgxOmZ1bmN0aW9uIGFSKCl7cmV0dXJuIEp3KHhTKS5zY2FsZSgxNzUuMjk1KX0sZ2VvTmF0dXJhbEVhcnRoMVJhdzp4UyxnZW9PcnRob2dyYXBoaWM6ZnVuY3Rpb24gc1IoKXtyZXR1cm4gSncod1MpLnNjYWxlKDI0OS41KS5jbGlwQW5nbGUoOTAuMDAwMDAxKX0sZ2VvT3J0aG9ncmFwaGljUmF3OndTLGdlb1N0ZXJlb2dyYXBoaWM6ZnVuY3Rpb24gbFIoKXtyZXR1cm4gSncoU1MpLnNjYWxlKDI1MCkuY2xpcEFuZ2xlKDE0Mil9LGdlb1N0ZXJlb2dyYXBoaWNSYXc6U1MsZ2VvVHJhbnN2ZXJzZU1lcmNhdG9yOmZ1bmN0aW9uIGNSKCl7dmFyIHQ9Y1MoTVMpLGU9dC5jZW50ZXIsbj10LnJvdGF0ZTtyZXR1cm4gdC5jZW50ZXI9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/ZShbLXRbMV0sdFswXV0pOlsodD1lKCkpWzFdLC10WzBdXX0sdC5yb3RhdGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/bihbdFswXSx0WzFdLHQubGVuZ3RoPjI/dFsyXSs5MDo5MF0pOlsodD1uKCkpWzBdLHRbMV0sdFsyXS05MF19LG4oWzAsMCw5MF0pLnNjYWxlKDE1OS4xNTUpfSxnZW9UcmFuc3ZlcnNlTWVyY2F0b3JSYXc6TVMsZ2VvUm90YXRpb246WWIsZ2VvU3RyZWFtOkV2LGdlb1RyYW5zZm9ybTpmdW5jdGlvbiB1Uih0KXtyZXR1cm57c3RyZWFtOkZ3KHQpfX0sY2x1c3RlcjpmdW5jdGlvbiBoUigpe3ZhciB0PUVTLGU9MSxuPTEsaT0hMTtmdW5jdGlvbiByKHIpe3ZhciBvLGE9MDtyLmVhY2hBZnRlcigoZnVuY3Rpb24oZSl7dmFyIG49ZS5jaGlsZHJlbjtuPyhlLng9KGZ1bmN0aW9uIGkodCl7cmV0dXJuIHQucmVkdWNlKFRTLDApL3QubGVuZ3RofSkobiksZS55PShmdW5jdGlvbiByKHQpe3JldHVybiAxK3QucmVkdWNlKENTLDApfSkobikpOihlLng9bz9hKz10KGUsbyk6MCxlLnk9MCxvPWUpfSkpO3ZhciBzPShmdW5jdGlvbiBsKHQpe2Zvcih2YXIgZTtlPXQuY2hpbGRyZW47KXQ9ZVswXTtyZXR1cm4gdH0pKHIpLGM9KGZ1bmN0aW9uIHUodCl7Zm9yKHZhciBlO2U9dC5jaGlsZHJlbjspdD1lW2UubGVuZ3RoLTFdO3JldHVybiB0fSkociksaD1zLngtdChzLGMpLzIsZD1jLngrdChjLHMpLzI7cmV0dXJuIHIuZWFjaEFmdGVyKGk/ZnVuY3Rpb24odCl7dC54PSh0Lngtci54KSplLHQueT0oci55LXQueSkqbn06ZnVuY3Rpb24odCl7dC54PSh0LngtaCkvKGQtaCkqZSx0Lnk9KDEtKHIueT90Lnkvci55OjEpKSpufSl9cmV0dXJuIHIuc2VwYXJhdGlvbj1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD1lLHIpOnR9LHIuc2l6ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0hMSxlPSt0WzBdLG49K3RbMV0scik6aT9udWxsOltlLG5dfSxyLm5vZGVTaXplPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPSEwLGU9K3RbMF0sbj0rdFsxXSxyKTppP1tlLG5dOm51bGx9LHJ9LGhpZXJhcmNoeTprUyxwYWNrOmZ1bmN0aW9uIGRSKCl7dmFyIHQ9bnVsbCxlPTEsbj0xLGk9bE07ZnVuY3Rpb24gcihyKXtyZXR1cm4gci54PWUvMixyLnk9bi8yLHQ/ci5lYWNoQmVmb3JlKGhNKHQpKS5lYWNoQWZ0ZXIoZE0oaSwuNSkpLmVhY2hCZWZvcmUocE0oMSkpOnIuZWFjaEJlZm9yZShoTSh1TSkpLmVhY2hBZnRlcihkTShsTSwxKSkuZWFjaEFmdGVyKGRNKGksci5yL01hdGgubWluKGUsbikpKS5lYWNoQmVmb3JlKHBNKE1hdGgubWluKGUsbikvKDIqci5yKSkpLHJ9cmV0dXJuIHIucmFkaXVzPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PWFNKGUpLHIpOnR9LHIuc2l6ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT0rdFswXSxuPSt0WzFdLHIpOltlLG5dfSxyLnBhZGRpbmc9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpjTSgrdCkscik6aX0scn0scGFja1NpYmxpbmdzOmZ1bmN0aW9uIHBSKHQpe3JldHVybiBvTSh0KSx0fSxwYWNrRW5jbG9zZTpZUyxwYXJ0aXRpb246ZnVuY3Rpb24gZlIoKXt2YXIgdD0xLGU9MSxuPTAsaT0hMTtmdW5jdGlvbiByKHIpe3ZhciBvPXIuaGVpZ2h0KzE7cmV0dXJuIHIueDA9ci55MD1uLHIueDE9dCxyLnkxPWUvbyxyLmVhY2hCZWZvcmUoKGZ1bmN0aW9uIGEodCxlKXtyZXR1cm4gZnVuY3Rpb24oaSl7aS5jaGlsZHJlbiYmbU0oaSxpLngwLHQqKGkuZGVwdGgrMSkvZSxpLngxLHQqKGkuZGVwdGgrMikvZSk7dmFyIHI9aS54MCxvPWkueTAsYT1pLngxLW4scz1pLnkxLW47YTxyJiYocj1hPShyK2EpLzIpLHM8byYmKG89cz0obytzKS8yKSxpLngwPXIsaS55MD1vLGkueDE9YSxpLnkxPXN9fSkoZSxvKSksaSYmci5lYWNoQmVmb3JlKGZNKSxyfXJldHVybiByLnJvdW5kPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPSEhdCxyKTppfSxyLnNpemU9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9K25bMF0sZT0rblsxXSxyKTpbdCxlXX0sci5wYWRkaW5nPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPSt0LHIpOm59LHJ9LHN0cmF0aWZ5OmZ1bmN0aW9uIG1SKCl7dmFyIHQ9eU0sZT12TTtmdW5jdGlvbiBuKG4pe3ZhciBpLHIsbyxhLHMsbCxjLHU9bi5sZW5ndGgsaD1uZXcgQXJyYXkodSksZD17fTtmb3Iocj0wO3I8dTsrK3Ipcz1oW3JdPW5ldyBJUyhpPW5bcl0pLG51bGwhPShsPXQoaSxyLG4pKSYmKGwrPSIiKSYmKGRbYz0iJCIrKHMuaWQ9bCldPWMgaW4gZD9fTTpzKTtmb3Iocj0wO3I8dTsrK3IpaWYocz1oW3JdLG51bGwhPShsPWUobltyXSxyLG4pKSYmKGwrPSIiKSl7aWYoIShhPWRbIiQiK2xdKSl0aHJvdyBuZXcgRXJyb3IoIm1pc3Npbmc6ICIrbCk7aWYoYT09PV9NKXRocm93IG5ldyBFcnJvcigiYW1iaWd1b3VzOiAiK2wpO2EuY2hpbGRyZW4/YS5jaGlsZHJlbi5wdXNoKHMpOmEuY2hpbGRyZW49W3NdLHMucGFyZW50PWF9ZWxzZXtpZihvKXRocm93IG5ldyBFcnJvcigibXVsdGlwbGUgcm9vdHMiKTtvPXN9aWYoIW8pdGhyb3cgbmV3IEVycm9yKCJubyByb290Iik7aWYoby5wYXJlbnQ9Z00sby5lYWNoQmVmb3JlKChmdW5jdGlvbih0KXt0LmRlcHRoPXQucGFyZW50LmRlcHRoKzEsLS11fSkpLmVhY2hCZWZvcmUoTlMpLG8ucGFyZW50PW51bGwsdT4wKXRocm93IG5ldyBFcnJvcigiY3ljbGUiKTtyZXR1cm4gb31yZXR1cm4gbi5pZD1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD1zTShlKSxuKTp0fSxuLnBhcmVudElkPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPXNNKHQpLG4pOmV9LG59LHRyZWU6ZnVuY3Rpb24gZ1IoKXt2YXIgdD1iTSxlPTEsbj0xLGk9bnVsbDtmdW5jdGlvbiByKHIpe3ZhciBsPShmdW5jdGlvbiBjKHQpe2Zvcih2YXIgZSxuLGkscixvLGE9bmV3IEVNKHQsMCkscz1bYV07ZT1zLnBvcCgpOylpZihpPWUuXy5jaGlsZHJlbilmb3IoZS5jaGlsZHJlbj1uZXcgQXJyYXkobz1pLmxlbmd0aCkscj1vLTE7cj49MDstLXIpcy5wdXNoKG49ZS5jaGlsZHJlbltyXT1uZXcgRU0oaVtyXSxyKSksbi5wYXJlbnQ9ZTtyZXR1cm4oYS5wYXJlbnQ9bmV3IEVNKG51bGwsMCkpLmNoaWxkcmVuPVthXSxhfSkocik7aWYobC5lYWNoQWZ0ZXIobyksbC5wYXJlbnQubT0tbC56LGwuZWFjaEJlZm9yZShhKSxpKXIuZWFjaEJlZm9yZShzKTtlbHNle3ZhciB1PXIsaD1yLGQ9cjtyLmVhY2hCZWZvcmUoKGZ1bmN0aW9uKHQpe3QueDx1LngmJih1PXQpLHQueD5oLngmJihoPXQpLHQuZGVwdGg+ZC5kZXB0aCYmKGQ9dCl9KSk7dmFyIHA9dT09PWg/MTp0KHUsaCkvMixmPXAtdS54LG09ZS8oaC54K3ArZiksZz1uLyhkLmRlcHRofHwxKTtyLmVhY2hCZWZvcmUoKGZ1bmN0aW9uKHQpe3QueD0odC54K2YpKm0sdC55PXQuZGVwdGgqZ30pKX1yZXR1cm4gcn1mdW5jdGlvbiBvKGUpe3ZhciBuPWUuY2hpbGRyZW4saT1lLnBhcmVudC5jaGlsZHJlbixyPWUuaT9pW2UuaS0xXTpudWxsO2lmKG4peyEoZnVuY3Rpb24gbyh0KXtmb3IodmFyIGUsbj0wLGk9MCxyPXQuY2hpbGRyZW4sbz1yLmxlbmd0aDstLW8+PTA7KShlPXJbb10pLnorPW4sZS5tKz1uLG4rPWUucysoaSs9ZS5jKX0pKGUpO3ZhciBhPShuWzBdLnorbltuLmxlbmd0aC0xXS56KS8yO3I/KGUuej1yLnordChlLl8sci5fKSxlLm09ZS56LWEpOmUuej1hfWVsc2UgciYmKGUuej1yLnordChlLl8sci5fKSk7ZS5wYXJlbnQuQT0oZnVuY3Rpb24gcyhlLG4saSl7aWYobil7Zm9yKHZhciByLG89ZSxhPWUscz1uLGw9by5wYXJlbnQuY2hpbGRyZW5bMF0sYz1vLm0sdT1hLm0saD1zLm0sZD1sLm07cz13TShzKSxvPXhNKG8pLHMmJm87KWw9eE0obCksKGE9d00oYSkpLmE9ZSwocj1zLnoraC1vLnotYyt0KHMuXyxvLl8pKT4wJiYoU00oTU0ocyxlLGkpLGUsciksYys9cix1Kz1yKSxoKz1zLm0sYys9by5tLGQrPWwubSx1Kz1hLm07cyYmIXdNKGEpJiYoYS50PXMsYS5tKz1oLXUpLG8mJiF4TShsKSYmKGwudD1vLGwubSs9Yy1kLGk9ZSl9cmV0dXJuIGl9KShlLHIsZS5wYXJlbnQuQXx8aVswXSl9ZnVuY3Rpb24gYSh0KXt0Ll8ueD10LnordC5wYXJlbnQubSx0Lm0rPXQucGFyZW50Lm19ZnVuY3Rpb24gcyh0KXt0LngqPWUsdC55PXQuZGVwdGgqbn1yZXR1cm4gci5zZXBhcmF0aW9uPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PWUscik6dH0sci5zaXplPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPSExLGU9K3RbMF0sbj0rdFsxXSxyKTppP251bGw6W2Usbl19LHIubm9kZVNpemU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9ITAsZT0rdFswXSxuPSt0WzFdLHIpOmk/W2Usbl06bnVsbH0scn0sdHJlZW1hcDpmdW5jdGlvbiBfUigpe3ZhciB0PWtNLGU9ITEsbj0xLGk9MSxyPVswXSxvPWxNLGE9bE0scz1sTSxsPWxNLGM9bE07ZnVuY3Rpb24gdSh0KXtyZXR1cm4gdC54MD10LnkwPTAsdC54MT1uLHQueTE9aSx0LmVhY2hCZWZvcmUoaCkscj1bMF0sZSYmdC5lYWNoQmVmb3JlKGZNKSx0fWZ1bmN0aW9uIGgoZSl7dmFyIG49cltlLmRlcHRoXSxpPWUueDArbix1PWUueTArbixoPWUueDEtbixkPWUueTEtbjtoPGkmJihpPWg9KGkraCkvMiksZDx1JiYodT1kPSh1K2QpLzIpLGUueDA9aSxlLnkwPXUsZS54MT1oLGUueTE9ZCxlLmNoaWxkcmVuJiYobj1yW2UuZGVwdGgrMV09byhlKS8yLGkrPWMoZSktbix1Kz1hKGUpLW4sKGgtPXMoZSktbik8aSYmKGk9aD0oaStoKS8yKSwoZC09bChlKS1uKTx1JiYodT1kPSh1K2QpLzIpLHQoZSxpLHUsaCxkKSl9cmV0dXJuIHUucm91bmQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9ISF0LHUpOmV9LHUuc2l6ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj0rdFswXSxpPSt0WzFdLHUpOltuLGldfSx1LnRpbGU9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9c00oZSksdSk6dH0sdS5wYWRkaW5nPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3UucGFkZGluZ0lubmVyKHQpLnBhZGRpbmdPdXRlcih0KTp1LnBhZGRpbmdJbm5lcigpfSx1LnBhZGRpbmdJbm5lcj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz0iZnVuY3Rpb24iPT10eXBlb2YgdD90OmNNKCt0KSx1KTpvfSx1LnBhZGRpbmdPdXRlcj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD91LnBhZGRpbmdUb3AodCkucGFkZGluZ1JpZ2h0KHQpLnBhZGRpbmdCb3R0b20odCkucGFkZGluZ0xlZnQodCk6dS5wYWRkaW5nVG9wKCl9LHUucGFkZGluZ1RvcD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT0iZnVuY3Rpb24iPT10eXBlb2YgdD90OmNNKCt0KSx1KTphfSx1LnBhZGRpbmdSaWdodD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocz0iZnVuY3Rpb24iPT10eXBlb2YgdD90OmNNKCt0KSx1KTpzfSx1LnBhZGRpbmdCb3R0b209ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGw9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpjTSgrdCksdSk6bH0sdS5wYWRkaW5nTGVmdD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYz0iZnVuY3Rpb24iPT10eXBlb2YgdD90OmNNKCt0KSx1KTpjfSx1fSx0cmVlbWFwQmluYXJ5OmZ1bmN0aW9uIHlSKHQsZSxuLGkscil7dmFyIG8sYSxzPXQuY2hpbGRyZW4sbD1zLmxlbmd0aCxjPW5ldyBBcnJheShsKzEpO2ZvcihjWzBdPWE9bz0wO288bDsrK28pY1tvKzFdPWErPXNbb10udmFsdWU7IShmdW5jdGlvbiB0KGUsbixpLHIsbyxhLGwpe2lmKGU+PW4tMSl7dmFyIHU9c1tlXTtyZXR1cm4gdS54MD1yLHUueTA9byx1LngxPWEsdm9pZCh1LnkxPWwpfXZhciBoPWNbZV0sZD1pLzIraCxwPWUrMSxmPW4tMTtmb3IoO3A8Zjspe3ZhciBtPXArZj4+PjE7Y1ttXTxkP3A9bSsxOmY9bX1kLWNbcC0xXTxjW3BdLWQmJmUrMTxwJiYtLXA7dmFyIGc9Y1twXS1oLF89aS1nO2lmKGEtcj5sLW8pe3ZhciB5PShyKl8rYSpnKS9pO3QoZSxwLGcscixvLHksbCksdChwLG4sXyx5LG8sYSxsKX1lbHNle3ZhciB2PShvKl8rbCpnKS9pO3QoZSxwLGcscixvLGEsdiksdChwLG4sXyxyLHYsYSxsKX19KSgwLGwsdC52YWx1ZSxlLG4saSxyKX0sdHJlZW1hcERpY2U6bU0sdHJlZW1hcFNsaWNlOlRNLHRyZWVtYXBTbGljZURpY2U6ZnVuY3Rpb24gdlIodCxlLG4saSxyKXsoMSZ0LmRlcHRoP1RNOm1NKSh0LGUsbixpLHIpfSx0cmVlbWFwU3F1YXJpZnk6a00sdHJlZW1hcFJlc3F1YXJpZnk6TE0saW50ZXJwb2xhdGU6Y3AsaW50ZXJwb2xhdGVBcnJheTpmdW5jdGlvbiBiUih0LGUpe3JldHVybihlcChlKT90cDpucCkodCxlKX0saW50ZXJwb2xhdGVCYXNpczpqZCxpbnRlcnBvbGF0ZUJhc2lzQ2xvc2VkOkdkLGludGVycG9sYXRlRGF0ZTppcCxpbnRlcnBvbGF0ZURpc2NyZXRlOmZ1bmN0aW9uIHhSKHQpe3ZhciBlPXQubGVuZ3RoO3JldHVybiBmdW5jdGlvbihuKXtyZXR1cm4gdFtNYXRoLm1heCgwLE1hdGgubWluKGUtMSxNYXRoLmZsb29yKG4qZSkpKV19fSxpbnRlcnBvbGF0ZUh1ZTpmdW5jdGlvbiB3Uih0LGUpe3ZhciBuPVlkKCt0LCtlKTtyZXR1cm4gZnVuY3Rpb24odCl7dmFyIGU9bih0KTtyZXR1cm4gZS0zNjAqTWF0aC5mbG9vcihlLzM2MCl9fSxpbnRlcnBvbGF0ZU51bWJlcjpycCxpbnRlcnBvbGF0ZU51bWJlckFycmF5OnRwLGludGVycG9sYXRlT2JqZWN0Om9wLGludGVycG9sYXRlUm91bmQ6dXAsaW50ZXJwb2xhdGVTdHJpbmc6bHAsaW50ZXJwb2xhdGVUcmFuc2Zvcm1Dc3M6dnAsaW50ZXJwb2xhdGVUcmFuc2Zvcm1Tdmc6eHAsaW50ZXJwb2xhdGVab29tOkVwLGludGVycG9sYXRlUmdiOktkLGludGVycG9sYXRlUmdiQmFzaXM6SmQsaW50ZXJwb2xhdGVSZ2JCYXNpc0Nsb3NlZDpRZCxpbnRlcnBvbGF0ZUhzbDpDcCxpbnRlcnBvbGF0ZUhzbExvbmc6QXAsaW50ZXJwb2xhdGVMYWI6a3AsaW50ZXJwb2xhdGVIY2w6UHAsaW50ZXJwb2xhdGVIY2xMb25nOk5wLGludGVycG9sYXRlQ3ViZWhlbGl4OlJwLGludGVycG9sYXRlQ3ViZWhlbGl4TG9uZzpPcCxwaWVjZXdpc2U6ZnVuY3Rpb24gU1IodCxlKXtmb3IodmFyIG49MCxpPWUubGVuZ3RoLTEscj1lWzBdLG89bmV3IEFycmF5KGk8MD8wOmkpO248aTspb1tuXT10KHIscj1lWysrbl0pO3JldHVybiBmdW5jdGlvbih0KXt2YXIgZT1NYXRoLm1heCgwLE1hdGgubWluKGktMSxNYXRoLmZsb29yKHQqPWkpKSk7cmV0dXJuIG9bZV0odC1lKX19LHF1YW50aXplOmZ1bmN0aW9uIE1SKHQsZSl7Zm9yKHZhciBuPW5ldyBBcnJheShlKSxpPTA7aTxlOysraSluW2ldPXQoaS8oZS0xKSk7cmV0dXJuIG59LHBhdGg6T2cscG9seWdvbkFyZWE6ZnVuY3Rpb24gRVIodCl7Zm9yKHZhciBlLG49LTEsaT10Lmxlbmd0aCxyPXRbaS0xXSxvPTA7KytuPGk7KW8rPShlPXIpWzFdKihyPXRbbl0pWzBdLWVbMF0qclsxXTtyZXR1cm4gby8yfSxwb2x5Z29uQ2VudHJvaWQ6ZnVuY3Rpb24gVFIodCl7Zm9yKHZhciBlLG4saT0tMSxyPXQubGVuZ3RoLG89MCxhPTAscz10W3ItMV0sbD0wOysraTxyOylsKz1uPShlPXMpWzBdKihzPXRbaV0pWzFdLXNbMF0qZVsxXSxvKz0oZVswXStzWzBdKSpuLGErPShlWzFdK3NbMV0pKm47cmV0dXJuW28vKGwqPTMpLGEvbF19LHBvbHlnb25IdWxsOmZ1bmN0aW9uIENSKHQpe2lmKChuPXQubGVuZ3RoKTwzKXJldHVybiBudWxsO3ZhciBlLG4saT1uZXcgQXJyYXkobikscj1uZXcgQXJyYXkobik7Zm9yKGU9MDtlPG47KytlKWlbZV09Wyt0W2VdWzBdLCt0W2VdWzFdLGVdO2ZvcihpLnNvcnQoTk0pLGU9MDtlPG47KytlKXJbZV09W2lbZV1bMF0sLWlbZV1bMV1dO3ZhciBvPUlNKGkpLGE9SU0ocikscz1hWzBdPT09b1swXSxsPWFbYS5sZW5ndGgtMV09PT1vW28ubGVuZ3RoLTFdLGM9W107Zm9yKGU9by5sZW5ndGgtMTtlPj0wOy0tZSljLnB1c2godFtpW29bZV1dWzJdXSk7Zm9yKGU9K3M7ZTxhLmxlbmd0aC1sOysrZSljLnB1c2godFtpW2FbZV1dWzJdXSk7cmV0dXJuIGN9LHBvbHlnb25Db250YWluczpmdW5jdGlvbiBBUih0LGUpe2Zvcih2YXIgbixpLHI9dC5sZW5ndGgsbz10W3ItMV0sYT1lWzBdLHM9ZVsxXSxsPW9bMF0sYz1vWzFdLHU9ITEsaD0wO2g8cjsrK2gpbj0obz10W2hdKVswXSwoaT1vWzFdKT5zIT1jPnMmJmE8KGwtbikqKHMtaSkvKGMtaSkrbiYmKHU9IXUpLGw9bixjPWk7cmV0dXJuIHV9LHBvbHlnb25MZW5ndGg6ZnVuY3Rpb24ga1IodCl7Zm9yKHZhciBlLG4saT0tMSxyPXQubGVuZ3RoLG89dFtyLTFdLGE9b1swXSxzPW9bMV0sbD0wOysraTxyOyllPWEsbj1zLGUtPWE9KG89dFtpXSlbMF0sbi09cz1vWzFdLGwrPU1hdGguc3FydChlKmUrbipuKTtyZXR1cm4gbH0scXVhZHRyZWU6dHkscmFuZG9tVW5pZm9ybTpPTSxyYW5kb21Ob3JtYWw6ek0scmFuZG9tTG9nTm9ybWFsOkRNLHJhbmRvbUJhdGVzOkhNLHJhbmRvbUlyd2luSGFsbDpCTSxyYW5kb21FeHBvbmVudGlhbDpGTSxzY2FsZUJhbmQ6WE0sc2NhbGVQb2ludDpLTSxzY2FsZUlkZW50aXR5OmZ1bmN0aW9uIHQoZSl7dmFyIG47ZnVuY3Rpb24gaSh0KXtyZXR1cm4gaXNOYU4odD0rdCk/bjp0fXJldHVybiBpLmludmVydD1pLGkuZG9tYWluPWkucmFuZ2U9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9R00uY2FsbCh0LFpNKSxpKTplLnNsaWNlKCl9LGkudW5rbm93bj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj10LGkpOm59LGkuY29weT1mdW5jdGlvbigpe3JldHVybiB0KGUpLnVua25vd24obil9LGU9YXJndW1lbnRzLmxlbmd0aD9HTS5jYWxsKGUsWk0pOlswLDFdLGxFKGkpfSxzY2FsZUxpbmVhcjpjRSxzY2FsZUxvZzp5RSxzY2FsZVN5bWxvZzpmdW5jdGlvbiB0KCl7dmFyIGU9eEUob0UoKSk7cmV0dXJuIGUuY29weT1mdW5jdGlvbigpe3JldHVybiByRShlLHQoKSkuY29uc3RhbnQoZS5jb25zdGFudCgpKX0sVk0uYXBwbHkoZSxhcmd1bWVudHMpfSxzY2FsZU9yZGluYWw6WU0sc2NhbGVJbXBsaWNpdDpxTSxzY2FsZVBvdzpURSxzY2FsZVNxcnQ6ZnVuY3Rpb24gTFIoKXtyZXR1cm4gVEUuYXBwbHkobnVsbCxhcmd1bWVudHMpLmV4cG9uZW50KC41KX0sc2NhbGVRdWFudGlsZTpDRSxzY2FsZVF1YW50aXplOkFFLHNjYWxlVGhyZXNob2xkOmZ1bmN0aW9uIHQoKXt2YXIgZSxuPVsuNV0saT1bMCwxXSxyPTE7ZnVuY3Rpb24gbyh0KXtyZXR1cm4gdDw9dD9pW0RsKG4sdCwwLHIpXTplfXJldHVybiBvLmRvbWFpbj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj1XTS5jYWxsKHQpLHI9TWF0aC5taW4obi5sZW5ndGgsaS5sZW5ndGgtMSksbyk6bi5zbGljZSgpfSxvLnJhbmdlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPVdNLmNhbGwodCkscj1NYXRoLm1pbihuLmxlbmd0aCxpLmxlbmd0aC0xKSxvKTppLnNsaWNlKCl9LG8uaW52ZXJ0RXh0ZW50PWZ1bmN0aW9uKHQpe3ZhciBlPWkuaW5kZXhPZih0KTtyZXR1cm5bbltlLTFdLG5bZV1dfSxvLnVua25vd249ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9dCxvKTplfSxvLmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gdCgpLmRvbWFpbihuKS5yYW5nZShpKS51bmtub3duKGUpfSxWTS5hcHBseShvLGFyZ3VtZW50cyl9LHNjYWxlVGltZTp6QSxzY2FsZVV0YzpmdW5jdGlvbiBQUigpe3JldHVybiBWTS5hcHBseShPQShZVCxHVCxrVCxUVCxTVCxiVCxWRSxJRSxuQykuZG9tYWluKFtEYXRlLlVUQygyZTMsMCwxKSxEYXRlLlVUQygyZTMsMCwyKV0pLGFyZ3VtZW50cyl9LHNjYWxlU2VxdWVudGlhbDpmdW5jdGlvbiB0KCl7dmFyIGU9bEUoREEoKShRTSkpO3JldHVybiBlLmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gQkEoZSx0KCkpfSxVTS5hcHBseShlLGFyZ3VtZW50cyl9LHNjYWxlU2VxdWVudGlhbExvZzpmdW5jdGlvbiB0KCl7dmFyIGU9X0UoREEoKSkuZG9tYWluKFsxLDEwXSk7cmV0dXJuIGUuY29weT1mdW5jdGlvbigpe3JldHVybiBCQShlLHQoKSkuYmFzZShlLmJhc2UoKSl9LFVNLmFwcGx5KGUsYXJndW1lbnRzKX0sc2NhbGVTZXF1ZW50aWFsUG93OkhBLHNjYWxlU2VxdWVudGlhbFNxcnQ6ZnVuY3Rpb24gTlIoKXtyZXR1cm4gSEEuYXBwbHkobnVsbCxhcmd1bWVudHMpLmV4cG9uZW50KC41KX0sc2NhbGVTZXF1ZW50aWFsU3ltbG9nOmZ1bmN0aW9uIHQoKXt2YXIgZT14RShEQSgpKTtyZXR1cm4gZS5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIEJBKGUsdCgpKS5jb25zdGFudChlLmNvbnN0YW50KCkpfSxVTS5hcHBseShlLGFyZ3VtZW50cyl9LHNjYWxlU2VxdWVudGlhbFF1YW50aWxlOmZ1bmN0aW9uIHQoKXt2YXIgZT1bXSxuPVFNO2Z1bmN0aW9uIGkodCl7aWYoIWlzTmFOKHQ9K3QpKXJldHVybiBuKChEbChlLHQpLTEpLyhlLmxlbmd0aC0xKSl9cmV0dXJuIGkuZG9tYWluPWZ1bmN0aW9uKHQpe2lmKCFhcmd1bWVudHMubGVuZ3RoKXJldHVybiBlLnNsaWNlKCk7ZT1bXTtmb3IodmFyIG4scj0wLG89dC5sZW5ndGg7cjxvOysrciludWxsPT0obj10W3JdKXx8aXNOYU4obj0rbil8fGUucHVzaChuKTtyZXR1cm4gZS5zb3J0KFJsKSxpfSxpLmludGVycG9sYXRvcj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj10LGkpOm59LGkuY29weT1mdW5jdGlvbigpe3JldHVybiB0KG4pLmRvbWFpbihlKX0sVU0uYXBwbHkoaSxhcmd1bWVudHMpfSxzY2FsZURpdmVyZ2luZzpmdW5jdGlvbiB0KCl7dmFyIGU9bEUoRkEoKShRTSkpO3JldHVybiBlLmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gQkEoZSx0KCkpfSxVTS5hcHBseShlLGFyZ3VtZW50cyl9LHNjYWxlRGl2ZXJnaW5nTG9nOmZ1bmN0aW9uIHQoKXt2YXIgZT1fRShGQSgpKS5kb21haW4oWy4xLDEsMTBdKTtyZXR1cm4gZS5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIEJBKGUsdCgpKS5iYXNlKGUuYmFzZSgpKX0sVU0uYXBwbHkoZSxhcmd1bWVudHMpfSxzY2FsZURpdmVyZ2luZ1BvdzpWQSxzY2FsZURpdmVyZ2luZ1NxcnQ6ZnVuY3Rpb24gSVIoKXtyZXR1cm4gVkEuYXBwbHkobnVsbCxhcmd1bWVudHMpLmV4cG9uZW50KC41KX0sc2NhbGVEaXZlcmdpbmdTeW1sb2c6ZnVuY3Rpb24gdCgpe3ZhciBlPXhFKEZBKCkpO3JldHVybiBlLmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gQkEoZSx0KCkpLmNvbnN0YW50KGUuY29uc3RhbnQoKSl9LFVNLmFwcGx5KGUsYXJndW1lbnRzKX0sdGlja0Zvcm1hdDpzRSxzY2hlbWVDYXRlZ29yeTEwOmpBLHNjaGVtZUFjY2VudDpHQSxzY2hlbWVEYXJrMjpXQSxzY2hlbWVQYWlyZWQ6cUEsc2NoZW1lUGFzdGVsMTpZQSxzY2hlbWVQYXN0ZWwyOlhBLHNjaGVtZVNldDE6JEEsc2NoZW1lU2V0MjpLQSxzY2hlbWVTZXQzOlpBLHNjaGVtZVRhYmxlYXUxMDpKQSxpbnRlcnBvbGF0ZUJyQkc6ZWssc2NoZW1lQnJCRzp0ayxpbnRlcnBvbGF0ZVBSR246aWssc2NoZW1lUFJHbjpuayxpbnRlcnBvbGF0ZVBpWUc6b2ssc2NoZW1lUGlZRzpyayxpbnRlcnBvbGF0ZVB1T3I6c2ssc2NoZW1lUHVPcjphayxpbnRlcnBvbGF0ZVJkQnU6Y2ssc2NoZW1lUmRCdTpsayxpbnRlcnBvbGF0ZVJkR3k6aGssc2NoZW1lUmRHeTp1ayxpbnRlcnBvbGF0ZVJkWWxCdTpwayxzY2hlbWVSZFlsQnU6ZGssaW50ZXJwb2xhdGVSZFlsR246bWssc2NoZW1lUmRZbEduOmZrLGludGVycG9sYXRlU3BlY3RyYWw6X2ssc2NoZW1lU3BlY3RyYWw6Z2ssaW50ZXJwb2xhdGVCdUduOnZrLHNjaGVtZUJ1R246eWssaW50ZXJwb2xhdGVCdVB1OnhrLHNjaGVtZUJ1UHU6YmssaW50ZXJwb2xhdGVHbkJ1OlNrLHNjaGVtZUduQnU6d2ssaW50ZXJwb2xhdGVPclJkOkVrLHNjaGVtZU9yUmQ6TWssaW50ZXJwb2xhdGVQdUJ1R246Q2ssc2NoZW1lUHVCdUduOlRrLGludGVycG9sYXRlUHVCdTprayxzY2hlbWVQdUJ1OkFrLGludGVycG9sYXRlUHVSZDpQayxzY2hlbWVQdVJkOkxrLGludGVycG9sYXRlUmRQdTpJayxzY2hlbWVSZFB1Ok5rLGludGVycG9sYXRlWWxHbkJ1Ok9rLHNjaGVtZVlsR25CdTpSayxpbnRlcnBvbGF0ZVlsR246RGssc2NoZW1lWWxHbjp6ayxpbnRlcnBvbGF0ZVlsT3JCcjpIayxzY2hlbWVZbE9yQnI6QmssaW50ZXJwb2xhdGVZbE9yUmQ6Vmssc2NoZW1lWWxPclJkOkZrLGludGVycG9sYXRlQmx1ZXM6amssc2NoZW1lQmx1ZXM6VWssaW50ZXJwb2xhdGVHcmVlbnM6V2ssc2NoZW1lR3JlZW5zOkdrLGludGVycG9sYXRlR3JleXM6WWssc2NoZW1lR3JleXM6cWssaW50ZXJwb2xhdGVQdXJwbGVzOiRrLHNjaGVtZVB1cnBsZXM6WGssaW50ZXJwb2xhdGVSZWRzOlprLHNjaGVtZVJlZHM6S2ssaW50ZXJwb2xhdGVPcmFuZ2VzOlFrLHNjaGVtZU9yYW5nZXM6SmssaW50ZXJwb2xhdGVDaXZpZGlzOmZ1bmN0aW9uIFJSKHQpe3JldHVybiB0PU1hdGgubWF4KDAsTWF0aC5taW4oMSx0KSksInJnYigiK01hdGgubWF4KDAsTWF0aC5taW4oMjU1LE1hdGgucm91bmQoLTQuNTQtdCooMzUuMzQtdCooMjM4MS43My10Kig2NDAyLjctdCooNzAyNC43Mi0yNzEwLjU3KnQpKSkpKSkpKyIsICIrTWF0aC5tYXgoMCxNYXRoLm1pbigyNTUsTWF0aC5yb3VuZCgzMi40OSt0KigxNzAuNzMrdCooNTIuODItdCooMTMxLjQ2LXQqKDE3Ni41OC02Ny4zNyp0KSkpKSkpKSsiLCAiK01hdGgubWF4KDAsTWF0aC5taW4oMjU1LE1hdGgucm91bmQoODEuMjQrdCooNDQyLjM2LXQqKDI0ODIuNDMtdCooNjE2Ny4yNC10Kig2NjE0Ljk0LTI0NzUuNjcqdCkpKSkpKSkrIikifSxpbnRlcnBvbGF0ZUN1YmVoZWxpeERlZmF1bHQ6dEwsaW50ZXJwb2xhdGVSYWluYm93OmZ1bmN0aW9uIE9SKHQpeyh0PDB8fHQ+MSkmJih0LT1NYXRoLmZsb29yKHQpKTt2YXIgZT1NYXRoLmFicyh0LS41KTtyZXR1cm4gaUwuaD0zNjAqdC0xMDAsaUwucz0xLjUtMS41KmUsaUwubD0uOC0uOSplLGlMKyIifSxpbnRlcnBvbGF0ZVdhcm06ZUwsaW50ZXJwb2xhdGVDb29sOm5MLGludGVycG9sYXRlU2luZWJvdzpmdW5jdGlvbiB6Uih0KXt2YXIgZTtyZXR1cm4gdD0oLjUtdCkqTWF0aC5QSSxyTC5yPTI1NSooZT1NYXRoLnNpbih0KSkqZSxyTC5nPTI1NSooZT1NYXRoLnNpbih0K29MKSkqZSxyTC5iPTI1NSooZT1NYXRoLnNpbih0K2FMKSkqZSxyTCsiIn0saW50ZXJwb2xhdGVUdXJibzpmdW5jdGlvbiBEUih0KXtyZXR1cm4gdD1NYXRoLm1heCgwLE1hdGgubWluKDEsdCkpLCJyZ2IoIitNYXRoLm1heCgwLE1hdGgubWluKDI1NSxNYXRoLnJvdW5kKDM0LjYxK3QqKDExNzIuMzMtdCooMTA3OTMuNTYtdCooMzMzMDAuMTItdCooMzgzOTQuNDktMTQ4MjUuMDUqdCkpKSkpKSkrIiwgIitNYXRoLm1heCgwLE1hdGgubWluKDI1NSxNYXRoLnJvdW5kKDIzLjMxK3QqKDU1Ny4zMyt0KigxMjI1LjMzLXQqKDM1NzQuOTYtdCooMTA3My43Nys3MDcuNTYqdCkpKSkpKSkrIiwgIitNYXRoLm1heCgwLE1hdGgubWluKDI1NSxNYXRoLnJvdW5kKDI3LjIrdCooMzIxMS4xLXQqKDE1MzI3Ljk3LXQqKDI3ODE0LXQqKDIyNTY5LjE4LTY4MzguNjYqdCkpKSkpKSkrIikifSxpbnRlcnBvbGF0ZVZpcmlkaXM6bEwsaW50ZXJwb2xhdGVNYWdtYTpjTCxpbnRlcnBvbGF0ZUluZmVybm86dUwsaW50ZXJwb2xhdGVQbGFzbWE6aEwsY3JlYXRlOmZ1bmN0aW9uIEJSKHQpe3JldHVybiBEdShOYyh0KS5jYWxsKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCkpfSxjcmVhdG9yOk5jLGxvY2FsOmdoLG1hdGNoZXI6RGMsbW91c2U6YmgsbmFtZXNwYWNlOmtjLG5hbWVzcGFjZXM6QWMsY2xpZW50UG9pbnQ6dmgsc2VsZWN0OkR1LHNlbGVjdEFsbDp4aCxzZWxlY3Rpb246enUsc2VsZWN0b3I6UmMsc2VsZWN0b3JBbGw6emMsc3R5bGU6UWMsdG91Y2g6d2gsdG91Y2hlczpmdW5jdGlvbiBIUih0LGUpe251bGw9PWUmJihlPXloKCkudG91Y2hlcyk7Zm9yKHZhciBuPTAsaT1lP2UubGVuZ3RoOjAscj1uZXcgQXJyYXkoaSk7bjxpOysrbilyW25dPXZoKHQsZVtuXSk7cmV0dXJuIHJ9LHdpbmRvdzokYyxnZXQgZXZlbnQoKXtyZXR1cm4gTXV9LGN1c3RvbUV2ZW50Okx1LGFyYzpmdW5jdGlvbiBGUigpe3ZhciB0PVRMLGU9Q0wsbj1kTCgwKSxpPW51bGwscj1BTCxvPWtMLGE9TEwscz1udWxsO2Z1bmN0aW9uIGwoKXt2YXIgbCxjLHU9K3QuYXBwbHkodGhpcyxhcmd1bWVudHMpLGg9K2UuYXBwbHkodGhpcyxhcmd1bWVudHMpLGQ9ci5hcHBseSh0aGlzLGFyZ3VtZW50cyktd0wscD1vLmFwcGx5KHRoaXMsYXJndW1lbnRzKS13TCxmPXBMKHAtZCksbT1wPmQ7aWYoc3x8KHM9bD1PZygpKSxoPHUmJihjPWgsaD11LHU9YyksaD5iTClpZihmPlNMLWJMKXMubW92ZVRvKGgqbUwoZCksaCp5TChkKSkscy5hcmMoMCwwLGgsZCxwLCFtKSx1PmJMJiYocy5tb3ZlVG8odSptTChwKSx1KnlMKHApKSxzLmFyYygwLDAsdSxwLGQsbSkpO2Vsc2V7dmFyIGcsXyx5PWQsdj1wLGI9ZCx4PXAsdz1mLFM9ZixNPWEuYXBwbHkodGhpcyxhcmd1bWVudHMpLzIsRT1NPmJMJiYoaT8raS5hcHBseSh0aGlzLGFyZ3VtZW50cyk6dkwodSp1K2gqaCkpLFQ9X0wocEwoaC11KS8yLCtuLmFwcGx5KHRoaXMsYXJndW1lbnRzKSksQz1ULEE9VDtpZihFPmJMKXt2YXIgaz1FTChFL3UqeUwoTSkpLEw9RUwoRS9oKnlMKE0pKTsody09MiprKT5iTD8oYis9ayo9bT8xOi0xLHgtPWspOih3PTAsYj14PShkK3ApLzIpLChTLT0yKkwpPmJMPyh5Kz1MKj1tPzE6LTEsdi09TCk6KFM9MCx5PXY9KGQrcCkvMil9dmFyIFA9aCptTCh5KSxOPWgqeUwoeSksST11Km1MKHgpLFI9dSp5TCh4KTtpZihUPmJMKXt2YXIgTyx6PWgqbUwodiksRD1oKnlMKHYpLEI9dSptTChiKSxIPXUqeUwoYik7aWYoZjx4TCYmKE89UEwoUCxOLEIsSCx6LEQsSSxSKSkpe3ZhciBGPVAtT1swXSxWPU4tT1sxXSxVPXotT1swXSxqPUQtT1sxXSxHPTEveUwoTUwoKEYqVStWKmopLyh2TChGKkYrVipWKSp2TChVKlUraipqKSkpLzIpLFc9dkwoT1swXSpPWzBdK09bMV0qT1sxXSk7Qz1fTChULCh1LVcpLyhHLTEpKSxBPV9MKFQsKGgtVykvKEcrMSkpfX1TPmJMP0E+Ykw/KGc9TkwoQixILFAsTixoLEEsbSksXz1OTCh6LEQsSSxSLGgsQSxtKSxzLm1vdmVUbyhnLmN4K2cueDAxLGcuY3krZy55MDEpLEE8VD9zLmFyYyhnLmN4LGcuY3ksQSxmTChnLnkwMSxnLngwMSksZkwoXy55MDEsXy54MDEpLCFtKToocy5hcmMoZy5jeCxnLmN5LEEsZkwoZy55MDEsZy54MDEpLGZMKGcueTExLGcueDExKSwhbSkscy5hcmMoMCwwLGgsZkwoZy5jeStnLnkxMSxnLmN4K2cueDExKSxmTChfLmN5K18ueTExLF8uY3grXy54MTEpLCFtKSxzLmFyYyhfLmN4LF8uY3ksQSxmTChfLnkxMSxfLngxMSksZkwoXy55MDEsXy54MDEpLCFtKSkpOihzLm1vdmVUbyhQLE4pLHMuYXJjKDAsMCxoLHksdiwhbSkpOnMubW92ZVRvKFAsTiksdT5iTCYmdz5iTD9DPmJMPyhnPU5MKEksUix6LEQsdSwtQyxtKSxfPU5MKFAsTixCLEgsdSwtQyxtKSxzLmxpbmVUbyhnLmN4K2cueDAxLGcuY3krZy55MDEpLEM8VD9zLmFyYyhnLmN4LGcuY3ksQyxmTChnLnkwMSxnLngwMSksZkwoXy55MDEsXy54MDEpLCFtKToocy5hcmMoZy5jeCxnLmN5LEMsZkwoZy55MDEsZy54MDEpLGZMKGcueTExLGcueDExKSwhbSkscy5hcmMoMCwwLHUsZkwoZy5jeStnLnkxMSxnLmN4K2cueDExKSxmTChfLmN5K18ueTExLF8uY3grXy54MTEpLG0pLHMuYXJjKF8uY3gsXy5jeSxDLGZMKF8ueTExLF8ueDExKSxmTChfLnkwMSxfLngwMSksIW0pKSk6cy5hcmMoMCwwLHUseCxiLG0pOnMubGluZVRvKEksUil9ZWxzZSBzLm1vdmVUbygwLDApO2lmKHMuY2xvc2VQYXRoKCksbClyZXR1cm4gcz1udWxsLGwrIiJ8fG51bGx9cmV0dXJuIGwuY2VudHJvaWQ9ZnVuY3Rpb24oKXt2YXIgbj0oK3QuYXBwbHkodGhpcyxhcmd1bWVudHMpKyArZS5hcHBseSh0aGlzLGFyZ3VtZW50cykpLzIsaT0oK3IuYXBwbHkodGhpcyxhcmd1bWVudHMpKyArby5hcHBseSh0aGlzLGFyZ3VtZW50cykpLzIteEwvMjtyZXR1cm5bbUwoaSkqbix5TChpKSpuXX0sbC5pbm5lclJhZGl1cz1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0iZnVuY3Rpb24iPT10eXBlb2YgZT9lOmRMKCtlKSxsKTp0fSxsLm91dGVyUmFkaXVzPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6ZEwoK3QpLGwpOmV9LGwuY29ybmVyUmFkaXVzPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6ZEwoK3QpLGwpOm59LGwucGFkUmFkaXVzPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPW51bGw9PXQ/bnVsbDoiZnVuY3Rpb24iPT10eXBlb2YgdD90OmRMKCt0KSxsKTppfSxsLnN0YXJ0QW5nbGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpkTCgrdCksbCk6cn0sbC5lbmRBbmdsZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz0iZnVuY3Rpb24iPT10eXBlb2YgdD90OmRMKCt0KSxsKTpvfSxsLnBhZEFuZ2xlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6ZEwoK3QpLGwpOmF9LGwuY29udGV4dD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocz1udWxsPT10P251bGw6dCxsKTpzfSxsfSxhcmVhOkJMLGxpbmU6REwscGllOmZ1bmN0aW9uIFZSKCl7dmFyIHQ9RkwsZT1ITCxuPW51bGwsaT1kTCgwKSxyPWRMKFNMKSxvPWRMKDApO2Z1bmN0aW9uIGEoYSl7dmFyIHMsbCxjLHUsaCxkPWEubGVuZ3RoLHA9MCxmPW5ldyBBcnJheShkKSxtPW5ldyBBcnJheShkKSxnPStpLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxfPU1hdGgubWluKFNMLE1hdGgubWF4KC1TTCxyLmFwcGx5KHRoaXMsYXJndW1lbnRzKS1nKSkseT1NYXRoLm1pbihNYXRoLmFicyhfKS9kLG8uYXBwbHkodGhpcyxhcmd1bWVudHMpKSx2PXkqKF88MD8tMToxKTtmb3Iocz0wO3M8ZDsrK3MpKGg9bVtmW3NdPXNdPSt0KGFbc10scyxhKSk+MCYmKHArPWgpO2ZvcihudWxsIT1lP2Yuc29ydCgoZnVuY3Rpb24odCxuKXtyZXR1cm4gZShtW3RdLG1bbl0pfSkpOm51bGwhPW4mJmYuc29ydCgoZnVuY3Rpb24odCxlKXtyZXR1cm4gbihhW3RdLGFbZV0pfSkpLHM9MCxjPXA/KF8tZCp2KS9wOjA7czxkOysrcyxnPXUpbVtsPWZbc11dPXtkYXRhOmFbbF0saW5kZXg6cyx2YWx1ZTpoPW1bbF0sc3RhcnRBbmdsZTpnLGVuZEFuZ2xlOnU9ZysoaD4wP2gqYzowKSt2LHBhZEFuZ2xlOnl9O3JldHVybiBtfXJldHVybiBhLnZhbHVlPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PSJmdW5jdGlvbiI9PXR5cGVvZiBlP2U6ZEwoK2UpLGEpOnR9LGEuc29ydFZhbHVlcz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT10LG49bnVsbCxhKTplfSxhLnNvcnQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49dCxlPW51bGwsYSk6bn0sYS5zdGFydEFuZ2xlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6ZEwoK3QpLGEpOml9LGEuZW5kQW5nbGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpkTCgrdCksYSk6cn0sYS5wYWRBbmdsZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz0iZnVuY3Rpb24iPT10eXBlb2YgdD90OmRMKCt0KSxhKTpvfSxhfSxhcmVhUmFkaWFsOnFMLHJhZGlhbEFyZWE6cUwsbGluZVJhZGlhbDpXTCxyYWRpYWxMaW5lOldMLHBvaW50UmFkaWFsOllMLGxpbmtIb3Jpem9udGFsOmZ1bmN0aW9uIFVSKCl7cmV0dXJuIFpMKEpMKX0sbGlua1ZlcnRpY2FsOmZ1bmN0aW9uIGpSKCl7cmV0dXJuIFpMKFFMKX0sbGlua1JhZGlhbDpmdW5jdGlvbiBHUigpe3ZhciB0PVpMKHRQKTtyZXR1cm4gdC5hbmdsZT10LngsZGVsZXRlIHQueCx0LnJhZGl1cz10LnksZGVsZXRlIHQueSx0fSxzeW1ib2w6ZnVuY3Rpb24gV1IoKXt2YXIgdD1kTChlUCksZT1kTCg2NCksbj1udWxsO2Z1bmN0aW9uIGkoKXt2YXIgaTtpZihufHwobj1pPU9nKCkpLHQuYXBwbHkodGhpcyxhcmd1bWVudHMpLmRyYXcobiwrZS5hcHBseSh0aGlzLGFyZ3VtZW50cykpLGkpcmV0dXJuIG49bnVsbCxpKyIifHxudWxsfXJldHVybiBpLnR5cGU9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZTpkTChlKSxpKTp0fSxpLnNpemU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpkTCgrdCksaSk6ZX0saS5jb250ZXh0PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPW51bGw9PXQ/bnVsbDp0LGkpOm59LGl9LHN5bWJvbHM6eVAsc3ltYm9sQ2lyY2xlOmVQLHN5bWJvbENyb3NzOm5QLHN5bWJvbERpYW1vbmQ6b1Asc3ltYm9sU3F1YXJlOnVQLHN5bWJvbFN0YXI6Y1Asc3ltYm9sVHJpYW5nbGU6ZFAsc3ltYm9sV3llOl9QLGN1cnZlQmFzaXNDbG9zZWQ6ZnVuY3Rpb24gcVIodCl7cmV0dXJuIG5ldyBTUCh0KX0sY3VydmVCYXNpc09wZW46ZnVuY3Rpb24gWVIodCl7cmV0dXJuIG5ldyBNUCh0KX0sY3VydmVCYXNpczp3UCxjdXJ2ZUJ1bmRsZTpUUCxjdXJ2ZUNhcmRpbmFsQ2xvc2VkOlBQLGN1cnZlQ2FyZGluYWxPcGVuOklQLGN1cnZlQ2FyZGluYWw6a1AsY3VydmVDYXRtdWxsUm9tQ2xvc2VkOkJQLGN1cnZlQ2F0bXVsbFJvbU9wZW46RlAsY3VydmVDYXRtdWxsUm9tOnpQLGN1cnZlTGluZWFyQ2xvc2VkOmZ1bmN0aW9uIFhSKHQpe3JldHVybiBuZXcgVlAodCl9LGN1cnZlTGluZWFyOlJMLGN1cnZlTW9ub3RvbmVYOmZ1bmN0aW9uICRSKHQpe3JldHVybiBuZXcgcVAodCl9LGN1cnZlTW9ub3RvbmVZOmZ1bmN0aW9uIEtSKHQpe3JldHVybiBuZXcgWVAodCl9LGN1cnZlTmF0dXJhbDpmdW5jdGlvbiBaUih0KXtyZXR1cm4gbmV3ICRQKHQpfSxjdXJ2ZVN0ZXA6ZnVuY3Rpb24gSlIodCl7cmV0dXJuIG5ldyBaUCh0LC41KX0sY3VydmVTdGVwQWZ0ZXI6ZnVuY3Rpb24gUVIodCl7cmV0dXJuIG5ldyBaUCh0LDEpfSxjdXJ2ZVN0ZXBCZWZvcmU6ZnVuY3Rpb24gdE8odCl7cmV0dXJuIG5ldyBaUCh0LDApfSxzdGFjazpmdW5jdGlvbiBlTygpe3ZhciB0PWRMKFtdKSxlPVFQLG49SlAsaT10TjtmdW5jdGlvbiByKHIpe3ZhciBvLGEscz10LmFwcGx5KHRoaXMsYXJndW1lbnRzKSxsPXIubGVuZ3RoLGM9cy5sZW5ndGgsdT1uZXcgQXJyYXkoYyk7Zm9yKG89MDtvPGM7KytvKXtmb3IodmFyIGgsZD1zW29dLHA9dVtvXT1uZXcgQXJyYXkobCksZj0wO2Y8bDsrK2YpcFtmXT1oPVswLCtpKHJbZl0sZCxmLHIpXSxoLmRhdGE9cltmXTtwLmtleT1kfWZvcihvPTAsYT1lKHUpO288YzsrK28pdVthW29dXS5pbmRleD1vO3JldHVybiBuKHUsYSksdX1yZXR1cm4gci5rZXlzPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PSJmdW5jdGlvbiI9PXR5cGVvZiBlP2U6ZEwoWEwuY2FsbChlKSkscik6dH0sci52YWx1ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0iZnVuY3Rpb24iPT10eXBlb2YgdD90OmRMKCt0KSxyKTppfSxyLm9yZGVyPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPW51bGw9PXQ/UVA6ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpkTChYTC5jYWxsKHQpKSxyKTplfSxyLm9mZnNldD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj1udWxsPT10P0pQOnQscik6bn0scn0sc3RhY2tPZmZzZXRFeHBhbmQ6ZnVuY3Rpb24gbk8odCxlKXtpZigoaT10Lmxlbmd0aCk+MCl7Zm9yKHZhciBuLGkscixvPTAsYT10WzBdLmxlbmd0aDtvPGE7KytvKXtmb3Iocj1uPTA7bjxpOysrbilyKz10W25dW29dWzFdfHwwO2lmKHIpZm9yKG49MDtuPGk7KytuKXRbbl1bb11bMV0vPXJ9SlAodCxlKX19LHN0YWNrT2Zmc2V0RGl2ZXJnaW5nOmZ1bmN0aW9uIGlPKHQsZSl7aWYoKHM9dC5sZW5ndGgpPjApZm9yKHZhciBuLGkscixvLGEscyxsPTAsYz10W2VbMF1dLmxlbmd0aDtsPGM7KytsKWZvcihvPWE9MCxuPTA7bjxzOysrbikocj0oaT10W2Vbbl1dW2xdKVsxXS1pWzBdKT4wPyhpWzBdPW8saVsxXT1vKz1yKTpyPDA/KGlbMV09YSxpWzBdPWErPXIpOihpWzBdPTAsaVsxXT1yKX0sc3RhY2tPZmZzZXROb25lOkpQLHN0YWNrT2Zmc2V0U2lsaG91ZXR0ZTpmdW5jdGlvbiByTyh0LGUpe2lmKChuPXQubGVuZ3RoKT4wKXtmb3IodmFyIG4saT0wLHI9dFtlWzBdXSxvPXIubGVuZ3RoO2k8bzsrK2kpe2Zvcih2YXIgYT0wLHM9MDthPG47KythKXMrPXRbYV1baV1bMV18fDA7cltpXVsxXSs9cltpXVswXT0tcy8yfUpQKHQsZSl9fSxzdGFja09mZnNldFdpZ2dsZTpmdW5jdGlvbiBvTyh0LGUpe2lmKChyPXQubGVuZ3RoKT4wJiYoaT0obj10W2VbMF1dKS5sZW5ndGgpPjApe2Zvcih2YXIgbixpLHIsbz0wLGE9MTthPGk7KythKXtmb3IodmFyIHM9MCxsPTAsYz0wO3M8cjsrK3Mpe2Zvcih2YXIgdT10W2Vbc11dLGg9dVthXVsxXXx8MCxkPShoLSh1W2EtMV1bMV18fDApKS8yLHA9MDtwPHM7KytwKXt2YXIgZj10W2VbcF1dO2QrPShmW2FdWzFdfHwwKS0oZlthLTFdWzFdfHwwKX1sKz1oLGMrPWQqaH1uW2EtMV1bMV0rPW5bYS0xXVswXT1vLGwmJihvLT1jL2wpfW5bYS0xXVsxXSs9blthLTFdWzBdPW8sSlAodCxlKX19LHN0YWNrT3JkZXJBcHBlYXJhbmNlOmVOLHN0YWNrT3JkZXJBc2NlbmRpbmc6aU4sc3RhY2tPcmRlckRlc2NlbmRpbmc6ZnVuY3Rpb24gYU8odCl7cmV0dXJuIGlOKHQpLnJldmVyc2UoKX0sc3RhY2tPcmRlckluc2lkZU91dDpmdW5jdGlvbiBzTyh0KXt2YXIgZSxuLGk9dC5sZW5ndGgscj10Lm1hcChyTiksbz1lTih0KSxhPTAscz0wLGw9W10sYz1bXTtmb3IoZT0wO2U8aTsrK2Upbj1vW2VdLGE8cz8oYSs9cltuXSxsLnB1c2gobikpOihzKz1yW25dLGMucHVzaChuKSk7cmV0dXJuIGMucmV2ZXJzZSgpLmNvbmNhdChsKX0sc3RhY2tPcmRlck5vbmU6UVAsc3RhY2tPcmRlclJldmVyc2U6ZnVuY3Rpb24gbE8odCl7cmV0dXJuIFFQKHQpLnJldmVyc2UoKX0sdGltZUludGVydmFsOlBFLHRpbWVNaWxsaXNlY29uZDpJRSx0aW1lTWlsbGlzZWNvbmRzOlJFLHV0Y01pbGxpc2Vjb25kOklFLHV0Y01pbGxpc2Vjb25kczpSRSx0aW1lU2Vjb25kOlZFLHRpbWVTZWNvbmRzOlVFLHV0Y1NlY29uZDpWRSx1dGNTZWNvbmRzOlVFLHRpbWVNaW51dGU6R0UsdGltZU1pbnV0ZXM6V0UsdGltZUhvdXI6WUUsdGltZUhvdXJzOlhFLHRpbWVEYXk6S0UsdGltZURheXM6WkUsdGltZVdlZWs6UUUsdGltZVdlZWtzOmFULHRpbWVTdW5kYXk6UUUsdGltZVN1bmRheXM6YVQsdGltZU1vbmRheTp0VCx0aW1lTW9uZGF5czpzVCx0aW1lVHVlc2RheTplVCx0aW1lVHVlc2RheXM6bFQsdGltZVdlZG5lc2RheTpuVCx0aW1lV2VkbmVzZGF5czpjVCx0aW1lVGh1cnNkYXk6aVQsdGltZVRodXJzZGF5czp1VCx0aW1lRnJpZGF5OnJULHRpbWVGcmlkYXlzOmhULHRpbWVTYXR1cmRheTpvVCx0aW1lU2F0dXJkYXlzOmRULHRpbWVNb250aDpmVCx0aW1lTW9udGhzOm1ULHRpbWVZZWFyOl9ULHRpbWVZZWFyczp5VCx1dGNNaW51dGU6YlQsdXRjTWludXRlczp4VCx1dGNIb3VyOlNULHV0Y0hvdXJzOk1ULHV0Y0RheTpUVCx1dGNEYXlzOkNULHV0Y1dlZWs6a1QsdXRjV2Vla3M6elQsdXRjU3VuZGF5OmtULHV0Y1N1bmRheXM6elQsdXRjTW9uZGF5OkxULHV0Y01vbmRheXM6RFQsdXRjVHVlc2RheTpQVCx1dGNUdWVzZGF5czpCVCx1dGNXZWRuZXNkYXk6TlQsdXRjV2VkbmVzZGF5czpIVCx1dGNUaHVyc2RheTpJVCx1dGNUaHVyc2RheXM6RlQsdXRjRnJpZGF5OlJULHV0Y0ZyaWRheXM6VlQsdXRjU2F0dXJkYXk6T1QsdXRjU2F0dXJkYXlzOlVULHV0Y01vbnRoOkdULHV0Y01vbnRoczpXVCx1dGNZZWFyOllULHV0Y1llYXJzOlhULHRpbWVGb3JtYXREZWZhdWx0TG9jYWxlOnhBLGdldCB0aW1lRm9ybWF0KCl7cmV0dXJuIHRDfSxnZXQgdGltZVBhcnNlKCl7cmV0dXJuIGVDfSxnZXQgdXRjRm9ybWF0KCl7cmV0dXJuIG5DfSxnZXQgdXRjUGFyc2UoKXtyZXR1cm4gaUN9LHRpbWVGb3JtYXRMb2NhbGU6SlQsaXNvRm9ybWF0OlNBLGlzb1BhcnNlOkVBLG5vdzpxcCx0aW1lcjokcCx0aW1lckZsdXNoOktwLHRpbWVvdXQ6dGYsaW50ZXJ2YWw6ZnVuY3Rpb24gY08odCxlLG4pe3ZhciBpPW5ldyBYcCxyPWU7cmV0dXJuIG51bGw9PWU/KGkucmVzdGFydCh0LGUsbiksaSk6KGU9K2Usbj1udWxsPT1uP3FwKCk6K24saS5yZXN0YXJ0KChmdW5jdGlvbiBvKGEpe2ErPXIsaS5yZXN0YXJ0KG8scis9ZSxuKSx0KGEpfSksZSxuKSxpKX0sdHJhbnNpdGlvbjpEZixhY3RpdmU6ZnVuY3Rpb24gdU8odCxlKXt2YXIgbixpLHI9dC5fX3RyYW5zaXRpb247aWYocilmb3IoaSBpbiBlPW51bGw9PWU/bnVsbDplKyIiLHIpaWYoKG49cltpXSkuc3RhdGU+MSYmbi5uYW1lPT09ZSlyZXR1cm4gbmV3IHpmKFtbdF1dLFdtLGUsK2kpO3JldHVybiBudWxsfSxpbnRlcnJ1cHQ6bGYsdm9yb25vaTpmdW5jdGlvbiBoTygpe3ZhciB0PWFOLGU9c04sbj1udWxsO2Z1bmN0aW9uIGkoaSl7cmV0dXJuIG5ldyBVTihpLm1hcCgoZnVuY3Rpb24obixyKXt2YXIgbz1bTWF0aC5yb3VuZCh0KG4scixpKS9CTikqQk4sTWF0aC5yb3VuZChlKG4scixpKS9CTikqQk5dO3JldHVybiBvLmluZGV4PXIsby5kYXRhPW4sb30pKSxuKX1yZXR1cm4gaS5wb2x5Z29ucz1mdW5jdGlvbih0KXtyZXR1cm4gaSh0KS5wb2x5Z29ucygpfSxpLmxpbmtzPWZ1bmN0aW9uKHQpe3JldHVybiBpKHQpLmxpbmtzKCl9LGkudHJpYW5nbGVzPWZ1bmN0aW9uKHQpe3JldHVybiBpKHQpLnRyaWFuZ2xlcygpfSxpLng9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZTpvTigrZSksaSk6dH0saS55PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6b04oK3QpLGkpOmV9LGkuZXh0ZW50PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPW51bGw9PXQ/bnVsbDpbWyt0WzBdWzBdLCt0WzBdWzFdXSxbK3RbMV1bMF0sK3RbMV1bMV1dXSxpKTpuJiZbW25bMF1bMF0sblswXVsxXV0sW25bMV1bMF0sblsxXVsxXV1dfSxpLnNpemU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49bnVsbD09dD9udWxsOltbMCwwXSxbK3RbMF0sK3RbMV1dXSxpKTpuJiZbblsxXVswXS1uWzBdWzBdLG5bMV1bMV0tblswXVsxXV19LGl9LHpvb206bkksem9vbVRyYW5zZm9ybTpZTix6b29tSWRlbnRpdHk6cU59KTtjbGFzcyBkTyBleHRlbmRzIGtse2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLl9leHBlcmltZW50cz1bXX1sb2FkKCl7Y29uc3QgdD1FcigpLmV4cGVyaW1lbnRzKCk7cmV0dXJuIHRoaXMucmVxdWVzdE1hbmFnZXIucmVxdWVzdCh0KS50aGVuKCh0PT57Q2UuZXhwb3J0cy5pc0VxdWFsKHRoaXMuX2V4cGVyaW1lbnRzLHQpfHwodGhpcy5fZXhwZXJpbWVudHM9dCx0aGlzLmVtaXRDaGFuZ2UoKSl9KSl9Z2V0RXhwZXJpbWVudHMoKXtyZXR1cm4gdGhpcy5fZXhwZXJpbWVudHMuc2xpY2UoKX19Y29uc3QgcE89bmV3IGRPLGZPPVsiI2ZmNzA0MyIsIiMwMDc3YmIiLCIjY2MzMzExIiwiIzMzYmJlZSIsIiNlZTMzNzciLCIjMDA5OTg4IiwiI2JiYmJiYiJdO2NsYXNzIG1Pe2NvbnN0cnVjdG9yKHQ9Zk8pe3RoaXMucGFsZXR0ZT10LHRoaXMuaWRlbnRpZmllcnM9amcoKX1zZXREb21haW4odCl7cmV0dXJuIHRoaXMuaWRlbnRpZmllcnM9amcoKSx0LmZvckVhY2goKCh0LGUpPT57dGhpcy5pZGVudGlmaWVycy5zZXQodCx0aGlzLnBhbGV0dGVbZSV0aGlzLnBhbGV0dGUubGVuZ3RoXSl9KSksdGhpc31nZXRDb2xvcih0KXtpZighdGhpcy5pZGVudGlmaWVycy5oYXModCkpdGhyb3cgbmV3IEVycm9yKGBTdHJpbmcgJHt0fSB3YXMgbm90IGluIHRoZSBkb21haW4uYCk7cmV0dXJuIHRoaXMuaWRlbnRpZmllcnMuZ2V0KHQpfX1mdW5jdGlvbiBnTyh0LGUpe2NvbnN0IG49bmV3IG1PO2Z1bmN0aW9uIGkoKXtuLnNldERvbWFpbihlKCkpfXJldHVybiB0LmFkZExpc3RlbmVyKGkpLGkoKSx0PT5uLmdldENvbG9yKHQpfWNvbnN0IF9PPWdPKElsLCgoKT0+SWwuZ2V0UnVucygpKSk7Z08ocE8sKCgpPT5wTy5nZXRFeHBlcmltZW50cygpLm1hcCgoKHtuYW1lOnR9KT0+dCkpKSksbWwoe21vZHVsZU5hbWU6InJ1bi1jb2xvci1zdHlsZSIsc3R5bGVDb250ZW50OiJcbiAgICBbY29sb3ItY2xhc3M9J2xpZ2h0LWJsdWUnXSBwYXBlci1jaGVja2JveCB7XG4gICAgICAtLXBhcGVyLWNoZWNrYm94LWNoZWNrZWQtY29sb3I6IHZhcigtLXBhcGVyLWxpZ2h0LWJsdWUtNTAwKTtcbiAgICAgIC0tcGFwZXItY2hlY2tib3gtY2hlY2tlZC1pbmstY29sb3I6IHZhcigtLXBhcGVyLWxpZ2h0LWJsdWUtNTAwKTtcbiAgICAgIC0tcGFwZXItY2hlY2tib3gtdW5jaGVja2VkLWNvbG9yOiB2YXIoLS1wYXBlci1saWdodC1ibHVlLTkwMCk7XG4gICAgICAtLXBhcGVyLWNoZWNrYm94LXVuY2hlY2tlZC1pbmstY29sb3I6IHZhcigtLXBhcGVyLWxpZ2h0LWJsdWUtOTAwKTtcbiAgICB9XG4gICAgW2NvbG9yLWNsYXNzPSdyZWQnXSBwYXBlci1jaGVja2JveCB7XG4gICAgICAtLXBhcGVyLWNoZWNrYm94LWNoZWNrZWQtY29sb3I6IHZhcigtLXBhcGVyLXJlZC01MDApO1xuICAgICAgLS1wYXBlci1jaGVja2JveC1jaGVja2VkLWluay1jb2xvcjogdmFyKC0tcGFwZXItcmVkLTUwMCk7XG4gICAgICAtLXBhcGVyLWNoZWNrYm94LXVuY2hlY2tlZC1jb2xvcjogdmFyKC0tcGFwZXItcmVkLTkwMCk7XG4gICAgICAtLXBhcGVyLWNoZWNrYm94LXVuY2hlY2tlZC1pbmstY29sb3I6IHZhcigtLXBhcGVyLXJlZC05MDApO1xuICAgIH1cbiAgICBbY29sb3ItY2xhc3M9J2dyZWVuJ10gcGFwZXItY2hlY2tib3gge1xuICAgICAgLS1wYXBlci1jaGVja2JveC1jaGVja2VkLWNvbG9yOiB2YXIoLS1wYXBlci1ncmVlbi01MDApO1xuICAgICAgLS1wYXBlci1jaGVja2JveC1jaGVja2VkLWluay1jb2xvcjogdmFyKC0tcGFwZXItZ3JlZW4tNTAwKTtcbiAgICAgIC0tcGFwZXItY2hlY2tib3gtdW5jaGVja2VkLWNvbG9yOiB2YXIoLS1wYXBlci1ncmVlbi05MDApO1xuICAgICAgLS1wYXBlci1jaGVja2JveC11bmNoZWNrZWQtaW5rLWNvbG9yOiB2YXIoLS1wYXBlci1ncmVlbi05MDApO1xuICAgIH1cbiAgICBbY29sb3ItY2xhc3M9J3B1cnBsZSddIHBhcGVyLWNoZWNrYm94IHtcbiAgICAgIC0tcGFwZXItY2hlY2tib3gtY2hlY2tlZC1jb2xvcjogdmFyKC0tcGFwZXItcHVycGxlLTUwMCk7XG4gICAgICAtLXBhcGVyLWNoZWNrYm94LWNoZWNrZWQtaW5rLWNvbG9yOiB2YXIoLS1wYXBlci1wdXJwbGUtNTAwKTtcbiAgICAgIC0tcGFwZXItY2hlY2tib3gtdW5jaGVja2VkLWNvbG9yOiB2YXIoLS1wYXBlci1wdXJwbGUtOTAwKTtcbiAgICAgIC0tcGFwZXItY2hlY2tib3gtdW5jaGVja2VkLWluay1jb2xvcjogdmFyKC0tcGFwZXItcHVycGxlLTkwMCk7XG4gICAgfVxuICAgIFtjb2xvci1jbGFzcz0ndGVhbCddIHBhcGVyLWNoZWNrYm94IHtcbiAgICAgIC0tcGFwZXItY2hlY2tib3gtY2hlY2tlZC1jb2xvcjogdmFyKC0tcGFwZXItdGVhbC01MDApO1xuICAgICAgLS1wYXBlci1jaGVja2JveC1jaGVja2VkLWluay1jb2xvcjogdmFyKC0tcGFwZXItdGVhbC01MDApO1xuICAgICAgLS1wYXBlci1jaGVja2JveC11bmNoZWNrZWQtY29sb3I6IHZhcigtLXBhcGVyLXRlYWwtOTAwKTtcbiAgICAgIC0tcGFwZXItY2hlY2tib3gtdW5jaGVja2VkLWluay1jb2xvcjogdmFyKC0tcGFwZXItdGVhbC05MDApO1xuICAgIH1cbiAgICBbY29sb3ItY2xhc3M9J3BpbmsnXSBwYXBlci1jaGVja2JveCB7XG4gICAgICAtLXBhcGVyLWNoZWNrYm94LWNoZWNrZWQtY29sb3I6IHZhcigtLXBhcGVyLXBpbmstNTAwKTtcbiAgICAgIC0tcGFwZXItY2hlY2tib3gtY2hlY2tlZC1pbmstY29sb3I6IHZhcigtLXBhcGVyLXBpbmstNTAwKTtcbiAgICAgIC0tcGFwZXItY2hlY2tib3gtdW5jaGVja2VkLWNvbG9yOiB2YXIoLS1wYXBlci1waW5rLTkwMCk7XG4gICAgICAtLXBhcGVyLWNoZWNrYm94LXVuY2hlY2tlZC1pbmstY29sb3I6IHZhcigtLXBhcGVyLXBpbmstOTAwKTtcbiAgICB9XG4gICAgW2NvbG9yLWNsYXNzPSdvcmFuZ2UnXSBwYXBlci1jaGVja2JveCB7XG4gICAgICAtLXBhcGVyLWNoZWNrYm94LWNoZWNrZWQtY29sb3I6IHZhcigtLXBhcGVyLW9yYW5nZS01MDApO1xuICAgICAgLS1wYXBlci1jaGVja2JveC1jaGVja2VkLWluay1jb2xvcjogdmFyKC0tcGFwZXItb3JhbmdlLTUwMCk7XG4gICAgICAtLXBhcGVyLWNoZWNrYm94LXVuY2hlY2tlZC1jb2xvcjogdmFyKC0tcGFwZXItb3JhbmdlLTkwMCk7XG4gICAgICAtLXBhcGVyLWNoZWNrYm94LXVuY2hlY2tlZC1pbmstY29sb3I6IHZhcigtLXBhcGVyLW9yYW5nZS05MDApO1xuICAgIH1cbiAgICBbY29sb3ItY2xhc3M9J2Jyb3duJ10gcGFwZXItY2hlY2tib3gge1xuICAgICAgLS1wYXBlci1jaGVja2JveC1jaGVja2VkLWNvbG9yOiB2YXIoLS1wYXBlci1icm93bi01MDApO1xuICAgICAgLS1wYXBlci1jaGVja2JveC1jaGVja2VkLWluay1jb2xvcjogdmFyKC0tcGFwZXItYnJvd24tNTAwKTtcbiAgICAgIC0tcGFwZXItY2hlY2tib3gtdW5jaGVja2VkLWNvbG9yOiB2YXIoLS1wYXBlci1icm93bi05MDApO1xuICAgICAgLS1wYXBlci1jaGVja2JveC11bmNoZWNrZWQtaW5rLWNvbG9yOiB2YXIoLS1wYXBlci1icm93bi05MDApO1xuICAgIH1cbiAgICBbY29sb3ItY2xhc3M9J2luZGlnbyddIHBhcGVyLWNoZWNrYm94IHtcbiAgICAgIC0tcGFwZXItY2hlY2tib3gtY2hlY2tlZC1jb2xvcjogdmFyKC0tcGFwZXItaW5kaWdvLTUwMCk7XG4gICAgICAtLXBhcGVyLWNoZWNrYm94LWNoZWNrZWQtaW5rLWNvbG9yOiB2YXIoLS1wYXBlci1pbmRpZ28tNTAwKTtcbiAgICAgIC0tcGFwZXItY2hlY2tib3gtdW5jaGVja2VkLWNvbG9yOiB2YXIoLS1wYXBlci1pbmRpZ28tOTAwKTtcbiAgICAgIC0tcGFwZXItY2hlY2tib3gtdW5jaGVja2VkLWluay1jb2xvcjogdmFyKC0tcGFwZXItaW5kaWdvLTkwMCk7XG4gICAgfVxuICAifSk7bGV0IHlPPWNsYXNzIGV4dGVuZHMoY3Iod2UpKXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5uYW1lcz1bXSx0aGlzLmNvbG9yaW5nPXtnZXRDb2xvcjooKT0+IiJ9LHRoaXMucmVnZXg9IiIsdGhpcy5zZWxlY3Rpb25TdGF0ZT17fSx0aGlzLm1heE5hbWVzVG9FbmFibGVCeURlZmF1bHQ9NDAsdGhpcy5fZGVib3VuY2VkUmVnZXhDaGFuZ2U9dGhpcy5fZGVib3VuY2VkUmVnZXhDaGFuZ2VJbXBsKCl9X2RlYm91bmNlZFJlZ2V4Q2hhbmdlSW1wbCgpe3ZhciB0PUNlLmV4cG9ydHMuZGVib3VuY2UoKHQ9Pnt0aGlzLnJlZ2V4PXR9KSwxNTAse2xlYWRpbmc6ITF9KTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT10aGlzLiQkKCIjbmFtZXMtcmVnZXgiKS52YWx1ZTsiIj09ZT90aGlzLmFzeW5jKCgoKT0+e3RoaXMucmVnZXg9ZX0pLDMwKTp0KGUpfX1nZXQgX3JlZ2V4KCl7dmFyIHQ9dGhpcy5yZWdleDt0cnl7cmV0dXJuIG5ldyBSZWdFeHAodCl9Y2F0Y2godCl7cmV0dXJuIG51bGx9fV9zZXRJc29sYXRvckljb24oKXt2YXIgdD10aGlzLnNlbGVjdGlvblN0YXRlLGU9Q2UuZXhwb3J0cy5maWx0ZXIoQ2UuZXhwb3J0cy52YWx1ZXModCkpLmxlbmd0aDtBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0aGlzLnJvb3QucXVlcnlTZWxlY3RvckFsbCgiLmlzb2xhdG9yIikpLmZvckVhY2goKGZ1bmN0aW9uKG4pe24uaWNvbj0xPT09ZSYmdFtuLm5hbWVdPyJyYWRpby1idXR0b24tY2hlY2tlZCI6InJhZGlvLWJ1dHRvbi11bmNoZWNrZWQifSkpfWNvbXB1dGVOYW1lc01hdGNoaW5nUmVnZXgodCxlKXtjb25zdCBuPXRoaXMuX3JlZ2V4O3JldHVybiBuP3RoaXMubmFtZXMuZmlsdGVyKCh0PT5uLnRlc3QodCkpKTp0aGlzLm5hbWVzfWNvbXB1dGVPdXRTZWxlY3RlZCh0LGUpe3ZhciBuPXRoaXMuc2VsZWN0aW9uU3RhdGUsaT10aGlzLm5hbWVzTWF0Y2hpbmdSZWdleC5sZW5ndGg8PXRoaXMubWF4TmFtZXNUb0VuYWJsZUJ5RGVmYXVsdDtyZXR1cm4gdGhpcy5uYW1lc01hdGNoaW5nUmVnZXguZmlsdGVyKCh0PT5udWxsPT1uW3RdP2k6blt0XSkpfXN5bmNocm9uaXplQ29sb3JzKHQpe3RoaXMuX3NldElzb2xhdG9ySWNvbigpO3RoaXMucm9vdC5xdWVyeVNlbGVjdG9yQWxsKCJwYXBlci1jaGVja2JveCIpLmZvckVhY2goKHQ9Pntjb25zdCBlPXRoaXMuY29sb3JpbmcuZ2V0Q29sb3IodC5uYW1lKTt0LnVwZGF0ZVN0eWxlcyh7Ii0tcGFwZXItY2hlY2tib3gtY2hlY2tlZC1jb2xvciI6ZSwiLS1wYXBlci1jaGVja2JveC1jaGVja2VkLWluay1jb2xvciI6ZSwiLS1wYXBlci1jaGVja2JveC11bmNoZWNrZWQtY29sb3IiOmUsIi0tcGFwZXItY2hlY2tib3gtdW5jaGVja2VkLWluay1jb2xvciI6ZX0pfSkpO3RoaXMucm9vdC5xdWVyeVNlbGVjdG9yQWxsKCIuaXNvbGF0b3IiKS5mb3JFYWNoKCh0PT57Y29uc3QgZT10aGlzLmNvbG9yaW5nLmdldENvbG9yKHQubmFtZSk7dC5zdHlsZS5jb2xvcj1lfSkpLHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCgpPT57dGhpcy51cGRhdGVTdHlsZXMoKX0pKX1faXNvbGF0ZU5hbWUodCl7dmFyIGU9dC50YXJnZXQubmFtZSxuPXt9O3RoaXMubmFtZXMuZm9yRWFjaCgoZnVuY3Rpb24odCl7blt0XT10PT1lfSkpLHRoaXMuc2VsZWN0aW9uU3RhdGU9bn1fY2hlY2tib3hDaGFuZ2UodCl7dmFyIGU9dC50YXJnZXQ7Y29uc3Qgbj1DZS5leHBvcnRzLmNsb25lKHRoaXMuc2VsZWN0aW9uU3RhdGUpO25bZS5uYW1lXT1lLmNoZWNrZWQsdGhpcy5zZWxlY3Rpb25TdGF0ZT1ufV9pc0NoZWNrZWQodCxlKXtyZXR1cm4tMSE9dGhpcy5vdXRTZWxlY3RlZC5pbmRleE9mKHQpfXRvZ2dsZUFsbCgpe2NvbnN0IHQ9dGhpcy5uYW1lc01hdGNoaW5nUmVnZXguc29tZSgodD0+dGhpcy5vdXRTZWxlY3RlZC5pbmNsdWRlcyh0KSkpLGU9e307dGhpcy5uYW1lcy5mb3JFYWNoKChuPT57ZVtuXT0hdH0pKSx0aGlzLnNlbGVjdGlvblN0YXRlPWV9fTt5Ty50ZW1wbGF0ZT14ZWAKICAgIDxzdHlsZSBpbmNsdWRlPSJzY3JvbGxiYXItc3R5bGUiPjwvc3R5bGU+CiAgICA8c3R5bGUgaW5jbHVkZT0icnVuLWNvbG9yLXN0eWxlIj48L3N0eWxlPgoKICAgIDxwYXBlci1pbnB1dAogICAgICBpZD0ibmFtZXMtcmVnZXgiCiAgICAgIG5vLWxhYmVsLWZsb2F0PSIiCiAgICAgIGxhYmVsPSJXcml0ZSBhIHJlZ2V4IHRvIGZpbHRlciBydW5zIgogICAgICB2YWx1ZT0iW1tyZWdleF1dIgogICAgICBvbi1iaW5kLXZhbHVlLWNoYW5nZWQ9Il9kZWJvdW5jZWRSZWdleENoYW5nZSIKICAgID48L3BhcGVyLWlucHV0PgogICAgPGRpdiBpZD0ib3V0ZXItY29udGFpbmVyIiBjbGFzcz0ic2Nyb2xsYmFyIj4KICAgICAgPHRlbXBsYXRlCiAgICAgICAgaXM9ImRvbS1yZXBlYXQiCiAgICAgICAgaXRlbXM9IltbbmFtZXNNYXRjaGluZ1JlZ2V4XV0iCiAgICAgICAgb24tZG9tLWNoYW5nZT0ic3luY2hyb25pemVDb2xvcnMiCiAgICAgID4KICAgICAgICA8ZGl2IGNsYXNzPSJuYW1lLXJvdyI+CiAgICAgICAgICA8ZGl2CiAgICAgICAgICAgIGNsYXNzPSJpY29uLWNvbnRhaW5lciBjaGVja2JveC1jb250YWluZXIgdmVydGljYWwtYWxpZ24tY29udGFpbmVyIgogICAgICAgICAgPgogICAgICAgICAgICA8cGFwZXItY2hlY2tib3gKICAgICAgICAgICAgICBjbGFzcz0iY2hlY2tib3ggdmVydGljYWwtYWxpZ24tY2VudGVyIgogICAgICAgICAgICAgIGlkJD0iY2hlY2tib3gtW1tpdGVtXV0iCiAgICAgICAgICAgICAgbmFtZT0iW1tpdGVtXV0iCiAgICAgICAgICAgICAgY2hlY2tlZCQ9IltbX2lzQ2hlY2tlZChpdGVtLCBzZWxlY3Rpb25TdGF0ZS4qKV1dIgogICAgICAgICAgICAgIG9uLWNoYW5nZT0iX2NoZWNrYm94Q2hhbmdlIgogICAgICAgICAgICA+PC9wYXBlci1jaGVja2JveD4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdgogICAgICAgICAgICBjbGFzcz0iaWNvbi1jb250YWluZXIgaXNvbGF0b3ItY29udGFpbmVyIHZlcnRpY2FsLWFsaWduLWNvbnRhaW5lciIKICAgICAgICAgID4KICAgICAgICAgICAgPHBhcGVyLWljb24tYnV0dG9uCiAgICAgICAgICAgICAgaWNvbj0icmFkaW8tYnV0dG9uLXVuY2hlY2tlZCIKICAgICAgICAgICAgICBjbGFzcz0iaXNvbGF0b3IgdmVydGljYWwtYWxpZ24tY2VudGVyIgogICAgICAgICAgICAgIG9uLXRhcD0iX2lzb2xhdGVOYW1lIgogICAgICAgICAgICAgIG5hbWU9IltbaXRlbV1dIgogICAgICAgICAgICA+PC9wYXBlci1pY29uLWJ1dHRvbj4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0iaXRlbS1sYWJlbC1jb250YWluZXIiPgogICAgICAgICAgICA8c3Bhbj5bW2l0ZW1dXTwvc3Bhbj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICA8L3RlbXBsYXRlPgogICAgPC9kaXY+CiAgICA8c3R5bGU+CiAgICAgIHBhcGVyLWlucHV0IHsKICAgICAgICAtLXBhcGVyLWlucHV0LWNvbnRhaW5lci1mb2N1cy1jb2xvcjogdmFyKC0tdGItb3JhbmdlLXN0cm9uZyk7CiAgICAgICAgLS1wYXBlci1pbnB1dC1jb250YWluZXItaW5wdXQ6IHsKICAgICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICB9CiAgICAgICAgLS1wYXBlci1pbnB1dC1jb250YWluZXItbGFiZWw6IHsKICAgICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICB9CiAgICAgIH0KICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgfQogICAgICAjb3V0ZXItY29udGFpbmVyIHsKICAgICAgICBjb250YWluOiBjb250ZW50OwogICAgICAgIGZsZXgtZ3JvdzogMTsKICAgICAgICBmbGV4LXNocmluazogMTsKICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CiAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICB3aWxsLWNoYW5nZTogdHJhbnNmb3JtOwogICAgICAgIHdvcmQtd3JhcDogYnJlYWstd29yZDsKICAgICAgfQogICAgICAubmFtZS1yb3cgewogICAgICAgIGNvbnRhaW46IGNvbnRlbnQ7CiAgICAgICAgcGFkZGluZy10b3A6IDVweDsKICAgICAgICBwYWRkaW5nLWJvdHRvbTogNXB4OwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdzsKICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgICAgd29yZC1icmVhazogYnJlYWstYWxsOyAvKiBtYWtlcyB3cmFwcGluZyBvZiBoeXBlcnBhcmFtIHN0cmluZ3MgYmV0dGVyICovCiAgICAgIH0KICAgICAgLmljb24tY29udGFpbmVyIHsKICAgICAgICBmbGV4LWdyb3c6IDA7CiAgICAgICAgZmxleC1zaHJpbms6IDA7CiAgICAgICAgcGFkZGluZy1sZWZ0OiAycHg7CiAgICAgIH0KICAgICAgLmNoZWNrYm94IHsKICAgICAgICBwYWRkaW5nLWxlZnQ6IDJweDsKICAgICAgICB3aWR0aDogMThweDsKICAgICAgICBoZWlnaHQ6IDE4cHg7CiAgICAgIH0KICAgICAgLmlzb2xhdG9yIHsKICAgICAgICB3aWR0aDogMThweDsKICAgICAgICBoZWlnaHQ6IDE4cHg7CiAgICAgICAgcGFkZGluZzogMHB4OwogICAgICB9CiAgICAgIC5pc29sYXRvci1jb250YWluZXIgewogICAgICAgIHBhZGRpbmctbGVmdDogNnB4OwogICAgICAgIHBhZGRpbmctcmlnaHQ6IDNweDsKICAgICAgfQogICAgICAuY2hlY2tib3gtY29udGFpbmVyIHsKICAgICAgICBwYWRkaW5nLWxlZnQ6IDJweDsKICAgICAgfQogICAgICAuaXRlbS1sYWJlbC1jb250YWluZXIgewogICAgICAgIHBhZGRpbmctbGVmdDogNXB4OwogICAgICAgIGZsZXgtZ3JvdzogMTsKICAgICAgICBmbGV4LXNocmluazogMTsKICAgICAgICB3aWR0aDogMHB4OyAvKiBoYWNrIHRvIGdldCB0aGUgZmxleC1ncm93IHRvIHdvcmsgcHJvcGVybHkgKi8KICAgICAgfQogICAgICAudG9vbHRpcC12YWx1ZS1jb250YWluZXIgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgZmxleC1ncm93OiAwOwogICAgICAgIGZsZXgtc2hyaW5rOiAwOwogICAgICAgIHRleHQtYWxpZ246IHJpZ2h0OwogICAgICAgIHBhZGRpbmctbGVmdDogMnB4OwogICAgICB9CiAgICAgIC52ZXJ0aWNhbC1hbGlnbi1jb250YWluZXIgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgIH0KICAgICAgLnZlcnRpY2FsLWFsaWduLWNvbnRhaW5lciAudmVydGljYWwtYWxpZ24tY2VudGVyIHsKICAgICAgICBhbGlnbi1zZWxmOiBjZW50ZXI7CiAgICAgIH0KICAgICAgLnZlcnRpY2FsLWFsaWduLWNvbnRhaW5lciAudmVydGljYWwtYWxpZ24tdG9wIHsKICAgICAgICBhbGlnbi1zZWxmOiBzdGFydDsKICAgICAgfQogICAgPC9zdHlsZT4KICBgLHQoW28oe3R5cGU6QXJyYXl9KSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpXSx5Ty5wcm90b3R5cGUsIm5hbWVzIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLHlPLnByb3RvdHlwZSwiY29sb3JpbmciLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmcsbm90aWZ5OiEwfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLHlPLnByb3RvdHlwZSwicmVnZXgiLHZvaWQgMCksdChbbyh7dHlwZTpBcnJheSxjb21wdXRlZDoiY29tcHV0ZU5hbWVzTWF0Y2hpbmdSZWdleChuYW1lcy4qLCBfcmVnZXgpIn0pLGUoImRlc2lnbjp0eXBlIixBcnJheSldLHlPLnByb3RvdHlwZSwibmFtZXNNYXRjaGluZ1JlZ2V4Iix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0LG5vdGlmeTohMH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSx5Ty5wcm90b3R5cGUsInNlbGVjdGlvblN0YXRlIix2b2lkIDApLHQoW28oe3R5cGU6QXJyYXksbm90aWZ5OiEwLGNvbXB1dGVkOiJjb21wdXRlT3V0U2VsZWN0ZWQobmFtZXNNYXRjaGluZ1JlZ2V4LiosIHNlbGVjdGlvblN0YXRlLiopIn0pLGUoImRlc2lnbjp0eXBlIixBcnJheSldLHlPLnByb3RvdHlwZSwib3V0U2VsZWN0ZWQiLHZvaWQgMCksdChbbyh7dHlwZTpOdW1iZXJ9KSxlKCJkZXNpZ246dHlwZSIsTnVtYmVyKV0seU8ucHJvdG90eXBlLCJtYXhOYW1lc1RvRW5hYmxlQnlEZWZhdWx0Iix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLHlPLnByb3RvdHlwZSwiX2RlYm91bmNlZFJlZ2V4Q2hhbmdlIix2b2lkIDApLHQoW3MoInJlZ2V4IiksZSgiZGVzaWduOnR5cGUiLFJlZ0V4cCksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0seU8ucHJvdG90eXBlLCJfcmVnZXgiLG51bGwpLHQoW2EoInNlbGVjdGlvblN0YXRlIiwibmFtZXMiKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLHlPLnByb3RvdHlwZSwiX3NldElzb2xhdG9ySWNvbiIsbnVsbCkseU89dChbaSgidGYtbXVsdGktY2hlY2tib3giKV0seU8pO2xldCB2Tz1jbGFzcyBleHRlbmRzIHdle2dldCBfcGFydHMoKXt2YXIgdD10aGlzLnZhbHVlLGU9dGhpcy5kZWxpbWl0ZXJQYXR0ZXJuO2NvbnN0IG49W107Zm9yKDs7KXtjb25zdCBpPW5ldyBSZWdFeHAoZSwiZyIpO2lmKGkudGVzdCh0KSwwPT09aS5sYXN0SW5kZXgpe24ucHVzaCh0KTticmVha31uLnB1c2godC5zbGljZSgwLGkubGFzdEluZGV4KSksdD10LnNsaWNlKGkubGFzdEluZGV4KX1yZXR1cm4gbn19O3ZPLnRlbXBsYXRlPXhlYAogICAgPCEtLQogICAgICBUaGlzIHVnbHkgZm9ybWF0dGluZyBpcyByZXF1aXJlZCB0byBwcmV2ZW50IHNwYWNlcyBmcm9tIHNsaXBwaW5nCiAgICAgIGludG8gdGhlIEhUTUwuCiAgICAtLT4KICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLXJlcGVhdCIgaXRlbXM9IltbX3BhcnRzXV0iIGFzPSJwYXJ0IgogICAgICA+W1twYXJ0XV08d2JyCiAgICAvPjwvdGVtcGxhdGU+CiAgYCx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSx2Ty5wcm90b3R5cGUsInZhbHVlIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLHZPLnByb3RvdHlwZSwiZGVsaW1pdGVyUGF0dGVybiIsdm9pZCAwKSx0KFtzKCJ2YWx1ZSIsImRlbGltaXRlclBhdHRlcm4iKSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSldLHZPLnByb3RvdHlwZSwiX3BhcnRzIixudWxsKSx2Tz10KFtpKCJ0Zi13YnItc3RyaW5nIildLHZPKTtsZXQgYk89Y2xhc3MgZXh0ZW5kcyhjcih3ZSkpe2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLnJ1blNlbGVjdGlvblN0YXRlPWNsKCJydW5TZWxlY3Rpb25TdGF0ZSIse2RlZmF1bHRWYWx1ZTp7fX0pLmNhbGwodGhpcyksdGhpcy5yZWdleElucHV0PVhzKCJyZWdleElucHV0Iix7ZGVmYXVsdFZhbHVlOiIifSkuY2FsbCh0aGlzKSx0aGlzLl9kYXRhTG9jYXRpb25DbGlwTGVuZ3RoPTI1MCx0aGlzLl9kYXRhTG9jYXRpb25EZWxpbWl0ZXJQYXR0ZXJuPSJbLz1fLC1dIix0aGlzLmNvbG9yaW5nPXtnZXRDb2xvcjpfT30sdGhpcy5fc3RvcmVSdW5TZWxlY3Rpb25TdGF0ZT11bCgicnVuU2VsZWN0aW9uU3RhdGUiLHtkZWZhdWx0VmFsdWU6e319KSx0aGlzLl9yZWdleE9ic2VydmVyPSRzKCJyZWdleElucHV0Iix7ZGVmYXVsdFZhbHVlOiIifSl9YXR0YWNoZWQoKXt0aGlzLl9ydW5TdG9yZUxpc3RlbmVyPUlsLmFkZExpc3RlbmVyKCgoKT0+e3RoaXMuc2V0KCJydW5zIixJbC5nZXRSdW5zKCkpfSkpLHRoaXMuc2V0KCJydW5zIixJbC5nZXRSdW5zKCkpLHRoaXMuX2VudlN0b3JlTGlzdGVuZXI9UGwuYWRkTGlzdGVuZXIoKCgpPT57dGhpcy5zZXQoImRhdGFMb2NhdGlvbiIsUGwuZ2V0RGF0YUxvY2F0aW9uKCkpfSkpLHRoaXMuc2V0KCJkYXRhTG9jYXRpb24iLFBsLmdldERhdGFMb2NhdGlvbigpKX1kZXRhY2hlZCgpe0lsLnJlbW92ZUxpc3RlbmVyQnlLZXkodGhpcy5fcnVuU3RvcmVMaXN0ZW5lciksUGwucmVtb3ZlTGlzdGVuZXJCeUtleSh0aGlzLl9lbnZTdG9yZUxpc3RlbmVyKX1fdG9nZ2xlQWxsKCl7dGhpcy4kLm11bHRpQ2hlY2tib3gudG9nZ2xlQWxsKCl9Z2V0IF9jbGlwcGVkRGF0YUxvY2F0aW9uKCl7dmFyIHQ9dGhpcy5kYXRhTG9jYXRpb24sZT10aGlzLl9kYXRhTG9jYXRpb25DbGlwTGVuZ3RoO2lmKHZvaWQgMCE9PXQpcmV0dXJuIHQubGVuZ3RoPmU/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+CiAgICA8L3RlbXBsYXRlPgogICAgPGRpdiBpZD0ibWFpbi1hdWRpby1jb250YWluZXIiPjwvZGl2PgoKICAgIDxzdHlsZSBpbmNsdWRlPSJ0Zi1jYXJkLWhlYWRpbmctc3R5bGUiPgogICAgICA6aG9zdCB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgd2lkdGg6IDM1MHB4OwogICAgICAgIGhlaWdodDogYXV0bzsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgLS1zdGVwLXNsaWRlci1rbm9iLWNvbG9yOiAjNDI0MjQyOwogICAgICAgIG1hcmdpbi1yaWdodDogMTVweDsKICAgICAgICBtYXJnaW4tYm90dG9tOiAxNXB4OwogICAgICB9CgogICAgICAjc3RlcHMgewogICAgICAgIGhlaWdodDogMTVweDsKICAgICAgICBtYXJnaW46IDAgMCAwIC0xNXB4OwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICAgICAgcGFkZGluZzogMCA1cHg7IC8qIHNvIHRoZSBzbGlkZXIga25vYiBkb2Vzbid0IGJ1dHQgb3V0ICovCiAgICAgICAgbWFyZ2luLXRvcDogNXB4OwogICAgICAgIC0tcGFwZXItc2xpZGVyLWFjdGl2ZS1jb2xvcjogdmFyKC0tc3RlcC1zbGlkZXIta25vYi1jb2xvcik7CiAgICAgICAgLS1wYXBlci1zbGlkZXIta25vYi1jb2xvcjogdmFyKC0tc3RlcC1zbGlkZXIta25vYi1jb2xvcik7CiAgICAgICAgLS1wYXBlci1zbGlkZXItcGluLWNvbG9yOiB2YXIoLS1zdGVwLXNsaWRlci1rbm9iLWNvbG9yKTsKICAgICAgICAtLXBhcGVyLXNsaWRlci1rbm9iLXN0YXJ0LWNvbG9yOiB2YXIoLS1zdGVwLXNsaWRlci1rbm9iLWNvbG9yKTsKICAgICAgICAtLXBhcGVyLXNsaWRlci1rbm9iLXN0YXJ0LWJvcmRlci1jb2xvcjogdmFyKC0tc3RlcC1zbGlkZXIta25vYi1jb2xvcik7CiAgICAgICAgLS1wYXBlci1zbGlkZXItcGluLXN0YXJ0LWNvbG9yOiB2YXIoLS1zdGVwLXNsaWRlci1rbm9iLWNvbG9yKTsKICAgICAgfQogICAgPC9zdHlsZT4KICBgLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLFRPLnByb3RvdHlwZSwicnVuIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLFRPLnByb3RvdHlwZSwidGFnIix2b2lkIDApLHQoW28oe3R5cGU6TnVtYmVyfSksZSgiZGVzaWduOnR5cGUiLE51bWJlcildLFRPLnByb3RvdHlwZSwic2FtcGxlIix2b2lkIDApLHQoW28oe3R5cGU6TnVtYmVyfSksZSgiZGVzaWduOnR5cGUiLE51bWJlcildLFRPLnByb3RvdHlwZSwidG90YWxTYW1wbGVzIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLFRPLnByb3RvdHlwZSwidGFnTWV0YWRhdGEiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsYnIpXSxUTy5wcm90b3R5cGUsInJlcXVlc3RNYW5hZ2VyIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLHhPKV0sVE8ucHJvdG90eXBlLCJfbWV0YWRhdGFDYW5jZWxsZXIiLHZvaWQgMCksdChbbyh7dHlwZTpBcnJheX0pLGUoImRlc2lnbjp0eXBlIixBcnJheSldLFRPLnByb3RvdHlwZSwiX3N0ZXBzIix2b2lkIDApLHQoW28oe3R5cGU6TnVtYmVyfSksZSgiZGVzaWduOnR5cGUiLE51bWJlcildLFRPLnByb3RvdHlwZSwiX3N0ZXBJbmRleCIsdm9pZCAwKSx0KFtzKCJydW4iKSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSxUTy5wcm90b3R5cGUsIl9ydW5Db2xvciIsbnVsbCksdChbcygiX3N0ZXBzIiksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSldLFRPLnByb3RvdHlwZSwiX2hhc0F0TGVhc3RPbmVTdGVwIixudWxsKSx0KFtzKCJfc3RlcHMiKSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sVE8ucHJvdG90eXBlLCJfaGFzTXVsdGlwbGVTdGVwcyIsbnVsbCksdChbcygiX3N0ZXBzIiksZSgiZGVzaWduOnR5cGUiLE51bWJlciksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sVE8ucHJvdG90eXBlLCJfbWF4U3RlcEluZGV4IixudWxsKSx0KFtzKCJfc3RlcHMiLCJfc3RlcEluZGV4IiksZSgiZGVzaWduOnR5cGUiLE9iamVjdCksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sVE8ucHJvdG90eXBlLCJfY3VycmVudERhdHVtIixudWxsKSx0KFtzKCJzYW1wbGUiKSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSxUTy5wcm90b3R5cGUsIl9zYW1wbGVUZXh0IixudWxsKSx0KFtzKCJ0b3RhbFNhbXBsZXMiKSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sVE8ucHJvdG90eXBlLCJfaGFzTXVsdGlwbGVTYW1wbGVzIixudWxsKSx0KFthKCJydW4iLCJ0YWciKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLFRPLnByb3RvdHlwZSwiX3JlbG9hZE9uUnVuVGFnQ2hhbmdlIixudWxsKSxUTz10KFtpKCJ0Zi1hdWRpby1sb2FkZXIiKV0sVE8pO2xldCBDTz1jbGFzcyBleHRlbmRzKGNyKHdlKSl7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMucmVsb2FkT25SZWFkeT0hMCx0aGlzLl90YWdGaWx0ZXI9IiIsdGhpcy5fcmVxdWVzdE1hbmFnZXI9bmV3IGJyfXJlYWR5KCl7c3VwZXIucmVhZHkoKSx0aGlzLnJlbG9hZE9uUmVhZHkmJnRoaXMucmVsb2FkKCl9cmVsb2FkKCl7dGhpcy5fZmV0Y2hUYWdzKCkudGhlbigoKCk9Pnt0aGlzLl9yZWxvYWRBdWRpbygpfSkpfV9mZXRjaFRhZ3MoKXtjb25zdCB0PUVyKCkucGx1Z2luUm91dGUoImF1ZGlvIiwiL3RhZ3MiKTtyZXR1cm4gdGhpcy5fcmVxdWVzdE1hbmFnZXIucmVxdWVzdCh0KS50aGVuKCh0PT57aWYoQ2UuZXhwb3J0cy5pc0VxdWFsKHQsdGhpcy5fcnVuVG9UYWdJbmZvKSlyZXR1cm47Y29uc3QgZT1mcihDZS5leHBvcnRzLm1hcFZhbHVlcyh0LCh0PT5PYmplY3Qua2V5cyh0KSkpKTt0aGlzLnNldCgiX2RhdGFOb3RGb3VuZCIsMD09PWUubGVuZ3RoKSx0aGlzLnNldCgiX3J1blRvVGFnSW5mbyIsdCl9KSl9X3JlbG9hZEF1ZGlvKCl7dGhpcy5yb290LnF1ZXJ5U2VsZWN0b3JBbGwoInRmLWF1ZGlvLWxvYWRlciIpLmZvckVhY2goKHQ9Pnt0LnJlbG9hZCgpfSkpfV9zaG91bGRPcGVuKHQpe3JldHVybiB0PD0yfWdldCBfY2F0ZWdvcmllcygpe3ZhciB0PXRoaXMuX3J1blRvVGFnSW5mbyxlPXRoaXMuX3NlbGVjdGVkUnVucyxuPXRoaXMuX3RhZ0ZpbHRlcjtmdW5jdGlvbiBpKGUpe2NvbnN0IG49dFtlLnJ1bl1bZS50YWddLnNhbXBsZXM7cmV0dXJuIENlLmV4cG9ydHMucmFuZ2UobikubWFwKCh0PT5PYmplY3QuYXNzaWduKHt9LGUse3NhbXBsZTp0LHRvdGFsU2FtcGxlczpufSkpKX1yZXR1cm4gSXIoQ2UuZXhwb3J0cy5tYXBWYWx1ZXModCwodD0+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+W1tuYW1lXV08L2gzPgogICAgICA8ZGl2IGNsYXNzPSJjb250ZW50LXdyYXBwZXIiPjxzbG90Pjwvc2xvdD48L2Rpdj4KICAgIDwvZGl2PgogICAgPHN0eWxlPgogICAgICAuY29udGVudC13cmFwcGVyIDo6c2xvdHRlZCgqKSB7CiAgICAgICAgYmFja2dyb3VuZDogbm9uZTsKICAgICAgICBjb2xvcjogdmFyKC0tdGItdWktZGFyay1hY2NlbnQpOwogICAgICAgIGZvbnQtc2l6ZTogMTNweDsKICAgICAgICBtYXJnaW4tdG9wOiAxMHB4OwogICAgICB9CgogICAgICAuY29udGVudC13cmFwcGVyIDo6c2xvdHRlZCgqKSB7CiAgICAgICAgYmFja2dyb3VuZDogbm9uZTsKICAgICAgICBjb2xvcjogdmFyKC0tdGItdWktZGFyay1hY2NlbnQpOwogICAgICAgIGZvbnQtc2l6ZTogMTNweDsKICAgICAgICBtYXJnaW4tdG9wOiAxMHB4OwogICAgICB9CgogICAgICAuY29udGVudC13cmFwcGVyIDo6c2xvdHRlZCguc2VsZWN0ZWQpIHsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS10Yi11aS1kYXJrLWFjY2VudCk7CiAgICAgICAgY29sb3I6IHdoaXRlICFpbXBvcnRhbnQ7CiAgICAgIH0KCiAgICAgIGgzIHsKICAgICAgICBjb2xvcjogdmFyKC0tdGItc2Vjb25kYXJ5LXRleHQtY29sb3IpOwogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBmb250LXdlaWdodDogbm9ybWFsOwogICAgICAgIG1hcmdpbjogMCAwIDVweDsKICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgfQogICAgPC9zdHlsZT4KICBgLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLEFPLnByb3RvdHlwZSwibmFtZSIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZyxub3RpZnk6ITAsb2JzZXJ2ZXI6Il9zZWxlY3RlZElkQ2hhbmdlZCJ9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sQU8ucHJvdG90eXBlLCJzZWxlY3RlZElkIix2b2lkIDApLEFPPXQoW2koInRmLW9wdGlvbi1zZWxlY3RvciIpXSxBTyk7bGV0IExPPWNsYXNzIGV4dGVuZHMgd2V7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMud2VpZ2h0PS42LHRoaXMuX3VwZGF0ZVdlaWdodD1DZS5leHBvcnRzLmRlYm91bmNlKChmdW5jdGlvbih0KXt0aGlzLndlaWdodD10fSksMjUwKX1faW1tZWRpYXRlV2VpZ2h0TnVtYmVyRm9yUGFwZXJTbGlkZXJDaGFuZ2VkKCl7dGhpcy5faW5wdXRXZWlnaHRTdHJpbmdGb3JQYXBlcklucHV0PXRoaXMuX2ltbWVkaWF0ZVdlaWdodE51bWJlckZvclBhcGVyU2xpZGVyLnRvU3RyaW5nKCksdGhpcy5fdXBkYXRlV2VpZ2h0LmNhbGwodGhpcyx0aGlzLl9pbW1lZGlhdGVXZWlnaHROdW1iZXJGb3JQYXBlclNsaWRlcil9X2lucHV0V2VpZ2h0U3RyaW5nRm9yUGFwZXJJbnB1dENoYW5nZWQoKXsrdGhpcy5faW5wdXRXZWlnaHRTdHJpbmdGb3JQYXBlcklucHV0PDA/dGhpcy5faW5wdXRXZWlnaHRTdHJpbmdGb3JQYXBlcklucHV0PSIwIjordGhpcy5faW5wdXRXZWlnaHRTdHJpbmdGb3JQYXBlcklucHV0PjEmJih0aGlzLl9pbnB1dFdlaWdodFN0cmluZ0ZvclBhcGVySW5wdXQ9IjEiKTt2YXIgdD0rdGhpcy5faW5wdXRXZWlnaHRTdHJpbmdGb3JQYXBlcklucHV0O2lzTmFOKHQpfHx0aGlzLl91cGRhdGVXZWlnaHQuY2FsbCh0aGlzLHQpfX07ZnVuY3Rpb24gUE8odCxlKXtjb25zdCBuPU9iamVjdC5rZXlzKGUpLnNvcnQoKS5maWx0ZXIoKHQ9PnZvaWQgMCE9PWVbdF0pKTtpZighbi5sZW5ndGgpcmV0dXJuIHQ7Y29uc3QgaT0tMSE9PXQuaW5kZXhPZigiPyIpPyImIjoiPyI7cmV0dXJuIHQraStbXS5jb25jYXQoLi4ubi5tYXAoKHQ9Pntjb25zdCBuPWVbdF07cmV0dXJuKEFycmF5LmlzQXJyYXkobik/bjpbbl0pLm1hcCgoZT0+YCR7dH09JHsoZnVuY3Rpb24gbih0KXtyZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KHQpLnJlcGxhY2UoL1woL2csIiUyOCIpLnJlcGxhY2UoL1wpL2csIiUyOSIpfSkoZSl9YCkpfSkpKS5qb2luKCImIil9TE8udGVtcGxhdGU9eGVgCiAgICA8aDMgY2xhc3M9InRpdGxlIj5TbW9vdGhpbmc8L2gzPgogICAgPGRpdiBjbGFzcz0ic21vb3RoaW5nLWJsb2NrIj4KICAgICAgPHBhcGVyLXNsaWRlcgogICAgICAgIGlkPSJzbGlkZXIiCiAgICAgICAgaW1tZWRpYXRlLXZhbHVlPSJ7e19pbW1lZGlhdGVXZWlnaHROdW1iZXJGb3JQYXBlclNsaWRlcn19IgogICAgICAgIG1heD0iW1ttYXhdXSIKICAgICAgICBtaW49IltbbWluXV0iCiAgICAgICAgcGluCiAgICAgICAgc3RlcD0iW1tzdGVwXV0iCiAgICAgICAgdHlwZT0ibnVtYmVyIgogICAgICAgIHZhbHVlPSJ7e3dlaWdodH19IgogICAgICA+PC9wYXBlci1zbGlkZXI+CiAgICAgIDxwYXBlci1pbnB1dAogICAgICAgIGlkPSJpbnB1dCIKICAgICAgICBsYWJlbD0id2VpZ2h0IgogICAgICAgIG5vLWxhYmVsLWZsb2F0CiAgICAgICAgdmFsdWU9Int7X2lucHV0V2VpZ2h0U3RyaW5nRm9yUGFwZXJJbnB1dH19IgogICAgICAgIHR5cGU9Im51bWJlciIKICAgICAgICBzdGVwPSJbW3N0ZXBdXSIKICAgICAgICBtaW49IltbbWluXV0iCiAgICAgICAgbWF4PSJbW21heF1dIgogICAgICA+PC9wYXBlci1pbnB1dD4KICAgIDwvZGl2PgogICAgPHN0eWxlPgogICAgICAudGl0bGUgewogICAgICAgIGNvbG9yOiB2YXIoLS10Yi1zZWNvbmRhcnktdGV4dC1jb2xvcik7CiAgICAgICAgbWFyZ2luOiAwOwogICAgICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIG1hcmdpbi1ib3R0b206IDVweDsKICAgICAgfQoKICAgICAgLnNtb290aGluZy1ibG9jayB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgfQoKICAgICAgcGFwZXItc2xpZGVyIHsKICAgICAgICAtLXBhcGVyLXNsaWRlci1hY3RpdmUtY29sb3I6IHZhcigtLXRiLW9yYW5nZS1zdHJvbmcpOwogICAgICAgIC0tcGFwZXItc2xpZGVyLWtub2ItY29sb3I6IHZhcigtLXRiLW9yYW5nZS1zdHJvbmcpOwogICAgICAgIC0tcGFwZXItc2xpZGVyLWtub2Itc3RhcnQtYm9yZGVyLWNvbG9yOiB2YXIoLS10Yi1vcmFuZ2Utc3Ryb25nKTsKICAgICAgICAtLXBhcGVyLXNsaWRlci1rbm9iLXN0YXJ0LWNvbG9yOiB2YXIoLS10Yi1vcmFuZ2Utc3Ryb25nKTsKICAgICAgICAtLXBhcGVyLXNsaWRlci1tYXJrZXJzLWNvbG9yOiB2YXIoLS10Yi1vcmFuZ2Utc3Ryb25nKTsKICAgICAgICAtLXBhcGVyLXNsaWRlci1waW4tY29sb3I6IHZhcigtLXRiLW9yYW5nZS1zdHJvbmcpOwogICAgICAgIC0tcGFwZXItc2xpZGVyLXBpbi1zdGFydC1jb2xvcjogdmFyKC0tdGItb3JhbmdlLXN0cm9uZyk7CiAgICAgICAgZmxleC1ncm93OiAyOwogICAgICB9CgogICAgICBwYXBlci1pbnB1dCB7CiAgICAgICAgLS1wYXBlci1pbnB1dC1jb250YWluZXItZm9jdXMtY29sb3I6IHZhcigtLXRiLW9yYW5nZS1zdHJvbmcpOwogICAgICAgIC0tcGFwZXItaW5wdXQtY29udGFpbmVyLWlucHV0OiB7CiAgICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgfQogICAgICAgIC0tcGFwZXItaW5wdXQtY29udGFpbmVyLWxhYmVsOiB7CiAgICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgfQogICAgICAgIHdpZHRoOiA2MHB4OwogICAgICB9CiAgICA8L3N0eWxlPgogIGAsdChbbyh7dHlwZTpOdW1iZXJ9KSxlKCJkZXNpZ246dHlwZSIsTnVtYmVyKV0sTE8ucHJvdG90eXBlLCJzdGVwIix2b2lkIDApLHQoW28oe3R5cGU6TnVtYmVyfSksZSgiZGVzaWduOnR5cGUiLE51bWJlcildLExPLnByb3RvdHlwZSwibWF4Iix2b2lkIDApLHQoW28oe3R5cGU6TnVtYmVyfSksZSgiZGVzaWduOnR5cGUiLE51bWJlcildLExPLnByb3RvdHlwZSwibWluIix2b2lkIDApLHQoW28oe3R5cGU6TnVtYmVyLG5vdGlmeTohMH0pLGUoImRlc2lnbjp0eXBlIixOdW1iZXIpXSxMTy5wcm90b3R5cGUsIndlaWdodCIsdm9pZCAwKSx0KFtvKHt0eXBlOk51bWJlcixub3RpZnk6ITAsb2JzZXJ2ZXI6Il9pbW1lZGlhdGVXZWlnaHROdW1iZXJGb3JQYXBlclNsaWRlckNoYW5nZWQifSksZSgiZGVzaWduOnR5cGUiLE51bWJlcildLExPLnByb3RvdHlwZSwiX2ltbWVkaWF0ZVdlaWdodE51bWJlckZvclBhcGVyU2xpZGVyIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nLG5vdGlmeTohMCxvYnNlcnZlcjoiX2lucHV0V2VpZ2h0U3RyaW5nRm9yUGFwZXJJbnB1dENoYW5nZWQifSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLExPLnByb3RvdHlwZSwiX2lucHV0V2VpZ2h0U3RyaW5nRm9yUGFwZXJJbnB1dCIsdm9pZCAwKSxMTz10KFtpKCJ0Zi1zbW9vdGhpbmctaW5wdXQiKV0sTE8pO3ZhciBOTz17fSxJTz1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZiBBcnJheSYmZnVuY3Rpb24odCxlKXt0Ll9fcHJvdG9fXz1lfXx8ZnVuY3Rpb24odCxlKXtmb3IodmFyIG4gaW4gZSllLmhhc093blByb3BlcnR5KG4pJiYodFtuXT1lW25dKX07Ci8qISAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAgQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlCiAgICB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZQogICAgTGljZW5zZSBhdCBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKCiAgICBUSElTIENPREUgSVMgUFJPVklERUQgT04gQU4gKkFTIElTKiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCiAgICBLSU5ELCBFSVRIRVIgRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgV0lUSE9VVCBMSU1JVEFUSU9OIEFOWSBJTVBMSUVECiAgICBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgVElUTEUsIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLAogICAgTUVSQ0hBTlRBQkxJVFkgT1IgTk9OLUlORlJJTkdFTUVOVC4KCiAgICBTZWUgdGhlIEFwYWNoZSBWZXJzaW9uIDIuMCBMaWNlbnNlIGZvciBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMKICAgIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovdmFyIFJPPU9iamVjdC5hc3NpZ258fGZ1bmN0aW9uIHQoZSl7Zm9yKHZhciBuLGk9MSxyPWFyZ3VtZW50cy5sZW5ndGg7aTxyO2krKylmb3IodmFyIG8gaW4gbj1hcmd1bWVudHNbaV0pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4sbykmJihlW29dPW5bb10pO3JldHVybiBlfTtmdW5jdGlvbiBPTyh0KXt2YXIgZT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZ0W1N5bWJvbC5pdGVyYXRvcl0sbj0wO3JldHVybiBlP2UuY2FsbCh0KTp7bmV4dDpmdW5jdGlvbigpe3JldHVybiB0JiZuPj10Lmxlbmd0aCYmKHQ9dm9pZCAwKSx7dmFsdWU6dCYmdFtuKytdLGRvbmU6IXR9fX19ZnVuY3Rpb24gek8odCxlKXt2YXIgbj0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZ0W1N5bWJvbC5pdGVyYXRvcl07aWYoIW4pcmV0dXJuIHQ7dmFyIGkscixvPW4uY2FsbCh0KSxhPVtdO3RyeXtmb3IoOyh2b2lkIDA9PT1lfHxlLS0gPjApJiYhKGk9by5uZXh0KCkpLmRvbmU7KWEucHVzaChpLnZhbHVlKX1jYXRjaCh0KXtyPXtlcnJvcjp0fX1maW5hbGx5e3RyeXtpJiYhaS5kb25lJiYobj1vLnJldHVybikmJm4uY2FsbChvKX1maW5hbGx5e2lmKHIpdGhyb3cgci5lcnJvcn19cmV0dXJuIGF9ZnVuY3Rpb24gRE8odCl7cmV0dXJuIHRoaXMgaW5zdGFuY2VvZiBETz8odGhpcy52PXQsdGhpcyk6bmV3IERPKHQpfXZhciBCTz1NZShPYmplY3QuZnJlZXplKHtfX3Byb3RvX186bnVsbCxfX2V4dGVuZHM6ZnVuY3Rpb24gSE8odCxlKXtmdW5jdGlvbiBuKCl7dGhpcy5jb25zdHJ1Y3Rvcj10fUlPKHQsZSksdC5wcm90b3R5cGU9bnVsbD09PWU/T2JqZWN0LmNyZWF0ZShlKToobi5wcm90b3R5cGU9ZS5wcm90b3R5cGUsbmV3IG4pfSxfX2Fzc2lnbjpSTyxfX3Jlc3Q6ZnVuY3Rpb24gRk8odCxlKXt2YXIgbj17fTtmb3IodmFyIGkgaW4gdClPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxpKSYmZS5pbmRleE9mKGkpPDAmJihuW2ldPXRbaV0pO2lmKG51bGwhPXQmJiJmdW5jdGlvbiI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj0wO2ZvcihpPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHModCk7cjxpLmxlbmd0aDtyKyspZS5pbmRleE9mKGlbcl0pPDAmJihuW2lbcl1dPXRbaVtyXV0pfXJldHVybiBufSxfX2RlY29yYXRlOmZ1bmN0aW9uIFZPKHQsZSxuLGkpe3ZhciByLG89YXJndW1lbnRzLmxlbmd0aCxhPW88Mz9lOm51bGw9PT1pP2k9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLG4pOmk7aWYoIm9iamVjdCI9PXR5cGVvZiBSZWZsZWN0JiYiZnVuY3Rpb24iPT10eXBlb2YgUmVmbGVjdC5kZWNvcmF0ZSlhPVJlZmxlY3QuZGVjb3JhdGUodCxlLG4saSk7ZWxzZSBmb3IodmFyIHM9dC5sZW5ndGgtMTtzPj0wO3MtLSkocj10W3NdKSYmKGE9KG88Mz9yKGEpOm8+Mz9yKGUsbixhKTpyKGUsbikpfHxhKTtyZXR1cm4gbz4zJiZhJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxuLGEpLGF9LF9fcGFyYW06ZnVuY3Rpb24gVU8odCxlKXtyZXR1cm4gZnVuY3Rpb24obixpKXtlKG4saSx0KX19LF9fbWV0YWRhdGE6ZnVuY3Rpb24gak8odCxlKXtpZigib2JqZWN0Ij09dHlwZW9mIFJlZmxlY3QmJiJmdW5jdGlvbiI9PXR5cGVvZiBSZWZsZWN0Lm1ldGFkYXRhKXJldHVybiBSZWZsZWN0Lm1ldGFkYXRhKHQsZSl9LF9fYXdhaXRlcjpmdW5jdGlvbiBHTyh0LGUsbixpKXtyZXR1cm4gbmV3KG58fChuPVByb21pc2UpKSgoZnVuY3Rpb24ocixvKXtmdW5jdGlvbiBhKHQpe3RyeXtsKGkubmV4dCh0KSl9Y2F0Y2godCl7byh0KX19ZnVuY3Rpb24gcyh0KXt0cnl7bChpLnRocm93KHQpKX1jYXRjaCh0KXtvKHQpfX1mdW5jdGlvbiBsKHQpe3QuZG9uZT9yKHQudmFsdWUpOm5ldyBuKChmdW5jdGlvbihlKXtlKHQudmFsdWUpfSkpLnRoZW4oYSxzKX1sKChpPWkuYXBwbHkodCxlfHxbXSkpLm5leHQoKSl9KSl9LF9fZ2VuZXJhdG9yOmZ1bmN0aW9uIFdPKHQsZSl7dmFyIG4saSxyLG8sYT17bGFiZWw6MCxzZW50OmZ1bmN0aW9uKCl7aWYoMSZyWzBdKXRocm93IHJbMV07cmV0dXJuIHJbMV19LHRyeXM6W10sb3BzOltdfTtyZXR1cm4gbz17bmV4dDpzKDApLHRocm93OnMoMSkscmV0dXJuOnMoMil9LCJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJihvW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pLG87ZnVuY3Rpb24gcyhvKXtyZXR1cm4gZnVuY3Rpb24ocyl7cmV0dXJuKGZ1bmN0aW9uIGwobyl7aWYobil0aHJvdyBuZXcgVHlwZUVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuIik7Zm9yKDthOyl0cnl7aWYobj0xLGkmJihyPWlbMiZvWzBdPyJyZXR1cm4iOm9bMF0/InRocm93IjoibmV4dCJdKSYmIShyPXIuY2FsbChpLG9bMV0pKS5kb25lKXJldHVybiByO3N3aXRjaChpPTAsciYmKG89WzAsci52YWx1ZV0pLG9bMF0pe2Nhc2UgMDpjYXNlIDE6cj1vO2JyZWFrO2Nhc2UgNDpyZXR1cm4gYS5sYWJlbCsrLHt2YWx1ZTpvWzFdLGRvbmU6ITF9O2Nhc2UgNTphLmxhYmVsKyssaT1vWzFdLG89WzBdO2NvbnRpbnVlO2Nhc2UgNzpvPWEub3BzLnBvcCgpLGEudHJ5cy5wb3AoKTtjb250aW51ZTtkZWZhdWx0OmlmKCEocj1hLnRyeXMsKHI9ci5sZW5ndGg+MCYmcltyLmxlbmd0aC0xXSl8fDYhPT1vWzBdJiYyIT09b1swXSkpe2E9MDtjb250aW51ZX1pZigzPT09b1swXSYmKCFyfHxvWzFdPnJbMF0mJm9bMV08clszXSkpe2EubGFiZWw9b1sxXTticmVha31pZig2PT09b1swXSYmYS5sYWJlbDxyWzFdKXthLmxhYmVsPXJbMV0scj1vO2JyZWFrfWlmKHImJmEubGFiZWw8clsyXSl7YS5sYWJlbD1yWzJdLGEub3BzLnB1c2gobyk7YnJlYWt9clsyXSYmYS5vcHMucG9wKCksYS50cnlzLnBvcCgpO2NvbnRpbnVlfW89ZS5jYWxsKHQsYSl9Y2F0Y2godCl7bz1bNix0XSxpPTB9ZmluYWxseXtuPXI9MH1pZig1Jm9bMF0pdGhyb3cgb1sxXTtyZXR1cm57dmFsdWU6b1swXT9vWzFdOnZvaWQgMCxkb25lOiEwfX0pKFtvLHNdKX19fSxfX2V4cG9ydFN0YXI6ZnVuY3Rpb24gcU8odCxlKXtmb3IodmFyIG4gaW4gdCllLmhhc093blByb3BlcnR5KG4pfHwoZVtuXT10W25dKX0sX192YWx1ZXM6T08sX19yZWFkOnpPLF9fc3ByZWFkOmZ1bmN0aW9uIFlPKCl7Zm9yKHZhciB0PVtdLGU9MDtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXQ9dC5jb25jYXQoek8oYXJndW1lbnRzW2VdKSk7cmV0dXJuIHR9LF9fYXdhaXQ6RE8sX19hc3luY0dlbmVyYXRvcjpmdW5jdGlvbiBYTyh0LGUsbil7aWYoIVN5bWJvbC5hc3luY0l0ZXJhdG9yKXRocm93IG5ldyBUeXBlRXJyb3IoIlN5bWJvbC5hc3luY0l0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLiIpO3ZhciBpLHI9bi5hcHBseSh0LGV8fFtdKSxvPVtdO3JldHVybiBpPXt9LGEoIm5leHQiKSxhKCJ0aHJvdyIpLGEoInJldHVybiIpLGlbU3ltYm9sLmFzeW5jSXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LGk7ZnVuY3Rpb24gYSh0KXtyW3RdJiYoaVt0XT1mdW5jdGlvbihlKXtyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKG4saSl7by5wdXNoKFt0LGUsbixpXSk+MXx8cyh0LGUpfSkpfSl9ZnVuY3Rpb24gcyh0LGUpe3RyeXshKGZ1bmN0aW9uIG4odCl7dC52YWx1ZSBpbnN0YW5jZW9mIERPP1Byb21pc2UucmVzb2x2ZSh0LnZhbHVlLnYpLnRoZW4obCxjKTp1KG9bMF1bMl0sdCl9KShyW3RdKGUpKX1jYXRjaCh0KXt1KG9bMF1bM10sdCl9fWZ1bmN0aW9uIGwodCl7cygibmV4dCIsdCl9ZnVuY3Rpb24gYyh0KXtzKCJ0aHJvdyIsdCl9ZnVuY3Rpb24gdSh0LGUpe3QoZSksby5zaGlmdCgpLG8ubGVuZ3RoJiZzKG9bMF1bMF0sb1swXVsxXSl9fSxfX2FzeW5jRGVsZWdhdG9yOmZ1bmN0aW9uICRPKHQpe3ZhciBlLG47cmV0dXJuIGU9e30saSgibmV4dCIpLGkoInRocm93IiwoZnVuY3Rpb24odCl7dGhyb3cgdH0pKSxpKCJyZXR1cm4iKSxlW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30sZTtmdW5jdGlvbiBpKGkscil7dFtpXSYmKGVbaV09ZnVuY3Rpb24oZSl7cmV0dXJuKG49IW4pP3t2YWx1ZTpETyh0W2ldKGUpKSxkb25lOiJyZXR1cm4iPT09aX06cj9yKGUpOmV9KX19LF9fYXN5bmNWYWx1ZXM6ZnVuY3Rpb24gS08odCl7aWYoIVN5bWJvbC5hc3luY0l0ZXJhdG9yKXRocm93IG5ldyBUeXBlRXJyb3IoIlN5bWJvbC5hc3luY0l0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLiIpO3ZhciBlPXRbU3ltYm9sLmFzeW5jSXRlcmF0b3JdO3JldHVybiBlP2UuY2FsbCh0KTpPTyh0KX0sX19tYWtlVGVtcGxhdGVPYmplY3Q6ZnVuY3Rpb24gWk8odCxlKXtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5P09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJyYXciLHt2YWx1ZTplfSk6dC5yYXc9ZSx0fX0pKTtmdW5jdGlvbiBKTyh0LGUpe3JldHVybiB0PGU/LTE6dD5lPzE6dD49ZT8wOk5hTn1mdW5jdGlvbiBRTyh0KXtyZXR1cm4gMT09PXQubGVuZ3RoJiYodD0oZnVuY3Rpb24gZSh0KXtyZXR1cm4gZnVuY3Rpb24oZSxuKXtyZXR1cm4gSk8odChlKSxuKX19KSh0KSkse2xlZnQ6ZnVuY3Rpb24oZSxuLGkscil7Zm9yKG51bGw9PWkmJihpPTApLG51bGw9PXImJihyPWUubGVuZ3RoKTtpPHI7KXt2YXIgbz1pK3I+Pj4xO3QoZVtvXSxuKTwwP2k9bysxOnI9b31yZXR1cm4gaX0scmlnaHQ6ZnVuY3Rpb24oZSxuLGkscil7Zm9yKG51bGw9PWkmJihpPTApLG51bGw9PXImJihyPWUubGVuZ3RoKTtpPHI7KXt2YXIgbz1pK3I+Pj4xO3QoZVtvXSxuKT4wP3I9bzppPW8rMX1yZXR1cm4gaX19fXZhciB0ej1RTyhKTyksZXo9dHoucmlnaHQsbno9dHoubGVmdDtmdW5jdGlvbiBpeih0LGUpe3JldHVyblt0LGVdfWZ1bmN0aW9uIHJ6KHQpe3JldHVybiBudWxsPT09dD9OYU46K3R9ZnVuY3Rpb24gb3oodCxlKXt2YXIgbixpLHI9dC5sZW5ndGgsbz0wLGE9LTEscz0wLGw9MDtpZihudWxsPT1lKWZvcig7KythPHI7KWlzTmFOKG49cnoodFthXSkpfHwobCs9KGk9bi1zKSoobi0ocys9aS8rK28pKSk7ZWxzZSBmb3IoOysrYTxyOylpc05hTihuPXJ6KGUodFthXSxhLHQpKSl8fChsKz0oaT1uLXMpKihuLShzKz1pLysrbykpKTtpZihvPjEpcmV0dXJuIGwvKG8tMSl9ZnVuY3Rpb24gYXoodCxlKXt2YXIgbj1veih0LGUpO3JldHVybiBuP01hdGguc3FydChuKTpufWZ1bmN0aW9uIHN6KHQsZSl7dmFyIG4saSxyLG89dC5sZW5ndGgsYT0tMTtpZihudWxsPT1lKXtmb3IoOysrYTxvOylpZihudWxsIT0obj10W2FdKSYmbj49bilmb3IoaT1yPW47KythPG87KW51bGwhPShuPXRbYV0pJiYoaT5uJiYoaT1uKSxyPG4mJihyPW4pKX1lbHNlIGZvcig7KythPG87KWlmKG51bGwhPShuPWUodFthXSxhLHQpKSYmbj49bilmb3IoaT1yPW47KythPG87KW51bGwhPShuPWUodFthXSxhLHQpKSYmKGk+biYmKGk9bikscjxuJiYocj1uKSk7cmV0dXJuW2kscl19dmFyIGx6PUFycmF5LnByb3RvdHlwZSxjej1sei5zbGljZSx1ej1sei5tYXA7ZnVuY3Rpb24gaHoodCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHR9fWZ1bmN0aW9uIGR6KHQpe3JldHVybiB0fWZ1bmN0aW9uIHB6KHQsZSxuKXt0PSt0LGU9K2Usbj0ocj1hcmd1bWVudHMubGVuZ3RoKTwyPyhlPXQsdD0wLDEpOnI8Mz8xOituO2Zvcih2YXIgaT0tMSxyPTB8TWF0aC5tYXgoMCxNYXRoLmNlaWwoKGUtdCkvbikpLG89bmV3IEFycmF5KHIpOysraTxyOylvW2ldPXQraSpuO3JldHVybiBvfXZhciBmej1NYXRoLnNxcnQoNTApLG16PU1hdGguc3FydCgxMCksZ3o9TWF0aC5zcXJ0KDIpO2Z1bmN0aW9uIF96KHQsZSxuKXt2YXIgaT0oZS10KS9NYXRoLm1heCgwLG4pLHI9TWF0aC5mbG9vcihNYXRoLmxvZyhpKS9NYXRoLkxOMTApLG89aS9NYXRoLnBvdygxMCxyKTtyZXR1cm4gcj49MD8obz49Zno/MTA6bz49bXo/NTpvPj1nej8yOjEpKk1hdGgucG93KDEwLHIpOi1NYXRoLnBvdygxMCwtcikvKG8+PWZ6PzEwOm8+PW16PzU6bz49Z3o/MjoxKX1mdW5jdGlvbiB5eih0LGUsbil7dmFyIGk9TWF0aC5hYnMoZS10KS9NYXRoLm1heCgwLG4pLHI9TWF0aC5wb3coMTAsTWF0aC5mbG9vcihNYXRoLmxvZyhpKS9NYXRoLkxOMTApKSxvPWkvcjtyZXR1cm4gbz49Zno/cio9MTA6bz49bXo/cio9NTpvPj1neiYmKHIqPTIpLGU8dD8tcjpyfWZ1bmN0aW9uIHZ6KHQpe3JldHVybiBNYXRoLmNlaWwoTWF0aC5sb2codC5sZW5ndGgpL01hdGguTE4yKSsxfWZ1bmN0aW9uIGJ6KHQsZSxuKXtpZihudWxsPT1uJiYobj1yeiksaT10Lmxlbmd0aCl7aWYoKGU9K2UpPD0wfHxpPDIpcmV0dXJuK24odFswXSwwLHQpO2lmKGU+PTEpcmV0dXJuK24odFtpLTFdLGktMSx0KTt2YXIgaSxyPShpLTEpKmUsbz1NYXRoLmZsb29yKHIpLGE9K24odFtvXSxvLHQpO3JldHVybiBhKygrbih0W28rMV0sbysxLHQpLWEpKihyLW8pfX1mdW5jdGlvbiB4eih0LGUpe3ZhciBuLGkscj10Lmxlbmd0aCxvPS0xO2lmKG51bGw9PWUpe2Zvcig7KytvPHI7KWlmKG51bGwhPShuPXRbb10pJiZuPj1uKWZvcihpPW47KytvPHI7KW51bGwhPShuPXRbb10pJiZpPm4mJihpPW4pfWVsc2UgZm9yKDsrK288cjspaWYobnVsbCE9KG49ZSh0W29dLG8sdCkpJiZuPj1uKWZvcihpPW47KytvPHI7KW51bGwhPShuPWUodFtvXSxvLHQpKSYmaT5uJiYoaT1uKTtyZXR1cm4gaX1mdW5jdGlvbiB3eih0KXtpZighKHI9dC5sZW5ndGgpKXJldHVybltdO2Zvcih2YXIgZT0tMSxuPXh6KHQsU3opLGk9bmV3IEFycmF5KG4pOysrZTxuOylmb3IodmFyIHIsbz0tMSxhPWlbZV09bmV3IEFycmF5KHIpOysrbzxyOylhW29dPXRbb11bZV07cmV0dXJuIGl9ZnVuY3Rpb24gU3oodCl7cmV0dXJuIHQubGVuZ3RofXZhciBNej1BcnJheS5wcm90b3R5cGUuc2xpY2U7ZnVuY3Rpb24gRXoodCl7cmV0dXJuIHR9dmFyIFR6PTFlLTY7ZnVuY3Rpb24gQ3oodCl7cmV0dXJuInRyYW5zbGF0ZSgiKyh0Ky41KSsiLDApIn1mdW5jdGlvbiBBeih0KXtyZXR1cm4idHJhbnNsYXRlKDAsIisodCsuNSkrIikifWZ1bmN0aW9uIGt6KHQpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4rdChlKX19ZnVuY3Rpb24gTHoodCl7dmFyIGU9TWF0aC5tYXgoMCx0LmJhbmR3aWR0aCgpLTEpLzI7cmV0dXJuIHQucm91bmQoKSYmKGU9TWF0aC5yb3VuZChlKSksZnVuY3Rpb24obil7cmV0dXJuK3QobikrZX19ZnVuY3Rpb24gUHooKXtyZXR1cm4hdGhpcy5fX2F4aXN9ZnVuY3Rpb24gTnoodCxlKXt2YXIgbj1bXSxpPW51bGwscj1udWxsLG89NixhPTYscz0zLGw9MT09PXR8fDQ9PT10Py0xOjEsYz00PT09dHx8Mj09PXQ/IngiOiJ5Iix1PTE9PT10fHwzPT09dD9DejpBejtmdW5jdGlvbiBoKGgpe3ZhciBkPW51bGw9PWk/ZS50aWNrcz9lLnRpY2tzLmFwcGx5KGUsbik6ZS5kb21haW4oKTppLHA9bnVsbD09cj9lLnRpY2tGb3JtYXQ/ZS50aWNrRm9ybWF0LmFwcGx5KGUsbik6RXo6cixmPU1hdGgubWF4KG8sMCkrcyxtPWUucmFuZ2UoKSxnPSttWzBdKy41LF89K21bbS5sZW5ndGgtMV0rLjUseT0oZS5iYW5kd2lkdGg/THo6a3opKGUuY29weSgpKSx2PWguc2VsZWN0aW9uP2guc2VsZWN0aW9uKCk6aCxiPXYuc2VsZWN0QWxsKCIuZG9tYWluIikuZGF0YShbbnVsbF0pLHg9di5zZWxlY3RBbGwoIi50aWNrIikuZGF0YShkLGUpLm9yZGVyKCksdz14LmV4aXQoKSxTPXguZW50ZXIoKS5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsInRpY2siKSxNPXguc2VsZWN0KCJsaW5lIiksRT14LnNlbGVjdCgidGV4dCIpO2I9Yi5tZXJnZShiLmVudGVyKCkuaW5zZXJ0KCJwYXRoIiwiLnRpY2siKS5hdHRyKCJjbGFzcyIsImRvbWFpbiIpLmF0dHIoInN0cm9rZSIsIiMwMDAiKSkseD14Lm1lcmdlKFMpLE09TS5tZXJnZShTLmFwcGVuZCgibGluZSIpLmF0dHIoInN0cm9rZSIsIiMwMDAiKS5hdHRyKGMrIjIiLGwqbykpLEU9RS5tZXJnZShTLmFwcGVuZCgidGV4dCIpLmF0dHIoImZpbGwiLCIjMDAwIikuYXR0cihjLGwqZikuYXR0cigiZHkiLDE9PT10PyIwZW0iOjM9PT10PyIwLjcxZW0iOiIwLjMyZW0iKSksaCE9PXYmJihiPWIudHJhbnNpdGlvbihoKSx4PXgudHJhbnNpdGlvbihoKSxNPU0udHJhbnNpdGlvbihoKSxFPUUudHJhbnNpdGlvbihoKSx3PXcudHJhbnNpdGlvbihoKS5hdHRyKCJvcGFjaXR5IixUeikuYXR0cigidHJhbnNmb3JtIiwoZnVuY3Rpb24odCl7cmV0dXJuIGlzRmluaXRlKHQ9eSh0KSk/dSh0KTp0aGlzLmdldEF0dHJpYnV0ZSgidHJhbnNmb3JtIil9KSksUy5hdHRyKCJvcGFjaXR5IixUeikuYXR0cigidHJhbnNmb3JtIiwoZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5wYXJlbnROb2RlLl9fYXhpcztyZXR1cm4gdShlJiZpc0Zpbml0ZShlPWUodCkpP2U6eSh0KSl9KSkpLHcucmVtb3ZlKCksYi5hdHRyKCJkIiw0PT09dHx8Mj09dD8iTSIrbCphKyIsIitnKyJIMC41ViIrXysiSCIrbCphOiJNIitnKyIsIitsKmErIlYwLjVIIitfKyJWIitsKmEpLHguYXR0cigib3BhY2l0eSIsMSkuYXR0cigidHJhbnNmb3JtIiwoZnVuY3Rpb24odCl7cmV0dXJuIHUoeSh0KSl9KSksTS5hdHRyKGMrIjIiLGwqbyksRS5hdHRyKGMsbCpmKS50ZXh0KHApLHYuZmlsdGVyKFB6KS5hdHRyKCJmaWxsIiwibm9uZSIpLmF0dHIoImZvbnQtc2l6ZSIsMTApLmF0dHIoImZvbnQtZmFtaWx5Iiwic2Fucy1zZXJpZiIpLmF0dHIoInRleHQtYW5jaG9yIiwyPT09dD8ic3RhcnQiOjQ9PT10PyJlbmQiOiJtaWRkbGUiKSx2LmVhY2goKGZ1bmN0aW9uKCl7dGhpcy5fX2F4aXM9eX0pKX1yZXR1cm4gaC5zY2FsZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT10LGgpOmV9LGgudGlja3M9ZnVuY3Rpb24oKXtyZXR1cm4gbj1Nei5jYWxsKGFyZ3VtZW50cyksaH0saC50aWNrQXJndW1lbnRzPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPW51bGw9PXQ/W106TXouY2FsbCh0KSxoKTpuLnNsaWNlKCl9LGgudGlja1ZhbHVlcz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT1udWxsPT10P251bGw6TXouY2FsbCh0KSxoKTppJiZpLnNsaWNlKCl9LGgudGlja0Zvcm1hdD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj10LGgpOnJ9LGgudGlja1NpemU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89YT0rdCxoKTpvfSxoLnRpY2tTaXplSW5uZXI9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89K3QsaCk6b30saC50aWNrU2l6ZU91dGVyPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPSt0LGgpOmF9LGgudGlja1BhZGRpbmc9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9K3QsaCk6c30saH12YXIgSXo9e3ZhbHVlOmZ1bmN0aW9uKCl7fX07ZnVuY3Rpb24gUnooKXtmb3IodmFyIHQsZT0wLG49YXJndW1lbnRzLmxlbmd0aCxpPXt9O2U8bjsrK2Upe2lmKCEodD1hcmd1bWVudHNbZV0rIiIpfHx0IGluIGl8fC9bXHMuXS8udGVzdCh0KSl0aHJvdyBuZXcgRXJyb3IoImlsbGVnYWwgdHlwZTogIit0KTtpW3RdPVtdfXJldHVybiBuZXcgT3ooaSl9ZnVuY3Rpb24gT3oodCl7dGhpcy5fPXR9ZnVuY3Rpb24genoodCxlKXtyZXR1cm4gdC50cmltKCkuc3BsaXQoL158XHMrLykubWFwKChmdW5jdGlvbih0KXt2YXIgbj0iIixpPXQuaW5kZXhPZigiLiIpO2lmKGk+PTAmJihuPXQuc2xpY2UoaSsxKSx0PXQuc2xpY2UoMCxpKSksdCYmIWUuaGFzT3duUHJvcGVydHkodCkpdGhyb3cgbmV3IEVycm9yKCJ1bmtub3duIHR5cGU6ICIrdCk7cmV0dXJue3R5cGU6dCxuYW1lOm59fSkpfWZ1bmN0aW9uIER6KHQsZSl7Zm9yKHZhciBuLGk9MCxyPXQubGVuZ3RoO2k8cjsrK2kpaWYoKG49dFtpXSkubmFtZT09PWUpcmV0dXJuIG4udmFsdWV9ZnVuY3Rpb24gQnoodCxlLG4pe2Zvcih2YXIgaT0wLHI9dC5sZW5ndGg7aTxyOysraSlpZih0W2ldLm5hbWU9PT1lKXt0W2ldPUl6LHQ9dC5zbGljZSgwLGkpLmNvbmNhdCh0LnNsaWNlKGkrMSkpO2JyZWFrfXJldHVybiBudWxsIT1uJiZ0LnB1c2goe25hbWU6ZSx2YWx1ZTpufSksdH1Pei5wcm90b3R5cGU9UnoucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpPeixvbjpmdW5jdGlvbih0LGUpe3ZhciBuLGk9dGhpcy5fLHI9enoodCsiIixpKSxvPS0xLGE9ci5sZW5ndGg7aWYoIShhcmd1bWVudHMubGVuZ3RoPDIpKXtpZihudWxsIT1lJiYiZnVuY3Rpb24iIT10eXBlb2YgZSl0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgY2FsbGJhY2s6ICIrZSk7Zm9yKDsrK288YTspaWYobj0odD1yW29dKS50eXBlKWlbbl09QnooaVtuXSx0Lm5hbWUsZSk7ZWxzZSBpZihudWxsPT1lKWZvcihuIGluIGkpaVtuXT1CeihpW25dLHQubmFtZSxudWxsKTtyZXR1cm4gdGhpc31mb3IoOysrbzxhOylpZigobj0odD1yW29dKS50eXBlKSYmKG49RHooaVtuXSx0Lm5hbWUpKSlyZXR1cm4gbn0sY29weTpmdW5jdGlvbigpe3ZhciB0PXt9LGU9dGhpcy5fO2Zvcih2YXIgbiBpbiBlKXRbbl09ZVtuXS5zbGljZSgpO3JldHVybiBuZXcgT3oodCl9LGNhbGw6ZnVuY3Rpb24odCxlKXtpZigobj1hcmd1bWVudHMubGVuZ3RoLTIpPjApZm9yKHZhciBuLGkscj1uZXcgQXJyYXkobiksbz0wO288bjsrK28pcltvXT1hcmd1bWVudHNbbysyXTtpZighdGhpcy5fLmhhc093blByb3BlcnR5KHQpKXRocm93IG5ldyBFcnJvcigidW5rbm93biB0eXBlOiAiK3QpO2ZvcihvPTAsbj0oaT10aGlzLl9bdF0pLmxlbmd0aDtvPG47KytvKWlbb10udmFsdWUuYXBwbHkoZSxyKX0sYXBwbHk6ZnVuY3Rpb24odCxlLG4pe2lmKCF0aGlzLl8uaGFzT3duUHJvcGVydHkodCkpdGhyb3cgbmV3IEVycm9yKCJ1bmtub3duIHR5cGU6ICIrdCk7Zm9yKHZhciBpPXRoaXMuX1t0XSxyPTAsbz1pLmxlbmd0aDtyPG87KytyKWlbcl0udmFsdWUuYXBwbHkoZSxuKX19O3ZhciBIej0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIsRno9e3N2ZzoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLHhodG1sOkh6LHhsaW5rOiJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIix4bWw6Imh0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZSIseG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAveG1sbnMvIn07ZnVuY3Rpb24gVnoodCl7dmFyIGU9dCs9IiIsbj1lLmluZGV4T2YoIjoiKTtyZXR1cm4gbj49MCYmInhtbG5zIiE9PShlPXQuc2xpY2UoMCxuKSkmJih0PXQuc2xpY2UobisxKSksRnouaGFzT3duUHJvcGVydHkoZSk/e3NwYWNlOkZ6W2VdLGxvY2FsOnR9OnR9ZnVuY3Rpb24gVXoodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5vd25lckRvY3VtZW50LG49dGhpcy5uYW1lc3BhY2VVUkk7cmV0dXJuIG49PT1IeiYmZS5kb2N1bWVudEVsZW1lbnQubmFtZXNwYWNlVVJJPT09SHo/ZS5jcmVhdGVFbGVtZW50KHQpOmUuY3JlYXRlRWxlbWVudE5TKG4sdCl9fWZ1bmN0aW9uIGp6KHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0aGlzLm93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKHQuc3BhY2UsdC5sb2NhbCl9fWZ1bmN0aW9uIEd6KHQpe3ZhciBlPVZ6KHQpO3JldHVybihlLmxvY2FsP2p6OlV6KShlKX1mdW5jdGlvbiBXeigpe31mdW5jdGlvbiBxeih0KXtyZXR1cm4gbnVsbD09dD9XejpmdW5jdGlvbigpe3JldHVybiB0aGlzLnF1ZXJ5U2VsZWN0b3IodCl9fWZ1bmN0aW9uIFl6KCl7cmV0dXJuW119ZnVuY3Rpb24gWHoodCl7cmV0dXJuIG51bGw9PXQ/WXo6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5xdWVyeVNlbGVjdG9yQWxsKHQpfX1mdW5jdGlvbiAkeih0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tYXRjaGVzKHQpfX1mdW5jdGlvbiBLeih0KXtyZXR1cm4gbmV3IEFycmF5KHQubGVuZ3RoKX1mdW5jdGlvbiBaeih0LGUpe3RoaXMub3duZXJEb2N1bWVudD10Lm93bmVyRG9jdW1lbnQsdGhpcy5uYW1lc3BhY2VVUkk9dC5uYW1lc3BhY2VVUkksdGhpcy5fbmV4dD1udWxsLHRoaXMuX3BhcmVudD10LHRoaXMuX19kYXRhX189ZX1aei5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOlp6LGFwcGVuZENoaWxkOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9wYXJlbnQuaW5zZXJ0QmVmb3JlKHQsdGhpcy5fbmV4dCl9LGluc2VydEJlZm9yZTpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLl9wYXJlbnQuaW5zZXJ0QmVmb3JlKHQsZSl9LHF1ZXJ5U2VsZWN0b3I6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3BhcmVudC5xdWVyeVNlbGVjdG9yKHQpfSxxdWVyeVNlbGVjdG9yQWxsOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9wYXJlbnQucXVlcnlTZWxlY3RvckFsbCh0KX19O2Z1bmN0aW9uIEp6KHQsZSxuLGkscixvKXtmb3IodmFyIGEscz0wLGw9ZS5sZW5ndGgsYz1vLmxlbmd0aDtzPGM7KytzKShhPWVbc10pPyhhLl9fZGF0YV9fPW9bc10saVtzXT1hKTpuW3NdPW5ldyBaeih0LG9bc10pO2Zvcig7czxsOysrcykoYT1lW3NdKSYmKHJbc109YSl9ZnVuY3Rpb24gUXoodCxlLG4saSxyLG8sYSl7dmFyIHMsbCxjLHU9e30saD1lLmxlbmd0aCxkPW8ubGVuZ3RoLHA9bmV3IEFycmF5KGgpO2ZvcihzPTA7czxoOysrcykobD1lW3NdKSYmKHBbc109Yz0iJCIrYS5jYWxsKGwsbC5fX2RhdGFfXyxzLGUpLGMgaW4gdT9yW3NdPWw6dVtjXT1sKTtmb3Iocz0wO3M8ZDsrK3MpKGw9dVtjPSIkIithLmNhbGwodCxvW3NdLHMsbyldKT8oaVtzXT1sLGwuX19kYXRhX189b1tzXSx1W2NdPW51bGwpOm5bc109bmV3IFp6KHQsb1tzXSk7Zm9yKHM9MDtzPGg7KytzKShsPWVbc10pJiZ1W3Bbc11dPT09bCYmKHJbc109bCl9ZnVuY3Rpb24gdEQodCxlKXtyZXR1cm4gdDxlPy0xOnQ+ZT8xOnQ+PWU/MDpOYU59ZnVuY3Rpb24gZUQodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5yZW1vdmVBdHRyaWJ1dGUodCl9fWZ1bmN0aW9uIG5EKHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMucmVtb3ZlQXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsKX19ZnVuY3Rpb24gaUQodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnNldEF0dHJpYnV0ZSh0LGUpfX1mdW5jdGlvbiByRCh0LGUpe3JldHVybiBmdW5jdGlvbigpe3RoaXMuc2V0QXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsLGUpfX1mdW5jdGlvbiBvRCh0LGUpe3JldHVybiBmdW5jdGlvbigpe3ZhciBuPWUuYXBwbHkodGhpcyxhcmd1bWVudHMpO251bGw9PW4/dGhpcy5yZW1vdmVBdHRyaWJ1dGUodCk6dGhpcy5zZXRBdHRyaWJ1dGUodCxuKX19ZnVuY3Rpb24gYUQodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbj1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtudWxsPT1uP3RoaXMucmVtb3ZlQXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsKTp0aGlzLnNldEF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCxuKX19ZnVuY3Rpb24gc0QodCl7cmV0dXJuIHQub3duZXJEb2N1bWVudCYmdC5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3fHx0LmRvY3VtZW50JiZ0fHx0LmRlZmF1bHRWaWV3fWZ1bmN0aW9uIGxEKHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMuc3R5bGUucmVtb3ZlUHJvcGVydHkodCl9fWZ1bmN0aW9uIGNEKHQsZSxuKXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnN0eWxlLnNldFByb3BlcnR5KHQsZSxuKX19ZnVuY3Rpb24gdUQodCxlLG4pe3JldHVybiBmdW5jdGlvbigpe3ZhciBpPWUuYXBwbHkodGhpcyxhcmd1bWVudHMpO251bGw9PWk/dGhpcy5zdHlsZS5yZW1vdmVQcm9wZXJ0eSh0KTp0aGlzLnN0eWxlLnNldFByb3BlcnR5KHQsaSxuKX19ZnVuY3Rpb24gaEQodCxlKXtyZXR1cm4gdC5zdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKGUpfHxzRCh0KS5nZXRDb21wdXRlZFN0eWxlKHQsbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZShlKX1mdW5jdGlvbiBkRCh0KXtyZXR1cm4gZnVuY3Rpb24oKXtkZWxldGUgdGhpc1t0XX19ZnVuY3Rpb24gcEQodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzW3RdPWV9fWZ1bmN0aW9uIGZEKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG49ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7bnVsbD09bj9kZWxldGUgdGhpc1t0XTp0aGlzW3RdPW59fWZ1bmN0aW9uIG1EKHQpe3JldHVybiB0LnRyaW0oKS5zcGxpdCgvXnxccysvKX1mdW5jdGlvbiBnRCh0KXtyZXR1cm4gdC5jbGFzc0xpc3R8fG5ldyBfRCh0KX1mdW5jdGlvbiBfRCh0KXt0aGlzLl9ub2RlPXQsdGhpcy5fbmFtZXM9bUQodC5nZXRBdHRyaWJ1dGUoImNsYXNzIil8fCIiKX1mdW5jdGlvbiB5RCh0LGUpe2Zvcih2YXIgbj1nRCh0KSxpPS0xLHI9ZS5sZW5ndGg7KytpPHI7KW4uYWRkKGVbaV0pfWZ1bmN0aW9uIHZEKHQsZSl7Zm9yKHZhciBuPWdEKHQpLGk9LTEscj1lLmxlbmd0aDsrK2k8cjspbi5yZW1vdmUoZVtpXSl9ZnVuY3Rpb24gYkQodCl7cmV0dXJuIGZ1bmN0aW9uKCl7eUQodGhpcyx0KX19ZnVuY3Rpb24geEQodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dkQodGhpcyx0KX19ZnVuY3Rpb24gd0QodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXsoZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk/eUQ6dkQpKHRoaXMsdCl9fWZ1bmN0aW9uIFNEKCl7dGhpcy50ZXh0Q29udGVudD0iIn1mdW5jdGlvbiBNRCh0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnRleHRDb250ZW50PXR9fWZ1bmN0aW9uIEVEKHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciBlPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpO3RoaXMudGV4dENvbnRlbnQ9bnVsbD09ZT8iIjplfX1mdW5jdGlvbiBURCgpe3RoaXMuaW5uZXJIVE1MPSIifWZ1bmN0aW9uIENEKHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMuaW5uZXJIVE1MPXR9fWZ1bmN0aW9uIEFEKHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciBlPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpO3RoaXMuaW5uZXJIVE1MPW51bGw9PWU/IiI6ZX19ZnVuY3Rpb24ga0QoKXt0aGlzLm5leHRTaWJsaW5nJiZ0aGlzLnBhcmVudE5vZGUuYXBwZW5kQ2hpbGQodGhpcyl9ZnVuY3Rpb24gTEQoKXt0aGlzLnByZXZpb3VzU2libGluZyYmdGhpcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZSh0aGlzLHRoaXMucGFyZW50Tm9kZS5maXJzdENoaWxkKX1mdW5jdGlvbiBQRCgpe3JldHVybiBudWxsfWZ1bmN0aW9uIE5EKCl7dmFyIHQ9dGhpcy5wYXJlbnROb2RlO3QmJnQucmVtb3ZlQ2hpbGQodGhpcyl9ZnVuY3Rpb24gSUQoKXt2YXIgdD10aGlzLmNsb25lTm9kZSghMSksZT10aGlzLnBhcmVudE5vZGU7cmV0dXJuIGU/ZS5pbnNlcnRCZWZvcmUodCx0aGlzLm5leHRTaWJsaW5nKTp0fWZ1bmN0aW9uIFJEKCl7dmFyIHQ9dGhpcy5jbG9uZU5vZGUoITApLGU9dGhpcy5wYXJlbnROb2RlO3JldHVybiBlP2UuaW5zZXJ0QmVmb3JlKHQsdGhpcy5uZXh0U2libGluZyk6dH1fRC5wcm90b3R5cGU9e2FkZDpmdW5jdGlvbih0KXt0aGlzLl9uYW1lcy5pbmRleE9mKHQpPDAmJih0aGlzLl9uYW1lcy5wdXNoKHQpLHRoaXMuX25vZGUuc2V0QXR0cmlidXRlKCJjbGFzcyIsdGhpcy5fbmFtZXMuam9pbigiICIpKSl9LHJlbW92ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLl9uYW1lcy5pbmRleE9mKHQpO2U+PTAmJih0aGlzLl9uYW1lcy5zcGxpY2UoZSwxKSx0aGlzLl9ub2RlLnNldEF0dHJpYnV0ZSgiY2xhc3MiLHRoaXMuX25hbWVzLmpvaW4oIiAiKSkpfSxjb250YWluczpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fbmFtZXMuaW5kZXhPZih0KT49MH19O3ZhciBPRD17fSx6RD1udWxsOyJ1bmRlZmluZWQiIT10eXBlb2YgZG9jdW1lbnQmJigib25tb3VzZWVudGVyImluIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudHx8KE9EPXttb3VzZWVudGVyOiJtb3VzZW92ZXIiLG1vdXNlbGVhdmU6Im1vdXNlb3V0In0pKTtmdW5jdGlvbiBERCh0LGUsbil7cmV0dXJuIHQ9QkQodCxlLG4pLGZ1bmN0aW9uKGUpe3ZhciBuPWUucmVsYXRlZFRhcmdldDtuJiYobj09PXRoaXN8fDgmbi5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbih0aGlzKSl8fHQuY2FsbCh0aGlzLGUpfX1mdW5jdGlvbiBCRCh0LGUsbil7cmV0dXJuIGZ1bmN0aW9uKGkpe3ZhciByPXpEO3pEPWk7dHJ5e3QuY2FsbCh0aGlzLHRoaXMuX19kYXRhX18sZSxuKX1maW5hbGx5e3pEPXJ9fX1mdW5jdGlvbiBIRCh0KXtyZXR1cm4gdC50cmltKCkuc3BsaXQoL158XHMrLykubWFwKChmdW5jdGlvbih0KXt2YXIgZT0iIixuPXQuaW5kZXhPZigiLiIpO3JldHVybiBuPj0wJiYoZT10LnNsaWNlKG4rMSksdD10LnNsaWNlKDAsbikpLHt0eXBlOnQsbmFtZTplfX0pKX1mdW5jdGlvbiBGRCh0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT10aGlzLl9fb247aWYoZSl7Zm9yKHZhciBuLGk9MCxyPS0xLG89ZS5sZW5ndGg7aTxvOysraSluPWVbaV0sdC50eXBlJiZuLnR5cGUhPT10LnR5cGV8fG4ubmFtZSE9PXQubmFtZT9lWysrcl09bjp0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIobi50eXBlLG4ubGlzdGVuZXIsbi5jYXB0dXJlKTsrK3I/ZS5sZW5ndGg9cjpkZWxldGUgdGhpcy5fX29ufX19ZnVuY3Rpb24gVkQodCxlLG4pe3ZhciBpPU9ELmhhc093blByb3BlcnR5KHQudHlwZSk/REQ6QkQ7cmV0dXJuIGZ1bmN0aW9uKHIsbyxhKXt2YXIgcyxsPXRoaXMuX19vbixjPWkoZSxvLGEpO2lmKGwpZm9yKHZhciB1PTAsaD1sLmxlbmd0aDt1PGg7Kyt1KWlmKChzPWxbdV0pLnR5cGU9PT10LnR5cGUmJnMubmFtZT09PXQubmFtZSlyZXR1cm4gdGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKHMudHlwZSxzLmxpc3RlbmVyLHMuY2FwdHVyZSksdGhpcy5hZGRFdmVudExpc3RlbmVyKHMudHlwZSxzLmxpc3RlbmVyPWMscy5jYXB0dXJlPW4pLHZvaWQocy52YWx1ZT1lKTt0aGlzLmFkZEV2ZW50TGlzdGVuZXIodC50eXBlLGMsbikscz17dHlwZTp0LnR5cGUsbmFtZTp0Lm5hbWUsdmFsdWU6ZSxsaXN0ZW5lcjpjLGNhcHR1cmU6bn0sbD9sLnB1c2gocyk6dGhpcy5fX29uPVtzXX19ZnVuY3Rpb24gVUQodCxlLG4pe3ZhciBpPXNEKHQpLHI9aS5DdXN0b21FdmVudDsiZnVuY3Rpb24iPT10eXBlb2Ygcj9yPW5ldyByKGUsbik6KHI9aS5kb2N1bWVudC5jcmVhdGVFdmVudCgiRXZlbnQiKSxuPyhyLmluaXRFdmVudChlLG4uYnViYmxlcyxuLmNhbmNlbGFibGUpLHIuZGV0YWlsPW4uZGV0YWlsKTpyLmluaXRFdmVudChlLCExLCExKSksdC5kaXNwYXRjaEV2ZW50KHIpfWZ1bmN0aW9uIGpEKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIFVEKHRoaXMsdCxlKX19ZnVuY3Rpb24gR0QodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gVUQodGhpcyx0LGUuYXBwbHkodGhpcyxhcmd1bWVudHMpKX19dmFyIFdEPVtudWxsXTtmdW5jdGlvbiBxRCh0LGUpe3RoaXMuX2dyb3Vwcz10LHRoaXMuX3BhcmVudHM9ZX1mdW5jdGlvbiBZRCgpe3JldHVybiBuZXcgcUQoW1tkb2N1bWVudC5kb2N1bWVudEVsZW1lbnRdXSxXRCl9ZnVuY3Rpb24gWEQodCl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0P25ldyBxRChbW2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3IodCldXSxbZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50XSk6bmV3IHFEKFtbdF1dLFdEKX1mdW5jdGlvbiAkRCh0KXt2YXIgZT0oZnVuY3Rpb24gbigpe2Zvcih2YXIgdCxlPXpEO3Q9ZS5zb3VyY2VFdmVudDspZT10O3JldHVybiBlfSkoKTtyZXR1cm4gZS5jaGFuZ2VkVG91Y2hlcyYmKGU9ZS5jaGFuZ2VkVG91Y2hlc1swXSksKGZ1bmN0aW9uIGkodCxlKXt2YXIgbj10Lm93bmVyU1ZHRWxlbWVudHx8dDtpZihuLmNyZWF0ZVNWR1BvaW50KXt2YXIgaT1uLmNyZWF0ZVNWR1BvaW50KCk7cmV0dXJuIGkueD1lLmNsaWVudFgsaS55PWUuY2xpZW50WSxbKGk9aS5tYXRyaXhUcmFuc2Zvcm0odC5nZXRTY3JlZW5DVE0oKS5pbnZlcnNlKCkpKS54LGkueV19dmFyIHI9dC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtyZXR1cm5bZS5jbGllbnRYLXIubGVmdC10LmNsaWVudExlZnQsZS5jbGllbnRZLXIudG9wLXQuY2xpZW50VG9wXX0pKHQsZSl9ZnVuY3Rpb24gS0QoKXt6RC5wcmV2ZW50RGVmYXVsdCgpLHpELnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpfWZ1bmN0aW9uIFpEKHQpe3ZhciBlPXQuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LG49WEQodCkub24oImRyYWdzdGFydC5kcmFnIixLRCwhMCk7Im9uc2VsZWN0c3RhcnQiaW4gZT9uLm9uKCJzZWxlY3RzdGFydC5kcmFnIixLRCwhMCk6KGUuX19ub3NlbGVjdD1lLnN0eWxlLk1velVzZXJTZWxlY3QsZS5zdHlsZS5Nb3pVc2VyU2VsZWN0PSJub25lIil9ZnVuY3Rpb24gSkQodCxlKXt2YXIgbj10LmRvY3VtZW50LmRvY3VtZW50RWxlbWVudCxpPVhEKHQpLm9uKCJkcmFnc3RhcnQuZHJhZyIsbnVsbCk7ZSYmKGkub24oImNsaWNrLmRyYWciLEtELCEwKSxzZXRUaW1lb3V0KChmdW5jdGlvbigpe2kub24oImNsaWNrLmRyYWciLG51bGwpfSksMCkpLCJvbnNlbGVjdHN0YXJ0ImluIG4/aS5vbigic2VsZWN0c3RhcnQuZHJhZyIsbnVsbCk6KG4uc3R5bGUuTW96VXNlclNlbGVjdD1uLl9fbm9zZWxlY3QsZGVsZXRlIG4uX19ub3NlbGVjdCl9ZnVuY3Rpb24gUUQodCxlLG4pe3QucHJvdG90eXBlPWUucHJvdG90eXBlPW4sbi5jb25zdHJ1Y3Rvcj10fWZ1bmN0aW9uIHRCKHQsZSl7dmFyIG49T2JqZWN0LmNyZWF0ZSh0LnByb3RvdHlwZSk7Zm9yKHZhciBpIGluIGUpbltpXT1lW2ldO3JldHVybiBufWZ1bmN0aW9uIGVCKCl7fXFELnByb3RvdHlwZT1ZRC5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOnFELHNlbGVjdDpmdW5jdGlvbiBuQih0KXsiZnVuY3Rpb24iIT10eXBlb2YgdCYmKHQ9cXoodCkpO2Zvcih2YXIgZT10aGlzLl9ncm91cHMsbj1lLmxlbmd0aCxpPW5ldyBBcnJheShuKSxyPTA7cjxuOysrcilmb3IodmFyIG8sYSxzPWVbcl0sbD1zLmxlbmd0aCxjPWlbcl09bmV3IEFycmF5KGwpLHU9MDt1PGw7Kyt1KShvPXNbdV0pJiYoYT10LmNhbGwobyxvLl9fZGF0YV9fLHUscykpJiYoIl9fZGF0YV9fImluIG8mJihhLl9fZGF0YV9fPW8uX19kYXRhX18pLGNbdV09YSk7cmV0dXJuIG5ldyBxRChpLHRoaXMuX3BhcmVudHMpfSxzZWxlY3RBbGw6ZnVuY3Rpb24gaUIodCl7ImZ1bmN0aW9uIiE9dHlwZW9mIHQmJih0PVh6KHQpKTtmb3IodmFyIGU9dGhpcy5fZ3JvdXBzLG49ZS5sZW5ndGgsaT1bXSxyPVtdLG89MDtvPG47KytvKWZvcih2YXIgYSxzPWVbb10sbD1zLmxlbmd0aCxjPTA7YzxsOysrYykoYT1zW2NdKSYmKGkucHVzaCh0LmNhbGwoYSxhLl9fZGF0YV9fLGMscykpLHIucHVzaChhKSk7cmV0dXJuIG5ldyBxRChpLHIpfSxmaWx0ZXI6ZnVuY3Rpb24gckIodCl7ImZ1bmN0aW9uIiE9dHlwZW9mIHQmJih0PSR6KHQpKTtmb3IodmFyIGU9dGhpcy5fZ3JvdXBzLG49ZS5sZW5ndGgsaT1uZXcgQXJyYXkobikscj0wO3I8bjsrK3IpZm9yKHZhciBvLGE9ZVtyXSxzPWEubGVuZ3RoLGw9aVtyXT1bXSxjPTA7YzxzOysrYykobz1hW2NdKSYmdC5jYWxsKG8sby5fX2RhdGFfXyxjLGEpJiZsLnB1c2gobyk7cmV0dXJuIG5ldyBxRChpLHRoaXMuX3BhcmVudHMpfSxkYXRhOmZ1bmN0aW9uIG9CKHQsZSl7aWYoIXQpcmV0dXJuIGY9bmV3IEFycmF5KHRoaXMuc2l6ZSgpKSx1PS0xLHRoaXMuZWFjaCgoZnVuY3Rpb24odCl7ZlsrK3VdPXR9KSksZjt2YXIgbj1lP1F6Okp6LGk9dGhpcy5fcGFyZW50cyxyPXRoaXMuX2dyb3VwczsiZnVuY3Rpb24iIT10eXBlb2YgdCYmKHQ9KGZ1bmN0aW9uIG8odCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHR9fSkodCkpO2Zvcih2YXIgYT1yLmxlbmd0aCxzPW5ldyBBcnJheShhKSxsPW5ldyBBcnJheShhKSxjPW5ldyBBcnJheShhKSx1PTA7dTxhOysrdSl7dmFyIGg9aVt1XSxkPXJbdV0scD1kLmxlbmd0aCxmPXQuY2FsbChoLGgmJmguX19kYXRhX18sdSxpKSxtPWYubGVuZ3RoLGc9bFt1XT1uZXcgQXJyYXkobSksXz1zW3VdPW5ldyBBcnJheShtKTtuKGgsZCxnLF8sY1t1XT1uZXcgQXJyYXkocCksZixlKTtmb3IodmFyIHksdixiPTAseD0wO2I8bTsrK2IpaWYoeT1nW2JdKXtmb3IoYj49eCYmKHg9YisxKTshKHY9X1t4XSkmJisreDxtOyk7eS5fbmV4dD12fHxudWxsfX1yZXR1cm4ocz1uZXcgcUQocyxpKSkuX2VudGVyPWwscy5fZXhpdD1jLHN9LGVudGVyOmZ1bmN0aW9uIGFCKCl7cmV0dXJuIG5ldyBxRCh0aGlzLl9lbnRlcnx8dGhpcy5fZ3JvdXBzLm1hcChLeiksdGhpcy5fcGFyZW50cyl9LGV4aXQ6ZnVuY3Rpb24gc0IoKXtyZXR1cm4gbmV3IHFEKHRoaXMuX2V4aXR8fHRoaXMuX2dyb3Vwcy5tYXAoS3opLHRoaXMuX3BhcmVudHMpfSxqb2luOmZ1bmN0aW9uIGxCKHQsZSxuKXt2YXIgaT10aGlzLmVudGVyKCkscj10aGlzLG89dGhpcy5leGl0KCk7cmV0dXJuIGk9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dChpKTppLmFwcGVuZCh0KyIiKSxudWxsIT1lJiYocj1lKHIpKSxudWxsPT1uP28ucmVtb3ZlKCk6bihvKSxpJiZyP2kubWVyZ2Uocikub3JkZXIoKTpyfSxtZXJnZTpmdW5jdGlvbiBjQih0KXtmb3IodmFyIGU9dGhpcy5fZ3JvdXBzLG49dC5fZ3JvdXBzLGk9ZS5sZW5ndGgscj1NYXRoLm1pbihpLG4ubGVuZ3RoKSxvPW5ldyBBcnJheShpKSxhPTA7YTxyOysrYSlmb3IodmFyIHMsbD1lW2FdLGM9blthXSx1PWwubGVuZ3RoLGg9b1thXT1uZXcgQXJyYXkodSksZD0wO2Q8dTsrK2QpKHM9bFtkXXx8Y1tkXSkmJihoW2RdPXMpO2Zvcig7YTxpOysrYSlvW2FdPWVbYV07cmV0dXJuIG5ldyBxRChvLHRoaXMuX3BhcmVudHMpfSxvcmRlcjpmdW5jdGlvbiB1Qigpe2Zvcih2YXIgdD10aGlzLl9ncm91cHMsZT0tMSxuPXQubGVuZ3RoOysrZTxuOylmb3IodmFyIGkscj10W2VdLG89ci5sZW5ndGgtMSxhPXJbb107LS1vPj0wOykoaT1yW29dKSYmKGEmJjReaS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihhKSYmYS5wYXJlbnROb2RlLmluc2VydEJlZm9yZShpLGEpLGE9aSk7cmV0dXJuIHRoaXN9LHNvcnQ6ZnVuY3Rpb24gaEIodCl7ZnVuY3Rpb24gZShlLG4pe3JldHVybiBlJiZuP3QoZS5fX2RhdGFfXyxuLl9fZGF0YV9fKTohZS0hbn10fHwodD10RCk7Zm9yKHZhciBuPXRoaXMuX2dyb3VwcyxpPW4ubGVuZ3RoLHI9bmV3IEFycmF5KGkpLG89MDtvPGk7KytvKXtmb3IodmFyIGEscz1uW29dLGw9cy5sZW5ndGgsYz1yW29dPW5ldyBBcnJheShsKSx1PTA7dTxsOysrdSkoYT1zW3VdKSYmKGNbdV09YSk7Yy5zb3J0KGUpfXJldHVybiBuZXcgcUQocix0aGlzLl9wYXJlbnRzKS5vcmRlcigpfSxjYWxsOmZ1bmN0aW9uIGRCKCl7dmFyIHQ9YXJndW1lbnRzWzBdO3JldHVybiBhcmd1bWVudHNbMF09dGhpcyx0LmFwcGx5KG51bGwsYXJndW1lbnRzKSx0aGlzfSxub2RlczpmdW5jdGlvbiBwQigpe3ZhciB0PW5ldyBBcnJheSh0aGlzLnNpemUoKSksZT0tMTtyZXR1cm4gdGhpcy5lYWNoKChmdW5jdGlvbigpe3RbKytlXT10aGlzfSkpLHR9LG5vZGU6ZnVuY3Rpb24gZkIoKXtmb3IodmFyIHQ9dGhpcy5fZ3JvdXBzLGU9MCxuPXQubGVuZ3RoO2U8bjsrK2UpZm9yKHZhciBpPXRbZV0scj0wLG89aS5sZW5ndGg7cjxvOysrcil7dmFyIGE9aVtyXTtpZihhKXJldHVybiBhfXJldHVybiBudWxsfSxzaXplOmZ1bmN0aW9uIG1CKCl7dmFyIHQ9MDtyZXR1cm4gdGhpcy5lYWNoKChmdW5jdGlvbigpeysrdH0pKSx0fSxlbXB0eTpmdW5jdGlvbiBnQigpe3JldHVybiF0aGlzLm5vZGUoKX0sZWFjaDpmdW5jdGlvbiBfQih0KXtmb3IodmFyIGU9dGhpcy5fZ3JvdXBzLG49MCxpPWUubGVuZ3RoO248aTsrK24pZm9yKHZhciByLG89ZVtuXSxhPTAscz1vLmxlbmd0aDthPHM7KythKShyPW9bYV0pJiZ0LmNhbGwocixyLl9fZGF0YV9fLGEsbyk7cmV0dXJuIHRoaXN9LGF0dHI6ZnVuY3Rpb24geUIodCxlKXt2YXIgbj1Weih0KTtpZihhcmd1bWVudHMubGVuZ3RoPDIpe3ZhciBpPXRoaXMubm9kZSgpO3JldHVybiBuLmxvY2FsP2kuZ2V0QXR0cmlidXRlTlMobi5zcGFjZSxuLmxvY2FsKTppLmdldEF0dHJpYnV0ZShuKX1yZXR1cm4gdGhpcy5lYWNoKChudWxsPT1lP24ubG9jYWw/bkQ6ZUQ6ImZ1bmN0aW9uIj09dHlwZW9mIGU/bi5sb2NhbD9hRDpvRDpuLmxvY2FsP3JEOmlEKShuLGUpKX0sc3R5bGU6ZnVuY3Rpb24gdkIodCxlLG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPjE/dGhpcy5lYWNoKChudWxsPT1lP2xEOiJmdW5jdGlvbiI9PXR5cGVvZiBlP3VEOmNEKSh0LGUsbnVsbD09bj8iIjpuKSk6aEQodGhpcy5ub2RlKCksdCl9LHByb3BlcnR5OmZ1bmN0aW9uIGJCKHQsZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg+MT90aGlzLmVhY2goKG51bGw9PWU/ZEQ6ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZkQ6cEQpKHQsZSkpOnRoaXMubm9kZSgpW3RdfSxjbGFzc2VkOmZ1bmN0aW9uIHhCKHQsZSl7dmFyIG49bUQodCsiIik7aWYoYXJndW1lbnRzLmxlbmd0aDwyKXtmb3IodmFyIGk9Z0QodGhpcy5ub2RlKCkpLHI9LTEsbz1uLmxlbmd0aDsrK3I8bzspaWYoIWkuY29udGFpbnMobltyXSkpcmV0dXJuITE7cmV0dXJuITB9cmV0dXJuIHRoaXMuZWFjaCgoImZ1bmN0aW9uIj09dHlwZW9mIGU/d0Q6ZT9iRDp4RCkobixlKSl9LHRleHQ6ZnVuY3Rpb24gd0IodCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5lYWNoKG51bGw9PXQ/U0Q6KCJmdW5jdGlvbiI9PXR5cGVvZiB0P0VEOk1EKSh0KSk6dGhpcy5ub2RlKCkudGV4dENvbnRlbnR9LGh0bWw6ZnVuY3Rpb24gU0IodCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5lYWNoKG51bGw9PXQ/VEQ6KCJmdW5jdGlvbiI9PXR5cGVvZiB0P0FEOkNEKSh0KSk6dGhpcy5ub2RlKCkuaW5uZXJIVE1MfSxyYWlzZTpmdW5jdGlvbiBNQigpe3JldHVybiB0aGlzLmVhY2goa0QpfSxsb3dlcjpmdW5jdGlvbiBFQigpe3JldHVybiB0aGlzLmVhY2goTEQpfSxhcHBlbmQ6ZnVuY3Rpb24gVEIodCl7dmFyIGU9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpHeih0KTtyZXR1cm4gdGhpcy5zZWxlY3QoKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYXBwZW5kQ2hpbGQoZS5hcHBseSh0aGlzLGFyZ3VtZW50cykpfSkpfSxpbnNlcnQ6ZnVuY3Rpb24gQ0IodCxlKXt2YXIgbj0iZnVuY3Rpb24iPT10eXBlb2YgdD90Okd6KHQpLGk9bnVsbD09ZT9QRDoiZnVuY3Rpb24iPT10eXBlb2YgZT9lOnF6KGUpO3JldHVybiB0aGlzLnNlbGVjdCgoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pbnNlcnRCZWZvcmUobi5hcHBseSh0aGlzLGFyZ3VtZW50cyksaS5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fG51bGwpfSkpfSxyZW1vdmU6ZnVuY3Rpb24gQUIoKXtyZXR1cm4gdGhpcy5lYWNoKE5EKX0sY2xvbmU6ZnVuY3Rpb24ga0IodCl7cmV0dXJuIHRoaXMuc2VsZWN0KHQ/UkQ6SUQpfSxkYXR1bTpmdW5jdGlvbiBMQih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90aGlzLnByb3BlcnR5KCJfX2RhdGFfXyIsdCk6dGhpcy5ub2RlKCkuX19kYXRhX199LG9uOmZ1bmN0aW9uIFBCKHQsZSxuKXt2YXIgaSxyLG89SEQodCsiIiksYT1vLmxlbmd0aDtpZighKGFyZ3VtZW50cy5sZW5ndGg8Mikpe2ZvcihzPWU/VkQ6RkQsbnVsbD09biYmKG49ITEpLGk9MDtpPGE7KytpKXRoaXMuZWFjaChzKG9baV0sZSxuKSk7cmV0dXJuIHRoaXN9dmFyIHM9dGhpcy5ub2RlKCkuX19vbjtpZihzKWZvcih2YXIgbCxjPTAsdT1zLmxlbmd0aDtjPHU7KytjKWZvcihpPTAsbD1zW2NdO2k8YTsrK2kpaWYoKHI9b1tpXSkudHlwZT09PWwudHlwZSYmci5uYW1lPT09bC5uYW1lKXJldHVybiBsLnZhbHVlfSxkaXNwYXRjaDpmdW5jdGlvbiBOQih0LGUpe3JldHVybiB0aGlzLmVhY2goKCJmdW5jdGlvbiI9PXR5cGVvZiBlP0dEOmpEKSh0LGUpKX19O3ZhciBJQj0uNyxSQj0xL0lCLE9CPSJcXHMqKFsrLV0/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/SUI6TWF0aC5wb3coSUIsdCksbmV3IFFCKHRoaXMucip0LHRoaXMuZyp0LHRoaXMuYip0LHRoaXMub3BhY2l0eSl9LHJnYjpmdW5jdGlvbigpe3JldHVybiB0aGlzfSxkaXNwbGF5YWJsZTpmdW5jdGlvbigpe3JldHVybi0uNTw9dGhpcy5yJiZ0aGlzLnI8MjU1LjUmJi0uNTw9dGhpcy5nJiZ0aGlzLmc8MjU1LjUmJi0uNTw9dGhpcy5iJiZ0aGlzLmI8MjU1LjUmJjA8PXRoaXMub3BhY2l0eSYmdGhpcy5vcGFjaXR5PD0xfSxoZXg6dEgsZm9ybWF0SGV4OnRILGZvcm1hdFJnYjplSCx0b1N0cmluZzplSH0pKSxRRChvSCwoZnVuY3Rpb24gaEgodCxlLG4saSl7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP3JIKHQpOm5ldyBvSCh0LGUsbixudWxsPT1pPzE6aSl9KSx0QihlQix7YnJpZ2h0ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9bnVsbD09dD9SQjpNYXRoLnBvdyhSQix0KSxuZXcgb0godGhpcy5oLHRoaXMucyx0aGlzLmwqdCx0aGlzLm9wYWNpdHkpfSxkYXJrZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9bnVsbD09dD9JQjpNYXRoLnBvdyhJQix0KSxuZXcgb0godGhpcy5oLHRoaXMucyx0aGlzLmwqdCx0aGlzLm9wYWNpdHkpfSxyZ2I6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmglMzYwKzM2MCoodGhpcy5oPDApLGU9aXNOYU4odCl8fGlzTmFOKHRoaXMucyk/MDp0aGlzLnMsbj10aGlzLmwsaT1uKyhuPC41P246MS1uKSplLHI9MipuLWk7cmV0dXJuIG5ldyBRQihhSCh0Pj0yNDA/dC0yNDA6dCsxMjAscixpKSxhSCh0LHIsaSksYUgodDwxMjA/dCsyNDA6dC0xMjAscixpKSx0aGlzLm9wYWNpdHkpfSxkaXNwbGF5YWJsZTpmdW5jdGlvbigpe3JldHVybigwPD10aGlzLnMmJnRoaXMuczw9MXx8aXNOYU4odGhpcy5zKSkmJjA8PXRoaXMubCYmdGhpcy5sPD0xJiYwPD10aGlzLm9wYWNpdHkmJnRoaXMub3BhY2l0eTw9MX0sZm9ybWF0SHNsOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5vcGFjaXR5O3JldHVybigxPT09KHQ9aXNOYU4odCk/MTpNYXRoLm1heCgwLE1hdGgubWluKDEsdCkpKT8iaHNsKCI6ImhzbGEoIikrKHRoaXMuaHx8MCkrIiwgIisxMDAqKHRoaXMuc3x8MCkrIiUsICIrMTAwKih0aGlzLmx8fDApKyIlIisoMT09PXQ/IikiOiIsICIrdCsiKSIpfX0pKTt2YXIgZEg9KGZ1bmN0aW9uIHQoZSl7dmFyIG49bEgoZSk7ZnVuY3Rpb24gaSh0LGUpe3ZhciBpPW4oKHQ9SkIodCkpLnIsKGU9SkIoZSkpLnIpLHI9bih0LmcsZS5nKSxvPW4odC5iLGUuYiksYT1jSCh0Lm9wYWNpdHksZS5vcGFjaXR5KTtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIHQucj1pKGUpLHQuZz1yKGUpLHQuYj1vKGUpLHQub3BhY2l0eT1hKGUpLHQrIiJ9fXJldHVybiBpLmdhbW1hPXQsaX0pKDEpO2Z1bmN0aW9uIHBIKHQsZSl7ZXx8KGU9W10pO3ZhciBuLGk9dD9NYXRoLm1pbihlLmxlbmd0aCx0Lmxlbmd0aCk6MCxyPWUuc2xpY2UoKTtyZXR1cm4gZnVuY3Rpb24obyl7Zm9yKG49MDtuPGk7KytuKXJbbl09dFtuXSooMS1vKStlW25dKm87cmV0dXJuIHJ9fWZ1bmN0aW9uIGZIKHQsZSl7dmFyIG4saT1lP2UubGVuZ3RoOjAscj10P01hdGgubWluKGksdC5sZW5ndGgpOjAsbz1uZXcgQXJyYXkociksYT1uZXcgQXJyYXkoaSk7Zm9yKG49MDtuPHI7KytuKW9bbl09eEgodFtuXSxlW25dKTtmb3IoO248aTsrK24pYVtuXT1lW25dO3JldHVybiBmdW5jdGlvbih0KXtmb3Iobj0wO248cjsrK24pYVtuXT1vW25dKHQpO3JldHVybiBhfX1mdW5jdGlvbiBtSCh0LGUpe3ZhciBuPW5ldyBEYXRlO3JldHVybiB0PSt0LGU9K2UsZnVuY3Rpb24oaSl7cmV0dXJuIG4uc2V0VGltZSh0KigxLWkpK2UqaSksbn19ZnVuY3Rpb24gZ0godCxlKXtyZXR1cm4gdD0rdCxlPStlLGZ1bmN0aW9uKG4pe3JldHVybiB0KigxLW4pK2Uqbn19ZnVuY3Rpb24gX0godCxlKXt2YXIgbixpPXt9LHI9e307Zm9yKG4gaW4gbnVsbCE9PXQmJiJvYmplY3QiPT10eXBlb2YgdHx8KHQ9e30pLG51bGwhPT1lJiYib2JqZWN0Ij09dHlwZW9mIGV8fChlPXt9KSxlKW4gaW4gdD9pW25dPXhIKHRbbl0sZVtuXSk6cltuXT1lW25dO3JldHVybiBmdW5jdGlvbih0KXtmb3IobiBpbiBpKXJbbl09aVtuXSh0KTtyZXR1cm4gcn19dmFyIHlIPS9bLStdPyg/OlxkK1wuP1xkKnxcLj9cZCspKD86W2VFXVstK10/XGQrKT8vZyx2SD1uZXcgUmVnRXhwKHlILnNvdXJjZSwiZyIpO2Z1bmN0aW9uIGJIKHQsZSl7dmFyIG4saSxyLG89eUgubGFzdEluZGV4PXZILmxhc3RJbmRleD0wLGE9LTEscz1bXSxsPVtdO2Zvcih0Kz0iIixlKz0iIjsobj15SC5leGVjKHQpKSYmKGk9dkguZXhlYyhlKSk7KShyPWkuaW5kZXgpPm8mJihyPWUuc2xpY2UobyxyKSxzW2FdP3NbYV0rPXI6c1srK2FdPXIpLChuPW5bMF0pPT09KGk9aVswXSk/c1thXT9zW2FdKz1pOnNbKythXT1pOihzWysrYV09bnVsbCxsLnB1c2goe2k6YSx4OmdIKG4saSl9KSksbz12SC5sYXN0SW5kZXg7cmV0dXJuIG88ZS5sZW5ndGgmJihyPWUuc2xpY2Uobyksc1thXT9zW2FdKz1yOnNbKythXT1yKSxzLmxlbmd0aDwyP2xbMF0/KGZ1bmN0aW9uIGModCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiB0KGUpKyIifX0pKGxbMF0ueCk6KGZ1bmN0aW9uIHUodCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHR9fSkoZSk6KGU9bC5sZW5ndGgsZnVuY3Rpb24odCl7Zm9yKHZhciBuLGk9MDtpPGU7KytpKXNbKG49bFtpXSkuaV09bi54KHQpO3JldHVybiBzLmpvaW4oIiIpfSl9ZnVuY3Rpb24geEgodCxlKXt2YXIgbixpPXR5cGVvZiBlO3JldHVybiBudWxsPT1lfHwiYm9vbGVhbiI9PT1pP3NIKGUpOigibnVtYmVyIj09PWk/Z0g6InN0cmluZyI9PT1pPyhuPVhCKGUpKT8oZT1uLGRIKTpiSDplIGluc3RhbmNlb2YgWEI/ZEg6ZSBpbnN0YW5jZW9mIERhdGU/bUg6KGZ1bmN0aW9uIHIodCl7cmV0dXJuIEFycmF5QnVmZmVyLmlzVmlldyh0KSYmISh0IGluc3RhbmNlb2YgRGF0YVZpZXcpfSkoZSk/cEg6QXJyYXkuaXNBcnJheShlKT9mSDoiZnVuY3Rpb24iIT10eXBlb2YgZS52YWx1ZU9mJiYiZnVuY3Rpb24iIT10eXBlb2YgZS50b1N0cmluZ3x8aXNOYU4oZSk/X0g6Z0gpKHQsZSl9dmFyIHdILFNILE1ILEVILFRIPTE4MC9NYXRoLlBJLENIPXt0cmFuc2xhdGVYOjAsdHJhbnNsYXRlWTowLHJvdGF0ZTowLHNrZXdYOjAsc2NhbGVYOjEsc2NhbGVZOjF9O2Z1bmN0aW9uIEFIKHQsZSxuLGkscixvKXt2YXIgYSxzLGw7cmV0dXJuKGE9TWF0aC5zcXJ0KHQqdCtlKmUpKSYmKHQvPWEsZS89YSksKGw9dCpuK2UqaSkmJihuLT10KmwsaS09ZSpsKSwocz1NYXRoLnNxcnQobipuK2kqaSkpJiYobi89cyxpLz1zLGwvPXMpLHQqaTxlKm4mJih0PS10LGU9LWUsbD0tbCxhPS1hKSx7dHJhbnNsYXRlWDpyLHRyYW5zbGF0ZVk6byxyb3RhdGU6TWF0aC5hdGFuMihlLHQpKlRILHNrZXdYOk1hdGguYXRhbihsKSpUSCxzY2FsZVg6YSxzY2FsZVk6c319ZnVuY3Rpb24ga0godCxlLG4saSl7ZnVuY3Rpb24gcih0KXtyZXR1cm4gdC5sZW5ndGg/dC5wb3AoKSsiICI6IiJ9cmV0dXJuIGZ1bmN0aW9uKG8sYSl7dmFyIHM9W10sbD1bXTtyZXR1cm4gbz10KG8pLGE9dChhKSwoZnVuY3Rpb24gYyh0LGkscixvLGEscyl7aWYodCE9PXJ8fGkhPT1vKXt2YXIgbD1hLnB1c2goInRyYW5zbGF0ZSgiLG51bGwsZSxudWxsLG4pO3MucHVzaCh7aTpsLTQseDpnSCh0LHIpfSx7aTpsLTIseDpnSChpLG8pfSl9ZWxzZShyfHxvKSYmYS5wdXNoKCJ0cmFuc2xhdGUoIityK2UrbytuKX0pKG8udHJhbnNsYXRlWCxvLnRyYW5zbGF0ZVksYS50cmFuc2xhdGVYLGEudHJhbnNsYXRlWSxzLGwpLChmdW5jdGlvbiB1KHQsZSxuLG8pe3QhPT1lPyh0LWU+MTgwP2UrPTM2MDplLXQ+MTgwJiYodCs9MzYwKSxvLnB1c2goe2k6bi5wdXNoKHIobikrInJvdGF0ZSgiLG51bGwsaSktMix4OmdIKHQsZSl9KSk6ZSYmbi5wdXNoKHIobikrInJvdGF0ZSgiK2UraSl9KShvLnJvdGF0ZSxhLnJvdGF0ZSxzLGwpLChmdW5jdGlvbiBoKHQsZSxuLG8pe3QhPT1lP28ucHVzaCh7aTpuLnB1c2gocihuKSsic2tld1goIixudWxsLGkpLTIseDpnSCh0LGUpfSk6ZSYmbi5wdXNoKHIobikrInNrZXdYKCIrZStpKX0pKG8uc2tld1gsYS5za2V3WCxzLGwpLChmdW5jdGlvbiBkKHQsZSxuLGksbyxhKXtpZih0IT09bnx8ZSE9PWkpe3ZhciBzPW8ucHVzaChyKG8pKyJzY2FsZSgiLG51bGwsIiwiLG51bGwsIikiKTthLnB1c2goe2k6cy00LHg6Z0godCxuKX0se2k6cy0yLHg6Z0goZSxpKX0pfWVsc2UgMT09PW4mJjE9PT1pfHxvLnB1c2gocihvKSsic2NhbGUoIituKyIsIitpKyIpIil9KShvLnNjYWxlWCxvLnNjYWxlWSxhLnNjYWxlWCxhLnNjYWxlWSxzLGwpLG89YT1udWxsLGZ1bmN0aW9uKHQpe2Zvcih2YXIgZSxuPS0xLGk9bC5sZW5ndGg7KytuPGk7KXNbKGU9bFtuXSkuaV09ZS54KHQpO3JldHVybiBzLmpvaW4oIiIpfX19dmFyIExILFBILE5IPWtIKChmdW5jdGlvbiBJSCh0KXtyZXR1cm4ibm9uZSI9PT10P0NIOih3SHx8KHdIPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIkRJViIpLFNIPWRvY3VtZW50LmRvY3VtZW50RWxlbWVudCxNSD1kb2N1bWVudC5kZWZhdWx0Vmlldyksd0guc3R5bGUudHJhbnNmb3JtPXQsdD1NSC5nZXRDb21wdXRlZFN0eWxlKFNILmFwcGVuZENoaWxkKHdIKSxudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCJ0cmFuc2Zvcm0iKSxTSC5yZW1vdmVDaGlsZCh3SCksQUgoKyh0PXQuc2xpY2UoNywtMSkuc3BsaXQoIiwiKSlbMF0sK3RbMV0sK3RbMl0sK3RbM10sK3RbNF0sK3RbNV0pKX0pLCJweCwgIiwicHgpIiwiZGVnKSIpLFJIPWtIKChmdW5jdGlvbiBPSCh0KXtyZXR1cm4gbnVsbD09dD9DSDooRUh8fChFSD1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwiZyIpKSxFSC5zZXRBdHRyaWJ1dGUoInRyYW5zZm9ybSIsdCksKHQ9RUgudHJhbnNmb3JtLmJhc2VWYWwuY29uc29saWRhdGUoKSk/QUgoKHQ9dC5tYXRyaXgpLmEsdC5iLHQuYyx0LmQsdC5lLHQuZik6Q0gpfSksIiwgIiwiKSIsIikiKSx6SD0wLERIPTAsQkg9MCxISD0wLEZIPTAsVkg9MCxVSD0ib2JqZWN0Ij09dHlwZW9mIHBlcmZvcm1hbmNlJiZwZXJmb3JtYW5jZS5ub3c/cGVyZm9ybWFuY2U6RGF0ZSxqSD0ib2JqZWN0Ij09dHlwZW9mIHdpbmRvdyYmd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZT93aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lLmJpbmQod2luZG93KTpmdW5jdGlvbih0KXtzZXRUaW1lb3V0KHQsMTcpfTtmdW5jdGlvbiBHSCgpe3JldHVybiBGSHx8KGpIKFdIKSxGSD1VSC5ub3coKStWSCl9ZnVuY3Rpb24gV0goKXtGSD0wfWZ1bmN0aW9uIHFIKCl7dGhpcy5fY2FsbD10aGlzLl90aW1lPXRoaXMuX25leHQ9bnVsbH1mdW5jdGlvbiBZSCh0LGUsbil7dmFyIGk9bmV3IHFIO3JldHVybiBpLnJlc3RhcnQodCxlLG4pLGl9ZnVuY3Rpb24gWEgoKXtGSD0oSEg9VUgubm93KCkpK1ZILHpIPURIPTA7dHJ5eyEoZnVuY3Rpb24gdCgpe0dIKCksKyt6SDtmb3IodmFyIHQsZT1MSDtlOykodD1GSC1lLl90aW1lKT49MCYmZS5fY2FsbC5jYWxsKG51bGwsdCksZT1lLl9uZXh0Oy0tekh9KSgpfWZpbmFsbHl7ekg9MCwoZnVuY3Rpb24gZSgpe3ZhciB0LGUsbj1MSCxpPTEvMDtmb3IoO247KW4uX2NhbGw/KGk+bi5fdGltZSYmKGk9bi5fdGltZSksdD1uLG49bi5fbmV4dCk6KGU9bi5fbmV4dCxuLl9uZXh0PW51bGwsbj10P3QuX25leHQ9ZTpMSD1lKTtQSD10LEtIKGkpfSkoKSxGSD0wfX1mdW5jdGlvbiAkSCgpe3ZhciB0PVVILm5vdygpLGU9dC1ISDtlPjFlMyYmKFZILT1lLEhIPXQpfWZ1bmN0aW9uIEtIKHQpe3pIfHwoREgmJihESD1jbGVhclRpbWVvdXQoREgpKSx0LUZIPjI0Pyh0PDEvMCYmKERIPXNldFRpbWVvdXQoWEgsdC1VSC5ub3coKS1WSCkpLEJIJiYoQkg9Y2xlYXJJbnRlcnZhbChCSCkpKTooQkh8fChISD1VSC5ub3coKSxCSD1zZXRJbnRlcnZhbCgkSCwxZTMpKSx6SD0xLGpIKFhIKSkpfWZ1bmN0aW9uIFpIKHQsZSxuKXt2YXIgaT1uZXcgcUg7cmV0dXJuIGkucmVzdGFydCgoZnVuY3Rpb24obil7aS5zdG9wKCksdChuK2UpfSksZT1udWxsPT1lPzA6K2UsbiksaX1xSC5wcm90b3R5cGU9WUgucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpxSCxyZXN0YXJ0OmZ1bmN0aW9uKHQsZSxuKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCl0aHJvdyBuZXcgVHlwZUVycm9yKCJjYWxsYmFjayBpcyBub3QgYSBmdW5jdGlvbiIpO249KG51bGw9PW4/R0goKTorbikrKG51bGw9PWU/MDorZSksdGhpcy5fbmV4dHx8UEg9PT10aGlzfHwoUEg/UEguX25leHQ9dGhpczpMSD10aGlzLFBIPXRoaXMpLHRoaXMuX2NhbGw9dCx0aGlzLl90aW1lPW4sS0goKX0sc3RvcDpmdW5jdGlvbigpe3RoaXMuX2NhbGwmJih0aGlzLl9jYWxsPW51bGwsdGhpcy5fdGltZT0xLzAsS0goKSl9fTt2YXIgSkg9UnooInN0YXJ0IiwiZW5kIiwiY2FuY2VsIiwiaW50ZXJydXB0IiksUUg9W107ZnVuY3Rpb24gdEYodCxlLG4saSxyLG8pe3ZhciBhPXQuX190cmFuc2l0aW9uO2lmKGEpe2lmKG4gaW4gYSlyZXR1cm59ZWxzZSB0Ll9fdHJhbnNpdGlvbj17fTshKGZ1bmN0aW9uIHModCxlLG4pe3ZhciBpLHI9dC5fX3RyYW5zaXRpb247ZnVuY3Rpb24gbyh0KXtuLnN0YXRlPTEsbi50aW1lci5yZXN0YXJ0KGEsbi5kZWxheSxuLnRpbWUpLG4uZGVsYXk8PXQmJmEodC1uLmRlbGF5KX1mdW5jdGlvbiBhKG8pe3ZhciBjLHUsaCxkO2lmKDEhPT1uLnN0YXRlKXJldHVybiBsKCk7Zm9yKGMgaW4gcilpZigoZD1yW2NdKS5uYW1lPT09bi5uYW1lKXtpZigzPT09ZC5zdGF0ZSlyZXR1cm4gWkgoYSk7ND09PWQuc3RhdGU/KGQuc3RhdGU9NixkLnRpbWVyLnN0b3AoKSxkLm9uLmNhbGwoImludGVycnVwdCIsdCx0Ll9fZGF0YV9fLGQuaW5kZXgsZC5ncm91cCksZGVsZXRlIHJbY10pOitjPGUmJihkLnN0YXRlPTYsZC50aW1lci5zdG9wKCksZC5vbi5jYWxsKCJjYW5jZWwiLHQsdC5fX2RhdGFfXyxkLmluZGV4LGQuZ3JvdXApLGRlbGV0ZSByW2NdKX1pZihaSCgoZnVuY3Rpb24oKXszPT09bi5zdGF0ZSYmKG4uc3RhdGU9NCxuLnRpbWVyLnJlc3RhcnQocyxuLmRlbGF5LG4udGltZSkscyhvKSl9KSksbi5zdGF0ZT0yLG4ub24uY2FsbCgic3RhcnQiLHQsdC5fX2RhdGFfXyxuLmluZGV4LG4uZ3JvdXApLDI9PT1uLnN0YXRlKXtmb3Iobi5zdGF0ZT0zLGk9bmV3IEFycmF5KGg9bi50d2Vlbi5sZW5ndGgpLGM9MCx1PS0xO2M8aDsrK2MpKGQ9bi50d2VlbltjXS52YWx1ZS5jYWxsKHQsdC5fX2RhdGFfXyxuLmluZGV4LG4uZ3JvdXApKSYmKGlbKyt1XT1kKTtpLmxlbmd0aD11KzF9fWZ1bmN0aW9uIHMoZSl7Zm9yKHZhciByPWU8bi5kdXJhdGlvbj9uLmVhc2UuY2FsbChudWxsLGUvbi5kdXJhdGlvbik6KG4udGltZXIucmVzdGFydChsKSxuLnN0YXRlPTUsMSksbz0tMSxhPWkubGVuZ3RoOysrbzxhOylpW29dLmNhbGwodCxyKTs1PT09bi5zdGF0ZSYmKG4ub24uY2FsbCgiZW5kIix0LHQuX19kYXRhX18sbi5pbmRleCxuLmdyb3VwKSxsKCkpfWZ1bmN0aW9uIGwoKXtmb3IodmFyIGkgaW4gbi5zdGF0ZT02LG4udGltZXIuc3RvcCgpLGRlbGV0ZSByW2VdLHIpcmV0dXJuO2RlbGV0ZSB0Ll9fdHJhbnNpdGlvbn1yW2VdPW4sbi50aW1lcj1ZSChvLDAsbi50aW1lKX0pKHQsbix7bmFtZTplLGluZGV4OmksZ3JvdXA6cixvbjpKSCx0d2VlbjpRSCx0aW1lOm8udGltZSxkZWxheTpvLmRlbGF5LGR1cmF0aW9uOm8uZHVyYXRpb24sZWFzZTpvLmVhc2UsdGltZXI6bnVsbCxzdGF0ZTowfSl9ZnVuY3Rpb24gZUYodCxlKXt2YXIgbj1pRih0LGUpO2lmKG4uc3RhdGU+MCl0aHJvdyBuZXcgRXJyb3IoInRvbyBsYXRlOyBhbHJlYWR5IHNjaGVkdWxlZCIpO3JldHVybiBufWZ1bmN0aW9uIG5GKHQsZSl7dmFyIG49aUYodCxlKTtpZihuLnN0YXRlPjMpdGhyb3cgbmV3IEVycm9yKCJ0b28gbGF0ZTsgYWxyZWFkeSBydW5uaW5nIik7cmV0dXJuIG59ZnVuY3Rpb24gaUYodCxlKXt2YXIgbj10Ll9fdHJhbnNpdGlvbjtpZighbnx8IShuPW5bZV0pKXRocm93IG5ldyBFcnJvcigidHJhbnNpdGlvbiBub3QgZm91bmQiKTtyZXR1cm4gbn1mdW5jdGlvbiByRih0LGUpe3ZhciBuLGkscixvPXQuX190cmFuc2l0aW9uLGE9ITA7aWYobyl7Zm9yKHIgaW4gZT1udWxsPT1lP251bGw6ZSsiIixvKShuPW9bcl0pLm5hbWU9PT1lPyhpPW4uc3RhdGU+MiYmbi5zdGF0ZTw1LG4uc3RhdGU9NixuLnRpbWVyLnN0b3AoKSxuLm9uLmNhbGwoaT8iaW50ZXJydXB0IjoiY2FuY2VsIix0LHQuX19kYXRhX18sbi5pbmRleCxuLmdyb3VwKSxkZWxldGUgb1tyXSk6YT0hMTthJiZkZWxldGUgdC5fX3RyYW5zaXRpb259fWZ1bmN0aW9uIG9GKHQsZSl7dmFyIG4saTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgcj1uRih0aGlzLHQpLG89ci50d2VlbjtpZihvIT09bilmb3IodmFyIGE9MCxzPShpPW49bykubGVuZ3RoO2E8czsrK2EpaWYoaVthXS5uYW1lPT09ZSl7KGk9aS5zbGljZSgpKS5zcGxpY2UoYSwxKTticmVha31yLnR3ZWVuPWl9fWZ1bmN0aW9uIGFGKHQsZSxuKXt2YXIgaSxyO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBuKXRocm93IG5ldyBFcnJvcjtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbz1uRih0aGlzLHQpLGE9by50d2VlbjtpZihhIT09aSl7cj0oaT1hKS5zbGljZSgpO2Zvcih2YXIgcz17bmFtZTplLHZhbHVlOm59LGw9MCxjPXIubGVuZ3RoO2w8YzsrK2wpaWYocltsXS5uYW1lPT09ZSl7cltsXT1zO2JyZWFrfWw9PT1jJiZyLnB1c2gocyl9by50d2Vlbj1yfX1mdW5jdGlvbiBzRih0LGUsbil7dmFyIGk9dC5faWQ7cmV0dXJuIHQuZWFjaCgoZnVuY3Rpb24oKXt2YXIgdD1uRih0aGlzLGkpOyh0LnZhbHVlfHwodC52YWx1ZT17fSkpW2VdPW4uYXBwbHkodGhpcyxhcmd1bWVudHMpfSkpLGZ1bmN0aW9uKHQpe3JldHVybiBpRih0LGkpLnZhbHVlW2VdfX1mdW5jdGlvbiBsRih0LGUpe3ZhciBuO3JldHVybigibnVtYmVyIj09dHlwZW9mIGU/Z0g6ZSBpbnN0YW5jZW9mIFhCP2RIOihuPVhCKGUpKT8oZT1uLGRIKTpiSCkodCxlKX1mdW5jdGlvbiBjRih0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnJlbW92ZUF0dHJpYnV0ZSh0KX19ZnVuY3Rpb24gdUYodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5yZW1vdmVBdHRyaWJ1dGVOUyh0LnNwYWNlLHQubG9jYWwpfX1mdW5jdGlvbiBoRih0LGUsbil7dmFyIGkscixvPW4rIiI7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5nZXRBdHRyaWJ1dGUodCk7cmV0dXJuIGE9PT1vP251bGw6YT09PWk/cjpyPWUoaT1hLG4pfX1mdW5jdGlvbiBkRih0LGUsbil7dmFyIGkscixvPW4rIiI7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5nZXRBdHRyaWJ1dGVOUyh0LnNwYWNlLHQubG9jYWwpO3JldHVybiBhPT09bz9udWxsOmE9PT1pP3I6cj1lKGk9YSxuKX19ZnVuY3Rpb24gcEYodCxlLG4pe3ZhciBpLHIsbztyZXR1cm4gZnVuY3Rpb24oKXt2YXIgYSxzLGw9bih0aGlzKTtpZihudWxsIT1sKXJldHVybihhPXRoaXMuZ2V0QXR0cmlidXRlKHQpKT09PShzPWwrIiIpP251bGw6YT09PWkmJnM9PT1yP286KHI9cyxvPWUoaT1hLGwpKTt0aGlzLnJlbW92ZUF0dHJpYnV0ZSh0KX19ZnVuY3Rpb24gZkYodCxlLG4pe3ZhciBpLHIsbztyZXR1cm4gZnVuY3Rpb24oKXt2YXIgYSxzLGw9bih0aGlzKTtpZihudWxsIT1sKXJldHVybihhPXRoaXMuZ2V0QXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsKSk9PT0ocz1sKyIiKT9udWxsOmE9PT1pJiZzPT09cj9vOihyPXMsbz1lKGk9YSxsKSk7dGhpcy5yZW1vdmVBdHRyaWJ1dGVOUyh0LnNwYWNlLHQubG9jYWwpfX1mdW5jdGlvbiBtRih0LGUpe3JldHVybiBmdW5jdGlvbihuKXt0aGlzLnNldEF0dHJpYnV0ZSh0LGUuY2FsbCh0aGlzLG4pKX19ZnVuY3Rpb24gZ0YodCxlKXtyZXR1cm4gZnVuY3Rpb24obil7dGhpcy5zZXRBdHRyaWJ1dGVOUyh0LnNwYWNlLHQubG9jYWwsZS5jYWxsKHRoaXMsbikpfX1mdW5jdGlvbiBfRih0LGUpe3ZhciBuLGk7ZnVuY3Rpb24gcigpe3ZhciByPWUuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiByIT09aSYmKG49KGk9cikmJmdGKHQscikpLG59cmV0dXJuIHIuX3ZhbHVlPWUscn1mdW5jdGlvbiB5Rih0LGUpe3ZhciBuLGk7ZnVuY3Rpb24gcigpe3ZhciByPWUuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiByIT09aSYmKG49KGk9cikmJm1GKHQscikpLG59cmV0dXJuIHIuX3ZhbHVlPWUscn1mdW5jdGlvbiB2Rih0LGUpe3JldHVybiBmdW5jdGlvbigpe2VGKHRoaXMsdCkuZGVsYXk9K2UuYXBwbHkodGhpcyxhcmd1bWVudHMpfX1mdW5jdGlvbiBiRih0LGUpe3JldHVybiBlPStlLGZ1bmN0aW9uKCl7ZUYodGhpcyx0KS5kZWxheT1lfX1mdW5jdGlvbiB4Rih0LGUpe3JldHVybiBmdW5jdGlvbigpe25GKHRoaXMsdCkuZHVyYXRpb249K2UuYXBwbHkodGhpcyxhcmd1bWVudHMpfX1mdW5jdGlvbiB3Rih0LGUpe3JldHVybiBlPStlLGZ1bmN0aW9uKCl7bkYodGhpcyx0KS5kdXJhdGlvbj1lfX1mdW5jdGlvbiBTRih0LGUpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBlKXRocm93IG5ldyBFcnJvcjtyZXR1cm4gZnVuY3Rpb24oKXtuRih0aGlzLHQpLmVhc2U9ZX19ZnVuY3Rpb24gTUYodCxlLG4pe3ZhciBpLHIsbz0oZnVuY3Rpb24gYSh0KXtyZXR1cm4odCsiIikudHJpbSgpLnNwbGl0KC9efFxzKy8pLmV2ZXJ5KChmdW5jdGlvbih0KXt2YXIgZT10LmluZGV4T2YoIi4iKTtyZXR1cm4gZT49MCYmKHQ9dC5zbGljZSgwLGUpKSwhdHx8InN0YXJ0Ij09PXR9KSl9KShlKT9lRjpuRjtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgYT1vKHRoaXMsdCkscz1hLm9uO3MhPT1pJiYocj0oaT1zKS5jb3B5KCkpLm9uKGUsbiksYS5vbj1yfX12YXIgRUY9WUQucHJvdG90eXBlLmNvbnN0cnVjdG9yO2Z1bmN0aW9uIFRGKHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMuc3R5bGUucmVtb3ZlUHJvcGVydHkodCl9fWZ1bmN0aW9uIENGKHQsZSxuKXtyZXR1cm4gZnVuY3Rpb24oaSl7dGhpcy5zdHlsZS5zZXRQcm9wZXJ0eSh0LGUuY2FsbCh0aGlzLGkpLG4pfX1mdW5jdGlvbiBBRih0LGUsbil7dmFyIGkscjtmdW5jdGlvbiBvKCl7dmFyIG89ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIG8hPT1yJiYoaT0ocj1vKSYmQ0YodCxvLG4pKSxpfXJldHVybiBvLl92YWx1ZT1lLG99ZnVuY3Rpb24ga0YodCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3RoaXMudGV4dENvbnRlbnQ9dC5jYWxsKHRoaXMsZSl9fWZ1bmN0aW9uIExGKHQpe3ZhciBlLG47ZnVuY3Rpb24gaSgpe3ZhciBpPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBpIT09biYmKGU9KG49aSkmJmtGKGkpKSxlfXJldHVybiBpLl92YWx1ZT10LGl9dmFyIFBGPTA7ZnVuY3Rpb24gTkYodCxlLG4saSl7dGhpcy5fZ3JvdXBzPXQsdGhpcy5fcGFyZW50cz1lLHRoaXMuX25hbWU9bix0aGlzLl9pZD1pfWZ1bmN0aW9uIElGKCl7cmV0dXJuKytQRn12YXIgUkY9WUQucHJvdG90eXBlO05GLnByb3RvdHlwZT17Y29uc3RydWN0b3I6TkYsc2VsZWN0OmZ1bmN0aW9uIE9GKHQpe3ZhciBlPXRoaXMuX25hbWUsbj10aGlzLl9pZDsiZnVuY3Rpb24iIT10eXBlb2YgdCYmKHQ9cXoodCkpO2Zvcih2YXIgaT10aGlzLl9ncm91cHMscj1pLmxlbmd0aCxvPW5ldyBBcnJheShyKSxhPTA7YTxyOysrYSlmb3IodmFyIHMsbCxjPWlbYV0sdT1jLmxlbmd0aCxoPW9bYV09bmV3IEFycmF5KHUpLGQ9MDtkPHU7KytkKShzPWNbZF0pJiYobD10LmNhbGwocyxzLl9fZGF0YV9fLGQsYykpJiYoIl9fZGF0YV9fImluIHMmJihsLl9fZGF0YV9fPXMuX19kYXRhX18pLGhbZF09bCx0RihoW2RdLGUsbixkLGgsaUYocyxuKSkpO3JldHVybiBuZXcgTkYobyx0aGlzLl9wYXJlbnRzLGUsbil9LHNlbGVjdEFsbDpmdW5jdGlvbiB6Rih0KXt2YXIgZT10aGlzLl9uYW1lLG49dGhpcy5faWQ7ImZ1bmN0aW9uIiE9dHlwZW9mIHQmJih0PVh6KHQpKTtmb3IodmFyIGk9dGhpcy5fZ3JvdXBzLHI9aS5sZW5ndGgsbz1bXSxhPVtdLHM9MDtzPHI7KytzKWZvcih2YXIgbCxjPWlbc10sdT1jLmxlbmd0aCxoPTA7aDx1OysraClpZihsPWNbaF0pe2Zvcih2YXIgZCxwPXQuY2FsbChsLGwuX19kYXRhX18saCxjKSxmPWlGKGwsbiksbT0wLGc9cC5sZW5ndGg7bTxnOysrbSkoZD1wW21dKSYmdEYoZCxlLG4sbSxwLGYpO28ucHVzaChwKSxhLnB1c2gobCl9cmV0dXJuIG5ldyBORihvLGEsZSxuKX0sZmlsdGVyOmZ1bmN0aW9uIERGKHQpeyJmdW5jdGlvbiIhPXR5cGVvZiB0JiYodD0keih0KSk7Zm9yKHZhciBlPXRoaXMuX2dyb3VwcyxuPWUubGVuZ3RoLGk9bmV3IEFycmF5KG4pLHI9MDtyPG47KytyKWZvcih2YXIgbyxhPWVbcl0scz1hLmxlbmd0aCxsPWlbcl09W10sYz0wO2M8czsrK2MpKG89YVtjXSkmJnQuY2FsbChvLG8uX19kYXRhX18sYyxhKSYmbC5wdXNoKG8pO3JldHVybiBuZXcgTkYoaSx0aGlzLl9wYXJlbnRzLHRoaXMuX25hbWUsdGhpcy5faWQpfSxtZXJnZTpmdW5jdGlvbiBCRih0KXtpZih0Ll9pZCE9PXRoaXMuX2lkKXRocm93IG5ldyBFcnJvcjtmb3IodmFyIGU9dGhpcy5fZ3JvdXBzLG49dC5fZ3JvdXBzLGk9ZS5sZW5ndGgscj1NYXRoLm1pbihpLG4ubGVuZ3RoKSxvPW5ldyBBcnJheShpKSxhPTA7YTxyOysrYSlmb3IodmFyIHMsbD1lW2FdLGM9blthXSx1PWwubGVuZ3RoLGg9b1thXT1uZXcgQXJyYXkodSksZD0wO2Q8dTsrK2QpKHM9bFtkXXx8Y1tkXSkmJihoW2RdPXMpO2Zvcig7YTxpOysrYSlvW2FdPWVbYV07cmV0dXJuIG5ldyBORihvLHRoaXMuX3BhcmVudHMsdGhpcy5fbmFtZSx0aGlzLl9pZCl9LHNlbGVjdGlvbjpmdW5jdGlvbiBIRigpe3JldHVybiBuZXcgRUYodGhpcy5fZ3JvdXBzLHRoaXMuX3BhcmVudHMpfSx0cmFuc2l0aW9uOmZ1bmN0aW9uIEZGKCl7Zm9yKHZhciB0PXRoaXMuX25hbWUsZT10aGlzLl9pZCxuPUlGKCksaT10aGlzLl9ncm91cHMscj1pLmxlbmd0aCxvPTA7bzxyOysrbylmb3IodmFyIGEscz1pW29dLGw9cy5sZW5ndGgsYz0wO2M8bDsrK2MpaWYoYT1zW2NdKXt2YXIgdT1pRihhLGUpO3RGKGEsdCxuLGMscyx7dGltZTp1LnRpbWUrdS5kZWxheSt1LmR1cmF0aW9uLGRlbGF5OjAsZHVyYXRpb246dS5kdXJhdGlvbixlYXNlOnUuZWFzZX0pfXJldHVybiBuZXcgTkYoaSx0aGlzLl9wYXJlbnRzLHQsbil9LGNhbGw6UkYuY2FsbCxub2RlczpSRi5ub2Rlcyxub2RlOlJGLm5vZGUsc2l6ZTpSRi5zaXplLGVtcHR5OlJGLmVtcHR5LGVhY2g6UkYuZWFjaCxvbjpmdW5jdGlvbiBWRih0LGUpe3ZhciBuPXRoaXMuX2lkO3JldHVybiBhcmd1bWVudHMubGVuZ3RoPDI/aUYodGhpcy5ub2RlKCksbikub24ub24odCk6dGhpcy5lYWNoKE1GKG4sdCxlKSl9LGF0dHI6ZnVuY3Rpb24gVUYodCxlKXt2YXIgbj1Weih0KSxpPSJ0cmFuc2Zvcm0iPT09bj9SSDpsRjtyZXR1cm4gdGhpcy5hdHRyVHdlZW4odCwiZnVuY3Rpb24iPT10eXBlb2YgZT8obi5sb2NhbD9mRjpwRikobixpLHNGKHRoaXMsImF0dHIuIit0LGUpKTpudWxsPT1lPyhuLmxvY2FsP3VGOmNGKShuKToobi5sb2NhbD9kRjpoRikobixpLGUpKX0sYXR0clR3ZWVuOmZ1bmN0aW9uIGpGKHQsZSl7dmFyIG49ImF0dHIuIit0O2lmKGFyZ3VtZW50cy5sZW5ndGg8MilyZXR1cm4obj10aGlzLnR3ZWVuKG4pKSYmbi5fdmFsdWU7aWYobnVsbD09ZSlyZXR1cm4gdGhpcy50d2VlbihuLG51bGwpO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBlKXRocm93IG5ldyBFcnJvcjt2YXIgaT1Weih0KTtyZXR1cm4gdGhpcy50d2VlbihuLChpLmxvY2FsP19GOnlGKShpLGUpKX0sc3R5bGU6ZnVuY3Rpb24gR0YodCxlLG4pe3ZhciBpPSJ0cmFuc2Zvcm0iPT0odCs9IiIpP05IOmxGO3JldHVybiBudWxsPT1lP3RoaXMuc3R5bGVUd2Vlbih0LChmdW5jdGlvbiByKHQsZSl7dmFyIG4saSxyO3JldHVybiBmdW5jdGlvbigpe3ZhciBvPWhEKHRoaXMsdCksYT0odGhpcy5zdHlsZS5yZW1vdmVQcm9wZXJ0eSh0KSxoRCh0aGlzLHQpKTtyZXR1cm4gbz09PWE/bnVsbDpvPT09biYmYT09PWk/cjpyPWUobj1vLGk9YSl9fSkodCxpKSkub24oImVuZC5zdHlsZS4iK3QsVEYodCkpOiJmdW5jdGlvbiI9PXR5cGVvZiBlP3RoaXMuc3R5bGVUd2Vlbih0LChmdW5jdGlvbiBhKHQsZSxuKXt2YXIgaSxyLG87cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGE9aEQodGhpcyx0KSxzPW4odGhpcyksbD1zKyIiO3JldHVybiBudWxsPT1zJiYodGhpcy5zdHlsZS5yZW1vdmVQcm9wZXJ0eSh0KSxsPXM9aEQodGhpcyx0KSksYT09PWw/bnVsbDphPT09aSYmbD09PXI/bzoocj1sLG89ZShpPWEscykpfX0pKHQsaSxzRih0aGlzLCJzdHlsZS4iK3QsZSkpKS5lYWNoKChmdW5jdGlvbiBvKHQsZSl7dmFyIG4saSxyLG8sYT0ic3R5bGUuIitlLHM9ImVuZC4iK2E7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGw9bkYodGhpcyx0KSxjPWwub24sdT1udWxsPT1sLnZhbHVlW2FdP298fChvPVRGKGUpKTp2b2lkIDA7Yz09PW4mJnI9PT11fHwoaT0obj1jKS5jb3B5KCkpLm9uKHMscj11KSxsLm9uPWl9fSkodGhpcy5faWQsdCkpOnRoaXMuc3R5bGVUd2Vlbih0LChmdW5jdGlvbiBzKHQsZSxuKXt2YXIgaSxyLG89bisiIjtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgYT1oRCh0aGlzLHQpO3JldHVybiBhPT09bz9udWxsOmE9PT1pP3I6cj1lKGk9YSxuKX19KSh0LGksZSksbikub24oImVuZC5zdHlsZS4iK3QsbnVsbCl9LHN0eWxlVHdlZW46ZnVuY3Rpb24gV0YodCxlLG4pe3ZhciBpPSJzdHlsZS4iKyh0Kz0iIik7aWYoYXJndW1lbnRzLmxlbmd0aDwyKXJldHVybihpPXRoaXMudHdlZW4oaSkpJiZpLl92YWx1ZTtpZihudWxsPT1lKXJldHVybiB0aGlzLnR3ZWVuKGksbnVsbCk7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3IEVycm9yO3JldHVybiB0aGlzLnR3ZWVuKGksQUYodCxlLG51bGw9PW4/IiI6bikpfSx0ZXh0OmZ1bmN0aW9uIHFGKHQpe3JldHVybiB0aGlzLnR3ZWVuKCJ0ZXh0IiwiZnVuY3Rpb24iPT10eXBlb2YgdD8oZnVuY3Rpb24gZSh0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT10KHRoaXMpO3RoaXMudGV4dENvbnRlbnQ9bnVsbD09ZT8iIjplfX0pKHNGKHRoaXMsInRleHQiLHQpKTooZnVuY3Rpb24gbih0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnRleHRDb250ZW50PXR9fSkobnVsbD09dD8iIjp0KyIiKSl9LHRleHRUd2VlbjpmdW5jdGlvbiBZRih0KXt2YXIgZT0idGV4dCI7aWYoYXJndW1lbnRzLmxlbmd0aDwxKXJldHVybihlPXRoaXMudHdlZW4oZSkpJiZlLl92YWx1ZTtpZihudWxsPT10KXJldHVybiB0aGlzLnR3ZWVuKGUsbnVsbCk7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQpdGhyb3cgbmV3IEVycm9yO3JldHVybiB0aGlzLnR3ZWVuKGUsTEYodCkpfSxyZW1vdmU6ZnVuY3Rpb24gWEYoKXtyZXR1cm4gdGhpcy5vbigiZW5kLnJlbW92ZSIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5wYXJlbnROb2RlO2Zvcih2YXIgbiBpbiB0aGlzLl9fdHJhbnNpdGlvbilpZigrbiE9PWUpcmV0dXJuO3QmJnQucmVtb3ZlQ2hpbGQodGhpcyl9fSkodGhpcy5faWQpKX0sdHdlZW46ZnVuY3Rpb24gJEYodCxlKXt2YXIgbj10aGlzLl9pZDtpZih0Kz0iIixhcmd1bWVudHMubGVuZ3RoPDIpe2Zvcih2YXIgaSxyPWlGKHRoaXMubm9kZSgpLG4pLnR3ZWVuLG89MCxhPXIubGVuZ3RoO288YTsrK28paWYoKGk9cltvXSkubmFtZT09PXQpcmV0dXJuIGkudmFsdWU7cmV0dXJuIG51bGx9cmV0dXJuIHRoaXMuZWFjaCgobnVsbD09ZT9vRjphRikobix0LGUpKX0sZGVsYXk6ZnVuY3Rpb24gS0YodCl7dmFyIGU9dGhpcy5faWQ7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5lYWNoKCgiZnVuY3Rpb24iPT10eXBlb2YgdD92RjpiRikoZSx0KSk6aUYodGhpcy5ub2RlKCksZSkuZGVsYXl9LGR1cmF0aW9uOmZ1bmN0aW9uIFpGKHQpe3ZhciBlPXRoaXMuX2lkO3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3RoaXMuZWFjaCgoImZ1bmN0aW9uIj09dHlwZW9mIHQ/eEY6d0YpKGUsdCkpOmlGKHRoaXMubm9kZSgpLGUpLmR1cmF0aW9ufSxlYXNlOmZ1bmN0aW9uIEpGKHQpe3ZhciBlPXRoaXMuX2lkO3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3RoaXMuZWFjaChTRihlLHQpKTppRih0aGlzLm5vZGUoKSxlKS5lYXNlfSxlbmQ6ZnVuY3Rpb24gUUYoKXt2YXIgdCxlLG49dGhpcyxpPW4uX2lkLHI9bi5zaXplKCk7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihvLGEpe3ZhciBzPXt2YWx1ZTphfSxsPXt2YWx1ZTpmdW5jdGlvbigpezA9PS0tciYmbygpfX07bi5lYWNoKChmdW5jdGlvbigpe3ZhciBuPW5GKHRoaXMsaSkscj1uLm9uO3IhPT10JiYoKGU9KHQ9cikuY29weSgpKS5fLmNhbmNlbC5wdXNoKHMpLGUuXy5pbnRlcnJ1cHQucHVzaChzKSxlLl8uZW5kLnB1c2gobCkpLG4ub249ZX0pKX0pKX19O3ZhciB0Vj17dGltZTpudWxsLGRlbGF5OjAsZHVyYXRpb246MjUwLGVhc2U6cWZ9O2Z1bmN0aW9uIGVWKHQsZSl7Zm9yKHZhciBuOyEobj10Ll9fdHJhbnNpdGlvbil8fCEobj1uW2VdKTspaWYoISh0PXQucGFyZW50Tm9kZSkpcmV0dXJuIHRWLnRpbWU9R0goKSx0VjtyZXR1cm4gbn1mdW5jdGlvbiBuVih0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19ZnVuY3Rpb24gaVYodCxlLG4pe3RoaXMudGFyZ2V0PXQsdGhpcy50eXBlPWUsdGhpcy5zZWxlY3Rpb249bn1mdW5jdGlvbiByVigpe3pELnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpfWZ1bmN0aW9uIG9WKCl7ekQucHJldmVudERlZmF1bHQoKSx6RC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKX1ZRC5wcm90b3R5cGUuaW50ZXJydXB0PWZ1bmN0aW9uIGFWKHQpe3JldHVybiB0aGlzLmVhY2goKGZ1bmN0aW9uKCl7ckYodGhpcyx0KX0pKX0sWUQucHJvdG90eXBlLnRyYW5zaXRpb249ZnVuY3Rpb24gc1YodCl7dmFyIGUsbjt0IGluc3RhbmNlb2YgTkY/KGU9dC5faWQsdD10Ll9uYW1lKTooZT1JRigpLChuPXRWKS50aW1lPUdIKCksdD1udWxsPT10P251bGw6dCsiIik7Zm9yKHZhciBpPXRoaXMuX2dyb3VwcyxyPWkubGVuZ3RoLG89MDtvPHI7KytvKWZvcih2YXIgYSxzPWlbb10sbD1zLmxlbmd0aCxjPTA7YzxsOysrYykoYT1zW2NdKSYmdEYoYSx0LGUsYyxzLG58fGVWKGEsZSkpO3JldHVybiBuZXcgTkYoaSx0aGlzLl9wYXJlbnRzLHQsZSl9O3ZhciBsVj17bmFtZToiZHJhZyJ9LGNWPXtuYW1lOiJzcGFjZSJ9LHVWPXtuYW1lOiJoYW5kbGUifSxoVj17bmFtZToiY2VudGVyIn0sZFY9e25hbWU6IngiLGhhbmRsZXM6WyJlIiwidyJdLm1hcChiViksaW5wdXQ6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdCYmW1t0WzBdLGVbMF1bMV1dLFt0WzFdLGVbMV1bMV1dXX0sb3V0cHV0OmZ1bmN0aW9uKHQpe3JldHVybiB0JiZbdFswXVswXSx0WzFdWzBdXX19LHBWPXtuYW1lOiJ5IixoYW5kbGVzOlsibiIsInMiXS5tYXAoYlYpLGlucHV0OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQmJltbZVswXVswXSx0WzBdXSxbZVsxXVswXSx0WzFdXV19LG91dHB1dDpmdW5jdGlvbih0KXtyZXR1cm4gdCYmW3RbMF1bMV0sdFsxXVsxXV19fSxmVj17bmFtZToieHkiLGhhbmRsZXM6WyJuIiwiZSIsInMiLCJ3IiwibnciLCJuZSIsInNlIiwic3ciXS5tYXAoYlYpLGlucHV0OmZ1bmN0aW9uKHQpe3JldHVybiB0fSxvdXRwdXQ6ZnVuY3Rpb24odCl7cmV0dXJuIHR9fSxtVj17b3ZlcmxheToiY3Jvc3NoYWlyIixzZWxlY3Rpb246Im1vdmUiLG46Im5zLXJlc2l6ZSIsZToiZXctcmVzaXplIixzOiJucy1yZXNpemUiLHc6ImV3LXJlc2l6ZSIsbnc6Im53c2UtcmVzaXplIixuZToibmVzdy1yZXNpemUiLHNlOiJud3NlLXJlc2l6ZSIsc3c6Im5lc3ctcmVzaXplIn0sZ1Y9e2U6InciLHc6ImUiLG53OiJuZSIsbmU6Im53IixzZToic3ciLHN3OiJzZSJ9LF9WPXtuOiJzIixzOiJuIixudzoic3ciLG5lOiJzZSIsc2U6Im5lIixzdzoibncifSx5Vj17b3ZlcmxheToxLHNlbGVjdGlvbjoxLG46bnVsbCxlOjEsczpudWxsLHc6LTEsbnc6LTEsbmU6MSxzZToxLHN3Oi0xfSx2Vj17b3ZlcmxheToxLHNlbGVjdGlvbjoxLG46LTEsZTpudWxsLHM6MSx3Om51bGwsbnc6LTEsbmU6LTEsc2U6MSxzdzoxfTtmdW5jdGlvbiBiVih0KXtyZXR1cm57dHlwZTp0fX1mdW5jdGlvbiB4Vigpe3JldHVybiF6RC5idXR0b259ZnVuY3Rpb24gd1YoKXt2YXIgdD10aGlzLm93bmVyU1ZHRWxlbWVudHx8dGhpcztyZXR1cm5bWzAsMF0sW3Qud2lkdGguYmFzZVZhbC52YWx1ZSx0LmhlaWdodC5iYXNlVmFsLnZhbHVlXV19ZnVuY3Rpb24gU1YodCl7Zm9yKDshdC5fX2JydXNoOylpZighKHQ9dC5wYXJlbnROb2RlKSlyZXR1cm47cmV0dXJuIHQuX19icnVzaH1mdW5jdGlvbiBNVih0KXtyZXR1cm4gdFswXVswXT09PXRbMV1bMF18fHRbMF1bMV09PT10WzFdWzFdfWZ1bmN0aW9uIEVWKHQpe3ZhciBlLG49d1YsaT14VixyPVJ6KGEsInN0YXJ0IiwiYnJ1c2giLCJlbmQiKSxvPTY7ZnVuY3Rpb24gYShlKXt2YXIgbj1lLnByb3BlcnR5KCJfX2JydXNoIixoKS5zZWxlY3RBbGwoIi5vdmVybGF5IikuZGF0YShbYlYoIm92ZXJsYXkiKV0pO24uZW50ZXIoKS5hcHBlbmQoInJlY3QiKS5hdHRyKCJjbGFzcyIsIm92ZXJsYXkiKS5hdHRyKCJwb2ludGVyLWV2ZW50cyIsImFsbCIpLmF0dHIoImN1cnNvciIsbVYub3ZlcmxheSkubWVyZ2UobikuZWFjaCgoZnVuY3Rpb24oKXt2YXIgdD1TVih0aGlzKS5leHRlbnQ7WEQodGhpcykuYXR0cigieCIsdFswXVswXSkuYXR0cigieSIsdFswXVsxXSkuYXR0cigid2lkdGgiLHRbMV1bMF0tdFswXVswXSkuYXR0cigiaGVpZ2h0Iix0WzFdWzFdLXRbMF1bMV0pfSkpLGUuc2VsZWN0QWxsKCIuc2VsZWN0aW9uIikuZGF0YShbYlYoInNlbGVjdGlvbiIpXSkuZW50ZXIoKS5hcHBlbmQoInJlY3QiKS5hdHRyKCJjbGFzcyIsInNlbGVjdGlvbiIpLmF0dHIoImN1cnNvciIsbVYuc2VsZWN0aW9uKS5hdHRyKCJmaWxsIiwiIzc3NyIpLmF0dHIoImZpbGwtb3BhY2l0eSIsLjMpLmF0dHIoInN0cm9rZSIsIiNmZmYiKS5hdHRyKCJzaGFwZS1yZW5kZXJpbmciLCJjcmlzcEVkZ2VzIik7dmFyIGk9ZS5zZWxlY3RBbGwoIi5oYW5kbGUiKS5kYXRhKHQuaGFuZGxlcywoZnVuY3Rpb24odCl7cmV0dXJuIHQudHlwZX0pKTtpLmV4aXQoKS5yZW1vdmUoKSxpLmVudGVyKCkuYXBwZW5kKCJyZWN0IikuYXR0cigiY2xhc3MiLChmdW5jdGlvbih0KXtyZXR1cm4iaGFuZGxlIGhhbmRsZS0tIit0LnR5cGV9KSkuYXR0cigiY3Vyc29yIiwoZnVuY3Rpb24odCl7cmV0dXJuIG1WW3QudHlwZV19KSksZS5lYWNoKHMpLmF0dHIoImZpbGwiLCJub25lIikuYXR0cigicG9pbnRlci1ldmVudHMiLCJhbGwiKS5zdHlsZSgiLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yIiwicmdiYSgwLDAsMCwwKSIpLm9uKCJtb3VzZWRvd24uYnJ1c2ggdG91Y2hzdGFydC5icnVzaCIsdSl9ZnVuY3Rpb24gcygpe3ZhciB0PVhEKHRoaXMpLGU9U1YodGhpcykuc2VsZWN0aW9uO2U/KHQuc2VsZWN0QWxsKCIuc2VsZWN0aW9uIikuc3R5bGUoImRpc3BsYXkiLG51bGwpLmF0dHIoIngiLGVbMF1bMF0pLmF0dHIoInkiLGVbMF1bMV0pLmF0dHIoIndpZHRoIixlWzFdWzBdLWVbMF1bMF0pLmF0dHIoImhlaWdodCIsZVsxXVsxXS1lWzBdWzFdKSx0LnNlbGVjdEFsbCgiLmhhbmRsZSIpLnN0eWxlKCJkaXNwbGF5IixudWxsKS5hdHRyKCJ4IiwoZnVuY3Rpb24odCl7cmV0dXJuImUiPT09dC50eXBlW3QudHlwZS5sZW5ndGgtMV0/ZVsxXVswXS1vLzI6ZVswXVswXS1vLzJ9KSkuYXR0cigieSIsKGZ1bmN0aW9uKHQpe3JldHVybiJzIj09PXQudHlwZVswXT9lWzFdWzFdLW8vMjplWzBdWzFdLW8vMn0pKS5hdHRyKCJ3aWR0aCIsKGZ1bmN0aW9uKHQpe3JldHVybiJuIj09PXQudHlwZXx8InMiPT09dC50eXBlP2VbMV1bMF0tZVswXVswXStvOm99KSkuYXR0cigiaGVpZ2h0IiwoZnVuY3Rpb24odCl7cmV0dXJuImUiPT09dC50eXBlfHwidyI9PT10LnR5cGU/ZVsxXVsxXS1lWzBdWzFdK286b30pKSk6dC5zZWxlY3RBbGwoIi5zZWxlY3Rpb24sLmhhbmRsZSIpLnN0eWxlKCJkaXNwbGF5Iiwibm9uZSIpLmF0dHIoIngiLG51bGwpLmF0dHIoInkiLG51bGwpLmF0dHIoIndpZHRoIixudWxsKS5hdHRyKCJoZWlnaHQiLG51bGwpfWZ1bmN0aW9uIGwodCxlKXtyZXR1cm4gdC5fX2JydXNoLmVtaXR0ZXJ8fG5ldyBjKHQsZSl9ZnVuY3Rpb24gYyh0LGUpe3RoaXMudGhhdD10LHRoaXMuYXJncz1lLHRoaXMuc3RhdGU9dC5fX2JydXNoLHRoaXMuYWN0aXZlPTB9ZnVuY3Rpb24gdSgpe2lmKHpELnRvdWNoZXMpe2lmKHpELmNoYW5nZWRUb3VjaGVzLmxlbmd0aDx6RC50b3VjaGVzLmxlbmd0aClyZXR1cm4gb1YoKX1lbHNlIGlmKGUpcmV0dXJuO2lmKGkuYXBwbHkodGhpcyxhcmd1bWVudHMpKXt2YXIgbixyLG8sYSxjLHUsaCxkLHAsZixtLGcsXyx5PXRoaXMsdj16RC50YXJnZXQuX19kYXRhX18udHlwZSxiPSJzZWxlY3Rpb24iPT09KHpELm1ldGFLZXk/dj0ib3ZlcmxheSI6dik/bFY6ekQuYWx0S2V5P2hWOnVWLHg9dD09PXBWP251bGw6eVZbdl0sdz10PT09ZFY/bnVsbDp2Vlt2XSxTPVNWKHkpLE09Uy5leHRlbnQsRT1TLnNlbGVjdGlvbixUPU1bMF1bMF0sQz1NWzBdWzFdLEE9TVsxXVswXSxrPU1bMV1bMV0sTD14JiZ3JiZ6RC5zaGlmdEtleSxQPSREKHkpLE49UCxJPWwoeSxhcmd1bWVudHMpLmJlZm9yZXN0YXJ0KCk7Im92ZXJsYXkiPT09dj9TLnNlbGVjdGlvbj1FPVtbbj10PT09cFY/VDpQWzBdLG89dD09PWRWP0M6UFsxXV0sW2M9dD09PXBWP0E6bixoPXQ9PT1kVj9rOm9dXToobj1FWzBdWzBdLG89RVswXVsxXSxjPUVbMV1bMF0saD1FWzFdWzFdKSxyPW4sYT1vLHU9YyxkPWg7dmFyIFI9WEQoeSkuYXR0cigicG9pbnRlci1ldmVudHMiLCJub25lIiksTz1SLnNlbGVjdEFsbCgiLm92ZXJsYXkiKS5hdHRyKCJjdXJzb3IiLG1WW3ZdKTtpZih6RC50b3VjaGVzKVIub24oInRvdWNobW92ZS5icnVzaCIsRCwhMCkub24oInRvdWNoZW5kLmJydXNoIHRvdWNoY2FuY2VsLmJydXNoIixILCEwKTtlbHNle3ZhciB6PVhEKHpELnZpZXcpLm9uKCJrZXlkb3duLmJydXNoIixGLCEwKS5vbigia2V5dXAuYnJ1c2giLFYsITApLm9uKCJtb3VzZW1vdmUuYnJ1c2giLEQsITApLm9uKCJtb3VzZXVwLmJydXNoIixILCEwKTtaRCh6RC52aWV3KX1yVigpLHJGKHkpLHMuY2FsbCh5KSxJLnN0YXJ0KCl9ZnVuY3Rpb24gRCgpe3ZhciB0PSREKHkpOyFMfHxnfHxffHwoTWF0aC5hYnModFswXS1OWzBdKT5NYXRoLmFicyh0WzFdLU5bMV0pP189ITA6Zz0hMCksTj10LG09ITAsb1YoKSxCKCl9ZnVuY3Rpb24gQigpe3ZhciB0O3N3aXRjaChwPU5bMF0tUFswXSxmPU5bMV0tUFsxXSxiKXtjYXNlIGNWOmNhc2UgbFY6eCYmKHA9TWF0aC5tYXgoVC1uLE1hdGgubWluKEEtYyxwKSkscj1uK3AsdT1jK3ApLHcmJihmPU1hdGgubWF4KEMtbyxNYXRoLm1pbihrLWgsZikpLGE9bytmLGQ9aCtmKTticmVhaztjYXNlIHVWOng8MD8ocD1NYXRoLm1heChULW4sTWF0aC5taW4oQS1uLHApKSxyPW4rcCx1PWMpOng+MCYmKHA9TWF0aC5tYXgoVC1jLE1hdGgubWluKEEtYyxwKSkscj1uLHU9YytwKSx3PDA/KGY9TWF0aC5tYXgoQy1vLE1hdGgubWluKGstbyxmKSksYT1vK2YsZD1oKTp3PjAmJihmPU1hdGgubWF4KEMtaCxNYXRoLm1pbihrLWgsZikpLGE9byxkPWgrZik7YnJlYWs7Y2FzZSBoVjp4JiYocj1NYXRoLm1heChULE1hdGgubWluKEEsbi1wKngpKSx1PU1hdGgubWF4KFQsTWF0aC5taW4oQSxjK3AqeCkpKSx3JiYoYT1NYXRoLm1heChDLE1hdGgubWluKGssby1mKncpKSxkPU1hdGgubWF4KEMsTWF0aC5taW4oayxoK2YqdykpKX11PHImJih4Kj0tMSx0PW4sbj1jLGM9dCx0PXIscj11LHU9dCx2IGluIGdWJiZPLmF0dHIoImN1cnNvciIsbVZbdj1nVlt2XV0pKSxkPGEmJih3Kj0tMSx0PW8sbz1oLGg9dCx0PWEsYT1kLGQ9dCx2IGluIF9WJiZPLmF0dHIoImN1cnNvciIsbVZbdj1fVlt2XV0pKSxTLnNlbGVjdGlvbiYmKEU9Uy5zZWxlY3Rpb24pLGcmJihyPUVbMF1bMF0sdT1FWzFdWzBdKSxfJiYoYT1FWzBdWzFdLGQ9RVsxXVsxXSksRVswXVswXT09PXImJkVbMF1bMV09PT1hJiZFWzFdWzBdPT09dSYmRVsxXVsxXT09PWR8fChTLnNlbGVjdGlvbj1bW3IsYV0sW3UsZF1dLHMuY2FsbCh5KSxJLmJydXNoKCkpfWZ1bmN0aW9uIEgoKXtpZihyVigpLHpELnRvdWNoZXMpe2lmKHpELnRvdWNoZXMubGVuZ3RoKXJldHVybjtlJiZjbGVhclRpbWVvdXQoZSksZT1zZXRUaW1lb3V0KChmdW5jdGlvbigpe2U9bnVsbH0pLDUwMCksUi5vbigidG91Y2htb3ZlLmJydXNoIHRvdWNoZW5kLmJydXNoIHRvdWNoY2FuY2VsLmJydXNoIixudWxsKX1lbHNlIEpEKHpELnZpZXcsbSksei5vbigia2V5ZG93bi5icnVzaCBrZXl1cC5icnVzaCBtb3VzZW1vdmUuYnJ1c2ggbW91c2V1cC5icnVzaCIsbnVsbCk7Ui5hdHRyKCJwb2ludGVyLWV2ZW50cyIsImFsbCIpLE8uYXR0cigiY3Vyc29yIixtVi5vdmVybGF5KSxTLnNlbGVjdGlvbiYmKEU9Uy5zZWxlY3Rpb24pLE1WKEUpJiYoUy5zZWxlY3Rpb249bnVsbCxzLmNhbGwoeSkpLEkuZW5kKCl9ZnVuY3Rpb24gRigpe3N3aXRjaCh6RC5rZXlDb2RlKXtjYXNlIDE2Okw9eCYmdzticmVhaztjYXNlIDE4OmI9PT11ViYmKHgmJihjPXUtcCp4LG49citwKngpLHcmJihoPWQtZip3LG89YStmKncpLGI9aFYsQigpKTticmVhaztjYXNlIDMyOmIhPT11ViYmYiE9PWhWfHwoeDwwP2M9dS1wOng+MCYmKG49ci1wKSx3PDA/aD1kLWY6dz4wJiYobz1hLWYpLGI9Y1YsTy5hdHRyKCJjdXJzb3IiLG1WLnNlbGVjdGlvbiksQigpKTticmVhaztkZWZhdWx0OnJldHVybn1vVigpfWZ1bmN0aW9uIFYoKXtzd2l0Y2goekQua2V5Q29kZSl7Y2FzZSAxNjpMJiYoZz1fPUw9ITEsQigpKTticmVhaztjYXNlIDE4OmI9PT1oViYmKHg8MD9jPXU6eD4wJiYobj1yKSx3PDA/aD1kOnc+MCYmKG89YSksYj11VixCKCkpO2JyZWFrO2Nhc2UgMzI6Yj09PWNWJiYoekQuYWx0S2V5Pyh4JiYoYz11LXAqeCxuPXIrcCp4KSx3JiYoaD1kLWYqdyxvPWErZip3KSxiPWhWKTooeDwwP2M9dTp4PjAmJihuPXIpLHc8MD9oPWQ6dz4wJiYobz1hKSxiPXVWKSxPLmF0dHIoImN1cnNvciIsbVZbdl0pLEIoKSk7YnJlYWs7ZGVmYXVsdDpyZXR1cm59b1YoKX19ZnVuY3Rpb24gaCgpe3ZhciBlPXRoaXMuX19icnVzaHx8e3NlbGVjdGlvbjpudWxsfTtyZXR1cm4gZS5leHRlbnQ9bi5hcHBseSh0aGlzLGFyZ3VtZW50cyksZS5kaW09dCxlfXJldHVybiBhLm1vdmU9ZnVuY3Rpb24oZSxuKXtlLnNlbGVjdGlvbj9lLm9uKCJzdGFydC5icnVzaCIsKGZ1bmN0aW9uKCl7bCh0aGlzLGFyZ3VtZW50cykuYmVmb3Jlc3RhcnQoKS5zdGFydCgpfSkpLm9uKCJpbnRlcnJ1cHQuYnJ1c2ggZW5kLmJydXNoIiwoZnVuY3Rpb24oKXtsKHRoaXMsYXJndW1lbnRzKS5lbmQoKX0pKS50d2VlbigiYnJ1c2giLChmdW5jdGlvbigpe3ZhciBlPXRoaXMsaT1lLl9fYnJ1c2gscj1sKGUsYXJndW1lbnRzKSxvPWkuc2VsZWN0aW9uLGE9dC5pbnB1dCgiZnVuY3Rpb24iPT10eXBlb2Ygbj9uLmFwcGx5KHRoaXMsYXJndW1lbnRzKTpuLGkuZXh0ZW50KSxjPXhIKG8sYSk7ZnVuY3Rpb24gdSh0KXtpLnNlbGVjdGlvbj0xPT09dCYmTVYoYSk/bnVsbDpjKHQpLHMuY2FsbChlKSxyLmJydXNoKCl9cmV0dXJuIG8mJmE/dTp1KDEpfSkpOmUuZWFjaCgoZnVuY3Rpb24oKXt2YXIgZT10aGlzLGk9YXJndW1lbnRzLHI9ZS5fX2JydXNoLG89dC5pbnB1dCgiZnVuY3Rpb24iPT10eXBlb2Ygbj9uLmFwcGx5KGUsaSk6bixyLmV4dGVudCksYT1sKGUsaSkuYmVmb3Jlc3RhcnQoKTtyRihlKSxyLnNlbGVjdGlvbj1udWxsPT1vfHxNVihvKT9udWxsOm8scy5jYWxsKGUpLGEuc3RhcnQoKS5icnVzaCgpLmVuZCgpfSkpfSxjLnByb3RvdHlwZT17YmVmb3Jlc3RhcnQ6ZnVuY3Rpb24oKXtyZXR1cm4gMT09Kyt0aGlzLmFjdGl2ZSYmKHRoaXMuc3RhdGUuZW1pdHRlcj10aGlzLHRoaXMuc3RhcnRpbmc9ITApLHRoaXN9LHN0YXJ0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc3RhcnRpbmcmJih0aGlzLnN0YXJ0aW5nPSExLHRoaXMuZW1pdCgic3RhcnQiKSksdGhpc30sYnJ1c2g6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lbWl0KCJicnVzaCIpLHRoaXN9LGVuZDpmdW5jdGlvbigpe3JldHVybiAwPT0tLXRoaXMuYWN0aXZlJiYoZGVsZXRlIHRoaXMuc3RhdGUuZW1pdHRlcix0aGlzLmVtaXQoImVuZCIpKSx0aGlzfSxlbWl0OmZ1bmN0aW9uKGUpeyEoZnVuY3Rpb24gbih0LGUsaSxyKXt2YXIgbz16RDt0LnNvdXJjZUV2ZW50PXpELHpEPXQ7dHJ5e3JldHVybiBlLmFwcGx5KGkscil9ZmluYWxseXt6RD1vfX0pKG5ldyBpVihhLGUsdC5vdXRwdXQodGhpcy5zdGF0ZS5zZWxlY3Rpb24pKSxyLmFwcGx5LHIsW2UsdGhpcy50aGF0LHRoaXMuYXJnc10pfX0sYS5leHRlbnQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpuVihbWyt0WzBdWzBdLCt0WzBdWzFdXSxbK3RbMV1bMF0sK3RbMV1bMV1dXSksYSk6bn0sYS5maWx0ZXI9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpuVighIXQpLGEpOml9LGEuaGFuZGxlU2l6ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz0rdCxhKTpvfSxhLm9uPWZ1bmN0aW9uKCl7dmFyIHQ9ci5vbi5hcHBseShyLGFyZ3VtZW50cyk7cmV0dXJuIHQ9PT1yP2E6dH0sYX1mdW5jdGlvbiBUVih0LGUpe3JldHVybiB0PGU/LTE6dD5lPzE6dD49ZT8wOk5hTn1mdW5jdGlvbiBDVih0LGUsbil7dD0rdCxlPStlLG49KHI9YXJndW1lbnRzLmxlbmd0aCk8Mj8oZT10LHQ9MCwxKTpyPDM/MTorbjtmb3IodmFyIGk9LTEscj0wfE1hdGgubWF4KDAsTWF0aC5jZWlsKChlLXQpL24pKSxvPW5ldyBBcnJheShyKTsrK2k8cjspb1tpXT10K2kqbjtyZXR1cm4gb30hKGZ1bmN0aW9uIEFWKHQpe3JldHVybiAxPT09dC5sZW5ndGgmJih0PShmdW5jdGlvbiBlKHQpe3JldHVybiBmdW5jdGlvbihlLG4pe3JldHVybiBUVih0KGUpLG4pfX0pKHQpKSx7bGVmdDpmdW5jdGlvbihlLG4saSxyKXtmb3IobnVsbD09aSYmKGk9MCksbnVsbD09ciYmKHI9ZS5sZW5ndGgpO2k8cjspe3ZhciBvPWkrcj4+PjE7dChlW29dLG4pPDA/aT1vKzE6cj1vfXJldHVybiBpfSxyaWdodDpmdW5jdGlvbihlLG4saSxyKXtmb3IobnVsbD09aSYmKGk9MCksbnVsbD09ciYmKHI9ZS5sZW5ndGgpO2k8cjspe3ZhciBvPWkrcj4+PjE7dChlW29dLG4pPjA/cj1vOmk9bysxfXJldHVybiBpfX19KShUVik7dmFyIGtWPU1hdGguY29zLExWPU1hdGguc2luLFBWPU1hdGguUEksTlY9UFYvMixJVj0yKlBWLFJWPU1hdGgubWF4O2Z1bmN0aW9uIE9WKHQpe3JldHVybiBmdW5jdGlvbihlLG4pe3JldHVybiB0KGUuc291cmNlLnZhbHVlK2UudGFyZ2V0LnZhbHVlLG4uc291cmNlLnZhbHVlK24udGFyZ2V0LnZhbHVlKX19dmFyIHpWPUFycmF5LnByb3RvdHlwZS5zbGljZTtmdW5jdGlvbiBEVih0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19dmFyIEJWPU1hdGguUEksSFY9MipCVixGVj0xZS02LFZWPUhWLUZWO2Z1bmN0aW9uIFVWKCl7dGhpcy5feDA9dGhpcy5feTA9dGhpcy5feDE9dGhpcy5feTE9bnVsbCx0aGlzLl89IiJ9ZnVuY3Rpb24galYoKXtyZXR1cm4gbmV3IFVWfWZ1bmN0aW9uIEdWKHQpe3JldHVybiB0LnNvdXJjZX1mdW5jdGlvbiBXVih0KXtyZXR1cm4gdC50YXJnZXR9ZnVuY3Rpb24gcVYodCl7cmV0dXJuIHQucmFkaXVzfWZ1bmN0aW9uIFlWKHQpe3JldHVybiB0LnN0YXJ0QW5nbGV9ZnVuY3Rpb24gWFYodCl7cmV0dXJuIHQuZW5kQW5nbGV9VVYucHJvdG90eXBlPWpWLnByb3RvdHlwZT17Y29uc3RydWN0b3I6VVYsbW92ZVRvOmZ1bmN0aW9uKHQsZSl7dGhpcy5fKz0iTSIrKHRoaXMuX3gwPXRoaXMuX3gxPSt0KSsiLCIrKHRoaXMuX3kwPXRoaXMuX3kxPStlKX0sY2xvc2VQYXRoOmZ1bmN0aW9uKCl7bnVsbCE9PXRoaXMuX3gxJiYodGhpcy5feDE9dGhpcy5feDAsdGhpcy5feTE9dGhpcy5feTAsdGhpcy5fKz0iWiIpfSxsaW5lVG86ZnVuY3Rpb24odCxlKXt0aGlzLl8rPSJMIisodGhpcy5feDE9K3QpKyIsIisodGhpcy5feTE9K2UpfSxxdWFkcmF0aWNDdXJ2ZVRvOmZ1bmN0aW9uKHQsZSxuLGkpe3RoaXMuXys9IlEiKyArdCsiLCIrICtlKyIsIisodGhpcy5feDE9K24pKyIsIisodGhpcy5feTE9K2kpfSxiZXppZXJDdXJ2ZVRvOmZ1bmN0aW9uKHQsZSxuLGkscixvKXt0aGlzLl8rPSJDIisgK3QrIiwiKyArZSsiLCIrICtuKyIsIisgK2krIiwiKyh0aGlzLl94MT0rcikrIiwiKyh0aGlzLl95MT0rbyl9LGFyY1RvOmZ1bmN0aW9uKHQsZSxuLGkscil7dmFyIG89dGhpcy5feDEsYT10aGlzLl95MSxzPShuPStuKS0odD0rdCksbD0oaT0raSktKGU9K2UpLGM9by10LHU9YS1lLGg9YypjK3UqdTtpZigocj0rcik8MCl0aHJvdyBuZXcgRXJyb3IoIm5lZ2F0aXZlIHJhZGl1czogIityKTtpZihudWxsPT09dGhpcy5feDEpdGhpcy5fKz0iTSIrKHRoaXMuX3gxPXQpKyIsIisodGhpcy5feTE9ZSk7ZWxzZSBpZihoPkZWKWlmKE1hdGguYWJzKHUqcy1sKmMpPkZWJiZyKXt2YXIgZD1uLW8scD1pLWEsZj1zKnMrbCpsLG09ZCpkK3AqcCxnPU1hdGguc3FydChmKSxfPU1hdGguc3FydChoKSx5PXIqTWF0aC50YW4oKEJWLU1hdGguYWNvcygoZitoLW0pLygyKmcqXykpKS8yKSx2PXkvXyxiPXkvZztNYXRoLmFicyh2LTEpPkZWJiYodGhpcy5fKz0iTCIrKHQrdipjKSsiLCIrKGUrdip1KSksdGhpcy5fKz0iQSIrcisiLCIrcisiLDAsMCwiKyArKHUqZD5jKnApKyIsIisodGhpcy5feDE9dCtiKnMpKyIsIisodGhpcy5feTE9ZStiKmwpfWVsc2UgdGhpcy5fKz0iTCIrKHRoaXMuX3gxPXQpKyIsIisodGhpcy5feTE9ZSk7ZWxzZTt9LGFyYzpmdW5jdGlvbih0LGUsbixpLHIsbyl7dD0rdCxlPStlLG89ISFvO3ZhciBhPShuPStuKSpNYXRoLmNvcyhpKSxzPW4qTWF0aC5zaW4oaSksbD10K2EsYz1lK3MsdT0xXm8saD1vP2ktcjpyLWk7aWYobjwwKXRocm93IG5ldyBFcnJvcigibmVnYXRpdmUgcmFkaXVzOiAiK24pO251bGw9PT10aGlzLl94MT90aGlzLl8rPSJNIitsKyIsIitjOihNYXRoLmFicyh0aGlzLl94MS1sKT5GVnx8TWF0aC5hYnModGhpcy5feTEtYyk+RlYpJiYodGhpcy5fKz0iTCIrbCsiLCIrYyksbiYmKGg8MCYmKGg9aCVIVitIViksaD5WVj90aGlzLl8rPSJBIituKyIsIituKyIsMCwxLCIrdSsiLCIrKHQtYSkrIiwiKyhlLXMpKyJBIituKyIsIituKyIsMCwxLCIrdSsiLCIrKHRoaXMuX3gxPWwpKyIsIisodGhpcy5feTE9Yyk6aD5GViYmKHRoaXMuXys9IkEiK24rIiwiK24rIiwwLCIrICsoaD49QlYpKyIsIit1KyIsIisodGhpcy5feDE9dCtuKk1hdGguY29zKHIpKSsiLCIrKHRoaXMuX3kxPWUrbipNYXRoLnNpbihyKSkpKX0scmVjdDpmdW5jdGlvbih0LGUsbixpKXt0aGlzLl8rPSJNIisodGhpcy5feDA9dGhpcy5feDE9K3QpKyIsIisodGhpcy5feTA9dGhpcy5feTE9K2UpKyJoIisgK24rInYiKyAraSsiaCIrLW4rIloifSx0b1N0cmluZzpmdW5jdGlvbigpe3JldHVybiB0aGlzLl99fTt2YXIgJFY9IiQiO2Z1bmN0aW9uIEtWKCl7fWZ1bmN0aW9uIFpWKHQsZSl7dmFyIG49bmV3IEtWO2lmKHQgaW5zdGFuY2VvZiBLVil0LmVhY2goKGZ1bmN0aW9uKHQsZSl7bi5zZXQoZSx0KX0pKTtlbHNlIGlmKEFycmF5LmlzQXJyYXkodCkpe3ZhciBpLHI9LTEsbz10Lmxlbmd0aDtpZihudWxsPT1lKWZvcig7KytyPG87KW4uc2V0KHIsdFtyXSk7ZWxzZSBmb3IoOysrcjxvOyluLnNldChlKGk9dFtyXSxyLHQpLGkpfWVsc2UgaWYodClmb3IodmFyIGEgaW4gdCluLnNldChhLHRbYV0pO3JldHVybiBufWZ1bmN0aW9uIEpWKCl7cmV0dXJue319ZnVuY3Rpb24gUVYodCxlLG4pe3RbZV09bn1mdW5jdGlvbiB0VSgpe3JldHVybiBaVigpfWZ1bmN0aW9uIGVVKHQsZSxuKXt0LnNldChlLG4pfWZ1bmN0aW9uIG5VKCl7fUtWLnByb3RvdHlwZT1aVi5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOktWLGhhczpmdW5jdGlvbih0KXtyZXR1cm4gJFYrdCBpbiB0aGlzfSxnZXQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXNbJFYrdF19LHNldDpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzWyRWK3RdPWUsdGhpc30scmVtb3ZlOmZ1bmN0aW9uKHQpe3ZhciBlPSRWK3Q7cmV0dXJuIGUgaW4gdGhpcyYmZGVsZXRlIHRoaXNbZV19LGNsZWFyOmZ1bmN0aW9uKCl7Zm9yKHZhciB0IGluIHRoaXMpdFswXT09PSRWJiZkZWxldGUgdGhpc1t0XX0sa2V5czpmdW5jdGlvbigpe3ZhciB0PVtdO2Zvcih2YXIgZSBpbiB0aGlzKWVbMF09PT0kViYmdC5wdXNoKGUuc2xpY2UoMSkpO3JldHVybiB0fSx2YWx1ZXM6ZnVuY3Rpb24oKXt2YXIgdD1bXTtmb3IodmFyIGUgaW4gdGhpcyllWzBdPT09JFYmJnQucHVzaCh0aGlzW2VdKTtyZXR1cm4gdH0sZW50cmllczpmdW5jdGlvbigpe3ZhciB0PVtdO2Zvcih2YXIgZSBpbiB0aGlzKWVbMF09PT0kViYmdC5wdXNoKHtrZXk6ZS5zbGljZSgxKSx2YWx1ZTp0aGlzW2VdfSk7cmV0dXJuIHR9LHNpemU6ZnVuY3Rpb24oKXt2YXIgdD0wO2Zvcih2YXIgZSBpbiB0aGlzKWVbMF09PT0kViYmKyt0O3JldHVybiB0fSxlbXB0eTpmdW5jdGlvbigpe2Zvcih2YXIgdCBpbiB0aGlzKWlmKHRbMF09PT0kVilyZXR1cm4hMTtyZXR1cm4hMH0sZWFjaDpmdW5jdGlvbih0KXtmb3IodmFyIGUgaW4gdGhpcyllWzBdPT09JFYmJnQodGhpc1tlXSxlLnNsaWNlKDEpLHRoaXMpfX07dmFyIGlVPVpWLnByb3RvdHlwZTtmdW5jdGlvbiByVSh0LGUpe3ZhciBuPW5ldyBuVTtpZih0IGluc3RhbmNlb2YgblUpdC5lYWNoKChmdW5jdGlvbih0KXtuLmFkZCh0KX0pKTtlbHNlIGlmKHQpe3ZhciBpPS0xLHI9dC5sZW5ndGg7aWYobnVsbD09ZSlmb3IoOysraTxyOyluLmFkZCh0W2ldKTtlbHNlIGZvcig7KytpPHI7KW4uYWRkKGUodFtpXSxpLHQpKX1yZXR1cm4gbn1mdW5jdGlvbiBvVSh0LGUsbil7dC5wcm90b3R5cGU9ZS5wcm90b3R5cGU9bixuLmNvbnN0cnVjdG9yPXR9ZnVuY3Rpb24gYVUodCxlKXt2YXIgbj1PYmplY3QuY3JlYXRlKHQucHJvdG90eXBlKTtmb3IodmFyIGkgaW4gZSluW2ldPWVbaV07cmV0dXJuIG59ZnVuY3Rpb24gc1UoKXt9blUucHJvdG90eXBlPXJVLnByb3RvdHlwZT17Y29uc3RydWN0b3I6blUsaGFzOmlVLmhhcyxhZGQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXNbJFYrKHQrPSIiKV09dCx0aGlzfSxyZW1vdmU6aVUucmVtb3ZlLGNsZWFyOmlVLmNsZWFyLHZhbHVlczppVS5rZXlzLHNpemU6aVUuc2l6ZSxlbXB0eTppVS5lbXB0eSxlYWNoOmlVLmVhY2h9O3ZhciBsVT0uNyxjVT0xL2xVLHVVPSJcXHMqKFsrLV0/XFxkKylcXHMqIixoVT0iXFxzKihbKy1dP1xcZCpcXC4/XFxkKyg/OltlRV1bKy1dP1xcZCspPylcXHMqIixkVT0iXFxzKihbKy1dP1xcZCpcXC4/XFxkKyg/OltlRV1bKy1dP1xcZCspPyklXFxzKiIscFU9L14jKFswLTlhLWZdezN9KSQvLGZVPS9eIyhbMC05YS1mXXs2fSkkLyxtVT1uZXcgUmVnRXhwKCJecmdiXFwoIitbdVUsdVUsdVVdKyJcXCkkIiksZ1U9bmV3IFJlZ0V4cCgiXnJnYlxcKCIrW2RVLGRVLGRVXSsiXFwpJCIpLF9VPW5ldyBSZWdFeHAoIl5yZ2JhXFwoIitbdVUsdVUsdVUsaFVdKyJcXCkkIikseVU9bmV3IFJlZ0V4cCgiXnJnYmFcXCgiK1tkVSxkVSxkVSxoVV0rIlxcKSQiKSx2VT1uZXcgUmVnRXhwKCJeaHNsXFwoIitbaFUsZFUsZFVdKyJcXCkkIiksYlU9bmV3IFJlZ0V4cCgiXmhzbGFcXCgiK1toVSxkVSxkVSxoVV0rIlxcKSQiKSx4VT17YWxpY2VibHVlOjE1NzkyMzgzLGFudGlxdWV3aGl0ZToxNjQ0NDM3NSxhcXVhOjY1NTM1LGFxdWFtYXJpbmU6ODM4ODU2NCxhenVyZToxNTc5NDE3NSxiZWlnZToxNjExOTI2MCxiaXNxdWU6MTY3NzAyNDQsYmxhY2s6MCxibGFuY2hlZGFsbW9uZDoxNjc3MjA0NSxibHVlOjI1NSxibHVldmlvbGV0OjkwNTUyMDIsYnJvd246MTA4MjQyMzQsYnVybHl3b29kOjE0NTk2MjMxLGNhZGV0Ymx1ZTo2MjY2NTI4LGNoYXJ0cmV1c2U6ODM4ODM1MixjaG9jb2xhdGU6MTM3ODk0NzAsY29yYWw6MTY3NDQyNzIsY29ybmZsb3dlcmJsdWU6NjU5MTk4MSxjb3Juc2lsazoxNjc3NTM4OCxjcmltc29uOjE0NDIzMTAwLGN5YW46NjU1MzUsZGFya2JsdWU6MTM5LGRhcmtjeWFuOjM1NzIzLGRhcmtnb2xkZW5yb2Q6MTIwOTI5MzksZGFya2dyYXk6MTExMTkwMTcsZGFya2dyZWVuOjI1NjAwLGRhcmtncmV5OjExMTE5MDE3LGRhcmtraGFraToxMjQzMzI1OSxkYXJrbWFnZW50YTo5MTA5NjQzLGRhcmtvbGl2ZWdyZWVuOjU1OTc5OTksZGFya29yYW5nZToxNjc0NzUyMCxkYXJrb3JjaGlkOjEwMDQwMDEyLGRhcmtyZWQ6OTEwOTUwNCxkYXJrc2FsbW9uOjE1MzA4NDEwLGRhcmtzZWFncmVlbjo5NDE5OTE5LGRhcmtzbGF0ZWJsdWU6NDczNDM0NyxkYXJrc2xhdGVncmF5OjMxMDA0OTUsZGFya3NsYXRlZ3JleTozMTAwNDk1LGRhcmt0dXJxdW9pc2U6NTI5NDUsZGFya3Zpb2xldDo5Njk5NTM5LGRlZXBwaW5rOjE2NzE2OTQ3LGRlZXBza3libHVlOjQ5MTUxLGRpbWdyYXk6NjkwODI2NSxkaW1ncmV5OjY5MDgyNjUsZG9kZ2VyYmx1ZToyMDAzMTk5LGZpcmVicmljazoxMTY3NDE0NixmbG9yYWx3aGl0ZToxNjc3NTkyMCxmb3Jlc3RncmVlbjoyMjYzODQyLGZ1Y2hzaWE6MTY3MTE5MzUsZ2FpbnNib3JvOjE0NDc0NDYwLGdob3N0d2hpdGU6MTYzMTY2NzEsZ29sZDoxNjc2NjcyMCxnb2xkZW5yb2Q6MTQzMjkxMjAsZ3JheTo4NDIxNTA0LGdyZWVuOjMyNzY4LGdyZWVueWVsbG93OjExNDAzMDU1LGdyZXk6ODQyMTUwNCxob25leWRldzoxNTc5NDE2MCxob3RwaW5rOjE2NzM4NzQwLGluZGlhbnJlZDoxMzQ1ODUyNCxpbmRpZ286NDkxNTMzMCxpdm9yeToxNjc3NzIwMCxraGFraToxNTc4NzY2MCxsYXZlbmRlcjoxNTEzMjQxMCxsYXZlbmRlcmJsdXNoOjE2NzczMzY1LGxhd25ncmVlbjo4MTkwOTc2LGxlbW9uY2hpZmZvbjoxNjc3NTg4NSxsaWdodGJsdWU6MTEzOTMyNTQsbGlnaHRjb3JhbDoxNTc2MTUzNixsaWdodGN5YW46MTQ3NDU1OTksbGlnaHRnb2xkZW5yb2R5ZWxsb3c6MTY0NDgyMTAsbGlnaHRncmF5OjEzODgyMzIzLGxpZ2h0Z3JlZW46OTQ5ODI1NixsaWdodGdyZXk6MTM4ODIzMjMsbGlnaHRwaW5rOjE2NzU4NDY1LGxpZ2h0c2FsbW9uOjE2NzUyNzYyLGxpZ2h0c2VhZ3JlZW46MjE0Mjg5MCxsaWdodHNreWJsdWU6ODkwMDM0NixsaWdodHNsYXRlZ3JheTo3ODMzNzUzLGxpZ2h0c2xhdGVncmV5Ojc4MzM3NTMsbGlnaHRzdGVlbGJsdWU6MTE1ODQ3MzQsbGlnaHR5ZWxsb3c6MTY3NzcxODQsbGltZTo2NTI4MCxsaW1lZ3JlZW46MzMyOTMzMCxsaW5lbjoxNjQ0NTY3MCxtYWdlbnRhOjE2NzExOTM1LG1hcm9vbjo4Mzg4NjA4LG1lZGl1bWFxdWFtYXJpbmU6NjczNzMyMixtZWRpdW1ibHVlOjIwNSxtZWRpdW1vcmNoaWQ6MTIyMTE2NjcsbWVkaXVtcHVycGxlOjk2NjI2ODMsbWVkaXVtc2VhZ3JlZW46Mzk3ODA5NyxtZWRpdW1zbGF0ZWJsdWU6ODA4Nzc5MCxtZWRpdW1zcHJpbmdncmVlbjo2NDE1NCxtZWRpdW10dXJxdW9pc2U6NDc3MjMwMCxtZWRpdW12aW9sZXRyZWQ6MTMwNDcxNzMsbWlkbmlnaHRibHVlOjE2NDQ5MTIsbWludGNyZWFtOjE2MTIxODUwLG1pc3R5cm9zZToxNjc3MDI3Myxtb2NjYXNpbjoxNjc3MDIyOSxuYXZham93aGl0ZToxNjc2ODY4NSxuYXZ5OjEyOCxvbGRsYWNlOjE2NjQzNTU4LG9saXZlOjg0MjEzNzYsb2xpdmVkcmFiOjcwNDg3Mzksb3JhbmdlOjE2NzUzOTIwLG9yYW5nZXJlZDoxNjcyOTM0NCxvcmNoaWQ6MTQzMTU3MzQscGFsZWdvbGRlbnJvZDoxNTY1NzEzMCxwYWxlZ3JlZW46MTAwMjU4ODAscGFsZXR1cnF1b2lzZToxMTUyOTk2NixwYWxldmlvbGV0cmVkOjE0MzgxMjAzLHBhcGF5YXdoaXA6MTY3NzMwNzcscGVhY2hwdWZmOjE2NzY3NjczLHBlcnU6MTM0Njg5OTEscGluazoxNjc2MTAzNSxwbHVtOjE0NTI0NjM3LHBvd2RlcmJsdWU6MTE1OTE5MTAscHVycGxlOjgzODg3MzYscmViZWNjYXB1cnBsZTo2Njk3ODgxLHJlZDoxNjcxMTY4MCxyb3N5YnJvd246MTIzNTc1MTkscm95YWxibHVlOjQyODY5NDUsc2FkZGxlYnJvd246OTEyNzE4NyxzYWxtb246MTY0MTY4ODIsc2FuZHlicm93bjoxNjAzMjg2NCxzZWFncmVlbjozMDUwMzI3LHNlYXNoZWxsOjE2Nzc0NjM4LHNpZW5uYToxMDUwNjc5NyxzaWx2ZXI6MTI2MzIyNTYsc2t5Ymx1ZTo4OTAwMzMxLHNsYXRlYmx1ZTo2OTcwMDYxLHNsYXRlZ3JheTo3MzcyOTQ0LHNsYXRlZ3JleTo3MzcyOTQ0LHNub3c6MTY3NzU5MzAsc3ByaW5nZ3JlZW46NjU0MDcsc3RlZWxibHVlOjQ2MjA5ODAsdGFuOjEzODA4NzgwLHRlYWw6MzI4OTYsdGhpc3RsZToxNDIwNDg4OCx0b21hdG86MTY3MzcwOTUsdHVycXVvaXNlOjQyNTE4NTYsdmlvbGV0OjE1NjMxMDg2LHdoZWF0OjE2MTEzMzMxLHdoaXRlOjE2Nzc3MjE1LHdoaXRlc21va2U6MTYxMTkyODUseWVsbG93OjE2Nzc2OTYwLHllbGxvd2dyZWVuOjEwMTQ1MDc0fTtmdW5jdGlvbiB3VSh0KXt2YXIgZTtyZXR1cm4gdD0odCsiIikudHJpbSgpLnRvTG93ZXJDYXNlKCksKGU9cFUuZXhlYyh0KSk/bmV3IENVKChlPXBhcnNlSW50KGVbMV0sMTYpKT4+OCYxNXxlPj40JjI0MCxlPj40JjE1fDI0MCZlLCgxNSZlKTw8NHwxNSZlLDEpOihlPWZVLmV4ZWModCkpP1NVKHBhcnNlSW50KGVbMV0sMTYpKTooZT1tVS5leGVjKHQpKT9uZXcgQ1UoZVsxXSxlWzJdLGVbM10sMSk6KGU9Z1UuZXhlYyh0KSk/bmV3IENVKDI1NSplWzFdLzEwMCwyNTUqZVsyXS8xMDAsMjU1KmVbM10vMTAwLDEpOihlPV9VLmV4ZWModCkpP01VKGVbMV0sZVsyXSxlWzNdLGVbNF0pOihlPXlVLmV4ZWModCkpP01VKDI1NSplWzFdLzEwMCwyNTUqZVsyXS8xMDAsMjU1KmVbM10vMTAwLGVbNF0pOihlPXZVLmV4ZWModCkpP0FVKGVbMV0sZVsyXS8xMDAsZVszXS8xMDAsMSk6KGU9YlUuZXhlYyh0KSk/QVUoZVsxXSxlWzJdLzEwMCxlWzNdLzEwMCxlWzRdKTp4VS5oYXNPd25Qcm9wZXJ0eSh0KT9TVSh4VVt0XSk6InRyYW5zcGFyZW50Ij09PXQ/bmV3IENVKE5hTixOYU4sTmFOLDApOm51bGx9ZnVuY3Rpb24gU1UodCl7cmV0dXJuIG5ldyBDVSh0Pj4xNiYyNTUsdD4+OCYyNTUsMjU1JnQsMSl9ZnVuY3Rpb24gTVUodCxlLG4saSl7cmV0dXJuIGk8PTAmJih0PWU9bj1OYU4pLG5ldyBDVSh0LGUsbixpKX1mdW5jdGlvbiBFVSh0KXtyZXR1cm4gdCBpbnN0YW5jZW9mIHNVfHwodD13VSh0KSksdD9uZXcgQ1UoKHQ9dC5yZ2IoKSkucix0LmcsdC5iLHQub3BhY2l0eSk6bmV3IENVfWZ1bmN0aW9uIFRVKHQsZSxuLGkpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9FVSh0KTpuZXcgQ1UodCxlLG4sbnVsbD09aT8xOmkpfWZ1bmN0aW9uIENVKHQsZSxuLGkpe3RoaXMucj0rdCx0aGlzLmc9K2UsdGhpcy5iPStuLHRoaXMub3BhY2l0eT0raX1mdW5jdGlvbiBBVSh0LGUsbixpKXtyZXR1cm4gaTw9MD90PWU9bj1OYU46bjw9MHx8bj49MT90PWU9TmFOOmU8PTAmJih0PU5hTiksbmV3IFBVKHQsZSxuLGkpfWZ1bmN0aW9uIGtVKHQpe2lmKHQgaW5zdGFuY2VvZiBQVSlyZXR1cm4gbmV3IFBVKHQuaCx0LnMsdC5sLHQub3BhY2l0eSk7aWYodCBpbnN0YW5jZW9mIHNVfHwodD13VSh0KSksIXQpcmV0dXJuIG5ldyBQVTtpZih0IGluc3RhbmNlb2YgUFUpcmV0dXJuIHQ7dmFyIGU9KHQ9dC5yZ2IoKSkuci8yNTUsbj10LmcvMjU1LGk9dC5iLzI1NSxyPU1hdGgubWluKGUsbixpKSxvPU1hdGgubWF4KGUsbixpKSxhPU5hTixzPW8tcixsPShvK3IpLzI7cmV0dXJuIHM/KGE9ZT09PW8/KG4taSkvcys2KihuPGkpOm49PT1vPyhpLWUpL3MrMjooZS1uKS9zKzQscy89bDwuNT9vK3I6Mi1vLXIsYSo9NjApOnM9bD4wJiZsPDE/MDphLG5ldyBQVShhLHMsbCx0Lm9wYWNpdHkpfWZ1bmN0aW9uIExVKHQsZSxuLGkpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9rVSh0KTpuZXcgUFUodCxlLG4sbnVsbD09aT8xOmkpfWZ1bmN0aW9uIFBVKHQsZSxuLGkpe3RoaXMuaD0rdCx0aGlzLnM9K2UsdGhpcy5sPStuLHRoaXMub3BhY2l0eT0raX1mdW5jdGlvbiBOVSh0LGUsbil7cmV0dXJuIDI1NSoodDw2MD9lKyhuLWUpKnQvNjA6dDwxODA/bjp0PDI0MD9lKyhuLWUpKigyNDAtdCkvNjA6ZSl9b1Uoc1Usd1Use2Rpc3BsYXlhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmdiKCkuZGlzcGxheWFibGUoKX0sdG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZ2IoKSsiIn19KSxvVShDVSxUVSxhVShzVSx7YnJpZ2h0ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9bnVsbD09dD9jVTpNYXRoLnBvdyhjVSx0KSxuZXcgQ1UodGhpcy5yKnQsdGhpcy5nKnQsdGhpcy5iKnQsdGhpcy5vcGFjaXR5KX0sZGFya2VyOmZ1bmN0aW9uKHQpe3JldHVybiB0PW51bGw9PXQ/bFU6TWF0aC5wb3cobFUsdCksbmV3IENVKHRoaXMucip0LHRoaXMuZyp0LHRoaXMuYip0LHRoaXMub3BhY2l0eSl9LHJnYjpmdW5jdGlvbigpe3JldHVybiB0aGlzfSxkaXNwbGF5YWJsZTpmdW5jdGlvbigpe3JldHVybiAwPD10aGlzLnImJnRoaXMucjw9MjU1JiYwPD10aGlzLmcmJnRoaXMuZzw9MjU1JiYwPD10aGlzLmImJnRoaXMuYjw9MjU1JiYwPD10aGlzLm9wYWNpdHkmJnRoaXMub3BhY2l0eTw9MX0sdG9TdHJpbmc6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLm9wYWNpdHk7cmV0dXJuKDE9PT0odD1pc05hTih0KT8xOk1hdGgubWF4KDAsTWF0aC5taW4oMSx0KSkpPyJyZ2IoIjoicmdiYSgiKStNYXRoLm1heCgwLE1hdGgubWluKDI1NSxNYXRoLnJvdW5kKHRoaXMucil8fDApKSsiLCAiK01hdGgubWF4KDAsTWF0aC5taW4oMjU1LE1hdGgucm91bmQodGhpcy5nKXx8MCkpKyIsICIrTWF0aC5tYXgoMCxNYXRoLm1pbigyNTUsTWF0aC5yb3VuZCh0aGlzLmIpfHwwKSkrKDE9PT10PyIpIjoiLCAiK3QrIikiKX19KSksb1UoUFUsTFUsYVUoc1Use2JyaWdodGVyOmZ1bmN0aW9uKHQpe3JldHVybiB0PW51bGw9PXQ/Y1U6TWF0aC5wb3coY1UsdCksbmV3IFBVKHRoaXMuaCx0aGlzLnMsdGhpcy5sKnQsdGhpcy5vcGFjaXR5KX0sZGFya2VyOmZ1bmN0aW9uKHQpe3JldHVybiB0PW51bGw9PXQ/bFU6TWF0aC5wb3cobFUsdCksbmV3IFBVKHRoaXMuaCx0aGlzLnMsdGhpcy5sKnQsdGhpcy5vcGFjaXR5KX0scmdiOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5oJTM2MCszNjAqKHRoaXMuaDwwKSxlPWlzTmFOKHQpfHxpc05hTih0aGlzLnMpPzA6dGhpcy5zLG49dGhpcy5sLGk9bisobjwuNT9uOjEtbikqZSxyPTIqbi1pO3JldHVybiBuZXcgQ1UoTlUodD49MjQwP3QtMjQwOnQrMTIwLHIsaSksTlUodCxyLGkpLE5VKHQ8MTIwP3QrMjQwOnQtMTIwLHIsaSksdGhpcy5vcGFjaXR5KX0sZGlzcGxheWFibGU6ZnVuY3Rpb24oKXtyZXR1cm4oMDw9dGhpcy5zJiZ0aGlzLnM8PTF8fGlzTmFOKHRoaXMucykpJiYwPD10aGlzLmwmJnRoaXMubDw9MSYmMDw9dGhpcy5vcGFjaXR5JiZ0aGlzLm9wYWNpdHk8PTF9fSkpO3ZhciBJVT1NYXRoLlBJLzE4MCxSVT0xODAvTWF0aC5QSSxPVT0uOTUwNDcselU9MS4wODg4MyxEVT00LzI5LEJVPTYvMjksSFU9MypCVSpCVTtmdW5jdGlvbiBGVSh0KXtpZih0IGluc3RhbmNlb2YgVVUpcmV0dXJuIG5ldyBVVSh0LmwsdC5hLHQuYix0Lm9wYWNpdHkpO2lmKHQgaW5zdGFuY2VvZiAkVSl7dmFyIGU9dC5oKklVO3JldHVybiBuZXcgVVUodC5sLE1hdGguY29zKGUpKnQuYyxNYXRoLnNpbihlKSp0LmMsdC5vcGFjaXR5KX10IGluc3RhbmNlb2YgQ1V8fCh0PUVVKHQpKTt2YXIgbj1xVSh0LnIpLGk9cVUodC5nKSxyPXFVKHQuYiksbz1qVSgoLjQxMjQ1NjQqbisuMzU3NTc2MSppKy4xODA0Mzc1KnIpL09VKSxhPWpVKCguMjEyNjcyOSpuKy43MTUxNTIyKmkrLjA3MjE3NSpyKS8xKTtyZXR1cm4gbmV3IFVVKDExNiphLTE2LDUwMCooby1hKSwyMDAqKGEtalUoKC4wMTkzMzM5Km4rLjExOTE5MippKy45NTAzMDQxKnIpL3pVKSksdC5vcGFjaXR5KX1mdW5jdGlvbiBWVSh0LGUsbixpKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/RlUodCk6bmV3IFVVKHQsZSxuLG51bGw9PWk/MTppKX1mdW5jdGlvbiBVVSh0LGUsbixpKXt0aGlzLmw9K3QsdGhpcy5hPStlLHRoaXMuYj0rbix0aGlzLm9wYWNpdHk9K2l9ZnVuY3Rpb24galUodCl7cmV0dXJuIHQ+LjAwODg1NjQ1MTY3OTAzNTYzMT9NYXRoLnBvdyh0LDEvMyk6dC9IVStEVX1mdW5jdGlvbiBHVSh0KXtyZXR1cm4gdD5CVT90KnQqdDpIVSoodC1EVSl9ZnVuY3Rpb24gV1UodCl7cmV0dXJuIDI1NSoodDw9LjAwMzEzMDg/MTIuOTIqdDoxLjA1NSpNYXRoLnBvdyh0LDEvMi40KS0uMDU1KX1mdW5jdGlvbiBxVSh0KXtyZXR1cm4odC89MjU1KTw9LjA0MDQ1P3QvMTIuOTI6TWF0aC5wb3coKHQrLjA1NSkvMS4wNTUsMi40KX1mdW5jdGlvbiBZVSh0KXtpZih0IGluc3RhbmNlb2YgJFUpcmV0dXJuIG5ldyAkVSh0LmgsdC5jLHQubCx0Lm9wYWNpdHkpO3QgaW5zdGFuY2VvZiBVVXx8KHQ9RlUodCkpO3ZhciBlPU1hdGguYXRhbjIodC5iLHQuYSkqUlU7cmV0dXJuIG5ldyAkVShlPDA/ZSszNjA6ZSxNYXRoLnNxcnQodC5hKnQuYSt0LmIqdC5iKSx0LmwsdC5vcGFjaXR5KX1mdW5jdGlvbiBYVSh0LGUsbixpKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/WVUodCk6bmV3ICRVKHQsZSxuLG51bGw9PWk/MTppKX1mdW5jdGlvbiAkVSh0LGUsbixpKXt0aGlzLmg9K3QsdGhpcy5jPStlLHRoaXMubD0rbix0aGlzLm9wYWNpdHk9K2l9b1UoVVUsVlUsYVUoc1Use2JyaWdodGVyOmZ1bmN0aW9uKHQpe3JldHVybiBuZXcgVVUodGhpcy5sKzE4KihudWxsPT10PzE6dCksdGhpcy5hLHRoaXMuYix0aGlzLm9wYWNpdHkpfSxkYXJrZXI6ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBVVSh0aGlzLmwtMTgqKG51bGw9PXQ/MTp0KSx0aGlzLmEsdGhpcy5iLHRoaXMub3BhY2l0eSl9LHJnYjpmdW5jdGlvbigpe3ZhciB0PSh0aGlzLmwrMTYpLzExNixlPWlzTmFOKHRoaXMuYSk/dDp0K3RoaXMuYS81MDAsbj1pc05hTih0aGlzLmIpP3Q6dC10aGlzLmIvMjAwO3JldHVybiB0PTEqR1UodCksbmV3IENVKFdVKDMuMjQwNDU0MiooZT1PVSpHVShlKSktMS41MzcxMzg1KnQtLjQ5ODUzMTQqKG49elUqR1UobikpKSxXVSgtLjk2OTI2NiplKzEuODc2MDEwOCp0Ky4wNDE1NTYqbiksV1UoLjA1NTY0MzQqZS0uMjA0MDI1OSp0KzEuMDU3MjI1MipuKSx0aGlzLm9wYWNpdHkpfX0pKSxvVSgkVSxYVSxhVShzVSx7YnJpZ2h0ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyAkVSh0aGlzLmgsdGhpcy5jLHRoaXMubCsxOCoobnVsbD09dD8xOnQpLHRoaXMub3BhY2l0eSl9LGRhcmtlcjpmdW5jdGlvbih0KXtyZXR1cm4gbmV3ICRVKHRoaXMuaCx0aGlzLmMsdGhpcy5sLTE4KihudWxsPT10PzE6dCksdGhpcy5vcGFjaXR5KX0scmdiOmZ1bmN0aW9uKCl7cmV0dXJuIEZVKHRoaXMpLnJnYigpfX0pKTt2YXIgS1U9LS4xNDg2MSxaVT0xLjc4Mjc3LEpVPS0uMjkyMjcsUVU9LS45MDY0OSx0aj0xLjk3Mjk0LGVqPXRqKlFVLG5qPXRqKlpVLGlqPVpVKkpVLVFVKktVO2Z1bmN0aW9uIHJqKHQpe2lmKHQgaW5zdGFuY2VvZiBhailyZXR1cm4gbmV3IGFqKHQuaCx0LnMsdC5sLHQub3BhY2l0eSk7dCBpbnN0YW5jZW9mIENVfHwodD1FVSh0KSk7dmFyIGU9dC5nLzI1NSxuPXQuYi8yNTUsaT0oaWoqbitlaioodC5yLzI1NSktbmoqZSkvLTUuOTYxNTEyMjkxMixyPW4taSxvPSh0aiooZS1pKS1KVSpyKS9RVSxhPU1hdGguc3FydChvKm8rcipyKS8odGoqaSooMS1pKSkscz1hP01hdGguYXRhbjIobyxyKSpSVS0xMjA6TmFOO3JldHVybiBuZXcgYWooczwwP3MrMzYwOnMsYSxpLHQub3BhY2l0eSl9ZnVuY3Rpb24gb2oodCxlLG4saSl7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP3JqKHQpOm5ldyBhaih0LGUsbixudWxsPT1pPzE6aSl9ZnVuY3Rpb24gYWoodCxlLG4saSl7dGhpcy5oPSt0LHRoaXMucz0rZSx0aGlzLmw9K24sdGhpcy5vcGFjaXR5PStpfW9VKGFqLG9qLGFVKHNVLHticmlnaHRlcjpmdW5jdGlvbih0KXtyZXR1cm4gdD1udWxsPT10P2NVOk1hdGgucG93KGNVLHQpLG5ldyBhaih0aGlzLmgsdGhpcy5zLHRoaXMubCp0LHRoaXMub3BhY2l0eSl9LGRhcmtlcjpmdW5jdGlvbih0KXtyZXR1cm4gdD1udWxsPT10P2xVOk1hdGgucG93KGxVLHQpLG5ldyBhaih0aGlzLmgsdGhpcy5zLHRoaXMubCp0LHRoaXMub3BhY2l0eSl9LHJnYjpmdW5jdGlvbigpe3ZhciB0PWlzTmFOKHRoaXMuaCk/MDoodGhpcy5oKzEyMCkqSVUsZT0rdGhpcy5sLG49aXNOYU4odGhpcy5zKT8wOnRoaXMucyplKigxLWUpLGk9TWF0aC5jb3ModCkscj1NYXRoLnNpbih0KTtyZXR1cm4gbmV3IENVKDI1NSooZStuKihLVSppK1pVKnIpKSwyNTUqKGUrbiooSlUqaStRVSpyKSksMjU1KihlK24qKHRqKmkpKSx0aGlzLm9wYWNpdHkpfX0pKTt2YXIgc2o9e3ZhbHVlOmZ1bmN0aW9uKCl7fX07ZnVuY3Rpb24gbGooKXtmb3IodmFyIHQsZT0wLG49YXJndW1lbnRzLmxlbmd0aCxpPXt9O2U8bjsrK2Upe2lmKCEodD1hcmd1bWVudHNbZV0rIiIpfHx0IGluIGkpdGhyb3cgbmV3IEVycm9yKCJpbGxlZ2FsIHR5cGU6ICIrdCk7aVt0XT1bXX1yZXR1cm4gbmV3IGNqKGkpfWZ1bmN0aW9uIGNqKHQpe3RoaXMuXz10fWZ1bmN0aW9uIHVqKHQsZSl7cmV0dXJuIHQudHJpbSgpLnNwbGl0KC9efFxzKy8pLm1hcCgoZnVuY3Rpb24odCl7dmFyIG49IiIsaT10LmluZGV4T2YoIi4iKTtpZihpPj0wJiYobj10LnNsaWNlKGkrMSksdD10LnNsaWNlKDAsaSkpLHQmJiFlLmhhc093blByb3BlcnR5KHQpKXRocm93IG5ldyBFcnJvcigidW5rbm93biB0eXBlOiAiK3QpO3JldHVybnt0eXBlOnQsbmFtZTpufX0pKX1mdW5jdGlvbiBoaih0LGUpe2Zvcih2YXIgbixpPTAscj10Lmxlbmd0aDtpPHI7KytpKWlmKChuPXRbaV0pLm5hbWU9PT1lKXJldHVybiBuLnZhbHVlfWZ1bmN0aW9uIGRqKHQsZSxuKXtmb3IodmFyIGk9MCxyPXQubGVuZ3RoO2k8cjsrK2kpaWYodFtpXS5uYW1lPT09ZSl7dFtpXT1zaix0PXQuc2xpY2UoMCxpKS5jb25jYXQodC5zbGljZShpKzEpKTticmVha31yZXR1cm4gbnVsbCE9biYmdC5wdXNoKHtuYW1lOmUsdmFsdWU6bn0pLHR9Y2oucHJvdG90eXBlPWxqLnByb3RvdHlwZT17Y29uc3RydWN0b3I6Y2osb246ZnVuY3Rpb24odCxlKXt2YXIgbixpPXRoaXMuXyxyPXVqKHQrIiIsaSksbz0tMSxhPXIubGVuZ3RoO2lmKCEoYXJndW1lbnRzLmxlbmd0aDwyKSl7aWYobnVsbCE9ZSYmImZ1bmN0aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIGNhbGxiYWNrOiAiK2UpO2Zvcig7KytvPGE7KWlmKG49KHQ9cltvXSkudHlwZSlpW25dPWRqKGlbbl0sdC5uYW1lLGUpO2Vsc2UgaWYobnVsbD09ZSlmb3IobiBpbiBpKWlbbl09ZGooaVtuXSx0Lm5hbWUsbnVsbCk7cmV0dXJuIHRoaXN9Zm9yKDsrK288YTspaWYoKG49KHQ9cltvXSkudHlwZSkmJihuPWhqKGlbbl0sdC5uYW1lKSkpcmV0dXJuIG59LGNvcHk6ZnVuY3Rpb24oKXt2YXIgdD17fSxlPXRoaXMuXztmb3IodmFyIG4gaW4gZSl0W25dPWVbbl0uc2xpY2UoKTtyZXR1cm4gbmV3IGNqKHQpfSxjYWxsOmZ1bmN0aW9uKHQsZSl7aWYoKG49YXJndW1lbnRzLmxlbmd0aC0yKT4wKWZvcih2YXIgbixpLHI9bmV3IEFycmF5KG4pLG89MDtvPG47KytvKXJbb109YXJndW1lbnRzW28rMl07aWYoIXRoaXMuXy5oYXNPd25Qcm9wZXJ0eSh0KSl0aHJvdyBuZXcgRXJyb3IoInVua25vd24gdHlwZTogIit0KTtmb3Iobz0wLG49KGk9dGhpcy5fW3RdKS5sZW5ndGg7bzxuOysrbylpW29dLnZhbHVlLmFwcGx5KGUscil9LGFwcGx5OmZ1bmN0aW9uKHQsZSxuKXtpZighdGhpcy5fLmhhc093blByb3BlcnR5KHQpKXRocm93IG5ldyBFcnJvcigidW5rbm93biB0eXBlOiAiK3QpO2Zvcih2YXIgaT10aGlzLl9bdF0scj0wLG89aS5sZW5ndGg7cjxvOysrcilpW3JdLnZhbHVlLmFwcGx5KGUsbil9fTt2YXIgcGo9e3ZhbHVlOmZ1bmN0aW9uKCl7fX07ZnVuY3Rpb24gZmooKXtmb3IodmFyIHQsZT0wLG49YXJndW1lbnRzLmxlbmd0aCxpPXt9O2U8bjsrK2Upe2lmKCEodD1hcmd1bWVudHNbZV0rIiIpfHx0IGluIGl8fC9bXHMuXS8udGVzdCh0KSl0aHJvdyBuZXcgRXJyb3IoImlsbGVnYWwgdHlwZTogIit0KTtpW3RdPVtdfXJldHVybiBuZXcgbWooaSl9ZnVuY3Rpb24gbWoodCl7dGhpcy5fPXR9ZnVuY3Rpb24gZ2oodCxlKXtyZXR1cm4gdC50cmltKCkuc3BsaXQoL158XHMrLykubWFwKChmdW5jdGlvbih0KXt2YXIgbj0iIixpPXQuaW5kZXhPZigiLiIpO2lmKGk+PTAmJihuPXQuc2xpY2UoaSsxKSx0PXQuc2xpY2UoMCxpKSksdCYmIWUuaGFzT3duUHJvcGVydHkodCkpdGhyb3cgbmV3IEVycm9yKCJ1bmtub3duIHR5cGU6ICIrdCk7cmV0dXJue3R5cGU6dCxuYW1lOm59fSkpfWZ1bmN0aW9uIF9qKHQsZSl7Zm9yKHZhciBuLGk9MCxyPXQubGVuZ3RoO2k8cjsrK2kpaWYoKG49dFtpXSkubmFtZT09PWUpcmV0dXJuIG4udmFsdWV9ZnVuY3Rpb24geWoodCxlLG4pe2Zvcih2YXIgaT0wLHI9dC5sZW5ndGg7aTxyOysraSlpZih0W2ldLm5hbWU9PT1lKXt0W2ldPXBqLHQ9dC5zbGljZSgwLGkpLmNvbmNhdCh0LnNsaWNlKGkrMSkpO2JyZWFrfXJldHVybiBudWxsIT1uJiZ0LnB1c2goe25hbWU6ZSx2YWx1ZTpufSksdH1tai5wcm90b3R5cGU9ZmoucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjptaixvbjpmdW5jdGlvbih0LGUpe3ZhciBuLGk9dGhpcy5fLHI9Z2oodCsiIixpKSxvPS0xLGE9ci5sZW5ndGg7aWYoIShhcmd1bWVudHMubGVuZ3RoPDIpKXtpZihudWxsIT1lJiYiZnVuY3Rpb24iIT10eXBlb2YgZSl0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgY2FsbGJhY2s6ICIrZSk7Zm9yKDsrK288YTspaWYobj0odD1yW29dKS50eXBlKWlbbl09eWooaVtuXSx0Lm5hbWUsZSk7ZWxzZSBpZihudWxsPT1lKWZvcihuIGluIGkpaVtuXT15aihpW25dLHQubmFtZSxudWxsKTtyZXR1cm4gdGhpc31mb3IoOysrbzxhOylpZigobj0odD1yW29dKS50eXBlKSYmKG49X2ooaVtuXSx0Lm5hbWUpKSlyZXR1cm4gbn0sY29weTpmdW5jdGlvbigpe3ZhciB0PXt9LGU9dGhpcy5fO2Zvcih2YXIgbiBpbiBlKXRbbl09ZVtuXS5zbGljZSgpO3JldHVybiBuZXcgbWoodCl9LGNhbGw6ZnVuY3Rpb24odCxlKXtpZigobj1hcmd1bWVudHMubGVuZ3RoLTIpPjApZm9yKHZhciBuLGkscj1uZXcgQXJyYXkobiksbz0wO288bjsrK28pcltvXT1hcmd1bWVudHNbbysyXTtpZighdGhpcy5fLmhhc093blByb3BlcnR5KHQpKXRocm93IG5ldyBFcnJvcigidW5rbm93biB0eXBlOiAiK3QpO2ZvcihvPTAsbj0oaT10aGlzLl9bdF0pLmxlbmd0aDtvPG47KytvKWlbb10udmFsdWUuYXBwbHkoZSxyKX0sYXBwbHk6ZnVuY3Rpb24odCxlLG4pe2lmKCF0aGlzLl8uaGFzT3duUHJvcGVydHkodCkpdGhyb3cgbmV3IEVycm9yKCJ1bmtub3duIHR5cGU6ICIrdCk7Zm9yKHZhciBpPXRoaXMuX1t0XSxyPTAsbz1pLmxlbmd0aDtyPG87KytyKWlbcl0udmFsdWUuYXBwbHkoZSxuKX19O3ZhciB2aj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIsYmo9e3N2ZzoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLHhodG1sOnZqLHhsaW5rOiJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIix4bWw6Imh0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZSIseG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAveG1sbnMvIn07ZnVuY3Rpb24geGoodCl7dmFyIGU9dCs9IiIsbj1lLmluZGV4T2YoIjoiKTtyZXR1cm4gbj49MCYmInhtbG5zIiE9PShlPXQuc2xpY2UoMCxuKSkmJih0PXQuc2xpY2UobisxKSksYmouaGFzT3duUHJvcGVydHkoZSk/e3NwYWNlOmJqW2VdLGxvY2FsOnR9OnR9ZnVuY3Rpb24gd2oodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5vd25lckRvY3VtZW50LG49dGhpcy5uYW1lc3BhY2VVUkk7cmV0dXJuIG49PT12aiYmZS5kb2N1bWVudEVsZW1lbnQubmFtZXNwYWNlVVJJPT09dmo/ZS5jcmVhdGVFbGVtZW50KHQpOmUuY3JlYXRlRWxlbWVudE5TKG4sdCl9fWZ1bmN0aW9uIFNqKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0aGlzLm93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKHQuc3BhY2UsdC5sb2NhbCl9fWZ1bmN0aW9uIE1qKHQpe3ZhciBlPXhqKHQpO3JldHVybihlLmxvY2FsP1NqOndqKShlKX1mdW5jdGlvbiBFaigpe31mdW5jdGlvbiBUaih0KXtyZXR1cm4gbnVsbD09dD9FajpmdW5jdGlvbigpe3JldHVybiB0aGlzLnF1ZXJ5U2VsZWN0b3IodCl9fWZ1bmN0aW9uIENqKCl7cmV0dXJuW119ZnVuY3Rpb24gQWoodCl7cmV0dXJuIG5ldyBBcnJheSh0Lmxlbmd0aCl9ZnVuY3Rpb24ga2oodCxlKXt0aGlzLm93bmVyRG9jdW1lbnQ9dC5vd25lckRvY3VtZW50LHRoaXMubmFtZXNwYWNlVVJJPXQubmFtZXNwYWNlVVJJLHRoaXMuX25leHQ9bnVsbCx0aGlzLl9wYXJlbnQ9dCx0aGlzLl9fZGF0YV9fPWV9a2oucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpraixhcHBlbmRDaGlsZDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fcGFyZW50Lmluc2VydEJlZm9yZSh0LHRoaXMuX25leHQpfSxpbnNlcnRCZWZvcmU6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5fcGFyZW50Lmluc2VydEJlZm9yZSh0LGUpfSxxdWVyeVNlbGVjdG9yOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9wYXJlbnQucXVlcnlTZWxlY3Rvcih0KX0scXVlcnlTZWxlY3RvckFsbDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fcGFyZW50LnF1ZXJ5U2VsZWN0b3JBbGwodCl9fTtmdW5jdGlvbiBMaih0LGUsbixpLHIsbyl7Zm9yKHZhciBhLHM9MCxsPWUubGVuZ3RoLGM9by5sZW5ndGg7czxjOysrcykoYT1lW3NdKT8oYS5fX2RhdGFfXz1vW3NdLGlbc109YSk6bltzXT1uZXcga2oodCxvW3NdKTtmb3IoO3M8bDsrK3MpKGE9ZVtzXSkmJihyW3NdPWEpfWZ1bmN0aW9uIFBqKHQsZSxuLGkscixvLGEpe3ZhciBzLGwsYyx1PXt9LGg9ZS5sZW5ndGgsZD1vLmxlbmd0aCxwPW5ldyBBcnJheShoKTtmb3Iocz0wO3M8aDsrK3MpKGw9ZVtzXSkmJihwW3NdPWM9IiQiK2EuY2FsbChsLGwuX19kYXRhX18scyxlKSxjIGluIHU/cltzXT1sOnVbY109bCk7Zm9yKHM9MDtzPGQ7KytzKShsPXVbYz0iJCIrYS5jYWxsKHQsb1tzXSxzLG8pXSk/KGlbc109bCxsLl9fZGF0YV9fPW9bc10sdVtjXT1udWxsKTpuW3NdPW5ldyBraih0LG9bc10pO2ZvcihzPTA7czxoOysrcykobD1lW3NdKSYmdVtwW3NdXT09PWwmJihyW3NdPWwpfWZ1bmN0aW9uIE5qKHQsZSl7cmV0dXJuIHQ8ZT8tMTp0PmU/MTp0Pj1lPzA6TmFOfWZ1bmN0aW9uIElqKHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMucmVtb3ZlQXR0cmlidXRlKHQpfX1mdW5jdGlvbiBSaih0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnJlbW92ZUF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCl9fWZ1bmN0aW9uIE9qKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5zZXRBdHRyaWJ1dGUodCxlKX19ZnVuY3Rpb24gemoodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnNldEF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCxlKX19ZnVuY3Rpb24gRGoodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbj1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtudWxsPT1uP3RoaXMucmVtb3ZlQXR0cmlidXRlKHQpOnRoaXMuc2V0QXR0cmlidXRlKHQsbil9fWZ1bmN0aW9uIEJqKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG49ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7bnVsbD09bj90aGlzLnJlbW92ZUF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCk6dGhpcy5zZXRBdHRyaWJ1dGVOUyh0LnNwYWNlLHQubG9jYWwsbil9fWZ1bmN0aW9uIEhqKHQpe3JldHVybiB0Lm93bmVyRG9jdW1lbnQmJnQub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlld3x8dC5kb2N1bWVudCYmdHx8dC5kZWZhdWx0Vmlld31mdW5jdGlvbiBGaih0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KHQpfX1mdW5jdGlvbiBWaih0LGUsbil7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5zdHlsZS5zZXRQcm9wZXJ0eSh0LGUsbil9fWZ1bmN0aW9uIFVqKHQsZSxuKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgaT1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtudWxsPT1pP3RoaXMuc3R5bGUucmVtb3ZlUHJvcGVydHkodCk6dGhpcy5zdHlsZS5zZXRQcm9wZXJ0eSh0LGksbil9fWZ1bmN0aW9uIGpqKHQsZSl7cmV0dXJuIHQuc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZShlKXx8SGoodCkuZ2V0Q29tcHV0ZWRTdHlsZSh0LG51bGwpLmdldFByb3BlcnR5VmFsdWUoZSl9ZnVuY3Rpb24gR2oodCl7cmV0dXJuIGZ1bmN0aW9uKCl7ZGVsZXRlIHRoaXNbdF19fWZ1bmN0aW9uIFdqKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpc1t0XT1lfX1mdW5jdGlvbiBxaih0LGUpe3JldHVybiBmdW5jdGlvbigpe3ZhciBuPWUuYXBwbHkodGhpcyxhcmd1bWVudHMpO251bGw9PW4/ZGVsZXRlIHRoaXNbdF06dGhpc1t0XT1ufX1mdW5jdGlvbiBZaih0KXtyZXR1cm4gdC50cmltKCkuc3BsaXQoL158XHMrLyl9ZnVuY3Rpb24gWGoodCl7cmV0dXJuIHQuY2xhc3NMaXN0fHxuZXcgJGoodCl9ZnVuY3Rpb24gJGoodCl7dGhpcy5fbm9kZT10LHRoaXMuX25hbWVzPVlqKHQuZ2V0QXR0cmlidXRlKCJjbGFzcyIpfHwiIil9ZnVuY3Rpb24gS2oodCxlKXtmb3IodmFyIG49WGoodCksaT0tMSxyPWUubGVuZ3RoOysraTxyOyluLmFkZChlW2ldKX1mdW5jdGlvbiBaaih0LGUpe2Zvcih2YXIgbj1Yaih0KSxpPS0xLHI9ZS5sZW5ndGg7KytpPHI7KW4ucmVtb3ZlKGVbaV0pfWZ1bmN0aW9uIEpqKHQpe3JldHVybiBmdW5jdGlvbigpe0tqKHRoaXMsdCl9fWZ1bmN0aW9uIFFqKHQpe3JldHVybiBmdW5jdGlvbigpe1pqKHRoaXMsdCl9fWZ1bmN0aW9uIHRHKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7KGUuYXBwbHkodGhpcyxhcmd1bWVudHMpP0tqOlpqKSh0aGlzLHQpfX1mdW5jdGlvbiBlRygpe3RoaXMudGV4dENvbnRlbnQ9IiJ9ZnVuY3Rpb24gbkcodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy50ZXh0Q29udGVudD10fX1mdW5jdGlvbiBpRyh0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT10LmFwcGx5KHRoaXMsYXJndW1lbnRzKTt0aGlzLnRleHRDb250ZW50PW51bGw9PWU/IiI6ZX19ZnVuY3Rpb24gckcoKXt0aGlzLmlubmVySFRNTD0iIn1mdW5jdGlvbiBvRyh0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLmlubmVySFRNTD10fX1mdW5jdGlvbiBhRyh0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT10LmFwcGx5KHRoaXMsYXJndW1lbnRzKTt0aGlzLmlubmVySFRNTD1udWxsPT1lPyIiOmV9fWZ1bmN0aW9uIHNHKCl7dGhpcy5uZXh0U2libGluZyYmdGhpcy5wYXJlbnROb2RlLmFwcGVuZENoaWxkKHRoaXMpfWZ1bmN0aW9uIGxHKCl7dGhpcy5wcmV2aW91c1NpYmxpbmcmJnRoaXMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUodGhpcyx0aGlzLnBhcmVudE5vZGUuZmlyc3RDaGlsZCl9ZnVuY3Rpb24gY0coKXtyZXR1cm4gbnVsbH1mdW5jdGlvbiB1Rygpe3ZhciB0PXRoaXMucGFyZW50Tm9kZTt0JiZ0LnJlbW92ZUNoaWxkKHRoaXMpfWZ1bmN0aW9uIGhHKCl7dmFyIHQ9dGhpcy5jbG9uZU5vZGUoITEpLGU9dGhpcy5wYXJlbnROb2RlO3JldHVybiBlP2UuaW5zZXJ0QmVmb3JlKHQsdGhpcy5uZXh0U2libGluZyk6dH1mdW5jdGlvbiBkRygpe3ZhciB0PXRoaXMuY2xvbmVOb2RlKCEwKSxlPXRoaXMucGFyZW50Tm9kZTtyZXR1cm4gZT9lLmluc2VydEJlZm9yZSh0LHRoaXMubmV4dFNpYmxpbmcpOnR9JGoucHJvdG90eXBlPXthZGQ6ZnVuY3Rpb24odCl7dGhpcy5fbmFtZXMuaW5kZXhPZih0KTwwJiYodGhpcy5fbmFtZXMucHVzaCh0KSx0aGlzLl9ub2RlLnNldEF0dHJpYnV0ZSgiY2xhc3MiLHRoaXMuX25hbWVzLmpvaW4oIiAiKSkpfSxyZW1vdmU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fbmFtZXMuaW5kZXhPZih0KTtlPj0wJiYodGhpcy5fbmFtZXMuc3BsaWNlKGUsMSksdGhpcy5fbm9kZS5zZXRBdHRyaWJ1dGUoImNsYXNzIix0aGlzLl9uYW1lcy5qb2luKCIgIikpKX0sY29udGFpbnM6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX25hbWVzLmluZGV4T2YodCk+PTB9fTt2YXIgcEc9e30sZkc9bnVsbDsidW5kZWZpbmVkIiE9dHlwZW9mIGRvY3VtZW50JiYoIm9ubW91c2VlbnRlciJpbiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnR8fChwRz17bW91c2VlbnRlcjoibW91c2VvdmVyIixtb3VzZWxlYXZlOiJtb3VzZW91dCJ9KSk7ZnVuY3Rpb24gbUcodCxlLG4pe3JldHVybiB0PWdHKHQsZSxuKSxmdW5jdGlvbihlKXt2YXIgbj1lLnJlbGF0ZWRUYXJnZXQ7biYmKG49PT10aGlzfHw4Jm4uY29tcGFyZURvY3VtZW50UG9zaXRpb24odGhpcykpfHx0LmNhbGwodGhpcyxlKX19ZnVuY3Rpb24gZ0codCxlLG4pe3JldHVybiBmdW5jdGlvbihpKXt2YXIgcj1mRztmRz1pO3RyeXt0LmNhbGwodGhpcyx0aGlzLl9fZGF0YV9fLGUsbil9ZmluYWxseXtmRz1yfX19ZnVuY3Rpb24gX0codCl7cmV0dXJuIHQudHJpbSgpLnNwbGl0KC9efFxzKy8pLm1hcCgoZnVuY3Rpb24odCl7dmFyIGU9IiIsbj10LmluZGV4T2YoIi4iKTtyZXR1cm4gbj49MCYmKGU9dC5zbGljZShuKzEpLHQ9dC5zbGljZSgwLG4pKSx7dHlwZTp0LG5hbWU6ZX19KSl9ZnVuY3Rpb24geUcodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5fX29uO2lmKGUpe2Zvcih2YXIgbixpPTAscj0tMSxvPWUubGVuZ3RoO2k8bzsrK2kpbj1lW2ldLHQudHlwZSYmbi50eXBlIT09dC50eXBlfHxuLm5hbWUhPT10Lm5hbWU/ZVsrK3JdPW46dGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKG4udHlwZSxuLmxpc3RlbmVyLG4uY2FwdHVyZSk7KytyP2UubGVuZ3RoPXI6ZGVsZXRlIHRoaXMuX19vbn19fWZ1bmN0aW9uIHZHKHQsZSxuKXt2YXIgaT1wRy5oYXNPd25Qcm9wZXJ0eSh0LnR5cGUpP21HOmdHO3JldHVybiBmdW5jdGlvbihyLG8sYSl7dmFyIHMsbD10aGlzLl9fb24sYz1pKGUsbyxhKTtpZihsKWZvcih2YXIgdT0wLGg9bC5sZW5ndGg7dTxoOysrdSlpZigocz1sW3VdKS50eXBlPT09dC50eXBlJiZzLm5hbWU9PT10Lm5hbWUpcmV0dXJuIHRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcihzLnR5cGUscy5saXN0ZW5lcixzLmNhcHR1cmUpLHRoaXMuYWRkRXZlbnRMaXN0ZW5lcihzLnR5cGUscy5saXN0ZW5lcj1jLHMuY2FwdHVyZT1uKSx2b2lkKHMudmFsdWU9ZSk7dGhpcy5hZGRFdmVudExpc3RlbmVyKHQudHlwZSxjLG4pLHM9e3R5cGU6dC50eXBlLG5hbWU6dC5uYW1lLHZhbHVlOmUsbGlzdGVuZXI6YyxjYXB0dXJlOm59LGw/bC5wdXNoKHMpOnRoaXMuX19vbj1bc119fWZ1bmN0aW9uIGJHKHQsZSxuLGkpe3ZhciByPWZHO3Quc291cmNlRXZlbnQ9ZkcsZkc9dDt0cnl7cmV0dXJuIGUuYXBwbHkobixpKX1maW5hbGx5e2ZHPXJ9fWZ1bmN0aW9uIHhHKHQsZSxuKXt2YXIgaT1Iaih0KSxyPWkuQ3VzdG9tRXZlbnQ7ImZ1bmN0aW9uIj09dHlwZW9mIHI/cj1uZXcgcihlLG4pOihyPWkuZG9jdW1lbnQuY3JlYXRlRXZlbnQoIkV2ZW50Iiksbj8oci5pbml0RXZlbnQoZSxuLmJ1YmJsZXMsbi5jYW5jZWxhYmxlKSxyLmRldGFpbD1uLmRldGFpbCk6ci5pbml0RXZlbnQoZSwhMSwhMSkpLHQuZGlzcGF0Y2hFdmVudChyKX1mdW5jdGlvbiB3Ryh0LGUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB4Ryh0aGlzLHQsZSl9fWZ1bmN0aW9uIFNHKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHhHKHRoaXMsdCxlLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9fXZhciBNRz1bbnVsbF07ZnVuY3Rpb24gRUcodCxlKXt0aGlzLl9ncm91cHM9dCx0aGlzLl9wYXJlbnRzPWV9ZnVuY3Rpb24gVEcodCl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0P25ldyBFRyhbW2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3IodCldXSxbZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50XSk6bmV3IEVHKFtbdF1dLE1HKX1mdW5jdGlvbiBDRygpe2Zvcih2YXIgdCxlPWZHO3Q9ZS5zb3VyY2VFdmVudDspZT10O3JldHVybiBlfWZ1bmN0aW9uIEFHKHQsZSl7dmFyIG49dC5vd25lclNWR0VsZW1lbnR8fHQ7aWYobi5jcmVhdGVTVkdQb2ludCl7dmFyIGk9bi5jcmVhdGVTVkdQb2ludCgpO3JldHVybiBpLng9ZS5jbGllbnRYLGkueT1lLmNsaWVudFksWyhpPWkubWF0cml4VHJhbnNmb3JtKHQuZ2V0U2NyZWVuQ1RNKCkuaW52ZXJzZSgpKSkueCxpLnldfXZhciByPXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7cmV0dXJuW2UuY2xpZW50WC1yLmxlZnQtdC5jbGllbnRMZWZ0LGUuY2xpZW50WS1yLnRvcC10LmNsaWVudFRvcF19ZnVuY3Rpb24ga0codCl7dmFyIGU9Q0coKTtyZXR1cm4gZS5jaGFuZ2VkVG91Y2hlcyYmKGU9ZS5jaGFuZ2VkVG91Y2hlc1swXSksQUcodCxlKX1mdW5jdGlvbiBMRyh0LGUsbil7YXJndW1lbnRzLmxlbmd0aDwzJiYobj1lLGU9Q0coKS5jaGFuZ2VkVG91Y2hlcyk7Zm9yKHZhciBpLHI9MCxvPWU/ZS5sZW5ndGg6MDtyPG87KytyKWlmKChpPWVbcl0pLmlkZW50aWZpZXI9PT1uKXJldHVybiBBRyh0LGkpO3JldHVybiBudWxsfWZ1bmN0aW9uIFBHKCl7Zkcuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCl9ZnVuY3Rpb24gTkcoKXtmRy5wcmV2ZW50RGVmYXVsdCgpLGZHLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpfWZ1bmN0aW9uIElHKHQpe3ZhciBlPXQuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LG49VEcodCkub24oImRyYWdzdGFydC5kcmFnIixORywhMCk7Im9uc2VsZWN0c3RhcnQiaW4gZT9uLm9uKCJzZWxlY3RzdGFydC5kcmFnIixORywhMCk6KGUuX19ub3NlbGVjdD1lLnN0eWxlLk1velVzZXJTZWxlY3QsZS5zdHlsZS5Nb3pVc2VyU2VsZWN0PSJub25lIil9ZnVuY3Rpb24gUkcodCxlKXt2YXIgbj10LmRvY3VtZW50LmRvY3VtZW50RWxlbWVudCxpPVRHKHQpLm9uKCJkcmFnc3RhcnQuZHJhZyIsbnVsbCk7ZSYmKGkub24oImNsaWNrLmRyYWciLE5HLCEwKSxzZXRUaW1lb3V0KChmdW5jdGlvbigpe2kub24oImNsaWNrLmRyYWciLG51bGwpfSksMCkpLCJvbnNlbGVjdHN0YXJ0ImluIG4/aS5vbigic2VsZWN0c3RhcnQuZHJhZyIsbnVsbCk6KG4uc3R5bGUuTW96VXNlclNlbGVjdD1uLl9fbm9zZWxlY3QsZGVsZXRlIG4uX19ub3NlbGVjdCl9ZnVuY3Rpb24gT0codCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHR9fWZ1bmN0aW9uIHpHKHQsZSxuLGkscixvLGEscyxsLGMpe3RoaXMudGFyZ2V0PXQsdGhpcy50eXBlPWUsdGhpcy5zdWJqZWN0PW4sdGhpcy5pZGVudGlmaWVyPWksdGhpcy5hY3RpdmU9cix0aGlzLng9byx0aGlzLnk9YSx0aGlzLmR4PXMsdGhpcy5keT1sLHRoaXMuXz1jfWZ1bmN0aW9uIERHKCl7cmV0dXJuIWZHLmJ1dHRvbn1mdW5jdGlvbiBCRygpe3JldHVybiB0aGlzLnBhcmVudE5vZGV9ZnVuY3Rpb24gSEcodCl7cmV0dXJuIG51bGw9PXQ/e3g6ZkcueCx5OmZHLnl9OnR9ZnVuY3Rpb24gRkcoKXtyZXR1cm4ib250b3VjaHN0YXJ0ImluIHRoaXN9RUcucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpFRyxzZWxlY3Q6ZnVuY3Rpb24gVkcodCl7ImZ1bmN0aW9uIiE9dHlwZW9mIHQmJih0PVRqKHQpKTtmb3IodmFyIGU9dGhpcy5fZ3JvdXBzLG49ZS5sZW5ndGgsaT1uZXcgQXJyYXkobikscj0wO3I8bjsrK3IpZm9yKHZhciBvLGEscz1lW3JdLGw9cy5sZW5ndGgsYz1pW3JdPW5ldyBBcnJheShsKSx1PTA7dTxsOysrdSkobz1zW3VdKSYmKGE9dC5jYWxsKG8sby5fX2RhdGFfXyx1LHMpKSYmKCJfX2RhdGFfXyJpbiBvJiYoYS5fX2RhdGFfXz1vLl9fZGF0YV9fKSxjW3VdPWEpO3JldHVybiBuZXcgRUcoaSx0aGlzLl9wYXJlbnRzKX0sc2VsZWN0QWxsOmZ1bmN0aW9uIFVHKHQpeyJmdW5jdGlvbiIhPXR5cGVvZiB0JiYodD0oZnVuY3Rpb24gZSh0KXtyZXR1cm4gbnVsbD09dD9DajpmdW5jdGlvbigpe3JldHVybiB0aGlzLnF1ZXJ5U2VsZWN0b3JBbGwodCl9fSkodCkpO2Zvcih2YXIgbj10aGlzLl9ncm91cHMsaT1uLmxlbmd0aCxyPVtdLG89W10sYT0wO2E8aTsrK2EpZm9yKHZhciBzLGw9blthXSxjPWwubGVuZ3RoLHU9MDt1PGM7Kyt1KShzPWxbdV0pJiYoci5wdXNoKHQuY2FsbChzLHMuX19kYXRhX18sdSxsKSksby5wdXNoKHMpKTtyZXR1cm4gbmV3IEVHKHIsbyl9LGZpbHRlcjpmdW5jdGlvbiBqRyh0KXsiZnVuY3Rpb24iIT10eXBlb2YgdCYmKHQ9KGZ1bmN0aW9uIGUodCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWF0Y2hlcyh0KX19KSh0KSk7Zm9yKHZhciBuPXRoaXMuX2dyb3VwcyxpPW4ubGVuZ3RoLHI9bmV3IEFycmF5KGkpLG89MDtvPGk7KytvKWZvcih2YXIgYSxzPW5bb10sbD1zLmxlbmd0aCxjPXJbb109W10sdT0wO3U8bDsrK3UpKGE9c1t1XSkmJnQuY2FsbChhLGEuX19kYXRhX18sdSxzKSYmYy5wdXNoKGEpO3JldHVybiBuZXcgRUcocix0aGlzLl9wYXJlbnRzKX0sZGF0YTpmdW5jdGlvbiBHRyh0LGUpe2lmKCF0KXJldHVybiBmPW5ldyBBcnJheSh0aGlzLnNpemUoKSksdT0tMSx0aGlzLmVhY2goKGZ1bmN0aW9uKHQpe2ZbKyt1XT10fSkpLGY7dmFyIG49ZT9QajpMaixpPXRoaXMuX3BhcmVudHMscj10aGlzLl9ncm91cHM7ImZ1bmN0aW9uIiE9dHlwZW9mIHQmJih0PShmdW5jdGlvbiBvKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0fX0pKHQpKTtmb3IodmFyIGE9ci5sZW5ndGgscz1uZXcgQXJyYXkoYSksbD1uZXcgQXJyYXkoYSksYz1uZXcgQXJyYXkoYSksdT0wO3U8YTsrK3Upe3ZhciBoPWlbdV0sZD1yW3VdLHA9ZC5sZW5ndGgsZj10LmNhbGwoaCxoJiZoLl9fZGF0YV9fLHUsaSksbT1mLmxlbmd0aCxnPWxbdV09bmV3IEFycmF5KG0pLF89c1t1XT1uZXcgQXJyYXkobSk7bihoLGQsZyxfLGNbdV09bmV3IEFycmF5KHApLGYsZSk7Zm9yKHZhciB5LHYsYj0wLHg9MDtiPG07KytiKWlmKHk9Z1tiXSl7Zm9yKGI+PXgmJih4PWIrMSk7ISh2PV9beF0pJiYrK3g8bTspO3kuX25leHQ9dnx8bnVsbH19cmV0dXJuKHM9bmV3IEVHKHMsaSkpLl9lbnRlcj1sLHMuX2V4aXQ9YyxzfSxlbnRlcjpmdW5jdGlvbiBXRygpe3JldHVybiBuZXcgRUcodGhpcy5fZW50ZXJ8fHRoaXMuX2dyb3Vwcy5tYXAoQWopLHRoaXMuX3BhcmVudHMpfSxleGl0OmZ1bmN0aW9uIHFHKCl7cmV0dXJuIG5ldyBFRyh0aGlzLl9leGl0fHx0aGlzLl9ncm91cHMubWFwKEFqKSx0aGlzLl9wYXJlbnRzKX0sam9pbjpmdW5jdGlvbiBZRyh0LGUsbil7dmFyIGk9dGhpcy5lbnRlcigpLHI9dGhpcyxvPXRoaXMuZXhpdCgpO3JldHVybiBpPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3QoaSk6aS5hcHBlbmQodCsiIiksbnVsbCE9ZSYmKHI9ZShyKSksbnVsbD09bj9vLnJlbW92ZSgpOm4obyksaSYmcj9pLm1lcmdlKHIpLm9yZGVyKCk6cn0sbWVyZ2U6ZnVuY3Rpb24gWEcodCl7Zm9yKHZhciBlPXRoaXMuX2dyb3VwcyxuPXQuX2dyb3VwcyxpPWUubGVuZ3RoLHI9TWF0aC5taW4oaSxuLmxlbmd0aCksbz1uZXcgQXJyYXkoaSksYT0wO2E8cjsrK2EpZm9yKHZhciBzLGw9ZVthXSxjPW5bYV0sdT1sLmxlbmd0aCxoPW9bYV09bmV3IEFycmF5KHUpLGQ9MDtkPHU7KytkKShzPWxbZF18fGNbZF0pJiYoaFtkXT1zKTtmb3IoO2E8aTsrK2Epb1thXT1lW2FdO3JldHVybiBuZXcgRUcobyx0aGlzLl9wYXJlbnRzKX0sb3JkZXI6ZnVuY3Rpb24gJEcoKXtmb3IodmFyIHQ9dGhpcy5fZ3JvdXBzLGU9LTEsbj10Lmxlbmd0aDsrK2U8bjspZm9yKHZhciBpLHI9dFtlXSxvPXIubGVuZ3RoLTEsYT1yW29dOy0tbz49MDspKGk9cltvXSkmJihhJiY0XmkuY29tcGFyZURvY3VtZW50UG9zaXRpb24oYSkmJmEucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoaSxhKSxhPWkpO3JldHVybiB0aGlzfSxzb3J0OmZ1bmN0aW9uIEtHKHQpe2Z1bmN0aW9uIGUoZSxuKXtyZXR1cm4gZSYmbj90KGUuX19kYXRhX18sbi5fX2RhdGFfXyk6IWUtIW59dHx8KHQ9TmopO2Zvcih2YXIgbj10aGlzLl9ncm91cHMsaT1uLmxlbmd0aCxyPW5ldyBBcnJheShpKSxvPTA7bzxpOysrbyl7Zm9yKHZhciBhLHM9bltvXSxsPXMubGVuZ3RoLGM9cltvXT1uZXcgQXJyYXkobCksdT0wO3U8bDsrK3UpKGE9c1t1XSkmJihjW3VdPWEpO2Muc29ydChlKX1yZXR1cm4gbmV3IEVHKHIsdGhpcy5fcGFyZW50cykub3JkZXIoKX0sY2FsbDpmdW5jdGlvbiBaRygpe3ZhciB0PWFyZ3VtZW50c1swXTtyZXR1cm4gYXJndW1lbnRzWzBdPXRoaXMsdC5hcHBseShudWxsLGFyZ3VtZW50cyksdGhpc30sbm9kZXM6ZnVuY3Rpb24gSkcoKXt2YXIgdD1uZXcgQXJyYXkodGhpcy5zaXplKCkpLGU9LTE7cmV0dXJuIHRoaXMuZWFjaCgoZnVuY3Rpb24oKXt0WysrZV09dGhpc30pKSx0fSxub2RlOmZ1bmN0aW9uIFFHKCl7Zm9yKHZhciB0PXRoaXMuX2dyb3VwcyxlPTAsbj10Lmxlbmd0aDtlPG47KytlKWZvcih2YXIgaT10W2VdLHI9MCxvPWkubGVuZ3RoO3I8bzsrK3Ipe3ZhciBhPWlbcl07aWYoYSlyZXR1cm4gYX1yZXR1cm4gbnVsbH0sc2l6ZTpmdW5jdGlvbiB0Vygpe3ZhciB0PTA7cmV0dXJuIHRoaXMuZWFjaCgoZnVuY3Rpb24oKXsrK3R9KSksdH0sZW1wdHk6ZnVuY3Rpb24gZVcoKXtyZXR1cm4hdGhpcy5ub2RlKCl9LGVhY2g6ZnVuY3Rpb24gblcodCl7Zm9yKHZhciBlPXRoaXMuX2dyb3VwcyxuPTAsaT1lLmxlbmd0aDtuPGk7KytuKWZvcih2YXIgcixvPWVbbl0sYT0wLHM9by5sZW5ndGg7YTxzOysrYSkocj1vW2FdKSYmdC5jYWxsKHIsci5fX2RhdGFfXyxhLG8pO3JldHVybiB0aGlzfSxhdHRyOmZ1bmN0aW9uIGlXKHQsZSl7dmFyIG49eGoodCk7aWYoYXJndW1lbnRzLmxlbmd0aDwyKXt2YXIgaT10aGlzLm5vZGUoKTtyZXR1cm4gbi5sb2NhbD9pLmdldEF0dHJpYnV0ZU5TKG4uc3BhY2Usbi5sb2NhbCk6aS5nZXRBdHRyaWJ1dGUobil9cmV0dXJuIHRoaXMuZWFjaCgobnVsbD09ZT9uLmxvY2FsP1JqOklqOiJmdW5jdGlvbiI9PXR5cGVvZiBlP24ubG9jYWw/Qmo6RGo6bi5sb2NhbD96ajpPaikobixlKSl9LHN0eWxlOmZ1bmN0aW9uIHJXKHQsZSxuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD4xP3RoaXMuZWFjaCgobnVsbD09ZT9GajoiZnVuY3Rpb24iPT10eXBlb2YgZT9VajpWaikodCxlLG51bGw9PW4/IiI6bikpOmpqKHRoaXMubm9kZSgpLHQpfSxwcm9wZXJ0eTpmdW5jdGlvbiBvVyh0LGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPjE/dGhpcy5lYWNoKChudWxsPT1lP0dqOiJmdW5jdGlvbiI9PXR5cGVvZiBlP3FqOldqKSh0LGUpKTp0aGlzLm5vZGUoKVt0XX0sY2xhc3NlZDpmdW5jdGlvbiBhVyh0LGUpe3ZhciBuPVlqKHQrIiIpO2lmKGFyZ3VtZW50cy5sZW5ndGg8Mil7Zm9yKHZhciBpPVhqKHRoaXMubm9kZSgpKSxyPS0xLG89bi5sZW5ndGg7KytyPG87KWlmKCFpLmNvbnRhaW5zKG5bcl0pKXJldHVybiExO3JldHVybiEwfXJldHVybiB0aGlzLmVhY2goKCJmdW5jdGlvbiI9PXR5cGVvZiBlP3RHOmU/Smo6UWopKG4sZSkpfSx0ZXh0OmZ1bmN0aW9uIHNXKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3RoaXMuZWFjaChudWxsPT10P2VHOigiZnVuY3Rpb24iPT10eXBlb2YgdD9pRzpuRykodCkpOnRoaXMubm9kZSgpLnRleHRDb250ZW50fSxodG1sOmZ1bmN0aW9uIGxXKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3RoaXMuZWFjaChudWxsPT10P3JHOigiZnVuY3Rpb24iPT10eXBlb2YgdD9hRzpvRykodCkpOnRoaXMubm9kZSgpLmlubmVySFRNTH0scmFpc2U6ZnVuY3Rpb24gY1coKXtyZXR1cm4gdGhpcy5lYWNoKHNHKX0sbG93ZXI6ZnVuY3Rpb24gdVcoKXtyZXR1cm4gdGhpcy5lYWNoKGxHKX0sYXBwZW5kOmZ1bmN0aW9uIGhXKHQpe3ZhciBlPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6TWoodCk7cmV0dXJuIHRoaXMuc2VsZWN0KChmdW5jdGlvbigpe3JldHVybiB0aGlzLmFwcGVuZENoaWxkKGUuYXBwbHkodGhpcyxhcmd1bWVudHMpKX0pKX0saW5zZXJ0OmZ1bmN0aW9uIGRXKHQsZSl7dmFyIG49ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpNaih0KSxpPW51bGw9PWU/Y0c6ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZTpUaihlKTtyZXR1cm4gdGhpcy5zZWxlY3QoKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaW5zZXJ0QmVmb3JlKG4uYXBwbHkodGhpcyxhcmd1bWVudHMpLGkuYXBwbHkodGhpcyxhcmd1bWVudHMpfHxudWxsKX0pKX0scmVtb3ZlOmZ1bmN0aW9uIHBXKCl7cmV0dXJuIHRoaXMuZWFjaCh1Ryl9LGNsb25lOmZ1bmN0aW9uIGZXKHQpe3JldHVybiB0aGlzLnNlbGVjdCh0P2RHOmhHKX0sZGF0dW06ZnVuY3Rpb24gbVcodCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5wcm9wZXJ0eSgiX19kYXRhX18iLHQpOnRoaXMubm9kZSgpLl9fZGF0YV9ffSxvbjpmdW5jdGlvbiBnVyh0LGUsbil7dmFyIGkscixvPV9HKHQrIiIpLGE9by5sZW5ndGg7aWYoIShhcmd1bWVudHMubGVuZ3RoPDIpKXtmb3Iocz1lP3ZHOnlHLG51bGw9PW4mJihuPSExKSxpPTA7aTxhOysraSl0aGlzLmVhY2gocyhvW2ldLGUsbikpO3JldHVybiB0aGlzfXZhciBzPXRoaXMubm9kZSgpLl9fb247aWYocylmb3IodmFyIGwsYz0wLHU9cy5sZW5ndGg7Yzx1OysrYylmb3IoaT0wLGw9c1tjXTtpPGE7KytpKWlmKChyPW9baV0pLnR5cGU9PT1sLnR5cGUmJnIubmFtZT09PWwubmFtZSlyZXR1cm4gbC52YWx1ZX0sZGlzcGF0Y2g6ZnVuY3Rpb24gX1codCxlKXtyZXR1cm4gdGhpcy5lYWNoKCgiZnVuY3Rpb24iPT10eXBlb2YgZT9TRzp3RykodCxlKSl9fSx6Ry5wcm90b3R5cGUub249ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl8ub24uYXBwbHkodGhpcy5fLGFyZ3VtZW50cyk7cmV0dXJuIHQ9PT10aGlzLl8/dGhpczp0fTt2YXIgeVc9e30sdlc9e307ZnVuY3Rpb24gYlcodCl7cmV0dXJuIG5ldyBGdW5jdGlvbigiZCIsInJldHVybiB7Iit0Lm1hcCgoZnVuY3Rpb24odCxlKXtyZXR1cm4gSlNPTi5zdHJpbmdpZnkodCkrIjogZFsiK2UrIl0ifSkpLmpvaW4oIiwiKSsifSIpfWZ1bmN0aW9uIHhXKHQpe3ZhciBlPW5ldyBSZWdFeHAoJ1siJyt0KyJcblxyXSIpLG49dC5jaGFyQ29kZUF0KDApO2Z1bmN0aW9uIGkodCxlKXt2YXIgaSxyPVtdLG89dC5sZW5ndGgsYT0wLHM9MCxsPW88PTAsYz0hMTtmdW5jdGlvbiB1KCl7aWYobClyZXR1cm4gdlc7aWYoYylyZXR1cm4gYz0hMSx5Vzt2YXIgZSxpLHI9YTtpZigzND09PXQuY2hhckNvZGVBdChyKSl7Zm9yKDthKys8byYmMzQhPT10LmNoYXJDb2RlQXQoYSl8fDM0PT09dC5jaGFyQ29kZUF0KCsrYSk7KTtyZXR1cm4oZT1hKT49bz9sPSEwOjEwPT09KGk9dC5jaGFyQ29kZUF0KGErKykpP2M9ITA6MTM9PT1pJiYoYz0hMCwxMD09PXQuY2hhckNvZGVBdChhKSYmKythKSx0LnNsaWNlKHIrMSxlLTEpLnJlcGxhY2UoLyIiL2csJyInKX1mb3IoO2E8bzspe2lmKDEwPT09KGk9dC5jaGFyQ29kZUF0KGU9YSsrKSkpYz0hMDtlbHNlIGlmKDEzPT09aSljPSEwLDEwPT09dC5jaGFyQ29kZUF0KGEpJiYrK2E7ZWxzZSBpZihpIT09biljb250aW51ZTtyZXR1cm4gdC5zbGljZShyLGUpfXJldHVybiBsPSEwLHQuc2xpY2UocixvKX1mb3IoMTA9PT10LmNoYXJDb2RlQXQoby0xKSYmLS1vLDEzPT09dC5jaGFyQ29kZUF0KG8tMSkmJi0tbzsoaT11KCkpIT09dlc7KXtmb3IodmFyIGg9W107aSE9PXlXJiZpIT09dlc7KWgucHVzaChpKSxpPXUoKTtlJiZudWxsPT0oaD1lKGgscysrKSl8fHIucHVzaChoKX1yZXR1cm4gcn1mdW5jdGlvbiByKGUpe3JldHVybiBlLm1hcChvKS5qb2luKHQpfWZ1bmN0aW9uIG8odCl7cmV0dXJuIG51bGw9PXQ/IiI6ZS50ZXN0KHQrPSIiKT8nIicrdC5yZXBsYWNlKC8iL2csJyIiJykrJyInOnR9cmV0dXJue3BhcnNlOmZ1bmN0aW9uIGEodCxlKXt2YXIgbixyLG89aSh0LChmdW5jdGlvbih0LGkpe2lmKG4pcmV0dXJuIG4odCxpLTEpO3I9dCxuPWU/KGZ1bmN0aW9uIG8odCxlKXt2YXIgbj1iVyh0KTtyZXR1cm4gZnVuY3Rpb24oaSxyKXtyZXR1cm4gZShuKGkpLHIsdCl9fSkodCxlKTpiVyh0KX0pKTtyZXR1cm4gby5jb2x1bW5zPXJ8fFtdLG99LHBhcnNlUm93czppLGZvcm1hdDpmdW5jdGlvbiBzKGUsbil7cmV0dXJuIG51bGw9PW4mJihuPShmdW5jdGlvbiBpKHQpe3ZhciBlPU9iamVjdC5jcmVhdGUobnVsbCksbj1bXTtyZXR1cm4gdC5mb3JFYWNoKChmdW5jdGlvbih0KXtmb3IodmFyIGkgaW4gdClpIGluIGV8fG4ucHVzaChlW2ldPWkpfSkpLG59KShlKSksW24ubWFwKG8pLmpvaW4odCldLmNvbmNhdChlLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIG4ubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gbyhlW3RdKX0pKS5qb2luKHQpfSkpKS5qb2luKCJcbiIpfSxmb3JtYXRSb3dzOmZ1bmN0aW9uIGwodCl7cmV0dXJuIHQubWFwKHIpLmpvaW4oIlxuIil9fX12YXIgd1c9eFcoIiwiKSxTVz13Vy5wYXJzZSxNVz13Vy5wYXJzZVJvd3MsRVc9d1cuZm9ybWF0LFRXPXdXLmZvcm1hdFJvd3MsQ1c9eFcoIlx0IiksQVc9Q1cucGFyc2Usa1c9Q1cucGFyc2VSb3dzLExXPUNXLmZvcm1hdCxQVz1DVy5mb3JtYXRSb3dzO2Z1bmN0aW9uIE5XKHQpe3JldHVybigodCo9Mik8PTE/dCp0Oi0tdCooMi10KSsxKS8yfWZ1bmN0aW9uIElXKHQpe3JldHVybigodCo9Mik8PTE/dCp0KnQ6KHQtPTIpKnQqdCsyKS8yfXZhciBSVz0oZnVuY3Rpb24gdChlKXtmdW5jdGlvbiBuKHQpe3JldHVybiBNYXRoLnBvdyh0LGUpfXJldHVybiBlPStlLG4uZXhwb25lbnQ9dCxufSkoMyksT1c9KGZ1bmN0aW9uIHQoZSl7ZnVuY3Rpb24gbih0KXtyZXR1cm4gMS1NYXRoLnBvdygxLXQsZSl9cmV0dXJuIGU9K2Usbi5leHBvbmVudD10LG59KSgzKSx6Vz0oZnVuY3Rpb24gdChlKXtmdW5jdGlvbiBuKHQpe3JldHVybigodCo9Mik8PTE/TWF0aC5wb3codCxlKToyLU1hdGgucG93KDItdCxlKSkvMn1yZXR1cm4gZT0rZSxuLmV4cG9uZW50PXQsbn0pKDMpLERXPU1hdGguUEksQlc9RFcvMjtmdW5jdGlvbiBIVyh0KXtyZXR1cm4oMS1NYXRoLmNvcyhEVyp0KSkvMn1mdW5jdGlvbiBGVyh0KXtyZXR1cm4oKHQqPTIpPD0xP01hdGgucG93KDIsMTAqdC0xMCk6Mi1NYXRoLnBvdygyLDEwLTEwKnQpKS8yfWZ1bmN0aW9uIFZXKHQpe3JldHVybigodCo9Mik8PTE/MS1NYXRoLnNxcnQoMS10KnQpOk1hdGguc3FydCgxLSh0LT0yKSp0KSsxKS8yfXZhciBVVz00LzExLGpXPTcuNTYyNTtmdW5jdGlvbiBHVyh0KXtyZXR1cm4odD0rdCk8VVc/alcqdCp0OnQ8LjcyNzI3MjcyNzI3MjcyNzM/alcqKHQtPS41NDU0NTQ1NDU0NTQ1NDU0KSp0Ky43NTp0PC45MDkwOTA5MDkwOTA5MDkxP2pXKih0LT0uODE4MTgxODE4MTgxODE4MikqdCsuOTM3NTpqVyoodC09Ljk1NDU0NTQ1NDU0NTQ1NDYpKnQrLjk4NDM3NX12YXIgV1c9MS43MDE1OCxxVz0oZnVuY3Rpb24gdChlKXtmdW5jdGlvbiBuKHQpe3JldHVybiB0KnQqKChlKzEpKnQtZSl9cmV0dXJuIGU9K2Usbi5vdmVyc2hvb3Q9dCxufSkoV1cpLFlXPShmdW5jdGlvbiB0KGUpe2Z1bmN0aW9uIG4odCl7cmV0dXJuLS10KnQqKChlKzEpKnQrZSkrMX1yZXR1cm4gZT0rZSxuLm92ZXJzaG9vdD10LG59KShXVyksWFc9KGZ1bmN0aW9uIHQoZSl7ZnVuY3Rpb24gbih0KXtyZXR1cm4oKHQqPTIpPDE/dCp0KigoZSsxKSp0LWUpOih0LT0yKSp0KigoZSsxKSp0K2UpKzIpLzJ9cmV0dXJuIGU9K2Usbi5vdmVyc2hvb3Q9dCxufSkoV1cpLCRXPTIqTWF0aC5QSSxLVz0oZnVuY3Rpb24gdChlLG4pe3ZhciBpPU1hdGguYXNpbigxLyhlPU1hdGgubWF4KDEsZSkpKSoobi89JFcpO2Z1bmN0aW9uIHIodCl7cmV0dXJuIGUqTWF0aC5wb3coMiwxMCotLXQpKk1hdGguc2luKChpLXQpL24pfXJldHVybiByLmFtcGxpdHVkZT1mdW5jdGlvbihlKXtyZXR1cm4gdChlLG4qJFcpfSxyLnBlcmlvZD1mdW5jdGlvbihuKXtyZXR1cm4gdChlLG4pfSxyfSkoMSwuMyksWlc9KGZ1bmN0aW9uIHQoZSxuKXt2YXIgaT1NYXRoLmFzaW4oMS8oZT1NYXRoLm1heCgxLGUpKSkqKG4vPSRXKTtmdW5jdGlvbiByKHQpe3JldHVybiAxLWUqTWF0aC5wb3coMiwtMTAqKHQ9K3QpKSpNYXRoLnNpbigodCtpKS9uKX1yZXR1cm4gci5hbXBsaXR1ZGU9ZnVuY3Rpb24oZSl7cmV0dXJuIHQoZSxuKiRXKX0sci5wZXJpb2Q9ZnVuY3Rpb24obil7cmV0dXJuIHQoZSxuKX0scn0pKDEsLjMpLEpXPShmdW5jdGlvbiB0KGUsbil7dmFyIGk9TWF0aC5hc2luKDEvKGU9TWF0aC5tYXgoMSxlKSkpKihuLz0kVyk7ZnVuY3Rpb24gcih0KXtyZXR1cm4oKHQ9Mip0LTEpPDA/ZSpNYXRoLnBvdygyLDEwKnQpKk1hdGguc2luKChpLXQpL24pOjItZSpNYXRoLnBvdygyLC0xMCp0KSpNYXRoLnNpbigoaSt0KS9uKSkvMn1yZXR1cm4gci5hbXBsaXR1ZGU9ZnVuY3Rpb24oZSl7cmV0dXJuIHQoZSxuKiRXKX0sci5wZXJpb2Q9ZnVuY3Rpb24obil7cmV0dXJuIHQoZSxuKX0scn0pKDEsLjMpO2Z1bmN0aW9uIFFXKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0fX1mdW5jdGlvbiB0cSgpe3JldHVybiAxZS02KihNYXRoLnJhbmRvbSgpLS41KX1mdW5jdGlvbiBlcSh0LGUsbixpKXtpZihpc05hTihlKXx8aXNOYU4obikpcmV0dXJuIHQ7dmFyIHIsbyxhLHMsbCxjLHUsaCxkLHA9dC5fcm9vdCxmPXtkYXRhOml9LG09dC5feDAsZz10Ll95MCxfPXQuX3gxLHk9dC5feTE7aWYoIXApcmV0dXJuIHQuX3Jvb3Q9Zix0O2Zvcig7cC5sZW5ndGg7KWlmKChjPWU+PShvPShtK18pLzIpKT9tPW86Xz1vLCh1PW4+PShhPShnK3kpLzIpKT9nPWE6eT1hLHI9cCwhKHA9cFtoPXU8PDF8Y10pKXJldHVybiByW2hdPWYsdDtpZihzPSt0Ll94LmNhbGwobnVsbCxwLmRhdGEpLGw9K3QuX3kuY2FsbChudWxsLHAuZGF0YSksZT09PXMmJm49PT1sKXJldHVybiBmLm5leHQ9cCxyP3JbaF09Zjp0Ll9yb290PWYsdDtkb3tyPXI/cltoXT1uZXcgQXJyYXkoNCk6dC5fcm9vdD1uZXcgQXJyYXkoNCksKGM9ZT49KG89KG0rXykvMikpP209bzpfPW8sKHU9bj49KGE9KGcreSkvMikpP2c9YTp5PWF9d2hpbGUoKGg9dTw8MXxjKT09KGQ9KGw+PWEpPDwxfHM+PW8pKTtyZXR1cm4gcltkXT1wLHJbaF09Zix0fWZ1bmN0aW9uIG5xKHQsZSxuLGkscil7dGhpcy5ub2RlPXQsdGhpcy54MD1lLHRoaXMueTA9bix0aGlzLngxPWksdGhpcy55MT1yfWZ1bmN0aW9uIGlxKHQpe3JldHVybiB0WzBdfWZ1bmN0aW9uIHJxKHQpe3JldHVybiB0WzFdfWZ1bmN0aW9uIG9xKHQsZSxuKXt2YXIgaT1uZXcgYXEobnVsbD09ZT9pcTplLG51bGw9PW4/cnE6bixOYU4sTmFOLE5hTixOYU4pO3JldHVybiBudWxsPT10P2k6aS5hZGRBbGwodCl9ZnVuY3Rpb24gYXEodCxlLG4saSxyLG8pe3RoaXMuX3g9dCx0aGlzLl95PWUsdGhpcy5feDA9bix0aGlzLl95MD1pLHRoaXMuX3gxPXIsdGhpcy5feTE9byx0aGlzLl9yb290PXZvaWQgMH1mdW5jdGlvbiBzcSh0KXtmb3IodmFyIGU9e2RhdGE6dC5kYXRhfSxuPWU7dD10Lm5leHQ7KW49bi5uZXh0PXtkYXRhOnQuZGF0YX07cmV0dXJuIGV9dmFyIGxxPW9xLnByb3RvdHlwZT1hcS5wcm90b3R5cGU7ZnVuY3Rpb24gY3EodCl7cmV0dXJuIHQueCt0LnZ4fWZ1bmN0aW9uIHVxKHQpe3JldHVybiB0LnkrdC52eX1scS5jb3B5PWZ1bmN0aW9uKCl7dmFyIHQsZSxuPW5ldyBhcSh0aGlzLl94LHRoaXMuX3ksdGhpcy5feDAsdGhpcy5feTAsdGhpcy5feDEsdGhpcy5feTEpLGk9dGhpcy5fcm9vdDtpZighaSlyZXR1cm4gbjtpZighaS5sZW5ndGgpcmV0dXJuIG4uX3Jvb3Q9c3EoaSksbjtmb3IodD1be3NvdXJjZTppLHRhcmdldDpuLl9yb290PW5ldyBBcnJheSg0KX1dO2k9dC5wb3AoKTspZm9yKHZhciByPTA7cjw0OysrcikoZT1pLnNvdXJjZVtyXSkmJihlLmxlbmd0aD90LnB1c2goe3NvdXJjZTplLHRhcmdldDppLnRhcmdldFtyXT1uZXcgQXJyYXkoNCl9KTppLnRhcmdldFtyXT1zcShlKSk7cmV0dXJuIG59LGxxLmFkZD1mdW5jdGlvbiBocSh0KXt2YXIgZT0rdGhpcy5feC5jYWxsKG51bGwsdCksbj0rdGhpcy5feS5jYWxsKG51bGwsdCk7cmV0dXJuIGVxKHRoaXMuY292ZXIoZSxuKSxlLG4sdCl9LGxxLmFkZEFsbD1mdW5jdGlvbiBkcSh0KXt2YXIgZSxuLGkscixvPXQubGVuZ3RoLGE9bmV3IEFycmF5KG8pLHM9bmV3IEFycmF5KG8pLGw9MS8wLGM9MS8wLHU9LTEvMCxoPS0xLzA7Zm9yKG49MDtuPG87KytuKWlzTmFOKGk9K3RoaXMuX3guY2FsbChudWxsLGU9dFtuXSkpfHxpc05hTihyPSt0aGlzLl95LmNhbGwobnVsbCxlKSl8fChhW25dPWksc1tuXT1yLGk8bCYmKGw9aSksaT51JiYodT1pKSxyPGMmJihjPXIpLHI+aCYmKGg9cikpO2lmKGw+dXx8Yz5oKXJldHVybiB0aGlzO2Zvcih0aGlzLmNvdmVyKGwsYykuY292ZXIodSxoKSxuPTA7bjxvOysrbillcSh0aGlzLGFbbl0sc1tuXSx0W25dKTtyZXR1cm4gdGhpc30sbHEuY292ZXI9ZnVuY3Rpb24gcHEodCxlKXtpZihpc05hTih0PSt0KXx8aXNOYU4oZT0rZSkpcmV0dXJuIHRoaXM7dmFyIG49dGhpcy5feDAsaT10aGlzLl95MCxyPXRoaXMuX3gxLG89dGhpcy5feTE7aWYoaXNOYU4obikpcj0obj1NYXRoLmZsb29yKHQpKSsxLG89KGk9TWF0aC5mbG9vcihlKSkrMTtlbHNle2Zvcih2YXIgYSxzLGw9ci1uLGM9dGhpcy5fcm9vdDtuPnR8fHQ+PXJ8fGk+ZXx8ZT49bzspc3dpdGNoKHM9KGU8aSk8PDF8dDxuLChhPW5ldyBBcnJheSg0KSlbc109YyxjPWEsbCo9MixzKXtjYXNlIDA6cj1uK2wsbz1pK2w7YnJlYWs7Y2FzZSAxOm49ci1sLG89aStsO2JyZWFrO2Nhc2UgMjpyPW4rbCxpPW8tbDticmVhaztjYXNlIDM6bj1yLWwsaT1vLWx9dGhpcy5fcm9vdCYmdGhpcy5fcm9vdC5sZW5ndGgmJih0aGlzLl9yb290PWMpfXJldHVybiB0aGlzLl94MD1uLHRoaXMuX3kwPWksdGhpcy5feDE9cix0aGlzLl95MT1vLHRoaXN9LGxxLmRhdGE9ZnVuY3Rpb24gZnEoKXt2YXIgdD1bXTtyZXR1cm4gdGhpcy52aXNpdCgoZnVuY3Rpb24oZSl7aWYoIWUubGVuZ3RoKWRve3QucHVzaChlLmRhdGEpfXdoaWxlKGU9ZS5uZXh0KX0pKSx0fSxscS5leHRlbnQ9ZnVuY3Rpb24gbXEodCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5jb3ZlcigrdFswXVswXSwrdFswXVsxXSkuY292ZXIoK3RbMV1bMF0sK3RbMV1bMV0pOmlzTmFOKHRoaXMuX3gwKT92b2lkIDA6W1t0aGlzLl94MCx0aGlzLl95MF0sW3RoaXMuX3gxLHRoaXMuX3kxXV19LGxxLmZpbmQ9ZnVuY3Rpb24gZ3EodCxlLG4pe3ZhciBpLHIsbyxhLHMsbCxjLHU9dGhpcy5feDAsaD10aGlzLl95MCxkPXRoaXMuX3gxLHA9dGhpcy5feTEsZj1bXSxtPXRoaXMuX3Jvb3Q7Zm9yKG0mJmYucHVzaChuZXcgbnEobSx1LGgsZCxwKSksbnVsbD09bj9uPTEvMDoodT10LW4saD1lLW4sZD10K24scD1lK24sbio9bik7bD1mLnBvcCgpOylpZighKCEobT1sLm5vZGUpfHwocj1sLngwKT5kfHwobz1sLnkwKT5wfHwoYT1sLngxKTx1fHwocz1sLnkxKTxoKSlpZihtLmxlbmd0aCl7dmFyIGc9KHIrYSkvMixfPShvK3MpLzI7Zi5wdXNoKG5ldyBucShtWzNdLGcsXyxhLHMpLG5ldyBucShtWzJdLHIsXyxnLHMpLG5ldyBucShtWzFdLGcsbyxhLF8pLG5ldyBucShtWzBdLHIsbyxnLF8pKSwoYz0oZT49Xyk8PDF8dD49ZykmJihsPWZbZi5sZW5ndGgtMV0sZltmLmxlbmd0aC0xXT1mW2YubGVuZ3RoLTEtY10sZltmLmxlbmd0aC0xLWNdPWwpfWVsc2V7dmFyIHk9dC0rdGhpcy5feC5jYWxsKG51bGwsbS5kYXRhKSx2PWUtK3RoaXMuX3kuY2FsbChudWxsLG0uZGF0YSksYj15Knkrdip2O2lmKGI8bil7dmFyIHg9TWF0aC5zcXJ0KG49Yik7dT10LXgsaD1lLXgsZD10K3gscD1lK3gsaT1tLmRhdGF9fXJldHVybiBpfSxscS5yZW1vdmU9ZnVuY3Rpb24gX3EodCl7aWYoaXNOYU4obz0rdGhpcy5feC5jYWxsKG51bGwsdCkpfHxpc05hTihhPSt0aGlzLl95LmNhbGwobnVsbCx0KSkpcmV0dXJuIHRoaXM7dmFyIGUsbixpLHIsbyxhLHMsbCxjLHUsaCxkLHA9dGhpcy5fcm9vdCxmPXRoaXMuX3gwLG09dGhpcy5feTAsZz10aGlzLl94MSxfPXRoaXMuX3kxO2lmKCFwKXJldHVybiB0aGlzO2lmKHAubGVuZ3RoKWZvcig7Oyl7aWYoKGM9bz49KHM9KGYrZykvMikpP2Y9czpnPXMsKHU9YT49KGw9KG0rXykvMikpP209bDpfPWwsZT1wLCEocD1wW2g9dTw8MXxjXSkpcmV0dXJuIHRoaXM7aWYoIXAubGVuZ3RoKWJyZWFrOyhlW2grMSYzXXx8ZVtoKzImM118fGVbaCszJjNdKSYmKG49ZSxkPWgpfWZvcig7cC5kYXRhIT09dDspaWYoaT1wLCEocD1wLm5leHQpKXJldHVybiB0aGlzO3JldHVybihyPXAubmV4dCkmJmRlbGV0ZSBwLm5leHQsaT8ocj9pLm5leHQ9cjpkZWxldGUgaS5uZXh0LHRoaXMpOmU/KHI/ZVtoXT1yOmRlbGV0ZSBlW2hdLChwPWVbMF18fGVbMV18fGVbMl18fGVbM10pJiZwPT09KGVbM118fGVbMl18fGVbMV18fGVbMF0pJiYhcC5sZW5ndGgmJihuP25bZF09cDp0aGlzLl9yb290PXApLHRoaXMpOih0aGlzLl9yb290PXIsdGhpcyl9LGxxLnJlbW92ZUFsbD1mdW5jdGlvbiB5cSh0KXtmb3IodmFyIGU9MCxuPXQubGVuZ3RoO2U8bjsrK2UpdGhpcy5yZW1vdmUodFtlXSk7cmV0dXJuIHRoaXN9LGxxLnJvb3Q9ZnVuY3Rpb24gdnEoKXtyZXR1cm4gdGhpcy5fcm9vdH0sbHEuc2l6ZT1mdW5jdGlvbiBicSgpe3ZhciB0PTA7cmV0dXJuIHRoaXMudmlzaXQoKGZ1bmN0aW9uKGUpe2lmKCFlLmxlbmd0aClkb3srK3R9d2hpbGUoZT1lLm5leHQpfSkpLHR9LGxxLnZpc2l0PWZ1bmN0aW9uIHhxKHQpe3ZhciBlLG4saSxyLG8sYSxzPVtdLGw9dGhpcy5fcm9vdDtmb3IobCYmcy5wdXNoKG5ldyBucShsLHRoaXMuX3gwLHRoaXMuX3kwLHRoaXMuX3gxLHRoaXMuX3kxKSk7ZT1zLnBvcCgpOylpZighdChsPWUubm9kZSxpPWUueDAscj1lLnkwLG89ZS54MSxhPWUueTEpJiZsLmxlbmd0aCl7dmFyIGM9KGkrbykvMix1PShyK2EpLzI7KG49bFszXSkmJnMucHVzaChuZXcgbnEobixjLHUsbyxhKSksKG49bFsyXSkmJnMucHVzaChuZXcgbnEobixpLHUsYyxhKSksKG49bFsxXSkmJnMucHVzaChuZXcgbnEobixjLHIsbyx1KSksKG49bFswXSkmJnMucHVzaChuZXcgbnEobixpLHIsYyx1KSl9cmV0dXJuIHRoaXN9LGxxLnZpc2l0QWZ0ZXI9ZnVuY3Rpb24gd3EodCl7dmFyIGUsbj1bXSxpPVtdO2Zvcih0aGlzLl9yb290JiZuLnB1c2gobmV3IG5xKHRoaXMuX3Jvb3QsdGhpcy5feDAsdGhpcy5feTAsdGhpcy5feDEsdGhpcy5feTEpKTtlPW4ucG9wKCk7KXt2YXIgcj1lLm5vZGU7aWYoci5sZW5ndGgpe3ZhciBvLGE9ZS54MCxzPWUueTAsbD1lLngxLGM9ZS55MSx1PShhK2wpLzIsaD0ocytjKS8yOyhvPXJbMF0pJiZuLnB1c2gobmV3IG5xKG8sYSxzLHUsaCkpLChvPXJbMV0pJiZuLnB1c2gobmV3IG5xKG8sdSxzLGwsaCkpLChvPXJbMl0pJiZuLnB1c2gobmV3IG5xKG8sYSxoLHUsYykpLChvPXJbM10pJiZuLnB1c2gobmV3IG5xKG8sdSxoLGwsYykpfWkucHVzaChlKX1mb3IoO2U9aS5wb3AoKTspdChlLm5vZGUsZS54MCxlLnkwLGUueDEsZS55MSk7cmV0dXJuIHRoaXN9LGxxLng9ZnVuY3Rpb24gU3EodCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHRoaXMuX3g9dCx0aGlzKTp0aGlzLl94fSxscS55PWZ1bmN0aW9uIE1xKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0aGlzLl95PXQsdGhpcyk6dGhpcy5feX07dmFyIEVxPSIkIjtmdW5jdGlvbiBUcSgpe31mdW5jdGlvbiBDcSh0LGUpe3ZhciBuPW5ldyBUcTtpZih0IGluc3RhbmNlb2YgVHEpdC5lYWNoKChmdW5jdGlvbih0LGUpe24uc2V0KGUsdCl9KSk7ZWxzZSBpZihBcnJheS5pc0FycmF5KHQpKXt2YXIgaSxyPS0xLG89dC5sZW5ndGg7aWYobnVsbD09ZSlmb3IoOysrcjxvOyluLnNldChyLHRbcl0pO2Vsc2UgZm9yKDsrK3I8bzspbi5zZXQoZShpPXRbcl0scix0KSxpKX1lbHNlIGlmKHQpZm9yKHZhciBhIGluIHQpbi5zZXQoYSx0W2FdKTtyZXR1cm4gbn1mdW5jdGlvbiBBcSgpe31UcS5wcm90b3R5cGU9Q3EucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpUcSxoYXM6ZnVuY3Rpb24odCl7cmV0dXJuIEVxK3QgaW4gdGhpc30sZ2V0OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzW0VxK3RdfSxzZXQ6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpc1tFcSt0XT1lLHRoaXN9LHJlbW92ZTpmdW5jdGlvbih0KXt2YXIgZT1FcSt0O3JldHVybiBlIGluIHRoaXMmJmRlbGV0ZSB0aGlzW2VdfSxjbGVhcjpmdW5jdGlvbigpe2Zvcih2YXIgdCBpbiB0aGlzKXRbMF09PT1FcSYmZGVsZXRlIHRoaXNbdF19LGtleXM6ZnVuY3Rpb24oKXt2YXIgdD1bXTtmb3IodmFyIGUgaW4gdGhpcyllWzBdPT09RXEmJnQucHVzaChlLnNsaWNlKDEpKTtyZXR1cm4gdH0sdmFsdWVzOmZ1bmN0aW9uKCl7dmFyIHQ9W107Zm9yKHZhciBlIGluIHRoaXMpZVswXT09PUVxJiZ0LnB1c2godGhpc1tlXSk7cmV0dXJuIHR9LGVudHJpZXM6ZnVuY3Rpb24oKXt2YXIgdD1bXTtmb3IodmFyIGUgaW4gdGhpcyllWzBdPT09RXEmJnQucHVzaCh7a2V5OmUuc2xpY2UoMSksdmFsdWU6dGhpc1tlXX0pO3JldHVybiB0fSxzaXplOmZ1bmN0aW9uKCl7dmFyIHQ9MDtmb3IodmFyIGUgaW4gdGhpcyllWzBdPT09RXEmJisrdDtyZXR1cm4gdH0sZW1wdHk6ZnVuY3Rpb24oKXtmb3IodmFyIHQgaW4gdGhpcylpZih0WzBdPT09RXEpcmV0dXJuITE7cmV0dXJuITB9LGVhY2g6ZnVuY3Rpb24odCl7Zm9yKHZhciBlIGluIHRoaXMpZVswXT09PUVxJiZ0KHRoaXNbZV0sZS5zbGljZSgxKSx0aGlzKX19O3ZhciBrcT1DcS5wcm90b3R5cGU7ZnVuY3Rpb24gTHEodCl7cmV0dXJuIHQuaW5kZXh9ZnVuY3Rpb24gUHEodCxlKXt2YXIgbj10LmdldChlKTtpZighbil0aHJvdyBuZXcgRXJyb3IoIm1pc3Npbmc6ICIrZSk7cmV0dXJuIG59QXEucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpBcSxoYXM6a3EuaGFzLGFkZDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpc1tFcSsodCs9IiIpXT10LHRoaXN9LHJlbW92ZTprcS5yZW1vdmUsY2xlYXI6a3EuY2xlYXIsdmFsdWVzOmtxLmtleXMsc2l6ZTprcS5zaXplLGVtcHR5OmtxLmVtcHR5LGVhY2g6a3EuZWFjaH07dmFyIE5xPXt2YWx1ZTpmdW5jdGlvbigpe319O2Z1bmN0aW9uIElxKCl7Zm9yKHZhciB0LGU9MCxuPWFyZ3VtZW50cy5sZW5ndGgsaT17fTtlPG47KytlKXtpZighKHQ9YXJndW1lbnRzW2VdKyIiKXx8dCBpbiBpfHwvW1xzLl0vLnRlc3QodCkpdGhyb3cgbmV3IEVycm9yKCJpbGxlZ2FsIHR5cGU6ICIrdCk7aVt0XT1bXX1yZXR1cm4gbmV3IFJxKGkpfWZ1bmN0aW9uIFJxKHQpe3RoaXMuXz10fWZ1bmN0aW9uIE9xKHQsZSl7cmV0dXJuIHQudHJpbSgpLnNwbGl0KC9efFxzKy8pLm1hcCgoZnVuY3Rpb24odCl7dmFyIG49IiIsaT10LmluZGV4T2YoIi4iKTtpZihpPj0wJiYobj10LnNsaWNlKGkrMSksdD10LnNsaWNlKDAsaSkpLHQmJiFlLmhhc093blByb3BlcnR5KHQpKXRocm93IG5ldyBFcnJvcigidW5rbm93biB0eXBlOiAiK3QpO3JldHVybnt0eXBlOnQsbmFtZTpufX0pKX1mdW5jdGlvbiB6cSh0LGUpe2Zvcih2YXIgbixpPTAscj10Lmxlbmd0aDtpPHI7KytpKWlmKChuPXRbaV0pLm5hbWU9PT1lKXJldHVybiBuLnZhbHVlfWZ1bmN0aW9uIERxKHQsZSxuKXtmb3IodmFyIGk9MCxyPXQubGVuZ3RoO2k8cjsrK2kpaWYodFtpXS5uYW1lPT09ZSl7dFtpXT1OcSx0PXQuc2xpY2UoMCxpKS5jb25jYXQodC5zbGljZShpKzEpKTticmVha31yZXR1cm4gbnVsbCE9biYmdC5wdXNoKHtuYW1lOmUsdmFsdWU6bn0pLHR9UnEucHJvdG90eXBlPUlxLnByb3RvdHlwZT17Y29uc3RydWN0b3I6UnEsb246ZnVuY3Rpb24odCxlKXt2YXIgbixpPXRoaXMuXyxyPU9xKHQrIiIsaSksbz0tMSxhPXIubGVuZ3RoO2lmKCEoYXJndW1lbnRzLmxlbmd0aDwyKSl7aWYobnVsbCE9ZSYmImZ1bmN0aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIGNhbGxiYWNrOiAiK2UpO2Zvcig7KytvPGE7KWlmKG49KHQ9cltvXSkudHlwZSlpW25dPURxKGlbbl0sdC5uYW1lLGUpO2Vsc2UgaWYobnVsbD09ZSlmb3IobiBpbiBpKWlbbl09RHEoaVtuXSx0Lm5hbWUsbnVsbCk7cmV0dXJuIHRoaXN9Zm9yKDsrK288YTspaWYoKG49KHQ9cltvXSkudHlwZSkmJihuPXpxKGlbbl0sdC5uYW1lKSkpcmV0dXJuIG59LGNvcHk6ZnVuY3Rpb24oKXt2YXIgdD17fSxlPXRoaXMuXztmb3IodmFyIG4gaW4gZSl0W25dPWVbbl0uc2xpY2UoKTtyZXR1cm4gbmV3IFJxKHQpfSxjYWxsOmZ1bmN0aW9uKHQsZSl7aWYoKG49YXJndW1lbnRzLmxlbmd0aC0yKT4wKWZvcih2YXIgbixpLHI9bmV3IEFycmF5KG4pLG89MDtvPG47KytvKXJbb109YXJndW1lbnRzW28rMl07aWYoIXRoaXMuXy5oYXNPd25Qcm9wZXJ0eSh0KSl0aHJvdyBuZXcgRXJyb3IoInVua25vd24gdHlwZTogIit0KTtmb3Iobz0wLG49KGk9dGhpcy5fW3RdKS5sZW5ndGg7bzxuOysrbylpW29dLnZhbHVlLmFwcGx5KGUscil9LGFwcGx5OmZ1bmN0aW9uKHQsZSxuKXtpZighdGhpcy5fLmhhc093blByb3BlcnR5KHQpKXRocm93IG5ldyBFcnJvcigidW5rbm93biB0eXBlOiAiK3QpO2Zvcih2YXIgaT10aGlzLl9bdF0scj0wLG89aS5sZW5ndGg7cjxvOysrcilpW3JdLnZhbHVlLmFwcGx5KGUsbil9fTt2YXIgQnEsSHEsRnE9MCxWcT0wLFVxPTAsanE9MCxHcT0wLFdxPTAscXE9Im9iamVjdCI9PXR5cGVvZiBwZXJmb3JtYW5jZSYmcGVyZm9ybWFuY2Uubm93P3BlcmZvcm1hbmNlOkRhdGUsWXE9Im9iamVjdCI9PXR5cGVvZiB3aW5kb3cmJndpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWU/d2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZS5iaW5kKHdpbmRvdyk6ZnVuY3Rpb24odCl7c2V0VGltZW91dCh0LDE3KX07ZnVuY3Rpb24gWHEoKXtyZXR1cm4gR3F8fChZcSgkcSksR3E9cXEubm93KCkrV3EpfWZ1bmN0aW9uICRxKCl7R3E9MH1mdW5jdGlvbiBLcSgpe3RoaXMuX2NhbGw9dGhpcy5fdGltZT10aGlzLl9uZXh0PW51bGx9ZnVuY3Rpb24gWnEodCxlLG4pe3ZhciBpPW5ldyBLcTtyZXR1cm4gaS5yZXN0YXJ0KHQsZSxuKSxpfWZ1bmN0aW9uIEpxKCl7R3E9KGpxPXFxLm5vdygpKStXcSxGcT1WcT0wO3RyeXshKGZ1bmN0aW9uIHQoKXtYcSgpLCsrRnE7Zm9yKHZhciB0LGU9QnE7ZTspKHQ9R3EtZS5fdGltZSk+PTAmJmUuX2NhbGwuY2FsbChudWxsLHQpLGU9ZS5fbmV4dDstLUZxfSkoKX1maW5hbGx5e0ZxPTAsKGZ1bmN0aW9uIGUoKXt2YXIgdCxlLG49QnEsaT0xLzA7Zm9yKDtuOyluLl9jYWxsPyhpPm4uX3RpbWUmJihpPW4uX3RpbWUpLHQ9bixuPW4uX25leHQpOihlPW4uX25leHQsbi5fbmV4dD1udWxsLG49dD90Ll9uZXh0PWU6QnE9ZSk7SHE9dCx0WShpKX0pKCksR3E9MH19ZnVuY3Rpb24gUXEoKXt2YXIgdD1xcS5ub3coKSxlPXQtanE7ZT4xZTMmJihXcS09ZSxqcT10KX1mdW5jdGlvbiB0WSh0KXtGcXx8KFZxJiYoVnE9Y2xlYXJUaW1lb3V0KFZxKSksdC1HcT4yND8odDwxLzAmJihWcT1zZXRUaW1lb3V0KEpxLHQtcXEubm93KCktV3EpKSxVcSYmKFVxPWNsZWFySW50ZXJ2YWwoVXEpKSk6KFVxfHwoanE9cXEubm93KCksVXE9c2V0SW50ZXJ2YWwoUXEsMWUzKSksRnE9MSxZcShKcSkpKX1mdW5jdGlvbiBlWSh0KXtyZXR1cm4gdC54fWZ1bmN0aW9uIG5ZKHQpe3JldHVybiB0Lnl9S3EucHJvdG90eXBlPVpxLnByb3RvdHlwZT17Y29uc3RydWN0b3I6S3EscmVzdGFydDpmdW5jdGlvbih0LGUsbil7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQpdGhyb3cgbmV3IFR5cGVFcnJvcigiY2FsbGJhY2sgaXMgbm90IGEgZnVuY3Rpb24iKTtuPShudWxsPT1uP1hxKCk6K24pKyhudWxsPT1lPzA6K2UpLHRoaXMuX25leHR8fEhxPT09dGhpc3x8KEhxP0hxLl9uZXh0PXRoaXM6QnE9dGhpcyxIcT10aGlzKSx0aGlzLl9jYWxsPXQsdGhpcy5fdGltZT1uLHRZKCl9LHN0b3A6ZnVuY3Rpb24oKXt0aGlzLl9jYWxsJiYodGhpcy5fY2FsbD1udWxsLHRoaXMuX3RpbWU9MS8wLHRZKCkpfX07dmFyIGlZLHJZPU1hdGguUEkqKDMtTWF0aC5zcXJ0KDUpKTtmdW5jdGlvbiBvWSh0LGUpe2lmKChuPSh0PWU/dC50b0V4cG9uZW50aWFsKGUtMSk6dC50b0V4cG9uZW50aWFsKCkpLmluZGV4T2YoImUiKSk8MClyZXR1cm4gbnVsbDt2YXIgbixpPXQuc2xpY2UoMCxuKTtyZXR1cm5baS5sZW5ndGg+MT9pWzBdK2kuc2xpY2UoMik6aSwrdC5zbGljZShuKzEpXX1mdW5jdGlvbiBhWSh0KXtyZXR1cm4odD1vWShNYXRoLmFicyh0KSkpP3RbMV06TmFOfWZ1bmN0aW9uIHNZKHQsZSl7dmFyIG49b1kodCxlKTtpZighbilyZXR1cm4gdCsiIjt2YXIgaT1uWzBdLHI9blsxXTtyZXR1cm4gcjwwPyIwLiIrbmV3IEFycmF5KC1yKS5qb2luKCIwIikraTppLmxlbmd0aD5yKzE/aS5zbGljZSgwLHIrMSkrIi4iK2kuc2xpY2UocisxKTppK25ldyBBcnJheShyLWkubGVuZ3RoKzIpLmpvaW4oIjAiKX12YXIgbFk9eyIiOmZ1bmN0aW9uIGNZKHQsZSl7dDpmb3IodmFyIG4saT0odD10LnRvUHJlY2lzaW9uKGUpKS5sZW5ndGgscj0xLG89LTE7cjxpOysrcilzd2l0Y2godFtyXSl7Y2FzZSIuIjpvPW49cjticmVhaztjYXNlIjAiOjA9PT1vJiYobz1yKSxuPXI7YnJlYWs7Y2FzZSJlIjpicmVhayB0O2RlZmF1bHQ6bz4wJiYobz0wKX1yZXR1cm4gbz4wP3Quc2xpY2UoMCxvKSt0LnNsaWNlKG4rMSk6dH0sIiUiOmZ1bmN0aW9uKHQsZSl7cmV0dXJuKDEwMCp0KS50b0ZpeGVkKGUpfSxiOmZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLnJvdW5kKHQpLnRvU3RyaW5nKDIpfSxjOmZ1bmN0aW9uKHQpe3JldHVybiB0KyIifSxkOmZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLnJvdW5kKHQpLnRvU3RyaW5nKDEwKX0sZTpmdW5jdGlvbih0LGUpe3JldHVybiB0LnRvRXhwb25lbnRpYWwoZSl9LGY6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC50b0ZpeGVkKGUpfSxnOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQudG9QcmVjaXNpb24oZSl9LG86ZnVuY3Rpb24odCl7cmV0dXJuIE1hdGgucm91bmQodCkudG9TdHJpbmcoOCl9LHA6ZnVuY3Rpb24odCxlKXtyZXR1cm4gc1koMTAwKnQsZSl9LHI6c1ksczpmdW5jdGlvbiB1WSh0LGUpe3ZhciBuPW9ZKHQsZSk7aWYoIW4pcmV0dXJuIHQrIiI7dmFyIGk9blswXSxyPW5bMV0sbz1yLShpWT0zKk1hdGgubWF4KC04LE1hdGgubWluKDgsTWF0aC5mbG9vcihyLzMpKSkpKzEsYT1pLmxlbmd0aDtyZXR1cm4gbz09PWE/aTpvPmE/aStuZXcgQXJyYXkoby1hKzEpLmpvaW4oIjAiKTpvPjA/aS5zbGljZSgwLG8pKyIuIitpLnNsaWNlKG8pOiIwLiIrbmV3IEFycmF5KDEtbykuam9pbigiMCIpK29ZKHQsTWF0aC5tYXgoMCxlK28tMSkpWzBdfSxYOmZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLnJvdW5kKHQpLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpfSx4OmZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLnJvdW5kKHQpLnRvU3RyaW5nKDE2KX19LGhZPS9eKD86KC4pPyhbPD49Xl0pKT8oWytcLVwoIF0pPyhbJCNdKT8oMCk/KFxkKyk/KCwpPyhcLlxkKyk/KFthLXolXSk/JC9pO2Z1bmN0aW9uIGRZKHQpe3JldHVybiBuZXcgcFkodCl9ZnVuY3Rpb24gcFkodCl7aWYoIShlPWhZLmV4ZWModCkpKXRocm93IG5ldyBFcnJvcigiaW52YWxpZCBmb3JtYXQ6ICIrdCk7dmFyIGUsbj1lWzFdfHwiICIsaT1lWzJdfHwiPiIscj1lWzNdfHwiLSIsbz1lWzRdfHwiIixhPSEhZVs1XSxzPWVbNl0mJitlWzZdLGw9ISFlWzddLGM9ZVs4XSYmK2VbOF0uc2xpY2UoMSksdT1lWzldfHwiIjsibiI9PT11PyhsPSEwLHU9ImciKTpsWVt1XXx8KHU9IiIpLChhfHwiMCI9PT1uJiYiPSI9PT1pKSYmKGE9ITAsbj0iMCIsaT0iPSIpLHRoaXMuZmlsbD1uLHRoaXMuYWxpZ249aSx0aGlzLnNpZ249cix0aGlzLnN5bWJvbD1vLHRoaXMuemVybz1hLHRoaXMud2lkdGg9cyx0aGlzLmNvbW1hPWwsdGhpcy5wcmVjaXNpb249Yyx0aGlzLnR5cGU9dX1mdW5jdGlvbiBmWSh0KXtyZXR1cm4gdH1kWS5wcm90b3R5cGU9cFkucHJvdG90eXBlLHBZLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmZpbGwrdGhpcy5hbGlnbit0aGlzLnNpZ24rdGhpcy5zeW1ib2wrKHRoaXMuemVybz8iMCI6IiIpKyhudWxsPT10aGlzLndpZHRoPyIiOk1hdGgubWF4KDEsMHx0aGlzLndpZHRoKSkrKHRoaXMuY29tbWE/IiwiOiIiKSsobnVsbD09dGhpcy5wcmVjaXNpb24/IiI6Ii4iK01hdGgubWF4KDAsMHx0aGlzLnByZWNpc2lvbikpK3RoaXMudHlwZX07dmFyIG1ZLGdZLF9ZLHlZPVsieSIsInoiLCJhIiwiZiIsInAiLCJuIiwiwrUiLCJtIiwiIiwiayIsIk0iLCJHIiwiVCIsIlAiLCJFIiwiWiIsIlkiXTtmdW5jdGlvbiB2WSh0KXt2YXIgZT10Lmdyb3VwaW5nJiZ0LnRob3VzYW5kcz8oZnVuY3Rpb24gbih0LGUpe3JldHVybiBmdW5jdGlvbihuLGkpe2Zvcih2YXIgcj1uLmxlbmd0aCxvPVtdLGE9MCxzPXRbMF0sbD0wO3I+MCYmcz4wJiYobCtzKzE+aSYmKHM9TWF0aC5tYXgoMSxpLWwpKSxvLnB1c2gobi5zdWJzdHJpbmcoci09cyxyK3MpKSwhKChsKz1zKzEpPmkpKTspcz10W2E9KGErMSkldC5sZW5ndGhdO3JldHVybiBvLnJldmVyc2UoKS5qb2luKGUpfX0pKHQuZ3JvdXBpbmcsdC50aG91c2FuZHMpOmZZLGk9dC5jdXJyZW5jeSxyPXQuZGVjaW1hbCxvPXQubnVtZXJhbHM/KGZ1bmN0aW9uIGEodCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBlLnJlcGxhY2UoL1swLTldL2csKGZ1bmN0aW9uKGUpe3JldHVybiB0WytlXX0pKX19KSh0Lm51bWVyYWxzKTpmWSxzPXQucGVyY2VudHx8IiUiO2Z1bmN0aW9uIGwodCl7dmFyIG49KHQ9ZFkodCkpLmZpbGwsYT10LmFsaWduLGw9dC5zaWduLGM9dC5zeW1ib2wsdT10Lnplcm8saD10LndpZHRoLGQ9dC5jb21tYSxwPXQucHJlY2lzaW9uLGY9dC50eXBlLG09IiQiPT09Yz9pWzBdOiIjIj09PWMmJi9bYm94WF0vLnRlc3QoZik/IjAiK2YudG9Mb3dlckNhc2UoKToiIixnPSIkIj09PWM/aVsxXTovWyVwXS8udGVzdChmKT9zOiIiLF89bFlbZl0seT0hZnx8L1tkZWZncHJzJV0vLnRlc3QoZik7ZnVuY3Rpb24gdih0KXt2YXIgaSxzLGMsdj1tLGI9ZztpZigiYyI9PT1mKWI9Xyh0KStiLHQ9IiI7ZWxzZXt2YXIgeD0odD0rdCk8MDtpZih0PV8oTWF0aC5hYnModCkscCkseCYmMD09K3QmJih4PSExKSx2PSh4PyIoIj09PWw/bDoiLSI6Ii0iPT09bHx8IigiPT09bD8iIjpsKSt2LGI9KCJzIj09PWY/eVlbOCtpWS8zXToiIikrYisoeCYmIigiPT09bD8iKSI6IiIpLHkpZm9yKGk9LTEscz10Lmxlbmd0aDsrK2k8czspaWYoNDg+KGM9dC5jaGFyQ29kZUF0KGkpKXx8Yz41Nyl7Yj0oNDY9PT1jP3IrdC5zbGljZShpKzEpOnQuc2xpY2UoaSkpK2IsdD10LnNsaWNlKDAsaSk7YnJlYWt9fWQmJiF1JiYodD1lKHQsMS8wKSk7dmFyIHc9di5sZW5ndGgrdC5sZW5ndGgrYi5sZW5ndGgsUz13PGg/bmV3IEFycmF5KGgtdysxKS5qb2luKG4pOiIiO3N3aXRjaChkJiZ1JiYodD1lKFMrdCxTLmxlbmd0aD9oLWIubGVuZ3RoOjEvMCksUz0iIiksYSl7Y2FzZSI8Ijp0PXYrdCtiK1M7YnJlYWs7Y2FzZSI9Ijp0PXYrUyt0K2I7YnJlYWs7Y2FzZSJeIjp0PVMuc2xpY2UoMCx3PVMubGVuZ3RoPj4xKSt2K3QrYitTLnNsaWNlKHcpO2JyZWFrO2RlZmF1bHQ6dD1TK3YrdCtifXJldHVybiBvKHQpfXJldHVybiBwPW51bGw9PXA/Zj82OjEyOi9bZ3Byc10vLnRlc3QoZik/TWF0aC5tYXgoMSxNYXRoLm1pbigyMSxwKSk6TWF0aC5tYXgoMCxNYXRoLm1pbigyMCxwKSksdi50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0KyIifSx2fXJldHVybntmb3JtYXQ6bCxmb3JtYXRQcmVmaXg6ZnVuY3Rpb24gYyh0LGUpe3ZhciBuPWwoKCh0PWRZKHQpKS50eXBlPSJmIix0KSksaT0zKk1hdGgubWF4KC04LE1hdGgubWluKDgsTWF0aC5mbG9vcihhWShlKS8zKSkpLHI9TWF0aC5wb3coMTAsLWkpLG89eVlbOCtpLzNdO3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gbihyKnQpK299fX19ZnVuY3Rpb24gYlkodCl7cmV0dXJuIG1ZPXZZKHQpLGdZPW1ZLmZvcm1hdCxfWT1tWS5mb3JtYXRQcmVmaXgsbVl9ZnVuY3Rpb24geFkoKXtyZXR1cm4gbmV3IHdZfWZ1bmN0aW9uIHdZKCl7dGhpcy5yZXNldCgpfWJZKHtkZWNpbWFsOiIuIix0aG91c2FuZHM6IiwiLGdyb3VwaW5nOlszXSxjdXJyZW5jeTpbIiQiLCIiXX0pLHdZLnByb3RvdHlwZT17Y29uc3RydWN0b3I6d1kscmVzZXQ6ZnVuY3Rpb24oKXt0aGlzLnM9dGhpcy50PTB9LGFkZDpmdW5jdGlvbih0KXtNWShTWSx0LHRoaXMudCksTVkodGhpcyxTWS5zLHRoaXMucyksdGhpcy5zP3RoaXMudCs9U1kudDp0aGlzLnM9U1kudH0sdmFsdWVPZjpmdW5jdGlvbigpe3JldHVybiB0aGlzLnN9fTt2YXIgU1k9bmV3IHdZO2Z1bmN0aW9uIE1ZKHQsZSxuKXt2YXIgaT10LnM9ZStuLHI9aS1lO3QudD1lLShpLXIpKyhuLXIpfXZhciBFWT0xZS02LFRZPU1hdGguUEksQ1k9VFkvMixBWT1UWS80LGtZPTIqVFksTFk9MTgwL1RZLFBZPVRZLzE4MCxOWT1NYXRoLmFicyxJWT1NYXRoLmF0YW4sUlk9TWF0aC5hdGFuMixPWT1NYXRoLmNvcyx6WT1NYXRoLmNlaWwsRFk9TWF0aC5leHAsQlk9TWF0aC5sb2csSFk9TWF0aC5wb3csRlk9TWF0aC5zaW4sVlk9TWF0aC5zaWdufHxmdW5jdGlvbih0KXtyZXR1cm4gdD4wPzE6dDwwPy0xOjB9LFVZPU1hdGguc3FydCxqWT1NYXRoLnRhbjtmdW5jdGlvbiBHWSh0KXtyZXR1cm4gdD4xPzA6dDwtMT9UWTpNYXRoLmFjb3ModCl9ZnVuY3Rpb24gV1kodCl7cmV0dXJuIHQ+MT9DWTp0PC0xPy1DWTpNYXRoLmFzaW4odCl9ZnVuY3Rpb24gcVkodCl7cmV0dXJuKHQ9RlkodC8yKSkqdH1mdW5jdGlvbiBZWSgpe31mdW5jdGlvbiBYWSh0LGUpe3QmJktZLmhhc093blByb3BlcnR5KHQudHlwZSkmJktZW3QudHlwZV0odCxlKX12YXIgJFk9e0ZlYXR1cmU6ZnVuY3Rpb24odCxlKXtYWSh0Lmdlb21ldHJ5LGUpfSxGZWF0dXJlQ29sbGVjdGlvbjpmdW5jdGlvbih0LGUpe2Zvcih2YXIgbj10LmZlYXR1cmVzLGk9LTEscj1uLmxlbmd0aDsrK2k8cjspWFkobltpXS5nZW9tZXRyeSxlKX19LEtZPXtTcGhlcmU6ZnVuY3Rpb24odCxlKXtlLnNwaGVyZSgpfSxQb2ludDpmdW5jdGlvbih0LGUpe2UucG9pbnQoKHQ9dC5jb29yZGluYXRlcylbMF0sdFsxXSx0WzJdKX0sTXVsdGlQb2ludDpmdW5jdGlvbih0LGUpe2Zvcih2YXIgbj10LmNvb3JkaW5hdGVzLGk9LTEscj1uLmxlbmd0aDsrK2k8cjspZS5wb2ludCgodD1uW2ldKVswXSx0WzFdLHRbMl0pfSxMaW5lU3RyaW5nOmZ1bmN0aW9uKHQsZSl7WlkodC5jb29yZGluYXRlcyxlLDApfSxNdWx0aUxpbmVTdHJpbmc6ZnVuY3Rpb24odCxlKXtmb3IodmFyIG49dC5jb29yZGluYXRlcyxpPS0xLHI9bi5sZW5ndGg7KytpPHI7KVpZKG5baV0sZSwwKX0sUG9seWdvbjpmdW5jdGlvbih0LGUpe0pZKHQuY29vcmRpbmF0ZXMsZSl9LE11bHRpUG9seWdvbjpmdW5jdGlvbih0LGUpe2Zvcih2YXIgbj10LmNvb3JkaW5hdGVzLGk9LTEscj1uLmxlbmd0aDsrK2k8cjspSlkobltpXSxlKX0sR2VvbWV0cnlDb2xsZWN0aW9uOmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuPXQuZ2VvbWV0cmllcyxpPS0xLHI9bi5sZW5ndGg7KytpPHI7KVhZKG5baV0sZSl9fTtmdW5jdGlvbiBaWSh0LGUsbil7dmFyIGkscj0tMSxvPXQubGVuZ3RoLW47Zm9yKGUubGluZVN0YXJ0KCk7KytyPG87KWUucG9pbnQoKGk9dFtyXSlbMF0saVsxXSxpWzJdKTtlLmxpbmVFbmQoKX1mdW5jdGlvbiBKWSh0LGUpe3ZhciBuPS0xLGk9dC5sZW5ndGg7Zm9yKGUucG9seWdvblN0YXJ0KCk7KytuPGk7KVpZKHRbbl0sZSwxKTtlLnBvbHlnb25FbmQoKX1mdW5jdGlvbiBRWSh0LGUpe3QmJiRZLmhhc093blByb3BlcnR5KHQudHlwZSk/JFlbdC50eXBlXSh0LGUpOlhZKHQsZSl9dmFyIHRYLGVYLG5YLGlYLHJYLG9YPXhZKCksYVg9eFkoKSxzWD17cG9pbnQ6WVksbGluZVN0YXJ0OllZLGxpbmVFbmQ6WVkscG9seWdvblN0YXJ0OmZ1bmN0aW9uKCl7b1gucmVzZXQoKSxzWC5saW5lU3RhcnQ9bFgsc1gubGluZUVuZD1jWH0scG9seWdvbkVuZDpmdW5jdGlvbigpe3ZhciB0PStvWDthWC5hZGQodDwwP2tZK3Q6dCksdGhpcy5saW5lU3RhcnQ9dGhpcy5saW5lRW5kPXRoaXMucG9pbnQ9WVl9LHNwaGVyZTpmdW5jdGlvbigpe2FYLmFkZChrWSl9fTtmdW5jdGlvbiBsWCgpe3NYLnBvaW50PXVYfWZ1bmN0aW9uIGNYKCl7aFgodFgsZVgpfWZ1bmN0aW9uIHVYKHQsZSl7c1gucG9pbnQ9aFgsdFg9dCxlWD1lLG5YPXQqPVBZLGlYPU9ZKGU9KGUqPVBZKS8yK0FZKSxyWD1GWShlKX1mdW5jdGlvbiBoWCh0LGUpe3ZhciBuPSh0Kj1QWSktblgsaT1uPj0wPzE6LTEscj1pKm4sbz1PWShlPShlKj1QWSkvMitBWSksYT1GWShlKSxzPXJYKmEsbD1pWCpvK3MqT1kociksYz1zKmkqRlkocik7b1guYWRkKFJZKGMsbCkpLG5YPXQsaVg9byxyWD1hfWZ1bmN0aW9uIGRYKHQpe3JldHVybltSWSh0WzFdLHRbMF0pLFdZKHRbMl0pXX1mdW5jdGlvbiBwWCh0KXt2YXIgZT10WzBdLG49dFsxXSxpPU9ZKG4pO3JldHVybltpKk9ZKGUpLGkqRlkoZSksRlkobildfWZ1bmN0aW9uIGZYKHQsZSl7cmV0dXJuIHRbMF0qZVswXSt0WzFdKmVbMV0rdFsyXSplWzJdfWZ1bmN0aW9uIG1YKHQsZSl7cmV0dXJuW3RbMV0qZVsyXS10WzJdKmVbMV0sdFsyXSplWzBdLXRbMF0qZVsyXSx0WzBdKmVbMV0tdFsxXSplWzBdXX1mdW5jdGlvbiBnWCh0LGUpe3RbMF0rPWVbMF0sdFsxXSs9ZVsxXSx0WzJdKz1lWzJdfWZ1bmN0aW9uIF9YKHQsZSl7cmV0dXJuW3RbMF0qZSx0WzFdKmUsdFsyXSplXX1mdW5jdGlvbiB5WCh0KXt2YXIgZT1VWSh0WzBdKnRbMF0rdFsxXSp0WzFdK3RbMl0qdFsyXSk7dFswXS89ZSx0WzFdLz1lLHRbMl0vPWV9dmFyIHZYLGJYLHhYLHdYLFNYLE1YLEVYLFRYLENYLEFYLGtYLExYLFBYLE5YLElYLFJYLE9YLHpYLERYLEJYLEhYLEZYLFZYLFVYLGpYLEdYLFdYPXhZKCkscVg9e3BvaW50OllYLGxpbmVTdGFydDokWCxsaW5lRW5kOktYLHBvbHlnb25TdGFydDpmdW5jdGlvbigpe3FYLnBvaW50PVpYLHFYLmxpbmVTdGFydD1KWCxxWC5saW5lRW5kPVFYLFdYLnJlc2V0KCksc1gucG9seWdvblN0YXJ0KCl9LHBvbHlnb25FbmQ6ZnVuY3Rpb24oKXtzWC5wb2x5Z29uRW5kKCkscVgucG9pbnQ9WVgscVgubGluZVN0YXJ0PSRYLHFYLmxpbmVFbmQ9S1gsb1g8MD8odlg9LSh4WD0xODApLGJYPS0od1g9OTApKTpXWD5FWT93WD05MDpXWDwtMWUtNiYmKGJYPS05MCksQVhbMF09dlgsQVhbMV09eFh9fTtmdW5jdGlvbiBZWCh0LGUpe0NYLnB1c2goQVg9W3ZYPXQseFg9dF0pLGU8YlgmJihiWD1lKSxlPndYJiYod1g9ZSl9ZnVuY3Rpb24gWFgodCxlKXt2YXIgbj1wWChbdCpQWSxlKlBZXSk7aWYoVFgpe3ZhciBpPW1YKFRYLG4pLHI9bVgoW2lbMV0sLWlbMF0sMF0saSk7eVgocikscj1kWChyKTt2YXIgbyxhPXQtU1gscz1hPjA/MTotMSxsPXJbMF0qTFkqcyxjPU5ZKGEpPjE4MDtjXihzKlNYPGwmJmw8cyp0KT8obz1yWzFdKkxZKT53WCYmKHdYPW8pOmNeKHMqU1g8KGw9KGwrMzYwKSUzNjAtMTgwKSYmbDxzKnQpPyhvPS1yWzFdKkxZKTxiWCYmKGJYPW8pOihlPGJYJiYoYlg9ZSksZT53WCYmKHdYPWUpKSxjP3Q8U1g/dCQodlgsdCk+dCQodlgseFgpJiYoeFg9dCk6dCQodCx4WCk+dCQodlgseFgpJiYodlg9dCk6eFg+PXZYPyh0PHZYJiYodlg9dCksdD54WCYmKHhYPXQpKTp0PlNYP3QkKHZYLHQpPnQkKHZYLHhYKSYmKHhYPXQpOnQkKHQseFgpPnQkKHZYLHhYKSYmKHZYPXQpfWVsc2UgQ1gucHVzaChBWD1bdlg9dCx4WD10XSk7ZTxiWCYmKGJYPWUpLGU+d1gmJih3WD1lKSxUWD1uLFNYPXR9ZnVuY3Rpb24gJFgoKXtxWC5wb2ludD1YWH1mdW5jdGlvbiBLWCgpe0FYWzBdPXZYLEFYWzFdPXhYLHFYLnBvaW50PVlYLFRYPW51bGx9ZnVuY3Rpb24gWlgodCxlKXtpZihUWCl7dmFyIG49dC1TWDtXWC5hZGQoTlkobik+MTgwP24rKG4+MD8zNjA6LTM2MCk6bil9ZWxzZSBNWD10LEVYPWU7c1gucG9pbnQodCxlKSxYWCh0LGUpfWZ1bmN0aW9uIEpYKCl7c1gubGluZVN0YXJ0KCl9ZnVuY3Rpb24gUVgoKXtaWChNWCxFWCksc1gubGluZUVuZCgpLE5ZKFdYKT5FWSYmKHZYPS0oeFg9MTgwKSksQVhbMF09dlgsQVhbMV09eFgsVFg9bnVsbH1mdW5jdGlvbiB0JCh0LGUpe3JldHVybihlLT10KTwwP2UrMzYwOmV9ZnVuY3Rpb24gZSQodCxlKXtyZXR1cm4gdFswXS1lWzBdfWZ1bmN0aW9uIG4kKHQsZSl7cmV0dXJuIHRbMF08PXRbMV0/dFswXTw9ZSYmZTw9dFsxXTplPHRbMF18fHRbMV08ZX12YXIgaSQ9e3NwaGVyZTpZWSxwb2ludDpyJCxsaW5lU3RhcnQ6YSQsbGluZUVuZDpjJCxwb2x5Z29uU3RhcnQ6ZnVuY3Rpb24oKXtpJC5saW5lU3RhcnQ9dSQsaSQubGluZUVuZD1oJH0scG9seWdvbkVuZDpmdW5jdGlvbigpe2kkLmxpbmVTdGFydD1hJCxpJC5saW5lRW5kPWMkfX07ZnVuY3Rpb24gciQodCxlKXt0Kj1QWTt2YXIgbj1PWShlKj1QWSk7byQobipPWSh0KSxuKkZZKHQpLEZZKGUpKX1mdW5jdGlvbiBvJCh0LGUsbil7KytrWCxQWCs9KHQtUFgpL2tYLE5YKz0oZS1OWCkva1gsSVgrPShuLUlYKS9rWH1mdW5jdGlvbiBhJCgpe2kkLnBvaW50PXMkfWZ1bmN0aW9uIHMkKHQsZSl7dCo9UFk7dmFyIG49T1koZSo9UFkpO1VYPW4qT1kodCksalg9bipGWSh0KSxHWD1GWShlKSxpJC5wb2ludD1sJCxvJChVWCxqWCxHWCl9ZnVuY3Rpb24gbCQodCxlKXt0Kj1QWTt2YXIgbj1PWShlKj1QWSksaT1uKk9ZKHQpLHI9bipGWSh0KSxvPUZZKGUpLGE9UlkoVVkoKGE9algqby1HWCpyKSphKyhhPUdYKmktVVgqbykqYSsoYT1VWCpyLWpYKmkpKmEpLFVYKmkralgqcitHWCpvKTtMWCs9YSxSWCs9YSooVVgrKFVYPWkpKSxPWCs9YSooalgrKGpYPXIpKSx6WCs9YSooR1grKEdYPW8pKSxvJChVWCxqWCxHWCl9ZnVuY3Rpb24gYyQoKXtpJC5wb2ludD1yJH1mdW5jdGlvbiB1JCgpe2kkLnBvaW50PWQkfWZ1bmN0aW9uIGgkKCl7cCQoRlgsVlgpLGkkLnBvaW50PXIkfWZ1bmN0aW9uIGQkKHQsZSl7Rlg9dCxWWD1lLHQqPVBZLGUqPVBZLGkkLnBvaW50PXAkO3ZhciBuPU9ZKGUpO1VYPW4qT1kodCksalg9bipGWSh0KSxHWD1GWShlKSxvJChVWCxqWCxHWCl9ZnVuY3Rpb24gcCQodCxlKXt0Kj1QWTt2YXIgbj1PWShlKj1QWSksaT1uKk9ZKHQpLHI9bipGWSh0KSxvPUZZKGUpLGE9algqby1HWCpyLHM9R1gqaS1VWCpvLGw9VVgqci1qWCppLGM9VVkoYSphK3MqcytsKmwpLHU9V1koYyksaD1jJiYtdS9jO0RYKz1oKmEsQlgrPWgqcyxIWCs9aCpsLExYKz11LFJYKz11KihVWCsoVVg9aSkpLE9YKz11KihqWCsoalg9cikpLHpYKz11KihHWCsoR1g9bykpLG8kKFVYLGpYLEdYKX1mdW5jdGlvbiBmJCh0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19ZnVuY3Rpb24gbSQodCxlKXtmdW5jdGlvbiBuKG4saSl7cmV0dXJuIG49dChuLGkpLGUoblswXSxuWzFdKX1yZXR1cm4gdC5pbnZlcnQmJmUuaW52ZXJ0JiYobi5pbnZlcnQ9ZnVuY3Rpb24obixpKXtyZXR1cm4obj1lLmludmVydChuLGkpKSYmdC5pbnZlcnQoblswXSxuWzFdKX0pLG59ZnVuY3Rpb24gZyQodCxlKXtyZXR1cm5bdD5UWT90LWtZOnQ8LVRZP3Qra1k6dCxlXX1mdW5jdGlvbiBfJCh0LGUsbil7cmV0dXJuKHQlPWtZKT9lfHxuP20kKHYkKHQpLGIkKGUsbikpOnYkKHQpOmV8fG4/YiQoZSxuKTpnJH1mdW5jdGlvbiB5JCh0KXtyZXR1cm4gZnVuY3Rpb24oZSxuKXtyZXR1cm5bKGUrPXQpPlRZP2Uta1k6ZTwtVFk/ZStrWTplLG5dfX1mdW5jdGlvbiB2JCh0KXt2YXIgZT15JCh0KTtyZXR1cm4gZS5pbnZlcnQ9eSQoLXQpLGV9ZnVuY3Rpb24gYiQodCxlKXt2YXIgbj1PWSh0KSxpPUZZKHQpLHI9T1koZSksbz1GWShlKTtmdW5jdGlvbiBhKHQsZSl7dmFyIGE9T1koZSkscz1PWSh0KSphLGw9RlkodCkqYSxjPUZZKGUpLHU9YypuK3MqaTtyZXR1cm5bUlkobCpyLXUqbyxzKm4tYyppKSxXWSh1KnIrbCpvKV19cmV0dXJuIGEuaW52ZXJ0PWZ1bmN0aW9uKHQsZSl7dmFyIGE9T1koZSkscz1PWSh0KSphLGw9RlkodCkqYSxjPUZZKGUpLHU9YypyLWwqbztyZXR1cm5bUlkobCpyK2MqbyxzKm4rdSppKSxXWSh1Km4tcyppKV19LGF9ZnVuY3Rpb24geCQodCl7ZnVuY3Rpb24gZShlKXtyZXR1cm4oZT10KGVbMF0qUFksZVsxXSpQWSkpWzBdKj1MWSxlWzFdKj1MWSxlfXJldHVybiB0PV8kKHRbMF0qUFksdFsxXSpQWSx0Lmxlbmd0aD4yP3RbMl0qUFk6MCksZS5pbnZlcnQ9ZnVuY3Rpb24oZSl7cmV0dXJuKGU9dC5pbnZlcnQoZVswXSpQWSxlWzFdKlBZKSlbMF0qPUxZLGVbMV0qPUxZLGV9LGV9ZnVuY3Rpb24gdyQodCxlLG4saSxyLG8pe2lmKG4pe3ZhciBhPU9ZKGUpLHM9RlkoZSksbD1pKm47bnVsbD09cj8ocj1lK2kqa1ksbz1lLWwvMik6KHI9UyQoYSxyKSxvPVMkKGEsbyksKGk+MD9yPG86cj5vKSYmKHIrPWkqa1kpKTtmb3IodmFyIGMsdT1yO2k+MD91Pm86dTxvO3UtPWwpYz1kWChbYSwtcypPWSh1KSwtcypGWSh1KV0pLHQucG9pbnQoY1swXSxjWzFdKX19ZnVuY3Rpb24gUyQodCxlKXsoZT1wWChlKSlbMF0tPXQseVgoZSk7dmFyIG49R1koLWVbMV0pO3JldHVybigoLWVbMl08MD8tbjpuKStrWS1FWSkla1l9ZnVuY3Rpb24gTSQoKXt2YXIgdCxlPVtdO3JldHVybntwb2ludDpmdW5jdGlvbihlLG4pe3QucHVzaChbZSxuXSl9LGxpbmVTdGFydDpmdW5jdGlvbigpe2UucHVzaCh0PVtdKX0sbGluZUVuZDpZWSxyZWpvaW46ZnVuY3Rpb24oKXtlLmxlbmd0aD4xJiZlLnB1c2goZS5wb3AoKS5jb25jYXQoZS5zaGlmdCgpKSl9LHJlc3VsdDpmdW5jdGlvbigpe3ZhciBuPWU7cmV0dXJuIGU9W10sdD1udWxsLG59fX1mdW5jdGlvbiBFJCh0LGUpe3JldHVybiBOWSh0WzBdLWVbMF0pPEVZJiZOWSh0WzFdLWVbMV0pPEVZfWZ1bmN0aW9uIFQkKHQsZSxuLGkpe3RoaXMueD10LHRoaXMuej1lLHRoaXMubz1uLHRoaXMuZT1pLHRoaXMudj0hMSx0aGlzLm49dGhpcy5wPW51bGx9ZnVuY3Rpb24gQyQodCxlLG4saSxyKXt2YXIgbyxhLHM9W10sbD1bXTtpZih0LmZvckVhY2goKGZ1bmN0aW9uKHQpe2lmKCEoKGU9dC5sZW5ndGgtMSk8PTApKXt2YXIgZSxuLGk9dFswXSxhPXRbZV07aWYoRSQoaSxhKSl7Zm9yKHIubGluZVN0YXJ0KCksbz0wO288ZTsrK28pci5wb2ludCgoaT10W29dKVswXSxpWzFdKTtyLmxpbmVFbmQoKX1lbHNlIHMucHVzaChuPW5ldyBUJChpLHQsbnVsbCwhMCkpLGwucHVzaChuLm89bmV3IFQkKGksbnVsbCxuLCExKSkscy5wdXNoKG49bmV3IFQkKGEsdCxudWxsLCExKSksbC5wdXNoKG4ubz1uZXcgVCQoYSxudWxsLG4sITApKX19KSkscy5sZW5ndGgpe2ZvcihsLnNvcnQoZSksQSQocyksQSQobCksbz0wLGE9bC5sZW5ndGg7bzxhOysrbylsW29dLmU9bj0hbjtmb3IodmFyIGMsdSxoPXNbMF07Oyl7Zm9yKHZhciBkPWgscD0hMDtkLnY7KWlmKChkPWQubik9PT1oKXJldHVybjtjPWQueixyLmxpbmVTdGFydCgpO2Rve2lmKGQudj1kLm8udj0hMCxkLmUpe2lmKHApZm9yKG89MCxhPWMubGVuZ3RoO288YTsrK28pci5wb2ludCgodT1jW29dKVswXSx1WzFdKTtlbHNlIGkoZC54LGQubi54LDEscik7ZD1kLm59ZWxzZXtpZihwKWZvcihvPShjPWQucC56KS5sZW5ndGgtMTtvPj0wOy0tbylyLnBvaW50KCh1PWNbb10pWzBdLHVbMV0pO2Vsc2UgaShkLngsZC5wLngsLTEscik7ZD1kLnB9Yz0oZD1kLm8pLnoscD0hcH13aGlsZSghZC52KTtyLmxpbmVFbmQoKX19fWZ1bmN0aW9uIEEkKHQpe2lmKGU9dC5sZW5ndGgpe2Zvcih2YXIgZSxuLGk9MCxyPXRbMF07KytpPGU7KXIubj1uPXRbaV0sbi5wPXIscj1uO3Iubj1uPXRbMF0sbi5wPXJ9fWckLmludmVydD1nJDt2YXIgayQ9eFkoKTtmdW5jdGlvbiBMJCh0LGUpe3ZhciBuPWVbMF0saT1lWzFdLHI9W0ZZKG4pLC1PWShuKSwwXSxvPTAsYT0wO2skLnJlc2V0KCk7Zm9yKHZhciBzPTAsbD10Lmxlbmd0aDtzPGw7KytzKWlmKHU9KGM9dFtzXSkubGVuZ3RoKWZvcih2YXIgYyx1LGg9Y1t1LTFdLGQ9aFswXSxwPWhbMV0vMitBWSxmPUZZKHApLG09T1kocCksZz0wO2c8dTsrK2csZD15LGY9YixtPXgsaD1fKXt2YXIgXz1jW2ddLHk9X1swXSx2PV9bMV0vMitBWSxiPUZZKHYpLHg9T1kodiksdz15LWQsUz13Pj0wPzE6LTEsTT1TKncsRT1NPlRZLFQ9ZipiO2lmKGskLmFkZChSWShUKlMqRlkoTSksbSp4K1QqT1koTSkpKSxvKz1FP3crUyprWTp3LEVeZD49bl55Pj1uKXt2YXIgQz1tWChwWChoKSxwWChfKSk7eVgoQyk7dmFyIEE9bVgocixDKTt5WChBKTt2YXIgaz0oRV53Pj0wPy0xOjEpKldZKEFbMl0pOyhpPmt8fGk9PT1rJiYoQ1swXXx8Q1sxXSkpJiYoYSs9RV53Pj0wPzE6LTEpfX1yZXR1cm4obzwtMWUtNnx8bzxFWSYmayQ8LTFlLTYpXjEmYX1mdW5jdGlvbiBQJCh0LGUpe3JldHVybiB0PGU/LTE6dD5lPzE6dD49ZT8wOk5hTn1mdW5jdGlvbiBOJCh0LGUsbil7dD0rdCxlPStlLG49KHI9YXJndW1lbnRzLmxlbmd0aCk8Mj8oZT10LHQ9MCwxKTpyPDM/MTorbjtmb3IodmFyIGk9LTEscj0wfE1hdGgubWF4KDAsTWF0aC5jZWlsKChlLXQpL24pKSxvPW5ldyBBcnJheShyKTsrK2k8cjspb1tpXT10K2kqbjtyZXR1cm4gb31mdW5jdGlvbiBJJCh0KXtmb3IodmFyIGUsbixpLHI9dC5sZW5ndGgsbz0tMSxhPTA7KytvPHI7KWErPXRbb10ubGVuZ3RoO2ZvcihuPW5ldyBBcnJheShhKTstLXI+PTA7KWZvcihlPShpPXRbcl0pLmxlbmd0aDstLWU+PTA7KW5bLS1hXT1pW2VdO3JldHVybiBufWZ1bmN0aW9uIFIkKHQsZSxuLGkpe3JldHVybiBmdW5jdGlvbihyKXt2YXIgbyxhLHMsbD1lKHIpLGM9TSQoKSx1PWUoYyksaD0hMSxkPXtwb2ludDpwLGxpbmVTdGFydDptLGxpbmVFbmQ6Zyxwb2x5Z29uU3RhcnQ6ZnVuY3Rpb24oKXtkLnBvaW50PV8sZC5saW5lU3RhcnQ9eSxkLmxpbmVFbmQ9dixhPVtdLG89W119LHBvbHlnb25FbmQ6ZnVuY3Rpb24oKXtkLnBvaW50PXAsZC5saW5lU3RhcnQ9bSxkLmxpbmVFbmQ9ZyxhPUkkKGEpO3ZhciB0PUwkKG8saSk7YS5sZW5ndGg/KGh8fChyLnBvbHlnb25TdGFydCgpLGg9ITApLEMkKGEseiQsdCxuLHIpKTp0JiYoaHx8KHIucG9seWdvblN0YXJ0KCksaD0hMCksci5saW5lU3RhcnQoKSxuKG51bGwsbnVsbCwxLHIpLHIubGluZUVuZCgpKSxoJiYoci5wb2x5Z29uRW5kKCksaD0hMSksYT1vPW51bGx9LHNwaGVyZTpmdW5jdGlvbigpe3IucG9seWdvblN0YXJ0KCksci5saW5lU3RhcnQoKSxuKG51bGwsbnVsbCwxLHIpLHIubGluZUVuZCgpLHIucG9seWdvbkVuZCgpfX07ZnVuY3Rpb24gcChlLG4pe3QoZSxuKSYmci5wb2ludChlLG4pfWZ1bmN0aW9uIGYodCxlKXtsLnBvaW50KHQsZSl9ZnVuY3Rpb24gbSgpe2QucG9pbnQ9ZixsLmxpbmVTdGFydCgpfWZ1bmN0aW9uIGcoKXtkLnBvaW50PXAsbC5saW5lRW5kKCl9ZnVuY3Rpb24gXyh0LGUpe3MucHVzaChbdCxlXSksdS5wb2ludCh0LGUpfWZ1bmN0aW9uIHkoKXt1LmxpbmVTdGFydCgpLHM9W119ZnVuY3Rpb24gdigpe18oc1swXVswXSxzWzBdWzFdKSx1LmxpbmVFbmQoKTt2YXIgdCxlLG4saSxsPXUuY2xlYW4oKSxkPWMucmVzdWx0KCkscD1kLmxlbmd0aDtpZihzLnBvcCgpLG8ucHVzaChzKSxzPW51bGwscClpZigxJmwpe2lmKChlPShuPWRbMF0pLmxlbmd0aC0xKT4wKXtmb3IoaHx8KHIucG9seWdvblN0YXJ0KCksaD0hMCksci5saW5lU3RhcnQoKSx0PTA7dDxlOysrdClyLnBvaW50KChpPW5bdF0pWzBdLGlbMV0pO3IubGluZUVuZCgpfX1lbHNlIHA+MSYmMiZsJiZkLnB1c2goZC5wb3AoKS5jb25jYXQoZC5zaGlmdCgpKSksYS5wdXNoKGQuZmlsdGVyKE8kKSl9cmV0dXJuIGR9fWZ1bmN0aW9uIE8kKHQpe3JldHVybiB0Lmxlbmd0aD4xfWZ1bmN0aW9uIHokKHQsZSl7cmV0dXJuKCh0PXQueClbMF08MD90WzFdLUNZLUVZOkNZLXRbMV0pLSgoZT1lLngpWzBdPDA/ZVsxXS1DWS1FWTpDWS1lWzFdKX0hKGZ1bmN0aW9uIEQkKHQpe3JldHVybiAxPT09dC5sZW5ndGgmJih0PShmdW5jdGlvbiBlKHQpe3JldHVybiBmdW5jdGlvbihlLG4pe3JldHVybiBQJCh0KGUpLG4pfX0pKHQpKSx7bGVmdDpmdW5jdGlvbihlLG4saSxyKXtmb3IobnVsbD09aSYmKGk9MCksbnVsbD09ciYmKHI9ZS5sZW5ndGgpO2k8cjspe3ZhciBvPWkrcj4+PjE7dChlW29dLG4pPDA/aT1vKzE6cj1vfXJldHVybiBpfSxyaWdodDpmdW5jdGlvbihlLG4saSxyKXtmb3IobnVsbD09aSYmKGk9MCksbnVsbD09ciYmKHI9ZS5sZW5ndGgpO2k8cjspe3ZhciBvPWkrcj4+PjE7dChlW29dLG4pPjA/cj1vOmk9bysxfXJldHVybiBpfX19KShQJCk7dmFyIEIkPVIkKChmdW5jdGlvbigpe3JldHVybiEwfSksKGZ1bmN0aW9uIEgkKHQpe3ZhciBlLG49TmFOLGk9TmFOLHI9TmFOO3JldHVybntsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0LmxpbmVTdGFydCgpLGU9MX0scG9pbnQ6ZnVuY3Rpb24obyxhKXt2YXIgcz1vPjA/VFk6LVRZLGw9Tlkoby1uKTtOWShsLVRZKTxFWT8odC5wb2ludChuLGk9KGkrYSkvMj4wP0NZOi1DWSksdC5wb2ludChyLGkpLHQubGluZUVuZCgpLHQubGluZVN0YXJ0KCksdC5wb2ludChzLGkpLHQucG9pbnQobyxpKSxlPTApOnIhPT1zJiZsPj1UWSYmKE5ZKG4tcik8RVkmJihuLT1yKkVZKSxOWShvLXMpPEVZJiYoby09cypFWSksaT0oZnVuY3Rpb24gYyh0LGUsbixpKXt2YXIgcixvLGE9RlkodC1uKTtyZXR1cm4gTlkoYSk+RVk/SVkoKEZZKGUpKihvPU9ZKGkpKSpGWShuKS1GWShpKSoocj1PWShlKSkqRlkodCkpLyhyKm8qYSkpOihlK2kpLzJ9KShuLGksbyxhKSx0LnBvaW50KHIsaSksdC5saW5lRW5kKCksdC5saW5lU3RhcnQoKSx0LnBvaW50KHMsaSksZT0wKSx0LnBvaW50KG49byxpPWEpLHI9c30sbGluZUVuZDpmdW5jdGlvbigpe3QubGluZUVuZCgpLG49aT1OYU59LGNsZWFuOmZ1bmN0aW9uKCl7cmV0dXJuIDItZX19fSksKGZ1bmN0aW9uIEYkKHQsZSxuLGkpe3ZhciByO2lmKG51bGw9PXQpaS5wb2ludCgtVFkscj1uKkNZKSxpLnBvaW50KDAsciksaS5wb2ludChUWSxyKSxpLnBvaW50KFRZLDApLGkucG9pbnQoVFksLXIpLGkucG9pbnQoMCwtciksaS5wb2ludCgtVFksLXIpLGkucG9pbnQoLVRZLDApLGkucG9pbnQoLVRZLHIpO2Vsc2UgaWYoTlkodFswXS1lWzBdKT5FWSl7dmFyIG89dFswXTxlWzBdP1RZOi1UWTtpLnBvaW50KC1vLHI9bipvLzIpLGkucG9pbnQoMCxyKSxpLnBvaW50KG8scil9ZWxzZSBpLnBvaW50KGVbMF0sZVsxXSl9KSxbLVRZLC1DWV0pO2Z1bmN0aW9uIFYkKHQpe3ZhciBlPU9ZKHQpLG49NipQWSxpPWU+MCxyPU5ZKGUpPkVZO2Z1bmN0aW9uIG8odCxuKXtyZXR1cm4gT1kodCkqT1kobik+ZX1mdW5jdGlvbiBhKHQsbixpKXt2YXIgcj1bMSwwLDBdLG89bVgocFgodCkscFgobikpLGE9ZlgobyxvKSxzPW9bMF0sbD1hLXMqcztpZighbClyZXR1cm4haSYmdDt2YXIgYz1lKmEvbCx1PS1lKnMvbCxoPW1YKHIsbyksZD1fWChyLGMpO2dYKGQsX1gobyx1KSk7dmFyIHA9aCxmPWZYKGQscCksbT1mWChwLHApLGc9ZipmLW0qKGZYKGQsZCktMSk7aWYoIShnPDApKXt2YXIgXz1VWShnKSx5PV9YKHAsKC1mLV8pL20pO2lmKGdYKHksZCkseT1kWCh5KSwhaSlyZXR1cm4geTt2YXIgdixiPXRbMF0seD1uWzBdLHc9dFsxXSxTPW5bMV07eDxiJiYodj1iLGI9eCx4PXYpO3ZhciBNPXgtYixFPU5ZKE0tVFkpPEVZO2lmKCFFJiZTPHcmJih2PXcsdz1TLFM9diksRXx8TTxFWT9FP3crUz4wXnlbMV08KE5ZKHlbMF0tYik8RVk/dzpTKTp3PD15WzFdJiZ5WzFdPD1TOk0+VFleKGI8PXlbMF0mJnlbMF08PXgpKXt2YXIgVD1fWChwLCgtZitfKS9tKTtyZXR1cm4gZ1goVCxkKSxbeSxkWChUKV19fX1mdW5jdGlvbiBzKGUsbil7dmFyIHI9aT90OlRZLXQsbz0wO3JldHVybiBlPC1yP298PTE6ZT5yJiYob3w9Miksbjwtcj9vfD00Om4+ciYmKG98PTgpLG99cmV0dXJuIFIkKG8sKGZ1bmN0aW9uIGwodCl7dmFyIGUsbixsLGMsdTtyZXR1cm57bGluZVN0YXJ0OmZ1bmN0aW9uKCl7Yz1sPSExLHU9MX0scG9pbnQ6ZnVuY3Rpb24oaCxkKXt2YXIgcCxmPVtoLGRdLG09byhoLGQpLGc9aT9tPzA6cyhoLGQpOm0/cyhoKyhoPDA/VFk6LVRZKSxkKTowO2lmKCFlJiYoYz1sPW0pJiZ0LmxpbmVTdGFydCgpLG0hPT1sJiYoIShwPWEoZSxmKSl8fEUkKGUscCl8fEUkKGYscCkpJiYoZlswXSs9RVksZlsxXSs9RVksbT1vKGZbMF0sZlsxXSkpLG0hPT1sKXU9MCxtPyh0LmxpbmVTdGFydCgpLHA9YShmLGUpLHQucG9pbnQocFswXSxwWzFdKSk6KHA9YShlLGYpLHQucG9pbnQocFswXSxwWzFdKSx0LmxpbmVFbmQoKSksZT1wO2Vsc2UgaWYociYmZSYmaV5tKXt2YXIgXztnJm58fCEoXz1hKGYsZSwhMCkpfHwodT0wLGk/KHQubGluZVN0YXJ0KCksdC5wb2ludChfWzBdWzBdLF9bMF1bMV0pLHQucG9pbnQoX1sxXVswXSxfWzFdWzFdKSx0LmxpbmVFbmQoKSk6KHQucG9pbnQoX1sxXVswXSxfWzFdWzFdKSx0LmxpbmVFbmQoKSx0LmxpbmVTdGFydCgpLHQucG9pbnQoX1swXVswXSxfWzBdWzFdKSkpfSFtfHxlJiZFJChlLGYpfHx0LnBvaW50KGZbMF0sZlsxXSksZT1mLGw9bSxuPWd9LGxpbmVFbmQ6ZnVuY3Rpb24oKXtsJiZ0LmxpbmVFbmQoKSxlPW51bGx9LGNsZWFuOmZ1bmN0aW9uKCl7cmV0dXJuIHV8KGMmJmwpPDwxfX19KSwoZnVuY3Rpb24gYyhlLGkscixvKXt3JChvLHQsbixyLGUsaSl9KSxpP1swLC10XTpbLVRZLHQtVFldKX12YXIgVSQ9MWU5LGokPS1VJDtmdW5jdGlvbiBHJCh0LGUsbixpKXtmdW5jdGlvbiByKHIsbyl7cmV0dXJuIHQ8PXImJnI8PW4mJmU8PW8mJm88PWl9ZnVuY3Rpb24gbyhyLG8scyxjKXt2YXIgdT0wLGg9MDtpZihudWxsPT1yfHwodT1hKHIscykpIT09KGg9YShvLHMpKXx8bChyLG8pPDBecz4wKWRve2MucG9pbnQoMD09PXV8fDM9PT11P3Q6bix1PjE/aTplKX13aGlsZSgodT0odStzKzQpJTQpIT09aCk7ZWxzZSBjLnBvaW50KG9bMF0sb1sxXSl9ZnVuY3Rpb24gYShpLHIpe3JldHVybiBOWShpWzBdLXQpPEVZP3I+MD8wOjM6TlkoaVswXS1uKTxFWT9yPjA/MjoxOk5ZKGlbMV0tZSk8RVk/cj4wPzE6MDpyPjA/MzoyfWZ1bmN0aW9uIHModCxlKXtyZXR1cm4gbCh0LngsZS54KX1mdW5jdGlvbiBsKHQsZSl7dmFyIG49YSh0LDEpLGk9YShlLDEpO3JldHVybiBuIT09aT9uLWk6MD09PW4/ZVsxXS10WzFdOjE9PT1uP3RbMF0tZVswXToyPT09bj90WzFdLWVbMV06ZVswXS10WzBdfXJldHVybiBmdW5jdGlvbihhKXt2YXIgbCxjLHUsaCxkLHAsZixtLGcsXyx5LHY9YSxiPU0kKCkseD17cG9pbnQ6VCxsaW5lU3RhcnQ6ZnVuY3Rpb24gdygpe3gucG9pbnQ9QyxjJiZjLnB1c2godT1bXSk7Xz0hMCxnPSExLGY9bT1OYU59LGxpbmVFbmQ6ZnVuY3Rpb24gUygpe2wmJihDKGgsZCkscCYmZyYmYi5yZWpvaW4oKSxsLnB1c2goYi5yZXN1bHQoKSkpO3gucG9pbnQ9VCxnJiZ2LmxpbmVFbmQoKX0scG9seWdvblN0YXJ0OmZ1bmN0aW9uIE0oKXt2PWIsbD1bXSxjPVtdLHk9ITB9LHBvbHlnb25FbmQ6ZnVuY3Rpb24gRSgpe3ZhciBlPShmdW5jdGlvbiBuKCl7Zm9yKHZhciBlPTAsbj0wLHI9Yy5sZW5ndGg7bjxyOysrbilmb3IodmFyIG8sYSxzPWNbbl0sbD0xLHU9cy5sZW5ndGgsaD1zWzBdLGQ9aFswXSxwPWhbMV07bDx1OysrbClvPWQsYT1wLGQ9KGg9c1tsXSlbMF0scD1oWzFdLGE8PWk/cD5pJiYoZC1vKSooaS1hKT4ocC1hKSoodC1vKSYmKytlOnA8PWkmJihkLW8pKihpLWEpPChwLWEpKih0LW8pJiYtLWU7cmV0dXJuIGV9KSgpLHI9eSYmZSxoPShsPUkkKGwpKS5sZW5ndGg7KHJ8fGgpJiYoYS5wb2x5Z29uU3RhcnQoKSxyJiYoYS5saW5lU3RhcnQoKSxvKG51bGwsbnVsbCwxLGEpLGEubGluZUVuZCgpKSxoJiZDJChsLHMsZSxvLGEpLGEucG9seWdvbkVuZCgpKTt2PWEsbD1jPXU9bnVsbH19O2Z1bmN0aW9uIFQodCxlKXtyKHQsZSkmJnYucG9pbnQodCxlKX1mdW5jdGlvbiBDKG8sYSl7dmFyIHM9cihvLGEpO2lmKGMmJnUucHVzaChbbyxhXSksXyloPW8sZD1hLHA9cyxfPSExLHMmJih2LmxpbmVTdGFydCgpLHYucG9pbnQobyxhKSk7ZWxzZSBpZihzJiZnKXYucG9pbnQobyxhKTtlbHNle3ZhciBsPVtmPU1hdGgubWF4KGokLE1hdGgubWluKFUkLGYpKSxtPU1hdGgubWF4KGokLE1hdGgubWluKFUkLG0pKV0sYj1bbz1NYXRoLm1heChqJCxNYXRoLm1pbihVJCxvKSksYT1NYXRoLm1heChqJCxNYXRoLm1pbihVJCxhKSldOyEoZnVuY3Rpb24geCh0LGUsbixpLHIsbyl7dmFyIGEscz10WzBdLGw9dFsxXSxjPTAsdT0xLGg9ZVswXS1zLGQ9ZVsxXS1sO2lmKGE9bi1zLGh8fCEoYT4wKSl7aWYoYS89aCxoPDApe2lmKGE8YylyZXR1cm47YTx1JiYodT1hKX1lbHNlIGlmKGg+MCl7aWYoYT51KXJldHVybjthPmMmJihjPWEpfWlmKGE9ci1zLGh8fCEoYTwwKSl7aWYoYS89aCxoPDApe2lmKGE+dSlyZXR1cm47YT5jJiYoYz1hKX1lbHNlIGlmKGg+MCl7aWYoYTxjKXJldHVybjthPHUmJih1PWEpfWlmKGE9aS1sLGR8fCEoYT4wKSl7aWYoYS89ZCxkPDApe2lmKGE8YylyZXR1cm47YTx1JiYodT1hKX1lbHNlIGlmKGQ+MCl7aWYoYT51KXJldHVybjthPmMmJihjPWEpfWlmKGE9by1sLGR8fCEoYTwwKSl7aWYoYS89ZCxkPDApe2lmKGE+dSlyZXR1cm47YT5jJiYoYz1hKX1lbHNlIGlmKGQ+MCl7aWYoYTxjKXJldHVybjthPHUmJih1PWEpfXJldHVybiBjPjAmJih0WzBdPXMrYypoLHRbMV09bCtjKmQpLHU8MSYmKGVbMF09cyt1KmgsZVsxXT1sK3UqZCksITB9fX19fSkobCxiLHQsZSxuLGkpP3MmJih2LmxpbmVTdGFydCgpLHYucG9pbnQobyxhKSx5PSExKTooZ3x8KHYubGluZVN0YXJ0KCksdi5wb2ludChsWzBdLGxbMV0pKSx2LnBvaW50KGJbMF0sYlsxXSksc3x8di5saW5lRW5kKCkseT0hMSl9Zj1vLG09YSxnPXN9cmV0dXJuIHh9fXZhciBXJCxxJCxZJCxYJD14WSgpLCQkPXtzcGhlcmU6WVkscG9pbnQ6WVksbGluZVN0YXJ0OmZ1bmN0aW9uIEskKCl7JCQucG9pbnQ9SiQsJCQubGluZUVuZD1aJH0sbGluZUVuZDpZWSxwb2x5Z29uU3RhcnQ6WVkscG9seWdvbkVuZDpZWX07ZnVuY3Rpb24gWiQoKXskJC5wb2ludD0kJC5saW5lRW5kPVlZfWZ1bmN0aW9uIEokKHQsZSl7VyQ9dCo9UFkscSQ9RlkoZSo9UFkpLFkkPU9ZKGUpLCQkLnBvaW50PVEkfWZ1bmN0aW9uIFEkKHQsZSl7dCo9UFk7dmFyIG49RlkoZSo9UFkpLGk9T1koZSkscj1OWSh0LVckKSxvPU9ZKHIpLGE9aSpGWShyKSxzPVkkKm4tcSQqaSpvLGw9cSQqbitZJCppKm87WCQuYWRkKFJZKFVZKGEqYStzKnMpLGwpKSxXJD10LHEkPW4sWSQ9aX1mdW5jdGlvbiB0Syh0KXtyZXR1cm4gWCQucmVzZXQoKSxRWSh0LCQkKSwrWCR9dmFyIGVLPVtudWxsLG51bGxdLG5LPXt0eXBlOiJMaW5lU3RyaW5nIixjb29yZGluYXRlczplS307ZnVuY3Rpb24gaUsodCxlKXtyZXR1cm4gZUtbMF09dCxlS1sxXT1lLHRLKG5LKX12YXIgcks9e0ZlYXR1cmU6ZnVuY3Rpb24odCxlKXtyZXR1cm4gYUsodC5nZW9tZXRyeSxlKX0sRmVhdHVyZUNvbGxlY3Rpb246ZnVuY3Rpb24odCxlKXtmb3IodmFyIG49dC5mZWF0dXJlcyxpPS0xLHI9bi5sZW5ndGg7KytpPHI7KWlmKGFLKG5baV0uZ2VvbWV0cnksZSkpcmV0dXJuITA7cmV0dXJuITF9fSxvSz17U3BoZXJlOmZ1bmN0aW9uKCl7cmV0dXJuITB9LFBvaW50OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHNLKHQuY29vcmRpbmF0ZXMsZSl9LE11bHRpUG9pbnQ6ZnVuY3Rpb24odCxlKXtmb3IodmFyIG49dC5jb29yZGluYXRlcyxpPS0xLHI9bi5sZW5ndGg7KytpPHI7KWlmKHNLKG5baV0sZSkpcmV0dXJuITA7cmV0dXJuITF9LExpbmVTdHJpbmc6ZnVuY3Rpb24odCxlKXtyZXR1cm4gbEsodC5jb29yZGluYXRlcyxlKX0sTXVsdGlMaW5lU3RyaW5nOmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuPXQuY29vcmRpbmF0ZXMsaT0tMSxyPW4ubGVuZ3RoOysraTxyOylpZihsSyhuW2ldLGUpKXJldHVybiEwO3JldHVybiExfSxQb2x5Z29uOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIGNLKHQuY29vcmRpbmF0ZXMsZSl9LE11bHRpUG9seWdvbjpmdW5jdGlvbih0LGUpe2Zvcih2YXIgbj10LmNvb3JkaW5hdGVzLGk9LTEscj1uLmxlbmd0aDsrK2k8cjspaWYoY0sobltpXSxlKSlyZXR1cm4hMDtyZXR1cm4hMX0sR2VvbWV0cnlDb2xsZWN0aW9uOmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuPXQuZ2VvbWV0cmllcyxpPS0xLHI9bi5sZW5ndGg7KytpPHI7KWlmKGFLKG5baV0sZSkpcmV0dXJuITA7cmV0dXJuITF9fTtmdW5jdGlvbiBhSyh0LGUpe3JldHVybiEoIXR8fCFvSy5oYXNPd25Qcm9wZXJ0eSh0LnR5cGUpKSYmb0tbdC50eXBlXSh0LGUpfWZ1bmN0aW9uIHNLKHQsZSl7cmV0dXJuIDA9PT1pSyh0LGUpfWZ1bmN0aW9uIGxLKHQsZSl7dmFyIG49aUsodFswXSx0WzFdKTtyZXR1cm4gaUsodFswXSxlKStpSyhlLHRbMV0pPD1uK0VZfWZ1bmN0aW9uIGNLKHQsZSl7cmV0dXJuISFMJCh0Lm1hcCh1SyksaEsoZSkpfWZ1bmN0aW9uIHVLKHQpe3JldHVybih0PXQubWFwKGhLKSkucG9wKCksdH1mdW5jdGlvbiBoSyh0KXtyZXR1cm5bdFswXSpQWSx0WzFdKlBZXX1mdW5jdGlvbiBkSyh0LGUsbil7dmFyIGk9TiQodCxlLUVZLG4pLmNvbmNhdChlKTtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIGkubWFwKChmdW5jdGlvbihlKXtyZXR1cm5bdCxlXX0pKX19ZnVuY3Rpb24gcEsodCxlLG4pe3ZhciBpPU4kKHQsZS1FWSxuKS5jb25jYXQoZSk7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBpLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuW2UsdF19KSl9fWZ1bmN0aW9uIGZLKCl7dmFyIHQsZSxuLGkscixvLGEscyxsLGMsdSxoLGQ9MTAscD1kLGY9OTAsbT0zNjAsZz0yLjU7ZnVuY3Rpb24gXygpe3JldHVybnt0eXBlOiJNdWx0aUxpbmVTdHJpbmciLGNvb3JkaW5hdGVzOnkoKX19ZnVuY3Rpb24geSgpe3JldHVybiBOJCh6WShpL2YpKmYsbixmKS5tYXAodSkuY29uY2F0KE4kKHpZKHMvbSkqbSxhLG0pLm1hcChoKSkuY29uY2F0KE4kKHpZKGUvZCkqZCx0LGQpLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIE5ZKHQlZik+RVl9KSkubWFwKGwpKS5jb25jYXQoTiQoelkoby9wKSpwLHIscCkuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gTlkodCVtKT5FWX0pKS5tYXAoYykpfXJldHVybiBfLmxpbmVzPWZ1bmN0aW9uKCl7cmV0dXJuIHkoKS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybnt0eXBlOiJMaW5lU3RyaW5nIixjb29yZGluYXRlczp0fX0pKX0sXy5vdXRsaW5lPWZ1bmN0aW9uKCl7cmV0dXJue3R5cGU6IlBvbHlnb24iLGNvb3JkaW5hdGVzOlt1KGkpLmNvbmNhdChoKGEpLnNsaWNlKDEpLHUobikucmV2ZXJzZSgpLnNsaWNlKDEpLGgocykucmV2ZXJzZSgpLnNsaWNlKDEpKV19fSxfLmV4dGVudD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD9fLmV4dGVudE1ham9yKHQpLmV4dGVudE1pbm9yKHQpOl8uZXh0ZW50TWlub3IoKX0sXy5leHRlbnRNYWpvcj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocz0rdFswXVsxXSxhPSt0WzFdWzFdLChpPSt0WzBdWzBdKT4obj0rdFsxXVswXSkmJih0PWksaT1uLG49dCkscz5hJiYodD1zLHM9YSxhPXQpLF8ucHJlY2lzaW9uKGcpKTpbW2ksc10sW24sYV1dfSxfLmV4dGVudE1pbm9yPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPStuWzBdWzFdLHI9K25bMV1bMV0sKGU9K25bMF1bMF0pPih0PStuWzFdWzBdKSYmKG49ZSxlPXQsdD1uKSxvPnImJihuPW8sbz1yLHI9biksXy5wcmVjaXNpb24oZykpOltbZSxvXSxbdCxyXV19LF8uc3RlcD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD9fLnN0ZXBNYWpvcih0KS5zdGVwTWlub3IodCk6Xy5zdGVwTWlub3IoKX0sXy5zdGVwTWFqb3I9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGY9K3RbMF0sbT0rdFsxXSxfKTpbZixtXX0sXy5zdGVwTWlub3I9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGQ9K3RbMF0scD0rdFsxXSxfKTpbZCxwXX0sXy5wcmVjaXNpb249ZnVuY3Rpb24oZCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGc9K2QsbD1kSyhvLHIsOTApLGM9cEsoZSx0LGcpLHU9ZEsocyxhLDkwKSxoPXBLKGksbixnKSxfKTpnfSxfLmV4dGVudE1ham9yKFtbLTE4MCwtODkuOTk5OTk5XSxbMTgwLDg5Ljk5OTk5OV1dKS5leHRlbnRNaW5vcihbWy0xODAsLTgwLjAwMDAwMV0sWzE4MCw4MC4wMDAwMDFdXSl9ZnVuY3Rpb24gbUsodCl7cmV0dXJuIHR9dmFyIGdLLF9LLHlLLHZLLGJLPXhZKCkseEs9eFkoKSx3Sz17cG9pbnQ6WVksbGluZVN0YXJ0OllZLGxpbmVFbmQ6WVkscG9seWdvblN0YXJ0OmZ1bmN0aW9uKCl7d0subGluZVN0YXJ0PVNLLHdLLmxpbmVFbmQ9VEt9LHBvbHlnb25FbmQ6ZnVuY3Rpb24oKXt3Sy5saW5lU3RhcnQ9d0subGluZUVuZD13Sy5wb2ludD1ZWSxiSy5hZGQoTlkoeEspKSx4Sy5yZXNldCgpfSxyZXN1bHQ6ZnVuY3Rpb24oKXt2YXIgdD1iSy8yO3JldHVybiBiSy5yZXNldCgpLHR9fTtmdW5jdGlvbiBTSygpe3dLLnBvaW50PU1LfWZ1bmN0aW9uIE1LKHQsZSl7d0sucG9pbnQ9RUssZ0s9eUs9dCxfSz12Sz1lfWZ1bmN0aW9uIEVLKHQsZSl7eEsuYWRkKHZLKnQteUsqZSkseUs9dCx2Sz1lfWZ1bmN0aW9uIFRLKCl7RUsoZ0ssX0spfXZhciBDSz0xLzAsQUs9Q0ssa0s9LUNLLExLPWtLLFBLPXtwb2ludDpmdW5jdGlvbiBOSyh0LGUpe3Q8Q0smJihDSz10KTt0PmtLJiYoa0s9dCk7ZTxBSyYmKEFLPWUpO2U+TEsmJihMSz1lKX0sbGluZVN0YXJ0OllZLGxpbmVFbmQ6WVkscG9seWdvblN0YXJ0OllZLHBvbHlnb25FbmQ6WVkscmVzdWx0OmZ1bmN0aW9uKCl7dmFyIHQ9W1tDSyxBS10sW2tLLExLXV07cmV0dXJuIGtLPUxLPS0oQUs9Q0s9MS8wKSx0fX07dmFyIElLLFJLLE9LLHpLLERLPTAsQks9MCxISz0wLEZLPTAsVks9MCxVSz0wLGpLPTAsR0s9MCxXSz0wLHFLPXtwb2ludDpZSyxsaW5lU3RhcnQ6WEssbGluZUVuZDpaSyxwb2x5Z29uU3RhcnQ6ZnVuY3Rpb24oKXtxSy5saW5lU3RhcnQ9SksscUsubGluZUVuZD1RS30scG9seWdvbkVuZDpmdW5jdGlvbigpe3FLLnBvaW50PVlLLHFLLmxpbmVTdGFydD1YSyxxSy5saW5lRW5kPVpLfSxyZXN1bHQ6ZnVuY3Rpb24oKXt2YXIgdD1XSz9baksvV0ssR0svV0tdOlVLP1tGSy9VSyxWSy9VS106SEs/W0RLL0hLLEJLL0hLXTpbTmFOLE5hTl07cmV0dXJuIERLPUJLPUhLPUZLPVZLPVVLPWpLPUdLPVdLPTAsdH19O2Z1bmN0aW9uIFlLKHQsZSl7REsrPXQsQksrPWUsKytIS31mdW5jdGlvbiBYSygpe3FLLnBvaW50PSRLfWZ1bmN0aW9uICRLKHQsZSl7cUsucG9pbnQ9S0ssWUsoT0s9dCx6Sz1lKX1mdW5jdGlvbiBLSyh0LGUpe3ZhciBuPXQtT0ssaT1lLXpLLHI9VVkobipuK2kqaSk7RksrPXIqKE9LK3QpLzIsVksrPXIqKHpLK2UpLzIsVUsrPXIsWUsoT0s9dCx6Sz1lKX1mdW5jdGlvbiBaSygpe3FLLnBvaW50PVlLfWZ1bmN0aW9uIEpLKCl7cUsucG9pbnQ9dFp9ZnVuY3Rpb24gUUsoKXtlWihJSyxSSyl9ZnVuY3Rpb24gdFoodCxlKXtxSy5wb2ludD1lWixZSyhJSz1PSz10LFJLPXpLPWUpfWZ1bmN0aW9uIGVaKHQsZSl7dmFyIG49dC1PSyxpPWUteksscj1VWShuKm4raSppKTtGSys9ciooT0srdCkvMixWSys9ciooeksrZSkvMixVSys9cixqSys9KHI9eksqdC1PSyplKSooT0srdCksR0srPXIqKHpLK2UpLFdLKz0zKnIsWUsoT0s9dCx6Sz1lKX1mdW5jdGlvbiBuWih0KXt0aGlzLl9jb250ZXh0PXR9bloucHJvdG90eXBlPXtfcmFkaXVzOjQuNSxwb2ludFJhZGl1czpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fcmFkaXVzPXQsdGhpc30scG9seWdvblN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fbGluZT0wfSxwb2x5Z29uRW5kOmZ1bmN0aW9uKCl7dGhpcy5fbGluZT1OYU59LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3BvaW50PTB9LGxpbmVFbmQ6ZnVuY3Rpb24oKXswPT09dGhpcy5fbGluZSYmdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKSx0aGlzLl9wb2ludD1OYU59LHBvaW50OmZ1bmN0aW9uKHQsZSl7c3dpdGNoKHRoaXMuX3BvaW50KXtjYXNlIDA6dGhpcy5fY29udGV4dC5tb3ZlVG8odCxlKSx0aGlzLl9wb2ludD0xO2JyZWFrO2Nhc2UgMTp0aGlzLl9jb250ZXh0LmxpbmVUbyh0LGUpO2JyZWFrO2RlZmF1bHQ6dGhpcy5fY29udGV4dC5tb3ZlVG8odCt0aGlzLl9yYWRpdXMsZSksdGhpcy5fY29udGV4dC5hcmModCxlLHRoaXMuX3JhZGl1cywwLGtZKX19LHJlc3VsdDpZWX07dmFyIGlaLHJaLG9aLGFaLHNaLGxaPXhZKCksY1o9e3BvaW50OllZLGxpbmVTdGFydDpmdW5jdGlvbigpe2NaLnBvaW50PXVafSxsaW5lRW5kOmZ1bmN0aW9uKCl7aVomJmhaKHJaLG9aKSxjWi5wb2ludD1ZWX0scG9seWdvblN0YXJ0OmZ1bmN0aW9uKCl7aVo9ITB9LHBvbHlnb25FbmQ6ZnVuY3Rpb24oKXtpWj1udWxsfSxyZXN1bHQ6ZnVuY3Rpb24oKXt2YXIgdD0rbFo7cmV0dXJuIGxaLnJlc2V0KCksdH19O2Z1bmN0aW9uIHVaKHQsZSl7Y1oucG9pbnQ9aFosclo9YVo9dCxvWj1zWj1lfWZ1bmN0aW9uIGhaKHQsZSl7bFouYWRkKFVZKChhWi09dCkqYVorKHNaLT1lKSpzWikpLGFaPXQsc1o9ZX1mdW5jdGlvbiBkWigpe3RoaXMuX3N0cmluZz1bXX1mdW5jdGlvbiBwWih0KXtyZXR1cm4ibTAsIit0KyJhIit0KyIsIit0KyIgMCAxLDEgMCwiKy0yKnQrImEiK3QrIiwiK3QrIiAwIDEsMSAwLCIrMip0KyJ6In1mdW5jdGlvbiBmWih0KXtyZXR1cm4gZnVuY3Rpb24oZSl7dmFyIG49bmV3IG1aO2Zvcih2YXIgaSBpbiB0KW5baV09dFtpXTtyZXR1cm4gbi5zdHJlYW09ZSxufX1mdW5jdGlvbiBtWigpe31mdW5jdGlvbiBnWih0LGUsbil7dmFyIGk9dC5jbGlwRXh0ZW50JiZ0LmNsaXBFeHRlbnQoKTtyZXR1cm4gdC5zY2FsZSgxNTApLnRyYW5zbGF0ZShbMCwwXSksbnVsbCE9aSYmdC5jbGlwRXh0ZW50KG51bGwpLFFZKG4sdC5zdHJlYW0oUEspKSxlKFBLLnJlc3VsdCgpKSxudWxsIT1pJiZ0LmNsaXBFeHRlbnQoaSksdH1mdW5jdGlvbiBfWih0LGUsbil7cmV0dXJuIGdaKHQsKGZ1bmN0aW9uKG4pe3ZhciBpPWVbMV1bMF0tZVswXVswXSxyPWVbMV1bMV0tZVswXVsxXSxvPU1hdGgubWluKGkvKG5bMV1bMF0tblswXVswXSksci8oblsxXVsxXS1uWzBdWzFdKSksYT0rZVswXVswXSsoaS1vKihuWzFdWzBdK25bMF1bMF0pKS8yLHM9K2VbMF1bMV0rKHItbyooblsxXVsxXStuWzBdWzFdKSkvMjt0LnNjYWxlKDE1MCpvKS50cmFuc2xhdGUoW2Esc10pfSksbil9ZnVuY3Rpb24geVoodCxlLG4pe3JldHVybiBfWih0LFtbMCwwXSxlXSxuKX1mdW5jdGlvbiB2Wih0LGUsbil7cmV0dXJuIGdaKHQsKGZ1bmN0aW9uKG4pe3ZhciBpPStlLHI9aS8oblsxXVswXS1uWzBdWzBdKSxvPShpLXIqKG5bMV1bMF0rblswXVswXSkpLzIsYT0tcipuWzBdWzFdO3Quc2NhbGUoMTUwKnIpLnRyYW5zbGF0ZShbbyxhXSl9KSxuKX1mdW5jdGlvbiBiWih0LGUsbil7cmV0dXJuIGdaKHQsKGZ1bmN0aW9uKG4pe3ZhciBpPStlLHI9aS8oblsxXVsxXS1uWzBdWzFdKSxvPS1yKm5bMF1bMF0sYT0oaS1yKihuWzFdWzFdK25bMF1bMV0pKS8yO3Quc2NhbGUoMTUwKnIpLnRyYW5zbGF0ZShbbyxhXSl9KSxuKX1kWi5wcm90b3R5cGU9e19yYWRpdXM6NC41LF9jaXJjbGU6cFooNC41KSxwb2ludFJhZGl1czpmdW5jdGlvbih0KXtyZXR1cm4odD0rdCkhPT10aGlzLl9yYWRpdXMmJih0aGlzLl9yYWRpdXM9dCx0aGlzLl9jaXJjbGU9bnVsbCksdGhpc30scG9seWdvblN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fbGluZT0wfSxwb2x5Z29uRW5kOmZ1bmN0aW9uKCl7dGhpcy5fbGluZT1OYU59LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3BvaW50PTB9LGxpbmVFbmQ6ZnVuY3Rpb24oKXswPT09dGhpcy5fbGluZSYmdGhpcy5fc3RyaW5nLnB1c2goIloiKSx0aGlzLl9wb2ludD1OYU59LHBvaW50OmZ1bmN0aW9uKHQsZSl7c3dpdGNoKHRoaXMuX3BvaW50KXtjYXNlIDA6dGhpcy5fc3RyaW5nLnB1c2goIk0iLHQsIiwiLGUpLHRoaXMuX3BvaW50PTE7YnJlYWs7Y2FzZSAxOnRoaXMuX3N0cmluZy5wdXNoKCJMIix0LCIsIixlKTticmVhaztkZWZhdWx0Om51bGw9PXRoaXMuX2NpcmNsZSYmKHRoaXMuX2NpcmNsZT1wWih0aGlzLl9yYWRpdXMpKSx0aGlzLl9zdHJpbmcucHVzaCgiTSIsdCwiLCIsZSx0aGlzLl9jaXJjbGUpfX0scmVzdWx0OmZ1bmN0aW9uKCl7aWYodGhpcy5fc3RyaW5nLmxlbmd0aCl7dmFyIHQ9dGhpcy5fc3RyaW5nLmpvaW4oIiIpO3JldHVybiB0aGlzLl9zdHJpbmc9W10sdH1yZXR1cm4gbnVsbH19LG1aLnByb3RvdHlwZT17Y29uc3RydWN0b3I6bVoscG9pbnQ6ZnVuY3Rpb24odCxlKXt0aGlzLnN0cmVhbS5wb2ludCh0LGUpfSxzcGhlcmU6ZnVuY3Rpb24oKXt0aGlzLnN0cmVhbS5zcGhlcmUoKX0sbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5zdHJlYW0ubGluZVN0YXJ0KCl9LGxpbmVFbmQ6ZnVuY3Rpb24oKXt0aGlzLnN0cmVhbS5saW5lRW5kKCl9LHBvbHlnb25TdGFydDpmdW5jdGlvbigpe3RoaXMuc3RyZWFtLnBvbHlnb25TdGFydCgpfSxwb2x5Z29uRW5kOmZ1bmN0aW9uKCl7dGhpcy5zdHJlYW0ucG9seWdvbkVuZCgpfX07dmFyIHhaPU9ZKDMwKlBZKTtmdW5jdGlvbiB3Wih0LGUpe3JldHVybitlPyhmdW5jdGlvbiBuKHQsZSl7ZnVuY3Rpb24gbihpLHIsbyxhLHMsbCxjLHUsaCxkLHAsZixtLGcpe3ZhciBfPWMtaSx5PXUtcix2PV8qXyt5Knk7aWYodj40KmUmJm0tLSl7dmFyIGI9YStkLHg9cytwLHc9bCtmLFM9VVkoYipiK3gqeCt3KncpLE09V1kody89UyksRT1OWShOWSh3KS0xKTxFWXx8Tlkoby1oKTxFWT8obytoKS8yOlJZKHgsYiksVD10KEUsTSksQz1UWzBdLEE9VFsxXSxrPUMtaSxMPUEtcixQPXkqay1fKkw7KFAqUC92PmV8fE5ZKChfKmsreSpMKS92LS41KT4uM3x8YSpkK3MqcCtsKmY8eFopJiYobihpLHIsbyxhLHMsbCxDLEEsRSxiLz1TLHgvPVMsdyxtLGcpLGcucG9pbnQoQyxBKSxuKEMsQSxFLGIseCx3LGMsdSxoLGQscCxmLG0sZykpfX1yZXR1cm4gZnVuY3Rpb24oZSl7dmFyIGkscixvLGEscyxsLGMsdSxoLGQscCxmLG09e3BvaW50OmcsbGluZVN0YXJ0Ol8sbGluZUVuZDp2LHBvbHlnb25TdGFydDpmdW5jdGlvbigpe2UucG9seWdvblN0YXJ0KCksbS5saW5lU3RhcnQ9Yn0scG9seWdvbkVuZDpmdW5jdGlvbigpe2UucG9seWdvbkVuZCgpLG0ubGluZVN0YXJ0PV99fTtmdW5jdGlvbiBnKG4saSl7bj10KG4saSksZS5wb2ludChuWzBdLG5bMV0pfWZ1bmN0aW9uIF8oKXt1PU5hTixtLnBvaW50PXksZS5saW5lU3RhcnQoKX1mdW5jdGlvbiB5KGkscil7dmFyIG89cFgoW2kscl0pLGE9dChpLHIpO24odSxoLGMsZCxwLGYsdT1hWzBdLGg9YVsxXSxjPWksZD1vWzBdLHA9b1sxXSxmPW9bMl0sMTYsZSksZS5wb2ludCh1LGgpfWZ1bmN0aW9uIHYoKXttLnBvaW50PWcsZS5saW5lRW5kKCl9ZnVuY3Rpb24gYigpe18oKSxtLnBvaW50PXgsbS5saW5lRW5kPXd9ZnVuY3Rpb24geCh0LGUpe3koaT10LGUpLHI9dSxvPWgsYT1kLHM9cCxsPWYsbS5wb2ludD15fWZ1bmN0aW9uIHcoKXtuKHUsaCxjLGQscCxmLHIsbyxpLGEscyxsLDE2LGUpLG0ubGluZUVuZD12LHYoKX1yZXR1cm4gbX19KSh0LGUpOihmdW5jdGlvbiBpKHQpe3JldHVybiBmWih7cG9pbnQ6ZnVuY3Rpb24oZSxuKXtlPXQoZSxuKSx0aGlzLnN0cmVhbS5wb2ludChlWzBdLGVbMV0pfX0pfSkodCl9dmFyIFNaPWZaKHtwb2ludDpmdW5jdGlvbih0LGUpe3RoaXMuc3RyZWFtLnBvaW50KHQqUFksZSpQWSl9fSk7ZnVuY3Rpb24gTVoodCl7cmV0dXJuIEVaKChmdW5jdGlvbigpe3JldHVybiB0fSkpKCl9ZnVuY3Rpb24gRVoodCl7dmFyIGUsbixpLHIsbyxhLHMsbCxjLHUsaD0xNTAsZD00ODAscD0yNTAsZj0wLG09MCxnPTAsXz0wLHk9MCx2PW51bGwsYj1CJCx4PW51bGwsdz1tSyxTPS41LE09d1ooQyxTKTtmdW5jdGlvbiBFKHQpe3JldHVyblsodD1vKHRbMF0qUFksdFsxXSpQWSkpWzBdKmgrbixpLXRbMV0qaF19ZnVuY3Rpb24gVCh0KXtyZXR1cm4odD1vLmludmVydCgodFswXS1uKS9oLChpLXRbMV0pL2gpKSYmW3RbMF0qTFksdFsxXSpMWV19ZnVuY3Rpb24gQyh0LHIpe3JldHVyblsodD1lKHQscikpWzBdKmgrbixpLXRbMV0qaF19ZnVuY3Rpb24gQSgpe289bSQocj1fJChnLF8seSksZSk7dmFyIHQ9ZShmLG0pO3JldHVybiBuPWQtdFswXSpoLGk9cCt0WzFdKmgsaygpfWZ1bmN0aW9uIGsoKXtyZXR1cm4gYz11PW51bGwsRX1yZXR1cm4gRS5zdHJlYW09ZnVuY3Rpb24odCl7cmV0dXJuIGMmJnU9PT10P2M6Yz1TWigoZnVuY3Rpb24gZSh0KXtyZXR1cm4gZlooe3BvaW50OmZ1bmN0aW9uKGUsbil7dmFyIGk9dChlLG4pO3JldHVybiB0aGlzLnN0cmVhbS5wb2ludChpWzBdLGlbMV0pfX0pfSkocikoYihNKHcodT10KSkpKSl9LEUucHJlY2xpcD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYj10LHY9dm9pZCAwLGsoKSk6Yn0sRS5wb3N0Y2xpcD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odz10LHg9YT1zPWw9bnVsbCxrKCkpOnd9LEUuY2xpcEFuZ2xlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhiPSt0P1YkKHY9dCpQWSk6KHY9bnVsbCxCJCksaygpKTp2KkxZfSxFLmNsaXBFeHRlbnQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHc9bnVsbD09dD8oeD1hPXM9bD1udWxsLG1LKTpHJCh4PSt0WzBdWzBdLGE9K3RbMF1bMV0scz0rdFsxXVswXSxsPSt0WzFdWzFdKSxrKCkpOm51bGw9PXg/bnVsbDpbW3gsYV0sW3MsbF1dfSxFLnNjYWxlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhoPSt0LEEoKSk6aH0sRS50cmFuc2xhdGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGQ9K3RbMF0scD0rdFsxXSxBKCkpOltkLHBdfSxFLmNlbnRlcj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZj10WzBdJTM2MCpQWSxtPXRbMV0lMzYwKlBZLEEoKSk6W2YqTFksbSpMWV19LEUucm90YXRlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhnPXRbMF0lMzYwKlBZLF89dFsxXSUzNjAqUFkseT10Lmxlbmd0aD4yP3RbMl0lMzYwKlBZOjAsQSgpKTpbZypMWSxfKkxZLHkqTFldfSxFLnByZWNpc2lvbj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oTT13WihDLFM9dCp0KSxrKCkpOlVZKFMpfSxFLmZpdEV4dGVudD1mdW5jdGlvbih0LGUpe3JldHVybiBfWihFLHQsZSl9LEUuZml0U2l6ZT1mdW5jdGlvbih0LGUpe3JldHVybiB5WihFLHQsZSl9LEUuZml0V2lkdGg9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdlooRSx0LGUpfSxFLmZpdEhlaWdodD1mdW5jdGlvbih0LGUpe3JldHVybiBiWihFLHQsZSl9LGZ1bmN0aW9uKCl7cmV0dXJuIGU9dC5hcHBseSh0aGlzLGFyZ3VtZW50cyksRS5pbnZlcnQ9ZS5pbnZlcnQmJlQsQSgpfX1mdW5jdGlvbiBUWih0KXt2YXIgZT0wLG49VFkvMyxpPUVaKHQpLHI9aShlLG4pO3JldHVybiByLnBhcmFsbGVscz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD9pKGU9dFswXSpQWSxuPXRbMV0qUFkpOltlKkxZLG4qTFldfSxyfWZ1bmN0aW9uIENaKHQsZSl7dmFyIG49RlkodCksaT0obitGWShlKSkvMjtpZihOWShpKTxFWSlyZXR1cm4oZnVuY3Rpb24gcih0KXt2YXIgZT1PWSh0KTtmdW5jdGlvbiBuKHQsbil7cmV0dXJuW3QqZSxGWShuKS9lXX1yZXR1cm4gbi5pbnZlcnQ9ZnVuY3Rpb24odCxuKXtyZXR1cm5bdC9lLFdZKG4qZSldfSxufSkodCk7dmFyIG89MStuKigyKmktbiksYT1VWShvKS9pO2Z1bmN0aW9uIHModCxlKXt2YXIgbj1VWShvLTIqaSpGWShlKSkvaTtyZXR1cm5bbipGWSh0Kj1pKSxhLW4qT1kodCldfXJldHVybiBzLmludmVydD1mdW5jdGlvbih0LGUpe3ZhciBuPWEtZTtyZXR1cm5bUlkodCxOWShuKSkvaSpWWShuKSxXWSgoby0odCp0K24qbikqaSppKS8oMippKSldfSxzfWZ1bmN0aW9uIEFaKCl7cmV0dXJuIFRaKENaKS5zY2FsZSgxNTUuNDI0KS5jZW50ZXIoWzAsMzMuNjQ0Ml0pfWZ1bmN0aW9uIGtaKCl7cmV0dXJuIEFaKCkucGFyYWxsZWxzKFsyOS41LDQ1LjVdKS5zY2FsZSgxMDcwKS50cmFuc2xhdGUoWzQ4MCwyNTBdKS5yb3RhdGUoWzk2LDBdKS5jZW50ZXIoWy0uNiwzOC43XSl9ZnVuY3Rpb24gTFoodCl7cmV0dXJuIGZ1bmN0aW9uKGUsbil7dmFyIGk9T1koZSkscj1PWShuKSxvPXQoaSpyKTtyZXR1cm5bbypyKkZZKGUpLG8qRlkobildfX1mdW5jdGlvbiBQWih0KXtyZXR1cm4gZnVuY3Rpb24oZSxuKXt2YXIgaT1VWShlKmUrbipuKSxyPXQoaSksbz1GWShyKSxhPU9ZKHIpO3JldHVybltSWShlKm8saSphKSxXWShpJiZuKm8vaSldfX12YXIgTlo9TFooKGZ1bmN0aW9uKHQpe3JldHVybiBVWSgyLygxK3QpKX0pKTtOWi5pbnZlcnQ9UFooKGZ1bmN0aW9uKHQpe3JldHVybiAyKldZKHQvMil9KSk7dmFyIElaPUxaKChmdW5jdGlvbih0KXtyZXR1cm4odD1HWSh0KSkmJnQvRlkodCl9KSk7ZnVuY3Rpb24gUloodCxlKXtyZXR1cm5bdCxCWShqWSgoQ1krZSkvMikpXX1mdW5jdGlvbiBPWih0KXt2YXIgZSxuLGkscj1NWih0KSxvPXIuY2VudGVyLGE9ci5zY2FsZSxzPXIudHJhbnNsYXRlLGw9ci5jbGlwRXh0ZW50LGM9bnVsbDtmdW5jdGlvbiB1KCl7dmFyIG89VFkqYSgpLHM9cih4JChyLnJvdGF0ZSgpKS5pbnZlcnQoWzAsMF0pKTtyZXR1cm4gbChudWxsPT1jP1tbc1swXS1vLHNbMV0tb10sW3NbMF0rbyxzWzFdK29dXTp0PT09Ulo/W1tNYXRoLm1heChzWzBdLW8sYyksZV0sW01hdGgubWluKHNbMF0rbyxuKSxpXV06W1tjLE1hdGgubWF4KHNbMV0tbyxlKV0sW24sTWF0aC5taW4oc1sxXStvLGkpXV0pfXJldHVybiByLnNjYWxlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhKHQpLHUoKSk6YSgpfSxyLnRyYW5zbGF0ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocyh0KSx1KCkpOnMoKX0sci5jZW50ZXI9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG8odCksdSgpKTpvKCl9LHIuY2xpcEV4dGVudD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obnVsbD09dD9jPWU9bj1pPW51bGw6KGM9K3RbMF1bMF0sZT0rdFswXVsxXSxuPSt0WzFdWzBdLGk9K3RbMV1bMV0pLHUoKSk6bnVsbD09Yz9udWxsOltbYyxlXSxbbixpXV19LHUoKX1mdW5jdGlvbiB6Wih0KXtyZXR1cm4galkoKENZK3QpLzIpfWZ1bmN0aW9uIERaKHQsZSl7dmFyIG49T1kodCksaT10PT09ZT9GWSh0KTpCWShuL09ZKGUpKS9CWSh6WihlKS96Wih0KSkscj1uKkhZKHpaKHQpLGkpL2k7aWYoIWkpcmV0dXJuIFJaO2Z1bmN0aW9uIG8odCxlKXtyPjA/ZTwtQ1krRVkmJihlPS1DWStFWSk6ZT5DWS1FWSYmKGU9Q1ktRVkpO3ZhciBuPXIvSFkoelooZSksaSk7cmV0dXJuW24qRlkoaSp0KSxyLW4qT1koaSp0KV19cmV0dXJuIG8uaW52ZXJ0PWZ1bmN0aW9uKHQsZSl7dmFyIG49ci1lLG89VlkoaSkqVVkodCp0K24qbik7cmV0dXJuW1JZKHQsTlkobikpL2kqVlkobiksMipJWShIWShyL28sMS9pKSktQ1ldfSxvfWZ1bmN0aW9uIEJaKHQsZSl7cmV0dXJuW3QsZV19ZnVuY3Rpb24gSFoodCxlKXt2YXIgbj1PWSh0KSxpPXQ9PT1lP0ZZKHQpOihuLU9ZKGUpKS8oZS10KSxyPW4vaSt0O2lmKE5ZKGkpPEVZKXJldHVybiBCWjtmdW5jdGlvbiBvKHQsZSl7dmFyIG49ci1lLG89aSp0O3JldHVybltuKkZZKG8pLHItbipPWShvKV19cmV0dXJuIG8uaW52ZXJ0PWZ1bmN0aW9uKHQsZSl7dmFyIG49ci1lO3JldHVybltSWSh0LE5ZKG4pKS9pKlZZKG4pLHItVlkoaSkqVVkodCp0K24qbildfSxvfWZ1bmN0aW9uIEZaKHQsZSl7dmFyIG49T1koZSksaT1PWSh0KSpuO3JldHVybltuKkZZKHQpL2ksRlkoZSkvaV19ZnVuY3Rpb24gVloodCxlLG4saSl7cmV0dXJuIDE9PT10JiYxPT09ZSYmMD09PW4mJjA9PT1pP21LOmZaKHtwb2ludDpmdW5jdGlvbihyLG8pe3RoaXMuc3RyZWFtLnBvaW50KHIqdCtuLG8qZStpKX19KX1mdW5jdGlvbiBVWih0LGUpe3ZhciBuPWUqZSxpPW4qbjtyZXR1cm5bdCooLjg3MDctLjEzMTk3OSpuK2kqKGkqKC4wMDM5NzEqbi0uMDAxNTI5KmkpLS4wMTM3OTEpKSxlKigxLjAwNzIyNituKiguMDE1MDg1K2kqKC4wMjg4NzQqbi0uMDQ0NDc1LS4wMDU5MTYqaSkpKV19ZnVuY3Rpb24galoodCxlKXtyZXR1cm5bT1koZSkqRlkodCksRlkoZSldfWZ1bmN0aW9uIEdaKHQsZSl7dmFyIG49T1koZSksaT0xK09ZKHQpKm47cmV0dXJuW24qRlkodCkvaSxGWShlKS9pXX1mdW5jdGlvbiBXWih0LGUpe3JldHVybltCWShqWSgoQ1krZSkvMikpLC10XX1mdW5jdGlvbiBxWih0LGUpe3JldHVybiB0LnBhcmVudD09PWUucGFyZW50PzE6Mn1mdW5jdGlvbiBZWih0LGUpe3JldHVybiB0K2UueH1mdW5jdGlvbiBYWih0LGUpe3JldHVybiBNYXRoLm1heCh0LGUueSl9ZnVuY3Rpb24gJFoodCl7dmFyIGU9MCxuPXQuY2hpbGRyZW4saT1uJiZuLmxlbmd0aDtpZihpKWZvcig7LS1pPj0wOyllKz1uW2ldLnZhbHVlO2Vsc2UgZT0xO3QudmFsdWU9ZX1mdW5jdGlvbiBLWih0LGUpe3ZhciBuLGkscixvLGEscz1uZXcgdEoodCksbD0rdC52YWx1ZSYmKHMudmFsdWU9dC52YWx1ZSksYz1bc107Zm9yKG51bGw9PWUmJihlPVpaKTtuPWMucG9wKCk7KWlmKGwmJihuLnZhbHVlPStuLmRhdGEudmFsdWUpLChyPWUobi5kYXRhKSkmJihhPXIubGVuZ3RoKSlmb3Iobi5jaGlsZHJlbj1uZXcgQXJyYXkoYSksbz1hLTE7bz49MDstLW8pYy5wdXNoKGk9bi5jaGlsZHJlbltvXT1uZXcgdEoocltvXSkpLGkucGFyZW50PW4saS5kZXB0aD1uLmRlcHRoKzE7cmV0dXJuIHMuZWFjaEJlZm9yZShRWil9ZnVuY3Rpb24gWloodCl7cmV0dXJuIHQuY2hpbGRyZW59ZnVuY3Rpb24gSloodCl7dC5kYXRhPXQuZGF0YS5kYXRhfWZ1bmN0aW9uIFFaKHQpe3ZhciBlPTA7ZG97dC5oZWlnaHQ9ZX13aGlsZSgodD10LnBhcmVudCkmJnQuaGVpZ2h0PCsrZSl9ZnVuY3Rpb24gdEoodCl7dGhpcy5kYXRhPXQsdGhpcy5kZXB0aD10aGlzLmhlaWdodD0wLHRoaXMucGFyZW50PW51bGx9SVouaW52ZXJ0PVBaKChmdW5jdGlvbih0KXtyZXR1cm4gdH0pKSxSWi5pbnZlcnQ9ZnVuY3Rpb24odCxlKXtyZXR1cm5bdCwyKklZKERZKGUpKS1DWV19LEJaLmludmVydD1CWixGWi5pbnZlcnQ9UFooSVkpLFVaLmludmVydD1mdW5jdGlvbih0LGUpe3ZhciBuLGk9ZSxyPTI1O2Rve3ZhciBvPWkqaSxhPW8qbztpLT1uPShpKigxLjAwNzIyNitvKiguMDE1MDg1K2EqKC4wMjg4NzQqby0uMDQ0NDc1LS4wMDU5MTYqYSkpKS1lKS8oMS4wMDcyMjYrbyooLjA0NTI1NSthKiguMjU5ODY2Km8tLjMxMTMyNS0uMDA1OTE2KjExKmEpKSl9d2hpbGUoTlkobik+RVkmJi0tcj4wKTtyZXR1cm5bdC8oLjg3MDcrKG89aSppKSoobyoobypvKm8qKC4wMDM5NzEtLjAwMTUyOSpvKS0uMDEzNzkxKS0uMTMxOTc5KSksaV19LGpaLmludmVydD1QWihXWSksR1ouaW52ZXJ0PVBaKChmdW5jdGlvbih0KXtyZXR1cm4gMipJWSh0KX0pKSxXWi5pbnZlcnQ9ZnVuY3Rpb24odCxlKXtyZXR1cm5bLWUsMipJWShEWSh0KSktQ1ldfSx0Si5wcm90b3R5cGU9S1oucHJvdG90eXBlPXtjb25zdHJ1Y3Rvcjp0Sixjb3VudDpmdW5jdGlvbiBlSigpe3JldHVybiB0aGlzLmVhY2hBZnRlcigkWil9LGVhY2g6ZnVuY3Rpb24gbkoodCl7dmFyIGUsbixpLHIsbz10aGlzLGE9W29dO2Rve2ZvcihlPWEucmV2ZXJzZSgpLGE9W107bz1lLnBvcCgpOylpZih0KG8pLG49by5jaGlsZHJlbilmb3IoaT0wLHI9bi5sZW5ndGg7aTxyOysraSlhLnB1c2gobltpXSl9d2hpbGUoYS5sZW5ndGgpO3JldHVybiB0aGlzfSxlYWNoQWZ0ZXI6ZnVuY3Rpb24gaUoodCl7Zm9yKHZhciBlLG4saSxyPXRoaXMsbz1bcl0sYT1bXTtyPW8ucG9wKCk7KWlmKGEucHVzaChyKSxlPXIuY2hpbGRyZW4pZm9yKG49MCxpPWUubGVuZ3RoO248aTsrK24pby5wdXNoKGVbbl0pO2Zvcig7cj1hLnBvcCgpOyl0KHIpO3JldHVybiB0aGlzfSxlYWNoQmVmb3JlOmZ1bmN0aW9uIHJKKHQpe2Zvcih2YXIgZSxuLGk9dGhpcyxyPVtpXTtpPXIucG9wKCk7KWlmKHQoaSksZT1pLmNoaWxkcmVuKWZvcihuPWUubGVuZ3RoLTE7bj49MDstLW4pci5wdXNoKGVbbl0pO3JldHVybiB0aGlzfSxzdW06ZnVuY3Rpb24gb0oodCl7cmV0dXJuIHRoaXMuZWFjaEFmdGVyKChmdW5jdGlvbihlKXtmb3IodmFyIG49K3QoZS5kYXRhKXx8MCxpPWUuY2hpbGRyZW4scj1pJiZpLmxlbmd0aDstLXI+PTA7KW4rPWlbcl0udmFsdWU7ZS52YWx1ZT1ufSkpfSxzb3J0OmZ1bmN0aW9uIGFKKHQpe3JldHVybiB0aGlzLmVhY2hCZWZvcmUoKGZ1bmN0aW9uKGUpe2UuY2hpbGRyZW4mJmUuY2hpbGRyZW4uc29ydCh0KX0pKX0scGF0aDpmdW5jdGlvbiBzSih0KXtmb3IodmFyIGU9dGhpcyxuPShmdW5jdGlvbiBpKHQsZSl7aWYodD09PWUpcmV0dXJuIHQ7dmFyIG49dC5hbmNlc3RvcnMoKSxpPWUuYW5jZXN0b3JzKCkscj1udWxsO3Q9bi5wb3AoKSxlPWkucG9wKCk7Zm9yKDt0PT09ZTspcj10LHQ9bi5wb3AoKSxlPWkucG9wKCk7cmV0dXJuIHJ9KShlLHQpLHI9W2VdO2UhPT1uOylyLnB1c2goZT1lLnBhcmVudCk7Zm9yKHZhciBvPXIubGVuZ3RoO3QhPT1uOylyLnNwbGljZShvLDAsdCksdD10LnBhcmVudDtyZXR1cm4gcn0sYW5jZXN0b3JzOmZ1bmN0aW9uIGxKKCl7Zm9yKHZhciB0PXRoaXMsZT1bdF07dD10LnBhcmVudDspZS5wdXNoKHQpO3JldHVybiBlfSxkZXNjZW5kYW50czpmdW5jdGlvbiBjSigpe3ZhciB0PVtdO3JldHVybiB0aGlzLmVhY2goKGZ1bmN0aW9uKGUpe3QucHVzaChlKX0pKSx0fSxsZWF2ZXM6ZnVuY3Rpb24gdUooKXt2YXIgdD1bXTtyZXR1cm4gdGhpcy5lYWNoQmVmb3JlKChmdW5jdGlvbihlKXtlLmNoaWxkcmVufHx0LnB1c2goZSl9KSksdH0sbGlua3M6ZnVuY3Rpb24gaEooKXt2YXIgdD10aGlzLGU9W107cmV0dXJuIHQuZWFjaCgoZnVuY3Rpb24obil7biE9PXQmJmUucHVzaCh7c291cmNlOm4ucGFyZW50LHRhcmdldDpufSl9KSksZX0sY29weTpmdW5jdGlvbiBkSigpe3JldHVybiBLWih0aGlzKS5lYWNoQmVmb3JlKEpaKX19O3ZhciBwSj1BcnJheS5wcm90b3R5cGUuc2xpY2U7ZnVuY3Rpb24gZkoodCl7Zm9yKHZhciBlLG4saT0wLHI9KHQ9KGZ1bmN0aW9uIG8odCl7Zm9yKHZhciBlLG4saT10Lmxlbmd0aDtpOyluPU1hdGgucmFuZG9tKCkqaS0tfDAsZT10W2ldLHRbaV09dFtuXSx0W25dPWU7cmV0dXJuIHR9KShwSi5jYWxsKHQpKSkubGVuZ3RoLGE9W107aTxyOyllPXRbaV0sbiYmX0oobixlKT8rK2k6KG49dkooYT1tSihhLGUpKSxpPTApO3JldHVybiBufWZ1bmN0aW9uIG1KKHQsZSl7dmFyIG4saTtpZih5SihlLHQpKXJldHVybltlXTtmb3Iobj0wO248dC5sZW5ndGg7KytuKWlmKGdKKGUsdFtuXSkmJnlKKGJKKHRbbl0sZSksdCkpcmV0dXJuW3Rbbl0sZV07Zm9yKG49MDtuPHQubGVuZ3RoLTE7KytuKWZvcihpPW4rMTtpPHQubGVuZ3RoOysraSlpZihnSihiSih0W25dLHRbaV0pLGUpJiZnSihiSih0W25dLGUpLHRbaV0pJiZnSihiSih0W2ldLGUpLHRbbl0pJiZ5Sih4Sih0W25dLHRbaV0sZSksdCkpcmV0dXJuW3Rbbl0sdFtpXSxlXTt0aHJvdyBuZXcgRXJyb3J9ZnVuY3Rpb24gZ0oodCxlKXt2YXIgbj10LnItZS5yLGk9ZS54LXQueCxyPWUueS10Lnk7cmV0dXJuIG48MHx8bipuPGkqaStyKnJ9ZnVuY3Rpb24gX0oodCxlKXt2YXIgbj10LnItZS5yKzFlLTYsaT1lLngtdC54LHI9ZS55LXQueTtyZXR1cm4gbj4wJiZuKm4+aSppK3Iqcn1mdW5jdGlvbiB5Sih0LGUpe2Zvcih2YXIgbj0wO248ZS5sZW5ndGg7KytuKWlmKCFfSih0LGVbbl0pKXJldHVybiExO3JldHVybiEwfWZ1bmN0aW9uIHZKKHQpe3N3aXRjaCh0Lmxlbmd0aCl7Y2FzZSAxOnJldHVybihmdW5jdGlvbiBlKHQpe3JldHVybnt4OnQueCx5OnQueSxyOnQucn19KSh0WzBdKTtjYXNlIDI6cmV0dXJuIGJKKHRbMF0sdFsxXSk7Y2FzZSAzOnJldHVybiB4Sih0WzBdLHRbMV0sdFsyXSl9fWZ1bmN0aW9uIGJKKHQsZSl7dmFyIG49dC54LGk9dC55LHI9dC5yLG89ZS54LGE9ZS55LHM9ZS5yLGw9by1uLGM9YS1pLHU9cy1yLGg9TWF0aC5zcXJ0KGwqbCtjKmMpO3JldHVybnt4OihuK28rbC9oKnUpLzIseTooaSthK2MvaCp1KS8yLHI6KGgrcitzKS8yfX1mdW5jdGlvbiB4Sih0LGUsbil7dmFyIGk9dC54LHI9dC55LG89dC5yLGE9ZS54LHM9ZS55LGw9ZS5yLGM9bi54LHU9bi55LGg9bi5yLGQ9aS1hLHA9aS1jLGY9ci1zLG09ci11LGc9bC1vLF89aC1vLHk9aSppK3Iqci1vKm8sdj15LWEqYS1zKnMrbCpsLGI9eS1jKmMtdSp1K2gqaCx4PXAqZi1kKm0sdz0oZipiLW0qdikvKDIqeCktaSxTPShtKmctZipfKS94LE09KHAqdi1kKmIpLygyKngpLXIsRT0oZCpfLXAqZykveCxUPVMqUytFKkUtMSxDPTIqKG8rdypTK00qRSksQT13KncrTSpNLW8qbyxrPS0oVD8oQytNYXRoLnNxcnQoQypDLTQqVCpBKSkvKDIqVCk6QS9DKTtyZXR1cm57eDppK3crUyprLHk6citNK0UqayxyOmt9fWZ1bmN0aW9uIHdKKHQsZSxuKXt2YXIgaT10Lngscj10Lnksbz1lLnIrbi5yLGE9dC5yK24ucixzPWUueC1pLGw9ZS55LXIsYz1zKnMrbCpsO2lmKGMpe3ZhciB1PS41KygoYSo9YSktKG8qPW8pKS8oMipjKSxoPU1hdGguc3FydChNYXRoLm1heCgwLDIqbyooYStjKS0oYS09YykqYS1vKm8pKS8oMipjKTtuLng9aSt1KnMraCpsLG4ueT1yK3UqbC1oKnN9ZWxzZSBuLng9aSthLG4ueT1yfWZ1bmN0aW9uIFNKKHQsZSl7dmFyIG49ZS54LXQueCxpPWUueS10Lnkscj10LnIrZS5yO3JldHVybiByKnItMWUtNj5uKm4raSppfWZ1bmN0aW9uIE1KKHQpe3ZhciBlPXQuXyxuPXQubmV4dC5fLGk9ZS5yK24ucixyPShlLngqbi5yK24ueCplLnIpL2ksbz0oZS55Km4ucituLnkqZS5yKS9pO3JldHVybiByKnIrbypvfWZ1bmN0aW9uIEVKKHQpe3RoaXMuXz10LHRoaXMubmV4dD1udWxsLHRoaXMucHJldmlvdXM9bnVsbH1mdW5jdGlvbiBUSih0KXtpZighKHI9dC5sZW5ndGgpKXJldHVybiAwO3ZhciBlLG4saSxyLG8sYSxzLGwsYyx1LGg7aWYoKGU9dFswXSkueD0wLGUueT0wLCEocj4xKSlyZXR1cm4gZS5yO2lmKGUueD0tKG49dFsxXSkucixuLng9ZS5yLG4ueT0wLCEocj4yKSlyZXR1cm4gZS5yK24ucjt3SihuLGUsaT10WzJdKSxlPW5ldyBFSihlKSxuPW5ldyBFSihuKSxpPW5ldyBFSihpKSxlLm5leHQ9aS5wcmV2aW91cz1uLG4ubmV4dD1lLnByZXZpb3VzPWksaS5uZXh0PW4ucHJldmlvdXM9ZTt0OmZvcihzPTM7czxyOysrcyl7d0ooZS5fLG4uXyxpPXRbc10pLGk9bmV3IEVKKGkpLGw9bi5uZXh0LGM9ZS5wcmV2aW91cyx1PW4uXy5yLGg9ZS5fLnI7ZG97aWYodTw9aCl7aWYoU0oobC5fLGkuXykpe2UubmV4dD1uPWwsbi5wcmV2aW91cz1lLC0tcztjb250aW51ZSB0fXUrPWwuXy5yLGw9bC5uZXh0fWVsc2V7aWYoU0ooYy5fLGkuXykpeyhlPWMpLm5leHQ9bixuLnByZXZpb3VzPWUsLS1zO2NvbnRpbnVlIHR9aCs9Yy5fLnIsYz1jLnByZXZpb3VzfX13aGlsZShsIT09Yy5uZXh0KTtmb3IoaS5wcmV2aW91cz1lLGkubmV4dD1uLGUubmV4dD1uLnByZXZpb3VzPW49aSxvPU1KKGUpOyhpPWkubmV4dCkhPT1uOykoYT1NSihpKSk8byYmKGU9aSxvPWEpO249ZS5uZXh0fWZvcihlPVtuLl9dLGk9bjsoaT1pLm5leHQpIT09bjspZS5wdXNoKGkuXyk7Zm9yKGk9ZkooZSkscz0wO3M8cjsrK3MpKGU9dFtzXSkueC09aS54LGUueS09aS55O3JldHVybiBpLnJ9ZnVuY3Rpb24gQ0oodCl7cmV0dXJuIG51bGw9PXQ/bnVsbDpBSih0KX1mdW5jdGlvbiBBSih0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCl0aHJvdyBuZXcgRXJyb3I7cmV0dXJuIHR9ZnVuY3Rpb24ga0ooKXtyZXR1cm4gMH1mdW5jdGlvbiBMSih0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19ZnVuY3Rpb24gUEoodCl7cmV0dXJuIE1hdGguc3FydCh0LnZhbHVlKX1mdW5jdGlvbiBOSih0KXtyZXR1cm4gZnVuY3Rpb24oZSl7ZS5jaGlsZHJlbnx8KGUucj1NYXRoLm1heCgwLCt0KGUpfHwwKSl9fWZ1bmN0aW9uIElKKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKG4pe2lmKGk9bi5jaGlsZHJlbil7dmFyIGkscixvLGE9aS5sZW5ndGgscz10KG4pKmV8fDA7aWYocylmb3Iocj0wO3I8YTsrK3IpaVtyXS5yKz1zO2lmKG89VEooaSkscylmb3Iocj0wO3I8YTsrK3IpaVtyXS5yLT1zO24ucj1vK3N9fX1mdW5jdGlvbiBSSih0KXtyZXR1cm4gZnVuY3Rpb24oZSl7dmFyIG49ZS5wYXJlbnQ7ZS5yKj10LG4mJihlLng9bi54K3QqZS54LGUueT1uLnkrdCplLnkpfX1mdW5jdGlvbiBPSih0KXt0LngwPU1hdGgucm91bmQodC54MCksdC55MD1NYXRoLnJvdW5kKHQueTApLHQueDE9TWF0aC5yb3VuZCh0LngxKSx0LnkxPU1hdGgucm91bmQodC55MSl9ZnVuY3Rpb24gekoodCxlLG4saSxyKXtmb3IodmFyIG8sYT10LmNoaWxkcmVuLHM9LTEsbD1hLmxlbmd0aCxjPXQudmFsdWUmJihpLWUpL3QudmFsdWU7KytzPGw7KShvPWFbc10pLnkwPW4sby55MT1yLG8ueDA9ZSxvLngxPWUrPW8udmFsdWUqY312YXIgREo9e2RlcHRoOi0xfSxCSj17fTtmdW5jdGlvbiBISih0KXtyZXR1cm4gdC5pZH1mdW5jdGlvbiBGSih0KXtyZXR1cm4gdC5wYXJlbnRJZH1mdW5jdGlvbiBWSih0LGUpe3JldHVybiB0LnBhcmVudD09PWUucGFyZW50PzE6Mn1mdW5jdGlvbiBVSih0KXt2YXIgZT10LmNoaWxkcmVuO3JldHVybiBlP2VbMF06dC50fWZ1bmN0aW9uIGpKKHQpe3ZhciBlPXQuY2hpbGRyZW47cmV0dXJuIGU/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/ZSsobi1lKSooMjQwLXQpLzYwOmUpfUpKKHRRLGdRLHtjb3B5OmZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3QuYXNzaWduKG5ldyB0aGlzLmNvbnN0cnVjdG9yLHRoaXMsdCl9LGRpc3BsYXlhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmdiKCkuZGlzcGxheWFibGUoKX0saGV4OmZRLGZvcm1hdEhleDpmUSxmb3JtYXRIc2w6ZnVuY3Rpb24gTFEoKXtyZXR1cm4gVFEodGhpcykuZm9ybWF0SHNsKCl9LGZvcm1hdFJnYjptUSx0b1N0cmluZzptUX0pLEpKKHhRLGJRLFFKKHRRLHticmlnaHRlcjpmdW5jdGlvbih0KXtyZXR1cm4gdD1udWxsPT10P25ROk1hdGgucG93KG5RLHQpLG5ldyB4USh0aGlzLnIqdCx0aGlzLmcqdCx0aGlzLmIqdCx0aGlzLm9wYWNpdHkpfSxkYXJrZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9bnVsbD09dD9lUTpNYXRoLnBvdyhlUSx0KSxuZXcgeFEodGhpcy5yKnQsdGhpcy5nKnQsdGhpcy5iKnQsdGhpcy5vcGFjaXR5KX0scmdiOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LGRpc3BsYXlhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuLS41PD10aGlzLnImJnRoaXMucjwyNTUuNSYmLS41PD10aGlzLmcmJnRoaXMuZzwyNTUuNSYmLS41PD10aGlzLmImJnRoaXMuYjwyNTUuNSYmMDw9dGhpcy5vcGFjaXR5JiZ0aGlzLm9wYWNpdHk8PTF9LGhleDp3USxmb3JtYXRIZXg6d1EsZm9ybWF0UmdiOlNRLHRvU3RyaW5nOlNRfSkpLEpKKEFRLENRLFFKKHRRLHticmlnaHRlcjpmdW5jdGlvbih0KXtyZXR1cm4gdD1udWxsPT10P25ROk1hdGgucG93KG5RLHQpLG5ldyBBUSh0aGlzLmgsdGhpcy5zLHRoaXMubCp0LHRoaXMub3BhY2l0eSl9LGRhcmtlcjpmdW5jdGlvbih0KXtyZXR1cm4gdD1udWxsPT10P2VROk1hdGgucG93KGVRLHQpLG5ldyBBUSh0aGlzLmgsdGhpcy5zLHRoaXMubCp0LHRoaXMub3BhY2l0eSl9LHJnYjpmdW5jdGlvbigpe3ZhciB0PXRoaXMuaCUzNjArMzYwKih0aGlzLmg8MCksZT1pc05hTih0KXx8aXNOYU4odGhpcy5zKT8wOnRoaXMucyxuPXRoaXMubCxpPW4rKG48LjU/bjoxLW4pKmUscj0yKm4taTtyZXR1cm4gbmV3IHhRKGtRKHQ+PTI0MD90LTI0MDp0KzEyMCxyLGkpLGtRKHQscixpKSxrUSh0PDEyMD90KzI0MDp0LTEyMCxyLGkpLHRoaXMub3BhY2l0eSl9LGRpc3BsYXlhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuKDA8PXRoaXMucyYmdGhpcy5zPD0xfHxpc05hTih0aGlzLnMpKSYmMDw9dGhpcy5sJiZ0aGlzLmw8PTEmJjA8PXRoaXMub3BhY2l0eSYmdGhpcy5vcGFjaXR5PD0xfSxmb3JtYXRIc2w6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLm9wYWNpdHk7cmV0dXJuKDE9PT0odD1pc05hTih0KT8xOk1hdGgubWF4KDAsTWF0aC5taW4oMSx0KSkpPyJoc2woIjoiaHNsYSgiKSsodGhpcy5ofHwwKSsiLCAiKzEwMCoodGhpcy5zfHwwKSsiJSwgIisxMDAqKHRoaXMubHx8MCkrIiUiKygxPT09dD8iKSI6IiwgIit0KyIpIil9fSkpO3ZhciBQUT1NYXRoLlBJLzE4MCxOUT0xODAvTWF0aC5QSSxJUT0uOTY0MjIsUlE9LjgyNTIxLE9RPTQvMjkselE9Ni8yOSxEUT0zKnpRKnpRO2Z1bmN0aW9uIEJRKHQpe2lmKHQgaW5zdGFuY2VvZiBGUSlyZXR1cm4gbmV3IEZRKHQubCx0LmEsdC5iLHQub3BhY2l0eSk7aWYodCBpbnN0YW5jZW9mIFlRKXJldHVybiBYUSh0KTt0IGluc3RhbmNlb2YgeFF8fCh0PXZRKHQpKTt2YXIgZSxuLGk9R1EodC5yKSxyPUdRKHQuZyksbz1HUSh0LmIpLGE9VlEoKC4yMjI1MDQ1KmkrLjcxNjg3ODYqcisuMDYwNjE2OSpvKS8xKTtyZXR1cm4gaT09PXImJnI9PT1vP2U9bj1hOihlPVZRKCguNDM2MDc0NyppKy4zODUwNjQ5KnIrLjE0MzA4MDQqbykvSVEpLG49VlEoKC4wMTM5MzIyKmkrLjA5NzEwNDUqcisuNzE0MTczMypvKS9SUSkpLG5ldyBGUSgxMTYqYS0xNiw1MDAqKGUtYSksMjAwKihhLW4pLHQub3BhY2l0eSl9ZnVuY3Rpb24gSFEodCxlLG4saSl7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP0JRKHQpOm5ldyBGUSh0LGUsbixudWxsPT1pPzE6aSl9ZnVuY3Rpb24gRlEodCxlLG4saSl7dGhpcy5sPSt0LHRoaXMuYT0rZSx0aGlzLmI9K24sdGhpcy5vcGFjaXR5PStpfWZ1bmN0aW9uIFZRKHQpe3JldHVybiB0Pi4wMDg4NTY0NTE2NzkwMzU2MzE/TWF0aC5wb3codCwxLzMpOnQvRFErT1F9ZnVuY3Rpb24gVVEodCl7cmV0dXJuIHQ+elE/dCp0KnQ6RFEqKHQtT1EpfWZ1bmN0aW9uIGpRKHQpe3JldHVybiAyNTUqKHQ8PS4wMDMxMzA4PzEyLjkyKnQ6MS4wNTUqTWF0aC5wb3codCwxLzIuNCktLjA1NSl9ZnVuY3Rpb24gR1EodCl7cmV0dXJuKHQvPTI1NSk8PS4wNDA0NT90LzEyLjkyOk1hdGgucG93KCh0Ky4wNTUpLzEuMDU1LDIuNCl9ZnVuY3Rpb24gV1EodCl7aWYodCBpbnN0YW5jZW9mIFlRKXJldHVybiBuZXcgWVEodC5oLHQuYyx0LmwsdC5vcGFjaXR5KTtpZih0IGluc3RhbmNlb2YgRlF8fCh0PUJRKHQpKSwwPT09dC5hJiYwPT09dC5iKXJldHVybiBuZXcgWVEoTmFOLDA8dC5sJiZ0Lmw8MTAwPzA6TmFOLHQubCx0Lm9wYWNpdHkpO3ZhciBlPU1hdGguYXRhbjIodC5iLHQuYSkqTlE7cmV0dXJuIG5ldyBZUShlPDA/ZSszNjA6ZSxNYXRoLnNxcnQodC5hKnQuYSt0LmIqdC5iKSx0LmwsdC5vcGFjaXR5KX1mdW5jdGlvbiBxUSh0LGUsbixpKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/V1EodCk6bmV3IFlRKHQsZSxuLG51bGw9PWk/MTppKX1mdW5jdGlvbiBZUSh0LGUsbixpKXt0aGlzLmg9K3QsdGhpcy5jPStlLHRoaXMubD0rbix0aGlzLm9wYWNpdHk9K2l9ZnVuY3Rpb24gWFEodCl7aWYoaXNOYU4odC5oKSlyZXR1cm4gbmV3IEZRKHQubCwwLDAsdC5vcGFjaXR5KTt2YXIgZT10LmgqUFE7cmV0dXJuIG5ldyBGUSh0LmwsTWF0aC5jb3MoZSkqdC5jLE1hdGguc2luKGUpKnQuYyx0Lm9wYWNpdHkpfUpKKEZRLEhRLFFKKHRRLHticmlnaHRlcjpmdW5jdGlvbih0KXtyZXR1cm4gbmV3IEZRKHRoaXMubCsxOCoobnVsbD09dD8xOnQpLHRoaXMuYSx0aGlzLmIsdGhpcy5vcGFjaXR5KX0sZGFya2VyOmZ1bmN0aW9uKHQpe3JldHVybiBuZXcgRlEodGhpcy5sLTE4KihudWxsPT10PzE6dCksdGhpcy5hLHRoaXMuYix0aGlzLm9wYWNpdHkpfSxyZ2I6ZnVuY3Rpb24oKXt2YXIgdD0odGhpcy5sKzE2KS8xMTYsZT1pc05hTih0aGlzLmEpP3Q6dCt0aGlzLmEvNTAwLG49aXNOYU4odGhpcy5iKT90OnQtdGhpcy5iLzIwMDtyZXR1cm4gbmV3IHhRKGpRKDMuMTMzODU2MSooZT1JUSpVUShlKSktMS42MTY4NjY3Kih0PTEqVVEodCkpLS40OTA2MTQ2KihuPVJRKlVRKG4pKSksalEoLS45Nzg3Njg0KmUrMS45MTYxNDE1KnQrLjAzMzQ1NCpuKSxqUSguMDcxOTQ1MyplLS4yMjg5OTE0KnQrMS40MDUyNDI3Km4pLHRoaXMub3BhY2l0eSl9fSkpLEpKKFlRLHFRLFFKKHRRLHticmlnaHRlcjpmdW5jdGlvbih0KXtyZXR1cm4gbmV3IFlRKHRoaXMuaCx0aGlzLmMsdGhpcy5sKzE4KihudWxsPT10PzE6dCksdGhpcy5vcGFjaXR5KX0sZGFya2VyOmZ1bmN0aW9uKHQpe3JldHVybiBuZXcgWVEodGhpcy5oLHRoaXMuYyx0aGlzLmwtMTgqKG51bGw9PXQ/MTp0KSx0aGlzLm9wYWNpdHkpfSxyZ2I6ZnVuY3Rpb24oKXtyZXR1cm4gWFEodGhpcykucmdiKCl9fSkpO3ZhciAkUT0tLjE0ODYxLEtRPTEuNzgyNzcsWlE9LS4yOTIyNyxKUT0tLjkwNjQ5LFFRPTEuOTcyOTQsdDE9UVEqSlEsZTE9UVEqS1EsbjE9S1EqWlEtSlEqJFE7ZnVuY3Rpb24gaTEodCl7aWYodCBpbnN0YW5jZW9mIG8xKXJldHVybiBuZXcgbzEodC5oLHQucyx0LmwsdC5vcGFjaXR5KTt0IGluc3RhbmNlb2YgeFF8fCh0PXZRKHQpKTt2YXIgZT10LmcvMjU1LG49dC5iLzI1NSxpPShuMSpuK3QxKih0LnIvMjU1KS1lMSplKS8tNS45NjE1MTIyOTEyLHI9bi1pLG89KFFRKihlLWkpLVpRKnIpL0pRLGE9TWF0aC5zcXJ0KG8qbytyKnIpLyhRUSppKigxLWkpKSxzPWE/TWF0aC5hdGFuMihvLHIpKk5RLTEyMDpOYU47cmV0dXJuIG5ldyBvMShzPDA/cyszNjA6cyxhLGksdC5vcGFjaXR5KX1mdW5jdGlvbiByMSh0LGUsbixpKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/aTEodCk6bmV3IG8xKHQsZSxuLG51bGw9PWk/MTppKX1mdW5jdGlvbiBvMSh0LGUsbixpKXt0aGlzLmg9K3QsdGhpcy5zPStlLHRoaXMubD0rbix0aGlzLm9wYWNpdHk9K2l9ZnVuY3Rpb24gYTEodCxlLG4saSxyKXt2YXIgbz10KnQsYT1vKnQ7cmV0dXJuKCgxLTMqdCszKm8tYSkqZSsoNC02Km8rMyphKSpuKygxKzMqdCszKm8tMyphKSppK2EqcikvNn1mdW5jdGlvbiBzMSh0KXt2YXIgZT10Lmxlbmd0aC0xO3JldHVybiBmdW5jdGlvbihuKXt2YXIgaT1uPD0wP249MDpuPj0xPyhuPTEsZS0xKTpNYXRoLmZsb29yKG4qZSkscj10W2ldLG89dFtpKzFdO3JldHVybiBhMSgobi1pL2UpKmUsaT4wP3RbaS0xXToyKnItbyxyLG8saTxlLTE/dFtpKzJdOjIqby1yKX19ZnVuY3Rpb24gbDEodCl7dmFyIGU9dC5sZW5ndGg7cmV0dXJuIGZ1bmN0aW9uKG4pe3ZhciBpPU1hdGguZmxvb3IoKChuJT0xKTwwPysrbjpuKSplKTtyZXR1cm4gYTEoKG4taS9lKSplLHRbKGkrZS0xKSVlXSx0W2klZV0sdFsoaSsxKSVlXSx0WyhpKzIpJWVdKX19ZnVuY3Rpb24gYzEodCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHR9fWZ1bmN0aW9uIHUxKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiB0K24qZX19ZnVuY3Rpb24gaDEodCxlKXt2YXIgbj1lLXQ7cmV0dXJuIG4/dTEodCxuPjE4MHx8bjwtMTgwP24tMzYwKk1hdGgucm91bmQobi8zNjApOm4pOmMxKGlzTmFOKHQpP2U6dCl9ZnVuY3Rpb24gZDEodCl7cmV0dXJuIDE9PSh0PSt0KT9wMTpmdW5jdGlvbihlLG4pe3JldHVybiBuLWU/KGZ1bmN0aW9uIGkodCxlLG4pe3JldHVybiB0PU1hdGgucG93KHQsbiksZT1NYXRoLnBvdyhlLG4pLXQsbj0xL24sZnVuY3Rpb24oaSl7cmV0dXJuIE1hdGgucG93KHQraSplLG4pfX0pKGUsbix0KTpjMShpc05hTihlKT9uOmUpfX1mdW5jdGlvbiBwMSh0LGUpe3ZhciBuPWUtdDtyZXR1cm4gbj91MSh0LG4pOmMxKGlzTmFOKHQpP2U6dCl9SkoobzEscjEsUUoodFEse2JyaWdodGVyOmZ1bmN0aW9uKHQpe3JldHVybiB0PW51bGw9PXQ/blE6TWF0aC5wb3coblEsdCksbmV3IG8xKHRoaXMuaCx0aGlzLnMsdGhpcy5sKnQsdGhpcy5vcGFjaXR5KX0sZGFya2VyOmZ1bmN0aW9uKHQpe3JldHVybiB0PW51bGw9PXQ/ZVE6TWF0aC5wb3coZVEsdCksbmV3IG8xKHRoaXMuaCx0aGlzLnMsdGhpcy5sKnQsdGhpcy5vcGFjaXR5KX0scmdiOmZ1bmN0aW9uKCl7dmFyIHQ9aXNOYU4odGhpcy5oKT8wOih0aGlzLmgrMTIwKSpQUSxlPSt0aGlzLmwsbj1pc05hTih0aGlzLnMpPzA6dGhpcy5zKmUqKDEtZSksaT1NYXRoLmNvcyh0KSxyPU1hdGguc2luKHQpO3JldHVybiBuZXcgeFEoMjU1KihlK24qKCRRKmkrS1EqcikpLDI1NSooZStuKihaUSppK0pRKnIpKSwyNTUqKGUrbiooUVEqaSkpLHRoaXMub3BhY2l0eSl9fSkpO3ZhciBmMT0oZnVuY3Rpb24gdChlKXt2YXIgbj1kMShlKTtmdW5jdGlvbiBpKHQsZSl7dmFyIGk9bigodD1iUSh0KSkuciwoZT1iUShlKSkucikscj1uKHQuZyxlLmcpLG89bih0LmIsZS5iKSxhPXAxKHQub3BhY2l0eSxlLm9wYWNpdHkpO3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gdC5yPWkoZSksdC5nPXIoZSksdC5iPW8oZSksdC5vcGFjaXR5PWEoZSksdCsiIn19cmV0dXJuIGkuZ2FtbWE9dCxpfSkoMSk7ZnVuY3Rpb24gbTEodCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciBuLGkscj1lLmxlbmd0aCxvPW5ldyBBcnJheShyKSxhPW5ldyBBcnJheShyKSxzPW5ldyBBcnJheShyKTtmb3Iobj0wO248cjsrK24paT1iUShlW25dKSxvW25dPWkucnx8MCxhW25dPWkuZ3x8MCxzW25dPWkuYnx8MDtyZXR1cm4gbz10KG8pLGE9dChhKSxzPXQocyksaS5vcGFjaXR5PTEsZnVuY3Rpb24odCl7cmV0dXJuIGkucj1vKHQpLGkuZz1hKHQpLGkuYj1zKHQpLGkrIiJ9fX12YXIgZzE9bTEoczEpLF8xPW0xKGwxKTtmdW5jdGlvbiB5MSh0LGUpe3ZhciBuLGk9ZT9lLmxlbmd0aDowLHI9dD9NYXRoLm1pbihpLHQubGVuZ3RoKTowLG89bmV3IEFycmF5KHIpLGE9bmV3IEFycmF5KGkpO2ZvcihuPTA7bjxyOysrbilvW25dPUUxKHRbbl0sZVtuXSk7Zm9yKDtuPGk7KytuKWFbbl09ZVtuXTtyZXR1cm4gZnVuY3Rpb24odCl7Zm9yKG49MDtuPHI7KytuKWFbbl09b1tuXSh0KTtyZXR1cm4gYX19ZnVuY3Rpb24gdjEodCxlKXt2YXIgbj1uZXcgRGF0ZTtyZXR1cm4gZS09dD0rdCxmdW5jdGlvbihpKXtyZXR1cm4gbi5zZXRUaW1lKHQrZSppKSxufX1mdW5jdGlvbiBiMSh0LGUpe3JldHVybiBlLT10PSt0LGZ1bmN0aW9uKG4pe3JldHVybiB0K2Uqbn19ZnVuY3Rpb24geDEodCxlKXt2YXIgbixpPXt9LHI9e307Zm9yKG4gaW4gbnVsbCE9PXQmJiJvYmplY3QiPT10eXBlb2YgdHx8KHQ9e30pLG51bGwhPT1lJiYib2JqZWN0Ij09dHlwZW9mIGV8fChlPXt9KSxlKW4gaW4gdD9pW25dPUUxKHRbbl0sZVtuXSk6cltuXT1lW25dO3JldHVybiBmdW5jdGlvbih0KXtmb3IobiBpbiBpKXJbbl09aVtuXSh0KTtyZXR1cm4gcn19dmFyIHcxPS9bLStdPyg/OlxkK1wuP1xkKnxcLj9cZCspKD86W2VFXVstK10/XGQrKT8vZyxTMT1uZXcgUmVnRXhwKHcxLnNvdXJjZSwiZyIpO2Z1bmN0aW9uIE0xKHQsZSl7dmFyIG4saSxyLG89dzEubGFzdEluZGV4PVMxLmxhc3RJbmRleD0wLGE9LTEscz1bXSxsPVtdO2Zvcih0Kz0iIixlKz0iIjsobj13MS5leGVjKHQpKSYmKGk9UzEuZXhlYyhlKSk7KShyPWkuaW5kZXgpPm8mJihyPWUuc2xpY2UobyxyKSxzW2FdP3NbYV0rPXI6c1srK2FdPXIpLChuPW5bMF0pPT09KGk9aVswXSk/c1thXT9zW2FdKz1pOnNbKythXT1pOihzWysrYV09bnVsbCxsLnB1c2goe2k6YSx4OmIxKG4saSl9KSksbz1TMS5sYXN0SW5kZXg7cmV0dXJuIG88ZS5sZW5ndGgmJihyPWUuc2xpY2Uobyksc1thXT9zW2FdKz1yOnNbKythXT1yKSxzLmxlbmd0aDwyP2xbMF0/KGZ1bmN0aW9uIGModCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiB0KGUpKyIifX0pKGxbMF0ueCk6KGZ1bmN0aW9uIHUodCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHR9fSkoZSk6KGU9bC5sZW5ndGgsZnVuY3Rpb24odCl7Zm9yKHZhciBuLGk9MDtpPGU7KytpKXNbKG49bFtpXSkuaV09bi54KHQpO3JldHVybiBzLmpvaW4oIiIpfSl9ZnVuY3Rpb24gRTEodCxlKXt2YXIgbixpPXR5cGVvZiBlO3JldHVybiBudWxsPT1lfHwiYm9vbGVhbiI9PT1pP2MxKGUpOigibnVtYmVyIj09PWk/YjE6InN0cmluZyI9PT1pPyhuPWdRKGUpKT8oZT1uLGYxKTpNMTplIGluc3RhbmNlb2YgZ1E/ZjE6ZSBpbnN0YW5jZW9mIERhdGU/djE6QXJyYXkuaXNBcnJheShlKT95MToiZnVuY3Rpb24iIT10eXBlb2YgZS52YWx1ZU9mJiYiZnVuY3Rpb24iIT10eXBlb2YgZS50b1N0cmluZ3x8aXNOYU4oZSk/eDE6YjEpKHQsZSl9dmFyIFQxLEMxLEExLGsxLEwxPTE4MC9NYXRoLlBJLFAxPXt0cmFuc2xhdGVYOjAsdHJhbnNsYXRlWTowLHJvdGF0ZTowLHNrZXdYOjAsc2NhbGVYOjEsc2NhbGVZOjF9O2Z1bmN0aW9uIE4xKHQsZSxuLGkscixvKXt2YXIgYSxzLGw7cmV0dXJuKGE9TWF0aC5zcXJ0KHQqdCtlKmUpKSYmKHQvPWEsZS89YSksKGw9dCpuK2UqaSkmJihuLT10KmwsaS09ZSpsKSwocz1NYXRoLnNxcnQobipuK2kqaSkpJiYobi89cyxpLz1zLGwvPXMpLHQqaTxlKm4mJih0PS10LGU9LWUsbD0tbCxhPS1hKSx7dHJhbnNsYXRlWDpyLHRyYW5zbGF0ZVk6byxyb3RhdGU6TWF0aC5hdGFuMihlLHQpKkwxLHNrZXdYOk1hdGguYXRhbihsKSpMMSxzY2FsZVg6YSxzY2FsZVk6c319ZnVuY3Rpb24gSTEodCxlLG4saSl7ZnVuY3Rpb24gcih0KXtyZXR1cm4gdC5sZW5ndGg/dC5wb3AoKSsiICI6IiJ9cmV0dXJuIGZ1bmN0aW9uKG8sYSl7dmFyIHM9W10sbD1bXTtyZXR1cm4gbz10KG8pLGE9dChhKSwoZnVuY3Rpb24gYyh0LGkscixvLGEscyl7aWYodCE9PXJ8fGkhPT1vKXt2YXIgbD1hLnB1c2goInRyYW5zbGF0ZSgiLG51bGwsZSxudWxsLG4pO3MucHVzaCh7aTpsLTQseDpiMSh0LHIpfSx7aTpsLTIseDpiMShpLG8pfSl9ZWxzZShyfHxvKSYmYS5wdXNoKCJ0cmFuc2xhdGUoIityK2UrbytuKX0pKG8udHJhbnNsYXRlWCxvLnRyYW5zbGF0ZVksYS50cmFuc2xhdGVYLGEudHJhbnNsYXRlWSxzLGwpLChmdW5jdGlvbiB1KHQsZSxuLG8pe3QhPT1lPyh0LWU+MTgwP2UrPTM2MDplLXQ+MTgwJiYodCs9MzYwKSxvLnB1c2goe2k6bi5wdXNoKHIobikrInJvdGF0ZSgiLG51bGwsaSktMix4OmIxKHQsZSl9KSk6ZSYmbi5wdXNoKHIobikrInJvdGF0ZSgiK2UraSl9KShvLnJvdGF0ZSxhLnJvdGF0ZSxzLGwpLChmdW5jdGlvbiBoKHQsZSxuLG8pe3QhPT1lP28ucHVzaCh7aTpuLnB1c2gocihuKSsic2tld1goIixudWxsLGkpLTIseDpiMSh0LGUpfSk6ZSYmbi5wdXNoKHIobikrInNrZXdYKCIrZStpKX0pKG8uc2tld1gsYS5za2V3WCxzLGwpLChmdW5jdGlvbiBkKHQsZSxuLGksbyxhKXtpZih0IT09bnx8ZSE9PWkpe3ZhciBzPW8ucHVzaChyKG8pKyJzY2FsZSgiLG51bGwsIiwiLG51bGwsIikiKTthLnB1c2goe2k6cy00LHg6YjEodCxuKX0se2k6cy0yLHg6YjEoZSxpKX0pfWVsc2UgMT09PW4mJjE9PT1pfHxvLnB1c2gocihvKSsic2NhbGUoIituKyIsIitpKyIpIil9KShvLnNjYWxlWCxvLnNjYWxlWSxhLnNjYWxlWCxhLnNjYWxlWSxzLGwpLG89YT1udWxsLGZ1bmN0aW9uKHQpe2Zvcih2YXIgZSxuPS0xLGk9bC5sZW5ndGg7KytuPGk7KXNbKGU9bFtuXSkuaV09ZS54KHQpO3JldHVybiBzLmpvaW4oIiIpfX19dmFyIFIxPUkxKChmdW5jdGlvbiBPMSh0KXtyZXR1cm4ibm9uZSI9PT10P1AxOihUMXx8KFQxPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIkRJViIpLEMxPWRvY3VtZW50LmRvY3VtZW50RWxlbWVudCxBMT1kb2N1bWVudC5kZWZhdWx0VmlldyksVDEuc3R5bGUudHJhbnNmb3JtPXQsdD1BMS5nZXRDb21wdXRlZFN0eWxlKEMxLmFwcGVuZENoaWxkKFQxKSxudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCJ0cmFuc2Zvcm0iKSxDMS5yZW1vdmVDaGlsZChUMSksTjEoKyh0PXQuc2xpY2UoNywtMSkuc3BsaXQoIiwiKSlbMF0sK3RbMV0sK3RbMl0sK3RbM10sK3RbNF0sK3RbNV0pKX0pLCJweCwgIiwicHgpIiwiZGVnKSIpLHoxPUkxKChmdW5jdGlvbiBEMSh0KXtyZXR1cm4gbnVsbD09dD9QMTooazF8fChrMT1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwiZyIpKSxrMS5zZXRBdHRyaWJ1dGUoInRyYW5zZm9ybSIsdCksKHQ9azEudHJhbnNmb3JtLmJhc2VWYWwuY29uc29saWRhdGUoKSk/TjEoKHQ9dC5tYXRyaXgpLmEsdC5iLHQuYyx0LmQsdC5lLHQuZik6UDEpfSksIiwgIiwiKSIsIikiKSxCMT1NYXRoLlNRUlQyO2Z1bmN0aW9uIEgxKHQpe3JldHVybigodD1NYXRoLmV4cCh0KSkrMS90KS8yfWZ1bmN0aW9uIEYxKHQpe3JldHVybiBmdW5jdGlvbihlLG4pe3ZhciBpPXQoKGU9Q1EoZSkpLmgsKG49Q1EobikpLmgpLHI9cDEoZS5zLG4ucyksbz1wMShlLmwsbi5sKSxhPXAxKGUub3BhY2l0eSxuLm9wYWNpdHkpO3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gZS5oPWkodCksZS5zPXIodCksZS5sPW8odCksZS5vcGFjaXR5PWEodCksZSsiIn19fXZhciBWMT1GMShoMSksVTE9RjEocDEpO2Z1bmN0aW9uIGoxKHQpe3JldHVybiBmdW5jdGlvbihlLG4pe3ZhciBpPXQoKGU9cVEoZSkpLmgsKG49cVEobikpLmgpLHI9cDEoZS5jLG4uYyksbz1wMShlLmwsbi5sKSxhPXAxKGUub3BhY2l0eSxuLm9wYWNpdHkpO3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gZS5oPWkodCksZS5jPXIodCksZS5sPW8odCksZS5vcGFjaXR5PWEodCksZSsiIn19fXZhciBHMT1qMShoMSksVzE9ajEocDEpO2Z1bmN0aW9uIHExKHQpe3JldHVybihmdW5jdGlvbiBlKG4pe2Z1bmN0aW9uIGkoZSxpKXt2YXIgcj10KChlPXIxKGUpKS5oLChpPXIxKGkpKS5oKSxvPXAxKGUucyxpLnMpLGE9cDEoZS5sLGkubCkscz1wMShlLm9wYWNpdHksaS5vcGFjaXR5KTtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIGUuaD1yKHQpLGUucz1vKHQpLGUubD1hKE1hdGgucG93KHQsbikpLGUub3BhY2l0eT1zKHQpLGUrIiJ9fXJldHVybiBuPStuLGkuZ2FtbWE9ZSxpfSkoMSl9dmFyIFkxPXExKGgxKSxYMT1xMShwMSk7dmFyICQxPU1hdGguUEksSzE9MiokMSxaMT0xZS02LEoxPUsxLVoxO2Z1bmN0aW9uIFExKCl7dGhpcy5feDA9dGhpcy5feTA9dGhpcy5feDE9dGhpcy5feTE9bnVsbCx0aGlzLl89IiJ9ZnVuY3Rpb24gdDAoKXtyZXR1cm4gbmV3IFExfWZ1bmN0aW9uIGUwKHQsZSxuKXtyZXR1cm4oZVswXS10WzBdKSooblsxXS10WzFdKS0oZVsxXS10WzFdKSooblswXS10WzBdKX1mdW5jdGlvbiBuMCh0LGUpe3JldHVybiB0WzBdLWVbMF18fHRbMV0tZVsxXX1mdW5jdGlvbiBpMCh0KXtmb3IodmFyIGU9dC5sZW5ndGgsbj1bMCwxXSxpPTIscj0yO3I8ZTsrK3Ipe2Zvcig7aT4xJiZlMCh0W25baS0yXV0sdFtuW2ktMV1dLHRbcl0pPD0wOyktLWk7bltpKytdPXJ9cmV0dXJuIG4uc2xpY2UoMCxpKX1mdW5jdGlvbiByMCh0LGUsbixpKXtpZihpc05hTihlKXx8aXNOYU4obikpcmV0dXJuIHQ7dmFyIHIsbyxhLHMsbCxjLHUsaCxkLHA9dC5fcm9vdCxmPXtkYXRhOml9LG09dC5feDAsZz10Ll95MCxfPXQuX3gxLHk9dC5feTE7aWYoIXApcmV0dXJuIHQuX3Jvb3Q9Zix0O2Zvcig7cC5sZW5ndGg7KWlmKChjPWU+PShvPShtK18pLzIpKT9tPW86Xz1vLCh1PW4+PShhPShnK3kpLzIpKT9nPWE6eT1hLHI9cCwhKHA9cFtoPXU8PDF8Y10pKXJldHVybiByW2hdPWYsdDtpZihzPSt0Ll94LmNhbGwobnVsbCxwLmRhdGEpLGw9K3QuX3kuY2FsbChudWxsLHAuZGF0YSksZT09PXMmJm49PT1sKXJldHVybiBmLm5leHQ9cCxyP3JbaF09Zjp0Ll9yb290PWYsdDtkb3tyPXI/cltoXT1uZXcgQXJyYXkoNCk6dC5fcm9vdD1uZXcgQXJyYXkoNCksKGM9ZT49KG89KG0rXykvMikpP209bzpfPW8sKHU9bj49KGE9KGcreSkvMikpP2c9YTp5PWF9d2hpbGUoKGg9dTw8MXxjKT09KGQ9KGw+PWEpPDwxfHM+PW8pKTtyZXR1cm4gcltkXT1wLHJbaF09Zix0fWZ1bmN0aW9uIG8wKHQsZSxuLGkscil7dGhpcy5ub2RlPXQsdGhpcy54MD1lLHRoaXMueTA9bix0aGlzLngxPWksdGhpcy55MT1yfWZ1bmN0aW9uIGEwKHQpe3JldHVybiB0WzBdfWZ1bmN0aW9uIHMwKHQpe3JldHVybiB0WzFdfWZ1bmN0aW9uIGwwKHQsZSxuKXt2YXIgaT1uZXcgYzAobnVsbD09ZT9hMDplLG51bGw9PW4/czA6bixOYU4sTmFOLE5hTixOYU4pO3JldHVybiBudWxsPT10P2k6aS5hZGRBbGwodCl9ZnVuY3Rpb24gYzAodCxlLG4saSxyLG8pe3RoaXMuX3g9dCx0aGlzLl95PWUsdGhpcy5feDA9bix0aGlzLl95MD1pLHRoaXMuX3gxPXIsdGhpcy5feTE9byx0aGlzLl9yb290PXZvaWQgMH1mdW5jdGlvbiB1MCh0KXtmb3IodmFyIGU9e2RhdGE6dC5kYXRhfSxuPWU7dD10Lm5leHQ7KW49bi5uZXh0PXtkYXRhOnQuZGF0YX07cmV0dXJuIGV9UTEucHJvdG90eXBlPXQwLnByb3RvdHlwZT17Y29uc3RydWN0b3I6UTEsbW92ZVRvOmZ1bmN0aW9uKHQsZSl7dGhpcy5fKz0iTSIrKHRoaXMuX3gwPXRoaXMuX3gxPSt0KSsiLCIrKHRoaXMuX3kwPXRoaXMuX3kxPStlKX0sY2xvc2VQYXRoOmZ1bmN0aW9uKCl7bnVsbCE9PXRoaXMuX3gxJiYodGhpcy5feDE9dGhpcy5feDAsdGhpcy5feTE9dGhpcy5feTAsdGhpcy5fKz0iWiIpfSxsaW5lVG86ZnVuY3Rpb24odCxlKXt0aGlzLl8rPSJMIisodGhpcy5feDE9K3QpKyIsIisodGhpcy5feTE9K2UpfSxxdWFkcmF0aWNDdXJ2ZVRvOmZ1bmN0aW9uKHQsZSxuLGkpe3RoaXMuXys9IlEiKyArdCsiLCIrICtlKyIsIisodGhpcy5feDE9K24pKyIsIisodGhpcy5feTE9K2kpfSxiZXppZXJDdXJ2ZVRvOmZ1bmN0aW9uKHQsZSxuLGkscixvKXt0aGlzLl8rPSJDIisgK3QrIiwiKyArZSsiLCIrICtuKyIsIisgK2krIiwiKyh0aGlzLl94MT0rcikrIiwiKyh0aGlzLl95MT0rbyl9LGFyY1RvOmZ1bmN0aW9uKHQsZSxuLGkscil7dmFyIG89dGhpcy5feDEsYT10aGlzLl95MSxzPShuPStuKS0odD0rdCksbD0oaT0raSktKGU9K2UpLGM9by10LHU9YS1lLGg9YypjK3UqdTtpZigocj0rcik8MCl0aHJvdyBuZXcgRXJyb3IoIm5lZ2F0aXZlIHJhZGl1czogIityKTtpZihudWxsPT09dGhpcy5feDEpdGhpcy5fKz0iTSIrKHRoaXMuX3gxPXQpKyIsIisodGhpcy5feTE9ZSk7ZWxzZSBpZihoPloxKWlmKE1hdGguYWJzKHUqcy1sKmMpPloxJiZyKXt2YXIgZD1uLW8scD1pLWEsZj1zKnMrbCpsLG09ZCpkK3AqcCxnPU1hdGguc3FydChmKSxfPU1hdGguc3FydChoKSx5PXIqTWF0aC50YW4oKCQxLU1hdGguYWNvcygoZitoLW0pLygyKmcqXykpKS8yKSx2PXkvXyxiPXkvZztNYXRoLmFicyh2LTEpPloxJiYodGhpcy5fKz0iTCIrKHQrdipjKSsiLCIrKGUrdip1KSksdGhpcy5fKz0iQSIrcisiLCIrcisiLDAsMCwiKyArKHUqZD5jKnApKyIsIisodGhpcy5feDE9dCtiKnMpKyIsIisodGhpcy5feTE9ZStiKmwpfWVsc2UgdGhpcy5fKz0iTCIrKHRoaXMuX3gxPXQpKyIsIisodGhpcy5feTE9ZSk7ZWxzZTt9LGFyYzpmdW5jdGlvbih0LGUsbixpLHIsbyl7dD0rdCxlPStlO3ZhciBhPShuPStuKSpNYXRoLmNvcyhpKSxzPW4qTWF0aC5zaW4oaSksbD10K2EsYz1lK3MsdT0xXm8saD1vP2ktcjpyLWk7aWYobjwwKXRocm93IG5ldyBFcnJvcigibmVnYXRpdmUgcmFkaXVzOiAiK24pO251bGw9PT10aGlzLl94MT90aGlzLl8rPSJNIitsKyIsIitjOihNYXRoLmFicyh0aGlzLl94MS1sKT5aMXx8TWF0aC5hYnModGhpcy5feTEtYyk+WjEpJiYodGhpcy5fKz0iTCIrbCsiLCIrYyksbiYmKGg8MCYmKGg9aCVLMStLMSksaD5KMT90aGlzLl8rPSJBIituKyIsIituKyIsMCwxLCIrdSsiLCIrKHQtYSkrIiwiKyhlLXMpKyJBIituKyIsIituKyIsMCwxLCIrdSsiLCIrKHRoaXMuX3gxPWwpKyIsIisodGhpcy5feTE9Yyk6aD5aMSYmKHRoaXMuXys9IkEiK24rIiwiK24rIiwwLCIrICsoaD49JDEpKyIsIit1KyIsIisodGhpcy5feDE9dCtuKk1hdGguY29zKHIpKSsiLCIrKHRoaXMuX3kxPWUrbipNYXRoLnNpbihyKSkpKX0scmVjdDpmdW5jdGlvbih0LGUsbixpKXt0aGlzLl8rPSJNIisodGhpcy5feDA9dGhpcy5feDE9K3QpKyIsIisodGhpcy5feTA9dGhpcy5feTE9K2UpKyJoIisgK24rInYiKyAraSsiaCIrLW4rIloifSx0b1N0cmluZzpmdW5jdGlvbigpe3JldHVybiB0aGlzLl99fTt2YXIgaDA9bDAucHJvdG90eXBlPWMwLnByb3RvdHlwZTtoMC5jb3B5PWZ1bmN0aW9uKCl7dmFyIHQsZSxuPW5ldyBjMCh0aGlzLl94LHRoaXMuX3ksdGhpcy5feDAsdGhpcy5feTAsdGhpcy5feDEsdGhpcy5feTEpLGk9dGhpcy5fcm9vdDtpZighaSlyZXR1cm4gbjtpZighaS5sZW5ndGgpcmV0dXJuIG4uX3Jvb3Q9dTAoaSksbjtmb3IodD1be3NvdXJjZTppLHRhcmdldDpuLl9yb290PW5ldyBBcnJheSg0KX1dO2k9dC5wb3AoKTspZm9yKHZhciByPTA7cjw0OysrcikoZT1pLnNvdXJjZVtyXSkmJihlLmxlbmd0aD90LnB1c2goe3NvdXJjZTplLHRhcmdldDppLnRhcmdldFtyXT1uZXcgQXJyYXkoNCl9KTppLnRhcmdldFtyXT11MChlKSk7cmV0dXJuIG59LGgwLmFkZD1mdW5jdGlvbiBkMCh0KXt2YXIgZT0rdGhpcy5feC5jYWxsKG51bGwsdCksbj0rdGhpcy5feS5jYWxsKG51bGwsdCk7cmV0dXJuIHIwKHRoaXMuY292ZXIoZSxuKSxlLG4sdCl9LGgwLmFkZEFsbD1mdW5jdGlvbiBwMCh0KXt2YXIgZSxuLGkscixvPXQubGVuZ3RoLGE9bmV3IEFycmF5KG8pLHM9bmV3IEFycmF5KG8pLGw9MS8wLGM9MS8wLHU9LTEvMCxoPS0xLzA7Zm9yKG49MDtuPG87KytuKWlzTmFOKGk9K3RoaXMuX3guY2FsbChudWxsLGU9dFtuXSkpfHxpc05hTihyPSt0aGlzLl95LmNhbGwobnVsbCxlKSl8fChhW25dPWksc1tuXT1yLGk8bCYmKGw9aSksaT51JiYodT1pKSxyPGMmJihjPXIpLHI+aCYmKGg9cikpO2Zvcih1PGwmJihsPXRoaXMuX3gwLHU9dGhpcy5feDEpLGg8YyYmKGM9dGhpcy5feTAsaD10aGlzLl95MSksdGhpcy5jb3ZlcihsLGMpLmNvdmVyKHUsaCksbj0wO248bzsrK24pcjAodGhpcyxhW25dLHNbbl0sdFtuXSk7cmV0dXJuIHRoaXN9LGgwLmNvdmVyPWZ1bmN0aW9uIGYwKHQsZSl7aWYoaXNOYU4odD0rdCl8fGlzTmFOKGU9K2UpKXJldHVybiB0aGlzO3ZhciBuPXRoaXMuX3gwLGk9dGhpcy5feTAscj10aGlzLl94MSxvPXRoaXMuX3kxO2lmKGlzTmFOKG4pKXI9KG49TWF0aC5mbG9vcih0KSkrMSxvPShpPU1hdGguZmxvb3IoZSkpKzE7ZWxzZXtpZighKG4+dHx8dD5yfHxpPmV8fGU+bykpcmV0dXJuIHRoaXM7dmFyIGEscyxsPXItbixjPXRoaXMuX3Jvb3Q7c3dpdGNoKHM9KGU8KGkrbykvMik8PDF8dDwobityKS8yKXtjYXNlIDA6ZG97KGE9bmV3IEFycmF5KDQpKVtzXT1jLGM9YX13aGlsZShvPWkrKGwqPTIpLHQ+KHI9bitsKXx8ZT5vKTticmVhaztjYXNlIDE6ZG97KGE9bmV3IEFycmF5KDQpKVtzXT1jLGM9YX13aGlsZShvPWkrKGwqPTIpLChuPXItbCk+dHx8ZT5vKTticmVhaztjYXNlIDI6ZG97KGE9bmV3IEFycmF5KDQpKVtzXT1jLGM9YX13aGlsZShpPW8tKGwqPTIpLHQ+KHI9bitsKXx8aT5lKTticmVhaztjYXNlIDM6ZG97KGE9bmV3IEFycmF5KDQpKVtzXT1jLGM9YX13aGlsZShpPW8tKGwqPTIpLChuPXItbCk+dHx8aT5lKX10aGlzLl9yb290JiZ0aGlzLl9yb290Lmxlbmd0aCYmKHRoaXMuX3Jvb3Q9Yyl9cmV0dXJuIHRoaXMuX3gwPW4sdGhpcy5feTA9aSx0aGlzLl94MT1yLHRoaXMuX3kxPW8sdGhpc30saDAuZGF0YT1mdW5jdGlvbiBtMCgpe3ZhciB0PVtdO3JldHVybiB0aGlzLnZpc2l0KChmdW5jdGlvbihlKXtpZighZS5sZW5ndGgpZG97dC5wdXNoKGUuZGF0YSl9d2hpbGUoZT1lLm5leHQpfSkpLHR9LGgwLmV4dGVudD1mdW5jdGlvbiBnMCh0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90aGlzLmNvdmVyKCt0WzBdWzBdLCt0WzBdWzFdKS5jb3ZlcigrdFsxXVswXSwrdFsxXVsxXSk6aXNOYU4odGhpcy5feDApP3ZvaWQgMDpbW3RoaXMuX3gwLHRoaXMuX3kwXSxbdGhpcy5feDEsdGhpcy5feTFdXX0saDAuZmluZD1mdW5jdGlvbiBfMCh0LGUsbil7dmFyIGkscixvLGEscyxsLGMsdT10aGlzLl94MCxoPXRoaXMuX3kwLGQ9dGhpcy5feDEscD10aGlzLl95MSxmPVtdLG09dGhpcy5fcm9vdDtmb3IobSYmZi5wdXNoKG5ldyBvMChtLHUsaCxkLHApKSxudWxsPT1uP249MS8wOih1PXQtbixoPWUtbixkPXQrbixwPWUrbixuKj1uKTtsPWYucG9wKCk7KWlmKCEoIShtPWwubm9kZSl8fChyPWwueDApPmR8fChvPWwueTApPnB8fChhPWwueDEpPHV8fChzPWwueTEpPGgpKWlmKG0ubGVuZ3RoKXt2YXIgZz0ocithKS8yLF89KG8rcykvMjtmLnB1c2gobmV3IG8wKG1bM10sZyxfLGEscyksbmV3IG8wKG1bMl0scixfLGcscyksbmV3IG8wKG1bMV0sZyxvLGEsXyksbmV3IG8wKG1bMF0scixvLGcsXykpLChjPShlPj1fKTw8MXx0Pj1nKSYmKGw9ZltmLmxlbmd0aC0xXSxmW2YubGVuZ3RoLTFdPWZbZi5sZW5ndGgtMS1jXSxmW2YubGVuZ3RoLTEtY109bCl9ZWxzZXt2YXIgeT10LSt0aGlzLl94LmNhbGwobnVsbCxtLmRhdGEpLHY9ZS0rdGhpcy5feS5jYWxsKG51bGwsbS5kYXRhKSxiPXkqeSt2KnY7aWYoYjxuKXt2YXIgeD1NYXRoLnNxcnQobj1iKTt1PXQteCxoPWUteCxkPXQreCxwPWUreCxpPW0uZGF0YX19cmV0dXJuIGl9LGgwLnJlbW92ZT1mdW5jdGlvbiB5MCh0KXtpZihpc05hTihvPSt0aGlzLl94LmNhbGwobnVsbCx0KSl8fGlzTmFOKGE9K3RoaXMuX3kuY2FsbChudWxsLHQpKSlyZXR1cm4gdGhpczt2YXIgZSxuLGkscixvLGEscyxsLGMsdSxoLGQscD10aGlzLl9yb290LGY9dGhpcy5feDAsbT10aGlzLl95MCxnPXRoaXMuX3gxLF89dGhpcy5feTE7aWYoIXApcmV0dXJuIHRoaXM7aWYocC5sZW5ndGgpZm9yKDs7KXtpZigoYz1vPj0ocz0oZitnKS8yKSk/Zj1zOmc9cywodT1hPj0obD0obStfKS8yKSk/bT1sOl89bCxlPXAsIShwPXBbaD11PDwxfGNdKSlyZXR1cm4gdGhpcztpZighcC5sZW5ndGgpYnJlYWs7KGVbaCsxJjNdfHxlW2grMiYzXXx8ZVtoKzMmM10pJiYobj1lLGQ9aCl9Zm9yKDtwLmRhdGEhPT10OylpZihpPXAsIShwPXAubmV4dCkpcmV0dXJuIHRoaXM7cmV0dXJuKHI9cC5uZXh0KSYmZGVsZXRlIHAubmV4dCxpPyhyP2kubmV4dD1yOmRlbGV0ZSBpLm5leHQsdGhpcyk6ZT8ocj9lW2hdPXI6ZGVsZXRlIGVbaF0sKHA9ZVswXXx8ZVsxXXx8ZVsyXXx8ZVszXSkmJnA9PT0oZVszXXx8ZVsyXXx8ZVsxXXx8ZVswXSkmJiFwLmxlbmd0aCYmKG4/bltkXT1wOnRoaXMuX3Jvb3Q9cCksdGhpcyk6KHRoaXMuX3Jvb3Q9cix0aGlzKX0saDAucmVtb3ZlQWxsPWZ1bmN0aW9uIHYwKHQpe2Zvcih2YXIgZT0wLG49dC5sZW5ndGg7ZTxuOysrZSl0aGlzLnJlbW92ZSh0W2VdKTtyZXR1cm4gdGhpc30saDAucm9vdD1mdW5jdGlvbiBiMCgpe3JldHVybiB0aGlzLl9yb290fSxoMC5zaXplPWZ1bmN0aW9uIHgwKCl7dmFyIHQ9MDtyZXR1cm4gdGhpcy52aXNpdCgoZnVuY3Rpb24oZSl7aWYoIWUubGVuZ3RoKWRveysrdH13aGlsZShlPWUubmV4dCl9KSksdH0saDAudmlzaXQ9ZnVuY3Rpb24gdzAodCl7dmFyIGUsbixpLHIsbyxhLHM9W10sbD10aGlzLl9yb290O2ZvcihsJiZzLnB1c2gobmV3IG8wKGwsdGhpcy5feDAsdGhpcy5feTAsdGhpcy5feDEsdGhpcy5feTEpKTtlPXMucG9wKCk7KWlmKCF0KGw9ZS5ub2RlLGk9ZS54MCxyPWUueTAsbz1lLngxLGE9ZS55MSkmJmwubGVuZ3RoKXt2YXIgYz0oaStvKS8yLHU9KHIrYSkvMjsobj1sWzNdKSYmcy5wdXNoKG5ldyBvMChuLGMsdSxvLGEpKSwobj1sWzJdKSYmcy5wdXNoKG5ldyBvMChuLGksdSxjLGEpKSwobj1sWzFdKSYmcy5wdXNoKG5ldyBvMChuLGMscixvLHUpKSwobj1sWzBdKSYmcy5wdXNoKG5ldyBvMChuLGkscixjLHUpKX1yZXR1cm4gdGhpc30saDAudmlzaXRBZnRlcj1mdW5jdGlvbiBTMCh0KXt2YXIgZSxuPVtdLGk9W107Zm9yKHRoaXMuX3Jvb3QmJm4ucHVzaChuZXcgbzAodGhpcy5fcm9vdCx0aGlzLl94MCx0aGlzLl95MCx0aGlzLl94MSx0aGlzLl95MSkpO2U9bi5wb3AoKTspe3ZhciByPWUubm9kZTtpZihyLmxlbmd0aCl7dmFyIG8sYT1lLngwLHM9ZS55MCxsPWUueDEsYz1lLnkxLHU9KGErbCkvMixoPShzK2MpLzI7KG89clswXSkmJm4ucHVzaChuZXcgbzAobyxhLHMsdSxoKSksKG89clsxXSkmJm4ucHVzaChuZXcgbzAobyx1LHMsbCxoKSksKG89clsyXSkmJm4ucHVzaChuZXcgbzAobyxhLGgsdSxjKSksKG89clszXSkmJm4ucHVzaChuZXcgbzAobyx1LGgsbCxjKSl9aS5wdXNoKGUpfWZvcig7ZT1pLnBvcCgpOyl0KGUubm9kZSxlLngwLGUueTAsZS54MSxlLnkxKTtyZXR1cm4gdGhpc30saDAueD1mdW5jdGlvbiBNMCh0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odGhpcy5feD10LHRoaXMpOnRoaXMuX3h9LGgwLnk9ZnVuY3Rpb24gRTAodCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHRoaXMuX3k9dCx0aGlzKTp0aGlzLl95fTt2YXIgVDA9W10uc2xpY2UsQzA9e307ZnVuY3Rpb24gQTAodCl7dGhpcy5fc2l6ZT10LHRoaXMuX2NhbGw9dGhpcy5fZXJyb3I9bnVsbCx0aGlzLl90YXNrcz1bXSx0aGlzLl9kYXRhPVtdLHRoaXMuX3dhaXRpbmc9dGhpcy5fYWN0aXZlPXRoaXMuX2VuZGVkPXRoaXMuX3N0YXJ0PTB9ZnVuY3Rpb24gazAodCl7aWYoIXQuX3N0YXJ0KXRyeXshKGZ1bmN0aW9uIGUodCl7Zm9yKDt0Ll9zdGFydD10Ll93YWl0aW5nJiZ0Ll9hY3RpdmU8dC5fc2l6ZTspe3ZhciBlPXQuX2VuZGVkK3QuX2FjdGl2ZSxuPXQuX3Rhc2tzW2VdLGk9bi5sZW5ndGgtMSxyPW5baV07bltpXT1MMCh0LGUpLC0tdC5fd2FpdGluZywrK3QuX2FjdGl2ZSxuPXIuYXBwbHkobnVsbCxuKSx0Ll90YXNrc1tlXSYmKHQuX3Rhc2tzW2VdPW58fEMwKX19KSh0KX1jYXRjaChlKXtpZih0Ll90YXNrc1t0Ll9lbmRlZCt0Ll9hY3RpdmUtMV0pUDAodCxlKTtlbHNlIGlmKCF0Ll9kYXRhKXRocm93IGV9fWZ1bmN0aW9uIEwwKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKG4saSl7dC5fdGFza3NbZV0mJigtLXQuX2FjdGl2ZSwrK3QuX2VuZGVkLHQuX3Rhc2tzW2VdPW51bGwsbnVsbD09dC5fZXJyb3ImJihudWxsIT1uP1AwKHQsbik6KHQuX2RhdGFbZV09aSx0Ll93YWl0aW5nP2swKHQpOk4wKHQpKSkpfX1mdW5jdGlvbiBQMCh0LGUpe3ZhciBuLGk9dC5fdGFza3MubGVuZ3RoO2Zvcih0Ll9lcnJvcj1lLHQuX2RhdGE9dm9pZCAwLHQuX3dhaXRpbmc9TmFOOy0taT49MDspaWYoKG49dC5fdGFza3NbaV0pJiYodC5fdGFza3NbaV09bnVsbCxuLmFib3J0KSl0cnl7bi5hYm9ydCgpfWNhdGNoKGUpe310Ll9hY3RpdmU9TmFOLE4wKHQpfWZ1bmN0aW9uIE4wKHQpe2lmKCF0Ll9hY3RpdmUmJnQuX2NhbGwpe3ZhciBlPXQuX2RhdGE7dC5fZGF0YT12b2lkIDAsdC5fY2FsbCh0Ll9lcnJvcixlKX19ZnVuY3Rpb24gSTAodCl7aWYobnVsbD09dCl0PTEvMDtlbHNlIGlmKCEoKHQ9K3QpPj0xKSl0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgY29uY3VycmVuY3kiKTtyZXR1cm4gbmV3IEEwKHQpfWZ1bmN0aW9uIFIwKCl7cmV0dXJuIE1hdGgucmFuZG9tKCl9QTAucHJvdG90eXBlPUkwLnByb3RvdHlwZT17Y29uc3RydWN0b3I6QTAsZGVmZXI6ZnVuY3Rpb24odCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQpdGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIGNhbGxiYWNrIik7aWYodGhpcy5fY2FsbCl0aHJvdyBuZXcgRXJyb3IoImRlZmVyIGFmdGVyIGF3YWl0Iik7aWYobnVsbCE9dGhpcy5fZXJyb3IpcmV0dXJuIHRoaXM7dmFyIGU9VDAuY2FsbChhcmd1bWVudHMsMSk7cmV0dXJuIGUucHVzaCh0KSwrK3RoaXMuX3dhaXRpbmcsdGhpcy5fdGFza3MucHVzaChlKSxrMCh0aGlzKSx0aGlzfSxhYm9ydDpmdW5jdGlvbigpe3JldHVybiBudWxsPT10aGlzLl9lcnJvciYmUDAodGhpcyxuZXcgRXJyb3IoImFib3J0IikpLHRoaXN9LGF3YWl0OmZ1bmN0aW9uKHQpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0KXRocm93IG5ldyBFcnJvcigiaW52YWxpZCBjYWxsYmFjayIpO2lmKHRoaXMuX2NhbGwpdGhyb3cgbmV3IEVycm9yKCJtdWx0aXBsZSBhd2FpdCIpO3JldHVybiB0aGlzLl9jYWxsPWZ1bmN0aW9uKGUsbil7dC5hcHBseShudWxsLFtlXS5jb25jYXQobikpfSxOMCh0aGlzKSx0aGlzfSxhd2FpdEFsbDpmdW5jdGlvbih0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCl0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgY2FsbGJhY2siKTtpZih0aGlzLl9jYWxsKXRocm93IG5ldyBFcnJvcigibXVsdGlwbGUgYXdhaXQiKTtyZXR1cm4gdGhpcy5fY2FsbD10LE4wKHRoaXMpLHRoaXN9fTt2YXIgTzA9KGZ1bmN0aW9uIHQoZSl7ZnVuY3Rpb24gbih0LG4pe3JldHVybiB0PW51bGw9PXQ/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/KSVcXHMqIixBMj0vXiMoWzAtOWEtZl17Myw4fSkkLyxrMj1uZXcgUmVnRXhwKCJecmdiXFwoIitbRTIsRTIsRTJdKyJcXCkkIiksTDI9bmV3IFJlZ0V4cCgiXnJnYlxcKCIrW0MyLEMyLEMyXSsiXFwpJCIpLFAyPW5ldyBSZWdFeHAoIl5yZ2JhXFwoIitbRTIsRTIsRTIsVDJdKyJcXCkkIiksTjI9bmV3IFJlZ0V4cCgiXnJnYmFcXCgiK1tDMixDMixDMixUMl0rIlxcKSQiKSxJMj1uZXcgUmVnRXhwKCJeaHNsXFwoIitbVDIsQzIsQzJdKyJcXCkkIiksUjI9bmV3IFJlZ0V4cCgiXmhzbGFcXCgiK1tUMixDMixDMixUMl0rIlxcKSQiKSxPMj17YWxpY2VibHVlOjE1NzkyMzgzLGFudGlxdWV3aGl0ZToxNjQ0NDM3NSxhcXVhOjY1NTM1LGFxdWFtYXJpbmU6ODM4ODU2NCxhenVyZToxNTc5NDE3NSxiZWlnZToxNjExOTI2MCxiaXNxdWU6MTY3NzAyNDQsYmxhY2s6MCxibGFuY2hlZGFsbW9uZDoxNjc3MjA0NSxibHVlOjI1NSxibHVldmlvbGV0OjkwNTUyMDIsYnJvd246MTA4MjQyMzQsYnVybHl3b29kOjE0NTk2MjMxLGNhZGV0Ymx1ZTo2MjY2NTI4LGNoYXJ0cmV1c2U6ODM4ODM1MixjaG9jb2xhdGU6MTM3ODk0NzAsY29yYWw6MTY3NDQyNzIsY29ybmZsb3dlcmJsdWU6NjU5MTk4MSxjb3Juc2lsazoxNjc3NTM4OCxjcmltc29uOjE0NDIzMTAwLGN5YW46NjU1MzUsZGFya2JsdWU6MTM5LGRhcmtjeWFuOjM1NzIzLGRhcmtnb2xkZW5yb2Q6MTIwOTI5MzksZGFya2dyYXk6MTExMTkwMTcsZGFya2dyZWVuOjI1NjAwLGRhcmtncmV5OjExMTE5MDE3LGRhcmtraGFraToxMjQzMzI1OSxkYXJrbWFnZW50YTo5MTA5NjQzLGRhcmtvbGl2ZWdyZWVuOjU1OTc5OTksZGFya29yYW5nZToxNjc0NzUyMCxkYXJrb3JjaGlkOjEwMDQwMDEyLGRhcmtyZWQ6OTEwOTUwNCxkYXJrc2FsbW9uOjE1MzA4NDEwLGRhcmtzZWFncmVlbjo5NDE5OTE5LGRhcmtzbGF0ZWJsdWU6NDczNDM0NyxkYXJrc2xhdGVncmF5OjMxMDA0OTUsZGFya3NsYXRlZ3JleTozMTAwNDk1LGRhcmt0dXJxdW9pc2U6NTI5NDUsZGFya3Zpb2xldDo5Njk5NTM5LGRlZXBwaW5rOjE2NzE2OTQ3LGRlZXBza3libHVlOjQ5MTUxLGRpbWdyYXk6NjkwODI2NSxkaW1ncmV5OjY5MDgyNjUsZG9kZ2VyYmx1ZToyMDAzMTk5LGZpcmVicmljazoxMTY3NDE0NixmbG9yYWx3aGl0ZToxNjc3NTkyMCxmb3Jlc3RncmVlbjoyMjYzODQyLGZ1Y2hzaWE6MTY3MTE5MzUsZ2FpbnNib3JvOjE0NDc0NDYwLGdob3N0d2hpdGU6MTYzMTY2NzEsZ29sZDoxNjc2NjcyMCxnb2xkZW5yb2Q6MTQzMjkxMjAsZ3JheTo4NDIxNTA0LGdyZWVuOjMyNzY4LGdyZWVueWVsbG93OjExNDAzMDU1LGdyZXk6ODQyMTUwNCxob25leWRldzoxNTc5NDE2MCxob3RwaW5rOjE2NzM4NzQwLGluZGlhbnJlZDoxMzQ1ODUyNCxpbmRpZ286NDkxNTMzMCxpdm9yeToxNjc3NzIwMCxraGFraToxNTc4NzY2MCxsYXZlbmRlcjoxNTEzMjQxMCxsYXZlbmRlcmJsdXNoOjE2NzczMzY1LGxhd25ncmVlbjo4MTkwOTc2LGxlbW9uY2hpZmZvbjoxNjc3NTg4NSxsaWdodGJsdWU6MTEzOTMyNTQsbGlnaHRjb3JhbDoxNTc2MTUzNixsaWdodGN5YW46MTQ3NDU1OTksbGlnaHRnb2xkZW5yb2R5ZWxsb3c6MTY0NDgyMTAsbGlnaHRncmF5OjEzODgyMzIzLGxpZ2h0Z3JlZW46OTQ5ODI1NixsaWdodGdyZXk6MTM4ODIzMjMsbGlnaHRwaW5rOjE2NzU4NDY1LGxpZ2h0c2FsbW9uOjE2NzUyNzYyLGxpZ2h0c2VhZ3JlZW46MjE0Mjg5MCxsaWdodHNreWJsdWU6ODkwMDM0NixsaWdodHNsYXRlZ3JheTo3ODMzNzUzLGxpZ2h0c2xhdGVncmV5Ojc4MzM3NTMsbGlnaHRzdGVlbGJsdWU6MTE1ODQ3MzQsbGlnaHR5ZWxsb3c6MTY3NzcxODQsbGltZTo2NTI4MCxsaW1lZ3JlZW46MzMyOTMzMCxsaW5lbjoxNjQ0NTY3MCxtYWdlbnRhOjE2NzExOTM1LG1hcm9vbjo4Mzg4NjA4LG1lZGl1bWFxdWFtYXJpbmU6NjczNzMyMixtZWRpdW1ibHVlOjIwNSxtZWRpdW1vcmNoaWQ6MTIyMTE2NjcsbWVkaXVtcHVycGxlOjk2NjI2ODMsbWVkaXVtc2VhZ3JlZW46Mzk3ODA5NyxtZWRpdW1zbGF0ZWJsdWU6ODA4Nzc5MCxtZWRpdW1zcHJpbmdncmVlbjo2NDE1NCxtZWRpdW10dXJxdW9pc2U6NDc3MjMwMCxtZWRpdW12aW9sZXRyZWQ6MTMwNDcxNzMsbWlkbmlnaHRibHVlOjE2NDQ5MTIsbWludGNyZWFtOjE2MTIxODUwLG1pc3R5cm9zZToxNjc3MDI3Myxtb2NjYXNpbjoxNjc3MDIyOSxuYXZham93aGl0ZToxNjc2ODY4NSxuYXZ5OjEyOCxvbGRsYWNlOjE2NjQzNTU4LG9saXZlOjg0MjEzNzYsb2xpdmVkcmFiOjcwNDg3Mzksb3JhbmdlOjE2NzUzOTIwLG9yYW5nZXJlZDoxNjcyOTM0NCxvcmNoaWQ6MTQzMTU3MzQscGFsZWdvbGRlbnJvZDoxNTY1NzEzMCxwYWxlZ3JlZW46MTAwMjU4ODAscGFsZXR1cnF1b2lzZToxMTUyOTk2NixwYWxldmlvbGV0cmVkOjE0MzgxMjAzLHBhcGF5YXdoaXA6MTY3NzMwNzcscGVhY2hwdWZmOjE2NzY3NjczLHBlcnU6MTM0Njg5OTEscGluazoxNjc2MTAzNSxwbHVtOjE0NTI0NjM3LHBvd2RlcmJsdWU6MTE1OTE5MTAscHVycGxlOjgzODg3MzYscmViZWNjYXB1cnBsZTo2Njk3ODgxLHJlZDoxNjcxMTY4MCxyb3N5YnJvd246MTIzNTc1MTkscm95YWxibHVlOjQyODY5NDUsc2FkZGxlYnJvd246OTEyNzE4NyxzYWxtb246MTY0MTY4ODIsc2FuZHlicm93bjoxNjAzMjg2NCxzZWFncmVlbjozMDUwMzI3LHNlYXNoZWxsOjE2Nzc0NjM4LHNpZW5uYToxMDUwNjc5NyxzaWx2ZXI6MTI2MzIyNTYsc2t5Ymx1ZTo4OTAwMzMxLHNsYXRlYmx1ZTo2OTcwMDYxLHNsYXRlZ3JheTo3MzcyOTQ0LHNsYXRlZ3JleTo3MzcyOTQ0LHNub3c6MTY3NzU5MzAsc3ByaW5nZ3JlZW46NjU0MDcsc3RlZWxibHVlOjQ2MjA5ODAsdGFuOjEzODA4NzgwLHRlYWw6MzI4OTYsdGhpc3RsZToxNDIwNDg4OCx0b21hdG86MTY3MzcwOTUsdHVycXVvaXNlOjQyNTE4NTYsdmlvbGV0OjE1NjMxMDg2LHdoZWF0OjE2MTEzMzMxLHdoaXRlOjE2Nzc3MjE1LHdoaXRlc21va2U6MTYxMTkyODUseWVsbG93OjE2Nzc2OTYwLHllbGxvd2dyZWVuOjEwMTQ1MDc0fTtmdW5jdGlvbiB6Migpe3JldHVybiB0aGlzLnJnYigpLmZvcm1hdEhleCgpfWZ1bmN0aW9uIEQyKCl7cmV0dXJuIHRoaXMucmdiKCkuZm9ybWF0UmdiKCl9ZnVuY3Rpb24gQjIodCl7dmFyIGUsbjtyZXR1cm4gdD0odCsiIikudHJpbSgpLnRvTG93ZXJDYXNlKCksKGU9QTIuZXhlYyh0KSk/KG49ZVsxXS5sZW5ndGgsZT1wYXJzZUludChlWzFdLDE2KSw2PT09bj9IMihlKTozPT09bj9uZXcgajIoZT4+OCYxNXxlPj40JjI0MCxlPj40JjE1fDI0MCZlLCgxNSZlKTw8NHwxNSZlLDEpOjg9PT1uP0YyKGU+PjI0JjI1NSxlPj4xNiYyNTUsZT4+OCYyNTUsKDI1NSZlKS8yNTUpOjQ9PT1uP0YyKGU+PjEyJjE1fGU+PjgmMjQwLGU+PjgmMTV8ZT4+NCYyNDAsZT4+NCYxNXwyNDAmZSwoKDE1JmUpPDw0fDE1JmUpLzI1NSk6bnVsbCk6KGU9azIuZXhlYyh0KSk/bmV3IGoyKGVbMV0sZVsyXSxlWzNdLDEpOihlPUwyLmV4ZWModCkpP25ldyBqMigyNTUqZVsxXS8xMDAsMjU1KmVbMl0vMTAwLDI1NSplWzNdLzEwMCwxKTooZT1QMi5leGVjKHQpKT9GMihlWzFdLGVbMl0sZVszXSxlWzRdKTooZT1OMi5leGVjKHQpKT9GMigyNTUqZVsxXS8xMDAsMjU1KmVbMl0vMTAwLDI1NSplWzNdLzEwMCxlWzRdKTooZT1JMi5leGVjKHQpKT9ZMihlWzFdLGVbMl0vMTAwLGVbM10vMTAwLDEpOihlPVIyLmV4ZWModCkpP1kyKGVbMV0sZVsyXS8xMDAsZVszXS8xMDAsZVs0XSk6TzIuaGFzT3duUHJvcGVydHkodCk/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/cDUodCxuPjE4MHx8bjwtMTgwP24tMzYwKk1hdGgucm91bmQobi8zNjApOm4pOmQ1KGlzTmFOKHQpP2U6dCl9KSk7dmFyIGs1PUM1KG01KTtmdW5jdGlvbiBMNSh0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19ZnVuY3Rpb24gUDUodCl7cmV0dXJuK3R9dmFyIE41PVswLDFdO2Z1bmN0aW9uIEk1KHQsZSl7cmV0dXJuKGUtPXQ9K3QpP2Z1bmN0aW9uKG4pe3JldHVybihuLXQpL2V9Okw1KGUpfWZ1bmN0aW9uIFI1KHQsZSxuLGkpe3ZhciByPXRbMF0sbz10WzFdLGE9ZVswXSxzPWVbMV07cmV0dXJuIG88cj8ocj1uKG8sciksYT1pKHMsYSkpOihyPW4ocixvKSxhPWkoYSxzKSksZnVuY3Rpb24odCl7cmV0dXJuIGEocih0KSl9fWZ1bmN0aW9uIE81KHQsZSxuLGkpe3ZhciByPU1hdGgubWluKHQubGVuZ3RoLGUubGVuZ3RoKS0xLG89bmV3IEFycmF5KHIpLGE9bmV3IEFycmF5KHIpLHM9LTE7Zm9yKHRbcl08dFswXSYmKHQ9dC5zbGljZSgpLnJldmVyc2UoKSxlPWUuc2xpY2UoKS5yZXZlcnNlKCkpOysrczxyOylvW3NdPW4odFtzXSx0W3MrMV0pLGFbc109aShlW3NdLGVbcysxXSk7cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciBuPVEwKHQsZSwxLHIpLTE7cmV0dXJuIGFbbl0ob1tuXShlKSl9fWZ1bmN0aW9uIHo1KHQsZSl7cmV0dXJuIGUuZG9tYWluKHQuZG9tYWluKCkpLnJhbmdlKHQucmFuZ2UoKSkuaW50ZXJwb2xhdGUodC5pbnRlcnBvbGF0ZSgpKS5jbGFtcCh0LmNsYW1wKCkpfWZ1bmN0aW9uIEQ1KHQsZSl7dmFyIG4saSxyLG89TjUsYT1ONSxzPUU1LGw9ITE7ZnVuY3Rpb24gYygpe3JldHVybiBuPU1hdGgubWluKG8ubGVuZ3RoLGEubGVuZ3RoKT4yP081OlI1LGk9cj1udWxsLHV9ZnVuY3Rpb24gdShlKXtyZXR1cm4oaXx8KGk9bihvLGEsbD8oZnVuY3Rpb24gcih0KXtyZXR1cm4gZnVuY3Rpb24oZSxuKXt2YXIgaT10KGU9K2Usbj0rbik7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiB0PD1lPzA6dD49bj8xOmkodCl9fX0pKHQpOnQscykpKSgrZSl9cmV0dXJuIHUuaW52ZXJ0PWZ1bmN0aW9uKHQpe3JldHVybihyfHwocj1uKGEsbyxJNSxsPyhmdW5jdGlvbiBpKHQpe3JldHVybiBmdW5jdGlvbihlLG4pe3ZhciBpPXQoZT0rZSxuPStuKTtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIHQ8PTA/ZTp0Pj0xP246aSh0KX19fSkoZSk6ZSkpKSgrdCl9LHUuZG9tYWluPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPWYyLmNhbGwodCxQNSksYygpKTpvLnNsaWNlKCl9LHUucmFuZ2U9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/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/ZnVuY3Rpb24obil7cmV0dXJuIE1hdGgubG9nKG4vdCkvZX06TDUoZSl9ZnVuY3Rpb24gbzModCxlKXtyZXR1cm4gdDwwP2Z1bmN0aW9uKG4pe3JldHVybi1NYXRoLnBvdygtZSxuKSpNYXRoLnBvdygtdCwxLW4pfTpmdW5jdGlvbihuKXtyZXR1cm4gTWF0aC5wb3coZSxuKSpNYXRoLnBvdyh0LDEtbil9fWZ1bmN0aW9uIGEzKHQpe3JldHVybiBpc0Zpbml0ZSh0KT8rKCIxZSIrdCk6dDwwPzA6dH1mdW5jdGlvbiBzMyh0KXtyZXR1cm4gMTA9PT10P2EzOnQ9PT1NYXRoLkU/TWF0aC5leHA6ZnVuY3Rpb24oZSl7cmV0dXJuIE1hdGgucG93KHQsZSl9fWZ1bmN0aW9uIGwzKHQpe3JldHVybiB0PT09TWF0aC5FP01hdGgubG9nOjEwPT09dCYmTWF0aC5sb2cxMHx8Mj09PXQmJk1hdGgubG9nMnx8KHQ9TWF0aC5sb2codCksZnVuY3Rpb24oZSl7cmV0dXJuIE1hdGgubG9nKGUpL3R9KX1mdW5jdGlvbiBjMyh0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuLXQoLWUpfX1mdW5jdGlvbiB1Myh0LGUpe3JldHVybiB0PDA/LU1hdGgucG93KC10LGUpOk1hdGgucG93KHQsZSl9ZnVuY3Rpb24gaDMoKXt2YXIgdD0xLGU9RDUoKGZ1bmN0aW9uIG4oZSxpKXtyZXR1cm4oaT11MyhpLHQpLShlPXUzKGUsdCkpKT9mdW5jdGlvbihuKXtyZXR1cm4odTMobix0KS1lKS9pfTpMNShpKX0pLChmdW5jdGlvbiBpKGUsbil7cmV0dXJuIG49dTMobix0KS0oZT11MyhlLHQpKSxmdW5jdGlvbihpKXtyZXR1cm4gdTMoZStuKmksMS90KX19KSkscj1lLmRvbWFpbjtyZXR1cm4gZS5leHBvbmVudD1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0rZSxyKHIoKSkpOnR9LGUuY29weT1mdW5jdGlvbigpe3JldHVybiB6NShlLGgzKCkuZXhwb25lbnQodCkpfSxuMyhlKX0hKGZ1bmN0aW9uIGQzKHQpe3JldHVybiAkNT10Myh0KSxLNT0kNS5mb3JtYXQsWjU9JDUuZm9ybWF0UHJlZml4LCQ1fSkoe2RlY2ltYWw6Ii4iLHRob3VzYW5kczoiLCIsZ3JvdXBpbmc6WzNdLGN1cnJlbmN5OlsiJCIsIiJdLG1pbnVzOiItIn0pO3ZhciBwMz1uZXcgRGF0ZSxmMz1uZXcgRGF0ZTtmdW5jdGlvbiBtMyh0LGUsbixpKXtmdW5jdGlvbiByKGUpe3JldHVybiB0KGU9MD09PWFyZ3VtZW50cy5sZW5ndGg/bmV3IERhdGU6bmV3IERhdGUoK2UpKSxlfXJldHVybiByLmZsb29yPWZ1bmN0aW9uKGUpe3JldHVybiB0KGU9bmV3IERhdGUoK2UpKSxlfSxyLmNlaWw9ZnVuY3Rpb24obil7cmV0dXJuIHQobj1uZXcgRGF0ZShuLTEpKSxlKG4sMSksdChuKSxufSxyLnJvdW5kPWZ1bmN0aW9uKHQpe3ZhciBlPXIodCksbj1yLmNlaWwodCk7cmV0dXJuIHQtZTxuLXQ/ZTpufSxyLm9mZnNldD1mdW5jdGlvbih0LG4pe3JldHVybiBlKHQ9bmV3IERhdGUoK3QpLG51bGw9PW4/MTpNYXRoLmZsb29yKG4pKSx0fSxyLnJhbmdlPWZ1bmN0aW9uKG4saSxvKXt2YXIgYSxzPVtdO2lmKG49ci5jZWlsKG4pLG89bnVsbD09bz8xOk1hdGguZmxvb3IobyksIShuPGkmJm8+MCkpcmV0dXJuIHM7ZG97cy5wdXNoKGE9bmV3IERhdGUoK24pKSxlKG4sbyksdChuKX13aGlsZShhPG4mJm48aSk7cmV0dXJuIHN9LHIuZmlsdGVyPWZ1bmN0aW9uKG4pe3JldHVybiBtMygoZnVuY3Rpb24oZSl7aWYoZT49ZSlmb3IoO3QoZSksIW4oZSk7KWUuc2V0VGltZShlLTEpfSksKGZ1bmN0aW9uKHQsaSl7aWYodD49dClpZihpPDApZm9yKDsrK2k8PTA7KWZvcig7ZSh0LC0xKSwhbih0KTspO2Vsc2UgZm9yKDstLWk+PTA7KWZvcig7ZSh0LDEpLCFuKHQpOyk7fSkpfSxuJiYoci5jb3VudD1mdW5jdGlvbihlLGkpe3JldHVybiBwMy5zZXRUaW1lKCtlKSxmMy5zZXRUaW1lKCtpKSx0KHAzKSx0KGYzKSxNYXRoLmZsb29yKG4ocDMsZjMpKX0sci5ldmVyeT1mdW5jdGlvbih0KXtyZXR1cm4gdD1NYXRoLmZsb29yKHQpLGlzRmluaXRlKHQpJiZ0PjA/dD4xP3IuZmlsdGVyKGk/ZnVuY3Rpb24oZSl7cmV0dXJuIGkoZSkldD09MH06ZnVuY3Rpb24oZSl7cmV0dXJuIHIuY291bnQoMCxlKSV0PT0wfSk6cjpudWxsfSkscn12YXIgZzM9bTMoKGZ1bmN0aW9uKCl7fSksKGZ1bmN0aW9uKHQsZSl7dC5zZXRUaW1lKCt0K2UpfSksKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUtdH0pKTtnMy5ldmVyeT1mdW5jdGlvbih0KXtyZXR1cm4gdD1NYXRoLmZsb29yKHQpLGlzRmluaXRlKHQpJiZ0PjA/dD4xP20zKChmdW5jdGlvbihlKXtlLnNldFRpbWUoTWF0aC5mbG9vcihlL3QpKnQpfSksKGZ1bmN0aW9uKGUsbil7ZS5zZXRUaW1lKCtlK24qdCl9KSwoZnVuY3Rpb24oZSxuKXtyZXR1cm4obi1lKS90fSkpOmczOm51bGx9O3ZhciBfMz1nMyx5Mz0xZTMsdjM9NmU0LGIzPTM2ZTUseDM9ODY0ZTUsdzM9NjA0OGU1LFMzPW0zKChmdW5jdGlvbih0KXt0LnNldFRpbWUodC10LmdldE1pbGxpc2Vjb25kcygpKX0pLChmdW5jdGlvbih0LGUpe3Quc2V0VGltZSgrdCtlKnkzKX0pLChmdW5jdGlvbih0LGUpe3JldHVybihlLXQpL3kzfSksKGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldFVUQ1NlY29uZHMoKX0pKSxNMz1tMygoZnVuY3Rpb24odCl7dC5zZXRUaW1lKHQtdC5nZXRNaWxsaXNlY29uZHMoKS10LmdldFNlY29uZHMoKSp5Myl9KSwoZnVuY3Rpb24odCxlKXt0LnNldFRpbWUoK3QrZSp2Myl9KSwoZnVuY3Rpb24odCxlKXtyZXR1cm4oZS10KS92M30pLChmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXRNaW51dGVzKCl9KSksRTM9bTMoKGZ1bmN0aW9uKHQpe3Quc2V0VGltZSh0LXQuZ2V0TWlsbGlzZWNvbmRzKCktdC5nZXRTZWNvbmRzKCkqeTMtdC5nZXRNaW51dGVzKCkqdjMpfSksKGZ1bmN0aW9uKHQsZSl7dC5zZXRUaW1lKCt0K2UqYjMpfSksKGZ1bmN0aW9uKHQsZSl7cmV0dXJuKGUtdCkvYjN9KSwoZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0SG91cnMoKX0pKSxUMz1tMygoZnVuY3Rpb24odCl7dC5zZXRIb3VycygwLDAsMCwwKX0pLChmdW5jdGlvbih0LGUpe3Quc2V0RGF0ZSh0LmdldERhdGUoKStlKX0pLChmdW5jdGlvbih0LGUpe3JldHVybihlLXQtKGUuZ2V0VGltZXpvbmVPZmZzZXQoKS10LmdldFRpbWV6b25lT2Zmc2V0KCkpKnYzKS94M30pLChmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXREYXRlKCktMX0pKTtmdW5jdGlvbiBDMyh0KXtyZXR1cm4gbTMoKGZ1bmN0aW9uKGUpe2Uuc2V0RGF0ZShlLmdldERhdGUoKS0oZS5nZXREYXkoKSs3LXQpJTcpLGUuc2V0SG91cnMoMCwwLDAsMCl9KSwoZnVuY3Rpb24odCxlKXt0LnNldERhdGUodC5nZXREYXRlKCkrNyplKX0pLChmdW5jdGlvbih0LGUpe3JldHVybihlLXQtKGUuZ2V0VGltZXpvbmVPZmZzZXQoKS10LmdldFRpbWV6b25lT2Zmc2V0KCkpKnYzKS93M30pKX12YXIgQTM9QzMoMCksazM9QzMoMSk7QzMoMiksQzMoMyk7dmFyIEwzPUMzKDQpO0MzKDUpLEMzKDYpO3ZhciBQMz1tMygoZnVuY3Rpb24odCl7dC5zZXREYXRlKDEpLHQuc2V0SG91cnMoMCwwLDAsMCl9KSwoZnVuY3Rpb24odCxlKXt0LnNldE1vbnRoKHQuZ2V0TW9udGgoKStlKX0pLChmdW5jdGlvbih0LGUpe3JldHVybiBlLmdldE1vbnRoKCktdC5nZXRNb250aCgpKzEyKihlLmdldEZ1bGxZZWFyKCktdC5nZXRGdWxsWWVhcigpKX0pLChmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXRNb250aCgpfSkpLE4zPW0zKChmdW5jdGlvbih0KXt0LnNldE1vbnRoKDAsMSksdC5zZXRIb3VycygwLDAsMCwwKX0pLChmdW5jdGlvbih0LGUpe3Quc2V0RnVsbFllYXIodC5nZXRGdWxsWWVhcigpK2UpfSksKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUuZ2V0RnVsbFllYXIoKS10LmdldEZ1bGxZZWFyKCl9KSwoZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0RnVsbFllYXIoKX0pKTtOMy5ldmVyeT1mdW5jdGlvbih0KXtyZXR1cm4gaXNGaW5pdGUodD1NYXRoLmZsb29yKHQpKSYmdD4wP20zKChmdW5jdGlvbihlKXtlLnNldEZ1bGxZZWFyKE1hdGguZmxvb3IoZS5nZXRGdWxsWWVhcigpL3QpKnQpLGUuc2V0TW9udGgoMCwxKSxlLnNldEhvdXJzKDAsMCwwLDApfSksKGZ1bmN0aW9uKGUsbil7ZS5zZXRGdWxsWWVhcihlLmdldEZ1bGxZZWFyKCkrbip0KX0pKTpudWxsfTt2YXIgSTM9TjMsUjM9bTMoKGZ1bmN0aW9uKHQpe3Quc2V0VVRDU2Vjb25kcygwLDApfSksKGZ1bmN0aW9uKHQsZSl7dC5zZXRUaW1lKCt0K2UqdjMpfSksKGZ1bmN0aW9uKHQsZSl7cmV0dXJuKGUtdCkvdjN9KSwoZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0VVRDTWludXRlcygpfSkpLE8zPW0zKChmdW5jdGlvbih0KXt0LnNldFVUQ01pbnV0ZXMoMCwwLDApfSksKGZ1bmN0aW9uKHQsZSl7dC5zZXRUaW1lKCt0K2UqYjMpfSksKGZ1bmN0aW9uKHQsZSl7cmV0dXJuKGUtdCkvYjN9KSwoZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0VVRDSG91cnMoKX0pKSx6Mz1tMygoZnVuY3Rpb24odCl7dC5zZXRVVENIb3VycygwLDAsMCwwKX0pLChmdW5jdGlvbih0LGUpe3Quc2V0VVRDRGF0ZSh0LmdldFVUQ0RhdGUoKStlKX0pLChmdW5jdGlvbih0LGUpe3JldHVybihlLXQpL3gzfSksKGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldFVUQ0RhdGUoKS0xfSkpO2Z1bmN0aW9uIEQzKHQpe3JldHVybiBtMygoZnVuY3Rpb24oZSl7ZS5zZXRVVENEYXRlKGUuZ2V0VVRDRGF0ZSgpLShlLmdldFVUQ0RheSgpKzctdCklNyksZS5zZXRVVENIb3VycygwLDAsMCwwKX0pLChmdW5jdGlvbih0LGUpe3Quc2V0VVRDRGF0ZSh0LmdldFVUQ0RhdGUoKSs3KmUpfSksKGZ1bmN0aW9uKHQsZSl7cmV0dXJuKGUtdCkvdzN9KSl9dmFyIEIzPUQzKDApLEgzPUQzKDEpO0QzKDIpLEQzKDMpO3ZhciBGMz1EMyg0KTtEMyg1KSxEMyg2KTt2YXIgVjM9bTMoKGZ1bmN0aW9uKHQpe3Quc2V0VVRDRGF0ZSgxKSx0LnNldFVUQ0hvdXJzKDAsMCwwLDApfSksKGZ1bmN0aW9uKHQsZSl7dC5zZXRVVENNb250aCh0LmdldFVUQ01vbnRoKCkrZSl9KSwoZnVuY3Rpb24odCxlKXtyZXR1cm4gZS5nZXRVVENNb250aCgpLXQuZ2V0VVRDTW9udGgoKSsxMiooZS5nZXRVVENGdWxsWWVhcigpLXQuZ2V0VVRDRnVsbFllYXIoKSl9KSwoZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0VVRDTW9udGgoKX0pKSxVMz1tMygoZnVuY3Rpb24odCl7dC5zZXRVVENNb250aCgwLDEpLHQuc2V0VVRDSG91cnMoMCwwLDAsMCl9KSwoZnVuY3Rpb24odCxlKXt0LnNldFVUQ0Z1bGxZZWFyKHQuZ2V0VVRDRnVsbFllYXIoKStlKX0pLChmdW5jdGlvbih0LGUpe3JldHVybiBlLmdldFVUQ0Z1bGxZZWFyKCktdC5nZXRVVENGdWxsWWVhcigpfSksKGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldFVUQ0Z1bGxZZWFyKCl9KSk7VTMuZXZlcnk9ZnVuY3Rpb24odCl7cmV0dXJuIGlzRmluaXRlKHQ9TWF0aC5mbG9vcih0KSkmJnQ+MD9tMygoZnVuY3Rpb24oZSl7ZS5zZXRVVENGdWxsWWVhcihNYXRoLmZsb29yKGUuZ2V0VVRDRnVsbFllYXIoKS90KSp0KSxlLnNldFVUQ01vbnRoKDAsMSksZS5zZXRVVENIb3VycygwLDAsMCwwKX0pLChmdW5jdGlvbihlLG4pe2Uuc2V0VVRDRnVsbFllYXIoZS5nZXRVVENGdWxsWWVhcigpK24qdCl9KSk6bnVsbH07dmFyIGozPVUzO2Z1bmN0aW9uIEczKHQpe2lmKDA8PXQueSYmdC55PDEwMCl7dmFyIGU9bmV3IERhdGUoLTEsdC5tLHQuZCx0LkgsdC5NLHQuUyx0LkwpO3JldHVybiBlLnNldEZ1bGxZZWFyKHQueSksZX1yZXR1cm4gbmV3IERhdGUodC55LHQubSx0LmQsdC5ILHQuTSx0LlMsdC5MKX1mdW5jdGlvbiBXMyh0KXtpZigwPD10LnkmJnQueTwxMDApe3ZhciBlPW5ldyBEYXRlKERhdGUuVVRDKC0xLHQubSx0LmQsdC5ILHQuTSx0LlMsdC5MKSk7cmV0dXJuIGUuc2V0VVRDRnVsbFllYXIodC55KSxlfXJldHVybiBuZXcgRGF0ZShEYXRlLlVUQyh0LnksdC5tLHQuZCx0LkgsdC5NLHQuUyx0LkwpKX1mdW5jdGlvbiBxMyh0LGUsbil7cmV0dXJue3k6dCxtOmUsZDpuLEg6MCxNOjAsUzowLEw6MH19dmFyIFkzLFgzLCQzLEszPXsiLSI6IiIsXzoiICIsMDoiMCJ9LFozPS9eXHMqXGQrLyxKMz0vXiUvLFEzPS9bXFxeJCorP3xbXF0oKS57fV0vZztmdW5jdGlvbiB0NCh0LGUsbil7dmFyIGk9dDwwPyItIjoiIixyPShpPy10OnQpKyIiLG89ci5sZW5ndGg7cmV0dXJuIGkrKG88bj9uZXcgQXJyYXkobi1vKzEpLmpvaW4oZSkrcjpyKX1mdW5jdGlvbiBlNCh0KXtyZXR1cm4gdC5yZXBsYWNlKFEzLCJcXCQmIil9ZnVuY3Rpb24gbjQodCl7cmV0dXJuIG5ldyBSZWdFeHAoIl4oPzoiK3QubWFwKGU0KS5qb2luKCJ8IikrIikiLCJpIil9ZnVuY3Rpb24gaTQodCl7Zm9yKHZhciBlPXt9LG49LTEsaT10Lmxlbmd0aDsrK248aTspZVt0W25dLnRvTG93ZXJDYXNlKCldPW47cmV0dXJuIGV9ZnVuY3Rpb24gcjQodCxlLG4pe3ZhciBpPVozLmV4ZWMoZS5zbGljZShuLG4rMSkpO3JldHVybiBpPyh0Lnc9K2lbMF0sbitpWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gbzQodCxlLG4pe3ZhciBpPVozLmV4ZWMoZS5zbGljZShuLG4rMSkpO3JldHVybiBpPyh0LnU9K2lbMF0sbitpWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gYTQodCxlLG4pe3ZhciBpPVozLmV4ZWMoZS5zbGljZShuLG4rMikpO3JldHVybiBpPyh0LlU9K2lbMF0sbitpWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gczQodCxlLG4pe3ZhciBpPVozLmV4ZWMoZS5zbGljZShuLG4rMikpO3JldHVybiBpPyh0LlY9K2lbMF0sbitpWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gbDQodCxlLG4pe3ZhciBpPVozLmV4ZWMoZS5zbGljZShuLG4rMikpO3JldHVybiBpPyh0Llc9K2lbMF0sbitpWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gYzQodCxlLG4pe3ZhciBpPVozLmV4ZWMoZS5zbGljZShuLG4rNCkpO3JldHVybiBpPyh0Lnk9K2lbMF0sbitpWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gdTQodCxlLG4pe3ZhciBpPVozLmV4ZWMoZS5zbGljZShuLG4rMikpO3JldHVybiBpPyh0Lnk9K2lbMF0rKCtpWzBdPjY4PzE5MDA6MmUzKSxuK2lbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBoNCh0LGUsbil7dmFyIGk9L14oWil8KFsrLV1cZFxkKSg/Ojo/KFxkXGQpKT8vLmV4ZWMoZS5zbGljZShuLG4rNikpO3JldHVybiBpPyh0Llo9aVsxXT8wOi0oaVsyXSsoaVszXXx8IjAwIikpLG4raVswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIGQ0KHQsZSxuKXt2YXIgaT1aMy5leGVjKGUuc2xpY2UobixuKzEpKTtyZXR1cm4gaT8odC5xPTMqaVswXS0zLG4raVswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIHA0KHQsZSxuKXt2YXIgaT1aMy5leGVjKGUuc2xpY2UobixuKzIpKTtyZXR1cm4gaT8odC5tPWlbMF0tMSxuK2lbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBmNCh0LGUsbil7dmFyIGk9WjMuZXhlYyhlLnNsaWNlKG4sbisyKSk7cmV0dXJuIGk/KHQuZD0raVswXSxuK2lbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBtNCh0LGUsbil7dmFyIGk9WjMuZXhlYyhlLnNsaWNlKG4sbiszKSk7cmV0dXJuIGk/KHQubT0wLHQuZD0raVswXSxuK2lbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBnNCh0LGUsbil7dmFyIGk9WjMuZXhlYyhlLnNsaWNlKG4sbisyKSk7cmV0dXJuIGk/KHQuSD0raVswXSxuK2lbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBfNCh0LGUsbil7dmFyIGk9WjMuZXhlYyhlLnNsaWNlKG4sbisyKSk7cmV0dXJuIGk/KHQuTT0raVswXSxuK2lbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiB5NCh0LGUsbil7dmFyIGk9WjMuZXhlYyhlLnNsaWNlKG4sbisyKSk7cmV0dXJuIGk/KHQuUz0raVswXSxuK2lbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiB2NCh0LGUsbil7dmFyIGk9WjMuZXhlYyhlLnNsaWNlKG4sbiszKSk7cmV0dXJuIGk/KHQuTD0raVswXSxuK2lbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBiNCh0LGUsbil7dmFyIGk9WjMuZXhlYyhlLnNsaWNlKG4sbis2KSk7cmV0dXJuIGk/KHQuTD1NYXRoLmZsb29yKGlbMF0vMWUzKSxuK2lbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiB4NCh0LGUsbil7dmFyIGk9SjMuZXhlYyhlLnNsaWNlKG4sbisxKSk7cmV0dXJuIGk/bitpWzBdLmxlbmd0aDotMX1mdW5jdGlvbiB3NCh0LGUsbil7dmFyIGk9WjMuZXhlYyhlLnNsaWNlKG4pKTtyZXR1cm4gaT8odC5RPStpWzBdLG4raVswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIFM0KHQsZSxuKXt2YXIgaT1aMy5leGVjKGUuc2xpY2UobikpO3JldHVybiBpPyh0LnM9K2lbMF0sbitpWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gTTQodCxlKXtyZXR1cm4gdDQodC5nZXREYXRlKCksZSwyKX1mdW5jdGlvbiBFNCh0LGUpe3JldHVybiB0NCh0LmdldEhvdXJzKCksZSwyKX1mdW5jdGlvbiBUNCh0LGUpe3JldHVybiB0NCh0LmdldEhvdXJzKCklMTJ8fDEyLGUsMil9ZnVuY3Rpb24gQzQodCxlKXtyZXR1cm4gdDQoMStUMy5jb3VudChJMyh0KSx0KSxlLDMpfWZ1bmN0aW9uIEE0KHQsZSl7cmV0dXJuIHQ0KHQuZ2V0TWlsbGlzZWNvbmRzKCksZSwzKX1mdW5jdGlvbiBrNCh0LGUpe3JldHVybiBBNCh0LGUpKyIwMDAifWZ1bmN0aW9uIEw0KHQsZSl7cmV0dXJuIHQ0KHQuZ2V0TW9udGgoKSsxLGUsMil9ZnVuY3Rpb24gUDQodCxlKXtyZXR1cm4gdDQodC5nZXRNaW51dGVzKCksZSwyKX1mdW5jdGlvbiBONCh0LGUpe3JldHVybiB0NCh0LmdldFNlY29uZHMoKSxlLDIpfWZ1bmN0aW9uIEk0KHQpe3ZhciBlPXQuZ2V0RGF5KCk7cmV0dXJuIDA9PT1lPzc6ZX1mdW5jdGlvbiBSNCh0LGUpe3JldHVybiB0NChBMy5jb3VudChJMyh0KS0xLHQpLGUsMil9ZnVuY3Rpb24gTzQodCl7dmFyIGU9dC5nZXREYXkoKTtyZXR1cm4gZT49NHx8MD09PWU/TDModCk6TDMuY2VpbCh0KX1mdW5jdGlvbiB6NCh0LGUpe3JldHVybiB0PU80KHQpLHQ0KEwzLmNvdW50KEkzKHQpLHQpKyg0PT09STModCkuZ2V0RGF5KCkpLGUsMil9ZnVuY3Rpb24gRDQodCl7cmV0dXJuIHQuZ2V0RGF5KCl9ZnVuY3Rpb24gQjQodCxlKXtyZXR1cm4gdDQoazMuY291bnQoSTModCktMSx0KSxlLDIpfWZ1bmN0aW9uIEg0KHQsZSl7cmV0dXJuIHQ0KHQuZ2V0RnVsbFllYXIoKSUxMDAsZSwyKX1mdW5jdGlvbiBGNCh0LGUpe3JldHVybiB0NCgodD1PNCh0KSkuZ2V0RnVsbFllYXIoKSUxMDAsZSwyKX1mdW5jdGlvbiBWNCh0LGUpe3JldHVybiB0NCh0LmdldEZ1bGxZZWFyKCklMWU0LGUsNCl9ZnVuY3Rpb24gVTQodCxlKXt2YXIgbj10LmdldERheSgpO3JldHVybiB0NCgodD1uPj00fHwwPT09bj9MMyh0KTpMMy5jZWlsKHQpKS5nZXRGdWxsWWVhcigpJTFlNCxlLDQpfWZ1bmN0aW9uIGo0KHQpe3ZhciBlPXQuZ2V0VGltZXpvbmVPZmZzZXQoKTtyZXR1cm4oZT4wPyItIjooZSo9LTEsIisiKSkrdDQoZS82MHwwLCIwIiwyKSt0NChlJTYwLCIwIiwyKX1mdW5jdGlvbiBHNCh0LGUpe3JldHVybiB0NCh0LmdldFVUQ0RhdGUoKSxlLDIpfWZ1bmN0aW9uIFc0KHQsZSl7cmV0dXJuIHQ0KHQuZ2V0VVRDSG91cnMoKSxlLDIpfWZ1bmN0aW9uIHE0KHQsZSl7cmV0dXJuIHQ0KHQuZ2V0VVRDSG91cnMoKSUxMnx8MTIsZSwyKX1mdW5jdGlvbiBZNCh0LGUpe3JldHVybiB0NCgxK3ozLmNvdW50KGozKHQpLHQpLGUsMyl9ZnVuY3Rpb24gWDQodCxlKXtyZXR1cm4gdDQodC5nZXRVVENNaWxsaXNlY29uZHMoKSxlLDMpfWZ1bmN0aW9uICQ0KHQsZSl7cmV0dXJuIFg0KHQsZSkrIjAwMCJ9ZnVuY3Rpb24gSzQodCxlKXtyZXR1cm4gdDQodC5nZXRVVENNb250aCgpKzEsZSwyKX1mdW5jdGlvbiBaNCh0LGUpe3JldHVybiB0NCh0LmdldFVUQ01pbnV0ZXMoKSxlLDIpfWZ1bmN0aW9uIEo0KHQsZSl7cmV0dXJuIHQ0KHQuZ2V0VVRDU2Vjb25kcygpLGUsMil9ZnVuY3Rpb24gUTQodCl7dmFyIGU9dC5nZXRVVENEYXkoKTtyZXR1cm4gMD09PWU/NzplfWZ1bmN0aW9uIHQ2KHQsZSl7cmV0dXJuIHQ0KEIzLmNvdW50KGozKHQpLTEsdCksZSwyKX1mdW5jdGlvbiBlNih0KXt2YXIgZT10LmdldFVUQ0RheSgpO3JldHVybiBlPj00fHwwPT09ZT9GMyh0KTpGMy5jZWlsKHQpfWZ1bmN0aW9uIG42KHQsZSl7cmV0dXJuIHQ9ZTYodCksdDQoRjMuY291bnQoajModCksdCkrKDQ9PT1qMyh0KS5nZXRVVENEYXkoKSksZSwyKX1mdW5jdGlvbiBpNih0KXtyZXR1cm4gdC5nZXRVVENEYXkoKX1mdW5jdGlvbiByNih0LGUpe3JldHVybiB0NChIMy5jb3VudChqMyh0KS0xLHQpLGUsMil9ZnVuY3Rpb24gbzYodCxlKXtyZXR1cm4gdDQodC5nZXRVVENGdWxsWWVhcigpJTEwMCxlLDIpfWZ1bmN0aW9uIGE2KHQsZSl7cmV0dXJuIHQ0KCh0PWU2KHQpKS5nZXRVVENGdWxsWWVhcigpJTEwMCxlLDIpfWZ1bmN0aW9uIHM2KHQsZSl7cmV0dXJuIHQ0KHQuZ2V0VVRDRnVsbFllYXIoKSUxZTQsZSw0KX1mdW5jdGlvbiBsNih0LGUpe3ZhciBuPXQuZ2V0VVRDRGF5KCk7cmV0dXJuIHQ0KCh0PW4+PTR8fDA9PT1uP0YzKHQpOkYzLmNlaWwodCkpLmdldFVUQ0Z1bGxZZWFyKCklMWU0LGUsNCl9ZnVuY3Rpb24gYzYoKXtyZXR1cm4iKzAwMDAifWZ1bmN0aW9uIHU2KCl7cmV0dXJuIiUifWZ1bmN0aW9uIGg2KHQpe3JldHVybit0fWZ1bmN0aW9uIGQ2KHQpe3JldHVybiBNYXRoLmZsb29yKCt0LzFlMyl9IShmdW5jdGlvbiBwNih0KXtyZXR1cm4gWTM9KGZ1bmN0aW9uIGUodCl7dmFyIGU9dC5kYXRlVGltZSxuPXQuZGF0ZSxpPXQudGltZSxyPXQucGVyaW9kcyxvPXQuZGF5cyxhPXQuc2hvcnREYXlzLHM9dC5tb250aHMsbD10LnNob3J0TW9udGhzLGM9bjQociksdT1pNChyKSxoPW40KG8pLGQ9aTQobykscD1uNChhKSxmPWk0KGEpLG09bjQocyksZz1pNChzKSxfPW40KGwpLHk9aTQobCksdj17YTpmdW5jdGlvbiBiKHQpe3JldHVybiBhW3QuZ2V0RGF5KCldfSxBOmZ1bmN0aW9uIHgodCl7cmV0dXJuIG9bdC5nZXREYXkoKV19LGI6ZnVuY3Rpb24gdyh0KXtyZXR1cm4gbFt0LmdldE1vbnRoKCldfSxCOmZ1bmN0aW9uIFModCl7cmV0dXJuIHNbdC5nZXRNb250aCgpXX0sYzpudWxsLGQ6TTQsZTpNNCxmOms0LGc6RjQsRzpVNCxIOkU0LEk6VDQsajpDNCxMOkE0LG06TDQsTTpQNCxwOmZ1bmN0aW9uIE0odCl7cmV0dXJuIHJbKyh0LmdldEhvdXJzKCk+PTEyKV19LHE6ZnVuY3Rpb24gRSh0KXtyZXR1cm4gMSt+fih0LmdldE1vbnRoKCkvMyl9LFE6aDYsczpkNixTOk40LHU6STQsVTpSNCxWOno0LHc6RDQsVzpCNCx4Om51bGwsWDpudWxsLHk6SDQsWTpWNCxaOmo0LCIlIjp1Nn0sVD17YTpmdW5jdGlvbiBDKHQpe3JldHVybiBhW3QuZ2V0VVRDRGF5KCldfSxBOmZ1bmN0aW9uIEEodCl7cmV0dXJuIG9bdC5nZXRVVENEYXkoKV19LGI6ZnVuY3Rpb24gayh0KXtyZXR1cm4gbFt0LmdldFVUQ01vbnRoKCldfSxCOmZ1bmN0aW9uIEwodCl7cmV0dXJuIHNbdC5nZXRVVENNb250aCgpXX0sYzpudWxsLGQ6RzQsZTpHNCxmOiQ0LGc6YTYsRzpsNixIOlc0LEk6cTQsajpZNCxMOlg0LG06SzQsTTpaNCxwOmZ1bmN0aW9uIFAodCl7cmV0dXJuIHJbKyh0LmdldFVUQ0hvdXJzKCk+PTEyKV19LHE6ZnVuY3Rpb24gTih0KXtyZXR1cm4gMSt+fih0LmdldFVUQ01vbnRoKCkvMyl9LFE6aDYsczpkNixTOko0LHU6UTQsVTp0NixWOm42LHc6aTYsVzpyNix4Om51bGwsWDpudWxsLHk6bzYsWTpzNixaOmM2LCIlIjp1Nn0sST17YTpmdW5jdGlvbiBSKHQsZSxuKXt2YXIgaT1wLmV4ZWMoZS5zbGljZShuKSk7cmV0dXJuIGk/KHQudz1mW2lbMF0udG9Mb3dlckNhc2UoKV0sbitpWzBdLmxlbmd0aCk6LTF9LEE6ZnVuY3Rpb24gTyh0LGUsbil7dmFyIGk9aC5leGVjKGUuc2xpY2UobikpO3JldHVybiBpPyh0Lnc9ZFtpWzBdLnRvTG93ZXJDYXNlKCldLG4raVswXS5sZW5ndGgpOi0xfSxiOmZ1bmN0aW9uIHoodCxlLG4pe3ZhciBpPV8uZXhlYyhlLnNsaWNlKG4pKTtyZXR1cm4gaT8odC5tPXlbaVswXS50b0xvd2VyQ2FzZSgpXSxuK2lbMF0ubGVuZ3RoKTotMX0sQjpmdW5jdGlvbiBEKHQsZSxuKXt2YXIgaT1tLmV4ZWMoZS5zbGljZShuKSk7cmV0dXJuIGk/KHQubT1nW2lbMF0udG9Mb3dlckNhc2UoKV0sbitpWzBdLmxlbmd0aCk6LTF9LGM6ZnVuY3Rpb24gQih0LG4saSl7cmV0dXJuIEcodCxlLG4saSl9LGQ6ZjQsZTpmNCxmOmI0LGc6dTQsRzpjNCxIOmc0LEk6ZzQsajptNCxMOnY0LG06cDQsTTpfNCxwOmZ1bmN0aW9uIEgodCxlLG4pe3ZhciBpPWMuZXhlYyhlLnNsaWNlKG4pKTtyZXR1cm4gaT8odC5wPXVbaVswXS50b0xvd2VyQ2FzZSgpXSxuK2lbMF0ubGVuZ3RoKTotMX0scTpkNCxROnc0LHM6UzQsUzp5NCx1Om80LFU6YTQsVjpzNCx3OnI0LFc6bDQseDpmdW5jdGlvbiBGKHQsZSxpKXtyZXR1cm4gRyh0LG4sZSxpKX0sWDpmdW5jdGlvbiBWKHQsZSxuKXtyZXR1cm4gRyh0LGksZSxuKX0seTp1NCxZOmM0LFo6aDQsIiUiOng0fTtmdW5jdGlvbiBVKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKG4pe3ZhciBpLHIsbyxhPVtdLHM9LTEsbD0wLGM9dC5sZW5ndGg7Zm9yKG4gaW5zdGFuY2VvZiBEYXRlfHwobj1uZXcgRGF0ZSgrbikpOysrczxjOykzNz09PXQuY2hhckNvZGVBdChzKSYmKGEucHVzaCh0LnNsaWNlKGwscykpLG51bGwhPShyPUszW2k9dC5jaGFyQXQoKytzKV0pP2k9dC5jaGFyQXQoKytzKTpyPSJlIj09PWk/IiAiOiIwIiwobz1lW2ldKSYmKGk9byhuLHIpKSxhLnB1c2goaSksbD1zKzEpO3JldHVybiBhLnB1c2godC5zbGljZShsLHMpKSxhLmpvaW4oIiIpfX1mdW5jdGlvbiBqKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKG4pe3ZhciBpLHIsbz1xMygxOTAwLHZvaWQgMCwxKTtpZihHKG8sdCxuKz0iIiwwKSE9bi5sZW5ndGgpcmV0dXJuIG51bGw7aWYoIlEiaW4gbylyZXR1cm4gbmV3IERhdGUoby5RKTtpZigicyJpbiBvKXJldHVybiBuZXcgRGF0ZSgxZTMqby5zKygiTCJpbiBvP28uTDowKSk7aWYoZSYmISgiWiJpbiBvKSYmKG8uWj0wKSwicCJpbiBvJiYoby5IPW8uSCUxMisxMipvLnApLHZvaWQgMD09PW8ubSYmKG8ubT0icSJpbiBvP28ucTowKSwiViJpbiBvKXtpZihvLlY8MXx8by5WPjUzKXJldHVybiBudWxsOyJ3ImluIG98fChvLnc9MSksIloiaW4gbz8ocj0oaT1XMyhxMyhvLnksMCwxKSkpLmdldFVUQ0RheSgpLGk9cj40fHwwPT09cj9IMy5jZWlsKGkpOkgzKGkpLGk9ejMub2Zmc2V0KGksNyooby5WLTEpKSxvLnk9aS5nZXRVVENGdWxsWWVhcigpLG8ubT1pLmdldFVUQ01vbnRoKCksby5kPWkuZ2V0VVRDRGF0ZSgpKyhvLncrNiklNyk6KHI9KGk9RzMocTMoby55LDAsMSkpKS5nZXREYXkoKSxpPXI+NHx8MD09PXI/azMuY2VpbChpKTprMyhpKSxpPVQzLm9mZnNldChpLDcqKG8uVi0xKSksby55PWkuZ2V0RnVsbFllYXIoKSxvLm09aS5nZXRNb250aCgpLG8uZD1pLmdldERhdGUoKSsoby53KzYpJTcpfWVsc2UoIlciaW4gb3x8IlUiaW4gbykmJigidyJpbiBvfHwoby53PSJ1ImluIG8/by51JTc6IlciaW4gbz8xOjApLHI9IloiaW4gbz9XMyhxMyhvLnksMCwxKSkuZ2V0VVRDRGF5KCk6RzMocTMoby55LDAsMSkpLmdldERheSgpLG8ubT0wLG8uZD0iVyJpbiBvPyhvLncrNiklNys3Km8uVy0ocis1KSU3Om8udys3Km8uVS0ocis2KSU3KTtyZXR1cm4iWiJpbiBvPyhvLkgrPW8uWi8xMDB8MCxvLk0rPW8uWiUxMDAsVzMobykpOkczKG8pfX1mdW5jdGlvbiBHKHQsZSxuLGkpe2Zvcih2YXIgcixvLGE9MCxzPWUubGVuZ3RoLGw9bi5sZW5ndGg7YTxzOyl7aWYoaT49bClyZXR1cm4tMTtpZigzNz09PShyPWUuY2hhckNvZGVBdChhKyspKSl7aWYocj1lLmNoYXJBdChhKyspLCEobz1JW3IgaW4gSzM/ZS5jaGFyQXQoYSsrKTpyXSl8fChpPW8odCxuLGkpKTwwKXJldHVybi0xfWVsc2UgaWYociE9bi5jaGFyQ29kZUF0KGkrKykpcmV0dXJuLTF9cmV0dXJuIGl9cmV0dXJuIHYueD1VKG4sdiksdi5YPVUoaSx2KSx2LmM9VShlLHYpLFQueD1VKG4sVCksVC5YPVUoaSxUKSxULmM9VShlLFQpLHtmb3JtYXQ6ZnVuY3Rpb24odCl7dmFyIGU9VSh0Kz0iIix2KTtyZXR1cm4gZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0fSxlfSxwYXJzZTpmdW5jdGlvbih0KXt2YXIgZT1qKHQrPSIiLCExKTtyZXR1cm4gZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0fSxlfSx1dGNGb3JtYXQ6ZnVuY3Rpb24odCl7dmFyIGU9VSh0Kz0iIixUKTtyZXR1cm4gZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0fSxlfSx1dGNQYXJzZTpmdW5jdGlvbih0KXt2YXIgZT1qKHQrPSIiLCEwKTtyZXR1cm4gZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0fSxlfX19KSh0KSxYMz1ZMy5mb3JtYXQsJDM9WTMudXRjRm9ybWF0LFkzfSkoe2RhdGVUaW1lOiIleCwgJVgiLGRhdGU6IiUtbS8lLWQvJVkiLHRpbWU6IiUtSTolTTolUyAlcCIscGVyaW9kczpbIkFNIiwiUE0iXSxkYXlzOlsiU3VuZGF5IiwiTW9uZGF5IiwiVHVlc2RheSIsIldlZG5lc2RheSIsIlRodXJzZGF5IiwiRnJpZGF5IiwiU2F0dXJkYXkiXSxzaG9ydERheXM6WyJTdW4iLCJNb24iLCJUdWUiLCJXZWQiLCJUaHUiLCJGcmkiLCJTYXQiXSxtb250aHM6WyJKYW51YXJ5IiwiRmVicnVhcnkiLCJNYXJjaCIsIkFwcmlsIiwiTWF5IiwiSnVuZSIsIkp1bHkiLCJBdWd1c3QiLCJTZXB0ZW1iZXIiLCJPY3RvYmVyIiwiTm92ZW1iZXIiLCJEZWNlbWJlciJdLHNob3J0TW9udGhzOlsiSmFuIiwiRmViIiwiTWFyIiwiQXByIiwiTWF5IiwiSnVuIiwiSnVsIiwiQXVnIiwiU2VwIiwiT2N0IiwiTm92IiwiRGVjIl19KTt2YXIgZjY9MWUzLG02PTZlNCxnNj0zNmU1LF82PTg2NGU1LHk2PTI1OTJlNix2Nj0zMTUzNmU2O2Z1bmN0aW9uIGI2KHQpe3JldHVybiBuZXcgRGF0ZSh0KX1mdW5jdGlvbiB4Nih0KXtyZXR1cm4gdCBpbnN0YW5jZW9mIERhdGU/K3Q6K25ldyBEYXRlKCt0KX1mdW5jdGlvbiB3Nih0LGUsbixpLHIsbyxhLHMsbCl7dmFyIGM9RDUoSTUsYjUpLHU9Yy5pbnZlcnQsaD1jLmRvbWFpbixkPWwoIi4lTCIpLHA9bCgiOiVTIiksZj1sKCIlSTolTSIpLG09bCgiJUkgJXAiKSxnPWwoIiVhICVkIiksXz1sKCIlYiAlZCIpLHk9bCgiJUIiKSx2PWwoIiVZIiksYj1bW2EsMSxmNl0sW2EsNSw1ZTNdLFthLDE1LDE1ZTNdLFthLDMwLDNlNF0sW28sMSxtNl0sW28sNSwzZTVdLFtvLDE1LDllNV0sW28sMzAsMThlNV0sW3IsMSxnNl0sW3IsMywxMDhlNV0sW3IsNiwyMTZlNV0sW3IsMTIsNDMyZTVdLFtpLDEsXzZdLFtpLDIsMTcyOGU1XSxbbiwxLDYwNDhlNV0sW2UsMSx5Nl0sW2UsMyw3Nzc2ZTZdLFt0LDEsdjZdXTtmdW5jdGlvbiB4KHMpe3JldHVybihhKHMpPHM/ZDpvKHMpPHM/cDpyKHMpPHM/ZjppKHMpPHM/bTplKHMpPHM/bihzKTxzP2c6Xzp0KHMpPHM/eTp2KShzKX1mdW5jdGlvbiB3KGUsbixpLHIpe2lmKG51bGw9PWUmJihlPTEwKSwibnVtYmVyIj09dHlwZW9mIGUpe3ZhciBvPU1hdGguYWJzKGktbikvZSxhPUowKChmdW5jdGlvbih0KXtyZXR1cm4gdFsyXX0pKS5yaWdodChiLG8pO2E9PT1iLmxlbmd0aD8ocj1hMihuL3Y2LGkvdjYsZSksZT10KTphPyhyPShhPWJbby9iW2EtMV1bMl08YlthXVsyXS9vP2EtMTphXSlbMV0sZT1hWzBdKToocj1NYXRoLm1heChhMihuLGksZSksMSksZT1zKX1yZXR1cm4gbnVsbD09cj9lOmUuZXZlcnkocil9cmV0dXJuIGMuaW52ZXJ0PWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgRGF0ZSh1KHQpKX0sYy5kb21haW49ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/aChmMi5jYWxsKHQseDYpKTpoKCkubWFwKGI2KX0sYy50aWNrcz1mdW5jdGlvbih0LGUpe3ZhciBuLGk9aCgpLHI9aVswXSxvPWlbaS5sZW5ndGgtMV0sYT1vPHI7cmV0dXJuIGEmJihuPXIscj1vLG89biksbj0obj13KHQscixvLGUpKT9uLnJhbmdlKHIsbysxKTpbXSxhP24ucmV2ZXJzZSgpOm59LGMudGlja0Zvcm1hdD1mdW5jdGlvbih0LGUpe3JldHVybiBudWxsPT1lP3g6bChlKX0sYy5uaWNlPWZ1bmN0aW9uKHQsZSl7dmFyIG49aCgpO3JldHVybih0PXcodCxuWzBdLG5bbi5sZW5ndGgtMV0sZSkpP2goaTMobix0KSk6Y30sYy5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIHo1KGMsdzYodCxlLG4saSxyLG8sYSxzLGwpKX0sY31mdW5jdGlvbiBTNih0KXtyZXR1cm4gdC5tYXRjaCgvLns2fS9nKS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiIjIit0fSkpfXZhciBNNj1TNigiMWY3N2I0ZmY3ZjBlMmNhMDJjZDYyNzI4OTQ2N2JkOGM1NjRiZTM3N2MyN2Y3ZjdmYmNiZDIyMTdiZWNmIiksRTY9UzYoIjM5M2I3OTUyNTRhMzZiNmVjZjljOWVkZTYzNzkzOThjYTI1MmI1Y2Y2YmNlZGI5YzhjNmQzMWJkOWUzOWU3YmE1MmU3Y2I5NDg0M2MzOWFkNDk0YWQ2NjE2YmU3OTY5YzdiNDE3M2E1NTE5NGNlNmRiZGRlOWVkNiIpLFQ2PVM2KCIzMTgyYmQ2YmFlZDY5ZWNhZTFjNmRiZWZlNjU1MGRmZDhkM2NmZGFlNmJmZGQwYTIzMWEzNTQ3NGM0NzZhMWQ5OWJjN2U5YzA3NTZiYjE5ZTlhYzhiY2JkZGNkYWRhZWI2MzYzNjM5Njk2OTZiZGJkYmRkOWQ5ZDkiKSxDNj1TNigiMWY3N2I0YWVjN2U4ZmY3ZjBlZmZiYjc4MmNhMDJjOThkZjhhZDYyNzI4ZmY5ODk2OTQ2N2JkYzViMGQ1OGM1NjRiYzQ5Yzk0ZTM3N2MyZjdiNmQyN2Y3ZjdmYzdjN2M3YmNiZDIyZGJkYjhkMTdiZWNmOWVkYWU1IiksQTY9azUodTUoMzAwLC41LDApLHU1KC0yNDAsLjUsMSkpLGs2PWs1KHU1KC0xMDAsLjc1LC4zNSksdTUoODAsMS41LC44KSksTDY9azUodTUoMjYwLC43NSwuMzUpLHU1KDgwLDEuNSwuOCkpLFA2PXU1KCk7ZnVuY3Rpb24gTjYodCl7dmFyIGU9dC5sZW5ndGg7cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiB0W01hdGgubWF4KDAsTWF0aC5taW4oZS0xLE1hdGguZmxvb3IobiplKSkpXX19dmFyIEk2PU42KFM2KCI0NDAxNTQ0NDAyNTY0NTA0NTc0NTA1NTk0NjA3NWE0NjA4NWM0NjBhNWQ0NjBiNWU0NzBkNjA0NzBlNjE0NzEwNjM0NzExNjQ0NzEzNjU0ODE0Njc0ODE2Njg0ODE3Njk0ODE4NmE0ODFhNmM0ODFiNmQ0ODFjNmU0ODFkNmY0ODFmNzA0ODIwNzE0ODIxNzM0ODIzNzQ0ODI0NzU0ODI1NzY0ODI2Nzc0ODI4Nzg0ODI5Nzk0NzJhN2E0NzJjN2E0NzJkN2I0NzJlN2M0NzJmN2Q0NjMwN2U0NjMyN2U0NjMzN2Y0NjM0ODA0NTM1ODE0NTM3ODE0NTM4ODI0NDM5ODM0NDNhODM0NDNiODQ0MzNkODQ0MzNlODU0MjNmODU0MjQwODY0MjQxODY0MTQyODc0MTQ0ODc0MDQ1ODg0MDQ2ODgzZjQ3ODgzZjQ4ODkzZTQ5ODkzZTRhODkzZTRjOGEzZDRkOGEzZDRlOGEzYzRmOGEzYzUwOGIzYjUxOGIzYjUyOGIzYTUzOGIzYTU0OGMzOTU1OGMzOTU2OGMzODU4OGMzODU5OGMzNzVhOGMzNzViOGQzNjVjOGQzNjVkOGQzNTVlOGQzNTVmOGQzNDYwOGQzNDYxOGQzMzYyOGQzMzYzOGQzMjY0OGUzMjY1OGUzMTY2OGUzMTY3OGUzMTY4OGUzMDY5OGUzMDZhOGUyZjZiOGUyZjZjOGUyZTZkOGUyZTZlOGUyZTZmOGUyZDcwOGUyZDcxOGUyYzcxOGUyYzcyOGUyYzczOGUyYjc0OGUyYjc1OGUyYTc2OGUyYTc3OGUyYTc4OGUyOTc5OGUyOTdhOGUyOTdiOGUyODdjOGUyODdkOGUyNzdlOGUyNzdmOGUyNzgwOGUyNjgxOGUyNjgyOGUyNjgyOGUyNTgzOGUyNTg0OGUyNTg1OGUyNDg2OGUyNDg3OGUyMzg4OGUyMzg5OGUyMzhhOGQyMjhiOGQyMjhjOGQyMjhkOGQyMThlOGQyMThmOGQyMTkwOGQyMTkxOGMyMDkyOGMyMDkyOGMyMDkzOGMxZjk0OGMxZjk1OGIxZjk2OGIxZjk3OGIxZjk4OGIxZjk5OGExZjlhOGExZTliOGExZTljODkxZTlkODkxZjllODkxZjlmODgxZmEwODgxZmExODgxZmExODcxZmEyODcyMGEzODYyMGE0ODYyMWE1ODUyMWE2ODUyMmE3ODUyMmE4ODQyM2E5ODMyNGFhODMyNWFiODIyNWFjODIyNmFkODEyN2FkODEyOGFlODAyOWFmN2YyYWIwN2YyY2IxN2UyZGIyN2QyZWIzN2MyZmI0N2MzMWI1N2IzMmI2N2EzNGI2NzkzNWI3NzkzN2I4NzgzOGI5NzczYWJhNzYzYmJiNzUzZGJjNzQzZmJjNzM0MGJkNzI0MmJlNzE0NGJmNzA0NmMwNmY0OGMxNmU0YWMxNmQ0Y2MyNmM0ZWMzNmI1MGM0NmE1MmM1Njk1NGM1Njg1NmM2Njc1OGM3NjU1YWM4NjQ1Y2M4NjM1ZWM5NjI2MGNhNjA2M2NiNWY2NWNiNWU2N2NjNWM2OWNkNWI2Y2NkNWE2ZWNlNTg3MGNmNTc3M2QwNTY3NWQwNTQ3N2QxNTM3YWQxNTE3Y2QyNTA3ZmQzNGU4MWQzNGQ4NGQ0NGI4NmQ1NDk4OWQ1NDg4YmQ2NDY4ZWQ2NDU5MGQ3NDM5M2Q3NDE5NWQ4NDA5OGQ4M2U5YmQ5M2M5ZGQ5M2JhMGRhMzlhMmRhMzdhNWRiMzZhOGRiMzRhYWRjMzJhZGRjMzBiMGRkMmZiMmRkMmRiNWRlMmJiOGRlMjliYWRlMjhiZGRmMjZjMGRmMjVjMmRmMjNjNWUwMjFjOGUwMjBjYWUxMWZjZGUxMWRkMGUxMWNkMmUyMWJkNWUyMWFkOGUyMTlkYWUzMTlkZGUzMThkZmUzMThlMmU0MThlNWU0MTllN2U0MTllYWU1MWFlY2U1MWJlZmU1MWNmMWU1MWRmNGU2MWVmNmU2MjBmOGU2MjFmYmU3MjNmZGU3MjUiKSksUjY9TjYoUzYoIjAwMDAwNDAxMDAwNTAxMDEwNjAxMDEwODAyMDEwOTAyMDIwYjAyMDIwZDAzMDMwZjAzMDMxMjA0MDQxNDA1MDQxNjA2MDUxODA2MDUxYTA3MDYxYzA4MDcxZTA5MDcyMDBhMDgyMjBiMDkyNDBjMDkyNjBkMGEyOTBlMGIyYjEwMGIyZDExMGMyZjEyMGQzMTEzMGQzNDE0MGUzNjE1MGUzODE2MGYzYjE4MGYzZDE5MTAzZjFhMTA0MjFjMTA0NDFkMTE0NzFlMTE0OTIwMTE0YjIxMTE0ZTIyMTE1MDI0MTI1MzI1MTI1NTI3MTI1ODI5MTE1YTJhMTE1YzJjMTE1ZjJkMTE2MTJmMTE2MzMxMTE2NTMzMTA2NzM0MTA2OTM2MTA2YjM4MTA2YzM5MGY2ZTNiMGY3MDNkMGY3MTNmMGY3MjQwMGY3NDQyMGY3NTQ0MGY3NjQ1MTA3NzQ3MTA3ODQ5MTA3ODRhMTA3OTRjMTE3YTRlMTE3YjRmMTI3YjUxMTI3YzUyMTM3YzU0MTM3ZDU2MTQ3ZDU3MTU3ZTU5MTU3ZTVhMTY3ZTVjMTY3ZjVkMTc3ZjVmMTg3ZjYwMTg4MDYyMTk4MDY0MWE4MDY1MWE4MDY3MWI4MDY4MWM4MTZhMWM4MTZiMWQ4MTZkMWQ4MTZlMWU4MTcwMWY4MTcyMWY4MTczMjA4MTc1MjE4MTc2MjE4MTc4MjI4MTc5MjI4MjdiMjM4MjdjMjM4MjdlMjQ4MjgwMjU4MjgxMjU4MTgzMjY4MTg0MjY4MTg2Mjc4MTg4Mjc4MTg5Mjg4MThiMjk4MThjMjk4MThlMmE4MTkwMmE4MTkxMmI4MTkzMmI4MDk0MmM4MDk2MmM4MDk4MmQ4MDk5MmQ4MDliMmU3ZjljMmU3ZjllMmY3ZmEwMmY3ZmExMzA3ZWEzMzA3ZWE1MzE3ZWE2MzE3ZGE4MzI3ZGFhMzM3ZGFiMzM3Y2FkMzQ3Y2FlMzQ3YmIwMzU3YmIyMzU3YmIzMzY3YWI1MzY3YWI3Mzc3OWI4Mzc3OWJhMzg3OGJjMzk3OGJkMzk3N2JmM2E3N2MwM2E3NmMyM2I3NWM0M2M3NWM1M2M3NGM3M2Q3M2M4M2U3M2NhM2U3MmNjM2Y3MWNkNDA3MWNmNDA3MGQwNDE2ZmQyNDI2ZmQzNDM2ZWQ1NDQ2ZGQ2NDU2Y2Q4NDU2Y2Q5NDY2YmRiNDc2YWRjNDg2OWRlNDk2OGRmNGE2OGUwNGM2N2UyNGQ2NmUzNGU2NWU0NGY2NGU1NTA2NGU3NTI2M2U4NTM2MmU5NTQ2MmVhNTY2MWViNTc2MGVjNTg2MGVkNWE1ZmVlNWI1ZWVmNWQ1ZWYwNWY1ZWYxNjA1ZGYyNjI1ZGYyNjQ1Y2YzNjU1Y2Y0Njc1Y2Y0Njk1Y2Y1NmI1Y2Y2NmM1Y2Y2NmU1Y2Y3NzA1Y2Y3NzI1Y2Y4NzQ1Y2Y4NzY1Y2Y5Nzg1ZGY5Nzk1ZGY5N2I1ZGZhN2Q1ZWZhN2Y1ZWZhODE1ZmZiODM1ZmZiODU2MGZiODc2MWZjODk2MWZjOGE2MmZjOGM2M2ZjOGU2NGZjOTA2NWZkOTI2NmZkOTQ2N2ZkOTY2OGZkOTg2OWZkOWE2YWZkOWI2YmZlOWQ2Y2ZlOWY2ZGZlYTE2ZWZlYTM2ZmZlYTU3MWZlYTc3MmZlYTk3M2ZlYWE3NGZlYWM3NmZlYWU3N2ZlYjA3OGZlYjI3YWZlYjQ3YmZlYjY3Y2ZlYjc3ZWZlYjk3ZmZlYmI4MWZlYmQ4MmZlYmY4NGZlYzE4NWZlYzI4N2ZlYzQ4OGZlYzY4YWZlYzg4Y2ZlY2E4ZGZlY2M4ZmZlY2Q5MGZlY2Y5MmZlZDE5NGZlZDM5NWZlZDU5N2ZlZDc5OWZlZDg5YWZkZGE5Y2ZkZGM5ZWZkZGVhMGZkZTBhMWZkZTJhM2ZkZTNhNWZkZTVhN2ZkZTdhOWZkZTlhYWZkZWJhY2ZjZWNhZWZjZWViMGZjZjBiMmZjZjJiNGZjZjRiNmZjZjZiOGZjZjdiOWZjZjliYmZjZmJiZGZjZmRiZiIpKSxPNj1ONihTNigiMDAwMDA0MDEwMDA1MDEwMTA2MDEwMTA4MDIwMTBhMDIwMjBjMDIwMjBlMDMwMjEwMDQwMzEyMDQwMzE0MDUwNDE3MDYwNDE5MDcwNTFiMDgwNTFkMDkwNjFmMGEwNzIyMGIwNzI0MGMwODI2MGQwODI5MGUwOTJiMTAwOTJkMTEwYTMwMTIwYTMyMTQwYjM0MTUwYjM3MTYwYjM5MTgwYzNjMTkwYzNlMWIwYzQxMWMwYzQzMWUwYzQ1MWYwYzQ4MjEwYzRhMjMwYzRjMjQwYzRmMjYwYzUxMjgwYjUzMjkwYjU1MmIwYjU3MmQwYjU5MmYwYTViMzEwYTVjMzIwYTVlMzQwYTVmMzYwOTYxMzgwOTYyMzkwOTYzM2IwOTY0M2QwOTY1M2UwOTY2NDAwYTY3NDIwYTY4NDQwYTY4NDUwYTY5NDcwYjZhNDkwYjZhNGEwYzZiNGMwYzZiNGQwZDZjNGYwZDZjNTEwZTZjNTIwZTZkNTQwZjZkNTUwZjZkNTcxMDZlNTkxMDZlNWExMTZlNWMxMjZlNWQxMjZlNWYxMzZlNjExMzZlNjIxNDZlNjQxNTZlNjUxNTZlNjcxNjZlNjkxNjZlNmExNzZlNmMxODZlNmQxODZlNmYxOTZlNzExOTZlNzIxYTZlNzQxYTZlNzUxYjZlNzcxYzZkNzgxYzZkN2ExZDZkN2MxZDZkN2QxZTZkN2YxZTZjODAxZjZjODIyMDZjODQyMDZiODUyMTZiODcyMTZiODgyMjZhOGEyMjZhOGMyMzY5OGQyMzY5OGYyNDY5OTAyNTY4OTIyNTY4OTMyNjY3OTUyNjY3OTcyNzY2OTgyNzY2OWEyODY1OWIyOTY0OWQyOTY0OWYyYTYzYTAyYTYzYTIyYjYyYTMyYzYxYTUyYzYwYTYyZDYwYTgyZTVmYTkyZTVlYWIyZjVlYWQzMDVkYWUzMDVjYjAzMTViYjEzMjVhYjMzMjVhYjQzMzU5YjYzNDU4YjczNTU3YjkzNTU2YmEzNjU1YmMzNzU0YmQzODUzYmYzOTUyYzAzYTUxYzEzYTUwYzMzYjRmYzQzYzRlYzYzZDRkYzczZTRjYzgzZjRiY2E0MDRhY2I0MTQ5Y2M0MjQ4Y2U0MzQ3Y2Y0NDQ2ZDA0NTQ1ZDI0NjQ0ZDM0NzQzZDQ0ODQyZDU0YTQxZDc0YjNmZDg0YzNlZDk0ZDNkZGE0ZTNjZGI1MDNiZGQ1MTNhZGU1MjM4ZGY1MzM3ZTA1NTM2ZTE1NjM1ZTI1NzM0ZTM1OTMzZTQ1YTMxZTU1YzMwZTY1ZDJmZTc1ZTJlZTg2MDJkZTk2MTJiZWE2MzJhZWI2NDI5ZWI2NjI4ZWM2NzI2ZWQ2OTI1ZWU2YTI0ZWY2YzIzZWY2ZTIxZjA2ZjIwZjE3MTFmZjE3MzFkZjI3NDFjZjM3NjFiZjM3ODE5ZjQ3OTE4ZjU3YjE3ZjU3ZDE1ZjY3ZTE0ZjY4MDEzZjc4MjEyZjc4NDEwZjg4NTBmZjg4NzBlZjg4OTBjZjk4YjBiZjk4YzBhZjk4ZTA5ZmE5MDA4ZmE5MjA3ZmE5NDA3ZmI5NjA2ZmI5NzA2ZmI5OTA2ZmI5YjA2ZmI5ZDA3ZmM5ZjA3ZmNhMTA4ZmNhMzA5ZmNhNTBhZmNhNjBjZmNhODBkZmNhYTBmZmNhYzExZmNhZTEyZmNiMDE0ZmNiMjE2ZmNiNDE4ZmJiNjFhZmJiODFkZmJiYTFmZmJiYzIxZmJiZTIzZmFjMDI2ZmFjMjI4ZmFjNDJhZmFjNjJkZjljNzJmZjljOTMyZjljYjM1ZjhjZDM3ZjhjZjNhZjdkMTNkZjdkMzQwZjZkNTQzZjZkNzQ2ZjVkOTQ5ZjVkYjRjZjRkZDRmZjRkZjUzZjRlMTU2ZjNlMzVhZjNlNTVkZjJlNjYxZjJlODY1ZjJlYTY5ZjFlYzZkZjFlZDcxZjFlZjc1ZjFmMTc5ZjJmMjdkZjJmNDgyZjNmNTg2ZjNmNjhhZjRmODhlZjVmOTkyZjZmYTk2ZjhmYjlhZjlmYzlkZmFmZGExZmNmZmE0IikpLHo2PU42KFM2KCIwZDA4ODcxMDA3ODgxMzA3ODkxNjA3OGExOTA2OGMxYjA2OGQxZDA2OGUyMDA2OGYyMjA2OTAyNDA2OTEyNjA1OTEyODA1OTIyYTA1OTMyYzA1OTQyZTA1OTUyZjA1OTYzMTA1OTczMzA1OTczNTA0OTgzNzA0OTkzODA0OWEzYTA0OWEzYzA0OWIzZTA0OWMzZjA0OWM0MTA0OWQ0MzAzOWU0NDAzOWU0NjAzOWY0ODAzOWY0OTAzYTA0YjAzYTE0YzAyYTE0ZTAyYTI1MDAyYTI1MTAyYTM1MzAyYTM1NTAyYTQ1NjAxYTQ1ODAxYTQ1OTAxYTU1YjAxYTU1YzAxYTY1ZTAxYTY2MDAxYTY2MTAwYTc2MzAwYTc2NDAwYTc2NjAwYTc2NzAwYTg2OTAwYTg2YTAwYTg2YzAwYTg2ZTAwYTg2ZjAwYTg3MTAwYTg3MjAxYTg3NDAxYTg3NTAxYTg3NzAxYTg3ODAxYTg3YTAyYTg3YjAyYTg3ZDAzYTg3ZTAzYTg4MDA0YTg4MTA0YTc4MzA1YTc4NDA1YTc4NjA2YTY4NzA3YTY4ODA4YTY4YTA5YTU4YjBhYTU4ZDBiYTU4ZTBjYTQ4ZjBkYTQ5MTBlYTM5MjBmYTM5NDEwYTI5NTExYTE5NjEzYTE5ODE0YTA5OTE1OWY5YTE2OWY5YzE3OWU5ZDE4OWQ5ZTE5OWRhMDFhOWNhMTFiOWJhMjFkOWFhMzFlOWFhNTFmOTlhNjIwOThhNzIxOTdhODIyOTZhYTIzOTVhYjI0OTRhYzI2OTRhZDI3OTNhZTI4OTJiMDI5OTFiMTJhOTBiMjJiOGZiMzJjOGViNDJlOGRiNTJmOGNiNjMwOGJiNzMxOGFiODMyODliYTMzODhiYjM0ODhiYzM1ODdiZDM3ODZiZTM4ODViZjM5ODRjMDNhODNjMTNiODJjMjNjODFjMzNkODBjNDNlN2ZjNTQwN2VjNjQxN2RjNzQyN2NjODQzN2JjOTQ0N2FjYTQ1N2FjYjQ2NzljYzQ3NzhjYzQ5NzdjZDRhNzZjZTRiNzVjZjRjNzRkMDRkNzNkMTRlNzJkMjRmNzFkMzUxNzFkNDUyNzBkNTUzNmZkNTU0NmVkNjU1NmRkNzU2NmNkODU3NmJkOTU4NmFkYTVhNmFkYTViNjlkYjVjNjhkYzVkNjdkZDVlNjZkZTVmNjVkZTYxNjRkZjYyNjNlMDYzNjNlMTY0NjJlMjY1NjFlMjY2NjBlMzY4NWZlNDY5NWVlNTZhNWRlNTZiNWRlNjZjNWNlNzZlNWJlNzZmNWFlODcwNTllOTcxNThlOTcyNTdlYTc0NTdlYjc1NTZlYjc2NTVlYzc3NTRlZDc5NTNlZDdhNTJlZTdiNTFlZjdjNTFlZjdlNTBmMDdmNGZmMDgwNGVmMTgxNGRmMTgzNGNmMjg0NGJmMzg1NGJmMzg3NGFmNDg4NDlmNDg5NDhmNThiNDdmNThjNDZmNjhkNDVmNjhmNDRmNzkwNDRmNzkxNDNmNzkzNDJmODk0NDFmODk1NDBmOTk3M2ZmOTk4M2VmOTlhM2VmYTliM2RmYTljM2NmYTllM2JmYjlmM2FmYmExMzlmYmEyMzhmY2EzMzhmY2E1MzdmY2E2MzZmY2E4MzVmY2E5MzRmZGFiMzNmZGFjMzNmZGFlMzJmZGFmMzFmZGIxMzBmZGIyMmZmZGI0MmZmZGI1MmVmZWI3MmRmZWI4MmNmZWJhMmNmZWJiMmJmZWJkMmFmZWJlMmFmZWMwMjlmZGMyMjlmZGMzMjhmZGM1MjdmZGM2MjdmZGM4MjdmZGNhMjZmZGNiMjZmY2NkMjVmY2NlMjVmY2QwMjVmY2QyMjVmYmQzMjRmYmQ1MjRmYmQ3MjRmYWQ4MjRmYWRhMjRmOWRjMjRmOWRkMjVmOGRmMjVmOGUxMjVmN2UyMjVmN2U0MjVmNmU2MjZmNmU4MjZmNWU5MjZmNWViMjdmNGVkMjdmM2VlMjdmM2YwMjdmMmYyMjdmMWY0MjZmMWY1MjVmMGY3MjRmMGY5MjEiKSk7dmFyIEQ2PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIixCNj17c3ZnOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIseGh0bWw6RDYseGxpbms6Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiLHhtbDoiaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlIix4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC94bWxucy8ifTtmdW5jdGlvbiBINih0KXt2YXIgZT10Kz0iIixuPWUuaW5kZXhPZigiOiIpO3JldHVybiBuPj0wJiYieG1sbnMiIT09KGU9dC5zbGljZSgwLG4pKSYmKHQ9dC5zbGljZShuKzEpKSxCNi5oYXNPd25Qcm9wZXJ0eShlKT97c3BhY2U6QjZbZV0sbG9jYWw6dH06dH1mdW5jdGlvbiBGNih0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT10aGlzLm93bmVyRG9jdW1lbnQsbj10aGlzLm5hbWVzcGFjZVVSSTtyZXR1cm4gbj09PUQ2JiZlLmRvY3VtZW50RWxlbWVudC5uYW1lc3BhY2VVUkk9PT1ENj9lLmNyZWF0ZUVsZW1lbnQodCk6ZS5jcmVhdGVFbGVtZW50TlMobix0KX19ZnVuY3Rpb24gVjYodCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub3duZXJEb2N1bWVudC5jcmVhdGVFbGVtZW50TlModC5zcGFjZSx0LmxvY2FsKX19ZnVuY3Rpb24gVTYodCl7dmFyIGU9SDYodCk7cmV0dXJuKGUubG9jYWw/VjY6RjYpKGUpfWZ1bmN0aW9uIGo2KCl7fWZ1bmN0aW9uIEc2KHQpe3JldHVybiBudWxsPT10P2o2OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucXVlcnlTZWxlY3Rvcih0KX19ZnVuY3Rpb24gVzYoKXtyZXR1cm5bXX1mdW5jdGlvbiBxNih0KXtyZXR1cm4gbnVsbD09dD9XNjpmdW5jdGlvbigpe3JldHVybiB0aGlzLnF1ZXJ5U2VsZWN0b3JBbGwodCl9fXZhciBZNj1mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tYXRjaGVzKHQpfX07aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBkb2N1bWVudCl7dmFyIFg2PWRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtpZighWDYubWF0Y2hlcyl7dmFyICQ2PVg2LndlYmtpdE1hdGNoZXNTZWxlY3Rvcnx8WDYubXNNYXRjaGVzU2VsZWN0b3J8fFg2Lm1vek1hdGNoZXNTZWxlY3Rvcnx8WDYub01hdGNoZXNTZWxlY3RvcjtZNj1mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gJDYuY2FsbCh0aGlzLHQpfX19fXZhciBLNj1ZNjtmdW5jdGlvbiBaNih0KXtyZXR1cm4gbmV3IEFycmF5KHQubGVuZ3RoKX1mdW5jdGlvbiBKNih0LGUpe3RoaXMub3duZXJEb2N1bWVudD10Lm93bmVyRG9jdW1lbnQsdGhpcy5uYW1lc3BhY2VVUkk9dC5uYW1lc3BhY2VVUkksdGhpcy5fbmV4dD1udWxsLHRoaXMuX3BhcmVudD10LHRoaXMuX19kYXRhX189ZX1KNi5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOko2LGFwcGVuZENoaWxkOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9wYXJlbnQuaW5zZXJ0QmVmb3JlKHQsdGhpcy5fbmV4dCl9LGluc2VydEJlZm9yZTpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLl9wYXJlbnQuaW5zZXJ0QmVmb3JlKHQsZSl9LHF1ZXJ5U2VsZWN0b3I6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3BhcmVudC5xdWVyeVNlbGVjdG9yKHQpfSxxdWVyeVNlbGVjdG9yQWxsOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9wYXJlbnQucXVlcnlTZWxlY3RvckFsbCh0KX19O2Z1bmN0aW9uIFE2KHQsZSxuLGkscixvKXtmb3IodmFyIGEscz0wLGw9ZS5sZW5ndGgsYz1vLmxlbmd0aDtzPGM7KytzKShhPWVbc10pPyhhLl9fZGF0YV9fPW9bc10saVtzXT1hKTpuW3NdPW5ldyBKNih0LG9bc10pO2Zvcig7czxsOysrcykoYT1lW3NdKSYmKHJbc109YSl9ZnVuY3Rpb24gdDkodCxlLG4saSxyLG8sYSl7dmFyIHMsbCxjLHU9e30saD1lLmxlbmd0aCxkPW8ubGVuZ3RoLHA9bmV3IEFycmF5KGgpO2ZvcihzPTA7czxoOysrcykobD1lW3NdKSYmKHBbc109Yz0iJCIrYS5jYWxsKGwsbC5fX2RhdGFfXyxzLGUpLGMgaW4gdT9yW3NdPWw6dVtjXT1sKTtmb3Iocz0wO3M8ZDsrK3MpKGw9dVtjPSIkIithLmNhbGwodCxvW3NdLHMsbyldKT8oaVtzXT1sLGwuX19kYXRhX189b1tzXSx1W2NdPW51bGwpOm5bc109bmV3IEo2KHQsb1tzXSk7Zm9yKHM9MDtzPGg7KytzKShsPWVbc10pJiZ1W3Bbc11dPT09bCYmKHJbc109bCl9ZnVuY3Rpb24gZTkodCxlKXtyZXR1cm4gdDxlPy0xOnQ+ZT8xOnQ+PWU/MDpOYU59ZnVuY3Rpb24gbjkodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5yZW1vdmVBdHRyaWJ1dGUodCl9fWZ1bmN0aW9uIGk5KHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMucmVtb3ZlQXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsKX19ZnVuY3Rpb24gcjkodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnNldEF0dHJpYnV0ZSh0LGUpfX1mdW5jdGlvbiBvOSh0LGUpe3JldHVybiBmdW5jdGlvbigpe3RoaXMuc2V0QXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsLGUpfX1mdW5jdGlvbiBhOSh0LGUpe3JldHVybiBmdW5jdGlvbigpe3ZhciBuPWUuYXBwbHkodGhpcyxhcmd1bWVudHMpO251bGw9PW4/dGhpcy5yZW1vdmVBdHRyaWJ1dGUodCk6dGhpcy5zZXRBdHRyaWJ1dGUodCxuKX19ZnVuY3Rpb24gczkodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbj1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtudWxsPT1uP3RoaXMucmVtb3ZlQXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsKTp0aGlzLnNldEF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCxuKX19ZnVuY3Rpb24gbDkodCl7cmV0dXJuIHQub3duZXJEb2N1bWVudCYmdC5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3fHx0LmRvY3VtZW50JiZ0fHx0LmRlZmF1bHRWaWV3fWZ1bmN0aW9uIGM5KHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMuc3R5bGUucmVtb3ZlUHJvcGVydHkodCl9fWZ1bmN0aW9uIHU5KHQsZSxuKXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnN0eWxlLnNldFByb3BlcnR5KHQsZSxuKX19ZnVuY3Rpb24gaDkodCxlLG4pe3JldHVybiBmdW5jdGlvbigpe3ZhciBpPWUuYXBwbHkodGhpcyxhcmd1bWVudHMpO251bGw9PWk/dGhpcy5zdHlsZS5yZW1vdmVQcm9wZXJ0eSh0KTp0aGlzLnN0eWxlLnNldFByb3BlcnR5KHQsaSxuKX19ZnVuY3Rpb24gZDkodCxlKXtyZXR1cm4gdC5zdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKGUpfHxsOSh0KS5nZXRDb21wdXRlZFN0eWxlKHQsbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZShlKX1mdW5jdGlvbiBwOSh0KXtyZXR1cm4gZnVuY3Rpb24oKXtkZWxldGUgdGhpc1t0XX19ZnVuY3Rpb24gZjkodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzW3RdPWV9fWZ1bmN0aW9uIG05KHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG49ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7bnVsbD09bj9kZWxldGUgdGhpc1t0XTp0aGlzW3RdPW59fWZ1bmN0aW9uIGc5KHQpe3JldHVybiB0LnRyaW0oKS5zcGxpdCgvXnxccysvKX1mdW5jdGlvbiBfOSh0KXtyZXR1cm4gdC5jbGFzc0xpc3R8fG5ldyB5OSh0KX1mdW5jdGlvbiB5OSh0KXt0aGlzLl9ub2RlPXQsdGhpcy5fbmFtZXM9ZzkodC5nZXRBdHRyaWJ1dGUoImNsYXNzIil8fCIiKX1mdW5jdGlvbiB2OSh0LGUpe2Zvcih2YXIgbj1fOSh0KSxpPS0xLHI9ZS5sZW5ndGg7KytpPHI7KW4uYWRkKGVbaV0pfWZ1bmN0aW9uIGI5KHQsZSl7Zm9yKHZhciBuPV85KHQpLGk9LTEscj1lLmxlbmd0aDsrK2k8cjspbi5yZW1vdmUoZVtpXSl9ZnVuY3Rpb24geDkodCl7cmV0dXJuIGZ1bmN0aW9uKCl7djkodGhpcyx0KX19ZnVuY3Rpb24gdzkodCl7cmV0dXJuIGZ1bmN0aW9uKCl7YjkodGhpcyx0KX19ZnVuY3Rpb24gUzkodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXsoZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk/djk6YjkpKHRoaXMsdCl9fWZ1bmN0aW9uIE05KCl7dGhpcy50ZXh0Q29udGVudD0iIn1mdW5jdGlvbiBFOSh0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnRleHRDb250ZW50PXR9fWZ1bmN0aW9uIFQ5KHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciBlPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpO3RoaXMudGV4dENvbnRlbnQ9bnVsbD09ZT8iIjplfX1mdW5jdGlvbiBDOSgpe3RoaXMuaW5uZXJIVE1MPSIifWZ1bmN0aW9uIEE5KHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMuaW5uZXJIVE1MPXR9fWZ1bmN0aW9uIGs5KHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciBlPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpO3RoaXMuaW5uZXJIVE1MPW51bGw9PWU/IiI6ZX19ZnVuY3Rpb24gTDkoKXt0aGlzLm5leHRTaWJsaW5nJiZ0aGlzLnBhcmVudE5vZGUuYXBwZW5kQ2hpbGQodGhpcyl9ZnVuY3Rpb24gUDkoKXt0aGlzLnByZXZpb3VzU2libGluZyYmdGhpcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZSh0aGlzLHRoaXMucGFyZW50Tm9kZS5maXJzdENoaWxkKX1mdW5jdGlvbiBOOSgpe3JldHVybiBudWxsfWZ1bmN0aW9uIEk5KCl7dmFyIHQ9dGhpcy5wYXJlbnROb2RlO3QmJnQucmVtb3ZlQ2hpbGQodGhpcyl9ZnVuY3Rpb24gUjkoKXtyZXR1cm4gdGhpcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZSh0aGlzLmNsb25lTm9kZSghMSksdGhpcy5uZXh0U2libGluZyl9ZnVuY3Rpb24gTzkoKXtyZXR1cm4gdGhpcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZSh0aGlzLmNsb25lTm9kZSghMCksdGhpcy5uZXh0U2libGluZyl9eTkucHJvdG90eXBlPXthZGQ6ZnVuY3Rpb24odCl7dGhpcy5fbmFtZXMuaW5kZXhPZih0KTwwJiYodGhpcy5fbmFtZXMucHVzaCh0KSx0aGlzLl9ub2RlLnNldEF0dHJpYnV0ZSgiY2xhc3MiLHRoaXMuX25hbWVzLmpvaW4oIiAiKSkpfSxyZW1vdmU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fbmFtZXMuaW5kZXhPZih0KTtlPj0wJiYodGhpcy5fbmFtZXMuc3BsaWNlKGUsMSksdGhpcy5fbm9kZS5zZXRBdHRyaWJ1dGUoImNsYXNzIix0aGlzLl9uYW1lcy5qb2luKCIgIikpKX0sY29udGFpbnM6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX25hbWVzLmluZGV4T2YodCk+PTB9fTt2YXIgejk9e30sRDk9bnVsbDsidW5kZWZpbmVkIiE9dHlwZW9mIGRvY3VtZW50JiYoIm9ubW91c2VlbnRlciJpbiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnR8fCh6OT17bW91c2VlbnRlcjoibW91c2VvdmVyIixtb3VzZWxlYXZlOiJtb3VzZW91dCJ9KSk7ZnVuY3Rpb24gQjkodCxlLG4pe3JldHVybiB0PUg5KHQsZSxuKSxmdW5jdGlvbihlKXt2YXIgbj1lLnJlbGF0ZWRUYXJnZXQ7biYmKG49PT10aGlzfHw4Jm4uY29tcGFyZURvY3VtZW50UG9zaXRpb24odGhpcykpfHx0LmNhbGwodGhpcyxlKX19ZnVuY3Rpb24gSDkodCxlLG4pe3JldHVybiBmdW5jdGlvbihpKXt2YXIgcj1EOTtEOT1pO3RyeXt0LmNhbGwodGhpcyx0aGlzLl9fZGF0YV9fLGUsbil9ZmluYWxseXtEOT1yfX19ZnVuY3Rpb24gRjkodCl7cmV0dXJuIHQudHJpbSgpLnNwbGl0KC9efFxzKy8pLm1hcCgoZnVuY3Rpb24odCl7dmFyIGU9IiIsbj10LmluZGV4T2YoIi4iKTtyZXR1cm4gbj49MCYmKGU9dC5zbGljZShuKzEpLHQ9dC5zbGljZSgwLG4pKSx7dHlwZTp0LG5hbWU6ZX19KSl9ZnVuY3Rpb24gVjkodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5fX29uO2lmKGUpe2Zvcih2YXIgbixpPTAscj0tMSxvPWUubGVuZ3RoO2k8bzsrK2kpbj1lW2ldLHQudHlwZSYmbi50eXBlIT09dC50eXBlfHxuLm5hbWUhPT10Lm5hbWU/ZVsrK3JdPW46dGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKG4udHlwZSxuLmxpc3RlbmVyLG4uY2FwdHVyZSk7KytyP2UubGVuZ3RoPXI6ZGVsZXRlIHRoaXMuX19vbn19fWZ1bmN0aW9uIFU5KHQsZSxuKXt2YXIgaT16OS5oYXNPd25Qcm9wZXJ0eSh0LnR5cGUpP0I5Okg5O3JldHVybiBmdW5jdGlvbihyLG8sYSl7dmFyIHMsbD10aGlzLl9fb24sYz1pKGUsbyxhKTtpZihsKWZvcih2YXIgdT0wLGg9bC5sZW5ndGg7dTxoOysrdSlpZigocz1sW3VdKS50eXBlPT09dC50eXBlJiZzLm5hbWU9PT10Lm5hbWUpcmV0dXJuIHRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcihzLnR5cGUscy5saXN0ZW5lcixzLmNhcHR1cmUpLHRoaXMuYWRkRXZlbnRMaXN0ZW5lcihzLnR5cGUscy5saXN0ZW5lcj1jLHMuY2FwdHVyZT1uKSx2b2lkKHMudmFsdWU9ZSk7dGhpcy5hZGRFdmVudExpc3RlbmVyKHQudHlwZSxjLG4pLHM9e3R5cGU6dC50eXBlLG5hbWU6dC5uYW1lLHZhbHVlOmUsbGlzdGVuZXI6YyxjYXB0dXJlOm59LGw/bC5wdXNoKHMpOnRoaXMuX19vbj1bc119fWZ1bmN0aW9uIGo5KHQsZSxuKXt2YXIgaT1sOSh0KSxyPWkuQ3VzdG9tRXZlbnQ7ImZ1bmN0aW9uIj09dHlwZW9mIHI/cj1uZXcgcihlLG4pOihyPWkuZG9jdW1lbnQuY3JlYXRlRXZlbnQoIkV2ZW50Iiksbj8oci5pbml0RXZlbnQoZSxuLmJ1YmJsZXMsbi5jYW5jZWxhYmxlKSxyLmRldGFpbD1uLmRldGFpbCk6ci5pbml0RXZlbnQoZSwhMSwhMSkpLHQuZGlzcGF0Y2hFdmVudChyKX1mdW5jdGlvbiBHOSh0LGUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBqOSh0aGlzLHQsZSl9fWZ1bmN0aW9uIFc5KHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGo5KHRoaXMsdCxlLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9fXZhciBxOT1bbnVsbF07ZnVuY3Rpb24gWTkodCxlKXt0aGlzLl9ncm91cHM9dCx0aGlzLl9wYXJlbnRzPWV9ZnVuY3Rpb24gWDkoKXtyZXR1cm4gbmV3IFk5KFtbZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50XV0scTkpfWZ1bmN0aW9uICQ5KHQpe3JldHVybiJzdHJpbmciPT10eXBlb2YgdD9uZXcgWTkoW1tkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHQpXV0sW2RvY3VtZW50LmRvY3VtZW50RWxlbWVudF0pOm5ldyBZOShbW3RdXSxxOSl9WTkucHJvdG90eXBlPVg5LnByb3RvdHlwZT17Y29uc3RydWN0b3I6WTksc2VsZWN0OmZ1bmN0aW9uIEs5KHQpeyJmdW5jdGlvbiIhPXR5cGVvZiB0JiYodD1HNih0KSk7Zm9yKHZhciBlPXRoaXMuX2dyb3VwcyxuPWUubGVuZ3RoLGk9bmV3IEFycmF5KG4pLHI9MDtyPG47KytyKWZvcih2YXIgbyxhLHM9ZVtyXSxsPXMubGVuZ3RoLGM9aVtyXT1uZXcgQXJyYXkobCksdT0wO3U8bDsrK3UpKG89c1t1XSkmJihhPXQuY2FsbChvLG8uX19kYXRhX18sdSxzKSkmJigiX19kYXRhX18iaW4gbyYmKGEuX19kYXRhX189by5fX2RhdGFfXyksY1t1XT1hKTtyZXR1cm4gbmV3IFk5KGksdGhpcy5fcGFyZW50cyl9LHNlbGVjdEFsbDpmdW5jdGlvbiBaOSh0KXsiZnVuY3Rpb24iIT10eXBlb2YgdCYmKHQ9cTYodCkpO2Zvcih2YXIgZT10aGlzLl9ncm91cHMsbj1lLmxlbmd0aCxpPVtdLHI9W10sbz0wO288bjsrK28pZm9yKHZhciBhLHM9ZVtvXSxsPXMubGVuZ3RoLGM9MDtjPGw7KytjKShhPXNbY10pJiYoaS5wdXNoKHQuY2FsbChhLGEuX19kYXRhX18sYyxzKSksci5wdXNoKGEpKTtyZXR1cm4gbmV3IFk5KGkscil9LGZpbHRlcjpmdW5jdGlvbiBKOSh0KXsiZnVuY3Rpb24iIT10eXBlb2YgdCYmKHQ9SzYodCkpO2Zvcih2YXIgZT10aGlzLl9ncm91cHMsbj1lLmxlbmd0aCxpPW5ldyBBcnJheShuKSxyPTA7cjxuOysrcilmb3IodmFyIG8sYT1lW3JdLHM9YS5sZW5ndGgsbD1pW3JdPVtdLGM9MDtjPHM7KytjKShvPWFbY10pJiZ0LmNhbGwobyxvLl9fZGF0YV9fLGMsYSkmJmwucHVzaChvKTtyZXR1cm4gbmV3IFk5KGksdGhpcy5fcGFyZW50cyl9LGRhdGE6ZnVuY3Rpb24gUTkodCxlKXtpZighdClyZXR1cm4gZj1uZXcgQXJyYXkodGhpcy5zaXplKCkpLHU9LTEsdGhpcy5lYWNoKChmdW5jdGlvbih0KXtmWysrdV09dH0pKSxmO3ZhciBuPWU/dDk6UTYsaT10aGlzLl9wYXJlbnRzLHI9dGhpcy5fZ3JvdXBzOyJmdW5jdGlvbiIhPXR5cGVvZiB0JiYodD0oZnVuY3Rpb24gbyh0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19KSh0KSk7Zm9yKHZhciBhPXIubGVuZ3RoLHM9bmV3IEFycmF5KGEpLGw9bmV3IEFycmF5KGEpLGM9bmV3IEFycmF5KGEpLHU9MDt1PGE7Kyt1KXt2YXIgaD1pW3VdLGQ9clt1XSxwPWQubGVuZ3RoLGY9dC5jYWxsKGgsaCYmaC5fX2RhdGFfXyx1LGkpLG09Zi5sZW5ndGgsZz1sW3VdPW5ldyBBcnJheShtKSxfPXNbdV09bmV3IEFycmF5KG0pO24oaCxkLGcsXyxjW3VdPW5ldyBBcnJheShwKSxmLGUpO2Zvcih2YXIgeSx2LGI9MCx4PTA7YjxtOysrYilpZih5PWdbYl0pe2ZvcihiPj14JiYoeD1iKzEpOyEodj1fW3hdKSYmKyt4PG07KTt5Ll9uZXh0PXZ8fG51bGx9fXJldHVybihzPW5ldyBZOShzLGkpKS5fZW50ZXI9bCxzLl9leGl0PWMsc30sZW50ZXI6ZnVuY3Rpb24gdDgoKXtyZXR1cm4gbmV3IFk5KHRoaXMuX2VudGVyfHx0aGlzLl9ncm91cHMubWFwKFo2KSx0aGlzLl9wYXJlbnRzKX0sZXhpdDpmdW5jdGlvbiBlOCgpe3JldHVybiBuZXcgWTkodGhpcy5fZXhpdHx8dGhpcy5fZ3JvdXBzLm1hcChaNiksdGhpcy5fcGFyZW50cyl9LG1lcmdlOmZ1bmN0aW9uIG44KHQpe2Zvcih2YXIgZT10aGlzLl9ncm91cHMsbj10Ll9ncm91cHMsaT1lLmxlbmd0aCxyPU1hdGgubWluKGksbi5sZW5ndGgpLG89bmV3IEFycmF5KGkpLGE9MDthPHI7KythKWZvcih2YXIgcyxsPWVbYV0sYz1uW2FdLHU9bC5sZW5ndGgsaD1vW2FdPW5ldyBBcnJheSh1KSxkPTA7ZDx1OysrZCkocz1sW2RdfHxjW2RdKSYmKGhbZF09cyk7Zm9yKDthPGk7KythKW9bYV09ZVthXTtyZXR1cm4gbmV3IFk5KG8sdGhpcy5fcGFyZW50cyl9LG9yZGVyOmZ1bmN0aW9uIGk4KCl7Zm9yKHZhciB0PXRoaXMuX2dyb3VwcyxlPS0xLG49dC5sZW5ndGg7KytlPG47KWZvcih2YXIgaSxyPXRbZV0sbz1yLmxlbmd0aC0xLGE9cltvXTstLW8+PTA7KShpPXJbb10pJiYoYSYmYSE9PWkubmV4dFNpYmxpbmcmJmEucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoaSxhKSxhPWkpO3JldHVybiB0aGlzfSxzb3J0OmZ1bmN0aW9uIHI4KHQpe2Z1bmN0aW9uIGUoZSxuKXtyZXR1cm4gZSYmbj90KGUuX19kYXRhX18sbi5fX2RhdGFfXyk6IWUtIW59dHx8KHQ9ZTkpO2Zvcih2YXIgbj10aGlzLl9ncm91cHMsaT1uLmxlbmd0aCxyPW5ldyBBcnJheShpKSxvPTA7bzxpOysrbyl7Zm9yKHZhciBhLHM9bltvXSxsPXMubGVuZ3RoLGM9cltvXT1uZXcgQXJyYXkobCksdT0wO3U8bDsrK3UpKGE9c1t1XSkmJihjW3VdPWEpO2Muc29ydChlKX1yZXR1cm4gbmV3IFk5KHIsdGhpcy5fcGFyZW50cykub3JkZXIoKX0sY2FsbDpmdW5jdGlvbiBvOCgpe3ZhciB0PWFyZ3VtZW50c1swXTtyZXR1cm4gYXJndW1lbnRzWzBdPXRoaXMsdC5hcHBseShudWxsLGFyZ3VtZW50cyksdGhpc30sbm9kZXM6ZnVuY3Rpb24gYTgoKXt2YXIgdD1uZXcgQXJyYXkodGhpcy5zaXplKCkpLGU9LTE7cmV0dXJuIHRoaXMuZWFjaCgoZnVuY3Rpb24oKXt0WysrZV09dGhpc30pKSx0fSxub2RlOmZ1bmN0aW9uIHM4KCl7Zm9yKHZhciB0PXRoaXMuX2dyb3VwcyxlPTAsbj10Lmxlbmd0aDtlPG47KytlKWZvcih2YXIgaT10W2VdLHI9MCxvPWkubGVuZ3RoO3I8bzsrK3Ipe3ZhciBhPWlbcl07aWYoYSlyZXR1cm4gYX1yZXR1cm4gbnVsbH0sc2l6ZTpmdW5jdGlvbiBsOCgpe3ZhciB0PTA7cmV0dXJuIHRoaXMuZWFjaCgoZnVuY3Rpb24oKXsrK3R9KSksdH0sZW1wdHk6ZnVuY3Rpb24gYzgoKXtyZXR1cm4hdGhpcy5ub2RlKCl9LGVhY2g6ZnVuY3Rpb24gdTgodCl7Zm9yKHZhciBlPXRoaXMuX2dyb3VwcyxuPTAsaT1lLmxlbmd0aDtuPGk7KytuKWZvcih2YXIgcixvPWVbbl0sYT0wLHM9by5sZW5ndGg7YTxzOysrYSkocj1vW2FdKSYmdC5jYWxsKHIsci5fX2RhdGFfXyxhLG8pO3JldHVybiB0aGlzfSxhdHRyOmZ1bmN0aW9uIGg4KHQsZSl7dmFyIG49SDYodCk7aWYoYXJndW1lbnRzLmxlbmd0aDwyKXt2YXIgaT10aGlzLm5vZGUoKTtyZXR1cm4gbi5sb2NhbD9pLmdldEF0dHJpYnV0ZU5TKG4uc3BhY2Usbi5sb2NhbCk6aS5nZXRBdHRyaWJ1dGUobil9cmV0dXJuIHRoaXMuZWFjaCgobnVsbD09ZT9uLmxvY2FsP2k5Om45OiJmdW5jdGlvbiI9PXR5cGVvZiBlP24ubG9jYWw/czk6YTk6bi5sb2NhbD9vOTpyOSkobixlKSl9LHN0eWxlOmZ1bmN0aW9uIGQ4KHQsZSxuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD4xP3RoaXMuZWFjaCgobnVsbD09ZT9jOToiZnVuY3Rpb24iPT10eXBlb2YgZT9oOTp1OSkodCxlLG51bGw9PW4/IiI6bikpOmQ5KHRoaXMubm9kZSgpLHQpfSxwcm9wZXJ0eTpmdW5jdGlvbiBwOCh0LGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPjE/dGhpcy5lYWNoKChudWxsPT1lP3A5OiJmdW5jdGlvbiI9PXR5cGVvZiBlP205OmY5KSh0LGUpKTp0aGlzLm5vZGUoKVt0XX0sY2xhc3NlZDpmdW5jdGlvbiBmOCh0LGUpe3ZhciBuPWc5KHQrIiIpO2lmKGFyZ3VtZW50cy5sZW5ndGg8Mil7Zm9yKHZhciBpPV85KHRoaXMubm9kZSgpKSxyPS0xLG89bi5sZW5ndGg7KytyPG87KWlmKCFpLmNvbnRhaW5zKG5bcl0pKXJldHVybiExO3JldHVybiEwfXJldHVybiB0aGlzLmVhY2goKCJmdW5jdGlvbiI9PXR5cGVvZiBlP1M5OmU/eDk6dzkpKG4sZSkpfSx0ZXh0OmZ1bmN0aW9uIG04KHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3RoaXMuZWFjaChudWxsPT10P005OigiZnVuY3Rpb24iPT10eXBlb2YgdD9UOTpFOSkodCkpOnRoaXMubm9kZSgpLnRleHRDb250ZW50fSxodG1sOmZ1bmN0aW9uIGc4KHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3RoaXMuZWFjaChudWxsPT10P0M5OigiZnVuY3Rpb24iPT10eXBlb2YgdD9rOTpBOSkodCkpOnRoaXMubm9kZSgpLmlubmVySFRNTH0scmFpc2U6ZnVuY3Rpb24gXzgoKXtyZXR1cm4gdGhpcy5lYWNoKEw5KX0sbG93ZXI6ZnVuY3Rpb24geTgoKXtyZXR1cm4gdGhpcy5lYWNoKFA5KX0sYXBwZW5kOmZ1bmN0aW9uIHY4KHQpe3ZhciBlPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6VTYodCk7cmV0dXJuIHRoaXMuc2VsZWN0KChmdW5jdGlvbigpe3JldHVybiB0aGlzLmFwcGVuZENoaWxkKGUuYXBwbHkodGhpcyxhcmd1bWVudHMpKX0pKX0saW5zZXJ0OmZ1bmN0aW9uIGI4KHQsZSl7dmFyIG49ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpVNih0KSxpPW51bGw9PWU/Tjk6ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZTpHNihlKTtyZXR1cm4gdGhpcy5zZWxlY3QoKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaW5zZXJ0QmVmb3JlKG4uYXBwbHkodGhpcyxhcmd1bWVudHMpLGkuYXBwbHkodGhpcyxhcmd1bWVudHMpfHxudWxsKX0pKX0scmVtb3ZlOmZ1bmN0aW9uIHg4KCl7cmV0dXJuIHRoaXMuZWFjaChJOSl9LGNsb25lOmZ1bmN0aW9uIHc4KHQpe3JldHVybiB0aGlzLnNlbGVjdCh0P085OlI5KX0sZGF0dW06ZnVuY3Rpb24gUzgodCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5wcm9wZXJ0eSgiX19kYXRhX18iLHQpOnRoaXMubm9kZSgpLl9fZGF0YV9ffSxvbjpmdW5jdGlvbiBNOCh0LGUsbil7dmFyIGkscixvPUY5KHQrIiIpLGE9by5sZW5ndGg7aWYoIShhcmd1bWVudHMubGVuZ3RoPDIpKXtmb3Iocz1lP1U5OlY5LG51bGw9PW4mJihuPSExKSxpPTA7aTxhOysraSl0aGlzLmVhY2gocyhvW2ldLGUsbikpO3JldHVybiB0aGlzfXZhciBzPXRoaXMubm9kZSgpLl9fb247aWYocylmb3IodmFyIGwsYz0wLHU9cy5sZW5ndGg7Yzx1OysrYylmb3IoaT0wLGw9c1tjXTtpPGE7KytpKWlmKChyPW9baV0pLnR5cGU9PT1sLnR5cGUmJnIubmFtZT09PWwubmFtZSlyZXR1cm4gbC52YWx1ZX0sZGlzcGF0Y2g6ZnVuY3Rpb24gRTgodCxlKXtyZXR1cm4gdGhpcy5lYWNoKCgiZnVuY3Rpb24iPT10eXBlb2YgZT9XOTpHOSkodCxlKSl9fTt2YXIgVDg9MDtmdW5jdGlvbiBDOCgpe3JldHVybiBuZXcgQTh9ZnVuY3Rpb24gQTgoKXt0aGlzLl89IkAiKygrK1Q4KS50b1N0cmluZygzNil9ZnVuY3Rpb24gazgoKXtmb3IodmFyIHQsZT1EOTt0PWUuc291cmNlRXZlbnQ7KWU9dDtyZXR1cm4gZX1mdW5jdGlvbiBMOCh0LGUpe3ZhciBuPXQub3duZXJTVkdFbGVtZW50fHx0O2lmKG4uY3JlYXRlU1ZHUG9pbnQpe3ZhciBpPW4uY3JlYXRlU1ZHUG9pbnQoKTtyZXR1cm4gaS54PWUuY2xpZW50WCxpLnk9ZS5jbGllbnRZLFsoaT1pLm1hdHJpeFRyYW5zZm9ybSh0LmdldFNjcmVlbkNUTSgpLmludmVyc2UoKSkpLngsaS55XX12YXIgcj10LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3JldHVybltlLmNsaWVudFgtci5sZWZ0LXQuY2xpZW50TGVmdCxlLmNsaWVudFktci50b3AtdC5jbGllbnRUb3BdfUE4LnByb3RvdHlwZT1DOC5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOkE4LGdldDpmdW5jdGlvbih0KXtmb3IodmFyIGU9dGhpcy5fOyEoZSBpbiB0KTspaWYoISh0PXQucGFyZW50Tm9kZSkpcmV0dXJuO3JldHVybiB0W2VdfSxzZXQ6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdFt0aGlzLl9dPWV9LHJlbW92ZTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fIGluIHQmJmRlbGV0ZSB0W3RoaXMuX119LHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX319O3ZhciBQOD1NYXRoLlBJLE44PTIqUDgsSTg9MWUtNixSOD1OOC1JODtmdW5jdGlvbiBPOCgpe3RoaXMuX3gwPXRoaXMuX3kwPXRoaXMuX3gxPXRoaXMuX3kxPW51bGwsdGhpcy5fPSIifWZ1bmN0aW9uIHo4KCl7cmV0dXJuIG5ldyBPOH1mdW5jdGlvbiBEOCh0KXtyZXR1cm4gZnVuY3Rpb24gZSgpe3JldHVybiB0fX1POC5wcm90b3R5cGU9ejgucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpPOCxtb3ZlVG86ZnVuY3Rpb24odCxlKXt0aGlzLl8rPSJNIisodGhpcy5feDA9dGhpcy5feDE9K3QpKyIsIisodGhpcy5feTA9dGhpcy5feTE9K2UpfSxjbG9zZVBhdGg6ZnVuY3Rpb24oKXtudWxsIT09dGhpcy5feDEmJih0aGlzLl94MT10aGlzLl94MCx0aGlzLl95MT10aGlzLl95MCx0aGlzLl8rPSJaIil9LGxpbmVUbzpmdW5jdGlvbih0LGUpe3RoaXMuXys9IkwiKyh0aGlzLl94MT0rdCkrIiwiKyh0aGlzLl95MT0rZSl9LHF1YWRyYXRpY0N1cnZlVG86ZnVuY3Rpb24odCxlLG4saSl7dGhpcy5fKz0iUSIrICt0KyIsIisgK2UrIiwiKyh0aGlzLl94MT0rbikrIiwiKyh0aGlzLl95MT0raSl9LGJlemllckN1cnZlVG86ZnVuY3Rpb24odCxlLG4saSxyLG8pe3RoaXMuXys9IkMiKyArdCsiLCIrICtlKyIsIisgK24rIiwiKyAraSsiLCIrKHRoaXMuX3gxPStyKSsiLCIrKHRoaXMuX3kxPStvKX0sYXJjVG86ZnVuY3Rpb24odCxlLG4saSxyKXt2YXIgbz10aGlzLl94MSxhPXRoaXMuX3kxLHM9KG49K24pLSh0PSt0KSxsPShpPStpKS0oZT0rZSksYz1vLXQsdT1hLWUsaD1jKmMrdSp1O2lmKChyPStyKTwwKXRocm93IG5ldyBFcnJvcigibmVnYXRpdmUgcmFkaXVzOiAiK3IpO2lmKG51bGw9PT10aGlzLl94MSl0aGlzLl8rPSJNIisodGhpcy5feDE9dCkrIiwiKyh0aGlzLl95MT1lKTtlbHNlIGlmKGg+STgpaWYoTWF0aC5hYnModSpzLWwqYyk+STgmJnIpe3ZhciBkPW4tbyxwPWktYSxmPXMqcytsKmwsbT1kKmQrcCpwLGc9TWF0aC5zcXJ0KGYpLF89TWF0aC5zcXJ0KGgpLHk9cipNYXRoLnRhbigoUDgtTWF0aC5hY29zKChmK2gtbSkvKDIqZypfKSkpLzIpLHY9eS9fLGI9eS9nO01hdGguYWJzKHYtMSk+STgmJih0aGlzLl8rPSJMIisodCt2KmMpKyIsIisoZSt2KnUpKSx0aGlzLl8rPSJBIityKyIsIityKyIsMCwwLCIrICsodSpkPmMqcCkrIiwiKyh0aGlzLl94MT10K2IqcykrIiwiKyh0aGlzLl95MT1lK2IqbCl9ZWxzZSB0aGlzLl8rPSJMIisodGhpcy5feDE9dCkrIiwiKyh0aGlzLl95MT1lKTtlbHNlO30sYXJjOmZ1bmN0aW9uKHQsZSxuLGkscixvKXt0PSt0LGU9K2Usbz0hIW87dmFyIGE9KG49K24pKk1hdGguY29zKGkpLHM9bipNYXRoLnNpbihpKSxsPXQrYSxjPWUrcyx1PTFebyxoPW8/aS1yOnItaTtpZihuPDApdGhyb3cgbmV3IEVycm9yKCJuZWdhdGl2ZSByYWRpdXM6ICIrbik7bnVsbD09PXRoaXMuX3gxP3RoaXMuXys9Ik0iK2wrIiwiK2M6KE1hdGguYWJzKHRoaXMuX3gxLWwpPkk4fHxNYXRoLmFicyh0aGlzLl95MS1jKT5JOCkmJih0aGlzLl8rPSJMIitsKyIsIitjKSxuJiYoaDwwJiYoaD1oJU44K044KSxoPlI4P3RoaXMuXys9IkEiK24rIiwiK24rIiwwLDEsIit1KyIsIisodC1hKSsiLCIrKGUtcykrIkEiK24rIiwiK24rIiwwLDEsIit1KyIsIisodGhpcy5feDE9bCkrIiwiKyh0aGlzLl95MT1jKTpoPkk4JiYodGhpcy5fKz0iQSIrbisiLCIrbisiLDAsIisgKyhoPj1QOCkrIiwiK3UrIiwiKyh0aGlzLl94MT10K24qTWF0aC5jb3MocikpKyIsIisodGhpcy5feTE9ZStuKk1hdGguc2luKHIpKSkpfSxyZWN0OmZ1bmN0aW9uKHQsZSxuLGkpe3RoaXMuXys9Ik0iKyh0aGlzLl94MD10aGlzLl94MT0rdCkrIiwiKyh0aGlzLl95MD10aGlzLl95MT0rZSkrImgiKyArbisidiIrICtpKyJoIistbisiWiJ9LHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX319O3ZhciBCOD1NYXRoLmFicyxIOD1NYXRoLmF0YW4yLEY4PU1hdGguY29zLFY4PU1hdGgubWF4LFU4PU1hdGgubWluLGo4PU1hdGguc2luLEc4PU1hdGguc3FydCxXOD0xZS0xMixxOD1NYXRoLlBJLFk4PXE4LzIsWDg9MipxODtmdW5jdGlvbiAkOCh0KXtyZXR1cm4gdD4xPzA6dDwtMT9xODpNYXRoLmFjb3ModCl9ZnVuY3Rpb24gSzgodCl7cmV0dXJuIHQ+PTE/WTg6dDw9LTE/LVk4Ok1hdGguYXNpbih0KX1mdW5jdGlvbiBaOCh0KXtyZXR1cm4gdC5pbm5lclJhZGl1c31mdW5jdGlvbiBKOCh0KXtyZXR1cm4gdC5vdXRlclJhZGl1c31mdW5jdGlvbiBROCh0KXtyZXR1cm4gdC5zdGFydEFuZ2xlfWZ1bmN0aW9uIHQ3KHQpe3JldHVybiB0LmVuZEFuZ2xlfWZ1bmN0aW9uIGU3KHQpe3JldHVybiB0JiZ0LnBhZEFuZ2xlfWZ1bmN0aW9uIG43KHQsZSxuLGkscixvLGEscyl7dmFyIGw9bi10LGM9aS1lLHU9YS1yLGg9cy1vLGQ9KHUqKGUtbyktaCoodC1yKSkvKGgqbC11KmMpO3JldHVyblt0K2QqbCxlK2QqY119ZnVuY3Rpb24gaTcodCxlLG4saSxyLG8sYSl7dmFyIHM9dC1uLGw9ZS1pLGM9KGE/bzotbykvRzgocypzK2wqbCksdT1jKmwsaD0tYypzLGQ9dCt1LHA9ZStoLGY9bit1LG09aStoLGc9KGQrZikvMixfPShwK20pLzIseT1mLWQsdj1tLXAsYj15Knkrdip2LHg9ci1vLHc9ZCptLWYqcCxTPSh2PDA/LTE6MSkqRzgoVjgoMCx4KngqYi13KncpKSxNPSh3KnYteSpTKS9iLEU9KC13KnktdipTKS9iLFQ9KHcqdit5KlMpL2IsQz0oLXcqeSt2KlMpL2IsQT1NLWcsaz1FLV8sTD1ULWcsUD1DLV87cmV0dXJuIEEqQStrKms+TCpMK1AqUCYmKE09VCxFPUMpLHtjeDpNLGN5OkUseDAxOi11LHkwMTotaCx4MTE6TSooci94LTEpLHkxMTpFKihyL3gtMSl9fWZ1bmN0aW9uIHI3KHQpe3RoaXMuX2NvbnRleHQ9dH1mdW5jdGlvbiBvNyh0KXtyZXR1cm4gbmV3IHI3KHQpfWZ1bmN0aW9uIGE3KHQpe3JldHVybiB0WzBdfWZ1bmN0aW9uIHM3KHQpe3JldHVybiB0WzFdfWZ1bmN0aW9uIGw3KCl7dmFyIHQ9YTcsZT1zNyxuPUQ4KCEwKSxpPW51bGwscj1vNyxvPW51bGw7ZnVuY3Rpb24gYShhKXt2YXIgcyxsLGMsdT1hLmxlbmd0aCxoPSExO2ZvcihudWxsPT1pJiYobz1yKGM9ejgoKSkpLHM9MDtzPD11OysrcykhKHM8dSYmbihsPWFbc10scyxhKSk9PT1oJiYoKGg9IWgpP28ubGluZVN0YXJ0KCk6by5saW5lRW5kKCkpLGgmJm8ucG9pbnQoK3QobCxzLGEpLCtlKGwscyxhKSk7aWYoYylyZXR1cm4gbz1udWxsLGMrIiJ8fG51bGx9cmV0dXJuIGEueD1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0iZnVuY3Rpb24iPT10eXBlb2YgZT9lOkQ4KCtlKSxhKTp0fSxhLnk9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpEOCgrdCksYSk6ZX0sYS5kZWZpbmVkPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6RDgoISF0KSxhKTpufSxhLmN1cnZlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPXQsbnVsbCE9aSYmKG89cihpKSksYSk6cn0sYS5jb250ZXh0PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhudWxsPT10P2k9bz1udWxsOm89cihpPXQpLGEpOml9LGF9ZnVuY3Rpb24gYzcoKXt2YXIgdD1hNyxlPW51bGwsbj1EOCgwKSxpPXM3LHI9RDgoITApLG89bnVsbCxhPW83LHM9bnVsbDtmdW5jdGlvbiBsKGwpe3ZhciBjLHUsaCxkLHAsZj1sLmxlbmd0aCxtPSExLGc9bmV3IEFycmF5KGYpLF89bmV3IEFycmF5KGYpO2ZvcihudWxsPT1vJiYocz1hKHA9ejgoKSkpLGM9MDtjPD1mOysrYyl7aWYoIShjPGYmJnIoZD1sW2NdLGMsbCkpPT09bSlpZihtPSFtKXU9YyxzLmFyZWFTdGFydCgpLHMubGluZVN0YXJ0KCk7ZWxzZXtmb3Iocy5saW5lRW5kKCkscy5saW5lU3RhcnQoKSxoPWMtMTtoPj11Oy0taClzLnBvaW50KGdbaF0sX1toXSk7cy5saW5lRW5kKCkscy5hcmVhRW5kKCl9bSYmKGdbY109K3QoZCxjLGwpLF9bY109K24oZCxjLGwpLHMucG9pbnQoZT8rZShkLGMsbCk6Z1tjXSxpPytpKGQsYyxsKTpfW2NdKSl9aWYocClyZXR1cm4gcz1udWxsLHArIiJ8fG51bGx9ZnVuY3Rpb24gYygpe3JldHVybiBsNygpLmRlZmluZWQocikuY3VydmUoYSkuY29udGV4dChvKX1yZXR1cm4gbC54PWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PSJmdW5jdGlvbiI9PXR5cGVvZiBuP246RDgoK24pLGU9bnVsbCxsKTp0fSxsLngwPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PSJmdW5jdGlvbiI9PXR5cGVvZiBlP2U6RDgoK2UpLGwpOnR9LGwueDE9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9bnVsbD09dD9udWxsOiJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6RDgoK3QpLGwpOmV9LGwueT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj0iZnVuY3Rpb24iPT10eXBlb2YgdD90OkQ4KCt0KSxpPW51bGwsbCk6bn0sbC55MD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj0iZnVuY3Rpb24iPT10eXBlb2YgdD90OkQ4KCt0KSxsKTpufSxsLnkxPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPW51bGw9PXQ/bnVsbDoiZnVuY3Rpb24iPT10eXBlb2YgdD90OkQ4KCt0KSxsKTppfSxsLmxpbmVYMD1sLmxpbmVZMD1mdW5jdGlvbigpe3JldHVybiBjKCkueCh0KS55KG4pfSxsLmxpbmVZMT1mdW5jdGlvbigpe3JldHVybiBjKCkueCh0KS55KGkpfSxsLmxpbmVYMT1mdW5jdGlvbigpe3JldHVybiBjKCkueChlKS55KG4pfSxsLmRlZmluZWQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpEOCghIXQpLGwpOnJ9LGwuY3VydmU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9dCxudWxsIT1vJiYocz1hKG8pKSxsKTphfSxsLmNvbnRleHQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG51bGw9PXQ/bz1zPW51bGw6cz1hKG89dCksbCk6b30sbH1mdW5jdGlvbiB1Nyh0LGUpe3JldHVybiBlPHQ/LTE6ZT50PzE6ZT49dD8wOk5hTn1mdW5jdGlvbiBoNyh0KXtyZXR1cm4gdH1yNy5wcm90b3R5cGU9e2FyZWFTdGFydDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9MH0sYXJlYUVuZDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9TmFOfSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl9wb2ludD0wfSxsaW5lRW5kOmZ1bmN0aW9uKCl7KHRoaXMuX2xpbmV8fDAhPT10aGlzLl9saW5lJiYxPT09dGhpcy5fcG9pbnQpJiZ0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpLHRoaXMuX2xpbmU9MS10aGlzLl9saW5lfSxwb2ludDpmdW5jdGlvbih0LGUpe3N3aXRjaCh0PSt0LGU9K2UsdGhpcy5fcG9pbnQpe2Nhc2UgMDp0aGlzLl9wb2ludD0xLHRoaXMuX2xpbmU/dGhpcy5fY29udGV4dC5saW5lVG8odCxlKTp0aGlzLl9jb250ZXh0Lm1vdmVUbyh0LGUpO2JyZWFrO2Nhc2UgMTp0aGlzLl9wb2ludD0yO2RlZmF1bHQ6dGhpcy5fY29udGV4dC5saW5lVG8odCxlKX19fTt2YXIgZDc9ZjcobzcpO2Z1bmN0aW9uIHA3KHQpe3RoaXMuX2N1cnZlPXR9ZnVuY3Rpb24gZjcodCl7ZnVuY3Rpb24gZShlKXtyZXR1cm4gbmV3IHA3KHQoZSkpfXJldHVybiBlLl9jdXJ2ZT10LGV9ZnVuY3Rpb24gbTcodCl7dmFyIGU9dC5jdXJ2ZTtyZXR1cm4gdC5hbmdsZT10LngsZGVsZXRlIHQueCx0LnJhZGl1cz10LnksZGVsZXRlIHQueSx0LmN1cnZlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP2UoZjcodCkpOmUoKS5fY3VydmV9LHR9ZnVuY3Rpb24gZzcoKXtyZXR1cm4gbTcobDcoKS5jdXJ2ZShkNykpfWZ1bmN0aW9uIF83KCl7dmFyIHQ9YzcoKS5jdXJ2ZShkNyksZT10LmN1cnZlLG49dC5saW5lWDAsaT10LmxpbmVYMSxyPXQubGluZVkwLG89dC5saW5lWTE7cmV0dXJuIHQuYW5nbGU9dC54LGRlbGV0ZSB0LngsdC5zdGFydEFuZ2xlPXQueDAsZGVsZXRlIHQueDAsdC5lbmRBbmdsZT10LngxLGRlbGV0ZSB0LngxLHQucmFkaXVzPXQueSxkZWxldGUgdC55LHQuaW5uZXJSYWRpdXM9dC55MCxkZWxldGUgdC55MCx0Lm91dGVyUmFkaXVzPXQueTEsZGVsZXRlIHQueTEsdC5saW5lU3RhcnRBbmdsZT1mdW5jdGlvbigpe3JldHVybiBtNyhuKCkpfSxkZWxldGUgdC5saW5lWDAsdC5saW5lRW5kQW5nbGU9ZnVuY3Rpb24oKXtyZXR1cm4gbTcoaSgpKX0sZGVsZXRlIHQubGluZVgxLHQubGluZUlubmVyUmFkaXVzPWZ1bmN0aW9uKCl7cmV0dXJuIG03KHIoKSl9LGRlbGV0ZSB0LmxpbmVZMCx0LmxpbmVPdXRlclJhZGl1cz1mdW5jdGlvbigpe3JldHVybiBtNyhvKCkpfSxkZWxldGUgdC5saW5lWTEsdC5jdXJ2ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD9lKGY3KHQpKTplKCkuX2N1cnZlfSx0fWZ1bmN0aW9uIHk3KHQsZSl7cmV0dXJuWyhlPStlKSpNYXRoLmNvcyh0LT1NYXRoLlBJLzIpLGUqTWF0aC5zaW4odCldfXA3LnByb3RvdHlwZT17YXJlYVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fY3VydmUuYXJlYVN0YXJ0KCl9LGFyZWFFbmQ6ZnVuY3Rpb24oKXt0aGlzLl9jdXJ2ZS5hcmVhRW5kKCl9LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX2N1cnZlLmxpbmVTdGFydCgpfSxsaW5lRW5kOmZ1bmN0aW9uKCl7dGhpcy5fY3VydmUubGluZUVuZCgpfSxwb2ludDpmdW5jdGlvbih0LGUpe3RoaXMuX2N1cnZlLnBvaW50KGUqTWF0aC5zaW4odCksZSotTWF0aC5jb3ModCkpfX07dmFyIHY3PUFycmF5LnByb3RvdHlwZS5zbGljZTtmdW5jdGlvbiBiNyh0KXtyZXR1cm4gdC5zb3VyY2V9ZnVuY3Rpb24geDcodCl7cmV0dXJuIHQudGFyZ2V0fWZ1bmN0aW9uIHc3KHQpe3ZhciBlPWI3LG49eDcsaT1hNyxyPXM3LG89bnVsbDtmdW5jdGlvbiBhKCl7dmFyIGEscz12Ny5jYWxsKGFyZ3VtZW50cyksbD1lLmFwcGx5KHRoaXMscyksYz1uLmFwcGx5KHRoaXMscyk7aWYob3x8KG89YT16OCgpKSx0KG8sK2kuYXBwbHkodGhpcywoc1swXT1sLHMpKSwrci5hcHBseSh0aGlzLHMpLCtpLmFwcGx5KHRoaXMsKHNbMF09YyxzKSksK3IuYXBwbHkodGhpcyxzKSksYSlyZXR1cm4gbz1udWxsLGErIiJ8fG51bGx9cmV0dXJuIGEuc291cmNlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPXQsYSk6ZX0sYS50YXJnZXQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49dCxhKTpufSxhLng9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpEOCgrdCksYSk6aX0sYS55PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6RDgoK3QpLGEpOnJ9LGEuY29udGV4dD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz1udWxsPT10P251bGw6dCxhKTpvfSxhfWZ1bmN0aW9uIFM3KHQsZSxuLGkscil7dC5tb3ZlVG8oZSxuKSx0LmJlemllckN1cnZlVG8oZT0oZStpKS8yLG4sZSxyLGkscil9ZnVuY3Rpb24gTTcodCxlLG4saSxyKXt0Lm1vdmVUbyhlLG4pLHQuYmV6aWVyQ3VydmVUbyhlLG49KG4rcikvMixpLG4saSxyKX1mdW5jdGlvbiBFNyh0LGUsbixpLHIpe3ZhciBvPXk3KGUsbiksYT15NyhlLG49KG4rcikvMikscz15NyhpLG4pLGw9eTcoaSxyKTt0Lm1vdmVUbyhvWzBdLG9bMV0pLHQuYmV6aWVyQ3VydmVUbyhhWzBdLGFbMV0sc1swXSxzWzFdLGxbMF0sbFsxXSl9dmFyIFQ3PXtkcmF3OmZ1bmN0aW9uKHQsZSl7dmFyIG49TWF0aC5zcXJ0KGUvcTgpO3QubW92ZVRvKG4sMCksdC5hcmMoMCwwLG4sMCxYOCl9fSxDNz17ZHJhdzpmdW5jdGlvbih0LGUpe3ZhciBuPU1hdGguc3FydChlLzUpLzI7dC5tb3ZlVG8oLTMqbiwtbiksdC5saW5lVG8oLW4sLW4pLHQubGluZVRvKC1uLC0zKm4pLHQubGluZVRvKG4sLTMqbiksdC5saW5lVG8obiwtbiksdC5saW5lVG8oMypuLC1uKSx0LmxpbmVUbygzKm4sbiksdC5saW5lVG8obixuKSx0LmxpbmVUbyhuLDMqbiksdC5saW5lVG8oLW4sMypuKSx0LmxpbmVUbygtbixuKSx0LmxpbmVUbygtMypuLG4pLHQuY2xvc2VQYXRoKCl9fSxBNz1NYXRoLnNxcnQoMS8zKSxrNz0yKkE3LEw3PXtkcmF3OmZ1bmN0aW9uKHQsZSl7dmFyIG49TWF0aC5zcXJ0KGUvazcpLGk9bipBNzt0Lm1vdmVUbygwLC1uKSx0LmxpbmVUbyhpLDApLHQubGluZVRvKDAsbiksdC5saW5lVG8oLWksMCksdC5jbG9zZVBhdGgoKX19LFA3PU1hdGguc2luKHE4LzEwKS9NYXRoLnNpbig3KnE4LzEwKSxONz1NYXRoLnNpbihYOC8xMCkqUDcsSTc9LU1hdGguY29zKFg4LzEwKSpQNyxSNz17ZHJhdzpmdW5jdGlvbih0LGUpe3ZhciBuPU1hdGguc3FydCguODkwODEzMDkxNTI5Mjg1MiplKSxpPU43Km4scj1JNypuO3QubW92ZVRvKDAsLW4pLHQubGluZVRvKGkscik7Zm9yKHZhciBvPTE7bzw1Oysrbyl7dmFyIGE9WDgqby81LHM9TWF0aC5jb3MoYSksbD1NYXRoLnNpbihhKTt0LmxpbmVUbyhsKm4sLXMqbiksdC5saW5lVG8ocyppLWwqcixsKmkrcypyKX10LmNsb3NlUGF0aCgpfX0sTzc9e2RyYXc6ZnVuY3Rpb24odCxlKXt2YXIgbj1NYXRoLnNxcnQoZSksaT0tbi8yO3QucmVjdChpLGksbixuKX19LHo3PU1hdGguc3FydCgzKSxENz17ZHJhdzpmdW5jdGlvbih0LGUpe3ZhciBuPS1NYXRoLnNxcnQoZS8oMyp6NykpO3QubW92ZVRvKDAsMipuKSx0LmxpbmVUbygtejcqbiwtbiksdC5saW5lVG8oejcqbiwtbiksdC5jbG9zZVBhdGgoKX19LEI3PS0uNSxINz1NYXRoLnNxcnQoMykvMixGNz0xL01hdGguc3FydCgxMiksVjc9MyooRjcvMisxKSxVNz17ZHJhdzpmdW5jdGlvbih0LGUpe3ZhciBuPU1hdGguc3FydChlL1Y3KSxpPW4vMixyPW4qRjcsbz1pLGE9bipGNytuLHM9LW8sbD1hO3QubW92ZVRvKGksciksdC5saW5lVG8obyxhKSx0LmxpbmVUbyhzLGwpLHQubGluZVRvKEI3KmktSDcqcixINyppK0I3KnIpLHQubGluZVRvKEI3Km8tSDcqYSxINypvK0I3KmEpLHQubGluZVRvKEI3KnMtSDcqbCxINypzK0I3KmwpLHQubGluZVRvKEI3KmkrSDcqcixCNypyLUg3KmkpLHQubGluZVRvKEI3Km8rSDcqYSxCNyphLUg3Km8pLHQubGluZVRvKEI3KnMrSDcqbCxCNypsLUg3KnMpLHQuY2xvc2VQYXRoKCl9fSxqNz1bVDcsQzcsTDcsTzcsUjcsRDcsVTddO2Z1bmN0aW9uIEc3KCl7fWZ1bmN0aW9uIFc3KHQsZSxuKXt0Ll9jb250ZXh0LmJlemllckN1cnZlVG8oKDIqdC5feDArdC5feDEpLzMsKDIqdC5feTArdC5feTEpLzMsKHQuX3gwKzIqdC5feDEpLzMsKHQuX3kwKzIqdC5feTEpLzMsKHQuX3gwKzQqdC5feDErZSkvNiwodC5feTArNCp0Ll95MStuKS82KX1mdW5jdGlvbiBxNyh0KXt0aGlzLl9jb250ZXh0PXR9ZnVuY3Rpb24gWTcodCl7dGhpcy5fY29udGV4dD10fWZ1bmN0aW9uIFg3KHQpe3RoaXMuX2NvbnRleHQ9dH1mdW5jdGlvbiAkNyh0LGUpe3RoaXMuX2Jhc2lzPW5ldyBxNyh0KSx0aGlzLl9iZXRhPWV9cTcucHJvdG90eXBlPXthcmVhU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPTB9LGFyZWFFbmQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPU5hTn0sbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5feDA9dGhpcy5feDE9dGhpcy5feTA9dGhpcy5feTE9TmFOLHRoaXMuX3BvaW50PTB9LGxpbmVFbmQ6ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5fcG9pbnQpe2Nhc2UgMzpXNyh0aGlzLHRoaXMuX3gxLHRoaXMuX3kxKTtjYXNlIDI6dGhpcy5fY29udGV4dC5saW5lVG8odGhpcy5feDEsdGhpcy5feTEpfSh0aGlzLl9saW5lfHwwIT09dGhpcy5fbGluZSYmMT09PXRoaXMuX3BvaW50KSYmdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKSx0aGlzLl9saW5lPTEtdGhpcy5fbGluZX0scG9pbnQ6ZnVuY3Rpb24odCxlKXtzd2l0Y2godD0rdCxlPStlLHRoaXMuX3BvaW50KXtjYXNlIDA6dGhpcy5fcG9pbnQ9MSx0aGlzLl9saW5lP3RoaXMuX2NvbnRleHQubGluZVRvKHQsZSk6dGhpcy5fY29udGV4dC5tb3ZlVG8odCxlKTticmVhaztjYXNlIDE6dGhpcy5fcG9pbnQ9MjticmVhaztjYXNlIDI6dGhpcy5fcG9pbnQ9Myx0aGlzLl9jb250ZXh0LmxpbmVUbygoNSp0aGlzLl94MCt0aGlzLl94MSkvNiwoNSp0aGlzLl95MCt0aGlzLl95MSkvNik7ZGVmYXVsdDpXNyh0aGlzLHQsZSl9dGhpcy5feDA9dGhpcy5feDEsdGhpcy5feDE9dCx0aGlzLl95MD10aGlzLl95MSx0aGlzLl95MT1lfX0sWTcucHJvdG90eXBlPXthcmVhU3RhcnQ6RzcsYXJlYUVuZDpHNyxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl94MD10aGlzLl94MT10aGlzLl94Mj10aGlzLl94Mz10aGlzLl94ND10aGlzLl95MD10aGlzLl95MT10aGlzLl95Mj10aGlzLl95Mz10aGlzLl95ND1OYU4sdGhpcy5fcG9pbnQ9MH0sbGluZUVuZDpmdW5jdGlvbigpe3N3aXRjaCh0aGlzLl9wb2ludCl7Y2FzZSAxOnRoaXMuX2NvbnRleHQubW92ZVRvKHRoaXMuX3gyLHRoaXMuX3kyKSx0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpO2JyZWFrO2Nhc2UgMjp0aGlzLl9jb250ZXh0Lm1vdmVUbygodGhpcy5feDIrMip0aGlzLl94MykvMywodGhpcy5feTIrMip0aGlzLl95MykvMyksdGhpcy5fY29udGV4dC5saW5lVG8oKHRoaXMuX3gzKzIqdGhpcy5feDIpLzMsKHRoaXMuX3kzKzIqdGhpcy5feTIpLzMpLHRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCk7YnJlYWs7Y2FzZSAzOnRoaXMucG9pbnQodGhpcy5feDIsdGhpcy5feTIpLHRoaXMucG9pbnQodGhpcy5feDMsdGhpcy5feTMpLHRoaXMucG9pbnQodGhpcy5feDQsdGhpcy5feTQpfX0scG9pbnQ6ZnVuY3Rpb24odCxlKXtzd2l0Y2godD0rdCxlPStlLHRoaXMuX3BvaW50KXtjYXNlIDA6dGhpcy5fcG9pbnQ9MSx0aGlzLl94Mj10LHRoaXMuX3kyPWU7YnJlYWs7Y2FzZSAxOnRoaXMuX3BvaW50PTIsdGhpcy5feDM9dCx0aGlzLl95Mz1lO2JyZWFrO2Nhc2UgMjp0aGlzLl9wb2ludD0zLHRoaXMuX3g0PXQsdGhpcy5feTQ9ZSx0aGlzLl9jb250ZXh0Lm1vdmVUbygodGhpcy5feDArNCp0aGlzLl94MSt0KS82LCh0aGlzLl95MCs0KnRoaXMuX3kxK2UpLzYpO2JyZWFrO2RlZmF1bHQ6VzcodGhpcyx0LGUpfXRoaXMuX3gwPXRoaXMuX3gxLHRoaXMuX3gxPXQsdGhpcy5feTA9dGhpcy5feTEsdGhpcy5feTE9ZX19LFg3LnByb3RvdHlwZT17YXJlYVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fbGluZT0wfSxhcmVhRW5kOmZ1bmN0aW9uKCl7dGhpcy5fbGluZT1OYU59LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3gwPXRoaXMuX3gxPXRoaXMuX3kwPXRoaXMuX3kxPU5hTix0aGlzLl9wb2ludD0wfSxsaW5lRW5kOmZ1bmN0aW9uKCl7KHRoaXMuX2xpbmV8fDAhPT10aGlzLl9saW5lJiYzPT09dGhpcy5fcG9pbnQpJiZ0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpLHRoaXMuX2xpbmU9MS10aGlzLl9saW5lfSxwb2ludDpmdW5jdGlvbih0LGUpe3N3aXRjaCh0PSt0LGU9K2UsdGhpcy5fcG9pbnQpe2Nhc2UgMDp0aGlzLl9wb2ludD0xO2JyZWFrO2Nhc2UgMTp0aGlzLl9wb2ludD0yO2JyZWFrO2Nhc2UgMjp0aGlzLl9wb2ludD0zO3ZhciBuPSh0aGlzLl94MCs0KnRoaXMuX3gxK3QpLzYsaT0odGhpcy5feTArNCp0aGlzLl95MStlKS82O3RoaXMuX2xpbmU/dGhpcy5fY29udGV4dC5saW5lVG8obixpKTp0aGlzLl9jb250ZXh0Lm1vdmVUbyhuLGkpO2JyZWFrO2Nhc2UgMzp0aGlzLl9wb2ludD00O2RlZmF1bHQ6VzcodGhpcyx0LGUpfXRoaXMuX3gwPXRoaXMuX3gxLHRoaXMuX3gxPXQsdGhpcy5feTA9dGhpcy5feTEsdGhpcy5feTE9ZX19LCQ3LnByb3RvdHlwZT17bGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5feD1bXSx0aGlzLl95PVtdLHRoaXMuX2Jhc2lzLmxpbmVTdGFydCgpfSxsaW5lRW5kOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5feCxlPXRoaXMuX3ksbj10Lmxlbmd0aC0xO2lmKG4+MClmb3IodmFyIGkscj10WzBdLG89ZVswXSxhPXRbbl0tcixzPWVbbl0tbyxsPS0xOysrbDw9bjspdGhpcy5fYmFzaXMucG9pbnQodGhpcy5fYmV0YSp0W2xdKygxLXRoaXMuX2JldGEpKihyKyhpPWwvbikqYSksdGhpcy5fYmV0YSplW2xdKygxLXRoaXMuX2JldGEpKihvK2kqcykpO3RoaXMuX3g9dGhpcy5feT1udWxsLHRoaXMuX2Jhc2lzLmxpbmVFbmQoKX0scG9pbnQ6ZnVuY3Rpb24odCxlKXt0aGlzLl94LnB1c2goK3QpLHRoaXMuX3kucHVzaCgrZSl9fTt2YXIgSzc9KGZ1bmN0aW9uIHQoZSl7ZnVuY3Rpb24gbih0KXtyZXR1cm4gMT09PWU/bmV3IHE3KHQpOm5ldyAkNyh0LGUpfXJldHVybiBuLmJldGE9ZnVuY3Rpb24oZSl7cmV0dXJuIHQoK2UpfSxufSkoLjg1KTtmdW5jdGlvbiBaNyh0LGUsbil7dC5fY29udGV4dC5iZXppZXJDdXJ2ZVRvKHQuX3gxK3QuX2sqKHQuX3gyLXQuX3gwKSx0Ll95MSt0Ll9rKih0Ll95Mi10Ll95MCksdC5feDIrdC5fayoodC5feDEtZSksdC5feTIrdC5fayoodC5feTEtbiksdC5feDIsdC5feTIpfWZ1bmN0aW9uIEo3KHQsZSl7dGhpcy5fY29udGV4dD10LHRoaXMuX2s9KDEtZSkvNn1KNy5wcm90b3R5cGU9e2FyZWFTdGFydDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9MH0sYXJlYUVuZDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9TmFOfSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl94MD10aGlzLl94MT10aGlzLl94Mj10aGlzLl95MD10aGlzLl95MT10aGlzLl95Mj1OYU4sdGhpcy5fcG9pbnQ9MH0sbGluZUVuZDpmdW5jdGlvbigpe3N3aXRjaCh0aGlzLl9wb2ludCl7Y2FzZSAyOnRoaXMuX2NvbnRleHQubGluZVRvKHRoaXMuX3gyLHRoaXMuX3kyKTticmVhaztjYXNlIDM6WjcodGhpcyx0aGlzLl94MSx0aGlzLl95MSl9KHRoaXMuX2xpbmV8fDAhPT10aGlzLl9saW5lJiYxPT09dGhpcy5fcG9pbnQpJiZ0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpLHRoaXMuX2xpbmU9MS10aGlzLl9saW5lfSxwb2ludDpmdW5jdGlvbih0LGUpe3N3aXRjaCh0PSt0LGU9K2UsdGhpcy5fcG9pbnQpe2Nhc2UgMDp0aGlzLl9wb2ludD0xLHRoaXMuX2xpbmU/dGhpcy5fY29udGV4dC5saW5lVG8odCxlKTp0aGlzLl9jb250ZXh0Lm1vdmVUbyh0LGUpO2JyZWFrO2Nhc2UgMTp0aGlzLl9wb2ludD0yLHRoaXMuX3gxPXQsdGhpcy5feTE9ZTticmVhaztjYXNlIDI6dGhpcy5fcG9pbnQ9MztkZWZhdWx0Olo3KHRoaXMsdCxlKX10aGlzLl94MD10aGlzLl94MSx0aGlzLl94MT10aGlzLl94Mix0aGlzLl94Mj10LHRoaXMuX3kwPXRoaXMuX3kxLHRoaXMuX3kxPXRoaXMuX3kyLHRoaXMuX3kyPWV9fTt2YXIgUTc9KGZ1bmN0aW9uIHQoZSl7ZnVuY3Rpb24gbih0KXtyZXR1cm4gbmV3IEo3KHQsZSl9cmV0dXJuIG4udGVuc2lvbj1mdW5jdGlvbihlKXtyZXR1cm4gdCgrZSl9LG59KSgwKTtmdW5jdGlvbiB0dHQodCxlKXt0aGlzLl9jb250ZXh0PXQsdGhpcy5faz0oMS1lKS82fXR0dC5wcm90b3R5cGU9e2FyZWFTdGFydDpHNyxhcmVhRW5kOkc3LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3gwPXRoaXMuX3gxPXRoaXMuX3gyPXRoaXMuX3gzPXRoaXMuX3g0PXRoaXMuX3g1PXRoaXMuX3kwPXRoaXMuX3kxPXRoaXMuX3kyPXRoaXMuX3kzPXRoaXMuX3k0PXRoaXMuX3k1PU5hTix0aGlzLl9wb2ludD0wfSxsaW5lRW5kOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuX3BvaW50KXtjYXNlIDE6dGhpcy5fY29udGV4dC5tb3ZlVG8odGhpcy5feDMsdGhpcy5feTMpLHRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCk7YnJlYWs7Y2FzZSAyOnRoaXMuX2NvbnRleHQubGluZVRvKHRoaXMuX3gzLHRoaXMuX3kzKSx0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpO2JyZWFrO2Nhc2UgMzp0aGlzLnBvaW50KHRoaXMuX3gzLHRoaXMuX3kzKSx0aGlzLnBvaW50KHRoaXMuX3g0LHRoaXMuX3k0KSx0aGlzLnBvaW50KHRoaXMuX3g1LHRoaXMuX3k1KX19LHBvaW50OmZ1bmN0aW9uKHQsZSl7c3dpdGNoKHQ9K3QsZT0rZSx0aGlzLl9wb2ludCl7Y2FzZSAwOnRoaXMuX3BvaW50PTEsdGhpcy5feDM9dCx0aGlzLl95Mz1lO2JyZWFrO2Nhc2UgMTp0aGlzLl9wb2ludD0yLHRoaXMuX2NvbnRleHQubW92ZVRvKHRoaXMuX3g0PXQsdGhpcy5feTQ9ZSk7YnJlYWs7Y2FzZSAyOnRoaXMuX3BvaW50PTMsdGhpcy5feDU9dCx0aGlzLl95NT1lO2JyZWFrO2RlZmF1bHQ6WjcodGhpcyx0LGUpfXRoaXMuX3gwPXRoaXMuX3gxLHRoaXMuX3gxPXRoaXMuX3gyLHRoaXMuX3gyPXQsdGhpcy5feTA9dGhpcy5feTEsdGhpcy5feTE9dGhpcy5feTIsdGhpcy5feTI9ZX19O3ZhciBldHQ9KGZ1bmN0aW9uIHQoZSl7ZnVuY3Rpb24gbih0KXtyZXR1cm4gbmV3IHR0dCh0LGUpfXJldHVybiBuLnRlbnNpb249ZnVuY3Rpb24oZSl7cmV0dXJuIHQoK2UpfSxufSkoMCk7ZnVuY3Rpb24gbnR0KHQsZSl7dGhpcy5fY29udGV4dD10LHRoaXMuX2s9KDEtZSkvNn1udHQucHJvdG90eXBlPXthcmVhU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPTB9LGFyZWFFbmQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPU5hTn0sbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5feDA9dGhpcy5feDE9dGhpcy5feDI9dGhpcy5feTA9dGhpcy5feTE9dGhpcy5feTI9TmFOLHRoaXMuX3BvaW50PTB9LGxpbmVFbmQ6ZnVuY3Rpb24oKXsodGhpcy5fbGluZXx8MCE9PXRoaXMuX2xpbmUmJjM9PT10aGlzLl9wb2ludCkmJnRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCksdGhpcy5fbGluZT0xLXRoaXMuX2xpbmV9LHBvaW50OmZ1bmN0aW9uKHQsZSl7c3dpdGNoKHQ9K3QsZT0rZSx0aGlzLl9wb2ludCl7Y2FzZSAwOnRoaXMuX3BvaW50PTE7YnJlYWs7Y2FzZSAxOnRoaXMuX3BvaW50PTI7YnJlYWs7Y2FzZSAyOnRoaXMuX3BvaW50PTMsdGhpcy5fbGluZT90aGlzLl9jb250ZXh0LmxpbmVUbyh0aGlzLl94Mix0aGlzLl95Mik6dGhpcy5fY29udGV4dC5tb3ZlVG8odGhpcy5feDIsdGhpcy5feTIpO2JyZWFrO2Nhc2UgMzp0aGlzLl9wb2ludD00O2RlZmF1bHQ6WjcodGhpcyx0LGUpfXRoaXMuX3gwPXRoaXMuX3gxLHRoaXMuX3gxPXRoaXMuX3gyLHRoaXMuX3gyPXQsdGhpcy5feTA9dGhpcy5feTEsdGhpcy5feTE9dGhpcy5feTIsdGhpcy5feTI9ZX19O3ZhciBpdHQ9KGZ1bmN0aW9uIHQoZSl7ZnVuY3Rpb24gbih0KXtyZXR1cm4gbmV3IG50dCh0LGUpfXJldHVybiBuLnRlbnNpb249ZnVuY3Rpb24oZSl7cmV0dXJuIHQoK2UpfSxufSkoMCk7ZnVuY3Rpb24gcnR0KHQsZSxuKXt2YXIgaT10Ll94MSxyPXQuX3kxLG89dC5feDIsYT10Ll95MjtpZih0Ll9sMDFfYT5XOCl7dmFyIHM9Mip0Ll9sMDFfMmErMyp0Ll9sMDFfYSp0Ll9sMTJfYSt0Ll9sMTJfMmEsbD0zKnQuX2wwMV9hKih0Ll9sMDFfYSt0Ll9sMTJfYSk7aT0oaSpzLXQuX3gwKnQuX2wxMl8yYSt0Ll94Mip0Ll9sMDFfMmEpL2wscj0ocipzLXQuX3kwKnQuX2wxMl8yYSt0Ll95Mip0Ll9sMDFfMmEpL2x9aWYodC5fbDIzX2E+Vzgpe3ZhciBjPTIqdC5fbDIzXzJhKzMqdC5fbDIzX2EqdC5fbDEyX2ErdC5fbDEyXzJhLHU9Myp0Ll9sMjNfYSoodC5fbDIzX2ErdC5fbDEyX2EpO289KG8qYyt0Ll94MSp0Ll9sMjNfMmEtZSp0Ll9sMTJfMmEpL3UsYT0oYSpjK3QuX3kxKnQuX2wyM18yYS1uKnQuX2wxMl8yYSkvdX10Ll9jb250ZXh0LmJlemllckN1cnZlVG8oaSxyLG8sYSx0Ll94Mix0Ll95Mil9ZnVuY3Rpb24gb3R0KHQsZSl7dGhpcy5fY29udGV4dD10LHRoaXMuX2FscGhhPWV9b3R0LnByb3RvdHlwZT17YXJlYVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fbGluZT0wfSxhcmVhRW5kOmZ1bmN0aW9uKCl7dGhpcy5fbGluZT1OYU59LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3gwPXRoaXMuX3gxPXRoaXMuX3gyPXRoaXMuX3kwPXRoaXMuX3kxPXRoaXMuX3kyPU5hTix0aGlzLl9sMDFfYT10aGlzLl9sMTJfYT10aGlzLl9sMjNfYT10aGlzLl9sMDFfMmE9dGhpcy5fbDEyXzJhPXRoaXMuX2wyM18yYT10aGlzLl9wb2ludD0wfSxsaW5lRW5kOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuX3BvaW50KXtjYXNlIDI6dGhpcy5fY29udGV4dC5saW5lVG8odGhpcy5feDIsdGhpcy5feTIpO2JyZWFrO2Nhc2UgMzp0aGlzLnBvaW50KHRoaXMuX3gyLHRoaXMuX3kyKX0odGhpcy5fbGluZXx8MCE9PXRoaXMuX2xpbmUmJjE9PT10aGlzLl9wb2ludCkmJnRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCksdGhpcy5fbGluZT0xLXRoaXMuX2xpbmV9LHBvaW50OmZ1bmN0aW9uKHQsZSl7aWYodD0rdCxlPStlLHRoaXMuX3BvaW50KXt2YXIgbj10aGlzLl94Mi10LGk9dGhpcy5feTItZTt0aGlzLl9sMjNfYT1NYXRoLnNxcnQodGhpcy5fbDIzXzJhPU1hdGgucG93KG4qbitpKmksdGhpcy5fYWxwaGEpKX1zd2l0Y2godGhpcy5fcG9pbnQpe2Nhc2UgMDp0aGlzLl9wb2ludD0xLHRoaXMuX2xpbmU/dGhpcy5fY29udGV4dC5saW5lVG8odCxlKTp0aGlzLl9jb250ZXh0Lm1vdmVUbyh0LGUpO2JyZWFrO2Nhc2UgMTp0aGlzLl9wb2ludD0yO2JyZWFrO2Nhc2UgMjp0aGlzLl9wb2ludD0zO2RlZmF1bHQ6cnR0KHRoaXMsdCxlKX10aGlzLl9sMDFfYT10aGlzLl9sMTJfYSx0aGlzLl9sMTJfYT10aGlzLl9sMjNfYSx0aGlzLl9sMDFfMmE9dGhpcy5fbDEyXzJhLHRoaXMuX2wxMl8yYT10aGlzLl9sMjNfMmEsdGhpcy5feDA9dGhpcy5feDEsdGhpcy5feDE9dGhpcy5feDIsdGhpcy5feDI9dCx0aGlzLl95MD10aGlzLl95MSx0aGlzLl95MT10aGlzLl95Mix0aGlzLl95Mj1lfX07dmFyIGF0dD0oZnVuY3Rpb24gdChlKXtmdW5jdGlvbiBuKHQpe3JldHVybiBlP25ldyBvdHQodCxlKTpuZXcgSjcodCwwKX1yZXR1cm4gbi5hbHBoYT1mdW5jdGlvbihlKXtyZXR1cm4gdCgrZSl9LG59KSguNSk7ZnVuY3Rpb24gc3R0KHQsZSl7dGhpcy5fY29udGV4dD10LHRoaXMuX2FscGhhPWV9c3R0LnByb3RvdHlwZT17YXJlYVN0YXJ0Okc3LGFyZWFFbmQ6RzcsbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5feDA9dGhpcy5feDE9dGhpcy5feDI9dGhpcy5feDM9dGhpcy5feDQ9dGhpcy5feDU9dGhpcy5feTA9dGhpcy5feTE9dGhpcy5feTI9dGhpcy5feTM9dGhpcy5feTQ9dGhpcy5feTU9TmFOLHRoaXMuX2wwMV9hPXRoaXMuX2wxMl9hPXRoaXMuX2wyM19hPXRoaXMuX2wwMV8yYT10aGlzLl9sMTJfMmE9dGhpcy5fbDIzXzJhPXRoaXMuX3BvaW50PTB9LGxpbmVFbmQ6ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5fcG9pbnQpe2Nhc2UgMTp0aGlzLl9jb250ZXh0Lm1vdmVUbyh0aGlzLl94Myx0aGlzLl95MyksdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKTticmVhaztjYXNlIDI6dGhpcy5fY29udGV4dC5saW5lVG8odGhpcy5feDMsdGhpcy5feTMpLHRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCk7YnJlYWs7Y2FzZSAzOnRoaXMucG9pbnQodGhpcy5feDMsdGhpcy5feTMpLHRoaXMucG9pbnQodGhpcy5feDQsdGhpcy5feTQpLHRoaXMucG9pbnQodGhpcy5feDUsdGhpcy5feTUpfX0scG9pbnQ6ZnVuY3Rpb24odCxlKXtpZih0PSt0LGU9K2UsdGhpcy5fcG9pbnQpe3ZhciBuPXRoaXMuX3gyLXQsaT10aGlzLl95Mi1lO3RoaXMuX2wyM19hPU1hdGguc3FydCh0aGlzLl9sMjNfMmE9TWF0aC5wb3cobipuK2kqaSx0aGlzLl9hbHBoYSkpfXN3aXRjaCh0aGlzLl9wb2ludCl7Y2FzZSAwOnRoaXMuX3BvaW50PTEsdGhpcy5feDM9dCx0aGlzLl95Mz1lO2JyZWFrO2Nhc2UgMTp0aGlzLl9wb2ludD0yLHRoaXMuX2NvbnRleHQubW92ZVRvKHRoaXMuX3g0PXQsdGhpcy5feTQ9ZSk7YnJlYWs7Y2FzZSAyOnRoaXMuX3BvaW50PTMsdGhpcy5feDU9dCx0aGlzLl95NT1lO2JyZWFrO2RlZmF1bHQ6cnR0KHRoaXMsdCxlKX10aGlzLl9sMDFfYT10aGlzLl9sMTJfYSx0aGlzLl9sMTJfYT10aGlzLl9sMjNfYSx0aGlzLl9sMDFfMmE9dGhpcy5fbDEyXzJhLHRoaXMuX2wxMl8yYT10aGlzLl9sMjNfMmEsdGhpcy5feDA9dGhpcy5feDEsdGhpcy5feDE9dGhpcy5feDIsdGhpcy5feDI9dCx0aGlzLl95MD10aGlzLl95MSx0aGlzLl95MT10aGlzLl95Mix0aGlzLl95Mj1lfX07dmFyIGx0dD0oZnVuY3Rpb24gdChlKXtmdW5jdGlvbiBuKHQpe3JldHVybiBlP25ldyBzdHQodCxlKTpuZXcgdHR0KHQsMCl9cmV0dXJuIG4uYWxwaGE9ZnVuY3Rpb24oZSl7cmV0dXJuIHQoK2UpfSxufSkoLjUpO2Z1bmN0aW9uIGN0dCh0LGUpe3RoaXMuX2NvbnRleHQ9dCx0aGlzLl9hbHBoYT1lfWN0dC5wcm90b3R5cGU9e2FyZWFTdGFydDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9MH0sYXJlYUVuZDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9TmFOfSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl94MD10aGlzLl94MT10aGlzLl94Mj10aGlzLl95MD10aGlzLl95MT10aGlzLl95Mj1OYU4sdGhpcy5fbDAxX2E9dGhpcy5fbDEyX2E9dGhpcy5fbDIzX2E9dGhpcy5fbDAxXzJhPXRoaXMuX2wxMl8yYT10aGlzLl9sMjNfMmE9dGhpcy5fcG9pbnQ9MH0sbGluZUVuZDpmdW5jdGlvbigpeyh0aGlzLl9saW5lfHwwIT09dGhpcy5fbGluZSYmMz09PXRoaXMuX3BvaW50KSYmdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKSx0aGlzLl9saW5lPTEtdGhpcy5fbGluZX0scG9pbnQ6ZnVuY3Rpb24odCxlKXtpZih0PSt0LGU9K2UsdGhpcy5fcG9pbnQpe3ZhciBuPXRoaXMuX3gyLXQsaT10aGlzLl95Mi1lO3RoaXMuX2wyM19hPU1hdGguc3FydCh0aGlzLl9sMjNfMmE9TWF0aC5wb3cobipuK2kqaSx0aGlzLl9hbHBoYSkpfXN3aXRjaCh0aGlzLl9wb2ludCl7Y2FzZSAwOnRoaXMuX3BvaW50PTE7YnJlYWs7Y2FzZSAxOnRoaXMuX3BvaW50PTI7YnJlYWs7Y2FzZSAyOnRoaXMuX3BvaW50PTMsdGhpcy5fbGluZT90aGlzLl9jb250ZXh0LmxpbmVUbyh0aGlzLl94Mix0aGlzLl95Mik6dGhpcy5fY29udGV4dC5tb3ZlVG8odGhpcy5feDIsdGhpcy5feTIpO2JyZWFrO2Nhc2UgMzp0aGlzLl9wb2ludD00O2RlZmF1bHQ6cnR0KHRoaXMsdCxlKX10aGlzLl9sMDFfYT10aGlzLl9sMTJfYSx0aGlzLl9sMTJfYT10aGlzLl9sMjNfYSx0aGlzLl9sMDFfMmE9dGhpcy5fbDEyXzJhLHRoaXMuX2wxMl8yYT10aGlzLl9sMjNfMmEsdGhpcy5feDA9dGhpcy5feDEsdGhpcy5feDE9dGhpcy5feDIsdGhpcy5feDI9dCx0aGlzLl95MD10aGlzLl95MSx0aGlzLl95MT10aGlzLl95Mix0aGlzLl95Mj1lfX07dmFyIHV0dD0oZnVuY3Rpb24gdChlKXtmdW5jdGlvbiBuKHQpe3JldHVybiBlP25ldyBjdHQodCxlKTpuZXcgbnR0KHQsMCl9cmV0dXJuIG4uYWxwaGE9ZnVuY3Rpb24oZSl7cmV0dXJuIHQoK2UpfSxufSkoLjUpO2Z1bmN0aW9uIGh0dCh0KXt0aGlzLl9jb250ZXh0PXR9ZnVuY3Rpb24gZHR0KHQpe3JldHVybiB0PDA/LTE6MX1mdW5jdGlvbiBwdHQodCxlLG4pe3ZhciBpPXQuX3gxLXQuX3gwLHI9ZS10Ll94MSxvPSh0Ll95MS10Ll95MCkvKGl8fHI8MCYmLTApLGE9KG4tdC5feTEpLyhyfHxpPDAmJi0wKSxzPShvKnIrYSppKS8oaStyKTtyZXR1cm4oZHR0KG8pK2R0dChhKSkqTWF0aC5taW4oTWF0aC5hYnMobyksTWF0aC5hYnMoYSksLjUqTWF0aC5hYnMocykpfHwwfWZ1bmN0aW9uIGZ0dCh0LGUpe3ZhciBuPXQuX3gxLXQuX3gwO3JldHVybiBuPygzKih0Ll95MS10Ll95MCkvbi1lKS8yOmV9ZnVuY3Rpb24gbXR0KHQsZSxuKXt2YXIgaT10Ll94MCxyPXQuX3gxLG89dC5feTEsYT0oci1pKS8zO3QuX2NvbnRleHQuYmV6aWVyQ3VydmVUbyhpK2EsdC5feTArYSplLHItYSxvLWEqbixyLG8pfWZ1bmN0aW9uIGd0dCh0KXt0aGlzLl9jb250ZXh0PXR9ZnVuY3Rpb24gX3R0KHQpe3RoaXMuX2NvbnRleHQ9bmV3IHl0dCh0KX1mdW5jdGlvbiB5dHQodCl7dGhpcy5fY29udGV4dD10fWZ1bmN0aW9uIHZ0dCh0KXt0aGlzLl9jb250ZXh0PXR9ZnVuY3Rpb24gYnR0KHQpe3ZhciBlLG4saT10Lmxlbmd0aC0xLHI9bmV3IEFycmF5KGkpLG89bmV3IEFycmF5KGkpLGE9bmV3IEFycmF5KGkpO2ZvcihyWzBdPTAsb1swXT0yLGFbMF09dFswXSsyKnRbMV0sZT0xO2U8aS0xOysrZSlyW2VdPTEsb1tlXT00LGFbZV09NCp0W2VdKzIqdFtlKzFdO2ZvcihyW2ktMV09MixvW2ktMV09NyxhW2ktMV09OCp0W2ktMV0rdFtpXSxlPTE7ZTxpOysrZSlvW2VdLT1uPXJbZV0vb1tlLTFdLGFbZV0tPW4qYVtlLTFdO2ZvcihyW2ktMV09YVtpLTFdL29baS0xXSxlPWktMjtlPj0wOy0tZSlyW2VdPShhW2VdLXJbZSsxXSkvb1tlXTtmb3Iob1tpLTFdPSh0W2ldK3JbaS0xXSkvMixlPTA7ZTxpLTE7KytlKW9bZV09Mip0W2UrMV0tcltlKzFdO3JldHVybltyLG9dfWZ1bmN0aW9uIHh0dCh0LGUpe3RoaXMuX2NvbnRleHQ9dCx0aGlzLl90PWV9ZnVuY3Rpb24gd3R0KHQsZSl7aWYoKHI9dC5sZW5ndGgpPjEpZm9yKHZhciBuLGkscixvPTEsYT10W2VbMF1dLHM9YS5sZW5ndGg7bzxyOysrbylmb3IoaT1hLGE9dFtlW29dXSxuPTA7bjxzOysrbilhW25dWzFdKz1hW25dWzBdPWlzTmFOKGlbbl1bMV0pP2lbbl1bMF06aVtuXVsxXX1mdW5jdGlvbiBTdHQodCl7Zm9yKHZhciBlPXQubGVuZ3RoLG49bmV3IEFycmF5KGUpOy0tZT49MDspbltlXT1lO3JldHVybiBufWZ1bmN0aW9uIE10dCh0LGUpe3JldHVybiB0W2VdfWZ1bmN0aW9uIEV0dCh0KXt2YXIgZT10Lm1hcChUdHQpO3JldHVybiBTdHQodCkuc29ydCgoZnVuY3Rpb24odCxuKXtyZXR1cm4gZVt0XS1lW25dfSkpfWZ1bmN0aW9uIFR0dCh0KXtmb3IodmFyIGUsbj0wLGk9LTEscj10Lmxlbmd0aDsrK2k8cjspKGU9K3RbaV1bMV0pJiYobis9ZSk7cmV0dXJuIG59aHR0LnByb3RvdHlwZT17YXJlYVN0YXJ0Okc3LGFyZWFFbmQ6RzcsbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fcG9pbnQ9MH0sbGluZUVuZDpmdW5jdGlvbigpe3RoaXMuX3BvaW50JiZ0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpfSxwb2ludDpmdW5jdGlvbih0LGUpe3Q9K3QsZT0rZSx0aGlzLl9wb2ludD90aGlzLl9jb250ZXh0LmxpbmVUbyh0LGUpOih0aGlzLl9wb2ludD0xLHRoaXMuX2NvbnRleHQubW92ZVRvKHQsZSkpfX0sZ3R0LnByb3RvdHlwZT17YXJlYVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fbGluZT0wfSxhcmVhRW5kOmZ1bmN0aW9uKCl7dGhpcy5fbGluZT1OYU59LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3gwPXRoaXMuX3gxPXRoaXMuX3kwPXRoaXMuX3kxPXRoaXMuX3QwPU5hTix0aGlzLl9wb2ludD0wfSxsaW5lRW5kOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuX3BvaW50KXtjYXNlIDI6dGhpcy5fY29udGV4dC5saW5lVG8odGhpcy5feDEsdGhpcy5feTEpO2JyZWFrO2Nhc2UgMzptdHQodGhpcyx0aGlzLl90MCxmdHQodGhpcyx0aGlzLl90MCkpfSh0aGlzLl9saW5lfHwwIT09dGhpcy5fbGluZSYmMT09PXRoaXMuX3BvaW50KSYmdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKSx0aGlzLl9saW5lPTEtdGhpcy5fbGluZX0scG9pbnQ6ZnVuY3Rpb24odCxlKXt2YXIgbj1OYU47aWYoZT0rZSwodD0rdCkhPT10aGlzLl94MXx8ZSE9PXRoaXMuX3kxKXtzd2l0Y2godGhpcy5fcG9pbnQpe2Nhc2UgMDp0aGlzLl9wb2ludD0xLHRoaXMuX2xpbmU/dGhpcy5fY29udGV4dC5saW5lVG8odCxlKTp0aGlzLl9jb250ZXh0Lm1vdmVUbyh0LGUpO2JyZWFrO2Nhc2UgMTp0aGlzLl9wb2ludD0yO2JyZWFrO2Nhc2UgMjp0aGlzLl9wb2ludD0zLG10dCh0aGlzLGZ0dCh0aGlzLG49cHR0KHRoaXMsdCxlKSksbik7YnJlYWs7ZGVmYXVsdDptdHQodGhpcyx0aGlzLl90MCxuPXB0dCh0aGlzLHQsZSkpfXRoaXMuX3gwPXRoaXMuX3gxLHRoaXMuX3gxPXQsdGhpcy5feTA9dGhpcy5feTEsdGhpcy5feTE9ZSx0aGlzLl90MD1ufX19LChfdHQucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZ3R0LnByb3RvdHlwZSkpLnBvaW50PWZ1bmN0aW9uKHQsZSl7Z3R0LnByb3RvdHlwZS5wb2ludC5jYWxsKHRoaXMsZSx0KX0seXR0LnByb3RvdHlwZT17bW92ZVRvOmZ1bmN0aW9uKHQsZSl7dGhpcy5fY29udGV4dC5tb3ZlVG8oZSx0KX0sY2xvc2VQYXRoOmZ1bmN0aW9uKCl7dGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKX0sbGluZVRvOmZ1bmN0aW9uKHQsZSl7dGhpcy5fY29udGV4dC5saW5lVG8oZSx0KX0sYmV6aWVyQ3VydmVUbzpmdW5jdGlvbih0LGUsbixpLHIsbyl7dGhpcy5fY29udGV4dC5iZXppZXJDdXJ2ZVRvKGUsdCxpLG4sbyxyKX19LHZ0dC5wcm90b3R5cGU9e2FyZWFTdGFydDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9MH0sYXJlYUVuZDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9TmFOfSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl94PVtdLHRoaXMuX3k9W119LGxpbmVFbmQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl94LGU9dGhpcy5feSxuPXQubGVuZ3RoO2lmKG4paWYodGhpcy5fbGluZT90aGlzLl9jb250ZXh0LmxpbmVUbyh0WzBdLGVbMF0pOnRoaXMuX2NvbnRleHQubW92ZVRvKHRbMF0sZVswXSksMj09PW4pdGhpcy5fY29udGV4dC5saW5lVG8odFsxXSxlWzFdKTtlbHNlIGZvcih2YXIgaT1idHQodCkscj1idHQoZSksbz0wLGE9MTthPG47KytvLCsrYSl0aGlzLl9jb250ZXh0LmJlemllckN1cnZlVG8oaVswXVtvXSxyWzBdW29dLGlbMV1bb10sclsxXVtvXSx0W2FdLGVbYV0pOyh0aGlzLl9saW5lfHwwIT09dGhpcy5fbGluZSYmMT09PW4pJiZ0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpLHRoaXMuX2xpbmU9MS10aGlzLl9saW5lLHRoaXMuX3g9dGhpcy5feT1udWxsfSxwb2ludDpmdW5jdGlvbih0LGUpe3RoaXMuX3gucHVzaCgrdCksdGhpcy5feS5wdXNoKCtlKX19LHh0dC5wcm90b3R5cGU9e2FyZWFTdGFydDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9MH0sYXJlYUVuZDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9TmFOfSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl94PXRoaXMuX3k9TmFOLHRoaXMuX3BvaW50PTB9LGxpbmVFbmQ6ZnVuY3Rpb24oKXswPHRoaXMuX3QmJnRoaXMuX3Q8MSYmMj09PXRoaXMuX3BvaW50JiZ0aGlzLl9jb250ZXh0LmxpbmVUbyh0aGlzLl94LHRoaXMuX3kpLCh0aGlzLl9saW5lfHwwIT09dGhpcy5fbGluZSYmMT09PXRoaXMuX3BvaW50KSYmdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKSx0aGlzLl9saW5lPj0wJiYodGhpcy5fdD0xLXRoaXMuX3QsdGhpcy5fbGluZT0xLXRoaXMuX2xpbmUpfSxwb2ludDpmdW5jdGlvbih0LGUpe3N3aXRjaCh0PSt0LGU9K2UsdGhpcy5fcG9pbnQpe2Nhc2UgMDp0aGlzLl9wb2ludD0xLHRoaXMuX2xpbmU/dGhpcy5fY29udGV4dC5saW5lVG8odCxlKTp0aGlzLl9jb250ZXh0Lm1vdmVUbyh0LGUpO2JyZWFrO2Nhc2UgMTp0aGlzLl9wb2ludD0yO2RlZmF1bHQ6aWYodGhpcy5fdDw9MCl0aGlzLl9jb250ZXh0LmxpbmVUbyh0aGlzLl94LGUpLHRoaXMuX2NvbnRleHQubGluZVRvKHQsZSk7ZWxzZXt2YXIgbj10aGlzLl94KigxLXRoaXMuX3QpK3QqdGhpcy5fdDt0aGlzLl9jb250ZXh0LmxpbmVUbyhuLHRoaXMuX3kpLHRoaXMuX2NvbnRleHQubGluZVRvKG4sZSl9fXRoaXMuX3g9dCx0aGlzLl95PWV9fTt2YXIgQ3R0PW5ldyBEYXRlLEF0dD1uZXcgRGF0ZTtmdW5jdGlvbiBrdHQodCxlLG4saSl7ZnVuY3Rpb24gcihlKXtyZXR1cm4gdChlPW5ldyBEYXRlKCtlKSksZX1yZXR1cm4gci5mbG9vcj1yLHIuY2VpbD1mdW5jdGlvbihuKXtyZXR1cm4gdChuPW5ldyBEYXRlKG4tMSkpLGUobiwxKSx0KG4pLG59LHIucm91bmQ9ZnVuY3Rpb24odCl7dmFyIGU9cih0KSxuPXIuY2VpbCh0KTtyZXR1cm4gdC1lPG4tdD9lOm59LHIub2Zmc2V0PWZ1bmN0aW9uKHQsbil7cmV0dXJuIGUodD1uZXcgRGF0ZSgrdCksbnVsbD09bj8xOk1hdGguZmxvb3IobikpLHR9LHIucmFuZ2U9ZnVuY3Rpb24obixpLG8pe3ZhciBhLHM9W107aWYobj1yLmNlaWwobiksbz1udWxsPT1vPzE6TWF0aC5mbG9vcihvKSwhKG48aSYmbz4wKSlyZXR1cm4gcztkb3tzLnB1c2goYT1uZXcgRGF0ZSgrbikpLGUobixvKSx0KG4pfXdoaWxlKGE8biYmbjxpKTtyZXR1cm4gc30sci5maWx0ZXI9ZnVuY3Rpb24obil7cmV0dXJuIGt0dCgoZnVuY3Rpb24oZSl7aWYoZT49ZSlmb3IoO3QoZSksIW4oZSk7KWUuc2V0VGltZShlLTEpfSksKGZ1bmN0aW9uKHQsaSl7aWYodD49dClpZihpPDApZm9yKDsrK2k8PTA7KWZvcig7ZSh0LC0xKSwhbih0KTspO2Vsc2UgZm9yKDstLWk+PTA7KWZvcig7ZSh0LDEpLCFuKHQpOyk7fSkpfSxuJiYoci5jb3VudD1mdW5jdGlvbihlLGkpe3JldHVybiBDdHQuc2V0VGltZSgrZSksQXR0LnNldFRpbWUoK2kpLHQoQ3R0KSx0KEF0dCksTWF0aC5mbG9vcihuKEN0dCxBdHQpKX0sci5ldmVyeT1mdW5jdGlvbih0KXtyZXR1cm4gdD1NYXRoLmZsb29yKHQpLGlzRmluaXRlKHQpJiZ0PjA/dD4xP3IuZmlsdGVyKGk/ZnVuY3Rpb24oZSl7cmV0dXJuIGkoZSkldD09MH06ZnVuY3Rpb24oZSl7cmV0dXJuIHIuY291bnQoMCxlKSV0PT0wfSk6cjpudWxsfSkscn12YXIgTHR0PWt0dCgoZnVuY3Rpb24oKXt9KSwoZnVuY3Rpb24odCxlKXt0LnNldFRpbWUoK3QrZSl9KSwoZnVuY3Rpb24odCxlKXtyZXR1cm4gZS10fSkpO0x0dC5ldmVyeT1mdW5jdGlvbih0KXtyZXR1cm4gdD1NYXRoLmZsb29yKHQpLGlzRmluaXRlKHQpJiZ0PjA/dD4xP2t0dCgoZnVuY3Rpb24oZSl7ZS5zZXRUaW1lKE1hdGguZmxvb3IoZS90KSp0KX0pLChmdW5jdGlvbihlLG4pe2Uuc2V0VGltZSgrZStuKnQpfSksKGZ1bmN0aW9uKGUsbil7cmV0dXJuKG4tZSkvdH0pKTpMdHQ6bnVsbH07dmFyIFB0dD1MdHQucmFuZ2UsTnR0PTFlMyxJdHQ9NmU0LFJ0dD0zNmU1LE90dD04NjRlNSx6dHQ9NjA0OGU1LER0dD1rdHQoKGZ1bmN0aW9uKHQpe3Quc2V0VGltZShNYXRoLmZsb29yKHQvTnR0KSpOdHQpfSksKGZ1bmN0aW9uKHQsZSl7dC5zZXRUaW1lKCt0K2UqTnR0KX0pLChmdW5jdGlvbih0LGUpe3JldHVybihlLXQpL050dH0pLChmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXRVVENTZWNvbmRzKCl9KSksQnR0PUR0dC5yYW5nZSxIdHQ9a3R0KChmdW5jdGlvbih0KXt0LnNldFRpbWUoTWF0aC5mbG9vcih0L0l0dCkqSXR0KX0pLChmdW5jdGlvbih0LGUpe3Quc2V0VGltZSgrdCtlKkl0dCl9KSwoZnVuY3Rpb24odCxlKXtyZXR1cm4oZS10KS9JdHR9KSwoZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0TWludXRlcygpfSkpLEZ0dD1IdHQucmFuZ2UsVnR0PWt0dCgoZnVuY3Rpb24odCl7dmFyIGU9dC5nZXRUaW1lem9uZU9mZnNldCgpKkl0dCVSdHQ7ZTwwJiYoZSs9UnR0KSx0LnNldFRpbWUoTWF0aC5mbG9vcigoK3QtZSkvUnR0KSpSdHQrZSl9KSwoZnVuY3Rpb24odCxlKXt0LnNldFRpbWUoK3QrZSpSdHQpfSksKGZ1bmN0aW9uKHQsZSl7cmV0dXJuKGUtdCkvUnR0fSksKGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldEhvdXJzKCl9KSksVXR0PVZ0dC5yYW5nZSxqdHQ9a3R0KChmdW5jdGlvbih0KXt0LnNldEhvdXJzKDAsMCwwLDApfSksKGZ1bmN0aW9uKHQsZSl7dC5zZXREYXRlKHQuZ2V0RGF0ZSgpK2UpfSksKGZ1bmN0aW9uKHQsZSl7cmV0dXJuKGUtdC0oZS5nZXRUaW1lem9uZU9mZnNldCgpLXQuZ2V0VGltZXpvbmVPZmZzZXQoKSkqSXR0KS9PdHR9KSwoZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0RGF0ZSgpLTF9KSksR3R0PWp0dC5yYW5nZTtmdW5jdGlvbiBXdHQodCl7cmV0dXJuIGt0dCgoZnVuY3Rpb24oZSl7ZS5zZXREYXRlKGUuZ2V0RGF0ZSgpLShlLmdldERheSgpKzctdCklNyksZS5zZXRIb3VycygwLDAsMCwwKX0pLChmdW5jdGlvbih0LGUpe3Quc2V0RGF0ZSh0LmdldERhdGUoKSs3KmUpfSksKGZ1bmN0aW9uKHQsZSl7cmV0dXJuKGUtdC0oZS5nZXRUaW1lem9uZU9mZnNldCgpLXQuZ2V0VGltZXpvbmVPZmZzZXQoKSkqSXR0KS96dHR9KSl9dmFyIHF0dD1XdHQoMCksWXR0PVd0dCgxKSxYdHQ9V3R0KDIpLCR0dD1XdHQoMyksS3R0PVd0dCg0KSxadHQ9V3R0KDUpLEp0dD1XdHQoNiksUXR0PXF0dC5yYW5nZSx0ZXQ9WXR0LnJhbmdlLGVldD1YdHQucmFuZ2UsbmV0PSR0dC5yYW5nZSxpZXQ9S3R0LnJhbmdlLHJldD1adHQucmFuZ2Usb2V0PUp0dC5yYW5nZSxhZXQ9a3R0KChmdW5jdGlvbih0KXt0LnNldERhdGUoMSksdC5zZXRIb3VycygwLDAsMCwwKX0pLChmdW5jdGlvbih0LGUpe3Quc2V0TW9udGgodC5nZXRNb250aCgpK2UpfSksKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUuZ2V0TW9udGgoKS10LmdldE1vbnRoKCkrMTIqKGUuZ2V0RnVsbFllYXIoKS10LmdldEZ1bGxZZWFyKCkpfSksKGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldE1vbnRoKCl9KSksc2V0PWFldC5yYW5nZSxjZXQ9a3R0KChmdW5jdGlvbih0KXt0LnNldE1vbnRoKDAsMSksdC5zZXRIb3VycygwLDAsMCwwKX0pLChmdW5jdGlvbih0LGUpe3Quc2V0RnVsbFllYXIodC5nZXRGdWxsWWVhcigpK2UpfSksKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUuZ2V0RnVsbFllYXIoKS10LmdldEZ1bGxZZWFyKCl9KSwoZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0RnVsbFllYXIoKX0pKTtjZXQuZXZlcnk9ZnVuY3Rpb24odCl7cmV0dXJuIGlzRmluaXRlKHQ9TWF0aC5mbG9vcih0KSkmJnQ+MD9rdHQoKGZ1bmN0aW9uKGUpe2Uuc2V0RnVsbFllYXIoTWF0aC5mbG9vcihlLmdldEZ1bGxZZWFyKCkvdCkqdCksZS5zZXRNb250aCgwLDEpLGUuc2V0SG91cnMoMCwwLDAsMCl9KSwoZnVuY3Rpb24oZSxuKXtlLnNldEZ1bGxZZWFyKGUuZ2V0RnVsbFllYXIoKStuKnQpfSkpOm51bGx9O3ZhciB1ZXQ9Y2V0LnJhbmdlLGhldD1rdHQoKGZ1bmN0aW9uKHQpe3Quc2V0VVRDU2Vjb25kcygwLDApfSksKGZ1bmN0aW9uKHQsZSl7dC5zZXRUaW1lKCt0K2UqSXR0KX0pLChmdW5jdGlvbih0LGUpe3JldHVybihlLXQpL0l0dH0pLChmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXRVVENNaW51dGVzKCl9KSksZGV0PWhldC5yYW5nZSxwZXQ9a3R0KChmdW5jdGlvbih0KXt0LnNldFVUQ01pbnV0ZXMoMCwwLDApfSksKGZ1bmN0aW9uKHQsZSl7dC5zZXRUaW1lKCt0K2UqUnR0KX0pLChmdW5jdGlvbih0LGUpe3JldHVybihlLXQpL1J0dH0pLChmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXRVVENIb3VycygpfSkpLGZldD1wZXQucmFuZ2UsbWV0PWt0dCgoZnVuY3Rpb24odCl7dC5zZXRVVENIb3VycygwLDAsMCwwKX0pLChmdW5jdGlvbih0LGUpe3Quc2V0VVRDRGF0ZSh0LmdldFVUQ0RhdGUoKStlKX0pLChmdW5jdGlvbih0LGUpe3JldHVybihlLXQpL090dH0pLChmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXRVVENEYXRlKCktMX0pKSxnZXQ9bWV0LnJhbmdlO2Z1bmN0aW9uIF9ldCh0KXtyZXR1cm4ga3R0KChmdW5jdGlvbihlKXtlLnNldFVUQ0RhdGUoZS5nZXRVVENEYXRlKCktKGUuZ2V0VVRDRGF5KCkrNy10KSU3KSxlLnNldFVUQ0hvdXJzKDAsMCwwLDApfSksKGZ1bmN0aW9uKHQsZSl7dC5zZXRVVENEYXRlKHQuZ2V0VVRDRGF0ZSgpKzcqZSl9KSwoZnVuY3Rpb24odCxlKXtyZXR1cm4oZS10KS96dHR9KSl9dmFyIHlldD1fZXQoMCksdmV0PV9ldCgxKSxiZXQ9X2V0KDIpLHhldD1fZXQoMyksd2V0PV9ldCg0KSxNZXQ9X2V0KDUpLEVldD1fZXQoNiksVGV0PXlldC5yYW5nZSxDZXQ9dmV0LnJhbmdlLEFldD1iZXQucmFuZ2Usa2V0PXhldC5yYW5nZSxMZXQ9d2V0LnJhbmdlLFBldD1NZXQucmFuZ2UsTmV0PUVldC5yYW5nZSxJZXQ9a3R0KChmdW5jdGlvbih0KXt0LnNldFVUQ0RhdGUoMSksdC5zZXRVVENIb3VycygwLDAsMCwwKX0pLChmdW5jdGlvbih0LGUpe3Quc2V0VVRDTW9udGgodC5nZXRVVENNb250aCgpK2UpfSksKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUuZ2V0VVRDTW9udGgoKS10LmdldFVUQ01vbnRoKCkrMTIqKGUuZ2V0VVRDRnVsbFllYXIoKS10LmdldFVUQ0Z1bGxZZWFyKCkpfSksKGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldFVUQ01vbnRoKCl9KSksUmV0PUlldC5yYW5nZSxPZXQ9a3R0KChmdW5jdGlvbih0KXt0LnNldFVUQ01vbnRoKDAsMSksdC5zZXRVVENIb3VycygwLDAsMCwwKX0pLChmdW5jdGlvbih0LGUpe3Quc2V0VVRDRnVsbFllYXIodC5nZXRVVENGdWxsWWVhcigpK2UpfSksKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUuZ2V0VVRDRnVsbFllYXIoKS10LmdldFVUQ0Z1bGxZZWFyKCl9KSwoZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0VVRDRnVsbFllYXIoKX0pKTtPZXQuZXZlcnk9ZnVuY3Rpb24odCl7cmV0dXJuIGlzRmluaXRlKHQ9TWF0aC5mbG9vcih0KSkmJnQ+MD9rdHQoKGZ1bmN0aW9uKGUpe2Uuc2V0VVRDRnVsbFllYXIoTWF0aC5mbG9vcihlLmdldFVUQ0Z1bGxZZWFyKCkvdCkqdCksZS5zZXRVVENNb250aCgwLDEpLGUuc2V0VVRDSG91cnMoMCwwLDAsMCl9KSwoZnVuY3Rpb24oZSxuKXtlLnNldFVUQ0Z1bGxZZWFyKGUuZ2V0VVRDRnVsbFllYXIoKStuKnQpfSkpOm51bGx9O3ZhciB6ZXQ9T2V0LnJhbmdlLERldD1uZXcgRGF0ZSxCZXQ9bmV3IERhdGU7ZnVuY3Rpb24gSGV0KHQsZSxuLGkpe2Z1bmN0aW9uIHIoZSl7cmV0dXJuIHQoZT0wPT09YXJndW1lbnRzLmxlbmd0aD9uZXcgRGF0ZTpuZXcgRGF0ZSgrZSkpLGV9cmV0dXJuIHIuZmxvb3I9ZnVuY3Rpb24oZSl7cmV0dXJuIHQoZT1uZXcgRGF0ZSgrZSkpLGV9LHIuY2VpbD1mdW5jdGlvbihuKXtyZXR1cm4gdChuPW5ldyBEYXRlKG4tMSkpLGUobiwxKSx0KG4pLG59LHIucm91bmQ9ZnVuY3Rpb24odCl7dmFyIGU9cih0KSxuPXIuY2VpbCh0KTtyZXR1cm4gdC1lPG4tdD9lOm59LHIub2Zmc2V0PWZ1bmN0aW9uKHQsbil7cmV0dXJuIGUodD1uZXcgRGF0ZSgrdCksbnVsbD09bj8xOk1hdGguZmxvb3IobikpLHR9LHIucmFuZ2U9ZnVuY3Rpb24obixpLG8pe3ZhciBhLHM9W107aWYobj1yLmNlaWwobiksbz1udWxsPT1vPzE6TWF0aC5mbG9vcihvKSwhKG48aSYmbz4wKSlyZXR1cm4gcztkb3tzLnB1c2goYT1uZXcgRGF0ZSgrbikpLGUobixvKSx0KG4pfXdoaWxlKGE8biYmbjxpKTtyZXR1cm4gc30sci5maWx0ZXI9ZnVuY3Rpb24obil7cmV0dXJuIEhldCgoZnVuY3Rpb24oZSl7aWYoZT49ZSlmb3IoO3QoZSksIW4oZSk7KWUuc2V0VGltZShlLTEpfSksKGZ1bmN0aW9uKHQsaSl7aWYodD49dClpZihpPDApZm9yKDsrK2k8PTA7KWZvcig7ZSh0LC0xKSwhbih0KTspO2Vsc2UgZm9yKDstLWk+PTA7KWZvcig7ZSh0LDEpLCFuKHQpOyk7fSkpfSxuJiYoci5jb3VudD1mdW5jdGlvbihlLGkpe3JldHVybiBEZXQuc2V0VGltZSgrZSksQmV0LnNldFRpbWUoK2kpLHQoRGV0KSx0KEJldCksTWF0aC5mbG9vcihuKERldCxCZXQpKX0sci5ldmVyeT1mdW5jdGlvbih0KXtyZXR1cm4gdD1NYXRoLmZsb29yKHQpLGlzRmluaXRlKHQpJiZ0PjA/dD4xP3IuZmlsdGVyKGk/ZnVuY3Rpb24oZSl7cmV0dXJuIGkoZSkldD09MH06ZnVuY3Rpb24oZSl7cmV0dXJuIHIuY291bnQoMCxlKSV0PT0wfSk6cjpudWxsfSkscn12YXIgRmV0PTg2NGU1LFZldD02MDQ4ZTUsVWV0PUhldCgoZnVuY3Rpb24odCl7dC5zZXRIb3VycygwLDAsMCwwKX0pLChmdW5jdGlvbih0LGUpe3Quc2V0RGF0ZSh0LmdldERhdGUoKStlKX0pLChmdW5jdGlvbih0LGUpe3JldHVybihlLXQtNmU0KihlLmdldFRpbWV6b25lT2Zmc2V0KCktdC5nZXRUaW1lem9uZU9mZnNldCgpKSkvRmV0fSksKGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldERhdGUoKS0xfSkpO2Z1bmN0aW9uIGpldCh0KXtyZXR1cm4gSGV0KChmdW5jdGlvbihlKXtlLnNldERhdGUoZS5nZXREYXRlKCktKGUuZ2V0RGF5KCkrNy10KSU3KSxlLnNldEhvdXJzKDAsMCwwLDApfSksKGZ1bmN0aW9uKHQsZSl7dC5zZXREYXRlKHQuZ2V0RGF0ZSgpKzcqZSl9KSwoZnVuY3Rpb24odCxlKXtyZXR1cm4oZS10LTZlNCooZS5nZXRUaW1lem9uZU9mZnNldCgpLXQuZ2V0VGltZXpvbmVPZmZzZXQoKSkpL1ZldH0pKX12YXIgR2V0PWpldCgwKSxXZXQ9amV0KDEpO2pldCgyKSxqZXQoMyk7dmFyIHFldD1qZXQoNCk7amV0KDUpLGpldCg2KTt2YXIgWWV0PUhldCgoZnVuY3Rpb24odCl7dC5zZXRNb250aCgwLDEpLHQuc2V0SG91cnMoMCwwLDAsMCl9KSwoZnVuY3Rpb24odCxlKXt0LnNldEZ1bGxZZWFyKHQuZ2V0RnVsbFllYXIoKStlKX0pLChmdW5jdGlvbih0LGUpe3JldHVybiBlLmdldEZ1bGxZZWFyKCktdC5nZXRGdWxsWWVhcigpfSksKGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldEZ1bGxZZWFyKCl9KSk7WWV0LmV2ZXJ5PWZ1bmN0aW9uKHQpe3JldHVybiBpc0Zpbml0ZSh0PU1hdGguZmxvb3IodCkpJiZ0PjA/SGV0KChmdW5jdGlvbihlKXtlLnNldEZ1bGxZZWFyKE1hdGguZmxvb3IoZS5nZXRGdWxsWWVhcigpL3QpKnQpLGUuc2V0TW9udGgoMCwxKSxlLnNldEhvdXJzKDAsMCwwLDApfSksKGZ1bmN0aW9uKGUsbil7ZS5zZXRGdWxsWWVhcihlLmdldEZ1bGxZZWFyKCkrbip0KX0pKTpudWxsfTt2YXIgWGV0PVlldCwkZXQ9SGV0KChmdW5jdGlvbih0KXt0LnNldFVUQ0hvdXJzKDAsMCwwLDApfSksKGZ1bmN0aW9uKHQsZSl7dC5zZXRVVENEYXRlKHQuZ2V0VVRDRGF0ZSgpK2UpfSksKGZ1bmN0aW9uKHQsZSl7cmV0dXJuKGUtdCkvRmV0fSksKGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldFVUQ0RhdGUoKS0xfSkpO2Z1bmN0aW9uIEtldCh0KXtyZXR1cm4gSGV0KChmdW5jdGlvbihlKXtlLnNldFVUQ0RhdGUoZS5nZXRVVENEYXRlKCktKGUuZ2V0VVRDRGF5KCkrNy10KSU3KSxlLnNldFVUQ0hvdXJzKDAsMCwwLDApfSksKGZ1bmN0aW9uKHQsZSl7dC5zZXRVVENEYXRlKHQuZ2V0VVRDRGF0ZSgpKzcqZSl9KSwoZnVuY3Rpb24odCxlKXtyZXR1cm4oZS10KS9WZXR9KSl9dmFyIFpldD1LZXQoMCksSmV0PUtldCgxKTtLZXQoMiksS2V0KDMpO3ZhciBRZXQ9S2V0KDQpO0tldCg1KSxLZXQoNik7dmFyIHRudD1IZXQoKGZ1bmN0aW9uKHQpe3Quc2V0VVRDTW9udGgoMCwxKSx0LnNldFVUQ0hvdXJzKDAsMCwwLDApfSksKGZ1bmN0aW9uKHQsZSl7dC5zZXRVVENGdWxsWWVhcih0LmdldFVUQ0Z1bGxZZWFyKCkrZSl9KSwoZnVuY3Rpb24odCxlKXtyZXR1cm4gZS5nZXRVVENGdWxsWWVhcigpLXQuZ2V0VVRDRnVsbFllYXIoKX0pLChmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXRVVENGdWxsWWVhcigpfSkpO3RudC5ldmVyeT1mdW5jdGlvbih0KXtyZXR1cm4gaXNGaW5pdGUodD1NYXRoLmZsb29yKHQpKSYmdD4wP0hldCgoZnVuY3Rpb24oZSl7ZS5zZXRVVENGdWxsWWVhcihNYXRoLmZsb29yKGUuZ2V0VVRDRnVsbFllYXIoKS90KSp0KSxlLnNldFVUQ01vbnRoKDAsMSksZS5zZXRVVENIb3VycygwLDAsMCwwKX0pLChmdW5jdGlvbihlLG4pe2Uuc2V0VVRDRnVsbFllYXIoZS5nZXRVVENGdWxsWWVhcigpK24qdCl9KSk6bnVsbH07dmFyIGVudD10bnQ7ZnVuY3Rpb24gbm50KHQpe2lmKDA8PXQueSYmdC55PDEwMCl7dmFyIGU9bmV3IERhdGUoLTEsdC5tLHQuZCx0LkgsdC5NLHQuUyx0LkwpO3JldHVybiBlLnNldEZ1bGxZZWFyKHQueSksZX1yZXR1cm4gbmV3IERhdGUodC55LHQubSx0LmQsdC5ILHQuTSx0LlMsdC5MKX1mdW5jdGlvbiBpbnQodCl7aWYoMDw9dC55JiZ0Lnk8MTAwKXt2YXIgZT1uZXcgRGF0ZShEYXRlLlVUQygtMSx0Lm0sdC5kLHQuSCx0Lk0sdC5TLHQuTCkpO3JldHVybiBlLnNldFVUQ0Z1bGxZZWFyKHQueSksZX1yZXR1cm4gbmV3IERhdGUoRGF0ZS5VVEModC55LHQubSx0LmQsdC5ILHQuTSx0LlMsdC5MKSl9ZnVuY3Rpb24gcm50KHQpe3JldHVybnt5OnQsbTowLGQ6MSxIOjAsTTowLFM6MCxMOjB9fWZ1bmN0aW9uIG9udCh0KXt2YXIgZT10LmRhdGVUaW1lLG49dC5kYXRlLGk9dC50aW1lLHI9dC5wZXJpb2RzLG89dC5kYXlzLGE9dC5zaG9ydERheXMscz10Lm1vbnRocyxsPXQuc2hvcnRNb250aHMsYz1fbnQociksdT15bnQociksaD1fbnQobyksZD15bnQobykscD1fbnQoYSksZj15bnQoYSksbT1fbnQocyksZz15bnQocyksXz1fbnQobCkseT15bnQobCksdj17YTpmdW5jdGlvbiBiKHQpe3JldHVybiBhW3QuZ2V0RGF5KCldfSxBOmZ1bmN0aW9uIHgodCl7cmV0dXJuIG9bdC5nZXREYXkoKV19LGI6ZnVuY3Rpb24gdyh0KXtyZXR1cm4gbFt0LmdldE1vbnRoKCldfSxCOmZ1bmN0aW9uIFModCl7cmV0dXJuIHNbdC5nZXRNb250aCgpXX0sYzpudWxsLGQ6Qm50LGU6Qm50LGY6am50LEg6SG50LEk6Rm50LGo6Vm50LEw6VW50LG06R250LE06V250LHA6ZnVuY3Rpb24gTSh0KXtyZXR1cm4gclsrKHQuZ2V0SG91cnMoKT49MTIpXX0sUTp2aXQsczpiaXQsUzpxbnQsdTpZbnQsVTpYbnQsVjokbnQsdzpLbnQsVzpabnQseDpudWxsLFg6bnVsbCx5OkpudCxZOlFudCxaOnRpdCwiJSI6eWl0fSxFPXthOmZ1bmN0aW9uIFQodCl7cmV0dXJuIGFbdC5nZXRVVENEYXkoKV19LEE6ZnVuY3Rpb24gQyh0KXtyZXR1cm4gb1t0LmdldFVUQ0RheSgpXX0sYjpmdW5jdGlvbiBBKHQpe3JldHVybiBsW3QuZ2V0VVRDTW9udGgoKV19LEI6ZnVuY3Rpb24gayh0KXtyZXR1cm4gc1t0LmdldFVUQ01vbnRoKCldfSxjOm51bGwsZDplaXQsZTplaXQsZjphaXQsSDpuaXQsSTppaXQsajpyaXQsTDpvaXQsbTpzaXQsTTpsaXQscDpmdW5jdGlvbiBMKHQpe3JldHVybiByWysodC5nZXRVVENIb3VycygpPj0xMildfSxROnZpdCxzOmJpdCxTOmNpdCx1OnVpdCxVOmhpdCxWOmRpdCx3OnBpdCxXOmZpdCx4Om51bGwsWDpudWxsLHk6bWl0LFk6Z2l0LFo6X2l0LCIlIjp5aXR9LFA9e2E6ZnVuY3Rpb24gTih0LGUsbil7dmFyIGk9cC5leGVjKGUuc2xpY2UobikpO3JldHVybiBpPyh0Lnc9ZltpWzBdLnRvTG93ZXJDYXNlKCldLG4raVswXS5sZW5ndGgpOi0xfSxBOmZ1bmN0aW9uIEkodCxlLG4pe3ZhciBpPWguZXhlYyhlLnNsaWNlKG4pKTtyZXR1cm4gaT8odC53PWRbaVswXS50b0xvd2VyQ2FzZSgpXSxuK2lbMF0ubGVuZ3RoKTotMX0sYjpmdW5jdGlvbiBSKHQsZSxuKXt2YXIgaT1fLmV4ZWMoZS5zbGljZShuKSk7cmV0dXJuIGk/KHQubT15W2lbMF0udG9Mb3dlckNhc2UoKV0sbitpWzBdLmxlbmd0aCk6LTF9LEI6ZnVuY3Rpb24gTyh0LGUsbil7dmFyIGk9bS5leGVjKGUuc2xpY2UobikpO3JldHVybiBpPyh0Lm09Z1tpWzBdLnRvTG93ZXJDYXNlKCldLG4raVswXS5sZW5ndGgpOi0xfSxjOmZ1bmN0aW9uIHoodCxuLGkpe3JldHVybiBVKHQsZSxuLGkpfSxkOkFudCxlOkFudCxmOlJudCxIOkxudCxJOkxudCxqOmtudCxMOkludCxtOkNudCxNOlBudCxwOmZ1bmN0aW9uIEQodCxlLG4pe3ZhciBpPWMuZXhlYyhlLnNsaWNlKG4pKTtyZXR1cm4gaT8odC5wPXVbaVswXS50b0xvd2VyQ2FzZSgpXSxuK2lbMF0ubGVuZ3RoKTotMX0sUTp6bnQsczpEbnQsUzpObnQsdTpibnQsVTp4bnQsVjp3bnQsdzp2bnQsVzpTbnQseDpmdW5jdGlvbiBCKHQsZSxpKXtyZXR1cm4gVSh0LG4sZSxpKX0sWDpmdW5jdGlvbiBIKHQsZSxuKXtyZXR1cm4gVSh0LGksZSxuKX0seTpFbnQsWTpNbnQsWjpUbnQsIiUiOk9udH07ZnVuY3Rpb24gRih0LGUpe3JldHVybiBmdW5jdGlvbihuKXt2YXIgaSxyLG8sYT1bXSxzPS0xLGw9MCxjPXQubGVuZ3RoO2ZvcihuIGluc3RhbmNlb2YgRGF0ZXx8KG49bmV3IERhdGUoK24pKTsrK3M8YzspMzc9PT10LmNoYXJDb2RlQXQocykmJihhLnB1c2godC5zbGljZShsLHMpKSxudWxsIT0ocj1obnRbaT10LmNoYXJBdCgrK3MpXSk/aT10LmNoYXJBdCgrK3MpOnI9ImUiPT09aT8iICI6IjAiLChvPWVbaV0pJiYoaT1vKG4scikpLGEucHVzaChpKSxsPXMrMSk7cmV0dXJuIGEucHVzaCh0LnNsaWNlKGwscykpLGEuam9pbigiIil9fWZ1bmN0aW9uIFYodCxlKXtyZXR1cm4gZnVuY3Rpb24obil7dmFyIGkscixvPXJudCgxOTAwKTtpZihVKG8sdCxuKz0iIiwwKSE9bi5sZW5ndGgpcmV0dXJuIG51bGw7aWYoIlEiaW4gbylyZXR1cm4gbmV3IERhdGUoby5RKTtpZigicCJpbiBvJiYoby5IPW8uSCUxMisxMipvLnApLCJWImluIG8pe2lmKG8uVjwxfHxvLlY+NTMpcmV0dXJuIG51bGw7InciaW4gb3x8KG8udz0xKSwiWiJpbiBvPyhyPShpPWludChybnQoby55KSkpLmdldFVUQ0RheSgpLGk9cj40fHwwPT09cj9KZXQuY2VpbChpKTpKZXQoaSksaT0kZXQub2Zmc2V0KGksNyooby5WLTEpKSxvLnk9aS5nZXRVVENGdWxsWWVhcigpLG8ubT1pLmdldFVUQ01vbnRoKCksby5kPWkuZ2V0VVRDRGF0ZSgpKyhvLncrNiklNyk6KHI9KGk9ZShybnQoby55KSkpLmdldERheSgpLGk9cj40fHwwPT09cj9XZXQuY2VpbChpKTpXZXQoaSksaT1VZXQub2Zmc2V0KGksNyooby5WLTEpKSxvLnk9aS5nZXRGdWxsWWVhcigpLG8ubT1pLmdldE1vbnRoKCksby5kPWkuZ2V0RGF0ZSgpKyhvLncrNiklNyl9ZWxzZSgiVyJpbiBvfHwiVSJpbiBvKSYmKCJ3ImluIG98fChvLnc9InUiaW4gbz9vLnUlNzoiVyJpbiBvPzE6MCkscj0iWiJpbiBvP2ludChybnQoby55KSkuZ2V0VVRDRGF5KCk6ZShybnQoby55KSkuZ2V0RGF5KCksby5tPTAsby5kPSJXImluIG8/KG8udys2KSU3Kzcqby5XLShyKzUpJTc6by53Kzcqby5VLShyKzYpJTcpO3JldHVybiJaImluIG8/KG8uSCs9by5aLzEwMHwwLG8uTSs9by5aJTEwMCxpbnQobykpOmUobyl9fWZ1bmN0aW9uIFUodCxlLG4saSl7Zm9yKHZhciByLG8sYT0wLHM9ZS5sZW5ndGgsbD1uLmxlbmd0aDthPHM7KXtpZihpPj1sKXJldHVybi0xO2lmKDM3PT09KHI9ZS5jaGFyQ29kZUF0KGErKykpKXtpZihyPWUuY2hhckF0KGErKyksIShvPVBbciBpbiBobnQ/ZS5jaGFyQXQoYSsrKTpyXSl8fChpPW8odCxuLGkpKTwwKXJldHVybi0xfWVsc2UgaWYociE9bi5jaGFyQ29kZUF0KGkrKykpcmV0dXJuLTF9cmV0dXJuIGl9cmV0dXJuIHYueD1GKG4sdiksdi5YPUYoaSx2KSx2LmM9RihlLHYpLEUueD1GKG4sRSksRS5YPUYoaSxFKSxFLmM9RihlLEUpLHtmb3JtYXQ6ZnVuY3Rpb24odCl7dmFyIGU9Rih0Kz0iIix2KTtyZXR1cm4gZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0fSxlfSxwYXJzZTpmdW5jdGlvbih0KXt2YXIgZT1WKHQrPSIiLG5udCk7cmV0dXJuIGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdH0sZX0sdXRjRm9ybWF0OmZ1bmN0aW9uKHQpe3ZhciBlPUYodCs9IiIsRSk7cmV0dXJuIGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdH0sZX0sdXRjUGFyc2U6ZnVuY3Rpb24odCl7dmFyIGU9Vih0LGludCk7cmV0dXJuIGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdH0sZX19fXZhciBhbnQsc250LGxudCxjbnQsdW50LGhudD17Ii0iOiIiLF86IiAiLDA6IjAifSxkbnQ9L15ccypcZCsvLHBudD0vXiUvLGZudD0vW1xcXiQqKz98W1xdKCkue31dL2c7ZnVuY3Rpb24gbW50KHQsZSxuKXt2YXIgaT10PDA/Ii0iOiIiLHI9KGk/LXQ6dCkrIiIsbz1yLmxlbmd0aDtyZXR1cm4gaSsobzxuP25ldyBBcnJheShuLW8rMSkuam9pbihlKStyOnIpfWZ1bmN0aW9uIGdudCh0KXtyZXR1cm4gdC5yZXBsYWNlKGZudCwiXFwkJiIpfWZ1bmN0aW9uIF9udCh0KXtyZXR1cm4gbmV3IFJlZ0V4cCgiXig/OiIrdC5tYXAoZ250KS5qb2luKCJ8IikrIikiLCJpIil9ZnVuY3Rpb24geW50KHQpe2Zvcih2YXIgZT17fSxuPS0xLGk9dC5sZW5ndGg7KytuPGk7KWVbdFtuXS50b0xvd2VyQ2FzZSgpXT1uO3JldHVybiBlfWZ1bmN0aW9uIHZudCh0LGUsbil7dmFyIGk9ZG50LmV4ZWMoZS5zbGljZShuLG4rMSkpO3JldHVybiBpPyh0Lnc9K2lbMF0sbitpWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gYm50KHQsZSxuKXt2YXIgaT1kbnQuZXhlYyhlLnNsaWNlKG4sbisxKSk7cmV0dXJuIGk/KHQudT0raVswXSxuK2lbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiB4bnQodCxlLG4pe3ZhciBpPWRudC5leGVjKGUuc2xpY2UobixuKzIpKTtyZXR1cm4gaT8odC5VPStpWzBdLG4raVswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIHdudCh0LGUsbil7dmFyIGk9ZG50LmV4ZWMoZS5zbGljZShuLG4rMikpO3JldHVybiBpPyh0LlY9K2lbMF0sbitpWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gU250KHQsZSxuKXt2YXIgaT1kbnQuZXhlYyhlLnNsaWNlKG4sbisyKSk7cmV0dXJuIGk/KHQuVz0raVswXSxuK2lbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBNbnQodCxlLG4pe3ZhciBpPWRudC5leGVjKGUuc2xpY2UobixuKzQpKTtyZXR1cm4gaT8odC55PStpWzBdLG4raVswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIEVudCh0LGUsbil7dmFyIGk9ZG50LmV4ZWMoZS5zbGljZShuLG4rMikpO3JldHVybiBpPyh0Lnk9K2lbMF0rKCtpWzBdPjY4PzE5MDA6MmUzKSxuK2lbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBUbnQodCxlLG4pe3ZhciBpPS9eKFopfChbKy1dXGRcZCkoPzo6PyhcZFxkKSk/Ly5leGVjKGUuc2xpY2UobixuKzYpKTtyZXR1cm4gaT8odC5aPWlbMV0/MDotKGlbMl0rKGlbM118fCIwMCIpKSxuK2lbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBDbnQodCxlLG4pe3ZhciBpPWRudC5leGVjKGUuc2xpY2UobixuKzIpKTtyZXR1cm4gaT8odC5tPWlbMF0tMSxuK2lbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBBbnQodCxlLG4pe3ZhciBpPWRudC5leGVjKGUuc2xpY2UobixuKzIpKTtyZXR1cm4gaT8odC5kPStpWzBdLG4raVswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIGtudCh0LGUsbil7dmFyIGk9ZG50LmV4ZWMoZS5zbGljZShuLG4rMykpO3JldHVybiBpPyh0Lm09MCx0LmQ9K2lbMF0sbitpWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gTG50KHQsZSxuKXt2YXIgaT1kbnQuZXhlYyhlLnNsaWNlKG4sbisyKSk7cmV0dXJuIGk/KHQuSD0raVswXSxuK2lbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBQbnQodCxlLG4pe3ZhciBpPWRudC5leGVjKGUuc2xpY2UobixuKzIpKTtyZXR1cm4gaT8odC5NPStpWzBdLG4raVswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIE5udCh0LGUsbil7dmFyIGk9ZG50LmV4ZWMoZS5zbGljZShuLG4rMikpO3JldHVybiBpPyh0LlM9K2lbMF0sbitpWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gSW50KHQsZSxuKXt2YXIgaT1kbnQuZXhlYyhlLnNsaWNlKG4sbiszKSk7cmV0dXJuIGk/KHQuTD0raVswXSxuK2lbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBSbnQodCxlLG4pe3ZhciBpPWRudC5leGVjKGUuc2xpY2UobixuKzYpKTtyZXR1cm4gaT8odC5MPU1hdGguZmxvb3IoaVswXS8xZTMpLG4raVswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIE9udCh0LGUsbil7dmFyIGk9cG50LmV4ZWMoZS5zbGljZShuLG4rMSkpO3JldHVybiBpP24raVswXS5sZW5ndGg6LTF9ZnVuY3Rpb24gem50KHQsZSxuKXt2YXIgaT1kbnQuZXhlYyhlLnNsaWNlKG4pKTtyZXR1cm4gaT8odC5RPStpWzBdLG4raVswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIERudCh0LGUsbil7dmFyIGk9ZG50LmV4ZWMoZS5zbGljZShuKSk7cmV0dXJuIGk/KHQuUT0xZTMqK2lbMF0sbitpWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gQm50KHQsZSl7cmV0dXJuIG1udCh0LmdldERhdGUoKSxlLDIpfWZ1bmN0aW9uIEhudCh0LGUpe3JldHVybiBtbnQodC5nZXRIb3VycygpLGUsMil9ZnVuY3Rpb24gRm50KHQsZSl7cmV0dXJuIG1udCh0LmdldEhvdXJzKCklMTJ8fDEyLGUsMil9ZnVuY3Rpb24gVm50KHQsZSl7cmV0dXJuIG1udCgxK1VldC5jb3VudChYZXQodCksdCksZSwzKX1mdW5jdGlvbiBVbnQodCxlKXtyZXR1cm4gbW50KHQuZ2V0TWlsbGlzZWNvbmRzKCksZSwzKX1mdW5jdGlvbiBqbnQodCxlKXtyZXR1cm4gVW50KHQsZSkrIjAwMCJ9ZnVuY3Rpb24gR250KHQsZSl7cmV0dXJuIG1udCh0LmdldE1vbnRoKCkrMSxlLDIpfWZ1bmN0aW9uIFdudCh0LGUpe3JldHVybiBtbnQodC5nZXRNaW51dGVzKCksZSwyKX1mdW5jdGlvbiBxbnQodCxlKXtyZXR1cm4gbW50KHQuZ2V0U2Vjb25kcygpLGUsMil9ZnVuY3Rpb24gWW50KHQpe3ZhciBlPXQuZ2V0RGF5KCk7cmV0dXJuIDA9PT1lPzc6ZX1mdW5jdGlvbiBYbnQodCxlKXtyZXR1cm4gbW50KEdldC5jb3VudChYZXQodCksdCksZSwyKX1mdW5jdGlvbiAkbnQodCxlKXt2YXIgbj10LmdldERheSgpO3JldHVybiB0PW4+PTR8fDA9PT1uP3FldCh0KTpxZXQuY2VpbCh0KSxtbnQocWV0LmNvdW50KFhldCh0KSx0KSsoND09PVhldCh0KS5nZXREYXkoKSksZSwyKX1mdW5jdGlvbiBLbnQodCl7cmV0dXJuIHQuZ2V0RGF5KCl9ZnVuY3Rpb24gWm50KHQsZSl7cmV0dXJuIG1udChXZXQuY291bnQoWGV0KHQpLHQpLGUsMil9ZnVuY3Rpb24gSm50KHQsZSl7cmV0dXJuIG1udCh0LmdldEZ1bGxZZWFyKCklMTAwLGUsMil9ZnVuY3Rpb24gUW50KHQsZSl7cmV0dXJuIG1udCh0LmdldEZ1bGxZZWFyKCklMWU0LGUsNCl9ZnVuY3Rpb24gdGl0KHQpe3ZhciBlPXQuZ2V0VGltZXpvbmVPZmZzZXQoKTtyZXR1cm4oZT4wPyItIjooZSo9LTEsIisiKSkrbW50KGUvNjB8MCwiMCIsMikrbW50KGUlNjAsIjAiLDIpfWZ1bmN0aW9uIGVpdCh0LGUpe3JldHVybiBtbnQodC5nZXRVVENEYXRlKCksZSwyKX1mdW5jdGlvbiBuaXQodCxlKXtyZXR1cm4gbW50KHQuZ2V0VVRDSG91cnMoKSxlLDIpfWZ1bmN0aW9uIGlpdCh0LGUpe3JldHVybiBtbnQodC5nZXRVVENIb3VycygpJTEyfHwxMixlLDIpfWZ1bmN0aW9uIHJpdCh0LGUpe3JldHVybiBtbnQoMSskZXQuY291bnQoZW50KHQpLHQpLGUsMyl9ZnVuY3Rpb24gb2l0KHQsZSl7cmV0dXJuIG1udCh0LmdldFVUQ01pbGxpc2Vjb25kcygpLGUsMyl9ZnVuY3Rpb24gYWl0KHQsZSl7cmV0dXJuIG9pdCh0LGUpKyIwMDAifWZ1bmN0aW9uIHNpdCh0LGUpe3JldHVybiBtbnQodC5nZXRVVENNb250aCgpKzEsZSwyKX1mdW5jdGlvbiBsaXQodCxlKXtyZXR1cm4gbW50KHQuZ2V0VVRDTWludXRlcygpLGUsMil9ZnVuY3Rpb24gY2l0KHQsZSl7cmV0dXJuIG1udCh0LmdldFVUQ1NlY29uZHMoKSxlLDIpfWZ1bmN0aW9uIHVpdCh0KXt2YXIgZT10LmdldFVUQ0RheSgpO3JldHVybiAwPT09ZT83OmV9ZnVuY3Rpb24gaGl0KHQsZSl7cmV0dXJuIG1udChaZXQuY291bnQoZW50KHQpLHQpLGUsMil9ZnVuY3Rpb24gZGl0KHQsZSl7dmFyIG49dC5nZXRVVENEYXkoKTtyZXR1cm4gdD1uPj00fHwwPT09bj9RZXQodCk6UWV0LmNlaWwodCksbW50KFFldC5jb3VudChlbnQodCksdCkrKDQ9PT1lbnQodCkuZ2V0VVRDRGF5KCkpLGUsMil9ZnVuY3Rpb24gcGl0KHQpe3JldHVybiB0LmdldFVUQ0RheSgpfWZ1bmN0aW9uIGZpdCh0LGUpe3JldHVybiBtbnQoSmV0LmNvdW50KGVudCh0KSx0KSxlLDIpfWZ1bmN0aW9uIG1pdCh0LGUpe3JldHVybiBtbnQodC5nZXRVVENGdWxsWWVhcigpJTEwMCxlLDIpfWZ1bmN0aW9uIGdpdCh0LGUpe3JldHVybiBtbnQodC5nZXRVVENGdWxsWWVhcigpJTFlNCxlLDQpfWZ1bmN0aW9uIF9pdCgpe3JldHVybiIrMDAwMCJ9ZnVuY3Rpb24geWl0KCl7cmV0dXJuIiUifWZ1bmN0aW9uIHZpdCh0KXtyZXR1cm4rdH1mdW5jdGlvbiBiaXQodCl7cmV0dXJuIE1hdGguZmxvb3IoK3QvMWUzKX1mdW5jdGlvbiB4aXQodCl7cmV0dXJuIGFudD1vbnQodCksc250PWFudC5mb3JtYXQsbG50PWFudC5wYXJzZSxjbnQ9YW50LnV0Y0Zvcm1hdCx1bnQ9YW50LnV0Y1BhcnNlLGFudH14aXQoe2RhdGVUaW1lOiIleCwgJVgiLGRhdGU6IiUtbS8lLWQvJVkiLHRpbWU6IiUtSTolTTolUyAlcCIscGVyaW9kczpbIkFNIiwiUE0iXSxkYXlzOlsiU3VuZGF5IiwiTW9uZGF5IiwiVHVlc2RheSIsIldlZG5lc2RheSIsIlRodXJzZGF5IiwiRnJpZGF5IiwiU2F0dXJkYXkiXSxzaG9ydERheXM6WyJTdW4iLCJNb24iLCJUdWUiLCJXZWQiLCJUaHUiLCJGcmkiLCJTYXQiXSxtb250aHM6WyJKYW51YXJ5IiwiRmVicnVhcnkiLCJNYXJjaCIsIkFwcmlsIiwiTWF5IiwiSnVuZSIsIkp1bHkiLCJBdWd1c3QiLCJTZXB0ZW1iZXIiLCJPY3RvYmVyIiwiTm92ZW1iZXIiLCJEZWNlbWJlciJdLHNob3J0TW9udGhzOlsiSmFuIiwiRmViIiwiTWFyIiwiQXByIiwiTWF5IiwiSnVuIiwiSnVsIiwiQXVnIiwiU2VwIiwiT2N0IiwiTm92IiwiRGVjIl19KTt2YXIgd2l0PSIlWS0lbS0lZFQlSDolTTolUy4lTFoiO3ZhciBTaXQ9RGF0ZS5wcm90b3R5cGUudG9JU09TdHJpbmc/ZnVuY3Rpb24gTWl0KHQpe3JldHVybiB0LnRvSVNPU3RyaW5nKCl9OmNudCh3aXQpO3ZhciBFaXQsVGl0LENpdD0rbmV3IERhdGUoIjIwMDAtMDEtMDFUMDA6MDA6MDAuMDAwWiIpP2Z1bmN0aW9uIEFpdCh0KXt2YXIgZT1uZXcgRGF0ZSh0KTtyZXR1cm4gaXNOYU4oZSk/bnVsbDplfTp1bnQod2l0KSxraXQ9MCxMaXQ9MCxQaXQ9MCxOaXQ9MCxJaXQ9MCxSaXQ9MCxPaXQ9Im9iamVjdCI9PXR5cGVvZiBwZXJmb3JtYW5jZSYmcGVyZm9ybWFuY2Uubm93P3BlcmZvcm1hbmNlOkRhdGUseml0PSJvYmplY3QiPT10eXBlb2Ygd2luZG93JiZ3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lP3dpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUuYmluZCh3aW5kb3cpOmZ1bmN0aW9uKHQpe3NldFRpbWVvdXQodCwxNyl9O2Z1bmN0aW9uIERpdCgpe3JldHVybiBJaXR8fCh6aXQoQml0KSxJaXQ9T2l0Lm5vdygpK1JpdCl9ZnVuY3Rpb24gQml0KCl7SWl0PTB9ZnVuY3Rpb24gSGl0KCl7dGhpcy5fY2FsbD10aGlzLl90aW1lPXRoaXMuX25leHQ9bnVsbH1mdW5jdGlvbiBGaXQodCxlLG4pe3ZhciBpPW5ldyBIaXQ7cmV0dXJuIGkucmVzdGFydCh0LGUsbiksaX1mdW5jdGlvbiBWaXQoKXtEaXQoKSwrK2tpdDtmb3IodmFyIHQsZT1FaXQ7ZTspKHQ9SWl0LWUuX3RpbWUpPj0wJiZlLl9jYWxsLmNhbGwobnVsbCx0KSxlPWUuX25leHQ7LS1raXR9ZnVuY3Rpb24gVWl0KCl7SWl0PShOaXQ9T2l0Lm5vdygpKStSaXQsa2l0PUxpdD0wO3RyeXtWaXQoKX1maW5hbGx5e2tpdD0wLChmdW5jdGlvbiB0KCl7dmFyIHQsZSxuPUVpdCxpPTEvMDtmb3IoO247KW4uX2NhbGw/KGk+bi5fdGltZSYmKGk9bi5fdGltZSksdD1uLG49bi5fbmV4dCk6KGU9bi5fbmV4dCxuLl9uZXh0PW51bGwsbj10P3QuX25leHQ9ZTpFaXQ9ZSk7VGl0PXQsR2l0KGkpfSkoKSxJaXQ9MH19ZnVuY3Rpb24gaml0KCl7dmFyIHQ9T2l0Lm5vdygpLGU9dC1OaXQ7ZT4xZTMmJihSaXQtPWUsTml0PXQpfWZ1bmN0aW9uIEdpdCh0KXtraXR8fChMaXQmJihMaXQ9Y2xlYXJUaW1lb3V0KExpdCkpLHQtSWl0PjI0Pyh0PDEvMCYmKExpdD1zZXRUaW1lb3V0KFVpdCx0LU9pdC5ub3coKS1SaXQpKSxQaXQmJihQaXQ9Y2xlYXJJbnRlcnZhbChQaXQpKSk6KFBpdHx8KE5pdD1PaXQubm93KCksUGl0PXNldEludGVydmFsKGppdCwxZTMpKSxraXQ9MSx6aXQoVWl0KSkpfUhpdC5wcm90b3R5cGU9Rml0LnByb3RvdHlwZT17Y29uc3RydWN0b3I6SGl0LHJlc3RhcnQ6ZnVuY3Rpb24odCxlLG4pe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0KXRocm93IG5ldyBUeXBlRXJyb3IoImNhbGxiYWNrIGlzIG5vdCBhIGZ1bmN0aW9uIik7bj0obnVsbD09bj9EaXQoKTorbikrKG51bGw9PWU/MDorZSksdGhpcy5fbmV4dHx8VGl0PT09dGhpc3x8KFRpdD9UaXQuX25leHQ9dGhpczpFaXQ9dGhpcyxUaXQ9dGhpcyksdGhpcy5fY2FsbD10LHRoaXMuX3RpbWU9bixHaXQoKX0sc3RvcDpmdW5jdGlvbigpe3RoaXMuX2NhbGwmJih0aGlzLl9jYWxsPW51bGwsdGhpcy5fdGltZT0xLzAsR2l0KCkpfX07dmFyIFdpdD0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIscWl0PXtzdmc6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIix4aHRtbDpXaXQseGxpbms6Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiLHhtbDoiaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlIix4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC94bWxucy8ifTtmdW5jdGlvbiBZaXQodCl7dmFyIGU9dCs9IiIsbj1lLmluZGV4T2YoIjoiKTtyZXR1cm4gbj49MCYmInhtbG5zIiE9PShlPXQuc2xpY2UoMCxuKSkmJih0PXQuc2xpY2UobisxKSkscWl0Lmhhc093blByb3BlcnR5KGUpP3tzcGFjZTpxaXRbZV0sbG9jYWw6dH06dH1mdW5jdGlvbiBYaXQodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5vd25lckRvY3VtZW50LG49dGhpcy5uYW1lc3BhY2VVUkk7cmV0dXJuIG49PT1XaXQmJmUuZG9jdW1lbnRFbGVtZW50Lm5hbWVzcGFjZVVSST09PVdpdD9lLmNyZWF0ZUVsZW1lbnQodCk6ZS5jcmVhdGVFbGVtZW50TlMobix0KX19ZnVuY3Rpb24gJGl0KHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0aGlzLm93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKHQuc3BhY2UsdC5sb2NhbCl9fWZ1bmN0aW9uIEtpdCh0KXt2YXIgZT1ZaXQodCk7cmV0dXJuKGUubG9jYWw/JGl0OlhpdCkoZSl9ZnVuY3Rpb24gWml0KCl7fWZ1bmN0aW9uIEppdCh0KXtyZXR1cm4gbnVsbD09dD9aaXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5xdWVyeVNlbGVjdG9yKHQpfX1mdW5jdGlvbiBRaXQoKXtyZXR1cm5bXX1mdW5jdGlvbiB0cnQodCl7cmV0dXJuIG51bGw9PXQ/UWl0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucXVlcnlTZWxlY3RvckFsbCh0KX19ZnVuY3Rpb24gZXJ0KHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0aGlzLm1hdGNoZXModCl9fWZ1bmN0aW9uIG5ydCh0KXtyZXR1cm4gbmV3IEFycmF5KHQubGVuZ3RoKX1mdW5jdGlvbiBpcnQodCxlKXt0aGlzLm93bmVyRG9jdW1lbnQ9dC5vd25lckRvY3VtZW50LHRoaXMubmFtZXNwYWNlVVJJPXQubmFtZXNwYWNlVVJJLHRoaXMuX25leHQ9bnVsbCx0aGlzLl9wYXJlbnQ9dCx0aGlzLl9fZGF0YV9fPWV9aXJ0LnByb3RvdHlwZT17Y29uc3RydWN0b3I6aXJ0LGFwcGVuZENoaWxkOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9wYXJlbnQuaW5zZXJ0QmVmb3JlKHQsdGhpcy5fbmV4dCl9LGluc2VydEJlZm9yZTpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLl9wYXJlbnQuaW5zZXJ0QmVmb3JlKHQsZSl9LHF1ZXJ5U2VsZWN0b3I6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3BhcmVudC5xdWVyeVNlbGVjdG9yKHQpfSxxdWVyeVNlbGVjdG9yQWxsOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9wYXJlbnQucXVlcnlTZWxlY3RvckFsbCh0KX19O2Z1bmN0aW9uIHJydCh0LGUsbixpLHIsbyl7Zm9yKHZhciBhLHM9MCxsPWUubGVuZ3RoLGM9by5sZW5ndGg7czxjOysrcykoYT1lW3NdKT8oYS5fX2RhdGFfXz1vW3NdLGlbc109YSk6bltzXT1uZXcgaXJ0KHQsb1tzXSk7Zm9yKDtzPGw7KytzKShhPWVbc10pJiYocltzXT1hKX1mdW5jdGlvbiBvcnQodCxlLG4saSxyLG8sYSl7dmFyIHMsbCxjLHU9e30saD1lLmxlbmd0aCxkPW8ubGVuZ3RoLHA9bmV3IEFycmF5KGgpO2ZvcihzPTA7czxoOysrcykobD1lW3NdKSYmKHBbc109Yz0iJCIrYS5jYWxsKGwsbC5fX2RhdGFfXyxzLGUpLGMgaW4gdT9yW3NdPWw6dVtjXT1sKTtmb3Iocz0wO3M8ZDsrK3MpKGw9dVtjPSIkIithLmNhbGwodCxvW3NdLHMsbyldKT8oaVtzXT1sLGwuX19kYXRhX189b1tzXSx1W2NdPW51bGwpOm5bc109bmV3IGlydCh0LG9bc10pO2ZvcihzPTA7czxoOysrcykobD1lW3NdKSYmdVtwW3NdXT09PWwmJihyW3NdPWwpfWZ1bmN0aW9uIGFydCh0LGUpe3JldHVybiB0PGU/LTE6dD5lPzE6dD49ZT8wOk5hTn1mdW5jdGlvbiBzcnQodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5yZW1vdmVBdHRyaWJ1dGUodCl9fWZ1bmN0aW9uIGxydCh0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnJlbW92ZUF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCl9fWZ1bmN0aW9uIGNydCh0LGUpe3JldHVybiBmdW5jdGlvbigpe3RoaXMuc2V0QXR0cmlidXRlKHQsZSl9fWZ1bmN0aW9uIHVydCh0LGUpe3JldHVybiBmdW5jdGlvbigpe3RoaXMuc2V0QXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsLGUpfX1mdW5jdGlvbiBocnQodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbj1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtudWxsPT1uP3RoaXMucmVtb3ZlQXR0cmlidXRlKHQpOnRoaXMuc2V0QXR0cmlidXRlKHQsbil9fWZ1bmN0aW9uIGRydCh0LGUpe3JldHVybiBmdW5jdGlvbigpe3ZhciBuPWUuYXBwbHkodGhpcyxhcmd1bWVudHMpO251bGw9PW4/dGhpcy5yZW1vdmVBdHRyaWJ1dGVOUyh0LnNwYWNlLHQubG9jYWwpOnRoaXMuc2V0QXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsLG4pfX1mdW5jdGlvbiBwcnQodCl7cmV0dXJuIHQub3duZXJEb2N1bWVudCYmdC5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3fHx0LmRvY3VtZW50JiZ0fHx0LmRlZmF1bHRWaWV3fWZ1bmN0aW9uIGZydCh0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KHQpfX1mdW5jdGlvbiBtcnQodCxlLG4pe3JldHVybiBmdW5jdGlvbigpe3RoaXMuc3R5bGUuc2V0UHJvcGVydHkodCxlLG4pfX1mdW5jdGlvbiBncnQodCxlLG4pe3JldHVybiBmdW5jdGlvbigpe3ZhciBpPWUuYXBwbHkodGhpcyxhcmd1bWVudHMpO251bGw9PWk/dGhpcy5zdHlsZS5yZW1vdmVQcm9wZXJ0eSh0KTp0aGlzLnN0eWxlLnNldFByb3BlcnR5KHQsaSxuKX19ZnVuY3Rpb24gX3J0KHQsZSl7cmV0dXJuIHQuc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZShlKXx8cHJ0KHQpLmdldENvbXB1dGVkU3R5bGUodCxudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKGUpfWZ1bmN0aW9uIHlydCh0KXtyZXR1cm4gZnVuY3Rpb24oKXtkZWxldGUgdGhpc1t0XX19ZnVuY3Rpb24gdnJ0KHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpc1t0XT1lfX1mdW5jdGlvbiBicnQodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbj1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtudWxsPT1uP2RlbGV0ZSB0aGlzW3RdOnRoaXNbdF09bn19ZnVuY3Rpb24geHJ0KHQpe3JldHVybiB0LnRyaW0oKS5zcGxpdCgvXnxccysvKX1mdW5jdGlvbiB3cnQodCl7cmV0dXJuIHQuY2xhc3NMaXN0fHxuZXcgU3J0KHQpfWZ1bmN0aW9uIFNydCh0KXt0aGlzLl9ub2RlPXQsdGhpcy5fbmFtZXM9eHJ0KHQuZ2V0QXR0cmlidXRlKCJjbGFzcyIpfHwiIil9ZnVuY3Rpb24gTXJ0KHQsZSl7Zm9yKHZhciBuPXdydCh0KSxpPS0xLHI9ZS5sZW5ndGg7KytpPHI7KW4uYWRkKGVbaV0pfWZ1bmN0aW9uIEVydCh0LGUpe2Zvcih2YXIgbj13cnQodCksaT0tMSxyPWUubGVuZ3RoOysraTxyOyluLnJlbW92ZShlW2ldKX1mdW5jdGlvbiBUcnQodCl7cmV0dXJuIGZ1bmN0aW9uKCl7TXJ0KHRoaXMsdCl9fWZ1bmN0aW9uIENydCh0KXtyZXR1cm4gZnVuY3Rpb24oKXtFcnQodGhpcyx0KX19ZnVuY3Rpb24gQXJ0KHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7KGUuYXBwbHkodGhpcyxhcmd1bWVudHMpP01ydDpFcnQpKHRoaXMsdCl9fWZ1bmN0aW9uIGtydCgpe3RoaXMudGV4dENvbnRlbnQ9IiJ9ZnVuY3Rpb24gTHJ0KHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMudGV4dENvbnRlbnQ9dH19ZnVuY3Rpb24gUHJ0KHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciBlPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpO3RoaXMudGV4dENvbnRlbnQ9bnVsbD09ZT8iIjplfX1mdW5jdGlvbiBOcnQoKXt0aGlzLmlubmVySFRNTD0iIn1mdW5jdGlvbiBJcnQodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5pbm5lckhUTUw9dH19ZnVuY3Rpb24gUnJ0KHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciBlPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpO3RoaXMuaW5uZXJIVE1MPW51bGw9PWU/IiI6ZX19ZnVuY3Rpb24gT3J0KCl7dGhpcy5uZXh0U2libGluZyYmdGhpcy5wYXJlbnROb2RlLmFwcGVuZENoaWxkKHRoaXMpfWZ1bmN0aW9uIHpydCgpe3RoaXMucHJldmlvdXNTaWJsaW5nJiZ0aGlzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHRoaXMsdGhpcy5wYXJlbnROb2RlLmZpcnN0Q2hpbGQpfWZ1bmN0aW9uIERydCgpe3JldHVybiBudWxsfWZ1bmN0aW9uIEJydCgpe3ZhciB0PXRoaXMucGFyZW50Tm9kZTt0JiZ0LnJlbW92ZUNoaWxkKHRoaXMpfWZ1bmN0aW9uIEhydCgpe3ZhciB0PXRoaXMuY2xvbmVOb2RlKCExKSxlPXRoaXMucGFyZW50Tm9kZTtyZXR1cm4gZT9lLmluc2VydEJlZm9yZSh0LHRoaXMubmV4dFNpYmxpbmcpOnR9ZnVuY3Rpb24gRnJ0KCl7dmFyIHQ9dGhpcy5jbG9uZU5vZGUoITApLGU9dGhpcy5wYXJlbnROb2RlO3JldHVybiBlP2UuaW5zZXJ0QmVmb3JlKHQsdGhpcy5uZXh0U2libGluZyk6dH1TcnQucHJvdG90eXBlPXthZGQ6ZnVuY3Rpb24odCl7dGhpcy5fbmFtZXMuaW5kZXhPZih0KTwwJiYodGhpcy5fbmFtZXMucHVzaCh0KSx0aGlzLl9ub2RlLnNldEF0dHJpYnV0ZSgiY2xhc3MiLHRoaXMuX25hbWVzLmpvaW4oIiAiKSkpfSxyZW1vdmU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fbmFtZXMuaW5kZXhPZih0KTtlPj0wJiYodGhpcy5fbmFtZXMuc3BsaWNlKGUsMSksdGhpcy5fbm9kZS5zZXRBdHRyaWJ1dGUoImNsYXNzIix0aGlzLl9uYW1lcy5qb2luKCIgIikpKX0sY29udGFpbnM6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX25hbWVzLmluZGV4T2YodCk+PTB9fTt2YXIgVnJ0PXt9OyJ1bmRlZmluZWQiIT10eXBlb2YgZG9jdW1lbnQmJigib25tb3VzZWVudGVyImluIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudHx8KFZydD17bW91c2VlbnRlcjoibW91c2VvdmVyIixtb3VzZWxlYXZlOiJtb3VzZW91dCJ9KSk7ZnVuY3Rpb24gVXJ0KHQsZSxuKXtyZXR1cm4gdD1qcnQodCxlLG4pLGZ1bmN0aW9uKGUpe3ZhciBuPWUucmVsYXRlZFRhcmdldDtuJiYobj09PXRoaXN8fDgmbi5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbih0aGlzKSl8fHQuY2FsbCh0aGlzLGUpfX1mdW5jdGlvbiBqcnQodCxlLG4pe3JldHVybiBmdW5jdGlvbihpKXt0cnl7dC5jYWxsKHRoaXMsdGhpcy5fX2RhdGFfXyxlLG4pfWZpbmFsbHl7fX19ZnVuY3Rpb24gR3J0KHQpe3JldHVybiB0LnRyaW0oKS5zcGxpdCgvXnxccysvKS5tYXAoKGZ1bmN0aW9uKHQpe3ZhciBlPSIiLG49dC5pbmRleE9mKCIuIik7cmV0dXJuIG4+PTAmJihlPXQuc2xpY2UobisxKSx0PXQuc2xpY2UoMCxuKSkse3R5cGU6dCxuYW1lOmV9fSkpfWZ1bmN0aW9uIFdydCh0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT10aGlzLl9fb247aWYoZSl7Zm9yKHZhciBuLGk9MCxyPS0xLG89ZS5sZW5ndGg7aTxvOysraSluPWVbaV0sdC50eXBlJiZuLnR5cGUhPT10LnR5cGV8fG4ubmFtZSE9PXQubmFtZT9lWysrcl09bjp0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIobi50eXBlLG4ubGlzdGVuZXIsbi5jYXB0dXJlKTsrK3I/ZS5sZW5ndGg9cjpkZWxldGUgdGhpcy5fX29ufX19ZnVuY3Rpb24gcXJ0KHQsZSxuKXt2YXIgaT1WcnQuaGFzT3duUHJvcGVydHkodC50eXBlKT9VcnQ6anJ0O3JldHVybiBmdW5jdGlvbihyLG8sYSl7dmFyIHMsbD10aGlzLl9fb24sYz1pKGUsbyxhKTtpZihsKWZvcih2YXIgdT0wLGg9bC5sZW5ndGg7dTxoOysrdSlpZigocz1sW3VdKS50eXBlPT09dC50eXBlJiZzLm5hbWU9PT10Lm5hbWUpcmV0dXJuIHRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcihzLnR5cGUscy5saXN0ZW5lcixzLmNhcHR1cmUpLHRoaXMuYWRkRXZlbnRMaXN0ZW5lcihzLnR5cGUscy5saXN0ZW5lcj1jLHMuY2FwdHVyZT1uKSx2b2lkKHMudmFsdWU9ZSk7dGhpcy5hZGRFdmVudExpc3RlbmVyKHQudHlwZSxjLG4pLHM9e3R5cGU6dC50eXBlLG5hbWU6dC5uYW1lLHZhbHVlOmUsbGlzdGVuZXI6YyxjYXB0dXJlOm59LGw/bC5wdXNoKHMpOnRoaXMuX19vbj1bc119fWZ1bmN0aW9uIFlydCh0LGUsbil7dmFyIGk9cHJ0KHQpLHI9aS5DdXN0b21FdmVudDsiZnVuY3Rpb24iPT10eXBlb2Ygcj9yPW5ldyByKGUsbik6KHI9aS5kb2N1bWVudC5jcmVhdGVFdmVudCgiRXZlbnQiKSxuPyhyLmluaXRFdmVudChlLG4uYnViYmxlcyxuLmNhbmNlbGFibGUpLHIuZGV0YWlsPW4uZGV0YWlsKTpyLmluaXRFdmVudChlLCExLCExKSksdC5kaXNwYXRjaEV2ZW50KHIpfWZ1bmN0aW9uIFhydCh0LGUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBZcnQodGhpcyx0LGUpfX1mdW5jdGlvbiAkcnQodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gWXJ0KHRoaXMsdCxlLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9fXZhciBLcnQ9W251bGxdO2Z1bmN0aW9uIFpydCh0LGUpe3RoaXMuX2dyb3Vwcz10LHRoaXMuX3BhcmVudHM9ZX1mdW5jdGlvbiBKcnQoKXtyZXR1cm4gbmV3IFpydChbW2RvY3VtZW50LmRvY3VtZW50RWxlbWVudF1dLEtydCl9WnJ0LnByb3RvdHlwZT1KcnQucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpacnQsc2VsZWN0OmZ1bmN0aW9uIFFydCh0KXsiZnVuY3Rpb24iIT10eXBlb2YgdCYmKHQ9Sml0KHQpKTtmb3IodmFyIGU9dGhpcy5fZ3JvdXBzLG49ZS5sZW5ndGgsaT1uZXcgQXJyYXkobikscj0wO3I8bjsrK3IpZm9yKHZhciBvLGEscz1lW3JdLGw9cy5sZW5ndGgsYz1pW3JdPW5ldyBBcnJheShsKSx1PTA7dTxsOysrdSkobz1zW3VdKSYmKGE9dC5jYWxsKG8sby5fX2RhdGFfXyx1LHMpKSYmKCJfX2RhdGFfXyJpbiBvJiYoYS5fX2RhdGFfXz1vLl9fZGF0YV9fKSxjW3VdPWEpO3JldHVybiBuZXcgWnJ0KGksdGhpcy5fcGFyZW50cyl9LHNlbGVjdEFsbDpmdW5jdGlvbiB0b3QodCl7ImZ1bmN0aW9uIiE9dHlwZW9mIHQmJih0PXRydCh0KSk7Zm9yKHZhciBlPXRoaXMuX2dyb3VwcyxuPWUubGVuZ3RoLGk9W10scj1bXSxvPTA7bzxuOysrbylmb3IodmFyIGEscz1lW29dLGw9cy5sZW5ndGgsYz0wO2M8bDsrK2MpKGE9c1tjXSkmJihpLnB1c2godC5jYWxsKGEsYS5fX2RhdGFfXyxjLHMpKSxyLnB1c2goYSkpO3JldHVybiBuZXcgWnJ0KGkscil9LGZpbHRlcjpmdW5jdGlvbiBlb3QodCl7ImZ1bmN0aW9uIiE9dHlwZW9mIHQmJih0PWVydCh0KSk7Zm9yKHZhciBlPXRoaXMuX2dyb3VwcyxuPWUubGVuZ3RoLGk9bmV3IEFycmF5KG4pLHI9MDtyPG47KytyKWZvcih2YXIgbyxhPWVbcl0scz1hLmxlbmd0aCxsPWlbcl09W10sYz0wO2M8czsrK2MpKG89YVtjXSkmJnQuY2FsbChvLG8uX19kYXRhX18sYyxhKSYmbC5wdXNoKG8pO3JldHVybiBuZXcgWnJ0KGksdGhpcy5fcGFyZW50cyl9LGRhdGE6ZnVuY3Rpb24gbm90KHQsZSl7aWYoIXQpcmV0dXJuIGY9bmV3IEFycmF5KHRoaXMuc2l6ZSgpKSx1PS0xLHRoaXMuZWFjaCgoZnVuY3Rpb24odCl7ZlsrK3VdPXR9KSksZjt2YXIgbj1lP29ydDpycnQsaT10aGlzLl9wYXJlbnRzLHI9dGhpcy5fZ3JvdXBzOyJmdW5jdGlvbiIhPXR5cGVvZiB0JiYodD0oZnVuY3Rpb24gbyh0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19KSh0KSk7Zm9yKHZhciBhPXIubGVuZ3RoLHM9bmV3IEFycmF5KGEpLGw9bmV3IEFycmF5KGEpLGM9bmV3IEFycmF5KGEpLHU9MDt1PGE7Kyt1KXt2YXIgaD1pW3VdLGQ9clt1XSxwPWQubGVuZ3RoLGY9dC5jYWxsKGgsaCYmaC5fX2RhdGFfXyx1LGkpLG09Zi5sZW5ndGgsZz1sW3VdPW5ldyBBcnJheShtKSxfPXNbdV09bmV3IEFycmF5KG0pO24oaCxkLGcsXyxjW3VdPW5ldyBBcnJheShwKSxmLGUpO2Zvcih2YXIgeSx2LGI9MCx4PTA7YjxtOysrYilpZih5PWdbYl0pe2ZvcihiPj14JiYoeD1iKzEpOyEodj1fW3hdKSYmKyt4PG07KTt5Ll9uZXh0PXZ8fG51bGx9fXJldHVybihzPW5ldyBacnQocyxpKSkuX2VudGVyPWwscy5fZXhpdD1jLHN9LGVudGVyOmZ1bmN0aW9uIGlvdCgpe3JldHVybiBuZXcgWnJ0KHRoaXMuX2VudGVyfHx0aGlzLl9ncm91cHMubWFwKG5ydCksdGhpcy5fcGFyZW50cyl9LGV4aXQ6ZnVuY3Rpb24gcm90KCl7cmV0dXJuIG5ldyBacnQodGhpcy5fZXhpdHx8dGhpcy5fZ3JvdXBzLm1hcChucnQpLHRoaXMuX3BhcmVudHMpfSxqb2luOmZ1bmN0aW9uIG9vdCh0LGUsbil7dmFyIGk9dGhpcy5lbnRlcigpLHI9dGhpcyxvPXRoaXMuZXhpdCgpO3JldHVybiBpPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3QoaSk6aS5hcHBlbmQodCsiIiksbnVsbCE9ZSYmKHI9ZShyKSksbnVsbD09bj9vLnJlbW92ZSgpOm4obyksaSYmcj9pLm1lcmdlKHIpLm9yZGVyKCk6cn0sbWVyZ2U6ZnVuY3Rpb24gYW90KHQpe2Zvcih2YXIgZT10aGlzLl9ncm91cHMsbj10Ll9ncm91cHMsaT1lLmxlbmd0aCxyPU1hdGgubWluKGksbi5sZW5ndGgpLG89bmV3IEFycmF5KGkpLGE9MDthPHI7KythKWZvcih2YXIgcyxsPWVbYV0sYz1uW2FdLHU9bC5sZW5ndGgsaD1vW2FdPW5ldyBBcnJheSh1KSxkPTA7ZDx1OysrZCkocz1sW2RdfHxjW2RdKSYmKGhbZF09cyk7Zm9yKDthPGk7KythKW9bYV09ZVthXTtyZXR1cm4gbmV3IFpydChvLHRoaXMuX3BhcmVudHMpfSxvcmRlcjpmdW5jdGlvbiBzb3QoKXtmb3IodmFyIHQ9dGhpcy5fZ3JvdXBzLGU9LTEsbj10Lmxlbmd0aDsrK2U8bjspZm9yKHZhciBpLHI9dFtlXSxvPXIubGVuZ3RoLTEsYT1yW29dOy0tbz49MDspKGk9cltvXSkmJihhJiY0XmkuY29tcGFyZURvY3VtZW50UG9zaXRpb24oYSkmJmEucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoaSxhKSxhPWkpO3JldHVybiB0aGlzfSxzb3J0OmZ1bmN0aW9uIGxvdCh0KXtmdW5jdGlvbiBlKGUsbil7cmV0dXJuIGUmJm4/dChlLl9fZGF0YV9fLG4uX19kYXRhX18pOiFlLSFufXR8fCh0PWFydCk7Zm9yKHZhciBuPXRoaXMuX2dyb3VwcyxpPW4ubGVuZ3RoLHI9bmV3IEFycmF5KGkpLG89MDtvPGk7KytvKXtmb3IodmFyIGEscz1uW29dLGw9cy5sZW5ndGgsYz1yW29dPW5ldyBBcnJheShsKSx1PTA7dTxsOysrdSkoYT1zW3VdKSYmKGNbdV09YSk7Yy5zb3J0KGUpfXJldHVybiBuZXcgWnJ0KHIsdGhpcy5fcGFyZW50cykub3JkZXIoKX0sY2FsbDpmdW5jdGlvbiBjb3QoKXt2YXIgdD1hcmd1bWVudHNbMF07cmV0dXJuIGFyZ3VtZW50c1swXT10aGlzLHQuYXBwbHkobnVsbCxhcmd1bWVudHMpLHRoaXN9LG5vZGVzOmZ1bmN0aW9uIHVvdCgpe3ZhciB0PW5ldyBBcnJheSh0aGlzLnNpemUoKSksZT0tMTtyZXR1cm4gdGhpcy5lYWNoKChmdW5jdGlvbigpe3RbKytlXT10aGlzfSkpLHR9LG5vZGU6ZnVuY3Rpb24gaG90KCl7Zm9yKHZhciB0PXRoaXMuX2dyb3VwcyxlPTAsbj10Lmxlbmd0aDtlPG47KytlKWZvcih2YXIgaT10W2VdLHI9MCxvPWkubGVuZ3RoO3I8bzsrK3Ipe3ZhciBhPWlbcl07aWYoYSlyZXR1cm4gYX1yZXR1cm4gbnVsbH0sc2l6ZTpmdW5jdGlvbiBkb3QoKXt2YXIgdD0wO3JldHVybiB0aGlzLmVhY2goKGZ1bmN0aW9uKCl7Kyt0fSkpLHR9LGVtcHR5OmZ1bmN0aW9uIHBvdCgpe3JldHVybiF0aGlzLm5vZGUoKX0sZWFjaDpmdW5jdGlvbiBmb3QodCl7Zm9yKHZhciBlPXRoaXMuX2dyb3VwcyxuPTAsaT1lLmxlbmd0aDtuPGk7KytuKWZvcih2YXIgcixvPWVbbl0sYT0wLHM9by5sZW5ndGg7YTxzOysrYSkocj1vW2FdKSYmdC5jYWxsKHIsci5fX2RhdGFfXyxhLG8pO3JldHVybiB0aGlzfSxhdHRyOmZ1bmN0aW9uIG1vdCh0LGUpe3ZhciBuPVlpdCh0KTtpZihhcmd1bWVudHMubGVuZ3RoPDIpe3ZhciBpPXRoaXMubm9kZSgpO3JldHVybiBuLmxvY2FsP2kuZ2V0QXR0cmlidXRlTlMobi5zcGFjZSxuLmxvY2FsKTppLmdldEF0dHJpYnV0ZShuKX1yZXR1cm4gdGhpcy5lYWNoKChudWxsPT1lP24ubG9jYWw/bHJ0OnNydDoiZnVuY3Rpb24iPT10eXBlb2YgZT9uLmxvY2FsP2RydDpocnQ6bi5sb2NhbD91cnQ6Y3J0KShuLGUpKX0sc3R5bGU6ZnVuY3Rpb24gZ290KHQsZSxuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD4xP3RoaXMuZWFjaCgobnVsbD09ZT9mcnQ6ImZ1bmN0aW9uIj09dHlwZW9mIGU/Z3J0Om1ydCkodCxlLG51bGw9PW4/IiI6bikpOl9ydCh0aGlzLm5vZGUoKSx0KX0scHJvcGVydHk6ZnVuY3Rpb24gX290KHQsZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg+MT90aGlzLmVhY2goKG51bGw9PWU/eXJ0OiJmdW5jdGlvbiI9PXR5cGVvZiBlP2JydDp2cnQpKHQsZSkpOnRoaXMubm9kZSgpW3RdfSxjbGFzc2VkOmZ1bmN0aW9uIHlvdCh0LGUpe3ZhciBuPXhydCh0KyIiKTtpZihhcmd1bWVudHMubGVuZ3RoPDIpe2Zvcih2YXIgaT13cnQodGhpcy5ub2RlKCkpLHI9LTEsbz1uLmxlbmd0aDsrK3I8bzspaWYoIWkuY29udGFpbnMobltyXSkpcmV0dXJuITE7cmV0dXJuITB9cmV0dXJuIHRoaXMuZWFjaCgoImZ1bmN0aW9uIj09dHlwZW9mIGU/QXJ0OmU/VHJ0OkNydCkobixlKSl9LHRleHQ6ZnVuY3Rpb24gdm90KHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3RoaXMuZWFjaChudWxsPT10P2tydDooImZ1bmN0aW9uIj09dHlwZW9mIHQ/UHJ0OkxydCkodCkpOnRoaXMubm9kZSgpLnRleHRDb250ZW50fSxodG1sOmZ1bmN0aW9uIGJvdCh0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90aGlzLmVhY2gobnVsbD09dD9OcnQ6KCJmdW5jdGlvbiI9PXR5cGVvZiB0P1JydDpJcnQpKHQpKTp0aGlzLm5vZGUoKS5pbm5lckhUTUx9LHJhaXNlOmZ1bmN0aW9uIHhvdCgpe3JldHVybiB0aGlzLmVhY2goT3J0KX0sbG93ZXI6ZnVuY3Rpb24gd290KCl7cmV0dXJuIHRoaXMuZWFjaCh6cnQpfSxhcHBlbmQ6ZnVuY3Rpb24gU290KHQpe3ZhciBlPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6S2l0KHQpO3JldHVybiB0aGlzLnNlbGVjdCgoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hcHBlbmRDaGlsZChlLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9KSl9LGluc2VydDpmdW5jdGlvbiBNb3QodCxlKXt2YXIgbj0iZnVuY3Rpb24iPT10eXBlb2YgdD90OktpdCh0KSxpPW51bGw9PWU/RHJ0OiJmdW5jdGlvbiI9PXR5cGVvZiBlP2U6Sml0KGUpO3JldHVybiB0aGlzLnNlbGVjdCgoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pbnNlcnRCZWZvcmUobi5hcHBseSh0aGlzLGFyZ3VtZW50cyksaS5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fG51bGwpfSkpfSxyZW1vdmU6ZnVuY3Rpb24gRW90KCl7cmV0dXJuIHRoaXMuZWFjaChCcnQpfSxjbG9uZTpmdW5jdGlvbiBUb3QodCl7cmV0dXJuIHRoaXMuc2VsZWN0KHQ/RnJ0OkhydCl9LGRhdHVtOmZ1bmN0aW9uIENvdCh0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90aGlzLnByb3BlcnR5KCJfX2RhdGFfXyIsdCk6dGhpcy5ub2RlKCkuX19kYXRhX199LG9uOmZ1bmN0aW9uIEFvdCh0LGUsbil7dmFyIGkscixvPUdydCh0KyIiKSxhPW8ubGVuZ3RoO2lmKCEoYXJndW1lbnRzLmxlbmd0aDwyKSl7Zm9yKHM9ZT9xcnQ6V3J0LG51bGw9PW4mJihuPSExKSxpPTA7aTxhOysraSl0aGlzLmVhY2gocyhvW2ldLGUsbikpO3JldHVybiB0aGlzfXZhciBzPXRoaXMubm9kZSgpLl9fb247aWYocylmb3IodmFyIGwsYz0wLHU9cy5sZW5ndGg7Yzx1OysrYylmb3IoaT0wLGw9c1tjXTtpPGE7KytpKWlmKChyPW9baV0pLnR5cGU9PT1sLnR5cGUmJnIubmFtZT09PWwubmFtZSlyZXR1cm4gbC52YWx1ZX0sZGlzcGF0Y2g6ZnVuY3Rpb24ga290KHQsZSl7cmV0dXJuIHRoaXMuZWFjaCgoImZ1bmN0aW9uIj09dHlwZW9mIGU/JHJ0OlhydCkodCxlKSl9fTt2YXIgTG90PXt2YWx1ZTpmdW5jdGlvbigpe319O2Z1bmN0aW9uIFBvdCgpe2Zvcih2YXIgdCxlPTAsbj1hcmd1bWVudHMubGVuZ3RoLGk9e307ZTxuOysrZSl7aWYoISh0PWFyZ3VtZW50c1tlXSsiIil8fHQgaW4gaXx8L1tccy5dLy50ZXN0KHQpKXRocm93IG5ldyBFcnJvcigiaWxsZWdhbCB0eXBlOiAiK3QpO2lbdF09W119cmV0dXJuIG5ldyBOb3QoaSl9ZnVuY3Rpb24gTm90KHQpe3RoaXMuXz10fWZ1bmN0aW9uIElvdCh0LGUpe3JldHVybiB0LnRyaW0oKS5zcGxpdCgvXnxccysvKS5tYXAoKGZ1bmN0aW9uKHQpe3ZhciBuPSIiLGk9dC5pbmRleE9mKCIuIik7aWYoaT49MCYmKG49dC5zbGljZShpKzEpLHQ9dC5zbGljZSgwLGkpKSx0JiYhZS5oYXNPd25Qcm9wZXJ0eSh0KSl0aHJvdyBuZXcgRXJyb3IoInVua25vd24gdHlwZTogIit0KTtyZXR1cm57dHlwZTp0LG5hbWU6bn19KSl9ZnVuY3Rpb24gUm90KHQsZSl7Zm9yKHZhciBuLGk9MCxyPXQubGVuZ3RoO2k8cjsrK2kpaWYoKG49dFtpXSkubmFtZT09PWUpcmV0dXJuIG4udmFsdWV9ZnVuY3Rpb24gT290KHQsZSxuKXtmb3IodmFyIGk9MCxyPXQubGVuZ3RoO2k8cjsrK2kpaWYodFtpXS5uYW1lPT09ZSl7dFtpXT1Mb3QsdD10LnNsaWNlKDAsaSkuY29uY2F0KHQuc2xpY2UoaSsxKSk7YnJlYWt9cmV0dXJuIG51bGwhPW4mJnQucHVzaCh7bmFtZTplLHZhbHVlOm59KSx0fU5vdC5wcm90b3R5cGU9UG90LnByb3RvdHlwZT17Y29uc3RydWN0b3I6Tm90LG9uOmZ1bmN0aW9uKHQsZSl7dmFyIG4saT10aGlzLl8scj1Jb3QodCsiIixpKSxvPS0xLGE9ci5sZW5ndGg7aWYoIShhcmd1bWVudHMubGVuZ3RoPDIpKXtpZihudWxsIT1lJiYiZnVuY3Rpb24iIT10eXBlb2YgZSl0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgY2FsbGJhY2s6ICIrZSk7Zm9yKDsrK288YTspaWYobj0odD1yW29dKS50eXBlKWlbbl09T290KGlbbl0sdC5uYW1lLGUpO2Vsc2UgaWYobnVsbD09ZSlmb3IobiBpbiBpKWlbbl09T290KGlbbl0sdC5uYW1lLG51bGwpO3JldHVybiB0aGlzfWZvcig7KytvPGE7KWlmKChuPSh0PXJbb10pLnR5cGUpJiYobj1Sb3QoaVtuXSx0Lm5hbWUpKSlyZXR1cm4gbn0sY29weTpmdW5jdGlvbigpe3ZhciB0PXt9LGU9dGhpcy5fO2Zvcih2YXIgbiBpbiBlKXRbbl09ZVtuXS5zbGljZSgpO3JldHVybiBuZXcgTm90KHQpfSxjYWxsOmZ1bmN0aW9uKHQsZSl7aWYoKG49YXJndW1lbnRzLmxlbmd0aC0yKT4wKWZvcih2YXIgbixpLHI9bmV3IEFycmF5KG4pLG89MDtvPG47KytvKXJbb109YXJndW1lbnRzW28rMl07aWYoIXRoaXMuXy5oYXNPd25Qcm9wZXJ0eSh0KSl0aHJvdyBuZXcgRXJyb3IoInVua25vd24gdHlwZTogIit0KTtmb3Iobz0wLG49KGk9dGhpcy5fW3RdKS5sZW5ndGg7bzxuOysrbylpW29dLnZhbHVlLmFwcGx5KGUscil9LGFwcGx5OmZ1bmN0aW9uKHQsZSxuKXtpZighdGhpcy5fLmhhc093blByb3BlcnR5KHQpKXRocm93IG5ldyBFcnJvcigidW5rbm93biB0eXBlOiAiK3QpO2Zvcih2YXIgaT10aGlzLl9bdF0scj0wLG89aS5sZW5ndGg7cjxvOysrcilpW3JdLnZhbHVlLmFwcGx5KGUsbil9fTt2YXIgem90LERvdCxCb3Q9MCxIb3Q9MCxGb3Q9MCxWb3Q9MCxVb3Q9MCxqb3Q9MCxHb3Q9Im9iamVjdCI9PXR5cGVvZiBwZXJmb3JtYW5jZSYmcGVyZm9ybWFuY2Uubm93P3BlcmZvcm1hbmNlOkRhdGUsV290PSJvYmplY3QiPT10eXBlb2Ygd2luZG93JiZ3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lP3dpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUuYmluZCh3aW5kb3cpOmZ1bmN0aW9uKHQpe3NldFRpbWVvdXQodCwxNyl9O2Z1bmN0aW9uIHFvdCgpe3JldHVybiBVb3R8fChXb3QoWW90KSxVb3Q9R290Lm5vdygpK2pvdCl9ZnVuY3Rpb24gWW90KCl7VW90PTB9ZnVuY3Rpb24gWG90KCl7dGhpcy5fY2FsbD10aGlzLl90aW1lPXRoaXMuX25leHQ9bnVsbH1mdW5jdGlvbiAkb3QodCxlLG4pe3ZhciBpPW5ldyBYb3Q7cmV0dXJuIGkucmVzdGFydCh0LGUsbiksaX1mdW5jdGlvbiBLb3QoKXtVb3Q9KFZvdD1Hb3Qubm93KCkpK2pvdCxCb3Q9SG90PTA7dHJ5eyEoZnVuY3Rpb24gdCgpe3FvdCgpLCsrQm90O2Zvcih2YXIgdCxlPXpvdDtlOykodD1Vb3QtZS5fdGltZSk+PTAmJmUuX2NhbGwuY2FsbChudWxsLHQpLGU9ZS5fbmV4dDstLUJvdH0pKCl9ZmluYWxseXtCb3Q9MCwoZnVuY3Rpb24gZSgpe3ZhciB0LGUsbj16b3QsaT0xLzA7Zm9yKDtuOyluLl9jYWxsPyhpPm4uX3RpbWUmJihpPW4uX3RpbWUpLHQ9bixuPW4uX25leHQpOihlPW4uX25leHQsbi5fbmV4dD1udWxsLG49dD90Ll9uZXh0PWU6em90PWUpO0RvdD10LEpvdChpKX0pKCksVW90PTB9fWZ1bmN0aW9uIFpvdCgpe3ZhciB0PUdvdC5ub3coKSxlPXQtVm90O2U+MWUzJiYoam90LT1lLFZvdD10KX1mdW5jdGlvbiBKb3QodCl7Qm90fHwoSG90JiYoSG90PWNsZWFyVGltZW91dChIb3QpKSx0LVVvdD4yND8odDwxLzAmJihIb3Q9c2V0VGltZW91dChLb3QsdC1Hb3Qubm93KCktam90KSksRm90JiYoRm90PWNsZWFySW50ZXJ2YWwoRm90KSkpOihGb3R8fChWb3Q9R290Lm5vdygpLEZvdD1zZXRJbnRlcnZhbChab3QsMWUzKSksQm90PTEsV290KEtvdCkpKX1mdW5jdGlvbiBRb3QodCxlLG4pe3ZhciBpPW5ldyBYb3Q7cmV0dXJuIGkucmVzdGFydCgoZnVuY3Rpb24obil7aS5zdG9wKCksdChuK2UpfSksZT1udWxsPT1lPzA6K2UsbiksaX1Yb3QucHJvdG90eXBlPSRvdC5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOlhvdCxyZXN0YXJ0OmZ1bmN0aW9uKHQsZSxuKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCl0aHJvdyBuZXcgVHlwZUVycm9yKCJjYWxsYmFjayBpcyBub3QgYSBmdW5jdGlvbiIpO249KG51bGw9PW4/cW90KCk6K24pKyhudWxsPT1lPzA6K2UpLHRoaXMuX25leHR8fERvdD09PXRoaXN8fChEb3Q/RG90Ll9uZXh0PXRoaXM6em90PXRoaXMsRG90PXRoaXMpLHRoaXMuX2NhbGw9dCx0aGlzLl90aW1lPW4sSm90KCl9LHN0b3A6ZnVuY3Rpb24oKXt0aGlzLl9jYWxsJiYodGhpcy5fY2FsbD1udWxsLHRoaXMuX3RpbWU9MS8wLEpvdCgpKX19O3ZhciB0YXQ9UG90KCJzdGFydCIsImVuZCIsImludGVycnVwdCIpLGVhdD1bXTtmdW5jdGlvbiBuYXQodCxlLG4saSxyLG8pe3ZhciBhPXQuX190cmFuc2l0aW9uO2lmKGEpe2lmKG4gaW4gYSlyZXR1cm59ZWxzZSB0Ll9fdHJhbnNpdGlvbj17fTshKGZ1bmN0aW9uIHModCxlLG4pe3ZhciBpLHI9dC5fX3RyYW5zaXRpb247ZnVuY3Rpb24gbyh0KXtuLnN0YXRlPTEsbi50aW1lci5yZXN0YXJ0KGEsbi5kZWxheSxuLnRpbWUpLG4uZGVsYXk8PXQmJmEodC1uLmRlbGF5KX1mdW5jdGlvbiBhKG8pe3ZhciBjLHUsaCxkO2lmKDEhPT1uLnN0YXRlKXJldHVybiBsKCk7Zm9yKGMgaW4gcilpZigoZD1yW2NdKS5uYW1lPT09bi5uYW1lKXtpZigzPT09ZC5zdGF0ZSlyZXR1cm4gUW90KGEpOzQ9PT1kLnN0YXRlPyhkLnN0YXRlPTYsZC50aW1lci5zdG9wKCksZC5vbi5jYWxsKCJpbnRlcnJ1cHQiLHQsdC5fX2RhdGFfXyxkLmluZGV4LGQuZ3JvdXApLGRlbGV0ZSByW2NdKTorYzxlJiYoZC5zdGF0ZT02LGQudGltZXIuc3RvcCgpLGRlbGV0ZSByW2NdKX1pZihRb3QoKGZ1bmN0aW9uKCl7Mz09PW4uc3RhdGUmJihuLnN0YXRlPTQsbi50aW1lci5yZXN0YXJ0KHMsbi5kZWxheSxuLnRpbWUpLHMobykpfSkpLG4uc3RhdGU9MixuLm9uLmNhbGwoInN0YXJ0Iix0LHQuX19kYXRhX18sbi5pbmRleCxuLmdyb3VwKSwyPT09bi5zdGF0ZSl7Zm9yKG4uc3RhdGU9MyxpPW5ldyBBcnJheShoPW4udHdlZW4ubGVuZ3RoKSxjPTAsdT0tMTtjPGg7KytjKShkPW4udHdlZW5bY10udmFsdWUuY2FsbCh0LHQuX19kYXRhX18sbi5pbmRleCxuLmdyb3VwKSkmJihpWysrdV09ZCk7aS5sZW5ndGg9dSsxfX1mdW5jdGlvbiBzKGUpe2Zvcih2YXIgcj1lPG4uZHVyYXRpb24/bi5lYXNlLmNhbGwobnVsbCxlL24uZHVyYXRpb24pOihuLnRpbWVyLnJlc3RhcnQobCksbi5zdGF0ZT01LDEpLG89LTEsYT1pLmxlbmd0aDsrK288YTspaVtvXS5jYWxsKG51bGwscik7NT09PW4uc3RhdGUmJihuLm9uLmNhbGwoImVuZCIsdCx0Ll9fZGF0YV9fLG4uaW5kZXgsbi5ncm91cCksbCgpKX1mdW5jdGlvbiBsKCl7Zm9yKHZhciBpIGluIG4uc3RhdGU9NixuLnRpbWVyLnN0b3AoKSxkZWxldGUgcltlXSxyKXJldHVybjtkZWxldGUgdC5fX3RyYW5zaXRpb259cltlXT1uLG4udGltZXI9JG90KG8sMCxuLnRpbWUpfSkodCxuLHtuYW1lOmUsaW5kZXg6aSxncm91cDpyLG9uOnRhdCx0d2VlbjplYXQsdGltZTpvLnRpbWUsZGVsYXk6by5kZWxheSxkdXJhdGlvbjpvLmR1cmF0aW9uLGVhc2U6by5lYXNlLHRpbWVyOm51bGwsc3RhdGU6MH0pfWZ1bmN0aW9uIGlhdCh0LGUpe3ZhciBuPW9hdCh0LGUpO2lmKG4uc3RhdGU+MCl0aHJvdyBuZXcgRXJyb3IoInRvbyBsYXRlOyBhbHJlYWR5IHNjaGVkdWxlZCIpO3JldHVybiBufWZ1bmN0aW9uIHJhdCh0LGUpe3ZhciBuPW9hdCh0LGUpO2lmKG4uc3RhdGU+Mil0aHJvdyBuZXcgRXJyb3IoInRvbyBsYXRlOyBhbHJlYWR5IHN0YXJ0ZWQiKTtyZXR1cm4gbn1mdW5jdGlvbiBvYXQodCxlKXt2YXIgbj10Ll9fdHJhbnNpdGlvbjtpZighbnx8IShuPW5bZV0pKXRocm93IG5ldyBFcnJvcigidHJhbnNpdGlvbiBub3QgZm91bmQiKTtyZXR1cm4gbn1mdW5jdGlvbiBhYXQodCxlKXt2YXIgbixpLHIsbz10Ll9fdHJhbnNpdGlvbixhPSEwO2lmKG8pe2ZvcihyIGluIGU9bnVsbD09ZT9udWxsOmUrIiIsbykobj1vW3JdKS5uYW1lPT09ZT8oaT1uLnN0YXRlPjImJm4uc3RhdGU8NSxuLnN0YXRlPTYsbi50aW1lci5zdG9wKCksaSYmbi5vbi5jYWxsKCJpbnRlcnJ1cHQiLHQsdC5fX2RhdGFfXyxuLmluZGV4LG4uZ3JvdXApLGRlbGV0ZSBvW3JdKTphPSExO2EmJmRlbGV0ZSB0Ll9fdHJhbnNpdGlvbn19ZnVuY3Rpb24gc2F0KHQsZSxuKXt0LnByb3RvdHlwZT1lLnByb3RvdHlwZT1uLG4uY29uc3RydWN0b3I9dH1mdW5jdGlvbiBsYXQodCxlKXt2YXIgbj1PYmplY3QuY3JlYXRlKHQucHJvdG90eXBlKTtmb3IodmFyIGkgaW4gZSluW2ldPWVbaV07cmV0dXJuIG59ZnVuY3Rpb24gY2F0KCl7fXZhciB1YXQ9LjcsaGF0PTEvdWF0LGRhdD0iXFxzKihbKy1dP1xcZCspXFxzKiIscGF0PSJcXHMqKFsrLV0/XFxkKlxcLj9cXGQrKD86W2VFXVsrLV0/XFxkKyk/KVxccyoiLGZhdD0iXFxzKihbKy1dP1xcZCpcXC4/XFxkKyg/OltlRV1bKy1dP1xcZCspPyklXFxzKiIsbWF0PS9eIyhbMC05YS1mXXszLDh9KSQvLGdhdD1uZXcgUmVnRXhwKCJecmdiXFwoIitbZGF0LGRhdCxkYXRdKyJcXCkkIiksX2F0PW5ldyBSZWdFeHAoIl5yZ2JcXCgiK1tmYXQsZmF0LGZhdF0rIlxcKSQiKSx5YXQ9bmV3IFJlZ0V4cCgiXnJnYmFcXCgiK1tkYXQsZGF0LGRhdCxwYXRdKyJcXCkkIiksdmF0PW5ldyBSZWdFeHAoIl5yZ2JhXFwoIitbZmF0LGZhdCxmYXQscGF0XSsiXFwpJCIpLGJhdD1uZXcgUmVnRXhwKCJeaHNsXFwoIitbcGF0LGZhdCxmYXRdKyJcXCkkIikseGF0PW5ldyBSZWdFeHAoIl5oc2xhXFwoIitbcGF0LGZhdCxmYXQscGF0XSsiXFwpJCIpLHdhdD17YWxpY2VibHVlOjE1NzkyMzgzLGFudGlxdWV3aGl0ZToxNjQ0NDM3NSxhcXVhOjY1NTM1LGFxdWFtYXJpbmU6ODM4ODU2NCxhenVyZToxNTc5NDE3NSxiZWlnZToxNjExOTI2MCxiaXNxdWU6MTY3NzAyNDQsYmxhY2s6MCxibGFuY2hlZGFsbW9uZDoxNjc3MjA0NSxibHVlOjI1NSxibHVldmlvbGV0OjkwNTUyMDIsYnJvd246MTA4MjQyMzQsYnVybHl3b29kOjE0NTk2MjMxLGNhZGV0Ymx1ZTo2MjY2NTI4LGNoYXJ0cmV1c2U6ODM4ODM1MixjaG9jb2xhdGU6MTM3ODk0NzAsY29yYWw6MTY3NDQyNzIsY29ybmZsb3dlcmJsdWU6NjU5MTk4MSxjb3Juc2lsazoxNjc3NTM4OCxjcmltc29uOjE0NDIzMTAwLGN5YW46NjU1MzUsZGFya2JsdWU6MTM5LGRhcmtjeWFuOjM1NzIzLGRhcmtnb2xkZW5yb2Q6MTIwOTI5MzksZGFya2dyYXk6MTExMTkwMTcsZGFya2dyZWVuOjI1NjAwLGRhcmtncmV5OjExMTE5MDE3LGRhcmtraGFraToxMjQzMzI1OSxkYXJrbWFnZW50YTo5MTA5NjQzLGRhcmtvbGl2ZWdyZWVuOjU1OTc5OTksZGFya29yYW5nZToxNjc0NzUyMCxkYXJrb3JjaGlkOjEwMDQwMDEyLGRhcmtyZWQ6OTEwOTUwNCxkYXJrc2FsbW9uOjE1MzA4NDEwLGRhcmtzZWFncmVlbjo5NDE5OTE5LGRhcmtzbGF0ZWJsdWU6NDczNDM0NyxkYXJrc2xhdGVncmF5OjMxMDA0OTUsZGFya3NsYXRlZ3JleTozMTAwNDk1LGRhcmt0dXJxdW9pc2U6NTI5NDUsZGFya3Zpb2xldDo5Njk5NTM5LGRlZXBwaW5rOjE2NzE2OTQ3LGRlZXBza3libHVlOjQ5MTUxLGRpbWdyYXk6NjkwODI2NSxkaW1ncmV5OjY5MDgyNjUsZG9kZ2VyYmx1ZToyMDAzMTk5LGZpcmVicmljazoxMTY3NDE0NixmbG9yYWx3aGl0ZToxNjc3NTkyMCxmb3Jlc3RncmVlbjoyMjYzODQyLGZ1Y2hzaWE6MTY3MTE5MzUsZ2FpbnNib3JvOjE0NDc0NDYwLGdob3N0d2hpdGU6MTYzMTY2NzEsZ29sZDoxNjc2NjcyMCxnb2xkZW5yb2Q6MTQzMjkxMjAsZ3JheTo4NDIxNTA0LGdyZWVuOjMyNzY4LGdyZWVueWVsbG93OjExNDAzMDU1LGdyZXk6ODQyMTUwNCxob25leWRldzoxNTc5NDE2MCxob3RwaW5rOjE2NzM4NzQwLGluZGlhbnJlZDoxMzQ1ODUyNCxpbmRpZ286NDkxNTMzMCxpdm9yeToxNjc3NzIwMCxraGFraToxNTc4NzY2MCxsYXZlbmRlcjoxNTEzMjQxMCxsYXZlbmRlcmJsdXNoOjE2NzczMzY1LGxhd25ncmVlbjo4MTkwOTc2LGxlbW9uY2hpZmZvbjoxNjc3NTg4NSxsaWdodGJsdWU6MTEzOTMyNTQsbGlnaHRjb3JhbDoxNTc2MTUzNixsaWdodGN5YW46MTQ3NDU1OTksbGlnaHRnb2xkZW5yb2R5ZWxsb3c6MTY0NDgyMTAsbGlnaHRncmF5OjEzODgyMzIzLGxpZ2h0Z3JlZW46OTQ5ODI1NixsaWdodGdyZXk6MTM4ODIzMjMsbGlnaHRwaW5rOjE2NzU4NDY1LGxpZ2h0c2FsbW9uOjE2NzUyNzYyLGxpZ2h0c2VhZ3JlZW46MjE0Mjg5MCxsaWdodHNreWJsdWU6ODkwMDM0NixsaWdodHNsYXRlZ3JheTo3ODMzNzUzLGxpZ2h0c2xhdGVncmV5Ojc4MzM3NTMsbGlnaHRzdGVlbGJsdWU6MTE1ODQ3MzQsbGlnaHR5ZWxsb3c6MTY3NzcxODQsbGltZTo2NTI4MCxsaW1lZ3JlZW46MzMyOTMzMCxsaW5lbjoxNjQ0NTY3MCxtYWdlbnRhOjE2NzExOTM1LG1hcm9vbjo4Mzg4NjA4LG1lZGl1bWFxdWFtYXJpbmU6NjczNzMyMixtZWRpdW1ibHVlOjIwNSxtZWRpdW1vcmNoaWQ6MTIyMTE2NjcsbWVkaXVtcHVycGxlOjk2NjI2ODMsbWVkaXVtc2VhZ3JlZW46Mzk3ODA5NyxtZWRpdW1zbGF0ZWJsdWU6ODA4Nzc5MCxtZWRpdW1zcHJpbmdncmVlbjo2NDE1NCxtZWRpdW10dXJxdW9pc2U6NDc3MjMwMCxtZWRpdW12aW9sZXRyZWQ6MTMwNDcxNzMsbWlkbmlnaHRibHVlOjE2NDQ5MTIsbWludGNyZWFtOjE2MTIxODUwLG1pc3R5cm9zZToxNjc3MDI3Myxtb2NjYXNpbjoxNjc3MDIyOSxuYXZham93aGl0ZToxNjc2ODY4NSxuYXZ5OjEyOCxvbGRsYWNlOjE2NjQzNTU4LG9saXZlOjg0MjEzNzYsb2xpdmVkcmFiOjcwNDg3Mzksb3JhbmdlOjE2NzUzOTIwLG9yYW5nZXJlZDoxNjcyOTM0NCxvcmNoaWQ6MTQzMTU3MzQscGFsZWdvbGRlbnJvZDoxNTY1NzEzMCxwYWxlZ3JlZW46MTAwMjU4ODAscGFsZXR1cnF1b2lzZToxMTUyOTk2NixwYWxldmlvbGV0cmVkOjE0MzgxMjAzLHBhcGF5YXdoaXA6MTY3NzMwNzcscGVhY2hwdWZmOjE2NzY3NjczLHBlcnU6MTM0Njg5OTEscGluazoxNjc2MTAzNSxwbHVtOjE0NTI0NjM3LHBvd2RlcmJsdWU6MTE1OTE5MTAscHVycGxlOjgzODg3MzYscmViZWNjYXB1cnBsZTo2Njk3ODgxLHJlZDoxNjcxMTY4MCxyb3N5YnJvd246MTIzNTc1MTkscm95YWxibHVlOjQyODY5NDUsc2FkZGxlYnJvd246OTEyNzE4NyxzYWxtb246MTY0MTY4ODIsc2FuZHlicm93bjoxNjAzMjg2NCxzZWFncmVlbjozMDUwMzI3LHNlYXNoZWxsOjE2Nzc0NjM4LHNpZW5uYToxMDUwNjc5NyxzaWx2ZXI6MTI2MzIyNTYsc2t5Ymx1ZTo4OTAwMzMxLHNsYXRlYmx1ZTo2OTcwMDYxLHNsYXRlZ3JheTo3MzcyOTQ0LHNsYXRlZ3JleTo3MzcyOTQ0LHNub3c6MTY3NzU5MzAsc3ByaW5nZ3JlZW46NjU0MDcsc3RlZWxibHVlOjQ2MjA5ODAsdGFuOjEzODA4NzgwLHRlYWw6MzI4OTYsdGhpc3RsZToxNDIwNDg4OCx0b21hdG86MTY3MzcwOTUsdHVycXVvaXNlOjQyNTE4NTYsdmlvbGV0OjE1NjMxMDg2LHdoZWF0OjE2MTEzMzMxLHdoaXRlOjE2Nzc3MjE1LHdoaXRlc21va2U6MTYxMTkyODUseWVsbG93OjE2Nzc2OTYwLHllbGxvd2dyZWVuOjEwMTQ1MDc0fTtmdW5jdGlvbiBTYXQoKXtyZXR1cm4gdGhpcy5yZ2IoKS5mb3JtYXRIZXgoKX1mdW5jdGlvbiBNYXQoKXtyZXR1cm4gdGhpcy5yZ2IoKS5mb3JtYXRSZ2IoKX1mdW5jdGlvbiBFYXQodCl7dmFyIGUsbjtyZXR1cm4gdD0odCsiIikudHJpbSgpLnRvTG93ZXJDYXNlKCksKGU9bWF0LmV4ZWModCkpPyhuPWVbMV0ubGVuZ3RoLGU9cGFyc2VJbnQoZVsxXSwxNiksNj09PW4/VGF0KGUpOjM9PT1uP25ldyBMYXQoZT4+OCYxNXxlPj40JjI0MCxlPj40JjE1fDI0MCZlLCgxNSZlKTw8NHwxNSZlLDEpOjg9PT1uP0NhdChlPj4yNCYyNTUsZT4+MTYmMjU1LGU+PjgmMjU1LCgyNTUmZSkvMjU1KTo0PT09bj9DYXQoZT4+MTImMTV8ZT4+OCYyNDAsZT4+OCYxNXxlPj40JjI0MCxlPj40JjE1fDI0MCZlLCgoMTUmZSk8PDR8MTUmZSkvMjU1KTpudWxsKTooZT1nYXQuZXhlYyh0KSk/bmV3IExhdChlWzFdLGVbMl0sZVszXSwxKTooZT1fYXQuZXhlYyh0KSk/bmV3IExhdCgyNTUqZVsxXS8xMDAsMjU1KmVbMl0vMTAwLDI1NSplWzNdLzEwMCwxKTooZT15YXQuZXhlYyh0KSk/Q2F0KGVbMV0sZVsyXSxlWzNdLGVbNF0pOihlPXZhdC5leGVjKHQpKT9DYXQoMjU1KmVbMV0vMTAwLDI1NSplWzJdLzEwMCwyNTUqZVszXS8xMDAsZVs0XSk6KGU9YmF0LmV4ZWModCkpP1JhdChlWzFdLGVbMl0vMTAwLGVbM10vMTAwLDEpOihlPXhhdC5leGVjKHQpKT9SYXQoZVsxXSxlWzJdLzEwMCxlWzNdLzEwMCxlWzRdKTp3YXQuaGFzT3duUHJvcGVydHkodCk/VGF0KHdhdFt0XSk6InRyYW5zcGFyZW50Ij09PXQ/bmV3IExhdChOYU4sTmFOLE5hTiwwKTpudWxsfWZ1bmN0aW9uIFRhdCh0KXtyZXR1cm4gbmV3IExhdCh0Pj4xNiYyNTUsdD4+OCYyNTUsMjU1JnQsMSl9ZnVuY3Rpb24gQ2F0KHQsZSxuLGkpe3JldHVybiBpPD0wJiYodD1lPW49TmFOKSxuZXcgTGF0KHQsZSxuLGkpfWZ1bmN0aW9uIEFhdCh0KXtyZXR1cm4gdCBpbnN0YW5jZW9mIGNhdHx8KHQ9RWF0KHQpKSx0P25ldyBMYXQoKHQ9dC5yZ2IoKSkucix0LmcsdC5iLHQub3BhY2l0eSk6bmV3IExhdH1mdW5jdGlvbiBrYXQodCxlLG4saSl7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP0FhdCh0KTpuZXcgTGF0KHQsZSxuLG51bGw9PWk/MTppKX1mdW5jdGlvbiBMYXQodCxlLG4saSl7dGhpcy5yPSt0LHRoaXMuZz0rZSx0aGlzLmI9K24sdGhpcy5vcGFjaXR5PStpfWZ1bmN0aW9uIFBhdCgpe3JldHVybiIjIitJYXQodGhpcy5yKStJYXQodGhpcy5nKStJYXQodGhpcy5iKX1mdW5jdGlvbiBOYXQoKXt2YXIgdD10aGlzLm9wYWNpdHk7cmV0dXJuKDE9PT0odD1pc05hTih0KT8xOk1hdGgubWF4KDAsTWF0aC5taW4oMSx0KSkpPyJyZ2IoIjoicmdiYSgiKStNYXRoLm1heCgwLE1hdGgubWluKDI1NSxNYXRoLnJvdW5kKHRoaXMucil8fDApKSsiLCAiK01hdGgubWF4KDAsTWF0aC5taW4oMjU1LE1hdGgucm91bmQodGhpcy5nKXx8MCkpKyIsICIrTWF0aC5tYXgoMCxNYXRoLm1pbigyNTUsTWF0aC5yb3VuZCh0aGlzLmIpfHwwKSkrKDE9PT10PyIpIjoiLCAiK3QrIikiKX1mdW5jdGlvbiBJYXQodCl7cmV0dXJuKCh0PU1hdGgubWF4KDAsTWF0aC5taW4oMjU1LE1hdGgucm91bmQodCl8fDApKSk8MTY/IjAiOiIiKSt0LnRvU3RyaW5nKDE2KX1mdW5jdGlvbiBSYXQodCxlLG4saSl7cmV0dXJuIGk8PTA/dD1lPW49TmFOOm48PTB8fG4+PTE/dD1lPU5hTjplPD0wJiYodD1OYU4pLG5ldyB6YXQodCxlLG4saSl9ZnVuY3Rpb24gT2F0KHQpe2lmKHQgaW5zdGFuY2VvZiB6YXQpcmV0dXJuIG5ldyB6YXQodC5oLHQucyx0LmwsdC5vcGFjaXR5KTtpZih0IGluc3RhbmNlb2YgY2F0fHwodD1FYXQodCkpLCF0KXJldHVybiBuZXcgemF0O2lmKHQgaW5zdGFuY2VvZiB6YXQpcmV0dXJuIHQ7dmFyIGU9KHQ9dC5yZ2IoKSkuci8yNTUsbj10LmcvMjU1LGk9dC5iLzI1NSxyPU1hdGgubWluKGUsbixpKSxvPU1hdGgubWF4KGUsbixpKSxhPU5hTixzPW8tcixsPShvK3IpLzI7cmV0dXJuIHM/KGE9ZT09PW8/KG4taSkvcys2KihuPGkpOm49PT1vPyhpLWUpL3MrMjooZS1uKS9zKzQscy89bDwuNT9vK3I6Mi1vLXIsYSo9NjApOnM9bD4wJiZsPDE/MDphLG5ldyB6YXQoYSxzLGwsdC5vcGFjaXR5KX1mdW5jdGlvbiB6YXQodCxlLG4saSl7dGhpcy5oPSt0LHRoaXMucz0rZSx0aGlzLmw9K24sdGhpcy5vcGFjaXR5PStpfWZ1bmN0aW9uIERhdCh0LGUsbil7cmV0dXJuIDI1NSoodDw2MD9lKyhuLWUpKnQvNjA6dDwxODA/bjp0PDI0MD9lKyhuLWUpKigyNDAtdCkvNjA6ZSl9ZnVuY3Rpb24gQmF0KHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0fX1mdW5jdGlvbiBIYXQodCl7cmV0dXJuIDE9PSh0PSt0KT9GYXQ6ZnVuY3Rpb24oZSxuKXtyZXR1cm4gbi1lPyhmdW5jdGlvbiBpKHQsZSxuKXtyZXR1cm4gdD1NYXRoLnBvdyh0LG4pLGU9TWF0aC5wb3coZSxuKS10LG49MS9uLGZ1bmN0aW9uKGkpe3JldHVybiBNYXRoLnBvdyh0K2kqZSxuKX19KShlLG4sdCk6QmF0KGlzTmFOKGUpP246ZSl9fWZ1bmN0aW9uIEZhdCh0LGUpe3ZhciBuPWUtdDtyZXR1cm4gbj8oZnVuY3Rpb24gaSh0LGUpe3JldHVybiBmdW5jdGlvbihuKXtyZXR1cm4gdCtuKmV9fSkodCxuKTpCYXQoaXNOYU4odCk/ZTp0KX1zYXQoY2F0LEVhdCx7Y29weTpmdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LmFzc2lnbihuZXcgdGhpcy5jb25zdHJ1Y3Rvcix0aGlzLHQpfSxkaXNwbGF5YWJsZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnJnYigpLmRpc3BsYXlhYmxlKCl9LGhleDpTYXQsZm9ybWF0SGV4OlNhdCxmb3JtYXRIc2w6ZnVuY3Rpb24gVmF0KCl7cmV0dXJuIE9hdCh0aGlzKS5mb3JtYXRIc2woKX0sZm9ybWF0UmdiOk1hdCx0b1N0cmluZzpNYXR9KSxzYXQoTGF0LGthdCxsYXQoY2F0LHticmlnaHRlcjpmdW5jdGlvbih0KXtyZXR1cm4gdD1udWxsPT10P2hhdDpNYXRoLnBvdyhoYXQsdCksbmV3IExhdCh0aGlzLnIqdCx0aGlzLmcqdCx0aGlzLmIqdCx0aGlzLm9wYWNpdHkpfSxkYXJrZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9bnVsbD09dD91YXQ6TWF0aC5wb3codWF0LHQpLG5ldyBMYXQodGhpcy5yKnQsdGhpcy5nKnQsdGhpcy5iKnQsdGhpcy5vcGFjaXR5KX0scmdiOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LGRpc3BsYXlhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuLS41PD10aGlzLnImJnRoaXMucjwyNTUuNSYmLS41PD10aGlzLmcmJnRoaXMuZzwyNTUuNSYmLS41PD10aGlzLmImJnRoaXMuYjwyNTUuNSYmMDw9dGhpcy5vcGFjaXR5JiZ0aGlzLm9wYWNpdHk8PTF9LGhleDpQYXQsZm9ybWF0SGV4OlBhdCxmb3JtYXRSZ2I6TmF0LHRvU3RyaW5nOk5hdH0pKSxzYXQoemF0LChmdW5jdGlvbiBVYXQodCxlLG4saSl7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP09hdCh0KTpuZXcgemF0KHQsZSxuLG51bGw9PWk/MTppKX0pLGxhdChjYXQse2JyaWdodGVyOmZ1bmN0aW9uKHQpe3JldHVybiB0PW51bGw9PXQ/aGF0Ok1hdGgucG93KGhhdCx0KSxuZXcgemF0KHRoaXMuaCx0aGlzLnMsdGhpcy5sKnQsdGhpcy5vcGFjaXR5KX0sZGFya2VyOmZ1bmN0aW9uKHQpe3JldHVybiB0PW51bGw9PXQ/dWF0Ok1hdGgucG93KHVhdCx0KSxuZXcgemF0KHRoaXMuaCx0aGlzLnMsdGhpcy5sKnQsdGhpcy5vcGFjaXR5KX0scmdiOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5oJTM2MCszNjAqKHRoaXMuaDwwKSxlPWlzTmFOKHQpfHxpc05hTih0aGlzLnMpPzA6dGhpcy5zLG49dGhpcy5sLGk9bisobjwuNT9uOjEtbikqZSxyPTIqbi1pO3JldHVybiBuZXcgTGF0KERhdCh0Pj0yNDA/dC0yNDA6dCsxMjAscixpKSxEYXQodCxyLGkpLERhdCh0PDEyMD90KzI0MDp0LTEyMCxyLGkpLHRoaXMub3BhY2l0eSl9LGRpc3BsYXlhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuKDA8PXRoaXMucyYmdGhpcy5zPD0xfHxpc05hTih0aGlzLnMpKSYmMDw9dGhpcy5sJiZ0aGlzLmw8PTEmJjA8PXRoaXMub3BhY2l0eSYmdGhpcy5vcGFjaXR5PD0xfSxmb3JtYXRIc2w6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLm9wYWNpdHk7cmV0dXJuKDE9PT0odD1pc05hTih0KT8xOk1hdGgubWF4KDAsTWF0aC5taW4oMSx0KSkpPyJoc2woIjoiaHNsYSgiKSsodGhpcy5ofHwwKSsiLCAiKzEwMCoodGhpcy5zfHwwKSsiJSwgIisxMDAqKHRoaXMubHx8MCkrIiUiKygxPT09dD8iKSI6IiwgIit0KyIpIil9fSkpO3ZhciBqYXQ9KGZ1bmN0aW9uIHQoZSl7dmFyIG49SGF0KGUpO2Z1bmN0aW9uIGkodCxlKXt2YXIgaT1uKCh0PWthdCh0KSkuciwoZT1rYXQoZSkpLnIpLHI9bih0LmcsZS5nKSxvPW4odC5iLGUuYiksYT1GYXQodC5vcGFjaXR5LGUub3BhY2l0eSk7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiB0LnI9aShlKSx0Lmc9cihlKSx0LmI9byhlKSx0Lm9wYWNpdHk9YShlKSx0KyIifX1yZXR1cm4gaS5nYW1tYT10LGl9KSgxKTtmdW5jdGlvbiBHYXQodCxlKXtyZXR1cm4gdD0rdCxlPStlLGZ1bmN0aW9uKG4pe3JldHVybiB0KigxLW4pK2Uqbn19dmFyIFdhdD0vWy0rXT8oPzpcZCtcLj9cZCp8XC4/XGQrKSg/OltlRV1bLStdP1xkKyk/L2cscWF0PW5ldyBSZWdFeHAoV2F0LnNvdXJjZSwiZyIpO2Z1bmN0aW9uIFlhdCh0LGUpe3ZhciBuLGkscixvPVdhdC5sYXN0SW5kZXg9cWF0Lmxhc3RJbmRleD0wLGE9LTEscz1bXSxsPVtdO2Zvcih0Kz0iIixlKz0iIjsobj1XYXQuZXhlYyh0KSkmJihpPXFhdC5leGVjKGUpKTspKHI9aS5pbmRleCk+byYmKHI9ZS5zbGljZShvLHIpLHNbYV0/c1thXSs9cjpzWysrYV09ciksKG49blswXSk9PT0oaT1pWzBdKT9zW2FdP3NbYV0rPWk6c1srK2FdPWk6KHNbKythXT1udWxsLGwucHVzaCh7aTphLHg6R2F0KG4saSl9KSksbz1xYXQubGFzdEluZGV4O3JldHVybiBvPGUubGVuZ3RoJiYocj1lLnNsaWNlKG8pLHNbYV0/c1thXSs9cjpzWysrYV09cikscy5sZW5ndGg8Mj9sWzBdPyhmdW5jdGlvbiBjKHQpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gdChlKSsiIn19KShsWzBdLngpOihmdW5jdGlvbiB1KHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0fX0pKGUpOihlPWwubGVuZ3RoLGZ1bmN0aW9uKHQpe2Zvcih2YXIgbixpPTA7aTxlOysraSlzWyhuPWxbaV0pLmldPW4ueCh0KTtyZXR1cm4gcy5qb2luKCIiKX0pfXZhciBYYXQsJGF0LEthdCxaYXQsSmF0PTE4MC9NYXRoLlBJLFFhdD17dHJhbnNsYXRlWDowLHRyYW5zbGF0ZVk6MCxyb3RhdGU6MCxza2V3WDowLHNjYWxlWDoxLHNjYWxlWToxfTtmdW5jdGlvbiB0c3QodCxlLG4saSxyLG8pe3ZhciBhLHMsbDtyZXR1cm4oYT1NYXRoLnNxcnQodCp0K2UqZSkpJiYodC89YSxlLz1hKSwobD10Km4rZSppKSYmKG4tPXQqbCxpLT1lKmwpLChzPU1hdGguc3FydChuKm4raSppKSkmJihuLz1zLGkvPXMsbC89cyksdCppPGUqbiYmKHQ9LXQsZT0tZSxsPS1sLGE9LWEpLHt0cmFuc2xhdGVYOnIsdHJhbnNsYXRlWTpvLHJvdGF0ZTpNYXRoLmF0YW4yKGUsdCkqSmF0LHNrZXdYOk1hdGguYXRhbihsKSpKYXQsc2NhbGVYOmEsc2NhbGVZOnN9fWZ1bmN0aW9uIGVzdCh0LGUsbixpKXtmdW5jdGlvbiByKHQpe3JldHVybiB0Lmxlbmd0aD90LnBvcCgpKyIgIjoiIn1yZXR1cm4gZnVuY3Rpb24obyxhKXt2YXIgcz1bXSxsPVtdO3JldHVybiBvPXQobyksYT10KGEpLChmdW5jdGlvbiBjKHQsaSxyLG8sYSxzKXtpZih0IT09cnx8aSE9PW8pe3ZhciBsPWEucHVzaCgidHJhbnNsYXRlKCIsbnVsbCxlLG51bGwsbik7cy5wdXNoKHtpOmwtNCx4OkdhdCh0LHIpfSx7aTpsLTIseDpHYXQoaSxvKX0pfWVsc2Uocnx8bykmJmEucHVzaCgidHJhbnNsYXRlKCIrcitlK28rbil9KShvLnRyYW5zbGF0ZVgsby50cmFuc2xhdGVZLGEudHJhbnNsYXRlWCxhLnRyYW5zbGF0ZVkscyxsKSwoZnVuY3Rpb24gdSh0LGUsbixvKXt0IT09ZT8odC1lPjE4MD9lKz0zNjA6ZS10PjE4MCYmKHQrPTM2MCksby5wdXNoKHtpOm4ucHVzaChyKG4pKyJyb3RhdGUoIixudWxsLGkpLTIseDpHYXQodCxlKX0pKTplJiZuLnB1c2gocihuKSsicm90YXRlKCIrZStpKX0pKG8ucm90YXRlLGEucm90YXRlLHMsbCksKGZ1bmN0aW9uIGgodCxlLG4sbyl7dCE9PWU/by5wdXNoKHtpOm4ucHVzaChyKG4pKyJza2V3WCgiLG51bGwsaSktMix4OkdhdCh0LGUpfSk6ZSYmbi5wdXNoKHIobikrInNrZXdYKCIrZStpKX0pKG8uc2tld1gsYS5za2V3WCxzLGwpLChmdW5jdGlvbiBkKHQsZSxuLGksbyxhKXtpZih0IT09bnx8ZSE9PWkpe3ZhciBzPW8ucHVzaChyKG8pKyJzY2FsZSgiLG51bGwsIiwiLG51bGwsIikiKTthLnB1c2goe2k6cy00LHg6R2F0KHQsbil9LHtpOnMtMix4OkdhdChlLGkpfSl9ZWxzZSAxPT09biYmMT09PWl8fG8ucHVzaChyKG8pKyJzY2FsZSgiK24rIiwiK2krIikiKX0pKG8uc2NhbGVYLG8uc2NhbGVZLGEuc2NhbGVYLGEuc2NhbGVZLHMsbCksbz1hPW51bGwsZnVuY3Rpb24odCl7Zm9yKHZhciBlLG49LTEsaT1sLmxlbmd0aDsrK248aTspc1soZT1sW25dKS5pXT1lLngodCk7cmV0dXJuIHMuam9pbigiIil9fX12YXIgbnN0PWVzdCgoZnVuY3Rpb24gaXN0KHQpe3JldHVybiJub25lIj09PXQ/UWF0OihYYXR8fChYYXQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiRElWIiksJGF0PWRvY3VtZW50LmRvY3VtZW50RWxlbWVudCxLYXQ9ZG9jdW1lbnQuZGVmYXVsdFZpZXcpLFhhdC5zdHlsZS50cmFuc2Zvcm09dCx0PUthdC5nZXRDb21wdXRlZFN0eWxlKCRhdC5hcHBlbmRDaGlsZChYYXQpLG51bGwpLmdldFByb3BlcnR5VmFsdWUoInRyYW5zZm9ybSIpLCRhdC5yZW1vdmVDaGlsZChYYXQpLHRzdCgrKHQ9dC5zbGljZSg3LC0xKS5zcGxpdCgiLCIpKVswXSwrdFsxXSwrdFsyXSwrdFszXSwrdFs0XSwrdFs1XSkpfSksInB4LCAiLCJweCkiLCJkZWcpIikscnN0PWVzdCgoZnVuY3Rpb24gb3N0KHQpe3JldHVybiBudWxsPT10P1FhdDooWmF0fHwoWmF0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCJnIikpLFphdC5zZXRBdHRyaWJ1dGUoInRyYW5zZm9ybSIsdCksKHQ9WmF0LnRyYW5zZm9ybS5iYXNlVmFsLmNvbnNvbGlkYXRlKCkpP3RzdCgodD10Lm1hdHJpeCkuYSx0LmIsdC5jLHQuZCx0LmUsdC5mKTpRYXQpfSksIiwgIiwiKSIsIikiKTtmdW5jdGlvbiBhc3QodCxlKXt2YXIgbixpO3JldHVybiBmdW5jdGlvbigpe3ZhciByPXJhdCh0aGlzLHQpLG89ci50d2VlbjtpZihvIT09bilmb3IodmFyIGE9MCxzPShpPW49bykubGVuZ3RoO2E8czsrK2EpaWYoaVthXS5uYW1lPT09ZSl7KGk9aS5zbGljZSgpKS5zcGxpY2UoYSwxKTticmVha31yLnR3ZWVuPWl9fWZ1bmN0aW9uIHNzdCh0LGUsbil7dmFyIGkscjtpZigiZnVuY3Rpb24iIT10eXBlb2Ygbil0aHJvdyBuZXcgRXJyb3I7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG89cmF0KHRoaXMsdCksYT1vLnR3ZWVuO2lmKGEhPT1pKXtyPShpPWEpLnNsaWNlKCk7Zm9yKHZhciBzPXtuYW1lOmUsdmFsdWU6bn0sbD0wLGM9ci5sZW5ndGg7bDxjOysrbClpZihyW2xdLm5hbWU9PT1lKXtyW2xdPXM7YnJlYWt9bD09PWMmJnIucHVzaChzKX1vLnR3ZWVuPXJ9fWZ1bmN0aW9uIGxzdCh0LGUsbil7dmFyIGk9dC5faWQ7cmV0dXJuIHQuZWFjaCgoZnVuY3Rpb24oKXt2YXIgdD1yYXQodGhpcyxpKTsodC52YWx1ZXx8KHQudmFsdWU9e30pKVtlXT1uLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0pKSxmdW5jdGlvbih0KXtyZXR1cm4gb2F0KHQsaSkudmFsdWVbZV19fWZ1bmN0aW9uIGNzdCh0LGUpe3ZhciBuO3JldHVybigibnVtYmVyIj09dHlwZW9mIGU/R2F0OmUgaW5zdGFuY2VvZiBFYXQ/amF0OihuPUVhdChlKSk/KGU9bixqYXQpOllhdCkodCxlKX1mdW5jdGlvbiB1c3QodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5yZW1vdmVBdHRyaWJ1dGUodCl9fWZ1bmN0aW9uIGhzdCh0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnJlbW92ZUF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCl9fWZ1bmN0aW9uIGRzdCh0LGUsbil7dmFyIGkscjtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbz10aGlzLmdldEF0dHJpYnV0ZSh0KTtyZXR1cm4gbz09PW4/bnVsbDpvPT09aT9yOnI9ZShpPW8sbil9fWZ1bmN0aW9uIHBzdCh0LGUsbil7dmFyIGkscjtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbz10aGlzLmdldEF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCk7cmV0dXJuIG89PT1uP251bGw6bz09PWk/cjpyPWUoaT1vLG4pfX1mdW5jdGlvbiBmc3QodCxlLG4pe3ZhciBpLHIsbztyZXR1cm4gZnVuY3Rpb24oKXt2YXIgYSxzPW4odGhpcyk7aWYobnVsbCE9cylyZXR1cm4oYT10aGlzLmdldEF0dHJpYnV0ZSh0KSk9PT1zP251bGw6YT09PWkmJnM9PT1yP286bz1lKGk9YSxyPXMpO3RoaXMucmVtb3ZlQXR0cmlidXRlKHQpfX1mdW5jdGlvbiBtc3QodCxlLG4pe3ZhciBpLHIsbztyZXR1cm4gZnVuY3Rpb24oKXt2YXIgYSxzPW4odGhpcyk7aWYobnVsbCE9cylyZXR1cm4oYT10aGlzLmdldEF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCkpPT09cz9udWxsOmE9PT1pJiZzPT09cj9vOm89ZShpPWEscj1zKTt0aGlzLnJlbW92ZUF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCl9fWZ1bmN0aW9uIGdzdCh0LGUpe2Z1bmN0aW9uIG4oKXt2YXIgbj10aGlzLGk9ZS5hcHBseShuLGFyZ3VtZW50cyk7cmV0dXJuIGkmJmZ1bmN0aW9uKGUpe24uc2V0QXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsLGkoZSkpfX1yZXR1cm4gbi5fdmFsdWU9ZSxufWZ1bmN0aW9uIF9zdCh0LGUpe2Z1bmN0aW9uIG4oKXt2YXIgbj10aGlzLGk9ZS5hcHBseShuLGFyZ3VtZW50cyk7cmV0dXJuIGkmJmZ1bmN0aW9uKGUpe24uc2V0QXR0cmlidXRlKHQsaShlKSl9fXJldHVybiBuLl92YWx1ZT1lLG59ZnVuY3Rpb24geXN0KHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7aWF0KHRoaXMsdCkuZGVsYXk9K2UuYXBwbHkodGhpcyxhcmd1bWVudHMpfX1mdW5jdGlvbiB2c3QodCxlKXtyZXR1cm4gZT0rZSxmdW5jdGlvbigpe2lhdCh0aGlzLHQpLmRlbGF5PWV9fWZ1bmN0aW9uIGJzdCh0LGUpe3JldHVybiBmdW5jdGlvbigpe3JhdCh0aGlzLHQpLmR1cmF0aW9uPStlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19ZnVuY3Rpb24geHN0KHQsZSl7cmV0dXJuIGU9K2UsZnVuY3Rpb24oKXtyYXQodGhpcyx0KS5kdXJhdGlvbj1lfX1mdW5jdGlvbiB3c3QodCxlKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgZSl0aHJvdyBuZXcgRXJyb3I7cmV0dXJuIGZ1bmN0aW9uKCl7cmF0KHRoaXMsdCkuZWFzZT1lfX1mdW5jdGlvbiBTc3QodCxlLG4pe3ZhciBpLHIsbz0oZnVuY3Rpb24gYSh0KXtyZXR1cm4odCsiIikudHJpbSgpLnNwbGl0KC9efFxzKy8pLmV2ZXJ5KChmdW5jdGlvbih0KXt2YXIgZT10LmluZGV4T2YoIi4iKTtyZXR1cm4gZT49MCYmKHQ9dC5zbGljZSgwLGUpKSwhdHx8InN0YXJ0Ij09PXR9KSl9KShlKT9pYXQ6cmF0O3JldHVybiBmdW5jdGlvbigpe3ZhciBhPW8odGhpcyx0KSxzPWEub247cyE9PWkmJihyPShpPXMpLmNvcHkoKSkub24oZSxuKSxhLm9uPXJ9fXZhciBNc3Q9SnJ0LnByb3RvdHlwZS5jb25zdHJ1Y3RvcjtmdW5jdGlvbiBFc3QodCxlLG4pe2Z1bmN0aW9uIGkoKXt2YXIgaT10aGlzLHI9ZS5hcHBseShpLGFyZ3VtZW50cyk7cmV0dXJuIHImJmZ1bmN0aW9uKGUpe2kuc3R5bGUuc2V0UHJvcGVydHkodCxyKGUpLG4pfX1yZXR1cm4gaS5fdmFsdWU9ZSxpfXZhciBUc3Q9MDtmdW5jdGlvbiBDc3QodCxlLG4saSl7dGhpcy5fZ3JvdXBzPXQsdGhpcy5fcGFyZW50cz1lLHRoaXMuX25hbWU9bix0aGlzLl9pZD1pfWZ1bmN0aW9uIEFzdCh0KXtyZXR1cm4gSnJ0KCkudHJhbnNpdGlvbih0KX1mdW5jdGlvbiBrc3QoKXtyZXR1cm4rK1RzdH12YXIgTHN0PUpydC5wcm90b3R5cGU7Q3N0LnByb3RvdHlwZT1Bc3QucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpDc3Qsc2VsZWN0OmZ1bmN0aW9uIFBzdCh0KXt2YXIgZT10aGlzLl9uYW1lLG49dGhpcy5faWQ7ImZ1bmN0aW9uIiE9dHlwZW9mIHQmJih0PUppdCh0KSk7Zm9yKHZhciBpPXRoaXMuX2dyb3VwcyxyPWkubGVuZ3RoLG89bmV3IEFycmF5KHIpLGE9MDthPHI7KythKWZvcih2YXIgcyxsLGM9aVthXSx1PWMubGVuZ3RoLGg9b1thXT1uZXcgQXJyYXkodSksZD0wO2Q8dTsrK2QpKHM9Y1tkXSkmJihsPXQuY2FsbChzLHMuX19kYXRhX18sZCxjKSkmJigiX19kYXRhX18iaW4gcyYmKGwuX19kYXRhX189cy5fX2RhdGFfXyksaFtkXT1sLG5hdChoW2RdLGUsbixkLGgsb2F0KHMsbikpKTtyZXR1cm4gbmV3IENzdChvLHRoaXMuX3BhcmVudHMsZSxuKX0sc2VsZWN0QWxsOmZ1bmN0aW9uIE5zdCh0KXt2YXIgZT10aGlzLl9uYW1lLG49dGhpcy5faWQ7ImZ1bmN0aW9uIiE9dHlwZW9mIHQmJih0PXRydCh0KSk7Zm9yKHZhciBpPXRoaXMuX2dyb3VwcyxyPWkubGVuZ3RoLG89W10sYT1bXSxzPTA7czxyOysrcylmb3IodmFyIGwsYz1pW3NdLHU9Yy5sZW5ndGgsaD0wO2g8dTsrK2gpaWYobD1jW2hdKXtmb3IodmFyIGQscD10LmNhbGwobCxsLl9fZGF0YV9fLGgsYyksZj1vYXQobCxuKSxtPTAsZz1wLmxlbmd0aDttPGc7KyttKShkPXBbbV0pJiZuYXQoZCxlLG4sbSxwLGYpO28ucHVzaChwKSxhLnB1c2gobCl9cmV0dXJuIG5ldyBDc3QobyxhLGUsbil9LGZpbHRlcjpmdW5jdGlvbiBJc3QodCl7ImZ1bmN0aW9uIiE9dHlwZW9mIHQmJih0PWVydCh0KSk7Zm9yKHZhciBlPXRoaXMuX2dyb3VwcyxuPWUubGVuZ3RoLGk9bmV3IEFycmF5KG4pLHI9MDtyPG47KytyKWZvcih2YXIgbyxhPWVbcl0scz1hLmxlbmd0aCxsPWlbcl09W10sYz0wO2M8czsrK2MpKG89YVtjXSkmJnQuY2FsbChvLG8uX19kYXRhX18sYyxhKSYmbC5wdXNoKG8pO3JldHVybiBuZXcgQ3N0KGksdGhpcy5fcGFyZW50cyx0aGlzLl9uYW1lLHRoaXMuX2lkKX0sbWVyZ2U6ZnVuY3Rpb24gUnN0KHQpe2lmKHQuX2lkIT09dGhpcy5faWQpdGhyb3cgbmV3IEVycm9yO2Zvcih2YXIgZT10aGlzLl9ncm91cHMsbj10Ll9ncm91cHMsaT1lLmxlbmd0aCxyPU1hdGgubWluKGksbi5sZW5ndGgpLG89bmV3IEFycmF5KGkpLGE9MDthPHI7KythKWZvcih2YXIgcyxsPWVbYV0sYz1uW2FdLHU9bC5sZW5ndGgsaD1vW2FdPW5ldyBBcnJheSh1KSxkPTA7ZDx1OysrZCkocz1sW2RdfHxjW2RdKSYmKGhbZF09cyk7Zm9yKDthPGk7KythKW9bYV09ZVthXTtyZXR1cm4gbmV3IENzdChvLHRoaXMuX3BhcmVudHMsdGhpcy5fbmFtZSx0aGlzLl9pZCl9LHNlbGVjdGlvbjpmdW5jdGlvbiBPc3QoKXtyZXR1cm4gbmV3IE1zdCh0aGlzLl9ncm91cHMsdGhpcy5fcGFyZW50cyl9LHRyYW5zaXRpb246ZnVuY3Rpb24genN0KCl7Zm9yKHZhciB0PXRoaXMuX25hbWUsZT10aGlzLl9pZCxuPWtzdCgpLGk9dGhpcy5fZ3JvdXBzLHI9aS5sZW5ndGgsbz0wO288cjsrK28pZm9yKHZhciBhLHM9aVtvXSxsPXMubGVuZ3RoLGM9MDtjPGw7KytjKWlmKGE9c1tjXSl7dmFyIHU9b2F0KGEsZSk7bmF0KGEsdCxuLGMscyx7dGltZTp1LnRpbWUrdS5kZWxheSt1LmR1cmF0aW9uLGRlbGF5OjAsZHVyYXRpb246dS5kdXJhdGlvbixlYXNlOnUuZWFzZX0pfXJldHVybiBuZXcgQ3N0KGksdGhpcy5fcGFyZW50cyx0LG4pfSxjYWxsOkxzdC5jYWxsLG5vZGVzOkxzdC5ub2Rlcyxub2RlOkxzdC5ub2RlLHNpemU6THN0LnNpemUsZW1wdHk6THN0LmVtcHR5LGVhY2g6THN0LmVhY2gsb246ZnVuY3Rpb24gRHN0KHQsZSl7dmFyIG49dGhpcy5faWQ7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg8Mj9vYXQodGhpcy5ub2RlKCksbikub24ub24odCk6dGhpcy5lYWNoKFNzdChuLHQsZSkpfSxhdHRyOmZ1bmN0aW9uIEJzdCh0LGUpe3ZhciBuPVlpdCh0KSxpPSJ0cmFuc2Zvcm0iPT09bj9yc3Q6Y3N0O3JldHVybiB0aGlzLmF0dHJUd2Vlbih0LCJmdW5jdGlvbiI9PXR5cGVvZiBlPyhuLmxvY2FsP21zdDpmc3QpKG4saSxsc3QodGhpcywiYXR0ci4iK3QsZSkpOm51bGw9PWU/KG4ubG9jYWw/aHN0OnVzdCkobik6KG4ubG9jYWw/cHN0OmRzdCkobixpLGUrIiIpKX0sYXR0clR3ZWVuOmZ1bmN0aW9uIEhzdCh0LGUpe3ZhciBuPSJhdHRyLiIrdDtpZihhcmd1bWVudHMubGVuZ3RoPDIpcmV0dXJuKG49dGhpcy50d2VlbihuKSkmJm4uX3ZhbHVlO2lmKG51bGw9PWUpcmV0dXJuIHRoaXMudHdlZW4obixudWxsKTtpZigiZnVuY3Rpb24iIT10eXBlb2YgZSl0aHJvdyBuZXcgRXJyb3I7dmFyIGk9WWl0KHQpO3JldHVybiB0aGlzLnR3ZWVuKG4sKGkubG9jYWw/Z3N0Ol9zdCkoaSxlKSl9LHN0eWxlOmZ1bmN0aW9uIEZzdCh0LGUsbil7dmFyIGk9InRyYW5zZm9ybSI9PSh0Kz0iIik/bnN0OmNzdDtyZXR1cm4gbnVsbD09ZT90aGlzLnN0eWxlVHdlZW4odCwoZnVuY3Rpb24gbyh0LGUpe3ZhciBuLGkscjtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbz1fcnQodGhpcyx0KSxhPSh0aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KHQpLF9ydCh0aGlzLHQpKTtyZXR1cm4gbz09PWE/bnVsbDpvPT09biYmYT09PWk/cjpyPWUobj1vLGk9YSl9fSkodCxpKSkub24oImVuZC5zdHlsZS4iK3QsKGZ1bmN0aW9uIHIodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5zdHlsZS5yZW1vdmVQcm9wZXJ0eSh0KX19KSh0KSk6dGhpcy5zdHlsZVR3ZWVuKHQsImZ1bmN0aW9uIj09dHlwZW9mIGU/KGZ1bmN0aW9uIGEodCxlLG4pe3ZhciBpLHIsbztyZXR1cm4gZnVuY3Rpb24oKXt2YXIgYT1fcnQodGhpcyx0KSxzPW4odGhpcyk7cmV0dXJuIG51bGw9PXMmJih0aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KHQpLHM9X3J0KHRoaXMsdCkpLGE9PT1zP251bGw6YT09PWkmJnM9PT1yP286bz1lKGk9YSxyPXMpfX0pKHQsaSxsc3QodGhpcywic3R5bGUuIit0LGUpKTooZnVuY3Rpb24gcyh0LGUsbil7dmFyIGkscjtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbz1fcnQodGhpcyx0KTtyZXR1cm4gbz09PW4/bnVsbDpvPT09aT9yOnI9ZShpPW8sbil9fSkodCxpLGUrIiIpLG4pfSxzdHlsZVR3ZWVuOmZ1bmN0aW9uIFZzdCh0LGUsbil7dmFyIGk9InN0eWxlLiIrKHQrPSIiKTtpZihhcmd1bWVudHMubGVuZ3RoPDIpcmV0dXJuKGk9dGhpcy50d2VlbihpKSkmJmkuX3ZhbHVlO2lmKG51bGw9PWUpcmV0dXJuIHRoaXMudHdlZW4oaSxudWxsKTtpZigiZnVuY3Rpb24iIT10eXBlb2YgZSl0aHJvdyBuZXcgRXJyb3I7cmV0dXJuIHRoaXMudHdlZW4oaSxFc3QodCxlLG51bGw9PW4/IiI6bikpfSx0ZXh0OmZ1bmN0aW9uIFVzdCh0KXtyZXR1cm4gdGhpcy50d2VlbigidGV4dCIsImZ1bmN0aW9uIj09dHlwZW9mIHQ/KGZ1bmN0aW9uIGUodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGU9dCh0aGlzKTt0aGlzLnRleHRDb250ZW50PW51bGw9PWU/IiI6ZX19KShsc3QodGhpcywidGV4dCIsdCkpOihmdW5jdGlvbiBuKHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMudGV4dENvbnRlbnQ9dH19KShudWxsPT10PyIiOnQrIiIpKX0scmVtb3ZlOmZ1bmN0aW9uIGpzdCgpe3JldHVybiB0aGlzLm9uKCJlbmQucmVtb3ZlIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgdD10aGlzLnBhcmVudE5vZGU7Zm9yKHZhciBuIGluIHRoaXMuX190cmFuc2l0aW9uKWlmKCtuIT09ZSlyZXR1cm47dCYmdC5yZW1vdmVDaGlsZCh0aGlzKX19KSh0aGlzLl9pZCkpfSx0d2VlbjpmdW5jdGlvbiBHc3QodCxlKXt2YXIgbj10aGlzLl9pZDtpZih0Kz0iIixhcmd1bWVudHMubGVuZ3RoPDIpe2Zvcih2YXIgaSxyPW9hdCh0aGlzLm5vZGUoKSxuKS50d2VlbixvPTAsYT1yLmxlbmd0aDtvPGE7KytvKWlmKChpPXJbb10pLm5hbWU9PT10KXJldHVybiBpLnZhbHVlO3JldHVybiBudWxsfXJldHVybiB0aGlzLmVhY2goKG51bGw9PWU/YXN0OnNzdCkobix0LGUpKX0sZGVsYXk6ZnVuY3Rpb24gV3N0KHQpe3ZhciBlPXRoaXMuX2lkO3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3RoaXMuZWFjaCgoImZ1bmN0aW9uIj09dHlwZW9mIHQ/eXN0OnZzdCkoZSx0KSk6b2F0KHRoaXMubm9kZSgpLGUpLmRlbGF5fSxkdXJhdGlvbjpmdW5jdGlvbiBxc3QodCl7dmFyIGU9dGhpcy5faWQ7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5lYWNoKCgiZnVuY3Rpb24iPT10eXBlb2YgdD9ic3Q6eHN0KShlLHQpKTpvYXQodGhpcy5ub2RlKCksZSkuZHVyYXRpb259LGVhc2U6ZnVuY3Rpb24gWXN0KHQpe3ZhciBlPXRoaXMuX2lkO3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3RoaXMuZWFjaCh3c3QoZSx0KSk6b2F0KHRoaXMubm9kZSgpLGUpLmVhc2V9fTt2YXIgWHN0PXt0aW1lOm51bGwsZGVsYXk6MCxkdXJhdGlvbjoyNTAsZWFzZTpxZn07ZnVuY3Rpb24gJHN0KHQsZSl7Zm9yKHZhciBuOyEobj10Ll9fdHJhbnNpdGlvbil8fCEobj1uW2VdKTspaWYoISh0PXQucGFyZW50Tm9kZSkpcmV0dXJuIFhzdC50aW1lPXFvdCgpLFhzdDtyZXR1cm4gbn1KcnQucHJvdG90eXBlLmludGVycnVwdD1mdW5jdGlvbiBLc3QodCl7cmV0dXJuIHRoaXMuZWFjaCgoZnVuY3Rpb24oKXthYXQodGhpcyx0KX0pKX0sSnJ0LnByb3RvdHlwZS50cmFuc2l0aW9uPWZ1bmN0aW9uIFpzdCh0KXt2YXIgZSxuO3QgaW5zdGFuY2VvZiBDc3Q/KGU9dC5faWQsdD10Ll9uYW1lKTooZT1rc3QoKSwobj1Yc3QpLnRpbWU9cW90KCksdD1udWxsPT10P251bGw6dCsiIik7Zm9yKHZhciBpPXRoaXMuX2dyb3VwcyxyPWkubGVuZ3RoLG89MDtvPHI7KytvKWZvcih2YXIgYSxzPWlbb10sbD1zLmxlbmd0aCxjPTA7YzxsOysrYykoYT1zW2NdKSYmbmF0KGEsdCxlLGMscyxufHwkc3QoYSxlKSk7cmV0dXJuIG5ldyBDc3QoaSx0aGlzLl9wYXJlbnRzLHQsZSl9O3ZhciBKc3Q9W251bGxdO2Z1bmN0aW9uIFFzdCh0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19ZnVuY3Rpb24gdGx0KHQpe3JldHVybiB0WzBdfWZ1bmN0aW9uIGVsdCh0KXtyZXR1cm4gdFsxXX1mdW5jdGlvbiBubHQoKXt0aGlzLl89bnVsbH1mdW5jdGlvbiBpbHQodCl7dC5VPXQuQz10Lkw9dC5SPXQuUD10Lk49bnVsbH1mdW5jdGlvbiBybHQodCxlKXt2YXIgbj1lLGk9ZS5SLHI9bi5VO3I/ci5MPT09bj9yLkw9aTpyLlI9aTp0Ll89aSxpLlU9cixuLlU9aSxuLlI9aS5MLG4uUiYmKG4uUi5VPW4pLGkuTD1ufWZ1bmN0aW9uIG9sdCh0LGUpe3ZhciBuPWUsaT1lLkwscj1uLlU7cj9yLkw9PT1uP3IuTD1pOnIuUj1pOnQuXz1pLGkuVT1yLG4uVT1pLG4uTD1pLlIsbi5MJiYobi5MLlU9biksaS5SPW59ZnVuY3Rpb24gYWx0KHQpe2Zvcig7dC5MOyl0PXQuTDtyZXR1cm4gdH1mdW5jdGlvbiBzbHQodCxlLG4saSl7dmFyIHI9W251bGwsbnVsbF0sbz1QbHQucHVzaChyKS0xO3JldHVybiByLmxlZnQ9dCxyLnJpZ2h0PWUsbiYmY2x0KHIsdCxlLG4pLGkmJmNsdChyLGUsdCxpKSxrbHRbdC5pbmRleF0uaGFsZmVkZ2VzLnB1c2gobyksa2x0W2UuaW5kZXhdLmhhbGZlZGdlcy5wdXNoKG8pLHJ9ZnVuY3Rpb24gbGx0KHQsZSxuKXt2YXIgaT1bZSxuXTtyZXR1cm4gaS5sZWZ0PXQsaX1mdW5jdGlvbiBjbHQodCxlLG4saSl7dFswXXx8dFsxXT90LmxlZnQ9PT1uP3RbMV09aTp0WzBdPWk6KHRbMF09aSx0LmxlZnQ9ZSx0LnJpZ2h0PW4pfWZ1bmN0aW9uIHVsdCh0LGUsbixpLHIpe3ZhciBvLGE9dFswXSxzPXRbMV0sbD1hWzBdLGM9YVsxXSx1PTAsaD0xLGQ9c1swXS1sLHA9c1sxXS1jO2lmKG89ZS1sLGR8fCEobz4wKSl7aWYoby89ZCxkPDApe2lmKG88dSlyZXR1cm47bzxoJiYoaD1vKX1lbHNlIGlmKGQ+MCl7aWYobz5oKXJldHVybjtvPnUmJih1PW8pfWlmKG89aS1sLGR8fCEobzwwKSl7aWYoby89ZCxkPDApe2lmKG8+aClyZXR1cm47bz51JiYodT1vKX1lbHNlIGlmKGQ+MCl7aWYobzx1KXJldHVybjtvPGgmJihoPW8pfWlmKG89bi1jLHB8fCEobz4wKSl7aWYoby89cCxwPDApe2lmKG88dSlyZXR1cm47bzxoJiYoaD1vKX1lbHNlIGlmKHA+MCl7aWYobz5oKXJldHVybjtvPnUmJih1PW8pfWlmKG89ci1jLHB8fCEobzwwKSl7aWYoby89cCxwPDApe2lmKG8+aClyZXR1cm47bz51JiYodT1vKX1lbHNlIGlmKHA+MCl7aWYobzx1KXJldHVybjtvPGgmJihoPW8pfXJldHVybiEodT4wfHxoPDEpfHwodT4wJiYodFswXT1bbCt1KmQsYyt1KnBdKSxoPDEmJih0WzFdPVtsK2gqZCxjK2gqcF0pLCEwKX19fX19ZnVuY3Rpb24gaGx0KHQsZSxuLGkscil7dmFyIG89dFsxXTtpZihvKXJldHVybiEwO3ZhciBhLHMsbD10WzBdLGM9dC5sZWZ0LHU9dC5yaWdodCxoPWNbMF0sZD1jWzFdLHA9dVswXSxmPXVbMV0sbT0oaCtwKS8yO2lmKGY9PT1kKXtpZihtPGV8fG0+PWkpcmV0dXJuO2lmKGg+cCl7aWYobCl7aWYobFsxXT49cilyZXR1cm59ZWxzZSBsPVttLG5dO289W20scl19ZWxzZXtpZihsKXtpZihsWzFdPG4pcmV0dXJufWVsc2UgbD1bbSxyXTtvPVttLG5dfX1lbHNlIGlmKHM9KGQrZikvMi0oYT0oaC1wKS8oZi1kKSkqbSxhPC0xfHxhPjEpaWYoaD5wKXtpZihsKXtpZihsWzFdPj1yKXJldHVybn1lbHNlIGw9WyhuLXMpL2Esbl07bz1bKHItcykvYSxyXX1lbHNle2lmKGwpe2lmKGxbMV08bilyZXR1cm59ZWxzZSBsPVsoci1zKS9hLHJdO289WyhuLXMpL2Esbl19ZWxzZSBpZihkPGYpe2lmKGwpe2lmKGxbMF0+PWkpcmV0dXJufWVsc2UgbD1bZSxhKmUrc107bz1baSxhKmkrc119ZWxzZXtpZihsKXtpZihsWzBdPGUpcmV0dXJufWVsc2UgbD1baSxhKmkrc107bz1bZSxhKmUrc119cmV0dXJuIHRbMF09bCx0WzFdPW8sITB9ZnVuY3Rpb24gZGx0KHQsZSl7dmFyIG49dC5zaXRlLGk9ZS5sZWZ0LHI9ZS5yaWdodDtyZXR1cm4gbj09PXImJihyPWksaT1uKSxyP01hdGguYXRhbjIoclsxXS1pWzFdLHJbMF0taVswXSk6KG49PT1pPyhpPWVbMV0scj1lWzBdKTooaT1lWzBdLHI9ZVsxXSksTWF0aC5hdGFuMihpWzBdLXJbMF0sclsxXS1pWzFdKSl9ZnVuY3Rpb24gcGx0KHQsZSl7cmV0dXJuIGVbKyhlLmxlZnQhPT10LnNpdGUpXX1mdW5jdGlvbiBmbHQodCxlKXtyZXR1cm4gZVsrKGUubGVmdD09PXQuc2l0ZSldfW5sdC5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOm5sdCxpbnNlcnQ6ZnVuY3Rpb24odCxlKXt2YXIgbixpLHI7aWYodCl7aWYoZS5QPXQsZS5OPXQuTix0Lk4mJih0Lk4uUD1lKSx0Lk49ZSx0LlIpe2Zvcih0PXQuUjt0Lkw7KXQ9dC5MO3QuTD1lfWVsc2UgdC5SPWU7bj10fWVsc2UgdGhpcy5fPyh0PWFsdCh0aGlzLl8pLGUuUD1udWxsLGUuTj10LHQuUD10Lkw9ZSxuPXQpOihlLlA9ZS5OPW51bGwsdGhpcy5fPWUsbj1udWxsKTtmb3IoZS5MPWUuUj1udWxsLGUuVT1uLGUuQz0hMCx0PWU7biYmbi5DOyluPT09KGk9bi5VKS5MPyhyPWkuUikmJnIuQz8obi5DPXIuQz0hMSxpLkM9ITAsdD1pKToodD09PW4uUiYmKHJsdCh0aGlzLG4pLG49KHQ9bikuVSksbi5DPSExLGkuQz0hMCxvbHQodGhpcyxpKSk6KHI9aS5MKSYmci5DPyhuLkM9ci5DPSExLGkuQz0hMCx0PWkpOih0PT09bi5MJiYob2x0KHRoaXMsbiksbj0odD1uKS5VKSxuLkM9ITEsaS5DPSEwLHJsdCh0aGlzLGkpKSxuPXQuVTt0aGlzLl8uQz0hMX0scmVtb3ZlOmZ1bmN0aW9uKHQpe3QuTiYmKHQuTi5QPXQuUCksdC5QJiYodC5QLk49dC5OKSx0Lk49dC5QPW51bGw7dmFyIGUsbixpLHI9dC5VLG89dC5MLGE9dC5SO2lmKG49bz9hP2FsdChhKTpvOmEscj9yLkw9PT10P3IuTD1uOnIuUj1uOnRoaXMuXz1uLG8mJmE/KGk9bi5DLG4uQz10LkMsbi5MPW8sby5VPW4sbiE9PWE/KHI9bi5VLG4uVT10LlUsci5MPXQ9bi5SLG4uUj1hLGEuVT1uKToobi5VPXIscj1uLHQ9bi5SKSk6KGk9dC5DLHQ9biksdCYmKHQuVT1yKSwhaSlpZih0JiZ0LkMpdC5DPSExO2Vsc2V7ZG97aWYodD09PXRoaXMuXylicmVhaztpZih0PT09ci5MKXtpZigoZT1yLlIpLkMmJihlLkM9ITEsci5DPSEwLHJsdCh0aGlzLHIpLGU9ci5SKSxlLkwmJmUuTC5DfHxlLlImJmUuUi5DKXtlLlImJmUuUi5DfHwoZS5MLkM9ITEsZS5DPSEwLG9sdCh0aGlzLGUpLGU9ci5SKSxlLkM9ci5DLHIuQz1lLlIuQz0hMSxybHQodGhpcyxyKSx0PXRoaXMuXzticmVha319ZWxzZSBpZigoZT1yLkwpLkMmJihlLkM9ITEsci5DPSEwLG9sdCh0aGlzLHIpLGU9ci5MKSxlLkwmJmUuTC5DfHxlLlImJmUuUi5DKXtlLkwmJmUuTC5DfHwoZS5SLkM9ITEsZS5DPSEwLHJsdCh0aGlzLGUpLGU9ci5MKSxlLkM9ci5DLHIuQz1lLkwuQz0hMSxvbHQodGhpcyxyKSx0PXRoaXMuXzticmVha31lLkM9ITAsdD1yLHI9ci5VfXdoaWxlKCF0LkMpO3QmJih0LkM9ITEpfX19O3ZhciBtbHQsZ2x0PVtdO2Z1bmN0aW9uIF9sdCgpe2lsdCh0aGlzKSx0aGlzLng9dGhpcy55PXRoaXMuYXJjPXRoaXMuc2l0ZT10aGlzLmN5PW51bGx9ZnVuY3Rpb24geWx0KHQpe3ZhciBlPXQuUCxuPXQuTjtpZihlJiZuKXt2YXIgaT1lLnNpdGUscj10LnNpdGUsbz1uLnNpdGU7aWYoaSE9PW8pe3ZhciBhPXJbMF0scz1yWzFdLGw9aVswXS1hLGM9aVsxXS1zLHU9b1swXS1hLGg9b1sxXS1zLGQ9MioobCpoLWMqdSk7aWYoIShkPj0tSWx0KSl7dmFyIHA9bCpsK2MqYyxmPXUqdStoKmgsbT0oaCpwLWMqZikvZCxnPShsKmYtdSpwKS9kLF89Z2x0LnBvcCgpfHxuZXcgX2x0O18uYXJjPXQsXy5zaXRlPXIsXy54PW0rYSxfLnk9KF8uY3k9ZytzKStNYXRoLnNxcnQobSptK2cqZyksdC5jaXJjbGU9Xztmb3IodmFyIHk9bnVsbCx2PUxsdC5fO3Y7KWlmKF8ueTx2Lnl8fF8ueT09PXYueSYmXy54PD12Lngpe2lmKCF2Lkwpe3k9di5QO2JyZWFrfXY9di5MfWVsc2V7aWYoIXYuUil7eT12O2JyZWFrfXY9di5SfUxsdC5pbnNlcnQoeSxfKSx5fHwobWx0PV8pfX19fWZ1bmN0aW9uIHZsdCh0KXt2YXIgZT10LmNpcmNsZTtlJiYoZS5QfHwobWx0PWUuTiksTGx0LnJlbW92ZShlKSxnbHQucHVzaChlKSxpbHQoZSksdC5jaXJjbGU9bnVsbCl9dmFyIGJsdD1bXTtmdW5jdGlvbiB4bHQoKXtpbHQodGhpcyksdGhpcy5lZGdlPXRoaXMuc2l0ZT10aGlzLmNpcmNsZT1udWxsfWZ1bmN0aW9uIHdsdCh0KXt2YXIgZT1ibHQucG9wKCl8fG5ldyB4bHQ7cmV0dXJuIGUuc2l0ZT10LGV9ZnVuY3Rpb24gU2x0KHQpe3ZsdCh0KSxBbHQucmVtb3ZlKHQpLGJsdC5wdXNoKHQpLGlsdCh0KX1mdW5jdGlvbiBNbHQodCl7dmFyIGU9dC5jaXJjbGUsbj1lLngsaT1lLmN5LHI9W24saV0sbz10LlAsYT10Lk4scz1bdF07U2x0KHQpO2Zvcih2YXIgbD1vO2wuY2lyY2xlJiZNYXRoLmFicyhuLWwuY2lyY2xlLngpPE5sdCYmTWF0aC5hYnMoaS1sLmNpcmNsZS5jeSk8Tmx0OylvPWwuUCxzLnVuc2hpZnQobCksU2x0KGwpLGw9bztzLnVuc2hpZnQobCksdmx0KGwpO2Zvcih2YXIgYz1hO2MuY2lyY2xlJiZNYXRoLmFicyhuLWMuY2lyY2xlLngpPE5sdCYmTWF0aC5hYnMoaS1jLmNpcmNsZS5jeSk8Tmx0OylhPWMuTixzLnB1c2goYyksU2x0KGMpLGM9YTtzLnB1c2goYyksdmx0KGMpO3ZhciB1LGg9cy5sZW5ndGg7Zm9yKHU9MTt1PGg7Kyt1KWNsdCgoYz1zW3VdKS5lZGdlLChsPXNbdS0xXSkuc2l0ZSxjLnNpdGUscik7KGM9c1toLTFdKS5lZGdlPXNsdCgobD1zWzBdKS5zaXRlLGMuc2l0ZSxudWxsLHIpLHlsdChsKSx5bHQoYyl9ZnVuY3Rpb24gRWx0KHQpe2Zvcih2YXIgZSxuLGkscixvPXRbMF0sYT10WzFdLHM9QWx0Ll87czspaWYoKGk9VGx0KHMsYSktbyk+Tmx0KXM9cy5MO2Vsc2V7aWYoISgocj1vLUNsdChzLGEpKT5ObHQpKXtpPi1ObHQ/KGU9cy5QLG49cyk6cj4tTmx0PyhlPXMsbj1zLk4pOmU9bj1zO2JyZWFrfWlmKCFzLlIpe2U9czticmVha31zPXMuUn0hKGZ1bmN0aW9uIGwodCl7cmV0dXJuIGtsdFt0LmluZGV4XT17c2l0ZTp0LGhhbGZlZGdlczpbXX19KSh0KTt2YXIgYz13bHQodCk7aWYoQWx0Lmluc2VydChlLGMpLGV8fG4pe2lmKGU9PT1uKXJldHVybiB2bHQoZSksbj13bHQoZS5zaXRlKSxBbHQuaW5zZXJ0KGMsbiksYy5lZGdlPW4uZWRnZT1zbHQoZS5zaXRlLGMuc2l0ZSkseWx0KGUpLHZvaWQgeWx0KG4pO2lmKG4pe3ZsdChlKSx2bHQobik7dmFyIHU9ZS5zaXRlLGg9dVswXSxkPXVbMV0scD10WzBdLWgsZj10WzFdLWQsbT1uLnNpdGUsZz1tWzBdLWgsXz1tWzFdLWQseT0yKihwKl8tZipnKSx2PXAqcCtmKmYsYj1nKmcrXypfLHg9WyhfKnYtZipiKS95K2gsKHAqYi1nKnYpL3krZF07Y2x0KG4uZWRnZSx1LG0seCksYy5lZGdlPXNsdCh1LHQsbnVsbCx4KSxuLmVkZ2U9c2x0KHQsbSxudWxsLHgpLHlsdChlKSx5bHQobil9ZWxzZSBjLmVkZ2U9c2x0KGUuc2l0ZSxjLnNpdGUpfX1mdW5jdGlvbiBUbHQodCxlKXt2YXIgbj10LnNpdGUsaT1uWzBdLHI9blsxXSxvPXItZTtpZighbylyZXR1cm4gaTt2YXIgYT10LlA7aWYoIWEpcmV0dXJuLTEvMDt2YXIgcz0obj1hLnNpdGUpWzBdLGw9blsxXSxjPWwtZTtpZighYylyZXR1cm4gczt2YXIgdT1zLWksaD0xL28tMS9jLGQ9dS9jO3JldHVybiBoPygtZCtNYXRoLnNxcnQoZCpkLTIqaCoodSp1LygtMipjKS1sK2MvMityLW8vMikpKS9oK2k6KGkrcykvMn1mdW5jdGlvbiBDbHQodCxlKXt2YXIgbj10Lk47aWYobilyZXR1cm4gVGx0KG4sZSk7dmFyIGk9dC5zaXRlO3JldHVybiBpWzFdPT09ZT9pWzBdOjEvMH12YXIgQWx0LGtsdCxMbHQsUGx0LE5sdD0xZS02LElsdD0xZS0xMjtmdW5jdGlvbiBSbHQodCxlLG4pe3JldHVybih0WzBdLW5bMF0pKihlWzFdLXRbMV0pLSh0WzBdLWVbMF0pKihuWzFdLXRbMV0pfWZ1bmN0aW9uIE9sdCh0LGUpe3JldHVybiBlWzFdLXRbMV18fGVbMF0tdFswXX1mdW5jdGlvbiB6bHQodCxlKXt2YXIgbixpLHIsbz10LnNvcnQoT2x0KS5wb3AoKTtmb3IoUGx0PVtdLGtsdD1uZXcgQXJyYXkodC5sZW5ndGgpLEFsdD1uZXcgbmx0LExsdD1uZXcgbmx0OzspaWYocj1tbHQsbyYmKCFyfHxvWzFdPHIueXx8b1sxXT09PXIueSYmb1swXTxyLngpKW9bMF09PT1uJiZvWzFdPT09aXx8KEVsdChvKSxuPW9bMF0saT1vWzFdKSxvPXQucG9wKCk7ZWxzZXtpZighcilicmVhaztNbHQoci5hcmMpfWlmKChmdW5jdGlvbiBhKCl7Zm9yKHZhciB0LGUsbixpLHI9MCxvPWtsdC5sZW5ndGg7cjxvOysrcilpZigodD1rbHRbcl0pJiYoaT0oZT10LmhhbGZlZGdlcykubGVuZ3RoKSl7dmFyIGE9bmV3IEFycmF5KGkpLHM9bmV3IEFycmF5KGkpO2ZvcihuPTA7bjxpOysrbilhW25dPW4sc1tuXT1kbHQodCxQbHRbZVtuXV0pO2ZvcihhLnNvcnQoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHNbZV0tc1t0XX0pKSxuPTA7bjxpOysrbilzW25dPWVbYVtuXV07Zm9yKG49MDtuPGk7KytuKWVbbl09c1tuXX19KSgpLGUpe3ZhciBzPStlWzBdWzBdLGw9K2VbMF1bMV0sYz0rZVsxXVswXSx1PStlWzFdWzFdOyEoZnVuY3Rpb24gaCh0LGUsbixpKXtmb3IodmFyIHIsbz1QbHQubGVuZ3RoO28tLTspaGx0KHI9UGx0W29dLHQsZSxuLGkpJiZ1bHQocix0LGUsbixpKSYmKE1hdGguYWJzKHJbMF1bMF0tclsxXVswXSk+Tmx0fHxNYXRoLmFicyhyWzBdWzFdLXJbMV1bMV0pPk5sdCl8fGRlbGV0ZSBQbHRbb119KShzLGwsYyx1KSwoZnVuY3Rpb24gZCh0LGUsbixpKXt2YXIgcixvLGEscyxsLGMsdSxoLGQscCxmLG0sZz1rbHQubGVuZ3RoLF89ITA7Zm9yKHI9MDtyPGc7KytyKWlmKG89a2x0W3JdKXtmb3IoYT1vLnNpdGUscz0obD1vLmhhbGZlZGdlcykubGVuZ3RoO3MtLTspUGx0W2xbc11dfHxsLnNwbGljZShzLDEpO2ZvcihzPTAsYz1sLmxlbmd0aDtzPGM7KWY9KHA9Zmx0KG8sUGx0W2xbc11dKSlbMF0sbT1wWzFdLGg9KHU9cGx0KG8sUGx0W2xbKytzJWNdXSkpWzBdLGQ9dVsxXSwoTWF0aC5hYnMoZi1oKT5ObHR8fE1hdGguYWJzKG0tZCk+Tmx0KSYmKGwuc3BsaWNlKHMsMCxQbHQucHVzaChsbHQoYSxwLE1hdGguYWJzKGYtdCk8Tmx0JiZpLW0+Tmx0P1t0LE1hdGguYWJzKGgtdCk8Tmx0P2Q6aV06TWF0aC5hYnMobS1pKTxObHQmJm4tZj5ObHQ/W01hdGguYWJzKGQtaSk8Tmx0P2g6bixpXTpNYXRoLmFicyhmLW4pPE5sdCYmbS1lPk5sdD9bbixNYXRoLmFicyhoLW4pPE5sdD9kOmVdOk1hdGguYWJzKG0tZSk8Tmx0JiZmLXQ+Tmx0P1tNYXRoLmFicyhkLWUpPE5sdD9oOnQsZV06bnVsbCkpLTEpLCsrYyk7YyYmKF89ITEpfWlmKF8pe3ZhciB5LHYsYix4PTEvMDtmb3Iocj0wLF89bnVsbDtyPGc7KytyKShvPWtsdFtyXSkmJihiPSh5PShhPW8uc2l0ZSlbMF0tdCkqeSsodj1hWzFdLWUpKnYpPHgmJih4PWIsXz1vKTtpZihfKXt2YXIgdz1bdCxlXSxTPVt0LGldLE09W24saV0sRT1bbixlXTtfLmhhbGZlZGdlcy5wdXNoKFBsdC5wdXNoKGxsdChhPV8uc2l0ZSx3LFMpKS0xLFBsdC5wdXNoKGxsdChhLFMsTSkpLTEsUGx0LnB1c2gobGx0KGEsTSxFKSktMSxQbHQucHVzaChsbHQoYSxFLHcpKS0xKX19Zm9yKHI9MDtyPGc7KytyKShvPWtsdFtyXSkmJihvLmhhbGZlZGdlcy5sZW5ndGh8fGRlbGV0ZSBrbHRbcl0pfSkocyxsLGMsdSl9dGhpcy5lZGdlcz1QbHQsdGhpcy5jZWxscz1rbHQsQWx0PUxsdD1QbHQ9a2x0PW51bGx9emx0LnByb3RvdHlwZT17Y29uc3RydWN0b3I6emx0LHBvbHlnb25zOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5lZGdlcztyZXR1cm4gdGhpcy5jZWxscy5tYXAoKGZ1bmN0aW9uKGUpe3ZhciBuPWUuaGFsZmVkZ2VzLm1hcCgoZnVuY3Rpb24obil7cmV0dXJuIHBsdChlLHRbbl0pfSkpO3JldHVybiBuLmRhdGE9ZS5zaXRlLmRhdGEsbn0pKX0sdHJpYW5nbGVzOmZ1bmN0aW9uKCl7dmFyIHQ9W10sZT10aGlzLmVkZ2VzO3JldHVybiB0aGlzLmNlbGxzLmZvckVhY2goKGZ1bmN0aW9uKG4saSl7aWYobz0ocj1uLmhhbGZlZGdlcykubGVuZ3RoKWZvcih2YXIgcixvLGEscz1uLnNpdGUsbD0tMSxjPWVbcltvLTFdXSx1PWMubGVmdD09PXM/Yy5yaWdodDpjLmxlZnQ7KytsPG87KWE9dSx1PShjPWVbcltsXV0pLmxlZnQ9PT1zP2MucmlnaHQ6Yy5sZWZ0LGEmJnUmJmk8YS5pbmRleCYmaTx1LmluZGV4JiZSbHQocyxhLHUpPDAmJnQucHVzaChbcy5kYXRhLGEuZGF0YSx1LmRhdGFdKX0pKSx0fSxsaW5rczpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVkZ2VzLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIHQucmlnaHR9KSkubWFwKChmdW5jdGlvbih0KXtyZXR1cm57c291cmNlOnQubGVmdC5kYXRhLHRhcmdldDp0LnJpZ2h0LmRhdGF9fSkpfSxmaW5kOmZ1bmN0aW9uKHQsZSxuKXtmb3IodmFyIGkscixvPXRoaXMsYT1vLl9mb3VuZHx8MCxzPW8uY2VsbHMubGVuZ3RoOyEocj1vLmNlbGxzW2FdKTspaWYoKythPj1zKXJldHVybiBudWxsO3ZhciBsPXQtci5zaXRlWzBdLGM9ZS1yLnNpdGVbMV0sdT1sKmwrYypjO2Rve3I9by5jZWxsc1tpPWFdLGE9bnVsbCxyLmhhbGZlZGdlcy5mb3JFYWNoKChmdW5jdGlvbihuKXt2YXIgaT1vLmVkZ2VzW25dLHM9aS5sZWZ0O2lmKHMhPT1yLnNpdGUmJnN8fChzPWkucmlnaHQpKXt2YXIgbD10LXNbMF0sYz1lLXNbMV0saD1sKmwrYypjO2g8dSYmKHU9aCxhPXMuaW5kZXgpfX0pKX13aGlsZShudWxsIT09YSk7cmV0dXJuIG8uX2ZvdW5kPWksbnVsbD09bnx8dTw9bipuP3Iuc2l0ZTpudWxsfX07dmFyIERsdD17dmFsdWU6ZnVuY3Rpb24oKXt9fTtmdW5jdGlvbiBCbHQoKXtmb3IodmFyIHQsZT0wLG49YXJndW1lbnRzLmxlbmd0aCxpPXt9O2U8bjsrK2Upe2lmKCEodD1hcmd1bWVudHNbZV0rIiIpfHx0IGluIGl8fC9bXHMuXS8udGVzdCh0KSl0aHJvdyBuZXcgRXJyb3IoImlsbGVnYWwgdHlwZTogIit0KTtpW3RdPVtdfXJldHVybiBuZXcgSGx0KGkpfWZ1bmN0aW9uIEhsdCh0KXt0aGlzLl89dH1mdW5jdGlvbiBGbHQodCxlKXtyZXR1cm4gdC50cmltKCkuc3BsaXQoL158XHMrLykubWFwKChmdW5jdGlvbih0KXt2YXIgbj0iIixpPXQuaW5kZXhPZigiLiIpO2lmKGk+PTAmJihuPXQuc2xpY2UoaSsxKSx0PXQuc2xpY2UoMCxpKSksdCYmIWUuaGFzT3duUHJvcGVydHkodCkpdGhyb3cgbmV3IEVycm9yKCJ1bmtub3duIHR5cGU6ICIrdCk7cmV0dXJue3R5cGU6dCxuYW1lOm59fSkpfWZ1bmN0aW9uIFZsdCh0LGUpe2Zvcih2YXIgbixpPTAscj10Lmxlbmd0aDtpPHI7KytpKWlmKChuPXRbaV0pLm5hbWU9PT1lKXJldHVybiBuLnZhbHVlfWZ1bmN0aW9uIFVsdCh0LGUsbil7Zm9yKHZhciBpPTAscj10Lmxlbmd0aDtpPHI7KytpKWlmKHRbaV0ubmFtZT09PWUpe3RbaV09RGx0LHQ9dC5zbGljZSgwLGkpLmNvbmNhdCh0LnNsaWNlKGkrMSkpO2JyZWFrfXJldHVybiBudWxsIT1uJiZ0LnB1c2goe25hbWU6ZSx2YWx1ZTpufSksdH1IbHQucHJvdG90eXBlPUJsdC5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOkhsdCxvbjpmdW5jdGlvbih0LGUpe3ZhciBuLGk9dGhpcy5fLHI9Rmx0KHQrIiIsaSksbz0tMSxhPXIubGVuZ3RoO2lmKCEoYXJndW1lbnRzLmxlbmd0aDwyKSl7aWYobnVsbCE9ZSYmImZ1bmN0aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIGNhbGxiYWNrOiAiK2UpO2Zvcig7KytvPGE7KWlmKG49KHQ9cltvXSkudHlwZSlpW25dPVVsdChpW25dLHQubmFtZSxlKTtlbHNlIGlmKG51bGw9PWUpZm9yKG4gaW4gaSlpW25dPVVsdChpW25dLHQubmFtZSxudWxsKTtyZXR1cm4gdGhpc31mb3IoOysrbzxhOylpZigobj0odD1yW29dKS50eXBlKSYmKG49Vmx0KGlbbl0sdC5uYW1lKSkpcmV0dXJuIG59LGNvcHk6ZnVuY3Rpb24oKXt2YXIgdD17fSxlPXRoaXMuXztmb3IodmFyIG4gaW4gZSl0W25dPWVbbl0uc2xpY2UoKTtyZXR1cm4gbmV3IEhsdCh0KX0sY2FsbDpmdW5jdGlvbih0LGUpe2lmKChuPWFyZ3VtZW50cy5sZW5ndGgtMik+MClmb3IodmFyIG4saSxyPW5ldyBBcnJheShuKSxvPTA7bzxuOysrbylyW29dPWFyZ3VtZW50c1tvKzJdO2lmKCF0aGlzLl8uaGFzT3duUHJvcGVydHkodCkpdGhyb3cgbmV3IEVycm9yKCJ1bmtub3duIHR5cGU6ICIrdCk7Zm9yKG89MCxuPShpPXRoaXMuX1t0XSkubGVuZ3RoO288bjsrK28paVtvXS52YWx1ZS5hcHBseShlLHIpfSxhcHBseTpmdW5jdGlvbih0LGUsbil7aWYoIXRoaXMuXy5oYXNPd25Qcm9wZXJ0eSh0KSl0aHJvdyBuZXcgRXJyb3IoInVua25vd24gdHlwZTogIit0KTtmb3IodmFyIGk9dGhpcy5fW3RdLHI9MCxvPWkubGVuZ3RoO3I8bzsrK3IpaVtyXS52YWx1ZS5hcHBseShlLG4pfX07dmFyIGpsdD0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIsR2x0PXtzdmc6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIix4aHRtbDpqbHQseGxpbms6Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiLHhtbDoiaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlIix4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC94bWxucy8ifTtmdW5jdGlvbiBXbHQodCl7dmFyIGU9dCs9IiIsbj1lLmluZGV4T2YoIjoiKTtyZXR1cm4gbj49MCYmInhtbG5zIiE9PShlPXQuc2xpY2UoMCxuKSkmJih0PXQuc2xpY2UobisxKSksR2x0Lmhhc093blByb3BlcnR5KGUpP3tzcGFjZTpHbHRbZV0sbG9jYWw6dH06dH1mdW5jdGlvbiBxbHQodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5vd25lckRvY3VtZW50LG49dGhpcy5uYW1lc3BhY2VVUkk7cmV0dXJuIG49PT1qbHQmJmUuZG9jdW1lbnRFbGVtZW50Lm5hbWVzcGFjZVVSST09PWpsdD9lLmNyZWF0ZUVsZW1lbnQodCk6ZS5jcmVhdGVFbGVtZW50TlMobix0KX19ZnVuY3Rpb24gWWx0KHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0aGlzLm93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKHQuc3BhY2UsdC5sb2NhbCl9fWZ1bmN0aW9uIFhsdCh0KXt2YXIgZT1XbHQodCk7cmV0dXJuKGUubG9jYWw/WWx0OnFsdCkoZSl9ZnVuY3Rpb24gJGx0KCl7fWZ1bmN0aW9uIEtsdCh0KXtyZXR1cm4gbnVsbD09dD8kbHQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5xdWVyeVNlbGVjdG9yKHQpfX1mdW5jdGlvbiBabHQoKXtyZXR1cm5bXX1mdW5jdGlvbiBKbHQodCl7cmV0dXJuIG51bGw9PXQ/Wmx0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucXVlcnlTZWxlY3RvckFsbCh0KX19ZnVuY3Rpb24gUWx0KHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0aGlzLm1hdGNoZXModCl9fWZ1bmN0aW9uIHRjdCh0KXtyZXR1cm4gbmV3IEFycmF5KHQubGVuZ3RoKX1mdW5jdGlvbiBlY3QodCxlKXt0aGlzLm93bmVyRG9jdW1lbnQ9dC5vd25lckRvY3VtZW50LHRoaXMubmFtZXNwYWNlVVJJPXQubmFtZXNwYWNlVVJJLHRoaXMuX25leHQ9bnVsbCx0aGlzLl9wYXJlbnQ9dCx0aGlzLl9fZGF0YV9fPWV9ZWN0LnByb3RvdHlwZT17Y29uc3RydWN0b3I6ZWN0LGFwcGVuZENoaWxkOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9wYXJlbnQuaW5zZXJ0QmVmb3JlKHQsdGhpcy5fbmV4dCl9LGluc2VydEJlZm9yZTpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLl9wYXJlbnQuaW5zZXJ0QmVmb3JlKHQsZSl9LHF1ZXJ5U2VsZWN0b3I6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3BhcmVudC5xdWVyeVNlbGVjdG9yKHQpfSxxdWVyeVNlbGVjdG9yQWxsOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9wYXJlbnQucXVlcnlTZWxlY3RvckFsbCh0KX19O2Z1bmN0aW9uIG5jdCh0LGUsbixpLHIsbyl7Zm9yKHZhciBhLHM9MCxsPWUubGVuZ3RoLGM9by5sZW5ndGg7czxjOysrcykoYT1lW3NdKT8oYS5fX2RhdGFfXz1vW3NdLGlbc109YSk6bltzXT1uZXcgZWN0KHQsb1tzXSk7Zm9yKDtzPGw7KytzKShhPWVbc10pJiYocltzXT1hKX1mdW5jdGlvbiBpY3QodCxlLG4saSxyLG8sYSl7dmFyIHMsbCxjLHU9e30saD1lLmxlbmd0aCxkPW8ubGVuZ3RoLHA9bmV3IEFycmF5KGgpO2ZvcihzPTA7czxoOysrcykobD1lW3NdKSYmKHBbc109Yz0iJCIrYS5jYWxsKGwsbC5fX2RhdGFfXyxzLGUpLGMgaW4gdT9yW3NdPWw6dVtjXT1sKTtmb3Iocz0wO3M8ZDsrK3MpKGw9dVtjPSIkIithLmNhbGwodCxvW3NdLHMsbyldKT8oaVtzXT1sLGwuX19kYXRhX189b1tzXSx1W2NdPW51bGwpOm5bc109bmV3IGVjdCh0LG9bc10pO2ZvcihzPTA7czxoOysrcykobD1lW3NdKSYmdVtwW3NdXT09PWwmJihyW3NdPWwpfWZ1bmN0aW9uIHJjdCh0LGUpe3JldHVybiB0PGU/LTE6dD5lPzE6dD49ZT8wOk5hTn1mdW5jdGlvbiBvY3QodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5yZW1vdmVBdHRyaWJ1dGUodCl9fWZ1bmN0aW9uIGFjdCh0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnJlbW92ZUF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCl9fWZ1bmN0aW9uIHNjdCh0LGUpe3JldHVybiBmdW5jdGlvbigpe3RoaXMuc2V0QXR0cmlidXRlKHQsZSl9fWZ1bmN0aW9uIGxjdCh0LGUpe3JldHVybiBmdW5jdGlvbigpe3RoaXMuc2V0QXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsLGUpfX1mdW5jdGlvbiBjY3QodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbj1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtudWxsPT1uP3RoaXMucmVtb3ZlQXR0cmlidXRlKHQpOnRoaXMuc2V0QXR0cmlidXRlKHQsbil9fWZ1bmN0aW9uIHVjdCh0LGUpe3JldHVybiBmdW5jdGlvbigpe3ZhciBuPWUuYXBwbHkodGhpcyxhcmd1bWVudHMpO251bGw9PW4/dGhpcy5yZW1vdmVBdHRyaWJ1dGVOUyh0LnNwYWNlLHQubG9jYWwpOnRoaXMuc2V0QXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsLG4pfX1mdW5jdGlvbiBoY3QodCl7cmV0dXJuIHQub3duZXJEb2N1bWVudCYmdC5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3fHx0LmRvY3VtZW50JiZ0fHx0LmRlZmF1bHRWaWV3fWZ1bmN0aW9uIGRjdCh0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KHQpfX1mdW5jdGlvbiBwY3QodCxlLG4pe3JldHVybiBmdW5jdGlvbigpe3RoaXMuc3R5bGUuc2V0UHJvcGVydHkodCxlLG4pfX1mdW5jdGlvbiBmY3QodCxlLG4pe3JldHVybiBmdW5jdGlvbigpe3ZhciBpPWUuYXBwbHkodGhpcyxhcmd1bWVudHMpO251bGw9PWk/dGhpcy5zdHlsZS5yZW1vdmVQcm9wZXJ0eSh0KTp0aGlzLnN0eWxlLnNldFByb3BlcnR5KHQsaSxuKX19ZnVuY3Rpb24gbWN0KHQsZSl7cmV0dXJuIHQuc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZShlKXx8aGN0KHQpLmdldENvbXB1dGVkU3R5bGUodCxudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKGUpfWZ1bmN0aW9uIGdjdCh0KXtyZXR1cm4gZnVuY3Rpb24oKXtkZWxldGUgdGhpc1t0XX19ZnVuY3Rpb24gX2N0KHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpc1t0XT1lfX1mdW5jdGlvbiB5Y3QodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbj1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtudWxsPT1uP2RlbGV0ZSB0aGlzW3RdOnRoaXNbdF09bn19ZnVuY3Rpb24gdmN0KHQpe3JldHVybiB0LnRyaW0oKS5zcGxpdCgvXnxccysvKX1mdW5jdGlvbiBiY3QodCl7cmV0dXJuIHQuY2xhc3NMaXN0fHxuZXcgeGN0KHQpfWZ1bmN0aW9uIHhjdCh0KXt0aGlzLl9ub2RlPXQsdGhpcy5fbmFtZXM9dmN0KHQuZ2V0QXR0cmlidXRlKCJjbGFzcyIpfHwiIil9ZnVuY3Rpb24gd2N0KHQsZSl7Zm9yKHZhciBuPWJjdCh0KSxpPS0xLHI9ZS5sZW5ndGg7KytpPHI7KW4uYWRkKGVbaV0pfWZ1bmN0aW9uIFNjdCh0LGUpe2Zvcih2YXIgbj1iY3QodCksaT0tMSxyPWUubGVuZ3RoOysraTxyOyluLnJlbW92ZShlW2ldKX1mdW5jdGlvbiBNY3QodCl7cmV0dXJuIGZ1bmN0aW9uKCl7d2N0KHRoaXMsdCl9fWZ1bmN0aW9uIEVjdCh0KXtyZXR1cm4gZnVuY3Rpb24oKXtTY3QodGhpcyx0KX19ZnVuY3Rpb24gVGN0KHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7KGUuYXBwbHkodGhpcyxhcmd1bWVudHMpP3djdDpTY3QpKHRoaXMsdCl9fWZ1bmN0aW9uIENjdCgpe3RoaXMudGV4dENvbnRlbnQ9IiJ9ZnVuY3Rpb24gQWN0KHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMudGV4dENvbnRlbnQ9dH19ZnVuY3Rpb24ga2N0KHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciBlPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpO3RoaXMudGV4dENvbnRlbnQ9bnVsbD09ZT8iIjplfX1mdW5jdGlvbiBMY3QoKXt0aGlzLmlubmVySFRNTD0iIn1mdW5jdGlvbiBQY3QodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5pbm5lckhUTUw9dH19ZnVuY3Rpb24gTmN0KHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciBlPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpO3RoaXMuaW5uZXJIVE1MPW51bGw9PWU/IiI6ZX19ZnVuY3Rpb24gSWN0KCl7dGhpcy5uZXh0U2libGluZyYmdGhpcy5wYXJlbnROb2RlLmFwcGVuZENoaWxkKHRoaXMpfWZ1bmN0aW9uIFJjdCgpe3RoaXMucHJldmlvdXNTaWJsaW5nJiZ0aGlzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHRoaXMsdGhpcy5wYXJlbnROb2RlLmZpcnN0Q2hpbGQpfWZ1bmN0aW9uIE9jdCgpe3JldHVybiBudWxsfWZ1bmN0aW9uIHpjdCgpe3ZhciB0PXRoaXMucGFyZW50Tm9kZTt0JiZ0LnJlbW92ZUNoaWxkKHRoaXMpfWZ1bmN0aW9uIERjdCgpe3ZhciB0PXRoaXMuY2xvbmVOb2RlKCExKSxlPXRoaXMucGFyZW50Tm9kZTtyZXR1cm4gZT9lLmluc2VydEJlZm9yZSh0LHRoaXMubmV4dFNpYmxpbmcpOnR9ZnVuY3Rpb24gQmN0KCl7dmFyIHQ9dGhpcy5jbG9uZU5vZGUoITApLGU9dGhpcy5wYXJlbnROb2RlO3JldHVybiBlP2UuaW5zZXJ0QmVmb3JlKHQsdGhpcy5uZXh0U2libGluZyk6dH14Y3QucHJvdG90eXBlPXthZGQ6ZnVuY3Rpb24odCl7dGhpcy5fbmFtZXMuaW5kZXhPZih0KTwwJiYodGhpcy5fbmFtZXMucHVzaCh0KSx0aGlzLl9ub2RlLnNldEF0dHJpYnV0ZSgiY2xhc3MiLHRoaXMuX25hbWVzLmpvaW4oIiAiKSkpfSxyZW1vdmU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fbmFtZXMuaW5kZXhPZih0KTtlPj0wJiYodGhpcy5fbmFtZXMuc3BsaWNlKGUsMSksdGhpcy5fbm9kZS5zZXRBdHRyaWJ1dGUoImNsYXNzIix0aGlzLl9uYW1lcy5qb2luKCIgIikpKX0sY29udGFpbnM6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX25hbWVzLmluZGV4T2YodCk+PTB9fTt2YXIgSGN0PXt9LEZjdD1udWxsOyJ1bmRlZmluZWQiIT10eXBlb2YgZG9jdW1lbnQmJigib25tb3VzZWVudGVyImluIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudHx8KEhjdD17bW91c2VlbnRlcjoibW91c2VvdmVyIixtb3VzZWxlYXZlOiJtb3VzZW91dCJ9KSk7ZnVuY3Rpb24gVmN0KHQsZSxuKXtyZXR1cm4gdD1VY3QodCxlLG4pLGZ1bmN0aW9uKGUpe3ZhciBuPWUucmVsYXRlZFRhcmdldDtuJiYobj09PXRoaXN8fDgmbi5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbih0aGlzKSl8fHQuY2FsbCh0aGlzLGUpfX1mdW5jdGlvbiBVY3QodCxlLG4pe3JldHVybiBmdW5jdGlvbihpKXt2YXIgcj1GY3Q7RmN0PWk7dHJ5e3QuY2FsbCh0aGlzLHRoaXMuX19kYXRhX18sZSxuKX1maW5hbGx5e0ZjdD1yfX19ZnVuY3Rpb24gamN0KHQpe3JldHVybiB0LnRyaW0oKS5zcGxpdCgvXnxccysvKS5tYXAoKGZ1bmN0aW9uKHQpe3ZhciBlPSIiLG49dC5pbmRleE9mKCIuIik7cmV0dXJuIG4+PTAmJihlPXQuc2xpY2UobisxKSx0PXQuc2xpY2UoMCxuKSkse3R5cGU6dCxuYW1lOmV9fSkpfWZ1bmN0aW9uIEdjdCh0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT10aGlzLl9fb247aWYoZSl7Zm9yKHZhciBuLGk9MCxyPS0xLG89ZS5sZW5ndGg7aTxvOysraSluPWVbaV0sdC50eXBlJiZuLnR5cGUhPT10LnR5cGV8fG4ubmFtZSE9PXQubmFtZT9lWysrcl09bjp0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIobi50eXBlLG4ubGlzdGVuZXIsbi5jYXB0dXJlKTsrK3I/ZS5sZW5ndGg9cjpkZWxldGUgdGhpcy5fX29ufX19ZnVuY3Rpb24gV2N0KHQsZSxuKXt2YXIgaT1IY3QuaGFzT3duUHJvcGVydHkodC50eXBlKT9WY3Q6VWN0O3JldHVybiBmdW5jdGlvbihyLG8sYSl7dmFyIHMsbD10aGlzLl9fb24sYz1pKGUsbyxhKTtpZihsKWZvcih2YXIgdT0wLGg9bC5sZW5ndGg7dTxoOysrdSlpZigocz1sW3VdKS50eXBlPT09dC50eXBlJiZzLm5hbWU9PT10Lm5hbWUpcmV0dXJuIHRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcihzLnR5cGUscy5saXN0ZW5lcixzLmNhcHR1cmUpLHRoaXMuYWRkRXZlbnRMaXN0ZW5lcihzLnR5cGUscy5saXN0ZW5lcj1jLHMuY2FwdHVyZT1uKSx2b2lkKHMudmFsdWU9ZSk7dGhpcy5hZGRFdmVudExpc3RlbmVyKHQudHlwZSxjLG4pLHM9e3R5cGU6dC50eXBlLG5hbWU6dC5uYW1lLHZhbHVlOmUsbGlzdGVuZXI6YyxjYXB0dXJlOm59LGw/bC5wdXNoKHMpOnRoaXMuX19vbj1bc119fWZ1bmN0aW9uIHFjdCh0LGUsbil7dmFyIGk9aGN0KHQpLHI9aS5DdXN0b21FdmVudDsiZnVuY3Rpb24iPT10eXBlb2Ygcj9yPW5ldyByKGUsbik6KHI9aS5kb2N1bWVudC5jcmVhdGVFdmVudCgiRXZlbnQiKSxuPyhyLmluaXRFdmVudChlLG4uYnViYmxlcyxuLmNhbmNlbGFibGUpLHIuZGV0YWlsPW4uZGV0YWlsKTpyLmluaXRFdmVudChlLCExLCExKSksdC5kaXNwYXRjaEV2ZW50KHIpfWZ1bmN0aW9uIFljdCh0LGUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBxY3QodGhpcyx0LGUpfX1mdW5jdGlvbiBYY3QodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gcWN0KHRoaXMsdCxlLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9fXZhciAkY3Q9W251bGxdO2Z1bmN0aW9uIEtjdCh0LGUpe3RoaXMuX2dyb3Vwcz10LHRoaXMuX3BhcmVudHM9ZX1mdW5jdGlvbiBaY3QoKXtyZXR1cm4gbmV3IEtjdChbW2RvY3VtZW50LmRvY3VtZW50RWxlbWVudF1dLCRjdCl9ZnVuY3Rpb24gSmN0KHQpe3JldHVybiJzdHJpbmciPT10eXBlb2YgdD9uZXcgS2N0KFtbZG9jdW1lbnQucXVlcnlTZWxlY3Rvcih0KV1dLFtkb2N1bWVudC5kb2N1bWVudEVsZW1lbnRdKTpuZXcgS2N0KFtbdF1dLCRjdCl9ZnVuY3Rpb24gUWN0KCl7Zm9yKHZhciB0LGU9RmN0O3Q9ZS5zb3VyY2VFdmVudDspZT10O3JldHVybiBlfWZ1bmN0aW9uIHR1dCh0LGUpe3ZhciBuPXQub3duZXJTVkdFbGVtZW50fHx0O2lmKG4uY3JlYXRlU1ZHUG9pbnQpe3ZhciBpPW4uY3JlYXRlU1ZHUG9pbnQoKTtyZXR1cm4gaS54PWUuY2xpZW50WCxpLnk9ZS5jbGllbnRZLFsoaT1pLm1hdHJpeFRyYW5zZm9ybSh0LmdldFNjcmVlbkNUTSgpLmludmVyc2UoKSkpLngsaS55XX12YXIgcj10LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3JldHVybltlLmNsaWVudFgtci5sZWZ0LXQuY2xpZW50TGVmdCxlLmNsaWVudFktci50b3AtdC5jbGllbnRUb3BdfWZ1bmN0aW9uIGV1dCh0KXt2YXIgZT1RY3QoKTtyZXR1cm4gZS5jaGFuZ2VkVG91Y2hlcyYmKGU9ZS5jaGFuZ2VkVG91Y2hlc1swXSksdHV0KHQsZSl9ZnVuY3Rpb24gbnV0KHQsZSxuKXthcmd1bWVudHMubGVuZ3RoPDMmJihuPWUsZT1RY3QoKS5jaGFuZ2VkVG91Y2hlcyk7Zm9yKHZhciBpLHI9MCxvPWU/ZS5sZW5ndGg6MDtyPG87KytyKWlmKChpPWVbcl0pLmlkZW50aWZpZXI9PT1uKXJldHVybiB0dXQodCxpKTtyZXR1cm4gbnVsbH1mdW5jdGlvbiBpdXQoKXtGY3QucHJldmVudERlZmF1bHQoKSxGY3Quc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCl9ZnVuY3Rpb24gcnV0KHQpe3ZhciBlPXQuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LG49SmN0KHQpLm9uKCJkcmFnc3RhcnQuZHJhZyIsaXV0LCEwKTsib25zZWxlY3RzdGFydCJpbiBlP24ub24oInNlbGVjdHN0YXJ0LmRyYWciLGl1dCwhMCk6KGUuX19ub3NlbGVjdD1lLnN0eWxlLk1velVzZXJTZWxlY3QsZS5zdHlsZS5Nb3pVc2VyU2VsZWN0PSJub25lIil9ZnVuY3Rpb24gb3V0KHQsZSl7dmFyIG49dC5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsaT1KY3QodCkub24oImRyYWdzdGFydC5kcmFnIixudWxsKTtlJiYoaS5vbigiY2xpY2suZHJhZyIsaXV0LCEwKSxzZXRUaW1lb3V0KChmdW5jdGlvbigpe2kub24oImNsaWNrLmRyYWciLG51bGwpfSksMCkpLCJvbnNlbGVjdHN0YXJ0ImluIG4/aS5vbigic2VsZWN0c3RhcnQuZHJhZyIsbnVsbCk6KG4uc3R5bGUuTW96VXNlclNlbGVjdD1uLl9fbm9zZWxlY3QsZGVsZXRlIG4uX19ub3NlbGVjdCl9ZnVuY3Rpb24gYXV0KHQsZSxuKXt0LnByb3RvdHlwZT1lLnByb3RvdHlwZT1uLG4uY29uc3RydWN0b3I9dH1mdW5jdGlvbiBzdXQodCxlKXt2YXIgbj1PYmplY3QuY3JlYXRlKHQucHJvdG90eXBlKTtmb3IodmFyIGkgaW4gZSluW2ldPWVbaV07cmV0dXJuIG59ZnVuY3Rpb24gbHV0KCl7fUtjdC5wcm90b3R5cGU9WmN0LnByb3RvdHlwZT17Y29uc3RydWN0b3I6S2N0LHNlbGVjdDpmdW5jdGlvbiBjdXQodCl7ImZ1bmN0aW9uIiE9dHlwZW9mIHQmJih0PUtsdCh0KSk7Zm9yKHZhciBlPXRoaXMuX2dyb3VwcyxuPWUubGVuZ3RoLGk9bmV3IEFycmF5KG4pLHI9MDtyPG47KytyKWZvcih2YXIgbyxhLHM9ZVtyXSxsPXMubGVuZ3RoLGM9aVtyXT1uZXcgQXJyYXkobCksdT0wO3U8bDsrK3UpKG89c1t1XSkmJihhPXQuY2FsbChvLG8uX19kYXRhX18sdSxzKSkmJigiX19kYXRhX18iaW4gbyYmKGEuX19kYXRhX189by5fX2RhdGFfXyksY1t1XT1hKTtyZXR1cm4gbmV3IEtjdChpLHRoaXMuX3BhcmVudHMpfSxzZWxlY3RBbGw6ZnVuY3Rpb24gdXV0KHQpeyJmdW5jdGlvbiIhPXR5cGVvZiB0JiYodD1KbHQodCkpO2Zvcih2YXIgZT10aGlzLl9ncm91cHMsbj1lLmxlbmd0aCxpPVtdLHI9W10sbz0wO288bjsrK28pZm9yKHZhciBhLHM9ZVtvXSxsPXMubGVuZ3RoLGM9MDtjPGw7KytjKShhPXNbY10pJiYoaS5wdXNoKHQuY2FsbChhLGEuX19kYXRhX18sYyxzKSksci5wdXNoKGEpKTtyZXR1cm4gbmV3IEtjdChpLHIpfSxmaWx0ZXI6ZnVuY3Rpb24gaHV0KHQpeyJmdW5jdGlvbiIhPXR5cGVvZiB0JiYodD1RbHQodCkpO2Zvcih2YXIgZT10aGlzLl9ncm91cHMsbj1lLmxlbmd0aCxpPW5ldyBBcnJheShuKSxyPTA7cjxuOysrcilmb3IodmFyIG8sYT1lW3JdLHM9YS5sZW5ndGgsbD1pW3JdPVtdLGM9MDtjPHM7KytjKShvPWFbY10pJiZ0LmNhbGwobyxvLl9fZGF0YV9fLGMsYSkmJmwucHVzaChvKTtyZXR1cm4gbmV3IEtjdChpLHRoaXMuX3BhcmVudHMpfSxkYXRhOmZ1bmN0aW9uIGR1dCh0LGUpe2lmKCF0KXJldHVybiBmPW5ldyBBcnJheSh0aGlzLnNpemUoKSksdT0tMSx0aGlzLmVhY2goKGZ1bmN0aW9uKHQpe2ZbKyt1XT10fSkpLGY7dmFyIG49ZT9pY3Q6bmN0LGk9dGhpcy5fcGFyZW50cyxyPXRoaXMuX2dyb3VwczsiZnVuY3Rpb24iIT10eXBlb2YgdCYmKHQ9KGZ1bmN0aW9uIG8odCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHR9fSkodCkpO2Zvcih2YXIgYT1yLmxlbmd0aCxzPW5ldyBBcnJheShhKSxsPW5ldyBBcnJheShhKSxjPW5ldyBBcnJheShhKSx1PTA7dTxhOysrdSl7dmFyIGg9aVt1XSxkPXJbdV0scD1kLmxlbmd0aCxmPXQuY2FsbChoLGgmJmguX19kYXRhX18sdSxpKSxtPWYubGVuZ3RoLGc9bFt1XT1uZXcgQXJyYXkobSksXz1zW3VdPW5ldyBBcnJheShtKTtuKGgsZCxnLF8sY1t1XT1uZXcgQXJyYXkocCksZixlKTtmb3IodmFyIHksdixiPTAseD0wO2I8bTsrK2IpaWYoeT1nW2JdKXtmb3IoYj49eCYmKHg9YisxKTshKHY9X1t4XSkmJisreDxtOyk7eS5fbmV4dD12fHxudWxsfX1yZXR1cm4ocz1uZXcgS2N0KHMsaSkpLl9lbnRlcj1sLHMuX2V4aXQ9YyxzfSxlbnRlcjpmdW5jdGlvbiBwdXQoKXtyZXR1cm4gbmV3IEtjdCh0aGlzLl9lbnRlcnx8dGhpcy5fZ3JvdXBzLm1hcCh0Y3QpLHRoaXMuX3BhcmVudHMpfSxleGl0OmZ1bmN0aW9uIGZ1dCgpe3JldHVybiBuZXcgS2N0KHRoaXMuX2V4aXR8fHRoaXMuX2dyb3Vwcy5tYXAodGN0KSx0aGlzLl9wYXJlbnRzKX0sam9pbjpmdW5jdGlvbiBtdXQodCxlLG4pe3ZhciBpPXRoaXMuZW50ZXIoKSxyPXRoaXMsbz10aGlzLmV4aXQoKTtyZXR1cm4gaT0iZnVuY3Rpb24iPT10eXBlb2YgdD90KGkpOmkuYXBwZW5kKHQrIiIpLG51bGwhPWUmJihyPWUocikpLG51bGw9PW4/by5yZW1vdmUoKTpuKG8pLGkmJnI/aS5tZXJnZShyKS5vcmRlcigpOnJ9LG1lcmdlOmZ1bmN0aW9uIGd1dCh0KXtmb3IodmFyIGU9dGhpcy5fZ3JvdXBzLG49dC5fZ3JvdXBzLGk9ZS5sZW5ndGgscj1NYXRoLm1pbihpLG4ubGVuZ3RoKSxvPW5ldyBBcnJheShpKSxhPTA7YTxyOysrYSlmb3IodmFyIHMsbD1lW2FdLGM9blthXSx1PWwubGVuZ3RoLGg9b1thXT1uZXcgQXJyYXkodSksZD0wO2Q8dTsrK2QpKHM9bFtkXXx8Y1tkXSkmJihoW2RdPXMpO2Zvcig7YTxpOysrYSlvW2FdPWVbYV07cmV0dXJuIG5ldyBLY3Qobyx0aGlzLl9wYXJlbnRzKX0sb3JkZXI6ZnVuY3Rpb24gX3V0KCl7Zm9yKHZhciB0PXRoaXMuX2dyb3VwcyxlPS0xLG49dC5sZW5ndGg7KytlPG47KWZvcih2YXIgaSxyPXRbZV0sbz1yLmxlbmd0aC0xLGE9cltvXTstLW8+PTA7KShpPXJbb10pJiYoYSYmNF5pLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGEpJiZhLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGksYSksYT1pKTtyZXR1cm4gdGhpc30sc29ydDpmdW5jdGlvbiB5dXQodCl7ZnVuY3Rpb24gZShlLG4pe3JldHVybiBlJiZuP3QoZS5fX2RhdGFfXyxuLl9fZGF0YV9fKTohZS0hbn10fHwodD1yY3QpO2Zvcih2YXIgbj10aGlzLl9ncm91cHMsaT1uLmxlbmd0aCxyPW5ldyBBcnJheShpKSxvPTA7bzxpOysrbyl7Zm9yKHZhciBhLHM9bltvXSxsPXMubGVuZ3RoLGM9cltvXT1uZXcgQXJyYXkobCksdT0wO3U8bDsrK3UpKGE9c1t1XSkmJihjW3VdPWEpO2Muc29ydChlKX1yZXR1cm4gbmV3IEtjdChyLHRoaXMuX3BhcmVudHMpLm9yZGVyKCl9LGNhbGw6ZnVuY3Rpb24gdnV0KCl7dmFyIHQ9YXJndW1lbnRzWzBdO3JldHVybiBhcmd1bWVudHNbMF09dGhpcyx0LmFwcGx5KG51bGwsYXJndW1lbnRzKSx0aGlzfSxub2RlczpmdW5jdGlvbiBidXQoKXt2YXIgdD1uZXcgQXJyYXkodGhpcy5zaXplKCkpLGU9LTE7cmV0dXJuIHRoaXMuZWFjaCgoZnVuY3Rpb24oKXt0WysrZV09dGhpc30pKSx0fSxub2RlOmZ1bmN0aW9uIHh1dCgpe2Zvcih2YXIgdD10aGlzLl9ncm91cHMsZT0wLG49dC5sZW5ndGg7ZTxuOysrZSlmb3IodmFyIGk9dFtlXSxyPTAsbz1pLmxlbmd0aDtyPG87KytyKXt2YXIgYT1pW3JdO2lmKGEpcmV0dXJuIGF9cmV0dXJuIG51bGx9LHNpemU6ZnVuY3Rpb24gd3V0KCl7dmFyIHQ9MDtyZXR1cm4gdGhpcy5lYWNoKChmdW5jdGlvbigpeysrdH0pKSx0fSxlbXB0eTpmdW5jdGlvbiBTdXQoKXtyZXR1cm4hdGhpcy5ub2RlKCl9LGVhY2g6ZnVuY3Rpb24gTXV0KHQpe2Zvcih2YXIgZT10aGlzLl9ncm91cHMsbj0wLGk9ZS5sZW5ndGg7bjxpOysrbilmb3IodmFyIHIsbz1lW25dLGE9MCxzPW8ubGVuZ3RoO2E8czsrK2EpKHI9b1thXSkmJnQuY2FsbChyLHIuX19kYXRhX18sYSxvKTtyZXR1cm4gdGhpc30sYXR0cjpmdW5jdGlvbiBFdXQodCxlKXt2YXIgbj1XbHQodCk7aWYoYXJndW1lbnRzLmxlbmd0aDwyKXt2YXIgaT10aGlzLm5vZGUoKTtyZXR1cm4gbi5sb2NhbD9pLmdldEF0dHJpYnV0ZU5TKG4uc3BhY2Usbi5sb2NhbCk6aS5nZXRBdHRyaWJ1dGUobil9cmV0dXJuIHRoaXMuZWFjaCgobnVsbD09ZT9uLmxvY2FsP2FjdDpvY3Q6ImZ1bmN0aW9uIj09dHlwZW9mIGU/bi5sb2NhbD91Y3Q6Y2N0Om4ubG9jYWw/bGN0OnNjdCkobixlKSl9LHN0eWxlOmZ1bmN0aW9uIFR1dCh0LGUsbil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg+MT90aGlzLmVhY2goKG51bGw9PWU/ZGN0OiJmdW5jdGlvbiI9PXR5cGVvZiBlP2ZjdDpwY3QpKHQsZSxudWxsPT1uPyIiOm4pKTptY3QodGhpcy5ub2RlKCksdCl9LHByb3BlcnR5OmZ1bmN0aW9uIEN1dCh0LGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPjE/dGhpcy5lYWNoKChudWxsPT1lP2djdDoiZnVuY3Rpb24iPT10eXBlb2YgZT95Y3Q6X2N0KSh0LGUpKTp0aGlzLm5vZGUoKVt0XX0sY2xhc3NlZDpmdW5jdGlvbiBBdXQodCxlKXt2YXIgbj12Y3QodCsiIik7aWYoYXJndW1lbnRzLmxlbmd0aDwyKXtmb3IodmFyIGk9YmN0KHRoaXMubm9kZSgpKSxyPS0xLG89bi5sZW5ndGg7KytyPG87KWlmKCFpLmNvbnRhaW5zKG5bcl0pKXJldHVybiExO3JldHVybiEwfXJldHVybiB0aGlzLmVhY2goKCJmdW5jdGlvbiI9PXR5cGVvZiBlP1RjdDplP01jdDpFY3QpKG4sZSkpfSx0ZXh0OmZ1bmN0aW9uIGt1dCh0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90aGlzLmVhY2gobnVsbD09dD9DY3Q6KCJmdW5jdGlvbiI9PXR5cGVvZiB0P2tjdDpBY3QpKHQpKTp0aGlzLm5vZGUoKS50ZXh0Q29udGVudH0saHRtbDpmdW5jdGlvbiBMdXQodCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5lYWNoKG51bGw9PXQ/TGN0OigiZnVuY3Rpb24iPT10eXBlb2YgdD9OY3Q6UGN0KSh0KSk6dGhpcy5ub2RlKCkuaW5uZXJIVE1MfSxyYWlzZTpmdW5jdGlvbiBQdXQoKXtyZXR1cm4gdGhpcy5lYWNoKEljdCl9LGxvd2VyOmZ1bmN0aW9uIE51dCgpe3JldHVybiB0aGlzLmVhY2goUmN0KX0sYXBwZW5kOmZ1bmN0aW9uIEl1dCh0KXt2YXIgZT0iZnVuY3Rpb24iPT10eXBlb2YgdD90OlhsdCh0KTtyZXR1cm4gdGhpcy5zZWxlY3QoKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYXBwZW5kQ2hpbGQoZS5hcHBseSh0aGlzLGFyZ3VtZW50cykpfSkpfSxpbnNlcnQ6ZnVuY3Rpb24gUnV0KHQsZSl7dmFyIG49ImZ1bmN0aW9uIj09dHlwZW9mIHQ/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/KGZ1bmN0aW9uIGModCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiB0KGUpKyIifX0pKGxbMF0ueCk6KGZ1bmN0aW9uIHUodCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHR9fSkoZSk6KGU9bC5sZW5ndGgsZnVuY3Rpb24odCl7Zm9yKHZhciBuLGk9MDtpPGU7KytpKXNbKG49bFtpXSkuaV09bi54KHQpO3JldHVybiBzLmpvaW4oIiIpfSl9dmFyIE1odCxFaHQsVGh0LENodCxBaHQ9MTgwL01hdGguUEksa2h0PXt0cmFuc2xhdGVYOjAsdHJhbnNsYXRlWTowLHJvdGF0ZTowLHNrZXdYOjAsc2NhbGVYOjEsc2NhbGVZOjF9O2Z1bmN0aW9uIExodCh0LGUsbixpLHIsbyl7dmFyIGEscyxsO3JldHVybihhPU1hdGguc3FydCh0KnQrZSplKSkmJih0Lz1hLGUvPWEpLChsPXQqbitlKmkpJiYobi09dCpsLGktPWUqbCksKHM9TWF0aC5zcXJ0KG4qbitpKmkpKSYmKG4vPXMsaS89cyxsLz1zKSx0Kmk8ZSpuJiYodD0tdCxlPS1lLGw9LWwsYT0tYSkse3RyYW5zbGF0ZVg6cix0cmFuc2xhdGVZOm8scm90YXRlOk1hdGguYXRhbjIoZSx0KSpBaHQsc2tld1g6TWF0aC5hdGFuKGwpKkFodCxzY2FsZVg6YSxzY2FsZVk6c319ZnVuY3Rpb24gUGh0KHQsZSxuLGkpe2Z1bmN0aW9uIHIodCl7cmV0dXJuIHQubGVuZ3RoP3QucG9wKCkrIiAiOiIifXJldHVybiBmdW5jdGlvbihvLGEpe3ZhciBzPVtdLGw9W107cmV0dXJuIG89dChvKSxhPXQoYSksKGZ1bmN0aW9uIGModCxpLHIsbyxhLHMpe2lmKHQhPT1yfHxpIT09byl7dmFyIGw9YS5wdXNoKCJ0cmFuc2xhdGUoIixudWxsLGUsbnVsbCxuKTtzLnB1c2goe2k6bC00LHg6Ymh0KHQscil9LHtpOmwtMix4OmJodChpLG8pfSl9ZWxzZShyfHxvKSYmYS5wdXNoKCJ0cmFuc2xhdGUoIityK2UrbytuKX0pKG8udHJhbnNsYXRlWCxvLnRyYW5zbGF0ZVksYS50cmFuc2xhdGVYLGEudHJhbnNsYXRlWSxzLGwpLChmdW5jdGlvbiB1KHQsZSxuLG8pe3QhPT1lPyh0LWU+MTgwP2UrPTM2MDplLXQ+MTgwJiYodCs9MzYwKSxvLnB1c2goe2k6bi5wdXNoKHIobikrInJvdGF0ZSgiLG51bGwsaSktMix4OmJodCh0LGUpfSkpOmUmJm4ucHVzaChyKG4pKyJyb3RhdGUoIitlK2kpfSkoby5yb3RhdGUsYS5yb3RhdGUscyxsKSwoZnVuY3Rpb24gaCh0LGUsbixvKXt0IT09ZT9vLnB1c2goe2k6bi5wdXNoKHIobikrInNrZXdYKCIsbnVsbCxpKS0yLHg6Ymh0KHQsZSl9KTplJiZuLnB1c2gocihuKSsic2tld1goIitlK2kpfSkoby5za2V3WCxhLnNrZXdYLHMsbCksKGZ1bmN0aW9uIGQodCxlLG4saSxvLGEpe2lmKHQhPT1ufHxlIT09aSl7dmFyIHM9by5wdXNoKHIobykrInNjYWxlKCIsbnVsbCwiLCIsbnVsbCwiKSIpO2EucHVzaCh7aTpzLTQseDpiaHQodCxuKX0se2k6cy0yLHg6Ymh0KGUsaSl9KX1lbHNlIDE9PT1uJiYxPT09aXx8by5wdXNoKHIobykrInNjYWxlKCIrbisiLCIraSsiKSIpfSkoby5zY2FsZVgsby5zY2FsZVksYS5zY2FsZVgsYS5zY2FsZVkscyxsKSxvPWE9bnVsbCxmdW5jdGlvbih0KXtmb3IodmFyIGUsbj0tMSxpPWwubGVuZ3RoOysrbjxpOylzWyhlPWxbbl0pLmldPWUueCh0KTtyZXR1cm4gcy5qb2luKCIiKX19fXZhciBOaHQ9UGh0KChmdW5jdGlvbiBJaHQodCl7cmV0dXJuIm5vbmUiPT09dD9raHQ6KE1odHx8KE1odD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJESVYiKSxFaHQ9ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LFRodD1kb2N1bWVudC5kZWZhdWx0VmlldyksTWh0LnN0eWxlLnRyYW5zZm9ybT10LHQ9VGh0LmdldENvbXB1dGVkU3R5bGUoRWh0LmFwcGVuZENoaWxkKE1odCksbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgidHJhbnNmb3JtIiksRWh0LnJlbW92ZUNoaWxkKE1odCksTGh0KCsodD10LnNsaWNlKDcsLTEpLnNwbGl0KCIsIikpWzBdLCt0WzFdLCt0WzJdLCt0WzNdLCt0WzRdLCt0WzVdKSl9KSwicHgsICIsInB4KSIsImRlZykiKSxSaHQ9UGh0KChmdW5jdGlvbiBPaHQodCl7cmV0dXJuIG51bGw9PXQ/a2h0OihDaHR8fChDaHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsImciKSksQ2h0LnNldEF0dHJpYnV0ZSgidHJhbnNmb3JtIix0KSwodD1DaHQudHJhbnNmb3JtLmJhc2VWYWwuY29uc29saWRhdGUoKSk/TGh0KCh0PXQubWF0cml4KS5hLHQuYix0LmMsdC5kLHQuZSx0LmYpOmtodCl9KSwiLCAiLCIpIiwiKSIpLHpodD1NYXRoLlNRUlQyO2Z1bmN0aW9uIERodCh0KXtyZXR1cm4oKHQ9TWF0aC5leHAodCkpKzEvdCkvMn1mdW5jdGlvbiBCaHQodCxlKXt2YXIgbixpLHI9dFswXSxvPXRbMV0sYT10WzJdLHM9ZVsyXSxsPWVbMF0tcixjPWVbMV0tbyx1PWwqbCtjKmM7aWYodTwxZS0xMilpPU1hdGgubG9nKHMvYSkvemh0LG49ZnVuY3Rpb24odCl7cmV0dXJuW3IrdCpsLG8rdCpjLGEqTWF0aC5leHAoemh0KnQqaSldfTtlbHNle3ZhciBoPU1hdGguc3FydCh1KSxkPShzKnMtYSphKzQqdSkvKDIqYSoyKmgpLHA9KHMqcy1hKmEtNCp1KS8oMipzKjIqaCksZj1NYXRoLmxvZyhNYXRoLnNxcnQoZCpkKzEpLWQpLG09TWF0aC5sb2coTWF0aC5zcXJ0KHAqcCsxKS1wKTtpPShtLWYpL3podCxuPWZ1bmN0aW9uKHQpe3ZhciBlPXQqaSxuPURodChmKSxzPWEvKDIqaCkqKG4qKGZ1bmN0aW9uIHUodCl7cmV0dXJuKCh0PU1hdGguZXhwKDIqdCkpLTEpLyh0KzEpfSkoemh0KmUrZiktKGZ1bmN0aW9uIGQodCl7cmV0dXJuKCh0PU1hdGguZXhwKHQpKS0xL3QpLzJ9KShmKSk7cmV0dXJuW3IrcypsLG8rcypjLGEqbi9EaHQoemh0KmUrZildfX1yZXR1cm4gbi5kdXJhdGlvbj0xZTMqaSxufXZhciBIaHQsRmh0LFZodD0wLFVodD0wLGpodD0wLEdodD0wLFdodD0wLHFodD0wLFlodD0ib2JqZWN0Ij09dHlwZW9mIHBlcmZvcm1hbmNlJiZwZXJmb3JtYW5jZS5ub3c/cGVyZm9ybWFuY2U6RGF0ZSxYaHQ9Im9iamVjdCI9PXR5cGVvZiB3aW5kb3cmJndpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWU/d2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZS5iaW5kKHdpbmRvdyk6ZnVuY3Rpb24odCl7c2V0VGltZW91dCh0LDE3KX07ZnVuY3Rpb24gJGh0KCl7cmV0dXJuIFdodHx8KFhodChLaHQpLFdodD1ZaHQubm93KCkrcWh0KX1mdW5jdGlvbiBLaHQoKXtXaHQ9MH1mdW5jdGlvbiBaaHQoKXt0aGlzLl9jYWxsPXRoaXMuX3RpbWU9dGhpcy5fbmV4dD1udWxsfWZ1bmN0aW9uIEpodCh0LGUsbil7dmFyIGk9bmV3IFpodDtyZXR1cm4gaS5yZXN0YXJ0KHQsZSxuKSxpfWZ1bmN0aW9uIFFodCgpe1dodD0oR2h0PVlodC5ub3coKSkrcWh0LFZodD1VaHQ9MDt0cnl7IShmdW5jdGlvbiB0KCl7JGh0KCksKytWaHQ7Zm9yKHZhciB0LGU9SGh0O2U7KSh0PVdodC1lLl90aW1lKT49MCYmZS5fY2FsbC5jYWxsKG51bGwsdCksZT1lLl9uZXh0Oy0tVmh0fSkoKX1maW5hbGx5e1ZodD0wLChmdW5jdGlvbiBlKCl7dmFyIHQsZSxuPUhodCxpPTEvMDtmb3IoO247KW4uX2NhbGw/KGk+bi5fdGltZSYmKGk9bi5fdGltZSksdD1uLG49bi5fbmV4dCk6KGU9bi5fbmV4dCxuLl9uZXh0PW51bGwsbj10P3QuX25leHQ9ZTpIaHQ9ZSk7Rmh0PXQsZWR0KGkpfSkoKSxXaHQ9MH19ZnVuY3Rpb24gdGR0KCl7dmFyIHQ9WWh0Lm5vdygpLGU9dC1HaHQ7ZT4xZTMmJihxaHQtPWUsR2h0PXQpfWZ1bmN0aW9uIGVkdCh0KXtWaHR8fChVaHQmJihVaHQ9Y2xlYXJUaW1lb3V0KFVodCkpLHQtV2h0PjI0Pyh0PDEvMCYmKFVodD1zZXRUaW1lb3V0KFFodCx0LVlodC5ub3coKS1xaHQpKSxqaHQmJihqaHQ9Y2xlYXJJbnRlcnZhbChqaHQpKSk6KGpodHx8KEdodD1ZaHQubm93KCksamh0PXNldEludGVydmFsKHRkdCwxZTMpKSxWaHQ9MSxYaHQoUWh0KSkpfWZ1bmN0aW9uIG5kdCh0LGUsbil7dmFyIGk9bmV3IFpodDtyZXR1cm4gaS5yZXN0YXJ0KChmdW5jdGlvbihuKXtpLnN0b3AoKSx0KG4rZSl9KSxlPW51bGw9PWU/MDorZSxuKSxpfVpodC5wcm90b3R5cGU9Smh0LnByb3RvdHlwZT17Y29uc3RydWN0b3I6Wmh0LHJlc3RhcnQ6ZnVuY3Rpb24odCxlLG4pe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0KXRocm93IG5ldyBUeXBlRXJyb3IoImNhbGxiYWNrIGlzIG5vdCBhIGZ1bmN0aW9uIik7bj0obnVsbD09bj8kaHQoKTorbikrKG51bGw9PWU/MDorZSksdGhpcy5fbmV4dHx8Rmh0PT09dGhpc3x8KEZodD9GaHQuX25leHQ9dGhpczpIaHQ9dGhpcyxGaHQ9dGhpcyksdGhpcy5fY2FsbD10LHRoaXMuX3RpbWU9bixlZHQoKX0sc3RvcDpmdW5jdGlvbigpe3RoaXMuX2NhbGwmJih0aGlzLl9jYWxsPW51bGwsdGhpcy5fdGltZT0xLzAsZWR0KCkpfX07dmFyIGlkdD1CbHQoInN0YXJ0IiwiZW5kIiwiY2FuY2VsIiwiaW50ZXJydXB0IikscmR0PVtdO2Z1bmN0aW9uIG9kdCh0LGUsbixpLHIsbyl7dmFyIGE9dC5fX3RyYW5zaXRpb247aWYoYSl7aWYobiBpbiBhKXJldHVybn1lbHNlIHQuX190cmFuc2l0aW9uPXt9OyEoZnVuY3Rpb24gcyh0LGUsbil7dmFyIGkscj10Ll9fdHJhbnNpdGlvbjtmdW5jdGlvbiBvKHQpe24uc3RhdGU9MSxuLnRpbWVyLnJlc3RhcnQoYSxuLmRlbGF5LG4udGltZSksbi5kZWxheTw9dCYmYSh0LW4uZGVsYXkpfWZ1bmN0aW9uIGEobyl7dmFyIGMsdSxoLGQ7aWYoMSE9PW4uc3RhdGUpcmV0dXJuIGwoKTtmb3IoYyBpbiByKWlmKChkPXJbY10pLm5hbWU9PT1uLm5hbWUpe2lmKDM9PT1kLnN0YXRlKXJldHVybiBuZHQoYSk7ND09PWQuc3RhdGU/KGQuc3RhdGU9NixkLnRpbWVyLnN0b3AoKSxkLm9uLmNhbGwoImludGVycnVwdCIsdCx0Ll9fZGF0YV9fLGQuaW5kZXgsZC5ncm91cCksZGVsZXRlIHJbY10pOitjPGUmJihkLnN0YXRlPTYsZC50aW1lci5zdG9wKCksZC5vbi5jYWxsKCJjYW5jZWwiLHQsdC5fX2RhdGFfXyxkLmluZGV4LGQuZ3JvdXApLGRlbGV0ZSByW2NdKX1pZihuZHQoKGZ1bmN0aW9uKCl7Mz09PW4uc3RhdGUmJihuLnN0YXRlPTQsbi50aW1lci5yZXN0YXJ0KHMsbi5kZWxheSxuLnRpbWUpLHMobykpfSkpLG4uc3RhdGU9MixuLm9uLmNhbGwoInN0YXJ0Iix0LHQuX19kYXRhX18sbi5pbmRleCxuLmdyb3VwKSwyPT09bi5zdGF0ZSl7Zm9yKG4uc3RhdGU9MyxpPW5ldyBBcnJheShoPW4udHdlZW4ubGVuZ3RoKSxjPTAsdT0tMTtjPGg7KytjKShkPW4udHdlZW5bY10udmFsdWUuY2FsbCh0LHQuX19kYXRhX18sbi5pbmRleCxuLmdyb3VwKSkmJihpWysrdV09ZCk7aS5sZW5ndGg9dSsxfX1mdW5jdGlvbiBzKGUpe2Zvcih2YXIgcj1lPG4uZHVyYXRpb24/bi5lYXNlLmNhbGwobnVsbCxlL24uZHVyYXRpb24pOihuLnRpbWVyLnJlc3RhcnQobCksbi5zdGF0ZT01LDEpLG89LTEsYT1pLmxlbmd0aDsrK288YTspaVtvXS5jYWxsKHQscik7NT09PW4uc3RhdGUmJihuLm9uLmNhbGwoImVuZCIsdCx0Ll9fZGF0YV9fLG4uaW5kZXgsbi5ncm91cCksbCgpKX1mdW5jdGlvbiBsKCl7Zm9yKHZhciBpIGluIG4uc3RhdGU9NixuLnRpbWVyLnN0b3AoKSxkZWxldGUgcltlXSxyKXJldHVybjtkZWxldGUgdC5fX3RyYW5zaXRpb259cltlXT1uLG4udGltZXI9Smh0KG8sMCxuLnRpbWUpfSkodCxuLHtuYW1lOmUsaW5kZXg6aSxncm91cDpyLG9uOmlkdCx0d2VlbjpyZHQsdGltZTpvLnRpbWUsZGVsYXk6by5kZWxheSxkdXJhdGlvbjpvLmR1cmF0aW9uLGVhc2U6by5lYXNlLHRpbWVyOm51bGwsc3RhdGU6MH0pfWZ1bmN0aW9uIGFkdCh0LGUpe3ZhciBuPWxkdCh0LGUpO2lmKG4uc3RhdGU+MCl0aHJvdyBuZXcgRXJyb3IoInRvbyBsYXRlOyBhbHJlYWR5IHNjaGVkdWxlZCIpO3JldHVybiBufWZ1bmN0aW9uIHNkdCh0LGUpe3ZhciBuPWxkdCh0LGUpO2lmKG4uc3RhdGU+Myl0aHJvdyBuZXcgRXJyb3IoInRvbyBsYXRlOyBhbHJlYWR5IHJ1bm5pbmciKTtyZXR1cm4gbn1mdW5jdGlvbiBsZHQodCxlKXt2YXIgbj10Ll9fdHJhbnNpdGlvbjtpZighbnx8IShuPW5bZV0pKXRocm93IG5ldyBFcnJvcigidHJhbnNpdGlvbiBub3QgZm91bmQiKTtyZXR1cm4gbn1mdW5jdGlvbiBjZHQodCxlKXt2YXIgbixpLHIsbz10Ll9fdHJhbnNpdGlvbixhPSEwO2lmKG8pe2ZvcihyIGluIGU9bnVsbD09ZT9udWxsOmUrIiIsbykobj1vW3JdKS5uYW1lPT09ZT8oaT1uLnN0YXRlPjImJm4uc3RhdGU8NSxuLnN0YXRlPTYsbi50aW1lci5zdG9wKCksbi5vbi5jYWxsKGk/ImludGVycnVwdCI6ImNhbmNlbCIsdCx0Ll9fZGF0YV9fLG4uaW5kZXgsbi5ncm91cCksZGVsZXRlIG9bcl0pOmE9ITE7YSYmZGVsZXRlIHQuX190cmFuc2l0aW9ufX1mdW5jdGlvbiB1ZHQodCxlKXt2YXIgbixpO3JldHVybiBmdW5jdGlvbigpe3ZhciByPXNkdCh0aGlzLHQpLG89ci50d2VlbjtpZihvIT09bilmb3IodmFyIGE9MCxzPShpPW49bykubGVuZ3RoO2E8czsrK2EpaWYoaVthXS5uYW1lPT09ZSl7KGk9aS5zbGljZSgpKS5zcGxpY2UoYSwxKTticmVha31yLnR3ZWVuPWl9fWZ1bmN0aW9uIGhkdCh0LGUsbil7dmFyIGkscjtpZigiZnVuY3Rpb24iIT10eXBlb2Ygbil0aHJvdyBuZXcgRXJyb3I7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG89c2R0KHRoaXMsdCksYT1vLnR3ZWVuO2lmKGEhPT1pKXtyPShpPWEpLnNsaWNlKCk7Zm9yKHZhciBzPXtuYW1lOmUsdmFsdWU6bn0sbD0wLGM9ci5sZW5ndGg7bDxjOysrbClpZihyW2xdLm5hbWU9PT1lKXtyW2xdPXM7YnJlYWt9bD09PWMmJnIucHVzaChzKX1vLnR3ZWVuPXJ9fWZ1bmN0aW9uIGRkdCh0LGUsbil7dmFyIGk9dC5faWQ7cmV0dXJuIHQuZWFjaCgoZnVuY3Rpb24oKXt2YXIgdD1zZHQodGhpcyxpKTsodC52YWx1ZXx8KHQudmFsdWU9e30pKVtlXT1uLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0pKSxmdW5jdGlvbih0KXtyZXR1cm4gbGR0KHQsaSkudmFsdWVbZV19fWZ1bmN0aW9uIHBkdCh0LGUpe3ZhciBuO3JldHVybigibnVtYmVyIj09dHlwZW9mIGU/Ymh0OmUgaW5zdGFuY2VvZiBlaHQ/dmh0OihuPWVodChlKSk/KGU9bix2aHQpOlNodCkodCxlKX1mdW5jdGlvbiBmZHQodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5yZW1vdmVBdHRyaWJ1dGUodCl9fWZ1bmN0aW9uIG1kdCh0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnJlbW92ZUF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCl9fWZ1bmN0aW9uIGdkdCh0LGUsbil7dmFyIGkscixvPW4rIiI7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5nZXRBdHRyaWJ1dGUodCk7cmV0dXJuIGE9PT1vP251bGw6YT09PWk/cjpyPWUoaT1hLG4pfX1mdW5jdGlvbiBfZHQodCxlLG4pe3ZhciBpLHIsbz1uKyIiO3JldHVybiBmdW5jdGlvbigpe3ZhciBhPXRoaXMuZ2V0QXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsKTtyZXR1cm4gYT09PW8/bnVsbDphPT09aT9yOnI9ZShpPWEsbil9fWZ1bmN0aW9uIHlkdCh0LGUsbil7dmFyIGkscixvO3JldHVybiBmdW5jdGlvbigpe3ZhciBhLHMsbD1uKHRoaXMpO2lmKG51bGwhPWwpcmV0dXJuKGE9dGhpcy5nZXRBdHRyaWJ1dGUodCkpPT09KHM9bCsiIik/bnVsbDphPT09aSYmcz09PXI/bzoocj1zLG89ZShpPWEsbCkpO3RoaXMucmVtb3ZlQXR0cmlidXRlKHQpfX1mdW5jdGlvbiB2ZHQodCxlLG4pe3ZhciBpLHIsbztyZXR1cm4gZnVuY3Rpb24oKXt2YXIgYSxzLGw9bih0aGlzKTtpZihudWxsIT1sKXJldHVybihhPXRoaXMuZ2V0QXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsKSk9PT0ocz1sKyIiKT9udWxsOmE9PT1pJiZzPT09cj9vOihyPXMsbz1lKGk9YSxsKSk7dGhpcy5yZW1vdmVBdHRyaWJ1dGVOUyh0LnNwYWNlLHQubG9jYWwpfX1mdW5jdGlvbiBiZHQodCxlKXtyZXR1cm4gZnVuY3Rpb24obil7dGhpcy5zZXRBdHRyaWJ1dGUodCxlLmNhbGwodGhpcyxuKSl9fWZ1bmN0aW9uIHhkdCh0LGUpe3JldHVybiBmdW5jdGlvbihuKXt0aGlzLnNldEF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCxlLmNhbGwodGhpcyxuKSl9fWZ1bmN0aW9uIHdkdCh0LGUpe3ZhciBuLGk7ZnVuY3Rpb24gcigpe3ZhciByPWUuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiByIT09aSYmKG49KGk9cikmJnhkdCh0LHIpKSxufXJldHVybiByLl92YWx1ZT1lLHJ9ZnVuY3Rpb24gU2R0KHQsZSl7dmFyIG4saTtmdW5jdGlvbiByKCl7dmFyIHI9ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIHIhPT1pJiYobj0oaT1yKSYmYmR0KHQscikpLG59cmV0dXJuIHIuX3ZhbHVlPWUscn1mdW5jdGlvbiBNZHQodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXthZHQodGhpcyx0KS5kZWxheT0rZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fWZ1bmN0aW9uIEVkdCh0LGUpe3JldHVybiBlPStlLGZ1bmN0aW9uKCl7YWR0KHRoaXMsdCkuZGVsYXk9ZX19ZnVuY3Rpb24gVGR0KHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7c2R0KHRoaXMsdCkuZHVyYXRpb249K2UuYXBwbHkodGhpcyxhcmd1bWVudHMpfX1mdW5jdGlvbiBDZHQodCxlKXtyZXR1cm4gZT0rZSxmdW5jdGlvbigpe3NkdCh0aGlzLHQpLmR1cmF0aW9uPWV9fWZ1bmN0aW9uIEFkdCh0LGUpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBlKXRocm93IG5ldyBFcnJvcjtyZXR1cm4gZnVuY3Rpb24oKXtzZHQodGhpcyx0KS5lYXNlPWV9fWZ1bmN0aW9uIGtkdCh0LGUsbil7dmFyIGkscixvPShmdW5jdGlvbiBhKHQpe3JldHVybih0KyIiKS50cmltKCkuc3BsaXQoL158XHMrLykuZXZlcnkoKGZ1bmN0aW9uKHQpe3ZhciBlPXQuaW5kZXhPZigiLiIpO3JldHVybiBlPj0wJiYodD10LnNsaWNlKDAsZSkpLCF0fHwic3RhcnQiPT09dH0pKX0pKGUpP2FkdDpzZHQ7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGE9byh0aGlzLHQpLHM9YS5vbjtzIT09aSYmKHI9KGk9cykuY29weSgpKS5vbihlLG4pLGEub249cn19dmFyIExkdD1aY3QucHJvdG90eXBlLmNvbnN0cnVjdG9yO2Z1bmN0aW9uIFBkdCh0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KHQpfX1mdW5jdGlvbiBOZHQodCxlLG4pe3JldHVybiBmdW5jdGlvbihpKXt0aGlzLnN0eWxlLnNldFByb3BlcnR5KHQsZS5jYWxsKHRoaXMsaSksbil9fWZ1bmN0aW9uIElkdCh0LGUsbil7dmFyIGkscjtmdW5jdGlvbiBvKCl7dmFyIG89ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIG8hPT1yJiYoaT0ocj1vKSYmTmR0KHQsbyxuKSksaX1yZXR1cm4gby5fdmFsdWU9ZSxvfWZ1bmN0aW9uIFJkdCh0KXtyZXR1cm4gZnVuY3Rpb24oZSl7dGhpcy50ZXh0Q29udGVudD10LmNhbGwodGhpcyxlKX19ZnVuY3Rpb24gT2R0KHQpe3ZhciBlLG47ZnVuY3Rpb24gaSgpe3ZhciBpPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBpIT09biYmKGU9KG49aSkmJlJkdChpKSksZX1yZXR1cm4gaS5fdmFsdWU9dCxpfXZhciB6ZHQ9MDtmdW5jdGlvbiBEZHQodCxlLG4saSl7dGhpcy5fZ3JvdXBzPXQsdGhpcy5fcGFyZW50cz1lLHRoaXMuX25hbWU9bix0aGlzLl9pZD1pfWZ1bmN0aW9uIEJkdCgpe3JldHVybisremR0fXZhciBIZHQ9WmN0LnByb3RvdHlwZTtEZHQucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpEZHQsc2VsZWN0OmZ1bmN0aW9uIEZkdCh0KXt2YXIgZT10aGlzLl9uYW1lLG49dGhpcy5faWQ7ImZ1bmN0aW9uIiE9dHlwZW9mIHQmJih0PUtsdCh0KSk7Zm9yKHZhciBpPXRoaXMuX2dyb3VwcyxyPWkubGVuZ3RoLG89bmV3IEFycmF5KHIpLGE9MDthPHI7KythKWZvcih2YXIgcyxsLGM9aVthXSx1PWMubGVuZ3RoLGg9b1thXT1uZXcgQXJyYXkodSksZD0wO2Q8dTsrK2QpKHM9Y1tkXSkmJihsPXQuY2FsbChzLHMuX19kYXRhX18sZCxjKSkmJigiX19kYXRhX18iaW4gcyYmKGwuX19kYXRhX189cy5fX2RhdGFfXyksaFtkXT1sLG9kdChoW2RdLGUsbixkLGgsbGR0KHMsbikpKTtyZXR1cm4gbmV3IERkdChvLHRoaXMuX3BhcmVudHMsZSxuKX0sc2VsZWN0QWxsOmZ1bmN0aW9uIFZkdCh0KXt2YXIgZT10aGlzLl9uYW1lLG49dGhpcy5faWQ7ImZ1bmN0aW9uIiE9dHlwZW9mIHQmJih0PUpsdCh0KSk7Zm9yKHZhciBpPXRoaXMuX2dyb3VwcyxyPWkubGVuZ3RoLG89W10sYT1bXSxzPTA7czxyOysrcylmb3IodmFyIGwsYz1pW3NdLHU9Yy5sZW5ndGgsaD0wO2g8dTsrK2gpaWYobD1jW2hdKXtmb3IodmFyIGQscD10LmNhbGwobCxsLl9fZGF0YV9fLGgsYyksZj1sZHQobCxuKSxtPTAsZz1wLmxlbmd0aDttPGc7KyttKShkPXBbbV0pJiZvZHQoZCxlLG4sbSxwLGYpO28ucHVzaChwKSxhLnB1c2gobCl9cmV0dXJuIG5ldyBEZHQobyxhLGUsbil9LGZpbHRlcjpmdW5jdGlvbiBVZHQodCl7ImZ1bmN0aW9uIiE9dHlwZW9mIHQmJih0PVFsdCh0KSk7Zm9yKHZhciBlPXRoaXMuX2dyb3VwcyxuPWUubGVuZ3RoLGk9bmV3IEFycmF5KG4pLHI9MDtyPG47KytyKWZvcih2YXIgbyxhPWVbcl0scz1hLmxlbmd0aCxsPWlbcl09W10sYz0wO2M8czsrK2MpKG89YVtjXSkmJnQuY2FsbChvLG8uX19kYXRhX18sYyxhKSYmbC5wdXNoKG8pO3JldHVybiBuZXcgRGR0KGksdGhpcy5fcGFyZW50cyx0aGlzLl9uYW1lLHRoaXMuX2lkKX0sbWVyZ2U6ZnVuY3Rpb24gamR0KHQpe2lmKHQuX2lkIT09dGhpcy5faWQpdGhyb3cgbmV3IEVycm9yO2Zvcih2YXIgZT10aGlzLl9ncm91cHMsbj10Ll9ncm91cHMsaT1lLmxlbmd0aCxyPU1hdGgubWluKGksbi5sZW5ndGgpLG89bmV3IEFycmF5KGkpLGE9MDthPHI7KythKWZvcih2YXIgcyxsPWVbYV0sYz1uW2FdLHU9bC5sZW5ndGgsaD1vW2FdPW5ldyBBcnJheSh1KSxkPTA7ZDx1OysrZCkocz1sW2RdfHxjW2RdKSYmKGhbZF09cyk7Zm9yKDthPGk7KythKW9bYV09ZVthXTtyZXR1cm4gbmV3IERkdChvLHRoaXMuX3BhcmVudHMsdGhpcy5fbmFtZSx0aGlzLl9pZCl9LHNlbGVjdGlvbjpmdW5jdGlvbiBHZHQoKXtyZXR1cm4gbmV3IExkdCh0aGlzLl9ncm91cHMsdGhpcy5fcGFyZW50cyl9LHRyYW5zaXRpb246ZnVuY3Rpb24gV2R0KCl7Zm9yKHZhciB0PXRoaXMuX25hbWUsZT10aGlzLl9pZCxuPUJkdCgpLGk9dGhpcy5fZ3JvdXBzLHI9aS5sZW5ndGgsbz0wO288cjsrK28pZm9yKHZhciBhLHM9aVtvXSxsPXMubGVuZ3RoLGM9MDtjPGw7KytjKWlmKGE9c1tjXSl7dmFyIHU9bGR0KGEsZSk7b2R0KGEsdCxuLGMscyx7dGltZTp1LnRpbWUrdS5kZWxheSt1LmR1cmF0aW9uLGRlbGF5OjAsZHVyYXRpb246dS5kdXJhdGlvbixlYXNlOnUuZWFzZX0pfXJldHVybiBuZXcgRGR0KGksdGhpcy5fcGFyZW50cyx0LG4pfSxjYWxsOkhkdC5jYWxsLG5vZGVzOkhkdC5ub2Rlcyxub2RlOkhkdC5ub2RlLHNpemU6SGR0LnNpemUsZW1wdHk6SGR0LmVtcHR5LGVhY2g6SGR0LmVhY2gsb246ZnVuY3Rpb24gcWR0KHQsZSl7dmFyIG49dGhpcy5faWQ7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg8Mj9sZHQodGhpcy5ub2RlKCksbikub24ub24odCk6dGhpcy5lYWNoKGtkdChuLHQsZSkpfSxhdHRyOmZ1bmN0aW9uIFlkdCh0LGUpe3ZhciBuPVdsdCh0KSxpPSJ0cmFuc2Zvcm0iPT09bj9SaHQ6cGR0O3JldHVybiB0aGlzLmF0dHJUd2Vlbih0LCJmdW5jdGlvbiI9PXR5cGVvZiBlPyhuLmxvY2FsP3ZkdDp5ZHQpKG4saSxkZHQodGhpcywiYXR0ci4iK3QsZSkpOm51bGw9PWU/KG4ubG9jYWw/bWR0OmZkdCkobik6KG4ubG9jYWw/X2R0OmdkdCkobixpLGUpKX0sYXR0clR3ZWVuOmZ1bmN0aW9uIFhkdCh0LGUpe3ZhciBuPSJhdHRyLiIrdDtpZihhcmd1bWVudHMubGVuZ3RoPDIpcmV0dXJuKG49dGhpcy50d2VlbihuKSkmJm4uX3ZhbHVlO2lmKG51bGw9PWUpcmV0dXJuIHRoaXMudHdlZW4obixudWxsKTtpZigiZnVuY3Rpb24iIT10eXBlb2YgZSl0aHJvdyBuZXcgRXJyb3I7dmFyIGk9V2x0KHQpO3JldHVybiB0aGlzLnR3ZWVuKG4sKGkubG9jYWw/d2R0OlNkdCkoaSxlKSl9LHN0eWxlOmZ1bmN0aW9uICRkdCh0LGUsbil7dmFyIGk9InRyYW5zZm9ybSI9PSh0Kz0iIik/Tmh0OnBkdDtyZXR1cm4gbnVsbD09ZT90aGlzLnN0eWxlVHdlZW4odCwoZnVuY3Rpb24gcih0LGUpe3ZhciBuLGkscjtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbz1tY3QodGhpcyx0KSxhPSh0aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KHQpLG1jdCh0aGlzLHQpKTtyZXR1cm4gbz09PWE/bnVsbDpvPT09biYmYT09PWk/cjpyPWUobj1vLGk9YSl9fSkodCxpKSkub24oImVuZC5zdHlsZS4iK3QsUGR0KHQpKToiZnVuY3Rpb24iPT10eXBlb2YgZT90aGlzLnN0eWxlVHdlZW4odCwoZnVuY3Rpb24gYSh0LGUsbil7dmFyIGkscixvO3JldHVybiBmdW5jdGlvbigpe3ZhciBhPW1jdCh0aGlzLHQpLHM9bih0aGlzKSxsPXMrIiI7cmV0dXJuIG51bGw9PXMmJih0aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KHQpLGw9cz1tY3QodGhpcyx0KSksYT09PWw/bnVsbDphPT09aSYmbD09PXI/bzoocj1sLG89ZShpPWEscykpfX0pKHQsaSxkZHQodGhpcywic3R5bGUuIit0LGUpKSkuZWFjaCgoZnVuY3Rpb24gbyh0LGUpe3ZhciBuLGkscixvLGE9InN0eWxlLiIrZSxzPSJlbmQuIithO3JldHVybiBmdW5jdGlvbigpe3ZhciBsPXNkdCh0aGlzLHQpLGM9bC5vbix1PW51bGw9PWwudmFsdWVbYV0/b3x8KG89UGR0KGUpKTp2b2lkIDA7Yz09PW4mJnI9PT11fHwoaT0obj1jKS5jb3B5KCkpLm9uKHMscj11KSxsLm9uPWl9fSkodGhpcy5faWQsdCkpOnRoaXMuc3R5bGVUd2Vlbih0LChmdW5jdGlvbiBzKHQsZSxuKXt2YXIgaSxyLG89bisiIjtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgYT1tY3QodGhpcyx0KTtyZXR1cm4gYT09PW8/bnVsbDphPT09aT9yOnI9ZShpPWEsbil9fSkodCxpLGUpLG4pLm9uKCJlbmQuc3R5bGUuIit0LG51bGwpfSxzdHlsZVR3ZWVuOmZ1bmN0aW9uIEtkdCh0LGUsbil7dmFyIGk9InN0eWxlLiIrKHQrPSIiKTtpZihhcmd1bWVudHMubGVuZ3RoPDIpcmV0dXJuKGk9dGhpcy50d2VlbihpKSkmJmkuX3ZhbHVlO2lmKG51bGw9PWUpcmV0dXJuIHRoaXMudHdlZW4oaSxudWxsKTtpZigiZnVuY3Rpb24iIT10eXBlb2YgZSl0aHJvdyBuZXcgRXJyb3I7cmV0dXJuIHRoaXMudHdlZW4oaSxJZHQodCxlLG51bGw9PW4/IiI6bikpfSx0ZXh0OmZ1bmN0aW9uIFpkdCh0KXtyZXR1cm4gdGhpcy50d2VlbigidGV4dCIsImZ1bmN0aW9uIj09dHlwZW9mIHQ/KGZ1bmN0aW9uIGUodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGU9dCh0aGlzKTt0aGlzLnRleHRDb250ZW50PW51bGw9PWU/IiI6ZX19KShkZHQodGhpcywidGV4dCIsdCkpOihmdW5jdGlvbiBuKHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMudGV4dENvbnRlbnQ9dH19KShudWxsPT10PyIiOnQrIiIpKX0sdGV4dFR3ZWVuOmZ1bmN0aW9uIEpkdCh0KXt2YXIgZT0idGV4dCI7aWYoYXJndW1lbnRzLmxlbmd0aDwxKXJldHVybihlPXRoaXMudHdlZW4oZSkpJiZlLl92YWx1ZTtpZihudWxsPT10KXJldHVybiB0aGlzLnR3ZWVuKGUsbnVsbCk7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQpdGhyb3cgbmV3IEVycm9yO3JldHVybiB0aGlzLnR3ZWVuKGUsT2R0KHQpKX0scmVtb3ZlOmZ1bmN0aW9uIFFkdCgpe3JldHVybiB0aGlzLm9uKCJlbmQucmVtb3ZlIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgdD10aGlzLnBhcmVudE5vZGU7Zm9yKHZhciBuIGluIHRoaXMuX190cmFuc2l0aW9uKWlmKCtuIT09ZSlyZXR1cm47dCYmdC5yZW1vdmVDaGlsZCh0aGlzKX19KSh0aGlzLl9pZCkpfSx0d2VlbjpmdW5jdGlvbiB0cHQodCxlKXt2YXIgbj10aGlzLl9pZDtpZih0Kz0iIixhcmd1bWVudHMubGVuZ3RoPDIpe2Zvcih2YXIgaSxyPWxkdCh0aGlzLm5vZGUoKSxuKS50d2VlbixvPTAsYT1yLmxlbmd0aDtvPGE7KytvKWlmKChpPXJbb10pLm5hbWU9PT10KXJldHVybiBpLnZhbHVlO3JldHVybiBudWxsfXJldHVybiB0aGlzLmVhY2goKG51bGw9PWU/dWR0OmhkdCkobix0LGUpKX0sZGVsYXk6ZnVuY3Rpb24gZXB0KHQpe3ZhciBlPXRoaXMuX2lkO3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3RoaXMuZWFjaCgoImZ1bmN0aW9uIj09dHlwZW9mIHQ/TWR0OkVkdCkoZSx0KSk6bGR0KHRoaXMubm9kZSgpLGUpLmRlbGF5fSxkdXJhdGlvbjpmdW5jdGlvbiBucHQodCl7dmFyIGU9dGhpcy5faWQ7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5lYWNoKCgiZnVuY3Rpb24iPT10eXBlb2YgdD9UZHQ6Q2R0KShlLHQpKTpsZHQodGhpcy5ub2RlKCksZSkuZHVyYXRpb259LGVhc2U6ZnVuY3Rpb24gaXB0KHQpe3ZhciBlPXRoaXMuX2lkO3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3RoaXMuZWFjaChBZHQoZSx0KSk6bGR0KHRoaXMubm9kZSgpLGUpLmVhc2V9LGVuZDpmdW5jdGlvbiBycHQoKXt2YXIgdCxlLG49dGhpcyxpPW4uX2lkLHI9bi5zaXplKCk7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihvLGEpe3ZhciBzPXt2YWx1ZTphfSxsPXt2YWx1ZTpmdW5jdGlvbigpezA9PS0tciYmbygpfX07bi5lYWNoKChmdW5jdGlvbigpe3ZhciBuPXNkdCh0aGlzLGkpLHI9bi5vbjtyIT09dCYmKChlPSh0PXIpLmNvcHkoKSkuXy5jYW5jZWwucHVzaChzKSxlLl8uaW50ZXJydXB0LnB1c2gocyksZS5fLmVuZC5wdXNoKGwpKSxuLm9uPWV9KSl9KSl9fTt2YXIgb3B0PXt0aW1lOm51bGwsZGVsYXk6MCxkdXJhdGlvbjoyNTAsZWFzZTpxZn07ZnVuY3Rpb24gYXB0KHQsZSl7Zm9yKHZhciBuOyEobj10Ll9fdHJhbnNpdGlvbil8fCEobj1uW2VdKTspaWYoISh0PXQucGFyZW50Tm9kZSkpcmV0dXJuIG9wdC50aW1lPSRodCgpLG9wdDtyZXR1cm4gbn1mdW5jdGlvbiBzcHQodCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHR9fWZ1bmN0aW9uIGxwdCh0LGUsbil7dGhpcy50YXJnZXQ9dCx0aGlzLnR5cGU9ZSx0aGlzLnRyYW5zZm9ybT1ufWZ1bmN0aW9uIGNwdCh0LGUsbil7dGhpcy5rPXQsdGhpcy54PWUsdGhpcy55PW59WmN0LnByb3RvdHlwZS5pbnRlcnJ1cHQ9ZnVuY3Rpb24gdXB0KHQpe3JldHVybiB0aGlzLmVhY2goKGZ1bmN0aW9uKCl7Y2R0KHRoaXMsdCl9KSl9LFpjdC5wcm90b3R5cGUudHJhbnNpdGlvbj1mdW5jdGlvbiBocHQodCl7dmFyIGUsbjt0IGluc3RhbmNlb2YgRGR0PyhlPXQuX2lkLHQ9dC5fbmFtZSk6KGU9QmR0KCksKG49b3B0KS50aW1lPSRodCgpLHQ9bnVsbD09dD9udWxsOnQrIiIpO2Zvcih2YXIgaT10aGlzLl9ncm91cHMscj1pLmxlbmd0aCxvPTA7bzxyOysrbylmb3IodmFyIGEscz1pW29dLGw9cy5sZW5ndGgsYz0wO2M8bDsrK2MpKGE9c1tjXSkmJm9kdChhLHQsZSxjLHMsbnx8YXB0KGEsZSkpO3JldHVybiBuZXcgRGR0KGksdGhpcy5fcGFyZW50cyx0LGUpfSxjcHQucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpjcHQsc2NhbGU6ZnVuY3Rpb24odCl7cmV0dXJuIDE9PT10P3RoaXM6bmV3IGNwdCh0aGlzLmsqdCx0aGlzLngsdGhpcy55KX0sdHJhbnNsYXRlOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIDA9PT10JjA9PT1lP3RoaXM6bmV3IGNwdCh0aGlzLmssdGhpcy54K3RoaXMuayp0LHRoaXMueSt0aGlzLmsqZSl9LGFwcGx5OmZ1bmN0aW9uKHQpe3JldHVyblt0WzBdKnRoaXMuayt0aGlzLngsdFsxXSp0aGlzLmsrdGhpcy55XX0sYXBwbHlYOmZ1bmN0aW9uKHQpe3JldHVybiB0KnRoaXMuayt0aGlzLnh9LGFwcGx5WTpmdW5jdGlvbih0KXtyZXR1cm4gdCp0aGlzLmsrdGhpcy55fSxpbnZlcnQ6ZnVuY3Rpb24odCl7cmV0dXJuWyh0WzBdLXRoaXMueCkvdGhpcy5rLCh0WzFdLXRoaXMueSkvdGhpcy5rXX0saW52ZXJ0WDpmdW5jdGlvbih0KXtyZXR1cm4odC10aGlzLngpL3RoaXMua30saW52ZXJ0WTpmdW5jdGlvbih0KXtyZXR1cm4odC10aGlzLnkpL3RoaXMua30scmVzY2FsZVg6ZnVuY3Rpb24odCl7cmV0dXJuIHQuY29weSgpLmRvbWFpbih0LnJhbmdlKCkubWFwKHRoaXMuaW52ZXJ0WCx0aGlzKS5tYXAodC5pbnZlcnQsdCkpfSxyZXNjYWxlWTpmdW5jdGlvbih0KXtyZXR1cm4gdC5jb3B5KCkuZG9tYWluKHQucmFuZ2UoKS5tYXAodGhpcy5pbnZlcnRZLHRoaXMpLm1hcCh0LmludmVydCx0KSl9LHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuInRyYW5zbGF0ZSgiK3RoaXMueCsiLCIrdGhpcy55KyIpIHNjYWxlKCIrdGhpcy5rKyIpIn19O3ZhciBkcHQ9bmV3IGNwdCgxLDAsMCk7ZnVuY3Rpb24gcHB0KHQpe3JldHVybiB0Ll9fem9vbXx8ZHB0fWZ1bmN0aW9uIGZwdCgpe0ZjdC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKX1mdW5jdGlvbiBtcHQoKXtGY3QucHJldmVudERlZmF1bHQoKSxGY3Quc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCl9ZnVuY3Rpb24gZ3B0KCl7cmV0dXJuIUZjdC5idXR0b259ZnVuY3Rpb24gX3B0KCl7dmFyIHQsZSxuPXRoaXM7cmV0dXJuIG4gaW5zdGFuY2VvZiBTVkdFbGVtZW50Pyh0PShuPW4ub3duZXJTVkdFbGVtZW50fHxuKS53aWR0aC5iYXNlVmFsLnZhbHVlLGU9bi5oZWlnaHQuYmFzZVZhbC52YWx1ZSk6KHQ9bi5jbGllbnRXaWR0aCxlPW4uY2xpZW50SGVpZ2h0KSxbWzAsMF0sW3QsZV1dfWZ1bmN0aW9uIHlwdCgpe3JldHVybiB0aGlzLl9fem9vbXx8ZHB0fWZ1bmN0aW9uIHZwdCgpe3JldHVybi1GY3QuZGVsdGFZKihGY3QuZGVsdGFNb2RlPzEyMDoxKS81MDB9ZnVuY3Rpb24gYnB0KCl7cmV0dXJuIm9udG91Y2hzdGFydCJpbiB0aGlzfWZ1bmN0aW9uIHhwdCh0LGUsbil7dmFyIGk9dC5pbnZlcnRYKGVbMF1bMF0pLW5bMF1bMF0scj10LmludmVydFgoZVsxXVswXSktblsxXVswXSxvPXQuaW52ZXJ0WShlWzBdWzFdKS1uWzBdWzFdLGE9dC5pbnZlcnRZKGVbMV1bMV0pLW5bMV1bMV07cmV0dXJuIHQudHJhbnNsYXRlKHI+aT8oaStyKS8yOk1hdGgubWluKDAsaSl8fE1hdGgubWF4KDAsciksYT5vPyhvK2EpLzI6TWF0aC5taW4oMCxvKXx8TWF0aC5tYXgoMCxhKSl9cHB0LnByb3RvdHlwZT1jcHQucHJvdG90eXBlO3ZhciB3cHQ9TWUoT2JqZWN0LmZyZWV6ZSh7X19wcm90b19fOm51bGwsdmVyc2lvbjoiNC4xMy4wIixiaXNlY3Q6ZXosYmlzZWN0UmlnaHQ6ZXosYmlzZWN0TGVmdDpueixhc2NlbmRpbmc6Sk8sYmlzZWN0b3I6UU8sY3Jvc3M6ZnVuY3Rpb24gU3B0KHQsZSxuKXt2YXIgaSxyLG8sYSxzPXQubGVuZ3RoLGw9ZS5sZW5ndGgsYz1uZXcgQXJyYXkocypsKTtmb3IobnVsbD09biYmKG49aXopLGk9bz0wO2k8czsrK2kpZm9yKGE9dFtpXSxyPTA7cjxsOysrciwrK28pY1tvXT1uKGEsZVtyXSk7cmV0dXJuIGN9LGRlc2NlbmRpbmc6ZnVuY3Rpb24gTXB0KHQsZSl7cmV0dXJuIGU8dD8tMTplPnQ/MTplPj10PzA6TmFOfSxkZXZpYXRpb246YXosZXh0ZW50OnN6LGhpc3RvZ3JhbTpmdW5jdGlvbiBFcHQoKXt2YXIgdD1keixlPXN6LG49dno7ZnVuY3Rpb24gaShpKXt2YXIgcixvLGE9aS5sZW5ndGgscz1uZXcgQXJyYXkoYSk7Zm9yKHI9MDtyPGE7KytyKXNbcl09dChpW3JdLHIsaSk7dmFyIGw9ZShzKSxjPWxbMF0sdT1sWzFdLGg9bihzLGMsdSk7QXJyYXkuaXNBcnJheShoKXx8KGg9eXooYyx1LGgpLGg9cHooTWF0aC5jZWlsKGMvaCkqaCxNYXRoLmZsb29yKHUvaCkqaCxoKSk7Zm9yKHZhciBkPWgubGVuZ3RoO2hbMF08PWM7KWguc2hpZnQoKSwtLWQ7Zm9yKDtoW2QtMV0+dTspaC5wb3AoKSwtLWQ7dmFyIHAsZj1uZXcgQXJyYXkoZCsxKTtmb3Iocj0wO3I8PWQ7KytyKShwPWZbcl09W10pLngwPXI+MD9oW3ItMV06YyxwLngxPXI8ZD9oW3JdOnU7Zm9yKHI9MDtyPGE7KytyKWM8PShvPXNbcl0pJiZvPD11JiZmW2V6KGgsbywwLGQpXS5wdXNoKGlbcl0pO3JldHVybiBmfXJldHVybiBpLnZhbHVlPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PSJmdW5jdGlvbiI9PXR5cGVvZiBlP2U6aHooZSksaSk6dH0saS5kb21haW49ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpoeihbdFswXSx0WzFdXSksaSk6ZX0saS50aHJlc2hvbGRzPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6QXJyYXkuaXNBcnJheSh0KT9oeihjei5jYWxsKHQpKTpoeih0KSxpKTpufSxpfSx0aHJlc2hvbGRGcmVlZG1hbkRpYWNvbmlzOmZ1bmN0aW9uIFRwdCh0LGUsbil7cmV0dXJuIHQ9dXouY2FsbCh0LHJ6KS5zb3J0KEpPKSxNYXRoLmNlaWwoKG4tZSkvKDIqKGJ6KHQsLjc1KS1ieih0LC4yNSkpKk1hdGgucG93KHQubGVuZ3RoLC0xLzMpKSl9LHRocmVzaG9sZFNjb3R0OmZ1bmN0aW9uIENwdCh0LGUsbil7cmV0dXJuIE1hdGguY2VpbCgobi1lKS8oMy41KmF6KHQpKk1hdGgucG93KHQubGVuZ3RoLC0xLzMpKSl9LHRocmVzaG9sZFN0dXJnZXM6dnosbWF4OmZ1bmN0aW9uIEFwdCh0LGUpe3ZhciBuLGkscj10Lmxlbmd0aCxvPS0xO2lmKG51bGw9PWUpe2Zvcig7KytvPHI7KWlmKG51bGwhPShuPXRbb10pJiZuPj1uKWZvcihpPW47KytvPHI7KW51bGwhPShuPXRbb10pJiZuPmkmJihpPW4pfWVsc2UgZm9yKDsrK288cjspaWYobnVsbCE9KG49ZSh0W29dLG8sdCkpJiZuPj1uKWZvcihpPW47KytvPHI7KW51bGwhPShuPWUodFtvXSxvLHQpKSYmbj5pJiYoaT1uKTtyZXR1cm4gaX0sbWVhbjpmdW5jdGlvbiBrcHQodCxlKXt2YXIgbixpPXQubGVuZ3RoLHI9aSxvPS0xLGE9MDtpZihudWxsPT1lKWZvcig7KytvPGk7KWlzTmFOKG49cnoodFtvXSkpPy0tcjphKz1uO2Vsc2UgZm9yKDsrK288aTspaXNOYU4obj1yeihlKHRbb10sbyx0KSkpPy0tcjphKz1uO2lmKHIpcmV0dXJuIGEvcn0sbWVkaWFuOmZ1bmN0aW9uIExwdCh0LGUpe3ZhciBuLGk9dC5sZW5ndGgscj0tMSxvPVtdO2lmKG51bGw9PWUpZm9yKDsrK3I8aTspaXNOYU4obj1yeih0W3JdKSl8fG8ucHVzaChuKTtlbHNlIGZvcig7KytyPGk7KWlzTmFOKG49cnooZSh0W3JdLHIsdCkpKXx8by5wdXNoKG4pO3JldHVybiBieihvLnNvcnQoSk8pLC41KX0sbWVyZ2U6ZnVuY3Rpb24gUHB0KHQpe2Zvcih2YXIgZSxuLGkscj10Lmxlbmd0aCxvPS0xLGE9MDsrK288cjspYSs9dFtvXS5sZW5ndGg7Zm9yKG49bmV3IEFycmF5KGEpOy0tcj49MDspZm9yKGU9KGk9dFtyXSkubGVuZ3RoOy0tZT49MDspblstLWFdPWlbZV07cmV0dXJuIG59LG1pbjp4eixwYWlyczpmdW5jdGlvbiBOcHQodCxlKXtudWxsPT1lJiYoZT1peik7Zm9yKHZhciBuPTAsaT10Lmxlbmd0aC0xLHI9dFswXSxvPW5ldyBBcnJheShpPDA/MDppKTtuPGk7KW9bbl09ZShyLHI9dFsrK25dKTtyZXR1cm4gb30scGVybXV0ZTpmdW5jdGlvbiBJcHQodCxlKXtmb3IodmFyIG49ZS5sZW5ndGgsaT1uZXcgQXJyYXkobik7bi0tOylpW25dPXRbZVtuXV07cmV0dXJuIGl9LHF1YW50aWxlOmJ6LHJhbmdlOnB6LHNjYW46ZnVuY3Rpb24gUnB0KHQsZSl7aWYobj10Lmxlbmd0aCl7dmFyIG4saSxyPTAsbz0wLGE9dFtvXTtmb3IobnVsbD09ZSYmKGU9Sk8pOysrcjxuOykoZShpPXRbcl0sYSk8MHx8MCE9PWUoYSxhKSkmJihhPWksbz1yKTtyZXR1cm4gMD09PWUoYSxhKT9vOnZvaWQgMH19LHNodWZmbGU6ZnVuY3Rpb24gT3B0KHQsZSxuKXtmb3IodmFyIGkscixvPShudWxsPT1uP3QubGVuZ3RoOm4pLShlPW51bGw9PWU/MDorZSk7bzspcj1NYXRoLnJhbmRvbSgpKm8tLXwwLGk9dFtvK2VdLHRbbytlXT10W3IrZV0sdFtyK2VdPWk7cmV0dXJuIHR9LHN1bTpmdW5jdGlvbiB6cHQodCxlKXt2YXIgbixpPXQubGVuZ3RoLHI9LTEsbz0wO2lmKG51bGw9PWUpZm9yKDsrK3I8aTspKG49K3Rbcl0pJiYobys9bik7ZWxzZSBmb3IoOysrcjxpOykobj0rZSh0W3JdLHIsdCkpJiYobys9bik7cmV0dXJuIG99LHRpY2tzOmZ1bmN0aW9uIERwdCh0LGUsbil7dmFyIGkscixvLGEscz0tMTtpZihuPStuLCh0PSt0KT09PShlPStlKSYmbj4wKXJldHVyblt0XTtpZigoaT1lPHQpJiYocj10LHQ9ZSxlPXIpLDA9PT0oYT1feih0LGUsbikpfHwhaXNGaW5pdGUoYSkpcmV0dXJuW107aWYoYT4wKWZvcih0PU1hdGguY2VpbCh0L2EpLGU9TWF0aC5mbG9vcihlL2EpLG89bmV3IEFycmF5KHI9TWF0aC5jZWlsKGUtdCsxKSk7KytzPHI7KW9bc109KHQrcykqYTtlbHNlIGZvcih0PU1hdGguZmxvb3IodCphKSxlPU1hdGguY2VpbChlKmEpLG89bmV3IEFycmF5KHI9TWF0aC5jZWlsKHQtZSsxKSk7KytzPHI7KW9bc109KHQtcykvYTtyZXR1cm4gaSYmby5yZXZlcnNlKCksb30sdGlja0luY3JlbWVudDpfeix0aWNrU3RlcDp5eix0cmFuc3Bvc2U6d3osdmFyaWFuY2U6b3osemlwOmZ1bmN0aW9uIEJwdCgpe3JldHVybiB3eihhcmd1bWVudHMpfSxheGlzVG9wOmZ1bmN0aW9uIEhwdCh0KXtyZXR1cm4gTnooMSx0KX0sYXhpc1JpZ2h0OmZ1bmN0aW9uIEZwdCh0KXtyZXR1cm4gTnooMix0KX0sYXhpc0JvdHRvbTpmdW5jdGlvbiBWcHQodCl7cmV0dXJuIE56KDMsdCl9LGF4aXNMZWZ0OmZ1bmN0aW9uIFVwdCh0KXtyZXR1cm4gTnooNCx0KX0sYnJ1c2g6ZnVuY3Rpb24ganB0KCl7cmV0dXJuIEVWKGZWKX0sYnJ1c2hYOmZ1bmN0aW9uIEdwdCgpe3JldHVybiBFVihkVil9LGJydXNoWTpmdW5jdGlvbiBXcHQoKXtyZXR1cm4gRVYocFYpfSxicnVzaFNlbGVjdGlvbjpmdW5jdGlvbiBxcHQodCl7dmFyIGU9dC5fX2JydXNoO3JldHVybiBlP2UuZGltLm91dHB1dChlLnNlbGVjdGlvbik6bnVsbH0sY2hvcmQ6ZnVuY3Rpb24gWXB0KCl7dmFyIHQ9MCxlPW51bGwsbj1udWxsLGk9bnVsbDtmdW5jdGlvbiByKHIpe3ZhciBvLGEscyxsLGMsdSxoPXIubGVuZ3RoLGQ9W10scD1DVihoKSxmPVtdLG09W10sZz1tLmdyb3Vwcz1uZXcgQXJyYXkoaCksXz1uZXcgQXJyYXkoaCpoKTtmb3Iobz0wLGM9LTE7KytjPGg7KXtmb3IoYT0wLHU9LTE7Kyt1PGg7KWErPXJbY11bdV07ZC5wdXNoKGEpLGYucHVzaChDVihoKSksbys9YX1mb3IoZSYmcC5zb3J0KChmdW5jdGlvbih0LG4pe3JldHVybiBlKGRbdF0sZFtuXSl9KSksbiYmZi5mb3JFYWNoKChmdW5jdGlvbih0LGUpe3Quc29ydCgoZnVuY3Rpb24odCxpKXtyZXR1cm4gbihyW2VdW3RdLHJbZV1baV0pfSkpfSkpLGw9KG89UlYoMCxJVi10KmgpL28pP3Q6SVYvaCxhPTAsYz0tMTsrK2M8aDspe2ZvcihzPWEsdT0tMTsrK3U8aDspe3ZhciB5PXBbY10sdj1mW3ldW3VdLGI9clt5XVt2XSx4PWEsdz1hKz1iKm87X1t2KmgreV09e2luZGV4Onksc3ViaW5kZXg6dixzdGFydEFuZ2xlOngsZW5kQW5nbGU6dyx2YWx1ZTpifX1nW3ldPXtpbmRleDp5LHN0YXJ0QW5nbGU6cyxlbmRBbmdsZTphLHZhbHVlOmRbeV19LGErPWx9Zm9yKGM9LTE7KytjPGg7KWZvcih1PWMtMTsrK3U8aDspe3ZhciBTPV9bdSpoK2NdLE09X1tjKmgrdV07KFMudmFsdWV8fE0udmFsdWUpJiZtLnB1c2goUy52YWx1ZTxNLnZhbHVlP3tzb3VyY2U6TSx0YXJnZXQ6U306e3NvdXJjZTpTLHRhcmdldDpNfSl9cmV0dXJuIGk/bS5zb3J0KGkpOm19cmV0dXJuIHIucGFkQW5nbGU9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9UlYoMCxlKSxyKTp0fSxyLnNvcnRHcm91cHM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9dCxyKTplfSxyLnNvcnRTdWJncm91cHM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49dCxyKTpufSxyLnNvcnRDaG9yZHM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG51bGw9PXQ/aT1udWxsOihpPU9WKHQpKS5fPXQscik6aSYmaS5ffSxyfSxyaWJib246ZnVuY3Rpb24gWHB0KCl7dmFyIHQ9R1YsZT1XVixuPXFWLGk9WVYscj1YVixvPW51bGw7ZnVuY3Rpb24gYSgpe3ZhciBhLHM9elYuY2FsbChhcmd1bWVudHMpLGw9dC5hcHBseSh0aGlzLHMpLGM9ZS5hcHBseSh0aGlzLHMpLHU9K24uYXBwbHkodGhpcywoc1swXT1sLHMpKSxoPWkuYXBwbHkodGhpcyxzKS1OVixkPXIuYXBwbHkodGhpcyxzKS1OVixwPXUqa1YoaCksZj11KkxWKGgpLG09K24uYXBwbHkodGhpcywoc1swXT1jLHMpKSxnPWkuYXBwbHkodGhpcyxzKS1OVixfPXIuYXBwbHkodGhpcyxzKS1OVjtpZihvfHwobz1hPWpWKCkpLG8ubW92ZVRvKHAsZiksby5hcmMoMCwwLHUsaCxkKSxoPT09ZyYmZD09PV98fChvLnF1YWRyYXRpY0N1cnZlVG8oMCwwLG0qa1YoZyksbSpMVihnKSksby5hcmMoMCwwLG0sZyxfKSksby5xdWFkcmF0aWNDdXJ2ZVRvKDAsMCxwLGYpLG8uY2xvc2VQYXRoKCksYSlyZXR1cm4gbz1udWxsLGErIiJ8fG51bGx9cmV0dXJuIGEucmFkaXVzPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6RFYoK3QpLGEpOm59LGEuc3RhcnRBbmdsZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0iZnVuY3Rpb24iPT10eXBlb2YgdD90OkRWKCt0KSxhKTppfSxhLmVuZEFuZ2xlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6RFYoK3QpLGEpOnJ9LGEuc291cmNlPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PWUsYSk6dH0sYS50YXJnZXQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9dCxhKTplfSxhLmNvbnRleHQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89bnVsbD09dD9udWxsOnQsYSk6b30sYX0sbmVzdDpmdW5jdGlvbiAkcHQoKXt2YXIgdCxlLG4saT1bXSxyPVtdO2Z1bmN0aW9uIG8obixyLGEscyl7aWYocj49aS5sZW5ndGgpcmV0dXJuIG51bGwhPXQmJm4uc29ydCh0KSxudWxsIT1lP2Uobik6bjtmb3IodmFyIGwsYyx1LGg9LTEsZD1uLmxlbmd0aCxwPWlbcisrXSxmPVpWKCksbT1hKCk7KytoPGQ7KSh1PWYuZ2V0KGw9cChjPW5baF0pKyIiKSk/dS5wdXNoKGMpOmYuc2V0KGwsW2NdKTtyZXR1cm4gZi5lYWNoKChmdW5jdGlvbih0LGUpe3MobSxlLG8odCxyLGEscykpfSkpLG19ZnVuY3Rpb24gYSh0LG4pe2lmKCsrbj5pLmxlbmd0aClyZXR1cm4gdDt2YXIgbyxzPXJbbi0xXTtyZXR1cm4gbnVsbCE9ZSYmbj49aS5sZW5ndGg/bz10LmVudHJpZXMoKToobz1bXSx0LmVhY2goKGZ1bmN0aW9uKHQsZSl7by5wdXNoKHtrZXk6ZSx2YWx1ZXM6YSh0LG4pfSl9KSkpLG51bGwhPXM/by5zb3J0KChmdW5jdGlvbih0LGUpe3JldHVybiBzKHQua2V5LGUua2V5KX0pKTpvfXJldHVybiBuPXtvYmplY3Q6ZnVuY3Rpb24odCl7cmV0dXJuIG8odCwwLEpWLFFWKX0sbWFwOmZ1bmN0aW9uKHQpe3JldHVybiBvKHQsMCx0VSxlVSl9LGVudHJpZXM6ZnVuY3Rpb24odCl7cmV0dXJuIGEobyh0LDAsdFUsZVUpLDApfSxrZXk6ZnVuY3Rpb24odCl7cmV0dXJuIGkucHVzaCh0KSxufSxzb3J0S2V5czpmdW5jdGlvbih0KXtyZXR1cm4gcltpLmxlbmd0aC0xXT10LG59LHNvcnRWYWx1ZXM6ZnVuY3Rpb24oZSl7cmV0dXJuIHQ9ZSxufSxyb2xsdXA6ZnVuY3Rpb24odCl7cmV0dXJuIGU9dCxufX19LHNldDpyVSxtYXA6WlYsa2V5czpmdW5jdGlvbiBLcHQodCl7dmFyIGU9W107Zm9yKHZhciBuIGluIHQpZS5wdXNoKG4pO3JldHVybiBlfSx2YWx1ZXM6ZnVuY3Rpb24gWnB0KHQpe3ZhciBlPVtdO2Zvcih2YXIgbiBpbiB0KWUucHVzaCh0W25dKTtyZXR1cm4gZX0sZW50cmllczpmdW5jdGlvbiBKcHQodCl7dmFyIGU9W107Zm9yKHZhciBuIGluIHQpZS5wdXNoKHtrZXk6bix2YWx1ZTp0W25dfSk7cmV0dXJuIGV9LGNvbG9yOndVLHJnYjpUVSxoc2w6TFUsbGFiOlZVLGhjbDpYVSxjdWJlaGVsaXg6b2osZGlzcGF0Y2g6bGosZHJhZzpmdW5jdGlvbiBRcHQoKXt2YXIgdCxlLG4saSxyPURHLG89QkcsYT1IRyxzPUZHLGw9e30sYz1maigic3RhcnQiLCJkcmFnIiwiZW5kIiksdT0wLGg9MDtmdW5jdGlvbiBkKHQpe3Qub24oIm1vdXNlZG93bi5kcmFnIixwKS5maWx0ZXIocykub24oInRvdWNoc3RhcnQuZHJhZyIsZykub24oInRvdWNobW92ZS5kcmFnIixfKS5vbigidG91Y2hlbmQuZHJhZyB0b3VjaGNhbmNlbC5kcmFnIix5KS5zdHlsZSgidG91Y2gtYWN0aW9uIiwibm9uZSIpLnN0eWxlKCItd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3IiLCJyZ2JhKDAsMCwwLDApIil9ZnVuY3Rpb24gcCgpe2lmKCFpJiZyLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl7dmFyIGE9digibW91c2UiLG8uYXBwbHkodGhpcyxhcmd1bWVudHMpLGtHLHRoaXMsYXJndW1lbnRzKTthJiYoVEcoZkcudmlldykub24oIm1vdXNlbW92ZS5kcmFnIixmLCEwKS5vbigibW91c2V1cC5kcmFnIixtLCEwKSxJRyhmRy52aWV3KSxQRygpLG49ITEsdD1mRy5jbGllbnRYLGU9ZkcuY2xpZW50WSxhKCJzdGFydCIpKX19ZnVuY3Rpb24gZigpe2lmKE5HKCksIW4pe3ZhciBpPWZHLmNsaWVudFgtdCxyPWZHLmNsaWVudFktZTtuPWkqaStyKnI+aH1sLm1vdXNlKCJkcmFnIil9ZnVuY3Rpb24gbSgpe1RHKGZHLnZpZXcpLm9uKCJtb3VzZW1vdmUuZHJhZyBtb3VzZXVwLmRyYWciLG51bGwpLFJHKGZHLnZpZXcsbiksTkcoKSxsLm1vdXNlKCJlbmQiKX1mdW5jdGlvbiBnKCl7aWYoci5hcHBseSh0aGlzLGFyZ3VtZW50cykpe3ZhciB0LGUsbj1mRy5jaGFuZ2VkVG91Y2hlcyxpPW8uYXBwbHkodGhpcyxhcmd1bWVudHMpLGE9bi5sZW5ndGg7Zm9yKHQ9MDt0PGE7Kyt0KShlPXYoblt0XS5pZGVudGlmaWVyLGksTEcsdGhpcyxhcmd1bWVudHMpKSYmKFBHKCksZSgic3RhcnQiKSl9fWZ1bmN0aW9uIF8oKXt2YXIgdCxlLG49ZkcuY2hhbmdlZFRvdWNoZXMsaT1uLmxlbmd0aDtmb3IodD0wO3Q8aTsrK3QpKGU9bFtuW3RdLmlkZW50aWZpZXJdKSYmKE5HKCksZSgiZHJhZyIpKX1mdW5jdGlvbiB5KCl7dmFyIHQsZSxuPWZHLmNoYW5nZWRUb3VjaGVzLHI9bi5sZW5ndGg7Zm9yKGkmJmNsZWFyVGltZW91dChpKSxpPXNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7aT1udWxsfSksNTAwKSx0PTA7dDxyOysrdCkoZT1sW25bdF0uaWRlbnRpZmllcl0pJiYoUEcoKSxlKCJlbmQiKSl9ZnVuY3Rpb24gdih0LGUsbixpLHIpe3ZhciBvLHMsaCxwPW4oZSx0KSxmPWMuY29weSgpO2lmKGJHKG5ldyB6RyhkLCJiZWZvcmVzdGFydCIsbyx0LHUscFswXSxwWzFdLDAsMCxmKSwoZnVuY3Rpb24oKXtyZXR1cm4gbnVsbCE9KGZHLnN1YmplY3Q9bz1hLmFwcGx5KGkscikpJiYocz1vLngtcFswXXx8MCxoPW8ueS1wWzFdfHwwLCEwKX0pKSlyZXR1cm4gZnVuY3Rpb24gYShjKXt2YXIgbSxnPXA7c3dpdGNoKGMpe2Nhc2Uic3RhcnQiOmxbdF09YSxtPXUrKzticmVhaztjYXNlImVuZCI6ZGVsZXRlIGxbdF0sLS11O2Nhc2UiZHJhZyI6cD1uKGUsdCksbT11fWJHKG5ldyB6RyhkLGMsbyx0LG0scFswXStzLHBbMV0raCxwWzBdLWdbMF0scFsxXS1nWzFdLGYpLGYuYXBwbHksZixbYyxpLHJdKX19cmV0dXJuIGQuZmlsdGVyPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6T0coISF0KSxkKTpyfSxkLmNvbnRhaW5lcj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz0iZnVuY3Rpb24iPT10eXBlb2YgdD90Ok9HKHQpLGQpOm99LGQuc3ViamVjdD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT0iZnVuY3Rpb24iPT10eXBlb2YgdD90Ok9HKHQpLGQpOmF9LGQudG91Y2hhYmxlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhzPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6T0coISF0KSxkKTpzfSxkLm9uPWZ1bmN0aW9uKCl7dmFyIHQ9Yy5vbi5hcHBseShjLGFyZ3VtZW50cyk7cmV0dXJuIHQ9PT1jP2Q6dH0sZC5jbGlja0Rpc3RhbmNlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhoPSh0PSt0KSp0LGQpOk1hdGguc3FydChoKX0sZH0sZHJhZ0Rpc2FibGU6SUcsZHJhZ0VuYWJsZTpSRyxkc3ZGb3JtYXQ6eFcsY3N2UGFyc2U6U1csY3N2UGFyc2VSb3dzOk1XLGNzdkZvcm1hdDpFVyxjc3ZGb3JtYXRSb3dzOlRXLHRzdlBhcnNlOkFXLHRzdlBhcnNlUm93czprVyx0c3ZGb3JtYXQ6TFcsdHN2Rm9ybWF0Um93czpQVyxlYXNlTGluZWFyOmZ1bmN0aW9uIHRmdCh0KXtyZXR1cm4rdH0sZWFzZVF1YWQ6TlcsZWFzZVF1YWRJbjpmdW5jdGlvbiBlZnQodCl7cmV0dXJuIHQqdH0sZWFzZVF1YWRPdXQ6ZnVuY3Rpb24gbmZ0KHQpe3JldHVybiB0KigyLXQpfSxlYXNlUXVhZEluT3V0Ok5XLGVhc2VDdWJpYzpJVyxlYXNlQ3ViaWNJbjpmdW5jdGlvbiBpZnQodCl7cmV0dXJuIHQqdCp0fSxlYXNlQ3ViaWNPdXQ6ZnVuY3Rpb24gcmZ0KHQpe3JldHVybi0tdCp0KnQrMX0sZWFzZUN1YmljSW5PdXQ6SVcsZWFzZVBvbHk6elcsZWFzZVBvbHlJbjpSVyxlYXNlUG9seU91dDpPVyxlYXNlUG9seUluT3V0OnpXLGVhc2VTaW46SFcsZWFzZVNpbkluOmZ1bmN0aW9uIG9mdCh0KXtyZXR1cm4gMS1NYXRoLmNvcyh0KkJXKX0sZWFzZVNpbk91dDpmdW5jdGlvbiBhZnQodCl7cmV0dXJuIE1hdGguc2luKHQqQlcpfSxlYXNlU2luSW5PdXQ6SFcsZWFzZUV4cDpGVyxlYXNlRXhwSW46ZnVuY3Rpb24gc2Z0KHQpe3JldHVybiBNYXRoLnBvdygyLDEwKnQtMTApfSxlYXNlRXhwT3V0OmZ1bmN0aW9uIGxmdCh0KXtyZXR1cm4gMS1NYXRoLnBvdygyLC0xMCp0KX0sZWFzZUV4cEluT3V0OkZXLGVhc2VDaXJjbGU6VlcsZWFzZUNpcmNsZUluOmZ1bmN0aW9uIGNmdCh0KXtyZXR1cm4gMS1NYXRoLnNxcnQoMS10KnQpfSxlYXNlQ2lyY2xlT3V0OmZ1bmN0aW9uIHVmdCh0KXtyZXR1cm4gTWF0aC5zcXJ0KDEtIC0tdCp0KX0sZWFzZUNpcmNsZUluT3V0OlZXLGVhc2VCb3VuY2U6R1csZWFzZUJvdW5jZUluOmZ1bmN0aW9uIGhmdCh0KXtyZXR1cm4gMS1HVygxLXQpfSxlYXNlQm91bmNlT3V0OkdXLGVhc2VCb3VuY2VJbk91dDpmdW5jdGlvbiBkZnQodCl7cmV0dXJuKCh0Kj0yKTw9MT8xLUdXKDEtdCk6R1codC0xKSsxKS8yfSxlYXNlQmFjazpYVyxlYXNlQmFja0luOnFXLGVhc2VCYWNrT3V0OllXLGVhc2VCYWNrSW5PdXQ6WFcsZWFzZUVsYXN0aWM6WlcsZWFzZUVsYXN0aWNJbjpLVyxlYXNlRWxhc3RpY091dDpaVyxlYXNlRWxhc3RpY0luT3V0OkpXLGZvcmNlQ2VudGVyOmZ1bmN0aW9uIHBmdCh0LGUpe3ZhciBuO2Z1bmN0aW9uIGkoKXt2YXIgaSxyLG89bi5sZW5ndGgsYT0wLHM9MDtmb3IoaT0wO2k8bzsrK2kpYSs9KHI9bltpXSkueCxzKz1yLnk7Zm9yKGE9YS9vLXQscz1zL28tZSxpPTA7aTxvOysraSkocj1uW2ldKS54LT1hLHIueS09c31yZXR1cm4gbnVsbD09dCYmKHQ9MCksbnVsbD09ZSYmKGU9MCksaS5pbml0aWFsaXplPWZ1bmN0aW9uKHQpe249dH0saS54PWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PStlLGkpOnR9LGkueT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT0rdCxpKTplfSxpfSxmb3JjZUNvbGxpZGU6ZnVuY3Rpb24gZmZ0KHQpe3ZhciBlLG4saT0xLHI9MTtmdW5jdGlvbiBvKCl7Zm9yKHZhciB0LG8scyxsLGMsdSxoLGQ9ZS5sZW5ndGgscD0wO3A8cjsrK3ApZm9yKG89b3EoZSxjcSx1cSkudmlzaXRBZnRlcihhKSx0PTA7dDxkOysrdCloPSh1PW5bKHM9ZVt0XSkuaW5kZXhdKSp1LGw9cy54K3MudngsYz1zLnkrcy52eSxvLnZpc2l0KGYpO2Z1bmN0aW9uIGYodCxlLG4scixvKXt2YXIgYT10LmRhdGEsZD10LnIscD11K2Q7aWYoIWEpcmV0dXJuIGU+bCtwfHxyPGwtcHx8bj5jK3B8fG88Yy1wO2lmKGEuaW5kZXg+cy5pbmRleCl7dmFyIGY9bC1hLngtYS52eCxtPWMtYS55LWEudnksZz1mKmYrbSptO2c8cCpwJiYoMD09PWYmJihnKz0oZj10cSgpKSpmKSwwPT09bSYmKGcrPShtPXRxKCkpKm0pLGc9KHAtKGc9TWF0aC5zcXJ0KGcpKSkvZyppLHMudngrPShmKj1nKSoocD0oZCo9ZCkvKGgrZCkpLHMudnkrPShtKj1nKSpwLGEudngtPWYqKHA9MS1wKSxhLnZ5LT1tKnApfX19ZnVuY3Rpb24gYSh0KXtpZih0LmRhdGEpcmV0dXJuIHQucj1uW3QuZGF0YS5pbmRleF07Zm9yKHZhciBlPXQucj0wO2U8NDsrK2UpdFtlXSYmdFtlXS5yPnQuciYmKHQucj10W2VdLnIpfWZ1bmN0aW9uIHMoKXtpZihlKXt2YXIgaSxyLG89ZS5sZW5ndGg7Zm9yKG49bmV3IEFycmF5KG8pLGk9MDtpPG87KytpKW5bKHI9ZVtpXSkuaW5kZXhdPSt0KHIsaSxlKX19cmV0dXJuImZ1bmN0aW9uIiE9dHlwZW9mIHQmJih0PVFXKG51bGw9PXQ/MTordCkpLG8uaW5pdGlhbGl6ZT1mdW5jdGlvbih0KXtlPXQscygpfSxvLml0ZXJhdGlvbnM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9K3Qsbyk6cn0sby5zdHJlbmd0aD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0rdCxvKTppfSxvLnJhZGl1cz1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0iZnVuY3Rpb24iPT10eXBlb2YgZT9lOlFXKCtlKSxzKCksbyk6dH0sb30sZm9yY2VMaW5rOmZ1bmN0aW9uIG1mdCh0KXt2YXIgZSxuLGkscixvLGE9THEscz1mdW5jdGlvbiBsKHQpe3JldHVybiAxL01hdGgubWluKHJbdC5zb3VyY2UuaW5kZXhdLHJbdC50YXJnZXQuaW5kZXhdKX0sYz1RVygzMCksdT0xO2Z1bmN0aW9uIGgoaSl7Zm9yKHZhciByPTAsYT10Lmxlbmd0aDtyPHU7KytyKWZvcih2YXIgcyxsLGMsaCxkLHAsZixtPTA7bTxhOysrbSloPShjPShzPXRbbV0pLnRhcmdldCkueCtjLnZ4LShsPXMuc291cmNlKS54LWwudnh8fHRxKCksZD1jLnkrYy52eS1sLnktbC52eXx8dHEoKSxkKj1wPSgocD1NYXRoLnNxcnQoaCpoK2QqZCkpLW5bbV0pL3AqaSplW21dLGMudngtPShoKj1wKSooZj1vW21dKSxjLnZ5LT1kKmYsbC52eCs9aCooZj0xLWYpLGwudnkrPWQqZn1mdW5jdGlvbiBkKCl7aWYoaSl7dmFyIHMsbCxjPWkubGVuZ3RoLHU9dC5sZW5ndGgsaD1DcShpLGEpO2ZvcihzPTAscj1uZXcgQXJyYXkoYyk7czx1OysrcykobD10W3NdKS5pbmRleD1zLCJvYmplY3QiIT10eXBlb2YgbC5zb3VyY2UmJihsLnNvdXJjZT1QcShoLGwuc291cmNlKSksIm9iamVjdCIhPXR5cGVvZiBsLnRhcmdldCYmKGwudGFyZ2V0PVBxKGgsbC50YXJnZXQpKSxyW2wuc291cmNlLmluZGV4XT0ocltsLnNvdXJjZS5pbmRleF18fDApKzEscltsLnRhcmdldC5pbmRleF09KHJbbC50YXJnZXQuaW5kZXhdfHwwKSsxO2ZvcihzPTAsbz1uZXcgQXJyYXkodSk7czx1OysrcylvW3NdPXJbKGw9dFtzXSkuc291cmNlLmluZGV4XS8ocltsLnNvdXJjZS5pbmRleF0rcltsLnRhcmdldC5pbmRleF0pO2U9bmV3IEFycmF5KHUpLHAoKSxuPW5ldyBBcnJheSh1KSxmKCl9fWZ1bmN0aW9uIHAoKXtpZihpKWZvcih2YXIgbj0wLHI9dC5sZW5ndGg7bjxyOysrbillW25dPStzKHRbbl0sbix0KX1mdW5jdGlvbiBmKCl7aWYoaSlmb3IodmFyIGU9MCxyPXQubGVuZ3RoO2U8cjsrK2UpbltlXT0rYyh0W2VdLGUsdCl9cmV0dXJuIG51bGw9PXQmJih0PVtdKSxoLmluaXRpYWxpemU9ZnVuY3Rpb24odCl7aT10LGQoKX0saC5saW5rcz1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD1lLGQoKSxoKTp0fSxoLmlkPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPXQsaCk6YX0saC5pdGVyYXRpb25zPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh1PSt0LGgpOnV9LGguc3RyZW5ndGg9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpRVygrdCkscCgpLGgpOnN9LGguZGlzdGFuY2U9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGM9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpRVygrdCksZigpLGgpOmN9LGh9LGZvcmNlTWFueUJvZHk6ZnVuY3Rpb24gZ2Z0KCl7dmFyIHQsZSxuLGkscj1RVygtMzApLG89MSxhPTEvMCxzPS44MTtmdW5jdGlvbiBsKGkpe3ZhciByLG89dC5sZW5ndGgsYT1vcSh0LGVZLG5ZKS52aXNpdEFmdGVyKHUpO2ZvcihuPWkscj0wO3I8bzsrK3IpZT10W3JdLGEudmlzaXQoaCl9ZnVuY3Rpb24gYygpe2lmKHQpe3ZhciBlLG4sbz10Lmxlbmd0aDtmb3IoaT1uZXcgQXJyYXkobyksZT0wO2U8bzsrK2UpaVsobj10W2VdKS5pbmRleF09K3IobixlLHQpfX1mdW5jdGlvbiB1KHQpe3ZhciBlLG4scixvLGEscz0wLGw9MDtpZih0Lmxlbmd0aCl7Zm9yKHI9bz1hPTA7YTw0OysrYSkoZT10W2FdKSYmKG49TWF0aC5hYnMoZS52YWx1ZSkpJiYocys9ZS52YWx1ZSxsKz1uLHIrPW4qZS54LG8rPW4qZS55KTt0Lng9ci9sLHQueT1vL2x9ZWxzZXsoZT10KS54PWUuZGF0YS54LGUueT1lLmRhdGEueTtkb3tzKz1pW2UuZGF0YS5pbmRleF19d2hpbGUoZT1lLm5leHQpfXQudmFsdWU9c31mdW5jdGlvbiBoKHQscixsLGMpe2lmKCF0LnZhbHVlKXJldHVybiEwO3ZhciB1PXQueC1lLngsaD10LnktZS55LGQ9Yy1yLHA9dSp1K2gqaDtpZihkKmQvczxwKXJldHVybiBwPGEmJigwPT09dSYmKHArPSh1PXRxKCkpKnUpLDA9PT1oJiYocCs9KGg9dHEoKSkqaCkscDxvJiYocD1NYXRoLnNxcnQobypwKSksZS52eCs9dSp0LnZhbHVlKm4vcCxlLnZ5Kz1oKnQudmFsdWUqbi9wKSwhMDtpZighKHQubGVuZ3RofHxwPj1hKSl7KHQuZGF0YSE9PWV8fHQubmV4dCkmJigwPT09dSYmKHArPSh1PXRxKCkpKnUpLDA9PT1oJiYocCs9KGg9dHEoKSkqaCkscDxvJiYocD1NYXRoLnNxcnQobypwKSkpO2Rve3QuZGF0YSE9PWUmJihlLnZ4Kz11KihkPWlbdC5kYXRhLmluZGV4XSpuL3ApLGUudnkrPWgqZCl9d2hpbGUodD10Lm5leHQpfX1yZXR1cm4gbC5pbml0aWFsaXplPWZ1bmN0aW9uKGUpe3Q9ZSxjKCl9LGwuc3RyZW5ndGg9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpRVygrdCksYygpLGwpOnJ9LGwuZGlzdGFuY2VNaW49ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89dCp0LGwpOk1hdGguc3FydChvKX0sbC5kaXN0YW5jZU1heD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT10KnQsbCk6TWF0aC5zcXJ0KGEpfSxsLnRoZXRhPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhzPXQqdCxsKTpNYXRoLnNxcnQocyl9LGx9LGZvcmNlUmFkaWFsOmZ1bmN0aW9uIF9mdCh0LGUsbil7dmFyIGkscixvLGE9UVcoLjEpO2Z1bmN0aW9uIHModCl7Zm9yKHZhciBhPTAscz1pLmxlbmd0aDthPHM7KythKXt2YXIgbD1pW2FdLGM9bC54LWV8fDFlLTYsdT1sLnktbnx8MWUtNixoPU1hdGguc3FydChjKmMrdSp1KSxkPShvW2FdLWgpKnJbYV0qdC9oO2wudngrPWMqZCxsLnZ5Kz11KmR9fWZ1bmN0aW9uIGwoKXtpZihpKXt2YXIgZSxuPWkubGVuZ3RoO2ZvcihyPW5ldyBBcnJheShuKSxvPW5ldyBBcnJheShuKSxlPTA7ZTxuOysrZSlvW2VdPSt0KGlbZV0sZSxpKSxyW2VdPWlzTmFOKG9bZV0pPzA6K2EoaVtlXSxlLGkpfX1yZXR1cm4iZnVuY3Rpb24iIT10eXBlb2YgdCYmKHQ9UVcoK3QpKSxudWxsPT1lJiYoZT0wKSxudWxsPT1uJiYobj0wKSxzLmluaXRpYWxpemU9ZnVuY3Rpb24odCl7aT10LGwoKX0scy5zdHJlbmd0aD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT0iZnVuY3Rpb24iPT10eXBlb2YgdD90OlFXKCt0KSxsKCkscyk6YX0scy5yYWRpdXM9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZTpRVygrZSksbCgpLHMpOnR9LHMueD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT0rdCxzKTplfSxzLnk9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49K3Qscyk6bn0sc30sZm9yY2VTaW11bGF0aW9uOmZ1bmN0aW9uIHlmdCh0KXt2YXIgZSxuPTEsaT0uMDAxLHI9MS1NYXRoLnBvdyhpLDEvMzAwKSxvPTAsYT0uNixzPUNxKCksbD1acSh1KSxjPUlxKCJ0aWNrIiwiZW5kIik7ZnVuY3Rpb24gdSgpe2goKSxjLmNhbGwoInRpY2siLGUpLG48aSYmKGwuc3RvcCgpLGMuY2FsbCgiZW5kIixlKSl9ZnVuY3Rpb24gaCgpe3ZhciBlLGksbD10Lmxlbmd0aDtmb3Iobis9KG8tbikqcixzLmVhY2goKGZ1bmN0aW9uKHQpe3Qobil9KSksZT0wO2U8bDsrK2UpbnVsbD09KGk9dFtlXSkuZng/aS54Kz1pLnZ4Kj1hOihpLng9aS5meCxpLnZ4PTApLG51bGw9PWkuZnk/aS55Kz1pLnZ5Kj1hOihpLnk9aS5meSxpLnZ5PTApfWZ1bmN0aW9uIGQoKXtmb3IodmFyIGUsbj0wLGk9dC5sZW5ndGg7bjxpOysrbil7aWYoKGU9dFtuXSkuaW5kZXg9bixpc05hTihlLngpfHxpc05hTihlLnkpKXt2YXIgcj0xMCpNYXRoLnNxcnQobiksbz1uKnJZO2UueD1yKk1hdGguY29zKG8pLGUueT1yKk1hdGguc2luKG8pfShpc05hTihlLnZ4KXx8aXNOYU4oZS52eSkpJiYoZS52eD1lLnZ5PTApfX1mdW5jdGlvbiBwKGUpe3JldHVybiBlLmluaXRpYWxpemUmJmUuaW5pdGlhbGl6ZSh0KSxlfXJldHVybiBudWxsPT10JiYodD1bXSksZCgpLGU9e3RpY2s6aCxyZXN0YXJ0OmZ1bmN0aW9uKCl7cmV0dXJuIGwucmVzdGFydCh1KSxlfSxzdG9wOmZ1bmN0aW9uKCl7cmV0dXJuIGwuc3RvcCgpLGV9LG5vZGVzOmZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PW4sZCgpLHMuZWFjaChwKSxlKTp0fSxhbHBoYTpmdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj0rdCxlKTpufSxhbHBoYU1pbjpmdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0rdCxlKTppfSxhbHBoYURlY2F5OmZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPSt0LGUpOityfSxhbHBoYVRhcmdldDpmdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz0rdCxlKTpvfSx2ZWxvY2l0eURlY2F5OmZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPTEtdCxlKToxLWF9LGZvcmNlOmZ1bmN0aW9uKHQsbil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg+MT8obnVsbD09bj9zLnJlbW92ZSh0KTpzLnNldCh0LHAobikpLGUpOnMuZ2V0KHQpfSxmaW5kOmZ1bmN0aW9uKGUsbixpKXt2YXIgcixvLGEscyxsLGM9MCx1PXQubGVuZ3RoO2ZvcihudWxsPT1pP2k9MS8wOmkqPWksYz0wO2M8dTsrK2MpKGE9KHI9ZS0ocz10W2NdKS54KSpyKyhvPW4tcy55KSpvKTxpJiYobD1zLGk9YSk7cmV0dXJuIGx9LG9uOmZ1bmN0aW9uKHQsbil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg+MT8oYy5vbih0LG4pLGUpOmMub24odCl9fX0sZm9yY2VYOmZ1bmN0aW9uIHZmdCh0KXt2YXIgZSxuLGkscj1RVyguMSk7ZnVuY3Rpb24gbyh0KXtmb3IodmFyIHIsbz0wLGE9ZS5sZW5ndGg7bzxhOysrbykocj1lW29dKS52eCs9KGlbb10tci54KSpuW29dKnR9ZnVuY3Rpb24gYSgpe2lmKGUpe3ZhciBvLGE9ZS5sZW5ndGg7Zm9yKG49bmV3IEFycmF5KGEpLGk9bmV3IEFycmF5KGEpLG89MDtvPGE7KytvKW5bb109aXNOYU4oaVtvXT0rdChlW29dLG8sZSkpPzA6K3IoZVtvXSxvLGUpfX1yZXR1cm4iZnVuY3Rpb24iIT10eXBlb2YgdCYmKHQ9UVcobnVsbD09dD8wOit0KSksby5pbml0aWFsaXplPWZ1bmN0aW9uKHQpe2U9dCxhKCl9LG8uc3RyZW5ndGg9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpRVygrdCksYSgpLG8pOnJ9LG8ueD1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0iZnVuY3Rpb24iPT10eXBlb2YgZT9lOlFXKCtlKSxhKCksbyk6dH0sb30sZm9yY2VZOmZ1bmN0aW9uIGJmdCh0KXt2YXIgZSxuLGkscj1RVyguMSk7ZnVuY3Rpb24gbyh0KXtmb3IodmFyIHIsbz0wLGE9ZS5sZW5ndGg7bzxhOysrbykocj1lW29dKS52eSs9KGlbb10tci55KSpuW29dKnR9ZnVuY3Rpb24gYSgpe2lmKGUpe3ZhciBvLGE9ZS5sZW5ndGg7Zm9yKG49bmV3IEFycmF5KGEpLGk9bmV3IEFycmF5KGEpLG89MDtvPGE7KytvKW5bb109aXNOYU4oaVtvXT0rdChlW29dLG8sZSkpPzA6K3IoZVtvXSxvLGUpfX1yZXR1cm4iZnVuY3Rpb24iIT10eXBlb2YgdCYmKHQ9UVcobnVsbD09dD8wOit0KSksby5pbml0aWFsaXplPWZ1bmN0aW9uKHQpe2U9dCxhKCl9LG8uc3RyZW5ndGg9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpRVygrdCksYSgpLG8pOnJ9LG8ueT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0iZnVuY3Rpb24iPT10eXBlb2YgZT9lOlFXKCtlKSxhKCksbyk6dH0sb30sZm9ybWF0RGVmYXVsdExvY2FsZTpiWSxnZXQgZm9ybWF0KCl7cmV0dXJuIGdZfSxnZXQgZm9ybWF0UHJlZml4KCl7cmV0dXJuIF9ZfSxmb3JtYXRMb2NhbGU6dlksZm9ybWF0U3BlY2lmaWVyOmRZLHByZWNpc2lvbkZpeGVkOmZ1bmN0aW9uIHhmdCh0KXtyZXR1cm4gTWF0aC5tYXgoMCwtYVkoTWF0aC5hYnModCkpKX0scHJlY2lzaW9uUHJlZml4OmZ1bmN0aW9uIHdmdCh0LGUpe3JldHVybiBNYXRoLm1heCgwLDMqTWF0aC5tYXgoLTgsTWF0aC5taW4oOCxNYXRoLmZsb29yKGFZKGUpLzMpKSktYVkoTWF0aC5hYnModCkpKX0scHJlY2lzaW9uUm91bmQ6ZnVuY3Rpb24gU2Z0KHQsZSl7cmV0dXJuIHQ9TWF0aC5hYnModCksZT1NYXRoLmFicyhlKS10LE1hdGgubWF4KDAsYVkoZSktYVkodCkpKzF9LGdlb0FyZWE6ZnVuY3Rpb24gTWZ0KHQpe3JldHVybiBhWC5yZXNldCgpLFFZKHQsc1gpLDIqYVh9LGdlb0JvdW5kczpmdW5jdGlvbiBFZnQodCl7dmFyIGUsbixpLHIsbyxhLHM7aWYod1g9eFg9LSh2WD1iWD0xLzApLENYPVtdLFFZKHQscVgpLG49Q1gubGVuZ3RoKXtmb3IoQ1guc29ydChlJCksZT0xLG89W2k9Q1hbMF1dO2U8bjsrK2UpbiQoaSwocj1DWFtlXSlbMF0pfHxuJChpLHJbMV0pPyh0JChpWzBdLHJbMV0pPnQkKGlbMF0saVsxXSkmJihpWzFdPXJbMV0pLHQkKHJbMF0saVsxXSk+dCQoaVswXSxpWzFdKSYmKGlbMF09clswXSkpOm8ucHVzaChpPXIpO2ZvcihhPS0xLzAsZT0wLGk9b1tuPW8ubGVuZ3RoLTFdO2U8PW47aT1yLCsrZSkocz10JChpWzFdLChyPW9bZV0pWzBdKSk+YSYmKGE9cyx2WD1yWzBdLHhYPWlbMV0pfXJldHVybiBDWD1BWD1udWxsLHZYPT09MS8wfHxiWD09PTEvMD9bW05hTixOYU5dLFtOYU4sTmFOXV06W1t2WCxiWF0sW3hYLHdYXV19LGdlb0NlbnRyb2lkOmZ1bmN0aW9uIFRmdCh0KXtrWD1MWD1QWD1OWD1JWD1SWD1PWD16WD1EWD1CWD1IWD0wLFFZKHQsaSQpO3ZhciBlPURYLG49QlgsaT1IWCxyPWUqZStuKm4raSppO3JldHVybiByPDFlLTEyJiYoZT1SWCxuPU9YLGk9elgsTFg8RVkmJihlPVBYLG49TlgsaT1JWCksKHI9ZSplK24qbitpKmkpPDFlLTEyKT9bTmFOLE5hTl06W1JZKG4sZSkqTFksV1koaS9VWShyKSkqTFldfSxnZW9DaXJjbGU6ZnVuY3Rpb24gQ2Z0KCl7dmFyIHQsZSxuPWYkKFswLDBdKSxpPWYkKDkwKSxyPWYkKDYpLG89e3BvaW50OmZ1bmN0aW9uIGEobixpKXt0LnB1c2gobj1lKG4saSkpLG5bMF0qPUxZLG5bMV0qPUxZfX07ZnVuY3Rpb24gcygpe3ZhciBhPW4uYXBwbHkodGhpcyxhcmd1bWVudHMpLHM9aS5hcHBseSh0aGlzLGFyZ3VtZW50cykqUFksbD1yLmFwcGx5KHRoaXMsYXJndW1lbnRzKSpQWTtyZXR1cm4gdD1bXSxlPV8kKC1hWzBdKlBZLC1hWzFdKlBZLDApLmludmVydCx3JChvLHMsbCwxKSxhPXt0eXBlOiJQb2x5Z29uIixjb29yZGluYXRlczpbdF19LHQ9ZT1udWxsLGF9cmV0dXJuIHMuY2VudGVyPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6ZiQoWyt0WzBdLCt0WzFdXSkscyk6bn0scy5yYWRpdXM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpmJCgrdCkscyk6aX0scy5wcmVjaXNpb249ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpmJCgrdCkscyk6cn0sc30sZ2VvQ2xpcEFudGltZXJpZGlhbjpCJCxnZW9DbGlwQ2lyY2xlOlYkLGdlb0NsaXBFeHRlbnQ6ZnVuY3Rpb24gQWZ0KCl7dmFyIHQsZSxuLGk9MCxyPTAsbz05NjAsYT01MDA7cmV0dXJuIG49e3N0cmVhbTpmdW5jdGlvbihuKXtyZXR1cm4gdCYmZT09PW4/dDp0PUckKGkscixvLGEpKGU9bil9LGV4dGVudDpmdW5jdGlvbihzKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0rc1swXVswXSxyPStzWzBdWzFdLG89K3NbMV1bMF0sYT0rc1sxXVsxXSx0PWU9bnVsbCxuKTpbW2kscl0sW28sYV1dfX19LGdlb0NsaXBSZWN0YW5nbGU6RyQsZ2VvQ29udGFpbnM6ZnVuY3Rpb24ga2Z0KHQsZSl7cmV0dXJuKHQmJnJLLmhhc093blByb3BlcnR5KHQudHlwZSk/cktbdC50eXBlXTphSykodCxlKX0sZ2VvRGlzdGFuY2U6aUssZ2VvR3JhdGljdWxlOmZLLGdlb0dyYXRpY3VsZTEwOmZ1bmN0aW9uIExmdCgpe3JldHVybiBmSygpKCl9LGdlb0ludGVycG9sYXRlOmZ1bmN0aW9uIFBmdCh0LGUpe3ZhciBuPXRbMF0qUFksaT10WzFdKlBZLHI9ZVswXSpQWSxvPWVbMV0qUFksYT1PWShpKSxzPUZZKGkpLGw9T1kobyksYz1GWShvKSx1PWEqT1kobiksaD1hKkZZKG4pLGQ9bCpPWShyKSxwPWwqRlkociksZj0yKldZKFVZKHFZKG8taSkrYSpsKnFZKHItbikpKSxtPUZZKGYpLGc9Zj9mdW5jdGlvbih0KXt2YXIgZT1GWSh0Kj1mKS9tLG49RlkoZi10KS9tLGk9bip1K2UqZCxyPW4qaCtlKnAsbz1uKnMrZSpjO3JldHVybltSWShyLGkpKkxZLFJZKG8sVVkoaSppK3IqcikpKkxZXX06ZnVuY3Rpb24oKXtyZXR1cm5bbipMWSxpKkxZXX07cmV0dXJuIGcuZGlzdGFuY2U9ZixnfSxnZW9MZW5ndGg6dEssZ2VvUGF0aDpmdW5jdGlvbiBOZnQodCxlKXt2YXIgbixpLHI9NC41O2Z1bmN0aW9uIG8odCl7cmV0dXJuIHQmJigiZnVuY3Rpb24iPT10eXBlb2YgciYmaS5wb2ludFJhZGl1cygrci5hcHBseSh0aGlzLGFyZ3VtZW50cykpLFFZKHQsbihpKSkpLGkucmVzdWx0KCl9cmV0dXJuIG8uYXJlYT1mdW5jdGlvbih0KXtyZXR1cm4gUVkodCxuKHdLKSksd0sucmVzdWx0KCl9LG8ubWVhc3VyZT1mdW5jdGlvbih0KXtyZXR1cm4gUVkodCxuKGNaKSksY1oucmVzdWx0KCl9LG8uYm91bmRzPWZ1bmN0aW9uKHQpe3JldHVybiBRWSh0LG4oUEspKSxQSy5yZXN1bHQoKX0sby5jZW50cm9pZD1mdW5jdGlvbih0KXtyZXR1cm4gUVkodCxuKHFLKSkscUsucmVzdWx0KCl9LG8ucHJvamVjdGlvbj1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj1udWxsPT1lPyh0PW51bGwsbUspOih0PWUpLnN0cmVhbSxvKTp0fSxvLmNvbnRleHQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9bnVsbD09dD8oZT1udWxsLG5ldyBkWik6bmV3IG5aKGU9dCksImZ1bmN0aW9uIiE9dHlwZW9mIHImJmkucG9pbnRSYWRpdXMociksbyk6ZX0sby5wb2ludFJhZGl1cz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj0iZnVuY3Rpb24iPT10eXBlb2YgdD90OihpLnBvaW50UmFkaXVzKCt0KSwrdCksbyk6cn0sby5wcm9qZWN0aW9uKHQpLmNvbnRleHQoZSl9LGdlb0FsYmVyczprWixnZW9BbGJlcnNVc2E6ZnVuY3Rpb24gSWZ0KCl7dmFyIHQsZSxuLGkscixvLGE9a1ooKSxzPUFaKCkucm90YXRlKFsxNTQsMF0pLmNlbnRlcihbLTIsNTguNV0pLnBhcmFsbGVscyhbNTUsNjVdKSxsPUFaKCkucm90YXRlKFsxNTcsMF0pLmNlbnRlcihbLTMsMTkuOV0pLnBhcmFsbGVscyhbOCwxOF0pLGM9e3BvaW50OmZ1bmN0aW9uKHQsZSl7bz1bdCxlXX19O2Z1bmN0aW9uIHUodCl7dmFyIGU9dFswXSxhPXRbMV07cmV0dXJuIG89bnVsbCxuLnBvaW50KGUsYSksb3x8KGkucG9pbnQoZSxhKSxvKXx8KHIucG9pbnQoZSxhKSxvKX1mdW5jdGlvbiBoKCl7cmV0dXJuIHQ9ZT1udWxsLHV9cmV0dXJuIHUuaW52ZXJ0PWZ1bmN0aW9uKHQpe3ZhciBlPWEuc2NhbGUoKSxuPWEudHJhbnNsYXRlKCksaT0odFswXS1uWzBdKS9lLHI9KHRbMV0tblsxXSkvZTtyZXR1cm4ocj49LjEyJiZyPC4yMzQmJmk+PS0uNDI1JiZpPC0uMjE0P3M6cj49LjE2NiYmcjwuMjM0JiZpPj0tLjIxNCYmaTwtLjExNT9sOmEpLmludmVydCh0KX0sdS5zdHJlYW09ZnVuY3Rpb24obil7cmV0dXJuIHQmJmU9PT1uP3Q6dD0oZnVuY3Rpb24gaSh0KXt2YXIgZT10Lmxlbmd0aDtyZXR1cm57cG9pbnQ6ZnVuY3Rpb24obixpKXtmb3IodmFyIHI9LTE7KytyPGU7KXRbcl0ucG9pbnQobixpKX0sc3BoZXJlOmZ1bmN0aW9uKCl7Zm9yKHZhciBuPS0xOysrbjxlOyl0W25dLnNwaGVyZSgpfSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXtmb3IodmFyIG49LTE7KytuPGU7KXRbbl0ubGluZVN0YXJ0KCl9LGxpbmVFbmQ6ZnVuY3Rpb24oKXtmb3IodmFyIG49LTE7KytuPGU7KXRbbl0ubGluZUVuZCgpfSxwb2x5Z29uU3RhcnQ6ZnVuY3Rpb24oKXtmb3IodmFyIG49LTE7KytuPGU7KXRbbl0ucG9seWdvblN0YXJ0KCl9LHBvbHlnb25FbmQ6ZnVuY3Rpb24oKXtmb3IodmFyIG49LTE7KytuPGU7KXRbbl0ucG9seWdvbkVuZCgpfX19KShbYS5zdHJlYW0oZT1uKSxzLnN0cmVhbShuKSxsLnN0cmVhbShuKV0pfSx1LnByZWNpc2lvbj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYS5wcmVjaXNpb24odCkscy5wcmVjaXNpb24odCksbC5wcmVjaXNpb24odCksaCgpKTphLnByZWNpc2lvbigpfSx1LnNjYWxlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhLnNjYWxlKHQpLHMuc2NhbGUoLjM1KnQpLGwuc2NhbGUodCksdS50cmFuc2xhdGUoYS50cmFuc2xhdGUoKSkpOmEuc2NhbGUoKX0sdS50cmFuc2xhdGU9ZnVuY3Rpb24odCl7aWYoIWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGEudHJhbnNsYXRlKCk7dmFyIGU9YS5zY2FsZSgpLG89K3RbMF0sdT0rdFsxXTtyZXR1cm4gbj1hLnRyYW5zbGF0ZSh0KS5jbGlwRXh0ZW50KFtbby0uNDU1KmUsdS0uMjM4KmVdLFtvKy40NTUqZSx1Ky4yMzgqZV1dKS5zdHJlYW0oYyksaT1zLnRyYW5zbGF0ZShbby0uMzA3KmUsdSsuMjAxKmVdKS5jbGlwRXh0ZW50KFtbby0uNDI1KmUrRVksdSsuMTIqZStFWV0sW28tLjIxNCplLUVZLHUrLjIzNCplLUVZXV0pLnN0cmVhbShjKSxyPWwudHJhbnNsYXRlKFtvLS4yMDUqZSx1Ky4yMTIqZV0pLmNsaXBFeHRlbnQoW1tvLS4yMTQqZStFWSx1Ky4xNjYqZStFWV0sW28tLjExNSplLUVZLHUrLjIzNCplLUVZXV0pLnN0cmVhbShjKSxoKCl9LHUuZml0RXh0ZW50PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIF9aKHUsdCxlKX0sdS5maXRTaXplPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHlaKHUsdCxlKX0sdS5maXRXaWR0aD1mdW5jdGlvbih0LGUpe3JldHVybiB2Wih1LHQsZSl9LHUuZml0SGVpZ2h0PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGJaKHUsdCxlKX0sdS5zY2FsZSgxMDcwKX0sZ2VvQXppbXV0aGFsRXF1YWxBcmVhOmZ1bmN0aW9uIFJmdCgpe3JldHVybiBNWihOWikuc2NhbGUoMTI0Ljc1KS5jbGlwQW5nbGUoMTc5Ljk5OSl9LGdlb0F6aW11dGhhbEVxdWFsQXJlYVJhdzpOWixnZW9BemltdXRoYWxFcXVpZGlzdGFudDpmdW5jdGlvbiBPZnQoKXtyZXR1cm4gTVooSVopLnNjYWxlKDc5LjQxODgpLmNsaXBBbmdsZSgxNzkuOTk5KX0sZ2VvQXppbXV0aGFsRXF1aWRpc3RhbnRSYXc6SVosZ2VvQ29uaWNDb25mb3JtYWw6ZnVuY3Rpb24gemZ0KCl7cmV0dXJuIFRaKERaKS5zY2FsZSgxMDkuNSkucGFyYWxsZWxzKFszMCwzMF0pfSxnZW9Db25pY0NvbmZvcm1hbFJhdzpEWixnZW9Db25pY0VxdWFsQXJlYTpBWixnZW9Db25pY0VxdWFsQXJlYVJhdzpDWixnZW9Db25pY0VxdWlkaXN0YW50OmZ1bmN0aW9uIERmdCgpe3JldHVybiBUWihIWikuc2NhbGUoMTMxLjE1NCkuY2VudGVyKFswLDEzLjkzODldKX0sZ2VvQ29uaWNFcXVpZGlzdGFudFJhdzpIWixnZW9FcXVpcmVjdGFuZ3VsYXI6ZnVuY3Rpb24gQmZ0KCl7cmV0dXJuIE1aKEJaKS5zY2FsZSgxNTIuNjMpfSxnZW9FcXVpcmVjdGFuZ3VsYXJSYXc6QlosZ2VvR25vbW9uaWM6ZnVuY3Rpb24gSGZ0KCl7cmV0dXJuIE1aKEZaKS5zY2FsZSgxNDQuMDQ5KS5jbGlwQW5nbGUoNjApfSxnZW9Hbm9tb25pY1JhdzpGWixnZW9JZGVudGl0eTpmdW5jdGlvbiBGZnQoKXt2YXIgdCxlLG4saSxyLG8sYT0xLHM9MCxsPTAsYz0xLHU9MSxoPW1LLGQ9bnVsbCxwPW1LO2Z1bmN0aW9uIGYoKXtyZXR1cm4gaT1yPW51bGwsb31yZXR1cm4gbz17c3RyZWFtOmZ1bmN0aW9uKHQpe3JldHVybiBpJiZyPT09dD9pOmk9aChwKHI9dCkpfSxwb3N0Y2xpcDpmdW5jdGlvbihpKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocD1pLGQ9dD1lPW49bnVsbCxmKCkpOnB9LGNsaXBFeHRlbnQ6ZnVuY3Rpb24oaSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHA9bnVsbD09aT8oZD10PWU9bj1udWxsLG1LKTpHJChkPStpWzBdWzBdLHQ9K2lbMF1bMV0sZT0raVsxXVswXSxuPStpWzFdWzFdKSxmKCkpOm51bGw9PWQ/bnVsbDpbW2QsdF0sW2Usbl1dfSxzY2FsZTpmdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaD1WWigoYT0rdCkqYyxhKnUscyxsKSxmKCkpOmF9LHRyYW5zbGF0ZTpmdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaD1WWihhKmMsYSp1LHM9K3RbMF0sbD0rdFsxXSksZigpKTpbcyxsXX0scmVmbGVjdFg6ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGg9VlooYSooYz10Py0xOjEpLGEqdSxzLGwpLGYoKSk6YzwwfSxyZWZsZWN0WTpmdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaD1WWihhKmMsYSoodT10Py0xOjEpLHMsbCksZigpKTp1PDB9LGZpdEV4dGVudDpmdW5jdGlvbih0LGUpe3JldHVybiBfWihvLHQsZSl9LGZpdFNpemU6ZnVuY3Rpb24odCxlKXtyZXR1cm4geVoobyx0LGUpfSxmaXRXaWR0aDpmdW5jdGlvbih0LGUpe3JldHVybiB2WihvLHQsZSl9LGZpdEhlaWdodDpmdW5jdGlvbih0LGUpe3JldHVybiBiWihvLHQsZSl9fX0sZ2VvUHJvamVjdGlvbjpNWixnZW9Qcm9qZWN0aW9uTXV0YXRvcjpFWixnZW9NZXJjYXRvcjpmdW5jdGlvbiBWZnQoKXtyZXR1cm4gT1ooUlopLnNjYWxlKDk2MS9rWSl9LGdlb01lcmNhdG9yUmF3OlJaLGdlb05hdHVyYWxFYXJ0aDE6ZnVuY3Rpb24gVWZ0KCl7cmV0dXJuIE1aKFVaKS5zY2FsZSgxNzUuMjk1KX0sZ2VvTmF0dXJhbEVhcnRoMVJhdzpVWixnZW9PcnRob2dyYXBoaWM6ZnVuY3Rpb24gamZ0KCl7cmV0dXJuIE1aKGpaKS5zY2FsZSgyNDkuNSkuY2xpcEFuZ2xlKDkwLjAwMDAwMSl9LGdlb09ydGhvZ3JhcGhpY1JhdzpqWixnZW9TdGVyZW9ncmFwaGljOmZ1bmN0aW9uIEdmdCgpe3JldHVybiBNWihHWikuc2NhbGUoMjUwKS5jbGlwQW5nbGUoMTQyKX0sZ2VvU3RlcmVvZ3JhcGhpY1JhdzpHWixnZW9UcmFuc3ZlcnNlTWVyY2F0b3I6ZnVuY3Rpb24gV2Z0KCl7dmFyIHQ9T1ooV1opLGU9dC5jZW50ZXIsbj10LnJvdGF0ZTtyZXR1cm4gdC5jZW50ZXI9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/ZShbLXRbMV0sdFswXV0pOlsodD1lKCkpWzFdLC10WzBdXX0sdC5yb3RhdGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/bihbdFswXSx0WzFdLHQubGVuZ3RoPjI/dFsyXSs5MDo5MF0pOlsodD1uKCkpWzBdLHRbMV0sdFsyXS05MF19LG4oWzAsMCw5MF0pLnNjYWxlKDE1OS4xNTUpfSxnZW9UcmFuc3ZlcnNlTWVyY2F0b3JSYXc6V1osZ2VvUm90YXRpb246eCQsZ2VvU3RyZWFtOlFZLGdlb1RyYW5zZm9ybTpmdW5jdGlvbiBxZnQodCl7cmV0dXJue3N0cmVhbTpmWih0KX19LGNsdXN0ZXI6ZnVuY3Rpb24gWWZ0KCl7dmFyIHQ9cVosZT0xLG49MSxpPSExO2Z1bmN0aW9uIHIocil7dmFyIG8sYT0wO3IuZWFjaEFmdGVyKChmdW5jdGlvbihlKXt2YXIgbj1lLmNoaWxkcmVuO24/KGUueD0oZnVuY3Rpb24gaSh0KXtyZXR1cm4gdC5yZWR1Y2UoWVosMCkvdC5sZW5ndGh9KShuKSxlLnk9KGZ1bmN0aW9uIHIodCl7cmV0dXJuIDErdC5yZWR1Y2UoWFosMCl9KShuKSk6KGUueD1vP2ErPXQoZSxvKTowLGUueT0wLG89ZSl9KSk7dmFyIHM9KGZ1bmN0aW9uIGwodCl7Zm9yKHZhciBlO2U9dC5jaGlsZHJlbjspdD1lWzBdO3JldHVybiB0fSkociksYz0oZnVuY3Rpb24gdSh0KXtmb3IodmFyIGU7ZT10LmNoaWxkcmVuOyl0PWVbZS5sZW5ndGgtMV07cmV0dXJuIHR9KShyKSxoPXMueC10KHMsYykvMixkPWMueCt0KGMscykvMjtyZXR1cm4gci5lYWNoQWZ0ZXIoaT9mdW5jdGlvbih0KXt0Lng9KHQueC1yLngpKmUsdC55PShyLnktdC55KSpufTpmdW5jdGlvbih0KXt0Lng9KHQueC1oKS8oZC1oKSplLHQueT0oMS0oci55P3QueS9yLnk6MSkpKm59KX1yZXR1cm4gci5zZXBhcmF0aW9uPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PWUscik6dH0sci5zaXplPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPSExLGU9K3RbMF0sbj0rdFsxXSxyKTppP251bGw6W2Usbl19LHIubm9kZVNpemU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9ITAsZT0rdFswXSxuPSt0WzFdLHIpOmk/W2Usbl06bnVsbH0scn0saGllcmFyY2h5OktaLHBhY2s6ZnVuY3Rpb24gWGZ0KCl7dmFyIHQ9bnVsbCxlPTEsbj0xLGk9a0o7ZnVuY3Rpb24gcihyKXtyZXR1cm4gci54PWUvMixyLnk9bi8yLHQ/ci5lYWNoQmVmb3JlKE5KKHQpKS5lYWNoQWZ0ZXIoSUooaSwuNSkpLmVhY2hCZWZvcmUoUkooMSkpOnIuZWFjaEJlZm9yZShOSihQSikpLmVhY2hBZnRlcihJSihrSiwxKSkuZWFjaEFmdGVyKElKKGksci5yL01hdGgubWluKGUsbikpKS5lYWNoQmVmb3JlKFJKKE1hdGgubWluKGUsbikvKDIqci5yKSkpLHJ9cmV0dXJuIHIucmFkaXVzPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PUNKKGUpLHIpOnR9LHIuc2l6ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT0rdFswXSxuPSt0WzFdLHIpOltlLG5dfSxyLnBhZGRpbmc9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpMSigrdCkscik6aX0scn0scGFja1NpYmxpbmdzOmZ1bmN0aW9uICRmdCh0KXtyZXR1cm4gVEoodCksdH0scGFja0VuY2xvc2U6ZkoscGFydGl0aW9uOmZ1bmN0aW9uIEtmdCgpe3ZhciB0PTEsZT0xLG49MCxpPSExO2Z1bmN0aW9uIHIocil7dmFyIG89ci5oZWlnaHQrMTtyZXR1cm4gci54MD1yLnkwPW4sci54MT10LHIueTE9ZS9vLHIuZWFjaEJlZm9yZSgoZnVuY3Rpb24gYSh0LGUpe3JldHVybiBmdW5jdGlvbihpKXtpLmNoaWxkcmVuJiZ6SihpLGkueDAsdCooaS5kZXB0aCsxKS9lLGkueDEsdCooaS5kZXB0aCsyKS9lKTt2YXIgcj1pLngwLG89aS55MCxhPWkueDEtbixzPWkueTEtbjthPHImJihyPWE9KHIrYSkvMiksczxvJiYobz1zPShvK3MpLzIpLGkueDA9cixpLnkwPW8saS54MT1hLGkueTE9c319KShlLG8pKSxpJiZyLmVhY2hCZWZvcmUoT0opLHJ9cmV0dXJuIHIucm91bmQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9ISF0LHIpOml9LHIuc2l6ZT1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0rblswXSxlPStuWzFdLHIpOlt0LGVdfSxyLnBhZGRpbmc9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49K3Qscik6bn0scn0sc3RyYXRpZnk6ZnVuY3Rpb24gWmZ0KCl7dmFyIHQ9SEosZT1GSjtmdW5jdGlvbiBuKG4pe3ZhciBpLHIsbyxhLHMsbCxjLHU9bi5sZW5ndGgsaD1uZXcgQXJyYXkodSksZD17fTtmb3Iocj0wO3I8dTsrK3Ipcz1oW3JdPW5ldyB0SihpPW5bcl0pLG51bGwhPShsPXQoaSxyLG4pKSYmKGwrPSIiKSYmKGRbYz0iJCIrKHMuaWQ9bCldPWMgaW4gZD9CSjpzKTtmb3Iocj0wO3I8dTsrK3IpaWYocz1oW3JdLG51bGwhPShsPWUobltyXSxyLG4pKSYmKGwrPSIiKSl7aWYoIShhPWRbIiQiK2xdKSl0aHJvdyBuZXcgRXJyb3IoIm1pc3Npbmc6ICIrbCk7aWYoYT09PUJKKXRocm93IG5ldyBFcnJvcigiYW1iaWd1b3VzOiAiK2wpO2EuY2hpbGRyZW4/YS5jaGlsZHJlbi5wdXNoKHMpOmEuY2hpbGRyZW49W3NdLHMucGFyZW50PWF9ZWxzZXtpZihvKXRocm93IG5ldyBFcnJvcigibXVsdGlwbGUgcm9vdHMiKTtvPXN9aWYoIW8pdGhyb3cgbmV3IEVycm9yKCJubyByb290Iik7aWYoby5wYXJlbnQ9REosby5lYWNoQmVmb3JlKChmdW5jdGlvbih0KXt0LmRlcHRoPXQucGFyZW50LmRlcHRoKzEsLS11fSkpLmVhY2hCZWZvcmUoUVopLG8ucGFyZW50PW51bGwsdT4wKXRocm93IG5ldyBFcnJvcigiY3ljbGUiKTtyZXR1cm4gb31yZXR1cm4gbi5pZD1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD1BSihlKSxuKTp0fSxuLnBhcmVudElkPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPUFKKHQpLG4pOmV9LG59LHRyZWU6ZnVuY3Rpb24gSmZ0KCl7dmFyIHQ9VkosZT0xLG49MSxpPW51bGw7ZnVuY3Rpb24gcihyKXt2YXIgbD0oZnVuY3Rpb24gYyh0KXtmb3IodmFyIGUsbixpLHIsbyxhPW5ldyBxSih0LDApLHM9W2FdO2U9cy5wb3AoKTspaWYoaT1lLl8uY2hpbGRyZW4pZm9yKGUuY2hpbGRyZW49bmV3IEFycmF5KG89aS5sZW5ndGgpLHI9by0xO3I+PTA7LS1yKXMucHVzaChuPWUuY2hpbGRyZW5bcl09bmV3IHFKKGlbcl0scikpLG4ucGFyZW50PWU7cmV0dXJuKGEucGFyZW50PW5ldyBxSihudWxsLDApKS5jaGlsZHJlbj1bYV0sYX0pKHIpO2lmKGwuZWFjaEFmdGVyKG8pLGwucGFyZW50Lm09LWwueixsLmVhY2hCZWZvcmUoYSksaSlyLmVhY2hCZWZvcmUocyk7ZWxzZXt2YXIgdT1yLGg9cixkPXI7ci5lYWNoQmVmb3JlKChmdW5jdGlvbih0KXt0Lng8dS54JiYodT10KSx0Lng+aC54JiYoaD10KSx0LmRlcHRoPmQuZGVwdGgmJihkPXQpfSkpO3ZhciBwPXU9PT1oPzE6dCh1LGgpLzIsZj1wLXUueCxtPWUvKGgueCtwK2YpLGc9bi8oZC5kZXB0aHx8MSk7ci5lYWNoQmVmb3JlKChmdW5jdGlvbih0KXt0Lng9KHQueCtmKSptLHQueT10LmRlcHRoKmd9KSl9cmV0dXJuIHJ9ZnVuY3Rpb24gbyhlKXt2YXIgbj1lLmNoaWxkcmVuLGk9ZS5wYXJlbnQuY2hpbGRyZW4scj1lLmk/aVtlLmktMV06bnVsbDtpZihuKXshKGZ1bmN0aW9uIG8odCl7Zm9yKHZhciBlLG49MCxpPTAscj10LmNoaWxkcmVuLG89ci5sZW5ndGg7LS1vPj0wOykoZT1yW29dKS56Kz1uLGUubSs9bixuKz1lLnMrKGkrPWUuYyl9KShlKTt2YXIgYT0oblswXS56K25bbi5sZW5ndGgtMV0ueikvMjtyPyhlLno9ci56K3QoZS5fLHIuXyksZS5tPWUuei1hKTplLno9YX1lbHNlIHImJihlLno9ci56K3QoZS5fLHIuXykpO2UucGFyZW50LkE9KGZ1bmN0aW9uIHMoZSxuLGkpe2lmKG4pe2Zvcih2YXIgcixvPWUsYT1lLHM9bixsPW8ucGFyZW50LmNoaWxkcmVuWzBdLGM9by5tLHU9YS5tLGg9cy5tLGQ9bC5tO3M9akoocyksbz1VSihvKSxzJiZvOylsPVVKKGwpLChhPWpKKGEpKS5hPWUsKHI9cy56K2gtby56LWMrdChzLl8sby5fKSk+MCYmKEdKKFdKKHMsZSxpKSxlLHIpLGMrPXIsdSs9ciksaCs9cy5tLGMrPW8ubSxkKz1sLm0sdSs9YS5tO3MmJiFqSihhKSYmKGEudD1zLGEubSs9aC11KSxvJiYhVUoobCkmJihsLnQ9byxsLm0rPWMtZCxpPWUpfXJldHVybiBpfSkoZSxyLGUucGFyZW50LkF8fGlbMF0pfWZ1bmN0aW9uIGEodCl7dC5fLng9dC56K3QucGFyZW50Lm0sdC5tKz10LnBhcmVudC5tfWZ1bmN0aW9uIHModCl7dC54Kj1lLHQueT10LmRlcHRoKm59cmV0dXJuIHIuc2VwYXJhdGlvbj1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD1lLHIpOnR9LHIuc2l6ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0hMSxlPSt0WzBdLG49K3RbMV0scik6aT9udWxsOltlLG5dfSxyLm5vZGVTaXplPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPSEwLGU9K3RbMF0sbj0rdFsxXSxyKTppP1tlLG5dOm51bGx9LHJ9LHRyZWVtYXA6ZnVuY3Rpb24gUWZ0KCl7dmFyIHQ9S0osZT0hMSxuPTEsaT0xLHI9WzBdLG89a0osYT1rSixzPWtKLGw9a0osYz1rSjtmdW5jdGlvbiB1KHQpe3JldHVybiB0LngwPXQueTA9MCx0LngxPW4sdC55MT1pLHQuZWFjaEJlZm9yZShoKSxyPVswXSxlJiZ0LmVhY2hCZWZvcmUoT0opLHR9ZnVuY3Rpb24gaChlKXt2YXIgbj1yW2UuZGVwdGhdLGk9ZS54MCtuLHU9ZS55MCtuLGg9ZS54MS1uLGQ9ZS55MS1uO2g8aSYmKGk9aD0oaStoKS8yKSxkPHUmJih1PWQ9KHUrZCkvMiksZS54MD1pLGUueTA9dSxlLngxPWgsZS55MT1kLGUuY2hpbGRyZW4mJihuPXJbZS5kZXB0aCsxXT1vKGUpLzIsaSs9YyhlKS1uLHUrPWEoZSktbiwoaC09cyhlKS1uKTxpJiYoaT1oPShpK2gpLzIpLChkLT1sKGUpLW4pPHUmJih1PWQ9KHUrZCkvMiksdChlLGksdSxoLGQpKX1yZXR1cm4gdS5yb3VuZD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT0hIXQsdSk6ZX0sdS5zaXplPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPSt0WzBdLGk9K3RbMV0sdSk6W24saV19LHUudGlsZT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD1BSihlKSx1KTp0fSx1LnBhZGRpbmc9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dS5wYWRkaW5nSW5uZXIodCkucGFkZGluZ091dGVyKHQpOnUucGFkZGluZ0lubmVyKCl9LHUucGFkZGluZ0lubmVyPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6TEooK3QpLHUpOm99LHUucGFkZGluZ091dGVyPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3UucGFkZGluZ1RvcCh0KS5wYWRkaW5nUmlnaHQodCkucGFkZGluZ0JvdHRvbSh0KS5wYWRkaW5nTGVmdCh0KTp1LnBhZGRpbmdUb3AoKX0sdS5wYWRkaW5nVG9wPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6TEooK3QpLHUpOmF9LHUucGFkZGluZ1JpZ2h0PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhzPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6TEooK3QpLHUpOnN9LHUucGFkZGluZ0JvdHRvbT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obD0iZnVuY3Rpb24iPT10eXBlb2YgdD90OkxKKCt0KSx1KTpsfSx1LnBhZGRpbmdMZWZ0PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhjPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6TEooK3QpLHUpOmN9LHV9LHRyZWVtYXBCaW5hcnk6ZnVuY3Rpb24gdG10KHQsZSxuLGkscil7dmFyIG8sYSxzPXQuY2hpbGRyZW4sbD1zLmxlbmd0aCxjPW5ldyBBcnJheShsKzEpO2ZvcihjWzBdPWE9bz0wO288bDsrK28pY1tvKzFdPWErPXNbb10udmFsdWU7IShmdW5jdGlvbiB0KGUsbixpLHIsbyxhLGwpe2lmKGU+PW4tMSl7dmFyIHU9c1tlXTtyZXR1cm4gdS54MD1yLHUueTA9byx1LngxPWEsdm9pZCh1LnkxPWwpfXZhciBoPWNbZV0sZD1pLzIraCxwPWUrMSxmPW4tMTtmb3IoO3A8Zjspe3ZhciBtPXArZj4+PjE7Y1ttXTxkP3A9bSsxOmY9bX1kLWNbcC0xXTxjW3BdLWQmJmUrMTxwJiYtLXA7dmFyIGc9Y1twXS1oLF89aS1nO2lmKGEtcj5sLW8pe3ZhciB5PShyKl8rYSpnKS9pO3QoZSxwLGcscixvLHksbCksdChwLG4sXyx5LG8sYSxsKX1lbHNle3ZhciB2PShvKl8rbCpnKS9pO3QoZSxwLGcscixvLGEsdiksdChwLG4sXyxyLHYsYSxsKX19KSgwLGwsdC52YWx1ZSxlLG4saSxyKX0sdHJlZW1hcERpY2U6ekosdHJlZW1hcFNsaWNlOllKLHRyZWVtYXBTbGljZURpY2U6ZnVuY3Rpb24gZW10KHQsZSxuLGkscil7KDEmdC5kZXB0aD9ZSjp6SikodCxlLG4saSxyKX0sdHJlZW1hcFNxdWFyaWZ5OktKLHRyZWVtYXBSZXNxdWFyaWZ5OlpKLGludGVycG9sYXRlOkUxLGludGVycG9sYXRlQXJyYXk6eTEsaW50ZXJwb2xhdGVCYXNpczpzMSxpbnRlcnBvbGF0ZUJhc2lzQ2xvc2VkOmwxLGludGVycG9sYXRlRGF0ZTp2MSxpbnRlcnBvbGF0ZU51bWJlcjpiMSxpbnRlcnBvbGF0ZU9iamVjdDp4MSxpbnRlcnBvbGF0ZVJvdW5kOmZ1bmN0aW9uIG5tdCh0LGUpe3JldHVybiBlLT10PSt0LGZ1bmN0aW9uKG4pe3JldHVybiBNYXRoLnJvdW5kKHQrZSpuKX19LGludGVycG9sYXRlU3RyaW5nOk0xLGludGVycG9sYXRlVHJhbnNmb3JtQ3NzOlIxLGludGVycG9sYXRlVHJhbnNmb3JtU3ZnOnoxLGludGVycG9sYXRlWm9vbTpmdW5jdGlvbiBpbXQodCxlKXt2YXIgbixpLHI9dFswXSxvPXRbMV0sYT10WzJdLHM9ZVsyXSxsPWVbMF0tcixjPWVbMV0tbyx1PWwqbCtjKmM7aWYodTwxZS0xMilpPU1hdGgubG9nKHMvYSkvQjEsbj1mdW5jdGlvbih0KXtyZXR1cm5bcit0Kmwsbyt0KmMsYSpNYXRoLmV4cChCMSp0KmkpXX07ZWxzZXt2YXIgaD1NYXRoLnNxcnQodSksZD0ocypzLWEqYSs0KnUpLygyKmEqMipoKSxwPShzKnMtYSphLTQqdSkvKDIqcyoyKmgpLGY9TWF0aC5sb2coTWF0aC5zcXJ0KGQqZCsxKS1kKSxtPU1hdGgubG9nKE1hdGguc3FydChwKnArMSktcCk7aT0obS1mKS9CMSxuPWZ1bmN0aW9uKHQpe3ZhciBlPXQqaSxuPUgxKGYpLHM9YS8oMipoKSoobiooZnVuY3Rpb24gdSh0KXtyZXR1cm4oKHQ9TWF0aC5leHAoMip0KSktMSkvKHQrMSl9KShCMSplK2YpLShmdW5jdGlvbiBkKHQpe3JldHVybigodD1NYXRoLmV4cCh0KSktMS90KS8yfSkoZikpO3JldHVybltyK3MqbCxvK3MqYyxhKm4vSDEoQjEqZStmKV19fXJldHVybiBuLmR1cmF0aW9uPTFlMyppLG59LGludGVycG9sYXRlUmdiOmYxLGludGVycG9sYXRlUmdiQmFzaXM6ZzEsaW50ZXJwb2xhdGVSZ2JCYXNpc0Nsb3NlZDpfMSxpbnRlcnBvbGF0ZUhzbDpWMSxpbnRlcnBvbGF0ZUhzbExvbmc6VTEsaW50ZXJwb2xhdGVMYWI6ZnVuY3Rpb24gcm10KHQsZSl7dmFyIG49cDEoKHQ9SFEodCkpLmwsKGU9SFEoZSkpLmwpLGk9cDEodC5hLGUuYSkscj1wMSh0LmIsZS5iKSxvPXAxKHQub3BhY2l0eSxlLm9wYWNpdHkpO3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gdC5sPW4oZSksdC5hPWkoZSksdC5iPXIoZSksdC5vcGFjaXR5PW8oZSksdCsiIn19LGludGVycG9sYXRlSGNsOkcxLGludGVycG9sYXRlSGNsTG9uZzpXMSxpbnRlcnBvbGF0ZUN1YmVoZWxpeDpZMSxpbnRlcnBvbGF0ZUN1YmVoZWxpeExvbmc6WDEscXVhbnRpemU6ZnVuY3Rpb24gb210KHQsZSl7Zm9yKHZhciBuPW5ldyBBcnJheShlKSxpPTA7aTxlOysraSluW2ldPXQoaS8oZS0xKSk7cmV0dXJuIG59LHBhdGg6dDAscG9seWdvbkFyZWE6ZnVuY3Rpb24gYW10KHQpe2Zvcih2YXIgZSxuPS0xLGk9dC5sZW5ndGgscj10W2ktMV0sbz0wOysrbjxpOylvKz0oZT1yKVsxXSoocj10W25dKVswXS1lWzBdKnJbMV07cmV0dXJuIG8vMn0scG9seWdvbkNlbnRyb2lkOmZ1bmN0aW9uIHNtdCh0KXtmb3IodmFyIGUsbixpPS0xLHI9dC5sZW5ndGgsbz0wLGE9MCxzPXRbci0xXSxsPTA7KytpPHI7KWwrPW49KGU9cylbMF0qKHM9dFtpXSlbMV0tc1swXSplWzFdLG8rPShlWzBdK3NbMF0pKm4sYSs9KGVbMV0rc1sxXSkqbjtyZXR1cm5bby8obCo9MyksYS9sXX0scG9seWdvbkh1bGw6ZnVuY3Rpb24gbG10KHQpe2lmKChuPXQubGVuZ3RoKTwzKXJldHVybiBudWxsO3ZhciBlLG4saT1uZXcgQXJyYXkobikscj1uZXcgQXJyYXkobik7Zm9yKGU9MDtlPG47KytlKWlbZV09Wyt0W2VdWzBdLCt0W2VdWzFdLGVdO2ZvcihpLnNvcnQobjApLGU9MDtlPG47KytlKXJbZV09W2lbZV1bMF0sLWlbZV1bMV1dO3ZhciBvPWkwKGkpLGE9aTAocikscz1hWzBdPT09b1swXSxsPWFbYS5sZW5ndGgtMV09PT1vW28ubGVuZ3RoLTFdLGM9W107Zm9yKGU9by5sZW5ndGgtMTtlPj0wOy0tZSljLnB1c2godFtpW29bZV1dWzJdXSk7Zm9yKGU9K3M7ZTxhLmxlbmd0aC1sOysrZSljLnB1c2godFtpW2FbZV1dWzJdXSk7cmV0dXJuIGN9LHBvbHlnb25Db250YWluczpmdW5jdGlvbiBjbXQodCxlKXtmb3IodmFyIG4saSxyPXQubGVuZ3RoLG89dFtyLTFdLGE9ZVswXSxzPWVbMV0sbD1vWzBdLGM9b1sxXSx1PSExLGg9MDtoPHI7KytoKW49KG89dFtoXSlbMF0sKGk9b1sxXSk+cyE9Yz5zJiZhPChsLW4pKihzLWkpLyhjLWkpK24mJih1PSF1KSxsPW4sYz1pO3JldHVybiB1fSxwb2x5Z29uTGVuZ3RoOmZ1bmN0aW9uIHVtdCh0KXtmb3IodmFyIGUsbixpPS0xLHI9dC5sZW5ndGgsbz10W3ItMV0sYT1vWzBdLHM9b1sxXSxsPTA7KytpPHI7KWU9YSxuPXMsZS09YT0obz10W2ldKVswXSxuLT1zPW9bMV0sbCs9TWF0aC5zcXJ0KGUqZStuKm4pO3JldHVybiBsfSxxdWFkdHJlZTpsMCxxdWV1ZTpJMCxyYW5kb21Vbmlmb3JtOk8wLHJhbmRvbU5vcm1hbDp6MCxyYW5kb21Mb2dOb3JtYWw6RDAscmFuZG9tQmF0ZXM6SDAscmFuZG9tSXJ3aW5IYWxsOkIwLHJhbmRvbUV4cG9uZW50aWFsOkYwLHJlcXVlc3Q6VjAsaHRtbDpqMCxqc29uOkcwLHRleHQ6VzAseG1sOnEwLGNzdjokMCx0c3Y6SzAsc2NhbGVCYW5kOnkyLHNjYWxlUG9pbnQ6ZnVuY3Rpb24gaG10KCl7cmV0dXJuIHYyKHkyKCkucGFkZGluZ0lubmVyKDEpKX0sc2NhbGVJZGVudGl0eTpmdW5jdGlvbiB0KCl7dmFyIGU9WzAsMV07ZnVuY3Rpb24gbih0KXtyZXR1cm4rdH1yZXR1cm4gbi5pbnZlcnQ9bixuLmRvbWFpbj1uLnJhbmdlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPWYyLmNhbGwodCxQNSksbik6ZS5zbGljZSgpfSxuLmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gdCgpLmRvbWFpbihlKX0sbjMobil9LHNjYWxlTGluZWFyOmZ1bmN0aW9uIHQoKXt2YXIgZT1ENShJNSxiNSk7cmV0dXJuIGUuY29weT1mdW5jdGlvbigpe3JldHVybiB6NShlLHQoKSl9LG4zKGUpfSxzY2FsZUxvZzpmdW5jdGlvbiB0KCl7dmFyIGU9RDUocjMsbzMpLmRvbWFpbihbMSwxMF0pLG49ZS5kb21haW4saT0xMCxyPWwzKDEwKSxvPXMzKDEwKTtmdW5jdGlvbiBhKCl7cmV0dXJuIHI9bDMoaSksbz1zMyhpKSxuKClbMF08MCYmKHI9YzMociksbz1jMyhvKSksZX1yZXR1cm4gZS5iYXNlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPSt0LGEoKSk6aX0sZS5kb21haW49ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG4odCksYSgpKTpuKCl9LGUudGlja3M9ZnVuY3Rpb24odCl7dmFyIGUsYT1uKCkscz1hWzBdLGw9YVthLmxlbmd0aC0xXTsoZT1sPHMpJiYoZD1zLHM9bCxsPWQpO3ZhciBjLHUsaCxkPXIocykscD1yKGwpLGY9bnVsbD09dD8xMDordCxtPVtdO2lmKCEoaSUxKSYmcC1kPGYpe2lmKGQ9TWF0aC5yb3VuZChkKS0xLHA9TWF0aC5yb3VuZChwKSsxLHM+MCl7Zm9yKDtkPHA7KytkKWZvcih1PTEsYz1vKGQpO3U8aTsrK3UpaWYoISgoaD1jKnUpPHMpKXtpZihoPmwpYnJlYWs7bS5wdXNoKGgpfX1lbHNlIGZvcig7ZDxwOysrZClmb3IodT1pLTEsYz1vKGQpO3U+PTE7LS11KWlmKCEoKGg9Yyp1KTxzKSl7aWYoaD5sKWJyZWFrO20ucHVzaChoKX19ZWxzZSBtPXIyKGQscCxNYXRoLm1pbihwLWQsZikpLm1hcChvKTtyZXR1cm4gZT9tLnJldmVyc2UoKTptfSxlLnRpY2tGb3JtYXQ9ZnVuY3Rpb24odCxuKXtpZihudWxsPT1uJiYobj0xMD09PWk/Ii4wZSI6IiwiKSwiZnVuY3Rpb24iIT10eXBlb2YgbiYmKG49SzUobikpLHQ9PT0xLzApcmV0dXJuIG47bnVsbD09dCYmKHQ9MTApO3ZhciBhPU1hdGgubWF4KDEsaSp0L2UudGlja3MoKS5sZW5ndGgpO3JldHVybiBmdW5jdGlvbih0KXt2YXIgZT10L28oTWF0aC5yb3VuZChyKHQpKSk7cmV0dXJuIGUqaTxpLS41JiYoZSo9aSksZTw9YT9uKHQpOiIifX0sZS5uaWNlPWZ1bmN0aW9uKCl7cmV0dXJuIG4oaTMobigpLHtmbG9vcjpmdW5jdGlvbih0KXtyZXR1cm4gbyhNYXRoLmZsb29yKHIodCkpKX0sY2VpbDpmdW5jdGlvbih0KXtyZXR1cm4gbyhNYXRoLmNlaWwocih0KSkpfX0pKX0sZS5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIHo1KGUsdCgpLmJhc2UoaSkpfSxlfSxzY2FsZU9yZGluYWw6XzIsc2NhbGVJbXBsaWNpdDpnMixzY2FsZVBvdzpoMyxzY2FsZVNxcnQ6ZnVuY3Rpb24gZG10KCl7cmV0dXJuIGgzKCkuZXhwb25lbnQoLjUpfSxzY2FsZVF1YW50aWxlOmZ1bmN0aW9uIHQoKXt2YXIgZT1bXSxuPVtdLGk9W107ZnVuY3Rpb24gcigpe3ZhciB0PTAscj1NYXRoLm1heCgxLG4ubGVuZ3RoKTtmb3IoaT1uZXcgQXJyYXkoci0xKTsrK3Q8cjspaVt0LTFdPXMyKGUsdC9yKTtyZXR1cm4gb31mdW5jdGlvbiBvKHQpe2lmKCFpc05hTih0PSt0KSlyZXR1cm4gbltRMChpLHQpXX1yZXR1cm4gby5pbnZlcnRFeHRlbnQ9ZnVuY3Rpb24odCl7dmFyIHI9bi5pbmRleE9mKHQpO3JldHVybiByPDA/W05hTixOYU5dOltyPjA/aVtyLTFdOmVbMF0scjxpLmxlbmd0aD9pW3JdOmVbZS5sZW5ndGgtMV1dfSxvLmRvbWFpbj1mdW5jdGlvbih0KXtpZighYXJndW1lbnRzLmxlbmd0aClyZXR1cm4gZS5zbGljZSgpO2U9W107Zm9yKHZhciBuLGk9MCxvPXQubGVuZ3RoO2k8bzsrK2kpbnVsbD09KG49dFtpXSl8fGlzTmFOKG49K24pfHxlLnB1c2gobik7cmV0dXJuIGUuc29ydChaMCkscigpfSxvLnJhbmdlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPW0yLmNhbGwodCkscigpKTpuLnNsaWNlKCl9LG8ucXVhbnRpbGVzPWZ1bmN0aW9uKCl7cmV0dXJuIGkuc2xpY2UoKX0sby5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIHQoKS5kb21haW4oZSkucmFuZ2Uobil9LG99LHNjYWxlUXVhbnRpemU6ZnVuY3Rpb24gdCgpe3ZhciBlPTAsbj0xLGk9MSxyPVsuNV0sbz1bMCwxXTtmdW5jdGlvbiBhKHQpe2lmKHQ8PXQpcmV0dXJuIG9bUTAocix0LDAsaSldfWZ1bmN0aW9uIHMoKXt2YXIgdD0tMTtmb3Iocj1uZXcgQXJyYXkoaSk7Kyt0PGk7KXJbdF09KCh0KzEpKm4tKHQtaSkqZSkvKGkrMSk7cmV0dXJuIGF9cmV0dXJuIGEuZG9tYWluPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPSt0WzBdLG49K3RbMV0scygpKTpbZSxuXX0sYS5yYW5nZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0obz1tMi5jYWxsKHQpKS5sZW5ndGgtMSxzKCkpOm8uc2xpY2UoKX0sYS5pbnZlcnRFeHRlbnQ9ZnVuY3Rpb24odCl7dmFyIGE9by5pbmRleE9mKHQpO3JldHVybiBhPDA/W05hTixOYU5dOmE8MT9bZSxyWzBdXTphPj1pP1tyW2ktMV0sbl06W3JbYS0xXSxyW2FdXX0sYS5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIHQoKS5kb21haW4oW2Usbl0pLnJhbmdlKG8pfSxuMyhhKX0sc2NhbGVUaHJlc2hvbGQ6ZnVuY3Rpb24gdCgpe3ZhciBlPVsuNV0sbj1bMCwxXSxpPTE7ZnVuY3Rpb24gcih0KXtpZih0PD10KXJldHVybiBuW1EwKGUsdCwwLGkpXX1yZXR1cm4gci5kb21haW49ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9bTIuY2FsbCh0KSxpPU1hdGgubWluKGUubGVuZ3RoLG4ubGVuZ3RoLTEpLHIpOmUuc2xpY2UoKX0sci5yYW5nZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj1tMi5jYWxsKHQpLGk9TWF0aC5taW4oZS5sZW5ndGgsbi5sZW5ndGgtMSkscik6bi5zbGljZSgpfSxyLmludmVydEV4dGVudD1mdW5jdGlvbih0KXt2YXIgaT1uLmluZGV4T2YodCk7cmV0dXJuW2VbaS0xXSxlW2ldXX0sci5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIHQoKS5kb21haW4oZSkucmFuZ2Uobil9LHJ9LHNjYWxlVGltZTpmdW5jdGlvbiBwbXQoKXtyZXR1cm4gdzYoSTMsUDMsQTMsVDMsRTMsTTMsUzMsXzMsWDMpLmRvbWFpbihbbmV3IERhdGUoMmUzLDAsMSksbmV3IERhdGUoMmUzLDAsMildKX0sc2NhbGVVdGM6ZnVuY3Rpb24gZm10KCl7cmV0dXJuIHc2KGozLFYzLEIzLHozLE8zLFIzLFMzLF8zLCQzKS5kb21haW4oW0RhdGUuVVRDKDJlMywwLDEpLERhdGUuVVRDKDJlMywwLDIpXSl9LHNjaGVtZUNhdGVnb3J5MTA6TTYsc2NoZW1lQ2F0ZWdvcnkyMGI6RTYsc2NoZW1lQ2F0ZWdvcnkyMGM6VDYsc2NoZW1lQ2F0ZWdvcnkyMDpDNixpbnRlcnBvbGF0ZUN1YmVoZWxpeERlZmF1bHQ6QTYsaW50ZXJwb2xhdGVSYWluYm93OmZ1bmN0aW9uIG1tdCh0KXsodDwwfHx0PjEpJiYodC09TWF0aC5mbG9vcih0KSk7dmFyIGU9TWF0aC5hYnModC0uNSk7cmV0dXJuIFA2Lmg9MzYwKnQtMTAwLFA2LnM9MS41LTEuNSplLFA2Lmw9LjgtLjkqZSxQNisiIn0saW50ZXJwb2xhdGVXYXJtOms2LGludGVycG9sYXRlQ29vbDpMNixpbnRlcnBvbGF0ZVZpcmlkaXM6STYsaW50ZXJwb2xhdGVNYWdtYTpSNixpbnRlcnBvbGF0ZUluZmVybm86TzYsaW50ZXJwb2xhdGVQbGFzbWE6ejYsc2NhbGVTZXF1ZW50aWFsOmZ1bmN0aW9uIHQoZSl7dmFyIG49MCxpPTEscj0hMTtmdW5jdGlvbiBvKHQpe3ZhciBvPSh0LW4pLyhpLW4pO3JldHVybiBlKHI/TWF0aC5tYXgoMCxNYXRoLm1pbigxLG8pKTpvKX1yZXR1cm4gby5kb21haW49ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49K3RbMF0saT0rdFsxXSxvKTpbbixpXX0sby5jbGFtcD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj0hIXQsbyk6cn0sby5pbnRlcnBvbGF0b3I9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9dCxvKTplfSxvLmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gdChlKS5kb21haW4oW24saV0pLmNsYW1wKHIpfSxuMyhvKX0sY3JlYXRlOmZ1bmN0aW9uIGdtdCh0KXtyZXR1cm4gJDkoVTYodCkuY2FsbChkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpKX0sY3JlYXRvcjpVNixsb2NhbDpDOCxtYXRjaGVyOks2LG1vdXNlOmZ1bmN0aW9uIF9tdCh0KXt2YXIgZT1rOCgpO3JldHVybiBlLmNoYW5nZWRUb3VjaGVzJiYoZT1lLmNoYW5nZWRUb3VjaGVzWzBdKSxMOCh0LGUpfSxuYW1lc3BhY2U6SDYsbmFtZXNwYWNlczpCNixjbGllbnRQb2ludDpMOCxzZWxlY3Q6JDksc2VsZWN0QWxsOmZ1bmN0aW9uIHltdCh0KXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHQ/bmV3IFk5KFtkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKHQpXSxbZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50XSk6bmV3IFk5KFtudWxsPT10P1tdOnRdLHE5KX0sc2VsZWN0aW9uOlg5LHNlbGVjdG9yOkc2LHNlbGVjdG9yQWxsOnE2LHN0eWxlOmQ5LHRvdWNoOmZ1bmN0aW9uIHZtdCh0LGUsbil7YXJndW1lbnRzLmxlbmd0aDwzJiYobj1lLGU9azgoKS5jaGFuZ2VkVG91Y2hlcyk7Zm9yKHZhciBpLHI9MCxvPWU/ZS5sZW5ndGg6MDtyPG87KytyKWlmKChpPWVbcl0pLmlkZW50aWZpZXI9PT1uKXJldHVybiBMOCh0LGkpO3JldHVybiBudWxsfSx0b3VjaGVzOmZ1bmN0aW9uIGJtdCh0LGUpe251bGw9PWUmJihlPWs4KCkudG91Y2hlcyk7Zm9yKHZhciBuPTAsaT1lP2UubGVuZ3RoOjAscj1uZXcgQXJyYXkoaSk7bjxpOysrbilyW25dPUw4KHQsZVtuXSk7cmV0dXJuIHJ9LHdpbmRvdzpsOSxnZXQgZXZlbnQoKXtyZXR1cm4gRDl9LGN1c3RvbUV2ZW50OmZ1bmN0aW9uIHhtdCh0LGUsbixpKXt2YXIgcj1EOTt0LnNvdXJjZUV2ZW50PUQ5LEQ5PXQ7dHJ5e3JldHVybiBlLmFwcGx5KG4saSl9ZmluYWxseXtEOT1yfX0sYXJjOmZ1bmN0aW9uIHdtdCgpe3ZhciB0PVo4LGU9Sjgsbj1EOCgwKSxpPW51bGwscj1ROCxvPXQ3LGE9ZTcscz1udWxsO2Z1bmN0aW9uIGwoKXt2YXIgbCxjLHU9K3QuYXBwbHkodGhpcyxhcmd1bWVudHMpLGg9K2UuYXBwbHkodGhpcyxhcmd1bWVudHMpLGQ9ci5hcHBseSh0aGlzLGFyZ3VtZW50cyktWTgscD1vLmFwcGx5KHRoaXMsYXJndW1lbnRzKS1ZOCxmPUI4KHAtZCksbT1wPmQ7aWYoc3x8KHM9bD16OCgpKSxoPHUmJihjPWgsaD11LHU9YyksaD5XOClpZihmPlg4LVc4KXMubW92ZVRvKGgqRjgoZCksaCpqOChkKSkscy5hcmMoMCwwLGgsZCxwLCFtKSx1Plc4JiYocy5tb3ZlVG8odSpGOChwKSx1Kmo4KHApKSxzLmFyYygwLDAsdSxwLGQsbSkpO2Vsc2V7dmFyIGcsXyx5PWQsdj1wLGI9ZCx4PXAsdz1mLFM9ZixNPWEuYXBwbHkodGhpcyxhcmd1bWVudHMpLzIsRT1NPlc4JiYoaT8raS5hcHBseSh0aGlzLGFyZ3VtZW50cyk6RzgodSp1K2gqaCkpLFQ9VTgoQjgoaC11KS8yLCtuLmFwcGx5KHRoaXMsYXJndW1lbnRzKSksQz1ULEE9VDtpZihFPlc4KXt2YXIgaz1LOChFL3UqajgoTSkpLEw9SzgoRS9oKmo4KE0pKTsody09MiprKT5XOD8oYis9ayo9bT8xOi0xLHgtPWspOih3PTAsYj14PShkK3ApLzIpLChTLT0yKkwpPlc4Pyh5Kz1MKj1tPzE6LTEsdi09TCk6KFM9MCx5PXY9KGQrcCkvMil9dmFyIFA9aCpGOCh5KSxOPWgqajgoeSksST11KkY4KHgpLFI9dSpqOCh4KTtpZihUPlc4KXt2YXIgTz1oKkY4KHYpLHo9aCpqOCh2KSxEPXUqRjgoYiksQj11Kmo4KGIpO2lmKGY8cTgpe3ZhciBIPXc+Vzg/bjcoUCxOLEQsQixPLHosSSxSKTpbSSxSXSxGPVAtSFswXSxWPU4tSFsxXSxVPU8tSFswXSxqPXotSFsxXSxHPTEvajgoJDgoKEYqVStWKmopLyhHOChGKkYrVipWKSpHOChVKlUraipqKSkpLzIpLFc9RzgoSFswXSpIWzBdK0hbMV0qSFsxXSk7Qz1VOChULCh1LVcpLyhHLTEpKSxBPVU4KFQsKGgtVykvKEcrMSkpfX1TPlc4P0E+Vzg/KGc9aTcoRCxCLFAsTixoLEEsbSksXz1pNyhPLHosSSxSLGgsQSxtKSxzLm1vdmVUbyhnLmN4K2cueDAxLGcuY3krZy55MDEpLEE8VD9zLmFyYyhnLmN4LGcuY3ksQSxIOChnLnkwMSxnLngwMSksSDgoXy55MDEsXy54MDEpLCFtKToocy5hcmMoZy5jeCxnLmN5LEEsSDgoZy55MDEsZy54MDEpLEg4KGcueTExLGcueDExKSwhbSkscy5hcmMoMCwwLGgsSDgoZy5jeStnLnkxMSxnLmN4K2cueDExKSxIOChfLmN5K18ueTExLF8uY3grXy54MTEpLCFtKSxzLmFyYyhfLmN4LF8uY3ksQSxIOChfLnkxMSxfLngxMSksSDgoXy55MDEsXy54MDEpLCFtKSkpOihzLm1vdmVUbyhQLE4pLHMuYXJjKDAsMCxoLHksdiwhbSkpOnMubW92ZVRvKFAsTiksdT5XOCYmdz5XOD9DPlc4PyhnPWk3KEksUixPLHosdSwtQyxtKSxfPWk3KFAsTixELEIsdSwtQyxtKSxzLmxpbmVUbyhnLmN4K2cueDAxLGcuY3krZy55MDEpLEM8VD9zLmFyYyhnLmN4LGcuY3ksQyxIOChnLnkwMSxnLngwMSksSDgoXy55MDEsXy54MDEpLCFtKToocy5hcmMoZy5jeCxnLmN5LEMsSDgoZy55MDEsZy54MDEpLEg4KGcueTExLGcueDExKSwhbSkscy5hcmMoMCwwLHUsSDgoZy5jeStnLnkxMSxnLmN4K2cueDExKSxIOChfLmN5K18ueTExLF8uY3grXy54MTEpLG0pLHMuYXJjKF8uY3gsXy5jeSxDLEg4KF8ueTExLF8ueDExKSxIOChfLnkwMSxfLngwMSksIW0pKSk6cy5hcmMoMCwwLHUseCxiLG0pOnMubGluZVRvKEksUil9ZWxzZSBzLm1vdmVUbygwLDApO2lmKHMuY2xvc2VQYXRoKCksbClyZXR1cm4gcz1udWxsLGwrIiJ8fG51bGx9cmV0dXJuIGwuY2VudHJvaWQ9ZnVuY3Rpb24oKXt2YXIgbj0oK3QuYXBwbHkodGhpcyxhcmd1bWVudHMpKyArZS5hcHBseSh0aGlzLGFyZ3VtZW50cykpLzIsaT0oK3IuYXBwbHkodGhpcyxhcmd1bWVudHMpKyArby5hcHBseSh0aGlzLGFyZ3VtZW50cykpLzItcTgvMjtyZXR1cm5bRjgoaSkqbixqOChpKSpuXX0sbC5pbm5lclJhZGl1cz1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0iZnVuY3Rpb24iPT10eXBlb2YgZT9lOkQ4KCtlKSxsKTp0fSxsLm91dGVyUmFkaXVzPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6RDgoK3QpLGwpOmV9LGwuY29ybmVyUmFkaXVzPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6RDgoK3QpLGwpOm59LGwucGFkUmFkaXVzPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPW51bGw9PXQ/bnVsbDoiZnVuY3Rpb24iPT10eXBlb2YgdD90OkQ4KCt0KSxsKTppfSxsLnN0YXJ0QW5nbGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpEOCgrdCksbCk6cn0sbC5lbmRBbmdsZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz0iZnVuY3Rpb24iPT10eXBlb2YgdD90OkQ4KCt0KSxsKTpvfSxsLnBhZEFuZ2xlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6RDgoK3QpLGwpOmF9LGwuY29udGV4dD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocz1udWxsPT10P251bGw6dCxsKTpzfSxsfSxhcmVhOmM3LGxpbmU6bDcscGllOmZ1bmN0aW9uIFNtdCgpe3ZhciB0PWg3LGU9dTcsbj1udWxsLGk9RDgoMCkscj1EOChYOCksbz1EOCgwKTtmdW5jdGlvbiBhKGEpe3ZhciBzLGwsYyx1LGgsZD1hLmxlbmd0aCxwPTAsZj1uZXcgQXJyYXkoZCksbT1uZXcgQXJyYXkoZCksZz0raS5hcHBseSh0aGlzLGFyZ3VtZW50cyksXz1NYXRoLm1pbihYOCxNYXRoLm1heCgtWDgsci5hcHBseSh0aGlzLGFyZ3VtZW50cyktZykpLHk9TWF0aC5taW4oTWF0aC5hYnMoXykvZCxvLmFwcGx5KHRoaXMsYXJndW1lbnRzKSksdj15KihfPDA/LTE6MSk7Zm9yKHM9MDtzPGQ7KytzKShoPW1bZltzXT1zXT0rdChhW3NdLHMsYSkpPjAmJihwKz1oKTtmb3IobnVsbCE9ZT9mLnNvcnQoKGZ1bmN0aW9uKHQsbil7cmV0dXJuIGUobVt0XSxtW25dKX0pKTpudWxsIT1uJiZmLnNvcnQoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIG4oYVt0XSxhW2VdKX0pKSxzPTAsYz1wPyhfLWQqdikvcDowO3M8ZDsrK3MsZz11KW1bbD1mW3NdXT17ZGF0YTphW2xdLGluZGV4OnMsdmFsdWU6aD1tW2xdLHN0YXJ0QW5nbGU6ZyxlbmRBbmdsZTp1PWcrKGg+MD9oKmM6MCkrdixwYWRBbmdsZTp5fTtyZXR1cm4gbX1yZXR1cm4gYS52YWx1ZT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0iZnVuY3Rpb24iPT10eXBlb2YgZT9lOkQ4KCtlKSxhKTp0fSxhLnNvcnRWYWx1ZXM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9dCxuPW51bGwsYSk6ZX0sYS5zb3J0PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPXQsZT1udWxsLGEpOm59LGEuc3RhcnRBbmdsZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0iZnVuY3Rpb24iPT10eXBlb2YgdD90OkQ4KCt0KSxhKTppfSxhLmVuZEFuZ2xlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6RDgoK3QpLGEpOnJ9LGEucGFkQW5nbGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpEOCgrdCksYSk6b30sYX0sYXJlYVJhZGlhbDpfNyxyYWRpYWxBcmVhOl83LGxpbmVSYWRpYWw6ZzcscmFkaWFsTGluZTpnNyxwb2ludFJhZGlhbDp5NyxsaW5rSG9yaXpvbnRhbDpmdW5jdGlvbiBNbXQoKXtyZXR1cm4gdzcoUzcpfSxsaW5rVmVydGljYWw6ZnVuY3Rpb24gRW10KCl7cmV0dXJuIHc3KE03KX0sbGlua1JhZGlhbDpmdW5jdGlvbiBUbXQoKXt2YXIgdD13NyhFNyk7cmV0dXJuIHQuYW5nbGU9dC54LGRlbGV0ZSB0LngsdC5yYWRpdXM9dC55LGRlbGV0ZSB0LnksdH0sc3ltYm9sOmZ1bmN0aW9uIENtdCgpe3ZhciB0PUQ4KFQ3KSxlPUQ4KDY0KSxuPW51bGw7ZnVuY3Rpb24gaSgpe3ZhciBpO2lmKG58fChuPWk9ejgoKSksdC5hcHBseSh0aGlzLGFyZ3VtZW50cykuZHJhdyhuLCtlLmFwcGx5KHRoaXMsYXJndW1lbnRzKSksaSlyZXR1cm4gbj1udWxsLGkrIiJ8fG51bGx9cmV0dXJuIGkudHlwZT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0iZnVuY3Rpb24iPT10eXBlb2YgZT9lOkQ4KGUpLGkpOnR9LGkuc2l6ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT0iZnVuY3Rpb24iPT10eXBlb2YgdD90OkQ4KCt0KSxpKTplfSxpLmNvbnRleHQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49bnVsbD09dD9udWxsOnQsaSk6bn0saX0sc3ltYm9sczpqNyxzeW1ib2xDaXJjbGU6VDcsc3ltYm9sQ3Jvc3M6Qzcsc3ltYm9sRGlhbW9uZDpMNyxzeW1ib2xTcXVhcmU6Tzcsc3ltYm9sU3RhcjpSNyxzeW1ib2xUcmlhbmdsZTpENyxzeW1ib2xXeWU6VTcsY3VydmVCYXNpc0Nsb3NlZDpmdW5jdGlvbiBBbXQodCl7cmV0dXJuIG5ldyBZNyh0KX0sY3VydmVCYXNpc09wZW46ZnVuY3Rpb24ga210KHQpe3JldHVybiBuZXcgWDcodCl9LGN1cnZlQmFzaXM6ZnVuY3Rpb24gTG10KHQpe3JldHVybiBuZXcgcTcodCl9LGN1cnZlQnVuZGxlOks3LGN1cnZlQ2FyZGluYWxDbG9zZWQ6ZXR0LGN1cnZlQ2FyZGluYWxPcGVuOml0dCxjdXJ2ZUNhcmRpbmFsOlE3LGN1cnZlQ2F0bXVsbFJvbUNsb3NlZDpsdHQsY3VydmVDYXRtdWxsUm9tT3Blbjp1dHQsY3VydmVDYXRtdWxsUm9tOmF0dCxjdXJ2ZUxpbmVhckNsb3NlZDpmdW5jdGlvbiBQbXQodCl7cmV0dXJuIG5ldyBodHQodCl9LGN1cnZlTGluZWFyOm83LGN1cnZlTW9ub3RvbmVYOmZ1bmN0aW9uIE5tdCh0KXtyZXR1cm4gbmV3IGd0dCh0KX0sY3VydmVNb25vdG9uZVk6ZnVuY3Rpb24gSW10KHQpe3JldHVybiBuZXcgX3R0KHQpfSxjdXJ2ZU5hdHVyYWw6ZnVuY3Rpb24gUm10KHQpe3JldHVybiBuZXcgdnR0KHQpfSxjdXJ2ZVN0ZXA6ZnVuY3Rpb24gT210KHQpe3JldHVybiBuZXcgeHR0KHQsLjUpfSxjdXJ2ZVN0ZXBBZnRlcjpmdW5jdGlvbiB6bXQodCl7cmV0dXJuIG5ldyB4dHQodCwxKX0sY3VydmVTdGVwQmVmb3JlOmZ1bmN0aW9uIERtdCh0KXtyZXR1cm4gbmV3IHh0dCh0LDApfSxzdGFjazpmdW5jdGlvbiBCbXQoKXt2YXIgdD1EOChbXSksZT1TdHQsbj13dHQsaT1NdHQ7ZnVuY3Rpb24gcihyKXt2YXIgbyxhLHM9dC5hcHBseSh0aGlzLGFyZ3VtZW50cyksbD1yLmxlbmd0aCxjPXMubGVuZ3RoLHU9bmV3IEFycmF5KGMpO2ZvcihvPTA7bzxjOysrbyl7Zm9yKHZhciBoLGQ9c1tvXSxwPXVbb109bmV3IEFycmF5KGwpLGY9MDtmPGw7KytmKXBbZl09aD1bMCwraShyW2ZdLGQsZixyKV0saC5kYXRhPXJbZl07cC5rZXk9ZH1mb3Iobz0wLGE9ZSh1KTtvPGM7KytvKXVbYVtvXV0uaW5kZXg9bztyZXR1cm4gbih1LGEpLHV9cmV0dXJuIHIua2V5cz1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0iZnVuY3Rpb24iPT10eXBlb2YgZT9lOkQ4KHY3LmNhbGwoZSkpLHIpOnR9LHIudmFsdWU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpEOCgrdCkscik6aX0sci5vcmRlcj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT1udWxsPT10P1N0dDoiZnVuY3Rpb24iPT10eXBlb2YgdD90OkQ4KHY3LmNhbGwodCkpLHIpOmV9LHIub2Zmc2V0PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPW51bGw9PXQ/d3R0OnQscik6bn0scn0sc3RhY2tPZmZzZXRFeHBhbmQ6ZnVuY3Rpb24gSG10KHQsZSl7aWYoKGk9dC5sZW5ndGgpPjApe2Zvcih2YXIgbixpLHIsbz0wLGE9dFswXS5sZW5ndGg7bzxhOysrbyl7Zm9yKHI9bj0wO248aTsrK24pcis9dFtuXVtvXVsxXXx8MDtpZihyKWZvcihuPTA7bjxpOysrbil0W25dW29dWzFdLz1yfXd0dCh0LGUpfX0sc3RhY2tPZmZzZXREaXZlcmdpbmc6ZnVuY3Rpb24gRm10KHQsZSl7aWYoKHM9dC5sZW5ndGgpPjEpZm9yKHZhciBuLGkscixvLGEscyxsPTAsYz10W2VbMF1dLmxlbmd0aDtsPGM7KytsKWZvcihvPWE9MCxuPTA7bjxzOysrbikocj0oaT10W2Vbbl1dW2xdKVsxXS1pWzBdKT49MD8oaVswXT1vLGlbMV09bys9cik6cjwwPyhpWzFdPWEsaVswXT1hKz1yKTppWzBdPW99LHN0YWNrT2Zmc2V0Tm9uZTp3dHQsc3RhY2tPZmZzZXRTaWxob3VldHRlOmZ1bmN0aW9uIFZtdCh0LGUpe2lmKChuPXQubGVuZ3RoKT4wKXtmb3IodmFyIG4saT0wLHI9dFtlWzBdXSxvPXIubGVuZ3RoO2k8bzsrK2kpe2Zvcih2YXIgYT0wLHM9MDthPG47KythKXMrPXRbYV1baV1bMV18fDA7cltpXVsxXSs9cltpXVswXT0tcy8yfXd0dCh0LGUpfX0sc3RhY2tPZmZzZXRXaWdnbGU6ZnVuY3Rpb24gVW10KHQsZSl7aWYoKHI9dC5sZW5ndGgpPjAmJihpPShuPXRbZVswXV0pLmxlbmd0aCk+MCl7Zm9yKHZhciBuLGkscixvPTAsYT0xO2E8aTsrK2Epe2Zvcih2YXIgcz0wLGw9MCxjPTA7czxyOysrcyl7Zm9yKHZhciB1PXRbZVtzXV0saD11W2FdWzFdfHwwLGQ9KGgtKHVbYS0xXVsxXXx8MCkpLzIscD0wO3A8czsrK3Ape3ZhciBmPXRbZVtwXV07ZCs9KGZbYV1bMV18fDApLShmW2EtMV1bMV18fDApfWwrPWgsYys9ZCpofW5bYS0xXVsxXSs9blthLTFdWzBdPW8sbCYmKG8tPWMvbCl9blthLTFdWzFdKz1uW2EtMV1bMF09byx3dHQodCxlKX19LHN0YWNrT3JkZXJBc2NlbmRpbmc6RXR0LHN0YWNrT3JkZXJEZXNjZW5kaW5nOmZ1bmN0aW9uIGptdCh0KXtyZXR1cm4gRXR0KHQpLnJldmVyc2UoKX0sc3RhY2tPcmRlckluc2lkZU91dDpmdW5jdGlvbiBHbXQodCl7dmFyIGUsbixpPXQubGVuZ3RoLHI9dC5tYXAoVHR0KSxvPVN0dCh0KS5zb3J0KChmdW5jdGlvbih0LGUpe3JldHVybiByW2VdLXJbdF19KSksYT0wLHM9MCxsPVtdLGM9W107Zm9yKGU9MDtlPGk7KytlKW49b1tlXSxhPHM/KGErPXJbbl0sbC5wdXNoKG4pKToocys9cltuXSxjLnB1c2gobikpO3JldHVybiBjLnJldmVyc2UoKS5jb25jYXQobCl9LHN0YWNrT3JkZXJOb25lOlN0dCxzdGFja09yZGVyUmV2ZXJzZTpmdW5jdGlvbiBXbXQodCl7cmV0dXJuIFN0dCh0KS5yZXZlcnNlKCl9LHRpbWVJbnRlcnZhbDprdHQsdGltZU1pbGxpc2Vjb25kOkx0dCx0aW1lTWlsbGlzZWNvbmRzOlB0dCx1dGNNaWxsaXNlY29uZDpMdHQsdXRjTWlsbGlzZWNvbmRzOlB0dCx0aW1lU2Vjb25kOkR0dCx0aW1lU2Vjb25kczpCdHQsdXRjU2Vjb25kOkR0dCx1dGNTZWNvbmRzOkJ0dCx0aW1lTWludXRlOkh0dCx0aW1lTWludXRlczpGdHQsdGltZUhvdXI6VnR0LHRpbWVIb3VyczpVdHQsdGltZURheTpqdHQsdGltZURheXM6R3R0LHRpbWVXZWVrOnF0dCx0aW1lV2Vla3M6UXR0LHRpbWVTdW5kYXk6cXR0LHRpbWVTdW5kYXlzOlF0dCx0aW1lTW9uZGF5Oll0dCx0aW1lTW9uZGF5czp0ZXQsdGltZVR1ZXNkYXk6WHR0LHRpbWVUdWVzZGF5czplZXQsdGltZVdlZG5lc2RheTokdHQsdGltZVdlZG5lc2RheXM6bmV0LHRpbWVUaHVyc2RheTpLdHQsdGltZVRodXJzZGF5czppZXQsdGltZUZyaWRheTpadHQsdGltZUZyaWRheXM6cmV0LHRpbWVTYXR1cmRheTpKdHQsdGltZVNhdHVyZGF5czpvZXQsdGltZU1vbnRoOmFldCx0aW1lTW9udGhzOnNldCx0aW1lWWVhcjpjZXQsdGltZVllYXJzOnVldCx1dGNNaW51dGU6aGV0LHV0Y01pbnV0ZXM6ZGV0LHV0Y0hvdXI6cGV0LHV0Y0hvdXJzOmZldCx1dGNEYXk6bWV0LHV0Y0RheXM6Z2V0LHV0Y1dlZWs6eWV0LHV0Y1dlZWtzOlRldCx1dGNTdW5kYXk6eWV0LHV0Y1N1bmRheXM6VGV0LHV0Y01vbmRheTp2ZXQsdXRjTW9uZGF5czpDZXQsdXRjVHVlc2RheTpiZXQsdXRjVHVlc2RheXM6QWV0LHV0Y1dlZG5lc2RheTp4ZXQsdXRjV2VkbmVzZGF5czprZXQsdXRjVGh1cnNkYXk6d2V0LHV0Y1RodXJzZGF5czpMZXQsdXRjRnJpZGF5Ok1ldCx1dGNGcmlkYXlzOlBldCx1dGNTYXR1cmRheTpFZXQsdXRjU2F0dXJkYXlzOk5ldCx1dGNNb250aDpJZXQsdXRjTW9udGhzOlJldCx1dGNZZWFyOk9ldCx1dGNZZWFyczp6ZXQsdGltZUZvcm1hdERlZmF1bHRMb2NhbGU6eGl0LGdldCB0aW1lRm9ybWF0KCl7cmV0dXJuIHNudH0sZ2V0IHRpbWVQYXJzZSgpe3JldHVybiBsbnR9LGdldCB1dGNGb3JtYXQoKXtyZXR1cm4gY250fSxnZXQgdXRjUGFyc2UoKXtyZXR1cm4gdW50fSx0aW1lRm9ybWF0TG9jYWxlOm9udCxpc29Gb3JtYXQ6U2l0LGlzb1BhcnNlOkNpdCxub3c6RGl0LHRpbWVyOkZpdCx0aW1lckZsdXNoOlZpdCx0aW1lb3V0OmZ1bmN0aW9uIHFtdCh0LGUsbil7dmFyIGk9bmV3IEhpdDtyZXR1cm4gaS5yZXN0YXJ0KChmdW5jdGlvbihuKXtpLnN0b3AoKSx0KG4rZSl9KSxlPW51bGw9PWU/MDorZSxuKSxpfSxpbnRlcnZhbDpmdW5jdGlvbiBZbXQodCxlLG4pe3ZhciBpPW5ldyBIaXQscj1lO3JldHVybiBudWxsPT1lPyhpLnJlc3RhcnQodCxlLG4pLGkpOihlPStlLG49bnVsbD09bj9EaXQoKTorbixpLnJlc3RhcnQoKGZ1bmN0aW9uIG8oYSl7YSs9cixpLnJlc3RhcnQobyxyKz1lLG4pLHQoYSl9KSxlLG4pLGkpfSx0cmFuc2l0aW9uOkFzdCxhY3RpdmU6ZnVuY3Rpb24gWG10KHQsZSl7dmFyIG4saSxyPXQuX190cmFuc2l0aW9uO2lmKHIpZm9yKGkgaW4gZT1udWxsPT1lP251bGw6ZSsiIixyKWlmKChuPXJbaV0pLnN0YXRlPjEmJm4ubmFtZT09PWUpcmV0dXJuIG5ldyBDc3QoW1t0XV0sSnN0LGUsK2kpO3JldHVybiBudWxsfSxpbnRlcnJ1cHQ6YWF0LHZvcm9ub2k6ZnVuY3Rpb24gJG10KCl7dmFyIHQ9dGx0LGU9ZWx0LG49bnVsbDtmdW5jdGlvbiBpKGkpe3JldHVybiBuZXcgemx0KGkubWFwKChmdW5jdGlvbihuLHIpe3ZhciBvPVtNYXRoLnJvdW5kKHQobixyLGkpL05sdCkqTmx0LE1hdGgucm91bmQoZShuLHIsaSkvTmx0KSpObHRdO3JldHVybiBvLmluZGV4PXIsby5kYXRhPW4sb30pKSxuKX1yZXR1cm4gaS5wb2x5Z29ucz1mdW5jdGlvbih0KXtyZXR1cm4gaSh0KS5wb2x5Z29ucygpfSxpLmxpbmtzPWZ1bmN0aW9uKHQpe3JldHVybiBpKHQpLmxpbmtzKCl9LGkudHJpYW5nbGVzPWZ1bmN0aW9uKHQpe3JldHVybiBpKHQpLnRyaWFuZ2xlcygpfSxpLng9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZTpRc3QoK2UpLGkpOnR9LGkueT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT0iZnVuY3Rpb24iPT10eXBlb2YgdD90OlFzdCgrdCksaSk6ZX0saS5leHRlbnQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49bnVsbD09dD9udWxsOltbK3RbMF1bMF0sK3RbMF1bMV1dLFsrdFsxXVswXSwrdFsxXVsxXV1dLGkpOm4mJltbblswXVswXSxuWzBdWzFdXSxbblsxXVswXSxuWzFdWzFdXV19LGkuc2l6ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj1udWxsPT10P251bGw6W1swLDBdLFsrdFswXSwrdFsxXV1dLGkpOm4mJltuWzFdWzBdLW5bMF1bMF0sblsxXVsxXS1uWzBdWzFdXX0saX0sem9vbTpmdW5jdGlvbiBLbXQoKXt2YXIgdCxlLG49Z3B0LGk9X3B0LHI9eHB0LG89dnB0LGE9YnB0LHM9WzAsMS8wXSxsPVtbLTEvMCwtMS8wXSxbMS8wLDEvMF1dLGM9MjUwLHU9Qmh0LGg9W10sZD1CbHQoInN0YXJ0Iiwiem9vbSIsImVuZCIpLHA9NTAwLGY9MDtmdW5jdGlvbiBtKHQpe3QucHJvcGVydHkoIl9fem9vbSIseXB0KS5vbigid2hlZWwuem9vbSIsdykub24oIm1vdXNlZG93bi56b29tIixTKS5vbigiZGJsY2xpY2suem9vbSIsTSkuZmlsdGVyKGEpLm9uKCJ0b3VjaHN0YXJ0Lnpvb20iLEUpLm9uKCJ0b3VjaG1vdmUuem9vbSIsVCkub24oInRvdWNoZW5kLnpvb20gdG91Y2hjYW5jZWwuem9vbSIsQykuc3R5bGUoInRvdWNoLWFjdGlvbiIsIm5vbmUiKS5zdHlsZSgiLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yIiwicmdiYSgwLDAsMCwwKSIpfWZ1bmN0aW9uIGcodCxlKXtyZXR1cm4oZT1NYXRoLm1heChzWzBdLE1hdGgubWluKHNbMV0sZSkpKT09PXQuaz90Om5ldyBjcHQoZSx0LngsdC55KX1mdW5jdGlvbiBfKHQsZSxuKXt2YXIgaT1lWzBdLW5bMF0qdC5rLHI9ZVsxXS1uWzFdKnQuaztyZXR1cm4gaT09PXQueCYmcj09PXQueT90Om5ldyBjcHQodC5rLGkscil9ZnVuY3Rpb24geSh0KXtyZXR1cm5bKCt0WzBdWzBdKyArdFsxXVswXSkvMiwoK3RbMF1bMV0rICt0WzFdWzFdKS8yXX1mdW5jdGlvbiB2KHQsZSxuKXt0Lm9uKCJzdGFydC56b29tIiwoZnVuY3Rpb24oKXtiKHRoaXMsYXJndW1lbnRzKS5zdGFydCgpfSkpLm9uKCJpbnRlcnJ1cHQuem9vbSBlbmQuem9vbSIsKGZ1bmN0aW9uKCl7Yih0aGlzLGFyZ3VtZW50cykuZW5kKCl9KSkudHdlZW4oInpvb20iLChmdW5jdGlvbigpe3ZhciB0PXRoaXMscj1hcmd1bWVudHMsbz1iKHQsciksYT1pLmFwcGx5KHQscikscz1ufHx5KGEpLGw9TWF0aC5tYXgoYVsxXVswXS1hWzBdWzBdLGFbMV1bMV0tYVswXVsxXSksYz10Ll9fem9vbSxoPSJmdW5jdGlvbiI9PXR5cGVvZiBlP2UuYXBwbHkodCxyKTplLGQ9dShjLmludmVydChzKS5jb25jYXQobC9jLmspLGguaW52ZXJ0KHMpLmNvbmNhdChsL2guaykpO3JldHVybiBmdW5jdGlvbih0KXtpZigxPT09dCl0PWg7ZWxzZXt2YXIgZT1kKHQpLG49bC9lWzJdO3Q9bmV3IGNwdChuLHNbMF0tZVswXSpuLHNbMV0tZVsxXSpuKX1vLnpvb20obnVsbCx0KX19KSl9ZnVuY3Rpb24gYih0LGUpe2Zvcih2YXIgbixpPTAscj1oLmxlbmd0aDtpPHI7KytpKWlmKChuPWhbaV0pLnRoYXQ9PT10KXJldHVybiBuO3JldHVybiBuZXcgeCh0LGUpfWZ1bmN0aW9uIHgodCxlKXt0aGlzLnRoYXQ9dCx0aGlzLmFyZ3M9ZSx0aGlzLmluZGV4PS0xLHRoaXMuYWN0aXZlPTAsdGhpcy5leHRlbnQ9aS5hcHBseSh0LGUpfWZ1bmN0aW9uIHcoKXtpZihuLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl7dmFyIHQ9Yih0aGlzLGFyZ3VtZW50cyksZT10aGlzLl9fem9vbSxpPU1hdGgubWF4KHNbMF0sTWF0aC5taW4oc1sxXSxlLmsqTWF0aC5wb3coMixvLmFwcGx5KHRoaXMsYXJndW1lbnRzKSkpKSxhPWV1dCh0aGlzKTtpZih0LndoZWVsKXQubW91c2VbMF1bMF09PT1hWzBdJiZ0Lm1vdXNlWzBdWzFdPT09YVsxXXx8KHQubW91c2VbMV09ZS5pbnZlcnQodC5tb3VzZVswXT1hKSksY2xlYXJUaW1lb3V0KHQud2hlZWwpO2Vsc2V7aWYoZS5rPT09aSlyZXR1cm47dC5tb3VzZT1bYSxlLmludmVydChhKV0sY2R0KHRoaXMpLHQuc3RhcnQoKX1tcHQoKSx0LndoZWVsPXNldFRpbWVvdXQoYywxNTApLHQuem9vbSgibW91c2UiLHIoXyhnKGUsaSksdC5tb3VzZVswXSx0Lm1vdXNlWzFdKSx0LmV4dGVudCxsKSl9ZnVuY3Rpb24gYygpe3Qud2hlZWw9bnVsbCx0LmVuZCgpfX1mdW5jdGlvbiBTKCl7aWYoIWUmJm4uYXBwbHkodGhpcyxhcmd1bWVudHMpKXt2YXIgdD1iKHRoaXMsYXJndW1lbnRzKSxpPUpjdChGY3Qudmlldykub24oIm1vdXNlbW92ZS56b29tIixjLCEwKS5vbigibW91c2V1cC56b29tIix1LCEwKSxvPWV1dCh0aGlzKSxhPUZjdC5jbGllbnRYLHM9RmN0LmNsaWVudFk7cnV0KEZjdC52aWV3KSxmcHQoKSx0Lm1vdXNlPVtvLHRoaXMuX196b29tLmludmVydChvKV0sY2R0KHRoaXMpLHQuc3RhcnQoKX1mdW5jdGlvbiBjKCl7aWYobXB0KCksIXQubW92ZWQpe3ZhciBlPUZjdC5jbGllbnRYLWEsbj1GY3QuY2xpZW50WS1zO3QubW92ZWQ9ZSplK24qbj5mfXQuem9vbSgibW91c2UiLHIoXyh0LnRoYXQuX196b29tLHQubW91c2VbMF09ZXV0KHQudGhhdCksdC5tb3VzZVsxXSksdC5leHRlbnQsbCkpfWZ1bmN0aW9uIHUoKXtpLm9uKCJtb3VzZW1vdmUuem9vbSBtb3VzZXVwLnpvb20iLG51bGwpLG91dChGY3Qudmlldyx0Lm1vdmVkKSxtcHQoKSx0LmVuZCgpfX1mdW5jdGlvbiBNKCl7aWYobi5hcHBseSh0aGlzLGFyZ3VtZW50cykpe3ZhciB0PXRoaXMuX196b29tLGU9ZXV0KHRoaXMpLG89dC5pbnZlcnQoZSksYT10LmsqKEZjdC5zaGlmdEtleT8uNToyKSxzPXIoXyhnKHQsYSksZSxvKSxpLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxsKTttcHQoKSxjPjA/SmN0KHRoaXMpLnRyYW5zaXRpb24oKS5kdXJhdGlvbihjKS5jYWxsKHYscyxlKTpKY3QodGhpcykuY2FsbChtLnRyYW5zZm9ybSxzKX19ZnVuY3Rpb24gRSgpe2lmKG4uYXBwbHkodGhpcyxhcmd1bWVudHMpKXt2YXIgZSxpLHIsbyxhPWIodGhpcyxhcmd1bWVudHMpLHM9RmN0LmNoYW5nZWRUb3VjaGVzLGw9cy5sZW5ndGg7Zm9yKGZwdCgpLGk9MDtpPGw7KytpKW89W289bnV0KHRoaXMscywocj1zW2ldKS5pZGVudGlmaWVyKSx0aGlzLl9fem9vbS5pbnZlcnQobyksci5pZGVudGlmaWVyXSxhLnRvdWNoMD9hLnRvdWNoMXx8KGEudG91Y2gxPW8pOihhLnRvdWNoMD1vLGU9ITApO2lmKHQmJih0PWNsZWFyVGltZW91dCh0KSwhYS50b3VjaDEpKXJldHVybiBhLmVuZCgpLHZvaWQoKG89SmN0KHRoaXMpLm9uKCJkYmxjbGljay56b29tIikpJiZvLmFwcGx5KHRoaXMsYXJndW1lbnRzKSk7ZSYmKHQ9c2V0VGltZW91dCgoZnVuY3Rpb24oKXt0PW51bGx9KSxwKSxjZHQodGhpcyksYS5zdGFydCgpKX19ZnVuY3Rpb24gVCgpe3ZhciBlLG4saSxvLGE9Yih0aGlzLGFyZ3VtZW50cykscz1GY3QuY2hhbmdlZFRvdWNoZXMsYz1zLmxlbmd0aDtmb3IobXB0KCksdCYmKHQ9Y2xlYXJUaW1lb3V0KHQpKSxlPTA7ZTxjOysrZSlpPW51dCh0aGlzLHMsKG49c1tlXSkuaWRlbnRpZmllciksYS50b3VjaDAmJmEudG91Y2gwWzJdPT09bi5pZGVudGlmaWVyP2EudG91Y2gwWzBdPWk6YS50b3VjaDEmJmEudG91Y2gxWzJdPT09bi5pZGVudGlmaWVyJiYoYS50b3VjaDFbMF09aSk7aWYobj1hLnRoYXQuX196b29tLGEudG91Y2gxKXt2YXIgdT1hLnRvdWNoMFswXSxoPWEudG91Y2gwWzFdLGQ9YS50b3VjaDFbMF0scD1hLnRvdWNoMVsxXSxmPShmPWRbMF0tdVswXSkqZisoZj1kWzFdLXVbMV0pKmYsbT0obT1wWzBdLWhbMF0pKm0rKG09cFsxXS1oWzFdKSptO249ZyhuLE1hdGguc3FydChmL20pKSxpPVsodVswXStkWzBdKS8yLCh1WzFdK2RbMV0pLzJdLG89WyhoWzBdK3BbMF0pLzIsKGhbMV0rcFsxXSkvMl19ZWxzZXtpZighYS50b3VjaDApcmV0dXJuO2k9YS50b3VjaDBbMF0sbz1hLnRvdWNoMFsxXX1hLnpvb20oInRvdWNoIixyKF8obixpLG8pLGEuZXh0ZW50LGwpKX1mdW5jdGlvbiBDKCl7dmFyIHQsbixpPWIodGhpcyxhcmd1bWVudHMpLHI9RmN0LmNoYW5nZWRUb3VjaGVzLG89ci5sZW5ndGg7Zm9yKGZwdCgpLGUmJmNsZWFyVGltZW91dChlKSxlPXNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7ZT1udWxsfSkscCksdD0wO3Q8bzsrK3Qpbj1yW3RdLGkudG91Y2gwJiZpLnRvdWNoMFsyXT09PW4uaWRlbnRpZmllcj9kZWxldGUgaS50b3VjaDA6aS50b3VjaDEmJmkudG91Y2gxWzJdPT09bi5pZGVudGlmaWVyJiZkZWxldGUgaS50b3VjaDE7aS50b3VjaDEmJiFpLnRvdWNoMCYmKGkudG91Y2gwPWkudG91Y2gxLGRlbGV0ZSBpLnRvdWNoMSksaS50b3VjaDA/aS50b3VjaDBbMV09dGhpcy5fX3pvb20uaW52ZXJ0KGkudG91Y2gwWzBdKTppLmVuZCgpfXJldHVybiBtLnRyYW5zZm9ybT1mdW5jdGlvbih0LGUpe3ZhciBuPXQuc2VsZWN0aW9uP3Quc2VsZWN0aW9uKCk6dDtuLnByb3BlcnR5KCJfX3pvb20iLHlwdCksdCE9PW4/dih0LGUpOm4uaW50ZXJydXB0KCkuZWFjaCgoZnVuY3Rpb24oKXtiKHRoaXMsYXJndW1lbnRzKS5zdGFydCgpLnpvb20obnVsbCwiZnVuY3Rpb24iPT10eXBlb2YgZT9lLmFwcGx5KHRoaXMsYXJndW1lbnRzKTplKS5lbmQoKX0pKX0sbS5zY2FsZUJ5PWZ1bmN0aW9uKHQsZSl7bS5zY2FsZVRvKHQsKGZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fX3pvb20uayxuPSJmdW5jdGlvbiI9PXR5cGVvZiBlP2UuYXBwbHkodGhpcyxhcmd1bWVudHMpOmU7cmV0dXJuIHQqbn0pKX0sbS5zY2FsZVRvPWZ1bmN0aW9uKHQsZSl7bS50cmFuc2Zvcm0odCwoZnVuY3Rpb24oKXt2YXIgdD1pLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxuPXRoaXMuX196b29tLG89eSh0KSxhPW4uaW52ZXJ0KG8pLHM9ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk6ZTtyZXR1cm4gcihfKGcobixzKSxvLGEpLHQsbCl9KSl9LG0udHJhbnNsYXRlQnk9ZnVuY3Rpb24odCxlLG4pe20udHJhbnNmb3JtKHQsKGZ1bmN0aW9uKCl7cmV0dXJuIHIodGhpcy5fX3pvb20udHJhbnNsYXRlKCJmdW5jdGlvbiI9PXR5cGVvZiBlP2UuYXBwbHkodGhpcyxhcmd1bWVudHMpOmUsImZ1bmN0aW9uIj09dHlwZW9mIG4/bi5hcHBseSh0aGlzLGFyZ3VtZW50cyk6biksaS5hcHBseSh0aGlzLGFyZ3VtZW50cyksbCl9KSl9LG0udHJhbnNsYXRlVG89ZnVuY3Rpb24odCxlLG4pe20udHJhbnNmb3JtKHQsKGZ1bmN0aW9uKCl7dmFyIHQ9aS5hcHBseSh0aGlzLGFyZ3VtZW50cyksbz10aGlzLl9fem9vbSxhPXkodCk7cmV0dXJuIHIoZHB0LnRyYW5zbGF0ZShhWzBdLGFbMV0pLnNjYWxlKG8uaykudHJhbnNsYXRlKCJmdW5jdGlvbiI9PXR5cGVvZiBlPy1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKTotZSwiZnVuY3Rpb24iPT10eXBlb2Ygbj8tbi5hcHBseSh0aGlzLGFyZ3VtZW50cyk6LW4pLHQsbCl9KSl9LHgucHJvdG90eXBlPXtzdGFydDpmdW5jdGlvbigpe3JldHVybiAxPT0rK3RoaXMuYWN0aXZlJiYodGhpcy5pbmRleD1oLnB1c2godGhpcyktMSx0aGlzLmVtaXQoInN0YXJ0IikpLHRoaXN9LHpvb206ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5tb3VzZSYmIm1vdXNlIiE9PXQmJih0aGlzLm1vdXNlWzFdPWUuaW52ZXJ0KHRoaXMubW91c2VbMF0pKSx0aGlzLnRvdWNoMCYmInRvdWNoIiE9PXQmJih0aGlzLnRvdWNoMFsxXT1lLmludmVydCh0aGlzLnRvdWNoMFswXSkpLHRoaXMudG91Y2gxJiYidG91Y2giIT09dCYmKHRoaXMudG91Y2gxWzFdPWUuaW52ZXJ0KHRoaXMudG91Y2gxWzBdKSksdGhpcy50aGF0Ll9fem9vbT1lLHRoaXMuZW1pdCgiem9vbSIpLHRoaXN9LGVuZDpmdW5jdGlvbigpe3JldHVybiAwPT0tLXRoaXMuYWN0aXZlJiYoaC5zcGxpY2UodGhpcy5pbmRleCwxKSx0aGlzLmluZGV4PS0xLHRoaXMuZW1pdCgiZW5kIikpLHRoaXN9LGVtaXQ6ZnVuY3Rpb24odCl7IShmdW5jdGlvbiBlKHQsbixpLHIpe3ZhciBvPUZjdDt0LnNvdXJjZUV2ZW50PUZjdCxGY3Q9dDt0cnl7cmV0dXJuIG4uYXBwbHkoaSxyKX1maW5hbGx5e0ZjdD1vfX0pKG5ldyBscHQobSx0LHRoaXMudGhhdC5fX3pvb20pLGQuYXBwbHksZCxbdCx0aGlzLnRoYXQsdGhpcy5hcmdzXSl9fSxtLndoZWVsRGVsdGE9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpzcHQoK3QpLG0pOm99LG0uZmlsdGVyPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6c3B0KCEhdCksbSk6bn0sbS50b3VjaGFibGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpzcHQoISF0KSxtKTphfSxtLmV4dGVudD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0iZnVuY3Rpb24iPT10eXBlb2YgdD90OnNwdChbWyt0WzBdWzBdLCt0WzBdWzFdXSxbK3RbMV1bMF0sK3RbMV1bMV1dXSksbSk6aX0sbS5zY2FsZUV4dGVudD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oc1swXT0rdFswXSxzWzFdPSt0WzFdLG0pOltzWzBdLHNbMV1dfSxtLnRyYW5zbGF0ZUV4dGVudD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obFswXVswXT0rdFswXVswXSxsWzFdWzBdPSt0WzFdWzBdLGxbMF1bMV09K3RbMF1bMV0sbFsxXVsxXT0rdFsxXVsxXSxtKTpbW2xbMF1bMF0sbFswXVsxXV0sW2xbMV1bMF0sbFsxXVsxXV1dfSxtLmNvbnN0cmFpbj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj10LG0pOnJ9LG0uZHVyYXRpb249ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGM9K3QsbSk6Y30sbS5pbnRlcnBvbGF0ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odT10LG0pOnV9LG0ub249ZnVuY3Rpb24oKXt2YXIgdD1kLm9uLmFwcGx5KGQsYXJndW1lbnRzKTtyZXR1cm4gdD09PWQ/bTp0fSxtLmNsaWNrRGlzdGFuY2U9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGY9KHQ9K3QpKnQsbSk6TWF0aC5zcXJ0KGYpfSxtfSx6b29tVHJhbnNmb3JtOnBwdCx6b29tSWRlbnRpdHk6ZHB0fSkpOwovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqCiAgICAgKiBAZmlsZW92ZXJ2aWV3IG1hbnVhbGx5IGFkZCBkMy1zZWxlY3Rpb24tbXVsdGkgdG8gZDMgZGVmYXVsdCBidW5kbGUuIE1vc3Qgb2YgdGhpcyBjb2RlIGlzCiAgICAgKiBjb3BpZWQgZnJvbSBkMy1zZWxlY3Rpb24tbXVsdGlAMS4wLjAuCiAgICAgKiBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2QzL2QzLXNlbGVjdGlvbi1tdWx0aS9pc3N1ZXMvMTEgZm9yIHdoeSB3ZSBoYXZlIHRvIGRvIHRoaXMKICAgICAqLwpPYmplY3QuZGVmaW5lUHJvcGVydHkoe30sIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBabXQ9d3B0LEptdD13cHQ7ZnVuY3Rpb24gUW10KHQsZSl7cmV0dXJuIHQuZWFjaCgoZnVuY3Rpb24oKXt2YXIgdD1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxuPVptdC5zZWxlY3QodGhpcyk7Zm9yKHZhciBpIGluIHQpbi5hdHRyKGksdFtpXSl9KSl9ZnVuY3Rpb24gdGd0KHQsZSl7Zm9yKHZhciBuIGluIGUpdC5hdHRyKG4sZVtuXSk7cmV0dXJuIHR9ZnVuY3Rpb24gZWd0KHQsZSxuKXtyZXR1cm4gdC5lYWNoKChmdW5jdGlvbigpe3ZhciB0PWUuYXBwbHkodGhpcyxhcmd1bWVudHMpLGk9Wm10LnNlbGVjdCh0aGlzKTtmb3IodmFyIHIgaW4gdClpLnN0eWxlKHIsdFtyXSxuKX0pKX1mdW5jdGlvbiBuZ3QodCxlLG4pe2Zvcih2YXIgaSBpbiBlKXQuc3R5bGUoaSxlW2ldLG4pO3JldHVybiB0fWZ1bmN0aW9uIGlndCh0LGUpe3JldHVybiB0LmVhY2goKGZ1bmN0aW9uKCl7dmFyIHQ9ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyksbj1abXQuc2VsZWN0KHRoaXMpO2Zvcih2YXIgaSBpbiB0KW4ucHJvcGVydHkoaSx0W2ldKX0pKX1mdW5jdGlvbiByZ3QodCxlKXtmb3IodmFyIG4gaW4gZSl0LnByb3BlcnR5KG4sZVtuXSk7cmV0dXJuIHR9ZnVuY3Rpb24gb2d0KHQsZSl7cmV0dXJuIHQuZWFjaCgoZnVuY3Rpb24oKXt2YXIgbj1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxpPVptdC5zZWxlY3QodGhpcykudHJhbnNpdGlvbih0KTtmb3IodmFyIHIgaW4gbilpLmF0dHIocixuW3JdKX0pKX1mdW5jdGlvbiBhZ3QodCxlKXtmb3IodmFyIG4gaW4gZSl0LmF0dHIobixlW25dKTtyZXR1cm4gdH1mdW5jdGlvbiBzZ3QodCxlLG4pe3JldHVybiB0LmVhY2goKGZ1bmN0aW9uKCl7dmFyIGk9ZS5hcHBseSh0aGlzLGFyZ3VtZW50cykscj1abXQuc2VsZWN0KHRoaXMpLnRyYW5zaXRpb24odCk7Zm9yKHZhciBvIGluIGkpci5zdHlsZShvLGlbb10sbil9KSl9ZnVuY3Rpb24gbGd0KHQsZSxuKXtmb3IodmFyIGkgaW4gZSl0LnN0eWxlKGksZVtpXSxuKTtyZXR1cm4gdH1abXQuc2VsZWN0aW9uLnByb3RvdHlwZS5hdHRycz1mdW5jdGlvbiBjZ3QodCl7cmV0dXJuKCJmdW5jdGlvbiI9PXR5cGVvZiB0P1FtdDp0Z3QpKHRoaXMsdCl9LFptdC5zZWxlY3Rpb24ucHJvdG90eXBlLnN0eWxlcz1mdW5jdGlvbiB1Z3QodCxlKXtyZXR1cm4oImZ1bmN0aW9uIj09dHlwZW9mIHQ/ZWd0Om5ndCkodGhpcyx0LG51bGw9PWU/IiI6ZSl9LFptdC5zZWxlY3Rpb24ucHJvdG90eXBlLnByb3BlcnRpZXM9ZnVuY3Rpb24gaGd0KHQpe3JldHVybigiZnVuY3Rpb24iPT10eXBlb2YgdD9pZ3Q6cmd0KSh0aGlzLHQpfSxKbXQudHJhbnNpdGlvbi5wcm90b3R5cGUuYXR0cnM9ZnVuY3Rpb24gZGd0KHQpe3JldHVybigiZnVuY3Rpb24iPT10eXBlb2YgdD9vZ3Q6YWd0KSh0aGlzLHQpfSxKbXQudHJhbnNpdGlvbi5wcm90b3R5cGUuc3R5bGVzPWZ1bmN0aW9uIHBndCh0LGUpe3JldHVybigiZnVuY3Rpb24iPT10eXBlb2YgdD9zZ3Q6bGd0KSh0aGlzLHQsbnVsbD09ZT8iIjplKX07dmFyIGZndD17fSxtZ3Q9e30sZ2d0PU1lKEZtKSxfZ3Q9e307T2JqZWN0LmRlZmluZVByb3BlcnR5KF9ndCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIHlndD13cHQ7X2d0LmNvZXJjZUV4dGVybmFsRDM9ZnVuY3Rpb24gdmd0KHQpe2lmKG51bGw9PXQuYXR0cnMpe2lmKG51bGw9PXQubm9kZXMpe3ZhciBlPVtdO3JldHVybiB0LmVhY2goKGZ1bmN0aW9uKCl7ZS5wdXNoKHRoaXMpfSkpLHlndC5zZWxlY3RBbGwoZSl9cmV0dXJuIHlndC5zZWxlY3RBbGwodC5ub2RlcygpKX1yZXR1cm4gdH07dmFyIGJndD17fTsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi9PYmplY3QuZGVmaW5lUHJvcGVydHkoYmd0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxiZ3QubWFrZUVudW09ZnVuY3Rpb24geGd0KHQpe3JldHVybiB0LnJlZHVjZSgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdFtlXT1lLHR9KSx7fSl9LAovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqLwpPYmplY3QuZGVmaW5lUHJvcGVydHkobWd0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgd2d0PV9ndCxTZ3Q9e2xpbmVhcjpnZ3QuZWFzZUxpbmVhcixxdWFkOmdndC5lYXNlUXVhZCxxdWFkSW46Z2d0LmVhc2VRdWFkSW4scXVhZE91dDpnZ3QuZWFzZVF1YWRPdXQscXVhZEluT3V0OmdndC5lYXNlUXVhZEluT3V0LGN1YmljOmdndC5lYXNlQ3ViaWMsY3ViaWNJbjpnZ3QuZWFzZUN1YmljSW4sY3ViaWNPdXQ6Z2d0LmVhc2VDdWJpY091dCxjdWJpY0luT3V0OmdndC5lYXNlQ3ViaWNJbk91dCxwb2x5OmdndC5lYXNlUG9seSxwb2x5SW46Z2d0LmVhc2VQb2x5SW4scG9seU91dDpnZ3QuZWFzZVBvbHlPdXQscG9seUluT3V0OmdndC5lYXNlUG9seUluT3V0LHNpbjpnZ3QuZWFzZVNpbixzaW5JbjpnZ3QuZWFzZVNpbkluLHNpbk91dDpnZ3QuZWFzZVNpbk91dCxzaW5Jbk91dDpnZ3QuZWFzZVNpbkluT3V0LGV4cDpnZ3QuZWFzZUV4cCxleHBJbjpnZ3QuZWFzZUV4cEluLGV4cE91dDpnZ3QuZWFzZUV4cE91dCxleHBJbk91dDpnZ3QuZWFzZUV4cEluT3V0LGNpcmNsZTpnZ3QuZWFzZUNpcmNsZSxjaXJjbGVJbjpnZ3QuZWFzZUNpcmNsZUluLGNpcmNsZU91dDpnZ3QuZWFzZUNpcmNsZU91dCxjaXJjbGVJbk91dDpnZ3QuZWFzZUNpcmNsZUluT3V0LGJvdW5jZTpnZ3QuZWFzZUJvdW5jZSxib3VuY2VJbjpnZ3QuZWFzZUJvdW5jZUluLGJvdW5jZU91dDpnZ3QuZWFzZUJvdW5jZU91dCxib3VuY2VJbk91dDpnZ3QuZWFzZUJvdW5jZUluT3V0LGJhY2s6Z2d0LmVhc2VCYWNrLGJhY2tJbjpnZ3QuZWFzZUJhY2tJbixiYWNrT3V0OmdndC5lYXNlQmFja091dCxiYWNrSW5PdXQ6Z2d0LmVhc2VCYWNrSW5PdXQsZWxhc3RpYzpnZ3QuZWFzZUVsYXN0aWMsZWxhc3RpY0luOmdndC5lYXNlRWxhc3RpY0luLGVsYXN0aWNPdXQ6Z2d0LmVhc2VFbGFzdGljT3V0LGVsYXN0aWNJbk91dDpnZ3QuZWFzZUVsYXN0aWNJbk91dH07bWd0LkVhc2VOYW1lPWJndC5tYWtlRW51bShbImxpbmVhciIsInF1YWQiLCJxdWFkSW4iLCJxdWFkT3V0IiwicXVhZEluT3V0IiwiY3ViaWMiLCJjdWJpY0luIiwiY3ViaWNPdXQiLCJjdWJpY0luT3V0IiwicG9seSIsInBvbHlJbiIsInBvbHlPdXQiLCJwb2x5SW5PdXQiLCJzaW4iLCJzaW5JbiIsInNpbk91dCIsInNpbkluT3V0IiwiZXhwIiwiZXhwSW4iLCJleHBPdXQiLCJleHBJbk91dCIsImNpcmNsZSIsImNpcmNsZUluIiwiY2lyY2xlT3V0IiwiY2lyY2xlSW5PdXQiLCJib3VuY2UiLCJib3VuY2VJbiIsImJvdW5jZU91dCIsImJvdW5jZUluT3V0IiwiYmFjayIsImJhY2tJbiIsImJhY2tPdXQiLCJiYWNrSW5PdXQiLCJlbGFzdGljIiwiZWxhc3RpY0luIiwiZWxhc3RpY091dCIsImVsYXN0aWNJbk91dCJdKTt2YXIgTWd0PShmdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt0aGlzLl9zdGFydERlbGF5PXQuX0RFRkFVTFRfU1RBUlRfREVMQVlfTUlMTElTRUNPTkRTLHRoaXMuX3N0ZXBEdXJhdGlvbj10Ll9ERUZBVUxUX1NURVBfRFVSQVRJT05fTUlMTElTRUNPTkRTLHRoaXMuX3N0ZXBEZWxheT10Ll9ERUZBVUxUX0lURVJBVElWRV9ERUxBWV9NSUxMSVNFQ09ORFMsdGhpcy5fbWF4VG90YWxEdXJhdGlvbj10Ll9ERUZBVUxUX01BWF9UT1RBTF9EVVJBVElPTl9NSUxMSVNFQ09ORFMsdGhpcy5fZWFzaW5nTW9kZT10Ll9ERUZBVUxUX0VBU0lOR19NT0RFfXJldHVybiB0LnByb3RvdHlwZS50b3RhbFRpbWU9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fZ2V0QWRqdXN0ZWRJdGVyYXRpdmVEZWxheSh0KTtyZXR1cm4gdGhpcy5zdGFydERlbGF5KCkrZSpNYXRoLm1heCh0LTEsMCkrdGhpcy5zdGVwRHVyYXRpb24oKX0sdC5wcm90b3R5cGUuYW5pbWF0ZT1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMsaT0odD13Z3QuY29lcmNlRXh0ZXJuYWxEMyh0KSkuc2l6ZSgpLHI9dGhpcy5fZ2V0QWRqdXN0ZWRJdGVyYXRpdmVEZWxheShpKTtyZXR1cm4gdC50cmFuc2l0aW9uKCkuZWFzZSh0aGlzLl9nZXRFYXNlRmFjdG9yeSgpKS5kdXJhdGlvbih0aGlzLnN0ZXBEdXJhdGlvbigpKS5kZWxheSgoZnVuY3Rpb24odCxlKXtyZXR1cm4gbi5zdGFydERlbGF5KCkrciplfSkpLmF0dHJzKGUpfSx0LnByb3RvdHlwZS5zdGFydERlbGF5PWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuX3N0YXJ0RGVsYXk6KHRoaXMuX3N0YXJ0RGVsYXk9dCx0aGlzKX0sdC5wcm90b3R5cGUuc3RlcER1cmF0aW9uPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P01hdGgubWluKHRoaXMuX3N0ZXBEdXJhdGlvbix0aGlzLl9tYXhUb3RhbER1cmF0aW9uKToodGhpcy5fc3RlcER1cmF0aW9uPXQsdGhpcyl9LHQucHJvdG90eXBlLnN0ZXBEZWxheT1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9zdGVwRGVsYXk6KHRoaXMuX3N0ZXBEZWxheT10LHRoaXMpfSx0LnByb3RvdHlwZS5tYXhUb3RhbER1cmF0aW9uPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuX21heFRvdGFsRHVyYXRpb246KHRoaXMuX21heFRvdGFsRHVyYXRpb249dCx0aGlzKX0sdC5wcm90b3R5cGUuZWFzaW5nTW9kZT1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9lYXNpbmdNb2RlOih0aGlzLl9lYXNpbmdNb2RlPXQsdGhpcyl9LHQucHJvdG90eXBlLl9nZXRFYXNlRmFjdG9yeT1mdW5jdGlvbigpe3ZhciB0PXRoaXMuZWFzaW5nTW9kZSgpO2lmKCJzdHJpbmciPT10eXBlb2YgdCl7dmFyIGU9U2d0W3RdO3JldHVybiBudWxsPT1lP1NndC5saW5lYXI6ZX1yZXR1cm4gdH0sdC5wcm90b3R5cGUuX2dldEFkanVzdGVkSXRlcmF0aXZlRGVsYXk9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5tYXhUb3RhbER1cmF0aW9uKCktdGhpcy5zdGVwRHVyYXRpb24oKSxuPShlPU1hdGgubWF4KGUsMCkpL01hdGgubWF4KHQtMSwxKTtyZXR1cm4gTWF0aC5taW4odGhpcy5zdGVwRGVsYXkoKSxuKX0sdC5fREVGQVVMVF9TVEFSVF9ERUxBWV9NSUxMSVNFQ09ORFM9MCx0Ll9ERUZBVUxUX1NURVBfRFVSQVRJT05fTUlMTElTRUNPTkRTPTMwMCx0Ll9ERUZBVUxUX0lURVJBVElWRV9ERUxBWV9NSUxMSVNFQ09ORFM9MTUsdC5fREVGQVVMVF9NQVhfVE9UQUxfRFVSQVRJT05fTUlMTElTRUNPTkRTPTEvMCx0Ll9ERUZBVUxUX0VBU0lOR19NT0RFPSJleHBPdXQiLHR9KSgpO21ndC5FYXNpbmc9TWd0O3ZhciBFZ3Q9e307Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovT2JqZWN0LmRlZmluZVByb3BlcnR5KEVndCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIFRndD1fZ3QsQ2d0PShmdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHQucHJvdG90eXBlLnRvdGFsVGltZT1mdW5jdGlvbih0KXtyZXR1cm4gMH0sdC5wcm90b3R5cGUuYW5pbWF0ZT1mdW5jdGlvbih0LGUpe3JldHVybih0PVRndC5jb2VyY2VFeHRlcm5hbEQzKHQpKS5hdHRycyhlKX0sdH0pKCk7RWd0Lk51bGw9Q2d0LChmdW5jdGlvbih0KXsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi8KT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBlPUJPO2UuX19leHBvcnRTdGFyKG1ndCx0KSxlLl9fZXhwb3J0U3RhcihFZ3QsdCl9KShmZ3QpO3ZhciBBZ3Q9e30sa2d0PXt9LExndD17fSxQZ3Q9e30sTmd0PXt9LElndD17fSxSZ3Q9e30sT2d0PXt9LHpndD17fTtPYmplY3QuZGVmaW5lUHJvcGVydHkoemd0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgRGd0PShmdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7dGhpcy5jYWNoZT17fSx0aGlzLmNvbXB1dGU9dH1yZXR1cm4gdC5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmNhY2hlLmhhc093blByb3BlcnR5KHQpfHwodGhpcy5jYWNoZVt0XT10aGlzLmNvbXB1dGUodCkpLHRoaXMuY2FjaGVbdF19LHQucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2FjaGU9e30sdGhpc30sdH0pKCk7emd0LkNhY2hlPURndDt2YXIgQmd0PXt9O09iamVjdC5kZWZpbmVQcm9wZXJ0eShCZ3QsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBIZ3Q9KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4gdC5hcnJheUVxPWZ1bmN0aW9uKHQsZSl7aWYobnVsbD09dHx8bnVsbD09ZSlyZXR1cm4gdD09PWU7aWYodC5sZW5ndGghPT1lLmxlbmd0aClyZXR1cm4hMTtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKylpZih0W25dIT09ZVtuXSlyZXR1cm4hMTtyZXR1cm4hMH0sdC5vYmpFcT1mdW5jdGlvbihlLG4pe2lmKG51bGw9PWV8fG51bGw9PW4pcmV0dXJuIGU9PT1uO3ZhciBpPU9iamVjdC5rZXlzKGUpLnNvcnQoKSxyPU9iamVjdC5rZXlzKG4pLnNvcnQoKSxvPWkubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gZVt0XX0pKSxhPXIubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gblt0XX0pKTtyZXR1cm4gdC5hcnJheUVxKGkscikmJnQuYXJyYXlFcShvLGEpfSx0LnN0cmljdEVxPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQ9PT1lfSx0LmRlZmF1bHRzPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT1bXSxuPTE7bjxhcmd1bWVudHMubGVuZ3RoO24rKyllW24tMV09YXJndW1lbnRzW25dO2lmKG51bGw9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNvbnZlcnQgdW5kZWZpbmVkIG9yIG51bGwgdG8gb2JqZWN0Iik7dmFyIGk9T2JqZWN0KHQpO3JldHVybiBlLmZvckVhY2goKGZ1bmN0aW9uKHQpe2lmKG51bGwhPXQpZm9yKHZhciBlIGluIHQpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsZSkmJihpW2VdPXRbZV0pfSkpLGl9LHR9KSgpO0JndC5NZXRob2RzPUhndDt2YXIgRmd0PXt9O09iamVjdC5kZWZpbmVQcm9wZXJ0eShGZ3QsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBWZ3Q9KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4gdC5jb21iaW5lV2hpdGVzcGFjZT1mdW5jdGlvbih0KXtyZXR1cm4gdC5yZXBsYWNlKC9bIFx0XSsvZywiICIpfSx0LmlzTm90RW1wdHlTdHJpbmc9ZnVuY3Rpb24odCl7cmV0dXJuIHQmJiIiIT09dC50cmltKCl9LHQudHJpbVN0YXJ0PWZ1bmN0aW9uKGUsbil7aWYoIWUpcmV0dXJuIGU7dmFyIGk9ZS5zcGxpdCgiIikscj1uP2Z1bmN0aW9uKGUpe3JldHVybiBlLnNwbGl0KG4pLnNvbWUodC5pc05vdEVtcHR5U3RyaW5nKX06dC5pc05vdEVtcHR5U3RyaW5nO3JldHVybiBpLnJlZHVjZSgoZnVuY3Rpb24odCxlKXtyZXR1cm4gcih0K2UpP3QrZTp0fSksIiIpfSx0LnRyaW1FbmQ9ZnVuY3Rpb24oZSxuKXtpZighZSlyZXR1cm4gZTt2YXIgaT1lLnNwbGl0KCIiKTtyZXR1cm4gaS5yZXZlcnNlKCksKGk9dC50cmltU3RhcnQoaS5qb2luKCIiKSxuKS5zcGxpdCgiIikpLnJldmVyc2UoKSxpLmpvaW4oIiIpfSx0fSkoKTtGZ3QuU3RyaW5nTWV0aG9kcz1WZ3Q7dmFyIFVndD17fTtPYmplY3QuZGVmaW5lUHJvcGVydHkoVWd0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgamd0PShmdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt0aGlzLldvcmREaXZpZGVyUmVnRXhwPW5ldyBSZWdFeHAoIlxcVyIpLHRoaXMuV2hpdGVzcGFjZVJlZ0V4cD1uZXcgUmVnRXhwKCJcXHMiKX1yZXR1cm4gdC5wcm90b3R5cGUudG9rZW5pemU9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztyZXR1cm4gdC5zcGxpdCgiIikucmVkdWNlKChmdW5jdGlvbih0LG4pe3JldHVybiB0LnNsaWNlKDAsLTEpLmNvbmNhdChlLnNob3VsZENyZWF0ZU5ld1Rva2VuKHRbdC5sZW5ndGgtMV0sbikpfSksWyIiXSl9LHQucHJvdG90eXBlLnNob3VsZENyZWF0ZU5ld1Rva2VuPWZ1bmN0aW9uKHQsZSl7aWYoIXQpcmV0dXJuW2VdO3ZhciBuPXRbdC5sZW5ndGgtMV07cmV0dXJuIHRoaXMuV2hpdGVzcGFjZVJlZ0V4cC50ZXN0KG4pJiZ0aGlzLldoaXRlc3BhY2VSZWdFeHAudGVzdChlKT9bdCtlXTp0aGlzLldoaXRlc3BhY2VSZWdFeHAudGVzdChuKXx8dGhpcy5XaGl0ZXNwYWNlUmVnRXhwLnRlc3QoZSk/W3QsZV06dGhpcy5Xb3JkRGl2aWRlclJlZ0V4cC50ZXN0KG4pP249PT1lP1t0K2VdOlt0LGVdOlt0K2VdfSx0fSkoKTtVZ3QuVG9rZW5pemVyPWpndCwoZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlKXtmb3IodmFyIG4gaW4gZSl0Lmhhc093blByb3BlcnR5KG4pfHwodFtuXT1lW25dKX1PYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksZSh6Z3QpLGUoQmd0KSxlKEZndCksZShVZ3QpfSkoT2d0KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoUmd0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgR2d0PU9ndCxXZ3Q9e3RleHRSb3RhdGlvbjowLHRleHRTaGVhcjowLHhBbGlnbjoibGVmdCIseUFsaWduOiJ0b3AifSxxZ3Q9KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUsbil7dGhpcy5fbWVhc3VyZXI9dCx0aGlzLl9wZW5GYWN0b3J5PWUsdGhpcy5fd3JhcHBlcj1ufXJldHVybiB0LnByb3RvdHlwZS5tZWFzdXJlcj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fbWVhc3VyZXI9dCx0aGlzfSx0LnByb3RvdHlwZS53cmFwcGVyPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl93cmFwcGVyPXQsdGhpc30sdC5wcm90b3R5cGUucGVuRmFjdG9yeT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fcGVuRmFjdG9yeT10LHRoaXN9LHQucHJvdG90eXBlLndyaXRlPWZ1bmN0aW9uKGUsbixpLHIsbyl7aWYodm9pZCAwPT09ciYmKHI9e30pLHI9R2d0Lk1ldGhvZHMuZGVmYXVsdHMoe30sV2d0LHIpLC0xPT09dC5TdXBwb3J0ZWRSb3RhdGlvbi5pbmRleE9mKHIudGV4dFJvdGF0aW9uKSl0aHJvdyBuZXcgRXJyb3IoInVuc3VwcG9ydGVkIHJvdGF0aW9uIC0gIityLnRleHRSb3RhdGlvbisiLiBTdXBwb3J0ZWQgcm90YXRpb25zIGFyZSAiK3QuU3VwcG9ydGVkUm90YXRpb24uam9pbigiLCAiKSk7aWYobnVsbCE9ci50ZXh0U2hlYXImJnIudGV4dFNoZWFyPC04MHx8ci50ZXh0U2hlYXI+ODApdGhyb3cgbmV3IEVycm9yKCJ1bnN1cHBvcnRlZCBzaGVhciBhbmdsZSAtICIrci50ZXh0U2hlYXIrIi4gTXVzdCBiZSBiZXR3ZWVuIC04MCBhbmQgODAiKTt2YXIgYT1NYXRoLmFicyhNYXRoLmFicyhyLnRleHRSb3RhdGlvbiktOTApPjQ1LHM9YT9uOmksbD1hP2k6bixjPXIudGV4dFNoZWFyLHU9YypNYXRoLlBJLzE4MCxoPXRoaXMuX21lYXN1cmVyLm1lYXN1cmUoKS5oZWlnaHQsZD1oKk1hdGgudGFuKHUpLHA9cy9NYXRoLmNvcyh1KS1NYXRoLmFicyhkKSxmPWwqTWF0aC5jb3ModSksbT1HZ3QuU3RyaW5nTWV0aG9kcy5jb21iaW5lV2hpdGVzcGFjZShlKSxnPSh0aGlzLl93cmFwcGVyP3RoaXMuX3dyYXBwZXIud3JhcChtLHRoaXMuX21lYXN1cmVyLHAsZikud3JhcHBlZFRleHQ6bSkuc3BsaXQoIlxuIiksXz10LlhPZmZzZXRGYWN0b3Jbci54QWxpZ25dKnAqTWF0aC5zaW4odSktdC5ZT2Zmc2V0RmFjdG9yW3IueUFsaWduXSooZi1nLmxlbmd0aCpoKSx5PVswLDBdLHY9ci50ZXh0Um90YXRpb24rYztzd2l0Y2goci50ZXh0Um90YXRpb24pe2Nhc2UgOTA6eT1bbitfLDBdO2JyZWFrO2Nhc2UtOTA6eT1bLV8saV07YnJlYWs7Y2FzZSAxODA6eT1bbixpK19dO2JyZWFrO2RlZmF1bHQ6eT1bMCwtX119dmFyIGI9dGhpcy5fcGVuRmFjdG9yeS5jcmVhdGVQZW4oZSx7dHJhbnNsYXRlOnkscm90YXRlOnZ9LG8pO3RoaXMud3JpdGVMaW5lcyhnLGIscCxoLGQsci54QWxpZ24pLG51bGwhPWIuZGVzdHJveSYmYi5kZXN0cm95KCl9LHQucHJvdG90eXBlLndyaXRlTGluZXM9ZnVuY3Rpb24odCxlLG4saSxyLG8pe3QuZm9yRWFjaCgoZnVuY3Rpb24odCxhKXtlLndyaXRlKHQsbixvLHI+MD8oYSsxKSpyOmEqciwoYSsxKSppKX0pKX0sdH0pKCk7cWd0LlhPZmZzZXRGYWN0b3I9e2NlbnRlcjouNSxsZWZ0OjAscmlnaHQ6MX0scWd0LllPZmZzZXRGYWN0b3I9e2JvdHRvbToxLGNlbnRlcjouNSx0b3A6MH0scWd0LlN1cHBvcnRlZFJvdGF0aW9uPVstOTAsMCwxODAsOTBdLFJndC5Xcml0ZXI9cWd0LChmdW5jdGlvbih0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksKGZ1bmN0aW9uIGUobil7Zm9yKHZhciBpIGluIG4pdC5oYXNPd25Qcm9wZXJ0eShpKXx8KHRbaV09bltpXSl9KShSZ3QpfSkoSWd0KTt2YXIgWWd0PXt9O09iamVjdC5kZWZpbmVQcm9wZXJ0eShZZ3QsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBYZ3Q9KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4gdC5hcHBlbmQ9ZnVuY3Rpb24oZSxuKXtmb3IodmFyIGk9W10scj0yO3I8YXJndW1lbnRzLmxlbmd0aDtyKyspaVtyLTJdPWFyZ3VtZW50c1tyXTt2YXIgbz10LmNyZWF0ZS5hcHBseSh0LFtuXS5jb25jYXQoaSkpO3JldHVybiBlLmFwcGVuZENoaWxkKG8pLG99LHQuY3JlYXRlPWZ1bmN0aW9uKGUpe2Zvcih2YXIgbj1bXSxpPTE7aTxhcmd1bWVudHMubGVuZ3RoO2krKyluW2ktMV09YXJndW1lbnRzW2ldO3ZhciByPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoZSk7cmV0dXJuIHQuYWRkQ2xhc3Nlcy5hcHBseSh0LFtyXS5jb25jYXQobikpLHJ9LHQuYWRkQ2xhc3Nlcz1mdW5jdGlvbih0KXtmb3IodmFyIGU9W10sbj0xO248YXJndW1lbnRzLmxlbmd0aDtuKyspZVtuLTFdPWFyZ3VtZW50c1tuXTtlPWUuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gbnVsbCE9dH0pKSxudWxsIT10LmNsYXNzTGlzdD9lLmZvckVhY2goKGZ1bmN0aW9uKGUpe3QuY2xhc3NMaXN0LmFkZChlKX0pKTp0LnNldEF0dHJpYnV0ZSgiY2xhc3MiLGUuam9pbigiICIpKX0sdC5nZXREaW1lbnNpb25zPWZ1bmN0aW9uKHQpe2lmKHQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KXRyeXt2YXIgZT10LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3JldHVybnt3aWR0aDplLndpZHRoLGhlaWdodDplLmhlaWdodH19Y2F0Y2godCl7fXJldHVybntoZWlnaHQ6MCx3aWR0aDowfX0sdH0pKCk7WWd0Lkh0bWxVdGlscz1YZ3Q7dmFyICRndD0oZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSxuKXt2b2lkIDA9PT1uJiYobj0hMSk7dmFyIGk9dGhpczt0aGlzLmVsZW1lbnQ9dCx0aGlzLmNsYXNzTmFtZT1lLHRoaXMuYWRkVGl0bGU9bix0aGlzLmNyZWF0ZVJ1bGVyPWZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKHQpe3ZhciBlPVhndC5hcHBlbmQoaS5lbGVtZW50LCJzcGFuIiwidGV4dC10bXAiLGkuY2xhc3NOYW1lKTtlLnRleHRDb250ZW50PXQ7dmFyIG49WGd0LmdldERpbWVuc2lvbnMoZSk7cmV0dXJuIGkuZWxlbWVudC5yZW1vdmVDaGlsZChlKSxufX0sdGhpcy5jcmVhdGVQZW49ZnVuY3Rpb24odCxlLG4pe251bGw9PW4mJihuPWkuZWxlbWVudCk7dmFyIHI9WGd0LmFwcGVuZChuLCJkaXYiLCJ0ZXh0LWJsb2NrIixpLmNsYXNzTmFtZSk7cmV0dXJuIHIuc3R5bGUucG9zaXRpb249InJlbGF0aXZlIixyLnN0eWxlLnRyYW5zZm9ybT0idHJhbnNsYXRlKDAsIC0xZW0pIHRyYW5zbGF0ZSgiK2UudHJhbnNsYXRlWzBdKyJweCwgIitlLnRyYW5zbGF0ZVsxXSsicHgpIHJvdGF0ZSgiK2Uucm90YXRlKyJkZWcpIixyLnN0eWxlLnRyYW5zZm9ybU9yaWdpbj0iMCAxLjJlbSIsaS5hZGRUaXRsZSYmci5zZXRBdHRyaWJ1dGUoInRpdGxlIix0KSxpLmNyZWF0ZUh0bWxMaW5lUGVuKHIpfX1yZXR1cm4gdC5wcm90b3R5cGUuc2V0QWRkVGl0bGU9ZnVuY3Rpb24odCl7dGhpcy5hZGRUaXRsZT10fSx0LnByb3RvdHlwZS5jcmVhdGVIdG1sTGluZVBlbj1mdW5jdGlvbih0KXtyZXR1cm57d3JpdGU6ZnVuY3Rpb24oZSxuLGkscixvKXt2YXIgYT1YZ3QuYXBwZW5kKHQsImRpdiIsInRleHQtbGluZSIpO2EudGV4dENvbnRlbnQ9ZSxhLnN0eWxlLndpZHRoPW4rInB4IixhLnN0eWxlLnRleHRBbGlnbj1pLGEuc3R5bGUucG9zaXRpb249ImFic29sdXRlIixhLnN0eWxlLndoaXRlU3BhY2U9Im5vd3JhcCIsYS5zdHlsZS50b3A9bysicHgiLGEuc3R5bGUubGVmdD1yKyJweCJ9fX0sdH0pKCk7WWd0Lkh0bWxDb250ZXh0PSRndCxPYmplY3QuZGVmaW5lUHJvcGVydHkoTmd0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgS2d0PUlndCxaZ3Q9WWd0LEpndD0oZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiB0LmFwcGVuZD1mdW5jdGlvbihlLG4pe2Zvcih2YXIgaT1bXSxyPTI7cjxhcmd1bWVudHMubGVuZ3RoO3IrKylpW3ItMl09YXJndW1lbnRzW3JdO3ZhciBvPXQuY3JlYXRlLmFwcGx5KHQsW25dLmNvbmNhdChpKSk7cmV0dXJuIGUuYXBwZW5kQ2hpbGQobyksb30sdC5jcmVhdGU9ZnVuY3Rpb24oZSl7Zm9yKHZhciBuPVtdLGk9MTtpPGFyZ3VtZW50cy5sZW5ndGg7aSsrKW5baS0xXT1hcmd1bWVudHNbaV07dmFyIHI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKHQuU1ZHX05TLGUpO3JldHVybiBaZ3QuSHRtbFV0aWxzLmFkZENsYXNzZXMuYXBwbHkoWmd0Lkh0bWxVdGlscyxbcl0uY29uY2F0KG4pKSxyfSx0LmdldERpbWVuc2lvbnM9ZnVuY3Rpb24odCl7aWYodC5nZXRCQm94KXRyeXt2YXIgZT10LmdldEJCb3goKTtyZXR1cm57d2lkdGg6ZS53aWR0aCxoZWlnaHQ6ZS5oZWlnaHR9fWNhdGNoKHQpe31yZXR1cm57aGVpZ2h0OjAsd2lkdGg6MH19LHR9KSgpO0pndC5TVkdfTlM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIixOZ3QuU3ZnVXRpbHM9Smd0O3ZhciBRZ3Q9KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUsbil7dm9pZCAwPT09biYmKG49ITEpO3ZhciBpPXRoaXM7dGhpcy5lbGVtZW50PXQsdGhpcy5jbGFzc05hbWU9ZSx0aGlzLmFkZFRpdGxlRWxlbWVudD1uLHRoaXMuY3JlYXRlUnVsZXI9ZnVuY3Rpb24oKXt2YXIgdD1pLmdldFRleHRFbGVtZW50cyhpLmVsZW1lbnQpLGU9dC5wYXJlbnRFbGVtZW50LG49dC5jb250YWluZXJFbGVtZW50LHI9dC50ZXh0RWxlbWVudDtyZXR1cm4gZnVuY3Rpb24odCl7ZS5hcHBlbmRDaGlsZChuKSxyLnRleHRDb250ZW50PXQ7dmFyIGk9Smd0LmdldERpbWVuc2lvbnMocik7cmV0dXJuIGUucmVtb3ZlQ2hpbGQobiksaX19LHRoaXMuY3JlYXRlUGVuPWZ1bmN0aW9uKHQsZSxuKXtudWxsPT1uJiYobj1pLmVsZW1lbnQpO3ZhciByPUpndC5hcHBlbmQobiwiZyIsInRleHQtY29udGFpbmVyIixpLmNsYXNzTmFtZSk7aS5hZGRUaXRsZUVsZW1lbnQmJihKZ3QuYXBwZW5kKHIsInRpdGxlIikudGV4dENvbnRlbnQ9dCxyLnNldEF0dHJpYnV0ZSgidGl0bGUiLHQpKTt2YXIgbz1KZ3QuYXBwZW5kKHIsImciLCJ0ZXh0LWFyZWEiKTtyZXR1cm4gby5zZXRBdHRyaWJ1dGUoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK2UudHJhbnNsYXRlWzBdKyIsIitlLnRyYW5zbGF0ZVsxXSsiKXJvdGF0ZSgiK2Uucm90YXRlKyIpIiksaS5jcmVhdGVTdmdMaW5lUGVuKG8pfX1yZXR1cm4gdC5wcm90b3R5cGUuc2V0QWRkVGl0bGVFbGVtZW50PWZ1bmN0aW9uKHQpe3RoaXMuYWRkVGl0bGVFbGVtZW50PXR9LHQucHJvdG90eXBlLmNyZWF0ZVN2Z0xpbmVQZW49ZnVuY3Rpb24oZSl7cmV0dXJue3dyaXRlOmZ1bmN0aW9uKG4saSxyLG8sYSl7bys9aSpLZ3QuV3JpdGVyLlhPZmZzZXRGYWN0b3Jbcl07dmFyIHM9Smd0LmFwcGVuZChlLCJ0ZXh0IiwidGV4dC1saW5lIik7cy50ZXh0Q29udGVudD1uLHMuc2V0QXR0cmlidXRlKCJ0ZXh0LWFuY2hvciIsdC5BbmNob3JNYXBbcl0pLHMuc2V0QXR0cmlidXRlKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIitvKyIsIithKyIpIikscy5zZXRBdHRyaWJ1dGUoInkiLCItMC4yNWVtIil9fX0sdC5wcm90b3R5cGUuZ2V0VGV4dEVsZW1lbnRzPWZ1bmN0aW9uKHQpe2lmKCJ0ZXh0Ij09PXQudGFnTmFtZSlyZXR1cm4gbnVsbD09KGU9dC5wYXJlbnRFbGVtZW50KSYmKGU9dC5wYXJlbnROb2RlKSxlLnJlbW92ZUNoaWxkKHQpLHtjb250YWluZXJFbGVtZW50OnQscGFyZW50RWxlbWVudDplLHRleHRFbGVtZW50OnR9O3ZhciBlLG49dC5xdWVyeVNlbGVjdG9yKCJ0ZXh0Iik7aWYobnVsbCE9bilyZXR1cm4gbnVsbD09KGU9bi5wYXJlbnRFbGVtZW50KSYmKGU9bi5wYXJlbnROb2RlKSxlLnJlbW92ZUNoaWxkKG4pLHtjb250YWluZXJFbGVtZW50Om4scGFyZW50RWxlbWVudDplLHRleHRFbGVtZW50Om59O3ZhciBpPUpndC5jcmVhdGUoInRleHQiLHRoaXMuY2xhc3NOYW1lKTtyZXR1cm57Y29udGFpbmVyRWxlbWVudDppLHBhcmVudEVsZW1lbnQ6dCx0ZXh0RWxlbWVudDppfX0sdH0pKCk7UWd0LkFuY2hvck1hcD17Y2VudGVyOiJtaWRkbGUiLGxlZnQ6InN0YXJ0IixyaWdodDoiZW5kIn0sTmd0LlN2Z0NvbnRleHQ9UWd0O3ZhciB0X3Q9e307T2JqZWN0LmRlZmluZVByb3BlcnR5KHRfdCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIGVfdD1JZ3Qsbl90PShmdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlLG4pe3ZvaWQgMD09PWUmJihlPTEwKSx2b2lkIDA9PT1uJiYobj17fSk7dmFyIGk9dGhpczt0aGlzLmN0eD10LHRoaXMubGluZUhlaWdodD1lLHRoaXMuc3R5bGU9bix0aGlzLmNyZWF0ZVJ1bGVyPWZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBpLmN0eC5mb250PWkuc3R5bGUuZm9udCx7d2lkdGg6aS5jdHgubWVhc3VyZVRleHQodCkud2lkdGgsaGVpZ2h0OmkubGluZUhlaWdodH19fSx0aGlzLmNyZWF0ZVBlbj1mdW5jdGlvbih0LGUsbil7cmV0dXJuIG51bGw9PW4mJihuPWkuY3R4KSxuLnNhdmUoKSxuLnRyYW5zbGF0ZShlLnRyYW5zbGF0ZVswXSxlLnRyYW5zbGF0ZVsxXSksbi5yb3RhdGUoZS5yb3RhdGUqTWF0aC5QSS8xODApLGkuY3JlYXRlQ2FudmFzUGVuKG4pfSx2b2lkIDA9PT10aGlzLnN0eWxlLmZpbGwmJih0aGlzLnN0eWxlLmZpbGw9IiM0NDQiKX1yZXR1cm4gdC5wcm90b3R5cGUuY3JlYXRlQ2FudmFzUGVuPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7cmV0dXJue2Rlc3Ryb3k6ZnVuY3Rpb24oKXt0LnJlc3RvcmUoKX0sd3JpdGU6ZnVuY3Rpb24obixpLHIsbyxhKXtvKz1pKmVfdC5Xcml0ZXIuWE9mZnNldEZhY3RvcltyXSx0LnRleHRBbGlnbj1yLG51bGwhPWUuc3R5bGUuZm9udCYmKHQuZm9udD1lLnN0eWxlLmZvbnQpLG51bGwhPWUuc3R5bGUuZmlsbCYmKHQuZmlsbFN0eWxlPWUuc3R5bGUuZmlsbCx0LmZpbGxUZXh0KG4sbyxhKSksbnVsbCE9ZS5zdHlsZS5zdHJva2UmJih0LnN0cm9rZVN0eWxlPWUuc3R5bGUuZmlsbCx0LnN0cm9rZVRleHQobixvLGEpKX19fSx0fSkoKTt0X3QuQ2FudmFzQ29udGV4dD1uX3QsKGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSl7Zm9yKHZhciBuIGluIGUpdC5oYXNPd25Qcm9wZXJ0eShuKXx8KHRbbl09ZVtuXSl9T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLGUoTmd0KSxlKHRfdCksZShZZ3QpfSkoUGd0KTt2YXIgaV90PXt9LHJfdD17fTtPYmplY3QuZGVmaW5lUHJvcGVydHkocl90LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgb190PShmdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7dGhpcy5ydWxlcj1udWxsIT10LmNyZWF0ZVJ1bGVyP3QuY3JlYXRlUnVsZXIoKTp0fXJldHVybiB0LnByb3RvdHlwZS5tZWFzdXJlPWZ1bmN0aW9uKGUpe3JldHVybiB2b2lkIDA9PT1lJiYoZT10LkhFSUdIVF9URVhUKSx0aGlzLnJ1bGVyKGUpfSx0fSkoKTtvX3QuSEVJR0hUX1RFWFQ9ImJkcHFsIixyX3QuQWJzdHJhY3RNZWFzdXJlcj1vX3Q7dmFyIGFfdD17fSxzX3Q9e30sbF90PXt9LGNfdD1TZSYmU2UuX19leHRlbmRzfHwoZnVuY3Rpb24oKXt2YXIgdD1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZiBBcnJheSYmZnVuY3Rpb24odCxlKXt0Ll9fcHJvdG9fXz1lfXx8ZnVuY3Rpb24odCxlKXtmb3IodmFyIG4gaW4gZSllLmhhc093blByb3BlcnR5KG4pJiYodFtuXT1lW25dKX07cmV0dXJuIGZ1bmN0aW9uKGUsbil7ZnVuY3Rpb24gaSgpe3RoaXMuY29uc3RydWN0b3I9ZX10KGUsbiksZS5wcm90b3R5cGU9bnVsbD09PW4/T2JqZWN0LmNyZWF0ZShuKTooaS5wcm90b3R5cGU9bi5wcm90b3R5cGUsbmV3IGkpfX0pKCk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGxfdCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIHVfdD1yX3QsaF90PShmdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUsbil7dm9pZCAwPT09biYmKG49ITEpO3ZhciBpPXQuY2FsbCh0aGlzLGUpfHx0aGlzO3JldHVybiBpLnVzZUd1YXJkcz1uLGl9cmV0dXJuIGNfdChlLHQpLGUucHJvdG90eXBlLl9hZGRHdWFyZHM9ZnVuY3Rpb24odCl7cmV0dXJuIHVfdC5BYnN0cmFjdE1lYXN1cmVyLkhFSUdIVF9URVhUK3QrdV90LkFic3RyYWN0TWVhc3VyZXIuSEVJR0hUX1RFWFR9LGUucHJvdG90eXBlLl9tZWFzdXJlTGluZT1mdW5jdGlvbihlLG4pe3ZvaWQgMD09PW4mJihuPSExKTt2YXIgaT10aGlzLnVzZUd1YXJkc3x8bnx8L15bXHQgXSQvLnRlc3QoZSkscj1pP3RoaXMuX2FkZEd1YXJkcyhlKTplLG89dC5wcm90b3R5cGUubWVhc3VyZS5jYWxsKHRoaXMscik7cmV0dXJuIG8ud2lkdGgtPWk/Mip0aGlzLmdldEd1YXJkV2lkdGgoKTowLG99LGUucHJvdG90eXBlLm1lYXN1cmU9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztpZih2b2lkIDA9PT10JiYodD11X3QuQWJzdHJhY3RNZWFzdXJlci5IRUlHSFRfVEVYVCksIiI9PT10LnRyaW0oKSlyZXR1cm57d2lkdGg6MCxoZWlnaHQ6MH07dmFyIG49dC50cmltKCkuc3BsaXQoIlxuIikubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gZS5fbWVhc3VyZUxpbmUodCl9KSk7cmV0dXJue2hlaWdodDpuLnJlZHVjZSgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdCtlLmhlaWdodH0pLDApLHdpZHRoOm4ucmVkdWNlKChmdW5jdGlvbih0LGUpe3JldHVybiBNYXRoLm1heCh0LGUud2lkdGgpfSksMCl9fSxlLnByb3RvdHlwZS5nZXRHdWFyZFdpZHRoPWZ1bmN0aW9uKCl7cmV0dXJuIG51bGw9PXRoaXMuZ3VhcmRXaWR0aCYmKHRoaXMuZ3VhcmRXaWR0aD10LnByb3RvdHlwZS5tZWFzdXJlLmNhbGwodGhpcykud2lkdGgpLHRoaXMuZ3VhcmRXaWR0aH0sZX0pKHVfdC5BYnN0cmFjdE1lYXN1cmVyKTtsX3QuTWVhc3VyZXI9aF90O3ZhciBkX3Q9U2UmJlNlLl9fZXh0ZW5kc3x8KGZ1bmN0aW9uKCl7dmFyIHQ9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKHQsZSl7dC5fX3Byb3RvX189ZX18fGZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuIGluIGUpZS5oYXNPd25Qcm9wZXJ0eShuKSYmKHRbbl09ZVtuXSl9O3JldHVybiBmdW5jdGlvbihlLG4pe2Z1bmN0aW9uIGkoKXt0aGlzLmNvbnN0cnVjdG9yPWV9dChlLG4pLGUucHJvdG90eXBlPW51bGw9PT1uP09iamVjdC5jcmVhdGUobik6KGkucHJvdG90eXBlPW4ucHJvdG90eXBlLG5ldyBpKX19KSgpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShzX3QsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBwX3Q9KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXtyZXR1cm4gbnVsbCE9PXQmJnQuYXBwbHkodGhpcyxhcmd1bWVudHMpfHx0aGlzfXJldHVybiBkX3QoZSx0KSxlLnByb3RvdHlwZS5fbWVhc3VyZUNoYXJhY3Rlcj1mdW5jdGlvbihlKXtyZXR1cm4gdC5wcm90b3R5cGUuX21lYXN1cmVMaW5lLmNhbGwodGhpcyxlKX0sZS5wcm90b3R5cGUuX21lYXN1cmVMaW5lPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsbj10LnNwbGl0KCIiKS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBlLl9tZWFzdXJlQ2hhcmFjdGVyKHQpfSkpO3JldHVybntoZWlnaHQ6bi5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIE1hdGgubWF4KHQsZS5oZWlnaHQpfSksMCksd2lkdGg6bi5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQrZS53aWR0aH0pLDApfX0sZX0pKGxfdC5NZWFzdXJlcik7c190LkNoYXJhY3Rlck1lYXN1cmVyPXBfdDt2YXIgZl90PVNlJiZTZS5fX2V4dGVuZHN8fChmdW5jdGlvbigpe3ZhciB0PU9iamVjdC5zZXRQcm90b3R5cGVPZnx8e19fcHJvdG9fXzpbXX1pbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbih0LGUpe3QuX19wcm90b19fPWV9fHxmdW5jdGlvbih0LGUpe2Zvcih2YXIgbiBpbiBlKWUuaGFzT3duUHJvcGVydHkobikmJih0W25dPWVbbl0pfTtyZXR1cm4gZnVuY3Rpb24oZSxuKXtmdW5jdGlvbiBpKCl7dGhpcy5jb25zdHJ1Y3Rvcj1lfXQoZSxuKSxlLnByb3RvdHlwZT1udWxsPT09bj9PYmplY3QuY3JlYXRlKG4pOihpLnByb3RvdHlwZT1uLnByb3RvdHlwZSxuZXcgaSl9fSkoKTtPYmplY3QuZGVmaW5lUHJvcGVydHkoYV90LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgbV90PU9ndCxnX3Q9KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSxuKXt2YXIgaT10LmNhbGwodGhpcyxlLG4pfHx0aGlzO3JldHVybiBpLmNhY2hlPW5ldyBtX3QuQ2FjaGUoKGZ1bmN0aW9uKHQpe3JldHVybiBpLl9tZWFzdXJlQ2hhcmFjdGVyTm90RnJvbUNhY2hlKHQpfSkpLGl9cmV0dXJuIGZfdChlLHQpLGUucHJvdG90eXBlLl9tZWFzdXJlQ2hhcmFjdGVyTm90RnJvbUNhY2hlPWZ1bmN0aW9uKGUpe3JldHVybiB0LnByb3RvdHlwZS5fbWVhc3VyZUNoYXJhY3Rlci5jYWxsKHRoaXMsZSl9LGUucHJvdG90eXBlLl9tZWFzdXJlQ2hhcmFjdGVyPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmNhY2hlLmdldCh0KX0sZS5wcm90b3R5cGUucmVzZXQ9ZnVuY3Rpb24oKXt0aGlzLmNhY2hlLmNsZWFyKCl9LGV9KShzX3QuQ2hhcmFjdGVyTWVhc3VyZXIpO2FfdC5DYWNoZUNoYXJhY3Rlck1lYXN1cmVyPWdfdDt2YXIgX190PXt9LHlfdD1TZSYmU2UuX19leHRlbmRzfHwoZnVuY3Rpb24oKXt2YXIgdD1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZiBBcnJheSYmZnVuY3Rpb24odCxlKXt0Ll9fcHJvdG9fXz1lfXx8ZnVuY3Rpb24odCxlKXtmb3IodmFyIG4gaW4gZSllLmhhc093blByb3BlcnR5KG4pJiYodFtuXT1lW25dKX07cmV0dXJuIGZ1bmN0aW9uKGUsbil7ZnVuY3Rpb24gaSgpe3RoaXMuY29uc3RydWN0b3I9ZX10KGUsbiksZS5wcm90b3R5cGU9bnVsbD09PW4/T2JqZWN0LmNyZWF0ZShuKTooaS5wcm90b3R5cGU9bi5wcm90b3R5cGUsbmV3IGkpfX0pKCk7T2JqZWN0LmRlZmluZVByb3BlcnR5KF9fdCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIHZfdD1PZ3QsYl90PXJfdCx4X3Q9KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSl7dmFyIG49dC5jYWxsKHRoaXMsZSl8fHRoaXM7cmV0dXJuIG4uZGltQ2FjaGU9bmV3IHZfdC5DYWNoZSgoZnVuY3Rpb24odCl7cmV0dXJuIG4uX21lYXN1cmVOb3RGcm9tQ2FjaGUodCl9KSksbn1yZXR1cm4geV90KGUsdCksZS5wcm90b3R5cGUuX21lYXN1cmVOb3RGcm9tQ2FjaGU9ZnVuY3Rpb24oZSl7cmV0dXJuIHQucHJvdG90eXBlLm1lYXN1cmUuY2FsbCh0aGlzLGUpfSxlLnByb3RvdHlwZS5tZWFzdXJlPWZ1bmN0aW9uKHQpe3JldHVybiB2b2lkIDA9PT10JiYodD1iX3QuQWJzdHJhY3RNZWFzdXJlci5IRUlHSFRfVEVYVCksdGhpcy5kaW1DYWNoZS5nZXQodCl9LGUucHJvdG90eXBlLnJlc2V0PWZ1bmN0aW9uKCl7dGhpcy5kaW1DYWNoZS5jbGVhcigpLHQucHJvdG90eXBlLnJlc2V0LmNhbGwodGhpcyl9LGV9KShhX3QuQ2FjaGVDaGFyYWN0ZXJNZWFzdXJlcik7X190LkNhY2hlTWVhc3VyZXI9eF90LChmdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUpe2Zvcih2YXIgbiBpbiBlKXQuaGFzT3duUHJvcGVydHkobil8fCh0W25dPWVbbl0pfU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxlKHJfdCksZShhX3QpLGUoX190KSxlKHNfdCksZShsX3QpfSkoaV90KTt2YXIgd190PXt9LFNfdD17fSxNX3Q9e30sRV90PXt9O09iamVjdC5kZWZpbmVQcm9wZXJ0eShFX3QsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBUX3Q9T2d0LENfdD0oZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7dGhpcy5tYXhMaW5lcygxLzApLHRoaXMudGV4dFRyaW1taW5nKCJlbGxpcHNpcyIpLHRoaXMuYWxsb3dCcmVha2luZ1dvcmRzKCExKSx0aGlzLl90b2tlbml6ZXI9bmV3IFRfdC5Ub2tlbml6ZXIsdGhpcy5fYnJlYWtpbmdDaGFyYWN0ZXI9Ii0ifXJldHVybiB0LnByb3RvdHlwZS5tYXhMaW5lcz1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9tYXhMaW5lczoodGhpcy5fbWF4TGluZXM9dCx0aGlzKX0sdC5wcm90b3R5cGUudGV4dFRyaW1taW5nPWZ1bmN0aW9uKHQpe2lmKG51bGw9PXQpcmV0dXJuIHRoaXMuX3RleHRUcmltbWluZztpZigiZWxsaXBzaXMiIT09dCYmIm5vbmUiIT09dCl0aHJvdyBuZXcgRXJyb3IodCsiIC0gdW5zdXBwb3J0ZWQgdGV4dCB0cmltbWluZyBvcHRpb24uIik7cmV0dXJuIHRoaXMuX3RleHRUcmltbWluZz10LHRoaXN9LHQucHJvdG90eXBlLmFsbG93QnJlYWtpbmdXb3Jkcz1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9hbGxvd0JyZWFraW5nV29yZHM6KHRoaXMuX2FsbG93QnJlYWtpbmdXb3Jkcz10LHRoaXMpfSx0LnByb3RvdHlwZS53cmFwPWZ1bmN0aW9uKHQsZSxuLGkpe3ZhciByPXRoaXM7dm9pZCAwPT09aSYmKGk9MS8wKTt2YXIgbz17bm9Ccm9rZVdvcmRzOjAsbm9MaW5lczowLG9yaWdpbmFsVGV4dDp0LHRydW5jYXRlZFRleHQ6IiIsd3JhcHBlZFRleHQ6IiJ9LGE9e2F2YWlsYWJsZUxpbmVzOk1hdGgubWluKE1hdGguZmxvb3IoaS9lLm1lYXN1cmUoKS5oZWlnaHQpLHRoaXMuX21heExpbmVzKSxhdmFpbGFibGVXaWR0aDpuLGNhbkZpdFRleHQ6ITAsY3VycmVudExpbmU6IiIsd3JhcHBpbmc6b30scz10LnNwbGl0KCJcbiIpO3JldHVybiBzLnJlZHVjZSgoZnVuY3Rpb24odCxuLGkpe3JldHVybiByLmJyZWFrTGluZVRvRml0V2lkdGgodCxuLGkhPT1zLmxlbmd0aC0xLGUpfSksYSkud3JhcHBpbmd9LHQucHJvdG90eXBlLmJyZWFrTGluZVRvRml0V2lkdGg9ZnVuY3Rpb24odCxlLG4saSl7dmFyIHI9dGhpczt0LmNhbkZpdFRleHR8fCIiPT09dC53cmFwcGluZy50cnVuY2F0ZWRUZXh0fHwodC53cmFwcGluZy50cnVuY2F0ZWRUZXh0Kz0iXG4iKSx0PXRoaXMuX3Rva2VuaXplci50b2tlbml6ZShlKS5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHIud3JhcE5leHRUb2tlbihlLHQsaSl9KSx0KTt2YXIgbz1UX3QuU3RyaW5nTWV0aG9kcy50cmltRW5kKHQuY3VycmVudExpbmUpO3JldHVybiB0LndyYXBwaW5nLm5vTGluZXMrPSsoIiIhPT1vKSx0LndyYXBwaW5nLm5vTGluZXM9PT10LmF2YWlsYWJsZUxpbmVzJiYibm9uZSIhPT10aGlzLl90ZXh0VHJpbW1pbmcmJm4/dC5jYW5GaXRUZXh0PSExOnQud3JhcHBpbmcud3JhcHBlZFRleHQrPW8sdC5jdXJyZW50TGluZT0iXG4iLHR9LHQucHJvdG90eXBlLmNhbkZpdFRva2VuPWZ1bmN0aW9uKHQsZSxuKXt2YXIgaT10aGlzLHI9dC5zcGxpdCgiIikubWFwKChmdW5jdGlvbihlLG4pe3JldHVybiBuIT09dC5sZW5ndGgtMT9lK2kuX2JyZWFraW5nQ2hhcmFjdGVyOmV9KSk7cmV0dXJuIG4ubWVhc3VyZSh0KS53aWR0aDw9ZXx8ci5ldmVyeSgoZnVuY3Rpb24odCl7cmV0dXJuIG4ubWVhc3VyZSh0KS53aWR0aDw9ZX0pKX0sdC5wcm90b3R5cGUuYWRkRWxsaXBzaXM9ZnVuY3Rpb24odCxlLG4pe2lmKCJub25lIj09PXRoaXMuX3RleHRUcmltbWluZylyZXR1cm57cmVtYWluaW5nVG9rZW46IiIsd3JhcHBlZFRva2VuOnR9O3ZhciBpPXQuc3Vic3RyaW5nKDApLnRyaW0oKSxyPW4ubWVhc3VyZShpKS53aWR0aCxvPW4ubWVhc3VyZSgiLi4uIikud2lkdGgsYT10Lmxlbmd0aD4wJiYiXG4iPT09dFswXT8iXG4iOiIiO2lmKGU8PW8pe3ZhciBzPU1hdGguZmxvb3IoZS8oby8zKSk7cmV0dXJue3JlbWFpbmluZ1Rva2VuOnQsd3JhcHBlZFRva2VuOmErIi4uLiIuc3Vic3RyKDAscyl9fWZvcig7citvPmU7KWk9VF90LlN0cmluZ01ldGhvZHMudHJpbUVuZChpLnN1YnN0cigwLGkubGVuZ3RoLTEpKSxyPW4ubWVhc3VyZShpKS53aWR0aDtyZXR1cm57cmVtYWluaW5nVG9rZW46VF90LlN0cmluZ01ldGhvZHMudHJpbUVuZCh0LnN1YnN0cmluZyhpLmxlbmd0aCksIi0iKS50cmltKCksd3JhcHBlZFRva2VuOmEraSsiLi4uIn19LHQucHJvdG90eXBlLndyYXBOZXh0VG9rZW49ZnVuY3Rpb24odCxlLG4pe2lmKCFlLmNhbkZpdFRleHR8fGUuYXZhaWxhYmxlTGluZXM9PT1lLndyYXBwaW5nLm5vTGluZXN8fCF0aGlzLmNhbkZpdFRva2VuKHQsZS5hdmFpbGFibGVXaWR0aCxuKSlyZXR1cm4gdGhpcy5maW5pc2hXcmFwcGluZyh0LGUsbik7Zm9yKHZhciBpPXQ7aTspe3ZhciByPXRoaXMuYnJlYWtUb2tlblRvRml0SW5XaWR0aChpLGUuY3VycmVudExpbmUsZS5hdmFpbGFibGVXaWR0aCxuKTtpZihlLmN1cnJlbnRMaW5lPXIubGluZSxudWxsIT0oaT1yLnJlbWFpbmluZ1Rva2VuKSl7aWYoZS53cmFwcGluZy5ub0Jyb2tlV29yZHMrPStyLmJyZWFrV29yZCwrK2Uud3JhcHBpbmcubm9MaW5lcyxlLmF2YWlsYWJsZUxpbmVzPT09ZS53cmFwcGluZy5ub0xpbmVzKXt2YXIgbz10aGlzLmFkZEVsbGlwc2lzKGUuY3VycmVudExpbmUsZS5hdmFpbGFibGVXaWR0aCxuKTtyZXR1cm4gZS53cmFwcGluZy53cmFwcGVkVGV4dCs9by53cmFwcGVkVG9rZW4sZS53cmFwcGluZy50cnVuY2F0ZWRUZXh0Kz1vLnJlbWFpbmluZ1Rva2VuK2ksZS5jdXJyZW50TGluZT0iXG4iLGV9ZS53cmFwcGluZy53cmFwcGVkVGV4dCs9VF90LlN0cmluZ01ldGhvZHMudHJpbUVuZChlLmN1cnJlbnRMaW5lKSxlLmN1cnJlbnRMaW5lPSJcbiJ9fXJldHVybiBlfSx0LnByb3RvdHlwZS5maW5pc2hXcmFwcGluZz1mdW5jdGlvbih0LGUsbil7aWYoZS5jYW5GaXRUZXh0JiZlLmF2YWlsYWJsZUxpbmVzIT09ZS53cmFwcGluZy5ub0xpbmVzJiYibm9uZSIhPT10aGlzLl90ZXh0VHJpbW1pbmcpe3ZhciBpPXRoaXMuYWRkRWxsaXBzaXMoZS5jdXJyZW50TGluZSt0LGUuYXZhaWxhYmxlV2lkdGgsbik7ZS53cmFwcGluZy53cmFwcGVkVGV4dCs9aS53cmFwcGVkVG9rZW4sZS53cmFwcGluZy50cnVuY2F0ZWRUZXh0Kz1pLnJlbWFpbmluZ1Rva2VuLGUud3JhcHBpbmcubm9Ccm9rZVdvcmRzKz0rKGkucmVtYWluaW5nVG9rZW4ubGVuZ3RoPHQubGVuZ3RoKSxlLndyYXBwaW5nLm5vTGluZXMrPSsoaS53cmFwcGVkVG9rZW4ubGVuZ3RoPjApLGUuY3VycmVudExpbmU9IiJ9ZWxzZSBlLndyYXBwaW5nLnRydW5jYXRlZFRleHQrPXQ7cmV0dXJuIGUuY2FuRml0VGV4dD0hMSxlfSx0LnByb3RvdHlwZS5icmVha1Rva2VuVG9GaXRJbldpZHRoPWZ1bmN0aW9uKHQsZSxuLGkscil7aWYodm9pZCAwPT09ciYmKHI9dGhpcy5fYnJlYWtpbmdDaGFyYWN0ZXIpLGkubWVhc3VyZShlK3QpLndpZHRoPD1uKXJldHVybnticmVha1dvcmQ6ITEsbGluZTplK3QscmVtYWluaW5nVG9rZW46bnVsbH07aWYoIiI9PT10LnRyaW0oKSlyZXR1cm57YnJlYWtXb3JkOiExLGxpbmU6ZSxyZW1haW5pbmdUb2tlbjoiIn07aWYoIXRoaXMuX2FsbG93QnJlYWtpbmdXb3JkcyYmIiIhPT1lLnRyaW0oKSlyZXR1cm57YnJlYWtXb3JkOiExLGxpbmU6ZSxyZW1haW5pbmdUb2tlbjp0fTtmb3IodmFyIG89MDtvPHQubGVuZ3RoJiZpLm1lYXN1cmUoZSt0LnN1YnN0cmluZygwLG8rMSkrcikud2lkdGg8PW47KSsrbzt2YXIgYT0iIjtyZXR1cm4gbz4wJiYoYT1yKSx7YnJlYWtXb3JkOm8+MCxsaW5lOmUrdC5zdWJzdHJpbmcoMCxvKSthLHJlbWFpbmluZ1Rva2VuOnQuc3Vic3RyaW5nKG8pfX0sdH0pKCk7RV90LldyYXBwZXI9Q190O3ZhciBBX3Q9U2UmJlNlLl9fZXh0ZW5kc3x8KGZ1bmN0aW9uKCl7dmFyIHQ9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKHQsZSl7dC5fX3Byb3RvX189ZX18fGZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuIGluIGUpZS5oYXNPd25Qcm9wZXJ0eShuKSYmKHRbbl09ZVtuXSl9O3JldHVybiBmdW5jdGlvbihlLG4pe2Z1bmN0aW9uIGkoKXt0aGlzLmNvbnN0cnVjdG9yPWV9dChlLG4pLGUucHJvdG90eXBlPW51bGw9PT1uP09iamVjdC5jcmVhdGUobik6KGkucHJvdG90eXBlPW4ucHJvdG90eXBlLG5ldyBpKX19KSgpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShNX3QsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBrX3Q9KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXtyZXR1cm4gbnVsbCE9PXQmJnQuYXBwbHkodGhpcyxhcmd1bWVudHMpfHx0aGlzfXJldHVybiBBX3QoZSx0KSxlLnByb3RvdHlwZS53cmFwPWZ1bmN0aW9uKG4saSxyLG8pe3ZhciBhPXRoaXM7aWYodm9pZCAwPT09byYmKG89MS8wKSxuLnNwbGl0KCJcbiIpLmxlbmd0aD4xKXRocm93IG5ldyBFcnJvcigiU2luZ2xlTGluZVdyYXBwZXIgaXMgZGVzaWduZWQgdG8gd29yayBvbmx5IG9uIHNpbmdsZSBsaW5lIik7dmFyIHM9ZnVuY3Rpb24oZSl7cmV0dXJuIHQucHJvdG90eXBlLndyYXAuY2FsbChhLG4saSxlLG8pfSxsPXMocik7aWYobC5ub0xpbmVzPDIpcmV0dXJuIGw7Zm9yKHZhciBjPTAsdT1yLGg9MDtoPGUuTk9fV1JBUF9JVEVSQVRJT05TJiZ1PmM7KytoKXt2YXIgZD0odStjKS8yLHA9cyhkKTt0aGlzLmFyZVNhbWVSZXN1bHRzKGwscCk/KHU9ZCxsPXApOmM9ZH1yZXR1cm4gbH0sZS5wcm90b3R5cGUuYXJlU2FtZVJlc3VsdHM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5ub0xpbmVzPT09ZS5ub0xpbmVzJiZ0LnRydW5jYXRlZFRleHQ9PT1lLnRydW5jYXRlZFRleHR9LGV9KShFX3QuV3JhcHBlcik7a190Lk5PX1dSQVBfSVRFUkFUSU9OUz01LE1fdC5TaW5nbGVMaW5lV3JhcHBlcj1rX3QsKGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSl7Zm9yKHZhciBuIGluIGUpdC5oYXNPd25Qcm9wZXJ0eShuKXx8KHRbbl09ZVtuXSl9T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLGUoTV90KSxlKEVfdCl9KShTX3QpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh3X3QsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBMX3Q9UGd0LFBfdD1pX3QsTl90PVNfdCxJX3Q9SWd0LFJfdD0oZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe3RoaXMuY29udGV4dD10LHRoaXMubWVhc3VyZXI9bmV3IFBfdC5DYWNoZU1lYXN1cmVyKHRoaXMuY29udGV4dCksdGhpcy53cmFwcGVyPW5ldyBOX3QuV3JhcHBlcix0aGlzLndyaXRlcj1uZXcgSV90LldyaXRlcih0aGlzLm1lYXN1cmVyLHRoaXMuY29udGV4dCx0aGlzLndyYXBwZXIpfXJldHVybiB0LnN2Zz1mdW5jdGlvbihlLG4saSl7cmV0dXJuIG5ldyB0KG5ldyBMX3QuU3ZnQ29udGV4dChlLG4saSkpfSx0LmNhbnZhcz1mdW5jdGlvbihlLG4saSl7cmV0dXJuIG5ldyB0KG5ldyBMX3QuQ2FudmFzQ29udGV4dChlLG4saSkpfSx0Lmh0bWw9ZnVuY3Rpb24oZSxuLGkpe3JldHVybiBuZXcgdChuZXcgTF90Lkh0bWxDb250ZXh0KGUsbixpKSl9LHQucHJvdG90eXBlLndyaXRlPWZ1bmN0aW9uKHQsZSxuLGkscil7dGhpcy53cml0ZXIud3JpdGUodCxlLG4saSxyKX0sdC5wcm90b3R5cGUuY2xlYXJNZWFzdXJlckNhY2hlPWZ1bmN0aW9uKCl7dGhpcy5tZWFzdXJlci5yZXNldCgpfSx0fSkoKTt3X3QuVHlwZXNldHRlcj1SX3QsKGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSl7Zm9yKHZhciBuIGluIGUpdC5oYXNPd25Qcm9wZXJ0eShuKXx8KHRbbl09ZVtuXSl9T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLGUoUGd0KSxlKGlfdCksZSh3X3QpLGUoT2d0KSxlKFNfdCksZShJZ3QpfSkoTGd0KTt2YXIgT190PXt9LHpfdD17fSxEX3Q9e30sQl90PXt9OwovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqLwpPYmplY3QuZGVmaW5lUHJvcGVydHkoQl90LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgSF90PXdwdCxGX3Q9d2luZG93LkFycmF5O0JfdC5hZGQ9ZnVuY3Rpb24gVl90KHQsZSl7aWYodC5sZW5ndGghPT1lLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoImF0dGVtcHRlZCB0byBhZGQgYXJyYXlzIG9mIHVuZXF1YWwgbGVuZ3RoIik7cmV0dXJuIHQubWFwKChmdW5jdGlvbihuLGkpe3JldHVybiB0W2ldK2VbaV19KSl9LEJfdC51bmlxPWZ1bmN0aW9uIFVfdCh0KXt2YXIgZT1IX3Quc2V0KCksbj1bXTtyZXR1cm4gdC5mb3JFYWNoKChmdW5jdGlvbih0KXtlLmhhcyhTdHJpbmcodCkpfHwoZS5hZGQoU3RyaW5nKHQpKSxuLnB1c2godCkpfSkpLG59LEJfdC5mbGF0dGVuPWZ1bmN0aW9uIGpfdCh0KXtyZXR1cm4gRl90LnByb3RvdHlwZS5jb25jYXQuYXBwbHkoW10sdCl9LEJfdC5jcmVhdGVGaWxsZWRBcnJheT1mdW5jdGlvbiBHX3QodCxlKXtmb3IodmFyIG49W10saT0wO2k8ZTtpKyspbltpXT0iZnVuY3Rpb24iPT10eXBlb2YgdD90KGkpOnQ7cmV0dXJuIG59O3ZhciBXX3Q9e307Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovT2JqZWN0LmRlZmluZVByb3BlcnR5KFdfdCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIHFfdD13cHQsWV90PXdpbmRvdy5NYXRoO2Z1bmN0aW9uIFhfdCh0KXt2YXIgZT1xX3QucmdiKHQpLG49ZnVuY3Rpb24odCl7cmV0dXJuKHQvPTI1NSk8PS4wMzkyOD90LzEyLjkyOllfdC5wb3coKHQrLjA1NSkvMS4wNTUsMi40KX07cmV0dXJuLjIxMjYqbihlLnIpKy43MTUyKm4oZS5nKSsuMDcyMipuKGUuYil9V190LmNvbnRyYXN0PWZ1bmN0aW9uICRfdCh0LGUpe3ZhciBuPVhfdCh0KSsuMDUsaT1YX3QoZSkrLjA1O3JldHVybiBuPmk/bi9pOmkvbn0sV190LmxpZ2h0ZW5Db2xvcj1mdW5jdGlvbiBLX3QodCxlKXtyZXR1cm4gcV90LmNvbG9yKHQpLmJyaWdodGVyKGUpLnJnYigpLnRvU3RyaW5nKCl9LFdfdC5jb2xvclRlc3Q9ZnVuY3Rpb24gWl90KHQsZSl7dC5jbGFzc2VkKGUsITApO3ZhciBuPXQuc3R5bGUoImJhY2tncm91bmQtY29sb3IiKTtpZigidHJhbnNwYXJlbnQiPT09bilyZXR1cm4gbnVsbDt2YXIgaT0vXCgoLispXCkvLmV4ZWMobik7aWYoIWkpcmV0dXJuIG51bGw7dmFyIHI9aVsxXS5zcGxpdCgiLCIpLm1hcCgoZnVuY3Rpb24odCl7dmFyIGU9K3Qsbj1lLnRvU3RyaW5nKDE2KTtyZXR1cm4gZTwxNj8iMCIrbjpufSkpO2lmKDQ9PT1yLmxlbmd0aCYmIjAwIj09PXJbM10pcmV0dXJuIG51bGw7dmFyIG89IiMiK3Iuam9pbigiIik7cmV0dXJuIHQuY2xhc3NlZChlLCExKSxvfTt2YXIgSl90PXt9OyEoZnVuY3Rpb24odCl7Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovCk9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgZT13cHQsbj13aW5kb3cuTWF0aDtmdW5jdGlvbiBpKHQpe3ZhciBlO3RyeXtlPXQubm9kZSgpLmdldEJCb3goKX1jYXRjaCh0KXtlPXt4OjAseTowLHdpZHRoOjAsaGVpZ2h0OjB9fXJldHVybiBlfXQuY29udGFpbnM9ZnVuY3Rpb24gcih0LGUpe2Zvcih2YXIgbj1lO251bGwhPW4mJm4hPT10OyluPW4ucGFyZW50Tm9kZTtyZXR1cm4gbj09PXR9LHQuZWxlbWVudEJCb3g9aSx0LmVudGl0eUJvdW5kcz1mdW5jdGlvbiBvKHQpe2lmKHQgaW5zdGFuY2VvZiBTVkdFbGVtZW50KXJldHVybiBpKGUuc2VsZWN0KHQpKTtpZih0IGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpe3ZhciBuPXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7cmV0dXJue3g6bi5sZWZ0LHk6bi50b3Asd2lkdGg6bi53aWR0aCxoZWlnaHQ6bi5oZWlnaHR9fXJldHVybnt4OjAseTowLHdpZHRoOjAsaGVpZ2h0OjB9fSx0LlNDUkVFTl9SRUZSRVNIX1JBVEVfTUlMTElTRUNPTkRTPTFlMy82MCx0LnJlcXVlc3RBbmltYXRpb25GcmFtZVBvbHlmaWxsPWZ1bmN0aW9uIGEoZSl7bnVsbCE9d2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZT93aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGUpOnNldFRpbWVvdXQoZSx0LlNDUkVFTl9SRUZSRVNIX1JBVEVfTUlMTElTRUNPTkRTKX0sdC5lbGVtZW50V2lkdGg9ZnVuY3Rpb24gcyh0KXt2YXIgbj10IGluc3RhbmNlb2YgZS5zZWxlY3Rpb24/dC5ub2RlKCk6dCxpPXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKG4pO3JldHVybiBtKGksIndpZHRoIikrbShpLCJwYWRkaW5nLWxlZnQiKSttKGksInBhZGRpbmctcmlnaHQiKSttKGksImJvcmRlci1sZWZ0LXdpZHRoIikrbShpLCJib3JkZXItcmlnaHQtd2lkdGgiKX0sdC5lbGVtZW50SGVpZ2h0PWZ1bmN0aW9uIGwodCl7dmFyIG49dCBpbnN0YW5jZW9mIGUuc2VsZWN0aW9uP3Qubm9kZSgpOnQsaT13aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShuKTtyZXR1cm4gbShpLCJoZWlnaHQiKSttKGksInBhZGRpbmctdG9wIikrbShpLCJwYWRkaW5nLWJvdHRvbSIpK20oaSwiYm9yZGVyLXRvcC13aWR0aCIpK20oaSwiYm9yZGVyLWJvdHRvbS13aWR0aCIpfTt2YXIgYz0iKD86Wy0rXT9bMC05XSpcXC4/WzAtOV0rKSIsdT0iKD86KD86XFxzKyw/XFxzKil8KD86LFxccyopKSIsaD1uZXcgUmVnRXhwKCJ0cmFuc2xhdGVcXHMqXFwoXFxzKigiK2MrIikoPzoiK3UrIigiK2MrIikpPyIrIlxccypcXCkiKSxkPW5ldyBSZWdFeHAoInJvdGF0ZVxccypcXChcXHMqKCIrYysiKSIrIlxccypcXCkiKSxwPW5ldyBSZWdFeHAoInNjYWxlXFxzKlxcKFxccyooIitjKyIpKD86Iit1KyIoIitjKyIpKT8iKyJcXHMqXFwpIik7ZnVuY3Rpb24gZih0KXtpZigibnVtYmVyIj09dHlwZW9mIHQpe3JldHVybnttaW46dCxtYXg6dH19aWYodCBpbnN0YW5jZW9mIE9iamVjdCYmIm1pbiJpbiB0JiYibWF4ImluIHQpcmV0dXJuIHQ7dGhyb3cgbmV3IEVycm9yKCJpbnB1dCAnIit0KyInIGNhbid0IGJlIHBhcnNlZCBhcyBhbiBSYW5nZSIpfWZ1bmN0aW9uIG0odCxlKXt2YXIgbj10LmdldFByb3BlcnR5VmFsdWUoZSk7cmV0dXJuIHBhcnNlRmxvYXQobil8fDB9dC5nZXRUcmFuc2xhdGVWYWx1ZXM9ZnVuY3Rpb24gZyh0KXt2YXIgZT1oLmV4ZWModC5hdHRyKCJ0cmFuc2Zvcm0iKSk7aWYobnVsbCE9ZSl7dmFyIG49ZVsyXTtyZXR1cm5bK2VbMV0sKyh2b2lkIDA9PT1uPzA6bildfXJldHVyblswLDBdfSx0LmdldFJvdGF0ZT1mdW5jdGlvbiBfKHQpe3ZhciBlPWQuZXhlYyh0LmF0dHIoInRyYW5zZm9ybSIpKTtyZXR1cm4gbnVsbCE9ZT8rZVsxXTowfSx0LmdldFNjYWxlVmFsdWVzPWZ1bmN0aW9uIHkodCl7dmFyIGU9cC5leGVjKHQuYXR0cigidHJhbnNmb3JtIikpO2lmKG51bGwhPWUpe3ZhciBuPWVbMV0saT1lWzJdO3JldHVyblsrbixudWxsPT1pPytuOitpXX1yZXR1cm5bMCwwXX0sdC5jbGllbnRSZWN0c092ZXJsYXA9ZnVuY3Rpb24gdih0LGUpe3JldHVybiEobi5mbG9vcih0LnJpZ2h0KTw9bi5jZWlsKGUubGVmdCkpJiYoIShuLmNlaWwodC5sZWZ0KT49bi5mbG9vcihlLnJpZ2h0KSkmJighKG4uZmxvb3IodC5ib3R0b20pPD1uLmNlaWwoZS50b3ApKSYmIShuLmNlaWwodC50b3ApPj1uLmZsb29yKGUuYm90dG9tKSkpKX0sdC5leHBhbmRSZWN0PWZ1bmN0aW9uIGIodCxlKXtyZXR1cm57bGVmdDp0LmxlZnQtZSx0b3A6dC50b3AtZSxyaWdodDp0LnJpZ2h0K2UsYm90dG9tOnQuYm90dG9tK2Usd2lkdGg6dC53aWR0aCsyKmUsaGVpZ2h0OnQuaGVpZ2h0KzIqZX19LHQuY2xpZW50UmVjdEluc2lkZT1mdW5jdGlvbiB4KHQsZSl7cmV0dXJuIG4uZmxvb3IoZS5sZWZ0KTw9bi5jZWlsKHQubGVmdCkmJm4uZmxvb3IoZS50b3ApPD1uLmNlaWwodC50b3ApJiZuLmZsb29yKHQucmlnaHQpPD1uLmNlaWwoZS5yaWdodCkmJm4uZmxvb3IodC5ib3R0b20pPD1uLmNlaWwoZS5ib3R0b20pfSx0LmludGVyc2VjdHNCQm94PWZ1bmN0aW9uIHcodCxlLG4saSl7dm9pZCAwPT09aSYmKGk9LjUpO3ZhciByPWYodCksbz1mKGUpO3JldHVybiBuLngrbi53aWR0aD49ci5taW4taSYmbi54PD1yLm1heCtpJiZuLnkrbi5oZWlnaHQ+PW8ubWluLWkmJm4ueTw9by5tYXgraX0sdC5nZXRIdG1sRWxlbWVudEFuY2VzdG9ycz1mdW5jdGlvbiBTKHQpe2Zvcih2YXIgZT1bXTt0JiZ0IGluc3RhbmNlb2YgSFRNTEVsZW1lbnQ7KWUucHVzaCh0KSx0PXQucGFyZW50RWxlbWVudDtyZXR1cm4gZX0sdC5nZXRFbGVtZW50VHJhbnNmb3JtPWZ1bmN0aW9uIE0odCl7dmFyIGU9d2luZG93LmdldENvbXB1dGVkU3R5bGUodCxudWxsKTtyZXR1cm4oZnVuY3Rpb24gbih0KXtpZihudWxsPT10fHwibm9uZSI9PT10KXJldHVybiBudWxsO3ZhciBlPXQubWF0Y2goRSk7aWYobnVsbD09ZXx8ZS5sZW5ndGg8MilyZXR1cm4gbnVsbDt2YXIgbj1lWzFdLnNwbGl0KFQpLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHBhcnNlRmxvYXQodCl9KSk7aWYoNiE9bi5sZW5ndGgpcmV0dXJuIG51bGw7cmV0dXJuIG59KShlLmdldFByb3BlcnR5VmFsdWUoIi13ZWJraXQtdHJhbnNmb3JtIil8fGUuZ2V0UHJvcGVydHlWYWx1ZSgiLW1vei10cmFuc2Zvcm0iKXx8ZS5nZXRQcm9wZXJ0eVZhbHVlKCItbXMtdHJhbnNmb3JtIil8fGUuZ2V0UHJvcGVydHlWYWx1ZSgiLW8tdHJhbnNmb3JtIil8fGUuZ2V0UHJvcGVydHlWYWx1ZSgidHJhbnNmb3JtIikpfTt2YXIgRT0vXm1hdHJpeFwoKFteKV0rKVwpJC8sVD0vWywgXSsvfSkoSl90KTt2YXIgUV90PXt9OwovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqL09iamVjdC5kZWZpbmVQcm9wZXJ0eShRX3QsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciB0eXQ9d3B0LGV5dD1KX3Qsbnl0PXdpbmRvdy5NYXRoLGl5dD1bMSwwLDAsMSwwLDBdO2Z1bmN0aW9uIHJ5dCh0LGUpe3JldHVyblt0WzBdKmVbMF0rdFsyXSplWzFdLHRbMV0qZVswXSt0WzNdKmVbMV0sdFswXSplWzJdK3RbMl0qZVszXSx0WzFdKmVbMl0rdFszXSplWzNdLHRbMF0qZVs0XSt0WzJdKmVbNV0rdFs0XSx0WzFdKmVbNF0rdFszXSplWzVdK3RbNV1dfWZ1bmN0aW9uIG95dCh0LGUpe3JldHVyblt0WzBdLHRbMV0sdFsyXSx0WzNdLHRbMF0qZVswXSt0WzJdKmVbMV0rdFs0XSx0WzFdKmVbMF0rdFszXSplWzFdK3RbNV1dfWZ1bmN0aW9uIGF5dCh0KXt2YXIgZT10WzBdKnRbM10tdFsxXSp0WzJdO2lmKDA9PT1lKXRocm93IG5ldyBFcnJvcigic2luZ3VsYXIgbWF0cml4Iik7dmFyIG49MS9lO3JldHVybltuKnRbM10sbiotdFsxXSxuKi10WzJdLG4qdFswXSxuKigtdFszXSp0WzRdK3RbMl0qdFs1XSksbioodFsxXSp0WzRdKy10WzBdKnRbNV0pXX1RX3QuaW5SYW5nZT1mdW5jdGlvbiBzeXQodCxlLG4pe3JldHVybiBueXQubWluKGUsbik8PXQmJnQ8PW55dC5tYXgoZSxuKX0sUV90LmNsYW1wPWZ1bmN0aW9uIGx5dCh0LGUsbil7cmV0dXJuIG55dC5taW4obnl0Lm1heChlLHQpLG4pfSxRX3QubWF4PWZ1bmN0aW9uIGN5dCh0LGUsbil7dmFyIGk9ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZTpudWxsLHI9bnVsbD09aT9lOm4sbz1udWxsPT1pP3R5dC5tYXgodCk6dHl0Lm1heCh0LGkpO3JldHVybiB2b2lkIDAhPT1vP286cn0sUV90Lm1pbj1mdW5jdGlvbiB1eXQodCxlLG4pe3ZhciBpPSJmdW5jdGlvbiI9PXR5cGVvZiBlP2U6bnVsbCxyPW51bGw9PWk/ZTpuLG89bnVsbD09aT90eXQubWluKHQpOnR5dC5taW4odCxpKTtyZXR1cm4gdm9pZCAwIT09bz9vOnJ9LFFfdC5pc05hTj1mdW5jdGlvbiBoeXQodCl7cmV0dXJuIHQhPXR9LFFfdC5pc1ZhbGlkTnVtYmVyPWZ1bmN0aW9uIGR5dCh0KXtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIHQmJnQtdDwxfSxRX3QucmFuZ2U9ZnVuY3Rpb24gcHl0KHQsZSxuKXtpZih2b2lkIDA9PT1uJiYobj0xKSwwPT09bil0aHJvdyBuZXcgRXJyb3IoInN0ZXAgY2Fubm90IGJlIDAiKTtmb3IodmFyIGk9bnl0Lm1heChueXQuY2VpbCgoZS10KS9uKSwwKSxyPVtdLG89MDtvPGk7KytvKXJbb109dCtuKm87cmV0dXJuIHJ9LFFfdC5kaXN0YW5jZVNxdWFyZWQ9ZnVuY3Rpb24gZnl0KHQsZSl7cmV0dXJuIG55dC5wb3coZS55LXQueSwyKStueXQucG93KGUueC10LngsMil9LFFfdC5kZWdyZWVzVG9SYWRpYW5zPWZ1bmN0aW9uIG15dCh0KXtyZXR1cm4gdC8zNjAqbnl0LlBJKjJ9LFFfdC53aXRoaW49ZnVuY3Rpb24gZ3l0KHQsZSl7cmV0dXJuIGUudG9wTGVmdC54PD10LngmJmUuYm90dG9tUmlnaHQueD49dC54JiZlLnRvcExlZnQueTw9dC55JiZlLmJvdHRvbVJpZ2h0Lnk+PXQueX0sUV90LmJvdW5kc0ludGVyc2VjdHM9ZnVuY3Rpb24gX3l0KHQsZSxuLGkscixvLGEscyl7cmV0dXJuIHQ8PXIrYSYmcjw9dCtuJiZlPD1vK3MmJm88PWUraX0sUV90LmdldEN1bXVsYXRpdmVUcmFuc2Zvcm09ZnVuY3Rpb24geXl0KHQpe2Zvcih2YXIgZT1leXQuZ2V0SHRtbEVsZW1lbnRBbmNlc3RvcnModCksbj1peXQsaT1udWxsLHI9MCxvPWU7cjxvLmxlbmd0aDtyKyspe3ZhciBhPW9bcl0scz1leXQuZ2V0RWxlbWVudFRyYW5zZm9ybShhKTtpZihudWxsIT1zKXt2YXIgbD1hLmNsaWVudFdpZHRoLzIsYz1hLmNsaWVudEhlaWdodC8yO249b3l0KG4sW2wsY10pLG49b3l0KG49cnl0KG4sYXl0KHMpKSxbLWwsLWNdKX12YXIgdT1hLnNjcm9sbExlZnQsaD1hLnNjcm9sbFRvcDtudWxsIT09aSYmYSE9PWl8fCh1LT1hLm9mZnNldExlZnQrYS5jbGllbnRMZWZ0LGgtPWEub2Zmc2V0VG9wK2EuY2xpZW50VG9wLGk9YS5vZmZzZXRQYXJlbnQpLG49b3l0KG4sW3UsaF0pfXJldHVybiBufSxRX3QubXVsdGlwbHlNYXRyaXg9cnl0LFFfdC5wcmVtdWx0aXBseVRyYW5zbGF0ZT1mdW5jdGlvbiB2eXQodCxlKXtyZXR1cm5bZVswXSxlWzFdLGVbMl0sZVszXSxlWzRdK3RbMF0sZVs1XSt0WzFdXX0sUV90Lm11bHRpcGx5VHJhbnNsYXRlPW95dCxRX3QuaW52ZXJ0TWF0cml4PWF5dCxRX3QuYXBwbHlUcmFuc2Zvcm09ZnVuY3Rpb24gYnl0KHQsZSl7cmV0dXJue3g6dFswXSplLngrdFsyXSplLnkrdFs0XSx5OnRbMV0qZS54K3RbM10qZS55K3RbNV19fTt2YXIgeHl0PXt9LHd5dD17fTsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNy1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi8KT2JqZWN0LmRlZmluZVByb3BlcnR5KHd5dCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIFN5dD0oZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiB0LnByb3RvdHlwZS5zcGxpdD1mdW5jdGlvbih0LGUpe2Zvcih2YXIgbj1NYXRoLmNlaWwodC5sZW5ndGgvMiksaT0wO2k8bjtpKyspZVswXS5pbnNlcnQodFtpXSk7Zm9yKGk9bjtpPHQubGVuZ3RoO2krKyllWzFdLmluc2VydCh0W2ldKX0sdH0pKCk7d3l0LlNwbGl0U3RyYXRlZ3lUcml2aWFsPVN5dDt2YXIgTXl0PShmdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHQucHJvdG90eXBlLnNwbGl0PWZ1bmN0aW9uKHQsZSl7Zm9yKHQ9dC5zbGljZSgpLHRoaXMuY2hvb3NlRmlyc3RTcGxpdCh0LGUpO3QubGVuZ3RoPjA7KXRoaXMuYWRkTmV4dCh0LGUpfSx0LnByb3RvdHlwZS5jaG9vc2VGaXJzdFNwbGl0PWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuPTAsaT0wLHI9dC5sZW5ndGgtMSxvPXQubGVuZ3RoLTEsYT0xO2E8dC5sZW5ndGgtMTthKyspe3ZhciBzPXRbYV07cy5ib3VuZHMueGw+dFtyXS5ib3VuZHMueGw/cj1hOnMuYm91bmRzLnhoPHRbbl0uYm91bmRzLnhoJiYobj1hKSxzLmJvdW5kcy55bD50W29dLmJvdW5kcy55bD9vPWE6cy5ib3VuZHMueWg8dFtpXS5ib3VuZHMueWgmJihpPWEpfXZhciBsPU1hdGguYWJzKHRbbl0uYm91bmRzLnhoLXRbcl0uYm91bmRzLnhsKT5NYXRoLmFicyh0W2ldLmJvdW5kcy55aC10W29dLmJvdW5kcy55bCk/W24scl06W2ksb10sYz1sWzBdLHU9bFsxXTtjPT09dSYmKGM9MCx1PXQubGVuZ3RoLTEpLGVbMF0uaW5zZXJ0KHQuc3BsaWNlKE1hdGgubWF4KGMsdSksMSlbMF0pLGVbMV0uaW5zZXJ0KHQuc3BsaWNlKE1hdGgubWluKGMsdSksMSlbMF0pfSx0LnByb3RvdHlwZS5hZGROZXh0PWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuPW51bGwsaT1udWxsLHI9bnVsbCxvPTA7bzx0Lmxlbmd0aDtvKyspe3ZhciBhPXRbb10scz1lWzBdLnVuaW9uQXJlYURpZmZlcmVuY2UoYS5ib3VuZHMpLGw9ZVsxXS51bmlvbkFyZWFEaWZmZXJlbmNlKGEuYm91bmRzKTsoczxpfHxudWxsPT1uKSYmKG49byxpPXMscj1lWzBdKSxsPGkmJihuPW8saT1sLHI9ZVsxXSl9ci5pbnNlcnQodC5zcGxpY2UobiwxKVswXSl9LHR9KSgpO3d5dC5TcGxpdFN0cmF0ZWd5TGluZWFyPU15dCwoZnVuY3Rpb24odCl7Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTctcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovCk9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgZSxuPW5ldyB3eXQuU3BsaXRTdHJhdGVneUxpbmVhcjtmdW5jdGlvbiBpKHQsbixpKXt2YXIgcj0xLzAsbz0xLzA7cmV0dXJuIGZ1bmN0aW9uKGEpe3ZhciBzPW4oYS5ib3VuZHMsdCksbD1pKGEuYm91bmRzLHQpO3JldHVybiBudWxsIT1hLnZhbHVlP3M8cj8ocj1zLG89bCxlLlBBU1NfQU5EX09WRVJXUklURSk6cz09PXI/ZS5QQVNTOmUuRkFJTDpzPm8/ZS5GQUlMOihvPU1hdGgubWF4KGwsbyksZS5QQVNTKX19ZnVuY3Rpb24gcih0LGUpe3JldHVybiBmdW5jdGlvbihuLGkpe3JldHVybiBlKGkuYm91bmRzLHQpLWUobi5ib3VuZHMsdCl9fSEoZnVuY3Rpb24odCl7dFt0LlBBU1M9MF09IlBBU1MiLHRbdC5GQUlMPTFdPSJGQUlMIix0W3QuUEFTU19BTkRfT1ZFUldSSVRFPTJdPSJQQVNTX0FORF9PVkVSV1JJVEUifSkoZT10LlF1ZXJ5UHJlZGljYXRlUmVzdWx0fHwodC5RdWVyeVByZWRpY2F0ZVJlc3VsdD17fSkpLHQuY3JlYXRlTWluaW1pemluZ05vZGVQcmVkaWNhdGU9aSx0LmNyZWF0ZU5vZGVTb3J0PXI7dmFyIG89KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUpe3ZvaWQgMD09PXQmJih0PTUpLHZvaWQgMD09PWUmJihlPW4pLHRoaXMubWF4Tm9kZUNoaWxkcmVuPXQsdGhpcy5zcGxpdFN0cmF0ZWd5PWUsdGhpcy5yb290PW5ldyBhKCEwKSx0aGlzLnNpemU9MH1yZXR1cm4gdC5wcm90b3R5cGUuZ2V0Um9vdD1mdW5jdGlvbigpe3JldHVybiB0aGlzLnJvb3R9LHQucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7dGhpcy5yb290PW5ldyBhKCEwKSx0aGlzLnNpemU9MH0sdC5wcm90b3R5cGUuaW5zZXJ0PWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuPXRoaXMucm9vdDshbi5sZWFmOyluPW4uc3VidHJlZSh0KTt2YXIgaT1hLnZhbHVlTm9kZSh0LGUpO2ZvcihuLmluc2VydChpKSx0aGlzLnNpemUrPTE7bi5vdmVyZmxvdyh0aGlzLm1heE5vZGVDaGlsZHJlbik7KW51bGw9PShuPW4uc3BsaXQodGhpcy5zcGxpdFN0cmF0ZWd5KSkucGFyZW50JiYodGhpcy5yb290PW4pO3JldHVybiBpfSx0LnByb3RvdHlwZS5sb2NhdGU9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucXVlcnkoKGZ1bmN0aW9uKGUpe3JldHVybiBlLmNvbnRhaW5zKHQpfSkpfSx0LnByb3RvdHlwZS5sb2NhdGVOZWFyZXN0PWZ1bmN0aW9uKHQpe3ZhciBlPWkodCxzLmRpc3RhbmNlU3F1YXJlZFRvTmVhckVkZ2Uscy5kaXN0YW5jZVNxdWFyZWRUb0ZhckVkZ2UpO3JldHVybiB0aGlzLnF1ZXJ5Tm9kZXMoZSkubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC52YWx1ZX0pKX0sdC5wcm90b3R5cGUubG9jYXRlTmVhcmVzdFg9ZnVuY3Rpb24odCl7dmFyIGU9aSh0LHMuYWJzb2x1dGVEaXN0YW5jZVRvTmVhckVkZ2VYLHMuYWJzb2x1dGVEaXN0YW5jZVRvRmFyRWRnZVgpLG49dGhpcy5xdWVyeU5vZGVzKGUpO3JldHVybiBuLnNvcnQocih0LHMuYWJzb2x1dGVEaXN0YW5jZVRvTmVhckVkZ2VZKSksbi5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0LnZhbHVlfSkpfSx0LnByb3RvdHlwZS5sb2NhdGVOZWFyZXN0WT1mdW5jdGlvbih0KXt2YXIgZT1pKHQscy5hYnNvbHV0ZURpc3RhbmNlVG9OZWFyRWRnZVkscy5hYnNvbHV0ZURpc3RhbmNlVG9GYXJFZGdlWSksbj10aGlzLnF1ZXJ5Tm9kZXMoZSk7cmV0dXJuIG4uc29ydChyKHQscy5hYnNvbHV0ZURpc3RhbmNlVG9OZWFyRWRnZVgpKSxuLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQudmFsdWV9KSl9LHQucHJvdG90eXBlLmludGVyc2VjdD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5xdWVyeSgoZnVuY3Rpb24oZSl7cmV0dXJuIHMuaXNCb3VuZHNPdmVybGFwQm91bmRzKGUsdCl9KSl9LHQucHJvdG90eXBlLmludGVyc2VjdFg9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucXVlcnkoKGZ1bmN0aW9uKGUpe3JldHVybiBzLmlzQm91bmRzT3ZlcmxhcFgoZSx0KX0pKX0sdC5wcm90b3R5cGUuaW50ZXJzZWN0WT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5xdWVyeSgoZnVuY3Rpb24oZSl7cmV0dXJuIHMuaXNCb3VuZHNPdmVybGFwWShlLHQpfSkpfSx0LnByb3RvdHlwZS5xdWVyeT1mdW5jdGlvbih0KXt2YXIgZT1bXTtpZihudWxsIT10aGlzLnJvb3QuYm91bmRzJiYhdCh0aGlzLnJvb3QuYm91bmRzKSlyZXR1cm4gZTtmb3IodmFyIG49W3RoaXMucm9vdF07bi5sZW5ndGg+MDspZm9yKHZhciBpPW4uc2hpZnQoKSxyPTA7cjxpLmVudHJpZXMubGVuZ3RoO3IrKyl7dmFyIG89aS5lbnRyaWVzW3JdO3Qoby5ib3VuZHMpJiYoaS5sZWFmP2UucHVzaChvLnZhbHVlKTpuLnB1c2gobykpfXJldHVybiBlfSx0LnByb3RvdHlwZS5xdWVyeU5vZGVzPWZ1bmN0aW9uKHQpe3ZhciBuPVtdO2lmKG51bGwhPXRoaXMucm9vdC5ib3VuZHMmJnQodGhpcy5yb290KT09PWUuRkFJTClyZXR1cm4gbjtmb3IodmFyIGk9W3RoaXMucm9vdF07aS5sZW5ndGg+MDspZm9yKHZhciByPWkuc2hpZnQoKSxvPTA7bzxyLmVudHJpZXMubGVuZ3RoO28rKyl7dmFyIGE9ci5lbnRyaWVzW29dLHM9dChhKTtzPT09ZS5QQVNTX0FORF9PVkVSV1JJVEUmJihuPVtdKSxzIT09ZS5QQVNTJiZzIT09ZS5QQVNTX0FORF9PVkVSV1JJVEV8fChyLmxlYWY/bi5wdXNoKGEpOmkucHVzaChhKSl9cmV0dXJuIG59LHR9KSgpO3QuUlRyZWU9bzt2YXIgYT0oZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe3RoaXMubGVhZj10LHRoaXMuYm91bmRzPW51bGwsdGhpcy5lbnRyaWVzPVtdLHRoaXMucGFyZW50PW51bGwsdGhpcy52YWx1ZT1udWxsfXJldHVybiB0LnZhbHVlTm9kZT1mdW5jdGlvbihlLG4pe3ZhciBpPW5ldyB0KCEwKTtyZXR1cm4gaS5ib3VuZHM9ZSxpLnZhbHVlPW4saX0sdC5wcm90b3R5cGUub3ZlcmZsb3c9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZW50cmllcy5sZW5ndGg+dH0sdC5wcm90b3R5cGUuaW5zZXJ0PWZ1bmN0aW9uKHQpe3RoaXMuZW50cmllcy5wdXNoKHQpLHQucGFyZW50PXRoaXM7Zm9yKHZhciBlPXRoaXM7bnVsbCE9ZTspZS5ib3VuZHM9cy51bmlvbkFsbChbZS5ib3VuZHMsdC5ib3VuZHNdKSxlPWUucGFyZW50O3JldHVybiB0aGlzfSx0LnByb3RvdHlwZS5yZW1vdmU9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5lbnRyaWVzLmluZGV4T2YodCk7aWYoZT49MCl7dGhpcy5lbnRyaWVzLnNwbGljZShlLDEpO2Zvcih2YXIgbj10aGlzO251bGwhPW47KW4uYm91bmRzPXMudW5pb25BbGwobi5lbnRyaWVzLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQuYm91bmRzfSkpKSxuPW4ucGFyZW50fXJldHVybiB0aGlzfSx0LnByb3RvdHlwZS5zdWJ0cmVlPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0xLzAsbj1udWxsLGk9MDtpPHRoaXMuZW50cmllcy5sZW5ndGg7aSsrKXt2YXIgcj10aGlzLmVudHJpZXNbaV0sbz1yLnVuaW9uQXJlYURpZmZlcmVuY2UodCk7KG88ZXx8bz09PWUmJm51bGwhPW4mJnIuZW50cmllcy5sZW5ndGg8bi5lbnRyaWVzLmxlbmd0aCkmJihuPXIpfXJldHVybiBufSx0LnByb3RvdHlwZS5zcGxpdD1mdW5jdGlvbihlKXtudWxsIT10aGlzLnBhcmVudCYmdGhpcy5wYXJlbnQucmVtb3ZlKHRoaXMpO3ZhciBuPVtuZXcgdCh0aGlzLmxlYWYpLG5ldyB0KHRoaXMubGVhZildO2Uuc3BsaXQodGhpcy5lbnRyaWVzLG4pO3ZhciBpPW51bGwhPXRoaXMucGFyZW50P3RoaXMucGFyZW50Om5ldyB0KCExKTtyZXR1cm4gaS5pbnNlcnQoblswXSksaS5pbnNlcnQoblsxXSksaS5sZWFmPSExLGl9LHQucHJvdG90eXBlLnVuaW9uQXJlYURpZmZlcmVuY2U9ZnVuY3Rpb24odCl7cmV0dXJuIE1hdGguYWJzKHMudW5pb24odGhpcy5ib3VuZHMsdCkuYXJlYSgpLXRoaXMuYm91bmRzLmFyZWEoKSl9LHQucHJvdG90eXBlLm1heERlcHRoPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubGVhZj8xOjErdGhpcy5lbnRyaWVzLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQubWF4RGVwdGgoKX0pKS5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIE1hdGgubWF4KHQsZSl9KSl9LHR9KSgpO3QuUlRyZWVOb2RlPWE7dmFyIHM9KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUsbixpKXt0aGlzLnhsPXQsdGhpcy55bD1lLHRoaXMueGg9bix0aGlzLnloPWksdGhpcy53aWR0aD10aGlzLnhoLXRoaXMueGwsdGhpcy5oZWlnaHQ9dGhpcy55aC10aGlzLnlsfXJldHVybiB0Lnh5d2g9ZnVuY3Rpb24oZSxuLGkscil7cmV0dXJuIG5ldyB0KGUsbixlK2ksbityKX0sdC5lbnRpdHlCb3VuZHM9ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyB0KGUueCxlLnksZS54K2Uud2lkdGgsZS55K2UuaGVpZ2h0KX0sdC5ib3VuZHM9ZnVuY3Rpb24oZSl7cmV0dXJuIHQucG9pbnRQYWlyKGUudG9wTGVmdCxlLmJvdHRvbVJpZ2h0KX0sdC5wb2ludFBhaXI9ZnVuY3Rpb24oZSxuKXtyZXR1cm4gbmV3IHQoTWF0aC5taW4oZS54LG4ueCksTWF0aC5taW4oZS55LG4ueSksTWF0aC5tYXgoZS54LG4ueCksTWF0aC5tYXgoZS55LG4ueSkpfSx0LnBvaW50cz1mdW5jdGlvbihlKXtpZihlLmxlbmd0aDwyKXRocm93IG5ldyBFcnJvcigibmVlZCBhdCBsZWFzdCAyIHBvaW50cyB0byBjcmVhdGUgYm91bmRzIik7dmFyIG49ZS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0Lnh9KSksaT1lLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQueX0pKTtyZXR1cm4gbmV3IHQobi5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIE1hdGgubWluKHQsZSl9KSksaS5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIE1hdGgubWluKHQsZSl9KSksbi5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIE1hdGgubWF4KHQsZSl9KSksaS5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIE1hdGgubWF4KHQsZSl9KSkpfSx0LnVuaW9uPWZ1bmN0aW9uKGUsbil7cmV0dXJuIG5ldyB0KE1hdGgubWluKGUueGwsbi54bCksTWF0aC5taW4oZS55bCxuLnlsKSxNYXRoLm1heChlLnhoLG4ueGgpLE1hdGgubWF4KGUueWgsbi55aCkpfSx0LnVuaW9uQWxsPWZ1bmN0aW9uKGUpe3JldHVybiAwPT09KGU9ZS5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiBudWxsIT10fSkpKS5sZW5ndGg/bnVsbDplLnJlZHVjZSgoZnVuY3Rpb24oZSxuKXtyZXR1cm4gdC51bmlvbihlLG4pfSkpfSx0LmlzQm91bmRzT3ZlcmxhcEJvdW5kcz1mdW5jdGlvbihlLG4pe3JldHVybiB0LmlzQm91bmRzT3ZlcmxhcFgoZSxuKSYmdC5pc0JvdW5kc092ZXJsYXBZKGUsbil9LHQuaXNCb3VuZHNPdmVybGFwWD1mdW5jdGlvbih0LGUpe3JldHVybiEodC54aDxlLnhsfHx0LnhsPmUueGgpfSx0LmlzQm91bmRzT3ZlcmxhcFk9ZnVuY3Rpb24odCxlKXtyZXR1cm4hKHQueWg8ZS55bHx8dC55bD5lLnloKX0sdC5hYnNvbHV0ZURpc3RhbmNlVG9OZWFyRWRnZVg9ZnVuY3Rpb24odCxlKXt2YXIgbj10LndpZHRoLzI7cmV0dXJuIE1hdGgubWF4KE1hdGguYWJzKGUueC0odC54bCtuKSktbiwwKX0sdC5hYnNvbHV0ZURpc3RhbmNlVG9OZWFyRWRnZVk9ZnVuY3Rpb24odCxlKXt2YXIgbj10LmhlaWdodC8yO3JldHVybiBNYXRoLm1heChNYXRoLmFicyhlLnktKHQueWwrbikpLW4sMCl9LHQuYWJzb2x1dGVEaXN0YW5jZVRvRmFyRWRnZVg9ZnVuY3Rpb24oZSxuKXt2YXIgaT10LmFic29sdXRlRGlzdGFuY2VUb05lYXJFZGdlWChlLG4pO3JldHVybiAwPT09aT8wOmkrZS53aWR0aH0sdC5hYnNvbHV0ZURpc3RhbmNlVG9GYXJFZGdlWT1mdW5jdGlvbihlLG4pe3ZhciBpPXQuYWJzb2x1dGVEaXN0YW5jZVRvTmVhckVkZ2VZKGUsbik7cmV0dXJuIDA9PT1pPzA6aStlLmhlaWdodH0sdC5kaXN0YW5jZVNxdWFyZWRUb05lYXJFZGdlPWZ1bmN0aW9uKGUsbil7dmFyIGk9dC5hYnNvbHV0ZURpc3RhbmNlVG9OZWFyRWRnZVgoZSxuKSxyPXQuYWJzb2x1dGVEaXN0YW5jZVRvTmVhckVkZ2VZKGUsbik7cmV0dXJuIGkqaStyKnJ9LHQuZGlzdGFuY2VTcXVhcmVkVG9GYXJFZGdlPWZ1bmN0aW9uKGUsbil7dmFyIGk9dC5hYnNvbHV0ZURpc3RhbmNlVG9GYXJFZGdlWChlLG4pLHI9dC5hYnNvbHV0ZURpc3RhbmNlVG9GYXJFZGdlWShlLG4pO3JldHVybiBpKmkrcipyfSx0LnByb3RvdHlwZS5hcmVhPWZ1bmN0aW9uKCl7cmV0dXJuIG51bGw9PXRoaXMuYXJlYUNhY2hlZCYmKHRoaXMuYXJlYUNhY2hlZD0odGhpcy54aC10aGlzLnhsKSoodGhpcy55aC10aGlzLnlsKSksdGhpcy5hcmVhQ2FjaGVkfSx0LnByb3RvdHlwZS5jb250YWlucz1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy54bDw9dC54JiZ0aGlzLnhoPj10LngmJnRoaXMueWw8PXQueSYmdGhpcy55aD49dC55fSx0fSkoKTt0LlJUcmVlQm91bmRzPXN9KSh4eXQpO3ZhciBFeXQ9e307IShmdW5jdGlvbih0KXsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi8KT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBlPXdwdCxuPUNlLmV4cG9ydHMsaT1EX3Q7dC5JU3RhY2tpbmdPcmRlcj1iZ3QubWFrZUVudW0oWyJ0b3Bkb3duIiwiYm90dG9tdXAiXSk7dmFyIHI9d2luZG93Lk1hdGg7dC5zdGFjaz1mdW5jdGlvbiBvKG4scixhLHMpe3ZvaWQgMD09PXMmJihzPSJib3R0b211cCIpO3ZhciBsPWUubWFwKCksYz1lLm1hcCgpLHU9bmV3IGkuTWFwOyJ0b3Bkb3duIj09PXMmJihuPW4uc2xpY2UoKSkucmV2ZXJzZSgpO2Zvcih2YXIgaD0wLGQ9bjtoPGQubGVuZ3RoO2grKyl7Zm9yKHZhciBwPWRbaF0sZj1uZXcgaS5NYXAsbT1wLmRhdGEoKSxnPW0ubGVuZ3RoLF89MDtfPGc7XysrKXt2YXIgeT1tW19dLHY9cih5LF8scCksYj10Lm5vcm1hbGl6ZUtleSh2KSx4PSthKHksXyxwKSx3PXZvaWQgMCxTPXg+PTA/bDpjO1MuaGFzKGIpPyh3PVMuZ2V0KGIpLFMuc2V0KGIsdyt4KSk6KHc9MCxTLnNldChiLHgpKSxmLnNldChiLHtvZmZzZXQ6dyx2YWx1ZTp4LGF4aXNWYWx1ZTp2LG9yaWdpbmFsRGF0dW06eSxvcmlnaW5hbERhdGFzZXQ6cCxvcmlnaW5hbEluZGV4Ol99KX11LnNldChwLGYpfXJldHVybiB1fSx0LnN0YWNrZWRFeHRlbnRzPWZ1bmN0aW9uIGEodCl7dmFyIGU9bmV3IGkuTWFwLG49bmV3IGkuTWFwO3JldHVybiB0LmZvckVhY2goKGZ1bmN0aW9uKHQpe3QuZm9yRWFjaCgoZnVuY3Rpb24odCxyKXt2YXIgbz10Lm9mZnNldCt0LnZhbHVlLGE9aS5NYXRoLm1heChbbyx0Lm9mZnNldF0sdC5vZmZzZXQpLHM9aS5NYXRoLm1pbihbbyx0Lm9mZnNldF0sdC5vZmZzZXQpLGw9dC5heGlzVmFsdWU7ZS5oYXMocik/ZS5nZXQocikuZXh0ZW50PGEmJmUuc2V0KHIse2V4dGVudDphLGF4aXNWYWx1ZTpsLHN0YWNrZWREYXR1bTp0fSk6ZS5zZXQocix7ZXh0ZW50OmEsYXhpc1ZhbHVlOmwsc3RhY2tlZERhdHVtOnR9KSxuLmhhcyhyKT9uLmdldChyKS5leHRlbnQ+cyYmbi5zZXQocix7ZXh0ZW50OnMsYXhpc1ZhbHVlOmwsc3RhY2tlZERhdHVtOnR9KTpuLnNldChyLHtleHRlbnQ6cyxheGlzVmFsdWU6bCxzdGFja2VkRGF0dW06dH0pfSkpfSkpLHttYXhpbXVtRXh0ZW50czplLG1pbmltdW1FeHRlbnRzOm59fSx0LnN0YWNrZWRFeHRlbnQ9ZnVuY3Rpb24gcyhlLG4sbyl7dmFyIGE9W107ZS5mb3JFYWNoKChmdW5jdGlvbihlLGkpe2Zvcih2YXIgcj1pLmRhdGEoKSxzPXIubGVuZ3RoLGw9MDtsPHM7bCsrKXt2YXIgYz1yW2xdO2lmKG51bGw9PW98fG8oYyxsLGkpKXt2YXIgdT1lLmdldCh0Lm5vcm1hbGl6ZUtleShuKGMsbCxpKSkpO2EucHVzaCh1LnZhbHVlK3Uub2Zmc2V0KX19fSkpO3ZhciBzPWkuTWF0aC5tYXgoYSwwKSxsPWkuTWF0aC5taW4oYSwwKTtyZXR1cm5bci5taW4obCwwKSxyLm1heCgwLHMpXX0sdC5ub3JtYWxpemVLZXk9bi5tZW1vaXplKChmdW5jdGlvbih0KXtyZXR1cm4gU3RyaW5nKHQpfSkpfSkoRXl0KTt2YXIgVHl0PXt9LEN5dD17fTsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi8KT2JqZWN0LmRlZmluZVByb3BlcnR5KEN5dCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksQ3l0LlNIT1dfV0FSTklOR1M9ITAsQ3l0LkFERF9USVRMRV9FTEVNRU5UUz0hMCwKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi8KT2JqZWN0LmRlZmluZVByb3BlcnR5KFR5dCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIEF5dD1DeXQ7ZnVuY3Rpb24ga3l0KHQpe0F5dC5TSE9XX1dBUk5JTkdTJiZjb25zb2xlLndhcm4odCl9ZnVuY3Rpb24gTHl0KHQsZSl7Zm9yKHZhciBuPVtdLGk9MjtpPGFyZ3VtZW50cy5sZW5ndGg7aSsrKW5baS0yXT1hcmd1bWVudHNbaV07cmV0dXJuIDA9PT1lPyh0KG4pLC0xKTp3aW5kb3cuc2V0VGltZW91dCh0LGUsbil9VHl0Lndhcm49a3l0LFR5dC5zZXRUaW1lb3V0PUx5dCxUeXQuZGVib3VuY2U9ZnVuY3Rpb24gUHl0KHQsZSxuKXt2YXIgaT1udWxsLHI9W10sbz1mdW5jdGlvbigpe2UuYXBwbHkobixyKX07cmV0dXJuIGZ1bmN0aW9uKCl7cj1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpLGNsZWFyVGltZW91dChpKSxpPUx5dChvLHQpfX0sVHl0LmRlcHJlY2F0ZWQ9ZnVuY3Rpb24gTnl0KHQsZSxuKXt2b2lkIDA9PT1uJiYobj0iIiksa3l0KCJNZXRob2QgIit0KyIgaGFzIGJlZW4gZGVwcmVjYXRlZCBpbiB2ZXJzaW9uICIrZSsiLiBQbGVhc2UgcmVmZXIgdG8gdGhlIHJlbGVhc2Ugbm90ZXMuICIrbil9O3ZhciBJeXQ9e307Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTctcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovT2JqZWN0LmRlZmluZVByb3BlcnR5KEl5dCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIFJ5dD0oZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSxuKXt0aGlzLmVudHJ5SW5kZXg9dCx0aGlzLmV4aXRJbmRleD10LHRoaXMubWluSW5kZXg9dCx0aGlzLm1heEluZGV4PXQsdGhpcy5idWNrZXRWYWx1ZT1lLHRoaXMubWluVmFsdWU9bix0aGlzLm1heFZhbHVlPW59cmV0dXJuIHQucHJvdG90eXBlLmlzSW5CdWNrZXQ9ZnVuY3Rpb24odCl7cmV0dXJuIHQ9PXRoaXMuYnVja2V0VmFsdWV9LHQucHJvdG90eXBlLmFkZFRvQnVja2V0PWZ1bmN0aW9uKHQsZSl7dDx0aGlzLm1pblZhbHVlJiYodGhpcy5taW5WYWx1ZT10LHRoaXMubWluSW5kZXg9ZSksdD50aGlzLm1heFZhbHVlJiYodGhpcy5tYXhWYWx1ZT10LHRoaXMubWF4SW5kZXg9ZSksdGhpcy5leGl0SW5kZXg9ZX0sdC5wcm90b3R5cGUuZ2V0VW5pcXVlSW5kaWNlcz1mdW5jdGlvbigpe3ZhciB0PVt0aGlzLmVudHJ5SW5kZXgsdGhpcy5tYXhJbmRleCx0aGlzLm1pbkluZGV4LHRoaXMuZXhpdEluZGV4XTtyZXR1cm4gdC5maWx0ZXIoKGZ1bmN0aW9uKGUsbil7cmV0dXJuIDA9PW58fGUhPXRbbi0xXX0pKX0sdH0pKCk7SXl0LkJ1Y2tldD1SeXQ7dmFyIE95dD17fSx6eXQ9e307Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovCk9iamVjdC5kZWZpbmVQcm9wZXJ0eSh6eXQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBEeXQ9KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpeyJmdW5jdGlvbiI9PXR5cGVvZiB3aW5kb3cuU2V0P3RoaXMuX2VzNlNldD1uZXcgd2luZG93LlNldDp0aGlzLl92YWx1ZXM9W10sdGhpcy5zaXplPTB9cmV0dXJuIHQucHJvdG90eXBlLmFkZD1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbCE9dGhpcy5fZXM2U2V0Pyh0aGlzLl9lczZTZXQuYWRkKHQpLHRoaXMuc2l6ZT10aGlzLl9lczZTZXQuc2l6ZSx0aGlzKToodGhpcy5oYXModCl8fCh0aGlzLl92YWx1ZXMucHVzaCh0KSx0aGlzLnNpemU9dGhpcy5fdmFsdWVzLmxlbmd0aCksdGhpcyl9LHQucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbih0KXtpZihudWxsIT10aGlzLl9lczZTZXQpe3ZhciBlPXRoaXMuX2VzNlNldC5kZWxldGUodCk7cmV0dXJuIHRoaXMuc2l6ZT10aGlzLl9lczZTZXQuc2l6ZSxlfXZhciBuPXRoaXMuX3ZhbHVlcy5pbmRleE9mKHQpO3JldHVybi0xIT09biYmKHRoaXMuX3ZhbHVlcy5zcGxpY2UobiwxKSx0aGlzLnNpemU9dGhpcy5fdmFsdWVzLmxlbmd0aCwhMCl9LHQucHJvdG90eXBlLmhhcz1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbCE9dGhpcy5fZXM2U2V0P3RoaXMuX2VzNlNldC5oYXModCk6LTEhPT10aGlzLl92YWx1ZXMuaW5kZXhPZih0KX0sdC5wcm90b3R5cGUuZm9yRWFjaD1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXM7aWYobnVsbD09dGhpcy5fZXM2U2V0KXRoaXMuX3ZhbHVlcy5mb3JFYWNoKChmdW5jdGlvbihpKXt0LmNhbGwoZSxpLGksbil9KSk7ZWxzZXt0aGlzLl9lczZTZXQuZm9yRWFjaCgoZnVuY3Rpb24oaSxyKXtyZXR1cm4gdC5jYWxsKGUsaSxyLG4pfSksZSl9fSx0fSkoKTt6eXQuU2V0PUR5dCwKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi8KT2JqZWN0LmRlZmluZVByb3BlcnR5KE95dCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIEJ5dD1CTyxIeXQ9KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXtyZXR1cm4gbnVsbCE9PXQmJnQuYXBwbHkodGhpcyxhcmd1bWVudHMpfHx0aGlzfXJldHVybiBCeXQuX19leHRlbmRzKGUsdCksZS5wcm90b3R5cGUuY2FsbENhbGxiYWNrcz1mdW5jdGlvbigpe2Zvcih2YXIgdD10aGlzLGU9W10sbj0wO248YXJndW1lbnRzLmxlbmd0aDtuKyspZVtuXT1hcmd1bWVudHNbbl07cmV0dXJuIHRoaXMuZm9yRWFjaCgoZnVuY3Rpb24obil7bi5hcHBseSh0LGUpfSkpLHRoaXN9LGV9KSh6eXQuU2V0KTtPeXQuQ2FsbGJhY2tTZXQ9SHl0O3ZhciBGeXQ9e307Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovT2JqZWN0LmRlZmluZVByb3BlcnR5KEZ5dCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIFZ5dD14eXQsVXl0PShmdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt0aGlzLl9lbnRpdGllcz1bXSx0aGlzLl9ydHJlZT1uZXcgVnl0LlJUcmVlfXJldHVybiB0LnByb3RvdHlwZS5hZGRBbGw9ZnVuY3Rpb24odCxlLG4pe2lmKHRoaXMuX2VudGl0aWVzPXRoaXMuX2VudGl0aWVzLmNvbmNhdCh0KSx2b2lkIDAhPT1uKWZvcih2YXIgaT1WeXQuUlRyZWVCb3VuZHMuYm91bmRzKG4pLHI9MDtyPHQubGVuZ3RoO3IrKyl7dmFyIG89Vnl0LlJUcmVlQm91bmRzLmVudGl0eUJvdW5kcyhlKGE9dFtyXSkpO1Z5dC5SVHJlZUJvdW5kcy5pc0JvdW5kc092ZXJsYXBCb3VuZHMoaSxvKSYmdGhpcy5fcnRyZWUuaW5zZXJ0KG8sYSl9ZWxzZSBmb3Iocj0wO3I8dC5sZW5ndGg7cisrKXt2YXIgYTtvPVZ5dC5SVHJlZUJvdW5kcy5lbnRpdHlCb3VuZHMoZShhPXRbcl0pKTt0aGlzLl9ydHJlZS5pbnNlcnQobyxhKX19LHQucHJvdG90eXBlLmVudGl0eU5lYXJlc3Q9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3J0cmVlLmxvY2F0ZU5lYXJlc3QodCkucG9wKCl9LHQucHJvdG90eXBlLmVudGl0eU5lYXJlc3RYPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9ydHJlZS5sb2NhdGVOZWFyZXN0WCh0KS5wb3AoKX0sdC5wcm90b3R5cGUuZW50aXR5TmVhcmVzdFk9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3J0cmVlLmxvY2F0ZU5lYXJlc3RZKHQpLnBvcCgpfSx0LnByb3RvdHlwZS5lbnRpdGllc0luQm91bmRzPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9ydHJlZS5pbnRlcnNlY3QoVnl0LlJUcmVlQm91bmRzLmVudGl0eUJvdW5kcyh0KSl9LHQucHJvdG90eXBlLmVudGl0aWVzSW5YQm91bmRzPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9ydHJlZS5pbnRlcnNlY3RYKFZ5dC5SVHJlZUJvdW5kcy5lbnRpdHlCb3VuZHModCkpfSx0LnByb3RvdHlwZS5lbnRpdGllc0luWUJvdW5kcz1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fcnRyZWUuaW50ZXJzZWN0WShWeXQuUlRyZWVCb3VuZHMuZW50aXR5Qm91bmRzKHQpKX0sdC5wcm90b3R5cGUuZW50aXRpZXM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZW50aXRpZXN9LHR9KSgpO0Z5dC5FbnRpdHlTdG9yZT1VeXQ7dmFyIGp5dD17fTsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi9PYmplY3QuZGVmaW5lUHJvcGVydHkoanl0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgR3l0PVFfdCxXeXQ9KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpeyJmdW5jdGlvbiI9PXR5cGVvZiB3aW5kb3cuTWFwP3RoaXMuX2VzNk1hcD1uZXcgd2luZG93Lk1hcDp0aGlzLl9rZXlWYWx1ZVBhaXJzPVtdfXJldHVybiB0LnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24odCxlKXtpZihHeXQuaXNOYU4odCkpdGhyb3cgbmV3IEVycm9yKCJOYU4gbWF5IG5vdCBiZSB1c2VkIGFzIGEga2V5IHRvIHRoZSBNYXAiKTtpZihudWxsIT10aGlzLl9lczZNYXApcmV0dXJuIHRoaXMuX2VzNk1hcC5zZXQodCxlKSx0aGlzO2Zvcih2YXIgbj0wO248dGhpcy5fa2V5VmFsdWVQYWlycy5sZW5ndGg7bisrKWlmKHRoaXMuX2tleVZhbHVlUGFpcnNbbl0ua2V5PT09dClyZXR1cm4gdGhpcy5fa2V5VmFsdWVQYWlyc1tuXS52YWx1ZT1lLHRoaXM7cmV0dXJuIHRoaXMuX2tleVZhbHVlUGFpcnMucHVzaCh7a2V5OnQsdmFsdWU6ZX0pLHRoaXN9LHQucHJvdG90eXBlLmdldD1mdW5jdGlvbih0KXtpZihudWxsIT10aGlzLl9lczZNYXApcmV0dXJuIHRoaXMuX2VzNk1hcC5nZXQodCk7Zm9yKHZhciBlPTA7ZTx0aGlzLl9rZXlWYWx1ZVBhaXJzLmxlbmd0aDtlKyspaWYodGhpcy5fa2V5VmFsdWVQYWlyc1tlXS5rZXk9PT10KXJldHVybiB0aGlzLl9rZXlWYWx1ZVBhaXJzW2VdLnZhbHVlfSx0LnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24odCl7aWYobnVsbCE9dGhpcy5fZXM2TWFwKXJldHVybiB0aGlzLl9lczZNYXAuaGFzKHQpO2Zvcih2YXIgZT0wO2U8dGhpcy5fa2V5VmFsdWVQYWlycy5sZW5ndGg7ZSsrKWlmKHRoaXMuX2tleVZhbHVlUGFpcnNbZV0ua2V5PT09dClyZXR1cm4hMDtyZXR1cm4hMX0sdC5wcm90b3R5cGUuZm9yRWFjaD1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXM7aWYobnVsbD09dGhpcy5fZXM2TWFwKXRoaXMuX2tleVZhbHVlUGFpcnMuZm9yRWFjaCgoZnVuY3Rpb24oaSl7dC5jYWxsKGUsaS52YWx1ZSxpLmtleSxuKX0pKTtlbHNle3RoaXMuX2VzNk1hcC5mb3JFYWNoKChmdW5jdGlvbihpLHIpe3JldHVybiB0LmNhbGwoZSxpLHIsbil9KSxlKX19LHQucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbih0KXtpZihudWxsIT10aGlzLl9lczZNYXApcmV0dXJuIHRoaXMuX2VzNk1hcC5kZWxldGUodCk7Zm9yKHZhciBlPTA7ZTx0aGlzLl9rZXlWYWx1ZVBhaXJzLmxlbmd0aDtlKyspaWYodGhpcy5fa2V5VmFsdWVQYWlyc1tlXS5rZXk9PT10KXJldHVybiB0aGlzLl9rZXlWYWx1ZVBhaXJzLnNwbGljZShlLDEpLCEwO3JldHVybiExfSx0fSkoKTtqeXQuTWFwPVd5dDt2YXIgcXl0PXt9OwovKioKICAgICAqIENvcHlyaWdodCAyMDE3LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqL09iamVjdC5kZWZpbmVQcm9wZXJ0eShxeXQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLHF5dC5hc3NpZ249ZnVuY3Rpb24gWXl0KCl7Zm9yKHZhciB0PVtdLGU9MDtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXRbZV09YXJndW1lbnRzW2VdO2Zvcih2YXIgbj17fSxpPTAscj10O2k8ci5sZW5ndGg7aSsrKWZvcih2YXIgbz1yW2ldLGE9T2JqZWN0LmtleXMobykscz0wLGw9YTtzPGwubGVuZ3RoO3MrKyl7dmFyIGM9bFtzXTtuW2NdPW9bY119cmV0dXJuIG59O3ZhciBYeXQ9e307Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTctcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovT2JqZWN0LmRlZmluZVByb3BlcnR5KFh5dCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyICR5dD1EX3QsS3l0PSJfX1Bsb3R0YWJsZV9DbGllbnRUcmFuc2xhdG9yIjtYeXQuZ2V0VHJhbnNsYXRvcj1mdW5jdGlvbiBaeXQodCl7dmFyIGU9dC5yb290KCkucm9vdEVsZW1lbnQoKS5ub2RlKCksbj1lW0t5dF07cmV0dXJuIG51bGw9PW4mJihuPW5ldyBKeXQoZSksZVtLeXRdPW4pLG59O3ZhciBKeXQ9KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt0aGlzLl9yb290RWxlbWVudD10fXJldHVybiB0LnByb3RvdHlwZS5jb21wdXRlUG9zaXRpb249ZnVuY3Rpb24odCxlKXt2YXIgbj17eDp0LHk6ZX0saT0keXQuTWF0aC5nZXRDdW11bGF0aXZlVHJhbnNmb3JtKHRoaXMuX3Jvb3RFbGVtZW50KTtyZXR1cm4gbnVsbD09aT9uOiR5dC5NYXRoLmFwcGx5VHJhbnNmb3JtKGksbil9LHQuaXNFdmVudEluc2lkZT1mdW5jdGlvbih0LGUpe3JldHVybiAkeXQuRE9NLmNvbnRhaW5zKHQucm9vdCgpLnJvb3RFbGVtZW50KCkubm9kZSgpLGUudGFyZ2V0KX0sdH0pKCk7WHl0LlRyYW5zbGF0b3I9Snl0LChmdW5jdGlvbih0KXsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi8KT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBlPUJPO3QuQXJyYXk9Ql90LHQuQ29sb3I9V190LHQuRE9NPUpfdCx0Lk1hdGg9UV90LHQuUlRyZWU9eHl0LHQuU3RhY2tpbmc9RXl0LHQuV2luZG93PVR5dCxlLl9fZXhwb3J0U3RhcihJeXQsdCksZS5fX2V4cG9ydFN0YXIoT3l0LHQpLGUuX19leHBvcnRTdGFyKF9ndCx0KSxlLl9fZXhwb3J0U3RhcihGeXQsdCksZS5fX2V4cG9ydFN0YXIoanl0LHQpLGUuX19leHBvcnRTdGFyKHF5dCx0KSxlLl9fZXhwb3J0U3Rhcih6eXQsdCksZS5fX2V4cG9ydFN0YXIoWHl0LHQpfSkoRF90KTt2YXIgUXl0PXt9OwovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqL09iamVjdC5kZWZpbmVQcm9wZXJ0eShReXQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciB0dnQ9RF90LGV2dD16X3QsbnZ0PShmdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHQucHJvdG90eXBlLnJlbmRlcj1mdW5jdGlvbigpe2V2dC5mbHVzaCgpfSx0fSkoKTtReXQuSW1tZWRpYXRlPW52dDt2YXIgaXZ0PShmdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHQucHJvdG90eXBlLnJlbmRlcj1mdW5jdGlvbigpe3R2dC5ET00ucmVxdWVzdEFuaW1hdGlvbkZyYW1lUG9seWZpbGwoZXZ0LmZsdXNoKX0sdH0pKCk7UXl0LkFuaW1hdGlvbkZyYW1lPWl2dDt2YXIgcnZ0PShmdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt0aGlzLl90aW1lb3V0TXNlYz10dnQuRE9NLlNDUkVFTl9SRUZSRVNIX1JBVEVfTUlMTElTRUNPTkRTfXJldHVybiB0LnByb3RvdHlwZS5yZW5kZXI9ZnVuY3Rpb24oKXtzZXRUaW1lb3V0KGV2dC5mbHVzaCx0aGlzLl90aW1lb3V0TXNlYyl9LHR9KSgpO1F5dC5UaW1lb3V0PXJ2dCwoZnVuY3Rpb24odCl7Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovCk9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgZT1EX3Qsbj1iZ3QsaT1ReXQscj1uZXcgZS5TZXQsbz1uZXcgZS5TZXQsYT0hMSxzPSExO3QuUG9saWN5PW4ubWFrZUVudW0oWyJpbW1lZGlhdGUiLCJhbmltYXRpb25GcmFtZSIsInRpbWVvdXQiXSk7dmFyIGw9bmV3IGkuQW5pbWF0aW9uRnJhbWU7ZnVuY3Rpb24gYyh0KXtvLmFkZCh0KSxyLmFkZCh0KSx1KCl9ZnVuY3Rpb24gdSgpe2F8fChhPSEwLGwucmVuZGVyKCkpfXQucmVuZGVyUG9saWN5PWZ1bmN0aW9uIGgobil7aWYobnVsbD09bilyZXR1cm4gbDtzd2l0Y2gobil7Y2FzZSB0LlBvbGljeS5pbW1lZGlhdGU6bD1uZXcgaS5JbW1lZGlhdGU7YnJlYWs7Y2FzZSB0LlBvbGljeS5hbmltYXRpb25GcmFtZTpsPW5ldyBpLkFuaW1hdGlvbkZyYW1lO2JyZWFrO2Nhc2UgdC5Qb2xpY3kudGltZW91dDpsPW5ldyBpLlRpbWVvdXQ7YnJlYWs7ZGVmYXVsdDplLldpbmRvdy53YXJuKCJVbnJlY29nbml6ZWQgcmVuZGVyUG9saWN5OiAiK24pfX0sdC5yZWdpc3RlclRvUmVuZGVyPWZ1bmN0aW9uIGQodCl7cyYmZS5XaW5kb3cud2FybigiUmVnaXN0ZXJlZCB0byByZW5kZXIgd2hpbGUgb3RoZXIgY29tcG9uZW50cyBhcmUgZmx1c2hpbmc6IHJlcXVlc3QgbWF5IGJlIGlnbm9yZWQiKSxyLmFkZCh0KSx1KCl9LHQucmVnaXN0ZXJUb0NvbXB1dGVMYXlvdXRBbmRSZW5kZXI9Yyx0LnJlZ2lzdGVyVG9Db21wdXRlTGF5b3V0PWZ1bmN0aW9uIHAodCl7Yyh0KX0sdC5mbHVzaD1mdW5jdGlvbiBmKCl7aWYoYSl7by5mb3JFYWNoKChmdW5jdGlvbih0KXtyZXR1cm4gdC5jb21wdXRlTGF5b3V0KCl9KSksci5mb3JFYWNoKChmdW5jdGlvbih0KXtyZXR1cm4gdC5yZW5kZXIoKX0pKSxzPSEwO3ZhciB0PW5ldyBlLlNldDtyLmZvckVhY2goKGZ1bmN0aW9uKGUpe3RyeXtlLnJlbmRlckltbWVkaWF0ZWx5KCl9Y2F0Y2gobil7d2luZG93LnNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7dGhyb3cgbn0pLDApLHQuYWRkKGUpfX0pKSxvPW5ldyBlLlNldCxyPXQsYT0hMSxzPSExfX19KSh6X3QpLAovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqLwpPYmplY3QuZGVmaW5lUHJvcGVydHkoT190LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgb3Z0PXdwdCxhdnQ9el90LHN2dD1EX3QsbHZ0PUNlLmV4cG9ydHMsY3Z0PV9ndCx1dnQ9Ymd0O09fdC5YQWxpZ25tZW50PXV2dC5tYWtlRW51bShbImxlZnQiLCJjZW50ZXIiLCJyaWdodCJdKSxPX3QuWUFsaWdubWVudD11dnQubWFrZUVudW0oWyJ0b3AiLCJjZW50ZXIiLCJib3R0b20iXSk7dmFyIGh2dD0oZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7dGhpcy5fb3ZlcmZsb3dIaWRkZW49ITEsdGhpcy5fb3JpZ2luPXt4OjAseTowfSx0aGlzLl94QWxpZ25tZW50PSJsZWZ0Iix0aGlzLl95QWxpZ25tZW50PSJ0b3AiLHRoaXMuX2lzU2V0dXA9ITEsdGhpcy5faXNBbmNob3JlZD0hMSx0aGlzLl9jc3NDbGFzc2VzPW5ldyBzdnQuU2V0LHRoaXMuX2Rlc3Ryb3llZD0hMSx0aGlzLl9vbkFuY2hvckNhbGxiYWNrcz1uZXcgc3Z0LkNhbGxiYWNrU2V0LHRoaXMuX29uRGV0YWNoQ2FsbGJhY2tzPW5ldyBzdnQuQ2FsbGJhY2tTZXQsdGhpcy5fY3NzQ2xhc3Nlcy5hZGQoImNvbXBvbmVudCIpfXJldHVybiB0LnByb3RvdHlwZS5hbmNob3I9ZnVuY3Rpb24odCl7aWYodD1jdnQuY29lcmNlRXh0ZXJuYWxEMyh0KSx0aGlzLl9kZXN0cm95ZWQpdGhyb3cgbmV3IEVycm9yKCJDYW4ndCByZXVzZSBkZXN0cm95KCktZWQgQ29tcG9uZW50cyEiKTtyZXR1cm4gdGhpcy5pc1Jvb3QoKSYmKHRoaXMuX3Jvb3RFbGVtZW50PXQsdGhpcy5fcm9vdEVsZW1lbnQuY2xhc3NlZCgicGxvdHRhYmxlIiwhMCkpLG51bGwhPXRoaXMuX2VsZW1lbnQ/dC5ub2RlKCkuYXBwZW5kQ2hpbGQodGhpcy5fZWxlbWVudC5ub2RlKCkpOih0aGlzLl9lbGVtZW50PXQuYXBwZW5kKCJkaXYiKSx0aGlzLl9zZXR1cCgpKSx0aGlzLl9pc0FuY2hvcmVkPSEwLHRoaXMuX29uQW5jaG9yQ2FsbGJhY2tzLmNhbGxDYWxsYmFja3ModGhpcyksdGhpc30sdC5wcm90b3R5cGUub25BbmNob3I9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2lzQW5jaG9yZWQmJnQodGhpcyksdGhpcy5fb25BbmNob3JDYWxsYmFja3MuYWRkKHQpLHRoaXN9LHQucHJvdG90eXBlLm9mZkFuY2hvcj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fb25BbmNob3JDYWxsYmFja3MuZGVsZXRlKHQpLHRoaXN9LHQucHJvdG90eXBlLl9zZXR1cD1mdW5jdGlvbigpe3ZhciB0PXRoaXM7dGhpcy5faXNTZXR1cHx8KHRoaXMuX2Nzc0NsYXNzZXMuZm9yRWFjaCgoZnVuY3Rpb24oZSl7dC5fZWxlbWVudC5jbGFzc2VkKGUsITApfSkpLHRoaXMuX2Nzc0NsYXNzZXM9bmV3IHN2dC5TZXQsdGhpcy5fYmFja2dyb3VuZENvbnRhaW5lcj10aGlzLl9lbGVtZW50LmFwcGVuZCgic3ZnIikuY2xhc3NlZCgiYmFja2dyb3VuZC1jb250YWluZXIiLCEwKSx0aGlzLl9jb250ZW50PXRoaXMuX2VsZW1lbnQuYXBwZW5kKCJzdmciKS5jbGFzc2VkKCJjb250ZW50IiwhMCksdGhpcy5fZm9yZWdyb3VuZENvbnRhaW5lcj10aGlzLl9lbGVtZW50LmFwcGVuZCgic3ZnIikuY2xhc3NlZCgiZm9yZWdyb3VuZC1jb250YWluZXIiLCEwKSx0aGlzLl9jb250ZW50LmNsYXNzZWQodGhpcy5fb3ZlcmZsb3dIaWRkZW4/ImNvbXBvbmVudC1vdmVyZmxvdy1oaWRkZW4iOiJjb21wb25lbnQtb3ZlcmZsb3ctdmlzaWJsZSIsITApLHRoaXMuX2lzU2V0dXA9ITApfSx0LnByb3RvdHlwZS5yZXF1ZXN0ZWRTcGFjZT1mdW5jdGlvbih0LGUpe3JldHVybnttaW5XaWR0aDowLG1pbkhlaWdodDowfX0sdC5wcm90b3R5cGUuY29tcHV0ZUxheW91dD1mdW5jdGlvbihlLG4saSl7aWYobnVsbD09ZXx8bnVsbD09bnx8bnVsbD09aSl7aWYobnVsbD09dGhpcy5fZWxlbWVudCl0aHJvdyBuZXcgRXJyb3IoImFuY2hvcigpIG11c3QgYmUgY2FsbGVkIGJlZm9yZSBjb21wdXRlTGF5b3V0KCkiKTtpZihudWxsPT10aGlzLl9yb290RWxlbWVudCl0aHJvdyBuZXcgRXJyb3IoIm51bGwgYXJndW1lbnRzIGNhbm5vdCBiZSBwYXNzZWQgdG8gY29tcHV0ZUxheW91dCgpIG9uIGEgbm9uLXJvb3QsIHVuYW5jaG9yZWQgbm9kZSIpO2U9e3g6MCx5OjB9O3ZhciByPXRoaXMuX3Jvb3RFbGVtZW50Lm5vZGUoKTtuPXN2dC5ET00uZWxlbWVudFdpZHRoKHIpLGk9c3Z0LkRPTS5lbGVtZW50SGVpZ2h0KHIpfXZhciBvPXRoaXMuX3NpemVGcm9tT2ZmZXIobixpKSxhPW8uaGVpZ2h0LHM9by53aWR0aDtyZXR1cm4gdGhpcy5zZXRCb3VuZHMocyxhLGUueCsobi1zKSp0Ll94QWxpZ25Ub1Byb3BvcnRpb25bdGhpcy5feEFsaWdubWVudF0sZS55KyhpLWEpKnQuX3lBbGlnblRvUHJvcG9ydGlvblt0aGlzLl95QWxpZ25tZW50XSksdGhpc30sdC5wcm90b3R5cGUuc2V0Qm91bmRzPWZ1bmN0aW9uKHQsZSxuLGkpe3JldHVybiB2b2lkIDA9PT1uJiYobj0wKSx2b2lkIDA9PT1pJiYoaT0wKSx0aGlzLl93aWR0aD10LHRoaXMuX2hlaWdodD1lLHRoaXMuX29yaWdpbj17eDpuLHk6aX0sbnVsbCE9dGhpcy5fZWxlbWVudCYmdGhpcy5fZWxlbWVudC5zdHlsZXMoe2xlZnQ6bisicHgiLGhlaWdodDplKyJweCIsdG9wOmkrInB4Iix3aWR0aDp0KyJweCJ9KSxudWxsIT10aGlzLl9yZXNpemVIYW5kbGVyJiZ0aGlzLl9yZXNpemVIYW5kbGVyKHt3aWR0aDp0LGhlaWdodDplfSksdGhpc30sdC5wcm90b3R5cGUuX3NpemVGcm9tT2ZmZXI9ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzLnJlcXVlc3RlZFNwYWNlKHQsZSk7cmV0dXJue3dpZHRoOnRoaXMuZml4ZWRXaWR0aCgpP01hdGgubWluKHQsbi5taW5XaWR0aCk6dCxoZWlnaHQ6dGhpcy5maXhlZEhlaWdodCgpP01hdGgubWluKGUsbi5taW5IZWlnaHQpOmV9fSx0LnByb3RvdHlwZS5yZW5kZXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5faXNBbmNob3JlZCYmdGhpcy5faXNTZXR1cCYmdGhpcy53aWR0aCgpPj0wJiZ0aGlzLmhlaWdodCgpPj0wJiZhdnQucmVnaXN0ZXJUb1JlbmRlcih0aGlzKSx0aGlzfSx0LnByb3RvdHlwZS5yZW5kZXJMb3dQcmlvcml0eT1mdW5jdGlvbigpe3JldHVybiB0aGlzLnJlbmRlcigpfSx0LnByb3RvdHlwZS5fc2NoZWR1bGVDb21wdXRlTGF5b3V0PWZ1bmN0aW9uKCl7dGhpcy5faXNBbmNob3JlZCYmdGhpcy5faXNTZXR1cCYmYXZ0LnJlZ2lzdGVyVG9Db21wdXRlTGF5b3V0QW5kUmVuZGVyKHRoaXMpfSx0LnByb3RvdHlwZS5vblJlc2l6ZT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fcmVzaXplSGFuZGxlcj10LHRoaXN9LHQucHJvdG90eXBlLnJlbmRlckltbWVkaWF0ZWx5PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LHQucHJvdG90eXBlLnJlZHJhdz1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9pc0FuY2hvcmVkJiZ0aGlzLl9pc1NldHVwJiYodGhpcy5pc1Jvb3QoKT90aGlzLl9zY2hlZHVsZUNvbXB1dGVMYXlvdXQoKTp0aGlzLnBhcmVudCgpLnJlZHJhdygpKSx0aGlzfSx0LnByb3RvdHlwZS5pbnZhbGlkYXRlQ2FjaGU9ZnVuY3Rpb24oKXt9LHQucHJvdG90eXBlLnJlbmRlclRvPWZ1bmN0aW9uKHQpe2lmKHRoaXMuZGV0YWNoKCksbnVsbCE9dCl7dmFyIGU9dm9pZCAwO2lmKCEoZT0ic3RyaW5nIj09dHlwZW9mIHR8fGx2dC5pc0VsZW1lbnQodCk/b3Z0LnNlbGVjdCh0KTpjdnQuY29lcmNlRXh0ZXJuYWxEMyh0KSkubm9kZSgpfHxudWxsPT1lLm5vZGUoKS5ub2RlTmFtZSl0aHJvdyBuZXcgRXJyb3IoIlBsb3R0YWJsZSByZXF1aXJlcyBhIHZhbGlkIEVsZW1lbnQgdG8gcmVuZGVyVG8iKTtpZigic3ZnIj09PWUubm9kZSgpLm5vZGVOYW1lKXRocm93IG5ldyBFcnJvcigiUGxvdHRhYmxlIDMueCBhbmQgbGF0ZXIgY2FuIG9ubHkgcmVuZGVyVG8gYW4gSFRNTCBjb21wb25lbnQ7IHBhc3MgYSBkaXYgaW5zdGVhZCEiKTt0aGlzLmFuY2hvcihlKX1pZihudWxsPT10aGlzLl9lbGVtZW50KXRocm93IG5ldyBFcnJvcigiSWYgYSBDb21wb25lbnQgaGFzIG5ldmVyIGJlZW4gcmVuZGVyZWQgYmVmb3JlLCB0aGVuIHJlbmRlclRvIG11c3QgYmUgZ2l2ZW4gYSBub2RlIHRvIHJlbmRlciB0bywgb3IgYSBkMy5TZWxlY3Rpb24sIG9yIGEgc2VsZWN0b3Igc3RyaW5nIik7cmV0dXJuIGF2dC5yZWdpc3RlclRvQ29tcHV0ZUxheW91dEFuZFJlbmRlcih0aGlzKSxhdnQuZmx1c2goKSx0aGlzfSx0LnByb3RvdHlwZS54QWxpZ25tZW50PWZ1bmN0aW9uKGUpe2lmKG51bGw9PWUpcmV0dXJuIHRoaXMuX3hBbGlnbm1lbnQ7aWYoZT1lLnRvTG93ZXJDYXNlKCksbnVsbD09dC5feEFsaWduVG9Qcm9wb3J0aW9uW2VdKXRocm93IG5ldyBFcnJvcigiVW5zdXBwb3J0ZWQgYWxpZ25tZW50OiAiK2UpO3JldHVybiB0aGlzLl94QWxpZ25tZW50PWUsdGhpcy5yZWRyYXcoKSx0aGlzfSx0LnByb3RvdHlwZS55QWxpZ25tZW50PWZ1bmN0aW9uKGUpe2lmKG51bGw9PWUpcmV0dXJuIHRoaXMuX3lBbGlnbm1lbnQ7aWYoZT1lLnRvTG93ZXJDYXNlKCksbnVsbD09dC5feUFsaWduVG9Qcm9wb3J0aW9uW2VdKXRocm93IG5ldyBFcnJvcigiVW5zdXBwb3J0ZWQgYWxpZ25tZW50OiAiK2UpO3JldHVybiB0aGlzLl95QWxpZ25tZW50PWUsdGhpcy5yZWRyYXcoKSx0aGlzfSx0LnByb3RvdHlwZS5oYXNDbGFzcz1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbCE9dCYmKG51bGw9PXRoaXMuX2VsZW1lbnQ/dGhpcy5fY3NzQ2xhc3Nlcy5oYXModCk6dGhpcy5fZWxlbWVudC5jbGFzc2VkKHQpKX0sdC5wcm90b3R5cGUuYWRkQ2xhc3M9ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXR8fChudWxsPT10aGlzLl9lbGVtZW50P3RoaXMuX2Nzc0NsYXNzZXMuYWRkKHQpOnRoaXMuX2VsZW1lbnQuY2xhc3NlZCh0LCEwKSksdGhpc30sdC5wcm90b3R5cGUucmVtb3ZlQ2xhc3M9ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXR8fChudWxsPT10aGlzLl9lbGVtZW50P3RoaXMuX2Nzc0NsYXNzZXMuZGVsZXRlKHQpOnRoaXMuX2VsZW1lbnQuY2xhc3NlZCh0LCExKSksdGhpc30sdC5wcm90b3R5cGUuZml4ZWRXaWR0aD1mdW5jdGlvbigpe3JldHVybiExfSx0LnByb3RvdHlwZS5maXhlZEhlaWdodD1mdW5jdGlvbigpe3JldHVybiExfSx0LnByb3RvdHlwZS5kZXRhY2g9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wYXJlbnQobnVsbCksdGhpcy5faXNBbmNob3JlZCYmdGhpcy5fZWxlbWVudC5yZW1vdmUoKSx0aGlzLl9pc0FuY2hvcmVkPSExLHRoaXMuX29uRGV0YWNoQ2FsbGJhY2tzLmNhbGxDYWxsYmFja3ModGhpcyksdGhpc30sdC5wcm90b3R5cGUub25EZXRhY2g9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX29uRGV0YWNoQ2FsbGJhY2tzLmFkZCh0KSx0aGlzfSx0LnByb3RvdHlwZS5vZmZEZXRhY2g9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX29uRGV0YWNoQ2FsbGJhY2tzLmRlbGV0ZSh0KSx0aGlzfSx0LnByb3RvdHlwZS5wYXJlbnQ9ZnVuY3Rpb24odCl7aWYodm9pZCAwPT09dClyZXR1cm4gdGhpcy5fcGFyZW50O2lmKG51bGwhPT10JiYhdC5oYXModGhpcykpdGhyb3cgbmV3IEVycm9yKCJQYXNzZWQgaW52YWxpZCBwYXJlbnQiKTtyZXR1cm4gdGhpcy5fcGFyZW50PXQsdGhpc30sdC5wcm90b3R5cGUuYm91bmRzPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5vcmlnaW4oKTtyZXR1cm57dG9wTGVmdDp0LGJvdHRvbVJpZ2h0Ont4OnQueCt0aGlzLndpZHRoKCkseTp0LnkrdGhpcy5oZWlnaHQoKX19fSx0LnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKCl7dGhpcy5fZGVzdHJveWVkPSEwLHRoaXMuZGV0YWNoKCl9LHQucHJvdG90eXBlLndpZHRoPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3dpZHRofSx0LnByb3RvdHlwZS5oZWlnaHQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5faGVpZ2h0fSx0LnByb3RvdHlwZS5vcmlnaW49ZnVuY3Rpb24oKXtyZXR1cm57eDp0aGlzLl9vcmlnaW4ueCx5OnRoaXMuX29yaWdpbi55fX0sdC5wcm90b3R5cGUub3JpZ2luVG9Sb290PWZ1bmN0aW9uKCl7Zm9yKHZhciB0PXRoaXMub3JpZ2luKCksZT10aGlzLnBhcmVudCgpO251bGwhPWU7KXt2YXIgbj1lLm9yaWdpbigpO3QueCs9bi54LHQueSs9bi55LGU9ZS5wYXJlbnQoKX1yZXR1cm4gdH0sdC5wcm90b3R5cGUucm9vdD1mdW5jdGlvbigpe2Zvcih2YXIgdD10aGlzOyF0LmlzUm9vdCgpOyl0PXQucGFyZW50KCk7cmV0dXJuIHR9LHQucHJvdG90eXBlLmlzUm9vdD1mdW5jdGlvbigpe3JldHVybiBudWxsPT10aGlzLnBhcmVudCgpfSx0LnByb3RvdHlwZS5mb3JlZ3JvdW5kPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2ZvcmVncm91bmRDb250YWluZXJ9LHQucHJvdG90eXBlLmNvbnRlbnQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY29udGVudH0sdC5wcm90b3R5cGUuZWxlbWVudD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9lbGVtZW50fSx0LnByb3RvdHlwZS5yb290RWxlbWVudD1mdW5jdGlvbigpe3JldHVybiB0aGlzLnJvb3QoKS5fcm9vdEVsZW1lbnR9LHQucHJvdG90eXBlLmJhY2tncm91bmQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYmFja2dyb3VuZENvbnRhaW5lcn0sdC5feEFsaWduVG9Qcm9wb3J0aW9uPXtsZWZ0OjAsY2VudGVyOi41LHJpZ2h0OjF9LHQuX3lBbGlnblRvUHJvcG9ydGlvbj17dG9wOjAsY2VudGVyOi41LGJvdHRvbToxfSx0fSkoKTtPX3QuQ29tcG9uZW50PWh2dDt2YXIgZHZ0PXt9LHB2dD17fTsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi8KT2JqZWN0LmRlZmluZVByb3BlcnR5KHB2dCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIGZ2dD13cHQ7ZnVuY3Rpb24gbXZ0KHQpe3JldHVybiB2b2lkIDA9PT10JiYodD0zKSxndnQodCksZnVuY3Rpb24oZSl7cmV0dXJuIGUudG9GaXhlZCh0KX19ZnVuY3Rpb24gZ3Z0KHQpe2lmKHQ8MHx8dD4yMCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiRm9ybWF0dGVyIHByZWNpc2lvbiBtdXN0IGJlIGJldHdlZW4gMCBhbmQgMjAiKTtpZih0IT09TWF0aC5mbG9vcih0KSl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiRm9ybWF0dGVyIHByZWNpc2lvbiBtdXN0IGJlIGFuIGludGVnZXIiKX0KLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi9wdnQuY3VycmVuY3k9ZnVuY3Rpb24gX3Z0KHQsZSxuKXt2b2lkIDA9PT10JiYodD0yKSx2b2lkIDA9PT1lJiYoZT0iJCIpLHZvaWQgMD09PW4mJihuPSEwKTt2YXIgaT1tdnQodCk7cmV0dXJuIGZ1bmN0aW9uKHQpe3ZhciByPWkoTWF0aC5hYnModCkpO3JldHVybiIiIT09ciYmKG4/cj1lK3I6cis9ZSx0PDAmJihyPSItIityKSkscn19LHB2dC5maXhlZD1tdnQscHZ0LmdlbmVyYWw9ZnVuY3Rpb24geXZ0KHQpe3JldHVybiB2b2lkIDA9PT10JiYodD0zKSxndnQodCksZnVuY3Rpb24oZSl7aWYoIm51bWJlciI9PXR5cGVvZiBlKXt2YXIgbj1NYXRoLnBvdygxMCx0KTtyZXR1cm4gU3RyaW5nKE1hdGgucm91bmQoZSpuKS9uKX1yZXR1cm4gU3RyaW5nKGUpfX0scHZ0LmlkZW50aXR5PWZ1bmN0aW9uIHZ2dCgpe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gU3RyaW5nKHQpfX0scHZ0LnBlcmNlbnRhZ2U9ZnVuY3Rpb24gYnZ0KHQpe3ZvaWQgMD09PXQmJih0PTApO3ZhciBlPW12dCh0KTtyZXR1cm4gZnVuY3Rpb24odCl7dmFyIG49MTAwKnQsaT10LnRvU3RyaW5nKCkscj1NYXRoLnBvdygxMCxpLmxlbmd0aC0oaS5pbmRleE9mKCIuIikrMSkpO3JldHVybiBuPXBhcnNlSW50KChuKnIpLnRvU3RyaW5nKCksMTApL3IsZShuKSsiJSJ9fSxwdnQuc2lTdWZmaXg9ZnVuY3Rpb24geHZ0KHQpe3JldHVybiB2b2lkIDA9PT10JiYodD0zKSxndnQodCksZnVuY3Rpb24oZSl7cmV0dXJuIGZ2dC5mb3JtYXQoIi4iK3QrInMiKShlKX19LHB2dC5zaG9ydFNjYWxlPWZ1bmN0aW9uIHd2dCh0KXt2b2lkIDA9PT10JiYodD0zKSxndnQodCk7dmFyIGU9IktNQlRRIixuPWZ2dC5mb3JtYXQoIi4iK3QrImUiKSxpPWZ2dC5mb3JtYXQoIi4iK3QrImYiKSxyPU1hdGgucG93KDEwLDMqKGUubGVuZ3RoKzEpKSxvPU1hdGgucG93KDEwLC10KTtyZXR1cm4gZnVuY3Rpb24odCl7dmFyIGE9TWF0aC5hYnModCk7aWYoKGE8b3x8YT49cikmJjAhPT1hKXJldHVybiBuKHQpO2Zvcih2YXIgcz0tMTthPj1NYXRoLnBvdygxZTMscysyKSYmczxlLmxlbmd0aC0xOylzKys7dmFyIGw9IiI7cmV0dXJuIGw9LTE9PT1zP2kodCk6aSh0L01hdGgucG93KDFlMyxzKzEpKStlW3NdLCh0PjAmJiIxMDAwIj09PWwuc3Vic3RyKDAsNCl8fHQ8MCYmIi0xMDAwIj09PWwuc3Vic3RyKDAsNSkpJiYoczxlLmxlbmd0aC0xPyhzKyssbD1pKHQvTWF0aC5wb3coMWUzLHMrMSkpK2Vbc10pOmw9bih0KSksbH19LHB2dC5tdWx0aVRpbWU9ZnVuY3Rpb24gU3Z0KCl7dmFyIHQ9W3tzcGVjaWZpZXI6Ii4lTCIscHJlZGljYXRlOmZ1bmN0aW9uKHQpe3JldHVybiAwIT09dC5nZXRNaWxsaXNlY29uZHMoKX19LHtzcGVjaWZpZXI6IjolUyIscHJlZGljYXRlOmZ1bmN0aW9uKHQpe3JldHVybiAwIT09dC5nZXRTZWNvbmRzKCl9fSx7c3BlY2lmaWVyOiIlSTolTSIscHJlZGljYXRlOmZ1bmN0aW9uKHQpe3JldHVybiAwIT09dC5nZXRNaW51dGVzKCl9fSx7c3BlY2lmaWVyOiIlSSAlcCIscHJlZGljYXRlOmZ1bmN0aW9uKHQpe3JldHVybiAwIT09dC5nZXRIb3VycygpfX0se3NwZWNpZmllcjoiJWEgJWQiLHByZWRpY2F0ZTpmdW5jdGlvbih0KXtyZXR1cm4gMCE9PXQuZ2V0RGF5KCkmJjEhPT10LmdldERhdGUoKX19LHtzcGVjaWZpZXI6IiViICVkIixwcmVkaWNhdGU6ZnVuY3Rpb24odCl7cmV0dXJuIDEhPT10LmdldERhdGUoKX19LHtzcGVjaWZpZXI6IiViIixwcmVkaWNhdGU6ZnVuY3Rpb24odCl7cmV0dXJuIDAhPT10LmdldE1vbnRoKCl9fV07cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciBuPXQuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gdC5wcmVkaWNhdGUoZSl9KSk7cmV0dXJuIGZ2dC50aW1lRm9ybWF0KG4ubGVuZ3RoPjA/blswXS5zcGVjaWZpZXI6IiVZIikoZSl9fSxwdnQudGltZT1mdW5jdGlvbiBNdnQodCxlKXtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9ZmFsc2UpLGU/ZnZ0LnV0Y0Zvcm1hdCh0KTpmdnQudGltZUZvcm1hdCh0KX0sT2JqZWN0LmRlZmluZVByb3BlcnR5KGR2dCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIEV2dD1CTyxUdnQ9d3B0LEN2dD1MZ3QsQXZ0PU9fdCxrdnQ9cHZ0LEx2dD1EX3Q7ZHZ0LkF4aXNPcmllbnRhdGlvbj1iZ3QubWFrZUVudW0oWyJib3R0b20iLCJsZWZ0IiwicmlnaHQiLCJ0b3AiXSk7dmFyIFB2dD0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlLG4pe3ZhciBpPXQuY2FsbCh0aGlzKXx8dGhpcztpZihpLl9lbmRUaWNrTGVuZ3RoPTUsaS5faW5uZXJUaWNrTGVuZ3RoPTUsaS5fdGlja0xhYmVsUGFkZGluZz0xMCxpLl9tYXJnaW49MTUsaS5fc2hvd0VuZFRpY2tMYWJlbHM9ITEsaS5fYW5ub3RhdGlvbnNFbmFibGVkPSExLGkuX2Fubm90YXRpb25UaWVyQ291bnQ9MSxudWxsPT1lfHxudWxsPT1uKXRocm93IG5ldyBFcnJvcigiQXhpcyByZXF1aXJlcyBhIHNjYWxlIGFuZCBvcmllbnRhdGlvbiIpO3JldHVybiBpLl9zY2FsZT1lLGkub3JpZW50YXRpb24obiksaS5fc2V0RGVmYXVsdEFsaWdubWVudCgpLGkuYWRkQ2xhc3MoImF4aXMiKSxpLmlzSG9yaXpvbnRhbCgpP2kuYWRkQ2xhc3MoIngtYXhpcyIpOmkuYWRkQ2xhc3MoInktYXhpcyIpLGkuZm9ybWF0dGVyKGt2dC5pZGVudGl0eSgpKSxpLl9yZXNjYWxlQ2FsbGJhY2s9ZnVuY3Rpb24odCl7cmV0dXJuIGkuX3Jlc2NhbGUoKX0saS5fc2NhbGUub25VcGRhdGUoaS5fcmVzY2FsZUNhbGxiYWNrKSxpLl9hbm5vdGF0ZWRUaWNrcz1bXSxpLl9hbm5vdGF0aW9uRm9ybWF0dGVyPWt2dC5pZGVudGl0eSgpLGl9cmV0dXJuIEV2dC5fX2V4dGVuZHMoZSx0KSxlLnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKCl7dC5wcm90b3R5cGUuZGVzdHJveS5jYWxsKHRoaXMpLHRoaXMuX3NjYWxlLm9mZlVwZGF0ZSh0aGlzLl9yZXNjYWxlQ2FsbGJhY2spfSxlLnByb3RvdHlwZS50aWNrTGFiZWxEYXRhT25FbGVtZW50PWZ1bmN0aW9uKHQpe2lmKG51bGwhPXQpe2Zvcih2YXIgbjtudWxsIT10JiZ0LmNsYXNzTGlzdCYmdm9pZCAwPT09bjspdC5jbGFzc0xpc3QuY29udGFpbnMoZS5USUNLX0xBQkVMX0NMQVNTKT9uPXQ6dD10LnBhcmVudE5vZGU7cmV0dXJuIHZvaWQgMD09PXQ/dm9pZCAwOlR2dC5zZWxlY3QodCkuZGF0dW0oKX19LGUucHJvdG90eXBlLl9jb21wdXRlV2lkdGg9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbWF4TGFiZWxUaWNrTGVuZ3RoKCl9LGUucHJvdG90eXBlLl9jb21wdXRlSGVpZ2h0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX21heExhYmVsVGlja0xlbmd0aCgpfSxlLnByb3RvdHlwZS5yZXF1ZXN0ZWRTcGFjZT1mdW5jdGlvbih0LG4pe3ZhciBpPTAscj0wO3RoaXMuaXNIb3Jpem9udGFsKCk/KHI9dGhpcy5fY29tcHV0ZUhlaWdodCgpK3RoaXMuX21hcmdpbix0aGlzLmFubm90YXRpb25zRW5hYmxlZCgpJiYocis9KHRoaXMuX2Fubm90YXRpb25NZWFzdXJlci5tZWFzdXJlKCkuaGVpZ2h0KzIqZS5fQU5OT1RBVElPTl9MQUJFTF9QQURESU5HKSp0aGlzLmFubm90YXRpb25UaWVyQ291bnQoKSkpOihpPXRoaXMuX2NvbXB1dGVXaWR0aCgpK3RoaXMuX21hcmdpbix0aGlzLmFubm90YXRpb25zRW5hYmxlZCgpJiYoaSs9KHRoaXMuX2Fubm90YXRpb25NZWFzdXJlci5tZWFzdXJlKCkuaGVpZ2h0KzIqZS5fQU5OT1RBVElPTl9MQUJFTF9QQURESU5HKSp0aGlzLmFubm90YXRpb25UaWVyQ291bnQoKSkpO3JldHVybnttaW5XaWR0aDppLG1pbkhlaWdodDpyfX0sZS5wcm90b3R5cGUuZml4ZWRIZWlnaHQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pc0hvcml6b250YWwoKX0sZS5wcm90b3R5cGUuZml4ZWRXaWR0aD1mdW5jdGlvbigpe3JldHVybiF0aGlzLmlzSG9yaXpvbnRhbCgpfSxlLnByb3RvdHlwZS5fcmVzY2FsZT1mdW5jdGlvbigpe3RoaXMucmVuZGVyKCl9LGUucHJvdG90eXBlLmNvbXB1dGVMYXlvdXQ9ZnVuY3Rpb24oZSxuLGkpe3JldHVybiB0LnByb3RvdHlwZS5jb21wdXRlTGF5b3V0LmNhbGwodGhpcyxlLG4saSksdGhpcy5pc0hvcml6b250YWwoKT90aGlzLl9zY2FsZS5yYW5nZShbMCx0aGlzLndpZHRoKCldKTp0aGlzLl9zY2FsZS5yYW5nZShbdGhpcy5oZWlnaHQoKSwwXSksdGhpc30sZS5wcm90b3R5cGUuX3NpemVGcm9tT2ZmZXI9ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzLnJlcXVlc3RlZFNwYWNlKHQsZSk7cmV0dXJuIHRoaXMuaXNIb3Jpem9udGFsKCk/e3dpZHRoOnQsaGVpZ2h0Om4ubWluSGVpZ2h0fTp7aGVpZ2h0OmUsd2lkdGg6bi5taW5XaWR0aH19LGUucHJvdG90eXBlLl9zZXR1cD1mdW5jdGlvbigpe3QucHJvdG90eXBlLl9zZXR1cC5jYWxsKHRoaXMpLHRoaXMuX3RpY2tNYXJrQ29udGFpbmVyPXRoaXMuY29udGVudCgpLmFwcGVuZCgiZyIpLmNsYXNzZWQoZS5USUNLX01BUktfQ0xBU1MrIi1jb250YWluZXIiLCEwKSx0aGlzLl90aWNrTGFiZWxDb250YWluZXI9dGhpcy5jb250ZW50KCkuYXBwZW5kKCJnIikuY2xhc3NlZChlLlRJQ0tfTEFCRUxfQ0xBU1MrIi1jb250YWluZXIiLCEwKSx0aGlzLl9iYXNlbGluZT10aGlzLmNvbnRlbnQoKS5hcHBlbmQoImxpbmUiKS5jbGFzc2VkKCJiYXNlbGluZSIsITApLHRoaXMuX2Fubm90YXRpb25Db250YWluZXI9dGhpcy5jb250ZW50KCkuYXBwZW5kKCJnIikuY2xhc3NlZCgiYW5ub3RhdGlvbi1jb250YWluZXIiLCEwKSx0aGlzLl9hbm5vdGF0aW9uQ29udGFpbmVyLmFwcGVuZCgiZyIpLmNsYXNzZWQoImFubm90YXRpb24tbGluZS1jb250YWluZXIiLCEwKSx0aGlzLl9hbm5vdGF0aW9uQ29udGFpbmVyLmFwcGVuZCgiZyIpLmNsYXNzZWQoImFubm90YXRpb24tY2lyY2xlLWNvbnRhaW5lciIsITApLHRoaXMuX2Fubm90YXRpb25Db250YWluZXIuYXBwZW5kKCJnIikuY2xhc3NlZCgiYW5ub3RhdGlvbi1yZWN0LWNvbnRhaW5lciIsITApO3ZhciBuPXRoaXMuX2Fubm90YXRpb25Db250YWluZXIuYXBwZW5kKCJnIikuY2xhc3NlZCgiYW5ub3RhdGlvbi1sYWJlbC1jb250YWluZXIiLCEwKSxpPW5ldyBDdnQuU3ZnQ29udGV4dChuLm5vZGUoKSk7dGhpcy5fYW5ub3RhdGlvbk1lYXN1cmVyPW5ldyBDdnQuQ2FjaGVNZWFzdXJlcihpKSx0aGlzLl9hbm5vdGF0aW9uV3JpdGVyPW5ldyBDdnQuV3JpdGVyKHRoaXMuX2Fubm90YXRpb25NZWFzdXJlcixpKX0sZS5wcm90b3R5cGUuX2dldFRpY2tWYWx1ZXM9ZnVuY3Rpb24oKXtyZXR1cm5bXX0sZS5wcm90b3R5cGUucmVuZGVySW1tZWRpYXRlbHk9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9nZXRUaWNrVmFsdWVzKCksbj10aGlzLl90aWNrTWFya0NvbnRhaW5lci5zZWxlY3RBbGwoIi4iK2UuVElDS19NQVJLX0NMQVNTKS5kYXRhKHQpLGk9bi5lbnRlcigpLmFwcGVuZCgibGluZSIpLmNsYXNzZWQoZS5USUNLX01BUktfQ0xBU1MsITApLm1lcmdlKG4pO3JldHVybiBpLmF0dHJzKHRoaXMuX2dlbmVyYXRlVGlja01hcmtBdHRySGFzaCgpKSxUdnQuc2VsZWN0KGkubm9kZXMoKVswXSkuY2xhc3NlZChlLkVORF9USUNLX01BUktfQ0xBU1MsITApLmF0dHJzKHRoaXMuX2dlbmVyYXRlVGlja01hcmtBdHRySGFzaCghMCkpLFR2dC5zZWxlY3QoaS5ub2RlcygpW3QubGVuZ3RoLTFdKS5jbGFzc2VkKGUuRU5EX1RJQ0tfTUFSS19DTEFTUywhMCkuYXR0cnModGhpcy5fZ2VuZXJhdGVUaWNrTWFya0F0dHJIYXNoKCEwKSksbi5leGl0KCkucmVtb3ZlKCksdGhpcy5fYmFzZWxpbmUuYXR0cnModGhpcy5fZ2VuZXJhdGVCYXNlbGluZUF0dHJIYXNoKCkpLHRoaXMuYW5ub3RhdGlvbnNFbmFibGVkKCk/dGhpcy5fZHJhd0Fubm90YXRpb25zKCk6dGhpcy5fcmVtb3ZlQW5ub3RhdGlvbnMoKSx0aGlzfSxlLnByb3RvdHlwZS5hbm5vdGF0ZWRUaWNrcz1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9hbm5vdGF0ZWRUaWNrczoodGhpcy5fYW5ub3RhdGVkVGlja3M9dCx0aGlzLnJlbmRlcigpLHRoaXMpfSxlLnByb3RvdHlwZS5hbm5vdGF0aW9uRm9ybWF0dGVyPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuX2Fubm90YXRpb25Gb3JtYXR0ZXI6KHRoaXMuX2Fubm90YXRpb25Gb3JtYXR0ZXI9dCx0aGlzLnJlbmRlcigpLHRoaXMpfSxlLnByb3RvdHlwZS5hbm5vdGF0aW9uc0VuYWJsZWQ9ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5fYW5ub3RhdGlvbnNFbmFibGVkOih0aGlzLl9hbm5vdGF0aW9uc0VuYWJsZWQ9dCx0aGlzLnJlZHJhdygpLHRoaXMpfSxlLnByb3RvdHlwZS5hbm5vdGF0aW9uVGllckNvdW50PWZ1bmN0aW9uKHQpe2lmKG51bGw9PXQpcmV0dXJuIHRoaXMuX2Fubm90YXRpb25UaWVyQ291bnQ7aWYodDwwKXRocm93IG5ldyBFcnJvcigiYW5ub3RhdGlvblRpZXJDb3VudCBjYW5ub3QgYmUgbmVnYXRpdmUiKTtyZXR1cm4gdGhpcy5fYW5ub3RhdGlvblRpZXJDb3VudD10LHRoaXMucmVkcmF3KCksdGhpc30sZS5wcm90b3R5cGUuX2RyYXdBbm5vdGF0aW9ucz1mdW5jdGlvbigpe3ZhciB0PXRoaXMsbj1lLl9BTk5PVEFUSU9OX0xBQkVMX1BBRERJTkcsaT1uZXcgTHZ0Lk1hcCxyPXRoaXMuX2Fubm90YXRlZFRpY2tzVG9SZW5kZXIoKTtyLmZvckVhY2goKGZ1bmN0aW9uKGUpe3ZhciByPXQuX2Fubm90YXRpb25NZWFzdXJlci5tZWFzdXJlKHQuYW5ub3RhdGlvbkZvcm1hdHRlcigpKGUpKTtpLnNldChlLHt3aWR0aDpyLndpZHRoKzIqbixoZWlnaHQ6ci5oZWlnaHQrMipufSl9KSk7dmFyIG89dGhpcy5fYW5ub3RhdGlvbk1lYXN1cmVyLm1lYXN1cmUoKS5oZWlnaHQrMipuLGE9dGhpcy5fYW5ub3RhdGlvblRvVGllcihpKSxzPW5ldyBMdnQuU2V0LGw9dGhpcy5pc0hvcml6b250YWwoKT90aGlzLmhlaWdodCgpOnRoaXMud2lkdGgoKSxjPXRoaXMuX2NvcmVTaXplKCksdT1NYXRoLm1pbih0aGlzLmFubm90YXRpb25UaWVyQ291bnQoKSxNYXRoLmZsb29yKChsLWMpL28pKTthLmZvckVhY2goKGZ1bmN0aW9uKHQsZSl7KC0xPT09dHx8dD49dSkmJnMuYWRkKGUpfSkpO3ZhciBoLGQ9ZnVuY3Rpb24odCxlLG4pe3ZhciBpPXQuc2VsZWN0QWxsKCIuIituKS5kYXRhKHIpLG89aS5lbnRlcigpLmFwcGVuZChlKS5jbGFzc2VkKG4sITApLm1lcmdlKGkpO3JldHVybiBpLmV4aXQoKS5yZW1vdmUoKSxvfSxwPWZ1bmN0aW9uKGUpe3N3aXRjaCh0Lm9yaWVudGF0aW9uKCkpe2Nhc2UiYm90dG9tIjpjYXNlInJpZ2h0IjpyZXR1cm4gYS5nZXQoZSkqbytjO2Nhc2UidG9wIjpjYXNlImxlZnQiOnJldHVybiBsLWMtYS5nZXQoZSkqb319LGY9ZnVuY3Rpb24oZSl7cmV0dXJuIHQuX3NjYWxlLnNjYWxlKGUpfSxtPWZ1bmN0aW9uKHQpe3JldHVybiBzLmhhcyh0KT8iaGlkZGVuIjoidmlzaWJsZSJ9O3N3aXRjaCh0aGlzLm9yaWVudGF0aW9uKCkpe2Nhc2UiYm90dG9tIjpjYXNlInJpZ2h0IjpoPTA7YnJlYWs7Y2FzZSJ0b3AiOmg9dGhpcy5oZWlnaHQoKTticmVhaztjYXNlImxlZnQiOmg9dGhpcy53aWR0aCgpfXZhciBnPXRoaXMuaXNIb3Jpem9udGFsKCk7ZCh0aGlzLl9hbm5vdGF0aW9uQ29udGFpbmVyLnNlbGVjdCgiLmFubm90YXRpb24tbGluZS1jb250YWluZXIiKSwibGluZSIsZS5BTk5PVEFUSU9OX0xJTkVfQ0xBU1MpLmF0dHJzKHt4MTpnP2Y6aCx4MjpnP2Y6cCx5MTpnP2g6Zix5MjpnP3A6Zix2aXNpYmlsaXR5Om19KSxkKHRoaXMuX2Fubm90YXRpb25Db250YWluZXIuc2VsZWN0KCIuYW5ub3RhdGlvbi1jaXJjbGUtY29udGFpbmVyIiksImNpcmNsZSIsZS5BTk5PVEFUSU9OX0NJUkNMRV9DTEFTUykuYXR0cnMoe2N4Omc/ZjpoLGN5Omc/aDpmLHI6M30pO3ZhciBfPWZ1bmN0aW9uKGUpe3N3aXRjaCh0Lm9yaWVudGF0aW9uKCkpe2Nhc2UiYm90dG9tIjpjYXNlInJpZ2h0IjpyZXR1cm4gcChlKTtjYXNlInRvcCI6Y2FzZSJsZWZ0IjpyZXR1cm4gcChlKS1pLmdldChlKS5oZWlnaHR9fTtkKHRoaXMuX2Fubm90YXRpb25Db250YWluZXIuc2VsZWN0KCIuYW5ub3RhdGlvbi1yZWN0LWNvbnRhaW5lciIpLCJyZWN0IixlLkFOTk9UQVRJT05fUkVDVF9DTEFTUykuYXR0cnMoe3g6Zz9mOl8seTpnP186Zix3aWR0aDpnP2Z1bmN0aW9uKHQpe3JldHVybiBpLmdldCh0KS53aWR0aH06ZnVuY3Rpb24odCl7cmV0dXJuIGkuZ2V0KHQpLmhlaWdodH0saGVpZ2h0Omc/ZnVuY3Rpb24odCl7cmV0dXJuIGkuZ2V0KHQpLmhlaWdodH06ZnVuY3Rpb24odCl7cmV0dXJuIGkuZ2V0KHQpLndpZHRofSx2aXNpYmlsaXR5Om19KTt2YXIgeT10aGlzLl9hbm5vdGF0aW9uV3JpdGVyLHY9dGhpcy5hbm5vdGF0aW9uRm9ybWF0dGVyKCksYj1kKHRoaXMuX2Fubm90YXRpb25Db250YWluZXIuc2VsZWN0KCIuYW5ub3RhdGlvbi1sYWJlbC1jb250YWluZXIiKSwiZyIsZS5BTk5PVEFUSU9OX0xBQkVMX0NMQVNTKTtiLnNlbGVjdEFsbCgiLnRleHQtY29udGFpbmVyIikucmVtb3ZlKCksYi5hdHRycyh7dHJhbnNmb3JtOmZ1bmN0aW9uKHQpe3JldHVybiJ0cmFuc2xhdGUoIisoZz9mKHQpOl8odCkpKyIsIisoZz9fKHQpOmYodCkpKyIpIn0sdmlzaWJpbGl0eTptfSkuZWFjaCgoZnVuY3Rpb24odCl7eS53cml0ZSh2KHQpLGc/aS5nZXQodCkud2lkdGg6aS5nZXQodCkuaGVpZ2h0LGc/aS5nZXQodCkuaGVpZ2h0OmkuZ2V0KHQpLndpZHRoLHt4QWxpZ246ImNlbnRlciIseUFsaWduOiJjZW50ZXIiLHRleHRSb3RhdGlvbjpnPzA6OTB9LFR2dC5zZWxlY3QodGhpcykubm9kZSgpKX0pKX0sZS5wcm90b3R5cGUuX2Fubm90YXRlZFRpY2tzVG9SZW5kZXI9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dGhpcy5fc2NhbGUucmFuZ2UoKTtyZXR1cm4gTHZ0LkFycmF5LnVuaXEodGhpcy5hbm5vdGF0ZWRUaWNrcygpLmZpbHRlcigoZnVuY3Rpb24obil7cmV0dXJuIG51bGwhPW4mJkx2dC5NYXRoLmluUmFuZ2UodC5fc2NhbGUuc2NhbGUobiksZVswXSxlWzFdKX0pKSl9LGUucHJvdG90eXBlLl9jb3JlU2l6ZT1mdW5jdGlvbigpe3ZhciB0PXRoaXMuaXNIb3Jpem9udGFsKCk/dGhpcy5oZWlnaHQoKTp0aGlzLndpZHRoKCksZT10aGlzLmlzSG9yaXpvbnRhbCgpP3RoaXMuX2NvbXB1dGVIZWlnaHQoKTp0aGlzLl9jb21wdXRlV2lkdGgoKTtyZXR1cm4gTWF0aC5taW4oZSx0KX0sZS5wcm90b3R5cGUuX2Fubm90YXRpb25UaWVySGVpZ2h0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2Fubm90YXRpb25NZWFzdXJlci5tZWFzdXJlKCkuaGVpZ2h0KzIqZS5fQU5OT1RBVElPTl9MQUJFTF9QQURESU5HfSxlLnByb3RvdHlwZS5fYW5ub3RhdGlvblRvVGllcj1mdW5jdGlvbih0KXt2YXIgZT10aGlzLG49W1tdXSxpPW5ldyBMdnQuTWFwLHI9dGhpcy5pc0hvcml6b250YWwoKT90aGlzLndpZHRoKCk6dGhpcy5oZWlnaHQoKTtyZXR1cm4gdGhpcy5fYW5ub3RhdGVkVGlja3NUb1JlbmRlcigpLmZvckVhY2goKGZ1bmN0aW9uKG8pe3ZhciBhPWUuX3NjYWxlLnNjYWxlKG8pLHM9dC5nZXQobykud2lkdGg7aWYoYTwwfHxhK3M+cilpLnNldChvLC0xKTtlbHNle2Zvcih2YXIgbD0wO25bbF0uc29tZSgoZnVuY3Rpb24obil7dmFyIGk9ZS5fc2NhbGUuc2NhbGUobikscj10LmdldChuKS53aWR0aDtyZXR1cm4gYStzPj1pJiZhPD1pK3J9KSk7KWwrKyxuLmxlbmd0aD09PWwmJm4ucHVzaChbXSk7bltsXS5wdXNoKG8pLGkuc2V0KG8sbCl9fSkpLGl9LGUucHJvdG90eXBlLl9yZW1vdmVBbm5vdGF0aW9ucz1mdW5jdGlvbigpe3RoaXMuX2Fubm90YXRpb25Db250YWluZXIuc2VsZWN0QWxsKCIuYW5ub3RhdGlvbi1saW5lIikucmVtb3ZlKCksdGhpcy5fYW5ub3RhdGlvbkNvbnRhaW5lci5zZWxlY3RBbGwoIi5hbm5vdGF0aW9uLWNpcmNsZSIpLnJlbW92ZSgpLHRoaXMuX2Fubm90YXRpb25Db250YWluZXIuc2VsZWN0QWxsKCIuYW5ub3RhdGlvbi1yZWN0IikucmVtb3ZlKCksdGhpcy5fYW5ub3RhdGlvbkNvbnRhaW5lci5zZWxlY3RBbGwoIi5hbm5vdGF0aW9uLWxhYmVsIikucmVtb3ZlKCl9LGUucHJvdG90eXBlLl9nZW5lcmF0ZUJhc2VsaW5lQXR0ckhhc2g9ZnVuY3Rpb24oKXt2YXIgdD17eDE6MCx5MTowLHgyOjAseTI6MH07c3dpdGNoKHRoaXMuX29yaWVudGF0aW9uKXtjYXNlImJvdHRvbSI6dC54Mj10aGlzLndpZHRoKCk7YnJlYWs7Y2FzZSJ0b3AiOnQueDI9dGhpcy53aWR0aCgpLHQueTE9dGhpcy5oZWlnaHQoKSx0LnkyPXRoaXMuaGVpZ2h0KCk7YnJlYWs7Y2FzZSJsZWZ0Ijp0LngxPXRoaXMud2lkdGgoKSx0LngyPXRoaXMud2lkdGgoKSx0LnkyPXRoaXMuaGVpZ2h0KCk7YnJlYWs7Y2FzZSJyaWdodCI6dC55Mj10aGlzLmhlaWdodCgpfXJldHVybiB0fSxlLnByb3RvdHlwZS5fZ2VuZXJhdGVUaWNrTWFya0F0dHJIYXNoPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7dm9pZCAwPT09dCYmKHQ9ITEpO3ZhciBuPXt4MTowLHkxOjAseDI6MCx5MjowfSxpPWZ1bmN0aW9uKHQpe3JldHVybiBlLl9zY2FsZS5zY2FsZSh0KX07dGhpcy5pc0hvcml6b250YWwoKT8obi54MT1pLG4ueDI9aSk6KG4ueTE9aSxuLnkyPWkpO3ZhciByPXQ/dGhpcy5fZW5kVGlja0xlbmd0aDp0aGlzLl9pbm5lclRpY2tMZW5ndGg7c3dpdGNoKHRoaXMuX29yaWVudGF0aW9uKXtjYXNlImJvdHRvbSI6bi55Mj1yO2JyZWFrO2Nhc2UidG9wIjpuLnkxPXRoaXMuaGVpZ2h0KCksbi55Mj10aGlzLmhlaWdodCgpLXI7YnJlYWs7Y2FzZSJsZWZ0IjpuLngxPXRoaXMud2lkdGgoKSxuLngyPXRoaXMud2lkdGgoKS1yO2JyZWFrO2Nhc2UicmlnaHQiOm4ueDI9cn1yZXR1cm4gbn0sZS5wcm90b3R5cGUuX3NldERlZmF1bHRBbGlnbm1lbnQ9ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5fb3JpZW50YXRpb24pe2Nhc2UiYm90dG9tIjp0aGlzLnlBbGlnbm1lbnQoInRvcCIpO2JyZWFrO2Nhc2UidG9wIjp0aGlzLnlBbGlnbm1lbnQoImJvdHRvbSIpO2JyZWFrO2Nhc2UibGVmdCI6dGhpcy54QWxpZ25tZW50KCJyaWdodCIpO2JyZWFrO2Nhc2UicmlnaHQiOnRoaXMueEFsaWdubWVudCgibGVmdCIpfX0sZS5wcm90b3R5cGUuaXNIb3Jpem9udGFsPWZ1bmN0aW9uKCl7cmV0dXJuInRvcCI9PT10aGlzLl9vcmllbnRhdGlvbnx8ImJvdHRvbSI9PT10aGlzLl9vcmllbnRhdGlvbn0sZS5wcm90b3R5cGUuZ2V0U2NhbGU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc2NhbGV9LGUucHJvdG90eXBlLmZvcm1hdHRlcj1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9mb3JtYXR0ZXI6KHRoaXMuX2Zvcm1hdHRlcj10LHRoaXMucmVkcmF3KCksdGhpcyl9LGUucHJvdG90eXBlLmlubmVyVGlja0xlbmd0aD1mdW5jdGlvbih0KXtpZihudWxsPT10KXJldHVybiB0aGlzLl9pbm5lclRpY2tMZW5ndGg7aWYodDwwKXRocm93IG5ldyBFcnJvcigiaW5uZXIgdGljayBsZW5ndGggbXVzdCBiZSBwb3NpdGl2ZSIpO3JldHVybiB0aGlzLl9pbm5lclRpY2tMZW5ndGg9dCx0aGlzLnJlZHJhdygpLHRoaXN9LGUucHJvdG90eXBlLmVuZFRpY2tMZW5ndGg9ZnVuY3Rpb24odCl7aWYobnVsbD09dClyZXR1cm4gdGhpcy5fZW5kVGlja0xlbmd0aDtpZih0PDApdGhyb3cgbmV3IEVycm9yKCJlbmQgdGljayBsZW5ndGggbXVzdCBiZSBwb3NpdGl2ZSIpO3JldHVybiB0aGlzLl9lbmRUaWNrTGVuZ3RoPXQsdGhpcy5yZWRyYXcoKSx0aGlzfSxlLnByb3RvdHlwZS5fbWF4TGFiZWxUaWNrTGVuZ3RoPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2hvd0VuZFRpY2tMYWJlbHMoKT9NYXRoLm1heCh0aGlzLmlubmVyVGlja0xlbmd0aCgpLHRoaXMuZW5kVGlja0xlbmd0aCgpKTp0aGlzLmlubmVyVGlja0xlbmd0aCgpfSxlLnByb3RvdHlwZS50aWNrTGFiZWxQYWRkaW5nPWZ1bmN0aW9uKHQpe2lmKG51bGw9PXQpcmV0dXJuIHRoaXMuX3RpY2tMYWJlbFBhZGRpbmc7aWYodDwwKXRocm93IG5ldyBFcnJvcigidGljayBsYWJlbCBwYWRkaW5nIG11c3QgYmUgcG9zaXRpdmUiKTtyZXR1cm4gdGhpcy5fdGlja0xhYmVsUGFkZGluZz10LHRoaXMucmVkcmF3KCksdGhpc30sZS5wcm90b3R5cGUubWFyZ2luPWZ1bmN0aW9uKHQpe2lmKG51bGw9PXQpcmV0dXJuIHRoaXMuX21hcmdpbjtpZih0PDApdGhyb3cgbmV3IEVycm9yKCJtYXJnaW4gc2l6ZSBtdXN0IGJlIHBvc2l0aXZlIik7cmV0dXJuIHRoaXMuX21hcmdpbj10LHRoaXMucmVkcmF3KCksdGhpc30sZS5wcm90b3R5cGUub3JpZW50YXRpb249ZnVuY3Rpb24odCl7aWYobnVsbD09dClyZXR1cm4gdGhpcy5fb3JpZW50YXRpb247dmFyIGU9dC50b0xvd2VyQ2FzZSgpO2lmKCJ0b3AiIT09ZSYmImJvdHRvbSIhPT1lJiYibGVmdCIhPT1lJiYicmlnaHQiIT09ZSl0aHJvdyBuZXcgRXJyb3IoInVuc3VwcG9ydGVkIG9yaWVudGF0aW9uIik7cmV0dXJuIHRoaXMuX29yaWVudGF0aW9uPWUsdGhpcy5yZWRyYXcoKSx0aGlzfSxlLnByb3RvdHlwZS5zaG93RW5kVGlja0xhYmVscz1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9zaG93RW5kVGlja0xhYmVsczoodGhpcy5fc2hvd0VuZFRpY2tMYWJlbHM9dCx0aGlzLnJlbmRlcigpLHRoaXMpfSxlLnByb3RvdHlwZS5fc2hvd0FsbFRpY2tNYXJrcz1mdW5jdGlvbigpe3RoaXMuX3RpY2tNYXJrQ29udGFpbmVyLnNlbGVjdEFsbCgiLiIrZS5USUNLX01BUktfQ0xBU1MpLmVhY2goKGZ1bmN0aW9uKCl7VHZ0LnNlbGVjdCh0aGlzKS5zdHlsZSgidmlzaWJpbGl0eSIsImluaGVyaXQiKX0pKX0sZS5wcm90b3R5cGUuX3Nob3dBbGxUaWNrTGFiZWxzPWZ1bmN0aW9uKCl7dGhpcy5fdGlja0xhYmVsQ29udGFpbmVyLnNlbGVjdEFsbCgiLiIrZS5USUNLX0xBQkVMX0NMQVNTKS5lYWNoKChmdW5jdGlvbigpe1R2dC5zZWxlY3QodGhpcykuc3R5bGUoInZpc2liaWxpdHkiLCJpbmhlcml0Iil9KSl9LGUucHJvdG90eXBlLl9oaWRlT3ZlcmZsb3dpbmdUaWNrTGFiZWxzPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5lbGVtZW50KCkubm9kZSgpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLG49dGhpcy5fdGlja0xhYmVsQ29udGFpbmVyLnNlbGVjdEFsbCgiLiIrZS5USUNLX0xBQkVMX0NMQVNTKTtuLmVtcHR5KCl8fG4uZWFjaCgoZnVuY3Rpb24oZSxuKXtMdnQuRE9NLmNsaWVudFJlY3RJbnNpZGUodGhpcy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSx0KXx8VHZ0LnNlbGVjdCh0aGlzKS5zdHlsZSgidmlzaWJpbGl0eSIsImhpZGRlbiIpfSkpfSxlLnByb3RvdHlwZS5faGlkZVRpY2tNYXJrc1dpdGhvdXRMYWJlbD1mdW5jdGlvbigpe3ZhciB0PXRoaXMuX3RpY2tNYXJrQ29udGFpbmVyLnNlbGVjdEFsbCgiLiIrZS5USUNLX01BUktfQ0xBU1MpLG49dGhpcy5fdGlja0xhYmVsQ29udGFpbmVyLnNlbGVjdEFsbCgiLiIrZS5USUNLX0xBQkVMX0NMQVNTKS5maWx0ZXIoKGZ1bmN0aW9uKHQsZSl7dmFyIG49VHZ0LnNlbGVjdCh0aGlzKS5zdHlsZSgidmlzaWJpbGl0eSIpO3JldHVybiJpbmhlcml0Ij09PW58fCJ2aXNpYmxlIj09PW59KSkuZGF0YSgpO3QuZWFjaCgoZnVuY3Rpb24odCxlKXstMT09PW4uaW5kZXhPZih0KSYmVHZ0LnNlbGVjdCh0aGlzKS5zdHlsZSgidmlzaWJpbGl0eSIsImhpZGRlbiIpfSkpfSxlLnByb3RvdHlwZS5pbnZhbGlkYXRlQ2FjaGU9ZnVuY3Rpb24oKXt0LnByb3RvdHlwZS5pbnZhbGlkYXRlQ2FjaGUuY2FsbCh0aGlzKSx0aGlzLl9hbm5vdGF0aW9uTWVhc3VyZXIucmVzZXQoKX0sZS5FTkRfVElDS19NQVJLX0NMQVNTPSJlbmQtdGljay1tYXJrIixlLlRJQ0tfTUFSS19DTEFTUz0idGljay1tYXJrIixlLlRJQ0tfTEFCRUxfQ0xBU1M9InRpY2stbGFiZWwiLGUuQU5OT1RBVElPTl9MSU5FX0NMQVNTPSJhbm5vdGF0aW9uLWxpbmUiLGUuQU5OT1RBVElPTl9SRUNUX0NMQVNTPSJhbm5vdGF0aW9uLXJlY3QiLGUuQU5OT1RBVElPTl9DSVJDTEVfQ0xBU1M9ImFubm90YXRpb24tY2lyY2xlIixlLkFOTk9UQVRJT05fTEFCRUxfQ0xBU1M9ImFubm90YXRpb24tbGFiZWwiLGUuX0FOTk9UQVRJT05fTEFCRUxfUEFERElORz00LGV9KShBdnQuQ29tcG9uZW50KTtkdnQuQXhpcz1QdnQsCi8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovCk9iamVjdC5kZWZpbmVQcm9wZXJ0eShrZ3QsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBOdnQ9Qk8sSXZ0PXdwdCxSdnQ9TGd0LE92dD1PX3QsenZ0PURfdCxEdnQ9ZHZ0LEJ2dD0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlLG4pe3ZvaWQgMD09PW4mJihuPSJib3R0b20iKTt2YXIgaT10LmNhbGwodGhpcyxlLG4pfHx0aGlzO3JldHVybiBpLl90aWNrTGFiZWxBbmdsZT0wLGkuX3RpY2tMYWJlbFNoZWFyQW5nbGU9MCxpLmFkZENsYXNzKCJjYXRlZ29yeS1heGlzIiksaX1yZXR1cm4gTnZ0Ll9fZXh0ZW5kcyhlLHQpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwiX3dyYXBwZXIiLHtnZXQ6ZnVuY3Rpb24oKXt2YXIgdD1uZXcgUnZ0LldyYXBwZXI7cmV0dXJuIG51bGwhPXRoaXMuX3RpY2tMYWJlbE1heExpbmVzJiZ0Lm1heExpbmVzKHRoaXMuX3RpY2tMYWJlbE1heExpbmVzKSx0fSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwiX3dyaXRlciIse2dldDpmdW5jdGlvbigpe3JldHVybiBuZXcgUnZ0LldyaXRlcih0aGlzLl9tZWFzdXJlcix0aGlzLl90eXBlc2V0dGVyQ29udGV4dCx0aGlzLl93cmFwcGVyKX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxlLnByb3RvdHlwZS5fc2V0dXA9ZnVuY3Rpb24oKXt0LnByb3RvdHlwZS5fc2V0dXAuY2FsbCh0aGlzKSx0aGlzLl90eXBlc2V0dGVyQ29udGV4dD1uZXcgUnZ0LlN2Z0NvbnRleHQodGhpcy5fdGlja0xhYmVsQ29udGFpbmVyLm5vZGUoKSksdGhpcy5fbWVhc3VyZXI9bmV3IFJ2dC5DYWNoZU1lYXN1cmVyKHRoaXMuX3R5cGVzZXR0ZXJDb250ZXh0KX0sZS5wcm90b3R5cGUuX3Jlc2NhbGU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZWRyYXcoKX0sZS5wcm90b3R5cGUucmVxdWVzdGVkU3BhY2U9ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzLmlzSG9yaXpvbnRhbCgpPzA6dGhpcy5fdGlja1NwYWNlUmVxdWlyZWQoKSt0aGlzLm1hcmdpbigpLGk9dGhpcy5pc0hvcml6b250YWwoKT90aGlzLl90aWNrU3BhY2VSZXF1aXJlZCgpK3RoaXMubWFyZ2luKCk6MDtpZigwPT09dGhpcy5fc2NhbGUuZG9tYWluKCkubGVuZ3RoKXJldHVybnttaW5XaWR0aDowLG1pbkhlaWdodDowfTtpZih0aGlzLmFubm90YXRpb25zRW5hYmxlZCgpKXt2YXIgcj10aGlzLl9hbm5vdGF0aW9uVGllckhlaWdodCgpKnRoaXMuYW5ub3RhdGlvblRpZXJDb3VudCgpO3RoaXMuaXNIb3Jpem9udGFsKCk/aSs9cjpuKz1yfXZhciBvPXRoaXMuX21lYXN1cmVUaWNrTGFiZWxzKHQsZSk7cmV0dXJue21pbldpZHRoOm8udXNlZFdpZHRoK24sbWluSGVpZ2h0Om8udXNlZEhlaWdodCtpfX0sZS5wcm90b3R5cGUuX2NvcmVTaXplPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5pc0hvcml6b250YWwoKT90aGlzLmhlaWdodCgpOnRoaXMud2lkdGgoKSxlPXRoaXMuaXNIb3Jpem9udGFsKCk/dGhpcy5yZXF1ZXN0ZWRTcGFjZSh0aGlzLndpZHRoKCksdGhpcy5oZWlnaHQoKSkubWluSGVpZ2h0OnRoaXMucmVxdWVzdGVkU3BhY2UodGhpcy53aWR0aCgpLHRoaXMuaGVpZ2h0KCkpLm1pbldpZHRoLG49dGhpcy5tYXJnaW4oKSt0aGlzLl9hbm5vdGF0aW9uVGllckhlaWdodCgpO3JldHVybiBNYXRoLm1pbihlLW4sdCl9LGUucHJvdG90eXBlLl9nZXRUaWNrVmFsdWVzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0RG93bnNhbXBsZUluZm8oKS5kb21haW59LGUucHJvdG90eXBlLl9zaXplRnJvbU9mZmVyPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIE92dC5Db21wb25lbnQucHJvdG90eXBlLl9zaXplRnJvbU9mZmVyLmNhbGwodGhpcyx0LGUpfSxlLnByb3RvdHlwZS5nZXREb3duc2FtcGxlSW5mbz1mdW5jdGlvbih0LG4pe3ZvaWQgMD09PXQmJih0PXRoaXMuX3NjYWxlKSx2b2lkIDA9PT1uJiYobj10LmludmVydFJhbmdlKCkpO3ZhciBpPTA9PT10aGlzLl90aWNrTGFiZWxBbmdsZT8xOjEvTWF0aC5jb3ModGhpcy5fdGlja0xhYmVsU2hlYXJBbmdsZS8xODAqTWF0aC5QSSkscj1NYXRoLmNlaWwoZS5fTUlOSU1VTV9XSURUSF9QRVJfTEFCRUxfUFgqaS90LnN0ZXBXaWR0aCgpKTtyZXR1cm57ZG9tYWluOm4uZmlsdGVyKChmdW5jdGlvbih0LGUpe3JldHVybiBlJXI9PTB9KSksc3RlcFdpZHRoOnIqdC5zdGVwV2lkdGgoKX19LGUucHJvdG90eXBlLnRpY2tMYWJlbEFuZ2xlPWZ1bmN0aW9uKHQpe2lmKG51bGw9PXQpcmV0dXJuIHRoaXMuX3RpY2tMYWJlbEFuZ2xlO2lmKDAhPT10JiY5MCE9PXQmJi05MCE9PXQpdGhyb3cgbmV3IEVycm9yKCJBbmdsZSAiK3QrIiBub3Qgc3VwcG9ydGVkOyBvbmx5IDAsIDkwLCBhbmQgLTkwIGFyZSB2YWxpZCB2YWx1ZXMiKTtyZXR1cm4gdGhpcy5fdGlja0xhYmVsQW5nbGU9dCx0aGlzLnJlZHJhdygpLHRoaXN9LGUucHJvdG90eXBlLnRpY2tMYWJlbFNoZWFyQW5nbGU9ZnVuY3Rpb24odCl7aWYobnVsbD09dClyZXR1cm4gdGhpcy5fdGlja0xhYmVsU2hlYXJBbmdsZTtpZih0PC04MHx8dD44MCl0aHJvdyBuZXcgRXJyb3IoIkFuZ2xlICIrdCsiIG5vdCBzdXBwb3J0ZWQ7IE11c3QgYmUgYmV0d2VlbiBbLTgwLCA4MF0iKTtyZXR1cm4gdGhpcy5fdGlja0xhYmVsU2hlYXJBbmdsZT10LHRoaXMucmVkcmF3KCksdGhpc30sZS5wcm90b3R5cGUudGlja0xhYmVsTWF4V2lkdGg9ZnVuY3Rpb24odCl7cmV0dXJuIDA9PT1hcmd1bWVudHMubGVuZ3RoP3RoaXMuX3RpY2tMYWJlbE1heFdpZHRoOih0aGlzLl90aWNrTGFiZWxNYXhXaWR0aD10LHRoaXMucmVkcmF3KCksdGhpcyl9LGUucHJvdG90eXBlLnRpY2tMYWJlbE1heExpbmVzPWZ1bmN0aW9uKHQpe3JldHVybiAwPT09YXJndW1lbnRzLmxlbmd0aD90aGlzLl90aWNrTGFiZWxNYXhMaW5lczoodGhpcy5fdGlja0xhYmVsTWF4TGluZXM9dCx0aGlzLnJlZHJhdygpLHRoaXMpfSxlLnByb3RvdHlwZS5fdGlja1NwYWNlUmVxdWlyZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbWF4TGFiZWxUaWNrTGVuZ3RoKCkrdGhpcy50aWNrTGFiZWxQYWRkaW5nKCl9LGUucHJvdG90eXBlLl9kcmF3VGlja3M9ZnVuY3Rpb24odCxlKXt2YXIgbixpLHI9dGhpcztzd2l0Y2godGhpcy50aWNrTGFiZWxBbmdsZSgpKXtjYXNlIDA6bj17bGVmdDoicmlnaHQiLHJpZ2h0OiJsZWZ0Iix0b3A6ImNlbnRlciIsYm90dG9tOiJjZW50ZXIifSxpPXtsZWZ0OiJjZW50ZXIiLHJpZ2h0OiJjZW50ZXIiLHRvcDoiYm90dG9tIixib3R0b206InRvcCJ9O2JyZWFrO2Nhc2UgOTA6bj17bGVmdDoiY2VudGVyIixyaWdodDoiY2VudGVyIix0b3A6InJpZ2h0Iixib3R0b206ImxlZnQifSxpPXtsZWZ0OiJ0b3AiLHJpZ2h0OiJib3R0b20iLHRvcDoiY2VudGVyIixib3R0b206ImNlbnRlciJ9O2JyZWFrO2Nhc2UtOTA6bj17bGVmdDoiY2VudGVyIixyaWdodDoiY2VudGVyIix0b3A6ImxlZnQiLGJvdHRvbToicmlnaHQifSxpPXtsZWZ0OiJib3R0b20iLHJpZ2h0OiJ0b3AiLHRvcDoiY2VudGVyIixib3R0b206ImNlbnRlciJ9fWUuZWFjaCgoZnVuY3Rpb24oZSl7dmFyIG89SXZ0LnNlbGVjdCh0aGlzKSxhPXIuaXNIb3Jpem9udGFsKCk/dDpyLndpZHRoKCktci5fdGlja1NwYWNlUmVxdWlyZWQoKSxzPXIuaXNIb3Jpem9udGFsKCk/ci5oZWlnaHQoKS1yLl90aWNrU3BhY2VSZXF1aXJlZCgpOnQsbD17eEFsaWduOm5bci5vcmllbnRhdGlvbigpXSx5QWxpZ246aVtyLm9yaWVudGF0aW9uKCldLHRleHRSb3RhdGlvbjpyLnRpY2tMYWJlbEFuZ2xlKCksdGV4dFNoZWFyOnIudGlja0xhYmVsU2hlYXJBbmdsZSgpfTtpZihudWxsIT1yLl90aWNrTGFiZWxNYXhXaWR0aCl7aWYoImxlZnQiPT09ci5vcmllbnRhdGlvbigpJiZhPnIuX3RpY2tMYWJlbE1heFdpZHRoKXt2YXIgYz1hLXIuX3RpY2tMYWJlbE1heFdpZHRoLHU9by5hdHRyKCJ0cmFuc2Zvcm0iKSsiIHRyYW5zbGF0ZSgiK2MrIiwgMCkiO28uYXR0cigidHJhbnNmb3JtIix1KX1hPU1hdGgubWluKGEsci5fdGlja0xhYmVsTWF4V2lkdGgpfXIuX3dyaXRlci53cml0ZShyLmZvcm1hdHRlcigpKGUpLGEscyxsLG8ubm9kZSgpKX0pKX0sZS5wcm90b3R5cGUuX21lYXN1cmVUaWNrTGFiZWxzPWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcyxpPXRoaXMuX3NjYWxlLmNsb25lV2l0aG91dFByb3ZpZGVycygpLnJhbmdlKFswLHRoaXMuaXNIb3Jpem9udGFsKCk/dDplXSkscj10aGlzLmdldERvd25zYW1wbGVJbmZvKGkpLG89ci5kb21haW4sYT1yLnN0ZXBXaWR0aCxzPXQtdGhpcy5fdGlja1NwYWNlUmVxdWlyZWQoKTt0aGlzLmlzSG9yaXpvbnRhbCgpJiYocz1hLDAhPT10aGlzLl90aWNrTGFiZWxBbmdsZSYmKHM9ZS10aGlzLl90aWNrU3BhY2VSZXF1aXJlZCgpKSxzPU1hdGgubWF4KHMsMCkpO3ZhciBsPWE7dGhpcy5pc0hvcml6b250YWwoKSYmKGw9ZS10aGlzLl90aWNrU3BhY2VSZXF1aXJlZCgpLDAhPT10aGlzLl90aWNrTGFiZWxBbmdsZSYmKGw9dC10aGlzLl90aWNrU3BhY2VSZXF1aXJlZCgpKSxsPU1hdGgubWF4KGwsMCkpLG51bGwhPXRoaXMuX3RpY2tMYWJlbE1heFdpZHRoJiYocz1NYXRoLm1pbihzLHRoaXMuX3RpY2tMYWJlbE1heFdpZHRoKSk7dmFyIGMsdT1vLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIG4uX3dyYXBwZXIud3JhcChuLmZvcm1hdHRlcigpKHQpLG4uX21lYXN1cmVyLHMsbCl9KSksaD10aGlzLmlzSG9yaXpvbnRhbCgpJiYwPT09dGhpcy5fdGlja0xhYmVsQW5nbGU/SXZ0LnN1bTp6dnQuTWF0aC5tYXgsZD10aGlzLmlzSG9yaXpvbnRhbCgpJiYwPT09dGhpcy5fdGlja0xhYmVsQW5nbGU/enZ0Lk1hdGgubWF4Okl2dC5zdW0scD1oKHUsKGZ1bmN0aW9uKHQpe3JldHVybiBuLl9tZWFzdXJlci5tZWFzdXJlKHQud3JhcHBlZFRleHQpLndpZHRofSksMCksZj1kKHUsKGZ1bmN0aW9uKHQpe3JldHVybiBuLl9tZWFzdXJlci5tZWFzdXJlKHQud3JhcHBlZFRleHQpLmhlaWdodH0pLDApO3JldHVybiAwIT09dGhpcy5fdGlja0xhYmVsQW5nbGUmJihwPShjPVtmLHBdKVswXSxmPWNbMV0pLHt1c2VkV2lkdGg6cCx1c2VkSGVpZ2h0OmZ9fSxlLnByb3RvdHlwZS5yZW5kZXJJbW1lZGlhdGVseT1mdW5jdGlvbigpe3ZhciBlPXRoaXM7dC5wcm90b3R5cGUucmVuZGVySW1tZWRpYXRlbHkuY2FsbCh0aGlzKTt2YXIgbj10aGlzLl9zY2FsZSxpPXRoaXMuZ2V0RG93bnNhbXBsZUluZm8obikscj1pLmRvbWFpbixvPWkuc3RlcFdpZHRoLGE9bzt0aGlzLmlzSG9yaXpvbnRhbCgpJiZudWxsIT10aGlzLl90aWNrTGFiZWxNYXhXaWR0aCYmKGE9TWF0aC5taW4oYSx0aGlzLl90aWNrTGFiZWxNYXhXaWR0aCkpO3ZhciBzPXRoaXMuX3RpY2tMYWJlbENvbnRhaW5lci5zZWxlY3RBbGwoIi4iK0R2dC5BeGlzLlRJQ0tfTEFCRUxfQ0xBU1MpLmRhdGEociksbD1zLmVudGVyKCkuYXBwZW5kKCJnIikuY2xhc3NlZChEdnQuQXhpcy5USUNLX0xBQkVMX0NMQVNTLCEwKS5tZXJnZShzKTtzLmV4aXQoKS5yZW1vdmUoKSxsLmF0dHIoInRyYW5zZm9ybSIsKGZ1bmN0aW9uKHQsaSl7dmFyIHI9bi5zY2FsZSh0KS1hLzI7cmV0dXJuInRyYW5zbGF0ZSgiKyhlLmlzSG9yaXpvbnRhbCgpP3I6MCkrIiwiKyhlLmlzSG9yaXpvbnRhbCgpPzA6cikrIikifSkpLGwudGV4dCgiIiksdGhpcy5fZHJhd1RpY2tzKG8sbCk7dmFyIGM9InJpZ2h0Ij09PXRoaXMub3JpZW50YXRpb24oKT90aGlzLl90aWNrU3BhY2VSZXF1aXJlZCgpOjAsdT0iYm90dG9tIj09PXRoaXMub3JpZW50YXRpb24oKT90aGlzLl90aWNrU3BhY2VSZXF1aXJlZCgpOjA7cmV0dXJuIHRoaXMuX3RpY2tMYWJlbENvbnRhaW5lci5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIitjKyIsIit1KyIpIiksdGhpcy5fc2hvd0FsbFRpY2tNYXJrcygpLHRoaXMuX3Nob3dBbGxUaWNrTGFiZWxzKCksdGhpcy5faGlkZVRpY2tNYXJrc1dpdGhvdXRMYWJlbCgpLHRoaXN9LGUucHJvdG90eXBlLmNvbXB1dGVMYXlvdXQ9ZnVuY3Rpb24oZSxuLGkpe3JldHVybiB0LnByb3RvdHlwZS5jb21wdXRlTGF5b3V0LmNhbGwodGhpcyxlLG4saSksdGhpcy5pc0hvcml6b250YWwoKXx8dGhpcy5fc2NhbGUucmFuZ2UoWzAsdGhpcy5oZWlnaHQoKV0pLHRoaXN9LGUucHJvdG90eXBlLmludmFsaWRhdGVDYWNoZT1mdW5jdGlvbigpe3QucHJvdG90eXBlLmludmFsaWRhdGVDYWNoZS5jYWxsKHRoaXMpLHRoaXMuX21lYXN1cmVyLnJlc2V0KCl9LGUuX01JTklNVU1fV0lEVEhfUEVSX0xBQkVMX1BYPTE1LGV9KShEdnQuQXhpcyk7a2d0LkNhdGVnb3J5PUJ2dDt2YXIgSHZ0PXt9OwovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqL09iamVjdC5kZWZpbmVQcm9wZXJ0eShIdnQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBGdnQ9Qk8sVnZ0PXdwdCxVdnQ9TGd0LGp2dD1wdnQsR3Z0PURfdCxXdnQ9ZHZ0LHF2dD0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlLG4pe3ZhciBpPXQuY2FsbCh0aGlzLGUsbil8fHRoaXM7cmV0dXJuIGkuX3RpY2tMYWJlbFBvc2l0aW9uaW5nPSJjZW50ZXIiLGkuX3VzZXNUZXh0V2lkdGhBcHByb3hpbWF0aW9uPSExLGkuZm9ybWF0dGVyKGp2dC5nZW5lcmFsKCkpLGl9cmV0dXJuIEZ2dC5fX2V4dGVuZHMoZSx0KSxlLnByb3RvdHlwZS5fc2V0dXA9ZnVuY3Rpb24oKXt0LnByb3RvdHlwZS5fc2V0dXAuY2FsbCh0aGlzKTt2YXIgZT1uZXcgVXZ0LlN2Z0NvbnRleHQodGhpcy5fdGlja0xhYmVsQ29udGFpbmVyLm5vZGUoKSxXdnQuQXhpcy5USUNLX0xBQkVMX0NMQVNTKTt0aGlzLl9tZWFzdXJlcj1uZXcgVXZ0LkNhY2hlTWVhc3VyZXIoZSksdGhpcy5fd3JhcHBlcj0obmV3IFV2dC5XcmFwcGVyKS5tYXhMaW5lcygxKX0sZS5wcm90b3R5cGUuX2NvbXB1dGVXaWR0aD1mdW5jdGlvbigpe3ZhciB0PXRoaXMuX3VzZXNUZXh0V2lkdGhBcHByb3hpbWF0aW9uP3RoaXMuX2NvbXB1dGVBcHByb3hpbWF0ZVRleHRXaWR0aCgpOnRoaXMuX2NvbXB1dGVFeGFjdFRleHRXaWR0aCgpO3JldHVybiJjZW50ZXIiPT09dGhpcy5fdGlja0xhYmVsUG9zaXRpb25pbmc/dGhpcy5fbWF4TGFiZWxUaWNrTGVuZ3RoKCkrdGhpcy50aWNrTGFiZWxQYWRkaW5nKCkrdDpNYXRoLm1heCh0aGlzLl9tYXhMYWJlbFRpY2tMZW5ndGgoKSx0aGlzLnRpY2tMYWJlbFBhZGRpbmcoKSt0KX0sZS5wcm90b3R5cGUuX2NvbXB1dGVFeGFjdFRleHRXaWR0aD1mdW5jdGlvbigpe3ZhciB0PXRoaXMsZT10aGlzLl9nZXRUaWNrVmFsdWVzKCkubWFwKChmdW5jdGlvbihlKXt2YXIgbj10LmZvcm1hdHRlcigpKGUpO3JldHVybiB0Ll9tZWFzdXJlci5tZWFzdXJlKG4pLndpZHRofSkpO3JldHVybiBHdnQuTWF0aC5tYXgoZSwwKX0sZS5wcm90b3R5cGUuX2NvbXB1dGVBcHByb3hpbWF0ZVRleHRXaWR0aD1mdW5jdGlvbigpe3ZhciB0PXRoaXMsZT10aGlzLl9nZXRUaWNrVmFsdWVzKCksbj10aGlzLl9tZWFzdXJlci5tZWFzdXJlKCJNIikud2lkdGgsaT1lLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIHQuZm9ybWF0dGVyKCkoZSkubGVuZ3RoKm59KSk7cmV0dXJuIEd2dC5NYXRoLm1heChpLDApfSxlLnByb3RvdHlwZS5fY29tcHV0ZUhlaWdodD1mdW5jdGlvbigpe3ZhciB0PXRoaXMuX21lYXN1cmVyLm1lYXN1cmUoKS5oZWlnaHQ7cmV0dXJuImNlbnRlciI9PT10aGlzLl90aWNrTGFiZWxQb3NpdGlvbmluZz90aGlzLl9tYXhMYWJlbFRpY2tMZW5ndGgoKSt0aGlzLnRpY2tMYWJlbFBhZGRpbmcoKSt0Ok1hdGgubWF4KHRoaXMuX21heExhYmVsVGlja0xlbmd0aCgpLHRoaXMudGlja0xhYmVsUGFkZGluZygpK3QpfSxlLnByb3RvdHlwZS5fZ2V0VGlja1ZhbHVlcz1mdW5jdGlvbigpe3ZhciB0PXRoaXMuX3NjYWxlLGU9dC5kb21haW4oKSxuPWVbMF08PWVbMV0/ZVswXTplWzFdLGk9ZVswXT49ZVsxXT9lWzBdOmVbMV07cmV0dXJuIHQudGlja3MoKS5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiB0Pj1uJiZ0PD1pfSkpfSxlLnByb3RvdHlwZS5fcmVzY2FsZT1mdW5jdGlvbigpe2lmKHRoaXMuX2lzU2V0dXApe2lmKCF0aGlzLmlzSG9yaXpvbnRhbCgpKXt2YXIgdD10aGlzLl9jb21wdXRlV2lkdGgoKTtpZih0PnRoaXMud2lkdGgoKXx8dDx0aGlzLndpZHRoKCktdGhpcy5tYXJnaW4oKSlyZXR1cm4gdm9pZCB0aGlzLnJlZHJhdygpfXRoaXMucmVuZGVyKCl9fSxlLnByb3RvdHlwZS5yZW5kZXJJbW1lZGlhdGVseT1mdW5jdGlvbigpe3ZhciBlPXRoaXM7dC5wcm90b3R5cGUucmVuZGVySW1tZWRpYXRlbHkuY2FsbCh0aGlzKTt2YXIgbj17eDowLHk6MCxkeDoiMGVtIixkeToiMC4zZW0ifSxpPXRoaXMuX21heExhYmVsVGlja0xlbmd0aCgpLHI9dGhpcy50aWNrTGFiZWxQYWRkaW5nKCksbz0ibWlkZGxlIixhPTAscz0wLGw9MCxjPTA7aWYodGhpcy5pc0hvcml6b250YWwoKSlzd2l0Y2godGhpcy5fdGlja0xhYmVsUG9zaXRpb25pbmcpe2Nhc2UibGVmdCI6bz0iZW5kIixhPS1yLGM9cjticmVhaztjYXNlImNlbnRlciI6Yz1pK3I7YnJlYWs7Y2FzZSJyaWdodCI6bz0ic3RhcnQiLGE9cixjPXJ9ZWxzZSBzd2l0Y2godGhpcy5fdGlja0xhYmVsUG9zaXRpb25pbmcpe2Nhc2UidG9wIjpuLmR5PSItMC4zZW0iLGw9cixzPS1yO2JyZWFrO2Nhc2UiY2VudGVyIjpsPWkrcjticmVhaztjYXNlImJvdHRvbSI6bi5keT0iMWVtIixsPXIscz1yfXZhciB1PXRoaXMuX2dlbmVyYXRlVGlja01hcmtBdHRySGFzaCgpO3N3aXRjaCh0aGlzLm9yaWVudGF0aW9uKCkpe2Nhc2UiYm90dG9tIjpuLng9dS54MSxuLmR5PSIwLjk1ZW0iLHM9dS55MStjO2JyZWFrO2Nhc2UidG9wIjpuLng9dS54MSxuLmR5PSItLjI1ZW0iLHM9dS55MS1jO2JyZWFrO2Nhc2UibGVmdCI6bz0iZW5kIixhPXUueDEtbCxuLnk9dS55MTticmVhaztjYXNlInJpZ2h0IjpvPSJzdGFydCIsYT11LngxK2wsbi55PXUueTF9dmFyIGg9dGhpcy5fZ2V0VGlja1ZhbHVlcygpLGQ9dGhpcy5fdGlja0xhYmVsQ29udGFpbmVyLnNlbGVjdEFsbCgiLiIrV3Z0LkF4aXMuVElDS19MQUJFTF9DTEFTUykuZGF0YShoKTtyZXR1cm4gZC5leGl0KCkucmVtb3ZlKCksZC5lbnRlcigpLmFwcGVuZCgidGV4dCIpLmNsYXNzZWQoV3Z0LkF4aXMuVElDS19MQUJFTF9DTEFTUywhMCkubWVyZ2UoZCkuc3R5bGUoInRleHQtYW5jaG9yIixvKS5zdHlsZSgidmlzaWJpbGl0eSIsImluaGVyaXQiKS5hdHRycyhuKS50ZXh0KChmdW5jdGlvbih0KXtyZXR1cm4gZS5mb3JtYXR0ZXIoKSh0KX0pKSx0aGlzLl90aWNrTGFiZWxDb250YWluZXIuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrYSsiLCAiK3MrIikiKSx0aGlzLl9zaG93QWxsVGlja01hcmtzKCksdGhpcy5zaG93RW5kVGlja0xhYmVscygpfHx0aGlzLl9oaWRlRW5kVGlja0xhYmVscygpLHRoaXMuX2hpZGVPdmVyZmxvd2luZ1RpY2tMYWJlbHMoKSx0aGlzLl9oaWRlT3ZlcmxhcHBpbmdUaWNrTGFiZWxzKCksImNlbnRlciIhPT10aGlzLl90aWNrTGFiZWxQb3NpdGlvbmluZyYmdGhpcy5faGlkZVRpY2tNYXJrc1dpdGhvdXRMYWJlbCgpLHRoaXN9LGUucHJvdG90eXBlLnRpY2tMYWJlbFBvc2l0aW9uPWZ1bmN0aW9uKHQpe2lmKG51bGw9PXQpcmV0dXJuIHRoaXMuX3RpY2tMYWJlbFBvc2l0aW9uaW5nO3ZhciBlPXQudG9Mb3dlckNhc2UoKTtpZih0aGlzLmlzSG9yaXpvbnRhbCgpKXtpZigibGVmdCIhPT1lJiYiY2VudGVyIiE9PWUmJiJyaWdodCIhPT1lKXRocm93IG5ldyBFcnJvcihlKyIgaXMgbm90IGEgdmFsaWQgdGljayBsYWJlbCBwb3NpdGlvbiBmb3IgYSBob3Jpem9udGFsIE51bWVyaWNBeGlzIil9ZWxzZSBpZigidG9wIiE9PWUmJiJjZW50ZXIiIT09ZSYmImJvdHRvbSIhPT1lKXRocm93IG5ldyBFcnJvcihlKyIgaXMgbm90IGEgdmFsaWQgdGljayBsYWJlbCBwb3NpdGlvbiBmb3IgYSB2ZXJ0aWNhbCBOdW1lcmljQXhpcyIpO3JldHVybiB0aGlzLl90aWNrTGFiZWxQb3NpdGlvbmluZz1lLHRoaXMucmVkcmF3KCksdGhpc30sZS5wcm90b3R5cGUudXNlc1RleHRXaWR0aEFwcHJveGltYXRpb249ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5fdXNlc1RleHRXaWR0aEFwcHJveGltYXRpb246KHRoaXMuX3VzZXNUZXh0V2lkdGhBcHByb3hpbWF0aW9uPXQsdGhpcyl9LGUucHJvdG90eXBlLl9oaWRlRW5kVGlja0xhYmVscz1mdW5jdGlvbigpe3ZhciB0PXRoaXMuZWxlbWVudCgpLm5vZGUoKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxlPXRoaXMuX3RpY2tMYWJlbENvbnRhaW5lci5zZWxlY3RBbGwoIi4iK1d2dC5BeGlzLlRJQ0tfTEFCRUxfQ0xBU1MpO2lmKDAhPT1lLnNpemUoKSl7dmFyIG49ZS5ub2RlcygpWzBdO0d2dC5ET00uY2xpZW50UmVjdEluc2lkZShuLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHQpfHxWdnQuc2VsZWN0KG4pLnN0eWxlKCJ2aXNpYmlsaXR5IiwiaGlkZGVuIik7dmFyIGk9ZS5ub2RlcygpW2Uuc2l6ZSgpLTFdO0d2dC5ET00uY2xpZW50UmVjdEluc2lkZShpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHQpfHxWdnQuc2VsZWN0KGkpLnN0eWxlKCJ2aXNpYmlsaXR5IiwiaGlkZGVuIil9fSxlLnByb3RvdHlwZS5faGlkZU92ZXJsYXBwaW5nVGlja0xhYmVscz1mdW5jdGlvbigpe2Zvcih2YXIgdD10aGlzLl90aWNrTGFiZWxDb250YWluZXIuc2VsZWN0QWxsKCIuIitXdnQuQXhpcy5USUNLX0xBQkVMX0NMQVNTKS5maWx0ZXIoKGZ1bmN0aW9uKHQsZSl7dmFyIG49VnZ0LnNlbGVjdCh0aGlzKS5zdHlsZSgidmlzaWJpbGl0eSIpO3JldHVybiJpbmhlcml0Ij09PW58fCJ2aXNpYmxlIj09PW59KSksZT10Lm5vZGVzKCkubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKX0pKSxuPTE7IXRoaXMuX2hhc092ZXJsYXBXaXRoSW50ZXJ2YWwobixlKSYmbjxlLmxlbmd0aDspbis9MTt0LmVhY2goKGZ1bmN0aW9uKHQsZSl7dmFyIGk9VnZ0LnNlbGVjdCh0aGlzKTtlJW4hPTAmJmkuc3R5bGUoInZpc2liaWxpdHkiLCJoaWRkZW4iKX0pKX0sZS5wcm90b3R5cGUuX2hhc092ZXJsYXBXaXRoSW50ZXJ2YWw9ZnVuY3Rpb24odCxlKXtmb3IodmFyIG49ImNlbnRlciI9PT10aGlzLl90aWNrTGFiZWxQb3NpdGlvbmluZz90aGlzLnRpY2tMYWJlbFBhZGRpbmcoKTozKnRoaXMudGlja0xhYmVsUGFkZGluZygpLGk9ZS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBHdnQuRE9NLmV4cGFuZFJlY3QodCxuKX0pKSxyPTA7cjxpLmxlbmd0aC10O3IrPXQpe2lmKEd2dC5ET00uY2xpZW50UmVjdHNPdmVybGFwKGlbcl0saVtyK3RdKSlyZXR1cm4hMX1yZXR1cm4hMH0sZS5wcm90b3R5cGUuaW52YWxpZGF0ZUNhY2hlPWZ1bmN0aW9uKCl7dC5wcm90b3R5cGUuaW52YWxpZGF0ZUNhY2hlLmNhbGwodGhpcyksdGhpcy5fbWVhc3VyZXIucmVzZXQoKX0sZX0pKFd2dC5BeGlzKTtIdnQuTnVtZXJpYz1xdnQ7dmFyIFl2dD17fSxYdnQ9e30sJHZ0PXt9OwovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqLwpPYmplY3QuZGVmaW5lUHJvcGVydHkoJHZ0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgS3Z0PURfdDskdnQuaW50ZXJ2YWxUaWNrR2VuZXJhdG9yPWZ1bmN0aW9uIFp2dCh0KXtpZih0PD0wKXRocm93IG5ldyBFcnJvcigiaW50ZXJ2YWwgbXVzdCBiZSBwb3NpdGl2ZSBudW1iZXIiKTtyZXR1cm4gZnVuY3Rpb24oZSl7dmFyIG49ZS5kb21haW4oKSxpPU1hdGgubWluKG5bMF0sblsxXSkscj1NYXRoLm1heChuWzBdLG5bMV0pLG89TWF0aC5jZWlsKGkvdCkqdCxhPU1hdGguZmxvb3IoKHItbykvdCkrMSxzPWkldD09MD9bXTpbaV0sbD1LdnQuTWF0aC5yYW5nZSgwLGEpLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIG8rZSp0fSkpLGM9ciV0PT0wP1tdOltyXTtyZXR1cm4gcy5jb25jYXQobCkuY29uY2F0KGMpfX0sJHZ0LmludGVnZXJUaWNrR2VuZXJhdG9yPWZ1bmN0aW9uIEp2dCgpe3JldHVybiBmdW5jdGlvbih0KXt2YXIgZT10LmRlZmF1bHRUaWNrcygpO3JldHVybiBlLmZpbHRlcigoZnVuY3Rpb24odCxuKXtyZXR1cm4gdCUxPT0wfHwwPT09bnx8bj09PWUubGVuZ3RoLTF9KSl9fTt2YXIgUXZ0PXt9LHRidD17fTtmdW5jdGlvbiBlYnQodCxlLG4pe3JldHVybiBuLShuLXQpKmV9ZnVuY3Rpb24gbmJ0KHQsZSxuKXtyZXR1cm4odCplLW4pLyhlLTEpfWZ1bmN0aW9uIGlidCh0LGUsbixpKXt2YXIgcj1lPjEsbz1yP2k6bjtpZihudWxsPT1vKXJldHVybiBlO3ZhciBhPXQuZ2V0VHJhbnNmb3JtYXRpb25Eb21haW4oKSxzPU1hdGguYWJzKGFbMV0tYVswXSk7cmV0dXJuKHI/TWF0aC5taW46TWF0aC5tYXgpKGUsby9zKX1mdW5jdGlvbiByYnQodCxlLG4saSxyKXtpZihlPD0xKXJldHVybntjZW50ZXJQb2ludDpuLHpvb21BbW91bnQ6ZX07aWYobnVsbD09aSYmbnVsbD09cilyZXR1cm57Y2VudGVyUG9pbnQ6bix6b29tQW1vdW50OmV9O3ZhciBvPW9idCh0KSxhPShmdW5jdGlvbiBzKHQpe3ZhciBlPXQuZ2V0VHJhbnNmb3JtYXRpb25Eb21haW4oKTtyZXR1cm4gZVsxXTxlWzBdfSkodCk7aT1udWxsPT1pP2E/MS8wOi0xLzA6aSxyPW51bGw9PXI/YT8tMS8wOjEvMDpyO3ZhciBsPXQuZ2V0VHJhbnNmb3JtYXRpb25Eb21haW4oKSxjPWxbMF0sdT1sWzFdLGg9dC5zY2FsZVRyYW5zZm9ybWF0aW9uKHIpLGQ9dC5zY2FsZVRyYW5zZm9ybWF0aW9uKHUpLHA9ZWJ0KGQsZSxuKSxmPXQuc2NhbGVUcmFuc2Zvcm1hdGlvbihpKSxtPXQuc2NhbGVUcmFuc2Zvcm1hdGlvbihjKSxnPWVidChtLGUsbiksXz1NYXRoLmFicyhoLWYpO2lmKE1hdGguYWJzKHAtZyk+Xyl7dmFyIHk9KGgtZikvKGQtbSk7cmV0dXJuIDEhPT15P3tjZW50ZXJQb2ludDpuYnQoZCx5LGgpLHpvb21BbW91bnQ6eX06e2NlbnRlclBvaW50Om4sem9vbUFtb3VudDp5fX1yZXR1cm4gcD5oIT1vP3tjZW50ZXJQb2ludDpuYnQoZCxlLGgpLHpvb21BbW91bnQ6ZX06ZzxmIT1vP3tjZW50ZXJQb2ludDpuYnQobSxlLGYpLHpvb21BbW91bnQ6ZX06e2NlbnRlclBvaW50Om4sem9vbUFtb3VudDplfX1mdW5jdGlvbiBvYnQodCl7dmFyIGU9dC5yYW5nZSgpO3JldHVybiBlWzFdPGVbMF19Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTctcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovCk9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YnQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLHRidC56b29tT3V0PWVidCx0YnQuY29uc3RyYWluZWRab29tPWZ1bmN0aW9uIGFidCh0LGUsbixpLHIsbyxhKXtyZXR1cm4gcmJ0KHQsZT1pYnQodCxlLGksciksbixvLGEpfSx0YnQuY29uc3RyYWluWm9vbUV4dGVudHM9aWJ0LHRidC5jb25zdHJhaW5ab29tVmFsdWVzPXJidCx0YnQuY29uc3RyYWluZWRUcmFuc2xhdGlvbj1mdW5jdGlvbiBzYnQodCxlLG4saSl7dmFyIHIsbz10LmdldFRyYW5zZm9ybWF0aW9uRG9tYWluKCksYT1vWzBdLHM9b1sxXSxsPW9idCh0KTtpZihlPjAhPT1sKXtpZihudWxsIT0ocj1pKSl7dmFyIGM9dC5zY2FsZVRyYW5zZm9ybWF0aW9uKHMpLHU9dC5zY2FsZVRyYW5zZm9ybWF0aW9uKHIpO2U9KGw/TWF0aC5tYXg6TWF0aC5taW4pKGMrZSx1KS1jfX1lbHNlIGlmKG51bGwhPShyPW4pKXt2YXIgaD10LnNjYWxlVHJhbnNmb3JtYXRpb24oYSksZD10LnNjYWxlVHJhbnNmb3JtYXRpb24ocik7ZT0obD9NYXRoLm1pbjpNYXRoLm1heCkoaCtlLGQpLWh9cmV0dXJuIGV9O3ZhciBsYnQ9e307Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovT2JqZWN0LmRlZmluZVByb3BlcnR5KGxidCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIGNidD1EX3QsdWJ0PShmdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt0aGlzLl9hdXRvRG9tYWluQXV0b21hdGljYWxseT0hMCx0aGlzLl9kb21haW5Nb2RpZmljYXRpb25JblByb2dyZXNzPSExLHRoaXMuX3VwZGF0ZUlkPTAsdGhpcy5fY2FsbGJhY2tzPW5ldyBjYnQuQ2FsbGJhY2tTZXQsdGhpcy5faW5jbHVkZWRWYWx1ZXNQcm92aWRlcnM9bmV3IGNidC5TZXR9cmV0dXJuIHQucHJvdG90eXBlLmV4dGVudE9mVmFsdWVzPWZ1bmN0aW9uKHQpe3JldHVybltdfSx0LnByb3RvdHlwZS5fZ2V0QWxsSW5jbHVkZWRWYWx1ZXM9ZnVuY3Rpb24odCl7dmFyIGU9dGhpczt2b2lkIDA9PT10JiYodD0hMSk7dmFyIG49W107cmV0dXJuIHRoaXMuX2luY2x1ZGVkVmFsdWVzUHJvdmlkZXJzLmZvckVhY2goKGZ1bmN0aW9uKGkpe3ZhciByPWkoZSx0KTtuPW4uY29uY2F0KHIpfSkpLG59LHQucHJvdG90eXBlLl9nZXRFeHRlbnQ9ZnVuY3Rpb24oKXtyZXR1cm5bXX0sdC5wcm90b3R5cGUub25VcGRhdGU9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2NhbGxiYWNrcy5hZGQodCksdGhpc30sdC5wcm90b3R5cGUub2ZmVXBkYXRlPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9jYWxsYmFja3MuZGVsZXRlKHQpLHRoaXN9LHQucHJvdG90eXBlLl9kaXNwYXRjaFVwZGF0ZT1mdW5jdGlvbigpe3RoaXMuX3VwZGF0ZUlkKyssdGhpcy5fY2FsbGJhY2tzLmNhbGxDYWxsYmFja3ModGhpcyl9LHQucHJvdG90eXBlLmF1dG9Eb21haW49ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYXV0b0RvbWFpbkF1dG9tYXRpY2FsbHk9ITAsdGhpcy5fc2V0RG9tYWluKHRoaXMuX2dldEV4dGVudCgpKSx0aGlzfSx0LnByb3RvdHlwZS5hdXRvRG9tYWluSWZBdXRvbWF0aWNNb2RlPWZ1bmN0aW9uKCl7dGhpcy5fYXV0b0RvbWFpbkF1dG9tYXRpY2FsbHkmJnRoaXMuYXV0b0RvbWFpbigpfSx0LnByb3RvdHlwZS5zY2FsZT1mdW5jdGlvbih0KXt0aHJvdyBuZXcgRXJyb3IoIlN1YmNsYXNzZXMgc2hvdWxkIG92ZXJyaWRlIHNjYWxlIil9LHQucHJvdG90eXBlLnRpY2tzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZG9tYWluKCl9LHQucHJvdG90eXBlLmRvbWFpbj1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9nZXREb21haW4oKToodGhpcy5fYXV0b0RvbWFpbkF1dG9tYXRpY2FsbHk9ITEsdGhpcy5fc2V0RG9tYWluKHQpLHRoaXMpfSx0LnByb3RvdHlwZS5fZ2V0RG9tYWluPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCJTdWJjbGFzc2VzIHNob3VsZCBvdmVycmlkZSBfZ2V0RG9tYWluIil9LHQucHJvdG90eXBlLl9zZXREb21haW49ZnVuY3Rpb24odCl7dGhpcy5fZG9tYWluTW9kaWZpY2F0aW9uSW5Qcm9ncmVzc3x8KHRoaXMuX2RvbWFpbk1vZGlmaWNhdGlvbkluUHJvZ3Jlc3M9ITAsdGhpcy5fYmFja2luZ1NjYWxlRG9tYWluKHQpLHRoaXMuX2Rpc3BhdGNoVXBkYXRlKCksdGhpcy5fZG9tYWluTW9kaWZpY2F0aW9uSW5Qcm9ncmVzcz0hMSl9LHQucHJvdG90eXBlLl9iYWNraW5nU2NhbGVEb21haW49ZnVuY3Rpb24odCl7dGhyb3cgbmV3IEVycm9yKCJTdWJjbGFzc2VzIHNob3VsZCBvdmVycmlkZSBfYmFja2luZ0RvbWFpbiIpfSx0LnByb3RvdHlwZS5yYW5nZT1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9nZXRSYW5nZSgpOih0aGlzLl9zZXRSYW5nZSh0KSx0aGlzKX0sdC5wcm90b3R5cGUuX2dldFJhbmdlPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCJTdWJjbGFzc2VzIHNob3VsZCBvdmVycmlkZSBfZ2V0UmFuZ2UiKX0sdC5wcm90b3R5cGUuX3NldFJhbmdlPWZ1bmN0aW9uKHQpe3Rocm93IG5ldyBFcnJvcigiU3ViY2xhc3NlcyBzaG91bGQgb3ZlcnJpZGUgX3NldFJhbmdlIil9LHQucHJvdG90eXBlLmFkZEluY2x1ZGVkVmFsdWVzUHJvdmlkZXI9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2luY2x1ZGVkVmFsdWVzUHJvdmlkZXJzLmFkZCh0KSx0aGlzLmF1dG9Eb21haW5JZkF1dG9tYXRpY01vZGUoKSx0aGlzfSx0LnByb3RvdHlwZS5yZW1vdmVJbmNsdWRlZFZhbHVlc1Byb3ZpZGVyPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9pbmNsdWRlZFZhbHVlc1Byb3ZpZGVycy5kZWxldGUodCksdGhpcy5hdXRvRG9tYWluSWZBdXRvbWF0aWNNb2RlKCksdGhpc30sdC5wcm90b3R5cGUudXBkYXRlSWQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fdXBkYXRlSWR9LHR9KSgpO2xidC5TY2FsZT11YnQsCi8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovCk9iamVjdC5kZWZpbmVQcm9wZXJ0eShRdnQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBoYnQ9Qk8sZGJ0PXdwdCxwYnQ9dGJ0LGZidD1EX3QsbWJ0PVswLDFdLGdidD0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3ZhciBuPXQuY2FsbCh0aGlzKXx8dGhpcztuLl9yYW5nZT1bMCwxXSxuLl9kM1NjYWxlPWRidC5zY2FsZUJhbmQoKSxuLl9kM1NjYWxlLnJhbmdlKG1idCksbi5fZDNUcmFuc2Zvcm1hdGlvblNjYWxlPWRidC5zY2FsZUxpbmVhcigpLG4uX2QzVHJhbnNmb3JtYXRpb25TY2FsZS5kb21haW4obWJ0KTtyZXR1cm4gbi5faW5uZXJQYWRkaW5nPWUuX2NvbnZlcnRUb1Bsb3R0YWJsZUlubmVyUGFkZGluZyguMyksbi5fb3V0ZXJQYWRkaW5nPWUuX2NvbnZlcnRUb1Bsb3R0YWJsZU91dGVyUGFkZGluZyguNSwuMyksbn1yZXR1cm4gaGJ0Ll9fZXh0ZW5kcyhlLHQpLGUucHJvdG90eXBlLmNsb25lV2l0aG91dFByb3ZpZGVycz1mdW5jdGlvbigpe3ZhciB0PShuZXcgZSkuZG9tYWluKHRoaXMuZG9tYWluKCkpLnJhbmdlKHRoaXMucmFuZ2UoKSkuaW5uZXJQYWRkaW5nKHRoaXMuaW5uZXJQYWRkaW5nKCkpLm91dGVyUGFkZGluZyh0aGlzLm91dGVyUGFkZGluZygpKTtyZXR1cm4gdC5fZDNUcmFuc2Zvcm1hdGlvblNjYWxlLmRvbWFpbih0aGlzLl9kM1RyYW5zZm9ybWF0aW9uU2NhbGUuZG9tYWluKCkpLHR9LGUucHJvdG90eXBlLmV4dGVudE9mVmFsdWVzPWZ1bmN0aW9uKHQpe3JldHVybiBmYnQuQXJyYXkudW5pcSh0KX0sZS5wcm90b3R5cGUuX2dldEV4dGVudD1mdW5jdGlvbigpe3JldHVybiBmYnQuQXJyYXkudW5pcSh0aGlzLl9nZXRBbGxJbmNsdWRlZFZhbHVlcygpKX0sZS5wcm90b3R5cGUuZG9tYWluPWZ1bmN0aW9uKGUpe3JldHVybiB0LnByb3RvdHlwZS5kb21haW4uY2FsbCh0aGlzLGUpfSxlLnByb3RvdHlwZS5pbnZlcnRSYW5nZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzO3ZvaWQgMD09PXQmJih0PXRoaXMucmFuZ2UoKSk7dmFyIG49dGhpcy5fZDNTY2FsZS5iYW5kd2lkdGgoKSxpPXRoaXMuaW52ZXJ0ZWRUcmFuc2Zvcm1hdGlvbih0WzBdKSxyPXRoaXMuaW52ZXJ0ZWRUcmFuc2Zvcm1hdGlvbih0WzFdKSxvPXRoaXMuX2QzU2NhbGUuZG9tYWluKCksYT1vLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIGUuX2QzU2NhbGUodCkrbi8yfSkpLHM9ZGJ0LmJpc2VjdChhLGkpLGw9ZGJ0LmJpc2VjdChhLHIpO3JldHVybiBvLnNsaWNlKHMsbCl9LGUucHJvdG90eXBlLnJhbmdlPWZ1bmN0aW9uKGUpe3JldHVybiB0LnByb3RvdHlwZS5yYW5nZS5jYWxsKHRoaXMsZSl9LGUuX2NvbnZlcnRUb1Bsb3R0YWJsZUlubmVyUGFkZGluZz1mdW5jdGlvbih0KXtyZXR1cm4gMS8oMS10KS0xfSxlLl9jb252ZXJ0VG9QbG90dGFibGVPdXRlclBhZGRpbmc9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC8oMS1lKX0sZS5wcm90b3R5cGUuX3NldEJhbmRzPWZ1bmN0aW9uKCl7dmFyIHQ9MS0xLygxK3RoaXMuaW5uZXJQYWRkaW5nKCkpLGU9dGhpcy5vdXRlclBhZGRpbmcoKS8oMSt0aGlzLmlubmVyUGFkZGluZygpKTt0aGlzLl9kM1NjYWxlLnBhZGRpbmdJbm5lcih0KSx0aGlzLl9kM1NjYWxlLnBhZGRpbmdPdXRlcihlKX0sZS5wcm90b3R5cGUucmFuZ2VCYW5kPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3Jlc2NhbGVCYW5kKHRoaXMuX2QzU2NhbGUuYmFuZHdpZHRoKCkpfSxlLnByb3RvdHlwZS5zdGVwV2lkdGg9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcmVzY2FsZUJhbmQodGhpcy5fZDNTY2FsZS5iYW5kd2lkdGgoKSooMSt0aGlzLmlubmVyUGFkZGluZygpKSl9LGUucHJvdG90eXBlLnRpY2tzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZG9tYWluKCl9LGUucHJvdG90eXBlLmlubmVyUGFkZGluZz1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9pbm5lclBhZGRpbmc6KHRoaXMuX2lubmVyUGFkZGluZz10LHRoaXMucmFuZ2UodGhpcy5yYW5nZSgpKSx0aGlzLl9kaXNwYXRjaFVwZGF0ZSgpLHRoaXMpfSxlLnByb3RvdHlwZS5vdXRlclBhZGRpbmc9ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5fb3V0ZXJQYWRkaW5nOih0aGlzLl9vdXRlclBhZGRpbmc9dCx0aGlzLnJhbmdlKHRoaXMucmFuZ2UoKSksdGhpcy5fZGlzcGF0Y2hVcGRhdGUoKSx0aGlzKX0sZS5wcm90b3R5cGUuc2NhbGU9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fZDNTY2FsZSh0KSt0aGlzLl9kM1NjYWxlLmJhbmR3aWR0aCgpLzI7cmV0dXJuIHRoaXMuX2QzVHJhbnNmb3JtYXRpb25TY2FsZShlKX0sZS5wcm90b3R5cGUuem9vbT1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXM7dGhpcy5fZDNUcmFuc2Zvcm1hdGlvblNjYWxlLmRvbWFpbih0aGlzLl9kM1RyYW5zZm9ybWF0aW9uU2NhbGUucmFuZ2UoKS5tYXAoKGZ1bmN0aW9uKGkpe3JldHVybiBuLl9kM1RyYW5zZm9ybWF0aW9uU2NhbGUuaW52ZXJ0KHBidC56b29tT3V0KGksdCxlKSl9KSkpLHRoaXMuX2Rpc3BhdGNoVXBkYXRlKCl9LGUucHJvdG90eXBlLnBhbj1mdW5jdGlvbih0KXt2YXIgZT10aGlzO3RoaXMuX2QzVHJhbnNmb3JtYXRpb25TY2FsZS5kb21haW4odGhpcy5fZDNUcmFuc2Zvcm1hdGlvblNjYWxlLnJhbmdlKCkubWFwKChmdW5jdGlvbihuKXtyZXR1cm4gZS5fZDNUcmFuc2Zvcm1hdGlvblNjYWxlLmludmVydChuK3QpfSkpKSx0aGlzLl9kaXNwYXRjaFVwZGF0ZSgpfSxlLnByb3RvdHlwZS5zY2FsZVRyYW5zZm9ybWF0aW9uPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9kM1RyYW5zZm9ybWF0aW9uU2NhbGUodCl9LGUucHJvdG90eXBlLmludmVydGVkVHJhbnNmb3JtYXRpb249ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2QzVHJhbnNmb3JtYXRpb25TY2FsZS5pbnZlcnQodCl9LGUucHJvdG90eXBlLmdldFRyYW5zZm9ybWF0aW9uRXh0ZW50PWZ1bmN0aW9uKCl7cmV0dXJuIG1idH0sZS5wcm90b3R5cGUuZ2V0VHJhbnNmb3JtYXRpb25Eb21haW49ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZDNUcmFuc2Zvcm1hdGlvblNjYWxlLmRvbWFpbigpfSxlLnByb3RvdHlwZS5zZXRUcmFuc2Zvcm1hdGlvbkRvbWFpbj1mdW5jdGlvbih0KXt0aGlzLl9kM1RyYW5zZm9ybWF0aW9uU2NhbGUuZG9tYWluKHQpLHRoaXMuX2Rpc3BhdGNoVXBkYXRlKCl9LGUucHJvdG90eXBlLl9nZXREb21haW49ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYmFja2luZ1NjYWxlRG9tYWluKCl9LGUucHJvdG90eXBlLl9iYWNraW5nU2NhbGVEb21haW49ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5fZDNTY2FsZS5kb21haW4oKToodGhpcy5fZDNTY2FsZS5kb21haW4odCksdGhpcy5fc2V0QmFuZHMoKSx0aGlzKX0sZS5wcm90b3R5cGUuX2dldFJhbmdlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3JhbmdlfSxlLnByb3RvdHlwZS5fc2V0UmFuZ2U9ZnVuY3Rpb24odCl7dGhpcy5fcmFuZ2U9dCx0aGlzLl9kM1RyYW5zZm9ybWF0aW9uU2NhbGUucmFuZ2UodCksdGhpcy5fc2V0QmFuZHMoKX0sZS5wcm90b3R5cGUuX3Jlc2NhbGVCYW5kPWZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLmFicyh0aGlzLl9kM1RyYW5zZm9ybWF0aW9uU2NhbGUodCktdGhpcy5fZDNUcmFuc2Zvcm1hdGlvblNjYWxlKDApKX0sZX0pKGxidC5TY2FsZSk7UXZ0LkNhdGVnb3J5PWdidDt2YXIgX2J0PXt9OwovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqL09iamVjdC5kZWZpbmVQcm9wZXJ0eShfYnQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciB5YnQ9Qk8sdmJ0PXdwdCxiYnQ9RF90LHhidD1sYnQsd2J0PShmdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt0aGlzLmNvdW50PTAsdGhpcy50cmFja2VyPXt9fXJldHVybiB0LnByb3RvdHlwZS5nZXRJbmRleD1mdW5jdGlvbih0KXtpZihudWxsIT10aGlzLnRyYWNrZXJbdF0pcmV0dXJuIHRoaXMudHJhY2tlclt0XTt2YXIgZT10aGlzLmNvdW50O3JldHVybiB0aGlzLnRyYWNrZXJbdF09ZSx0aGlzLmNvdW50Kz0xLGV9LHQucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7dGhpcy5jb3VudD0wLHRoaXMudHJhY2tlcj17fX0sdH0pKCksU2J0PShmdW5jdGlvbih0KXtmdW5jdGlvbiBlKG4pe3ZhciBpLHI9dC5jYWxsKHRoaXMpfHx0aGlzO3N3aXRjaChyLl9yYW5nZUxlbmd0aD0xLHIuX3RyYWNrZXI9bmV3IHdidCxuKXtjYXNlIG51bGw6Y2FzZSB2b2lkIDA6bnVsbD09ZS5fcGxvdHRhYmxlQ29sb3JDYWNoZSYmKGUuX3Bsb3R0YWJsZUNvbG9yQ2FjaGU9ZS5fZ2V0UGxvdHRhYmxlQ29sb3JzKCkpLGk9dmJ0LnNjYWxlT3JkaW5hbCgpLnJhbmdlKGUuX3Bsb3R0YWJsZUNvbG9yQ2FjaGUpO2JyZWFrO2Nhc2UiQ2F0ZWdvcnkxMCI6Y2FzZSJjYXRlZ29yeTEwIjpjYXNlIjEwIjppPXZidC5zY2FsZU9yZGluYWwodmJ0LnNjaGVtZUNhdGVnb3J5MTApO2JyZWFrO2Nhc2UiQ2F0ZWdvcnkyMCI6Y2FzZSJjYXRlZ29yeTIwIjpjYXNlIjIwIjppPXZidC5zY2FsZU9yZGluYWwodmJ0LnNjaGVtZUNhdGVnb3J5MjApO2JyZWFrO2Nhc2UiQ2F0ZWdvcnkyMGIiOmNhc2UiY2F0ZWdvcnkyMGIiOmNhc2UiMjBiIjppPXZidC5zY2FsZU9yZGluYWwodmJ0LnNjaGVtZUNhdGVnb3J5MjBiKTticmVhaztjYXNlIkNhdGVnb3J5MjBjIjpjYXNlImNhdGVnb3J5MjBjIjpjYXNlIjIwYyI6aT12YnQuc2NhbGVPcmRpbmFsKHZidC5zY2hlbWVDYXRlZ29yeTIwYyk7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIlVuc3VwcG9ydGVkIENvbG9yU2NhbGUgdHlwZSIpfXJldHVybiByLl9kM1NjYWxlPWksci5fcmFuZ2VMZW5ndGg9ci5fZDNTY2FsZS5yYW5nZSgpLmxlbmd0aCxyfXJldHVybiB5YnQuX19leHRlbmRzKGUsdCksZS5wcm90b3R5cGUuZXh0ZW50T2ZWYWx1ZXM9ZnVuY3Rpb24odCl7cmV0dXJuIGJidC5BcnJheS51bmlxKHQpfSxlLnByb3RvdHlwZS5fZ2V0RXh0ZW50PWZ1bmN0aW9uKCl7cmV0dXJuIGJidC5BcnJheS51bmlxKHRoaXMuX2dldEFsbEluY2x1ZGVkVmFsdWVzKCkpfSxlLmludmFsaWRhdGVDb2xvckNhY2hlPWZ1bmN0aW9uKCl7ZS5fcGxvdHRhYmxlQ29sb3JDYWNoZT1udWxsfSxlLl9nZXRQbG90dGFibGVDb2xvcnM9ZnVuY3Rpb24oKXtmb3IodmFyIHQ9W10sZT12YnQuc2VsZWN0KCJib2R5IikuYXBwZW5kKCJwbG90dGFibGUtY29sb3ItdGVzdGVyIiksbj1iYnQuQ29sb3IuY29sb3JUZXN0KGUsIiIpLGk9MCxyPWJidC5Db2xvci5jb2xvclRlc3QoZSwicGxvdHRhYmxlLWNvbG9ycy0wIik7bnVsbCE9ciYmaTx0aGlzLl9NQVhJTVVNX0NPTE9SU19GUk9NX0NTUyYmKHIhPT1ufHxyIT09dFt0Lmxlbmd0aC0xXSk7KXQucHVzaChyKSxpKysscj1iYnQuQ29sb3IuY29sb3JUZXN0KGUsInBsb3R0YWJsZS1jb2xvcnMtIitpKTtyZXR1cm4gZS5yZW1vdmUoKSx0fSxlLnByb3RvdHlwZS5zY2FsZT1mdW5jdGlvbih0KXt2YXIgbj10aGlzLl9kM1NjYWxlKHQpLGk9dGhpcy5fdHJhY2tlci5nZXRJbmRleCh0KSxyPU1hdGguZmxvb3IoaS90aGlzLl9yYW5nZUxlbmd0aCk7aWYoMD09PXIpcmV0dXJuIG47dmFyIG89TWF0aC5sb2cociplLl9MT09QX0xJR0hURU5fRkFDVE9SKzEpO3JldHVybiBiYnQuQ29sb3IubGlnaHRlbkNvbG9yKG4sbyl9LGUucHJvdG90eXBlLl9nZXREb21haW49ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYmFja2luZ1NjYWxlRG9tYWluKCl9LGUucHJvdG90eXBlLl9iYWNraW5nU2NhbGVEb21haW49ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5fZDNTY2FsZS5kb21haW4oKToodGhpcy5fZDNTY2FsZS5kb21haW4odCksdGhpcy5fdHJhY2tlci5jbGVhcigpLHRoaXMpfSxlLnByb3RvdHlwZS5fZ2V0UmFuZ2U9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZDNTY2FsZS5yYW5nZSgpfSxlLnByb3RvdHlwZS5fc2V0UmFuZ2U9ZnVuY3Rpb24odCl7dGhpcy5fZDNTY2FsZS5yYW5nZSh0KSx0aGlzLl9yYW5nZUxlbmd0aD10Lmxlbmd0aH0sZS5fTE9PUF9MSUdIVEVOX0ZBQ1RPUj0xLjYsZS5fTUFYSU1VTV9DT0xPUlNfRlJPTV9DU1M9MjU2LGV9KSh4YnQuU2NhbGUpO19idC5Db2xvcj1TYnQ7dmFyIE1idD17fTsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi9PYmplY3QuZGVmaW5lUHJvcGVydHkoTWJ0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgRWJ0PUJPLFRidD13cHQsQ2J0PURfdCxBYnQ9KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUobil7dm9pZCAwPT09biYmKG49ImxpbmVhciIpO3ZhciBpPXQuY2FsbCh0aGlzKXx8dGhpcztzd2l0Y2gobil7Y2FzZSJsaW5lYXIiOmkuX2NvbG9yU2NhbGU9VGJ0LnNjYWxlTGluZWFyKCk7YnJlYWs7Y2FzZSJsb2ciOmkuX2NvbG9yU2NhbGU9VGJ0LnNjYWxlTG9nKCk7YnJlYWs7Y2FzZSJzcXJ0IjppLl9jb2xvclNjYWxlPVRidC5zY2FsZVNxcnQoKTticmVhaztjYXNlInBvdyI6aS5fY29sb3JTY2FsZT1UYnQuc2NhbGVQb3coKX1pZihudWxsPT1pLl9jb2xvclNjYWxlKXRocm93IG5ldyBFcnJvcigidW5rbm93biBRdWFudGl0YXRpdmVTY2FsZSBzY2FsZSB0eXBlICIrbik7cmV0dXJuIGkucmFuZ2UoZS5SRURTKSxpfXJldHVybiBFYnQuX19leHRlbmRzKGUsdCksZS5wcm90b3R5cGUuZXh0ZW50T2ZWYWx1ZXM9ZnVuY3Rpb24odCl7dmFyIGU9VGJ0LmV4dGVudCh0KTtyZXR1cm4gbnVsbD09ZVswXXx8bnVsbD09ZVsxXT9bXTplfSxlLnByb3RvdHlwZS5fZDNJbnRlcnBvbGF0ZWRTY2FsZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9jb2xvclNjYWxlLnJhbmdlKFswLDFdKS5pbnRlcnBvbGF0ZSh0aGlzLl9pbnRlcnBvbGF0ZUNvbG9ycygpKX0sZS5wcm90b3R5cGUuX2ludGVycG9sYXRlQ29sb3JzPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fY29sb3JSYW5nZTtpZih0Lmxlbmd0aDwyKXRocm93IG5ldyBFcnJvcigiQ29sb3Igc2NhbGUgYXJyYXlzIG11c3QgaGF2ZSBhdCBsZWFzdCB0d28gZWxlbWVudHMuIik7cmV0dXJuIGZ1bmN0aW9uKGUsbil7cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciBuPShlPU1hdGgubWF4KDAsTWF0aC5taW4oMSxlKSkpKih0Lmxlbmd0aC0xKSxpPU1hdGguZmxvb3Iobikscj1NYXRoLmNlaWwobiksbz1uLWk7cmV0dXJuIFRidC5pbnRlcnBvbGF0ZUxhYih0W2ldLHRbcl0pKG8pfX19LGUucHJvdG90eXBlLl9yZXNldFNjYWxlPWZ1bmN0aW9uKCl7dGhpcy5fZDNTY2FsZT10aGlzLl9kM0ludGVycG9sYXRlZFNjYWxlKCksdGhpcy5hdXRvRG9tYWluSWZBdXRvbWF0aWNNb2RlKCksdGhpcy5fZGlzcGF0Y2hVcGRhdGUoKX0sZS5wcm90b3R5cGUuYXV0b0RvbWFpbj1mdW5jdGlvbigpe3ZhciB0PXRoaXMuX2dldEFsbEluY2x1ZGVkVmFsdWVzKCk7cmV0dXJuIHQubGVuZ3RoPjAmJnRoaXMuX3NldERvbWFpbihbQ2J0Lk1hdGgubWluKHQsMCksQ2J0Lk1hdGgubWF4KHQsMCldKSx0aGlzfSxlLnByb3RvdHlwZS5zY2FsZT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fZDNTY2FsZSh0KX0sZS5wcm90b3R5cGUuX2dldERvbWFpbj1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9iYWNraW5nU2NhbGVEb21haW4oKX0sZS5wcm90b3R5cGUuX2JhY2tpbmdTY2FsZURvbWFpbj1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9kM1NjYWxlLmRvbWFpbigpOih0aGlzLl9kM1NjYWxlLmRvbWFpbih0KSx0aGlzKX0sZS5wcm90b3R5cGUuX2dldFJhbmdlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2NvbG9yUmFuZ2V9LGUucHJvdG90eXBlLl9zZXRSYW5nZT1mdW5jdGlvbih0KXt0aGlzLl9jb2xvclJhbmdlPXQsdGhpcy5fcmVzZXRTY2FsZSgpfSxlLlJFRFM9WyIjRkZGRkZGIiwiI0ZGRjZFMSIsIiNGRUY0QzAiLCIjRkVEOTc2IiwiI0ZFQjI0QyIsIiNGRDhEM0MiLCIjRkM0RTJBIiwiI0UzMUExQyIsIiNCMTAwMjYiXSxlLkJMVUVTPVsiI0ZGRkZGRiIsIiNDQ0ZGRkYiLCIjQTVGRkZEIiwiIzg1RjdGQiIsIiM2RUQzRUYiLCIjNTVBN0UwIiwiIzQxN0ZEMCIsIiMyNTQ1RDMiLCIjMEIwMkUxIl0sZS5QT1NORUc9WyIjMEIwMkUxIiwiIzI1NDVEMyIsIiM0MTdGRDAiLCIjNTVBN0UwIiwiIzZFRDNFRiIsIiM4NUY3RkIiLCIjQTVGRkZEIiwiI0NDRkZGRiIsIiNGRkZGRkYiLCIjRkZGNkUxIiwiI0ZFRjRDMCIsIiNGRUQ5NzYiLCIjRkVCMjRDIiwiI0ZEOEQzQyIsIiNGQzRFMkEiLCIjRTMxQTFDIiwiI0IxMDAyNiJdLGV9KShsYnQuU2NhbGUpO01idC5JbnRlcnBvbGF0ZWRDb2xvcj1BYnQ7dmFyIGtidD17fSxMYnQ9e307Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovCk9iamVjdC5kZWZpbmVQcm9wZXJ0eShMYnQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBQYnQ9Qk8sTmJ0PXdwdCxJYnQ9dGJ0LFJidD1EX3QsT2J0PShmdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7dmFyIGU9dC5jYWxsKHRoaXMpfHx0aGlzO3JldHVybiBlLl90aWNrR2VuZXJhdG9yPWZ1bmN0aW9uKHQpe3JldHVybiB0LmRlZmF1bHRUaWNrcygpfSxlLl9wYWRQcm9wb3J0aW9uPS4wNSxlLl9zbmFwcGluZ0RvbWFpbkVuYWJsZWQ9ITAsZS5fcGFkZGluZ0V4Y2VwdGlvbnNQcm92aWRlcnM9bmV3IFJidC5TZXQsZX1yZXR1cm4gUGJ0Ll9fZXh0ZW5kcyhlLHQpLGUucHJvdG90eXBlLmF1dG9Eb21haW49ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZG9tYWluTWluPW51bGwsdGhpcy5fZG9tYWluTWF4PW51bGwsdC5wcm90b3R5cGUuYXV0b0RvbWFpbi5jYWxsKHRoaXMpLHRoaXN9LGUucHJvdG90eXBlLmF1dG9Eb21haW5JZkF1dG9tYXRpY01vZGU9ZnVuY3Rpb24oKXtpZihudWxsPT10aGlzLl9kb21haW5NaW58fG51bGw9PXRoaXMuX2RvbWFpbk1heCl7dmFyIGU9dGhpcy5fZ2V0RXh0ZW50KCk7aWYobnVsbCE9dGhpcy5fZG9tYWluTWluKXt2YXIgbj1lWzFdO3JldHVybiB0aGlzLl9kb21haW5NaW4+PW4mJihuPXRoaXMuX2V4cGFuZFNpbmdsZVZhbHVlRG9tYWluKFt0aGlzLl9kb21haW5NaW4sdGhpcy5fZG9tYWluTWluXSlbMV0pLHZvaWQgdGhpcy5fc2V0RG9tYWluKFt0aGlzLl9kb21haW5NaW4sbl0pfWlmKG51bGwhPXRoaXMuX2RvbWFpbk1heCl7dmFyIGk9ZVswXTtyZXR1cm4gdGhpcy5fZG9tYWluTWF4PD1pJiYoaT10aGlzLl9leHBhbmRTaW5nbGVWYWx1ZURvbWFpbihbdGhpcy5fZG9tYWluTWF4LHRoaXMuX2RvbWFpbk1heF0pWzBdKSx2b2lkIHRoaXMuX3NldERvbWFpbihbaSx0aGlzLl9kb21haW5NYXhdKX10LnByb3RvdHlwZS5hdXRvRG9tYWluSWZBdXRvbWF0aWNNb2RlLmNhbGwodGhpcyl9ZWxzZSB0aGlzLl9zZXREb21haW4oW3RoaXMuX2RvbWFpbk1pbix0aGlzLl9kb21haW5NYXhdKX0sZS5wcm90b3R5cGUuX2dldFVuYm91bmRlZEV4dGVudD1mdW5jdGlvbih0KXt2b2lkIDA9PT10JiYodD0hMSk7dmFyIGU9dGhpcy5fZ2V0QWxsSW5jbHVkZWRWYWx1ZXModCksbj10aGlzLl9kZWZhdWx0RXh0ZW50KCk7aWYoMCE9PWUubGVuZ3RoKXt2YXIgaT1bUmJ0Lk1hdGgubWluKGUsblswXSksUmJ0Lk1hdGgubWF4KGUsblsxXSldO249dGhpcy5fcGFkRG9tYWluKGkpfXJldHVybiBufSxlLnByb3RvdHlwZS5fZ2V0RXh0ZW50PWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fZ2V0VW5ib3VuZGVkRXh0ZW50KCk7cmV0dXJuIG51bGwhPXRoaXMuX2RvbWFpbk1pbiYmKHRbMF09dGhpcy5fZG9tYWluTWluKSxudWxsIT10aGlzLl9kb21haW5NYXgmJih0WzFdPXRoaXMuX2RvbWFpbk1heCksdH0sZS5wcm90b3R5cGUuYWRkUGFkZGluZ0V4Y2VwdGlvbnNQcm92aWRlcj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fcGFkZGluZ0V4Y2VwdGlvbnNQcm92aWRlcnMuYWRkKHQpLHRoaXMuYXV0b0RvbWFpbklmQXV0b21hdGljTW9kZSgpLHRoaXN9LGUucHJvdG90eXBlLnJlbW92ZVBhZGRpbmdFeGNlcHRpb25zUHJvdmlkZXI9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3BhZGRpbmdFeGNlcHRpb25zUHJvdmlkZXJzLmRlbGV0ZSh0KSx0aGlzLmF1dG9Eb21haW5JZkF1dG9tYXRpY01vZGUoKSx0aGlzfSxlLnByb3RvdHlwZS5wYWRQcm9wb3J0aW9uPWZ1bmN0aW9uKHQpe2lmKG51bGw9PXQpcmV0dXJuIHRoaXMuX3BhZFByb3BvcnRpb247aWYodDwwKXRocm93IG5ldyBFcnJvcigicGFkUHJvcG9ydGlvbiBtdXN0IGJlIG5vbi1uZWdhdGl2ZSIpO3JldHVybiB0aGlzLl9wYWRQcm9wb3J0aW9uPXQsdGhpcy5hdXRvRG9tYWluSWZBdXRvbWF0aWNNb2RlKCksdGhpc30sZS5wcm90b3R5cGUuX3BhZERvbWFpbj1mdW5jdGlvbih0KXt2YXIgZT10aGlzO2lmKHRbMF0udmFsdWVPZigpPT09dFsxXS52YWx1ZU9mKCkpcmV0dXJuIHRoaXMuX2V4cGFuZFNpbmdsZVZhbHVlRG9tYWluKHQpO2lmKDA9PT10aGlzLl9wYWRQcm9wb3J0aW9uKXJldHVybiB0O3ZhciBuPXRoaXMuX3BhZFByb3BvcnRpb24vMixpPXRbMF0scj10WzFdLG89ITEsYT0hMTt0aGlzLl9wYWRkaW5nRXhjZXB0aW9uc1Byb3ZpZGVycy5mb3JFYWNoKChmdW5jdGlvbih0KXt0KGUpLmZvckVhY2goKGZ1bmN0aW9uKHQpe3QudmFsdWVPZigpPT09aS52YWx1ZU9mKCkmJihvPSEwKSx0LnZhbHVlT2YoKT09PXIudmFsdWVPZigpJiYoYT0hMCl9KSl9KSk7dmFyIHM9dGhpcy5fYmFja2luZ1NjYWxlRG9tYWluKCk7dGhpcy5fYmFja2luZ1NjYWxlRG9tYWluKHQpO3ZhciBsPW8/aTp0aGlzLmludmVydCh0aGlzLnNjYWxlKGkpLSh0aGlzLnNjYWxlKHIpLXRoaXMuc2NhbGUoaSkpKm4pLGM9YT9yOnRoaXMuaW52ZXJ0KHRoaXMuc2NhbGUocikrKHRoaXMuc2NhbGUociktdGhpcy5zY2FsZShpKSkqbik7cmV0dXJuIHRoaXMuX2JhY2tpbmdTY2FsZURvbWFpbihzKSx0aGlzLl9zbmFwcGluZ0RvbWFpbkVuYWJsZWQ/dGhpcy5fbmljZURvbWFpbihbbCxjXSk6W2wsY119LGUucHJvdG90eXBlLnNuYXBwaW5nRG9tYWluRW5hYmxlZD1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9zbmFwcGluZ0RvbWFpbkVuYWJsZWQ6KHRoaXMuX3NuYXBwaW5nRG9tYWluRW5hYmxlZD10LHRoaXMuYXV0b0RvbWFpbklmQXV0b21hdGljTW9kZSgpLHRoaXMpfSxlLnByb3RvdHlwZS5fZXhwYW5kU2luZ2xlVmFsdWVEb21haW49ZnVuY3Rpb24odCl7cmV0dXJuIHR9LGUucHJvdG90eXBlLmludmVydD1mdW5jdGlvbih0KXt0aHJvdyBuZXcgRXJyb3IoIlN1YmNsYXNzZXMgc2hvdWxkIG92ZXJyaWRlIGludmVydCIpfSxlLnByb3RvdHlwZS5kb21haW49ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGwhPWUmJih0aGlzLl9kb21haW5NaW49ZVswXSx0aGlzLl9kb21haW5NYXg9ZVsxXSksdC5wcm90b3R5cGUuZG9tYWluLmNhbGwodGhpcyxlKX0sZS5wcm90b3R5cGUuZG9tYWluTWluPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuZG9tYWluKClbMF06KHRoaXMuX2RvbWFpbk1pbj10LHRoaXMuYXV0b0RvbWFpbklmQXV0b21hdGljTW9kZSgpLHRoaXMpfSxlLnByb3RvdHlwZS5kb21haW5NYXg9ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5kb21haW4oKVsxXToodGhpcy5fZG9tYWluTWF4PXQsdGhpcy5hdXRvRG9tYWluSWZBdXRvbWF0aWNNb2RlKCksdGhpcyl9LGUucHJvdG90eXBlLmV4dGVudE9mVmFsdWVzPWZ1bmN0aW9uKHQpe3ZhciBlPU5idC5leHRlbnQodC5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiBSYnQuTWF0aC5pc1ZhbGlkTnVtYmVyKCt0KX0pKSk7cmV0dXJuIG51bGw9PWVbMF18fG51bGw9PWVbMV0/W106ZX0sZS5wcm90b3R5cGUuem9vbT1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXM7dGhpcy5kb21haW4odGhpcy5yYW5nZSgpLm1hcCgoZnVuY3Rpb24oaSl7cmV0dXJuIG4uaW52ZXJ0KElidC56b29tT3V0KGksdCxlKSl9KSkpfSxlLnByb3RvdHlwZS5wYW49ZnVuY3Rpb24odCl7dmFyIGU9dGhpczt0aGlzLmRvbWFpbih0aGlzLnJhbmdlKCkubWFwKChmdW5jdGlvbihuKXtyZXR1cm4gZS5pbnZlcnQobit0KX0pKSl9LGUucHJvdG90eXBlLnNjYWxlVHJhbnNmb3JtYXRpb249ZnVuY3Rpb24odCl7dGhyb3cgbmV3IEVycm9yKCJTdWJjbGFzc2VzIHNob3VsZCBvdmVycmlkZSBzY2FsZVRyYW5zZm9ybWF0aW9uIil9LGUucHJvdG90eXBlLmludmVydGVkVHJhbnNmb3JtYXRpb249ZnVuY3Rpb24odCl7dGhyb3cgbmV3IEVycm9yKCJTdWJjbGFzc2VzIHNob3VsZCBvdmVycmlkZSBpbnZlcnRlZFRyYW5zZm9ybWF0aW9uIil9LGUucHJvdG90eXBlLmdldFRyYW5zZm9ybWF0aW9uRXh0ZW50PWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCJTdWJjbGFzc2VzIHNob3VsZCBvdmVycmlkZSBnZXRUcmFuc2Zvcm1hdGlvbkV4dGVudCIpfSxlLnByb3RvdHlwZS5nZXRUcmFuc2Zvcm1hdGlvbkRvbWFpbj1mdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcigiU3ViY2xhc3NlcyBzaG91bGQgb3ZlcnJpZGUgZ2V0VHJhbnNmb3JtYXRpb25Eb21haW4iKX0sZS5wcm90b3R5cGUuc2V0VHJhbnNmb3JtYXRpb25Eb21haW49ZnVuY3Rpb24odCl7dGhyb3cgbmV3IEVycm9yKCJTdWJjbGFzc2VzIHNob3VsZCBvdmVycmlkZSBzZXRUcmFuc2Zvcm1hdGlvbkRvbWFpbiIpfSxlLnByb3RvdHlwZS5fc2V0RG9tYWluPWZ1bmN0aW9uKGUpe3ZhciBuPWZ1bmN0aW9uKHQpe3JldHVybiBSYnQuTWF0aC5pc05hTih0KXx8dD09PTEvMHx8dD09PS0xLzB9O24oZVswXSl8fG4oZVsxXSk/UmJ0LldpbmRvdy53YXJuKCJXYXJuaW5nOiBRdWFudGl0YXRpdmVTY2FsZXMgY2Fubm90IHRha2UgTmFOIG9yIEluZmluaXR5IGFzIGEgZG9tYWluIHZhbHVlLiBJZ25vcmluZy4iKTp0LnByb3RvdHlwZS5fc2V0RG9tYWluLmNhbGwodGhpcyxlKX0sZS5wcm90b3R5cGUuZGVmYXVsdFRpY2tzPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCJTdWJjbGFzc2VzIHNob3VsZCBvdmVycmlkZSBfZ2V0RGVmYXVsdFRpY2tzIil9LGUucHJvdG90eXBlLnRpY2tzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3RpY2tHZW5lcmF0b3IodGhpcyl9LGUucHJvdG90eXBlLl9uaWNlRG9tYWluPWZ1bmN0aW9uKHQsZSl7dGhyb3cgbmV3IEVycm9yKCJTdWJjbGFzc2VzIHNob3VsZCBvdmVycmlkZSBfbmljZURvbWFpbiIpfSxlLnByb3RvdHlwZS5fZGVmYXVsdEV4dGVudD1mdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcigiU3ViY2xhc3NlcyBzaG91bGQgb3ZlcnJpZGUgX2RlZmF1bHRFeHRlbnQiKX0sZS5wcm90b3R5cGUudGlja0dlbmVyYXRvcj1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl90aWNrR2VuZXJhdG9yOih0aGlzLl90aWNrR2VuZXJhdG9yPXQsdGhpcyl9LGUuX0RFRkFVTFRfTlVNX1RJQ0tTPTEwLGV9KShsYnQuU2NhbGUpO0xidC5RdWFudGl0YXRpdmVTY2FsZT1PYnQsCi8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovCk9iamVjdC5kZWZpbmVQcm9wZXJ0eShrYnQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciB6YnQ9Qk8sRGJ0PXdwdCxCYnQ9KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXt2YXIgZT10LmNhbGwodGhpcyl8fHRoaXM7cmV0dXJuIGUuX2QzU2NhbGU9RGJ0LnNjYWxlTGluZWFyKCksZX1yZXR1cm4gemJ0Ll9fZXh0ZW5kcyhlLHQpLGUucHJvdG90eXBlLl9kZWZhdWx0RXh0ZW50PWZ1bmN0aW9uKCl7cmV0dXJuWzAsMV19LGUucHJvdG90eXBlLl9leHBhbmRTaW5nbGVWYWx1ZURvbWFpbj1mdW5jdGlvbih0KXtyZXR1cm4gdFswXT09PXRbMV0/W3RbMF0tMSx0WzFdKzFdOnR9LGUucHJvdG90eXBlLnNjYWxlPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9kM1NjYWxlKHQpfSxlLnByb3RvdHlwZS5zY2FsZVRyYW5zZm9ybWF0aW9uPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnNjYWxlKHQpfSxlLnByb3RvdHlwZS5pbnZlcnRlZFRyYW5zZm9ybWF0aW9uPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmludmVydCh0KX0sZS5wcm90b3R5cGUuZ2V0VHJhbnNmb3JtYXRpb25FeHRlbnQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZ2V0VW5ib3VuZGVkRXh0ZW50KCEwKX0sZS5wcm90b3R5cGUuZ2V0VHJhbnNmb3JtYXRpb25Eb21haW49ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kb21haW4oKX0sZS5wcm90b3R5cGUuc2V0VHJhbnNmb3JtYXRpb25Eb21haW49ZnVuY3Rpb24odCl7dGhpcy5kb21haW4odCl9LGUucHJvdG90eXBlLl9nZXREb21haW49ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYmFja2luZ1NjYWxlRG9tYWluKCl9LGUucHJvdG90eXBlLl9iYWNraW5nU2NhbGVEb21haW49ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5fZDNTY2FsZS5kb21haW4oKToodGhpcy5fZDNTY2FsZS5kb21haW4odCksdGhpcyl9LGUucHJvdG90eXBlLl9nZXRSYW5nZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9kM1NjYWxlLnJhbmdlKCl9LGUucHJvdG90eXBlLl9zZXRSYW5nZT1mdW5jdGlvbih0KXt0aGlzLl9kM1NjYWxlLnJhbmdlKHQpfSxlLnByb3RvdHlwZS5pbnZlcnQ9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2QzU2NhbGUuaW52ZXJ0KHQpfSxlLnByb3RvdHlwZS5kZWZhdWx0VGlja3M9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZDNTY2FsZS50aWNrcyhlLl9ERUZBVUxUX05VTV9USUNLUyl9LGUucHJvdG90eXBlLl9uaWNlRG9tYWluPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuX2QzU2NhbGUuY29weSgpLmRvbWFpbih0KS5uaWNlKGUpLmRvbWFpbigpfSxlfSkoTGJ0LlF1YW50aXRhdGl2ZVNjYWxlKTtrYnQuTGluZWFyPUJidDt2YXIgSGJ0PXt9OwovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqL09iamVjdC5kZWZpbmVQcm9wZXJ0eShIYnQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBGYnQ9Qk8sVmJ0PXdwdCxVYnQ9KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSl7dm9pZCAwPT09ZSYmKGU9MTApO3ZhciBuPXQuY2FsbCh0aGlzKXx8dGhpcztyZXR1cm4gbi5fZDNTY2FsZT1WYnQuc2NhbGVMb2coKS5iYXNlKGUpLG4uX3NldERvbWFpbihuLl9kZWZhdWx0RXh0ZW50KCkpLG59cmV0dXJuIEZidC5fX2V4dGVuZHMoZSx0KSxlLnByb3RvdHlwZS5fZGVmYXVsdEV4dGVudD1mdW5jdGlvbigpe3JldHVyblsxLHRoaXMuX2QzU2NhbGUuYmFzZSgpXX0sZS5wcm90b3R5cGUuX2V4cGFuZFNpbmdsZVZhbHVlRG9tYWluPWZ1bmN0aW9uKHQpe3JldHVybiB0WzBdPT09dFsxXT9bdFswXS90aGlzLl9kM1NjYWxlLmJhc2UoKSx0WzFdKnRoaXMuX2QzU2NhbGUuYmFzZSgpXTp0fSxlLnByb3RvdHlwZS5zY2FsZT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fZDNTY2FsZSh0KX0sZS5wcm90b3R5cGUuc2NhbGVUcmFuc2Zvcm1hdGlvbj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5zY2FsZSh0KX0sZS5wcm90b3R5cGUuaW52ZXJ0ZWRUcmFuc2Zvcm1hdGlvbj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5pbnZlcnQodCl9LGUucHJvdG90eXBlLmdldFRyYW5zZm9ybWF0aW9uRXh0ZW50PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2dldFVuYm91bmRlZEV4dGVudCghMCl9LGUucHJvdG90eXBlLmdldFRyYW5zZm9ybWF0aW9uRG9tYWluPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZG9tYWluKCl9LGUucHJvdG90eXBlLnNldFRyYW5zZm9ybWF0aW9uRG9tYWluPWZ1bmN0aW9uKHQpe3RoaXMuZG9tYWluKHQpfSxlLnByb3RvdHlwZS5fZ2V0RG9tYWluPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2JhY2tpbmdTY2FsZURvbWFpbigpfSxlLnByb3RvdHlwZS5fYmFja2luZ1NjYWxlRG9tYWluPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuX2QzU2NhbGUuZG9tYWluKCk6KHRoaXMuX2QzU2NhbGUuZG9tYWluKHQpLHRoaXMpfSxlLnByb3RvdHlwZS5fZ2V0UmFuZ2U9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZDNTY2FsZS5yYW5nZSgpfSxlLnByb3RvdHlwZS5fc2V0UmFuZ2U9ZnVuY3Rpb24odCl7dGhpcy5fZDNTY2FsZS5yYW5nZSh0KX0sZS5wcm90b3R5cGUuaW52ZXJ0PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9kM1NjYWxlLmludmVydCh0KX0sZS5wcm90b3R5cGUuZGVmYXVsdFRpY2tzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2QzU2NhbGUudGlja3MoZS5fREVGQVVMVF9OVU1fVElDS1MpfSxlLnByb3RvdHlwZS5fbmljZURvbWFpbj1mdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLl9kM1NjYWxlLmNvcHkoKS5kb21haW4odCkubmljZSgpLmRvbWFpbigpfSxlfSkoTGJ0LlF1YW50aXRhdGl2ZVNjYWxlKTtIYnQuTG9nPVVidDt2YXIgamJ0PXt9OwovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqL09iamVjdC5kZWZpbmVQcm9wZXJ0eShqYnQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBHYnQ9Qk8sV2J0PXdwdCxxYnQ9RF90LFlidD1YdnQsWGJ0PShmdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUpe3ZvaWQgMD09PWUmJihlPTEwKTt2YXIgbj10LmNhbGwodGhpcyl8fHRoaXM7aWYobi5fbG9nVGlja0dlbmVyYXRvcj1mdW5jdGlvbih0KXt2YXIgZT1mdW5jdGlvbih0LGUsbil7cmV0dXJuW3QsZSxuXS5zb3J0KChmdW5jdGlvbih0LGUpe3JldHVybiB0LWV9KSlbMV19LGk9cWJ0Lk1hdGgubWluKG4uX3VudHJhbnNmb3JtZWREb21haW4sMCkscj1xYnQuTWF0aC5tYXgobi5fdW50cmFuc2Zvcm1lZERvbWFpbiwwKSxvPWksYT1lKGksciwtbi5fcGl2b3QpLHM9ZShpLHIsbi5fcGl2b3QpLGw9cixjPW4uX2xvZ1RpY2tzKC1hLC1vKS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybi10fSkpLnJldmVyc2UoKSx1PW4uX2xvZ1RpY2tzKHMsbCksaD1NYXRoLm1heChpLC1uLl9waXZvdCksZD1NYXRoLm1pbihyLG4uX3Bpdm90KSxwPVdidC5zY2FsZUxpbmVhcigpLmRvbWFpbihbaCxkXSkudGlja3Mobi5faG93TWFueVRpY2tzKGgsZCkpLGY9Yy5jb25jYXQocCkuY29uY2F0KHUpO3JldHVybiBmLmxlbmd0aDw9MSYmKGY9V2J0LnNjYWxlTGluZWFyKCkuZG9tYWluKFtpLHJdKS50aWNrcyhZYnQuTW9kaWZpZWRMb2cuX0RFRkFVTFRfTlVNX1RJQ0tTKSksZn0sbi5fZDNTY2FsZT1XYnQuc2NhbGVMaW5lYXIoKSxuLl9iYXNlPWUsbi5fcGl2b3Q9bi5fYmFzZSxuLl9zZXREb21haW4obi5fZGVmYXVsdEV4dGVudCgpKSxuLnRpY2tHZW5lcmF0b3Iobi5fbG9nVGlja0dlbmVyYXRvciksZTw9MSl0aHJvdyBuZXcgRXJyb3IoIk1vZGlmaWVkTG9nU2NhbGU6IFRoZSBiYXNlIG11c3QgYmUgPiAxIik7cmV0dXJuIG59cmV0dXJuIEdidC5fX2V4dGVuZHMoZSx0KSxlLnByb3RvdHlwZS5fYWRqdXN0ZWRMb2c9ZnVuY3Rpb24odCl7dmFyIGU9dDwwPy0xOjE7cmV0dXJuKHQqPWUpPHRoaXMuX3Bpdm90JiYodCs9KHRoaXMuX3Bpdm90LXQpL3RoaXMuX3Bpdm90KSx0PU1hdGgubG9nKHQpL01hdGgubG9nKHRoaXMuX2Jhc2UpLHQqPWV9LGUucHJvdG90eXBlLl9pbnZlcnRlZEFkanVzdGVkTG9nPWZ1bmN0aW9uKHQpe3ZhciBlPXQ8MD8tMToxO3JldHVybiB0Kj1lLCh0PU1hdGgucG93KHRoaXMuX2Jhc2UsdCkpPHRoaXMuX3Bpdm90JiYodD10aGlzLl9waXZvdCoodC0xKS8odGhpcy5fcGl2b3QtMSkpLHQqPWV9LGUucHJvdG90eXBlLnNjYWxlPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9kM1NjYWxlKHRoaXMuX2FkanVzdGVkTG9nKHQpKX0sZS5wcm90b3R5cGUuaW52ZXJ0PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9pbnZlcnRlZEFkanVzdGVkTG9nKHRoaXMuX2QzU2NhbGUuaW52ZXJ0KHQpKX0sZS5wcm90b3R5cGUuc2NhbGVUcmFuc2Zvcm1hdGlvbj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5zY2FsZSh0KX0sZS5wcm90b3R5cGUuaW52ZXJ0ZWRUcmFuc2Zvcm1hdGlvbj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5pbnZlcnQodCl9LGUucHJvdG90eXBlLmdldFRyYW5zZm9ybWF0aW9uRXh0ZW50PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2dldFVuYm91bmRlZEV4dGVudCghMCl9LGUucHJvdG90eXBlLmdldFRyYW5zZm9ybWF0aW9uRG9tYWluPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZG9tYWluKCl9LGUucHJvdG90eXBlLnNldFRyYW5zZm9ybWF0aW9uRG9tYWluPWZ1bmN0aW9uKHQpe3RoaXMuZG9tYWluKHQpfSxlLnByb3RvdHlwZS5fZ2V0RG9tYWluPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3VudHJhbnNmb3JtZWREb21haW59LGUucHJvdG90eXBlLl9zZXREb21haW49ZnVuY3Rpb24oZSl7dGhpcy5fdW50cmFuc2Zvcm1lZERvbWFpbj1lO3ZhciBuPVt0aGlzLl9hZGp1c3RlZExvZyhlWzBdKSx0aGlzLl9hZGp1c3RlZExvZyhlWzFdKV07dC5wcm90b3R5cGUuX3NldERvbWFpbi5jYWxsKHRoaXMsbil9LGUucHJvdG90eXBlLl9iYWNraW5nU2NhbGVEb21haW49ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5fZDNTY2FsZS5kb21haW4oKToodGhpcy5fZDNTY2FsZS5kb21haW4odCksdGhpcyl9LGUucHJvdG90eXBlLl9sb2dUaWNrcz1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMsaT10aGlzLl9ob3dNYW55VGlja3ModCxlKTtpZigwPT09aSlyZXR1cm5bXTt2YXIgcj1NYXRoLmZsb29yKE1hdGgubG9nKHQpL01hdGgubG9nKHRoaXMuX2Jhc2UpKSxvPU1hdGguY2VpbChNYXRoLmxvZyhlKS9NYXRoLmxvZyh0aGlzLl9iYXNlKSksYT1XYnQucmFuZ2UobyxyLC1NYXRoLmNlaWwoKG8tcikvaSkpLHM9V2J0LnJhbmdlKHRoaXMuX2Jhc2UsMSwtKHRoaXMuX2Jhc2UtMSkpLm1hcChNYXRoLmZsb29yKSxsPXFidC5BcnJheS51bmlxKHMpLGM9YS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBsLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIE1hdGgucG93KG4uX2Jhc2UsdC0xKSplfSkpfSkpO3JldHVybiBxYnQuQXJyYXkuZmxhdHRlbihjKS5maWx0ZXIoKGZ1bmN0aW9uKG4pe3JldHVybiB0PD1uJiZuPD1lfSkpLnNvcnQoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQtZX0pKX0sZS5wcm90b3R5cGUuX2hvd01hbnlUaWNrcz1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMuX2FkanVzdGVkTG9nKHFidC5NYXRoLm1pbih0aGlzLl91bnRyYW5zZm9ybWVkRG9tYWluLDApKSxpPXRoaXMuX2FkanVzdGVkTG9nKHFidC5NYXRoLm1heCh0aGlzLl91bnRyYW5zZm9ybWVkRG9tYWluLDApKSxyPXRoaXMuX2FkanVzdGVkTG9nKHQpLG89dGhpcy5fYWRqdXN0ZWRMb2coZSk7cmV0dXJuIE1hdGguY2VpbCgoby1yKS8oaS1uKSpZYnQuTW9kaWZpZWRMb2cuX0RFRkFVTFRfTlVNX1RJQ0tTKX0sZS5wcm90b3R5cGUuX25pY2VEb21haW49ZnVuY3Rpb24odCxlKXtyZXR1cm4gdH0sZS5wcm90b3R5cGUuX2RlZmF1bHRFeHRlbnQ9ZnVuY3Rpb24oKXtyZXR1cm5bMCx0aGlzLl9iYXNlXX0sZS5wcm90b3R5cGUuX2V4cGFuZFNpbmdsZVZhbHVlRG9tYWluPWZ1bmN0aW9uKHQpe2lmKHRbMF09PT10WzFdKXt2YXIgZT10WzBdO3JldHVybiBlPjA/W2UvdGhpcy5fYmFzZSxlKnRoaXMuX2Jhc2VdOjA9PT1lP1stdGhpcy5fYmFzZSx0aGlzLl9iYXNlXTpbZSp0aGlzLl9iYXNlLGUvdGhpcy5fYmFzZV19cmV0dXJuIHR9LGUucHJvdG90eXBlLl9nZXRSYW5nZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9kM1NjYWxlLnJhbmdlKCl9LGUucHJvdG90eXBlLl9zZXRSYW5nZT1mdW5jdGlvbih0KXt0aGlzLl9kM1NjYWxlLnJhbmdlKHQpfSxlLnByb3RvdHlwZS5kZWZhdWx0VGlja3M9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZDNTY2FsZS50aWNrcyhZYnQuTW9kaWZpZWRMb2cuX0RFRkFVTFRfTlVNX1RJQ0tTKX0sZX0pKExidC5RdWFudGl0YXRpdmVTY2FsZSk7amJ0Lk1vZGlmaWVkTG9nPVhidDt2YXIgJGJ0PXt9OwovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqL09iamVjdC5kZWZpbmVQcm9wZXJ0eSgkYnQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBLYnQ9Qk8sWmJ0PXdwdCxKYnQ9WXZ0LFFidD0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3ZhciBlPXQuY2FsbCh0aGlzKXx8dGhpcztyZXR1cm4gZS5fZDNTY2FsZT1aYnQuc2NhbGVUaW1lKCksZS5hdXRvRG9tYWluKCksZX1yZXR1cm4gS2J0Ll9fZXh0ZW5kcyhlLHQpLGUucHJvdG90eXBlLnRpY2tJbnRlcnZhbD1mdW5jdGlvbih0LG4saSl7dm9pZCAwPT09biYmKG49MSksdm9pZCAwPT09aSYmKGk9ITEpO3ZhciByPVpidC5zY2FsZVRpbWUoKSxvPWUudGltZUludGVydmFsVG9EM1RpbWUodCxpKS5ldmVyeShuKTtyZXR1cm4gci5kb21haW4odGhpcy5kb21haW4oKSksci5yYW5nZSh0aGlzLnJhbmdlKCkpLHIudGlja3Mobyl9LGUucHJvdG90eXBlLl9zZXREb21haW49ZnVuY3Rpb24oZSl7aWYoZVsxXTxlWzBdKXRocm93IG5ldyBFcnJvcigiU2NhbGUuVGltZSBkb21haW4gdmFsdWVzIG11c3QgYmUgaW4gY2hyb25vbG9naWNhbCBvcmRlciIpO3JldHVybiB0LnByb3RvdHlwZS5fc2V0RG9tYWluLmNhbGwodGhpcyxlKX0sZS5wcm90b3R5cGUuX2RlZmF1bHRFeHRlbnQ9ZnVuY3Rpb24oKXtyZXR1cm5bbmV3IERhdGUoIjE5NzAtMDEtMDEiKSxuZXcgRGF0ZSgiMTk3MC0wMS0wMiIpXX0sZS5wcm90b3R5cGUuX2V4cGFuZFNpbmdsZVZhbHVlRG9tYWluPWZ1bmN0aW9uKHQpe3ZhciBlPXRbMF0uZ2V0VGltZSgpLG49dFsxXS5nZXRUaW1lKCk7aWYoZT09PW4pe3ZhciBpPW5ldyBEYXRlKGUpO2kuc2V0RGF0ZShpLmdldERhdGUoKS0xKTt2YXIgcj1uZXcgRGF0ZShuKTtyZXR1cm4gci5zZXREYXRlKHIuZ2V0RGF0ZSgpKzEpLFtpLHJdfXJldHVybiB0fSxlLnByb3RvdHlwZS5zY2FsZT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fZDNTY2FsZSh0KX0sZS5wcm90b3R5cGUuc2NhbGVUcmFuc2Zvcm1hdGlvbj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5zY2FsZShuZXcgRGF0ZSh0KSl9LGUucHJvdG90eXBlLmludmVydGVkVHJhbnNmb3JtYXRpb249ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuaW52ZXJ0KHQpLmdldFRpbWUoKX0sZS5wcm90b3R5cGUuZ2V0VHJhbnNmb3JtYXRpb25FeHRlbnQ9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9nZXRVbmJvdW5kZWRFeHRlbnQoITApO3JldHVyblt0WzBdLnZhbHVlT2YoKSx0WzFdLnZhbHVlT2YoKV19LGUucHJvdG90eXBlLmdldFRyYW5zZm9ybWF0aW9uRG9tYWluPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5kb21haW4oKTtyZXR1cm5bdFswXS52YWx1ZU9mKCksdFsxXS52YWx1ZU9mKCldfSxlLnByb3RvdHlwZS5zZXRUcmFuc2Zvcm1hdGlvbkRvbWFpbj1mdW5jdGlvbih0KXt2YXIgZT10WzFdO3RoaXMuZG9tYWluKFtuZXcgRGF0ZSh0WzBdKSxuZXcgRGF0ZShlKV0pfSxlLnByb3RvdHlwZS5fZ2V0RG9tYWluPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2JhY2tpbmdTY2FsZURvbWFpbigpfSxlLnByb3RvdHlwZS5fYmFja2luZ1NjYWxlRG9tYWluPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuX2QzU2NhbGUuZG9tYWluKCk6KHRoaXMuX2QzU2NhbGUuZG9tYWluKHQpLHRoaXMpfSxlLnByb3RvdHlwZS5fZ2V0UmFuZ2U9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZDNTY2FsZS5yYW5nZSgpfSxlLnByb3RvdHlwZS5fc2V0UmFuZ2U9ZnVuY3Rpb24odCl7dGhpcy5fZDNTY2FsZS5yYW5nZSh0KX0sZS5wcm90b3R5cGUuaW52ZXJ0PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9kM1NjYWxlLmludmVydCh0KX0sZS5wcm90b3R5cGUuZGVmYXVsdFRpY2tzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2QzU2NhbGUudGlja3MoZS5fREVGQVVMVF9OVU1fVElDS1MpfSxlLnByb3RvdHlwZS5fbmljZURvbWFpbj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fZDNTY2FsZS5jb3B5KCkuZG9tYWluKHQpLm5pY2UoKS5kb21haW4oKX0sZS50aW1lSW50ZXJ2YWxUb0QzVGltZT1mdW5jdGlvbih0LGUpe3N3aXRjaCh0KXtjYXNlIEpidC5UaW1lSW50ZXJ2YWwuc2Vjb25kOnJldHVybiBlP1pidC51dGNTZWNvbmQ6WmJ0LnRpbWVTZWNvbmQ7Y2FzZSBKYnQuVGltZUludGVydmFsLm1pbnV0ZTpyZXR1cm4gZT9aYnQudXRjTWludXRlOlpidC50aW1lTWludXRlO2Nhc2UgSmJ0LlRpbWVJbnRlcnZhbC5ob3VyOnJldHVybiBlP1pidC51dGNIb3VyOlpidC50aW1lSG91cjtjYXNlIEpidC5UaW1lSW50ZXJ2YWwuZGF5OnJldHVybiBlP1pidC51dGNEYXk6WmJ0LnRpbWVEYXk7Y2FzZSBKYnQuVGltZUludGVydmFsLndlZWs6cmV0dXJuIGU/WmJ0LnV0Y1dlZWs6WmJ0LnRpbWVXZWVrO2Nhc2UgSmJ0LlRpbWVJbnRlcnZhbC5tb250aDpyZXR1cm4gZT9aYnQudXRjTW9udGg6WmJ0LnRpbWVNb250aDtjYXNlIEpidC5UaW1lSW50ZXJ2YWwueWVhcjpyZXR1cm4gZT9aYnQudXRjWWVhcjpaYnQudGltZVllYXI7ZGVmYXVsdDp0aHJvdyBFcnJvcigiVGltZUludGVydmFsIHNwZWNpZmllZCBkb2VzIG5vdCBleGlzdDogIit0KX19LGV9KShMYnQuUXVhbnRpdGF0aXZlU2NhbGUpOyRidC5UaW1lPVFidCwoZnVuY3Rpb24odCl7Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovCk9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgZT1CTzt0LlRpY2tHZW5lcmF0b3JzPSR2dCxlLl9fZXhwb3J0U3RhcihRdnQsdCksZS5fX2V4cG9ydFN0YXIoX2J0LHQpLGUuX19leHBvcnRTdGFyKE1idCx0KSxlLl9fZXhwb3J0U3RhcihrYnQsdCksZS5fX2V4cG9ydFN0YXIoSGJ0LHQpLGUuX19leHBvcnRTdGFyKGpidCx0KSxlLl9fZXhwb3J0U3RhcigkYnQsdCk7dmFyIG49UXZ0LGk9TGJ0O3QuaXNUcmFuc2Zvcm1hYmxlPWZ1bmN0aW9uIHIodCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBpLlF1YW50aXRhdGl2ZVNjYWxlfHx0IGluc3RhbmNlb2Ygbi5DYXRlZ29yeX19KShYdnQpLChmdW5jdGlvbih0KXsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi8KT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBlPUJPLG49d3B0LGk9TGd0LHI9cHZ0LG89WHZ0LGE9RF90LHM9Ymd0LGw9ZHZ0O3QuVGltZUludGVydmFsPXMubWFrZUVudW0oWyJzZWNvbmQiLCJtaW51dGUiLCJob3VyIiwiZGF5Iiwid2VlayIsIm1vbnRoIiwieWVhciJdKSx0LlRpbWVBeGlzT3JpZW50YXRpb249cy5tYWtlRW51bShbInRvcCIsImJvdHRvbSJdKSx0LlRpZXJMYWJlbFBvc2l0aW9uPXMubWFrZUVudW0oWyJiZXR3ZWVuIiwiY2VudGVyIl0pO3ZhciBjLHU9KGZ1bmN0aW9uKHMpe2Z1bmN0aW9uIHUodCxlLG4pe3ZhciBpPXMuY2FsbCh0aGlzLHQsZSl8fHRoaXM7cmV0dXJuIGkuX21heFRpbWVJbnRlcnZhbFByZWNpc2lvbj1udWxsLGkuX3RpZXJMYWJlbFBvc2l0aW9ucz1bXSxpLl91c2VVVEM9bixpLmFkZENsYXNzKCJ0aW1lLWF4aXMiKSxpLnRpY2tMYWJlbFBhZGRpbmcoNSksaS5heGlzQ29uZmlndXJhdGlvbnModS5fREVGQVVMVF9USU1FX0FYSVNfQ09ORklHVVJBVElPTlMoaS5fdXNlVVRDKSksaS5hbm5vdGF0aW9uRm9ybWF0dGVyKHIudGltZSgiJWEgJWIgJWQsICVZIixpLl91c2VVVEMpKSxpfXJldHVybiBlLl9fZXh0ZW5kcyh1LHMpLHUucHJvdG90eXBlLnRpZXJMYWJlbFBvc2l0aW9ucz1mdW5jdGlvbih0KXtpZihudWxsPT10KXJldHVybiB0aGlzLl90aWVyTGFiZWxQb3NpdGlvbnM7aWYoIXQuZXZlcnkoKGZ1bmN0aW9uKHQpe3JldHVybiJiZXR3ZWVuIj09PXQudG9Mb3dlckNhc2UoKXx8ImNlbnRlciI9PT10LnRvTG93ZXJDYXNlKCl9KSkpdGhyb3cgbmV3IEVycm9yKCJVbnN1cHBvcnRlZCBwb3NpdGlvbiBmb3IgdGllciBsYWJlbHMiKTtyZXR1cm4gdGhpcy5fdGllckxhYmVsUG9zaXRpb25zPXQsdGhpcy5yZWRyYXcoKSx0aGlzfSx1LnByb3RvdHlwZS5tYXhUaW1lSW50ZXJ2YWxQcmVjaXNpb249ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5fbWF4VGltZUludGVydmFsUHJlY2lzaW9uOih0aGlzLl9tYXhUaW1lSW50ZXJ2YWxQcmVjaXNpb249dCx0aGlzLnJlZHJhdygpLHRoaXMpfSx1LnByb3RvdHlwZS5jdXJyZW50QXhpc0NvbmZpZ3VyYXRpb249ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcG9zc2libGVUaW1lQXhpc0NvbmZpZ3VyYXRpb25zW3RoaXMuX21vc3RQcmVjaXNlQ29uZmlnSW5kZXhdfSx1LnByb3RvdHlwZS5heGlzQ29uZmlndXJhdGlvbnM9ZnVuY3Rpb24odCl7aWYobnVsbD09dClyZXR1cm4gdGhpcy5fcG9zc2libGVUaW1lQXhpc0NvbmZpZ3VyYXRpb25zO3RoaXMuX3Bvc3NpYmxlVGltZUF4aXNDb25maWd1cmF0aW9ucz10LHRoaXMuX251bVRpZXJzPWEuTWF0aC5tYXgodGhpcy5fcG9zc2libGVUaW1lQXhpc0NvbmZpZ3VyYXRpb25zLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQubGVuZ3RofSkpLDApLHRoaXMuX2lzQW5jaG9yZWQmJnRoaXMuX3NldHVwRG9tRWxlbWVudHMoKTtmb3IodmFyIGU9dGhpcy50aWVyTGFiZWxQb3NpdGlvbnMoKSxuPVtdLGk9MDtpPHRoaXMuX251bVRpZXJzO2krKyluLnB1c2goZVtpXXx8ImJldHdlZW4iKTtyZXR1cm4gdGhpcy50aWVyTGFiZWxQb3NpdGlvbnMobiksdGhpcy5yZWRyYXcoKSx0aGlzfSx1LnByb3RvdHlwZS5fZ2V0TW9zdFByZWNpc2VDb25maWd1cmF0aW9uSW5kZXg9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dGhpcy5fcG9zc2libGVUaW1lQXhpc0NvbmZpZ3VyYXRpb25zLmxlbmd0aDtyZXR1cm4gdGhpcy5fcG9zc2libGVUaW1lQXhpc0NvbmZpZ3VyYXRpb25zLmZvckVhY2goKGZ1bmN0aW9uKG4saSl7aTxlJiZuLmV2ZXJ5KChmdW5jdGlvbihlKXtyZXR1cm4gdC5fY2hlY2tUaW1lQXhpc1RpZXJDb25maWd1cmF0aW9uKGUpfSkpJiYoZT1pKX0pKSxlPT09dGhpcy5fcG9zc2libGVUaW1lQXhpc0NvbmZpZ3VyYXRpb25zLmxlbmd0aCYmKGEuV2luZG93Lndhcm4oInpvb21lZCBvdXQgdG9vIGZhcjogY291bGQgbm90IGZpbmQgc3VpdGFibGUgaW50ZXJ2YWwgdG8gZGlzcGxheSBsYWJlbHMiKSwtLWUpLGV9LHUucHJvdG90eXBlLm9yaWVudGF0aW9uPWZ1bmN0aW9uKHQpe2lmKHQmJigicmlnaHQiPT09dC50b0xvd2VyQ2FzZSgpfHwibGVmdCI9PT10LnRvTG93ZXJDYXNlKCkpKXRocm93IG5ldyBFcnJvcih0KyIgaXMgbm90IGEgc3VwcG9ydGVkIG9yaWVudGF0aW9uIGZvciBUaW1lQXhpcyAtIG9ubHkgaG9yaXpvbnRhbCBvcmllbnRhdGlvbnMgYXJlIHN1cHBvcnRlZCIpO3JldHVybiBzLnByb3RvdHlwZS5vcmllbnRhdGlvbi5jYWxsKHRoaXMsdCl9LHUucHJvdG90eXBlLl9jb21wdXRlSGVpZ2h0PWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fbWVhc3VyZXIubWVhc3VyZSgpLmhlaWdodDt0aGlzLl90aWVySGVpZ2h0cz1bXTtmb3IodmFyIGU9MDtlPHRoaXMuX251bVRpZXJzO2UrKyl0aGlzLl90aWVySGVpZ2h0cy5wdXNoKHQrdGhpcy50aWNrTGFiZWxQYWRkaW5nKCkrKCJiZXR3ZWVuIj09PXRoaXMuX3RpZXJMYWJlbFBvc2l0aW9uc1tlXT8wOnRoaXMuX21heExhYmVsVGlja0xlbmd0aCgpKSk7cmV0dXJuIG4uc3VtKHRoaXMuX3RpZXJIZWlnaHRzKX0sdS5wcm90b3R5cGUuX2dldEludGVydmFsTGVuZ3RoPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX3NjYWxlLmRvbWFpbigpWzBdLG49by5UaW1lLnRpbWVJbnRlcnZhbFRvRDNUaW1lKHQuaW50ZXJ2YWwsdGhpcy5fdXNlVVRDKS5vZmZzZXQoZSx0LnN0ZXApO3JldHVybiBuPnRoaXMuX3NjYWxlLmRvbWFpbigpWzFdP3RoaXMud2lkdGgoKTpNYXRoLmFicyh0aGlzLl9zY2FsZS5zY2FsZShuKS10aGlzLl9zY2FsZS5zY2FsZShlKSl9LHUucHJvdG90eXBlLl9tYXhXaWR0aEZvckludGVydmFsPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9tZWFzdXJlci5tZWFzdXJlKHQuZm9ybWF0dGVyKHUuX0xPTkdfREFURSkpLndpZHRofSx1LnByb3RvdHlwZS5fY2hlY2tUaW1lQXhpc1RpZXJDb25maWd1cmF0aW9uPWZ1bmN0aW9uKHQpe2lmKG51bGwhPXRoaXMuX21heFRpbWVJbnRlcnZhbFByZWNpc2lvbil7dmFyIGU9dS5fU09SVEVEX1RJTUVfSU5URVJWQUxfSU5ERVhbdGhpcy5fbWF4VGltZUludGVydmFsUHJlY2lzaW9uXSxuPXUuX1NPUlRFRF9USU1FX0lOVEVSVkFMX0lOREVYW3QuaW50ZXJ2YWxdO2lmKG51bGwhPWUmJm51bGwhPW4mJm48ZSlyZXR1cm4hMX12YXIgaT10aGlzLl9tYXhXaWR0aEZvckludGVydmFsKHQpKzIqdGhpcy50aWNrTGFiZWxQYWRkaW5nKCk7cmV0dXJuIE1hdGgubWluKHRoaXMuX2dldEludGVydmFsTGVuZ3RoKHQpLHRoaXMud2lkdGgoKSk+PWl9LHUucHJvdG90eXBlLl9zaXplRnJvbU9mZmVyPWZ1bmN0aW9uKHQsZSl7dmFyIG49cy5wcm90b3R5cGUuX3NpemVGcm9tT2ZmZXIuY2FsbCh0aGlzLHQsZSksaT10aGlzLl90aWVySGVpZ2h0cy5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSxpLHIpe3JldHVybiB0K2U+bi5oZWlnaHQ/dDp0K2V9KSkscj10aGlzLm1hcmdpbigpKyh0aGlzLmFubm90YXRpb25zRW5hYmxlZCgpP3RoaXMuYW5ub3RhdGlvblRpZXJDb3VudCgpKnRoaXMuX2Fubm90YXRpb25UaWVySGVpZ2h0KCk6MCk7cmV0dXJuIG4uaGVpZ2h0PU1hdGgubWluKG4uaGVpZ2h0LGkrciksbn0sdS5wcm90b3R5cGUuX3NldHVwPWZ1bmN0aW9uKCl7cy5wcm90b3R5cGUuX3NldHVwLmNhbGwodGhpcyksdGhpcy5fc2V0dXBEb21FbGVtZW50cygpfSx1LnByb3RvdHlwZS5fc2V0dXBEb21FbGVtZW50cz1mdW5jdGlvbigpe3RoaXMuY29udGVudCgpLnNlbGVjdEFsbCgiLiIrdS5USU1FX0FYSVNfVElFUl9DTEFTUykucmVtb3ZlKCksdGhpcy5fdGllckxhYmVsQ29udGFpbmVycz1bXSx0aGlzLl90aWVyTWFya0NvbnRhaW5lcnM9W10sdGhpcy5fdGllckJhc2VsaW5lcz1bXSx0aGlzLl90aWNrTGFiZWxDb250YWluZXIucmVtb3ZlKCksdGhpcy5fYmFzZWxpbmUucmVtb3ZlKCk7Zm9yKHZhciB0PTA7dDx0aGlzLl9udW1UaWVyczsrK3Qpe3ZhciBlPXRoaXMuY29udGVudCgpLmFwcGVuZCgiZyIpLmNsYXNzZWQodS5USU1FX0FYSVNfVElFUl9DTEFTUywhMCk7dGhpcy5fdGllckxhYmVsQ29udGFpbmVycy5wdXNoKGUuYXBwZW5kKCJnIikuY2xhc3NlZChsLkF4aXMuVElDS19MQUJFTF9DTEFTUysiLWNvbnRhaW5lciIsITApKSx0aGlzLl90aWVyTWFya0NvbnRhaW5lcnMucHVzaChlLmFwcGVuZCgiZyIpLmNsYXNzZWQobC5BeGlzLlRJQ0tfTUFSS19DTEFTUysiLWNvbnRhaW5lciIsITApKSx0aGlzLl90aWVyQmFzZWxpbmVzLnB1c2goZS5hcHBlbmQoImxpbmUiKS5jbGFzc2VkKCJiYXNlbGluZSIsITApKX12YXIgbj1uZXcgaS5TdmdDb250ZXh0KHRoaXMuX3RpZXJMYWJlbENvbnRhaW5lcnNbMF0ubm9kZSgpKTt0aGlzLl9tZWFzdXJlcj1uZXcgaS5DYWNoZU1lYXN1cmVyKG4pfSx1LnByb3RvdHlwZS5fZ2V0VGlja0ludGVydmFsVmFsdWVzPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9zY2FsZS50aWNrSW50ZXJ2YWwodC5pbnRlcnZhbCx0LnN0ZXAsdGhpcy5fdXNlVVRDKX0sdS5wcm90b3R5cGUuX2dldFRpY2tWYWx1ZXM9ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3JldHVybiB0aGlzLl9wb3NzaWJsZVRpbWVBeGlzQ29uZmlndXJhdGlvbnNbdGhpcy5fbW9zdFByZWNpc2VDb25maWdJbmRleF0ucmVkdWNlKChmdW5jdGlvbihlLG4pe3JldHVybiBlLmNvbmNhdCh0Ll9nZXRUaWNrSW50ZXJ2YWxWYWx1ZXMobikpfSksW10pfSx1LnByb3RvdHlwZS5fY2xlYW5UaWVycz1mdW5jdGlvbigpe2Zvcih2YXIgdD0wO3Q8dGhpcy5fdGllckxhYmVsQ29udGFpbmVycy5sZW5ndGg7dCsrKXRoaXMuX3RpZXJMYWJlbENvbnRhaW5lcnNbdF0uc2VsZWN0QWxsKCIuIitsLkF4aXMuVElDS19MQUJFTF9DTEFTUykucmVtb3ZlKCksdGhpcy5fdGllck1hcmtDb250YWluZXJzW3RdLnNlbGVjdEFsbCgiLiIrbC5BeGlzLlRJQ0tfTUFSS19DTEFTUykucmVtb3ZlKCksdGhpcy5fdGllckJhc2VsaW5lc1t0XS5zdHlsZSgidmlzaWJpbGl0eSIsImhpZGRlbiIpfSx1LnByb3RvdHlwZS5fZ2V0VGlja1ZhbHVlc0ZvckNvbmZpZ3VyYXRpb249ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fc2NhbGUudGlja0ludGVydmFsKHQuaW50ZXJ2YWwsdC5zdGVwLHRoaXMuX3VzZVVUQyksbj10aGlzLl9zY2FsZS5kb21haW4oKSxpPWUubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC52YWx1ZU9mKCl9KSk7cmV0dXJuLTE9PT1pLmluZGV4T2YoblswXS52YWx1ZU9mKCkpJiZlLnVuc2hpZnQoblswXSksLTE9PT1pLmluZGV4T2YoblsxXS52YWx1ZU9mKCkpJiZlLnB1c2goblsxXSksZX0sdS5wcm90b3R5cGUuX3JlbmRlclRpZXJMYWJlbHM9ZnVuY3Rpb24odCxlLGkpe3ZhciByPXRoaXMsbz10aGlzLl9nZXRUaWNrVmFsdWVzRm9yQ29uZmlndXJhdGlvbihlKSxhPVtdOyJiZXR3ZWVuIj09PXRoaXMuX3RpZXJMYWJlbFBvc2l0aW9uc1tpXSYmMT09PWUuc3RlcD9vLm1hcCgoZnVuY3Rpb24odCxlKXtlKzE+PW8ubGVuZ3RofHxhLnB1c2gobmV3IERhdGUoKG9bZSsxXS52YWx1ZU9mKCktb1tlXS52YWx1ZU9mKCkpLzIrb1tlXS52YWx1ZU9mKCkpKX0pKTphPW87dmFyIHM9dC5zZWxlY3RBbGwoIi4iK2wuQXhpcy5USUNLX0xBQkVMX0NMQVNTKS5kYXRhKGEsKGZ1bmN0aW9uKHQpe3JldHVybiBTdHJpbmcodC52YWx1ZU9mKCkpfSkpLGM9cy5lbnRlcigpLmFwcGVuZCgiZyIpLmNsYXNzZWQobC5BeGlzLlRJQ0tfTEFCRUxfQ0xBU1MsITApO2MuYXBwZW5kKCJ0ZXh0Iik7dmFyIHUsaD0iY2VudGVyIj09PXRoaXMuX3RpZXJMYWJlbFBvc2l0aW9uc1tpXXx8MT09PWUuc3RlcD8wOnRoaXMudGlja0xhYmVsUGFkZGluZygpO3U9ImJvdHRvbSI9PT10aGlzLm9yaWVudGF0aW9uKCk/bi5zdW0odGhpcy5fdGllckhlaWdodHMuc2xpY2UoMCxpKzEpKS10aGlzLnRpY2tMYWJlbFBhZGRpbmcoKToiY2VudGVyIj09PXRoaXMuX3RpZXJMYWJlbFBvc2l0aW9uc1tpXT90aGlzLmhlaWdodCgpLW4uc3VtKHRoaXMuX3RpZXJIZWlnaHRzLnNsaWNlKDAsaSkpLXRoaXMudGlja0xhYmVsUGFkZGluZygpLXRoaXMuX21heExhYmVsVGlja0xlbmd0aCgpOnRoaXMuaGVpZ2h0KCktbi5zdW0odGhpcy5fdGllckhlaWdodHMuc2xpY2UoMCxpKSktdGhpcy50aWNrTGFiZWxQYWRkaW5nKCk7dmFyIGQ9cy5tZXJnZShjKSxwPWQuc2VsZWN0QWxsKCJ0ZXh0Iik7cC5zaXplKCk+MCYmcC5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIitoKyIsIit1KyIpIikscy5leGl0KCkucmVtb3ZlKCksZC5hdHRyKCJ0cmFuc2Zvcm0iLChmdW5jdGlvbih0KXtyZXR1cm4idHJhbnNsYXRlKCIrci5fc2NhbGUuc2NhbGUodCkrIiwwKSJ9KSk7dmFyIGY9ImNlbnRlciI9PT10aGlzLl90aWVyTGFiZWxQb3NpdGlvbnNbaV18fDE9PT1lLnN0ZXA/Im1pZGRsZSI6InN0YXJ0IjtkLnNlbGVjdEFsbCgidGV4dCIpLnRleHQoZS5mb3JtYXR0ZXIpLnN0eWxlKCJ0ZXh0LWFuY2hvciIsZil9LHUucHJvdG90eXBlLl9yZW5kZXJUaWNrTWFya3M9ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLl90aWVyTWFya0NvbnRhaW5lcnNbZV0uc2VsZWN0QWxsKCIuIitsLkF4aXMuVElDS19NQVJLX0NMQVNTKS5kYXRhKHQpLHI9aS5lbnRlcigpLmFwcGVuZCgibGluZSIpLmNsYXNzZWQobC5BeGlzLlRJQ0tfTUFSS19DTEFTUywhMCkubWVyZ2UoaSksbz10aGlzLl9nZW5lcmF0ZVRpY2tNYXJrQXR0ckhhc2goKSxhPXRoaXMuX3RpZXJIZWlnaHRzLnNsaWNlKDAsZSkucmVkdWNlKChmdW5jdGlvbih0LGUpe3JldHVybiB0K2V9KSwwKTsiYm90dG9tIj09PXRoaXMub3JpZW50YXRpb24oKT8oby55MT1hLG8ueTI9YSsoImNlbnRlciI9PT10aGlzLl90aWVyTGFiZWxQb3NpdGlvbnNbZV0/dGhpcy5pbm5lclRpY2tMZW5ndGgoKTp0aGlzLl90aWVySGVpZ2h0c1tlXSkpOihvLnkxPXRoaXMuaGVpZ2h0KCktYSxvLnkyPXRoaXMuaGVpZ2h0KCktKGErKCJjZW50ZXIiPT09dGhpcy5fdGllckxhYmVsUG9zaXRpb25zW2VdP3RoaXMuaW5uZXJUaWNrTGVuZ3RoKCk6dGhpcy5fdGllckhlaWdodHNbZV0pKSksci5hdHRycyhvKSwiYm90dG9tIj09PXRoaXMub3JpZW50YXRpb24oKT8oby55MT1hLG8ueTI9YSsoImNlbnRlciI9PT10aGlzLl90aWVyTGFiZWxQb3NpdGlvbnNbZV0/dGhpcy5lbmRUaWNrTGVuZ3RoKCk6dGhpcy5fdGllckhlaWdodHNbZV0pKTooby55MT10aGlzLmhlaWdodCgpLWEsby55Mj10aGlzLmhlaWdodCgpLShhKygiY2VudGVyIj09PXRoaXMuX3RpZXJMYWJlbFBvc2l0aW9uc1tlXT90aGlzLmVuZFRpY2tMZW5ndGgoKTp0aGlzLl90aWVySGVpZ2h0c1tlXSkpKSxuLnNlbGVjdChyLm5vZGVzKClbMF0pLmF0dHJzKG8pLG4uc2VsZWN0KHIubm9kZXMoKVtyLnNpemUoKS0xXSkuYXR0cnMobyksbi5zZWxlY3Qoci5ub2RlcygpWzBdKS5jbGFzc2VkKGwuQXhpcy5FTkRfVElDS19NQVJLX0NMQVNTLCEwKSxuLnNlbGVjdChyLm5vZGVzKClbci5zaXplKCktMV0pLmNsYXNzZWQobC5BeGlzLkVORF9USUNLX01BUktfQ0xBU1MsITApLGkuZXhpdCgpLnJlbW92ZSgpfSx1LnByb3RvdHlwZS5fcmVuZGVyTGFiZWxsZXNzVGlja01hcmtzPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX3RpY2tNYXJrQ29udGFpbmVyLnNlbGVjdEFsbCgiLiIrbC5BeGlzLlRJQ0tfTUFSS19DTEFTUykuZGF0YSh0KSxuPWUuZW50ZXIoKS5hcHBlbmQoImxpbmUiKS5jbGFzc2VkKGwuQXhpcy5USUNLX01BUktfQ0xBU1MsITApLm1lcmdlKGUpLGk9dGhpcy5fZ2VuZXJhdGVUaWNrTWFya0F0dHJIYXNoKCk7aS55Mj0iYm90dG9tIj09PXRoaXMub3JpZW50YXRpb24oKT90aGlzLnRpY2tMYWJlbFBhZGRpbmcoKTp0aGlzLmhlaWdodCgpLXRoaXMudGlja0xhYmVsUGFkZGluZygpLG4uYXR0cnMoaSksZS5leGl0KCkucmVtb3ZlKCl9LHUucHJvdG90eXBlLl9nZW5lcmF0ZUxhYmVsbGVzc1RpY2tzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX21vc3RQcmVjaXNlQ29uZmlnSW5kZXg8MT9bXTp0aGlzLl9nZXRUaWNrSW50ZXJ2YWxWYWx1ZXModGhpcy5fcG9zc2libGVUaW1lQXhpc0NvbmZpZ3VyYXRpb25zW3RoaXMuX21vc3RQcmVjaXNlQ29uZmlnSW5kZXgtMV1bMF0pfSx1LnByb3RvdHlwZS5yZW5kZXJJbW1lZGlhdGVseT1mdW5jdGlvbigpe3ZhciB0PXRoaXM7dGhpcy5fbW9zdFByZWNpc2VDb25maWdJbmRleD10aGlzLl9nZXRNb3N0UHJlY2lzZUNvbmZpZ3VyYXRpb25JbmRleCgpO3ZhciBlPXRoaXMuX3Bvc3NpYmxlVGltZUF4aXNDb25maWd1cmF0aW9uc1t0aGlzLl9tb3N0UHJlY2lzZUNvbmZpZ0luZGV4XTt0aGlzLl9jbGVhblRpZXJzKCksZS5mb3JFYWNoKChmdW5jdGlvbihlLG4pe3JldHVybiB0Ll9yZW5kZXJUaWVyTGFiZWxzKHQuX3RpZXJMYWJlbENvbnRhaW5lcnNbbl0sZSxuKX0pKTtmb3IodmFyIG49ZS5tYXAoKGZ1bmN0aW9uKGUsbil7cmV0dXJuIHQuX2dldFRpY2tWYWx1ZXNGb3JDb25maWd1cmF0aW9uKGUpfSkpLGk9MCxyPTA7cjxNYXRoLm1heChlLmxlbmd0aCwxKTsrK3Ipe3ZhciBvPXRoaXMuX2dlbmVyYXRlQmFzZWxpbmVBdHRySGFzaCgpO28ueTErPSJib3R0b20iPT09dGhpcy5vcmllbnRhdGlvbigpP2k6LWksby55Mj1vLnkxLHRoaXMuX3RpZXJCYXNlbGluZXNbcl0uYXR0cnMobykuc3R5bGUoInZpc2liaWxpdHkiLCJpbmhlcml0IiksaSs9dGhpcy5fdGllckhlaWdodHNbcl19dmFyIGE9W10scz10aGlzLl9zY2FsZS5kb21haW4oKSxsPXRoaXMuX3NjYWxlLnNjYWxlKHNbMV0pLXRoaXMuX3NjYWxlLnNjYWxlKHNbMF0pOzEuNSp0aGlzLl9nZXRJbnRlcnZhbExlbmd0aChlWzBdKT49bCYmKGE9dGhpcy5fZ2VuZXJhdGVMYWJlbGxlc3NUaWNrcygpKSx0aGlzLl9yZW5kZXJMYWJlbGxlc3NUaWNrTWFya3MoYSksdGhpcy5faGlkZU92ZXJmbG93aW5nVGllcnMoKTtmb3Iocj0wO3I8ZS5sZW5ndGg7KytyKXRoaXMuX3JlbmRlclRpY2tNYXJrcyhuW3JdLHIpLHRoaXMuX2hpZGVPdmVybGFwcGluZ0FuZEN1dE9mZkxhYmVscyhyKTtyZXR1cm4gdGhpcy5hbm5vdGF0aW9uc0VuYWJsZWQoKT90aGlzLl9kcmF3QW5ub3RhdGlvbnMoKTp0aGlzLl9yZW1vdmVBbm5vdGF0aW9ucygpLHRoaXN9LHUucHJvdG90eXBlLl9oaWRlT3ZlcmZsb3dpbmdUaWVycz1mdW5jdGlvbigpe3ZhciB0PXRoaXMsZT10aGlzLmhlaWdodCgpLG49MDt0aGlzLmNvbnRlbnQoKS5zZWxlY3RBbGwoIi4iK3UuVElNRV9BWElTX1RJRVJfQ0xBU1MpLmF0dHIoInZpc2liaWxpdHkiLChmdW5jdGlvbihpLHIpe3JldHVybihuKz10Ll90aWVySGVpZ2h0c1tyXSk8PWU/ImluaGVyaXQiOiJoaWRkZW4ifSkpfSx1LnByb3RvdHlwZS5faGlkZU92ZXJsYXBwaW5nQW5kQ3V0T2ZmTGFiZWxzPWZ1bmN0aW9uKHQpe3ZhciBlLGk9dGhpcyxyPXRoaXMuZWxlbWVudCgpLm5vZGUoKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxvPXRoaXMuX3RpZXJNYXJrQ29udGFpbmVyc1t0XS5zZWxlY3RBbGwoIi4iK2wuQXhpcy5USUNLX01BUktfQ0xBU1MpLmZpbHRlcigoZnVuY3Rpb24odCxlKXt2YXIgaT1uLnNlbGVjdCh0aGlzKS5zdHlsZSgidmlzaWJpbGl0eSIpO3JldHVybiJ2aXNpYmxlIj09PWl8fCJpbmhlcml0Ij09PWl9KSkubm9kZXMoKS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpfSkpO3RoaXMuX3RpZXJMYWJlbENvbnRhaW5lcnNbdF0uc2VsZWN0QWxsKCIuIitsLkF4aXMuVElDS19MQUJFTF9DTEFTUykuZmlsdGVyKChmdW5jdGlvbih0LGUpe3ZhciBpPW4uc2VsZWN0KHRoaXMpLnN0eWxlKCJ2aXNpYmlsaXR5Iik7cmV0dXJuInZpc2libGUiPT09aXx8ImluaGVyaXQiPT09aX0pKS5lYWNoKChmdW5jdGlvbih0LHMpe3ZhciBsLGM9dGhpcy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSx1PW4uc2VsZWN0KHRoaXMpLGg9b1tzXSxkPW9bcysxXSxwPW51bGwhPWUmJmEuRE9NLmNsaWVudFJlY3RzT3ZlcmxhcChjLGUpLGY9bnVsbCE9aCYmYS5ET00uY2xpZW50UmVjdHNPdmVybGFwKGMsaCksbT1udWxsIT1kJiZhLkRPTS5jbGllbnRSZWN0c092ZXJsYXAoYyxkKTtsPWMsIShNYXRoLmZsb29yKHIubGVmdCk8PU1hdGguY2VpbChsLmxlZnQpJiZNYXRoLmZsb29yKHIudG9wKTw9TWF0aC5jZWlsKGwudG9wKSYmTWF0aC5mbG9vcihsLnJpZ2h0KTw9TWF0aC5jZWlsKHIubGVmdCtpLndpZHRoKCkpJiZNYXRoLmZsb29yKGwuYm90dG9tKTw9TWF0aC5jZWlsKHIudG9wK2kuaGVpZ2h0KCkpKXx8cHx8Znx8bT91LnN0eWxlKCJ2aXNpYmlsaXR5IiwiaGlkZGVuIik6KGU9Yyx1LnN0eWxlKCJ2aXNpYmlsaXR5IiwiaW5oZXJpdCIpKX0pKX0sdS5wcm90b3R5cGUuaW52YWxpZGF0ZUNhY2hlPWZ1bmN0aW9uKCl7cy5wcm90b3R5cGUuaW52YWxpZGF0ZUNhY2hlLmNhbGwodGhpcyksdGhpcy5fbWVhc3VyZXIucmVzZXQoKX0sdS5USU1FX0FYSVNfVElFUl9DTEFTUz0idGltZS1heGlzLXRpZXIiLHUuX1NPUlRFRF9USU1FX0lOVEVSVkFMX0lOREVYPSgoYz17fSlbdC5UaW1lSW50ZXJ2YWwuc2Vjb25kXT0wLGNbdC5UaW1lSW50ZXJ2YWwubWludXRlXT0xLGNbdC5UaW1lSW50ZXJ2YWwuaG91cl09MixjW3QuVGltZUludGVydmFsLmRheV09MyxjW3QuVGltZUludGVydmFsLndlZWtdPTQsY1t0LlRpbWVJbnRlcnZhbC5tb250aF09NSxjW3QuVGltZUludGVydmFsLnllYXJdPTYsYyksdS5fREVGQVVMVF9USU1FX0FYSVNfQ09ORklHVVJBVElPTlM9ZnVuY3Rpb24oZSl7dmFyIG49ZnVuY3Rpb24odCl7cmV0dXJuIHIudGltZSh0LGUpfTtyZXR1cm5bW3tpbnRlcnZhbDp0LlRpbWVJbnRlcnZhbC5zZWNvbmQsc3RlcDoxLGZvcm1hdHRlcjpuKCIlSTolTTolUyAlcCIpfSx7aW50ZXJ2YWw6dC5UaW1lSW50ZXJ2YWwuZGF5LHN0ZXA6MSxmb3JtYXR0ZXI6bigiJUIgJWUsICVZIil9XSxbe2ludGVydmFsOnQuVGltZUludGVydmFsLnNlY29uZCxzdGVwOjUsZm9ybWF0dGVyOm4oIiVJOiVNOiVTICVwIil9LHtpbnRlcnZhbDp0LlRpbWVJbnRlcnZhbC5kYXksc3RlcDoxLGZvcm1hdHRlcjpuKCIlQiAlZSwgJVkiKX1dLFt7aW50ZXJ2YWw6dC5UaW1lSW50ZXJ2YWwuc2Vjb25kLHN0ZXA6MTAsZm9ybWF0dGVyOm4oIiVJOiVNOiVTICVwIil9LHtpbnRlcnZhbDp0LlRpbWVJbnRlcnZhbC5kYXksc3RlcDoxLGZvcm1hdHRlcjpuKCIlQiAlZSwgJVkiKX1dLFt7aW50ZXJ2YWw6dC5UaW1lSW50ZXJ2YWwuc2Vjb25kLHN0ZXA6MTUsZm9ybWF0dGVyOm4oIiVJOiVNOiVTICVwIil9LHtpbnRlcnZhbDp0LlRpbWVJbnRlcnZhbC5kYXksc3RlcDoxLGZvcm1hdHRlcjpuKCIlQiAlZSwgJVkiKX1dLFt7aW50ZXJ2YWw6dC5UaW1lSW50ZXJ2YWwuc2Vjb25kLHN0ZXA6MzAsZm9ybWF0dGVyOm4oIiVJOiVNOiVTICVwIil9LHtpbnRlcnZhbDp0LlRpbWVJbnRlcnZhbC5kYXksc3RlcDoxLGZvcm1hdHRlcjpuKCIlQiAlZSwgJVkiKX1dLFt7aW50ZXJ2YWw6dC5UaW1lSW50ZXJ2YWwubWludXRlLHN0ZXA6MSxmb3JtYXR0ZXI6bigiJUk6JU0gJXAiKX0se2ludGVydmFsOnQuVGltZUludGVydmFsLmRheSxzdGVwOjEsZm9ybWF0dGVyOm4oIiVCICVlLCAlWSIpfV0sW3tpbnRlcnZhbDp0LlRpbWVJbnRlcnZhbC5taW51dGUsc3RlcDo1LGZvcm1hdHRlcjpuKCIlSTolTSAlcCIpfSx7aW50ZXJ2YWw6dC5UaW1lSW50ZXJ2YWwuZGF5LHN0ZXA6MSxmb3JtYXR0ZXI6bigiJUIgJWUsICVZIil9XSxbe2ludGVydmFsOnQuVGltZUludGVydmFsLm1pbnV0ZSxzdGVwOjEwLGZvcm1hdHRlcjpuKCIlSTolTSAlcCIpfSx7aW50ZXJ2YWw6dC5UaW1lSW50ZXJ2YWwuZGF5LHN0ZXA6MSxmb3JtYXR0ZXI6bigiJUIgJWUsICVZIil9XSxbe2ludGVydmFsOnQuVGltZUludGVydmFsLm1pbnV0ZSxzdGVwOjE1LGZvcm1hdHRlcjpuKCIlSTolTSAlcCIpfSx7aW50ZXJ2YWw6dC5UaW1lSW50ZXJ2YWwuZGF5LHN0ZXA6MSxmb3JtYXR0ZXI6bigiJUIgJWUsICVZIil9XSxbe2ludGVydmFsOnQuVGltZUludGVydmFsLm1pbnV0ZSxzdGVwOjMwLGZvcm1hdHRlcjpuKCIlSTolTSAlcCIpfSx7aW50ZXJ2YWw6dC5UaW1lSW50ZXJ2YWwuZGF5LHN0ZXA6MSxmb3JtYXR0ZXI6bigiJUIgJWUsICVZIil9XSxbe2ludGVydmFsOnQuVGltZUludGVydmFsLmhvdXIsc3RlcDoxLGZvcm1hdHRlcjpuKCIlSSAlcCIpfSx7aW50ZXJ2YWw6dC5UaW1lSW50ZXJ2YWwuZGF5LHN0ZXA6MSxmb3JtYXR0ZXI6bigiJUIgJWUsICVZIil9XSxbe2ludGVydmFsOnQuVGltZUludGVydmFsLmhvdXIsc3RlcDozLGZvcm1hdHRlcjpuKCIlSSAlcCIpfSx7aW50ZXJ2YWw6dC5UaW1lSW50ZXJ2YWwuZGF5LHN0ZXA6MSxmb3JtYXR0ZXI6bigiJUIgJWUsICVZIil9XSxbe2ludGVydmFsOnQuVGltZUludGVydmFsLmhvdXIsc3RlcDo2LGZvcm1hdHRlcjpuKCIlSSAlcCIpfSx7aW50ZXJ2YWw6dC5UaW1lSW50ZXJ2YWwuZGF5LHN0ZXA6MSxmb3JtYXR0ZXI6bigiJUIgJWUsICVZIil9XSxbe2ludGVydmFsOnQuVGltZUludGVydmFsLmhvdXIsc3RlcDoxMixmb3JtYXR0ZXI6bigiJUkgJXAiKX0se2ludGVydmFsOnQuVGltZUludGVydmFsLmRheSxzdGVwOjEsZm9ybWF0dGVyOm4oIiVCICVlLCAlWSIpfV0sW3tpbnRlcnZhbDp0LlRpbWVJbnRlcnZhbC5kYXksc3RlcDoxLGZvcm1hdHRlcjpuKCIlYSAlZSIpfSx7aW50ZXJ2YWw6dC5UaW1lSW50ZXJ2YWwubW9udGgsc3RlcDoxLGZvcm1hdHRlcjpuKCIlQiAlWSIpfV0sW3tpbnRlcnZhbDp0LlRpbWVJbnRlcnZhbC5kYXksc3RlcDoxLGZvcm1hdHRlcjpuKCIlZSIpfSx7aW50ZXJ2YWw6dC5UaW1lSW50ZXJ2YWwubW9udGgsc3RlcDoxLGZvcm1hdHRlcjpuKCIlQiAlWSIpfV0sW3tpbnRlcnZhbDp0LlRpbWVJbnRlcnZhbC5tb250aCxzdGVwOjEsZm9ybWF0dGVyOm4oIiVCIil9LHtpbnRlcnZhbDp0LlRpbWVJbnRlcnZhbC55ZWFyLHN0ZXA6MSxmb3JtYXR0ZXI6bigiJVkiKX1dLFt7aW50ZXJ2YWw6dC5UaW1lSW50ZXJ2YWwubW9udGgsc3RlcDoxLGZvcm1hdHRlcjpuKCIlYiIpfSx7aW50ZXJ2YWw6dC5UaW1lSW50ZXJ2YWwueWVhcixzdGVwOjEsZm9ybWF0dGVyOm4oIiVZIil9XSxbe2ludGVydmFsOnQuVGltZUludGVydmFsLm1vbnRoLHN0ZXA6Myxmb3JtYXR0ZXI6bigiJWIiKX0se2ludGVydmFsOnQuVGltZUludGVydmFsLnllYXIsc3RlcDoxLGZvcm1hdHRlcjpuKCIlWSIpfV0sW3tpbnRlcnZhbDp0LlRpbWVJbnRlcnZhbC5tb250aCxzdGVwOjYsZm9ybWF0dGVyOm4oIiViIil9LHtpbnRlcnZhbDp0LlRpbWVJbnRlcnZhbC55ZWFyLHN0ZXA6MSxmb3JtYXR0ZXI6bigiJVkiKX1dLFt7aW50ZXJ2YWw6dC5UaW1lSW50ZXJ2YWwueWVhcixzdGVwOjEsZm9ybWF0dGVyOm4oIiVZIil9XSxbe2ludGVydmFsOnQuVGltZUludGVydmFsLnllYXIsc3RlcDoxLGZvcm1hdHRlcjpuKCIleSIpfV0sW3tpbnRlcnZhbDp0LlRpbWVJbnRlcnZhbC55ZWFyLHN0ZXA6NSxmb3JtYXR0ZXI6bigiJVkiKX1dLFt7aW50ZXJ2YWw6dC5UaW1lSW50ZXJ2YWwueWVhcixzdGVwOjI1LGZvcm1hdHRlcjpuKCIlWSIpfV0sW3tpbnRlcnZhbDp0LlRpbWVJbnRlcnZhbC55ZWFyLHN0ZXA6NTAsZm9ybWF0dGVyOm4oIiVZIil9XSxbe2ludGVydmFsOnQuVGltZUludGVydmFsLnllYXIsc3RlcDoxMDAsZm9ybWF0dGVyOm4oIiVZIil9XSxbe2ludGVydmFsOnQuVGltZUludGVydmFsLnllYXIsc3RlcDoyMDAsZm9ybWF0dGVyOm4oIiVZIil9XSxbe2ludGVydmFsOnQuVGltZUludGVydmFsLnllYXIsc3RlcDo1MDAsZm9ybWF0dGVyOm4oIiVZIil9XSxbe2ludGVydmFsOnQuVGltZUludGVydmFsLnllYXIsc3RlcDoxZTMsZm9ybWF0dGVyOm4oIiVZIil9XV19LHUuX0xPTkdfREFURT1uZXcgRGF0ZSg5OTk5LDgsMjksMTIsNTksOTk5OSksdX0pKGwuQXhpcyk7dC5UaW1lPXV9KShZdnQpLChmdW5jdGlvbih0KXsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi8KT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBlPUJPO2UuX19leHBvcnRTdGFyKGtndCx0KSxlLl9fZXhwb3J0U3RhcihIdnQsdCksZS5fX2V4cG9ydFN0YXIoWXZ0LHQpfSkoQWd0KTt2YXIgdHh0PXt9LGV4dD17fSxueHQ9e30saXh0PXt9LHJ4dD17fSxveHQ9e30sYXh0PXt9OwovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqLwpPYmplY3QuZGVmaW5lUHJvcGVydHkoYXh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgc3h0PURfdCxseHQ9KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe3RoaXMuX2V2ZW50VG9Qcm9jZXNzaW5nRnVuY3Rpb249e30sdGhpcy5fZXZlbnRUYXJnZXQ9ZG9jdW1lbnQsdGhpcy5fZXZlbnROYW1lVG9DYWxsYmFja1NldD17fSx0aGlzLl9jb25uZWN0ZWQ9ITF9cmV0dXJuIHQucHJvdG90eXBlLl9oYXNOb0NhbGxiYWNrcz1mdW5jdGlvbigpe2Zvcih2YXIgdD1PYmplY3Qua2V5cyh0aGlzLl9ldmVudE5hbWVUb0NhbGxiYWNrU2V0KSxlPTA7ZTx0Lmxlbmd0aDtlKyspaWYoMCE9PXRoaXMuX2V2ZW50TmFtZVRvQ2FsbGJhY2tTZXRbdFtlXV0uc2l6ZSlyZXR1cm4hMTtyZXR1cm4hMH0sdC5wcm90b3R5cGUuX2Nvbm5lY3Q9ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3RoaXMuX2Nvbm5lY3RlZHx8KE9iamVjdC5rZXlzKHRoaXMuX2V2ZW50VG9Qcm9jZXNzaW5nRnVuY3Rpb24pLmZvckVhY2goKGZ1bmN0aW9uKGUpe3QuX2V2ZW50VGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIoZSx0Ll9ldmVudFRvUHJvY2Vzc2luZ0Z1bmN0aW9uW2VdLCJ3aGVlbCI9PT1lP3twYXNzaXZlOiExfTp2b2lkIDApfSkpLHRoaXMuX2Nvbm5lY3RlZD0hMCl9LHQucHJvdG90eXBlLl9kaXNjb25uZWN0PWZ1bmN0aW9uKCl7dmFyIHQ9dGhpczt0aGlzLl9jb25uZWN0ZWQmJnRoaXMuX2hhc05vQ2FsbGJhY2tzKCkmJihPYmplY3Qua2V5cyh0aGlzLl9ldmVudFRvUHJvY2Vzc2luZ0Z1bmN0aW9uKS5mb3JFYWNoKChmdW5jdGlvbihlKXt0Ll9ldmVudFRhcmdldC5yZW1vdmVFdmVudExpc3RlbmVyKGUsdC5fZXZlbnRUb1Byb2Nlc3NpbmdGdW5jdGlvbltlXSl9KSksdGhpcy5fY29ubmVjdGVkPSExKX0sdC5wcm90b3R5cGUuX2FkZENhbGxiYWNrRm9yRXZlbnQ9ZnVuY3Rpb24odCxlKXtudWxsPT10aGlzLl9ldmVudE5hbWVUb0NhbGxiYWNrU2V0W3RdJiYodGhpcy5fZXZlbnROYW1lVG9DYWxsYmFja1NldFt0XT1uZXcgc3h0LkNhbGxiYWNrU2V0KSx0aGlzLl9ldmVudE5hbWVUb0NhbGxiYWNrU2V0W3RdLmFkZChlKSx0aGlzLl9jb25uZWN0KCl9LHQucHJvdG90eXBlLl9yZW1vdmVDYWxsYmFja0ZvckV2ZW50PWZ1bmN0aW9uKHQsZSl7bnVsbCE9dGhpcy5fZXZlbnROYW1lVG9DYWxsYmFja1NldFt0XSYmdGhpcy5fZXZlbnROYW1lVG9DYWxsYmFja1NldFt0XS5kZWxldGUoZSksdGhpcy5fZGlzY29ubmVjdCgpfSx0LnByb3RvdHlwZS5fY2FsbENhbGxiYWNrc0ZvckV2ZW50PWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT1bXSxuPTE7bjxhcmd1bWVudHMubGVuZ3RoO24rKyllW24tMV09YXJndW1lbnRzW25dO3ZhciBpPXRoaXMuX2V2ZW50TmFtZVRvQ2FsbGJhY2tTZXRbdF07bnVsbCE9aSYmaS5jYWxsQ2FsbGJhY2tzLmFwcGx5KGksZSl9LHR9KSgpO2F4dC5EaXNwYXRjaGVyPWx4dCwKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi8KT2JqZWN0LmRlZmluZVByb3BlcnR5KG94dCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIGN4dD1CTyx1eHQ9KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXt2YXIgbj10LmNhbGwodGhpcyl8fHRoaXM7cmV0dXJuIG4uX2V2ZW50VG9Qcm9jZXNzaW5nRnVuY3Rpb25bZS5fS0VZRE9XTl9FVkVOVF9OQU1FXT1mdW5jdGlvbih0KXtyZXR1cm4gbi5fcHJvY2Vzc0tleWRvd24odCl9LG4uX2V2ZW50VG9Qcm9jZXNzaW5nRnVuY3Rpb25bZS5fS0VZVVBfRVZFTlRfTkFNRV09ZnVuY3Rpb24odCl7cmV0dXJuIG4uX3Byb2Nlc3NLZXl1cCh0KX0sbn1yZXR1cm4gY3h0Ll9fZXh0ZW5kcyhlLHQpLGUuZ2V0RGlzcGF0Y2hlcj1mdW5jdGlvbigpe3ZhciB0PWRvY3VtZW50W2UuX0RJU1BBVENIRVJfS0VZXTtyZXR1cm4gbnVsbD09dCYmKHQ9bmV3IGUsZG9jdW1lbnRbZS5fRElTUEFUQ0hFUl9LRVldPXQpLHR9LGUucHJvdG90eXBlLl9wcm9jZXNzS2V5ZG93bj1mdW5jdGlvbih0KXt0aGlzLl9jYWxsQ2FsbGJhY2tzRm9yRXZlbnQoZS5fS0VZRE9XTl9FVkVOVF9OQU1FLHQua2V5Q29kZSx0KX0sZS5wcm90b3R5cGUuX3Byb2Nlc3NLZXl1cD1mdW5jdGlvbih0KXt0aGlzLl9jYWxsQ2FsbGJhY2tzRm9yRXZlbnQoZS5fS0VZVVBfRVZFTlRfTkFNRSx0LmtleUNvZGUsdCl9LGUucHJvdG90eXBlLm9uS2V5RG93bj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fYWRkQ2FsbGJhY2tGb3JFdmVudChlLl9LRVlET1dOX0VWRU5UX05BTUUsdCksdGhpc30sZS5wcm90b3R5cGUub2ZmS2V5RG93bj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fcmVtb3ZlQ2FsbGJhY2tGb3JFdmVudChlLl9LRVlET1dOX0VWRU5UX05BTUUsdCksdGhpc30sZS5wcm90b3R5cGUub25LZXlVcD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fYWRkQ2FsbGJhY2tGb3JFdmVudChlLl9LRVlVUF9FVkVOVF9OQU1FLHQpLHRoaXN9LGUucHJvdG90eXBlLm9mZktleVVwPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9yZW1vdmVDYWxsYmFja0ZvckV2ZW50KGUuX0tFWVVQX0VWRU5UX05BTUUsdCksdGhpc30sZS5fRElTUEFUQ0hFUl9LRVk9Il9fUGxvdHRhYmxlX0Rpc3BhdGNoZXJfS2V5IixlLl9LRVlET1dOX0VWRU5UX05BTUU9ImtleWRvd24iLGUuX0tFWVVQX0VWRU5UX05BTUU9ImtleXVwIixlfSkoYXh0LkRpc3BhdGNoZXIpO294dC5LZXk9dXh0O3ZhciBoeHQ9e307Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovT2JqZWN0LmRlZmluZVByb3BlcnR5KGh4dCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIGR4dD1CTyxweHQ9RF90LGZ4dD0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShuKXt2YXIgaT10LmNhbGwodGhpcyl8fHRoaXM7aS5fbGFzdE1vdXNlUG9zaXRpb249e3g6LTEseTotMX0saS5fdHJhbnNsYXRvcj1weHQuZ2V0VHJhbnNsYXRvcihuKTt2YXIgcj1mdW5jdGlvbih0KXtyZXR1cm4gaS5fbWVhc3VyZUFuZERpc3BhdGNoKG4sdCxlLl9NT1VTRU1PVkVfRVZFTlRfTkFNRSwicGFnZSIpfTtyZXR1cm4gaS5fZXZlbnRUb1Byb2Nlc3NpbmdGdW5jdGlvbltlLl9NT1VTRU9WRVJfRVZFTlRfTkFNRV09cixpLl9ldmVudFRvUHJvY2Vzc2luZ0Z1bmN0aW9uW2UuX01PVVNFTU9WRV9FVkVOVF9OQU1FXT1yLGkuX2V2ZW50VG9Qcm9jZXNzaW5nRnVuY3Rpb25bZS5fTU9VU0VPVVRfRVZFTlRfTkFNRV09cixpLl9ldmVudFRvUHJvY2Vzc2luZ0Z1bmN0aW9uW2UuX01PVVNFRE9XTl9FVkVOVF9OQU1FXT1mdW5jdGlvbih0KXtyZXR1cm4gaS5fbWVhc3VyZUFuZERpc3BhdGNoKG4sdCxlLl9NT1VTRURPV05fRVZFTlRfTkFNRSl9LGkuX2V2ZW50VG9Qcm9jZXNzaW5nRnVuY3Rpb25bZS5fTU9VU0VVUF9FVkVOVF9OQU1FXT1mdW5jdGlvbih0KXtyZXR1cm4gaS5fbWVhc3VyZUFuZERpc3BhdGNoKG4sdCxlLl9NT1VTRVVQX0VWRU5UX05BTUUsInBhZ2UiKX0saS5fZXZlbnRUb1Byb2Nlc3NpbmdGdW5jdGlvbltlLl9XSEVFTF9FVkVOVF9OQU1FXT1mdW5jdGlvbih0KXtyZXR1cm4gaS5fbWVhc3VyZUFuZERpc3BhdGNoKG4sdCxlLl9XSEVFTF9FVkVOVF9OQU1FKX0saS5fZXZlbnRUb1Byb2Nlc3NpbmdGdW5jdGlvbltlLl9EQkxDTElDS19FVkVOVF9OQU1FXT1mdW5jdGlvbih0KXtyZXR1cm4gaS5fbWVhc3VyZUFuZERpc3BhdGNoKG4sdCxlLl9EQkxDTElDS19FVkVOVF9OQU1FKX0saX1yZXR1cm4gZHh0Ll9fZXh0ZW5kcyhlLHQpLGUuZ2V0RGlzcGF0Y2hlcj1mdW5jdGlvbih0KXt2YXIgbj10LnJvb3QoKS5yb290RWxlbWVudCgpLGk9bltlLl9ESVNQQVRDSEVSX0tFWV07cmV0dXJuIG51bGw9PWkmJihpPW5ldyBlKHQpLG5bZS5fRElTUEFUQ0hFUl9LRVldPWkpLGl9LGUucHJvdG90eXBlLm9uTW91c2VNb3ZlPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9hZGRDYWxsYmFja0ZvckV2ZW50KGUuX01PVVNFTU9WRV9FVkVOVF9OQU1FLHQpLHRoaXN9LGUucHJvdG90eXBlLm9mZk1vdXNlTW92ZT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fcmVtb3ZlQ2FsbGJhY2tGb3JFdmVudChlLl9NT1VTRU1PVkVfRVZFTlRfTkFNRSx0KSx0aGlzfSxlLnByb3RvdHlwZS5vbk1vdXNlRG93bj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fYWRkQ2FsbGJhY2tGb3JFdmVudChlLl9NT1VTRURPV05fRVZFTlRfTkFNRSx0KSx0aGlzfSxlLnByb3RvdHlwZS5vZmZNb3VzZURvd249ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3JlbW92ZUNhbGxiYWNrRm9yRXZlbnQoZS5fTU9VU0VET1dOX0VWRU5UX05BTUUsdCksdGhpc30sZS5wcm90b3R5cGUub25Nb3VzZVVwPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9hZGRDYWxsYmFja0ZvckV2ZW50KGUuX01PVVNFVVBfRVZFTlRfTkFNRSx0KSx0aGlzfSxlLnByb3RvdHlwZS5vZmZNb3VzZVVwPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9yZW1vdmVDYWxsYmFja0ZvckV2ZW50KGUuX01PVVNFVVBfRVZFTlRfTkFNRSx0KSx0aGlzfSxlLnByb3RvdHlwZS5vbldoZWVsPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9hZGRDYWxsYmFja0ZvckV2ZW50KGUuX1dIRUVMX0VWRU5UX05BTUUsdCksdGhpc30sZS5wcm90b3R5cGUub2ZmV2hlZWw9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3JlbW92ZUNhbGxiYWNrRm9yRXZlbnQoZS5fV0hFRUxfRVZFTlRfTkFNRSx0KSx0aGlzfSxlLnByb3RvdHlwZS5vbkRibENsaWNrPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9hZGRDYWxsYmFja0ZvckV2ZW50KGUuX0RCTENMSUNLX0VWRU5UX05BTUUsdCksdGhpc30sZS5wcm90b3R5cGUub2ZmRGJsQ2xpY2s9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3JlbW92ZUNhbGxiYWNrRm9yRXZlbnQoZS5fREJMQ0xJQ0tfRVZFTlRfTkFNRSx0KSx0aGlzfSxlLnByb3RvdHlwZS5fbWVhc3VyZUFuZERpc3BhdGNoPWZ1bmN0aW9uKHQsZSxuLGkpe2lmKHZvaWQgMD09PWkmJihpPSJlbGVtZW50IiksInBhZ2UiIT09aSYmImVsZW1lbnQiIT09aSl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgc2NvcGUgJyIraSsiJywgbXVzdCBiZSAnZWxlbWVudCcgb3IgJ3BhZ2UnIik7aWYoInBhZ2UiPT09aXx8dGhpcy5ldmVudEluc2lkZSh0LGUpKXt2YXIgcj10aGlzLl90cmFuc2xhdG9yLmNvbXB1dGVQb3NpdGlvbihlLmNsaWVudFgsZS5jbGllbnRZKTt0aGlzLl9sYXN0TW91c2VQb3NpdGlvbj1yLHRoaXMuX2NhbGxDYWxsYmFja3NGb3JFdmVudChuLHRoaXMubGFzdE1vdXNlUG9zaXRpb24oKSxlKX19LGUucHJvdG90eXBlLmV2ZW50SW5zaWRlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHB4dC5UcmFuc2xhdG9yLmlzRXZlbnRJbnNpZGUodCxlKX0sZS5wcm90b3R5cGUubGFzdE1vdXNlUG9zaXRpb249ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbGFzdE1vdXNlUG9zaXRpb259LGUuX0RJU1BBVENIRVJfS0VZPSJfX1Bsb3R0YWJsZV9EaXNwYXRjaGVyX01vdXNlIixlLl9NT1VTRU9WRVJfRVZFTlRfTkFNRT0ibW91c2VvdmVyIixlLl9NT1VTRU1PVkVfRVZFTlRfTkFNRT0ibW91c2Vtb3ZlIixlLl9NT1VTRU9VVF9FVkVOVF9OQU1FPSJtb3VzZW91dCIsZS5fTU9VU0VET1dOX0VWRU5UX05BTUU9Im1vdXNlZG93biIsZS5fTU9VU0VVUF9FVkVOVF9OQU1FPSJtb3VzZXVwIixlLl9XSEVFTF9FVkVOVF9OQU1FPSJ3aGVlbCIsZS5fREJMQ0xJQ0tfRVZFTlRfTkFNRT0iZGJsY2xpY2siLGV9KShheHQuRGlzcGF0Y2hlcik7aHh0Lk1vdXNlPWZ4dDt2YXIgbXh0PXt9OwovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqL09iamVjdC5kZWZpbmVQcm9wZXJ0eShteHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBneHQ9Qk8sX3h0PURfdCx5eHQ9KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUobil7dmFyIGk9dC5jYWxsKHRoaXMpfHx0aGlzO3JldHVybiBpLl90cmFuc2xhdG9yPV94dC5nZXRUcmFuc2xhdG9yKG4pLGkuX2V2ZW50VG9Qcm9jZXNzaW5nRnVuY3Rpb25bZS5fVE9VQ0hTVEFSVF9FVkVOVF9OQU1FXT1mdW5jdGlvbih0KXtyZXR1cm4gaS5fbWVhc3VyZUFuZERpc3BhdGNoKG4sdCxlLl9UT1VDSFNUQVJUX0VWRU5UX05BTUUsInBhZ2UiKX0saS5fZXZlbnRUb1Byb2Nlc3NpbmdGdW5jdGlvbltlLl9UT1VDSE1PVkVfRVZFTlRfTkFNRV09ZnVuY3Rpb24odCl7cmV0dXJuIGkuX21lYXN1cmVBbmREaXNwYXRjaChuLHQsZS5fVE9VQ0hNT1ZFX0VWRU5UX05BTUUsInBhZ2UiKX0saS5fZXZlbnRUb1Byb2Nlc3NpbmdGdW5jdGlvbltlLl9UT1VDSEVORF9FVkVOVF9OQU1FXT1mdW5jdGlvbih0KXtyZXR1cm4gaS5fbWVhc3VyZUFuZERpc3BhdGNoKG4sdCxlLl9UT1VDSEVORF9FVkVOVF9OQU1FLCJwYWdlIil9LGkuX2V2ZW50VG9Qcm9jZXNzaW5nRnVuY3Rpb25bZS5fVE9VQ0hDQU5DRUxfRVZFTlRfTkFNRV09ZnVuY3Rpb24odCl7cmV0dXJuIGkuX21lYXN1cmVBbmREaXNwYXRjaChuLHQsZS5fVE9VQ0hDQU5DRUxfRVZFTlRfTkFNRSwicGFnZSIpfSxpfXJldHVybiBneHQuX19leHRlbmRzKGUsdCksZS5nZXREaXNwYXRjaGVyPWZ1bmN0aW9uKHQpe3ZhciBuPXQucm9vdCgpLnJvb3RFbGVtZW50KCksaT1uW2UuX0RJU1BBVENIRVJfS0VZXTtyZXR1cm4gbnVsbD09aSYmKGk9bmV3IGUodCksbltlLl9ESVNQQVRDSEVSX0tFWV09aSksaX0sZS5wcm90b3R5cGUub25Ub3VjaFN0YXJ0PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9hZGRDYWxsYmFja0ZvckV2ZW50KGUuX1RPVUNIU1RBUlRfRVZFTlRfTkFNRSx0KSx0aGlzfSxlLnByb3RvdHlwZS5vZmZUb3VjaFN0YXJ0PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9yZW1vdmVDYWxsYmFja0ZvckV2ZW50KGUuX1RPVUNIU1RBUlRfRVZFTlRfTkFNRSx0KSx0aGlzfSxlLnByb3RvdHlwZS5vblRvdWNoTW92ZT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fYWRkQ2FsbGJhY2tGb3JFdmVudChlLl9UT1VDSE1PVkVfRVZFTlRfTkFNRSx0KSx0aGlzfSxlLnByb3RvdHlwZS5vZmZUb3VjaE1vdmU9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3JlbW92ZUNhbGxiYWNrRm9yRXZlbnQoZS5fVE9VQ0hNT1ZFX0VWRU5UX05BTUUsdCksdGhpc30sZS5wcm90b3R5cGUub25Ub3VjaEVuZD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fYWRkQ2FsbGJhY2tGb3JFdmVudChlLl9UT1VDSEVORF9FVkVOVF9OQU1FLHQpLHRoaXN9LGUucHJvdG90eXBlLm9mZlRvdWNoRW5kPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9yZW1vdmVDYWxsYmFja0ZvckV2ZW50KGUuX1RPVUNIRU5EX0VWRU5UX05BTUUsdCksdGhpc30sZS5wcm90b3R5cGUub25Ub3VjaENhbmNlbD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fYWRkQ2FsbGJhY2tGb3JFdmVudChlLl9UT1VDSENBTkNFTF9FVkVOVF9OQU1FLHQpLHRoaXN9LGUucHJvdG90eXBlLm9mZlRvdWNoQ2FuY2VsPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9yZW1vdmVDYWxsYmFja0ZvckV2ZW50KGUuX1RPVUNIQ0FOQ0VMX0VWRU5UX05BTUUsdCksdGhpc30sZS5wcm90b3R5cGUuX21lYXN1cmVBbmREaXNwYXRjaD1mdW5jdGlvbih0LGUsbixpKXtpZih2b2lkIDA9PT1pJiYoaT0iZWxlbWVudCIpLCJwYWdlIiE9PWkmJiJlbGVtZW50IiE9PWkpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIHNjb3BlICciK2krIicsIG11c3QgYmUgJ2VsZW1lbnQnIG9yICdwYWdlJyIpO2lmKCJlbGVtZW50IiE9PWl8fHRoaXMuZXZlbnRJbnNpZGUodCxlKSl7Zm9yKHZhciByPWUuY2hhbmdlZFRvdWNoZXMsbz17fSxhPVtdLHM9MDtzPHIubGVuZ3RoO3MrKyl7dmFyIGw9cltzXSxjPWwuaWRlbnRpZmllcix1PXRoaXMuX3RyYW5zbGF0b3IuY29tcHV0ZVBvc2l0aW9uKGwuY2xpZW50WCxsLmNsaWVudFkpO251bGwhPXUmJihvW2NdPXUsYS5wdXNoKGMpKX1hLmxlbmd0aD4wJiZ0aGlzLl9jYWxsQ2FsbGJhY2tzRm9yRXZlbnQobixhLG8sZSl9fSxlLnByb3RvdHlwZS5ldmVudEluc2lkZT1mdW5jdGlvbih0LGUpe3JldHVybiBfeHQuVHJhbnNsYXRvci5pc0V2ZW50SW5zaWRlKHQsZSl9LGUuX0RJU1BBVENIRVJfS0VZPSJfX1Bsb3R0YWJsZV9EaXNwYXRjaGVyX1RvdWNoIixlLl9UT1VDSFNUQVJUX0VWRU5UX05BTUU9InRvdWNoc3RhcnQiLGUuX1RPVUNITU9WRV9FVkVOVF9OQU1FPSJ0b3VjaG1vdmUiLGUuX1RPVUNIRU5EX0VWRU5UX05BTUU9InRvdWNoZW5kIixlLl9UT1VDSENBTkNFTF9FVkVOVF9OQU1FPSJ0b3VjaGNhbmNlbCIsZX0pKGF4dC5EaXNwYXRjaGVyKTtteHQuVG91Y2g9eXh0LChmdW5jdGlvbih0KXsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi8KT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBlPUJPO2UuX19leHBvcnRTdGFyKG94dCx0KSxlLl9fZXhwb3J0U3RhcihoeHQsdCksZS5fX2V4cG9ydFN0YXIobXh0LHQpfSkocnh0KTt2YXIgdnh0PXt9OwovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqL09iamVjdC5kZWZpbmVQcm9wZXJ0eSh2eHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBieHQ9KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe3ZhciB0PXRoaXM7dGhpcy5fYW5jaG9yQ2FsbGJhY2s9ZnVuY3Rpb24oZSl7cmV0dXJuIHQuX2FuY2hvcihlKX0sdGhpcy5fZW5hYmxlZD0hMH1yZXR1cm4gdC5wcm90b3R5cGUuYXR0YWNoVG89ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2Rpc2Nvbm5lY3QoKSx0aGlzLl9jb21wb25lbnRBdHRhY2hlZFRvPXQsdGhpcy5fY29ubmVjdCgpLHRoaXN9LHQucHJvdG90eXBlLmRldGFjaEZyb209ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZGV0YWNoKCl9LHQucHJvdG90eXBlLmRldGFjaD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9kaXNjb25uZWN0KCksdGhpcy5fY29tcG9uZW50QXR0YWNoZWRUbz1udWxsLHRoaXN9LHQucHJvdG90eXBlLmVuYWJsZWQ9ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5fZW5hYmxlZDoodGhpcy5fZW5hYmxlZD10LHRoaXMuX2VuYWJsZWQ/dGhpcy5fY29ubmVjdCgpOnRoaXMuX2Rpc2Nvbm5lY3QoKSx0aGlzKX0sdC5wcm90b3R5cGUuX2FuY2hvcj1mdW5jdGlvbih0KXt0aGlzLl9pc0FuY2hvcmVkPSEwfSx0LnByb3RvdHlwZS5fdW5hbmNob3I9ZnVuY3Rpb24oKXt0aGlzLl9pc0FuY2hvcmVkPSExfSx0LnByb3RvdHlwZS5fdHJhbnNsYXRlVG9Db21wb25lbnRTcGFjZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9jb21wb25lbnRBdHRhY2hlZFRvLm9yaWdpblRvUm9vdCgpO3JldHVybnt4OnQueC1lLngseTp0LnktZS55fX0sdC5wcm90b3R5cGUuX2lzSW5zaWRlQ29tcG9uZW50PWZ1bmN0aW9uKHQpe3JldHVybiAwPD10LngmJjA8PXQueSYmdC54PD10aGlzLl9jb21wb25lbnRBdHRhY2hlZFRvLndpZHRoKCkmJnQueTw9dGhpcy5fY29tcG9uZW50QXR0YWNoZWRUby5oZWlnaHQoKX0sdC5wcm90b3R5cGUuX2Nvbm5lY3Q9ZnVuY3Rpb24oKXt0aGlzLmVuYWJsZWQoKSYmbnVsbCE9dGhpcy5fY29tcG9uZW50QXR0YWNoZWRUbyYmIXRoaXMuX2lzQW5jaG9yZWQmJnRoaXMuX2NvbXBvbmVudEF0dGFjaGVkVG8ub25BbmNob3IodGhpcy5fYW5jaG9yQ2FsbGJhY2spfSx0LnByb3RvdHlwZS5fZGlzY29ubmVjdD1mdW5jdGlvbigpe3RoaXMuX2lzQW5jaG9yZWQmJnRoaXMuX3VuYW5jaG9yKCksbnVsbCE9dGhpcy5fY29tcG9uZW50QXR0YWNoZWRUbyYmdGhpcy5fY29tcG9uZW50QXR0YWNoZWRUby5vZmZBbmNob3IodGhpcy5fYW5jaG9yQ2FsbGJhY2spfSx0fSkoKTt2eHQuSW50ZXJhY3Rpb249Ynh0LAovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqLwpPYmplY3QuZGVmaW5lUHJvcGVydHkoaXh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgeHh0PUJPLHd4dD1yeHQsU3h0PURfdCxNeHQ9KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXt2YXIgZT1udWxsIT09dCYmdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fHRoaXM7cmV0dXJuIGUuX2NsaWNrZWREb3duPSExLGUuX2RvdWJsZUNsaWNraW5nPSExLGUuX29uQ2xpY2tDYWxsYmFja3M9bmV3IFN4dC5DYWxsYmFja1NldCxlLl9vbkRvdWJsZUNsaWNrQ2FsbGJhY2tzPW5ldyBTeHQuQ2FsbGJhY2tTZXQsZS5fbW91c2VEb3duQ2FsbGJhY2s9ZnVuY3Rpb24odCxuKXtyZXR1cm4gZS5faGFuZGxlQ2xpY2tEb3duKHQsbil9LGUuX21vdXNlVXBDYWxsYmFjaz1mdW5jdGlvbih0LG4pe3JldHVybiBlLl9oYW5kbGVDbGlja1VwKHQsbil9LGUuX2RibENsaWNrQ2FsbGJhY2s9ZnVuY3Rpb24odCxuKXtyZXR1cm4gZS5faGFuZGxlRGJsQ2xpY2sodCxuKX0sZS5fdG91Y2hTdGFydENhbGxiYWNrPWZ1bmN0aW9uKHQsbixpKXtyZXR1cm4gZS5faGFuZGxlQ2xpY2tEb3duKG5bdFswXV0saSl9LGUuX3RvdWNoRW5kQ2FsbGJhY2s9ZnVuY3Rpb24odCxuLGkpe3JldHVybiBlLl9oYW5kbGVDbGlja1VwKG5bdFswXV0saSl9LGUuX3RvdWNoQ2FuY2VsQ2FsbGJhY2s9ZnVuY3Rpb24odCxuKXtyZXR1cm4gZS5fY2xpY2tlZERvd249ITF9LGV9cmV0dXJuIHh4dC5fX2V4dGVuZHMoZSx0KSxlLnByb3RvdHlwZS5fYW5jaG9yPWZ1bmN0aW9uKGUpe3QucHJvdG90eXBlLl9hbmNob3IuY2FsbCh0aGlzLGUpLHRoaXMuX21vdXNlRGlzcGF0Y2hlcj13eHQuTW91c2UuZ2V0RGlzcGF0Y2hlcihlKSx0aGlzLl9tb3VzZURpc3BhdGNoZXIub25Nb3VzZURvd24odGhpcy5fbW91c2VEb3duQ2FsbGJhY2spLHRoaXMuX21vdXNlRGlzcGF0Y2hlci5vbk1vdXNlVXAodGhpcy5fbW91c2VVcENhbGxiYWNrKSx0aGlzLl9tb3VzZURpc3BhdGNoZXIub25EYmxDbGljayh0aGlzLl9kYmxDbGlja0NhbGxiYWNrKSx0aGlzLl90b3VjaERpc3BhdGNoZXI9d3h0LlRvdWNoLmdldERpc3BhdGNoZXIoZSksdGhpcy5fdG91Y2hEaXNwYXRjaGVyLm9uVG91Y2hTdGFydCh0aGlzLl90b3VjaFN0YXJ0Q2FsbGJhY2spLHRoaXMuX3RvdWNoRGlzcGF0Y2hlci5vblRvdWNoRW5kKHRoaXMuX3RvdWNoRW5kQ2FsbGJhY2spLHRoaXMuX3RvdWNoRGlzcGF0Y2hlci5vblRvdWNoQ2FuY2VsKHRoaXMuX3RvdWNoQ2FuY2VsQ2FsbGJhY2spfSxlLnByb3RvdHlwZS5fdW5hbmNob3I9ZnVuY3Rpb24oKXt0LnByb3RvdHlwZS5fdW5hbmNob3IuY2FsbCh0aGlzKSx0aGlzLl9tb3VzZURpc3BhdGNoZXIub2ZmTW91c2VEb3duKHRoaXMuX21vdXNlRG93bkNhbGxiYWNrKSx0aGlzLl9tb3VzZURpc3BhdGNoZXIub2ZmTW91c2VVcCh0aGlzLl9tb3VzZVVwQ2FsbGJhY2spLHRoaXMuX21vdXNlRGlzcGF0Y2hlci5vZmZEYmxDbGljayh0aGlzLl9kYmxDbGlja0NhbGxiYWNrKSx0aGlzLl9tb3VzZURpc3BhdGNoZXI9bnVsbCx0aGlzLl90b3VjaERpc3BhdGNoZXIub2ZmVG91Y2hTdGFydCh0aGlzLl90b3VjaFN0YXJ0Q2FsbGJhY2spLHRoaXMuX3RvdWNoRGlzcGF0Y2hlci5vZmZUb3VjaEVuZCh0aGlzLl90b3VjaEVuZENhbGxiYWNrKSx0aGlzLl90b3VjaERpc3BhdGNoZXIub2ZmVG91Y2hDYW5jZWwodGhpcy5fdG91Y2hDYW5jZWxDYWxsYmFjayksdGhpcy5fdG91Y2hEaXNwYXRjaGVyPW51bGx9LGUucHJvdG90eXBlLl9oYW5kbGVDbGlja0Rvd249ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzLl90cmFuc2xhdGVUb0NvbXBvbmVudFNwYWNlKHQpO3RoaXMuX2lzSW5zaWRlQ29tcG9uZW50KG4pJiYodGhpcy5fY2xpY2tlZERvd249ITAsdGhpcy5fY2xpY2tlZFBvaW50PW4pfSxlLnByb3RvdHlwZS5faGFuZGxlQ2xpY2tVcD1mdW5jdGlvbih0LG4pe3ZhciBpPXRoaXMscj10aGlzLl90cmFuc2xhdGVUb0NvbXBvbmVudFNwYWNlKHQpO3RoaXMuX2NsaWNrZWREb3duJiZlLl9wb2ludHNFcXVhbChyLHRoaXMuX2NsaWNrZWRQb2ludCkmJnNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7aS5fZG91YmxlQ2xpY2tpbmd8fGkuX29uQ2xpY2tDYWxsYmFja3MuY2FsbENhbGxiYWNrcyhyLG4pfSksMCksdGhpcy5fY2xpY2tlZERvd249ITF9LGUucHJvdG90eXBlLl9oYW5kbGVEYmxDbGljaz1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMsaT10aGlzLl90cmFuc2xhdGVUb0NvbXBvbmVudFNwYWNlKHQpO3RoaXMuX2RvdWJsZUNsaWNraW5nPSEwLHRoaXMuX29uRG91YmxlQ2xpY2tDYWxsYmFja3MuY2FsbENhbGxiYWNrcyhpLGUpLHNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7cmV0dXJuIG4uX2RvdWJsZUNsaWNraW5nPSExfSksMCl9LGUuX3BvaW50c0VxdWFsPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQueD09PWUueCYmdC55PT09ZS55fSxlLnByb3RvdHlwZS5vbkNsaWNrPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9vbkNsaWNrQ2FsbGJhY2tzLmFkZCh0KSx0aGlzfSxlLnByb3RvdHlwZS5vZmZDbGljaz1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fb25DbGlja0NhbGxiYWNrcy5kZWxldGUodCksdGhpc30sZS5wcm90b3R5cGUub25Eb3VibGVDbGljaz1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fb25Eb3VibGVDbGlja0NhbGxiYWNrcy5hZGQodCksdGhpc30sZS5wcm90b3R5cGUub2ZmRG91YmxlQ2xpY2s9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX29uRG91YmxlQ2xpY2tDYWxsYmFja3MuZGVsZXRlKHQpLHRoaXN9LGV9KSh2eHQuSW50ZXJhY3Rpb24pO2l4dC5DbGljaz1NeHQ7dmFyIEV4dD17fTsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi9PYmplY3QuZGVmaW5lUHJvcGVydHkoRXh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgVHh0PUJPLEN4dD1yeHQsQXh0PURfdCxreHQ9KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUobil7dmFyIGk9dC5jYWxsKHRoaXMpfHx0aGlzO3JldHVybiBpLl9kcmFnZ2luZz0hMSxpLl9jb25zdHJhaW5lZFRvQ29tcG9uZW50PSEwLGkuX21vdXNlRmlsdGVyPWUuX0RFRkFVTFRfTU9VU0VfRklMVEVSLGkuX2RyYWdTdGFydENhbGxiYWNrcz1uZXcgQXh0LkNhbGxiYWNrU2V0LGkuX2RyYWdDYWxsYmFja3M9bmV3IEF4dC5DYWxsYmFja1NldCxpLl9kcmFnRW5kQ2FsbGJhY2tzPW5ldyBBeHQuQ2FsbGJhY2tTZXQsaS5fbW91c2VEb3duQ2FsbGJhY2s9ZnVuY3Rpb24odCxlKXtyZXR1cm4gaS5fc3RhcnREcmFnKHQsZSl9LGkuX21vdXNlTW92ZUNhbGxiYWNrPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGkuX2RvRHJhZyh0LGUpfSxpLl9tb3VzZVVwQ2FsbGJhY2s9ZnVuY3Rpb24odCxlKXtyZXR1cm4gaS5fZW5kRHJhZyh0LGUpfSxpLl90b3VjaFN0YXJ0Q2FsbGJhY2s9ZnVuY3Rpb24odCxlLG4pe3JldHVybiBpLl9zdGFydERyYWcoZVt0WzBdXSxuKX0saS5fdG91Y2hNb3ZlQ2FsbGJhY2s9ZnVuY3Rpb24odCxlLG4pe3JldHVybiBpLl9kb0RyYWcoZVt0WzBdXSxuKX0saS5fdG91Y2hFbmRDYWxsYmFjaz1mdW5jdGlvbih0LGUsbil7cmV0dXJuIGkuX2VuZERyYWcoZVt0WzBdXSxuKX0saS5fbW91c2VCdXR0b249dm9pZCAwIT09bj9uOjAsaX1yZXR1cm4gVHh0Ll9fZXh0ZW5kcyhlLHQpLGUucHJvdG90eXBlLl9hbmNob3I9ZnVuY3Rpb24oZSl7dC5wcm90b3R5cGUuX2FuY2hvci5jYWxsKHRoaXMsZSksdGhpcy5fbW91c2VEaXNwYXRjaGVyPUN4dC5Nb3VzZS5nZXREaXNwYXRjaGVyKHRoaXMuX2NvbXBvbmVudEF0dGFjaGVkVG8pLHRoaXMuX21vdXNlRGlzcGF0Y2hlci5vbk1vdXNlRG93bih0aGlzLl9tb3VzZURvd25DYWxsYmFjayksdGhpcy5fbW91c2VEaXNwYXRjaGVyLm9uTW91c2VNb3ZlKHRoaXMuX21vdXNlTW92ZUNhbGxiYWNrKSx0aGlzLl9tb3VzZURpc3BhdGNoZXIub25Nb3VzZVVwKHRoaXMuX21vdXNlVXBDYWxsYmFjayksdGhpcy5fdG91Y2hEaXNwYXRjaGVyPUN4dC5Ub3VjaC5nZXREaXNwYXRjaGVyKHRoaXMuX2NvbXBvbmVudEF0dGFjaGVkVG8pLHRoaXMuX3RvdWNoRGlzcGF0Y2hlci5vblRvdWNoU3RhcnQodGhpcy5fdG91Y2hTdGFydENhbGxiYWNrKSx0aGlzLl90b3VjaERpc3BhdGNoZXIub25Ub3VjaE1vdmUodGhpcy5fdG91Y2hNb3ZlQ2FsbGJhY2spLHRoaXMuX3RvdWNoRGlzcGF0Y2hlci5vblRvdWNoRW5kKHRoaXMuX3RvdWNoRW5kQ2FsbGJhY2spfSxlLnByb3RvdHlwZS5fdW5hbmNob3I9ZnVuY3Rpb24oKXt0LnByb3RvdHlwZS5fdW5hbmNob3IuY2FsbCh0aGlzKSx0aGlzLl9tb3VzZURpc3BhdGNoZXIub2ZmTW91c2VEb3duKHRoaXMuX21vdXNlRG93bkNhbGxiYWNrKSx0aGlzLl9tb3VzZURpc3BhdGNoZXIub2ZmTW91c2VNb3ZlKHRoaXMuX21vdXNlTW92ZUNhbGxiYWNrKSx0aGlzLl9tb3VzZURpc3BhdGNoZXIub2ZmTW91c2VVcCh0aGlzLl9tb3VzZVVwQ2FsbGJhY2spLHRoaXMuX21vdXNlRGlzcGF0Y2hlcj1udWxsLHRoaXMuX3RvdWNoRGlzcGF0Y2hlci5vZmZUb3VjaFN0YXJ0KHRoaXMuX3RvdWNoU3RhcnRDYWxsYmFjayksdGhpcy5fdG91Y2hEaXNwYXRjaGVyLm9mZlRvdWNoTW92ZSh0aGlzLl90b3VjaE1vdmVDYWxsYmFjayksdGhpcy5fdG91Y2hEaXNwYXRjaGVyLm9mZlRvdWNoRW5kKHRoaXMuX3RvdWNoRW5kQ2FsbGJhY2spLHRoaXMuX3RvdWNoRGlzcGF0Y2hlcj1udWxsfSxlLnByb3RvdHlwZS5fdHJhbnNsYXRlQW5kQ29uc3RyYWluPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX3RyYW5zbGF0ZVRvQ29tcG9uZW50U3BhY2UodCk7cmV0dXJuIHRoaXMuX2NvbnN0cmFpbmVkVG9Db21wb25lbnQ/e3g6QXh0Lk1hdGguY2xhbXAoZS54LDAsdGhpcy5fY29tcG9uZW50QXR0YWNoZWRUby53aWR0aCgpKSx5OkF4dC5NYXRoLmNsYW1wKGUueSwwLHRoaXMuX2NvbXBvbmVudEF0dGFjaGVkVG8uaGVpZ2h0KCkpfTplfSxlLnByb3RvdHlwZS5fc3RhcnREcmFnPWZ1bmN0aW9uKHQsZSl7aWYoIShlIGluc3RhbmNlb2YgTW91c2VFdmVudCl8fHRoaXMuX21vdXNlRmlsdGVyKGUpKXt2YXIgbj10aGlzLl90cmFuc2xhdGVUb0NvbXBvbmVudFNwYWNlKHQpO3RoaXMuX2lzSW5zaWRlQ29tcG9uZW50KG4pJiYoZS5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuX2RyYWdnaW5nPSEwLHRoaXMuX2RyYWdPcmlnaW49bix0aGlzLl9kcmFnU3RhcnRDYWxsYmFja3MuY2FsbENhbGxiYWNrcyh0aGlzLl9kcmFnT3JpZ2luKSl9fSxlLnByb3RvdHlwZS5fZG9EcmFnPWZ1bmN0aW9uKHQsZSl7dGhpcy5fZHJhZ2dpbmcmJnRoaXMuX2RyYWdDYWxsYmFja3MuY2FsbENhbGxiYWNrcyh0aGlzLl9kcmFnT3JpZ2luLHRoaXMuX3RyYW5zbGF0ZUFuZENvbnN0cmFpbih0KSl9LGUucHJvdG90eXBlLl9lbmREcmFnPWZ1bmN0aW9uKHQsZSl7ZSBpbnN0YW5jZW9mIE1vdXNlRXZlbnQmJmUuYnV0dG9uIT09dGhpcy5fbW91c2VCdXR0b258fHRoaXMuX2RyYWdnaW5nJiYodGhpcy5fZHJhZ2dpbmc9ITEsdGhpcy5fZHJhZ0VuZENhbGxiYWNrcy5jYWxsQ2FsbGJhY2tzKHRoaXMuX2RyYWdPcmlnaW4sdGhpcy5fdHJhbnNsYXRlQW5kQ29uc3RyYWluKHQpKSl9LGUucHJvdG90eXBlLmNvbnN0cmFpbmVkVG9Db21wb25lbnQ9ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5fY29uc3RyYWluZWRUb0NvbXBvbmVudDoodGhpcy5fY29uc3RyYWluZWRUb0NvbXBvbmVudD10LHRoaXMpfSxlLnByb3RvdHlwZS5tb3VzZUZpbHRlcj1mdW5jdGlvbih0KXtyZXR1cm4gMD09PWFyZ3VtZW50cy5sZW5ndGg/dGhpcy5fbW91c2VGaWx0ZXI6KHRoaXMuX21vdXNlRmlsdGVyPXQsdGhpcyl9LGUucHJvdG90eXBlLm9uRHJhZ1N0YXJ0PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9kcmFnU3RhcnRDYWxsYmFja3MuYWRkKHQpLHRoaXN9LGUucHJvdG90eXBlLm9mZkRyYWdTdGFydD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fZHJhZ1N0YXJ0Q2FsbGJhY2tzLmRlbGV0ZSh0KSx0aGlzfSxlLnByb3RvdHlwZS5vbkRyYWc9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2RyYWdDYWxsYmFja3MuYWRkKHQpLHRoaXN9LGUucHJvdG90eXBlLm9mZkRyYWc9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2RyYWdDYWxsYmFja3MuZGVsZXRlKHQpLHRoaXN9LGUucHJvdG90eXBlLm9uRHJhZ0VuZD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fZHJhZ0VuZENhbGxiYWNrcy5hZGQodCksdGhpc30sZS5wcm90b3R5cGUub2ZmRHJhZ0VuZD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fZHJhZ0VuZENhbGxiYWNrcy5kZWxldGUodCksdGhpc30sZS5fREVGQVVMVF9NT1VTRV9GSUxURVI9ZnVuY3Rpb24odCl7cmV0dXJuIDA9PT10LmJ1dHRvbn0sZX0pKHZ4dC5JbnRlcmFjdGlvbik7RXh0LkRyYWc9a3h0O3ZhciBMeHQ9e307Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovT2JqZWN0LmRlZmluZVByb3BlcnR5KEx4dCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIFB4dD1CTyxOeHQ9cnh0LEl4dD1EX3QsUnh0PShmdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7dmFyIGU9bnVsbCE9PXQmJnQuYXBwbHkodGhpcyxhcmd1bWVudHMpfHx0aGlzO3JldHVybiBlLl9rZXlQcmVzc0NhbGxiYWNrcz17fSxlLl9rZXlSZWxlYXNlQ2FsbGJhY2tzPXt9LGUuX21vdXNlTW92ZUNhbGxiYWNrPWZ1bmN0aW9uKHQpe3JldHVybiExfSxlLl9kb3duZWRLZXlzPW5ldyBJeHQuU2V0LGUuX2tleURvd25DYWxsYmFjaz1mdW5jdGlvbih0LG4pe3JldHVybiBlLl9oYW5kbGVLZXlEb3duRXZlbnQodCxuKX0sZS5fa2V5VXBDYWxsYmFjaz1mdW5jdGlvbih0KXtyZXR1cm4gZS5faGFuZGxlS2V5VXBFdmVudCh0KX0sZX1yZXR1cm4gUHh0Ll9fZXh0ZW5kcyhlLHQpLGUucHJvdG90eXBlLl9hbmNob3I9ZnVuY3Rpb24oZSl7dC5wcm90b3R5cGUuX2FuY2hvci5jYWxsKHRoaXMsZSksdGhpcy5fcG9zaXRpb25EaXNwYXRjaGVyPU54dC5Nb3VzZS5nZXREaXNwYXRjaGVyKHRoaXMuX2NvbXBvbmVudEF0dGFjaGVkVG8pLHRoaXMuX3Bvc2l0aW9uRGlzcGF0Y2hlci5vbk1vdXNlTW92ZSh0aGlzLl9tb3VzZU1vdmVDYWxsYmFjayksdGhpcy5fa2V5RGlzcGF0Y2hlcj1OeHQuS2V5LmdldERpc3BhdGNoZXIoKSx0aGlzLl9rZXlEaXNwYXRjaGVyLm9uS2V5RG93bih0aGlzLl9rZXlEb3duQ2FsbGJhY2spLHRoaXMuX2tleURpc3BhdGNoZXIub25LZXlVcCh0aGlzLl9rZXlVcENhbGxiYWNrKX0sZS5wcm90b3R5cGUuX3VuYW5jaG9yPWZ1bmN0aW9uKCl7dC5wcm90b3R5cGUuX3VuYW5jaG9yLmNhbGwodGhpcyksdGhpcy5fcG9zaXRpb25EaXNwYXRjaGVyLm9mZk1vdXNlTW92ZSh0aGlzLl9tb3VzZU1vdmVDYWxsYmFjayksdGhpcy5fcG9zaXRpb25EaXNwYXRjaGVyPW51bGwsdGhpcy5fa2V5RGlzcGF0Y2hlci5vZmZLZXlEb3duKHRoaXMuX2tleURvd25DYWxsYmFjayksdGhpcy5fa2V5RGlzcGF0Y2hlci5vZmZLZXlVcCh0aGlzLl9rZXlVcENhbGxiYWNrKSx0aGlzLl9rZXlEaXNwYXRjaGVyPW51bGx9LGUucHJvdG90eXBlLl9oYW5kbGVLZXlEb3duRXZlbnQ9ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzLl90cmFuc2xhdGVUb0NvbXBvbmVudFNwYWNlKHRoaXMuX3Bvc2l0aW9uRGlzcGF0Y2hlci5sYXN0TW91c2VQb3NpdGlvbigpKTt0aGlzLl9pc0luc2lkZUNvbXBvbmVudChuKSYmIWUucmVwZWF0JiYodGhpcy5fa2V5UHJlc3NDYWxsYmFja3NbdF0mJnRoaXMuX2tleVByZXNzQ2FsbGJhY2tzW3RdLmNhbGxDYWxsYmFja3ModCksdGhpcy5fZG93bmVkS2V5cy5hZGQodCkpfSxlLnByb3RvdHlwZS5faGFuZGxlS2V5VXBFdmVudD1mdW5jdGlvbih0KXt0aGlzLl9kb3duZWRLZXlzLmhhcyh0KSYmdGhpcy5fa2V5UmVsZWFzZUNhbGxiYWNrc1t0XSYmdGhpcy5fa2V5UmVsZWFzZUNhbGxiYWNrc1t0XS5jYWxsQ2FsbGJhY2tzKHQpLHRoaXMuX2Rvd25lZEtleXMuZGVsZXRlKHQpfSxlLnByb3RvdHlwZS5vbktleVByZXNzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuX2tleVByZXNzQ2FsbGJhY2tzW3RdfHwodGhpcy5fa2V5UHJlc3NDYWxsYmFja3NbdF09bmV3IEl4dC5DYWxsYmFja1NldCksdGhpcy5fa2V5UHJlc3NDYWxsYmFja3NbdF0uYWRkKGUpLHRoaXN9LGUucHJvdG90eXBlLm9mZktleVByZXNzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuX2tleVByZXNzQ2FsbGJhY2tzW3RdLmRlbGV0ZShlKSwwPT09dGhpcy5fa2V5UHJlc3NDYWxsYmFja3NbdF0uc2l6ZSYmZGVsZXRlIHRoaXMuX2tleVByZXNzQ2FsbGJhY2tzW3RdLHRoaXN9LGUucHJvdG90eXBlLm9uS2V5UmVsZWFzZT1mdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLl9rZXlSZWxlYXNlQ2FsbGJhY2tzW3RdfHwodGhpcy5fa2V5UmVsZWFzZUNhbGxiYWNrc1t0XT1uZXcgSXh0LkNhbGxiYWNrU2V0KSx0aGlzLl9rZXlSZWxlYXNlQ2FsbGJhY2tzW3RdLmFkZChlKSx0aGlzfSxlLnByb3RvdHlwZS5vZmZLZXlSZWxlYXNlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuX2tleVJlbGVhc2VDYWxsYmFja3NbdF0uZGVsZXRlKGUpLDA9PT10aGlzLl9rZXlSZWxlYXNlQ2FsbGJhY2tzW3RdLnNpemUmJmRlbGV0ZSB0aGlzLl9rZXlSZWxlYXNlQ2FsbGJhY2tzW3RdLHRoaXN9LGV9KSh2eHQuSW50ZXJhY3Rpb24pO0x4dC5LZXk9Unh0O3ZhciBPeHQ9e307Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovT2JqZWN0LmRlZmluZVByb3BlcnR5KE94dCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIHp4dD1CTyxEeHQ9d3B0LEJ4dD1yeHQsSHh0PVh2dCxGeHQ9RF90LFZ4dD1ueHQsVXh0PXRidCxqeHQ9KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSxuKXt2YXIgaT10LmNhbGwodGhpcyl8fHRoaXM7cmV0dXJuIGkuX3doZWVsRmlsdGVyPWZ1bmN0aW9uKHQpe3JldHVybiEwfSxpLl93aGVlbENhbGxiYWNrPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGkuX2hhbmRsZVdoZWVsRXZlbnQodCxlKX0saS5fdG91Y2hTdGFydENhbGxiYWNrPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gaS5faGFuZGxlVG91Y2hTdGFydCh0LGUsbil9LGkuX3RvdWNoTW92ZUNhbGxiYWNrPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gaS5faGFuZGxlUGluY2godCxlLG4pfSxpLl90b3VjaEVuZENhbGxiYWNrPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gaS5faGFuZGxlVG91Y2hFbmQodCxlLG4pfSxpLl90b3VjaENhbmNlbENhbGxiYWNrPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gaS5faGFuZGxlVG91Y2hFbmQodCxlLG4pfSxpLl9wYW5FbmRDYWxsYmFja3M9bmV3IEZ4dC5DYWxsYmFja1NldCxpLl96b29tRW5kQ2FsbGJhY2tzPW5ldyBGeHQuQ2FsbGJhY2tTZXQsaS5fcGFuWm9vbVVwZGF0ZUNhbGxiYWNrcz1uZXcgRnh0LkNhbGxiYWNrU2V0LGkuX3hTY2FsZXM9bmV3IEZ4dC5TZXQsaS5feVNjYWxlcz1uZXcgRnh0LlNldCxpLl9kcmFnSW50ZXJhY3Rpb249bmV3IFZ4dC5EcmFnLGkuX3NldHVwRHJhZ0ludGVyYWN0aW9uKCksaS5fdG91Y2hJZHM9RHh0Lm1hcCgpLGkuX21pbkRvbWFpbkV4dGVudHM9bmV3IEZ4dC5NYXAsaS5fbWF4RG9tYWluRXh0ZW50cz1uZXcgRnh0Lk1hcCxpLl9taW5Eb21haW5WYWx1ZXM9bmV3IEZ4dC5NYXAsaS5fbWF4RG9tYWluVmFsdWVzPW5ldyBGeHQuTWFwLG51bGwhPWUmJmkuYWRkWFNjYWxlKGUpLG51bGwhPW4mJmkuYWRkWVNjYWxlKG4pLGl9cmV0dXJuIHp4dC5fX2V4dGVuZHMoZSx0KSxlLnByb3RvdHlwZS5kcmFnSW50ZXJhY3Rpb249ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZHJhZ0ludGVyYWN0aW9ufSxlLnByb3RvdHlwZS53aGVlbEZpbHRlcj1mdW5jdGlvbih0KXtyZXR1cm4gMD09PWFyZ3VtZW50cy5sZW5ndGg/dGhpcy5fd2hlZWxGaWx0ZXI6KHRoaXMuX3doZWVsRmlsdGVyPXQsdGhpcyl9LGUucHJvdG90eXBlLnBhbj1mdW5jdGlvbih0KXt2YXIgZT10aGlzO3RoaXMueFNjYWxlcygpLmZvckVhY2goKGZ1bmN0aW9uKG4pe24ucGFuKGUuX2NvbnN0cmFpbmVkVHJhbnNsYXRpb24obix0LngpKX0pKSx0aGlzLnlTY2FsZXMoKS5mb3JFYWNoKChmdW5jdGlvbihuKXtuLnBhbihlLl9jb25zdHJhaW5lZFRyYW5zbGF0aW9uKG4sdC55KSl9KSksdGhpcy5fcGFuWm9vbVVwZGF0ZUNhbGxiYWNrcy5jYWxsQ2FsbGJhY2tzKCl9LGUucHJvdG90eXBlLnpvb209ZnVuY3Rpb24odCxlLG4pe3ZhciBpLHIsbz10aGlzO3JldHVybiB2b2lkIDA9PT1uJiYobj0hMCksbnVsbCE9ZSYmKGk9ZS54LHI9ZS55LG4mJih0aGlzLnhTY2FsZXMoKS5mb3JFYWNoKChmdW5jdGlvbihlKXt2YXIgbj1vLl9jb25zdHJhaW5lZFpvb20oZSx0LGkpO2k9bi5jZW50ZXJQb2ludCx0PW4uem9vbUFtb3VudH0pKSx0aGlzLnlTY2FsZXMoKS5mb3JFYWNoKChmdW5jdGlvbihlKXt2YXIgbj1vLl9jb25zdHJhaW5lZFpvb20oZSx0LHIpO3I9bi5jZW50ZXJQb2ludCx0PW4uem9vbUFtb3VudH0pKSkpLHRoaXMueFNjYWxlcygpLmZvckVhY2goKGZ1bmN0aW9uKGUpe3ZhciBuPWUucmFuZ2UoKTtlLnpvb20odCxudWxsPT1pPyhuWzFdK25bMF0pLzI6aSl9KSksdGhpcy55U2NhbGVzKCkuZm9yRWFjaCgoZnVuY3Rpb24oZSl7dmFyIG49ZS5yYW5nZSgpO2Uuem9vbSh0LG51bGw9PXI/KG5bMV0rblswXSkvMjpyKX0pKSx0aGlzLl9wYW5ab29tVXBkYXRlQ2FsbGJhY2tzLmNhbGxDYWxsYmFja3MoKSx7em9vbUFtb3VudDp0LGNlbnRlclZhbHVlOntjZW50ZXJYOmksY2VudGVyWTpyfX19LGUucHJvdG90eXBlLl9hbmNob3I9ZnVuY3Rpb24oZSl7dC5wcm90b3R5cGUuX2FuY2hvci5jYWxsKHRoaXMsZSksdGhpcy5fZHJhZ0ludGVyYWN0aW9uLmF0dGFjaFRvKGUpLHRoaXMuX21vdXNlRGlzcGF0Y2hlcj1CeHQuTW91c2UuZ2V0RGlzcGF0Y2hlcih0aGlzLl9jb21wb25lbnRBdHRhY2hlZFRvKSx0aGlzLl9tb3VzZURpc3BhdGNoZXIub25XaGVlbCh0aGlzLl93aGVlbENhbGxiYWNrKSx0aGlzLl90b3VjaERpc3BhdGNoZXI9Qnh0LlRvdWNoLmdldERpc3BhdGNoZXIodGhpcy5fY29tcG9uZW50QXR0YWNoZWRUbyksdGhpcy5fdG91Y2hEaXNwYXRjaGVyLm9uVG91Y2hTdGFydCh0aGlzLl90b3VjaFN0YXJ0Q2FsbGJhY2spLHRoaXMuX3RvdWNoRGlzcGF0Y2hlci5vblRvdWNoTW92ZSh0aGlzLl90b3VjaE1vdmVDYWxsYmFjayksdGhpcy5fdG91Y2hEaXNwYXRjaGVyLm9uVG91Y2hFbmQodGhpcy5fdG91Y2hFbmRDYWxsYmFjayksdGhpcy5fdG91Y2hEaXNwYXRjaGVyLm9uVG91Y2hDYW5jZWwodGhpcy5fdG91Y2hDYW5jZWxDYWxsYmFjayl9LGUucHJvdG90eXBlLl91bmFuY2hvcj1mdW5jdGlvbigpe3QucHJvdG90eXBlLl91bmFuY2hvci5jYWxsKHRoaXMpLHRoaXMuX21vdXNlRGlzcGF0Y2hlci5vZmZXaGVlbCh0aGlzLl93aGVlbENhbGxiYWNrKSx0aGlzLl9tb3VzZURpc3BhdGNoZXI9bnVsbCx0aGlzLl90b3VjaERpc3BhdGNoZXIub2ZmVG91Y2hTdGFydCh0aGlzLl90b3VjaFN0YXJ0Q2FsbGJhY2spLHRoaXMuX3RvdWNoRGlzcGF0Y2hlci5vZmZUb3VjaE1vdmUodGhpcy5fdG91Y2hNb3ZlQ2FsbGJhY2spLHRoaXMuX3RvdWNoRGlzcGF0Y2hlci5vZmZUb3VjaEVuZCh0aGlzLl90b3VjaEVuZENhbGxiYWNrKSx0aGlzLl90b3VjaERpc3BhdGNoZXIub2ZmVG91Y2hDYW5jZWwodGhpcy5fdG91Y2hDYW5jZWxDYWxsYmFjayksdGhpcy5fdG91Y2hEaXNwYXRjaGVyPW51bGwsdGhpcy5fZHJhZ0ludGVyYWN0aW9uLmRldGFjaCgpfSxlLnByb3RvdHlwZS5faGFuZGxlVG91Y2hTdGFydD1mdW5jdGlvbih0LGUsbil7Zm9yKHZhciBpPTA7aTx0Lmxlbmd0aCYmdGhpcy5fdG91Y2hJZHMuc2l6ZSgpPDI7aSsrKXt2YXIgcj10W2ldO3RoaXMuX3RvdWNoSWRzLnNldChyLnRvU3RyaW5nKCksdGhpcy5fdHJhbnNsYXRlVG9Db21wb25lbnRTcGFjZShlW3JdKSl9fSxlLnByb3RvdHlwZS5faGFuZGxlUGluY2g9ZnVuY3Rpb24odCxuLGkpe3ZhciByPXRoaXM7aWYoISh0aGlzLl90b3VjaElkcy5zaXplKCk8Mikpe3ZhciBvPXRoaXMuX3RvdWNoSWRzLnZhbHVlcygpO2lmKHRoaXMuX2lzSW5zaWRlQ29tcG9uZW50KHRoaXMuX3RyYW5zbGF0ZVRvQ29tcG9uZW50U3BhY2Uob1swXSkpJiZ0aGlzLl9pc0luc2lkZUNvbXBvbmVudCh0aGlzLl90cmFuc2xhdGVUb0NvbXBvbmVudFNwYWNlKG9bMV0pKSl7dmFyIGE9ZS5fcG9pbnREaXN0YW5jZShvWzBdLG9bMV0pO2lmKDAhPT1hKXt0LmZvckVhY2goKGZ1bmN0aW9uKHQpe3IuX3RvdWNoSWRzLmhhcyh0LnRvU3RyaW5nKCkpJiZyLl90b3VjaElkcy5zZXQodC50b1N0cmluZygpLHIuX3RyYW5zbGF0ZVRvQ29tcG9uZW50U3BhY2Uoblt0XSkpfSkpO3ZhciBzPXRoaXMuX3RvdWNoSWRzLnZhbHVlcygpLGw9ZS5fcG9pbnREaXN0YW5jZShzWzBdLHNbMV0pO2lmKDAhPT1sKXt2YXIgYz1hL2wsdT1zLm1hcCgoZnVuY3Rpb24odCxlKXtyZXR1cm57eDoodC54LW9bZV0ueCkvYyx5Oih0Lnktb1tlXS55KS9jfX0pKSxoPWUuY2VudGVyUG9pbnQob1swXSxvWzFdKSxkPXRoaXMuem9vbShjLGgpLHA9ZC5jZW50ZXJWYWx1ZSxmPWQuem9vbUFtb3VudCxtPXAuY2VudGVyWCxnPXAuY2VudGVyWSxfPW8ubWFwKChmdW5jdGlvbih0LGUpe3JldHVybnt4OnVbZV0ueCpmK3QueCx5OnVbZV0ueSpmK3QueX19KSk7dGhpcy5wYW4oe3g6bS0oX1swXS54K19bMV0ueCkvMix5OmctKF9bMF0ueStfWzFdLnkpLzJ9KX19fX19LGUuY2VudGVyUG9pbnQ9ZnVuY3Rpb24odCxlKXt2YXIgbj1NYXRoLm1pbih0LngsZS54KSxpPU1hdGgubWF4KHQueCxlLngpLHI9TWF0aC5taW4odC55LGUueSk7cmV0dXJue3g6KG4raSkvMix5OihNYXRoLm1heCh0LnksZS55KStyKS8yfX0sZS5fcG9pbnREaXN0YW5jZT1mdW5jdGlvbih0LGUpe3ZhciBuPU1hdGgubWluKHQueCxlLngpLGk9TWF0aC5tYXgodC54LGUueCkscj1NYXRoLm1pbih0LnksZS55KSxvPU1hdGgubWF4KHQueSxlLnkpO3JldHVybiBNYXRoLnNxcnQoTWF0aC5wb3coaS1uLDIpK01hdGgucG93KG8tciwyKSl9LGUucHJvdG90eXBlLl9oYW5kbGVUb3VjaEVuZD1mdW5jdGlvbih0LGUsbil7dmFyIGk9dGhpczt0LmZvckVhY2goKGZ1bmN0aW9uKHQpe2kuX3RvdWNoSWRzLnJlbW92ZSh0LnRvU3RyaW5nKCkpfSkpLHRoaXMuX3RvdWNoSWRzLnNpemUoKT4wJiZ0aGlzLl96b29tRW5kQ2FsbGJhY2tzLmNhbGxDYWxsYmFja3MoKX0sZS5wcm90b3R5cGUuX2hhbmRsZVdoZWVsRXZlbnQ9ZnVuY3Rpb24odCxuKXtpZih0aGlzLl93aGVlbEZpbHRlcihuKSl7dmFyIGk9dGhpcy5fdHJhbnNsYXRlVG9Db21wb25lbnRTcGFjZSh0KTtpZih0aGlzLl9pc0luc2lkZUNvbXBvbmVudChpKSl7bi5wcmV2ZW50RGVmYXVsdCgpO3ZhciByPU1hdGgucG93KDIsLjAwMiooKDAhPT1uLmRlbHRhWT9uLmRlbHRhWTpuLmRlbHRhWCkqKG4uZGVsdGFNb2RlP2UuX1BJWEVMU19QRVJfTElORToxKSkpO3RoaXMuem9vbShyLGkpLHRoaXMuX3pvb21FbmRDYWxsYmFja3MuY2FsbENhbGxiYWNrcygpfX19LGUucHJvdG90eXBlLl9jb25zdHJhaW5lZFpvb209ZnVuY3Rpb24odCxlLG4pe3JldHVybiBVeHQuY29uc3RyYWluZWRab29tKHQsZSxuLHRoaXMubWluRG9tYWluRXh0ZW50KHQpLHRoaXMubWF4RG9tYWluRXh0ZW50KHQpLHRoaXMubWluRG9tYWluVmFsdWUodCksdGhpcy5tYXhEb21haW5WYWx1ZSh0KSl9LGUucHJvdG90eXBlLl9jb25zdHJhaW5lZFRyYW5zbGF0aW9uPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIFV4dC5jb25zdHJhaW5lZFRyYW5zbGF0aW9uKHQsZSx0aGlzLm1pbkRvbWFpblZhbHVlKHQpLHRoaXMubWF4RG9tYWluVmFsdWUodCkpfSxlLnByb3RvdHlwZS5fc2V0dXBEcmFnSW50ZXJhY3Rpb249ZnVuY3Rpb24oKXt2YXIgdCxlPXRoaXM7dGhpcy5fZHJhZ0ludGVyYWN0aW9uLmNvbnN0cmFpbmVkVG9Db21wb25lbnQoITEpLHRoaXMuX2RyYWdJbnRlcmFjdGlvbi5vbkRyYWdTdGFydCgoZnVuY3Rpb24oKXtyZXR1cm4gdD1udWxsfSkpLHRoaXMuX2RyYWdJbnRlcmFjdGlvbi5vbkRyYWcoKGZ1bmN0aW9uKG4saSl7ZS5fdG91Y2hJZHMuc2l6ZSgpPj0yfHwoZS5wYW4oe3g6KG51bGw9PXQ/bi54OnQueCktaS54LHk6KG51bGw9PXQ/bi55OnQueSktaS55fSksdD1pKX0pKSx0aGlzLl9kcmFnSW50ZXJhY3Rpb24ub25EcmFnRW5kKChmdW5jdGlvbigpe3JldHVybiBlLl9wYW5FbmRDYWxsYmFja3MuY2FsbENhbGxiYWNrcygpfSkpfSxlLnByb3RvdHlwZS5fbm9uTGluZWFyU2NhbGVXaXRoRXh0ZW50cz1mdW5jdGlvbih0KXtyZXR1cm4hKG51bGw9PXRoaXMubWluRG9tYWluRXh0ZW50KHQpfHxudWxsPT10aGlzLm1heERvbWFpbkV4dGVudCh0KXx8dCBpbnN0YW5jZW9mIEh4dC5MaW5lYXJ8fHQgaW5zdGFuY2VvZiBIeHQuVGltZSl9LGUucHJvdG90eXBlLnhTY2FsZXM9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztpZihudWxsPT10KXt2YXIgbj1bXTtyZXR1cm4gdGhpcy5feFNjYWxlcy5mb3JFYWNoKChmdW5jdGlvbih0KXtuLnB1c2godCl9KSksbn1yZXR1cm4gdGhpcy5feFNjYWxlcz1uZXcgRnh0LlNldCx0LmZvckVhY2goKGZ1bmN0aW9uKHQpe2UuYWRkWFNjYWxlKHQpfSkpLHRoaXN9LGUucHJvdG90eXBlLnlTY2FsZXM9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztpZihudWxsPT10KXt2YXIgbj1bXTtyZXR1cm4gdGhpcy5feVNjYWxlcy5mb3JFYWNoKChmdW5jdGlvbih0KXtuLnB1c2godCl9KSksbn1yZXR1cm4gdGhpcy5feVNjYWxlcz1uZXcgRnh0LlNldCx0LmZvckVhY2goKGZ1bmN0aW9uKHQpe2UuYWRkWVNjYWxlKHQpfSkpLHRoaXN9LGUucHJvdG90eXBlLmFkZFhTY2FsZT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5feFNjYWxlcy5hZGQodCksdGhpc30sZS5wcm90b3R5cGUucmVtb3ZlWFNjYWxlPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl94U2NhbGVzLmRlbGV0ZSh0KSx0aGlzLl9taW5Eb21haW5FeHRlbnRzLmRlbGV0ZSh0KSx0aGlzLl9tYXhEb21haW5FeHRlbnRzLmRlbGV0ZSh0KSx0aGlzLl9taW5Eb21haW5WYWx1ZXMuZGVsZXRlKHQpLHRoaXMuX21heERvbWFpblZhbHVlcy5kZWxldGUodCksdGhpc30sZS5wcm90b3R5cGUuYWRkWVNjYWxlPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl95U2NhbGVzLmFkZCh0KSx0aGlzfSxlLnByb3RvdHlwZS5yZW1vdmVZU2NhbGU9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3lTY2FsZXMuZGVsZXRlKHQpLHRoaXMuX21pbkRvbWFpbkV4dGVudHMuZGVsZXRlKHQpLHRoaXMuX21heERvbWFpbkV4dGVudHMuZGVsZXRlKHQpLHRoaXMuX21pbkRvbWFpblZhbHVlcy5kZWxldGUodCksdGhpcy5fbWF4RG9tYWluVmFsdWVzLmRlbGV0ZSh0KSx0aGlzfSxlLnByb3RvdHlwZS5taW5Eb21haW5FeHRlbnQ9ZnVuY3Rpb24odCxlKXtpZihudWxsPT1lKXJldHVybiB0aGlzLl9taW5Eb21haW5FeHRlbnRzLmdldCh0KTtpZihlLnZhbHVlT2YoKTwwKXRocm93IG5ldyBFcnJvcigiZXh0ZW50IG11c3QgYmUgbm9uLW5lZ2F0aXZlIik7dmFyIG49dGhpcy5tYXhEb21haW5FeHRlbnQodCk7aWYobnVsbCE9biYmbi52YWx1ZU9mKCk8ZS52YWx1ZU9mKCkpdGhyb3cgbmV3IEVycm9yKCJtaW5Eb21haW5FeHRlbnQgbXVzdCBiZSBzbWFsbGVyIHRoYW4gbWF4RG9tYWluRXh0ZW50IGZvciB0aGUgc2FtZSBTY2FsZSIpO3JldHVybiB0aGlzLl9ub25MaW5lYXJTY2FsZVdpdGhFeHRlbnRzKHQpJiZGeHQuV2luZG93Lndhcm4oIlBhbm5pbmcgYW5kIHpvb21pbmcgd2l0aCBleHRlbnRzIG9uIGEgbm9ubGluZWFyIHNjYWxlIG1heSBoYXZlIHVuaW50ZW5kZWQgYmVoYXZpb3IuIiksdGhpcy5fbWluRG9tYWluRXh0ZW50cy5zZXQodCxlKSx0aGlzfSxlLnByb3RvdHlwZS5tYXhEb21haW5FeHRlbnQ9ZnVuY3Rpb24odCxlKXtpZihudWxsPT1lKXJldHVybiB0aGlzLl9tYXhEb21haW5FeHRlbnRzLmdldCh0KTtpZihlLnZhbHVlT2YoKTw9MCl0aHJvdyBuZXcgRXJyb3IoImV4dGVudCBtdXN0IGJlIHBvc2l0aXZlIik7dmFyIG49dGhpcy5taW5Eb21haW5FeHRlbnQodCk7aWYobnVsbCE9biYmZS52YWx1ZU9mKCk8bi52YWx1ZU9mKCkpdGhyb3cgbmV3IEVycm9yKCJtYXhEb21haW5FeHRlbnQgbXVzdCBiZSBsYXJnZXIgdGhhbiBtaW5Eb21haW5FeHRlbnQgZm9yIHRoZSBzYW1lIFNjYWxlIik7cmV0dXJuIHRoaXMuX25vbkxpbmVhclNjYWxlV2l0aEV4dGVudHModCkmJkZ4dC5XaW5kb3cud2FybigiUGFubmluZyBhbmQgem9vbWluZyB3aXRoIGV4dGVudHMgb24gYSBub25saW5lYXIgc2NhbGUgbWF5IGhhdmUgdW5pbnRlbmRlZCBiZWhhdmlvci4iKSx0aGlzLl9tYXhEb21haW5FeHRlbnRzLnNldCh0LGUpLHRoaXN9LGUucHJvdG90eXBlLm1pbkRvbWFpblZhbHVlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIG51bGw9PWU/dGhpcy5fbWluRG9tYWluVmFsdWVzLmdldCh0KToodGhpcy5fbWluRG9tYWluVmFsdWVzLnNldCh0LGUpLHRoaXMpfSxlLnByb3RvdHlwZS5tYXhEb21haW5WYWx1ZT1mdW5jdGlvbih0LGUpe3JldHVybiBudWxsPT1lP3RoaXMuX21heERvbWFpblZhbHVlcy5nZXQodCk6KHRoaXMuX21heERvbWFpblZhbHVlcy5zZXQodCxlKSx0aGlzKX0sZS5wcm90b3R5cGUuc2V0TWluTWF4RG9tYWluVmFsdWVzVG89ZnVuY3Rpb24odCl7dGhpcy5fbWluRG9tYWluVmFsdWVzLmRlbGV0ZSh0KSx0aGlzLl9tYXhEb21haW5WYWx1ZXMuZGVsZXRlKHQpO3ZhciBlPXQuZ2V0VHJhbnNmb3JtYXRpb25Eb21haW4oKSxuPWVbMV07cmV0dXJuIHRoaXMubWluRG9tYWluVmFsdWUodCxlWzBdKSx0aGlzLm1heERvbWFpblZhbHVlKHQsbiksdGhpc30sZS5wcm90b3R5cGUub25QYW5FbmQ9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3BhbkVuZENhbGxiYWNrcy5hZGQodCksdGhpc30sZS5wcm90b3R5cGUub2ZmUGFuRW5kPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9wYW5FbmRDYWxsYmFja3MuZGVsZXRlKHQpLHRoaXN9LGUucHJvdG90eXBlLm9uWm9vbUVuZD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fem9vbUVuZENhbGxiYWNrcy5hZGQodCksdGhpc30sZS5wcm90b3R5cGUub2ZmWm9vbUVuZD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fem9vbUVuZENhbGxiYWNrcy5kZWxldGUodCksdGhpc30sZS5wcm90b3R5cGUub25QYW5ab29tVXBkYXRlPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9wYW5ab29tVXBkYXRlQ2FsbGJhY2tzLmFkZCh0KSx0aGlzfSxlLnByb3RvdHlwZS5vZmZQYW5ab29tVXBkYXRlPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9wYW5ab29tVXBkYXRlQ2FsbGJhY2tzLmRlbGV0ZSh0KSx0aGlzfSxlLl9QSVhFTFNfUEVSX0xJTkU9MTIwLGV9KSh2eHQuSW50ZXJhY3Rpb24pO094dC5QYW5ab29tPWp4dDt2YXIgR3h0PXt9OwovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqL09iamVjdC5kZWZpbmVQcm9wZXJ0eShHeHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBXeHQ9Qk8scXh0PXJ4dCxZeHQ9RF90LFh4dD0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3ZhciBlPW51bGwhPT10JiZ0LmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8dGhpcztyZXR1cm4gZS5fb3ZlckNvbXBvbmVudD0hMSxlLl9wb2ludGVyRW50ZXJDYWxsYmFja3M9bmV3IFl4dC5DYWxsYmFja1NldCxlLl9wb2ludGVyTW92ZUNhbGxiYWNrcz1uZXcgWXh0LkNhbGxiYWNrU2V0LGUuX3BvaW50ZXJFeGl0Q2FsbGJhY2tzPW5ldyBZeHQuQ2FsbGJhY2tTZXQsZS5fbW91c2VNb3ZlQ2FsbGJhY2s9ZnVuY3Rpb24odCxuKXtyZXR1cm4gZS5faGFuZGxlTW91c2VFdmVudCh0LG4pfSxlLl90b3VjaFN0YXJ0Q2FsbGJhY2s9ZnVuY3Rpb24odCxuLGkpe3JldHVybiBlLl9oYW5kbGVUb3VjaEV2ZW50KG5bdFswXV0saSl9LGV9cmV0dXJuIFd4dC5fX2V4dGVuZHMoZSx0KSxlLnByb3RvdHlwZS5fYW5jaG9yPWZ1bmN0aW9uKGUpe3QucHJvdG90eXBlLl9hbmNob3IuY2FsbCh0aGlzLGUpLHRoaXMuX21vdXNlRGlzcGF0Y2hlcj1xeHQuTW91c2UuZ2V0RGlzcGF0Y2hlcih0aGlzLl9jb21wb25lbnRBdHRhY2hlZFRvKSx0aGlzLl9tb3VzZURpc3BhdGNoZXIub25Nb3VzZU1vdmUodGhpcy5fbW91c2VNb3ZlQ2FsbGJhY2spLHRoaXMuX3RvdWNoRGlzcGF0Y2hlcj1xeHQuVG91Y2guZ2V0RGlzcGF0Y2hlcih0aGlzLl9jb21wb25lbnRBdHRhY2hlZFRvKSx0aGlzLl90b3VjaERpc3BhdGNoZXIub25Ub3VjaFN0YXJ0KHRoaXMuX3RvdWNoU3RhcnRDYWxsYmFjayl9LGUucHJvdG90eXBlLl91bmFuY2hvcj1mdW5jdGlvbigpe3QucHJvdG90eXBlLl91bmFuY2hvci5jYWxsKHRoaXMpLHRoaXMuX21vdXNlRGlzcGF0Y2hlci5vZmZNb3VzZU1vdmUodGhpcy5fbW91c2VNb3ZlQ2FsbGJhY2spLHRoaXMuX21vdXNlRGlzcGF0Y2hlcj1udWxsLHRoaXMuX3RvdWNoRGlzcGF0Y2hlci5vZmZUb3VjaFN0YXJ0KHRoaXMuX3RvdWNoU3RhcnRDYWxsYmFjayksdGhpcy5fdG91Y2hEaXNwYXRjaGVyPW51bGx9LGUucHJvdG90eXBlLl9oYW5kbGVNb3VzZUV2ZW50PWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcy5fbW91c2VEaXNwYXRjaGVyLmV2ZW50SW5zaWRlKHRoaXMuX2NvbXBvbmVudEF0dGFjaGVkVG8sZSk7dGhpcy5faGFuZGxlUG9pbnRlckV2ZW50KHQsbil9LGUucHJvdG90eXBlLl9oYW5kbGVUb3VjaEV2ZW50PWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcy5fdG91Y2hEaXNwYXRjaGVyLmV2ZW50SW5zaWRlKHRoaXMuX2NvbXBvbmVudEF0dGFjaGVkVG8sZSk7dGhpcy5faGFuZGxlUG9pbnRlckV2ZW50KHQsbil9LGUucHJvdG90eXBlLl9oYW5kbGVQb2ludGVyRXZlbnQ9ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzLl90cmFuc2xhdGVUb0NvbXBvbmVudFNwYWNlKHQpLGk9dGhpcy5faXNJbnNpZGVDb21wb25lbnQobik7aSYmZT8odGhpcy5fb3ZlckNvbXBvbmVudHx8dGhpcy5fcG9pbnRlckVudGVyQ2FsbGJhY2tzLmNhbGxDYWxsYmFja3MobiksdGhpcy5fcG9pbnRlck1vdmVDYWxsYmFja3MuY2FsbENhbGxiYWNrcyhuKSk6dGhpcy5fb3ZlckNvbXBvbmVudCYmdGhpcy5fcG9pbnRlckV4aXRDYWxsYmFja3MuY2FsbENhbGxiYWNrcyhuKSx0aGlzLl9vdmVyQ29tcG9uZW50PWkmJmV9LGUucHJvdG90eXBlLm9uUG9pbnRlckVudGVyPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9wb2ludGVyRW50ZXJDYWxsYmFja3MuYWRkKHQpLHRoaXN9LGUucHJvdG90eXBlLm9mZlBvaW50ZXJFbnRlcj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fcG9pbnRlckVudGVyQ2FsbGJhY2tzLmRlbGV0ZSh0KSx0aGlzfSxlLnByb3RvdHlwZS5vblBvaW50ZXJNb3ZlPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9wb2ludGVyTW92ZUNhbGxiYWNrcy5hZGQodCksdGhpc30sZS5wcm90b3R5cGUub2ZmUG9pbnRlck1vdmU9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3BvaW50ZXJNb3ZlQ2FsbGJhY2tzLmRlbGV0ZSh0KSx0aGlzfSxlLnByb3RvdHlwZS5vblBvaW50ZXJFeGl0PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9wb2ludGVyRXhpdENhbGxiYWNrcy5hZGQodCksdGhpc30sZS5wcm90b3R5cGUub2ZmUG9pbnRlckV4aXQ9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3BvaW50ZXJFeGl0Q2FsbGJhY2tzLmRlbGV0ZSh0KSx0aGlzfSxlfSkodnh0LkludGVyYWN0aW9uKTtHeHQuUG9pbnRlcj1YeHQsKGZ1bmN0aW9uKHQpewovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqLwpPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIGU9Qk87ZS5fX2V4cG9ydFN0YXIoaXh0LHQpLGUuX19leHBvcnRTdGFyKEV4dCx0KSxlLl9fZXhwb3J0U3RhcihMeHQsdCksZS5fX2V4cG9ydFN0YXIoT3h0LHQpLGUuX19leHBvcnRTdGFyKEd4dCx0KSx0Lnpvb21PdXQ9dGJ0Lnpvb21PdXR9KShueHQpO3ZhciAkeHQ9e307IShmdW5jdGlvbih0KXsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi8KT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBlLG49Qk8saT1EX3Qscj1PX3Q7IShmdW5jdGlvbih0KXt0W3QuVkFMVUU9MF09IlZBTFVFIix0W3QuUElYRUw9MV09IlBJWEVMIn0pKGU9dC5Qcm9wZXJ0eU1vZGV8fCh0LlByb3BlcnR5TW9kZT17fSkpO3ZhciBvPShmdW5jdGlvbih0KXtmdW5jdGlvbiByKCl7dmFyIG49dC5jYWxsKHRoaXMpfHx0aGlzO3JldHVybiBuLl9ib3hWaXNpYmxlPSExLG4uX2JveEJvdW5kcz17dG9wTGVmdDp7eDowLHk6MH0sYm90dG9tUmlnaHQ6e3g6MCx5OjB9fSxuLl94Qm91bmRzTW9kZT1lLlBJWEVMLG4uX3lCb3VuZHNNb2RlPWUuUElYRUwsbi5hZGRDbGFzcygic2VsZWN0aW9uLWJveC1sYXllciIpLG4uX2FkanVzdEJvdW5kc0NhbGxiYWNrPWZ1bmN0aW9uKCl7bi5yZW5kZXIoKX0sbi5fb3ZlcmZsb3dIaWRkZW49ITAsbi5feEV4dGVudD1bdm9pZCAwLHZvaWQgMF0sbi5feUV4dGVudD1bdm9pZCAwLHZvaWQgMF0sbn1yZXR1cm4gbi5fX2V4dGVuZHMocix0KSxyLnByb3RvdHlwZS5fc2V0dXA9ZnVuY3Rpb24oKXt0LnByb3RvdHlwZS5fc2V0dXAuY2FsbCh0aGlzKSx0aGlzLl9ib3g9dGhpcy5jb250ZW50KCkuYXBwZW5kKCJnIikuY2xhc3NlZCgic2VsZWN0aW9uLWJveCIsITApLnJlbW92ZSgpLHRoaXMuX2JveEFyZWE9dGhpcy5fYm94LmFwcGVuZCgicmVjdCIpLmNsYXNzZWQoInNlbGVjdGlvbi1hcmVhIiwhMCl9LHIucHJvdG90eXBlLl9zaXplRnJvbU9mZmVyPWZ1bmN0aW9uKHQsZSl7cmV0dXJue3dpZHRoOnQsaGVpZ2h0OmV9fSxyLnByb3RvdHlwZS5ib3VuZHM9ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5fZ2V0Qm91bmRzKCk6KHRoaXMuX3NldEJvdW5kcyh0KSx0aGlzLl94Qm91bmRzTW9kZT1lLlBJWEVMLHRoaXMuX3lCb3VuZHNNb2RlPWUuUElYRUwsdGhpcy5yZW5kZXIoKSx0aGlzKX0sci5wcm90b3R5cGUuX3NldEJvdW5kcz1mdW5jdGlvbih0KXt2YXIgZT17eDpNYXRoLm1pbih0LnRvcExlZnQueCx0LmJvdHRvbVJpZ2h0LngpLHk6TWF0aC5taW4odC50b3BMZWZ0LnksdC5ib3R0b21SaWdodC55KX0sbj17eDpNYXRoLm1heCh0LnRvcExlZnQueCx0LmJvdHRvbVJpZ2h0LngpLHk6TWF0aC5tYXgodC50b3BMZWZ0LnksdC5ib3R0b21SaWdodC55KX07dGhpcy5fYm94Qm91bmRzPXt0b3BMZWZ0OmUsYm90dG9tUmlnaHQ6bn19LHIucHJvdG90eXBlLl9nZXRCb3VuZHM9ZnVuY3Rpb24oKXtyZXR1cm57dG9wTGVmdDp7eDp0aGlzLl94Qm91bmRzTW9kZT09PWUuUElYRUw/dGhpcy5fYm94Qm91bmRzLnRvcExlZnQueDpudWxsPT10aGlzLl94U2NhbGU/MDpNYXRoLm1pbih0aGlzLnhTY2FsZSgpLnNjYWxlKHRoaXMueEV4dGVudCgpWzBdKSx0aGlzLnhTY2FsZSgpLnNjYWxlKHRoaXMueEV4dGVudCgpWzFdKSkseTp0aGlzLl95Qm91bmRzTW9kZT09PWUuUElYRUw/dGhpcy5fYm94Qm91bmRzLnRvcExlZnQueTpudWxsPT10aGlzLl95U2NhbGU/MDpNYXRoLm1pbih0aGlzLnlTY2FsZSgpLnNjYWxlKHRoaXMueUV4dGVudCgpWzBdKSx0aGlzLnlTY2FsZSgpLnNjYWxlKHRoaXMueUV4dGVudCgpWzFdKSl9LGJvdHRvbVJpZ2h0Ont4OnRoaXMuX3hCb3VuZHNNb2RlPT09ZS5QSVhFTD90aGlzLl9ib3hCb3VuZHMuYm90dG9tUmlnaHQueDpudWxsPT10aGlzLl94U2NhbGU/MDpNYXRoLm1heCh0aGlzLnhTY2FsZSgpLnNjYWxlKHRoaXMueEV4dGVudCgpWzBdKSx0aGlzLnhTY2FsZSgpLnNjYWxlKHRoaXMueEV4dGVudCgpWzFdKSkseTp0aGlzLl95Qm91bmRzTW9kZT09PWUuUElYRUw/dGhpcy5fYm94Qm91bmRzLmJvdHRvbVJpZ2h0Lnk6bnVsbD09dGhpcy5feVNjYWxlPzA6TWF0aC5tYXgodGhpcy55U2NhbGUoKS5zY2FsZSh0aGlzLnlFeHRlbnQoKVswXSksdGhpcy55U2NhbGUoKS5zY2FsZSh0aGlzLnlFeHRlbnQoKVsxXSkpfX19LHIucHJvdG90eXBlLnJlbmRlckltbWVkaWF0ZWx5PWZ1bmN0aW9uKCl7aWYodC5wcm90b3R5cGUucmVuZGVySW1tZWRpYXRlbHkuY2FsbCh0aGlzKSx0aGlzLl9ib3hWaXNpYmxlKXt2YXIgZT10aGlzLmJvdW5kcygpLG49ZS50b3BMZWZ0Lnkscj1lLmJvdHRvbVJpZ2h0Lnksbz1lLnRvcExlZnQueCxhPWUuYm90dG9tUmlnaHQueDtpZighKGkuTWF0aC5pc1ZhbGlkTnVtYmVyKG4pJiZpLk1hdGguaXNWYWxpZE51bWJlcihyKSYmaS5NYXRoLmlzVmFsaWROdW1iZXIobykmJmkuTWF0aC5pc1ZhbGlkTnVtYmVyKGEpKSl0aHJvdyBuZXcgRXJyb3IoImJvdW5kcyBoYXZlIG5vdCBiZWVuIHByb3Blcmx5IHNldCIpO3RoaXMuX2JveEFyZWEuYXR0cnMoe3g6byx5Om4sd2lkdGg6YS1vLGhlaWdodDpyLW59KSx0aGlzLmNvbnRlbnQoKS5ub2RlKCkuYXBwZW5kQ2hpbGQodGhpcy5fYm94Lm5vZGUoKSl9ZWxzZSB0aGlzLl9ib3gucmVtb3ZlKCk7cmV0dXJuIHRoaXN9LHIucHJvdG90eXBlLmJveFZpc2libGU9ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5fYm94VmlzaWJsZToodGhpcy5fYm94VmlzaWJsZT10LHRoaXMucmVuZGVyKCksdGhpcyl9LHIucHJvdG90eXBlLmZpeGVkV2lkdGg9ZnVuY3Rpb24oKXtyZXR1cm4hMH0sci5wcm90b3R5cGUuZml4ZWRIZWlnaHQ9ZnVuY3Rpb24oKXtyZXR1cm4hMH0sci5wcm90b3R5cGUueFNjYWxlPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuX3hTY2FsZToobnVsbCE9dGhpcy5feFNjYWxlJiZ0aGlzLl94U2NhbGUub2ZmVXBkYXRlKHRoaXMuX2FkanVzdEJvdW5kc0NhbGxiYWNrKSx0aGlzLl94U2NhbGU9dCx0aGlzLl94Qm91bmRzTW9kZT1lLlZBTFVFLHRoaXMuX3hTY2FsZS5vblVwZGF0ZSh0aGlzLl9hZGp1c3RCb3VuZHNDYWxsYmFjayksdGhpcy5yZW5kZXIoKSx0aGlzKX0sci5wcm90b3R5cGUueVNjYWxlPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuX3lTY2FsZToobnVsbCE9dGhpcy5feVNjYWxlJiZ0aGlzLl95U2NhbGUub2ZmVXBkYXRlKHRoaXMuX2FkanVzdEJvdW5kc0NhbGxiYWNrKSx0aGlzLl95U2NhbGU9dCx0aGlzLl95Qm91bmRzTW9kZT1lLlZBTFVFLHRoaXMuX3lTY2FsZS5vblVwZGF0ZSh0aGlzLl9hZGp1c3RCb3VuZHNDYWxsYmFjayksdGhpcy5yZW5kZXIoKSx0aGlzKX0sci5wcm90b3R5cGUueEV4dGVudD1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9nZXRYRXh0ZW50KCk6KHRoaXMuX3NldFhFeHRlbnQodCksdGhpcy5feEJvdW5kc01vZGU9ZS5WQUxVRSx0aGlzLnJlbmRlcigpLHRoaXMpfSxyLnByb3RvdHlwZS5fZ2V0WEV4dGVudD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl94Qm91bmRzTW9kZT09PWUuVkFMVUU/dGhpcy5feEV4dGVudDpudWxsPT10aGlzLl94U2NhbGU/W3ZvaWQgMCx2b2lkIDBdOlt0aGlzLl94U2NhbGUuaW52ZXJ0KHRoaXMuX2JveEJvdW5kcy50b3BMZWZ0LngpLHRoaXMuX3hTY2FsZS5pbnZlcnQodGhpcy5fYm94Qm91bmRzLmJvdHRvbVJpZ2h0LngpXX0sci5wcm90b3R5cGUuX3NldFhFeHRlbnQ9ZnVuY3Rpb24odCl7dGhpcy5feEV4dGVudD10fSxyLnByb3RvdHlwZS55RXh0ZW50PWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuX2dldFlFeHRlbnQoKToodGhpcy5fc2V0WUV4dGVudCh0KSx0aGlzLl95Qm91bmRzTW9kZT1lLlZBTFVFLHRoaXMucmVuZGVyKCksdGhpcyl9LHIucHJvdG90eXBlLl9nZXRZRXh0ZW50PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3lCb3VuZHNNb2RlPT09ZS5WQUxVRT90aGlzLl95RXh0ZW50Om51bGw9PXRoaXMuX3lTY2FsZT9bdm9pZCAwLHZvaWQgMF06W3RoaXMuX3lTY2FsZS5pbnZlcnQodGhpcy5fYm94Qm91bmRzLnRvcExlZnQueSksdGhpcy5feVNjYWxlLmludmVydCh0aGlzLl9ib3hCb3VuZHMuYm90dG9tUmlnaHQueSldfSxyLnByb3RvdHlwZS5fc2V0WUV4dGVudD1mdW5jdGlvbih0KXt0aGlzLl95RXh0ZW50PXR9LHIucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXt0LnByb3RvdHlwZS5kZXN0cm95LmNhbGwodGhpcyksbnVsbCE9dGhpcy5feFNjYWxlJiZ0aGlzLnhTY2FsZSgpLm9mZlVwZGF0ZSh0aGlzLl9hZGp1c3RCb3VuZHNDYWxsYmFjayksbnVsbCE9dGhpcy5feVNjYWxlJiZ0aGlzLnlTY2FsZSgpLm9mZlVwZGF0ZSh0aGlzLl9hZGp1c3RCb3VuZHNDYWxsYmFjayl9LHJ9KShyLkNvbXBvbmVudCk7dC5TZWxlY3Rpb25Cb3hMYXllcj1vfSkoJHh0KSwKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi8KT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4dCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIEt4dD1CTyxaeHQ9bnh0LEp4dD1EX3QsUXh0PV9ndCx0d3Q9dHh0LGV3dD0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3ZhciBlPXQuY2FsbCh0aGlzKXx8dGhpcztyZXR1cm4gZS5fZGV0ZWN0aW9uUmFkaXVzPTMsZS5fcmVzaXphYmxlPSExLGUuX21vdmFibGU9ITEsZS5faGFzQ29ybmVycz0hMCxlLmFkZENsYXNzKCJkcmFnLWJveC1sYXllciIpLGUuX2RyYWdJbnRlcmFjdGlvbj1uZXcgWnh0LkRyYWcsZS5fc2V0VXBDYWxsYmFja3MoKSxlLl9kcmFnSW50ZXJhY3Rpb24uYXR0YWNoVG8oZSksZS5fZHJhZ1N0YXJ0Q2FsbGJhY2tzPW5ldyBKeHQuQ2FsbGJhY2tTZXQsZS5fZHJhZ0NhbGxiYWNrcz1uZXcgSnh0LkNhbGxiYWNrU2V0LGUuX2RyYWdFbmRDYWxsYmFja3M9bmV3IEp4dC5DYWxsYmFja1NldCxlfXJldHVybiBLeHQuX19leHRlbmRzKGUsdCksZS5wcm90b3R5cGUuX3NldFVwQ2FsbGJhY2tzPWZ1bmN0aW9uKCl7dmFyIHQsZSxuLGkscj10aGlzLG89MCxhPTEscz0yLGw9byxjPWZ1bmN0aW9uKGMpe3Q9ci5fZ2V0UmVzaXppbmdFZGdlcyhjKTt2YXIgdT1yLmJvdW5kcygpLGg9dS50b3BMZWZ0Lng8PWMueCYmYy54PD11LmJvdHRvbVJpZ2h0LngmJnUudG9wTGVmdC55PD1jLnkmJmMueTw9dS5ib3R0b21SaWdodC55O3IuYm94VmlzaWJsZSgpJiYodC50b3B8fHQuYm90dG9tfHx0LmxlZnR8fHQucmlnaHQpP2w9YTpyLmJveFZpc2libGUoKSYmci5tb3ZhYmxlKCkmJmg/bD1zOihsPW8sci5fc2V0Qm91bmRzKHt0b3BMZWZ0OmMsYm90dG9tUmlnaHQ6Y30pLHIuX3hCb3VuZHNNb2RlPT09dHd0LlByb3BlcnR5TW9kZS5WQUxVRSYmbnVsbCE9ci54U2NhbGUoKSYmci5fc2V0WEV4dGVudChbci54U2NhbGUoKS5pbnZlcnQoYy54KSxyLnhTY2FsZSgpLmludmVydChjLngpXSksci5feUJvdW5kc01vZGU9PT10d3QuUHJvcGVydHlNb2RlLlZBTFVFJiZudWxsIT1yLnlTY2FsZSgpJiZyLl9zZXRZRXh0ZW50KFtyLnlTY2FsZSgpLmludmVydChjLnkpLHIueVNjYWxlKCkuaW52ZXJ0KGMueSldKSxyLnJlbmRlcigpKSxyLmJveFZpc2libGUoITApLHU9ci5ib3VuZHMoKSxlPXt4OnUudG9wTGVmdC54LHk6dS50b3BMZWZ0Lnl9LG49e3g6dS5ib3R0b21SaWdodC54LHk6dS5ib3R0b21SaWdodC55fSxpPWMsci5fZHJhZ1N0YXJ0Q2FsbGJhY2tzLmNhbGxDYWxsYmFja3ModSl9LHU9ZnVuY3Rpb24oYyx1KXtzd2l0Y2gobCl7Y2FzZSBvOm4ueD11Lngsbi55PXUueTticmVhaztjYXNlIGE6dC5ib3R0b20/bi55PXUueTp0LnRvcCYmKGUueT11LnkpLHQucmlnaHQ/bi54PXUueDp0LmxlZnQmJihlLng9dS54KTticmVhaztjYXNlIHM6dmFyIGg9dS54LWkueCxkPXUueS1pLnk7ZS54Kz1oLGUueSs9ZCxuLngrPWgsbi55Kz1kLGk9dX1yLl9zZXRCb3VuZHMoe3RvcExlZnQ6ZSxib3R0b21SaWdodDpufSksci5feEJvdW5kc01vZGU9PT10d3QuUHJvcGVydHlNb2RlLlZBTFVFJiZudWxsIT1yLnhTY2FsZSgpJiZyLl9zZXRYRXh0ZW50KFtyLnhTY2FsZSgpLmludmVydChlLngpLHIueFNjYWxlKCkuaW52ZXJ0KG4ueCldKSxyLl95Qm91bmRzTW9kZT09PXR3dC5Qcm9wZXJ0eU1vZGUuVkFMVUUmJm51bGwhPXIueVNjYWxlKCkmJnIuX3NldFlFeHRlbnQoW3IueVNjYWxlKCkuaW52ZXJ0KGUueSksci55U2NhbGUoKS5pbnZlcnQobi55KV0pLHIucmVuZGVyKCksci5fZHJhZ0NhbGxiYWNrcy5jYWxsQ2FsbGJhY2tzKHIuYm91bmRzKCkpfSxoPWZ1bmN0aW9uKHQsZSl7bD09PW8mJnQueD09PWUueCYmdC55PT09ZS55JiZyLmJveFZpc2libGUoITEpLHIuX2RyYWdFbmRDYWxsYmFja3MuY2FsbENhbGxiYWNrcyhyLmJvdW5kcygpKX07dGhpcy5fZHJhZ0ludGVyYWN0aW9uLm9uRHJhZ1N0YXJ0KGMpLHRoaXMuX2RyYWdJbnRlcmFjdGlvbi5vbkRyYWcodSksdGhpcy5fZHJhZ0ludGVyYWN0aW9uLm9uRHJhZ0VuZChoKSx0aGlzLl9kaXNjb25uZWN0SW50ZXJhY3Rpb249ZnVuY3Rpb24oKXtyLl9kcmFnSW50ZXJhY3Rpb24ub2ZmRHJhZ1N0YXJ0KGMpLHIuX2RyYWdJbnRlcmFjdGlvbi5vZmZEcmFnKHUpLHIuX2RyYWdJbnRlcmFjdGlvbi5vZmZEcmFnRW5kKGgpLHIuX2RyYWdJbnRlcmFjdGlvbi5kZXRhY2goKX19LGUucHJvdG90eXBlLl9zZXR1cD1mdW5jdGlvbigpe3ZhciBlPXRoaXM7dC5wcm90b3R5cGUuX3NldHVwLmNhbGwodGhpcyk7dmFyIG49ZnVuY3Rpb24oKXtyZXR1cm4gZS5fYm94LmFwcGVuZCgibGluZSIpLnN0eWxlcyh7b3BhY2l0eTowLHN0cm9rZToicGluayIsInBvaW50ZXItZXZlbnRzIjoidmlzaWJsZVN0cm9rZSJ9KX07aWYodGhpcy5fZGV0ZWN0aW9uRWRnZVQ9bigpLmNsYXNzZWQoImRyYWctZWRnZS10YiIsITApLHRoaXMuX2RldGVjdGlvbkVkZ2VCPW4oKS5jbGFzc2VkKCJkcmFnLWVkZ2UtdGIiLCEwKSx0aGlzLl9kZXRlY3Rpb25FZGdlTD1uKCkuY2xhc3NlZCgiZHJhZy1lZGdlLWxyIiwhMCksdGhpcy5fZGV0ZWN0aW9uRWRnZVI9bigpLmNsYXNzZWQoImRyYWctZWRnZS1sciIsITApLHRoaXMuX2hhc0Nvcm5lcnMpe3ZhciBpPWZ1bmN0aW9uKCl7cmV0dXJuIGUuX2JveC5hcHBlbmQoImNpcmNsZSIpLnN0eWxlcyh7b3BhY2l0eTowLGZpbGw6InBpbmsiLCJwb2ludGVyLWV2ZW50cyI6InZpc2libGVGaWxsIn0pfTt0aGlzLl9kZXRlY3Rpb25Db3JuZXJUTD1pKCkuY2xhc3NlZCgiZHJhZy1jb3JuZXItdGwiLCEwKSx0aGlzLl9kZXRlY3Rpb25Db3JuZXJUUj1pKCkuY2xhc3NlZCgiZHJhZy1jb3JuZXItdHIiLCEwKSx0aGlzLl9kZXRlY3Rpb25Db3JuZXJCTD1pKCkuY2xhc3NlZCgiZHJhZy1jb3JuZXItYmwiLCEwKSx0aGlzLl9kZXRlY3Rpb25Db3JuZXJCUj1pKCkuY2xhc3NlZCgiZHJhZy1jb3JuZXItYnIiLCEwKX19LGUucHJvdG90eXBlLl9nZXRSZXNpemluZ0VkZ2VzPWZ1bmN0aW9uKHQpe3ZhciBlPXt0b3A6ITEsYm90dG9tOiExLGxlZnQ6ITEscmlnaHQ6ITF9O2lmKCF0aGlzLnJlc2l6YWJsZSgpKXJldHVybiBlO3ZhciBuPXRoaXMuYm91bmRzKCksaT1uLnRvcExlZnQueSxyPW4uYm90dG9tUmlnaHQueSxvPW4udG9wTGVmdC54LGE9bi5ib3R0b21SaWdodC54LHM9dGhpcy5fZGV0ZWN0aW9uUmFkaXVzO3JldHVybiBvLXM8PXQueCYmdC54PD1hK3MmJihlLnRvcD1pLXM8PXQueSYmdC55PD1pK3MsZS5ib3R0b209ci1zPD10LnkmJnQueTw9citzKSxpLXM8PXQueSYmdC55PD1yK3MmJihlLmxlZnQ9by1zPD10LngmJnQueDw9bytzLGUucmlnaHQ9YS1zPD10LngmJnQueDw9YStzKSxlfSxlLnByb3RvdHlwZS5yZW5kZXJJbW1lZGlhdGVseT1mdW5jdGlvbigpe2lmKHQucHJvdG90eXBlLnJlbmRlckltbWVkaWF0ZWx5LmNhbGwodGhpcyksdGhpcy5ib3hWaXNpYmxlKCkpe3ZhciBlPXRoaXMuYm91bmRzKCksbj1lLnRvcExlZnQueSxpPWUuYm90dG9tUmlnaHQueSxyPWUudG9wTGVmdC54LG89ZS5ib3R0b21SaWdodC54O3RoaXMuX2RldGVjdGlvbkVkZ2VULmF0dHJzKHt4MTpyLHkxOm4seDI6byx5MjpuLCJzdHJva2Utd2lkdGgiOjIqdGhpcy5fZGV0ZWN0aW9uUmFkaXVzfSksdGhpcy5fZGV0ZWN0aW9uRWRnZUIuYXR0cnMoe3gxOnIseTE6aSx4MjpvLHkyOmksInN0cm9rZS13aWR0aCI6Mip0aGlzLl9kZXRlY3Rpb25SYWRpdXN9KSx0aGlzLl9kZXRlY3Rpb25FZGdlTC5hdHRycyh7eDE6cix5MTpuLHgyOnIseTI6aSwic3Ryb2tlLXdpZHRoIjoyKnRoaXMuX2RldGVjdGlvblJhZGl1c30pLHRoaXMuX2RldGVjdGlvbkVkZ2VSLmF0dHJzKHt4MTpvLHkxOm4seDI6byx5MjppLCJzdHJva2Utd2lkdGgiOjIqdGhpcy5fZGV0ZWN0aW9uUmFkaXVzfSksdGhpcy5faGFzQ29ybmVycyYmKHRoaXMuX2RldGVjdGlvbkNvcm5lclRMLmF0dHJzKHtjeDpyLGN5Om4scjp0aGlzLl9kZXRlY3Rpb25SYWRpdXN9KSx0aGlzLl9kZXRlY3Rpb25Db3JuZXJUUi5hdHRycyh7Y3g6byxjeTpuLHI6dGhpcy5fZGV0ZWN0aW9uUmFkaXVzfSksdGhpcy5fZGV0ZWN0aW9uQ29ybmVyQkwuYXR0cnMoe2N4OnIsY3k6aSxyOnRoaXMuX2RldGVjdGlvblJhZGl1c30pLHRoaXMuX2RldGVjdGlvbkNvcm5lckJSLmF0dHJzKHtjeDpvLGN5Omkscjp0aGlzLl9kZXRlY3Rpb25SYWRpdXN9KSl9cmV0dXJuIHRoaXN9LGUucHJvdG90eXBlLmRldGVjdGlvblJhZGl1cz1mdW5jdGlvbih0KXtpZihudWxsPT10KXJldHVybiB0aGlzLl9kZXRlY3Rpb25SYWRpdXM7aWYodDwwKXRocm93IG5ldyBFcnJvcigiZGV0ZWN0aW9uIHJhZGl1cyBjYW5ub3QgYmUgbmVnYXRpdmUuIik7cmV0dXJuIHRoaXMuX2RldGVjdGlvblJhZGl1cz10LHRoaXMucmVuZGVyKCksdGhpc30sZS5wcm90b3R5cGUucmVzaXphYmxlPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuX3Jlc2l6YWJsZToodGhpcy5fcmVzaXphYmxlPXQsdGhpcy5fc2V0UmVzaXphYmxlQ2xhc3Nlcyh0KSx0aGlzKX0sZS5wcm90b3R5cGUuX3NldFJlc2l6YWJsZUNsYXNzZXM9ZnVuY3Rpb24odCl7dCYmdGhpcy5lbmFibGVkKCk/KHRoaXMuYWRkQ2xhc3MoIngtcmVzaXphYmxlIiksdGhpcy5hZGRDbGFzcygieS1yZXNpemFibGUiKSk6KHRoaXMucmVtb3ZlQ2xhc3MoIngtcmVzaXphYmxlIiksdGhpcy5yZW1vdmVDbGFzcygieS1yZXNpemFibGUiKSl9LGUucHJvdG90eXBlLm1vdmFibGU9ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5fbW92YWJsZToodGhpcy5fbW92YWJsZT10LHRoaXMuX3NldE1vdmFibGVDbGFzcygpLHRoaXMpfSxlLnByb3RvdHlwZS5fc2V0TW92YWJsZUNsYXNzPWZ1bmN0aW9uKCl7dGhpcy5tb3ZhYmxlKCkmJnRoaXMuZW5hYmxlZCgpP3RoaXMuYWRkQ2xhc3MoIm1vdmFibGUiKTp0aGlzLnJlbW92ZUNsYXNzKCJtb3ZhYmxlIil9LGUucHJvdG90eXBlLm9uRHJhZ1N0YXJ0PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9kcmFnU3RhcnRDYWxsYmFja3MuYWRkKHQpLHRoaXN9LGUucHJvdG90eXBlLm9mZkRyYWdTdGFydD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fZHJhZ1N0YXJ0Q2FsbGJhY2tzLmRlbGV0ZSh0KSx0aGlzfSxlLnByb3RvdHlwZS5vbkRyYWc9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2RyYWdDYWxsYmFja3MuYWRkKHQpLHRoaXN9LGUucHJvdG90eXBlLm9mZkRyYWc9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2RyYWdDYWxsYmFja3MuZGVsZXRlKHQpLHRoaXN9LGUucHJvdG90eXBlLm9uRHJhZ0VuZD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fZHJhZ0VuZENhbGxiYWNrcy5hZGQodCksdGhpc30sZS5wcm90b3R5cGUub2ZmRHJhZ0VuZD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fZHJhZ0VuZENhbGxiYWNrcy5kZWxldGUodCksdGhpc30sZS5wcm90b3R5cGUuZHJhZ0ludGVyYWN0aW9uPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2RyYWdJbnRlcmFjdGlvbn0sZS5wcm90b3R5cGUuZW5hYmxlZD1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9kcmFnSW50ZXJhY3Rpb24uZW5hYmxlZCgpOih0aGlzLl9kcmFnSW50ZXJhY3Rpb24uZW5hYmxlZCh0KSx0aGlzLl9zZXRSZXNpemFibGVDbGFzc2VzKHRoaXMucmVzaXphYmxlKCkpLHRoaXMuX3NldE1vdmFibGVDbGFzcygpLHRoaXMpfSxlLnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKCl7dmFyIGU9dGhpczt0LnByb3RvdHlwZS5kZXN0cm95LmNhbGwodGhpcyksdGhpcy5fZHJhZ1N0YXJ0Q2FsbGJhY2tzLmZvckVhY2goKGZ1bmN0aW9uKHQpe3JldHVybiBlLl9kcmFnQ2FsbGJhY2tzLmRlbGV0ZSh0KX0pKSx0aGlzLl9kcmFnQ2FsbGJhY2tzLmZvckVhY2goKGZ1bmN0aW9uKHQpe3JldHVybiBlLl9kcmFnQ2FsbGJhY2tzLmRlbGV0ZSh0KX0pKSx0aGlzLl9kcmFnRW5kQ2FsbGJhY2tzLmZvckVhY2goKGZ1bmN0aW9uKHQpe3JldHVybiBlLl9kcmFnRW5kQ2FsbGJhY2tzLmRlbGV0ZSh0KX0pKSx0aGlzLl9kaXNjb25uZWN0SW50ZXJhY3Rpb24oKX0sZS5wcm90b3R5cGUuZGV0YWNoPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3Jlc2V0U3RhdGUoKSx0aGlzLl9kcmFnSW50ZXJhY3Rpb24uZGV0YWNoKCksdC5wcm90b3R5cGUuZGV0YWNoLmNhbGwodGhpcyksdGhpc30sZS5wcm90b3R5cGUuYW5jaG9yPWZ1bmN0aW9uKGUpe3JldHVybiBlPVF4dC5jb2VyY2VFeHRlcm5hbEQzKGUpLHRoaXMuX2RyYWdJbnRlcmFjdGlvbi5hdHRhY2hUbyh0aGlzKSx0LnByb3RvdHlwZS5hbmNob3IuY2FsbCh0aGlzLGUpLHRoaXN9LGUucHJvdG90eXBlLl9yZXNldFN0YXRlPWZ1bmN0aW9uKCl7dGhpcy5ib3VuZHMoe3RvcExlZnQ6e3g6MCx5OjB9LGJvdHRvbVJpZ2h0Ont4OjAseTowfX0pfSxlfSkoJHh0LlNlbGVjdGlvbkJveExheWVyKTtleHQuRHJhZ0JveExheWVyPWV3dDt2YXIgbnd0PXt9LGl3dD17fTsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi8KT2JqZWN0LmRlZmluZVByb3BlcnR5KGl3dCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIHJ3dCxvd3Q9Qk8sYXd0PURfdCxzd3Q9T190OyEoZnVuY3Rpb24odCl7dFt0LlZBTFVFPTBdPSJWQUxVRSIsdFt0LlBJWEVMPTFdPSJQSVhFTCJ9KShyd3R8fChyd3Q9e30pKTt2YXIgbHd0PShmdW5jdGlvbih0KXtmdW5jdGlvbiBlKG4pe3ZhciBpPXQuY2FsbCh0aGlzKXx8dGhpcztpZihpLl9tb2RlPXJ3dC5WQUxVRSxuIT09ZS5PUklFTlRBVElPTl9WRVJUSUNBTCYmbiE9PWUuT1JJRU5UQVRJT05fSE9SSVpPTlRBTCl0aHJvdyBuZXcgRXJyb3IobisiIGlzIG5vdCBhIHZhbGlkIG9yaWVudGF0aW9uIGZvciBHdWlkZUxpbmVMYXllciIpO3JldHVybiBpLl9vcmllbnRhdGlvbj1uLGkuX292ZXJmbG93SGlkZGVuPSEwLGkuYWRkQ2xhc3MoImd1aWRlLWxpbmUtbGF5ZXIiKSxpLl9pc1ZlcnRpY2FsKCk/aS5hZGRDbGFzcygidmVydGljYWwiKTppLmFkZENsYXNzKCJob3Jpem9udGFsIiksaS5fc2NhbGVVcGRhdGVDYWxsYmFjaz1mdW5jdGlvbigpe2kuX3N5bmNQaXhlbFBvc2l0aW9uQW5kVmFsdWUoKSxpLnJlbmRlcigpfSxpfXJldHVybiBvd3QuX19leHRlbmRzKGUsdCksZS5wcm90b3R5cGUuX3NldHVwPWZ1bmN0aW9uKCl7dC5wcm90b3R5cGUuX3NldHVwLmNhbGwodGhpcyksdGhpcy5fZ3VpZGVMaW5lPXRoaXMuY29udGVudCgpLmFwcGVuZCgibGluZSIpLmNsYXNzZWQoImd1aWRlLWxpbmUiLCEwKX0sZS5wcm90b3R5cGUuX3NpemVGcm9tT2ZmZXI9ZnVuY3Rpb24odCxlKXtyZXR1cm57d2lkdGg6dCxoZWlnaHQ6ZX19LGUucHJvdG90eXBlLl9pc1ZlcnRpY2FsPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX29yaWVudGF0aW9uPT09ZS5PUklFTlRBVElPTl9WRVJUSUNBTH0sZS5wcm90b3R5cGUuZml4ZWRXaWR0aD1mdW5jdGlvbigpe3JldHVybiEwfSxlLnByb3RvdHlwZS5maXhlZEhlaWdodD1mdW5jdGlvbigpe3JldHVybiEwfSxlLnByb3RvdHlwZS5jb21wdXRlTGF5b3V0PWZ1bmN0aW9uKGUsbixpKXtyZXR1cm4gdC5wcm90b3R5cGUuY29tcHV0ZUxheW91dC5jYWxsKHRoaXMsZSxuLGkpLG51bGwhPXRoaXMuc2NhbGUoKSYmKHRoaXMuX2lzVmVydGljYWwoKT90aGlzLnNjYWxlKCkucmFuZ2UoWzAsdGhpcy53aWR0aCgpXSk6dGhpcy5zY2FsZSgpLnJhbmdlKFt0aGlzLmhlaWdodCgpLDBdKSksdGhpc30sZS5wcm90b3R5cGUucmVuZGVySW1tZWRpYXRlbHk9ZnVuY3Rpb24oKXtyZXR1cm4gdC5wcm90b3R5cGUucmVuZGVySW1tZWRpYXRlbHkuY2FsbCh0aGlzKSx0aGlzLl9zeW5jUGl4ZWxQb3NpdGlvbkFuZFZhbHVlKCksdGhpcy5fZ3VpZGVMaW5lLmF0dHJzKHt4MTp0aGlzLl9pc1ZlcnRpY2FsKCk/dGhpcy5waXhlbFBvc2l0aW9uKCk6MCx5MTp0aGlzLl9pc1ZlcnRpY2FsKCk/MDp0aGlzLnBpeGVsUG9zaXRpb24oKSx4Mjp0aGlzLl9pc1ZlcnRpY2FsKCk/dGhpcy5waXhlbFBvc2l0aW9uKCk6dGhpcy53aWR0aCgpLHkyOnRoaXMuX2lzVmVydGljYWwoKT90aGlzLmhlaWdodCgpOnRoaXMucGl4ZWxQb3NpdGlvbigpfSksdGhpc30sZS5wcm90b3R5cGUuX3N5bmNQaXhlbFBvc2l0aW9uQW5kVmFsdWU9ZnVuY3Rpb24oKXtudWxsIT10aGlzLnNjYWxlKCkmJih0aGlzLl9tb2RlPT09cnd0LlZBTFVFJiZudWxsIT10aGlzLnZhbHVlKCk/dGhpcy5fcGl4ZWxQb3NpdGlvbj10aGlzLnNjYWxlKCkuc2NhbGUodGhpcy52YWx1ZSgpKTp0aGlzLl9tb2RlPT09cnd0LlBJWEVMJiZudWxsIT10aGlzLnBpeGVsUG9zaXRpb24oKSYmKHRoaXMuX3ZhbHVlPXRoaXMuc2NhbGUoKS5pbnZlcnQodGhpcy5waXhlbFBvc2l0aW9uKCkpKSl9LGUucHJvdG90eXBlLl9zZXRQaXhlbFBvc2l0aW9uV2l0aG91dENoYW5naW5nTW9kZT1mdW5jdGlvbih0KXt0aGlzLl9waXhlbFBvc2l0aW9uPXQsbnVsbCE9dGhpcy5zY2FsZSgpJiYodGhpcy5fdmFsdWU9dGhpcy5zY2FsZSgpLmludmVydCh0aGlzLnBpeGVsUG9zaXRpb24oKSkpLHRoaXMucmVuZGVyKCl9LGUucHJvdG90eXBlLnNjYWxlPWZ1bmN0aW9uKHQpe2lmKG51bGw9PXQpcmV0dXJuIHRoaXMuX3NjYWxlO3ZhciBlPXRoaXMuX3NjYWxlO3JldHVybiBudWxsIT1lJiZlLm9mZlVwZGF0ZSh0aGlzLl9zY2FsZVVwZGF0ZUNhbGxiYWNrKSx0aGlzLl9zY2FsZT10LHRoaXMuX3NjYWxlLm9uVXBkYXRlKHRoaXMuX3NjYWxlVXBkYXRlQ2FsbGJhY2spLHRoaXMuX3N5bmNQaXhlbFBvc2l0aW9uQW5kVmFsdWUoKSx0aGlzLnJlZHJhdygpLHRoaXN9LGUucHJvdG90eXBlLnZhbHVlPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuX3ZhbHVlOih0aGlzLl92YWx1ZT10LHRoaXMuX21vZGU9cnd0LlZBTFVFLHRoaXMuX3N5bmNQaXhlbFBvc2l0aW9uQW5kVmFsdWUoKSx0aGlzLnJlbmRlcigpLHRoaXMpfSxlLnByb3RvdHlwZS5waXhlbFBvc2l0aW9uPWZ1bmN0aW9uKHQpe2lmKG51bGw9PXQpcmV0dXJuIHRoaXMuX3BpeGVsUG9zaXRpb247aWYoIWF3dC5NYXRoLmlzVmFsaWROdW1iZXIodCkpdGhyb3cgbmV3IEVycm9yKCJwaXhlbFBvc2l0aW9uIG11c3QgYmUgYSBmaW5pdGUgbnVtYmVyIik7cmV0dXJuIHRoaXMuX3BpeGVsUG9zaXRpb249dCx0aGlzLl9tb2RlPXJ3dC5QSVhFTCx0aGlzLl9zeW5jUGl4ZWxQb3NpdGlvbkFuZFZhbHVlKCksdGhpcy5yZW5kZXIoKSx0aGlzfSxlLnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKCl7dC5wcm90b3R5cGUuZGVzdHJveS5jYWxsKHRoaXMpLG51bGwhPXRoaXMuc2NhbGUoKSYmdGhpcy5zY2FsZSgpLm9mZlVwZGF0ZSh0aGlzLl9zY2FsZVVwZGF0ZUNhbGxiYWNrKX0sZS5PUklFTlRBVElPTl9WRVJUSUNBTD0idmVydGljYWwiLGUuT1JJRU5UQVRJT05fSE9SSVpPTlRBTD0iaG9yaXpvbnRhbCIsZX0pKHN3dC5Db21wb25lbnQpO2l3dC5HdWlkZUxpbmVMYXllcj1sd3QsCi8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovCk9iamVjdC5kZWZpbmVQcm9wZXJ0eShud3QsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBjd3Q9Qk8sdXd0PW54dCxod3Q9RF90LGR3dD0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlKXt2YXIgbj10LmNhbGwodGhpcyxlKXx8dGhpcztuLl9kZXRlY3Rpb25SYWRpdXM9MyxuLl9lbmFibGVkPSEwLG4uYWRkQ2xhc3MoImRyYWctbGluZS1sYXllciIpLG4uYWRkQ2xhc3MoImVuYWJsZWQiKSxuLl9kcmFnSW50ZXJhY3Rpb249bmV3IHV3dC5EcmFnLG4uX2RyYWdJbnRlcmFjdGlvbi5hdHRhY2hUbyhuKTt2YXIgaT0hMSxyPWZ1bmN0aW9uKHQpeyhmdW5jdGlvbih0KXtyZXR1cm4gbi5faXNWZXJ0aWNhbCgpJiZuLnBpeGVsUG9zaXRpb24oKS1uLmRldGVjdGlvblJhZGl1cygpPD10LngmJnQueDw9bi5waXhlbFBvc2l0aW9uKCkrbi5kZXRlY3Rpb25SYWRpdXMoKXx8IW4uX2lzVmVydGljYWwoKSYmbi5waXhlbFBvc2l0aW9uKCktbi5kZXRlY3Rpb25SYWRpdXMoKTw9dC55JiZ0Lnk8PW4ucGl4ZWxQb3NpdGlvbigpK24uZGV0ZWN0aW9uUmFkaXVzKCl9KSh0KSYmKGk9ITAsbi5fZHJhZ1N0YXJ0Q2FsbGJhY2tzLmNhbGxDYWxsYmFja3MobikpfTtuLl9kcmFnSW50ZXJhY3Rpb24ub25EcmFnU3RhcnQocik7dmFyIG89ZnVuY3Rpb24odCxlKXtpJiYobi5fc2V0UGl4ZWxQb3NpdGlvbldpdGhvdXRDaGFuZ2luZ01vZGUobi5faXNWZXJ0aWNhbCgpP2UueDplLnkpLG4uX2RyYWdDYWxsYmFja3MuY2FsbENhbGxiYWNrcyhuKSl9O24uX2RyYWdJbnRlcmFjdGlvbi5vbkRyYWcobyk7dmFyIGE9ZnVuY3Rpb24odCxlKXtpJiYoaT0hMSxuLl9kcmFnRW5kQ2FsbGJhY2tzLmNhbGxDYWxsYmFja3MobikpfTtyZXR1cm4gbi5fZHJhZ0ludGVyYWN0aW9uLm9uRHJhZ0VuZChhKSxuLl9kaXNjb25uZWN0SW50ZXJhY3Rpb249ZnVuY3Rpb24oKXtuLl9kcmFnSW50ZXJhY3Rpb24ub2ZmRHJhZ1N0YXJ0KHIpLG4uX2RyYWdJbnRlcmFjdGlvbi5vZmZEcmFnKG8pLG4uX2RyYWdJbnRlcmFjdGlvbi5vZmZEcmFnRW5kKGEpLG4uX2RyYWdJbnRlcmFjdGlvbi5kZXRhY2goKX0sbi5fZHJhZ1N0YXJ0Q2FsbGJhY2tzPW5ldyBod3QuQ2FsbGJhY2tTZXQsbi5fZHJhZ0NhbGxiYWNrcz1uZXcgaHd0LkNhbGxiYWNrU2V0LG4uX2RyYWdFbmRDYWxsYmFja3M9bmV3IGh3dC5DYWxsYmFja1NldCxufXJldHVybiBjd3QuX19leHRlbmRzKGUsdCksZS5wcm90b3R5cGUuX3NldHVwPWZ1bmN0aW9uKCl7dC5wcm90b3R5cGUuX3NldHVwLmNhbGwodGhpcyksdGhpcy5fZGV0ZWN0aW9uRWRnZT10aGlzLmNvbnRlbnQoKS5hcHBlbmQoImxpbmUiKS5zdHlsZXMoe29wYWNpdHk6MCxzdHJva2U6InBpbmsiLCJwb2ludGVyLWV2ZW50cyI6InZpc2libGVTdHJva2UifSkuY2xhc3NlZCgiZHJhZy1lZGdlIiwhMCl9LGUucHJvdG90eXBlLnJlbmRlckltbWVkaWF0ZWx5PWZ1bmN0aW9uKCl7cmV0dXJuIHQucHJvdG90eXBlLnJlbmRlckltbWVkaWF0ZWx5LmNhbGwodGhpcyksdGhpcy5fZGV0ZWN0aW9uRWRnZS5hdHRycyh7eDE6dGhpcy5faXNWZXJ0aWNhbCgpP3RoaXMucGl4ZWxQb3NpdGlvbigpOjAseTE6dGhpcy5faXNWZXJ0aWNhbCgpPzA6dGhpcy5waXhlbFBvc2l0aW9uKCkseDI6dGhpcy5faXNWZXJ0aWNhbCgpP3RoaXMucGl4ZWxQb3NpdGlvbigpOnRoaXMud2lkdGgoKSx5Mjp0aGlzLl9pc1ZlcnRpY2FsKCk/dGhpcy5oZWlnaHQoKTp0aGlzLnBpeGVsUG9zaXRpb24oKSwic3Ryb2tlLXdpZHRoIjoyKnRoaXMuX2RldGVjdGlvblJhZGl1c30pLHRoaXN9LGUucHJvdG90eXBlLmRldGVjdGlvblJhZGl1cz1mdW5jdGlvbih0KXtpZihudWxsPT10KXJldHVybiB0aGlzLl9kZXRlY3Rpb25SYWRpdXM7aWYodDwwKXRocm93IG5ldyBFcnJvcigiZGV0ZWN0aW9uIHJhZGl1cyBjYW5ub3QgYmUgbmVnYXRpdmUuIik7cmV0dXJuIHRoaXMuX2RldGVjdGlvblJhZGl1cz10LHRoaXMucmVuZGVyKCksdGhpc30sZS5wcm90b3R5cGUuZW5hYmxlZD1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9lbmFibGVkOih0aGlzLl9lbmFibGVkPXQsdD90aGlzLmFkZENsYXNzKCJlbmFibGVkIik6dGhpcy5yZW1vdmVDbGFzcygiZW5hYmxlZCIpLHRoaXMuX2RyYWdJbnRlcmFjdGlvbi5lbmFibGVkKHQpLHRoaXMpfSxlLnByb3RvdHlwZS5vbkRyYWdTdGFydD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fZHJhZ1N0YXJ0Q2FsbGJhY2tzLmFkZCh0KSx0aGlzfSxlLnByb3RvdHlwZS5vZmZEcmFnU3RhcnQ9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2RyYWdTdGFydENhbGxiYWNrcy5kZWxldGUodCksdGhpc30sZS5wcm90b3R5cGUub25EcmFnPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9kcmFnQ2FsbGJhY2tzLmFkZCh0KSx0aGlzfSxlLnByb3RvdHlwZS5vZmZEcmFnPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9kcmFnQ2FsbGJhY2tzLmRlbGV0ZSh0KSx0aGlzfSxlLnByb3RvdHlwZS5vbkRyYWdFbmQ9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2RyYWdFbmRDYWxsYmFja3MuYWRkKHQpLHRoaXN9LGUucHJvdG90eXBlLm9mZkRyYWdFbmQ9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2RyYWdFbmRDYWxsYmFja3MuZGVsZXRlKHQpLHRoaXN9LGUucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXt2YXIgZT10aGlzO3QucHJvdG90eXBlLmRlc3Ryb3kuY2FsbCh0aGlzKSx0aGlzLl9kcmFnU3RhcnRDYWxsYmFja3MuZm9yRWFjaCgoZnVuY3Rpb24odCl7cmV0dXJuIGUuX2RyYWdTdGFydENhbGxiYWNrcy5kZWxldGUodCl9KSksdGhpcy5fZHJhZ0NhbGxiYWNrcy5mb3JFYWNoKChmdW5jdGlvbih0KXtyZXR1cm4gZS5fZHJhZ0NhbGxiYWNrcy5kZWxldGUodCl9KSksdGhpcy5fZHJhZ0VuZENhbGxiYWNrcy5mb3JFYWNoKChmdW5jdGlvbih0KXtyZXR1cm4gZS5fZHJhZ0VuZENhbGxiYWNrcy5kZWxldGUodCl9KSksdGhpcy5fZGlzY29ubmVjdEludGVyYWN0aW9uKCl9LGV9KShpd3QuR3VpZGVMaW5lTGF5ZXIpO253dC5EcmFnTGluZUxheWVyPWR3dDt2YXIgcHd0PXt9OwovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqL09iamVjdC5kZWZpbmVQcm9wZXJ0eShwd3QsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBmd3Q9Qk87ZnVuY3Rpb24gbXd0KHQsZSxuKXt2YXIgaT17fTtpZih2b2lkIDAhPT1uKWZvcih2YXIgcj0wO3I8bi5sZW5ndGg7cisrKXtpW25bcl1dPW5bci0xXX1yZXR1cm4gZnVuY3Rpb24obil7dmFyIHIsbz10LnNjYWxlKG4pO2lmKCFlKXJldHVybiBvO3ZhciBhPXZvaWQgMD09PWlbbl0/dm9pZCAwOnQuc2NhbGUoaVtuXSk7cmV0dXJuIHZvaWQgMCE9PWEmJihyPWErKG8tYSkvMikscn19dmFyIGd3dD0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlLG4pe3ZhciBpPXQuY2FsbCh0aGlzKXx8dGhpcztyZXR1cm4gaS5hZGRDbGFzcygiZ3JpZGxpbmVzIiksaS5feFNjYWxlPWUsaS5feVNjYWxlPW4saS5fcmVuZGVyQ2FsbGJhY2s9ZnVuY3Rpb24odCl7cmV0dXJuIGkucmVuZGVyKCl9LGkuX3hTY2FsZSYmaS5feFNjYWxlLm9uVXBkYXRlKGkuX3JlbmRlckNhbGxiYWNrKSxpLl95U2NhbGUmJmkuX3lTY2FsZS5vblVwZGF0ZShpLl9yZW5kZXJDYWxsYmFjayksaX1yZXR1cm4gZnd0Ll9fZXh0ZW5kcyhlLHQpLGUucHJvdG90eXBlLmJldHdlZW5YPWZ1bmN0aW9uKHQpe3JldHVybiB2b2lkIDA9PT10P3RoaXMuX2JldHdlZW5YOih0IT09dGhpcy5fYmV0d2VlblgmJih0aGlzLl9iZXR3ZWVuWD10LHRoaXMucmVuZGVyKCkpLHRoaXMpfSxlLnByb3RvdHlwZS5iZXR3ZWVuWT1mdW5jdGlvbih0KXtyZXR1cm4gdm9pZCAwPT09dD90aGlzLl9iZXR3ZWVuWToodCE9PXRoaXMuX2JldHdlZW5ZJiYodGhpcy5fYmV0d2Vlblk9dCx0aGlzLnJlbmRlcigpKSx0aGlzKX0sZS5wcm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigpe3JldHVybiB0LnByb3RvdHlwZS5kZXN0cm95LmNhbGwodGhpcyksdGhpcy5feFNjYWxlJiZ0aGlzLl94U2NhbGUub2ZmVXBkYXRlKHRoaXMuX3JlbmRlckNhbGxiYWNrKSx0aGlzLl95U2NhbGUmJnRoaXMuX3lTY2FsZS5vZmZVcGRhdGUodGhpcy5fcmVuZGVyQ2FsbGJhY2spLHRoaXN9LGUucHJvdG90eXBlLl9zZXR1cD1mdW5jdGlvbigpe3QucHJvdG90eXBlLl9zZXR1cC5jYWxsKHRoaXMpLHRoaXMuX3hMaW5lc0NvbnRhaW5lcj10aGlzLmNvbnRlbnQoKS5hcHBlbmQoImciKS5jbGFzc2VkKCJ4LWdyaWRsaW5lcyIsITApLHRoaXMuX3lMaW5lc0NvbnRhaW5lcj10aGlzLmNvbnRlbnQoKS5hcHBlbmQoImciKS5jbGFzc2VkKCJ5LWdyaWRsaW5lcyIsITApfSxlLnByb3RvdHlwZS5yZW5kZXJJbW1lZGlhdGVseT1mdW5jdGlvbigpe3JldHVybiB0LnByb3RvdHlwZS5yZW5kZXJJbW1lZGlhdGVseS5jYWxsKHRoaXMpLHRoaXMuX3JlZHJhd1hMaW5lcygpLHRoaXMuX3JlZHJhd1lMaW5lcygpLHRoaXN9LGUucHJvdG90eXBlLmNvbXB1dGVMYXlvdXQ9ZnVuY3Rpb24oZSxuLGkpe3JldHVybiB0LnByb3RvdHlwZS5jb21wdXRlTGF5b3V0LmNhbGwodGhpcyxlLG4saSksbnVsbCE9dGhpcy5feFNjYWxlJiZ0aGlzLl94U2NhbGUucmFuZ2UoWzAsdGhpcy53aWR0aCgpXSksbnVsbCE9dGhpcy5feVNjYWxlJiZ0aGlzLl95U2NhbGUucmFuZ2UoW3RoaXMuaGVpZ2h0KCksMF0pLHRoaXN9LGUucHJvdG90eXBlLl9yZWRyYXdYTGluZXM9ZnVuY3Rpb24oKXtpZih0aGlzLl94U2NhbGUpe3ZhciB0PXRoaXMuYmV0d2VlblgoKSxlPXRoaXMuX3hTY2FsZS50aWNrcygpLnNsaWNlKHQ/MTowKSxuPXRoaXMuX3hMaW5lc0NvbnRhaW5lci5zZWxlY3RBbGwoImxpbmUiKS5kYXRhKGUpO24uZW50ZXIoKS5hcHBlbmQoImxpbmUiKS5tZXJnZShuKS5hdHRyKCJ4MSIsbXd0KHRoaXMuX3hTY2FsZSx0LHRoaXMuX3hTY2FsZS50aWNrcygpKSkuYXR0cigieTEiLDApLmF0dHIoIngyIixtd3QodGhpcy5feFNjYWxlLHQsdGhpcy5feFNjYWxlLnRpY2tzKCkpKS5hdHRyKCJ5MiIsdGhpcy5oZWlnaHQoKSkuY2xhc3NlZCgiYmV0d2VlbmxpbmUiLHQpLmNsYXNzZWQoInplcm9saW5lIiwoZnVuY3Rpb24odCl7cmV0dXJuIDA9PT10fSkpLG4uZXhpdCgpLnJlbW92ZSgpfX0sZS5wcm90b3R5cGUuX3JlZHJhd1lMaW5lcz1mdW5jdGlvbigpe2lmKHRoaXMuX3lTY2FsZSl7dmFyIHQ9dGhpcy5iZXR3ZWVuWSgpLGU9dGhpcy5feVNjYWxlLnRpY2tzKCkuc2xpY2UodD8xOjApLG49dGhpcy5feUxpbmVzQ29udGFpbmVyLnNlbGVjdEFsbCgibGluZSIpLmRhdGEoZSk7bi5lbnRlcigpLmFwcGVuZCgibGluZSIpLm1lcmdlKG4pLmF0dHIoIngxIiwwKS5hdHRyKCJ5MSIsbXd0KHRoaXMuX3lTY2FsZSx0LHRoaXMuX3lTY2FsZS50aWNrcygpKSkuYXR0cigieDIiLHRoaXMud2lkdGgoKSkuYXR0cigieTIiLG13dCh0aGlzLl95U2NhbGUsdCx0aGlzLl95U2NhbGUudGlja3MoKSkpLmNsYXNzZWQoImJldHdlZW5saW5lIix0KS5jbGFzc2VkKCJ6ZXJvbGluZSIsKGZ1bmN0aW9uKHQpe3JldHVybiAwPT09dH0pKSxuLmV4aXQoKS5yZW1vdmUoKX19LGV9KShPX3QuQ29tcG9uZW50KTtwd3QuR3JpZGxpbmVzPWd3dDt2YXIgX3d0PXt9LHl3dD17fTsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi8KT2JqZWN0LmRlZmluZVByb3BlcnR5KHl3dCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIHZ3dD1CTyxid3Q9X2d0LHh3dD0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3ZhciBlPXQuY2FsbCh0aGlzKXx8dGhpcztyZXR1cm4gZS5fZGV0YWNoQ2FsbGJhY2s9ZnVuY3Rpb24odCl7cmV0dXJuIGUucmVtb3ZlKHQpfSxlfXJldHVybiB2d3QuX19leHRlbmRzKGUsdCksZS5wcm90b3R5cGUuYW5jaG9yPWZ1bmN0aW9uKGUpe3ZhciBuPXRoaXM7cmV0dXJuIGU9Ynd0LmNvZXJjZUV4dGVybmFsRDMoZSksdC5wcm90b3R5cGUuYW5jaG9yLmNhbGwodGhpcyxlKSx0aGlzLl9mb3JFYWNoKChmdW5jdGlvbih0KXtyZXR1cm4gdC5hbmNob3Iobi5lbGVtZW50KCkpfSkpLHRoaXN9LGUucHJvdG90eXBlLnJlbmRlcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9mb3JFYWNoKChmdW5jdGlvbih0KXtyZXR1cm4gdC5yZW5kZXIoKX0pKSx0aGlzfSxlLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24odCl7dGhyb3cgbmV3IEVycm9yKCJoYXMoKSBpcyBub3QgaW1wbGVtZW50ZWQgb24gQ29tcG9uZW50Q29udGFpbmVyIil9LGUucHJvdG90eXBlLl9hZG9wdEFuZEFuY2hvcj1mdW5jdGlvbih0KXt0LnBhcmVudCh0aGlzKSx0Lm9uRGV0YWNoKHRoaXMuX2RldGFjaENhbGxiYWNrKSx0aGlzLl9pc0FuY2hvcmVkJiZ0LmFuY2hvcih0aGlzLmVsZW1lbnQoKSl9LGUucHJvdG90eXBlLnJlbW92ZT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5oYXModCkmJih0Lm9mZkRldGFjaCh0aGlzLl9kZXRhY2hDYWxsYmFjayksdGhpcy5fcmVtb3ZlKHQpLHQuZGV0YWNoKCksdGhpcy5yZWRyYXcoKSksdGhpc30sZS5wcm90b3R5cGUuX3JlbW92ZT1mdW5jdGlvbih0KXtyZXR1cm4hMX0sZS5wcm90b3R5cGUuX2ZvckVhY2g9ZnVuY3Rpb24odCl7dGhyb3cgbmV3IEVycm9yKCJfZm9yRWFjaCgpIGlzIG5vdCBpbXBsZW1lbnRlZCBvbiBDb21wb25lbnRDb250YWluZXIiKX0sZS5wcm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigpe3QucHJvdG90eXBlLmRlc3Ryb3kuY2FsbCh0aGlzKSx0aGlzLl9mb3JFYWNoKChmdW5jdGlvbih0KXtyZXR1cm4gdC5kZXN0cm95KCl9KSl9LGUucHJvdG90eXBlLmludmFsaWRhdGVDYWNoZT1mdW5jdGlvbigpe3RoaXMuX2ZvckVhY2goKGZ1bmN0aW9uKHQpe3JldHVybiB0LmludmFsaWRhdGVDYWNoZSgpfSkpfSxlfSkoT190LkNvbXBvbmVudCk7eXd0LkNvbXBvbmVudENvbnRhaW5lcj14d3QsCi8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovCk9iamVjdC5kZWZpbmVQcm9wZXJ0eShfd3QsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciB3d3Q9Qk8sU3d0PURfdCxNd3Q9KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSl7dm9pZCAwPT09ZSYmKGU9W10pO3ZhciBuPXQuY2FsbCh0aGlzKXx8dGhpcztyZXR1cm4gbi5fY29tcG9uZW50cz1bXSxuLmFkZENsYXNzKCJjb21wb25lbnQtZ3JvdXAiKSxlLmZvckVhY2goKGZ1bmN0aW9uKHQpe3JldHVybiBuLmFwcGVuZCh0KX0pKSxufXJldHVybiB3d3QuX19leHRlbmRzKGUsdCksZS5wcm90b3R5cGUuX2ZvckVhY2g9ZnVuY3Rpb24odCl7dGhpcy5jb21wb25lbnRzKCkuZm9yRWFjaCh0KX0sZS5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9jb21wb25lbnRzLmluZGV4T2YodCk+PTB9LGUucHJvdG90eXBlLnJlcXVlc3RlZFNwYWNlPWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcy5fY29tcG9uZW50cy5tYXAoKGZ1bmN0aW9uKG4pe3JldHVybiBuLnJlcXVlc3RlZFNwYWNlKHQsZSl9KSk7cmV0dXJue21pbldpZHRoOlN3dC5NYXRoLm1heChuLChmdW5jdGlvbih0KXtyZXR1cm4gdC5taW5XaWR0aH0pLDApLG1pbkhlaWdodDpTd3QuTWF0aC5tYXgobiwoZnVuY3Rpb24odCl7cmV0dXJuIHQubWluSGVpZ2h0fSksMCl9fSxlLnByb3RvdHlwZS5jb21wdXRlTGF5b3V0PWZ1bmN0aW9uKGUsbixpKXt2YXIgcj10aGlzO3JldHVybiB0LnByb3RvdHlwZS5jb21wdXRlTGF5b3V0LmNhbGwodGhpcyxlLG4saSksdGhpcy5fZm9yRWFjaCgoZnVuY3Rpb24odCl7dC5jb21wdXRlTGF5b3V0KHt4OjAseTowfSxyLndpZHRoKCksci5oZWlnaHQoKSl9KSksdGhpc30sZS5wcm90b3R5cGUuX3NpemVGcm9tT2ZmZXI9ZnVuY3Rpb24odCxlKXtyZXR1cm57d2lkdGg6dCxoZWlnaHQ6ZX19LGUucHJvdG90eXBlLmZpeGVkV2lkdGg9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY29tcG9uZW50cy5ldmVyeSgoZnVuY3Rpb24odCl7cmV0dXJuIHQuZml4ZWRXaWR0aCgpfSkpfSxlLnByb3RvdHlwZS5maXhlZEhlaWdodD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9jb21wb25lbnRzLmV2ZXJ5KChmdW5jdGlvbih0KXtyZXR1cm4gdC5maXhlZEhlaWdodCgpfSkpfSxlLnByb3RvdHlwZS5jb21wb25lbnRzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2NvbXBvbmVudHMuc2xpY2UoKX0sZS5wcm90b3R5cGUuYXBwZW5kPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10fHx0aGlzLmhhcyh0KXx8KHQuZGV0YWNoKCksdGhpcy5fY29tcG9uZW50cy5wdXNoKHQpLHRoaXMuX2Fkb3B0QW5kQW5jaG9yKHQpLHRoaXMucmVkcmF3KCkpLHRoaXN9LGUucHJvdG90eXBlLl9yZW1vdmU9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fY29tcG9uZW50cy5pbmRleE9mKHQpO3JldHVybiBlPj0wJiYodGhpcy5fY29tcG9uZW50cy5zcGxpY2UoZSwxKSwhMCl9LGV9KSh5d3QuQ29tcG9uZW50Q29udGFpbmVyKTtfd3QuR3JvdXA9TXd0O3ZhciBFd3Q9e307Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovT2JqZWN0LmRlZmluZVByb3BlcnR5KEV3dCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIFR3dD1CTyxDd3Q9TGd0LEF3dD1DeXQsa3d0PXB2dCxMd3Q9RF90LFB3dD0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlKXt2YXIgbj10LmNhbGwodGhpcyl8fHRoaXM7aWYobi5fdGV4dFBhZGRpbmc9NSxudWxsPT1lKXRocm93IG5ldyBFcnJvcigiSW50ZXJwb2xhdGVkQ29sb3JMZWdlbmQgcmVxdWlyZXMgYSBpbnRlcnBvbGF0ZWRDb2xvclNjYWxlIik7cmV0dXJuIG4uX3NjYWxlPWUsbi5fcmVkcmF3Q2FsbGJhY2s9ZnVuY3Rpb24odCl7cmV0dXJuIG4ucmVkcmF3KCl9LG4uX3NjYWxlLm9uVXBkYXRlKG4uX3JlZHJhd0NhbGxiYWNrKSxuLl9mb3JtYXR0ZXI9a3d0LmdlbmVyYWwoKSxuLl9vcmllbnRhdGlvbj0iaG9yaXpvbnRhbCIsbi5fZXhwYW5kcz0hMSxuLmFkZENsYXNzKCJsZWdlbmQiKSxuLmFkZENsYXNzKCJpbnRlcnBvbGF0ZWQtY29sb3ItbGVnZW5kIiksbn1yZXR1cm4gVHd0Ll9fZXh0ZW5kcyhlLHQpLGUucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXt0LnByb3RvdHlwZS5kZXN0cm95LmNhbGwodGhpcyksdGhpcy5fc2NhbGUub2ZmVXBkYXRlKHRoaXMuX3JlZHJhd0NhbGxiYWNrKX0sZS5wcm90b3R5cGUuZm9ybWF0dGVyPWZ1bmN0aW9uKHQpe3JldHVybiB2b2lkIDA9PT10P3RoaXMuX2Zvcm1hdHRlcjoodGhpcy5fZm9ybWF0dGVyPXQsdGhpcy5yZWRyYXcoKSx0aGlzKX0sZS5wcm90b3R5cGUuZXhwYW5kcz1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9leHBhbmRzOih0aGlzLl9leHBhbmRzPXQsdGhpcy5yZWRyYXcoKSx0aGlzKX0sZS5fZW5zdXJlT3JpZW50YXRpb249ZnVuY3Rpb24odCl7aWYoImhvcml6b250YWwiPT09KHQ9dC50b0xvd2VyQ2FzZSgpKXx8ImxlZnQiPT09dHx8InJpZ2h0Ij09PXQpcmV0dXJuIHQ7dGhyb3cgbmV3IEVycm9yKCciJyt0KyciIGlzIG5vdCBhIHZhbGlkIG9yaWVudGF0aW9uIGZvciBJbnRlcnBvbGF0ZWRDb2xvckxlZ2VuZCcpfSxlLnByb3RvdHlwZS5vcmllbnRhdGlvbj1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9vcmllbnRhdGlvbjoodGhpcy5fb3JpZW50YXRpb249ZS5fZW5zdXJlT3JpZW50YXRpb24odCksdGhpcy5yZWRyYXcoKSx0aGlzKX0sZS5wcm90b3R5cGUuZml4ZWRXaWR0aD1mdW5jdGlvbigpe3JldHVybiF0aGlzLmV4cGFuZHMoKXx8dGhpcy5faXNWZXJ0aWNhbCgpfSxlLnByb3RvdHlwZS5maXhlZEhlaWdodD1mdW5jdGlvbigpe3JldHVybiF0aGlzLmV4cGFuZHMoKXx8IXRoaXMuX2lzVmVydGljYWwoKX0sZS5wcm90b3R5cGUuX2dlbmVyYXRlVGlja3M9ZnVuY3Rpb24odCl7dm9pZCAwPT09dCYmKHQ9ZS5fREVGQVVMVF9OVU1fU1dBVENIRVMpO3ZhciBuPXRoaXMuX3NjYWxlLmRvbWFpbigpO2lmKDE9PT10KXJldHVybltuWzBdXTtmb3IodmFyIGk9KG5bMV0tblswXSkvKHQtMSkscj1bXSxvPTA7bzx0O28rKylyLnB1c2goblswXStpKm8pO3JldHVybiByfSxlLnByb3RvdHlwZS5fc2V0dXA9ZnVuY3Rpb24oKXt0LnByb3RvdHlwZS5fc2V0dXAuY2FsbCh0aGlzKSx0aGlzLl9zd2F0Y2hDb250YWluZXI9dGhpcy5jb250ZW50KCkuYXBwZW5kKCJnIikuY2xhc3NlZCgic3dhdGNoLWNvbnRhaW5lciIsITApLHRoaXMuX3N3YXRjaEJvdW5kaW5nQm94PXRoaXMuY29udGVudCgpLmFwcGVuZCgicmVjdCIpLmNsYXNzZWQoInN3YXRjaC1ib3VuZGluZy1ib3giLCEwKSx0aGlzLl9sb3dlckxhYmVsPXRoaXMuY29udGVudCgpLmFwcGVuZCgiZyIpLmNsYXNzZWQoZS5MRUdFTkRfTEFCRUxfQ0xBU1MsITApLHRoaXMuX3VwcGVyTGFiZWw9dGhpcy5jb250ZW50KCkuYXBwZW5kKCJnIikuY2xhc3NlZChlLkxFR0VORF9MQUJFTF9DTEFTUywhMCk7dmFyIG49bmV3IEN3dC5TdmdDb250ZXh0KHRoaXMuY29udGVudCgpLm5vZGUoKSk7dGhpcy5fbWVhc3VyZXI9bmV3IEN3dC5NZWFzdXJlcihuKSx0aGlzLl93cmFwcGVyPW5ldyBDd3QuV3JhcHBlcix0aGlzLl93cml0ZXI9bmV3IEN3dC5Xcml0ZXIodGhpcy5fbWVhc3VyZXIsbix0aGlzLl93cmFwcGVyKX0sZS5wcm90b3R5cGUucmVxdWVzdGVkU3BhY2U9ZnVuY3Rpb24odCxuKXt2YXIgaSxyLG89dGhpcyxhPXRoaXMuX21lYXN1cmVyLm1lYXN1cmUoKS5oZWlnaHQscz1hLGw9dGhpcy5fc2NhbGUuZG9tYWluKCkubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gby5fbWVhc3VyZXIubWVhc3VyZShvLl9mb3JtYXR0ZXIodCkpLndpZHRofSkpLGM9ZS5fREVGQVVMVF9OVU1fU1dBVENIRVM7aWYodGhpcy5faXNWZXJ0aWNhbCgpKXt2YXIgdT1Md3QuTWF0aC5tYXgobCwwKTtyPXMrYSt0aGlzLl90ZXh0UGFkZGluZyt1K3RoaXMuX3RleHRQYWRkaW5nLGk9YyphfWVsc2UgaT1zK2ErcyxyPXRoaXMuX3RleHRQYWRkaW5nK2xbMF0rYyphK2xbMV0rdGhpcy5fdGV4dFBhZGRpbmc7cmV0dXJue21pbldpZHRoOnIsbWluSGVpZ2h0Oml9fSxlLnByb3RvdHlwZS5faXNWZXJ0aWNhbD1mdW5jdGlvbigpe3JldHVybiJob3Jpem9udGFsIiE9PXRoaXMuX29yaWVudGF0aW9ufSxlLnByb3RvdHlwZS5yZW5kZXJJbW1lZGlhdGVseT1mdW5jdGlvbigpe3ZhciBlPXRoaXM7dC5wcm90b3R5cGUucmVuZGVySW1tZWRpYXRlbHkuY2FsbCh0aGlzKTt2YXIgbixpLHIsbyxhLHMsbD10aGlzLl9zY2FsZS5kb21haW4oKSxjPXRoaXMuX2Zvcm1hdHRlcihsWzBdKSx1PXRoaXMuX21lYXN1cmVyLm1lYXN1cmUoYykud2lkdGgsaD10aGlzLl9mb3JtYXR0ZXIobFsxXSksZD10aGlzLl9tZWFzdXJlci5tZWFzdXJlKGgpLndpZHRoLHA9dGhpcy5fbWVhc3VyZXIubWVhc3VyZSgpLmhlaWdodCxmPXRoaXMuX3RleHRQYWRkaW5nLG09e3g6MCx5OjB9LGc9e3g6MCx5OjB9LF89e3hBbGlnbjoiY2VudGVyIix5QWxpZ246ImNlbnRlciIsdGV4dFJvdGF0aW9uOjB9LHk9e3hBbGlnbjoiY2VudGVyIix5QWxpZ246ImNlbnRlciIsdGV4dFJvdGF0aW9uOjB9LHY9e3g6MCx5OjAsd2lkdGg6MCxoZWlnaHQ6MH07aWYodGhpcy5faXNWZXJ0aWNhbCgpKXtzPU1hdGguZmxvb3IodGhpcy5oZWlnaHQoKSk7dmFyIGI9TWF0aC5tYXgodSxkKTthPSh0aGlzLndpZHRoKCktYi0yKnRoaXMuX3RleHRQYWRkaW5nKS8yLG49TWF0aC5tYXgodGhpcy53aWR0aCgpLWEtMipmLWIsMCksaT0xLG89ZnVuY3Rpb24odCxuKXtyZXR1cm4gZS5oZWlnaHQoKS0obisxKX0seS55QWxpZ249InRvcCIsbS55PTAsXy55QWxpZ249ImJvdHRvbSIsZy55PTAsImxlZnQiPT09dGhpcy5fb3JpZW50YXRpb24/KHI9ZnVuY3Rpb24odCxlKXtyZXR1cm4gZitiK2Z9LHkueEFsaWduPSJyaWdodCIsbS54PS0oYStuK2YpLF8ueEFsaWduPSJyaWdodCIsZy54PS0oYStuK2YpKToocj1mdW5jdGlvbih0LGUpe3JldHVybiBhfSx5LnhBbGlnbj0ibGVmdCIsbS54PWErbitmLF8ueEFsaWduPSJsZWZ0IixnLng9YStuK2YpLHYud2lkdGg9bix2LmhlaWdodD1zKml9ZWxzZSBhPU1hdGgubWF4KGYsKHRoaXMuaGVpZ2h0KCktcCkvMikscz1NYXRoLm1heChNYXRoLmZsb29yKHRoaXMud2lkdGgoKS00KmYtdS1kKSwwKSxuPTEsaT1NYXRoLm1heCh0aGlzLmhlaWdodCgpLTIqYSwwKSxyPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIE1hdGguZmxvb3IodSsyKmYpK2V9LG89ZnVuY3Rpb24odCxlKXtyZXR1cm4gYX0seS54QWxpZ249InJpZ2h0IixtLng9LWYsXy54QWxpZ249ImxlZnQiLGcueD1mLHYueT1hLHYud2lkdGg9cypuLHYuaGVpZ2h0PWk7di54PXIobnVsbCwwKSx0aGlzLl91cHBlckxhYmVsLnRleHQoIiIpLHRoaXMuX3dyaXRlci53cml0ZShoLHRoaXMud2lkdGgoKSx0aGlzLmhlaWdodCgpLHksdGhpcy5fdXBwZXJMYWJlbC5ub2RlKCkpLHRoaXMuX3VwcGVyTGFiZWwuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrbS54KyIsICIrbS55KyIpIiksdGhpcy5fbG93ZXJMYWJlbC50ZXh0KCIiKSx0aGlzLl93cml0ZXIud3JpdGUoYyx0aGlzLndpZHRoKCksdGhpcy5oZWlnaHQoKSxfLHRoaXMuX2xvd2VyTGFiZWwubm9kZSgpKSx0aGlzLl9sb3dlckxhYmVsLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK2cueCsiLCAiK2cueSsiKSIpLHRoaXMuX3N3YXRjaEJvdW5kaW5nQm94LmF0dHJzKHYpO3ZhciB4PXRoaXMuX2dlbmVyYXRlVGlja3Mocyksdz10aGlzLl9zd2F0Y2hDb250YWluZXIuc2VsZWN0QWxsKCJyZWN0LnN3YXRjaCIpLmRhdGEoeCksUz13LmVudGVyKCkuYXBwZW5kKCJyZWN0IikuY2xhc3NlZCgic3dhdGNoIiwhMCksTT13Lm1lcmdlKFMpO3JldHVybiB3LmV4aXQoKS5yZW1vdmUoKSxNLmF0dHJzKHtmaWxsOmZ1bmN0aW9uKHQsbil7cmV0dXJuIGUuX3NjYWxlLnNjYWxlKHQpfSx3aWR0aDpuLGhlaWdodDppLHg6cix5Om8sInNoYXBlLXJlbmRlcmluZyI6ImNyaXNwRWRnZXMifSksQXd0LkFERF9USVRMRV9FTEVNRU5UUyYmUy5hcHBlbmQoInRpdGxlIikudGV4dCgoZnVuY3Rpb24odCl7cmV0dXJuIGUuX2Zvcm1hdHRlcih0KX0pKSx0aGlzfSxlLl9ERUZBVUxUX05VTV9TV0FUQ0hFUz0xMSxlLkxFR0VORF9MQUJFTF9DTEFTUz0ibGVnZW5kLWxhYmVsIixlfSkoT190LkNvbXBvbmVudCk7RXd0LkludGVycG9sYXRlZENvbG9yTGVnZW5kPVB3dDt2YXIgTnd0PXt9OwovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqL09iamVjdC5kZWZpbmVQcm9wZXJ0eShOd3QsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBJd3Q9Qk8sUnd0PUxndCxPd3Q9KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSxuKXt2b2lkIDA9PT1lJiYoZT0iIiksdm9pZCAwPT09biYmKG49MCk7dmFyIGk9dC5jYWxsKHRoaXMpfHx0aGlzO3JldHVybiBpLmFkZENsYXNzKCJsYWJlbCIpLGkudGV4dChlKSxpLmFuZ2xlKG4pLGkueEFsaWdubWVudCgiY2VudGVyIikueUFsaWdubWVudCgiY2VudGVyIiksaS5fcGFkZGluZz0wLGl9cmV0dXJuIEl3dC5fX2V4dGVuZHMoZSx0KSxlLnByb3RvdHlwZS5yZXF1ZXN0ZWRTcGFjZT1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMuX21lYXN1cmVyLm1lYXN1cmUodGhpcy5fdGV4dCk7cmV0dXJue21pbldpZHRoOigwPT09dGhpcy5hbmdsZSgpP24ud2lkdGg6bi5oZWlnaHQpKzIqdGhpcy5wYWRkaW5nKCksbWluSGVpZ2h0OigwPT09dGhpcy5hbmdsZSgpP24uaGVpZ2h0Om4ud2lkdGgpKzIqdGhpcy5wYWRkaW5nKCl9fSxlLnByb3RvdHlwZS5fc2V0dXA9ZnVuY3Rpb24oKXt0LnByb3RvdHlwZS5fc2V0dXAuY2FsbCh0aGlzKSx0aGlzLl90ZXh0Q29udGFpbmVyPXRoaXMuY29udGVudCgpLmFwcGVuZCgiZyIpO3ZhciBlPW5ldyBSd3QuU3ZnQ29udGV4dCh0aGlzLl90ZXh0Q29udGFpbmVyLm5vZGUoKSk7dGhpcy5fbWVhc3VyZXI9bmV3IFJ3dC5DYWNoZU1lYXN1cmVyKGUpLHRoaXMuX3dyYXBwZXI9bmV3IFJ3dC5XcmFwcGVyLHRoaXMuX3dyaXRlcj1uZXcgUnd0LldyaXRlcih0aGlzLl9tZWFzdXJlcixlLHRoaXMuX3dyYXBwZXIpLHRoaXMudGV4dCh0aGlzLl90ZXh0KX0sZS5wcm90b3R5cGUudGV4dD1mdW5jdGlvbih0KXtpZihudWxsPT10KXJldHVybiB0aGlzLl90ZXh0O2lmKCJzdHJpbmciIT10eXBlb2YgdCl0aHJvdyBuZXcgRXJyb3IoIkxhYmVsLnRleHQoKSBvbmx5IHRha2VzIHN0cmluZ3MgYXMgaW5wdXQiKTtyZXR1cm4gdGhpcy5fdGV4dD10LHRoaXMucmVkcmF3KCksdGhpc30sZS5wcm90b3R5cGUuYW5nbGU9ZnVuY3Rpb24odCl7aWYobnVsbD09dClyZXR1cm4gdGhpcy5fYW5nbGU7aWYoKHQlPTM2MCk+MTgwP3QtPTM2MDp0PC0xODAmJih0Kz0zNjApLC05MCE9PXQmJjAhPT10JiY5MCE9PXQpdGhyb3cgbmV3IEVycm9yKHQrIiBpcyBub3QgYSB2YWxpZCBhbmdsZSBmb3IgTGFiZWwiKTtyZXR1cm4gdGhpcy5fYW5nbGU9dCx0aGlzLnJlZHJhdygpLHRoaXN9LGUucHJvdG90eXBlLnBhZGRpbmc9ZnVuY3Rpb24odCl7aWYobnVsbD09dClyZXR1cm4gdGhpcy5fcGFkZGluZztpZigodD0rdCk8MCl0aHJvdyBuZXcgRXJyb3IodCsiIGlzIG5vdCBhIHZhbGlkIHBhZGRpbmcgdmFsdWUuIENhbm5vdCBiZSBsZXNzIHRoYW4gMC4iKTtyZXR1cm4gdGhpcy5fcGFkZGluZz10LHRoaXMucmVkcmF3KCksdGhpc30sZS5wcm90b3R5cGUuZml4ZWRXaWR0aD1mdW5jdGlvbigpe3JldHVybiEwfSxlLnByb3RvdHlwZS5maXhlZEhlaWdodD1mdW5jdGlvbigpe3JldHVybiEwfSxlLnByb3RvdHlwZS5yZW5kZXJJbW1lZGlhdGVseT1mdW5jdGlvbigpe3QucHJvdG90eXBlLnJlbmRlckltbWVkaWF0ZWx5LmNhbGwodGhpcyksdGhpcy5fdGV4dENvbnRhaW5lci5zZWxlY3RBbGwoImciKS5yZW1vdmUoKTt2YXIgZT10aGlzLl9tZWFzdXJlci5tZWFzdXJlKHRoaXMuX3RleHQpLG49TWF0aC5tYXgoTWF0aC5taW4oKHRoaXMuaGVpZ2h0KCktZS5oZWlnaHQpLzIsdGhpcy5wYWRkaW5nKCkpLDApLGk9TWF0aC5tYXgoTWF0aC5taW4oKHRoaXMud2lkdGgoKS1lLndpZHRoKS8yLHRoaXMucGFkZGluZygpKSwwKTt0aGlzLl90ZXh0Q29udGFpbmVyLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK2krIiwiK24rIikiKTt2YXIgcj10aGlzLndpZHRoKCktMippLG89dGhpcy5oZWlnaHQoKS0yKm4sYT17eEFsaWduOnRoaXMueEFsaWdubWVudCgpLHlBbGlnbjp0aGlzLnlBbGlnbm1lbnQoKSx0ZXh0Um90YXRpb246dGhpcy5hbmdsZSgpfTtyZXR1cm4gdGhpcy5fd3JpdGVyLndyaXRlKHRoaXMuX3RleHQscixvLGEpLHRoaXN9LGUucHJvdG90eXBlLmludmFsaWRhdGVDYWNoZT1mdW5jdGlvbigpe3QucHJvdG90eXBlLmludmFsaWRhdGVDYWNoZS5jYWxsKHRoaXMpLHRoaXMuX21lYXN1cmVyLnJlc2V0KCl9LGV9KShPX3QuQ29tcG9uZW50KTtOd3QuTGFiZWw9T3d0O3ZhciB6d3Q9KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUobixpKXt2YXIgcj10LmNhbGwodGhpcyxuLGkpfHx0aGlzO3JldHVybiByLmFkZENsYXNzKGUuVElUTEVfTEFCRUxfQ0xBU1MpLHJ9cmV0dXJuIEl3dC5fX2V4dGVuZHMoZSx0KSxlLlRJVExFX0xBQkVMX0NMQVNTPSJ0aXRsZS1sYWJlbCIsZX0pKE93dCk7Tnd0LlRpdGxlTGFiZWw9end0O3ZhciBEd3Q9KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUobixpKXt2YXIgcj10LmNhbGwodGhpcyxuLGkpfHx0aGlzO3JldHVybiByLmFkZENsYXNzKGUuQVhJU19MQUJFTF9DTEFTUykscn1yZXR1cm4gSXd0Ll9fZXh0ZW5kcyhlLHQpLGUuQVhJU19MQUJFTF9DTEFTUz0iYXhpcy1sYWJlbCIsZX0pKE93dCk7Tnd0LkF4aXNMYWJlbD1Ed3Q7dmFyIEJ3dD17fSxId3Q9e307Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovCk9iamVjdC5kZWZpbmVQcm9wZXJ0eShId3QsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBGd3Q9d3B0O0h3dC5jaXJjbGU9ZnVuY3Rpb24gVnd0KCl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBGd3Quc3ltYm9sKCkudHlwZShGd3Quc3ltYm9sQ2lyY2xlKS5zaXplKE1hdGguUEkqTWF0aC5wb3codC8yLDIpKX19LEh3dC5zcXVhcmU9ZnVuY3Rpb24gVXd0KCl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBGd3Quc3ltYm9sKCkudHlwZShGd3Quc3ltYm9sU3F1YXJlKS5zaXplKE1hdGgucG93KHQsMikpfX0sSHd0LmNyb3NzPWZ1bmN0aW9uIGp3dCgpe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gRnd0LnN5bWJvbCgpLnR5cGUoRnd0LnN5bWJvbENyb3NzKS5zaXplKDUvOSpNYXRoLnBvdyh0LDIpKX19LEh3dC5kaWFtb25kPWZ1bmN0aW9uIEd3dCgpe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gRnd0LnN5bWJvbCgpLnR5cGUoRnd0LnN5bWJvbERpYW1vbmQpLnNpemUoTWF0aC50YW4oTWF0aC5QSS82KSpNYXRoLnBvdyh0LDIpLzIpfX0sSHd0LnRyaWFuZ2xlPWZ1bmN0aW9uIFd3dCgpe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gRnd0LnN5bWJvbCgpLnR5cGUoRnd0LnN5bWJvbFRyaWFuZ2xlKS5zaXplKE1hdGguc3FydCgzKSpNYXRoLnBvdyh0LzIsMikpfX07SHd0LnN0YXI9ZnVuY3Rpb24gcXd0KCl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBGd3Quc3ltYm9sKCkudHlwZShGd3Quc3ltYm9sU3Rhcikuc2l6ZSguODkwODEzMDkxNTI5Mjg1MipNYXRoLnBvdyh0LzIsMikpfX07dmFyIFl3dD0zKigxL01hdGguc3FydCgxMikvMisxKTtId3Qud3llPWZ1bmN0aW9uIFh3dCgpe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gRnd0LnN5bWJvbCgpLnR5cGUoRnd0LnN5bWJvbFd5ZSkuc2l6ZShZd3QqTWF0aC5wb3codC8yLjQsMikpfX0sCi8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovCk9iamVjdC5kZWZpbmVQcm9wZXJ0eShCd3QsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciAkd3Q9Qk8sS3d0PXdwdCxad3Q9TGd0LEp3dD1DeXQsUXd0PXB2dCx0U3Q9SHd0LGVTdD1EX3QsblN0PU9fdCxpU3Q9KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUsbil7dm9pZCAwPT09dCYmKHQ9W10pLHZvaWQgMD09PWUmJihlPTApLHZvaWQgMD09PW4mJihuPTEvMCksdGhpcy5jb2x1bW5zPXQsdGhpcy5ib3R0b21QYWRkaW5nPWUsdGhpcy5tYXhXaWR0aD1ufXJldHVybiB0LnByb3RvdHlwZS5hZGRDb2x1bW49ZnVuY3Rpb24odCl7dmFyIGU9dC53aWR0aCxuPXRoaXMuZ2V0V2lkdGhBdmFpbGFibGUoKTt0LndpZHRoPU1hdGgubWluKG4sZSksdGhpcy5jb2x1bW5zLnB1c2godCl9LHQucHJvdG90eXBlLmdldEJvdW5kcz1mdW5jdGlvbih0KXtmb3IodmFyIGU9dGhpcy5jb2x1bW5zW3RdLG49MCxpPTA7aTx0O2krKyluKz10aGlzLmNvbHVtbnNbaV0ud2lkdGg7cmV0dXJue3RvcExlZnQ6e3g6bix5OjB9LGJvdHRvbVJpZ2h0Ont4Om4rZS53aWR0aCx5OmUuaGVpZ2h0fX19LHQucHJvdG90eXBlLmdldEhlaWdodD1mdW5jdGlvbigpe3JldHVybiBlU3QuTWF0aC5tYXgodGhpcy5jb2x1bW5zLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQuaGVpZ2h0fSkpLDApK3RoaXMuYm90dG9tUGFkZGluZ30sdC5wcm90b3R5cGUuZ2V0V2lkdGg9ZnVuY3Rpb24oKXtyZXR1cm4gTWF0aC5taW4odGhpcy5jb2x1bW5zLnJlZHVjZSgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdCtlLndpZHRofSksMCksdGhpcy5tYXhXaWR0aCl9LHQucHJvdG90eXBlLmdldFdpZHRoQXZhaWxhYmxlPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5nZXRXaWR0aCgpO3JldHVybiBNYXRoLm1heCh0aGlzLm1heFdpZHRoLXQsMCl9LHR9KSgpLHJTdD0oZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSxuLGkpe3ZvaWQgMD09PXQmJih0PTEvMCksdm9pZCAwPT09ZSYmKGU9MS8wKSx2b2lkIDA9PT1uJiYobj0wKSx2b2lkIDA9PT1pJiYoaT1bXSksdGhpcy5tYXhXaWR0aD10LHRoaXMubWF4SGVpZ2h0PWUsdGhpcy5wYWRkaW5nPW4sdGhpcy5yb3dzPWl9cmV0dXJuIHQucHJvdG90eXBlLmFkZFJvdz1mdW5jdGlvbih0KXt0Lm1heFdpZHRoPXRoaXMubWF4V2lkdGgtMip0aGlzLnBhZGRpbmcsdGhpcy5yb3dzLnB1c2godCl9LHQucHJvdG90eXBlLmdldENvbHVtbkJvdW5kcz1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMuZ2V0Um93Qm91bmRzKHQpLGk9dGhpcy5yb3dzW3RdLmdldEJvdW5kcyhlKTtyZXR1cm4gaS50b3BMZWZ0LngrPW4udG9wTGVmdC54LGkuYm90dG9tUmlnaHQueCs9bi50b3BMZWZ0LngsaS50b3BMZWZ0LnkrPW4udG9wTGVmdC55LGkuYm90dG9tUmlnaHQueSs9bi50b3BMZWZ0LnksaX0sdC5wcm90b3R5cGUuZ2V0Um93Qm91bmRzPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10aGlzLnBhZGRpbmcsbj10aGlzLnBhZGRpbmcsaT0wO2k8dDtpKyspbis9dGhpcy5yb3dzW2ldLmdldEhlaWdodCgpO3JldHVybnt0b3BMZWZ0Ont4OmUseTpufSxib3R0b21SaWdodDp7eDplK3RoaXMucm93c1t0XS5nZXRXaWR0aCgpLHk6bit0aGlzLnJvd3NbdF0uZ2V0SGVpZ2h0KCl9fX0sdC5wcm90b3R5cGUuZ2V0SGVpZ2h0PWZ1bmN0aW9uKCl7cmV0dXJuIE1hdGgubWluKHRoaXMucm93cy5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQrZS5nZXRIZWlnaHQoKX0pLDApKzIqdGhpcy5wYWRkaW5nLHRoaXMubWF4SGVpZ2h0KX0sdC5wcm90b3R5cGUuZ2V0V2lkdGg9ZnVuY3Rpb24oKXtyZXR1cm4gTWF0aC5taW4oZVN0Lk1hdGgubWF4KHRoaXMucm93cy5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldFdpZHRoKCl9KSksMCkrMip0aGlzLnBhZGRpbmcsdGhpcy5tYXhXaWR0aCl9LHR9KSgpLG9TdD0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlKXt2YXIgbj10LmNhbGwodGhpcyl8fHRoaXM7aWYobi5fcGFkZGluZz01LG4uX3Jvd0JvdHRvbVBhZGRpbmc9MyxuLmFkZENsYXNzKCJsZWdlbmQiKSxuLm1heEVudHJpZXNQZXJSb3coMSksbnVsbD09ZSl0aHJvdyBuZXcgRXJyb3IoIkxlZ2VuZCByZXF1aXJlcyBhIGNvbG9yU2NhbGUiKTtyZXR1cm4gbi5fY29sb3JTY2FsZT1lLG4uX3JlZHJhd0NhbGxiYWNrPWZ1bmN0aW9uKHQpe3JldHVybiBuLnJlZHJhdygpfSxuLl9jb2xvclNjYWxlLm9uVXBkYXRlKG4uX3JlZHJhd0NhbGxiYWNrKSxuLl9mb3JtYXR0ZXI9UXd0LmlkZW50aXR5KCksbi5tYXhMaW5lc1BlckVudHJ5KDEpLG4ueEFsaWdubWVudCgicmlnaHQiKS55QWxpZ25tZW50KCJ0b3AiKSxuLmNvbXBhcmF0b3IoKGZ1bmN0aW9uKHQsZSl7dmFyIGk9bi5fY29sb3JTY2FsZS5kb21haW4oKS5zbGljZSgpLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIG4uX2Zvcm1hdHRlcih0KX0pKTtyZXR1cm4gaS5pbmRleE9mKHQpLWkuaW5kZXhPZihlKX0pKSxuLl9zeW1ib2xGYWN0b3J5QWNjZXNzb3I9ZnVuY3Rpb24oKXtyZXR1cm4gdFN0LmNpcmNsZSgpfSxuLl9zeW1ib2xPcGFjaXR5QWNjZXNzb3I9ZnVuY3Rpb24oKXtyZXR1cm4gMX0sbn1yZXR1cm4gJHd0Ll9fZXh0ZW5kcyhlLHQpLGUucHJvdG90eXBlLl9zZXR1cD1mdW5jdGlvbigpe3QucHJvdG90eXBlLl9zZXR1cC5jYWxsKHRoaXMpO3ZhciBuPXRoaXMuY29udGVudCgpLmFwcGVuZCgiZyIpLmNsYXNzZWQoZS5MRUdFTkRfUk9XX0NMQVNTLCEwKTtuLmFwcGVuZCgiZyIpLmNsYXNzZWQoZS5MRUdFTkRfRU5UUllfQ0xBU1MsITApLmFwcGVuZCgidGV4dCIpO3ZhciBpPW5ldyBad3QuU3ZnQ29udGV4dChuLm5vZGUoKSxudWxsLEp3dC5BRERfVElUTEVfRUxFTUVOVFMpO3RoaXMuX21lYXN1cmVyPW5ldyBad3QuQ2FjaGVNZWFzdXJlcihpKSx0aGlzLl93cmFwcGVyPShuZXcgWnd0LldyYXBwZXIpLm1heExpbmVzKHRoaXMubWF4TGluZXNQZXJFbnRyeSgpKSx0aGlzLl93cml0ZXI9bmV3IFp3dC5Xcml0ZXIodGhpcy5fbWVhc3VyZXIsaSx0aGlzLl93cmFwcGVyKX0sZS5wcm90b3R5cGUuZm9ybWF0dGVyPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuX2Zvcm1hdHRlcjoodGhpcy5fZm9ybWF0dGVyPXQsdGhpcy5yZWRyYXcoKSx0aGlzKX0sZS5wcm90b3R5cGUubWF4RW50cmllc1BlclJvdz1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9tYXhFbnRyaWVzUGVyUm93Oih0aGlzLl9tYXhFbnRyaWVzUGVyUm93PXQsdGhpcy5yZWRyYXcoKSx0aGlzKX0sZS5wcm90b3R5cGUubWF4TGluZXNQZXJFbnRyeT1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9tYXhMaW5lc1BlckVudHJ5Oih0aGlzLl9tYXhMaW5lc1BlckVudHJ5PXQsdGhpcy5yZWRyYXcoKSx0aGlzKX0sZS5wcm90b3R5cGUubWF4V2lkdGg9ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5fbWF4V2lkdGg6KHRoaXMuX21heFdpZHRoPXQsdGhpcy5yZWRyYXcoKSx0aGlzKX0sZS5wcm90b3R5cGUuY29tcGFyYXRvcj1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9jb21wYXJhdG9yOih0aGlzLl9jb21wYXJhdG9yPXQsdGhpcy5yZWRyYXcoKSx0aGlzKX0sZS5wcm90b3R5cGUuY29sb3JTY2FsZT1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbCE9dD8odGhpcy5fY29sb3JTY2FsZS5vZmZVcGRhdGUodGhpcy5fcmVkcmF3Q2FsbGJhY2spLHRoaXMuX2NvbG9yU2NhbGU9dCx0aGlzLl9jb2xvclNjYWxlLm9uVXBkYXRlKHRoaXMuX3JlZHJhd0NhbGxiYWNrKSx0aGlzLnJlZHJhdygpLHRoaXMpOnRoaXMuX2NvbG9yU2NhbGV9LGUucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXt0LnByb3RvdHlwZS5kZXN0cm95LmNhbGwodGhpcyksdGhpcy5fY29sb3JTY2FsZS5vZmZVcGRhdGUodGhpcy5fcmVkcmF3Q2FsbGJhY2spfSxlLnByb3RvdHlwZS5fYnVpbGRMZWdlbmRUYWJsZT1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMsaT10aGlzLl9tZWFzdXJlci5tZWFzdXJlKCkuaGVpZ2h0LHI9bmV3IHJTdCh0LGUsdGhpcy5fcGFkZGluZyksbz10aGlzLl9jb2xvclNjYWxlLmRvbWFpbigpLnNsaWNlKCkuc29ydCgoZnVuY3Rpb24odCxlKXtyZXR1cm4gbi5fY29tcGFyYXRvcihuLl9mb3JtYXR0ZXIodCksbi5fZm9ybWF0dGVyKGUpKX0pKSxhPW5ldyBpU3Q7cmV0dXJuIHIuYWRkUm93KGEpLGEuYm90dG9tUGFkZGluZz10aGlzLl9yb3dCb3R0b21QYWRkaW5nLG8uZm9yRWFjaCgoZnVuY3Rpb24odCxlKXthLmNvbHVtbnMubGVuZ3RoLzI9PT1uLm1heEVudHJpZXNQZXJSb3coKSYmKChhPW5ldyBpU3QpLmJvdHRvbVBhZGRpbmc9bi5fcm93Qm90dG9tUGFkZGluZyxyLmFkZFJvdyhhKSk7dmFyIG89YS5nZXRXaWR0aEF2YWlsYWJsZSgpLHM9bi5fZm9ybWF0dGVyKHQpLGw9bi5fbWVhc3VyZXIubWVhc3VyZShzKS53aWR0aDtvLWktbDwwJiZhLmNvbHVtbnMubGVuZ3RoPjEmJigoYT1uZXcgaVN0KS5ib3R0b21QYWRkaW5nPW4uX3Jvd0JvdHRvbVBhZGRpbmcsci5hZGRSb3coYSkpLGEuYWRkQ29sdW1uKHt3aWR0aDppLGhlaWdodDppLGRhdGE6e25hbWU6dCx0eXBlOiJzeW1ib2wifX0pLG89YS5nZXRXaWR0aEF2YWlsYWJsZSgpO3ZhciBjPU1hdGgubWluKG8sbCk7bi5fd3JhcHBlci5tYXhMaW5lcyhuLm1heExpbmVzUGVyRW50cnkoKSk7dmFyIHU9bi5fd3JhcHBlci53cmFwKHMsbi5fbWVhc3VyZXIsYykubm9MaW5lczthLmFkZENvbHVtbih7d2lkdGg6YyxoZWlnaHQ6dSppLGRhdGE6e25hbWU6dCx0eXBlOiJ0ZXh0In19KX0pKSxyfSxlLnByb3RvdHlwZS5yZXF1ZXN0ZWRTcGFjZT1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMuX2J1aWxkTGVnZW5kVGFibGUoZVN0Lk1hdGgubWluKFt0aGlzLm1heFdpZHRoKCksdF0sdCksZSk7cmV0dXJue21pbkhlaWdodDpuLmdldEhlaWdodCgpLG1pbldpZHRoOm4uZ2V0V2lkdGgoKX19LGUucHJvdG90eXBlLmVudGl0aWVzQXQ9ZnVuY3Rpb24odCl7dmFyIG49dGhpcztpZighdGhpcy5faXNTZXR1cClyZXR1cm5bXTt2YXIgaT10aGlzLl9idWlsZExlZ2VuZFRhYmxlKHRoaXMud2lkdGgoKSx0aGlzLmhlaWdodCgpKTtyZXR1cm4gaS5yb3dzLnJlZHVjZSgoZnVuY3Rpb24ocixvLGEpe2lmKDAhPT1yLmxlbmd0aClyZXR1cm4gcjt2YXIgcz1pLmdldFJvd0JvdW5kcyhhKTtyZXR1cm4gZVN0Lk1hdGgud2l0aGluKHQscyk/by5jb2x1bW5zLnJlZHVjZSgoZnVuY3Rpb24ocixvLHMpe3ZhciBsPWkuZ2V0Q29sdW1uQm91bmRzKGEscyk7aWYoZVN0Lk1hdGgud2l0aGluKHQsbCkpe3ZhciBjPW4uY29udGVudCgpLnNlbGVjdEFsbCgiLiIrZS5MRUdFTkRfUk9XX0NMQVNTKS5ub2RlcygpW2FdLHU9S3d0LnNlbGVjdChjKS5zZWxlY3RBbGwoIi4iK2UuTEVHRU5EX0VOVFJZX0NMQVNTKS5ub2RlcygpW01hdGguZmxvb3Iocy8yKV0saD1Ld3Quc2VsZWN0KHUpLnNlbGVjdCgiLiIrZS5MRUdFTkRfU1lNQk9MX0NMQVNTKSxkPWVTdC5ET00uZ2V0VHJhbnNsYXRlVmFsdWVzKEt3dC5zZWxlY3QoYykpLHA9ZVN0LkRPTS5nZXRUcmFuc2xhdGVWYWx1ZXMoaCk7cmV0dXJuW3tib3VuZHM6ZVN0LkRPTS5lbGVtZW50QkJveChLd3Quc2VsZWN0KGMpKSxkYXR1bTpvLmRhdGEubmFtZSxwb3NpdGlvbjp7eDpkWzBdK3BbMF0seTpkWzFdK3BbMV19LHNlbGVjdGlvbjpLd3Quc2VsZWN0KHUpLGNvbXBvbmVudDpufV19cmV0dXJuIHJ9KSxyKTpyfSksW10pfSxlLnByb3RvdHlwZS5yZW5kZXJJbW1lZGlhdGVseT1mdW5jdGlvbigpe3QucHJvdG90eXBlLnJlbmRlckltbWVkaWF0ZWx5LmNhbGwodGhpcyk7dmFyIG49dGhpcy5fYnVpbGRMZWdlbmRUYWJsZSh0aGlzLndpZHRoKCksdGhpcy5oZWlnaHQoKSk7dGhpcy5jb250ZW50KCkuc2VsZWN0QWxsKCIqIikucmVtb3ZlKCk7dmFyIGk9dGhpcy5jb250ZW50KCkuc2VsZWN0QWxsKCJnLiIrZS5MRUdFTkRfUk9XX0NMQVNTKS5kYXRhKG4ucm93cykscj1pLmVudGVyKCkuYXBwZW5kKCJnIikuY2xhc3NlZChlLkxFR0VORF9ST1dfQ0xBU1MsITApLm1lcmdlKGkpO2kuZXhpdCgpLnJlbW92ZSgpLHIuYXR0cigidHJhbnNmb3JtIiwoZnVuY3Rpb24odCxlKXt2YXIgaT1uLmdldFJvd0JvdW5kcyhlKTtyZXR1cm4idHJhbnNsYXRlKCIraS50b3BMZWZ0LngrIiwgIitpLnRvcExlZnQueSsiKSJ9KSk7dmFyIG89dGhpcztyZXR1cm4gci5lYWNoKChmdW5jdGlvbih0LGkpe2Zvcih2YXIgcj1bXSxhPTA7YTx0LmNvbHVtbnMubGVuZ3RoO2ErPTIpci5wdXNoKFt0LmNvbHVtbnNbYV0sdC5jb2x1bW5zW2ErMV1dKTt2YXIgcz1Ld3Quc2VsZWN0KHRoaXMpLnNlbGVjdEFsbCgiZy4iK2UuTEVHRU5EX0VOVFJZX0NMQVNTKS5kYXRhKHIpLGw9cy5lbnRlcigpLmFwcGVuZCgiZyIpLmNsYXNzZWQoZS5MRUdFTkRfRU5UUllfQ0xBU1MsITApLm1lcmdlKHMpO2wuYXBwZW5kKCJwYXRoIikuYXR0cigiZCIsKGZ1bmN0aW9uKHQsZSl7dmFyIG49dFswXTtyZXR1cm4gby5zeW1ib2woKShuLmRhdGEubmFtZSxpKSguNipuLmhlaWdodCkobnVsbCl9KSkuYXR0cigidHJhbnNmb3JtIiwoZnVuY3Rpb24odCxlKXt2YXIgcj10WzBdLG89bi5yb3dzW2ldLmNvbHVtbnMuaW5kZXhPZihyKTtyZXR1cm4idHJhbnNsYXRlKCIrKG4uZ2V0Q29sdW1uQm91bmRzKGksbykudG9wTGVmdC54K3Iud2lkdGgvMikrIiwgIityLmhlaWdodC8yKyIpIn0pKS5hdHRyKCJmaWxsIiwoZnVuY3Rpb24odCl7cmV0dXJuIG8uX2NvbG9yU2NhbGUuc2NhbGUodFswXS5kYXRhLm5hbWUpfSkpLmF0dHIoIm9wYWNpdHkiLChmdW5jdGlvbih0LGUpe3JldHVybiBvLnN5bWJvbE9wYWNpdHkoKSh0WzBdLmRhdGEubmFtZSxpKX0pKS5jbGFzc2VkKGUuTEVHRU5EX1NZTUJPTF9DTEFTUywhMCksbC5hcHBlbmQoImciKS5jbGFzc2VkKCJ0ZXh0LWNvbnRhaW5lciIsITApLmF0dHIoInRyYW5zZm9ybSIsKGZ1bmN0aW9uKHQsZSl7dmFyIHI9bi5yb3dzW2ldLmNvbHVtbnMuaW5kZXhPZih0WzFdKTtyZXR1cm4idHJhbnNsYXRlKCIrbi5nZXRDb2x1bW5Cb3VuZHMoaSxyKS50b3BMZWZ0LngrIiwgMCkifSkpLmVhY2goKGZ1bmN0aW9uKHQsZSxuKXt2YXIgaT1Ld3Quc2VsZWN0KHRoaXMpLHI9dFsxXTtvLl93cml0ZXIud3JpdGUoby5fZm9ybWF0dGVyKHIuZGF0YS5uYW1lKSxyLndpZHRoLG8uaGVpZ2h0KCkse3hBbGlnbjoibGVmdCIseUFsaWduOiJ0b3AiLHRleHRSb3RhdGlvbjowfSxpLm5vZGUoKSl9KSkscy5leGl0KCkucmVtb3ZlKCl9KSksdGhpc30sZS5wcm90b3R5cGUuc3ltYm9sPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuX3N5bWJvbEZhY3RvcnlBY2Nlc3NvcjoodGhpcy5fc3ltYm9sRmFjdG9yeUFjY2Vzc29yPXQsdGhpcy5yZW5kZXIoKSx0aGlzKX0sZS5wcm90b3R5cGUuc3ltYm9sT3BhY2l0eT1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9zeW1ib2xPcGFjaXR5QWNjZXNzb3I6KHRoaXMuX3N5bWJvbE9wYWNpdHlBY2Nlc3Nvcj0ibnVtYmVyIj09dHlwZW9mIHQ/ZnVuY3Rpb24oKXtyZXR1cm4gdH06dCx0aGlzLnJlbmRlcigpLHRoaXMpfSxlLnByb3RvdHlwZS5maXhlZFdpZHRoPWZ1bmN0aW9uKCl7cmV0dXJuITB9LGUucHJvdG90eXBlLmZpeGVkSGVpZ2h0PWZ1bmN0aW9uKCl7cmV0dXJuITB9LGUucHJvdG90eXBlLmludmFsaWRhdGVDYWNoZT1mdW5jdGlvbigpe3QucHJvdG90eXBlLmludmFsaWRhdGVDYWNoZS5jYWxsKHRoaXMpLHRoaXMuX21lYXN1cmVyLnJlc2V0KCl9LGUuTEVHRU5EX1JPV19DTEFTUz0ibGVnZW5kLXJvdyIsZS5MRUdFTkRfRU5UUllfQ0xBU1M9ImxlZ2VuZC1lbnRyeSIsZS5MRUdFTkRfU1lNQk9MX0NMQVNTPSJsZWdlbmQtc3ltYm9sIixlfSkoblN0LkNvbXBvbmVudCk7Qnd0LkxlZ2VuZD1vU3Q7dmFyIGFTdD17fSxzU3Q9e30sbFN0PXt9OyEoZnVuY3Rpb24odCl7dmFyIGU7Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovCk9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSwoZT10LkFuaW1hdG9yfHwodC5BbmltYXRvcj17fSkpLk1BSU49Im1haW4iLGUuUkVTRVQ9InJlc2V0In0pKGxTdCk7dmFyIGNTdD17fSx1U3Q9e30saFN0PXt9LGRTdD1mdW5jdGlvbiB0KGUpe3JldHVybiBudWxsIT1lJiYib2JqZWN0Ij09dHlwZW9mIGUmJiExPT09QXJyYXkuaXNBcnJheShlKX07ZnVuY3Rpb24gcFN0KHQpe3JldHVybiEwPT09ZFN0KHQpJiYiW29iamVjdCBPYmplY3RdIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KX12YXIgZlN0PXt9OwovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqLwpPYmplY3QuZGVmaW5lUHJvcGVydHkoZlN0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgbVN0PURfdCxnU3Q9MCxfU3Q9KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUpe3ZvaWQgMD09PXQmJih0PVtdKSx2b2lkIDA9PT1lJiYoZT17fSksdGhpcy5fdXBkYXRlSWQ9Z1N0KyssdGhpcy5fZGF0YT10LHRoaXMuX21ldGFkYXRhPWUsdGhpcy5fY2FsbGJhY2tzPW5ldyBtU3QuQ2FsbGJhY2tTZXR9cmV0dXJuIHQucHJvdG90eXBlLm9uVXBkYXRlPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9jYWxsYmFja3MuYWRkKHQpLHRoaXN9LHQucHJvdG90eXBlLm9mZlVwZGF0ZT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fY2FsbGJhY2tzLmRlbGV0ZSh0KSx0aGlzfSx0LnByb3RvdHlwZS5kYXRhPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuX2RhdGE6KHRoaXMuX2RhdGE9dCx0aGlzLl9kaXNwYXRjaFVwZGF0ZSgpLHRoaXMpfSx0LnByb3RvdHlwZS5tZXRhZGF0YT1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9tZXRhZGF0YToodGhpcy5fbWV0YWRhdGE9dCx0aGlzLl9kaXNwYXRjaFVwZGF0ZSgpLHRoaXMpfSx0LnByb3RvdHlwZS51cGRhdGVJZD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl91cGRhdGVJZH0sdC5wcm90b3R5cGUuX2Rpc3BhdGNoVXBkYXRlPWZ1bmN0aW9uKCl7dGhpcy5fdXBkYXRlSWQ9Z1N0KyssdGhpcy5fY2FsbGJhY2tzLmNhbGxDYWxsYmFja3ModGhpcyl9LHR9KSgpO2ZTdC5EYXRhc2V0PV9TdCwKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKiBAZmlsZW92ZXJ2aWV3IEltcGxlbWVudHMgdGhlIFNpZ25hdHVyZSBBUEkgdG8gaGVscCBpbiBjb21wYXJpbmcgd2hlbiB0d28KICAgICAqIFBsb3R0YWJsZSBvYmplY3RzIGhhdmUgImNoYW5nZWQiLgogICAgICoKICAgICAqIE1lbW9pemF0aW9uIGluIFBsb3R0YWJsZSBpcyBjb21wbGljYXRlZCBieSBtdXRhYmxlIHNjYWxlcyBhbmQgZGF0YXNldHMuIFdlIGNhbm5vdCBzaW1wbHkKICAgICAqIHJlZmVyZW5jZSBjb21wYXJlIHR3byBlLmcuIHNjYWxlcyBzaW5jZSBpdCBtYXkgaGF2ZSBpbnRlcm5hbGx5IG11dGF0ZWQuIFRvIHJlc29sdmUgdGhpcywKICAgICAqIHdlIHdyaXRlIGEgcmVjdXJzaXZlIFNpZ25hdHVyZSBpbnRlcmZhY2UgdGhhdCBob2xkcyBhbiBpbW11dGFibGUgc25hcHNob3Qgb2Ygd2hhdGV2ZXIKICAgICAqIHN0YXRlIHRoZSBzY2FsZS9kYXRhIHdhcyBpbiBhdCB0aGUgdGltZS4gVGhlbiBvbiBtZW1vaXplZCBmdW5jdGlvbiBpbnZvY2F0aW9uIHdlIHNpZ24gdGhlCiAgICAgKiBuZXcgaW5wdXRzIGFuZCBjb21wYXJlIHRoZSBzaWduYXR1cmVzIHRvIGRlY2lkZSBpZiB3ZSBzaG91bGQgcmVjb21wdXRlLgogICAgICoKICAgICAqIFdlIG11c3QgaGFuZC13cml0ZSBhIHNpZ25hdHVyZSBmb3IgZWFjaCBjdXN0b20gY2xhc3Mgd2Ugd2lzaCB0byBzdXBwb3J0LgogICAgICovCk9iamVjdC5kZWZpbmVQcm9wZXJ0eShoU3QsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciB5U3Q9Qk8sdlN0PWZ1bmN0aW9uIHQoZSl7dmFyIG4saTtyZXR1cm4hMSE9PXBTdChlKSYmKCJmdW5jdGlvbiI9PXR5cGVvZihuPWUuY29uc3RydWN0b3IpJiYoITEhPT1wU3QoaT1uLnByb3RvdHlwZSkmJiExIT09aS5oYXNPd25Qcm9wZXJ0eSgiaXNQcm90b3R5cGVPZiIpKSl9LGJTdD1mU3QseFN0PWxidDtmdW5jdGlvbiB3U3QodCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBBU3Q/dDp0IGluc3RhbmNlb2YgRGF0ZT9FU3QodC52YWx1ZU9mKCkpOnQgaW5zdGFuY2VvZiB4U3QuU2NhbGU/U1N0KHQpOnQgaW5zdGFuY2VvZiBiU3QuRGF0YXNldD9NU3QodCk6dlN0KHQpP0NTdCh0KTpBcnJheS5pc0FycmF5KHQpP1RTdCh0KTpFU3QodCl9ZnVuY3Rpb24gU1N0KHQpe3JldHVybiBDU3Qoe2RvbWFpbjp0LmRvbWFpbigpLHJhbmdlOnQucmFuZ2UoKSx1cGRhdGVJZDp0LnVwZGF0ZUlkKCkscmVmOkVTdCh0KX0pfWZ1bmN0aW9uIE1TdCh0KXtyZXR1cm4gQ1N0KHtyZWY6RVN0KHQpLHVwZGF0ZUlkOnQudXBkYXRlSWQoKX0pfWZ1bmN0aW9uIEVTdCh0KXtyZXR1cm4gbmV3IExTdCh0KX1mdW5jdGlvbiBUU3QodCl7cmV0dXJuIG5ldyBrU3QodC5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB3U3QodCl9KSkpfWZ1bmN0aW9uIENTdCh0KXt2YXIgZT17fTtmb3IodmFyIG4gaW4gdCl0Lmhhc093blByb3BlcnR5KG4pJiYoZVtuXT13U3QodFtuXSkpO3JldHVybiBuZXcgUFN0KGUpfWhTdC5zaWduPXdTdCxoU3Quc2lnblNjYWxlPVNTdCxoU3Quc2lnbkRhdGFzZXQ9TVN0LGhTdC5zaWduUmVmPUVTdCxoU3Quc2lnbkFycmF5PVRTdCxoU3Quc2lnbk9iaj1DU3Q7dmFyIEFTdD0oZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiB0LnByb3RvdHlwZS5pc0RpZmZlcmVudD1mdW5jdGlvbih0KXtyZXR1cm4hKHQgaW5zdGFuY2VvZiB0aGlzLmNvbnN0cnVjdG9yKXx8dGhpcy5pc1NpZ25hdHVyZURpZmZlcmVudCh0KX0sdH0pKCk7aFN0LlNpZ25hdHVyZT1BU3Q7dmFyIGtTdD0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlKXt2YXIgbj10LmNhbGwodGhpcyl8fHRoaXM7cmV0dXJuIG4uYXJyYXk9ZSxufXJldHVybiB5U3QuX19leHRlbmRzKGUsdCksZS5wcm90b3R5cGUuaXNTaWduYXR1cmVEaWZmZXJlbnQ9ZnVuY3Rpb24odCl7aWYodC5hcnJheS5sZW5ndGghPT10aGlzLmFycmF5Lmxlbmd0aClyZXR1cm4hMDtmb3IodmFyIGU9MDtlPHRoaXMuYXJyYXkubGVuZ3RoO2UrKylpZih0aGlzLmFycmF5W2VdLmlzRGlmZmVyZW50KHQuYXJyYXlbZV0pKXJldHVybiEwO3JldHVybiExfSxlfSkoQVN0KTtoU3QuQXJyYXlTaWduYXR1cmU9a1N0O3ZhciBMU3Q9KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSl7dmFyIG49dC5jYWxsKHRoaXMpfHx0aGlzO3JldHVybiBuLnJlZj1lLG59cmV0dXJuIHlTdC5fX2V4dGVuZHMoZSx0KSxlLnByb3RvdHlwZS5pc1NpZ25hdHVyZURpZmZlcmVudD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5yZWYhPT10LnJlZn0sZX0pKEFTdCk7aFN0LlJlZmVyZW5jZVNpZ25hdHVyZT1MU3Q7dmFyIFBTdD0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlKXt2YXIgbj10LmNhbGwodGhpcyl8fHRoaXM7cmV0dXJuIG4ub2JqPWUsbn1yZXR1cm4geVN0Ll9fZXh0ZW5kcyhlLHQpLGUucHJvdG90eXBlLmlzU2lnbmF0dXJlRGlmZmVyZW50PWZ1bmN0aW9uKHQpe3ZhciBlPU9iamVjdC5rZXlzKHRoaXMub2JqKSxuPU9iamVjdC5rZXlzKHQub2JqKTtpZihlLmxlbmd0aCE9PW4ubGVuZ3RoKXJldHVybiEwO2Zvcih2YXIgaT0wLHI9ZTtpPHIubGVuZ3RoO2krKyl7dmFyIG89cltpXTtpZighdC5vYmouaGFzT3duUHJvcGVydHkobykpcmV0dXJuITA7aWYodGhpcy5vYmpbb10uaXNEaWZmZXJlbnQodC5vYmpbb10pKXJldHVybiEwfXJldHVybiExfSxlfSkoQVN0KTtoU3QuT2JqZWN0U2lnbmF0dXJlPVBTdCwKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKiBAZmlsZW92ZXJ2aWV3IEltcGxlbWVudHMgYSBmdW5jdGlvbiBtZW1vaXplciB1c2luZyB0aGUgU2lnbmF0dXJlIEFQSS4KICAgICAqLwpPYmplY3QuZGVmaW5lUHJvcGVydHkodVN0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgTlN0PWhTdDt1U3QubWVtb2l6ZT1mdW5jdGlvbiBJU3QodCl7dmFyIGUsbj12b2lkIDAsaT0hMSxyPSExLG89ZnVuY3Rpb24oKXtmb3IodmFyIG89W10sYT0wO2E8YXJndW1lbnRzLmxlbmd0aDthKyspb1thXT1hcmd1bWVudHNbYV07aWYoaSlyZXR1cm4gZTt2YXIgcz1OU3Quc2lnbkFycmF5KG8pO3JldHVybiB2b2lkIDA9PT1ufHxuLmlzRGlmZmVyZW50KHMpPyhyJiZjb25zb2xlLndhcm4oImNhY2hlIG1pc3MhIGNvbXB1dGluZyIpLG49cyxlPXQuYXBwbHkodGhpcyxvKSk6ciYmY29uc29sZS53YXJuKCJjYWNoZSBoaXQhIiksZX07cmV0dXJuIG8uZG9Mb2NrZWQ9ZnVuY3Rpb24odCl7aWYoaSl0aHJvdyBuZXcgRXJyb3IoIkxvY2tpbmcgYW4gYWxyZWFkeSBsb2NrZWQgbWVtb2l6ZSBmdW5jdGlvbiEiKTtpPSEwO3ZhciBlPXQuYXBwbHkodGhpcyk7cmV0dXJuIGk9ITEsZX0sby5sb2dQZXJmb3JtYW5jZT1mdW5jdGlvbih0KXtyZXR1cm4gdm9pZCAwPT09dCYmKHQ9ITApLHI9dCx0aGlzfSxvfTt2YXIgUlN0PXt9O09iamVjdC5kZWZpbmVQcm9wZXJ0eShSU3QsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBPU3Q9Q2UuZXhwb3J0cyx6U3Q9KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe3RoaXMubWFwPU9iamVjdC5jcmVhdGUobnVsbCksdGhpcy5leGlzdHM9T2JqZWN0LmNyZWF0ZShudWxsKX1yZXR1cm4gdC5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uKHQpe3JldHVybiBkZWxldGUgdGhpcy5tYXBbdF0sZGVsZXRlIHRoaXMuZXhpc3RzW3RdLCEwfSx0LnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMubWFwW3RdfSx0LnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24odCl7cmV0dXJuISF0aGlzLmV4aXN0c1t0XX0sdC5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMubWFwW3RdPWUsdGhpcy5leGlzdHNbdF09ITAsdGhpc30sdH0pKCksRFN0PShmdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt0aGlzLm1hcD1uZXcgelN0fXJldHVybiB0LnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMubWFwLmdldCh0WzBdKS5nZXQodFsxXSl9LHQucHJvdG90eXBlLmhhcz1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5tYXAuaGFzKHRbMF0pJiZ0aGlzLm1hcC5nZXQodFswXSkuaGFzKHRbMV0pfSx0LnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5tYXAuaGFzKHRbMF0pfHx0aGlzLm1hcC5zZXQodFswXSxuZXcgelN0KSx0aGlzLm1hcC5nZXQodFswXSkuc2V0KHRbMV0sZSksdGhpc30sdC5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLm1hcC5oYXModFswXSkmJnRoaXMubWFwLmdldCh0WzBdKS5kZWxldGUodFsxXSksITB9LHQucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7dGhpcy5tYXA9bmV3IHpTdH0sdC5yZXNvbHZlcj1mdW5jdGlvbih0LGUsbil7cmV0dXJuW24udXBkYXRlSWQoKSxlXX0sdH0pKCk7ZnVuY3Rpb24gQlN0KHQpe3ZhciBlPU9TdC5tZW1vaXplKHQsRFN0LnJlc29sdmVyKTtyZXR1cm4gZS5jYWNoZT1uZXcgRFN0LGV9UlN0Lm1lbW9pemVQcm9qZWN0b3I9QlN0LFJTdC5tZW1vaXplUHJvamVjdG9ycz1mdW5jdGlvbiBIU3QodCl7cmV0dXJuIE9iamVjdC5rZXlzKHQpLmZvckVhY2goKGZ1bmN0aW9uKGUpe3RbZV09QlN0KHRbZV0pfSkpLHR9O3ZhciBGU3Q9e307Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICogQGZpbGVvdmVydmlldyBJbXBsZW1lbnRzIGEgY29udmVuaWVudCB0aHVuayBmdW5jdGlvbiB0byBoYW5kbGUgdGhlIGNvbW1vbiBjYXNlCiAgICAgKiBvZiBjcmVhdGluZyBhIG1lbW9pemVkIGZ1bmN0aW9uIHRoYXQgdGFrZXMgaXRzIGlucHV0cyBmcm9tIG11dGFibGUgY2xhc3MgcHJvcGVydGllcy4KICAgICAqL09iamVjdC5kZWZpbmVQcm9wZXJ0eShGU3QsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBWU3Q9Y1N0O0ZTdC5tZW1UaHVuaz1mdW5jdGlvbiBVU3QoKXtmb3IodmFyIHQ9W10sZT0wO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspdFtlXT1hcmd1bWVudHNbZV07dmFyIG49dC5zbGljZSgwLC0xKSxpPXRbdC5sZW5ndGgtMV0scj1WU3QubWVtb2l6ZShpKSxvPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPW4ubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gZS5hcHBseSh0KX0pKTtyZXR1cm4gci5hcHBseSh2b2lkIDAsZSl9O3JldHVybiBvfSwoZnVuY3Rpb24odCl7Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovCk9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgZT1CTztlLl9fZXhwb3J0U3Rhcih1U3QsdCksZS5fX2V4cG9ydFN0YXIoUlN0LHQpLGUuX19leHBvcnRTdGFyKEZTdCx0KSx0LnNpZ249aFN0LnNpZ259KShjU3QpO3ZhciBqU3Q9e307IShmdW5jdGlvbih0KXsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi8KT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBlPXdwdCxuPShmdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlKXt0aGlzLl9jb250ZXh0PXQsdGhpcy5fZHJhd1N0ZXA9ZX1yZXR1cm4gdC5wcm90b3R5cGUuZ2V0RHJhd1N0ZXA9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZHJhd1N0ZXB9LHQucHJvdG90eXBlLmRyYXc9ZnVuY3Rpb24odCxlKXt2YXIgbj1lW2UubGVuZ3RoLTFdLmF0dHJUb0FwcGxpZWRQcm9qZWN0b3I7dGhpcy5fY29udGV4dC5zYXZlKCksdGhpcy5fZHJhd1N0ZXAodGhpcy5fY29udGV4dCx0LG4pLHRoaXMuX2NvbnRleHQucmVzdG9yZSgpfSx0LnByb3RvdHlwZS5nZXRWaXN1YWxQcmltaXRpdmVzPWZ1bmN0aW9uKCl7cmV0dXJuW119LHQucHJvdG90eXBlLmdldFZpc3VhbFByaW1pdGl2ZUF0SW5kZXg9ZnVuY3Rpb24odCl7cmV0dXJuIG51bGx9LHQucHJvdG90eXBlLnJlbW92ZT1mdW5jdGlvbigpe30sdH0pKCk7ZnVuY3Rpb24gaSh0LGUsbixpKXtmb3IodmFyIHI9e30sbz0wLGE9ZTtvPGEubGVuZ3RoO28rKyl7dmFyIHM9YVtvXTt0Lmhhc093blByb3BlcnR5KHMpJiYocltzXT10W3NdKG4saSkpfXJldHVybiByfWZ1bmN0aW9uIHIodCl7cmV0dXJuIG51bGwhPXRbInN0cm9rZS13aWR0aCJdP3BhcnNlRmxvYXQodFsic3Ryb2tlLXdpZHRoIl0pOjF9ZnVuY3Rpb24gbyh0KXt2YXIgZT10WyJzdHJva2UtZGFzaGFycmF5Il07aWYobnVsbCE9ZSl0cnl7cmV0dXJuIGUuc3BsaXQoL1sgLF0rLykubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gcGFyc2VJbnQodCwxMCl9KSl9Y2F0Y2godCl7cmV0dXJuIGNvbnNvbGUuZXJyb3IoImdldFN0cm9rZURhc2hBcnJheSBmYWlsZWQgd2l0aDogIit0KSxbXX1yZXR1cm5bXX1mdW5jdGlvbiBhKHQsbil7aWYobi5zdHJva2Upe3QubGluZVdpZHRoPXIobik7dmFyIGk9ZS5jb2xvcihuLnN0cm9rZSksYT1vKG4pO3Quc2V0TGluZURhc2goYSksaS5vcGFjaXR5Kj0oZnVuY3Rpb24gcyh0KXt2YXIgZT1udWxsIT10Lm9wYWNpdHk/cGFyc2VGbG9hdCh0Lm9wYWNpdHkpOjE7cmV0dXJuKG51bGwhPXRbInN0cm9rZS1vcGFjaXR5Il0/cGFyc2VGbG9hdCh0WyJzdHJva2Utb3BhY2l0eSJdKToxKSplfSkobiksdC5zdHJva2VTdHlsZT1pLnRvU3RyaW5nKCksdC5zdHJva2UoKX1pZihuLmZpbGwpe3ZhciBsPWUuY29sb3Iobi5maWxsKTtsLm9wYWNpdHkqPShmdW5jdGlvbiBjKHQpe3ZhciBlPW51bGwhPXQub3BhY2l0eT9wYXJzZUZsb2F0KHQub3BhY2l0eSk6MTtyZXR1cm4obnVsbCE9dFsiZmlsbC1vcGFjaXR5Il0/cGFyc2VGbG9hdCh0WyJmaWxsLW9wYWNpdHkiXSk6MSkqZX0pKG4pLHQuZmlsbFN0eWxlPWwudG9TdHJpbmcoKSx0LmZpbGwoKX19dC5DYW52YXNEcmF3ZXI9bix0LkNvbnRleHRTdHlsZUF0dHJzPVsiZmlsbC1vcGFjaXR5IiwiZmlsbCIsIm9wYWNpdHkiLCJzdHJva2Utb3BhY2l0eSIsInN0cm9rZS13aWR0aCIsInN0cm9rZSIsInN0cm9rZS1kYXNoYXJyYXkiXSx0LnJlc29sdmVBdHRyaWJ1dGVzU3Vic2V0V2l0aFN0eWxlcz1mdW5jdGlvbiBzKGUsbixyLG8pe3JldHVybiBpKGUsdC5Db250ZXh0U3R5bGVBdHRycy5jb25jYXQobikscixvKX0sdC5yZXNvbHZlQXR0cmlidXRlcz1pLHQuZ2V0U3Ryb2tlV2lkdGg9cix0LmdldFN0cm9rZURhc2hBcnJheT1vLHQucmVuZGVyQXJlYT1mdW5jdGlvbiBsKHQsZSxuLGkpe3Quc2F2ZSgpLHQuYmVnaW5QYXRoKCksZS5jb250ZXh0KHQpLGUobiksdC5saW5lSm9pbj0icm91bmQiLGEodCxpKSx0LnJlc3RvcmUoKX0sdC5yZW5kZXJMaW5lPWZ1bmN0aW9uIGModCxlLG4saSl7dC5zYXZlKCksdC5iZWdpblBhdGgoKSxlLmNvbnRleHQodCksZShuKSx0LmxpbmVKb2luPSJyb3VuZCIsYSh0LGkpLHQucmVzdG9yZSgpfSx0LnJlbmRlclBhdGhXaXRoU3R5bGU9YX0pKGpTdCk7dmFyIEdTdD17fTsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi9PYmplY3QuZGVmaW5lUHJvcGVydHkoR1N0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgV1N0PShmdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlKXt0aGlzLl9zdmdEcmF3ZXJGYWN0b3J5PXQsdGhpcy5fY2FudmFzRHJhd2VyRmFjdG9yeT1lfXJldHVybiB0LnByb3RvdHlwZS51c2VTVkc9ZnVuY3Rpb24odCl7bnVsbCE9dGhpcy5fY3VycmVudERyYXdlciYmdGhpcy5fY3VycmVudERyYXdlci5yZW1vdmUoKTt2YXIgZT10aGlzLl9zdmdEcmF3ZXJGYWN0b3J5KCk7ZS5hdHRhY2hUbyh0KSx0aGlzLl9jdXJyZW50RHJhd2VyPWV9LHQucHJvdG90eXBlLnVzZUNhbnZhcz1mdW5jdGlvbih0KXtudWxsIT10aGlzLl9jdXJyZW50RHJhd2VyJiZ0aGlzLl9jdXJyZW50RHJhd2VyLnJlbW92ZSgpLHRoaXMuX2N1cnJlbnREcmF3ZXI9dGhpcy5fY2FudmFzRHJhd2VyRmFjdG9yeSh0Lm5vZGUoKS5nZXRDb250ZXh0KCIyZCIpKX0sdC5wcm90b3R5cGUuZ2V0RHJhd2VyPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2N1cnJlbnREcmF3ZXJ9LHQucHJvdG90eXBlLnJlbW92ZT1mdW5jdGlvbigpe251bGwhPXRoaXMuX2N1cnJlbnREcmF3ZXImJnRoaXMuX2N1cnJlbnREcmF3ZXIucmVtb3ZlKCl9LHQucHJvdG90eXBlLmRyYXc9ZnVuY3Rpb24odCxlKXt0aGlzLl9jdXJyZW50RHJhd2VyLmRyYXcodCxlKX0sdC5wcm90b3R5cGUuZ2V0VmlzdWFsUHJpbWl0aXZlcz1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9jdXJyZW50RHJhd2VyLmdldFZpc3VhbFByaW1pdGl2ZXMoKX0sdC5wcm90b3R5cGUuZ2V0VmlzdWFsUHJpbWl0aXZlQXRJbmRleD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fY3VycmVudERyYXdlci5nZXRWaXN1YWxQcmltaXRpdmVBdEluZGV4KHQpfSx0fSkoKTtHU3QuUHJveHlEcmF3ZXI9V1N0O3ZhciBxU3Q9e307Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovT2JqZWN0LmRlZmluZVByb3BlcnR5KHFTdCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIFlTdD13cHQsWFN0PURfdCwkU3Q9KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUpe3RoaXMuX3Jvb3Q9WVN0LnNlbGVjdChkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwiZyIpKSx0aGlzLl9jbGFzc05hbWU9ZSx0aGlzLl9zdmdFbGVtZW50TmFtZT10fXJldHVybiB0LnByb3RvdHlwZS5kcmF3PWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpczt0aGlzLl9jcmVhdGVBbmREZXN0cm95RE9NRWxlbWVudHModCk7Zm9yKHZhciBpPTAscj1lLmxlbmd0aCxvPWZ1bmN0aW9uKHIpe3ZhciBvPWVbcl07WFN0LldpbmRvdy5zZXRUaW1lb3V0KChmdW5jdGlvbigpe3JldHVybiBuLl9kcmF3U3RlcChvKX0pLGkpLGkrPW8uYW5pbWF0b3IudG90YWxUaW1lKHQubGVuZ3RoKX0sYT0wO2E8cjthKyspbyhhKX0sdC5wcm90b3R5cGUuZ2V0VmlzdWFsUHJpbWl0aXZlcz1mdW5jdGlvbigpe3JldHVybiBudWxsPT10aGlzLl9jYWNoZWRWaXN1YWxQcmltaXRpdmVzTm9kZXMmJih0aGlzLl9jYWNoZWRWaXN1YWxQcmltaXRpdmVzTm9kZXM9dGhpcy5fc2VsZWN0aW9uLm5vZGVzKCkpLHRoaXMuX2NhY2hlZFZpc3VhbFByaW1pdGl2ZXNOb2Rlc30sdC5wcm90b3R5cGUuZ2V0VmlzdWFsUHJpbWl0aXZlQXRJbmRleD1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dGhpcy5fY2FjaGVkVmlzdWFsUHJpbWl0aXZlc05vZGVNYXA/bnVsbDp0aGlzLl9jYWNoZWRWaXN1YWxQcmltaXRpdmVzTm9kZU1hcC5nZXQodCl9LHQucHJvdG90eXBlLnJlbW92ZT1mdW5jdGlvbigpe3RoaXMuX3Jvb3QucmVtb3ZlKCl9LHQucHJvdG90eXBlLmF0dGFjaFRvPWZ1bmN0aW9uKHQpe3Qubm9kZSgpLmFwcGVuZENoaWxkKHRoaXMuX3Jvb3Qubm9kZSgpKX0sdC5wcm90b3R5cGUuZ2V0Um9vdD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9yb290fSx0LnByb3RvdHlwZS5zZWxlY3Rvcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9zdmdFbGVtZW50TmFtZX0sdC5wcm90b3R5cGUuX2FwcGx5RGVmYXVsdEF0dHJpYnV0ZXM9ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlwZS5fY3JlYXRlQW5kRGVzdHJveURPTUVsZW1lbnRzPWZ1bmN0aW9uKHQpe3ZhciBlPXQubWFwKChmdW5jdGlvbih0LGUpe3JldHVybiBudWxsIT10P3tkOnQsaTplfTpudWxsfSkpLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIG51bGwhPXR9KSksbj10aGlzLl9yb290LnNlbGVjdEFsbCh0aGlzLnNlbGVjdG9yKCkpLmRhdGEoZSk7dGhpcy5fc2VsZWN0aW9uPW4uZW50ZXIoKS5hcHBlbmQodGhpcy5fc3ZnRWxlbWVudE5hbWUpLm1lcmdlKG4pLG4uZXhpdCgpLnJlbW92ZSgpO3ZhciBpPW5ldyBYU3QuTWFwO3RoaXMuX3NlbGVjdGlvbi5lYWNoKChmdW5jdGlvbih0KXtpLnNldCh0LmksdGhpcyl9KSksdGhpcy5fY2FjaGVkVmlzdWFsUHJpbWl0aXZlc05vZGVNYXA9aSx0aGlzLl9jYWNoZWRWaXN1YWxQcmltaXRpdmVzTm9kZXM9bnVsbCx0aGlzLl9zZWxlY3Rpb24uZGF0YSh0aGlzLl9zZWxlY3Rpb24uZGF0YSgpLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQuZH0pKSksbnVsbCE9dGhpcy5fY2xhc3NOYW1lJiZ0aGlzLl9zZWxlY3Rpb24uY2xhc3NlZCh0aGlzLl9jbGFzc05hbWUsITApLHRoaXMuX2FwcGx5RGVmYXVsdEF0dHJpYnV0ZXModGhpcy5fc2VsZWN0aW9uKX0sdC5wcm90b3R5cGUuX2RyYXdTdGVwPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7WyJmaWxsIiwic3Ryb2tlIl0uZm9yRWFjaCgoZnVuY3Rpb24obil7bnVsbCE9dC5hdHRyVG9BcHBsaWVkUHJvamVjdG9yW25dJiZlLl9zZWxlY3Rpb24uYXR0cihuLHQuYXR0clRvQXBwbGllZFByb2plY3RvcltuXSl9KSksdC5hbmltYXRvci5hbmltYXRlKHRoaXMuX3NlbGVjdGlvbix0LmF0dHJUb0FwcGxpZWRQcm9qZWN0b3IpLG51bGwhPXRoaXMuX2NsYXNzTmFtZSYmdGhpcy5fc2VsZWN0aW9uLmNsYXNzZWQodGhpcy5fY2xhc3NOYW1lLCEwKX0sdH0pKCk7cVN0LlNWR0RyYXdlcj0kU3Q7dmFyIEtTdD17fTsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNy1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi9PYmplY3QuZGVmaW5lUHJvcGVydHkoS1N0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgWlN0PShmdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt2YXIgdD10aGlzO3RoaXMuc2NhbGU9MCx0aGlzLnRyYW5zbGF0ZT0wLHRoaXMuY2FjaGVkRG9tYWluPVtudWxsLG51bGxdLHRoaXMubGFzdFNlZW5Eb21haW49W251bGwsbnVsbF0sdGhpcy51cGRhdGVEb21haW49ZnVuY3Rpb24oZSl7dC5sYXN0U2VlbkRvbWFpbj1lLmdldFRyYW5zZm9ybWF0aW9uRG9tYWluKCk7dmFyIG49ZS5zY2FsZVRyYW5zZm9ybWF0aW9uKHQuY2FjaGVkRG9tYWluWzFdKS1lLnNjYWxlVHJhbnNmb3JtYXRpb24odC5jYWNoZWREb21haW5bMF0pLGk9ZS5zY2FsZVRyYW5zZm9ybWF0aW9uKHQubGFzdFNlZW5Eb21haW5bMV0pLWUuc2NhbGVUcmFuc2Zvcm1hdGlvbih0Lmxhc3RTZWVuRG9tYWluWzBdKTt0LnNjYWxlPW4vaXx8MSx0LnRyYW5zbGF0ZT1lLnNjYWxlVHJhbnNmb3JtYXRpb24odC5jYWNoZWREb21haW5bMF0pLWUuc2NhbGVUcmFuc2Zvcm1hdGlvbih0Lmxhc3RTZWVuRG9tYWluWzBdKSp0LnNjYWxlfHwwfX1yZXR1cm4gdC5wcm90b3R5cGUucmVzZXQ9ZnVuY3Rpb24oKXt0aGlzLnNjYWxlPTEsdGhpcy50cmFuc2xhdGU9MCx0aGlzLmNhY2hlZERvbWFpbj10aGlzLmxhc3RTZWVuRG9tYWlufSx0LnByb3RvdHlwZS5zZXREb21haW49ZnVuY3Rpb24odCl7dGhpcy5jYWNoZWREb21haW49dC5nZXRUcmFuc2Zvcm1hdGlvbkRvbWFpbigpfSx0fSkoKSxKU3Q9KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlLG4pe3ZhciBpPXRoaXM7dGhpcy5yZW5kZXJDYWxsYmFjaz1lLHRoaXMuYXBwbHlUcmFuc2Zvcm1DYWxsYmFjaz1uLHRoaXMuZG9tYWluVHJhbnNmb3JtWD1uZXcgWlN0LHRoaXMuZG9tYWluVHJhbnNmb3JtWT1uZXcgWlN0LHRoaXMucmVuZGVyRGVmZXJyZWQ9ZnVuY3Rpb24oKXtpLmFwcGx5VHJhbnNmb3JtKCksY2xlYXJUaW1lb3V0KGkudGltZW91dFRva2VuKSxpLnRpbWVvdXRUb2tlbj1zZXRUaW1lb3V0KChmdW5jdGlvbigpe2kucmVuZGVyQ2FsbGJhY2soKX0pLHQuREVGRVJSRURfUkVOREVSSU5HX0RFTEFZKX19cmV0dXJuIHQucHJvdG90eXBlLnNldERvbWFpbnM9ZnVuY3Rpb24odCxlKXt0JiZ0aGlzLmRvbWFpblRyYW5zZm9ybVguc2V0RG9tYWluKHQpLGUmJnRoaXMuZG9tYWluVHJhbnNmb3JtWS5zZXREb21haW4oZSksdGhpcy5yZW5kZXJEZWZlcnJlZCgpfSx0LnByb3RvdHlwZS51cGRhdGVEb21haW5zPWZ1bmN0aW9uKHQsZSl7dCYmdGhpcy5kb21haW5UcmFuc2Zvcm1YLnVwZGF0ZURvbWFpbih0KSxlJiZ0aGlzLmRvbWFpblRyYW5zZm9ybVkudXBkYXRlRG9tYWluKGUpLHRoaXMucmVuZGVyRGVmZXJyZWQoKX0sdC5wcm90b3R5cGUucmVzZXRUcmFuc2Zvcm1zPWZ1bmN0aW9uKCl7dGhpcy5kb21haW5UcmFuc2Zvcm1YLnJlc2V0KCksdGhpcy5kb21haW5UcmFuc2Zvcm1ZLnJlc2V0KCksdGhpcy5hcHBseVRyYW5zZm9ybSgpfSx0LnByb3RvdHlwZS5hcHBseVRyYW5zZm9ybT1mdW5jdGlvbigpe3RoaXMuYXBwbHlUcmFuc2Zvcm1DYWxsYmFjayh0aGlzLmRvbWFpblRyYW5zZm9ybVgudHJhbnNsYXRlLHRoaXMuZG9tYWluVHJhbnNmb3JtWS50cmFuc2xhdGUsdGhpcy5kb21haW5UcmFuc2Zvcm1YLnNjYWxlLHRoaXMuZG9tYWluVHJhbnNmb3JtWS5zY2FsZSl9LHQuREVGRVJSRURfUkVOREVSSU5HX0RFTEFZPTIwMCx0fSkoKTtLU3QuRGVmZXJyZWRSZW5kZXJlcj1KU3QsCi8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovCk9iamVjdC5kZWZpbmVQcm9wZXJ0eShzU3QsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBRU3Q9Qk8sdE10PXdwdCxlTXQ9Zmd0LG5NdD1EX3QsaU10PWxTdCxyTXQ9Y1N0LG9NdD1PX3QsYU10PWpTdCxzTXQ9R1N0LGxNdD1xU3QsY010PV9ndCx1TXQ9S1N0O3NTdC5SZW5kZXJlcj1iZ3QubWFrZUVudW0oWyJzdmciLCJjYW52YXMiXSk7dmFyIGhNdD0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3ZhciBuPXQuY2FsbCh0aGlzKXx8dGhpcztuLl9kYXRhQ2hhbmdlZD0hMSxuLl9hdHRyRXh0ZW50cz17fSxuLl9hbmltYXRlPSExLG4uX2FuaW1hdG9ycz17fSxuLl9wcm9wZXJ0eUV4dGVudHM9e30sbi5fcmVzZXRFbnRpdHlTdG9yZT1mdW5jdGlvbigpe24uX2NhY2hlZEVudGl0eVN0b3JlPXZvaWQgMH0sbi5fb3ZlcmZsb3dIaWRkZW49ITAsbi5hZGRDbGFzcygicGxvdCIpLG4uX2RhdGFzZXRUb0RyYXdlcj1uZXcgbk10Lk1hcCxuLl9hdHRyQmluZGluZ3M9dE10Lm1hcCgpLG4uX2luY2x1ZGVkVmFsdWVzUHJvdmlkZXI9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbi5faW5jbHVkZWRWYWx1ZXNGb3JTY2FsZSh0LGUpfSxuLl9yZW5kZXJDYWxsYmFjaz1mdW5jdGlvbigpe3JldHVybiBuLnJlbmRlcigpfSxuLl9vbkRhdGFzZXRVcGRhdGVDYWxsYmFjaz1mdW5jdGlvbigpe3JldHVybiBuLl9vbkRhdGFzZXRVcGRhdGUoKX0sbi5fcHJvcGVydHlCaW5kaW5ncz10TXQubWFwKCk7dmFyIGk9KG5ldyBlTXQuRWFzaW5nKS5tYXhUb3RhbER1cmF0aW9uKGUuX0FOSU1BVElPTl9NQVhfRFVSQVRJT04pO3JldHVybiBuLmFuaW1hdG9yKGlNdC5BbmltYXRvci5NQUlOLGkpLG4uYW5pbWF0b3IoaU10LkFuaW1hdG9yLlJFU0VULG5ldyBlTXQuTnVsbCksbi5fZGVmZXJyZWRSZXNldEVudGl0eVN0b3JlPW5NdC5XaW5kb3cuZGVib3VuY2UodU10LkRlZmVycmVkUmVuZGVyZXIuREVGRVJSRURfUkVOREVSSU5HX0RFTEFZLG4uX3Jlc2V0RW50aXR5U3RvcmUpLG59cmV0dXJuIFFTdC5fX2V4dGVuZHMoZSx0KSxlLmdldFRvdGFsRHJhd1RpbWU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gZS5yZWR1Y2UoKGZ1bmN0aW9uKGUsbil7cmV0dXJuIGUrbi5hbmltYXRvci50b3RhbFRpbWUodC5sZW5ndGgpfSksMCl9LGUuYXBwbHlEcmF3U3RlcHM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5tYXAoKGZ1bmN0aW9uKHQpe3ZhciBuPXQuYXR0clRvUHJvamVjdG9yLGk9e307cmV0dXJuIE9iamVjdC5rZXlzKG4pLmZvckVhY2goKGZ1bmN0aW9uKHQpe2lbdF09ZnVuY3Rpb24oaSxyKXtyZXR1cm4gblt0XShpLHIsZSl9fSkpLHthdHRyVG9BcHBsaWVkUHJvamVjdG9yOmksYW5pbWF0b3I6dC5hbmltYXRvcn19KSl9LGUucHJvdG90eXBlLmFuY2hvcj1mdW5jdGlvbihlKXtyZXR1cm4gZT1jTXQuY29lcmNlRXh0ZXJuYWxEMyhlKSx0LnByb3RvdHlwZS5hbmNob3IuY2FsbCh0aGlzLGUpLHRoaXMuX2RhdGFDaGFuZ2VkPSEwLHRoaXMuX3Jlc2V0RW50aXR5U3RvcmUoKSx0aGlzLl91cGRhdGVFeHRlbnRzKCksdGhpc30sZS5wcm90b3R5cGUuX3NldHVwPWZ1bmN0aW9uKCl7dmFyIGU9dGhpczt0aGlzLl9pc1NldHVwfHwodC5wcm90b3R5cGUuX3NldHVwLmNhbGwodGhpcyksbnVsbCE9dGhpcy5fY2FudmFzJiZ0aGlzLl9hcHBlbmRDYW52YXNOb2RlKCksdGhpcy5fcmVuZGVyQXJlYT10aGlzLmNvbnRlbnQoKS5hcHBlbmQoImciKS5jbGFzc2VkKCJyZW5kZXItYXJlYSIsITApLHRoaXMuZGF0YXNldHMoKS5mb3JFYWNoKChmdW5jdGlvbih0KXtyZXR1cm4gZS5fY3JlYXRlTm9kZXNGb3JEYXRhc2V0KHQpfSkpKX0sZS5wcm90b3R5cGUuX2FwcGVuZENhbnZhc05vZGU9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmVsZW1lbnQoKS5zZWxlY3QoIi5wbG90LWNhbnZhcy1jb250YWluZXIiKTt0LmVtcHR5KCkmJih0PXRoaXMuZWxlbWVudCgpLmFwcGVuZCgiZGl2IikuY2xhc3NlZCgicGxvdC1jYW52YXMtY29udGFpbmVyIiwhMCkpLm5vZGUoKS5hcHBlbmRDaGlsZCh0aGlzLl9jYW52YXMubm9kZSgpKX0sZS5wcm90b3R5cGUuc2V0Qm91bmRzPWZ1bmN0aW9uKGUsbixpLHIpe2lmKHQucHJvdG90eXBlLnNldEJvdW5kcy5jYWxsKHRoaXMsZSxuLGksciksdGhpcy5fdXBkYXRlRXh0ZW50cygpLG51bGwhPXRoaXMuX2NhbnZhcyl7aWYodGhpcy5fYnVmZmVyQ2FudmFzJiYhdGhpcy5fYnVmZmVyQ2FudmFzVmFsaWQpe3RoaXMuX2J1ZmZlckNhbnZhcy5hdHRyKCJ3aWR0aCIsdGhpcy5fY2FudmFzLmF0dHIoIndpZHRoIikpLHRoaXMuX2J1ZmZlckNhbnZhcy5hdHRyKCJoZWlnaHQiLHRoaXMuX2NhbnZhcy5hdHRyKCJoZWlnaHQiKSk7dmFyIG89dGhpcy5fYnVmZmVyQ2FudmFzLm5vZGUoKS5nZXRDb250ZXh0KCIyZCIpO2lmKG8pe3ZhciBhPXRoaXMuX2NhbnZhcy5ub2RlKCk7YS53aWR0aD4wJiZhLmhlaWdodD4wP28uY2FudmFzLndpZHRoPjAmJm8uY2FudmFzLmhlaWdodD4wJiZvLmRyYXdJbWFnZShhLDAsMCk6Y29uc29sZS53YXJuKCJGYWlsZWQgdG8gZmlsbCBidWZmZXIgY2FudmFzIHdpdGggd2l0aCAweDAgY2FudmFzIil9dGhpcy5fYnVmZmVyQ2FudmFzVmFsaWQ9ITB9dmFyIHM9bnVsbCE9d2luZG93LmRldmljZVBpeGVsUmF0aW8/d2luZG93LmRldmljZVBpeGVsUmF0aW86MTt0aGlzLl9jYW52YXMuYXR0cigid2lkdGgiLGUqcyksdGhpcy5fY2FudmFzLmF0dHIoImhlaWdodCIsbipzKTt2YXIgbD10aGlzLl9jYW52YXMubm9kZSgpLmdldENvbnRleHQoIjJkIik7aWYobCYmKGwuc2V0VHJhbnNmb3JtKHMsMCwwLHMsMCwwKSx0aGlzLl9idWZmZXJDYW52YXMpKXt2YXIgYz10aGlzLl9idWZmZXJDYW52YXMubm9kZSgpO2Mud2lkdGg+MCYmYy5oZWlnaHQ+MD9sLmNhbnZhcy53aWR0aD4wJiZsLmNhbnZhcy5oZWlnaHQ+MCYmbC5kcmF3SW1hZ2UoYywwLDAsZSxuKTpjb25zb2xlLndhcm4oIkZhaWxlZCB0byBmaWxsIGNhbnZhcyB3aXRoIDB4MCBidWZmZXIgY2FudmFzIil9fXJldHVybiB0aGlzfSxlLnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKCl7dmFyIGU9dGhpczt0LnByb3RvdHlwZS5kZXN0cm95LmNhbGwodGhpcyksdGhpcy5fc2NhbGVzKCkuZm9yRWFjaCgoZnVuY3Rpb24odCl7cmV0dXJuIHQub2ZmVXBkYXRlKGUuX3JlbmRlckNhbGxiYWNrKX0pKSx0aGlzLmRhdGFzZXRzKFtdKX0sZS5wcm90b3R5cGUuX2NyZWF0ZU5vZGVzRm9yRGF0YXNldD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9kYXRhc2V0VG9EcmF3ZXIuZ2V0KHQpO3JldHVybiJzdmciPT09dGhpcy5yZW5kZXJlcigpP2UudXNlU1ZHKHRoaXMuX3JlbmRlckFyZWEpOmUudXNlQ2FudmFzKHRoaXMuX2NhbnZhcyksZX0sZS5wcm90b3R5cGUuX2NyZWF0ZURyYXdlcj1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IHNNdC5Qcm94eURyYXdlcigoZnVuY3Rpb24oKXtyZXR1cm4gbmV3IGxNdC5TVkdEcmF3ZXIoInBhdGgiLCIiKX0pLChmdW5jdGlvbih0KXtyZXR1cm4gbmV3IGFNdC5DYW52YXNEcmF3ZXIodCwoZnVuY3Rpb24oKXt9KSl9KSl9LGUucHJvdG90eXBlLl9nZXRBbmltYXRvcj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fYW5pbWF0ZU9uTmV4dFJlbmRlcigpJiZ0aGlzLl9hbmltYXRvcnNbdF18fG5ldyBlTXQuTnVsbH0sZS5wcm90b3R5cGUuX29uRGF0YXNldFVwZGF0ZT1mdW5jdGlvbigpe3RoaXMuX3VwZGF0ZUV4dGVudHMoKSx0aGlzLl9kYXRhQ2hhbmdlZD0hMCx0aGlzLl9yZXNldEVudGl0eVN0b3JlKCksdGhpcy5yZW5kZXJMb3dQcmlvcml0eSgpfSxlLnByb3RvdHlwZS5hdHRyPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gbnVsbD09ZT90aGlzLl9hdHRyQmluZGluZ3MuZ2V0KHQpOih0aGlzLl9iaW5kQXR0cih0LGUsbiksdGhpcy5yZW5kZXIoKSx0aGlzKX0sZS5wcm90b3R5cGUuX2JpbmRQcm9wZXJ0eT1mdW5jdGlvbih0LGUsbixpKXt2YXIgcj10aGlzLl9wcm9wZXJ0eUJpbmRpbmdzLmdldCh0KSxvPW51bGwhPXI/ci5zY2FsZTpudWxsO3RoaXMuX3Byb3BlcnR5QmluZGluZ3Muc2V0KHQse2FjY2Vzc29yOiJmdW5jdGlvbiI9PXR5cGVvZiBlP2U6ZnVuY3Rpb24oKXtyZXR1cm4gZX0sc2NhbGU6bixwb3N0U2NhbGU6aX0pLG51bGwhPW8mJnRoaXMuX3VuaW5zdGFsbFNjYWxlRm9yS2V5KG8sdCksbnVsbCE9biYmdGhpcy5faW5zdGFsbFNjYWxlRm9yS2V5KG4sdCksdGhpcy5fY2xlYXJBdHRyVG9Qcm9qZWN0b3JDYWNoZSgpfSxlLnByb3RvdHlwZS5fYmluZEF0dHI9ZnVuY3Rpb24odCxlLG4pe3ZhciBpPXRoaXMuX2F0dHJCaW5kaW5ncy5nZXQodCkscj1udWxsIT1pP2kuc2NhbGU6bnVsbDt0aGlzLl9hdHRyQmluZGluZ3Muc2V0KHQse2FjY2Vzc29yOiJmdW5jdGlvbiI9PXR5cGVvZiBlP2U6ZnVuY3Rpb24oKXtyZXR1cm4gZX0sc2NhbGU6bn0pLG51bGwhPXImJnRoaXMuX3VuaW5zdGFsbFNjYWxlRm9yS2V5KHIsdCksbnVsbCE9biYmdGhpcy5faW5zdGFsbFNjYWxlRm9yS2V5KG4sdCksdGhpcy5fY2xlYXJBdHRyVG9Qcm9qZWN0b3JDYWNoZSgpfSxlLnByb3RvdHlwZS5fY2xlYXJBdHRyVG9Qcm9qZWN0b3JDYWNoZT1mdW5jdGlvbigpe2RlbGV0ZSB0aGlzLl9jYWNoZWRBdHRyVG9Qcm9qZWN0b3J9LGUucHJvdG90eXBlLl9nZXRBdHRyVG9Qcm9qZWN0b3I9ZnVuY3Rpb24oKXtpZihudWxsPT10aGlzLl9jYWNoZWRBdHRyVG9Qcm9qZWN0b3Ipe3ZhciB0PXRoaXMuX2dlbmVyYXRlQXR0clRvUHJvamVjdG9yKCk7ZS5PUFRJTUlaRV9NRU1PSVpFX1BST0pFQ1RPUlMmJih0PXJNdC5tZW1vaXplUHJvamVjdG9ycyh0KSksdGhpcy5fY2FjaGVkQXR0clRvUHJvamVjdG9yPXR9cmV0dXJuIG5NdC5hc3NpZ24oe30sdGhpcy5fY2FjaGVkQXR0clRvUHJvamVjdG9yKX0sZS5wcm90b3R5cGUuX2dlbmVyYXRlQXR0clRvUHJvamVjdG9yPWZ1bmN0aW9uKCl7dmFyIHQ9e307dGhpcy5fYXR0ckJpbmRpbmdzLmVhY2goKGZ1bmN0aW9uKG4saSl7dFtpXT1lLl9zY2FsZWRBY2Nlc3NvcihuKX0pKTt2YXIgbj10aGlzLl9wcm9wZXJ0eVByb2plY3RvcnMoKTtyZXR1cm4gT2JqZWN0LmtleXMobikuZm9yRWFjaCgoZnVuY3Rpb24oZSl7bnVsbD09dFtlXSYmKHRbZV09bltlXSl9KSksdH0sZS5wcm90b3R5cGUucmVuZGVySW1tZWRpYXRlbHk9ZnVuY3Rpb24oKXtyZXR1cm4gdC5wcm90b3R5cGUucmVuZGVySW1tZWRpYXRlbHkuY2FsbCh0aGlzKSx0aGlzLl9pc0FuY2hvcmVkJiYodGhpcy5fcGFpbnQoKSx0aGlzLl9kYXRhQ2hhbmdlZD0hMSksdGhpc30sZS5wcm90b3R5cGUucmVuZGVyTG93UHJpb3JpdHk9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcmVuZGVyQ2FsbGJhY2soKSx0aGlzfSxlLnByb3RvdHlwZS5hbmltYXRlZD1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9hbmltYXRlOih0aGlzLl9hbmltYXRlPXQsdGhpcyl9LGUucHJvdG90eXBlLmRldGFjaD1mdW5jdGlvbigpe3JldHVybiB0LnByb3RvdHlwZS5kZXRhY2guY2FsbCh0aGlzKSx0aGlzLl91cGRhdGVFeHRlbnRzKCksdGhpc30sZS5wcm90b3R5cGUuX3NjYWxlcz1mdW5jdGlvbigpe3ZhciB0PVtdO3JldHVybiB0aGlzLl9hdHRyQmluZGluZ3MuZWFjaCgoZnVuY3Rpb24oZSxuKXt2YXIgaT1lLnNjYWxlO251bGwhPWkmJi0xPT09dC5pbmRleE9mKGkpJiZ0LnB1c2goaSl9KSksdGhpcy5fcHJvcGVydHlCaW5kaW5ncy5lYWNoKChmdW5jdGlvbihlLG4pe3ZhciBpPWUuc2NhbGU7bnVsbCE9aSYmLTE9PT10LmluZGV4T2YoaSkmJnQucHVzaChpKX0pKSx0fSxlLnByb3RvdHlwZS5fdXBkYXRlRXh0ZW50cz1mdW5jdGlvbigpe3ZhciB0PXRoaXM7dGhpcy5fcmVzZXRFbnRpdHlTdG9yZSgpLHRoaXMuX3NjYWxlcygpLmZvckVhY2goKGZ1bmN0aW9uKGUpe3JldHVybiBlLmFkZEluY2x1ZGVkVmFsdWVzUHJvdmlkZXIodC5faW5jbHVkZWRWYWx1ZXNQcm92aWRlcil9KSl9LGUucHJvdG90eXBlLl9maWx0ZXJGb3JQcm9wZXJ0eT1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbH0sZS5wcm90b3R5cGUuZ2V0RXh0ZW50c0ZvckF0dHI9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztpZihudWxsPT10aGlzLl9hdHRyRXh0ZW50c1t0XSl7dmFyIG49ck10Lm1lbVRodW5rKChmdW5jdGlvbigpe3JldHVybiBlLmRhdGFzZXRzKCl9KSwoZnVuY3Rpb24oKXtyZXR1cm4gZS5fYXR0ckJpbmRpbmdzLmdldCh0KX0pLChmdW5jdGlvbih0LGUpe3JldHVybiBudWxsPT1lfHxudWxsPT1lLmFjY2Vzc29yP251bGw6dC5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBkTXQodCxlLG51bGwpfSkpfSkpO3RoaXMuX2F0dHJFeHRlbnRzW3RdPW59cmV0dXJuIHRoaXMuX2F0dHJFeHRlbnRzW3RdKCl9LGUucHJvdG90eXBlLmdldEV4dGVudHNGb3JQcm9wZXJ0eT1mdW5jdGlvbih0KXt2YXIgZT10aGlzO2lmKG51bGw9PXRoaXMuX3Byb3BlcnR5RXh0ZW50c1t0XSl7dmFyIG49ck10Lm1lbVRodW5rKChmdW5jdGlvbigpe3JldHVybiBlLmRhdGFzZXRzKCl9KSwoZnVuY3Rpb24oKXtyZXR1cm4gZS5fcHJvcGVydHlCaW5kaW5ncy5nZXQodCl9KSwoZnVuY3Rpb24oKXtyZXR1cm4gZS5fZmlsdGVyRm9yUHJvcGVydHkodCl9KSwoZnVuY3Rpb24odCxlLG4pe3JldHVybiBudWxsPT1lfHxudWxsPT1lLmFjY2Vzc29yP251bGw6dC5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBkTXQodCxlLG4pfSkpfSkpO3RoaXMuX3Byb3BlcnR5RXh0ZW50c1t0XT1ufXJldHVybiB0aGlzLl9wcm9wZXJ0eUV4dGVudHNbdF0oKX0sZS5wcm90b3R5cGUuX2luY2x1ZGVkVmFsdWVzRm9yU2NhbGU9ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzO2lmKCF0aGlzLl9pc0FuY2hvcmVkJiYhZSlyZXR1cm5bXTt2YXIgaT1bXTtyZXR1cm4gdGhpcy5fYXR0ckJpbmRpbmdzLmVhY2goKGZ1bmN0aW9uKGUscil7aWYoZS5zY2FsZT09PXQpe3ZhciBvPW4uZ2V0RXh0ZW50c0ZvckF0dHIocik7bnVsbCE9byYmKGk9aS5jb25jYXQodE10Lm1lcmdlKG8pKSl9fSkpLHRoaXMuX3Byb3BlcnR5QmluZGluZ3MuZWFjaCgoZnVuY3Rpb24oZSxyKXtpZihlLnNjYWxlPT09dCl7dmFyIG89bi5nZXRFeHRlbnRzRm9yUHJvcGVydHkocik7bnVsbCE9byYmKGk9aS5jb25jYXQodE10Lm1lcmdlKG8pKSl9fSkpLGl9LGUucHJvdG90eXBlLmFuaW1hdG9yPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHZvaWQgMD09PWU/dGhpcy5fYW5pbWF0b3JzW3RdOih0aGlzLl9hbmltYXRvcnNbdF09ZSx0aGlzKX0sZS5wcm90b3R5cGUucmVuZGVyZXI9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztyZXR1cm4gdm9pZCAwPT09dD9udWxsPT10aGlzLl9jYW52YXM/InN2ZyI6ImNhbnZhcyI6KG51bGw9PXRoaXMuX2NhbnZhcyYmImNhbnZhcyI9PT10Pyh0aGlzLl9jYW52YXM9dE10LnNlbGVjdChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKSkuY2xhc3NlZCgicGxvdC1jYW52YXMiLCEwKSx0aGlzLl9idWZmZXJDYW52YXM9dE10LnNlbGVjdChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKSksbnVsbCE9dGhpcy5lbGVtZW50KCkmJnRoaXMuX2FwcGVuZENhbnZhc05vZGUoKSx0aGlzLl9kYXRhc2V0VG9EcmF3ZXIuZm9yRWFjaCgoZnVuY3Rpb24odCl7dC51c2VDYW52YXMoZS5fY2FudmFzKX0pKSx0aGlzLnJlbmRlcigpKTpudWxsIT10aGlzLl9jYW52YXMmJiJzdmciPT10JiYodGhpcy5fY2FudmFzLnJlbW92ZSgpLHRoaXMuX2NhbnZhcz1udWxsLHRoaXMuX2J1ZmZlckNhbnZhcz1udWxsLHRoaXMuX2RhdGFzZXRUb0RyYXdlci5mb3JFYWNoKChmdW5jdGlvbih0KXt0LnVzZVNWRyhlLl9yZW5kZXJBcmVhKX0pKSx0aGlzLnJlbmRlcigpKSx0aGlzKX0sZS5wcm90b3R5cGUuYWRkRGF0YXNldD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fYWRkRGF0YXNldCh0KSx0aGlzLl9vbkRhdGFzZXRVcGRhdGUoKSx0aGlzfSxlLnByb3RvdHlwZS5fYWRkRGF0YXNldD1mdW5jdGlvbih0KXt0aGlzLl9yZW1vdmVEYXRhc2V0KHQpO3ZhciBlPXRoaXMuX2NyZWF0ZURyYXdlcih0KTtyZXR1cm4gdGhpcy5fZGF0YXNldFRvRHJhd2VyLnNldCh0LGUpLHRoaXMuX2lzU2V0dXAmJnRoaXMuX2NyZWF0ZU5vZGVzRm9yRGF0YXNldCh0KSx0Lm9uVXBkYXRlKHRoaXMuX29uRGF0YXNldFVwZGF0ZUNhbGxiYWNrKSx0aGlzfSxlLnByb3RvdHlwZS5yZW1vdmVEYXRhc2V0PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9yZW1vdmVEYXRhc2V0KHQpLHRoaXMuX29uRGF0YXNldFVwZGF0ZSgpLHRoaXN9LGUucHJvdG90eXBlLl9yZW1vdmVEYXRhc2V0PWZ1bmN0aW9uKHQpe3JldHVybi0xPT09dGhpcy5kYXRhc2V0cygpLmluZGV4T2YodCl8fCh0aGlzLl9yZW1vdmVEYXRhc2V0Tm9kZXModCksdC5vZmZVcGRhdGUodGhpcy5fb25EYXRhc2V0VXBkYXRlQ2FsbGJhY2spLHRoaXMuX2RhdGFzZXRUb0RyYXdlci5kZWxldGUodCkpLHRoaXN9LGUucHJvdG90eXBlLl9yZW1vdmVEYXRhc2V0Tm9kZXM9ZnVuY3Rpb24odCl7dGhpcy5fZGF0YXNldFRvRHJhd2VyLmdldCh0KS5yZW1vdmUoKX0sZS5wcm90b3R5cGUuZGF0YXNldHM9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxuPVtdO3JldHVybiB0aGlzLl9kYXRhc2V0VG9EcmF3ZXIuZm9yRWFjaCgoZnVuY3Rpb24odCxlKXtyZXR1cm4gbi5wdXNoKGUpfSkpLG51bGw9PXQ/bjoobi5mb3JFYWNoKChmdW5jdGlvbih0KXtyZXR1cm4gZS5fcmVtb3ZlRGF0YXNldCh0KX0pKSx0LmZvckVhY2goKGZ1bmN0aW9uKHQpe3JldHVybiBlLl9hZGREYXRhc2V0KHQpfSkpLHRoaXMuX29uRGF0YXNldFVwZGF0ZSgpLHRoaXMpfSxlLnByb3RvdHlwZS5fZ2VuZXJhdGVEcmF3U3RlcHM9ZnVuY3Rpb24oKXtyZXR1cm5be2F0dHJUb1Byb2plY3Rvcjp0aGlzLl9nZXRBdHRyVG9Qcm9qZWN0b3IoKSxhbmltYXRvcjpuZXcgZU10Lk51bGx9XX0sZS5wcm90b3R5cGUuX2FkZGl0aW9uYWxQYWludD1mdW5jdGlvbih0KXt9LGUucHJvdG90eXBlLl9idWlsZExpZ2h0d2VpZ2h0UGxvdEVudGl0aWVzPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsbj1bXTtyZXR1cm4gdC5mb3JFYWNoKChmdW5jdGlvbih0LGkpe2Zvcih2YXIgcj1lLl9kYXRhc2V0VG9EcmF3ZXIuZ2V0KHQpLG89MCxhPXQuZGF0YSgpLHM9YS5sZW5ndGgsbD1mdW5jdGlvbihzKXt2YXIgbD1hW3NdLGM9ZS5fcGl4ZWxQb2ludChsLHMsdCk7aWYobk10Lk1hdGguaXNOYU4oYy54KXx8bk10Lk1hdGguaXNOYU4oYy55KSlyZXR1cm4iY29udGludWUiO3ZhciB1PWU7bi5wdXNoKHtkYXR1bTpsLGdldCBwb3NpdGlvbigpe3JldHVybiB1Ll9waXhlbFBvaW50LmNhbGwodSxsLHMsdCl9LGluZGV4OnMsZGF0YXNldDp0LGRhdGFzZXRJbmRleDppLGNvbXBvbmVudDplLGRyYXdlcjpyLHZhbGlkRGF0dW1JbmRleDpvfSksbysrfSxjPTA7YzxzO2MrKylsKGMpfSkpLG59LGUucHJvdG90eXBlLl9nZXREYXRhVG9EcmF3PWZ1bmN0aW9uKCl7dmFyIHQ9bmV3IG5NdC5NYXA7cmV0dXJuIHRoaXMuZGF0YXNldHMoKS5mb3JFYWNoKChmdW5jdGlvbihlKXtyZXR1cm4gdC5zZXQoZSxlLmRhdGEoKSl9KSksdH0sZS5wcm90b3R5cGUuX3BhaW50PWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcztkZWxldGUgdGhpcy5fY2FjaGVkQXR0clRvUHJvamVjdG9yO3ZhciBuPXRoaXMuX2dlbmVyYXRlRHJhd1N0ZXBzKCksaT10aGlzLl9nZXREYXRhVG9EcmF3KCkscj10aGlzLmRhdGFzZXRzKCkubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gdC5fZGF0YXNldFRvRHJhd2VyLmdldChlKX0pKTtpZigiY2FudmFzIj09PXRoaXMucmVuZGVyZXIoKSl7dmFyIG89dGhpcy5fY2FudmFzLm5vZGUoKTtvLmdldENvbnRleHQoIjJkIikuY2xlYXJSZWN0KDAsMCxvLmNsaWVudFdpZHRoLG8uY2xpZW50SGVpZ2h0KSx0aGlzLl9idWZmZXJDYW52YXNWYWxpZD0hMX10aGlzLmRhdGFzZXRzKCkuZm9yRWFjaCgoZnVuY3Rpb24odCxvKXt2YXIgYT1lLmFwcGx5RHJhd1N0ZXBzKG4sdCk7cltvXS5kcmF3KGkuZ2V0KHQpLGEpfSkpO3ZhciBhPXRoaXMuZGF0YXNldHMoKS5tYXAoKGZ1bmN0aW9uKHQscil7cmV0dXJuIGUuZ2V0VG90YWxEcmF3VGltZShpLmdldCh0KSxuKX0pKSxzPW5NdC5NYXRoLm1heChhLDApO3RoaXMuX2FkZGl0aW9uYWxQYWludChzKX0sZS5wcm90b3R5cGUuc2VsZWN0aW9ucz1mdW5jdGlvbih0KXt2YXIgZT10aGlzO2lmKHZvaWQgMD09PXQmJih0PXRoaXMuZGF0YXNldHMoKSksImNhbnZhcyI9PT10aGlzLnJlbmRlcmVyKCkpcmV0dXJuIHRNdC5zZWxlY3RBbGwoKTt2YXIgbj1bXTtyZXR1cm4gdC5mb3JFYWNoKChmdW5jdGlvbih0KXt2YXIgaT1lLl9kYXRhc2V0VG9EcmF3ZXIuZ2V0KHQpO2lmKG51bGwhPWkpe3ZhciByPWkuZ2V0VmlzdWFsUHJpbWl0aXZlcygpO24ucHVzaC5hcHBseShuLHIpfX0pKSx0TXQuc2VsZWN0QWxsKG4pfSxlLnByb3RvdHlwZS5lbnRpdGllcz1mdW5jdGlvbih0KXt2YXIgZT10aGlzO3JldHVybiB0aGlzLl9nZXRFbnRpdHlTdG9yZSh0KS5lbnRpdGllcygpLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIGUuX2xpZ2h0d2VpZ2h0UGxvdEVudGl0eVRvUGxvdEVudGl0eSh0KX0pKX0sZS5wcm90b3R5cGUuZmlsdGVyRW50aXRpZXM9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztyZXR1cm4gdGhpcy5fZ2V0RW50aXR5U3RvcmUoKS5lbnRpdGllcygpLmZpbHRlcih0KS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBlLl9saWdodHdlaWdodFBsb3RFbnRpdHlUb1Bsb3RFbnRpdHkodCl9KSl9LGUucHJvdG90eXBlLl9nZXRFbnRpdHlTdG9yZT1mdW5jdGlvbih0KXt2YXIgZSxuPXRoaXMsaT1mdW5jdGlvbih0KXtyZXR1cm4gbi5fZW50aXR5Qm91bmRzKHQpfTtyZXR1cm4gdm9pZCAwIT09dD8oKGU9bmV3IG5NdC5FbnRpdHlTdG9yZSkuYWRkQWxsKHRoaXMuX2J1aWxkTGlnaHR3ZWlnaHRQbG90RW50aXRpZXModCksaSx0aGlzLl9sb2NhbE9yaWdpbkJvdW5kcygpKSxlKToodm9pZCAwPT09dGhpcy5fY2FjaGVkRW50aXR5U3RvcmUmJigoZT1uZXcgbk10LkVudGl0eVN0b3JlKS5hZGRBbGwodGhpcy5fYnVpbGRMaWdodHdlaWdodFBsb3RFbnRpdGllcyh0aGlzLmRhdGFzZXRzKCkpLGksdGhpcy5fbG9jYWxPcmlnaW5Cb3VuZHMoKSksdGhpcy5fY2FjaGVkRW50aXR5U3RvcmU9ZSksdGhpcy5fY2FjaGVkRW50aXR5U3RvcmUpfSxlLnByb3RvdHlwZS5fbG9jYWxPcmlnaW5Cb3VuZHM9ZnVuY3Rpb24oKXtyZXR1cm57dG9wTGVmdDp7eDowLHk6MH0sYm90dG9tUmlnaHQ6e3g6dGhpcy53aWR0aCgpLHk6dGhpcy5oZWlnaHQoKX19fSxlLnByb3RvdHlwZS5fZW50aXR5Qm91bmRzPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX3BpeGVsUG9pbnQodC5kYXR1bSx0LmluZGV4LHQuZGF0YXNldCk7cmV0dXJue3g6ZS54LHk6ZS55LHdpZHRoOjAsaGVpZ2h0OjB9fSxlLnByb3RvdHlwZS5fbGlnaHR3ZWlnaHRQbG90RW50aXR5VG9QbG90RW50aXR5PWZ1bmN0aW9uKHQpe3JldHVybntib3VuZHM6dGhpcy5fZW50aXR5Qm91bmRzKHQpLGNvbXBvbmVudDp0LmNvbXBvbmVudCxkYXRhc2V0OnQuZGF0YXNldCxkYXRhc2V0SW5kZXg6dC5kYXRhc2V0SW5kZXgsZGF0dW06dC5kYXR1bSxpbmRleDp0LmluZGV4LHBvc2l0aW9uOnQucG9zaXRpb24sc2VsZWN0aW9uOnRNdC5zZWxlY3QodC5kcmF3ZXIuZ2V0VmlzdWFsUHJpbWl0aXZlQXRJbmRleCh0LnZhbGlkRGF0dW1JbmRleCkpfX0sZS5wcm90b3R5cGUuZW50aXRpZXNBdD1mdW5jdGlvbih0KXt0aHJvdyBuZXcgRXJyb3IoInBsb3RzIG11c3QgaW1wbGVtZW50IGVudGl0aWVzQXQiKX0sZS5wcm90b3R5cGUuZW50aXR5TmVhcmVzdD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9nZXRFbnRpdHlTdG9yZSgpLmVudGl0eU5lYXJlc3QodCk7cmV0dXJuIHZvaWQgMD09PWU/dm9pZCAwOnRoaXMuX2xpZ2h0d2VpZ2h0UGxvdEVudGl0eVRvUGxvdEVudGl0eShlKX0sZS5wcm90b3R5cGUuZW50aXRpZXNJbj1mdW5jdGlvbih0LGUpe3ZhciBuO2lmKG51bGw9PWUpe249e3g6dC50b3BMZWZ0LngseTp0LnRvcExlZnQueSx3aWR0aDp0LmJvdHRvbVJpZ2h0LngtdC50b3BMZWZ0LngsaGVpZ2h0OnQuYm90dG9tUmlnaHQueS10LnRvcExlZnQueX19ZWxzZXtuPXt4OnQubWluLHk6ZS5taW4sd2lkdGg6dC5tYXgtdC5taW4saGVpZ2h0OmUubWF4LWUubWlufX1yZXR1cm4gdGhpcy5lbnRpdGllc0luQm91bmRzKG4pfSxlLnByb3RvdHlwZS5lbnRpdGllc0luQm91bmRzPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsbj10aGlzLl9nZXRFbnRpdHlTdG9yZSgpLmVudGl0aWVzSW5Cb3VuZHModCk7aWYobilyZXR1cm4gbi5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBlLl9saWdodHdlaWdodFBsb3RFbnRpdHlUb1Bsb3RFbnRpdHkodCl9KSl9LGUucHJvdG90eXBlLmVudGl0aWVzSW5YQm91bmRzPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsbj10aGlzLl9nZXRFbnRpdHlTdG9yZSgpLmVudGl0aWVzSW5YQm91bmRzKHQpO2lmKG4pcmV0dXJuIG4ubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gZS5fbGlnaHR3ZWlnaHRQbG90RW50aXR5VG9QbG90RW50aXR5KHQpfSkpfSxlLnByb3RvdHlwZS5lbnRpdGllc0luWUJvdW5kcz1mdW5jdGlvbih0KXt2YXIgZT10aGlzLG49dGhpcy5fZ2V0RW50aXR5U3RvcmUoKS5lbnRpdGllc0luWUJvdW5kcyh0KTtpZihuKXJldHVybiBuLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIGUuX2xpZ2h0d2VpZ2h0UGxvdEVudGl0eVRvUGxvdEVudGl0eSh0KX0pKX0sZS5wcm90b3R5cGUuX3VuaW5zdGFsbFNjYWxlRm9yS2V5PWZ1bmN0aW9uKHQsZSl7dC5vZmZVcGRhdGUodGhpcy5fcmVuZGVyQ2FsbGJhY2spLHQub2ZmVXBkYXRlKHRoaXMuX2RlZmVycmVkUmVzZXRFbnRpdHlTdG9yZSksdC5yZW1vdmVJbmNsdWRlZFZhbHVlc1Byb3ZpZGVyKHRoaXMuX2luY2x1ZGVkVmFsdWVzUHJvdmlkZXIpfSxlLnByb3RvdHlwZS5faW5zdGFsbFNjYWxlRm9yS2V5PWZ1bmN0aW9uKHQsZSl7dC5vblVwZGF0ZSh0aGlzLl9yZW5kZXJDYWxsYmFjayksdC5vblVwZGF0ZSh0aGlzLl9kZWZlcnJlZFJlc2V0RW50aXR5U3RvcmUpLHQuYWRkSW5jbHVkZWRWYWx1ZXNQcm92aWRlcih0aGlzLl9pbmNsdWRlZFZhbHVlc1Byb3ZpZGVyKX0sZS5wcm90b3R5cGUuX3Byb3BlcnR5UHJvamVjdG9ycz1mdW5jdGlvbigpe3JldHVybnt9fSxlLl9zY2FsZWRBY2Nlc3Nvcj1mdW5jdGlvbih0KXt2YXIgZT10LnNjYWxlLG49dC5hY2Nlc3NvcixpPXQucG9zdFNjYWxlLHI9bnVsbD09ZT9uOmZ1bmN0aW9uKHQsaSxyKXtyZXR1cm4gZS5zY2FsZShuKHQsaSxyKSl9O3JldHVybiBudWxsPT1pP3I6ZnVuY3Rpb24odCxlLG4pe3JldHVybiBpKHIodCxlLG4pLHQsZSxuKX19LGUucHJvdG90eXBlLl9waXhlbFBvaW50PWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm57eDowLHk6MH19LGUucHJvdG90eXBlLl9hbmltYXRlT25OZXh0UmVuZGVyPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2FuaW1hdGUmJnRoaXMuX2RhdGFDaGFuZ2VkfSxlLk9QVElNSVpFX01FTU9JWkVfUFJPSkVDVE9SUz0hMSxlLl9BTklNQVRJT05fTUFYX0RVUkFUSU9OPTYwMCxlfSkob010LkNvbXBvbmVudCk7ZnVuY3Rpb24gZE10KHQsZSxuKXt2YXIgaT1lLmFjY2Vzc29yLHI9ZS5zY2FsZTtpZihudWxsPT1yKXJldHVybltdO3ZhciBvPXQuZGF0YSgpO251bGwhPW4mJihvPW8uZmlsdGVyKChmdW5jdGlvbihlLGkpe3JldHVybiBuKGUsaSx0KX0pKSk7dmFyIGE9by5tYXAoKGZ1bmN0aW9uKGUsbil7cmV0dXJuIGkoZSxuLHQpfSkpO3JldHVybiByLmV4dGVudE9mVmFsdWVzKGEpfQovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqL3NTdC5QbG90PWhNdCxPYmplY3QuZGVmaW5lUHJvcGVydHkoYVN0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgcE10PUJPLGZNdD1zU3QsbU10PURfdCxnTXQ9KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXtyZXR1cm4gbnVsbCE9PXQmJnQuYXBwbHkodGhpcyxhcmd1bWVudHMpfHx0aGlzfXJldHVybiBwTXQuX19leHRlbmRzKGUsdCksZS5wcm90b3R5cGUuZW50aXR5TmVhcmVzdD1mdW5jdGlvbih0KXt2YXIgZSxuPTEvMDtyZXR1cm4gdGhpcy5jb21wb25lbnRzKCkuZm9yRWFjaCgoZnVuY3Rpb24oaSl7dmFyIHI9aS5lbnRpdHlOZWFyZXN0KHQpO2lmKG51bGwhPXIpe3ZhciBvPW1NdC5NYXRoLmRpc3RhbmNlU3F1YXJlZChyLnBvc2l0aW9uLHQpO288PW4mJihuPW8sZT1yKX19KSksZX0sZS5wcm90b3R5cGUuYXBwZW5kPWZ1bmN0aW9uKGUpe2lmKG51bGwhPWUmJiEoZSBpbnN0YW5jZW9mIGZNdC5QbG90KSl0aHJvdyBuZXcgRXJyb3IoIlBsb3QgR3JvdXAgb25seSBhY2NlcHRzIHBsb3RzIik7cmV0dXJuIHQucHJvdG90eXBlLmFwcGVuZC5jYWxsKHRoaXMsZSksdGhpc30sZX0pKF93dC5Hcm91cCk7YVN0LlBsb3RHcm91cD1nTXQ7dmFyIF9NdD17fTsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi9PYmplY3QuZGVmaW5lUHJvcGVydHkoX010LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgeU10PUJPLHZNdD13cHQsYk10PURfdCx4TXQ9KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSl7dm9pZCAwPT09ZSYmKGU9W10pO3ZhciBuPXQuY2FsbCh0aGlzKXx8dGhpcztyZXR1cm4gbi5fcm93UGFkZGluZz0wLG4uX2NvbHVtblBhZGRpbmc9MCxuLl9yb3dzPVtdLG4uX3Jvd1dlaWdodHM9W10sbi5fY29sdW1uV2VpZ2h0cz1bXSxuLl9uUm93cz0wLG4uX25Db2xzPTAsbi5fY2FsY3VsYXRlZExheW91dD1udWxsLG4uYWRkQ2xhc3MoInRhYmxlIiksZS5mb3JFYWNoKChmdW5jdGlvbih0LGUpe3QuZm9yRWFjaCgoZnVuY3Rpb24odCxpKXtudWxsIT10JiZuLmFkZCh0LGUsaSl9KSl9KSksbn1yZXR1cm4geU10Ll9fZXh0ZW5kcyhlLHQpLGUucHJvdG90eXBlLl9mb3JFYWNoPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0wO2U8dGhpcy5fblJvd3M7ZSsrKWZvcih2YXIgbj0wO248dGhpcy5fbkNvbHM7bisrKW51bGwhPXRoaXMuX3Jvd3NbZV1bbl0mJnQodGhpcy5fcm93c1tlXVtuXSl9LGUucHJvdG90eXBlLmhhcz1mdW5jdGlvbih0KXtmb3IodmFyIGU9MDtlPHRoaXMuX25Sb3dzO2UrKylmb3IodmFyIG49MDtuPHRoaXMuX25Db2xzO24rKylpZih0aGlzLl9yb3dzW2VdW25dPT09dClyZXR1cm4hMDtyZXR1cm4hMX0sZS5wcm90b3R5cGUuY29tcG9uZW50QXQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdDwwfHx0Pj10aGlzLl9uUm93c3x8ZTwwfHxlPj10aGlzLl9uQ29scz9udWxsOnRoaXMuX3Jvd3NbdF1bZV19LGUucHJvdG90eXBlLmFkZD1mdW5jdGlvbih0LGUsbil7aWYobnVsbD09dCl0aHJvdyBFcnJvcigiQ2Fubm90IGFkZCBudWxsIHRvIGEgdGFibGUgY2VsbCIpO2lmKCF0aGlzLmhhcyh0KSl7aWYobnVsbCE9KHRoaXMuX3Jvd3NbZV0mJnRoaXMuX3Jvd3NbZV1bbl0pKXRocm93IG5ldyBFcnJvcigiY2VsbCBpcyBvY2N1cGllZCIpO3QuZGV0YWNoKCksdGhpcy5fblJvd3M9TWF0aC5tYXgoZSsxLHRoaXMuX25Sb3dzKSx0aGlzLl9uQ29scz1NYXRoLm1heChuKzEsdGhpcy5fbkNvbHMpLHRoaXMuX3BhZFRhYmxlVG9TaXplKHRoaXMuX25Sb3dzLHRoaXMuX25Db2xzKSx0aGlzLl9yb3dzW2VdW25dPXQsdGhpcy5fYWRvcHRBbmRBbmNob3IodCksdGhpcy5yZWRyYXcoKX1yZXR1cm4gdGhpc30sZS5wcm90b3R5cGUuX3JlbW92ZT1mdW5jdGlvbih0KXtmb3IodmFyIGU9MDtlPHRoaXMuX25Sb3dzO2UrKylmb3IodmFyIG49MDtuPHRoaXMuX25Db2xzO24rKylpZih0aGlzLl9yb3dzW2VdW25dPT09dClyZXR1cm4gdGhpcy5fcm93c1tlXVtuXT1udWxsLCEwO3JldHVybiExfSxlLnByb3RvdHlwZS5faXRlcmF0ZUxheW91dD1mdW5jdGlvbih0LG4saSl7dm9pZCAwPT09aSYmKGk9ITEpO2Zvcih2YXIgcixvLGEscyxsLGM9dGhpcy5fcm93cyx1PXZNdC50cmFuc3Bvc2UodGhpcy5fcm93cyksaD10LXRoaXMuX2NvbHVtblBhZGRpbmcqKHRoaXMuX25Db2xzLTEpLGQ9bi10aGlzLl9yb3dQYWRkaW5nKih0aGlzLl9uUm93cy0xKSxwPWUuX2NhbGNDb21wb25lbnRXZWlnaHRzKHRoaXMuX3Jvd1dlaWdodHMsYywoZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXR8fHQuZml4ZWRIZWlnaHQoKX0pKSxmPWUuX2NhbGNDb21wb25lbnRXZWlnaHRzKHRoaXMuX2NvbHVtbldlaWdodHMsdSwoZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXR8fHQuZml4ZWRXaWR0aCgpfSkpLG09Zi5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiAwPT09dD8uNTp0fSkpLGc9cC5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiAwPT09dD8uNTp0fSkpLF89ZS5fY2FsY1Byb3BvcnRpb25hbFNwYWNlKG0saCkseT1lLl9jYWxjUHJvcG9ydGlvbmFsU3BhY2UoZyxkKSx2PWJNdC5BcnJheS5jcmVhdGVGaWxsZWRBcnJheSgwLHRoaXMuX25Db2xzKSxiPWJNdC5BcnJheS5jcmVhdGVGaWxsZWRBcnJheSgwLHRoaXMuX25Sb3dzKSx4PTA7Oyl7dmFyIHc9Yk10LkFycmF5LmFkZChiLHkpLFM9Yk10LkFycmF5LmFkZCh2LF8pO3Y9KGE9dGhpcy5fZGV0ZXJtaW5lR3VhcmFudGVlcyhTLHcsaSkpLmd1YXJhbnRlZWRXaWR0aHMsYj1hLmd1YXJhbnRlZWRIZWlnaHRzLHM9YS53YW50c1dpZHRoQXJyLnNvbWUoKGZ1bmN0aW9uKHQpe3JldHVybiB0fSkpLGw9YS53YW50c0hlaWdodEFyci5zb21lKChmdW5jdGlvbih0KXtyZXR1cm4gdH0pKTt2YXIgTT1yLEU9bztyPWgtdk10LnN1bShhLmd1YXJhbnRlZWRXaWR0aHMpLG89ZC12TXQuc3VtKGEuZ3VhcmFudGVlZEhlaWdodHMpO3ZhciBUPXZvaWQgMDtzPyhUPWEud2FudHNXaWR0aEFyci5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0Py4xOjB9KSksVD1iTXQuQXJyYXkuYWRkKFQsZikpOlQ9Zjt2YXIgQz12b2lkIDA7aWYobD8oQz1hLndhbnRzSGVpZ2h0QXJyLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQ/LjE6MH0pKSxDPWJNdC5BcnJheS5hZGQoQyxwKSk6Qz1wLF89ZS5fY2FsY1Byb3BvcnRpb25hbFNwYWNlKFQscikseT1lLl9jYWxjUHJvcG9ydGlvbmFsU3BhY2UoQyxvKSx4KyssIShyPjAmJnIhPT1NKSYmIShvPjAmJm8hPT1FKSlicmVhaztpZih4PjUpYnJlYWt9cmV0dXJuIHI9aC12TXQuc3VtKGEuZ3VhcmFudGVlZFdpZHRocyksbz1kLXZNdC5zdW0oYS5ndWFyYW50ZWVkSGVpZ2h0cykse2NvbFByb3BvcnRpb25hbFNwYWNlOl89ZS5fY2FsY1Byb3BvcnRpb25hbFNwYWNlKGYscikscm93UHJvcG9ydGlvbmFsU3BhY2U6eT1lLl9jYWxjUHJvcG9ydGlvbmFsU3BhY2UocCxvKSxndWFyYW50ZWVkV2lkdGhzOmEuZ3VhcmFudGVlZFdpZHRocyxndWFyYW50ZWVkSGVpZ2h0czphLmd1YXJhbnRlZWRIZWlnaHRzLHdhbnRzV2lkdGg6cyx3YW50c0hlaWdodDpsfX0sZS5wcm90b3R5cGUuX2RldGVybWluZUd1YXJhbnRlZXM9ZnVuY3Rpb24odCxlLG4pe3ZvaWQgMD09PW4mJihuPSExKTt2YXIgaT1iTXQuQXJyYXkuY3JlYXRlRmlsbGVkQXJyYXkoMCx0aGlzLl9uQ29scykscj1iTXQuQXJyYXkuY3JlYXRlRmlsbGVkQXJyYXkoMCx0aGlzLl9uUm93cyksbz1iTXQuQXJyYXkuY3JlYXRlRmlsbGVkQXJyYXkoITEsdGhpcy5fbkNvbHMpLGE9Yk10LkFycmF5LmNyZWF0ZUZpbGxlZEFycmF5KCExLHRoaXMuX25Sb3dzKTtyZXR1cm4gdGhpcy5fcm93cy5mb3JFYWNoKChmdW5jdGlvbihzLGwpe3MuZm9yRWFjaCgoZnVuY3Rpb24ocyxjKXt2YXIgdTt1PW51bGwhPXM/cy5yZXF1ZXN0ZWRTcGFjZSh0W2NdLGVbbF0pOnttaW5XaWR0aDowLG1pbkhlaWdodDowfTt2YXIgaD1uP01hdGgubWluKHUubWluV2lkdGgsdFtjXSk6dS5taW5XaWR0aDtpW2NdPU1hdGgubWF4KGlbY10saCk7dmFyIGQ9bj9NYXRoLm1pbih1Lm1pbkhlaWdodCxlW2xdKTp1Lm1pbkhlaWdodDtyW2xdPU1hdGgubWF4KHJbbF0sZCksb1tjXT1vW2NdfHx1Lm1pbldpZHRoPnRbY10sYVtsXT1hW2xdfHx1Lm1pbkhlaWdodD5lW2xdfSkpfSkpLHtndWFyYW50ZWVkV2lkdGhzOmksZ3VhcmFudGVlZEhlaWdodHM6cix3YW50c1dpZHRoQXJyOm8sd2FudHNIZWlnaHRBcnI6YX19LGUucHJvdG90eXBlLnJlcXVlc3RlZFNwYWNlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuX2NhbGN1bGF0ZWRMYXlvdXQ9dGhpcy5faXRlcmF0ZUxheW91dCh0LGUpLHttaW5XaWR0aDp2TXQuc3VtKHRoaXMuX2NhbGN1bGF0ZWRMYXlvdXQuZ3VhcmFudGVlZFdpZHRocyksbWluSGVpZ2h0OnZNdC5zdW0odGhpcy5fY2FsY3VsYXRlZExheW91dC5ndWFyYW50ZWVkSGVpZ2h0cyl9fSxlLnByb3RvdHlwZS5jb21wdXRlTGF5b3V0PWZ1bmN0aW9uKGUsbixpKXt2YXIgcj10aGlzO3QucHJvdG90eXBlLmNvbXB1dGVMYXlvdXQuY2FsbCh0aGlzLGUsbixpKTt2YXIgbz12TXQuc3VtKHRoaXMuX2NhbGN1bGF0ZWRMYXlvdXQuZ3VhcmFudGVlZFdpZHRocyksYT12TXQuc3VtKHRoaXMuX2NhbGN1bGF0ZWRMYXlvdXQuZ3VhcmFudGVlZEhlaWdodHMpLHM9dGhpcy5fY2FsY3VsYXRlZExheW91dDsobz50aGlzLndpZHRoKCl8fGE+dGhpcy5oZWlnaHQoKSkmJihzPXRoaXMuX2l0ZXJhdGVMYXlvdXQodGhpcy53aWR0aCgpLHRoaXMuaGVpZ2h0KCksITApKTt2YXIgbD0wLGM9Yk10LkFycmF5LmFkZChzLnJvd1Byb3BvcnRpb25hbFNwYWNlLHMuZ3VhcmFudGVlZEhlaWdodHMpLHU9Yk10LkFycmF5LmFkZChzLmNvbFByb3BvcnRpb25hbFNwYWNlLHMuZ3VhcmFudGVlZFdpZHRocyk7cmV0dXJuIHRoaXMuX3Jvd3MuZm9yRWFjaCgoZnVuY3Rpb24odCxlKXt2YXIgbj0wO3QuZm9yRWFjaCgoZnVuY3Rpb24odCxpKXtudWxsIT10JiZ0LmNvbXB1dGVMYXlvdXQoe3g6bix5Omx9LHVbaV0sY1tlXSksbis9dVtpXStyLl9jb2x1bW5QYWRkaW5nfSkpLGwrPWNbZV0rci5fcm93UGFkZGluZ30pKSx0aGlzfSxlLnByb3RvdHlwZS5yb3dQYWRkaW5nPWZ1bmN0aW9uKHQpe2lmKG51bGw9PXQpcmV0dXJuIHRoaXMuX3Jvd1BhZGRpbmc7aWYoIWJNdC5NYXRoLmlzVmFsaWROdW1iZXIodCl8fHQ8MCl0aHJvdyBFcnJvcigicm93UGFkZGluZyBtdXN0IGJlIGEgbm9uLW5lZ2F0aXZlIGZpbml0ZSB2YWx1ZSIpO3JldHVybiB0aGlzLl9yb3dQYWRkaW5nPXQsdGhpcy5yZWRyYXcoKSx0aGlzfSxlLnByb3RvdHlwZS5jb2x1bW5QYWRkaW5nPWZ1bmN0aW9uKHQpe2lmKG51bGw9PXQpcmV0dXJuIHRoaXMuX2NvbHVtblBhZGRpbmc7aWYoIWJNdC5NYXRoLmlzVmFsaWROdW1iZXIodCl8fHQ8MCl0aHJvdyBFcnJvcigiY29sdW1uUGFkZGluZyBtdXN0IGJlIGEgbm9uLW5lZ2F0aXZlIGZpbml0ZSB2YWx1ZSIpO3JldHVybiB0aGlzLl9jb2x1bW5QYWRkaW5nPXQsdGhpcy5yZWRyYXcoKSx0aGlzfSxlLnByb3RvdHlwZS5yb3dXZWlnaHQ9ZnVuY3Rpb24odCxlKXtpZihudWxsPT1lKXJldHVybiB0aGlzLl9yb3dXZWlnaHRzW3RdO2lmKCFiTXQuTWF0aC5pc1ZhbGlkTnVtYmVyKGUpfHxlPDApdGhyb3cgRXJyb3IoInJvd1dlaWdodCBtdXN0IGJlIGEgbm9uLW5lZ2F0aXZlIGZpbml0ZSB2YWx1ZSIpO3JldHVybiB0aGlzLl9yb3dXZWlnaHRzW3RdPWUsdGhpcy5yZWRyYXcoKSx0aGlzfSxlLnByb3RvdHlwZS5jb2x1bW5XZWlnaHQ9ZnVuY3Rpb24odCxlKXtpZihudWxsPT1lKXJldHVybiB0aGlzLl9jb2x1bW5XZWlnaHRzW3RdO2lmKCFiTXQuTWF0aC5pc1ZhbGlkTnVtYmVyKGUpfHxlPDApdGhyb3cgRXJyb3IoImNvbHVtbldlaWdodCBtdXN0IGJlIGEgbm9uLW5lZ2F0aXZlIGZpbml0ZSB2YWx1ZSIpO3JldHVybiB0aGlzLl9jb2x1bW5XZWlnaHRzW3RdPWUsdGhpcy5yZWRyYXcoKSx0aGlzfSxlLnByb3RvdHlwZS5maXhlZFdpZHRoPWZ1bmN0aW9uKCl7dmFyIHQ9dk10LnRyYW5zcG9zZSh0aGlzLl9yb3dzKTtyZXR1cm4gZS5fZml4ZWRTcGFjZSh0LChmdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dHx8dC5maXhlZFdpZHRoKCl9KSl9LGUucHJvdG90eXBlLmZpeGVkSGVpZ2h0PWZ1bmN0aW9uKCl7cmV0dXJuIGUuX2ZpeGVkU3BhY2UodGhpcy5fcm93cywoZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXR8fHQuZml4ZWRIZWlnaHQoKX0pKX0sZS5wcm90b3R5cGUuX3BhZFRhYmxlVG9TaXplPWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuPTA7bjx0O24rKyl7dm9pZCAwPT09dGhpcy5fcm93c1tuXSYmKHRoaXMuX3Jvd3Nbbl09W10sdGhpcy5fcm93V2VpZ2h0c1tuXT1udWxsKTtmb3IodmFyIGk9MDtpPGU7aSsrKXZvaWQgMD09PXRoaXMuX3Jvd3Nbbl1baV0mJih0aGlzLl9yb3dzW25dW2ldPW51bGwpfWZvcihpPTA7aTxlO2krKyl2b2lkIDA9PT10aGlzLl9jb2x1bW5XZWlnaHRzW2ldJiYodGhpcy5fY29sdW1uV2VpZ2h0c1tpXT1udWxsKX0sZS5fY2FsY0NvbXBvbmVudFdlaWdodHM9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB0Lm1hcCgoZnVuY3Rpb24odCxpKXtyZXR1cm4gbnVsbCE9dD90OmVbaV0ubWFwKG4pLnJlZHVjZSgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdCYmZX0pLCEwKT8wOjF9KSl9LGUuX2NhbGNQcm9wb3J0aW9uYWxTcGFjZT1mdW5jdGlvbih0LGUpe3ZhciBuPXZNdC5zdW0odCk7cmV0dXJuIDA9PT1uP2JNdC5BcnJheS5jcmVhdGVGaWxsZWRBcnJheSgwLHQubGVuZ3RoKTp0Lm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIGUqdC9ufSkpfSxlLl9maXhlZFNwYWNlPWZ1bmN0aW9uKHQsZSl7dmFyIG49ZnVuY3Rpb24odCl7cmV0dXJuIHQucmVkdWNlKChmdW5jdGlvbih0LGUpe3JldHVybiB0JiZlfSksITApfTtyZXR1cm4gbih0Lm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIG4odC5tYXAoZSkpfSkpKX0sZX0pKHl3dC5Db21wb25lbnRDb250YWluZXIpO19NdC5UYWJsZT14TXQ7dmFyIHdNdD17fTsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi9PYmplY3QuZGVmaW5lUHJvcGVydHkod010LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgU010PUJPLE1NdD0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3ZhciBlPW51bGwhPT10JiZ0LmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8dGhpcztyZXR1cm4gZS5fbWF4TGluZXM9MixlfXJldHVybiBTTXQuX19leHRlbmRzKGUsdCksZS5wcm90b3R5cGUucmVxdWVzdGVkU3BhY2U9ZnVuY3Rpb24odCxlKXt0aGlzLl93cmFwcGVyLm1heExpbmVzKHRoaXMuX21heExpbmVzKTt2YXIgbj0wPT09dGhpcy5hbmdsZSgpP3Q6ZTswPT09biYmKG49MS8wKTt2YXIgaT10aGlzLl93cmFwcGVyLndyYXAodGhpcy5fdGV4dCx0aGlzLl9tZWFzdXJlcixuKSxyPXRoaXMuX21lYXN1cmVyLm1lYXN1cmUoaS53cmFwcGVkVGV4dCk7cmV0dXJue21pbldpZHRoOigwPT09dGhpcy5hbmdsZSgpP3Iud2lkdGg6ci5oZWlnaHQpKzIqdGhpcy5wYWRkaW5nKCksbWluSGVpZ2h0OigwPT09dGhpcy5hbmdsZSgpP3IuaGVpZ2h0OnIud2lkdGgpKzIqdGhpcy5wYWRkaW5nKCl9fSxlLnByb3RvdHlwZS5tYXhMaW5lcz1mdW5jdGlvbih0KXtyZXR1cm4gMD09PWFyZ3VtZW50cy5sZW5ndGg/dGhpcy5fbWF4TGluZXM6KHRoaXMuX21heExpbmVzPXQsdGhpcy5yZWRyYXcoKSx0aGlzKX0sZX0pKE53dC5MYWJlbCk7d010LldyYXBwZWRMYWJlbD1NTXQ7dmFyIEVNdD17fTsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi9PYmplY3QuZGVmaW5lUHJvcGVydHkoRU10LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgVE10PUJPLENNdD0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3ZhciBlPXQuY2FsbCh0aGlzKXx8dGhpcztyZXR1cm4gZS5hZGRDbGFzcygieC1kcmFnLWJveC1sYXllciIpLGUuX2hhc0Nvcm5lcnM9ITEsZX1yZXR1cm4gVE10Ll9fZXh0ZW5kcyhlLHQpLGUucHJvdG90eXBlLmNvbXB1dGVMYXlvdXQ9ZnVuY3Rpb24oZSxuLGkpe3JldHVybiB0LnByb3RvdHlwZS5jb21wdXRlTGF5b3V0LmNhbGwodGhpcyxlLG4saSksdGhpcy5fc2V0Qm91bmRzKHRoaXMuYm91bmRzKCkpLHRoaXN9LGUucHJvdG90eXBlLl9zZXRCb3VuZHM9ZnVuY3Rpb24oZSl7dC5wcm90b3R5cGUuX3NldEJvdW5kcy5jYWxsKHRoaXMse3RvcExlZnQ6e3g6ZS50b3BMZWZ0LngseTowfSxib3R0b21SaWdodDp7eDplLmJvdHRvbVJpZ2h0LngseTp0aGlzLmhlaWdodCgpfX0pfSxlLnByb3RvdHlwZS5fc2V0UmVzaXphYmxlQ2xhc3Nlcz1mdW5jdGlvbih0KXt0JiZ0aGlzLmVuYWJsZWQoKT90aGlzLmFkZENsYXNzKCJ4LXJlc2l6YWJsZSIpOnRoaXMucmVtb3ZlQ2xhc3MoIngtcmVzaXphYmxlIil9LGUucHJvdG90eXBlLnlTY2FsZT1mdW5jdGlvbihlKXtpZihudWxsPT1lKXJldHVybiB0LnByb3RvdHlwZS55U2NhbGUuY2FsbCh0aGlzKTt0aHJvdyBuZXcgRXJyb3IoInlTY2FsZXMgY2Fubm90IGJlIHNldCBvbiBhbiBYRHJhZ0JveExheWVyIil9LGUucHJvdG90eXBlLnlFeHRlbnQ9ZnVuY3Rpb24oZSl7aWYobnVsbD09ZSlyZXR1cm4gdC5wcm90b3R5cGUueUV4dGVudC5jYWxsKHRoaXMpO3Rocm93IG5ldyBFcnJvcigiWERyYWdCb3hMYXllciBoYXMgbm8geUV4dGVudCIpfSxlfSkoZXh0LkRyYWdCb3hMYXllcik7RU10LlhEcmFnQm94TGF5ZXI9Q010O3ZhciBBTXQ9e307Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovT2JqZWN0LmRlZmluZVByb3BlcnR5KEFNdCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIGtNdD1CTyxMTXQ9KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXt2YXIgZT10LmNhbGwodGhpcyl8fHRoaXM7cmV0dXJuIGUuYWRkQ2xhc3MoInktZHJhZy1ib3gtbGF5ZXIiKSxlLl9oYXNDb3JuZXJzPSExLGV9cmV0dXJuIGtNdC5fX2V4dGVuZHMoZSx0KSxlLnByb3RvdHlwZS5jb21wdXRlTGF5b3V0PWZ1bmN0aW9uKGUsbixpKXtyZXR1cm4gdC5wcm90b3R5cGUuY29tcHV0ZUxheW91dC5jYWxsKHRoaXMsZSxuLGkpLHRoaXMuX3NldEJvdW5kcyh0aGlzLmJvdW5kcygpKSx0aGlzfSxlLnByb3RvdHlwZS5fc2V0Qm91bmRzPWZ1bmN0aW9uKGUpe3QucHJvdG90eXBlLl9zZXRCb3VuZHMuY2FsbCh0aGlzLHt0b3BMZWZ0Ont4OjAseTplLnRvcExlZnQueX0sYm90dG9tUmlnaHQ6e3g6dGhpcy53aWR0aCgpLHk6ZS5ib3R0b21SaWdodC55fX0pfSxlLnByb3RvdHlwZS5fc2V0UmVzaXphYmxlQ2xhc3Nlcz1mdW5jdGlvbih0KXt0JiZ0aGlzLmVuYWJsZWQoKT90aGlzLmFkZENsYXNzKCJ5LXJlc2l6YWJsZSIpOnRoaXMucmVtb3ZlQ2xhc3MoInktcmVzaXphYmxlIil9LGUucHJvdG90eXBlLnhTY2FsZT1mdW5jdGlvbihlKXtpZihudWxsPT1lKXJldHVybiB0LnByb3RvdHlwZS54U2NhbGUuY2FsbCh0aGlzKTt0aHJvdyBuZXcgRXJyb3IoInhTY2FsZXMgY2Fubm90IGJlIHNldCBvbiBhbiBZRHJhZ0JveExheWVyIil9LGUucHJvdG90eXBlLnhFeHRlbnQ9ZnVuY3Rpb24oZSl7aWYobnVsbD09ZSlyZXR1cm4gdC5wcm90b3R5cGUueEV4dGVudC5jYWxsKHRoaXMpO3Rocm93IG5ldyBFcnJvcigiWURyYWdCb3hMYXllciBoYXMgbm8geEV4dGVudCIpfSxlfSkoZXh0LkRyYWdCb3hMYXllcik7QU10LllEcmFnQm94TGF5ZXI9TE10LChmdW5jdGlvbih0KXsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi8KT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBlPUJPO2UuX19leHBvcnRTdGFyKGV4dCx0KSxlLl9fZXhwb3J0U3Rhcihud3QsdCksZS5fX2V4cG9ydFN0YXIocHd0LHQpLGUuX19leHBvcnRTdGFyKF93dCx0KSxlLl9fZXhwb3J0U3Rhcihpd3QsdCksZS5fX2V4cG9ydFN0YXIoRXd0LHQpLGUuX19leHBvcnRTdGFyKE53dCx0KSxlLl9fZXhwb3J0U3RhcihCd3QsdCksZS5fX2V4cG9ydFN0YXIoYVN0LHQpLGUuX19leHBvcnRTdGFyKCR4dCx0KSxlLl9fZXhwb3J0U3RhcihfTXQsdCksZS5fX2V4cG9ydFN0YXIod010LHQpLGUuX19leHBvcnRTdGFyKEVNdCx0KSxlLl9fZXhwb3J0U3RhcihBTXQsdCl9KSh0eHQpO3ZhciBQTXQ9e30sTk10PXt9OwovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqLwpPYmplY3QuZGVmaW5lUHJvcGVydHkoTk10LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgSU10PUJPLFJNdD0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3JldHVybiB0LmNhbGwodGhpcywicGF0aCIsImFyYyBmaWxsIil8fHRoaXN9cmV0dXJuIElNdC5fX2V4dGVuZHMoZSx0KSxlLnByb3RvdHlwZS5fYXBwbHlEZWZhdWx0QXR0cmlidXRlcz1mdW5jdGlvbih0KXt0LnN0eWxlKCJzdHJva2UiLCJub25lIil9LGV9KShxU3QuU1ZHRHJhd2VyKTtOTXQuQXJjU1ZHRHJhd2VyPVJNdDt2YXIgT010PXt9OwovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqL09iamVjdC5kZWZpbmVQcm9wZXJ0eShPTXQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciB6TXQ9Qk8sRE10PShmdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7cmV0dXJuIHQuY2FsbCh0aGlzLCJwYXRoIiwiYXJjIG91dGxpbmUiKXx8dGhpc31yZXR1cm4gek10Ll9fZXh0ZW5kcyhlLHQpLGUucHJvdG90eXBlLl9hcHBseURlZmF1bHRBdHRyaWJ1dGVzPWZ1bmN0aW9uKHQpe3Quc3R5bGUoImZpbGwiLCJub25lIil9LGV9KShxU3QuU1ZHRHJhd2VyKTtPTXQuQXJjT3V0bGluZVNWR0RyYXdlcj1ETXQ7dmFyIEJNdD17fTsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi9PYmplY3QuZGVmaW5lUHJvcGVydHkoQk10LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgSE10PUJPLEZNdD1qU3QsVk10PShmdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7cmV0dXJuIHQuY2FsbCh0aGlzLCJwYXRoIiwiYXJlYSIpfHx0aGlzfXJldHVybiBITXQuX19leHRlbmRzKGUsdCksZS5wcm90b3R5cGUuX2FwcGx5RGVmYXVsdEF0dHJpYnV0ZXM9ZnVuY3Rpb24odCl7dC5zdHlsZSgic3Ryb2tlIiwibm9uZSIpfSxlLnByb3RvdHlwZS5nZXRWaXN1YWxQcmltaXRpdmVBdEluZGV4PWZ1bmN0aW9uKGUpe3JldHVybiB0LnByb3RvdHlwZS5nZXRWaXN1YWxQcmltaXRpdmVBdEluZGV4LmNhbGwodGhpcywwKX0sZX0pKHFTdC5TVkdEcmF3ZXIpO0JNdC5BcmVhU1ZHRHJhd2VyPVZNdDt2YXIgVU10PVsib3BhY2l0eSIsImZpbGwiLCJmaWxsLW9wYWNpdHkiXSxqTXQ9WyJvcGFjaXR5Iiwic3Ryb2tlIiwic3Ryb2tlLXdpZHRoIl07Qk10Lm1ha2VBcmVhQ2FudmFzRHJhd1N0ZXA9ZnVuY3Rpb24gR010KHQsZSl7cmV0dXJuIGZ1bmN0aW9uKG4saSxyKXt2YXIgbz1GTXQucmVzb2x2ZUF0dHJpYnV0ZXMocixVTXQsaVswXSwwKTtGTXQucmVuZGVyQXJlYShuLHQoKSxpWzBdLG8pO3ZhciBhPUZNdC5yZXNvbHZlQXR0cmlidXRlcyhyLGpNdCxpWzBdLDApO0ZNdC5yZW5kZXJMaW5lKG4sZSgpLGlbMF0sYSl9fTt2YXIgV010PXt9OwovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqL09iamVjdC5kZWZpbmVQcm9wZXJ0eShXTXQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBxTXQ9Qk8sWU10PWpTdCxYTXQ9KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXtyZXR1cm4gdC5jYWxsKHRoaXMsInBhdGgiLCJsaW5lIil8fHRoaXN9cmV0dXJuIHFNdC5fX2V4dGVuZHMoZSx0KSxlLnByb3RvdHlwZS5fYXBwbHlEZWZhdWx0QXR0cmlidXRlcz1mdW5jdGlvbih0KXt0LnN0eWxlKCJmaWxsIiwibm9uZSIpfSxlLnByb3RvdHlwZS5nZXRWaXN1YWxQcmltaXRpdmVBdEluZGV4PWZ1bmN0aW9uKGUpe3JldHVybiB0LnByb3RvdHlwZS5nZXRWaXN1YWxQcmltaXRpdmVBdEluZGV4LmNhbGwodGhpcywwKX0sZX0pKHFTdC5TVkdEcmF3ZXIpO1dNdC5MaW5lU1ZHRHJhd2VyPVhNdDt2YXIgJE10PVsib3BhY2l0eSIsInN0cm9rZS1vcGFjaXR5Iiwic3Ryb2tlLXdpZHRoIiwic3Ryb2tlIiwic3Ryb2tlLWRhc2hhcnJheSJdO1dNdC5tYWtlTGluZUNhbnZhc0RyYXdTdGVwPWZ1bmN0aW9uIEtNdCh0KXtyZXR1cm4gZnVuY3Rpb24oZSxuLGkpe3ZhciByPVlNdC5yZXNvbHZlQXR0cmlidXRlcyhpLCRNdCxuWzBdLDApO1lNdC5yZW5kZXJMaW5lKGUsdCgpLG5bMF0scil9fTt2YXIgWk10PXt9OyEoZnVuY3Rpb24odCl7Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovCk9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgZT1CTyxuPWpTdCxpPShmdW5jdGlvbih0KXtmdW5jdGlvbiBuKGUpe3ZvaWQgMD09PWUmJihlPSIiKTt2YXIgbj10LmNhbGwodGhpcywicmVjdCIsIiIpfHx0aGlzO3JldHVybiBuLl9yb290Q2xhc3NOYW1lPWUsbi5fcm9vdC5jbGFzc2VkKG4uX3Jvb3RDbGFzc05hbWUsITApLG59cmV0dXJuIGUuX19leHRlbmRzKG4sdCksbn0pKHFTdC5TVkdEcmF3ZXIpO3QuUmVjdGFuZ2xlU1ZHRHJhd2VyPWk7dmFyIHI9bi5Db250ZXh0U3R5bGVBdHRycy5jb25jYXQoWyJ4IiwieSIsIndpZHRoIiwiaGVpZ2h0Il0pO3QuUmVjdGFuZ2xlQ2FudmFzRHJhd1N0ZXA9ZnVuY3Rpb24odCxlLGkpe3Quc2F2ZSgpO2Zvcih2YXIgbz1lLmxlbmd0aCxhPTA7YTxvO2ErKyl7dmFyIHM9ZVthXTtpZihudWxsIT1zKXt2YXIgbD1uLnJlc29sdmVBdHRyaWJ1dGVzKGkscixzLGEpO3QuYmVnaW5QYXRoKCksdC5yZWN0KGwueCxsLnksbC53aWR0aCxsLmhlaWdodCksbi5yZW5kZXJQYXRoV2l0aFN0eWxlKHQsbCl9fXQucmVzdG9yZSgpfTt2YXIgbz0oZnVuY3Rpb24obil7ZnVuY3Rpb24gaShlKXtyZXR1cm4gbi5jYWxsKHRoaXMsZSx0LlJlY3RhbmdsZUNhbnZhc0RyYXdTdGVwKXx8dGhpc31yZXR1cm4gZS5fX2V4dGVuZHMoaSxuKSxpfSkobi5DYW52YXNEcmF3ZXIpO3QuUmVjdGFuZ2xlQ2FudmFzRHJhd2VyPW99KShaTXQpO3ZhciBKTXQ9e307Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovT2JqZWN0LmRlZmluZVByb3BlcnR5KEpNdCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIFFNdD1CTyx0RXQ9KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXtyZXR1cm4gdC5jYWxsKHRoaXMsImxpbmUiLCIiKXx8dGhpc31yZXR1cm4gUU10Ll9fZXh0ZW5kcyhlLHQpLGV9KShxU3QuU1ZHRHJhd2VyKTtKTXQuU2VnbWVudFNWR0RyYXdlcj10RXQ7dmFyIGVFdD17fSxuRXQ9e307Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTctcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovCk9iamVjdC5kZWZpbmVQcm9wZXJ0eShuRXQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBpRXQ9KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlLG4saSl7dm9pZCAwPT09aSYmKGk9d2luZG93LmRldmljZVBpeGVsUmF0aW8pLHRoaXMuc2NyZWVuV2lkdGg9ZSx0aGlzLnNjcmVlbkhlaWdodD1uLHRoaXMuZGV2aWNlUGl4ZWxSYXRpbz1pLHRoaXMucGl4ZWxXaWR0aD1lKmksdGhpcy5waXhlbEhlaWdodD1uKmksdGhpcy5jYW52YXM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIiksdGhpcy5jdHg9dGhpcy5jYW52YXMuZ2V0Q29udGV4dCgiMmQiKSx0LnNpemVQaXhlbHModGhpcy5jdHgsZSxuLGkpfXJldHVybiB0LnNpemVQaXhlbHM9ZnVuY3Rpb24odCxlLG4saSl7dmFyIHI9dC5jYW52YXM7ci53aWR0aD1lKmksci5oZWlnaHQ9bippLHIuc3R5bGUud2lkdGg9ZSsicHgiLHIuc3R5bGUuaGVpZ2h0PW4rInB4Iix0LnNldFRyYW5zZm9ybSgxLDAsMCwxLDAsMCksdC5zY2FsZShpLGkpfSx0LnByb3RvdHlwZS5ibGl0PWZ1bmN0aW9uKHQsZSxuKXt2b2lkIDA9PT1lJiYoZT0wKSx2b2lkIDA9PT1uJiYobj0wKSx0LmRyYXdJbWFnZSh0aGlzLmNhbnZhcyxlLG4sdGhpcy5zY3JlZW5XaWR0aCx0aGlzLnNjcmVlbkhlaWdodCl9LHQucHJvdG90eXBlLmJsaXRDZW50ZXI9ZnVuY3Rpb24odCxlLG4pe3ZvaWQgMD09PWUmJihlPTApLHZvaWQgMD09PW4mJihuPTApLHRoaXMuYmxpdCh0LE1hdGguZmxvb3IoZS10aGlzLnNjcmVlbldpZHRoLzIpLE1hdGguZmxvb3Iobi10aGlzLnNjcmVlbkhlaWdodC8yKSl9LHQucHJvdG90eXBlLnJlc2l6ZT1mdW5jdGlvbihlLG4saSl7dm9pZCAwPT09aSYmKGk9ITEpO3ZhciByPXRoaXMuZGV2aWNlUGl4ZWxSYXRpbztyZXR1cm4gdGhpcy5zY3JlZW5XaWR0aD1lLHRoaXMuc2NyZWVuSGVpZ2h0PW4sdGhpcy5waXhlbFdpZHRoPWUqcix0aGlzLnBpeGVsSGVpZ2h0PW4qcix0LnNpemVQaXhlbHModGhpcy5jdHgsZSxuLHIpLGkmJnRoaXMuY3R4LnRyYW5zbGF0ZShlLzIsZS8yKSx0aGlzfSx0LnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbih0KXt2YXIgZT10aGlzLG49ZS5waXhlbFdpZHRoLGk9ZS5waXhlbEhlaWdodCxyPWUuY3R4O3JldHVybiByLnNhdmUoKSxyLnNldFRyYW5zZm9ybSgxLDAsMCwxLDAsMCksbnVsbD09dD9yLmNsZWFyUmVjdCgwLDAsbixpKTooci5maWxsU3R5bGU9dCxyLmZpbGxSZWN0KDAsMCxuLGkpKSxyLnJlc3RvcmUoKSx0aGlzfSx0LnByb3RvdHlwZS5nZXRJbWFnZURhdGE9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jdHguZ2V0SW1hZ2VEYXRhKDAsMCx0aGlzLnBpeGVsV2lkdGgsdGhpcy5waXhlbEhlaWdodCl9LHR9KSgpO25FdC5DYW52YXNCdWZmZXI9aUV0LAovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqLwpPYmplY3QuZGVmaW5lUHJvcGVydHkoZUV0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgckV0PUJPLG9FdD1qU3QsYUV0PW5FdCxzRXQ9KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXtyZXR1cm4gdC5jYWxsKHRoaXMsInBhdGgiLCJzeW1ib2wiKXx8dGhpc31yZXR1cm4gckV0Ll9fZXh0ZW5kcyhlLHQpLGV9KShxU3QuU1ZHRHJhd2VyKTtlRXQuU3ltYm9sU1ZHRHJhd2VyPXNFdDt2YXIgbEV0PW9FdC5Db250ZXh0U3R5bGVBdHRycy5jb25jYXQoWyJ4IiwieSJdKTtmdW5jdGlvbiBjRXQodCxlLG4saSxyKXtyZXR1cm4gbityPj0wJiZuLXI8PXQmJmkrcj49MCYmaS1yPD1lfWZ1bmN0aW9uIHVFdCh0LGUsbil7aWYobnVsbD09dClyZXR1cm4hMTtmb3IodmFyIGk9MDtpPG4ubGVuZ3RoO2krKyl7dmFyIHI9bltpXTtpZih0W3JdIT1lW3JdKXJldHVybiExfXJldHVybiEwfWVFdC5tYWtlU3ltYm9sQ2FudmFzRHJhd1N0ZXA9ZnVuY3Rpb24gaEV0KHQsZSxuLGkpe3ZhciByPXRoaXM7cmV0dXJuIGZ1bmN0aW9uKG8sYSxzKXtmb3IodmFyIGw9by5jYW52YXMsYz1sLmNsaWVudFdpZHRoLHU9bC5jbGllbnRIZWlnaHQsaD12b2lkIDA9PT1pP25ldyBhRXQuQ2FudmFzQnVmZmVyKDAsMCk6aSxkPWUoKSxwPW4oKSxmPW51bGwsbT1udWxsLGc9bnVsbCxfPTA7XzxhLmxlbmd0aDtfKyspe3ZhciB5PWFbX107aWYobnVsbCE9eSl7dmFyIHY9b0V0LnJlc29sdmVBdHRyaWJ1dGVzKHMsbEV0LHksXyksYj1wKHksXyx0KTtpZihjRXQoYyx1LHYueCx2LnksYikpe3ZhciB4PXVFdChmLHYsb0V0LkNvbnRleHRTdHlsZUF0dHJzKSx3PWQoeSxfLHIuX2RhdGFzZXQpO2lmKHgmJmc9PWImJm09PXcpO2Vsc2V7dmFyIFM9YitvRXQuZ2V0U3Ryb2tlV2lkdGgodikrMTsoUz5oLnNjcmVlbldpZHRofHxTPmguc2NyZWVuSGVpZ2h0KSYmaC5yZXNpemUoUyxTLCEwKSxoLmNsZWFyKCk7dmFyIE09aC5jdHg7TS5iZWdpblBhdGgoKSx3KGIpLmNvbnRleHQoTSkobnVsbCksTS5jbG9zZVBhdGgoKSxvRXQucmVuZGVyUGF0aFdpdGhTdHlsZShNLHYpLG09dyxnPWIsZj12fWguYmxpdENlbnRlcihvLHYueCx2LnkpfX19fX0sKGZ1bmN0aW9uKHQpewovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqLwpPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIGU9Qk87ZS5fX2V4cG9ydFN0YXIoTk10LHQpLGUuX19leHBvcnRTdGFyKE9NdCx0KSxlLl9fZXhwb3J0U3RhcihCTXQsdCksZS5fX2V4cG9ydFN0YXIoalN0LHQpLGUuX19leHBvcnRTdGFyKEdTdCx0KSxlLl9fZXhwb3J0U3RhcihXTXQsdCksZS5fX2V4cG9ydFN0YXIoWk10LHQpLGUuX19leHBvcnRTdGFyKEpNdCx0KSxlLl9fZXhwb3J0U3RhcihxU3QsdCksZS5fX2V4cG9ydFN0YXIoZUV0LHQpfSkoUE10KTt2YXIgZEV0PXt9LHBFdD17fSxmRXQ9e30sbUV0PXt9OwovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqLwpPYmplY3QuZGVmaW5lUHJvcGVydHkobUV0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgZ0V0PUJPLF9FdD1YdnQseUV0PURfdCx2RXQ9S1N0LGJFdD1zU3QseEV0PShmdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7dmFyIGU9dC5jYWxsKHRoaXMpfHx0aGlzO3JldHVybiBlLl9hdXRvQWRqdXN0WFNjYWxlRG9tYWluPSExLGUuX2F1dG9BZGp1c3RZU2NhbGVEb21haW49ITEsZS5fZGVmZXJyZWRSZW5kZXJpbmc9ITEsZS5fYXBwbHlEZWZlcnJlZFJlbmRlcmluZ1RyYW5zZm9ybT1mdW5jdGlvbih0LG4saSxyKXtlLl9pc0FuY2hvcmVkJiYobnVsbCE9ZS5fcmVuZGVyQXJlYSYmZS5fcmVuZGVyQXJlYS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIit0KyIsICIrbisiKSBzY2FsZSgiK2krIiwgIityKyIpIiksbnVsbCE9ZS5fY2FudmFzJiZlLl9jYW52YXMuc3R5bGUoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK3QrInB4LCAiK24rInB4KSBzY2FsZSgiK2krIiwgIityKyIpIikpfSxlLmFkZENsYXNzKCJ4eS1wbG90IiksZS5fYWRqdXN0WURvbWFpbk9uQ2hhbmdlRnJvbVhDYWxsYmFjaz1mdW5jdGlvbih0KXtyZXR1cm4gZS5fYWRqdXN0WURvbWFpbk9uQ2hhbmdlRnJvbVgoKX0sZS5fYWRqdXN0WERvbWFpbk9uQ2hhbmdlRnJvbVlDYWxsYmFjaz1mdW5jdGlvbih0KXtyZXR1cm4gZS5fYWRqdXN0WERvbWFpbk9uQ2hhbmdlRnJvbVkoKX0sZS5fcmVuZGVyQ2FsbGJhY2s9ZnVuY3Rpb24oKXtpZihlLmRlZmVycmVkUmVuZGVyaW5nKCkpe3ZhciB0PWUueCgpJiZlLngoKS5zY2FsZSxuPWUueSgpJiZlLnkoKS5zY2FsZTtlLl9kZWZlcnJlZFJlbmRlcmVyLnVwZGF0ZURvbWFpbnModCxuKX1lbHNlIGUucmVuZGVyKCl9LGUuX2RlZmVycmVkUmVuZGVyZXI9bmV3IHZFdC5EZWZlcnJlZFJlbmRlcmVyKChmdW5jdGlvbigpe3JldHVybiBlLnJlbmRlcigpfSksZS5fYXBwbHlEZWZlcnJlZFJlbmRlcmluZ1RyYW5zZm9ybSksZX1yZXR1cm4gZ0V0Ll9fZXh0ZW5kcyhlLHQpLGUucHJvdG90eXBlLnJlbmRlcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmRlZmVycmVkUmVuZGVyaW5nKCkmJnRoaXMuX2RlZmVycmVkUmVuZGVyZXIucmVzZXRUcmFuc2Zvcm1zKCksdC5wcm90b3R5cGUucmVuZGVyLmNhbGwodGhpcyl9LGUucHJvdG90eXBlLmRlZmVycmVkUmVuZGVyaW5nPWZ1bmN0aW9uKHQpe2lmKG51bGw9PXQpcmV0dXJuIHRoaXMuX2RlZmVycmVkUmVuZGVyaW5nO2lmKHQpe3ZhciBlPXRoaXMueCgpJiZ0aGlzLngoKS5zY2FsZSxuPXRoaXMueSgpJiZ0aGlzLnkoKS5zY2FsZTt0aGlzLl9kZWZlcnJlZFJlbmRlcmVyLnNldERvbWFpbnMoZSxuKX1yZXR1cm4gdGhpcy5fZGVmZXJyZWRSZW5kZXJpbmc9dCx0aGlzfSxlLnByb3RvdHlwZS54PWZ1bmN0aW9uKHQsbixpKXtpZihudWxsPT10KXJldHVybiB0aGlzLl9wcm9wZXJ0eUJpbmRpbmdzLmdldChlLl9YX0tFWSk7dGhpcy5fYmluZFByb3BlcnR5KGUuX1hfS0VZLHQsbixpKTt2YXIgcj10aGlzLndpZHRoKCk7cmV0dXJuIG51bGwhPW4mJm51bGwhPXImJm4ucmFuZ2UoWzAscl0pLHRoaXMuX2F1dG9BZGp1c3RZU2NhbGVEb21haW4mJnRoaXMuX3VwZGF0ZVlFeHRlbnRzQW5kQXV0b2RvbWFpbigpLHRoaXMucmVuZGVyKCksdGhpc30sZS5wcm90b3R5cGUueT1mdW5jdGlvbih0LG4saSl7aWYobnVsbD09dClyZXR1cm4gdGhpcy5fcHJvcGVydHlCaW5kaW5ncy5nZXQoZS5fWV9LRVkpO3RoaXMuX2JpbmRQcm9wZXJ0eShlLl9ZX0tFWSx0LG4saSk7dmFyIHI9dGhpcy5oZWlnaHQoKTtyZXR1cm4gbnVsbCE9biYmbnVsbCE9ciYmbi5yYW5nZShuIGluc3RhbmNlb2YgX0V0LkNhdGVnb3J5P1swLHJdOltyLDBdKSx0aGlzLl9hdXRvQWRqdXN0WFNjYWxlRG9tYWluJiZ0aGlzLl91cGRhdGVYRXh0ZW50c0FuZEF1dG9kb21haW4oKSx0aGlzLnJlbmRlcigpLHRoaXN9LGUucHJvdG90eXBlLl9maWx0ZXJGb3JQcm9wZXJ0eT1mdW5jdGlvbih0KXtyZXR1cm4ieCI9PT10JiZ0aGlzLl9hdXRvQWRqdXN0WFNjYWxlRG9tYWluP3RoaXMuX21ha2VGaWx0ZXJCeVByb3BlcnR5KCJ5Iik6InkiIT09dCYmInkwIiE9PXR8fCF0aGlzLl9hdXRvQWRqdXN0WVNjYWxlRG9tYWluP251bGw6dGhpcy5fbWFrZUZpbHRlckJ5UHJvcGVydHkoIngiKX0sZS5wcm90b3R5cGUuX21ha2VGaWx0ZXJCeVByb3BlcnR5PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX3Byb3BlcnR5QmluZGluZ3MuZ2V0KHQpO2lmKG51bGwhPWUpe3ZhciBuPWUuYWNjZXNzb3IsaT1lLnNjYWxlO2lmKG51bGwhPWkpcmV0dXJuIGZ1bmN0aW9uKHQsZSxyKXt2YXIgbz1pLnJhbmdlKCk7cmV0dXJuIHlFdC5NYXRoLmluUmFuZ2UoaS5zY2FsZShuKHQsZSxyKSksb1swXSxvWzFdKX19cmV0dXJuIG51bGx9LGUucHJvdG90eXBlLl91bmluc3RhbGxTY2FsZUZvcktleT1mdW5jdGlvbihuLGkpe3QucHJvdG90eXBlLl91bmluc3RhbGxTY2FsZUZvcktleS5jYWxsKHRoaXMsbixpKSxuLm9mZlVwZGF0ZShpPT09ZS5fWF9LRVk/dGhpcy5fYWRqdXN0WURvbWFpbk9uQ2hhbmdlRnJvbVhDYWxsYmFjazp0aGlzLl9hZGp1c3RYRG9tYWluT25DaGFuZ2VGcm9tWUNhbGxiYWNrKX0sZS5wcm90b3R5cGUuX2luc3RhbGxTY2FsZUZvcktleT1mdW5jdGlvbihuLGkpe3QucHJvdG90eXBlLl9pbnN0YWxsU2NhbGVGb3JLZXkuY2FsbCh0aGlzLG4saSksbi5vblVwZGF0ZShpPT09ZS5fWF9LRVk/dGhpcy5fYWRqdXN0WURvbWFpbk9uQ2hhbmdlRnJvbVhDYWxsYmFjazp0aGlzLl9hZGp1c3RYRG9tYWluT25DaGFuZ2VGcm9tWUNhbGxiYWNrKX0sZS5wcm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigpe3JldHVybiB0LnByb3RvdHlwZS5kZXN0cm95LmNhbGwodGhpcyksdGhpcy54KCkuc2NhbGUmJnRoaXMueCgpLnNjYWxlLm9mZlVwZGF0ZSh0aGlzLl9hZGp1c3RZRG9tYWluT25DaGFuZ2VGcm9tWENhbGxiYWNrKSx0aGlzLnkoKS5zY2FsZSYmdGhpcy55KCkuc2NhbGUub2ZmVXBkYXRlKHRoaXMuX2FkanVzdFhEb21haW5PbkNoYW5nZUZyb21ZQ2FsbGJhY2spLHRoaXN9LGUucHJvdG90eXBlLmF1dG9yYW5nZU1vZGU9ZnVuY3Rpb24odCl7aWYobnVsbD09dClyZXR1cm4gdGhpcy5fYXV0b0FkanVzdFhTY2FsZURvbWFpbj8ieCI6dGhpcy5fYXV0b0FkanVzdFlTY2FsZURvbWFpbj8ieSI6Im5vbmUiO3N3aXRjaCh0KXtjYXNlIngiOnRoaXMuX2F1dG9BZGp1c3RYU2NhbGVEb21haW49ITAsdGhpcy5fYXV0b0FkanVzdFlTY2FsZURvbWFpbj0hMSx0aGlzLl9hZGp1c3RYRG9tYWluT25DaGFuZ2VGcm9tWSgpO2JyZWFrO2Nhc2UieSI6dGhpcy5fYXV0b0FkanVzdFhTY2FsZURvbWFpbj0hMSx0aGlzLl9hdXRvQWRqdXN0WVNjYWxlRG9tYWluPSEwLHRoaXMuX2FkanVzdFlEb21haW5PbkNoYW5nZUZyb21YKCk7YnJlYWs7Y2FzZSJub25lIjp0aGlzLl9hdXRvQWRqdXN0WFNjYWxlRG9tYWluPSExLHRoaXMuX2F1dG9BZGp1c3RZU2NhbGVEb21haW49ITE7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgc2NhbGUgbmFtZSAnIit0KyInLCBtdXN0IGJlICd4JywgJ3knIG9yICdub25lJyIpfXJldHVybiB0aGlzfSxlLnByb3RvdHlwZS5jb21wdXRlTGF5b3V0PWZ1bmN0aW9uKGUsbixpKXt0LnByb3RvdHlwZS5jb21wdXRlTGF5b3V0LmNhbGwodGhpcyxlLG4saSk7dmFyIHI9dGhpcy54KCksbz1yJiZyLnNjYWxlO251bGwhPW8mJm8ucmFuZ2UoWzAsdGhpcy53aWR0aCgpXSk7dmFyIGE9dGhpcy55KCkscz1hJiZhLnNjYWxlO3JldHVybiBudWxsIT1zJiZzLnJhbmdlKHMgaW5zdGFuY2VvZiBfRXQuQ2F0ZWdvcnk/WzAsdGhpcy5oZWlnaHQoKV06W3RoaXMuaGVpZ2h0KCksMF0pLHRoaXN9LGUucHJvdG90eXBlLl91cGRhdGVYRXh0ZW50c0FuZEF1dG9kb21haW49ZnVuY3Rpb24oKXt2YXIgdD10aGlzLngoKS5zY2FsZTtudWxsIT10JiZ0LmF1dG9Eb21haW4oKX0sZS5wcm90b3R5cGUuX3VwZGF0ZVlFeHRlbnRzQW5kQXV0b2RvbWFpbj1mdW5jdGlvbigpe3ZhciB0PXRoaXMueSgpLnNjYWxlO251bGwhPXQmJnQuYXV0b0RvbWFpbigpfSxlLnByb3RvdHlwZS5zaG93QWxsRGF0YT1mdW5jdGlvbigpe3JldHVybiB0aGlzLl91cGRhdGVYRXh0ZW50c0FuZEF1dG9kb21haW4oKSx0aGlzLl91cGRhdGVZRXh0ZW50c0FuZEF1dG9kb21haW4oKSx0aGlzfSxlLnByb3RvdHlwZS5fYWRqdXN0WURvbWFpbk9uQ2hhbmdlRnJvbVg9ZnVuY3Rpb24oKXt0aGlzLl9wcm9qZWN0b3JzUmVhZHkoKSYmdGhpcy5fYXV0b0FkanVzdFlTY2FsZURvbWFpbiYmdGhpcy5fdXBkYXRlWUV4dGVudHNBbmRBdXRvZG9tYWluKCl9LGUucHJvdG90eXBlLl9hZGp1c3RYRG9tYWluT25DaGFuZ2VGcm9tWT1mdW5jdGlvbigpe3RoaXMuX3Byb2plY3RvcnNSZWFkeSgpJiZ0aGlzLl9hdXRvQWRqdXN0WFNjYWxlRG9tYWluJiZ0aGlzLl91cGRhdGVYRXh0ZW50c0FuZEF1dG9kb21haW4oKX0sZS5wcm90b3R5cGUuX3Byb2plY3RvcnNSZWFkeT1mdW5jdGlvbigpe3ZhciB0PXRoaXMueCgpLGU9dGhpcy55KCk7cmV0dXJuIG51bGwhPXQmJm51bGwhPXQuYWNjZXNzb3ImJm51bGwhPWUmJm51bGwhPWUuYWNjZXNzb3J9LGUucHJvdG90eXBlLl9waXhlbFBvaW50PWZ1bmN0aW9uKHQsZSxuKXt2YXIgaT1iRXQuUGxvdC5fc2NhbGVkQWNjZXNzb3IodGhpcy54KCkpLHI9YkV0LlBsb3QuX3NjYWxlZEFjY2Vzc29yKHRoaXMueSgpKTtyZXR1cm57eDppKHQsZSxuKSx5OnIodCxlLG4pfX0sZS5wcm90b3R5cGUuX2dldERhdGFUb0RyYXc9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLG49dC5wcm90b3R5cGUuX2dldERhdGFUb0RyYXcuY2FsbCh0aGlzKSxpPXRoaXMuYXR0cigiZGVmaW5lZCIpO3JldHVybiB0aGlzLmRhdGFzZXRzKCkuZm9yRWFjaCgoZnVuY3Rpb24odCl7bi5zZXQodCxuLmdldCh0KS5maWx0ZXIoKGZ1bmN0aW9uKG4scil7cmV0dXJuKGZ1bmN0aW9uKHQsbixyKXt2YXIgbz1iRXQuUGxvdC5fc2NhbGVkQWNjZXNzb3IoZS54KCkpKHQsbixyKSxhPWJFdC5QbG90Ll9zY2FsZWRBY2Nlc3NvcihlLnkoKSkodCxuLHIpO3JldHVybighaXx8ITEhPT1pLmFjY2Vzc29yKHQsbixyKSkmJnlFdC5NYXRoLmlzVmFsaWROdW1iZXIobykmJnlFdC5NYXRoLmlzVmFsaWROdW1iZXIoYSl9KShuLHIsdCl9KSkpfSkpLG59LGUuX1hfS0VZPSJ4IixlLl9ZX0tFWT0ieSIsZX0pKGJFdC5QbG90KTttRXQuWFlQbG90PXhFdCwKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi8KT2JqZWN0LmRlZmluZVByb3BlcnR5KGZFdCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIHdFdD1CTyxTRXQ9d3B0LE1FdD1mZ3QsRUV0PVBNdCxURXQ9R1N0LENFdD1XTXQsQUV0PVh2dCxrRXQ9TGJ0LExFdD1EX3QsUEV0PWRFdCxORXQ9c1N0LElFdD1tRXQsUkV0PXtsaW5lYXI6U0V0LmN1cnZlTGluZWFyLGxpbmVhckNsb3NlZDpTRXQuY3VydmVMaW5lYXJDbG9zZWQsc3RlcDpTRXQuY3VydmVTdGVwLHN0ZXBCZWZvcmU6U0V0LmN1cnZlU3RlcEJlZm9yZSxzdGVwQWZ0ZXI6U0V0LmN1cnZlU3RlcEFmdGVyLGJhc2lzOlNFdC5jdXJ2ZUJhc2lzLGJhc2lzT3BlbjpTRXQuY3VydmVCYXNpc09wZW4sYmFzaXNDbG9zZWQ6U0V0LmN1cnZlQmFzaXNDbG9zZWQsYnVuZGxlOlNFdC5jdXJ2ZUJ1bmRsZSxjYXJkaW5hbDpTRXQuY3VydmVDYXJkaW5hbCxjYXJkaW5hbE9wZW46U0V0LmN1cnZlQ2FyZGluYWxPcGVuLGNhcmRpbmFsQ2xvc2VkOlNFdC5jdXJ2ZUNhcmRpbmFsQ2xvc2VkLG1vbm90b25lOlNFdC5jdXJ2ZU1vbm90b25lWH07ZkV0LkN1cnZlTmFtZT1iZ3QubWFrZUVudW0oWyJsaW5lYXIiLCJsaW5lYXJDbG9zZWQiLCJzdGVwIiwic3RlcEJlZm9yZSIsInN0ZXBBZnRlciIsImJhc2lzIiwiYmFzaXNPcGVuIiwiYmFzaXNDbG9zZWQiLCJidW5kbGUiLCJjYXJkaW5hbCIsImNhcmRpbmFsT3BlbiIsImNhcmRpbmFsQ2xvc2VkIiwibW9ub3RvbmUiXSk7dmFyIE9FdD0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3ZhciBlPXQuY2FsbCh0aGlzKXx8dGhpcztlLl9jdXJ2ZT0ibGluZWFyIixlLl9hdXRvcmFuZ2VTbW9vdGg9ITEsZS5fY3JvcHBlZFJlbmRlcmluZ0VuYWJsZWQ9ITAsZS5fY29sbGFwc2VEZW5zZVZlcnRpY2FsTGluZXNFbmFibGVkPSExLGUuX2Rvd25zYW1wbGluZ0VuYWJsZWQ9ITEsZS5hZGRDbGFzcygibGluZS1wbG90Iik7dmFyIG49bmV3IE1FdC5FYXNpbmc7cmV0dXJuIG4uc3RlcER1cmF0aW9uKE5FdC5QbG90Ll9BTklNQVRJT05fTUFYX0RVUkFUSU9OKSxuLmVhc2luZ01vZGUoImV4cEluT3V0Iiksbi5tYXhUb3RhbER1cmF0aW9uKE5FdC5QbG90Ll9BTklNQVRJT05fTUFYX0RVUkFUSU9OKSxlLmFuaW1hdG9yKFBFdC5BbmltYXRvci5NQUlOLG4pLGUuYXR0cigic3Ryb2tlIiwobmV3IEFFdC5Db2xvcikucmFuZ2UoKVswXSksZS5hdHRyKCJzdHJva2Utd2lkdGgiLCIycHgiKSxlfXJldHVybiB3RXQuX19leHRlbmRzKGUsdCksZS5wcm90b3R5cGUueD1mdW5jdGlvbihlLG4saSl7cmV0dXJuIG51bGw9PWU/dC5wcm90b3R5cGUueC5jYWxsKHRoaXMpOih0LnByb3RvdHlwZS54LmNhbGwodGhpcyxlLG4saSksdGhpcy5fc2V0U2NhbGVTbmFwcGluZygpLHRoaXMpfSxlLnByb3RvdHlwZS55PWZ1bmN0aW9uKGUsbixpKXtyZXR1cm4gbnVsbD09ZT90LnByb3RvdHlwZS55LmNhbGwodGhpcyk6KHQucHJvdG90eXBlLnkuY2FsbCh0aGlzLGUsbixpKSx0aGlzLl9zZXRTY2FsZVNuYXBwaW5nKCksdGhpcyl9LGUucHJvdG90eXBlLmF1dG9yYW5nZU1vZGU9ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGw9PWU/dC5wcm90b3R5cGUuYXV0b3JhbmdlTW9kZS5jYWxsKHRoaXMpOih0LnByb3RvdHlwZS5hdXRvcmFuZ2VNb2RlLmNhbGwodGhpcyxlKSx0aGlzLl9zZXRTY2FsZVNuYXBwaW5nKCksdGhpcyl9LGUucHJvdG90eXBlLmF1dG9yYW5nZVNtb290aD1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9hdXRvcmFuZ2VTbW9vdGg6KHRoaXMuX2F1dG9yYW5nZVNtb290aD10LHRoaXMuX3NldFNjYWxlU25hcHBpbmcoKSx0aGlzKX0sZS5wcm90b3R5cGUuX3NldFNjYWxlU25hcHBpbmc9ZnVuY3Rpb24oKXsieCI9PT10aGlzLmF1dG9yYW5nZU1vZGUoKSYmdGhpcy54KCkmJnRoaXMueCgpLnNjYWxlJiZ0aGlzLngoKS5zY2FsZSBpbnN0YW5jZW9mIGtFdC5RdWFudGl0YXRpdmVTY2FsZSYmdGhpcy54KCkuc2NhbGUuc25hcHBpbmdEb21haW5FbmFibGVkKCF0aGlzLmF1dG9yYW5nZVNtb290aCgpKSwieSI9PT10aGlzLmF1dG9yYW5nZU1vZGUoKSYmdGhpcy55KCkmJnRoaXMueSgpLnNjYWxlJiZ0aGlzLnkoKS5zY2FsZSBpbnN0YW5jZW9mIGtFdC5RdWFudGl0YXRpdmVTY2FsZSYmdGhpcy55KCkuc2NhbGUuc25hcHBpbmdEb21haW5FbmFibGVkKCF0aGlzLmF1dG9yYW5nZVNtb290aCgpKX0sZS5wcm90b3R5cGUuY3VydmU9ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5fY3VydmU6KHRoaXMuX2N1cnZlPXQsdGhpcy5yZW5kZXIoKSx0aGlzKX0sZS5wcm90b3R5cGUuZG93bnNhbXBsaW5nRW5hYmxlZD1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9kb3duc2FtcGxpbmdFbmFibGVkOih0aGlzLl9kb3duc2FtcGxpbmdFbmFibGVkPXQsdGhpcyl9LGUucHJvdG90eXBlLmNyb3BwZWRSZW5kZXJpbmdFbmFibGVkPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuX2Nyb3BwZWRSZW5kZXJpbmdFbmFibGVkOih0aGlzLl9jcm9wcGVkUmVuZGVyaW5nRW5hYmxlZD10LHRoaXMucmVuZGVyKCksdGhpcyl9LGUucHJvdG90eXBlLmNvbGxhcHNlRGVuc2VMaW5lc0VuYWJsZWQ9ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5fY29sbGFwc2VEZW5zZVZlcnRpY2FsTGluZXNFbmFibGVkOih0aGlzLl9jb2xsYXBzZURlbnNlVmVydGljYWxMaW5lc0VuYWJsZWQ9dCx0aGlzLnJlbmRlcigpLHRoaXMpfSxlLnByb3RvdHlwZS5fY3JlYXRlRHJhd2VyPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7cmV0dXJuIG5ldyBURXQuUHJveHlEcmF3ZXIoKGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBDRXQuTGluZVNWR0RyYXdlcn0pLChmdW5jdGlvbihuKXtyZXR1cm4gbmV3IEVFdC5DYW52YXNEcmF3ZXIobixDRXQubWFrZUxpbmVDYW52YXNEcmF3U3RlcCgoZnVuY3Rpb24oKXtyZXR1cm4gZS5fZDNMaW5lRmFjdG9yeSh0KX0pKSl9KSl9LGUucHJvdG90eXBlLmdldEV4dGVudHNGb3JQcm9wZXJ0eT1mdW5jdGlvbihlKXt2YXIgbj10LnByb3RvdHlwZS5nZXRFeHRlbnRzRm9yUHJvcGVydHkuY2FsbCh0aGlzLGUpO2lmKCF0aGlzLl9hdXRvcmFuZ2VTbW9vdGgpcmV0dXJuIG47aWYodGhpcy5hdXRvcmFuZ2VNb2RlKCkhPT1lKXJldHVybiBuO2lmKCJ4IiE9PXRoaXMuYXV0b3JhbmdlTW9kZSgpJiYieSIhPT10aGlzLmF1dG9yYW5nZU1vZGUoKSlyZXR1cm4gbjt2YXIgaSxyPXRoaXMuX2dldEVkZ2VJbnRlcnNlY3Rpb25Qb2ludHMoKTtyZXR1cm4gaT0ieSI9PT10aGlzLmF1dG9yYW5nZU1vZGUoKT9yLmxlZnQuY29uY2F0KHIucmlnaHQpLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQueX0pKTpyLnRvcC5jb25jYXQoci5ib3R0b20pLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQueH0pKSxuLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIFNFdC5leHRlbnQoU0V0Lm1lcmdlKFt0LGldKSl9KSl9LGUucHJvdG90eXBlLl9nZXRFZGdlSW50ZXJzZWN0aW9uUG9pbnRzPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcztpZighKHRoaXMueSgpLnNjYWxlIGluc3RhbmNlb2Yga0V0LlF1YW50aXRhdGl2ZVNjYWxlJiZ0aGlzLngoKS5zY2FsZSBpbnN0YW5jZW9mIGtFdC5RdWFudGl0YXRpdmVTY2FsZSkpcmV0dXJue2xlZnQ6W10scmlnaHQ6W10sdG9wOltdLGJvdHRvbTpbXX07dmFyIGU9dGhpcy55KCkuc2NhbGUsbj10aGlzLngoKS5zY2FsZSxpPXtsZWZ0OltdLHJpZ2h0OltdLHRvcDpbXSxib3R0b206W119LHI9bi5zY2FsZShuLmRvbWFpbigpWzBdKSxvPW4uc2NhbGUobi5kb21haW4oKVsxXSksYT1lLnNjYWxlKGUuZG9tYWluKClbMF0pLHM9ZS5zY2FsZShlLmRvbWFpbigpWzFdKTtyZXR1cm4gdGhpcy5kYXRhc2V0cygpLmZvckVhY2goKGZ1bmN0aW9uKGwpe2Zvcih2YXIgYyx1LGgsZCxwPWwuZGF0YSgpLGY9MTtmPHAubGVuZ3RoO2YrKyljPWh8fG4uc2NhbGUodC54KCkuYWNjZXNzb3IocFtmLTFdLGYtMSxsKSksdT1kfHxlLnNjYWxlKHQueSgpLmFjY2Vzc29yKHBbZi0xXSxmLTEsbCkpLGg9bi5zY2FsZSh0LngoKS5hY2Nlc3NvcihwW2ZdLGYsbCkpLGQ9ZS5zY2FsZSh0LnkoKS5hY2Nlc3NvcihwW2ZdLGYsbCkpLGM8cj09cjw9aCYmaS5sZWZ0LnB1c2goe3g6cix5OmUuaW52ZXJ0KHUrKHItYykqKGQtdSkvKGgtYykpfSksYzxvPT1vPD1oJiZpLnJpZ2h0LnB1c2goe3g6byx5OmUuaW52ZXJ0KHUrKG8tYykqKGQtdSkvKGgtYykpfSksdTxzPT1zPD1kJiZpLnRvcC5wdXNoKHt4Om4uaW52ZXJ0KGMrKHMtdSkqKGgtYykvKGQtdSkpLHk6c30pLHU8YT09YTw9ZCYmaS5ib3R0b20ucHVzaCh7eDpuLmludmVydChjKyhhLXUpKihoLWMpLyhkLXUpKSx5OmF9KX0pKSxpfSxlLnByb3RvdHlwZS5fZ2V0UmVzZXRZRnVuY3Rpb249ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnkoKS5zY2FsZS5kb21haW4oKSxlPU1hdGgubWF4KHRbMF0sdFsxXSksbj1NYXRoLm1pbih0WzBdLHRbMV0pLGk9ZTwwJiZlfHxuPjAmJm58fDAscj10aGlzLnkoKS5zY2FsZS5zY2FsZShpKTtyZXR1cm4gZnVuY3Rpb24odCxlLG4pe3JldHVybiByfX0sZS5wcm90b3R5cGUuX2dlbmVyYXRlRHJhd1N0ZXBzPWZ1bmN0aW9uKCl7dmFyIHQ9W107aWYodGhpcy5fYW5pbWF0ZU9uTmV4dFJlbmRlcigpKXt2YXIgZT10aGlzLl9nZXRBdHRyVG9Qcm9qZWN0b3IoKTtlLmQ9dGhpcy5fY29uc3RydWN0TGluZVByb2plY3RvcihORXQuUGxvdC5fc2NhbGVkQWNjZXNzb3IodGhpcy54KCkpLHRoaXMuX2dldFJlc2V0WUZ1bmN0aW9uKCkpLHQucHVzaCh7YXR0clRvUHJvamVjdG9yOmUsYW5pbWF0b3I6dGhpcy5fZ2V0QW5pbWF0b3IoUEV0LkFuaW1hdG9yLlJFU0VUKX0pfXJldHVybiB0LnB1c2goe2F0dHJUb1Byb2plY3Rvcjp0aGlzLl9nZXRBdHRyVG9Qcm9qZWN0b3IoKSxhbmltYXRvcjp0aGlzLl9nZXRBbmltYXRvcihQRXQuQW5pbWF0b3IuTUFJTil9KSx0fSxlLnByb3RvdHlwZS5fZ2VuZXJhdGVBdHRyVG9Qcm9qZWN0b3I9ZnVuY3Rpb24oKXt2YXIgZT10LnByb3RvdHlwZS5fZ2VuZXJhdGVBdHRyVG9Qcm9qZWN0b3IuY2FsbCh0aGlzKTtyZXR1cm4gT2JqZWN0LmtleXMoZSkuZm9yRWFjaCgoZnVuY3Rpb24odCl7aWYoImQiIT09dCl7dmFyIG49ZVt0XTtlW3RdPWZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gdC5sZW5ndGg+MD9uKHRbMF0sZSxpKTpudWxsfX19KSksZX0sZS5wcm90b3R5cGUuZW50aXRpZXNBdD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmVudGl0eU5lYXJlc3RCeVhUaGVuWSh0KTtyZXR1cm4gbnVsbCE9ZT9bZV06W119LGUucHJvdG90eXBlLmVudGl0eU5lYXJlc3RCeVhUaGVuWT1mdW5jdGlvbih0KXtmb3IodmFyIGUsbj0xLzAsaT0xLzAscj10aGlzLmJvdW5kcygpLG89dGhpcy5lbnRpdGllcygpLGE9by5sZW5ndGgscz0wO3M8YTtzKyspe3ZhciBsPW9bc107aWYoTEV0Lk1hdGgud2l0aGluKGwucG9zaXRpb24scikpe3ZhciBjPU1hdGguYWJzKHQueC1sLnBvc2l0aW9uLngpLHU9TWF0aC5hYnModC55LWwucG9zaXRpb24ueSk7KGM8bnx8Yz09PW4mJnU8aSkmJihlPWwsbj1jLGk9dSl9fXJldHVybiBlfSxlLnByb3RvdHlwZS5fcHJvcGVydHlQcm9qZWN0b3JzPWZ1bmN0aW9uKCl7dmFyIGU9dC5wcm90b3R5cGUuX3Byb3BlcnR5UHJvamVjdG9ycy5jYWxsKHRoaXMpO3JldHVybiBlLmQ9dGhpcy5fY29uc3RydWN0TGluZVByb2plY3RvcihORXQuUGxvdC5fc2NhbGVkQWNjZXNzb3IodGhpcy54KCkpLE5FdC5QbG90Ll9zY2FsZWRBY2Nlc3Nvcih0aGlzLnkoKSkpLGV9LGUucHJvdG90eXBlLl9jb25zdHJ1Y3RMaW5lUHJvamVjdG9yPWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcztyZXR1cm4gZnVuY3Rpb24oaSxyLG8pe3JldHVybiBuLl9kM0xpbmVGYWN0b3J5KG8sdCxlKShpKX19LGUucHJvdG90eXBlLl9kM0xpbmVGYWN0b3J5PWZ1bmN0aW9uKHQsZSxuKXt2b2lkIDA9PT1lJiYoZT1ORXQuUGxvdC5fc2NhbGVkQWNjZXNzb3IodGhpcy54KCkpKSx2b2lkIDA9PT1uJiYobj1ORXQuUGxvdC5fc2NhbGVkQWNjZXNzb3IodGhpcy55KCkpKTtyZXR1cm4gU0V0LmxpbmUoKS54KChmdW5jdGlvbihuLGkpe3JldHVybiBlKG4saSx0KX0pKS55KChmdW5jdGlvbihlLGkpe3JldHVybiBuKGUsaSx0KX0pKS5jdXJ2ZSh0aGlzLl9nZXRDdXJ2ZUZhY3RvcnkoKSkuZGVmaW5lZCgoZnVuY3Rpb24oaSxyKXtyZXR1cm4oZnVuY3Rpb24odCxpLHIpe3ZhciBvPWUodCxpLHIpLGE9bih0LGkscik7cmV0dXJuIExFdC5NYXRoLmlzVmFsaWROdW1iZXIobykmJkxFdC5NYXRoLmlzVmFsaWROdW1iZXIoYSl9KShpLHIsdCl9KSl9LGUucHJvdG90eXBlLl9nZXRDdXJ2ZUZhY3Rvcnk9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmN1cnZlKCk7aWYoInN0cmluZyI9PXR5cGVvZiB0KXt2YXIgZT1SRXRbdF07cmV0dXJuIG51bGw9PWU/UkV0LmxpbmVhcjplfXJldHVybiB0fSxlLnByb3RvdHlwZS5fZ2V0RGF0YVRvRHJhdz1mdW5jdGlvbigpe3ZhciB0PXRoaXMsZT1uZXcgTEV0Lk1hcDtyZXR1cm4gdGhpcy5kYXRhc2V0cygpLmZvckVhY2goKGZ1bmN0aW9uKG4pe3ZhciBpPW4uZGF0YSgpO2lmKHQuX2Nyb3BwZWRSZW5kZXJpbmdFbmFibGVkfHx0Ll9kb3duc2FtcGxpbmdFbmFibGVkKXtmb3IodmFyIHI9W10sbz1pLmxlbmd0aCxhPTA7YTxvO2ErKylyW2FdPWE7dC5fY3JvcHBlZFJlbmRlcmluZ0VuYWJsZWQmJihyPXQuX2ZpbHRlckNyb3BwZWRSZW5kZXJpbmcobixyKSksdC5fZG93bnNhbXBsaW5nRW5hYmxlZCYmKHI9dC5fZmlsdGVyRG93bnNhbXBsaW5nKG4scikpLHQuX2NvbGxhcHNlRGVuc2VWZXJ0aWNhbExpbmVzRW5hYmxlZCYmKHI9dC5fZmlsdGVyRGVuc2VMaW5lcyhuLHIpKTt2YXIgcz1bXSxsPXIubGVuZ3RoO2ZvcihhPTA7YTxsO2ErKyl7c1thXT1pW3JbYV1dfWUuc2V0KG4sW3NdKX1lbHNlIGUuc2V0KG4sW2ldKX0pKSxlfSxlLnByb3RvdHlwZS5fZmlsdGVyQ3JvcHBlZFJlbmRlcmluZz1mdW5jdGlvbih0LGUpe2Zvcih2YXIgbj10aGlzLGk9TkV0LlBsb3QuX3NjYWxlZEFjY2Vzc29yKHRoaXMueCgpKSxyPU5FdC5QbG90Ll9zY2FsZWRBY2Nlc3Nvcih0aGlzLnkoKSksbz10LmRhdGEoKSxhPVtdLHM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gTEV0Lk1hdGguaW5SYW5nZSh0LDAsbi53aWR0aCgpKSYmTEV0Lk1hdGguaW5SYW5nZShlLDAsbi5oZWlnaHQoKSl9LGw9MDtsPGUubGVuZ3RoO2wrKyl7dmFyIGM9cyhpKG9bZVtsXV0sZVtsXSx0KSxyKG9bZVtsXV0sZVtsXSx0KSk7aWYoIWMmJm51bGwhPWVbbC0xXSYmbnVsbCE9b1tlW2wtMV1dKXt2YXIgdT1pKG9bZVtsLTFdXSxlW2wtMV0sdCksaD1yKG9bZVtsLTFdXSxlW2wtMV0sdCk7Yz1jfHxzKHUsaCl9aWYoIWMmJm51bGwhPWVbbCsxXSYmbnVsbCE9b1tlW2wrMV1dKXt2YXIgZD1pKG9bZVtsKzFdXSxlW2wrMV0sdCkscD1yKG9bZVtsKzFdXSxlW2wrMV0sdCk7Yz1jfHxzKGQscCl9YyYmYS5wdXNoKGVbbF0pfXJldHVybiBhfSxlLnByb3RvdHlwZS5fZmlsdGVyRG93bnNhbXBsaW5nPWZ1bmN0aW9uKHQsZSl7aWYoMD09PWUubGVuZ3RoKXJldHVybltdO2Zvcih2YXIgbj10LmRhdGEoKSxpPU5FdC5QbG90Ll9zY2FsZWRBY2Nlc3Nvcih0aGlzLngoKSkscj1ORXQuUGxvdC5fc2NhbGVkQWNjZXNzb3IodGhpcy55KCkpLG89W2VbMF1dLGE9ZnVuY3Rpb24obyxhKXt2YXIgcz1pKG5bZVtvXV0sZVtvXSx0KSxsPXIobltlW29dXSxlW29dLHQpLGM9aShuW2VbbysxXV0sZVtvKzFdLHQpLHU9cihuW2VbbysxXV0sZVtvKzFdLHQpO2lmKGE9PT0xLzApcmV0dXJuIE1hdGguZmxvb3Iocyk9PT1NYXRoLmZsb29yKGMpO3ZhciBoPWwrKGMtcykqYTtyZXR1cm4gTWF0aC5mbG9vcih1KT09PU1hdGguZmxvb3IoaCl9LHM9MDtzPGUubGVuZ3RoLTE7KXtmb3IodmFyIGw9ZVtzXSxjPWkobltlW3NdXSxlW3NdLHQpLHU9cihuW2Vbc11dLGVbc10sdCksaD1pKG5bZVtzKzFdXSxlW3MrMV0sdCksZD1yKG5bZVtzKzFdXSxlW3MrMV0sdCkscD1NYXRoLmZsb29yKGMpPT09TWF0aC5mbG9vcihoKT8xLzA6KGQtdSkvKGgtYyksZj1lW3NdLG09cD09PTEvMD91OmMsZz1mLF89bSx5PSEwO3M8ZS5sZW5ndGgtMSYmKHl8fGEocyxwKSk7KXtzKysseT0hMTt2YXIgdj1wPT09MS8wP3IobltlW3NdXSxlW3NdLHQpOmkobltlW3NdXSxlW3NdLHQpO3Y+XyYmKF89dixnPWVbc10pLHY8bSYmKG09dixmPWVbc10pfXZhciBiPWVbc107ZiE9PWwmJm8ucHVzaChmKSxnIT09ZiYmZyE9PWwmJm8ucHVzaChnKSxiIT09bCYmYiE9PWYmJmIhPT1nJiZvLnB1c2goYil9cmV0dXJuIG99LGUucHJvdG90eXBlLl9maWx0ZXJEZW5zZUxpbmVzPWZ1bmN0aW9uKHQsZSl7aWYoMD09PWUubGVuZ3RoKXJldHVybltdO3ZhciBuPXQuZGF0YSgpLGk9TkV0LlBsb3QuX3NjYWxlZEFjY2Vzc29yKHRoaXMueCgpKSxyPU5FdC5QbG90Ll9zY2FsZWRBY2Nlc3Nvcih0aGlzLnkoKSk7cmV0dXJuIHRoaXMuX2J1Y2tldEJ5WCh0LGUsKGZ1bmN0aW9uKGUpe3JldHVybiBpKG5bZV0sZSx0KX0pLChmdW5jdGlvbihlKXtyZXR1cm4gcihuW2VdLGUsdCl9KSl9LGUucHJvdG90eXBlLl9idWNrZXRCeVg9ZnVuY3Rpb24odCxlLG4saSl7Zm9yKHZhciByPVtdLG89dC5kYXRhKCksYT1udWxsLHM9ZS5sZW5ndGgsbD0wO2w8PXM7KytsKXt2YXIgYz1lW2xdO2lmKG51bGwhPW9bY10pe3ZhciB1PU1hdGguZmxvb3IobihjKSksaD1pKGMpO251bGw9PWE/YT1uZXcgTEV0LkJ1Y2tldChjLHUsaCk6YS5pc0luQnVja2V0KHUpP2EuYWRkVG9CdWNrZXQoaCxjKTooci5wdXNoLmFwcGx5KHIsYS5nZXRVbmlxdWVJbmRpY2VzKCkpLGE9bmV3IExFdC5CdWNrZXQoYyx1LGgpKX19cmV0dXJuIG51bGwhPWEmJnIucHVzaC5hcHBseShyLGEuZ2V0VW5pcXVlSW5kaWNlcygpKSxyfSxlfSkoSUV0LlhZUGxvdCk7ZkV0LkxpbmU9T0V0LAovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqLwpPYmplY3QuZGVmaW5lUHJvcGVydHkocEV0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgekV0PUJPLERFdD13cHQsQkV0PVh2dCxIRXQ9RF90LEZFdD1QTXQsVkV0PUJNdCxVRXQ9R1N0LGpFdD1XTXQsR0V0PWRFdCxXRXQ9c1N0LHFFdD0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3ZhciBlPXQuY2FsbCh0aGlzKXx8dGhpcztyZXR1cm4gZS5hZGRDbGFzcygiYXJlYS1wbG90IiksZS55MCgwKSxlLmF0dHIoImZpbGwtb3BhY2l0eSIsLjI1KSxlLmF0dHIoImZpbGwiLChuZXcgQkV0LkNvbG9yKS5yYW5nZSgpWzBdKSxlLl9saW5lRHJhd2Vycz1uZXcgSEV0Lk1hcCxlfXJldHVybiB6RXQuX19leHRlbmRzKGUsdCksZS5wcm90b3R5cGUueT1mdW5jdGlvbihuLGkpe2lmKG51bGw9PW4pcmV0dXJuIHQucHJvdG90eXBlLnkuY2FsbCh0aGlzKTtpZihudWxsPT1pP3QucHJvdG90eXBlLnkuY2FsbCh0aGlzLG4pOnQucHJvdG90eXBlLnkuY2FsbCh0aGlzLG4saSksbnVsbCE9aSl7dmFyIHI9dGhpcy55MCgpLmFjY2Vzc29yO251bGwhPXImJnRoaXMuX2JpbmRQcm9wZXJ0eShlLl9ZMF9LRVkscixpKSx0aGlzLl91cGRhdGVZU2NhbGUoKX1yZXR1cm4gdGhpc30sZS5wcm90b3R5cGUueTA9ZnVuY3Rpb24odCl7aWYobnVsbD09dClyZXR1cm4gdGhpcy5fcHJvcGVydHlCaW5kaW5ncy5nZXQoZS5fWTBfS0VZKTt2YXIgbj10aGlzLnkoKTtyZXR1cm4gdGhpcy5fYmluZFByb3BlcnR5KGUuX1kwX0tFWSx0LG4mJm4uc2NhbGUpLHRoaXMuX3VwZGF0ZVlTY2FsZSgpLHRoaXMucmVuZGVyKCksdGhpc30sZS5wcm90b3R5cGUuX29uRGF0YXNldFVwZGF0ZT1mdW5jdGlvbigpe3QucHJvdG90eXBlLl9vbkRhdGFzZXRVcGRhdGUuY2FsbCh0aGlzKSx0aGlzLl91cGRhdGVZU2NhbGUoKX0sZS5wcm90b3R5cGUuX2FkZERhdGFzZXQ9ZnVuY3Rpb24oZSl7dmFyIG49dGhpcztyZXR1cm4gdGhpcy5fbGluZURyYXdlcnMuc2V0KGUsbmV3IEZFdC5Qcm94eURyYXdlcigoZnVuY3Rpb24oKXtyZXR1cm4gbmV3IGpFdC5MaW5lU1ZHRHJhd2VyfSksKGZ1bmN0aW9uKHQpe3JldHVybiBuZXcgRkV0LkNhbnZhc0RyYXdlcih0LGpFdC5tYWtlTGluZUNhbnZhc0RyYXdTdGVwKChmdW5jdGlvbigpe3ZhciB0PVdFdC5QbG90Ll9zY2FsZWRBY2Nlc3NvcihuLngoKSksaT1XRXQuUGxvdC5fc2NhbGVkQWNjZXNzb3Iobi55KCkpO3JldHVybiBuLl9kM0xpbmVGYWN0b3J5KGUsdCxpKX0pKSl9KSkpLHQucHJvdG90eXBlLl9hZGREYXRhc2V0LmNhbGwodGhpcyxlKSx0aGlzfSxlLnByb3RvdHlwZS5fY3JlYXRlTm9kZXNGb3JEYXRhc2V0PWZ1bmN0aW9uKGUpe3QucHJvdG90eXBlLl9jcmVhdGVOb2Rlc0ZvckRhdGFzZXQuY2FsbCh0aGlzLGUpO3ZhciBuPXRoaXMuX2xpbmVEcmF3ZXJzLmdldChlKTtyZXR1cm4ic3ZnIj09PXRoaXMucmVuZGVyZXIoKT9uLnVzZVNWRyh0aGlzLl9yZW5kZXJBcmVhKTpuLnVzZUNhbnZhcyh0aGlzLl9jYW52YXMpLG59LGUucHJvdG90eXBlLl9yZW1vdmVEYXRhc2V0Tm9kZXM9ZnVuY3Rpb24oZSl7dC5wcm90b3R5cGUuX3JlbW92ZURhdGFzZXROb2Rlcy5jYWxsKHRoaXMsZSksdGhpcy5fbGluZURyYXdlcnMuZ2V0KGUpLnJlbW92ZSgpfSxlLnByb3RvdHlwZS5fYWRkaXRpb25hbFBhaW50PWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPXRoaXMuX2dlbmVyYXRlTGluZURyYXdTdGVwcygpLG49dGhpcy5fZ2V0RGF0YVRvRHJhdygpO3RoaXMuZGF0YXNldHMoKS5mb3JFYWNoKChmdW5jdGlvbihpKXt2YXIgcj1XRXQuUGxvdC5hcHBseURyYXdTdGVwcyhlLGkpO3QuX2xpbmVEcmF3ZXJzLmdldChpKS5kcmF3KG4uZ2V0KGkpLHIpfSkpfSxlLnByb3RvdHlwZS5fZ2VuZXJhdGVMaW5lRHJhd1N0ZXBzPWZ1bmN0aW9uKCl7dmFyIHQ9W107aWYodGhpcy5fYW5pbWF0ZU9uTmV4dFJlbmRlcigpKXt2YXIgZT10aGlzLl9nZW5lcmF0ZUxpbmVBdHRyVG9Qcm9qZWN0b3IoKTtlLmQ9dGhpcy5fY29uc3RydWN0TGluZVByb2plY3RvcihXRXQuUGxvdC5fc2NhbGVkQWNjZXNzb3IodGhpcy54KCkpLHRoaXMuX2dldFJlc2V0WUZ1bmN0aW9uKCkpLHQucHVzaCh7YXR0clRvUHJvamVjdG9yOmUsYW5pbWF0b3I6dGhpcy5fZ2V0QW5pbWF0b3IoR0V0LkFuaW1hdG9yLlJFU0VUKX0pfXJldHVybiB0LnB1c2goe2F0dHJUb1Byb2plY3Rvcjp0aGlzLl9nZW5lcmF0ZUxpbmVBdHRyVG9Qcm9qZWN0b3IoKSxhbmltYXRvcjp0aGlzLl9nZXRBbmltYXRvcihHRXQuQW5pbWF0b3IuTUFJTil9KSx0fSxlLnByb3RvdHlwZS5fZ2VuZXJhdGVMaW5lQXR0clRvUHJvamVjdG9yPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fZ2V0QXR0clRvUHJvamVjdG9yKCk7cmV0dXJuIHQuZD10aGlzLl9jb25zdHJ1Y3RMaW5lUHJvamVjdG9yKFdFdC5QbG90Ll9zY2FsZWRBY2Nlc3Nvcih0aGlzLngoKSksV0V0LlBsb3QuX3NjYWxlZEFjY2Vzc29yKHRoaXMueSgpKSksdH0sZS5wcm90b3R5cGUuX2NyZWF0ZURyYXdlcj1mdW5jdGlvbih0KXt2YXIgZT10aGlzO3JldHVybiBuZXcgVUV0LlByb3h5RHJhd2VyKChmdW5jdGlvbigpe3JldHVybiBuZXcgVkV0LkFyZWFTVkdEcmF3ZXJ9KSwoZnVuY3Rpb24obil7cmV0dXJuIG5ldyBGRXQuQ2FudmFzRHJhd2VyKG4sVkV0Lm1ha2VBcmVhQ2FudmFzRHJhd1N0ZXAoKGZ1bmN0aW9uKCl7dmFyIG49ZS5fY29vcmRpbmF0ZVByb2plY3RvcnMoKSxpPW5bMF0scj1uWzFdLG89blsyXSxhPWUuX2NyZWF0ZURlZmluZWRQcm9qZWN0b3IoaSxyKTtyZXR1cm4gZS5fY3JlYXRlQXJlYUdlbmVyYXRvcihpLHIsbyxhLHQpfSksKGZ1bmN0aW9uKCl7dmFyIG49ZS5fY29vcmRpbmF0ZVByb2plY3RvcnMoKSxpPW5bMF0scj1uWzFdLG89ZS5fY3JlYXRlRGVmaW5lZFByb2plY3RvcihpLHIpO3JldHVybiBlLl9jcmVhdGVUb3BMaW5lR2VuZXJhdG9yKGkscixvLHQpfSkpKX0pKX0sZS5wcm90b3R5cGUuX2dlbmVyYXRlRHJhd1N0ZXBzPWZ1bmN0aW9uKCl7dmFyIHQ9W107aWYodGhpcy5fYW5pbWF0ZU9uTmV4dFJlbmRlcigpKXt2YXIgZT10aGlzLl9nZXRBdHRyVG9Qcm9qZWN0b3IoKTtlLmQ9dGhpcy5fY29uc3RydWN0QXJlYVByb2plY3RvcihXRXQuUGxvdC5fc2NhbGVkQWNjZXNzb3IodGhpcy54KCkpLHRoaXMuX2dldFJlc2V0WUZ1bmN0aW9uKCksV0V0LlBsb3QuX3NjYWxlZEFjY2Vzc29yKHRoaXMueTAoKSkpLHQucHVzaCh7YXR0clRvUHJvamVjdG9yOmUsYW5pbWF0b3I6dGhpcy5fZ2V0QW5pbWF0b3IoR0V0LkFuaW1hdG9yLlJFU0VUKX0pfXJldHVybiB0LnB1c2goe2F0dHJUb1Byb2plY3Rvcjp0aGlzLl9nZXRBdHRyVG9Qcm9qZWN0b3IoKSxhbmltYXRvcjp0aGlzLl9nZXRBbmltYXRvcihHRXQuQW5pbWF0b3IuTUFJTil9KSx0fSxlLnByb3RvdHlwZS5fdXBkYXRlWVNjYWxlPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5nZXRFeHRlbnRzRm9yUHJvcGVydHkoInkwIiksZT1IRXQuQXJyYXkuZmxhdHRlbih0KSxuPUhFdC5BcnJheS51bmlxKGUpLGk9MT09PW4ubGVuZ3RoP25bMF06bnVsbCxyPXRoaXMueSgpLG89ciYmci5zY2FsZTtudWxsIT1vJiYobnVsbCE9dGhpcy5fY29uc3RhbnRCYXNlbGluZVZhbHVlUHJvdmlkZXImJihvLnJlbW92ZVBhZGRpbmdFeGNlcHRpb25zUHJvdmlkZXIodGhpcy5fY29uc3RhbnRCYXNlbGluZVZhbHVlUHJvdmlkZXIpLHRoaXMuX2NvbnN0YW50QmFzZWxpbmVWYWx1ZVByb3ZpZGVyPW51bGwpLG51bGwhPWkmJih0aGlzLl9jb25zdGFudEJhc2VsaW5lVmFsdWVQcm92aWRlcj1mdW5jdGlvbigpe3JldHVybltpXX0sby5hZGRQYWRkaW5nRXhjZXB0aW9uc1Byb3ZpZGVyKHRoaXMuX2NvbnN0YW50QmFzZWxpbmVWYWx1ZVByb3ZpZGVyKSkpfSxlLnByb3RvdHlwZS5fZ2V0UmVzZXRZRnVuY3Rpb249ZnVuY3Rpb24oKXtyZXR1cm4gV0V0LlBsb3QuX3NjYWxlZEFjY2Vzc29yKHRoaXMueTAoKSl9LGUucHJvdG90eXBlLl9jb29yZGluYXRlUHJvamVjdG9ycz1mdW5jdGlvbigpe3JldHVybltXRXQuUGxvdC5fc2NhbGVkQWNjZXNzb3IodGhpcy54KCkpLFdFdC5QbG90Ll9zY2FsZWRBY2Nlc3Nvcih0aGlzLnkoKSksV0V0LlBsb3QuX3NjYWxlZEFjY2Vzc29yKHRoaXMueTAoKSldfSxlLnByb3RvdHlwZS5fcHJvcGVydHlQcm9qZWN0b3JzPWZ1bmN0aW9uKCl7dmFyIGU9dC5wcm90b3R5cGUuX3Byb3BlcnR5UHJvamVjdG9ycy5jYWxsKHRoaXMpLG49dGhpcy5fY29vcmRpbmF0ZVByb2plY3RvcnMoKTtyZXR1cm4gZS5kPXRoaXMuX2NvbnN0cnVjdEFyZWFQcm9qZWN0b3IoblswXSxuWzFdLG5bMl0pLGV9LGUucHJvdG90eXBlLnNlbGVjdGlvbnM9ZnVuY3Rpb24oZSl7dmFyIG49dGhpcztpZih2b2lkIDA9PT1lJiYoZT10aGlzLmRhdGFzZXRzKCkpLCJjYW52YXMiPT09dGhpcy5yZW5kZXJlcigpKXJldHVybiBERXQuc2VsZWN0QWxsKCk7dmFyIGk9dC5wcm90b3R5cGUuc2VsZWN0aW9ucy5jYWxsKHRoaXMsZSkubm9kZXMoKTtyZXR1cm4gZS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBuLl9saW5lRHJhd2Vycy5nZXQodCl9KSkuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gbnVsbCE9dH0pKS5mb3JFYWNoKChmdW5jdGlvbih0KXtyZXR1cm4gaS5wdXNoLmFwcGx5KGksdC5nZXRWaXN1YWxQcmltaXRpdmVzKCkpfSkpLERFdC5zZWxlY3RBbGwoaSl9LGUucHJvdG90eXBlLl9jb25zdHJ1Y3RBcmVhUHJvamVjdG9yPWZ1bmN0aW9uKHQsZSxuKXt2YXIgaT10aGlzLHI9dGhpcy5fY3JlYXRlRGVmaW5lZFByb2plY3RvcihXRXQuUGxvdC5fc2NhbGVkQWNjZXNzb3IodGhpcy54KCkpLFdFdC5QbG90Ll9zY2FsZWRBY2Nlc3Nvcih0aGlzLnkoKSkpO3JldHVybiBmdW5jdGlvbihvLGEscyl7cmV0dXJuIGkuX2NyZWF0ZUFyZWFHZW5lcmF0b3IodCxlLG4scixzKShvKX19LGUucHJvdG90eXBlLl9jcmVhdGVEZWZpbmVkUHJvamVjdG9yPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKG4saSxyKXt2YXIgbz10KG4saSxyKSxhPWUobixpLHIpO3JldHVybiBIRXQuTWF0aC5pc1ZhbGlkTnVtYmVyKG8pJiZIRXQuTWF0aC5pc1ZhbGlkTnVtYmVyKGEpfX0sZS5wcm90b3R5cGUuX2NyZWF0ZUFyZWFHZW5lcmF0b3I9ZnVuY3Rpb24odCxlLG4saSxyKXt2YXIgbz10aGlzLl9nZXRDdXJ2ZUZhY3RvcnkoKTtyZXR1cm4gREV0LmFyZWEoKS54KChmdW5jdGlvbihlLG4pe3JldHVybiB0KGUsbixyKX0pKS55MSgoZnVuY3Rpb24odCxuKXtyZXR1cm4gZSh0LG4scil9KSkueTAoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIG4odCxlLHIpfSkpLmN1cnZlKG8pLmRlZmluZWQoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGkodCxlLHIpfSkpfSxlLnByb3RvdHlwZS5fY3JlYXRlVG9wTGluZUdlbmVyYXRvcj1mdW5jdGlvbih0LGUsbixpKXt2YXIgcj10aGlzLl9nZXRDdXJ2ZUZhY3RvcnkoKTtyZXR1cm4gREV0LmxpbmUoKS54KChmdW5jdGlvbihlLG4pe3JldHVybiB0KGUsbixpKX0pKS55KChmdW5jdGlvbih0LG4pe3JldHVybiBlKHQsbixpKX0pKS5jdXJ2ZShyKS5kZWZpbmVkKChmdW5jdGlvbih0LGUpe3JldHVybiBuKHQsZSxpKX0pKX0sZS5fWTBfS0VZPSJ5MCIsZX0pKGZFdC5MaW5lKTtwRXQuQXJlYT1xRXQ7dmFyIFlFdD17fTshKGZ1bmN0aW9uKHQpewovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqLwpPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIGU9Qk8sbj13cHQsaT1MZ3Qscj1mZ3Qsbz1wdnQsYT1QTXQscz1HU3QsbD1aTXQsYz1jU3QsdT1YdnQsaD1MYnQsZD1EX3QscD1iZ3QsZj1kRXQsbT1zU3QsZz1tRXQ7dC5CYXJPcmllbnRhdGlvbj1wLm1ha2VFbnVtKFsidmVydGljYWwiLCJob3Jpem9udGFsIl0pLHQuTGFiZWxzUG9zaXRpb249cC5tYWtlRW51bShbInN0YXJ0IiwibWlkZGxlIiwiZW5kIiwib3V0c2lkZSJdKSx0LkJhckFsaWdubWVudD1wLm1ha2VFbnVtKFsic3RhcnQiLCJtaWRkbGUiLCJlbmQiXSk7dmFyIF89KGZ1bmN0aW9uKHApe2Z1bmN0aW9uIGcoZSl7dm9pZCAwPT09ZSYmKGU9InZlcnRpY2FsIik7dmFyIG49cC5jYWxsKHRoaXMpfHx0aGlzO2lmKG4uX2xhYmVsRm9ybWF0dGVyPW8uaWRlbnRpdHkoKSxuLl9sYWJlbHNFbmFibGVkPSExLG4uX2xhYmVsc1Bvc2l0aW9uPXQuTGFiZWxzUG9zaXRpb24uZW5kLG4uX2hpZGVCYXJzSWZBbnlBcmVUb29XaWRlPSEwLG4uX2JhckFsaWdubWVudD0ibWlkZGxlIixuLl9jb21wdXRlQmFyUGl4ZWxUaGlja25lc3M9Yy5tZW1vaXplKHkpLG4uX2ZpeGVkQmFyUGl4ZWxUaGlja25lc3M9ITAsbi5hZGRDbGFzcygiYmFyLXBsb3QiKSwidmVydGljYWwiIT09ZSYmImhvcml6b250YWwiIT09ZSl0aHJvdyBuZXcgRXJyb3IoZSsiIGlzIG5vdCBhIHZhbGlkIG9yaWVudGF0aW9uIGZvciBQbG90cy5CYXIiKTtyZXR1cm4gbi5faXNWZXJ0aWNhbD0idmVydGljYWwiPT09ZSxuLmFuaW1hdG9yKCJiYXNlbGluZSIsbmV3IHIuTnVsbCksbi5hdHRyKCJmaWxsIiwobmV3IHUuQ29sb3IpLnJhbmdlKClbMF0pLG4uYXR0cihnLl9CQVJfVEhJQ0tORVNTX0tFWSwoZnVuY3Rpb24oKXtyZXR1cm4gbi5fYmFyUGl4ZWxUaGlja25lc3MoKX0pKSxuLl9sYWJlbENvbmZpZz1uZXcgZC5NYXAsbi5fYmFzZWxpbmVWYWx1ZVByb3ZpZGVyPWZ1bmN0aW9uKCl7cmV0dXJuW24uYmFzZWxpbmVWYWx1ZSgpXX0sbn1yZXR1cm4gZS5fX2V4dGVuZHMoZyxwKSxnLnByb3RvdHlwZS5jb21wdXRlTGF5b3V0PWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gcC5wcm90b3R5cGUuY29tcHV0ZUxheW91dC5jYWxsKHRoaXMsdCxlLG4pLHRoaXMuX3VwZGF0ZUV4dGVudHMoKSx0aGlzfSxnLnByb3RvdHlwZS54PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIG51bGw9PXQ/cC5wcm90b3R5cGUueC5jYWxsKHRoaXMpOihudWxsPT1lP3AucHJvdG90eXBlLnguY2FsbCh0aGlzLHQpOnAucHJvdG90eXBlLnguY2FsbCh0aGlzLHQsZSksdGhpcy5fdXBkYXRlVGhpY2tuZXNzQXR0cigpLHRoaXMuX3VwZGF0ZUxlbmd0aFNjYWxlKCksdGhpcyl9LGcucHJvdG90eXBlLnk9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbnVsbD09dD9wLnByb3RvdHlwZS55LmNhbGwodGhpcyk6KG51bGw9PWU/cC5wcm90b3R5cGUueS5jYWxsKHRoaXMsdCk6cC5wcm90b3R5cGUueS5jYWxsKHRoaXMsdCxlKSx0aGlzLl91cGRhdGVMZW5ndGhTY2FsZSgpLHRoaXMpfSxnLnByb3RvdHlwZS5sZW5ndGg9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5faXNWZXJ0aWNhbD90aGlzLnkoKTp0aGlzLngoKX0sZy5wcm90b3R5cGUucG9zaXRpb249ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5faXNWZXJ0aWNhbD90aGlzLngoKTp0aGlzLnkoKX0sZy5wcm90b3R5cGUuYmFyRW5kPWZ1bmN0aW9uKHQpe2lmKG51bGw9PXQpcmV0dXJuIHRoaXMuX3Byb3BlcnR5QmluZGluZ3MuZ2V0KGcuX0JBUl9FTkRfS0VZKTt2YXIgZT10aGlzLnBvc2l0aW9uKCk7cmV0dXJuIHRoaXMuX2JpbmRQcm9wZXJ0eShnLl9CQVJfRU5EX0tFWSx0LGUmJmUuc2NhbGUpLHRoaXMuX3VwZGF0ZVRoaWNrbmVzc0F0dHIoKSx0aGlzLl91cGRhdGVMZW5ndGhTY2FsZSgpLHRoaXMucmVuZGVyKCksdGhpc30sZy5wcm90b3R5cGUuYmFyQWxpZ25tZW50PWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuX2JhckFsaWdubWVudDoodGhpcy5fYmFyQWxpZ25tZW50PXQsdGhpcy5fY2xlYXJBdHRyVG9Qcm9qZWN0b3JDYWNoZSgpLHRoaXMucmVuZGVyKCksdGhpcyl9LGcucHJvdG90eXBlLm9yaWVudGF0aW9uPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2lzVmVydGljYWw/InZlcnRpY2FsIjoiaG9yaXpvbnRhbCJ9LGcucHJvdG90eXBlLl9jcmVhdGVEcmF3ZXI9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IHMuUHJveHlEcmF3ZXIoKGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBsLlJlY3RhbmdsZVNWR0RyYXdlcihnLl9CQVJfQVJFQV9DTEFTUyl9KSwoZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBhLlJlY3RhbmdsZUNhbnZhc0RyYXdlcih0KX0pKX0sZy5wcm90b3R5cGUuX3NldHVwPWZ1bmN0aW9uKCl7cC5wcm90b3R5cGUuX3NldHVwLmNhbGwodGhpcyksdGhpcy5fYmFzZWxpbmU9dGhpcy5fcmVuZGVyQXJlYS5hcHBlbmQoImxpbmUiKS5jbGFzc2VkKCJiYXNlbGluZSIsITApfSxnLnByb3RvdHlwZS5iYXNlbGluZVZhbHVlPWZ1bmN0aW9uKHQpe2lmKG51bGw9PXQpe2lmKG51bGwhPXRoaXMuX2Jhc2VsaW5lVmFsdWUpcmV0dXJuIHRoaXMuX2Jhc2VsaW5lVmFsdWU7aWYoIXRoaXMuX3Byb2plY3RvcnNSZWFkeSgpKXJldHVybiAwO3ZhciBlPXRoaXMubGVuZ3RoKCkuc2NhbGU7cmV0dXJuIGUmJmUgaW5zdGFuY2VvZiB1LlRpbWU/bmV3IERhdGUoMCk6MH1yZXR1cm4gdGhpcy5fYmFzZWxpbmVWYWx1ZT10LHRoaXMuX3VwZGF0ZUxlbmd0aFNjYWxlKCksdGhpcy5fY2xlYXJBdHRyVG9Qcm9qZWN0b3JDYWNoZSgpLHRoaXMucmVuZGVyKCksdGhpc30sZy5wcm90b3R5cGUuYWRkRGF0YXNldD1mdW5jdGlvbih0KXtyZXR1cm4gcC5wcm90b3R5cGUuYWRkRGF0YXNldC5jYWxsKHRoaXMsdCksdGhpc30sZy5wcm90b3R5cGUuX2FkZERhdGFzZXQ9ZnVuY3Rpb24odCl7cmV0dXJuIHAucHJvdG90eXBlLl9hZGREYXRhc2V0LmNhbGwodGhpcyx0KSx0aGlzfSxnLnByb3RvdHlwZS5yZW1vdmVEYXRhc2V0PWZ1bmN0aW9uKHQpe3JldHVybiBwLnByb3RvdHlwZS5yZW1vdmVEYXRhc2V0LmNhbGwodGhpcyx0KSx0aGlzfSxnLnByb3RvdHlwZS5fcmVtb3ZlRGF0YXNldD1mdW5jdGlvbih0KXtyZXR1cm4gcC5wcm90b3R5cGUuX3JlbW92ZURhdGFzZXQuY2FsbCh0aGlzLHQpLHRoaXN9LGcucHJvdG90eXBlLmRhdGFzZXRzPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3AucHJvdG90eXBlLmRhdGFzZXRzLmNhbGwodGhpcyk6KHAucHJvdG90eXBlLmRhdGFzZXRzLmNhbGwodGhpcyx0KSx0aGlzKX0sZy5wcm90b3R5cGUubGFiZWxzRW5hYmxlZD1mdW5jdGlvbih0LGUpe3JldHVybiBudWxsPT10P3RoaXMuX2xhYmVsc0VuYWJsZWQ6KHRoaXMuX2xhYmVsc0VuYWJsZWQ9dCxudWxsIT1lJiYodGhpcy5fbGFiZWxzUG9zaXRpb249ZSksdGhpcy5fY2xlYXJBdHRyVG9Qcm9qZWN0b3JDYWNoZSgpLHRoaXMucmVuZGVyKCksdGhpcyl9LGcucHJvdG90eXBlLmxhYmVsRm9ybWF0dGVyPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuX2xhYmVsRm9ybWF0dGVyOih0aGlzLl9sYWJlbEZvcm1hdHRlcj10LHRoaXMuX2NsZWFyQXR0clRvUHJvamVjdG9yQ2FjaGUoKSx0aGlzLnJlbmRlcigpLHRoaXMpfSxnLnByb3RvdHlwZS5fY3JlYXRlTm9kZXNGb3JEYXRhc2V0PWZ1bmN0aW9uKHQpe3ZhciBlPXAucHJvdG90eXBlLl9jcmVhdGVOb2Rlc0ZvckRhdGFzZXQuY2FsbCh0aGlzLHQpLG49dGhpcy5fcmVuZGVyQXJlYS5hcHBlbmQoImciKS5jbGFzc2VkKGcuX0xBQkVMX0FSRUFfQ0xBU1MsITApLHI9bmV3IGkuU3ZnQ29udGV4dChuLm5vZGUoKSksbz1uZXcgaS5DYWNoZU1lYXN1cmVyKHIpLGE9bmV3IGkuV3JpdGVyKG8scik7cmV0dXJuIHRoaXMuX2xhYmVsQ29uZmlnLnNldCh0LHtsYWJlbEFyZWE6bixtZWFzdXJlcjpvLHdyaXRlcjphfSksZX0sZy5wcm90b3R5cGUuX3JlbW92ZURhdGFzZXROb2Rlcz1mdW5jdGlvbih0KXtwLnByb3RvdHlwZS5fcmVtb3ZlRGF0YXNldE5vZGVzLmNhbGwodGhpcyx0KTt2YXIgZT10aGlzLl9sYWJlbENvbmZpZy5nZXQodCk7bnVsbCE9ZSYmKGUubGFiZWxBcmVhLnJlbW92ZSgpLHRoaXMuX2xhYmVsQ29uZmlnLmRlbGV0ZSh0KSl9LGcucHJvdG90eXBlLmVudGl0eU5lYXJlc3Q9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxuPWZ1bmN0aW9uKCl7dmFyIG49ZS5faXNWZXJ0aWNhbD9lLl9nZXRFbnRpdHlTdG9yZSgpLmVudGl0eU5lYXJlc3RYKHQpOmUuX2dldEVudGl0eVN0b3JlKCkuZW50aXR5TmVhcmVzdFkodCk7cmV0dXJuIHZvaWQgMD09PW4/dm9pZCAwOmUuX2xpZ2h0d2VpZ2h0UGxvdEVudGl0eVRvUGxvdEVudGl0eShuKX07cmV0dXJuIHRoaXMuX2ZpeGVkQmFyUGl4ZWxUaGlja25lc3M/dGhpcy5fY29tcHV0ZUJhclBpeGVsVGhpY2tuZXNzLmRvTG9ja2VkKG4pOm4oKX0sZy5wcm90b3R5cGUuZW50aXRpZXNBdD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLG49ZnVuY3Rpb24oKXtyZXR1cm4gZS5fZW50aXRpZXNJbnRlcnNlY3RpbmcodC54LHQueSl9O3JldHVybiB0aGlzLl9maXhlZEJhclBpeGVsVGhpY2tuZXNzP3RoaXMuX2NvbXB1dGVCYXJQaXhlbFRoaWNrbmVzcy5kb0xvY2tlZChuKTpuKCl9LGcucHJvdG90eXBlLmVudGl0aWVzSW5Cb3VuZHM9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxuPWZ1bmN0aW9uKCl7cmV0dXJuIHAucHJvdG90eXBlLmVudGl0aWVzSW5Cb3VuZHMuY2FsbChlLHQpfTtyZXR1cm4gdGhpcy5fZml4ZWRCYXJQaXhlbFRoaWNrbmVzcz90aGlzLl9jb21wdXRlQmFyUGl4ZWxUaGlja25lc3MuZG9Mb2NrZWQobik6bigpfSxnLnByb3RvdHlwZS5lbnRpdGllc0luWEJvdW5kcz1mdW5jdGlvbih0KXt2YXIgZT10aGlzLG49ZnVuY3Rpb24oKXtyZXR1cm4gcC5wcm90b3R5cGUuZW50aXRpZXNJblhCb3VuZHMuY2FsbChlLHQpfTtyZXR1cm4gdGhpcy5fZml4ZWRCYXJQaXhlbFRoaWNrbmVzcz90aGlzLl9jb21wdXRlQmFyUGl4ZWxUaGlja25lc3MuZG9Mb2NrZWQobik6bigpfSxnLnByb3RvdHlwZS5lbnRpdGllc0luWUJvdW5kcz1mdW5jdGlvbih0KXt2YXIgZT10aGlzLG49ZnVuY3Rpb24oKXtyZXR1cm4gcC5wcm90b3R5cGUuZW50aXRpZXNJbllCb3VuZHMuY2FsbChlLHQpfTtyZXR1cm4gdGhpcy5fZml4ZWRCYXJQaXhlbFRoaWNrbmVzcz90aGlzLl9jb21wdXRlQmFyUGl4ZWxUaGlja25lc3MuZG9Mb2NrZWQobik6bigpfSxnLnByb3RvdHlwZS5fZW50aXRpZXNJbnRlcnNlY3Rpbmc9ZnVuY3Rpb24odCxlKXtmb3IodmFyIG49W10saT10aGlzLl9nZXRFbnRpdHlTdG9yZSgpLmVudGl0aWVzKCkscj1pLmxlbmd0aCxvPTA7bzxyO28rKyl7dmFyIGE9aVtvXTtkLkRPTS5pbnRlcnNlY3RzQkJveCh0LGUsdGhpcy5fZW50aXR5Qm91bmRzKGEpKSYmbi5wdXNoKHRoaXMuX2xpZ2h0d2VpZ2h0UGxvdEVudGl0eVRvUGxvdEVudGl0eShhKSl9cmV0dXJuIG59LGcucHJvdG90eXBlLl91cGRhdGVMZW5ndGhTY2FsZT1mdW5jdGlvbigpe2lmKHRoaXMuX3Byb2plY3RvcnNSZWFkeSgpKXt2YXIgdD10aGlzLmxlbmd0aCgpLnNjYWxlO3QgaW5zdGFuY2VvZiBoLlF1YW50aXRhdGl2ZVNjYWxlJiYodC5hZGRQYWRkaW5nRXhjZXB0aW9uc1Byb3ZpZGVyKHRoaXMuX2Jhc2VsaW5lVmFsdWVQcm92aWRlciksdC5hZGRJbmNsdWRlZFZhbHVlc1Byb3ZpZGVyKHRoaXMuX2Jhc2VsaW5lVmFsdWVQcm92aWRlcikpfX0sZy5wcm90b3R5cGUucmVuZGVySW1tZWRpYXRlbHk9ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3JldHVybiB0aGlzLl9iYXJQaXhlbFRoaWNrbmVzcygpLHRoaXMuX2NvbXB1dGVCYXJQaXhlbFRoaWNrbmVzcy5kb0xvY2tlZCgoZnVuY3Rpb24oKXtyZXR1cm4gcC5wcm90b3R5cGUucmVuZGVySW1tZWRpYXRlbHkuY2FsbCh0KX0pKX0sZy5wcm90b3R5cGUuX2FkZGl0aW9uYWxQYWludD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLG49dGhpcy5sZW5ndGgoKS5zY2FsZS5zY2FsZSh0aGlzLmJhc2VsaW5lVmFsdWUoKSksaT17eDE6dGhpcy5faXNWZXJ0aWNhbD8wOm4seTE6dGhpcy5faXNWZXJ0aWNhbD9uOjAseDI6dGhpcy5faXNWZXJ0aWNhbD90aGlzLndpZHRoKCk6bix5Mjp0aGlzLl9pc1ZlcnRpY2FsP246dGhpcy5oZWlnaHQoKX07dGhpcy5fZ2V0QW5pbWF0b3IoImJhc2VsaW5lIikuYW5pbWF0ZSh0aGlzLl9iYXNlbGluZSxpKSx0aGlzLmRhdGFzZXRzKCkuZm9yRWFjaCgoZnVuY3Rpb24odCl7cmV0dXJuIGUuX2xhYmVsQ29uZmlnLmdldCh0KS5sYWJlbEFyZWEuc2VsZWN0QWxsKCJnIikucmVtb3ZlKCl9KSksdGhpcy5fbGFiZWxzRW5hYmxlZCYmZC5XaW5kb3cuc2V0VGltZW91dCgoZnVuY3Rpb24oKXtyZXR1cm4gZS5fZHJhd0xhYmVscygpfSksdCl9LGcucHJvdG90eXBlLmdldEV4dGVudHNGb3JQcm9wZXJ0eT1mdW5jdGlvbih0KXt2YXIgZSxpPXRoaXMscj1wLnByb3RvdHlwZS5nZXRFeHRlbnRzRm9yUHJvcGVydHkuY2FsbCh0aGlzLHQpO2lmKCJ4Ij09PXQmJnRoaXMuX2lzVmVydGljYWwpZT10aGlzLngoKTtlbHNle2lmKCJ5IiE9PXR8fHRoaXMuX2lzVmVydGljYWwpcmV0dXJuIHI7ZT10aGlzLnkoKX1pZighKGUmJmUuc2NhbGUmJmUuc2NhbGUgaW5zdGFuY2VvZiBoLlF1YW50aXRhdGl2ZVNjYWxlKSlyZXR1cm4gcjt2YXIgbz1lLnNjYWxlLGE9dGhpcy5fYmFyUGl4ZWxUaGlja25lc3MoKTtyZXR1cm4gcj1yLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIG4uZXh0ZW50KFtvLmludmVydChpLl9nZXRQb3NpdGlvbkF0dHIoby5zY2FsZSh0WzBdKSxhKSksby5pbnZlcnQoaS5fZ2V0UG9zaXRpb25BdHRyKG8uc2NhbGUodFswXSksYSkrYSksby5pbnZlcnQoaS5fZ2V0UG9zaXRpb25BdHRyKG8uc2NhbGUodFsxXSksYSkpLG8uaW52ZXJ0KGkuX2dldFBvc2l0aW9uQXR0cihvLnNjYWxlKHRbMV0pLGEpK2EpXSl9KSl9LGcucHJvdG90eXBlLl9nZXRQb3NpdGlvbkF0dHI9ZnVuY3Rpb24odCxlKXtzd2l0Y2godGhpcy5faXNWZXJ0aWNhbHx8KHQtPWUsZSo9LTEpLHRoaXMuX2JhckFsaWdubWVudCl7Y2FzZSJzdGFydCI6cmV0dXJuIHQ7Y2FzZSJlbmQiOnJldHVybiB0LWU7Y2FzZSJtaWRkbGUiOmRlZmF1bHQ6cmV0dXJuIHQtZS8yfX0sZy5wcm90b3R5cGUuX2RyYXdMYWJlbHM9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dGhpcy5fZ2V0RGF0YVRvRHJhdygpLG49dGhpcy5fZ2V0QXR0clRvUHJvamVjdG9yKCksaT10aGlzLmRhdGFzZXRzKCkuc29tZSgoZnVuY3Rpb24oaSl7cmV0dXJuIGUuZ2V0KGkpLnNvbWUoKGZ1bmN0aW9uKGUscil7cmV0dXJuIG51bGwhPWUmJnQuX2RyYXdMYWJlbChlLHIsaSxuKX0pKX0pKTt0aGlzLl9oaWRlQmFyc0lmQW55QXJlVG9vV2lkZSYmaSYmdGhpcy5kYXRhc2V0cygpLmZvckVhY2goKGZ1bmN0aW9uKGUpe3JldHVybiB0Ll9sYWJlbENvbmZpZy5nZXQoZSkubGFiZWxBcmVhLnNlbGVjdEFsbCgiZyIpLnJlbW92ZSgpfSkpfSxnLnByb3RvdHlwZS5fZHJhd0xhYmVsPWZ1bmN0aW9uKHQsZSxuLGkpe3ZhciByPXRoaXMuX2xhYmVsQ29uZmlnLmdldChuKSxvPXIubGFiZWxBcmVhLGE9ci5tZWFzdXJlcixzPXIud3JpdGVyLGw9KDAsdGhpcy5sZW5ndGgoKS5hY2Nlc3NvcikodCxlLG4pLGM9dGhpcy5sZW5ndGgoKS5zY2FsZSx1PW51bGwhPWM/Yy5zY2FsZShsKTpsLGg9bnVsbCE9Yz9jLnNjYWxlKHRoaXMuYmFzZWxpbmVWYWx1ZSgpKTp0aGlzLmJhc2VsaW5lVmFsdWUoKSxkPXt4OmkueCh0LGUsbikseTppLnkodCxlLG4pfSxwPXt3aWR0aDppLndpZHRoKHQsZSxuKSxoZWlnaHQ6aS5oZWlnaHQodCxlLG4pfSxmPXRoaXMuX2xhYmVsRm9ybWF0dGVyKGwsdCxlLG4pLG09YS5tZWFzdXJlKGYpLGc9dGhpcy5fc2hvdWxkU2hvd0xhYmVsT25CYXIoZCxwLG0pLF89dGhpcy5fY2FsY3VsYXRlTGFiZWxQcm9wZXJ0aWVzKGQscCxtLGcsdGhpcy5faXNWZXJ0aWNhbD91PD1oOnU8aCkseT1fLmNvbnRhaW5lckRpbWVuc2lvbnMsdj1fLmxhYmVsQ29udGFpbmVyT3JpZ2luLGI9Xy5sYWJlbE9yaWdpbix4PV8uYWxpZ25tZW50LHc9aS5maWxsKHQsZSxuKSxTPXRoaXMuX2NyZWF0ZUxhYmVsQ29udGFpbmVyKG8sdixiLG0sZyx3KTtyZXR1cm4gcy53cml0ZShmLHkud2lkdGgseS5oZWlnaHQse3hBbGlnbjp4LngseUFsaWduOngueX0sUy5ub2RlKCkpLHRoaXMuX2lzVmVydGljYWw/cC53aWR0aDxtLndpZHRoOnAuaGVpZ2h0PG0uaGVpZ2h0fSxnLnByb3RvdHlwZS5fc2hvdWxkU2hvd0xhYmVsT25CYXI9ZnVuY3Rpb24oZSxuLGkpe2lmKHRoaXMuX2xhYmVsc1Bvc2l0aW9uPT09dC5MYWJlbHNQb3NpdGlvbi5vdXRzaWRlKXJldHVybiExO3ZhciByPXRoaXMuX2lzVmVydGljYWw/ZS55OmUueCxvPXRoaXMuX2lzVmVydGljYWw/bi5oZWlnaHQ6bi53aWR0aCxhPXRoaXMuX2lzVmVydGljYWw/dGhpcy5oZWlnaHQoKTp0aGlzLndpZHRoKCkscz1yK28sbD1vO3JldHVybiBzPmE/bD1hLXI6cjwwJiYobD1zKSwodGhpcy5faXNWZXJ0aWNhbD9pLmhlaWdodDppLndpZHRoKStnLl9MQUJFTF9NQVJHSU5fSU5TSURFX0JBUjw9bH0sZy5wcm90b3R5cGUuX2NhbGN1bGF0ZUxhYmVsUHJvcGVydGllcz1mdW5jdGlvbihlLG4saSxyLG8pe3ZhciBhPXRoaXMscz10aGlzLl9pc1ZlcnRpY2FsP2UueTplLngsbD10aGlzLl9pc1ZlcnRpY2FsP24uaGVpZ2h0Om4ud2lkdGgsYz10aGlzLl9pc1ZlcnRpY2FsP2kuaGVpZ2h0Omkud2lkdGgsdT0iY2VudGVyIixoPWwsZD1zLHA9cyxmPWZ1bmN0aW9uKHQpe3N3aXRjaCh0KXtjYXNlInRvcExlZnQiOnJldHVybiB1PWEuX2lzVmVydGljYWw/InRvcCI6ImxlZnQiLGQrPWcuX0xBQkVMX01BUkdJTl9JTlNJREVfQkFSLHZvaWQocCs9Zy5fTEFCRUxfTUFSR0lOX0lOU0lERV9CQVIpO2Nhc2UiY2VudGVyIjpyZXR1cm4gdm9pZChwKz0obCtjKS8yKTtjYXNlImJvdHRvbVJpZ2h0IjpyZXR1cm4gdT1hLl9pc1ZlcnRpY2FsPyJib3R0b20iOiJyaWdodCIsZC09Zy5fTEFCRUxfTUFSR0lOX0lOU0lERV9CQVIsdm9pZChwKz1oLWcuX0xBQkVMX01BUkdJTl9JTlNJREVfQkFSLWMpfX07aWYocilzd2l0Y2godGhpcy5fbGFiZWxzUG9zaXRpb24pe2Nhc2UgdC5MYWJlbHNQb3NpdGlvbi5zdGFydDpmKG8/ImJvdHRvbVJpZ2h0IjoidG9wTGVmdCIpO2JyZWFrO2Nhc2UgdC5MYWJlbHNQb3NpdGlvbi5taWRkbGU6ZigiY2VudGVyIik7YnJlYWs7Y2FzZSB0LkxhYmVsc1Bvc2l0aW9uLmVuZDpmKG8/InRvcExlZnQiOiJib3R0b21SaWdodCIpfWVsc2Ugbz8odT10aGlzLl9pc1ZlcnRpY2FsPyJ0b3AiOiJsZWZ0IixoPWwrZy5fTEFCRUxfTUFSR0lOX0lOU0lERV9CQVIrYyxkLT1nLl9MQUJFTF9NQVJHSU5fSU5TSURFX0JBUitjLHAtPWcuX0xBQkVMX01BUkdJTl9JTlNJREVfQkFSK2MpOih1PXRoaXMuX2lzVmVydGljYWw/ImJvdHRvbSI6InJpZ2h0IixoPWwrZy5fTEFCRUxfTUFSR0lOX0lOU0lERV9CQVIrYyxwKz1sK2cuX0xBQkVMX01BUkdJTl9JTlNJREVfQkFSKTtyZXR1cm57Y29udGFpbmVyRGltZW5zaW9uczp7d2lkdGg6dGhpcy5faXNWZXJ0aWNhbD9uLndpZHRoOmgsaGVpZ2h0OnRoaXMuX2lzVmVydGljYWw/aDpuLmhlaWdodH0sbGFiZWxDb250YWluZXJPcmlnaW46e3g6dGhpcy5faXNWZXJ0aWNhbD9lLng6ZCx5OnRoaXMuX2lzVmVydGljYWw/ZDplLnl9LGxhYmVsT3JpZ2luOnt4OnRoaXMuX2lzVmVydGljYWw/ZS54K24ud2lkdGgvMi1pLndpZHRoLzI6cCx5OnRoaXMuX2lzVmVydGljYWw/cDplLnkrbi5oZWlnaHQvMi1pLmhlaWdodC8yfSxhbGlnbm1lbnQ6e3g6dGhpcy5faXNWZXJ0aWNhbD8iY2VudGVyIjp1LHk6dGhpcy5faXNWZXJ0aWNhbD91OiJjZW50ZXIifX19LGcucHJvdG90eXBlLl9jcmVhdGVMYWJlbENvbnRhaW5lcj1mdW5jdGlvbih0LGUsbixpLHIsbyl7dmFyIGE9dC5hcHBlbmQoImciKS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIitlLngrIiwgIitlLnkrIikiKTtpZihyKXthLmNsYXNzZWQoIm9uLWJhci1sYWJlbCIsITApO3ZhciBzPTEuNipkLkNvbG9yLmNvbnRyYXN0KCJ3aGl0ZSIsbyk8ZC5Db2xvci5jb250cmFzdCgiYmxhY2siLG8pO2EuY2xhc3NlZChzPyJkYXJrLWxhYmVsIjoibGlnaHQtbGFiZWwiLCEwKX1lbHNlIGEuY2xhc3NlZCgib2ZmLWJhci1sYWJlbCIsITApO3JldHVybiBhfSxnLnByb3RvdHlwZS5fZ2VuZXJhdGVEcmF3U3RlcHM9ZnVuY3Rpb24oKXt2YXIgdD1bXTtpZih0aGlzLl9hbmltYXRlT25OZXh0UmVuZGVyKCkpe3ZhciBlPXRoaXMuX2dldEF0dHJUb1Byb2plY3RvcigpLG49dGhpcy5sZW5ndGgoKS5zY2FsZS5zY2FsZSh0aGlzLmJhc2VsaW5lVmFsdWUoKSksaT10aGlzLl9pc1ZlcnRpY2FsPyJoZWlnaHQiOiJ3aWR0aCI7ZVt0aGlzLl9pc1ZlcnRpY2FsPyJ5IjoieCJdPWZ1bmN0aW9uKCl7cmV0dXJuIG59LGVbaV09ZnVuY3Rpb24oKXtyZXR1cm4gMH0sdC5wdXNoKHthdHRyVG9Qcm9qZWN0b3I6ZSxhbmltYXRvcjp0aGlzLl9nZXRBbmltYXRvcihmLkFuaW1hdG9yLlJFU0VUKX0pfXJldHVybiB0LnB1c2goe2F0dHJUb1Byb2plY3Rvcjp0aGlzLl9nZXRBdHRyVG9Qcm9qZWN0b3IoKSxhbmltYXRvcjp0aGlzLl9nZXRBbmltYXRvcihmLkFuaW1hdG9yLk1BSU4pfSksdH0sZy5wcm90b3R5cGUuX2dlbmVyYXRlQXR0clRvUHJvamVjdG9yPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPXAucHJvdG90eXBlLl9nZW5lcmF0ZUF0dHJUb1Byb2plY3Rvci5jYWxsKHRoaXMpLG49dGhpcy5sZW5ndGgoKS5zY2FsZS5zY2FsZSh0aGlzLmJhc2VsaW5lVmFsdWUoKSksaT10aGlzLl9pc1ZlcnRpY2FsPyJ5IjoieCIscj10aGlzLl9pc1ZlcnRpY2FsPyJ4IjoieSIsbz1tLlBsb3QuX3NjYWxlZEFjY2Vzc29yKHRoaXMucG9zaXRpb24oKSksYT1tLlBsb3QuX3NjYWxlZEFjY2Vzc29yKHRoaXMubGVuZ3RoKCkpLHM9ZnVuY3Rpb24odCxlLGkpe3JldHVybiBNYXRoLmFicyhuLWEodCxlLGkpKX0sbD1lW2cuX0JBUl9USElDS05FU1NfS0VZXSxjPWUuZ2FwLHU9bnVsbD09Yz9sOmZ1bmN0aW9uKHQsZSxuKXt2YXIgaT1sKHQsZSxuKTtyZXR1cm4gaTxnLl9CQVJfR0FQTEVTU19USFJFU0hPTERfUFg/aTppLWModCxlLG4pfTtyZXR1cm4gZS53aWR0aD10aGlzLl9pc1ZlcnRpY2FsP3U6cyxlLmhlaWdodD10aGlzLl9pc1ZlcnRpY2FsP3M6dSxlW2ldPWZ1bmN0aW9uKHQsZSxpKXt2YXIgcj1hKHQsZSxpKTtyZXR1cm4gcj5uP246cn0sZVtyXT1mdW5jdGlvbihlLG4saSl7cmV0dXJuIHQuX2dldFBvc2l0aW9uQXR0cihvKGUsbixpKSxsKGUsbixpKSl9LGV9LGcucHJvdG90eXBlLl91cGRhdGVUaGlja25lc3NBdHRyPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPXRoaXMucG9zaXRpb24oKSxuPXRoaXMuYmFyRW5kKCk7bnVsbCE9ZSYmbnVsbCE9bj8odGhpcy5fZml4ZWRCYXJQaXhlbFRoaWNrbmVzcz0hMSx0aGlzLmF0dHIoZy5fQkFSX1RISUNLTkVTU19LRVksKGZ1bmN0aW9uKHQsaSxyKXt2YXIgbz1lLmFjY2Vzc29yKHQsaSxyKSxhPW4uYWNjZXNzb3IodCxpLHIpO3JldHVybiBvPWUuc2NhbGU/ZS5zY2FsZS5zY2FsZShvKTpvLGE9bi5zY2FsZT9uLnNjYWxlLnNjYWxlKGEpOmEsTWF0aC5hYnMoYS1vKX0pKSk6KHRoaXMuX2ZpeGVkQmFyUGl4ZWxUaGlja25lc3M9ITAsdGhpcy5hdHRyKGcuX0JBUl9USElDS05FU1NfS0VZLChmdW5jdGlvbigpe3JldHVybiB0Ll9iYXJQaXhlbFRoaWNrbmVzcygpfSkpKX0sZy5wcm90b3R5cGUuX2JhclBpeGVsVGhpY2tuZXNzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2ZpeGVkQmFyUGl4ZWxUaGlja25lc3MmJnRoaXMuX3Byb2plY3RvcnNSZWFkeSgpP3RoaXMuX2NvbXB1dGVCYXJQaXhlbFRoaWNrbmVzcyh0aGlzLnBvc2l0aW9uKCksdGhpcy5kYXRhc2V0cygpLHRoaXMuX2lzVmVydGljYWw/dGhpcy53aWR0aCgpOnRoaXMuaGVpZ2h0KCkpOjB9LGcucHJvdG90eXBlLmVudGl0aWVzPWZ1bmN0aW9uKHQpe3JldHVybiB2b2lkIDA9PT10JiYodD10aGlzLmRhdGFzZXRzKCkpLHRoaXMuX3Byb2plY3RvcnNSZWFkeSgpP3AucHJvdG90eXBlLmVudGl0aWVzLmNhbGwodGhpcyx0KTpbXX0sZy5wcm90b3R5cGUuX2VudGl0eUJvdW5kcz1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fcGl4ZWxCb3VuZHModC5kYXR1bSx0LmluZGV4LHQuZGF0YXNldCl9LGcucHJvdG90eXBlLl9waXhlbEJvdW5kcz1mdW5jdGlvbih0LGUsbil7dmFyIGk9dGhpcy5fZ2V0QXR0clRvUHJvamVjdG9yKCk7cmV0dXJue3g6aS54KHQsZSxuKSx5OmkueSh0LGUsbiksd2lkdGg6aS53aWR0aCh0LGUsbiksaGVpZ2h0OmkuaGVpZ2h0KHQsZSxuKX19LGcucHJvdG90eXBlLl9waXhlbFBvaW50PWZ1bmN0aW9uKHQsZSxuKXt2YXIgaT10aGlzLl9waXhlbEJvdW5kcyh0LGUsbikscj1tLlBsb3QuX3NjYWxlZEFjY2Vzc29yKHRoaXMuX2lzVmVydGljYWw/dGhpcy55KCk6dGhpcy54KCkpKHQsZSxuKSxvPSh0aGlzLl9pc1ZlcnRpY2FsP3RoaXMueSgpLnNjYWxlOnRoaXMueCgpLnNjYWxlKS5zY2FsZSh0aGlzLmJhc2VsaW5lVmFsdWUoKSk7cmV0dXJuIHRoaXMuX3BpeGVsUG9pbnRCYXIocixvLGkpfSxnLnByb3RvdHlwZS5fcGl4ZWxQb2ludEJhcj1mdW5jdGlvbih0LGUsbil7dmFyIGkscjtyZXR1cm4gdGhpcy5faXNWZXJ0aWNhbD8oaT1uLngrbi53aWR0aC8yLHI9dDw9ZT9uLnk6bi55K24uaGVpZ2h0KTooaT10Pj1lP24ueCtuLndpZHRoOm4ueCxyPW4ueStuLmhlaWdodC8yKSx7eDppLHk6cn19LGcucHJvdG90eXBlLl91bmluc3RhbGxTY2FsZUZvcktleT1mdW5jdGlvbih0LGUpe3AucHJvdG90eXBlLl91bmluc3RhbGxTY2FsZUZvcktleS5jYWxsKHRoaXMsdCxlKX0sZy5wcm90b3R5cGUuX2dldERhdGFUb0RyYXc9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9bmV3IGQuTWFwLG49dGhpcy5fZ2V0QXR0clRvUHJvamVjdG9yKCksaT10aGlzLndpZHRoKCkscj10aGlzLmhlaWdodCgpO3JldHVybiB0aGlzLmRhdGFzZXRzKCkuZm9yRWFjaCgoZnVuY3Rpb24obyl7dmFyIGE9by5kYXRhKCkubWFwKChmdW5jdGlvbihlLGEpe3JldHVybiB0Ll9pc0RhdHVtT25TY3JlZW4obixpLHIsZSxhLG8pP2U6bnVsbH0pKTtlLnNldChvLGEpfSkpLGV9LGcucHJvdG90eXBlLl9pc0RhdHVtT25TY3JlZW49ZnVuY3Rpb24odCxlLG4saSxyLG8pe3ZhciBhPXQueChpLHIsbykscz10LnkoaSxyLG8pLGw9dC53aWR0aChpLHIsbyksYz10LmhlaWdodChpLHIsbyk7cmV0dXJuISEoZC5NYXRoLmlzVmFsaWROdW1iZXIoYSkmJmQuTWF0aC5pc1ZhbGlkTnVtYmVyKHMpJiZkLk1hdGguaXNWYWxpZE51bWJlcihsKSYmZC5NYXRoLmlzVmFsaWROdW1iZXIoYykpJiZkLk1hdGguYm91bmRzSW50ZXJzZWN0cyhhLHMsbCxjLDAsMCxlLG4pfSxnLnByb3RvdHlwZS5pbnZhbGlkYXRlQ2FjaGU9ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3AucHJvdG90eXBlLmludmFsaWRhdGVDYWNoZS5jYWxsKHRoaXMpLHRoaXMuZGF0YXNldHMoKS5mb3JFYWNoKChmdW5jdGlvbihlKXtyZXR1cm4gdC5fbGFiZWxDb25maWcuZ2V0KGUpLm1lYXN1cmVyLnJlc2V0KCl9KSl9LGcuX0JBUl9USElDS05FU1NfUkFUSU89Ljk1LGcuX0JBUl9HQVBMRVNTX1RIUkVTSE9MRF9QWD0zLGcuX1NJTkdMRV9CQVJfRElNRU5TSU9OX1JBVElPPS40LGcuX0JBUl9BUkVBX0NMQVNTPSJiYXItYXJlYSIsZy5fQkFSX0VORF9LRVk9ImJhckVuZCIsZy5fQkFSX1RISUNLTkVTU19LRVk9IndpZHRoIixnLl9MQUJFTF9BUkVBX0NMQVNTPSJiYXItbGFiZWwtdGV4dC1hcmVhIixnLl9MQUJFTF9NQVJHSU5fSU5TSURFX0JBUj0xMCxnfSkoZy5YWVBsb3QpO2Z1bmN0aW9uIHkodCxlLGkpe3ZhciByLG89dC5zY2FsZTtpZihvIGluc3RhbmNlb2YgdS5DYXRlZ29yeSlyPW8ucmFuZ2VCYW5kKCk7ZWxzZXt2YXIgYT10LmFjY2Vzc29yLHM9bi5zZXQoZC5BcnJheS5mbGF0dGVuKGUubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC5kYXRhKCkubWFwKChmdW5jdGlvbihlLG4pe3JldHVybiBhKGUsbix0KX0pKS5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiBudWxsIT10fSkpLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQudmFsdWVPZigpfSkpfSkpKSkudmFsdWVzKCkubWFwKChmdW5jdGlvbih0KXtyZXR1cm4rdH0pKTtzLnNvcnQoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQtZX0pKTt2YXIgbD1zLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIG8uc2NhbGUodCl9KSksYz1uLnBhaXJzKGwpO3I9ZC5NYXRoLm1pbihjLChmdW5jdGlvbih0LGUpe3JldHVybiBNYXRoLmFicyh0WzFdLXRbMF0pfSksaSpfLl9TSU5HTEVfQkFSX0RJTUVOU0lPTl9SQVRJTykscio9Xy5fQkFSX1RISUNLTkVTU19SQVRJT31yZXR1cm4gcn10LkJhcj1ffSkoWUV0KTt2YXIgWEV0PXt9OwovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqL09iamVjdC5kZWZpbmVQcm9wZXJ0eShYRXQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciAkRXQ9Qk8sS0V0PVh2dCxaRXQ9RF90LEpFdD1ZRXQsUUV0PXNTdCx0VHQ9KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSl7dm9pZCAwPT09ZSYmKGU9InZlcnRpY2FsIik7dmFyIG49dC5jYWxsKHRoaXMsZSl8fHRoaXM7cmV0dXJuIG4uX2NsdXN0ZXJPZmZzZXRzPW5ldyBaRXQuTWFwLG59cmV0dXJuICRFdC5fX2V4dGVuZHMoZSx0KSxlLnByb3RvdHlwZS5fZ2VuZXJhdGVBdHRyVG9Qcm9qZWN0b3I9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLG49dC5wcm90b3R5cGUuX2dlbmVyYXRlQXR0clRvUHJvamVjdG9yLmNhbGwodGhpcyksaT10aGlzLl9tYWtlSW5uZXJTY2FsZSgpLHI9ZnVuY3Rpb24odCxlKXtyZXR1cm4gaS5yYW5nZUJhbmQoKX07bi53aWR0aD10aGlzLl9pc1ZlcnRpY2FsP3I6bi53aWR0aCxuLmhlaWdodD10aGlzLl9pc1ZlcnRpY2FsP24uaGVpZ2h0OnI7dmFyIG89bi54LGE9bi55O3JldHVybiBuLng9dGhpcy5faXNWZXJ0aWNhbD9mdW5jdGlvbih0LG4saSl7cmV0dXJuIG8odCxuLGkpK2UuX2NsdXN0ZXJPZmZzZXRzLmdldChpKX06ZnVuY3Rpb24odCxlLG4pe3JldHVybiBvKHQsZSxuKX0sbi55PXRoaXMuX2lzVmVydGljYWw/ZnVuY3Rpb24odCxlLG4pe3JldHVybiBhKHQsZSxuKX06ZnVuY3Rpb24odCxuLGkpe3JldHVybiBhKHQsbixpKStlLl9jbHVzdGVyT2Zmc2V0cy5nZXQoaSl9LG59LGUucHJvdG90eXBlLl91cGRhdGVDbHVzdGVyUG9zaXRpb249ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dGhpcy5fbWFrZUlubmVyU2NhbGUoKTt0aGlzLmRhdGFzZXRzKCkuZm9yRWFjaCgoZnVuY3Rpb24obixpKXtyZXR1cm4gdC5fY2x1c3Rlck9mZnNldHMuc2V0KG4sZS5zY2FsZShTdHJpbmcoaSkpLWUucmFuZ2VCYW5kKCkvMil9KSl9LGUucHJvdG90eXBlLl9tYWtlSW5uZXJTY2FsZT1mdW5jdGlvbigpe3ZhciB0PW5ldyBLRXQuQ2F0ZWdvcnk7dC5kb21haW4odGhpcy5kYXRhc2V0cygpLm1hcCgoZnVuY3Rpb24odCxlKXtyZXR1cm4gU3RyaW5nKGUpfSkpKTt2YXIgZT1RRXQuUGxvdC5fc2NhbGVkQWNjZXNzb3IodGhpcy5hdHRyKEpFdC5CYXIuX0JBUl9USElDS05FU1NfS0VZKSk7cmV0dXJuIHQucmFuZ2UoWzAsZShudWxsLDAsbnVsbCldKSx0fSxlLnByb3RvdHlwZS5fZ2V0RGF0YVRvRHJhdz1mdW5jdGlvbigpe3JldHVybiB0aGlzLl91cGRhdGVDbHVzdGVyUG9zaXRpb24oKSx0LnByb3RvdHlwZS5fZ2V0RGF0YVRvRHJhdy5jYWxsKHRoaXMpfSxlfSkoSkV0LkJhcik7WEV0LkNsdXN0ZXJlZEJhcj10VHQ7dmFyIGVUdD17fTsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi9PYmplY3QuZGVmaW5lUHJvcGVydHkoZVR0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgblR0PUJPLGlUdD13cHQsclR0PUxndCxvVHQ9Zmd0LGFUdD1wdnQsc1R0PVh2dCxsVHQ9RF90LGNUdD1OTXQsdVR0PU9NdCxoVHQ9R1N0LGRUdD1UeXQscFR0PXNTdCxmVHQ9KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXt2YXIgZT10LmNhbGwodGhpcyl8fHRoaXM7cmV0dXJuIGUuX3N0YXJ0QW5nbGU9MCxlLl9lbmRBbmdsZT0yKk1hdGguUEksZS5fbGFiZWxGb3JtYXR0ZXI9YVR0LmlkZW50aXR5KCksZS5fbGFiZWxzRW5hYmxlZD0hMSxlLmlubmVyUmFkaXVzKDApLGUub3V0ZXJSYWRpdXMoKGZ1bmN0aW9uKCl7dmFyIHQ9ZS5fcGllQ2VudGVyKCk7cmV0dXJuIE1hdGgubWluKE1hdGgubWF4KGUud2lkdGgoKS10LngsdC54KSxNYXRoLm1heChlLmhlaWdodCgpLXQueSx0LnkpKX0pKSxlLmFkZENsYXNzKCJwaWUtcGxvdCIpLGUuYXR0cigiZmlsbCIsKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIFN0cmluZyhlKX0pLG5ldyBzVHQuQ29sb3IpLGUuX3N0cm9rZURyYXdlcnM9bmV3IGxUdC5NYXAsZX1yZXR1cm4gblR0Ll9fZXh0ZW5kcyhlLHQpLGUucHJvdG90eXBlLl9zZXR1cD1mdW5jdGlvbigpe3ZhciBlPXRoaXM7dC5wcm90b3R5cGUuX3NldHVwLmNhbGwodGhpcyksdGhpcy5fc3Ryb2tlRHJhd2Vycy5mb3JFYWNoKChmdW5jdGlvbih0KXtyZXR1cm4gdC5hdHRhY2hUbyhlLl9yZW5kZXJBcmVhKX0pKX0sZS5wcm90b3R5cGUuY29tcHV0ZUxheW91dD1mdW5jdGlvbihlLG4saSl7dC5wcm90b3R5cGUuY29tcHV0ZUxheW91dC5jYWxsKHRoaXMsZSxuLGkpO3ZhciByPXRoaXMuX3BpZUNlbnRlcigpO3RoaXMuX3JlbmRlckFyZWEuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrci54KyIsIityLnkrIikiKTt2YXIgbz1NYXRoLm1pbihNYXRoLm1heCh0aGlzLndpZHRoKCktci54LHIueCksTWF0aC5tYXgodGhpcy5oZWlnaHQoKS1yLnksci55KSk7cmV0dXJuIG51bGwhPXRoaXMuaW5uZXJSYWRpdXMoKS5zY2FsZSYmdGhpcy5pbm5lclJhZGl1cygpLnNjYWxlLnJhbmdlKFswLG9dKSxudWxsIT10aGlzLm91dGVyUmFkaXVzKCkuc2NhbGUmJnRoaXMub3V0ZXJSYWRpdXMoKS5zY2FsZS5yYW5nZShbMCxvXSksdGhpc30sZS5wcm90b3R5cGUuYWRkRGF0YXNldD1mdW5jdGlvbihlKXtyZXR1cm4gdC5wcm90b3R5cGUuYWRkRGF0YXNldC5jYWxsKHRoaXMsZSksdGhpc30sZS5wcm90b3R5cGUuX2FkZERhdGFzZXQ9ZnVuY3Rpb24oZSl7aWYoMT09PXRoaXMuZGF0YXNldHMoKS5sZW5ndGgpcmV0dXJuIGxUdC5XaW5kb3cud2FybigiT25seSBvbmUgZGF0YXNldCBpcyBzdXBwb3J0ZWQgaW4gUGllIHBsb3RzIiksdGhpczt0aGlzLl91cGRhdGVQaWVBbmdsZXMoKSx0LnByb3RvdHlwZS5fYWRkRGF0YXNldC5jYWxsKHRoaXMsZSk7dmFyIG49bmV3IHVUdC5BcmNPdXRsaW5lU1ZHRHJhd2VyO3JldHVybiB0aGlzLl9pc1NldHVwJiZuLmF0dGFjaFRvKHRoaXMuX3JlbmRlckFyZWEpLHRoaXMuX3N0cm9rZURyYXdlcnMuc2V0KGUsbiksdGhpc30sZS5wcm90b3R5cGUucmVtb3ZlRGF0YXNldD1mdW5jdGlvbihlKXtyZXR1cm4gdC5wcm90b3R5cGUucmVtb3ZlRGF0YXNldC5jYWxsKHRoaXMsZSksdGhpc30sZS5wcm90b3R5cGUuX3JlbW92ZURhdGFzZXROb2Rlcz1mdW5jdGlvbihlKXt0LnByb3RvdHlwZS5fcmVtb3ZlRGF0YXNldE5vZGVzLmNhbGwodGhpcyxlKSx0aGlzLl9zdHJva2VEcmF3ZXJzLmdldChlKS5yZW1vdmUoKX0sZS5wcm90b3R5cGUuX3JlbW92ZURhdGFzZXQ9ZnVuY3Rpb24oZSl7cmV0dXJuIHQucHJvdG90eXBlLl9yZW1vdmVEYXRhc2V0LmNhbGwodGhpcyxlKSx0aGlzLl9zdHJva2VEcmF3ZXJzLmRlbGV0ZShlKSx0aGlzLl9zdGFydEFuZ2xlcz1bXSx0aGlzLl9lbmRBbmdsZXM9W10sdGhpc30sZS5wcm90b3R5cGUuc2VsZWN0aW9ucz1mdW5jdGlvbihlKXt2YXIgbj10aGlzO3ZvaWQgMD09PWUmJihlPXRoaXMuZGF0YXNldHMoKSk7dmFyIGk9dC5wcm90b3R5cGUuc2VsZWN0aW9ucy5jYWxsKHRoaXMsZSkubm9kZXMoKTtyZXR1cm4gZS5mb3JFYWNoKChmdW5jdGlvbih0KXt2YXIgZT1uLl9zdHJva2VEcmF3ZXJzLmdldCh0KTtudWxsIT1lJiZpLnB1c2guYXBwbHkoaSxlLmdldFZpc3VhbFByaW1pdGl2ZXMoKSl9KSksaVR0LnNlbGVjdEFsbChpKX0sZS5wcm90b3R5cGUuX29uRGF0YXNldFVwZGF0ZT1mdW5jdGlvbigpe3QucHJvdG90eXBlLl9vbkRhdGFzZXRVcGRhdGUuY2FsbCh0aGlzKSx0aGlzLl91cGRhdGVQaWVBbmdsZXMoKSx0aGlzLnJlbmRlcigpfSxlLnByb3RvdHlwZS5fY3JlYXRlRHJhd2VyPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBoVHQuUHJveHlEcmF3ZXIoKGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBjVHQuQXJjU1ZHRHJhd2VyfSksKGZ1bmN0aW9uKCl7cmV0dXJuIGRUdC53YXJuKCJjYW52YXMgcmVuZGVyZXIgaXMgbm90IHN1cHBvcnRlZCBvbiBQaWUgUGxvdCEiKSxudWxsfSkpfSxlLnByb3RvdHlwZS5lbnRpdGllcz1mdW5jdGlvbihlKXt2YXIgbj10aGlzO3JldHVybiB2b2lkIDA9PT1lJiYoZT10aGlzLmRhdGFzZXRzKCkpLHQucHJvdG90eXBlLmVudGl0aWVzLmNhbGwodGhpcyxlKS5tYXAoKGZ1bmN0aW9uKHQpe3QucG9zaXRpb24ueCs9bi53aWR0aCgpLzIsdC5wb3NpdGlvbi55Kz1uLmhlaWdodCgpLzI7dmFyIGU9aVR0LnNlbGVjdChuLl9zdHJva2VEcmF3ZXJzLmdldCh0LmRhdGFzZXQpLmdldFZpc3VhbFByaW1pdGl2ZUF0SW5kZXgodC5pbmRleCkpLGk9dDtyZXR1cm4gaS5zdHJva2VTZWxlY3Rpb249ZSxpfSkpfSxlLnByb3RvdHlwZS5zZWN0b3JWYWx1ZT1mdW5jdGlvbih0LG4pe3JldHVybiBudWxsPT10P3RoaXMuX3Byb3BlcnR5QmluZGluZ3MuZ2V0KGUuX1NFQ1RPUl9WQUxVRV9LRVkpOih0aGlzLl9iaW5kUHJvcGVydHkoZS5fU0VDVE9SX1ZBTFVFX0tFWSx0LG4pLHRoaXMuX3VwZGF0ZVBpZUFuZ2xlcygpLHRoaXMucmVuZGVyKCksdGhpcyl9LGUucHJvdG90eXBlLmlubmVyUmFkaXVzPWZ1bmN0aW9uKHQsbil7cmV0dXJuIG51bGw9PXQ/dGhpcy5fcHJvcGVydHlCaW5kaW5ncy5nZXQoZS5fSU5ORVJfUkFESVVTX0tFWSk6KHRoaXMuX2JpbmRQcm9wZXJ0eShlLl9JTk5FUl9SQURJVVNfS0VZLHQsbiksdGhpcy5yZW5kZXIoKSx0aGlzKX0sZS5wcm90b3R5cGUub3V0ZXJSYWRpdXM9ZnVuY3Rpb24odCxuKXtyZXR1cm4gbnVsbD09dD90aGlzLl9wcm9wZXJ0eUJpbmRpbmdzLmdldChlLl9PVVRFUl9SQURJVVNfS0VZKToodGhpcy5fYmluZFByb3BlcnR5KGUuX09VVEVSX1JBRElVU19LRVksdCxuKSx0aGlzLnJlbmRlcigpLHRoaXMpfSxlLnByb3RvdHlwZS5zdGFydEFuZ2xlPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuX3N0YXJ0QW5nbGU6KHRoaXMuX3N0YXJ0QW5nbGU9dCx0aGlzLl91cGRhdGVQaWVBbmdsZXMoKSx0aGlzLnJlbmRlcigpLHRoaXMpfSxlLnByb3RvdHlwZS5lbmRBbmdsZT1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9lbmRBbmdsZToodGhpcy5fZW5kQW5nbGU9dCx0aGlzLl91cGRhdGVQaWVBbmdsZXMoKSx0aGlzLnJlbmRlcigpLHRoaXMpfSxlLnByb3RvdHlwZS5sYWJlbHNFbmFibGVkPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuX2xhYmVsc0VuYWJsZWQ6KHRoaXMuX2xhYmVsc0VuYWJsZWQ9dCx0aGlzLnJlbmRlcigpLHRoaXMpfSxlLnByb3RvdHlwZS5sYWJlbEZvcm1hdHRlcj1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9sYWJlbEZvcm1hdHRlcjoodGhpcy5fbGFiZWxGb3JtYXR0ZXI9dCx0aGlzLnJlbmRlcigpLHRoaXMpfSxlLnByb3RvdHlwZS5lbnRpdGllc0F0PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMud2lkdGgoKS8yLG49dGhpcy5oZWlnaHQoKS8yLGk9dGhpcy5fc2xpY2VJbmRleEZvclBvaW50KHt4OnQueC1lLHk6dC55LW59KTtyZXR1cm4gbnVsbD09aT9bXTpbdGhpcy5lbnRpdGllcygpW2ldXX0sZS5wcm90b3R5cGUuX3Byb3BlcnR5UHJvamVjdG9ycz1mdW5jdGlvbigpe3ZhciBlPXRoaXMsbj10LnByb3RvdHlwZS5fcHJvcGVydHlQcm9qZWN0b3JzLmNhbGwodGhpcyksaT1wVHQuUGxvdC5fc2NhbGVkQWNjZXNzb3IodGhpcy5pbm5lclJhZGl1cygpKSxyPXBUdC5QbG90Ll9zY2FsZWRBY2Nlc3Nvcih0aGlzLm91dGVyUmFkaXVzKCkpO3JldHVybiBuLmQ9ZnVuY3Rpb24odCxuLG8pe3JldHVybiBpVHQuYXJjKCkuaW5uZXJSYWRpdXMoaSh0LG4sbykpLm91dGVyUmFkaXVzKHIodCxuLG8pKS5zdGFydEFuZ2xlKGUuX3N0YXJ0QW5nbGVzW25dKS5lbmRBbmdsZShlLl9lbmRBbmdsZXNbbl0pKHQsbil9LG59LGUucHJvdG90eXBlLl91cGRhdGVQaWVBbmdsZXM9ZnVuY3Rpb24oKXtpZihudWxsIT10aGlzLnNlY3RvclZhbHVlKCkmJjAhPT10aGlzLmRhdGFzZXRzKCkubGVuZ3RoKXt2YXIgdD1wVHQuUGxvdC5fc2NhbGVkQWNjZXNzb3IodGhpcy5zZWN0b3JWYWx1ZSgpKSxlPXRoaXMuZGF0YXNldHMoKVswXSxuPXRoaXMuX2dldERhdGFUb0RyYXcoKS5nZXQoZSksaT1pVHQucGllKCkuc29ydChudWxsKS5zdGFydEFuZ2xlKHRoaXMuX3N0YXJ0QW5nbGUpLmVuZEFuZ2xlKHRoaXMuX2VuZEFuZ2xlKS52YWx1ZSgoZnVuY3Rpb24obixpKXtyZXR1cm4gdChuLGksZSl9KSkobik7dGhpcy5fc3RhcnRBbmdsZXM9aS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0LnN0YXJ0QW5nbGV9KSksdGhpcy5fZW5kQW5nbGVzPWkubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC5lbmRBbmdsZX0pKX19LGUucHJvdG90eXBlLl9waWVDZW50ZXI9ZnVuY3Rpb24oKXt2YXIgdCxlLG4saSxyPXRoaXMuX3N0YXJ0QW5nbGU8dGhpcy5fZW5kQW5nbGU/dGhpcy5fc3RhcnRBbmdsZTp0aGlzLl9lbmRBbmdsZSxvPXRoaXMuX3N0YXJ0QW5nbGU8dGhpcy5fZW5kQW5nbGU/dGhpcy5fZW5kQW5nbGU6dGhpcy5fc3RhcnRBbmdsZSxhPU1hdGguc2luKHIpLHM9TWF0aC5jb3MociksbD1NYXRoLnNpbihvKSxjPU1hdGguY29zKG8pO3JldHVybiBhPj0wJiZsPj0wP3M+PTAmJmM+PTA/KHQ9cyxlPTAsaT0wLG49bCk6czwwJiZjPDA/KHQ9MCxlPS1jLGk9MCxuPWEpOnM+PTAmJmM8MD8odD1zLGU9LWMsaT0wLG49YSk6czwwJiZjPj0wJiYodD0xLGU9MSxpPTEsbj1NYXRoLm1heChhLGwpKTphPj0wJiZsPDA/cz49MCYmYz49MD8odD1NYXRoLm1heChzLGMpLGU9MSxpPTEsbj0xKTpzPDAmJmM8MD8odD0wLGU9MSxpPS1sLG49YSk6cz49MCYmYzwwPyh0PXMsZT0xLGk9LWwsbj0xKTpzPDAmJmM+PTAmJih0PWMsZT0xLGk9MSxuPWEpOmE8MCYmbD49MD9zPj0wJiZjPj0wPyh0PTEsZT0wLGk9LWEsbj1sKTpzPDAmJmM8MD8odD0xLGU9TWF0aC5tYXgoLXMsLWMpLGk9MSxuPTEpOnM+PTAmJmM8MD8odD0xLGU9LWMsaT0tYSxuPTEpOnM8MCYmYz49MCYmKHQ9MSxlPS1zLGk9MSxuPWwpOmE8MCYmbDwwJiYocz49MCYmYz49MD8odD1jLGU9MCxpPS1hLG49MCk6czwwJiZjPDA/KHQ9MCxlPS1zLGk9LWwsbj0wKTpzPj0wJiZjPDA/KHQ9MSxlPTEsaT1NYXRoLm1heChzLC1jKSxuPTEpOnM8MCYmYz49MCYmKHQ9YyxlPS1zLGk9MSxuPTApKSx7eDppK249PTA/MDppLyhpK24pKnRoaXMud2lkdGgoKSx5OnQrZT09MD8wOnQvKHQrZSkqdGhpcy5oZWlnaHQoKX19LGUucHJvdG90eXBlLl9nZXREYXRhVG9EcmF3PWZ1bmN0aW9uKCl7dmFyIG49dC5wcm90b3R5cGUuX2dldERhdGFUb0RyYXcuY2FsbCh0aGlzKTtpZigwPT09dGhpcy5kYXRhc2V0cygpLmxlbmd0aClyZXR1cm4gbjt2YXIgaT1wVHQuUGxvdC5fc2NhbGVkQWNjZXNzb3IodGhpcy5zZWN0b3JWYWx1ZSgpKSxyPXRoaXMuZGF0YXNldHMoKVswXSxvPW4uZ2V0KHIpLmZpbHRlcigoZnVuY3Rpb24odCxuKXtyZXR1cm4gZS5faXNWYWxpZERhdGEoaSh0LG4scikpfSkpO3JldHVybiBuLnNldChyLG8pLG59LGUuX2lzVmFsaWREYXRhPWZ1bmN0aW9uKHQpe3JldHVybiBsVHQuTWF0aC5pc1ZhbGlkTnVtYmVyKHQpJiZ0Pj0wfSxlLnByb3RvdHlwZS5fcGl4ZWxQb2ludD1mdW5jdGlvbih0LG4saSl7dmFyIHI9cFR0LlBsb3QuX3NjYWxlZEFjY2Vzc29yKHRoaXMuc2VjdG9yVmFsdWUoKSk7aWYoIWUuX2lzVmFsaWREYXRhKHIodCxuLGkpKSlyZXR1cm57eDpOYU4seTpOYU59O3ZhciBvPShwVHQuUGxvdC5fc2NhbGVkQWNjZXNzb3IodGhpcy5pbm5lclJhZGl1cygpKSh0LG4saSkrcFR0LlBsb3QuX3NjYWxlZEFjY2Vzc29yKHRoaXMub3V0ZXJSYWRpdXMoKSkodCxuLGkpKS8yLGE9aVR0LnBpZSgpLnNvcnQobnVsbCkudmFsdWUoKGZ1bmN0aW9uKHQsbil7dmFyIG89cih0LG4saSk7cmV0dXJuIGUuX2lzVmFsaWREYXRhKG8pP286MH0pKS5zdGFydEFuZ2xlKHRoaXMuX3N0YXJ0QW5nbGUpLmVuZEFuZ2xlKHRoaXMuX2VuZEFuZ2xlKShpLmRhdGEoKSkscz0oYVtuXS5zdGFydEFuZ2xlK2Fbbl0uZW5kQW5nbGUpLzI7cmV0dXJue3g6bypNYXRoLnNpbihzKSx5Oi1vKk1hdGguY29zKHMpfX0sZS5wcm90b3R5cGUuX2FkZGl0aW9uYWxQYWludD1mdW5jdGlvbih0KXt2YXIgZT10aGlzO3RoaXMuX3JlbmRlckFyZWEuc2VsZWN0KCIubGFiZWwtYXJlYSIpLnJlbW92ZSgpLHRoaXMuX2xhYmVsc0VuYWJsZWQmJmxUdC5XaW5kb3cuc2V0VGltZW91dCgoZnVuY3Rpb24oKXtyZXR1cm4gZS5fZHJhd0xhYmVscygpfSksdCk7dmFyIG49dGhpcy5fZ2VuZXJhdGVTdHJva2VEcmF3U3RlcHMoKSxpPXRoaXMuX2dldERhdGFUb0RyYXcoKTt0aGlzLmRhdGFzZXRzKCkuZm9yRWFjaCgoZnVuY3Rpb24odCl7dmFyIHI9cFR0LlBsb3QuYXBwbHlEcmF3U3RlcHMobix0KTtlLl9zdHJva2VEcmF3ZXJzLmdldCh0KS5kcmF3KGkuZ2V0KHQpLHIpfSkpfSxlLnByb3RvdHlwZS5fZ2VuZXJhdGVTdHJva2VEcmF3U3RlcHM9ZnVuY3Rpb24oKXtyZXR1cm5be2F0dHJUb1Byb2plY3Rvcjp0aGlzLl9nZXRBdHRyVG9Qcm9qZWN0b3IoKSxhbmltYXRvcjpuZXcgb1R0Lk51bGx9XX0sZS5wcm90b3R5cGUuX3NsaWNlSW5kZXhGb3JQb2ludD1mdW5jdGlvbih0KXt2YXIgZSxuPU1hdGguc3FydChNYXRoLnBvdyh0LngsMikrTWF0aC5wb3codC55LDIpKSxpPU1hdGguYWNvcygtdC55L24pO3QueDwwJiYoaT0yKk1hdGguUEktaSk7Zm9yKHZhciByPTA7cjx0aGlzLl9zdGFydEFuZ2xlcy5sZW5ndGg7cisrKWlmKHRoaXMuX3N0YXJ0QW5nbGVzW3JdPGkmJnRoaXMuX2VuZEFuZ2xlc1tyXT5pKXtlPXI7YnJlYWt9aWYodm9pZCAwIT09ZSl7dmFyIG89dGhpcy5kYXRhc2V0cygpWzBdLGE9by5kYXRhKClbZV0scz10aGlzLmlubmVyUmFkaXVzKCkuYWNjZXNzb3IoYSxlLG8pLGw9dGhpcy5vdXRlclJhZGl1cygpLmFjY2Vzc29yKGEsZSxvKTtpZihuPnMmJm48bClyZXR1cm4gZX1yZXR1cm4gbnVsbH0sZS5wcm90b3R5cGUuX2RyYXdMYWJlbHM9ZnVuY3Rpb24oKXtmb3IodmFyIHQ9dGhpcyxlPXRoaXMuX2dldEF0dHJUb1Byb2plY3RvcigpLG49dGhpcy5fcmVuZGVyQXJlYS5hcHBlbmQoImciKS5jbGFzc2VkKCJsYWJlbC1hcmVhIiwhMCksaT1uZXcgclR0LlN2Z0NvbnRleHQobi5ub2RlKCkpLHI9bmV3IHJUdC5DYWNoZU1lYXN1cmVyKGkpLG89bmV3IHJUdC5Xcml0ZXIocixpKSxhPXRoaXMuZGF0YXNldHMoKVswXSxzPXRoaXMuX2dldERhdGFUb0RyYXcoKS5nZXQoYSksbD1zLmxlbmd0aCxjPWZ1bmN0aW9uKGkpe3ZhciBsPXNbaV0sYz11LnNlY3RvclZhbHVlKCkuYWNjZXNzb3IobCxpLGEpO2lmKCFsVHQuTWF0aC5pc1ZhbGlkTnVtYmVyKGMpKXJldHVybiJjb250aW51ZSI7Yz11Ll9sYWJlbEZvcm1hdHRlcihjLGwsaSxhKTt2YXIgaD1yLm1lYXN1cmUoYyksZD0odS5fZW5kQW5nbGVzW2ldK3UuX3N0YXJ0QW5nbGVzW2ldKS8yLHA9dS5vdXRlclJhZGl1cygpLmFjY2Vzc29yKGwsaSxhKTt1Lm91dGVyUmFkaXVzKCkuc2NhbGUmJihwPXUub3V0ZXJSYWRpdXMoKS5zY2FsZS5zY2FsZShwKSk7dmFyIGY9dS5pbm5lclJhZGl1cygpLmFjY2Vzc29yKGwsaSxhKTt1LmlubmVyUmFkaXVzKCkuc2NhbGUmJihmPXUuaW5uZXJSYWRpdXMoKS5zY2FsZS5zY2FsZShmKSk7dmFyIG09KHArZikvMixnPU1hdGguc2luKGQpKm0taC53aWR0aC8yLF89LU1hdGguY29zKGQpKm0taC5oZWlnaHQvMix5PVt7eDpnLHk6X30se3g6Zyx5Ol8raC5oZWlnaHR9LHt4OmcraC53aWR0aCx5Ol99LHt4OmcraC53aWR0aCx5Ol8raC5oZWlnaHR9XSx2PXkuZXZlcnkoKGZ1bmN0aW9uKGUpe3JldHVybiBNYXRoLmFicyhlLngpPD10LndpZHRoKCkvMiYmTWF0aC5hYnMoZS55KTw9dC5oZWlnaHQoKS8yfSkpO3YmJih2PXkubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gdC5fc2xpY2VJbmRleEZvclBvaW50KGUpfSkpLmV2ZXJ5KChmdW5jdGlvbih0KXtyZXR1cm4gdD09PWl9KSkpO3ZhciBiPWUuZmlsbChsLGksYSkseD0xLjYqbFR0LkNvbG9yLmNvbnRyYXN0KCJ3aGl0ZSIsYik8bFR0LkNvbG9yLmNvbnRyYXN0KCJibGFjayIsYiksdz1uLmFwcGVuZCgiZyIpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK2crIiwiK18rIikiKTt3LmNsYXNzZWQoeD8iZGFyay1sYWJlbCI6ImxpZ2h0LWxhYmVsIiwhMCksdy5zdHlsZSgidmlzaWJpbGl0eSIsdj8iaW5oZXJpdCI6ImhpZGRlbiIpLG8ud3JpdGUoYyxoLndpZHRoLGguaGVpZ2h0LHt4QWxpZ246ImNlbnRlciIseUFsaWduOiJjZW50ZXIifSx3Lm5vZGUoKSl9LHU9dGhpcyxoPTA7aDxsO2grKyljKGgpfSxlLl9JTk5FUl9SQURJVVNfS0VZPSJpbm5lci1yYWRpdXMiLGUuX09VVEVSX1JBRElVU19LRVk9Im91dGVyLXJhZGl1cyIsZS5fU0VDVE9SX1ZBTFVFX0tFWT0ic2VjdG9yLXZhbHVlIixlfSkocFR0LlBsb3QpO2VUdC5QaWU9ZlR0O3ZhciBtVHQ9e307Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovT2JqZWN0LmRlZmluZVByb3BlcnR5KG1UdCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIGdUdD1CTyxfVHQ9d3B0LHlUdD1MZ3QsdlR0PWZndCxiVHQ9UE10LHhUdD1HU3Qsd1R0PVpNdCxTVHQ9WHZ0LE1UdD1EX3QsRVR0PXNTdCxUVHQ9KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXt2YXIgZT10LmNhbGwodGhpcyl8fHRoaXM7cmV0dXJuIGUuX2xhYmVsc0VuYWJsZWQ9ITEsZS5fbGFiZWw9bnVsbCxlLmFuaW1hdG9yKCJyZWN0YW5nbGVzIixuZXcgdlR0Lk51bGwpLGUuYWRkQ2xhc3MoInJlY3RhbmdsZS1wbG90IiksZS5hdHRyKCJmaWxsIiwobmV3IFNUdC5Db2xvcikucmFuZ2UoKVswXSksZX1yZXR1cm4gZ1R0Ll9fZXh0ZW5kcyhlLHQpLGUucHJvdG90eXBlLl9jcmVhdGVEcmF3ZXI9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IHhUdC5Qcm94eURyYXdlcigoZnVuY3Rpb24oKXtyZXR1cm4gbmV3IHdUdC5SZWN0YW5nbGVTVkdEcmF3ZXJ9KSwoZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBiVHQuUmVjdGFuZ2xlQ2FudmFzRHJhd2VyKHQpfSkpfSxlLnByb3RvdHlwZS5fZ2VuZXJhdGVBdHRyVG9Qcm9qZWN0b3I9ZnVuY3Rpb24oKXt2YXIgbj10aGlzLGk9dC5wcm90b3R5cGUuX2dlbmVyYXRlQXR0clRvUHJvamVjdG9yLmNhbGwodGhpcykscj1FVHQuUGxvdC5fc2NhbGVkQWNjZXNzb3IodGhpcy54KCkpLG89aVtlLl9YMl9LRVldLGE9RVR0LlBsb3QuX3NjYWxlZEFjY2Vzc29yKHRoaXMueSgpKSxzPWlbZS5fWTJfS0VZXSxsPXRoaXMueCgpLnNjYWxlLGM9dGhpcy55KCkuc2NhbGU7cmV0dXJuIG51bGwhPW8/KGkud2lkdGg9ZnVuY3Rpb24odCxlLG4pe3JldHVybiBNYXRoLmFicyhvKHQsZSxuKS1yKHQsZSxuKSl9LGkueD1mdW5jdGlvbih0LGUsbil7cmV0dXJuIE1hdGgubWluKG8odCxlLG4pLHIodCxlLG4pKX0pOihpLndpZHRoPWZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gbi5fcmVjdGFuZ2xlV2lkdGgobCl9LGkueD1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHIodCxlLG4pLS41Kmkud2lkdGgodCxlLG4pfSksbnVsbCE9cz8oaS5oZWlnaHQ9ZnVuY3Rpb24odCxlLG4pe3JldHVybiBNYXRoLmFicyhzKHQsZSxuKS1hKHQsZSxuKSl9LGkueT1mdW5jdGlvbih0LGUsbil7cmV0dXJuIE1hdGgubWF4KHModCxlLG4pLGEodCxlLG4pKS1pLmhlaWdodCh0LGUsbil9KTooaS5oZWlnaHQ9ZnVuY3Rpb24odCxlLGkpe3JldHVybiBuLl9yZWN0YW5nbGVXaWR0aChjKX0saS55PWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gYSh0LGUsbiktLjUqaS5oZWlnaHQodCxlLG4pfSksZGVsZXRlIGlbZS5fWDJfS0VZXSxkZWxldGUgaVtlLl9ZMl9LRVldLGl9LGUucHJvdG90eXBlLl9nZW5lcmF0ZURyYXdTdGVwcz1mdW5jdGlvbigpe3JldHVyblt7YXR0clRvUHJvamVjdG9yOnRoaXMuX2dldEF0dHJUb1Byb2plY3RvcigpLGFuaW1hdG9yOnRoaXMuX2dldEFuaW1hdG9yKCJyZWN0YW5nbGVzIil9XX0sZS5wcm90b3R5cGUuX2ZpbHRlckZvclByb3BlcnR5PWZ1bmN0aW9uKGUpe3JldHVybiB0LnByb3RvdHlwZS5fZmlsdGVyRm9yUHJvcGVydHkuY2FsbCh0aGlzLCJ4MiI9PT1lPyJ4IjoieTIiPT09ZT8ieSI6ZSl9LGUucHJvdG90eXBlLng9ZnVuY3Rpb24obixpLHIpe2lmKG51bGw9PW4pcmV0dXJuIHQucHJvdG90eXBlLnguY2FsbCh0aGlzKTtpZihudWxsPT1pP3QucHJvdG90eXBlLnguY2FsbCh0aGlzLG4pOnQucHJvdG90eXBlLnguY2FsbCh0aGlzLG4saSxyKSxudWxsIT1pKXt2YXIgbz10aGlzLngyKCksYT1vJiZvLmFjY2Vzc29yO251bGwhPWEmJnRoaXMuX2JpbmRQcm9wZXJ0eShlLl9YMl9LRVksYSxpLG8ucG9zdFNjYWxlKX1yZXR1cm4gaSBpbnN0YW5jZW9mIFNUdC5DYXRlZ29yeSYmaS5pbm5lclBhZGRpbmcoMCkub3V0ZXJQYWRkaW5nKDApLHRoaXN9LGUucHJvdG90eXBlLngyPWZ1bmN0aW9uKHQsbil7aWYobnVsbD09dClyZXR1cm4gdGhpcy5fcHJvcGVydHlCaW5kaW5ncy5nZXQoZS5fWDJfS0VZKTt2YXIgaT10aGlzLngoKTtyZXR1cm4gdGhpcy5fYmluZFByb3BlcnR5KGUuX1gyX0tFWSx0LGkmJmkuc2NhbGUsbiksdGhpcy5yZW5kZXIoKSx0aGlzfSxlLnByb3RvdHlwZS55PWZ1bmN0aW9uKG4saSxyKXtpZihudWxsPT1uKXJldHVybiB0LnByb3RvdHlwZS55LmNhbGwodGhpcyk7aWYobnVsbD09aT90LnByb3RvdHlwZS55LmNhbGwodGhpcyxuKTp0LnByb3RvdHlwZS55LmNhbGwodGhpcyxuLGksciksbnVsbCE9aSl7dmFyIG89dGhpcy55MigpLGE9byYmby5hY2Nlc3NvcjtudWxsIT1hJiZ0aGlzLl9iaW5kUHJvcGVydHkoZS5fWTJfS0VZLGEsaSxvLnBvc3RTY2FsZSl9cmV0dXJuIGkgaW5zdGFuY2VvZiBTVHQuQ2F0ZWdvcnkmJmkuaW5uZXJQYWRkaW5nKDApLm91dGVyUGFkZGluZygwKSx0aGlzfSxlLnByb3RvdHlwZS55Mj1mdW5jdGlvbih0LG4pe2lmKG51bGw9PXQpcmV0dXJuIHRoaXMuX3Byb3BlcnR5QmluZGluZ3MuZ2V0KGUuX1kyX0tFWSk7dmFyIGk9dGhpcy55KCk7cmV0dXJuIHRoaXMuX2JpbmRQcm9wZXJ0eShlLl9ZMl9LRVksdCxpJiZpLnNjYWxlLG4pLHRoaXMucmVuZGVyKCksdGhpc30sZS5wcm90b3R5cGUuZW50aXRpZXNBdD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9nZXRBdHRyVG9Qcm9qZWN0b3IoKTtyZXR1cm4gdGhpcy5lbnRpdGllcygpLmZpbHRlcigoZnVuY3Rpb24obil7dmFyIGk9bi5kYXR1bSxyPW4uaW5kZXgsbz1uLmRhdGFzZXQsYT1lLngoaSxyLG8pLHM9ZS55KGkscixvKSxsPWUud2lkdGgoaSxyLG8pLGM9ZS5oZWlnaHQoaSxyLG8pO3JldHVybiBhPD10LngmJnQueDw9YStsJiZzPD10LnkmJnQueTw9cytjfSkpfSxlLnByb3RvdHlwZS5fZW50aXR5Qm91bmRzPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9lbnRpdHlCQm94KHQuZGF0dW0sdC5pbmRleCx0LmRhdGFzZXQsdGhpcy5fZ2V0QXR0clRvUHJvamVjdG9yKCkpfSxlLnByb3RvdHlwZS5fZW50aXR5QkJveD1mdW5jdGlvbih0LGUsbixpKXtyZXR1cm57eDppLngodCxlLG4pLHk6aS55KHQsZSxuKSx3aWR0aDppLndpZHRoKHQsZSxuKSxoZWlnaHQ6aS5oZWlnaHQodCxlLG4pfX0sZS5wcm90b3R5cGUubGFiZWw9ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5fbGFiZWw6KHRoaXMuX2xhYmVsPXQsdGhpcy5yZW5kZXIoKSx0aGlzKX0sZS5wcm90b3R5cGUubGFiZWxzRW5hYmxlZD1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9sYWJlbHNFbmFibGVkOih0aGlzLl9sYWJlbHNFbmFibGVkPXQsdGhpcy5yZW5kZXIoKSx0aGlzKX0sZS5wcm90b3R5cGUuX3Byb3BlcnR5UHJvamVjdG9ycz1mdW5jdGlvbigpe3ZhciBlPXQucHJvdG90eXBlLl9wcm9wZXJ0eVByb2plY3RvcnMuY2FsbCh0aGlzKTtyZXR1cm4gbnVsbCE9dGhpcy54MigpJiYoZS54Mj1FVHQuUGxvdC5fc2NhbGVkQWNjZXNzb3IodGhpcy54MigpKSksbnVsbCE9dGhpcy55MigpJiYoZS55Mj1FVHQuUGxvdC5fc2NhbGVkQWNjZXNzb3IodGhpcy55MigpKSksZX0sZS5wcm90b3R5cGUuX3BpeGVsUG9pbnQ9ZnVuY3Rpb24odCxlLG4pe3ZhciBpPXRoaXMuX2dldEF0dHJUb1Byb2plY3RvcigpLHI9aS54KHQsZSxuKSxvPWkueSh0LGUsbik7cmV0dXJue3g6citpLndpZHRoKHQsZSxuKS8yLHk6bytpLmhlaWdodCh0LGUsbikvMn19LGUucHJvdG90eXBlLl9yZWN0YW5nbGVXaWR0aD1mdW5jdGlvbih0KXtpZih0IGluc3RhbmNlb2YgU1R0LkNhdGVnb3J5KXJldHVybiB0LnJhbmdlQmFuZCgpO3ZhciBlPXQ9PT10aGlzLngoKS5zY2FsZT90aGlzLngoKS5hY2Nlc3Nvcjp0aGlzLnkoKS5hY2Nlc3NvcixuPV9UdC5zZXQoTVR0LkFycmF5LmZsYXR0ZW4odGhpcy5kYXRhc2V0cygpLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQuZGF0YSgpLm1hcCgoZnVuY3Rpb24obixpKXtyZXR1cm4gZShuLGksdCkudmFsdWVPZigpfSkpfSkpKSkudmFsdWVzKCkubWFwKChmdW5jdGlvbih0KXtyZXR1cm4rdH0pKSxpPU1UdC5NYXRoLm1pbihuLDApLHI9TVR0Lk1hdGgubWF4KG4sMCksbz10LnNjYWxlKGkpO3JldHVybih0LnNjYWxlKHIpLW8pL01hdGguYWJzKHItaSl9LGUucHJvdG90eXBlLl9nZXREYXRhVG9EcmF3PWZ1bmN0aW9uKCl7dmFyIHQ9bmV3IE1UdC5NYXAsZT10aGlzLl9nZXRBdHRyVG9Qcm9qZWN0b3IoKTtyZXR1cm4gdGhpcy5kYXRhc2V0cygpLmZvckVhY2goKGZ1bmN0aW9uKG4pe3ZhciBpPW4uZGF0YSgpLm1hcCgoZnVuY3Rpb24odCxpKXtyZXR1cm4gTVR0Lk1hdGguaXNWYWxpZE51bWJlcihlLngodCxpLG4pKSYmTVR0Lk1hdGguaXNWYWxpZE51bWJlcihlLnkodCxpLG4pKSYmTVR0Lk1hdGguaXNWYWxpZE51bWJlcihlLndpZHRoKHQsaSxuKSkmJk1UdC5NYXRoLmlzVmFsaWROdW1iZXIoZS5oZWlnaHQodCxpLG4pKT90Om51bGx9KSk7dC5zZXQobixpKX0pKSx0fSxlLnByb3RvdHlwZS5fYWRkaXRpb25hbFBhaW50PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7dGhpcy5fcmVuZGVyQXJlYS5zZWxlY3RBbGwoIi5sYWJlbC1hcmVhIikucmVtb3ZlKCksdGhpcy5fbGFiZWxzRW5hYmxlZCYmbnVsbCE9dGhpcy5sYWJlbCgpJiZNVHQuV2luZG93LnNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7cmV0dXJuIGUuX2RyYXdMYWJlbHMoKX0pLHQpfSxlLnByb3RvdHlwZS5fZHJhd0xhYmVscz1mdW5jdGlvbigpe3ZhciB0PXRoaXMsZT10aGlzLl9nZXREYXRhVG9EcmF3KCk7dGhpcy5kYXRhc2V0cygpLmZvckVhY2goKGZ1bmN0aW9uKG4saSl7cmV0dXJuIHQuX2RyYXdMYWJlbChlLG4saSl9KSl9LGUucHJvdG90eXBlLl9kcmF3TGFiZWw9ZnVuY3Rpb24odCxlLG4pe2Zvcih2YXIgaT10aGlzLl9nZXRBdHRyVG9Qcm9qZWN0b3IoKSxyPXRoaXMuX3JlbmRlckFyZWEuYXBwZW5kKCJnIikuY2xhc3NlZCgibGFiZWwtYXJlYSIsITApLG89bmV3IHlUdC5TdmdDb250ZXh0KHIubm9kZSgpKSxhPW5ldyB5VHQuQ2FjaGVNZWFzdXJlcihvKSxzPW5ldyB5VHQuV3JpdGVyKGEsbyksbD10aGlzLngoKS5zY2FsZS5yYW5nZSgpLGM9dGhpcy55KCkuc2NhbGUucmFuZ2UoKSx1PU1hdGgubWluLmFwcGx5KG51bGwsbCksaD1NYXRoLm1heC5hcHBseShudWxsLGwpLGQ9TWF0aC5taW4uYXBwbHkobnVsbCxjKSxwPU1hdGgubWF4LmFwcGx5KG51bGwsYyksZj10LmdldChlKSxtPWYubGVuZ3RoLGc9MDtnPG07ZysrKXt2YXIgXz1mW2ddO2lmKG51bGwhPV8pe3ZhciB5PSIiK3RoaXMubGFiZWwoKShfLGcsZSksdj1hLm1lYXN1cmUoeSksYj1pLngoXyxnLGUpLHg9aS55KF8sZyxlKSx3PWkud2lkdGgoXyxnLGUpLFM9aS5oZWlnaHQoXyxnLGUpO2lmKHYuaGVpZ2h0PD1TJiZ2LndpZHRoPD13KXt2YXIgTT17bWluOmIrPSh3LXYud2lkdGgpLzIsbWF4OmIrdi53aWR0aH0sRT17bWluOngrPShTLXYuaGVpZ2h0KS8yLG1heDp4K3YuaGVpZ2h0fTtpZihNLm1pbjx1fHxNLm1heD5ofHxFLm1pbjxkfHxFLm1heD5wKWNvbnRpbnVlO2lmKHRoaXMuX292ZXJsYXlMYWJlbChNLEUsZyxuLHQpKWNvbnRpbnVlO3ZhciBUPWkuZmlsbChfLGcsZSksQz0xLjYqTVR0LkNvbG9yLmNvbnRyYXN0KCJ3aGl0ZSIsVCk8TVR0LkNvbG9yLmNvbnRyYXN0KCJibGFjayIsVCksQT1yLmFwcGVuZCgiZyIpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK2IrIiwiK3grIikiKTtBLmNsYXNzZWQoQz8iZGFyay1sYWJlbCI6ImxpZ2h0LWxhYmVsIiwhMCkscy53cml0ZSh5LHYud2lkdGgsdi5oZWlnaHQse3hBbGlnbjoiY2VudGVyIix5QWxpZ246ImNlbnRlciJ9LEEubm9kZSgpKX19fX0sZS5wcm90b3R5cGUuX292ZXJsYXlMYWJlbD1mdW5jdGlvbih0LGUsbixpLHIpe2Zvcih2YXIgbz10aGlzLl9nZXRBdHRyVG9Qcm9qZWN0b3IoKSxhPXRoaXMuZGF0YXNldHMoKSxzPWk7czxhLmxlbmd0aDtzKyspZm9yKHZhciBsPWFbc10sYz1yLmdldChsKSx1PWMubGVuZ3RoLGg9cz09PWk/bisxOjA7aDx1O2grKylpZihNVHQuRE9NLmludGVyc2VjdHNCQm94KHQsZSx0aGlzLl9lbnRpdHlCQm94KGNbaF0saCxsLG8pKSlyZXR1cm4hMDtyZXR1cm4hMX0sZS5fWDJfS0VZPSJ4MiIsZS5fWTJfS0VZPSJ5MiIsZX0pKG1FdC5YWVBsb3QpO21UdC5SZWN0YW5nbGU9VFR0O3ZhciBDVHQ9e307Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovT2JqZWN0LmRlZmluZVByb3BlcnR5KENUdCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIEFUdD1CTyxrVHQ9TGd0LExUdD1wdnQsUFR0PUh3dCxOVHQ9R1N0LElUdD1lRXQsUlR0PWZndCxPVHQ9UE10LHpUdD1YdnQsRFR0PURfdCxCVHQ9ZEV0LEhUdD1zU3QsRlR0PShmdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7dmFyIGU9dC5jYWxsKHRoaXMpfHx0aGlzO2UuX2xhYmVsRm9ybWF0dGVyPUxUdC5pZGVudGl0eSgpLGUuX2xhYmVsc0VuYWJsZWQ9ITEsZS5hZGRDbGFzcygic2NhdHRlci1wbG90Iik7dmFyIG49bmV3IFJUdC5FYXNpbmc7bi5zdGFydERlbGF5KDUpLG4uc3RlcER1cmF0aW9uKDI1MCksbi5tYXhUb3RhbER1cmF0aW9uKEhUdC5QbG90Ll9BTklNQVRJT05fTUFYX0RVUkFUSU9OKSxlLmFuaW1hdG9yKEJUdC5BbmltYXRvci5NQUlOLG4pLGUuYXR0cigib3BhY2l0eSIsLjYpLGUuYXR0cigiZmlsbCIsKG5ldyB6VHQuQ29sb3IpLnJhbmdlKClbMF0pLGUuc2l6ZSg2KTt2YXIgaT1QVHQuY2lyY2xlKCk7cmV0dXJuIGUuc3ltYm9sKChmdW5jdGlvbigpe3JldHVybiBpfSkpLGUuX2xhYmVsQ29uZmlnPW5ldyBEVHQuTWFwLGV9cmV0dXJuIEFUdC5fX2V4dGVuZHMoZSx0KSxlLnByb3RvdHlwZS5fYnVpbGRMaWdodHdlaWdodFBsb3RFbnRpdGllcz1mdW5jdGlvbihlKXt2YXIgbj10aGlzO3JldHVybiB0LnByb3RvdHlwZS5fYnVpbGRMaWdodHdlaWdodFBsb3RFbnRpdGllcy5jYWxsKHRoaXMsZSkubWFwKChmdW5jdGlvbih0KXt2YXIgZT1IVHQuUGxvdC5fc2NhbGVkQWNjZXNzb3Iobi5zaXplKCkpKHQuZGF0dW0sdC5pbmRleCx0LmRhdGFzZXQpO3JldHVybiB0LmRpYW1ldGVyPWUsdH0pKX0sZS5wcm90b3R5cGUuX2NyZWF0ZURyYXdlcj1mdW5jdGlvbih0KXt2YXIgZT10aGlzO3JldHVybiBuZXcgTlR0LlByb3h5RHJhd2VyKChmdW5jdGlvbigpe3JldHVybiBuZXcgSVR0LlN5bWJvbFNWR0RyYXdlcn0pLChmdW5jdGlvbihuKXtyZXR1cm4gbmV3IE9UdC5DYW52YXNEcmF3ZXIobixJVHQubWFrZVN5bWJvbENhbnZhc0RyYXdTdGVwKHQsKGZ1bmN0aW9uKCl7cmV0dXJuIEhUdC5QbG90Ll9zY2FsZWRBY2Nlc3NvcihlLnN5bWJvbCgpKX0pLChmdW5jdGlvbigpe3JldHVybiBIVHQuUGxvdC5fc2NhbGVkQWNjZXNzb3IoZS5zaXplKCkpfSkpKX0pKX0sZS5wcm90b3R5cGUuc2l6ZT1mdW5jdGlvbih0LG4pe3JldHVybiBudWxsPT10P3RoaXMuX3Byb3BlcnR5QmluZGluZ3MuZ2V0KGUuX1NJWkVfS0VZKToodGhpcy5fYmluZFByb3BlcnR5KGUuX1NJWkVfS0VZLHQsbiksdGhpcy5yZW5kZXIoKSx0aGlzKX0sZS5wcm90b3R5cGUuc3ltYm9sPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuX3Byb3BlcnR5QmluZGluZ3MuZ2V0KGUuX1NZTUJPTF9LRVkpOih0aGlzLl9wcm9wZXJ0eUJpbmRpbmdzLnNldChlLl9TWU1CT0xfS0VZLHthY2Nlc3Nvcjp0fSksdGhpcy5yZW5kZXIoKSx0aGlzKX0sZS5wcm90b3R5cGUuX2dlbmVyYXRlRHJhd1N0ZXBzPWZ1bmN0aW9uKCl7dmFyIHQ9W107aWYodGhpcy5fYW5pbWF0ZU9uTmV4dFJlbmRlcigpKXt2YXIgZT10aGlzLl9nZXRBdHRyVG9Qcm9qZWN0b3IoKSxuPUhUdC5QbG90Ll9zY2FsZWRBY2Nlc3Nvcih0aGlzLnN5bWJvbCgpKTtlLmQ9ZnVuY3Rpb24odCxlLGkpe3JldHVybiBuKHQsZSxpKSgwKShudWxsKX0sdC5wdXNoKHthdHRyVG9Qcm9qZWN0b3I6ZSxhbmltYXRvcjp0aGlzLl9nZXRBbmltYXRvcihCVHQuQW5pbWF0b3IuUkVTRVQpfSl9cmV0dXJuIHQucHVzaCh7YXR0clRvUHJvamVjdG9yOnRoaXMuX2dldEF0dHJUb1Byb2plY3RvcigpLGFuaW1hdG9yOnRoaXMuX2dldEFuaW1hdG9yKEJUdC5BbmltYXRvci5NQUlOKX0pLHR9LGUucHJvdG90eXBlLl9wcm9wZXJ0eVByb2plY3RvcnM9ZnVuY3Rpb24oKXt2YXIgZT10LnByb3RvdHlwZS5fcHJvcGVydHlQcm9qZWN0b3JzLmNhbGwodGhpcyksbj1IVHQuUGxvdC5fc2NhbGVkQWNjZXNzb3IodGhpcy54KCkpLGk9SFR0LlBsb3QuX3NjYWxlZEFjY2Vzc29yKHRoaXMueSgpKTtyZXR1cm4gZS54PW4sZS55PWksZS50cmFuc2Zvcm09ZnVuY3Rpb24odCxlLHIpe3JldHVybiJ0cmFuc2xhdGUoIituKHQsZSxyKSsiLCIraSh0LGUscikrIikifSxlLmQ9dGhpcy5fY29uc3RydWN0U3ltYm9sR2VuZXJhdG9yKCksZX0sZS5wcm90b3R5cGUuX2NvbnN0cnVjdFN5bWJvbEdlbmVyYXRvcj1mdW5jdGlvbigpe3ZhciB0PUhUdC5QbG90Ll9zY2FsZWRBY2Nlc3Nvcih0aGlzLnN5bWJvbCgpKSxlPUhUdC5QbG90Ll9zY2FsZWRBY2Nlc3Nvcih0aGlzLnNpemUoKSk7cmV0dXJuIGZ1bmN0aW9uKG4saSxyKXtyZXR1cm4gdChuLGkscikoZShuLGkscikpKG51bGwpfX0sZS5wcm90b3R5cGUuX2VudGl0eUJvdW5kcz1mdW5jdGlvbih0KXtyZXR1cm57eDp0LnBvc2l0aW9uLngtdC5kaWFtZXRlci8yLHk6dC5wb3NpdGlvbi55LXQuZGlhbWV0ZXIvMix3aWR0aDp0LmRpYW1ldGVyLGhlaWdodDp0LmRpYW1ldGVyfX0sZS5wcm90b3R5cGUuX2VudGl0eVZpc2libGVPblBsb3Q9ZnVuY3Rpb24odCxlKXt2YXIgbj17bWluOmUudG9wTGVmdC54LG1heDplLmJvdHRvbVJpZ2h0Lnh9LGk9e21pbjplLnRvcExlZnQueSxtYXg6ZS5ib3R0b21SaWdodC55fSxyPXRoaXMuX2VudGl0eUJvdW5kcyh0KTtyZXR1cm4gRFR0LkRPTS5pbnRlcnNlY3RzQkJveChuLGkscil9LGUucHJvdG90eXBlLmVudGl0aWVzQXQ9ZnVuY3Rpb24odCl7dmFyIGU9SFR0LlBsb3QuX3NjYWxlZEFjY2Vzc29yKHRoaXMueCgpKSxuPUhUdC5QbG90Ll9zY2FsZWRBY2Nlc3Nvcih0aGlzLnkoKSksaT1IVHQuUGxvdC5fc2NhbGVkQWNjZXNzb3IodGhpcy5zaXplKCkpO3JldHVybiB0aGlzLmVudGl0aWVzKCkuZmlsdGVyKChmdW5jdGlvbihyKXt2YXIgbz1yLmRhdHVtLGE9ci5pbmRleCxzPXIuZGF0YXNldCxsPWUobyxhLHMpLGM9bihvLGEscyksdT1pKG8sYSxzKTtyZXR1cm4gbC11LzI8PXQueCYmdC54PD1sK3UvMiYmYy11LzI8PXQueSYmdC55PD1jK3UvMn0pKX0sZS5wcm90b3R5cGUubGFiZWxzRW5hYmxlZD1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9sYWJlbHNFbmFibGVkOih0aGlzLl9sYWJlbHNFbmFibGVkPXQsdGhpcy5fY2xlYXJBdHRyVG9Qcm9qZWN0b3JDYWNoZSgpLHRoaXMucmVuZGVyKCksdGhpcyl9LGUucHJvdG90eXBlLl9jcmVhdGVOb2Rlc0ZvckRhdGFzZXQ9ZnVuY3Rpb24obil7dmFyIGk9dC5wcm90b3R5cGUuX2NyZWF0ZU5vZGVzRm9yRGF0YXNldC5jYWxsKHRoaXMsbikscj10aGlzLl9yZW5kZXJBcmVhLmFwcGVuZCgiZyIpLmNsYXNzZWQoZS5fTEFCRUxfQVJFQV9DTEFTUywhMCksbz1uZXcga1R0LlN2Z0NvbnRleHQoci5ub2RlKCkpLGE9bmV3IGtUdC5DYWNoZU1lYXN1cmVyKG8pLHM9bmV3IGtUdC5Xcml0ZXIoYSxvKTtyZXR1cm4gdGhpcy5fbGFiZWxDb25maWcuc2V0KG4se2xhYmVsQXJlYTpyLG1lYXN1cmVyOmEsd3JpdGVyOnN9KSxpfSxlLnByb3RvdHlwZS5fcmVtb3ZlRGF0YXNldE5vZGVzPWZ1bmN0aW9uKGUpe3QucHJvdG90eXBlLl9yZW1vdmVEYXRhc2V0Tm9kZXMuY2FsbCh0aGlzLGUpO3ZhciBuPXRoaXMuX2xhYmVsQ29uZmlnLmdldChlKTtudWxsIT1uJiYobi5sYWJlbEFyZWEucmVtb3ZlKCksdGhpcy5fbGFiZWxDb25maWcuZGVsZXRlKGUpKX0sZS5wcm90b3R5cGUuX2FkZGl0aW9uYWxQYWludD1mdW5jdGlvbih0KXt2YXIgZT10aGlzO3RoaXMuZGF0YXNldHMoKS5mb3JFYWNoKChmdW5jdGlvbih0KXtyZXR1cm4gZS5fbGFiZWxDb25maWcuZ2V0KHQpLmxhYmVsQXJlYS5zZWxlY3RBbGwoImciKS5yZW1vdmUoKX0pKSx0aGlzLl9sYWJlbHNFbmFibGVkJiZEVHQuV2luZG93LnNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7cmV0dXJuIGUuX2RyYXdMYWJlbHMoKX0pLHQpfSxlLnByb3RvdHlwZS5fZHJhd0xhYmVscz1mdW5jdGlvbigpe3ZhciB0PXRoaXMsZT10aGlzLl9nZXREYXRhVG9EcmF3KCksbj10aGlzLl9nZXRBdHRyVG9Qcm9qZWN0b3IoKTt0aGlzLmRhdGFzZXRzKCkuZm9yRWFjaCgoZnVuY3Rpb24oaSl7Zm9yKHZhciByPWUuZ2V0KGkpLG89ci5sZW5ndGgsYT0wO2E8bzthKyspe3ZhciBzPXJbYV07bnVsbCE9cyYmdC5fZHJhd0xhYmVsKHMsYSxpLG4pfX0pKX0sZS5wcm90b3R5cGUuX2RyYXdMYWJlbD1mdW5jdGlvbih0LGUsbixpKXtpZihudWxsIT10LmxhYmVsKXt2YXIgcj10aGlzLl9sYWJlbENvbmZpZy5nZXQobiksbz1yLmxhYmVsQXJlYSxhPXIubWVhc3VyZXIscz1yLndyaXRlcixsPXt4OmkueCh0LGUsbikseTppLnkodCxlLG4pfSxjPUhUdC5QbG90Ll9zY2FsZWRBY2Nlc3Nvcih0aGlzLnNpemUoKSkodCxlLG4pLHU9dGhpcy5fbGFiZWxGb3JtYXR0ZXIodC5sYWJlbCx0LGUsbiksaD1hLm1lYXN1cmUodSksZD10aGlzLl9jYWxjdWxhdGVMYWJlbFByb3BlcnRpZXMobCxjLGgpLHA9ZC5jb250YWluZXJEaW1lbnNpb25zLGY9ZC5hbGlnbm1lbnQsbT10aGlzLl9jcmVhdGVMYWJlbENvbnRhaW5lcihvLGQubGFiZWxDb250YWluZXJPcmlnaW4sZC5sYWJlbE9yaWdpbixoKTtzLndyaXRlKHUscC53aWR0aCxwLmhlaWdodCx7eEFsaWduOmYueCx5QWxpZ246Zi55fSxtLm5vZGUoKSl9fSxlLnByb3RvdHlwZS5fY2FsY3VsYXRlTGFiZWxQcm9wZXJ0aWVzPWZ1bmN0aW9uKHQsbixpKXtyZXR1cm57Y29udGFpbmVyRGltZW5zaW9uczp7d2lkdGg6aS53aWR0aCxoZWlnaHQ6aS5oZWlnaHR9LGxhYmVsQ29udGFpbmVyT3JpZ2luOnt4OnQueC1pLndpZHRoLzIseTp0LnktaS5oZWlnaHQvMisobjxpLmhlaWdodD9uLzIrZS5fTEFCRUxfTUFSR0lOX0ZST01fQlVCQkxFOjApfSxsYWJlbE9yaWdpbjp7eDp0LngseTp0Lnl9LGFsaWdubWVudDp7eDoiY2VudGVyIix5OiJjZW50ZXIifX19LGUucHJvdG90eXBlLl9jcmVhdGVMYWJlbENvbnRhaW5lcj1mdW5jdGlvbih0LGUsbixpKXt2YXIgcj10LmFwcGVuZCgiZyIpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK2UueCsiLCAiK2UueSsiKSIpO3JldHVybiByLmNsYXNzZWQoIm9uLWJhci1sYWJlbCIsITApLHJ9LGUuX1NJWkVfS0VZPSJzaXplIixlLl9TWU1CT0xfS0VZPSJzeW1ib2wiLGUuX0xBQkVMX0FSRUFfQ0xBU1M9InNjYXR0ZXItbGFiZWwtdGV4dC1hcmVhIixlLl9MQUJFTF9NQVJHSU5fRlJPTV9CVUJCTEU9MTUsZX0pKG1FdC5YWVBsb3QpO0NUdC5TY2F0dGVyPUZUdDt2YXIgVlR0PXt9OwovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqL09iamVjdC5kZWZpbmVQcm9wZXJ0eShWVHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBVVHQ9Qk8salR0PWZndCxHVHQ9R1N0LFdUdD1KTXQscVR0PVh2dCxZVHQ9VHl0LFhUdD1zU3QsJFR0PShmdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7dmFyIGU9dC5jYWxsKHRoaXMpfHx0aGlzO3JldHVybiBlLmFkZENsYXNzKCJzZWdtZW50LXBsb3QiKSxlLmF0dHIoInN0cm9rZSIsKG5ldyBxVHQuQ29sb3IpLnJhbmdlKClbMF0pLGUuYXR0cigic3Ryb2tlLXdpZHRoIiwiMnB4IiksZX1yZXR1cm4gVVR0Ll9fZXh0ZW5kcyhlLHQpLGUucHJvdG90eXBlLl9jcmVhdGVEcmF3ZXI9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IEdUdC5Qcm94eURyYXdlcigoZnVuY3Rpb24oKXtyZXR1cm4gbmV3IFdUdC5TZWdtZW50U1ZHRHJhd2VyfSksKGZ1bmN0aW9uKCl7cmV0dXJuIFlUdC53YXJuKCJjYW52YXMgcmVuZGVyZXIgaXMgbm90IHN1cHBvcnRlZCBvbiBTZWdtZW50IFBsb3QhIiksbnVsbH0pKX0sZS5wcm90b3R5cGUuX2dlbmVyYXRlRHJhd1N0ZXBzPWZ1bmN0aW9uKCl7cmV0dXJuW3thdHRyVG9Qcm9qZWN0b3I6dGhpcy5fZ2V0QXR0clRvUHJvamVjdG9yKCksYW5pbWF0b3I6bmV3IGpUdC5OdWxsfV19LGUucHJvdG90eXBlLl9maWx0ZXJGb3JQcm9wZXJ0eT1mdW5jdGlvbihlKXtyZXR1cm4gdC5wcm90b3R5cGUuX2ZpbHRlckZvclByb3BlcnR5LmNhbGwodGhpcywieDIiPT09ZT8ieCI6InkyIj09PWU/InkiOmUpfSxlLnByb3RvdHlwZS54PWZ1bmN0aW9uKG4saSl7aWYobnVsbD09bilyZXR1cm4gdC5wcm90b3R5cGUueC5jYWxsKHRoaXMpO2lmKG51bGw9PWkpdC5wcm90b3R5cGUueC5jYWxsKHRoaXMsbik7ZWxzZXt0LnByb3RvdHlwZS54LmNhbGwodGhpcyxuLGkpO3ZhciByPXRoaXMueDIoKSxvPXImJnIuYWNjZXNzb3I7bnVsbCE9byYmdGhpcy5fYmluZFByb3BlcnR5KGUuX1gyX0tFWSxvLGkpfXJldHVybiB0aGlzfSxlLnByb3RvdHlwZS54Mj1mdW5jdGlvbih0KXtpZihudWxsPT10KXJldHVybiB0aGlzLl9wcm9wZXJ0eUJpbmRpbmdzLmdldChlLl9YMl9LRVkpO3ZhciBuPXRoaXMueCgpO3JldHVybiB0aGlzLl9iaW5kUHJvcGVydHkoZS5fWDJfS0VZLHQsbiYmbi5zY2FsZSksdGhpcy5yZW5kZXIoKSx0aGlzfSxlLnByb3RvdHlwZS55PWZ1bmN0aW9uKG4saSl7aWYobnVsbD09bilyZXR1cm4gdC5wcm90b3R5cGUueS5jYWxsKHRoaXMpO2lmKG51bGw9PWkpdC5wcm90b3R5cGUueS5jYWxsKHRoaXMsbik7ZWxzZXt0LnByb3RvdHlwZS55LmNhbGwodGhpcyxuLGkpO3ZhciByPXRoaXMueTIoKSxvPXImJnIuYWNjZXNzb3I7bnVsbCE9byYmdGhpcy5fYmluZFByb3BlcnR5KGUuX1kyX0tFWSxvLGkpfXJldHVybiB0aGlzfSxlLnByb3RvdHlwZS55Mj1mdW5jdGlvbih0KXtpZihudWxsPT10KXJldHVybiB0aGlzLl9wcm9wZXJ0eUJpbmRpbmdzLmdldChlLl9ZMl9LRVkpO3ZhciBuPXRoaXMueSgpO3JldHVybiB0aGlzLl9iaW5kUHJvcGVydHkoZS5fWTJfS0VZLHQsbiYmbi5zY2FsZSksdGhpcy5yZW5kZXIoKSx0aGlzfSxlLnByb3RvdHlwZS5fcHJvcGVydHlQcm9qZWN0b3JzPWZ1bmN0aW9uKCl7dmFyIGU9dC5wcm90b3R5cGUuX3Byb3BlcnR5UHJvamVjdG9ycy5jYWxsKHRoaXMpO3JldHVybiBlLngxPVhUdC5QbG90Ll9zY2FsZWRBY2Nlc3Nvcih0aGlzLngoKSksZS54Mj1udWxsPT10aGlzLngyKCk/WFR0LlBsb3QuX3NjYWxlZEFjY2Vzc29yKHRoaXMueCgpKTpYVHQuUGxvdC5fc2NhbGVkQWNjZXNzb3IodGhpcy54MigpKSxlLnkxPVhUdC5QbG90Ll9zY2FsZWRBY2Nlc3Nvcih0aGlzLnkoKSksZS55Mj1udWxsPT10aGlzLnkyKCk/WFR0LlBsb3QuX3NjYWxlZEFjY2Vzc29yKHRoaXMueSgpKTpYVHQuUGxvdC5fc2NhbGVkQWNjZXNzb3IodGhpcy55MigpKSxlfSxlLnByb3RvdHlwZS5lbnRpdGllc0F0PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuZW50aXR5TmVhcmVzdCh0KTtyZXR1cm4gbnVsbCE9ZT9bZV06W119LGUucHJvdG90eXBlLmVudGl0aWVzSW49ZnVuY3Rpb24odCxlKXt2YXIgbixpO2lmKG51bGw9PWUpe249e21pbjp0LnRvcExlZnQueCxtYXg6dC5ib3R0b21SaWdodC54fSxpPXttaW46dC50b3BMZWZ0LnksbWF4OnQuYm90dG9tUmlnaHQueX19ZWxzZSBuPXQsaT1lO3JldHVybiB0aGlzLl9lbnRpdGllc0ludGVyc2VjdGluZyhuLGkpfSxlLnByb3RvdHlwZS5fZW50aXRpZXNJbnRlcnNlY3Rpbmc9ZnVuY3Rpb24odCxlKXtmb3IodmFyIG49W10saT10aGlzLl9nZXRBdHRyVG9Qcm9qZWN0b3IoKSxyPXRoaXMuZW50aXRpZXMoKSxvPXIubGVuZ3RoLGE9MDthPG87YSsrKXt2YXIgcz1yW2FdO3RoaXMuX2xpbmVJbnRlcnNlY3RzQm94KHMsdCxlLGkpJiZuLnB1c2gocyl9cmV0dXJuIG59LGUucHJvdG90eXBlLl9saW5lSW50ZXJzZWN0c0JveD1mdW5jdGlvbih0LGUsbixpKXt2YXIgcj10aGlzLG89aS54MSh0LmRhdHVtLHQuaW5kZXgsdC5kYXRhc2V0KSxhPWkueDIodC5kYXR1bSx0LmluZGV4LHQuZGF0YXNldCkscz1pLnkxKHQuZGF0dW0sdC5pbmRleCx0LmRhdGFzZXQpLGw9aS55Mih0LmRhdHVtLHQuaW5kZXgsdC5kYXRhc2V0KTtpZihlLm1pbjw9byYmbzw9ZS5tYXgmJm4ubWluPD1zJiZzPD1uLm1heHx8ZS5taW48PWEmJmE8PWUubWF4JiZuLm1pbjw9bCYmbDw9bi5tYXgpcmV0dXJuITA7dmFyIGM9e3g6byx5OnN9LHU9e3g6YSx5Omx9LGg9W3t4OmUubWluLHk6bi5taW59LHt4OmUubWluLHk6bi5tYXh9LHt4OmUubWF4LHk6bi5tYXh9LHt4OmUubWF4LHk6bi5taW59XTtyZXR1cm4gaC5maWx0ZXIoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIDAhPT1lJiYoci5fbGluZUludGVyc2VjdHNTZWdtZW50KGMsdSx0LGhbZS0xXSkmJnIuX2xpbmVJbnRlcnNlY3RzU2VnbWVudCh0LGhbZS0xXSxjLHUpKX0pKS5sZW5ndGg+MH0sZS5wcm90b3R5cGUuX2xpbmVJbnRlcnNlY3RzU2VnbWVudD1mdW5jdGlvbih0LGUsbixpKXt2YXIgcj1mdW5jdGlvbih0LGUsbil7cmV0dXJuKGUueC10LngpKihuLnktZS55KS0oZS55LXQueSkqKG4ueC1lLngpfTtyZXR1cm4gcih0LGUsbikqcih0LGUsaSk8MH0sZS5fWDJfS0VZPSJ4MiIsZS5fWTJfS0VZPSJ5MiIsZX0pKG1FdC5YWVBsb3QpO1ZUdC5TZWdtZW50PSRUdDt2YXIgS1R0PXt9OwovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqL09iamVjdC5kZWZpbmVQcm9wZXJ0eShLVHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBaVHQ9Qk8sSlR0PXdwdCxRVHQ9Zmd0LHRDdD1jU3QsZUN0PURfdCxuQ3Q9c1N0LGlDdD0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3ZhciBlPXQuY2FsbCh0aGlzKXx8dGhpcztyZXR1cm4gZS5fc3RhY2tpbmdSZXN1bHQ9dEN0Lm1lbVRodW5rKChmdW5jdGlvbigpe3JldHVybiBlLmRhdGFzZXRzKCl9KSwoZnVuY3Rpb24oKXtyZXR1cm4gZS54KCkuYWNjZXNzb3J9KSwoZnVuY3Rpb24oKXtyZXR1cm4gZS55KCkuYWNjZXNzb3J9KSwoZnVuY3Rpb24oKXtyZXR1cm4gZS5fc3RhY2tpbmdPcmRlcn0pLChmdW5jdGlvbih0LGUsbixpKXtyZXR1cm4gZUN0LlN0YWNraW5nLnN0YWNrKHQsZSxuLGkpfSkpLGUuX3N0YWNrZWRFeHRlbnQ9dEN0Lm1lbVRodW5rKGUuX3N0YWNraW5nUmVzdWx0LChmdW5jdGlvbigpe3JldHVybiBlLngoKS5hY2Nlc3Nvcn0pLChmdW5jdGlvbigpe3JldHVybiBlLl9maWx0ZXJGb3JQcm9wZXJ0eSgieSIpfSksKGZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gZUN0LlN0YWNraW5nLnN0YWNrZWRFeHRlbnQodCxlLG4pfSkpLGUuX2Jhc2VsaW5lVmFsdWU9MCxlLl9zdGFja2luZ09yZGVyPSJib3R0b211cCIsZS5hZGRDbGFzcygic3RhY2tlZC1hcmVhLXBsb3QiKSxlLl9iYXNlbGluZVZhbHVlUHJvdmlkZXI9ZnVuY3Rpb24oKXtyZXR1cm5bZS5fYmFzZWxpbmVWYWx1ZV19LGUuY3JvcHBlZFJlbmRlcmluZ0VuYWJsZWQoITEpLGV9cmV0dXJuIFpUdC5fX2V4dGVuZHMoZSx0KSxlLnByb3RvdHlwZS5jcm9wcGVkUmVuZGVyaW5nRW5hYmxlZD1mdW5jdGlvbihlKXtyZXR1cm4gbnVsbD09ZT90LnByb3RvdHlwZS5jcm9wcGVkUmVuZGVyaW5nRW5hYmxlZC5jYWxsKHRoaXMpOmU/KGVDdC5XaW5kb3cud2FybigiV2FybmluZzogU3RhY2tlZCBBcmVhIFBsb3QgZG9lcyBub3Qgc3VwcG9ydCBjcm9wcGVkIHJlbmRlcmluZy4iKSx0aGlzKTp0LnByb3RvdHlwZS5jcm9wcGVkUmVuZGVyaW5nRW5hYmxlZC5jYWxsKHRoaXMsZSl9LGUucHJvdG90eXBlLl9nZXRBbmltYXRvcj1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IFFUdC5OdWxsfSxlLnByb3RvdHlwZS5fc2V0dXA9ZnVuY3Rpb24oKXt0LnByb3RvdHlwZS5fc2V0dXAuY2FsbCh0aGlzKSx0aGlzLl9iYXNlbGluZT10aGlzLl9yZW5kZXJBcmVhLmFwcGVuZCgibGluZSIpLmNsYXNzZWQoImJhc2VsaW5lIiwhMCl9LGUucHJvdG90eXBlLng9ZnVuY3Rpb24oZSxuKXtyZXR1cm4gbnVsbD09ZT90LnByb3RvdHlwZS54LmNhbGwodGhpcyk6KG51bGw9PW4/dC5wcm90b3R5cGUueC5jYWxsKHRoaXMsZSk6dC5wcm90b3R5cGUueC5jYWxsKHRoaXMsZSxuKSx0aGlzLl9jaGVja1NhbWVEb21haW4oKSx0aGlzKX0sZS5wcm90b3R5cGUueT1mdW5jdGlvbihlLG4pe3JldHVybiBudWxsPT1lP3QucHJvdG90eXBlLnkuY2FsbCh0aGlzKToobnVsbD09bj90LnByb3RvdHlwZS55LmNhbGwodGhpcyxlKTp0LnByb3RvdHlwZS55LmNhbGwodGhpcyxlLG4pLHRoaXMuX2NoZWNrU2FtZURvbWFpbigpLHRoaXMpfSxlLnByb3RvdHlwZS55T2Zmc2V0PWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcy5fc3RhY2tpbmdSZXN1bHQoKTtpZihudWxsIT1uKXt2YXIgaT1uLmdldCh0KTtpZihudWxsIT1pKXt2YXIgcj1pLmdldChTdHJpbmcoZSkpO2lmKG51bGwhPXIpcmV0dXJuIHIub2Zmc2V0fX19LGUucHJvdG90eXBlLnN0YWNraW5nT3JkZXI9ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5fc3RhY2tpbmdPcmRlcjoodGhpcy5fc3RhY2tpbmdPcmRlcj10LHRoaXMuX29uRGF0YXNldFVwZGF0ZSgpLHRoaXMpfSxlLnByb3RvdHlwZS5kb3duc2FtcGxpbmdFbmFibGVkPWZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT1lP3QucHJvdG90eXBlLmRvd25zYW1wbGluZ0VuYWJsZWQuY2FsbCh0aGlzKTooZUN0LldpbmRvdy53YXJuKCJXYXJuaW5nOiBTdGFja2VkIEFyZWEgUGxvdCBkb2VzIG5vdCBzdXBwb3J0IGRvd25zYW1wbGluZyIpLHRoaXMpfSxlLnByb3RvdHlwZS5fYWRkaXRpb25hbFBhaW50PWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy55KCkuc2NhbGUuc2NhbGUodGhpcy5fYmFzZWxpbmVWYWx1ZSksZT17eDE6MCx5MTp0LHgyOnRoaXMud2lkdGgoKSx5Mjp0fTt0aGlzLl9nZXRBbmltYXRvcigiYmFzZWxpbmUiKS5hbmltYXRlKHRoaXMuX2Jhc2VsaW5lLGUpfSxlLnByb3RvdHlwZS5fdXBkYXRlWVNjYWxlPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy55KCksZT10JiZ0LnNjYWxlO251bGwhPWUmJihlLmFkZFBhZGRpbmdFeGNlcHRpb25zUHJvdmlkZXIodGhpcy5fYmFzZWxpbmVWYWx1ZVByb3ZpZGVyKSxlLmFkZEluY2x1ZGVkVmFsdWVzUHJvdmlkZXIodGhpcy5fYmFzZWxpbmVWYWx1ZVByb3ZpZGVyKSl9LGUucHJvdG90eXBlLl9vbkRhdGFzZXRVcGRhdGU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY2hlY2tTYW1lRG9tYWluKCksdC5wcm90b3R5cGUuX29uRGF0YXNldFVwZGF0ZS5jYWxsKHRoaXMpLHRoaXN9LGUucHJvdG90eXBlLmdldEV4dGVudHNGb3JQcm9wZXJ0eT1mdW5jdGlvbihlKXtyZXR1cm4ieSI9PT1lP1t0aGlzLl9zdGFja2VkRXh0ZW50KCldOnQucHJvdG90eXBlLmdldEV4dGVudHNGb3JQcm9wZXJ0eS5jYWxsKHRoaXMsZSl9LGUucHJvdG90eXBlLl9jaGVja1NhbWVEb21haW49ZnVuY3Rpb24oKXtpZih0aGlzLl9wcm9qZWN0b3JzUmVhZHkoKSl7dmFyIHQ9dGhpcy5kYXRhc2V0cygpLG49dGhpcy54KCkuYWNjZXNzb3IsaT10Lm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIEpUdC5zZXQodC5kYXRhKCkubWFwKChmdW5jdGlvbihlLGkpe3JldHVybiBlQ3QuU3RhY2tpbmcubm9ybWFsaXplS2V5KG4oZSxpLHQpKX0pKSkudmFsdWVzKCl9KSkscj1lLl9kb21haW5LZXlzKHQsbik7aS5zb21lKChmdW5jdGlvbih0KXtyZXR1cm4gdC5sZW5ndGghPT1yLmxlbmd0aH0pKSYmZUN0LldpbmRvdy53YXJuKCJ0aGUgZG9tYWlucyBhY3Jvc3MgdGhlIGRhdGFzZXRzIGFyZSBub3QgdGhlIHNhbWUuIFBsb3QgbWF5IHByb2R1Y2UgdW5pbnRlbmRlZCBiZWhhdmlvci4iKX19LGUuX2RvbWFpbktleXM9ZnVuY3Rpb24odCxlKXt2YXIgbj1KVHQuc2V0KCk7cmV0dXJuIHQuZm9yRWFjaCgoZnVuY3Rpb24odCl7Zm9yKHZhciBpPXQuZGF0YSgpLHI9aS5sZW5ndGgsbz0wO288cjtvKyspe24uYWRkKGUoaVtvXSxvLHQpKX19KSksbi52YWx1ZXMoKX0sZS5wcm90b3R5cGUuX2Nvb3JkaW5hdGVQcm9qZWN0b3JzPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPW5DdC5QbG90Ll9zY2FsZWRBY2Nlc3Nvcih0aGlzLngoKSksbj10aGlzLnkoKS5hY2Nlc3NvcixpPXRoaXMueCgpLmFjY2Vzc29yLHI9ZnVuY3Rpb24odCxlLG4pe3JldHVybiBlQ3QuU3RhY2tpbmcubm9ybWFsaXplS2V5KGkodCxlLG4pKX0sbz10aGlzLl9zdGFja2luZ1Jlc3VsdCgpO3JldHVybltlLGZ1bmN0aW9uKGUsaSxhKXt2YXIgcz0rbihlLGksYSksbD1vLmdldChhKS5nZXQocihlLGksYSkpLm9mZnNldDtyZXR1cm4gdC55KCkuc2NhbGUuc2NhbGUocytsKX0sZnVuY3Rpb24oZSxuLGkpe3ZhciBhPW8uZ2V0KGkpLmdldChyKGUsbixpKSkub2Zmc2V0O3JldHVybiB0LnkoKS5zY2FsZS5zY2FsZShhKX1dfSxlLnByb3RvdHlwZS5fcHJvcGVydHlQcm9qZWN0b3JzPWZ1bmN0aW9uKCl7dmFyIGU9dC5wcm90b3R5cGUuX3Byb3BlcnR5UHJvamVjdG9ycy5jYWxsKHRoaXMpLG49dGhpcy5fY29vcmRpbmF0ZVByb2plY3RvcnMoKTtyZXR1cm4gZS5kPXRoaXMuX2NvbnN0cnVjdEFyZWFQcm9qZWN0b3IoblswXSxuWzFdLG5bMl0pLGV9LGUucHJvdG90eXBlLl9waXhlbFBvaW50PWZ1bmN0aW9uKGUsbixpKXt2YXIgcj10LnByb3RvdHlwZS5fcGl4ZWxQb2ludC5jYWxsKHRoaXMsZSxuLGkpLG89dGhpcy54KCkuYWNjZXNzb3IoZSxuLGkpLGE9dGhpcy55KCkuYWNjZXNzb3IoZSxuLGkpLHM9dGhpcy55KCkuc2NhbGUuc2NhbGUoK2ErdGhpcy5fc3RhY2tpbmdSZXN1bHQoKS5nZXQoaSkuZ2V0KGVDdC5TdGFja2luZy5ub3JtYWxpemVLZXkobykpLm9mZnNldCk7cmV0dXJue3g6ci54LHk6c319LGV9KShwRXQuQXJlYSk7S1R0LlN0YWNrZWRBcmVhPWlDdDt2YXIgckN0PXt9OwovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqL09iamVjdC5kZWZpbmVQcm9wZXJ0eShyQ3QsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBvQ3Q9Qk8sYUN0PUxndCxzQ3Q9cHZ0LGxDdD1jU3QsY0N0PURfdCx1Q3Q9WUV0LGhDdD1zU3QsZEN0PShmdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUpe3ZvaWQgMD09PWUmJihlPSJ2ZXJ0aWNhbCIpO3ZhciBuPXQuY2FsbCh0aGlzLGUpfHx0aGlzO3JldHVybiBuLl9leHRyZW1hRm9ybWF0dGVyPXNDdC5pZGVudGl0eSgpLG4uX3N0YWNraW5nUmVzdWx0PWxDdC5tZW1UaHVuaygoZnVuY3Rpb24oKXtyZXR1cm4gbi5kYXRhc2V0cygpfSksKGZ1bmN0aW9uKCl7cmV0dXJuIG4ucG9zaXRpb24oKS5hY2Nlc3Nvcn0pLChmdW5jdGlvbigpe3JldHVybiBuLmxlbmd0aCgpLmFjY2Vzc29yfSksKGZ1bmN0aW9uKCl7cmV0dXJuIG4uX3N0YWNraW5nT3JkZXJ9KSwoZnVuY3Rpb24odCxlLG4saSl7cmV0dXJuIGNDdC5TdGFja2luZy5zdGFjayh0LGUsbixpKX0pKSxuLl9zdGFja2VkRXh0ZW50PWxDdC5tZW1UaHVuayhuLl9zdGFja2luZ1Jlc3VsdCwoZnVuY3Rpb24oKXtyZXR1cm4gbi5wb3NpdGlvbigpLmFjY2Vzc29yfSksKGZ1bmN0aW9uKCl7cmV0dXJuIG4uX2ZpbHRlckZvclByb3BlcnR5KG4uX2lzVmVydGljYWw/InkiOiJ4Iil9KSwoZnVuY3Rpb24odCxlLG4pe3JldHVybiBjQ3QuU3RhY2tpbmcuc3RhY2tlZEV4dGVudCh0LGUsbil9KSksbi5hZGRDbGFzcygic3RhY2tlZC1iYXItcGxvdCIpLG4uX3N0YWNraW5nT3JkZXI9ImJvdHRvbXVwIixufXJldHVybiBvQ3QuX19leHRlbmRzKGUsdCksZS5wcm90b3R5cGUuc3RhY2tpbmdPcmRlcj1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9zdGFja2luZ09yZGVyOih0aGlzLl9zdGFja2luZ09yZGVyPXQsdGhpcy5fb25EYXRhc2V0VXBkYXRlKCksdGhpcyl9LGUucHJvdG90eXBlLmV4dHJlbWFGb3JtYXR0ZXI9ZnVuY3Rpb24odCl7cmV0dXJuIDA9PT1hcmd1bWVudHMubGVuZ3RoP3RoaXMuX2V4dHJlbWFGb3JtYXR0ZXI6KHRoaXMuX2V4dHJlbWFGb3JtYXR0ZXI9dCx0aGlzLnJlbmRlcigpLHRoaXMpfSxlLnByb3RvdHlwZS5fc2V0dXA9ZnVuY3Rpb24oKXt0LnByb3RvdHlwZS5fc2V0dXAuY2FsbCh0aGlzKSx0aGlzLl9sYWJlbEFyZWE9dGhpcy5fcmVuZGVyQXJlYS5hcHBlbmQoImciKS5jbGFzc2VkKHVDdC5CYXIuX0xBQkVMX0FSRUFfQ0xBU1MsITApO3ZhciBlPW5ldyBhQ3QuU3ZnQ29udGV4dCh0aGlzLl9sYWJlbEFyZWEubm9kZSgpKTt0aGlzLl9tZWFzdXJlcj1uZXcgYUN0LkNhY2hlTWVhc3VyZXIoZSksdGhpcy5fd3JpdGVyPW5ldyBhQ3QuV3JpdGVyKHRoaXMuX21lYXN1cmVyLGUpfSxlLnByb3RvdHlwZS5fZHJhd0xhYmVscz1mdW5jdGlvbigpe3ZhciBuPXRoaXM7dC5wcm90b3R5cGUuX2RyYXdMYWJlbHMuY2FsbCh0aGlzKSx0aGlzLl9sYWJlbEFyZWEuc2VsZWN0QWxsKCJnIikucmVtb3ZlKCk7dmFyIGk9K3RoaXMuYmFzZWxpbmVWYWx1ZSgpLHI9dGhpcy5wb3NpdGlvbigpLnNjYWxlLG89dGhpcy5sZW5ndGgoKS5zY2FsZSxhPWNDdC5TdGFja2luZy5zdGFja2VkRXh0ZW50cyh0aGlzLl9zdGFja2luZ1Jlc3VsdCgpKSxzPWEubWluaW11bUV4dGVudHMsbD1bXSxjPWZ1bmN0aW9uKHQsZSl7dmFyIGE9bi5fZ2VuZXJhdGVBdHRyVG9Qcm9qZWN0b3IoKSxzPW4ud2lkdGgoKSxjPW4uaGVpZ2h0KCk7dC5mb3JFYWNoKChmdW5jdGlvbih0KXtpZih0LmV4dGVudCE9PWkpe3ZhciB1PW4uZXh0cmVtYUZvcm1hdHRlcigpKHQuZXh0ZW50KSxoPW4uX21lYXN1cmVyLm1lYXN1cmUodSksZD10LnN0YWNrZWREYXR1bSxwPWQub3JpZ2luYWxEYXR1bSxmPWQub3JpZ2luYWxJbmRleCxtPWQub3JpZ2luYWxEYXRhc2V0O2lmKCFuLl9pc0RhdHVtT25TY3JlZW4oYSxzLGMscCxmLG0pKXJldHVybjt2YXIgZz1oQ3QuUGxvdC5fc2NhbGVkQWNjZXNzb3Iobi5hdHRyKHVDdC5CYXIuX0JBUl9USElDS05FU1NfS0VZKSkocCxmLG0pLF89by5zY2FsZSh0LmV4dGVudCkseT1uLl9nZXRQb3NpdGlvbkF0dHIoci5zY2FsZSh0LmF4aXNWYWx1ZSksZykrZy8yLHY9ZShuLl9pc1ZlcnRpY2FsP3t4OnkseTpffTp7eDpfLHk6eX0saCxnKSxiPShmdW5jdGlvbih0LGUsaSl7dmFyIHI9ZS50b3BMZWZ0LG89ci54LGE9ci55LHM9ZS5ib3R0b21SaWdodC54LWUudG9wTGVmdC54LGw9ZS5ib3R0b21SaWdodC55LWUudG9wTGVmdC55LGM9bi5faXNWZXJ0aWNhbD9zPmk6bD5pO2lmKCFjKXt2YXIgdT1uLl9sYWJlbEFyZWEuYXBwZW5kKCJnIikuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrbysiLCAiK2ErIikiKTt1LmNsYXNzZWQoInN0YWNrZWQtYmFyLWxhYmVsIiwhMCksbi5fd3JpdGVyLndyaXRlKHQscyxsLHt4QWxpZ246ImNlbnRlciIseUFsaWduOiJjZW50ZXIifSx1Lm5vZGUoKSl9cmV0dXJuIGN9KSh1LHt0b3BMZWZ0OnYsYm90dG9tUmlnaHQ6e3g6di54K2gud2lkdGgseTp2LnkraC5oZWlnaHR9fSxnKTtsLnB1c2goYil9fSkpfTtjKGEubWF4aW11bUV4dGVudHMsKGZ1bmN0aW9uKHQsaSxyKXt2YXIgbz1uLl9pc1ZlcnRpY2FsP2kud2lkdGg6aS5oZWlnaHQ7cmV0dXJue3g6bi5faXNWZXJ0aWNhbD90Lngtby8yOnQueCtlLl9FWFRSRU1BX0xBQkVMX01BUkdJTl9GUk9NX0JBUix5Om4uX2lzVmVydGljYWw/dC55LShuLl9pc1ZlcnRpY2FsP2kuaGVpZ2h0Omkud2lkdGgpOnQueS1vLzJ9fSkpLGMocywoZnVuY3Rpb24odCxpLHIpe3ZhciBvPW4uX2lzVmVydGljYWw/aS53aWR0aDppLmhlaWdodDtyZXR1cm57eDpuLl9pc1ZlcnRpY2FsP3QueC1vLzI6dC54LShuLl9pc1ZlcnRpY2FsP2kuaGVpZ2h0Omkud2lkdGgpLHk6bi5faXNWZXJ0aWNhbD90LnkrZS5fRVhUUkVNQV9MQUJFTF9NQVJHSU5fRlJPTV9CQVI6dC55LW8vMn19KSksbC5zb21lKChmdW5jdGlvbih0KXtyZXR1cm4gdH0pKSYmdGhpcy5fbGFiZWxBcmVhLnNlbGVjdEFsbCgiZyIpLnJlbW92ZSgpfSxlLnByb3RvdHlwZS5fZ2VuZXJhdGVBdHRyVG9Qcm9qZWN0b3I9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLG49dC5wcm90b3R5cGUuX2dlbmVyYXRlQXR0clRvUHJvamVjdG9yLmNhbGwodGhpcyksaT10aGlzLl9pc1ZlcnRpY2FsPyJ5IjoieCIscj10aGlzLmxlbmd0aCgpLnNjYWxlLG89dGhpcy5sZW5ndGgoKS5hY2Nlc3NvcixhPXRoaXMucG9zaXRpb24oKS5hY2Nlc3NvcixzPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gY0N0LlN0YWNraW5nLm5vcm1hbGl6ZUtleShhKHQsZSxuKSl9LGw9dGhpcy5fc3RhY2tpbmdSZXN1bHQoKSxjPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gci5zY2FsZShsLmdldChuKS5nZXQocyh0LGUsbikpLm9mZnNldCl9LHU9ZnVuY3Rpb24odCxlLG4pe3JldHVybiByLnNjYWxlKCtvKHQsZSxuKStsLmdldChuKS5nZXQocyh0LGUsbikpLm9mZnNldCl9LGg9ZnVuY3Rpb24odCxlLG4pe3JldHVybiBNYXRoLmFicyh1KHQsZSxuKS1jKHQsZSxuKSl9O25bdGhpcy5faXNWZXJ0aWNhbD8iaGVpZ2h0Ijoid2lkdGgiXT1oO3ZhciBkPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4rbyh0LGUsbik8MD9jKHQsZSxuKTp1KHQsZSxuKX07cmV0dXJuIG5baV09ZnVuY3Rpb24odCxuLGkpe3JldHVybiBlLl9pc1ZlcnRpY2FsP2QodCxuLGkpOmQodCxuLGkpLWgodCxuLGkpfSxufSxlLnByb3RvdHlwZS5nZXRFeHRlbnRzRm9yUHJvcGVydHk9ZnVuY3Rpb24oZSl7cmV0dXJuIGU9PT0odGhpcy5faXNWZXJ0aWNhbD8ieSI6IngiKT9bdGhpcy5fc3RhY2tlZEV4dGVudCgpXTp0LnByb3RvdHlwZS5nZXRFeHRlbnRzRm9yUHJvcGVydHkuY2FsbCh0aGlzLGUpfSxlLnByb3RvdHlwZS5pbnZhbGlkYXRlQ2FjaGU9ZnVuY3Rpb24oKXt0LnByb3RvdHlwZS5pbnZhbGlkYXRlQ2FjaGUuY2FsbCh0aGlzKSx0aGlzLl9tZWFzdXJlci5yZXNldCgpfSxlLl9FWFRSRU1BX0xBQkVMX01BUkdJTl9GUk9NX0JBUj01LGV9KSh1Q3QuQmFyKTtyQ3QuU3RhY2tlZEJhcj1kQ3Q7dmFyIHBDdD17fTsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi9PYmplY3QuZGVmaW5lUHJvcGVydHkocEN0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgZkN0PUJPLG1DdD1EX3QsZ0N0PXNTdCxfQ3Q9KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXt2YXIgZT10LmNhbGwodGhpcyl8fHRoaXM7cmV0dXJuIGUuX2Nvbm5lY3RvcnNFbmFibGVkPSExLGUuYWRkQ2xhc3MoIndhdGVyZmFsbC1wbG90IiksZX1yZXR1cm4gZkN0Ll9fZXh0ZW5kcyhlLHQpLGUucHJvdG90eXBlLmNvbm5lY3RvcnNFbmFibGVkPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuX2Nvbm5lY3RvcnNFbmFibGVkOih0aGlzLl9jb25uZWN0b3JzRW5hYmxlZD10LHRoaXMpfSxlLnByb3RvdHlwZS50b3RhbD1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9wcm9wZXJ0eUJpbmRpbmdzLmdldChlLl9UT1RBTF9LRVkpOih0aGlzLl9iaW5kUHJvcGVydHkoZS5fVE9UQUxfS0VZLHQsbnVsbCksdGhpcyl9LGUucHJvdG90eXBlLl9hZGRpdGlvbmFsUGFpbnQ9ZnVuY3Rpb24odCl7dmFyIGU9dGhpczt0aGlzLl9jb25uZWN0b3JBcmVhLnNlbGVjdEFsbCgibGluZSIpLnJlbW92ZSgpLHRoaXMuX2Nvbm5lY3RvcnNFbmFibGVkJiZtQ3QuV2luZG93LnNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7cmV0dXJuIGUuX2RyYXdDb25uZWN0b3JzKCl9KSx0KX0sZS5wcm90b3R5cGUuX2NyZWF0ZU5vZGVzRm9yRGF0YXNldD1mdW5jdGlvbihuKXt2YXIgaT10LnByb3RvdHlwZS5fY3JlYXRlTm9kZXNGb3JEYXRhc2V0LmNhbGwodGhpcyxuKTtyZXR1cm4gdGhpcy5fY29ubmVjdG9yQXJlYT10aGlzLl9yZW5kZXJBcmVhLmFwcGVuZCgiZyIpLmNsYXNzZWQoZS5fQ09OTkVDVE9SX0FSRUFfQ0xBU1MsITApLGl9LGUucHJvdG90eXBlLmdldEV4dGVudHNGb3JQcm9wZXJ0eT1mdW5jdGlvbihlKXtyZXR1cm4ieSI9PT1lP1t0aGlzLl9leHRlbnRdOnQucHJvdG90eXBlLmdldEV4dGVudHNGb3JQcm9wZXJ0eS5jYWxsKHRoaXMsZSl9LGUucHJvdG90eXBlLl9nZW5lcmF0ZUF0dHJUb1Byb2plY3Rvcj1mdW5jdGlvbigpe3ZhciBuPXRoaXMsaT10LnByb3RvdHlwZS5fZ2VuZXJhdGVBdHRyVG9Qcm9qZWN0b3IuY2FsbCh0aGlzKSxyPXRoaXMueSgpLnNjYWxlLG89Z0N0LlBsb3QuX3NjYWxlZEFjY2Vzc29yKHRoaXMudG90YWwoKSk7cmV0dXJuIG51bGw9PXRoaXMuYXR0cigieSIpJiYoaS55PWZ1bmN0aW9uKHQsZSxpKXt2YXIgYT1uLnkoKS5hY2Nlc3Nvcih0LGUsaSk7aWYobyh0LGUsaSkpcmV0dXJuIE1hdGgubWluKHIuc2NhbGUoYSksci5zY2FsZSgwKSk7dmFyIHM9bi5fc3VidG90YWxzW2VdO2lmKDA9PT1lKXJldHVybiByLnNjYWxlKGE8MD9zLWE6cyk7dmFyIGw9bi5fc3VidG90YWxzW2UtMV07cmV0dXJuIHIuc2NhbGUocz5sP3M6bCl9KSxudWxsPT10aGlzLmF0dHIoImhlaWdodCIpJiYoaS5oZWlnaHQ9ZnVuY3Rpb24odCxlLGkpe3ZhciBhPW8odCxlLGkpLHM9bi55KCkuYWNjZXNzb3IodCxlLGkpO2lmKGEpcmV0dXJuIE1hdGguYWJzKHIuc2NhbGUocyktci5zY2FsZSgwKSk7dmFyIGw9bi5fc3VidG90YWxzW2VdO2lmKDA9PT1lKXJldHVybiBNYXRoLmFicyhyLnNjYWxlKGwpLXIuc2NhbGUobC1zKSk7dmFyIGM9bi5fc3VidG90YWxzW2UtMV07cmV0dXJuIE1hdGguYWJzKHIuc2NhbGUobCktci5zY2FsZShjKSl9KSxpLmNsYXNzPWZ1bmN0aW9uKHQsaSxyKXt2YXIgYT0iIjtyZXR1cm4gbnVsbCE9bi5hdHRyKCJjbGFzcyIpJiYoYT1uLmF0dHIoImNsYXNzIikuYWNjZXNzb3IodCxpLHIpKyIgIiksbyh0LGkscik/YStlLl9CQVJfVE9UQUxfQ0xBU1M6YSsobi55KCkuYWNjZXNzb3IodCxpLHIpPjA/ZS5fQkFSX0dST1dUSF9DTEFTUzplLl9CQVJfREVDTElORV9DTEFTUyl9LGl9LGUucHJvdG90eXBlLl9vbkRhdGFzZXRVcGRhdGU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fdXBkYXRlU3VidG90YWxzKCksdC5wcm90b3R5cGUuX29uRGF0YXNldFVwZGF0ZS5jYWxsKHRoaXMpLHRoaXN9LGUucHJvdG90eXBlLl9jYWxjdWxhdGVTdWJ0b3RhbHNBbmRFeHRlbnQ9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPU51bWJlci5NQVhfVkFMVUUsbj1OdW1iZXIuTUlOX1ZBTFVFLGk9MCxyPSExLG89dC5kYXRhKCksYT1vLmxlbmd0aCxzPTA7czxhO3MrKyl7dmFyIGw9b1tzXSxjPXRoaXMueSgpLmFjY2Vzc29yKGwscyx0KSx1PXRoaXMudG90YWwoKS5hY2Nlc3NvcihsLHMsdCk7aWYodSYmMCE9PXN8fChpKz1jKSx0aGlzLl9zdWJ0b3RhbHMucHVzaChpKSxpPGUmJihlPWkpLGk+biYmKG49aSksdSYmKGM8ZSYmKGU9YyksYz5uJiYobj1jKSksIXImJnUpe2Zvcih2YXIgaD1jLWksZD0wO2Q8dGhpcy5fc3VidG90YWxzLmxlbmd0aDtkKyspdGhpcy5fc3VidG90YWxzW2RdKz1oO3I9ITAsaSs9aCxlKz1oLG4rPWh9fXRoaXMuX2V4dGVudD1bZSxuXX0sZS5wcm90b3R5cGUuX2RyYXdDb25uZWN0b3JzPWZ1bmN0aW9uKCl7Zm9yKHZhciB0PXRoaXMuX2dldEF0dHJUb1Byb2plY3RvcigpLG49dGhpcy5kYXRhc2V0cygpWzBdLGk9MTtpPG4uZGF0YSgpLmxlbmd0aDtpKyspe3ZhciByPWktMSxvPW4uZGF0YSgpW2ldLGE9bi5kYXRhKClbcl0scz10LngoYSxyLG4pLGw9dC54KG8saSxuKSt0LndpZHRoKG8saSxuKSxjPXQueShvLGksbik7KHRoaXMuX3N1YnRvdGFsc1tpXT4wJiZ0aGlzLl9zdWJ0b3RhbHNbaV0+dGhpcy5fc3VidG90YWxzW3JdfHx0aGlzLl9zdWJ0b3RhbHNbaV08MCYmdGhpcy5fc3VidG90YWxzW2ldPj10aGlzLl9zdWJ0b3RhbHNbcl0pJiYoYz10LnkobyxpLG4pK3QuaGVpZ2h0KG8saSxuKSksdGhpcy5fY29ubmVjdG9yQXJlYS5hcHBlbmQoImxpbmUiKS5jbGFzc2VkKGUuX0NPTk5FQ1RPUl9DTEFTUywhMCkuYXR0cigieDEiLHMpLmF0dHIoIngyIixsKS5hdHRyKCJ5MSIsYykuYXR0cigieTIiLGMpfX0sZS5wcm90b3R5cGUuX3VwZGF0ZVN1YnRvdGFscz1mdW5jdGlvbigpe3ZhciB0PXRoaXMuZGF0YXNldHMoKTtpZih0Lmxlbmd0aD4wKXt2YXIgZT10W3QubGVuZ3RoLTFdO3RoaXMuX3N1YnRvdGFscz1uZXcgQXJyYXksdGhpcy5fY2FsY3VsYXRlU3VidG90YWxzQW5kRXh0ZW50KGUpfX0sZS5fQkFSX0RFQ0xJTkVfQ0xBU1M9IndhdGVyZmFsbC1kZWNsaW5lIixlLl9CQVJfR1JPV1RIX0NMQVNTPSJ3YXRlcmZhbGwtZ3Jvd3RoIixlLl9CQVJfVE9UQUxfQ0xBU1M9IndhdGVyZmFsbC10b3RhbCIsZS5fQ09OTkVDVE9SX0NMQVNTPSJjb25uZWN0b3IiLGUuX0NPTk5FQ1RPUl9BUkVBX0NMQVNTPSJjb25uZWN0b3ItYXJlYSIsZS5fVE9UQUxfS0VZPSJ0b3RhbCIsZX0pKFlFdC5CYXIpO3BDdC5XYXRlcmZhbGw9X0N0LChmdW5jdGlvbih0KXsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi8KT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBlPUJPO2UuX19leHBvcnRTdGFyKHBFdCx0KSxlLl9fZXhwb3J0U3RhcihZRXQsdCksZS5fX2V4cG9ydFN0YXIobFN0LHQpLGUuX19leHBvcnRTdGFyKFhFdCx0KSxlLl9fZXhwb3J0U3RhcihmRXQsdCksZS5fX2V4cG9ydFN0YXIoZVR0LHQpLGUuX19leHBvcnRTdGFyKG1UdCx0KSxlLl9fZXhwb3J0U3RhcihDVHQsdCksZS5fX2V4cG9ydFN0YXIoVlR0LHQpLGUuX19leHBvcnRTdGFyKEtUdCx0KSxlLl9fZXhwb3J0U3RhcihyQ3QsdCksZS5fX2V4cG9ydFN0YXIocEN0LHQpfSkoZEV0KTt2YXIgeUN0LHZDdD17fTsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi9mdW5jdGlvbiBiQ3QodCl7cmV0dXJuIGNsYXNzIGV4dGVuZHMgdHtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5sb2FkS2V5PSIiLHRoaXMuZGF0YVRvTG9hZD1bXSx0aGlzLmdldERhdGFMb2FkTmFtZT10PT5TdHJpbmcodCksdGhpcy5kYXRhTG9hZGluZz0hMSx0aGlzLmRhdGFMb2FkZWRBdExlYXN0T25jZT0hMSx0aGlzLl9pc0Nvbm5lY3RlZD0hMSx0aGlzLl9kYXRhTG9hZFN0YXRlPW5ldyBNYXAsdGhpcy5fY2FuY2VsbGVyPW5ldyB4Tyx0aGlzLl9sb2FkRGF0YUFzeW5jPW51bGwsdGhpcy5fbG9hZERhdGE9Q2UuZXhwb3J0cy50aHJvdHRsZSh0aGlzLl9sb2FkRGF0YUltcGwsMTAwLHtsZWFkaW5nOiEwLHRyYWlsaW5nOiEwfSl9Y29ubmVjdGVkQ2FsbGJhY2soKXtzdXBlci5jb25uZWN0ZWRDYWxsYmFjaygpLHRoaXMuX2lzQ29ubmVjdGVkPSEwfWRpc2Nvbm5lY3RlZENhbGxiYWNrKCl7c3VwZXIuZGlzY29ubmVjdGVkQ2FsbGJhY2soKSx0aGlzLl9pc0Nvbm5lY3RlZD0hMX1zdGF0aWMgZ2V0IHByb3BlcnRpZXMoKXtyZXR1cm57YWN0aXZlOnt0eXBlOkJvb2xlYW4sb2JzZXJ2ZXI6Il9sb2FkRGF0YUlmQWN0aXZlIn0sX2lzQ29ubmVjdGVkOnt0eXBlOkJvb2xlYW59LGxvYWRLZXk6e3R5cGU6U3RyaW5nfSxkYXRhVG9Mb2FkOnt0eXBlOkFycmF5fSxnZXREYXRhTG9hZE5hbWU6e3R5cGU6T2JqZWN0fSxsb2FkRGF0YUNhbGxiYWNrOnt0eXBlOk9iamVjdH0scmVxdWVzdERhdGE6e3R5cGU6T2JqZWN0fX19c3RhdGljIGdldCBvYnNlcnZlcnMoKXtyZXR1cm5bIl9kYXRhVG9Mb2FkQ2hhbmdlZChfaXNDb25uZWN0ZWQsIGRhdGFUb0xvYWQuKikiXX1vbkxvYWRGaW5pc2goKXt9cmVsb2FkKCl7dGhpcy5fZGF0YUxvYWRTdGF0ZS5jbGVhcigpLHRoaXMuX2xvYWREYXRhKCl9cmVzZXQoKXtudWxsIT10aGlzLl9sb2FkRGF0YUFzeW5jJiYoY2xlYXJUaW1lb3V0KHRoaXMuX2xvYWREYXRhQXN5bmMpLHRoaXMuX2xvYWREYXRhQXN5bmM9bnVsbCksdGhpcy5fY2FuY2VsbGVyJiZ0aGlzLl9jYW5jZWxsZXIuY2FuY2VsQWxsKCksdGhpcy5fZGF0YUxvYWRTdGF0ZSYmdGhpcy5fZGF0YUxvYWRTdGF0ZS5jbGVhcigpLHRoaXMuX2lzQ29ubmVjdGVkJiZ0aGlzLl9sb2FkRGF0YSgpfV9kYXRhVG9Mb2FkQ2hhbmdlZCgpe3RoaXMuX2lzQ29ubmVjdGVkJiZ0aGlzLl9sb2FkRGF0YSgpfWRldGFjaGVkKCl7bnVsbCE9dGhpcy5fbG9hZERhdGFBc3luYyYmKGNsZWFyVGltZW91dCh0aGlzLl9sb2FkRGF0YUFzeW5jKSx0aGlzLl9sb2FkRGF0YUFzeW5jPW51bGwpfV9sb2FkRGF0YUlmQWN0aXZlKCl7dGhpcy5hY3RpdmUmJnRoaXMuX2xvYWREYXRhKCl9X2xvYWREYXRhSW1wbCgpe3RoaXMuYWN0aXZlJiYobnVsbCE9PXRoaXMuX2xvYWREYXRhQXN5bmMmJmNsZWFyVGltZW91dCh0aGlzLl9sb2FkRGF0YUFzeW5jKSx0aGlzLl9sb2FkRGF0YUFzeW5jPXNldFRpbWVvdXQodGhpcy5fY2FuY2VsbGVyLmNhbmNlbGxhYmxlKCh0PT57aWYodC5jYW5jZWxsZWQpcmV0dXJuO3RoaXMuZGF0YUxvYWRpbmc9ITA7Y29uc3QgZT10aGlzLmRhdGFUb0xvYWQuZmlsdGVyKCh0PT57Y29uc3QgZT10aGlzLmdldERhdGFMb2FkTmFtZSh0KTtyZXR1cm4hdGhpcy5fZGF0YUxvYWRTdGF0ZS5oYXMoZSl9KSk7Zm9yKGNvbnN0IHQgb2YgZSl7Y29uc3QgZT10aGlzLmdldERhdGFMb2FkTmFtZSh0KTt0aGlzLl9kYXRhTG9hZFN0YXRlLnNldChlLHlDdC5MT0FESU5HKX1jb25zdCBuPXRoaXMuX2NhbmNlbGxlci5jYW5jZWxsYWJsZSgodD0+e2lmKHQuY2FuY2VsbGVkKXJldHVybjtjb25zdHtpdGVtOmUsZGF0YTpufT10LnZhbHVlLGk9dGhpcy5nZXREYXRhTG9hZE5hbWUoZSk7dGhpcy5fZGF0YUxvYWRTdGF0ZS5zZXQoaSx5Q3QuTE9BREVEKSx0aGlzLmxvYWREYXRhQ2FsbGJhY2sodGhpcyxlLG4pfSkpLGk9dGhpcy5fY2FuY2VsbGVyLmNhbmNlbGxhYmxlKCh0PT57aWYoIXQuY2FuY2VsbGVkKXtjb25zdCB0PW5ldyBTZXQoZS5tYXAoKHQ9PnRoaXMuZ2V0RGF0YUxvYWROYW1lKHQpKSkpO3RoaXMuZGF0YVRvTG9hZC5zb21lKChlPT50Lmhhcyh0aGlzLmdldERhdGFMb2FkTmFtZShlKSkpKSYmdGhpcy5vbkxvYWRGaW5pc2goKSx0aGlzLl9sb2FkRGF0YUFzeW5jPW51bGwsdGhpcy5kYXRhTG9hZGVkQXRMZWFzdE9uY2U9ITB9QXJyYXkuZnJvbSh0aGlzLl9kYXRhTG9hZFN0YXRlLnZhbHVlcygpKS5pbmNsdWRlcyh5Q3QuTE9BRElORyl8fCh0aGlzLmRhdGFMb2FkaW5nPSExKX0pKTt0aGlzLnJlcXVlc3REYXRhKGUsbiwoKCk9Pmkodm9pZCAwKSkpfSkpKSl9fX1PYmplY3QuZGVmaW5lUHJvcGVydHkodkN0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSx2Q3QudmVyc2lvbj0iMy45LjAiLChmdW5jdGlvbih0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIGU9Qk87dC5BbmltYXRvcnM9Zmd0LHQuQXhlcz1BZ3QsdC5Db21wb25lbnRzPXR4dCx0LkNvbmZpZ3M9Q3l0LHQuRm9ybWF0dGVycz1wdnQsdC5SZW5kZXJDb250cm9sbGVyPXpfdCx0LlJlbmRlclBvbGljaWVzPVF5dCx0LlN5bWJvbEZhY3Rvcmllcz1Id3QsdC5EaXNwYXRjaGVycz1yeHQsdC5EcmF3ZXJzPVBNdCx0LkludGVyYWN0aW9ucz1ueHQsdC5QbG90cz1kRXQsdC5TY2FsZXM9WHZ0LHQuVXRpbHM9RF90LGUuX19leHBvcnRTdGFyKGR2dCx0KSx0LlRpbWVJbnRlcnZhbD1ZdnQuVGltZUludGVydmFsLGUuX19leHBvcnRTdGFyKE9fdCx0KSxlLl9fZXhwb3J0U3Rhcih5d3QsdCksZS5fX2V4cG9ydFN0YXIoZlN0LHQpLHQudmVyc2lvbj12Q3QudmVyc2lvbixlLl9fZXhwb3J0U3RhcihheHQsdCksZS5fX2V4cG9ydFN0YXIoR1N0LHQpLGUuX19leHBvcnRTdGFyKHZ4dCx0KSxlLl9fZXhwb3J0U3RhcihMeHQsdCksZS5fX2V4cG9ydFN0YXIobUV0LHQpLGUuX19leHBvcnRTdGFyKHNTdCx0KSxlLl9fZXhwb3J0U3RhcihMYnQsdCksZS5fX2V4cG9ydFN0YXIobGJ0LHQpfSkoTk8pLChmdW5jdGlvbih0KXt0W3QuTE9BRElORz0wXT0iTE9BRElORyIsdFt0LkxPQURFRD0xXT0iTE9BREVEIn0pKHlDdHx8KHlDdD17fSkpO2NvbnN0IHhDdD1be2NoYXJhY3Rlcjoi4pe8IixtZXRob2Q6Tk8uU3ltYm9sRmFjdG9yaWVzLnNxdWFyZX0se2NoYXJhY3Rlcjoi4peGIixtZXRob2Q6Tk8uU3ltYm9sRmFjdG9yaWVzLmRpYW1vbmR9LHtjaGFyYWN0ZXI6IuKWsiIsbWV0aG9kOk5PLlN5bWJvbEZhY3Rvcmllcy50cmlhbmdsZX0se2NoYXJhY3Rlcjoi4piFIixtZXRob2Q6Tk8uU3ltYm9sRmFjdG9yaWVzLnN0YXJ9LHtjaGFyYWN0ZXI6IuKcmiIsbWV0aG9kOk5PLlN5bWJvbEZhY3Rvcmllcy5jcm9zc31dO3ZhciB3Q3Q7IShmdW5jdGlvbih0KXt0LlNURVA9InN0ZXAiLHQuUkVMQVRJVkU9InJlbGF0aXZlIix0LldBTExfVElNRT0id2FsbF90aW1lIn0pKHdDdHx8KHdDdD17fSkpO2Z1bmN0aW9uIFNDdCh0KXtyZXR1cm4gZT0+e2xldCBuLGk9TWF0aC5hYnMoZSk7cmV0dXJuIGk8MWUtMTUmJihpPTApLG49RHkoaT49MWU0fHxpPjAmJmk8LjAxPyIuIit0KyJ+ZSI6Ii4iK3QrIn5nIiksbihlKX19Y29uc3QgTUN0PUR5KCIuNH5zIik7ZnVuY3Rpb24gRUN0KCl7bGV0IHQ9bmV3IE5PLlNjYWxlcy5MaW5lYXI7dC50aWNrR2VuZXJhdG9yKE5PLlNjYWxlcy5UaWNrR2VuZXJhdG9ycy5pbnRlZ2VyVGlja0dlbmVyYXRvcigpKTtsZXQgZT1uZXcgTk8uQXhlcy5OdW1lcmljKHQsImJvdHRvbSIpO3JldHVybiBlLmZvcm1hdHRlcihNQ3QpLHtzY2FsZTp0LGF4aXM6ZSxhY2Nlc3Nvcjp0PT50LnN0ZXB9fWxldCBUQ3Q9Tk8uRm9ybWF0dGVycy50aW1lKCIlYSAlYiAlZSwgJUg6JU06JVMiKTtsZXQgQ0N0PSh0LGUsbik9PntpZihudWxsIT10LnJlbGF0aXZlKXJldHVybiB0LnJlbGF0aXZlO2xldCBpPW4uZGF0YSgpO3JldHVybigrdC53YWxsX3RpbWUtKGkubGVuZ3RoPjA/K2lbMF0ud2FsbF90aW1lOjApKS8zNmU1fSxBQ3Q9dD0+e2xldCBlPSIiLG49TWF0aC5mbG9vcih0LzI0KTt0LT0yNCpuLG4mJihlKz1uKyJkICIpO2xldCBpPU1hdGguZmxvb3IodCk7dC09aSx0Kj02MCwoaXx8bikmJihlKz1pKyJoICIpO2xldCByPU1hdGguZmxvb3IodCk7cmV0dXJuIHQtPXIsdCo9NjAsKHJ8fGl8fG4pJiYoZSs9cisibSAiKSxlK01hdGguZmxvb3IodCkrInMifTtmdW5jdGlvbiBrQ3QodCl7c3dpdGNoKHQpe2Nhc2Ugd0N0LlNURVA6cmV0dXJuIEVDdCgpO2Nhc2Ugd0N0LldBTExfVElNRTpyZXR1cm4oZnVuY3Rpb24gZSgpe2xldCB0PW5ldyBOTy5TY2FsZXMuVGltZTtyZXR1cm57c2NhbGU6dCxheGlzOm5ldyBOTy5BeGVzLlRpbWUodCwiYm90dG9tIiksYWNjZXNzb3I6dD0+dC53YWxsX3RpbWV9fSkoKTtjYXNlIHdDdC5SRUxBVElWRTpyZXR1cm4oZnVuY3Rpb24gbigpe2xldCB0PW5ldyBOTy5TY2FsZXMuTGluZWFyO3JldHVybntzY2FsZTp0LGF4aXM6bmV3IE5PLkF4ZXMuTnVtZXJpYyh0LCJib3R0b20iKSxhY2Nlc3NvcjpDQ3R9fSkoKTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiaW52YWxpZCB4VHlwZTogIit0KX19Y29uc3QgTEN0PVsxLDAsMCwxLDAsMF07ZnVuY3Rpb24gUEN0KHQpe2NvbnN0IGU9KGZ1bmN0aW9uIG4odCl7Y29uc3QgZT1bXTtmb3IoO3QmJnQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudDspaWYoZS5wdXNoKHQpLHQuYXNzaWduZWRTbG90KXQ9dC5hc3NpZ25lZFNsb3Q7ZWxzZSBpZih0LnBhcmVudEVsZW1lbnQpdD10LnBhcmVudEVsZW1lbnQ7ZWxzZXtjb25zdCBlPXQucGFyZW50Tm9kZTt0PWUgaW5zdGFuY2VvZiBEb2N1bWVudEZyYWdtZW50P2UuaG9zdDplIT09dD9lOm51bGx9cmV0dXJuIGV9KSh0KTtsZXQgaT1MQ3Qscj1udWxsO2Zvcihjb25zdCB0IG9mIGUpe2NvbnN0IGU9Tk8uVXRpbHMuRE9NLmdldEVsZW1lbnRUcmFuc2Zvcm0odCk7aWYobnVsbCE9ZSl7Y29uc3Qgbj10LmNsaWVudFdpZHRoLzIscj10LmNsaWVudEhlaWdodC8yO2k9Tk8uVXRpbHMuTWF0aC5tdWx0aXBseVRyYW5zbGF0ZShpLFtuLHJdKSxpPU5PLlV0aWxzLk1hdGgubXVsdGlwbHlNYXRyaXgoaSxOTy5VdGlscy5NYXRoLmludmVydE1hdHJpeChlKSksaT1OTy5VdGlscy5NYXRoLm11bHRpcGx5VHJhbnNsYXRlKGksWy1uLC1yXSl9bGV0IG49dC5zY3JvbGxMZWZ0LG89dC5zY3JvbGxUb3A7bnVsbCE9PXImJnQhPT1yfHwobi09dC5vZmZzZXRMZWZ0K3QuY2xpZW50TGVmdCxvLT10Lm9mZnNldFRvcCt0LmNsaWVudFRvcCxyPXQub2Zmc2V0UGFyZW50KSxpPU5PLlV0aWxzLk1hdGgubXVsdGlwbHlUcmFuc2xhdGUoaSxbbixvXSl9cmV0dXJuIGl9Y2xhc3MgTkN0IGV4dGVuZHMgTk8uVXRpbHMuVHJhbnNsYXRvcntjb21wdXRlUG9zaXRpb24odCxlKXtjb25zdCBuPXt4OnQseTplfSxpPVBDdCh0aGlzLl9yb290RWxlbWVudCk7aWYobnVsbD09aSlyZXR1cm4gbjtyZXR1cm4gTk8uVXRpbHMuTWF0aC5hcHBseVRyYW5zZm9ybShpLG4pfX1jbGFzcyBJQ3QgZXh0ZW5kcyBOTy5EaXNwYXRjaGVycy5Nb3VzZXtjb25zdHJ1Y3Rvcih0KXtzdXBlcih0KSx0aGlzLl9ldmVudFRhcmdldD10LnJvb3QoKS5yb290RWxlbWVudCgpLm5vZGUoKSx0aGlzLl90cmFuc2xhdG9yPW5ldyBOQ3QodC5yb290KCkucm9vdEVsZW1lbnQoKS5ub2RlKCkpfXN0YXRpYyBnZXREaXNwYXRjaGVyKHQpe2NvbnN0IGU9dC5yb290KCkucm9vdEVsZW1lbnQoKTtsZXQgbj1lW0lDdC5fRElTUEFUQ0hFUl9LRVldO3JldHVybiBufHwobj1uZXcgSUN0KHQpLGVbSUN0Ll9ESVNQQVRDSEVSX0tFWV09biksbn19Y2xhc3MgUkN0IGV4dGVuZHMgTk8uRGlzcGF0Y2hlcnMuVG91Y2h7Y29uc3RydWN0b3IodCl7c3VwZXIodCksdGhpcy5fZXZlbnRUYXJnZXQ9dC5yb290KCkucm9vdEVsZW1lbnQoKS5ub2RlKCksdGhpcy5fdHJhbnNsYXRvcj1uZXcgTkN0KHQucm9vdCgpLnJvb3RFbGVtZW50KCkubm9kZSgpKX1zdGF0aWMgZ2V0RGlzcGF0Y2hlcih0KXtjb25zdCBlPXQucm9vdCgpLnJvb3RFbGVtZW50KCk7bGV0IG49ZVtSQ3QuX0RJU1BBVENIRVJfS0VZXTtyZXR1cm4gbnx8KG49bmV3IFJDdCh0KSxlW1JDdC5fRElTUEFUQ0hFUl9LRVldPW4pLG59fU5PLkludGVyYWN0aW9uLnByb3RvdHlwZS5faXNJbnNpZGVDb21wb25lbnQ9ZnVuY3Rpb24odCl7cmV0dXJuIDA8PXQueCYmMDw9dC55JiZ0Lng8dGhpcy5fY29tcG9uZW50QXR0YWNoZWRUby53aWR0aCgpJiZ0Lnk8dGhpcy5fY29tcG9uZW50QXR0YWNoZWRUby5oZWlnaHQoKX07Y2xhc3MgT0N0IGV4dGVuZHMgTk8uSW50ZXJhY3Rpb25zLlBvaW50ZXJ7X2FuY2hvcih0KXtjb25zdCBlPXRoaXM7ZS5faXNBbmNob3JlZD0hMCxlLl9tb3VzZURpc3BhdGNoZXI9SUN0LmdldERpc3BhdGNoZXIoZS5fY29tcG9uZW50QXR0YWNoZWRUbyksZS5fbW91c2VEaXNwYXRjaGVyLm9uTW91c2VNb3ZlKGUuX21vdXNlTW92ZUNhbGxiYWNrKSxlLl90b3VjaERpc3BhdGNoZXI9UkN0LmdldERpc3BhdGNoZXIoZS5fY29tcG9uZW50QXR0YWNoZWRUbyksZS5fdG91Y2hEaXNwYXRjaGVyLm9uVG91Y2hTdGFydChlLl90b3VjaFN0YXJ0Q2FsbGJhY2spfX12YXIgekN0OyEoZnVuY3Rpb24odCl7dC5BVVRPPSJhdXRvIix0LkJPVFRPTT0iYm90dG9tIix0LlJJR0hUPSJyaWdodCJ9KSh6Q3R8fCh6Q3Q9e30pKTtjb25zdCBEQ3Q9e2JveFNoYWRvdzoiMCAxcHggNHB4IHJnYmEoMCwgMCwgMCwgLjMpIixvcGFjaXR5OjAscG9zaXRpb246ImZpeGVkIix3aWxsQ2hhbmdlOiJ0cmFuc2Zvcm0iLHpJbmRleDo1fTtsZXQgQkN0PWNsYXNzIGV4dGVuZHMoY3Iod2UpKXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5wb3NpdGlvbj16Q3QuQVVUTyx0aGlzLm1pbkRpc3RGcm9tRWRnZT0xNSx0aGlzLl9zdHlsZUNhY2hlPW51bGwsdGhpcy5fcmFmPW51bGwsdGhpcy5fdHVubmVsPW51bGx9cmVhZHkoKXt0aGlzLl9zdHlsZUNhY2hlPW51bGwsdGhpcy5fcmFmPW51bGwsdGhpcy5fdHVubmVsPW51bGx9YXR0YWNoZWQoKXt0aGlzLl90dW5uZWw9dGhpcy5fY3JlYXRlVHVubmVsKCksdGhpcy5faGlkZU9uQmx1cj0oKT0+e2RvY3VtZW50LmhpZGRlbiYmdGhpcy5oaWRlKCl9LHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJ2aXNpYmlsaXR5Y2hhbmdlIix0aGlzLl9oaWRlT25CbHVyKX1kZXRhY2hlZCgpe3RoaXMuaGlkZSgpLHRoaXMuX3JlbW92ZVR1bm5lbCh0aGlzLl90dW5uZWwpLHRoaXMuX3R1bm5lbD1udWxsLHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJ2aXNpYmlsaXR5Y2hhbmdlIix0aGlzLl9oaWRlT25CbHVyKX1jb250ZW50KCl7cmV0dXJuIHRoaXMuX3R1bm5lbC5zaGFkb3dSb290fWhpZGUoKXt3aW5kb3cuY2FuY2VsQW5pbWF0aW9uRnJhbWUodGhpcy5fcmFmKSx0aGlzLl9zdHlsZUNhY2hlPW51bGwsdGhpcy5fdHVubmVsLnN0eWxlLm9wYWNpdHk9MH11cGRhdGVBbmRQb3NpdGlvbih0KXt3aW5kb3cuY2FuY2VsQW5pbWF0aW9uRnJhbWUodGhpcy5fcmFmKSx0aGlzLl9yYWY9d2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSgoKCk9Pnt0aGlzLmlzQXR0YWNoZWQmJnRoaXMuX3JlcG9zaXRpb25JbXBsKHQpfSkpfV9yZXBvc2l0aW9uSW1wbCh0KXtjb25zdCBlPXRoaXMuX3R1bm5lbCxuPXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksaT1lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHI9d2luZG93LmlubmVySGVpZ2h0LG89ZG9jdW1lbnQuYm9keS5jbGllbnRXaWR0aCxhPW4udG9wLHM9YStuLmhlaWdodCxsPWkuaGVpZ2h0KzIwO2xldCBjPW51bGwsdT1NYXRoLm1heCh0aGlzLm1pbkRpc3RGcm9tRWRnZSxuLmxlZnQpLGg9bnVsbCxkPWE7dGhpcy5wb3NpdGlvbj09ekN0LlJJR0hUP3U9bi5yaWdodDooZD1zKzIwLG88dStpLndpZHRoK3RoaXMubWluRGlzdEZyb21FZGdlJiYodT1udWxsLGg9dGhpcy5taW5EaXN0RnJvbUVkZ2UpKSx0aGlzLnBvc2l0aW9uPT16Q3QuQVVUTyYmbi50b3AtbD4wJiZyPG4udG9wK24uaGVpZ2h0K2wmJihkPW51bGwsYz1yLWErMjApO2NvbnN0IHA9e2NvbnRhaW46ImNvbnRlbnQiLG9wYWNpdHk6MSxsZWZ0OnU/YCR7dX1weGA6bnVsbCxyaWdodDpoP2Ake2h9cHhgOm51bGwsdG9wOmQ/YCR7ZH1weGA6bnVsbCxib3R0b206Yz9gJHtjfXB4YDpudWxsfTtDZS5leHBvcnRzLmlzRXF1YWwodGhpcy5fc3R5bGVDYWNoZSxwKXx8KE9iamVjdC5hc3NpZ24oZS5zdHlsZSxwKSx0aGlzLl9zdHlsZUNhY2hlPXApfV9jcmVhdGVUdW5uZWwoKXtpZighdGhpcy5jb250ZW50Q29tcG9uZW50TmFtZSl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiUmVxdWlyZSBgY29udGVudENvbXBvbmVudE5hbWVgIHRvIGJlIGEgbmFtZSBvZiBhIFBvbHltZXIgY29tcG9uZW50Iik7Y29uc3QgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KHRoaXMuY29udGVudENvbXBvbmVudE5hbWUpO3JldHVybiBPYmplY3QuYXNzaWduKHQuc3R5bGUsREN0KSxkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHQpLHR9X3JlbW92ZVR1bm5lbCh0KXtkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKHQpfX07dChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sQkN0LnByb3RvdHlwZSwiY29udGVudENvbXBvbmVudE5hbWUiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sQkN0LnByb3RvdHlwZSwicG9zaXRpb24iLHZvaWQgMCksdChbbyh7dHlwZTpOdW1iZXJ9KSxlKCJkZXNpZ246dHlwZSIsTnVtYmVyKV0sQkN0LnByb3RvdHlwZSwibWluRGlzdEZyb21FZGdlIix2b2lkIDApLEJDdD10KFtpKCJ2ei1jaGFydC10b29sdGlwIildLEJDdCk7Y29uc3QgSEN0PUR5KCIuMn5lIiksRkN0PUR5KCIuNH5yIiksVkN0PUR5KCIsfiIpO2Z1bmN0aW9uIFVDdCh0KXtpZigwPT09dClyZXR1cm4iMCI7Y29uc3QgZT1NYXRoLmFicyh0KTtyZXR1cm4gZT49MWU0fHxlPC4wMDE/SEN0KHQpOkZDdCh0KX1jb25zdCBqQ3Q9e2Zvcm1hdFRpY2s6VUN0LGZvcm1hdFNob3J0OlVDdCxmb3JtYXRSZWFkYWJsZSh0KXtjb25zdCBlPU1hdGguYWJzKHQpO3JldHVybiBlPj0xZTR8fGU8LjAwMT9IQ3QodCk6VkN0KHQpfSxmb3JtYXRMb25nOlZDdH07RHkoIjAuM35zIiksRHkoIiwuM35mIiksRHkoIi40fiIpO2NvbnN0IEdDdD16QSgpLnRpY2tGb3JtYXQoKTtsZXQgV0N0O2NvbnN0IHFDdD17Zm9ybWF0VGljazp0PT5HQ3QobmV3IERhdGUodCkpLGZvcm1hdFNob3J0OnQ9Pm5ldyBEYXRlKHQpLnRvTG9jYWxlU3RyaW5nKFdDdCx7eWVhcjoibnVtZXJpYyIsbW9udGg6InNob3J0IixkYXk6Im51bWVyaWMiLGhvdXI6Im51bWVyaWMiLG1pbnV0ZToibnVtZXJpYyIsc2Vjb25kOiJudW1lcmljIn0pLGZvcm1hdFJlYWRhYmxlOnQ9Pm5ldyBEYXRlKHQpLnRvTG9jYWxlU3RyaW5nKFdDdCx7eWVhcjoibnVtZXJpYyIsbW9udGg6InNob3J0IixkYXk6Im51bWVyaWMiLGhvdXI6Im51bWVyaWMiLG1pbnV0ZToibnVtZXJpYyIsc2Vjb25kOiJudW1lcmljIix0aW1lWm9uZU5hbWU6InNob3J0In0pLGZvcm1hdExvbmc6dD0+bmV3IERhdGUodCkudG9Mb2NhbGVTdHJpbmcoV0N0LHt5ZWFyOiJudW1lcmljIixtb250aDoibG9uZyIsZGF5OiJudW1lcmljIixob3VyOiJudW1lcmljIixtaW51dGU6Im51bWVyaWMiLHNlY29uZDoibnVtZXJpYyIsdGltZVpvbmVOYW1lOiJzaG9ydCIsZnJhY3Rpb25hbFNlY29uZERpZ2l0czozfSl9O3ZhciBZQ3Q7IShmdW5jdGlvbih0KXt0W3QuTElORUFSPTBdPSJMSU5FQVIiLHRbdC5MT0cxMD0xXT0iTE9HMTAiLHRbdC5USU1FPTJdPSJUSU1FIn0pKFlDdHx8KFlDdD17fSkpO2NsYXNzIFhDdHtjb25zdHJ1Y3Rvcigpe3RoaXMuZGVmYXVsdEZvcm1hdHRlcj1qQ3R9dHJhbnNmb3JtKHQsZSxuKXtjb25zdFtpLHJdPXQsbz1yLWksW2Esc109ZTtyZXR1cm4gMD09PW8/YToocy1hKS9vKihuLWkpK2F9Zm9yd2FyZCh0LGUsbil7cmV0dXJuIHRoaXMudHJhbnNmb3JtKHQsZSxuKX1yZXZlcnNlKHQsZSxuKXtyZXR1cm4gdGhpcy50cmFuc2Zvcm0oZSx0LG4pfW5pY2VEb21haW4odCl7bGV0W2Usbl09dDtpZihuPGUpdGhyb3cgbmV3IEVycm9yKCJVbmV4cGVjdGVkIGlucHV0OiBtaW4gaXMgbGFyZ2VyIHRoYW4gbWF4Iik7aWYobj09PWUpcmV0dXJuIDA9PT1lP1stMSwxXTplPDA/WzIqZSwwXTpbMCwyKmVdO2NvbnN0IGk9Y0UoKSxyPS4wNSoobi1lK051bWJlci5FUFNJTE9OKSxbbyxhXT1pLmRvbWFpbihbZS1yLG4rcl0pLm5pY2UoKS5kb21haW4oKTtyZXR1cm5bbyxhXX10aWNrcyh0LGUpe3JldHVybiBjRSgpLmRvbWFpbih0KS50aWNrcyhlKX1pc1NhZmVOdW1iZXIodCl7cmV0dXJuIE51bWJlci5pc0Zpbml0ZSh0KX19Y2xhc3MgJEN0e2NvbnN0cnVjdG9yKCl7dGhpcy5kZWZhdWx0Rm9ybWF0dGVyPWpDdH10cmFuc2Zvcm0odCl7cmV0dXJuIE1hdGgubG9nMTAodD4wP3Q6TnVtYmVyLk1JTl9WQUxVRSl9dW50cmFuc2Zvcm0odCl7cmV0dXJuIE1hdGguZXhwKHQvTWF0aC5MT0cxMEUpfWZvcndhcmQodCxlLG4pe2lmKG48PTApcmV0dXJuIGVbMF07Y29uc3RbaSxyXT10LFtvLGFdPWUscz10aGlzLnRyYW5zZm9ybShpKSxsPXRoaXMudHJhbnNmb3JtKHIpLXMsYz1hLW87cmV0dXJuIG49dGhpcy50cmFuc2Zvcm0obiksYy8obCtOdW1iZXIuRVBTSUxPTikqKG4tcykrb31yZXZlcnNlKHQsZSxuKXtjb25zdFtpLHJdPXQsW28sYV09ZSxzPXRoaXMudHJhbnNmb3JtKGkpLGw9dGhpcy50cmFuc2Zvcm0ocik7cmV0dXJuIHRoaXMudW50cmFuc2Zvcm0oKGwtcykvKGEtbytOdW1iZXIuRVBTSUxPTikqKG4tbykrcyl9bmljZURvbWFpbih0KXtjb25zdFtlLG5dPXQ7aWYoZT5uKXRocm93IG5ldyBFcnJvcigiVW5leHBlY3RlZCBpbnB1dDogbWluIGlzIGxhcmdlciB0aGFuIG1heCIpO2NvbnN0IGk9TWF0aC5tYXgoZSxOdW1iZXIuTUlOX1ZBTFVFKSxyPU1hdGgubWF4KG4sTnVtYmVyLk1JTl9WQUxVRSk7cmV0dXJuIG48PTA/W051bWJlci5NSU5fVkFMVUUsMV06W01hdGgubWF4KE51bWJlci5NSU5fVkFMVUUsLjUqaSksMipyXX10aWNrcyh0LGUpe2NvbnN0IG49dFswXTw9MD9OdW1iZXIuTUlOX1ZBTFVFOnRbMF0saT10WzFdPD0wP051bWJlci5NSU5fVkFMVUU6dFsxXSxyPXlFKCkuZG9tYWluKFtuLGldKS50aWNrcyhlKTtyZXR1cm4gci5sZW5ndGg/cjp0fWlzU2FmZU51bWJlcih0KXtyZXR1cm4gTnVtYmVyLmlzRmluaXRlKHQpJiZ0PjB9fWNsYXNzIEtDdHtjb25zdHJ1Y3Rvcigpe3RoaXMuc2NhbGU9ekEoKSx0aGlzLmRlZmF1bHRGb3JtYXR0ZXI9cUN0fWZvcndhcmQodCxlLG4pe3JldHVybiB0aGlzLnNjYWxlLmRvbWFpbih0KS5yYW5nZShlKShuKX1yZXZlcnNlKHQsZSxuKXtyZXR1cm4gdGhpcy5zY2FsZS5kb21haW4odCkucmFuZ2UoZSkuaW52ZXJ0KG4pLmdldFRpbWUoKX1uaWNlRG9tYWluKHQpe2NvbnN0W2Usbl09dGhpcy5zY2FsZS5kb21haW4odCkubmljZSgpLmRvbWFpbigpO3JldHVybltlLmdldFRpbWUoKSxuLmdldFRpbWUoKV19dGlja3ModCxlKXtyZXR1cm4gdGhpcy5zY2FsZS5kb21haW4odCkudGlja3MoZSkubWFwKCh0PT50LmdldFRpbWUoKSkpfWlzU2FmZU51bWJlcih0KXtyZXR1cm4gTnVtYmVyLmlzRmluaXRlKHQpfX1jbGFzcyBaQ3QgZXh0ZW5kcyBOTy5TY2FsZXMuTGluZWFye2NvbnN0cnVjdG9yKCl7c3VwZXIoKSx0aGlzLl9pZ25vcmVPdXRsaWVyPSExLHRoaXMucGFkUHJvcG9ydGlvbiguMil9c2V0VmFsdWVQcm92aWRlckZvckRvbWFpbih0KXtyZXR1cm4gdGhpcy5fdmFsdWVQcm92aWRlckZvckRvbWFpbj10LHRoaXN9X25pY2VEb21haW4odCxlKXtjb25zdFtuLGldPXQ7cmV0dXJuKGZ1bmN0aW9uIHIodCl7c3dpdGNoKHQpe2Nhc2UgWUN0LkxJTkVBUjpyZXR1cm4gbmV3IFhDdDtjYXNlIFlDdC5MT0cxMDpyZXR1cm4gbmV3ICRDdDtjYXNlIFlDdC5USU1FOnJldHVybiBuZXcgS0N0O2RlZmF1bHQ6dGhyb3cgbmV3IFJhbmdlRXJyb3IoYFNjYWxlVHlwZSAke3R9IG5vdCBzdXBwb3J0ZWQuYCl9fSkoWUN0LkxJTkVBUikubmljZURvbWFpbihbbixpXSl9X2dldFVuYm91bmRlZEV4dGVudCh0KXtjb25zdCBlPXRoaXMuX2dldEFsbEluY2x1ZGVkVmFsdWVzKHQpO2xldCBuPXRoaXMuX2RlZmF1bHRFeHRlbnQoKTtpZigwIT09ZS5sZW5ndGgpe2NvbnN0IHQ9W05PLlV0aWxzLk1hdGgubWluKGUsblswXSksTk8uVXRpbHMuTWF0aC5tYXgoZSxuWzFdKV07bj10aGlzLl9uaWNlRG9tYWluKHQpfXJldHVybiBufV9nZXRBbGxJbmNsdWRlZFZhbHVlcyh0PSExKXtjb25zdCBlPXRoaXMuX3ZhbHVlUHJvdmlkZXJGb3JEb21haW4/dGhpcy5fdmFsdWVQcm92aWRlckZvckRvbWFpbigpOltdO3JldHVybiB0aGlzLmV4dGVudE9mVmFsdWVzKGUpfWV4dGVudE9mVmFsdWVzKHQpe2NvbnN0IGU9dC5maWx0ZXIoKHQ9Pk5PLlV0aWxzLk1hdGguaXNWYWxpZE51bWJlcih0KSkpO2xldCBuPWU7aWYodGhpcy5pZ25vcmVPdXRsaWVyKCkpe2NvbnN0IHQ9ZS5zb3J0KCgodCxlKT0+dC1lKSksaT1yYyh0LC4wNSkscj1yYyh0LC45NSk7bj1lLmZpbHRlcigodD0+dD49aSYmdDw9cikpfWNvbnN0IGk9R2wobik7cmV0dXJuIG51bGw9PWlbMF18fG51bGw9PWlbMV0/W106aX1pZ25vcmVPdXRsaWVyKHQpe3JldHVybiJib29sZWFuIj09dHlwZW9mIHQ/KHRoaXMuX2lnbm9yZU91dGxpZXI9dCx0aGlzKTp0aGlzLl9pZ25vcmVPdXRsaWVyfX1jbGFzcyBKQ3QgZXh0ZW5kcyBOTy5RdWFudGl0YXRpdmVTY2FsZXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5faWdub3JlT3V0bGllcj0hMX1zZXRWYWx1ZVByb3ZpZGVyRm9yRG9tYWluKHQpe3JldHVybiB0aGlzLl92YWx1ZVByb3ZpZGVyRm9yRG9tYWluPXQsdGhpc31pZ25vcmVPdXRsaWVyKHQpe3JldHVybiJib29sZWFuIj09dHlwZW9mIHQ/KHRoaXMuX2lnbm9yZU91dGxpZXI9dCx0aGlzKTp0aGlzLl9pZ25vcmVPdXRsaWVyfV9nZXRBbGxJbmNsdWRlZFZhbHVlcyh0PSExKXtjb25zdCBlPXRoaXMuX3ZhbHVlUHJvdmlkZXJGb3JEb21haW4/dGhpcy5fdmFsdWVQcm92aWRlckZvckRvbWFpbigpOltdO3JldHVybiB0aGlzLmV4dGVudE9mVmFsdWVzKGUpfX1jb25zdCBRQ3Q9TWF0aC5wb3coMiwtMTA3NCk7ZnVuY3Rpb24gdEF0KHQpe3JldHVybiBNYXRoLmxvZzEwKHQpfWZ1bmN0aW9uIGVBdCh0KXtyZXR1cm4gTWF0aC5wb3coMTAsdCl9Y2xhc3MgbkF0IGV4dGVuZHMgSkN0e2NvbnN0cnVjdG9yKCl7c3VwZXIoKSx0aGlzLl9kM0xvZ1NjYWxlPXlFKCksdGhpcy5wYWRQcm9wb3J0aW9uKC4yKX1zY2FsZSh0KXtyZXR1cm4gdDw9MD9OYU46dGhpcy5fZDNMb2dTY2FsZSh0KX1pbnZlcnQodCl7cmV0dXJuIHRoaXMuX2QzTG9nU2NhbGUuaW52ZXJ0KHQpfXNjYWxlVHJhbnNmb3JtYXRpb24odCl7cmV0dXJuIHRoaXMuc2NhbGUodCl9aW52ZXJ0ZWRUcmFuc2Zvcm1hdGlvbih0KXtyZXR1cm4gdGhpcy5pbnZlcnQodCl9Z2V0VHJhbnNmb3JtYXRpb25Eb21haW4oKXtyZXR1cm4gdGhpcy5kb21haW4oKX1zZXRUcmFuc2Zvcm1hdGlvbkRvbWFpbih0KXt0aGlzLmRvbWFpbih0KX1nZXRUcmFuc2Zvcm1hdGlvbkV4dGVudCgpe3JldHVybiB0aGlzLl9nZXRVbmJvdW5kZWRFeHRlbnQoITApfV9nZXREb21haW4oKXtyZXR1cm4gdGhpcy5fdW50cmFuc2Zvcm1lZERvbWFpbn1fc2V0RG9tYWluKHQpe3RoaXMuX3VudHJhbnNmb3JtZWREb21haW49dDtjb25zdFtlLG5dPXQ7c3VwZXIuX3NldERvbWFpbihbTWF0aC5tYXgoUUN0LGUpLG5dKX1fbmljZURvbWFpbih0LGUpe2NvbnN0W24saV09dCxyPU1hdGgubWF4KHRBdChRQ3QpLHRBdChuKSksbz10QXQoaSksYT1vLXIscz1hP2EqdGhpcy5wYWRQcm9wb3J0aW9uKCk6MTtyZXR1cm5bZUF0KE1hdGgubWF4KHRBdChRQ3QpLHItcykpLGVBdChvK3MpXX1fZ2V0VW5ib3VuZGVkRXh0ZW50KHQpe2NvbnN0IGU9dGhpcy5fZ2V0QWxsSW5jbHVkZWRWYWx1ZXModCk7bGV0IG49dGhpcy5fZGVmYXVsdEV4dGVudCgpO2lmKDAhPT1lLmxlbmd0aCl7Y29uc3QgdD1bTk8uVXRpbHMuTWF0aC5taW4oZSxuWzBdKSxOTy5VdGlscy5NYXRoLm1heChlLG5bMV0pXTtuPXRoaXMuX25pY2VEb21haW4odCl9cmV0dXJuIG59X2dldEFsbEluY2x1ZGVkVmFsdWVzKHQ9ITEpe3JldHVybiBzdXBlci5fZ2V0QWxsSW5jbHVkZWRWYWx1ZXMoKS5tYXAoKHQ9PnQ+MD90OlFDdCkpfV9kZWZhdWx0RXh0ZW50KCl7cmV0dXJuWzEsMTBdfV9iYWNraW5nU2NhbGVEb21haW4odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5fZDNMb2dTY2FsZS5kb21haW4oKToodGhpcy5fZDNMb2dTY2FsZS5kb21haW4odCksdGhpcyl9X2dldFJhbmdlKCl7cmV0dXJuIHRoaXMuX2QzTG9nU2NhbGUucmFuZ2UoKX1fc2V0UmFuZ2UodCl7dGhpcy5fZDNMb2dTY2FsZS5yYW5nZSh0KX1kZWZhdWx0VGlja3MoKXtyZXR1cm4gdGhpcy5fZDNMb2dTY2FsZS50aWNrcygxKX10aWNrcygpe3JldHVybiB0aGlzLl9kM0xvZ1NjYWxlLnRpY2tzKCl9ZXh0ZW50T2ZWYWx1ZXModCl7Y29uc3QgZT10LmZpbHRlcigodD0+Tk8uVXRpbHMuTWF0aC5pc1ZhbGlkTnVtYmVyKHQpJiZ0PjApKTtsZXQgbj1lO2lmKHRoaXMuaWdub3JlT3V0bGllcigpKXtjb25zdCB0PWUubWFwKHRBdCkuc29ydCgoKHQsZSk9PnQtZSkpLGk9cmModCwuMDUpLHI9cmModCwuOTUpO249dC5maWx0ZXIoKHQ9PnQ+PWkmJnQ8PXIpKS5tYXAoZUF0KX1jb25zdCBpPUdsKG4pO3JldHVybiBudWxsPT1pWzBdfHxudWxsPT1pWzFdP1tdOml9fWNsYXNzIGlBdCBleHRlbmRzIE5PLkNvbXBvbmVudHMuU2VsZWN0aW9uQm94TGF5ZXJ7Y29uc3RydWN0b3IodCxlLG4pe3N1cGVyKCksdGhpcy5lYXNlRm49cWYsdGhpcy5fYW5pbWF0aW9uVGltZT03NTAsdGhpcy54U2NhbGUodCksdGhpcy55U2NhbGUoZSksdGhpcy5fZHJhZ0ludGVyYWN0aW9uPW5ldyBOTy5JbnRlcmFjdGlvbnMuRHJhZyx0aGlzLl9kb3VibGVDbGlja0ludGVyYWN0aW9uPW5ldyBOTy5JbnRlcmFjdGlvbnMuQ2xpY2ssdGhpcy5zZXR1cENhbGxiYWNrcygpLHRoaXMudW56b29tTWV0aG9kPW4sdGhpcy5vbkRldGFjaCgoKCk9Pnt0aGlzLl9kb3VibGVDbGlja0ludGVyYWN0aW9uLmRldGFjaEZyb20odGhpcyksdGhpcy5fZHJhZ0ludGVyYWN0aW9uLmRldGFjaEZyb20odGhpcyl9KSksdGhpcy5vbkFuY2hvcigoKCk9Pnt0aGlzLl9kb3VibGVDbGlja0ludGVyYWN0aW9uLmF0dGFjaFRvKHRoaXMpLHRoaXMuX2RyYWdJbnRlcmFjdGlvbi5hdHRhY2hUbyh0aGlzKX0pKX1pbnRlcmFjdGlvblN0YXJ0KHQpe3RoaXMub25TdGFydD10fWludGVyYWN0aW9uRW5kKHQpe3RoaXMub25FbmQ9dH1kcmFnSW50ZXJhY3Rpb24oKXtyZXR1cm4gdGhpcy5fZHJhZ0ludGVyYWN0aW9ufXNldHVwQ2FsbGJhY2tzKCl7bGV0IHQ9ITE7dGhpcy5fZHJhZ0ludGVyYWN0aW9uLm9uRHJhZ1N0YXJ0KCh0PT57dGhpcy5ib3VuZHMoe3RvcExlZnQ6dCxib3R0b21SaWdodDp0fSksdGhpcy5vblN0YXJ0KCl9KSksdGhpcy5fZHJhZ0ludGVyYWN0aW9uLm9uRHJhZygoKGUsbik9Pnt0aGlzLmJvdW5kcyh7dG9wTGVmdDplLGJvdHRvbVJpZ2h0Om59KSx0aGlzLmJveFZpc2libGUoITApLHQ9ITB9KSksdGhpcy5fZHJhZ0ludGVyYWN0aW9uLm9uRHJhZ0VuZCgoKGUsbik9Pnt0aGlzLmJveFZpc2libGUoITEpLHRoaXMuYm91bmRzKHt0b3BMZWZ0OmUsYm90dG9tUmlnaHQ6bn0pLHQ/dGhpcy56b29tKCk6dGhpcy5vbkVuZCgpLHQ9ITF9KSksdGhpcy5fZG91YmxlQ2xpY2tJbnRlcmFjdGlvbi5vbkRvdWJsZUNsaWNrKHRoaXMudW56b29tLmJpbmQodGhpcykpfWFuaW1hdGlvblRpbWUodCl7aWYobnVsbD09dClyZXR1cm4gdGhpcy5fYW5pbWF0aW9uVGltZTtpZih0PDApdGhyb3cgbmV3IEVycm9yKCJhbmltYXRpb25UaW1lIGNhbm5vdCBiZSBuZWdhdGl2ZSIpO3JldHVybiB0aGlzLl9hbmltYXRpb25UaW1lPXQsdGhpc31lYXNlKHQpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0KXRocm93IG5ldyBFcnJvcigiZWFzZSBmdW5jdGlvbiBtdXN0IGJlIGEgZnVuY3Rpb24iKTtyZXR1cm4gMD09PXQoMCkmJjE9PT10KDEpfHxOTy5VdGlscy5XaW5kb3cud2FybigiRWFzaW5nIGZ1bmN0aW9uIGRvZXMgbm90IG1haW50YWluIGludmFyaWFudCBmKDApPT0wICYmIGYoMSk9PTEuIEJhZCBiZWhhdmlvciBtYXkgcmVzdWx0LiIpLHRoaXMuZWFzZUZuPXQsdGhpc316b29tKCl7bGV0IHQ9dGhpcy54RXh0ZW50KClbMF0udmFsdWVPZigpLGU9dGhpcy54RXh0ZW50KClbMV0udmFsdWVPZigpLG49dGhpcy55RXh0ZW50KClbMV0udmFsdWVPZigpLGk9dGhpcy55RXh0ZW50KClbMF0udmFsdWVPZigpO3QhPT1lJiZuIT09aSYmdGhpcy5pbnRlcnBvbGF0ZVpvb20odCxlLG4saSl9dW56b29tKCl7bGV0IHQ9dGhpcy54U2NhbGUoKTt0Ll9kb21haW5NaW49bnVsbCx0Ll9kb21haW5NYXg9bnVsbDtsZXQgZT10Ll9nZXRFeHRlbnQoKTt0aGlzLnhTY2FsZSgpLmRvbWFpbihlKSx0aGlzLnVuem9vbU1ldGhvZCgpfWlzWm9vbWluZyh0KXt0aGlzLl9kcmFnSW50ZXJhY3Rpb24uZW5hYmxlZCghdCksdGhpcy5fZG91YmxlQ2xpY2tJbnRlcmFjdGlvbi5lbmFibGVkKCF0KX1pbnRlcnBvbGF0ZVpvb20odCxlLG4saSl7bGV0IHI9dGhpcy54U2NhbGUoKS5kb21haW4oKVswXS52YWx1ZU9mKCksbz10aGlzLnhTY2FsZSgpLmRvbWFpbigpWzFdLnZhbHVlT2YoKSxhPXRoaXMueVNjYWxlKCkuZG9tYWluKClbMF0udmFsdWVPZigpLHM9dGhpcy55U2NhbGUoKS5kb21haW4oKVsxXS52YWx1ZU9mKCksbD10aGlzLmVhc2VGbixjPSh0LGUsbik9PnJwKHQsZSkobChuKSk7dGhpcy5pc1pvb21pbmcoITApO2xldCB1PURhdGUubm93KCksaD0oKT0+e2xldCBsPURhdGUubm93KCksZD0wPT09dGhpcy5fYW5pbWF0aW9uVGltZT8xOk1hdGgubWluKDEsKGwtdSkvdGhpcy5fYW5pbWF0aW9uVGltZSkscD1jKHIsdCxkKSxmPWMobyxlLGQpLG09YyhhLG4sZCksZz1jKHMsaSxkKTt0aGlzLnhTY2FsZSgpLmRvbWFpbihbcCxmXSksdGhpcy55U2NhbGUoKS5kb21haW4oW20sZ10pLGQ8MT9OTy5VdGlscy5ET00ucmVxdWVzdEFuaW1hdGlvbkZyYW1lUG9seWZpbGwoaCk6KHRoaXMub25FbmQoKSx0aGlzLmlzWm9vbWluZyghMSkpfTtoKCl9fXZhciByQXQsb0F0LGFBdDshKGZ1bmN0aW9uKHQpe3RbdC5OT05FPTBdPSJOT05FIix0W3QuRFJBR19aT09NSU5HPTFdPSJEUkFHX1pPT01JTkciLHRbdC5QQU5OSU5HPTJdPSJQQU5OSU5HIn0pKHJBdHx8KHJBdD17fSkpO2NsYXNzIHNBdCBleHRlbmRzIE5PLkNvbXBvbmVudHMuR3JvdXB7Y29uc3RydWN0b3IodCxlLG4pe3N1cGVyKCksdGhpcy5zdGF0ZT1yQXQuTk9ORSx0aGlzLnBhblN0YXJ0Q2FsbGJhY2s9bmV3IE5PLlV0aWxzLkNhbGxiYWNrU2V0LHRoaXMucGFuRW5kQ2FsbGJhY2s9bmV3IE5PLlV0aWxzLkNhbGxiYWNrU2V0LHRoaXMucGFuWm9vbT1uZXcgTk8uSW50ZXJhY3Rpb25zLlBhblpvb20odCxlKSx0aGlzLnBhblpvb20uZHJhZ0ludGVyYWN0aW9uKCkubW91c2VGaWx0ZXIoKHQ9PnNBdC5pc1BhbktleSh0KSYmMD09PXQuYnV0dG9uKSksdGhpcy5wYW5ab29tLndoZWVsRmlsdGVyKHRoaXMuY2FuU2Nyb2xsWm9vbSksdGhpcy5kcmFnWm9vbUxheWVyPW5ldyBpQXQodCxlLG4pLHRoaXMuZHJhZ1pvb21MYXllci5kcmFnSW50ZXJhY3Rpb24oKS5tb3VzZUZpbHRlcigodD0+IXNBdC5pc1BhbktleSh0KSYmMD09PXQuYnV0dG9uKSksdGhpcy5hcHBlbmQodGhpcy5kcmFnWm9vbUxheWVyKTtjb25zdCBpPXRoaXMub25XaGVlbC5iaW5kKHRoaXMpO3RoaXMub25BbmNob3IoKCgpPT57dGhpcy5fbW91c2VEaXNwYXRjaGVyPU5PLkRpc3BhdGNoZXJzLk1vdXNlLmdldERpc3BhdGNoZXIodGhpcyksdGhpcy5fbW91c2VEaXNwYXRjaGVyLm9uV2hlZWwoaSksdGhpcy5wYW5ab29tLmF0dGFjaFRvKHRoaXMpfSkpLHRoaXMub25EZXRhY2goKCgpPT57dGhpcy5wYW5ab29tLmRldGFjaEZyb20odGhpcyksdGhpcy5fbW91c2VEaXNwYXRjaGVyJiYodGhpcy5fbW91c2VEaXNwYXRjaGVyLm9mZldoZWVsKGkpLHRoaXMuX21vdXNlRGlzcGF0Y2hlcj1udWxsKX0pKSx0aGlzLnBhblpvb20uZHJhZ0ludGVyYWN0aW9uKCkub25EcmFnU3RhcnQoKCgpPT57dGhpcy5zdGF0ZT09ckF0Lk5PTkUmJnRoaXMuc2V0U3RhdGUockF0LlBBTk5JTkcpfSkpLHRoaXMucGFuWm9vbS5kcmFnSW50ZXJhY3Rpb24oKS5vbkRyYWdFbmQoKCgpPT57dGhpcy5zdGF0ZT09ckF0LlBBTk5JTkcmJnRoaXMuc2V0U3RhdGUockF0Lk5PTkUpfSkpLHRoaXMuZHJhZ1pvb21MYXllci5kcmFnSW50ZXJhY3Rpb24oKS5vbkRyYWdTdGFydCgoKCk9Pnt0aGlzLnN0YXRlPT1yQXQuTk9ORSYmdGhpcy5zZXRTdGF0ZShyQXQuRFJBR19aT09NSU5HKX0pKSx0aGlzLmRyYWdab29tTGF5ZXIuZHJhZ0ludGVyYWN0aW9uKCkub25EcmFnRW5kKCgoKT0+e3RoaXMuc3RhdGU9PXJBdC5EUkFHX1pPT01JTkcmJnRoaXMuc2V0U3RhdGUockF0Lk5PTkUpfSkpfW9uV2hlZWwodCxlKXtpZih0aGlzLmNhblNjcm9sbFpvb20oZSkpcmV0dXJuO2NvbnN0IG49dGhpcy5lbGVtZW50KCk7aWYoIW4uc2VsZWN0KCIuaGVscCIpLmVtcHR5KCkpcmV0dXJuO2NvbnN0IGk9bi5hcHBlbmQoImRpdiIpLmNsYXNzZWQoImhlbHAiLCEwKTtpLmFwcGVuZCgic3BhbiIpLnRleHQoIkFsdCArIFNjcm9sbCB0byBab29tIiksaS5vbigiYW5pbWF0aW9uZW5kIiwoKCk9PntpLnJlbW92ZSgpfSkpfXN0YXRpYyBpc1BhbktleSh0KXtyZXR1cm4gQm9vbGVhbih0LmFsdEtleSl8fEJvb2xlYW4odC5zaGlmdEtleSl9Y2FuU2Nyb2xsWm9vbSh0KXtyZXR1cm4gdC5hbHRLZXl9c2V0U3RhdGUodCl7aWYodGhpcy5zdGF0ZT09dClyZXR1cm47Y29uc3QgZT10aGlzLnN0YXRlO3RoaXMuc3RhdGU9dCx0aGlzLnJvb3QoKS5yZW1vdmVDbGFzcyh0aGlzLnN0YXRlQ2xhc3NOYW1lKGUpKSx0aGlzLnJvb3QoKS5hZGRDbGFzcyh0aGlzLnN0YXRlQ2xhc3NOYW1lKHQpKSxlPT1yQXQuUEFOTklORyYmdGhpcy5wYW5FbmRDYWxsYmFjay5jYWxsQ2FsbGJhY2tzKCksdD09ckF0LlBBTk5JTkcmJnRoaXMucGFuU3RhcnRDYWxsYmFjay5jYWxsQ2FsbGJhY2tzKCl9c3RhdGVDbGFzc05hbWUodCl7c3dpdGNoKHQpe2Nhc2UgckF0LlBBTk5JTkc6cmV0dXJuInBhbm5pbmciO2Nhc2UgckF0LkRSQUdfWk9PTUlORzpyZXR1cm4iZHJhZy16b29taW5nIjtjYXNlIHJBdC5OT05FOmRlZmF1bHQ6cmV0dXJuIiJ9fW9uUGFuU3RhcnQodCl7dGhpcy5wYW5TdGFydENhbGxiYWNrLmFkZCh0KX1vblBhbkVuZCh0KXt0aGlzLnBhbkVuZENhbGxiYWNrLmFkZCh0KX1vblNjcm9sbFpvb20odCl7dGhpcy5wYW5ab29tLm9uWm9vbUVuZCh0KX1vbkRyYWdab29tU3RhcnQodCl7dGhpcy5kcmFnWm9vbUxheWVyLmludGVyYWN0aW9uU3RhcnQodCl9b25EcmFnWm9vbUVuZCh0KXt0aGlzLmRyYWdab29tTGF5ZXIuaW50ZXJhY3Rpb25FbmQodCl9fSEoZnVuY3Rpb24odCl7dFt0LlRFWFQ9MF09IlRFWFQiLHRbdC5ET009MV09IkRPTSJ9KShvQXR8fChvQXQ9e30pKSwoZnVuY3Rpb24odCl7dC5MT0c9ImxvZyIsdC5MSU5FQVI9ImxpbmVhciJ9KShhQXR8fChhQXQ9e30pKTtjbGFzcyBsQXR7Y29uc3RydWN0b3IodCxlLG4saSxyLG8sYSxzLGwsYyx1KXt0aGlzLmRpcnR5RGF0YXNldHM9bmV3IFNldCx0aGlzLnNlcmllc05hbWVzPVtdLHRoaXMubmFtZTJkYXRhc2V0cz17fSx0aGlzLmNvbG9yU2NhbGU9aSx0aGlzLnRvb2x0aXA9cix0aGlzLmRhdGFzZXRzPVtdLHRoaXMuX2lnbm9yZVlPdXRsaWVycz0hMSx0aGlzLmxhc3RQb2ludHNEYXRhc2V0PW5ldyBOTy5EYXRhc2V0LHRoaXMubmFuRGF0YXNldD1uZXcgTk8uRGF0YXNldCx0aGlzLnlWYWx1ZUFjY2Vzc29yPWUsdGhpcy5zeW1ib2xGdW5jdGlvbj1jLHRoaXMuX2RlZmF1bHRYUmFuZ2U9cyx0aGlzLl9kZWZhdWx0WVJhbmdlPWwsdGhpcy50b29sdGlwQ29sdW1ucz1vLHRoaXMuYnVpbGRDaGFydCh0LGUsbixhLHUpfWJ1aWxkQ2hhcnQodCxlLG4saSxyKXt0aGlzLmRlc3Ryb3koKTtjb25zdCBvPXQoKTt0aGlzLnhBY2Nlc3Nvcj1vLmFjY2Vzc29yLHRoaXMueFNjYWxlPW8uc2NhbGUsdGhpcy54QXhpcz1vLmF4aXMsdGhpcy54QXhpcy5tYXJnaW4oMSkudGlja0xhYmVsUGFkZGluZygzKSxyJiZ0aGlzLnhBeGlzLmZvcm1hdHRlcihyKSx0aGlzLnlTY2FsZT1sQXQuZ2V0WVNjYWxlRnJvbVR5cGUobiksdGhpcy55U2NhbGUuc2V0VmFsdWVQcm92aWRlckZvckRvbWFpbigoKCk9PnRoaXMuZ2V0VmFsdWVzRm9yWUF4aXNEb21haW5Db21wdXRlKCkpKSx0aGlzLnlBeGlzPW5ldyBOTy5BeGVzLk51bWVyaWModGhpcy55U2NhbGUsImxlZnQiKTtsZXQgYT1TQ3QoMyk7dGhpcy55QXhpcy5tYXJnaW4oMCkudGlja0xhYmVsUGFkZGluZyg1KS5mb3JtYXR0ZXIoYSksdGhpcy55QXhpcy51c2VzVGV4dFdpZHRoQXBwcm94aW1hdGlvbighMCksdGhpcy5maWxsQXJlYT1pO2NvbnN0IHM9bmV3IHNBdCh0aGlzLnhTY2FsZSx0aGlzLnlTY2FsZSwoKCk9PnRoaXMucmVzZXREb21haW4oKSkpO3RoaXMudG9vbHRpcEludGVyYWN0aW9uPXRoaXMuY3JlYXRlVG9vbHRpcEludGVyYWN0aW9uKHMpLHRoaXMudG9vbHRpcFBvaW50c0NvbXBvbmVudD1uZXcgTk8uQ29tcG9uZW50O2NvbnN0IGw9dGhpcy5idWlsZFBsb3QodGhpcy54U2NhbGUsdGhpcy55U2NhbGUsaSk7dGhpcy5ncmlkbGluZXM9bmV3IE5PLkNvbXBvbmVudHMuR3JpZGxpbmVzKHRoaXMueFNjYWxlLHRoaXMueVNjYWxlKTtsZXQgYz1udWxsO24hPT1hQXQuTE9HJiYoYz1uZXcgTk8uQ29tcG9uZW50cy5HdWlkZUxpbmVMYXllcigiaG9yaXpvbnRhbCIpLGMuc2NhbGUodGhpcy55U2NhbGUpLnZhbHVlKDApKTtsZXQgdT1uZXcgTk8uQ29tcG9uZW50cy5HdWlkZUxpbmVMYXllcigidmVydGljYWwiKTt1LnNjYWxlKHRoaXMueFNjYWxlKS52YWx1ZSgwKSx0aGlzLmNlbnRlcj1uZXcgTk8uQ29tcG9uZW50cy5Hcm91cChbdGhpcy5ncmlkbGluZXMsYyx1LGwsdGhpcy50b29sdGlwUG9pbnRzQ29tcG9uZW50LHNdKSx0aGlzLmNlbnRlci5hZGRDbGFzcygibWFpbiIpLHRoaXMub3V0ZXI9bmV3IE5PLkNvbXBvbmVudHMuVGFibGUoW1t0aGlzLnlBeGlzLHRoaXMuY2VudGVyXSxbbnVsbCx0aGlzLnhBeGlzXV0pfWJ1aWxkUGxvdCh0LGUsbil7biYmKHRoaXMubWFyZ2luQXJlYVBsb3Q9bmV3IE5PLlBsb3RzLkFyZWEsdGhpcy5tYXJnaW5BcmVhUGxvdC54KHRoaXMueEFjY2Vzc29yLHQpLHRoaXMubWFyZ2luQXJlYVBsb3QueShuLmhpZ2hlckFjY2Vzc29yLGUpLHRoaXMubWFyZ2luQXJlYVBsb3QueTAobi5sb3dlckFjY2Vzc29yKSx0aGlzLm1hcmdpbkFyZWFQbG90LmF0dHIoImZpbGwiLCgodCxlLG4pPT50aGlzLmNvbG9yU2NhbGUuc2NhbGUobi5tZXRhZGF0YSgpLm5hbWUpKSksdGhpcy5tYXJnaW5BcmVhUGxvdC5hdHRyKCJmaWxsLW9wYWNpdHkiLC4zKSx0aGlzLm1hcmdpbkFyZWFQbG90LmF0dHIoInN0cm9rZS13aWR0aCIsMCkpLHRoaXMuc21vb3RoZWRBY2Nlc3Nvcj10PT50LnNtb290aGVkO2xldCBpPW5ldyBOTy5QbG90cy5MaW5lO2kueCh0aGlzLnhBY2Nlc3Nvcix0KSxpLnkodGhpcy55VmFsdWVBY2Nlc3NvcixlKSxpLmF0dHIoInN0cm9rZSIsKCh0LGUsbik9PnRoaXMuY29sb3JTY2FsZS5zY2FsZShuLm1ldGFkYXRhKCkubmFtZSkpKSx0aGlzLmxpbmVQbG90PWksdGhpcy5zZXR1cFRvb2x0aXBzKGkpO2xldCByPW5ldyBOTy5QbG90cy5MaW5lO2lmKHIueCh0aGlzLnhBY2Nlc3Nvcix0KSxyLnkodGhpcy5zbW9vdGhlZEFjY2Vzc29yLGUpLHIuYXR0cigic3Ryb2tlIiwoKHQsZSxuKT0+dGhpcy5jb2xvclNjYWxlLnNjYWxlKG4ubWV0YWRhdGEoKS5uYW1lKSkpLHRoaXMuc21vb3RoTGluZVBsb3Q9cix0aGlzLnN5bWJvbEZ1bmN0aW9uKXtjb25zdCBuPW5ldyBOTy5QbG90cy5TY2F0dGVyO24ueCh0aGlzLnhBY2Nlc3Nvcix0KSxuLnkodGhpcy55VmFsdWVBY2Nlc3NvcixlKSxuLmF0dHIoImZpbGwiLCgodCxlLG4pPT50aGlzLmNvbG9yU2NhbGUuc2NhbGUobi5tZXRhZGF0YSgpLm5hbWUpKSksbi5hdHRyKCJvcGFjaXR5IiwxKSxuLnNpemUoOCksbi5zeW1ib2woKCh0LGUsbik9PnRoaXMuc3ltYm9sRnVuY3Rpb24obi5tZXRhZGF0YSgpLm5hbWUpKSksdGhpcy5tYXJrZXJzU2NhdHRlclBsb3Q9bn1sZXQgbz1uZXcgTk8uUGxvdHMuU2NhdHRlcjtvLngodGhpcy54QWNjZXNzb3IsdCksby55KHRoaXMueVZhbHVlQWNjZXNzb3IsZSksby5hdHRyKCJmaWxsIiwodD0+dGhpcy5jb2xvclNjYWxlLnNjYWxlKHQubmFtZSkpKSxvLmF0dHIoIm9wYWNpdHkiLDEpLG8uc2l6ZSg4KSxvLmRhdGFzZXRzKFt0aGlzLmxhc3RQb2ludHNEYXRhc2V0XSksdGhpcy5zY2F0dGVyUGxvdD1vO2xldCBhPW5ldyBOTy5QbG90cy5TY2F0dGVyO2EueCh0aGlzLnhBY2Nlc3Nvcix0KSxhLnkoKHQ9PnQuZGlzcGxheVkpLGUpLGEuYXR0cigiZmlsbCIsKHQ9PnRoaXMuY29sb3JTY2FsZS5zY2FsZSh0Lm5hbWUpKSksYS5hdHRyKCJvcGFjaXR5IiwxKSxhLnNpemUoMTIpLGEuZGF0YXNldHMoW3RoaXMubmFuRGF0YXNldF0pLGEuc3ltYm9sKE5PLlN5bWJvbEZhY3Rvcmllcy50cmlhbmdsZSksdGhpcy5uYW5EaXNwbGF5PWE7Y29uc3Qgcz1bYSxvLHIsaV07cmV0dXJuIHRoaXMubWFyZ2luQXJlYVBsb3QmJnMucHVzaCh0aGlzLm1hcmdpbkFyZWFQbG90KSx0aGlzLm1hcmtlcnNTY2F0dGVyUGxvdCYmcy5wdXNoKHRoaXMubWFya2Vyc1NjYXR0ZXJQbG90KSxuZXcgTk8uQ29tcG9uZW50cy5Hcm91cChzKX1pZ25vcmVZT3V0bGllcnModCl7dCE9PXRoaXMuX2lnbm9yZVlPdXRsaWVycyYmKHRoaXMuX2lnbm9yZVlPdXRsaWVycz10LHRoaXMudXBkYXRlU3BlY2lhbERhdGFzZXRzKCksdGhpcy55U2NhbGUuaWdub3JlT3V0bGllcih0KSx0aGlzLnJlc2V0WURvbWFpbigpKX1nZXRWYWx1ZXNGb3JZQXhpc0RvbWFpbkNvbXB1dGUoKXtjb25zdCB0PXRoaXMuZ2V0QWNjZXNzb3JzRm9yQ29tcHV0aW5nWVJhbmdlKCk7cmV0dXJuIENlLmV4cG9ydHMuZmxhdHRlbkRlZXAodGhpcy5kYXRhc2V0cy5tYXAoKGU9PnQubWFwKCh0PT5lLmRhdGEoKS5tYXAoKG49PnQobiwtMSxlKSkpKSkpKSkuZmlsdGVyKGlzRmluaXRlKX11cGRhdGVTcGVjaWFsRGF0YXNldHMoKXtjb25zdCB0PXRoaXMuZ2V0WUF4aXNBY2Nlc3NvcigpO2xldCBlPXRoaXMuZGF0YXNldHMubWFwKChlPT57bGV0IG49bnVsbCxpPWUuZGF0YSgpLmZpbHRlcigobj0+IWlzTmFOKHQobiwtMSxlKSkpKTtpZihpLmxlbmd0aD4wKXtuPWlbaS5sZW5ndGgtMV0sbi5uYW1lPWUubWV0YWRhdGEoKS5uYW1lLG4ucmVsYXRpdmU9Q0N0KG4sMCxlKX1yZXR1cm4gbn0pKS5maWx0ZXIoKHQ9Pm51bGwhPXQpKTt0aGlzLmxhc3RQb2ludHNEYXRhc2V0LmRhdGEoZSksdGhpcy5tYXJrZXJzU2NhdHRlclBsb3QmJnRoaXMubWFya2Vyc1NjYXR0ZXJQbG90LmRhdGFzZXRzKHRoaXMuZGF0YXNldHMubWFwKHRoaXMuY3JlYXRlU2FtcGxlZERhdGFzZXRGb3JNYXJrZXJzKSk7bGV0IG49Q2UuZXhwb3J0cy5mbGF0dGVuKHRoaXMuZGF0YXNldHMubWFwKChlPT57bGV0IG49bnVsbCxpPWUuZGF0YSgpLHI9MDtmb3IoO3I8aS5sZW5ndGgmJm51bGw9PW47KWlzTmFOKHQoaVtyXSwtMSxlKSl8fChuPXQoaVtyXSwtMSxlKSkscisrO251bGw9PW4mJihuPTApO2xldCBvPVtdO2ZvcihyPTA7cjxpLmxlbmd0aDtyKyspaXNOYU4odChpW3JdLC0xLGUpKT8oaVtyXS5uYW1lPWUubWV0YWRhdGEoKS5uYW1lLGlbcl0uZGlzcGxheVk9bixpW3JdLnJlbGF0aXZlPUNDdChpW3JdLDAsZSksby5wdXNoKGlbcl0pKTpuPXQoaVtyXSwtMSxlKTtyZXR1cm4gb30pKSk7dGhpcy5uYW5EYXRhc2V0LmRhdGEobil9cmVzZXREb21haW4oKXt0aGlzLnJlc2V0WERvbWFpbigpLHRoaXMucmVzZXRZRG9tYWluKCl9cmVzZXRYRG9tYWluKCl7bGV0IHQ7aWYobnVsbCE9dGhpcy5fZGVmYXVsdFhSYW5nZSl0PXRoaXMuX2RlZmF1bHRYUmFuZ2U7ZWxzZXtjb25zdCBlPXRoaXMueFNjYWxlO2UuX2RvbWFpbk1pbj1udWxsLGUuX2RvbWFpbk1heD1udWxsLHQ9ZS5fZ2V0RXh0ZW50KCl9dGhpcy54U2NhbGUuZG9tYWluKHQpfXJlc2V0WURvbWFpbigpe251bGwhPXRoaXMuX2RlZmF1bHRZUmFuZ2U/dGhpcy55U2NhbGUuZG9tYWluKHRoaXMuX2RlZmF1bHRZUmFuZ2UpOih0aGlzLnlTY2FsZS5hdXRvRG9tYWluKCksdGhpcy55U2NhbGUuZG9tYWluKHRoaXMueVNjYWxlLmRvbWFpbigpKSl9Z2V0QWNjZXNzb3JzRm9yQ29tcHV0aW5nWVJhbmdlKCl7Y29uc3QgdD1bdGhpcy5nZXRZQXhpc0FjY2Vzc29yKCldO3JldHVybiB0aGlzLmZpbGxBcmVhJiZ0LnB1c2godGhpcy5maWxsQXJlYS5sb3dlckFjY2Vzc29yLHRoaXMuZmlsbEFyZWEuaGlnaGVyQWNjZXNzb3IpLHR9Z2V0WUF4aXNBY2Nlc3Nvcigpe3JldHVybiB0aGlzLnNtb290aGluZ0VuYWJsZWQ/dGhpcy5zbW9vdGhlZEFjY2Vzc29yOnRoaXMueVZhbHVlQWNjZXNzb3J9Y3JlYXRlVG9vbHRpcEludGVyYWN0aW9uKHQpe2NvbnN0IGU9bmV3IE9DdCxuPSgpPT57ZS5lbmFibGVkKCExKSx0aGlzLmhpZGVUb29sdGlwcygpfSxpPSgpPT5lLmVuYWJsZWQoITApO3JldHVybiB0Lm9uUGFuU3RhcnQobiksdC5vbkRyYWdab29tU3RhcnQobiksdC5vblBhbkVuZChpKSx0Lm9uRHJhZ1pvb21FbmQoaSksdC5vblNjcm9sbFpvb20oKCgpPT50aGlzLnVwZGF0ZVRvb2x0aXBDb250ZW50KHRoaXMuX2xhc3RNb3VzZVBvc2l0aW9uKSkpLGUub25Qb2ludGVyTW92ZSgodD0+e3RoaXMuX2xhc3RNb3VzZVBvc2l0aW9uPXQsdGhpcy51cGRhdGVUb29sdGlwQ29udGVudCh0KX0pKSxlLm9uUG9pbnRlckV4aXQoKCgpPT50aGlzLmhpZGVUb29sdGlwcygpKSksZX11cGRhdGVUb29sdGlwQ29udGVudCh0KXt0aGlzLmxpbmVQbG90JiYod2luZG93LmNhbmNlbEFuaW1hdGlvbkZyYW1lKHRoaXMuX3Rvb2x0aXBVcGRhdGVBbmltYXRpb25GcmFtZSksdGhpcy5fdG9vbHRpcFVwZGF0ZUFuaW1hdGlvbkZyYW1lPXdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCgpPT57bGV0IGU9e3g6dC54LHk6dC55LGRhdHVtOm51bGwsZGF0YXNldDpudWxsfSxuPXRoaXMuZ3JpZGxpbmVzLmNvbnRlbnQoKS5ub2RlKCkuZ2V0QkJveCgpLGk9dGhpcy5saW5lUGxvdC5kYXRhc2V0cygpLm1hcCgodD0+dGhpcy5maW5kQ2xvc2VzdFBvaW50KGUsdCkpKS5maWx0ZXIoQm9vbGVhbikscj1OTy5VdGlscy5ET00uaW50ZXJzZWN0c0JCb3gsbz1pLmZpbHRlcigodD0+cih0LngsdC55LG4pfHxpc05hTih0aGlzLnlWYWx1ZUFjY2Vzc29yKHQuZGF0dW0sMCx0LmRhdGFzZXQpKSkpLGE9by5maWx0ZXIoKHQ9PiFpc05hTih0aGlzLnlWYWx1ZUFjY2Vzc29yKHQuZGF0dW0sMCx0LmRhdGFzZXQpKSkpO2lmKDAhPT1pLmxlbmd0aCl7dGhpcy5zY2F0dGVyUGxvdC5hdHRyKCJkaXNwbGF5Iiwibm9uZSIpO2NvbnN0IHQ9dGhpcy50b29sdGlwUG9pbnRzQ29tcG9uZW50LmNvbnRlbnQoKS5zZWxlY3RBbGwoIi5wb2ludCIpLmRhdGEoYSwodD0+dC5kYXRhc2V0Lm1ldGFkYXRhKCkubmFtZSkpO3QuZW50ZXIoKS5hcHBlbmQoImNpcmNsZSIpLmNsYXNzZWQoInBvaW50IiwhMCksdC5hdHRyKCJyIiw0KS5hdHRyKCJjeCIsKHQ9PnQueCkpLmF0dHIoImN5IiwodD0+dC55KSkuc3R5bGUoInN0cm9rZSIsIm5vbmUiKS5hdHRyKCJmaWxsIiwodD0+dGhpcy5jb2xvclNjYWxlLnNjYWxlKHQuZGF0YXNldC5tZXRhZGF0YSgpLm5hbWUpKSksdC5leGl0KCkucmVtb3ZlKCksdGhpcy5kcmF3VG9vbHRpcHMobyxlLHRoaXMudG9vbHRpcENvbHVtbnMpfWVsc2UgdGhpcy5oaWRlVG9vbHRpcHMoKX0pKSl9aGlkZVRvb2x0aXBzKCl7d2luZG93LmNhbmNlbEFuaW1hdGlvbkZyYW1lKHRoaXMuX3Rvb2x0aXBVcGRhdGVBbmltYXRpb25GcmFtZSksdGhpcy50b29sdGlwLmhpZGUoKSx0aGlzLnNjYXR0ZXJQbG90LmF0dHIoImRpc3BsYXkiLCJibG9jayIpLHRoaXMudG9vbHRpcFBvaW50c0NvbXBvbmVudC5jb250ZW50KCkuc2VsZWN0QWxsKCIucG9pbnQiKS5yZW1vdmUoKX1zZXR1cFRvb2x0aXBzKHQpe3Qub25EZXRhY2goKCgpPT57dGhpcy50b29sdGlwSW50ZXJhY3Rpb24uZGV0YWNoRnJvbSh0KSx0aGlzLnRvb2x0aXBJbnRlcmFjdGlvbi5lbmFibGVkKCExKX0pKSx0Lm9uQW5jaG9yKCgoKT0+e3RoaXMudG9vbHRpcEludGVyYWN0aW9uLmF0dGFjaFRvKHQpLHRoaXMudG9vbHRpcEludGVyYWN0aW9uLmVuYWJsZWQoITApfSkpfWRyYXdUb29sdGlwcyh0LGUsbil7aWYoIXQubGVuZ3RoKXJldHVybiB2b2lkIHRoaXMudG9vbHRpcC5oaWRlKCk7Y29uc3R7Y29sb3JTY2FsZTppfT10aGlzO249W3t0aXRsZToiIixzdGF0aWM6ITEsZXZhbFR5cGU6b0F0LkRPTSxldmFsdWF0ZSh0KXtyZXR1cm4gRHUodGhpcykuc2VsZWN0KCJzcGFuIikuc3R5bGUoImJhY2tncm91bmQtY29sb3IiLCgoKT0+aS5zY2FsZSh0LmRhdGFzZXQubWV0YWRhdGEoKS5uYW1lKSkpLCIifSxlbnRlcih0KXtEdSh0aGlzKS5hcHBlbmQoInNwYW4iKS5jbGFzc2VkKCJzd2F0Y2giLCEwKS5zdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsKCgpPT5pLnNjYWxlKHQuZGF0YXNldC5tZXRhZGF0YSgpLm5hbWUpKSl9fSwuLi5uXTtjb25zdCByPXQ9Pk1hdGgucG93KHQueC1lLngsMikrTWF0aC5wb3codC55LWUueSwyKSxvPUNlLmV4cG9ydHMubWluKHQubWFwKHIpKSxhPXRoaXMuc21vb3RoaW5nRW5hYmxlZD90aGlzLnNtb290aGVkQWNjZXNzb3I6dGhpcy55VmFsdWVBY2Nlc3Nvcjt0PSJhc2NlbmRpbmciPT09dGhpcy50b29sdGlwU29ydGluZ01ldGhvZD9DZS5leHBvcnRzLnNvcnRCeSh0LCh0PT5hKHQuZGF0dW0sLTEsdC5kYXRhc2V0KSkpOiJkZXNjZW5kaW5nIj09PXRoaXMudG9vbHRpcFNvcnRpbmdNZXRob2Q/Q2UuZXhwb3J0cy5zb3J0QnkodCwodD0+YSh0LmRhdHVtLC0xLHQuZGF0YXNldCkpKS5yZXZlcnNlKCk6Im5lYXJlc3QiPT09dGhpcy50b29sdGlwU29ydGluZ01ldGhvZD9DZS5leHBvcnRzLnNvcnRCeSh0LHIpOnQuc2xpY2UoMCkucmV2ZXJzZSgpO2NvbnN0IHM9dGhpcyxsPUR1KHRoaXMudG9vbHRpcC5jb250ZW50KCkpLnNlbGVjdCgidGFibGUiKSxjPWwuc2VsZWN0KCJ0aGVhZCIpLnNlbGVjdEFsbCgidGgiKS5kYXRhKG4sKCh0LGUsbik9PnQudGl0bGUpKTtjLmVudGVyKCkuYXBwZW5kKCJ0aCIpLnRleHQoKHQ9PnQudGl0bGUpKS5ub2RlcygpLGMuZXhpdCgpLnJlbW92ZSgpO2NvbnN0IHU9bC5zZWxlY3QoInRib2R5Iikuc2VsZWN0QWxsKCJ0ciIpLmRhdGEodCwoKHQsZSxuKT0+dC5kYXRhc2V0Lm1ldGFkYXRhKCkubmFtZSkpO3UuY2xhc3NlZCgiZGlzdGFudCIsKHQ9PntsZXQgbj10LmRhdGFzZXQuZGF0YSgpWzBdLGk9Q2UuZXhwb3J0cy5sYXN0KHQuZGF0YXNldC5kYXRhKCkpLHI9dGhpcy54U2NhbGUuc2NhbGUodGhpcy54QWNjZXNzb3IobiwwLHQuZGF0YXNldCkpLG89dGhpcy54U2NhbGUuc2NhbGUodGhpcy54QWNjZXNzb3IoaSwwLHQuZGF0YXNldCkpLGE9dGhpcy5zbW9vdGhpbmdFbmFibGVkP3QuZGF0dW0uc21vb3RoZWQ6dGhpcy55VmFsdWVBY2Nlc3Nvcih0LmRhdHVtLDAsdC5kYXRhc2V0KTtyZXR1cm4gZS54PHJ8fGUueD5vfHxpc05hTihhKX0pKS5jbGFzc2VkKCJjbG9zZXN0IiwodD0+cih0KT09PW8pKS5lYWNoKChmdW5jdGlvbih0KXtzLmRyYXdUb29sdGlwUm93KHRoaXMsbix0KX0pKS5vcmRlcigpLHUuZXhpdCgpLnJlbW92ZSgpLHUuZW50ZXIoKS5hcHBlbmQoInRyIikuZWFjaCgoZnVuY3Rpb24odCl7cy5kcmF3VG9vbHRpcFJvdyh0aGlzLG4sdCl9KSkubm9kZXMoKSx0aGlzLnRvb2x0aXAudXBkYXRlQW5kUG9zaXRpb24odGhpcy50YXJnZXRTVkcubm9kZSgpKX1kcmF3VG9vbHRpcFJvdyh0LGUsbil7Y29uc3QgaT10aGlzLHI9RHUodCkuc2VsZWN0QWxsKCJ0ZCIpLmRhdGEoZSk7ci5lYWNoKChmdW5jdGlvbih0KXt0LnN0YXRpY3x8aS5kcmF3VG9vbHRpcENvbHVtbi5jYWxsKGksdGhpcyx0LG4pfSkpLHIuZXhpdCgpLnJlbW92ZSgpLHIuZW50ZXIoKS5hcHBlbmQoInRkIikuZWFjaCgoZnVuY3Rpb24odCl7aWYoImVudGVyImluIHQmJnQuZW50ZXIpe3QuZW50ZXIuY2FsbCh0aGlzLG4pfWkuZHJhd1Rvb2x0aXBDb2x1bW4uY2FsbChpLHRoaXMsdCxuKX0pKX1kcmF3VG9vbHRpcENvbHVtbih0LGUsbil7Y29uc3R7c21vb3RoaW5nRW5hYmxlZDppfT10aGlzOyJldmFsVHlwZSJpbiBlJiZlLmV2YWxUeXBlPT1vQXQuRE9NP2UuZXZhbHVhdGUuY2FsbCh0LG4se3Ntb290aGluZ0VuYWJsZWQ6aX0pOkR1KHQpLnRleHQoZS5ldmFsdWF0ZS5jYWxsKHQsbix7c21vb3RoaW5nRW5hYmxlZDppfSkpfWZpbmRDbG9zZXN0UG9pbnQodCxlKXtjb25zdCBuPWUuZGF0YSgpLm1hcCgoKHQsbik9PnRoaXMueFNjYWxlLnNjYWxlKHRoaXMueEFjY2Vzc29yKHQsbixlKSkpKTtsZXQgaT1DZS5leHBvcnRzLnNvcnRlZEluZGV4KG4sdC54KTtpZigwPT1uLmxlbmd0aClyZXR1cm4gbnVsbDtpZihpPT09bi5sZW5ndGgpaS09MTtlbHNlIGlmKDAhPT1pKXtpPU1hdGguYWJzKG5baS0xXS10LngpPE1hdGguYWJzKG5baV0tdC54KT9pLTE6aX1jb25zdCByPWUuZGF0YSgpW2ldLG89dGhpcy5zbW9vdGhpbmdFbmFibGVkP3RoaXMuc21vb3RoZWRBY2Nlc3NvcihyLGksZSk6dGhpcy55VmFsdWVBY2Nlc3NvcihyLGksZSk7cmV0dXJue3g6bltpXSx5OnRoaXMueVNjYWxlLnNjYWxlKG8pLGRhdHVtOnIsZGF0YXNldDplfX1yZXNtb290aERhdGFzZXQodCl7bGV0IGU9dC5kYXRhKCk7Y29uc3Qgbj10aGlzLnNtb290aGluZ1dlaWdodDtsZXQgaT1lLmxlbmd0aD4wPzA6TmFOLHI9MDtjb25zdCBvPWUubWFwKCgoZSxuKT0+dGhpcy55VmFsdWVBY2Nlc3NvcihlLG4sdCkpKSxhPW8uZXZlcnkoKHQ9PnQ9PW9bMF0pKTtlLmZvckVhY2goKCh0LGUpPT57Y29uc3Qgcz1vW2VdO2lmKGF8fCFOdW1iZXIuaXNGaW5pdGUocykpdC5zbW9vdGhlZD1zO2Vsc2V7aT1pKm4rKDEtbikqcyxyKys7bGV0IGU9MTsxIT09biYmKGU9MS1NYXRoLnBvdyhuLHIpKSx0LnNtb290aGVkPWkvZX19KSl9Z2V0RGF0YXNldCh0KXtyZXR1cm4gdm9pZCAwPT09dGhpcy5uYW1lMmRhdGFzZXRzW3RdJiYodGhpcy5uYW1lMmRhdGFzZXRzW3RdPW5ldyBOTy5EYXRhc2V0KFtdLHtuYW1lOnQsbWV0YTpudWxsfSkpLHRoaXMubmFtZTJkYXRhc2V0c1t0XX1zdGF0aWMgZ2V0WVNjYWxlRnJvbVR5cGUodCl7aWYodD09PWFBdC5MT0cpcmV0dXJuIG5ldyBuQXQ7aWYodD09PWFBdC5MSU5FQVIpcmV0dXJuIG5ldyBaQ3Q7dGhyb3cgbmV3IEVycm9yKCJVbnJlY29nbml6ZWQgeVNjYWxlIHR5cGUgIit0KX1zZXRWaXNpYmxlU2VyaWVzKHQpe3RoaXMuZGlzYWJsZUNoYW5nZXMoKSwodD10LnNvcnQoKSkucmV2ZXJzZSgpLHRoaXMuc2VyaWVzTmFtZXM9dH1kaXNhYmxlQ2hhbmdlcygpe3RoaXMuZGlydHlEYXRhc2V0cy5zaXplfHwodGhpcy5saW5lUGxvdC5kYXRhc2V0cyhbXSksdGhpcy5zbW9vdGhMaW5lUGxvdCYmdGhpcy5zbW9vdGhMaW5lUGxvdC5kYXRhc2V0cyhbXSksdGhpcy5tYXJnaW5BcmVhUGxvdCYmdGhpcy5tYXJnaW5BcmVhUGxvdC5kYXRhc2V0cyhbXSkpfWNvbW1pdENoYW5nZXMoKXt0aGlzLmRhdGFzZXRzPXRoaXMuc2VyaWVzTmFtZXMubWFwKCh0PT50aGlzLmdldERhdGFzZXQodCkpKSxbLi4udGhpcy5kaXJ0eURhdGFzZXRzXS5mb3JFYWNoKCh0PT57dGhpcy5zbW9vdGhpbmdFbmFibGVkJiZ0aGlzLnJlc21vb3RoRGF0YXNldCh0aGlzLmdldERhdGFzZXQodCkpfSkpLHRoaXMudXBkYXRlU3BlY2lhbERhdGFzZXRzKCksdGhpcy5saW5lUGxvdC5kYXRhc2V0cyh0aGlzLmRhdGFzZXRzKSx0aGlzLnNtb290aGluZ0VuYWJsZWQmJnRoaXMuc21vb3RoTGluZVBsb3QuZGF0YXNldHModGhpcy5kYXRhc2V0cyksdGhpcy5tYXJnaW5BcmVhUGxvdCYmdGhpcy5tYXJnaW5BcmVhUGxvdC5kYXRhc2V0cyh0aGlzLmRhdGFzZXRzKSx0aGlzLm1lYXN1cmVCQm94QW5kTWF5YmVJbnZhbGlkYXRlTGF5b3V0SW5SYWYoKSx0aGlzLmRpcnR5RGF0YXNldHMuY2xlYXIoKX1jcmVhdGVTYW1wbGVkRGF0YXNldEZvck1hcmtlcnModCl7Y29uc3QgZT10LmRhdGEoKTtpZihlLmxlbmd0aDw9MjApcmV0dXJuIHQ7Y29uc3Qgbj1NYXRoLmNlaWwoZS5sZW5ndGgvMjApLGk9bmV3IEFycmF5KE1hdGguZmxvb3IoZS5sZW5ndGgvbikpO2ZvcihsZXQgdD0wLHI9MDt0PGkubGVuZ3RoO3QrKyxyKz1uKWlbdF09ZVtyXTtyZXR1cm4gbmV3IE5PLkRhdGFzZXQoaSx0Lm1ldGFkYXRhKCkpfXNldFNlcmllc0RhdGEodCxlKXt0aGlzLmRpc2FibGVDaGFuZ2VzKCksdGhpcy5nZXREYXRhc2V0KHQpLmRhdGEoZSksdGhpcy5kaXJ0eURhdGFzZXRzLmFkZCh0KX1zZXRTZXJpZXNNZXRhZGF0YSh0LGUpe3RoaXMuZGlzYWJsZUNoYW5nZXMoKSx0aGlzLmdldERhdGFzZXQodCkubWV0YWRhdGEoT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHRoaXMuZ2V0RGF0YXNldCh0KS5tZXRhZGF0YSgpKSx7bWV0YTplfSkpLHRoaXMuZGlydHlEYXRhc2V0cy5hZGQodCl9c21vb3RoaW5nVXBkYXRlKHQpe3RoaXMuc21vb3RoaW5nV2VpZ2h0PXQsdGhpcy5kYXRhc2V0cy5mb3JFYWNoKCh0PT50aGlzLnJlc21vb3RoRGF0YXNldCh0KSkpLHRoaXMuc21vb3RoaW5nRW5hYmxlZHx8KHRoaXMubGluZVBsb3QuYWRkQ2xhc3MoImdob3N0IiksdGhpcy5zY2F0dGVyUGxvdC55KHRoaXMuc21vb3RoZWRBY2Nlc3Nvcix0aGlzLnlTY2FsZSksdGhpcy5zbW9vdGhpbmdFbmFibGVkPSEwLHRoaXMuc21vb3RoTGluZVBsb3QuZGF0YXNldHModGhpcy5kYXRhc2V0cykpLHRoaXMubWFya2Vyc1NjYXR0ZXJQbG90JiZ0aGlzLm1hcmtlcnNTY2F0dGVyUGxvdC55KHRoaXMuZ2V0WUF4aXNBY2Nlc3NvcigpLHRoaXMueVNjYWxlKSx0aGlzLnVwZGF0ZVNwZWNpYWxEYXRhc2V0cygpfXNtb290aGluZ0Rpc2FibGUoKXt0aGlzLnNtb290aGluZ0VuYWJsZWQmJih0aGlzLmxpbmVQbG90LnJlbW92ZUNsYXNzKCJnaG9zdCIpLHRoaXMuc2NhdHRlclBsb3QueSh0aGlzLnlWYWx1ZUFjY2Vzc29yLHRoaXMueVNjYWxlKSx0aGlzLnNtb290aExpbmVQbG90LmRhdGFzZXRzKFtdKSx0aGlzLnNtb290aGluZ0VuYWJsZWQ9ITEsdGhpcy51cGRhdGVTcGVjaWFsRGF0YXNldHMoKSksdGhpcy5tYXJrZXJzU2NhdHRlclBsb3QmJnRoaXMubWFya2Vyc1NjYXR0ZXJQbG90LnkodGhpcy5nZXRZQXhpc0FjY2Vzc29yKCksdGhpcy55U2NhbGUpfXNldENvbG9yU2NhbGUodCl7dGhpcy5jb2xvclNjYWxlPXR9c2V0VG9vbHRpcENvbHVtbnModCl7dGhpcy50b29sdGlwQ29sdW1ucz10fXNldFRvb2x0aXBTb3J0aW5nTWV0aG9kKHQpe3RoaXMudG9vbHRpcFNvcnRpbmdNZXRob2Q9dH1yZW5kZXJUbyh0KXt0aGlzLnRhcmdldFNWRz10LHRoaXMub3V0ZXIucmVuZGVyVG8odCksbnVsbCE9dGhpcy5fZGVmYXVsdFhSYW5nZSYmdGhpcy5yZXNldFhEb21haW4oKSxudWxsIT10aGlzLl9kZWZhdWx0WVJhbmdlJiZ0aGlzLnJlc2V0WURvbWFpbigpLHRoaXMubWVhc3VyZUJCb3hBbmRNYXliZUludmFsaWRhdGVMYXlvdXRJblJhZigpfXJlZHJhdygpe3dpbmRvdy5jYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLl9yZWRyYXdSYWYpLHRoaXMuX3JlZHJhd1JhZj13aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgoKT0+e3RoaXMubWVhc3VyZUJCb3hBbmRNYXliZUludmFsaWRhdGVMYXlvdXQoKSx0aGlzLm91dGVyLnJlZHJhdygpfSkpfW1lYXN1cmVCQm94QW5kTWF5YmVJbnZhbGlkYXRlTGF5b3V0SW5SYWYoKXt3aW5kb3cuY2FuY2VsQW5pbWF0aW9uRnJhbWUodGhpcy5faW52YWxpZGF0ZUxheW91dFJhZiksdGhpcy5faW52YWxpZGF0ZUxheW91dFJhZj13aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgoKT0+e3RoaXMubWVhc3VyZUJCb3hBbmRNYXliZUludmFsaWRhdGVMYXlvdXQoKX0pKX1tZWFzdXJlQkJveEFuZE1heWJlSW52YWxpZGF0ZUxheW91dCgpe2lmKHRoaXMuX2xhc3REcmF3QkJveCl7Y29uc3R7d2lkdGg6dH09dGhpcy5fbGFzdERyYXdCQm94LHt3aWR0aDplfT10aGlzLnRhcmdldFNWRy5ub2RlKCkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7MD09dCYmdDxlJiZ0aGlzLm91dGVyLmludmFsaWRhdGVDYWNoZSgpfXRoaXMuX2xhc3REcmF3QkJveD10aGlzLnRhcmdldFNWRy5ub2RlKCkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCl9ZGVzdHJveSgpe3dpbmRvdy5jYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLl9yZWRyYXdSYWYpLHdpbmRvdy5jYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLl9pbnZhbGlkYXRlTGF5b3V0UmFmKSx0aGlzLm91dGVyJiZ0aGlzLm91dGVyLmRlc3Ryb3koKX1vbkFuY2hvcih0KXt0aGlzLm91dGVyJiZ0aGlzLm91dGVyLm9uQW5jaG9yKHQpfWlzRGF0YUZpdFRvRG9tYWluKCl7cmV0dXJuIHQodGhpcy54QXhpcy5nZXRTY2FsZSgpKSYmdCh0aGlzLnlBeGlzLmdldFNjYWxlKCkpO2Z1bmN0aW9uIHQodCl7Y29uc3QgZT10LmdldFRyYW5zZm9ybWF0aW9uRG9tYWluKCksbj10LmdldFRyYW5zZm9ybWF0aW9uRXh0ZW50KCk7cmV0dXJuIG5bMF09PT1lWzBdJiZuWzFdPT09ZVsxXX19fXZhciBjQXQ7bWwoe21vZHVsZU5hbWU6InBsb3R0YWJsZS1zdHlsZSIsc3R5bGVDb250ZW50OiJcbiAgICBcbi5wbG90dGFibGUtY29sb3JzLTAge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNTI3OWM3OyAvKiBJTkRJR08gKi9cbn1cblxuLnBsb3R0YWJsZS1jb2xvcnMtMSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZDM3M2U7IC8qIENPUkFMX1JFRCAqL1xufVxuXG4ucGxvdHRhYmxlLWNvbG9ycy0yIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzYzYzI2MTsgLyogRkVSTiAqL1xufVxuXG4ucGxvdHRhYmxlLWNvbG9ycy0zIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZhZDQxOTsgLyogQlJJR0hUX1NVTiAqL1xufVxuXG4ucGxvdHRhYmxlLWNvbG9ycy00IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzJjMmI2ZjsgLyogSkFDQVJUQSAqL1xufVxuXG4ucGxvdHRhYmxlLWNvbG9ycy01IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmNzkzOTsgLyogQlVSTklOR19PUkFOR0UgKi9cbn1cblxuLnBsb3R0YWJsZS1jb2xvcnMtNiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNkYjJlNjU7IC8qIENFUklTRV9SRUQgKi9cbn1cblxuLnBsb3R0YWJsZS1jb2xvcnMtNyB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM5OWNlNTA7IC8qIENPTklGRVIgKi9cbn1cblxuLnBsb3R0YWJsZS1jb2xvcnMtOCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM5NjI1NjU7IC8qIFJPWUFMX0hFQVRIICovXG59XG5cbi5wbG90dGFibGUtY29sb3JzLTkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDZjY2NjOyAvKiBST0JJTlNfRUdHX0JMVUUgKi9cbn1cblxuLyoqXG4gKiBVc2VyLXN1cHBsaWVkIHJlbmRlclRvIGVsZW1lbnQuXG4gKi9cbi5wbG90dGFibGUge1xuICBkaXNwbGF5OiBibG9jazsgLyogbXVzdCBiZSBibG9jayBlbGVtZW50cyBmb3Igd2lkdGgvaGVpZ2h0IGNhbGN1bGF0aW9ucyB0byB3b3JrIGluIEZpcmVmb3guICovXG4gIHBvaW50ZXItZXZlbnRzOiB2aXNpYmxlRmlsbDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAvKipcbiAgICogUHJlIDMuMCwgdXNlcnMgY291bGQgc2V0IHRoZSBkaW1lbnNpb24gb2YgdGhlIHJvb3QgZWxlbWVudCBpbiB0d28gd2F5czogZWl0aGVyIHVzaW5nIENTU1xuICAgKiAoaW5saW5lIG9yIHRocm91Z2ggYSBzdHlsZXNoZWV0KSwgb3IgdXNpbmcgdGhlIFNWRyB3aWR0aC9oZWlnaHQgYXR0cmlidXRlcy4gQnkgZGVmYXVsdCwgd2VcbiAgICogc2V0IHRoZSBTVkcgd2lkdGgvaGVpZ2h0IGF0dHJpYnV0ZXMgdG8gMTAwJS5cbiAgICpcbiAgICogUG9zdCAzLjAgdGhlIHJvb3QgZWxlbWVudCBpcyBhbHdheXMgYSBub3JtYWwgZGl2IGFuZCB0aGUgb25seSB3YXkgdG8gc2V0IHRoZSBkaW1lbnNpb25zIGlzXG4gICAqIHRvIHVzZSBDU1MuIFRvIHJlcGxpY2F0ZSB0aGUgXCIxMDAlLWJ5LWRlZmF1bHRcIiBiZWhhdmlvciwgd2UgYXBwbHkgd2lkdGgvaGVpZ2h0IDEwMCUuXG4gICAqL1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xufVxuXG4vKipcbiAqIFRoZSBfZWxlbWVudCB0aGF0IHJvb3RzIGVhY2ggQ29tcG9uZW50J3MgRE9NLlxuICovXG4ucGxvdHRhYmxlIC5jb21wb25lbnQge1xuICAvKiBBbGxvdyBjb21wb25lbnRzIHRvIGJlIHBvc2l0aW9uZWQgd2l0aCBleHBsaWNpdCBsZWZ0L3RvcC93aWR0aC9oZWlnaHQgc3R5bGVzICovXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbn1cblxuLnBsb3R0YWJsZSAuYmFja2dyb3VuZC1jb250YWluZXIsXG4ucGxvdHRhYmxlIC5jb250ZW50LFxuLnBsb3R0YWJsZSAuZm9yZWdyb3VuZC1jb250YWluZXIge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG59XG5cbi8qKlxuICogRG9uJ3QgYWxsb3cgc3ZnIGVsZW1lbnRzIGFib3ZlIHRoZSBjb250ZW50IHRvIHN0ZWFsIGV2ZW50c1xuICovXG4ucGxvdHRhYmxlIC5mb3JlZ3JvdW5kLWNvbnRhaW5lciB7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xufVxuXG4ucGxvdHRhYmxlIC5jb21wb25lbnQtb3ZlcmZsb3ctaGlkZGVuIHtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLnBsb3R0YWJsZSAuY29tcG9uZW50LW92ZXJmbG93LXZpc2libGUge1xuICBvdmVyZmxvdzogdmlzaWJsZTtcbn1cblxuLnBsb3R0YWJsZSAucGxvdC1jYW52YXMtY29udGFpbmVyIHtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLnBsb3R0YWJsZSAucGxvdC1jYW52YXMge1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICAvKipcbiAgICogUGxheSB3ZWxsIHdpdGggZGVmZXJyZWQgcmVuZGVyaW5nLlxuICAgKi9cbiAgdHJhbnNmb3JtLW9yaWdpbjogMHB4IDBweCAwcHg7XG59XG5cbi5wbG90dGFibGUgdGV4dCB7XG4gIHRleHQtcmVuZGVyaW5nOiBnZW9tZXRyaWNQcmVjaXNpb247XG59XG5cbi5wbG90dGFibGUgLmxhYmVsIHRleHQge1xuICBmaWxsOiAjMzIzMTNGO1xufVxuXG4ucGxvdHRhYmxlIC5iYXItbGFiZWwtdGV4dC1hcmVhIHRleHQsXG4ucGxvdHRhYmxlIC5zY2F0dGVyLWxhYmVsLXRleHQtYXJlYSB0ZXh0IHtcbiAgZm9udC1zaXplOiAxMnB4O1xufVxuXG4ucGxvdHRhYmxlIC5sYWJlbC1hcmVhIHRleHQge1xuICBmaWxsOiAjMzIzMTNGO1xuICBmb250LXNpemU6IDE0cHg7XG59XG5cbi5wbG90dGFibGUgLmxpZ2h0LWxhYmVsIHRleHQge1xuICBmaWxsOiB3aGl0ZTtcbn1cblxuLnBsb3R0YWJsZSAuZGFyay1sYWJlbCB0ZXh0IHtcbiAgZmlsbDogIzMyMzEzRjtcbn1cblxuLnBsb3R0YWJsZSAub2ZmLWJhci1sYWJlbCB0ZXh0IHtcbiAgZmlsbDogIzMyMzEzRjtcbn1cblxuLnBsb3R0YWJsZSAuc3RhY2tlZC1iYXItbGFiZWwgdGV4dCB7XG4gIGZpbGw6ICMzMjMxM0Y7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbn1cblxuLnBsb3R0YWJsZSAuc3RhY2tlZC1iYXItcGxvdCAub2ZmLWJhci1sYWJlbCB7XG4gIC8qIEhBQ0tIQUNLICMyNzk1OiBjb3JyZWN0IG9mZi1iYXIgbGFiZWwgbG9naWMgdG8gYmUgaW1wbGVtZW50ZWQgb24gU3RhY2tlZEJhciAqL1xuICB2aXNpYmlsaXR5OiBoaWRkZW4gIWltcG9ydGFudDtcbn1cblxuLnBsb3R0YWJsZSAuYXhpcy1sYWJlbCB0ZXh0IHtcbiAgZm9udC1zaXplOiAxMHB4O1xuICBmb250LXdlaWdodDogYm9sZDtcbiAgbGV0dGVyLXNwYWNpbmc6IDFweDtcbiAgbGluZS1oZWlnaHQ6IG5vcm1hbDtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbn1cblxuLnBsb3R0YWJsZSAudGl0bGUtbGFiZWwgdGV4dCB7XG4gIGZvbnQtc2l6ZTogMjBweDtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG59XG5cbi5wbG90dGFibGUgLmF4aXMgbGluZS5iYXNlbGluZSB7XG4gIHN0cm9rZTogI0NDQztcbiAgc3Ryb2tlLXdpZHRoOiAxcHg7XG59XG5cbi5wbG90dGFibGUgLmF4aXMgbGluZS50aWNrLW1hcmsge1xuICBzdHJva2U6ICNDQ0M7XG4gIHN0cm9rZS13aWR0aDogMXB4O1xufVxuXG4ucGxvdHRhYmxlIC5heGlzIHRleHQge1xuICBmaWxsOiAjMzIzMTNGO1xuICBmb250LXNpemU6IDEycHg7XG4gIGZvbnQtd2VpZ2h0OiAyMDA7XG4gIGxpbmUtaGVpZ2h0OiBub3JtYWw7XG59XG5cbi5wbG90dGFibGUgLmF4aXMgLmFubm90YXRpb24tY2lyY2xlIHtcbiAgZmlsbDogd2hpdGU7XG4gIHN0cm9rZS13aWR0aDogMXB4O1xuICBzdHJva2U6ICNDQ0M7XG59XG5cbi5wbG90dGFibGUgLmF4aXMgLmFubm90YXRpb24tbGluZSB7XG4gIHN0cm9rZTogI0NDQztcbiAgc3Ryb2tlLXdpZHRoOiAxcHg7XG59XG5cbi5wbG90dGFibGUgLmF4aXMgLmFubm90YXRpb24tcmVjdCB7XG4gIHN0cm9rZTogI0NDQztcbiAgc3Ryb2tlLXdpZHRoOiAxcHg7XG4gIGZpbGw6IHdoaXRlO1xufVxuXG4ucGxvdHRhYmxlIC5iYXItcGxvdCAuYmFzZWxpbmUge1xuICBzdHJva2U6ICM5OTk7XG59XG5cbi5wbG90dGFibGUgLmdyaWRsaW5lcyBsaW5lIHtcbiAgc3Ryb2tlOiAjM0MzQzNDOyAvKiBoYWNraGFjazogZ3JpZGxpbmVzIHNob3VsZCBiZSBzb2xpZDsgc2VlICM4MjAgKi9cbiAgb3BhY2l0eTogMC4yNTtcbiAgc3Ryb2tlLXdpZHRoOiAxcHg7XG59XG5cbi5wbG90dGFibGUgLnNlbGVjdGlvbi1ib3gtbGF5ZXIgLnNlbGVjdGlvbi1hcmVhIHtcbiAgZmlsbDogYmxhY2s7XG4gIGZpbGwtb3BhY2l0eTogMC4wMztcbiAgc3Ryb2tlOiAjQ0NDO1xufVxuLyogRHJhZ0JveExheWVyICovXG4ucGxvdHRhYmxlIC5kcmFnLWJveC1sYXllci54LXJlc2l6YWJsZSAuZHJhZy1lZGdlLWxyIHtcbiAgY3Vyc29yOiBldy1yZXNpemU7XG59XG4ucGxvdHRhYmxlIC5kcmFnLWJveC1sYXllci55LXJlc2l6YWJsZSAuZHJhZy1lZGdlLXRiIHtcbiAgY3Vyc29yOiBucy1yZXNpemU7XG59XG5cbi5wbG90dGFibGUgLmRyYWctYm94LWxheWVyLngtcmVzaXphYmxlLnktcmVzaXphYmxlIC5kcmFnLWNvcm5lci10bCB7XG4gIGN1cnNvcjogbndzZS1yZXNpemU7XG59XG4ucGxvdHRhYmxlIC5kcmFnLWJveC1sYXllci54LXJlc2l6YWJsZS55LXJlc2l6YWJsZSAuZHJhZy1jb3JuZXItdHIge1xuICBjdXJzb3I6IG5lc3ctcmVzaXplO1xufVxuLnBsb3R0YWJsZSAuZHJhZy1ib3gtbGF5ZXIueC1yZXNpemFibGUueS1yZXNpemFibGUgLmRyYWctY29ybmVyLWJsIHtcbiAgY3Vyc29yOiBuZXN3LXJlc2l6ZTtcbn1cbi5wbG90dGFibGUgLmRyYWctYm94LWxheWVyLngtcmVzaXphYmxlLnktcmVzaXphYmxlIC5kcmFnLWNvcm5lci1iciB7XG4gIGN1cnNvcjogbndzZS1yZXNpemU7XG59XG5cbi5wbG90dGFibGUgLmRyYWctYm94LWxheWVyLm1vdmFibGUgLnNlbGVjdGlvbi1hcmVhIHtcbiAgY3Vyc29yOiBtb3ZlOyAvKiBJRSBmYWxsYmFjayAqL1xuICBjdXJzb3I6IC1tb3otZ3JhYjtcbiAgY3Vyc29yOiAtd2Via2l0LWdyYWI7XG4gIGN1cnNvcjogZ3JhYjtcbn1cblxuLnBsb3R0YWJsZSAuZHJhZy1ib3gtbGF5ZXIubW92YWJsZSAuc2VsZWN0aW9uLWFyZWE6YWN0aXZlIHtcbiAgY3Vyc29yOiAtbW96LWdyYWJiaW5nO1xuICBjdXJzb3I6IC13ZWJraXQtZ3JhYmJpbmc7XG4gIGN1cnNvcjogZ3JhYmJpbmc7XG59XG4vKiAvRHJhZ0JveExheWVyICovXG5cbi5wbG90dGFibGUgLmd1aWRlLWxpbmUtbGF5ZXIgbGluZS5ndWlkZS1saW5lIHtcbiAgc3Ryb2tlOiAjQ0NDO1xuICBzdHJva2Utd2lkdGg6IDFweDtcbn1cblxuLnBsb3R0YWJsZSAuZHJhZy1saW5lLWxheWVyLmVuYWJsZWQudmVydGljYWwgbGluZS5kcmFnLWVkZ2Uge1xuICBjdXJzb3I6IGV3LXJlc2l6ZTtcbn1cblxuLnBsb3R0YWJsZSAuZHJhZy1saW5lLWxheWVyLmVuYWJsZWQuaG9yaXpvbnRhbCBsaW5lLmRyYWctZWRnZSB7XG4gIGN1cnNvcjogbnMtcmVzaXplO1xufVxuXG4ucGxvdHRhYmxlIC5sZWdlbmQgdGV4dCB7XG4gIGZpbGw6ICMzMjMxM0Y7XG4gIGZvbnQtc2l6ZTogMTJweDtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIGxpbmUtaGVpZ2h0OiBub3JtYWw7XG59XG5cbi5wbG90dGFibGUgLmludGVycG9sYXRlZC1jb2xvci1sZWdlbmQgcmVjdC5zd2F0Y2gtYm91bmRpbmctYm94IHtcbiAgZmlsbDogbm9uZTtcbiAgc3Ryb2tlOiAjQ0NDO1xuICBzdHJva2Utd2lkdGg6IDFweDtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG59XG5cbi5wbG90dGFibGUgLndhdGVyZmFsbC1wbG90IGxpbmUuY29ubmVjdG9yIHtcbiAgc3Ryb2tlOiAjQ0NDO1xuICBzdHJva2Utd2lkdGg6IDFweDtcbn1cblxuLnBsb3R0YWJsZSAucGllLXBsb3QgLmFyYy5vdXRsaW5lIHtcbiAgc3Ryb2tlLWxpbmVqb2luOiByb3VuZDtcbn1cblxuIn0pLChmdW5jdGlvbih0KXt0LkdST1VQPSJHIix0LkRJVj0iRElWIix0LlNWRz0iU1ZHIix0LlRFWFQ9IlRFWFQifSkoY0F0fHwoY0F0PXt9KSk7Y2xhc3MgdUF0IGV4dGVuZHMgY2xhc3N7Y29uc3RydWN0b3IodCl7dGhpcy51bmlxdWVJZD0wLHRoaXMucm9vdD10fWV4cG9ydEFzU3RyaW5nKCl7Y29uc3QgdD10aGlzLmNvbnZlcnQodGhpcy5yb290KTtpZighdClyZXR1cm4iIjtjb25zdCBlPXRoaXMuY3JlYXRlUm9vdFN2ZygpO3JldHVybiBlLmFwcGVuZENoaWxkKHQpLGUub3V0ZXJIVE1MfWNyZWF0ZVVuaXF1ZUlkKHQpe3JldHVybmAke3R9XyR7dGhpcy51bmlxdWVJZCsrfWB9Z2V0U2l6ZSgpe3JldHVybiB0aGlzLnJvb3QuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCl9Y3JlYXRlUm9vdFN2Zygpe2NvbnN0IHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3ZnIiksZT10aGlzLmdldFNpemUoKTtyZXR1cm4gdC5zZXRBdHRyaWJ1dGVOUygic3ZnIiwidmlld0JveCIsYDAgMCAke2Uud2lkdGh9ICR7ZS5oZWlnaHR9YCksdC5zZXRBdHRyaWJ1dGUoInhtbG5zIiwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciKSx0fWNvbnZlcnQodCl7bGV0IGU9bnVsbDtjb25zdCBuPXQubm9kZU5hbWUudG9VcHBlckNhc2UoKTtpZih0Lm5vZGVUeXBlIT1Ob2RlLkVMRU1FTlRfTk9ERXx8biE9Y0F0LkRJViYmbiE9Y0F0LlNWRyllPXQuY2xvbmVOb2RlKCk7ZWxzZXtlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoY0F0LkdST1VQKTtjb25zdCBuPXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHQpLGk9cGFyc2VJbnQobi5sZWZ0LDEwKSxyPXBhcnNlSW50KG4udG9wLDEwKTtpZihpfHxyKXtjb25zdCB0PXRoaXMuY3JlYXRlVW5pcXVlSWQoImNsaXAiKTtlLnNldEF0dHJpYnV0ZSgidHJhbnNmb3JtIixgdHJhbnNsYXRlKCR7aX0sICR7cn0pYCksZS5zZXRBdHRyaWJ1dGUoImNsaXAtcGF0aCIsYHVybCgjJHt0fSlgKTtjb25zdCBvPXBhcnNlSW50KG4ud2lkdGgsMTApLGE9cGFyc2VJbnQobi5oZWlnaHQsMTApLHM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgicmVjdCIpO3Muc2V0QXR0cmlidXRlKCJ3aWR0aCIsU3RyaW5nKG8pKSxzLnNldEF0dHJpYnV0ZSgiaGVpZ2h0IixTdHJpbmcoYSkpO2NvbnN0IGw9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJzdmciLCJjbGlwUGF0aCIpO2wuaWQ9dCxsLmFwcGVuZENoaWxkKHMpLGUuYXBwZW5kQ2hpbGQobCl9fUFycmF5LmZyb20odC5jaGlsZE5vZGVzKS5tYXAoKHQ9PnRoaXMuY29udmVydCh0KSkpLmZpbHRlcihCb29sZWFuKS5mb3JFYWNoKCh0PT5lLmFwcGVuZENoaWxkKHQpKSk7cmV0dXJuIGUubm9kZU5hbWUudG9VcHBlckNhc2UoKT09Y0F0LkdST1VQJiYhZS5oYXNDaGlsZE5vZGVzKCl8fHRoaXMuc2hvdWxkT21pdE5vZGUodCk/bnVsbDp0aGlzLnN0cmlwQ2xhc3ModGhpcy50cmFuc2ZlclN0eWxlKHQsZSkpfXN0cmlwQ2xhc3ModCl7cmV0dXJuIHQubm9kZVR5cGU9PU5vZGUuRUxFTUVOVF9OT0RFJiZ0LnJlbW92ZUF0dHJpYnV0ZSgiY2xhc3MiKSx0fXRyYW5zZmVyU3R5bGUodCxlKXtpZihlLm5vZGVUeXBlIT1Ob2RlLkVMRU1FTlRfTk9ERSlyZXR1cm4gZTtjb25zdCBuPWUsaT1lLm5vZGVOYW1lLnRvVXBwZXJDYXNlKCkscj13aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0KTtyZXR1cm4gaT09Y0F0LlRFWFQmJk9iamVjdC5hc3NpZ24obi5zdHlsZSx7Zm9udEZhbWlseTpyLmZvbnRGYW1pbHksZm9udFNpemU6ci5mb250U2l6ZSxmb250V2VpZ2h0OnIuZm9udFdlaWdodH0pLGkhPWNBdC5HUk9VUCYmKG4uc2V0QXR0cmlidXRlKCJmaWxsIixyLmZpbGwpLG4uc2V0QXR0cmlidXRlKCJzdHJva2UiLHIuc3Ryb2tlKSxuLnNldEF0dHJpYnV0ZSgic3Ryb2tlLXdpZHRoIixyLnN0cm9rZVdpZHRoKSksIjEiIT1yLm9wYWNpdHkmJm4uc2V0QXR0cmlidXRlKCJvcGFjaXR5IixyLm9wYWNpdHkpLGV9c2hvdWxkT21pdE5vZGUodCl7cmV0dXJuITF9fXtzaG91bGRPbWl0Tm9kZSh0KXtyZXR1cm4gdC5ub2RlVHlwZT09Tm9kZS5FTEVNRU5UX05PREUmJnQuY2xhc3NMaXN0LmNvbnRhaW5zKCJzY2F0dGVyLXBsb3QiKX19bWwoe21vZHVsZU5hbWU6InZ6LXBhbi16b29tLXN0eWxlIixzdHlsZUNvbnRlbnQ6IlxuICAgIC5oZWxwIHtcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICBhbmltYXRpb24tZGVsYXk6IDFzO1xuICAgICAgYW5pbWF0aW9uLWR1cmF0aW9uOiAxcztcbiAgICAgIGFuaW1hdGlvbi1uYW1lOiBmYWRlLW91dDtcbiAgICAgIGJhY2tncm91bmQ6IHJnYmEoMzAsIDMwLCAzMCwgMC42KTtcbiAgICAgIGJvdHRvbTogMDtcbiAgICAgIGNvbG9yOiAjZmZmO1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgbGVmdDogMDtcbiAgICAgIG9wYWNpdHk6IDE7XG4gICAgICBwYWRkaW5nOiAyMHB4O1xuICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICByaWdodDogMDtcbiAgICAgIHRvcDogMDtcbiAgICB9XG5cbiAgICAuaGVscCA+IHNwYW4ge1xuICAgICAgd2hpdGUtc3BhY2U6IG5vcm1hbDtcbiAgICB9XG5cbiAgICBAa2V5ZnJhbWVzIGZhZGUtb3V0IHtcbiAgICAgIDAlIHtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgIH1cblxuICAgICAgMTAwJSB7XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICB9XG4gICAgfVxuICAifSk7Y29uc3QgaEF0PVNDdCg0KSxkQXQ9dD0+aXNOYU4odCk/Ik5hTiI6aEF0KHQpLHBBdD1be3RpdGxlOiJOYW1lIixldmFsdWF0ZTp0PT50LmRhdGFzZXQubWV0YWRhdGEoKS5uYW1lfSx7dGl0bGU6IlNtb290aGVkIixldmFsdWF0ZSh0LGUpe2NvbnN0e3Ntb290aGluZ0VuYWJsZWQ6bn09ZTtyZXR1cm4gZEF0KG4/dC5kYXR1bS5zbW9vdGhlZDp0LmRhdHVtLnNjYWxhcil9fSx7dGl0bGU6IlZhbHVlIixldmFsdWF0ZTp0PT5kQXQodC5kYXR1bS5zY2FsYXIpfSx7dGl0bGU6IlN0ZXAiLGV2YWx1YXRlOnQ9Pk1DdCh0LmRhdHVtLnN0ZXApfSx7dGl0bGU6IlRpbWUiLGV2YWx1YXRlOnQ9PlRDdCh0LmRhdHVtLndhbGxfdGltZSl9LHt0aXRsZToiUmVsYXRpdmUiLGV2YWx1YXRlOnQ9PkFDdChDQ3QodC5kYXR1bSwwLHQuZGF0YXNldCkpfV07bGV0IGZBdD1jbGFzcyBleHRlbmRzKGNyKHdlKSl7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMuY29sb3JTY2FsZT0obmV3IE5PLlNjYWxlcy5Db2xvcikucmFuZ2UoakEuc2xpY2UoMCkpLHRoaXMuc21vb3RoaW5nRW5hYmxlZD0hMSx0aGlzLnNtb290aGluZ1dlaWdodD0uNix0aGlzLnhUeXBlPW51bGwsdGhpcy54Q29tcG9uZW50c0NyZWF0aW9uTWV0aG9kPW51bGwsdGhpcy55VmFsdWVBY2Nlc3Nvcj10PT50LnNjYWxhcix0aGlzLnRvb2x0aXBDb2x1bW5zPXBBdCx0aGlzLnlTY2FsZVR5cGU9YUF0LkxJTkVBUix0aGlzLmlnbm9yZVlPdXRsaWVycz0hMSx0aGlzLnRvb2x0aXBTb3J0aW5nTWV0aG9kPSJkZWZhdWx0Iix0aGlzLnRvb2x0aXBQb3NpdGlvbj16Q3QuQk9UVE9NLHRoaXMuX3Zpc2libGVTZXJpZXNDYWNoZT1bXSx0aGlzLl9zZXJpZXNEYXRhQ2FjaGU9e30sdGhpcy5fc2VyaWVzTWV0YWRhdGFDYWNoZT17fSx0aGlzLl9tYWtlQ2hhcnRBc3luY0NhbGxiYWNrSWQ9bnVsbH1yZWFkeSgpe3N1cGVyLnJlYWR5KCksdGhpcy5zY29wZVN1YnRyZWUodGhpcy4kLmNoYXJ0ZGl2LCEwKX1hdHRhY2hlZCgpe2NvbnN0IHQ9e2NhcHR1cmU6ITAscGFzc2l2ZTohMH07dGhpcy5fbGlzdGVuKHRoaXMsIm1vdXNlZG93biIsdGhpcy5fb25Nb3VzZURvd24uYmluZCh0aGlzKSx0KSx0aGlzLl9saXN0ZW4odGhpcywibW91c2V1cCIsdGhpcy5fb25Nb3VzZVVwLmJpbmQodGhpcyksdCksdGhpcy5fbGlzdGVuKHdpbmRvdywia2V5ZG93biIsdGhpcy5fb25LZXlEb3duLmJpbmQodGhpcyksdCksdGhpcy5fbGlzdGVuKHdpbmRvdywia2V5dXAiLHRoaXMuX29uS2V5VXAuYmluZCh0aGlzKSx0KX1kZXRhY2hlZCgpe3RoaXMuY2FuY2VsQXN5bmModGhpcy5fbWFrZUNoYXJ0QXN5bmNDYWxsYmFja0lkKSx0aGlzLl9jaGFydCYmKHRoaXMuX2NoYXJ0LmRlc3Ryb3koKSx0aGlzLl9jaGFydD12b2lkIDApLHRoaXMuX2xpc3RlbmVycyYmKHRoaXMuX2xpc3RlbmVycy5mb3JFYWNoKCgoe25vZGU6dCxldmVudE5hbWU6ZSxmdW5jOm4sb3B0aW9uOml9KT0+e3QucmVtb3ZlRXZlbnRMaXN0ZW5lcihlLG4saSl9KSksdGhpcy5fbGlzdGVuZXJzLmNsZWFyKCkpfV9saXN0ZW4odCxlLG4saT17fSl7dGhpcy5fbGlzdGVuZXJzfHwodGhpcy5fbGlzdGVuZXJzPW5ldyBTZXQpLHRoaXMuX2xpc3RlbmVycy5hZGQoe25vZGU6dCxldmVudE5hbWU6ZSxmdW5jOm4sb3B0aW9uOml9KSx0LmFkZEV2ZW50TGlzdGVuZXIoZSxuLGkpfV9vbktleURvd24odCl7dGhpcy50b2dnbGVDbGFzcygicGFua2V5IixzQXQuaXNQYW5LZXkodCkpfV9vbktleVVwKHQpe3RoaXMudG9nZ2xlQ2xhc3MoInBhbmtleSIsc0F0LmlzUGFuS2V5KHQpKX1fb25Nb3VzZURvd24odCl7dGhpcy50b2dnbGVDbGFzcygibW91c2Vkb3duIiwhMCl9X29uTW91c2VVcCh0KXt0aGlzLnRvZ2dsZUNsYXNzKCJtb3VzZWRvd24iLCExKX1pc0RhdGFGaXRUb0RvbWFpbigpe3JldHVybiF0aGlzLl9jaGFydHx8dGhpcy5fY2hhcnQuaXNEYXRhRml0VG9Eb21haW4oKX1zZXRWaXNpYmxlU2VyaWVzKHQpe0NlLmV4cG9ydHMuaXNFcXVhbCh0aGlzLl92aXNpYmxlU2VyaWVzQ2FjaGUsdCl8fCh0aGlzLl92aXNpYmxlU2VyaWVzQ2FjaGU9dCl9c2V0U2VyaWVzRGF0YSh0LGUpe3RoaXMuX3Nlcmllc0RhdGFDYWNoZVt0XT1lLHRoaXMuX2NoYXJ0JiZ0aGlzLl9jaGFydC5zZXRTZXJpZXNEYXRhKHQsZSl9c2V0U2VyaWVzTWV0YWRhdGEodCxlKXt0aGlzLl9zZXJpZXNNZXRhZGF0YUNhY2hlW3RdPWUsdGhpcy5fY2hhcnQmJnRoaXMuX2NoYXJ0LnNldFNlcmllc01ldGFkYXRhKHQsZSl9Y29tbWl0Q2hhbmdlcygpe3RoaXMuX2NoYXJ0JiZ0aGlzLl9jaGFydC5jb21taXRDaGFuZ2VzKCl9cmVzZXREb21haW4oKXt0aGlzLl9jaGFydCYmdGhpcy5fY2hhcnQucmVzZXREb21haW4oKX1yZWRyYXcoKXt0aGlzLl9jaGFydCYmdGhpcy5fY2hhcnQucmVkcmF3KCl9X21ha2VDaGFydCgpe251bGwhPT10aGlzLl9tYWtlQ2hhcnRBc3luY0NhbGxiYWNrSWQmJih0aGlzLmNhbmNlbEFzeW5jKHRoaXMuX21ha2VDaGFydEFzeW5jQ2FsbGJhY2tJZCksdGhpcy5fbWFrZUNoYXJ0QXN5bmNDYWxsYmFja0lkPW51bGwpLHRoaXMuX21ha2VDaGFydEFzeW5jQ2FsbGJhY2tJZD10aGlzLmFzeW5jKChmdW5jdGlvbigpe3RoaXMuX21ha2VDaGFydEFzeW5jQ2FsbGJhY2tJZD1udWxsO2xldCB0PXRoaXMueENvbXBvbmVudHNDcmVhdGlvbk1ldGhvZDtpZih0aGlzLnhUeXBlfHx0P3RoaXMueFR5cGUmJih0PSgpPT5rQ3QodGhpcy54VHlwZSkpOnQ9RUN0LHQmJnRoaXMueVZhbHVlQWNjZXNzb3ImJnRoaXMudG9vbHRpcENvbHVtbnMpe3ZhciBlPW5ldyBsQXQodCx0aGlzLnlWYWx1ZUFjY2Vzc29yLHRoaXMueVNjYWxlVHlwZSx0aGlzLmNvbG9yU2NhbGUsdGhpcy4kLnRvb2x0aXAsdGhpcy50b29sdGlwQ29sdW1ucyx0aGlzLmZpbGxBcmVhLHRoaXMuZGVmYXVsdFhSYW5nZSx0aGlzLmRlZmF1bHRZUmFuZ2UsdGhpcy5zeW1ib2xGdW5jdGlvbix0aGlzLnhBeGlzRm9ybWF0dGVyKSxuPUR1KHRoaXMuJC5jaGFydGRpdik7ZS5yZW5kZXJUbyhuKSx0aGlzLl9jaGFydCYmdGhpcy5fY2hhcnQuZGVzdHJveSgpLHRoaXMuX2NoYXJ0PWUsdGhpcy5fY2hhcnQub25BbmNob3IoKCgpPT50aGlzLmZpcmUoImNoYXJ0LWF0dGFjaGVkIikpKX19KSwzNTApfV9yZWxvYWRGcm9tQ2FjaGUoKXt0aGlzLl9jaGFydCYmKHRoaXMuX3Zpc2libGVTZXJpZXNDYWNoZS5mb3JFYWNoKCh0PT57dGhpcy5fY2hhcnQuc2V0U2VyaWVzRGF0YSh0LHRoaXMuX3Nlcmllc0RhdGFDYWNoZVt0XXx8W10pfSkpLHRoaXMuX3Zpc2libGVTZXJpZXNDYWNoZS5maWx0ZXIoKHQ9PnRoaXMuX3Nlcmllc01ldGFkYXRhQ2FjaGVbdF0pKS5mb3JFYWNoKCh0PT57dGhpcy5fY2hhcnQuc2V0U2VyaWVzTWV0YWRhdGEodCx0aGlzLl9zZXJpZXNNZXRhZGF0YUNhY2hlW3RdKX0pKSx0aGlzLl9jaGFydC5zZXRWaXNpYmxlU2VyaWVzKHRoaXMuX3Zpc2libGVTZXJpZXNDYWNoZSksdGhpcy5fY2hhcnQuY29tbWl0Q2hhbmdlcygpKX1fc21vb3RoaW5nQ2hhbmdlZCgpe3RoaXMuX2NoYXJ0JiYodGhpcy5zbW9vdGhpbmdFbmFibGVkP3RoaXMuX2NoYXJ0LnNtb290aGluZ1VwZGF0ZSh0aGlzLnNtb290aGluZ1dlaWdodCk6dGhpcy5fY2hhcnQuc21vb3RoaW5nRGlzYWJsZSgpKX1fb3V0bGllcnNDaGFuZ2VkKCl7dGhpcy5fY2hhcnQmJnRoaXMuX2NoYXJ0Lmlnbm9yZVlPdXRsaWVycyh0aGlzLmlnbm9yZVlPdXRsaWVycyl9X2NvbG9yU2NhbGVDaGFuZ2VkKCl7dGhpcy5fY2hhcnQmJih0aGlzLl9jaGFydC5zZXRDb2xvclNjYWxlKHRoaXMuY29sb3JTY2FsZSksdGhpcy5fY2hhcnQucmVkcmF3KCkpfV90b29sdGlwQ29sdW1uc0NoYW5nZWQoKXt0aGlzLl9jaGFydCYmdGhpcy5fY2hhcnQuc2V0VG9vbHRpcENvbHVtbnModGhpcy50b29sdGlwQ29sdW1ucyl9X3Rvb2x0aXBTb3J0aW5nTWV0aG9kQ2hhbmdlZCgpe3RoaXMuX2NoYXJ0JiZ0aGlzLl9jaGFydC5zZXRUb29sdGlwU29ydGluZ01ldGhvZCh0aGlzLnRvb2x0aXBTb3J0aW5nTWV0aG9kKX1nZXRFeHBvcnRlcigpe3JldHVybiBuZXcgdUF0KHRoaXMuJC5jaGFydGRpdil9fTtmQXQudGVtcGxhdGU9eGVgCiAgICA8ZGl2IGlkPSJjaGFydGRpdiI+PC9kaXY+CiAgICA8dnotY2hhcnQtdG9vbHRpcAogICAgICBpZD0idG9vbHRpcCIKICAgICAgcG9zaXRpb249IltbdG9vbHRpcFBvc2l0aW9uXV0iCiAgICAgIGNvbnRlbnQtY29tcG9uZW50LW5hbWU9InZ6LWxpbmUtY2hhcnQtdG9vbHRpcCIKICAgID48L3Z6LWNoYXJ0LXRvb2x0aXA+CiAgICA8c3R5bGUgaW5jbHVkZT0icGxvdHRhYmxlLXN0eWxlIj48L3N0eWxlPgogICAgPHN0eWxlIGluY2x1ZGU9InZ6LXBhbi16b29tLXN0eWxlIj48L3N0eWxlPgogICAgPHN0eWxlPgogICAgICA6aG9zdCB7CiAgICAgICAgLW1vei11c2VyLXNlbGVjdDogbm9uZTsKICAgICAgICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lOwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICBmbGV4LWdyb3c6IDE7CiAgICAgICAgZmxleC1zaHJpbms6IDE7CiAgICAgICAgb3V0bGluZTogbm9uZTsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgICAgfQogICAgICBkaXYgewogICAgICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAgICAgLW1vei11c2VyLXNlbGVjdDogbm9uZTsKICAgICAgICBmbGV4LWdyb3c6IDE7CiAgICAgICAgZmxleC1zaHJpbms6IDE7CiAgICAgIH0KCiAgICAgICNjaGFydGRpdiAubWFpbiB7CiAgICAgICAgY29udGFpbjogc3RyaWN0OwogICAgICAgIGN1cnNvcjogY3Jvc3NoYWlyOwogICAgICB9CgogICAgICA6aG9zdCgucGFua2V5KSAjY2hhcnRkaXYgOm5vdCguZHJhZy16b29taW5nKSAubWFpbiB7CiAgICAgICAgY3Vyc29yOiAtd2Via2l0LWdyYWI7CiAgICAgICAgY3Vyc29yOiBncmFiOwogICAgICB9CgogICAgICA6aG9zdCgubW91c2Vkb3duKSAjY2hhcnRkaXYgLnBhbm5pbmcgLm1haW4gewogICAgICAgIGN1cnNvcjogLXdlYmtpdC1ncmFiYmluZzsKICAgICAgICBjdXJzb3I6IGdyYWJiaW5nOwogICAgICB9CgogICAgICAjY2hhcnRkaXYgewogICAgICAgIGNvbnRhaW46IHN0cmljdDsKICAgICAgfQoKICAgICAgI2NoYXJ0ZGl2IGxpbmUuZ3VpZGUtbGluZSB7CiAgICAgICAgc3Ryb2tlOiAjOTk5OwogICAgICAgIHN0cm9rZS13aWR0aDogMS41cHg7CiAgICAgIH0KICAgICAgI2NoYXJ0ZGl2OmhvdmVyIC5tYWluIHsKICAgICAgICB3aWxsLWNoYW5nZTogdHJhbnNmb3JtOwogICAgICB9CgogICAgICAuZ2hvc3QgewogICAgICAgIG9wYWNpdHk6IDAuMjsKICAgICAgICBzdHJva2Utd2lkdGg6IDFweDsKICAgICAgfQoKICAgICAgLnBsb3R0YWJsZSAuYXhpcyB0ZXh0IHsKICAgICAgICBmaWxsOiBjdXJyZW50Q29sb3I7CiAgICAgIH0KCiAgICAgIC5wbG90dGFibGUgLmdyaWRsaW5lcyBsaW5lIHsKICAgICAgICBzdHJva2U6IHZhcigtLXRiLXNlY29uZGFyeS10ZXh0LWNvbG9yKTsKICAgICAgfQogICAgPC9zdHlsZT4KICBgLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE5PLlNjYWxlcy5Db2xvcildLGZBdC5wcm90b3R5cGUsImNvbG9yU2NhbGUiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pXSxmQXQucHJvdG90eXBlLCJzeW1ib2xGdW5jdGlvbiIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW4sbm90aWZ5OiEwfSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxmQXQucHJvdG90eXBlLCJzbW9vdGhpbmdFbmFibGVkIix2b2lkIDApLHQoW28oe3R5cGU6TnVtYmVyfSksZSgiZGVzaWduOnR5cGUiLE51bWJlcildLGZBdC5wcm90b3R5cGUsInNtb290aGluZ1dlaWdodCIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxmQXQucHJvdG90eXBlLCJ4VHlwZSIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbildLGZBdC5wcm90b3R5cGUsInhDb21wb25lbnRzQ3JlYXRpb25NZXRob2QiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pXSxmQXQucHJvdG90eXBlLCJ4QXhpc0Zvcm1hdHRlciIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbildLGZBdC5wcm90b3R5cGUsInlWYWx1ZUFjY2Vzc29yIix2b2lkIDApLHQoW28oe3R5cGU6QXJyYXl9KSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpXSxmQXQucHJvdG90eXBlLCJ0b29sdGlwQ29sdW1ucyIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxmQXQucHJvdG90eXBlLCJmaWxsQXJlYSIsdm9pZCAwKSx0KFtvKHt0eXBlOkFycmF5fSksZSgiZGVzaWduOnR5cGUiLEFycmF5KV0sZkF0LnByb3RvdHlwZSwiZGVmYXVsdFhSYW5nZSIsdm9pZCAwKSx0KFtvKHt0eXBlOkFycmF5fSksZSgiZGVzaWduOnR5cGUiLEFycmF5KV0sZkF0LnByb3RvdHlwZSwiZGVmYXVsdFlSYW5nZSIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxmQXQucHJvdG90eXBlLCJ5U2NhbGVUeXBlIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sZkF0LnByb3RvdHlwZSwiaWdub3JlWU91dGxpZXJzIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLGZBdC5wcm90b3R5cGUsInRvb2x0aXBTb3J0aW5nTWV0aG9kIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLGZBdC5wcm90b3R5cGUsInRvb2x0aXBQb3NpdGlvbiIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxmQXQucHJvdG90eXBlLCJfY2hhcnQiLHZvaWQgMCksdChbbyh7dHlwZTpBcnJheX0pLGUoImRlc2lnbjp0eXBlIixBcnJheSldLGZBdC5wcm90b3R5cGUsIl92aXNpYmxlU2VyaWVzQ2FjaGUiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sZkF0LnByb3RvdHlwZSwiX3Nlcmllc0RhdGFDYWNoZSIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxmQXQucHJvdG90eXBlLCJfc2VyaWVzTWV0YWRhdGFDYWNoZSIsdm9pZCAwKSx0KFtvKHt0eXBlOk51bWJlcn0pLGUoImRlc2lnbjp0eXBlIixOdW1iZXIpXSxmQXQucHJvdG90eXBlLCJfbWFrZUNoYXJ0QXN5bmNDYWxsYmFja0lkIix2b2lkIDApLHQoW2EoInhDb21wb25lbnRzQ3JlYXRpb25NZXRob2QiLCJ4VHlwZSIsInlWYWx1ZUFjY2Vzc29yIiwieVNjYWxlVHlwZSIsImlzQXR0YWNoZWQiKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLGZBdC5wcm90b3R5cGUsIl9tYWtlQ2hhcnQiLG51bGwpLHQoW2EoIl9jaGFydCIsIl92aXNpYmxlU2VyaWVzQ2FjaGUiKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLGZBdC5wcm90b3R5cGUsIl9yZWxvYWRGcm9tQ2FjaGUiLG51bGwpLHQoW2EoInNtb290aGluZ0VuYWJsZWQiLCJzbW9vdGhpbmdXZWlnaHQiLCJfY2hhcnQiKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLGZBdC5wcm90b3R5cGUsIl9zbW9vdGhpbmdDaGFuZ2VkIixudWxsKSx0KFthKCJpZ25vcmVZT3V0bGllcnMiLCJfY2hhcnQiKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLGZBdC5wcm90b3R5cGUsIl9vdXRsaWVyc0NoYW5nZWQiLG51bGwpLHQoW2EoImNvbG9yU2NhbGUiKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLGZBdC5wcm90b3R5cGUsIl9jb2xvclNjYWxlQ2hhbmdlZCIsbnVsbCksdChbYSgidG9vbHRpcENvbHVtbnMiKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLGZBdC5wcm90b3R5cGUsIl90b29sdGlwQ29sdW1uc0NoYW5nZWQiLG51bGwpLHQoW2EoInRvb2x0aXBTb3J0aW5nTWV0aG9kIiwiX2NoYXJ0IiksZSgiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pLGUoImRlc2lnbjpyZXR1cm50eXBlIix2b2lkIDApXSxmQXQucHJvdG90eXBlLCJfdG9vbHRpcFNvcnRpbmdNZXRob2RDaGFuZ2VkIixudWxsKSxmQXQ9dChbaSgidnotbGluZS1jaGFydDIiKV0sZkF0KTtsZXQgbUF0PWNsYXNzIGV4dGVuZHMgd2V7fTttQXQudGVtcGxhdGU9eGVgCiAgICA8ZGl2IGNsYXNzPSJjb250ZW50Ij4KICAgICAgPHRhYmxlPgogICAgICAgIDx0aGVhZD48L3RoZWFkPgogICAgICAgIDx0Ym9keT48L3Rib2R5PgogICAgICA8L3RhYmxlPgogICAgPC9kaXY+CiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgfQoKICAgICAgLmNvbnRlbnQgewogICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC44KTsKICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICAgICAgY29sb3I6ICNmZmY7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgfQoKICAgICAgdGFibGUgewogICAgICAgIGZvbnQtc2l6ZTogMTNweDsKICAgICAgICBsaW5lLWhlaWdodDogMS40ZW07CiAgICAgICAgbWFyZ2luLXRvcDogMTBweDsKICAgICAgICBwYWRkaW5nOiA4cHg7CiAgICAgIH0KCiAgICAgIHRoZWFkIHsKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgIH0KCiAgICAgIHRib2R5IHsKICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgICAgbGluZS1oZWlnaHQ6IDIxcHg7CiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgICAgfQoKICAgICAgdGQgewogICAgICAgIHBhZGRpbmc6IDAgNXB4OwogICAgICB9CgogICAgICAuc3dhdGNoIHsKICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgaGVpZ2h0OiAxOHB4OwogICAgICAgIHdpZHRoOiAxOHB4OwogICAgICB9CgogICAgICAuY2xvc2VzdCAuc3dhdGNoIHsKICAgICAgICBib3gtc2hhZG93OiBpbnNldCAwIDAgMCAycHggI2ZmZjsKICAgICAgfQoKICAgICAgdGggewogICAgICAgIHBhZGRpbmc6IDAgNXB4OwogICAgICAgIHRleHQtYWxpZ246IGxlZnQ7CiAgICAgIH0KCiAgICAgIC5kaXN0YW50IHRkOm5vdCguc3dhdGNoKSB7CiAgICAgICAgb3BhY2l0eTogMC44OwogICAgICB9CgogICAgICAuZ2hvc3QgewogICAgICAgIG9wYWNpdHk6IDAuMjsKICAgICAgICBzdHJva2Utd2lkdGg6IDFweDsKICAgICAgfQogICAgPC9zdHlsZT4KICBgLG1BdD10KFtpKCJ2ei1saW5lLWNoYXJ0LXRvb2x0aXAiKV0sbUF0KTtjb25zdCBnQXQ9W107Y29uc3QgX0F0PUNlLmV4cG9ydHMudGhyb3R0bGUoKGZ1bmN0aW9uIHQoKXtpZigwPT1nQXQubGVuZ3RoKXJldHVybjtjb25zdCBlPWdBdC5zaGlmdCgpO2UmJmUuYWN0aXZlJiYoZS5yZWRyYXcoKSxlLl9tYXliZVJlbmRlcmVkSW5CYWRTdGF0ZT0hMSksd2luZG93LmNhbmNlbEFuaW1hdGlvbkZyYW1lKDApLHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUodCl9KSwxMDApO2xldCB5QXQ9Y2xhc3MgZXh0ZW5kcyhiQ3QoY3Iod2UpKSl7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMuX3JlZHJhd1JhZj1udWxsLHRoaXMuYWN0aXZlPSExLHRoaXMubG9nU2NhbGVBY3RpdmU9ITEsdGhpcy5jb2xvclNjYWxlPXtzY2FsZTpfT30sdGhpcy5fcmVzZXREb21haW5Pbk5leHRMb2FkPSEwLHRoaXMuX21heWJlUmVuZGVyZWRJbkJhZFN0YXRlPSExfW9uTG9hZEZpbmlzaCgpe3RoaXMuY29tbWl0Q2hhbmdlcygpLHRoaXMuZGF0YVRvTG9hZC5sZW5ndGg+MCYmdGhpcy5fcmVzZXREb21haW5Pbk5leHRMb2FkJiYodGhpcy5fcmVzZXREb21haW5Pbk5leHRMb2FkPSExLHRoaXMuZ2V0Q2hhcnQoKS5yZXNldERvbWFpbigpKSx0aGlzLnJlZHJhdygpfWRpc2Nvbm5lY3RlZENhbGxiYWNrKCl7c3VwZXIuZGlzY29ubmVjdGVkQ2FsbGJhY2soKSxudWxsIT09dGhpcy5fcmVkcmF3UmFmJiZjYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLl9yZWRyYXdSYWYpfWV4cG9ydEFzU3ZnU3RyaW5nKCl7cmV0dXJuIHRoaXMuZ2V0Q2hhcnQoKS5nZXRFeHBvcnRlcigpLmV4cG9ydEFzU3RyaW5nKCl9Z2V0Q2hhcnQoKXtyZXR1cm4gdGhpcy4kLmNoYXJ0fXJlc2V0RG9tYWluKCl7dGhpcy5nZXRDaGFydCgpLnJlc2V0RG9tYWluKCl9c2V0U2VyaWVzRGF0YSh0LGUpe3RoaXMuZ2V0Q2hhcnQoKS5zZXRTZXJpZXNEYXRhKHQsZSl9c2V0U2VyaWVzTWV0YWRhdGEodCxlKXt0aGlzLmdldENoYXJ0KCkuc2V0U2VyaWVzTWV0YWRhdGEodCxlKX1jb21taXRDaGFuZ2VzKCl7dGhpcy5nZXRDaGFydCgpLmNvbW1pdENoYW5nZXMoKX1yZWRyYXcoKXtudWxsIT09dGhpcy5fcmVkcmF3UmFmJiZjYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLl9yZWRyYXdSYWYpLHRoaXMuX3JlZHJhd1JhZj13aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgoKT0+e3RoaXMuYWN0aXZlP3RoaXMuZ2V0Q2hhcnQoKS5yZWRyYXcoKTp0aGlzLl9tYXliZVJlbmRlcmVkSW5CYWRTdGF0ZT0hMH0pKX1fbG9hZEtleUNoYW5nZWQoKXt0aGlzLnJlc2V0KCksdGhpcy5fcmVzZXREb21haW5Pbk5leHRMb2FkPSEwfV9kYXRhU2VyaWVzQ2hhbmdlZCgpe3RoaXMuZ2V0Q2hhcnQoKS5zZXRWaXNpYmxlU2VyaWVzKHRoaXMuZGF0YVNlcmllcyl9X2xvZ1NjYWxlQ2hhbmdlZCh0KXt0aGlzLmdldENoYXJ0KCkueVNjYWxlVHlwZT10P2FBdC5MT0c6YUF0LkxJTkVBUix0aGlzLnJlZHJhdygpfV9maXhCYWRTdGF0ZVdoZW5BY3RpdmUoKXt0aGlzLmFjdGl2ZSYmdGhpcy5fbWF5YmVSZW5kZXJlZEluQmFkU3RhdGUmJihnQXQucHVzaCh0aGlzKSxfQXQoKSl9X29uQ2hhcnRBdHRhY2hlZCgpe3RoaXMuYWN0aXZlfHwodGhpcy5fbWF5YmVSZW5kZXJlZEluQmFkU3RhdGU9ITApfX07eUF0LnRlbXBsYXRlPXhlYAogICAgPGRpdiBpZD0iY2hhcnQtYW5kLXNwaW5uZXItY29udGFpbmVyIj4KICAgICAgPHZ6LWxpbmUtY2hhcnQyCiAgICAgICAgaWQ9ImNoYXJ0IgogICAgICAgIGRhdGEtbG9hZGluZyQ9IltbZGF0YUxvYWRpbmddXSIKICAgICAgICBkYXRhLWxvYWRlZC1vbmNlJD0iW1tkYXRhTG9hZGVkQXRMZWFzdE9uY2VdXSIKICAgICAgICBjb2xvci1zY2FsZT0iW1tjb2xvclNjYWxlXV0iCiAgICAgICAgZGVmYXVsdC14LXJhbmdlPSJbW2RlZmF1bHRYUmFuZ2VdXSIKICAgICAgICBkZWZhdWx0LXktcmFuZ2U9IltbZGVmYXVsdFlSYW5nZV1dIgogICAgICAgIGZpbGwtYXJlYT0iW1tmaWxsQXJlYV1dIgogICAgICAgIGlnbm9yZS15LW91dGxpZXJzPSJbW2lnbm9yZVlPdXRsaWVyc11dIgogICAgICAgIG9uLWNoYXJ0LWF0dGFjaGVkPSJfb25DaGFydEF0dGFjaGVkIgogICAgICAgIHNtb290aGluZy1lbmFibGVkPSJbW3Ntb290aGluZ0VuYWJsZWRdXSIKICAgICAgICBzbW9vdGhpbmctd2VpZ2h0PSJbW3Ntb290aGluZ1dlaWdodF1dIgogICAgICAgIHN5bWJvbC1mdW5jdGlvbj0iW1tzeW1ib2xGdW5jdGlvbl1dIgogICAgICAgIHRvb2x0aXAtY29sdW1ucz0iW1t0b29sdGlwQ29sdW1uc11dIgogICAgICAgIHRvb2x0aXAtcG9zaXRpb249IltbdG9vbHRpcFBvc2l0aW9uXV0iCiAgICAgICAgdG9vbHRpcC1zb3J0aW5nLW1ldGhvZD0iW1t0b29sdGlwU29ydGluZ01ldGhvZF1dIgogICAgICAgIHgtY29tcG9uZW50cy1jcmVhdGlvbi1tZXRob2Q9IltbeENvbXBvbmVudHNDcmVhdGlvbk1ldGhvZF1dIgogICAgICAgIHgtdHlwZT0iW1t4VHlwZV1dIgogICAgICAgIHktdmFsdWUtYWNjZXNzb3I9IltbeVZhbHVlQWNjZXNzb3JdXSIKICAgICAgPjwvdnotbGluZS1jaGFydDI+CiAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tkYXRhTG9hZGluZ11dIj4KICAgICAgICA8ZGl2IGlkPSJsb2FkaW5nLXNwaW5uZXItY29udGFpbmVyIj4KICAgICAgICAgIDxwYXBlci1zcGlubmVyLWxpdGUgYWN0aXZlPSIiPjwvcGFwZXItc3Bpbm5lci1saXRlPgogICAgICAgIDwvZGl2PgogICAgICA8L3RlbXBsYXRlPgogICAgPC9kaXY+CiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICB9CgogICAgICA6aG9zdChbX21heWJlLXJlbmRlcmVkLWluLWJhZC1zdGF0ZV0pIHZ6LWxpbmUtY2hhcnQgewogICAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjsKICAgICAgfQoKICAgICAgI2NoYXJ0LWFuZC1zcGlubmVyLWNvbnRhaW5lciB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWdyb3c6IDE7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICB9CgogICAgICAjbG9hZGluZy1zcGlubmVyLWNvbnRhaW5lciB7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBib3R0b206IDA7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgIGxlZnQ6IDA7CiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIHJpZ2h0OiAwOwogICAgICAgIHRvcDogMDsKICAgICAgfQoKICAgICAgdnotbGluZS1jaGFydDIgewogICAgICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAgICAgLW1vei11c2VyLXNlbGVjdDogbm9uZTsKICAgICAgfQoKICAgICAgdnotbGluZS1jaGFydDJbZGF0YS1sb2FkaW5nXSB7CiAgICAgICAgb3BhY2l0eTogMC4zOwogICAgICB9CiAgICA8L3N0eWxlPgogIGAsdChbbyh7dHlwZTpCb29sZWFuLG9ic2VydmVyOiJfZml4QmFkU3RhdGVXaGVuQWN0aXZlIn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0seUF0LnByb3RvdHlwZSwiYWN0aXZlIix2b2lkIDApLHQoW28oe3R5cGU6QXJyYXl9KSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpXSx5QXQucHJvdG90eXBlLCJkYXRhU2VyaWVzIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLGJyKV0seUF0LnByb3RvdHlwZSwicmVxdWVzdE1hbmFnZXIiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFuLG9ic2VydmVyOiJfbG9nU2NhbGVDaGFuZ2VkIn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0seUF0LnByb3RvdHlwZSwibG9nU2NhbGVBY3RpdmUiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0seUF0LnByb3RvdHlwZSwieENvbXBvbmVudHNDcmVhdGlvbk1ldGhvZCIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSx5QXQucHJvdG90eXBlLCJ4VHlwZSIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbildLHlBdC5wcm90b3R5cGUsInlWYWx1ZUFjY2Vzc29yIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLHlBdC5wcm90b3R5cGUsImZpbGxBcmVhIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0seUF0LnByb3RvdHlwZSwic21vb3RoaW5nRW5hYmxlZCIsdm9pZCAwKSx0KFtvKHt0eXBlOk51bWJlcn0pLGUoImRlc2lnbjp0eXBlIixOdW1iZXIpXSx5QXQucHJvdG90eXBlLCJzbW9vdGhpbmdXZWlnaHQiLHZvaWQgMCksdChbbyh7dHlwZTpBcnJheX0pLGUoImRlc2lnbjp0eXBlIixBcnJheSldLHlBdC5wcm90b3R5cGUsInRvb2x0aXBDb2x1bW5zIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLHlBdC5wcm90b3R5cGUsInRvb2x0aXBTb3J0aW5nTWV0aG9kIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLHlBdC5wcm90b3R5cGUsInRvb2x0aXBQb3NpdGlvbiIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLHlBdC5wcm90b3R5cGUsImlnbm9yZVlPdXRsaWVycyIsdm9pZCAwKSx0KFtvKHt0eXBlOkFycmF5fSksZSgiZGVzaWduOnR5cGUiLEFycmF5KV0seUF0LnByb3RvdHlwZSwiZGVmYXVsdFhSYW5nZSIsdm9pZCAwKSx0KFtvKHt0eXBlOkFycmF5fSksZSgiZGVzaWduOnR5cGUiLEFycmF5KV0seUF0LnByb3RvdHlwZSwiZGVmYXVsdFlSYW5nZSIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbildLHlBdC5wcm90b3R5cGUsInN5bWJvbEZ1bmN0aW9uIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLHlBdC5wcm90b3R5cGUsImNvbG9yU2NhbGUiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSx5QXQucHJvdG90eXBlLCJfcmVzZXREb21haW5Pbk5leHRMb2FkIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbixyZWZsZWN0VG9BdHRyaWJ1dGU6ITB9KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLHlBdC5wcm90b3R5cGUsIl9tYXliZVJlbmRlcmVkSW5CYWRTdGF0ZSIsdm9pZCAwKSx0KFthKCJsb2FkS2V5IiksZSgiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pLGUoImRlc2lnbjpyZXR1cm50eXBlIix2b2lkIDApXSx5QXQucHJvdG90eXBlLCJfbG9hZEtleUNoYW5nZWQiLG51bGwpLHQoW2EoImRhdGFTZXJpZXMuKiIpLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKSxlKCJkZXNpZ246cmV0dXJudHlwZSIsdm9pZCAwKV0seUF0LnByb3RvdHlwZSwiX2RhdGFTZXJpZXNDaGFuZ2VkIixudWxsKSx5QXQ9dChbaSgidGYtbGluZS1jaGFydC1kYXRhLWxvYWRlciIpXSx5QXQpLG1sKHttb2R1bGVOYW1lOiJ0Zi1jdXN0b20tc2NhbGFyLWNhcmQtc3R5bGUiLHN0eWxlQ29udGVudDoiXG4gICAgOmhvc3Qge1xuICAgICAgbWFyZ2luOiA1cHggMTBweDtcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgIHdpZHRoOiAzMzBweDtcbiAgICAgIHZlcnRpY2FsLWFsaWduOiB0ZXh0LXRvcDtcbiAgICB9XG5cbiAgICA6aG9zdChbX2V4cGFuZGVkXSkge1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgfVxuXG4gICAgOmhvc3QoW19leHBhbmRlZF0pICN0Zi1saW5lLWNoYXJ0LWRhdGEtbG9hZGVyLWNvbnRhaW5lciB7XG4gICAgICBoZWlnaHQ6IDQwMHB4O1xuICAgIH1cblxuICAgIGgxIHtcbiAgICAgIGZvbnQtc2l6ZTogMTlweDtcbiAgICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gICAgfVxuXG4gICAgI3RmLWxpbmUtY2hhcnQtZGF0YS1sb2FkZXItY29udGFpbmVyIHtcbiAgICAgIGhlaWdodDogMjAwcHg7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICB9XG5cbiAgICAjYnV0dG9ucyB7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICB9XG5cbiAgICBwYXBlci1pY29uLWJ1dHRvbiB7XG4gICAgICBjb2xvcjogIzIxOTZmMztcbiAgICAgIGJvcmRlci1yYWRpdXM6IDEwMCU7XG4gICAgICB3aWR0aDogMzJweDtcbiAgICAgIGhlaWdodDogMzJweDtcbiAgICAgIHBhZGRpbmc6IDRweDtcbiAgICB9XG5cbiAgICBwYXBlci1pY29uLWJ1dHRvbltzZWxlY3RlZF0ge1xuICAgICAgYmFja2dyb3VuZDogdmFyKC0tdGItdWktbGlnaHQtYWNjZW50KTtcbiAgICB9XG5cbiAgICAuZG93bmxvYWQtbGlua3Mge1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGhlaWdodDogMzJweDtcbiAgICB9XG5cbiAgICAuZG93bmxvYWQtbGlua3MgYSB7XG4gICAgICBmb250LXNpemU6IDEwcHg7XG4gICAgICBhbGlnbi1zZWxmOiBjZW50ZXI7XG4gICAgICBtYXJnaW46IDJweDtcbiAgICB9XG5cbiAgICAuZG93bmxvYWQtbGlua3MgcGFwZXItZHJvcGRvd24tbWVudSB7XG4gICAgICB3aWR0aDogMTAwcHg7XG4gICAgICAtLXBhcGVyLWlucHV0LWNvbnRhaW5lci1sYWJlbDoge1xuICAgICAgICBmb250LXNpemU6IDEwcHg7XG4gICAgICB9XG4gICAgICAtLXBhcGVyLWlucHV0LWNvbnRhaW5lci1pbnB1dDoge1xuICAgICAgICBmb250LXNpemU6IDEwcHg7XG4gICAgICB9XG4gICAgfVxuICAifSk7Y2xhc3MgdkF0e2NvbnN0cnVjdG9yKHQsZSxuLGkscil7dGhpcy5ydW49dCx0aGlzLnRhZz1lLHRoaXMubmFtZT1uLHRoaXMuc2NhbGFyRGF0YT1pLHRoaXMuc3ltYm9sPXJ9Z2V0TmFtZSgpe3JldHVybiB0aGlzLm5hbWV9c2V0RGF0YSh0KXt0aGlzLnNjYWxhckRhdGE9dH1nZXREYXRhKCl7cmV0dXJuIHRoaXMuc2NhbGFyRGF0YX1nZXRSdW4oKXtyZXR1cm4gdGhpcy5ydW59Z2V0VGFnKCl7cmV0dXJuIHRoaXMudGFnfWdldFN5bWJvbCgpe3JldHVybiB0aGlzLnN5bWJvbH19ZnVuY3Rpb24gYkF0KHQsZSl7cmV0dXJuYCR7ZX0gKCR7dH0pYH1jbGFzcyB4QXR7Y29uc3RydWN0b3IodCl7dGhpcy5ydW5CYXNlZENvbG9yU2NhbGU9dH1zY2FsZSh0KXtyZXR1cm4gdGhpcy5ydW5CYXNlZENvbG9yU2NhbGUuc2NhbGUodGhpcy5wYXJzZVJ1bk5hbWUodCkpfXBhcnNlUnVuTmFtZSh0KXtjb25zdCBlPXQubWF0Y2goL1woKC4qKVwpJC8pO3JldHVybiBlP2VbMV06IiJ9fWxldCB3QXQ9Y2xhc3MgZXh0ZW5kcyhjcih3ZSkpe2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLmFjdGl2ZT0hMCx0aGlzLl9jb2xvclNjYWxlPW5ldyB4QXQoe3NjYWxlOl9PfSksdGhpcy5fbmFtZVRvRGF0YVNlcmllcz17fSx0aGlzLl9leHBhbmRlZD0hMSx0aGlzLl9yZXF1ZXN0RGF0YT0odCxlLG4pPT57Y29uc3QgaT1FcigpLnBsdWdpblJvdXRlKCJjdXN0b21fc2NhbGFycyIsIi9zY2FsYXJzIik7UHJvbWlzZS5hbGwodC5tYXAoKHQ9Pntjb25zdCBuPVBPKGkse3RhZzp0aGlzLl90YWdGaWx0ZXIscnVuOnR9KTtyZXR1cm4gdGhpcy5yZXF1ZXN0TWFuYWdlci5yZXF1ZXN0KG4pLnRoZW4oKG49PntlKHtpdGVtOnQsZGF0YTpufSl9KSl9KSkpLmZpbmFsbHkoKCgpPT57bigpfSkpfSx0aGlzLl9ydW5Ub05leHRBdmFpbGFibGVTeW1ib2xJbmRleD17fSx0aGlzLl9tYXRjaGVzTGlzdE9wZW5lZD0hMSx0aGlzLl9maWxsQXJlYT17bG93ZXJBY2Nlc3Nvcjp0PT50Lmxvd2VyLGhpZ2hlckFjY2Vzc29yOnQ9PnQudXBwZXJ9LHRoaXMuX3Rvb2x0aXBDb2x1bW5zPSgoKT0+e2NvbnN0IHQ9U0N0KDQpLGU9ZT0+aXNOYU4oZSk/Ik5hTiI6dChlKTtyZXR1cm5be3RpdGxlOiJOYW1lIixldmFsdWF0ZTp0PT50LmRhdGFzZXQubWV0YWRhdGEoKS5uYW1lfSx7dGl0bGU6IlZhbHVlIixldmFsdWF0ZTp0PT5lKHQuZGF0dW0uc2NhbGFyKX0se3RpdGxlOiJMb3dlciBNYXJnaW4iLGV2YWx1YXRlOnQ9PmUodC5kYXR1bS5sb3dlcil9LHt0aXRsZToiVXBwZXIgTWFyZ2luIixldmFsdWF0ZTp0PT5lKHQuZGF0dW0udXBwZXIpfSx7dGl0bGU6IlN0ZXAiLGV2YWx1YXRlOnQ9Pk1DdCh0LmRhdHVtLnN0ZXApfSx7dGl0bGU6IlRpbWUiLGV2YWx1YXRlOnQ9PlRDdCh0LmRhdHVtLndhbGxfdGltZSl9LHt0aXRsZToiUmVsYXRpdmUiLGV2YWx1YXRlOnQ9PkFDdChDQ3QodC5kYXR1bSwwLHQuZGF0YXNldCkpfV19KSgpLHRoaXMuX21pc3NpbmdUYWdzPVtdLHRoaXMuX21pc3NpbmdUYWdzQ29sbGFwc2libGVPcGVuZWQ9ITF9cmVsb2FkKCl7dGhpcy4kLmxvYWRlci5yZWxvYWQoKX1yZWRyYXcoKXt0aGlzLiQubG9hZGVyLnJlZHJhdygpfV90b2dnbGVFeHBhbmRlZCh0KXt0aGlzLnNldCgiX2V4cGFuZGVkIiwhdGhpcy5fZXhwYW5kZWQpLHRoaXMucmVkcmF3KCl9X3RvZ2dsZUxvZ1NjYWxlKCl7dGhpcy5zZXQoIl9sb2dTY2FsZUFjdGl2ZSIsIXRoaXMuX2xvZ1NjYWxlQWN0aXZlKX1fcmVzZXREb21haW4oKXtjb25zdCB0PXRoaXMuJC5sb2FkZXI7dCYmdC5yZXNldERvbWFpbigpfV9jc3ZVcmwodCxlKXtpZighZSlyZXR1cm4iIjtyZXR1cm4gUE8odGhpcy5fZG93bmxvYWREYXRhVXJsKHQsZSkse2Zvcm1hdDoiY3N2In0pfV9qc29uVXJsKHQsZSl7aWYoIWUpcmV0dXJuIiI7cmV0dXJuIFBPKHRoaXMuX2Rvd25sb2FkRGF0YVVybCh0LGUpLHtmb3JtYXQ6Impzb24ifSl9X2Rvd25sb2FkRGF0YVVybCh0LGUpe2NvbnN0IG49dFtlXSxpPXt0YWc6bi5nZXRUYWcoKSxydW46bi5nZXRSdW4oKX07cmV0dXJuIFBPKEVyKCkucGx1Z2luUm91dGUoImN1c3RvbV9zY2FsYXJzIiwiL2Rvd25sb2FkX2RhdGEiKSxpKX1fY3JlYXRlUHJvY2Vzc0RhdGFGdW5jdGlvbih0KXtyZXR1cm4oZSxuLGkpPT57aWYoIWkucmVnZXhfdmFsaWQpcmV0dXJuIHZvaWQgdGhpcy5zZXQoIl90YWdGaWx0ZXJJbnZhbGlkIiwhMCk7Y29uc3Qgcj1DZS5leHBvcnRzLmNsb25lKHRoaXMuX25hbWVUb0RhdGFTZXJpZXMpLG89W107Q2UuZXhwb3J0cy5mb3JFYWNoKHQsKHQ9PntsZXQgZT0hMTtjb25zdCBhPWkudGFnX3RvX2V2ZW50c1t0LnZhbHVlXSxzPWkudGFnX3RvX2V2ZW50c1t0Lmxvd2VyXSxsPWkudGFnX3RvX2V2ZW50c1t0LnVwcGVyXTtpZihDZS5leHBvcnRzLmlzVW5kZWZpbmVkKGEpJiYoby5wdXNoKHQudmFsdWUpLGU9ITApLENlLmV4cG9ydHMuaXNVbmRlZmluZWQocykmJihvLnB1c2godC5sb3dlciksZT0hMCksQ2UuZXhwb3J0cy5pc1VuZGVmaW5lZChsKSYmKG8ucHVzaCh0LnVwcGVyKSxlPSEwKSxlKXJldHVybjtjb25zdCBjPXQ9PnRbMV0sdT10aGlzLl9maW5kU3RlcE1pc21hdGNoKHQsYS5tYXAoYykscy5tYXAoYyksbC5tYXAoYykpO2lmKHUpcmV0dXJuIHZvaWQgdGhpcy5zZXQoIl9zdGVwc01pc21hdGNoIix1KTtjb25zdCBoPXQ9PnRbMl0sZD1hLm1hcCgoKHQsZSk9Pih7d2FsbF90aW1lOm5ldyBEYXRlKDFlMyp0WzBdKSxzdGVwOmModCksc2NhbGFyOmgodCksbG93ZXI6aChzW2VdKSx1cHBlcjpoKGxbZV0pfSkpKSxwPWJBdChuLHQudmFsdWUpLGY9cltwXTtpZihmKWYuc2V0RGF0YShkKTtlbHNle2NvbnN0IGU9dGhpcy5fY3JlYXRlTmV3RGF0YVNlcmllcyhuLHQudmFsdWUscCxkKTtyW3BdPWV9fSkpLHRoaXMuc2V0KCJfbmFtZVRvRGF0YVNlcmllcyIscik7Y29uc3QgYT1DZS5leHBvcnRzLmZpbmRJbmRleCh0aGlzLl9taXNzaW5nVGFncywodD0+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+PC9zdHlsZT4KICAgIDxzdHlsZT4KICAgICAgLmVycm9yLWNvbnRlbnQgewogICAgICAgIGJhY2tncm91bmQ6ICNmMDA7CiAgICAgICAgYm9yZGVyLXJhZGl1czogNXB4OwogICAgICAgIGNvbG9yOiAjZmZmOwogICAgICAgIG1hcmdpbjogMTBweCAwIDAgMDsKICAgICAgICBwYWRkaW5nOiAxMHB4OwogICAgICB9CgogICAgICAuZXJyb3ItaWNvbiB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgZmlsbDogI2ZmZjsKICAgICAgICBtYXJnaW46IDAgYXV0byA1cHggYXV0bzsKICAgICAgfQoKICAgICAgLmludmFsaWQtcmVnZXggewogICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkOwogICAgICB9CgogICAgICAuZXJyb3ItY29udGVudCB1bCB7CiAgICAgICAgbWFyZ2luOiAxcHggMCAwIDA7CiAgICAgICAgcGFkZGluZzogMCAwIDAgMTlweDsKICAgICAgfQoKICAgICAgLnRhZy1uYW1lIHsKICAgICAgICBmb250LXdlaWdodDogYm9sZDsKICAgICAgfQoKICAgICAgLmNvbGxhcHNpYmxlLWxpc3QtdGl0bGUgewogICAgICAgIG1hcmdpbjogMTBweCAwIDVweCAwOwogICAgICB9CgogICAgICAuY29sbGFwc2libGUtdGl0bGUtdGV4dCB7CiAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKICAgICAgfQoKICAgICAgI21hdGNoZXMtbGlzdCB7CiAgICAgICAgbWF4LWhlaWdodDogMjAwcHg7CiAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKICAgICAgfQoKICAgICAgLm1hdGNoLWxpc3QtZW50cnkgewogICAgICAgIG1hcmdpbjogMCAwIDVweCAwOwogICAgICB9CgogICAgICAubWF0Y2gtZW50cnktc3ltYm9sIHsKICAgICAgICBmb250LWZhbWlseTogYXJpYWwsIHNhbnMtc2VyaWY7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICAgIHdpZHRoOiAxMHB4OwogICAgICB9CgogICAgICAubWlzc2luZy10YWdzLWZvci1ydW4tY29udGFpbmVyIHsKICAgICAgICBtYXJnaW46IDhweCAwIDAgMDsKICAgICAgfQogICAgPC9zdHlsZT4KICBgLHQoW28oe3R5cGU6QXJyYXl9KSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpXSx3QXQucHJvdG90eXBlLCJydW5zIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLHdBdC5wcm90b3R5cGUsInhUeXBlIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sd0F0LnByb3RvdHlwZSwiYWN0aXZlIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLHdBdC5wcm90b3R5cGUsInRpdGxlIix2b2lkIDApLHQoW28oe3R5cGU6QXJyYXl9KSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpXSx3QXQucHJvdG90eXBlLCJtYXJnaW5DaGFydFNlcmllcyIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLHdBdC5wcm90b3R5cGUsImlnbm9yZVlPdXRsaWVycyIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixicildLHdBdC5wcm90b3R5cGUsInJlcXVlc3RNYW5hZ2VyIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sd0F0LnByb3RvdHlwZSwic2hvd0Rvd25sb2FkTGlua3MiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sd0F0LnByb3RvdHlwZSwidGFnTWV0YWRhdGEiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sd0F0LnByb3RvdHlwZSwidG9vbHRpcFNvcnRpbmdNZXRob2QiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sd0F0LnByb3RvdHlwZSwiX2NvbG9yU2NhbGUiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSx3QXQucHJvdG90eXBlLCJfdGFnRmlsdGVySW52YWxpZCIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSx3QXQucHJvdG90eXBlLCJfbmFtZVRvRGF0YVNlcmllcyIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW4scmVmbGVjdFRvQXR0cmlidXRlOiEwfSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSx3QXQucHJvdG90eXBlLCJfZXhwYW5kZWQiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSx3QXQucHJvdG90eXBlLCJfbG9nU2NhbGVBY3RpdmUiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pXSx3QXQucHJvdG90eXBlLCJfcmVxdWVzdERhdGEiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sd0F0LnByb3RvdHlwZSwiX3J1blRvTmV4dEF2YWlsYWJsZVN5bWJvbEluZGV4Iix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sd0F0LnByb3RvdHlwZSwiX21hdGNoZXNMaXN0T3BlbmVkIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLHdBdC5wcm90b3R5cGUsIl9maWxsQXJlYSIsdm9pZCAwKSx0KFtvKHt0eXBlOkFycmF5fSksZSgiZGVzaWduOnR5cGUiLEFycmF5KV0sd0F0LnByb3RvdHlwZSwiX3Rvb2x0aXBDb2x1bW5zIix2b2lkIDApLHQoW28oe3R5cGU6QXJyYXl9KSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpXSx3QXQucHJvdG90eXBlLCJfbWlzc2luZ1RhZ3MiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSx3QXQucHJvdG90eXBlLCJfbWlzc2luZ1RhZ3NDb2xsYXBzaWJsZU9wZW5lZCIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSx3QXQucHJvdG90eXBlLCJfc3RlcHNNaXNtYXRjaCIsdm9pZCAwKSx0KFthKCJfbmFtZVRvRGF0YVNlcmllcyIpLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKSxlKCJkZXNpZ246cmV0dXJudHlwZSIsdm9pZCAwKV0sd0F0LnByb3RvdHlwZSwiX3VwZGF0ZUNoYXJ0IixudWxsKSx0KFtzKCJfbmFtZVRvRGF0YVNlcmllcyIsInJ1bnMiKSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSx3QXQucHJvdG90eXBlLCJfc2VyaWVzTmFtZXMiLG51bGwpLHQoW2EoIl90YWdGaWx0ZXIiKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLHdBdC5wcm90b3R5cGUsIl9yZWZyZXNoRGF0YVNlcmllcyIsbnVsbCksdChbcygibWFyZ2luQ2hhcnRTZXJpZXMiKSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSx3QXQucHJvdG90eXBlLCJfdGFnRmlsdGVyIixudWxsKSx0KFtzKCJ0aXRsZSIpLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSldLHdBdC5wcm90b3R5cGUsIl90aXRsZURpc3BsYXlTdHJpbmciLG51bGwpLHdBdD10KFtpKCJ0Zi1jdXN0b20tc2NhbGFyLW1hcmdpbi1jaGFydC1jYXJkIildLHdBdCk7dmFyIFNBdD1PYmplY3QuZnJlZXplKHtfX3Byb3RvX186bnVsbCxUWVBFUzpbXSxnZXRSdW5zTmFtZWQ6ZnVuY3Rpb24gTUF0KHQpe3JldHVybiBDZS5leHBvcnRzLmtleXModCkuc29ydCh1cil9LGdldFRhZ3M6ZnIsZmlsdGVyVGFnczpmdW5jdGlvbiBFQXQodCxlKXtsZXQgbj1bXTtyZXR1cm4gZS5mb3JFYWNoKChlPT5uPW4uY29uY2F0KHRbZV0pKSksQ2UuZXhwb3J0cy51bmlxKG4pLnNvcnQodXIpfSxMaXN0ZW5LZXk6QWwsQmFzZVN0b3JlOmtsLENhbmNlbGxlcjp4TyxFbnZpcm9ubWVudFN0b3JlOkxsLGVudmlyb25tZW50U3RvcmU6UGwsRXhwZXJpbWVudHNTdG9yZTpkTyxleHBlcmltZW50c1N0b3JlOnBPLFJlcXVlc3RDYW5jZWxsYXRpb25FcnJvcjptcixJbnZhbGlkUmVxdWVzdE9wdGlvbnNFcnJvcjpncixSZXF1ZXN0TmV0d29ya0Vycm9yOl9yLGdldCBIdHRwTWV0aG9kVHlwZSgpe3JldHVybiB5cn0sUmVxdWVzdE9wdGlvbnM6dnIsUmVxdWVzdE1hbmFnZXI6YnIsY3JlYXRlUm91dGVyOk1yLGdldFJvdXRlcjpFcixzZXRSb3V0ZXI6ZnVuY3Rpb24gVEF0KHQpe2lmKG51bGw9PXQpdGhyb3cgbmV3IEVycm9yKCJSb3V0ZXIgcmVxdWlyZWQsIGJ1dCBnb3Q6ICIrdCk7U3I9dH0sY3JlYXRlU2VhcmNoUGFyYW06Q3IsUnVuc1N0b3JlOk5sLHJ1bnNTdG9yZTpJbCxhZGRQYXJhbXM6UE99KTtsZXQgQ0F0PWNsYXNzIGV4dGVuZHMoY3Iod2UpKXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5hY3RpdmU9ITAsdGhpcy5fY29sb3JTY2FsZT1uZXcgeEF0KHtzY2FsZTpfT30pLHRoaXMuX25hbWVUb0RhdGFTZXJpZXM9e30sdGhpcy5fZXhwYW5kZWQ9ITEsdGhpcy5fcmVxdWVzdERhdGE9KHQsZSxuKT0+e2NvbnN0IGk9RXIoKS5wbHVnaW5Sb3V0ZSgiY3VzdG9tX3NjYWxhcnMiLCIvc2NhbGFycyIpO1Byb21pc2UuYWxsKHQubWFwKCh0PT57Y29uc3Qgbj1QTyhpLHt0YWc6dGhpcy5fdGFnRmlsdGVyLHJ1bjp0fSk7cmV0dXJuIHRoaXMucmVxdWVzdE1hbmFnZXIucmVxdWVzdChuKS50aGVuKChuPT57ZSh7aXRlbTp0LGRhdGE6bn0pfSkpfSkpKS5maW5hbGx5KCgoKT0+e24oKX0pKX0sdGhpcy5fcnVuVG9OZXh0QXZhaWxhYmxlU3ltYm9sSW5kZXg9e30sdGhpcy5fbWF0Y2hlc0xpc3RPcGVuZWQ9ITF9cmVsb2FkKCl7dGhpcy4kLmxvYWRlci5yZWxvYWQoKX1yZWRyYXcoKXt0aGlzLiQubG9hZGVyLnJlZHJhdygpfV90b2dnbGVFeHBhbmRlZCh0KXt0aGlzLnNldCgiX2V4cGFuZGVkIiwhdGhpcy5fZXhwYW5kZWQpLHRoaXMucmVkcmF3KCl9X3RvZ2dsZUxvZ1NjYWxlKCl7dGhpcy5zZXQoIl9sb2dTY2FsZUFjdGl2ZSIsIXRoaXMuX2xvZ1NjYWxlQWN0aXZlKX1fcmVzZXREb21haW4oKXtjb25zdCB0PXRoaXMuJC5sb2FkZXI7dCYmdC5yZXNldERvbWFpbigpfV9jc3ZVcmwodCxlKXtpZighZSlyZXR1cm4iIjtyZXR1cm4gUE8odGhpcy5fZG93bmxvYWREYXRhVXJsKHQsZSkse2Zvcm1hdDoiY3N2In0pfV9qc29uVXJsKHQsZSl7aWYoIWUpcmV0dXJuIiI7cmV0dXJuIFBPKHRoaXMuX2Rvd25sb2FkRGF0YVVybCh0LGUpLHtmb3JtYXQ6Impzb24ifSl9X2Rvd25sb2FkRGF0YVVybCh0LGUpe2NvbnN0IG49dFtlXSxpPXt0YWc6bi5nZXRUYWcoKSxydW46bi5nZXRSdW4oKX07cmV0dXJuIFBPKEVyKCkucGx1Z2luUm91dGUoImN1c3RvbV9zY2FsYXJzIiwiL2Rvd25sb2FkX2RhdGEiKSxpKX1fY3JlYXRlUHJvY2Vzc0RhdGFGdW5jdGlvbigpe3JldHVybih0LGUsbik9PntpZihuLnJlZ2V4X3ZhbGlkKXtjb25zdCB0PUNlLmV4cG9ydHMuY2xvbmUodGhpcy5fbmFtZVRvRGF0YVNlcmllcyk7Q2UuZXhwb3J0cy5mb3JPd24obi50YWdfdG9fZXZlbnRzLCgobixpKT0+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+CiAgICAgICN0b29sdGlwLXNvcnRpbmcgewogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgbWFyZ2luLXRvcDogMTVweDsKICAgICAgfQogICAgICAjdG9vbHRpcC1zb3J0aW5nIHBhcGVyLWRyb3Bkb3duLW1lbnUgewogICAgICAgIG1hcmdpbi1sZWZ0OiAxMHB4OwogICAgICAgIC0tcGFwZXItaW5wdXQtY29udGFpbmVyLWZvY3VzLWNvbG9yOiB2YXIoLS10Yi1vcmFuZ2Utc3Ryb25nKTsKICAgICAgICB3aWR0aDogMTA1cHg7CiAgICAgIH0KICAgICAgLmxpbmUtaXRlbSB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgcGFkZGluZy10b3A6IDVweDsKICAgICAgfQogICAgICAubm8tZGF0YS13YXJuaW5nIHsKICAgICAgICBtYXgtd2lkdGg6IDU0MHB4OwogICAgICAgIG1hcmdpbjogODBweCBhdXRvIDAgYXV0bzsKICAgICAgfQogICAgPC9zdHlsZT4KICBgLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLGJyKV0sQUF0LnByb3RvdHlwZSwiX3JlcXVlc3RNYW5hZ2VyIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLHhPKV0sQUF0LnByb3RvdHlwZSwiX2NhbmNlbGxlciIsdm9pZCAwKSx0KFtvKHt0eXBlOkFycmF5fSksZSgiZGVzaWduOnR5cGUiLEFycmF5KV0sQUF0LnByb3RvdHlwZSwiX3NlbGVjdGVkUnVucyIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW4sbm90aWZ5OiEwLG9ic2VydmVyOiJfc2hvd0Rvd25sb2FkTGlua3NPYnNlcnZlciJ9KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLEFBdC5wcm90b3R5cGUsIl9zaG93RG93bmxvYWRMaW5rcyIsdm9pZCAwKSx0KFtvKHt0eXBlOk51bWJlcixub3RpZnk6ITAsb2JzZXJ2ZXI6Il9zbW9vdGhpbmdXZWlnaHRPYnNlcnZlciJ9KSxlKCJkZXNpZ246dHlwZSIsTnVtYmVyKV0sQUF0LnByb3RvdHlwZSwiX3Ntb290aGluZ1dlaWdodCIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW4sb2JzZXJ2ZXI6Il9pZ25vcmVZT3V0bGllcnNPYnNlcnZlciJ9KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLEFBdC5wcm90b3R5cGUsIl9pZ25vcmVZT3V0bGllcnMiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sQUF0LnByb3RvdHlwZSwiX3hUeXBlIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLEFBdC5wcm90b3R5cGUsIl9sYXlvdXQiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxBQXQucHJvdG90eXBlLCJfZGF0YU5vdEZvdW5kIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLEFBdC5wcm90b3R5cGUsIl9vcGVuZWRDYXRlZ29yaWVzIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sQUF0LnByb3RvdHlwZSwiX2FjdGl2ZSIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLEFBdC5wcm90b3R5cGUsInJlbG9hZE9uUmVhZHkiLHZvaWQgMCksdChbcygiX3Ntb290aGluZ1dlaWdodCIpLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSxBQXQucHJvdG90eXBlLCJfc21vb3RoaW5nRW5hYmxlZCIsbnVsbCksdChbcygiX2xheW91dCIpLGUoImRlc2lnbjp0eXBlIixBcnJheSksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sQUF0LnByb3RvdHlwZSwiX2NhdGVnb3JpZXMiLG51bGwpLEFBdD10KFtpKCJ0Zi1jdXN0b20tc2NhbGFyLWRhc2hib2FyZCIpXSxBQXQpO2NsYXNzIGtBdHtjb25zdHJ1Y3Rvcih0LGUpe3RoaXMucnVuMmRhdGFzZXRzPXt9LHRoaXMuY29sb3JTY2FsZT1lLHRoaXMuYnVpbGRDaGFydCh0KX1nZXREYXRhc2V0KHQpe3JldHVybiB2b2lkIDA9PT10aGlzLnJ1bjJkYXRhc2V0c1t0XSYmKHRoaXMucnVuMmRhdGFzZXRzW3RdPW5ldyBOTy5EYXRhc2V0KFtdLHtydW46dH0pKSx0aGlzLnJ1bjJkYXRhc2V0c1t0XX1idWlsZENoYXJ0KHQpe3RoaXMub3V0ZXImJnRoaXMub3V0ZXIuZGVzdHJveSgpO2xldCBlPWtDdCh0KTt0aGlzLnhBY2Nlc3Nvcj1lLmFjY2Vzc29yLHRoaXMueFNjYWxlPWUuc2NhbGUsdGhpcy54QXhpcz1lLmF4aXMsdGhpcy54QXhpcy5tYXJnaW4oMCksdGhpcy54QXhpcy50aWNrTGFiZWxQYWRkaW5nKDMpLHRoaXMueVNjYWxlPW5ldyBOTy5TY2FsZXMuTGluZWFyLHRoaXMueUF4aXM9bmV3IE5PLkF4ZXMuTnVtZXJpYyh0aGlzLnlTY2FsZSwibGVmdCIpO2xldCBuPVNDdCgzKTt0aGlzLnlBeGlzLm1hcmdpbigwKS50aWNrTGFiZWxQYWRkaW5nKDUpLmZvcm1hdHRlcihuKSx0aGlzLnlBeGlzLnVzZXNUZXh0V2lkdGhBcHByb3hpbWF0aW9uKCEwKTtsZXQgaT10aGlzLmJ1aWxkUGxvdCh0aGlzLnhBY2Nlc3Nvcix0aGlzLnhTY2FsZSx0aGlzLnlTY2FsZSk7dGhpcy5ncmlkbGluZXM9bmV3IE5PLkNvbXBvbmVudHMuR3JpZGxpbmVzKHRoaXMueFNjYWxlLHRoaXMueVNjYWxlKSx0aGlzLmNlbnRlcj1uZXcgTk8uQ29tcG9uZW50cy5Hcm91cChbdGhpcy5ncmlkbGluZXMsaV0pLHRoaXMub3V0ZXI9bmV3IE5PLkNvbXBvbmVudHMuVGFibGUoW1t0aGlzLnlBeGlzLHRoaXMuY2VudGVyXSxbbnVsbCx0aGlzLnhBeGlzXV0pfWJ1aWxkUGxvdCh0LGUsbil7bGV0IGk9WzAsMjI4LDE1ODcsMzA4NSw1ZTMsNjkxNSw4NDEzLDk3NzIsMWU0XSxyPUNlLmV4cG9ydHMucmFuZ2UoaS5sZW5ndGgtMSkubWFwKCh0PT4oaVt0KzFdLWlbdF0pLzI1MDApKSxvPWkubWFwKCgodCxlKT0+dD0+dFtlXVsxXSkpLGE9b1s0XSxzPUNlLmV4cG9ydHMucmFuZ2Uoby5sZW5ndGgtMSkubWFwKChpPT57bGV0IGE9bmV3IE5PLlBsb3RzLkFyZWE7YS54KHQsZSk7bGV0IHM9aT40P29baV06b1tpKzFdO3JldHVybiBhLnkoaT40P29baSsxXTpvW2ldLG4pLGEueTAocyksYS5hdHRyKCJmaWxsIiwoKHQsZSxuKT0+dGhpcy5jb2xvclNjYWxlLnNjYWxlKG4ubWV0YWRhdGEoKS5ydW4pKSksYS5hdHRyKCJzdHJva2UiLCgodCxlLG4pPT50aGlzLmNvbG9yU2NhbGUuc2NhbGUobi5tZXRhZGF0YSgpLnJ1bikpKSxhLmF0dHIoInN0cm9rZS13ZWlnaHQiLCgodCxlLG4pPT4iMC41cHgiKSksYS5hdHRyKCJzdHJva2Utb3BhY2l0eSIsKCgpPT5yW2ldKSksYS5hdHRyKCJmaWxsLW9wYWNpdHkiLCgoKT0+cltpXSkpLGF9KSksbD1uZXcgTk8uUGxvdHMuTGluZTtyZXR1cm4gbC54KHQsZSksbC55KGEsbiksbC5hdHRyKCJzdHJva2UiLCgodCxlLG4pPT50aGlzLmNvbG9yU2NhbGUuc2NhbGUobi5ydW4pKSksdGhpcy5wbG90cz1zLG5ldyBOTy5Db21wb25lbnRzLkdyb3VwKHMpfXNldFZpc2libGVTZXJpZXModCl7dGhpcy5ydW5zPXQ7bGV0IGU9dC5tYXAoKHQ9PnRoaXMuZ2V0RGF0YXNldCh0KSkpO3RoaXMucGxvdHMuZm9yRWFjaCgodD0+dC5kYXRhc2V0cyhlKSkpfXNldFNlcmllc0RhdGEodCxlKXt0aGlzLmdldERhdGFzZXQodCkuZGF0YShlKX1yZW5kZXJUbyh0KXt0aGlzLnRhcmdldFNWRz10LHRoaXMub3V0ZXIucmVuZGVyVG8odCl9cmVkcmF3KCl7dGhpcy5vdXRlci5yZWRyYXcoKX1kZXN0cm95KCl7dGhpcy5vdXRlci5kZXN0cm95KCl9fWxldCBMQXQ9Y2xhc3MgZXh0ZW5kcyhjcih3ZSkpe2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLmNvbG9yU2NhbGU9KG5ldyBOTy5TY2FsZXMuQ29sb3IpLnJhbmdlKGpBLnNsaWNlKCkpLHRoaXMueFR5cGU9InN0ZXAiLHRoaXMuX3Zpc2libGVTZXJpZXNDYWNoZT1bXSx0aGlzLl9zZXJpZXNEYXRhQ2FjaGU9e30sdGhpcy5fbWFrZUNoYXJ0QXN5bmNDYWxsYmFja0lkPW51bGx9c2V0VmlzaWJsZVNlcmllcyh0KXt0aGlzLl92aXNpYmxlU2VyaWVzQ2FjaGU9dCx0aGlzLl9jaGFydCYmKHRoaXMuX2NoYXJ0LnNldFZpc2libGVTZXJpZXModCksdGhpcy5yZWRyYXcoKSl9c2V0U2VyaWVzRGF0YSh0LGUpe3RoaXMuX3Nlcmllc0RhdGFDYWNoZVt0XT1lLHRoaXMuX2NoYXJ0JiZ0aGlzLl9jaGFydC5zZXRTZXJpZXNEYXRhKHQsZSl9cmVkcmF3KCl7dGhpcy5fY2hhcnQucmVkcmF3KCl9X21ha2VDaGFydCgpe3ZhciB0PXRoaXMueFR5cGUsZT10aGlzLmNvbG9yU2NhbGUsbj10aGlzLl9hdHRhY2hlZDtudWxsPT09dGhpcy5fbWFrZUNoYXJ0QXN5bmNDYWxsYmFja0lkJiZ0aGlzLmNhbmNlbEFzeW5jKHRoaXMuX21ha2VDaGFydEFzeW5jQ2FsbGJhY2tJZCksdGhpcy5fbWFrZUNoYXJ0QXN5bmNDYWxsYmFja0lkPXRoaXMuYXN5bmMoKGZ1bmN0aW9uKCl7aWYodGhpcy5fbWFrZUNoYXJ0QXN5bmNDYWxsYmFja0lkPW51bGwsbil7dGhpcy5fY2hhcnQmJnRoaXMuX2NoYXJ0LmRlc3Ryb3koKTt2YXIgaT1uZXcga0F0KHQsZSkscj1EdSh0aGlzLiQuY2hhcnRkaXYpO2kucmVuZGVyVG8ociksdGhpcy5fY2hhcnQ9aX19KSwzNTApfV9yZWxvYWRGcm9tQ2FjaGUoKXt0aGlzLl9jaGFydCYmKHRoaXMuX2NoYXJ0LnNldFZpc2libGVTZXJpZXModGhpcy5fdmlzaWJsZVNlcmllc0NhY2hlKSx0aGlzLl92aXNpYmxlU2VyaWVzQ2FjaGUuZm9yRWFjaChmdW5jdGlvbih0KXt0aGlzLl9jaGFydC5zZXRTZXJpZXNEYXRhKHQsdGhpcy5fc2VyaWVzRGF0YUNhY2hlW3RdfHxbXSl9LmJpbmQodGhpcykpKX1hdHRhY2hlZCgpe3RoaXMuX2F0dGFjaGVkPSEwfWRldGFjaGVkKCl7dGhpcy5fYXR0YWNoZWQ9ITF9fTtMQXQudGVtcGxhdGU9eGVgCiAgICA8c3R5bGUgaW5jbHVkZT0icGxvdHRhYmxlLXN0eWxlIj48L3N0eWxlPgogICAgPGRpdiBpZD0iY2hhcnRkaXYiPjwvZGl2PgogICAgPHN0eWxlPgogICAgICA6aG9zdCB7CiAgICAgICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsKICAgICAgICAtbW96LXVzZXItc2VsZWN0OiBub25lOwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICBmbGV4LWdyb3c6IDE7CiAgICAgICAgZmxleC1zaHJpbms6IDE7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICB9CiAgICAgICNjaGFydGRpdiB7CiAgICAgICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsKICAgICAgICAtbW96LXVzZXItc2VsZWN0OiBub25lOwogICAgICAgIGZsZXgtZ3JvdzogMTsKICAgICAgICBmbGV4LXNocmluazogMTsKICAgICAgfQogICAgICAucGxvdHRhYmxlIC5heGlzIHRleHQgewogICAgICAgIGZpbGw6IGN1cnJlbnRDb2xvcjsKICAgICAgfQogICAgPC9zdHlsZT4KICBgLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE5PLlNjYWxlcy5Db2xvcildLExBdC5wcm90b3R5cGUsImNvbG9yU2NhbGUiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sTEF0LnByb3RvdHlwZSwieFR5cGUiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxMQXQucHJvdG90eXBlLCJfYXR0YWNoZWQiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsa0F0KV0sTEF0LnByb3RvdHlwZSwiX2NoYXJ0Iix2b2lkIDApLHQoW28oe3R5cGU6QXJyYXl9KSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpXSxMQXQucHJvdG90eXBlLCJfdmlzaWJsZVNlcmllc0NhY2hlIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLExBdC5wcm90b3R5cGUsIl9zZXJpZXNEYXRhQ2FjaGUiLHZvaWQgMCksdChbbyh7dHlwZTpOdW1iZXJ9KSxlKCJkZXNpZ246dHlwZSIsTnVtYmVyKV0sTEF0LnByb3RvdHlwZSwiX21ha2VDaGFydEFzeW5jQ2FsbGJhY2tJZCIsdm9pZCAwKSx0KFthKCJ4VHlwZSIsImNvbG9yU2NhbGUiLCJfYXR0YWNoZWQiKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLExBdC5wcm90b3R5cGUsIl9tYWtlQ2hhcnQiLG51bGwpLHQoW2EoIl9jaGFydCIpLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKSxlKCJkZXNpZ246cmV0dXJudHlwZSIsdm9pZCAwKV0sTEF0LnByb3RvdHlwZSwiX3JlbG9hZEZyb21DYWNoZSIsbnVsbCksTEF0PXQoW2koInZ6LWRpc3RyaWJ1dGlvbi1jaGFydCIpXSxMQXQpO2xldCBQQXQ9Y2xhc3MgZXh0ZW5kcyhiQ3QoY3Iod2UpKSl7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMuZ2V0RGF0YUxvYWROYW1lPSh7cnVuOnR9KT0+dCx0aGlzLnJlcXVlc3REYXRhPSh0LGUsbik9Pntjb25zdCBpPUVyKCkucGx1Z2luUm91dGUoImRpc3RyaWJ1dGlvbnMiLCIvZGlzdHJpYnV0aW9ucyIpO1Byb21pc2UuYWxsKHQubWFwKCh0PT57Y29uc3Qgbj1QTyhpLHt0YWc6dC50YWcscnVuOnQucnVufSk7cmV0dXJuIHRoaXMucmVxdWVzdE1hbmFnZXIucmVxdWVzdChuKS50aGVuKChuPT57ZSh7aXRlbTp0LGRhdGE6bn0pfSkpfSkpKS5maW5hbGx5KCgoKT0+e24oKX0pKX0sdGhpcy5sb2FkRGF0YUNhbGxiYWNrPSh0LGUsbik9Pntjb25zdCBpPW4ubWFwKCh0PT57Y29uc3RbZSxuLGldPXQ7cmV0dXJuIGkud2FsbF90aW1lPW5ldyBEYXRlKDFlMyplKSxpLnN0ZXA9bixpfSkpLHI9dGhpcy5nZXREYXRhTG9hZE5hbWUoZSk7dGhpcy4kLmNoYXJ0LnNldFNlcmllc0RhdGEocixpKSx0aGlzLiQuY2hhcnQuc2V0VmlzaWJsZVNlcmllcyhbcl0pfSx0aGlzLl9jb2xvclNjYWxlPXtzY2FsZTpfT30sdGhpcy5fZXhwYW5kZWQ9ITEsdGhpcy5fY2FuY2VsbGVyPW5ldyB4T31fcmVsb2FkT25SdW5UYWdDaGFuZ2UoKXt0aGlzLnJlbG9hZCgpfV91cGRhdGVEYXRhVG9Mb2FkKCl7dGhpcy5kYXRhVG9Mb2FkPVt7cnVuOnRoaXMucnVuLHRhZzp0aGlzLnRhZ31dfWdldCBfcnVuQ29sb3IoKXtyZXR1cm4gdGhpcy5fY29sb3JTY2FsZS5zY2FsZSh0aGlzLnJ1bil9cmVkcmF3KCl7dGhpcy4kLmNoYXJ0LnJlZHJhdygpfV90b2dnbGVFeHBhbmRlZCh0KXt0aGlzLnNldCgiX2V4cGFuZGVkIiwhdGhpcy5fZXhwYW5kZWQpLHRoaXMucmVkcmF3KCl9fTtQQXQudGVtcGxhdGU9eGVgCiAgICA8dGYtY2FyZC1oZWFkaW5nCiAgICAgIHRhZz0iW1t0YWddXSIKICAgICAgcnVuPSJbW3J1bl1dIgogICAgICBkaXNwbGF5LW5hbWU9IltbdGFnTWV0YWRhdGEuZGlzcGxheU5hbWVdXSIKICAgICAgZGVzY3JpcHRpb249IltbdGFnTWV0YWRhdGEuZGVzY3JpcHRpb25dXSIKICAgICAgY29sb3I9IltbX3J1bkNvbG9yXV0iCiAgICA+PC90Zi1jYXJkLWhlYWRpbmc+CiAgICA8IS0tCiAgICAgIFRoZSBtYWluIGRpc3RyaWJ1dGlvbiB0aGF0IHdlIHJlbmRlci4gRGF0YSBpcyBzZXQgZGlyZWN0bHkgd2l0aAogICAgICBcYHNldFNlcmllc0RhdGFcYCwgbm90IHdpdGggYSBib3VuZCBwcm9wZXJ0eS4KICAgIC0tPgogICAgPHZ6LWRpc3RyaWJ1dGlvbi1jaGFydAogICAgICBpZD0iY2hhcnQiCiAgICAgIHgtdHlwZT0iW1t4VHlwZV1dIgogICAgICBjb2xvci1zY2FsZT0iW1tfY29sb3JTY2FsZV1dIgogICAgPjwvdnotZGlzdHJpYnV0aW9uLWNoYXJ0PgogICAgPGRpdiBzdHlsZT0iZGlzcGxheTogZmxleDsgZmxleC1kaXJlY3Rpb246IHJvdzsiPgogICAgICA8cGFwZXItaWNvbi1idXR0b24KICAgICAgICBzZWxlY3RlZCQ9IltbX2V4cGFuZGVkXV0iCiAgICAgICAgaWNvbj0iZnVsbHNjcmVlbiIKICAgICAgICBvbi10YXA9Il90b2dnbGVFeHBhbmRlZCIKICAgICAgPjwvcGFwZXItaWNvbi1idXR0b24+CiAgICA8L2Rpdj4KICAgIDxzdHlsZT4KICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICB3aWR0aDogMzMwcHg7CiAgICAgICAgaGVpZ2h0OiAyMzVweDsKICAgICAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTVweDsKICAgICAgfQogICAgICA6aG9zdChbX2V4cGFuZGVkXSkgewogICAgICAgIHdpZHRoOiA3MDBweDsKICAgICAgICBoZWlnaHQ6IDUwMHB4OwogICAgICB9CgogICAgICB2ei1oaXN0b2dyYW0tdGltZXNlcmllcyB7CiAgICAgICAgLW1vei11c2VyLXNlbGVjdDogbm9uZTsKICAgICAgICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lOwogICAgICB9CgogICAgICBwYXBlci1pY29uLWJ1dHRvbiB7CiAgICAgICAgY29sb3I6ICMyMTk2ZjM7CiAgICAgICAgYm9yZGVyLXJhZGl1czogMTAwJTsKICAgICAgICB3aWR0aDogMzJweDsKICAgICAgICBoZWlnaHQ6IDMycHg7CiAgICAgICAgcGFkZGluZzogNHB4OwogICAgICB9CiAgICAgIHBhcGVyLWljb24tYnV0dG9uW3NlbGVjdGVkXSB7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tdGItdWktbGlnaHQtYWNjZW50KTsKICAgICAgfQoKICAgICAgdGYtY2FyZC1oZWFkaW5nIHsKICAgICAgICBtYXJnaW4tYm90dG9tOiAxMHB4OwogICAgICB9CiAgICA8L3N0eWxlPgogIGAsdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sUEF0LnByb3RvdHlwZSwicnVuIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLFBBdC5wcm90b3R5cGUsInRhZyIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxQQXQucHJvdG90eXBlLCJ0YWdNZXRhZGF0YSIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxQQXQucHJvdG90eXBlLCJ4VHlwZSIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxQQXQucHJvdG90eXBlLCJnZXREYXRhTG9hZE5hbWUiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sUEF0LnByb3RvdHlwZSwibG9hZERhdGFDYWxsYmFjayIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxQQXQucHJvdG90eXBlLCJfY29sb3JTY2FsZSIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW4scmVmbGVjdFRvQXR0cmlidXRlOiEwfSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxQQXQucHJvdG90eXBlLCJfZXhwYW5kZWQiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsYnIpXSxQQXQucHJvdG90eXBlLCJyZXF1ZXN0TWFuYWdlciIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIix4TyldLFBBdC5wcm90b3R5cGUsIl9jYW5jZWxsZXIiLHZvaWQgMCksdChbYSgicnVuIiwidGFnIiksZSgiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pLGUoImRlc2lnbjpyZXR1cm50eXBlIix2b2lkIDApXSxQQXQucHJvdG90eXBlLCJfcmVsb2FkT25SdW5UYWdDaGFuZ2UiLG51bGwpLHQoW2EoInJ1biIsInRhZyIpLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKSxlKCJkZXNpZ246cmV0dXJudHlwZSIsdm9pZCAwKV0sUEF0LnByb3RvdHlwZSwiX3VwZGF0ZURhdGFUb0xvYWQiLG51bGwpLHQoW3MoInJ1biIpLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSldLFBBdC5wcm90b3R5cGUsIl9ydW5Db2xvciIsbnVsbCksUEF0PXQoW2koInRmLWRpc3RyaWJ1dGlvbi1sb2FkZXIiKV0sUEF0KTtsZXQgTkF0PWNsYXNzIGV4dGVuZHMoY3Iod2UpKXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5yZWxvYWRPblJlYWR5PSEwLHRoaXMuX3hUeXBlPSJzdGVwIix0aGlzLl9yZXF1ZXN0TWFuYWdlcj1uZXcgYnJ9cmVhZHkoKXtzdXBlci5yZWFkeSgpLHRoaXMucmVsb2FkT25SZWFkeSYmdGhpcy5yZWxvYWQoKX1yZWxvYWQoKXt0aGlzLl9mZXRjaFRhZ3MoKS50aGVuKCgoKT0+e3RoaXMuX3JlbG9hZERpc3RyaWJ1dGlvbnMoKX0pKX1fZmV0Y2hUYWdzKCl7Y29uc3QgdD1FcigpLnBsdWdpblJvdXRlKCJkaXN0cmlidXRpb25zIiwiL3RhZ3MiKTtyZXR1cm4gdGhpcy5fcmVxdWVzdE1hbmFnZXIucmVxdWVzdCh0KS50aGVuKCh0PT57aWYoQ2UuZXhwb3J0cy5pc0VxdWFsKHQsdGhpcy5fcnVuVG9UYWdJbmZvKSlyZXR1cm47Y29uc3QgZT1DZS5leHBvcnRzLm1hcFZhbHVlcyh0LCh0PT5PYmplY3Qua2V5cyh0KSkpLG49ZnIoZSk7dGhpcy5zZXQoIl9kYXRhTm90Rm91bmQiLDA9PT1uLmxlbmd0aCksdGhpcy5zZXQoIl9ydW5Ub1RhZyIsZSksdGhpcy5zZXQoIl9ydW5Ub1RhZ0luZm8iLHQpLHRoaXMuYXN5bmMoKCgpPT57dGhpcy5zZXQoIl9jYXRlZ29yaWVzRG9tUmVhZHkiLCEwKX0pKX0pKX1fcmVsb2FkRGlzdHJpYnV0aW9ucygpe3RoaXMucm9vdC5xdWVyeVNlbGVjdG9yQWxsKCJ0Zi1kaXN0cmlidXRpb24tbG9hZGVyIikuZm9yRWFjaCgodD0+e3QucmVsb2FkKCl9KSl9X3Nob3VsZE9wZW4odCl7cmV0dXJuIHQ8PTJ9Z2V0IF9jYXRlZ29yaWVzKCl7cmV0dXJuIElyKHRoaXMuX3J1blRvVGFnLHRoaXMuX3NlbGVjdGVkUnVucyx0aGlzLl90YWdGaWx0ZXIpfV90YWdNZXRhZGF0YSh0LGUsbil7cmV0dXJuIHRbZV1bbl19fTtOQXQudGVtcGxhdGU9eGVgCiAgICA8dGYtZGFzaGJvYXJkLWxheW91dD4KICAgICAgPGRpdiBjbGFzcz0ic2lkZWJhciIgc2xvdD0ic2lkZWJhciI+CiAgICAgICAgPGRpdiBjbGFzcz0ic2V0dGluZ3MiPgogICAgICAgICAgPGRpdiBjbGFzcz0ic2lkZWJhci1zZWN0aW9uIj4KICAgICAgICAgICAgPHRmLW9wdGlvbi1zZWxlY3RvcgogICAgICAgICAgICAgIGlkPSJ4VHlwZVNlbGVjdG9yIgogICAgICAgICAgICAgIG5hbWU9Ikhvcml6b250YWwgYXhpcyIKICAgICAgICAgICAgICBzZWxlY3RlZC1pZD0ie3tfeFR5cGV9fSIKICAgICAgICAgICAgPgogICAgICAgICAgICAgIDxwYXBlci1idXR0b24gaWQ9InN0ZXAiPnN0ZXA8L3BhcGVyLWJ1dHRvbj4KICAgICAgICAgICAgICA8cGFwZXItYnV0dG9uIGlkPSJyZWxhdGl2ZSI+cmVsYXRpdmU8L3BhcGVyLWJ1dHRvbj4KICAgICAgICAgICAgICA8cGFwZXItYnV0dG9uIGlkPSJ3YWxsX3RpbWUiPndhbGw8L3BhcGVyLWJ1dHRvbj4KICAgICAgICAgICAgPC90Zi1vcHRpb24tc2VsZWN0b3I+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJzaWRlYmFyLXNlY3Rpb24gcnVucy1zZWxlY3RvciI+CiAgICAgICAgICA8dGYtcnVucy1zZWxlY3RvciBzZWxlY3RlZC1ydW5zPSJ7e19zZWxlY3RlZFJ1bnN9fSI+CiAgICAgICAgICA8L3RmLXJ1bnMtc2VsZWN0b3I+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgoKICAgICAgPGRpdiBjbGFzcz0iY2VudGVyIiBzbG90PSJjZW50ZXIiPgogICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfZGF0YU5vdEZvdW5kXV0iPgogICAgICAgICAgPGRpdiBjbGFzcz0ibm8tZGF0YS13YXJuaW5nIj4KICAgICAgICAgICAgPGgzPk5vIGRpc3RyaWJ1dGlvbiBkYXRhIHdhcyBmb3VuZC48L2gzPgogICAgICAgICAgICA8cD5Qcm9iYWJsZSBjYXVzZXM6PC9wPgogICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgWW91IGhhdmVu4oCZdCB3cml0dGVuIGFueSBoaXN0b2dyYW0gZGF0YSB0byB5b3VyIGV2ZW50IGZpbGVzLgogICAgICAgICAgICAgICAgKEhpc3RvZ3JhbXMgYW5kIGRpc3RyaWJ1dGlvbnMgYm90aCB1c2UgdGhlIGhpc3RvZ3JhbSBzdW1tYXJ5CiAgICAgICAgICAgICAgICBvcGVyYXRpb24uKQogICAgICAgICAgICAgIDwvbGk+CgogICAgICAgICAgICAgIDxsaT5UZW5zb3JCb2FyZCBjYW7igJl0IGZpbmQgeW91ciBldmVudCBmaWxlcy48L2xpPgogICAgICAgICAgICA8L3VsPgoKICAgICAgICAgICAgPHA+CiAgICAgICAgICAgICAgSWYgeW914oCZcmUgbmV3IHRvIHVzaW5nIFRlbnNvckJvYXJkLCBhbmQgd2FudCB0byBmaW5kIG91dCBob3cgdG8KICAgICAgICAgICAgICBhZGQgZGF0YSBhbmQgc2V0IHVwIHlvdXIgZXZlbnQgZmlsZXMsIGNoZWNrIG91dCB0aGUKICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3RlbnNvcmZsb3cvdGVuc29yYm9hcmQvYmxvYi9tYXN0ZXIvUkVBRE1FLm1kIgogICAgICAgICAgICAgICAgPlJFQURNRTwvYQogICAgICAgICAgICAgID4KICAgICAgICAgICAgICBhbmQgcGVyaGFwcyB0aGUKICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgaHJlZj0iaHR0cHM6Ly93d3cudGVuc29yZmxvdy5vcmcvZ2V0X3N0YXJ0ZWQvc3VtbWFyaWVzX2FuZF90ZW5zb3Jib2FyZCIKICAgICAgICAgICAgICAgID5UZW5zb3JCb2FyZCB0dXRvcmlhbDwvYQogICAgICAgICAgICAgID4uCiAgICAgICAgICAgIDwvcD4KCiAgICAgICAgICAgIDxwPgogICAgICAgICAgICAgIElmIHlvdSB0aGluayBUZW5zb3JCb2FyZCBpcyBjb25maWd1cmVkIHByb3Blcmx5LCBwbGVhc2Ugc2VlCiAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS90ZW5zb3JmbG93L3RlbnNvcmJvYXJkL2Jsb2IvbWFzdGVyL1JFQURNRS5tZCNteS10ZW5zb3Jib2FyZC1pc250LXNob3dpbmctYW55LWRhdGEtd2hhdHMtd3JvbmciCiAgICAgICAgICAgICAgICA+dGhlIHNlY3Rpb24gb2YgdGhlIFJFQURNRSBkZXZvdGVkIHRvIG1pc3NpbmcgZGF0YSBwcm9ibGVtczwvYQogICAgICAgICAgICAgID4KICAgICAgICAgICAgICBhbmQgY29uc2lkZXIgZmlsaW5nIGFuIGlzc3VlIG9uIEdpdEh1Yi4KICAgICAgICAgICAgPC9wPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbIV9kYXRhTm90Rm91bmRdXSI+CiAgICAgICAgICA8dGYtdGFnLWZpbHRlcmVyIHRhZy1maWx0ZXI9Int7X3RhZ0ZpbHRlcn19Ij48L3RmLXRhZy1maWx0ZXJlcj4KICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLXJlcGVhdCIgaXRlbXM9IltbX2NhdGVnb3JpZXNdXSIgYXM9ImNhdGVnb3J5Ij4KICAgICAgICAgICAgPHRmLWNhdGVnb3J5LXBhZ2luYXRlZC12aWV3CiAgICAgICAgICAgICAgY2F0ZWdvcnk9IltbY2F0ZWdvcnldXSIKICAgICAgICAgICAgICBpbml0aWFsLW9wZW5lZD0iW1tfc2hvdWxkT3BlbihpbmRleCldXSIKICAgICAgICAgICAgPgogICAgICAgICAgICAgIDx0ZW1wbGF0ZT4KICAgICAgICAgICAgICAgIDx0Zi1kaXN0cmlidXRpb24tbG9hZGVyCiAgICAgICAgICAgICAgICAgIGFjdGl2ZT0iW1thY3RpdmVdXSIKICAgICAgICAgICAgICAgICAgcnVuPSJbW2l0ZW0ucnVuXV0iCiAgICAgICAgICAgICAgICAgIHRhZz0iW1tpdGVtLnRhZ11dIgogICAgICAgICAgICAgICAgICB0YWctbWV0YWRhdGE9IltbX3RhZ01ldGFkYXRhKF9ydW5Ub1RhZ0luZm8sIGl0ZW0ucnVuLCBpdGVtLnRhZyldXSIKICAgICAgICAgICAgICAgICAgeC10eXBlPSJbW194VHlwZV1dIgogICAgICAgICAgICAgICAgICByZXF1ZXN0LW1hbmFnZXI9IltbX3JlcXVlc3RNYW5hZ2VyXV0iCiAgICAgICAgICAgICAgICA+PC90Zi1kaXN0cmlidXRpb24tbG9hZGVyPgogICAgICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgICAgIDwvdGYtY2F0ZWdvcnktcGFnaW5hdGVkLXZpZXc+CiAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgIDwvdGVtcGxhdGU+CiAgICAgIDwvZGl2PgogICAgPC90Zi1kYXNoYm9hcmQtbGF5b3V0PgoKICAgIDxzdHlsZSBpbmNsdWRlPSJkYXNoYm9hcmQtc3R5bGUiPjwvc3R5bGU+CiAgICA8c3R5bGU+CiAgICAgIC5uby1kYXRhLXdhcm5pbmcgewogICAgICAgIG1heC13aWR0aDogNTQwcHg7CiAgICAgICAgbWFyZ2luOiA4MHB4IGF1dG8gMCBhdXRvOwogICAgICB9CiAgICA8L3N0eWxlPgogIGAsdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxOQXQucHJvdG90eXBlLCJyZWxvYWRPblJlYWR5Iix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLE5BdC5wcm90b3R5cGUsIl94VHlwZSIsdm9pZCAwKSx0KFtvKHt0eXBlOkFycmF5fSksZSgiZGVzaWduOnR5cGUiLEFycmF5KV0sTkF0LnByb3RvdHlwZSwiX3NlbGVjdGVkUnVucyIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxOQXQucHJvdG90eXBlLCJfcnVuVG9UYWciLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sTkF0LnByb3RvdHlwZSwiX3J1blRvVGFnSW5mbyIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLE5BdC5wcm90b3R5cGUsIl9kYXRhTm90Rm91bmQiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sTkF0LnByb3RvdHlwZSwiX3RhZ0ZpbHRlciIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLE5BdC5wcm90b3R5cGUsIl9jYXRlZ29yaWVzRG9tUmVhZHkiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsYnIpXSxOQXQucHJvdG90eXBlLCJfcmVxdWVzdE1hbmFnZXIiLHZvaWQgMCksdChbcygiX3J1blRvVGFnIiwiX3NlbGVjdGVkUnVucyIsIl90YWdGaWx0ZXIiLCJfY2F0ZWdvcmllc0RvbVJlYWR5IiksZSgiZGVzaWduOnR5cGUiLEFycmF5KSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSxOQXQucHJvdG90eXBlLCJfY2F0ZWdvcmllcyIsbnVsbCksTkF0PXQoW2koInRmLWRpc3RyaWJ1dGlvbi1kYXNoYm9hcmQiKV0sTkF0KTt2YXIgSUF0PU9iamVjdC5mcmVlemUoe19fcHJvdG9fXzpudWxsLExpc3RlbktleTpNcyxhZGRIYXNoTGlzdGVuZXI6Q3MsYWRkU3RvcmFnZUxpc3RlbmVyOkFzLGZpcmVTdG9yYWdlQ2hhbmdlZDprcyxyZW1vdmVIYXNoTGlzdGVuZXJCeUtleTpMcyxyZW1vdmVTdG9yYWdlTGlzdGVuZXJCeUtleTpQcyxnZXRVcmxIYXNoRGljdDpmdW5jdGlvbiBSQXQoKXtyZXR1cm4gRnN9LERJU0FNQklHVUFUT1I6V3MsZ2V0U3RyaW5nOnFzLHNldFN0cmluZzpZcyxnZXRTdHJpbmdJbml0aWFsaXplcjpYcyxnZXRTdHJpbmdPYnNlcnZlcjokcyxkaXNwb3NlU3RyaW5nQmluZGluZzpLcyxnZXRCb29sZWFuOlpzLHNldEJvb2xlYW46SnMsZ2V0Qm9vbGVhbkluaXRpYWxpemVyOlFzLGdldEJvb2xlYW5PYnNlcnZlcjp0bCxkaXNwb3NlQm9vbGVhbkJpbmRpbmc6ZWwsZ2V0TnVtYmVyOm5sLHNldE51bWJlcjppbCxnZXROdW1iZXJJbml0aWFsaXplcjpybCxnZXROdW1iZXJPYnNlcnZlcjpvbCxkaXNwb3NlTnVtYmVyQmluZGluZzphbCxnZXRPYmplY3Q6c2wsc2V0T2JqZWN0OmxsLGdldE9iamVjdEluaXRpYWxpemVyOmNsLGdldE9iamVjdE9ic2VydmVyOnVsLGRpc3Bvc2VPYmplY3RCaW5kaW5nOmhsLG1ha2VCaW5kaW5nczpkbCxtaWdyYXRlTGVnYWN5VVJMU2NoZW1lOmZ1bmN0aW9uIE9BdCgpe2NvbnN0IHQ9bmV3IFNldChbImV4YW1wbGVzUGF0aCIsImhpZGVNb2RlbFBhbmUyIiwibW9kZWxOYW1lMSIsIm1vZGVsTmFtZTIiLCJpbmZlcmVuY2VBZGRyZXNzMSIsImluZmVyZW5jZUFkZHJlc3MyIiwibW9kZWxUeXBlIiwibW9kZWxWZXJzaW9uMSIsIm1vZGVsVmVyc2lvbjIiLCJtb2RlbFNpZ25hdHVyZTEiLCJtb2RlbFNpZ25hdHVyZTIiLCJtYXhFeGFtcGxlcyIsImxhYmVsVm9jYWJQYXRoIiwibXVsdGlDbGFzcyIsInNlcXVlbmNlRXhhbXBsZXMiLCJtYXhDbGFzc2VzVG9EaXNwbGF5Iiwic2FtcGxpbmdPZGRzIiwidXNlUHJlZGljdEFwaSIsInByZWRpY3RJbnB1dFRlbnNvciIsInByZWRpY3RPdXRwdXRUZW5zb3IiXSksZT1VcyhWcygpKTtpZigid2hhdGlmIj09PWUuX190YWJfXylmb3IobGV0IG4gb2YgdClpZihuIGluIGUpe2VbYHAud2hhdGlmLiR7bn1gXT1lW25dfWpzKEdzKGUpKSwoZnVuY3Rpb24gbih0KXtGcz10fSkoZSl9fSk7dmFyIHpBdCxEQXQ7IShmdW5jdGlvbih0KXt0LkZFVENIX1BCVFhUX0JZVEVTPSJGRVRDSF9QQlRYVF9CWVRFUyIsdC5GRVRDSF9QQlRYVF9CWVRFU19GUk9NX0ZJTEVTWVNURU09IkZFVENIX1BCVFhUX0JZVEVTX0ZST01fRklMRVNZU1RFTSIsdC5GRVRDSF9QQlRYVF9CWVRFU19GUk9NX1NFUlZFUj0iRkVUQ0hfUEJUWFRfQllURVNfRlJPTV9TRVJWRVIiLHQuUEFSU0VfUEJUWFRfSU5UT19PQkpFQ1Q9IlBBUlNFX1BCVFhUX0lOVE9fT0JKRUNUIix0LkZFVENIX01FVEFEQVRBX1BCVFhUX0JZVEVTPSJGRVRDSF9NRVRBREFUQV9QQlRYVF9CWVRFUyIsdC5QQVJTRV9NRVRBREFUQV9QQlRYVF9JTlRPX09CSkVDVD0iUEFSU0VfTUVUQURBVEFfUEJUWFRfSU5UT19PQkpFQ1QiLHQuTk9STUFMSVpJTkdfTkFNRVM9Ik5PUk1BTElaSU5HX05BTUVTIix0LkJVSUxEX1NMSU1fR1JBUEg9IkJVSUxEX1NMSU1fR1JBUEgiLHQuSElFUkFSQ0hZX0FERF9OT0RFUz0iSElFUkFSQ0hZX0FERF9OT0RFUyIsdC5ISUVSQVJDSFlfREVURUNUX1NFUklFUz0iSElFUkFSQ0hZX0RFVEVDVF9TRVJJRVMiLHQuSElFUkFSQ0hZX0FERF9FREdFUz0iSElFUkFSQ0hZX0FERF9FREdFUyIsdC5ISUVSQVJDSFlfRklORF9TSU1JTEFSX1NVQkdSQVBIUz0iSElFUkFSQ0hZX0ZJTkRfU0lNSUxBUl9TVUJHUkFQSFMiLHQuUkVOREVSX0JVSUxEX0hJRVJBUkNIWT0iUkVOREVSX0JVSUxEX0hJRVJBUkNIWSIsdC5SRU5ERVJfU0NFTkVfTEFZT1VUPSJSRU5ERVJfU0NFTkVfTEFZT1VUIix0LlJFTkRFUl9TQ0VORV9CVUlMRF9TQ0VORT0iUkVOREVSX1NDRU5FX0JVSUxEX1NDRU5FIix0LkdSQVBIX0xPQURfU1VDQ0VFREVEPSJHUkFQSF9MT0FEX1NVQ0NFRURFRCIsdC5HUkFQSF9MT0FEX0ZBSUxFRD0iR1JBUEhfTE9BRF9GQUlMRUQifSkoekF0fHwoekF0PXt9KSksKGZ1bmN0aW9uKHQpe3QuTk9ERV9FWFBBTlNJT05fVE9HR0xFRD0iTk9ERV9FWFBBTlNJT05fVE9HR0xFRCIsdC5OT0RFX1NFQVJDSF9SRVNVTFRfRk9DVVNFRD0iTk9ERV9TRUFSQ0hfUkVTVUxUX0ZPQ1VTRUQiLHQuTk9ERV9BVVhJTElBUllfRVhUUkFDVElPTl9DSEFOR0VEPSJOT0RFX0FVWElMSUFSWV9FWFRSQUNUSU9OX0NIQU5HRUQiLHQuR1JBUEhfVFlQRV9DSEFOR0VEPSJHUkFQSF9UWVBFX0NIQU5HRUQiLHQuVFJBQ0VfSU5QVVRfTU9ERV9UT0dHTEVEPSJUUkFDRV9JTlBVVF9NT0RFX1RPR0dMRUQiLHQuTk9ERV9DT0xPUl9NT0RFX0NIQU5HRUQ9Ik5PREVfQ09MT1JfTU9ERV9DSEFOR0VEIix0LlVQTE9BREVEX0dSQVBIX0ZST01fRklMRVNZU1RFTT0iVVBMT0FERURfR1JBUEhfRlJPTV9GSUxFU1lTVEVNIn0pKERBdHx8KERBdD17fSkpO2NvbnN0IEJBdD1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sekF0KSxEQXQpO3ZhciBIQXQ9ZnVuY3Rpb24gRkF0KHQsZSl7cmV0dXJuIHQ9PT1lfHx0IT10JiZlIT1lfSxWQXQ9SEF0O3ZhciBVQXQ9ZnVuY3Rpb24gakF0KHQsZSl7Zm9yKHZhciBuPXQubGVuZ3RoO24tLTspaWYoVkF0KHRbbl1bMF0sZSkpcmV0dXJuIG47cmV0dXJuLTF9LEdBdD1VQXQsV0F0PUFycmF5LnByb3RvdHlwZS5zcGxpY2U7dmFyIHFBdD1VQXQ7dmFyIFlBdD1VQXQ7dmFyIFhBdD1VQXQ7dmFyICRBdD1mdW5jdGlvbiBLQXQodCl7dmFyIGU9dGhpcy5fX2RhdGFfXyxuPUdBdChlLHQpO3JldHVybiEobjwwKSYmKG49PWUubGVuZ3RoLTE/ZS5wb3AoKTpXQXQuY2FsbChlLG4sMSksLS10aGlzLnNpemUsITApfSxaQXQ9ZnVuY3Rpb24gSkF0KHQpe3ZhciBlPXRoaXMuX19kYXRhX18sbj1xQXQoZSx0KTtyZXR1cm4gbjwwP3ZvaWQgMDplW25dWzFdfSxRQXQ9ZnVuY3Rpb24gdGt0KHQpe3JldHVybiBZQXQodGhpcy5fX2RhdGFfXyx0KT4tMX0sZWt0PWZ1bmN0aW9uIG5rdCh0LGUpe3ZhciBuPXRoaXMuX19kYXRhX18saT1YQXQobix0KTtyZXR1cm4gaTwwPygrK3RoaXMuc2l6ZSxuLnB1c2goW3QsZV0pKTpuW2ldWzFdPWUsdGhpc307ZnVuY3Rpb24gaWt0KHQpe3ZhciBlPS0xLG49bnVsbD09dD8wOnQubGVuZ3RoO2Zvcih0aGlzLmNsZWFyKCk7KytlPG47KXt2YXIgaT10W2VdO3RoaXMuc2V0KGlbMF0saVsxXSl9fWlrdC5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24gcmt0KCl7dGhpcy5fX2RhdGFfXz1bXSx0aGlzLnNpemU9MH0saWt0LnByb3RvdHlwZS5kZWxldGU9JEF0LGlrdC5wcm90b3R5cGUuZ2V0PVpBdCxpa3QucHJvdG90eXBlLmhhcz1RQXQsaWt0LnByb3RvdHlwZS5zZXQ9ZWt0O3ZhciBva3Q9aWt0LGFrdD1va3Q7dmFyIHNrdD1mdW5jdGlvbiBsa3QoKXt0aGlzLl9fZGF0YV9fPW5ldyBha3QsdGhpcy5zaXplPTB9O3ZhciBja3Q9ZnVuY3Rpb24gdWt0KHQpe3ZhciBlPXRoaXMuX19kYXRhX18sbj1lLmRlbGV0ZSh0KTtyZXR1cm4gdGhpcy5zaXplPWUuc2l6ZSxufTt2YXIgaGt0PWZ1bmN0aW9uIGRrdCh0KXtyZXR1cm4gdGhpcy5fX2RhdGFfXy5nZXQodCl9O3ZhciBwa3Q9ZnVuY3Rpb24gZmt0KHQpe3JldHVybiB0aGlzLl9fZGF0YV9fLmhhcyh0KX0sbWt0PSJvYmplY3QiPT10eXBlb2YgU2UmJlNlJiZTZS5PYmplY3Q9PT1PYmplY3QmJlNlLGdrdD0ib2JqZWN0Ij09dHlwZW9mIHNlbGYmJnNlbGYmJnNlbGYuT2JqZWN0PT09T2JqZWN0JiZzZWxmLF9rdD1ta3R8fGdrdHx8RnVuY3Rpb24oInJldHVybiB0aGlzIikoKSx5a3Q9X2t0LlN5bWJvbCx2a3Q9T2JqZWN0LnByb3RvdHlwZSxia3Q9dmt0Lmhhc093blByb3BlcnR5LHhrdD12a3QudG9TdHJpbmcsd2t0PXlrdD95a3QudG9TdHJpbmdUYWc6dm9pZCAwO3ZhciBTa3Q9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZzt2YXIgTWt0PWZ1bmN0aW9uIEVrdCh0KXt2YXIgZT1ia3QuY2FsbCh0LHdrdCksbj10W3drdF07dHJ5e3Rbd2t0XT12b2lkIDA7dmFyIGk9ITB9Y2F0Y2godCl7fXZhciByPXhrdC5jYWxsKHQpO3JldHVybiBpJiYoZT90W3drdF09bjpkZWxldGUgdFt3a3RdKSxyfSxUa3Q9ZnVuY3Rpb24gQ2t0KHQpe3JldHVybiBTa3QuY2FsbCh0KX0sQWt0PXlrdD95a3QudG9TdHJpbmdUYWc6dm9pZCAwO3ZhciBra3Q9ZnVuY3Rpb24gTGt0KHQpe3JldHVybiBudWxsPT10P3ZvaWQgMD09PXQ/IltvYmplY3QgVW5kZWZpbmVkXSI6IltvYmplY3QgTnVsbF0iOkFrdCYmQWt0IGluIE9iamVjdCh0KT9Na3QodCk6VGt0KHQpfTt2YXIgUGt0PWZ1bmN0aW9uIE5rdCh0KXt2YXIgZT10eXBlb2YgdDtyZXR1cm4gbnVsbCE9dCYmKCJvYmplY3QiPT1lfHwiZnVuY3Rpb24iPT1lKX0sSWt0PWtrdCxSa3Q9UGt0O3ZhciBPa3Qsemt0PWZ1bmN0aW9uIERrdCh0KXtpZighUmt0KHQpKXJldHVybiExO3ZhciBlPUlrdCh0KTtyZXR1cm4iW29iamVjdCBGdW5jdGlvbl0iPT1lfHwiW29iamVjdCBHZW5lcmF0b3JGdW5jdGlvbl0iPT1lfHwiW29iamVjdCBBc3luY0Z1bmN0aW9uXSI9PWV8fCJbb2JqZWN0IFByb3h5XSI9PWV9LEJrdD1fa3RbIl9fY29yZS1qc19zaGFyZWRfXyJdLEhrdD0oT2t0PS9bXi5dKyQvLmV4ZWMoQmt0JiZCa3Qua2V5cyYmQmt0LmtleXMuSUVfUFJPVE98fCIiKSk/IlN5bWJvbChzcmMpXzEuIitPa3Q6IiI7dmFyIEZrdD1GdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmc7dmFyIFZrdD1mdW5jdGlvbiBVa3QodCl7aWYobnVsbCE9dCl7dHJ5e3JldHVybiBGa3QuY2FsbCh0KX1jYXRjaCh0KXt9dHJ5e3JldHVybiB0KyIifWNhdGNoKHQpe319cmV0dXJuIiJ9LGprdD16a3QsR2t0PWZ1bmN0aW9uIFdrdCh0KXtyZXR1cm4hIUhrdCYmSGt0IGluIHR9LHFrdD1Qa3QsWWt0PVZrdCxYa3Q9L15cW29iamVjdCAuKz9Db25zdHJ1Y3RvclxdJC8sJGt0PVJlZ0V4cCgiXiIrRnVuY3Rpb24ucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSkucmVwbGFjZSgvW1xcXiQuKis/KClbXF17fXxdL2csIlxcJCYiKS5yZXBsYWNlKC9oYXNPd25Qcm9wZXJ0eXwoZnVuY3Rpb24pLio/KD89XFxcKCl8IGZvciAuKz8oPz1cXFxdKS9nLCIkMS4qPyIpKyIkIik7dmFyIEtrdD1mdW5jdGlvbiBaa3QodCl7cmV0dXJuISghcWt0KHQpfHxHa3QodCkpJiYoamt0KHQpPyRrdDpYa3QpLnRlc3QoWWt0KHQpKX0sSmt0PWZ1bmN0aW9uIFFrdCh0LGUpe3JldHVybiBudWxsPT10P3ZvaWQgMDp0W2VdfTt2YXIgdEx0PWZ1bmN0aW9uIGVMdCh0LGUpe3ZhciBuPUprdCh0LGUpO3JldHVybiBLa3Qobik/bjp2b2lkIDB9LG5MdD10THQoX2t0LCJNYXAiKSxpTHQ9dEx0KE9iamVjdCwiY3JlYXRlIiksckx0PWlMdDt2YXIgb0x0PWlMdCxhTHQ9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTt2YXIgc0x0PWlMdCxsTHQ9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTt2YXIgY0x0PWlMdDt2YXIgdUx0PWZ1bmN0aW9uIGhMdCh0KXt2YXIgZT10aGlzLmhhcyh0KSYmZGVsZXRlIHRoaXMuX19kYXRhX19bdF07cmV0dXJuIHRoaXMuc2l6ZS09ZT8xOjAsZX0sZEx0PWZ1bmN0aW9uIHBMdCh0KXt2YXIgZT10aGlzLl9fZGF0YV9fO2lmKG9MdCl7dmFyIG49ZVt0XTtyZXR1cm4iX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfXyI9PT1uP3ZvaWQgMDpufXJldHVybiBhTHQuY2FsbChlLHQpP2VbdF06dm9pZCAwfSxmTHQ9ZnVuY3Rpb24gbUx0KHQpe3ZhciBlPXRoaXMuX19kYXRhX187cmV0dXJuIHNMdD92b2lkIDAhPT1lW3RdOmxMdC5jYWxsKGUsdCl9LGdMdD1mdW5jdGlvbiBfTHQodCxlKXt2YXIgbj10aGlzLl9fZGF0YV9fO3JldHVybiB0aGlzLnNpemUrPXRoaXMuaGFzKHQpPzA6MSxuW3RdPWNMdCYmdm9pZCAwPT09ZT8iX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfXyI6ZSx0aGlzfTtmdW5jdGlvbiB5THQodCl7dmFyIGU9LTEsbj1udWxsPT10PzA6dC5sZW5ndGg7Zm9yKHRoaXMuY2xlYXIoKTsrK2U8bjspe3ZhciBpPXRbZV07dGhpcy5zZXQoaVswXSxpWzFdKX19eUx0LnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbiB2THQoKXt0aGlzLl9fZGF0YV9fPXJMdD9yTHQobnVsbCk6e30sdGhpcy5zaXplPTB9LHlMdC5wcm90b3R5cGUuZGVsZXRlPXVMdCx5THQucHJvdG90eXBlLmdldD1kTHQseUx0LnByb3RvdHlwZS5oYXM9Zkx0LHlMdC5wcm90b3R5cGUuc2V0PWdMdDt2YXIgYkx0PXlMdCx4THQ9b2t0LHdMdD1uTHQ7dmFyIFNMdD1mdW5jdGlvbiBNTHQodCl7dmFyIGU9dHlwZW9mIHQ7cmV0dXJuInN0cmluZyI9PWV8fCJudW1iZXIiPT1lfHwic3ltYm9sIj09ZXx8ImJvb2xlYW4iPT1lPyJfX3Byb3RvX18iIT09dDpudWxsPT09dH07dmFyIEVMdD1mdW5jdGlvbiBUTHQodCxlKXt2YXIgbj10Ll9fZGF0YV9fO3JldHVybiBTTHQoZSk/blsic3RyaW5nIj09dHlwZW9mIGU/InN0cmluZyI6Imhhc2giXTpuLm1hcH0sQ0x0PUVMdDt2YXIgQUx0PUVMdDt2YXIga0x0PUVMdDt2YXIgTEx0PUVMdDt2YXIgUEx0PWZ1bmN0aW9uIE5MdCh0KXt2YXIgZT1DTHQodGhpcyx0KS5kZWxldGUodCk7cmV0dXJuIHRoaXMuc2l6ZS09ZT8xOjAsZX0sSUx0PWZ1bmN0aW9uIFJMdCh0KXtyZXR1cm4gQUx0KHRoaXMsdCkuZ2V0KHQpfSxPTHQ9ZnVuY3Rpb24gekx0KHQpe3JldHVybiBrTHQodGhpcyx0KS5oYXModCl9LERMdD1mdW5jdGlvbiBCTHQodCxlKXt2YXIgbj1MTHQodGhpcyx0KSxpPW4uc2l6ZTtyZXR1cm4gbi5zZXQodCxlKSx0aGlzLnNpemUrPW4uc2l6ZT09aT8wOjEsdGhpc307ZnVuY3Rpb24gSEx0KHQpe3ZhciBlPS0xLG49bnVsbD09dD8wOnQubGVuZ3RoO2Zvcih0aGlzLmNsZWFyKCk7KytlPG47KXt2YXIgaT10W2VdO3RoaXMuc2V0KGlbMF0saVsxXSl9fUhMdC5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24gRkx0KCl7dGhpcy5zaXplPTAsdGhpcy5fX2RhdGFfXz17aGFzaDpuZXcgYkx0LG1hcDpuZXcod0x0fHx4THQpLHN0cmluZzpuZXcgYkx0fX0sSEx0LnByb3RvdHlwZS5kZWxldGU9UEx0LEhMdC5wcm90b3R5cGUuZ2V0PUlMdCxITHQucHJvdG90eXBlLmhhcz1PTHQsSEx0LnByb3RvdHlwZS5zZXQ9REx0O3ZhciBWTHQ9SEx0LFVMdD1va3Qsakx0PW5MdCxHTHQ9Vkx0O3ZhciBXTHQ9b2t0LHFMdD1ja3QsWUx0PWhrdCxYTHQ9cGt0LCRMdD1mdW5jdGlvbiBLTHQodCxlKXt2YXIgbj10aGlzLl9fZGF0YV9fO2lmKG4gaW5zdGFuY2VvZiBVTHQpe3ZhciBpPW4uX19kYXRhX187aWYoIWpMdHx8aS5sZW5ndGg8MTk5KXJldHVybiBpLnB1c2goW3QsZV0pLHRoaXMuc2l6ZT0rK24uc2l6ZSx0aGlzO249dGhpcy5fX2RhdGFfXz1uZXcgR0x0KGkpfXJldHVybiBuLnNldCh0LGUpLHRoaXMuc2l6ZT1uLnNpemUsdGhpc307ZnVuY3Rpb24gWkx0KHQpe3ZhciBlPXRoaXMuX19kYXRhX189bmV3IFdMdCh0KTt0aGlzLnNpemU9ZS5zaXplfVpMdC5wcm90b3R5cGUuY2xlYXI9c2t0LFpMdC5wcm90b3R5cGUuZGVsZXRlPXFMdCxaTHQucHJvdG90eXBlLmdldD1ZTHQsWkx0LnByb3RvdHlwZS5oYXM9WEx0LFpMdC5wcm90b3R5cGUuc2V0PSRMdDt2YXIgSkx0PVpMdDt2YXIgUUx0PWZ1bmN0aW9uIHRQdCh0LGUpe2Zvcih2YXIgbj0tMSxpPW51bGw9PXQ/MDp0Lmxlbmd0aDsrK248aSYmITEhPT1lKHRbbl0sbix0KTspO3JldHVybiB0fSxlUHQ9dEx0LG5QdD0oZnVuY3Rpb24oKXt0cnl7dmFyIHQ9ZVB0KE9iamVjdCwiZGVmaW5lUHJvcGVydHkiKTtyZXR1cm4gdCh7fSwiIix7fSksdH1jYXRjaCh0KXt9fSkoKSxpUHQ9blB0O3ZhciByUHQ9ZnVuY3Rpb24gb1B0KHQsZSxuKXsiX19wcm90b19fIj09ZSYmaVB0P2lQdCh0LGUse2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwLHZhbHVlOm4sd3JpdGFibGU6ITB9KTp0W2VdPW59LGFQdD1yUHQsc1B0PUhBdCxsUHQ9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTt2YXIgY1B0PWZ1bmN0aW9uIHVQdCh0LGUsbil7dmFyIGk9dFtlXTtsUHQuY2FsbCh0LGUpJiZzUHQoaSxuKSYmKHZvaWQgMCE9PW58fGUgaW4gdCl8fGFQdCh0LGUsbil9LGhQdD1jUHQsZFB0PXJQdDt2YXIgcFB0PWZ1bmN0aW9uIGZQdCh0LGUsbixpKXt2YXIgcj0hbjtufHwobj17fSk7Zm9yKHZhciBvPS0xLGE9ZS5sZW5ndGg7KytvPGE7KXt2YXIgcz1lW29dLGw9aT9pKG5bc10sdFtzXSxzLG4sdCk6dm9pZCAwO3ZvaWQgMD09PWwmJihsPXRbc10pLHI/ZFB0KG4scyxsKTpoUHQobixzLGwpfXJldHVybiBufTt2YXIgbVB0PWZ1bmN0aW9uIGdQdCh0LGUpe2Zvcih2YXIgbj0tMSxpPUFycmF5KHQpOysrbjx0OylpW25dPWUobik7cmV0dXJuIGl9O3ZhciBfUHQ9ZnVuY3Rpb24geVB0KHQpe3JldHVybiBudWxsIT10JiYib2JqZWN0Ij09dHlwZW9mIHR9LHZQdD1ra3QsYlB0PV9QdDt2YXIgeFB0PWZ1bmN0aW9uIHdQdCh0KXtyZXR1cm4gYlB0KHQpJiYiW29iamVjdCBBcmd1bWVudHNdIj09dlB0KHQpfSxTUHQ9X1B0LE1QdD1PYmplY3QucHJvdG90eXBlLEVQdD1NUHQuaGFzT3duUHJvcGVydHksVFB0PU1QdC5wcm9wZXJ0eUlzRW51bWVyYWJsZSxDUHQ9eFB0KChmdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHN9KSgpKT94UHQ6ZnVuY3Rpb24odCl7cmV0dXJuIFNQdCh0KSYmRVB0LmNhbGwodCwiY2FsbGVlIikmJiFUUHQuY2FsbCh0LCJjYWxsZWUiKX0sQVB0PUFycmF5LmlzQXJyYXksa1B0PXtleHBvcnRzOnt9fTt2YXIgTFB0PWZ1bmN0aW9uIFBQdCgpe3JldHVybiExfTshKGZ1bmN0aW9uKHQsZSl7dmFyIG49ZSYmIWUubm9kZVR5cGUmJmUsaT1uJiZ0JiYhdC5ub2RlVHlwZSYmdCxyPWkmJmkuZXhwb3J0cz09PW4/X2t0LkJ1ZmZlcjp2b2lkIDA7dC5leHBvcnRzPShyP3IuaXNCdWZmZXI6dm9pZCAwKXx8TFB0fSkoa1B0LGtQdC5leHBvcnRzKTt2YXIgTlB0PS9eKD86MHxbMS05XVxkKikkLzt2YXIgSVB0PWZ1bmN0aW9uIFJQdCh0LGUpe3ZhciBuPXR5cGVvZiB0O3JldHVybiEhKGU9bnVsbD09ZT85MDA3MTk5MjU0NzQwOTkxOmUpJiYoIm51bWJlciI9PW58fCJzeW1ib2wiIT1uJiZOUHQudGVzdCh0KSkmJnQ+LTEmJnQlMT09MCYmdDxlfTt2YXIgT1B0PWZ1bmN0aW9uIHpQdCh0KXtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIHQmJnQ+LTEmJnQlMT09MCYmdDw9OTAwNzE5OTI1NDc0MDk5MX0sRFB0PWtrdCxCUHQ9T1B0LEhQdD1fUHQsRlB0PXt9O0ZQdFsiW29iamVjdCBGbG9hdDMyQXJyYXldIl09RlB0WyJbb2JqZWN0IEZsb2F0NjRBcnJheV0iXT1GUHRbIltvYmplY3QgSW50OEFycmF5XSJdPUZQdFsiW29iamVjdCBJbnQxNkFycmF5XSJdPUZQdFsiW29iamVjdCBJbnQzMkFycmF5XSJdPUZQdFsiW29iamVjdCBVaW50OEFycmF5XSJdPUZQdFsiW29iamVjdCBVaW50OENsYW1wZWRBcnJheV0iXT1GUHRbIltvYmplY3QgVWludDE2QXJyYXldIl09RlB0WyJbb2JqZWN0IFVpbnQzMkFycmF5XSJdPSEwLEZQdFsiW29iamVjdCBBcmd1bWVudHNdIl09RlB0WyJbb2JqZWN0IEFycmF5XSJdPUZQdFsiW29iamVjdCBBcnJheUJ1ZmZlcl0iXT1GUHRbIltvYmplY3QgQm9vbGVhbl0iXT1GUHRbIltvYmplY3QgRGF0YVZpZXddIl09RlB0WyJbb2JqZWN0IERhdGVdIl09RlB0WyJbb2JqZWN0IEVycm9yXSJdPUZQdFsiW29iamVjdCBGdW5jdGlvbl0iXT1GUHRbIltvYmplY3QgTWFwXSJdPUZQdFsiW29iamVjdCBOdW1iZXJdIl09RlB0WyJbb2JqZWN0IE9iamVjdF0iXT1GUHRbIltvYmplY3QgUmVnRXhwXSJdPUZQdFsiW29iamVjdCBTZXRdIl09RlB0WyJbb2JqZWN0IFN0cmluZ10iXT1GUHRbIltvYmplY3QgV2Vha01hcF0iXT0hMTt2YXIgVlB0PWZ1bmN0aW9uIFVQdCh0KXtyZXR1cm4gSFB0KHQpJiZCUHQodC5sZW5ndGgpJiYhIUZQdFtEUHQodCldfTt2YXIgalB0PWZ1bmN0aW9uIEdQdCh0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIHQoZSl9fSxXUHQ9e2V4cG9ydHM6e319OyEoZnVuY3Rpb24odCxlKXt2YXIgbj1lJiYhZS5ub2RlVHlwZSYmZSxpPW4mJnQmJiF0Lm5vZGVUeXBlJiZ0LHI9aSYmaS5leHBvcnRzPT09biYmbWt0LnByb2Nlc3Msbz0oZnVuY3Rpb24oKXt0cnl7dmFyIHQ9aSYmaS5yZXF1aXJlJiZpLnJlcXVpcmUoInV0aWwiKS50eXBlcztyZXR1cm4gdHx8ciYmci5iaW5kaW5nJiZyLmJpbmRpbmcoInV0aWwiKX1jYXRjaCh0KXt9fSkoKTt0LmV4cG9ydHM9b30pKFdQdCxXUHQuZXhwb3J0cyk7dmFyIHFQdD1WUHQsWVB0PVdQdC5leHBvcnRzLFhQdD1ZUHQmJllQdC5pc1R5cGVkQXJyYXksJFB0PVhQdD9qUHQoWFB0KTpxUHQsS1B0PW1QdCxaUHQ9Q1B0LEpQdD1BUHQsUVB0PWtQdC5leHBvcnRzLHROdD1JUHQsZU50PSRQdCxuTnQ9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTt2YXIgaU50PWZ1bmN0aW9uIHJOdCh0LGUpe3ZhciBuPUpQdCh0KSxpPSFuJiZaUHQodCkscj0hbiYmIWkmJlFQdCh0KSxvPSFuJiYhaSYmIXImJmVOdCh0KSxhPW58fGl8fHJ8fG8scz1hP0tQdCh0Lmxlbmd0aCxTdHJpbmcpOltdLGw9cy5sZW5ndGg7Zm9yKHZhciBjIGluIHQpIWUmJiFuTnQuY2FsbCh0LGMpfHxhJiYoImxlbmd0aCI9PWN8fHImJigib2Zmc2V0Ij09Y3x8InBhcmVudCI9PWMpfHxvJiYoImJ1ZmZlciI9PWN8fCJieXRlTGVuZ3RoIj09Y3x8ImJ5dGVPZmZzZXQiPT1jKXx8dE50KGMsbCkpfHxzLnB1c2goYyk7cmV0dXJuIHN9LG9OdD1PYmplY3QucHJvdG90eXBlO3ZhciBhTnQ9ZnVuY3Rpb24gc050KHQpe3ZhciBlPXQmJnQuY29uc3RydWN0b3I7cmV0dXJuIHQ9PT0oImZ1bmN0aW9uIj09dHlwZW9mIGUmJmUucHJvdG90eXBlfHxvTnQpfTt2YXIgbE50PWZ1bmN0aW9uIGNOdCh0LGUpe3JldHVybiBmdW5jdGlvbihuKXtyZXR1cm4gdChlKG4pKX19LHVOdD1sTnQoT2JqZWN0LmtleXMsT2JqZWN0KSxoTnQ9YU50LGROdD11TnQscE50PU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7dmFyIGZOdD1mdW5jdGlvbiBtTnQodCl7aWYoIWhOdCh0KSlyZXR1cm4gZE50KHQpO3ZhciBlPVtdO2Zvcih2YXIgbiBpbiBPYmplY3QodCkpcE50LmNhbGwodCxuKSYmImNvbnN0cnVjdG9yIiE9biYmZS5wdXNoKG4pO3JldHVybiBlfSxnTnQ9emt0LF9OdD1PUHQ7dmFyIHlOdD1mdW5jdGlvbiB2TnQodCl7cmV0dXJuIG51bGwhPXQmJl9OdCh0Lmxlbmd0aCkmJiFnTnQodCl9LGJOdD1pTnQseE50PWZOdCx3TnQ9eU50O3ZhciBTTnQ9ZnVuY3Rpb24gTU50KHQpe3JldHVybiB3TnQodCk/Yk50KHQpOnhOdCh0KX0sRU50PXBQdCxUTnQ9U050O3ZhciBDTnQ9ZnVuY3Rpb24gQU50KHQsZSl7cmV0dXJuIHQmJkVOdChlLFROdChlKSx0KX07dmFyIGtOdD1Qa3QsTE50PWFOdCxQTnQ9ZnVuY3Rpb24gTk50KHQpe3ZhciBlPVtdO2lmKG51bGwhPXQpZm9yKHZhciBuIGluIE9iamVjdCh0KSllLnB1c2gobik7cmV0dXJuIGV9LElOdD1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O3ZhciBSTnQ9aU50LE9OdD1mdW5jdGlvbiB6TnQodCl7aWYoIWtOdCh0KSlyZXR1cm4gUE50KHQpO3ZhciBlPUxOdCh0KSxuPVtdO2Zvcih2YXIgaSBpbiB0KSgiY29uc3RydWN0b3IiIT1pfHwhZSYmSU50LmNhbGwodCxpKSkmJm4ucHVzaChpKTtyZXR1cm4gbn0sRE50PXlOdDt2YXIgQk50PWZ1bmN0aW9uIEhOdCh0KXtyZXR1cm4gRE50KHQpP1JOdCh0LCEwKTpPTnQodCl9LEZOdD1wUHQsVk50PUJOdDt2YXIgVU50PWZ1bmN0aW9uIGpOdCh0LGUpe3JldHVybiB0JiZGTnQoZSxWTnQoZSksdCl9LEdOdD17ZXhwb3J0czp7fX07IShmdW5jdGlvbih0LGUpe3ZhciBuPWUmJiFlLm5vZGVUeXBlJiZlLGk9biYmdCYmIXQubm9kZVR5cGUmJnQscj1pJiZpLmV4cG9ydHM9PT1uP19rdC5CdWZmZXI6dm9pZCAwLG89cj9yLmFsbG9jVW5zYWZlOnZvaWQgMDt0LmV4cG9ydHM9ZnVuY3Rpb24gYSh0LGUpe2lmKGUpcmV0dXJuIHQuc2xpY2UoKTt2YXIgbj10Lmxlbmd0aCxpPW8/byhuKTpuZXcgdC5jb25zdHJ1Y3RvcihuKTtyZXR1cm4gdC5jb3B5KGkpLGl9fSkoR050LEdOdC5leHBvcnRzKTt2YXIgV050PWZ1bmN0aW9uIHFOdCh0LGUpe3ZhciBuPS0xLGk9dC5sZW5ndGg7Zm9yKGV8fChlPUFycmF5KGkpKTsrK248aTspZVtuXT10W25dO3JldHVybiBlfTt2YXIgWU50PWZ1bmN0aW9uIFhOdCh0LGUpe2Zvcih2YXIgbj0tMSxpPW51bGw9PXQ/MDp0Lmxlbmd0aCxyPTAsbz1bXTsrK248aTspe3ZhciBhPXRbbl07ZShhLG4sdCkmJihvW3IrK109YSl9cmV0dXJuIG99O3ZhciAkTnQ9ZnVuY3Rpb24gS050KCl7cmV0dXJuW119LFpOdD1ZTnQsSk50PU9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUsUU50PU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMsdEl0PVFOdD9mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD9bXToodD1PYmplY3QodCksWk50KFFOdCh0KSwoZnVuY3Rpb24oZSl7cmV0dXJuIEpOdC5jYWxsKHQsZSl9KSkpfTokTnQsZUl0PXBQdCxuSXQ9dEl0O3ZhciBpSXQ9ZnVuY3Rpb24gckl0KHQsZSl7cmV0dXJuIGVJdCh0LG5JdCh0KSxlKX07dmFyIG9JdD1mdW5jdGlvbiBhSXQodCxlKXtmb3IodmFyIG49LTEsaT1lLmxlbmd0aCxyPXQubGVuZ3RoOysrbjxpOyl0W3Irbl09ZVtuXTtyZXR1cm4gdH0sc0l0PWxOdChPYmplY3QuZ2V0UHJvdG90eXBlT2YsT2JqZWN0KSxsSXQ9b0l0LGNJdD1zSXQsdUl0PXRJdCxoSXQ9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scz9mdW5jdGlvbih0KXtmb3IodmFyIGU9W107dDspbEl0KGUsdUl0KHQpKSx0PWNJdCh0KTtyZXR1cm4gZX06JE50LGRJdD1wUHQscEl0PWhJdDt2YXIgZkl0PWZ1bmN0aW9uIG1JdCh0LGUpe3JldHVybiBkSXQodCxwSXQodCksZSl9LGdJdD1vSXQsX0l0PUFQdDt2YXIgeUl0PWZ1bmN0aW9uIHZJdCh0LGUsbil7dmFyIGk9ZSh0KTtyZXR1cm4gX0l0KHQpP2k6Z0l0KGksbih0KSl9LGJJdD15SXQseEl0PXRJdCx3SXQ9U050O3ZhciBTSXQ9ZnVuY3Rpb24gTUl0KHQpe3JldHVybiBiSXQodCx3SXQseEl0KX0sRUl0PXlJdCxUSXQ9aEl0LENJdD1CTnQ7dmFyIEFJdD1mdW5jdGlvbiBrSXQodCl7cmV0dXJuIEVJdCh0LENJdCxUSXQpfSxMSXQ9dEx0KF9rdCwiRGF0YVZpZXciKSxQSXQ9dEx0KF9rdCwiUHJvbWlzZSIpLE5JdD10THQoX2t0LCJTZXQiKSxJSXQ9TEl0LFJJdD1uTHQsT0l0PVBJdCx6SXQ9Tkl0LERJdD10THQoX2t0LCJXZWFrTWFwIiksQkl0PWtrdCxISXQ9Vmt0LEZJdD0iW29iamVjdCBNYXBdIixWSXQ9IltvYmplY3QgUHJvbWlzZV0iLFVJdD0iW29iamVjdCBTZXRdIixqSXQ9IltvYmplY3QgV2Vha01hcF0iLEdJdD0iW29iamVjdCBEYXRhVmlld10iLFdJdD1ISXQoSUl0KSxxSXQ9SEl0KFJJdCksWUl0PUhJdChPSXQpLFhJdD1ISXQoekl0KSwkSXQ9SEl0KERJdCksS0l0PUJJdDsoSUl0JiZLSXQobmV3IElJdChuZXcgQXJyYXlCdWZmZXIoMSkpKSE9R0l0fHxSSXQmJktJdChuZXcgUkl0KSE9Rkl0fHxPSXQmJktJdChPSXQucmVzb2x2ZSgpKSE9Vkl0fHx6SXQmJktJdChuZXcgekl0KSE9VUl0fHxESXQmJktJdChuZXcgREl0KSE9akl0KSYmKEtJdD1mdW5jdGlvbih0KXt2YXIgZT1CSXQodCksbj0iW29iamVjdCBPYmplY3RdIj09ZT90LmNvbnN0cnVjdG9yOnZvaWQgMCxpPW4/SEl0KG4pOiIiO2lmKGkpc3dpdGNoKGkpe2Nhc2UgV0l0OnJldHVybiBHSXQ7Y2FzZSBxSXQ6cmV0dXJuIEZJdDtjYXNlIFlJdDpyZXR1cm4gVkl0O2Nhc2UgWEl0OnJldHVybiBVSXQ7Y2FzZSAkSXQ6cmV0dXJuIGpJdH1yZXR1cm4gZX0pO3ZhciBaSXQ9S0l0LEpJdD1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O3ZhciBRSXQ9ZnVuY3Rpb24gdFJ0KHQpe3ZhciBlPXQubGVuZ3RoLG49bmV3IHQuY29uc3RydWN0b3IoZSk7cmV0dXJuIGUmJiJzdHJpbmciPT10eXBlb2YgdFswXSYmSkl0LmNhbGwodCwiaW5kZXgiKSYmKG4uaW5kZXg9dC5pbmRleCxuLmlucHV0PXQuaW5wdXQpLG59LGVSdD1fa3QuVWludDhBcnJheSxuUnQ9ZVJ0O3ZhciBpUnQ9ZnVuY3Rpb24gclJ0KHQpe3ZhciBlPW5ldyB0LmNvbnN0cnVjdG9yKHQuYnl0ZUxlbmd0aCk7cmV0dXJuIG5ldyBuUnQoZSkuc2V0KG5ldyBuUnQodCkpLGV9LG9SdD1pUnQ7dmFyIGFSdD0vXHcqJC87dmFyIHNSdD15a3Q/eWt0LnByb3RvdHlwZTp2b2lkIDAsbFJ0PXNSdD9zUnQudmFsdWVPZjp2b2lkIDA7dmFyIGNSdD1pUnQ7dmFyIHVSdD1mdW5jdGlvbiBoUnQodCxlKXt2YXIgbj1lP2NSdCh0LmJ1ZmZlcik6dC5idWZmZXI7cmV0dXJuIG5ldyB0LmNvbnN0cnVjdG9yKG4sdC5ieXRlT2Zmc2V0LHQubGVuZ3RoKX0sZFJ0PWlSdCxwUnQ9ZnVuY3Rpb24gZlJ0KHQsZSl7dmFyIG49ZT9vUnQodC5idWZmZXIpOnQuYnVmZmVyO3JldHVybiBuZXcgdC5jb25zdHJ1Y3RvcihuLHQuYnl0ZU9mZnNldCx0LmJ5dGVMZW5ndGgpfSxtUnQ9ZnVuY3Rpb24gZ1J0KHQpe3ZhciBlPW5ldyB0LmNvbnN0cnVjdG9yKHQuc291cmNlLGFSdC5leGVjKHQpKTtyZXR1cm4gZS5sYXN0SW5kZXg9dC5sYXN0SW5kZXgsZX0sX1J0PWZ1bmN0aW9uIHlSdCh0KXtyZXR1cm4gbFJ0P09iamVjdChsUnQuY2FsbCh0KSk6e319LHZSdD11UnQ7dmFyIGJSdD1mdW5jdGlvbiB4UnQodCxlLG4pe3ZhciBpPXQuY29uc3RydWN0b3I7c3dpdGNoKGUpe2Nhc2UiW29iamVjdCBBcnJheUJ1ZmZlcl0iOnJldHVybiBkUnQodCk7Y2FzZSJbb2JqZWN0IEJvb2xlYW5dIjpjYXNlIltvYmplY3QgRGF0ZV0iOnJldHVybiBuZXcgaSgrdCk7Y2FzZSJbb2JqZWN0IERhdGFWaWV3XSI6cmV0dXJuIHBSdCh0LG4pO2Nhc2UiW29iamVjdCBGbG9hdDMyQXJyYXldIjpjYXNlIltvYmplY3QgRmxvYXQ2NEFycmF5XSI6Y2FzZSJbb2JqZWN0IEludDhBcnJheV0iOmNhc2UiW29iamVjdCBJbnQxNkFycmF5XSI6Y2FzZSJbb2JqZWN0IEludDMyQXJyYXldIjpjYXNlIltvYmplY3QgVWludDhBcnJheV0iOmNhc2UiW29iamVjdCBVaW50OENsYW1wZWRBcnJheV0iOmNhc2UiW29iamVjdCBVaW50MTZBcnJheV0iOmNhc2UiW29iamVjdCBVaW50MzJBcnJheV0iOnJldHVybiB2UnQodCxuKTtjYXNlIltvYmplY3QgTWFwXSI6cmV0dXJuIG5ldyBpO2Nhc2UiW29iamVjdCBOdW1iZXJdIjpjYXNlIltvYmplY3QgU3RyaW5nXSI6cmV0dXJuIG5ldyBpKHQpO2Nhc2UiW29iamVjdCBSZWdFeHBdIjpyZXR1cm4gbVJ0KHQpO2Nhc2UiW29iamVjdCBTZXRdIjpyZXR1cm4gbmV3IGk7Y2FzZSJbb2JqZWN0IFN5bWJvbF0iOnJldHVybiBfUnQodCl9fSx3UnQ9UGt0LFNSdD1PYmplY3QuY3JlYXRlLE1SdD0oZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiBmdW5jdGlvbihlKXtpZighd1J0KGUpKXJldHVybnt9O2lmKFNSdClyZXR1cm4gU1J0KGUpO3QucHJvdG90eXBlPWU7dmFyIG49bmV3IHQ7cmV0dXJuIHQucHJvdG90eXBlPXZvaWQgMCxufX0pKCksRVJ0PU1SdCxUUnQ9c0l0LENSdD1hTnQ7dmFyIEFSdD1mdW5jdGlvbiBrUnQodCl7cmV0dXJuImZ1bmN0aW9uIiE9dHlwZW9mIHQuY29uc3RydWN0b3J8fENSdCh0KT97fTpFUnQoVFJ0KHQpKX0sTFJ0PVpJdCxQUnQ9X1B0O3ZhciBOUnQ9ZnVuY3Rpb24gSVJ0KHQpe3JldHVybiBQUnQodCkmJiJbb2JqZWN0IE1hcF0iPT1MUnQodCl9LFJSdD1XUHQuZXhwb3J0cyxPUnQ9UlJ0JiZSUnQuaXNNYXAselJ0PU9SdD9qUHQoT1J0KTpOUnQsRFJ0PVpJdCxCUnQ9X1B0O3ZhciBIUnQ9ZnVuY3Rpb24gRlJ0KHQpe3JldHVybiBCUnQodCkmJiJbb2JqZWN0IFNldF0iPT1EUnQodCl9LFZSdD1XUHQuZXhwb3J0cyxVUnQ9VlJ0JiZWUnQuaXNTZXQsalJ0PVVSdD9qUHQoVVJ0KTpIUnQsR1J0PUpMdCxXUnQ9UUx0LHFSdD1jUHQsWVJ0PUNOdCxYUnQ9VU50LCRSdD1HTnQuZXhwb3J0cyxLUnQ9V050LFpSdD1pSXQsSlJ0PWZJdCxRUnQ9U0l0LHRPdD1BSXQsZU90PVpJdCxuT3Q9UUl0LGlPdD1iUnQsck90PUFSdCxvT3Q9QVB0LGFPdD1rUHQuZXhwb3J0cyxzT3Q9elJ0LGxPdD1Qa3QsY090PWpSdCx1T3Q9U050LGhPdD1CTnQsZE90PSJbb2JqZWN0IEFyZ3VtZW50c10iLHBPdD0iW29iamVjdCBGdW5jdGlvbl0iLGZPdD0iW29iamVjdCBPYmplY3RdIixtT3Q9e307bU90W2RPdF09bU90WyJbb2JqZWN0IEFycmF5XSJdPW1PdFsiW29iamVjdCBBcnJheUJ1ZmZlcl0iXT1tT3RbIltvYmplY3QgRGF0YVZpZXddIl09bU90WyJbb2JqZWN0IEJvb2xlYW5dIl09bU90WyJbb2JqZWN0IERhdGVdIl09bU90WyJbb2JqZWN0IEZsb2F0MzJBcnJheV0iXT1tT3RbIltvYmplY3QgRmxvYXQ2NEFycmF5XSJdPW1PdFsiW29iamVjdCBJbnQ4QXJyYXldIl09bU90WyJbb2JqZWN0IEludDE2QXJyYXldIl09bU90WyJbb2JqZWN0IEludDMyQXJyYXldIl09bU90WyJbb2JqZWN0IE1hcF0iXT1tT3RbIltvYmplY3QgTnVtYmVyXSJdPW1PdFtmT3RdPW1PdFsiW29iamVjdCBSZWdFeHBdIl09bU90WyJbb2JqZWN0IFNldF0iXT1tT3RbIltvYmplY3QgU3RyaW5nXSJdPW1PdFsiW29iamVjdCBTeW1ib2xdIl09bU90WyJbb2JqZWN0IFVpbnQ4QXJyYXldIl09bU90WyJbb2JqZWN0IFVpbnQ4Q2xhbXBlZEFycmF5XSJdPW1PdFsiW29iamVjdCBVaW50MTZBcnJheV0iXT1tT3RbIltvYmplY3QgVWludDMyQXJyYXldIl09ITAsbU90WyJbb2JqZWN0IEVycm9yXSJdPW1PdFtwT3RdPW1PdFsiW29iamVjdCBXZWFrTWFwXSJdPSExO3ZhciBnT3Q9ZnVuY3Rpb24gdChlLG4saSxyLG8sYSl7dmFyIHMsbD0xJm4sYz0yJm4sdT00Jm47aWYoaSYmKHM9bz9pKGUscixvLGEpOmkoZSkpLHZvaWQgMCE9PXMpcmV0dXJuIHM7aWYoIWxPdChlKSlyZXR1cm4gZTt2YXIgaD1vT3QoZSk7aWYoaCl7aWYocz1uT3QoZSksIWwpcmV0dXJuIEtSdChlLHMpfWVsc2V7dmFyIGQ9ZU90KGUpLHA9ZD09cE90fHwiW29iamVjdCBHZW5lcmF0b3JGdW5jdGlvbl0iPT1kO2lmKGFPdChlKSlyZXR1cm4gJFJ0KGUsbCk7aWYoZD09Zk90fHxkPT1kT3R8fHAmJiFvKXtpZihzPWN8fHA/e306ck90KGUpLCFsKXJldHVybiBjP0pSdChlLFhSdChzLGUpKTpaUnQoZSxZUnQocyxlKSl9ZWxzZXtpZighbU90W2RdKXJldHVybiBvP2U6e307cz1pT3QoZSxkLGwpfX1hfHwoYT1uZXcgR1J0KTt2YXIgZj1hLmdldChlKTtpZihmKXJldHVybiBmO2Euc2V0KGUscyksY090KGUpP2UuZm9yRWFjaCgoZnVuY3Rpb24ocil7cy5hZGQodChyLG4saSxyLGUsYSkpfSkpOnNPdChlKSYmZS5mb3JFYWNoKChmdW5jdGlvbihyLG8pe3Muc2V0KG8sdChyLG4saSxvLGUsYSkpfSkpO3ZhciBtPWg/dm9pZCAwOih1P2M/dE90OlFSdDpjP2hPdDp1T3QpKGUpO3JldHVybiBXUnQobXx8ZSwoZnVuY3Rpb24ocixvKXttJiYocj1lW289cl0pLHFSdChzLG8sdChyLG4saSxvLGUsYSkpfSkpLHN9LF9PdD1nT3Q7dmFyIHlPdD1mdW5jdGlvbiB2T3QodCl7cmV0dXJuIF9PdCh0LDQpfTt2YXIgYk90PWZ1bmN0aW9uIHhPdCh0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19O3ZhciB3T3Q9KGZ1bmN0aW9uIFNPdCh0KXtyZXR1cm4gZnVuY3Rpb24oZSxuLGkpe2Zvcih2YXIgcj0tMSxvPU9iamVjdChlKSxhPWkoZSkscz1hLmxlbmd0aDtzLS07KXt2YXIgbD1hW3Q/czorK3JdO2lmKCExPT09bihvW2xdLGwsbykpYnJlYWt9cmV0dXJuIGV9fSkoKSxNT3Q9d090LEVPdD1TTnQ7dmFyIFRPdD1mdW5jdGlvbiBDT3QodCxlKXtyZXR1cm4gdCYmTU90KHQsZSxFT3QpfSxBT3Q9eU50O3ZhciBrT3Q9KGZ1bmN0aW9uIExPdCh0LGUpe3JldHVybiBmdW5jdGlvbihuLGkpe2lmKG51bGw9PW4pcmV0dXJuIG47aWYoIUFPdChuKSlyZXR1cm4gdChuLGkpO2Zvcih2YXIgcj1uLmxlbmd0aCxvPWU/cjotMSxhPU9iamVjdChuKTsoZT9vLS06KytvPHIpJiYhMSE9PWkoYVtvXSxvLGEpOyk7cmV0dXJuIG59fSkoVE90KTt2YXIgUE90PWZ1bmN0aW9uIE5PdCh0KXtyZXR1cm4gdH0sSU90PVBPdDt2YXIgUk90PWZ1bmN0aW9uIE9PdCh0KXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdD90OklPdH0sek90PVFMdCxET3Q9a090LEJPdD1ST3QsSE90PUFQdDt2YXIgRk90PWZ1bmN0aW9uIFZPdCh0LGUpe3JldHVybihIT3QodCk/ek90OkRPdCkodCxCT3QoZSkpfSxVT3Q9Rk90LGpPdD1rT3Q7dmFyIEdPdD1mdW5jdGlvbiBXT3QodCxlKXt2YXIgbj1bXTtyZXR1cm4gak90KHQsKGZ1bmN0aW9uKHQsaSxyKXtlKHQsaSxyKSYmbi5wdXNoKHQpfSkpLG59O3ZhciBxT3Q9Vkx0LFlPdD1mdW5jdGlvbiBYT3QodCl7cmV0dXJuIHRoaXMuX19kYXRhX18uaGFzKHQpfTtmdW5jdGlvbiAkT3QodCl7dmFyIGU9LTEsbj1udWxsPT10PzA6dC5sZW5ndGg7Zm9yKHRoaXMuX19kYXRhX189bmV3IHFPdDsrK2U8bjspdGhpcy5hZGQodFtlXSl9JE90LnByb3RvdHlwZS5hZGQ9JE90LnByb3RvdHlwZS5wdXNoPWZ1bmN0aW9uIEtPdCh0KXtyZXR1cm4gdGhpcy5fX2RhdGFfXy5zZXQodCwiX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfXyIpLHRoaXN9LCRPdC5wcm90b3R5cGUuaGFzPVlPdDt2YXIgWk90PSRPdDt2YXIgSk90PWZ1bmN0aW9uIFFPdCh0LGUpe3JldHVybiB0LmhhcyhlKX0sdHp0PVpPdCxlenQ9ZnVuY3Rpb24gbnp0KHQsZSl7Zm9yKHZhciBuPS0xLGk9bnVsbD09dD8wOnQubGVuZ3RoOysrbjxpOylpZihlKHRbbl0sbix0KSlyZXR1cm4hMDtyZXR1cm4hMX0saXp0PUpPdDt2YXIgcnp0PWZ1bmN0aW9uIG96dCh0LGUsbixpLHIsbyl7dmFyIGE9MSZuLHM9dC5sZW5ndGgsbD1lLmxlbmd0aDtpZihzIT1sJiYhKGEmJmw+cykpcmV0dXJuITE7dmFyIGM9by5nZXQodCksdT1vLmdldChlKTtpZihjJiZ1KXJldHVybiBjPT1lJiZ1PT10O3ZhciBoPS0xLGQ9ITAscD0yJm4/bmV3IHR6dDp2b2lkIDA7Zm9yKG8uc2V0KHQsZSksby5zZXQoZSx0KTsrK2g8czspe3ZhciBmPXRbaF0sbT1lW2hdO2lmKGkpdmFyIGc9YT9pKG0sZixoLGUsdCxvKTppKGYsbSxoLHQsZSxvKTtpZih2b2lkIDAhPT1nKXtpZihnKWNvbnRpbnVlO2Q9ITE7YnJlYWt9aWYocCl7aWYoIWV6dChlLChmdW5jdGlvbih0LGUpe2lmKCFpenQocCxlKSYmKGY9PT10fHxyKGYsdCxuLGksbykpKXJldHVybiBwLnB1c2goZSl9KSkpe2Q9ITE7YnJlYWt9fWVsc2UgaWYoZiE9PW0mJiFyKGYsbSxuLGksbykpe2Q9ITE7YnJlYWt9fXJldHVybiBvLmRlbGV0ZSh0KSxvLmRlbGV0ZShlKSxkfTt2YXIgYXp0PWZ1bmN0aW9uIHN6dCh0KXt2YXIgZT0tMSxuPUFycmF5KHQuc2l6ZSk7cmV0dXJuIHQuZm9yRWFjaCgoZnVuY3Rpb24odCl7blsrK2VdPXR9KSksbn0sbHp0PWVSdCxjenQ9SEF0LHV6dD1yenQsaHp0PWZ1bmN0aW9uIGR6dCh0KXt2YXIgZT0tMSxuPUFycmF5KHQuc2l6ZSk7cmV0dXJuIHQuZm9yRWFjaCgoZnVuY3Rpb24odCxpKXtuWysrZV09W2ksdF19KSksbn0scHp0PWF6dCxmenQ9eWt0P3lrdC5wcm90b3R5cGU6dm9pZCAwLG16dD1menQ/Znp0LnZhbHVlT2Y6dm9pZCAwO3ZhciBnenQ9U0l0LF96dD1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O3ZhciB5enQ9Skx0LHZ6dD1yenQsYnp0PWZ1bmN0aW9uIHh6dCh0LGUsbixpLHIsbyxhKXtzd2l0Y2gobil7Y2FzZSJbb2JqZWN0IERhdGFWaWV3XSI6aWYodC5ieXRlTGVuZ3RoIT1lLmJ5dGVMZW5ndGh8fHQuYnl0ZU9mZnNldCE9ZS5ieXRlT2Zmc2V0KXJldHVybiExO3Q9dC5idWZmZXIsZT1lLmJ1ZmZlcjtjYXNlIltvYmplY3QgQXJyYXlCdWZmZXJdIjpyZXR1cm4hKHQuYnl0ZUxlbmd0aCE9ZS5ieXRlTGVuZ3RofHwhbyhuZXcgbHp0KHQpLG5ldyBsenQoZSkpKTtjYXNlIltvYmplY3QgQm9vbGVhbl0iOmNhc2UiW29iamVjdCBEYXRlXSI6Y2FzZSJbb2JqZWN0IE51bWJlcl0iOnJldHVybiBjenQoK3QsK2UpO2Nhc2UiW29iamVjdCBFcnJvcl0iOnJldHVybiB0Lm5hbWU9PWUubmFtZSYmdC5tZXNzYWdlPT1lLm1lc3NhZ2U7Y2FzZSJbb2JqZWN0IFJlZ0V4cF0iOmNhc2UiW29iamVjdCBTdHJpbmddIjpyZXR1cm4gdD09ZSsiIjtjYXNlIltvYmplY3QgTWFwXSI6dmFyIHM9aHp0O2Nhc2UiW29iamVjdCBTZXRdIjppZihzfHwocz1wenQpLHQuc2l6ZSE9ZS5zaXplJiYhKDEmaSkpcmV0dXJuITE7dmFyIGw9YS5nZXQodCk7aWYobClyZXR1cm4gbD09ZTtpfD0yLGEuc2V0KHQsZSk7dmFyIGM9dXp0KHModCkscyhlKSxpLHIsbyxhKTtyZXR1cm4gYS5kZWxldGUodCksYztjYXNlIltvYmplY3QgU3ltYm9sXSI6aWYobXp0KXJldHVybiBtenQuY2FsbCh0KT09bXp0LmNhbGwoZSl9cmV0dXJuITF9LHd6dD1mdW5jdGlvbiBTenQodCxlLG4saSxyLG8pe3ZhciBhPTEmbixzPWd6dCh0KSxsPXMubGVuZ3RoO2lmKGwhPWd6dChlKS5sZW5ndGgmJiFhKXJldHVybiExO2Zvcih2YXIgYz1sO2MtLTspe3ZhciB1PXNbY107aWYoIShhP3UgaW4gZTpfenQuY2FsbChlLHUpKSlyZXR1cm4hMX12YXIgaD1vLmdldCh0KSxkPW8uZ2V0KGUpO2lmKGgmJmQpcmV0dXJuIGg9PWUmJmQ9PXQ7dmFyIHA9ITA7by5zZXQodCxlKSxvLnNldChlLHQpO2Zvcih2YXIgZj1hOysrYzxsOyl7dmFyIG09dFt1PXNbY11dLGc9ZVt1XTtpZihpKXZhciBfPWE/aShnLG0sdSxlLHQsbyk6aShtLGcsdSx0LGUsbyk7aWYoISh2b2lkIDA9PT1fP209PT1nfHxyKG0sZyxuLGksbyk6Xykpe3A9ITE7YnJlYWt9Znx8KGY9ImNvbnN0cnVjdG9yIj09dSl9aWYocCYmIWYpe3ZhciB5PXQuY29uc3RydWN0b3Isdj1lLmNvbnN0cnVjdG9yO3k9PXZ8fCEoImNvbnN0cnVjdG9yImluIHQpfHwhKCJjb25zdHJ1Y3RvciJpbiBlKXx8ImZ1bmN0aW9uIj09dHlwZW9mIHkmJnkgaW5zdGFuY2VvZiB5JiYiZnVuY3Rpb24iPT10eXBlb2YgdiYmdiBpbnN0YW5jZW9mIHZ8fChwPSExKX1yZXR1cm4gby5kZWxldGUodCksby5kZWxldGUoZSkscH0sTXp0PVpJdCxFenQ9QVB0LFR6dD1rUHQuZXhwb3J0cyxDenQ9JFB0LEF6dD0iW29iamVjdCBBcmd1bWVudHNdIixrenQ9IltvYmplY3QgQXJyYXldIixMenQ9IltvYmplY3QgT2JqZWN0XSIsUHp0PU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7dmFyIE56dD1mdW5jdGlvbiBJenQodCxlLG4saSxyLG8pe3ZhciBhPUV6dCh0KSxzPUV6dChlKSxsPWE/a3p0Ok16dCh0KSxjPXM/a3p0Ok16dChlKSx1PShsPWw9PUF6dD9MenQ6bCk9PUx6dCxoPShjPWM9PUF6dD9MenQ6Yyk9PUx6dCxkPWw9PWM7aWYoZCYmVHp0KHQpKXtpZighVHp0KGUpKXJldHVybiExO2E9ITAsdT0hMX1pZihkJiYhdSlyZXR1cm4gb3x8KG89bmV3IHl6dCksYXx8Q3p0KHQpP3Z6dCh0LGUsbixpLHIsbyk6Ynp0KHQsZSxsLG4saSxyLG8pO2lmKCEoMSZuKSl7dmFyIHA9dSYmUHp0LmNhbGwodCwiX193cmFwcGVkX18iKSxmPWgmJlB6dC5jYWxsKGUsIl9fd3JhcHBlZF9fIik7aWYocHx8Zil7dmFyIG09cD90LnZhbHVlKCk6dCxnPWY/ZS52YWx1ZSgpOmU7cmV0dXJuIG98fChvPW5ldyB5enQpLHIobSxnLG4saSxvKX19cmV0dXJuISFkJiYob3x8KG89bmV3IHl6dCksd3p0KHQsZSxuLGkscixvKSl9LFJ6dD1fUHQ7dmFyIE96dD1mdW5jdGlvbiB0KGUsbixpLHIsbyl7cmV0dXJuIGU9PT1ufHwobnVsbD09ZXx8bnVsbD09bnx8IVJ6dChlKSYmIVJ6dChuKT9lIT1lJiZuIT1uOk56dChlLG4saSxyLHQsbykpfSx6enQ9Skx0LER6dD1PenQ7dmFyIEJ6dD1Qa3Q7dmFyIEh6dD1mdW5jdGlvbiBGenQodCl7cmV0dXJuIHQ9PXQmJiFCenQodCl9LFZ6dD1IenQsVXp0PVNOdDt2YXIganp0PWZ1bmN0aW9uIEd6dCh0LGUpe3JldHVybiBmdW5jdGlvbihuKXtyZXR1cm4gbnVsbCE9biYmKG5bdF09PT1lJiYodm9pZCAwIT09ZXx8dCBpbiBPYmplY3QobikpKX19LFd6dD1mdW5jdGlvbiBxenQodCxlLG4saSl7dmFyIHI9bi5sZW5ndGgsbz1yLGE9IWk7aWYobnVsbD09dClyZXR1cm4hbztmb3IodD1PYmplY3QodCk7ci0tOyl7dmFyIHM9bltyXTtpZihhJiZzWzJdP3NbMV0hPT10W3NbMF1dOiEoc1swXWluIHQpKXJldHVybiExfWZvcig7KytyPG87KXt2YXIgbD0ocz1uW3JdKVswXSxjPXRbbF0sdT1zWzFdO2lmKGEmJnNbMl0pe2lmKHZvaWQgMD09PWMmJiEobCBpbiB0KSlyZXR1cm4hMX1lbHNle3ZhciBoPW5ldyB6enQ7aWYoaSl2YXIgZD1pKGMsdSxsLHQsZSxoKTtpZighKHZvaWQgMD09PWQ/RHp0KHUsYywzLGksaCk6ZCkpcmV0dXJuITF9fXJldHVybiEwfSxZenQ9ZnVuY3Rpb24gWHp0KHQpe2Zvcih2YXIgZT1VenQodCksbj1lLmxlbmd0aDtuLS07KXt2YXIgaT1lW25dLHI9dFtpXTtlW25dPVtpLHIsVnp0KHIpXX1yZXR1cm4gZX0sJHp0PWp6dDt2YXIgS3p0PWZ1bmN0aW9uIFp6dCh0KXt2YXIgZT1ZenQodCk7cmV0dXJuIDE9PWUubGVuZ3RoJiZlWzBdWzJdPyR6dChlWzBdWzBdLGVbMF1bMV0pOmZ1bmN0aW9uKG4pe3JldHVybiBuPT09dHx8V3p0KG4sdCxlKX19LEp6dD1ra3QsUXp0PV9QdDt2YXIgdER0PWZ1bmN0aW9uIGVEdCh0KXtyZXR1cm4ic3ltYm9sIj09dHlwZW9mIHR8fFF6dCh0KSYmIltvYmplY3QgU3ltYm9sXSI9PUp6dCh0KX0sbkR0PUFQdCxpRHQ9dER0LHJEdD0vXC58XFsoPzpbXltcXV0qfChbIiddKSg/Oig/IVwxKVteXFxdfFxcLikqP1wxKVxdLyxvRHQ9L15cdyokLzt2YXIgYUR0PWZ1bmN0aW9uIHNEdCh0LGUpe2lmKG5EdCh0KSlyZXR1cm4hMTt2YXIgbj10eXBlb2YgdDtyZXR1cm4hKCJudW1iZXIiIT1uJiYic3ltYm9sIiE9biYmImJvb2xlYW4iIT1uJiZudWxsIT10JiYhaUR0KHQpKXx8KG9EdC50ZXN0KHQpfHwhckR0LnRlc3QodCl8fG51bGwhPWUmJnQgaW4gT2JqZWN0KGUpKX0sbER0PVZMdDtmdW5jdGlvbiBjRHQodCxlKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdHx8bnVsbCE9ZSYmImZ1bmN0aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcigiRXhwZWN0ZWQgYSBmdW5jdGlvbiIpO3ZhciBuPWZ1bmN0aW9uKCl7dmFyIGk9YXJndW1lbnRzLHI9ZT9lLmFwcGx5KHRoaXMsaSk6aVswXSxvPW4uY2FjaGU7aWYoby5oYXMocikpcmV0dXJuIG8uZ2V0KHIpO3ZhciBhPXQuYXBwbHkodGhpcyxpKTtyZXR1cm4gbi5jYWNoZT1vLnNldChyLGEpfHxvLGF9O3JldHVybiBuLmNhY2hlPW5ldyhjRHQuQ2FjaGV8fGxEdCksbn1jRHQuQ2FjaGU9bER0O3ZhciB1RHQ9Y0R0O3ZhciBoRHQ9L1teLltcXV0rfFxbKD86KC0/XGQrKD86XC5cZCspPyl8KFsiJ10pKCg/Oig/IVwyKVteXFxdfFxcLikqPylcMilcXXwoPz0oPzpcLnxcW1xdKSg/OlwufFxbXF18JCkpL2csZER0PS9cXChcXCk/L2cscER0PShmdW5jdGlvbiBmRHQodCl7dmFyIGU9dUR0KHQsKGZ1bmN0aW9uKHQpe3JldHVybiA1MDA9PT1uLnNpemUmJm4uY2xlYXIoKSx0fSkpLG49ZS5jYWNoZTtyZXR1cm4gZX0pKChmdW5jdGlvbih0KXt2YXIgZT1bXTtyZXR1cm4gNDY9PT10LmNoYXJDb2RlQXQoMCkmJmUucHVzaCgiIiksdC5yZXBsYWNlKGhEdCwoZnVuY3Rpb24odCxuLGkscil7ZS5wdXNoKGk/ci5yZXBsYWNlKGREdCwiJDEiKTpufHx0KX0pKSxlfSkpO3ZhciBtRHQ9ZnVuY3Rpb24gZ0R0KHQsZSl7Zm9yKHZhciBuPS0xLGk9bnVsbD09dD8wOnQubGVuZ3RoLHI9QXJyYXkoaSk7KytuPGk7KXJbbl09ZSh0W25dLG4sdCk7cmV0dXJuIHJ9LF9EdD1tRHQseUR0PUFQdCx2RHQ9dER0LGJEdD15a3Q/eWt0LnByb3RvdHlwZTp2b2lkIDAseER0PWJEdD9iRHQudG9TdHJpbmc6dm9pZCAwO3ZhciB3RHQ9ZnVuY3Rpb24gdChlKXtpZigic3RyaW5nIj09dHlwZW9mIGUpcmV0dXJuIGU7aWYoeUR0KGUpKXJldHVybiBfRHQoZSx0KSsiIjtpZih2RHQoZSkpcmV0dXJuIHhEdD94RHQuY2FsbChlKToiIjt2YXIgbj1lKyIiO3JldHVybiIwIj09biYmMS9lPT0tSW5maW5pdHk/Ii0wIjpufTt2YXIgU0R0PWZ1bmN0aW9uIE1EdCh0KXtyZXR1cm4gbnVsbD09dD8iIjp3RHQodCl9LEVEdD1BUHQsVER0PWFEdCxDRHQ9cER0LEFEdD1TRHQ7dmFyIGtEdD1mdW5jdGlvbiBMRHQodCxlKXtyZXR1cm4gRUR0KHQpP3Q6VER0KHQsZSk/W3RdOkNEdChBRHQodCkpfSxQRHQ9dER0O3ZhciBORHQ9ZnVuY3Rpb24gSUR0KHQpe2lmKCJzdHJpbmciPT10eXBlb2YgdHx8UER0KHQpKXJldHVybiB0O3ZhciBlPXQrIiI7cmV0dXJuIjAiPT1lJiYxL3Q9PS1JbmZpbml0eT8iLTAiOmV9LFJEdD1rRHQsT0R0PU5EdDt2YXIgekR0PWZ1bmN0aW9uIEREdCh0LGUpe2Zvcih2YXIgbj0wLGk9KGU9UkR0KGUsdCkpLmxlbmd0aDtudWxsIT10JiZuPGk7KXQ9dFtPRHQoZVtuKytdKV07cmV0dXJuIG4mJm49PWk/dDp2b2lkIDB9LEJEdD16RHQ7dmFyIEhEdD1rRHQsRkR0PUNQdCxWRHQ9QVB0LFVEdD1JUHQsakR0PU9QdCxHRHQ9TkR0O3ZhciBXRHQ9ZnVuY3Rpb24gcUR0KHQsZSxuKXtmb3IodmFyIGk9LTEscj0oZT1IRHQoZSx0KSkubGVuZ3RoLG89ITE7KytpPHI7KXt2YXIgYT1HRHQoZVtpXSk7aWYoIShvPW51bGwhPXQmJm4odCxhKSkpYnJlYWs7dD10W2FdfXJldHVybiBvfHwrK2khPXI/bzohIShyPW51bGw9PXQ/MDp0Lmxlbmd0aCkmJmpEdChyKSYmVUR0KGEscikmJihWRHQodCl8fEZEdCh0KSl9LFlEdD1mdW5jdGlvbiBYRHQodCxlKXtyZXR1cm4gbnVsbCE9dCYmZSBpbiBPYmplY3QodCl9LCREdD1XRHQ7dmFyIEtEdD1mdW5jdGlvbiBaRHQodCxlKXtyZXR1cm4gbnVsbCE9dCYmJER0KHQsZSxZRHQpfSxKRHQ9T3p0LFFEdD1mdW5jdGlvbiB0QnQodCxlLG4pe3ZhciBpPW51bGw9PXQ/dm9pZCAwOkJEdCh0LGUpO3JldHVybiB2b2lkIDA9PT1pP246aX0sZUJ0PUtEdCxuQnQ9YUR0LGlCdD1IenQsckJ0PWp6dCxvQnQ9TkR0O3ZhciBhQnQ9ZnVuY3Rpb24gc0J0KHQpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gbnVsbD09ZT92b2lkIDA6ZVt0XX19LGxCdD16RHQ7dmFyIGNCdD1hQnQsdUJ0PWZ1bmN0aW9uIGhCdCh0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIGxCdChlLHQpfX0sZEJ0PWFEdCxwQnQ9TkR0O3ZhciBmQnQ9S3p0LG1CdD1mdW5jdGlvbiBnQnQodCxlKXtyZXR1cm4gbkJ0KHQpJiZpQnQoZSk/ckJ0KG9CdCh0KSxlKTpmdW5jdGlvbihuKXt2YXIgaT1RRHQobix0KTtyZXR1cm4gdm9pZCAwPT09aSYmaT09PWU/ZUJ0KG4sdCk6SkR0KGUsaSwzKX19LF9CdD1QT3QseUJ0PUFQdCx2QnQ9ZnVuY3Rpb24gYkJ0KHQpe3JldHVybiBkQnQodCk/Y0J0KHBCdCh0KSk6dUJ0KHQpfTt2YXIgeEJ0PWZ1bmN0aW9uIHdCdCh0KXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdD90Om51bGw9PXQ/X0J0OiJvYmplY3QiPT10eXBlb2YgdD95QnQodCk/bUJ0KHRbMF0sdFsxXSk6ZkJ0KHQpOnZCdCh0KX0sU0J0PVlOdCxNQnQ9R090LEVCdD14QnQsVEJ0PUFQdDt2YXIgQ0J0PWZ1bmN0aW9uIEFCdCh0LGUpe3JldHVybihUQnQodCk/U0J0Ok1CdCkodCxFQnQoZSkpfSxrQnQ9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTt2YXIgTEJ0PWZ1bmN0aW9uIFBCdCh0LGUpe3JldHVybiBudWxsIT10JiZrQnQuY2FsbCh0LGUpfSxOQnQ9V0R0O3ZhciBJQnQ9ZnVuY3Rpb24gUkJ0KHQsZSl7cmV0dXJuIG51bGwhPXQmJk5CdCh0LGUsTEJ0KX0sT0J0PWZOdCx6QnQ9Wkl0LERCdD1DUHQsQkJ0PUFQdCxIQnQ9eU50LEZCdD1rUHQuZXhwb3J0cyxWQnQ9YU50LFVCdD0kUHQsakJ0PU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7dmFyIEdCdD1mdW5jdGlvbiBXQnQodCl7aWYobnVsbD09dClyZXR1cm4hMDtpZihIQnQodCkmJihCQnQodCl8fCJzdHJpbmciPT10eXBlb2YgdHx8ImZ1bmN0aW9uIj09dHlwZW9mIHQuc3BsaWNlfHxGQnQodCl8fFVCdCh0KXx8REJ0KHQpKSlyZXR1cm4hdC5sZW5ndGg7dmFyIGU9ekJ0KHQpO2lmKCJbb2JqZWN0IE1hcF0iPT1lfHwiW29iamVjdCBTZXRdIj09ZSlyZXR1cm4hdC5zaXplO2lmKFZCdCh0KSlyZXR1cm4hT0J0KHQpLmxlbmd0aDtmb3IodmFyIG4gaW4gdClpZihqQnQuY2FsbCh0LG4pKXJldHVybiExO3JldHVybiEwfTt2YXIgcUJ0PWZ1bmN0aW9uIFlCdCh0KXtyZXR1cm4gdm9pZCAwPT09dH0sWEJ0PWtPdCwkQnQ9eU50O3ZhciBLQnQ9ZnVuY3Rpb24gWkJ0KHQsZSl7dmFyIG49LTEsaT0kQnQodCk/QXJyYXkodC5sZW5ndGgpOltdO3JldHVybiBYQnQodCwoZnVuY3Rpb24odCxyLG8pe2lbKytuXT1lKHQscixvKX0pKSxpfSxKQnQ9bUR0LFFCdD14QnQsdEh0PUtCdCxlSHQ9QVB0O3ZhciBuSHQ9ZnVuY3Rpb24gaUh0KHQsZSl7cmV0dXJuKGVIdCh0KT9KQnQ6dEh0KSh0LFFCdChlKSl9O3ZhciBySHQ9ZnVuY3Rpb24gb0h0KHQsZSxuLGkpe3ZhciByPS0xLG89bnVsbD09dD8wOnQubGVuZ3RoO2ZvcihpJiZvJiYobj10Wysrcl0pOysrcjxvOyluPWUobix0W3JdLHIsdCk7cmV0dXJuIG59LGFIdD1rT3Qsc0h0PXhCdCxsSHQ9ZnVuY3Rpb24gY0h0KHQsZSxuLGkscil7cmV0dXJuIHIodCwoZnVuY3Rpb24odCxyLG8pe249aT8oaT0hMSx0KTplKG4sdCxyLG8pfSkpLG59LHVIdD1BUHQ7dmFyIGhIdD1mdW5jdGlvbiBkSHQodCxlLG4pe3ZhciBpPXVIdCh0KT9ySHQ6bEh0LHI9YXJndW1lbnRzLmxlbmd0aDwzO3JldHVybiBpKHQsc0h0KGUpLG4scixhSHQpfSxwSHQ9a2t0LGZIdD1BUHQsbUh0PV9QdDt2YXIgZ0h0PWZ1bmN0aW9uIF9IdCh0KXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHR8fCFmSHQodCkmJm1IdCh0KSYmIltvYmplY3QgU3RyaW5nXSI9PXBIdCh0KX0seUh0PWFCdCgibGVuZ3RoIiksdkh0PVJlZ0V4cCgiW1xcdTIwMGRcXHVkODAwLVxcdWRmZmZcXHUwMzAwLVxcdTAzNmZcXHVmZTIwLVxcdWZlMmZcXHUyMGQwLVxcdTIwZmZcXHVmZTBlXFx1ZmUwZl0iKTt2YXIgYkh0PWZ1bmN0aW9uIHhIdCh0KXtyZXR1cm4gdkh0LnRlc3QodCl9LHdIdD0iW1xcdWQ4MDAtXFx1ZGZmZl0iLFNIdD0iW1xcdTAzMDAtXFx1MDM2ZlxcdWZlMjAtXFx1ZmUyZlxcdTIwZDAtXFx1MjBmZl0iLE1IdD0iXFx1ZDgzY1tcXHVkZmZiLVxcdWRmZmZdIixFSHQ9IlteXFx1ZDgwMC1cXHVkZmZmXSIsVEh0PSIoPzpcXHVkODNjW1xcdWRkZTYtXFx1ZGRmZl0pezJ9IixDSHQ9IltcXHVkODAwLVxcdWRiZmZdW1xcdWRjMDAtXFx1ZGZmZl0iLEFIdD0iKD86IitTSHQrInwiK01IdCsiKSIrIj8iLGtIdD0iW1xcdWZlMGVcXHVmZTBmXT8iLExIdD1rSHQrQUh0KygiKD86XFx1MjAwZCg/OiIrW0VIdCxUSHQsQ0h0XS5qb2luKCJ8IikrIikiK2tIdCtBSHQrIikqIiksUEh0PSIoPzoiK1tFSHQrU0h0KyI/IixTSHQsVEh0LENIdCx3SHRdLmpvaW4oInwiKSsiKSIsTkh0PVJlZ0V4cChNSHQrIig/PSIrTUh0KyIpfCIrUEh0K0xIdCwiZyIpO3ZhciBJSHQ9eUh0LFJIdD1iSHQsT0h0PWZ1bmN0aW9uIHpIdCh0KXtmb3IodmFyIGU9Tkh0Lmxhc3RJbmRleD0wO05IdC50ZXN0KHQpOykrK2U7cmV0dXJuIGV9O3ZhciBESHQ9Zk50LEJIdD1aSXQsSEh0PXlOdCxGSHQ9Z0h0LFZIdD1mdW5jdGlvbiBVSHQodCl7cmV0dXJuIFJIdCh0KT9PSHQodCk6SUh0KHQpfTt2YXIgakh0PWZ1bmN0aW9uIEdIdCh0KXtpZihudWxsPT10KXJldHVybiAwO2lmKEhIdCh0KSlyZXR1cm4gRkh0KHQpP1ZIdCh0KTp0Lmxlbmd0aDt2YXIgZT1CSHQodCk7cmV0dXJuIltvYmplY3QgTWFwXSI9PWV8fCJbb2JqZWN0IFNldF0iPT1lP3Quc2l6ZTpESHQodCkubGVuZ3RofSxXSHQ9UUx0LHFIdD1NUnQsWUh0PVRPdCxYSHQ9eEJ0LCRIdD1zSXQsS0h0PUFQdCxaSHQ9a1B0LmV4cG9ydHMsSkh0PXprdCxRSHQ9UGt0LHRGdD0kUHQ7dmFyIGVGdD1mdW5jdGlvbiBuRnQodCxlLG4pe3ZhciBpPUtIdCh0KSxyPWl8fFpIdCh0KXx8dEZ0KHQpO2lmKGU9WEh0KGUpLG51bGw9PW4pe3ZhciBvPXQmJnQuY29uc3RydWN0b3I7bj1yP2k/bmV3IG86W106UUh0KHQpJiZKSHQobyk/cUh0KCRIdCh0KSk6e319cmV0dXJuKHI/V0h0OllIdCkodCwoZnVuY3Rpb24odCxpLHIpe3JldHVybiBlKG4sdCxpLHIpfSkpLG59LGlGdD1DUHQsckZ0PUFQdCxvRnQ9eWt0P3lrdC5pc0NvbmNhdFNwcmVhZGFibGU6dm9pZCAwO3ZhciBhRnQ9b0l0LHNGdD1mdW5jdGlvbiBsRnQodCl7cmV0dXJuIHJGdCh0KXx8aUZ0KHQpfHwhIShvRnQmJnQmJnRbb0Z0XSl9O3ZhciBjRnQ9ZnVuY3Rpb24gdChlLG4saSxyLG8pe3ZhciBhPS0xLHM9ZS5sZW5ndGg7Zm9yKGl8fChpPXNGdCksb3x8KG89W10pOysrYTxzOyl7dmFyIGw9ZVthXTtuPjAmJmkobCk/bj4xP3QobCxuLTEsaSxyLG8pOmFGdChvLGwpOnJ8fChvW28ubGVuZ3RoXT1sKX1yZXR1cm4gb307dmFyIHVGdD1mdW5jdGlvbiBoRnQodCxlLG4pe3N3aXRjaChuLmxlbmd0aCl7Y2FzZSAwOnJldHVybiB0LmNhbGwoZSk7Y2FzZSAxOnJldHVybiB0LmNhbGwoZSxuWzBdKTtjYXNlIDI6cmV0dXJuIHQuY2FsbChlLG5bMF0sblsxXSk7Y2FzZSAzOnJldHVybiB0LmNhbGwoZSxuWzBdLG5bMV0sblsyXSl9cmV0dXJuIHQuYXBwbHkoZSxuKX0sZEZ0PU1hdGgubWF4O3ZhciBwRnQ9ZnVuY3Rpb24gZkZ0KHQsZSxuKXtyZXR1cm4gZT1kRnQodm9pZCAwPT09ZT90Lmxlbmd0aC0xOmUsMCksZnVuY3Rpb24oKXtmb3IodmFyIGk9YXJndW1lbnRzLHI9LTEsbz1kRnQoaS5sZW5ndGgtZSwwKSxhPUFycmF5KG8pOysrcjxvOylhW3JdPWlbZStyXTtyPS0xO2Zvcih2YXIgcz1BcnJheShlKzEpOysrcjxlOylzW3JdPWlbcl07cmV0dXJuIHNbZV09bihhKSx1RnQodCx0aGlzLHMpfX0sbUZ0PWJPdCxnRnQ9blB0LF9GdD1EYXRlLm5vdzt2YXIgeUZ0PShmdW5jdGlvbiB2RnQodCl7dmFyIGU9MCxuPTA7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGk9X0Z0KCkscj0xNi0oaS1uKTtpZihuPWkscj4wKXtpZigrK2U+PTgwMClyZXR1cm4gYXJndW1lbnRzWzBdfWVsc2UgZT0wO3JldHVybiB0LmFwcGx5KHZvaWQgMCxhcmd1bWVudHMpfX0pKGdGdD9mdW5jdGlvbih0LGUpe3JldHVybiBnRnQodCwidG9TdHJpbmciLHtjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMSx2YWx1ZTptRnQoZSksd3JpdGFibGU6ITB9KX06UE90KSxiRnQ9UE90LHhGdD1wRnQsd0Z0PXlGdDt2YXIgU0Z0PWZ1bmN0aW9uIE1GdCh0LGUpe3JldHVybiB3RnQoeEZ0KHQsZSxiRnQpLHQrIiIpfTt2YXIgRUZ0PWZ1bmN0aW9uIFRGdCh0LGUsbixpKXtmb3IodmFyIHI9dC5sZW5ndGgsbz1uKyhpPzE6LTEpO2k/by0tOisrbzxyOylpZihlKHRbb10sbyx0KSlyZXR1cm4gbztyZXR1cm4tMX07dmFyIENGdD1FRnQsQUZ0PWZ1bmN0aW9uIGtGdCh0KXtyZXR1cm4gdCE9dH0sTEZ0PWZ1bmN0aW9uIFBGdCh0LGUsbil7Zm9yKHZhciBpPW4tMSxyPXQubGVuZ3RoOysraTxyOylpZih0W2ldPT09ZSlyZXR1cm4gaTtyZXR1cm4tMX07dmFyIE5GdD1mdW5jdGlvbiBJRnQodCxlLG4pe3JldHVybiBlPT1lP0xGdCh0LGUsbik6Q0Z0KHQsQUZ0LG4pfTt2YXIgUkZ0PWZ1bmN0aW9uIE9GdCh0LGUpe3JldHVybiEhKG51bGw9PXQ/MDp0Lmxlbmd0aCkmJk5GdCh0LGUsMCk+LTF9O3ZhciB6RnQ9ZnVuY3Rpb24gREZ0KHQsZSxuKXtmb3IodmFyIGk9LTEscj1udWxsPT10PzA6dC5sZW5ndGg7KytpPHI7KWlmKG4oZSx0W2ldKSlyZXR1cm4hMDtyZXR1cm4hMX07dmFyIEJGdD1OSXQsSEZ0PWZ1bmN0aW9uIEZGdCgpe30sVkZ0PUJGdCYmMS9henQobmV3IEJGdChbLC0wXSkpWzFdPT0xLzA/ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBCRnQodCl9OkhGdCxVRnQ9Wk90LGpGdD1SRnQsR0Z0PXpGdCxXRnQ9Sk90LHFGdD1WRnQsWUZ0PWF6dDt2YXIgWEZ0PXlOdCwkRnQ9X1B0O3ZhciBLRnQ9ZnVuY3Rpb24gWkZ0KHQpe3JldHVybiAkRnQodCkmJlhGdCh0KX0sSkZ0PWNGdCxRRnQ9ZnVuY3Rpb24gdFZ0KHQsZSxuKXt2YXIgaT0tMSxyPWpGdCxvPXQubGVuZ3RoLGE9ITAscz1bXSxsPXM7aWYobilhPSExLHI9R0Z0O2Vsc2UgaWYobz49MjAwKXt2YXIgYz1lP251bGw6cUZ0KHQpO2lmKGMpcmV0dXJuIFlGdChjKTthPSExLHI9V0Z0LGw9bmV3IFVGdH1lbHNlIGw9ZT9bXTpzO3Q6Zm9yKDsrK2k8bzspe3ZhciB1PXRbaV0saD1lP2UodSk6dTtpZih1PW58fDAhPT11P3U6MCxhJiZoPT1oKXtmb3IodmFyIGQ9bC5sZW5ndGg7ZC0tOylpZihsW2RdPT09aCljb250aW51ZSB0O2UmJmwucHVzaChoKSxzLnB1c2godSl9ZWxzZSByKGwsaCxuKXx8KGwhPT1zJiZsLnB1c2goaCkscy5wdXNoKHUpKX1yZXR1cm4gc30sZVZ0PUtGdCxuVnQ9U0Z0KChmdW5jdGlvbih0KXtyZXR1cm4gUUZ0KEpGdCh0LDEsZVZ0LCEwKSl9KSksaVZ0PW1EdDt2YXIgclZ0PWZ1bmN0aW9uIG9WdCh0LGUpe3JldHVybiBpVnQoZSwoZnVuY3Rpb24oZSl7cmV0dXJuIHRbZV19KSl9LGFWdD1TTnQ7dmFyIHNWdCxsVnQ9ZnVuY3Rpb24gY1Z0KHQpe3JldHVybiBudWxsPT10P1tdOnJWdCh0LGFWdCh0KSl9O3RyeXtzVnQ9e2Nsb25lOnlPdCxjb25zdGFudDpiT3QsZWFjaDpVT3QsZmlsdGVyOkNCdCxoYXM6SUJ0LGlzQXJyYXk6QVB0LGlzRW1wdHk6R0J0LGlzRnVuY3Rpb246emt0LGlzVW5kZWZpbmVkOnFCdCxrZXlzOlNOdCxtYXA6bkh0LHJlZHVjZTpoSHQsc2l6ZTpqSHQsdHJhbnNmb3JtOmVGdCx1bmlvbjpuVnQsdmFsdWVzOmxWdH19Y2F0Y2godCl7fXNWdHx8KHNWdD13aW5kb3cuXyk7dmFyIHVWdD1zVnQsaFZ0PXVWdCxkVnQ9ZlZ0LHBWdD0iXDAiO2Z1bmN0aW9uIGZWdCh0KXt0aGlzLl9pc0RpcmVjdGVkPSFoVnQuaGFzKHQsImRpcmVjdGVkIil8fHQuZGlyZWN0ZWQsdGhpcy5faXNNdWx0aWdyYXBoPSEhaFZ0Lmhhcyh0LCJtdWx0aWdyYXBoIikmJnQubXVsdGlncmFwaCx0aGlzLl9pc0NvbXBvdW5kPSEhaFZ0Lmhhcyh0LCJjb21wb3VuZCIpJiZ0LmNvbXBvdW5kLHRoaXMuX2xhYmVsPXZvaWQgMCx0aGlzLl9kZWZhdWx0Tm9kZUxhYmVsRm49aFZ0LmNvbnN0YW50KHZvaWQgMCksdGhpcy5fZGVmYXVsdEVkZ2VMYWJlbEZuPWhWdC5jb25zdGFudCh2b2lkIDApLHRoaXMuX25vZGVzPXt9LHRoaXMuX2lzQ29tcG91bmQmJih0aGlzLl9wYXJlbnQ9e30sdGhpcy5fY2hpbGRyZW49e30sdGhpcy5fY2hpbGRyZW5bIlwwIl09e30pLHRoaXMuX2luPXt9LHRoaXMuX3ByZWRzPXt9LHRoaXMuX291dD17fSx0aGlzLl9zdWNzPXt9LHRoaXMuX2VkZ2VPYmpzPXt9LHRoaXMuX2VkZ2VMYWJlbHM9e319ZnVuY3Rpb24gbVZ0KHQsZSl7dFtlXT90W2VdKys6dFtlXT0xfWZ1bmN0aW9uIGdWdCh0LGUpey0tdFtlXXx8ZGVsZXRlIHRbZV19ZnVuY3Rpb24gX1Z0KHQsZSxuLGkpe3ZhciByPSIiK2Usbz0iIituO2lmKCF0JiZyPm8pe3ZhciBhPXI7cj1vLG89YX1yZXR1cm4gcisiASIrbysiASIrKGhWdC5pc1VuZGVmaW5lZChpKT8iXDAiOmkpfWZ1bmN0aW9uIHlWdCh0LGUsbixpKXt2YXIgcj0iIitlLG89IiIrbjtpZighdCYmcj5vKXt2YXIgYT1yO3I9byxvPWF9dmFyIHM9e3Y6cix3Om99O3JldHVybiBpJiYocy5uYW1lPWkpLHN9ZnVuY3Rpb24gdlZ0KHQsZSl7cmV0dXJuIF9WdCh0LGUudixlLncsZS5uYW1lKX1mVnQucHJvdG90eXBlLl9ub2RlQ291bnQ9MCxmVnQucHJvdG90eXBlLl9lZGdlQ291bnQ9MCxmVnQucHJvdG90eXBlLmlzRGlyZWN0ZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5faXNEaXJlY3RlZH0sZlZ0LnByb3RvdHlwZS5pc011bHRpZ3JhcGg9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5faXNNdWx0aWdyYXBofSxmVnQucHJvdG90eXBlLmlzQ29tcG91bmQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5faXNDb21wb3VuZH0sZlZ0LnByb3RvdHlwZS5zZXRHcmFwaD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fbGFiZWw9dCx0aGlzfSxmVnQucHJvdG90eXBlLmdyYXBoPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2xhYmVsfSxmVnQucHJvdG90eXBlLnNldERlZmF1bHROb2RlTGFiZWw9ZnVuY3Rpb24odCl7cmV0dXJuIGhWdC5pc0Z1bmN0aW9uKHQpfHwodD1oVnQuY29uc3RhbnQodCkpLHRoaXMuX2RlZmF1bHROb2RlTGFiZWxGbj10LHRoaXN9LGZWdC5wcm90b3R5cGUubm9kZUNvdW50PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX25vZGVDb3VudH0sZlZ0LnByb3RvdHlwZS5ub2Rlcz1mdW5jdGlvbigpe3JldHVybiBoVnQua2V5cyh0aGlzLl9ub2Rlcyl9LGZWdC5wcm90b3R5cGUuc291cmNlcz1mdW5jdGlvbigpe3ZhciB0PXRoaXM7cmV0dXJuIGhWdC5maWx0ZXIodGhpcy5ub2RlcygpLChmdW5jdGlvbihlKXtyZXR1cm4gaFZ0LmlzRW1wdHkodC5faW5bZV0pfSkpfSxmVnQucHJvdG90eXBlLnNpbmtzPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcztyZXR1cm4gaFZ0LmZpbHRlcih0aGlzLm5vZGVzKCksKGZ1bmN0aW9uKGUpe3JldHVybiBoVnQuaXNFbXB0eSh0Ll9vdXRbZV0pfSkpfSxmVnQucHJvdG90eXBlLnNldE5vZGVzPWZ1bmN0aW9uKHQsZSl7dmFyIG49YXJndW1lbnRzLGk9dGhpcztyZXR1cm4gaFZ0LmVhY2godCwoZnVuY3Rpb24odCl7bi5sZW5ndGg+MT9pLnNldE5vZGUodCxlKTppLnNldE5vZGUodCl9KSksdGhpc30sZlZ0LnByb3RvdHlwZS5zZXROb2RlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGhWdC5oYXModGhpcy5fbm9kZXMsdCk/KGFyZ3VtZW50cy5sZW5ndGg+MSYmKHRoaXMuX25vZGVzW3RdPWUpLHRoaXMpOih0aGlzLl9ub2Rlc1t0XT1hcmd1bWVudHMubGVuZ3RoPjE/ZTp0aGlzLl9kZWZhdWx0Tm9kZUxhYmVsRm4odCksdGhpcy5faXNDb21wb3VuZCYmKHRoaXMuX3BhcmVudFt0XT1wVnQsdGhpcy5fY2hpbGRyZW5bdF09e30sdGhpcy5fY2hpbGRyZW5bIlwwIl1bdF09ITApLHRoaXMuX2luW3RdPXt9LHRoaXMuX3ByZWRzW3RdPXt9LHRoaXMuX291dFt0XT17fSx0aGlzLl9zdWNzW3RdPXt9LCsrdGhpcy5fbm9kZUNvdW50LHRoaXMpfSxmVnQucHJvdG90eXBlLm5vZGU9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX25vZGVzW3RdfSxmVnQucHJvdG90eXBlLmhhc05vZGU9ZnVuY3Rpb24odCl7cmV0dXJuIGhWdC5oYXModGhpcy5fbm9kZXMsdCl9LGZWdC5wcm90b3R5cGUucmVtb3ZlTm9kZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzO2lmKGhWdC5oYXModGhpcy5fbm9kZXMsdCkpe3ZhciBuPWZ1bmN0aW9uKHQpe2UucmVtb3ZlRWRnZShlLl9lZGdlT2Jqc1t0XSl9O2RlbGV0ZSB0aGlzLl9ub2Rlc1t0XSx0aGlzLl9pc0NvbXBvdW5kJiYodGhpcy5fcmVtb3ZlRnJvbVBhcmVudHNDaGlsZExpc3QodCksZGVsZXRlIHRoaXMuX3BhcmVudFt0XSxoVnQuZWFjaCh0aGlzLmNoaWxkcmVuKHQpLChmdW5jdGlvbih0KXtlLnNldFBhcmVudCh0KX0pKSxkZWxldGUgdGhpcy5fY2hpbGRyZW5bdF0pLGhWdC5lYWNoKGhWdC5rZXlzKHRoaXMuX2luW3RdKSxuKSxkZWxldGUgdGhpcy5faW5bdF0sZGVsZXRlIHRoaXMuX3ByZWRzW3RdLGhWdC5lYWNoKGhWdC5rZXlzKHRoaXMuX291dFt0XSksbiksZGVsZXRlIHRoaXMuX291dFt0XSxkZWxldGUgdGhpcy5fc3Vjc1t0XSwtLXRoaXMuX25vZGVDb3VudH1yZXR1cm4gdGhpc30sZlZ0LnByb3RvdHlwZS5zZXRQYXJlbnQ9ZnVuY3Rpb24odCxlKXtpZighdGhpcy5faXNDb21wb3VuZCl0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBzZXQgcGFyZW50IGluIGEgbm9uLWNvbXBvdW5kIGdyYXBoIik7aWYoaFZ0LmlzVW5kZWZpbmVkKGUpKWU9cFZ0O2Vsc2V7Zm9yKHZhciBuPWUrPSIiOyFoVnQuaXNVbmRlZmluZWQobik7bj10aGlzLnBhcmVudChuKSlpZihuPT09dCl0aHJvdyBuZXcgRXJyb3IoIlNldHRpbmcgIitlKyIgYXMgcGFyZW50IG9mICIrdCsiIHdvdWxkIGNyZWF0ZSBhIGN5Y2xlIik7dGhpcy5zZXROb2RlKGUpfXJldHVybiB0aGlzLnNldE5vZGUodCksdGhpcy5fcmVtb3ZlRnJvbVBhcmVudHNDaGlsZExpc3QodCksdGhpcy5fcGFyZW50W3RdPWUsdGhpcy5fY2hpbGRyZW5bZV1bdF09ITAsdGhpc30sZlZ0LnByb3RvdHlwZS5fcmVtb3ZlRnJvbVBhcmVudHNDaGlsZExpc3Q9ZnVuY3Rpb24odCl7ZGVsZXRlIHRoaXMuX2NoaWxkcmVuW3RoaXMuX3BhcmVudFt0XV1bdF19LGZWdC5wcm90b3R5cGUucGFyZW50PWZ1bmN0aW9uKHQpe2lmKHRoaXMuX2lzQ29tcG91bmQpe3ZhciBlPXRoaXMuX3BhcmVudFt0XTtpZihlIT09cFZ0KXJldHVybiBlfX0sZlZ0LnByb3RvdHlwZS5jaGlsZHJlbj1mdW5jdGlvbih0KXtpZihoVnQuaXNVbmRlZmluZWQodCkmJih0PXBWdCksdGhpcy5faXNDb21wb3VuZCl7dmFyIGU9dGhpcy5fY2hpbGRyZW5bdF07aWYoZSlyZXR1cm4gaFZ0LmtleXMoZSl9ZWxzZXtpZih0PT09cFZ0KXJldHVybiB0aGlzLm5vZGVzKCk7aWYodGhpcy5oYXNOb2RlKHQpKXJldHVybltdfX0sZlZ0LnByb3RvdHlwZS5wcmVkZWNlc3NvcnM9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fcHJlZHNbdF07aWYoZSlyZXR1cm4gaFZ0LmtleXMoZSl9LGZWdC5wcm90b3R5cGUuc3VjY2Vzc29ycz1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9zdWNzW3RdO2lmKGUpcmV0dXJuIGhWdC5rZXlzKGUpfSxmVnQucHJvdG90eXBlLm5laWdoYm9ycz1mdW5jdGlvbih0KXt2YXIgZT10aGlzLnByZWRlY2Vzc29ycyh0KTtpZihlKXJldHVybiBoVnQudW5pb24oZSx0aGlzLnN1Y2Nlc3NvcnModCkpfSxmVnQucHJvdG90eXBlLmlzTGVhZj1mdW5jdGlvbih0KXtyZXR1cm4gMD09PSh0aGlzLmlzRGlyZWN0ZWQoKT90aGlzLnN1Y2Nlc3NvcnModCk6dGhpcy5uZWlnaGJvcnModCkpLmxlbmd0aH0sZlZ0LnByb3RvdHlwZS5maWx0ZXJOb2Rlcz1mdW5jdGlvbih0KXt2YXIgZT1uZXcgdGhpcy5jb25zdHJ1Y3Rvcih7ZGlyZWN0ZWQ6dGhpcy5faXNEaXJlY3RlZCxtdWx0aWdyYXBoOnRoaXMuX2lzTXVsdGlncmFwaCxjb21wb3VuZDp0aGlzLl9pc0NvbXBvdW5kfSk7ZS5zZXRHcmFwaCh0aGlzLmdyYXBoKCkpO3ZhciBuPXRoaXM7aFZ0LmVhY2godGhpcy5fbm9kZXMsKGZ1bmN0aW9uKG4saSl7dChpKSYmZS5zZXROb2RlKGksbil9KSksaFZ0LmVhY2godGhpcy5fZWRnZU9ianMsKGZ1bmN0aW9uKHQpe2UuaGFzTm9kZSh0LnYpJiZlLmhhc05vZGUodC53KSYmZS5zZXRFZGdlKHQsbi5lZGdlKHQpKX0pKTt2YXIgaT17fTtmdW5jdGlvbiByKHQpe3ZhciBvPW4ucGFyZW50KHQpO3JldHVybiB2b2lkIDA9PT1vfHxlLmhhc05vZGUobyk/KGlbdF09byxvKTpvIGluIGk/aVtvXTpyKG8pfXJldHVybiB0aGlzLl9pc0NvbXBvdW5kJiZoVnQuZWFjaChlLm5vZGVzKCksKGZ1bmN0aW9uKHQpe2Uuc2V0UGFyZW50KHQscih0KSl9KSksZX0sZlZ0LnByb3RvdHlwZS5zZXREZWZhdWx0RWRnZUxhYmVsPWZ1bmN0aW9uKHQpe3JldHVybiBoVnQuaXNGdW5jdGlvbih0KXx8KHQ9aFZ0LmNvbnN0YW50KHQpKSx0aGlzLl9kZWZhdWx0RWRnZUxhYmVsRm49dCx0aGlzfSxmVnQucHJvdG90eXBlLmVkZ2VDb3VudD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9lZGdlQ291bnR9LGZWdC5wcm90b3R5cGUuZWRnZXM9ZnVuY3Rpb24oKXtyZXR1cm4gaFZ0LnZhbHVlcyh0aGlzLl9lZGdlT2Jqcyl9LGZWdC5wcm90b3R5cGUuc2V0UGF0aD1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMsaT1hcmd1bWVudHM7cmV0dXJuIGhWdC5yZWR1Y2UodCwoZnVuY3Rpb24odCxyKXtyZXR1cm4gaS5sZW5ndGg+MT9uLnNldEVkZ2UodCxyLGUpOm4uc2V0RWRnZSh0LHIpLHJ9KSksdGhpc30sZlZ0LnByb3RvdHlwZS5zZXRFZGdlPWZ1bmN0aW9uKCl7dmFyIHQsZSxuLGkscj0hMSxvPWFyZ3VtZW50c1swXTsib2JqZWN0Ij09dHlwZW9mIG8mJm51bGwhPT1vJiYidiJpbiBvPyh0PW8udixlPW8udyxuPW8ubmFtZSwyPT09YXJndW1lbnRzLmxlbmd0aCYmKGk9YXJndW1lbnRzWzFdLHI9ITApKToodD1vLGU9YXJndW1lbnRzWzFdLG49YXJndW1lbnRzWzNdLGFyZ3VtZW50cy5sZW5ndGg+MiYmKGk9YXJndW1lbnRzWzJdLHI9ITApKSx0PSIiK3QsZT0iIitlLGhWdC5pc1VuZGVmaW5lZChuKXx8KG49IiIrbik7dmFyIGE9X1Z0KHRoaXMuX2lzRGlyZWN0ZWQsdCxlLG4pO2lmKGhWdC5oYXModGhpcy5fZWRnZUxhYmVscyxhKSlyZXR1cm4gciYmKHRoaXMuX2VkZ2VMYWJlbHNbYV09aSksdGhpcztpZighaFZ0LmlzVW5kZWZpbmVkKG4pJiYhdGhpcy5faXNNdWx0aWdyYXBoKXRocm93IG5ldyBFcnJvcigiQ2Fubm90IHNldCBhIG5hbWVkIGVkZ2Ugd2hlbiBpc011bHRpZ3JhcGggPSBmYWxzZSIpO3RoaXMuc2V0Tm9kZSh0KSx0aGlzLnNldE5vZGUoZSksdGhpcy5fZWRnZUxhYmVsc1thXT1yP2k6dGhpcy5fZGVmYXVsdEVkZ2VMYWJlbEZuKHQsZSxuKTt2YXIgcz15VnQodGhpcy5faXNEaXJlY3RlZCx0LGUsbik7cmV0dXJuIHQ9cy52LGU9cy53LE9iamVjdC5mcmVlemUocyksdGhpcy5fZWRnZU9ianNbYV09cyxtVnQodGhpcy5fcHJlZHNbZV0sdCksbVZ0KHRoaXMuX3N1Y3NbdF0sZSksdGhpcy5faW5bZV1bYV09cyx0aGlzLl9vdXRbdF1bYV09cyx0aGlzLl9lZGdlQ291bnQrKyx0aGlzfSxmVnQucHJvdG90eXBlLmVkZ2U9ZnVuY3Rpb24odCxlLG4pe3ZhciBpPTE9PT1hcmd1bWVudHMubGVuZ3RoP3ZWdCh0aGlzLl9pc0RpcmVjdGVkLGFyZ3VtZW50c1swXSk6X1Z0KHRoaXMuX2lzRGlyZWN0ZWQsdCxlLG4pO3JldHVybiB0aGlzLl9lZGdlTGFiZWxzW2ldfSxmVnQucHJvdG90eXBlLmhhc0VkZ2U9ZnVuY3Rpb24odCxlLG4pe3ZhciBpPTE9PT1hcmd1bWVudHMubGVuZ3RoP3ZWdCh0aGlzLl9pc0RpcmVjdGVkLGFyZ3VtZW50c1swXSk6X1Z0KHRoaXMuX2lzRGlyZWN0ZWQsdCxlLG4pO3JldHVybiBoVnQuaGFzKHRoaXMuX2VkZ2VMYWJlbHMsaSl9LGZWdC5wcm90b3R5cGUucmVtb3ZlRWRnZT1mdW5jdGlvbih0LGUsbil7dmFyIGk9MT09PWFyZ3VtZW50cy5sZW5ndGg/dlZ0KHRoaXMuX2lzRGlyZWN0ZWQsYXJndW1lbnRzWzBdKTpfVnQodGhpcy5faXNEaXJlY3RlZCx0LGUsbikscj10aGlzLl9lZGdlT2Jqc1tpXTtyZXR1cm4gciYmKHQ9ci52LGU9ci53LGRlbGV0ZSB0aGlzLl9lZGdlTGFiZWxzW2ldLGRlbGV0ZSB0aGlzLl9lZGdlT2Jqc1tpXSxnVnQodGhpcy5fcHJlZHNbZV0sdCksZ1Z0KHRoaXMuX3N1Y3NbdF0sZSksZGVsZXRlIHRoaXMuX2luW2VdW2ldLGRlbGV0ZSB0aGlzLl9vdXRbdF1baV0sdGhpcy5fZWRnZUNvdW50LS0pLHRoaXN9LGZWdC5wcm90b3R5cGUuaW5FZGdlcz1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMuX2luW3RdO2lmKG4pe3ZhciBpPWhWdC52YWx1ZXMobik7cmV0dXJuIGU/aFZ0LmZpbHRlcihpLChmdW5jdGlvbih0KXtyZXR1cm4gdC52PT09ZX0pKTppfX0sZlZ0LnByb3RvdHlwZS5vdXRFZGdlcz1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMuX291dFt0XTtpZihuKXt2YXIgaT1oVnQudmFsdWVzKG4pO3JldHVybiBlP2hWdC5maWx0ZXIoaSwoZnVuY3Rpb24odCl7cmV0dXJuIHQudz09PWV9KSk6aX19LGZWdC5wcm90b3R5cGUubm9kZUVkZ2VzPWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcy5pbkVkZ2VzKHQsZSk7aWYobilyZXR1cm4gbi5jb25jYXQodGhpcy5vdXRFZGdlcyh0LGUpKX07dmFyIGJWdD17R3JhcGg6ZFZ0LHZlcnNpb246IjIuMS44In0seFZ0PXVWdCx3VnQ9ZFZ0LFNWdD17d3JpdGU6ZnVuY3Rpb24gTVZ0KHQpe3ZhciBlPXtvcHRpb25zOntkaXJlY3RlZDp0LmlzRGlyZWN0ZWQoKSxtdWx0aWdyYXBoOnQuaXNNdWx0aWdyYXBoKCksY29tcG91bmQ6dC5pc0NvbXBvdW5kKCl9LG5vZGVzOlRWdCh0KSxlZGdlczpDVnQodCl9O3hWdC5pc1VuZGVmaW5lZCh0LmdyYXBoKCkpfHwoZS52YWx1ZT14VnQuY2xvbmUodC5ncmFwaCgpKSk7cmV0dXJuIGV9LHJlYWQ6ZnVuY3Rpb24gRVZ0KHQpe3ZhciBlPW5ldyB3VnQodC5vcHRpb25zKS5zZXRHcmFwaCh0LnZhbHVlKTtyZXR1cm4geFZ0LmVhY2godC5ub2RlcywoZnVuY3Rpb24odCl7ZS5zZXROb2RlKHQudix0LnZhbHVlKSx0LnBhcmVudCYmZS5zZXRQYXJlbnQodC52LHQucGFyZW50KX0pKSx4VnQuZWFjaCh0LmVkZ2VzLChmdW5jdGlvbih0KXtlLnNldEVkZ2Uoe3Y6dC52LHc6dC53LG5hbWU6dC5uYW1lfSx0LnZhbHVlKX0pKSxlfX07ZnVuY3Rpb24gVFZ0KHQpe3JldHVybiB4VnQubWFwKHQubm9kZXMoKSwoZnVuY3Rpb24oZSl7dmFyIG49dC5ub2RlKGUpLGk9dC5wYXJlbnQoZSkscj17djplfTtyZXR1cm4geFZ0LmlzVW5kZWZpbmVkKG4pfHwoci52YWx1ZT1uKSx4VnQuaXNVbmRlZmluZWQoaSl8fChyLnBhcmVudD1pKSxyfSkpfWZ1bmN0aW9uIENWdCh0KXtyZXR1cm4geFZ0Lm1hcCh0LmVkZ2VzKCksKGZ1bmN0aW9uKGUpe3ZhciBuPXQuZWRnZShlKSxpPXt2OmUudix3OmUud307cmV0dXJuIHhWdC5pc1VuZGVmaW5lZChlLm5hbWUpfHwoaS5uYW1lPWUubmFtZSkseFZ0LmlzVW5kZWZpbmVkKG4pfHwoaS52YWx1ZT1uKSxpfSkpfXZhciBBVnQ9dVZ0LGtWdD1mdW5jdGlvbiBMVnQodCl7dmFyIGUsbj17fSxpPVtdO2Z1bmN0aW9uIHIoaSl7QVZ0LmhhcyhuLGkpfHwobltpXT0hMCxlLnB1c2goaSksQVZ0LmVhY2godC5zdWNjZXNzb3JzKGkpLHIpLEFWdC5lYWNoKHQucHJlZGVjZXNzb3JzKGkpLHIpKX1yZXR1cm4gQVZ0LmVhY2godC5ub2RlcygpLChmdW5jdGlvbih0KXtlPVtdLHIodCksZS5sZW5ndGgmJmkucHVzaChlKX0pKSxpfTt2YXIgUFZ0PXVWdCxOVnQ9SVZ0O2Z1bmN0aW9uIElWdCgpe3RoaXMuX2Fycj1bXSx0aGlzLl9rZXlJbmRpY2VzPXt9fUlWdC5wcm90b3R5cGUuc2l6ZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9hcnIubGVuZ3RofSxJVnQucHJvdG90eXBlLmtleXM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYXJyLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQua2V5fSkpfSxJVnQucHJvdG90eXBlLmhhcz1mdW5jdGlvbih0KXtyZXR1cm4gUFZ0Lmhhcyh0aGlzLl9rZXlJbmRpY2VzLHQpfSxJVnQucHJvdG90eXBlLnByaW9yaXR5PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX2tleUluZGljZXNbdF07aWYodm9pZCAwIT09ZSlyZXR1cm4gdGhpcy5fYXJyW2VdLnByaW9yaXR5fSxJVnQucHJvdG90eXBlLm1pbj1mdW5jdGlvbigpe2lmKDA9PT10aGlzLnNpemUoKSl0aHJvdyBuZXcgRXJyb3IoIlF1ZXVlIHVuZGVyZmxvdyIpO3JldHVybiB0aGlzLl9hcnJbMF0ua2V5fSxJVnQucHJvdG90eXBlLmFkZD1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMuX2tleUluZGljZXM7aWYodD1TdHJpbmcodCksIVBWdC5oYXMobix0KSl7dmFyIGk9dGhpcy5fYXJyLHI9aS5sZW5ndGg7cmV0dXJuIG5bdF09cixpLnB1c2goe2tleTp0LHByaW9yaXR5OmV9KSx0aGlzLl9kZWNyZWFzZShyKSwhMH1yZXR1cm4hMX0sSVZ0LnByb3RvdHlwZS5yZW1vdmVNaW49ZnVuY3Rpb24oKXt0aGlzLl9zd2FwKDAsdGhpcy5fYXJyLmxlbmd0aC0xKTt2YXIgdD10aGlzLl9hcnIucG9wKCk7cmV0dXJuIGRlbGV0ZSB0aGlzLl9rZXlJbmRpY2VzW3Qua2V5XSx0aGlzLl9oZWFwaWZ5KDApLHQua2V5fSxJVnQucHJvdG90eXBlLmRlY3JlYXNlPWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcy5fa2V5SW5kaWNlc1t0XTtpZihlPnRoaXMuX2FycltuXS5wcmlvcml0eSl0aHJvdyBuZXcgRXJyb3IoIk5ldyBwcmlvcml0eSBpcyBncmVhdGVyIHRoYW4gY3VycmVudCBwcmlvcml0eS4gS2V5OiAiK3QrIiBPbGQ6ICIrdGhpcy5fYXJyW25dLnByaW9yaXR5KyIgTmV3OiAiK2UpO3RoaXMuX2FycltuXS5wcmlvcml0eT1lLHRoaXMuX2RlY3JlYXNlKG4pfSxJVnQucHJvdG90eXBlLl9oZWFwaWZ5PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX2FycixuPTIqdCxpPW4rMSxyPXQ7bjxlLmxlbmd0aCYmKHI9ZVtuXS5wcmlvcml0eTxlW3JdLnByaW9yaXR5P246cixpPGUubGVuZ3RoJiYocj1lW2ldLnByaW9yaXR5PGVbcl0ucHJpb3JpdHk/aTpyKSxyIT09dCYmKHRoaXMuX3N3YXAodCxyKSx0aGlzLl9oZWFwaWZ5KHIpKSl9LElWdC5wcm90b3R5cGUuX2RlY3JlYXNlPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZSxuPXRoaXMuX2FycixpPW5bdF0ucHJpb3JpdHk7MCE9PXQmJiEobltlPXQ+PjFdLnByaW9yaXR5PGkpOyl0aGlzLl9zd2FwKHQsZSksdD1lfSxJVnQucHJvdG90eXBlLl9zd2FwPWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcy5fYXJyLGk9dGhpcy5fa2V5SW5kaWNlcyxyPW5bdF0sbz1uW2VdO25bdF09byxuW2VdPXIsaVtvLmtleV09dCxpW3Iua2V5XT1lfTt2YXIgUlZ0PU5WdCxPVnQ9ZnVuY3Rpb24gelZ0KHQsZSxuLGkpe3JldHVybihmdW5jdGlvbiByKHQsZSxuLGkpe3ZhciByLG8sYT17fSxzPW5ldyBSVnQsbD1mdW5jdGlvbih0KXt2YXIgZT10LnYhPT1yP3Qudjp0LncsaT1hW2VdLGw9bih0KSxjPW8uZGlzdGFuY2UrbDtpZihsPDApdGhyb3cgbmV3IEVycm9yKCJkaWprc3RyYSBkb2VzIG5vdCBhbGxvdyBuZWdhdGl2ZSBlZGdlIHdlaWdodHMuIEJhZCBlZGdlOiAiK3QrIiBXZWlnaHQ6ICIrbCk7YzxpLmRpc3RhbmNlJiYoaS5kaXN0YW5jZT1jLGkucHJlZGVjZXNzb3I9cixzLmRlY3JlYXNlKGUsYykpfTt0Lm5vZGVzKCkuZm9yRWFjaCgoZnVuY3Rpb24odCl7dmFyIG49dD09PWU/MDpOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFk7YVt0XT17ZGlzdGFuY2U6bn0scy5hZGQodCxuKX0pKTtmb3IoO3Muc2l6ZSgpPjAmJihyPXMucmVtb3ZlTWluKCksKG89YVtyXSkuZGlzdGFuY2UhPT1OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkpOylpKHIpLmZvckVhY2gobCk7cmV0dXJuIGF9KSh0LFN0cmluZyhlKSxufHxEVnQsaXx8ZnVuY3Rpb24oZSl7cmV0dXJuIHQub3V0RWRnZXMoZSl9KX0sRFZ0PXVWdC5jb25zdGFudCgxKTt2YXIgQlZ0PU9WdCxIVnQ9dVZ0LEZWdD1mdW5jdGlvbiBWVnQodCxlLG4pe3JldHVybiBIVnQudHJhbnNmb3JtKHQubm9kZXMoKSwoZnVuY3Rpb24oaSxyKXtpW3JdPUJWdCh0LHIsZSxuKX0pLHt9KX07dmFyIFVWdD11VnQsalZ0PWZ1bmN0aW9uIEdWdCh0KXt2YXIgZT0wLG49W10saT17fSxyPVtdO2Z1bmN0aW9uIG8oYSl7dmFyIHM9aVthXT17b25TdGFjazohMCxsb3dsaW5rOmUsaW5kZXg6ZSsrfTtpZihuLnB1c2goYSksdC5zdWNjZXNzb3JzKGEpLmZvckVhY2goKGZ1bmN0aW9uKHQpe1VWdC5oYXMoaSx0KT9pW3RdLm9uU3RhY2smJihzLmxvd2xpbms9TWF0aC5taW4ocy5sb3dsaW5rLGlbdF0uaW5kZXgpKToobyh0KSxzLmxvd2xpbms9TWF0aC5taW4ocy5sb3dsaW5rLGlbdF0ubG93bGluaykpfSkpLHMubG93bGluaz09PXMuaW5kZXgpe3ZhciBsLGM9W107ZG97bD1uLnBvcCgpLGlbbF0ub25TdGFjaz0hMSxjLnB1c2gobCl9d2hpbGUoYSE9PWwpO3IucHVzaChjKX19cmV0dXJuIHQubm9kZXMoKS5mb3JFYWNoKChmdW5jdGlvbih0KXtVVnQuaGFzKGksdCl8fG8odCl9KSkscn07dmFyIFdWdD11VnQscVZ0PWpWdCxZVnQ9ZnVuY3Rpb24gWFZ0KHQpe3JldHVybiBXVnQuZmlsdGVyKHFWdCh0KSwoZnVuY3Rpb24oZSl7cmV0dXJuIGUubGVuZ3RoPjF8fDE9PT1lLmxlbmd0aCYmdC5oYXNFZGdlKGVbMF0sZVswXSl9KSl9O3ZhciAkVnQ9ZnVuY3Rpb24gS1Z0KHQsZSxuKXtyZXR1cm4oZnVuY3Rpb24gaSh0LGUsbil7dmFyIGk9e30scj10Lm5vZGVzKCk7cmV0dXJuIHIuZm9yRWFjaCgoZnVuY3Rpb24odCl7aVt0XT17fSxpW3RdW3RdPXtkaXN0YW5jZTowfSxyLmZvckVhY2goKGZ1bmN0aW9uKGUpe3QhPT1lJiYoaVt0XVtlXT17ZGlzdGFuY2U6TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZfSl9KSksbih0KS5mb3JFYWNoKChmdW5jdGlvbihuKXt2YXIgcj1uLnY9PT10P24udzpuLnYsbz1lKG4pO2lbdF1bcl09e2Rpc3RhbmNlOm8scHJlZGVjZXNzb3I6dH19KSl9KSksci5mb3JFYWNoKChmdW5jdGlvbih0KXt2YXIgZT1pW3RdO3IuZm9yRWFjaCgoZnVuY3Rpb24obil7dmFyIG89aVtuXTtyLmZvckVhY2goKGZ1bmN0aW9uKG4pe3ZhciBpPWVbbl0scj1vW25dLGE9b1t0XS5kaXN0YW5jZStpLmRpc3RhbmNlO2E8ci5kaXN0YW5jZSYmKHIuZGlzdGFuY2U9YSxyLnByZWRlY2Vzc29yPWkucHJlZGVjZXNzb3IpfSkpfSkpfSkpLGl9KSh0LGV8fFpWdCxufHxmdW5jdGlvbihlKXtyZXR1cm4gdC5vdXRFZGdlcyhlKX0pfSxaVnQ9dVZ0LmNvbnN0YW50KDEpO3ZhciBKVnQ9dVZ0LFFWdD10VXQ7ZnVuY3Rpb24gdFV0KHQpe3ZhciBlPXt9LG49e30saT1bXTtpZihKVnQuZWFjaCh0LnNpbmtzKCksKGZ1bmN0aW9uIHIobyl7aWYoSlZ0LmhhcyhuLG8pKXRocm93IG5ldyBlVXQ7SlZ0LmhhcyhlLG8pfHwobltvXT0hMCxlW29dPSEwLEpWdC5lYWNoKHQucHJlZGVjZXNzb3JzKG8pLHIpLGRlbGV0ZSBuW29dLGkucHVzaChvKSl9KSksSlZ0LnNpemUoZSkhPT10Lm5vZGVDb3VudCgpKXRocm93IG5ldyBlVXQ7cmV0dXJuIGl9ZnVuY3Rpb24gZVV0KCl7fXRVdC5DeWNsZUV4Y2VwdGlvbj1lVXQsZVV0LnByb3RvdHlwZT1uZXcgRXJyb3I7dmFyIG5VdD1RVnQ7dmFyIGlVdD11VnQsclV0PWZ1bmN0aW9uIG9VdCh0LGUsbil7aVV0LmlzQXJyYXkoZSl8fChlPVtlXSk7dmFyIGk9KHQuaXNEaXJlY3RlZCgpP3Quc3VjY2Vzc29yczp0Lm5laWdoYm9ycykuYmluZCh0KSxyPVtdLG89e307cmV0dXJuIGlVdC5lYWNoKGUsKGZ1bmN0aW9uKGUpe2lmKCF0Lmhhc05vZGUoZSkpdGhyb3cgbmV3IEVycm9yKCJHcmFwaCBkb2VzIG5vdCBoYXZlIG5vZGU6ICIrZSk7YVV0KHQsZSwicG9zdCI9PT1uLG8saSxyKX0pKSxyfTtmdW5jdGlvbiBhVXQodCxlLG4saSxyLG8pe2lVdC5oYXMoaSxlKXx8KGlbZV09ITAsbnx8by5wdXNoKGUpLGlVdC5lYWNoKHIoZSksKGZ1bmN0aW9uKGUpe2FVdCh0LGUsbixpLHIsbyl9KSksbiYmby5wdXNoKGUpKX12YXIgc1V0PXJVdDt2YXIgbFV0PXJVdDt2YXIgY1V0PXVWdCx1VXQ9ZFZ0LGhVdD1OVnQ7dmFyIGRVdCxwVXQ9e0dyYXBoOmJWdC5HcmFwaCxqc29uOlNWdCxhbGc6e2NvbXBvbmVudHM6a1Z0LGRpamtzdHJhOk9WdCxkaWprc3RyYUFsbDpGVnQsZmluZEN5Y2xlczpZVnQsZmxveWRXYXJzaGFsbDokVnQsaXNBY3ljbGljOmZ1bmN0aW9uIGZVdCh0KXt0cnl7blV0KHQpfWNhdGNoKHQpe2lmKHQgaW5zdGFuY2VvZiBuVXQuQ3ljbGVFeGNlcHRpb24pcmV0dXJuITE7dGhyb3cgdH1yZXR1cm4hMH0scG9zdG9yZGVyOmZ1bmN0aW9uIG1VdCh0LGUpe3JldHVybiBzVXQodCxlLCJwb3N0Iil9LHByZW9yZGVyOmZ1bmN0aW9uIGdVdCh0LGUpe3JldHVybiBsVXQodCxlLCJwcmUiKX0scHJpbTpmdW5jdGlvbiBfVXQodCxlKXt2YXIgbixpPW5ldyB1VXQscj17fSxvPW5ldyBoVXQ7ZnVuY3Rpb24gYSh0KXt2YXIgaT10LnY9PT1uP3Qudzp0LnYsYT1vLnByaW9yaXR5KGkpO2lmKHZvaWQgMCE9PWEpe3ZhciBzPWUodCk7czxhJiYocltpXT1uLG8uZGVjcmVhc2UoaSxzKSl9fWlmKDA9PT10Lm5vZGVDb3VudCgpKXJldHVybiBpO2NVdC5lYWNoKHQubm9kZXMoKSwoZnVuY3Rpb24odCl7by5hZGQodCxOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkpLGkuc2V0Tm9kZSh0KX0pKSxvLmRlY3JlYXNlKHQubm9kZXMoKVswXSwwKTt2YXIgcz0hMTtmb3IoO28uc2l6ZSgpPjA7KXtpZihuPW8ucmVtb3ZlTWluKCksY1V0LmhhcyhyLG4pKWkuc2V0RWRnZShuLHJbbl0pO2Vsc2V7aWYocyl0aHJvdyBuZXcgRXJyb3IoIklucHV0IGdyYXBoIGlzIG5vdCBjb25uZWN0ZWQ6ICIrdCk7cz0hMH10Lm5vZGVFZGdlcyhuKS5mb3JFYWNoKGEpfXJldHVybiBpfSx0YXJqYW46alZ0LHRvcHNvcnQ6UVZ0fSx2ZXJzaW9uOmJWdC52ZXJzaW9ufTt0cnl7ZFV0PXBVdH1jYXRjaCh0KXt9ZFV0fHwoZFV0PXdpbmRvdy5ncmFwaGxpYik7dmFyIHlVdD1kVXQsdlV0PWdPdDt2YXIgYlV0PWZ1bmN0aW9uIHhVdCh0KXtyZXR1cm4gdlV0KHQsNSl9LHdVdD1IQXQsU1V0PXlOdCxNVXQ9SVB0LEVVdD1Qa3Q7dmFyIFRVdD1mdW5jdGlvbiBDVXQodCxlLG4pe2lmKCFFVXQobikpcmV0dXJuITE7dmFyIGk9dHlwZW9mIGU7cmV0dXJuISEoIm51bWJlciI9PWk/U1V0KG4pJiZNVXQoZSxuLmxlbmd0aCk6InN0cmluZyI9PWkmJmUgaW4gbikmJndVdChuW2VdLHQpfSxBVXQ9SEF0LGtVdD1UVXQsTFV0PUJOdCxQVXQ9T2JqZWN0LnByb3RvdHlwZSxOVXQ9UFV0Lmhhc093blByb3BlcnR5LElVdD1TRnQoKGZ1bmN0aW9uKHQsZSl7dD1PYmplY3QodCk7dmFyIG49LTEsaT1lLmxlbmd0aCxyPWk+Mj9lWzJdOnZvaWQgMDtmb3IociYma1V0KGVbMF0sZVsxXSxyKSYmKGk9MSk7KytuPGk7KWZvcih2YXIgbz1lW25dLGE9TFV0KG8pLHM9LTEsbD1hLmxlbmd0aDsrK3M8bDspe3ZhciBjPWFbc10sdT10W2NdOyh2b2lkIDA9PT11fHxBVXQodSxQVXRbY10pJiYhTlV0LmNhbGwodCxjKSkmJih0W2NdPW9bY10pfXJldHVybiB0fSkpLFJVdD14QnQsT1V0PXlOdCx6VXQ9U050O3ZhciBEVXQ9L1xzLzt2YXIgQlV0PWZ1bmN0aW9uIEhVdCh0KXtmb3IodmFyIGU9dC5sZW5ndGg7ZS0tJiZEVXQudGVzdCh0LmNoYXJBdChlKSk7KTtyZXR1cm4gZX0sRlV0PS9eXHMrLzt2YXIgVlV0PWZ1bmN0aW9uIFVVdCh0KXtyZXR1cm4gdD90LnNsaWNlKDAsQlV0KHQpKzEpLnJlcGxhY2UoRlV0LCIiKTp0fSxqVXQ9UGt0LEdVdD10RHQsV1V0PS9eWy0rXTB4WzAtOWEtZl0rJC9pLHFVdD0vXjBiWzAxXSskL2ksWVV0PS9eMG9bMC03XSskL2ksWFV0PXBhcnNlSW50O3ZhciAkVXQ9ZnVuY3Rpb24gS1V0KHQpe2lmKCJudW1iZXIiPT10eXBlb2YgdClyZXR1cm4gdDtpZihHVXQodCkpcmV0dXJuIE5hTjtpZihqVXQodCkpe3ZhciBlPSJmdW5jdGlvbiI9PXR5cGVvZiB0LnZhbHVlT2Y/dC52YWx1ZU9mKCk6dDt0PWpVdChlKT9lKyIiOmV9aWYoInN0cmluZyIhPXR5cGVvZiB0KXJldHVybiAwPT09dD90Oit0O3Q9VlV0KHQpO3ZhciBuPXFVdC50ZXN0KHQpO3JldHVybiBufHxZVXQudGVzdCh0KT9YVXQodC5zbGljZSgyKSxuPzI6OCk6V1V0LnRlc3QodCk/TmFOOit0fSxaVXQ9MS8wO3ZhciBKVXQ9ZnVuY3Rpb24gUVV0KHQpe3JldHVybiB0Pyh0PSRVdCh0KSk9PT1aVXR8fHQ9PT0tMS8wPzE3OTc2OTMxMzQ4NjIzMTU3ZTI5MioodDwwPy0xOjEpOnQ9PXQ/dDowOjA9PT10P3Q6MH0sdGp0PUpVdDt2YXIgZWp0PUVGdCxuanQ9eEJ0LGlqdD1mdW5jdGlvbiByanQodCl7dmFyIGU9dGp0KHQpLG49ZSUxO3JldHVybiBlPT1lP24/ZS1uOmU6MH0sb2p0PU1hdGgubWF4O3ZhciBhanQ9KGZ1bmN0aW9uIGxqdCh0KXtyZXR1cm4gZnVuY3Rpb24oZSxuLGkpe3ZhciByPU9iamVjdChlKTtpZighT1V0KGUpKXt2YXIgbz1SVXQobik7ZT16VXQoZSksbj1mdW5jdGlvbih0KXtyZXR1cm4gbyhyW3RdLHQscil9fXZhciBhPXQoZSxuLGkpO3JldHVybiBhPi0xP3Jbbz9lW2FdOmFdOnZvaWQgMH19KSgoZnVuY3Rpb24gc2p0KHQsZSxuKXt2YXIgaT1udWxsPT10PzA6dC5sZW5ndGg7aWYoIWkpcmV0dXJuLTE7dmFyIHI9bnVsbD09bj8wOmlqdChuKTtyZXR1cm4gcjwwJiYocj1vanQoaStyLDApKSxlanQodCxuanQoZSkscil9KSksY2p0PWNGdDt2YXIgdWp0PWZ1bmN0aW9uIGhqdCh0KXtyZXR1cm4obnVsbD09dD8wOnQubGVuZ3RoKT9janQodCwxKTpbXX0sZGp0PXdPdCxwanQ9Uk90LGZqdD1CTnQ7dmFyIG1qdD1mdW5jdGlvbiBnanQodCxlKXtyZXR1cm4gbnVsbD09dD90OmRqdCh0LHBqdChlKSxmanQpfTt2YXIgX2p0PWZ1bmN0aW9uIHlqdCh0KXt2YXIgZT1udWxsPT10PzA6dC5sZW5ndGg7cmV0dXJuIGU/dFtlLTFdOnZvaWQgMH0sdmp0PXJQdCxianQ9VE90LHhqdD14QnQ7dmFyIHdqdD1mdW5jdGlvbiBTanQodCxlKXt2YXIgbj17fTtyZXR1cm4gZT14anQoZSksYmp0KHQsKGZ1bmN0aW9uKHQsaSxyKXt2anQobixpLGUodCxpLHIpKX0pKSxufSxNanQ9dER0O3ZhciBFanQ9ZnVuY3Rpb24gVGp0KHQsZSxuKXtmb3IodmFyIGk9LTEscj10Lmxlbmd0aDsrK2k8cjspe3ZhciBvPXRbaV0sYT1lKG8pO2lmKG51bGwhPWEmJih2b2lkIDA9PT1zP2E9PWEmJiFNanQoYSk6bihhLHMpKSl2YXIgcz1hLGw9b31yZXR1cm4gbH07dmFyIENqdD1FanQsQWp0PWZ1bmN0aW9uIGtqdCh0LGUpe3JldHVybiB0PmV9LExqdD1QT3Q7dmFyIFBqdD1mdW5jdGlvbiBOanQodCl7cmV0dXJuIHQmJnQubGVuZ3RoP0NqdCh0LExqdCxBanQpOnZvaWQgMH0sSWp0PXJQdCxSanQ9SEF0O3ZhciBPanQ9ZnVuY3Rpb24gemp0KHQsZSxuKXsodm9pZCAwIT09biYmIVJqdCh0W2VdLG4pfHx2b2lkIDA9PT1uJiYhKGUgaW4gdCkpJiZJanQodCxlLG4pfSxEanQ9a2t0LEJqdD1zSXQsSGp0PV9QdCxGanQ9RnVuY3Rpb24ucHJvdG90eXBlLnRvU3RyaW5nLFZqdD1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LFVqdD1GanQuY2FsbChPYmplY3QpO3ZhciBqanQ9ZnVuY3Rpb24gR2p0KHQsZSl7aWYoKCJjb25zdHJ1Y3RvciIhPT1lfHwiZnVuY3Rpb24iIT10eXBlb2YgdFtlXSkmJiJfX3Byb3RvX18iIT1lKXJldHVybiB0W2VdfSxXanQ9cFB0LHFqdD1CTnQ7dmFyIFlqdD1PanQsWGp0PUdOdC5leHBvcnRzLCRqdD11UnQsS2p0PVdOdCxaanQ9QVJ0LEpqdD1DUHQsUWp0PUFQdCx0R3Q9S0Z0LGVHdD1rUHQuZXhwb3J0cyxuR3Q9emt0LGlHdD1Qa3Qsckd0PWZ1bmN0aW9uIG9HdCh0KXtpZighSGp0KHQpfHwiW29iamVjdCBPYmplY3RdIiE9RGp0KHQpKXJldHVybiExO3ZhciBlPUJqdCh0KTtpZihudWxsPT09ZSlyZXR1cm4hMDt2YXIgbj1WanQuY2FsbChlLCJjb25zdHJ1Y3RvciIpJiZlLmNvbnN0cnVjdG9yO3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBuJiZuIGluc3RhbmNlb2YgbiYmRmp0LmNhbGwobik9PVVqdH0sYUd0PSRQdCxzR3Q9amp0LGxHdD1mdW5jdGlvbiBjR3QodCl7cmV0dXJuIFdqdCh0LHFqdCh0KSl9O3ZhciB1R3Q9Skx0LGhHdD1PanQsZEd0PXdPdCxwR3Q9ZnVuY3Rpb24gZkd0KHQsZSxuLGkscixvLGEpe3ZhciBzPXNHdCh0LG4pLGw9c0d0KGUsbiksYz1hLmdldChsKTtpZihjKVlqdCh0LG4sYyk7ZWxzZXt2YXIgdT1vP28ocyxsLG4rIiIsdCxlLGEpOnZvaWQgMCxoPXZvaWQgMD09PXU7aWYoaCl7dmFyIGQ9UWp0KGwpLHA9IWQmJmVHdChsKSxmPSFkJiYhcCYmYUd0KGwpO3U9bCxkfHxwfHxmP1FqdChzKT91PXM6dEd0KHMpP3U9S2p0KHMpOnA/KGg9ITEsdT1YanQobCwhMCkpOmY/KGg9ITEsdT0kanQobCwhMCkpOnU9W106ckd0KGwpfHxKanQobCk/KHU9cyxKanQocyk/dT1sR3Qocyk6aUd0KHMpJiYhbkd0KHMpfHwodT1aanQobCkpKTpoPSExfWgmJihhLnNldChsLHUpLHIodSxsLGksbyxhKSxhLmRlbGV0ZShsKSksWWp0KHQsbix1KX19LG1HdD1Qa3QsZ0d0PUJOdCxfR3Q9amp0O3ZhciB5R3Q9U0Z0LHZHdD1UVXQ7dmFyIGJHdD1mdW5jdGlvbiB0KGUsbixpLHIsbyl7ZSE9PW4mJmRHdChuLChmdW5jdGlvbihhLHMpe2lmKG98fChvPW5ldyB1R3QpLG1HdChhKSlwR3QoZSxuLHMsaSx0LHIsbyk7ZWxzZXt2YXIgbD1yP3IoX0d0KGUscyksYSxzKyIiLGUsbixvKTp2b2lkIDA7dm9pZCAwPT09bCYmKGw9YSksaEd0KGUscyxsKX19KSxnR3QpfSx4R3Q9KGZ1bmN0aW9uIHdHdCh0KXtyZXR1cm4geUd0KChmdW5jdGlvbihlLG4pe3ZhciBpPS0xLHI9bi5sZW5ndGgsbz1yPjE/bltyLTFdOnZvaWQgMCxhPXI+Mj9uWzJdOnZvaWQgMDtmb3Iobz10Lmxlbmd0aD4zJiYiZnVuY3Rpb24iPT10eXBlb2Ygbz8oci0tLG8pOnZvaWQgMCxhJiZ2R3QoblswXSxuWzFdLGEpJiYobz1yPDM/dm9pZCAwOm8scj0xKSxlPU9iamVjdChlKTsrK2k8cjspe3ZhciBzPW5baV07cyYmdChlLHMsaSxvKX1yZXR1cm4gZX0pKX0pKChmdW5jdGlvbih0LGUsbil7Ykd0KHQsZSxuKX0pKTt2YXIgU0d0PWZ1bmN0aW9uIE1HdCh0LGUpe3JldHVybiB0PGV9LEVHdD1FanQsVEd0PVNHdCxDR3Q9UE90O3ZhciBBR3Q9ZnVuY3Rpb24ga0d0KHQpe3JldHVybiB0JiZ0Lmxlbmd0aD9FR3QodCxDR3QsVEd0KTp2b2lkIDB9LExHdD1FanQsUEd0PXhCdCxOR3Q9U0d0O3ZhciBJR3Q9ZnVuY3Rpb24gUkd0KHQsZSl7cmV0dXJuIHQmJnQubGVuZ3RoP0xHdCh0LFBHdChlKSxOR3QpOnZvaWQgMH0sT0d0PV9rdCx6R3Q9ZnVuY3Rpb24oKXtyZXR1cm4gT0d0LkRhdGUubm93KCl9LERHdD1jUHQsQkd0PWtEdCxIR3Q9SVB0LEZHdD1Qa3QsVkd0PU5EdDt2YXIgVUd0PXpEdCxqR3Q9ZnVuY3Rpb24gR0d0KHQsZSxuLGkpe2lmKCFGR3QodCkpcmV0dXJuIHQ7Zm9yKHZhciByPS0xLG89KGU9Qkd0KGUsdCkpLmxlbmd0aCxhPW8tMSxzPXQ7bnVsbCE9cyYmKytyPG87KXt2YXIgbD1WR3QoZVtyXSksYz1uO2lmKCJfX3Byb3RvX18iPT09bHx8ImNvbnN0cnVjdG9yIj09PWx8fCJwcm90b3R5cGUiPT09bClyZXR1cm4gdDtpZihyIT1hKXt2YXIgdT1zW2xdO3ZvaWQgMD09PShjPWk/aSh1LGwscyk6dm9pZCAwKSYmKGM9Rkd0KHUpP3U6SEd0KGVbcisxXSk/W106e30pfURHdChzLGwsYykscz1zW2xdfXJldHVybiB0fSxXR3Q9a0R0O3ZhciBxR3Q9ZnVuY3Rpb24gWUd0KHQsZSxuKXtmb3IodmFyIGk9LTEscj1lLmxlbmd0aCxvPXt9OysraTxyOyl7dmFyIGE9ZVtpXSxzPVVHdCh0LGEpO24ocyxhKSYmakd0KG8sV0d0KGEsdCkscyl9cmV0dXJuIG99LFhHdD1LRHQ7dmFyICRHdD11anQsS0d0PXBGdCxaR3Q9eUZ0O3ZhciBKR3Q9ZnVuY3Rpb24gUUd0KHQsZSl7cmV0dXJuIHFHdCh0LGUsKGZ1bmN0aW9uKGUsbil7cmV0dXJuIFhHdCh0LG4pfSkpfSx0V3Q9KGZ1bmN0aW9uIGVXdCh0KXtyZXR1cm4gWkd0KEtHdCh0LHZvaWQgMCwkR3QpLHQrIiIpfSkoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIG51bGw9PXQ/e306Skd0KHQsZSl9KSksbld0PU1hdGguY2VpbCxpV3Q9TWF0aC5tYXg7dmFyIHJXdD1mdW5jdGlvbiBvV3QodCxlLG4saSl7Zm9yKHZhciByPS0xLG89aVd0KG5XdCgoZS10KS8obnx8MSkpLDApLGE9QXJyYXkobyk7by0tOylhW2k/bzorK3JdPXQsdCs9bjtyZXR1cm4gYX0sYVd0PVRVdCxzV3Q9SlV0O3ZhciBsV3Q9KGZ1bmN0aW9uIGNXdCh0KXtyZXR1cm4gZnVuY3Rpb24oZSxuLGkpe3JldHVybiBpJiYibnVtYmVyIiE9dHlwZW9mIGkmJmFXdChlLG4saSkmJihuPWk9dm9pZCAwKSxlPXNXdChlKSx2b2lkIDA9PT1uPyhuPWUsZT0wKTpuPXNXdChuKSxpPXZvaWQgMD09PWk/ZTxuPzE6LTE6c1d0KGkpLHJXdChlLG4saSx0KX19KSgpO3ZhciB1V3Q9dER0O3ZhciBoV3Q9ZnVuY3Rpb24gZFd0KHQsZSl7aWYodCE9PWUpe3ZhciBuPXZvaWQgMCE9PXQsaT1udWxsPT09dCxyPXQ9PXQsbz11V3QodCksYT12b2lkIDAhPT1lLHM9bnVsbD09PWUsbD1lPT1lLGM9dVd0KGUpO2lmKCFzJiYhYyYmIW8mJnQ+ZXx8byYmYSYmbCYmIXMmJiFjfHxpJiZhJiZsfHwhbiYmbHx8IXIpcmV0dXJuIDE7aWYoIWkmJiFvJiYhYyYmdDxlfHxjJiZuJiZyJiYhaSYmIW98fHMmJm4mJnJ8fCFhJiZyfHwhbClyZXR1cm4tMX1yZXR1cm4gMH07dmFyIHBXdD1tRHQsZld0PXpEdCxtV3Q9eEJ0LGdXdD1LQnQsX1d0PWZ1bmN0aW9uIHlXdCh0LGUpe3ZhciBuPXQubGVuZ3RoO2Zvcih0LnNvcnQoZSk7bi0tOyl0W25dPXRbbl0udmFsdWU7cmV0dXJuIHR9LHZXdD1qUHQsYld0PWZ1bmN0aW9uIHhXdCh0LGUsbil7Zm9yKHZhciBpPS0xLHI9dC5jcml0ZXJpYSxvPWUuY3JpdGVyaWEsYT1yLmxlbmd0aCxzPW4ubGVuZ3RoOysraTxhOyl7dmFyIGw9aFd0KHJbaV0sb1tpXSk7aWYobClyZXR1cm4gaT49cz9sOmwqKCJkZXNjIj09bltpXT8tMToxKX1yZXR1cm4gdC5pbmRleC1lLmluZGV4fSx3V3Q9UE90LFNXdD1BUHQ7dmFyIE1XdD1jRnQsRVd0PWZ1bmN0aW9uIFRXdCh0LGUsbil7ZT1lLmxlbmd0aD9wV3QoZSwoZnVuY3Rpb24odCl7cmV0dXJuIFNXdCh0KT9mdW5jdGlvbihlKXtyZXR1cm4gZld0KGUsMT09PXQubGVuZ3RoP3RbMF06dCl9OnR9KSk6W3dXdF07dmFyIGk9LTE7ZT1wV3QoZSx2V3QobVd0KSk7dmFyIHI9Z1d0KHQsKGZ1bmN0aW9uKHQsbixyKXtyZXR1cm57Y3JpdGVyaWE6cFd0KGUsKGZ1bmN0aW9uKGUpe3JldHVybiBlKHQpfSkpLGluZGV4OisraSx2YWx1ZTp0fX0pKTtyZXR1cm4gX1d0KHIsKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGJXdCh0LGUsbil9KSl9LENXdD1UVXQsQVd0PVNGdCgoZnVuY3Rpb24odCxlKXtpZihudWxsPT10KXJldHVybltdO3ZhciBuPWUubGVuZ3RoO3JldHVybiBuPjEmJkNXdCh0LGVbMF0sZVsxXSk/ZT1bXTpuPjImJkNXdChlWzBdLGVbMV0sZVsyXSkmJihlPVtlWzBdXSksRVd0KHQsTVd0KGUsMSksW10pfSkpLGtXdD1TRHQsTFd0PTA7dmFyIFBXdD1mdW5jdGlvbiBOV3QodCl7dmFyIGU9KytMV3Q7cmV0dXJuIGtXdCh0KStlfTt2YXIgSVd0PWNQdCxSV3Q9ZnVuY3Rpb24gT1d0KHQsZSxuKXtmb3IodmFyIGk9LTEscj10Lmxlbmd0aCxvPWUubGVuZ3RoLGE9e307KytpPHI7KXtuKGEsdFtpXSxpPG8/ZVtpXTp2b2lkIDApfXJldHVybiBhfTt2YXIgeld0LERXdD1mdW5jdGlvbiBCV3QodCxlKXtyZXR1cm4gUld0KHR8fFtdLGV8fFtdLElXdCl9O3RyeXt6V3Q9e2Nsb25lRGVlcDpiVXQsY29uc3RhbnQ6Yk90LGRlZmF1bHRzOklVdCxlYWNoOlVPdCxmaWx0ZXI6Q0J0LGZpbmQ6YWp0LGZsYXR0ZW46dWp0LGZvckVhY2g6Rk90LGZvckluOm1qdCxoYXM6SUJ0LGlzVW5kZWZpbmVkOnFCdCxsYXN0Ol9qdCxtYXA6bkh0LG1hcFZhbHVlczp3anQsbWF4OlBqdCxtZXJnZTp4R3QsbWluOkFHdCxtaW5CeTpJR3Qsbm93OnpHdCxwaWNrOnRXdCxyYW5nZTpsV3QscmVkdWNlOmhIdCxzb3J0Qnk6QVd0LHVuaXF1ZUlkOlBXdCx2YWx1ZXM6bFZ0LHppcE9iamVjdDpEV3R9fWNhdGNoKHQpe316V3R8fCh6V3Q9d2luZG93Ll8pO3ZhciBIV3Q9eld0LEZXdD1WV3Q7ZnVuY3Rpb24gVld0KCl7dmFyIHQ9e307dC5fbmV4dD10Ll9wcmV2PXQsdGhpcy5fc2VudGluZWw9dH1mdW5jdGlvbiBVV3QodCl7dC5fcHJldi5fbmV4dD10Ll9uZXh0LHQuX25leHQuX3ByZXY9dC5fcHJldixkZWxldGUgdC5fbmV4dCxkZWxldGUgdC5fcHJldn1mdW5jdGlvbiBqV3QodCxlKXtpZigiX25leHQiIT09dCYmIl9wcmV2IiE9PXQpcmV0dXJuIGV9Vld0LnByb3RvdHlwZS5kZXF1ZXVlPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fc2VudGluZWwsZT10Ll9wcmV2O2lmKGUhPT10KXJldHVybiBVV3QoZSksZX0sVld0LnByb3RvdHlwZS5lbnF1ZXVlPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX3NlbnRpbmVsO3QuX3ByZXYmJnQuX25leHQmJlVXdCh0KSx0Ll9uZXh0PWUuX25leHQsZS5fbmV4dC5fcHJldj10LGUuX25leHQ9dCx0Ll9wcmV2PWV9LFZXdC5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtmb3IodmFyIHQ9W10sZT10aGlzLl9zZW50aW5lbCxuPWUuX3ByZXY7biE9PWU7KXQucHVzaChKU09OLnN0cmluZ2lmeShuLGpXdCkpLG49bi5fcHJldjtyZXR1cm4iWyIrdC5qb2luKCIsICIpKyJdIn07dmFyIEdXdD1IV3QsV1d0PXlVdC5HcmFwaCxxV3Q9Rld0LFlXdD1mdW5jdGlvbiBYV3QodCxlKXtpZih0Lm5vZGVDb3VudCgpPD0xKXJldHVybltdO3ZhciBuPShmdW5jdGlvbiBpKHQsZSl7dmFyIG49bmV3IFdXdCxpPTAscj0wO0dXdC5mb3JFYWNoKHQubm9kZXMoKSwoZnVuY3Rpb24odCl7bi5zZXROb2RlKHQse3Y6dCxpbjowLG91dDowfSl9KSksR1d0LmZvckVhY2godC5lZGdlcygpLChmdW5jdGlvbih0KXt2YXIgbz1uLmVkZ2UodC52LHQudyl8fDAsYT1lKHQpO24uc2V0RWRnZSh0LnYsdC53LG8rYSkscj1NYXRoLm1heChyLG4ubm9kZSh0LnYpLm91dCs9YSksaT1NYXRoLm1heChpLG4ubm9kZSh0LncpLmluKz1hKX0pKTt2YXIgbz1HV3QucmFuZ2UocitpKzMpLm1hcCgoZnVuY3Rpb24oKXtyZXR1cm4gbmV3IHFXdH0pKSxhPWkrMTtyZXR1cm4gR1d0LmZvckVhY2gobi5ub2RlcygpLChmdW5jdGlvbih0KXtaV3QobyxhLG4ubm9kZSh0KSl9KSkse2dyYXBoOm4sYnVja2V0czpvLHplcm9JZHg6YX19KSh0LGV8fCRXdCkscj0oZnVuY3Rpb24gbyh0LGUsbil7dmFyIGkscj1bXSxvPWVbZS5sZW5ndGgtMV0sYT1lWzBdO2Zvcig7dC5ub2RlQ291bnQoKTspe2Zvcig7aT1hLmRlcXVldWUoKTspS1d0KHQsZSxuLGkpO2Zvcig7aT1vLmRlcXVldWUoKTspS1d0KHQsZSxuLGkpO2lmKHQubm9kZUNvdW50KCkpZm9yKHZhciBzPWUubGVuZ3RoLTI7cz4wOy0tcylpZihpPWVbc10uZGVxdWV1ZSgpKXtyPXIuY29uY2F0KEtXdCh0LGUsbixpLCEwKSk7YnJlYWt9fXJldHVybiByfSkobi5ncmFwaCxuLmJ1Y2tldHMsbi56ZXJvSWR4KTtyZXR1cm4gR1d0LmZsYXR0ZW4oR1d0Lm1hcChyLChmdW5jdGlvbihlKXtyZXR1cm4gdC5vdXRFZGdlcyhlLnYsZS53KX0pKSwhMCl9LCRXdD1HV3QuY29uc3RhbnQoMSk7ZnVuY3Rpb24gS1d0KHQsZSxuLGkscil7dmFyIG89cj9bXTp2b2lkIDA7cmV0dXJuIEdXdC5mb3JFYWNoKHQuaW5FZGdlcyhpLnYpLChmdW5jdGlvbihpKXt2YXIgYT10LmVkZ2UoaSkscz10Lm5vZGUoaS52KTtyJiZvLnB1c2goe3Y6aS52LHc6aS53fSkscy5vdXQtPWEsWld0KGUsbixzKX0pKSxHV3QuZm9yRWFjaCh0Lm91dEVkZ2VzKGkudiksKGZ1bmN0aW9uKGkpe3ZhciByPXQuZWRnZShpKSxvPXQubm9kZShpLncpO28uaW4tPXIsWld0KGUsbixvKX0pKSx0LnJlbW92ZU5vZGUoaS52KSxvfWZ1bmN0aW9uIFpXdCh0LGUsbil7bi5vdXQ/bi5pbj90W24ub3V0LW4uaW4rZV0uZW5xdWV1ZShuKTp0W3QubGVuZ3RoLTFdLmVucXVldWUobik6dFswXS5lbnF1ZXVlKG4pfXZhciBKV3Q9SFd0LFFXdD1ZV3QsdHF0PXtydW46ZnVuY3Rpb24gZXF0KHQpe3ZhciBlPSJncmVlZHkiPT09dC5ncmFwaCgpLmFjeWNsaWNlcj9RV3QodCwoZnVuY3Rpb24gbih0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIHQuZWRnZShlKS53ZWlnaHR9fSkodCkpOihmdW5jdGlvbiBpKHQpe3ZhciBlPVtdLG49e30saT17fTtmdW5jdGlvbiByKG8pe0pXdC5oYXMoaSxvKXx8KGlbb109ITAsbltvXT0hMCxKV3QuZm9yRWFjaCh0Lm91dEVkZ2VzKG8pLChmdW5jdGlvbih0KXtKV3QuaGFzKG4sdC53KT9lLnB1c2godCk6cih0LncpfSkpLGRlbGV0ZSBuW29dKX1yZXR1cm4gSld0LmZvckVhY2godC5ub2RlcygpLHIpLGV9KSh0KTtKV3QuZm9yRWFjaChlLChmdW5jdGlvbihlKXt2YXIgbj10LmVkZ2UoZSk7dC5yZW1vdmVFZGdlKGUpLG4uZm9yd2FyZE5hbWU9ZS5uYW1lLG4ucmV2ZXJzZWQ9ITAsdC5zZXRFZGdlKGUudyxlLnYsbixKV3QudW5pcXVlSWQoInJldiIpKX0pKX0sdW5kbzpmdW5jdGlvbiBucXQodCl7Sld0LmZvckVhY2godC5lZGdlcygpLChmdW5jdGlvbihlKXt2YXIgbj10LmVkZ2UoZSk7aWYobi5yZXZlcnNlZCl7dC5yZW1vdmVFZGdlKGUpO3ZhciBpPW4uZm9yd2FyZE5hbWU7ZGVsZXRlIG4ucmV2ZXJzZWQsZGVsZXRlIG4uZm9yd2FyZE5hbWUsdC5zZXRFZGdlKGUudyxlLnYsbixpKX19KSl9fTt2YXIgaXF0PUhXdCxycXQ9eVV0LkdyYXBoLG9xdD17YWRkRHVtbXlOb2RlOnlxdCxzaW1wbGlmeTpmdW5jdGlvbiBhcXQodCl7dmFyIGU9KG5ldyBycXQpLnNldEdyYXBoKHQuZ3JhcGgoKSk7cmV0dXJuIGlxdC5mb3JFYWNoKHQubm9kZXMoKSwoZnVuY3Rpb24obil7ZS5zZXROb2RlKG4sdC5ub2RlKG4pKX0pKSxpcXQuZm9yRWFjaCh0LmVkZ2VzKCksKGZ1bmN0aW9uKG4pe3ZhciBpPWUuZWRnZShuLnYsbi53KXx8e3dlaWdodDowLG1pbmxlbjoxfSxyPXQuZWRnZShuKTtlLnNldEVkZ2Uobi52LG4udyx7d2VpZ2h0Omkud2VpZ2h0K3Iud2VpZ2h0LG1pbmxlbjpNYXRoLm1heChpLm1pbmxlbixyLm1pbmxlbil9KX0pKSxlfSxhc05vbkNvbXBvdW5kR3JhcGg6ZnVuY3Rpb24gc3F0KHQpe3ZhciBlPW5ldyBycXQoe211bHRpZ3JhcGg6dC5pc011bHRpZ3JhcGgoKX0pLnNldEdyYXBoKHQuZ3JhcGgoKSk7cmV0dXJuIGlxdC5mb3JFYWNoKHQubm9kZXMoKSwoZnVuY3Rpb24obil7dC5jaGlsZHJlbihuKS5sZW5ndGh8fGUuc2V0Tm9kZShuLHQubm9kZShuKSl9KSksaXF0LmZvckVhY2godC5lZGdlcygpLChmdW5jdGlvbihuKXtlLnNldEVkZ2Uobix0LmVkZ2UobikpfSkpLGV9LHN1Y2Nlc3NvcldlaWdodHM6ZnVuY3Rpb24gbHF0KHQpe3ZhciBlPWlxdC5tYXAodC5ub2RlcygpLChmdW5jdGlvbihlKXt2YXIgbj17fTtyZXR1cm4gaXF0LmZvckVhY2godC5vdXRFZGdlcyhlKSwoZnVuY3Rpb24oZSl7bltlLnddPShuW2Uud118fDApK3QuZWRnZShlKS53ZWlnaHR9KSksbn0pKTtyZXR1cm4gaXF0LnppcE9iamVjdCh0Lm5vZGVzKCksZSl9LHByZWRlY2Vzc29yV2VpZ2h0czpmdW5jdGlvbiBjcXQodCl7dmFyIGU9aXF0Lm1hcCh0Lm5vZGVzKCksKGZ1bmN0aW9uKGUpe3ZhciBuPXt9O3JldHVybiBpcXQuZm9yRWFjaCh0LmluRWRnZXMoZSksKGZ1bmN0aW9uKGUpe25bZS52XT0obltlLnZdfHwwKSt0LmVkZ2UoZSkud2VpZ2h0fSkpLG59KSk7cmV0dXJuIGlxdC56aXBPYmplY3QodC5ub2RlcygpLGUpfSxpbnRlcnNlY3RSZWN0OmZ1bmN0aW9uIHVxdCh0LGUpe3ZhciBuLGkscj10Lngsbz10LnksYT1lLngtcixzPWUueS1vLGw9dC53aWR0aC8yLGM9dC5oZWlnaHQvMjtpZighYSYmIXMpdGhyb3cgbmV3IEVycm9yKCJOb3QgcG9zc2libGUgdG8gZmluZCBpbnRlcnNlY3Rpb24gaW5zaWRlIG9mIHRoZSByZWN0YW5nbGUiKTtNYXRoLmFicyhzKSpsPk1hdGguYWJzKGEpKmM/KHM8MCYmKGM9LWMpLG49YyphL3MsaT1jKTooYTwwJiYobD0tbCksbj1sLGk9bCpzL2EpO3JldHVybnt4OnIrbix5Om8raX19LGJ1aWxkTGF5ZXJNYXRyaXg6ZnVuY3Rpb24gaHF0KHQpe3ZhciBlPWlxdC5tYXAoaXF0LnJhbmdlKHZxdCh0KSsxKSwoZnVuY3Rpb24oKXtyZXR1cm5bXX0pKTtyZXR1cm4gaXF0LmZvckVhY2godC5ub2RlcygpLChmdW5jdGlvbihuKXt2YXIgaT10Lm5vZGUobikscj1pLnJhbms7aXF0LmlzVW5kZWZpbmVkKHIpfHwoZVtyXVtpLm9yZGVyXT1uKX0pKSxlfSxub3JtYWxpemVSYW5rczpmdW5jdGlvbiBkcXQodCl7dmFyIGU9aXF0Lm1pbihpcXQubWFwKHQubm9kZXMoKSwoZnVuY3Rpb24oZSl7cmV0dXJuIHQubm9kZShlKS5yYW5rfSkpKTtpcXQuZm9yRWFjaCh0Lm5vZGVzKCksKGZ1bmN0aW9uKG4pe3ZhciBpPXQubm9kZShuKTtpcXQuaGFzKGksInJhbmsiKSYmKGkucmFuay09ZSl9KSl9LHJlbW92ZUVtcHR5UmFua3M6ZnVuY3Rpb24gcHF0KHQpe3ZhciBlPWlxdC5taW4oaXF0Lm1hcCh0Lm5vZGVzKCksKGZ1bmN0aW9uKGUpe3JldHVybiB0Lm5vZGUoZSkucmFua30pKSksbj1bXTtpcXQuZm9yRWFjaCh0Lm5vZGVzKCksKGZ1bmN0aW9uKGkpe3ZhciByPXQubm9kZShpKS5yYW5rLWU7bltyXXx8KG5bcl09W10pLG5bcl0ucHVzaChpKX0pKTt2YXIgaT0wLHI9dC5ncmFwaCgpLm5vZGVSYW5rRmFjdG9yO2lxdC5mb3JFYWNoKG4sKGZ1bmN0aW9uKGUsbil7aXF0LmlzVW5kZWZpbmVkKGUpJiZuJXIhPTA/LS1pOmkmJmlxdC5mb3JFYWNoKGUsKGZ1bmN0aW9uKGUpe3Qubm9kZShlKS5yYW5rKz1pfSkpfSkpfSxhZGRCb3JkZXJOb2RlOmZ1bmN0aW9uIGZxdCh0LGUsbixpKXt2YXIgcj17d2lkdGg6MCxoZWlnaHQ6MH07YXJndW1lbnRzLmxlbmd0aD49NCYmKHIucmFuaz1uLHIub3JkZXI9aSk7cmV0dXJuIHlxdCh0LCJib3JkZXIiLHIsZSl9LG1heFJhbms6dnF0LHBhcnRpdGlvbjpmdW5jdGlvbiBtcXQodCxlKXt2YXIgbj17bGhzOltdLHJoczpbXX07cmV0dXJuIGlxdC5mb3JFYWNoKHQsKGZ1bmN0aW9uKHQpe2UodCk/bi5saHMucHVzaCh0KTpuLnJocy5wdXNoKHQpfSkpLG59LHRpbWU6ZnVuY3Rpb24gZ3F0KHQsZSl7dmFyIG49aXF0Lm5vdygpO3RyeXtyZXR1cm4gZSgpfWZpbmFsbHl7Y29uc29sZS5sb2codCsiIHRpbWU6ICIrKGlxdC5ub3coKS1uKSsibXMiKX19LG5vdGltZTpmdW5jdGlvbiBfcXQodCxlKXtyZXR1cm4gZSgpfX07ZnVuY3Rpb24geXF0KHQsZSxuLGkpe3ZhciByO2Rve3I9aXF0LnVuaXF1ZUlkKGkpfXdoaWxlKHQuaGFzTm9kZShyKSk7cmV0dXJuIG4uZHVtbXk9ZSx0LnNldE5vZGUocixuKSxyfWZ1bmN0aW9uIHZxdCh0KXtyZXR1cm4gaXF0Lm1heChpcXQubWFwKHQubm9kZXMoKSwoZnVuY3Rpb24oZSl7dmFyIG49dC5ub2RlKGUpLnJhbms7aWYoIWlxdC5pc1VuZGVmaW5lZChuKSlyZXR1cm4gbn0pKSl9dmFyIGJxdD1IV3QseHF0PW9xdCx3cXQ9e3J1bjpmdW5jdGlvbiBTcXQodCl7dC5ncmFwaCgpLmR1bW15Q2hhaW5zPVtdLGJxdC5mb3JFYWNoKHQuZWRnZXMoKSwoZnVuY3Rpb24oZSl7IShmdW5jdGlvbiBuKHQsZSl7dmFyIG4saSxyLG89ZS52LGE9dC5ub2RlKG8pLnJhbmsscz1lLncsbD10Lm5vZGUocykucmFuayxjPWUubmFtZSx1PXQuZWRnZShlKSxoPXUubGFiZWxSYW5rO2lmKGw9PT1hKzEpcmV0dXJuO2Zvcih0LnJlbW92ZUVkZ2UoZSkscj0wLCsrYTthPGw7KytyLCsrYSl1LnBvaW50cz1bXSxuPXhxdC5hZGREdW1teU5vZGUodCwiZWRnZSIsaT17d2lkdGg6MCxoZWlnaHQ6MCxlZGdlTGFiZWw6dSxlZGdlT2JqOmUscmFuazphfSwiX2QiKSxhPT09aCYmKGkud2lkdGg9dS53aWR0aCxpLmhlaWdodD11LmhlaWdodCxpLmR1bW15PSJlZGdlLWxhYmVsIixpLmxhYmVscG9zPXUubGFiZWxwb3MpLHQuc2V0RWRnZShvLG4se3dlaWdodDp1LndlaWdodH0sYyksMD09PXImJnQuZ3JhcGgoKS5kdW1teUNoYWlucy5wdXNoKG4pLG89bjt0LnNldEVkZ2UobyxzLHt3ZWlnaHQ6dS53ZWlnaHR9LGMpfSkodCxlKX0pKX0sdW5kbzpmdW5jdGlvbiBNcXQodCl7YnF0LmZvckVhY2godC5ncmFwaCgpLmR1bW15Q2hhaW5zLChmdW5jdGlvbihlKXt2YXIgbixpPXQubm9kZShlKSxyPWkuZWRnZUxhYmVsO2Zvcih0LnNldEVkZ2UoaS5lZGdlT2JqLHIpO2kuZHVtbXk7KW49dC5zdWNjZXNzb3JzKGUpWzBdLHQucmVtb3ZlTm9kZShlKSxyLnBvaW50cy5wdXNoKHt4OmkueCx5OmkueX0pLCJlZGdlLWxhYmVsIj09PWkuZHVtbXkmJihyLng9aS54LHIueT1pLnksci53aWR0aD1pLndpZHRoLHIuaGVpZ2h0PWkuaGVpZ2h0KSxpPXQubm9kZShlPW4pfSkpfX07dmFyIEVxdD1IV3QsVHF0PXtsb25nZXN0UGF0aDpmdW5jdGlvbiBDcXQodCl7dmFyIGU9e307RXF0LmZvckVhY2godC5zb3VyY2VzKCksKGZ1bmN0aW9uIG4oaSl7dmFyIHI9dC5ub2RlKGkpO2lmKEVxdC5oYXMoZSxpKSlyZXR1cm4gci5yYW5rO2VbaV09ITA7dmFyIG89RXF0Lm1pbihFcXQubWFwKHQub3V0RWRnZXMoaSksKGZ1bmN0aW9uKGUpe3JldHVybiBuKGUudyktdC5lZGdlKGUpLm1pbmxlbn0pKSk7cmV0dXJuIG8hPT1OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkmJm51bGwhPW98fChvPTApLHIucmFuaz1vfSkpfSxzbGFjazpmdW5jdGlvbiBBcXQodCxlKXtyZXR1cm4gdC5ub2RlKGUudykucmFuay10Lm5vZGUoZS52KS5yYW5rLXQuZWRnZShlKS5taW5sZW59fTt2YXIga3F0PUhXdCxMcXQ9eVV0LkdyYXBoLFBxdD1UcXQuc2xhY2ssTnF0PWZ1bmN0aW9uIElxdCh0KXt2YXIgZSxuLGk9bmV3IExxdCh7ZGlyZWN0ZWQ6ITF9KSxyPXQubm9kZXMoKVswXSxvPXQubm9kZUNvdW50KCk7aS5zZXROb2RlKHIse30pO2Zvcig7UnF0KGksdCk8bzspZT1PcXQoaSx0KSxuPWkuaGFzTm9kZShlLnYpP1BxdCh0LGUpOi1QcXQodCxlKSx6cXQoaSx0LG4pO3JldHVybiBpfTtmdW5jdGlvbiBScXQodCxlKXtyZXR1cm4ga3F0LmZvckVhY2godC5ub2RlcygpLChmdW5jdGlvbiBuKGkpe2txdC5mb3JFYWNoKGUubm9kZUVkZ2VzKGkpLChmdW5jdGlvbihyKXt2YXIgbz1yLnYsYT1pPT09bz9yLnc6bzt0Lmhhc05vZGUoYSl8fFBxdChlLHIpfHwodC5zZXROb2RlKGEse30pLHQuc2V0RWRnZShpLGEse30pLG4oYSkpfSkpfSkpLHQubm9kZUNvdW50KCl9ZnVuY3Rpb24gT3F0KHQsZSl7cmV0dXJuIGtxdC5taW5CeShlLmVkZ2VzKCksKGZ1bmN0aW9uKG4pe2lmKHQuaGFzTm9kZShuLnYpIT09dC5oYXNOb2RlKG4udykpcmV0dXJuIFBxdChlLG4pfSkpfWZ1bmN0aW9uIHpxdCh0LGUsbil7a3F0LmZvckVhY2godC5ub2RlcygpLChmdW5jdGlvbih0KXtlLm5vZGUodCkucmFuays9bn0pKX12YXIgRHF0PUhXdCxCcXQ9TnF0LEhxdD1UcXQuc2xhY2ssRnF0PVRxdC5sb25nZXN0UGF0aCxWcXQ9eVV0LmFsZy5wcmVvcmRlcixVcXQ9eVV0LmFsZy5wb3N0b3JkZXIsanF0PW9xdC5zaW1wbGlmeSxHcXQ9V3F0O2Z1bmN0aW9uIFdxdCh0KXt0PWpxdCh0KSxGcXQodCk7dmFyIGUsbj1CcXQodCk7Zm9yKFhxdChuKSxxcXQobix0KTtlPUtxdChuKTspSnF0KG4sdCxlLFpxdChuLHQsZSkpfWZ1bmN0aW9uIHFxdCh0LGUpe3ZhciBuPVVxdCh0LHQubm9kZXMoKSk7bj1uLnNsaWNlKDAsbi5sZW5ndGgtMSksRHF0LmZvckVhY2gobiwoZnVuY3Rpb24obil7IShmdW5jdGlvbiBpKHQsZSxuKXt2YXIgaT10Lm5vZGUobik7dC5lZGdlKG4saS5wYXJlbnQpLmN1dHZhbHVlPVlxdCh0LGUsbil9KSh0LGUsbil9KSl9ZnVuY3Rpb24gWXF0KHQsZSxuKXt2YXIgaT10Lm5vZGUobikucGFyZW50LHI9ITAsbz1lLmVkZ2UobixpKSxhPTA7cmV0dXJuIG98fChyPSExLG89ZS5lZGdlKGksbikpLGE9by53ZWlnaHQsRHF0LmZvckVhY2goZS5ub2RlRWRnZXMobiksKGZ1bmN0aW9uKG8pe3ZhciBzPW8udj09PW4sbD1zP28udzpvLnY7aWYobCE9PWkpe3ZhciBjPXM9PT1yLHU9ZS5lZGdlKG8pLndlaWdodDtpZihhKz1jP3U6LXUsKGZ1bmN0aW9uIGgodCxlLG4pe3JldHVybiB0Lmhhc0VkZ2UoZSxuKX0pKHQsbixsKSl7dmFyIGQ9dC5lZGdlKG4sbCkuY3V0dmFsdWU7YSs9Yz8tZDpkfX19KSksYX1mdW5jdGlvbiBYcXQodCxlKXthcmd1bWVudHMubGVuZ3RoPDImJihlPXQubm9kZXMoKVswXSksJHF0KHQse30sMSxlKX1mdW5jdGlvbiAkcXQodCxlLG4saSxyKXt2YXIgbz1uLGE9dC5ub2RlKGkpO3JldHVybiBlW2ldPSEwLERxdC5mb3JFYWNoKHQubmVpZ2hib3JzKGkpLChmdW5jdGlvbihyKXtEcXQuaGFzKGUscil8fChuPSRxdCh0LGUsbixyLGkpKX0pKSxhLmxvdz1vLGEubGltPW4rKyxyP2EucGFyZW50PXI6ZGVsZXRlIGEucGFyZW50LG59ZnVuY3Rpb24gS3F0KHQpe3JldHVybiBEcXQuZmluZCh0LmVkZ2VzKCksKGZ1bmN0aW9uKGUpe3JldHVybiB0LmVkZ2UoZSkuY3V0dmFsdWU8MH0pKX1mdW5jdGlvbiBacXQodCxlLG4pe3ZhciBpPW4udixyPW4udztlLmhhc0VkZ2UoaSxyKXx8KGk9bi53LHI9bi52KTt2YXIgbz10Lm5vZGUoaSksYT10Lm5vZGUocikscz1vLGw9ITE7by5saW0+YS5saW0mJihzPWEsbD0hMCk7dmFyIGM9RHF0LmZpbHRlcihlLmVkZ2VzKCksKGZ1bmN0aW9uKGUpe3JldHVybiBsPT09UXF0KHQsdC5ub2RlKGUudikscykmJmwhPT1RcXQodCx0Lm5vZGUoZS53KSxzKX0pKTtyZXR1cm4gRHF0Lm1pbkJ5KGMsKGZ1bmN0aW9uKHQpe3JldHVybiBIcXQoZSx0KX0pKX1mdW5jdGlvbiBKcXQodCxlLG4saSl7dC5yZW1vdmVFZGdlKG4udixuLncpLHQuc2V0RWRnZShpLnYsaS53LHt9KSxYcXQodCkscXF0KHQsZSksKGZ1bmN0aW9uIHIodCxlKXt2YXIgbj1EcXQuZmluZCh0Lm5vZGVzKCksKGZ1bmN0aW9uKHQpe3JldHVybiFlLm5vZGUodCkucGFyZW50fSkpLGk9VnF0KHQsbik7aT1pLnNsaWNlKDEpLERxdC5mb3JFYWNoKGksKGZ1bmN0aW9uKG4pe3ZhciBpPXQubm9kZShuKS5wYXJlbnQscj1lLmVkZ2UobixpKSxvPSExO3J8fChyPWUuZWRnZShpLG4pLG89ITApLGUubm9kZShuKS5yYW5rPWUubm9kZShpKS5yYW5rKyhvP3IubWlubGVuOi1yLm1pbmxlbil9KSl9KSh0LGUpfWZ1bmN0aW9uIFFxdCh0LGUsbil7cmV0dXJuIG4ubG93PD1lLmxpbSYmZS5saW08PW4ubGltfVdxdC5pbml0TG93TGltVmFsdWVzPVhxdCxXcXQuaW5pdEN1dFZhbHVlcz1xcXQsV3F0LmNhbGNDdXRWYWx1ZT1ZcXQsV3F0LmxlYXZlRWRnZT1LcXQsV3F0LmVudGVyRWRnZT1acXQsV3F0LmV4Y2hhbmdlRWRnZXM9SnF0O3ZhciB0WXQ9VHF0Lmxvbmdlc3RQYXRoLGVZdD1OcXQsbll0PUdxdCxpWXQ9ZnVuY3Rpb24gcll0KHQpe3N3aXRjaCh0LmdyYXBoKCkucmFua2VyKXtjYXNlIm5ldHdvcmstc2ltcGxleCI6YVl0KHQpO2JyZWFrO2Nhc2UidGlnaHQtdHJlZSI6IShmdW5jdGlvbiBlKHQpe3RZdCh0KSxlWXQodCl9KSh0KTticmVhaztjYXNlImxvbmdlc3QtcGF0aCI6b1l0KHQpO2JyZWFrO2RlZmF1bHQ6YVl0KHQpfX07dmFyIG9ZdD10WXQ7ZnVuY3Rpb24gYVl0KHQpe25ZdCh0KX12YXIgc1l0PUhXdDt2YXIgbFl0PUhXdCxjWXQ9b3F0O2Z1bmN0aW9uIHVZdCh0LGUsbixpLHIsbyxhKXt2YXIgcz10LmNoaWxkcmVuKGEpO2lmKHMubGVuZ3RoKXt2YXIgbD1jWXQuYWRkQm9yZGVyTm9kZSh0LCJfYnQiKSxjPWNZdC5hZGRCb3JkZXJOb2RlKHQsIl9iYiIpLHU9dC5ub2RlKGEpO3Quc2V0UGFyZW50KGwsYSksdS5ib3JkZXJUb3A9bCx0LnNldFBhcmVudChjLGEpLHUuYm9yZGVyQm90dG9tPWMsbFl0LmZvckVhY2gocywoZnVuY3Rpb24ocyl7dVl0KHQsZSxuLGkscixvLHMpO3ZhciB1PXQubm9kZShzKSxoPXUuYm9yZGVyVG9wP3UuYm9yZGVyVG9wOnMsZD11LmJvcmRlckJvdHRvbT91LmJvcmRlckJvdHRvbTpzLHA9dS5ib3JkZXJUb3A/aToyKmksZj1oIT09ZD8xOnItb1thXSsxO3Quc2V0RWRnZShsLGgse3dlaWdodDpwLG1pbmxlbjpmLG5lc3RpbmdFZGdlOiEwfSksdC5zZXRFZGdlKGQsYyx7d2VpZ2h0OnAsbWlubGVuOmYsbmVzdGluZ0VkZ2U6ITB9KX0pKSx0LnBhcmVudChhKXx8dC5zZXRFZGdlKGUsbCx7d2VpZ2h0OjAsbWlubGVuOnIrb1thXX0pfWVsc2UgYSE9PWUmJnQuc2V0RWRnZShlLGEse3dlaWdodDowLG1pbmxlbjpufSl9dmFyIGhZdD1IV3QsZFl0PW9xdCxwWXQ9ZnVuY3Rpb24gZll0KHQpe2hZdC5mb3JFYWNoKHQuY2hpbGRyZW4oKSwoZnVuY3Rpb24gZShuKXt2YXIgaT10LmNoaWxkcmVuKG4pLHI9dC5ub2RlKG4pO2lmKGkubGVuZ3RoJiZoWXQuZm9yRWFjaChpLGUpLGhZdC5oYXMociwibWluUmFuayIpKXtyLmJvcmRlckxlZnQ9W10sci5ib3JkZXJSaWdodD1bXTtmb3IodmFyIG89ci5taW5SYW5rLGE9ci5tYXhSYW5rKzE7bzxhOysrbyltWXQodCwiYm9yZGVyTGVmdCIsIl9ibCIsbixyLG8pLG1ZdCh0LCJib3JkZXJSaWdodCIsIl9iciIsbixyLG8pfX0pKX07ZnVuY3Rpb24gbVl0KHQsZSxuLGkscixvKXt2YXIgYT1yW2VdW28tMV0scz1kWXQuYWRkRHVtbXlOb2RlKHQsImJvcmRlciIse3dpZHRoOjAsaGVpZ2h0OjAscmFuazpvLGJvcmRlclR5cGU6ZX0sbik7cltlXVtvXT1zLHQuc2V0UGFyZW50KHMsaSksYSYmdC5zZXRFZGdlKGEscyx7d2VpZ2h0OjF9KX12YXIgZ1l0PUhXdDtmdW5jdGlvbiBfWXQodCl7Z1l0LmZvckVhY2godC5ub2RlcygpLChmdW5jdGlvbihlKXt5WXQodC5ub2RlKGUpKX0pKSxnWXQuZm9yRWFjaCh0LmVkZ2VzKCksKGZ1bmN0aW9uKGUpe3lZdCh0LmVkZ2UoZSkpfSkpfWZ1bmN0aW9uIHlZdCh0KXt2YXIgZT10LndpZHRoO3Qud2lkdGg9dC5oZWlnaHQsdC5oZWlnaHQ9ZX1mdW5jdGlvbiB2WXQodCl7dC55PS10Lnl9ZnVuY3Rpb24gYll0KHQpe3ZhciBlPXQueDt0Lng9dC55LHQueT1lfXZhciB4WXQ9SFd0O3ZhciB3WXQ9SFd0O2Z1bmN0aW9uIFNZdCh0LGUsbil7Zm9yKHZhciBpPXdZdC56aXBPYmplY3Qobix3WXQubWFwKG4sKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGV9KSkpLHI9d1l0LmZsYXR0ZW4od1l0Lm1hcChlLChmdW5jdGlvbihlKXtyZXR1cm4gd1l0LnNvcnRCeSh3WXQubWFwKHQub3V0RWRnZXMoZSksKGZ1bmN0aW9uKGUpe3JldHVybntwb3M6aVtlLnddLHdlaWdodDp0LmVkZ2UoZSkud2VpZ2h0fX0pKSwicG9zIil9KSksITApLG89MTtvPG4ubGVuZ3RoOylvPDw9MTt2YXIgYT0yKm8tMTtvLT0xO3ZhciBzPXdZdC5tYXAobmV3IEFycmF5KGEpLChmdW5jdGlvbigpe3JldHVybiAwfSkpLGw9MDtyZXR1cm4gd1l0LmZvckVhY2goci5mb3JFYWNoKChmdW5jdGlvbih0KXt2YXIgZT10LnBvcytvO3NbZV0rPXQud2VpZ2h0O2Zvcih2YXIgbj0wO2U+MDspZSUyJiYobis9c1tlKzFdKSxzW2U9ZS0xPj4xXSs9dC53ZWlnaHQ7bCs9dC53ZWlnaHQqbn0pKSksbH12YXIgTVl0PUhXdDt2YXIgRVl0PUhXdDt2YXIgVFl0PUhXdCxDWXQ9b3F0O2Z1bmN0aW9uIEFZdCh0LGUsbil7Zm9yKHZhciBpO2UubGVuZ3RoJiYoaT1UWXQubGFzdChlKSkuaTw9bjspZS5wb3AoKSx0LnB1c2goaS52cyksbisrO3JldHVybiBufXZhciBrWXQ9SFd0LExZdD1mdW5jdGlvbiBQWXQodCxlKXtyZXR1cm4gTVl0Lm1hcChlLChmdW5jdGlvbihlKXt2YXIgbj10LmluRWRnZXMoZSk7aWYobi5sZW5ndGgpe3ZhciBpPU1ZdC5yZWR1Y2UobiwoZnVuY3Rpb24oZSxuKXt2YXIgaT10LmVkZ2Uobikscj10Lm5vZGUobi52KTtyZXR1cm57c3VtOmUuc3VtK2kud2VpZ2h0KnIub3JkZXIsd2VpZ2h0OmUud2VpZ2h0K2kud2VpZ2h0fX0pLHtzdW06MCx3ZWlnaHQ6MH0pO3JldHVybnt2OmUsYmFyeWNlbnRlcjppLnN1bS9pLndlaWdodCx3ZWlnaHQ6aS53ZWlnaHR9fXJldHVybnt2OmV9fSkpfSxOWXQ9ZnVuY3Rpb24gSVl0KHQsZSl7dmFyIG49e307cmV0dXJuIEVZdC5mb3JFYWNoKHQsKGZ1bmN0aW9uKHQsZSl7dmFyIGk9blt0LnZdPXtpbmRlZ3JlZTowLGluOltdLG91dDpbXSx2czpbdC52XSxpOmV9O0VZdC5pc1VuZGVmaW5lZCh0LmJhcnljZW50ZXIpfHwoaS5iYXJ5Y2VudGVyPXQuYmFyeWNlbnRlcixpLndlaWdodD10LndlaWdodCl9KSksRVl0LmZvckVhY2goZS5lZGdlcygpLChmdW5jdGlvbih0KXt2YXIgZT1uW3Qudl0saT1uW3Qud107RVl0LmlzVW5kZWZpbmVkKGUpfHxFWXQuaXNVbmRlZmluZWQoaSl8fChpLmluZGVncmVlKyssZS5vdXQucHVzaChuW3Qud10pKX0pKSwoZnVuY3Rpb24gaSh0KXt2YXIgZT1bXTtmdW5jdGlvbiBuKHQpe3JldHVybiBmdW5jdGlvbihlKXtlLm1lcmdlZHx8KEVZdC5pc1VuZGVmaW5lZChlLmJhcnljZW50ZXIpfHxFWXQuaXNVbmRlZmluZWQodC5iYXJ5Y2VudGVyKXx8ZS5iYXJ5Y2VudGVyPj10LmJhcnljZW50ZXIpJiYoZnVuY3Rpb24gbih0LGUpe3ZhciBuPTAsaT0wO3Qud2VpZ2h0JiYobis9dC5iYXJ5Y2VudGVyKnQud2VpZ2h0LGkrPXQud2VpZ2h0KTtlLndlaWdodCYmKG4rPWUuYmFyeWNlbnRlciplLndlaWdodCxpKz1lLndlaWdodCk7dC52cz1lLnZzLmNvbmNhdCh0LnZzKSx0LmJhcnljZW50ZXI9bi9pLHQud2VpZ2h0PWksdC5pPU1hdGgubWluKGUuaSx0LmkpLGUubWVyZ2VkPSEwfSkodCxlKX19ZnVuY3Rpb24gaShlKXtyZXR1cm4gZnVuY3Rpb24obil7bi5pbi5wdXNoKGUpLDA9PS0tbi5pbmRlZ3JlZSYmdC5wdXNoKG4pfX1mb3IoO3QubGVuZ3RoOyl7dmFyIHI9dC5wb3AoKTtlLnB1c2gociksRVl0LmZvckVhY2goci5pbi5yZXZlcnNlKCksbihyKSksRVl0LmZvckVhY2goci5vdXQsaShyKSl9cmV0dXJuIEVZdC5tYXAoRVl0LmZpbHRlcihlLChmdW5jdGlvbih0KXtyZXR1cm4hdC5tZXJnZWR9KSksKGZ1bmN0aW9uKHQpe3JldHVybiBFWXQucGljayh0LFsidnMiLCJpIiwiYmFyeWNlbnRlciIsIndlaWdodCJdKX0pKX0pKEVZdC5maWx0ZXIobiwoZnVuY3Rpb24odCl7cmV0dXJuIXQuaW5kZWdyZWV9KSkpfSxSWXQ9ZnVuY3Rpb24gT1l0KHQsZSl7dmFyIG49Q1l0LnBhcnRpdGlvbih0LChmdW5jdGlvbih0KXtyZXR1cm4gVFl0Lmhhcyh0LCJiYXJ5Y2VudGVyIil9KSksaT1uLmxocyxyPVRZdC5zb3J0Qnkobi5yaHMsKGZ1bmN0aW9uKHQpe3JldHVybi10Lml9KSksbz1bXSxhPTAscz0wLGw9MDtpLnNvcnQoKGZ1bmN0aW9uIGModCl7cmV0dXJuIGZ1bmN0aW9uKGUsbil7cmV0dXJuIGUuYmFyeWNlbnRlcjxuLmJhcnljZW50ZXI/LTE6ZS5iYXJ5Y2VudGVyPm4uYmFyeWNlbnRlcj8xOnQ/bi5pLWUuaTplLmktbi5pfX0pKCEhZSkpLGw9QVl0KG8scixsKSxUWXQuZm9yRWFjaChpLChmdW5jdGlvbih0KXtsKz10LnZzLmxlbmd0aCxvLnB1c2godC52cyksYSs9dC5iYXJ5Y2VudGVyKnQud2VpZ2h0LHMrPXQud2VpZ2h0LGw9QVl0KG8scixsKX0pKTt2YXIgdT17dnM6VFl0LmZsYXR0ZW4obywhMCl9O3MmJih1LmJhcnljZW50ZXI9YS9zLHUud2VpZ2h0PXMpO3JldHVybiB1fTt2YXIgell0PUhXdCxEWXQ9eVV0LkdyYXBoO3ZhciBCWXQ9SFd0O3ZhciBIWXQ9SFd0LEZZdD1mdW5jdGlvbiBWWXQodCl7dmFyIGU9e30sbj14WXQuZmlsdGVyKHQubm9kZXMoKSwoZnVuY3Rpb24oZSl7cmV0dXJuIXQuY2hpbGRyZW4oZSkubGVuZ3RofSkpLGk9eFl0Lm1heCh4WXQubWFwKG4sKGZ1bmN0aW9uKGUpe3JldHVybiB0Lm5vZGUoZSkucmFua30pKSkscj14WXQubWFwKHhZdC5yYW5nZShpKzEpLChmdW5jdGlvbigpe3JldHVybltdfSkpO2Z1bmN0aW9uIG8obil7aWYoIXhZdC5oYXMoZSxuKSl7ZVtuXT0hMDt2YXIgaT10Lm5vZGUobik7cltpLnJhbmtdLnB1c2gobikseFl0LmZvckVhY2godC5zdWNjZXNzb3JzKG4pLG8pfX12YXIgYT14WXQuc29ydEJ5KG4sKGZ1bmN0aW9uKGUpe3JldHVybiB0Lm5vZGUoZSkucmFua30pKTtyZXR1cm4geFl0LmZvckVhY2goYSxvKSxyfSxVWXQ9ZnVuY3Rpb24gall0KHQsZSl7Zm9yKHZhciBuPTAsaT0xO2k8ZS5sZW5ndGg7KytpKW4rPVNZdCh0LGVbaS0xXSxlW2ldKTtyZXR1cm4gbn0sR1l0PWZ1bmN0aW9uIHQoZSxuLGkscil7dmFyIG89ZS5jaGlsZHJlbihuKSxhPWUubm9kZShuKSxzPWE/YS5ib3JkZXJMZWZ0OnZvaWQgMCxsPWE/YS5ib3JkZXJSaWdodDp2b2lkIDAsYz17fTtzJiYobz1rWXQuZmlsdGVyKG8sKGZ1bmN0aW9uKHQpe3JldHVybiB0IT09cyYmdCE9PWx9KSkpO3ZhciB1PUxZdChlLG8pO2tZdC5mb3JFYWNoKHUsKGZ1bmN0aW9uKG4pe2lmKGUuY2hpbGRyZW4obi52KS5sZW5ndGgpe3ZhciBvPXQoZSxuLnYsaSxyKTtjW24udl09byxrWXQuaGFzKG8sImJhcnljZW50ZXIiKSYmKGZ1bmN0aW9uIGEodCxlKXtrWXQuaXNVbmRlZmluZWQodC5iYXJ5Y2VudGVyKT8odC5iYXJ5Y2VudGVyPWUuYmFyeWNlbnRlcix0LndlaWdodD1lLndlaWdodCk6KHQuYmFyeWNlbnRlcj0odC5iYXJ5Y2VudGVyKnQud2VpZ2h0K2UuYmFyeWNlbnRlciplLndlaWdodCkvKHQud2VpZ2h0K2Uud2VpZ2h0KSx0LndlaWdodCs9ZS53ZWlnaHQpfSkobixvKX19KSk7dmFyIGg9Tll0KHUsaSk7IShmdW5jdGlvbiBkKHQsZSl7a1l0LmZvckVhY2godCwoZnVuY3Rpb24odCl7dC52cz1rWXQuZmxhdHRlbih0LnZzLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIGVbdF0/ZVt0XS52czp0fSkpLCEwKX0pKX0pKGgsYyk7dmFyIHA9Ull0KGgscik7aWYocyYmKHAudnM9a1l0LmZsYXR0ZW4oW3MscC52cyxsXSwhMCksZS5wcmVkZWNlc3NvcnMocykubGVuZ3RoKSl7dmFyIGY9ZS5ub2RlKGUucHJlZGVjZXNzb3JzKHMpWzBdKSxtPWUubm9kZShlLnByZWRlY2Vzc29ycyhsKVswXSk7a1l0LmhhcyhwLCJiYXJ5Y2VudGVyIil8fChwLmJhcnljZW50ZXI9MCxwLndlaWdodD0wKSxwLmJhcnljZW50ZXI9KHAuYmFyeWNlbnRlcipwLndlaWdodCtmLm9yZGVyK20ub3JkZXIpLyhwLndlaWdodCsyKSxwLndlaWdodCs9Mn1yZXR1cm4gcH0sV1l0PWZ1bmN0aW9uIHFZdCh0LGUsbil7dmFyIGk9KGZ1bmN0aW9uIHIodCl7dmFyIGU7Zm9yKDt0Lmhhc05vZGUoZT16WXQudW5pcXVlSWQoIl9yb290IikpOyk7cmV0dXJuIGV9KSh0KSxvPW5ldyBEWXQoe2NvbXBvdW5kOiEwfSkuc2V0R3JhcGgoe3Jvb3Q6aX0pLnNldERlZmF1bHROb2RlTGFiZWwoKGZ1bmN0aW9uKGUpe3JldHVybiB0Lm5vZGUoZSl9KSk7cmV0dXJuIHpZdC5mb3JFYWNoKHQubm9kZXMoKSwoZnVuY3Rpb24ocil7dmFyIGE9dC5ub2RlKHIpLHM9dC5wYXJlbnQocik7KGEucmFuaz09PWV8fGEubWluUmFuazw9ZSYmZTw9YS5tYXhSYW5rKSYmKG8uc2V0Tm9kZShyKSxvLnNldFBhcmVudChyLHN8fGkpLHpZdC5mb3JFYWNoKHRbbl0ociksKGZ1bmN0aW9uKGUpe3ZhciBuPWUudj09PXI/ZS53OmUudixpPW8uZWRnZShuLHIpLGE9ell0LmlzVW5kZWZpbmVkKGkpPzA6aS53ZWlnaHQ7by5zZXRFZGdlKG4scix7d2VpZ2h0OnQuZWRnZShlKS53ZWlnaHQrYX0pfSkpLHpZdC5oYXMoYSwibWluUmFuayIpJiZvLnNldE5vZGUocix7Ym9yZGVyTGVmdDphLmJvcmRlckxlZnRbZV0sYm9yZGVyUmlnaHQ6YS5ib3JkZXJSaWdodFtlXX0pKX0pKSxvfSxZWXQ9ZnVuY3Rpb24gWFl0KHQsZSxuKXt2YXIgaSxyPXt9O0JZdC5mb3JFYWNoKG4sKGZ1bmN0aW9uKG4pe2Zvcih2YXIgbyxhLHM9dC5wYXJlbnQobik7czspe2lmKChvPXQucGFyZW50KHMpKT8oYT1yW29dLHJbb109cyk6KGE9aSxpPXMpLGEmJmEhPT1zKXJldHVybiB2b2lkIGUuc2V0RWRnZShhLHMpO3M9b319KSl9LCRZdD15VXQuR3JhcGgsS1l0PW9xdDtmdW5jdGlvbiBaWXQodCxlLG4pe3JldHVybiBIWXQubWFwKGUsKGZ1bmN0aW9uKGUpe3JldHVybiBXWXQodCxlLG4pfSkpfWZ1bmN0aW9uIEpZdCh0LGUpe3ZhciBuPW5ldyAkWXQ7SFl0LmZvckVhY2godCwoZnVuY3Rpb24odCl7dmFyIGk9dC5ncmFwaCgpLnJvb3Qscj1HWXQodCxpLG4sZSk7SFl0LmZvckVhY2goci52cywoZnVuY3Rpb24oZSxuKXt0Lm5vZGUoZSkub3JkZXI9bn0pKSxZWXQodCxuLHIudnMpfSkpfWZ1bmN0aW9uIFFZdCh0LGUpe0hZdC5mb3JFYWNoKGUsKGZ1bmN0aW9uKGUpe0hZdC5mb3JFYWNoKGUsKGZ1bmN0aW9uKGUsbil7dC5ub2RlKGUpLm9yZGVyPW59KSl9KSl9dmFyIHRYdD1IV3QsZVh0PXlVdC5HcmFwaCxuWHQ9b3F0LGlYdD1mdW5jdGlvbiByWHQodCl7dmFyIGUsbj1uWHQuYnVpbGRMYXllck1hdHJpeCh0KSxpPXRYdC5tZXJnZShvWHQodCxuKSxhWHQodCxuKSkscj17fTt0WHQuZm9yRWFjaChbInUiLCJkIl0sKGZ1bmN0aW9uKG8pe2U9InUiPT09bz9uOnRYdC52YWx1ZXMobikucmV2ZXJzZSgpLHRYdC5mb3JFYWNoKFsibCIsInIiXSwoZnVuY3Rpb24obil7InIiPT09biYmKGU9dFh0Lm1hcChlLChmdW5jdGlvbih0KXtyZXR1cm4gdFh0LnZhbHVlcyh0KS5yZXZlcnNlKCl9KSkpO3ZhciBhPSgidSI9PT1vP3QucHJlZGVjZXNzb3JzOnQuc3VjY2Vzc29ycykuYmluZCh0KSxzPWNYdCh0LGUsaSxhKSxsPXVYdCh0LGUscy5yb290LHMuYWxpZ24sInIiPT09bik7InIiPT09biYmKGw9dFh0Lm1hcFZhbHVlcyhsLChmdW5jdGlvbih0KXtyZXR1cm4tdH0pKSkscltvK25dPWx9KSl9KSk7dmFyIG89aFh0KHQscik7cmV0dXJuIGRYdChyLG8pLHBYdChyLHQuZ3JhcGgoKS5hbGlnbil9O2Z1bmN0aW9uIG9YdCh0LGUpe3ZhciBuPXt9O3JldHVybiB0WHQucmVkdWNlKGUsKGZ1bmN0aW9uIGkoZSxyKXt2YXIgbz0wLGE9MCxzPWUubGVuZ3RoLGw9dFh0Lmxhc3Qocik7cmV0dXJuIHRYdC5mb3JFYWNoKHIsKGZ1bmN0aW9uKGUsaSl7dmFyIGM9KGZ1bmN0aW9uIHUodCxlKXtpZih0Lm5vZGUoZSkuZHVtbXkpcmV0dXJuIHRYdC5maW5kKHQucHJlZGVjZXNzb3JzKGUpLChmdW5jdGlvbihlKXtyZXR1cm4gdC5ub2RlKGUpLmR1bW15fSkpfSkodCxlKSxoPWM/dC5ub2RlKGMpLm9yZGVyOnM7KGN8fGU9PT1sKSYmKHRYdC5mb3JFYWNoKHIuc2xpY2UoYSxpKzEpLChmdW5jdGlvbihlKXt0WHQuZm9yRWFjaCh0LnByZWRlY2Vzc29ycyhlKSwoZnVuY3Rpb24oaSl7dmFyIHI9dC5ub2RlKGkpLGE9ci5vcmRlcjshKGE8b3x8aDxhKXx8ci5kdW1teSYmdC5ub2RlKGUpLmR1bW15fHxzWHQobixpLGUpfSkpfSkpLGE9aSsxLG89aCl9KSkscn0pKSxufWZ1bmN0aW9uIGFYdCh0LGUpe3ZhciBuPXt9O2Z1bmN0aW9uIGkoZSxpLHIsbyxhKXt2YXIgczt0WHQuZm9yRWFjaCh0WHQucmFuZ2UoaSxyKSwoZnVuY3Rpb24oaSl7dC5ub2RlKHM9ZVtpXSkuZHVtbXkmJnRYdC5mb3JFYWNoKHQucHJlZGVjZXNzb3JzKHMpLChmdW5jdGlvbihlKXt2YXIgaT10Lm5vZGUoZSk7aS5kdW1teSYmKGkub3JkZXI8b3x8aS5vcmRlcj5hKSYmc1h0KG4sZSxzKX0pKX0pKX1yZXR1cm4gdFh0LnJlZHVjZShlLChmdW5jdGlvbiByKGUsbil7dmFyIHIsbz0tMSxhPTA7cmV0dXJuIHRYdC5mb3JFYWNoKG4sKGZ1bmN0aW9uKHMsbCl7aWYoImJvcmRlciI9PT10Lm5vZGUocykuZHVtbXkpe3ZhciBjPXQucHJlZGVjZXNzb3JzKHMpO2MubGVuZ3RoJiYocj10Lm5vZGUoY1swXSkub3JkZXIsaShuLGEsbCxvLHIpLGE9bCxvPXIpfWkobixhLG4ubGVuZ3RoLHIsZS5sZW5ndGgpfSkpLG59KSksbn1mdW5jdGlvbiBzWHQodCxlLG4pe2lmKGU+bil7dmFyIGk9ZTtlPW4sbj1pfXZhciByPXRbZV07cnx8KHRbZV09cj17fSkscltuXT0hMH1mdW5jdGlvbiBsWHQodCxlLG4pe2lmKGU+bil7dmFyIGk9ZTtlPW4sbj1pfXJldHVybiB0WHQuaGFzKHRbZV0sbil9ZnVuY3Rpb24gY1h0KHQsZSxuLGkpe3ZhciByPXt9LG89e30sYT17fTtyZXR1cm4gdFh0LmZvckVhY2goZSwoZnVuY3Rpb24odCl7dFh0LmZvckVhY2godCwoZnVuY3Rpb24odCxlKXtyW3RdPXQsb1t0XT10LGFbdF09ZX0pKX0pKSx0WHQuZm9yRWFjaChlLChmdW5jdGlvbih0KXt2YXIgZT0tMTt0WHQuZm9yRWFjaCh0LChmdW5jdGlvbih0KXt2YXIgcz1pKHQpO2lmKHMubGVuZ3RoKWZvcih2YXIgbD0oKHM9dFh0LnNvcnRCeShzLChmdW5jdGlvbih0KXtyZXR1cm4gYVt0XX0pKSkubGVuZ3RoLTEpLzIsYz1NYXRoLmZsb29yKGwpLHU9TWF0aC5jZWlsKGwpO2M8PXU7KytjKXt2YXIgaD1zW2NdO29bdF09PT10JiZlPGFbaF0mJiFsWHQobix0LGgpJiYob1toXT10LG9bdF09clt0XT1yW2hdLGU9YVtoXSl9fSkpfSkpLHtyb290OnIsYWxpZ246b319ZnVuY3Rpb24gdVh0KHQsZSxuLGkscil7dmFyIG89e30sYT0oZnVuY3Rpb24gcyh0LGUsbixpKXt2YXIgcj1uZXcgZVh0LG89dC5ncmFwaCgpLGE9KGZ1bmN0aW9uIHModCxlLG4pe3JldHVybiBmdW5jdGlvbihpLHIsbyl7dmFyIGEscz1pLm5vZGUociksbD1pLm5vZGUobyksYz0wO2lmKGMrPXMud2lkdGgvMix0WHQuaGFzKHMsImxhYmVscG9zIikpc3dpdGNoKHMubGFiZWxwb3MudG9Mb3dlckNhc2UoKSl7Y2FzZSJsIjphPS1zLndpZHRoLzI7YnJlYWs7Y2FzZSJyIjphPXMud2lkdGgvMn1pZihhJiYoYys9bj9hOi1hKSxhPTAsYys9KHMuZHVtbXk/ZTp0KS8yLGMrPShsLmR1bW15P2U6dCkvMixjKz1sLndpZHRoLzIsdFh0LmhhcyhsLCJsYWJlbHBvcyIpKXN3aXRjaChsLmxhYmVscG9zLnRvTG93ZXJDYXNlKCkpe2Nhc2UibCI6YT1sLndpZHRoLzI7YnJlYWs7Y2FzZSJyIjphPS1sLndpZHRoLzJ9cmV0dXJuIGEmJihjKz1uP2E6LWEpLGE9MCxjfX0pKG8ubm9kZXNlcCxvLmVkZ2VzZXAsaSk7cmV0dXJuIHRYdC5mb3JFYWNoKGUsKGZ1bmN0aW9uKGUpe3ZhciBpO3RYdC5mb3JFYWNoKGUsKGZ1bmN0aW9uKGUpe3ZhciBvPW5bZV07aWYoci5zZXROb2RlKG8pLGkpe3ZhciBzPW5baV0sbD1yLmVkZ2UocyxvKTtyLnNldEVkZ2UocyxvLE1hdGgubWF4KGEodCxlLGkpLGx8fDApKX1pPWV9KSl9KSkscn0pKHQsZSxuLHIpLGw9cj8iYm9yZGVyTGVmdCI6ImJvcmRlclJpZ2h0IjtmdW5jdGlvbiBjKHQsZSl7Zm9yKHZhciBuPWEubm9kZXMoKSxpPW4ucG9wKCkscj17fTtpOylyW2ldP3QoaSk6KHJbaV09ITAsbi5wdXNoKGkpLG49bi5jb25jYXQoZShpKSkpLGk9bi5wb3AoKX1yZXR1cm4gYygoZnVuY3Rpb24gdSh0KXtvW3RdPWEuaW5FZGdlcyh0KS5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIE1hdGgubWF4KHQsb1tlLnZdK2EuZWRnZShlKSl9KSwwKX0pLGEucHJlZGVjZXNzb3JzLmJpbmQoYSkpLGMoKGZ1bmN0aW9uIGgoZSl7dmFyIG49YS5vdXRFZGdlcyhlKS5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIE1hdGgubWluKHQsb1tlLnddLWEuZWRnZShlKSl9KSxOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkpLGk9dC5ub2RlKGUpO24hPT1OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkmJmkuYm9yZGVyVHlwZSE9PWwmJihvW2VdPU1hdGgubWF4KG9bZV0sbikpfSksYS5zdWNjZXNzb3JzLmJpbmQoYSkpLHRYdC5mb3JFYWNoKGksKGZ1bmN0aW9uKHQpe29bdF09b1tuW3RdXX0pKSxvfWZ1bmN0aW9uIGhYdCh0LGUpe3JldHVybiB0WHQubWluQnkodFh0LnZhbHVlcyhlKSwoZnVuY3Rpb24oZSl7dmFyIG49TnVtYmVyLk5FR0FUSVZFX0lORklOSVRZLGk9TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZO3JldHVybiB0WHQuZm9ySW4oZSwoZnVuY3Rpb24oZSxyKXt2YXIgbz0oZnVuY3Rpb24gYSh0LGUpe3JldHVybiB0Lm5vZGUoZSkud2lkdGh9KSh0LHIpLzI7bj1NYXRoLm1heChlK28sbiksaT1NYXRoLm1pbihlLW8saSl9KSksbi1pfSkpfWZ1bmN0aW9uIGRYdCh0LGUpe3ZhciBuPXRYdC52YWx1ZXMoZSksaT10WHQubWluKG4pLHI9dFh0Lm1heChuKTt0WHQuZm9yRWFjaChbInUiLCJkIl0sKGZ1bmN0aW9uKG4pe3RYdC5mb3JFYWNoKFsibCIsInIiXSwoZnVuY3Rpb24obyl7dmFyIGEscz1uK28sbD10W3NdO2lmKGwhPT1lKXt2YXIgYz10WHQudmFsdWVzKGwpOyhhPSJsIj09PW8/aS10WHQubWluKGMpOnItdFh0Lm1heChjKSkmJih0W3NdPXRYdC5tYXBWYWx1ZXMobCwoZnVuY3Rpb24odCl7cmV0dXJuIHQrYX0pKSl9fSkpfSkpfWZ1bmN0aW9uIHBYdCh0LGUpe3JldHVybiB0WHQubWFwVmFsdWVzKHQudWwsKGZ1bmN0aW9uKG4saSl7aWYoZSlyZXR1cm4gdFtlLnRvTG93ZXJDYXNlKCldW2ldO3ZhciByPXRYdC5zb3J0QnkodFh0Lm1hcCh0LGkpKTtyZXR1cm4oclsxXStyWzJdKS8yfSkpfXZhciBmWHQ9SFd0LG1YdD1vcXQsZ1h0PWlYdDt2YXIgX1h0PUhXdCx5WHQ9dHF0LHZYdD13cXQsYlh0PWlZdCx4WHQ9b3F0Lm5vcm1hbGl6ZVJhbmtzLHdYdD1mdW5jdGlvbiBTWHQodCl7dmFyIGU9KGZ1bmN0aW9uIG4odCl7dmFyIGU9e30sbj0wO2Z1bmN0aW9uIGkocil7dmFyIG89bjtzWXQuZm9yRWFjaCh0LmNoaWxkcmVuKHIpLGkpLGVbcl09e2xvdzpvLGxpbTpuKyt9fXJldHVybiBzWXQuZm9yRWFjaCh0LmNoaWxkcmVuKCksaSksZX0pKHQpO3NZdC5mb3JFYWNoKHQuZ3JhcGgoKS5kdW1teUNoYWlucywoZnVuY3Rpb24obil7Zm9yKHZhciBpPXQubm9kZShuKSxyPWkuZWRnZU9iaixvPShmdW5jdGlvbiBhKHQsZSxuLGkpe3ZhciByLG8sYT1bXSxzPVtdLGw9TWF0aC5taW4oZVtuXS5sb3csZVtpXS5sb3cpLGM9TWF0aC5tYXgoZVtuXS5saW0sZVtpXS5saW0pO3I9bjtkb3tyPXQucGFyZW50KHIpLGEucHVzaChyKX13aGlsZShyJiYoZVtyXS5sb3c+bHx8Yz5lW3JdLmxpbSkpO289cixyPWk7Zm9yKDsocj10LnBhcmVudChyKSkhPT1vOylzLnB1c2gocik7cmV0dXJue3BhdGg6YS5jb25jYXQocy5yZXZlcnNlKCkpLGxjYTpvfX0pKHQsZSxyLnYsci53KSxzPW8ucGF0aCxsPW8ubGNhLGM9MCx1PXNbY10saD0hMDtuIT09ci53Oyl7aWYoaT10Lm5vZGUobiksaCl7Zm9yKDsodT1zW2NdKSE9PWwmJnQubm9kZSh1KS5tYXhSYW5rPGkucmFuazspYysrO3U9PT1sJiYoaD0hMSl9aWYoIWgpe2Zvcig7YzxzLmxlbmd0aC0xJiZ0Lm5vZGUodT1zW2MrMV0pLm1pblJhbms8PWkucmFuazspYysrO3U9c1tjXX10LnNldFBhcmVudChuLHUpLG49dC5zdWNjZXNzb3JzKG4pWzBdfX0pKX0sTVh0PW9xdC5yZW1vdmVFbXB0eVJhbmtzLEVYdD17cnVuOmZ1bmN0aW9uIFRYdCh0KXt2YXIgZT1jWXQuYWRkRHVtbXlOb2RlKHQsInJvb3QiLHt9LCJfcm9vdCIpLG49KGZ1bmN0aW9uIGkodCl7dmFyIGU9e307ZnVuY3Rpb24gbihpLHIpe3ZhciBvPXQuY2hpbGRyZW4oaSk7byYmby5sZW5ndGgmJmxZdC5mb3JFYWNoKG8sKGZ1bmN0aW9uKHQpe24odCxyKzEpfSkpLGVbaV09cn1yZXR1cm4gbFl0LmZvckVhY2godC5jaGlsZHJlbigpLChmdW5jdGlvbih0KXtuKHQsMSl9KSksZX0pKHQpLHI9bFl0Lm1heChsWXQudmFsdWVzKG4pKS0xLG89MipyKzE7dC5ncmFwaCgpLm5lc3RpbmdSb290PWUsbFl0LmZvckVhY2godC5lZGdlcygpLChmdW5jdGlvbihlKXt0LmVkZ2UoZSkubWlubGVuKj1vfSkpO3ZhciBhPShmdW5jdGlvbiBzKHQpe3JldHVybiBsWXQucmVkdWNlKHQuZWRnZXMoKSwoZnVuY3Rpb24oZSxuKXtyZXR1cm4gZSt0LmVkZ2Uobikud2VpZ2h0fSksMCl9KSh0KSsxO2xZdC5mb3JFYWNoKHQuY2hpbGRyZW4oKSwoZnVuY3Rpb24oaSl7dVl0KHQsZSxvLGEscixuLGkpfSkpLHQuZ3JhcGgoKS5ub2RlUmFua0ZhY3Rvcj1vfSxjbGVhbnVwOmZ1bmN0aW9uIENYdCh0KXt2YXIgZT10LmdyYXBoKCk7dC5yZW1vdmVOb2RlKGUubmVzdGluZ1Jvb3QpLGRlbGV0ZSBlLm5lc3RpbmdSb290LGxZdC5mb3JFYWNoKHQuZWRnZXMoKSwoZnVuY3Rpb24oZSl7dC5lZGdlKGUpLm5lc3RpbmdFZGdlJiZ0LnJlbW92ZUVkZ2UoZSl9KSl9fSxBWHQ9cFl0LGtYdD17YWRqdXN0OmZ1bmN0aW9uIExYdCh0KXt2YXIgZT10LmdyYXBoKCkucmFua2Rpci50b0xvd2VyQ2FzZSgpOyJsciIhPT1lJiYicmwiIT09ZXx8X1l0KHQpfSx1bmRvOmZ1bmN0aW9uIFBYdCh0KXt2YXIgZT10LmdyYXBoKCkucmFua2Rpci50b0xvd2VyQ2FzZSgpOyJidCIhPT1lJiYicmwiIT09ZXx8KGZ1bmN0aW9uIG4odCl7Z1l0LmZvckVhY2godC5ub2RlcygpLChmdW5jdGlvbihlKXt2WXQodC5ub2RlKGUpKX0pKSxnWXQuZm9yRWFjaCh0LmVkZ2VzKCksKGZ1bmN0aW9uKGUpe3ZhciBuPXQuZWRnZShlKTtnWXQuZm9yRWFjaChuLnBvaW50cyx2WXQpLGdZdC5oYXMobiwieSIpJiZ2WXQobil9KSl9KSh0KTsibHIiIT09ZSYmInJsIiE9PWV8fCghKGZ1bmN0aW9uIGkodCl7Z1l0LmZvckVhY2godC5ub2RlcygpLChmdW5jdGlvbihlKXtiWXQodC5ub2RlKGUpKX0pKSxnWXQuZm9yRWFjaCh0LmVkZ2VzKCksKGZ1bmN0aW9uKGUpe3ZhciBuPXQuZWRnZShlKTtnWXQuZm9yRWFjaChuLnBvaW50cyxiWXQpLGdZdC5oYXMobiwieCIpJiZiWXQobil9KSl9KSh0KSxfWXQodCkpfX0sTlh0PWZ1bmN0aW9uIElYdCh0KXt2YXIgZT1LWXQubWF4UmFuayh0KSxuPVpZdCh0LEhZdC5yYW5nZSgxLGUrMSksImluRWRnZXMiKSxpPVpZdCh0LEhZdC5yYW5nZShlLTEsLTEsLTEpLCJvdXRFZGdlcyIpLHI9Rll0KHQpO1FZdCh0LHIpO2Zvcih2YXIgbyxhPU51bWJlci5QT1NJVElWRV9JTkZJTklUWSxzPTAsbD0wO2w8NDsrK3MsKytsKXtKWXQocyUyP246aSxzJTQ+PTIpLHI9S1l0LmJ1aWxkTGF5ZXJNYXRyaXgodCk7dmFyIGM9VVl0KHQscik7YzxhJiYobD0wLG89SFl0LmNsb25lRGVlcChyKSxhPWMpfVFZdCh0LG8pfSxSWHQ9ZnVuY3Rpb24gT1h0KHQpeyhmdW5jdGlvbiBlKHQpe3ZhciBlPW1YdC5idWlsZExheWVyTWF0cml4KHQpLG49dC5ncmFwaCgpLnJhbmtzZXAsaT0wO2ZYdC5mb3JFYWNoKGUsKGZ1bmN0aW9uKGUpe3ZhciByPWZYdC5tYXgoZlh0Lm1hcChlLChmdW5jdGlvbihlKXtyZXR1cm4gdC5ub2RlKGUpLmhlaWdodH0pKSk7Zlh0LmZvckVhY2goZSwoZnVuY3Rpb24oZSl7dC5ub2RlKGUpLnk9aStyLzJ9KSksaSs9citufSkpfSkodD1tWHQuYXNOb25Db21wb3VuZEdyYXBoKHQpKSxmWHQuZm9yRWFjaChnWHQodCksKGZ1bmN0aW9uKGUsbil7dC5ub2RlKG4pLng9ZX0pKX0selh0PW9xdCxEWHQ9eVV0LkdyYXBoLEJYdD1mdW5jdGlvbiBIWHQodCxlKXt2YXIgbj1lJiZlLmRlYnVnVGltaW5nP3pYdC50aW1lOnpYdC5ub3RpbWU7bigibGF5b3V0IiwoZnVuY3Rpb24oKXt2YXIgZT1uKCIgIGJ1aWxkTGF5b3V0R3JhcGgiLChmdW5jdGlvbigpe3JldHVybihmdW5jdGlvbiBlKHQpe3ZhciBlPW5ldyBEWHQoe211bHRpZ3JhcGg6ITAsY29tcG91bmQ6ITB9KSxuPSRYdCh0LmdyYXBoKCkpO3JldHVybiBlLnNldEdyYXBoKF9YdC5tZXJnZSh7fSxWWHQsWFh0KG4sRlh0KSxfWHQucGljayhuLFVYdCkpKSxfWHQuZm9yRWFjaCh0Lm5vZGVzKCksKGZ1bmN0aW9uKG4pe3ZhciBpPSRYdCh0Lm5vZGUobikpO2Uuc2V0Tm9kZShuLF9YdC5kZWZhdWx0cyhYWHQoaSxqWHQpLEdYdCkpLGUuc2V0UGFyZW50KG4sdC5wYXJlbnQobikpfSkpLF9YdC5mb3JFYWNoKHQuZWRnZXMoKSwoZnVuY3Rpb24obil7dmFyIGk9JFh0KHQuZWRnZShuKSk7ZS5zZXRFZGdlKG4sX1h0Lm1lcmdlKHt9LHFYdCxYWHQoaSxXWHQpLF9YdC5waWNrKGksWVh0KSkpfSkpLGV9KSh0KX0pKTtuKCIgIHJ1bkxheW91dCIsKGZ1bmN0aW9uKCl7IShmdW5jdGlvbiB0KGUsbil7bigiICAgIG1ha2VTcGFjZUZvckVkZ2VMYWJlbHMiLChmdW5jdGlvbigpeyEoZnVuY3Rpb24gdChlKXt2YXIgbj1lLmdyYXBoKCk7bi5yYW5rc2VwLz0yLF9YdC5mb3JFYWNoKGUuZWRnZXMoKSwoZnVuY3Rpb24odCl7dmFyIGk9ZS5lZGdlKHQpO2kubWlubGVuKj0yLCJjIiE9PWkubGFiZWxwb3MudG9Mb3dlckNhc2UoKSYmKCJUQiI9PT1uLnJhbmtkaXJ8fCJCVCI9PT1uLnJhbmtkaXI/aS53aWR0aCs9aS5sYWJlbG9mZnNldDppLmhlaWdodCs9aS5sYWJlbG9mZnNldCl9KSl9KShlKX0pKSxuKCIgICAgcmVtb3ZlU2VsZkVkZ2VzIiwoZnVuY3Rpb24oKXshKGZ1bmN0aW9uIHQoZSl7X1h0LmZvckVhY2goZS5lZGdlcygpLChmdW5jdGlvbih0KXtpZih0LnY9PT10Lncpe3ZhciBuPWUubm9kZSh0LnYpO24uc2VsZkVkZ2VzfHwobi5zZWxmRWRnZXM9W10pLG4uc2VsZkVkZ2VzLnB1c2goe2U6dCxsYWJlbDplLmVkZ2UodCl9KSxlLnJlbW92ZUVkZ2UodCl9fSkpfSkoZSl9KSksbigiICAgIGFjeWNsaWMiLChmdW5jdGlvbigpe3lYdC5ydW4oZSl9KSksbigiICAgIG5lc3RpbmdHcmFwaC5ydW4iLChmdW5jdGlvbigpe0VYdC5ydW4oZSl9KSksbigiICAgIHJhbmsiLChmdW5jdGlvbigpe2JYdCh6WHQuYXNOb25Db21wb3VuZEdyYXBoKGUpKX0pKSxuKCIgICAgaW5qZWN0RWRnZUxhYmVsUHJveGllcyIsKGZ1bmN0aW9uKCl7IShmdW5jdGlvbiB0KGUpe19YdC5mb3JFYWNoKGUuZWRnZXMoKSwoZnVuY3Rpb24odCl7dmFyIG49ZS5lZGdlKHQpO2lmKG4ud2lkdGgmJm4uaGVpZ2h0KXt2YXIgaT1lLm5vZGUodC52KSxyPWUubm9kZSh0LncpO3pYdC5hZGREdW1teU5vZGUoZSwiZWRnZS1wcm94eSIse3Jhbms6KHIucmFuay1pLnJhbmspLzIraS5yYW5rLGU6dH0sIl9lcCIpfX0pKX0pKGUpfSkpLG4oIiAgICByZW1vdmVFbXB0eVJhbmtzIiwoZnVuY3Rpb24oKXtNWHQoZSl9KSksbigiICAgIG5lc3RpbmdHcmFwaC5jbGVhbnVwIiwoZnVuY3Rpb24oKXtFWHQuY2xlYW51cChlKX0pKSxuKCIgICAgbm9ybWFsaXplUmFua3MiLChmdW5jdGlvbigpe3hYdChlKX0pKSxuKCIgICAgYXNzaWduUmFua01pbk1heCIsKGZ1bmN0aW9uKCl7IShmdW5jdGlvbiB0KGUpe3ZhciBuPTA7X1h0LmZvckVhY2goZS5ub2RlcygpLChmdW5jdGlvbih0KXt2YXIgaT1lLm5vZGUodCk7aS5ib3JkZXJUb3AmJihpLm1pblJhbms9ZS5ub2RlKGkuYm9yZGVyVG9wKS5yYW5rLGkubWF4UmFuaz1lLm5vZGUoaS5ib3JkZXJCb3R0b20pLnJhbmssbj1fWHQubWF4KG4saS5tYXhSYW5rKSl9KSksZS5ncmFwaCgpLm1heFJhbms9bn0pKGUpfSkpLG4oIiAgICByZW1vdmVFZGdlTGFiZWxQcm94aWVzIiwoZnVuY3Rpb24oKXshKGZ1bmN0aW9uIHQoZSl7X1h0LmZvckVhY2goZS5ub2RlcygpLChmdW5jdGlvbih0KXt2YXIgbj1lLm5vZGUodCk7ImVkZ2UtcHJveHkiPT09bi5kdW1teSYmKGUuZWRnZShuLmUpLmxhYmVsUmFuaz1uLnJhbmssZS5yZW1vdmVOb2RlKHQpKX0pKX0pKGUpfSkpLG4oIiAgICBub3JtYWxpemUucnVuIiwoZnVuY3Rpb24oKXt2WHQucnVuKGUpfSkpLG4oIiAgICBwYXJlbnREdW1teUNoYWlucyIsKGZ1bmN0aW9uKCl7d1h0KGUpfSkpLG4oIiAgICBhZGRCb3JkZXJTZWdtZW50cyIsKGZ1bmN0aW9uKCl7QVh0KGUpfSkpLG4oIiAgICBvcmRlciIsKGZ1bmN0aW9uKCl7Tlh0KGUpfSkpLG4oIiAgICBpbnNlcnRTZWxmRWRnZXMiLChmdW5jdGlvbigpeyEoZnVuY3Rpb24gdChlKXt2YXIgbj16WHQuYnVpbGRMYXllck1hdHJpeChlKTtfWHQuZm9yRWFjaChuLChmdW5jdGlvbih0KXt2YXIgbj0wO19YdC5mb3JFYWNoKHQsKGZ1bmN0aW9uKHQsaSl7dmFyIHI9ZS5ub2RlKHQpO3Iub3JkZXI9aStuLF9YdC5mb3JFYWNoKHIuc2VsZkVkZ2VzLChmdW5jdGlvbih0KXt6WHQuYWRkRHVtbXlOb2RlKGUsInNlbGZlZGdlIix7d2lkdGg6dC5sYWJlbC53aWR0aCxoZWlnaHQ6dC5sYWJlbC5oZWlnaHQscmFuazpyLnJhbmssb3JkZXI6aSsgKytuLGU6dC5lLGxhYmVsOnQubGFiZWx9LCJfc2UiKX0pKSxkZWxldGUgci5zZWxmRWRnZXN9KSl9KSl9KShlKX0pKSxuKCIgICAgYWRqdXN0Q29vcmRpbmF0ZVN5c3RlbSIsKGZ1bmN0aW9uKCl7a1h0LmFkanVzdChlKX0pKSxuKCIgICAgcG9zaXRpb24iLChmdW5jdGlvbigpe1JYdChlKX0pKSxuKCIgICAgcG9zaXRpb25TZWxmRWRnZXMiLChmdW5jdGlvbigpeyEoZnVuY3Rpb24gdChlKXtfWHQuZm9yRWFjaChlLm5vZGVzKCksKGZ1bmN0aW9uKHQpe3ZhciBuPWUubm9kZSh0KTtpZigic2VsZmVkZ2UiPT09bi5kdW1teSl7dmFyIGk9ZS5ub2RlKG4uZS52KSxyPWkueCtpLndpZHRoLzIsbz1pLnksYT1uLngtcixzPWkuaGVpZ2h0LzI7ZS5zZXRFZGdlKG4uZSxuLmxhYmVsKSxlLnJlbW92ZU5vZGUodCksbi5sYWJlbC5wb2ludHM9W3t4OnIrMiphLzMseTpvLXN9LHt4OnIrNSphLzYseTpvLXN9LHt4OnIrYSx5Om99LHt4OnIrNSphLzYseTpvK3N9LHt4OnIrMiphLzMseTpvK3N9XSxuLmxhYmVsLng9bi54LG4ubGFiZWwueT1uLnl9fSkpfSkoZSl9KSksbigiICAgIHJlbW92ZUJvcmRlck5vZGVzIiwoZnVuY3Rpb24oKXshKGZ1bmN0aW9uIHQoZSl7X1h0LmZvckVhY2goZS5ub2RlcygpLChmdW5jdGlvbih0KXtpZihlLmNoaWxkcmVuKHQpLmxlbmd0aCl7dmFyIG49ZS5ub2RlKHQpLGk9ZS5ub2RlKG4uYm9yZGVyVG9wKSxyPWUubm9kZShuLmJvcmRlckJvdHRvbSksbz1lLm5vZGUoX1h0Lmxhc3Qobi5ib3JkZXJMZWZ0KSksYT1lLm5vZGUoX1h0Lmxhc3Qobi5ib3JkZXJSaWdodCkpO24ud2lkdGg9TWF0aC5hYnMoYS54LW8ueCksbi5oZWlnaHQ9TWF0aC5hYnMoci55LWkueSksbi54PW8ueCtuLndpZHRoLzIsbi55PWkueStuLmhlaWdodC8yfX0pKSxfWHQuZm9yRWFjaChlLm5vZGVzKCksKGZ1bmN0aW9uKHQpeyJib3JkZXIiPT09ZS5ub2RlKHQpLmR1bW15JiZlLnJlbW92ZU5vZGUodCl9KSl9KShlKX0pKSxuKCIgICAgbm9ybWFsaXplLnVuZG8iLChmdW5jdGlvbigpe3ZYdC51bmRvKGUpfSkpLG4oIiAgICBmaXh1cEVkZ2VMYWJlbENvb3JkcyIsKGZ1bmN0aW9uKCl7IShmdW5jdGlvbiB0KGUpe19YdC5mb3JFYWNoKGUuZWRnZXMoKSwoZnVuY3Rpb24odCl7dmFyIG49ZS5lZGdlKHQpO2lmKF9YdC5oYXMobiwieCIpKXN3aXRjaCgibCIhPT1uLmxhYmVscG9zJiYiciIhPT1uLmxhYmVscG9zfHwobi53aWR0aC09bi5sYWJlbG9mZnNldCksbi5sYWJlbHBvcyl7Y2FzZSJsIjpuLngtPW4ud2lkdGgvMituLmxhYmVsb2Zmc2V0O2JyZWFrO2Nhc2UiciI6bi54Kz1uLndpZHRoLzIrbi5sYWJlbG9mZnNldH19KSl9KShlKX0pKSxuKCIgICAgdW5kb0Nvb3JkaW5hdGVTeXN0ZW0iLChmdW5jdGlvbigpe2tYdC51bmRvKGUpfSkpLG4oIiAgICB0cmFuc2xhdGVHcmFwaCIsKGZ1bmN0aW9uKCl7IShmdW5jdGlvbiB0KGUpe3ZhciBuPU51bWJlci5QT1NJVElWRV9JTkZJTklUWSxpPTAscj1OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksbz0wLGE9ZS5ncmFwaCgpLHM9YS5tYXJnaW54fHwwLGw9YS5tYXJnaW55fHwwO2Z1bmN0aW9uIGModCl7dmFyIGU9dC54LGE9dC55LHM9dC53aWR0aCxsPXQuaGVpZ2h0O249TWF0aC5taW4obixlLXMvMiksaT1NYXRoLm1heChpLGUrcy8yKSxyPU1hdGgubWluKHIsYS1sLzIpLG89TWF0aC5tYXgobyxhK2wvMil9X1h0LmZvckVhY2goZS5ub2RlcygpLChmdW5jdGlvbih0KXtjKGUubm9kZSh0KSl9KSksX1h0LmZvckVhY2goZS5lZGdlcygpLChmdW5jdGlvbih0KXt2YXIgbj1lLmVkZ2UodCk7X1h0LmhhcyhuLCJ4IikmJmMobil9KSksbi09cyxyLT1sLF9YdC5mb3JFYWNoKGUubm9kZXMoKSwoZnVuY3Rpb24odCl7dmFyIGk9ZS5ub2RlKHQpO2kueC09bixpLnktPXJ9KSksX1h0LmZvckVhY2goZS5lZGdlcygpLChmdW5jdGlvbih0KXt2YXIgaT1lLmVkZ2UodCk7X1h0LmZvckVhY2goaS5wb2ludHMsKGZ1bmN0aW9uKHQpe3QueC09bix0LnktPXJ9KSksX1h0LmhhcyhpLCJ4IikmJihpLngtPW4pLF9YdC5oYXMoaSwieSIpJiYoaS55LT1yKX0pKSxhLndpZHRoPWktbitzLGEuaGVpZ2h0PW8tcitsfSkoZSl9KSksbigiICAgIGFzc2lnbk5vZGVJbnRlcnNlY3RzIiwoZnVuY3Rpb24oKXshKGZ1bmN0aW9uIHQoZSl7X1h0LmZvckVhY2goZS5lZGdlcygpLChmdW5jdGlvbih0KXt2YXIgbixpLHI9ZS5lZGdlKHQpLG89ZS5ub2RlKHQudiksYT1lLm5vZGUodC53KTtyLnBvaW50cz8obj1yLnBvaW50c1swXSxpPXIucG9pbnRzW3IucG9pbnRzLmxlbmd0aC0xXSk6KHIucG9pbnRzPVtdLG49YSxpPW8pLHIucG9pbnRzLnVuc2hpZnQoelh0LmludGVyc2VjdFJlY3QobyxuKSksci5wb2ludHMucHVzaCh6WHQuaW50ZXJzZWN0UmVjdChhLGkpKX0pKX0pKGUpfSkpLG4oIiAgICByZXZlcnNlUG9pbnRzIiwoZnVuY3Rpb24oKXshKGZ1bmN0aW9uIHQoZSl7X1h0LmZvckVhY2goZS5lZGdlcygpLChmdW5jdGlvbih0KXt2YXIgbj1lLmVkZ2UodCk7bi5yZXZlcnNlZCYmbi5wb2ludHMucmV2ZXJzZSgpfSkpfSkoZSl9KSksbigiICAgIGFjeWNsaWMudW5kbyIsKGZ1bmN0aW9uKCl7eVh0LnVuZG8oZSl9KSl9KShlLG4pfSkpLG4oIiAgdXBkYXRlSW5wdXRHcmFwaCIsKGZ1bmN0aW9uKCl7IShmdW5jdGlvbiBuKHQsZSl7X1h0LmZvckVhY2godC5ub2RlcygpLChmdW5jdGlvbihuKXt2YXIgaT10Lm5vZGUobikscj1lLm5vZGUobik7aSYmKGkueD1yLngsaS55PXIueSxlLmNoaWxkcmVuKG4pLmxlbmd0aCYmKGkud2lkdGg9ci53aWR0aCxpLmhlaWdodD1yLmhlaWdodCkpfSkpLF9YdC5mb3JFYWNoKHQuZWRnZXMoKSwoZnVuY3Rpb24obil7dmFyIGk9dC5lZGdlKG4pLHI9ZS5lZGdlKG4pO2kucG9pbnRzPXIucG9pbnRzLF9YdC5oYXMociwieCIpJiYoaS54PXIueCxpLnk9ci55KX0pKSx0LmdyYXBoKCkud2lkdGg9ZS5ncmFwaCgpLndpZHRoLHQuZ3JhcGgoKS5oZWlnaHQ9ZS5ncmFwaCgpLmhlaWdodH0pKHQsZSl9KSl9KSl9O3ZhciBGWHQ9WyJub2Rlc2VwIiwiZWRnZXNlcCIsInJhbmtzZXAiLCJtYXJnaW54IiwibWFyZ2lueSJdLFZYdD17cmFua3NlcDo1MCxlZGdlc2VwOjIwLG5vZGVzZXA6NTAscmFua2RpcjoidGIifSxVWHQ9WyJhY3ljbGljZXIiLCJyYW5rZXIiLCJyYW5rZGlyIiwiYWxpZ24iXSxqWHQ9WyJ3aWR0aCIsImhlaWdodCJdLEdYdD17d2lkdGg6MCxoZWlnaHQ6MH0sV1h0PVsibWlubGVuIiwid2VpZ2h0Iiwid2lkdGgiLCJoZWlnaHQiLCJsYWJlbG9mZnNldCJdLHFYdD17bWlubGVuOjEsd2VpZ2h0OjEsd2lkdGg6MCxoZWlnaHQ6MCxsYWJlbG9mZnNldDoxMCxsYWJlbHBvczoiciJ9LFlYdD1bImxhYmVscG9zIl07ZnVuY3Rpb24gWFh0KHQsZSl7cmV0dXJuIF9YdC5tYXBWYWx1ZXMoX1h0LnBpY2sodCxlKSxOdW1iZXIpfWZ1bmN0aW9uICRYdCh0KXt2YXIgZT17fTtyZXR1cm4gX1h0LmZvckVhY2godCwoZnVuY3Rpb24odCxuKXtlW24udG9Mb3dlckNhc2UoKV09dH0pKSxlfXZhciBLWHQ9SFd0LFpYdD1vcXQsSlh0PXlVdC5HcmFwaDt2YXIgUVh0LHQkdD17Z3JhcGhsaWI6eVV0LGxheW91dDpCWHQsZGVidWc6e2RlYnVnT3JkZXJpbmc6ZnVuY3Rpb24gZSR0KHQpe3ZhciBlPVpYdC5idWlsZExheWVyTWF0cml4KHQpLG49bmV3IEpYdCh7Y29tcG91bmQ6ITAsbXVsdGlncmFwaDohMH0pLnNldEdyYXBoKHt9KTtyZXR1cm4gS1h0LmZvckVhY2godC5ub2RlcygpLChmdW5jdGlvbihlKXtuLnNldE5vZGUoZSx7bGFiZWw6ZX0pLG4uc2V0UGFyZW50KGUsImxheWVyIit0Lm5vZGUoZSkucmFuayl9KSksS1h0LmZvckVhY2godC5lZGdlcygpLChmdW5jdGlvbih0KXtuLnNldEVkZ2UodC52LHQudyx7fSx0Lm5hbWUpfSkpLEtYdC5mb3JFYWNoKGUsKGZ1bmN0aW9uKHQsZSl7bi5zZXROb2RlKCJsYXllciIrZSx7cmFuazoic2FtZSJ9KSxLWHQucmVkdWNlKHQsKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIG4uc2V0RWRnZSh0LGUse3N0eWxlOiJpbnZpcyJ9KSxlfSkpfSkpLG59fSx1dGlsOnt0aW1lOm9xdC50aW1lLG5vdGltZTpvcXQubm90aW1lfSx2ZXJzaW9uOiIwLjguNSJ9OyEoZnVuY3Rpb24odCl7dC5PUF9HUkFQSD0ib3BfZ3JhcGgiLHQuQ09OQ0VQVFVBTF9HUkFQSD0iY29uY2VwdHVhbF9ncmFwaCIsdC5QUk9GSUxFPSJwcm9maWxlIn0pKFFYdHx8KFFYdD17fSkpO2xldCBuJHQ9e05vZGU6e0NPTlRBSU5FUjoibm9kZXMiLEdST1VQOiJub2RlIixTSEFQRToibm9kZXNoYXBlIixDT0xPUl9UQVJHRVQ6Im5vZGVjb2xvcnRhcmdldCIsTEFCRUw6Im5vZGVsYWJlbCIsQlVUVE9OX0NPTlRBSU5FUjoiYnV0dG9uY29udGFpbmVyIixCVVRUT05fQ0lSQ0xFOiJidXR0b25jaXJjbGUiLEVYUEFORF9CVVRUT046ImV4cGFuZGJ1dHRvbiIsQ09MTEFQU0VfQlVUVE9OOiJjb2xsYXBzZWJ1dHRvbiJ9LEVkZ2U6e0NPTlRBSU5FUjoiZWRnZXMiLEdST1VQOiJlZGdlIixMSU5FOiJlZGdlbGluZSIsUkVGRVJFTkNFX0VER0U6InJlZmVyZW5jZWVkZ2UiLFJFRl9MSU5FOiJyZWZsaW5lIixTRUxFQ1RBQkxFOiJzZWxlY3RhYmxlZWRnZSIsU0VMRUNURUQ6InNlbGVjdGVkZWRnZSIsU1RSVUNUVVJBTDoic3RydWN0dXJhbCJ9LEFubm90YXRpb246e09VVEJPWDoib3V0LWFubm90YXRpb25zIixJTkJPWDoiaW4tYW5ub3RhdGlvbnMiLEdST1VQOiJhbm5vdGF0aW9uIixOT0RFOiJhbm5vdGF0aW9uLW5vZGUiLEVER0U6ImFubm90YXRpb24tZWRnZSIsQ09OVFJPTF9FREdFOiJhbm5vdGF0aW9uLWNvbnRyb2wtZWRnZSIsTEFCRUw6ImFubm90YXRpb24tbGFiZWwiLEVMTElQU0lTOiJhbm5vdGF0aW9uLWVsbGlwc2lzIn0sU2NlbmU6e0dST1VQOiJzY2VuZSIsQ09SRToiY29yZSIsRlVOQ1RJT05fTElCUkFSWToiZnVuY3Rpb24tbGlicmFyeSIsSU5FWFRSQUNUOiJpbi1leHRyYWN0IixPVVRFWFRSQUNUOiJvdXQtZXh0cmFjdCJ9LFN1YnNjZW5lOntHUk9VUDoic3Vic2NlbmUifSxPUE5PREU6Im9wIixNRVRBTk9ERToibWV0YSIsU0VSSUVTTk9ERToic2VyaWVzIixCUklER0VOT0RFOiJicmlkZ2UiLEVMTElQU0lTTk9ERToiZWxsaXBzaXMifTtjb25zdCBpJHQ9e0xBQkVMOjV9LHIkdD17RVhQQU5ERURfTEFCRUw6OSxTRVJJRVNfTEFCRUw6OCxPUF9MQUJFTDo2LEhFQUxUSF9QSUxMX1NUQVRfTEFCRUw6NH0sbyR0PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI7ZnVuY3Rpb24gYSR0KHQsZSxuKXtsZXQgaT10Lm5vZGUoKS5jaGlsZE5vZGVzO2ZvcihsZXQgdD0wO3Q8aS5sZW5ndGg7dCsrKXtsZXQgcj1pW3RdO2lmKHIudGFnTmFtZT09PWUpaWYobiBpbnN0YW5jZW9mIEFycmF5KXtsZXQgdD0hMDtmb3IobGV0IGU9MDtlPG4ubGVuZ3RoO2UrKyl0PXQmJnIuY2xhc3NMaXN0LmNvbnRhaW5zKG5bZV0pO2lmKHQpcmV0dXJuIER1KHIpfWVsc2UgaWYoIW58fHIuY2xhc3NMaXN0LmNvbnRhaW5zKG4pKXJldHVybiBEdShyKX1yZXR1cm4gRHUobnVsbCl9ZnVuY3Rpb24gcyR0KHQsZSxuLGkpe2xldCByPWEkdCh0LGUsbik7aWYoIXIuZW1wdHkoKSlyZXR1cm4gcjtsZXQgbz1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIixlKTtpZihuIGluc3RhbmNlb2YgQXJyYXkpZm9yKGxldCB0PTA7dDxuLmxlbmd0aDt0Kyspby5jbGFzc0xpc3QuYWRkKG5bdF0pO2Vsc2Ugby5jbGFzc0xpc3QuYWRkKG4pO3JldHVybiBpP3Qubm9kZSgpLmluc2VydEJlZm9yZShvLGkpOnQubm9kZSgpLmFwcGVuZENoaWxkKG8pLER1KG8pLmRhdHVtKHQuZGF0dW0oKSl9Y2xhc3MgbCR0e2NvbnN0cnVjdG9yKHQpe3RoaXMudG90YWxCeXRlcz0wLHRoaXMub3V0cHV0U2l6ZT10fWFkZEV4ZWN1dGlvblRpbWUodCxlKXt0aGlzLnN0YXJ0VGltZT1udWxsIT10aGlzLnN0YXJ0VGltZT9NYXRoLm1pbih0aGlzLnN0YXJ0VGltZSx0KTp0LHRoaXMuZW5kVGltZT1udWxsIT10aGlzLmVuZFRpbWU/TWF0aC5tYXgodGhpcy5lbmRUaW1lLGUpOmV9YWRkQnl0ZXNBbGxvY2F0aW9uKHQpe3RoaXMudG90YWxCeXRlcz1udWxsIT10aGlzLnRvdGFsQnl0ZXM/TWF0aC5tYXgodGhpcy50b3RhbEJ5dGVzLHQpOnR9Y29tYmluZSh0KXtudWxsIT10LnRvdGFsQnl0ZXMmJih0aGlzLnRvdGFsQnl0ZXMrPXQudG90YWxCeXRlcyksbnVsbCE9dC5nZXRUb3RhbE1pY3JvcygpJiZ0aGlzLmFkZEV4ZWN1dGlvblRpbWUodC5zdGFydFRpbWUsdC5lbmRUaW1lKX1nZXRUb3RhbE1pY3Jvcygpe3JldHVybiBudWxsPT10aGlzLnN0YXJ0VGltZXx8bnVsbD09dGhpcy5lbmRUaW1lP251bGw6dGhpcy5lbmRUaW1lLXRoaXMuc3RhcnRUaW1lfX1jb25zdCBjJHQ9Ljc1LHUkdD1URSgpLmV4cG9uZW50KC4zKS5kb21haW4oWzEsNWU2XSkucmFuZ2UoW2MkdCwxMl0pLmNsYW1wKCEwKTtmdW5jdGlvbiBoJHQodCl7IShmdW5jdGlvbiBlKHQpe3JldHVybiB0Lmhhc093blByb3BlcnR5KCJ0aW1pbmdJZCIpfSkodCl9ZnVuY3Rpb24gZCR0KHQsZSxuKXtsZXQgaT1EYXRlLm5vdygpLHI9ZSgpO2NvbnN0IG89RGF0ZS5ub3coKS1pO3JldHVybiBjb25zb2xlLmxvZyh0LCI6IixvLCJtcyIpLG4mJmgkdCh7dGltaW5nSWQ6bixldmVudFZhbHVlOm99KSxyfWZ1bmN0aW9uIHAkdCh0KXtyZXR1cm57c2V0TWVzc2FnZTpmdW5jdGlvbihlKXt0LnNldCgicHJvZ3Jlc3MiLHt2YWx1ZTp0LnByb2dyZXNzLnZhbHVlLG1zZzplfSl9LHVwZGF0ZVByb2dyZXNzOmZ1bmN0aW9uKGUpe3Quc2V0KCJwcm9ncmVzcyIse3ZhbHVlOnQucHJvZ3Jlc3MudmFsdWUrZSxtc2c6dC5wcm9ncmVzcy5tc2d9KX0scmVwb3J0RXJyb3I6ZnVuY3Rpb24oZSxuKXtjb25zb2xlLmVycm9yKG4uc3RhY2spLHQuc2V0KCJwcm9ncmVzcyIse3ZhbHVlOnQucHJvZ3Jlc3MudmFsdWUsbXNnOmUsZXJyb3I6ITB9KX19fWZ1bmN0aW9uIGYkdCh0LGUsbil7cmV0dXJue3NldE1lc3NhZ2U6ZnVuY3Rpb24oZSl7dC5zZXRNZXNzYWdlKG4rIjogIitlKX0sdXBkYXRlUHJvZ3Jlc3M6ZnVuY3Rpb24obil7dC51cGRhdGVQcm9ncmVzcyhuKmUvMTAwKX0scmVwb3J0RXJyb3I6ZnVuY3Rpb24oZSxpKXt0LnJlcG9ydEVycm9yKG4rIjogIitlLGkpfX19ZnVuY3Rpb24gbSR0KHQsZSxuLGkscil7cmV0dXJuIG5ldyBQcm9taXNlKCgobyxhKT0+e2kuc2V0TWVzc2FnZSh0KSxzZXRUaW1lb3V0KChmdW5jdGlvbigpe3RyeXtsZXQgYT1kJHQodCxuLHIpO2kudXBkYXRlUHJvZ3Jlc3MoZSksbyhhKX1jYXRjaChlKXtpLnJlcG9ydEVycm9yKCJGYWlsZWQgIit0LGUpfX0pLDIwKX0pKX1mdW5jdGlvbiBnJHQodCxlLG4saSxyKXtyZXR1cm4gbmV3IFByb21pc2UoKChvLGEpPT57bGV0IHM9ZnVuY3Rpb24oZSl7aS5yZXBvcnRFcnJvcigiRmFpbGVkICIrdCxlKSxhKGUpfTtpLnNldE1lc3NhZ2UodCksc2V0VGltZW91dCgoZnVuY3Rpb24oKXt0cnl7bGV0IGE9RGF0ZS5ub3coKTtuKCkudGhlbigoZnVuY3Rpb24obil7Y29uc3Qgcz1EYXRlLm5vdygpLWE7Y29uc29sZS5sb2codCwiOiIscywibXMiKSxpLnVwZGF0ZVByb2dyZXNzKGUpLGgkdCh7dGltaW5nSWQ6cixldmVudFZhbHVlOnN9KSxvKG4pfSkpLmNhdGNoKHMpfWNhdGNoKHQpe3ModCl9fSksMjApfSkpfWNvbnN0IF8kdD1be3N5bWJvbDoiQiJ9LHtzeW1ib2w6IktCIixudW1Vbml0czoxMDI0fSx7c3ltYm9sOiJNQiIsbnVtVW5pdHM6MTAyNH0se3N5bWJvbDoiR0IiLG51bVVuaXRzOjEwMjR9LHtzeW1ib2w6IlRCIixudW1Vbml0czoxMDI0fSx7c3ltYm9sOiJQQiIsbnVtVW5pdHM6MTAyNH1dLHkkdD1be3N5bWJvbDoiwrVzIn0se3N5bWJvbDoibXMiLG51bVVuaXRzOjFlM30se3N5bWJvbDoicyIsbnVtVW5pdHM6MWUzfSx7c3ltYm9sOiJtaW4iLG51bVVuaXRzOjYwfSx7c3ltYm9sOiJociIsbnVtVW5pdHM6NjB9LHtzeW1ib2w6ImRheXMiLG51bVVuaXRzOjI0fV07ZnVuY3Rpb24gdiR0KHQsZSxuPTApe3JldHVybiBuKzE8ZS5sZW5ndGgmJnQ+PWVbbisxXS5udW1Vbml0cz92JHQodC9lW24rMV0ubnVtVW5pdHMsZSxuKzEpOk51bWJlcih0LnRvUHJlY2lzaW9uKDMpKSsiICIrZVtuXS5zeW1ib2x9ZnVuY3Rpb24gYiR0KHQpe3JldHVybiEoIXR8fCEodC50b3RhbEJ5dGVzPjB8fHQuZ2V0VG90YWxNaWNyb3MoKT4wfHx0Lm91dHB1dFNpemUpKX1mdW5jdGlvbiB4JHQodCl7aWYodC5sZW5ndGg8MilyZXR1cm4gdDtsZXQgZT0wLG49MCxpPUNlLmV4cG9ydHMubWluKENlLmV4cG9ydHMubWFwKHQsKHQ9PnQubGVuZ3RoKSkpO2Zvcig7Oyl7ZSsrO2xldCByPUNlLmV4cG9ydHMubWFwKHQsKHQ9PnQuc3Vic3RyaW5nKDAsZSkpKTtpZighci5ldmVyeSgoKHQsZSk9PjA9PT1lfHx0PT09cltlLTFdKSkpYnJlYWs7aWYoZT49aSlyZXR1cm4gdDtuPWV9cmV0dXJuIENlLmV4cG9ydHMubWFwKHQsKHQ9PnQuc3Vic3RyaW5nKG4pKSl9Y29uc3QgdyR0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpLmdldENvbnRleHQoIjJkIik7ZnVuY3Rpb24gUyR0KHQsZSl7cmV0dXJuIHckdC5mb250PWAke2V9cHggUm9ib3RvLCBzYW5zLXNlcmlmYCx3JHQubWVhc3VyZVRleHQodCkud2lkdGh9Y29uc3QgTSR0PSIvIixFJHQ9Il9fcm9vdF9fIixUJHQ9Il9fZnVuY3Rpb25fbGlicmFyeV9fIjt2YXIgQyR0LEEkdCxrJHQsTCR0OyEoZnVuY3Rpb24odCl7dFt0LkZVTEw9MF09IkZVTEwiLHRbdC5FTUJFRERFRD0xXT0iRU1CRURERUQiLHRbdC5NRVRBPTJdPSJNRVRBIix0W3QuU0VSSUVTPTNdPSJTRVJJRVMiLHRbdC5DT1JFPTRdPSJDT1JFIix0W3QuU0hBRE9XPTVdPSJTSEFET1ciLHRbdC5CUklER0U9Nl09IkJSSURHRSIsdFt0LkVER0U9N109IkVER0UifSkoQyR0fHwoQyR0PXt9KSksKGZ1bmN0aW9uKHQpe3RbdC5NRVRBPTBdPSJNRVRBIix0W3QuT1A9MV09Ik9QIix0W3QuU0VSSUVTPTJdPSJTRVJJRVMiLHRbdC5CUklER0U9M109IkJSSURHRSIsdFt0LkVMTElQU0lTPTRdPSJFTExJUFNJUyJ9KShBJHR8fChBJHQ9e30pKSwoZnVuY3Rpb24odCl7dFt0LklOQ0xVREU9MF09IklOQ0xVREUiLHRbdC5FWENMVURFPTFdPSJFWENMVURFIix0W3QuVU5TUEVDSUZJRUQ9Ml09IlVOU1BFQ0lGSUVEIn0pKGskdHx8KGskdD17fSkpLChmdW5jdGlvbih0KXt0W3QuR1JPVVA9MF09IkdST1VQIix0W3QuVU5HUk9VUD0xXT0iVU5HUk9VUCJ9KShMJHR8fChMJHQ9e30pKTtjb25zdCBQJHQ9Il9vdXRwdXRfc2hhcGVzIixOJHQ9Il9YbGFDbHVzdGVyIjtjbGFzcyBJJHR7Y29uc3RydWN0b3IoKXt0aGlzLm5vZGVzPXt9LHRoaXMuZWRnZXM9W119fWNsYXNzIFIkdHtjb25zdHJ1Y3Rvcih0KXt0aGlzLnR5cGU9QSR0LkVMTElQU0lTLHRoaXMuaXNHcm91cE5vZGU9ITEsdGhpcy5jYXJkaW5hbGl0eT0xLHRoaXMucGFyZW50Tm9kZT1udWxsLHRoaXMuc3RhdHM9bnVsbCx0aGlzLnNldE51bU1vcmVOb2Rlcyh0KSx0aGlzLmluY2x1ZGU9ayR0LlVOU1BFQ0lGSUVEfXNldE51bU1vcmVOb2Rlcyh0KXt0aGlzLm51bU1vcmVOb2Rlcz10LHRoaXMubmFtZT0iLi4uICIrdCsiIG1vcmUifX1jbGFzcyBPJHR7Y29uc3RydWN0b3IodCl7dGhpcy5vcD10Lm9wLHRoaXMubmFtZT10Lm5hbWUsdGhpcy5kZXZpY2U9dC5kZXZpY2UsdGhpcy5hdHRyPXQuYXR0cix0aGlzLmlucHV0cz0oZnVuY3Rpb24gZSh0KXtjb25zdCBlPVtdO2xldCBuPW51bGw7Zm9yKGxldCBpIG9mIHR8fFtdKXtjb25zdCB0PWkuc3RhcnRzV2l0aCgiXiIpO3QmJihpPWkuc3Vic3RyaW5nKDEpKTtsZXQgcj1pLG89IjAiO2NvbnN0IGE9aS5pbmNsdWRlcygiOiIpJiZpLm1hdGNoKGokdCk7YSYmKHI9YVsxXSxvPWFbMl0pLG4hPT1yJiYobj1yLGUucHVzaCh7bmFtZTpyLG91dHB1dFRlbnNvcktleTpvLGlzQ29udHJvbERlcGVuZGVuY3k6dH0pKX1yZXR1cm4gZX0pKHQuaW5wdXQpLHRoaXMub3V0cHV0U2hhcGVzPShmdW5jdGlvbiBuKHQpe2lmKCF0KXJldHVybiBudWxsO2ZvcihsZXQgZT0wO2U8dC5sZW5ndGg7ZSsrKXtsZXR7a2V5Om4sdmFsdWU6aX09dFtlXTtpZihuPT09UCR0KXtpZighaS5saXN0fHwhaS5saXN0LnNoYXBlKXJldHVybiBudWxsO2xldCBuPWkubGlzdC5zaGFwZS5tYXAoKHQ9PnQudW5rbm93bl9yYW5rP251bGw6bnVsbD09dC5kaW18fDE9PT10LmRpbS5sZW5ndGgmJm51bGw9PXQuZGltWzBdLnNpemU/W106dC5kaW0ubWFwKCh0PT50LnNpemUpKSkpO3JldHVybiB0LnNwbGljZShlLDEpLG59fXJldHVybiBudWxsfSkodC5hdHRyKSx0aGlzLnhsYUNsdXN0ZXI9KGZ1bmN0aW9uIGkodCl7aWYoIXQpcmV0dXJuIG51bGw7Zm9yKGxldCBlPTA7ZTx0Lmxlbmd0aDtlKyspaWYodFtlXS5rZXk9PT1OJHQpcmV0dXJuIHRbZV0udmFsdWUuc3x8bnVsbDtyZXR1cm4gbnVsbH0pKHQuYXR0ciksdGhpcy5jb21wYXRpYmxlPSExLHRoaXMudHlwZT1BJHQuT1AsdGhpcy5pc0dyb3VwTm9kZT0hMSx0aGlzLmNhcmRpbmFsaXR5PTEsdGhpcy5pbkVtYmVkZGluZ3M9W10sdGhpcy5vdXRFbWJlZGRpbmdzPVtdLHRoaXMucGFyZW50Tm9kZT1udWxsLHRoaXMuaW5jbHVkZT1rJHQuVU5TUEVDSUZJRUQsdGhpcy5vd25pbmdTZXJpZXM9bnVsbH19ZnVuY3Rpb24geiR0KHQsZT17fSl7cmV0dXJuIG5ldyBEJHQodCxlKX1jbGFzcyBEJHR7Y29uc3RydWN0b3IodCxlPXt9KXt0aGlzLm5hbWU9dCx0aGlzLnR5cGU9QSR0Lk1FVEEsdGhpcy5kZXB0aD0xLHRoaXMuaXNHcm91cE5vZGU9ITAsdGhpcy5jYXJkaW5hbGl0eT0wLHRoaXMubWV0YWdyYXBoPVkkdCh0LEMkdC5NRVRBLGUpLHRoaXMuYnJpZGdlZ3JhcGg9bnVsbCx0aGlzLm9wSGlzdG9ncmFtPXt9LHRoaXMuZGV2aWNlSGlzdG9ncmFtPXt9LHRoaXMueGxhQ2x1c3Rlckhpc3RvZ3JhbT17fSx0aGlzLmNvbXBhdGliaWxpdHlIaXN0b2dyYW09e2NvbXBhdGlibGU6MCxpbmNvbXBhdGlibGU6MH0sdGhpcy50ZW1wbGF0ZUlkPW51bGwsdGhpcy5wYXJlbnROb2RlPW51bGwsdGhpcy5oYXNOb25Db250cm9sRWRnZXM9ITEsdGhpcy5pbmNsdWRlPWskdC5VTlNQRUNJRklFRCx0aGlzLmFzc29jaWF0ZWRGdW5jdGlvbj0iIn1nZXRGaXJzdENoaWxkKCl7cmV0dXJuIHRoaXMubWV0YWdyYXBoLm5vZGUodGhpcy5tZXRhZ3JhcGgubm9kZXMoKVswXSl9Z2V0Um9vdE9wKCl7bGV0IHQ9dGhpcy5uYW1lLnNwbGl0KCIvIik7cmV0dXJuIHRoaXMubWV0YWdyYXBoLm5vZGUodGhpcy5uYW1lKyIvKCIrdFt0Lmxlbmd0aC0xXSsiKSIpfWxlYXZlcygpe2xldCB0LGU9W10sbj1bdGhpc107Zm9yKDtuLmxlbmd0aDspe2xldCBpPW4uc2hpZnQoKTtpLmlzR3JvdXBOb2RlPyh0PWkubWV0YWdyYXBoLENlLmV4cG9ydHMuZWFjaCh0Lm5vZGVzKCksKGU9Pm4ucHVzaCh0Lm5vZGUoZSkpKSkpOmUucHVzaChpLm5hbWUpfXJldHVybiBlfX1mdW5jdGlvbiBCJHQodCxlKXtyZXR1cm4gbmV3IEgkdCh0LGUpfWNsYXNzIEgkdHtjb25zdHJ1Y3Rvcih0LGUpe3RoaXMudj10LHRoaXMudz1lLHRoaXMuYmFzZUVkZ2VMaXN0PVtdLHRoaXMuaW5ib3VuZD1udWxsLHRoaXMubnVtUmVndWxhckVkZ2VzPTAsdGhpcy5udW1Db250cm9sRWRnZXM9MCx0aGlzLm51bVJlZkVkZ2VzPTAsdGhpcy50b3RhbFNpemU9MH1hZGRCYXNlRWRnZSh0LGUpe3RoaXMuYmFzZUVkZ2VMaXN0LnB1c2godCksdC5pc0NvbnRyb2xEZXBlbmRlbmN5P3RoaXMubnVtQ29udHJvbEVkZ2VzKz0xOnRoaXMubnVtUmVndWxhckVkZ2VzKz0xLHQuaXNSZWZlcmVuY2VFZGdlJiYodGhpcy5udW1SZWZFZGdlcys9MSksdGhpcy50b3RhbFNpemUrPUgkdC5jb21wdXRlU2l6ZU9mRWRnZSh0LGUpLGUubWF4TWV0YUVkZ2VTaXplPU1hdGgubWF4KGUubWF4TWV0YUVkZ2VTaXplLHRoaXMudG90YWxTaXplKX1zdGF0aWMgY29tcHV0ZVNpemVPZkVkZ2UodCxlKXtsZXQgbj1lLm5vZGUodC52KTtpZighbi5vdXRwdXRTaGFwZXMpcmV0dXJuIDE7ZS5oYXNTaGFwZUluZm89ITA7Y29uc3QgaT1PYmplY3Qua2V5cyhuLm91dHB1dFNoYXBlcykubWFwKCh0PT5uLm91dHB1dFNoYXBlc1t0XSkpLm1hcCgodD0+bnVsbD09dD8xOnQucmVkdWNlKCgodCxlKT0+KC0xPT09ZSYmKGU9MSksdCplKSksMSkpKTtyZXR1cm4gQ2UuZXhwb3J0cy5zdW0oaSl9fWZ1bmN0aW9uIEYkdCh0LGUsbixpLHIsbyl7cmV0dXJuIG5ldyBVJHQodCxlLG4saSxyLG8pfWZ1bmN0aW9uIFYkdCh0LGUsbixpLHIpe3JldHVybihuP24rIi8iOiIiKSsodCsodm9pZCAwIT09aSYmdm9pZCAwIT09cj8iWyIraSsiLSIrcisiXSI6IiMiKStlKX1jbGFzcyBVJHR7Y29uc3RydWN0b3IodCxlLG4saSxyLG8pe3RoaXMubmFtZT1yfHxWJHQodCxlLG4pLHRoaXMudHlwZT1BJHQuU0VSSUVTLHRoaXMuaGFzTG9vcD0hMSx0aGlzLnByZWZpeD10LHRoaXMuc3VmZml4PWUsdGhpcy5jbHVzdGVySWQ9aSx0aGlzLmlkcz1bXSx0aGlzLnBhcmVudD1uLHRoaXMuaXNHcm91cE5vZGU9ITAsdGhpcy5jYXJkaW5hbGl0eT0wLHRoaXMubWV0YWdyYXBoPVkkdChyLEMkdC5TRVJJRVMsbyksdGhpcy5icmlkZ2VncmFwaD1udWxsLHRoaXMucGFyZW50Tm9kZT1udWxsLHRoaXMuZGV2aWNlSGlzdG9ncmFtPXt9LHRoaXMueGxhQ2x1c3Rlckhpc3RvZ3JhbT17fSx0aGlzLmNvbXBhdGliaWxpdHlIaXN0b2dyYW09e2NvbXBhdGlibGU6MCxpbmNvbXBhdGlibGU6MH0sdGhpcy5oYXNOb25Db250cm9sRWRnZXM9ITEsdGhpcy5pbmNsdWRlPWskdC5VTlNQRUNJRklFRH19Y29uc3QgaiR0PS9eKFteOl0rKTooKFx3Kzp8KVxkKykkLztmdW5jdGlvbiBHJHQodCxlLG4saSxyLG8pe2lmKGU9PT1uLm5hbWUpcmV0dXJuO3QuZWRnZXMucHVzaCh7djplLHc6bi5uYW1lLG91dHB1dFRlbnNvcktleTppLm91dHB1dFRlbnNvcktleSxpc0NvbnRyb2xEZXBlbmRlbmN5OmkuaXNDb250cm9sRGVwZW5kZW5jeSxpc1JlZmVyZW5jZUVkZ2U6ITA9PT1yLnJlZkVkZ2VzW24ub3ArIiAiK29dfSl9Y29uc3QgVyR0PXtlbmFibGVFbWJlZGRpbmc6ITAsaW5FbWJlZGRpbmdUeXBlczpbIkNvbnN0Il0sb3V0RW1iZWRkaW5nVHlwZXM6WyJeW2EtekEtWl0rU3VtbWFyeSQiXSxyZWZFZGdlczp7IkFzc2lnbiAwIjohMCwiQXNzaWduQWRkIDAiOiEwLCJBc3NpZ25TdWIgMCI6ITAsImFzc2lnbiAwIjohMCwiYXNzaWduX2FkZCAwIjohMCwiYXNzaWduX3N1YiAwIjohMCwiY291bnRfdXBfdG8gMCI6ITAsIlNjYXR0ZXJBZGQgMCI6ITAsIlNjYXR0ZXJTdWIgMCI6ITAsIlNjYXR0ZXJVcGRhdGUgMCI6ITAsInNjYXR0ZXJfYWRkIDAiOiEwLCJzY2F0dGVyX3N1YiAwIjohMCwic2NhdHRlcl91cGRhdGUgMCI6ITB9fTtmdW5jdGlvbiBxJHQodCxlLG4pe2xldCBpPXt9LHI9e30sbz17fSxhPVgkdChlLmluRW1iZWRkaW5nVHlwZXMpLHM9WCR0KGUub3V0RW1iZWRkaW5nVHlwZXMpLGw9W10sYz10Lm5vZGUsdT1uZXcgQXJyYXkoYy5sZW5ndGgpO3JldHVybiBtJHQoIk5vcm1hbGl6aW5nIG5hbWVzIiwzMCwoKCk9PntsZXQgZT1uZXcgQXJyYXkoYy5sZW5ndGgpLG49MDtjb25zdCBoPXQ9PntsZXQgYz1uZXcgTyR0KHQpO3JldHVybiBhKGMpPyhsLnB1c2goYy5uYW1lKSxpW2MubmFtZV09YyxjKTpzKGMpPyhsLnB1c2goYy5uYW1lKSxyW2MubmFtZV09YyxDZS5leHBvcnRzLmVhY2goYy5pbnB1dHMsKHQ9PntsZXQgZT10Lm5hbWU7b1tlXT1vW2VdfHxbXSxvW2VdLnB1c2goYyl9KSksYyk6KGVbbl09Yyx1W25dPWMubmFtZSxuKyssYyl9O0NlLmV4cG9ydHMuZWFjaChjLGgpO2NvbnN0IGQ9dD0+e2NvbnN0IGU9VCR0K3Quc2lnbmF0dXJlLm5hbWU7aWYoaCh7bmFtZTplLGlucHV0OltdLGRldmljZToiIixvcDoiIixhdHRyOltdfSksdC5zaWduYXR1cmUuaW5wdXRfYXJnKXtsZXQgbj0wO2NvbnN0IGk9dD0+e2goe25hbWU6ZStNJHQrdC5uYW1lLGlucHV0OltdLGRldmljZToiIixvcDoiaW5wdXRfYXJnIixhdHRyOlt7a2V5OiJUIix2YWx1ZTp7dHlwZTp0LnR5cGV9fV19KS5mdW5jdGlvbklucHV0SW5kZXg9bixuKyt9O3Quc2lnbmF0dXJlLmlucHV0X2FyZy5uYW1lP2kodC5zaWduYXR1cmUuaW5wdXRfYXJnKTpDZS5leHBvcnRzLmVhY2godC5zaWduYXR1cmUuaW5wdXRfYXJnLGkpfWxldCBuPTA7Y29uc3QgaT17fTtpZih0LnNpZ25hdHVyZS5vdXRwdXRfYXJnKXtjb25zdCByPXQ9PntpW2UrTSR0K3QubmFtZV09bixuKyt9O3Quc2lnbmF0dXJlLm91dHB1dF9hcmcubmFtZT9yKHQuc2lnbmF0dXJlLm91dHB1dF9hcmcpOkNlLmV4cG9ydHMuZWFjaCh0LnNpZ25hdHVyZS5vdXRwdXRfYXJnLHIpfUNlLmV4cG9ydHMuZWFjaCh0Lm5vZGVfZGVmLCh0PT57dC5uYW1lPWUrIi8iK3QubmFtZSwic3RyaW5nIj09dHlwZW9mIHQuaW5wdXQmJih0LmlucHV0PVt0LmlucHV0XSk7Y29uc3Qgbj1oKHQpO0NlLmV4cG9ydHMuaXNOdW1iZXIoaVt0Lm5hbWVdKSYmKG4uZnVuY3Rpb25PdXRwdXRJbmRleD1pW3QubmFtZV0pLENlLmV4cG9ydHMuZWFjaChuLmlucHV0cywodD0+e3QubmFtZT1lK00kdCt0Lm5hbWV9KSl9KSl9O3JldHVybiB0LmxpYnJhcnkmJnQubGlicmFyeS5mdW5jdGlvbiYmQ2UuZXhwb3J0cy5lYWNoKHQubGlicmFyeS5mdW5jdGlvbixkKSxlLnNwbGljZShuKSx1LnNwbGljZShuKSxlfSksbixCQXQuTk9STUFMSVpJTkdfTkFNRVMpLnRoZW4oKHQ9Pm0kdCgiQnVpbGRpbmcgdGhlIGRhdGEgc3RydWN0dXJlIiw3MCwoKCk9PntsZXQgbj0oZnVuY3Rpb24gYSh0LGUpe2xldCBuPXt9LGk9e307dC5zb3J0KCk7Zm9yKGxldCBlPTA7ZTx0Lmxlbmd0aC0xOysrZSl7bGV0IHI9dFtlXTtDZS5leHBvcnRzLmVhY2goWiR0KHIpLnNsaWNlKDAsLTEpLCh0PT57aVt0XT0hMH0pKTtmb3IobGV0IGk9ZSsxO2k8dC5sZW5ndGg7KytpKXtsZXQgZT10W2ldO2lmKCFDZS5leHBvcnRzLnN0YXJ0c1dpdGgoZSxyKSlicmVhaztpZihlLmxlbmd0aD5yLmxlbmd0aCYmZS5jaGFyQXQoci5sZW5ndGgpPT09TSR0KXtuW3JdPSQkdChyKTticmVha319fXJldHVybiBDZS5leHBvcnRzLmVhY2goZSwodD0+e3QgaW4gaSYmKG5bdF09JCR0KHQpKX0pKSxufSkodSxsKSxzPW5ldyBJJHQ7cmV0dXJuIENlLmV4cG9ydHMuZWFjaCh0LCh0PT57bGV0IGU9blt0Lm5hbWVdfHx0Lm5hbWU7cy5ub2Rlc1tlXT10LHQubmFtZSBpbiBvJiYodC5vdXRFbWJlZGRpbmdzPW9bdC5uYW1lXSxDZS5leHBvcnRzLmVhY2godC5vdXRFbWJlZGRpbmdzLCh0PT57dC5uYW1lPW5bdC5uYW1lXXx8dC5uYW1lfSkpKSx0Lm5hbWU9ZX0pKSxDZS5leHBvcnRzLmVhY2godCwodD0+e0NlLmV4cG9ydHMuZWFjaCh0LmlucHV0cywoKG8sYSk9PntsZXQgbD1vLm5hbWU7aWYobCBpbiBpKXtsZXQgcj1pW2xdO3QuaW5FbWJlZGRpbmdzLnB1c2gocik7Zm9yKGxldCBpIG9mIHIuaW5wdXRzKUckdChzLG5baS5uYW1lXXx8aS5uYW1lLHQsaSxlLGEpfWVsc2UgaWYobCBpbiByKXtsZXQgaT1yW2xdO2ZvcihsZXQgciBvZiBpLmlucHV0cylHJHQocyxuW3IubmFtZV18fHIubmFtZSx0LG8sZSxhKX1lbHNlIEckdChzLG5bbF18fGwsdCxvLGUsYSl9KSl9KSksQ2UuZXhwb3J0cy5lYWNoKGksKCh0LGUpPT57dC5uYW1lPW5bdC5uYW1lXXx8dC5uYW1lfSkpLHN9KSxuLEJBdC5CVUlMRF9TTElNX0dSQVBIKSkpfWZ1bmN0aW9uIFkkdCh0LGUsbj17fSl7Y29uc3QgaT1uZXcgdCR0LmdyYXBobGliLkdyYXBoKG4pO3JldHVybiBpLnNldEdyYXBoKHtuYW1lOnQscmFua2RpcjpuLnJhbmtkaXJ8fCJCVCIsdHlwZTplfSksaX1mdW5jdGlvbiBYJHQodCl7cmV0dXJuIGZ1bmN0aW9uKGUpe2ZvcihsZXQgbj0wO248dC5sZW5ndGg7bisrKXtsZXQgaT1uZXcgUmVnRXhwKHRbbl0pO2lmKCJzdHJpbmciPT10eXBlb2YgZS5vcCYmZS5vcC5tYXRjaChpKSlyZXR1cm4hMH1yZXR1cm4hMX19ZnVuY3Rpb24gJCR0KHQpe2xldCBlPXQuc3BsaXQoTSR0KTtyZXR1cm4gdCtNJHQrIigiK2VbZS5sZW5ndGgtMV0rIikifWZ1bmN0aW9uIEskdCh0KXtsZXQgZT10Lm5vZGVzKCkubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gdC5uZWlnaGJvcnMoZSkubGVuZ3RofSkpO3JldHVybiBlLnNvcnQoKSxlfWZ1bmN0aW9uIFokdCh0LGUpe2xldCBuPVtdLGk9dC5pbmRleE9mKE0kdCk7Zm9yKDtpPj0wOyluLnB1c2godC5zdWJzdHJpbmcoMCxpKSksaT10LmluZGV4T2YoTSR0LGkrMSk7aWYoZSl7bGV0IGk9ZVt0XTtpJiZuLnB1c2goaSl9cmV0dXJuIG4ucHVzaCh0KSxufWZ1bmN0aW9uIEokdCh0KXtyZXR1cm4gdD09PWskdC5FWENMVURFPyJBZGQgdG8gbWFpbiBncmFwaCI6IlJlbW92ZSBmcm9tIG1haW4gZ3JhcGgifWZ1bmN0aW9uIFEkdCh0LGUpe2xldCBuPShmdW5jdGlvbiByKHQsZSl7cmV0dXJuIENlLmV4cG9ydHMucmVkdWNlKHQsKGZ1bmN0aW9uKHQsbil7bGV0IGk9blswXSxyPVtdO3JldHVybiBuWzFdLm5vZGVzLmZvckVhY2goKGZ1bmN0aW9uKHQpe2ZvcihsZXQgbj0wO248ci5sZW5ndGg7bisrKXtpZighZXx8ZUt0KHJbbl0ubWV0YW5vZGUubWV0YWdyYXBoLHQubWV0YWdyYXBoKSlyZXR1cm4gdC50ZW1wbGF0ZUlkPXJbbl0ubWV0YW5vZGUudGVtcGxhdGVJZCx2b2lkIHJbbl0ubWVtYmVycy5wdXNoKHQubmFtZSl9dC50ZW1wbGF0ZUlkPWkrIlsiK3IubGVuZ3RoKyJdIixyLnB1c2goe21ldGFub2RlOnQsbWVtYmVyczpbdC5uYW1lXX0pfSkpLHIuZm9yRWFjaCgoZnVuY3Rpb24oZSl7dFtlLm1ldGFub2RlLnRlbXBsYXRlSWRdPXtsZXZlbDpuWzFdLmxldmVsLG5vZGVzOmUubWVtYmVyc319KSksdH0pLHt9KX0pKChmdW5jdGlvbiBpKHQpe2NvbnN0IGU9dC5nZXROb2RlTWFwKCk7bGV0IG49T2JqZWN0LmtleXMoZSkucmVkdWNlKCgodCxuKT0+e2NvbnN0IGk9ZVtuXTtpZihpLnR5cGUhPT1BJHQuTUVUQSlyZXR1cm4gdDtsZXQgcj1uLnNwbGl0KCIvIikubGVuZ3RoLTEsbz0oZnVuY3Rpb24gYSh0KXtsZXQgZT1DZS5leHBvcnRzLm1hcCh7ZGVwdGg6dC5kZXB0aCwifFZ8Ijp0Lm1ldGFncmFwaC5ub2RlcygpLmxlbmd0aCwifEV8Ijp0Lm1ldGFncmFwaC5lZGdlcygpLmxlbmd0aH0sKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUrIj0iK3R9KSkuam9pbigiICIpLG49Q2UuZXhwb3J0cy5tYXAodC5vcEhpc3RvZ3JhbSwoZnVuY3Rpb24odCxlKXtyZXR1cm4gZSsiPSIrdH0pKS5qb2luKCIsIik7cmV0dXJuIGUrIiBbb3BzXSAiK259KShpKSxzPXRbb118fHtub2RlczpbXSxsZXZlbDpyfTtyZXR1cm4gdFtvXT1zLHMubm9kZXMucHVzaChpKSxzLmxldmVsPnImJihzLmxldmVsPXIpLHR9KSx7fSk7cmV0dXJuIE9iamVjdC5rZXlzKG4pLm1hcCgodD0+W3Qsblt0XV0pKS5maWx0ZXIoKChbdCxlXSk9Pntjb25zdHtub2RlczpufT1lO2lmKG4ubGVuZ3RoPjEpcmV0dXJuITA7Y29uc3QgaT1uWzBdO3JldHVybiBpLnR5cGU9PT1BJHQuTUVUQSYmaS5hc3NvY2lhdGVkRnVuY3Rpb259KSkuc29ydCgoKFt0LGVdKT0+ZS5ub2Rlc1swXS5kZXB0aCkpfSkodCksZSk7cmV0dXJuIE9iamVjdC5rZXlzKG4pLnNvcnQoKHQ9Pm5bdF0ubGV2ZWwpKS5yZWR1Y2UoKCh0LGUpPT4odFtlXT1uW2VdLHQpKSx7fSl9ZnVuY3Rpb24gdEt0KHQsZSxuKXtyZXR1cm4gQ2UuZXhwb3J0cy5zb3J0QnkodCxbdD0+ZS5ub2RlKHQpLm9wLHQ9PmUubm9kZSh0KS50ZW1wbGF0ZUlkLHQ9PmUubmVpZ2hib3JzKHQpLmxlbmd0aCx0PT5lLnByZWRlY2Vzc29ycyh0KS5sZW5ndGgsdD0+ZS5zdWNjZXNzb3JzKHQpLmxlbmd0aCx0PT50LnN1YnN0cihuLmxlbmd0aCldKX1mdW5jdGlvbiBlS3QodCxlKXtpZighKGZ1bmN0aW9uIG4odCxlKXtsZXQgbj1LJHQodCksaT1LJHQoZSk7Zm9yKGxldCB0PTA7dDxuLmxlbmd0aDt0KyspaWYoblt0XSE9PWlbdF0pcmV0dXJuITE7cmV0dXJuITB9KSh0LGUpKXJldHVybiExO2xldCBpPXQuZ3JhcGgoKS5uYW1lLHI9ZS5ncmFwaCgpLm5hbWUsbz17fSxhPXt9LHM9W107ZnVuY3Rpb24gbCh0LGUpe2xldCBuPXQuc3Vic3RyKGkubGVuZ3RoKSxsPWUuc3Vic3RyKHIubGVuZ3RoKTtyZXR1cm4gb1tuXV5hW2xdPyhjb25zb2xlLndhcm4oImRpZmZlcmVudCB2aXNpdCBwYXR0ZXJuIiwiWyIraSsiXSIsbiwiWyIrcisiXSIsbCksITApOihvW25dfHwob1tuXT1hW2xdPSEwLHMucHVzaCh7bjE6dCxuMjplfSkpLCExKX1sZXQgYz10LnNvdXJjZXMoKSx1PWUuc291cmNlcygpO2lmKGMubGVuZ3RoIT09dS5sZW5ndGgpcmV0dXJuIGNvbnNvbGUubG9nKCJkaWZmZXJlbnQgc291cmNlIGxlbmd0aCIpLCExO2M9dEt0KGMsdCxpKSx1PXRLdCh1LGUscik7Zm9yKGxldCB0PTA7dDxjLmxlbmd0aDt0Kyspe2lmKGwoY1t0XSx1W3RdKSlyZXR1cm4hMX1mb3IoO3MubGVuZ3RoPjA7KXtsZXQgbj1zLnBvcCgpO2lmKCFuS3QodC5ub2RlKG4ubjEpLGUubm9kZShuLm4yKSkpcmV0dXJuITE7bGV0IG89dC5zdWNjZXNzb3JzKG4ubjEpLGE9ZS5zdWNjZXNzb3JzKG4ubjIpO2lmKG8ubGVuZ3RoIT09YS5sZW5ndGgpcmV0dXJuIGNvbnNvbGUubG9nKCIjIG9mIHN1Y2Nlc3NvcnMgbWlzbWF0Y2giLG8sYSksITE7bz10S3Qobyx0LGkpLGE9dEt0KGEsZSxyKTtmb3IobGV0IHQ9MDt0PG8ubGVuZ3RoO3QrKyl7aWYobChvW3RdLGFbdF0pKXJldHVybiExfX1yZXR1cm4hMH1mdW5jdGlvbiBuS3QodCxlKXtpZih0LnR5cGU9PT1BJHQuTUVUQSl7bGV0IG49dCxpPWU7cmV0dXJuIG4udGVtcGxhdGVJZCYmaS50ZW1wbGF0ZUlkJiZuLnRlbXBsYXRlSWQ9PT1pLnRlbXBsYXRlSWR9aWYodC50eXBlPT09QSR0Lk9QJiZlLnR5cGU9PT1BJHQuT1ApcmV0dXJuIHQub3A9PT1lLm9wO2lmKHQudHlwZT09PUEkdC5TRVJJRVMmJmUudHlwZT09PUEkdC5TRVJJRVMpe2xldCBuPXQsaT1lLHI9bi5tZXRhZ3JhcGgubm9kZUNvdW50KCk7cmV0dXJuIHI9PT1pLm1ldGFncmFwaC5ub2RlQ291bnQoKSYmKDA9PT1yfHxuLm1ldGFncmFwaC5ub2RlKG4ubWV0YWdyYXBoLm5vZGVzKClbMF0pLm9wPT09aS5tZXRhZ3JhcGgubm9kZShpLm1ldGFncmFwaC5ub2RlcygpWzBdKS5vcCl9cmV0dXJuITF9dmFyIGlLdDshKGZ1bmN0aW9uKHQpe3RbdC5URU1QTEFURVNfVVBEQVRFRD0wXT0iVEVNUExBVEVTX1VQREFURUQifSkoaUt0fHwoaUt0PXt9KSk7Y2xhc3Mgckt0IGV4dGVuZHMgY2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLmV2ZW50VHlwZVRvTGlzdGVuZXJzPW5ldyBNYXB9Z2V0TGlzdGVuZXJzKHQpe3JldHVybiB0aGlzLmV2ZW50VHlwZVRvTGlzdGVuZXJzLmhhcyh0KXx8dGhpcy5ldmVudFR5cGVUb0xpc3RlbmVycy5zZXQodCxbXSksdGhpcy5ldmVudFR5cGVUb0xpc3RlbmVycy5nZXQodCl9YWRkTGlzdGVuZXIodCxlKXt0aGlzLmdldExpc3RlbmVycyh0KS5wdXNoKGUpfXJlbW92ZUxpc3RlbmVyKHQsZSl7Y29uc3Qgbj10aGlzLmdldExpc3RlbmVycyh0KS5maWx0ZXIoKHQ9PnQhPT1lKSk7dGhpcy5ldmVudFR5cGVUb0xpc3RlbmVycy5zZXQodCxuKX1kaXNwYXRjaEV2ZW50KHQsZSl7Zm9yKGNvbnN0IG4gb2YgdGhpcy5nZXRMaXN0ZW5lcnModCkpbihlKX19e2NvbnN0cnVjdG9yKHQpe3N1cGVyKCksdGhpcy5oYXNTaGFwZUluZm89ITEsdGhpcy5tYXhNZXRhRWRnZVNpemU9MSx0aGlzLmdyYXBoT3B0aW9ucz17fSx0aGlzLnRlbXBsYXRlcz1udWxsLHRoaXMuZ3JhcGhPcHRpb25zLmNvbXBvdW5kPSEwLHRoaXMuZ3JhcGhPcHRpb25zLnJhbmtkaXI9dC5yYW5rRGlyZWN0aW9uLHRoaXMucm9vdD16JHQoRSR0LHRoaXMuZ3JhcGhPcHRpb25zKSx0aGlzLmxpYnJhcnlGdW5jdGlvbnM9e30sdGhpcy5zZXJpZXNHcm91cE1hcD1uZXcgTWFwKHQuc2VyaWVzTWFwKSx0aGlzLmRldmljZXM9bnVsbCx0aGlzLnhsYUNsdXN0ZXJzPW51bGwsdGhpcy52ZXJpZnlUZW1wbGF0ZT10LnZlcmlmeVRlbXBsYXRlLHRoaXMuaW5kZXg9e30sdGhpcy5pbmRleC5fX3Jvb3RfXz10aGlzLnJvb3QsdGhpcy5vcmRlcmluZ3M9e319Z2V0U2VyaWVzR3JvdXBUeXBlKHQpe3ZhciBlO3JldHVybiBudWxsIT09KGU9dGhpcy5zZXJpZXNHcm91cE1hcC5nZXQodCkpJiZ2b2lkIDAhPT1lP2U6TCR0LkdST1VQfXNldFNlcmllc0dyb3VwVHlwZSh0LGUpe3JldHVybiB0aGlzLnNlcmllc0dyb3VwTWFwLnNldCh0LGUpfWJ1aWxkU2VyaWVzR3JvdXBNYXBUb2dnbGVkKHQpe2NvbnN0IGU9dGhpcy5nZXRTZXJpZXNHcm91cFR5cGUodCk9PT1MJHQuR1JPVVA/TCR0LlVOR1JPVVA6TCR0LkdST1VQO3JldHVybiBuZXcgTWFwKFsuLi50aGlzLnNlcmllc0dyb3VwTWFwLFt0LGVdXSl9Z2V0Tm9kZU1hcCgpe3JldHVybiB0aGlzLmluZGV4fW5vZGUodCl7cmV0dXJuIHRoaXMuaW5kZXhbdF19c2V0Tm9kZSh0LGUpe3RoaXMuaW5kZXhbdF09ZX1nZXRCcmlkZ2VncmFwaCh0KXtsZXQgZT10aGlzLmluZGV4W3RdO2lmKCFlKXRocm93IEVycm9yKCJDb3VsZCBub3QgZmluZCBub2RlIGluIGhpZXJhcmNoeTogIit0KTtpZighKCJtZXRhZ3JhcGgiaW4gZSkpcmV0dXJuIG51bGw7aWYoZS5icmlkZ2VncmFwaClyZXR1cm4gZS5icmlkZ2VncmFwaDtsZXQgbj1lLmJyaWRnZWdyYXBoPVkkdCgiQlJJREdFR1JBUEgiLEMkdC5CUklER0UsdGhpcy5ncmFwaE9wdGlvbnMpO2lmKCFlLnBhcmVudE5vZGV8fCEoIm1ldGFncmFwaCJpbiBlLnBhcmVudE5vZGUpKXJldHVybiBuO2xldCBpPWUucGFyZW50Tm9kZSxyPWkubWV0YWdyYXBoLG89dGhpcy5nZXRCcmlkZ2VncmFwaChpLm5hbWUpO3JldHVybiBDZS5leHBvcnRzLmVhY2goW3Isb10sKGU9PntlLmVkZ2VzKCkuZmlsdGVyKChlPT5lLnY9PT10fHxlLnc9PT10KSkuZm9yRWFjaCgoaT0+e2xldCByPWkudz09PXQsbz1lLmVkZ2UoaSk7Q2UuZXhwb3J0cy5lYWNoKG8uYmFzZUVkZ2VMaXN0LChlPT57bGV0W28sYV09cj9bZS53LGkudl06W2UudixpLnddLHM9dGhpcy5nZXRDaGlsZE5hbWUodCxvKSxsPXt2OnI/YTpzLHc6cj9zOmF9LGM9bi5lZGdlKGwpO2N8fChjPUIkdChsLnYsbC53KSxjLmluYm91bmQ9cixuLnNldEVkZ2UobC52LGwudyxjKSksYy5hZGRCYXNlRWRnZShlLHRoaXMpfSkpfSkpfSkpLG59Z2V0Q2hpbGROYW1lKHQsZSl7bGV0IG49dGhpcy5pbmRleFtlXTtmb3IoO247KXtpZihuLnBhcmVudE5vZGUmJm4ucGFyZW50Tm9kZS5uYW1lPT09dClyZXR1cm4gbi5uYW1lO249bi5wYXJlbnROb2RlfXRocm93IEVycm9yKCJDb3VsZCBub3QgZmluZCBpbW1lZGlhdGUgY2hpbGQgZm9yIGRlc2NlbmRhbnQ6ICIrZSl9Z2V0UHJlZGVjZXNzb3JzKHQpe2xldCBlPXRoaXMuaW5kZXhbdF07aWYoIWUpdGhyb3cgRXJyb3IoIkNvdWxkIG5vdCBmaW5kIG5vZGUgd2l0aCBuYW1lOiAiK3QpO2xldCBuPXRoaXMuZ2V0T25lV2F5RWRnZXMoZSwhMCk7cmV0dXJuIGUuaXNHcm91cE5vZGV8fENlLmV4cG9ydHMuZWFjaChlLmluRW1iZWRkaW5ncywoaT0+e0NlLmV4cG9ydHMuZWFjaChlLmlucHV0cywoZT0+e2lmKGUubmFtZT09PWkubmFtZSl7bGV0IHI9bmV3IEgkdChpLm5hbWUsdCk7ci5hZGRCYXNlRWRnZSh7aXNDb250cm9sRGVwZW5kZW5jeTplLmlzQ29udHJvbERlcGVuZGVuY3ksb3V0cHV0VGVuc29yS2V5OmUub3V0cHV0VGVuc29yS2V5LGlzUmVmZXJlbmNlRWRnZTohMSx2OmkubmFtZSx3OnR9LHRoaXMpLG4ucmVndWxhci5wdXNoKHIpfX0pKX0pKSxufWdldFN1Y2Nlc3NvcnModCl7bGV0IGU9dGhpcy5pbmRleFt0XTtpZighZSl0aHJvdyBFcnJvcigiQ291bGQgbm90IGZpbmQgbm9kZSB3aXRoIG5hbWU6ICIrdCk7bGV0IG49dGhpcy5nZXRPbmVXYXlFZGdlcyhlLCExKTtyZXR1cm4gZS5pc0dyb3VwTm9kZXx8Q2UuZXhwb3J0cy5lYWNoKGUub3V0RW1iZWRkaW5ncywoZT0+e0NlLmV4cG9ydHMuZWFjaChlLmlucHV0cywoaT0+e2lmKGkubmFtZT09PXQpe2xldCByPW5ldyBIJHQodCxlLm5hbWUpO3IuYWRkQmFzZUVkZ2Uoe2lzQ29udHJvbERlcGVuZGVuY3k6aS5pc0NvbnRyb2xEZXBlbmRlbmN5LG91dHB1dFRlbnNvcktleTppLm91dHB1dFRlbnNvcktleSxpc1JlZmVyZW5jZUVkZ2U6ITEsdjp0LHc6ZS5uYW1lfSx0aGlzKSxuLnJlZ3VsYXIucHVzaChyKX19KSl9KSksbn1nZXRPbmVXYXlFZGdlcyh0LGUpe2xldCBuPXtjb250cm9sOltdLHJlZ3VsYXI6W119O2lmKCF0LnBhcmVudE5vZGV8fCF0LnBhcmVudE5vZGUuaXNHcm91cE5vZGUpcmV0dXJuIG47bGV0IGk9dC5wYXJlbnROb2RlLHI9aS5tZXRhZ3JhcGgsbz10aGlzLmdldEJyaWRnZWdyYXBoKGkubmFtZSk7cmV0dXJuIG9LdChyLHQsZSxuKSxvS3Qobyx0LGUsbiksbn1nZXRUb3BvbG9naWNhbE9yZGVyaW5nKHQpe2xldCBlPXRoaXMuaW5kZXhbdF07aWYoIWUpdGhyb3cgRXJyb3IoIkNvdWxkIG5vdCBmaW5kIG5vZGUgd2l0aCBuYW1lOiAiK3QpO2lmKCFlLmlzR3JvdXBOb2RlKXJldHVybiBudWxsO2lmKHQgaW4gdGhpcy5vcmRlcmluZ3MpcmV0dXJuIHRoaXMub3JkZXJpbmdzW3RdO2xldCBuPXt9LGk9e30scj1lLm1ldGFncmFwaDtDZS5leHBvcnRzLmVhY2goci5lZGdlcygpLCh0PT57ci5lZGdlKHQpLm51bVJlZ3VsYXJFZGdlcyYmKHQudiBpbiBufHwoblt0LnZdPVtdKSxuW3Qudl0ucHVzaCh0LncpLGlbdC53XT0hMCl9KSk7bGV0IG89Q2UuZXhwb3J0cy5kaWZmZXJlbmNlKENlLmV4cG9ydHMua2V5cyhuKSxDZS5leHBvcnRzLmtleXMoaSkpLGE9dGhpcy5vcmRlcmluZ3NbdF09e30scz0wO2Zvcig7by5sZW5ndGg7KXtsZXQgdD1vLnNoaWZ0KCk7YVt0XT1zKyssQ2UuZXhwb3J0cy5lYWNoKG5bdF0sKHQ9Pm8ucHVzaCh0KSkpLGRlbGV0ZSBuW3RdfXJldHVybiBhfWdldFRlbXBsYXRlSW5kZXgoKXtpZighdGhpcy50ZW1wbGF0ZXMpcmV0dXJuIG51bGw7bGV0IHQ9WmcodGhpcy50ZW1wbGF0ZXMpO2lmKCF0Lmxlbmd0aClyZXR1cm4gbnVsbDtsZXQgZT1ZTSgpLmRvbWFpbih0KS5yYW5nZShLbCgwLHQubGVuZ3RoKSk7cmV0dXJuIHQ9PmUodCl9dXBkYXRlVGVtcGxhdGVzKCl7ZCR0KCJGaW5kaW5nIHNpbWlsYXIgc3ViZ3JhcGhzIiwoKCk9Pnt0aGlzLnRlbXBsYXRlcz1RJHQodGhpcyx0aGlzLnZlcmlmeVRlbXBsYXRlKSx0aGlzLmRpc3BhdGNoRXZlbnQoaUt0LlRFTVBMQVRFU19VUERBVEVEKX0pLEJBdC5ISUVSQVJDSFlfRklORF9TSU1JTEFSX1NVQkdSQVBIUyl9fWZ1bmN0aW9uIG9LdCh0LGUsbixpKXtsZXQgcj1uP3QuaW5FZGdlcyhlLm5hbWUpOnQub3V0RWRnZXMoZS5uYW1lKTtDZS5leHBvcnRzLmVhY2gociwoZT0+e2xldCBuPXQuZWRnZShlKTsobi5udW1SZWd1bGFyRWRnZXM/aS5yZWd1bGFyOmkuY29udHJvbCkucHVzaChuKX0pKX1jb25zdCBhS3Q9e3ZlcmlmeVRlbXBsYXRlOiEwLHNlcmllc05vZGVNaW5TaXplOjUsc2VyaWVzTWFwOm5ldyBNYXAscmFua0RpcmVjdGlvbjoiQlQiLHVzZUdlbmVyYWxpemVkU2VyaWVzUGF0dGVybnM6ITF9O2Z1bmN0aW9uIHNLdCh0LGUsbil7Y29uc3QgaT1uZXcgckt0KGUpLHI9e307cmV0dXJuIG0kdCgiQWRkaW5nIG5vZGVzIiwzMCwoKCk9PntsZXQgZT17fSxuPXt9O0NlLmV4cG9ydHMuZWFjaCh0Lm5vZGVzLCgodCxpKT0+e3QuZGV2aWNlJiYoZVt0LmRldmljZV09ITApLHQueGxhQ2x1c3RlciYmKG5bdC54bGFDbHVzdGVyXT0hMCl9KSksaS5kZXZpY2VzPUNlLmV4cG9ydHMua2V5cyhlKSxpLnhsYUNsdXN0ZXJzPUNlLmV4cG9ydHMua2V5cyhuKSwoZnVuY3Rpb24gcih0LGUpe2NvbnN0IG49e307Q2UuZXhwb3J0cy5lYWNoKGUubm9kZXMsKChlLGkpPT57bGV0IHI9WiR0KGUubmFtZSksbz10LnJvb3Q7by5kZXB0aD1NYXRoLm1heChyLmxlbmd0aCxvLmRlcHRoKSxuW2Uub3BdfHwobltlLm9wXT1bXSksbltlLm9wXS5wdXNoKGUpO2ZvcihsZXQgaT0wO2k8ci5sZW5ndGgmJihvLmRlcHRoPU1hdGgubWF4KG8uZGVwdGgsci5sZW5ndGgtaSksby5jYXJkaW5hbGl0eSs9ZS5jYXJkaW5hbGl0eSxvLm9wSGlzdG9ncmFtW2Uub3BdPShvLm9wSGlzdG9ncmFtW2Uub3BdfHwwKSsxLG51bGwhPWUuZGV2aWNlJiYoby5kZXZpY2VIaXN0b2dyYW1bZS5kZXZpY2VdPShvLmRldmljZUhpc3RvZ3JhbVtlLmRldmljZV18fDApKzEpLG51bGwhPWUueGxhQ2x1c3RlciYmKG8ueGxhQ2x1c3Rlckhpc3RvZ3JhbVtlLnhsYUNsdXN0ZXJdPShvLnhsYUNsdXN0ZXJIaXN0b2dyYW1bZS54bGFDbHVzdGVyXXx8MCkrMSksZS5jb21wYXRpYmxlP28uY29tcGF0aWJpbGl0eUhpc3RvZ3JhbS5jb21wYXRpYmxlPShvLmNvbXBhdGliaWxpdHlIaXN0b2dyYW0uY29tcGF0aWJsZXx8MCkrMTpvLmNvbXBhdGliaWxpdHlIaXN0b2dyYW0uaW5jb21wYXRpYmxlPShvLmNvbXBhdGliaWxpdHlIaXN0b2dyYW0uaW5jb21wYXRpYmxlfHwwKSsxLENlLmV4cG9ydHMuZWFjaChlLmluRW1iZWRkaW5ncywodD0+e3QuY29tcGF0aWJsZT9vLmNvbXBhdGliaWxpdHlIaXN0b2dyYW0uY29tcGF0aWJsZT0oby5jb21wYXRpYmlsaXR5SGlzdG9ncmFtLmNvbXBhdGlibGV8fDApKzE6by5jb21wYXRpYmlsaXR5SGlzdG9ncmFtLmluY29tcGF0aWJsZT0oby5jb21wYXRpYmlsaXR5SGlzdG9ncmFtLmluY29tcGF0aWJsZXx8MCkrMX0pKSxDZS5leHBvcnRzLmVhY2goZS5vdXRFbWJlZGRpbmdzLCh0PT57dC5jb21wYXRpYmxlP28uY29tcGF0aWJpbGl0eUhpc3RvZ3JhbS5jb21wYXRpYmxlPShvLmNvbXBhdGliaWxpdHlIaXN0b2dyYW0uY29tcGF0aWJsZXx8MCkrMTpvLmNvbXBhdGliaWxpdHlIaXN0b2dyYW0uaW5jb21wYXRpYmxlPShvLmNvbXBhdGliaWxpdHlIaXN0b2dyYW0uaW5jb21wYXRpYmxlfHwwKSsxfSkpLGkhPT1yLmxlbmd0aC0xKTtpKyspe2xldCBlPXJbaV0sYT10Lm5vZGUoZSk7aWYoIWEmJihhPXokdChlLHQuZ3JhcGhPcHRpb25zKSxhLnBhcmVudE5vZGU9byx0LnNldE5vZGUoZSxhKSxvLm1ldGFncmFwaC5zZXROb2RlKGUsYSksMD09PWUuaW5kZXhPZihUJHQpJiZvLm5hbWU9PT1FJHQpKXtjb25zdCBpPWUuc3Vic3RyaW5nKFQkdC5sZW5ndGgpO25baV18fChuW2ldPVtdKSx0LmxpYnJhcnlGdW5jdGlvbnNbaV09e25vZGU6YSx1c2FnZXM6bltpXX0sYS5hc3NvY2lhdGVkRnVuY3Rpb249aX1vPWF9dC5zZXROb2RlKGUubmFtZSxlKSxlLnBhcmVudE5vZGU9byxvLm1ldGFncmFwaC5zZXROb2RlKGUubmFtZSxlKSxDZS5leHBvcnRzLmVhY2goZS5pbkVtYmVkZGluZ3MsKGZ1bmN0aW9uKG4pe3Quc2V0Tm9kZShuLm5hbWUsbiksbi5wYXJlbnROb2RlPWV9KSksQ2UuZXhwb3J0cy5lYWNoKGUub3V0RW1iZWRkaW5ncywoZnVuY3Rpb24obil7dC5zZXROb2RlKG4ubmFtZSxuKSxuLnBhcmVudE5vZGU9ZX0pKX0pKX0pKGksdCl9KSxuLEJBdC5ISUVSQVJDSFlfQUREX05PREVTKS50aGVuKCgoKT0+bSR0KCJEZXRlY3Qgc2VyaWVzIiwzMCwoKCk9PntlLnNlcmllc05vZGVNaW5TaXplPjAmJmxLdChpLnJvb3QsaSxyLGUuc2VyaWVzTm9kZU1pblNpemUsZS5zZXJpZXNNYXAsZS51c2VHZW5lcmFsaXplZFNlcmllc1BhdHRlcm5zKX0pLG4sQkF0LkhJRVJBUkNIWV9ERVRFQ1RfU0VSSUVTKSkpLnRoZW4oKCgpPT5tJHQoIkFkZGluZyBlZGdlcyIsNDAsKCgpPT57IShmdW5jdGlvbiBlKHQsbixpKXtsZXQgcj10LmdldE5vZGVNYXAoKSxvPVtdLGE9W10scz0odCxlKT0+e2xldCBuPTA7Zm9yKDt0OyllW24rK109dC5uYW1lLHQ9dC5wYXJlbnROb2RlO3JldHVybiBuLTF9O0NlLmV4cG9ydHMuZWFjaChuLmVkZ2VzLChlPT57bGV0IGk9cyhuLm5vZGVzW2Uudl0sbyksbD1zKG4ubm9kZXNbZS53XSxhKTtpZigtMT09PWl8fC0xPT09bClyZXR1cm47Zm9yKDtvW2ldPT09YVtsXTspaWYoaS0tLGwtLSxpPDB8fGw8MCl0aHJvdyBFcnJvcigiTm8gZGlmZmVyZW5jZSBmb3VuZCBiZXR3ZWVuIGFuY2VzdG9yIHBhdGhzLiIpO2xldCBjPXJbb1tpKzFdXSx1PW9baV0saD1hW2xdLGQ9Yy5tZXRhZ3JhcGguZWRnZSh1LGgpO2R8fChkPUIkdCh1LGgpLGMubWV0YWdyYXBoLnNldEVkZ2UodSxoLGQpKSxjLmhhc05vbkNvbnRyb2xFZGdlc3x8ZS5pc0NvbnRyb2xEZXBlbmRlbmN5fHwoYy5oYXNOb25Db250cm9sRWRnZXM9ITApLGQuYWRkQmFzZUVkZ2UoZSx0KX0pKX0pKGksdCl9KSxuLEJBdC5ISUVSQVJDSFlfQUREX0VER0VTKSkpLnRoZW4oKCgpPT5pKSl9ZnVuY3Rpb24gbEt0KHQsZSxuLGkscixvKXtsZXQgYT10Lm1ldGFncmFwaDtDZS5leHBvcnRzLmVhY2goYS5ub2RlcygpLCh0PT57bGV0IHM9YS5ub2RlKHQpO3MudHlwZT09PUEkdC5NRVRBJiZsS3QocyxlLG4saSxyLG8pfSkpO2xldCBzPShmdW5jdGlvbiBsKHQpe2xldCBlPXt9O3JldHVybiBDZS5leHBvcnRzLnJlZHVjZSh0Lm5vZGVzKCksKChlLG4pPT57bGV0IGk9dC5ub2RlKG4pO2lmKGkudHlwZT09PUEkdC5NRVRBKXJldHVybiBlO2xldCByPWkub3A7cmV0dXJuIHImJihlW3JdPWVbcl18fFtdLGVbcl0ucHVzaChpLm5hbWUpKSxlfSksZSl9KShhKTtsZXQgYz0obz91S3Q6Y0t0KShzLGEsZS5ncmFwaE9wdGlvbnMpO0NlLmV4cG9ydHMuZWFjaChjLChmdW5jdGlvbih0LHIpe2xldCBvPXQubWV0YWdyYXBoLm5vZGVzKCk7Q2UuZXhwb3J0cy5lYWNoKG8sKHQ9PntsZXQgZT1hLm5vZGUodCk7ZS5vd25pbmdTZXJpZXN8fChlLm93bmluZ1Nlcmllcz1yKX0pKSxvLmxlbmd0aDxpJiZlLmdldFNlcmllc0dyb3VwVHlwZSh0Lm5hbWUpPT09TCR0LkdST1VQJiZlLnNldFNlcmllc0dyb3VwVHlwZSh0Lm5hbWUsTCR0LlVOR1JPVVApLGUuZ2V0U2VyaWVzR3JvdXBUeXBlKHQubmFtZSkhPT1MJHQuVU5HUk9VUCYmKGUuc2V0Tm9kZShyLHQpLGEuc2V0Tm9kZShyLHQpLENlLmV4cG9ydHMuZWFjaChvLChlPT57bGV0IGk9YS5ub2RlKGUpO3QubWV0YWdyYXBoLnNldE5vZGUoZSxpKSx0LnBhcmVudE5vZGU9aS5wYXJlbnROb2RlLHQuY2FyZGluYWxpdHkrKyxudWxsIT1pLmRldmljZSYmKHQuZGV2aWNlSGlzdG9ncmFtW2kuZGV2aWNlXT0odC5kZXZpY2VIaXN0b2dyYW1baS5kZXZpY2VdfHwwKSsxKSxudWxsIT1pLnhsYUNsdXN0ZXImJih0LnhsYUNsdXN0ZXJIaXN0b2dyYW1baS54bGFDbHVzdGVyXT0odC54bGFDbHVzdGVySGlzdG9ncmFtW2kueGxhQ2x1c3Rlcl18fDApKzEpLGkuY29tcGF0aWJsZT90LmNvbXBhdGliaWxpdHlIaXN0b2dyYW0uY29tcGF0aWJsZT0odC5jb21wYXRpYmlsaXR5SGlzdG9ncmFtLmNvbXBhdGlibGV8fDApKzE6dC5jb21wYXRpYmlsaXR5SGlzdG9ncmFtLmluY29tcGF0aWJsZT0odC5jb21wYXRpYmlsaXR5SGlzdG9ncmFtLmluY29tcGF0aWJsZXx8MCkrMSxDZS5leHBvcnRzLmVhY2goaS5pbkVtYmVkZGluZ3MsKGU9PntlLmNvbXBhdGlibGU/dC5jb21wYXRpYmlsaXR5SGlzdG9ncmFtLmNvbXBhdGlibGU9KHQuY29tcGF0aWJpbGl0eUhpc3RvZ3JhbS5jb21wYXRpYmxlfHwwKSsxOnQuY29tcGF0aWJpbGl0eUhpc3RvZ3JhbS5pbmNvbXBhdGlibGU9KHQuY29tcGF0aWJpbGl0eUhpc3RvZ3JhbS5pbmNvbXBhdGlibGV8fDApKzF9KSksQ2UuZXhwb3J0cy5lYWNoKGkub3V0RW1iZWRkaW5ncywoZT0+e2UuY29tcGF0aWJsZT90LmNvbXBhdGliaWxpdHlIaXN0b2dyYW0uY29tcGF0aWJsZT0odC5jb21wYXRpYmlsaXR5SGlzdG9ncmFtLmNvbXBhdGlibGV8fDApKzE6dC5jb21wYXRpYmlsaXR5SGlzdG9ncmFtLmluY29tcGF0aWJsZT0odC5jb21wYXRpYmlsaXR5SGlzdG9ncmFtLmluY29tcGF0aWJsZXx8MCkrMX0pKSxpLnBhcmVudE5vZGU9dCxuW2VdPXIsYS5yZW1vdmVOb2RlKGUpfSkpKX0pKX1mdW5jdGlvbiBjS3QodCxlLG4pe2xldCBpPXt9O3JldHVybiBDZS5leHBvcnRzLmVhY2godCwoZnVuY3Rpb24odCxyKXtpZih0Lmxlbmd0aDw9MSlyZXR1cm47bGV0IG89e307Q2UuZXhwb3J0cy5lYWNoKHQsKGZ1bmN0aW9uKHQpe2NvbnN0IGU9IioiPT09dC5jaGFyQXQodC5sZW5ndGgtMSksaT10LnNwbGl0KCIvIikscj1pW2kubGVuZ3RoLTFdLGE9aS5zbGljZSgwLGkubGVuZ3RoLTEpLmpvaW4oIi8iKSxzPXIubWF0Y2goL14oXEQqKShcZCspJC8pO2xldCBsLGMsdT0iIjtzPyhsPXNbMV0sYz1zWzJdKToobD1lP3Iuc3Vic3RyKDAsci5sZW5ndGgtMSk6cixjPTAsdT1lPyIqIjoiIik7Y29uc3QgaD1WJHQobCx1LGEpO29baF09b1toXXx8W107Y29uc3QgZD1GJHQobCx1LGEsK2MsdCxuKTtvW2hdLnB1c2goZCl9KSksQ2UuZXhwb3J0cy5lYWNoKG8sKGZ1bmN0aW9uKHQsbyl7aWYodC5sZW5ndGg8MilyZXR1cm47dC5zb3J0KChmdW5jdGlvbih0LGUpe3JldHVybit0LmNsdXN0ZXJJZC0rZS5jbHVzdGVySWR9KSk7bGV0IGE9W3RbMF1dO2ZvcihsZXQgbz0xO288dC5sZW5ndGg7bysrKXtsZXQgcz10W29dO3MuY2x1c3RlcklkIT09YVthLmxlbmd0aC0xXS5jbHVzdGVySWQrMT8oaEt0KGEsaSwrcixlLG4pLGE9W3NdKTphLnB1c2gocyl9aEt0KGEsaSwrcixlLG4pfSkpfSkpLGl9ZnVuY3Rpb24gdUt0KHQsZSxuKXtsZXQgaT17fTtyZXR1cm4gQ2UuZXhwb3J0cy5lYWNoKHQsKGZ1bmN0aW9uKHQscil7aWYodC5sZW5ndGg8PTEpcmV0dXJuO2xldCBvPXt9LGE9e307Q2UuZXhwb3J0cy5lYWNoKHQsKGZ1bmN0aW9uKHQpe2xldCBlPSIqIj09PXQuY2hhckF0KHQubGVuZ3RoLTEpLGk9dC5zcGxpdCgiLyIpLHI9aVtpLmxlbmd0aC0xXSxzPWkuc2xpY2UoMCxpLmxlbmd0aC0xKS5qb2luKCIvIik7Y29uc3QgbD0vKFxkKykvZztsZXQgYyx1LGgsZCxwLGY9MDtmb3IoO2M9bC5leGVjKHIpOykrK2YsdT1yLnNsaWNlKDAsYy5pbmRleCksaD1jWzBdLGQ9ci5zbGljZShjLmluZGV4K2NbMF0ubGVuZ3RoKSxwPVYkdCh1LGQscyksb1twXT1vW3BdLG9bcF18fChvW3BdPUYkdCh1LGQscywraCx0LG4pKSxvW3BdLmlkcy5wdXNoKGgpLGFbdF09YVt0XXx8W10sYVt0XS5wdXNoKFtwLGhdKTtmPDEmJih1PWU/ci5zdWJzdHIoMCxyLmxlbmd0aC0xKTpyLGg9MCxkPWU/IioiOiIiLHA9ViR0KHUsZCxzKSxvW3BdPW9bcF0sb1twXXx8KG9bcF09RiR0KHUsZCxzLCtoLHQsbikpLG9bcF0uaWRzLnB1c2goaCksYVt0XT1hW3RdfHxbXSxhW3RdLnB1c2goW3AsaF0pKX0pKTt2YXIgcz17fTtDZS5leHBvcnRzLmVhY2goYSwoZnVuY3Rpb24odCxlKXt0LnNvcnQoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIG9bZVswXV0uaWRzLmxlbmd0aC1vW3RbMF1dLmlkcy5sZW5ndGh9KSk7dmFyIGk9dFswXVswXSxyPXRbMF1bMV07c1tpXT1zW2ldfHxbXTtjb25zdCBhPWUuc3BsaXQoIi8iKSxsPWEuc2xpY2UoMCxhLmxlbmd0aC0xKS5qb2luKCIvIik7dmFyIGM9RiR0KG9baV0ucHJlZml4LG9baV0uc3VmZml4LGwsK3IsZSxuKTtzW2ldLnB1c2goYyl9KSksQ2UuZXhwb3J0cy5lYWNoKHMsKGZ1bmN0aW9uKHQsbyl7aWYodC5sZW5ndGg8MilyZXR1cm47dC5zb3J0KChmdW5jdGlvbih0LGUpe3JldHVybit0LmNsdXN0ZXJJZC0rZS5jbHVzdGVySWR9KSk7bGV0IGE9W3RbMF1dO2ZvcihsZXQgbz0xO288dC5sZW5ndGg7bysrKXtsZXQgcz10W29dO3MuY2x1c3RlcklkIT09YVthLmxlbmd0aC0xXS5jbHVzdGVySWQrMT8oaEt0KGEsaSwrcixlLG4pLGE9W3NdKTphLnB1c2gocyl9aEt0KGEsaSwrcixlLG4pfSkpfSkpLGl9ZnVuY3Rpb24gaEt0KHQsZSxuLGkscil7aWYodC5sZW5ndGg+MSl7bGV0IG89ViR0KHRbMF0ucHJlZml4LHRbMF0uc3VmZml4LHRbMF0ucGFyZW50LHRbMF0uY2x1c3RlcklkLHRbdC5sZW5ndGgtMV0uY2x1c3RlcklkKSxhPUYkdCh0WzBdLnByZWZpeCx0WzBdLnN1ZmZpeCx0WzBdLnBhcmVudCxuLG8scik7Q2UuZXhwb3J0cy5lYWNoKHQsKGZ1bmN0aW9uKHQpe2EuaWRzLnB1c2godC5jbHVzdGVySWQpLGEubWV0YWdyYXBoLnNldE5vZGUodC5uYW1lLGkubm9kZSh0Lm5hbWUpKX0pKSxlW29dPWF9fWxldCBkS3Q9IiNmZmZmZmYiLHBLdD0iI2IyYjJiMiIsZkt0PSIjMGY5ZDU4IixtS3Q9IiNkYjQ0MzciLGdLdD17REVGQVVMVF9GSUxMOiIjZDlkOWQ5IixERUZBVUxUX1NUUk9LRToiI2E2YTZhNiIsU0FUVVJBVElPTjouNixMSUdIVE5FU1M6Ljg1LEVYUEFOREVEX0NPTE9SOiIjZjBmMGYwIixIVUVTOlsyMjAsMTAwLDE4MCw0MCwyMCwzNDAsMjYwLDMwMCwxNDAsNjBdLFNUUlVDVFVSRV9QQUxFVFRFKHQsZSl7bGV0IG49Z0t0LkhVRVMsaT1uW3Qlbi5sZW5ndGhdLHI9TWF0aC5zaW4oaSpNYXRoLlBJLzM2MCk7cmV0dXJuIGNkKGksLjAxKihlPzMwOjkwLTYwKnIpLC4wMSooZT85NTo4MCkpLnRvU3RyaW5nKCl9LERFVklDRV9QQUxFVFRFOnQ9PmdLdC5TVFJVQ1RVUkVfUEFMRVRURSh0KSxYTEFfQ0xVU1RFUl9QQUxFVFRFOnQ9PmdLdC5TVFJVQ1RVUkVfUEFMRVRURSh0KSxVTktOT1dOOiIjZWVlIixHUkFESUVOVF9PVVRMSU5FOiIjODg4In0sX0t0PSJ3aGl0ZSIseUt0PSIjYjJiMmIyIjtjb25zdCB2S3Q9MTUsYkt0PTUseEt0PTQsd0t0PTQsU0t0PVsiTm9PcCJdLE1LdD1bXSxFS3Q9WyIjZmZmNWYwIiwiI2ZiNmE0YSJdLFRLdD01LENLdD1uZXcgUmVnRXhwKCJeKD86X19mdW5jdGlvbl9saWJyYXJ5X18pPyhcXHcrKV9bYS16MC05XXs4fSg/Ol9cXGQrKT8kIik7Y2xhc3MgQUt0e2NvbnN0cnVjdG9yKHQsZSxuKXt0aGlzLmhpZXJhcmNoeT10LHRoaXMuZGlzcGxheWluZ1N0YXRzPWUsdGhpcy5hdXRvRXh0cmFjdE5vZGVzPW4sdGhpcy5pbmRleD17fSx0aGlzLnJlbmRlcmVkT3BOYW1lcz1bXSx0aGlzLmNvbXB1dGVTY2FsZXMoKSx0aGlzLmhhc1N1YmhpZXJhcmNoeT17fSx0aGlzLnJvb3Q9bmV3IHpLdCh0LnJvb3QsdC5ncmFwaE9wdGlvbnMpLHRoaXMuaW5kZXhbdC5yb290Lm5hbWVdPXRoaXMucm9vdCx0aGlzLnJlbmRlcmVkT3BOYW1lcy5wdXNoKHQucm9vdC5uYW1lKSx0aGlzLmJ1aWxkU3ViaGllcmFyY2h5KHQucm9vdC5uYW1lKSx0aGlzLnJvb3QuZXhwYW5kZWQ9ITAsdGhpcy50cmFjZUlucHV0cz0hMX1jb21wdXRlU2NhbGVzKCl7dGhpcy5kZXZpY2VDb2xvck1hcD1ZTSgpLmRvbWFpbih0aGlzLmhpZXJhcmNoeS5kZXZpY2VzKS5yYW5nZShDZS5leHBvcnRzLm1hcChLbCh0aGlzLmhpZXJhcmNoeS5kZXZpY2VzLmxlbmd0aCksZ0t0LkRFVklDRV9QQUxFVFRFKSksdGhpcy54bGFDbHVzdGVyQ29sb3JNYXA9WU0oKS5kb21haW4odGhpcy5oaWVyYXJjaHkueGxhQ2x1c3RlcnMpLnJhbmdlKENlLmV4cG9ydHMubWFwKEtsKHRoaXMuaGllcmFyY2h5LnhsYUNsdXN0ZXJzLmxlbmd0aCksZ0t0LlhMQV9DTFVTVEVSX1BBTEVUVEUpKTtsZXQgdD10aGlzLmhpZXJhcmNoeS5yb290Lm1ldGFncmFwaCxlPW9jKHQubm9kZXMoKSwoKGUsbik9PntsZXQgaT10Lm5vZGUoZSk7aWYobnVsbCE9aS5zdGF0cylyZXR1cm4gaS5zdGF0cy50b3RhbEJ5dGVzfSkpO3RoaXMubWVtb3J5VXNhZ2VTY2FsZT1jRSgpLmRvbWFpbihbMCxlXSkucmFuZ2UoRUt0KTtsZXQgbj1vYyh0Lm5vZGVzKCksKChlLG4pPT57bGV0IGk9dC5ub2RlKGUpO2lmKG51bGwhPWkuc3RhdHMpcmV0dXJuIGkuc3RhdHMuZ2V0VG90YWxNaWNyb3MoKX0pKTt0aGlzLmNvbXB1dGVUaW1lU2NhbGU9Y0UoKS5kb21haW4oWzAsbl0pLnJhbmdlKEVLdCksdGhpcy5lZGdlV2lkdGhTaXplZEJhc2VkU2NhbGU9dGhpcy5oaWVyYXJjaHkuaGFzU2hhcGVJbmZvP3UkdDpjRSgpLmRvbWFpbihbMSx0aGlzLmhpZXJhcmNoeS5tYXhNZXRhRWRnZVNpemVdKS5yYW5nZShbYyR0LDEyXSl9Z2V0UmVuZGVyTm9kZUJ5TmFtZSh0KXtyZXR1cm4gdGhpcy5pbmRleFt0XX1nZXROb2RlQnlOYW1lKHQpe3JldHVybiB0aGlzLmhpZXJhcmNoeS5ub2RlKHQpfWNvbG9ySGlzdG9ncmFtKHQsZSl7aWYoT2JqZWN0LmtleXModCkubGVuZ3RoPjApe2NvbnN0IG49Q2UuZXhwb3J0cy5zdW0oT2JqZWN0LmtleXModCkubWFwKChlPT50W2VdKSkpO3JldHVybiBPYmplY3Qua2V5cyh0KS5tYXAoKGk9Pih7Y29sb3I6ZShpKSxwcm9wb3J0aW9uOnRbaV0vbn0pKSl9cmV0dXJuIG51bGx9Z2V0T3JDcmVhdGVSZW5kZXJOb2RlQnlOYW1lKHQpe2lmKCF0KXJldHVybiBudWxsO2lmKHQgaW4gdGhpcy5pbmRleClyZXR1cm4gdGhpcy5pbmRleFt0XTtsZXQgZT10aGlzLmhpZXJhcmNoeS5ub2RlKHQpO2lmKCFlKXJldHVybiBudWxsO2xldCBuPWUuaXNHcm91cE5vZGU/bmV3IHpLdChlLHRoaXMuaGllcmFyY2h5LmdyYXBoT3B0aW9ucyk6bmV3IE5LdChlKTt0aGlzLmluZGV4W3RdPW4sdGhpcy5yZW5kZXJlZE9wTmFtZXMucHVzaCh0KSxlLnN0YXRzJiYobi5tZW1vcnlDb2xvcj10aGlzLm1lbW9yeVVzYWdlU2NhbGUoZS5zdGF0cy50b3RhbEJ5dGVzKSxuLmNvbXB1dGVUaW1lQ29sb3I9dGhpcy5jb21wdXRlVGltZVNjYWxlKGUuc3RhdHMuZ2V0VG90YWxNaWNyb3MoKSkpLG4uaXNGYWRlZE91dD10aGlzLmRpc3BsYXlpbmdTdGF0cyYmIWIkdChlLnN0YXRzKTt2YXIgaT1udWxsLHI9bnVsbCxvPW51bGw7aWYoZS5pc0dyb3VwTm9kZSl7aT1lLmRldmljZUhpc3RvZ3JhbSxyPWUueGxhQ2x1c3Rlckhpc3RvZ3JhbTtsZXQgdD1lLmNvbXBhdGliaWxpdHlIaXN0b2dyYW0uY29tcGF0aWJsZSxuPWUuY29tcGF0aWJpbGl0eUhpc3RvZ3JhbS5pbmNvbXBhdGlibGU7MD09dCYmMD09bnx8KG89dC8odCtuKSl9ZWxzZXtsZXQgdD1uLm5vZGUuZGV2aWNlO3QmJihpPXtbdF06MX0pO2xldCBlPW4ubm9kZS54bGFDbHVzdGVyO2UmJihyPXtbZV06MX0pLG4ubm9kZS50eXBlPT09QSR0Lk9QJiYobz1uLm5vZGUuY29tcGF0aWJsZT8xOjApfXJldHVybiBpJiYobi5kZXZpY2VDb2xvcnM9dGhpcy5jb2xvckhpc3RvZ3JhbShpLHRoaXMuZGV2aWNlQ29sb3JNYXApKSxyJiYobi54bGFDbHVzdGVyQ29sb3JzPXRoaXMuY29sb3JIaXN0b2dyYW0ocix0aGlzLnhsYUNsdXN0ZXJDb2xvck1hcCkpLG51bGwhPW8mJihuLmNvbXBhdGliaWxpdHlDb2xvcnM9W3tjb2xvcjpmS3QscHJvcG9ydGlvbjpvfSx7Y29sb3I6bUt0LHByb3BvcnRpb246MS1vfV0pLHRoaXMuaW5kZXhbdF19Z2V0TmVhcmVzdFZpc2libGVBbmNlc3Rvcih0KXtsZXQgZT1aJHQodCksbj0wLGk9bnVsbCxyPXQ7Zm9yKDtuPGUubGVuZ3RoJiYocj1lW25dLGk9dGhpcy5nZXRSZW5kZXJOb2RlQnlOYW1lKHIpLGkuZXhwYW5kZWQpO24rKyk7aWYobj09ZS5sZW5ndGgtMil7bGV0IHQ9ZVtuKzFdO2lmKGkuaW5Bbm5vdGF0aW9ucy5ub2RlTmFtZXNbdF0pcmV0dXJuIHQ7aWYoaS5vdXRBbm5vdGF0aW9ucy5ub2RlTmFtZXNbdF0pcmV0dXJuIHR9cmV0dXJuIHJ9c2V0RGVwdGgodCl7REt0KHRoaXMucm9vdCwrdCl9aXNOb2RlQXV4aWxpYXJ5KHQpe2xldCBlPXRoaXMuZ2V0UmVuZGVyTm9kZUJ5TmFtZSh0Lm5vZGUucGFyZW50Tm9kZS5uYW1lKSxuPUNlLmV4cG9ydHMuZmluZChlLmlzb2xhdGVkSW5FeHRyYWN0LChlPT5lLm5vZGUubmFtZT09PXQubm9kZS5uYW1lKSk7cmV0dXJuISFufHwobj1DZS5leHBvcnRzLmZpbmQoZS5pc29sYXRlZE91dEV4dHJhY3QsKGU9PmUubm9kZS5uYW1lPT09dC5ub2RlLm5hbWUpKSwhIW4pfWdldE5hbWVzT2ZSZW5kZXJlZE9wcygpe3JldHVybiB0aGlzLnJlbmRlcmVkT3BOYW1lc31jbG9uZUFuZEFkZEZ1bmN0aW9uT3BOb2RlKHQsZSxuLGkpe2NvbnN0IHI9bi5uYW1lLnJlcGxhY2UoZSxpKTtsZXQgbz10Lm1ldGFncmFwaC5ub2RlKHIpO2lmKG8pcmV0dXJuIG87bz1uZXcgTyR0KHtuYW1lOnIsaW5wdXQ6W10sZGV2aWNlOm4uZGV2aWNlLG9wOm4ub3AsYXR0cjpDZS5leHBvcnRzLmNsb25lRGVlcChuLmF0dHIpfSksby5jYXJkaW5hbGl0eT1uLmNhcmRpbmFsaXR5LG8uaW5jbHVkZT1uLmluY2x1ZGUsby5vdXRwdXRTaGFwZXM9Q2UuZXhwb3J0cy5jbG9uZURlZXAobi5vdXRwdXRTaGFwZXMpLG8ueGxhQ2x1c3Rlcj1uLnhsYUNsdXN0ZXIsby5mdW5jdGlvbklucHV0SW5kZXg9bi5mdW5jdGlvbklucHV0SW5kZXgsby5mdW5jdGlvbk91dHB1dEluZGV4PW4uZnVuY3Rpb25PdXRwdXRJbmRleCxvLmlucHV0cz1uLmlucHV0cy5tYXAoKHQ9Pntjb25zdCBuPUNlLmV4cG9ydHMuY2xvbmUodCk7cmV0dXJuIG4ubmFtZT10Lm5hbWUucmVwbGFjZShlLGkpLG59KSksby5wYXJlbnROb2RlPXQsdC5tZXRhZ3JhcGguc2V0Tm9kZShvLm5hbWUsbyksdGhpcy5oaWVyYXJjaHkuc2V0Tm9kZShvLm5hbWUsbyk7Y29uc3QgYT1uPT50aGlzLmNsb25lQW5kQWRkRnVuY3Rpb25PcE5vZGUodCxlLG4saSk7cmV0dXJuIG8uaW5FbWJlZGRpbmdzPW4uaW5FbWJlZGRpbmdzLm1hcChhKSxvLm91dEVtYmVkZGluZ3M9bi5vdXRFbWJlZGRpbmdzLm1hcChhKSxvfWNsb25lRnVuY3Rpb25MaWJyYXJ5TWV0YW5vZGUodCxlLG4saSxyKXtjb25zdCBvPXt9LGE9dGhpcy5jbG9uZUZ1bmN0aW9uTGlicmFyeU1ldGFub2RlSGVscGVyKHQsZSxuLGkscixvKTtyZXR1cm4gQ2UuZXhwb3J0cy5pc0VtcHR5KG8pfHx0aGlzLnBhdGNoRWRnZXNGcm9tRnVuY3Rpb25PdXRwdXRzKGUsbyksYX1jbG9uZUZ1bmN0aW9uTGlicmFyeU1ldGFub2RlSGVscGVyKHQsZSxuLGkscixvKXtjb25zdCBhPXokdChuLm5hbWUucmVwbGFjZShpLHIpKTtyZXR1cm4gYS5kZXB0aD1uLmRlcHRoLGEuY2FyZGluYWxpdHk9bi5jYXJkaW5hbGl0eSxhLnRlbXBsYXRlSWQ9bi50ZW1wbGF0ZUlkLGEub3BIaXN0b2dyYW09Q2UuZXhwb3J0cy5jbG9uZShuLm9wSGlzdG9ncmFtKSxhLmRldmljZUhpc3RvZ3JhbT1DZS5leHBvcnRzLmNsb25lKG4uZGV2aWNlSGlzdG9ncmFtKSxhLnhsYUNsdXN0ZXJIaXN0b2dyYW09Q2UuZXhwb3J0cy5jbG9uZShuLnhsYUNsdXN0ZXJIaXN0b2dyYW0pLGEuaGFzTm9uQ29udHJvbEVkZ2VzPW4uaGFzTm9uQ29udHJvbEVkZ2VzLGEuaW5jbHVkZT1uLmluY2x1ZGUsYS5ub2RlQXR0cmlidXRlcz1DZS5leHBvcnRzLmNsb25lKG4ubm9kZUF0dHJpYnV0ZXMpLGEuYXNzb2NpYXRlZEZ1bmN0aW9uPW4uYXNzb2NpYXRlZEZ1bmN0aW9uLENlLmV4cG9ydHMuZWFjaChuLm1ldGFncmFwaC5ub2RlcygpLChzPT57Y29uc3QgbD1uLm1ldGFncmFwaC5ub2RlKHMpO3N3aXRjaChsLnR5cGUpe2Nhc2UgQSR0Lk1FVEE6Y29uc3Qgbj10aGlzLmNsb25lRnVuY3Rpb25MaWJyYXJ5TWV0YW5vZGVIZWxwZXIodCxlLGwsaSxyLG8pO24ucGFyZW50Tm9kZT1hLGEubWV0YWdyYXBoLnNldE5vZGUobi5uYW1lLG4pLHRoaXMuaGllcmFyY2h5LnNldE5vZGUobi5uYW1lLG4pO2JyZWFrO2Nhc2UgQSR0Lk9QOmNvbnN0IHM9dGhpcy5jbG9uZUFuZEFkZEZ1bmN0aW9uT3BOb2RlKGEsaSxsLHIpO0NlLmV4cG9ydHMuaXNOdW1iZXIocy5mdW5jdGlvbklucHV0SW5kZXgpJiZ0aGlzLnBhdGNoRWRnZXNJbnRvRnVuY3Rpb25JbnB1dHMoZSxzKSxDZS5leHBvcnRzLmlzTnVtYmVyKHMuZnVuY3Rpb25PdXRwdXRJbmRleCkmJihvW3MuZnVuY3Rpb25PdXRwdXRJbmRleF09cyk7YnJlYWs7ZGVmYXVsdDpjb25zb2xlLndhcm4obC5uYW1lKyIgaXMgb2RkbHkgbmVpdGhlciBhIG1ldGFub2RlIG5vciBhbiBvcG5vZGUuIil9fSkpLHRoaXMuY2xvbmVMaWJyYXJ5TWV0YW5vZGVFZGdlcyhuLGEsaSxyKSxhfWNsb25lTGlicmFyeU1ldGFub2RlRWRnZXModCxlLG4saSl7Q2UuZXhwb3J0cy5lYWNoKHQubWV0YWdyYXBoLmVkZ2VzKCksKHI9Pntjb25zdCBvPXQubWV0YWdyYXBoLmVkZ2UociksYT1vLnYucmVwbGFjZShuLGkpLHM9by53LnJlcGxhY2UobixpKSxsPW5ldyBIJHQoYSxzKTtsLmluYm91bmQ9by5pbmJvdW5kLGwubnVtUmVndWxhckVkZ2VzPW8ubnVtUmVndWxhckVkZ2VzLGwubnVtQ29udHJvbEVkZ2VzPW8ubnVtQ29udHJvbEVkZ2VzLGwubnVtUmVmRWRnZXM9by5udW1SZWZFZGdlcyxsLnRvdGFsU2l6ZT1vLnRvdGFsU2l6ZSxvLmJhc2VFZGdlTGlzdCYmKGwuYmFzZUVkZ2VMaXN0PW8uYmFzZUVkZ2VMaXN0Lm1hcCgodD0+e2NvbnN0IGU9Q2UuZXhwb3J0cy5jbG9uZSh0KTtyZXR1cm4gZS52PXQudi5yZXBsYWNlKG4saSksZS53PXQudy5yZXBsYWNlKG4saSksZX0pKSksZS5tZXRhZ3JhcGgubm9kZShzKT9lLm1ldGFncmFwaC5zZXRFZGdlKGEscyxsKTplLm1ldGFncmFwaC5zZXRFZGdlKHMsYSxsKX0pKX1wYXRjaEVkZ2VzSW50b0Z1bmN0aW9uSW5wdXRzKHQsZSl7bGV0IG49TWF0aC5taW4oZS5mdW5jdGlvbklucHV0SW5kZXgsdC5pbnB1dHMubGVuZ3RoLTEpLGk9Q2UuZXhwb3J0cy5jbG9uZSh0LmlucHV0c1tuXSk7Zm9yKDtpLmlzQ29udHJvbERlcGVuZGVuY3k7KW4rKyxpPXQuaW5wdXRzW25dO2UuaW5wdXRzLnB1c2goaSk7Y29uc3Qgcj10aGlzLmhpZXJhcmNoeS5nZXRQcmVkZWNlc3NvcnModC5uYW1lKTtsZXQgbyxhPTA7Q2UuZXhwb3J0cy5lYWNoKHIucmVndWxhciwodD0+e2lmKGErPXQubnVtUmVndWxhckVkZ2VzLGE+bilyZXR1cm4gbz10LCExfSkpLENlLmV4cG9ydHMuZWFjaChvLmJhc2VFZGdlTGlzdCwobj0+e24udz09PXQubmFtZSYmKG4udz1lLm5hbWUpLG4udj09PXQubmFtZSYmKG4udj1lLm5hbWUpfSkpfXBhdGNoRWRnZXNGcm9tRnVuY3Rpb25PdXRwdXRzKHQsZSl7Y29uc3Qgbj10aGlzLmhpZXJhcmNoeS5nZXRTdWNjZXNzb3JzKHQubmFtZSk7Q2UuZXhwb3J0cy5lYWNoKG4ucmVndWxhciwobj0+e0NlLmV4cG9ydHMuZWFjaChuLmJhc2VFZGdlTGlzdCwobj0+e2NvbnN0IGk9dGhpcy5oaWVyYXJjaHkubm9kZShuLncpO0NlLmV4cG9ydHMuZWFjaChpLmlucHV0cywoaT0+e2lmKGkubmFtZT09PXQubmFtZSl7aS5uYW1lPWVbaS5vdXRwdXRUZW5zb3JLZXldLm5hbWUsaS5vdXRwdXRUZW5zb3JLZXk9bi5vdXRwdXRUZW5zb3JLZXl9fSkpfSkpLENlLmV4cG9ydHMuZWFjaChuLmJhc2VFZGdlTGlzdCwodD0+e3Qudj1lW3Qub3V0cHV0VGVuc29yS2V5XS5uYW1lLHQub3V0cHV0VGVuc29yS2V5PSIwIn0pKX0pKX1idWlsZFN1YmhpZXJhcmNoeSh0KXtpZih0IGluIHRoaXMuaGFzU3ViaGllcmFyY2h5KXJldHVybjt0aGlzLmhhc1N1YmhpZXJhcmNoeVt0XT0hMDtsZXQgZT10aGlzLmluZGV4W3RdO2lmKGUubm9kZS50eXBlIT09QSR0Lk1FVEEmJmUubm9kZS50eXBlIT09QSR0LlNFUklFUylyZXR1cm47bGV0IG49ZSxpPW4ubm9kZS5tZXRhZ3JhcGgscj1uLmNvcmVHcmFwaDtjb25zdCBvPVtdLGE9W107Q2UuZXhwb3J0cy5pc0VtcHR5KHRoaXMuaGllcmFyY2h5LmxpYnJhcnlGdW5jdGlvbnMpfHwoQ2UuZXhwb3J0cy5lYWNoKGkubm9kZXMoKSwodD0+e2NvbnN0IGU9aS5ub2RlKHQpLG49dGhpcy5oaWVyYXJjaHkubGlicmFyeUZ1bmN0aW9uc1tlLm9wXTtpZighbilyZXR1cm47aWYoMD09PXQuaW5kZXhPZihUJHQpKXJldHVybjtjb25zdCByPXRoaXMuY2xvbmVGdW5jdGlvbkxpYnJhcnlNZXRhbm9kZShpLGUsbi5ub2RlLG4ubm9kZS5uYW1lLGUubmFtZSk7by5wdXNoKGUpLGEucHVzaChyKX0pKSxDZS5leHBvcnRzLmVhY2goYSwoKHQsZSk9Pntjb25zdCBuPW9bZV07dC5wYXJlbnROb2RlPW4ucGFyZW50Tm9kZSxpLnNldE5vZGUobi5uYW1lLHQpLHRoaXMuaGllcmFyY2h5LnNldE5vZGUobi5uYW1lLHQpfSkpKSxDZS5leHBvcnRzLmVhY2goaS5ub2RlcygpLCh0PT57bGV0IGU9dGhpcy5nZXRPckNyZWF0ZVJlbmRlck5vZGVCeU5hbWUodCksbj1lLm5vZGU7ci5zZXROb2RlKHQsZSksbi5pc0dyb3VwTm9kZXx8KENlLmV4cG9ydHMuZWFjaChuLmluRW1iZWRkaW5ncywodD0+e2xldCBuPW5ldyBJS3QobnVsbCksaT1uZXcgTkt0KHQpO1JLdChlLHQsaSxuLExLdC5DT05TVEFOVCksdGhpcy5pbmRleFt0Lm5hbWVdPWl9KSksQ2UuZXhwb3J0cy5lYWNoKG4ub3V0RW1iZWRkaW5ncywodD0+e2xldCBuPW5ldyBJS3QobnVsbCksaT1uZXcgTkt0KHQpO09LdChlLHQsaSxuLExLdC5TVU1NQVJZKSx0aGlzLmluZGV4W3QubmFtZV09aX0pKSl9KSksQ2UuZXhwb3J0cy5lYWNoKGkuZWRnZXMoKSwodD0+e2xldCBlPWkuZWRnZSh0KSxuPW5ldyBJS3QoZSk7bi5pc0ZhZGVkT3V0PXRoaXMuaW5kZXhbdC52XS5pc0ZhZGVkT3V0fHx0aGlzLmluZGV4W3Qud10uaXNGYWRlZE91dCxyLnNldEVkZ2UodC52LHQudyxuKX0pKSxuLm5vZGUudHlwZT09PUEkdC5NRVRBJiYoZnVuY3Rpb24gcyh0LGUpeyhmdW5jdGlvbiBuKHQpe2xldCBlPXQuY29yZUdyYXBoO0NlLmV4cG9ydHMuZWFjaChlLm5vZGVzKCksKG49PntlLm5vZGUobikubm9kZS5pbmNsdWRlIT09ayR0LkVYQ0xVREV8fG4uc3RhcnRzV2l0aChUJHQpfHwodC5jb3JlR3JhcGgub3V0RWRnZXMobikubGVuZ3RoPnQuY29yZUdyYXBoLmluRWRnZXMobikubGVuZ3RoP0hLdCh0LG4pOkZLdCh0LG4pKX0pKX0pKHQpLFNLdC5sZW5ndGgmJihmdW5jdGlvbiBpKHQpe2xldCBlPXQuY29yZUdyYXBoO0NlLmV4cG9ydHMuZWFjaChlLm5vZGVzKCksKG49PntsZXQgaT1lLm5vZGUobik7aS5ub2RlLmluY2x1ZGU9PT1rJHQuVU5TUEVDSUZJRUQmJlZLdChpLm5vZGUsU0t0KSYmSEt0KHQsbil9KSl9KSh0KTtNS3QubGVuZ3RoJiYoZnVuY3Rpb24gcih0KXtsZXQgZT10LmNvcmVHcmFwaDtDZS5leHBvcnRzLmVhY2goZS5ub2RlcygpLChuPT57bGV0IGk9ZS5ub2RlKG4pO2kubm9kZS5pbmNsdWRlPT09ayR0LlVOU1BFQ0lGSUVEJiZWS3QoaS5ub2RlLE1LdCkmJkZLdCh0LG4pfSkpfSkodCk7ZSYmKGZ1bmN0aW9uIG8odCl7bGV0IGU9dC5jb3JlR3JhcGgsbj17fSxpPXt9LHI9MDtpZihDZS5leHBvcnRzLmVhY2goZS5ub2RlcygpLCh0PT57aWYoZS5ub2RlKHQpLm5vZGUuaW5jbHVkZSE9PWskdC5VTlNQRUNJRklFRClyZXR1cm47bGV0IG89Q2UuZXhwb3J0cy5yZWR1Y2UoZS5wcmVkZWNlc3NvcnModCksKChuLGkpPT5uKyhlLmVkZ2UoaSx0KS5tZXRhZWRnZS5udW1SZWd1bGFyRWRnZXM/MTowKSksMCk7MD09PW8mJmUucHJlZGVjZXNzb3JzKHQpLmxlbmd0aD4wJiYobz1lLnByZWRlY2Vzc29ycyh0KS5sZW5ndGgpO2xldCBhPUNlLmV4cG9ydHMucmVkdWNlKGUuc3VjY2Vzc29ycyh0KSwoKG4saSk9Pm4rKGUuZWRnZSh0LGkpLm1ldGFlZGdlLm51bVJlZ3VsYXJFZGdlcz8xOjApKSwwKTswPT09YSYmZS5zdWNjZXNzb3JzKHQpLmxlbmd0aD4wJiYoYT1lLnN1Y2Nlc3NvcnModCkubGVuZ3RoKSxuW3RdPW8saVt0XT1hLHIrK30pKSxyPHZLdClyZXR1cm47bGV0IG89Ykt0LTEsYT1NYXRoLnJvdW5kKC43NSpyKSxzPU1hdGgucm91bmQoLjI1KnIpLGw9T2JqZWN0LmtleXMobikuc29ydCgoKHQsZSk9Pm5bdF0tbltlXSkpLGM9bltsW2FdXSx1PWMrYy1uW2xbc11dO3U9TWF0aC5tYXgodSxvKTtmb3IobGV0IGU9ci0xO25bbFtlXV0+dTtlLS0pRkt0KHQsbFtlXSk7bGV0IGg9T2JqZWN0LmtleXMoaSkuc29ydCgoKHQsZSk9PmlbdF0taVtlXSkpLGQ9aVtoW2FdXSxwPWQrNCooZC1pW2hbc11dKTtwPU1hdGgubWF4KHAsbyk7Zm9yKGxldCBuPXItMTtpW2hbbl1dPnA7bi0tKXtsZXQgaT1lLm5vZGUoaFtuXSk7aSYmIWkuaXNJbkV4dHJhY3QmJkhLdCh0LGhbbl0pfX0pKHQpOyEoZnVuY3Rpb24gYSh0KXtsZXQgZT10LmNvcmVHcmFwaCxuPXt9O0NlLmV4cG9ydHMuZWFjaChlLmVkZ2VzKCksKHQ9PntlLmVkZ2UodCkubWV0YWVkZ2UubnVtUmVndWxhckVkZ2VzfHwoKG5bdC52XT1uW3Qudl18fFtdKS5wdXNoKHQpLChuW3Qud109blt0LnddfHxbXSkucHVzaCh0KSl9KSksQ2UuZXhwb3J0cy5lYWNoKG4sKCh0LG4pPT57dC5sZW5ndGg+eEt0JiZDZS5leHBvcnRzLmVhY2godCwodD0+Qkt0KGUsdC52LHQudykpKX0pKX0pKHQpO2xldCBzPXQuY29yZUdyYXBoO0NlLmV4cG9ydHMuZWFjaChzLm5vZGVzKCksKGU9PntsZXQgbj1zLm5vZGUoZSksaT1zLm5laWdoYm9ycyhlKS5sZW5ndGg7aWYobi5ub2RlLmluY2x1ZGU9PT1rJHQuVU5TUEVDSUZJRUQmJjA9PT1pKXtsZXQgaT1uLm91dEFubm90YXRpb25zLmxpc3QubGVuZ3RoPjAscj1uLmluQW5ub3RhdGlvbnMubGlzdC5sZW5ndGg+MDtuLmlzSW5FeHRyYWN0Pyh0Lmlzb2xhdGVkSW5FeHRyYWN0LnB1c2gobiksbi5ub2RlLmluY2x1ZGU9ayR0LkVYQ0xVREUscy5yZW1vdmVOb2RlKGUpKTpuLmlzT3V0RXh0cmFjdD8odC5pc29sYXRlZE91dEV4dHJhY3QucHVzaChuKSxuLm5vZGUuaW5jbHVkZT1rJHQuRVhDTFVERSxzLnJlbW92ZU5vZGUoZSkpOmkmJiFyPyhuLmlzSW5FeHRyYWN0PSEwLHQuaXNvbGF0ZWRJbkV4dHJhY3QucHVzaChuKSxuLm5vZGUuaW5jbHVkZT1rJHQuRVhDTFVERSxzLnJlbW92ZU5vZGUoZSkpOnImJiFpJiYobi5pc091dEV4dHJhY3Q9ITAsdC5pc29sYXRlZE91dEV4dHJhY3QucHVzaChuKSxuLm5vZGUuaW5jbHVkZT1rJHQuRVhDTFVERSxzLnJlbW92ZU5vZGUoZSkpfX0pKX0pKG4sdGhpcy5hdXRvRXh0cmFjdE5vZGVzKSxDZS5leHBvcnRzLmlzRW1wdHkodGhpcy5oaWVyYXJjaHkubGlicmFyeUZ1bmN0aW9ucyl8fHRoaXMuYnVpbGRTdWJoaWVyYXJjaGllc0Zvck5lZWRlZEZ1bmN0aW9ucyhpKSx0PT09RSR0JiZDZS5leHBvcnRzLmZvck93bih0aGlzLmhpZXJhcmNoeS5saWJyYXJ5RnVuY3Rpb25zLCgodCxlKT0+e2NvbnN0IGk9dC5ub2RlLG89dGhpcy5nZXRPckNyZWF0ZVJlbmRlck5vZGVCeU5hbWUoaS5uYW1lKTtuLmxpYnJhcnlGdW5jdGlvbnNFeHRyYWN0LnB1c2gobyksby5ub2RlLmluY2x1ZGU9ayR0LkVYQ0xVREUsci5yZW1vdmVOb2RlKGkubmFtZSl9KSk7bGV0IGw9bi5ub2RlLnBhcmVudE5vZGU7aWYoIWwpcmV0dXJuO2xldCBjPXRoaXMuaW5kZXhbbC5uYW1lXSx1PSh0LC4uLmUpPT5lLmNvbmNhdChbdD8iSU4iOiJPVVQiXSkuam9pbigifn4iKSxoPXRoaXMuaGllcmFyY2h5LmdldEJyaWRnZWdyYXBoKHQpLGQ9e2luOnt9LG91dDp7fSxjb250cm9sOnt9fTtDZS5leHBvcnRzLmVhY2goaC5lZGdlcygpLCh0PT57bGV0IGU9ISFpLm5vZGUodC53KSxuPWU/dC52OnQudztoLmVkZ2UodCkubnVtUmVndWxhckVkZ2VzP2U/ZC5vdXRbbl09KGQub3V0W25dfHwwKSsxOmQuaW5bbl09KGQuaW5bbl18fDApKzE6ZC5jb250cm9sW25dPShkLmNvbnRyb2xbbl18fDApKzF9KSk7bGV0IHA9dGhpcy5oaWVyYXJjaHkuZ2V0Tm9kZU1hcCgpO0NlLmV4cG9ydHMuZWFjaChoLmVkZ2VzKCksKG49PntsZXQgbz1oLmVkZ2UobiksYT0hIWkubm9kZShuLncpLFtzLGZdPWE/W24udyxuLnZdOltuLnYsbi53XSxtPXRoaXMuaW5kZXhbc10sZz10aGlzLmluZGV4W2ZdLF89Zz9nLm5vZGU6cFtmXSx5PSFvLm51bVJlZ3VsYXJFZGdlcyYmZC5jb250cm9sW2ZdPnhLdCxbLHZdPWE/W2UuaW5Bbm5vdGF0aW9ucyxtLmluQW5ub3RhdGlvbnNdOltlLm91dEFubm90YXRpb25zLG0ub3V0QW5ub3RhdGlvbnNdLGI9bnVsbCx4PSExO2lmKCEoKGE/ZC5vdXQ6ZC5pbilbZl0+d0t0KSYmIXkmJm0uaXNJbkNvcmUoKSl7bGV0IGU9ZT0+Yy5jb3JlR3JhcGguZWRnZShhP3t2OmUsdzp0fTp7djp0LHc6ZX0pO2I9ZShmKSxifHwoYj1lKHUoYSxmLGwubmFtZSkpKSx4PSEhYn1sZXQgdz0hMTtpZihiJiYhby5udW1SZWd1bGFyRWRnZXMpe2xldCB0PWIsZT1jLm5vZGU7Zm9yKDt0LmFkam9pbmluZ01ldGFlZGdlOyl0PXQuYWRqb2luaW5nTWV0YWVkZ2UsZT1lLnBhcmVudE5vZGU7bGV0IG49dGhpcy5oaWVyYXJjaHkuZ2V0VG9wb2xvZ2ljYWxPcmRlcmluZyhlLm5hbWUpLGk9dC5tZXRhZWRnZTt3PW5baS52XT5uW2kud119aWYoeD14JiYhdywheClyZXR1cm4gdm9pZCB2LnB1c2gobmV3IGtLdChfLGcsbmV3IElLdChvKSxMS3QuU0hPUlRDVVQsYSkpO2xldCBTPXUoYSx0KSxNPXUoYSxmLHQpLEU9ci5ub2RlKE0pO2lmKCFFKXtsZXQgdD1yLm5vZGUoUyk7aWYoIXQpe3Q9bmV3IE5LdCh7bmFtZTpTLHR5cGU6QSR0LkJSSURHRSxpc0dyb3VwTm9kZTohMSxjYXJkaW5hbGl0eTowLHBhcmVudE5vZGU6bnVsbCxzdGF0czpudWxsLGluY2x1ZGU6ayR0LlVOU1BFQ0lGSUVELGluYm91bmQ6YSxub2RlQXR0cmlidXRlczp7fX0pLHRoaXMuaW5kZXhbU109dCxyLnNldE5vZGUoUyx0KX1FPW5ldyBOS3Qoe25hbWU6TSx0eXBlOkEkdC5CUklER0UsaXNHcm91cE5vZGU6ITEsY2FyZGluYWxpdHk6MSxwYXJlbnROb2RlOm51bGwsc3RhdHM6bnVsbCxpbmNsdWRlOmskdC5VTlNQRUNJRklFRCxpbmJvdW5kOmEsbm9kZUF0dHJpYnV0ZXM6e319KSx0aGlzLmluZGV4W01dPUUsci5zZXROb2RlKE0sRSksci5zZXRQYXJlbnQoTSxTKSx0Lm5vZGUuY2FyZGluYWxpdHkrK31sZXQgVD1uZXcgSUt0KG8pO1QuYWRqb2luaW5nTWV0YWVkZ2U9YixhP3Iuc2V0RWRnZShNLHMsVCk6ci5zZXRFZGdlKHMsTSxUKX0pKSxDZS5leHBvcnRzLmVhY2goWyEwLCExXSwoZT0+e2xldCBuPXUoZSx0KSxpPXIubm9kZShuKTtpJiZDZS5leHBvcnRzLmVhY2goci5ub2RlcygpLChvPT57aWYoci5ub2RlKG8pLm5vZGUudHlwZT09PUEkdC5CUklER0UpcmV0dXJuO2lmKCEoZT8hci5wcmVkZWNlc3NvcnMobykubGVuZ3RoOiFyLnN1Y2Nlc3NvcnMobykubGVuZ3RoKSlyZXR1cm47bGV0IGE9dShlLHQsIlNUUlVDVFVSQUxfVEFSR0VUIikscz1yLm5vZGUoYSk7aWYoIXMpe3M9bmV3IE5LdCh7bmFtZTphLHR5cGU6QSR0LkJSSURHRSxpc0dyb3VwTm9kZTohMSxjYXJkaW5hbGl0eToxLHBhcmVudE5vZGU6bnVsbCxzdGF0czpudWxsLGluY2x1ZGU6ayR0LlVOU1BFQ0lGSUVELGluYm91bmQ6ZSxub2RlQXR0cmlidXRlczp7fX0pLHMuc3RydWN0dXJhbD0hMCx0aGlzLmluZGV4W2FdPXMsci5zZXROb2RlKGEscyksaS5ub2RlLmNhcmRpbmFsaXR5Kyssci5zZXRQYXJlbnQoYSxuKX1sZXQgbD1uZXcgSUt0KG51bGwpO2wuc3RydWN0dXJhbD0hMCxsLndlaWdodC0tLGU/ci5zZXRFZGdlKGEsbyxsKTpyLnNldEVkZ2UobyxhLGwpfSkpfSkpfWJ1aWxkU3ViaGllcmFyY2hpZXNGb3JOZWVkZWRGdW5jdGlvbnModCl7Q2UuZXhwb3J0cy5lYWNoKHQuZWRnZXMoKSwoZT0+e2xldCBuPXQuZWRnZShlKSxpPW5ldyBJS3Qobik7Q2UuZXhwb3J0cy5mb3JFYWNoKGkubWV0YWVkZ2UuYmFzZUVkZ2VMaXN0LCh0PT57Y29uc3QgZT10LnYuc3BsaXQoTSR0KTtmb3IobGV0IHQ9ZS5sZW5ndGg7dD49MDt0LS0pe2NvbnN0IG49ZS5zbGljZSgwLHQpLGk9dGhpcy5oaWVyYXJjaHkubm9kZShuLmpvaW4oTSR0KSk7aWYoaSl7aWYoaS50eXBlPT09QSR0Lk9QJiZ0aGlzLmhpZXJhcmNoeS5saWJyYXJ5RnVuY3Rpb25zW2kub3BdKWZvcihsZXQgdD0xO3Q8bi5sZW5ndGg7dCsrKXtjb25zdCBlPW4uc2xpY2UoMCx0KS5qb2luKE0kdCk7ZSYmdGhpcy5idWlsZFN1YmhpZXJhcmNoeShlKX1icmVha319fSkpfSkpfX1jbGFzcyBrS3R7Y29uc3RydWN0b3IodCxlLG4saSxyKXt0aGlzLm5vZGU9dCx0aGlzLnJlbmRlck5vZGVJbmZvPWUsdGhpcy5yZW5kZXJNZXRhZWRnZUluZm89bix0aGlzLmFubm90YXRpb25UeXBlPWksdGhpcy5keD0wLHRoaXMuZHk9MCx0aGlzLndpZHRoPTAsdGhpcy5oZWlnaHQ9MCxuJiZuLm1ldGFlZGdlJiYodGhpcy52PW4ubWV0YWVkZ2Uudix0aGlzLnc9bi5tZXRhZWRnZS53KSx0aGlzLmlzSW49cix0aGlzLnBvaW50cz1bXX19dmFyIExLdDshKGZ1bmN0aW9uKHQpe3RbdC5TSE9SVENVVD0wXT0iU0hPUlRDVVQiLHRbdC5DT05TVEFOVD0xXT0iQ09OU1RBTlQiLHRbdC5TVU1NQVJZPTJdPSJTVU1NQVJZIix0W3QuRUxMSVBTSVM9M109IkVMTElQU0lTIn0pKExLdHx8KExLdD17fSkpO2NsYXNzIFBLdHtjb25zdHJ1Y3Rvcigpe3RoaXMubGlzdD1bXSx0aGlzLm5vZGVOYW1lcz17fX1wdXNoKHQpe2lmKHQubm9kZS5uYW1lIGluIHRoaXMubm9kZU5hbWVzKXJldHVybjtpZih0aGlzLm5vZGVOYW1lc1t0Lm5vZGUubmFtZV09ITAsdGhpcy5saXN0Lmxlbmd0aDxUS3QpcmV0dXJuIHZvaWQgdGhpcy5saXN0LnB1c2godCk7bGV0IGU9dGhpcy5saXN0W3RoaXMubGlzdC5sZW5ndGgtMV07aWYoZS5hbm5vdGF0aW9uVHlwZT09PUxLdC5FTExJUFNJUyl7bGV0IHQ9ZS5ub2RlO3JldHVybiB2b2lkIHQuc2V0TnVtTW9yZU5vZGVzKCsrdC5udW1Nb3JlTm9kZXMpfWxldCBuPW5ldyBSJHQoMSk7dGhpcy5saXN0LnB1c2gobmV3IGtLdChuLG5ldyBOS3QobiksbnVsbCxMS3QuRUxMSVBTSVMsdC5pc0luKSl9fWNsYXNzIE5LdHtjb25zdHJ1Y3Rvcih0KXtpZih0aGlzLm5vZGU9dCx0aGlzLmV4cGFuZGVkPSExLHRoaXMuaW5Bbm5vdGF0aW9ucz1uZXcgUEt0LHRoaXMub3V0QW5ub3RhdGlvbnM9bmV3IFBLdCx0aGlzLng9MCx0aGlzLnk9MCx0aGlzLndpZHRoPTAsdGhpcy5oZWlnaHQ9MCx0aGlzLmluYm94V2lkdGg9MCx0aGlzLm91dGJveFdpZHRoPTAsdGhpcy5leGNsdWRlZD0hMSx0aGlzLnN0cnVjdHVyYWw9ITEsdGhpcy5sYWJlbE9mZnNldD0wLHRoaXMucmFkaXVzPTAsdGhpcy5sYWJlbEhlaWdodD0wLHRoaXMucGFkZGluZ1RvcD0wLHRoaXMucGFkZGluZ0xlZnQ9MCx0aGlzLnBhZGRpbmdSaWdodD0wLHRoaXMucGFkZGluZ0JvdHRvbT0wLHRoaXMuaXNJbkV4dHJhY3Q9ITEsdGhpcy5pc091dEV4dHJhY3Q9ITEsdGhpcy5jb3JlQm94PXt3aWR0aDowLGhlaWdodDowfSx0aGlzLmlzRmFkZWRPdXQ9ITEsdGhpcy5kaXNwbGF5TmFtZT10Lm5hbWUuc3Vic3RyaW5nKHQubmFtZS5sYXN0SW5kZXhPZihNJHQpKzEpLHQudHlwZT09PUEkdC5NRVRBJiZ0LmFzc29jaWF0ZWRGdW5jdGlvbil7Y29uc3QgdD10aGlzLmRpc3BsYXlOYW1lLm1hdGNoKENLdCk7dD90aGlzLmRpc3BsYXlOYW1lPXRbMV06Q2UuZXhwb3J0cy5zdGFydHNXaXRoKHRoaXMuZGlzcGxheU5hbWUsVCR0KSYmKHRoaXMuZGlzcGxheU5hbWU9dGhpcy5kaXNwbGF5TmFtZS5zdWJzdHJpbmcoVCR0Lmxlbmd0aCkpfX1pc0luQ29yZSgpe3JldHVybiF0aGlzLmlzSW5FeHRyYWN0JiYhdGhpcy5pc091dEV4dHJhY3QmJiF0aGlzLmlzTGlicmFyeUZ1bmN0aW9ufX1jbGFzcyBJS3R7Y29uc3RydWN0b3IodCl7dGhpcy5tZXRhZWRnZT10LHRoaXMuYWRqb2luaW5nTWV0YWVkZ2U9bnVsbCx0aGlzLnN0cnVjdHVyYWw9ITEsdGhpcy53ZWlnaHQ9MSx0aGlzLmlzRmFkZWRPdXQ9ITF9fWZ1bmN0aW9uIFJLdCh0LGUsbixpLHIpe2xldCBvPW5ldyBrS3QoZSxuLGksciwhMCk7dC5pbkFubm90YXRpb25zLnB1c2gobyl9ZnVuY3Rpb24gT0t0KHQsZSxuLGkscil7bGV0IG89bmV3IGtLdChlLG4saSxyLCExKTt0Lm91dEFubm90YXRpb25zLnB1c2gobyl9Y2xhc3Mgekt0IGV4dGVuZHMgTkt0e2NvbnN0cnVjdG9yKHQsZSl7c3VwZXIodCk7bGV0IG49dC5tZXRhZ3JhcGguZ3JhcGgoKTt0aGlzLmNvcmVHcmFwaD1ZJHQobi5uYW1lLEMkdC5DT1JFLGUpLHRoaXMuaW5FeHRyYWN0Qm94PXt3aWR0aDowLGhlaWdodDowfSx0aGlzLm91dEV4dHJhY3RCb3g9e3dpZHRoOjAsaGVpZ2h0OjB9LHRoaXMubGlicmFyeUZ1bmN0aW9uc0JveD17d2lkdGg6MCxoZWlnaHQ6MH0sdGhpcy5pc29sYXRlZEluRXh0cmFjdD1bXSx0aGlzLmlzb2xhdGVkT3V0RXh0cmFjdD1bXSx0aGlzLmxpYnJhcnlGdW5jdGlvbnNFeHRyYWN0PVtdfX1mdW5jdGlvbiBES3QodCxlKXt0LmNvcmVHcmFwaCYmKGZ1bmN0aW9uIG4odCxlKXtDZS5leHBvcnRzLmVhY2godC5ub2RlcygpLChuPT57bGV0IGk9dC5ub2RlKG4pO2lmKGkuZXhwYW5kZWQ9ZT4xLGU+MClzd2l0Y2goaS5ub2RlLnR5cGUpe2Nhc2UgQSR0Lk1FVEE6Y2FzZSBBJHQuU0VSSUVTOkRLdChpLGUtMSl9fSkpfSkodC5jb3JlR3JhcGgsZSl9ZnVuY3Rpb24gQkt0KHQsZSxuKXtsZXQgaT10Lm5vZGUoZSkscj10Lm5vZGUobiksbz10LmVkZ2UoZSxuKTsoaS5ub2RlLmluY2x1ZGUhPT1rJHQuSU5DTFVERSYmci5ub2RlLmluY2x1ZGUhPT1rJHQuSU5DTFVERXx8aS5ub2RlLmluY2x1ZGU9PT1rJHQuRVhDTFVERXx8ci5ub2RlLmluY2x1ZGU9PT1rJHQuRVhDTFVERSkmJihPS3QoaSxyLm5vZGUscixvLExLdC5TSE9SVENVVCksUkt0KHIsaS5ub2RlLGksbyxMS3QuU0hPUlRDVVQpLHQucmVtb3ZlRWRnZShlLG4pKX1mdW5jdGlvbiBIS3QodCxlLG4pe2xldCBpPXQuY29yZUdyYXBoLHI9aS5ub2RlKGUpO3IuaXNPdXRFeHRyYWN0PSEwLENlLmV4cG9ydHMuZWFjaChpLnByZWRlY2Vzc29ycyhlKSwoKHQsbik9PntCS3QoaSx0LGUpfSkpLENlLmV4cG9ydHMuZWFjaChpLnN1Y2Nlc3NvcnMoZSksKCh0LG4pPT57Qkt0KGksZSx0KX0pKSwwPT09aS5uZWlnaGJvcnMoZSkubGVuZ3RoJiYoci5ub2RlLmluY2x1ZGU9ayR0LkVYQ0xVREUsdC5pc29sYXRlZE91dEV4dHJhY3QucHVzaChyKSxpLnJlbW92ZU5vZGUoZSkpfWZ1bmN0aW9uIEZLdCh0LGUsbil7bGV0IGk9dC5jb3JlR3JhcGgscj1pLm5vZGUoZSk7ci5pc0luRXh0cmFjdD0hMCxDZS5leHBvcnRzLmVhY2goaS5zdWNjZXNzb3JzKGUpLCgodCxuKT0+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+e0NlLmV4cG9ydHMuZWFjaCh0LmVkZ2UoZSkucG9pbnRzLCh0PT57dC54LT1pLHQueS09cn0pKX0pKSx7d2lkdGg6by1pLGhlaWdodDphLXJ9fWZ1bmN0aW9uIHFLdCh0KXtzd2l0Y2godC5hbm5vdGF0aW9uVHlwZSl7Y2FzZSBMS3QuQ09OU1RBTlQ6Q2UuZXhwb3J0cy5leHRlbmQodCxVS3QuY29uc3RhbnQuc2l6ZSk7YnJlYWs7Y2FzZSBMS3QuU0hPUlRDVVQ6aWYodC5ub2RlLnR5cGU9PT1BJHQuT1ApQ2UuZXhwb3J0cy5leHRlbmQodCxVS3Quc2hvcnRjdXRTaXplLm9wKTtlbHNlIGlmKHQubm9kZS50eXBlPT09QSR0Lk1FVEEpQ2UuZXhwb3J0cy5leHRlbmQodCxVS3Quc2hvcnRjdXRTaXplLm1ldGEpO2Vsc2V7aWYodC5ub2RlLnR5cGUhPT1BJHQuU0VSSUVTKXRocm93IEVycm9yKCJJbnZhbGlkIG5vZGUgdHlwZTogIit0Lm5vZGUudHlwZSk7Q2UuZXhwb3J0cy5leHRlbmQodCxVS3Quc2hvcnRjdXRTaXplLnNlcmllcyl9YnJlYWs7Y2FzZSBMS3QuU1VNTUFSWTpDZS5leHBvcnRzLmV4dGVuZCh0LFVLdC5jb25zdGFudC5zaXplKX19ZnVuY3Rpb24gWUt0KHQpe2lmKHQuZXhwYW5kZWQpcmV0dXJuIHQueDtyZXR1cm4gdC54LXQud2lkdGgvMisodC5pbkFubm90YXRpb25zLmxpc3QubGVuZ3RoP3QuaW5ib3hXaWR0aDowKSt0LmNvcmVCb3gud2lkdGgvMn1mdW5jdGlvbiBYS3QodCxlKXtyZXR1cm4gMTgwKk1hdGguYXRhbigoZS55LXQueSkvKGUueC10LngpKS9NYXRoLlBJfWZ1bmN0aW9uICRLdCh0LGUpe2xldCBuLGkscj1lLmV4cGFuZGVkP2UueDpZS3QoZSksbz1lLnksYT10LngtcixzPXQueS1vLGw9ZS5leHBhbmRlZD9lLndpZHRoOmUuY29yZUJveC53aWR0aCxjPWUuZXhwYW5kZWQ/ZS5oZWlnaHQ6ZS5jb3JlQm94LmhlaWdodDtyZXR1cm4gTWF0aC5hYnMocykqbC8yPk1hdGguYWJzKGEpKmMvMj8oczwwJiYoYz0tYyksbj0wPT09cz8wOmMvMiphL3MsaT1jLzIpOihhPDAmJihsPS1sKSxuPWwvMixpPTA9PT1hPzA6bC8yKnMvYSkse3g6cituLHk6bytpfX1jb25zdCBLS3Q9YSR0LFpLdD1uJHQ7bGV0IEpLdD1be2JhY2tncm91bmRfY29sb3I6IiNDQzJGMkMiLGxhYmVsOiJOYU4ifSx7YmFja2dyb3VuZF9jb2xvcjoiI0ZGOEQwMCIsbGFiZWw6Ii3iiJ4ifSx7YmFja2dyb3VuZF9jb2xvcjoiI0VBRUFFQSIsbGFiZWw6Ii0ifSx7YmFja2dyb3VuZF9jb2xvcjoiI0E1QTVBNSIsbGFiZWw6IjAifSx7YmFja2dyb3VuZF9jb2xvcjoiIzI2MjYyNiIsbGFiZWw6IisifSx7YmFja2dyb3VuZF9jb2xvcjoiIzAwM0VENCIsbGFiZWw6IiviiJ4ifV07ZnVuY3Rpb24gUUt0KHQsZSxuKXtudWxsIT10LmF0dHIoInRyYW5zZm9ybSIpJiYodD10LnRyYW5zaXRpb24oInBvc2l0aW9uIikpLHQuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrZSsiLCIrbisiKSIpfWZ1bmN0aW9uIHRadCh0LGUsbixpLHIpe3QudHJhbnNpdGlvbigpLmF0dHIoIngiLGUtaS8yKS5hdHRyKCJ5IixuLXIvMikuYXR0cigid2lkdGgiLGkpLmF0dHIoImhlaWdodCIscil9ZnVuY3Rpb24gZVp0KHQsZSxuLGkscil7dC50cmFuc2l0aW9uKCkuYXR0cigiY3giLGUpLmF0dHIoImN5IixuKS5hdHRyKCJyeCIsaS8yKS5hdHRyKCJyeSIsci8yKX1mdW5jdGlvbiBuWnQodCxlKXtyZXR1cm4gZT90LnRvRml4ZWQoMCk6TWF0aC5hYnModCk+PTE/dC50b0ZpeGVkKDEpOnQudG9FeHBvbmVudGlhbCgxKX1mdW5jdGlvbiBpWnQodCxlLG4saSxyPTYwLG89MTAsYT0wLHMpe2lmKER1KHQucGFyZW50Tm9kZSkuc2VsZWN0QWxsKCIuaGVhbHRoLXBpbGwiKS5yZW1vdmUoKSwhZSlyZXR1cm47Y29uc3QgbD1lLnZhbHVlLGM9bC5zbGljZSgyLDgpLHU9Y1swXSxoPWNbMV0sZD1jWzVdO2xldCBwPWxbMV07Y29uc3QgZj17bWluOmxbOF0sbWF4OmxbOV0sbWVhbjpsWzEwXSxzdGRkZXY6TWF0aC5zcXJ0KGxbMTFdKX07bnVsbD09ciYmKHI9NjApLG51bGw9PW8mJihvPTEwKSxudWxsPT1hJiYoYT0wKSxudWxsIT1uJiZuLm5vZGUudHlwZT09PUEkdC5PUCYmKHIvPTIsby89Mik7bGV0IG09ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKG8kdCwiZyIpO20uY2xhc3NMaXN0LmFkZCgiaGVhbHRoLXBpbGwiKTtsZXQgZz1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMobyR0LCJkZWZzIik7bS5hcHBlbmRDaGlsZChnKTtsZXQgXz1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMobyR0LCJsaW5lYXJHcmFkaWVudCIpO2NvbnN0IHk9ImhlYWx0aC1waWxsLWdyYWRpZW50LSIraTtfLnNldEF0dHJpYnV0ZSgiaWQiLHkpO2xldCB2PTAsYj0iMCUiO2ZvcihsZXQgdD0wO3Q8Yy5sZW5ndGg7dCsrKXtpZighY1t0XSljb250aW51ZTt2Kz1jW3RdO2xldCBlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhvJHQsInN0b3AiKTtlLnNldEF0dHJpYnV0ZSgib2Zmc2V0IixiKSxlLnNldEF0dHJpYnV0ZSgic3RvcC1jb2xvciIsSkt0W3RdLmJhY2tncm91bmRfY29sb3IpLF8uYXBwZW5kQ2hpbGQoZSk7bGV0IG49ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKG8kdCwic3RvcCIpLGk9MTAwKnYvcCsiJSI7bi5zZXRBdHRyaWJ1dGUoIm9mZnNldCIsaSksbi5zZXRBdHRyaWJ1dGUoInN0b3AtY29sb3IiLEpLdFt0XS5iYWNrZ3JvdW5kX2NvbG9yKSxfLmFwcGVuZENoaWxkKG4pLGI9aX1nLmFwcGVuZENoaWxkKF8pO2xldCB4PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhvJHQsInJlY3QiKTt4LnNldEF0dHJpYnV0ZSgiZmlsbCIsInVybCgjIit5KyIpIikseC5zZXRBdHRyaWJ1dGUoIndpZHRoIixTdHJpbmcocikpLHguc2V0QXR0cmlidXRlKCJoZWlnaHQiLFN0cmluZyhvKSkseC5zZXRBdHRyaWJ1dGUoInkiLFN0cmluZyhhKSksbS5hcHBlbmRDaGlsZCh4KTtsZXQgdz1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMobyR0LCJ0aXRsZSIpO3cudGV4dENvbnRlbnQ9KGZ1bmN0aW9uIFModCxlLG4saSl7bGV0IHI9IkRldmljZTogIit0LmRldmljZV9uYW1lKyJcbiI7cis9ImR0eXBlOiAiK3QuZHR5cGUrIlxuIjtsZXQgbz0iKHNjYWxhcikiO3Quc2hhcGUubGVuZ3RoPjAmJihvPSIoIit0LnNoYXBlLmpvaW4oIiwiKSsiKSIpLHIrPSJcbnNoYXBlOiAiK28rIlxuXG4iLHIrPSIjKGVsZW1lbnRzKTogIitlKyJcbiI7Y29uc3QgYT1bXTtmb3IobGV0IHQ9MDt0PG4ubGVuZ3RoO3QrKyluW3RdPjAmJmEucHVzaCgiIygiK0pLdFt0XS5sYWJlbCsiKTogIituW3RdKTtyZXR1cm4gcis9YS5qb2luKCIsICIpKyJcblxuIixpLm1heD49aS5taW4mJihyKz0ibWluOiAiK2kubWluKyIsIG1heDogIitpLm1heCsiXG4iLHIrPSJtZWFuOiAiK2kubWVhbisiLCBzdGRkZXY6ICIraS5zdGRkZXYpLHJ9KShlLHAsYyxmKSxtLmFwcGVuZENoaWxkKHcpO2xldCBNPSExO2lmKG51bGwhPW4pe2xldCB0PW4ueS1vLW4uaGVpZ2h0LzItMjtpZihuLmxhYmVsT2Zmc2V0PDAmJih0Kz1uLmxhYmVsT2Zmc2V0KSxtLnNldEF0dHJpYnV0ZSgidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrKG4ueC1yLzIpKyIsICIrdCsiKSIpLGNbMl18fGNbM118fGNbNF0pe2xldCB0PW4ubm9kZS5hdHRyO2lmKHQmJnQubGVuZ3RoKWZvcihsZXQgZT0wO2U8dC5sZW5ndGg7ZSsrKWlmKCJUIj09PXRbZV0ua2V5KXtsZXQgbj10W2VdLnZhbHVlLnR5cGU7TT1uJiYvXkRUXyhCT09MfElOVHxVSU5UKS8udGVzdChuKTticmVha319fWxldCBFPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhvJHQsInRleHQiKTtpZihOdW1iZXIuaXNGaW5pdGUoZi5taW4pJiZOdW1iZXIuaXNGaW5pdGUoZi5tYXgpKXtjb25zdCB0PW5adChmLm1pbixNKSxlPW5adChmLm1heCxNKTtpZihFLnRleHRDb250ZW50PXA+MT90KyIgfiAiK2U6dCx1PjB8fGg+MHx8ZD4wKXtFLnRleHRDb250ZW50Kz0iICgiO2NvbnN0IHQ9W107dT4wJiZ0LnB1c2goYE5hTsOXJHt1fWApLGg+MCYmdC5wdXNoKGAt4oiew5cke2h9YCksZD4wJiZ0LnB1c2goYCviiJ7DlyR7ZH1gKSxFLnRleHRDb250ZW50Kz10LmpvaW4oIjsgIikrIikifX1lbHNlIEUudGV4dENvbnRlbnQ9IihObyBmaW5pdGUgZWxlbWVudHMpIjtFLmNsYXNzTGlzdC5hZGQoImhlYWx0aC1waWxsLXN0YXRzIiksbnVsbD09cyYmKHM9ci8yKSxFLnNldEF0dHJpYnV0ZSgieCIsU3RyaW5nKHMpKSxFLnNldEF0dHJpYnV0ZSgieSIsU3RyaW5nKGEtMikpLG0uYXBwZW5kQ2hpbGQoRSksZXIodC5wYXJlbnROb2RlKS5hcHBlbmRDaGlsZChtKX12YXIgclp0O2Z1bmN0aW9uIG9adCh0LGUpe2NvbnN0IG49dC5nZXRDb250ZXh0TWVudSgpLGk9RHUodC5nZXRDb250ZXh0TWVudSgpKTtyZXR1cm4gZnVuY3Rpb24ocixvKXtsZXQgYT1NdTtjb25zdCBzPShmdW5jdGlvbiBsKHQpe2xldCBlPTAsbj0wLGk9dDtmb3IoO2kmJmkub2Zmc2V0TGVmdD49MCYmaS5vZmZzZXRUb3A+PTA7KWUrPWkub2Zmc2V0TGVmdC1pLnNjcm9sbExlZnQsbis9aS5vZmZzZXRUb3AtaS5zY3JvbGxUb3AsaT1pLm9mZnNldFBhcmVudDtyZXR1cm57bGVmdDplLHRvcDpufX0pKHQpO2Z1bmN0aW9uIGModCl7dCYmdC5jb21wb3NlZFBhdGgoKS5pbmNsdWRlcyhuKXx8KGkuc3R5bGUoImRpc3BsYXkiLCJub25lIiksZG9jdW1lbnQuYm9keS5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLGMse2NhcHR1cmU6ITB9KSl9aS5zdHlsZSgiZGlzcGxheSIsImJsb2NrIikuc3R5bGUoImxlZnQiLGEuY2xpZW50WC1zLmxlZnQrMSsicHgiKS5zdHlsZSgidG9wIixhLmNsaWVudFktcy50b3ArMSsicHgiKSxhLnByZXZlbnREZWZhdWx0KCksYS5zdG9wUHJvcGFnYXRpb24oKSxkb2N1bWVudC5ib2R5LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsYyx7Y2FwdHVyZTohMH0pLGkuaHRtbCgiIiksaS5hcHBlbmQoInVsIikuc2VsZWN0QWxsKCJsaSIpLmRhdGEoZSkuZW50ZXIoKS5hcHBlbmQoImxpIikub24oImNsaWNrIiwoKHQsZSk9Pnt0LmFjdGlvbih0aGlzLHIsbyksYygpfSkpLmh0bWwoKGZ1bmN0aW9uKHQpe3JldHVybiB0LnRpdGxlKHIpfSkpfX0hKGZ1bmN0aW9uKHQpe3QuTk9ORT0ibm9uZSIsdC5DT01QVVRFX1RJTUU9ImNvbXB1dGVfdGltZSIsdC5ERVZJQ0U9ImRldmljZSIsdC5NRU1PUlk9Im1lbW9yeSIsdC5PUF9DT01QQVRJQklMSVRZPSJvcF9jb21wYXRpYmlsaXR5Iix0LlNUUlVDVFVSRT0ic3RydWN0dXJlIix0LlhMQV9DTFVTVEVSPSJ4bGFfY2x1c3RlciJ9KShyWnR8fChyWnQ9e30pKTtsZXQgYVp0PUFFKCkuZG9tYWluKFtjJHQsMTJdKS5yYW5nZShbInNtYWxsIiwibWVkaXVtIiwibGFyZ2UiLCJ4bGFyZ2UiXSk7ZnVuY3Rpb24gc1p0KHQpe3JldHVybiB0LnYrIi0tIit0Lnd9ZnVuY3Rpb24gbFp0KHQsZSxuKXtjb25zdCBpPW47bGV0IHI9W107cj1DZS5leHBvcnRzLnJlZHVjZShlLmVkZ2VzKCksKCh0LG4pPT57bGV0IGk9ZS5lZGdlKG4pO3JldHVybiB0LnB1c2goe3Y6bi52LHc6bi53LGxhYmVsOml9KSx0fSkscik7bGV0IG89cyR0KHQsImciLG4kdC5FZGdlLkNPTlRBSU5FUikuc2VsZWN0QWxsKChmdW5jdGlvbigpe3JldHVybiB0aGlzLmNoaWxkTm9kZXN9KSkuZGF0YShyLHNadCk7cmV0dXJuIG8uZW50ZXIoKS5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsbiR0LkVkZ2UuR1JPVVApLmF0dHIoImRhdGEtZWRnZSIsc1p0KS5lYWNoKChmdW5jdGlvbih0KXtsZXQgZT1EdSh0aGlzKTt0LmxhYmVsLmVkZ2VHcm91cD1lLGkuX2VkZ2VHcm91cEluZGV4W3NadCh0KV09ZSxpLmhhbmRsZUVkZ2VTZWxlY3RlZCYmZS5vbigiY2xpY2siLCh0PT57TXUuc3RvcFByb3BhZ2F0aW9uKCksaS5maXJlKCJlZGdlLXNlbGVjdCIse2VkZ2VEYXRhOnQsZWRnZUdyb3VwOmV9KX0pKSxwWnQoZSx0LGkpfSkpLm1lcmdlKG8pLmVhY2goKGZ1bmN0aW9uKCl7IShmdW5jdGlvbiB0KGUsbil7RHUobikuc2VsZWN0KCJwYXRoLiIrbiR0LkVkZ2UuTElORSkudHJhbnNpdGlvbigpLmF0dHJUd2VlbigiZCIsKGZ1bmN0aW9uKHQsbixpKXtyZXR1cm4oZnVuY3Rpb24gcih0LGUsbixpLG8pe2xldCBhPW4ubGFiZWwscz1hLmFkam9pbmluZ01ldGFlZGdlLGw9YS5wb2ludHM7Y29uc3R7c2hhZG93Um9vdDpjfT10O24ubGFiZWwuc3RhcnRNYXJrZXJJZCYmKGw9ZFp0KGwsRHUoYy5xdWVyeVNlbGVjdG9yKCIjIituLmxhYmVsLnN0YXJ0TWFya2VySWQpKSwhMCkpO24ubGFiZWwuZW5kTWFya2VySWQmJihsPWRadChsLER1KGMucXVlcnlTZWxlY3RvcigiIyIrbi5sYWJlbC5lbmRNYXJrZXJJZCkpLCExKSk7aWYoIXMpcmV0dXJuIGNwKG8sZlp0KGwpKTtsZXQgdT1zLmVkZ2VHcm91cC5ub2RlKCkuZmlyc3RDaGlsZCxoPWEubWV0YWVkZ2UuaW5ib3VuZDtyZXR1cm4gZnVuY3Rpb24odCl7bGV0IG49dS5nZXRQb2ludEF0TGVuZ3RoKGg/dS5nZXRUb3RhbExlbmd0aCgpOjApLm1hdHJpeFRyYW5zZm9ybSh1LmdldENUTSgpKS5tYXRyaXhUcmFuc2Zvcm0oZS5nZXRDVE0oKS5pbnZlcnNlKCkpLGk9aD8wOmwubGVuZ3RoLTE7cmV0dXJuIGxbaV0ueD1uLngsbFtpXS55PW4ueSxmWnQobCl9fSkoZSx0aGlzLHQsMCxpKX0pKX0pKG4sdGhpcyl9KSkuZWFjaCgoZnVuY3Rpb24odCl7IShmdW5jdGlvbiBlKHQsbixpKXt0LmNsYXNzZWQoImZhZGVkIixuLmxhYmVsLmlzRmFkZWRPdXQpO2xldCByPW4ubGFiZWwubWV0YWVkZ2U7dC5zZWxlY3QoInBhdGguIituJHQuRWRnZS5MSU5FKS5jbGFzc2VkKCJjb250cm9sLWRlcCIsciYmIXIubnVtUmVndWxhckVkZ2VzKX0pKER1KHRoaXMpLHQpfSkpLG8uZXhpdCgpLmVhY2goKHQ9PntkZWxldGUgaS5fZWRnZUdyb3VwSW5kZXhbc1p0KHQpXX0pKS5yZW1vdmUoKSxvfWZ1bmN0aW9uIGNadCh0LGUpe2xldCBuPWUuZ2V0Tm9kZUJ5TmFtZSh0LnYpO2lmKG51bGw9PW4ub3V0cHV0U2hhcGVzfHxDZS5leHBvcnRzLmlzRW1wdHkobi5vdXRwdXRTaGFwZXMpKXJldHVybiBudWxsO2xldCBpPW4ub3V0cHV0U2hhcGVzW3Qub3V0cHV0VGVuc29yS2V5XTtyZXR1cm4gbnVsbD09aT9udWxsOjA9PT1pLmxlbmd0aD8ic2NhbGFyIjppLm1hcCgodD0+LTE9PT10PyI/Ijp0KSkuam9pbigiw5ciKX1mdW5jdGlvbiB1WnQodCxlKXtpZihlLmVkZ2VMYWJlbEZ1bmN0aW9uKXJldHVybiBlLmVkZ2VMYWJlbEZ1bmN0aW9uKHQsZSk7cmV0dXJuIHQuYmFzZUVkZ2VMaXN0Lmxlbmd0aD4xP3QuYmFzZUVkZ2VMaXN0Lmxlbmd0aCsiIHRlbnNvcnMiOmNadCh0LmJhc2VFZGdlTGlzdFswXSxlKX1mdW5jdGlvbiBoWnQodCxlLG4pe2NvbnN0IGk9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKG8kdCwicGF0aCIpO2ZvcihsZXQgcj0xO3I8dC5sZW5ndGg7cisrKWlmKGkuc2V0QXR0cmlidXRlKCJkIixuKHQuc2xpY2UoMCxyKSkpLGkuZ2V0VG90YWxMZW5ndGgoKT5lKXJldHVybiByLTE7cmV0dXJuIHQubGVuZ3RoLTF9ZnVuY3Rpb24gZFp0KHQsZSxuKXtsZXQgaT1ETCgpLngoKHQ9PnQueCkpLnkoKHQ9PnQueSkpLHI9RHUoZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsInBhdGgiKSkuYXR0cigiZCIsaSh0KSksbz0rZS5hdHRyKCJtYXJrZXJXaWR0aCIpLGE9ZS5hdHRyKCJ2aWV3Qm94Iikuc3BsaXQoIiAiKS5tYXAoTnVtYmVyKSxzPWFbMl0tYVswXSxsPStlLmF0dHIoInJlZlgiKSxjPXIubm9kZSgpO2lmKG4pe2NvbnN0IGU9byooMS1sL3MpLG49Yy5nZXRQb2ludEF0TGVuZ3RoKGUpLHI9aFp0KHQsZSxpKTtyZXR1cm4gdFtyLTFdPXt4Om4ueCx5Om4ueX0sdC5zbGljZShyLTEpfXtjb25zdCBlPTEtbC9zLG49Yy5nZXRUb3RhbExlbmd0aCgpLW8qZSxyPWMuZ2V0UG9pbnRBdExlbmd0aChuKSxhPWhadCh0LG4saSk7cmV0dXJuIHRbYV09e3g6ci54LHk6ci55fSx0LnNsaWNlKDAsYSsxKX19ZnVuY3Rpb24gcFp0KHQsZSxuLGkpe2k9aXx8biR0LkVkZ2UuTElORSxlLmxhYmVsJiZlLmxhYmVsLnN0cnVjdHVyYWwmJihpKz0iICIrbiR0LkVkZ2UuU1RSVUNUVVJBTCksZS5sYWJlbCYmZS5sYWJlbC5tZXRhZWRnZSYmZS5sYWJlbC5tZXRhZWRnZS5udW1SZWZFZGdlcyYmKGkrPSIgIituJHQuRWRnZS5SRUZFUkVOQ0VfRURHRSksbi5oYW5kbGVFZGdlU2VsZWN0ZWQmJihpKz0iICIrbiR0LkVkZ2UuU0VMRUNUQUJMRSk7bGV0IHIsbz0icGF0aF8iK3NadChlKTtpZihuLnJlbmRlckhpZXJhcmNoeS5lZGdlV2lkdGhGdW5jdGlvbilyPW4ucmVuZGVySGllcmFyY2h5LmVkZ2VXaWR0aEZ1bmN0aW9uKGUsaSk7ZWxzZXtsZXQgdD0xO251bGwhPWUubGFiZWwmJm51bGwhPWUubGFiZWwubWV0YWVkZ2UmJih0PWUubGFiZWwubWV0YWVkZ2UudG90YWxTaXplKSxyPW4ucmVuZGVySGllcmFyY2h5LmVkZ2VXaWR0aFNpemVkQmFzZWRTY2FsZSh0KX1sZXQgYT10LmFwcGVuZCgicGF0aCIpLmF0dHIoImlkIixvKS5hdHRyKCJjbGFzcyIsaSkuc3R5bGUoInN0cm9rZS13aWR0aCIscisicHgiKTtpZihlLmxhYmVsJiZlLmxhYmVsLm1ldGFlZGdlKWlmKGUubGFiZWwubWV0YWVkZ2UubnVtUmVmRWRnZXMpe2NvbnN0IHQ9YHJlZmVyZW5jZS1hcnJvd2hlYWQtJHthWnQocil9YDthLnN0eWxlKCJtYXJrZXItc3RhcnQiLGB1cmwoIyR7dH0pYCksZS5sYWJlbC5zdGFydE1hcmtlcklkPXR9ZWxzZXtjb25zdCB0PWBkYXRhZmxvdy1hcnJvd2hlYWQtJHthWnQocil9YDthLnN0eWxlKCJtYXJrZXItZW5kIixgdXJsKCMke3R9KWApLGUubGFiZWwuZW5kTWFya2VySWQ9dH1pZihudWxsPT1lLmxhYmVsfHxudWxsPT1lLmxhYmVsLm1ldGFlZGdlKXJldHVybjtsZXQgcz11WnQoZS5sYWJlbC5tZXRhZWRnZSxuLnJlbmRlckhpZXJhcmNoeSk7bnVsbCE9cyYmdC5hcHBlbmQoInRleHQiKS5hcHBlbmQoInRleHRQYXRoIikuYXR0cigieGxpbms6aHJlZiIsIiMiK28pLmF0dHIoInN0YXJ0T2Zmc2V0IiwiNTAlIikuYXR0cigidGV4dC1hbmNob3IiLCJtaWRkbGUiKS5hdHRyKCJkb21pbmFudC1iYXNlbGluZSIsImNlbnRyYWwiKS50ZXh0KHMpfWxldCBmWnQ9REwoKS5jdXJ2ZSh3UCkueCgodD0+dC54KSkueSgodD0+dC55KSk7ZnVuY3Rpb24gbVp0KHQsZSxuKXtsZXQgaT1zJHQodCwiZyIsbiR0Lk5vZGUuQ09OVEFJTkVSKS5zZWxlY3RBbGwoKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2hpbGROb2Rlc30pKS5kYXRhKGUsKHQ9PnQubm9kZS5uYW1lKyI6Iit0Lm5vZGUudHlwZSkpO3JldHVybiBpLmVudGVyKCkuYXBwZW5kKCJnIikuYXR0cigiZGF0YS1uYW1lIiwodD0+dC5ub2RlLm5hbWUpKS5lYWNoKChmdW5jdGlvbih0KXtsZXQgZT1EdSh0aGlzKTtuLmFkZE5vZGVHcm91cCh0Lm5vZGUubmFtZSxlKX0pKS5tZXJnZShpKS5hdHRyKCJjbGFzcyIsKHQ9Pm4kdC5Ob2RlLkdST1VQKyIgIitUWnQodCkpKS5lYWNoKChmdW5jdGlvbih0KXtsZXQgZT1EdSh0aGlzKTt6WnQocyR0KGUsImciLG4kdC5Bbm5vdGF0aW9uLklOQk9YKSx0LmluQW5ub3RhdGlvbnMsdCxuKSx6WnQocyR0KGUsImciLG4kdC5Bbm5vdGF0aW9uLk9VVEJPWCksdC5vdXRBbm5vdGF0aW9ucyx0LG4pO2xldCBpPUVadChlLHQsbiR0Lk5vZGUuU0hBUEUpO3Qubm9kZS5pc0dyb3VwTm9kZSYmKGZ1bmN0aW9uIHIodCxlLG4pe2xldCBpPXMkdCh0LCJnIixuJHQuTm9kZS5CVVRUT05fQ09OVEFJTkVSKTtzJHQoaSwiY2lyY2xlIixuJHQuTm9kZS5CVVRUT05fQ0lSQ0xFKSxzJHQoaSwicGF0aCIsbiR0Lk5vZGUuRVhQQU5EX0JVVFRPTikuYXR0cigiZCIsIk0wLC0yLjIgVjIuMiBNLTIuMiwwIEgyLjIiKSxzJHQoaSwicGF0aCIsbiR0Lk5vZGUuQ09MTEFQU0VfQlVUVE9OKS5hdHRyKCJkIiwiTS0yLjIsMCBIMi4yIiksaS5vbigiY2xpY2siLCh0PT57TXUuc3RvcFByb3BhZ2F0aW9uKCksbi5maXJlKCJub2RlLXRvZ2dsZS1leHBhbmQiLHtuYW1lOnQubm9kZS5uYW1lfSl9KSksKGZ1bmN0aW9uIHIodCxlKXtsZXQgbj1ZS3QoZSkrKGUuZXhwYW5kZWQ/ZS53aWR0aDplLmNvcmVCb3gud2lkdGgpLzItNixpPWUueS0oZS5leHBhbmRlZD9lLmhlaWdodDplLmNvcmVCb3guaGVpZ2h0KS8yKzY7ZS5ub2RlLnR5cGUhPT1BJHQuU0VSSUVTfHxlLmV4cGFuZGVkfHwobis9MTAsaS09Mik7bGV0IHI9InRyYW5zbGF0ZSgiK24rIiwiK2krIikiO3Quc2VsZWN0QWxsKCJwYXRoIikudHJhbnNpdGlvbigpLmF0dHIoInRyYW5zZm9ybSIsciksdC5zZWxlY3QoImNpcmNsZSIpLnRyYW5zaXRpb24oKS5hdHRyKHtjeDpuLGN5OmkscjpVS3Qubm9kZVNpemUubWV0YS5leHBhbmRCdXR0b25SYWRpdXN9KX0pKGksZSl9KShpLHQsbiksX1p0KGksdCxuKSwoZnVuY3Rpb24gbyh0LGUsbil7aWYoZS5ub2RlLmlzR3JvdXBOb2RlKXtpZihlLmV4cGFuZGVkKXJldHVybiBCWnQodCxlLG4sbiR0LlN1YnNjZW5lLkdST1VQKTtLS3QodCwiZyIsbiR0LlN1YnNjZW5lLkdST1VQKS5yZW1vdmUoKX1yZXR1cm4gbnVsbH0pKGUsdCxuKSxfWnQoKGZ1bmN0aW9uIGEodCxlLG4pe2xldCBpPWUuZGlzcGxheU5hbWUscj1lLm5vZGUudHlwZT09PUEkdC5NRVRBJiYhZS5leHBhbmRlZCxvPXMkdCh0LCJ0ZXh0IixuJHQuTm9kZS5MQUJFTCksYT1vLm5vZGUoKTthLnBhcmVudE5vZGUuYXBwZW5kQ2hpbGQoYSksby5hdHRyKCJkeSIsIi4zNWVtIikuYXR0cigidGV4dC1hbmNob3IiLCJtaWRkbGUiKTtsZXQgcz04O3N3aXRjaChlLm5vZGUudHlwZSl7Y2FzZSBBJHQuTUVUQTpzPWUuZXhwYW5kZWQ/ciR0LkVYUEFOREVEX0xBQkVMOnIkdC5TRVJJRVNfTEFCRUw7YnJlYWs7Y2FzZSBBJHQuT1A6cz1yJHQuT1BfTEFCRUx9aWYocil7aS5sZW5ndGg+bi5tYXhNZXRhbm9kZUxhYmVsTGVuZ3RoJiYoaT1pLnN1YnN0cigwLG4ubWF4TWV0YW5vZGVMYWJlbExlbmd0aC0yKSsi4oCmIik7bGV0IHQ9KGZ1bmN0aW9uIGwodCl7U1p0fHwoU1p0PWNFKCkuZG9tYWluKFt0Lm1heE1ldGFub2RlTGFiZWxMZW5ndGhMYXJnZUZvbnQsdC5tYXhNZXRhbm9kZUxhYmVsTGVuZ3RoXSkucmFuZ2UoW3QubWF4TWV0YW5vZGVMYWJlbExlbmd0aEZvbnRTaXplLHQubWluTWV0YW5vZGVMYWJlbExlbmd0aEZvbnRTaXplXSkuY2xhbXAoITApKTtyZXR1cm4gU1p0fSkobik7by5hdHRyKCJmb250LXNpemUiLHQoaS5sZW5ndGgpKyJweCIpLHM9dChpLmxlbmd0aCl9cmV0dXJuIHdadChvLnRleHQoaSksZS5ub2RlLnR5cGUscyxlKSxvfSkoZSx0LG4pLHQsbix0Lm5vZGUudHlwZT09PUEkdC5NRVRBKSxMWnQoZSx0LG4pLChmdW5jdGlvbiBzKHQsZSl7bGV0IG49S0t0KHQsImciLG4kdC5Ob2RlLlNIQVBFKSxpPVlLdChlKTtzd2l0Y2goZS5ub2RlLnR5cGUpe2Nhc2UgQSR0Lk9QOntjb25zdCByPWUubm9kZTtpZihDZS5leHBvcnRzLmlzTnVtYmVyKHIuZnVuY3Rpb25JbnB1dEluZGV4KXx8Q2UuZXhwb3J0cy5pc051bWJlcihyLmZ1bmN0aW9uT3V0cHV0SW5kZXgpKXshKGZ1bmN0aW9uIHIodCxlLG4saSxvKXtjb25zdCBhPW8vMixzPWkvMixsPVtbZSxuLWFdLFtlK3MsbithXSxbZS1zLG4rYV1dO3QudHJhbnNpdGlvbigpLmF0dHIoInBvaW50cyIsbC5tYXAoKHQ9PnQuam9pbigiLCIpKSkuam9pbigiICIpKX0pKEtLdChuLCJwb2x5Z29uIiksZS54LGUueSxlLmNvcmVCb3gud2lkdGgsZS5jb3JlQm94LmhlaWdodCl9ZWxzZXtlWnQoS0t0KG4sImVsbGlwc2UiKSxpLGUueSxlLmNvcmVCb3gud2lkdGgsZS5jb3JlQm94LmhlaWdodCl9TVp0KHQsaSxlLnksZS5sYWJlbE9mZnNldCk7YnJlYWt9Y2FzZSBBJHQuTUVUQTp7bGV0IHI9bi5zZWxlY3RBbGwoInJlY3QiKTtlLmV4cGFuZGVkPyh0WnQocixlLngsZS55LGUud2lkdGgsZS5oZWlnaHQpLGdadCh0LGUpLE1adCh0LGksZS55LC1lLmhlaWdodC8yK2UubGFiZWxIZWlnaHQvMikpOih0WnQocixpLGUueSxlLmNvcmVCb3gud2lkdGgsZS5jb3JlQm94LmhlaWdodCksTVp0KHQsaSxlLnksMCkpO2JyZWFrfWNhc2UgQSR0LlNFUklFUzp7bGV0IHI9S0t0KG4sInVzZSIpO2UuZXhwYW5kZWQ/KHRadChyLGUueCxlLnksZS53aWR0aCxlLmhlaWdodCksZ1p0KHQsZSksTVp0KHQsaSxlLnksLWUuaGVpZ2h0LzIrZS5sYWJlbEhlaWdodC8yKSk6KHRadChyLGksZS55LGUuY29yZUJveC53aWR0aCxlLmNvcmVCb3guaGVpZ2h0KSxNWnQodCxpLGUueSxlLmxhYmVsT2Zmc2V0KSk7YnJlYWt9Y2FzZSBBJHQuQlJJREdFOnRadChLS3QobiwicmVjdCIpLGUueCxlLnksZS53aWR0aCxlLmhlaWdodCk7YnJlYWs7ZGVmYXVsdDp0aHJvdyBFcnJvcigiVW5yZWNvZ25pemVkIG5vZGUgdHlwZTogIitlLm5vZGUudHlwZSl9fSkoZSx0KX0pKSxpLmV4aXQoKS5lYWNoKChmdW5jdGlvbih0KXtuLnJlbW92ZU5vZGVHcm91cCh0Lm5vZGUubmFtZSk7bGV0IGU9RHUodGhpcyk7dC5pbkFubm90YXRpb25zLmxpc3QubGVuZ3RoPjAmJmUuc2VsZWN0KCIuIituJHQuQW5ub3RhdGlvbi5JTkJPWCkuc2VsZWN0QWxsKCIuIituJHQuQW5ub3RhdGlvbi5HUk9VUCkuZWFjaCgoZT0+e24ucmVtb3ZlQW5ub3RhdGlvbkdyb3VwKGUsdCl9KSksdC5vdXRBbm5vdGF0aW9ucy5saXN0Lmxlbmd0aD4wJiZlLnNlbGVjdCgiLiIrbiR0LkFubm90YXRpb24uT1VUQk9YKS5zZWxlY3RBbGwoIi4iK24kdC5Bbm5vdGF0aW9uLkdST1VQKS5lYWNoKChlPT57bi5yZW1vdmVBbm5vdGF0aW9uR3JvdXAoZSx0KX0pKX0pKS5yZW1vdmUoKSxpfWZ1bmN0aW9uIGdadCh0LGUpe2xldCBuPWUueC1lLndpZHRoLzIrZS5wYWRkaW5nTGVmdCxpPWUueS1lLmhlaWdodC8yK2UucGFkZGluZ1RvcDtRS3QoS0t0KHQsImciLG4kdC5TdWJzY2VuZS5HUk9VUCksbixpKX1mdW5jdGlvbiBfWnQodCxlLG4saSl7aWYoaSlyZXR1cm4gdm9pZCB0LmF0dHIoInBvaW50ZXItZXZlbnRzIiwibm9uZSIpO2xldCByPW9adChuLHladChlLm5vZGUsbikpO3Qub24oImRibGNsaWNrIiwodD0+e24uZmlyZSgibm9kZS10b2dnbGUtZXhwYW5kIix7bmFtZTp0Lm5vZGUubmFtZX0pfSkpLm9uKCJtb3VzZW92ZXIiLCh0PT57bi5pc05vZGVFeHBhbmRlZCh0KXx8bi5maXJlKCJub2RlLWhpZ2hsaWdodCIse25hbWU6dC5ub2RlLm5hbWV9KX0pKS5vbigibW91c2VvdXQiLCh0PT57bi5pc05vZGVFeHBhbmRlZCh0KXx8bi5maXJlKCJub2RlLXVuaGlnaGxpZ2h0Iix7bmFtZTp0Lm5vZGUubmFtZX0pfSkpLm9uKCJjbGljayIsKHQ9PntNdS5zdG9wUHJvcGFnYXRpb24oKSxuLmZpcmUoIm5vZGUtc2VsZWN0Iix7bmFtZTp0Lm5vZGUubmFtZX0pfSkpLm9uKCJjb250ZXh0bWVudSIsKCh0LGUpPT57bi5maXJlKCJub2RlLXNlbGVjdCIse25hbWU6dC5ub2RlLm5hbWV9KSxyLmNhbGwodCxlKX0pKX1mdW5jdGlvbiB5WnQodCxlKXtsZXQgbj1be3RpdGxlOmU9PkokdCh0LmluY2x1ZGUpLGFjdGlvbjoobixpLHIpPT57ZS5maXJlKCJub2RlLXRvZ2dsZS1leHRyYWN0Iix7bmFtZTp0Lm5hbWV9KX19XTtyZXR1cm4gZS5ub2RlQ29udGV4dE1lbnVJdGVtcyYmKG49bi5jb25jYXQoZS5ub2RlQ29udGV4dE1lbnVJdGVtcykpLHZadCh0KSYmbi5wdXNoKHt0aXRsZTplPT54WnQodCksYWN0aW9uOihuLGkscik9PntlLmZpcmUoIm5vZGUtdG9nZ2xlLXNlcmllc2dyb3VwIix7bmFtZTpiWnQodCl9KX19KSxufWZ1bmN0aW9uIHZadCh0KXtyZXR1cm4gbnVsbCE9PWJadCh0KX1mdW5jdGlvbiBiWnQodCl7aWYoIXQpcmV0dXJuIG51bGw7aWYodC50eXBlPT09QSR0LlNFUklFUylyZXR1cm4gdC5uYW1lO2lmKHQudHlwZT09PUEkdC5PUCl7cmV0dXJuIHQub3duaW5nU2VyaWVzfXJldHVybiBudWxsfWZ1bmN0aW9uIHhadCh0KXtyZXR1cm4oZnVuY3Rpb24gbih0KXtyZXR1cm4gdD09PUwkdC5HUk9VUD8iVW5ncm91cCB0aGlzIHNlcmllcyBvZiBub2RlcyI6Ikdyb3VwIHRoaXMgc2VyaWVzIG9mIG5vZGVzIn0pKG51bGwhPT0oZnVuY3Rpb24gZSh0KXtsZXQgZT1udWxsO3JldHVybiB0Pyh0LnR5cGU9PT1BJHQuU0VSSUVTP2U9dDp0LnBhcmVudE5vZGUmJnQucGFyZW50Tm9kZS50eXBlPT09QSR0LlNFUklFUyYmKGU9dC5wYXJlbnROb2RlKSxlKTpudWxsfSkodCk/TCR0LkdST1VQOkwkdC5VTkdST1VQKX1mdW5jdGlvbiB3WnQodCxlLG4saSl7bGV0IHI9dC5ub2RlKCksbz1yLnRleHRDb250ZW50LGE9bnVsbDtzd2l0Y2goZSl7Y2FzZSBBJHQuTUVUQTppJiYhaS5leHBhbmRlZCYmKGE9VUt0Lm5vZGVTaXplLm1ldGEubWF4TGFiZWxXaWR0aCk7YnJlYWs7Y2FzZSBBJHQuT1A6YT1VS3Qubm9kZVNpemUub3AubWF4TGFiZWxXaWR0aDticmVhaztjYXNlLTE6YT1VS3QuYW5ub3RhdGlvbnMubWF4TGFiZWxXaWR0aH1pZihudWxsIT09YSlyZXR1cm4gci50ZXh0Q29udGVudD0oZnVuY3Rpb24gcyh0LGUsbil7aWYoIXQpcmV0dXJuIiI7aWYoUyR0KHQsZSk8PW4pcmV0dXJuIHQ7bGV0IGk9MCxyPXQubGVuZ3RoO2Zvcig7aTxyOyl7Y29uc3Qgbz1pK01hdGgucm91bmQoKHItaSkvMik7UyR0KHQuc2xpY2UoMCxvKSsi4oCmIixlKTw9bj9pPW86cj1vLTF9cmV0dXJuIDA9PT1pP3RbMF06dC5zbGljZSgwLGkpKyLigKYifSkoci50ZXh0Q29udGVudCxuLGEpLHQuYXBwZW5kKCJ0aXRsZSIpLnRleHQobyl9bGV0IFNadD1udWxsO2Z1bmN0aW9uIE1adCh0LGUsbixpKXtLS3QodCwidGV4dCIsbiR0Lk5vZGUuTEFCRUwpLnRyYW5zaXRpb24oKS5hdHRyKCJ4IixlKS5hdHRyKCJ5IixuK2kpfWZ1bmN0aW9uIEVadCh0LGUsbil7bGV0IGk9cyR0KHQsImciLG4pO3N3aXRjaChlLm5vZGUudHlwZSl7Y2FzZSBBJHQuT1A6Y29uc3QgdD1lLm5vZGU7aWYoQ2UuZXhwb3J0cy5pc051bWJlcih0LmZ1bmN0aW9uSW5wdXRJbmRleCl8fENlLmV4cG9ydHMuaXNOdW1iZXIodC5mdW5jdGlvbk91dHB1dEluZGV4KSl7cyR0KGksInBvbHlnb24iLG4kdC5Ob2RlLkNPTE9SX1RBUkdFVCk7YnJlYWt9cyR0KGksImVsbGlwc2UiLG4kdC5Ob2RlLkNPTE9SX1RBUkdFVCk7YnJlYWs7Y2FzZSBBJHQuU0VSSUVTOmxldCBuPSJhbm5vdGF0aW9uIixyPWU7ci5jb3JlR3JhcGgmJihuPXIubm9kZS5oYXNOb25Db250cm9sRWRnZXM/InZlcnRpY2FsIjoiaG9yaXpvbnRhbCIpO2xldCBvPVtuJHQuTm9kZS5DT0xPUl9UQVJHRVRdO3IuaXNGYWRlZE91dCYmby5wdXNoKCJmYWRlZC1lbGxpcHNlIikscyR0KGksInVzZSIsbykuYXR0cigieGxpbms6aHJlZiIsIiNvcC1zZXJpZXMtIituKyItc3RhbXAiKSxzJHQoaSwicmVjdCIsbiR0Lk5vZGUuQ09MT1JfVEFSR0VUKS5hdHRyKCJyeCIsZS5yYWRpdXMpLmF0dHIoInJ5IixlLnJhZGl1cyk7YnJlYWs7Y2FzZSBBJHQuQlJJREdFOmNhc2UgQSR0Lk1FVEE6cyR0KGksInJlY3QiLG4kdC5Ob2RlLkNPTE9SX1RBUkdFVCkuYXR0cigicngiLGUucmFkaXVzKS5hdHRyKCJyeSIsZS5yYWRpdXMpO2JyZWFrO2RlZmF1bHQ6dGhyb3cgRXJyb3IoIlVucmVjb2duaXplZCBub2RlIHR5cGU6ICIrZS5ub2RlLnR5cGUpfXJldHVybiBpfWZ1bmN0aW9uIFRadCh0KXtzd2l0Y2godC5ub2RlLnR5cGUpe2Nhc2UgQSR0Lk9QOnJldHVybiBuJHQuT1BOT0RFO2Nhc2UgQSR0Lk1FVEE6cmV0dXJuIG4kdC5NRVRBTk9ERTtjYXNlIEEkdC5TRVJJRVM6cmV0dXJuIG4kdC5TRVJJRVNOT0RFO2Nhc2UgQSR0LkJSSURHRTpyZXR1cm4gbiR0LkJSSURHRU5PREU7Y2FzZSBBJHQuRUxMSVBTSVM6cmV0dXJuIG4kdC5FTExJUFNJU05PREV9dGhyb3cgRXJyb3IoIlVucmVjb2duaXplZCBub2RlIHR5cGU6ICIrdC5ub2RlLnR5cGUpfWZ1bmN0aW9uIENadCh0LGUsbil7bGV0IGk9KGZ1bmN0aW9uIHIodCl7cmV0dXJuIHQucmVwbGFjZSgvKFs6LlxbXF0sL1xcXChcKV0pL2csIlxcJDEiKX0pKHQpO2lmKCFuKXJldHVybmB1cmwoIyR7aX0pYDtsZXQgbz1EdShuKSxhPW8uc2VsZWN0KCJkZWZzI19ncmFwaC1ncmFkaWVudHMiKTthLmVtcHR5KCkmJihhPW8uYXBwZW5kKCJkZWZzIikuYXR0cigiaWQiLCJfZ3JhcGgtZ3JhZGllbnRzIikpO2xldCBzPWEuc2VsZWN0KCJsaW5lYXJHcmFkaWVudCMiK2kpO2lmKHMuZW1wdHkoKSl7cz1hLmFwcGVuZCgibGluZWFyR3JhZGllbnQiKS5hdHRyKCJpZCIsdCkscy5zZWxlY3RBbGwoIioiKS5yZW1vdmUoKTtsZXQgbj0wO0NlLmV4cG9ydHMuZWFjaChlLCh0PT57bGV0IGU9dC5jb2xvcjtzLmFwcGVuZCgic3RvcCIpLmF0dHIoIm9mZnNldCIsbikuYXR0cigic3RvcC1jb2xvciIsZSkscy5hcHBlbmQoInN0b3AiKS5hdHRyKCJvZmZzZXQiLG4rdC5wcm9wb3J0aW9uKS5hdHRyKCJzdG9wLWNvbG9yIixlKSxuKz10LnByb3BvcnRpb259KSl9cmV0dXJuYHVybCgjJHtpfSlgfWZ1bmN0aW9uIEFadCh0KXtEdSh0KS5zZWxlY3QoImRlZnMjX2dyYXBoLWdyYWRpZW50cyIpLnJlbW92ZSgpfWZ1bmN0aW9uIGtadCh0LGUsbixpLHIpe2xldCBvPWdLdDtzd2l0Y2godD10fHwoKCk9PjApLGUpe2Nhc2Ugclp0Lk5PTkU6Y2FzZSByWnQuU1RSVUNUVVJFOmlmKG4ubm9kZS50eXBlPT09QSR0Lk1FVEEpe2xldCByPW4ubm9kZS50ZW1wbGF0ZUlkO3JldHVybiBlPT09clp0LlNUUlVDVFVSRSYmbnVsbCE9PXI/by5TVFJVQ1RVUkVfUEFMRVRURSh0KHIpLGkpOm8uVU5LTk9XTn1yZXR1cm4gbi5ub2RlLnR5cGU9PT1BJHQuU0VSSUVTP2k/by5FWFBBTkRFRF9DT0xPUjoid2hpdGUiOm4ubm9kZS50eXBlPT09QSR0LkJSSURHRT9uLnN0cnVjdHVyYWw/IiNmMGUiOm4ubm9kZS5pbmJvdW5kPyIjMGVmIjoiI2ZlMCI6Q2UuZXhwb3J0cy5pc051bWJlcihuLm5vZGUuZnVuY3Rpb25JbnB1dEluZGV4KT8iIzc5NTU0OCI6Q2UuZXhwb3J0cy5pc051bWJlcihuLm5vZGUuZnVuY3Rpb25PdXRwdXRJbmRleCk/IiMwMDk2ODgiOiJ3aGl0ZSI7Y2FzZSByWnQuREVWSUNFOnJldHVybiBudWxsPT1uLmRldmljZUNvbG9ycz9vLlVOS05PV046aT9vLkVYUEFOREVEX0NPTE9SOkNadCgiZGV2aWNlLSIrbi5ub2RlLm5hbWUsbi5kZXZpY2VDb2xvcnMscik7Y2FzZSByWnQuWExBX0NMVVNURVI6cmV0dXJuIG51bGw9PW4ueGxhQ2x1c3RlckNvbG9ycz9vLlVOS05PV046aT9vLkVYUEFOREVEX0NPTE9SOkNadCgieGxhLSIrbi5ub2RlLm5hbWUsbi54bGFDbHVzdGVyQ29sb3JzLHIpO2Nhc2Ugclp0LkNPTVBVVEVfVElNRTpyZXR1cm4gaT9vLkVYUEFOREVEX0NPTE9SOm4uY29tcHV0ZVRpbWVDb2xvcnx8by5VTktOT1dOO2Nhc2Ugclp0Lk1FTU9SWTpyZXR1cm4gaT9vLkVYUEFOREVEX0NPTE9SOm4ubWVtb3J5Q29sb3J8fG8uVU5LTk9XTjtjYXNlIHJadC5PUF9DT01QQVRJQklMSVRZOnJldHVybiBudWxsPT1uLmNvbXBhdGliaWxpdHlDb2xvcnM/by5VTktOT1dOOmk/by5FWFBBTkRFRF9DT0xPUjpDWnQoIm9wLWNvbXBhdC0iK24ubm9kZS5uYW1lLG4uY29tcGF0aWJpbGl0eUNvbG9ycyxyKTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiVW5rbm93biBjYXNlIHRvIGNvbG9yIG5vZGVzIGJ5Iil9fWZ1bmN0aW9uIExadCh0LGUsbixpKXtpPWl8fG4kdC5Ob2RlLlNIQVBFO2NvbnN0IHI9bi5pc05vZGVIaWdobGlnaHRlZChlLm5vZGUubmFtZSksbz1uLmlzTm9kZVNlbGVjdGVkKGUubm9kZS5uYW1lKSxhPWUuaXNJbkV4dHJhY3R8fGUuaXNPdXRFeHRyYWN0fHxlLmlzTGlicmFyeUZ1bmN0aW9uLHM9ZS5leHBhbmRlZCYmaSE9PW4kdC5Bbm5vdGF0aW9uLk5PREUsbD1lLmlzRmFkZWRPdXQ7dC5jbGFzc2VkKCJoaWdobGlnaHRlZCIsciksdC5jbGFzc2VkKCJzZWxlY3RlZCIsbyksdC5jbGFzc2VkKCJleHRyYWN0IixhKSx0LmNsYXNzZWQoImV4cGFuZGVkIixzKSx0LmNsYXNzZWQoImZhZGVkIixsKTtjb25zdCBjPXQuc2VsZWN0KCIuIitpKyIgLiIrbiR0Lk5vZGUuQ09MT1JfVEFSR0VUKSx1PWtadChuLnRlbXBsYXRlSW5kZXgsbi5jb2xvckJ5LGUscyxuLmdldEdyYXBoU3ZnUm9vdCgpKTtjLnN0eWxlKCJmaWxsIix1KSxjLnN0eWxlKCJzdHJva2UiLG8/bnVsbDpQWnQodSkpfWZ1bmN0aW9uIFBadCh0KXtyZXR1cm4idXJsIj09PXQuc3Vic3RyaW5nKDAsMyk/Z0t0LkdSQURJRU5UX09VVExJTkU6bmQodCkuZGFya2VyKCkudG9TdHJpbmcoKX1mdW5jdGlvbiBOWnQodCxlLG4saSl7Y29uc3Qgcj1EdSh0KTtpZihyLnNlbGVjdEFsbCgiLmlucHV0LWhpZ2hsaWdodCIpLmNsYXNzZWQoImlucHV0LWhpZ2hsaWdodCIsITEpLHIuc2VsZWN0QWxsKCIubm9uLWlucHV0IikuY2xhc3NlZCgibm9uLWlucHV0IiwhMSksci5zZWxlY3RBbGwoIi5pbnB1dC1wYXJlbnQiKS5jbGFzc2VkKCJpbnB1dC1wYXJlbnQiLCExKSxyLnNlbGVjdEFsbCgiLmlucHV0LWNoaWxkIikuY2xhc3NlZCgiaW5wdXQtY2hpbGQiLCExKSxyLnNlbGVjdEFsbCgiLmlucHV0LWVkZ2UtaGlnaGxpZ2h0IikuY2xhc3NlZCgiaW5wdXQtZWRnZS1oaWdobGlnaHQiLCExKSxyLnNlbGVjdEFsbCgiLm5vbi1pbnB1dC1lZGdlLWhpZ2hsaWdodCIpLmNsYXNzZWQoIm5vbi1pbnB1dC1lZGdlLWhpZ2hsaWdodCIsITEpLHIuc2VsZWN0QWxsKCIuaW5wdXQtaGlnaGxpZ2h0LXNlbGVjdGVkIikuY2xhc3NlZCgiaW5wdXQtaGlnaGxpZ2h0LXNlbGVjdGVkIiwhMSksIWV8fCFpfHwhbilyZXR1cm47bGV0IG89SVp0KG4sZSksYT17fTtDZS5leHBvcnRzLmVhY2gobywoZnVuY3Rpb24obil7YT1SWnQodCxlLG4sYSl9KSk7bGV0IHM9T2JqZWN0LmtleXMoYSksbD0oZnVuY3Rpb24gYyh0LGUpe2xldCBuPXt9O3JldHVybiBDZS5leHBvcnRzLmVhY2goZSwoZnVuY3Rpb24oZSl7bGV0IGk9dC5nZXROb2RlQnlOYW1lKGUpLHI9T1p0KHQsaSk7bltyLm5hbWVdPXJ9KSksbn0pKGUscyk7IShmdW5jdGlvbiB1KHQsZSl7Q2UuZXhwb3J0cy5mb3JPd24oZSwoZnVuY3Rpb24oZSl7bGV0IG49ZTtmb3IoO24ubmFtZSE9PUUkdDspe2NvbnN0IGU9RHUodCkuc2VsZWN0KGAubm9kZVtkYXRhLW5hbWU9IiR7bi5uYW1lfSJdYCk7IWUubm9kZXMoKS5sZW5ndGh8fGUuY2xhc3NlZCgiaW5wdXQtaGlnaGxpZ2h0Iil8fGUuY2xhc3NlZCgic2VsZWN0ZWQiKXx8ZS5jbGFzc2VkKCJvcCIpfHxlLmNsYXNzZWQoImlucHV0LXBhcmVudCIsITApLG49bi5wYXJlbnROb2RlfX0pKX0pKHQsbCksci5zZWxlY3RBbGwoImcubm9kZTpub3QoLnNlbGVjdGVkKTpub3QoLmlucHV0LWhpZ2hsaWdodCk6bm90KC5pbnB1dC1wYXJlbnQpOm5vdCguaW5wdXQtY2hpbGRyZW4pIikuY2xhc3NlZCgibm9uLWlucHV0IiwhMCkuZWFjaCgoZnVuY3Rpb24odCl7ci5zZWxlY3RBbGwoYFtkYXRhLW5hbWU9IiR7dC5ub2RlLm5hbWV9Il1gKS5jbGFzc2VkKCJub24taW5wdXQiLCEwKX0pKSxyLnNlbGVjdEFsbCgiZy5lZGdlOm5vdCguaW5wdXQtZWRnZS1oaWdobGlnaHQpIikuY2xhc3NlZCgibm9uLWlucHV0LWVkZ2UtaGlnaGxpZ2h0IiwhMCl9ZnVuY3Rpb24gSVp0KHQsZSl7bGV0IG49W10saT1lLmdldE5vZGVCeU5hbWUodCk7aWYoaSBpbnN0YW5jZW9mIE8kdClyZXR1cm5baV0uY29uY2F0KGkuaW5FbWJlZGRpbmdzKTtsZXQgcj1pLm1ldGFncmFwaC5ub2RlcygpO3JldHVybiBDZS5leHBvcnRzLmVhY2gociwoZnVuY3Rpb24odCl7bj1uLmNvbmNhdChJWnQodCxlKSl9KSksbn1mdW5jdGlvbiBSWnQodCxlLG4saSl7aWYoaVtuLm5hbWVdKXJldHVybiBpO2lbbi5uYW1lXT0hMDtsZXQgcj1uLmlucHV0cyxvPU9adChlLG4pO0R1KHQpLnNlbGVjdChgLm5vZGVbZGF0YS1uYW1lPSIke28ubmFtZX0iXWApLmNsYXNzZWQoImlucHV0LWhpZ2hsaWdodCIsITApO2xldCBhPXt9O0NlLmV4cG9ydHMuZWFjaChyLChmdW5jdGlvbih0KXtsZXQgbj1lLmdldE5vZGVCeU5hbWUodC5uYW1lKTtpZih2b2lkIDA9PT1uKXJldHVybjtpZihuIGluc3RhbmNlb2YgRCR0KXtsZXQgdD0kJHQobi5uYW1lKTtuPWUuZ2V0Tm9kZUJ5TmFtZSh0KX1sZXQgaT1PWnQoZSxuKSxyPWFbaS5uYW1lXTtyP3Iub3BOb2Rlcy5wdXNoKG4pOmFbaS5uYW1lXT17dmlzaWJsZVBhcmVudDppLG9wTm9kZXM6W25dfX0pKTtsZXQgcz17fSxsPVtvXTtzW28ubmFtZV09e3RyYWNlZDohMSxpbmRleDowLGNvbm5lY3Rpb25FbmRwb2ludHM6W119O2xldCBjPW87Zm9yKGxldCB0PTE7Yy5uYW1lIT09RSR0O3QrKyljPWMucGFyZW50Tm9kZSxzW2MubmFtZV09e3RyYWNlZDohMSxpbmRleDp0LGNvbm5lY3Rpb25FbmRwb2ludHM6W119LGxbdF09YztyZXR1cm4gQ2UuZXhwb3J0cy5mb3JPd24oYSwoZnVuY3Rpb24obixyKXtsZXQgYT1uLnZpc2libGVQYXJlbnQ7Q2UuZXhwb3J0cy5lYWNoKG4ub3BOb2RlcywoZnVuY3Rpb24obil7aT1SWnQodCxlLG4saSl9KSksYS5uYW1lIT09by5uYW1lJiYoZnVuY3Rpb24gYyh0LGUsbixpKXtsZXQgcj1lLG89ZSxhPVtdO2Zvcig7IW5bci5uYW1lXTspby5uYW1lIT09ci5uYW1lJiZhLnB1c2goW28scl0pLG89cixyPXIucGFyZW50Tm9kZTtsZXQgcz1uW3IubmFtZV0uaW5kZXgsbD1pW01hdGgubWF4KHMtMSwwKV0ubmFtZSxjPWwsdT1vLm5hbWUsaD1vLm5hbWU7Y29uc3QgZD1EdSh0KTtkLnNlbGVjdEFsbChgW2RhdGEtZWRnZT0iJHtofS0tJHtsfSJdYCkuY2xhc3NlZCgiaW5wdXQtZWRnZS1oaWdobGlnaHQiLCEwKSxDZS5leHBvcnRzLmVhY2goYSwoZnVuY3Rpb24odCl7ZC5zZWxlY3RBbGwoYFtkYXRhLWVkZ2U9IiR7dFswXS5uYW1lfS0tJHtjfX5+JHt0WzFdLm5hbWV9fn5PVVQiXWApLmNsYXNzZWQoImlucHV0LWVkZ2UtaGlnaGxpZ2h0IiwhMCl9KSk7Zm9yKGxldCB0PTE7dDxzO3QrKyl7ZC5zZWxlY3RBbGwoYFtkYXRhLWVkZ2U9IiR7dX1+fiR7aVt0XS5uYW1lfX5+SU4tLSR7aVt0LTFdLm5hbWV9Il1gKS5jbGFzc2VkKCJpbnB1dC1lZGdlLWhpZ2hsaWdodCIsITApfX0pKHQsYSxzLGwpfSkpLGl9ZnVuY3Rpb24gT1p0KHQsZSl7bGV0IG49ITEsaT1lO2Zvcig7IW47KWlmKGk9KGU9aSkucGFyZW50Tm9kZSx2b2lkIDA9PT1pKW49ITA7ZWxzZXtsZXQgZT10LmdldFJlbmRlck5vZGVCeU5hbWUoaS5uYW1lKTtlJiYoZS5leHBhbmRlZHx8aSBpbnN0YW5jZW9mIE8kdCkmJihuPSEwKX1yZXR1cm4gZX1mdW5jdGlvbiB6WnQodCxlLG4saSl7bGV0IHI9dC5zZWxlY3RBbGwoKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2hpbGROb2Rlc30pKS5kYXRhKGUubGlzdCwodD0+dC5ub2RlLm5hbWUpKTtyZXR1cm4gci5lbnRlcigpLmFwcGVuZCgiZyIpLmF0dHIoImRhdGEtbmFtZSIsKHQ9PnQubm9kZS5uYW1lKSkuZWFjaCgoZnVuY3Rpb24odCl7bGV0IGU9RHUodGhpcyk7aS5hZGRBbm5vdGF0aW9uR3JvdXAodCxuLGUpO2xldCByPW4kdC5Bbm5vdGF0aW9uLkVER0Usbz10LnJlbmRlck1ldGFlZGdlSW5mbyYmdC5yZW5kZXJNZXRhZWRnZUluZm8ubWV0YWVkZ2U7byYmIW8ubnVtUmVndWxhckVkZ2VzJiYocis9IiAiK24kdC5Bbm5vdGF0aW9uLkNPTlRST0xfRURHRSksbyYmby5udW1SZWZFZGdlcyYmKHIrPSIgIituJHQuRWRnZS5SRUZfTElORSkscFp0KGUsdCxpLHIpLHQuYW5ub3RhdGlvblR5cGUhPT1MS3QuRUxMSVBTSVM/KCEoZnVuY3Rpb24gYSh0LGUpe2xldCBuPWUubm9kZS5uYW1lLnNwbGl0KCIvIik7cmV0dXJuIERadCh0LG5bbi5sZW5ndGgtMV0sZSxudWxsKX0pKGUsdCksKGZ1bmN0aW9uIHModCxlKXtpZihlLmFubm90YXRpb25UeXBlPT09TEt0LlNVTU1BUlkpe3MkdCh0LCJ1c2UiKS5hdHRyKCJjbGFzcyIsInN1bW1hcnkiKS5hdHRyKCJ4bGluazpocmVmIiwiI3N1bW1hcnktaWNvbiIpLmF0dHIoImN1cnNvciIsInBvaW50ZXIiKX1lbHNle3MkdChFWnQodCxlLG4kdC5Bbm5vdGF0aW9uLk5PREUpLCJ0aXRsZSIpLnRleHQoZS5ub2RlLm5hbWUpfX0pKGUsdCkpOkRadChlLHQubm9kZS5uYW1lLHQsbiR0LkFubm90YXRpb24uRUxMSVBTSVMpfSkpLm1lcmdlKHIpLmF0dHIoImNsYXNzIiwodD0+biR0LkFubm90YXRpb24uR1JPVVArIiAiKyhmdW5jdGlvbiBlKHQpe3JldHVybihMS3RbdF18fCIiKS50b0xvd2VyQ2FzZSgpfHxudWxsfSkodC5hbm5vdGF0aW9uVHlwZSkrIiAiK1RadCh0KSkpLmVhY2goKGZ1bmN0aW9uKHQpe2xldCBlPUR1KHRoaXMpOyEoZnVuY3Rpb24gcih0LGUsbixpKXtsZXQgcj1ZS3QoZSk7bi5yZW5kZXJOb2RlSW5mbyYmbi5hbm5vdGF0aW9uVHlwZSE9PUxLdC5FTExJUFNJUyYmTFp0KHQsbi5yZW5kZXJOb2RlSW5mbyxpLG4kdC5Bbm5vdGF0aW9uLk5PREUpO24uYW5ub3RhdGlvblR5cGU9PT1MS3QuU1VNTUFSWSYmKG4ud2lkdGgrPTEwKTt0LnNlbGVjdCgidGV4dC4iK24kdC5Bbm5vdGF0aW9uLkxBQkVMKS50cmFuc2l0aW9uKCkuYXR0cigieCIscituLmR4KyhuLmlzSW4/LTE6MSkqKG4ud2lkdGgvMituLmxhYmVsT2Zmc2V0KSkuYXR0cigieSIsZS55K24uZHkpLHQuc2VsZWN0KCJ1c2Uuc3VtbWFyeSIpLnRyYW5zaXRpb24oKS5hdHRyKCJ4IixyK24uZHgtMykuYXR0cigieSIsZS55K24uZHktNiksZVp0KHQuc2VsZWN0KCIuIituJHQuQW5ub3RhdGlvbi5OT0RFKyIgZWxsaXBzZSIpLHIrbi5keCxlLnkrbi5keSxuLndpZHRoLG4uaGVpZ2h0KSx0WnQodC5zZWxlY3QoIi4iK24kdC5Bbm5vdGF0aW9uLk5PREUrIiByZWN0IikscituLmR4LGUueStuLmR5LG4ud2lkdGgsbi5oZWlnaHQpLHRadCh0LnNlbGVjdCgiLiIrbiR0LkFubm90YXRpb24uTk9ERSsiIHVzZSIpLHIrbi5keCxlLnkrbi5keSxuLndpZHRoLG4uaGVpZ2h0KSx0LnNlbGVjdCgicGF0aC4iK24kdC5Bbm5vdGF0aW9uLkVER0UpLnRyYW5zaXRpb24oKS5hdHRyKCJkIiwodD0+e2xldCBuPXQucG9pbnRzLm1hcCgodD0+KHt4OnQuZHgrcix5OnQuZHkrZS55fSkpKTtyZXR1cm4gZlp0KG4pfSkpfSkoZSxuLHQsaSksdC5hbm5vdGF0aW9uVHlwZSE9PUxLdC5FTExJUFNJUyYmKGZ1bmN0aW9uIG8odCxlLG4saSl7dC5vbigibW91c2VvdmVyIiwodD0+e2kuZmlyZSgiYW5ub3RhdGlvbi1oaWdobGlnaHQiLHtuYW1lOnQubm9kZS5uYW1lLGhvc3ROYW1lOmUubm9kZS5uYW1lfSl9KSkub24oIm1vdXNlb3V0IiwodD0+e2kuZmlyZSgiYW5ub3RhdGlvbi11bmhpZ2hsaWdodCIse25hbWU6dC5ub2RlLm5hbWUsaG9zdE5hbWU6ZS5ub2RlLm5hbWV9KX0pKS5vbigiY2xpY2siLCh0PT57TXUuc3RvcFByb3BhZ2F0aW9uKCksaS5maXJlKCJhbm5vdGF0aW9uLXNlbGVjdCIse25hbWU6dC5ub2RlLm5hbWUsaG9zdE5hbWU6ZS5ub2RlLm5hbWV9KX0pKSxuLmFubm90YXRpb25UeXBlIT09TEt0LlNVTU1BUlkmJm4uYW5ub3RhdGlvblR5cGUhPT1MS3QuQ09OU1RBTlQmJnQub24oImNvbnRleHRtZW51IixvWnQoaSx5WnQobi5ub2RlLGkpKSl9KShlLG4sdCxpKX0pKSxyLmV4aXQoKS5lYWNoKChmdW5jdGlvbih0KXtpLnJlbW92ZUFubm90YXRpb25Hcm91cCh0LG4pfSkpLnJlbW92ZSgpLHJ9ZnVuY3Rpb24gRFp0KHQsZSxuLGkpe2xldCByPW4kdC5Bbm5vdGF0aW9uLkxBQkVMO3JldHVybiBpJiYocis9IiAiK2kpLHdadCh0LmFwcGVuZCgidGV4dCIpLmF0dHIoImNsYXNzIixyKS5hdHRyKCJkeSIsIi4zNWVtIikuYXR0cigidGV4dC1hbmNob3IiLG4uaXNJbj8iZW5kIjoic3RhcnQiKS50ZXh0KGUpLC0xLGkkdC5MQUJFTCl9ZnVuY3Rpb24gQlp0KHQsZSxuLGkpe2xldCByPWEkdCh0LCJnIixpPWl8fG4kdC5TY2VuZS5HUk9VUCkuZW1wdHkoKSxvPXMkdCh0LCJnIixpKSxhPXMkdChvLCJnIixuJHQuU2NlbmUuQ09SRSkscz1DZS5leHBvcnRzLnJlZHVjZShlLmNvcmVHcmFwaC5ub2RlcygpLCgodCxuKT0+e2xldCBpPWUuY29yZUdyYXBoLm5vZGUobik7cmV0dXJuIGkuZXhjbHVkZWR8fHQucHVzaChpKSx0fSksW10pO2lmKGUubm9kZS50eXBlPT09QSR0LlNFUklFUyYmcy5yZXZlcnNlKCksbFp0KGEsZS5jb3JlR3JhcGgsbiksbVp0KGEscyxuKSxlLmlzb2xhdGVkSW5FeHRyYWN0Lmxlbmd0aD4wKXttWnQocyR0KG8sImciLG4kdC5TY2VuZS5JTkVYVFJBQ1QpLGUuaXNvbGF0ZWRJbkV4dHJhY3Qsbil9ZWxzZSBhJHQobywiZyIsbiR0LlNjZW5lLklORVhUUkFDVCkucmVtb3ZlKCk7aWYoZS5pc29sYXRlZE91dEV4dHJhY3QubGVuZ3RoPjApe21adChzJHQobywiZyIsbiR0LlNjZW5lLk9VVEVYVFJBQ1QpLGUuaXNvbGF0ZWRPdXRFeHRyYWN0LG4pfWVsc2UgYSR0KG8sImciLG4kdC5TY2VuZS5PVVRFWFRSQUNUKS5yZW1vdmUoKTtpZihlLmxpYnJhcnlGdW5jdGlvbnNFeHRyYWN0Lmxlbmd0aD4wKXttWnQocyR0KG8sImciLG4kdC5TY2VuZS5GVU5DVElPTl9MSUJSQVJZKSxlLmxpYnJhcnlGdW5jdGlvbnNFeHRyYWN0LG4pfWVsc2UgYSR0KG8sImciLG4kdC5TY2VuZS5GVU5DVElPTl9MSUJSQVJZKS5yZW1vdmUoKTtyZXR1cm4oZnVuY3Rpb24gbCh0LGUpe2xldCBuPWUubm9kZS50eXBlPT09QSR0LlNFUklFUz8wOlVLdC5zdWJzY2VuZS5tZXRhLmxhYmVsSGVpZ2h0O1FLdChLS3QodCwiZyIsWkt0LlNjZW5lLkNPUkUpLDAsbik7bGV0IGk9ZS5pc29sYXRlZEluRXh0cmFjdC5sZW5ndGg+MCxyPWUuaXNvbGF0ZWRPdXRFeHRyYWN0Lmxlbmd0aD4wLG89ZS5saWJyYXJ5RnVuY3Rpb25zRXh0cmFjdC5sZW5ndGg+MCxhPVVLdC5zdWJzY2VuZS5tZXRhLmV4dHJhY3RYT2Zmc2V0LHM9MDtpZihpJiYocys9ZS5vdXRFeHRyYWN0Qm94LndpZHRoKSxyJiYocys9ZS5vdXRFeHRyYWN0Qm94LndpZHRoKSxpKXtsZXQgaT1lLmNvcmVCb3gud2lkdGg7aT1zPGpLdD9pLWpLdCtlLmluRXh0cmFjdEJveC53aWR0aC8yOmktZS5pbkV4dHJhY3RCb3gud2lkdGgvMi1lLm91dEV4dHJhY3RCb3gud2lkdGgtKHI/YTowKSxpPWktZS5saWJyYXJ5RnVuY3Rpb25zQm94LndpZHRoLShvP2E6MCksUUt0KEtLdCh0LCJnIixaS3QuU2NlbmUuSU5FWFRSQUNUKSxpLG4pfWlmKHIpe2xldCBpPWUuY29yZUJveC53aWR0aDtzPGpLdD9pPWktakt0K2Uub3V0RXh0cmFjdEJveC53aWR0aC8yOmktPWUub3V0RXh0cmFjdEJveC53aWR0aC8yLGk9aS1lLmxpYnJhcnlGdW5jdGlvbnNCb3gud2lkdGgtKG8/YTowKSxRS3QoS0t0KHQsImciLFpLdC5TY2VuZS5PVVRFWFRSQUNUKSxpLG4pfWlmKG8pe2xldCBpPWUuY29yZUJveC53aWR0aC1lLmxpYnJhcnlGdW5jdGlvbnNCb3gud2lkdGgvMjtRS3QoS0t0KHQsImciLFpLdC5TY2VuZS5GVU5DVElPTl9MSUJSQVJZKSxpLG4pfX0pKG8sZSksciYmby5hdHRyKCJvcGFjaXR5IiwwKS50cmFuc2l0aW9uKCkuYXR0cigib3BhY2l0eSIsMSksb31jbGFzcyBIWnR7Y29uc3RydWN0b3IodCxlLG4saSxyLG8pe3RoaXMuc3ZnPXQsdGhpcy5sYWJlbFBhZGRpbmc9byx0aGlzLnpvb21HPWUsdGhpcy5tYWluWm9vbT1uLHRoaXMubWF4V2FuZEg9cjtsZXQgYT1EdShpLnNoYWRvd1Jvb3QpLHM9YS5zZWxlY3QoInN2ZyIpLGw9cy5zZWxlY3QoInJlY3QiKTt0aGlzLnZpZXdwb2ludENvb3JkPXt4OjAseTowfTtsZXQgYz1JaCgpLnN1YmplY3QoT2JqZWN0KS5vbigiZHJhZyIsKHQ9Pnt0aGlzLnZpZXdwb2ludENvb3JkLng9TXUueCx0aGlzLnZpZXdwb2ludENvb3JkLnk9TXUueSx0aGlzLnVwZGF0ZVZpZXdwb2ludCgpfSkpO2wuZGF0dW0odGhpcy52aWV3cG9pbnRDb29yZCkuY2FsbChjKSxzLm9uKCJjbGljayIsKCgpPT57aWYoTXUuZGVmYXVsdFByZXZlbnRlZClyZXR1cm47bGV0IHQ9TnVtYmVyKGwuYXR0cigid2lkdGgiKSksZT1OdW1iZXIobC5hdHRyKCJoZWlnaHQiKSksbj1iaChzLm5vZGUoKSk7dGhpcy52aWV3cG9pbnRDb29yZC54PW5bMF0tdC8yLHRoaXMudmlld3BvaW50Q29vcmQueT1uWzFdLWUvMix0aGlzLnVwZGF0ZVZpZXdwb2ludCgpfSkpLHRoaXMudmlld3BvaW50PWwubm9kZSgpLHRoaXMubWluaW1hcFN2Zz1zLm5vZGUoKSx0aGlzLm1pbmltYXA9aSx0aGlzLmNhbnZhcz1hLnNlbGVjdCgiY2FudmFzLmZpcnN0Iikubm9kZSgpLHRoaXMuY2FudmFzQnVmZmVyPWEuc2VsZWN0KCJjYW52YXMuc2Vjb25kIikubm9kZSgpLHRoaXMuZG93bmxvYWRDYW52YXM9YS5zZWxlY3QoImNhbnZhcy5kb3dubG9hZCIpLm5vZGUoKSxEdSh0aGlzLmRvd25sb2FkQ2FudmFzKS5zdHlsZSgiZGlzcGxheSIsIm5vbmUiKSx0aGlzLnVwZGF0ZSgpfXVwZGF0ZVZpZXdwb2ludCgpe0R1KHRoaXMudmlld3BvaW50KS5hdHRyKCJ4Iix0aGlzLnZpZXdwb2ludENvb3JkLngpLmF0dHIoInkiLHRoaXMudmlld3BvaW50Q29vcmQueSk7bGV0IHQ9LXRoaXMudmlld3BvaW50Q29vcmQueCp0aGlzLnNjYWxlTWFpbi90aGlzLnNjYWxlTWluaW1hcCxlPS10aGlzLnZpZXdwb2ludENvb3JkLnkqdGhpcy5zY2FsZU1haW4vdGhpcy5zY2FsZU1pbmltYXA7RHUodGhpcy5zdmcpLmNhbGwodGhpcy5tYWluWm9vbS50cmFuc2Zvcm0scU4udHJhbnNsYXRlKHQsZSkuc2NhbGUodGhpcy5zY2FsZU1haW4pKX1nZXRJbWFnZUJsb2IoKXtyZXR1cm4gbmV3IFByb21pc2UoKHQ9Pnt0aGlzLmRvd25sb2FkQ2FudmFzLnRvQmxvYigoZT0+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+biYmZTxpKSxoPW4uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7Y29uc3QgZD1oLnRvcCtoLmhlaWdodC0xNTA7aWYodShsLngsYy54LGgubGVmdCxoLmxlZnQraC53aWR0aC0zMjApfHx1KGwueSxjLnksaC50b3AsZCkpe2xldCB0PWgubGVmdCtoLndpZHRoLzItKGwueCtjLngpLzIsZT1oLnRvcCtoLmhlaWdodC8yLShsLnkrYy55KS8yO2NvbnN0IGk9WU4obik7cmV0dXJuIER1KG4pLnRyYW5zaXRpb24oKS5kdXJhdGlvbig1MDApLmNhbGwoci50cmFuc2xhdGVCeSx0L2kuayxlL2kuayksITB9cmV0dXJuITF9KSh0LHRoaXMuJC5zdmcsMCx0aGlzLl96b29tKSYmKHRoaXMuX3pvb21lZD0hMCl9Z2V0R3JhcGhTdmdSb290KCl7cmV0dXJuIHRoaXMuJC5zdmd9Z2V0Q29udGV4dE1lbnUoKXtyZXR1cm4gdGhpcy4kLmNvbnRleHRNZW51fV9yZXNldFN0YXRlKCl7dGhpcy5fbm9kZUdyb3VwSW5kZXg9e30sdGhpcy5fYW5ub3RhdGlvbkdyb3VwSW5kZXg9e30sdGhpcy5fZWRnZUdyb3VwSW5kZXg9e30sdGhpcy5fdXBkYXRlTGFiZWxzKCExKSxEdSh0aGlzLiQuc3ZnKS5zZWxlY3QoIiNyb290Iikuc2VsZWN0QWxsKCIqIikucmVtb3ZlKCksQVp0KHRoaXMuJC5zdmcpfV9idWlsZCh0KXt0aGlzLnRlbXBsYXRlSW5kZXg9dC5oaWVyYXJjaHkuZ2V0VGVtcGxhdGVJbmRleCgpLGQkdCgidGYtZ3JhcGgtc2NlbmUgKGxheW91dCk6IixmdW5jdGlvbigpe0dLdCh0LnJvb3QpfS5iaW5kKHRoaXMpLEJBdC5SRU5ERVJfU0NFTkVfTEFZT1VUKSxkJHQoInRmLWdyYXBoLXNjZW5lIChidWlsZCBzY2VuZSk6IixmdW5jdGlvbigpe0JadChEdSh0aGlzLiQucm9vdCksdC5yb290LHRoaXMpLChmdW5jdGlvbiBlKHQsbil7RHUodCkub24oImNsaWNrIiwoKCk9PntuLmZpcmUoImdyYXBoLXNlbGVjdCIpfSkpfSkodGhpcy4kLnN2Zyx0aGlzKSx0aGlzLl91cGRhdGVJbnB1dFRyYWNlKCl9LmJpbmQodGhpcyksQkF0LlJFTkRFUl9TQ0VORV9CVUlMRF9TQ0VORSksc2V0VGltZW91dChmdW5jdGlvbigpe3RoaXMuX3VwZGF0ZUhlYWx0aFBpbGxzKHRoaXMubm9kZU5hbWVzVG9IZWFsdGhQaWxscyx0aGlzLmhlYWx0aFBpbGxTdGVwSW5kZXgpLHRoaXMubWluaW1hcC51cGRhdGUoKX0uYmluZCh0aGlzKSxVS3QuYW5pbWF0aW9uLmR1cmF0aW9uKX1yZWFkeSgpe3N1cGVyLnJlYWR5KCksdGhpcy5fem9vbT1uSSgpLm9uKCJlbmQiLGZ1bmN0aW9uKCl7dGhpcy5fem9vbVN0YXJ0Q29vcmRzJiYoTWF0aC5zcXJ0KE1hdGgucG93KHRoaXMuX3pvb21TdGFydENvb3Jkcy54LXRoaXMuX3pvb21UcmFuc2Zvcm0ueCwyKStNYXRoLnBvdyh0aGlzLl96b29tU3RhcnRDb29yZHMueS10aGlzLl96b29tVHJhbnNmb3JtLnksMikpPHRoaXMuX21heFpvb21EaXN0YW5jZUZvckNsaWNrP3RoaXMuX2ZpcmVFbmFibGVDbGljaygpOnNldFRpbWVvdXQodGhpcy5fZmlyZUVuYWJsZUNsaWNrLmJpbmQodGhpcyksNTApKTt0aGlzLl96b29tU3RhcnRDb29yZHM9bnVsbH0uYmluZCh0aGlzKSkub24oInpvb20iLGZ1bmN0aW9uKCl7dGhpcy5fem9vbVRyYW5zZm9ybT1NdS50cmFuc2Zvcm0sdGhpcy5fem9vbVN0YXJ0Q29vcmRzfHwodGhpcy5fem9vbVN0YXJ0Q29vcmRzPXRoaXMuX3pvb21UcmFuc2Zvcm0sdGhpcy5maXJlKCJkaXNhYmxlLWNsaWNrIikpLHRoaXMuX3pvb21lZD0hMCxEdSh0aGlzLiQucm9vdCkuYXR0cigidHJhbnNmb3JtIixNdS50cmFuc2Zvcm0pLHRoaXMubWluaW1hcC56b29tKE11LnRyYW5zZm9ybSl9LmJpbmQodGhpcykpLER1KHRoaXMuJC5zdmcpLmNhbGwodGhpcy5fem9vbSkub24oImRibGNsaWNrLnpvb20iLG51bGwpLER1KHdpbmRvdykub24oInJlc2l6ZSIsZnVuY3Rpb24oKXt0aGlzLm1pbmltYXAuem9vbSgpfS5iaW5kKHRoaXMpKSx0aGlzLm1pbmltYXA9dGhpcy4kLm1pbmltYXAuaW5pdCh0aGlzLiQuc3ZnLHRoaXMuJC5yb290LHRoaXMuX3pvb20sVUt0Lm1pbmltYXAuc2l6ZSxVS3Quc3Vic2NlbmUubWV0YS5sYWJlbEhlaWdodCl9YXR0YWNoZWQoKXt0aGlzLnNldCgiX2lzQXR0YWNoZWQiLCEwKX1kZXRhY2hlZCgpe3RoaXMuc2V0KCJfaXNBdHRhY2hlZCIsITEpfV9yZW5kZXJIaWVyYXJjaHlDaGFuZ2VkKCl7dmFyIHQ9dGhpcy5yZW5kZXJIaWVyYXJjaHk7dGhpcy5faGFzUmVuZGVySGllcmFyY2h5QmVlbkZpdE9uY2U9ITEsdGhpcy5fcmVzZXRTdGF0ZSgpLHRoaXMuX2J1aWxkKHQpfV9hbmltYXRlQW5kRml0KCl7IXRoaXMuX2hhc1JlbmRlckhpZXJhcmNoeUJlZW5GaXRPbmNlJiZ0aGlzLl9pc0F0dGFjaGVkJiZzZXRUaW1lb3V0KHRoaXMuZml0LmJpbmQodGhpcyksVUt0LmFuaW1hdGlvbi5kdXJhdGlvbil9X3VwZGF0ZUxhYmVscyh0KXt2YXIgZT10aGlzLiQkKCIudGl0bGUiKSxuPWUuc3R5bGUsaT10aGlzLiQkKCIuYXV4VGl0bGUiKSxyPWkuc3R5bGUsbz10aGlzLiQkKCIuZnVuY3Rpb25MaWJyYXJ5VGl0bGUiKS5zdHlsZTtjb25zdCBhPUR1KHRoaXMuJC5zdmcpO3ZhciBzPWEuc2VsZWN0KCIuIitaS3QuU2NlbmUuR1JPVVArIj4uIitaS3QuU2NlbmUuQ09SRSkubm9kZSgpO2lmKHQmJnMmJnRoaXMucHJvZ3Jlc3MmJjEwMD09PXRoaXMucHJvZ3Jlc3MudmFsdWUpe3ZhciBsPWEuc2VsZWN0KCIuIitaS3QuU2NlbmUuR1JPVVArIj4uIitaS3QuU2NlbmUuSU5FWFRSQUNUKS5ub2RlKCl8fGEuc2VsZWN0KCIuIitaS3QuU2NlbmUuR1JPVVArIj4uIitaS3QuU2NlbmUuT1VURVhUUkFDVCkubm9kZSgpLGM9cy5nZXRDVE0oKS5lLHU9bD9sLmdldENUTSgpLmU6bnVsbDtuLmRpc3BsYXk9ImlubGluZSIsbi5sZWZ0PWMrInB4IixudWxsIT09dSYmdSE9PWM/KHIuZGlzcGxheT0iaW5saW5lIix1PU1hdGgubWF4KGMrZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aCx1KSxyLmxlZnQ9dSsicHgiKTpyLmRpc3BsYXk9Im5vbmUiO2xldCB0PWEuc2VsZWN0KCIuIitaS3QuU2NlbmUuR1JPVVArIj4uIitaS3QuU2NlbmUuRlVOQ1RJT05fTElCUkFSWSkubm9kZSgpLGg9dD90LmdldENUTSgpLmU6bnVsbDtudWxsIT09aCYmaCE9PXU/KG8uZGlzcGxheT0iaW5saW5lIixoPU1hdGgubWF4KHUraS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aCxoKSxvLmxlZnQ9aCsicHgiKTpvLmRpc3BsYXk9Im5vbmUifWVsc2Ugbi5kaXNwbGF5PSJub25lIixyLmRpc3BsYXk9Im5vbmUiLG8uZGlzcGxheT0ibm9uZSJ9bm9kZUNvbG9yc0NoYW5nZWQoKXtudWxsIT10aGlzLnJlbmRlckhpZXJhcmNoeSYmKHRoaXMudGVtcGxhdGVJbmRleD10aGlzLnJlbmRlckhpZXJhcmNoeS5oaWVyYXJjaHkuZ2V0VGVtcGxhdGVJbmRleCgpLENlLmV4cG9ydHMuZWFjaCh0aGlzLl9ub2RlR3JvdXBJbmRleCwoKHQsZSk9Pnt0aGlzLl91cGRhdGVOb2RlU3RhdGUoZSl9KSksdGhpcy5taW5pbWFwLnVwZGF0ZSgpKX1maXQoKXt0aGlzLl9oYXNSZW5kZXJIaWVyYXJjaHlCZWVuRml0T25jZT0hMCwoZnVuY3Rpb24gdChlLG4saSxyKXtsZXQgbz1lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGE9bnVsbDt0cnl7aWYoYT1uLmdldEJCb3goKSwwPT09YS53aWR0aClyZXR1cm59Y2F0Y2godCl7cmV0dXJufWxldCBzPS45Kk1hdGgubWluKG8ud2lkdGgvYS53aWR0aCxvLmhlaWdodC9hLmhlaWdodCwyKSxsPVVLdC5ncmFwaDtjb25zdCBjPXFOLnNjYWxlKHMpLnRyYW5zbGF0ZShsLnBhZGRpbmcucGFkZGluZ0xlZnQsbC5wYWRkaW5nLnBhZGRpbmdUb3ApO0R1KGUpLnRyYW5zaXRpb24oKS5kdXJhdGlvbig1MDApLmNhbGwoaS50cmFuc2Zvcm0sYykub24oImVuZC5maXR0ZWQiLCgoKT0+e2kub24oImVuZC5maXR0ZWQiLG51bGwpLHIoKX0pKX0pKHRoaXMuJC5zdmcsdGhpcy4kLnJvb3QsdGhpcy5fem9vbSxmdW5jdGlvbigpe3RoaXMuX3pvb21lZD0hMX0uYmluZCh0aGlzKSl9Z2V0SW1hZ2VCbG9iKCl7cmV0dXJuIHRoaXMubWluaW1hcC5nZXRJbWFnZUJsb2IoKX1pc05vZGVTZWxlY3RlZCh0KXtyZXR1cm4gdD09PXRoaXMuc2VsZWN0ZWROb2RlfWlzTm9kZUhpZ2hsaWdodGVkKHQpe3JldHVybiB0PT09dGhpcy5oaWdobGlnaHRlZE5vZGV9YWRkQW5ub3RhdGlvbkdyb3VwKHQsZSxuKXt2YXIgaT10Lm5vZGUubmFtZTt0aGlzLl9hbm5vdGF0aW9uR3JvdXBJbmRleFtpXT10aGlzLl9hbm5vdGF0aW9uR3JvdXBJbmRleFtpXXx8e30sdGhpcy5fYW5ub3RhdGlvbkdyb3VwSW5kZXhbaV1bZS5ub2RlLm5hbWVdPW59Z2V0QW5ub3RhdGlvbkdyb3Vwc0luZGV4KHQpe3JldHVybiB0aGlzLl9hbm5vdGF0aW9uR3JvdXBJbmRleFt0XX1yZW1vdmVBbm5vdGF0aW9uR3JvdXAodCxlKXtkZWxldGUgdGhpcy5fYW5ub3RhdGlvbkdyb3VwSW5kZXhbdC5ub2RlLm5hbWVdW2Uubm9kZS5uYW1lXX1hZGROb2RlR3JvdXAodCxlKXt0aGlzLl9ub2RlR3JvdXBJbmRleFt0XT1lfWdldE5vZGVHcm91cCh0KXtyZXR1cm4gdGhpcy5fbm9kZUdyb3VwSW5kZXhbdF19cmVtb3ZlTm9kZUdyb3VwKHQpe2RlbGV0ZSB0aGlzLl9ub2RlR3JvdXBJbmRleFt0XX1hZGRFZGdlR3JvdXAodCxlKXt0aGlzLl9lZGdlR3JvdXBJbmRleFt0XT1lfWdldEVkZ2VHcm91cCh0KXtyZXR1cm4gdGhpcy5fZWRnZUdyb3VwSW5kZXhbdF19X3VwZGF0ZUhlYWx0aFBpbGxzKCl7IShmdW5jdGlvbiB0KGUsbixpKXtpZighbilyZXR1cm47bGV0IHI9MTtEdShlKS5zZWxlY3RBbGwoImcubm9kZXNoYXBlIikuZWFjaCgoZnVuY3Rpb24odCl7Y29uc3QgZT1uW3Qubm9kZS5uYW1lXTtpWnQodGhpcyxlP2VbaV06bnVsbCx0LHIrKyl9KSl9KSh0aGlzLiQuc3ZnLHRoaXMubm9kZU5hbWVzVG9IZWFsdGhQaWxscyx0aGlzLmhlYWx0aFBpbGxTdGVwSW5kZXgpfV91cGRhdGVOb2RlU3RhdGUodCl7dmFyIGU9dGhpcy5nZXROb2RlKHQpLG49dGhpcy5nZXROb2RlR3JvdXAodCk7KG4mJkxadChuLGUsdGhpcyksZS5ub2RlLnR5cGU9PT1BJHQuTUVUQSYmZS5ub2RlLmFzc29jaWF0ZWRGdW5jdGlvbiYmIWUuaXNMaWJyYXJ5RnVuY3Rpb24pJiZMWnQoRHUoIi4iK1pLdC5TY2VuZS5HUk9VUCsiPi4iK1pLdC5TY2VuZS5GVU5DVElPTl9MSUJSQVJZKycgZ1tkYXRhLW5hbWU9IicrKFQkdCtlLm5vZGUuYXNzb2NpYXRlZEZ1bmN0aW9uKSsnIl0nKSxlLHRoaXMpO3ZhciBpPXRoaXMuZ2V0QW5ub3RhdGlvbkdyb3Vwc0luZGV4KHQpO0NlLmV4cG9ydHMuZWFjaChpLCgodCxuKT0+e0xadCh0LGUsdGhpcyxaS3QuQW5ub3RhdGlvbi5OT0RFKX0pKX1fc2VsZWN0ZWROb2RlQ2hhbmdlZCh0LGUpe2lmKHQhPT1lJiYoZSYmdGhpcy5fdXBkYXRlTm9kZVN0YXRlKGUpLHQpKXt0aGlzLm1pbmltYXAudXBkYXRlKCk7Zm9yKHZhciBuLGk9dGhpcy5yZW5kZXJIaWVyYXJjaHkuaGllcmFyY2h5Lm5vZGUodCkscj1bXTtudWxsIT1pLnBhcmVudE5vZGUmJmkucGFyZW50Tm9kZS5uYW1lIT1FJHQ7KXIucHVzaCgoaT1pLnBhcmVudE5vZGUpLm5hbWUpO0NlLmV4cG9ydHMuZm9yRWFjaFJpZ2h0KHIsKHQ9Pnt0aGlzLnJlbmRlckhpZXJhcmNoeS5idWlsZFN1YmhpZXJhcmNoeSh0KTt2YXIgZT10aGlzLnJlbmRlckhpZXJhcmNoeS5nZXRSZW5kZXJOb2RlQnlOYW1lKHQpO2Uubm9kZS5pc0dyb3VwTm9kZSYmIWUuZXhwYW5kZWQmJihlLmV4cGFuZGVkPSEwLG58fChuPWUpKX0pKSxuJiYodGhpcy5zZXROb2RlRXhwYW5kZWQobiksdGhpcy5fem9vbWVkPSEwKSx0JiZ0aGlzLl91cGRhdGVOb2RlU3RhdGUodCksc2V0VGltZW91dCgoKCk9Pnt0aGlzLnBhblRvTm9kZSh0KX0pLFVLdC5hbmltYXRpb24uZHVyYXRpb24pfX1faGlnaGxpZ2h0ZWROb2RlQ2hhbmdlZCh0LGUpe3QhPT1lJiYodCYmdGhpcy5fdXBkYXRlTm9kZVN0YXRlKHQpLGUmJnRoaXMuX3VwZGF0ZU5vZGVTdGF0ZShlKSl9X29uWm9vbUNoYW5nZWQoKXt0aGlzLl91cGRhdGVMYWJlbHMoIXRoaXMuX3pvb21lZCl9X2ZpcmVFbmFibGVDbGljaygpe3RoaXMuZmlyZSgiZW5hYmxlLWNsaWNrIil9X3VwZGF0ZUlucHV0VHJhY2UoKXtOWnQodGhpcy5nZXRHcmFwaFN2Z1Jvb3QoKSx0aGlzLnJlbmRlckhpZXJhcmNoeSx0aGlzLnNlbGVjdGVkTm9kZSx0aGlzLnRyYWNlSW5wdXRzKX19O1VadC50ZW1wbGF0ZT1WWnQsdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsQUt0KV0sVVp0LnByb3RvdHlwZSwicmVuZGVySGllcmFyY2h5Iix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLFVadC5wcm90b3R5cGUsIm5hbWUiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sVVp0LnByb3RvdHlwZSwiY29sb3JCeSIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLFVadC5wcm90b3R5cGUsInRyYWNlSW5wdXRzIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sVVp0LnByb3RvdHlwZSwiX2hhc1JlbmRlckhpZXJhcmNoeUJlZW5GaXRPbmNlIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sVVp0LnByb3RvdHlwZSwiX2lzQXR0YWNoZWQiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sVVp0LnByb3RvdHlwZSwiX3pvb20iLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmcsb2JzZXJ2ZXI6Il9oaWdobGlnaHRlZE5vZGVDaGFuZ2VkIn0pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxVWnQucHJvdG90eXBlLCJoaWdobGlnaHRlZE5vZGUiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmcsb2JzZXJ2ZXI6Il9zZWxlY3RlZE5vZGVDaGFuZ2VkIn0pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxVWnQucHJvdG90eXBlLCJzZWxlY3RlZE5vZGUiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sVVp0LnByb3RvdHlwZSwiaGFuZGxlRWRnZVNlbGVjdGVkIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbixvYnNlcnZlcjoiX29uWm9vbUNoYW5nZWQifSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxVWnQucHJvdG90eXBlLCJfem9vbWVkIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLFVadC5wcm90b3R5cGUsIl96b29tU3RhcnRDb29yZHMiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sVVp0LnByb3RvdHlwZSwiX3pvb21UcmFuc2Zvcm0iLHZvaWQgMCksdChbbyh7dHlwZTpOdW1iZXJ9KSxlKCJkZXNpZ246dHlwZSIsTnVtYmVyKV0sVVp0LnByb3RvdHlwZSwiX21heFpvb21EaXN0YW5jZUZvckNsaWNrIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKV0sVVp0LnByb3RvdHlwZSwidGVtcGxhdGVJbmRleCIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxVWnQucHJvdG90eXBlLCJfbm9kZUdyb3VwSW5kZXgiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sVVp0LnByb3RvdHlwZSwiX2Fubm90YXRpb25Hcm91cEluZGV4Iix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLFVadC5wcm90b3R5cGUsIl9lZGdlR3JvdXBJbmRleCIsdm9pZCAwKSx0KFtvKHt0eXBlOk51bWJlcn0pLGUoImRlc2lnbjp0eXBlIixOdW1iZXIpXSxVWnQucHJvdG90eXBlLCJtYXhNZXRhbm9kZUxhYmVsTGVuZ3RoRm9udFNpemUiLHZvaWQgMCksdChbbyh7dHlwZTpOdW1iZXJ9KSxlKCJkZXNpZ246dHlwZSIsTnVtYmVyKV0sVVp0LnByb3RvdHlwZSwibWluTWV0YW5vZGVMYWJlbExlbmd0aEZvbnRTaXplIix2b2lkIDApLHQoW28oe3R5cGU6TnVtYmVyfSksZSgiZGVzaWduOnR5cGUiLE51bWJlcildLFVadC5wcm90b3R5cGUsIm1heE1ldGFub2RlTGFiZWxMZW5ndGhMYXJnZUZvbnQiLHZvaWQgMCksdChbbyh7dHlwZTpOdW1iZXJ9KSxlKCJkZXNpZ246dHlwZSIsTnVtYmVyKV0sVVp0LnByb3RvdHlwZSwibWF4TWV0YW5vZGVMYWJlbExlbmd0aCIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxVWnQucHJvdG90eXBlLCJwcm9ncmVzcyIsdm9pZCAwKSx0KFtvKHt0eXBlOkFycmF5fSksZSgiZGVzaWduOnR5cGUiLEFycmF5KV0sVVp0LnByb3RvdHlwZSwibm9kZUNvbnRleHRNZW51SXRlbXMiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sVVp0LnByb3RvdHlwZSwibm9kZU5hbWVzVG9IZWFsdGhQaWxscyIsdm9pZCAwKSx0KFtvKHt0eXBlOk51bWJlcn0pLGUoImRlc2lnbjp0eXBlIixOdW1iZXIpXSxVWnQucHJvdG90eXBlLCJoZWFsdGhQaWxsU3RlcEluZGV4Iix2b2lkIDApLHQoW2EoInJlbmRlckhpZXJhcmNoeSIpLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKSxlKCJkZXNpZ246cmV0dXJudHlwZSIsdm9pZCAwKV0sVVp0LnByb3RvdHlwZSwiX3JlbmRlckhpZXJhcmNoeUNoYW5nZWQiLG51bGwpLHQoW2EoIl9pc0F0dGFjaGVkIiwicmVuZGVySGllcmFyY2h5IiksZSgiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pLGUoImRlc2lnbjpyZXR1cm50eXBlIix2b2lkIDApXSxVWnQucHJvdG90eXBlLCJfYW5pbWF0ZUFuZEZpdCIsbnVsbCksdChbYSgiY29sb3JCeSIpLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKSxlKCJkZXNpZ246cmV0dXJudHlwZSIsdm9pZCAwKV0sVVp0LnByb3RvdHlwZSwibm9kZUNvbG9yc0NoYW5nZWQiLG51bGwpLHQoW2EoIm5vZGVOYW1lc1RvSGVhbHRoUGlsbHMiLCJoZWFsdGhQaWxsU3RlcEluZGV4IiksZSgiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pLGUoImRlc2lnbjpyZXR1cm50eXBlIix2b2lkIDApXSxVWnQucHJvdG90eXBlLCJfdXBkYXRlSGVhbHRoUGlsbHMiLG51bGwpLHQoW2EoInRyYWNlSW5wdXRzIiwic2VsZWN0ZWROb2RlIiksZSgiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pLGUoImRlc2lnbjpyZXR1cm50eXBlIix2b2lkIDApXSxVWnQucHJvdG90eXBlLCJfdXBkYXRlSW5wdXRUcmFjZSIsbnVsbCksVVp0PXQoW2koInRmLWdyYXBoLXNjZW5lIildLFVadCk7bGV0IGpadD1jbGFzcyBleHRlbmRzKGNyKHdlKSl7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMuX3JlbmRlckRlcHRoPTEsdGhpcy5fYWxsb3dHcmFwaFNlbGVjdD0hMCx0aGlzLmVkZ2VXaWR0aEZ1bmN0aW9uPSIiLHRoaXMuaGFuZGxlTm9kZVNlbGVjdGVkPSIiLHRoaXMuZWRnZUxhYmVsRnVuY3Rpb249IiIsdGhpcy5oYW5kbGVFZGdlU2VsZWN0ZWQ9IiJ9cGFuVG9Ob2RlKHQpe3RoaXMuJCQoInRmLWdyYXBoLXNjZW5lIikucGFuVG9Ob2RlKHQpfV9hdXRvRXh0cmFjdE5vZGVzQ2hhbmdlZCgpe3ZhciB0PXRoaXMuZ3JhcGhIaWVyYXJjaHk7aWYodCl7Zm9yKGNvbnN0IGUgb2YgT2JqZWN0LnZhbHVlcyh0LmdldE5vZGVNYXAoKSkpZS5pbmNsdWRlPWskdC5VTlNQRUNJRklFRDt0aGlzLl9idWlsZFJlbmRlckhpZXJhcmNoeSh0KX19X2J1aWxkTmV3UmVuZGVySGllcmFyY2h5KCl7dmFyIHQ9dGhpcy5ncmFwaEhpZXJhcmNoeTt0JiZ0aGlzLl9idWlsZFJlbmRlckhpZXJhcmNoeSh0KX1fc3RhdHNDaGFuZ2VkKCl7dmFyIHQ9dGhpcy5zdGF0cyxlPXRoaXMuZGV2aWNlc0ZvclN0YXRzO3RoaXMuZ3JhcGhIaWVyYXJjaHkmJih0JiZlJiYoIShmdW5jdGlvbiBuKHQsZSxpKXtDZS5leHBvcnRzLmVhY2godC5ub2RlcywodD0+e3Quc3RhdHM9bnVsbH0pKSxDZS5leHBvcnRzLmVhY2goZS5kZXZfc3RhdHMsKGU9PntpJiYhaVtlLmRldmljZV18fENlLmV4cG9ydHMuZWFjaChlLm5vZGVfc3RhdHMsKG49PntsZXQgaT1uLm5vZGVfbmFtZSBpbiB0Lm5vZGVzP24ubm9kZV9uYW1lOiQkdChuLm5vZGVfbmFtZSk7aWYoIShpIGluIHQubm9kZXMpKXJldHVybjtsZXQgcj0wO24ubWVtb3J5JiZDZS5leHBvcnRzLmVhY2gobi5tZW1vcnksKHQ9Pnt0LnRvdGFsX2J5dGVzJiYodC50b3RhbF9ieXRlcz4wP3IrPU51bWJlcih0LnRvdGFsX2J5dGVzKTpjb25zb2xlLmxvZygiaWdub3JpbmcgbmVnYXRpdmUgbWVtb3J5IGFsbG9jYXRpb24gZm9yICIraSkpfSkpO2xldCBvPW51bGw7bi5vdXRwdXQmJihvPUNlLmV4cG9ydHMubWFwKG4ub3V0cHV0LCh0PT5DZS5leHBvcnRzLm1hcCh0LnRlbnNvcl9kZXNjcmlwdGlvbi5zaGFwZS5kaW0sKHQ9Pk51bWJlcih0LnNpemUpKSkpKSksdC5ub2Rlc1tpXS5kZXZpY2U9ZS5kZXZpY2UsbnVsbD09dC5ub2Rlc1tpXS5zdGF0cyYmKHQubm9kZXNbaV0uc3RhdHM9bmV3IGwkdChvKSksdC5ub2Rlc1tpXS5zdGF0cy5hZGRCeXRlc0FsbG9jYXRpb24ociksbi5hbGxfZW5kX3JlbF9taWNyb3MmJihuLmFsbF9lbmRfcmVsX21pY3Jvcz4wP3Qubm9kZXNbaV0uc3RhdHMuYWRkRXhlY3V0aW9uVGltZShuLmFsbF9zdGFydF9taWNyb3Msbi5hbGxfc3RhcnRfbWljcm9zK24uYWxsX2VuZF9yZWxfbWljcm9zKTpjb25zb2xlLmxvZygiaWdub3JpbmcgbmVnYXRpdmUgcnVudGltZSBmb3IgIitpKSl9KSl9KSl9KSh0aGlzLmJhc2ljR3JhcGgsdCxlKSwoZnVuY3Rpb24gaSh0LGUpe2xldCBuPXt9LGk9e307Q2UuZXhwb3J0cy5lYWNoKHQucm9vdC5sZWF2ZXMoKSwoZT0+e2xldCByPXQubm9kZShlKTtudWxsIT1yLmRldmljZSYmKG5bci5kZXZpY2VdPSEwKSxudWxsIT1yLnhsYUNsdXN0ZXImJihpW3IueGxhQ2x1c3Rlcl09ITApfSkpLHQuZGV2aWNlcz1DZS5leHBvcnRzLmtleXMobiksdC54bGFDbHVzdGVycz1DZS5leHBvcnRzLmtleXMoaSksQ2UuZXhwb3J0cy5lYWNoKHQuZ2V0Tm9kZU1hcCgpLCgodCxlKT0+e3QuaXNHcm91cE5vZGUmJih0LnN0YXRzPW5ldyBsJHQobnVsbCksdC5kZXZpY2VIaXN0b2dyYW09e30pfSkpLENlLmV4cG9ydHMuZWFjaCh0LnJvb3QubGVhdmVzKCksKGU9PntsZXQgbj10Lm5vZGUoZSksaT1uO2Zvcig7bnVsbCE9aS5wYXJlbnROb2RlOyl7aWYobnVsbCE9bi5kZXZpY2Upe2xldCB0PWkucGFyZW50Tm9kZS5kZXZpY2VIaXN0b2dyYW07dFtuLmRldmljZV09KHRbbi5kZXZpY2VdfHwwKSsxfWlmKG51bGwhPW4ueGxhQ2x1c3Rlcil7bGV0IHQ9aS5wYXJlbnROb2RlLnhsYUNsdXN0ZXJIaXN0b2dyYW07dFtuLnhsYUNsdXN0ZXJdPSh0W24ueGxhQ2x1c3Rlcl18fDApKzF9bnVsbCE9bi5zdGF0cyYmaS5wYXJlbnROb2RlLnN0YXRzLmNvbWJpbmUobi5zdGF0cyksaT1pLnBhcmVudE5vZGV9fSkpfSkodGhpcy5ncmFwaEhpZXJhcmNoeSkpLHRoaXMuX2J1aWxkUmVuZGVySGllcmFyY2h5KHRoaXMuZ3JhcGhIaWVyYXJjaHkpKX1yZWFkeSgpe3N1cGVyLnJlYWR5KCksdGhpcy5hZGRFdmVudExpc3RlbmVyKCJncmFwaC1zZWxlY3QiLHRoaXMuX2dyYXBoU2VsZWN0ZWQuYmluZCh0aGlzKSksdGhpcy5hZGRFdmVudExpc3RlbmVyKCJkaXNhYmxlLWNsaWNrIix0aGlzLl9kaXNhYmxlQ2xpY2suYmluZCh0aGlzKSksdGhpcy5hZGRFdmVudExpc3RlbmVyKCJlbmFibGUtY2xpY2siLHRoaXMuX2VuYWJsZUNsaWNrLmJpbmQodGhpcykpLHRoaXMuYWRkRXZlbnRMaXN0ZW5lcigibm9kZS10b2dnbGUtZXhwYW5kIix0aGlzLl9ub2RlVG9nZ2xlRXhwYW5kLmJpbmQodGhpcykpLHRoaXMuYWRkRXZlbnRMaXN0ZW5lcigibm9kZS1zZWxlY3QiLHRoaXMuX25vZGVTZWxlY3RlZC5iaW5kKHRoaXMpKSx0aGlzLmFkZEV2ZW50TGlzdGVuZXIoIm5vZGUtaGlnaGxpZ2h0Iix0aGlzLl9ub2RlSGlnaGxpZ2h0ZWQuYmluZCh0aGlzKSksdGhpcy5hZGRFdmVudExpc3RlbmVyKCJub2RlLXVuaGlnaGxpZ2h0Iix0aGlzLl9ub2RlVW5oaWdobGlnaHRlZC5iaW5kKHRoaXMpKSx0aGlzLmFkZEV2ZW50TGlzdGVuZXIoIm5vZGUtdG9nZ2xlLWV4dHJhY3QiLHRoaXMuX25vZGVUb2dnbGVFeHRyYWN0LmJpbmQodGhpcykpLHRoaXMuYWRkRXZlbnRMaXN0ZW5lcigibm9kZS10b2dnbGUtc2VyaWVzZ3JvdXAiLHRoaXMuX25vZGVUb2dnbGVTZXJpZXNHcm91cC5iaW5kKHRoaXMpKSx0aGlzLmFkZEV2ZW50TGlzdGVuZXIoImVkZ2Utc2VsZWN0Iix0aGlzLl9lZGdlU2VsZWN0ZWQuYmluZCh0aGlzKSksdGhpcy5hZGRFdmVudExpc3RlbmVyKCJhbm5vdGF0aW9uLXNlbGVjdCIsdGhpcy5fbm9kZVNlbGVjdGVkLmJpbmQodGhpcykpLHRoaXMuYWRkRXZlbnRMaXN0ZW5lcigiYW5ub3RhdGlvbi1oaWdobGlnaHQiLHRoaXMuX25vZGVIaWdobGlnaHRlZC5iaW5kKHRoaXMpKSx0aGlzLmFkZEV2ZW50TGlzdGVuZXIoImFubm90YXRpb24tdW5oaWdobGlnaHQiLHRoaXMuX25vZGVVbmhpZ2hsaWdodGVkLmJpbmQodGhpcykpfV9idWlsZFJlbmRlckhpZXJhcmNoeSh0KXtpZih0LnJvb3QudHlwZSE9PUEkdC5NRVRBKXJldHVybjtjb25zdCBlPXRoaXMsbj1kJHQoIm5ldyB0Zl9ncmFwaF9yZW5kZXIuSGllcmFyY2h5IiwoKCk9Pntjb25zdCBuPW5ldyBBS3QodCwhIXRoaXMuc3RhdHMsdGhpcy5hdXRvRXh0cmFjdE5vZGVzKTtmdW5jdGlvbiBpKHQpe3JldHVybnttaW5WYWx1ZTp0LmRvbWFpbigpWzBdLG1heFZhbHVlOnQuZG9tYWluKClbMV0sc3RhcnRDb2xvcjp0LnJhbmdlKClbMF0sZW5kQ29sb3I6dC5yYW5nZSgpWzFdfX1yZXR1cm4gbi5lZGdlTGFiZWxGdW5jdGlvbj10aGlzLmVkZ2VMYWJlbEZ1bmN0aW9uLG4uZWRnZVdpZHRoRnVuY3Rpb249dGhpcy5lZGdlV2lkdGhGdW5jdGlvbixlLl9zZXRDb2xvckJ5UGFyYW1zKHtjb21wdXRlX3RpbWU6aShuLmNvbXB1dGVUaW1lU2NhbGUpLG1lbW9yeTppKG4ubWVtb3J5VXNhZ2VTY2FsZSksZGV2aWNlOkNlLmV4cG9ydHMubWFwKG4uZGV2aWNlQ29sb3JNYXAuZG9tYWluKCksKGZ1bmN0aW9uKHQpe3JldHVybntkZXZpY2U6dCxjb2xvcjpuLmRldmljZUNvbG9yTWFwKHQpfX0pKSx4bGFfY2x1c3RlcjpDZS5leHBvcnRzLm1hcChuLnhsYUNsdXN0ZXJDb2xvck1hcC5kb21haW4oKSwoZnVuY3Rpb24odCl7cmV0dXJue3hsYV9jbHVzdGVyOnQsY29sb3I6bi54bGFDbHVzdGVyQ29sb3JNYXAodCl9fSkpfSksbn0pLEJBdC5SRU5ERVJfQlVJTERfSElFUkFSQ0hZKTtlLl9zZXRSZW5kZXJIaWVyYXJjaHkobil9X2dldFZpc2libGUodCl7cmV0dXJuIHQ/dGhpcy5yZW5kZXJIaWVyYXJjaHkuZ2V0TmVhcmVzdFZpc2libGVBbmNlc3Rvcih0KTp0fWZpdCgpe3RoaXMuJC5zY2VuZS5maXQoKX1nZXRJbWFnZUJsb2IoKXtyZXR1cm4gdGhpcy4kLnNjZW5lLmdldEltYWdlQmxvYigpfV9ncmFwaENoYW5nZWQoKXt0aGlzLmdyYXBoSGllcmFyY2h5JiYodGhpcy5ncmFwaEhpZXJhcmNoeS5hZGRMaXN0ZW5lcihpS3QuVEVNUExBVEVTX1VQREFURUQsKCgpPT57dGhpcy4kLnNjZW5lLm5vZGVDb2xvcnNDaGFuZ2VkKCl9KSksdGhpcy5maXJlKCJncmFwaC1zZWxlY3QiKSl9X2dyYXBoU2VsZWN0ZWQodCl7dGhpcy5fYWxsb3dHcmFwaFNlbGVjdCYmKHRoaXMuc2V0KCJzZWxlY3RlZE5vZGUiLG51bGwpLHRoaXMuc2V0KCJzZWxlY3RlZEVkZ2UiLG51bGwpKSx0aGlzLl9hbGxvd0dyYXBoU2VsZWN0PSEwfV9kaXNhYmxlQ2xpY2sodCl7dGhpcy5fYWxsb3dHcmFwaFNlbGVjdD0hMX1fZW5hYmxlQ2xpY2sodCl7dGhpcy5fYWxsb3dHcmFwaFNlbGVjdD0hMH1fc2VsZWN0ZWROb2RlQ2hhbmdlZCgpe3RoaXMuaGFuZGxlTm9kZVNlbGVjdGVkJiZ0aGlzLmhhbmRsZU5vZGVTZWxlY3RlZCh0aGlzLnNlbGVjdGVkTm9kZSl9X3NlbGVjdGVkRWRnZUNoYW5nZWQoKXt2YXIgdD10aGlzLnNlbGVjdGVkRWRnZTt0aGlzLl9kZXNlbGVjdFByZXZpb3VzRWRnZSgpLHQmJih0aGlzLl9sYXN0U2VsZWN0ZWRFZGdlR3JvdXAuY2xhc3NlZChaS3QuRWRnZS5TRUxFQ1RFRCwhMCksdGhpcy5fdXBkYXRlTWFya2VyT2ZTZWxlY3RlZEVkZ2UodCkpLHRoaXMuaGFuZGxlRWRnZVNlbGVjdGVkJiZ0aGlzLmhhbmRsZUVkZ2VTZWxlY3RlZCh0KX1fbm9kZVNlbGVjdGVkKHQpe3RoaXMuX2FsbG93R3JhcGhTZWxlY3QmJnRoaXMuc2V0KCJzZWxlY3RlZE5vZGUiLHQuZGV0YWlsLm5hbWUpLHRoaXMuX2FsbG93R3JhcGhTZWxlY3Q9ITB9X2VkZ2VTZWxlY3RlZCh0KXt0aGlzLl9hbGxvd0dyYXBoU2VsZWN0JiYodGhpcy5zZXQoIl9sYXN0U2VsZWN0ZWRFZGdlR3JvdXAiLHQuZGV0YWlsLmVkZ2VHcm91cCksdGhpcy5zZXQoInNlbGVjdGVkRWRnZSIsdC5kZXRhaWwuZWRnZURhdGEpKSx0aGlzLl9hbGxvd0dyYXBoU2VsZWN0PSEwfV9ub2RlSGlnaGxpZ2h0ZWQodCl7dGhpcy5zZXQoImhpZ2hsaWdodGVkTm9kZSIsdC5kZXRhaWwubmFtZSl9X25vZGVVbmhpZ2hsaWdodGVkKHQpe3RoaXMuc2V0KCJoaWdobGlnaHRlZE5vZGUiLG51bGwpfV9ub2RlVG9nZ2xlRXhwYW5kKHQpe3RoaXMuX25vZGVTZWxlY3RlZCh0KTt2YXIgZT10LmRldGFpbC5uYW1lLG49dGhpcy5yZW5kZXJIaWVyYXJjaHkuZ2V0UmVuZGVyTm9kZUJ5TmFtZShlKTtuLm5vZGUudHlwZSE9PUEkdC5PUCYmKHRoaXMucmVuZGVySGllcmFyY2h5LmJ1aWxkU3ViaGllcmFyY2h5KGUpLG4uZXhwYW5kZWQ9IW4uZXhwYW5kZWQsdGhpcy5hc3luYygoZnVuY3Rpb24oKXt0aGlzLiQuc2NlbmUuc2V0Tm9kZUV4cGFuZGVkKG4pfSksNzUpLGgkdCh7YWN0aW9uSWQ6QkF0Lk5PREVfRVhQQU5TSU9OX1RPR0dMRUQsZXZlbnRMYWJlbDpuLmV4cGFuZGVkPyJleHBhbmRlZCI6ImNvbGxhcHNlZCJ9KSl9X25vZGVUb2dnbGVFeHRyYWN0KHQpe3RoaXMubm9kZVRvZ2dsZUV4dHJhY3QodC5kZXRhaWwubmFtZSl9bm9kZVRvZ2dsZUV4dHJhY3QodCl7Y29uc3QgZT10aGlzLnJlbmRlckhpZXJhcmNoeS5nZXRSZW5kZXJOb2RlQnlOYW1lKHQpO2Uubm9kZS5pbmNsdWRlPWUubm9kZS5pbmNsdWRlPT1rJHQuSU5DTFVERT9rJHQuRVhDTFVERTplLm5vZGUuaW5jbHVkZT09ayR0LkVYQ0xVREV8fHRoaXMucmVuZGVySGllcmFyY2h5LmlzTm9kZUF1eGlsaWFyeShlKT9rJHQuSU5DTFVERTprJHQuRVhDTFVERSx0aGlzLl9idWlsZFJlbmRlckhpZXJhcmNoeSh0aGlzLmdyYXBoSGllcmFyY2h5KSxoJHQoe2FjdGlvbklkOkJBdC5OT0RFX0FVWElMSUFSWV9FWFRSQUNUSU9OX0NIQU5HRUQsZXZlbnRMYWJlbDplLm5vZGUuaW5jbHVkZT09PWskdC5JTkNMVURFPyJBdXhpbGlhcnkgdG8gTWFpbiI6Ik1haW4gdG8gQXV4aWxpYXJ5In0pfV9ub2RlVG9nZ2xlU2VyaWVzR3JvdXAodCl7dGhpcy5ub2RlVG9nZ2xlU2VyaWVzR3JvdXAodC5kZXRhaWwubmFtZSl9bm9kZVRvZ2dsZVNlcmllc0dyb3VwKHQpe3RoaXMuc2V0KCJwcm9ncmVzcyIse3ZhbHVlOjAsbXNnOiIifSk7dmFyIGU9ZiR0KHAkdCh0aGlzKSwxMDAsIk5hbWVzcGFjZSBoaWVyYXJjaHkiKTtjb25zdCBuPU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0aGlzLmhpZXJhcmNoeVBhcmFtcykse3Nlcmllc01hcDp0aGlzLmdyYXBoSGllcmFyY2h5LmJ1aWxkU2VyaWVzR3JvdXBNYXBUb2dnbGVkKHQpfSk7c0t0KHRoaXMuYmFzaWNHcmFwaCxuLGUpLnRoZW4oZnVuY3Rpb24odCl7dGhpcy5zZXQoImdyYXBoSGllcmFyY2h5Iix0KSx0aGlzLl9idWlsZFJlbmRlckhpZXJhcmNoeSh0aGlzLmdyYXBoSGllcmFyY2h5KX0uYmluZCh0aGlzKSl9X2Rlc2VsZWN0UHJldmlvdXNFZGdlKCl7RHUoIi4iK1pLdC5FZGdlLlNFTEVDVEVEKS5jbGFzc2VkKFpLdC5FZGdlLlNFTEVDVEVELCExKS5lYWNoKCgodCxlKT0+e2lmKHQubGFiZWwpe2NvbnN0IGU9RHUodGhpcykuc2VsZWN0QWxsKCJwYXRoLmVkZ2VsaW5lIik7dC5sYWJlbC5zdGFydE1hcmtlcklkJiZlLnN0eWxlKCJtYXJrZXItc3RhcnQiLGB1cmwoIyR7dC5sYWJlbC5zdGFydE1hcmtlcklkfSlgKSx0LmxhYmVsLmVuZE1hcmtlcklkJiZlLnN0eWxlKCJtYXJrZXItZW5kIixgdXJsKCMke3QubGFiZWwuZW5kTWFya2VySWR9KWApfX0pKX1fdXBkYXRlTWFya2VyT2ZTZWxlY3RlZEVkZ2UodCl7aWYodC5sYWJlbCl7Y29uc3QgZT10LmxhYmVsLnN0YXJ0TWFya2VySWR8fHQubGFiZWwuZW5kTWFya2VySWQ7aWYoZSl7Y29uc3Qgbj1lLnJlcGxhY2UoImRhdGFmbG93LSIsInNlbGVjdGVkLSIpO2xldCBpPXRoaXMuJCQoIiMiK24pO2lmKCFpKXtjb25zdCB0PXRoaXMuJC5zY2VuZS5xdWVyeVNlbGVjdG9yKCIjIitlKTtpPXQuY2xvbmVOb2RlKCEwKSxpLnNldEF0dHJpYnV0ZSgiaWQiLG4pLGkuY2xhc3NMaXN0LmFkZCgic2VsZWN0ZWQtYXJyb3doZWFkIiksdC5wYXJlbnROb2RlLmFwcGVuZENoaWxkKGkpfWNvbnN0IHI9dC5sYWJlbC5zdGFydE1hcmtlcklkPyJtYXJrZXItc3RhcnQiOiJtYXJrZXItZW5kIjt0aGlzLl9sYXN0U2VsZWN0ZWRFZGdlR3JvdXAuc2VsZWN0QWxsKCJwYXRoLmVkZ2VsaW5lIikuc3R5bGUocixgdXJsKCMke259KWApfX19bm90KHQpe3JldHVybiF0fX07alp0LnRlbXBsYXRlPXhlYAogICAgPHN0eWxlPgogICAgICAuY29udGFpbmVyIHsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgYmFja2dyb3VuZDogd2hpdGU7CiAgICAgICAgYm94LXNoYWRvdzogMCAxcHggNXB4IHJnYmEoMCwgMCwgMCwgMC4yKTsKICAgICAgfQoKICAgICAgLnZlcnRpY2FsIHsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgQGFwcGx5IC0tbGF5b3V0LXZlcnRpY2FsOwogICAgICB9CgogICAgICAuYXV0byB7CiAgICAgICAgQGFwcGx5IC0tbGF5b3V0LWZsZXgtYXV0bzsKICAgICAgICBAYXBwbHkgLS1sYXlvdXQtdmVydGljYWw7CiAgICAgIH0KCiAgICAgIGgyIHsKICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgIH0KCiAgICAgIHBhcGVyLWJ1dHRvbiB7CiAgICAgICAgdGV4dC10cmFuc2Zvcm06IG5vbmU7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgICA8ZGl2IGNsYXNzPSJjb250YWluZXIiPgogICAgICA8ZGl2IGNsYXNzPSJ2ZXJ0aWNhbCI+CiAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW3RpdGxlXV0iPgogICAgICAgICAgPGgyPltbdGl0bGVdXTwvaDI+CiAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICA8dGYtZ3JhcGgtc2NlbmUKICAgICAgICAgIGlkPSJzY2VuZSIKICAgICAgICAgIGNsYXNzPSJhdXRvIgogICAgICAgICAgcmVuZGVyLWhpZXJhcmNoeT0iW1tyZW5kZXJIaWVyYXJjaHldXSIKICAgICAgICAgIGhpZ2hsaWdodGVkLW5vZGU9IltbX2dldFZpc2libGUoaGlnaGxpZ2h0ZWROb2RlKV1dIgogICAgICAgICAgc2VsZWN0ZWQtbm9kZT0ie3tzZWxlY3RlZE5vZGV9fSIKICAgICAgICAgIHNlbGVjdGVkLWVkZ2U9Int7c2VsZWN0ZWRFZGdlfX0iCiAgICAgICAgICBjb2xvci1ieT0iW1tjb2xvckJ5XV0iCiAgICAgICAgICBwcm9ncmVzcz0iW1twcm9ncmVzc11dIgogICAgICAgICAgbm9kZS1jb250ZXh0LW1lbnUtaXRlbXM9Iltbbm9kZUNvbnRleHRNZW51SXRlbXNdXSIKICAgICAgICAgIG5vZGUtbmFtZXMtdG8taGVhbHRoLXBpbGxzPSJbW25vZGVOYW1lc1RvSGVhbHRoUGlsbHNdXSIKICAgICAgICAgIGhlYWx0aC1waWxsLXN0ZXAtaW5kZXg9Int7aGVhbHRoUGlsbFN0ZXBJbmRleH19IgogICAgICAgICAgaGFuZGxlLWVkZ2Utc2VsZWN0ZWQ9IltbaGFuZGxlRWRnZVNlbGVjdGVkXV0iCiAgICAgICAgICB0cmFjZS1pbnB1dHM9IltbdHJhY2VJbnB1dHNdXSIKICAgICAgICA+PC90Zi1ncmFwaC1zY2VuZT4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICBgLHQoW28oe3R5cGU6T2JqZWN0LG5vdGlmeTohMCxvYnNlcnZlcjoiX2dyYXBoQ2hhbmdlZCJ9KSxlKCJkZXNpZ246dHlwZSIsckt0KV0salp0LnByb3RvdHlwZSwiZ3JhcGhIaWVyYXJjaHkiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsSSR0KV0salp0LnByb3RvdHlwZSwiYmFzaWNHcmFwaCIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxqWnQucHJvdG90eXBlLCJzdGF0cyIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxqWnQucHJvdG90eXBlLCJkZXZpY2VzRm9yU3RhdHMiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0salp0LnByb3RvdHlwZSwiaGllcmFyY2h5UGFyYW1zIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0LG5vdGlmeTohMH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxqWnQucHJvdG90eXBlLCJwcm9ncmVzcyIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxqWnQucHJvdG90eXBlLCJ0aXRsZSIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZyxub3RpZnk6ITB9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0salp0LnByb3RvdHlwZSwic2VsZWN0ZWROb2RlIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0LG5vdGlmeTohMH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxqWnQucHJvdG90eXBlLCJzZWxlY3RlZEVkZ2UiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0salp0LnByb3RvdHlwZSwiX2xhc3RTZWxlY3RlZEVkZ2VHcm91cCIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZyxub3RpZnk6ITB9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0salp0LnByb3RvdHlwZSwiaGlnaGxpZ2h0ZWROb2RlIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLGpadC5wcm90b3R5cGUsImNvbG9yQnkiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3Qsbm90aWZ5OiEwLHJlYWRPbmx5OiEwfSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLGpadC5wcm90b3R5cGUsImNvbG9yQnlQYXJhbXMiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3QscmVhZE9ubHk6ITAsbm90aWZ5OiEwfSksZSgiZGVzaWduOnR5cGUiLEFLdCldLGpadC5wcm90b3R5cGUsInJlbmRlckhpZXJhcmNoeSIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLGpadC5wcm90b3R5cGUsInRyYWNlSW5wdXRzIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0salp0LnByb3RvdHlwZSwiYXV0b0V4dHJhY3ROb2RlcyIsdm9pZCAwKSx0KFtvKHt0eXBlOkFycmF5fSksZSgiZGVzaWduOnR5cGUiLEFycmF5KV0salp0LnByb3RvdHlwZSwibm9kZUNvbnRleHRNZW51SXRlbXMiLHZvaWQgMCksdChbbyh7dHlwZTpOdW1iZXJ9KSxlKCJkZXNpZ246dHlwZSIsTnVtYmVyKV0salp0LnByb3RvdHlwZSwiX3JlbmRlckRlcHRoIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0salp0LnByb3RvdHlwZSwiX2FsbG93R3JhcGhTZWxlY3QiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0salp0LnByb3RvdHlwZSwibm9kZU5hbWVzVG9IZWFsdGhQaWxscyIsdm9pZCAwKSx0KFtvKHt0eXBlOk51bWJlcn0pLGUoImRlc2lnbjp0eXBlIixOdW1iZXIpXSxqWnQucHJvdG90eXBlLCJoZWFsdGhQaWxsU3RlcEluZGV4Iix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLGpadC5wcm90b3R5cGUsImVkZ2VXaWR0aEZ1bmN0aW9uIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLGpadC5wcm90b3R5cGUsImhhbmRsZU5vZGVTZWxlY3RlZCIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxqWnQucHJvdG90eXBlLCJlZGdlTGFiZWxGdW5jdGlvbiIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxqWnQucHJvdG90eXBlLCJoYW5kbGVFZGdlU2VsZWN0ZWQiLHZvaWQgMCksdChbYSgiYXV0b0V4dHJhY3ROb2RlcyIpLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKSxlKCJkZXNpZ246cmV0dXJudHlwZSIsdm9pZCAwKV0salp0LnByb3RvdHlwZSwiX2F1dG9FeHRyYWN0Tm9kZXNDaGFuZ2VkIixudWxsKSx0KFthKCJncmFwaEhpZXJhcmNoeSIsImVkZ2VXaWR0aEZ1bmN0aW9uIiwiaGFuZGxlTm9kZVNlbGVjdGVkIiwiZWRnZUxhYmVsRnVuY3Rpb24iLCJoYW5kbGVFZGdlU2VsZWN0ZWQiKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLGpadC5wcm90b3R5cGUsIl9idWlsZE5ld1JlbmRlckhpZXJhcmNoeSIsbnVsbCksdChbYSgic3RhdHMiLCJkZXZpY2VzRm9yU3RhdHMiKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLGpadC5wcm90b3R5cGUsIl9zdGF0c0NoYW5nZWQiLG51bGwpLHQoW2EoInNlbGVjdGVkTm9kZSIpLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKSxlKCJkZXNpZ246cmV0dXJudHlwZSIsdm9pZCAwKV0salp0LnByb3RvdHlwZSwiX3NlbGVjdGVkTm9kZUNoYW5nZWQiLG51bGwpLHQoW2EoInNlbGVjdGVkRWRnZSIpLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKSxlKCJkZXNpZ246cmV0dXJudHlwZSIsdm9pZCAwKV0salp0LnByb3RvdHlwZSwiX3NlbGVjdGVkRWRnZUNoYW5nZWQiLG51bGwpLGpadD10KFtpKCJ0Zi1ncmFwaCIpXSxqWnQpO2xldCBHWnQ9Y2xhc3MgZXh0ZW5kcyhjcih3ZSkpe2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLnNwZWNpZmljSGVhbHRoUGlsbFN0ZXA9MCx0aGlzLmhlYWx0aFBpbGxFbnRyaWVzPUpLdH1yZWFkeSgpe3N1cGVyLnJlYWR5KCk7dmFyIHQ9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm1haW5Db250YWluZXIiKSxlPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoInRmLWRhc2hib2FyZC1sYXlvdXQgLnNjcm9sbGJhciIpO3QmJmUmJih0LnN0eWxlLm92ZXJmbG93PSJoaWRkZW4iLGUuc3R5bGUub3ZlcmZsb3c9ImhpZGRlbiIpfV9oZWFsdGhQaWxsc0F2YWlsYWJsZSh0LGUpe3JldHVybiB0JiZlfV9jb21wdXRlVGVuc29yQ291bnRTdHJpbmcodCxlKXtyZXR1cm4gdD90W2VdLnRvRml4ZWQoMCk6IiJ9Z2V0IGhlYWx0aFBpbGxWYWx1ZXNGb3JTZWxlY3RlZE5vZGUoKXt2YXIgdD10aGlzLnNlbGVjdGVkTm9kZTtpZih0aGlzLmFyZUhlYWx0aFBpbGxzTG9hZGluZylyZXR1cm4gbnVsbDtpZighdClyZXR1cm4gbnVsbDtjb25zdCBlPXRoaXMubm9kZU5hbWVzVG9IZWFsdGhQaWxsc1t0XTtpZighZSlyZXR1cm4gbnVsbDtjb25zdCBuPWVbdGhpcy5hbGxTdGVwc01vZGVFbmFibGVkPzA6dGhpcy5oZWFsdGhQaWxsU3RlcEluZGV4XTtyZXR1cm4gbj9uLnZhbHVlLnNsaWNlKDIsOCk6bnVsbH1nZXQgX2N1cnJlbnRTdGVwRGlzcGxheVZhbHVlKCl7dmFyIHQ9dGhpcy5ub2RlTmFtZXNUb0hlYWx0aFBpbGxzLGU9dGhpcy5oZWFsdGhQaWxsU3RlcEluZGV4LG49dGhpcy5hcmVIZWFsdGhQaWxsc0xvYWRpbmc7aWYodGhpcy5hbGxTdGVwc01vZGVFbmFibGVkKXJldHVybiB0aGlzLnNwZWNpZmljSGVhbHRoUGlsbFN0ZXAudG9GaXhlZCgwKTtpZihuKXJldHVybiAwO2ZvcihsZXQgbiBpbiB0KXJldHVybiB0W25dW2VdLnN0ZXAudG9GaXhlZCgwKTtyZXR1cm4gMH1nZXQgX2JpZ2dlc3RTdGVwRXZlclNlZW4oKXt2YXIgdD10aGlzLm5vZGVOYW1lc1RvSGVhbHRoUGlsbHM7Zm9yKGxldCBuIGluIHQpe3ZhciBlPXRbbl07cmV0dXJuIE1hdGgubWF4KHRoaXMuX2JpZ2dlc3RTdGVwRXZlclNlZW4sZVtlLmxlbmd0aC0xXS5zdGVwKX1yZXR1cm4gdGhpcy5fYmlnZ2VzdFN0ZXBFdmVyU2Vlbnx8MH1nZXQgX21heFN0ZXBJbmRleCgpe3ZhciB0PXRoaXMubm9kZU5hbWVzVG9IZWFsdGhQaWxscztmb3IobGV0IGUgaW4gdClyZXR1cm4gdFtlXS5sZW5ndGgtMTtyZXR1cm4gMH1faGFzRGVidWdnZXJOdW1lcmljQWxlcnRzKHQpe3JldHVybiB0JiZ0Lmxlbmd0aH1fdXBkYXRlQWxlcnRzTGlzdCgpe3ZhciB0PXRoaXMuZGVidWdnZXJOdW1lcmljQWxlcnRzLGU9dGhpcy4kJCgiI251bWVyaWMtYWxlcnRzLWJvZHkiKTtpZihlKXtlLmlubmVyVGV4dD0iIjtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIGk9dFtuXSxyPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRyIiksbz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZCIpO28uaW5uZXJUZXh0PShmPWkuZmlyc3RfdGltZXN0YW1wLG09dm9pZCAwLChtPStuZXcgRGF0ZS0rbmV3IERhdGUoZi8xZTMpKTwzZTQ/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+CiAgICA8L3RlbXBsYXRlPgogIGAsdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0scVp0LnByb3RvdHlwZSwidHlwZSIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLHFadC5wcm90b3R5cGUsInZlcnRpY2FsIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLHFadC5wcm90b3R5cGUsImZpbGxPdmVycmlkZSIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxxWnQucHJvdG90eXBlLCJzdHJva2VPdmVycmlkZSIsdm9pZCAwKSx0KFtvKHt0eXBlOk51bWJlcn0pLGUoImRlc2lnbjp0eXBlIixOdW1iZXIpXSxxWnQucHJvdG90eXBlLCJoZWlnaHQiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxxWnQucHJvdG90eXBlLCJmYWRlZCIsdm9pZCAwKSx0KFtzKCJ0eXBlIiwiZmlsbE92ZXJyaWRlIiksZSgiZGVzaWduOnR5cGUiLFN0cmluZyksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0scVp0LnByb3RvdHlwZSwiX2ZpbGwiLG51bGwpLHQoW3MoInR5cGUiLCJzdHJva2VPdmVycmlkZSIpLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSldLHFadC5wcm90b3R5cGUsIl9zdHJva2UiLG51bGwpLHFadD10KFtpKCJ0Zi1ncmFwaC1pY29uIildLHFadCk7dmFyIFladD1PYmplY3QuZnJlZXplKHtfX3Byb3RvX186bnVsbCxnZXQgR3JhcGhJY29uVHlwZSgpe3JldHVybiBXWnR9fSk7bGV0IFhadD1jbGFzcyBleHRlbmRzKGNyKHdlKSl7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMubm9kZT1udWxsLHRoaXMucmVuZGVySW5mbz1udWxsLHRoaXMuY29sb3JCeT1yWnQuU1RSVUNUVVJFLHRoaXMudGVtcGxhdGVJbmRleD1udWxsLHRoaXMudHlwZT1udWxsLHRoaXMudmVydGljYWw9ITEsdGhpcy5jb25zdD0hMSx0aGlzLnN1bW1hcnk9ITEsdGhpcy5maWxsPW51bGwsdGhpcy5oZWlnaHQ9MjB9X2NvbXB1dGVGaWxsT3ZlcnJpZGUodCxlLG4saSxyKXtyZXR1cm4gdCYmZSYmaT9rWnQoaSxuLGUsITEpOnJ9X2dldFN0cm9rZU92ZXJyaWRlKHQpe3JldHVybiB0P1BadCh0KTpudWxsfV9nZXRUeXBlKHQsZSxuLGkpe2NvbnN0e0dyYXBoSWNvblR5cGU6cn09WVp0O2lmKHQpc3dpdGNoKHQudHlwZSl7Y2FzZSBBJHQuT1A6e2NvbnN0IGk9dC5vcDtyZXR1cm4ic3RyaW5nIiE9dHlwZW9mIGk/ci5PUDoiQ29uc3QiPT09aXx8bj9yLkNPTlNUOmkuZW5kc1dpdGgoIlN1bW1hcnkiKXx8ZT9yLlNVTU1BUlk6ci5PUH1jYXNlIEEkdC5NRVRBOnJldHVybiByLk1FVEE7Y2FzZSBBJHQuU0VSSUVTOnJldHVybiByLlNFUklFU31yZXR1cm4gaX1faXNWZXJ0aWNhbCh0LGUpe3JldHVybiB0P3QuaGFzTm9uQ29udHJvbEVkZ2VzOiEhZX1fZ2V0RmFkZWQodCl7cmV0dXJuIHQmJnQuaXNGYWRlZE91dH1fb25GaWxsT3ZlcnJpZGVDaGFuZ2VkKHQsZSl7Y29uc3R7bm9kZTpuLHJlbmRlckluZm86aSxjb2xvckJ5OnIsdGVtcGxhdGVJbmRleDpvfT10aGlzO3QhPT1lJiZBWnQodGhpcy4kLmljb24uZ2V0U3ZnRGVmaW5hYmxlRWxlbWVudCgpKSxuJiZpJiZvJiZrWnQobyxyLGksITEsdGhpcy4kLmljb24uZ2V0U3ZnRGVmaW5hYmxlRWxlbWVudCgpKX19O1hadC50ZW1wbGF0ZT14ZWAKICAgIDxzdHlsZT4KICAgICAgdGYtZ3JhcGgtaWNvbiB7CiAgICAgICAgLS10Yi1ncmFwaC1mYWRlZDogdmFyKC0tdGItZ3JhcGgtZmFkZWQpOwogICAgICB9CiAgICA8L3N0eWxlPgogICAgPHRmLWdyYXBoLWljb24KICAgICAgaWQ9Imljb24iCiAgICAgIHR5cGU9IltbX2dldFR5cGUobm9kZSwgc3VtbWFyeSwgY29uc3QsIHR5cGUpXV0iCiAgICAgIGhlaWdodD0iW1toZWlnaHRdXSIKICAgICAgZmlsbC1vdmVycmlkZT0iW1tfZmlsbE92ZXJyaWRlXV0iCiAgICAgIHN0cm9rZS1vdmVycmlkZT0iW1tfZ2V0U3Ryb2tlT3ZlcnJpZGUoX2ZpbGxPdmVycmlkZSldXSIKICAgICAgZmFkZWQ9IltbX2dldEZhZGVkKHJlbmRlckluZm8pXV0iCiAgICAgIHZlcnRpY2FsPSJbW19pc1ZlcnRpY2FsKG5vZGUsIHZlcnRpY2FsKV1dIgogICAgPjwvdGYtZ3JhcGgtaWNvbj4KICBgLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLFhadC5wcm90b3R5cGUsIm5vZGUiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sWFp0LnByb3RvdHlwZSwicmVuZGVySW5mbyIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxYWnQucHJvdG90eXBlLCJjb2xvckJ5Iix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKV0sWFp0LnByb3RvdHlwZSwidGVtcGxhdGVJbmRleCIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxYWnQucHJvdG90eXBlLCJ0eXBlIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sWFp0LnByb3RvdHlwZSwidmVydGljYWwiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxYWnQucHJvdG90eXBlLCJjb25zdCIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLFhadC5wcm90b3R5cGUsInN1bW1hcnkiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sWFp0LnByb3RvdHlwZSwiZmlsbCIsdm9pZCAwKSx0KFtvKHt0eXBlOk51bWJlcn0pLGUoImRlc2lnbjp0eXBlIixOdW1iZXIpXSxYWnQucHJvdG90eXBlLCJoZWlnaHQiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmcsY29tcHV0ZWQ6Il9jb21wdXRlRmlsbE92ZXJyaWRlKG5vZGUsIHJlbmRlckluZm8sIGNvbG9yQnksIHRlbXBsYXRlSW5kZXgsIGZpbGwpIixvYnNlcnZlcjoiX29uRmlsbE92ZXJyaWRlQ2hhbmdlZCJ9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sWFp0LnByb3RvdHlwZSwiX2ZpbGxPdmVycmlkZSIsdm9pZCAwKSxYWnQ9dChbaSgidGYtbm9kZS1pY29uIildLFhadCk7bGV0ICRadD1jbGFzcyBleHRlbmRzKGNyKHdlKSl7X2l0ZW1UeXBlQ2hhbmdlZCgpeyJzdWJub2RlIiE9PXRoaXMuaXRlbVR5cGU/dGhpcy4kWyJsaXN0LWl0ZW0iXS5jbGFzc0xpc3QuYWRkKCJjbGlja2FibGUiKTp0aGlzLiRbImxpc3QtaXRlbSJdLmNsYXNzTGlzdC5yZW1vdmUoImNsaWNrYWJsZSIpfV9ub2RlTGlzdGVuZXIodCl7dGhpcy5maXJlKCJub2RlLWxpc3QtaXRlbS0iK3QudHlwZSx7bm9kZU5hbWU6dGhpcy5uYW1lLHR5cGU6dGhpcy5pdGVtVHlwZX0pfV9mYWRlZENsYXNzKHQpe3JldHVybiB0JiZ0LmlzRmFkZWRPdXQ/ImZhZGVkIjoiIn19OyRadC50ZW1wbGF0ZT14ZWAKICAgIDxzdHlsZT4KICAgICAgI2xpc3QtaXRlbSB7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgY29sb3I6IHZhcigtLXNlY29uZGFyeS10ZXh0LWNvbG9yKTsKICAgICAgICBmb250LXNpemU6IDExcHQ7CiAgICAgICAgZm9udC13ZWlnaHQ6IDQwMDsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICB9CgogICAgICAjbGlzdC1pdGVtOmhvdmVyIHsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1nb29nbGUteWVsbG93LTEwMCk7CiAgICAgIH0KCiAgICAgIC5jbGlja2FibGUgewogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgfQoKICAgICAgI2xpc3QtaXRlbSBzcGFuIHsKICAgICAgICBtYXJnaW4tbGVmdDogNDBweDsKICAgICAgfQoKICAgICAgI2xpc3QtaXRlbS5leGNsdWRlZCBzcGFuIHsKICAgICAgICBjb2xvcjogIzk5OTsKICAgICAgfQoKICAgICAgI2xpc3QtaXRlbSBzcGFuLmVkZ2UtbGFiZWwgewogICAgICAgIGZsb2F0OiByaWdodDsKICAgICAgICBmb250LXNpemU6IDEwcHg7CiAgICAgICAgbWFyZ2luLWxlZnQ6IDNweDsKICAgICAgICBtYXJnaW4tcmlnaHQ6IDVweDsKICAgICAgfQoKICAgICAgLm5vZGUtaWNvbiB7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIHRvcDogMXB4OwogICAgICAgIGxlZnQ6IDJweDsKICAgICAgfQoKICAgICAgLmZhZGVkIHNwYW4gewogICAgICAgIGNvbG9yOiB2YXIoLS10Yi1ncmFwaC1mYWRlZCk7CiAgICAgIH0KICAgIDwvc3R5bGU+CgogICAgPGRpdgogICAgICBpZD0ibGlzdC1pdGVtIgogICAgICBvbi1tb3VzZW92ZXI9Il9ub2RlTGlzdGVuZXIiCiAgICAgIG9uLW1vdXNlb3V0PSJfbm9kZUxpc3RlbmVyIgogICAgICBvbi1jbGljaz0iX25vZGVMaXN0ZW5lciIKICAgID4KICAgICAgPGRpdiBjbGFzcyQ9Int7X2ZhZGVkQ2xhc3MoaXRlbVJlbmRlckluZm8pfX0iPgogICAgICAgIDx0Zi1ub2RlLWljb24KICAgICAgICAgIGNsYXNzPSJub2RlLWljb24iCiAgICAgICAgICBoZWlnaHQ9IjEyIgogICAgICAgICAgY29sb3ItYnk9IltbY29sb3JCeV1dIgogICAgICAgICAgY29sb3ItYnktcGFyYW1zPSJbW2NvbG9yQnlQYXJhbXNdXSIKICAgICAgICAgIG5vZGU9IltbaXRlbU5vZGVdXSIKICAgICAgICAgIHJlbmRlci1pbmZvPSJbW2l0ZW1SZW5kZXJJbmZvXV0iCiAgICAgICAgICB0ZW1wbGF0ZS1pbmRleD0iW1t0ZW1wbGF0ZUluZGV4XV0iCiAgICAgICAgPgogICAgICAgIDwvdGYtbm9kZS1pY29uPgogICAgICAgIDxzcGFuIHRpdGxlJD0iW1tuYW1lXV0iPltbbmFtZV1dPC9zcGFuPgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgogIGAsdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sJFp0LnByb3RvdHlwZSwiY2FyZE5vZGUiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sJFp0LnByb3RvdHlwZSwiaXRlbU5vZGUiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sJFp0LnByb3RvdHlwZSwiZWRnZUxhYmVsIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLCRadC5wcm90b3R5cGUsIml0ZW1SZW5kZXJJbmZvIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLCRadC5wcm90b3R5cGUsIm5hbWUiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmcsb2JzZXJ2ZXI6Il9pdGVtVHlwZUNoYW5nZWQifSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLCRadC5wcm90b3R5cGUsIml0ZW1UeXBlIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLCRadC5wcm90b3R5cGUsImNvbG9yQnkiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sJFp0LnByb3RvdHlwZSwiY29sb3JCeVBhcmFtcyIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbildLCRadC5wcm90b3R5cGUsInRlbXBsYXRlSW5kZXgiLHZvaWQgMCksJFp0PXQoW2koInRmLWdyYXBoLW9wLWNvbXBhdC1saXN0LWl0ZW0iKV0sJFp0KTtsZXQgS1p0PWNsYXNzIGV4dGVuZHMoY3IoZ2wod2UpKSl7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMuX2V4cGFuZGVkPSEwLHRoaXMuX29wQ29tcGF0Q29sb3I9Zkt0LHRoaXMuX29wSW5jb21wYXRDb2xvcj1tS3QsdGhpcy5fdGVtcGxhdGVJbmRleD1udWxsfV9nZXROb2RlKHQsZSl7cmV0dXJuIGUubm9kZSh0KX1fZ2V0UmVuZGVySW5mbyh0LGUpe3JldHVybiB0aGlzLnJlbmRlckhpZXJhcmNoeS5nZXRPckNyZWF0ZVJlbmRlck5vZGVCeU5hbWUodCl9X3RvZ2dsZUV4cGFuZGVkKCl7dGhpcy5fZXhwYW5kZWQ9IXRoaXMuX2V4cGFuZGVkfV9nZXRUb2dnbGVJY29uKHQpe3JldHVybiB0PyJleHBhbmQtbGVzcyI6ImV4cGFuZC1tb3JlIn1fcmVzaXplTGlzdCh0KXt2YXIgZT1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKHQpO2UmJmUuZmlyZSgiaXJvbi1yZXNpemUiKX1nZXQgX2luY29tcGF0aWJsZU9wTm9kZXMoKXtjb25zdCB0PXRoaXMuZ3JhcGhIaWVyYXJjaHk7cmV0dXJuIHQmJnQucm9vdD8odGhpcy5hc3luYyh0aGlzLl9yZXNpemVMaXN0LmJpbmQodGhpcywiI2luY29tcGF0aWJsZU9wc0xpc3QiKSksKGZ1bmN0aW9uIGUodCl7Y29uc3QgZT1bXSxuPXt9O3JldHVybiBDZS5leHBvcnRzLmVhY2godC5yb290LmxlYXZlcygpLChpPT57bGV0IHI9dC5ub2RlKGkpO2lmKHIudHlwZT09QSR0Lk9QKXtsZXQgaT1yO2lmKCFpLmNvbXBhdGlibGUpaWYoaS5vd25pbmdTZXJpZXMpe2lmKHQuZ2V0U2VyaWVzR3JvdXBUeXBlKGkub3duaW5nU2VyaWVzKT09PUwkdC5VTkdST1VQKWUucHVzaChpKTtlbHNlIGlmKCFuW2kub3duaW5nU2VyaWVzXSl7bGV0IHI9dC5ub2RlKGkub3duaW5nU2VyaWVzKTtyJiYobltpLm93bmluZ1Nlcmllc109cixlLnB1c2gocikpfX1lbHNlIGUucHVzaChpKTtDZS5leHBvcnRzLmVhY2goaS5pbkVtYmVkZGluZ3MsKHQ9Pnt0LmNvbXBhdGlibGV8fGUucHVzaCh0KX0pKSxDZS5leHBvcnRzLmVhY2goaS5vdXRFbWJlZGRpbmdzLCh0PT57dC5jb21wYXRpYmxlfHxlLnB1c2godCl9KSl9fSkpLGV9KSh0KSk6W119Z2V0IF9vcENvbXBhdFNjb3JlKCl7dmFyIHQ9dGhpcy5ncmFwaEhpZXJhcmNoeTtpZih0JiZ0LnJvb3Qpe3ZhciBlPXQucm9vdCxuPWUuY29tcGF0aWJpbGl0eUhpc3RvZ3JhbS5jb21wYXRpYmxlLGk9ZS5jb21wYXRpYmlsaXR5SGlzdG9ncmFtLmluY29tcGF0aWJsZTtyZXR1cm4gMD09biYmMD09aT8wOk1hdGguZmxvb3IoMTAwKm4vKG4raSkpLzEwMH1yZXR1cm4gMH1nZXQgX29wQ29tcGF0U2NvcmVMYWJlbCgpe3ZhciB0PXRoaXMuX29wQ29tcGF0U2NvcmU7cmV0dXJuIER5KCIuMCUiKSh0KX1nZXQgX3RvdGFsSW5jb21wYXRPcHMoKXt2YXIgdD10aGlzLmdyYXBoSGllcmFyY2h5O3JldHVybiB0JiZ0LnJvb3Q/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+CiAgICAgIDwvdGYtZ3JhcGgtZGVidWdnZXItZGF0YS1jYXJkPgogICAgPC90ZW1wbGF0ZT4KICBgLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLFFadC5wcm90b3R5cGUsInRpdGxlIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLHJLdCldLFFadC5wcm90b3R5cGUsImdyYXBoSGllcmFyY2h5Iix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLEkkdCldLFFadC5wcm90b3R5cGUsImdyYXBoIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLEFLdCldLFFadC5wcm90b3R5cGUsInJlbmRlckhpZXJhcmNoeSIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxRWnQucHJvdG90eXBlLCJub2RlTmFtZXNUb0hlYWx0aFBpbGxzIix2b2lkIDApLHQoW28oe3R5cGU6TnVtYmVyLG5vdGlmeTohMH0pLGUoImRlc2lnbjp0eXBlIixOdW1iZXIpXSxRWnQucHJvdG90eXBlLCJoZWFsdGhQaWxsU3RlcEluZGV4Iix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLFFadC5wcm90b3R5cGUsImNvbG9yQnkiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sUVp0LnByb3RvdHlwZSwiY29tcGF0Tm9kZVRpdGxlIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nLG5vdGlmeTohMH0pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxRWnQucHJvdG90eXBlLCJzZWxlY3RlZE5vZGUiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmcsbm90aWZ5OiEwfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLFFadC5wcm90b3R5cGUsImhpZ2hsaWdodGVkTm9kZSIsdm9pZCAwKSx0KFtvKHt0eXBlOk51bWJlcixub3RpZnk6ITB9KSxlKCJkZXNpZ246dHlwZSIsTnVtYmVyKV0sUVp0LnByb3RvdHlwZSwic2VsZWN0ZWROb2RlSW5jbHVkZSIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLFFadC5wcm90b3R5cGUsImRlYnVnZ2VyRGF0YUVuYWJsZWQiLHZvaWQgMCksUVp0PXQoW2koInRmLWdyYXBoLWluZm8iKV0sUVp0KTtjb25zdCB0SnQ9e01BWF9OT0RFX0NPVU5UOjFlNCxNQVhfRURHRV9DT1VOVDoxZTR9O2xldCBlSnQ9Y2xhc3MgZXh0ZW5kcyhjcih3ZSkpe2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLmhpZXJhcmNoeVBhcmFtcz1hS3QsdGhpcy5hbGxTdGVwc01vZGVFbmFibGVkPSExLHRoaXMuc3BlY2lmaWNIZWFsdGhQaWxsU3RlcD0wLHRoaXMuY29tcGF0Tm9kZVRpdGxlPSJUUFUgQ29tcGF0aWJpbGl0eSJ9Zml0KCl7dGhpcy4kLmdyYXBoLmZpdCgpfWRvd25sb2FkQXNJbWFnZSh0KXtyZXR1cm4gbih0aGlzLHZvaWQgMCx2b2lkIDAsKGZ1bmN0aW9uKigpe2NvbnN0IGU9eWllbGQgdGhpcy4kLmdyYXBoLmdldEltYWdlQmxvYigpLG49ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYSIpO24uaHJlZj1VUkwuY3JlYXRlT2JqZWN0VVJMKGUpLG4uZG93bmxvYWQ9dCxuLmNsaWNrKCksVVJMLnJldm9rZU9iamVjdFVSTChuLmhyZWYpfSkpfV9pc05vdENvbXBsZXRlKHQpe3JldHVybiB0LnZhbHVlPDEwMH1fZ2V0Q29udGFpbmVyQ2xhc3ModCl7dmFyIGU9ImNvbnRhaW5lciI7cmV0dXJuIHQuZXJyb3ImJihlKz0iIGVycm9yIiksdGhpcy5faXNOb3RDb21wbGV0ZSh0KSYmKGUrPSIgbG9hZGluZyIpLGV9X29uTm9kZUluY2x1c2lvblRvZ2dsZWQodCl7dGhpcy4kLmdyYXBoLm5vZGVUb2dnbGVFeHRyYWN0KHQuZGV0YWlsLm5hbWUpfV9vbk5vZGVTZXJpZXNHcm91cFRvZ2dsZWQodCl7dGhpcy4kLmdyYXBoLm5vZGVUb2dnbGVTZXJpZXNHcm91cCh0LmRldGFpbC5uYW1lKX1fdXBkYXRlTm9kZUluY2x1ZGUoKXtjb25zdCB0PXRoaXMucmVuZGVySGllcmFyY2h5P3RoaXMucmVuZGVySGllcmFyY2h5LmdldE5vZGVCeU5hbWUodGhpcy5zZWxlY3RlZE5vZGUpOm51bGw7dGhpcy5fc2VsZWN0ZWROb2RlSW5jbHVkZT10P3QuaW5jbHVkZTprJHQuVU5TUEVDSUZJRUR9X3NsaW1HcmFwaENoYW5nZWQoKXtpZighdGhpcy5ncmFwaClyZXR1cm47Y29uc3R7TUFYX05PREVfQ09VTlQ6dCxNQVhfRURHRV9DT1VOVDplfT10SnQ7T2JqZWN0LmtleXModGhpcy5ncmFwaC5ub2RlcykubGVuZ3RoPnQmJnRoaXMuZ3JhcGguZWRnZXMubGVuZ3RoPmUmJnRoaXMuY29sb3JCeT09PXJadC5TVFJVQ1RVUkUmJih0aGlzLmNvbG9yQnk9clp0Lk5PTkUpfV9lbnN1cmVUZW1wbGF0ZXMoKXt0aGlzLmdyYXBoSGllcmFyY2h5JiZ0aGlzLmNvbG9yQnk9PT1yWnQuU1RSVUNUVVJFJiYodGhpcy5ncmFwaEhpZXJhcmNoeS5nZXRUZW1wbGF0ZUluZGV4KCl8fHRoaXMuZ3JhcGhIaWVyYXJjaHkudXBkYXRlVGVtcGxhdGVzKCkpfX07ZUp0LnRlbXBsYXRlPXhlYAogICAgPHN0eWxlPgogICAgICA6Omhvc3QgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICB9CgogICAgICAvZGVlcC8gLmNsb3NlIHsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgIGxlZnQ6IDE1cHg7CiAgICAgICAgYm90dG9tOiAxNXB4OwogICAgICB9CgogICAgICAuY29udGFpbmVyIHsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgb3BhY2l0eTogMTsKICAgICAgfQoKICAgICAgLmNvbnRhaW5lci5sb2FkaW5nIHsKICAgICAgICBjdXJzb3I6IHByb2dyZXNzOwogICAgICAgIG9wYWNpdHk6IDAuMTsKICAgICAgfQoKICAgICAgLmNvbnRhaW5lci5sb2FkaW5nLmVycm9yIHsKICAgICAgICBjdXJzb3I6IGF1dG87CiAgICAgIH0KCiAgICAgICNpbmZvIHsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgcmlnaHQ6IDVweDsKICAgICAgICB0b3A6IDVweDsKICAgICAgICBwYWRkaW5nOiAwcHg7CiAgICAgICAgbWF4LXdpZHRoOiAzODBweDsKICAgICAgICBtaW4td2lkdGg6IDMyMHB4OwogICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC45KTsKICAgICAgICBAYXBwbHkgLS1zaGFkb3ctZWxldmF0aW9uLTJkcDsKICAgICAgfQoKICAgICAgI21haW4gewogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgfQoKICAgICAgI3Byb2dyZXNzLWJhciB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIHRvcDogNDBweDsKICAgICAgICBsZWZ0OiAwOwogICAgICAgIGZvbnQtc2l6ZTogMTNweDsKICAgICAgfQoKICAgICAgI3Byb2dyZXNzLW1zZyB7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogNXB4OwogICAgICAgIHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKICAgICAgICB3aWR0aDogNDAwcHg7CiAgICAgIH0KCiAgICAgIHBhcGVyLXByb2dyZXNzIHsKICAgICAgICB3aWR0aDogNDAwcHg7CiAgICAgICAgLS1wYXBlci1wcm9ncmVzcy1oZWlnaHQ6IDZweDsKICAgICAgICAtLXBhcGVyLXByb2dyZXNzLWFjdGl2ZS1jb2xvcjogI2YzOTEzZTsKICAgICAgfQoKICAgICAgLmNvbnRleHQtbWVudSB7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIGRpc3BsYXk6IG5vbmU7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2UyZTJlMjsKICAgICAgICBib3JkZXItcmFkaXVzOiAycHg7CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIG1pbi13aWR0aDogMTUwcHg7CiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgI2Q0ZDRkNDsKICAgICAgfQoKICAgICAgL2RlZXAvIC5jb250ZXh0LW1lbnUgdWwgewogICAgICAgIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTsKICAgICAgICBtYXJnaW46IDA7CiAgICAgICAgcGFkZGluZzogMDsKICAgICAgICBjdXJzb3I6IGRlZmF1bHQ7CiAgICAgIH0KCiAgICAgIC9kZWVwLyAuY29udGV4dC1tZW51IHVsIGxpIHsKICAgICAgICBwYWRkaW5nOiA0cHggMTZweDsKICAgICAgfQoKICAgICAgL2RlZXAvIC5jb250ZXh0LW1lbnUgdWwgbGk6aG92ZXIgewogICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmMzkxM2U7CiAgICAgICAgY29sb3I6IHdoaXRlOwogICAgICB9CiAgICA8L3N0eWxlPgogICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19pc05vdENvbXBsZXRlKHByb2dyZXNzKV1dIj4KICAgICAgPGRpdiBpZD0icHJvZ3Jlc3MtYmFyIj4KICAgICAgICA8ZGl2IGlkPSJwcm9ncmVzcy1tc2ciPltbcHJvZ3Jlc3MubXNnXV08L2Rpdj4KICAgICAgICA8cGFwZXItcHJvZ3Jlc3MgdmFsdWU9IltbcHJvZ3Jlc3MudmFsdWVdXSI+PC9wYXBlci1wcm9ncmVzcz4KICAgICAgPC9kaXY+CiAgICA8L3RlbXBsYXRlPgogICAgPGRpdiBjbGFzcyQ9IltbX2dldENvbnRhaW5lckNsYXNzKHByb2dyZXNzKV1dIj4KICAgICAgPGRpdiBpZD0ibWFpbiI+CiAgICAgICAgPHRmLWdyYXBoCiAgICAgICAgICBpZD0iZ3JhcGgiCiAgICAgICAgICBncmFwaC1oaWVyYXJjaHk9Int7Z3JhcGhIaWVyYXJjaHl9fSIKICAgICAgICAgIGJhc2ljLWdyYXBoPSJbW2dyYXBoXV0iCiAgICAgICAgICBoaWVyYXJjaHktcGFyYW1zPSJbW2hpZXJhcmNoeVBhcmFtc11dIgogICAgICAgICAgcmVuZGVyLWhpZXJhcmNoeT0ie3tyZW5kZXJIaWVyYXJjaHl9fSIKICAgICAgICAgIGRldmljZXMtZm9yLXN0YXRzPSJbW2RldmljZXNGb3JTdGF0c11dIgogICAgICAgICAgc3RhdHM9Iltbc3RhdHNdXSIKICAgICAgICAgIHNlbGVjdGVkLW5vZGU9Int7c2VsZWN0ZWROb2RlfX0iCiAgICAgICAgICBoaWdobGlnaHRlZC1ub2RlPSJ7e19oaWdobGlnaHRlZE5vZGV9fSIKICAgICAgICAgIGNvbG9yLWJ5PSJbW2NvbG9yQnldXSIKICAgICAgICAgIGNvbG9yLWJ5LXBhcmFtcz0ie3tjb2xvckJ5UGFyYW1zfX0iCiAgICAgICAgICBwcm9ncmVzcz0ie3twcm9ncmVzc319IgogICAgICAgICAgZWRnZS1sYWJlbC1mdW5jdGlvbj0iW1tlZGdlTGFiZWxGdW5jdGlvbl1dIgogICAgICAgICAgZWRnZS13aWR0aC1mdW5jdGlvbj0iW1tlZGdlV2lkdGhGdW5jdGlvbl1dIgogICAgICAgICAgbm9kZS1uYW1lcy10by1oZWFsdGgtcGlsbHM9Iltbbm9kZU5hbWVzVG9IZWFsdGhQaWxsc11dIgogICAgICAgICAgaGVhbHRoLXBpbGwtc3RlcC1pbmRleD0iW1toZWFsdGhQaWxsU3RlcEluZGV4XV0iCiAgICAgICAgICBoYW5kbGUtbm9kZS1zZWxlY3RlZD0iW1toYW5kbGVOb2RlU2VsZWN0ZWRdXSIKICAgICAgICAgIGhhbmRsZS1lZGdlLXNlbGVjdGVkPSJbW2hhbmRsZUVkZ2VTZWxlY3RlZF1dIgogICAgICAgICAgdHJhY2UtaW5wdXRzPSJbW3RyYWNlSW5wdXRzXV0iCiAgICAgICAgICBhdXRvLWV4dHJhY3Qtbm9kZXM9IltbYXV0b0V4dHJhY3ROb2Rlc11dIgogICAgICAgID48L3RmLWdyYXBoPgogICAgICA8L2Rpdj4KICAgICAgPGRpdiBpZD0iaW5mbyI+CiAgICAgICAgPHRmLWdyYXBoLWluZm8KICAgICAgICAgIGlkPSJncmFwaC1pbmZvIgogICAgICAgICAgdGl0bGU9InNlbGVjdGVkIgogICAgICAgICAgZ3JhcGgtaGllcmFyY2h5PSJbW2dyYXBoSGllcmFyY2h5XV0iCiAgICAgICAgICByZW5kZXItaGllcmFyY2h5PSJbW3JlbmRlckhpZXJhcmNoeV1dIgogICAgICAgICAgZ3JhcGg9IltbZ3JhcGhdXSIKICAgICAgICAgIHNlbGVjdGVkLW5vZGU9Int7c2VsZWN0ZWROb2RlfX0iCiAgICAgICAgICBzZWxlY3RlZC1ub2RlLWluY2x1ZGU9Int7X3NlbGVjdGVkTm9kZUluY2x1ZGV9fSIKICAgICAgICAgIGhpZ2hsaWdodGVkLW5vZGU9Int7X2hpZ2hsaWdodGVkTm9kZX19IgogICAgICAgICAgY29sb3ItYnk9IltbY29sb3JCeV1dIgogICAgICAgICAgY29sb3ItYnktcGFyYW1zPSJbW2NvbG9yQnlQYXJhbXNdXSIKICAgICAgICAgIGRlYnVnZ2VyLWRhdGEtZW5hYmxlZD0iW1tkZWJ1Z2dlckRhdGFFbmFibGVkXV0iCiAgICAgICAgICBhcmUtaGVhbHRoLXBpbGxzLWxvYWRpbmc9IltbYXJlSGVhbHRoUGlsbHNMb2FkaW5nXV0iCiAgICAgICAgICBkZWJ1Z2dlci1udW1lcmljLWFsZXJ0cz0iW1tkZWJ1Z2dlck51bWVyaWNBbGVydHNdXSIKICAgICAgICAgIG5vZGUtbmFtZXMtdG8taGVhbHRoLXBpbGxzPSJbW25vZGVOYW1lc1RvSGVhbHRoUGlsbHNdXSIKICAgICAgICAgIGFsbC1zdGVwcy1tb2RlLWVuYWJsZWQ9Int7YWxsU3RlcHNNb2RlRW5hYmxlZH19IgogICAgICAgICAgc3BlY2lmaWMtaGVhbHRoLXBpbGwtc3RlcD0ie3tzcGVjaWZpY0hlYWx0aFBpbGxTdGVwfX0iCiAgICAgICAgICBoZWFsdGgtcGlsbC1zdGVwLWluZGV4PSJ7e2hlYWx0aFBpbGxTdGVwSW5kZXh9fSIKICAgICAgICAgIGNvbXBhdC1ub2RlLXRpdGxlPSJbW2NvbXBhdE5vZGVUaXRsZV1dIgogICAgICAgICAgb24tbm9kZS10b2dnbGUtaW5jbHVzaW9uPSJfb25Ob2RlSW5jbHVzaW9uVG9nZ2xlZCIKICAgICAgICAgIG9uLW5vZGUtdG9nZ2xlLXNlcmllc2dyb3VwPSJfb25Ob2RlU2VyaWVzR3JvdXBUb2dnbGVkIgogICAgICAgID48L3RmLWdyYXBoLWluZm8+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgYCx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixyS3QpXSxlSnQucHJvdG90eXBlLCJncmFwaEhpZXJhcmNoeSIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixJJHQpXSxlSnQucHJvdG90eXBlLCJncmFwaCIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxlSnQucHJvdG90eXBlLCJoaWVyYXJjaHlQYXJhbXMiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sZUp0LnByb3RvdHlwZSwic3RhdHMiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sZUp0LnByb3RvdHlwZSwicHJvZ3Jlc3MiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxlSnQucHJvdG90eXBlLCJ0cmFjZUlucHV0cyIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLGVKdC5wcm90b3R5cGUsImF1dG9FeHRyYWN0Tm9kZXMiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmcsbm90aWZ5OiEwfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLGVKdC5wcm90b3R5cGUsImNvbG9yQnkiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3Qsbm90aWZ5OiEwfSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLGVKdC5wcm90b3R5cGUsImNvbG9yQnlQYXJhbXMiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3Qsbm90aWZ5OiEwfSksZSgiZGVzaWduOnR5cGUiLEFLdCldLGVKdC5wcm90b3R5cGUsInJlbmRlckhpZXJhcmNoeSIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLGVKdC5wcm90b3R5cGUsImRlYnVnZ2VyRGF0YUVuYWJsZWQiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxlSnQucHJvdG90eXBlLCJhcmVIZWFsdGhQaWxsc0xvYWRpbmciLHZvaWQgMCksdChbbyh7dHlwZTpBcnJheSxub3RpZnk6ITB9KSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpXSxlSnQucHJvdG90eXBlLCJkZWJ1Z2dlck51bWVyaWNBbGVydHMiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sZUp0LnByb3RvdHlwZSwibm9kZU5hbWVzVG9IZWFsdGhQaWxscyIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW4sbm90aWZ5OiEwfSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxlSnQucHJvdG90eXBlLCJhbGxTdGVwc01vZGVFbmFibGVkIix2b2lkIDApLHQoW28oe3R5cGU6TnVtYmVyLG5vdGlmeTohMH0pLGUoImRlc2lnbjp0eXBlIixOdW1iZXIpXSxlSnQucHJvdG90eXBlLCJzcGVjaWZpY0hlYWx0aFBpbGxTdGVwIix2b2lkIDApLHQoW28oe3R5cGU6TnVtYmVyfSksZSgiZGVzaWduOnR5cGUiLE51bWJlcildLGVKdC5wcm90b3R5cGUsImhlYWx0aFBpbGxTdGVwSW5kZXgiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmcsbm90aWZ5OiEwfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLGVKdC5wcm90b3R5cGUsInNlbGVjdGVkTm9kZSIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxlSnQucHJvdG90eXBlLCJjb21wYXROb2RlVGl0bGUiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sZUp0LnByb3RvdHlwZSwiZWRnZVdpZHRoRnVuY3Rpb24iLHZvaWQgMCksdChbbyh7dHlwZTpOdW1iZXJ9KSxlKCJkZXNpZ246dHlwZSIsTnVtYmVyKV0sZUp0LnByb3RvdHlwZSwiX3NlbGVjdGVkTm9kZUluY2x1ZGUiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sZUp0LnByb3RvdHlwZSwiX2hpZ2hsaWdodGVkTm9kZSIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxlSnQucHJvdG90eXBlLCJoYW5kbGVOb2RlU2VsZWN0ZWQiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sZUp0LnByb3RvdHlwZSwiZWRnZUxhYmVsRnVuY3Rpb24iLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sZUp0LnByb3RvdHlwZSwiaGFuZGxlRWRnZVNlbGVjdGVkIix2b2lkIDApLHQoW2EoInNlbGVjdGVkTm9kZSIsInJlbmRlckhpZXJhcmNoeSIpLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKSxlKCJkZXNpZ246cmV0dXJudHlwZSIsdm9pZCAwKV0sZUp0LnByb3RvdHlwZSwiX3VwZGF0ZU5vZGVJbmNsdWRlIixudWxsKSx0KFthKCJncmFwaCIpLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKSxlKCJkZXNpZ246cmV0dXJudHlwZSIsdm9pZCAwKV0sZUp0LnByb3RvdHlwZSwiX3NsaW1HcmFwaENoYW5nZWQiLG51bGwpLHQoW2EoImNvbG9yQnkiLCJncmFwaEhpZXJhcmNoeSIpLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKSxlKCJkZXNpZ246cmV0dXJudHlwZSIsdm9pZCAwKV0sZUp0LnByb3RvdHlwZSwiX2Vuc3VyZVRlbXBsYXRlcyIsbnVsbCksZUp0PXQoW2koInRmLWdyYXBoLWJvYXJkIildLGVKdCk7Y2xhc3Mgbkp0e2lzTm90VHB1T3AodCl7cmV0dXJuLTEhPXQudG9Mb3dlckNhc2UoKS5zZWFyY2goImNwdToiKXx8KC0xIT10LnRvTG93ZXJDYXNlKCkuc2VhcmNoKCJncHU6Iil8fC0xPT10LnRvTG93ZXJDYXNlKCkuc2VhcmNoKCJ0cHUiKSl9b3BWYWxpZCh0KXtyZXR1cm4gMD09dC5uYW1lLnNlYXJjaChUJHQpfHwoIXQub3B8fCghKCF0LmRldmljZXx8IXRoaXMuaXNOb3RUcHVPcCh0LmRldmljZSkpfHwoISghdC5kZXZpY2V8fC0xPT10LmRldmljZS5zZWFyY2goIlRQVV9TWVNURU0iKSl8fENlLmV4cG9ydHMuaW5jbHVkZXMobkp0LldISVRFTElTVCx0Lm9wKSkpKX19bkp0LldISVRFTElTVD1bIkFicyIsIkFjb3MiLCJBY29zaCIsIkFkZCIsIkFkZE4iLCJBZGRWMiIsIkFkanVzdENvbnRyYXN0djIiLCJBZGp1c3RIdWUiLCJBZGp1c3RTYXR1cmF0aW9uIiwiQWxsIiwiQWxsVG9BbGwiLCJBbmdsZSIsIkFueSIsIkFwcHJveGltYXRlRXF1YWwiLCJBcmdNYXgiLCJBcmdNaW4iLCJBc2luIiwiQXNpbmgiLCJBc3NlcnQiLCJBc3NpZ25BZGRWYXJpYWJsZU9wIiwiQXNzaWduU3ViVmFyaWFibGVPcCIsIkFzc2lnblZhcmlhYmxlT3AiLCJBdGFuIiwiQXRhbjIiLCJBdGFuaCIsIkF2Z1Bvb2wiLCJBdmdQb29sM0QiLCJBdmdQb29sM0RHcmFkIiwiQXZnUG9vbEdyYWQiLCJCYXRjaE1hdE11bCIsIkJhdGNoTWF0TXVsVjIiLCJCYXRjaFRvU3BhY2UiLCJCYXRjaFRvU3BhY2VORCIsIkJlc3NlbEkwZSIsIkJlc3NlbEkxZSIsIkJldGFpbmMiLCJCaWFzQWRkIiwiQmlhc0FkZEdyYWQiLCJCaWFzQWRkVjEiLCJCaXRjYXN0IiwiQml0d2lzZUFuZCIsIkJpdHdpc2VPciIsIkJpdHdpc2VYb3IiLCJCcm9hZGNhc3RBcmdzIiwiQnJvYWRjYXN0R3JhZGllbnRBcmdzIiwiQnJvYWRjYXN0VG8iLCJCdWNrZXRpemUiLCJDYXNlIiwiQ2FzdCIsIkNlaWwiLCJDaGVja051bWVyaWNzIiwiQ2hvbGVza3kiLCJDbGlwQnlWYWx1ZSIsIkNvbGxlY3RpdmVQZXJtdXRlIiwiQ29sbGVjdGl2ZVJlZHVjZVYyIiwiQ29tcGxleCIsIkNvbXBsZXhBYnMiLCJDb25jYXQiLCJDb25jYXRPZmZzZXQiLCJDb25jYXRWMiIsIkNvbmoiLCJDb25qdWdhdGVUcmFuc3Bvc2UiLCJDb25zdCIsIkNvbnRyb2xUcmlnZ2VyIiwiQ29udjJEIiwiQ29udjJEQmFja3Byb3BGaWx0ZXIiLCJDb252MkRCYWNrcHJvcElucHV0IiwiQ29udjNEIiwiQ29udjNEQmFja3Byb3BGaWx0ZXJWMiIsIkNvbnYzREJhY2twcm9wSW5wdXRWMiIsIkNvcyIsIkNvc2giLCJDcm9zcyIsIkNyb3NzUmVwbGljYVN1bSIsIkN1bXByb2QiLCJDdW1zdW0iLCJEYXRhRm9ybWF0RGltTWFwIiwiRGF0YUZvcm1hdFZlY1Blcm11dGUiLCJEZXB0aFRvU3BhY2UiLCJEZXB0aHdpc2VDb252MmROYXRpdmUiLCJEZXB0aHdpc2VDb252MmROYXRpdmVCYWNrcHJvcEZpbHRlciIsIkRlcHRod2lzZUNvbnYyZE5hdGl2ZUJhY2twcm9wSW5wdXQiLCJEZXF1YW50aXplIiwiRGV2aWNlSW5kZXgiLCJEaWFnIiwiRGlhZ1BhcnQiLCJEaWdhbW1hIiwiRGl2IiwiRGl2Tm9OYW4iLCJEeW5hbWljU3RpdGNoIiwiRWluc3VtIiwiRWx1IiwiRWx1R3JhZCIsIkVtcHR5IiwiRW1wdHlUZW5zb3JMaXN0IiwiRW5zdXJlU2hhcGUiLCJFcXVhbCIsIkVyZiIsIkVyZmMiLCJFcmZpbnYiLCJFeHAiLCJFeHBhbmREaW1zIiwiRXhwbTEiLCJFeHRyYWN0SW1hZ2VQYXRjaGVzIiwiRkZUIiwiRkZUMkQiLCJGRlQzRCIsIkZha2VQYXJhbSIsIkZha2VRdWFudFdpdGhNaW5NYXhBcmdzIiwiRmFrZVF1YW50V2l0aE1pbk1heEFyZ3NHcmFkaWVudCIsIkZha2VRdWFudFdpdGhNaW5NYXhWYXJzIiwiRmFrZVF1YW50V2l0aE1pbk1heFZhcnNHcmFkaWVudCIsIkZpbGwiLCJGbG9vciIsIkZsb29yRGl2IiwiRmxvb3JNb2QiLCJGdXNlZEJhdGNoTm9ybSIsIkZ1c2VkQmF0Y2hOb3JtR3JhZCIsIkZ1c2VkQmF0Y2hOb3JtR3JhZFYyIiwiRnVzZWRCYXRjaE5vcm1HcmFkVjMiLCJGdXNlZEJhdGNoTm9ybVYyIiwiRnVzZWRCYXRjaE5vcm1WMyIsIkdhdGhlciIsIkdhdGhlck5kIiwiR2F0aGVyVjIiLCJHZXRJdGVtIiwiR3JlYXRlciIsIkdyZWF0ZXJFcXVhbCIsIkhTVlRvUkdCIiwiSUZGVCIsIklGRlQyRCIsIklGRlQzRCIsIklSRkZUIiwiSVJGRlQyRCIsIklSRkZUM0QiLCJJZGVudGl0eSIsIklkZW50aXR5TiIsIklmIiwiSWdhbW1hIiwiSWdhbW1hR3JhZEEiLCJJZ2FtbWFjIiwiSW1hZyIsIkluVG9wS1YyIiwiSW5mZWVkRGVxdWV1ZSIsIkluZmVlZERlcXVldWVUdXBsZSIsIklucGxhY2VBZGQiLCJJbnBsYWNlVXBkYXRlIiwiSW52IiwiSW52ZXJ0IiwiSW52ZXJ0UGVybXV0YXRpb24iLCJJc0Zpbml0ZSIsIklzSW5mIiwiSXNOYW4iLCJLdGhPcmRlclN0YXRpc3RpYyIsIkwyTG9zcyIsIkxSTiIsIkxSTkdyYWQiLCJMZWFreVJlbHUiLCJMZWFreVJlbHVHcmFkIiwiTGVmdFNoaWZ0IiwiTGVzcyIsIkxlc3NFcXVhbCIsIkxnYW1tYSIsIkxpblNwYWNlIiwiTGlzdERpZmYiLCJMb2ciLCJMb2cxcCIsIkxvZ1NvZnRtYXgiLCJMb2dpY2FsQW5kIiwiTG9naWNhbE5vdCIsIkxvZ2ljYWxPciIsIkxvd2VyQm91bmQiLCJNYWtlVW5pcXVlIiwiTWF0TXVsIiwiTWF0cml4QmFuZFBhcnQiLCJNYXRyaXhEaWFnIiwiTWF0cml4RGlhZ1BhcnQiLCJNYXRyaXhEaWFnUGFydFYyIiwiTWF0cml4RGlhZ1BhcnRWMyIsIk1hdHJpeERpYWdWMiIsIk1hdHJpeERpYWdWMyIsIk1hdHJpeEludmVyc2UiLCJNYXRyaXhTZXREaWFnIiwiTWF0cml4U2V0RGlhZ1YyIiwiTWF0cml4U2V0RGlhZ1YzIiwiTWF0cml4U29sdmUiLCJNYXRyaXhUcmlhbmd1bGFyU29sdmUiLCJNYXgiLCJNYXhQb29sIiwiTWF4UG9vbDNEIiwiTWF4UG9vbDNER3JhZCIsIk1heFBvb2wzREdyYWRHcmFkIiwiTWF4UG9vbEdyYWQiLCJNYXhQb29sR3JhZEdyYWQiLCJNYXhQb29sR3JhZEdyYWRWMiIsIk1heFBvb2xHcmFkVjIiLCJNYXhQb29sVjIiLCJNYXhpbXVtIiwiTWVhbiIsIk1pbiIsIk1pbmltdW0iLCJNaXJyb3JQYWQiLCJNaXJyb3JQYWRHcmFkIiwiTW9kIiwiTXVsIiwiTXVsTm9OYW4iLCJNdWx0aW5vbWlhbCIsIk5kdHJpIiwiTmVnIiwiTmV4dEFmdGVyIiwiTm9PcCIsIk5vbk1heFN1cHByZXNzaW9uVjQiLCJOb3RFcXVhbCIsIk9uZUhvdCIsIk9uZXNMaWtlIiwiT3V0ZmVlZEVucXVldWUiLCJPdXRmZWVkRW5xdWV1ZVR1cGxlIiwiUGFjayIsIlBhZCIsIlBhZFYyIiwiUGFyYWxsZWxEeW5hbWljU3RpdGNoIiwiUGFyYW1ldGVyaXplZFRydW5jYXRlZE5vcm1hbCIsIlBhcnRpdGlvbmVkQ2FsbCIsIlBsYWNlaG9sZGVyV2l0aERlZmF1bHQiLCJQb2x5Z2FtbWEiLCJQb3B1bGF0aW9uQ291bnQiLCJQb3ciLCJQcmV2ZW50R3JhZGllbnQiLCJQcm9kIiwiUXIiLCJRdWFudGl6ZUFuZERlcXVhbnRpemVWMiIsIlF1YW50aXplQW5kRGVxdWFudGl6ZVYzIiwiUkZGVCIsIlJGRlQyRCIsIlJGRlQzRCIsIlJHQlRvSFNWIiwiUmFuZG9tR2FtbWFHcmFkIiwiUmFuZG9tU2h1ZmZsZSIsIlJhbmRvbVN0YW5kYXJkTm9ybWFsIiwiUmFuZG9tVW5pZm9ybSIsIlJhbmRvbVVuaWZvcm1JbnQiLCJSYW5nZSIsIlJhbmsiLCJSZWFkVmFyaWFibGVPcCIsIlJlYWwiLCJSZWFsRGl2IiwiUmVjaXByb2NhbCIsIlJlY2lwcm9jYWxHcmFkIiwiUmVsdSIsIlJlbHU2IiwiUmVsdTZHcmFkIiwiUmVsdUdyYWQiLCJSZXNoYXBlIiwiUmVzaXplQmlsaW5lYXIiLCJSZXNpemVCaWxpbmVhckdyYWQiLCJSZXNpemVOZWFyZXN0TmVpZ2hib3IiLCJSZXNpemVOZWFyZXN0TmVpZ2hib3JHcmFkIiwiUmVzb3VyY2VBcHBseUFkYU1heCIsIlJlc291cmNlQXBwbHlBZGFkZWx0YSIsIlJlc291cmNlQXBwbHlBZGFncmFkIiwiUmVzb3VyY2VBcHBseUFkYWdyYWREQSIsIlJlc291cmNlQXBwbHlBZGFncmFkVjIiLCJSZXNvdXJjZUFwcGx5QWRhbSIsIlJlc291cmNlQXBwbHlBZGRTaWduIiwiUmVzb3VyY2VBcHBseUNlbnRlcmVkUk1TUHJvcCIsIlJlc291cmNlQXBwbHlGdHJsIiwiUmVzb3VyY2VBcHBseUZ0cmxWMiIsIlJlc291cmNlQXBwbHlHcmFkaWVudERlc2NlbnQiLCJSZXNvdXJjZUFwcGx5S2VyYXNNb21lbnR1bSIsIlJlc291cmNlQXBwbHlNb21lbnR1bSIsIlJlc291cmNlQXBwbHlQb3dlclNpZ24iLCJSZXNvdXJjZUFwcGx5UHJveGltYWxBZGFncmFkIiwiUmVzb3VyY2VBcHBseVByb3hpbWFsR3JhZGllbnREZXNjZW50IiwiUmVzb3VyY2VBcHBseVJNU1Byb3AiLCJSZXNvdXJjZUdhdGhlciIsIlJlc291cmNlU2NhdHRlckFkZCIsIlJlc291cmNlU2NhdHRlckRpdiIsIlJlc291cmNlU2NhdHRlck1heCIsIlJlc291cmNlU2NhdHRlck1pbiIsIlJlc291cmNlU2NhdHRlck11bCIsIlJlc291cmNlU2NhdHRlck5kQWRkIiwiUmVzb3VyY2VTY2F0dGVyTmRTdWIiLCJSZXNvdXJjZVNjYXR0ZXJOZFVwZGF0ZSIsIlJlc291cmNlU2NhdHRlclN1YiIsIlJlc291cmNlU2NhdHRlclVwZGF0ZSIsIlJlc291cmNlU3RyaWRlZFNsaWNlQXNzaWduIiwiUmV2ZXJzZSIsIlJldmVyc2VTZXF1ZW5jZSIsIlJldmVyc2VWMiIsIlJpZ2h0U2hpZnQiLCJSaW50IiwiUm5nUmVhZEFuZFNraXAiLCJSbmdTa2lwIiwiUm9sbCIsIlJvdW5kIiwiUnNxcnQiLCJSc3FydEdyYWQiLCJTY2F0dGVyTmQiLCJTZWxlY3QiLCJTZWxlY3RWMiIsIlNlbGZBZGpvaW50RWlnVjIiLCJTZWx1IiwiU2VsdUdyYWQiLCJTaGFwZSIsIlNoYXBlTiIsIlNpZ21vaWQiLCJTaWdtb2lkR3JhZCIsIlNpZ24iLCJTaW4iLCJTaW5oIiwiU2l6ZSIsIlNsaWNlIiwiU25hcHNob3QiLCJTb2Z0bWF4IiwiU29mdG1heENyb3NzRW50cm9weVdpdGhMb2dpdHMiLCJTb2Z0cGx1cyIsIlNvZnRwbHVzR3JhZCIsIlNvZnRzaWduIiwiU29mdHNpZ25HcmFkIiwiU3BhY2VUb0JhdGNoIiwiU3BhY2VUb0JhdGNoTkQiLCJTcGFjZVRvRGVwdGgiLCJTcGFyc2VNYXRNdWwiLCJTcGFyc2VTb2Z0bWF4Q3Jvc3NFbnRyb3B5V2l0aExvZ2l0cyIsIlNwYXJzZVRvRGVuc2UiLCJTcGxpdCIsIlNwbGl0ViIsIlNxcnQiLCJTcXJ0R3JhZCIsIlNxdWFyZSIsIlNxdWFyZWREaWZmZXJlbmNlIiwiU3F1ZWV6ZSIsIlN0YWNrQ2xvc2VWMiIsIlN0YWNrUG9wVjIiLCJTdGFja1B1c2hWMiIsIlN0YWNrVjIiLCJTdGF0ZWZ1bFBhcnRpdGlvbmVkQ2FsbCIsIlN0YXRlZnVsU3RhbmRhcmROb3JtYWxWMiIsIlN0YXRlZnVsVHJ1bmNhdGVkTm9ybWFsIiwiU3RhdGVmdWxVbmlmb3JtIiwiU3RhdGVmdWxVbmlmb3JtRnVsbEludCIsIlN0YXRlZnVsVW5pZm9ybUludCIsIlN0YXRlbGVzc0Nhc2UiLCJTdGF0ZWxlc3NJZiIsIlN0YXRlbGVzc011bHRpbm9taWFsIiwiU3RhdGVsZXNzUmFuZG9tR2V0QWxnIiwiU3RhdGVsZXNzUmFuZG9tR2V0S2V5Q291bnRlciIsIlN0YXRlbGVzc1JhbmRvbUdldEtleUNvdW50ZXJBbGciLCJTdGF0ZWxlc3NSYW5kb21Ob3JtYWwiLCJTdGF0ZWxlc3NSYW5kb21Ob3JtYWxWMiIsIlN0YXRlbGVzc1JhbmRvbVVuaWZvcm0iLCJTdGF0ZWxlc3NSYW5kb21Vbmlmb3JtRnVsbEludCIsIlN0YXRlbGVzc1JhbmRvbVVuaWZvcm1GdWxsSW50VjIiLCJTdGF0ZWxlc3NSYW5kb21Vbmlmb3JtSW50IiwiU3RhdGVsZXNzUmFuZG9tVW5pZm9ybUludFYyIiwiU3RhdGVsZXNzUmFuZG9tVW5pZm9ybVYyIiwiU3RhdGVsZXNzVHJ1bmNhdGVkTm9ybWFsIiwiU3RhdGVsZXNzVHJ1bmNhdGVkTm9ybWFsVjIiLCJTdGF0ZWxlc3NXaGlsZSIsIlN0b3BHcmFkaWVudCIsIlN0cmlkZWRTbGljZSIsIlN0cmlkZWRTbGljZUdyYWQiLCJTdWIiLCJTdW0iLCJTdmQiLCJTeW1ib2xpY0dyYWRpZW50IiwiVFBVRW1iZWRkaW5nQWN0aXZhdGlvbnMiLCJUYW4iLCJUYW5oIiwiVGFuaEdyYWQiLCJUZW5zb3JBcnJheUNsb3NlVjMiLCJUZW5zb3JBcnJheUNvbmNhdFYzIiwiVGVuc29yQXJyYXlHYXRoZXJWMyIsIlRlbnNvckFycmF5R3JhZFYzIiwiVGVuc29yQXJyYXlSZWFkVjMiLCJUZW5zb3JBcnJheVNjYXR0ZXJWMyIsIlRlbnNvckFycmF5U2l6ZVYzIiwiVGVuc29yQXJyYXlTcGxpdFYzIiwiVGVuc29yQXJyYXlWMyIsIlRlbnNvckFycmF5V3JpdGVWMyIsIlRlbnNvckxpc3RDb25jYXRWMiIsIlRlbnNvckxpc3RFbGVtZW50U2hhcGUiLCJUZW5zb3JMaXN0RnJvbVRlbnNvciIsIlRlbnNvckxpc3RHYXRoZXIiLCJUZW5zb3JMaXN0R2V0SXRlbSIsIlRlbnNvckxpc3RMZW5ndGgiLCJUZW5zb3JMaXN0UG9wQmFjayIsIlRlbnNvckxpc3RQdXNoQmFjayIsIlRlbnNvckxpc3RSZXNlcnZlIiwiVGVuc29yTGlzdFNldEl0ZW0iLCJUZW5zb3JMaXN0U3BsaXQiLCJUZW5zb3JMaXN0U3RhY2siLCJUZW5zb3JTY2F0dGVyQWRkIiwiVGVuc29yU2NhdHRlck1heCIsIlRlbnNvclNjYXR0ZXJNaW4iLCJUZW5zb3JTY2F0dGVyU3ViIiwiVGVuc29yU2NhdHRlclVwZGF0ZSIsIlRlbnNvclN0cmlkZWRTbGljZVVwZGF0ZSIsIlRpbGUiLCJUb3BLVW5pcXVlIiwiVG9wS1YyIiwiVG9wS1dpdGhVbmlxdWUiLCJUcmFuc3Bvc2UiLCJUcmlkaWFnb25hbFNvbHZlIiwiVHJ1bmNhdGVEaXYiLCJUcnVuY2F0ZU1vZCIsIlRydW5jYXRlZE5vcm1hbCIsIlVuaXF1ZSIsIlVucGFjayIsIlVuc29ydGVkU2VnbWVudE1heCIsIlVuc29ydGVkU2VnbWVudE1pbiIsIlVuc29ydGVkU2VnbWVudFByb2QiLCJVbnNvcnRlZFNlZ21lbnRTdW0iLCJVcHBlckJvdW5kIiwiVmFySXNJbml0aWFsaXplZE9wIiwiVmFyaWFibGVTaGFwZSIsIldoZXJlIiwiV2hpbGUiLCJYZGl2eSIsIlhsYUJyb2FkY2FzdEhlbHBlciIsIlhsYUNvbnYiLCJYbGFDb252VjIiLCJYbGFEZXF1YW50aXplIiwiWGxhRG90IiwiWGxhRG90VjIiLCJYbGFEeW5hbWljU2xpY2UiLCJYbGFEeW5hbWljVXBkYXRlU2xpY2UiLCJYbGFFaW5zdW0iLCJYbGFHYXRoZXIiLCJYbGFIb3N0Q29tcHV0ZSIsIlhsYUlmIiwiWGxhS2V5VmFsdWVTb3J0IiwiWGxhUGFkIiwiWGxhUmVjdiIsIlhsYVJlY3ZGcm9tSG9zdCIsIlhsYVJlZHVjZSIsIlhsYVJlZHVjZVdpbmRvdyIsIlhsYVJlcGxpY2FJZCIsIlhsYVNjYXR0ZXIiLCJYbGFTZWxlY3RBbmRTY2F0dGVyIiwiWGxhU2VsZkFkam9pbnRFaWciLCJYbGFTZW5kIiwiWGxhU2VuZFRvSG9zdCIsIlhsYVNldEJvdW5kIiwiWGxhU2V0RHluYW1pY0RpbWVuc2lvblNpemUiLCJYbGFTaGFyZGluZyIsIlhsYVNvcnQiLCJYbGFTcG1kRnVsbFRvU2hhcmRTaGFwZSIsIlhsYVNwbWRTaGFyZFRvRnVsbFNoYXBlIiwiWGxhU3ZkIiwiWGxhVmFyaWFkaWNSZWR1Y2UiLCJYbGFWYXJpYWRpY1NvcnQiLCJYbGFXaGlsZSIsIlhsb2cxcHkiLCJYbG9neSIsIlplcm9zTGlrZSIsIlpldGEiLCJFbnRlciIsIkV4aXQiLCJMb29wQ29uZCIsIk1lcmdlIiwiTmV4dEl0ZXJhdGlvbiIsIlN3aXRjaCIsIl9BcmciLCJfQXJyYXlUb0xpc3QiLCJfRnVzZWRCYXRjaE5vcm1FeCIsIl9MaXN0VG9BcnJheSIsIl9QYXJhbGxlbENvbmNhdFVwZGF0ZSIsIl9SZWN2VFBVRW1iZWRkaW5nQWN0aXZhdGlvbnMiLCJfUmVjdlRQVUVtYmVkZGluZ0RlZHVwbGljYXRpb25EYXRhIiwiX1JldHZhbCIsIl9TZW5kVFBVRW1iZWRkaW5nR3JhZGllbnRzIiwiX1RQVUNvbXBpbGUiLCJfVFBVRXhlY3V0ZSIsIl9VbmFyeU9wc0NvbXBvc2l0aW9uIiwiVFBVQ29tcGlsYXRpb25SZXN1bHQiLCJUUFVSZXBsaWNhdGVkSW5wdXQiLCJUUFVSZXBsaWNhdGVkT3V0cHV0IiwiVFBVUmVwbGljYXRlTWV0YWRhdGEiLCJNZXJnZVYyQ2hlY2twb2ludHMiLCJSZXN0b3JlVjIiLCJTYXZlVjIiLCJBYm9ydCIsIkFzc2VydCIsIkFzc2lnbiIsIlBsYWNlaG9sZGVyIiwiUGxhY2Vob2xkZXJWMiIsIlNoYXJkZWRGaWxlbmFtZSIsIlN0cmluZ0pvaW4iLCJWYXJpYWJsZSIsIlZhcmlhYmxlVjIiLCJWYXJIYW5kbGVPcCIsIkF1ZGlvU3VtbWFyeSIsIkF1ZGlvU3VtbWFyeVYyIiwiRGVidWdOdW1lcmljU3VtbWFyeSIsIkhpc3RvZ3JhbVN1bW1hcnkiLCJJbWFnZVN1bW1hcnkiLCJNZXJnZVN1bW1hcnkiLCJTY2FsYXJTdW1tYXJ5IiwiU3RhdHNBZ2dyZWdhdG9yU3VtbWFyeSJdO2xldCBpSnQ9Y2xhc3MgZXh0ZW5kcyhjcih3ZSkpe2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLl9yYXdSZWdleElucHV0PSIiLHRoaXMuX3ByZXZpb3VzUmVnZXhJbnB1dD0iIix0aGlzLl9zZWFyY2hUaW1lb3V0RGVsYXk9MTUwLHRoaXMuX21heFJlZ2V4UmVzdWx0cz00Mn1nZXQgX3JlZ2V4SW5wdXQoKXtyZXR1cm4gdGhpcy5fcmF3UmVnZXhJbnB1dC50cmltKCl9X3JlZ2V4SW5wdXRDaGFuZ2VkKCl7dGhpcy5fcmVxdWVzdFNlYXJjaCgpfV9jbGVhclNlYXJjaFJlc3VsdHMoKXt0aGlzLnNldCgiX3JlZ2V4TWF0Y2hlcyIsW10pfV9yZXF1ZXN0U2VhcmNoKCl7dGhpcy5fc2VhcmNoUGVuZGluZ3x8KHRoaXMuX3JlZ2V4SW5wdXQhPT10aGlzLl9wcmV2aW91c1JlZ2V4SW5wdXQ/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+dC50YWc9PT1pKSksYFJlcXVpcmVkIHRhZyAoJHtpfSkgaXMgbWlzc2luZy5gKTtjb25zdCByPSF0aGlzLl9ncmFwaFJ1blRhZ3x8dGhpcy5fZ3JhcGhSdW5UYWcucnVuIT09ZXx8dGhpcy5fZ3JhcGhSdW5UYWcudGFnIT09aT90aGlzLl9sb2FkKHtydW46ZSx0YWc6aSx0eXBlOlFYdC5PUF9HUkFQSH0pOlByb21pc2UucmVzb2x2ZSgpLG89bmV3IFVSTFNlYXJjaFBhcmFtcztvLnNldCgidGFnIixuKSxvLnNldCgicnVuIixlKTtjb25zdCBhPUVyKCkucGx1Z2luUm91dGUoImdyYXBocyIsIi9ydW5fbWV0YWRhdGEiLG8pO3JldHVybiByLnRoZW4oKCgpPT50aGlzLl9yZWFkQW5kUGFyc2VNZXRhZGF0YShhKSkpfWRlZmF1bHQ6cmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcihgVW5rbm93biBzZWxlY3Rpb24gdHlwZTogJHtpfWApKX19X3JlYWRBbmRQYXJzZU1ldGFkYXRhKHQpe3RoaXMuc2V0KCJwcm9ncmVzcyIse3ZhbHVlOjAsbXNnOiIifSksdUp0KHQscCR0KHRoaXMpKS50aGVuKGZ1bmN0aW9uKHQpe3RoaXMuX3NldE91dFN0YXRzKHQpfS5iaW5kKHRoaXMpKX1fZmV0Y2hBbmRDb25zdHJ1Y3RIaWVyYXJjaGljYWxHcmFwaCh0LGUpe3RoaXMuc2V0KCJwcm9ncmVzcyIse3ZhbHVlOjAsbXNnOiIifSk7cmV0dXJuIG1KdChwJHQodGhpcyksdCxlLHRoaXMuY29tcGF0aWJpbGl0eVByb3ZpZGVyLHRoaXMuaGllcmFyY2h5UGFyYW1zKS50aGVuKGZ1bmN0aW9uKHtncmFwaDp0LGdyYXBoSGllcmFyY2h5OmV9KXt0aGlzLl9zZXRPdXRHcmFwaCh0KSx0aGlzLl9zZXRPdXRHcmFwaEhpZXJhcmNoeShlKX0uYmluZCh0aGlzKSl9X3NlbGVjdGVkRmlsZUNoYW5nZWQoKXt2YXIgdD10aGlzLnNlbGVjdGVkRmlsZTtpZighdClyZXR1cm47Y29uc3QgZT10LnRhcmdldCxuPWUuZmlsZXNbMF07biYmKGUudmFsdWU9IiIsdGhpcy5fZmV0Y2hBbmRDb25zdHJ1Y3RIaWVyYXJjaGljYWxHcmFwaChudWxsLG4pKX19O3QoW28oe3R5cGU6QXJyYXl9KSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpXSxnSnQucHJvdG90eXBlLCJkYXRhc2V0cyIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdCxub3RpZnk6ITB9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sZ0p0LnByb3RvdHlwZSwicHJvZ3Jlc3MiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sZ0p0LnByb3RvdHlwZSwic2VsZWN0aW9uIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLGdKdC5wcm90b3R5cGUsInNlbGVjdGVkRmlsZSIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxnSnQucHJvdG90eXBlLCJjb21wYXRpYmlsaXR5UHJvdmlkZXIiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sZ0p0LnByb3RvdHlwZSwiaGllcmFyY2h5UGFyYW1zIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0LHJlYWRPbmx5OiEwLG5vdGlmeTohMH0pLGUoImRlc2lnbjp0eXBlIixyS3QpXSxnSnQucHJvdG90eXBlLCJvdXRHcmFwaEhpZXJhcmNoeSIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdCxyZWFkT25seTohMCxub3RpZnk6ITB9KSxlKCJkZXNpZ246dHlwZSIsSSR0KV0sZ0p0LnByb3RvdHlwZSwib3V0R3JhcGgiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3QscmVhZE9ubHk6ITAsbm90aWZ5OiEwfSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLGdKdC5wcm90b3R5cGUsIm91dFN0YXRzIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLGdKdC5wcm90b3R5cGUsIl9ncmFwaFJ1blRhZyIsdm9pZCAwKSx0KFthKCJzZWxlY3Rpb24iLCJjb21wYXRpYmlsaXR5UHJvdmlkZXIiKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLGdKdC5wcm90b3R5cGUsIl9zZWxlY3Rpb25DaGFuZ2VkIixudWxsKSx0KFthKCJzZWxlY3RlZEZpbGUiLCJjb21wYXRpYmlsaXR5UHJvdmlkZXIiKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLGdKdC5wcm90b3R5cGUsIl9zZWxlY3RlZEZpbGVDaGFuZ2VkIixudWxsKSxnSnQ9dChbaSgidGYtZ3JhcGgtZGFzaGJvYXJkLWxvYWRlciIpXSxnSnQpO2xldCBfSnQ9Y2xhc3MgZXh0ZW5kcyhjcih3ZSkpe2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLl9kYXRhc2V0cz1bXSx0aGlzLl9kYXRhc2V0c0ZldGNoZWQ9ITEsdGhpcy5fc2VsZWN0ZWREYXRhc2V0PTAsdGhpcy5fcmVxdWVzdE1hbmFnZXI9bmV3IGJyLHRoaXMuX2NhbmNlbGxlcj1uZXcgeE8sdGhpcy5zcGVjaWZpY0hlYWx0aFBpbGxTdGVwPTAsdGhpcy5oZWFsdGhQaWxsc1RvZ2dsZWRPbj0hMSx0aGlzLl9kZWJ1Z2dlck51bWVyaWNBbGVydHM9W10sdGhpcy5fbm9kZU5hbWVzVG9IZWFsdGhQaWxscz17fSx0aGlzLl9oZWFsdGhQaWxsUmVxdWVzdElkPTEsdGhpcy5faGVhbHRoUGlsbFN0ZXBSZXF1ZXN0VGltZXJEZWxheT01MDAsdGhpcy5ydW49WHMoInJ1biIse2RlZmF1bHRWYWx1ZToiIix1c2VMb2NhbFN0b3JhZ2U6ITF9KS5jYWxsKHRoaXMpLHRoaXMuX3J1bk9ic2VydmVyPSRzKCJydW4iLHtkZWZhdWx0VmFsdWU6IiIscG9seW1lclByb3BlcnR5OiJydW4iLHVzZUxvY2FsU3RvcmFnZTohMX0pfWF0dGFjaGVkKCl7dGhpcy5zZXQoIl9pc0F0dGFjaGVkIiwhMCl9ZGV0YWNoZWQoKXt0aGlzLnNldCgiX2lzQXR0YWNoZWQiLCExKX1yZWFkeSgpe3N1cGVyLnJlYWR5KCksdGhpcy5hZGRFdmVudExpc3RlbmVyKCJub2RlLXRvZ2dsZS1leHBhbmQiLHRoaXMuX2hhbmRsZU5vZGVUb2dnbGVFeHBhbmQuYmluZCh0aGlzKSl9cmVsb2FkKCl7dGhpcy5fZGVidWdnZXJEYXRhRW5hYmxlZHx8dGhpcy5fcmVxdWVzdE1hbmFnZXIucmVxdWVzdChFcigpLnBsdWdpbnNMaXN0aW5nKCkpLnRoZW4odGhpcy5fY2FuY2VsbGVyLmNhbmNlbGxhYmxlKCh0PT57dC5jYW5jZWxsZWR8fHQudmFsdWUuZGVidWdnZXImJnRoaXMuc2V0KCJfZGVidWdnZXJEYXRhRW5hYmxlZCIsITApfSkpKSx0aGlzLl9tYXliZUZldGNoSGVhbHRoUGlsbHMoKX1fZml0KCl7dGhpcy4kJCgiI2dyYXBoYm9hcmQiKS5maXQoKX1fb25Eb3dubG9hZEltYWdlUmVxdWVzdGVkKHQpe3RoaXMuJCQoIiNncmFwaGJvYXJkIikuZG93bmxvYWRBc0ltYWdlKHQuZGV0YWlsKX1fZ2V0R3JhcGhEaXNwbGF5Q2xhc3NOYW1lKHQsZSl7cmV0dXJuIHR8fGUubGVuZ3RoPyIiOiJuby1ncmFwaCJ9X2ZldGNoRGF0YXNldCgpe3JldHVybiB0aGlzLl9yZXF1ZXN0TWFuYWdlci5yZXF1ZXN0KEVyKCkucGx1Z2luUm91dGUoImdyYXBocyIsIi9pbmZvIikpfV9mZXRjaEhlYWx0aFBpbGxzKHQsZSl7Y29uc3Qgbj17bm9kZV9uYW1lczpKU09OLnN0cmluZ2lmeSh0KSxydW46Il9fZGVidWdnZXJfZGF0YV9fIn07dm9pZCAwIT09ZSYmKG4uc3RlcD1lKTtjb25zdCBpPUVyKCkucGx1Z2luUm91dGUoImRlYnVnZ2VyIiwiL2hlYWx0aF9waWxscyIpO3JldHVybiB0aGlzLl9yZXF1ZXN0TWFuYWdlci5yZXF1ZXN0KGksbil9X2ZldGNoRGVidWdnZXJOdW1lcmljc0FsZXJ0cygpe3JldHVybiB0aGlzLl9yZXF1ZXN0TWFuYWdlci5yZXF1ZXN0KEVyKCkucGx1Z2luUm91dGUoImRlYnVnZ2VyIiwiL251bWVyaWNzX2FsZXJ0X3JlcG9ydCIpKX1fZ3JhcGhVcmwodCxlLG4pe3JldHVybiBFcigpLnBsdWdpblJvdXRlKCJncmFwaHMiLCIvZ3JhcGgiLG5ldyBVUkxTZWFyY2hQYXJhbXMoe3J1bjp0LGxpbWl0X2F0dHJfc2l6ZTplLGxhcmdlX2F0dHJzX2tleTpufSkpfV9zaG91bGRSZXF1ZXN0SGVhbHRoUGlsbHMoKXtyZXR1cm4gdGhpcy5fZGVidWdnZXJEYXRhRW5hYmxlZCYmdGhpcy5oZWFsdGhQaWxsc1RvZ2dsZWRPbiYmdGhpcy5fcmVuZGVySGllcmFyY2h5JiZ0aGlzLl9kYXRhc2V0c1N0YXRlKHRoaXMuX2RhdGFzZXRzRmV0Y2hlZCx0aGlzLl9kYXRhc2V0cywiUFJFU0VOVCIpfV9tYXliZUluaXRpYWxpemVEYXNoYm9hcmQoKXshdGhpcy5faW5pdGlhbGl6ZWQmJnRoaXMuX2lzQXR0YWNoZWQmJih0aGlzLnNldCgiX2NvbXBhdGliaWxpdHlQcm92aWRlciIsbmV3IG5KdCksdGhpcy5faW5pdGlhbGl6ZWQ9ITAsdGhpcy5fZmV0Y2hEYXRhc2V0KCkudGhlbigodD0+e2NvbnN0IGU9T2JqZWN0LmtleXModCk7dGhpcy5fZGF0YXNldHM9ZS5zb3J0KHVyKS5tYXAoKGU9Pntjb25zdCBuPXRbZV0saT1PYmplY3Qua2V5cyhuLnRhZ3MpLnNvcnQodXIpLm1hcCgodD0+bi50YWdzW3RdKSkubWFwKCgoe3RhZzp0LGNvbmNlcHR1YWxfZ3JhcGg6ZSxvcF9ncmFwaDpuLHByb2ZpbGU6aX0pPT4oe3RhZzp0LGRpc3BsYXlOYW1lOnQsY29uY2VwdHVhbEdyYXBoOmUsb3BHcmFwaDpuLHByb2ZpbGU6aX0pKSk7cmV0dXJue25hbWU6ZSx0YWdzOm4ucnVuX2dyYXBoP1t7dGFnOm51bGwsZGlzcGxheU5hbWU6IkRlZmF1bHQiLGNvbmNlcHR1YWxHcmFwaDohMSxvcEdyYXBoOiEwLHByb2ZpbGU6ITF9LC4uLmldOml9fSkpLHRoaXMuX2RhdGFzZXRzRmV0Y2hlZD0hMH0pKSl9X2RldGVybWluZVNlbGVjdGVkRGF0YXNldCgpe3ZhciB0PXRoaXMuX2RhdGFzZXRzRmV0Y2hlZCxlPXRoaXMuX2RhdGFzZXRzLG49dGhpcy5ydW47aWYoIW4pcmV0dXJuIHZvaWQgdGhpcy5zZXQoIl9zZWxlY3RlZERhdGFzZXQiLDApO2NvbnN0IGk9ZS5maW5kSW5kZXgoKHQ9PnQubmFtZT09PW4pKTtpZigtMSE9PWkpdGhpcy5zZXQoIl9zZWxlY3RlZERhdGFzZXQiLGkpO2Vsc2UgaWYodCl7Y29uc3QgdD10aGlzLiQkKCIjZXJyb3ItZGlhbG9nIik7dC50ZXh0Q29udGVudD1gTm8gZGF0YXNldCBuYW1lZCAiJHtufSIgY291bGQgYmUgZm91bmQuYCx0Lm9wZW4oKX19X3VwZGF0ZVNlbGVjdGVkRGF0YXNldE5hbWUoKXt2YXIgdD10aGlzLl9kYXRhc2V0cyxlPXRoaXMuX3NlbGVjdGVkRGF0YXNldDt0aGlzLl9kYXRhc2V0c0ZldGNoZWQmJih0Lmxlbmd0aDw9ZXx8dGhpcy5zZXQoInJ1biIsdFtlXS5uYW1lKSl9X3JlcXVlc3RIZWFsdGhQaWxscygpe3RoaXMuc2V0KCJfYXJlSGVhbHRoUGlsbHNMb2FkaW5nIiwhMCk7dmFyIHQ9Kyt0aGlzLl9oZWFsdGhQaWxsUmVxdWVzdElkO251bGwhPT10aGlzLl9oZWFsdGhQaWxsU3RlcFJlcXVlc3RUaW1lcklkJiYod2luZG93LmNsZWFyVGltZW91dCh0aGlzLl9oZWFsdGhQaWxsU3RlcFJlcXVlc3RUaW1lcklkKSx0aGlzLl9oZWFsdGhQaWxsU3RlcFJlcXVlc3RUaW1lcklkPW51bGwpLHRoaXMuYWxsU3RlcHNNb2RlRW5hYmxlZD90aGlzLl9oZWFsdGhQaWxsU3RlcFJlcXVlc3RUaW1lcklkPXNldFRpbWVvdXQoZnVuY3Rpb24oKXt0aGlzLl9oZWFsdGhQaWxsU3RlcFJlcXVlc3RUaW1lcklkPW51bGwsdGhpcy5faW5pdGlhdGVOZXR3b3JrUmVxdWVzdEZvckhlYWx0aFBpbGxzKHQpfS5iaW5kKHRoaXMpLHRoaXMuX2hlYWx0aFBpbGxTdGVwUmVxdWVzdFRpbWVyRGVsYXkpOnRoaXMuX2luaXRpYXRlTmV0d29ya1JlcXVlc3RGb3JIZWFsdGhQaWxscyh0KX1faW5pdGlhdGVOZXR3b3JrUmVxdWVzdEZvckhlYWx0aFBpbGxzKHQpe2lmKHRoaXMuX2hlYWx0aFBpbGxSZXF1ZXN0SWQhPT10KXJldHVybjtjb25zdCBlPXRoaXMuYWxsU3RlcHNNb2RlRW5hYmxlZD90aGlzLnNwZWNpZmljSGVhbHRoUGlsbFN0ZXA6dm9pZCAwLG49dGhpcy5fZmV0Y2hIZWFsdGhQaWxscyh0aGlzLl9yZW5kZXJIaWVyYXJjaHkuZ2V0TmFtZXNPZlJlbmRlcmVkT3BzKCksZSksaT10aGlzLl9mZXRjaERlYnVnZ2VyTnVtZXJpY3NBbGVydHMoKTtQcm9taXNlLmFsbChbbixpXSkudGhlbihmdW5jdGlvbihlKXt2YXIgbj1lWzBdLGk9ZVsxXTtpZih0aGlzLmhlYWx0aFBpbGxzVG9nZ2xlZE9uJiZ0PT09dGhpcy5faGVhbHRoUGlsbFJlcXVlc3RJZCl7Zm9yKHZhciByIGluIG4pe3RoaXMuc2V0KCJfaGVhbHRoUGlsbFN0ZXBJbmRleCIsbltyXS5sZW5ndGgtMSk7YnJlYWt9dGhpcy5zZXQoIl9kZWJ1Z2dlck51bWVyaWNBbGVydHMiLGkpLHRoaXMuc2V0KCJfbm9kZU5hbWVzVG9IZWFsdGhQaWxscyIsbiksdGhpcy5zZXQoIl9hcmVIZWFsdGhQaWxsc0xvYWRpbmciLCExKSx0aGlzLnNldCgiX2hlYWx0aFBpbGxTdGVwUmVxdWVzdFRpbWVySWQiLG51bGwpfX0uYmluZCh0aGlzKSl9X2RhdGFzZXRzU3RhdGUodCxlLG4pe3JldHVybiB0P2UmJmUubGVuZ3RoPyJQUkVTRU5UIj09PW46IkVNUFRZIj09PW46Ik5PVF9MT0FERUQiPT09bn1fcmVuZGVySGllcmFyY2h5Q2hhbmdlZCh0KXt0aGlzLnJlbG9hZCgpfV9oYW5kbGVOb2RlVG9nZ2xlRXhwYW5kKCl7dGhpcy5fbWF5YmVGZXRjaEhlYWx0aFBpbGxzKCl9X2hlYWx0aFBpbGxzVG9nZ2xlZE9uQ2hhbmdlZCh0KXt0P3RoaXMucmVsb2FkKCk6dGhpcy5zZXQoIl9ub2RlTmFtZXNUb0hlYWx0aFBpbGxzIix7fSl9X21heWJlRmV0Y2hIZWFsdGhQaWxscygpe3RoaXMuX3Nob3VsZFJlcXVlc3RIZWFsdGhQaWxscygpJiZ0aGlzLl9yZXF1ZXN0SGVhbHRoUGlsbHMoKX19O19KdC50ZW1wbGF0ZT14ZWAKICAgIDxwYXBlci1kaWFsb2cgaWQ9ImVycm9yLWRpYWxvZyIgd2l0aC1iYWNrZHJvcD48L3BhcGVyLWRpYWxvZz4KICAgIDx0Zi1kYXNoYm9hcmQtbGF5b3V0PgogICAgICA8dGYtZ3JhcGgtY29udHJvbHMKICAgICAgICBpZD0iY29udHJvbHMiCiAgICAgICAgY2xhc3M9InNpZGViYXIiCiAgICAgICAgc2xvdD0ic2lkZWJhciIKICAgICAgICBkZXZpY2VzLWZvci1zdGF0cz0ie3tfZGV2aWNlc0ZvclN0YXRzfX0iCiAgICAgICAgY29sb3ItYnktcGFyYW1zPSJbW19jb2xvckJ5UGFyYW1zXV0iCiAgICAgICAgc3RhdHM9IltbX3N0YXRzXV0iCiAgICAgICAgY29sb3ItYnk9Int7X2NvbG9yQnl9fSIKICAgICAgICBkYXRhc2V0cz0iW1tfZGF0YXNldHNdXSIKICAgICAgICByZW5kZXItaGllcmFyY2h5PSJbW19yZW5kZXJIaWVyYXJjaHldXSIKICAgICAgICBzZWxlY3Rpb249Int7X3NlbGVjdGlvbn19IgogICAgICAgIHNlbGVjdGVkLWZpbGU9Int7X3NlbGVjdGVkRmlsZX19IgogICAgICAgIHNlbGVjdGVkLW5vZGU9Int7X3NlbGVjdGVkTm9kZX19IgogICAgICAgIGhlYWx0aC1waWxscy1mZWF0dXJlLWVuYWJsZWQ9IltbX2RlYnVnZ2VyRGF0YUVuYWJsZWRdXSIKICAgICAgICBoZWFsdGgtcGlsbHMtdG9nZ2xlZC1vbj0ie3toZWFsdGhQaWxsc1RvZ2dsZWRPbn19IgogICAgICAgIG9uLWZpdC10YXA9Il9maXQiCiAgICAgICAgdHJhY2UtaW5wdXRzPSJ7e190cmFjZUlucHV0c319IgogICAgICAgIGF1dG8tZXh0cmFjdC1ub2Rlcz0ie3tfYXV0b0V4dHJhY3ROb2Rlc319IgogICAgICAgIG9uLWRvd25sb2FkLWltYWdlLXJlcXVlc3RlZD0iX29uRG93bmxvYWRJbWFnZVJlcXVlc3RlZCIKICAgICAgPjwvdGYtZ3JhcGgtY29udHJvbHM+CiAgICAgIDxkaXYKICAgICAgICBjbGFzcyQ9ImNlbnRlciBbW19nZXRHcmFwaERpc3BsYXlDbGFzc05hbWUoX3NlbGVjdGVkRmlsZSwgX2RhdGFzZXRzKV1dIgogICAgICAgIHNsb3Q9ImNlbnRlciIKICAgICAgPgogICAgICAgIDx0Zi1ncmFwaC1kYXNoYm9hcmQtbG9hZGVyCiAgICAgICAgICBpZD0ibG9hZGVyIgogICAgICAgICAgZGF0YXNldHM9IltbX2RhdGFzZXRzXV0iCiAgICAgICAgICBzZWxlY3Rpb249IltbX3NlbGVjdGlvbl1dIgogICAgICAgICAgc2VsZWN0ZWQtZmlsZT0iW1tfc2VsZWN0ZWRGaWxlXV0iCiAgICAgICAgICBvdXQtZ3JhcGgtaGllcmFyY2h5PSJ7e19ncmFwaEhpZXJhcmNoeX19IgogICAgICAgICAgb3V0LWdyYXBoPSJ7e19ncmFwaH19IgogICAgICAgICAgb3V0LXN0YXRzPSJ7e19zdGF0c319IgogICAgICAgICAgcHJvZ3Jlc3M9Int7X3Byb2dyZXNzfX0iCiAgICAgICAgICBoaWVyYXJjaHktcGFyYW1zPSJbW19oaWVyYXJjaHlQYXJhbXNdXSIKICAgICAgICAgIGNvbXBhdGliaWxpdHktcHJvdmlkZXI9IltbX2NvbXBhdGliaWxpdHlQcm92aWRlcl1dIgogICAgICAgID48L3RmLWdyYXBoLWRhc2hib2FyZC1sb2FkZXI+CiAgICAgICAgPGRpdiBjbGFzcz0ibm8tZGF0YS1tZXNzYWdlIj4KICAgICAgICAgIDxoMz5ObyBncmFwaCBkZWZpbml0aW9uIGZpbGVzIHdlcmUgZm91bmQuPC9oMz4KICAgICAgICAgIDxwPgogICAgICAgICAgICBUbyBzdG9yZSBhIGdyYXBoLCBjcmVhdGUgYQogICAgICAgICAgICA8Y29kZT50Zi5zdW1tYXJ5LkZpbGVXcml0ZXI8L2NvZGU+CiAgICAgICAgICAgIGFuZCBwYXNzIHRoZSBncmFwaCBlaXRoZXIgdmlhIHRoZSBjb25zdHJ1Y3Rvciwgb3IgYnkgY2FsbGluZyBpdHMKICAgICAgICAgICAgPGNvZGU+YWRkX2dyYXBoKCk8L2NvZGU+IG1ldGhvZC4gWW91IG1heSB3YW50IHRvIGNoZWNrIG91dCB0aGUKICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly93d3cudGVuc29yZmxvdy5vcmcvdGVuc29yYm9hcmQvZ3JhcGhzIgogICAgICAgICAgICAgID5leGFtaW5pbmcgdGhlIFRlbnNvckZsb3cgZ3JhcGggdHV0b3JpYWw8L2EKICAgICAgICAgICAgPi4KICAgICAgICAgIDwvcD4KCiAgICAgICAgICA8cD4KICAgICAgICAgICAgSWYgeW914oCZcmUgbmV3IHRvIHVzaW5nIFRlbnNvckJvYXJkLCBhbmQgd2FudCB0byBmaW5kIG91dCBob3cgdG8gYWRkCiAgICAgICAgICAgIGRhdGEgYW5kIHNldCB1cCB5b3VyIGV2ZW50IGZpbGVzLCBjaGVjayBvdXQgdGhlCiAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3RlbnNvcmZsb3cvdGVuc29yYm9hcmQvYmxvYi9tYXN0ZXIvUkVBRE1FLm1kIgogICAgICAgICAgICAgID5SRUFETUU8L2EKICAgICAgICAgICAgPgogICAgICAgICAgICBhbmQgcGVyaGFwcyB0aGUKICAgICAgICAgICAgPGEKICAgICAgICAgICAgICBocmVmPSJodHRwczovL3d3dy50ZW5zb3JmbG93Lm9yZy9nZXRfc3RhcnRlZC9zdW1tYXJpZXNfYW5kX3RlbnNvcmJvYXJkIgogICAgICAgICAgICAgID5UZW5zb3JCb2FyZCB0dXRvcmlhbDwvYQogICAgICAgICAgICA+LgogICAgICAgICAgPC9wPgoKICAgICAgICAgIDxwPgogICAgICAgICAgICBJZiB5b3UgdGhpbmsgVGVuc29yQm9hcmQgaXMgY29uZmlndXJlZCBwcm9wZXJseSwgcGxlYXNlIHNlZQogICAgICAgICAgICA8YQogICAgICAgICAgICAgIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS90ZW5zb3JmbG93L3RlbnNvcmJvYXJkL2Jsb2IvbWFzdGVyL1JFQURNRS5tZCNteS10ZW5zb3Jib2FyZC1pc250LXNob3dpbmctYW55LWRhdGEtd2hhdHMtd3JvbmciCiAgICAgICAgICAgICAgPnRoZSBzZWN0aW9uIG9mIHRoZSBSRUFETUUgZGV2b3RlZCB0byBtaXNzaW5nIGRhdGEgcHJvYmxlbXM8L2EKICAgICAgICAgICAgPgogICAgICAgICAgICBhbmQgY29uc2lkZXIgZmlsaW5nIGFuIGlzc3VlIG9uIEdpdEh1Yi4KICAgICAgICAgIDwvcD4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJncmFwaGJvYXJkIj4KICAgICAgICAgIDx0Zi1ncmFwaC1ib2FyZAogICAgICAgICAgICBpZD0iZ3JhcGhib2FyZCIKICAgICAgICAgICAgZGV2aWNlcy1mb3Itc3RhdHM9IltbX2RldmljZXNGb3JTdGF0c11dIgogICAgICAgICAgICBjb2xvci1ieT0ie3tfY29sb3JCeX19IgogICAgICAgICAgICBjb2xvci1ieS1wYXJhbXM9Int7X2NvbG9yQnlQYXJhbXN9fSIKICAgICAgICAgICAgZ3JhcGgtaGllcmFyY2h5PSJbW19ncmFwaEhpZXJhcmNoeV1dIgogICAgICAgICAgICBncmFwaD0iW1tfZ3JhcGhdXSIKICAgICAgICAgICAgaGllcmFyY2h5LXBhcmFtcz0iW1tfaGllcmFyY2h5UGFyYW1zXV0iCiAgICAgICAgICAgIHByb2dyZXNzPSJbW19wcm9ncmVzc11dIgogICAgICAgICAgICBkZWJ1Z2dlci1kYXRhLWVuYWJsZWQ9IltbX2RlYnVnZ2VyRGF0YUVuYWJsZWRdXSIKICAgICAgICAgICAgYXJlLWhlYWx0aC1waWxscy1sb2FkaW5nPSJbW19hcmVIZWFsdGhQaWxsc0xvYWRpbmddXSIKICAgICAgICAgICAgZGVidWdnZXItbnVtZXJpYy1hbGVydHM9IltbX2RlYnVnZ2VyTnVtZXJpY0FsZXJ0c11dIgogICAgICAgICAgICBub2RlLW5hbWVzLXRvLWhlYWx0aC1waWxscz0iW1tfbm9kZU5hbWVzVG9IZWFsdGhQaWxsc11dIgogICAgICAgICAgICBhbGwtc3RlcHMtbW9kZS1lbmFibGVkPSJ7e2FsbFN0ZXBzTW9kZUVuYWJsZWR9fSIKICAgICAgICAgICAgc3BlY2lmaWMtaGVhbHRoLXBpbGwtc3RlcD0ie3tzcGVjaWZpY0hlYWx0aFBpbGxTdGVwfX0iCiAgICAgICAgICAgIGhlYWx0aC1waWxsLXN0ZXAtaW5kZXg9IltbX2hlYWx0aFBpbGxTdGVwSW5kZXhdXSIKICAgICAgICAgICAgcmVuZGVyLWhpZXJhcmNoeT0ie3tfcmVuZGVySGllcmFyY2h5fX0iCiAgICAgICAgICAgIHNlbGVjdGVkLW5vZGU9Int7X3NlbGVjdGVkTm9kZX19IgogICAgICAgICAgICBzdGF0cz0iW1tfc3RhdHNdXSIKICAgICAgICAgICAgdHJhY2UtaW5wdXRzPSJbW190cmFjZUlucHV0c11dIgogICAgICAgICAgICBhdXRvLWV4dHJhY3Qtbm9kZXM9IltbX2F1dG9FeHRyYWN0Tm9kZXNdXSIKICAgICAgICAgID48L3RmLWdyYXBoLWJvYXJkPgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgIDwvdGYtZGFzaGJvYXJkLWxheW91dD4KICAgIDxzdHlsZT4KICAgICAgOmhvc3QgL2RlZXAvIHsKICAgICAgICBmb250LWZhbWlseTogJ1JvYm90bycsIHNhbnMtc2VyaWY7CiAgICAgIH0KCiAgICAgIC5zaWRlYmFyIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgfQoKICAgICAgLmNlbnRlciB7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgfQoKICAgICAgcGFwZXItZGlhbG9nIHsKICAgICAgICBwYWRkaW5nOiAyMHB4OwogICAgICB9CgogICAgICAubm8tZGF0YS1tZXNzYWdlIHsKICAgICAgICBtYXgtd2lkdGg6IDU0MHB4OwogICAgICAgIG1hcmdpbjogODBweCBhdXRvIDAgYXV0bzsKICAgICAgfQoKICAgICAgLmdyYXBoYm9hcmQgewogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgfQoKICAgICAgLm5vLWdyYXBoIC5ncmFwaGJvYXJkIHsKICAgICAgICBkaXNwbGF5OiBub25lOwogICAgICB9CgogICAgICAuY2VudGVyOm5vdCgubm8tZ3JhcGgpIC5uby1kYXRhLW1lc3NhZ2UgewogICAgICAgIGRpc3BsYXk6IG5vbmU7CiAgICAgIH0KCiAgICAgIGEgewogICAgICAgIGNvbG9yOiB2YXIoLS10Yi1saW5rKTsKICAgICAgfQoKICAgICAgYTp2aXNpdGVkIHsKICAgICAgICBjb2xvcjogdmFyKC0tdGItbGluay12aXNpdGVkKTsKICAgICAgfQogICAgPC9zdHlsZT4KICBgLHQoW28oe3R5cGU6QXJyYXl9KSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpXSxfSnQucHJvdG90eXBlLCJfZGF0YXNldHMiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxfSnQucHJvdG90eXBlLCJfZGF0YXNldHNGZXRjaGVkIix2b2lkIDApLHQoW28oe3R5cGU6TnVtYmVyfSksZSgiZGVzaWduOnR5cGUiLE51bWJlcildLF9KdC5wcm90b3R5cGUsIl9zZWxlY3RlZERhdGFzZXQiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3Qsb2JzZXJ2ZXI6Il9yZW5kZXJIaWVyYXJjaHlDaGFuZ2VkIn0pLGUoImRlc2lnbjp0eXBlIixBS3QpXSxfSnQucHJvdG90eXBlLCJfcmVuZGVySGllcmFyY2h5Iix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLGJyKV0sX0p0LnByb3RvdHlwZSwiX3JlcXVlc3RNYW5hZ2VyIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLHhPKV0sX0p0LnByb3RvdHlwZSwiX2NhbmNlbGxlciIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLF9KdC5wcm90b3R5cGUsIl9kZWJ1Z2dlckRhdGFFbmFibGVkIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sX0p0LnByb3RvdHlwZSwiYWxsU3RlcHNNb2RlRW5hYmxlZCIsdm9pZCAwKSx0KFtvKHt0eXBlOk51bWJlcn0pLGUoImRlc2lnbjp0eXBlIixOdW1iZXIpXSxfSnQucHJvdG90eXBlLCJzcGVjaWZpY0hlYWx0aFBpbGxTdGVwIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbixvYnNlcnZlcjoiX2hlYWx0aFBpbGxzVG9nZ2xlZE9uQ2hhbmdlZCJ9KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLF9KdC5wcm90b3R5cGUsImhlYWx0aFBpbGxzVG9nZ2xlZE9uIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nLG5vdGlmeTohMH0pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxfSnQucHJvdG90eXBlLCJzZWxlY3RlZE5vZGUiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxfSnQucHJvdG90eXBlLCJfaXNBdHRhY2hlZCIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLF9KdC5wcm90b3R5cGUsIl9pbml0aWFsaXplZCIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLF9KdC5wcm90b3R5cGUsIl9hcmVIZWFsdGhQaWxsc0xvYWRpbmciLHZvaWQgMCksdChbbyh7dHlwZTpBcnJheSxub3RpZnk6ITB9KSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpXSxfSnQucHJvdG90eXBlLCJfZGVidWdnZXJOdW1lcmljQWxlcnRzIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLF9KdC5wcm90b3R5cGUsIl9ub2RlTmFtZXNUb0hlYWx0aFBpbGxzIix2b2lkIDApLHQoW28oe3R5cGU6TnVtYmVyfSksZSgiZGVzaWduOnR5cGUiLE51bWJlcildLF9KdC5wcm90b3R5cGUsIl9oZWFsdGhQaWxsU3RlcEluZGV4Iix2b2lkIDApLHQoW28oe3R5cGU6TnVtYmVyfSksZSgiZGVzaWduOnR5cGUiLE51bWJlcildLF9KdC5wcm90b3R5cGUsIl9oZWFsdGhQaWxsUmVxdWVzdElkIix2b2lkIDApLHQoW28oe3R5cGU6TnVtYmVyfSksZSgiZGVzaWduOnR5cGUiLE51bWJlcildLF9KdC5wcm90b3R5cGUsIl9oZWFsdGhQaWxsU3RlcFJlcXVlc3RUaW1lcklkIix2b2lkIDApLHQoW28oe3R5cGU6TnVtYmVyfSksZSgiZGVzaWduOnR5cGUiLE51bWJlcildLF9KdC5wcm90b3R5cGUsIl9oZWFsdGhQaWxsU3RlcFJlcXVlc3RUaW1lckRlbGF5Iix2b2lkIDApLHQoW28oe3R5cGU6QXJyYXl9KSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpXSxfSnQucHJvdG90eXBlLCJydW5zIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nLG5vdGlmeTohMCxvYnNlcnZlcjoiX3J1bk9ic2VydmVyIn0pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxfSnQucHJvdG90eXBlLCJydW4iLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sX0p0LnByb3RvdHlwZSwiX3NlbGVjdGlvbiIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxfSnQucHJvdG90eXBlLCJfY29tcGF0aWJpbGl0eVByb3ZpZGVyIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sX0p0LnByb3RvdHlwZSwiX3RyYWNlSW5wdXRzIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sX0p0LnByb3RvdHlwZSwiX2F1dG9FeHRyYWN0Tm9kZXMiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sX0p0LnByb3RvdHlwZSwiX3NlbGVjdGVkRmlsZSIsdm9pZCAwKSx0KFthKCJfaXNBdHRhY2hlZCIpLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKSxlKCJkZXNpZ246cmV0dXJudHlwZSIsdm9pZCAwKV0sX0p0LnByb3RvdHlwZSwiX21heWJlSW5pdGlhbGl6ZURhc2hib2FyZCIsbnVsbCksdChbYSgiX2RhdGFzZXRzRmV0Y2hlZCIsIl9kYXRhc2V0cyIsInJ1biIpLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKSxlKCJkZXNpZ246cmV0dXJudHlwZSIsdm9pZCAwKV0sX0p0LnByb3RvdHlwZSwiX2RldGVybWluZVNlbGVjdGVkRGF0YXNldCIsbnVsbCksdChbYSgiX2RhdGFzZXRzRmV0Y2hlZCIsIl9kYXRhc2V0cyIsIl9zZWxlY3RlZERhdGFzZXQiKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLF9KdC5wcm90b3R5cGUsIl91cGRhdGVTZWxlY3RlZERhdGFzZXROYW1lIixudWxsKSxfSnQ9dChbaSgidGYtZ3JhcGgtZGFzaGJvYXJkIildLF9KdCk7Y29uc3QgeUp0PWlJO2xldCB2SnQ9Y2xhc3MgZXh0ZW5kcyhjcihnbCh3ZSkpKXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5tb2RlPSJvZmZzZXQiLHRoaXMudGltZVByb3BlcnR5PSJzdGVwIix0aGlzLmJpbnM9ImJpbnMiLHRoaXMueD0ieCIsdGhpcy5keD0iZHgiLHRoaXMueT0ieSIsdGhpcy5jb2xvclNjYWxlPXlKdC5zY2FsZU9yZGluYWwoeUp0LnNjaGVtZUNhdGVnb3J5MTApLHRoaXMubW9kZVRyYW5zaXRpb25EdXJhdGlvbj01MDAsdGhpcy5fbmFtZT1udWxsLHRoaXMuX2RhdGE9bnVsbH1yZWFkeSgpe3N1cGVyLnJlYWR5KCksdGhpcy5zY29wZVN1YnRyZWUodGhpcy4kLnN2ZywhMCl9YXR0YWNoZWQoKXt0aGlzLl9hdHRhY2hlZD0hMH1kZXRhY2hlZCgpe3RoaXMuX2F0dGFjaGVkPSExfXNldFNlcmllc0RhdGEodCxlKXt0aGlzLl9uYW1lPXQsdGhpcy5fZGF0YT1lLHRoaXMucmVkcmF3KCl9X3JlZHJhd09uQ2hhbmdlKCl7dGhpcy5yZWRyYXcoKX1yZWRyYXcoKXt0aGlzLl9kcmF3KDApfV9tb2RlUmVkcmF3KCl7dGhpcy5fZHJhdyh0aGlzLm1vZGVUcmFuc2l0aW9uRHVyYXRpb24pfV9kcmF3KHQpe2lmKCF0aGlzLl9hdHRhY2hlZHx8IXRoaXMuX2RhdGEpcmV0dXJuO2lmKHZvaWQgMD09PXQpdGhyb3cgbmV3IEVycm9yKCJ2ei1oaXN0b2dyYW0tdGltZXNlcmllcyBfZHJhdyBuZWVkcyBkdXJhdGlvbiIpO2lmKHRoaXMuX2RhdGEubGVuZ3RoPD0wKXRocm93IG5ldyBFcnJvcigiTm90IGVub3VnaCBzdGVwcyBpbiB0aGUgZGF0YSIpO2lmKCF0aGlzLl9kYXRhWzBdLmhhc093blByb3BlcnR5KHRoaXMuYmlucykpdGhyb3cgbmV3IEVycm9yKCJObyBiaW5zIHByb3BlcnR5IG9mICciK3RoaXMuYmlucysiJyBpbiBkYXRhIik7aWYodGhpcy5fZGF0YVswXVt0aGlzLmJpbnNdLmxlbmd0aDw9MCl0aHJvdyBuZXcgRXJyb3IoIk11c3QgaGF2ZSBhdCBsZWFzdCBvbmUgYmluIGluIGJpbnMgaW4gZGF0YSIpO2lmKCF0aGlzLl9kYXRhWzBdW3RoaXMuYmluc11bMF0uaGFzT3duUHJvcGVydHkodGhpcy54KSl0aHJvdyBuZXcgRXJyb3IoIk5vIHggcHJvcGVydHkgJyIrdGhpcy54KyInIG9uIGJpbnMgZGF0YSIpO2lmKCF0aGlzLl9kYXRhWzBdW3RoaXMuYmluc11bMF0uaGFzT3duUHJvcGVydHkodGhpcy5keCkpdGhyb3cgbmV3IEVycm9yKCJObyBkeCBwcm9wZXJ0eSAnIit0aGlzLmR4KyInIG9uIGJpbnMgZGF0YSIpO2lmKCF0aGlzLl9kYXRhWzBdW3RoaXMuYmluc11bMF0uaGFzT3duUHJvcGVydHkodGhpcy55KSl0aHJvdyBuZXcgRXJyb3IoIk5vIHkgcHJvcGVydHkgJyIrdGhpcy55KyInIG9uIGJpbnMgZGF0YSIpO3ZhciBlPXRoaXMudGltZVByb3BlcnR5LG49dGhpcy54LGk9dGhpcy5iaW5zLHI9dGhpcy5keCxvPXRoaXMueSxhPXRoaXMuX2RhdGEscz10aGlzLm1vZGUsbD15SnQuaGNsKHRoaXMuY29sb3JTY2FsZSh0aGlzLl9uYW1lKSksYz15SnQuc2VsZWN0KHRoaXMuJC50b29sdGlwKSx1PWZ1bmN0aW9uKHQpe3JldHVybiB0W25dfSxoPWZ1bmN0aW9uKHQpe3JldHVybiB0W29dfSxkPWZ1bmN0aW9uKHQpe3JldHVybiB0W25dK3Rbcl19LHA9ZnVuY3Rpb24odCl7cmV0dXJuIHRbZV19OyJyZWxhdGl2ZSI9PT1lJiYocD1mdW5jdGlvbih0KXtyZXR1cm4gdC53YWxsX3RpbWUtYVswXS53YWxsX3RpbWV9KTt2YXIgZixtPXRoaXMuJC5zdmcuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksZz1tLndpZHRoLF89bS5oZWlnaHQseT17dG9wOjUscmlnaHQ6NjAsYm90dG9tOjIwLGxlZnQ6MjR9OyJvZmZzZXQiPT09cz95LnRvcD0oZj1fLzIuNSkrNTpmPV8teS50b3AteS5ib3R0b207dmFyIHY9Zy15LmxlZnQteS5yaWdodCxiPV8teS50b3AteS5ib3R0b207eUp0Lm1pbihhLHUpLHlKdC5tYXgoYSxkKTt2YXIgeD15SnQuZm9ybWF0KCIuM24iKSx3PXlKdC5mb3JtYXQoIi4wZiIpOyJ3YWxsX3RpbWUiPT09ZT93PXlKdC50aW1lRm9ybWF0KCIlbS8lZCAlWCIpOiJyZWxhdGl2ZSI9PT1lJiYodz1mdW5jdGlvbih0KXtyZXR1cm4geUp0LmZvcm1hdCgiLjFyIikodC8zNmU1KSsiaCJ9KTt2YXIgUz1hLm1hcCgoZnVuY3Rpb24odCxlKXtyZXR1cm5beUp0Lm1pbih0W2ldLHUpLHlKdC5tYXgodFtpXSxkKV19KSksTT1hLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHlKdC5leHRlbnQodFtpXSxoKX0pKSxFPTUwMCxUPXlKdC5leHRlbnQoYSxwKSxDPSgid2FsbF90aW1lIj09PWU/eUp0LnNjYWxlVGltZSgpOnlKdC5zY2FsZUxpbmVhcigpKS5kb21haW4oVCkucmFuZ2UoWzAsIm9mZnNldCI9PT1zP2I6MF0pLEE9eUp0LnNjYWxlTGluZWFyKCkuZG9tYWluKFswLHlKdC5tYXgoYSwoZnVuY3Rpb24odCxlKXtyZXR1cm4gTVtlXVsxXX0pKV0pLnJhbmdlKFtmLDBdKSxrPXlKdC5zY2FsZUxpbmVhcigpLmRvbWFpbihBLmRvbWFpbigpKS5yYW5nZShbRSwwXSksTD15SnQuc2NhbGVMaW5lYXIoKS5kb21haW4oW3lKdC5taW4oYSwoZnVuY3Rpb24odCxlKXtyZXR1cm4gU1tlXVswXX0pKSx5SnQubWF4KGEsKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIFNbZV1bMV19KSldKS5uaWNlKCkucmFuZ2UoWzAsdl0pLFA9eUp0LnNjYWxlTGluZWFyKCkuZG9tYWluKEwuZG9tYWluKCkpLnJhbmdlKFswLEVdKTtjb25zdCBOPXlKdC5zY2FsZUxpbmVhcigpLmRvbWFpbih5SnQuZXh0ZW50KGEscCkpLnJhbmdlKFtsLmJyaWdodGVyKCksbC5kYXJrZXIoKV0pLmludGVycG9sYXRlKHlKdC5pbnRlcnBvbGF0ZUhjbCk7dmFyIEk9eUp0LmF4aXNCb3R0b20oTCkudGlja3MoTWF0aC5tYXgoMix2LzIwKSksUj15SnQuYXhpc1JpZ2h0KEMpLnRpY2tzKE1hdGgubWF4KDIsYi8xNSkpLnRpY2tGb3JtYXQodyksTz15SnQuYXhpc1JpZ2h0KEEpLnRpY2tzKE1hdGgubWF4KDIsYi8xNSkpLnRpY2tTaXplKHYrNSkudGlja0Zvcm1hdCh4KSx6PWZ1bmN0aW9uKHQpe3JldHVybiB0W25dK3Rbcl0vMn0sRD15SnQubGluZSgpLngoKGZ1bmN0aW9uKHQpe3JldHVybiBQKHoodCkpfSkpLnkoKGZ1bmN0aW9uKHQpe3JldHVybiBrKHRbb10pfSkpLEI9dGhpcy4kLnN2ZyxIPXlKdC5zZWxlY3QoQiksRj1ILnRyYW5zaXRpb24oKS5kdXJhdGlvbih0KSxWPUguc2VsZWN0KCJnIikuY2xhc3NlZCgic21hbGwiLChmdW5jdGlvbigpe3JldHVybiB2PjAmJnY8PTE1MH0pKS5jbGFzc2VkKCJtZWRpdW0iLChmdW5jdGlvbigpe3JldHVybiB2PjE1MCYmdjw9MzAwfSkpLmNsYXNzZWQoImxhcmdlIiwoZnVuY3Rpb24oKXtyZXR1cm4gdj4zMDB9KSksVT1GLnNlbGVjdCgiZyIpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK3kubGVmdCsiLCIreS50b3ArIikiKSxqPXlKdC5iaXNlY3RvcihkKS5sZWZ0LEc9Vi5zZWxlY3QoIi5zdGFnZSIpLm9uKCJtb3VzZW92ZXIiLChmdW5jdGlvbigpe0ouc3R5bGUoIm9wYWNpdHkiLDEpLGV0LnN0eWxlKCJvcGFjaXR5IiwxKSxydC5zdHlsZSgib3BhY2l0eSIsMSksc3Quc3R5bGUoIm9wYWNpdHkiLDEpLGMuc3R5bGUoIm9wYWNpdHkiLDEpfSkpLm9uKCJtb3VzZW91dCIsKGZ1bmN0aW9uKCl7Si5zdHlsZSgib3BhY2l0eSIsMCksZXQuc3R5bGUoIm9wYWNpdHkiLDApLHJ0LnN0eWxlKCJvcGFjaXR5IiwwKSxzdC5zdHlsZSgib3BhY2l0eSIsMCksSi5jbGFzc2VkKCJob3Zlci1jbG9zZXN0IiwhMSksSy5jbGFzc2VkKCJvdXRsaW5lLWhvdmVyIiwhMSksYy5zdHlsZSgib3BhY2l0eSIsMCl9KSkub24oIm1vdXNlbW92ZSIsKGZ1bmN0aW9uIFcoKXt2YXIgdCxhPXlKdC5tb3VzZSh0aGlzKSxsPUwuaW52ZXJ0KGFbMF0pO2Z1bmN0aW9uIHUodCl7cmV0dXJuIE1hdGgubWluKHRbaV0ubGVuZ3RoLTEsaih0W2ldLGwpKX1DLmludmVydChhWzFdKTt2YXIgaCxkPTEvMDtKLmF0dHIoInRyYW5zZm9ybSIsKGZ1bmN0aW9uKGUsbCl7dmFyIGM9dShlKTtoPWU7dmFyIG09TChlW2ldW2NdW25dK2VbaV1bY11bcl0vMiksZz1BKGVbaV1bY11bb10pLF89Im9mZnNldCI9PT1zP0MocChlKSktKGYtZyk6Zyx5PU1hdGguYWJzKGFbMV0tXyk7cmV0dXJuIHk8ZCYmKGQ9eSx0PWUpLCJ0cmFuc2xhdGUoIittKyIsIitnKyIpIn0pKSxKLnNlbGVjdCgidGV4dCIpLnRleHQoKGZ1bmN0aW9uKHQpe3ZhciBlPXUodCk7cmV0dXJuIHRbaV1bZV1bb119KSksSi5jbGFzc2VkKCJob3Zlci1jbG9zZXN0IiwoZnVuY3Rpb24oZSl7cmV0dXJuIGU9PT10fSkpLEsuY2xhc3NlZCgib3V0bGluZS1ob3ZlciIsKGZ1bmN0aW9uKGUpe3JldHVybiBlPT09dH0pKTt2YXIgbT11KGgpO2V0LmF0dHIoInRyYW5zZm9ybSIsKGZ1bmN0aW9uKHQpe3JldHVybiJ0cmFuc2xhdGUoIitMKGhbaV1bbV1bbl0raFtpXVttXVtyXS8yKSsiLCAiK2IrIikifSkpLnNlbGVjdCgidGV4dCIpLnRleHQoKGZ1bmN0aW9uKHQpe3JldHVybiB4KGhbaV1bbV1bbl0raFtpXVttXVtyXS8yKX0pKTt2YXIgZz1SLnRpY2tGb3JtYXQoKTtydC5hdHRyKCJ0cmFuc2Zvcm0iLChmdW5jdGlvbihlKXtyZXR1cm4idHJhbnNsYXRlKCIrdisiLCAiKygib2Zmc2V0Ij09PXM/QyhwKHQpKTowKSsiKSJ9KSkuc3R5bGUoImRpc3BsYXkiLCJvZmZzZXQiPT09cz8iIjoibm9uZSIpLnNlbGVjdCgidGV4dCIpLnRleHQoKGZ1bmN0aW9uKGUpe3JldHVybiBnKHAodCkpfSkpO3ZhciBfPU8udGlja0Zvcm1hdCgpO3N0LmF0dHIoInRyYW5zZm9ybSIsKGZ1bmN0aW9uKGUpe3JldHVybiJ0cmFuc2xhdGUoIit2KyIsICIrKCJvZmZzZXQiPT09cz8wOkEodFtpXVttXVtvXSkpKyIpIn0pKS5zdHlsZSgiZGlzcGxheSIsIm9mZnNldCI9PT1zPyJub25lIjoiIikuc2VsZWN0KCJ0ZXh0IikudGV4dCgoZnVuY3Rpb24oZSl7cmV0dXJuIF8odFtpXVttXVtvXSl9KSk7dmFyIHk9eUp0Lm1vdXNlKEIpO2Muc3R5bGUoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiKyh5WzBdKzE1KSsicHgsIisoeVsxXS0xNSkrInB4KSIpLnNlbGVjdCgic3BhbiIpLnRleHQoIm9mZnNldCI9PT1zP18odFtpXVttXVtvXSk6KCJzdGVwIj09PWU/InN0ZXAgIjoiIikrZyhwKHQpKSl9KSk7Ry5zZWxlY3QoIi5iYWNrZ3JvdW5kIikuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrLXkubGVmdCsiLCIrLXkudG9wKyIpIikuYXR0cigid2lkdGgiLGcpLmF0dHIoImhlaWdodCIsXyk7dmFyIHE9Ry5zZWxlY3RBbGwoIi5oaXN0b2dyYW0iKS5kYXRhKGEpO3EuZXhpdCgpLnJlbW92ZSgpO3ZhciBZPXEuZW50ZXIoKS5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsImhpc3RvZ3JhbSIpLFg9WS5tZXJnZShxKS5zb3J0KChmdW5jdGlvbih0LGUpe3JldHVybiBwKHQpLXAoZSl9KSksJD1VLnNlbGVjdEFsbCgiLmhpc3RvZ3JhbSIpLmF0dHIoInRyYW5zZm9ybSIsKGZ1bmN0aW9uKHQpe3JldHVybiJ0cmFuc2xhdGUoMCwgIisoIm9mZnNldCI9PT1zP0MocCh0KSktZjowKSsiKSJ9KSk7WS5hcHBlbmQoImxpbmUiKS5hdHRyKCJjbGFzcyIsImJhc2VsaW5lIiksJC5zZWxlY3QoIi5iYXNlbGluZSIpLnN0eWxlKCJzdHJva2Utb3BhY2l0eSIsKGZ1bmN0aW9uKHQpe3JldHVybiJvZmZzZXQiPT09cz8uMTowfSkpLmF0dHIoInkxIixmKS5hdHRyKCJ5MiIsZikuYXR0cigieDIiLHYpLFkuYXBwZW5kKCJwYXRoIikuYXR0cigiY2xhc3MiLCJvdXRsaW5lIik7dmFyIEs9WC5zZWxlY3QoIi5vdXRsaW5lIikuYXR0cigidmVjdG9yLWVmZmVjdCIsIm5vbi1zY2FsaW5nLXN0cm9rZSIpLmF0dHIoImQiLChmdW5jdGlvbih0KXtyZXR1cm4oZnVuY3Rpb24odCl7cmV0dXJuIk0iK1Aoeih0WzBdKSkrIiwiK2soMCkrIkwiK0QodCkuc2xpY2UoMSkrIkwiK1Aoeih0W3QubGVuZ3RoLTFdKSkrIiwiK2soMCl9KSh0W2ldKX0pKS5zdHlsZSgic3Ryb2tlLXdpZHRoIiwxKTskLnNlbGVjdCgiLm91dGxpbmUiKS5hdHRyKCJ0cmFuc2Zvcm0iLCJzY2FsZSgiK3YvRSsiLCAiK2YvRSsiKSIpLnN0eWxlKCJzdHJva2UiLChmdW5jdGlvbih0KXtyZXR1cm4ib2Zmc2V0Ij09PXM/IiI6TihwKHQpKX0pKS5zdHlsZSgiZmlsbC1vcGFjaXR5IiwoZnVuY3Rpb24odCl7cmV0dXJuIm9mZnNldCI9PT1zPzE6MH0pKS5zdHlsZSgiZmlsbCIsKGZ1bmN0aW9uKHQpe3JldHVybiBOKHAodCkpfSkpO3ZhciBaPVkuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJob3ZlciIpLEo9WC5zZWxlY3QoIi5ob3ZlciIpLnN0eWxlKCJmaWxsIiwoZnVuY3Rpb24odCl7cmV0dXJuIE4ocCh0KSl9KSk7Wi5hcHBlbmQoImNpcmNsZSIpLmF0dHIoInIiLDIpLFouYXBwZW5kKCJ0ZXh0Iikuc3R5bGUoImRpc3BsYXkiLCJub25lIikuYXR0cigiZHgiLDQpO3ZhciBRPVYuc2VsZWN0KCIueC1heGlzLWhvdmVyIikuc2VsZWN0QWxsKCIubGFiZWwiKS5kYXRhKFsieCJdKSx0dD1RLmVudGVyKCkuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJsYWJlbCIpLGV0PVEubWVyZ2UodHQpO3R0LmFwcGVuZCgicmVjdCIpLmF0dHIoIngiLC0yMCkuYXR0cigieSIsNikuYXR0cigid2lkdGgiLDQwKS5hdHRyKCJoZWlnaHQiLDE0KSx0dC5hcHBlbmQoImxpbmUiKS5hdHRyKCJ4MSIsMCkuYXR0cigieDIiLDApLmF0dHIoInkxIiwwKS5hdHRyKCJ5MiIsNiksdHQuYXBwZW5kKCJ0ZXh0IikuYXR0cigiZHkiLDE4KTt2YXIgbnQ9Vi5zZWxlY3QoIi55LWF4aXMtaG92ZXIiKS5zZWxlY3RBbGwoIi5sYWJlbCIpLmRhdGEoWyJ5Il0pLGl0PW50LmVudGVyKCkuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJsYWJlbCIpLHJ0PW50Lm1lcmdlKGl0KTtpdC5hcHBlbmQoInJlY3QiKS5hdHRyKCJ4Iiw4KS5hdHRyKCJ5IiwtNikuYXR0cigid2lkdGgiLDQwKS5hdHRyKCJoZWlnaHQiLDE0KSxpdC5hcHBlbmQoImxpbmUiKS5hdHRyKCJ4MSIsMCkuYXR0cigieDIiLDYpLmF0dHIoInkxIiwwKS5hdHRyKCJ5MiIsMCksaXQuYXBwZW5kKCJ0ZXh0IikuYXR0cigiZHgiLDgpLmF0dHIoImR5Iiw0KTt2YXIgb3Q9Vi5zZWxlY3QoIi55LXNsaWNlLWF4aXMtaG92ZXIiKS5zZWxlY3RBbGwoIi5sYWJlbCIpLmRhdGEoWyJ5Il0pLGF0PW90LmVudGVyKCkuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJsYWJlbCIpLHN0PW90Lm1lcmdlKGF0KTthdC5hcHBlbmQoInJlY3QiKS5hdHRyKCJ4Iiw4KS5hdHRyKCJ5IiwtNikuYXR0cigid2lkdGgiLDQwKS5hdHRyKCJoZWlnaHQiLDE0KSxhdC5hcHBlbmQoImxpbmUiKS5hdHRyKCJ4MSIsMCkuYXR0cigieDIiLDYpLmF0dHIoInkxIiwwKS5hdHRyKCJ5MiIsMCksYXQuYXBwZW5kKCJ0ZXh0IikuYXR0cigiZHgiLDgpLmF0dHIoImR5Iiw0KSxVLnNlbGVjdCgiLnkuYXhpcy5zbGljZSIpLnN0eWxlKCJvcGFjaXR5Iiwib2Zmc2V0Ij09PXM/MDoxKS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoMCwgIisoIm9mZnNldCI9PT1zPy1mOjApKyIpIikuY2FsbChPKSxVLnNlbGVjdCgiLnguYXhpcyIpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgwLCAiK2IrIikiKS5jYWxsKEkpLFUuc2VsZWN0KCIueS5heGlzIikuc3R5bGUoIm9wYWNpdHkiLCJvZmZzZXQiPT09cz8xOjApLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK3YrIiwgIisoIm9mZnNldCI9PT1zPzA6YikrIikiKS5jYWxsKFIpLFUuc2VsZWN0QWxsKCIudGljayB0ZXh0IikuYXR0cigiZmlsbCIsIiNhYWEiKSxVLnNlbGVjdEFsbCgiLmF4aXMgcGF0aC5kb21haW4iKS5hdHRyKCJzdHJva2UiLCJub25lIil9fTtmdW5jdGlvbiBiSnQodCl7Y29uc3RbZSxuLGldPXQ7cmV0dXJue3dhbGxfdGltZTplLHN0ZXA6bixtaW46c2MoaS5tYXAoKChbdCwsXSk9PnQpKSksbWF4Om9jKGkubWFwKCgoWyx0XSk9PnQpKSksYnVja2V0czppLm1hcCgoKFt0LGUsbl0pPT4oe2xlZnQ6dCxyaWdodDplLGNvdW50Om59KSkpfX1mdW5jdGlvbiB4SnQodCxlLG4saT0zMCl7dm9pZCAwIT09ZSYmbnVsbCE9bnx8KGU9MCxuPTApLG49PT1lJiYobj0xLjEqZSsxLGU9ZS8xLjEtMSk7Y29uc3Qgcj0obi1lKS9pO2xldCBvPTA7Y29uc3QgYT1bXTtmb3IobGV0IHM9MDtzPGk7cysrKXtjb25zdCBpPWUrcypyLGw9aStyO2xldCBjPTA7Zm9yKDtvPHQuYnVja2V0cy5sZW5ndGg7KXtjb25zdCByPU1hdGgubWluKG4sdC5idWNrZXRzW29dLnJpZ2h0KSxhPU1hdGgubWF4KGUsdC5idWNrZXRzW29dLmxlZnQpO2lmKHItYT4wKXtjb25zdCBlPU1hdGgubWluKHIsbCktTWF0aC5tYXgoYSxpKSxuPWUvKHItYSkqdC5idWNrZXRzW29dLmNvdW50O2MrPWU+MD9uOjB9ZWxzZXtjb25zdCBlPWw+PW47Yys9aTw9YSYmKGU/cjw9bDpyPGwpP3QuYnVja2V0c1tvXS5jb3VudDowfWlmKHI+bClicmVhaztvKyt9YS5wdXNoKHt4OmksZHg6cix5OmN9KX1yZXR1cm4gYX12SnQudGVtcGxhdGU9eGVgCiAgICA8ZGl2IGlkPSJ0b29sdGlwIj48c3Bhbj48L3NwYW4+PC9kaXY+CiAgICA8c3ZnIGlkPSJzdmciPgogICAgICA8Zz4KICAgICAgICA8ZyBjbGFzcz0iYXhpcyB4Ij48L2c+CiAgICAgICAgPGcgY2xhc3M9ImF4aXMgeSI+PC9nPgogICAgICAgIDxnIGNsYXNzPSJheGlzIHkgc2xpY2UiPjwvZz4KICAgICAgICA8ZyBjbGFzcz0ic3RhZ2UiPgogICAgICAgICAgPHJlY3QgY2xhc3M9ImJhY2tncm91bmQiPjwvcmVjdD4KICAgICAgICA8L2c+CiAgICAgICAgPGcgY2xhc3M9IngtYXhpcy1ob3ZlciI+PC9nPgogICAgICAgIDxnIGNsYXNzPSJ5LWF4aXMtaG92ZXIiPjwvZz4KICAgICAgICA8ZyBjbGFzcz0ieS1zbGljZS1heGlzLWhvdmVyIj48L2c+CiAgICAgIDwvZz4KICAgIDwvc3ZnPgoKICAgIDxzdHlsZT4KICAgICAgOmhvc3QgewogICAgICAgIGNvbG9yOiAjYWFhOwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICBmbGV4LWdyb3c6IDE7CiAgICAgICAgZmxleC1zaHJpbms6IDE7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIC0tdnotaGlzdG9ncmFtLXRpbWVzZXJpZXMtaG92ZXItYmctY29sb3I6ICNmZmY7CiAgICAgICAgLS12ei1oaXN0b2dyYW0tdGltZXNlcmllcy1vdXRsaW5lLWNvbG9yOiAjZmZmOwogICAgICAgIC0tdnotaGlzdG9ncmFtLXRpbWVzZXJpZXMtaG92ZXItb3V0bGluZS1jb2xvcjogIzAwMDsKICAgICAgfQoKICAgICAgOmhvc3QoLmRhcmstbW9kZSkgewogICAgICAgIC0tdnotaGlzdG9ncmFtLXRpbWVzZXJpZXMtaG92ZXItYmctY29sb3I6IHZhcigKICAgICAgICAgIC0tcHJpbWFyeS1iYWNrZ3JvdW5kLWNvbG9yCiAgICAgICAgKTsKICAgICAgICAtLXZ6LWhpc3RvZ3JhbS10aW1lc2VyaWVzLW91dGxpbmUtY29sb3I6IHZhcigtLXBhcGVyLWdyZXktNjAwKTsKICAgICAgICAtLXZ6LWhpc3RvZ3JhbS10aW1lc2VyaWVzLWhvdmVyLW91dGxpbmUtY29sb3I6ICNmZmY7CiAgICAgIH0KCiAgICAgIHN2ZyB7CiAgICAgICAgZm9udC1mYW1pbHk6IHJvYm90bywgc2Fucy1zZXJpZjsKICAgICAgICBvdmVyZmxvdzogdmlzaWJsZTsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBmbGV4LWdyb3c6IDE7CiAgICAgICAgZmxleC1zaHJpbms6IDE7CiAgICAgIH0KCiAgICAgIHRleHQgewogICAgICAgIGZpbGw6IGN1cnJlbnRDb2xvcjsKICAgICAgfQoKICAgICAgI3Rvb2x0aXAgewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkOwogICAgICAgIGZvbnQtc2l6ZTogMTFweDsKICAgICAgfQoKICAgICAgLmJhY2tncm91bmQgewogICAgICAgIGZpbGwtb3BhY2l0eTogMDsKICAgICAgICBmaWxsOiByZWQ7CiAgICAgIH0KCiAgICAgIC5oaXN0b2dyYW0gewogICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgICB9CgogICAgICAuaG92ZXIgewogICAgICAgIGZvbnQtc2l6ZTogOXB4OwogICAgICAgIGRvbWluYW50LWJhc2VsaW5lOiBtaWRkbGU7CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgfQoKICAgICAgLmhvdmVyIGNpcmNsZSB7CiAgICAgICAgc3Ryb2tlOiB3aGl0ZTsKICAgICAgICBzdHJva2Utb3BhY2l0eTogMC41OwogICAgICAgIHN0cm9rZS13aWR0aDogMXB4OwogICAgICB9CgogICAgICAuaG92ZXIgdGV4dCB7CiAgICAgICAgZmlsbDogYmxhY2s7CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgfQoKICAgICAgLmhvdmVyLmhvdmVyLWNsb3Nlc3QgY2lyY2xlIHsKICAgICAgICBmaWxsOiB2YXIoLS12ei1oaXN0b2dyYW0tdGltZXNlcmllcy1ob3Zlci1vdXRsaW5lLWNvbG9yKSAhaW1wb3J0YW50OwogICAgICB9CgogICAgICAuaG92ZXIuaG92ZXItY2xvc2VzdCB0ZXh0IHsKICAgICAgICBvcGFjaXR5OiAxOwogICAgICB9CgogICAgICAuYmFzZWxpbmUgewogICAgICAgIHN0cm9rZTogYmxhY2s7CiAgICAgICAgc3Ryb2tlLW9wYWNpdHk6IDAuMTsKICAgICAgfQoKICAgICAgLm91dGxpbmUgewogICAgICAgIGZpbGw6IG5vbmU7CiAgICAgICAgc3Ryb2tlOiB2YXIoLS12ei1oaXN0b2dyYW0tdGltZXNlcmllcy1vdXRsaW5lLWNvbG9yKTsKICAgICAgICBzdHJva2Utb3BhY2l0eTogMC41OwogICAgICB9CgogICAgICAub3V0bGluZS5vdXRsaW5lLWhvdmVyIHsKICAgICAgICBzdHJva2U6IHZhcigtLXZ6LWhpc3RvZ3JhbS10aW1lc2VyaWVzLWhvdmVyLW91dGxpbmUtY29sb3IpICFpbXBvcnRhbnQ7CiAgICAgICAgc3Ryb2tlLW9wYWNpdHk6IDE7CiAgICAgIH0KCiAgICAgIC54LWF4aXMtaG92ZXIsCiAgICAgIC55LWF4aXMtaG92ZXIsCiAgICAgIC55LXNsaWNlLWF4aXMtaG92ZXIgewogICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgICB9CgogICAgICAueC1heGlzLWhvdmVyIC5sYWJlbCwKICAgICAgLnktYXhpcy1ob3ZlciAubGFiZWwsCiAgICAgIC55LXNsaWNlLWF4aXMtaG92ZXIgLmxhYmVsIHsKICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkOwogICAgICAgIGZvbnQtc2l6ZTogMTFweDsKICAgICAgICB0ZXh0LWFuY2hvcjogZW5kOwogICAgICB9CgogICAgICAueC1heGlzLWhvdmVyIHRleHQgewogICAgICAgIHRleHQtYW5jaG9yOiBtaWRkbGU7CiAgICAgIH0KCiAgICAgIC55LWF4aXMtaG92ZXIgdGV4dCwKICAgICAgLnktc2xpY2UtYXhpcy1ob3ZlciB0ZXh0IHsKICAgICAgICB0ZXh0LWFuY2hvcjogc3RhcnQ7CiAgICAgIH0KCiAgICAgIC54LWF4aXMtaG92ZXIgbGluZSwKICAgICAgLnktYXhpcy1ob3ZlciBsaW5lLAogICAgICAueS1zbGljZS1heGlzLWhvdmVyIGxpbmUgewogICAgICAgIHN0cm9rZTogY3VycmVudENvbG9yOwogICAgICB9CgogICAgICAueC1heGlzLWhvdmVyIHJlY3QsCiAgICAgIC55LWF4aXMtaG92ZXIgcmVjdCwKICAgICAgLnktc2xpY2UtYXhpcy1ob3ZlciByZWN0IHsKICAgICAgICBmaWxsOiB2YXIoLS12ei1oaXN0b2dyYW0tdGltZXNlcmllcy1ob3Zlci1iZy1jb2xvcik7CiAgICAgIH0KCiAgICAgICN0b29sdGlwLAogICAgICAueC1heGlzLWhvdmVyIHRleHQsCiAgICAgIC55LWF4aXMtaG92ZXIgdGV4dCwKICAgICAgLnktc2xpY2UtYXhpcy1ob3ZlciB0ZXh0IHsKICAgICAgICBjb2xvcjogdmFyKC0tdnotaGlzdG9ncmFtLXRpbWVzZXJpZXMtaG92ZXItb3V0bGluZS1jb2xvcik7CiAgICAgIH0KCiAgICAgIC5heGlzIHsKICAgICAgICBmb250LXNpemU6IDExcHg7CiAgICAgIH0KCiAgICAgIC5heGlzIHBhdGguZG9tYWluIHsKICAgICAgICBmaWxsOiBub25lOwogICAgICB9CgogICAgICAuYXhpcyAudGljayBsaW5lIHsKICAgICAgICBzdHJva2U6ICNkZGQ7CiAgICAgIH0KCiAgICAgIC5heGlzLnNsaWNlIHsKICAgICAgICBvcGFjaXR5OiAwOwogICAgICB9CgogICAgICAuYXhpcy5zbGljZSAudGljayBsaW5lIHsKICAgICAgICBzdHJva2UtZGFzaGFycmF5OiAyOwogICAgICB9CgogICAgICAuc21hbGwgLmF4aXMgdGV4dCB7CiAgICAgICAgZGlzcGxheTogbm9uZTsKICAgICAgfQogICAgICAuc21hbGwgLmF4aXMgLnRpY2s6Zmlyc3Qtb2YtdHlwZSB0ZXh0IHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgfQogICAgICAuc21hbGwgLmF4aXMgLnRpY2s6bGFzdC1vZi10eXBlIHRleHQgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICB9CiAgICAgIC5tZWRpdW0gLmF4aXMgdGV4dCB7CiAgICAgICAgZGlzcGxheTogbm9uZTsKICAgICAgfQogICAgICAubWVkaXVtIC5heGlzIC50aWNrOm50aC1jaGlsZCgybiArIDEpIHRleHQgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICB9CiAgICAgIC5sYXJnZSAuYXhpcyB0ZXh0IHsKICAgICAgICBkaXNwbGF5OiBub25lOwogICAgICB9CiAgICAgIC5sYXJnZSAuYXhpcyAudGljazpudGgtY2hpbGQoMm4gKyAxKSB0ZXh0IHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgfQogICAgPC9zdHlsZT4KICBgLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLHZKdC5wcm90b3R5cGUsIm1vZGUiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sdkp0LnByb3RvdHlwZSwidGltZVByb3BlcnR5Iix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLHZKdC5wcm90b3R5cGUsImJpbnMiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sdkp0LnByb3RvdHlwZSwieCIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSx2SnQucHJvdG90eXBlLCJkeCIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSx2SnQucHJvdG90eXBlLCJ5Iix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLHZKdC5wcm90b3R5cGUsImNvbG9yU2NhbGUiLHZvaWQgMCksdChbbyh7dHlwZTpOdW1iZXJ9KSxlKCJkZXNpZ246dHlwZSIsTnVtYmVyKV0sdkp0LnByb3RvdHlwZSwibW9kZVRyYW5zaXRpb25EdXJhdGlvbiIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLHZKdC5wcm90b3R5cGUsIl9hdHRhY2hlZCIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSx2SnQucHJvdG90eXBlLCJfbmFtZSIsdm9pZCAwKSx0KFtvKHt0eXBlOkFycmF5fSksZSgiZGVzaWduOnR5cGUiLEFycmF5KV0sdkp0LnByb3RvdHlwZSwiX2RhdGEiLHZvaWQgMCksdChbYSgidGltZVByb3BlcnR5IiwiY29sb3JTY2FsZSIsIl9hdHRhY2hlZCIpLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKSxlKCJkZXNpZ246cmV0dXJudHlwZSIsdm9pZCAwKV0sdkp0LnByb3RvdHlwZSwiX3JlZHJhd09uQ2hhbmdlIixudWxsKSx0KFthKCJtb2RlIiksZSgiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pLGUoImRlc2lnbjpyZXR1cm50eXBlIix2b2lkIDApXSx2SnQucHJvdG90eXBlLCJfbW9kZVJlZHJhdyIsbnVsbCksdkp0PXQoW2koInZ6LWhpc3RvZ3JhbS10aW1lc2VyaWVzIildLHZKdCk7bGV0IHdKdD1jbGFzcyBleHRlbmRzKGJDdChjcih3ZSkpKXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5nZXREYXRhTG9hZE5hbWU9KHtydW46dH0pPT50LHRoaXMucmVxdWVzdERhdGE9KHQsZSxuKT0+e2NvbnN0IGk9RXIoKS5wbHVnaW5Sb3V0ZSgiaGlzdG9ncmFtcyIsIi9oaXN0b2dyYW1zIik7UHJvbWlzZS5hbGwodC5tYXAoKHQ9Pntjb25zdCBuPVBPKGkse3RhZzp0LnRhZyxydW46dC5ydW59KTtyZXR1cm4gdGhpcy5yZXF1ZXN0TWFuYWdlci5yZXF1ZXN0KG4pLnRoZW4oKG49PntlKHtpdGVtOnQsZGF0YTpufSl9KSl9KSkpLmZpbmFsbHkoKCgpPT57bigpfSkpfSx0aGlzLmxvYWREYXRhQ2FsbGJhY2s9KHQsZSxuKT0+e2NvbnN0IGk9KGZ1bmN0aW9uIHIodCl7Y29uc3QgZT10Lm1hcChiSnQpLG49c2MoZSwodD0+dC5taW4pKSxpPW9jKGUsKHQ9PnQubWF4KSk7cmV0dXJuIGUubWFwKCh0PT4oe3dhbGxfdGltZTp0LndhbGxfdGltZSxzdGVwOnQuc3RlcCxiaW5zOnhKdCh0LG4saSl9KSkpfSkobiksbz10aGlzLmdldERhdGFMb2FkTmFtZShlKTt0aGlzLiQuY2hhcnQuc2V0U2VyaWVzRGF0YShvLGkpfSx0aGlzLl9jb2xvclNjYWxlRnVuY3Rpb249X08sdGhpcy5fZXhwYW5kZWQ9ITF9X3JlbG9hZE9uUnVuVGFnUmVxdWVzdE1hbmFnZXJDaGFuZ2UoKXt0aGlzLnJlbG9hZCgpfV91cGRhdGVEYXRhVG9Mb2FkKCl7dGhpcy5kYXRhVG9Mb2FkPVt7cnVuOnRoaXMucnVuLHRhZzp0aGlzLnRhZ31dfWdldCBfcnVuQ29sb3IoKXtyZXR1cm4gdGhpcy5fY29sb3JTY2FsZUZ1bmN0aW9uKHRoaXMucnVuKX1yZWRyYXcoKXt0aGlzLiQuY2hhcnQucmVkcmF3KCl9X3RvZ2dsZUV4cGFuZGVkKHQpe3RoaXMuc2V0KCJfZXhwYW5kZWQiLCF0aGlzLl9leHBhbmRlZCksdGhpcy5yZWRyYXcoKX19O3dKdC50ZW1wbGF0ZT14ZWAKICAgIDx0Zi1jYXJkLWhlYWRpbmcKICAgICAgdGFnPSJbW3RhZ11dIgogICAgICBydW49IltbcnVuXV0iCiAgICAgIGRpc3BsYXktbmFtZT0iW1t0YWdNZXRhZGF0YS5kaXNwbGF5TmFtZV1dIgogICAgICBkZXNjcmlwdGlvbj0iW1t0YWdNZXRhZGF0YS5kZXNjcmlwdGlvbl1dIgogICAgICBjb2xvcj0iW1tfcnVuQ29sb3JdXSIKICAgID48L3RmLWNhcmQtaGVhZGluZz4KICAgIDwhLS0KICAgICAgVGhlIG1haW4gaGlzdG9ncmFtIHRoYXQgd2UgcmVuZGVyLiBEYXRhIGlzIHNldCBkaXJlY3RseSB3aXRoCiAgICAgIFxgc2V0U2VyaWVzRGF0YVxgLCBub3Qgd2l0aCBhIGJvdW5kIHByb3BlcnR5LgogICAgLS0+CiAgICA8dnotaGlzdG9ncmFtLXRpbWVzZXJpZXMKICAgICAgaWQ9ImNoYXJ0IgogICAgICB0aW1lLXByb3BlcnR5PSJbW3RpbWVQcm9wZXJ0eV1dIgogICAgICBtb2RlPSJbW2hpc3RvZ3JhbU1vZGVdXSIKICAgICAgY29sb3Itc2NhbGU9IltbX2NvbG9yU2NhbGVGdW5jdGlvbl1dIgogICAgPjwvdnotaGlzdG9ncmFtLXRpbWVzZXJpZXM+CiAgICA8ZGl2IHN0eWxlPSJkaXNwbGF5OiBmbGV4OyBmbGV4LWRpcmVjdGlvbjogcm93OyI+CiAgICAgIDxwYXBlci1pY29uLWJ1dHRvbgogICAgICAgIHNlbGVjdGVkJD0iW1tfZXhwYW5kZWRdXSIKICAgICAgICBpY29uPSJmdWxsc2NyZWVuIgogICAgICAgIG9uLXRhcD0iX3RvZ2dsZUV4cGFuZGVkIgogICAgICA+PC9wYXBlci1pY29uLWJ1dHRvbj4KICAgIDwvZGl2PgogICAgPHN0eWxlPgogICAgICA6aG9zdCB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgIHdpZHRoOiAzMzBweDsKICAgICAgICBoZWlnaHQ6IDIzNXB4OwogICAgICAgIG1hcmdpbi1yaWdodDogMTBweDsKICAgICAgICBtYXJnaW4tYm90dG9tOiAxNXB4OwogICAgICB9CiAgICAgIDpob3N0KFtfZXhwYW5kZWRdKSB7CiAgICAgICAgd2lkdGg6IDcwMHB4OwogICAgICAgIGhlaWdodDogNTAwcHg7CiAgICAgIH0KCiAgICAgIHZ6LWhpc3RvZ3JhbS10aW1lc2VyaWVzIHsKICAgICAgICAtbW96LXVzZXItc2VsZWN0OiBub25lOwogICAgICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAgICAgd2lsbC1jaGFuZ2U6IHRyYW5zZm9ybTsKICAgICAgfQoKICAgICAgcGFwZXItaWNvbi1idXR0b24gewogICAgICAgIGNvbG9yOiAjMjE5NmYzOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDEwMCU7CiAgICAgICAgd2lkdGg6IDMycHg7CiAgICAgICAgaGVpZ2h0OiAzMnB4OwogICAgICAgIHBhZGRpbmc6IDRweDsKICAgICAgfQoKICAgICAgcGFwZXItaWNvbi1idXR0b25bc2VsZWN0ZWRdIHsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS10Yi11aS1saWdodC1hY2NlbnQpOwogICAgICB9CgogICAgICB0Zi1jYXJkLWhlYWRpbmcgewogICAgICAgIG1hcmdpbi1ib3R0b206IDEwcHg7CiAgICAgICAgd2lkdGg6IDkwJTsKICAgICAgfQogICAgPC9zdHlsZT4KICBgLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLHdKdC5wcm90b3R5cGUsInJ1biIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSx3SnQucHJvdG90eXBlLCJ0YWciLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sd0p0LnByb3RvdHlwZSwiZ2V0RGF0YUxvYWROYW1lIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLGJyKV0sd0p0LnByb3RvdHlwZSwicmVxdWVzdE1hbmFnZXIiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sd0p0LnByb3RvdHlwZSwibG9hZERhdGFDYWxsYmFjayIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSx3SnQucHJvdG90eXBlLCJ0YWdNZXRhZGF0YSIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSx3SnQucHJvdG90eXBlLCJ0aW1lUHJvcGVydHkiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sd0p0LnByb3RvdHlwZSwiaGlzdG9ncmFtTW9kZSIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbildLHdKdC5wcm90b3R5cGUsIl9jb2xvclNjYWxlRnVuY3Rpb24iLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFuLHJlZmxlY3RUb0F0dHJpYnV0ZTohMH0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sd0p0LnByb3RvdHlwZSwiX2V4cGFuZGVkIix2b2lkIDApLHQoW2EoInJ1biIsInRhZyIsInJlcXVlc3RNYW5hZ2VyIiksZSgiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pLGUoImRlc2lnbjpyZXR1cm50eXBlIix2b2lkIDApXSx3SnQucHJvdG90eXBlLCJfcmVsb2FkT25SdW5UYWdSZXF1ZXN0TWFuYWdlckNoYW5nZSIsbnVsbCksdChbYSgicnVuIiwidGFnIiksZSgiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pLGUoImRlc2lnbjpyZXR1cm50eXBlIix2b2lkIDApXSx3SnQucHJvdG90eXBlLCJfdXBkYXRlRGF0YVRvTG9hZCIsbnVsbCksdChbcygicnVuIiksZSgiZGVzaWduOnR5cGUiLFN0cmluZyksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sd0p0LnByb3RvdHlwZSwiX3J1bkNvbG9yIixudWxsKSx3SnQ9dChbaSgidGYtaGlzdG9ncmFtLWxvYWRlciIpXSx3SnQpO2xldCBTSnQ9Y2xhc3MgZXh0ZW5kcyhjcih3ZSkpe2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLnJlbG9hZE9uUmVhZHk9ITAsdGhpcy5faGlzdG9ncmFtTW9kZT0ib2Zmc2V0Iix0aGlzLl90aW1lUHJvcGVydHk9InN0ZXAiLHRoaXMuX3Jlc3RhbXA9ITEsdGhpcy5fcmVxdWVzdE1hbmFnZXI9bmV3IGJyfV9yZWRyYXdDYXRlZ29yeVBhbmUodCxlKXtlJiZ0LnRhcmdldC5xdWVyeVNlbGVjdG9yQWxsKCJ0Zi1oaXN0b2dyYW0tbG9hZGVyIikuZm9yRWFjaCgodD0+dC5yZWRyYXcoKSkpfXJlYWR5KCl7c3VwZXIucmVhZHkoKSx0aGlzLnJlbG9hZE9uUmVhZHkmJnRoaXMucmVsb2FkKCl9cmVsb2FkKCl7dGhpcy5fZmV0Y2hUYWdzKCkudGhlbigoKCk9Pnt0aGlzLl9yZWxvYWRIaXN0b2dyYW1zKCl9KSl9X2ZldGNoVGFncygpe2NvbnN0IHQ9RXIoKS5wbHVnaW5Sb3V0ZSgiaGlzdG9ncmFtcyIsIi90YWdzIik7cmV0dXJuIHRoaXMuX3JlcXVlc3RNYW5hZ2VyLnJlcXVlc3QodCkudGhlbigodD0+e2lmKENlLmV4cG9ydHMuaXNFcXVhbCh0LHRoaXMuX3J1blRvVGFnSW5mbykpcmV0dXJuO2NvbnN0IGU9Q2UuZXhwb3J0cy5tYXBWYWx1ZXModCwodD0+T2JqZWN0LmtleXModCkpKSxuPWZyKGUpO3RoaXMuc2V0KCJfZGF0YU5vdEZvdW5kIiwwPT09bi5sZW5ndGgpLHRoaXMuc2V0KCJfcnVuVG9UYWciLGUpLHRoaXMuc2V0KCJfcnVuVG9UYWdJbmZvIix0KSx0aGlzLmFzeW5jKCgoKT0+e3RoaXMuc2V0KCJfY2F0ZWdvcmllc0RvbVJlYWR5IiwhMCl9KSl9KSl9X3JlbG9hZEhpc3RvZ3JhbXMoKXt0aGlzLnJvb3QucXVlcnlTZWxlY3RvckFsbCgidGYtaGlzdG9ncmFtLWxvYWRlciIpLmZvckVhY2goKHQ9Pnt0LnJlbG9hZCgpfSkpfV9zaG91bGRPcGVuKHQpe3JldHVybiB0PD0yfWdldCBfY2F0ZWdvcmllcygpe3JldHVybiBJcih0aGlzLl9ydW5Ub1RhZyx0aGlzLl9zZWxlY3RlZFJ1bnMsdGhpcy5fdGFnRmlsdGVyKX1fdGFnTWV0YWRhdGEodCxlLG4pe3JldHVybiB0W2VdW25dfX07U0p0LnRlbXBsYXRlPXhlYAogICAgPHRmLWRhc2hib2FyZC1sYXlvdXQ+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/dC5kaXNwbGF5TmFtZTp0Lm5hbWV9ZnVuY3Rpb24gQ0p0KHQpe2lmKCIiIT09dC5kaXNwbGF5TmFtZSYmdm9pZCAwIT09dC5kaXNwbGF5TmFtZSlyZXR1cm4gdC5kaXNwbGF5TmFtZTtsZXQgZT10Lm5hbWUuZ3JvdXAsbj10Lm5hbWUudGFnO3JldHVybiB2b2lkIDA9PT1lJiYoZT0iIiksdm9pZCAwPT09biYmKG49IiIpLCIiPT09ZT9uOmUrIi4iK259ZnVuY3Rpb24gQUp0KHQsZSl7aWYoZTx0LmhwYXJhbUNvbHVtbnMubGVuZ3RoKXJldHVybiBUSnQodC5ocGFyYW1Db2x1bW5zW2VdLmhwYXJhbUluZm8pO3JldHVybiBDSnQodC5tZXRyaWNDb2x1bW5zW2UtdC5ocGFyYW1Db2x1bW5zLmxlbmd0aF0ubWV0cmljSW5mbyl9ZnVuY3Rpb24ga0p0KHQpe3JldHVybiB0LmhwYXJhbUNvbHVtbnMubGVuZ3RofWZ1bmN0aW9uIExKdCh0KXtyZXR1cm4gdC5tZXRyaWNDb2x1bW5zLmxlbmd0aH1mdW5jdGlvbiBQSnQodCl7cmV0dXJuIGtKdCh0KStMSnQodCl9ZnVuY3Rpb24gTkp0KHQsZSl7cmV0dXJuIHRbZV19ZnVuY3Rpb24gSUp0KHQsZSl7cmV0dXJuIHQuZmluZCgodD0+Q2UuZXhwb3J0cy5pc0VxdWFsKHQubmFtZSxlKSkpfWZ1bmN0aW9uIFJKdCh0LGUsbil7cmV0dXJuIGUuaHBhcmFtc1t0LmhwYXJhbUNvbHVtbnNbbl0uaHBhcmFtSW5mby5uYW1lXX1mdW5jdGlvbiBPSnQodCxlLG4pe2NvbnN0IGk9SUp0KGUubWV0cmljVmFsdWVzLHQubWV0cmljQ29sdW1uc1tuXS5tZXRyaWNJbmZvLm5hbWUpO3JldHVybiB2b2lkIDA9PT1pP3ZvaWQgMDppLnZhbHVlfWZ1bmN0aW9uIHpKdCh0LGUsbil7cmV0dXJuIG48dC5ocGFyYW1Db2x1bW5zLmxlbmd0aD9SSnQodCxlLG4pOk9KdCh0LGUsbi10LmhwYXJhbUNvbHVtbnMubGVuZ3RoKX1mdW5jdGlvbiBESnQodCxlLG4pe3JldHVybiBHbChlLChlPT56SnQodCxlLG4pKSl9ZnVuY3Rpb24gQkp0KHQsZSxuKXtsZXQgaTtpZihuPGUuaHBhcmFtSW5mb3MubGVuZ3RoKWk9dC5ocGFyYW1Db2x1bW5zLmZpbmRJbmRleCgodD0+dC5ocGFyYW1JbmZvLm5hbWU9PT1lLmhwYXJhbUluZm9zW25dLm5hbWUpKTtlbHNle2NvbnN0IHI9ZS5tZXRyaWNJbmZvc1tuLWUuaHBhcmFtSW5mb3MubGVuZ3RoXS5uYW1lO2k9dC5ocGFyYW1Db2x1bW5zLmxlbmd0aCt0Lm1ldHJpY0NvbHVtbnMuZmluZEluZGV4KCh0PT50Lm1ldHJpY0luZm8ubmFtZT09PXIpKX1yZXR1cm4gY29uc29sZS5hc3NlcnQoLTEhPT1pKSxpfWZ1bmN0aW9uIEhKdCh0KXtyZXR1cm4gdC5ocGFyYW1JbmZvcy5sZW5ndGh9ZnVuY3Rpb24gRkp0KHQpe3JldHVybiB0Lm1ldHJpY0luZm9zLmxlbmd0aH1mdW5jdGlvbiBWSnQodCxlLG4pe3JldHVybiBHbChlLChlPT5XSnQodCxlLG4pKSl9ZnVuY3Rpb24gVUp0KHQsZSl7cmV0dXJuIHQuZmluZCgodD0+dC5uYW1lPT09ZSkpfWZ1bmN0aW9uIGpKdCh0LGUsbil7cmV0dXJuIGUuaHBhcmFtc1t0LmhwYXJhbUluZm9zW25dLm5hbWVdfWZ1bmN0aW9uIEdKdCh0LGUsbil7Y29uc3QgaT1JSnQoZS5tZXRyaWNWYWx1ZXMsdC5tZXRyaWNJbmZvc1tuXS5uYW1lKTtyZXR1cm4gdm9pZCAwPT09aT92b2lkIDA6aS52YWx1ZX1mdW5jdGlvbiBXSnQodCxlLG4pe3JldHVybiBuPHQuaHBhcmFtSW5mb3MubGVuZ3RoP2pKdCh0LGUsbik6R0p0KHQsZSxuLXQuaHBhcmFtSW5mb3MubGVuZ3RoKX1mdW5jdGlvbiBxSnQodCl7cmV0dXJuIENlLmV4cG9ydHMuaXNOdW1iZXIodCk/dC50b1ByZWNpc2lvbig1KTp2b2lkIDA9PT10PyIiOnQudG9TdHJpbmcoKX1mdW5jdGlvbiBZSnQodCxlKXtyZXR1cm4gdCp0K2UqZX1mdW5jdGlvbiBYSnQodCxlLG4saSl7cmV0dXJuIE1hdGguc3FydChZSnQodC1uLGUtaSkpfWZ1bmN0aW9uICRKdCh0LGUsbixpLHIsbyl7aWYodDxuJiZlPGkpcmV0dXJuIFhKdCh0LGUsbixpKTtpZihuPD10JiZ0PHImJmU8aSlyZXR1cm4gaS1lO2lmKHI8PXQmJmU8aSlyZXR1cm4gWEp0KHQsZSxyLGkpO2lmKHQ8biYmaTw9ZSYmZTxvKXJldHVybiBuLXQ7aWYobjw9dCYmdDxyJiZpPD1lJiZlPG8pcmV0dXJuIDA7aWYocjw9dCYmaTw9ZSYmZTxvKXJldHVybiB0LXI7aWYodDxuJiZvPD1lKXJldHVybiBYSnQodCxlLG4sbyk7aWYobjw9dCYmdDxyJiZvPD1lKXJldHVybiBlLW87aWYocjw9dCYmbzw9ZSlyZXR1cm4gWEp0KHQsZSxyLG8pO3Rocm93IlBvaW50ICh4LHkpIG11c3QgYmUgaW4gb25lIG9mIHRoZSByZWdpb25zIGRlZmluZWQgYWJvdmUuIn1mdW5jdGlvbiBLSnQodCxlKXtyZXR1cm4gdm9pZCAwPT09ZT8idHJhbnNsYXRlKCIrdCsiKSI6InRyYW5zbGF0ZSgiK3QrIiwiK2UrIikifWZ1bmN0aW9uIFpKdCh0LGUsbil7Y29uc3QgaT10LmdldChlLHQpO0FycmF5LmlzQXJyYXkoaSk/dC5zcGxpY2UuYXBwbHkodCxbZSwwLGkubGVuZ3RoXS5jb25jYXQobikpOnQuc2V0KGUsbil9ZnVuY3Rpb24gSkp0KHQpe2xldCBlPTA7Zm9yKGxldCBuPTA7bjx0Lmxlbmd0aDsrK24pZT0zMSplK3QuY2hhckNvZGVBdChuKSY0Mjk0OTY3Mjk1O3JldHVybiBlK01hdGgucG93KDIsMzEpfUVKdC50ZW1wbGF0ZT14ZWAKICAgIDxzbG90IG5hbWU9ImNvbnRlbnQiPjwvc2xvdD4KCiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgfQoKICAgICAgOmhvc3Qgc2xvdCB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgIH0KCiAgICAgIDpob3N0IDo6c2xvdHRlZCgqKSB7CiAgICAgICAgZmxleDogMCAwIGF1dG87CiAgICAgIH0KCiAgICAgIDpob3N0KFtvcmllbnRhdGlvbj0naG9yaXpvbnRhbCddKSBzbG90IHsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93OwogICAgICAgIG92ZXJmbG93LXg6IGF1dG87CiAgICAgIH0KCiAgICAgIDpob3N0KFtvcmllbnRhdGlvbj0ndmVydGljYWwnXSkgc2xvdCB7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICBvdmVyZmxvdy15OiBhdXRvOwogICAgICB9CgogICAgICA6aG9zdCA6OnNsb3R0ZWQoKjpub3QoOmxhc3QtY2hpbGQpKSB7CiAgICAgICAgYm9yZGVyOiAwIHNvbGlkIHZhcigtLWRpdmlkZXItY29sb3IsICNjY2MpOwogICAgICB9CgogICAgICA6aG9zdChbb3JpZW50YXRpb249J3ZlcnRpY2FsJ10pIDo6c2xvdHRlZCgqOm5vdCg6bGFzdC1jaGlsZCkpIHsKICAgICAgICBib3JkZXItYm90dG9tLXdpZHRoOiA1cHg7CiAgICAgIH0KCiAgICAgIDpob3N0KFtvcmllbnRhdGlvbj0naG9yaXpvbnRhbCddKSA6OnNsb3R0ZWQoKjpub3QoOmxhc3QtY2hpbGQpKSB7CiAgICAgICAgYm9yZGVyLXJpZ2h0LXdpZHRoOiA1cHg7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgYCx0KFtvKHt0eXBlOlN0cmluZyxyZWZsZWN0VG9BdHRyaWJ1dGU6ITB9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sRUp0LnByb3RvdHlwZSwib3JpZW50YXRpb24iLHZvaWQgMCksRUp0PXQoW2koImhwYXJhbXMtc3BsaXQtbGF5b3V0IildLEVKdCk7dmFyIFFKdD1PYmplY3QuZnJlZXplKHtfX3Byb3RvX186bnVsbCxocGFyYW1OYW1lOlRKdCxtZXRyaWNOYW1lOkNKdCxzY2hlbWFDb2x1bW5OYW1lOkFKdCxudW1IUGFyYW1zOmtKdCxudW1NZXRyaWNzOkxKdCxudW1Db2x1bW5zOlBKdCxocGFyYW1WYWx1ZUJ5TmFtZTpOSnQsbWV0cmljVmFsdWVCeU5hbWU6SUp0LGhwYXJhbVZhbHVlQnlJbmRleDpSSnQsbWV0cmljVmFsdWVCeUluZGV4Ok9KdCxjb2x1bW5WYWx1ZUJ5SW5kZXg6ekp0LG51bWVyaWNDb2x1bW5FeHRlbnQ6REp0LGdldEFic29sdXRlQ29sdW1uSW5kZXg6Qkp0LHNjaGVtYVZpc2libGVDb2x1bW5OYW1lOmZ1bmN0aW9uIHRRdCh0LGUpe3JldHVybiBlPHQuaHBhcmFtSW5mb3MubGVuZ3RoP1RKdCh0LmhwYXJhbUluZm9zW2VdKTpDSnQodC5tZXRyaWNJbmZvc1tlLXQuaHBhcmFtSW5mb3MubGVuZ3RoXSl9LG51bVZpc2libGVIUGFyYW1zOkhKdCxudW1WaXNpYmxlTWV0cmljczpGSnQsbnVtVmlzaWJsZUNvbHVtbnM6ZnVuY3Rpb24gZVF0KHQpe3JldHVybiBISnQodCkrRkp0KHQpfSx2aXNpYmxlTnVtZXJpY0NvbHVtbkV4dGVudDpWSnQscHJldHR5UHJpbnRIUGFyYW1WYWx1ZUJ5TmFtZTpmdW5jdGlvbiBuUXQodCxlKXtyZXR1cm4gcUp0KE5KdCh0LGUpKX0scHJldHR5UHJpbnRNZXRyaWNWYWx1ZUJ5TmFtZTpmdW5jdGlvbiBpUXQodCxlKXtyZXR1cm4gcUp0KElKdCh0LGUpKX0sc2Vzc2lvbkdyb3VwV2l0aE5hbWU6VUp0LGhwYXJhbVZhbHVlQnlWaXNpYmxlSW5kZXg6akp0LG1ldHJpY1ZhbHVlQnlWaXNpYmxlSW5kZXg6R0p0LGNvbHVtblZhbHVlQnlWaXNpYmxlSW5kZXg6V0p0LHByZXR0eVByaW50OnFKdCxsMk5vcm1TcXVhcmVkOllKdCxldWNsaWRlYW5EaXN0OlhKdCxwb2ludFRvUmVjdGFuZ2xlRGlzdDokSnQsdHJhbnNsYXRlU3RyOktKdCxyb3RhdGVTdHI6ZnVuY3Rpb24gclF0KHQsZSxuKXtsZXQgaT0icm90YXRlKCIrdDtyZXR1cm4gdm9pZCAwIT09ZSYmdm9pZCAwIT09biYmKGk9aSsiLCIrZSsiLCIrbiksaSs9IikiLGl9LGlzTnVsbE9yVW5kZWZpbmVkOmZ1bmN0aW9uIG9RdCh0KXtyZXR1cm4gbnVsbD09dH0scXVhZFRyZWVWaXNpdFBvaW50c0luUmVjdDpmdW5jdGlvbiBhUXQodCxlLG4saSxyLG8pe3QudmlzaXQoKChhLHMsbCxjLHUpPT57aWYodm9pZCAwPT09YS5sZW5ndGgpe2Rve2NvbnN0IHM9dC54KCkoYS5kYXRhKSxsPXQueSgpKGEuZGF0YSk7ZTw9cyYmczxpJiZuPD1sJiZsPHImJm8oYS5kYXRhKX13aGlsZShhPWEubmV4dCk7cmV0dXJuITB9cmV0dXJuIHM+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+dH0pLGtRdD1gICR7ZFF0fSBgO2NsYXNzIExRdHtjb25zdHJ1Y3Rvcih0KXt0aGlzLnZhbHVlPXZvaWQgMCx0aGlzLl9fcGVuZGluZ1ZhbHVlPXZvaWQgMCx0aGlzLm9wdGlvbnM9dH1hcHBlbmRJbnRvKHQpe3RoaXMuc3RhcnROb2RlPXQuYXBwZW5kQ2hpbGQodlF0KCkpLHRoaXMuZW5kTm9kZT10LmFwcGVuZENoaWxkKHZRdCgpKX1pbnNlcnRBZnRlck5vZGUodCl7dGhpcy5zdGFydE5vZGU9dCx0aGlzLmVuZE5vZGU9dC5uZXh0U2libGluZ31hcHBlbmRJbnRvUGFydCh0KXt0Ll9faW5zZXJ0KHRoaXMuc3RhcnROb2RlPXZRdCgpKSx0Ll9faW5zZXJ0KHRoaXMuZW5kTm9kZT12UXQoKSl9aW5zZXJ0QWZ0ZXJQYXJ0KHQpe3QuX19pbnNlcnQodGhpcy5zdGFydE5vZGU9dlF0KCkpLHRoaXMuZW5kTm9kZT10LmVuZE5vZGUsdC5lbmROb2RlPXRoaXMuc3RhcnROb2RlfXNldFZhbHVlKHQpe3RoaXMuX19wZW5kaW5nVmFsdWU9dH1jb21taXQoKXtpZihudWxsPT09dGhpcy5zdGFydE5vZGUucGFyZW50Tm9kZSlyZXR1cm47Zm9yKDsiZnVuY3Rpb24iPT10eXBlb2YodD10aGlzLl9fcGVuZGluZ1ZhbHVlKSYmTVF0Lmhhcyh0KTspe2NvbnN0IHQ9dGhpcy5fX3BlbmRpbmdWYWx1ZTt0aGlzLl9fcGVuZGluZ1ZhbHVlPUVRdCx0KHRoaXMpfXZhciB0O2NvbnN0IGU9dGhpcy5fX3BlbmRpbmdWYWx1ZTtlIT09RVF0JiYoKHQ9Pm51bGw9PT10fHwhKCJvYmplY3QiPT10eXBlb2YgdHx8ImZ1bmN0aW9uIj09dHlwZW9mIHQpKShlKT9lIT09dGhpcy52YWx1ZSYmdGhpcy5fX2NvbW1pdFRleHQoZSk6ZSBpbnN0YW5jZW9mIGNsYXNze2NvbnN0cnVjdG9yKHQsZSxuLGkpe3RoaXMuc3RyaW5ncz10LHRoaXMudmFsdWVzPWUsdGhpcy50eXBlPW4sdGhpcy5wcm9jZXNzb3I9aX1nZXRIVE1MKCl7Y29uc3QgdD10aGlzLnN0cmluZ3MubGVuZ3RoLTE7bGV0IGU9IiIsbj0hMTtmb3IobGV0IGk9MDtpPHQ7aSsrKXtjb25zdCB0PXRoaXMuc3RyaW5nc1tpXSxyPXQubGFzdEluZGV4T2YoIlx4M2MhLS0iKTtuPShyPi0xfHxuKSYmLTE9PT10LmluZGV4T2YoIi0tXHgzZSIscisxKTtjb25zdCBvPWJRdC5leGVjKHQpO2UrPW51bGw9PT1vP3QrKG4/a1F0OnBRdCk6dC5zdWJzdHIoMCxvLmluZGV4KStvWzFdK29bMl0rbVF0K29bM10rZFF0fXJldHVybiBlKz10aGlzLnN0cmluZ3NbdF0sZX1nZXRUZW1wbGF0ZUVsZW1lbnQoKXtjb25zdCB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRlbXBsYXRlIik7bGV0IGU9dGhpcy5nZXRIVE1MKCk7cmV0dXJuIHZvaWQgMCE9PUFRdCYmKGU9QVF0LmNyZWF0ZUhUTUwoZSkpLHQuaW5uZXJIVE1MPWUsdH19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCAoYykgMjAxNyBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICAgKiBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgICAqIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dAogICAgICogVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdAogICAgICogaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0CiAgICAgKiBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUgZm91bmQgYXQKICAgICAqIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0CiAgICAgKiBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcyBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbwogICAgICogc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudCBmb3VuZCBhdAogICAgICogaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAgKi8/dGhpcy5fX2NvbW1pdFRlbXBsYXRlUmVzdWx0KGUpOmUgaW5zdGFuY2VvZiBOb2RlP3RoaXMuX19jb21taXROb2RlKGUpOih0PT5BcnJheS5pc0FycmF5KHQpfHwhKCF0fHwhdFtTeW1ib2wuaXRlcmF0b3JdKSkoZSk/dGhpcy5fX2NvbW1pdEl0ZXJhYmxlKGUpOmU9PT1UUXQ/KHRoaXMudmFsdWU9VFF0LHRoaXMuY2xlYXIoKSk6dGhpcy5fX2NvbW1pdFRleHQoZSkpfV9faW5zZXJ0KHQpe3RoaXMuZW5kTm9kZS5wYXJlbnROb2RlLmluc2VydEJlZm9yZSh0LHRoaXMuZW5kTm9kZSl9X19jb21taXROb2RlKHQpe3RoaXMudmFsdWUhPT10JiYodGhpcy5jbGVhcigpLHRoaXMuX19pbnNlcnQodCksdGhpcy52YWx1ZT10KX1fX2NvbW1pdFRleHQodCl7Y29uc3QgZT10aGlzLnN0YXJ0Tm9kZS5uZXh0U2libGluZyxuPSJzdHJpbmciPT10eXBlb2YodD1udWxsPT10PyIiOnQpP3Q6U3RyaW5nKHQpO2U9PT10aGlzLmVuZE5vZGUucHJldmlvdXNTaWJsaW5nJiYzPT09ZS5ub2RlVHlwZT9lLmRhdGE9bjp0aGlzLl9fY29tbWl0Tm9kZShkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShuKSksdGhpcy52YWx1ZT10fV9fY29tbWl0VGVtcGxhdGVSZXN1bHQodCl7Y29uc3QgZT10aGlzLm9wdGlvbnMudGVtcGxhdGVGYWN0b3J5KHQpO2lmKHRoaXMudmFsdWUgaW5zdGFuY2VvZiBDUXQmJnRoaXMudmFsdWUudGVtcGxhdGU9PT1lKXRoaXMudmFsdWUudXBkYXRlKHQudmFsdWVzKTtlbHNle2NvbnN0IG49bmV3IENRdChlLHQucHJvY2Vzc29yLHRoaXMub3B0aW9ucyksaT1uLl9jbG9uZSgpO24udXBkYXRlKHQudmFsdWVzKSx0aGlzLl9fY29tbWl0Tm9kZShpKSx0aGlzLnZhbHVlPW59fV9fY29tbWl0SXRlcmFibGUodCl7QXJyYXkuaXNBcnJheSh0aGlzLnZhbHVlKXx8KHRoaXMudmFsdWU9W10sdGhpcy5jbGVhcigpKTtjb25zdCBlPXRoaXMudmFsdWU7bGV0IG4saT0wO2Zvcihjb25zdCByIG9mIHQpbj1lW2ldLHZvaWQgMD09PW4mJihuPW5ldyBMUXQodGhpcy5vcHRpb25zKSxlLnB1c2gobiksMD09PWk/bi5hcHBlbmRJbnRvUGFydCh0aGlzKTpuLmluc2VydEFmdGVyUGFydChlW2ktMV0pKSxuLnNldFZhbHVlKHIpLG4uY29tbWl0KCksaSsrO2k8ZS5sZW5ndGgmJihlLmxlbmd0aD1pLHRoaXMuY2xlYXIobiYmbi5lbmROb2RlKSl9Y2xlYXIodD10aGlzLnN0YXJ0Tm9kZSl7aFF0KHRoaXMuc3RhcnROb2RlLnBhcmVudE5vZGUsdC5uZXh0U2libGluZyx0aGlzLmVuZE5vZGUpfX1sZXQgUFF0PSExOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgKGMpIDIwMTcgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgICogVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0CiAgICAgKiBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQKICAgICAqIFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgICAqIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dAogICAgICogVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICAgKiBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dAogICAgICogQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28KICAgICAqIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQgZm91bmQgYXQKICAgICAqIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgICovCmZ1bmN0aW9uIE5RdCh0KXtsZXQgZT1JUXQuZ2V0KHQudHlwZSk7dm9pZCAwPT09ZSYmKGU9e3N0cmluZ3NBcnJheTpuZXcgV2Vha01hcCxrZXlTdHJpbmc6bmV3IE1hcH0sSVF0LnNldCh0LnR5cGUsZSkpO2xldCBuPWUuc3RyaW5nc0FycmF5LmdldCh0LnN0cmluZ3MpO2lmKHZvaWQgMCE9PW4pcmV0dXJuIG47Y29uc3QgaT10LnN0cmluZ3Muam9pbihkUXQpO3JldHVybiBuPWUua2V5U3RyaW5nLmdldChpKSx2b2lkIDA9PT1uJiYobj1uZXcgZ1F0KHQsdC5nZXRUZW1wbGF0ZUVsZW1lbnQoKSksZS5rZXlTdHJpbmcuc2V0KGksbikpLGUuc3RyaW5nc0FycmF5LnNldCh0LnN0cmluZ3Msbiksbn0oKCk9Pnt0cnl7Y29uc3QgdD17Z2V0IGNhcHR1cmUoKXtyZXR1cm4gUFF0PSEwLCExfX07d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInRlc3QiLHQsdCksd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoInRlc3QiLHQsdCl9Y2F0Y2godCl7fX0pKCk7Y29uc3QgSVF0PW5ldyBNYXAsUlF0PW5ldyBXZWFrTWFwOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgKGMpIDIwMTcgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgICogVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0CiAgICAgKiBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQKICAgICAqIFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgICAqIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dAogICAgICogVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICAgKiBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dAogICAgICogQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28KICAgICAqIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQgZm91bmQgYXQKICAgICAqIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgICovCi8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCAoYykgMjAxNyBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICAgKiBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgICAqIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dAogICAgICogVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdAogICAgICogaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0CiAgICAgKiBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUgZm91bmQgYXQKICAgICAqIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0CiAgICAgKiBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcyBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbwogICAgICogc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudCBmb3VuZCBhdAogICAgICogaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAgKi8KInVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3cmJih3aW5kb3cubGl0SHRtbFZlcnNpb25zfHwod2luZG93LmxpdEh0bWxWZXJzaW9ucz1bXSkpLnB1c2goIjEuNC4xIik7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCAoYykgMjAxNyBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICAgKiBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgICAqIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dAogICAgICogVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdAogICAgICogaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0CiAgICAgKiBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUgZm91bmQgYXQKICAgICAqIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0CiAgICAgKiBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcyBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbwogICAgICogc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudCBmb3VuZCBhdAogICAgICogaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAgKi9jb25zdCBPUXQ9KHQsZSk9PmAke3R9LS0ke2V9YDtsZXQgelF0PSEwO3ZvaWQgMD09PXdpbmRvdy5TaGFkeUNTUz96UXQ9ITE6dm9pZCAwPT09d2luZG93LlNoYWR5Q1NTLnByZXBhcmVUZW1wbGF0ZURvbSYmKGNvbnNvbGUud2FybigiSW5jb21wYXRpYmxlIFNoYWR5Q1NTIHZlcnNpb24gZGV0ZWN0ZWQuIFBsZWFzZSB1cGRhdGUgdG8gYXQgbGVhc3QgQHdlYmNvbXBvbmVudHMvd2ViY29tcG9uZW50c2pzQDIuMC4yIGFuZCBAd2ViY29tcG9uZW50cy9zaGFkeWNzc0AxLjMuMS4iKSx6UXQ9ITEpO2NvbnN0IERRdD10PT5lPT57Y29uc3Qgbj1PUXQoZS50eXBlLHQpO2xldCBpPUlRdC5nZXQobik7dm9pZCAwPT09aSYmKGk9e3N0cmluZ3NBcnJheTpuZXcgV2Vha01hcCxrZXlTdHJpbmc6bmV3IE1hcH0sSVF0LnNldChuLGkpKTtsZXQgcj1pLnN0cmluZ3NBcnJheS5nZXQoZS5zdHJpbmdzKTtpZih2b2lkIDAhPT1yKXJldHVybiByO2NvbnN0IG89ZS5zdHJpbmdzLmpvaW4oZFF0KTtpZihyPWkua2V5U3RyaW5nLmdldChvKSx2b2lkIDA9PT1yKXtjb25zdCBuPWUuZ2V0VGVtcGxhdGVFbGVtZW50KCk7elF0JiZ3aW5kb3cuU2hhZHlDU1MucHJlcGFyZVRlbXBsYXRlRG9tKG4sdCkscj1uZXcgZ1F0KGUsbiksaS5rZXlTdHJpbmcuc2V0KG8scil9cmV0dXJuIGkuc3RyaW5nc0FycmF5LnNldChlLnN0cmluZ3Mscikscn0sQlF0PVsiaHRtbCIsInN2ZyJdLEhRdD1uZXcgU2V0LEZRdD0odCxlLG4pPT57SFF0LmFkZCh0KTtjb25zdCBpPW4/bi5lbGVtZW50OmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRlbXBsYXRlIikscj1lLnF1ZXJ5U2VsZWN0b3JBbGwoInN0eWxlIikse2xlbmd0aDpvfT1yO2lmKDA9PT1vKXJldHVybiB2b2lkIHdpbmRvdy5TaGFkeUNTUy5wcmVwYXJlVGVtcGxhdGVTdHlsZXMoaSx0KTtjb25zdCBhPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxlIik7Zm9yKGxldCB0PTA7dDxvO3QrKyl7Y29uc3QgZT1yW3RdO2UucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChlKSxhLnRleHRDb250ZW50Kz1lLnRleHRDb250ZW50fSh0PT57QlF0LmZvckVhY2goKGU9Pntjb25zdCBuPUlRdC5nZXQoT1F0KGUsdCkpO3ZvaWQgMCE9PW4mJm4ua2V5U3RyaW5nLmZvckVhY2goKHQ9Pntjb25zdHtlbGVtZW50Ontjb250ZW50OmV9fT10LG49bmV3IFNldDtBcnJheS5mcm9tKGUucXVlcnlTZWxlY3RvckFsbCgic3R5bGUiKSkuZm9yRWFjaCgodD0+e24uYWRkKHQpfSkpLHhRdCh0LG4pfSkpfSkpfSkodCk7Y29uc3Qgcz1pLmNvbnRlbnQ7bj8oZnVuY3Rpb24gbCh0LGUsbj1udWxsKXtjb25zdHtlbGVtZW50Ontjb250ZW50Oml9LHBhcnRzOnJ9PXQ7aWYobnVsbD09bilyZXR1cm4gdm9pZCBpLmFwcGVuZENoaWxkKGUpO2NvbnN0IG89ZG9jdW1lbnQuY3JlYXRlVHJlZVdhbGtlcihpLDEzMyxudWxsLCExKTtsZXQgYT1TUXQocikscz0wLGw9LTE7Zm9yKDtvLm5leHROb2RlKCk7KWZvcihsKyssby5jdXJyZW50Tm9kZT09PW4mJihzPXdRdChlKSxuLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGUsbikpOy0xIT09YSYmclthXS5pbmRleD09PWw7KXtpZihzPjApe2Zvcig7LTEhPT1hOylyW2FdLmluZGV4Kz1zLGE9U1F0KHIsYSk7cmV0dXJufWE9U1F0KHIsYSl9fSkobixhLHMuZmlyc3RDaGlsZCk6cy5pbnNlcnRCZWZvcmUoYSxzLmZpcnN0Q2hpbGQpLHdpbmRvdy5TaGFkeUNTUy5wcmVwYXJlVGVtcGxhdGVTdHlsZXMoaSx0KTtjb25zdCBjPXMucXVlcnlTZWxlY3Rvcigic3R5bGUiKTtpZih3aW5kb3cuU2hhZHlDU1MubmF0aXZlU2hhZG93JiZudWxsIT09YyllLmluc2VydEJlZm9yZShjLmNsb25lTm9kZSghMCksZS5maXJzdENoaWxkKTtlbHNlIGlmKG4pe3MuaW5zZXJ0QmVmb3JlKGEscy5maXJzdENoaWxkKTtjb25zdCB0PW5ldyBTZXQ7dC5hZGQoYSkseFF0KG4sdCl9fTt3aW5kb3cuSlNDb21waWxlcl9yZW5hbWVQcm9wZXJ0eT0odCxlKT0+dDtjb25zdCBWUXQ9e3RvQXR0cmlidXRlKHQsZSl7c3dpdGNoKGUpe2Nhc2UgQm9vbGVhbjpyZXR1cm4gdD8iIjpudWxsO2Nhc2UgT2JqZWN0OmNhc2UgQXJyYXk6cmV0dXJuIG51bGw9PXQ/dDpKU09OLnN0cmluZ2lmeSh0KX1yZXR1cm4gdH0sZnJvbUF0dHJpYnV0ZSh0LGUpe3N3aXRjaChlKXtjYXNlIEJvb2xlYW46cmV0dXJuIG51bGwhPT10O2Nhc2UgTnVtYmVyOnJldHVybiBudWxsPT09dD9udWxsOk51bWJlcih0KTtjYXNlIE9iamVjdDpjYXNlIEFycmF5OnJldHVybiBKU09OLnBhcnNlKHQpfXJldHVybiB0fX0sVVF0PSh0LGUpPT5lIT09dCYmKGU9PWV8fHQ9PXQpLGpRdD17YXR0cmlidXRlOiEwLHR5cGU6U3RyaW5nLGNvbnZlcnRlcjpWUXQscmVmbGVjdDohMSxoYXNDaGFuZ2VkOlVRdH0sR1F0PSJmaW5hbGl6ZWQiO2NsYXNzIFdRdCBleHRlbmRzIEhUTUxFbGVtZW50e2NvbnN0cnVjdG9yKCl7c3VwZXIoKSx0aGlzLmluaXRpYWxpemUoKX1zdGF0aWMgZ2V0IG9ic2VydmVkQXR0cmlidXRlcygpe3RoaXMuZmluYWxpemUoKTtjb25zdCB0PVtdO3JldHVybiB0aGlzLl9jbGFzc1Byb3BlcnRpZXMuZm9yRWFjaCgoKGUsbik9Pntjb25zdCBpPXRoaXMuX2F0dHJpYnV0ZU5hbWVGb3JQcm9wZXJ0eShuLGUpO3ZvaWQgMCE9PWkmJih0aGlzLl9hdHRyaWJ1dGVUb1Byb3BlcnR5TWFwLnNldChpLG4pLHQucHVzaChpKSl9KSksdH1zdGF0aWMgX2Vuc3VyZUNsYXNzUHJvcGVydGllcygpe2lmKCF0aGlzLmhhc093blByb3BlcnR5KEpTQ29tcGlsZXJfcmVuYW1lUHJvcGVydHkoIl9jbGFzc1Byb3BlcnRpZXMiLHRoaXMpKSl7dGhpcy5fY2xhc3NQcm9wZXJ0aWVzPW5ldyBNYXA7Y29uc3QgdD1PYmplY3QuZ2V0UHJvdG90eXBlT2YodGhpcykuX2NsYXNzUHJvcGVydGllczt2b2lkIDAhPT10JiZ0LmZvckVhY2goKCh0LGUpPT50aGlzLl9jbGFzc1Byb3BlcnRpZXMuc2V0KGUsdCkpKX19c3RhdGljIGNyZWF0ZVByb3BlcnR5KHQsZT1qUXQpe2lmKHRoaXMuX2Vuc3VyZUNsYXNzUHJvcGVydGllcygpLHRoaXMuX2NsYXNzUHJvcGVydGllcy5zZXQodCxlKSxlLm5vQWNjZXNzb3J8fHRoaXMucHJvdG90eXBlLmhhc093blByb3BlcnR5KHQpKXJldHVybjtjb25zdCBuPSJzeW1ib2wiPT10eXBlb2YgdD9TeW1ib2woKTpgX18ke3R9YCxpPXRoaXMuZ2V0UHJvcGVydHlEZXNjcmlwdG9yKHQsbixlKTt2b2lkIDAhPT1pJiZPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcy5wcm90b3R5cGUsdCxpKX1zdGF0aWMgZ2V0UHJvcGVydHlEZXNjcmlwdG9yKHQsZSxuKXtyZXR1cm57Z2V0KCl7cmV0dXJuIHRoaXNbZV19LHNldChpKXtjb25zdCByPXRoaXNbdF07dGhpc1tlXT1pLHRoaXMucmVxdWVzdFVwZGF0ZUludGVybmFsKHQscixuKX0sY29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITB9fXN0YXRpYyBnZXRQcm9wZXJ0eU9wdGlvbnModCl7cmV0dXJuIHRoaXMuX2NsYXNzUHJvcGVydGllcyYmdGhpcy5fY2xhc3NQcm9wZXJ0aWVzLmdldCh0KXx8alF0fXN0YXRpYyBmaW5hbGl6ZSgpe2NvbnN0IHQ9T2JqZWN0LmdldFByb3RvdHlwZU9mKHRoaXMpO2lmKHQuaGFzT3duUHJvcGVydHkoR1F0KXx8dC5maW5hbGl6ZSgpLHRoaXMuZmluYWxpemVkPSEwLHRoaXMuX2Vuc3VyZUNsYXNzUHJvcGVydGllcygpLHRoaXMuX2F0dHJpYnV0ZVRvUHJvcGVydHlNYXA9bmV3IE1hcCx0aGlzLmhhc093blByb3BlcnR5KEpTQ29tcGlsZXJfcmVuYW1lUHJvcGVydHkoInByb3BlcnRpZXMiLHRoaXMpKSl7Y29uc3QgdD10aGlzLnByb3BlcnRpZXMsZT1bLi4uT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModCksLi4uImZ1bmN0aW9uIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM/T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyh0KTpbXV07Zm9yKGNvbnN0IG4gb2YgZSl0aGlzLmNyZWF0ZVByb3BlcnR5KG4sdFtuXSl9fXN0YXRpYyBfYXR0cmlidXRlTmFtZUZvclByb3BlcnR5KHQsZSl7Y29uc3Qgbj1lLmF0dHJpYnV0ZTtyZXR1cm4hMT09PW4/dm9pZCAwOiJzdHJpbmciPT10eXBlb2Ygbj9uOiJzdHJpbmciPT10eXBlb2YgdD90LnRvTG93ZXJDYXNlKCk6dm9pZCAwfXN0YXRpYyBfdmFsdWVIYXNDaGFuZ2VkKHQsZSxuPVVRdCl7cmV0dXJuIG4odCxlKX1zdGF0aWMgX3Byb3BlcnR5VmFsdWVGcm9tQXR0cmlidXRlKHQsZSl7Y29uc3Qgbj1lLmNvbnZlcnRlcnx8VlF0LGk9ImZ1bmN0aW9uIj09dHlwZW9mIG4/bjpuLmZyb21BdHRyaWJ1dGU7cmV0dXJuIGk/aSh0LGUudHlwZSk6dH1zdGF0aWMgX3Byb3BlcnR5VmFsdWVUb0F0dHJpYnV0ZSh0LGUpe2lmKHZvaWQgMD09PWUucmVmbGVjdClyZXR1cm47Y29uc3Qgbj1lLmNvbnZlcnRlcjtyZXR1cm4obiYmbi50b0F0dHJpYnV0ZXx8VlF0LnRvQXR0cmlidXRlKSh0LGUudHlwZSl9aW5pdGlhbGl6ZSgpe3RoaXMuX3VwZGF0ZVN0YXRlPTAsdGhpcy5fdXBkYXRlUHJvbWlzZT1uZXcgUHJvbWlzZSgodD0+dGhpcy5fZW5hYmxlVXBkYXRpbmdSZXNvbHZlcj10KSksdGhpcy5fY2hhbmdlZFByb3BlcnRpZXM9bmV3IE1hcCx0aGlzLl9zYXZlSW5zdGFuY2VQcm9wZXJ0aWVzKCksdGhpcy5yZXF1ZXN0VXBkYXRlSW50ZXJuYWwoKX1fc2F2ZUluc3RhbmNlUHJvcGVydGllcygpe3RoaXMuY29uc3RydWN0b3IuX2NsYXNzUHJvcGVydGllcy5mb3JFYWNoKCgodCxlKT0+e2lmKHRoaXMuaGFzT3duUHJvcGVydHkoZSkpe2NvbnN0IHQ9dGhpc1tlXTtkZWxldGUgdGhpc1tlXSx0aGlzLl9pbnN0YW5jZVByb3BlcnRpZXN8fCh0aGlzLl9pbnN0YW5jZVByb3BlcnRpZXM9bmV3IE1hcCksdGhpcy5faW5zdGFuY2VQcm9wZXJ0aWVzLnNldChlLHQpfX0pKX1fYXBwbHlJbnN0YW5jZVByb3BlcnRpZXMoKXt0aGlzLl9pbnN0YW5jZVByb3BlcnRpZXMuZm9yRWFjaCgoKHQsZSk9PnRoaXNbZV09dCkpLHRoaXMuX2luc3RhbmNlUHJvcGVydGllcz12b2lkIDB9Y29ubmVjdGVkQ2FsbGJhY2soKXt0aGlzLmVuYWJsZVVwZGF0aW5nKCl9ZW5hYmxlVXBkYXRpbmcoKXt2b2lkIDAhPT10aGlzLl9lbmFibGVVcGRhdGluZ1Jlc29sdmVyJiYodGhpcy5fZW5hYmxlVXBkYXRpbmdSZXNvbHZlcigpLHRoaXMuX2VuYWJsZVVwZGF0aW5nUmVzb2x2ZXI9dm9pZCAwKX1kaXNjb25uZWN0ZWRDYWxsYmFjaygpe31hdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2sodCxlLG4pe2UhPT1uJiZ0aGlzLl9hdHRyaWJ1dGVUb1Byb3BlcnR5KHQsbil9X3Byb3BlcnR5VG9BdHRyaWJ1dGUodCxlLG49alF0KXtjb25zdCBpPXRoaXMuY29uc3RydWN0b3Iscj1pLl9hdHRyaWJ1dGVOYW1lRm9yUHJvcGVydHkodCxuKTtpZih2b2lkIDAhPT1yKXtjb25zdCB0PWkuX3Byb3BlcnR5VmFsdWVUb0F0dHJpYnV0ZShlLG4pO2lmKHZvaWQgMD09PXQpcmV0dXJuO3RoaXMuX3VwZGF0ZVN0YXRlPTh8dGhpcy5fdXBkYXRlU3RhdGUsbnVsbD09dD90aGlzLnJlbW92ZUF0dHJpYnV0ZShyKTp0aGlzLnNldEF0dHJpYnV0ZShyLHQpLHRoaXMuX3VwZGF0ZVN0YXRlPS05JnRoaXMuX3VwZGF0ZVN0YXRlfX1fYXR0cmlidXRlVG9Qcm9wZXJ0eSh0LGUpe2lmKDgmdGhpcy5fdXBkYXRlU3RhdGUpcmV0dXJuO2NvbnN0IG49dGhpcy5jb25zdHJ1Y3RvcixpPW4uX2F0dHJpYnV0ZVRvUHJvcGVydHlNYXAuZ2V0KHQpO2lmKHZvaWQgMCE9PWkpe2NvbnN0IHQ9bi5nZXRQcm9wZXJ0eU9wdGlvbnMoaSk7dGhpcy5fdXBkYXRlU3RhdGU9MTZ8dGhpcy5fdXBkYXRlU3RhdGUsdGhpc1tpXT1uLl9wcm9wZXJ0eVZhbHVlRnJvbUF0dHJpYnV0ZShlLHQpLHRoaXMuX3VwZGF0ZVN0YXRlPS0xNyZ0aGlzLl91cGRhdGVTdGF0ZX19cmVxdWVzdFVwZGF0ZUludGVybmFsKHQsZSxuKXtsZXQgaT0hMDtpZih2b2lkIDAhPT10KXtjb25zdCByPXRoaXMuY29uc3RydWN0b3I7bj1ufHxyLmdldFByb3BlcnR5T3B0aW9ucyh0KSxyLl92YWx1ZUhhc0NoYW5nZWQodGhpc1t0XSxlLG4uaGFzQ2hhbmdlZCk/KHRoaXMuX2NoYW5nZWRQcm9wZXJ0aWVzLmhhcyh0KXx8dGhpcy5fY2hhbmdlZFByb3BlcnRpZXMuc2V0KHQsZSksITAhPT1uLnJlZmxlY3R8fDE2JnRoaXMuX3VwZGF0ZVN0YXRlfHwodm9pZCAwPT09dGhpcy5fcmVmbGVjdGluZ1Byb3BlcnRpZXMmJih0aGlzLl9yZWZsZWN0aW5nUHJvcGVydGllcz1uZXcgTWFwKSx0aGlzLl9yZWZsZWN0aW5nUHJvcGVydGllcy5zZXQodCxuKSkpOmk9ITF9IXRoaXMuX2hhc1JlcXVlc3RlZFVwZGF0ZSYmaSYmKHRoaXMuX3VwZGF0ZVByb21pc2U9dGhpcy5fZW5xdWV1ZVVwZGF0ZSgpKX1yZXF1ZXN0VXBkYXRlKHQsZSl7cmV0dXJuIHRoaXMucmVxdWVzdFVwZGF0ZUludGVybmFsKHQsZSksdGhpcy51cGRhdGVDb21wbGV0ZX1hc3luYyBfZW5xdWV1ZVVwZGF0ZSgpe3RoaXMuX3VwZGF0ZVN0YXRlPTR8dGhpcy5fdXBkYXRlU3RhdGU7dHJ5e2F3YWl0IHRoaXMuX3VwZGF0ZVByb21pc2V9Y2F0Y2godCl7fWNvbnN0IHQ9dGhpcy5wZXJmb3JtVXBkYXRlKCk7cmV0dXJuIG51bGwhPXQmJmF3YWl0IHQsIXRoaXMuX2hhc1JlcXVlc3RlZFVwZGF0ZX1nZXQgX2hhc1JlcXVlc3RlZFVwZGF0ZSgpe3JldHVybiA0JnRoaXMuX3VwZGF0ZVN0YXRlfWdldCBoYXNVcGRhdGVkKCl7cmV0dXJuIDEmdGhpcy5fdXBkYXRlU3RhdGV9cGVyZm9ybVVwZGF0ZSgpe2lmKCF0aGlzLl9oYXNSZXF1ZXN0ZWRVcGRhdGUpcmV0dXJuO3RoaXMuX2luc3RhbmNlUHJvcGVydGllcyYmdGhpcy5fYXBwbHlJbnN0YW5jZVByb3BlcnRpZXMoKTtsZXQgdD0hMTtjb25zdCBlPXRoaXMuX2NoYW5nZWRQcm9wZXJ0aWVzO3RyeXt0PXRoaXMuc2hvdWxkVXBkYXRlKGUpLHQ/dGhpcy51cGRhdGUoZSk6dGhpcy5fbWFya1VwZGF0ZWQoKX1jYXRjaChlKXt0aHJvdyB0PSExLHRoaXMuX21hcmtVcGRhdGVkKCksZX10JiYoMSZ0aGlzLl91cGRhdGVTdGF0ZXx8KHRoaXMuX3VwZGF0ZVN0YXRlPTF8dGhpcy5fdXBkYXRlU3RhdGUsdGhpcy5maXJzdFVwZGF0ZWQoZSkpLHRoaXMudXBkYXRlZChlKSl9X21hcmtVcGRhdGVkKCl7dGhpcy5fY2hhbmdlZFByb3BlcnRpZXM9bmV3IE1hcCx0aGlzLl91cGRhdGVTdGF0ZT0tNSZ0aGlzLl91cGRhdGVTdGF0ZX1nZXQgdXBkYXRlQ29tcGxldGUoKXtyZXR1cm4gdGhpcy5fZ2V0VXBkYXRlQ29tcGxldGUoKX1fZ2V0VXBkYXRlQ29tcGxldGUoKXtyZXR1cm4gdGhpcy5nZXRVcGRhdGVDb21wbGV0ZSgpfWdldFVwZGF0ZUNvbXBsZXRlKCl7cmV0dXJuIHRoaXMuX3VwZGF0ZVByb21pc2V9c2hvdWxkVXBkYXRlKHQpe3JldHVybiEwfXVwZGF0ZSh0KXt2b2lkIDAhPT10aGlzLl9yZWZsZWN0aW5nUHJvcGVydGllcyYmdGhpcy5fcmVmbGVjdGluZ1Byb3BlcnRpZXMuc2l6ZT4wJiYodGhpcy5fcmVmbGVjdGluZ1Byb3BlcnRpZXMuZm9yRWFjaCgoKHQsZSk9PnRoaXMuX3Byb3BlcnR5VG9BdHRyaWJ1dGUoZSx0aGlzW2VdLHQpKSksdGhpcy5fcmVmbGVjdGluZ1Byb3BlcnRpZXM9dm9pZCAwKSx0aGlzLl9tYXJrVXBkYXRlZCgpfXVwZGF0ZWQodCl7fWZpcnN0VXBkYXRlZCh0KXt9fVdRdC5maW5hbGl6ZWQ9ITA7Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxOSBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlCiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcwogICAgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudAogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwpjb25zdCBxUXQ9d2luZG93LlNoYWRvd1Jvb3QmJih2b2lkIDA9PT13aW5kb3cuU2hhZHlDU1N8fHdpbmRvdy5TaGFkeUNTUy5uYXRpdmVTaGFkb3cpJiYiYWRvcHRlZFN0eWxlU2hlZXRzImluIERvY3VtZW50LnByb3RvdHlwZSYmInJlcGxhY2UiaW4gQ1NTU3R5bGVTaGVldC5wcm90b3R5cGUsWVF0PVN5bWJvbCgpO2NsYXNzIFhRdHtjb25zdHJ1Y3Rvcih0LGUpe2lmKGUhPT1ZUXQpdGhyb3cgbmV3IEVycm9yKCJDU1NSZXN1bHQgaXMgbm90IGNvbnN0cnVjdGFibGUuIFVzZSBgdW5zYWZlQ1NTYCBvciBgY3NzYCBpbnN0ZWFkLiIpO3RoaXMuY3NzVGV4dD10fWdldCBzdHlsZVNoZWV0KCl7cmV0dXJuIHZvaWQgMD09PXRoaXMuX3N0eWxlU2hlZXQmJihxUXQ/KHRoaXMuX3N0eWxlU2hlZXQ9bmV3IENTU1N0eWxlU2hlZXQsdGhpcy5fc3R5bGVTaGVldC5yZXBsYWNlU3luYyh0aGlzLmNzc1RleHQpKTp0aGlzLl9zdHlsZVNoZWV0PW51bGwpLHRoaXMuX3N0eWxlU2hlZXR9dG9TdHJpbmcoKXtyZXR1cm4gdGhpcy5jc3NUZXh0fX1jb25zdCAkUXQ9KHQsLi4uZSk9Pntjb25zdCBuPWUucmVkdWNlKCgoZSxuLGkpPT5lKyh0PT57aWYodCBpbnN0YW5jZW9mIFhRdClyZXR1cm4gdC5jc3NUZXh0O2lmKCJudW1iZXIiPT10eXBlb2YgdClyZXR1cm4gdDt0aHJvdyBuZXcgRXJyb3IoYFZhbHVlIHBhc3NlZCB0byAnY3NzJyBmdW5jdGlvbiBtdXN0IGJlIGEgJ2NzcycgZnVuY3Rpb24gcmVzdWx0OiAke3R9LiBVc2UgJ3Vuc2FmZUNTUycgdG8gcGFzcyBub24tbGl0ZXJhbCB2YWx1ZXMsIGJ1dFxuICAgICAgICAgICAgdGFrZSBjYXJlIHRvIGVuc3VyZSBwYWdlIHNlY3VyaXR5LmApfSkobikrdFtpKzFdKSx0WzBdKTtyZXR1cm4gbmV3IFhRdChuLFlRdCl9OwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgKGMpIDIwMTcgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgICogVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0CiAgICAgKiBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQKICAgICAqIFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgICAqIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dAogICAgICogVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICAgKiBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dAogICAgICogQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28KICAgICAqIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQgZm91bmQgYXQKICAgICAqIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgICovCih3aW5kb3cubGl0RWxlbWVudFZlcnNpb25zfHwod2luZG93LmxpdEVsZW1lbnRWZXJzaW9ucz1bXSkpLnB1c2goIjIuNS4xIik7Y29uc3QgS1F0PXt9O2NsYXNzIFpRdCBleHRlbmRzIFdRdHtzdGF0aWMgZ2V0U3R5bGVzKCl7cmV0dXJuIHRoaXMuc3R5bGVzfXN0YXRpYyBfZ2V0VW5pcXVlU3R5bGVzKCl7aWYodGhpcy5oYXNPd25Qcm9wZXJ0eShKU0NvbXBpbGVyX3JlbmFtZVByb3BlcnR5KCJfc3R5bGVzIix0aGlzKSkpcmV0dXJuO2NvbnN0IHQ9dGhpcy5nZXRTdHlsZXMoKTtpZihBcnJheS5pc0FycmF5KHQpKXtjb25zdCBlPSh0LG4pPT50LnJlZHVjZVJpZ2h0KCgodCxuKT0+QXJyYXkuaXNBcnJheShuKT9lKG4sdCk6KHQuYWRkKG4pLHQpKSxuKSxuPWUodCxuZXcgU2V0KSxpPVtdO24uZm9yRWFjaCgodD0+aS51bnNoaWZ0KHQpKSksdGhpcy5fc3R5bGVzPWl9ZWxzZSB0aGlzLl9zdHlsZXM9dm9pZCAwPT09dD9bXTpbdF07dGhpcy5fc3R5bGVzPXRoaXMuX3N0eWxlcy5tYXAoKHQ9PntpZih0IGluc3RhbmNlb2YgQ1NTU3R5bGVTaGVldCYmIXFRdCl7cmV0dXJuKHQ9Pm5ldyBYUXQoU3RyaW5nKHQpLFlRdCkpKEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHQuY3NzUnVsZXMpLnJlZHVjZSgoKHQsZSk9PnQrZS5jc3NUZXh0KSwiIikpfXJldHVybiB0fSkpfWluaXRpYWxpemUoKXtzdXBlci5pbml0aWFsaXplKCksdGhpcy5jb25zdHJ1Y3Rvci5fZ2V0VW5pcXVlU3R5bGVzKCksdGhpcy5yZW5kZXJSb290PXRoaXMuY3JlYXRlUmVuZGVyUm9vdCgpLHdpbmRvdy5TaGFkb3dSb290JiZ0aGlzLnJlbmRlclJvb3QgaW5zdGFuY2VvZiB3aW5kb3cuU2hhZG93Um9vdCYmdGhpcy5hZG9wdFN0eWxlcygpfWNyZWF0ZVJlbmRlclJvb3QoKXtyZXR1cm4gdGhpcy5hdHRhY2hTaGFkb3codGhpcy5jb25zdHJ1Y3Rvci5zaGFkb3dSb290T3B0aW9ucyl9YWRvcHRTdHlsZXMoKXtjb25zdCB0PXRoaXMuY29uc3RydWN0b3IuX3N0eWxlczswIT09dC5sZW5ndGgmJih2b2lkIDA9PT13aW5kb3cuU2hhZHlDU1N8fHdpbmRvdy5TaGFkeUNTUy5uYXRpdmVTaGFkb3c/cVF0P3RoaXMucmVuZGVyUm9vdC5hZG9wdGVkU3R5bGVTaGVldHM9dC5tYXAoKHQ9PnQgaW5zdGFuY2VvZiBDU1NTdHlsZVNoZWV0P3Q6dC5zdHlsZVNoZWV0KSk6dGhpcy5fbmVlZHNTaGltQWRvcHRlZFN0eWxlU2hlZXRzPSEwOndpbmRvdy5TaGFkeUNTUy5TY29waW5nU2hpbS5wcmVwYXJlQWRvcHRlZENzc1RleHQodC5tYXAoKHQ9PnQuY3NzVGV4dCkpLHRoaXMubG9jYWxOYW1lKSl9Y29ubmVjdGVkQ2FsbGJhY2soKXtzdXBlci5jb25uZWN0ZWRDYWxsYmFjaygpLHRoaXMuaGFzVXBkYXRlZCYmdm9pZCAwIT09d2luZG93LlNoYWR5Q1NTJiZ3aW5kb3cuU2hhZHlDU1Muc3R5bGVFbGVtZW50KHRoaXMpfXVwZGF0ZSh0KXtjb25zdCBlPXRoaXMucmVuZGVyKCk7c3VwZXIudXBkYXRlKHQpLGUhPT1LUXQmJnRoaXMuY29uc3RydWN0b3IucmVuZGVyKGUsdGhpcy5yZW5kZXJSb290LHtzY29wZU5hbWU6dGhpcy5sb2NhbE5hbWUsZXZlbnRDb250ZXh0OnRoaXN9KSx0aGlzLl9uZWVkc1NoaW1BZG9wdGVkU3R5bGVTaGVldHMmJih0aGlzLl9uZWVkc1NoaW1BZG9wdGVkU3R5bGVTaGVldHM9ITEsdGhpcy5jb25zdHJ1Y3Rvci5fc3R5bGVzLmZvckVhY2goKHQ9Pntjb25zdCBlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxlIik7ZS50ZXh0Q29udGVudD10LmNzc1RleHQsdGhpcy5yZW5kZXJSb290LmFwcGVuZENoaWxkKGUpfSkpKX1yZW5kZXIoKXtyZXR1cm4gS1F0fX1aUXQuZmluYWxpemVkPSEwLFpRdC5yZW5kZXI9KHQsZSxuKT0+e2lmKCFufHwib2JqZWN0IiE9dHlwZW9mIG58fCFuLnNjb3BlTmFtZSl0aHJvdyBuZXcgRXJyb3IoIlRoZSBgc2NvcGVOYW1lYCBvcHRpb24gaXMgcmVxdWlyZWQuIik7Y29uc3QgaT1uLnNjb3BlTmFtZSxyPVJRdC5oYXMoZSksbz16UXQmJjExPT09ZS5ub2RlVHlwZSYmISFlLmhvc3QsYT1vJiYhSFF0LmhhcyhpKSxzPWE/ZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpOmU7aWYoKCh0LGUsbik9PntsZXQgaT1SUXQuZ2V0KGUpO3ZvaWQgMD09PWkmJihoUXQoZSxlLmZpcnN0Q2hpbGQpLFJRdC5zZXQoZSxpPW5ldyBMUXQoT2JqZWN0LmFzc2lnbih7dGVtcGxhdGVGYWN0b3J5Ok5RdH0sbikpKSxpLmFwcGVuZEludG8oZSkpLGkuc2V0VmFsdWUodCksaS5jb21taXQoKX0pKHQscyxPYmplY3QuYXNzaWduKHt0ZW1wbGF0ZUZhY3Rvcnk6RFF0KGkpfSxuKSksYSl7Y29uc3QgdD1SUXQuZ2V0KHMpO1JRdC5kZWxldGUocyk7RlF0KGkscyx0LnZhbHVlIGluc3RhbmNlb2YgQ1F0P3QudmFsdWUudGVtcGxhdGU6dm9pZCAwKSxoUXQoZSxlLmZpcnN0Q2hpbGQpLGUuYXBwZW5kQ2hpbGQocyksUlF0LnNldChlLHQpfSFyJiZvJiZ3aW5kb3cuU2hhZHlDU1Muc3R5bGVFbGVtZW50KGUuaG9zdCl9LFpRdC5zaGFkb3dSb290T3B0aW9ucz17bW9kZToib3BlbiJ9O2xldCBKUXQ9MDtjb25zdCBRUXQ9e30sdDF0PSh0LGUsbik9Pntjb25zdCBpPW4mJm4ubW9kdWxlSWR8fCJjdXN0b20tc3R5bGUtbW9kdWxlLSIrSlF0Kys7QXJyYXkuaXNBcnJheShlKXx8KGU9ZT9bZV06W10pLGUuZm9yRWFjaCgodD0+e2lmKCEodCBpbnN0YW5jZW9mIFhRdCkpdGhyb3cgbmV3IEVycm9yKCJBbiBpdGVtIGluIHN0eWxlcyBpcyBub3Qgb2YgdHlwZSBDU1NSZXN1bHQuIFVzZSBgdW5zYWZlQ1NTYCBvciBgY3NzYC4iKTtpZighUVF0W3RdKXtjb25zdCBlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRvbS1tb2R1bGUiKTtlLmlubmVySFRNTD1gXG4gICAgICAgIDx0ZW1wbGF0ZT5cbiAgICAgICAgICA8c3R5bGU+JHt0LnRvU3RyaW5nKCl9PC9zdHlsZT5cbiAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgIGA7Y29uc3Qgbj0iY3VzdG9tLXN0eWxlLW1vZHVsZS0iK0pRdCsrO2UucmVnaXN0ZXIobiksUVF0W3RdPW59fSkpO2NvbnN0IHI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZG9tLW1vZHVsZSIpO2lmKHQpe2NvbnN0IGU9Y3VzdG9tRWxlbWVudHMuZ2V0KHQpO2UmJk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLCJfX2ZpbmFsaXplZCIpJiZjb25zb2xlLndhcm4oYFRoZSBjdXN0b20gZWxlbWVudCBkZWZpbml0aW9uIGZvciAiJHt0fSJcbiAgICAgIHdhcyBmaW5hbGl6ZWQgYmVmb3JlIGEgc3R5bGUgbW9kdWxlIHdhcyByZWdpc3RlcmVkLlxuICAgICAgTWFrZSBzdXJlIHRvIGFkZCBjb21wb25lbnQgc3BlY2lmaWMgc3R5bGUgbW9kdWxlcyBiZWZvcmVcbiAgICAgIGltcG9ydGluZyB0aGUgY29ycmVzcG9uZGluZyBjdXN0b20gZWxlbWVudC5gKSxyLnNldEF0dHJpYnV0ZSgidGhlbWUtZm9yIix0KX1yLmlubmVySFRNTD1gXG4gICAgPHRlbXBsYXRlPlxuICAgICAgJHsobiYmbi5pbmNsdWRlfHxbXSkubWFwKCh0PT5gPHN0eWxlIGluY2x1ZGU9JHt0fT48L3N0eWxlPmApKX1cbiAgICAgICR7ZS5tYXAoKHQ9PmA8c3R5bGUgaW5jbHVkZT0ke1FRdFt0XX0+PC9zdHlsZT5gKSl9XG4gICAgPC90ZW1wbGF0ZT5cbiAgYCxyLnJlZ2lzdGVyKGkpfTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IChjKSAyMDIxIFZhYWRpbiBMdGQuCiAgICAgKiBUaGlzIHByb2dyYW0gaXMgYXZhaWxhYmxlIHVuZGVyIEFwYWNoZSBMaWNlbnNlIFZlcnNpb24gMi4wLCBhdmFpbGFibGUgYXQgaHR0cHM6Ly92YWFkaW4uY29tL2xpY2Vuc2UvCiAgICAgKi8KY2xhc3MgZTF0IGV4dGVuZHMgSFRNTEVsZW1lbnR7c3RhdGljIGdldCB2ZXJzaW9uKCl7cmV0dXJuIjIwLjAuMiJ9fWN1c3RvbUVsZW1lbnRzLmRlZmluZSgidmFhZGluLWx1bW8tc3R5bGVzIixlMXQpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgKGMpIDIwMjEgVmFhZGluIEx0ZC4KICAgICAqIFRoaXMgcHJvZ3JhbSBpcyBhdmFpbGFibGUgdW5kZXIgQXBhY2hlIExpY2Vuc2UgVmVyc2lvbiAyLjAsIGF2YWlsYWJsZSBhdCBodHRwczovL3ZhYWRpbi5jb20vbGljZW5zZS8KICAgICAqLwpjb25zdCBuMXQ9JFF0YAogIDpob3N0IHsKICAgIC8qIEJhc2UgKGJhY2tncm91bmQpICovCiAgICAtLWx1bW8tYmFzZS1jb2xvcjogI2ZmZjsKCiAgICAvKiBUaW50ICovCiAgICAtLWx1bW8tdGludC01cGN0OiBoc2xhKDAsIDAlLCAxMDAlLCAwLjMpOwogICAgLS1sdW1vLXRpbnQtMTBwY3Q6IGhzbGEoMCwgMCUsIDEwMCUsIDAuMzcpOwogICAgLS1sdW1vLXRpbnQtMjBwY3Q6IGhzbGEoMCwgMCUsIDEwMCUsIDAuNDQpOwogICAgLS1sdW1vLXRpbnQtMzBwY3Q6IGhzbGEoMCwgMCUsIDEwMCUsIDAuNSk7CiAgICAtLWx1bW8tdGludC00MHBjdDogaHNsYSgwLCAwJSwgMTAwJSwgMC41Nyk7CiAgICAtLWx1bW8tdGludC01MHBjdDogaHNsYSgwLCAwJSwgMTAwJSwgMC42NCk7CiAgICAtLWx1bW8tdGludC02MHBjdDogaHNsYSgwLCAwJSwgMTAwJSwgMC43KTsKICAgIC0tbHVtby10aW50LTcwcGN0OiBoc2xhKDAsIDAlLCAxMDAlLCAwLjc3KTsKICAgIC0tbHVtby10aW50LTgwcGN0OiBoc2xhKDAsIDAlLCAxMDAlLCAwLjg0KTsKICAgIC0tbHVtby10aW50LTkwcGN0OiBoc2xhKDAsIDAlLCAxMDAlLCAwLjkpOwogICAgLS1sdW1vLXRpbnQ6ICNmZmY7CgogICAgLyogU2hhZGUgKi8KICAgIC0tbHVtby1zaGFkZS01cGN0OiBoc2xhKDIxNCwgNjElLCAyNSUsIDAuMDUpOwogICAgLS1sdW1vLXNoYWRlLTEwcGN0OiBoc2xhKDIxNCwgNTclLCAyNCUsIDAuMSk7CiAgICAtLWx1bW8tc2hhZGUtMjBwY3Q6IGhzbGEoMjE0LCA1MyUsIDIzJSwgMC4xNik7CiAgICAtLWx1bW8tc2hhZGUtMzBwY3Q6IGhzbGEoMjE0LCA1MCUsIDIyJSwgMC4yNik7CiAgICAtLWx1bW8tc2hhZGUtNDBwY3Q6IGhzbGEoMjE0LCA0NyUsIDIxJSwgMC4zOCk7CiAgICAtLWx1bW8tc2hhZGUtNTBwY3Q6IGhzbGEoMjE0LCA0NSUsIDIwJSwgMC41KTsKICAgIC0tbHVtby1zaGFkZS02MHBjdDogaHNsYSgyMTQsIDQzJSwgMTklLCAwLjYxKTsKICAgIC0tbHVtby1zaGFkZS03MHBjdDogaHNsYSgyMTQsIDQyJSwgMTglLCAwLjcyKTsKICAgIC0tbHVtby1zaGFkZS04MHBjdDogaHNsYSgyMTQsIDQxJSwgMTclLCAwLjgzKTsKICAgIC0tbHVtby1zaGFkZS05MHBjdDogaHNsYSgyMTQsIDQwJSwgMTYlLCAwLjk0KTsKICAgIC0tbHVtby1zaGFkZTogaHNsKDIxNCwgMzUlLCAxNSUpOwoKICAgIC8qIENvbnRyYXN0ICovCiAgICAtLWx1bW8tY29udHJhc3QtNXBjdDogdmFyKC0tbHVtby1zaGFkZS01cGN0KTsKICAgIC0tbHVtby1jb250cmFzdC0xMHBjdDogdmFyKC0tbHVtby1zaGFkZS0xMHBjdCk7CiAgICAtLWx1bW8tY29udHJhc3QtMjBwY3Q6IHZhcigtLWx1bW8tc2hhZGUtMjBwY3QpOwogICAgLS1sdW1vLWNvbnRyYXN0LTMwcGN0OiB2YXIoLS1sdW1vLXNoYWRlLTMwcGN0KTsKICAgIC0tbHVtby1jb250cmFzdC00MHBjdDogdmFyKC0tbHVtby1zaGFkZS00MHBjdCk7CiAgICAtLWx1bW8tY29udHJhc3QtNTBwY3Q6IHZhcigtLWx1bW8tc2hhZGUtNTBwY3QpOwogICAgLS1sdW1vLWNvbnRyYXN0LTYwcGN0OiB2YXIoLS1sdW1vLXNoYWRlLTYwcGN0KTsKICAgIC0tbHVtby1jb250cmFzdC03MHBjdDogdmFyKC0tbHVtby1zaGFkZS03MHBjdCk7CiAgICAtLWx1bW8tY29udHJhc3QtODBwY3Q6IHZhcigtLWx1bW8tc2hhZGUtODBwY3QpOwogICAgLS1sdW1vLWNvbnRyYXN0LTkwcGN0OiB2YXIoLS1sdW1vLXNoYWRlLTkwcGN0KTsKICAgIC0tbHVtby1jb250cmFzdDogdmFyKC0tbHVtby1zaGFkZSk7CgogICAgLyogVGV4dCAqLwogICAgLS1sdW1vLWhlYWRlci10ZXh0LWNvbG9yOiB2YXIoLS1sdW1vLWNvbnRyYXN0KTsKICAgIC0tbHVtby1ib2R5LXRleHQtY29sb3I6IHZhcigtLWx1bW8tY29udHJhc3QtOTBwY3QpOwogICAgLS1sdW1vLXNlY29uZGFyeS10ZXh0LWNvbG9yOiB2YXIoLS1sdW1vLWNvbnRyYXN0LTcwcGN0KTsKICAgIC0tbHVtby10ZXJ0aWFyeS10ZXh0LWNvbG9yOiB2YXIoLS1sdW1vLWNvbnRyYXN0LTUwcGN0KTsKICAgIC0tbHVtby1kaXNhYmxlZC10ZXh0LWNvbG9yOiB2YXIoLS1sdW1vLWNvbnRyYXN0LTMwcGN0KTsKCiAgICAvKiBQcmltYXJ5ICovCiAgICAtLWx1bW8tcHJpbWFyeS1jb2xvcjogaHNsKDIxNCwgOTAlLCA1MiUpOwogICAgLS1sdW1vLXByaW1hcnktY29sb3ItNTBwY3Q6IGhzbGEoMjE0LCA5MCUsIDUyJSwgMC41KTsKICAgIC0tbHVtby1wcmltYXJ5LWNvbG9yLTEwcGN0OiBoc2xhKDIxNCwgOTAlLCA1MiUsIDAuMSk7CiAgICAtLWx1bW8tcHJpbWFyeS10ZXh0LWNvbG9yOiB2YXIoLS1sdW1vLXByaW1hcnktY29sb3IpOwogICAgLS1sdW1vLXByaW1hcnktY29udHJhc3QtY29sb3I6ICNmZmY7CgogICAgLyogRXJyb3IgKi8KICAgIC0tbHVtby1lcnJvci1jb2xvcjogaHNsKDMsIDEwMCUsIDYxJSk7CiAgICAtLWx1bW8tZXJyb3ItY29sb3ItNTBwY3Q6IGhzbGEoMywgMTAwJSwgNjAlLCAwLjUpOwogICAgLS1sdW1vLWVycm9yLWNvbG9yLTEwcGN0OiBoc2xhKDMsIDEwMCUsIDYwJSwgMC4xKTsKICAgIC0tbHVtby1lcnJvci10ZXh0LWNvbG9yOiBoc2woMywgOTIlLCA1MyUpOwogICAgLS1sdW1vLWVycm9yLWNvbnRyYXN0LWNvbG9yOiAjZmZmOwoKICAgIC8qIFN1Y2Nlc3MgKi8KICAgIC0tbHVtby1zdWNjZXNzLWNvbG9yOiBoc2woMTQ1LCA4MCUsIDQyJSk7IC8qIGhzbCgxNDQsODIlLDM3JSk7ICovCiAgICAtLWx1bW8tc3VjY2Vzcy1jb2xvci01MHBjdDogaHNsYSgxNDUsIDc2JSwgNDQlLCAwLjU1KTsKICAgIC0tbHVtby1zdWNjZXNzLWNvbG9yLTEwcGN0OiBoc2xhKDE0NSwgNzYlLCA0NCUsIDAuMTIpOwogICAgLS1sdW1vLXN1Y2Nlc3MtdGV4dC1jb2xvcjogaHNsKDE0NSwgMTAwJSwgMzIlKTsKICAgIC0tbHVtby1zdWNjZXNzLWNvbnRyYXN0LWNvbG9yOiAjZmZmOwogIH0KYCxpMXQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGVtcGxhdGUiKTtpMXQuaW5uZXJIVE1MPWA8c3R5bGU+JHtuMXQudG9TdHJpbmcoKS5yZXBsYWNlKCI6aG9zdCIsImh0bWwiKX08L3N0eWxlPmAsZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChpMXQuY29udGVudCk7dDF0KCIiLCRRdGAKICBbdGhlbWV+PSdkYXJrJ10gewogICAgLyogQmFzZSAoYmFja2dyb3VuZCkgKi8KICAgIC0tbHVtby1iYXNlLWNvbG9yOiBoc2woMjE0LCAzNSUsIDIxJSk7CgogICAgLyogVGludCAqLwogICAgLS1sdW1vLXRpbnQtNXBjdDogaHNsYSgyMTQsIDY1JSwgODUlLCAwLjA2KTsKICAgIC0tbHVtby10aW50LTEwcGN0OiBoc2xhKDIxNCwgNjAlLCA4MCUsIDAuMTQpOwogICAgLS1sdW1vLXRpbnQtMjBwY3Q6IGhzbGEoMjE0LCA2NCUsIDgyJSwgMC4yMyk7CiAgICAtLWx1bW8tdGludC0zMHBjdDogaHNsYSgyMTQsIDY5JSwgODQlLCAwLjMyKTsKICAgIC0tbHVtby10aW50LTQwcGN0OiBoc2xhKDIxNCwgNzMlLCA4NiUsIDAuNDEpOwogICAgLS1sdW1vLXRpbnQtNTBwY3Q6IGhzbGEoMjE0LCA3OCUsIDg4JSwgMC41KTsKICAgIC0tbHVtby10aW50LTYwcGN0OiBoc2xhKDIxNCwgODIlLCA5MCUsIDAuNik7CiAgICAtLWx1bW8tdGludC03MHBjdDogaHNsYSgyMTQsIDg3JSwgOTIlLCAwLjcpOwogICAgLS1sdW1vLXRpbnQtODBwY3Q6IGhzbGEoMjE0LCA5MSUsIDk0JSwgMC44KTsKICAgIC0tbHVtby10aW50LTkwcGN0OiBoc2xhKDIxNCwgOTYlLCA5NiUsIDAuOSk7CiAgICAtLWx1bW8tdGludDogaHNsKDIxNCwgMTAwJSwgOTglKTsKCiAgICAvKiBTaGFkZSAqLwogICAgLS1sdW1vLXNoYWRlLTVwY3Q6IGhzbGEoMjE0LCAwJSwgMCUsIDAuMDcpOwogICAgLS1sdW1vLXNoYWRlLTEwcGN0OiBoc2xhKDIxNCwgNCUsIDIlLCAwLjE1KTsKICAgIC0tbHVtby1zaGFkZS0yMHBjdDogaHNsYSgyMTQsIDglLCA0JSwgMC4yMyk7CiAgICAtLWx1bW8tc2hhZGUtMzBwY3Q6IGhzbGEoMjE0LCAxMiUsIDYlLCAwLjMyKTsKICAgIC0tbHVtby1zaGFkZS00MHBjdDogaHNsYSgyMTQsIDE2JSwgOCUsIDAuNDEpOwogICAgLS1sdW1vLXNoYWRlLTUwcGN0OiBoc2xhKDIxNCwgMjAlLCAxMCUsIDAuNSk7CiAgICAtLWx1bW8tc2hhZGUtNjBwY3Q6IGhzbGEoMjE0LCAyNCUsIDEyJSwgMC42KTsKICAgIC0tbHVtby1zaGFkZS03MHBjdDogaHNsYSgyMTQsIDI4JSwgMTMlLCAwLjcpOwogICAgLS1sdW1vLXNoYWRlLTgwcGN0OiBoc2xhKDIxNCwgMzIlLCAxMyUsIDAuOCk7CiAgICAtLWx1bW8tc2hhZGUtOTBwY3Q6IGhzbGEoMjE0LCAzMyUsIDEzJSwgMC45KTsKICAgIC0tbHVtby1zaGFkZTogaHNsKDIxNCwgMzMlLCAxMyUpOwoKICAgIC8qIENvbnRyYXN0ICovCiAgICAtLWx1bW8tY29udHJhc3QtNXBjdDogdmFyKC0tbHVtby10aW50LTVwY3QpOwogICAgLS1sdW1vLWNvbnRyYXN0LTEwcGN0OiB2YXIoLS1sdW1vLXRpbnQtMTBwY3QpOwogICAgLS1sdW1vLWNvbnRyYXN0LTIwcGN0OiB2YXIoLS1sdW1vLXRpbnQtMjBwY3QpOwogICAgLS1sdW1vLWNvbnRyYXN0LTMwcGN0OiB2YXIoLS1sdW1vLXRpbnQtMzBwY3QpOwogICAgLS1sdW1vLWNvbnRyYXN0LTQwcGN0OiB2YXIoLS1sdW1vLXRpbnQtNDBwY3QpOwogICAgLS1sdW1vLWNvbnRyYXN0LTUwcGN0OiB2YXIoLS1sdW1vLXRpbnQtNTBwY3QpOwogICAgLS1sdW1vLWNvbnRyYXN0LTYwcGN0OiB2YXIoLS1sdW1vLXRpbnQtNjBwY3QpOwogICAgLS1sdW1vLWNvbnRyYXN0LTcwcGN0OiB2YXIoLS1sdW1vLXRpbnQtNzBwY3QpOwogICAgLS1sdW1vLWNvbnRyYXN0LTgwcGN0OiB2YXIoLS1sdW1vLXRpbnQtODBwY3QpOwogICAgLS1sdW1vLWNvbnRyYXN0LTkwcGN0OiB2YXIoLS1sdW1vLXRpbnQtOTBwY3QpOwogICAgLS1sdW1vLWNvbnRyYXN0OiB2YXIoLS1sdW1vLXRpbnQpOwoKICAgIC8qIFRleHQgKi8KICAgIC0tbHVtby1oZWFkZXItdGV4dC1jb2xvcjogdmFyKC0tbHVtby1jb250cmFzdCk7CiAgICAtLWx1bW8tYm9keS10ZXh0LWNvbG9yOiB2YXIoLS1sdW1vLWNvbnRyYXN0LTkwcGN0KTsKICAgIC0tbHVtby1zZWNvbmRhcnktdGV4dC1jb2xvcjogdmFyKC0tbHVtby1jb250cmFzdC03MHBjdCk7CiAgICAtLWx1bW8tdGVydGlhcnktdGV4dC1jb2xvcjogdmFyKC0tbHVtby1jb250cmFzdC01MHBjdCk7CiAgICAtLWx1bW8tZGlzYWJsZWQtdGV4dC1jb2xvcjogdmFyKC0tbHVtby1jb250cmFzdC0zMHBjdCk7CgogICAgLyogUHJpbWFyeSAqLwogICAgLS1sdW1vLXByaW1hcnktY29sb3I6IGhzbCgyMTQsIDg2JSwgNTUlKTsKICAgIC0tbHVtby1wcmltYXJ5LWNvbG9yLTUwcGN0OiBoc2xhKDIxNCwgODYlLCA1NSUsIDAuNSk7CiAgICAtLWx1bW8tcHJpbWFyeS1jb2xvci0xMHBjdDogaHNsYSgyMTQsIDkwJSwgNjMlLCAwLjEpOwogICAgLS1sdW1vLXByaW1hcnktdGV4dC1jb2xvcjogaHNsKDIxNCwgMTAwJSwgNzAlKTsKICAgIC0tbHVtby1wcmltYXJ5LWNvbnRyYXN0LWNvbG9yOiAjZmZmOwoKICAgIC8qIEVycm9yICovCiAgICAtLWx1bW8tZXJyb3ItY29sb3I6IGhzbCgzLCA5MCUsIDYzJSk7CiAgICAtLWx1bW8tZXJyb3ItY29sb3ItNTBwY3Q6IGhzbGEoMywgOTAlLCA2MyUsIDAuNSk7CiAgICAtLWx1bW8tZXJyb3ItY29sb3ItMTBwY3Q6IGhzbGEoMywgOTAlLCA2MyUsIDAuMSk7CiAgICAtLWx1bW8tZXJyb3ItdGV4dC1jb2xvcjogaHNsKDMsIDEwMCUsIDY3JSk7CgogICAgLyogU3VjY2VzcyAqLwogICAgLS1sdW1vLXN1Y2Nlc3MtY29sb3I6IGhzbCgxNDUsIDY1JSwgNDIlKTsKICAgIC0tbHVtby1zdWNjZXNzLWNvbG9yLTUwcGN0OiBoc2xhKDE0NSwgNjUlLCA0MiUsIDAuNSk7CiAgICAtLWx1bW8tc3VjY2Vzcy1jb2xvci0xMHBjdDogaHNsYSgxNDUsIDY1JSwgNDIlLCAwLjEpOwogICAgLS1sdW1vLXN1Y2Nlc3MtdGV4dC1jb2xvcjogaHNsKDE0NSwgODUlLCA0NyUpOwogIH0KCiAgaHRtbCB7CiAgICBjb2xvcjogdmFyKC0tbHVtby1ib2R5LXRleHQtY29sb3IpOwogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbHVtby1iYXNlLWNvbG9yKTsKICB9CgogIFt0aGVtZX49J2RhcmsnXSB7CiAgICBjb2xvcjogdmFyKC0tbHVtby1ib2R5LXRleHQtY29sb3IpOwogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbHVtby1iYXNlLWNvbG9yKTsKICB9CgogIGgxLAogIGgyLAogIGgzLAogIGg0LAogIGg1LAogIGg2IHsKICAgIGNvbG9yOiB2YXIoLS1sdW1vLWhlYWRlci10ZXh0LWNvbG9yKTsKICB9CgogIGEgewogICAgY29sb3I6IHZhcigtLWx1bW8tcHJpbWFyeS10ZXh0LWNvbG9yKTsKICB9CgogIGJsb2NrcXVvdGUgewogICAgY29sb3I6IHZhcigtLWx1bW8tc2Vjb25kYXJ5LXRleHQtY29sb3IpOwogIH0KCiAgY29kZSwKICBwcmUgewogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbHVtby1jb250cmFzdC0xMHBjdCk7CiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1sdW1vLWJvcmRlci1yYWRpdXMtbSk7CiAgfQpgLHttb2R1bGVJZDoibHVtby1jb2xvciJ9KTt0MXQoIiIsJFF0YAogIDpob3N0IHsKICAgIGNvbG9yOiB2YXIoLS1sdW1vLWJvZHktdGV4dC1jb2xvcikgIWltcG9ydGFudDsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWx1bW8tYmFzZS1jb2xvcikgIWltcG9ydGFudDsKICB9CmAse21vZHVsZUlkOiJsdW1vLWNvbG9yLWxlZ2FjeSIsaW5jbHVkZTpbImx1bW8tY29sb3IiXX0pOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgKGMpIDIwMjEgVmFhZGluIEx0ZC4KICAgICAqIFRoaXMgcHJvZ3JhbSBpcyBhdmFpbGFibGUgdW5kZXIgQXBhY2hlIExpY2Vuc2UgVmVyc2lvbiAyLjAsIGF2YWlsYWJsZSBhdCBodHRwczovL3ZhYWRpbi5jb20vbGljZW5zZS8KICAgICAqLwpjb25zdCByMXQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGVtcGxhdGUiKTtyMXQuaW5uZXJIVE1MPSdcbiAgPHN0eWxlPlxuICAgIEBmb250LWZhY2Uge1xuICAgICAgZm9udC1mYW1pbHk6IFwnbHVtby1pY29uc1wnO1xuICAgICAgc3JjOiB1cmwoZGF0YTphcHBsaWNhdGlvbi9mb250LXdvZmY7Y2hhcnNldD11dGYtODtiYXNlNjQsZDA5R1JnQUJBQUFBQUJFY0FBc0FBQUFBSWl3QUFRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJIVTFWQ0FBQUJDQUFBQURzQUFBQlVJSXNsZWs5VEx6SUFBQUZFQUFBQVF3QUFBRlpBSVV1S1kyMWhjQUFBQVlnQUFBRDRBQUFEcnNDVThkNW5iSGxtQUFBQ2dBQUFDMk1BQUJkNGg5VG8yV2hsWVdRQUFBM2tBQUFBTUFBQUFEWmEvNlNzYUdobFlRQUFEaFFBQUFBZEFBQUFKQWJwQTM1b2JYUjRBQUFPTkFBQUFCQUFBQUNzcEJBQUFHeHZZMkVBQUE1RUFBQUFXQUFBQUZoNTVJQXNiV0Y0Y0FBQURwd0FBQUFmQUFBQUlBRktBWEJ1WVcxbEFBQU92QUFBQVRFQUFBSXVVVUpaQ0hCdmMzUUFBQS93QUFBQkt3QUFBZWxtOFN6VmVKeGpZR1JnWU9CaU1HQ3dZMkJ5Y2ZNSlllRExTU3pKWTVCaVlHR0FBSkE4TXBzeEp6TTlrWUVEeGdQS3NZQnBEaUJtZzRnQ0FDWTdCVWdBZUp4allHUyt5RGlCZ1pXQmdhbUthUThEQTBNUGhHWjh3R0RJeUFRVVpXQmxac0FLQXRKY1V4Z2NYakcrMG1JTytwL0ZFTVVjeERBTktNd0lrZ01BQm44TUxRQjRuTzNTV1c2RE1BQkYwVXR3Q0VuSVBNL3poTEs4THFoZlhSeWJTUDE0WFVZdEhWOWhHWVF3UUJOSW8zY1VJUGtoUWVNN3JpYjFla3FuWGc5ODFYdUMxcXZ5ODRsem9qbGVoM3B1eEwwaFBqR2pSVTQ3M3RlbG9FZWZBVU5Hakprd1pjYWNCVXRXck5td1pjZWVBMGRPbkxsdzVjYWRCMDllbFBHaEdmK2owTlRJLzY1S2ZYZXJUNkpocUtucFJLdGdPcHVxYVRydEtqUFVscUhtaHRvMjFJN3BMNmk2aGxxWTNxN3FHV3JmVUFlR09qVFVrYUdPRFhWaXFGTkRuUm5xM0ZBWGhybzAxSldocmcxMVk2aGJROTBaNnQ1UUQ0WjZOTlNUb1o0TjlXS29WME85R2VyZFVCK0cralRVbDZHV1J2a0wyNEJrRVhpY3RWaDliRnZWRmIvbnh2YnorN1JmL042ekhjZDJiQ2ZQK1dnYzFaOU4wanBObkVMNmtiUlZTNkhBMmhRWUdoOVRHUjFDYkNxYTJyWHJXT2tRRS9zSE5KZ210WnZvVk5acUUxQjFETkh4elRReENlaFVUWWlKVFF5RU51aTBxU0xlenIzUGR1eVFmZ21SV09mZGU4Kzk1NTF6N3Jubi9PNGpMb0ovYlJQMFVhS1FNTEZKanBCQXZwaExaQzNEazBvazdXQnpSMi91cEpzN1J5dy9uZkZibG4vdXVOL2FwQ3Z3cktMclN2VXFSdWZibTVwbjBmczB3NGdZeG5HVlA2cUhuTzRiV2lEUUdRZ3d0UzZsbTNsQjNRb1gxTTJ2d0VtdXppckYzOXkrRXMyK0RKOGQxcGt5cUJJcW96ZTNEMStaejREckZvYXp4SThkV3dNckRsWjJETXFRQVI5QVJPc0pVKzJjbWxUUGF6VGNvNTJGMXhUYTJhMitLOHZ2cTkyZFZIbXRMb1BlUVgvQVpQUllHdGhEWU9lWmpCaktvRnNWR3VsUjNsV1U5NVdlQ0s0NHFIVTdNaFdVR1VLWkRUM29LVWNHMkdXdWgrRUREZlVZQS9qaEFobDBUT3NKTllTRXU3bVFtaTNVemZYd1pLQTRCc1ZzSExYUVlHZ1JXOTV1RXRwSjFWZm45WGlMcmlSQmxGRXF4c0RqQTA5eUNOVW9ReHh3ZDdLV1NUdDJ5M0dUS2lmbHFIUlNvV1pjM20xMVdhL2ZKZEZnWEQ0c1NZZmxlSkJLZDhHTXo3SjhkWm4vY0dSQ2NLR0RuQTJHZTNmS3pjdmxuVEROdGhHV0xYelgvV2FYdFVBbVJnZUxsSFNyMzByMEc5VVRYTWIwQXRtd3pPb3k3M2ZrU2xIWmtkdXcvVFl1VTljQUQ0WXV0UG94VFRzQTM3OTd3VnI0Wi8xTkM1ekFSSHI0dnR4Smp4SWZpWk1oTWtiV2srMTRCbkpaS3dxR1p3RGZzd0x5eFdEU2cxMXJGTEpGN05vcHhqZDFoMS9RT1Qrb2V6Z2Z1M1lxK0hrK2R1ZjV4KzQwbzFHVGthSWdpa0svSUVuQzZhWXhDVUJhWkpTTjRYVFlGalUvWU1OSUtxSndoREdPQ0NJOEZEWG5YbVhqdEdoR0p5U2hxakFPbkJPa1cySkc5UzdHZ1llTVdBVTVKemhuV21CT2FPTStDS0VQb3FTZkZEQzJVbnErRExsVWdVVlVGRkxaR0pnNmp0bG9qc2RzYThrUE9iUHVKZGk1ZG5CZEJzTEpNR1RXRGE0dDJKdnR3dVBvOXMrWTg2c3V2L1czM1FHMXJBYU9BVVYrdng0SzZmMkQwNFBWS2xDN1dMU3JaekFpNDVaVjZsSUM3V29YcW1SeXZVcW9Wd3J6VW9Wc0lqZVRYV1F2K1JINUdUbEJYaUIvSW44bG4wSWJCQ0FGT2FqQUpyZ1pZeU9IV3FPZlVlL2FIakkxMlI2T1FvMWpDZ3QyMTVsKzRmNlhQYiswTU5vdTBWKzQzbjJGNzd0U2ZSYjI0ZDd6aXRnbkttdllIczY5enVnYVB2Qnd2NmlvWGtiMkxkTDY1QXR3NTF1TGtYbHUxYmhNTVJjWFNQY1lvcUtJUmxoMzRsUVA4LzVKYnVVRnllNHZ4RDYvNk14RkYxMUMwdVZMcjlVbGd3NDR0UzNwTVZpTkxVRXhieWNGZ0xJY3QrUURNaWJSaW14MXlkVXo4RlhaaXVPSURCT01WWDJuVVpjK2h1TkU1WFVKODF1aUpvaWFid3FhVkYwdWFjS2JhdS9wbDRSMlZXMFhYbEpyYTZib1ZyWUc2NDZURjVOWXp3eTR2akVOVnJEbGNOcFpQbDhESDZYWDhYV0N4MG12V1ZaWTZLRkxydnNZNjYvelBpY3Q1Rm54YU5VUi9qdXZaQ00zVHZENjBFMlcxdFppemJYVFBEdWFiY20wbmJienBXS3BtQTFheUJROGdpZWRMVU0rQTBrTmpCalFqbXVZejdZcmdJWFl2bUY2M1pMQndTWHJwbjlUYjl3d2RkL1UxSDBQTVFLM1hjTzh1bDNXVDdQeVBQZHB5MFRlbUt4TlJjSk5hdWlYSm5uVURwVXBwUVdzNFNuVUl5MEVFU0dZcUpZUUxHSHh6YUdXd1ZJYVM2WTdtUUZNOFpqWURRM2F4amY2MVNXalUzM0p3T1pBMXB3YUcxTDltemY3MWFIUmRYMUpIdzZGcDBhWGhOd2JxeWVHTmc0TmJkekdDQnhvejRaWGp5NE51NjlacjZzRFk2dk1yTFU1bkExUDhKa2JkV1hKNkVSZk1yeXZOaDFKZlE5K1Q0ZEloR3ZLOXczZHhqQkJ6YXRzUS9NbE9IVklEbllwRHo2b2RBWGxRMDF0MlBhNUlhZmQ4TU1weEFlREtQMEM2Q2pnVkxUNW9zQjZpY1V4MDFsV2pYeHpUL0d5UkYyd2VsRU01Wi83akczVmpRMVNyTm41SWJ5ek9HNWRvYkIzL1FIeHladnNYY296OElvRXdTN3BsQ2crenhIUWs0MjRxOUJmRXBrRVNKYkZIUXVzREJTV0ZrdUJrb1BPMGtMS3dSVllqeEdYbEhUY1REUU1KL0g2VFg5YWZrTzdtbnJhVE8xZmVUblpBWEx1NGNwN0hBWE1tTkcxeWVGazlUZ1MvTkhoWlIvNFFvQlRyL1pCKzZoQ2d5bDE1TnExVWJONm5FMS9ablAxVTJjaXpDQnB2czhjSlFaSjRMa1l4NU4veVpQQVVaTlFRMFY0ZjNCUWxsV3JLM1lSemwzMGRPVDZSVm4ydXBOdXI2d29TYThDcXBkVC9hS25CTTRvM2pOdXI5ZDl4cXRVVDZ2ZUJFdDlDYTlhdCtFUnpFRWhVa1I4c2E1bVE0YVZ2Sm9WZUVBOHpJNGVpNW1VTFhGR3lVN3ovNlRBZVlMVmNwelNXWlk4UFlZRjV5clRWNjBzVDArWFYxNDF2WCsrV2YxNlYyYkZlR1ZQWlh4RnBrdnllS1RXTGx6ZlcwbW5LeHNZNlkzMjk0LzA5OThTQ2ZYMWJsbTVwYmN2RkdscS9yMDdNUkFNaFlJRGlXNUpGS1dXM3ZkckVwQ3NaU0pHK29tN1p1L1BTU2NaSmhOa0xibVc1V3NyMTJwV3FXNXpLdGx3UlM0YkZPeFV3MTdtQ3p5Nmxza0NEbDFXWU9HV0RZckFEck1BN0JERHdlV1dOZDVrb2lKblIxZHoreXRMUDJxMFNxUEIxbG5LMmNjQjdSWWU0RlNvUGtzM2lCM3Q0dHhUU0hjdGIyc3kxaXZrMHB2SHVDTm02dzFmNnd4djMrT0NnTjc4THFkUW5VVmg3UjBvVEFwMHpPZjJyYlc3NzBWdTVDMmRJeUdkVG5Ibzh6U2ppN2RwcGowVVNvVkN6K2xoUk1UaDUzVGVxOVZiR2ZianVTYkFvb1NkWGF5WTRQWUhnMzc0QzZmN2dsMUIvRFh1SjQvUVh4T0JkSkZKc3BGc0kzZWdwb1dVVUNqbFRJRm5OWU5sK1p5WkttQmVZS0dIa0QxUXlEbGhhS2JLd0tjSUpxSjRUTEoyT21kWS9KV1hhZTREZEdCdzhIWjdlWGNnRkYyenIyU29hbERyeTVpS3FvYTBQdWhlM2hQUTJzM2VsVFlNK01JK24zckswS2dMNy9MYTNHZU1MdDZtN3U5MTJ2R252dE9SaUlhMHFCbWhxVmkrWFc5WE5CbXFiOGVWZ0t6SUhmR0k1Yk5vRzdYMFVDemVJU21xSWNPL25ZOEZIN1U4YXZYOWZ4L1NUK2h4MHNlelB3OVF5OE11bTNHV2YyTjRVeS95SVlHVkJYYkpIV0lacDdkZlRjcHRkTVRyOVFtcTdEYWlLL3VrcUNMNGt0NFJVZlM1WFBuTXRtVDIyL21RRnFGN2VtU3F0cmx1OFNWRWx4RFJKclpPRGtwdXdlMFZmVGZqZEVwMWY3QTd2K2Zvek5CWFVKLzZXVHVLMlR0RmxwRlZaQVozTGNGdlVpMVoycDJZVCtFTUFrR0pWU3RPekxUQVBnNElxV0lBbHpSU2pPQmtsMnp4ajNUS3ljcHpUL01udlgzdWFTTVdNK2dVMHJrWGpvaGhlZlZSTWFwczMva0xNU0t2MjNsVDIzdXhRcmtRanlPSmxlTURzZGhBbkQ2WkdFbFdaNU1qQ1h6Q0UvaGtXWCtXRjRrbnpHaFZPeUsyZVFaZWtWM2V5bzB6TDhrdVlXQ25EQ3ZqamhBa2NUUE9CRFhWZG9hdjNIVmNGblFqTHZ0VjlTMnAwekE2SmVnUHdNUXh0K3lGYjNsbDl6R2xxLzVkUktiM2NFeVFZb2FOWXBoYXJKN3hDQjdBV3hzTFkzampaWFkwWHNaajBXandjOUk2UFAvZEtBQm5DWmFxSHBhWkVBQ3hrNFplTFpTS05nWkFCbCtsWVFYMXNKUU9TWDNuNnI0MTBldmNvdWQ1SmVBR1VYVlA5SDF0Wk9LZWpUcTRPbm8wejBlcnJvMUZybk9wb2h2YTFkL2hUZHRWc1FkS041VzlSbFQzTmpEMG56bnlLTlRnS0FNZldOV2N5b2RWMElHTFBJSE9GMG80SnlxdWZhSzR6NldJSXp1R2gzZDhjOGN3UWc4RVIrT1Z4eXJqZG04dk51aHRzNExvT2loR3hJTXVVZGd6d2lZTjd4aGgxK29abkpOdVRHN2dRWnZ1NFhXWjlHQVpaakdFdWJ3ZVBxWWh0S0RUSCs5VlFrbDE3L2lHeWJzbkorOCtzS3R5UHJjbGw5dHk2NVpzZHN0LzlpcXBFS2g3TTVWZEJ4aDNjc09kTmM2dFczSTF1eU0xUHpPWGVnU09yTEZzRk5JMk8yN00rVEYyQXBuTjlNVXY1dWQ2TGp4SXZFUW5IUnp4SXU0SXNBOU1MRmtKbjJ0Y1pvWjdPTjdkWGU3dWpyYzhIcnVzUEthbWxxWHdkNzdsUVV1THBpbGF1NFBVTWFwdWVCYjdpclU0Um9VWEVZWHVWdUlHbFJHbU9wKzJsTmthUlBWemlPcW1sYVp2YXFHNGRGZ1NqMGp4RUpXcnYxMklVV250bXcrcmZRYXJSRTBBcGg0b2NJNm5sVWxHcXMrdTMvK1QvZXRoVzYyUHBIcDJlSGJac3RuaC93T085NXlEQUhpY1kyQmtZR0FBNHBtSjZRSHgvRFpmR2JpWlh3QkZHR3BVTnpRaTZQK3ZtYWN5M1FKeU9SaVlRS0lBTm9VTFZYaWNZMkJrWUdBTytwOEZKRjh3QUFIelZBWkdCbFNnRFFCVzlnTnZBQUFBZUp4allHQmdZSDR4TkRBQXp3UW1qd0FBQUFBQVRnQ2FBT2dCQ2dFc0FVNEJjQUdhQWNRQjdnSWFBcHdDNkFTYUJMd0UxZ1R5QlE0RktnVjZCZEFGL2daRUJtWUd0Z2NZQjVBSUdBaFNDR29JL2dsR0NiNEoyZ29FQ2p3S2dncTRDdkFMVUF1V0M3eDRuR05nWkdCZzBHWk1ZUkJsQUFFbUlPWUNRZ2FHLzJBK0F3QVlsQUc4QUhpY2JaRTlUc013R0liZjlBL1JTZ2dFWW1IeEFndHErak4yWkdqM0R0M1QxR2xUT1hIa3VCVzlBeWZnRUJ5Q2dUTndDQTdCVy9OSmxWQnR5ZC9qeCs4WEt3bUFhM3dod25GRTZJYjFPQnE0NE82UG02UWI0UmI1UWJpTkhoNkZPL1JENFM2ZU1SSHU0UmFhVDRoYWx6UjNlQlZ1NEFwdndrMzZkK0VXK1VPNGpYdDhDbmZvdjRXN1dPQkh1SWVuNk1Yc0N0dlBVMXZXYzczZW1jU2R4SWtXMnRXNUxkVW9IcDdrVEpmYUpWNnYxUEtnNnYxNjdIMm1NbWNMTmJXbDE4WllWVG03MWFtUE45NVhrOEVnRXgrbnRvREJEZ1VzK3NpUnNwYW9NZWY3cnVrTkVyaXppWE51d1M3SG1vZTl3Z2d4ditlNTVJekpNcVFUZU5ZVjAwc2N1TmJZOCtZeHJVZkdmY2FNWmIvQ05QUWUwNGJUMGxUaGJFdVQwc2ZZaEs2Sy8yM0FtZjNMeCtIMjRoY2o0R1NjQUFBQWVKeHRqdGx1Z3pBUVJia0pVRUpJdXUvN3ZxUjhsR05QQWNXeDBZQWI1ZS9Ma2xSOTZFZ2VuU3VmR1kwMzhQcUt2ZjlyaGdHRzhCRWd4QTRpakJCampBUVRUTEdMUGV6akFJYzR3akZPY0lvem5PTUNsN2pDTlc1d2l6dmM0d0dQZU1Jelh2Q0tON3pqQXpOOGVvblFSV1pTU2FZbWp2dWc2YXNlOThoRmx0ZXhNSm1tVk5tVjJXQnZkTmdaVWMrdWpBV3pYVzNVRG51MXc0M2FzU3RIYzhHcHpBWFgvcHkwanFUUVpKVGdrY3hKTHBhQ0YwbEQzMnhOdCs0M3RBc24yOURmdDAydURLUzJjakdVTmdzazI2cUsybEZ0aFlvVTI3SU5QcW1pRHFnNWdvZTBwcVI1cVNvcU1kZWsvQ1VaRnl3TDQ2ckVzaUltbGVxaXFvTXl0NGJhWGx1LzFHTGRORmY1emJjTm1kcjFZVVdDWmU0N28relVtYi9Eb1N0YnczY1ZzZWY5QUxqamlQUUEpIGZvcm1hdChcJ3dvZmZcJyk7XG4gICAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICAgICAgZm9udC1zdHlsZTogbm9ybWFsO1xuICAgIH1cblxuICAgIGh0bWwge1xuICAgICAgLS1sdW1vLWljb25zLWFsaWduLWNlbnRlcjogIlxcZWEwMSI7XG4gICAgICAtLWx1bW8taWNvbnMtYWxpZ24tbGVmdDogIlxcZWEwMiI7XG4gICAgICAtLWx1bW8taWNvbnMtYWxpZ24tcmlnaHQ6ICJcXGVhMDMiO1xuICAgICAgLS1sdW1vLWljb25zLWFuZ2xlLWRvd246ICJcXGVhMDQiO1xuICAgICAgLS1sdW1vLWljb25zLWFuZ2xlLWxlZnQ6ICJcXGVhMDUiO1xuICAgICAgLS1sdW1vLWljb25zLWFuZ2xlLXJpZ2h0OiAiXFxlYTA2IjtcbiAgICAgIC0tbHVtby1pY29ucy1hbmdsZS11cDogIlxcZWEwNyI7XG4gICAgICAtLWx1bW8taWNvbnMtYXJyb3ctZG93bjogIlxcZWEwOCI7XG4gICAgICAtLWx1bW8taWNvbnMtYXJyb3ctbGVmdDogIlxcZWEwOSI7XG4gICAgICAtLWx1bW8taWNvbnMtYXJyb3ctcmlnaHQ6ICJcXGVhMGEiO1xuICAgICAgLS1sdW1vLWljb25zLWFycm93LXVwOiAiXFxlYTBiIjtcbiAgICAgIC0tbHVtby1pY29ucy1iYXItY2hhcnQ6ICJcXGVhMGMiO1xuICAgICAgLS1sdW1vLWljb25zLWJlbGw6ICJcXGVhMGQiO1xuICAgICAgLS1sdW1vLWljb25zLWNhbGVuZGFyOiAiXFxlYTBlIjtcbiAgICAgIC0tbHVtby1pY29ucy1jaGVja21hcms6ICJcXGVhMGYiO1xuICAgICAgLS1sdW1vLWljb25zLWNoZXZyb24tZG93bjogIlxcZWExMCI7XG4gICAgICAtLWx1bW8taWNvbnMtY2hldnJvbi1sZWZ0OiAiXFxlYTExIjtcbiAgICAgIC0tbHVtby1pY29ucy1jaGV2cm9uLXJpZ2h0OiAiXFxlYTEyIjtcbiAgICAgIC0tbHVtby1pY29ucy1jaGV2cm9uLXVwOiAiXFxlYTEzIjtcbiAgICAgIC0tbHVtby1pY29ucy1jbG9jazogIlxcZWExNCI7XG4gICAgICAtLWx1bW8taWNvbnMtY29nOiAiXFxlYTE1IjtcbiAgICAgIC0tbHVtby1pY29ucy1jcm9zczogIlxcZWExNiI7XG4gICAgICAtLWx1bW8taWNvbnMtZG93bmxvYWQ6ICJcXGVhMTciO1xuICAgICAgLS1sdW1vLWljb25zLWRyb3Bkb3duOiAiXFxlYTE4IjtcbiAgICAgIC0tbHVtby1pY29ucy1lZGl0OiAiXFxlYTE5IjtcbiAgICAgIC0tbHVtby1pY29ucy1lcnJvcjogIlxcZWExYSI7XG4gICAgICAtLWx1bW8taWNvbnMtZXllOiAiXFxlYTFiIjtcbiAgICAgIC0tbHVtby1pY29ucy1leWUtZGlzYWJsZWQ6ICJcXGVhMWMiO1xuICAgICAgLS1sdW1vLWljb25zLW1lbnU6ICJcXGVhMWQiO1xuICAgICAgLS1sdW1vLWljb25zLW1pbnVzOiAiXFxlYTFlIjtcbiAgICAgIC0tbHVtby1pY29ucy1vcmRlcmVkLWxpc3Q6ICJcXGVhMWYiO1xuICAgICAgLS1sdW1vLWljb25zLXBob25lOiAiXFxlYTIwIjtcbiAgICAgIC0tbHVtby1pY29ucy1waG90bzogIlxcZWEyMSI7XG4gICAgICAtLWx1bW8taWNvbnMtcGxheTogIlxcZWEyMiI7XG4gICAgICAtLWx1bW8taWNvbnMtcGx1czogIlxcZWEyMyI7XG4gICAgICAtLWx1bW8taWNvbnMtcmVkbzogIlxcZWEyNCI7XG4gICAgICAtLWx1bW8taWNvbnMtcmVsb2FkOiAiXFxlYTI1IjtcbiAgICAgIC0tbHVtby1pY29ucy1zZWFyY2g6ICJcXGVhMjYiO1xuICAgICAgLS1sdW1vLWljb25zLXVuZG86ICJcXGVhMjciO1xuICAgICAgLS1sdW1vLWljb25zLXVub3JkZXJlZC1saXN0OiAiXFxlYTI4IjtcbiAgICAgIC0tbHVtby1pY29ucy11cGxvYWQ6ICJcXGVhMjkiO1xuICAgICAgLS1sdW1vLWljb25zLXVzZXI6ICJcXGVhMmEiO1xuICAgIH1cbiAgPC9zdHlsZT5cbicsZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChyMXQuY29udGVudCk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCAoYykgMjAyMSBWYWFkaW4gTHRkLgogICAgICogVGhpcyBwcm9ncmFtIGlzIGF2YWlsYWJsZSB1bmRlciBBcGFjaGUgTGljZW5zZSBWZXJzaW9uIDIuMCwgYXZhaWxhYmxlIGF0IGh0dHBzOi8vdmFhZGluLmNvbS9saWNlbnNlLwogICAgICovCmNvbnN0IG8xdD0kUXRgCiAgOmhvc3QgewogICAgLS1sdW1vLXNpemUteHM6IDEuNjI1cmVtOwogICAgLS1sdW1vLXNpemUtczogMS44NzVyZW07CiAgICAtLWx1bW8tc2l6ZS1tOiAyLjI1cmVtOwogICAgLS1sdW1vLXNpemUtbDogMi43NXJlbTsKICAgIC0tbHVtby1zaXplLXhsOiAzLjVyZW07CgogICAgLyogSWNvbnMgKi8KICAgIC0tbHVtby1pY29uLXNpemUtczogMS4yNWVtOwogICAgLS1sdW1vLWljb24tc2l6ZS1tOiAxLjVlbTsKICAgIC0tbHVtby1pY29uLXNpemUtbDogMi4yNWVtOwogICAgLyogRm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5ICovCiAgICAtLWx1bW8taWNvbi1zaXplOiB2YXIoLS1sdW1vLWljb24tc2l6ZS1tKTsKICB9CmAsYTF0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRlbXBsYXRlIik7YTF0LmlubmVySFRNTD1gPHN0eWxlPiR7bzF0LnRvU3RyaW5nKCkucmVwbGFjZSgiOmhvc3QiLCJodG1sIil9PC9zdHlsZT5gLGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoYTF0LmNvbnRlbnQpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgKGMpIDIwMjEgVmFhZGluIEx0ZC4KICAgICAqIFRoaXMgcHJvZ3JhbSBpcyBhdmFpbGFibGUgdW5kZXIgQXBhY2hlIExpY2Vuc2UgVmVyc2lvbiAyLjAsIGF2YWlsYWJsZSBhdCBodHRwczovL3ZhYWRpbi5jb20vbGljZW5zZS8KICAgICAqLwpjb25zdCBzMXQ9JFF0YAogIDpob3N0IHsKICAgIC8qIFNxdWFyZSAqLwogICAgLS1sdW1vLXNwYWNlLXhzOiAwLjI1cmVtOwogICAgLS1sdW1vLXNwYWNlLXM6IDAuNXJlbTsKICAgIC0tbHVtby1zcGFjZS1tOiAxcmVtOwogICAgLS1sdW1vLXNwYWNlLWw6IDEuNXJlbTsKICAgIC0tbHVtby1zcGFjZS14bDogMi41cmVtOwoKICAgIC8qIFdpZGUgKi8KICAgIC0tbHVtby1zcGFjZS13aWRlLXhzOiBjYWxjKHZhcigtLWx1bW8tc3BhY2UteHMpIC8gMikgdmFyKC0tbHVtby1zcGFjZS14cyk7CiAgICAtLWx1bW8tc3BhY2Utd2lkZS1zOiBjYWxjKHZhcigtLWx1bW8tc3BhY2UtcykgLyAyKSB2YXIoLS1sdW1vLXNwYWNlLXMpOwogICAgLS1sdW1vLXNwYWNlLXdpZGUtbTogY2FsYyh2YXIoLS1sdW1vLXNwYWNlLW0pIC8gMikgdmFyKC0tbHVtby1zcGFjZS1tKTsKICAgIC0tbHVtby1zcGFjZS13aWRlLWw6IGNhbGModmFyKC0tbHVtby1zcGFjZS1sKSAvIDIpIHZhcigtLWx1bW8tc3BhY2UtbCk7CiAgICAtLWx1bW8tc3BhY2Utd2lkZS14bDogY2FsYyh2YXIoLS1sdW1vLXNwYWNlLXhsKSAvIDIpIHZhcigtLWx1bW8tc3BhY2UteGwpOwoKICAgIC8qIFRhbGwgKi8KICAgIC0tbHVtby1zcGFjZS10YWxsLXhzOiB2YXIoLS1sdW1vLXNwYWNlLXhzKSBjYWxjKHZhcigtLWx1bW8tc3BhY2UteHMpIC8gMik7CiAgICAtLWx1bW8tc3BhY2UtdGFsbC1zOiB2YXIoLS1sdW1vLXNwYWNlLXMpIGNhbGModmFyKC0tbHVtby1zcGFjZS1zKSAvIDIpOwogICAgLS1sdW1vLXNwYWNlLXRhbGwtbTogdmFyKC0tbHVtby1zcGFjZS1tKSBjYWxjKHZhcigtLWx1bW8tc3BhY2UtbSkgLyAyKTsKICAgIC0tbHVtby1zcGFjZS10YWxsLWw6IHZhcigtLWx1bW8tc3BhY2UtbCkgY2FsYyh2YXIoLS1sdW1vLXNwYWNlLWwpIC8gMik7CiAgICAtLWx1bW8tc3BhY2UtdGFsbC14bDogdmFyKC0tbHVtby1zcGFjZS14bCkgY2FsYyh2YXIoLS1sdW1vLXNwYWNlLXhsKSAvIDIpOwogIH0KYCxsMXQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGVtcGxhdGUiKTtsMXQuaW5uZXJIVE1MPWA8c3R5bGU+JHtzMXQudG9TdHJpbmcoKS5yZXBsYWNlKCI6aG9zdCIsImh0bWwiKX08L3N0eWxlPmAsZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChsMXQuY29udGVudCk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCAoYykgMjAyMSBWYWFkaW4gTHRkLgogICAgICogVGhpcyBwcm9ncmFtIGlzIGF2YWlsYWJsZSB1bmRlciBBcGFjaGUgTGljZW5zZSBWZXJzaW9uIDIuMCwgYXZhaWxhYmxlIGF0IGh0dHBzOi8vdmFhZGluLmNvbS9saWNlbnNlLwogICAgICovCmNvbnN0IGMxdD0kUXRgCiAgOmhvc3QgewogICAgLyogQm9yZGVyIHJhZGl1cyAqLwogICAgLS1sdW1vLWJvcmRlci1yYWRpdXMtczogMC4yNWVtOyAvKiBDaGVja2JveCwgYmFkZ2UsIGRhdGUtcGlja2VyIHllYXIgaW5kaWNhdG9yLCBldGMgKi8KICAgIC0tbHVtby1ib3JkZXItcmFkaXVzLW06IHZhcigtLWx1bW8tYm9yZGVyLXJhZGl1cywgMC4yNWVtKTsgLyogQnV0dG9uLCB0ZXh0IGZpZWxkLCBtZW51IG92ZXJsYXksIGV0YyAqLwogICAgLS1sdW1vLWJvcmRlci1yYWRpdXMtbDogMC41ZW07IC8qIERpYWxvZywgbm90aWZpY2F0aW9uLCBldGMgKi8KICAgIC0tbHVtby1ib3JkZXItcmFkaXVzOiAwLjI1ZW07IC8qIERlcHJlY2F0ZWQgKi8KCiAgICAvKiBTaGFkb3cgKi8KICAgIC0tbHVtby1ib3gtc2hhZG93LXhzOiAwIDFweCA0cHggLTFweCB2YXIoLS1sdW1vLXNoYWRlLTUwcGN0KTsKICAgIC0tbHVtby1ib3gtc2hhZG93LXM6IDAgMnB4IDRweCAtMXB4IHZhcigtLWx1bW8tc2hhZGUtMjBwY3QpLCAwIDNweCAxMnB4IC0xcHggdmFyKC0tbHVtby1zaGFkZS0zMHBjdCk7CiAgICAtLWx1bW8tYm94LXNoYWRvdy1tOiAwIDJweCA2cHggLTFweCB2YXIoLS1sdW1vLXNoYWRlLTIwcGN0KSwgMCA4cHggMjRweCAtNHB4IHZhcigtLWx1bW8tc2hhZGUtNDBwY3QpOwogICAgLS1sdW1vLWJveC1zaGFkb3ctbDogMCAzcHggMThweCAtMnB4IHZhcigtLWx1bW8tc2hhZGUtMjBwY3QpLCAwIDEycHggNDhweCAtNnB4IHZhcigtLWx1bW8tc2hhZGUtNDBwY3QpOwogICAgLS1sdW1vLWJveC1zaGFkb3cteGw6IDAgNHB4IDI0cHggLTNweCB2YXIoLS1sdW1vLXNoYWRlLTIwcGN0KSwgMCAxOHB4IDY0cHggLThweCB2YXIoLS1sdW1vLXNoYWRlLTQwcGN0KTsKCiAgICAvKiBDbGlja2FibGUgZWxlbWVudCBjdXJzb3IgKi8KICAgIC0tbHVtby1jbGlja2FibGUtY3Vyc29yOiBkZWZhdWx0OwogIH0KYCx1MXQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGVtcGxhdGUiKTt1MXQuaW5uZXJIVE1MPWA8c3R5bGU+JHtjMXQudG9TdHJpbmcoKS5yZXBsYWNlKCI6aG9zdCIsImh0bWwiKX08L3N0eWxlPmAsZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZCh1MXQuY29udGVudCk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCAoYykgMjAyMSBWYWFkaW4gTHRkLgogICAgICogVGhpcyBwcm9ncmFtIGlzIGF2YWlsYWJsZSB1bmRlciBBcGFjaGUgTGljZW5zZSBWZXJzaW9uIDIuMCwgYXZhaWxhYmxlIGF0IGh0dHBzOi8vdmFhZGluLmNvbS9saWNlbnNlLwogICAgICovCmNvbnN0IGgxdD0kUXRgCiAgOmhvc3QgewogICAgLyogcHJldHRpZXItaWdub3JlICovCiAgICAtLWx1bW8tZm9udC1mYW1pbHk6IC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgJ1JvYm90bycsICdTZWdvZSBVSScsIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWYsICdBcHBsZSBDb2xvciBFbW9qaScsICdTZWdvZSBVSSBFbW9qaScsICdTZWdvZSBVSSBTeW1ib2wnOwoKICAgIC8qIEZvbnQgc2l6ZXMgKi8KICAgIC0tbHVtby1mb250LXNpemUteHhzOiAwLjc1cmVtOwogICAgLS1sdW1vLWZvbnQtc2l6ZS14czogMC44MTI1cmVtOwogICAgLS1sdW1vLWZvbnQtc2l6ZS1zOiAwLjg3NXJlbTsKICAgIC0tbHVtby1mb250LXNpemUtbTogMXJlbTsKICAgIC0tbHVtby1mb250LXNpemUtbDogMS4xMjVyZW07CiAgICAtLWx1bW8tZm9udC1zaXplLXhsOiAxLjM3NXJlbTsKICAgIC0tbHVtby1mb250LXNpemUteHhsOiAxLjc1cmVtOwogICAgLS1sdW1vLWZvbnQtc2l6ZS14eHhsOiAyLjVyZW07CgogICAgLyogTGluZSBoZWlnaHRzICovCiAgICAtLWx1bW8tbGluZS1oZWlnaHQteHM6IDEuMjU7CiAgICAtLWx1bW8tbGluZS1oZWlnaHQtczogMS4zNzU7CiAgICAtLWx1bW8tbGluZS1oZWlnaHQtbTogMS42MjU7CiAgfQpgLGQxdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZW1wbGF0ZSIpO2QxdC5pbm5lckhUTUw9YDxzdHlsZT4ke2gxdC50b1N0cmluZygpLnJlcGxhY2UoIjpob3N0IiwiaHRtbCIpfTwvc3R5bGU+YCxkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKGQxdC5jb250ZW50KTt0MXQoIiIsJFF0YAogIGh0bWwgewogICAgZm9udC1mYW1pbHk6IHZhcigtLWx1bW8tZm9udC1mYW1pbHkpOwogICAgZm9udC1zaXplOiB2YXIoLS1sdW1vLWZvbnQtc2l6ZSwgdmFyKC0tbHVtby1mb250LXNpemUtbSkpOwogICAgbGluZS1oZWlnaHQ6IHZhcigtLWx1bW8tbGluZS1oZWlnaHQtbSk7CiAgICAtd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7CiAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDsKICAgIC1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBncmF5c2NhbGU7CiAgfQoKICAvKiBDYW7igJl0IGNvbWJpbmUgd2l0aCB0aGUgYWJvdmUgc2VsZWN0b3IgYmVjYXVzZSB0aGF0IGRvZXNu4oCZdCB3b3JrIGluIGJyb3dzZXJzIHdpdGhvdXQgbmF0aXZlIHNoYWRvdyBkb20gKi8KICA6aG9zdCB7CiAgICBmb250LWZhbWlseTogdmFyKC0tbHVtby1mb250LWZhbWlseSk7CiAgICBmb250LXNpemU6IHZhcigtLWx1bW8tZm9udC1zaXplLCB2YXIoLS1sdW1vLWZvbnQtc2l6ZS1tKSk7CiAgICBsaW5lLWhlaWdodDogdmFyKC0tbHVtby1saW5lLWhlaWdodC1tKTsKICAgIC13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsKICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkOwogICAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTsKICB9CgogIHNtYWxsLAogIFt0aGVtZX49J2ZvbnQtc2l6ZS1zJ10gewogICAgZm9udC1zaXplOiB2YXIoLS1sdW1vLWZvbnQtc2l6ZS1zKTsKICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS1sdW1vLWxpbmUtaGVpZ2h0LXMpOwogIH0KCiAgW3RoZW1lfj0nZm9udC1zaXplLXhzJ10gewogICAgZm9udC1zaXplOiB2YXIoLS1sdW1vLWZvbnQtc2l6ZS14cyk7CiAgICBsaW5lLWhlaWdodDogdmFyKC0tbHVtby1saW5lLWhlaWdodC14cyk7CiAgfQoKICBoMSwKICBoMiwKICBoMywKICBoNCwKICBoNSwKICBoNiB7CiAgICBmb250LXdlaWdodDogNjAwOwogICAgbGluZS1oZWlnaHQ6IHZhcigtLWx1bW8tbGluZS1oZWlnaHQteHMpOwogICAgbWFyZ2luLXRvcDogMS4yNWVtOwogIH0KCiAgaDEgewogICAgZm9udC1zaXplOiB2YXIoLS1sdW1vLWZvbnQtc2l6ZS14eHhsKTsKICAgIG1hcmdpbi1ib3R0b206IDAuNzVlbTsKICB9CgogIGgyIHsKICAgIGZvbnQtc2l6ZTogdmFyKC0tbHVtby1mb250LXNpemUteHhsKTsKICAgIG1hcmdpbi1ib3R0b206IDAuNWVtOwogIH0KCiAgaDMgewogICAgZm9udC1zaXplOiB2YXIoLS1sdW1vLWZvbnQtc2l6ZS14bCk7CiAgICBtYXJnaW4tYm90dG9tOiAwLjVlbTsKICB9CgogIGg0IHsKICAgIGZvbnQtc2l6ZTogdmFyKC0tbHVtby1mb250LXNpemUtbCk7CiAgICBtYXJnaW4tYm90dG9tOiAwLjVlbTsKICB9CgogIGg1IHsKICAgIGZvbnQtc2l6ZTogdmFyKC0tbHVtby1mb250LXNpemUtbSk7CiAgICBtYXJnaW4tYm90dG9tOiAwLjI1ZW07CiAgfQoKICBoNiB7CiAgICBmb250LXNpemU6IHZhcigtLWx1bW8tZm9udC1zaXplLXhzKTsKICAgIG1hcmdpbi1ib3R0b206IDA7CiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOwogICAgbGV0dGVyLXNwYWNpbmc6IDAuMDNlbTsKICB9CgogIHAsCiAgYmxvY2txdW90ZSB7CiAgICBtYXJnaW4tdG9wOiAwLjVlbTsKICAgIG1hcmdpbi1ib3R0b206IDAuNzVlbTsKICB9CgogIGEgewogICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogIH0KCiAgYTpob3ZlciB7CiAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKICB9CgogIGhyIHsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgYWxpZ24tc2VsZjogc3RyZXRjaDsKICAgIGhlaWdodDogMXB4OwogICAgYm9yZGVyOiAwOwogICAgcGFkZGluZzogMDsKICAgIG1hcmdpbjogdmFyKC0tbHVtby1zcGFjZS1zKSBjYWxjKHZhcigtLWx1bW8tYm9yZGVyLXJhZGl1cy1tKSAvIDIpOwogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbHVtby1jb250cmFzdC0xMHBjdCk7CiAgfQoKICBibG9ja3F1b3RlIHsKICAgIGJvcmRlci1sZWZ0OiAycHggc29saWQgdmFyKC0tbHVtby1jb250cmFzdC0zMHBjdCk7CiAgfQoKICBiLAogIHN0cm9uZyB7CiAgICBmb250LXdlaWdodDogNjAwOwogIH0KCiAgLyogUlRMIHNwZWNpZmljIHN0eWxlcyAqLwoKICBibG9ja3F1b3RlW2Rpcj0ncnRsJ10gewogICAgYm9yZGVyLWxlZnQ6IG5vbmU7CiAgICBib3JkZXItcmlnaHQ6IDJweCBzb2xpZCB2YXIoLS1sdW1vLWNvbnRyYXN0LTMwcGN0KTsKICB9CmAse21vZHVsZUlkOiJsdW1vLXR5cG9ncmFwaHkifSksdDF0KCJ2YWFkaW4tY2hlY2tib3giLCRRdGAKICAgIDpob3N0IHsKICAgICAgLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDsKICAgICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsKICAgICAgLW1vei11c2VyLXNlbGVjdDogbm9uZTsKICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAgIGN1cnNvcjogZGVmYXVsdDsKICAgICAgb3V0bGluZTogbm9uZTsKICAgIH0KCiAgICBbcGFydD0nbGFiZWwnXTpub3QoW2VtcHR5XSkgewogICAgICBtYXJnaW46IDAuMTg3NWVtIDAuODc1ZW0gMC4xODc1ZW0gMC4zNzVlbTsKICAgIH0KCiAgICBbcGFydD0nY2hlY2tib3gnXSB7CiAgICAgIHdpZHRoOiBjYWxjKDFlbSArIDJweCk7CiAgICAgIGhlaWdodDogY2FsYygxZW0gKyAycHgpOwogICAgICBtYXJnaW46IDAuMTg3NWVtOwogICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLWx1bW8tYm9yZGVyLXJhZGl1cy1zKTsKICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbHVtby1jb250cmFzdC0yMHBjdCk7CiAgICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjJzIGN1YmljLWJlemllcigwLjEyLCAwLjMyLCAwLjU0LCAyKSwgYmFja2dyb3VuZC1jb2xvciAwLjE1czsKICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAgIGxpbmUtaGVpZ2h0OiAxLjI7CiAgICB9CgogICAgOmhvc3QoW2luZGV0ZXJtaW5hdGVdKSBbcGFydD0nY2hlY2tib3gnXSwKICAgIDpob3N0KFtjaGVja2VkXSkgW3BhcnQ9J2NoZWNrYm94J10gewogICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1sdW1vLXByaW1hcnktY29sb3IpOwogICAgfQoKICAgIC8qIE5lZWRlZCB0byBhbGlnbiB0aGUgY2hlY2tib3ggbmljZWx5IG9uIHRoZSBiYXNlbGluZSAqLwogICAgW3BhcnQ9J2NoZWNrYm94J106OmJlZm9yZSB7CiAgICAgIGNvbnRlbnQ6ICdcXDIwMDMnOwogICAgfQoKICAgIC8qIENoZWNrbWFyayAqLwogICAgW3BhcnQ9J2NoZWNrYm94J106OmFmdGVyIHsKICAgICAgY29udGVudDogJyc7CiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgd2lkdGg6IDA7CiAgICAgIGhlaWdodDogMDsKICAgICAgYm9yZGVyOiAwIHNvbGlkIHZhcigtLWx1bW8tcHJpbWFyeS1jb250cmFzdC1jb2xvcik7CiAgICAgIGJvcmRlci13aWR0aDogMC4xODc1ZW0gMCAwIDAuMTg3NWVtOwogICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgICB0cmFuc2Zvcm0tb3JpZ2luOiAwIDA7CiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgdG9wOiAwLjgxMjVlbTsKICAgICAgbGVmdDogMC41ZW07CiAgICAgIHRyYW5zZm9ybTogc2NhbGUoMC41NSkgcm90YXRlKC0xMzVkZWcpOwogICAgICBvcGFjaXR5OiAwOwogICAgfQoKICAgIDpob3N0KFtjaGVja2VkXSkgW3BhcnQ9J2NoZWNrYm94J106OmFmdGVyIHsKICAgICAgb3BhY2l0eTogMTsKICAgICAgd2lkdGg6IDAuNjI1ZW07CiAgICAgIGhlaWdodDogMS4wNjI1ZW07CiAgICB9CgogICAgLyogSW5kZXRlcm1pbmF0ZSBjaGVja21hcmsgKi8KICAgIDpob3N0KFtpbmRldGVybWluYXRlXSkgW3BhcnQ9J2NoZWNrYm94J106OmFmdGVyIHsKICAgICAgdHJhbnNmb3JtOiBub25lOwogICAgICBvcGFjaXR5OiAxOwogICAgICB0b3A6IDQ1JTsKICAgICAgaGVpZ2h0OiAxMCU7CiAgICAgIGxlZnQ6IDIyJTsKICAgICAgcmlnaHQ6IDIyJTsKICAgICAgd2lkdGg6IGF1dG87CiAgICAgIGJvcmRlcjogMDsKICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbHVtby1wcmltYXJ5LWNvbnRyYXN0LWNvbG9yKTsKICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjI1czsKICAgIH0KCiAgICAvKiBGb2N1cyByaW5nICovCiAgICA6aG9zdChbZm9jdXMtcmluZ10pIFtwYXJ0PSdjaGVja2JveCddIHsKICAgICAgYm94LXNoYWRvdzogMCAwIDAgM3B4IHZhcigtLWx1bW8tcHJpbWFyeS1jb2xvci01MHBjdCk7CiAgICB9CgogICAgLyogRGlzYWJsZWQgKi8KICAgIDpob3N0KFtkaXNhYmxlZF0pIHsKICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAgIGNvbG9yOiB2YXIoLS1sdW1vLWRpc2FibGVkLXRleHQtY29sb3IpOwogICAgfQoKICAgIDpob3N0KFtkaXNhYmxlZF0pIFtwYXJ0PSdsYWJlbCddIDo6c2xvdHRlZCgqKSB7CiAgICAgIGNvbG9yOiBpbmhlcml0OwogICAgfQoKICAgIDpob3N0KFtkaXNhYmxlZF0pIFtwYXJ0PSdjaGVja2JveCddIHsKICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbHVtby1jb250cmFzdC0xMHBjdCk7CiAgICB9CgogICAgOmhvc3QoW2Rpc2FibGVkXSkgW3BhcnQ9J2NoZWNrYm94J106OmFmdGVyIHsKICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1sdW1vLWNvbnRyYXN0LTMwcGN0KTsKICAgIH0KCiAgICA6aG9zdChbaW5kZXRlcm1pbmF0ZV1bZGlzYWJsZWRdKSBbcGFydD0nY2hlY2tib3gnXTo6YWZ0ZXIgewogICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1sdW1vLWNvbnRyYXN0LTMwcGN0KTsKICAgIH0KCiAgICAvKiBSVEwgc3BlY2lmaWMgc3R5bGVzICovCiAgICA6aG9zdChbZGlyPSdydGwnXSkgW3BhcnQ9J2xhYmVsJ106bm90KFtlbXB0eV0pIHsKICAgICAgbWFyZ2luOiAwLjE4NzVlbSAwLjM3NWVtIDAuMTg3NWVtIDAuODc1ZW07CiAgICB9CgogICAgLyogVHJhbnNpdGlvbiB0aGUgY2hlY2ttYXJrIGlmIGFjdGl2YXRlZCB3aXRoIHRoZSBtb3VzZSAoZGlzYWJsZWQgZm9yIGdyaWQgc2VsZWN0LWFsbCB0aGlzIHdheSkgKi8KICAgIDpob3N0KDpob3ZlcikgW3BhcnQ9J2NoZWNrYm94J106OmFmdGVyIHsKICAgICAgdHJhbnNpdGlvbjogd2lkdGggMC4xcywgaGVpZ2h0IDAuMjVzOwogICAgfQoKICAgIC8qIFVzZWQgZm9yIGFjdGl2YXRpb24gImhhbG8iICovCiAgICBbcGFydD0nY2hlY2tib3gnXTo6YmVmb3JlIHsKICAgICAgY29sb3I6IHRyYW5zcGFyZW50OwogICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgIHdpZHRoOiAxMDAlOwogICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgIGJvcmRlci1yYWRpdXM6IGluaGVyaXQ7CiAgICAgIGJhY2tncm91bmQtY29sb3I6IGluaGVyaXQ7CiAgICAgIHRyYW5zZm9ybTogc2NhbGUoMS40KTsKICAgICAgb3BhY2l0eTogMDsKICAgICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuMXMsIG9wYWNpdHkgMC44czsKICAgIH0KCiAgICAvKiBIb3ZlciAqLwogICAgOmhvc3QoOm5vdChbY2hlY2tlZF0pOm5vdChbaW5kZXRlcm1pbmF0ZV0pOm5vdChbZGlzYWJsZWRdKTpob3ZlcikgW3BhcnQ9J2NoZWNrYm94J10gewogICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1sdW1vLWNvbnRyYXN0LTMwcGN0KTsKICAgIH0KCiAgICAvKiBEaXNhYmxlIGhvdmVyIGZvciB0b3VjaCBkZXZpY2VzICovCiAgICBAbWVkaWEgKHBvaW50ZXI6IGNvYXJzZSkgewogICAgICA6aG9zdCg6bm90KFtjaGVja2VkXSk6bm90KFtpbmRldGVybWluYXRlXSk6bm90KFtkaXNhYmxlZF0pOmhvdmVyKSBbcGFydD0nY2hlY2tib3gnXSB7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbHVtby1jb250cmFzdC0yMHBjdCk7CiAgICAgIH0KICAgIH0KCiAgICAvKiBBY3RpdmUgKi8KICAgIDpob3N0KFthY3RpdmVdKSBbcGFydD0nY2hlY2tib3gnXSB7CiAgICAgIHRyYW5zZm9ybTogc2NhbGUoMC45KTsKICAgICAgdHJhbnNpdGlvbi1kdXJhdGlvbjogMC4wNXM7CiAgICB9CgogICAgOmhvc3QoW2FjdGl2ZV1bY2hlY2tlZF0pIFtwYXJ0PSdjaGVja2JveCddIHsKICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxLjEpOwogICAgfQoKICAgIDpob3N0KFthY3RpdmVdOm5vdChbY2hlY2tlZF0pKSBbcGFydD0nY2hlY2tib3gnXTo6YmVmb3JlIHsKICAgICAgdHJhbnNpdGlvbi1kdXJhdGlvbjogMC4wMXMsIDAuMDFzOwogICAgICB0cmFuc2Zvcm06IHNjYWxlKDApOwogICAgICBvcGFjaXR5OiAwLjQ7CiAgICB9CiAgYCx7bW9kdWxlSWQ6Imx1bW8tY2hlY2tib3gifSk7Y29uc3QgcDF0PXQ9PmNsYXNzIGV4dGVuZHMgdHtzdGF0aWMgZ2V0IHByb3BlcnRpZXMoKXtyZXR1cm57dGhlbWU6e3R5cGU6U3RyaW5nLHJlYWRPbmx5OiEwfX19YXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrKHQsZSxuKXtzdXBlci5hdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2sodCxlLG4pLCJ0aGVtZSI9PT10JiZ0aGlzLl9zZXRUaGVtZShuKX19LGYxdD10PT5jbGFzcyBleHRlbmRzKHAxdCh0KSl7c3RhdGljIGZpbmFsaXplKCl7c3VwZXIuZmluYWxpemUoKTtjb25zdCB0PXRoaXMucHJvdG90eXBlLl90ZW1wbGF0ZSxlPU9iamVjdC5nZXRQcm90b3R5cGVPZih0aGlzLnByb3RvdHlwZSkuX3RlbXBsYXRlO2UmJkFycmF5LmZyb20oZS5jb250ZW50LnF1ZXJ5U2VsZWN0b3JBbGwoInN0eWxlW2luY2x1ZGVdIikpLmZvckVhY2goKGU9Pnt0aGlzLl9pbmNsdWRlU3R5bGUoZS5nZXRBdHRyaWJ1dGUoImluY2x1ZGUiKSx0KX0pKSx0aGlzLl9pbmNsdWRlTWF0Y2hpbmdUaGVtZXModCl9c3RhdGljIF9pbmNsdWRlTWF0Y2hpbmdUaGVtZXModCl7Y29uc3QgZT1CLnByb3RvdHlwZS5tb2R1bGVzO2xldCBuPSExO2NvbnN0IGk9dGhpcy5pcysiLWRlZmF1bHQtdGhlbWUiO09iamVjdC5rZXlzKGUpLnNvcnQoKCh0LGUpPT57Y29uc3Qgbj0wPT09dC5pbmRleE9mKCJ2YWFkaW4tIiksaT0wPT09ZS5pbmRleE9mKCJ2YWFkaW4tIikscj1bImx1bW8tIiwibWF0ZXJpYWwtIl0sbz1yLmZpbHRlcigoZT0+MD09PXQuaW5kZXhPZihlKSkpLmxlbmd0aD4wLGE9ci5maWx0ZXIoKHQ9PjA9PT1lLmluZGV4T2YodCkpKS5sZW5ndGg+MDtyZXR1cm4gbiE9PWk/bj8tMToxOm8hPT1hP28/LTE6MTowfSkpLmZvckVhY2goKHI9PntpZihyIT09aSl7Y29uc3QgaT1lW3JdLmdldEF0dHJpYnV0ZSgidGhlbWUtZm9yIik7aSYmaS5zcGxpdCgiICIpLmZvckVhY2goKGU9PntuZXcgUmVnRXhwKCJeIitlLnNwbGl0KCIqIikuam9pbigiLioiKSsiJCIpLnRlc3QodGhpcy5pcykmJihuPSEwLHRoaXMuX2luY2x1ZGVTdHlsZShyLHQpKX0pKX19KSksIW4mJmVbaV0mJnRoaXMuX2luY2x1ZGVTdHlsZShpLHQpfXN0YXRpYyBfaW5jbHVkZVN0eWxlKHQsZSl7aWYoZSYmIWUuY29udGVudC5xdWVyeVNlbGVjdG9yKGBzdHlsZVtpbmNsdWRlPSIke3R9Il1gKSl7Y29uc3Qgbj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzdHlsZSIpO24uc2V0QXR0cmlidXRlKCJpbmNsdWRlIix0KSxlLmNvbnRlbnQuYXBwZW5kQ2hpbGQobil9fX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IChjKSAyMDIxIFZhYWRpbiBMdGQuCiAgICAgKiBUaGlzIHByb2dyYW0gaXMgYXZhaWxhYmxlIHVuZGVyIEFwYWNoZSBMaWNlbnNlIFZlcnNpb24gMi4wLCBhdmFpbGFibGUgYXQgaHR0cHM6Ly92YWFkaW4uY29tL2xpY2Vuc2UvCiAgICAgKi87bGV0IG0xdD0hMTt3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsKCgpPT57bTF0PSEwfSkse2NhcHR1cmU6ITB9KSx3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIiwoKCk9PnttMXQ9ITF9KSx7Y2FwdHVyZTohMH0pO2NvbnN0IGcxdD10PT5jbGFzcyBleHRlbmRzKCh0PT5jbGFzcyBleHRlbmRzIHR7c3RhdGljIGdldCBwcm9wZXJ0aWVzKCl7cmV0dXJue3RhYmluZGV4Ont0eXBlOk51bWJlcix2YWx1ZTowLHJlZmxlY3RUb0F0dHJpYnV0ZTohMCxvYnNlcnZlcjoiX3RhYmluZGV4Q2hhbmdlZCJ9fX19KSh0KSl7c3RhdGljIGdldCBwcm9wZXJ0aWVzKCl7cmV0dXJue2F1dG9mb2N1czp7dHlwZTpCb29sZWFufSxfcHJldmlvdXNUYWJJbmRleDp7dHlwZTpOdW1iZXJ9LGRpc2FibGVkOnt0eXBlOkJvb2xlYW4sb2JzZXJ2ZXI6Il9kaXNhYmxlZENoYW5nZWQiLHJlZmxlY3RUb0F0dHJpYnV0ZTohMH0sX2lzU2hpZnRUYWJiaW5nOnt0eXBlOkJvb2xlYW59fX1yZWFkeSgpe3RoaXMuYWRkRXZlbnRMaXN0ZW5lcigiZm9jdXNpbiIsKHQ9Pnt0LmNvbXBvc2VkUGF0aCgpWzBdPT09dGhpcz90aGlzLmNvbnRhaW5zKHQucmVsYXRlZFRhcmdldCl8fHRoaXMuX2ZvY3VzKCk6LTE9PT10LmNvbXBvc2VkUGF0aCgpLmluZGV4T2YodGhpcy5mb2N1c0VsZW1lbnQpfHx0aGlzLmRpc2FibGVkfHx0aGlzLl9zZXRGb2N1c2VkKCEwKX0pKSx0aGlzLmFkZEV2ZW50TGlzdGVuZXIoImZvY3Vzb3V0IiwoKCk9PnRoaXMuX3NldEZvY3VzZWQoITEpKSksc3VwZXIucmVhZHkoKSx0aGlzLmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLCh0PT57IXQuZGVmYXVsdFByZXZlbnRlZCYmOT09PXQua2V5Q29kZSYmdC5zaGlmdEtleSYmKHRoaXMuX2lzU2hpZnRUYWJiaW5nPSEwLEhUTUxFbGVtZW50LnByb3RvdHlwZS5mb2N1cy5hcHBseSh0aGlzKSx0aGlzLl9zZXRGb2N1c2VkKCExKSxzZXRUaW1lb3V0KCgoKT0+dGhpcy5faXNTaGlmdFRhYmJpbmc9ITEpLDApKX0pKSx0aGlzLmF1dG9mb2N1cyYmIXRoaXMuZGlzYWJsZWQmJndpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCgpPT57dGhpcy5fZm9jdXMoKSx0aGlzLl9zZXRGb2N1c2VkKCEwKSx0aGlzLnNldEF0dHJpYnV0ZSgiZm9jdXMtcmluZyIsIiIpfSkpfWRpc2Nvbm5lY3RlZENhbGxiYWNrKCl7c3VwZXIuZGlzY29ubmVjdGVkQ2FsbGJhY2soKSx0aGlzLmhhc0F0dHJpYnV0ZSgiZm9jdXNlZCIpJiZ0aGlzLl9zZXRGb2N1c2VkKCExKX1fc2V0Rm9jdXNlZCh0KXt0P3RoaXMuc2V0QXR0cmlidXRlKCJmb2N1c2VkIiwiIik6dGhpcy5yZW1vdmVBdHRyaWJ1dGUoImZvY3VzZWQiKSx0JiZtMXQ/dGhpcy5zZXRBdHRyaWJ1dGUoImZvY3VzLXJpbmciLCIiKTp0aGlzLnJlbW92ZUF0dHJpYnV0ZSgiZm9jdXMtcmluZyIpfWdldCBmb2N1c0VsZW1lbnQoKXtyZXR1cm4gd2luZG93LmNvbnNvbGUud2FybihgUGxlYXNlIGltcGxlbWVudCB0aGUgJ2ZvY3VzRWxlbWVudCcgcHJvcGVydHkgaW4gPCR7dGhpcy5sb2NhbE5hbWV9PmApLHRoaXN9X2ZvY3VzKCl7dGhpcy5mb2N1c0VsZW1lbnQmJiF0aGlzLl9pc1NoaWZ0VGFiYmluZyYmKHRoaXMuZm9jdXNFbGVtZW50LmZvY3VzKCksdGhpcy5fc2V0Rm9jdXNlZCghMCkpfWZvY3VzKCl7dGhpcy5mb2N1c0VsZW1lbnQmJiF0aGlzLmRpc2FibGVkJiYodGhpcy5mb2N1c0VsZW1lbnQuZm9jdXMoKSx0aGlzLl9zZXRGb2N1c2VkKCEwKSl9Ymx1cigpe3RoaXMuZm9jdXNFbGVtZW50JiYodGhpcy5mb2N1c0VsZW1lbnQuYmx1cigpLHRoaXMuX3NldEZvY3VzZWQoITEpKX1fZGlzYWJsZWRDaGFuZ2VkKHQpe3RoaXMuZm9jdXNFbGVtZW50LmRpc2FibGVkPXQsdD8odGhpcy5ibHVyKCksdGhpcy5fcHJldmlvdXNUYWJJbmRleD10aGlzLnRhYmluZGV4LHRoaXMudGFiaW5kZXg9LTEsdGhpcy5zZXRBdHRyaWJ1dGUoImFyaWEtZGlzYWJsZWQiLCJ0cnVlIikpOih2b2lkIDAhPT10aGlzLl9wcmV2aW91c1RhYkluZGV4JiYodGhpcy50YWJpbmRleD10aGlzLl9wcmV2aW91c1RhYkluZGV4KSx0aGlzLnJlbW92ZUF0dHJpYnV0ZSgiYXJpYS1kaXNhYmxlZCIpKX1fdGFiaW5kZXhDaGFuZ2VkKHQpe3ZvaWQgMCE9PXQmJih0aGlzLmZvY3VzRWxlbWVudC50YWJJbmRleD10KSx0aGlzLmRpc2FibGVkJiZ0aGlzLnRhYmluZGV4JiYoLTEhPT10aGlzLnRhYmluZGV4JiYodGhpcy5fcHJldmlvdXNUYWJJbmRleD10aGlzLnRhYmluZGV4KSx0aGlzLnRhYmluZGV4PXQ9dm9pZCAwKX1jbGljaygpe3RoaXMuZGlzYWJsZWR8fHN1cGVyLmNsaWNrKCl9fSxfMXQ9L1wvXCpcKlxzK3ZhYWRpbi1kZXYtbW9kZTpzdGFydChbXHNcU10qKXZhYWRpbi1kZXYtbW9kZTplbmRccytcKlwqXC8vaSx5MXQ9d2luZG93LlZhYWRpbiYmd2luZG93LlZhYWRpbi5GbG93JiZ3aW5kb3cuVmFhZGluLkZsb3cuY2xpZW50cztmdW5jdGlvbiB2MXQodCxlKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdClyZXR1cm47Y29uc3Qgbj1fMXQuZXhlYyh0LnRvU3RyaW5nKCkpO2lmKG4pdHJ5e3Q9bmV3IEZ1bmN0aW9uKG5bMV0pfWNhdGNoKHQpe2NvbnNvbGUubG9nKCJ2YWFkaW4tZGV2ZWxvcG1lbnQtbW9kZS1kZXRlY3RvcjogdW5jb21tZW50QW5kUnVuKCkgZmFpbGVkIix0KX1yZXR1cm4gdChlKX13aW5kb3cuVmFhZGluPXdpbmRvdy5WYWFkaW58fHt9O2NvbnN0IGIxdD1mdW5jdGlvbih0LGUpe2lmKHdpbmRvdy5WYWFkaW4uZGV2ZWxvcG1lbnRNb2RlKXJldHVybiB2MXQodCxlKX07ZnVuY3Rpb24geDF0KCl7fXZvaWQgMD09PXdpbmRvdy5WYWFkaW4uZGV2ZWxvcG1lbnRNb2RlJiYod2luZG93LlZhYWRpbi5kZXZlbG9wbWVudE1vZGU9KGZ1bmN0aW9uIHcxdCgpe3RyeXtyZXR1cm4hIShmdW5jdGlvbiB0KCl7cmV0dXJuIGxvY2FsU3RvcmFnZS5nZXRJdGVtKCJ2YWFkaW4uZGV2ZWxvcG1lbnRtb2RlLmZvcmNlIil9KSgpfHwhIShmdW5jdGlvbiBlKCl7cmV0dXJuWyJsb2NhbGhvc3QiLCIxMjcuMC4wLjEiXS5pbmRleE9mKHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSk+PTB9KSgpJiYoeTF0PyEoZnVuY3Rpb24gbigpe3JldHVybiEhKHkxdCYmT2JqZWN0LmtleXMoeTF0KS5tYXAoKHQ9PnkxdFt0XSkpLmZpbHRlcigodD0+dC5wcm9kdWN0aW9uTW9kZSkpLmxlbmd0aD4wKX0pKCk6IShmdW5jdGlvbiBpKCl7cmV0dXJuIHYxdCgoZnVuY3Rpb24gdCgpe3JldHVybiEwfSkpfSkoKSl9Y2F0Y2godCl7cmV0dXJuITF9fSkoKSk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCAoYykgMjAyMSBWYWFkaW4gTHRkLgogICAgICogVGhpcyBwcm9ncmFtIGlzIGF2YWlsYWJsZSB1bmRlciBBcGFjaGUgTGljZW5zZSBWZXJzaW9uIDIuMCwgYXZhaWxhYmxlIGF0IGh0dHBzOi8vdmFhZGluLmNvbS9saWNlbnNlLwogICAgICovCmNsYXNzIFMxdHtzdGF0aWMgZGV0ZWN0U2Nyb2xsVHlwZSgpe2NvbnN0IHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7dC50ZXh0Q29udGVudD0iQUJDRCIsdC5kaXI9InJ0bCIsdC5zdHlsZS5mb250U2l6ZT0iMTRweCIsdC5zdHlsZS53aWR0aD0iNHB4Iix0LnN0eWxlLmhlaWdodD0iMXB4Iix0LnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSIsdC5zdHlsZS50b3A9Ii0xMDAwcHgiLHQuc3R5bGUub3ZlcmZsb3c9InNjcm9sbCIsZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0KTtsZXQgZT0icmV2ZXJzZSI7cmV0dXJuIHQuc2Nyb2xsTGVmdD4wP2U9ImRlZmF1bHQiOih0LnNjcm9sbExlZnQ9Mix0LnNjcm9sbExlZnQ8MiYmKGU9Im5lZ2F0aXZlIikpLGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQodCksZX1zdGF0aWMgZ2V0Tm9ybWFsaXplZFNjcm9sbExlZnQodCxlLG4pe2NvbnN0e3Njcm9sbExlZnQ6aX09bjtpZigicnRsIiE9PWV8fCF0KXJldHVybiBpO3N3aXRjaCh0KXtjYXNlIm5lZ2F0aXZlIjpyZXR1cm4gbi5zY3JvbGxXaWR0aC1uLmNsaWVudFdpZHRoK2k7Y2FzZSJyZXZlcnNlIjpyZXR1cm4gbi5zY3JvbGxXaWR0aC1uLmNsaWVudFdpZHRoLWl9cmV0dXJuIGl9c3RhdGljIHNldE5vcm1hbGl6ZWRTY3JvbGxMZWZ0KHQsZSxuLGkpe2lmKCJydGwiPT09ZSYmdClzd2l0Y2godCl7Y2FzZSJuZWdhdGl2ZSI6bi5zY3JvbGxMZWZ0PW4uY2xpZW50V2lkdGgtbi5zY3JvbGxXaWR0aCtpO2JyZWFrO2Nhc2UicmV2ZXJzZSI6bi5zY3JvbGxMZWZ0PW4uc2Nyb2xsV2lkdGgtbi5jbGllbnRXaWR0aC1pO2JyZWFrO2RlZmF1bHQ6bi5zY3JvbGxMZWZ0PWl9ZWxzZSBuLnNjcm9sbExlZnQ9aX19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCAoYykgMjAyMSBWYWFkaW4gTHRkLgogICAgICogVGhpcyBwcm9ncmFtIGlzIGF2YWlsYWJsZSB1bmRlciBBcGFjaGUgTGljZW5zZSBWZXJzaW9uIDIuMCwgYXZhaWxhYmxlIGF0IGh0dHBzOi8vdmFhZGluLmNvbS9saWNlbnNlLwogICAgICovY29uc3QgTTF0PVtdO2xldCBFMXQ7bmV3IE11dGF0aW9uT2JzZXJ2ZXIoKGZ1bmN0aW9uKCl7Y29uc3QgdD1DMXQoKTtNMXQuZm9yRWFjaCgoZT0+e1QxdChlLHQpfSkpfSkpLm9ic2VydmUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LHthdHRyaWJ1dGVzOiEwLGF0dHJpYnV0ZUZpbHRlcjpbImRpciJdfSk7Y29uc3QgVDF0PWZ1bmN0aW9uKHQsZSxuPXQuZ2V0QXR0cmlidXRlKCJkaXIiKSl7ZT90LnNldEF0dHJpYnV0ZSgiZGlyIixlKTpudWxsIT1uJiZ0LnJlbW92ZUF0dHJpYnV0ZSgiZGlyIil9LEMxdD1mdW5jdGlvbigpe3JldHVybiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuZ2V0QXR0cmlidXRlKCJkaXIiKX0sQTF0PXQ9PmNsYXNzIGV4dGVuZHMgdHtzdGF0aWMgZ2V0IHByb3BlcnRpZXMoKXtyZXR1cm57ZGlyOnt0eXBlOlN0cmluZyx2YWx1ZToiIixyZWZsZWN0VG9BdHRyaWJ1dGU6ITB9fX1zdGF0aWMgZmluYWxpemUoKXtzdXBlci5maW5hbGl6ZSgpLEUxdHx8KEUxdD1TMXQuZGV0ZWN0U2Nyb2xsVHlwZSgpKX1jb25uZWN0ZWRDYWxsYmFjaygpe3N1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCksdGhpcy5oYXNBdHRyaWJ1dGUoImRpciIpfHwodGhpcy5fX3N1YnNjcmliZSgpLFQxdCh0aGlzLEMxdCgpLG51bGwpKX1hdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2sodCxlLG4pe2lmKHN1cGVyLmF0dHJpYnV0ZUNoYW5nZWRDYWxsYmFjayh0LGUsbiksImRpciIhPT10KXJldHVybjtjb25zdCBpPUMxdCgpLHI9bj09PWkmJi0xPT09TTF0LmluZGV4T2YodGhpcyksbz0hbiYmZSYmLTE9PT1NMXQuaW5kZXhPZih0aGlzKSxhPW4hPT1pJiZlPT09aTtyfHxvPyh0aGlzLl9fc3Vic2NyaWJlKCksVDF0KHRoaXMsaSxuKSk6YSYmdGhpcy5fX3N1YnNjcmliZSghMSl9ZGlzY29ubmVjdGVkQ2FsbGJhY2soKXtzdXBlci5kaXNjb25uZWN0ZWRDYWxsYmFjaygpLHRoaXMuX19zdWJzY3JpYmUoITEpLHRoaXMucmVtb3ZlQXR0cmlidXRlKCJkaXIiKX1fdmFsdWVUb05vZGVBdHRyaWJ1dGUodCxlLG4peygiZGlyIiE9PW58fCIiIT09ZXx8dC5oYXNBdHRyaWJ1dGUoImRpciIpKSYmc3VwZXIuX3ZhbHVlVG9Ob2RlQXR0cmlidXRlKHQsZSxuKX1fYXR0cmlidXRlVG9Qcm9wZXJ0eSh0LGUsbil7ImRpciIhPT10fHxlP3N1cGVyLl9hdHRyaWJ1dGVUb1Byb3BlcnR5KHQsZSxuKTp0aGlzLmRpcj0iIn1fX3N1YnNjcmliZSh0PSEwKXt0Py0xPT09TTF0LmluZGV4T2YodGhpcykmJk0xdC5wdXNoKHRoaXMpOk0xdC5pbmRleE9mKHRoaXMpPi0xJiZNMXQuc3BsaWNlKE0xdC5pbmRleE9mKHRoaXMpLDEpfV9fZ2V0Tm9ybWFsaXplZFNjcm9sbExlZnQodCl7cmV0dXJuIFMxdC5nZXROb3JtYWxpemVkU2Nyb2xsTGVmdChFMXQsdGhpcy5nZXRBdHRyaWJ1dGUoImRpciIpfHwibHRyIix0KX1fX3NldE5vcm1hbGl6ZWRTY3JvbGxMZWZ0KHQsZSl7cmV0dXJuIFMxdC5zZXROb3JtYWxpemVkU2Nyb2xsTGVmdChFMXQsdGhpcy5nZXRBdHRyaWJ1dGUoImRpciIpfHwibHRyIix0LGUpfX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IChjKSAyMDIxIFZhYWRpbiBMdGQuCiAgICAgKiBUaGlzIHByb2dyYW0gaXMgYXZhaWxhYmxlIHVuZGVyIEFwYWNoZSBMaWNlbnNlIFZlcnNpb24gMi4wLCBhdmFpbGFibGUgYXQgaHR0cHM6Ly92YWFkaW4uY29tL2xpY2Vuc2UvCiAgICAgKi87bGV0IGsxdDt3aW5kb3cuVmFhZGluPXdpbmRvdy5WYWFkaW58fHt9LHdpbmRvdy5WYWFkaW4ucmVnaXN0cmF0aW9ucz13aW5kb3cuVmFhZGluLnJlZ2lzdHJhdGlvbnN8fFtdLHdpbmRvdy5WYWFkaW4uZGV2ZWxvcG1lbnRNb2RlQ2FsbGJhY2s9d2luZG93LlZhYWRpbi5kZXZlbG9wbWVudE1vZGVDYWxsYmFja3x8e30sd2luZG93LlZhYWRpbi5kZXZlbG9wbWVudE1vZGVDYWxsYmFja1sidmFhZGluLXVzYWdlLXN0YXRpc3RpY3MiXT1mdW5jdGlvbigpe2IxdCh4MXQpfTtjb25zdCBMMXQ9bmV3IFNldCxQMXQ9dD0+Y2xhc3MgZXh0ZW5kcyhBMXQodCkpe3N0YXRpYyBmaW5hbGl6ZSgpe3N1cGVyLmZpbmFsaXplKCk7Y29uc3R7aXM6dH09dGhpczt0JiYhTDF0Lmhhcyh0KSYmKHdpbmRvdy5WYWFkaW4ucmVnaXN0cmF0aW9ucy5wdXNoKHRoaXMpLEwxdC5hZGQodCksd2luZG93LlZhYWRpbi5kZXZlbG9wbWVudE1vZGVDYWxsYmFjayYmKGsxdD1Obi5kZWJvdW5jZShrMXQseXQsKCgpPT57d2luZG93LlZhYWRpbi5kZXZlbG9wbWVudE1vZGVDYWxsYmFja1sidmFhZGluLXVzYWdlLXN0YXRpc3RpY3MiXSgpfSkpLFJuKGsxdCkpKX1jb25zdHJ1Y3Rvcigpe3N1cGVyKCksbnVsbD09PWRvY3VtZW50LmRvY3R5cGUmJmNvbnNvbGUud2FybignVmFhZGluIGNvbXBvbmVudHMgcmVxdWlyZSB0aGUgInN0YW5kYXJkcyBtb2RlIiBkZWNsYXJhdGlvbi4gUGxlYXNlIGFkZCA8IURPQ1RZUEUgaHRtbD4gdG8gdGhlIEhUTUwgZG9jdW1lbnQuJyl9fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgKGMpIDIwMjEgVmFhZGluIEx0ZC4KICAgICAqIFRoaXMgcHJvZ3JhbSBpcyBhdmFpbGFibGUgdW5kZXIgQXBhY2hlIExpY2Vuc2UgVmVyc2lvbiAyLjAsIGF2YWlsYWJsZSBhdCBodHRwczovL3ZhYWRpbi5jb20vbGljZW5zZS8KICAgICAqLztjbGFzcyBOMXQgZXh0ZW5kcyhQMXQoZzF0KGYxdChiaSh3ZSkpKSkpe3N0YXRpYyBnZXQgdGVtcGxhdGUoKXtyZXR1cm4geGVgCiAgICAgIDxzdHlsZT4KICAgICAgICA6aG9zdCB7CiAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgICAgfQoKICAgICAgICA6aG9zdChbaGlkZGVuXSkgewogICAgICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgbGFiZWwgewogICAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7CiAgICAgICAgICBhbGlnbi1pdGVtczogYmFzZWxpbmU7CiAgICAgICAgICBvdXRsaW5lOiBub25lOwogICAgICAgIH0KCiAgICAgICAgW3BhcnQ9J2NoZWNrYm94J10gewogICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICAgICAgZmxleDogbm9uZTsKICAgICAgICB9CgogICAgICAgIGlucHV0W3R5cGU9J2NoZWNrYm94J10gewogICAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgICAgdG9wOiAwOwogICAgICAgICAgbGVmdDogMDsKICAgICAgICAgIHJpZ2h0OiAwOwogICAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgICAgY3Vyc29yOiBpbmhlcml0OwogICAgICAgICAgbWFyZ2luOiAwOwogICAgICAgIH0KCiAgICAgICAgOmhvc3QoW2Rpc2FibGVkXSkgewogICAgICAgICAgLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDsKICAgICAgICB9CiAgICAgIDwvc3R5bGU+CgogICAgICA8bGFiZWw+CiAgICAgICAgPHNwYW4gcGFydD0iY2hlY2tib3giPgogICAgICAgICAgPGlucHV0CiAgICAgICAgICAgIHR5cGU9ImNoZWNrYm94IgogICAgICAgICAgICBjaGVja2VkPSJ7e2NoZWNrZWQ6OmNoYW5nZX19IgogICAgICAgICAgICBkaXNhYmxlZCQ9IltbZGlzYWJsZWRdXSIKICAgICAgICAgICAgaW5kZXRlcm1pbmF0ZT0ie3tpbmRldGVybWluYXRlOjpjaGFuZ2V9fSIKICAgICAgICAgICAgcm9sZT0icHJlc2VudGF0aW9uIgogICAgICAgICAgICB0YWJpbmRleD0iLTEiCiAgICAgICAgICAvPgogICAgICAgIDwvc3Bhbj4KCiAgICAgICAgPHNwYW4gcGFydD0ibGFiZWwiPgogICAgICAgICAgPHNsb3Q+PC9zbG90PgogICAgICAgIDwvc3Bhbj4KICAgICAgPC9sYWJlbD4KICAgIGB9c3RhdGljIGdldCBpcygpe3JldHVybiJ2YWFkaW4tY2hlY2tib3gifXN0YXRpYyBnZXQgdmVyc2lvbigpe3JldHVybiIyMC4wLjIifXN0YXRpYyBnZXQgcHJvcGVydGllcygpe3JldHVybntjaGVja2VkOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITEsbm90aWZ5OiEwLG9ic2VydmVyOiJfY2hlY2tlZENoYW5nZWQiLHJlZmxlY3RUb0F0dHJpYnV0ZTohMH0saW5kZXRlcm1pbmF0ZTp7dHlwZTpCb29sZWFuLG5vdGlmeTohMCxvYnNlcnZlcjoiX2luZGV0ZXJtaW5hdGVDaGFuZ2VkIixyZWZsZWN0VG9BdHRyaWJ1dGU6ITAsdmFsdWU6ITF9LHZhbHVlOnt0eXBlOlN0cmluZyx2YWx1ZToib24ifSxfbmF0aXZlQ2hlY2tib3g6e3R5cGU6T2JqZWN0fX19Y29uc3RydWN0b3IoKXtzdXBlcigpfWdldCBuYW1lKCl7cmV0dXJuIHRoaXMuY2hlY2tlZD90aGlzLl9zdG9yZWROYW1lOiIifXNldCBuYW1lKHQpe3RoaXMuX3N0b3JlZE5hbWU9dH1yZWFkeSgpe3N1cGVyLnJlYWR5KCksdGhpcy5zZXRBdHRyaWJ1dGUoInJvbGUiLCJjaGVja2JveCIpLHRoaXMuX25hdGl2ZUNoZWNrYm94PXRoaXMuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKCdpbnB1dFt0eXBlPSJjaGVja2JveCJdJyksdGhpcy5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsdGhpcy5faGFuZGxlQ2xpY2suYmluZCh0aGlzKSksdGhpcy5fYWRkQWN0aXZlTGlzdGVuZXJzKCk7Y29uc3QgdD10aGlzLmdldEF0dHJpYnV0ZSgibmFtZSIpO3QmJih0aGlzLm5hbWU9dCksdGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoJ1twYXJ0fj0ibGFiZWwiXScpLnF1ZXJ5U2VsZWN0b3IoInNsb3QiKS5hZGRFdmVudExpc3RlbmVyKCJzbG90Y2hhbmdlIix0aGlzLl91cGRhdGVMYWJlbEF0dHJpYnV0ZS5iaW5kKHRoaXMpKSx0aGlzLl91cGRhdGVMYWJlbEF0dHJpYnV0ZSgpfV91cGRhdGVMYWJlbEF0dHJpYnV0ZSgpe2NvbnN0IHQ9dGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoJ1twYXJ0fj0ibGFiZWwiXScpLGU9dC5maXJzdEVsZW1lbnRDaGlsZC5hc3NpZ25lZE5vZGVzKCk7dGhpcy5faXNBc3NpZ25lZE5vZGVzRW1wdHkoZSk/dC5zZXRBdHRyaWJ1dGUoImVtcHR5IiwiIik6dC5yZW1vdmVBdHRyaWJ1dGUoImVtcHR5Iil9X2lzQXNzaWduZWROb2Rlc0VtcHR5KHQpe3JldHVybiAwPT09dC5sZW5ndGh8fDE9PXQubGVuZ3RoJiZ0WzBdLm5vZGVUeXBlPT1Ob2RlLlRFWFRfTk9ERSYmIiI9PT10WzBdLnRleHRDb250ZW50LnRyaW0oKX1fY2hlY2tlZENoYW5nZWQodCl7dGhpcy5zZXRBdHRyaWJ1dGUoImFyaWEtY2hlY2tlZCIsdGhpcy5pbmRldGVybWluYXRlPyJtaXhlZCI6Qm9vbGVhbih0KSl9X2luZGV0ZXJtaW5hdGVDaGFuZ2VkKHQpe3RoaXMuc2V0QXR0cmlidXRlKCJhcmlhLWNoZWNrZWQiLHQ/Im1peGVkIjp0aGlzLmNoZWNrZWQpfV9hZGRBY3RpdmVMaXN0ZW5lcnMoKXt0aGlzLl9hZGRFdmVudExpc3RlbmVyVG9Ob2RlKHRoaXMsImRvd24iLCh0PT57dGhpcy5fX2ludGVyYWN0aW9uc0FsbG93ZWQodCkmJnRoaXMuc2V0QXR0cmlidXRlKCJhY3RpdmUiLCIiKX0pKSx0aGlzLl9hZGRFdmVudExpc3RlbmVyVG9Ob2RlKHRoaXMsInVwIiwoKCk9PnRoaXMucmVtb3ZlQXR0cmlidXRlKCJhY3RpdmUiKSkpLHRoaXMuYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsKHQ9Pnt0aGlzLl9faW50ZXJhY3Rpb25zQWxsb3dlZCh0KSYmMzI9PT10LmtleUNvZGUmJih0LnByZXZlbnREZWZhdWx0KCksdGhpcy5zZXRBdHRyaWJ1dGUoImFjdGl2ZSIsIiIpKX0pKSx0aGlzLmFkZEV2ZW50TGlzdGVuZXIoImtleXVwIiwodD0+e3RoaXMuX19pbnRlcmFjdGlvbnNBbGxvd2VkKHQpJiYzMj09PXQua2V5Q29kZSYmKHQucHJldmVudERlZmF1bHQoKSx0aGlzLl90b2dnbGVDaGVja2VkKCksdGhpcy5yZW1vdmVBdHRyaWJ1dGUoImFjdGl2ZSIpLHRoaXMuaW5kZXRlcm1pbmF0ZSYmKHRoaXMuaW5kZXRlcm1pbmF0ZT0hMSkpfSkpfWdldCBmb2N1c0VsZW1lbnQoKXtyZXR1cm4gdGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoImlucHV0Iil9X19pbnRlcmFjdGlvbnNBbGxvd2VkKHQpe3JldHVybiF0aGlzLmRpc2FibGVkJiYiYSIhPT10LnRhcmdldC5sb2NhbE5hbWV9X2hhbmRsZUNsaWNrKHQpe3RoaXMuX19pbnRlcmFjdGlvbnNBbGxvd2VkKHQpJiYodGhpcy5pbmRldGVybWluYXRlPyh0aGlzLmluZGV0ZXJtaW5hdGU9ITEsdC5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuX3RvZ2dsZUNoZWNrZWQoKSk6dC5jb21wb3NlZFBhdGgoKVswXSE9PXRoaXMuX25hdGl2ZUNoZWNrYm94JiYodC5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuX3RvZ2dsZUNoZWNrZWQoKSkpfV90b2dnbGVDaGVja2VkKCl7dGhpcy5jaGVja2VkPSF0aGlzLmNoZWNrZWQsdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgiY2hhbmdlIix7Y29tcG9zZWQ6ITEsYnViYmxlczohMH0pKX19Y3VzdG9tRWxlbWVudHMuZGVmaW5lKE4xdC5pcyxOMXQpLHQxdCgidmFhZGluLWdyaWQiLCRRdGAKICAgIDpob3N0IHsKICAgICAgZm9udC1mYW1pbHk6IHZhcigtLWx1bW8tZm9udC1mYW1pbHkpOwogICAgICBmb250LXNpemU6IHZhcigtLWx1bW8tZm9udC1zaXplLW0pOwogICAgICBsaW5lLWhlaWdodDogdmFyKC0tbHVtby1saW5lLWhlaWdodC1zKTsKICAgICAgY29sb3I6IHZhcigtLWx1bW8tYm9keS10ZXh0LWNvbG9yKTsKICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbHVtby1iYXNlLWNvbG9yKTsKICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOwogICAgICAtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50OwogICAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDsKICAgICAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTsKCiAgICAgIC8qIEZvciBpbnRlcm5hbCB1c2Ugb25seSAqLwogICAgICAtLV9sdW1vLWdyaWQtYm9yZGVyLWNvbG9yOiB2YXIoLS1sdW1vLWNvbnRyYXN0LTIwcGN0KTsKICAgICAgLS1fbHVtby1ncmlkLXNlY29uZGFyeS1ib3JkZXItY29sb3I6IHZhcigtLWx1bW8tY29udHJhc3QtMTBwY3QpOwogICAgICAtLV9sdW1vLWdyaWQtYm9yZGVyLXdpZHRoOiAxcHg7CiAgICAgIC0tX2x1bW8tZ3JpZC1zZWxlY3RlZC1yb3ctY29sb3I6IHZhcigtLWx1bW8tcHJpbWFyeS1jb2xvci0xMHBjdCk7CiAgICB9CgogICAgLyogTm8gKG91dGVyKSBib3JkZXIgKi8KCiAgICA6aG9zdCg6bm90KFt0aGVtZX49J25vLWJvcmRlciddKSkgewogICAgICBib3JkZXI6IHZhcigtLV9sdW1vLWdyaWQtYm9yZGVyLXdpZHRoKSBzb2xpZCB2YXIoLS1fbHVtby1ncmlkLWJvcmRlci1jb2xvcik7CiAgICB9CgogICAgLyogQ2VsbCBzdHlsZXMgKi8KCiAgICBbcGFydH49J2NlbGwnXSB7CiAgICAgIG1pbi1oZWlnaHQ6IHZhcigtLWx1bW8tc2l6ZS1tKTsKICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbHVtby1iYXNlLWNvbG9yKTsKICAgIH0KCiAgICBbcGFydH49J2NlbGwnXSA6OnNsb3R0ZWQodmFhZGluLWdyaWQtY2VsbC1jb250ZW50KSB7CiAgICAgIGN1cnNvcjogZGVmYXVsdDsKICAgICAgcGFkZGluZzogdmFyKC0tbHVtby1zcGFjZS14cykgdmFyKC0tbHVtby1zcGFjZS1tKTsKICAgIH0KCiAgICAvKiBBcHBseSByb3cgYm9yZGVycyBieSBkZWZhdWx0IGFuZCBpbnRyb2R1Y2UgdGhlICJuby1yb3ctYm9yZGVycyIgdmFyaWFudCAqLwogICAgOmhvc3QoOm5vdChbdGhlbWV+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+PSdkZXRhaWxzLWNlbGwnXSkgewogICAgICBib3JkZXItbGVmdC1jb2xvcjogdmFyKC0tX2x1bW8tZ3JpZC1ib3JkZXItY29sb3IpOwogICAgfQogIGAse21vZHVsZUlkOiJsdW1vLWdyaWQifSksdDF0KCJ2YWFkaW4tY2hlY2tib3giLCRRdGAKICAgIDpob3N0KC52YWFkaW4tZ3JpZC1zZWxlY3QtYWxsLWNoZWNrYm94KSB7CiAgICAgIGZvbnQtc2l6ZTogdmFyKC0tbHVtby1mb250LXNpemUtbSk7CiAgICB9CiAgYCx7bW9kdWxlSWQ6InZhYWRpbi1ncmlkLXNlbGVjdC1hbGwtY2hlY2tib3gtbHVtbyJ9KTsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE2IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQKICAgIENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvCiAgICBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50IGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KY29uc3QgSTF0PW5hdmlnYXRvci51c2VyQWdlbnQubWF0Y2goL2lQKD86aG9uZXxhZDsoPzogVTspPyBDUFUpIE9TIChcZCspLyksUjF0PUkxdCYmSTF0WzFdPj04LE8xdD1Vcih7YmVoYXZpb3JzOltDbywkb10sX3JhdGlvOi41LF9zY3JvbGxlclBhZGRpbmdUb3A6MCxfc2Nyb2xsUG9zaXRpb246MCxfcGh5c2ljYWxTaXplOjAsX3BoeXNpY2FsQXZlcmFnZTowLF9waHlzaWNhbEF2ZXJhZ2VDb3VudDowLF9waHlzaWNhbFRvcDowLF92aXJ0dWFsQ291bnQ6MCxfZXN0U2Nyb2xsSGVpZ2h0OjAsX3Njcm9sbEhlaWdodDowLF92aWV3cG9ydEhlaWdodDowLF92aWV3cG9ydFdpZHRoOjAsX3BoeXNpY2FsSXRlbXM6bnVsbCxfcGh5c2ljYWxTaXplczpudWxsLF9maXJzdFZpc2libGVJbmRleFZhbDpudWxsLF9sYXN0VmlzaWJsZUluZGV4VmFsOm51bGwsX21heFBhZ2VzOjIsX2ZvY3VzZWRWaXJ0dWFsSW5kZXg6LTEsX3RlbXBsYXRlQ29zdDowLGdldCBfcGh5c2ljYWxCb3R0b20oKXtyZXR1cm4gdGhpcy5fcGh5c2ljYWxUb3ArdGhpcy5fcGh5c2ljYWxTaXplfSxnZXQgX3Njcm9sbEJvdHRvbSgpe3JldHVybiB0aGlzLl9zY3JvbGxQb3NpdGlvbit0aGlzLl92aWV3cG9ydEhlaWdodH0sZ2V0IF92aXJ0dWFsRW5kKCl7cmV0dXJuIHRoaXMuX3ZpcnR1YWxTdGFydCt0aGlzLl9waHlzaWNhbENvdW50LTF9LGdldCBfaGlkZGVuQ29udGVudFNpemUoKXtyZXR1cm4gdGhpcy5fcGh5c2ljYWxTaXplLXRoaXMuX3ZpZXdwb3J0SGVpZ2h0fSxnZXQgX21heFNjcm9sbFRvcCgpe3JldHVybiB0aGlzLl9lc3RTY3JvbGxIZWlnaHQtdGhpcy5fdmlld3BvcnRIZWlnaHQrdGhpcy5fc2Nyb2xsT2Zmc2V0fSxnZXQgX21heFZpcnR1YWxTdGFydCgpe3JldHVybiBNYXRoLm1heCgwLHRoaXMuX3ZpcnR1YWxDb3VudC10aGlzLl9waHlzaWNhbENvdW50KX0sc2V0IF92aXJ0dWFsU3RhcnQodCl7dD10aGlzLl9jbGFtcCh0LDAsdGhpcy5fbWF4VmlydHVhbFN0YXJ0KSx0aGlzLl92aXJ0dWFsU3RhcnRWYWw9dH0sZ2V0IF92aXJ0dWFsU3RhcnQoKXtyZXR1cm4gdGhpcy5fdmlydHVhbFN0YXJ0VmFsfHwwfSxzZXQgX3BoeXNpY2FsU3RhcnQodCl7KHQlPXRoaXMuX3BoeXNpY2FsQ291bnQpPDAmJih0PXRoaXMuX3BoeXNpY2FsQ291bnQrdCksdGhpcy5fcGh5c2ljYWxTdGFydFZhbD10fSxnZXQgX3BoeXNpY2FsU3RhcnQoKXtyZXR1cm4gdGhpcy5fcGh5c2ljYWxTdGFydFZhbHx8MH0sZ2V0IF9waHlzaWNhbEVuZCgpe3JldHVybih0aGlzLl9waHlzaWNhbFN0YXJ0K3RoaXMuX3BoeXNpY2FsQ291bnQtMSkldGhpcy5fcGh5c2ljYWxDb3VudH0sc2V0IF9waHlzaWNhbENvdW50KHQpe3RoaXMuX3BoeXNpY2FsQ291bnRWYWw9dH0sZ2V0IF9waHlzaWNhbENvdW50KCl7cmV0dXJuIHRoaXMuX3BoeXNpY2FsQ291bnRWYWx8fDB9LGdldCBfb3B0UGh5c2ljYWxTaXplKCl7cmV0dXJuIDA9PT10aGlzLl92aWV3cG9ydEhlaWdodD8xLzA6dGhpcy5fdmlld3BvcnRIZWlnaHQqdGhpcy5fbWF4UGFnZXN9LGdldCBfaXNWaXNpYmxlKCl7cmV0dXJuIEJvb2xlYW4odGhpcy5vZmZzZXRXaWR0aHx8dGhpcy5vZmZzZXRIZWlnaHQpfSxnZXQgZmlyc3RWaXNpYmxlSW5kZXgoKXtsZXQgdD10aGlzLl9maXJzdFZpc2libGVJbmRleFZhbDtpZihudWxsPT10KXtsZXQgZT10aGlzLl9waHlzaWNhbFRvcCt0aGlzLl9zY3JvbGxPZmZzZXQ7dD10aGlzLl9pdGVyYXRlSXRlbXMoKGZ1bmN0aW9uKHQsbil7aWYoZSs9dGhpcy5fcGh5c2ljYWxTaXplc1t0XSxlPnRoaXMuX3Njcm9sbFBvc2l0aW9uKXJldHVybiBufSkpfHwwLHRoaXMuX2ZpcnN0VmlzaWJsZUluZGV4VmFsPXR9cmV0dXJuIHR9LGdldCBsYXN0VmlzaWJsZUluZGV4KCl7bGV0IHQ9dGhpcy5fbGFzdFZpc2libGVJbmRleFZhbDtpZihudWxsPT10KXtsZXQgZT10aGlzLl9waHlzaWNhbFRvcCt0aGlzLl9zY3JvbGxPZmZzZXQ7dGhpcy5faXRlcmF0ZUl0ZW1zKChmdW5jdGlvbihuLGkpe2U8dGhpcy5fc2Nyb2xsQm90dG9tJiYodD1pKSxlKz10aGlzLl9waHlzaWNhbFNpemVzW25dfSkpLHRoaXMuX2xhc3RWaXNpYmxlSW5kZXhWYWw9dH1yZXR1cm4gdH0sZ2V0IF9zY3JvbGxPZmZzZXQoKXtyZXR1cm4gdGhpcy5fc2Nyb2xsZXJQYWRkaW5nVG9wfSxhdHRhY2hlZDpmdW5jdGlvbigpe3RoaXMuX2RlYm91bmNlKCJfcmVuZGVyIix0aGlzLl9yZW5kZXIsX3QpLHRoaXMubGlzdGVuKHRoaXMsImlyb24tcmVzaXplIiwiX3Jlc2l6ZUhhbmRsZXIiKX0sZGV0YWNoZWQ6ZnVuY3Rpb24oKXt0aGlzLnVubGlzdGVuKHRoaXMsImlyb24tcmVzaXplIiwiX3Jlc2l6ZUhhbmRsZXIiKX0sdXBkYXRlVmlld3BvcnRCb3VuZGFyaWVzOmZ1bmN0aW9uKCl7Y29uc3QgdD13aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzKTt0aGlzLl9zY3JvbGxlclBhZGRpbmdUb3A9dGhpcy5zY3JvbGxUYXJnZXQ9PT10aGlzPzA6cGFyc2VJbnQodFsicGFkZGluZy10b3AiXSwxMCksdGhpcy5faXNSVEw9Qm9vbGVhbigicnRsIj09PXQuZGlyZWN0aW9uKSx0aGlzLl92aWV3cG9ydFdpZHRoPXRoaXMuJC5pdGVtcy5vZmZzZXRXaWR0aCx0aGlzLl92aWV3cG9ydEhlaWdodD10aGlzLl9zY3JvbGxUYXJnZXRIZWlnaHR9LF9zY3JvbGxIYW5kbGVyOmZ1bmN0aW9uKCl7Y29uc3QgdD1NYXRoLm1heCgwLE1hdGgubWluKHRoaXMuX21heFNjcm9sbFRvcCx0aGlzLl9zY3JvbGxUb3ApKTtsZXQgZT10LXRoaXMuX3Njcm9sbFBvc2l0aW9uO2NvbnN0IG49ZT49MDtpZih0aGlzLl9zY3JvbGxQb3NpdGlvbj10LHRoaXMuX2ZpcnN0VmlzaWJsZUluZGV4VmFsPW51bGwsdGhpcy5fbGFzdFZpc2libGVJbmRleFZhbD1udWxsLE1hdGguYWJzKGUpPnRoaXMuX3BoeXNpY2FsU2l6ZSYmdGhpcy5fcGh5c2ljYWxTaXplPjApe2UtPXRoaXMuX3Njcm9sbE9mZnNldDtjb25zdCB0PU1hdGgucm91bmQoZS90aGlzLl9waHlzaWNhbEF2ZXJhZ2UpO3RoaXMuX3ZpcnR1YWxTdGFydD10aGlzLl92aXJ0dWFsU3RhcnQrdCx0aGlzLl9waHlzaWNhbFN0YXJ0PXRoaXMuX3BoeXNpY2FsU3RhcnQrdCx0aGlzLl9waHlzaWNhbFRvcD1NYXRoLmZsb29yKHRoaXMuX3ZpcnR1YWxTdGFydCkqdGhpcy5fcGh5c2ljYWxBdmVyYWdlLHRoaXMuX3VwZGF0ZSgpfWVsc2UgaWYodGhpcy5fcGh5c2ljYWxDb3VudD4wKXtjb25zdHtwaHlzaWNhbFRvcDp0LGluZGV4ZXM6ZX09dGhpcy5fZ2V0UmV1c2FibGVzKG4pO24/KHRoaXMuX3BoeXNpY2FsVG9wPXQsdGhpcy5fdmlydHVhbFN0YXJ0PXRoaXMuX3ZpcnR1YWxTdGFydCtlLmxlbmd0aCx0aGlzLl9waHlzaWNhbFN0YXJ0PXRoaXMuX3BoeXNpY2FsU3RhcnQrZS5sZW5ndGgpOih0aGlzLl92aXJ0dWFsU3RhcnQ9dGhpcy5fdmlydHVhbFN0YXJ0LWUubGVuZ3RoLHRoaXMuX3BoeXNpY2FsU3RhcnQ9dGhpcy5fcGh5c2ljYWxTdGFydC1lLmxlbmd0aCksdGhpcy5fdXBkYXRlKGUsbj9udWxsOmUpLHRoaXMuX2RlYm91bmNlKCJfaW5jcmVhc2VQb29sSWZOZWVkZWQiLHRoaXMuX2luY3JlYXNlUG9vbElmTmVlZGVkLmJpbmQodGhpcywwKSx2dCl9fSxfZ2V0UmV1c2FibGVzOmZ1bmN0aW9uKHQpe2xldCBlLG4saTtjb25zdCByPVtdLG89dGhpcy5faGlkZGVuQ29udGVudFNpemUqdGhpcy5fcmF0aW8sYT10aGlzLl92aXJ0dWFsU3RhcnQscz10aGlzLl92aXJ0dWFsRW5kLGw9dGhpcy5fcGh5c2ljYWxDb3VudDtsZXQgYz10aGlzLl9waHlzaWNhbFRvcCt0aGlzLl9zY3JvbGxPZmZzZXQ7Y29uc3QgdT10aGlzLl9zY3JvbGxUb3AsaD10aGlzLl9zY3JvbGxCb3R0b207Zm9yKHQ/KGU9dGhpcy5fcGh5c2ljYWxTdGFydCxuPXUtYyk6KGU9dGhpcy5fcGh5c2ljYWxFbmQsbj10aGlzLl9waHlzaWNhbEJvdHRvbSt0aGlzLl9zY3JvbGxPZmZzZXQtaCk7aT10aGlzLl9waHlzaWNhbFNpemVzW2VdLG4tPWksIShyLmxlbmd0aD49bHx8bjw9byk7KWlmKHQpe2lmKHMrci5sZW5ndGgrMT49dGhpcy5fdmlydHVhbENvdW50KWJyZWFrO2lmKGMraT49dS10aGlzLl9zY3JvbGxPZmZzZXQpYnJlYWs7ci5wdXNoKGUpLGMrPWksZT0oZSsxKSVsfWVsc2V7aWYoYS1yLmxlbmd0aDw9MClicmVhaztpZihjK3RoaXMuX3BoeXNpY2FsU2l6ZS1pPD1oKWJyZWFrO3IucHVzaChlKSxjLT1pLGU9MD09PWU/bC0xOmUtMX1yZXR1cm57aW5kZXhlczpyLHBoeXNpY2FsVG9wOmMtdGhpcy5fc2Nyb2xsT2Zmc2V0fX0sX3VwZGF0ZTpmdW5jdGlvbih0LGUpe2lmKCEodCYmMD09PXQubGVuZ3RofHwwPT09dGhpcy5fcGh5c2ljYWxDb3VudCkpe2lmKHRoaXMuX2Fzc2lnbk1vZGVscyh0KSx0aGlzLl91cGRhdGVNZXRyaWNzKHQpLGUpZm9yKDtlLmxlbmd0aDspe2NvbnN0IHQ9ZS5wb3AoKTt0aGlzLl9waHlzaWNhbFRvcC09dGhpcy5fcGh5c2ljYWxTaXplc1t0XX10aGlzLl9wb3NpdGlvbkl0ZW1zKCksdGhpcy5fdXBkYXRlU2Nyb2xsZXJTaXplKCl9fSxfaXNDbGllbnRGdWxsOmZ1bmN0aW9uKCl7cmV0dXJuIDAhPXRoaXMuX3Njcm9sbEJvdHRvbSYmdGhpcy5fcGh5c2ljYWxCb3R0b20tMT49dGhpcy5fc2Nyb2xsQm90dG9tJiZ0aGlzLl9waHlzaWNhbFRvcDw9dGhpcy5fc2Nyb2xsUG9zaXRpb259LF9pbmNyZWFzZVBvb2xJZk5lZWRlZDpmdW5jdGlvbih0KXtjb25zdCBlPXRoaXMuX2NsYW1wKHRoaXMuX3BoeXNpY2FsQ291bnQrdCwzLHRoaXMuX3ZpcnR1YWxDb3VudC10aGlzLl92aXJ0dWFsU3RhcnQpLXRoaXMuX3BoeXNpY2FsQ291bnQ7bGV0IG49TWF0aC5yb3VuZCguNSp0aGlzLl9waHlzaWNhbENvdW50KTtpZighKGU8MCkpe2lmKGU+MCl7Y29uc3QgdD13aW5kb3cucGVyZm9ybWFuY2Uubm93KCk7W10ucHVzaC5hcHBseSh0aGlzLl9waHlzaWNhbEl0ZW1zLHRoaXMuX2NyZWF0ZVBvb2woZSkpO2ZvcihsZXQgdD0wO3Q8ZTt0KyspdGhpcy5fcGh5c2ljYWxTaXplcy5wdXNoKDApO3RoaXMuX3BoeXNpY2FsQ291bnQ9dGhpcy5fcGh5c2ljYWxDb3VudCtlLHRoaXMuX3BoeXNpY2FsU3RhcnQ+dGhpcy5fcGh5c2ljYWxFbmQmJnRoaXMuX2lzSW5kZXhSZW5kZXJlZCh0aGlzLl9mb2N1c2VkVmlydHVhbEluZGV4KSYmdGhpcy5fZ2V0UGh5c2ljYWxJbmRleCh0aGlzLl9mb2N1c2VkVmlydHVhbEluZGV4KTx0aGlzLl9waHlzaWNhbEVuZCYmKHRoaXMuX3BoeXNpY2FsU3RhcnQ9dGhpcy5fcGh5c2ljYWxTdGFydCtlKSx0aGlzLl91cGRhdGUoKSx0aGlzLl90ZW1wbGF0ZUNvc3Q9KHdpbmRvdy5wZXJmb3JtYW5jZS5ub3coKS10KS9lLG49TWF0aC5yb3VuZCguNSp0aGlzLl9waHlzaWNhbENvdW50KX10aGlzLl92aXJ0dWFsRW5kPj10aGlzLl92aXJ0dWFsQ291bnQtMXx8MD09PW58fCh0aGlzLl9pc0NsaWVudEZ1bGwoKT90aGlzLl9waHlzaWNhbFNpemU8dGhpcy5fb3B0UGh5c2ljYWxTaXplJiZ0aGlzLl9kZWJvdW5jZSgiX2luY3JlYXNlUG9vbElmTmVlZGVkIix0aGlzLl9pbmNyZWFzZVBvb2xJZk5lZWRlZC5iaW5kKHRoaXMsdGhpcy5fY2xhbXAoTWF0aC5yb3VuZCg1MC90aGlzLl90ZW1wbGF0ZUNvc3QpLDEsbikpLHl0KTp0aGlzLl9kZWJvdW5jZSgiX2luY3JlYXNlUG9vbElmTmVlZGVkIix0aGlzLl9pbmNyZWFzZVBvb2xJZk5lZWRlZC5iaW5kKHRoaXMsbiksdnQpKX19LF9yZW5kZXI6ZnVuY3Rpb24oKXtpZih0aGlzLmlzQXR0YWNoZWQmJnRoaXMuX2lzVmlzaWJsZSlpZigwIT09dGhpcy5fcGh5c2ljYWxDb3VudCl7Y29uc3R7cGh5c2ljYWxUb3A6dCxpbmRleGVzOmV9PXRoaXMuX2dldFJldXNhYmxlcyghMCk7dGhpcy5fcGh5c2ljYWxUb3A9dCx0aGlzLl92aXJ0dWFsU3RhcnQ9dGhpcy5fdmlydHVhbFN0YXJ0K2UubGVuZ3RoLHRoaXMuX3BoeXNpY2FsU3RhcnQ9dGhpcy5fcGh5c2ljYWxTdGFydCtlLmxlbmd0aCx0aGlzLl91cGRhdGUoZSksdGhpcy5fdXBkYXRlKCksdGhpcy5faW5jcmVhc2VQb29sSWZOZWVkZWQoMCl9ZWxzZSB0aGlzLl92aXJ0dWFsQ291bnQ+MCYmKHRoaXMudXBkYXRlVmlld3BvcnRCb3VuZGFyaWVzKCksdGhpcy5faW5jcmVhc2VQb29sSWZOZWVkZWQoMykpfSxfaXRlbXNDaGFuZ2VkOmZ1bmN0aW9uKHQpeyJpdGVtcyI9PT10LnBhdGgmJih0aGlzLl92aXJ0dWFsU3RhcnQ9MCx0aGlzLl9waHlzaWNhbFRvcD0wLHRoaXMuX3ZpcnR1YWxDb3VudD10aGlzLml0ZW1zP3RoaXMuaXRlbXMubGVuZ3RoOjAsdGhpcy5fcGh5c2ljYWxJbmRleEZvcktleT17fSx0aGlzLl9maXJzdFZpc2libGVJbmRleFZhbD1udWxsLHRoaXMuX2xhc3RWaXNpYmxlSW5kZXhWYWw9bnVsbCx0aGlzLl9waHlzaWNhbENvdW50PXRoaXMuX3BoeXNpY2FsQ291bnR8fDAsdGhpcy5fcGh5c2ljYWxJdGVtcz10aGlzLl9waHlzaWNhbEl0ZW1zfHxbXSx0aGlzLl9waHlzaWNhbFNpemVzPXRoaXMuX3BoeXNpY2FsU2l6ZXN8fFtdLHRoaXMuX3BoeXNpY2FsU3RhcnQ9MCx0aGlzLl9zY3JvbGxUb3A+dGhpcy5fc2Nyb2xsT2Zmc2V0JiZ0aGlzLl9yZXNldFNjcm9sbFBvc2l0aW9uKDApLHRoaXMuX2RlYm91bmNlKCJfcmVuZGVyIix0aGlzLl9yZW5kZXIsX3QpKX0sX2l0ZXJhdGVJdGVtczpmdW5jdGlvbih0LGUpe2xldCBuLGkscixvO2lmKDI9PT1hcmd1bWVudHMubGVuZ3RoJiZlKXtmb3Iobz0wO288ZS5sZW5ndGg7bysrKWlmKG49ZVtvXSxpPXRoaXMuX2NvbXB1dGVWaWR4KG4pLG51bGwhPShyPXQuY2FsbCh0aGlzLG4saSkpKXJldHVybiByfWVsc2V7Zm9yKG49dGhpcy5fcGh5c2ljYWxTdGFydCxpPXRoaXMuX3ZpcnR1YWxTdGFydDtuPHRoaXMuX3BoeXNpY2FsQ291bnQ7bisrLGkrKylpZihudWxsIT0ocj10LmNhbGwodGhpcyxuLGkpKSlyZXR1cm4gcjtmb3Iobj0wO248dGhpcy5fcGh5c2ljYWxTdGFydDtuKyssaSsrKWlmKG51bGwhPShyPXQuY2FsbCh0aGlzLG4saSkpKXJldHVybiByfX0sX2NvbXB1dGVWaWR4OmZ1bmN0aW9uKHQpe3JldHVybiB0Pj10aGlzLl9waHlzaWNhbFN0YXJ0P3RoaXMuX3ZpcnR1YWxTdGFydCsodC10aGlzLl9waHlzaWNhbFN0YXJ0KTp0aGlzLl92aXJ0dWFsU3RhcnQrKHRoaXMuX3BoeXNpY2FsQ291bnQtdGhpcy5fcGh5c2ljYWxTdGFydCkrdH0sX3VwZGF0ZU1ldHJpY3M6ZnVuY3Rpb24odCl7aWYoIXRoaXMuX2lzVmlzaWJsZSlyZXR1cm47V2koKTtsZXQgZT0wLG49MDtjb25zdCBpPXRoaXMuX3BoeXNpY2FsQXZlcmFnZUNvdW50LHI9dGhpcy5fcGh5c2ljYWxBdmVyYWdlO3RoaXMuX2l0ZXJhdGVJdGVtcygoZnVuY3Rpb24odCl7bis9dGhpcy5fcGh5c2ljYWxTaXplc1t0XSx0aGlzLl9waHlzaWNhbFNpemVzW3RdPXRoaXMuX3BoeXNpY2FsSXRlbXNbdF0ub2Zmc2V0SGVpZ2h0LGUrPXRoaXMuX3BoeXNpY2FsU2l6ZXNbdF0sdGhpcy5fcGh5c2ljYWxBdmVyYWdlQ291bnQrPXRoaXMuX3BoeXNpY2FsU2l6ZXNbdF0/MTowfSksdCksdGhpcy5fcGh5c2ljYWxTaXplPXRoaXMuX3BoeXNpY2FsU2l6ZStlLW4sdGhpcy5fcGh5c2ljYWxBdmVyYWdlQ291bnQhPT1pJiYodGhpcy5fcGh5c2ljYWxBdmVyYWdlPU1hdGgucm91bmQoKHIqaStlKS90aGlzLl9waHlzaWNhbEF2ZXJhZ2VDb3VudCkpfSxfcG9zaXRpb25JdGVtczpmdW5jdGlvbigpe3RoaXMuX2FkanVzdFNjcm9sbFBvc2l0aW9uKCk7bGV0IHQ9dGhpcy5fcGh5c2ljYWxUb3A7dGhpcy5faXRlcmF0ZUl0ZW1zKChmdW5jdGlvbihlKXt0aGlzLnRyYW5zbGF0ZTNkKDAsdCsicHgiLDAsdGhpcy5fcGh5c2ljYWxJdGVtc1tlXSksdCs9dGhpcy5fcGh5c2ljYWxTaXplc1tlXX0pKX0sX2FkanVzdFNjcm9sbFBvc2l0aW9uOmZ1bmN0aW9uKCl7Y29uc3QgdD0wPT09dGhpcy5fdmlydHVhbFN0YXJ0P3RoaXMuX3BoeXNpY2FsVG9wOk1hdGgubWluKHRoaXMuX3Njcm9sbFBvc2l0aW9uK3RoaXMuX3BoeXNpY2FsVG9wLDApO2lmKDAhPT10KXt0aGlzLl9waHlzaWNhbFRvcD10aGlzLl9waHlzaWNhbFRvcC10O2NvbnN0IGU9dGhpcy5fc2Nyb2xsVG9wOyFSMXQmJmU+MCYmdGhpcy5fcmVzZXRTY3JvbGxQb3NpdGlvbihlLXQpfX0sX3Jlc2V0U2Nyb2xsUG9zaXRpb246ZnVuY3Rpb24odCl7dGhpcy5zY3JvbGxUYXJnZXQmJnQ+PTAmJih0aGlzLl9zY3JvbGxUb3A9dCx0aGlzLl9zY3JvbGxQb3NpdGlvbj10aGlzLl9zY3JvbGxUb3ApfSxfdXBkYXRlU2Nyb2xsZXJTaXplOmZ1bmN0aW9uKHQpe3RoaXMuX2VzdFNjcm9sbEhlaWdodD10aGlzLl9waHlzaWNhbEJvdHRvbStNYXRoLm1heCh0aGlzLl92aXJ0dWFsQ291bnQtdGhpcy5fcGh5c2ljYWxDb3VudC10aGlzLl92aXJ0dWFsU3RhcnQsMCkqdGhpcy5fcGh5c2ljYWxBdmVyYWdlLCgodD0odD10fHwwPT09dGhpcy5fc2Nyb2xsSGVpZ2h0KXx8dGhpcy5fc2Nyb2xsUG9zaXRpb24+PXRoaXMuX2VzdFNjcm9sbEhlaWdodC10aGlzLl9waHlzaWNhbFNpemUpfHxNYXRoLmFicyh0aGlzLl9lc3RTY3JvbGxIZWlnaHQtdGhpcy5fc2Nyb2xsSGVpZ2h0KT49dGhpcy5fdmlld3BvcnRIZWlnaHQpJiYodGhpcy4kLml0ZW1zLnN0eWxlLmhlaWdodD10aGlzLl9lc3RTY3JvbGxIZWlnaHQrInB4Iix0aGlzLl9zY3JvbGxIZWlnaHQ9dGhpcy5fZXN0U2Nyb2xsSGVpZ2h0KX0sc2Nyb2xsVG9JbmRleDpmdW5jdGlvbih0KXtpZigibnVtYmVyIiE9dHlwZW9mIHR8fHQ8MHx8dD50aGlzLml0ZW1zLmxlbmd0aC0xKXJldHVybjtpZihXaSgpLDA9PT10aGlzLl9waHlzaWNhbENvdW50KXJldHVybjt0PXRoaXMuX2NsYW1wKHQsMCx0aGlzLl92aXJ0dWFsQ291bnQtMSksKCF0aGlzLl9pc0luZGV4UmVuZGVyZWQodCl8fHQ+PXRoaXMuX21heFZpcnR1YWxTdGFydCkmJih0aGlzLl92aXJ0dWFsU3RhcnQ9dC0xKSx0aGlzLl9hc3NpZ25Nb2RlbHMoKSx0aGlzLl91cGRhdGVNZXRyaWNzKCksdGhpcy5fcGh5c2ljYWxUb3A9TWF0aC5mbG9vcih0aGlzLl92aXJ0dWFsU3RhcnQpKnRoaXMuX3BoeXNpY2FsQXZlcmFnZTtsZXQgZT10aGlzLl9waHlzaWNhbFN0YXJ0LG49dGhpcy5fdmlydHVhbFN0YXJ0LGk9MDtjb25zdCByPXRoaXMuX2hpZGRlbkNvbnRlbnRTaXplO2Zvcig7bjx0JiZpPD1yOylpKz10aGlzLl9waHlzaWNhbFNpemVzW2VdLGU9KGUrMSkldGhpcy5fcGh5c2ljYWxDb3VudCxuKys7dGhpcy5fdXBkYXRlU2Nyb2xsZXJTaXplKCEwKSx0aGlzLl9wb3NpdGlvbkl0ZW1zKCksdGhpcy5fcmVzZXRTY3JvbGxQb3NpdGlvbih0aGlzLl9waHlzaWNhbFRvcCt0aGlzLl9zY3JvbGxPZmZzZXQraSksdGhpcy5faW5jcmVhc2VQb29sSWZOZWVkZWQoMCksdGhpcy5fZmlyc3RWaXNpYmxlSW5kZXhWYWw9bnVsbCx0aGlzLl9sYXN0VmlzaWJsZUluZGV4VmFsPW51bGx9LF9yZXNldEF2ZXJhZ2U6ZnVuY3Rpb24oKXt0aGlzLl9waHlzaWNhbEF2ZXJhZ2U9MCx0aGlzLl9waHlzaWNhbEF2ZXJhZ2VDb3VudD0wfSxfcmVzaXplSGFuZGxlcjpmdW5jdGlvbigpe3RoaXMuX2RlYm91bmNlKCJfcmVuZGVyIiwoZnVuY3Rpb24oKXt0aGlzLl9maXJzdFZpc2libGVJbmRleFZhbD1udWxsLHRoaXMuX2xhc3RWaXNpYmxlSW5kZXhWYWw9bnVsbCx0aGlzLnVwZGF0ZVZpZXdwb3J0Qm91bmRhcmllcygpLHRoaXMuX2lzVmlzaWJsZT8odGhpcy50b2dnbGVTY3JvbGxMaXN0ZW5lcighMCksdGhpcy5fcmVzZXRBdmVyYWdlKCksdGhpcy5fcmVuZGVyKCkpOnRoaXMudG9nZ2xlU2Nyb2xsTGlzdGVuZXIoITEpfSksX3QpfSxfaXNJbmRleFJlbmRlcmVkOmZ1bmN0aW9uKHQpe3JldHVybiB0Pj10aGlzLl92aXJ0dWFsU3RhcnQmJnQ8PXRoaXMuX3ZpcnR1YWxFbmR9LF9nZXRQaHlzaWNhbEluZGV4OmZ1bmN0aW9uKHQpe3JldHVybih0aGlzLl9waHlzaWNhbFN0YXJ0Kyh0LXRoaXMuX3ZpcnR1YWxTdGFydCkpJXRoaXMuX3BoeXNpY2FsQ291bnR9LF9jbGFtcDpmdW5jdGlvbih0LGUsbil7cmV0dXJuIE1hdGgubWluKG4sTWF0aC5tYXgoZSx0KSl9LF9kZWJvdW5jZTpmdW5jdGlvbih0LGUsbil7dGhpcy5fZGVib3VuY2Vycz10aGlzLl9kZWJvdW5jZXJzfHx7fSx0aGlzLl9kZWJvdW5jZXJzW3RdPU5uLmRlYm91bmNlKHRoaXMuX2RlYm91bmNlcnNbdF0sbixlLmJpbmQodGhpcykpLFJuKHRoaXMuX2RlYm91bmNlcnNbdF0pfX0pOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgKGMpIDIwMjEgVmFhZGluIEx0ZC4KICAgICAqIFRoaXMgcHJvZ3JhbSBpcyBhdmFpbGFibGUgdW5kZXIgQXBhY2hlIExpY2Vuc2UgVmVyc2lvbiAyLjAsIGF2YWlsYWJsZSBhdCBodHRwczovL3ZhYWRpbi5jb20vbGljZW5zZS8KICAgICAqLwpjbGFzcyB6MXQgZXh0ZW5kcyBPMXR7c3RhdGljIGdldCBwcm9wZXJ0aWVzKCl7cmV0dXJue3NpemU6e3R5cGU6TnVtYmVyLG5vdGlmeTohMH0sX3ZpZHhPZmZzZXQ6e3R5cGU6TnVtYmVyLHZhbHVlOjB9fX1zdGF0aWMgZ2V0IG9ic2VydmVycygpe3JldHVyblsiX2VmZmVjdGl2ZVNpemVDaGFuZ2VkKF9lZmZlY3RpdmVTaXplKSJdfWNvbm5lY3RlZENhbGxiYWNrKCl7c3VwZXIuY29ubmVjdGVkQ2FsbGJhY2soKSx0aGlzLl9zY3JvbGxIYW5kbGVyKCl9X3VwZGF0ZVNjcm9sbGVySXRlbSgpe31fYWZ0ZXJTY3JvbGwoKXt9X2dldFJvd1RhcmdldCgpe31fY3JlYXRlU2Nyb2xsZXJSb3dzKCl7fV9jYW5Qb3B1bGF0ZSgpe31zY3JvbGxUb0luZGV4KHQpe3RoaXMuX3dhcm5Qcml2YXRlQVBJQWNjZXNzKCJzY3JvbGxUb0luZGV4IiksdGhpcy5fc2Nyb2xsaW5nVG9JbmRleD0hMCx0PU1hdGgubWluKE1hdGgubWF4KHQsMCksdGhpcy5fZWZmZWN0aXZlU2l6ZS0xKSx0aGlzLiQudGFibGUuc2Nyb2xsVG9wPXQvdGhpcy5fZWZmZWN0aXZlU2l6ZSoodGhpcy4kLnRhYmxlLnNjcm9sbEhlaWdodC10aGlzLiQudGFibGUub2Zmc2V0SGVpZ2h0KSx0aGlzLl9zY3JvbGxIYW5kbGVyKCksdGhpcy5fYWNjZXNzSXJvbkxpc3RBUEkoKCgpPT50aGlzLl9tYXhTY3JvbGxUb3ApKSYmdGhpcy5fdmlydHVhbENvdW50PHRoaXMuX2VmZmVjdGl2ZVNpemUmJnRoaXMuX2FkanVzdFZpcnR1YWxJbmRleE9mZnNldCgxZTYpLHRoaXMuX2FjY2Vzc0lyb25MaXN0QVBJKCgoKT0+c3VwZXIuc2Nyb2xsVG9JbmRleCh0LXRoaXMuX3ZpZHhPZmZzZXQpKSksdGhpcy5fc2Nyb2xsSGFuZGxlcigpO2NvbnN0IGU9QXJyYXkuZnJvbSh0aGlzLiQuaXRlbXMuY2hpbGRyZW4pLmZpbHRlcigoZT0+ZS5pbmRleD09PXQpKVswXTtpZihlKXtjb25zdCB0PWUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wLXRoaXMuJC5oZWFkZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuYm90dG9tO01hdGguYWJzKHQpPjEmJih0aGlzLiQudGFibGUuc2Nyb2xsVG9wKz10LHRoaXMuX3Njcm9sbEhhbmRsZXIoKSl9dGhpcy5fc2Nyb2xsaW5nVG9JbmRleD0hMX1fZWZmZWN0aXZlU2l6ZUNoYW5nZWQodCl7bGV0IGUsbj0wO2lmKHRoaXMuX2l0ZXJhdGVJdGVtcygoKHQsaSk9PntpZihpPT09dGhpcy5fZmlyc3RWaXNpYmxlSW5kZXgpe2NvbnN0IGk9dGhpcy5fcGh5c2ljYWxJdGVtc1t0XTtlPWkuaW5kZXgsbj1pLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcH19KSksdGhpcy5pdGVtcyYmdDx0aGlzLml0ZW1zLmxlbmd0aCYmKHRoaXMuX3Njcm9sbFRvcD0wKSwhQXJyYXkuaXNBcnJheSh0aGlzLml0ZW1zKSl7dGhpcy5pdGVtcz17bGVuZ3RoOk1hdGgubWluKHQsMWU1KX19dGhpcy5fYWNjZXNzSXJvbkxpc3RBUEkoKCgpPT5zdXBlci5faXRlbXNDaGFuZ2VkKHtwYXRoOiJpdGVtcyJ9KSkpLHRoaXMuX3ZpcnR1YWxDb3VudD1NYXRoLm1pbih0aGlzLml0ZW1zLmxlbmd0aCx0KXx8MCwwPT09dGhpcy5fc2Nyb2xsVG9wJiYodGhpcy5fYWNjZXNzSXJvbkxpc3RBUEkoKCgpPT50aGlzLl9zY3JvbGxUb0luZGV4KE1hdGgubWluKHQtMSxlKSkpKSx0aGlzLl9pdGVyYXRlSXRlbXMoKHQ9Pntjb25zdCBpPXRoaXMuX3BoeXNpY2FsSXRlbXNbdF07aWYoaS5pbmRleD09PWUmJih0aGlzLiQudGFibGUuc2Nyb2xsVG9wKz1NYXRoLnJvdW5kKGkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wLW4pKSxpLmluZGV4PT09dGhpcy5fZm9jdXNlZEl0ZW1JbmRleCYmdGhpcy5faXRlbXNGb2N1c2FibGUmJnRoaXMuJC5pdGVtcy5jb250YWlucyh0aGlzLnNoYWRvd1Jvb3QuYWN0aXZlRWxlbWVudCkpe2NvbnN0IHQ9QXJyYXkuZnJvbSh0aGlzLl9pdGVtc0ZvY3VzYWJsZS5wYXJlbnRFbGVtZW50LmNoaWxkcmVuKS5pbmRleE9mKHRoaXMuX2l0ZW1zRm9jdXNhYmxlKTtpLmNoaWxkcmVuW3RdLmZvY3VzKCl9fSkpKSx0aGlzLl9hc3NpZ25Nb2RlbHMoKSxyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCgpPT50aGlzLl91cGRhdGUoKSkpLHRoaXMuX191cGRhdGVGb290ZXJQb3NpdGlvbmluZygpfV9wb3NpdGlvbkl0ZW1zKCl7bGV0IHQ7dGhpcy5fYWRqdXN0U2Nyb2xsUG9zaXRpb24oKSxpc05hTih0aGlzLl9waHlzaWNhbFRvcCkmJih0PSEwLHRoaXMuX3BoeXNpY2FsVG9wPTApO2xldCBlPXRoaXMuX3BoeXNpY2FsVG9wO3RoaXMuX2l0ZXJhdGVJdGVtcygodD0+e3RoaXMuX3BoeXNpY2FsSXRlbXNbdF0uc3R5bGUudHJhbnNmb3JtPWB0cmFuc2xhdGVZKCR7ZX1weClgLGUrPXRoaXMuX3BoeXNpY2FsU2l6ZXNbdF19KSksdCYmdGhpcy5fc2Nyb2xsVG9JbmRleCgwKX1faW5jcmVhc2VQb29sSWZOZWVkZWQodCl7MD09PXQmJnRoaXMuX3Njcm9sbGluZ1RvSW5kZXh8fCF0aGlzLl9jYW5Qb3B1bGF0ZSgpfHwhdGhpcy5fZWZmZWN0aXZlU2l6ZXx8KHRoaXMuX2luaXRpYWxQb29sQ3JlYXRlZD90aGlzLl9vcHRQaHlzaWNhbFNpemUhPT0xLzAmJih0aGlzLl9kZWJvdW5jZUluY3JlYXNlUG9vbD1Obi5kZWJvdW5jZSh0aGlzLl9kZWJvdW5jZUluY3JlYXNlUG9vbCxfdCwoKCk9Pnt0aGlzLl91cGRhdGVNZXRyaWNzKCk7bGV0IHQ9TWF0aC5jZWlsKCh0aGlzLl9vcHRQaHlzaWNhbFNpemUtdGhpcy5fcGh5c2ljYWxTaXplKS90aGlzLl9waHlzaWNhbEF2ZXJhZ2UpO3RoaXMuX3BoeXNpY2FsQ291bnQrdD50aGlzLl9lZmZlY3RpdmVTaXplJiYodD1NYXRoLm1heCgwLHRoaXMuX2VmZmVjdGl2ZVNpemUtdGhpcy5fcGh5c2ljYWxDb3VudCkpLHRoaXMuX3BoeXNpY2FsU2l6ZSYmdD4wJiZ0aGlzLl9vcHRQaHlzaWNhbFNpemUhPT0xLzAmJihzdXBlci5faW5jcmVhc2VQb29sSWZOZWVkZWQodCksdGhpcy5fX3Jlb3JkZXJDaGlsZE5vZGVzKCkpfSkpKToodGhpcy5faW5pdGlhbFBvb2xDcmVhdGVkPSEwLHN1cGVyLl9pbmNyZWFzZVBvb2xJZk5lZWRlZCgyNSkpKX1fX3Jlb3JkZXJDaGlsZE5vZGVzKCl7Y29uc3QgdD1BcnJheS5mcm9tKHRoaXMuJC5pdGVtcy5jaGlsZE5vZGVzKTshIXQucmVkdWNlKCgodCxlLG4saSk9PntpZigwPT09bnx8aVtuLTFdLmluZGV4PT09ZS5pbmRleC0xKXJldHVybiB0fSksITApfHx0LnNvcnQoKCh0LGUpPT50LmluZGV4LWUuaW5kZXgpKS5mb3JFYWNoKCh0PT50aGlzLiQuaXRlbXMuYXBwZW5kQ2hpbGQodCkpKX1fY3JlYXRlUG9vbCh0KXtjb25zdCBlPWRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKSxuPXRoaXMuX2NyZWF0ZVNjcm9sbGVyUm93cyh0KTtuLmZvckVhY2goKHQ9PmUuYXBwZW5kQ2hpbGQodCkpKSx0aGlzLl9nZXRSb3dUYXJnZXQoKS5hcHBlbmRDaGlsZChlKTtjb25zdCBpPXRoaXMucXVlcnlTZWxlY3RvcigiW3Nsb3RdIik7aWYoaSl7Y29uc3QgdD1pLmdldEF0dHJpYnV0ZSgic2xvdCIpO2kuc2V0QXR0cmlidXRlKCJzbG90IiwiZm9vLWJhciIpLGkuc2V0QXR0cmlidXRlKCJzbG90Iix0KX1yZXR1cm4gRGkodGhpcywoKCk9PnRoaXMubm90aWZ5UmVzaXplKCkpKSxufV9hc3NpZ25Nb2RlbHModCl7dGhpcy5faXRlcmF0ZUl0ZW1zKCgodCxlKT0+e2NvbnN0IG49dGhpcy5fcGh5c2ljYWxJdGVtc1t0XTt0aGlzLl90b2dnbGVBdHRyaWJ1dGUoImhpZGRlbiIsZT49dGhpcy5fZWZmZWN0aXZlU2l6ZSxuKSx0aGlzLl91cGRhdGVTY3JvbGxlckl0ZW0obixlKyh0aGlzLl92aWR4T2Zmc2V0fHwwKSl9KSx0KX1fc2Nyb2xsSGFuZGxlcigpe2NvbnN0IHQ9dGhpcy4kLnRhYmxlLnNjcm9sbFRvcC10aGlzLl9zY3JvbGxQb3NpdGlvbjt0aGlzLl9hY2Nlc3NJcm9uTGlzdEFQSShzdXBlci5fc2Nyb2xsSGFuZGxlcik7Y29uc3QgZT10aGlzLl92aWR4T2Zmc2V0O3RoaXMuX2FjY2Vzc0lyb25MaXN0QVBJKCgoKT0+dGhpcy5fbWF4U2Nyb2xsVG9wKSkmJnRoaXMuX3ZpcnR1YWxDb3VudDx0aGlzLl9lZmZlY3RpdmVTaXplP3RoaXMuX2FkanVzdFZpcnR1YWxJbmRleE9mZnNldCh0KTp0aGlzLl92aWR4T2Zmc2V0PTAsdGhpcy5fdmlkeE9mZnNldCE9PWUmJnRoaXMuX3VwZGF0ZSgpLHRoaXMuX2FmdGVyU2Nyb2xsKCl9X2FkanVzdFZpcnR1YWxJbmRleE9mZnNldCh0KXtpZihNYXRoLmFicyh0KT4xZTQpe2lmKHRoaXMuX25vU2NhbGUpcmV0dXJuIHZvaWQodGhpcy5fbm9TY2FsZT0hMSk7Y29uc3QgdD10aGlzLiQudGFibGUuc2Nyb2xsVG9wLyh0aGlzLiQudGFibGUuc2Nyb2xsSGVpZ2h0LXRoaXMuJC50YWJsZS5vZmZzZXRIZWlnaHQpO3RoaXMuX3ZpZHhPZmZzZXQ9TWF0aC5yb3VuZCh0KnRoaXMuX2VmZmVjdGl2ZVNpemUtdCp0aGlzLl92aXJ0dWFsQ291bnQpfWVsc2V7Y29uc3QgdD10aGlzLl92aWR4T2Zmc2V0fHwwLGU9MWUzLG49MTAwOzA9PT10aGlzLl9zY3JvbGxUb3A/KHRoaXMuX3ZpZHhPZmZzZXQ9MCx0IT09dGhpcy5fdmlkeE9mZnNldCYmc3VwZXIuc2Nyb2xsVG9JbmRleCgwKSk6dGhpcy5maXJzdFZpc2libGVJbmRleDxlJiZ0aGlzLl92aWR4T2Zmc2V0PjAmJih0aGlzLl92aWR4T2Zmc2V0LT1NYXRoLm1pbih0aGlzLl92aWR4T2Zmc2V0LG4pLHQhPT10aGlzLl92aWR4T2Zmc2V0JiZzdXBlci5zY3JvbGxUb0luZGV4KHRoaXMuZmlyc3RWaXNpYmxlSW5kZXgrKHQtdGhpcy5fdmlkeE9mZnNldCkpLHRoaXMuX25vU2NhbGU9ITApO2NvbnN0IGk9dGhpcy5fZWZmZWN0aXZlU2l6ZS10aGlzLl92aXJ0dWFsQ291bnQ7dGhpcy5fc2Nyb2xsVG9wPj10aGlzLl9tYXhTY3JvbGxUb3AmJnRoaXMuX21heFNjcm9sbFRvcD4wPyh0aGlzLl92aWR4T2Zmc2V0PWksdCE9PXRoaXMuX3ZpZHhPZmZzZXQmJnN1cGVyLnNjcm9sbFRvSW5kZXgodGhpcy5fdmlydHVhbENvdW50KSk6dGhpcy5maXJzdFZpc2libGVJbmRleD50aGlzLl92aXJ0dWFsQ291bnQtZSYmdGhpcy5fdmlkeE9mZnNldDxpJiYodGhpcy5fdmlkeE9mZnNldCs9TWF0aC5taW4oaS10aGlzLl92aWR4T2Zmc2V0LG4pLHQhPT10aGlzLl92aWR4T2Zmc2V0JiZzdXBlci5zY3JvbGxUb0luZGV4KHRoaXMuZmlyc3RWaXNpYmxlSW5kZXgtKHRoaXMuX3ZpZHhPZmZzZXQtdCkpLHRoaXMuX25vU2NhbGU9ITApfX1fYWNjZXNzSXJvbkxpc3RBUEkodCl7dGhpcy5fd2FyblByaXZhdGVBUElBY2Nlc3NBc3luY0VuYWJsZWQ9ITE7Y29uc3QgZT10LmFwcGx5KHRoaXMpO3JldHVybiB0aGlzLl9kZWJvdW5jZXJXYXJuUHJpdmF0ZUFQSUFjY2Vzcz1Obi5kZWJvdW5jZSh0aGlzLl9kZWJvdW5jZXJXYXJuUHJpdmF0ZUFQSUFjY2VzcyxfdCwoKCk9PnRoaXMuX3dhcm5Qcml2YXRlQVBJQWNjZXNzQXN5bmNFbmFibGVkPSEwKSksZX1fZGVib3VuY2VSZW5kZXIodCxlKXtzdXBlci5fZGVib3VuY2VSZW5kZXIoKCgpPT50aGlzLl9hY2Nlc3NJcm9uTGlzdEFQSSh0KSksZSl9X3dhcm5Qcml2YXRlQVBJQWNjZXNzKHQpe3RoaXMuX3dhcm5Qcml2YXRlQVBJQWNjZXNzQXN5bmNFbmFibGVkJiZjb25zb2xlLndhcm4oYEFjY2Vzc2luZyBwcml2YXRlIEFQSSAoJHt0fSkhYCl9X3JlbmRlcigpe3RoaXMuX2FjY2Vzc0lyb25MaXN0QVBJKHN1cGVyLl9yZW5kZXIpfV9pdGVtc0NoYW5nZWQoKXt9Z2V0IF9maXJzdFZpc2libGVJbmRleCgpe3JldHVybiB0aGlzLl9hY2Nlc3NJcm9uTGlzdEFQSSgoKCk9PnN1cGVyLmZpcnN0VmlzaWJsZUluZGV4KSl9Z2V0IF9sYXN0VmlzaWJsZUluZGV4KCl7cmV0dXJuIHRoaXMuX2FjY2Vzc0lyb25MaXN0QVBJKCgoKT0+c3VwZXIubGFzdFZpc2libGVJbmRleCkpfV9zY3JvbGxUb0luZGV4KHQpe3RoaXMuX2FjY2Vzc0lyb25MaXN0QVBJKCgoKT0+dGhpcy5zY3JvbGxUb0luZGV4KHQpKSl9Z2V0IGZpcnN0VmlzaWJsZUluZGV4KCl7cmV0dXJuIHRoaXMuX3dhcm5Qcml2YXRlQVBJQWNjZXNzKCJmaXJzdFZpc2libGVJbmRleCIpLHN1cGVyLmZpcnN0VmlzaWJsZUluZGV4fXNldCBmaXJzdFZpc2libGVJbmRleCh0KXt0aGlzLl93YXJuUHJpdmF0ZUFQSUFjY2VzcygiZmlyc3RWaXNpYmxlSW5kZXgiKSxzdXBlci5maXJzdFZpc2libGVJbmRleD10fWdldCBsYXN0VmlzaWJsZUluZGV4KCl7cmV0dXJuIHRoaXMuX3dhcm5Qcml2YXRlQVBJQWNjZXNzKCJsYXN0VmlzaWJsZUluZGV4Iiksc3VwZXIubGFzdFZpc2libGVJbmRleH1zZXQgbGFzdFZpc2libGVJbmRleCh0KXt0aGlzLl93YXJuUHJpdmF0ZUFQSUFjY2VzcygibGFzdFZpc2libGVJbmRleCIpLHN1cGVyLmxhc3RWaXNpYmxlSW5kZXg9dH11cGRhdGVWaWV3cG9ydEJvdW5kYXJpZXMoKXt0aGlzLl93YXJuUHJpdmF0ZUFQSUFjY2VzcygidXBkYXRlVmlld3BvcnRCb3VuZGFyaWVzIiksc3VwZXIudXBkYXRlVmlld3BvcnRCb3VuZGFyaWVzLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1fcmVzaXplSGFuZGxlcigpe3N1cGVyLl9yZXNpemVIYW5kbGVyKCksV2koKX19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCAoYykgMjAyMSBWYWFkaW4gTHRkLgogICAgICogVGhpcyBwcm9ncmFtIGlzIGF2YWlsYWJsZSB1bmRlciBBcGFjaGUgTGljZW5zZSBWZXJzaW9uIDIuMCwgYXZhaWxhYmxlIGF0IGh0dHBzOi8vdmFhZGluLmNvbS9saWNlbnNlLwogICAgICovY29uc3QgRDF0PXQ9PmNsYXNzIGV4dGVuZHMgdHtzdGF0aWMgZ2V0IG9ic2VydmVycygpe3JldHVyblsiX2ExMXlVcGRhdGVHcmlkU2l6ZShzaXplLCBfY29sdW1uVHJlZSwgX2NvbHVtblRyZWUuKikiXX1fYTExeUdldEhlYWRlclJvd0NvdW50KHQpe3JldHVybiB0LmZpbHRlcigodD0+dC5zb21lKCh0PT50Ll9oZWFkZXJUZW1wbGF0ZXx8dC5oZWFkZXJSZW5kZXJlcnx8dC5wYXRofHx0LmhlYWRlcikpKSkubGVuZ3RofV9hMTF5R2V0Rm9vdGVyUm93Q291bnQodCl7cmV0dXJuIHQuZmlsdGVyKCh0PT50LnNvbWUoKHQ9PnQuX2hlYWRlclRlbXBsYXRlfHx0LmhlYWRlclJlbmRlcmVyKSkpKS5sZW5ndGh9X2ExMXlVcGRhdGVHcmlkU2l6ZSh0LGUpe2lmKHZvaWQgMD09PXR8fHZvaWQgMD09PWUpcmV0dXJuO2NvbnN0IG49ZVtlLmxlbmd0aC0xXTt0aGlzLiQudGFibGUuc2V0QXR0cmlidXRlKCJhcmlhLXJvd2NvdW50Iix0K3RoaXMuX2ExMXlHZXRIZWFkZXJSb3dDb3VudChlKSt0aGlzLl9hMTF5R2V0Rm9vdGVyUm93Q291bnQoZSkpLHRoaXMuJC50YWJsZS5zZXRBdHRyaWJ1dGUoImFyaWEtY29sY291bnQiLG4mJm4ubGVuZ3RofHwwKSx0aGlzLl9hMTF5VXBkYXRlSGVhZGVyUm93cygpLHRoaXMuX2ExMXlVcGRhdGVGb290ZXJSb3dzKCl9X2ExMXlVcGRhdGVIZWFkZXJSb3dzKCl7QXJyYXkuZnJvbSh0aGlzLiQuaGVhZGVyLmNoaWxkcmVuKS5mb3JFYWNoKCgodCxlKT0+dC5zZXRBdHRyaWJ1dGUoImFyaWEtcm93aW5kZXgiLGUrMSkpKX1fYTExeVVwZGF0ZUZvb3RlclJvd3MoKXtBcnJheS5mcm9tKHRoaXMuJC5mb290ZXIuY2hpbGRyZW4pLmZvckVhY2goKCh0LGUpPT50LnNldEF0dHJpYnV0ZSgiYXJpYS1yb3dpbmRleCIsdGhpcy5fYTExeUdldEhlYWRlclJvd0NvdW50KHRoaXMuX2NvbHVtblRyZWUpK3RoaXMuc2l6ZStlKzEpKSl9X2ExMXlVcGRhdGVSb3dSb3dpbmRleCh0LGUpe3Quc2V0QXR0cmlidXRlKCJhcmlhLXJvd2luZGV4IixlK3RoaXMuX2ExMXlHZXRIZWFkZXJSb3dDb3VudCh0aGlzLl9jb2x1bW5UcmVlKSsxKX1fYTExeVVwZGF0ZVJvd1NlbGVjdGVkKHQsZSl7dC5zZXRBdHRyaWJ1dGUoImFyaWEtc2VsZWN0ZWQiLEJvb2xlYW4oZSkpLEFycmF5LmZyb20odC5jaGlsZHJlbikuZm9yRWFjaCgodD0+dC5zZXRBdHRyaWJ1dGUoImFyaWEtc2VsZWN0ZWQiLEJvb2xlYW4oZSkpKSl9X2ExMXlVcGRhdGVSb3dMZXZlbCh0LGUpe3Quc2V0QXR0cmlidXRlKCJhcmlhLWxldmVsIixlKzEpfV9hMTF5VXBkYXRlUm93RGV0YWlsc09wZW5lZCh0LGUpe0FycmF5LmZyb20odC5jaGlsZHJlbikuZm9yRWFjaCgodD0+eyJib29sZWFuIj09dHlwZW9mIGU/dC5zZXRBdHRyaWJ1dGUoImFyaWEtZXhwYW5kZWQiLGUpOnQuaGFzQXR0cmlidXRlKCJhcmlhLWV4cGFuZGVkIikmJnQucmVtb3ZlQXR0cmlidXRlKCJhcmlhLWV4cGFuZGVkIil9KSl9X2ExMXlTZXRSb3dEZXRhaWxzQ2VsbCh0LGUpe0FycmF5LmZyb20odC5jaGlsZHJlbikuZm9yRWFjaCgodD0+e3QhPT1lJiZ0LnNldEF0dHJpYnV0ZSgiYXJpYS1jb250cm9scyIsZS5pZCl9KSl9X2ExMXlVcGRhdGVDZWxsQ29sc3Bhbih0LGUpe3Quc2V0QXR0cmlidXRlKCJhcmlhLWNvbHNwYW4iLE51bWJlcihlKSl9X2ExMXlVcGRhdGVTb3J0ZXJzKCl7QXJyYXkuZnJvbSh0aGlzLnF1ZXJ5U2VsZWN0b3JBbGwoInZhYWRpbi1ncmlkLXNvcnRlciIpKS5mb3JFYWNoKCh0PT57bGV0IGU9dC5wYXJlbnROb2RlO2Zvcig7ZSYmInZhYWRpbi1ncmlkLWNlbGwtY29udGVudCIhPT1lLmxvY2FsTmFtZTspZT1lLnBhcmVudE5vZGU7aWYoZSYmZS5hc3NpZ25lZFNsb3Qpe2UuYXNzaWduZWRTbG90LnBhcmVudE5vZGUuc2V0QXR0cmlidXRlKCJhcmlhLXNvcnQiLHthc2M6ImFzY2VuZGluZyIsZGVzYzoiZGVzY2VuZGluZyJ9W1N0cmluZyh0LmRpcmVjdGlvbildfHwibm9uZSIpfX0pKX19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCAoYykgMjAyMSBWYWFkaW4gTHRkLgogICAgICogVGhpcyBwcm9ncmFtIGlzIGF2YWlsYWJsZSB1bmRlciBBcGFjaGUgTGljZW5zZSBWZXJzaW9uIDIuMCwgYXZhaWxhYmxlIGF0IGh0dHBzOi8vdmFhZGluLmNvbS9saWNlbnNlLwogICAgICovLEIxdD10PT5jbGFzcyBleHRlbmRzIHR7c3RhdGljIGdldCBwcm9wZXJ0aWVzKCl7cmV0dXJue2FjdGl2ZUl0ZW06e3R5cGU6T2JqZWN0LG5vdGlmeTohMCx2YWx1ZTpudWxsfX19cmVhZHkoKXtzdXBlci5yZWFkeSgpLHRoaXMuJC5zY3JvbGxlci5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsdGhpcy5fb25DbGljay5iaW5kKHRoaXMpKSx0aGlzLmFkZEV2ZW50TGlzdGVuZXIoImNlbGwtYWN0aXZhdGUiLHRoaXMuX2FjdGl2YXRlSXRlbS5iaW5kKHRoaXMpKX1fYWN0aXZhdGVJdGVtKHQpe2NvbnN0IGU9dC5kZXRhaWwubW9kZWwsbj1lP2UuaXRlbTpudWxsO24mJih0aGlzLmFjdGl2ZUl0ZW09dGhpcy5faXRlbXNFcXVhbCh0aGlzLmFjdGl2ZUl0ZW0sbik/bnVsbDpuKX1fb25DbGljayh0KXtpZih0LmRlZmF1bHRQcmV2ZW50ZWQpcmV0dXJuO2NvbnN0IGU9dC5jb21wb3NlZFBhdGgoKSxuPWVbZS5pbmRleE9mKHRoaXMuJC50YWJsZSktM107aWYoIW58fG4uZ2V0QXR0cmlidXRlKCJwYXJ0IikuaW5kZXhPZigiZGV0YWlscy1jZWxsIik+LTEpcmV0dXJuO2NvbnN0IGk9bi5fY29udGVudCxyPXRoaXMuZ2V0Um9vdE5vZGUoKS5hY3RpdmVFbGVtZW50O2kuY29udGFpbnMocil8fHRoaXMuX2lzRm9jdXNhYmxlKHQudGFyZ2V0KXx8dGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgiY2VsbC1hY3RpdmF0ZSIse2RldGFpbDp7bW9kZWw6dGhpcy5fX2dldFJvd01vZGVsKG4ucGFyZW50RWxlbWVudCl9fSkpfV9pc0ZvY3VzYWJsZSh0KXtyZXR1cm4gSDF0KHQpfX0sSDF0PXQ9PntpZighdC5wYXJlbnROb2RlKXJldHVybiExO2NvbnN0IGU9LTEhPT1BcnJheS5mcm9tKHQucGFyZW50Tm9kZS5xdWVyeVNlbGVjdG9yQWxsKCJbdGFiaW5kZXhdLCBidXR0b24sIGlucHV0LCBzZWxlY3QsIHRleHRhcmVhLCBvYmplY3QsIGlmcmFtZSwgbGFiZWwsIGFbaHJlZl0sIGFyZWFbaHJlZl0iKSkuZmlsdGVyKCh0PT4iY2VsbCBib2R5LWNlbGwiIT09dC5nZXRBdHRyaWJ1dGUoInBhcnQiKSkpLmluZGV4T2YodCk7cmV0dXJuIXQuZGlzYWJsZWQmJmV9LEYxdD10PT5jbGFzcyBleHRlbmRzIHR7c3RhdGljIGdldCBwcm9wZXJ0aWVzKCl7cmV0dXJue2l0ZW1zOkFycmF5fX1zdGF0aWMgZ2V0IG9ic2VydmVycygpe3JldHVyblsiX2l0ZW1zQ2hhbmdlZChpdGVtcywgaXRlbXMuKiwgaXNBdHRhY2hlZCkiXX1faXRlbXNDaGFuZ2VkKHQsZSxuKXtpZihuKXtpZighQXJyYXkuaXNBcnJheSh0KSlyZXR1cm4gbnVsbD09dCYmKHRoaXMuc2l6ZT0wKSx2b2lkKHRoaXMuZGF0YVByb3ZpZGVyPT09dGhpcy5fYXJyYXlEYXRhUHJvdmlkZXImJih0aGlzLmRhdGFQcm92aWRlcj12b2lkIDApKTt0aGlzLnNpemU9dC5sZW5ndGgsdGhpcy5kYXRhUHJvdmlkZXI9dGhpcy5kYXRhUHJvdmlkZXJ8fHRoaXMuX2FycmF5RGF0YVByb3ZpZGVyLHRoaXMuY2xlYXJDYWNoZSgpLHRoaXMuX2Vuc3VyZUZpcnN0UGFnZUxvYWRlZCgpfX1fYXJyYXlEYXRhUHJvdmlkZXIodCxlKXtsZXQgbj0oQXJyYXkuaXNBcnJheSh0aGlzLml0ZW1zKT90aGlzLml0ZW1zOltdKS5zbGljZSgwKTt0aGlzLl9maWx0ZXJzJiZ0aGlzLl9jaGVja1BhdGhzKHRoaXMuX2ZpbHRlcnMsImZpbHRlcmluZyIsbikmJihuPXRoaXMuX2ZpbHRlcihuKSksdGhpcy5zaXplPW4ubGVuZ3RoLHQuc29ydE9yZGVycy5sZW5ndGgmJnRoaXMuX2NoZWNrUGF0aHModGhpcy5fc29ydGVycywic29ydGluZyIsbikmJihuPW4uc29ydCh0aGlzLl9tdWx0aVNvcnQuYmluZCh0aGlzKSkpO2NvbnN0IGk9dC5wYWdlKnQucGFnZVNpemU7ZShuLnNsaWNlKGksaSt0LnBhZ2VTaXplKSxuLmxlbmd0aCl9X2NoZWNrUGF0aHModCxlLG4pe2lmKCFuLmxlbmd0aClyZXR1cm4hMTtsZXQgaT0hMDtmb3IobGV0IHIgaW4gdCl7Y29uc3Qgbz10W3JdLnBhdGg7aWYoIW98fC0xPT09by5pbmRleE9mKCIuIikpY29udGludWU7Y29uc3QgYT1vLnJlcGxhY2UoL1wuW14uXSokLywiIik7dm9pZCAwPT09RW8uZ2V0KGEsblswXSkmJihjb25zb2xlLndhcm4oYFBhdGggIiR7b30iIHVzZWQgZm9yICR7ZX0gZG9lcyBub3QgZXhpc3QgaW4gYWxsIG9mIHRoZSBpdGVtcywgJHtlfSBpcyBkaXNhYmxlZC5gKSxpPSExKX1yZXR1cm4gaX1fbXVsdGlTb3J0KHQsZSl7cmV0dXJuIHRoaXMuX3NvcnRlcnMubWFwKChuPT4iYXNjIj09PW4uZGlyZWN0aW9uP3RoaXMuX2NvbXBhcmUoRW8uZ2V0KG4ucGF0aCx0KSxFby5nZXQobi5wYXRoLGUpKToiZGVzYyI9PT1uLmRpcmVjdGlvbj90aGlzLl9jb21wYXJlKEVvLmdldChuLnBhdGgsZSksRW8uZ2V0KG4ucGF0aCx0KSk6MCkpLnJlZHVjZSgoKHQsZSk9PnR8fGUpLDApfV9ub3JtYWxpemVFbXB0eVZhbHVlKHQpe3JldHVyblt2b2lkIDAsbnVsbF0uaW5kZXhPZih0KT49MD8iIjppc05hTih0KT90LnRvU3RyaW5nKCk6dH1fY29tcGFyZSh0LGUpe3JldHVybih0PXRoaXMuX25vcm1hbGl6ZUVtcHR5VmFsdWUodCkpPChlPXRoaXMuX25vcm1hbGl6ZUVtcHR5VmFsdWUoZSkpPy0xOnQ+ZT8xOjB9X2ZpbHRlcih0KXtyZXR1cm4gdC5maWx0ZXIoKHQ9PjA9PT10aGlzLl9maWx0ZXJzLmZpbHRlcigoZT0+e2NvbnN0IG49dGhpcy5fbm9ybWFsaXplRW1wdHlWYWx1ZShFby5nZXQoZS5wYXRoLHQpKSxpPXRoaXMuX25vcm1hbGl6ZUVtcHR5VmFsdWUoZS52YWx1ZSkudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpO3JldHVybi0xPT09bi50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihpKX0pKS5sZW5ndGgpKX19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCAoYykgMjAyMSBWYWFkaW4gTHRkLgogICAgICogVGhpcyBwcm9ncmFtIGlzIGF2YWlsYWJsZSB1bmRlciBBcGFjaGUgTGljZW5zZSBWZXJzaW9uIDIuMCwgYXZhaWxhYmxlIGF0IGh0dHBzOi8vdmFhZGluLmNvbS9saWNlbnNlLwogICAgICovLFYxdD10PT5jbGFzcyBleHRlbmRzKGJpKHQpKXtyZWFkeSgpe3N1cGVyLnJlYWR5KCk7Y29uc3QgdD10aGlzLiQuc2Nyb2xsZXI7Y2kodCwidHJhY2siLHRoaXMuX29uSGVhZGVyVHJhY2suYmluZCh0aGlzKSksdC5hZGRFdmVudExpc3RlbmVyKCJ0b3VjaG1vdmUiLChlPT50Lmhhc0F0dHJpYnV0ZSgiY29sdW1uLXJlc2l6aW5nIikmJmUucHJldmVudERlZmF1bHQoKSkpLHQuYWRkRXZlbnRMaXN0ZW5lcigiY29udGV4dG1lbnUiLCh0PT4icmVzaXplLWhhbmRsZSI9PXQudGFyZ2V0LmdldEF0dHJpYnV0ZSgicGFydCIpJiZ0LnByZXZlbnREZWZhdWx0KCkpKSx0LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsKHQ9PiJyZXNpemUtaGFuZGxlIj09PXQudGFyZ2V0LmdldEF0dHJpYnV0ZSgicGFydCIpJiZ0LnByZXZlbnREZWZhdWx0KCkpKX1fb25IZWFkZXJUcmFjayh0KXtjb25zdCBlPXQudGFyZ2V0O2lmKCJyZXNpemUtaGFuZGxlIj09PWUuZ2V0QXR0cmlidXRlKCJwYXJ0Iikpe2xldCBuPWUucGFyZW50RWxlbWVudC5fY29sdW1uO2Zvcih0aGlzLl90b2dnbGVBdHRyaWJ1dGUoImNvbHVtbi1yZXNpemluZyIsITAsdGhpcy4kLnNjcm9sbGVyKTsidmFhZGluLWdyaWQtY29sdW1uLWdyb3VwIj09PW4ubG9jYWxOYW1lOyluPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKG4uX2NoaWxkQ29sdW1ucywwKS5zb3J0KChmdW5jdGlvbih0LGUpe3JldHVybiB0Ll9vcmRlci1lLl9vcmRlcn0pKS5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiF0LmhpZGRlbn0pKS5wb3AoKTtjb25zdCBpPUFycmF5LmZyb20odGhpcy4kLmhlYWRlci5xdWVyeVNlbGVjdG9yQWxsKCdbcGFydH49InJvdyJdOmxhc3QtY2hpbGQgW3BhcnR+PSJjZWxsIl0nKSkscj1pLmZpbHRlcigodD0+dC5fY29sdW1uPT09bikpWzBdO2lmKHIub2Zmc2V0V2lkdGgpe2NvbnN0IGU9d2luZG93LmdldENvbXB1dGVkU3R5bGUociksaT0xMCtwYXJzZUludChlLnBhZGRpbmdMZWZ0KStwYXJzZUludChlLnBhZGRpbmdSaWdodCkrcGFyc2VJbnQoZS5ib3JkZXJMZWZ0V2lkdGgpK3BhcnNlSW50KGUuYm9yZGVyUmlnaHRXaWR0aCkrcGFyc2VJbnQoZS5tYXJnaW5MZWZ0KStwYXJzZUludChlLm1hcmdpblJpZ2h0KSxvPXIub2Zmc2V0V2lkdGgrKHRoaXMuX19pc1JUTD9yLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQtdC5kZXRhaWwueDp0LmRldGFpbC54LXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkucmlnaHQpO24ud2lkdGg9TWF0aC5tYXgoaSxvKSsicHgiLG4uZmxleEdyb3c9MH1pLnNvcnQoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQuX2NvbHVtbi5fb3JkZXItZS5fY29sdW1uLl9vcmRlcn0pKS5mb3JFYWNoKChmdW5jdGlvbih0LGUsbil7ZTxuLmluZGV4T2YocikmJih0Ll9jb2x1bW4ud2lkdGg9dC5vZmZzZXRXaWR0aCsicHgiLHQuX2NvbHVtbi5mbGV4R3Jvdz0wKX0pKSwiZW5kIj09PXQuZGV0YWlsLnN0YXRlJiYodGhpcy5fdG9nZ2xlQXR0cmlidXRlKCJjb2x1bW4tcmVzaXppbmciLCExLHRoaXMuJC5zY3JvbGxlciksdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgiY29sdW1uLXJlc2l6ZSIse2RldGFpbDp7cmVzaXplZENvbHVtbjpufX0pKSksdGhpcy5fcmVzaXplSGFuZGxlcigpfX19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCAoYykgMjAyMSBWYWFkaW4gTHRkLgogICAgICogVGhpcyBwcm9ncmFtIGlzIGF2YWlsYWJsZSB1bmRlciBBcGFjaGUgTGljZW5zZSBWZXJzaW9uIDIuMCwgYXZhaWxhYmxlIGF0IGh0dHBzOi8vdmFhZGluLmNvbS9saWNlbnNlLwogICAgICovLFUxdD1jbGFzcyB0e2NvbnN0cnVjdG9yKHQsZSxuKXt0aGlzLmdyaWQ9dCx0aGlzLnBhcmVudENhY2hlPWUsdGhpcy5wYXJlbnRJdGVtPW4sdGhpcy5pdGVtQ2FjaGVzPXt9LHRoaXMuaXRlbXM9e30sdGhpcy5lZmZlY3RpdmVTaXplPTAsdGhpcy5zaXplPTAsdGhpcy5wZW5kaW5nUmVxdWVzdHM9e319aXNMb2FkaW5nKCl7cmV0dXJuIEJvb2xlYW4oT2JqZWN0LmtleXModGhpcy5wZW5kaW5nUmVxdWVzdHMpLmxlbmd0aHx8T2JqZWN0LmtleXModGhpcy5pdGVtQ2FjaGVzKS5maWx0ZXIoKHQ9PnRoaXMuaXRlbUNhY2hlc1t0XS5pc0xvYWRpbmcoKSkpWzBdKX1nZXRJdGVtRm9ySW5kZXgodCl7Y29uc3R7Y2FjaGU6ZSxzY2FsZWRJbmRleDpufT10aGlzLmdldENhY2hlQW5kSW5kZXgodCk7cmV0dXJuIGUuaXRlbXNbbl19dXBkYXRlU2l6ZSgpe3RoaXMuZWZmZWN0aXZlU2l6ZT0hdGhpcy5wYXJlbnRJdGVtfHx0aGlzLmdyaWQuX2lzRXhwYW5kZWQodGhpcy5wYXJlbnRJdGVtKT90aGlzLnNpemUrT2JqZWN0LmtleXModGhpcy5pdGVtQ2FjaGVzKS5yZWR1Y2UoKCh0LGUpPT57Y29uc3Qgbj10aGlzLml0ZW1DYWNoZXNbZV07cmV0dXJuIG4udXBkYXRlU2l6ZSgpLHQrbi5lZmZlY3RpdmVTaXplfSksMCk6MH1lbnN1cmVTdWJDYWNoZUZvclNjYWxlZEluZGV4KGUpe2lmKCF0aGlzLml0ZW1DYWNoZXNbZV0pe2NvbnN0IG49bmV3IHQodGhpcy5ncmlkLHRoaXMsdGhpcy5pdGVtc1tlXSk7dGhpcy5pdGVtQ2FjaGVzW2VdPW4sdGhpcy5ncmlkLl9sb2FkUGFnZSgwLG4pfX1nZXRDYWNoZUFuZEluZGV4KHQpe2xldCBlPXQ7Y29uc3Qgbj1PYmplY3Qua2V5cyh0aGlzLml0ZW1DYWNoZXMpO2ZvcihsZXQgdD0wO3Q8bi5sZW5ndGg7dCsrKXtjb25zdCBpPU51bWJlcihuW3RdKSxyPXRoaXMuaXRlbUNhY2hlc1tpXTtpZihlPD1pKXJldHVybntjYWNoZTp0aGlzLHNjYWxlZEluZGV4OmV9O2lmKGU8PWkrci5lZmZlY3RpdmVTaXplKXJldHVybiByLmdldENhY2hlQW5kSW5kZXgoZS1pLTEpO2UtPXIuZWZmZWN0aXZlU2l6ZX1yZXR1cm57Y2FjaGU6dGhpcyxzY2FsZWRJbmRleDplfX19LGoxdD10PT5jbGFzcyBleHRlbmRzIHR7c3RhdGljIGdldCBwcm9wZXJ0aWVzKCl7cmV0dXJue3BhZ2VTaXplOnt0eXBlOk51bWJlcix2YWx1ZTo1MCxvYnNlcnZlcjoiX3BhZ2VTaXplQ2hhbmdlZCJ9LGRhdGFQcm92aWRlcjp7dHlwZTpPYmplY3Qsbm90aWZ5OiEwLG9ic2VydmVyOiJfZGF0YVByb3ZpZGVyQ2hhbmdlZCJ9LGxvYWRpbmc6e3R5cGU6Qm9vbGVhbixub3RpZnk6ITAscmVhZE9ubHk6ITAscmVmbGVjdFRvQXR0cmlidXRlOiEwfSxfY2FjaGU6e3R5cGU6T2JqZWN0LHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBVMXQodGhpcyl9fSxpdGVtSWRQYXRoOnt0eXBlOlN0cmluZyx2YWx1ZTpudWxsfSxleHBhbmRlZEl0ZW1zOnt0eXBlOk9iamVjdCxub3RpZnk6ITAsdmFsdWU6KCk9PltdfX19c3RhdGljIGdldCBvYnNlcnZlcnMoKXtyZXR1cm5bIl9zaXplQ2hhbmdlZChzaXplKSIsIl9pdGVtSWRQYXRoQ2hhbmdlZChpdGVtSWRQYXRoKSIsIl9leHBhbmRlZEl0ZW1zQ2hhbmdlZChleHBhbmRlZEl0ZW1zLiopIl19X3NpemVDaGFuZ2VkKHQpe2NvbnN0IGU9dC10aGlzLl9jYWNoZS5zaXplO3RoaXMuX2NhY2hlLnNpemUrPWUsdGhpcy5fY2FjaGUuZWZmZWN0aXZlU2l6ZSs9ZSx0aGlzLl9lZmZlY3RpdmVTaXplPXRoaXMuX2NhY2hlLmVmZmVjdGl2ZVNpemUsdGhpcy5faW5jcmVhc2VQb29sSWZOZWVkZWQoMCksdGhpcy5fZGVib3VuY2VJbmNyZWFzZVBvb2wmJnRoaXMuX2RlYm91bmNlSW5jcmVhc2VQb29sLmZsdXNoKCl9X2dldEl0ZW0odCxlKXtpZih0Pj10aGlzLl9lZmZlY3RpdmVTaXplKXJldHVybjtlLmluZGV4PXQ7Y29uc3R7Y2FjaGU6bixzY2FsZWRJbmRleDppfT10aGlzLl9jYWNoZS5nZXRDYWNoZUFuZEluZGV4KHQpLHI9bi5pdGVtc1tpXTtyPyh0aGlzLl90b2dnbGVBdHRyaWJ1dGUoImxvYWRpbmciLCExLGUpLHRoaXMuX3VwZGF0ZUl0ZW0oZSxyKSx0aGlzLl9pc0V4cGFuZGVkKHIpJiZuLmVuc3VyZVN1YkNhY2hlRm9yU2NhbGVkSW5kZXgoaSkpOih0aGlzLl90b2dnbGVBdHRyaWJ1dGUoImxvYWRpbmciLCEwLGUpLHRoaXMuX2xvYWRQYWdlKHRoaXMuX2dldFBhZ2VGb3JJbmRleChpKSxuKSl9X2V4cGFuZGVkSW5zdGFuY2VDaGFuZ2VkQ2FsbGJhY2sodCxlKXt2b2lkIDAhPT10Lml0ZW0mJihlP3RoaXMuZXhwYW5kSXRlbSh0Lml0ZW0pOnRoaXMuY29sbGFwc2VJdGVtKHQuaXRlbSkpfWdldEl0ZW1JZCh0KXtyZXR1cm4gdGhpcy5pdGVtSWRQYXRoP3RoaXMuZ2V0KHRoaXMuaXRlbUlkUGF0aCx0KTp0fV9pc0V4cGFuZGVkKHQpe3JldHVybiB0aGlzLl9fZXhwYW5kZWRLZXlzLmhhcyh0aGlzLmdldEl0ZW1JZCh0KSl9X2V4cGFuZGVkSXRlbXNDaGFuZ2VkKCl7dGhpcy5fX2NhY2hlRXhwYW5kZWRLZXlzKCksdGhpcy5fY2FjaGUudXBkYXRlU2l6ZSgpLHRoaXMuX2VmZmVjdGl2ZVNpemU9dGhpcy5fY2FjaGUuZWZmZWN0aXZlU2l6ZSx0aGlzLl9hc3NpZ25Nb2RlbHMoKX1faXRlbUlkUGF0aENoYW5nZWQoKXt0aGlzLl9fY2FjaGVFeHBhbmRlZEtleXMoKX1fX2NhY2hlRXhwYW5kZWRLZXlzKCl7dGhpcy5leHBhbmRlZEl0ZW1zJiYodGhpcy5fX2V4cGFuZGVkS2V5cz1uZXcgU2V0LHRoaXMuZXhwYW5kZWRJdGVtcy5mb3JFYWNoKCh0PT57dGhpcy5fX2V4cGFuZGVkS2V5cy5hZGQodGhpcy5nZXRJdGVtSWQodCkpfSkpKX1leHBhbmRJdGVtKHQpe3RoaXMuX2lzRXhwYW5kZWQodCl8fCh0aGlzLmV4cGFuZGVkSXRlbXM9Wy4uLnRoaXMuZXhwYW5kZWRJdGVtcyx0XSl9Y29sbGFwc2VJdGVtKHQpe3RoaXMuX2lzRXhwYW5kZWQodCkmJih0aGlzLmV4cGFuZGVkSXRlbXM9dGhpcy5leHBhbmRlZEl0ZW1zLmZpbHRlcigoZT0+IXRoaXMuX2l0ZW1zRXF1YWwoZSx0KSkpKX1fZ2V0SW5kZXhMZXZlbCh0KXtsZXR7Y2FjaGU6ZX09dGhpcy5fY2FjaGUuZ2V0Q2FjaGVBbmRJbmRleCh0KSxuPTA7Zm9yKDtlLnBhcmVudENhY2hlOyllPWUucGFyZW50Q2FjaGUsbisrO3JldHVybiBufV9jYW5Qb3B1bGF0ZSgpe3JldHVybiBCb29sZWFuKHRoaXMuX2hhc0RhdGEmJnRoaXMuX2NvbHVtblRyZWUpfV9sb2FkUGFnZSh0LGUpe2lmKCFlLnBlbmRpbmdSZXF1ZXN0c1t0XSYmdGhpcy5kYXRhUHJvdmlkZXIpe3RoaXMuX3NldExvYWRpbmcoITApLGUucGVuZGluZ1JlcXVlc3RzW3RdPSEwO2NvbnN0IG49e3BhZ2U6dCxwYWdlU2l6ZTp0aGlzLnBhZ2VTaXplLHNvcnRPcmRlcnM6dGhpcy5fbWFwU29ydGVycygpLGZpbHRlcnM6dGhpcy5fbWFwRmlsdGVycygpLHBhcmVudEl0ZW06ZS5wYXJlbnRJdGVtfTt0aGlzLl9kZWJvdW5jZUluY3JlYXNlUG9vbCYmdGhpcy5fZGVib3VuY2VJbmNyZWFzZVBvb2wuZmx1c2goKSx0aGlzLmRhdGFQcm92aWRlcihuLCgoaSxyKT0+e3ZvaWQgMCE9PXI/ZS5zaXplPXI6bi5wYXJlbnRJdGVtJiYoZS5zaXplPWkubGVuZ3RoKTtjb25zdCBvPUFycmF5LmZyb20odGhpcy4kLml0ZW1zLmNoaWxkcmVuKS5tYXAoKHQ9PnQuX2l0ZW0pKTtpLmZvckVhY2goKChuLGkpPT57Y29uc3Qgcj10KnRoaXMucGFnZVNpemUraTtlLml0ZW1zW3JdPW4sdGhpcy5faXNFeHBhbmRlZChuKSYmby5pbmRleE9mKG4pPi0xJiZlLmVuc3VyZVN1YkNhY2hlRm9yU2NhbGVkSW5kZXgocil9KSksdGhpcy5faGFzRGF0YT0hMCxkZWxldGUgZS5wZW5kaW5nUmVxdWVzdHNbdF0sdGhpcy5fZGVib3VuY2VyQXBwbHlDYWNoZWREYXRhPU5uLmRlYm91bmNlKHRoaXMuX2RlYm91bmNlckFwcGx5Q2FjaGVkRGF0YSxndC5hZnRlcigwKSwoKCk9Pnt0aGlzLl9zZXRMb2FkaW5nKCExKSx0aGlzLl9jYWNoZS51cGRhdGVTaXplKCksdGhpcy5fZWZmZWN0aXZlU2l6ZT10aGlzLl9jYWNoZS5lZmZlY3RpdmVTaXplLEFycmF5LmZyb20odGhpcy4kLml0ZW1zLmNoaWxkcmVuKS5maWx0ZXIoKHQ9PiF0LmhpZGRlbikpLmZvckVhY2goKHQ9Pnt0aGlzLl9jYWNoZS5nZXRJdGVtRm9ySW5kZXgodC5pbmRleCkmJnRoaXMuX2dldEl0ZW0odC5pbmRleCx0KX0pKSx0aGlzLl9pbmNyZWFzZVBvb2xJZk5lZWRlZCgwKSx0aGlzLl9fc2Nyb2xsVG9QZW5kaW5nSW5kZXgoKX0pKSx0aGlzLl9jYWNoZS5pc0xvYWRpbmcoKXx8dGhpcy5fZGVib3VuY2VyQXBwbHlDYWNoZWREYXRhLmZsdXNoKCksdGhpcy5fX2l0ZW1zUmVjZWl2ZWQoKX0pKX19X2dldFBhZ2VGb3JJbmRleCh0KXtyZXR1cm4gTWF0aC5mbG9vcih0L3RoaXMucGFnZVNpemUpfWNsZWFyQ2FjaGUoKXt0aGlzLl9jYWNoZT1uZXcgVTF0KHRoaXMpLEFycmF5LmZyb20odGhpcy4kLml0ZW1zLmNoaWxkcmVuKS5mb3JFYWNoKCh0PT57QXJyYXkuZnJvbSh0LmNoaWxkcmVuKS5mb3JFYWNoKCh0PT57dC5faW5zdGFuY2UmJnQuX2luc3RhbmNlLl9zZXRQZW5kaW5nUHJvcGVydHkoIml0ZW0iLHt9LCExKX0pKX0pKSx0aGlzLl9jYWNoZS5zaXplPXRoaXMuc2l6ZXx8MCx0aGlzLl9jYWNoZS51cGRhdGVTaXplKCksdGhpcy5faGFzRGF0YT0hMSx0aGlzLl9hc3NpZ25Nb2RlbHMoKSx0aGlzLl9lZmZlY3RpdmVTaXplJiZ0aGlzLl9pbml0aWFsUG9vbENyZWF0ZWR8fHRoaXMuX2xvYWRQYWdlKDAsdGhpcy5fY2FjaGUpfV9wYWdlU2l6ZUNoYW5nZWQodCxlKXt2b2lkIDAhPT1lJiZ0IT09ZSYmdGhpcy5jbGVhckNhY2hlKCl9X2NoZWNrU2l6ZSgpe3ZvaWQgMD09PXRoaXMuc2l6ZSYmMD09PXRoaXMuX2VmZmVjdGl2ZVNpemUmJmNvbnNvbGUud2FybigiVGhlIDx2YWFkaW4tZ3JpZD4gbmVlZHMgdGhlIHRvdGFsIG51bWJlciBvZiBpdGVtcyBpbiBvcmRlciB0byBkaXNwbGF5IHJvd3MuIFNldCB0aGUgdG90YWwgbnVtYmVyIG9mIGl0ZW1zIHRvIHRoZSBgc2l6ZWAgcHJvcGVydHksIG9yIHByb3ZpZGUgdGhlIHRvdGFsIG51bWJlciBvZiBpdGVtcyBpbiB0aGUgc2Vjb25kIGFyZ3VtZW50IG9mIHRoZSBgZGF0YVByb3ZpZGVyYOKAmXMgYGNhbGxiYWNrYCBjYWxsLiIpfV9kYXRhUHJvdmlkZXJDaGFuZ2VkKHQsZSl7dm9pZCAwIT09ZSYmdGhpcy5jbGVhckNhY2hlKCksdCYmdGhpcy5pdGVtcyYmdGhpcy5pdGVtcy5sZW5ndGgmJnRoaXMuX3Njcm9sbFRvSW5kZXgodGhpcy5fZmlyc3RWaXNpYmxlSW5kZXgpLHRoaXMuX2Vuc3VyZUZpcnN0UGFnZUxvYWRlZCgpLHRoaXMuX2RlYm91bmNlckNoZWNrU2l6ZT1Obi5kZWJvdW5jZSh0aGlzLl9kZWJvdW5jZXJDaGVja1NpemUsZ3QuYWZ0ZXIoMmUzKSx0aGlzLl9jaGVja1NpemUuYmluZCh0aGlzKSksdGhpcy5fc2Nyb2xsSGFuZGxlcigpfV9lbnN1cmVGaXJzdFBhZ2VMb2FkZWQoKXt0aGlzLl9oYXNEYXRhfHx0aGlzLl9sb2FkUGFnZSgwLHRoaXMuX2NhY2hlKX1faXRlbXNFcXVhbCh0LGUpe3JldHVybiB0aGlzLmdldEl0ZW1JZCh0KT09PXRoaXMuZ2V0SXRlbUlkKGUpfV9nZXRJdGVtSW5kZXhJbkFycmF5KHQsZSl7bGV0IG49LTE7cmV0dXJuIGUuZm9yRWFjaCgoKGUsaSk9Pnt0aGlzLl9pdGVtc0VxdWFsKGUsdCkmJihuPWkpfSkpLG59c2Nyb2xsVG9JbmRleCh0KXtzdXBlci5zY3JvbGxUb0luZGV4KHQpLGlzTmFOKHQpfHwhdGhpcy5fY2FjaGUuaXNMb2FkaW5nKCkmJnRoaXMuY2xpZW50SGVpZ2h0fHwodGhpcy5fX3BlbmRpbmdTY3JvbGxUb0luZGV4PXQpfV9fc2Nyb2xsVG9QZW5kaW5nSW5kZXgoKXtpZih0aGlzLl9fcGVuZGluZ1Njcm9sbFRvSW5kZXgmJnRoaXMuJC5pdGVtcy5jaGlsZHJlbi5sZW5ndGgpe2NvbnN0IHQ9dGhpcy5fX3BlbmRpbmdTY3JvbGxUb0luZGV4O2RlbGV0ZSB0aGlzLl9fcGVuZGluZ1Njcm9sbFRvSW5kZXgsdGhpcy5fZGVib3VuY2VJbmNyZWFzZVBvb2wmJnRoaXMuX2RlYm91bmNlSW5jcmVhc2VQb29sLmZsdXNoKCksdGhpcy5zY3JvbGxUb0luZGV4KHQpfX19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCAoYykgMjAyMSBWYWFkaW4gTHRkLgogICAgICogVGhpcyBwcm9ncmFtIGlzIGF2YWlsYWJsZSB1bmRlciBBcGFjaGUgTGljZW5zZSBWZXJzaW9uIDIuMCwgYXZhaWxhYmxlIGF0IGh0dHBzOi8vdmFhZGluLmNvbS9saWNlbnNlLwogICAgICovLEcxdD10PT5jbGFzcyBleHRlbmRzIHR7cmVhZHkoKXtzdXBlci5yZWFkeSgpLHRoaXMuX2FkZE5vZGVPYnNlcnZlcigpfV9oYXNDb2x1bW5Hcm91cHModCl7Zm9yKGxldCBlPTA7ZTx0Lmxlbmd0aDtlKyspaWYoInZhYWRpbi1ncmlkLWNvbHVtbi1ncm91cCI9PT10W2VdLmxvY2FsTmFtZSlyZXR1cm4hMDtyZXR1cm4hMX1fZ2V0Q2hpbGRDb2x1bW5zKHQpe3JldHVybiBHaS5nZXRGbGF0dGVuZWROb2Rlcyh0KS5maWx0ZXIodGhpcy5faXNDb2x1bW5FbGVtZW50KX1fZmxhdHRlbkNvbHVtbkdyb3Vwcyh0KXtyZXR1cm4gdC5tYXAoKHQ9PiJ2YWFkaW4tZ3JpZC1jb2x1bW4tZ3JvdXAiPT09dC5sb2NhbE5hbWU/dGhpcy5fZ2V0Q2hpbGRDb2x1bW5zKHQpOlt0XSkpLnJlZHVjZSgoKHQsZSk9PnQuY29uY2F0KGUpKSxbXSl9X2dldENvbHVtblRyZWUoKXtjb25zdCB0PVtdO2ZvcihsZXQgZT1HaS5nZXRGbGF0dGVuZWROb2Rlcyh0aGlzKS5maWx0ZXIodGhpcy5faXNDb2x1bW5FbGVtZW50KTt0LnB1c2goZSksdGhpcy5faGFzQ29sdW1uR3JvdXBzKGUpOyllPXRoaXMuX2ZsYXR0ZW5Db2x1bW5Hcm91cHMoZSk7cmV0dXJuIHR9X3VwZGF0ZUNvbHVtblRyZWUoKXtjb25zdCB0PXRoaXMuX2dldENvbHVtblRyZWUoKTt0aGlzLl9hcnJheUVxdWFscyh0LHRoaXMuX2NvbHVtblRyZWUpfHwodGhpcy5fY29sdW1uVHJlZT10KX1fYWRkTm9kZU9ic2VydmVyKCl7dGhpcy5fb2JzZXJ2ZXI9bmV3IEdpKHRoaXMsKHQ9Pntjb25zdCBlPXQuYWRkZWROb2Rlcy5maWx0ZXIoKHQ9PiJ0ZW1wbGF0ZSI9PT10LmxvY2FsTmFtZSYmdC5jbGFzc0xpc3QuY29udGFpbnMoInJvdy1kZXRhaWxzIikpKVswXTtlJiZ0aGlzLl9yb3dEZXRhaWxzVGVtcGxhdGUhPT1lJiYodGhpcy5fcm93RGV0YWlsc1RlbXBsYXRlPWUpO2NvbnN0IG49dD0+dC5maWx0ZXIodGhpcy5faXNDb2x1bW5FbGVtZW50KS5sZW5ndGg+MDtpZihuKHQuYWRkZWROb2Rlcyl8fG4odC5yZW1vdmVkTm9kZXMpKXtjb25zdCBlPXQucmVtb3ZlZE5vZGVzLmZsYXRNYXAoKHQ9PnQuX2FsbENlbGxzKSksbj10PT5lLmZpbHRlcigoZT0+ZS5fY29udGVudC5jb250YWlucyh0KSkpLmxlbmd0aDt0aGlzLl9fcmVtb3ZlU29ydGVycyh0aGlzLl9zb3J0ZXJzLmZpbHRlcihuKSksdGhpcy5fX3JlbW92ZUZpbHRlcnModGhpcy5fZmlsdGVycy5maWx0ZXIobikpLHRoaXMuX3VwZGF0ZUNvbHVtblRyZWUoKX10aGlzLl9kZWJvdW5jZXJDaGVja0ltcG9ydHM9Tm4uZGVib3VuY2UodGhpcy5fZGVib3VuY2VyQ2hlY2tJbXBvcnRzLGd0LmFmdGVyKDJlMyksdGhpcy5fY2hlY2tJbXBvcnRzLmJpbmQodGhpcykpLHRoaXMuX2Vuc3VyZUZpcnN0UGFnZUxvYWRlZCgpfSkpfV9hcnJheUVxdWFscyh0LGUpe2lmKCF0fHwhZXx8dC5sZW5ndGghPWUubGVuZ3RoKXJldHVybiExO2ZvcihsZXQgbj0wLGk9dC5sZW5ndGg7bjxpO24rKylpZih0W25daW5zdGFuY2VvZiBBcnJheSYmZVtuXWluc3RhbmNlb2YgQXJyYXkpe2lmKCF0aGlzLl9hcnJheUVxdWFscyh0W25dLGVbbl0pKXJldHVybiExfWVsc2UgaWYodFtuXSE9ZVtuXSlyZXR1cm4hMTtyZXR1cm4hMH1fY2hlY2tJbXBvcnRzKCl7WyJ2YWFkaW4tZ3JpZC1jb2x1bW4tZ3JvdXAiLCJ2YWFkaW4tZ3JpZC1maWx0ZXIiLCJ2YWFkaW4tZ3JpZC1maWx0ZXItY29sdW1uIiwidmFhZGluLWdyaWQtdHJlZS10b2dnbGUiLCJ2YWFkaW4tZ3JpZC1zZWxlY3Rpb24tY29sdW1uIiwidmFhZGluLWdyaWQtc29ydC1jb2x1bW4iLCJ2YWFkaW4tZ3JpZC1zb3J0ZXIiXS5mb3JFYWNoKCh0PT57Y29uc3QgZT10aGlzLnF1ZXJ5U2VsZWN0b3IodCk7IWV8fGUgaW5zdGFuY2VvZiB3ZXx8Y29uc29sZS53YXJuKGBNYWtlIHN1cmUgeW91IGhhdmUgaW1wb3J0ZWQgdGhlIHJlcXVpcmVkIG1vZHVsZSBmb3IgPCR7dH0+IGVsZW1lbnQuYCl9KSl9X3VwZGF0ZUZpcnN0QW5kTGFzdENvbHVtbigpe0FycmF5LmZyb20odGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3JBbGwoInRyIikpLmZvckVhY2goKHQ9PnRoaXMuX3VwZGF0ZUZpcnN0QW5kTGFzdENvbHVtbkZvclJvdyh0KSkpfV91cGRhdGVGaXJzdEFuZExhc3RDb2x1bW5Gb3JSb3codCl7QXJyYXkuZnJvbSh0LnF1ZXJ5U2VsZWN0b3JBbGwoJ1twYXJ0fj0iY2VsbCJdOm5vdChbcGFydH49ImRldGFpbHMtY2VsbCJdKScpKS5zb3J0KCgodCxlKT0+dC5fY29sdW1uLl9vcmRlci1lLl9jb2x1bW4uX29yZGVyKSkuZm9yRWFjaCgoKHQsZSxuKT0+e3RoaXMuX3RvZ2dsZUF0dHJpYnV0ZSgiZmlyc3QtY29sdW1uIiwwPT09ZSx0KSx0aGlzLl90b2dnbGVBdHRyaWJ1dGUoImxhc3QtY29sdW1uIixlPT09bi5sZW5ndGgtMSx0KX0pKX1faXNDb2x1bW5FbGVtZW50KHQpe3JldHVybiB0Lm5vZGVUeXBlPT09Tm9kZS5FTEVNRU5UX05PREUmJi9cYmNvbHVtblxiLy50ZXN0KHQubG9jYWxOYW1lKX19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCAoYykgMjAyMSBWYWFkaW4gTHRkLgogICAgICogVGhpcyBwcm9ncmFtIGlzIGF2YWlsYWJsZSB1bmRlciBBcGFjaGUgTGljZW5zZSBWZXJzaW9uIDIuMCwgYXZhaWxhYmxlIGF0IGh0dHBzOi8vdmFhZGluLmNvbS9saWNlbnNlLwogICAgICovLFcxdD10PT5jbGFzcyBleHRlbmRzIHR7Z2V0RXZlbnRDb250ZXh0KHQpe2NvbnN0IGU9e30sbj10LmNvbXBvc2VkUGF0aCgpLGk9bltuLmluZGV4T2YodGhpcy4kLnRhYmxlKS0zXTtyZXR1cm4gaT8oZS5zZWN0aW9uPVsiYm9keSIsImhlYWRlciIsImZvb3RlciIsImRldGFpbHMiXS5maWx0ZXIoKHQ9PmkuZ2V0QXR0cmlidXRlKCJwYXJ0IikuaW5kZXhPZih0KT4tMSkpWzBdLGkuX2NvbHVtbiYmKGUuY29sdW1uPWkuX2NvbHVtbiksImJvZHkiIT09ZS5zZWN0aW9uJiYiZGV0YWlscyIhPT1lLnNlY3Rpb258fE9iamVjdC5hc3NpZ24oZSx0aGlzLl9fZ2V0Um93TW9kZWwoaS5wYXJlbnRFbGVtZW50KSksZSk6ZX19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCAoYykgMjAyMSBWYWFkaW4gTHRkLgogICAgICogVGhpcyBwcm9ncmFtIGlzIGF2YWlsYWJsZSB1bmRlciBBcGFjaGUgTGljZW5zZSBWZXJzaW9uIDIuMCwgYXZhaWxhYmxlIGF0IGh0dHBzOi8vdmFhZGluLmNvbS9saWNlbnNlLwogICAgICovLHExdD10PT5jbGFzcyBleHRlbmRzIHR7c3RhdGljIGdldCBwcm9wZXJ0aWVzKCl7cmV0dXJue19maWx0ZXJzOnt0eXBlOkFycmF5LHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuW119fX19cmVhZHkoKXtzdXBlci5yZWFkeSgpLHRoaXMuYWRkRXZlbnRMaXN0ZW5lcigiZmlsdGVyLWNoYW5nZWQiLHRoaXMuX2ZpbHRlckNoYW5nZWQuYmluZCh0aGlzKSl9X2ZpbHRlckNoYW5nZWQodCl7dC5zdG9wUHJvcGFnYXRpb24oKSx0aGlzLl9fYWRkRmlsdGVyKHQudGFyZ2V0KSx0aGlzLl9fYXBwbHlGaWx0ZXJzKCl9X19yZW1vdmVGaWx0ZXJzKHQpezAhPXQubGVuZ3RoJiYodGhpcy5fZmlsdGVycz10aGlzLl9maWx0ZXJzLmZpbHRlcigoZT0+dC5pbmRleE9mKGUpPDApKSx0aGlzLl9fYXBwbHlGaWx0ZXJzKCkpfV9fYWRkRmlsdGVyKHQpey0xPT09dGhpcy5fZmlsdGVycy5pbmRleE9mKHQpJiZ0aGlzLl9maWx0ZXJzLnB1c2godCl9X19hcHBseUZpbHRlcnMoKXt0aGlzLmRhdGFQcm92aWRlciYmdGhpcy5pc0F0dGFjaGVkJiZ0aGlzLmNsZWFyQ2FjaGUoKX1fbWFwRmlsdGVycygpe3JldHVybiB0aGlzLl9maWx0ZXJzLm1hcCgodD0+KHtwYXRoOnQucGF0aCx2YWx1ZTp0LnZhbHVlfSkpKX19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCAoYykgMjAyMSBWYWFkaW4gTHRkLgogICAgICogVGhpcyBwcm9ncmFtIGlzIGF2YWlsYWJsZSB1bmRlciBBcGFjaGUgTGljZW5zZSBWZXJzaW9uIDIuMCwgYXZhaWxhYmxlIGF0IGh0dHBzOi8vdmFhZGluLmNvbS9saWNlbnNlLwogICAgICovO2NsYXNzIFkxdCBleHRlbmRzIHdle3N0YXRpYyBnZXQgaXMoKXtyZXR1cm4idmFhZGluLWdyaWQtdGVtcGxhdGl6ZXIifXN0YXRpYyBnZXQgcHJvcGVydGllcygpe3JldHVybntkYXRhSG9zdDpPYmplY3QsdGVtcGxhdGU6T2JqZWN0LF90ZW1wbGF0ZUluc3RhbmNlczp7dHlwZTpBcnJheSx2YWx1ZTpmdW5jdGlvbigpe3JldHVybltdfX0sX3BhcmVudFBhdGhWYWx1ZXM6e3ZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJue319fSxfZ3JpZDpPYmplY3R9fXN0YXRpYyBnZXQgb2JzZXJ2ZXJzKCl7cmV0dXJuWyJfdGVtcGxhdGVJbnN0YW5jZXNDaGFuZ2VkKF90ZW1wbGF0ZUluc3RhbmNlcy4qLCBfcGFyZW50UGF0aFZhbHVlcy4qKSJdfWNvbnN0cnVjdG9yKCl7c3VwZXIoKSx0aGlzLl9pbnN0YW5jZVByb3BzPXtkZXRhaWxzT3BlbmVkOiEwLGluZGV4OiEwLGl0ZW06ITAsc2VsZWN0ZWQ6ITAsZXhwYW5kZWQ6ITAsbGV2ZWw6ITB9fWNyZWF0ZUluc3RhbmNlKCl7dGhpcy5fZW5zdXJlVGVtcGxhdGl6ZWQoKTtjb25zdCB0PW5ldyB0aGlzLl9UZW1wbGF0ZUNsYXNzKHt9KTtyZXR1cm4gdGhpcy5hZGRJbnN0YW5jZSh0KSx0fWFkZEluc3RhbmNlKHQpey0xPT09dGhpcy5fdGVtcGxhdGVJbnN0YW5jZXMuaW5kZXhPZih0KSYmKHRoaXMuX3RlbXBsYXRlSW5zdGFuY2VzLnB1c2godCkscmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgoKT0+dGhpcy5ub3RpZnlQYXRoKCJfdGVtcGxhdGVJbnN0YW5jZXMuKiIsdGhpcy5fdGVtcGxhdGVJbnN0YW5jZXMpKSkpfXJlbW92ZUluc3RhbmNlKHQpe2NvbnN0IGU9dGhpcy5fdGVtcGxhdGVJbnN0YW5jZXMuaW5kZXhPZih0KTt0aGlzLnNwbGljZSgiX3RlbXBsYXRlSW5zdGFuY2VzIixlLDEpfV9lbnN1cmVUZW1wbGF0aXplZCgpe3RoaXMuX1RlbXBsYXRlQ2xhc3N8fCh0aGlzLl9UZW1wbGF0ZUNsYXNzPWFvKHRoaXMudGVtcGxhdGUsdGhpcyx7aW5zdGFuY2VQcm9wczp0aGlzLl9pbnN0YW5jZVByb3BzLHBhcmVudE1vZGVsOiEwLGZvcndhcmRIb3N0UHJvcDpmdW5jdGlvbih0LGUpe3RoaXMuX2ZvcndhcmRQYXJlbnRQcm9wKHQsZSksdGhpcy5fdGVtcGxhdGVJbnN0YW5jZXMmJnRoaXMuX3RlbXBsYXRlSW5zdGFuY2VzLmZvckVhY2goKG49Pm4ubm90aWZ5UGF0aCh0LGUpKSl9LG5vdGlmeUluc3RhbmNlUHJvcDpmdW5jdGlvbih0LGUsbil7aWYoImluZGV4Ij09PWV8fCJpdGVtIj09PWUpcmV0dXJuO2NvbnN0IGk9YF9fJHtlfV9fYDtpZih0W2ldPT09bilyZXR1cm47dFtpXT1uO2NvbnN0IHI9QXJyYXkuZnJvbSh0aGlzLl9ncmlkLiQuaXRlbXMuY2hpbGRyZW4pLmZpbHRlcigoZT0+dGhpcy5fZ3JpZC5faXRlbXNFcXVhbChlLl9pdGVtLHQuaXRlbSkpKVswXTtyJiZBcnJheS5mcm9tKHIuY2hpbGRyZW4pLmZvckVhY2goKHQ9Pnt0Ll9pbnN0YW5jZSYmKHQuX2luc3RhbmNlW2ldPW4sdC5faW5zdGFuY2Uubm90aWZ5UGF0aChlLG4pKX0pKTtjb25zdCBvPSJpdGVtLiI7aWYoQXJyYXkuaXNBcnJheSh0aGlzLl9ncmlkLml0ZW1zKSYmMD09PWUuaW5kZXhPZihvKSl7Y29uc3QgaT10aGlzLl9ncmlkLml0ZW1zLmluZGV4T2YodC5pdGVtKSxyPWUuc2xpY2Uoby5sZW5ndGgpO3RoaXMuX2dyaWQubm90aWZ5UGF0aChgaXRlbXMuJHtpfS4ke3J9YCxuKX1jb25zdCBhPWBfJHtlfUluc3RhbmNlQ2hhbmdlZENhbGxiYWNrYDt0aGlzLl9ncmlkJiZ0aGlzLl9ncmlkW2FdJiZ0aGlzLl9ncmlkW2FdKHQsbil9fSkpfV9mb3J3YXJkUGFyZW50UHJvcCh0LGUpe3RoaXMuX3BhcmVudFBhdGhWYWx1ZXNbdF09ZSx0aGlzLl90ZW1wbGF0ZUluc3RhbmNlcy5mb3JFYWNoKChuPT5uLm5vdGlmeVBhdGgodCxlKSkpfV90ZW1wbGF0ZUluc3RhbmNlc0NoYW5nZWQodCl7bGV0IGUsbjtpZigiX3RlbXBsYXRlSW5zdGFuY2VzIj09PXQucGF0aCllPTAsbj10aGlzLl90ZW1wbGF0ZUluc3RhbmNlcy5sZW5ndGg7ZWxzZXtpZigiX3RlbXBsYXRlSW5zdGFuY2VzLnNwbGljZXMiIT09dC5wYXRoKXJldHVybjtlPXQudmFsdWUuaW5kZXgsbj10LnZhbHVlLmFkZGVkQ291bnR9T2JqZWN0LmtleXModGhpcy5fcGFyZW50UGF0aFZhbHVlc3x8e30pLmZvckVhY2goKHQ9Pntmb3IobGV0IGk9ZTtpPGUrbjtpKyspdGhpcy5fdGVtcGxhdGVJbnN0YW5jZXNbaV0uc2V0KHQsdGhpcy5fcGFyZW50UGF0aFZhbHVlc1t0XSl9KSl9fWN1c3RvbUVsZW1lbnRzLmRlZmluZShZMXQuaXMsWTF0KTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IChjKSAyMDIxIFZhYWRpbiBMdGQuCiAgICAgKiBUaGlzIHByb2dyYW0gaXMgYXZhaWxhYmxlIHVuZGVyIEFwYWNoZSBMaWNlbnNlIFZlcnNpb24gMi4wLCBhdmFpbGFibGUgYXQgaHR0cHM6Ly92YWFkaW4uY29tL2xpY2Vuc2UvCiAgICAgKi8KY29uc3QgWDF0PXQ9PmNsYXNzIGV4dGVuZHMgdHtzdGF0aWMgZ2V0IHByb3BlcnRpZXMoKXtyZXR1cm57ZGV0YWlsc09wZW5lZEl0ZW1zOnt0eXBlOkFycmF5LHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuW119fSxfcm93RGV0YWlsc1RlbXBsYXRlOk9iamVjdCxyb3dEZXRhaWxzUmVuZGVyZXI6RnVuY3Rpb24sX2RldGFpbHNDZWxsczp7dHlwZTpBcnJheX19fXN0YXRpYyBnZXQgb2JzZXJ2ZXJzKCl7cmV0dXJuWyJfZGV0YWlsc09wZW5lZEl0ZW1zQ2hhbmdlZChkZXRhaWxzT3BlbmVkSXRlbXMuKiwgX3Jvd0RldGFpbHNUZW1wbGF0ZSwgcm93RGV0YWlsc1JlbmRlcmVyKSIsIl9yb3dEZXRhaWxzVGVtcGxhdGVPclJlbmRlcmVyQ2hhbmdlZChfcm93RGV0YWlsc1RlbXBsYXRlLCByb3dEZXRhaWxzUmVuZGVyZXIpIl19X3Jvd0RldGFpbHNUZW1wbGF0ZU9yUmVuZGVyZXJDaGFuZ2VkKHQsZSl7aWYodCYmZSl0aHJvdyBuZXcgRXJyb3IoIllvdSBzaG91bGQgb25seSB1c2UgZWl0aGVyIGEgcmVuZGVyZXIgb3IgYSB0ZW1wbGF0ZSBmb3Igcm93IGRldGFpbHMiKTtpZih0fHxlKXtpZih0JiYhdC50ZW1wbGF0aXplcil7Y29uc3QgZT1uZXcgWTF0O2UuX2dyaWQ9dGhpcyxlLmRhdGFIb3N0PXRoaXMuZGF0YUhvc3QsZS50ZW1wbGF0ZT10LHQudGVtcGxhdGl6ZXI9ZX10aGlzLl9jb2x1bW5UcmVlJiZBcnJheS5mcm9tKHRoaXMuJC5pdGVtcy5jaGlsZHJlbikuZm9yRWFjaCgodD0+e3QucXVlcnlTZWxlY3RvcigiW3BhcnR+PWRldGFpbHMtY2VsbF0iKXx8KHRoaXMuX3VwZGF0ZVJvdyh0LHRoaXMuX2NvbHVtblRyZWVbdGhpcy5fY29sdW1uVHJlZS5sZW5ndGgtMV0pLHRoaXMuX2ExMXlVcGRhdGVSb3dEZXRhaWxzT3BlbmVkKHQsITEpKSxkZWxldGUgdC5xdWVyeVNlbGVjdG9yKCJbcGFydH49ZGV0YWlscy1jZWxsXSIpLl9pbnN0YW5jZX0pKSx0aGlzLmRldGFpbHNPcGVuZWRJdGVtcy5sZW5ndGgmJihBcnJheS5mcm9tKHRoaXMuJC5pdGVtcy5jaGlsZHJlbikuZm9yRWFjaCh0aGlzLl90b2dnbGVEZXRhaWxzQ2VsbCx0aGlzKSx0aGlzLl91cGRhdGUoKSl9fV9kZXRhaWxzT3BlbmVkSXRlbXNDaGFuZ2VkKHQpeyJkZXRhaWxzT3BlbmVkSXRlbXMubGVuZ3RoIiE9PXQucGF0aCYmdC52YWx1ZSYmQXJyYXkuZnJvbSh0aGlzLiQuaXRlbXMuY2hpbGRyZW4pLmZvckVhY2goKHQ9Pnt0aGlzLl90b2dnbGVEZXRhaWxzQ2VsbCh0LHQuX2l0ZW0pLHRoaXMuX2ExMXlVcGRhdGVSb3dEZXRhaWxzT3BlbmVkKHQsdGhpcy5faXNEZXRhaWxzT3BlbmVkKHQuX2l0ZW0pKSx0aGlzLl90b2dnbGVBdHRyaWJ1dGUoImRldGFpbHMtb3BlbmVkIix0aGlzLl9pc0RldGFpbHNPcGVuZWQodC5faXRlbSksdCl9KSl9X2NvbmZpZ3VyZURldGFpbHNDZWxsKHQpe3Quc2V0QXR0cmlidXRlKCJwYXJ0IiwiY2VsbCBkZXRhaWxzLWNlbGwiKSx0aGlzLl90b2dnbGVBdHRyaWJ1dGUoImZyb3plbiIsITAsdCl9X3RvZ2dsZURldGFpbHNDZWxsKHQsZSl7Y29uc3Qgbj10LnF1ZXJ5U2VsZWN0b3IoJ1twYXJ0fj0iZGV0YWlscy1jZWxsIl0nKTtpZighbilyZXR1cm47Y29uc3QgaT0hdGhpcy5faXNEZXRhaWxzT3BlbmVkKGUpLHI9ISFuLmhpZGRlbiE9PWk7KG4uX2luc3RhbmNlfHxuLl9yZW5kZXJlcikmJm4uaGlkZGVuPT09aXx8KG4uaGlkZGVuPWksaT90LnN0eWxlLnJlbW92ZVByb3BlcnR5KCJwYWRkaW5nLWJvdHRvbSIpOih0aGlzLnJvd0RldGFpbHNSZW5kZXJlcj8obi5fcmVuZGVyZXI9dGhpcy5yb3dEZXRhaWxzUmVuZGVyZXIsbi5fcmVuZGVyZXIuY2FsbCh0aGlzLG4uX2NvbnRlbnQsdGhpcyx7aW5kZXg6dC5pbmRleCxpdGVtOmV9KSk6dGhpcy5fcm93RGV0YWlsc1RlbXBsYXRlJiYhbi5faW5zdGFuY2UmJihuLl9pbnN0YW5jZT10aGlzLl9yb3dEZXRhaWxzVGVtcGxhdGUudGVtcGxhdGl6ZXIuY3JlYXRlSW5zdGFuY2UoKSxuLl9jb250ZW50LmlubmVySFRNTD0iIixuLl9jb250ZW50LmFwcGVuZENoaWxkKG4uX2luc3RhbmNlLnJvb3QpLHRoaXMuX3VwZGF0ZUl0ZW0odCxlKSksV2koKSx0LnN0eWxlLnNldFByb3BlcnR5KCJwYWRkaW5nLWJvdHRvbSIsYCR7bi5vZmZzZXRIZWlnaHR9cHhgKSxyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCgpPT50aGlzLm5vdGlmeVJlc2l6ZSgpKSkpKSxyJiYodGhpcy5fdXBkYXRlTWV0cmljcygpLHRoaXMuX3Bvc2l0aW9uSXRlbXMoKSl9X3VwZGF0ZURldGFpbHNDZWxsSGVpZ2h0cygpe0FycmF5LmZyb20odGhpcy4kLml0ZW1zLnF1ZXJ5U2VsZWN0b3JBbGwoJ1twYXJ0fj0iZGV0YWlscy1jZWxsIl06bm90KFtoaWRkZW5dKScpKS5mb3JFYWNoKCh0PT57dC5wYXJlbnRFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCJwYWRkaW5nLWJvdHRvbSIsYCR7dC5vZmZzZXRIZWlnaHR9cHhgKX0pKX1faXNEZXRhaWxzT3BlbmVkKHQpe3JldHVybiB0aGlzLmRldGFpbHNPcGVuZWRJdGVtcyYmLTEhPT10aGlzLl9nZXRJdGVtSW5kZXhJbkFycmF5KHQsdGhpcy5kZXRhaWxzT3BlbmVkSXRlbXMpfW9wZW5JdGVtRGV0YWlscyh0KXt0aGlzLl9pc0RldGFpbHNPcGVuZWQodCl8fCh0aGlzLmRldGFpbHNPcGVuZWRJdGVtcz1bLi4udGhpcy5kZXRhaWxzT3BlbmVkSXRlbXMsdF0pfWNsb3NlSXRlbURldGFpbHModCl7dGhpcy5faXNEZXRhaWxzT3BlbmVkKHQpJiYodGhpcy5kZXRhaWxzT3BlbmVkSXRlbXM9dGhpcy5kZXRhaWxzT3BlbmVkSXRlbXMuZmlsdGVyKChlPT4hdGhpcy5faXRlbXNFcXVhbChlLHQpKSkpfV9kZXRhaWxzT3BlbmVkSW5zdGFuY2VDaGFuZ2VkQ2FsbGJhY2sodCxlKXtlP3RoaXMub3Blbkl0ZW1EZXRhaWxzKHQuaXRlbSk6dGhpcy5jbG9zZUl0ZW1EZXRhaWxzKHQuaXRlbSl9fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgKGMpIDIwMjEgVmFhZGluIEx0ZC4KICAgICAqIFRoaXMgcHJvZ3JhbSBpcyBhdmFpbGFibGUgdW5kZXIgQXBhY2hlIExpY2Vuc2UgVmVyc2lvbiAyLjAsIGF2YWlsYWJsZSBhdCBodHRwczovL3ZhYWRpbi5jb20vbGljZW5zZS8KICAgICAqLywkMXQ9NTAwLEsxdD01MDAsWjF0PXQ9PmNsYXNzIGV4dGVuZHMgdHtzdGF0aWMgZ2V0IHByb3BlcnRpZXMoKXtyZXR1cm57X2Zyb3plbkNlbGxzOnt0eXBlOkFycmF5LHZhbHVlOigpPT5bXX0sX3Jvd1dpdGhGb2N1c2VkRWxlbWVudDpFbGVtZW50LF9kZWx0YVlBY2M6e3R5cGU6TnVtYmVyLHZhbHVlOjB9LF91c2VTdGlja3k6e3R5cGU6Qm9vbGVhbix2YWx1ZTp3aW5kb3cuQ1NTJiZ3aW5kb3cuQ1NTLnN1cHBvcnRzJiYod2luZG93LkNTUy5zdXBwb3J0cygicG9zaXRpb24iLCJzdGlja3kiKXx8d2luZG93LkNTUy5zdXBwb3J0cygicG9zaXRpb24iLCItd2Via2l0LXN0aWNreSIpKX19fXN0YXRpYyBnZXQgb2JzZXJ2ZXJzKCl7cmV0dXJuWyJfc2Nyb2xsVmlld3BvcnRIZWlnaHRVcGRhdGVkKF92aWV3cG9ydEhlaWdodCkiXX1zZXQgX3Njcm9sbFRvcCh0KXt0aGlzLiQudGFibGUuc2Nyb2xsVG9wPXR9Z2V0IF9zY3JvbGxUb3AoKXtyZXR1cm4gdGhpcy4kLnRhYmxlLnNjcm9sbFRvcH1jb25zdHJ1Y3Rvcigpe3N1cGVyKCksdGhpcy5fc2Nyb2xsTGluZUhlaWdodD10aGlzLl9nZXRTY3JvbGxMaW5lSGVpZ2h0KCl9X2dldFNjcm9sbExpbmVIZWlnaHQoKXtjb25zdCB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3Quc3R5bGUuZm9udFNpemU9ImluaXRpYWwiLHQuc3R5bGUuZGlzcGxheT0ibm9uZSIsZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0KTtjb25zdCBlPXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHQpLmZvbnRTaXplO3JldHVybiBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKHQpLGU/d2luZG93LnBhcnNlSW50KGUpOnZvaWQgMH1fc2Nyb2xsVmlld3BvcnRIZWlnaHRVcGRhdGVkKHQpe3RoaXMuX3Njcm9sbFBhZ2VIZWlnaHQ9dC10aGlzLiQuaGVhZGVyLmNsaWVudEhlaWdodC10aGlzLiQuZm9vdGVyLmNsaWVudEhlaWdodC10aGlzLl9zY3JvbGxMaW5lSGVpZ2h0fXJlYWR5KCl7c3VwZXIucmVhZHkoKSx0aGlzLiQub3V0ZXJzY3JvbGxlcj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSx0aGlzLnNjcm9sbFRhcmdldD10aGlzLiQudGFibGUsdGhpcy5hZGRFdmVudExpc3RlbmVyKCJ3aGVlbCIsdGhpcy5fb25XaGVlbCksdGhpcy4kLml0ZW1zLmFkZEV2ZW50TGlzdGVuZXIoImZvY3VzaW4iLCh0PT57Y29uc3QgZT10LmNvbXBvc2VkUGF0aCgpLmluZGV4T2YodGhpcy4kLml0ZW1zKTt0aGlzLl9yb3dXaXRoRm9jdXNlZEVsZW1lbnQ9dC5jb21wb3NlZFBhdGgoKVtlLTFdfSkpLHRoaXMuJC5pdGVtcy5hZGRFdmVudExpc3RlbmVyKCJmb2N1c291dCIsKCgpPT50aGlzLl9yb3dXaXRoRm9jdXNlZEVsZW1lbnQ9dm9pZCAwKSksdGhpcy5zY3JvbGxUYXJnZXQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIiwoKCk9PnRoaXMuX19tb3VzZURvd249ITApKSx0aGlzLnNjcm9sbFRhcmdldC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZXVwIiwoKCk9Pnt0aGlzLl9fbW91c2VEb3duPSExLHRoaXMuX19wZW5kaW5nUmVvcmRlciYmKHRoaXMuX19wZW5kaW5nUmVvcmRlcj0hMSxzZXRUaW1lb3V0KCgoKT0+dGhpcy5fcmVvcmRlclJvd3MoKSksJDF0KSl9KSl9c2Nyb2xsVG9JbmRleCh0KXt0aGlzLl9hY2Nlc3NJcm9uTGlzdEFQSSgoKCk9PnN1cGVyLnNjcm9sbFRvSW5kZXgodCkpKX1fb25XaGVlbCh0KXtpZih0LmN0cmxLZXl8fHRoaXMuX2hhc1Njcm9sbGVkQW5jZXN0b3IodC50YXJnZXQsdC5kZWx0YVgsdC5kZWx0YVkpKXJldHVybjtjb25zdCBlPXRoaXMuJC50YWJsZTtsZXQgbj10LmRlbHRhWTtpZih0LmRlbHRhTW9kZT09PVdoZWVsRXZlbnQuRE9NX0RFTFRBX0xJTkU/bio9dGhpcy5fc2Nyb2xsTGluZUhlaWdodDp0LmRlbHRhTW9kZT09PVdoZWVsRXZlbnQuRE9NX0RFTFRBX1BBR0UmJihuKj10aGlzLl9zY3JvbGxQYWdlSGVpZ2h0KSx0aGlzLl93aGVlbEFuaW1hdGlvbkZyYW1lKXJldHVybiB0aGlzLl9kZWx0YVlBY2MrPW4sdm9pZCB0LnByZXZlbnREZWZhdWx0KCk7bis9dGhpcy5fZGVsdGFZQWNjLHRoaXMuX2RlbHRhWUFjYz0wLHRoaXMuX3doZWVsQW5pbWF0aW9uRnJhbWU9ITAsdGhpcy5fZGVib3VuY2VyV2hlZWxBbmltYXRpb25GcmFtZT1Obi5kZWJvdW5jZSh0aGlzLl9kZWJvdW5jZXJXaGVlbEFuaW1hdGlvbkZyYW1lLF90LCgoKT0+dGhpcy5fd2hlZWxBbmltYXRpb25GcmFtZT0hMSkpO2NvbnN0IGk9TWF0aC5hYnModC5kZWx0YVgpK01hdGguYWJzKG4pO3RoaXMuX2NhblNjcm9sbChlLHQuZGVsdGFYLG4pPyh0LnByZXZlbnREZWZhdWx0KCksZS5zY3JvbGxUb3ArPW4sZS5zY3JvbGxMZWZ0Kz10LmRlbHRhWCx0aGlzLl9zY3JvbGxIYW5kbGVyKCksdGhpcy5faGFzUmVzaWR1YWxNb21lbnR1bT0hMCx0aGlzLl9pZ25vcmVOZXdXaGVlbD0hMCx0aGlzLl9kZWJvdW5jZXJJZ25vcmVOZXdXaGVlbD1Obi5kZWJvdW5jZSh0aGlzLl9kZWJvdW5jZXJJZ25vcmVOZXdXaGVlbCxndC5hZnRlcihLMXQpLCgoKT0+dGhpcy5faWdub3JlTmV3V2hlZWw9ITEpKSk6dGhpcy5faGFzUmVzaWR1YWxNb21lbnR1bSYmaTw9dGhpcy5fcHJldmlvdXNNb21lbnR1bXx8dGhpcy5faWdub3JlTmV3V2hlZWw/dC5wcmV2ZW50RGVmYXVsdCgpOmk+dGhpcy5fcHJldmlvdXNNb21lbnR1bSYmKHRoaXMuX2hhc1Jlc2lkdWFsTW9tZW50dW09ITEpLHRoaXMuX3ByZXZpb3VzTW9tZW50dW09aX1faGFzU2Nyb2xsZWRBbmNlc3Rvcih0LGUsbil7cmV0dXJuInZhYWRpbi1ncmlkLWNlbGwtY29udGVudCIhPT10LmxvY2FsTmFtZSYmKCEoIXRoaXMuX2NhblNjcm9sbCh0LGUsbil8fC0xPT09WyJhdXRvIiwic2Nyb2xsIl0uaW5kZXhPZihnZXRDb21wdXRlZFN0eWxlKHQpLm92ZXJmbG93KSl8fCh0IT09dGhpcyYmdC5wYXJlbnRFbGVtZW50P3RoaXMuX2hhc1Njcm9sbGVkQW5jZXN0b3IodC5wYXJlbnRFbGVtZW50LGUsbik6dm9pZCAwKSl9X2NhblNjcm9sbCh0LGUsbil7cmV0dXJuIG4+MCYmdC5zY3JvbGxUb3A8dC5zY3JvbGxIZWlnaHQtdC5vZmZzZXRIZWlnaHR8fG48MCYmdC5zY3JvbGxUb3A+MHx8ZT4wJiZ0LnNjcm9sbExlZnQ8dC5zY3JvbGxXaWR0aC10Lm9mZnNldFdpZHRofHxlPDAmJnQuc2Nyb2xsTGVmdD4wfV9zY2hlZHVsZVNjcm9sbGluZygpe3RoaXMuX3Njcm9sbGluZ0ZyYW1lfHwodGhpcy5fc2Nyb2xsaW5nRnJhbWU9cmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgoKT0+dGhpcy5fdG9nZ2xlQXR0cmlidXRlKCJzY3JvbGxpbmciLCEwLHRoaXMuJC5zY3JvbGxlcikpKSksdGhpcy5fZGVib3VuY2VTY3JvbGxpbmc9Tm4uZGVib3VuY2UodGhpcy5fZGVib3VuY2VTY3JvbGxpbmcsZ3QuYWZ0ZXIoJDF0KSwoKCk9PntjYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLl9zY3JvbGxpbmdGcmFtZSksZGVsZXRlIHRoaXMuX3Njcm9sbGluZ0ZyYW1lLHRoaXMuX3RvZ2dsZUF0dHJpYnV0ZSgic2Nyb2xsaW5nIiwhMSx0aGlzLiQuc2Nyb2xsZXIpLHRoaXMuX3Jlb3JkZXJSb3dzKCl9KSl9X2FmdGVyU2Nyb2xsKCl7dGhpcy5fdHJhbnNsYXRlU3RhdGlvbmFyeUVsZW1lbnRzKCksdGhpcy5oYXNBdHRyaWJ1dGUoInJlb3JkZXJpbmciKXx8dGhpcy5fc2NoZWR1bGVTY3JvbGxpbmcoKSx0aGlzLl91cGRhdGVPdmVyZmxvdygpfV91cGRhdGVPdmVyZmxvdygpe2xldCB0PSIiO2NvbnN0IGU9dGhpcy4kLnRhYmxlO2Uuc2Nyb2xsVG9wPGUuc2Nyb2xsSGVpZ2h0LWUuY2xpZW50SGVpZ2h0JiYodCs9IiBib3R0b20iKSxlLnNjcm9sbFRvcD4wJiYodCs9IiB0b3AiKSxlLnNjcm9sbExlZnQ8ZS5zY3JvbGxXaWR0aC1lLmNsaWVudFdpZHRoJiYodCs9IiByaWdodCIpLGUuc2Nyb2xsTGVmdD4wJiYodCs9IiBsZWZ0IiksdGhpcy5fZGVib3VuY2VPdmVyZmxvdz1Obi5kZWJvdW5jZSh0aGlzLl9kZWJvdW5jZU92ZXJmbG93LF90LCgoKT0+e2NvbnN0IGU9dC50cmltKCk7ZS5sZW5ndGg+MCYmdGhpcy5nZXRBdHRyaWJ1dGUoIm92ZXJmbG93IikhPT1lP3RoaXMuc2V0QXR0cmlidXRlKCJvdmVyZmxvdyIsZSk6MD09ZS5sZW5ndGgmJnRoaXMuaGFzQXR0cmlidXRlKCJvdmVyZmxvdyIpJiZ0aGlzLnJlbW92ZUF0dHJpYnV0ZSgib3ZlcmZsb3ciKX0pKX1fcmVvcmRlclJvd3MoKXtpZih0aGlzLl9fbW91c2VEb3duKXJldHVybiB2b2lkKHRoaXMuX19wZW5kaW5nUmVvcmRlcj0hMCk7Y29uc3QgdD10aGlzLiQuaXRlbXMsZT10LnF1ZXJ5U2VsZWN0b3JBbGwoInRyIik7aWYoIWUubGVuZ3RoKXJldHVybjtjb25zdCBuPXRoaXMuX3ZpcnR1YWxTdGFydCt0aGlzLl92aWR4T2Zmc2V0LGk9dGhpcy5fcm93V2l0aEZvY3VzZWRFbGVtZW50fHxBcnJheS5mcm9tKGUpLmZpbHRlcigodD0+IXQuaGlkZGVuKSlbMF07aWYoIWkpcmV0dXJuO2NvbnN0IHI9aS5pbmRleC1uLG89QXJyYXkuZnJvbShlKS5pbmRleE9mKGkpLXI7aWYobz4wKWZvcihsZXQgbj0wO248bztuKyspdC5hcHBlbmRDaGlsZChlW25dKTtlbHNlIGlmKG88MClmb3IobGV0IG49ZS5sZW5ndGgrbztuPGUubGVuZ3RoO24rKyl0Lmluc2VydEJlZm9yZShlW25dLGVbMF0pO2lmKHRoaXMuX3NhZmFyaSl7Y29uc3R7dHJhbnNmb3JtOnR9PXRoaXMuJC5oZWFkZXIuc3R5bGU7dGhpcy4kLmhlYWRlci5zdHlsZS50cmFuc2Zvcm09IiIsc2V0VGltZW91dCgoKCk9PnRoaXMuJC5oZWFkZXIuc3R5bGUudHJhbnNmb3JtPXQpKX19X2Zyb3plbkNlbGxzQ2hhbmdlZCgpe3RoaXMuX2RlYm91bmNlckNhY2hlRWxlbWVudHM9Tm4uZGVib3VuY2UodGhpcy5fZGVib3VuY2VyQ2FjaGVFbGVtZW50cyx2dCwoKCk9PntBcnJheS5mcm9tKHRoaXMuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yQWxsKCdbcGFydH49ImNlbGwiXScpKS5mb3JFYWNoKChmdW5jdGlvbih0KXt0LnN0eWxlLnRyYW5zZm9ybT0iIn0pKSx0aGlzLl9mcm96ZW5DZWxscz1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0aGlzLiQudGFibGUucXVlcnlTZWxlY3RvckFsbCgiW2Zyb3plbl0iKSksdGhpcy5fdXBkYXRlU2Nyb2xsZXJNZWFzdXJlbWVudHMoKSx0aGlzLl90cmFuc2xhdGVTdGF0aW9uYXJ5RWxlbWVudHMoKX0pKSx0aGlzLl91cGRhdGVMYXN0RnJvemVuKCl9X3VwZGF0ZVNjcm9sbGVyTWVhc3VyZW1lbnRzKCl7dGhpcy5fZnJvemVuQ2VsbHMubGVuZ3RoPjAmJnRoaXMuX19pc1JUTCYmKHRoaXMuX19zY3JvbGxlck1ldHJpY3M9e3Njcm9sbFdpZHRoOnRoaXMuJC50YWJsZS5zY3JvbGxXaWR0aCxjbGllbnRXaWR0aDp0aGlzLiQudGFibGUuY2xpZW50V2lkdGh9KX1fdXBkYXRlTGFzdEZyb3plbigpe2lmKCF0aGlzLl9jb2x1bW5UcmVlKXJldHVybjtjb25zdCB0PXRoaXMuX2NvbHVtblRyZWVbdGhpcy5fY29sdW1uVHJlZS5sZW5ndGgtMV0uc2xpY2UoMCk7dC5zb3J0KCgodCxlKT0+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/ZT0icmlnaHQiOiJlbmQiPT09dCYmKGU9ImxlZnQiKSx0aGlzLl9hbGxDZWxscy5mb3JFYWNoKChuPT57bi5fY29udGVudC5zdHlsZS50ZXh0QWxpZ249dCxnZXRDb21wdXRlZFN0eWxlKG4uX2NvbnRlbnQpLnRleHRBbGlnbiE9PXQmJihuLl9jb250ZW50LnN0eWxlLnRleHRBbGlnbj1lKX0pKX1faGlkZGVuQ2hhbmdlZCh0KXt0aGlzLnBhcmVudEVsZW1lbnQmJnRoaXMucGFyZW50RWxlbWVudC5fY29sdW1uUHJvcENoYW5nZWQmJnRoaXMucGFyZW50RWxlbWVudC5fY29sdW1uUHJvcENoYW5nZWQoImhpZGRlbiIsdCksISF0IT0hIXRoaXMuX3ByZXZpb3VzSGlkZGVuJiZ0aGlzLl9ncmlkJiYoITA9PT10JiZ0aGlzLl9hbGxDZWxscy5mb3JFYWNoKCh0PT57dC5fY29udGVudC5wYXJlbnROb2RlJiZ0Ll9jb250ZW50LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodC5fY29udGVudCl9KSksdGhpcy5fZ3JpZC5fZGVib3VuY2VySGlkZGVuQ2hhbmdlZD1Obi5kZWJvdW5jZSh0aGlzLl9ncmlkLl9kZWJvdW5jZXJIaWRkZW5DaGFuZ2VkLF90LCgoKT0+e3RoaXMuX2dyaWQmJnRoaXMuX2dyaWQuX3JlbmRlckNvbHVtblRyZWUmJnRoaXMuX2dyaWQuX3JlbmRlckNvbHVtblRyZWUodGhpcy5fZ3JpZC5fY29sdW1uVHJlZSl9KSksdGhpcy5fZ3JpZC5fdXBkYXRlTGFzdEZyb3plbiYmdGhpcy5fZ3JpZC5fdXBkYXRlTGFzdEZyb3plbigpLHRoaXMuX2dyaWQubm90aWZ5UmVzaXplJiZ0aGlzLl9ncmlkLm5vdGlmeVJlc2l6ZSgpLHRoaXMuX2dyaWQuX3Jlc2V0S2V5Ym9hcmROYXZpZ2F0aW9uJiZ0aGlzLl9ncmlkLl9yZXNldEtleWJvYXJkTmF2aWdhdGlvbigpKSx0aGlzLl9wcmV2aW91c0hpZGRlbj10fX07Y2xhc3MgZDB0IGV4dGVuZHMoaDB0KEExdCh3ZSkpKXtzdGF0aWMgZ2V0IGlzKCl7cmV0dXJuInZhYWRpbi1ncmlkLWNvbHVtbiJ9c3RhdGljIGdldCBwcm9wZXJ0aWVzKCl7cmV0dXJue3dpZHRoOnt0eXBlOlN0cmluZyx2YWx1ZToiMTAwcHgifSxmbGV4R3Jvdzp7dHlwZTpOdW1iZXIsdmFsdWU6MX0scmVuZGVyZXI6RnVuY3Rpb24scGF0aDp7dHlwZTpTdHJpbmd9LGF1dG9XaWR0aDp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxfYm9keVRlbXBsYXRlOnt0eXBlOk9iamVjdH0sX2NlbGxzOkFycmF5fX19Y3VzdG9tRWxlbWVudHMuZGVmaW5lKGQwdC5pcyxkMHQpLAovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgKGMpIDIwMjEgVmFhZGluIEx0ZC4KICAgICAqIFRoaXMgcHJvZ3JhbSBpcyBhdmFpbGFibGUgdW5kZXIgQXBhY2hlIExpY2Vuc2UgVmVyc2lvbiAyLjAsIGF2YWlsYWJsZSBhdCBodHRwczovL3ZhYWRpbi5jb20vbGljZW5zZS8KICAgICAqLwp0MXQoInZhYWRpbi1ncmlkIiwkUXRgCiAgICBAa2V5ZnJhbWVzIHZhYWRpbi1ncmlkLWFwcGVhciB7CiAgICAgIHRvIHsKICAgICAgICBvcGFjaXR5OiAxOwogICAgICB9CiAgICB9CgogICAgOmhvc3QgewogICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgYW5pbWF0aW9uOiAxbXMgdmFhZGluLWdyaWQtYXBwZWFyOwogICAgICBoZWlnaHQ6IDQwMHB4OwogICAgICBmbGV4OiAxIDEgYXV0bzsKICAgICAgYWxpZ24tc2VsZjogc3RyZXRjaDsKICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgfQoKICAgIDpob3N0KFtoaWRkZW5dKSB7CiAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKICAgIH0KCiAgICAjc2Nyb2xsZXIgewogICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApOwogICAgICB3aWR0aDogYXV0bzsKICAgICAgaGVpZ2h0OiBhdXRvOwogICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgIHRvcDogMDsKICAgICAgcmlnaHQ6IDA7CiAgICAgIGJvdHRvbTogMDsKICAgICAgbGVmdDogMDsKICAgIH0KCiAgICA6aG9zdChbaGVpZ2h0LWJ5LXJvd3NdKSB7CiAgICAgIGhlaWdodDogYXV0bzsKICAgICAgYWxpZ24tc2VsZjogZmxleC1zdGFydDsKICAgICAgZmxleC1ncm93OiAwOwogICAgICB3aWR0aDogMTAwJTsKICAgIH0KCiAgICA6aG9zdChbaGVpZ2h0LWJ5LXJvd3NdKSAjc2Nyb2xsZXIgewogICAgICB3aWR0aDogMTAwJTsKICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICB9CgogICAgI3RhYmxlIHsKICAgICAgZGlzcGxheTogZmxleDsKICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgd2lkdGg6IDEwMCU7CiAgICAgIGhlaWdodDogMTAwJTsKICAgICAgb3ZlcmZsb3c6IGF1dG87CiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgb3V0bGluZTogbm9uZTsKICAgICAgLyogV29ya2Fyb3VuZCBmb3IgYSBEZXNrdG9wIFNhZmFyaSBidWc6IG5ldyBzdGFja2luZyBjb250ZXh0IGhlcmUgcHJldmVudHMgdGhlIHNjcm9sbGJhciBmcm9tIGdldHRpbmcgaGlkZGVuICovCiAgICAgIHotaW5kZXg6IDA7CiAgICB9CgogICAgI2hlYWRlciwKICAgICNmb290ZXIgewogICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgcG9zaXRpb246IC13ZWJraXQtc3RpY2t5OwogICAgICBwb3NpdGlvbjogc3RpY2t5OwogICAgICBsZWZ0OiAwOwogICAgICBvdmVyZmxvdzogdmlzaWJsZTsKICAgICAgd2lkdGg6IDEwMCU7CiAgICAgIHotaW5kZXg6IDE7CiAgICB9CgogICAgI2hlYWRlciB7CiAgICAgIHRvcDogMDsKICAgIH0KCiAgICB0aCB7CiAgICAgIHRleHQtYWxpZ246IGluaGVyaXQ7CiAgICB9CgogICAgLyogU2FmYXJpIGRvZXNuJ3Qgd29yayB3aXRoICJpbmhlcml0IiAqLwogICAgW3NhZmFyaV0gdGggewogICAgICB0ZXh0LWFsaWduOiBpbml0aWFsOwogICAgfQoKICAgICNmb290ZXIgewogICAgICBib3R0b206IDA7CiAgICB9CgogICAgI2l0ZW1zIHsKICAgICAgZmxleC1ncm93OiAxOwogICAgICBmbGV4LXNocmluazogMDsKICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgIHBvc2l0aW9uOiAtd2Via2l0LXN0aWNreTsKICAgICAgcG9zaXRpb246IHN0aWNreTsKICAgICAgd2lkdGg6IDEwMCU7CiAgICAgIGxlZnQ6IDA7CiAgICAgIG92ZXJmbG93OiB2aXNpYmxlOwogICAgfQoKICAgIFtwYXJ0fj0ncm93J10gewogICAgICBkaXNwbGF5OiBmbGV4OwogICAgICB3aWR0aDogMTAwJTsKICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgbWFyZ2luOiAwOwogICAgfQoKICAgIFtwYXJ0fj0ncm93J11bbG9hZGluZ10gW3BhcnR+PSdib2R5LWNlbGwnXSA6OnNsb3R0ZWQodmFhZGluLWdyaWQtY2VsbC1jb250ZW50KSB7CiAgICAgIG9wYWNpdHk6IDA7CiAgICB9CgogICAgI2l0ZW1zIFtwYXJ0fj0ncm93J10gewogICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB9CgogICAgI2l0ZW1zIFtwYXJ0fj0ncm93J106ZW1wdHkgewogICAgICBoZWlnaHQ6IDFlbTsKICAgIH0KCiAgICBbcGFydH49J2NlbGwnXTpub3QoW3BhcnR+PSdkZXRhaWxzLWNlbGwnXSkgewogICAgICBmbGV4LXNocmluazogMDsKICAgICAgZmxleC1ncm93OiAxOwogICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgICBkaXNwbGF5OiBmbGV4OwogICAgICB3aWR0aDogMTAwJTsKICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICBwYWRkaW5nOiAwOwogICAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgfQoKICAgIFtwYXJ0fj0nZGV0YWlscy1jZWxsJ10gewogICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgIGJvdHRvbTogMDsKICAgICAgd2lkdGg6IDEwMCU7CiAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICAgIHBhZGRpbmc6IDA7CiAgICB9CgogICAgW3BhcnR+PSdjZWxsJ10gOjpzbG90dGVkKHZhYWRpbi1ncmlkLWNlbGwtY29udGVudCkgewogICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgd2lkdGg6IDEwMCU7CiAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwogICAgfQoKICAgIFtoaWRkZW5dIHsKICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OwogICAgfQoKICAgIFtmcm96ZW5dIHsKICAgICAgei1pbmRleDogMjsKICAgICAgd2lsbC1jaGFuZ2U6IHRyYW5zZm9ybTsKICAgIH0KCiAgICBbbm8tc2Nyb2xsYmFyc11bc2FmYXJpXSAjdGFibGUsCiAgICBbbm8tc2Nyb2xsYmFyc11bZmlyZWZveF0gI3RhYmxlIHsKICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgIH0KCiAgICAvKiBSZW9yZGVyaW5nIHN0eWxlcyAqLwogICAgOmhvc3QoW3Jlb3JkZXJpbmddKSBbcGFydH49J2NlbGwnXSA6OnNsb3R0ZWQodmFhZGluLWdyaWQtY2VsbC1jb250ZW50KSwKICAgIDpob3N0KFtyZW9yZGVyaW5nXSkgW3BhcnR+PSdyZXNpemUtaGFuZGxlJ10sCiAgICAjc2Nyb2xsZXJbbm8tY29udGVudC1wb2ludGVyLWV2ZW50c10gW3BhcnR+PSdjZWxsJ10gOjpzbG90dGVkKHZhYWRpbi1ncmlkLWNlbGwtY29udGVudCkgewogICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgIH0KCiAgICBbcGFydH49J3Jlb3JkZXItZ2hvc3QnXSB7CiAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjsKICAgICAgcG9zaXRpb246IGZpeGVkOwogICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgb3BhY2l0eTogMC41OwoKICAgICAgLyogUHJldmVudCBvdmVyZmxvd2luZyB0aGUgZ3JpZCBpbiBGaXJlZm94ICovCiAgICAgIHRvcDogMDsKICAgICAgbGVmdDogMDsKICAgIH0KCiAgICA6aG9zdChbcmVvcmRlcmluZ10pIHsKICAgICAgLW1vei11c2VyLXNlbGVjdDogbm9uZTsKICAgICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsKICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7CiAgICB9CgogICAgLyogUmVzaXppbmcgc3R5bGVzICovCiAgICBbcGFydH49J3Jlc2l6ZS1oYW5kbGUnXSB7CiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgdG9wOiAwOwogICAgICByaWdodDogMDsKICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICBjdXJzb3I6IGNvbC1yZXNpemU7CiAgICAgIHotaW5kZXg6IDE7CiAgICB9CgogICAgW3BhcnR+PSdyZXNpemUtaGFuZGxlJ106OmJlZm9yZSB7CiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgY29udGVudDogJyc7CiAgICAgIGhlaWdodDogMTAwJTsKICAgICAgd2lkdGg6IDM1cHg7CiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTsKICAgIH0KCiAgICBbbGFzdC1jb2x1bW5dIFtwYXJ0fj0ncmVzaXplLWhhbmRsZSddOjpiZWZvcmUsCiAgICBbbGFzdC1mcm96ZW5dIFtwYXJ0fj0ncmVzaXplLWhhbmRsZSddOjpiZWZvcmUgewogICAgICB3aWR0aDogMThweDsKICAgICAgdHJhbnNmb3JtOiBub25lOwogICAgICByaWdodDogMDsKICAgIH0KCiAgICAjc2Nyb2xsZXJbY29sdW1uLXJlc2l6aW5nXSB7CiAgICAgIC1tcy11c2VyLXNlbGVjdDogbm9uZTsKICAgICAgLW1vei11c2VyLXNlbGVjdDogbm9uZTsKICAgICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsKICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7CiAgICB9CgogICAgLyogU2l6ZXIgc3R5bGVzICovCiAgICAjc2l6ZXIgewogICAgICBkaXNwbGF5OiBmbGV4OwogICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjsKICAgIH0KCiAgICAjc2l6ZXIgW3BhcnR+PSdkZXRhaWxzLWNlbGwnXSB7CiAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKICAgIH0KCiAgICAjc2l6ZXIgW3BhcnR+PSdjZWxsJ11baGlkZGVuXSB7CiAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKICAgIH0KCiAgICAjc2l6ZXIgW3BhcnR+PSdjZWxsJ10gewogICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgZmxleC1zaHJpbms6IDA7CiAgICAgIGxpbmUtaGVpZ2h0OiAwOwogICAgICBoZWlnaHQ6IDAgIWltcG9ydGFudDsKICAgICAgbWluLWhlaWdodDogMCAhaW1wb3J0YW50OwogICAgICBtYXgtaGVpZ2h0OiAwICFpbXBvcnRhbnQ7CiAgICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDsKICAgICAgYm9yZGVyOiBub25lICFpbXBvcnRhbnQ7CiAgICB9CgogICAgI3NpemVyIFtwYXJ0fj0nY2VsbCddOjpiZWZvcmUgewogICAgICBjb250ZW50OiAnLSc7CiAgICB9CgogICAgI3NpemVyIFtwYXJ0fj0nY2VsbCddIDo6c2xvdHRlZCh2YWFkaW4tZ3JpZC1jZWxsLWNvbnRlbnQpIHsKICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OwogICAgfQoKICAgIC8qIFJUTCBzcGVjaWZpYyBzdHlsZXMgKi8KCiAgICA6aG9zdChbZGlyPSdydGwnXSkgI2l0ZW1zLAogICAgOmhvc3QoW2Rpcj0ncnRsJ10pICNoZWFkZXIsCiAgICA6aG9zdChbZGlyPSdydGwnXSkgI2Zvb3RlciB7CiAgICAgIGxlZnQ6IGF1dG87CiAgICB9CgogICAgOmhvc3QoW2Rpcj0ncnRsJ10pIFtwYXJ0fj0ncmVvcmRlci1naG9zdCddIHsKICAgICAgbGVmdDogYXV0bzsKICAgICAgcmlnaHQ6IDA7CiAgICB9CgogICAgOmhvc3QoW2Rpcj0ncnRsJ10pIFtwYXJ0fj0ncmVzaXplLWhhbmRsZSddIHsKICAgICAgbGVmdDogMDsKICAgICAgcmlnaHQ6IGF1dG87CiAgICB9CgogICAgOmhvc3QoW2Rpcj0ncnRsJ10pIFtwYXJ0fj0ncmVzaXplLWhhbmRsZSddOjpiZWZvcmUgewogICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoNTAlKTsKICAgIH0KCiAgICA6aG9zdChbZGlyPSdydGwnXSkgW2xhc3QtY29sdW1uXSBbcGFydH49J3Jlc2l6ZS1oYW5kbGUnXTo6YmVmb3JlLAogICAgOmhvc3QoW2Rpcj0ncnRsJ10pIFtsYXN0LWZyb3plbl0gW3BhcnR+PSdyZXNpemUtaGFuZGxlJ106OmJlZm9yZSB7CiAgICAgIGxlZnQ6IDA7CiAgICAgIHJpZ2h0OiBhdXRvOwogICAgfQogIGAse21vZHVsZUlkOiJ2YWFkaW4tZ3JpZC1zdHlsZXMifSk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCAoYykgMjAyMSBWYWFkaW4gTHRkLgogICAgICogVGhpcyBwcm9ncmFtIGlzIGF2YWlsYWJsZSB1bmRlciBBcGFjaGUgTGljZW5zZSBWZXJzaW9uIDIuMCwgYXZhaWxhYmxlIGF0IGh0dHBzOi8vdmFhZGluLmNvbS9saWNlbnNlLwogICAgICovCmNvbnN0IHAwdD0oKCk9Pnt0cnl7cmV0dXJuIGRvY3VtZW50LmNyZWF0ZUV2ZW50KCJUb3VjaEV2ZW50IiksITB9Y2F0Y2godCl7cmV0dXJuITF9fSkoKTtjbGFzcyBmMHQgZXh0ZW5kcyhQMXQoZjF0KGoxdChGMXQoRzF0KEIxdChaMXQoSjF0KFExdChYMXQoYzB0KEQxdChxMXQodTB0KFYxdChXMXQobDB0KHQwdCh6MXQpKSkpKSkpKSkpKSkpKSkpKSkpe3N0YXRpYyBnZXQgdGVtcGxhdGUoKXtyZXR1cm4geGVgCiAgICAgIDxkaXYKICAgICAgICBpZD0ic2Nyb2xsZXIiCiAgICAgICAgc2FmYXJpJD0iW1tfc2FmYXJpXV0iCiAgICAgICAgaW9zJD0iW1tfaW9zXV0iCiAgICAgICAgbG9hZGluZyQ9IltbbG9hZGluZ11dIgogICAgICAgIGNvbHVtbi1yZW9yZGVyaW5nLWFsbG93ZWQkPSJbW2NvbHVtblJlb3JkZXJpbmdBbGxvd2VkXV0iCiAgICAgID4KICAgICAgICA8dGFibGUgaWQ9InRhYmxlIiByb2xlPSJncmlkIiBhcmlhLW11bHRpc2VsZWN0YWJsZT0idHJ1ZSIgdGFiaW5kZXg9IjAiPgogICAgICAgICAgPGNhcHRpb24gaWQ9InNpemVyIiBwYXJ0PSJyb3ciPjwvY2FwdGlvbj4KICAgICAgICAgIDx0aGVhZCBpZD0iaGVhZGVyIiByb2xlPSJyb3dncm91cCI+PC90aGVhZD4KICAgICAgICAgIDx0Ym9keSBpZD0iaXRlbXMiIHJvbGU9InJvd2dyb3VwIj48L3Rib2R5PgogICAgICAgICAgPHRmb290IGlkPSJmb290ZXIiIHJvbGU9InJvd2dyb3VwIj48L3Rmb290PgogICAgICAgIDwvdGFibGU+CgogICAgICAgIDxkaXYgcGFydD0icmVvcmRlci1naG9zdCI+PC9kaXY+CiAgICAgIDwvZGl2PgoKICAgICAgPGRpdiBpZD0iZm9jdXNleGl0IiB0YWJpbmRleD0iMCI+PC9kaXY+CiAgICBgfXN0YXRpYyBnZXQgaXMoKXtyZXR1cm4idmFhZGluLWdyaWQifXN0YXRpYyBnZXQgdmVyc2lvbigpe3JldHVybiIyMC4wLjIifXN0YXRpYyBnZXQgb2JzZXJ2ZXJzKCl7cmV0dXJuWyJfY29sdW1uVHJlZUNoYW5nZWQoX2NvbHVtblRyZWUsIF9jb2x1bW5UcmVlLiopIl19c3RhdGljIGdldCBwcm9wZXJ0aWVzKCl7cmV0dXJue19zYWZhcmk6e3R5cGU6Qm9vbGVhbix2YWx1ZTovXigoPyFjaHJvbWV8YW5kcm9pZCkuKSpzYWZhcmkvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpfSxfaW9zOnt0eXBlOkJvb2xlYW4sdmFsdWU6L2lQYWR8aVBob25lfGlQb2QvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkmJiF3aW5kb3cuTVNTdHJlYW18fCJNYWNJbnRlbCI9PT1uYXZpZ2F0b3IucGxhdGZvcm0mJm5hdmlnYXRvci5tYXhUb3VjaFBvaW50cz4xfSxfZmlyZWZveDp7dHlwZTpCb29sZWFuLHZhbHVlOm5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKS5pbmRleE9mKCJmaXJlZm94Iik+LTF9LF9hbmRyb2lkOnt0eXBlOkJvb2xlYW4sdmFsdWU6L2FuZHJvaWQvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpfSxfdG91Y2hEZXZpY2U6e3R5cGU6Qm9vbGVhbix2YWx1ZTpwMHR9LGhlaWdodEJ5Um93czp7dHlwZTpCb29sZWFuLHZhbHVlOiExLHJlZmxlY3RUb0F0dHJpYnV0ZTohMCxvYnNlcnZlcjoiX2hlaWdodEJ5Um93c0NoYW5nZWQifSxfcmVjYWxjdWxhdGVDb2x1bW5XaWR0aE9uY2VMb2FkaW5nRmluaXNoZWQ6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMH19fWNvbnN0cnVjdG9yKCl7c3VwZXIoKSx0aGlzLmFkZEV2ZW50TGlzdGVuZXIoImFuaW1hdGlvbmVuZCIsdGhpcy5fb25BbmltYXRpb25FbmQpfWNvbm5lY3RlZENhbGxiYWNrKCl7c3VwZXIuY29ubmVjdGVkQ2FsbGJhY2soKSx0aGlzLnJlY2FsY3VsYXRlQ29sdW1uV2lkdGhzKCl9YXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrKHQsZSxuKXtzdXBlci5hdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2sodCxlLG4pLCJkaXIiPT09dCYmKHRoaXMuX19pc1JUTD0icnRsIj09PW4sdGhpcy5fdXBkYXRlU2Nyb2xsZXJNZWFzdXJlbWVudHMoKSl9X19oYXNSb3dzV2l0aENsaWVudEhlaWdodCgpe3JldHVybiEhQXJyYXkuZnJvbSh0aGlzLiQuaXRlbXMuY2hpbGRyZW4pLmZpbHRlcigodD0+dC5jbGllbnRIZWlnaHQpKS5sZW5ndGh9X19pdGVtc1JlY2VpdmVkKCl7dGhpcy5fcmVjYWxjdWxhdGVDb2x1bW5XaWR0aE9uY2VMb2FkaW5nRmluaXNoZWQmJiF0aGlzLl9jYWNoZS5pc0xvYWRpbmcoKSYmdGhpcy5fX2hhc1Jvd3NXaXRoQ2xpZW50SGVpZ2h0KCkmJih0aGlzLl9yZWNhbGN1bGF0ZUNvbHVtbldpZHRoT25jZUxvYWRpbmdGaW5pc2hlZD0hMSx0aGlzLnJlY2FsY3VsYXRlQ29sdW1uV2lkdGhzKCkpfV9yZWNhbGN1bGF0ZUNvbHVtbldpZHRocyh0KXt0LmZvckVhY2goKHQ9Pnt0LndpZHRoPSJhdXRvIix0Ll9vcmlnRmxleEdyb3c9dC5mbGV4R3Jvdyx0LmZsZXhHcm93PTB9KSksdC5mb3JFYWNoKCh0PT57dC5fY3VycmVudFdpZHRoPTAsdC5fYWxsQ2VsbHMuZm9yRWFjaCgoZT0+e3QuX2N1cnJlbnRXaWR0aD1NYXRoLm1heCh0Ll9jdXJyZW50V2lkdGgsZS5vZmZzZXRXaWR0aCsxKX0pKX0pKSx0LmZvckVhY2goKHQ9Pnt0LndpZHRoPWAke3QuX2N1cnJlbnRXaWR0aH1weGAsdC5mbGV4R3Jvdz10Ll9vcmlnRmxleEdyb3csdC5fY3VycmVudFdpZHRoPXZvaWQgMCx0Ll9vcmlnRmxleEdyb3c9dm9pZCAwfSkpfXJlY2FsY3VsYXRlQ29sdW1uV2lkdGhzKCl7aWYodGhpcy5fY29sdW1uVHJlZSlpZih0aGlzLl9jYWNoZS5pc0xvYWRpbmcoKSl0aGlzLl9yZWNhbGN1bGF0ZUNvbHVtbldpZHRoT25jZUxvYWRpbmdGaW5pc2hlZD0hMDtlbHNle2NvbnN0IHQ9dGhpcy5fZ2V0Q29sdW1ucygpLmZpbHRlcigodD0+IXQuaGlkZGVuJiZ0LmF1dG9XaWR0aCkpO3RoaXMuX3JlY2FsY3VsYXRlQ29sdW1uV2lkdGhzKHQpfX1fY3JlYXRlU2Nyb2xsZXJSb3dzKHQpe2NvbnN0IGU9W107Zm9yKGxldCBuPTA7bjx0O24rKyl7Y29uc3QgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ciIpO3Quc2V0QXR0cmlidXRlKCJwYXJ0Iiwicm93IiksdC5zZXRBdHRyaWJ1dGUoInJvbGUiLCJyb3ciKSx0aGlzLl9jb2x1bW5UcmVlJiZ0aGlzLl91cGRhdGVSb3codCx0aGlzLl9jb2x1bW5UcmVlW3RoaXMuX2NvbHVtblRyZWUubGVuZ3RoLTFdLCJib2R5IiwhMSwhMCksZS5wdXNoKHQpfXJldHVybiB0aGlzLl9jb2x1bW5UcmVlJiZ0aGlzLl9jb2x1bW5UcmVlW3RoaXMuX2NvbHVtblRyZWUubGVuZ3RoLTFdLmZvckVhY2goKHQ9PnQuaXNDb25uZWN0ZWQmJnQubm90aWZ5UGF0aCYmdC5ub3RpZnlQYXRoKCJfY2VsbHMuKiIsdC5fY2VsbHMpKSksKGZ1bmN0aW9uIG4odCxlLGkpe05pfHxPaSgpLElpLnB1c2goW3QsZSxpXSl9KSh0aGlzLCgoKT0+e3RoaXMuX3VwZGF0ZUZpcnN0QW5kTGFzdENvbHVtbigpLHRoaXMuX3Jlc2V0S2V5Ym9hcmROYXZpZ2F0aW9uKCl9KSksZX1fZ2V0Um93VGFyZ2V0KCl7cmV0dXJuIHRoaXMuJC5pdGVtc31fY3JlYXRlQ2VsbCh0KXtjb25zdCBlPSJ2YWFkaW4tZ3JpZC1jZWxsLWNvbnRlbnQtIisodGhpcy5fY29udGVudEluZGV4PXRoaXMuX2NvbnRlbnRJbmRleCsxfHwwKSxuPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInZhYWRpbi1ncmlkLWNlbGwtY29udGVudCIpO24uc2V0QXR0cmlidXRlKCJzbG90IixlKTtjb25zdCBpPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodCk7aS5pZD1lLnJlcGxhY2UoIi1jb250ZW50LSIsIi0iKSxpLnNldEF0dHJpYnV0ZSgidGFiaW5kZXgiLCItMSIpLGkuc2V0QXR0cmlidXRlKCJyb2xlIiwidGQiPT09dD8iZ3JpZGNlbGwiOiJjb2x1bW5oZWFkZXIiKTtjb25zdCByPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNsb3QiKTtyZXR1cm4gci5zZXRBdHRyaWJ1dGUoIm5hbWUiLGUpLGkuYXBwZW5kQ2hpbGQociksaS5fY29udGVudD1uLG4uYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIiwoKCk9PntpZih3aW5kb3cuY2hyb21lKXtjb25zdCB0PSgpPT57bi5jb250YWlucyh0aGlzLmdldFJvb3ROb2RlKCkuYWN0aXZlRWxlbWVudCl8fGkuZm9jdXMoKSxkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZXVwIix0LCEwKX07ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2V1cCIsdCwhMCl9ZWxzZSBzZXRUaW1lb3V0KCgoKT0+e24uY29udGFpbnModGhpcy5nZXRSb290Tm9kZSgpLmFjdGl2ZUVsZW1lbnQpfHxpLmZvY3VzKCl9KSl9KSksaX1fdXBkYXRlUm93KHQsZSxuLGkscil7bj1ufHwiYm9keSI7Y29uc3Qgbz1kb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7QXJyYXkuZnJvbSh0LmNoaWxkcmVuKS5mb3JFYWNoKCh0PT50Ll92YWNhbnQ9ITApKSx0LmlubmVySFRNTD0iIiwic2l6ZXIiIT09dC5pZCYmKHQuaGlkZGVuPSEwKSxlLmZpbHRlcigodD0+IXQuaGlkZGVuKSkuZm9yRWFjaCgoKGUsYSxzKT0+e2xldCBsO2lmKCJib2R5Ij09PW4pe2lmKGUuX2NlbGxzPWUuX2NlbGxzfHxbXSxsPWUuX2NlbGxzLmZpbHRlcigodD0+dC5fdmFjYW50KSlbMF0sbHx8KGw9dGhpcy5fY3JlYXRlQ2VsbCgidGQiKSxlLl9jZWxscy5wdXNoKGwpKSxsLnNldEF0dHJpYnV0ZSgicGFydCIsImNlbGwgYm9keS1jZWxsIiksdC5hcHBlbmRDaGlsZChsKSxhPT09cy5sZW5ndGgtMSYmKHRoaXMuX3Jvd0RldGFpbHNUZW1wbGF0ZXx8dGhpcy5yb3dEZXRhaWxzUmVuZGVyZXIpKXt0aGlzLl9kZXRhaWxzQ2VsbHM9dGhpcy5fZGV0YWlsc0NlbGxzfHxbXTtjb25zdCBlPXRoaXMuX2RldGFpbHNDZWxscy5maWx0ZXIoKHQ9PnQuX3ZhY2FudCkpWzBdfHx0aGlzLl9jcmVhdGVDZWxsKCJ0ZCIpOy0xPT09dGhpcy5fZGV0YWlsc0NlbGxzLmluZGV4T2YoZSkmJnRoaXMuX2RldGFpbHNDZWxscy5wdXNoKGUpLGUuX2NvbnRlbnQucGFyZW50RWxlbWVudHx8by5hcHBlbmRDaGlsZChlLl9jb250ZW50KSx0aGlzLl9jb25maWd1cmVEZXRhaWxzQ2VsbChlKSx0LmFwcGVuZENoaWxkKGUpLHRoaXMuX2ExMXlTZXRSb3dEZXRhaWxzQ2VsbCh0LGUpLGUuX3ZhY2FudD0hMX1lLm5vdGlmeVBhdGgmJiFyJiZlLm5vdGlmeVBhdGgoIl9jZWxscy4qIixlLl9jZWxscyl9ZWxzZXtjb25zdCByPSJoZWFkZXIiPT09bj8idGgiOiJ0ZCI7aXx8InZhYWRpbi1ncmlkLWNvbHVtbi1ncm91cCI9PT1lLmxvY2FsTmFtZT8obD1lW2BfJHtufUNlbGxgXXx8dGhpcy5fY3JlYXRlQ2VsbChyKSxsLl9jb2x1bW49ZSx0LmFwcGVuZENoaWxkKGwpLGVbYF8ke259Q2VsbGBdPWwpOihlLl9lbXB0eUNlbGxzPWUuX2VtcHR5Q2VsbHN8fFtdLGw9ZS5fZW1wdHlDZWxscy5maWx0ZXIoKHQ9PnQuX3ZhY2FudCkpWzBdfHx0aGlzLl9jcmVhdGVDZWxsKHIpLGwuX2NvbHVtbj1lLHQuYXBwZW5kQ2hpbGQobCksLTE9PT1lLl9lbXB0eUNlbGxzLmluZGV4T2YobCkmJmUuX2VtcHR5Q2VsbHMucHVzaChsKSksbC5zZXRBdHRyaWJ1dGUoInBhcnQiLGBjZWxsICR7bn0tY2VsbGApLHRoaXMuX191cGRhdGVIZWFkZXJGb290ZXJSb3dWaXNpYmlsaXR5KHQpfWwuX2NvbnRlbnQucGFyZW50RWxlbWVudHx8by5hcHBlbmRDaGlsZChsLl9jb250ZW50KSxsLl92YWNhbnQ9ITEsbC5fY29sdW1uPWV9KSksdGhpcy5hcHBlbmRDaGlsZChvKSx0aGlzLl9mcm96ZW5DZWxsc0NoYW5nZWQoKSx0aGlzLl91cGRhdGVGaXJzdEFuZExhc3RDb2x1bW5Gb3JSb3codCl9X191cGRhdGVIZWFkZXJGb290ZXJSb3dWaXNpYmlsaXR5KHQpe2lmKCF0KXJldHVybjtjb25zdCBlPUFycmF5LmZyb20odC5jaGlsZHJlbikuZmlsdGVyKChlPT57Y29uc3Qgbj1lLl9jb2x1bW47aWYobi5fZW1wdHlDZWxscyYmbi5fZW1wdHlDZWxscy5pbmRleE9mKGUpPi0xKXJldHVybiExO2lmKHQucGFyZW50RWxlbWVudD09PXRoaXMuJC5oZWFkZXIpe2lmKG4uaGVhZGVyUmVuZGVyZXJ8fG4uX2hlYWRlclRlbXBsYXRlKXJldHVybiEwO2lmKG51bGw9PT1uLmhlYWRlcilyZXR1cm4hMTtpZihuLnBhdGh8fHZvaWQgMCE9PW4uaGVhZGVyKXJldHVybiEwfWVsc2UgaWYobi5mb290ZXJSZW5kZXJlcnx8bi5fZm9vdGVyVGVtcGxhdGUpcmV0dXJuITB9KSk7dC5oaWRkZW4hPT0hZS5sZW5ndGgmJih0LmhpZGRlbj0hZS5sZW5ndGgsdGhpcy5ub3RpZnlSZXNpemUoKSl9X3VwZGF0ZVNjcm9sbGVySXRlbSh0LGUpe3RoaXMuX3ByZXZlbnRTY3JvbGxlclJvdGF0aW5nQ2VsbEZvY3VzKHQsZSksdGhpcy5fY29sdW1uVHJlZSYmKHRoaXMuX3RvZ2dsZUF0dHJpYnV0ZSgiZmlyc3QiLDA9PT1lLHQpLHRoaXMuX3RvZ2dsZUF0dHJpYnV0ZSgib2RkIixlJTIsdCksdGhpcy5fYTExeVVwZGF0ZVJvd1Jvd2luZGV4KHQsZSksdGhpcy5fZ2V0SXRlbShlLHQpKX1fY29sdW1uVHJlZUNoYW5nZWQodCl7dGhpcy5fcmVuZGVyQ29sdW1uVHJlZSh0KSx0aGlzLnJlY2FsY3VsYXRlQ29sdW1uV2lkdGhzKCl9X3JlbmRlckNvbHVtblRyZWUodCl7Zm9yKEFycmF5LmZyb20odGhpcy4kLml0ZW1zLmNoaWxkcmVuKS5mb3JFYWNoKChlPT50aGlzLl91cGRhdGVSb3coZSx0W3QubGVuZ3RoLTFdLG51bGwsITEsITApKSk7dGhpcy4kLmhlYWRlci5jaGlsZHJlbi5sZW5ndGg8dC5sZW5ndGg7KXtjb25zdCB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRyIik7dC5zZXRBdHRyaWJ1dGUoInBhcnQiLCJyb3ciKSx0LnNldEF0dHJpYnV0ZSgicm9sZSIsInJvdyIpLHRoaXMuJC5oZWFkZXIuYXBwZW5kQ2hpbGQodCk7Y29uc3QgZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ciIpO2Uuc2V0QXR0cmlidXRlKCJwYXJ0Iiwicm93IiksZS5zZXRBdHRyaWJ1dGUoInJvbGUiLCJyb3ciKSx0aGlzLiQuZm9vdGVyLmFwcGVuZENoaWxkKGUpfWZvcig7dGhpcy4kLmhlYWRlci5jaGlsZHJlbi5sZW5ndGg+dC5sZW5ndGg7KXRoaXMuJC5oZWFkZXIucmVtb3ZlQ2hpbGQodGhpcy4kLmhlYWRlci5maXJzdEVsZW1lbnRDaGlsZCksdGhpcy4kLmZvb3Rlci5yZW1vdmVDaGlsZCh0aGlzLiQuZm9vdGVyLmZpcnN0RWxlbWVudENoaWxkKTtBcnJheS5mcm9tKHRoaXMuJC5oZWFkZXIuY2hpbGRyZW4pLmZvckVhY2goKChlLG4pPT50aGlzLl91cGRhdGVSb3coZSx0W25dLCJoZWFkZXIiLG49PT10Lmxlbmd0aC0xKSkpLEFycmF5LmZyb20odGhpcy4kLmZvb3Rlci5jaGlsZHJlbikuZm9yRWFjaCgoKGUsbik9PnRoaXMuX3VwZGF0ZVJvdyhlLHRbdC5sZW5ndGgtMS1uXSwiZm9vdGVyIiwwPT09bikpKSx0aGlzLl91cGRhdGVSb3codGhpcy4kLnNpemVyLHRbdC5sZW5ndGgtMV0pLHRoaXMuX3Jlc2l6ZUhhbmRsZXIoKSx0aGlzLl9mcm96ZW5DZWxsc0NoYW5nZWQoKSx0aGlzLl91cGRhdGVGaXJzdEFuZExhc3RDb2x1bW4oKSx0aGlzLl9yZXNldEtleWJvYXJkTmF2aWdhdGlvbigpLHRoaXMuX2ExMXlVcGRhdGVIZWFkZXJSb3dzKCksdGhpcy5fYTExeVVwZGF0ZUZvb3RlclJvd3MoKSx0aGlzLl9fdXBkYXRlRm9vdGVyUG9zaXRpb25pbmcoKX1fX3VwZGF0ZUZvb3RlclBvc2l0aW9uaW5nKCl7aWYodGhpcy5fZmlyZWZveCYmKHRoaXMuJC5pdGVtcy5zdHlsZS5wYWRkaW5nQm90dG9tPTAsdGhpcy5oZWlnaHRCeVJvd3N8fCh0aGlzLiQuaXRlbXMuc3R5bGUucGFkZGluZ0JvdHRvbT1gJHt0aGlzLiQuZm9vdGVyLm9mZnNldEhlaWdodH1weGApKSx0aGlzLl9pb3MpeyF3aW5kb3cuQ1NTLnN1cHBvcnRzKCJwb3NpdGlvbiIsInN0aWNreSIpJiYodGhpcy4kLnRhYmxlLnN0eWxlLmhlaWdodD0iIix0aGlzLiQudGFibGUuc3R5bGUubWluSGVpZ2h0PSIxMDAlIix0aGlzLiQudGFibGUuc3R5bGUubWF4SGVpZ2h0PSIxMDAlIixzZXRUaW1lb3V0KCgoKT0+dGhpcy4kLnRhYmxlLnN0eWxlLmhlaWdodD1gJHt0aGlzLiQuc2Nyb2xsZXIub2Zmc2V0SGVpZ2h0fXB4YCkpKX19X3VwZGF0ZUl0ZW0odCxlKXt0Ll9pdGVtPWU7Y29uc3Qgbj10aGlzLl9fZ2V0Um93TW9kZWwodCk7dGhpcy5fdG9nZ2xlQXR0cmlidXRlKCJzZWxlY3RlZCIsbi5zZWxlY3RlZCx0KSx0aGlzLl9hMTF5VXBkYXRlUm93U2VsZWN0ZWQodCxuLnNlbGVjdGVkKSx0aGlzLl9hMTF5VXBkYXRlUm93TGV2ZWwodCxuLmxldmVsKSx0aGlzLl90b2dnbGVBdHRyaWJ1dGUoImV4cGFuZGVkIixuLmV4cGFuZGVkLHQpLHRoaXMuX3RvZ2dsZUF0dHJpYnV0ZSgiZGV0YWlscy1vcGVuZWQiLHRoaXMuX2lzRGV0YWlsc09wZW5lZChlKSx0KSwodGhpcy5fcm93RGV0YWlsc1RlbXBsYXRlfHx0aGlzLnJvd0RldGFpbHNSZW5kZXJlcikmJnRoaXMuX3RvZ2dsZURldGFpbHNDZWxsKHQsZSksdGhpcy5fZ2VuZXJhdGVDZWxsQ2xhc3NOYW1lcyh0LG4pLHRoaXMuX2ZpbHRlckRyYWdBbmREcm9wKHQsbiksQXJyYXkuZnJvbSh0LmNoaWxkcmVuKS5mb3JFYWNoKCh0PT57aWYodC5fcmVuZGVyZXIpe2NvbnN0IGU9dC5fY29sdW1ufHx0aGlzO3QuX3JlbmRlcmVyLmNhbGwoZSx0Ll9jb250ZW50LGUsbil9ZWxzZSB0Ll9pbnN0YW5jZSYmKHQuX2luc3RhbmNlLl9fZGV0YWlsc09wZW5lZF9fPW4uZGV0YWlsc09wZW5lZCx0Ll9pbnN0YW5jZS5fX3NlbGVjdGVkX189bi5zZWxlY3RlZCx0Ll9pbnN0YW5jZS5fX2xldmVsX189bi5sZXZlbCx0Ll9pbnN0YW5jZS5fX2V4cGFuZGVkX189bi5leHBhbmRlZCx0Ll9pbnN0YW5jZS5zZXRQcm9wZXJ0aWVzKG4pKX0pKSx0aGlzLl9kZWJvdW5jZXJVcGRhdGVIZWlnaHRzPU5uLmRlYm91bmNlKHRoaXMuX2RlYm91bmNlclVwZGF0ZUhlaWdodHMsZ3QuYWZ0ZXIoMSksKCgpPT57dGhpcy5fdXBkYXRlTWV0cmljcygpLHRoaXMuX3Bvc2l0aW9uSXRlbXMoKSx0aGlzLl91cGRhdGVTY3JvbGxlclNpemUoKX0pKX1fcmVzaXplSGFuZGxlcigpe3RoaXMuX3VwZGF0ZURldGFpbHNDZWxsSGVpZ2h0cygpLHRoaXMuX2FjY2Vzc0lyb25MaXN0QVBJKHN1cGVyLl9yZXNpemVIYW5kbGVyLCEwKSx0aGlzLl91cGRhdGVTY3JvbGxlck1lYXN1cmVtZW50cygpLHRoaXMuX191cGRhdGVGb290ZXJQb3NpdGlvbmluZygpfV9vbkFuaW1hdGlvbkVuZCh0KXswPT09dC5hbmltYXRpb25OYW1lLmluZGV4T2YoInZhYWRpbi1ncmlkLWFwcGVhciIpJiYodGhpcy5fcmVuZGVyKCksdC5zdG9wUHJvcGFnYXRpb24oKSx0aGlzLm5vdGlmeVJlc2l6ZSgpLHRoaXMuX19pdGVtc1JlY2VpdmVkKCkscmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgoKT0+e3RoaXMuX19zY3JvbGxUb1BlbmRpbmdJbmRleCgpLHRoaXMuJC50YWJsZS5zdHlsZS53ZWJraXRPdmVyZmxvd1Njcm9sbGluZz0idG91Y2gifSkpKX1fdG9nZ2xlQXR0cmlidXRlKHQsZSxuKXtuLmhhc0F0dHJpYnV0ZSh0KT09PSFlJiYoZT9uLnNldEF0dHJpYnV0ZSh0LCIiKTpuLnJlbW92ZUF0dHJpYnV0ZSh0KSl9X19nZXRSb3dNb2RlbCh0KXtyZXR1cm57aW5kZXg6dC5pbmRleCxpdGVtOnQuX2l0ZW0sbGV2ZWw6dGhpcy5fZ2V0SW5kZXhMZXZlbCh0LmluZGV4KSxleHBhbmRlZDp0aGlzLl9pc0V4cGFuZGVkKHQuX2l0ZW0pLHNlbGVjdGVkOnRoaXMuX2lzU2VsZWN0ZWQodC5faXRlbSksZGV0YWlsc09wZW5lZDohKCF0aGlzLl9yb3dEZXRhaWxzVGVtcGxhdGUmJiF0aGlzLnJvd0RldGFpbHNSZW5kZXJlcikmJnRoaXMuX2lzRGV0YWlsc09wZW5lZCh0Ll9pdGVtKX19cmVuZGVyKCl7dGhpcy5fY29sdW1uVHJlZSYmKHRoaXMuX2NvbHVtblRyZWUuZm9yRWFjaCgodD0+e3QuZm9yRWFjaCgodD0+dC5fcmVuZGVySGVhZGVyQW5kRm9vdGVyKCkpKX0pKSx0aGlzLl91cGRhdGUoKSl9bm90aWZ5UmVzaXplKCl7c3VwZXIubm90aWZ5UmVzaXplKCl9X2hlaWdodEJ5Um93c0NoYW5nZWQodCxlKXsodHx8ZSkmJnRoaXMubm90aWZ5UmVzaXplKCl9X19mb3JjZVJlZmxvdygpe3RoaXMuX2RlYm91bmNlckZvcmNlUmVmbG93PU5uLmRlYm91bmNlKHRoaXMuX2RlYm91bmNlckZvcmNlUmVmbG93LF90LCgoKT0+e3RoaXMuJC5zY3JvbGxlci5zdHlsZS5vdmVyZmxvdz0iaGlkZGVuIixzZXRUaW1lb3V0KCgoKT0+dGhpcy4kLnNjcm9sbGVyLnN0eWxlLm92ZXJmbG93PSIiKSl9KSl9fWZ1bmN0aW9uIG0wdCh0LGUpe3JldHVybihmdW5jdGlvbiBuKHQsZSl7cmV0dXJuIFZyKHt9LGNyKGUpLHQpfSkodCxlKX1jdXN0b21FbGVtZW50cy5kZWZpbmUoZjB0LmlzLGYwdCk7bGV0IGcwdD1jbGFzcyBleHRlbmRzIHdle2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLl9ydW49IiJ9X2NzdlVybCh0LGUsbil7cmV0dXJuIGU/UE8obih0LGUpLHtmb3JtYXQ6ImNzdiJ9KToiIn1fanNvblVybCh0LGUsbil7cmV0dXJuIGU/bih0LGUpOiIifV9jc3ZOYW1lKHQsZSl7cmV0dXJuIGU/YHJ1bi0ke2V9LXRhZy0ke3R9LmNzdmA6IiJ9X2pzb25OYW1lKHQsZSl7cmV0dXJuIGU/YHJ1bi0ke2V9LXRhZy0ke3R9Lmpzb25gOiIifX07ZzB0LnRlbXBsYXRlPXhlYAogICAgPHBhcGVyLWRyb3Bkb3duLW1lbnUKICAgICAgbm8tbGFiZWwtZmxvYXQ9InRydWUiCiAgICAgIGxhYmVsPSJydW4gdG8gZG93bmxvYWQiCiAgICAgIHNlbGVjdGVkLWl0ZW0tbGFiZWw9Int7X3J1bn19IgogICAgPgogICAgICA8cGFwZXItbGlzdGJveCBzbG90PSJkcm9wZG93bi1jb250ZW50Ij4KICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1yZXBlYXQiIGl0ZW1zPSJbW3J1bnNdXSI+CiAgICAgICAgICA8cGFwZXItaXRlbSBuby1sYWJlbC1mbG9hdD0idHJ1ZSI+W1tpdGVtXV08L3BhcGVyLWl0ZW0+CiAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgPC9wYXBlci1saXN0Ym94PgogICAgPC9wYXBlci1kcm9wZG93bi1tZW51PgogICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19ydW5dXSI+CiAgICAgIDxhIGRvd25sb2FkPSJbW19jc3ZOYW1lKHRhZywgX3J1bildXSIgaHJlZj0iW1tfY3N2VXJsKHRhZywgX3J1biwgdXJsRm4pXV0iCiAgICAgICAgPkNTVjwvYQogICAgICA+PCEtLQogICAgICAtLT48YQogICAgICAgIGRvd25sb2FkPSJbW19qc29uTmFtZSh0YWcsIF9ydW4pXV0iCiAgICAgICAgaHJlZj0iW1tfanNvblVybCh0YWcsIF9ydW4sIHVybEZuKV1dIgogICAgICAgID5KU09OPC9hCiAgICAgID4KICAgIDwvdGVtcGxhdGU+CiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgaGVpZ2h0OiAzMnB4OwogICAgICB9CiAgICAgIHBhcGVyLWRyb3Bkb3duLW1lbnUgewogICAgICAgIHdpZHRoOiAxMDBweDsKICAgICAgICAtLXBhcGVyLWlucHV0LWNvbnRhaW5lci1sYWJlbDogewogICAgICAgICAgZm9udC1zaXplOiAxMHB4OwogICAgICAgIH0KICAgICAgICAtLXBhcGVyLWlucHV0LWNvbnRhaW5lci1pbnB1dDogewogICAgICAgICAgZm9udC1zaXplOiAxMHB4OwogICAgICAgIH0KICAgICAgfQogICAgICBhIHsKICAgICAgICBmb250LXNpemU6IDEwcHg7CiAgICAgICAgbWFyZ2luOiAwIDAuMmVtOwogICAgICB9CiAgICAgIHBhcGVyLWlucHV0IHsKICAgICAgICBmb250LXNpemU6IDIycHg7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgYCx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxnMHQucHJvdG90eXBlLCJfcnVuIix2b2lkIDApLHQoW28oe3R5cGU6QXJyYXl9KSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpXSxnMHQucHJvdG90eXBlLCJydW5zIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLGcwdC5wcm90b3R5cGUsInRhZyIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxnMHQucHJvdG90eXBlLCJ1cmxGbiIsdm9pZCAwKSxnMHQ9dChbaSgidGYtZG93bmxvYWRlciIpXSxnMHQpO25ldyBVUkxTZWFyY2hQYXJhbXMod2luZG93LmxvY2F0aW9uLnNlYXJjaCk7bGV0IF8wdD1jbGFzcyBleHRlbmRzIHdle2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLmNvbG9yU2NhbGU9bnVsbCx0aGlzLl9sb2FkRGF0YUNhbGxiYWNrPSh0LGUsbik9PntpZihudWxsPT1uKXJldHVybiB2b2lkIGNvbnNvbGUuZXJyb3IoIkZhaWxlZCB0byBsb2FkIGRhdGEgZm9yOiIsZSk7Y29uc3QgaT1uLm1hcCgodD0+KHt3YWxsX3RpbWU6bmV3IERhdGUoMWUzKnRbMF0pLHN0ZXA6dFsxXSxzY2FsYXI6dFsyXX0pKSkscj10aGlzLl9nZXRTZXJpZXNOYW1lRnJvbURhdHVtKGUpO3Quc2V0U2VyaWVzTWV0YWRhdGEocixlKSx0LnNldFNlcmllc0RhdGEocixpKX0sdGhpcy5nZXREYXRhTG9hZFVybD0oe3RhZzp0LHJ1bjplfSk9PkVyKCkucGx1Z2luUm91dGUoInNjYWxhcnMiLCIvc2NhbGFycyIsbmV3IFVSTFNlYXJjaFBhcmFtcyh7dGFnOnQscnVuOmV9KSksdGhpcy5fZG93bmxvYWRVcmxGbj0odCxlKT0+dGhpcy5nZXREYXRhTG9hZFVybCh7dGFnOnQscnVuOmV9KSx0aGlzLnJlcXVlc3REYXRhPSh0LGUsbik9PnRoaXMuaW5Db2xhYj90aGlzLl9yZXF1ZXN0RGF0YUdldCh0LGUsbik6dGhpcy5fcmVxdWVzdERhdGFQb3N0KHQsZSxuKSx0aGlzLl9yZXF1ZXN0RGF0YUdldD0odCxlLG4pPT57Y29uc3QgaT1FcigpLnBsdWdpblJvdXRlKCJzY2FsYXJzIiwiL3NjYWxhcnMiKTtQcm9taXNlLmFsbCh0Lm1hcCgodD0+e2NvbnN0IG49UE8oaSx7dGFnOnQudGFnLHJ1bjp0LnJ1bn0pO3JldHVybiB0aGlzLnJlcXVlc3RNYW5hZ2VyLnJlcXVlc3QobikudGhlbigobj0+e2Uoe2l0ZW06dCxkYXRhOm59KX0pKX0pKSkuZmluYWxseSgoKCk9PntuKCl9KSl9LHRoaXMuX3JlcXVlc3REYXRhUG9zdD0odCxlLG4pPT57dmFyIGk7Y29uc3Qgcj1FcigpLnBsdWdpblJvdXRlKCJzY2FsYXJzIiwiL3NjYWxhcnNfbXVsdGlydW4iKSxvPW5ldyBNYXA7Zm9yKGNvbnN0e3RhZzplLHJ1bjpufW9mIHQpe2xldCB0PW8uZ2V0KGUpO251bGw9PXQmJm8uc2V0KGUsdD1bXSksdC5wdXNoKG4pfWNvbnN0IGE9bnVsbCE9PShpPXRoaXMuYmF0Y2hTaXplKSYmdm9pZCAwIT09aT9pOjY0LHM9W107Zm9yKGNvbnN0W3QsZV1vZiBvKWZvcihsZXQgbj0wO248ZS5sZW5ndGg7bis9YSlzLnB1c2goe3RhZzp0LHJ1bnM6ZS5zbGljZShuLG4rYSl9KTtQcm9taXNlLmFsbChzLm1hcCgoKHt0YWc6dCxydW5zOm59KT0+dGhpcy5yZXF1ZXN0TWFuYWdlci5yZXF1ZXN0KHIse3RhZzp0LHJ1bnM6bn0pLnRoZW4oKGk9Pntmb3IoY29uc3QgciBvZiBuKXtjb25zdCBuPXt0YWc6dCxydW46cn07T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGkscik/ZSh7aXRlbTpuLGRhdGE6aVtyXX0pOmUoe2l0ZW06bixkYXRhOm51bGx9KX19KSkpKSkuZmluYWxseSgoKCk9PntuKCl9KSl9LHRoaXMuX2dldERhdGFMb2FkTmFtZT10PT50aGlzLl9nZXRTZXJpZXNOYW1lRnJvbURhdHVtKHQpLHRoaXMuX2V4cGFuZGVkPSExLHRoaXMuX3Rvb2x0aXBDb2x1bW5zPSgoKT0+e2NvbnN0IHQ9cEF0LnNsaWNlKCksZT10LmZpbmRJbmRleCgodD0+Ik5hbWUiPT10LnRpdGxlKSk7cmV0dXJuIHQuc3BsaWNlKGUsMSx7dGl0bGU6Ik5hbWUiLGV2YWx1YXRlOnQ9Pntjb25zdCBlPXQuZGF0YXNldC5tZXRhZGF0YSgpLm1ldGE7cmV0dXJuIHRoaXMuX2dldFNlcmllc0Rpc3BsYXlOYW1lRnJvbURhdHVtKGUpfX0pLHR9KSgpfV9nZXRDaGFydERhdGFMb2FkZXIoKXtyZXR1cm4gdGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoInRmLWxpbmUtY2hhcnQtZGF0YS1sb2FkZXIiKX1yZWxvYWQoKXt0aGlzLl9nZXRDaGFydERhdGFMb2FkZXIoKS5yZWxvYWQoKX1yZWRyYXcoKXt0aGlzLl9nZXRDaGFydERhdGFMb2FkZXIoKS5yZWRyYXcoKX1fdG9nZ2xlRXhwYW5kZWQodCl7dGhpcy5zZXQoIl9leHBhbmRlZCIsIXRoaXMuX2V4cGFuZGVkKSx0aGlzLnJlZHJhdygpfV90b2dnbGVMb2dTY2FsZSgpe3RoaXMuc2V0KCJfbG9nU2NhbGVBY3RpdmUiLCF0aGlzLl9sb2dTY2FsZUFjdGl2ZSl9X3Jlc2V0RG9tYWluKCl7Y29uc3QgdD10aGlzLl9nZXRDaGFydERhdGFMb2FkZXIoKTt0JiZ0LnJlc2V0RG9tYWluKCl9X3VwZGF0ZURvd25sb2FkTGluaygpe2NvbnN0IHQ9dGhpcy5fZ2V0Q2hhcnREYXRhTG9hZGVyKCkuZXhwb3J0QXNTdmdTdHJpbmcoKTt0aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcigiI3N2Z0xpbmsiKS5ocmVmPWBkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LCR7YnRvYSh0KX1gfV9ydW5zRnJvbURhdGEodCl7cmV0dXJuIHQubWFwKCh0PT50LnJ1bikpfV9nZXREYXRhU2VyaWVzKCl7cmV0dXJuIHRoaXMuZGF0YVRvTG9hZC5tYXAoKHQ9PnRoaXMuX2dldFNlcmllc05hbWVGcm9tRGF0dW0odCkpKX1fZ2V0U2VyaWVzTmFtZUZyb21EYXR1bSh7cnVuOnQsZXhwZXJpbWVudDplPXtuYW1lOiJfZGVmYXVsdCJ9fSl7cmV0dXJuIEpTT04uc3RyaW5naWZ5KFtlLm5hbWUsdF0pfV9nZXRTZXJpZXNEaXNwbGF5TmFtZUZyb21EYXR1bSh0KXtyZXR1cm4gdC5ydW59X2dldENvbG9yU2NhbGUoKXtyZXR1cm4gbnVsbCE9PXRoaXMuY29sb3JTY2FsZT90aGlzLmNvbG9yU2NhbGU6e3NjYWxlOnQ9Pntjb25zdFssZV09SlNPTi5wYXJzZSh0KTtyZXR1cm4gX08oZSl9fX19O18wdC50ZW1wbGF0ZT14ZWAKICAgIDx0Zi1jYXJkLWhlYWRpbmcKICAgICAgdGFnPSJbW3RhZ11dIgogICAgICBkaXNwbGF5LW5hbWU9IltbdGFnTWV0YWRhdGEuZGlzcGxheU5hbWVdXSIKICAgICAgZGVzY3JpcHRpb249IltbdGFnTWV0YWRhdGEuZGVzY3JpcHRpb25dXSIKICAgID48L3RmLWNhcmQtaGVhZGluZz4KICAgIDxkaXYgaWQ9InRmLWxpbmUtY2hhcnQtZGF0YS1sb2FkZXItY29udGFpbmVyIj4KICAgICAgPHRmLWxpbmUtY2hhcnQtZGF0YS1sb2FkZXIKICAgICAgICBhY3RpdmU9IltbYWN0aXZlXV0iCiAgICAgICAgY29sb3Itc2NhbGU9IltbX2dldENvbG9yU2NhbGUoY29sb3JTY2FsZSldXSIKICAgICAgICBkYXRhLXNlcmllcz0iW1tfZ2V0RGF0YVNlcmllcyhkYXRhVG9Mb2FkLiopXV0iCiAgICAgICAgZGF0YS10by1sb2FkPSJbW2RhdGFUb0xvYWRdXSIKICAgICAgICBnZXQtZGF0YS1sb2FkLW5hbWU9IltbX2dldERhdGFMb2FkTmFtZV1dIgogICAgICAgIGdldC1kYXRhLWxvYWQtdXJsPSJbW2dldERhdGFMb2FkVXJsXV0iCiAgICAgICAgcmVxdWVzdC1kYXRhPSJbW3JlcXVlc3REYXRhXV0iCiAgICAgICAgaWdub3JlLXktb3V0bGllcnM9IltbaWdub3JlWU91dGxpZXJzXV0iCiAgICAgICAgbG9hZC1kYXRhLWNhbGxiYWNrPSJbW19sb2FkRGF0YUNhbGxiYWNrXV0iCiAgICAgICAgbG9hZC1rZXk9IltbdGFnXV0iCiAgICAgICAgbG9nLXNjYWxlLWFjdGl2ZT0iW1tfbG9nU2NhbGVBY3RpdmVdXSIKICAgICAgICByZXF1ZXN0LW1hbmFnZXI9IltbcmVxdWVzdE1hbmFnZXJdXSIKICAgICAgICBzbW9vdGhpbmctZW5hYmxlZD0iW1tzbW9vdGhpbmdFbmFibGVkXV0iCiAgICAgICAgc21vb3RoaW5nLXdlaWdodD0iW1tzbW9vdGhpbmdXZWlnaHRdXSIKICAgICAgICB0YWctbWV0YWRhdGE9IltbdGFnTWV0YWRhdGFdXSIKICAgICAgICB0b29sdGlwLWNvbHVtbnM9IltbX3Rvb2x0aXBDb2x1bW5zXV0iCiAgICAgICAgdG9vbHRpcC1wb3NpdGlvbj0iYXV0byIKICAgICAgICB0b29sdGlwLXNvcnRpbmctbWV0aG9kPSJbW3Rvb2x0aXBTb3J0aW5nTWV0aG9kXV0iCiAgICAgICAgeC10eXBlPSJbW3hUeXBlXV0iCiAgICAgID4KICAgICAgPC90Zi1saW5lLWNoYXJ0LWRhdGEtbG9hZGVyPgogICAgPC9kaXY+CiAgICA8ZGl2IGlkPSJidXR0b25zIj4KICAgICAgPHBhcGVyLWljb24tYnV0dG9uCiAgICAgICAgc2VsZWN0ZWQkPSJbW19leHBhbmRlZF1dIgogICAgICAgIGljb249ImZ1bGxzY3JlZW4iCiAgICAgICAgb24tdGFwPSJfdG9nZ2xlRXhwYW5kZWQiCiAgICAgID48L3BhcGVyLWljb24tYnV0dG9uPgogICAgICA8cGFwZXItaWNvbi1idXR0b24KICAgICAgICBzZWxlY3RlZCQ9IltbX2xvZ1NjYWxlQWN0aXZlXV0iCiAgICAgICAgaWNvbj0ibGluZS13ZWlnaHQiCiAgICAgICAgb24tdGFwPSJfdG9nZ2xlTG9nU2NhbGUiCiAgICAgICAgdGl0bGU9IlRvZ2dsZSB5LWF4aXMgbG9nIHNjYWxlIgogICAgICA+PC9wYXBlci1pY29uLWJ1dHRvbj4KICAgICAgPHBhcGVyLWljb24tYnV0dG9uCiAgICAgICAgaWNvbj0ic2V0dGluZ3Mtb3ZlcnNjYW4iCiAgICAgICAgb24tdGFwPSJfcmVzZXREb21haW4iCiAgICAgICAgdGl0bGU9IkZpdCBkb21haW4gdG8gZGF0YSIKICAgICAgPjwvcGFwZXItaWNvbi1idXR0b24+CiAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tzaG93RG93bmxvYWRMaW5rc11dIj4KICAgICAgICA8cGFwZXItbWVudS1idXR0b24gb24tcGFwZXItZHJvcGRvd24tb3Blbj0iX3VwZGF0ZURvd25sb2FkTGluayI+CiAgICAgICAgICA8cGFwZXItaWNvbi1idXR0b24KICAgICAgICAgICAgY2xhc3M9ImRyb3Bkb3duLXRyaWdnZXIiCiAgICAgICAgICAgIHNsb3Q9ImRyb3Bkb3duLXRyaWdnZXIiCiAgICAgICAgICAgIGljb249ImZpbGUtZG93bmxvYWQiCiAgICAgICAgICA+PC9wYXBlci1pY29uLWJ1dHRvbj4KICAgICAgICAgIDxwYXBlci1saXN0Ym94IGNsYXNzPSJkcm9wZG93bi1jb250ZW50IiBzbG90PSJkcm9wZG93bi1jb250ZW50Ij4KICAgICAgICAgICAgPHBhcGVyLWl0ZW0+CiAgICAgICAgICAgICAgPGEgaWQ9InN2Z0xpbmsiIGRvd25sb2FkPSJbW3RhZ11dLnN2ZyI+CiAgICAgICAgICAgICAgICBEb3dubG9hZCBDdXJyZW50IENoYXJ0IGFzIFNWRwogICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC9wYXBlci1pdGVtPgogICAgICAgICAgPC9wYXBlci1saXN0Ym94PgogICAgICAgIDwvcGFwZXItbWVudS1idXR0b24+CiAgICAgIDwvdGVtcGxhdGU+CiAgICAgIDxzcGFuIHN0eWxlPSJmbGV4LWdyb3c6IDEiPjwvc3Bhbj4KICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW3Nob3dEb3dubG9hZExpbmtzXV0iPgogICAgICAgIDxkaXYgY2xhc3M9ImRvd25sb2FkLWxpbmtzIj4KICAgICAgICAgIDx0Zi1kb3dubG9hZGVyCiAgICAgICAgICAgIHJ1bnM9IltbX3J1bnNGcm9tRGF0YShkYXRhVG9Mb2FkKV1dIgogICAgICAgICAgICB0YWc9IltbdGFnXV0iCiAgICAgICAgICAgIHVybC1mbj0iW1tfZG93bmxvYWRVcmxGbl1dIgogICAgICAgICAgPjwvdGYtZG93bmxvYWRlcj4KICAgICAgICA8L2Rpdj4KICAgICAgPC90ZW1wbGF0ZT4KICAgIDwvZGl2PgogICAgPHN0eWxlPgogICAgICA6aG9zdCB7CiAgICAgICAgbWFyZ2luOiA1cHg7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgd2lkdGg6IDMzMHB4OwogICAgICB9CgogICAgICA6aG9zdChbX2V4cGFuZGVkXSkgewogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICB9CgogICAgICA6aG9zdChbX2V4cGFuZGVkXSkgI3RmLWxpbmUtY2hhcnQtZGF0YS1sb2FkZXItY29udGFpbmVyIHsKICAgICAgICBoZWlnaHQ6IDQwMHB4OwogICAgICB9CgogICAgICAjdGYtbGluZS1jaGFydC1kYXRhLWxvYWRlci1jb250YWluZXIgewogICAgICAgIGhlaWdodDogMjAwcHg7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgIH0KCiAgICAgIHRmLWNhcmQtaGVhZGluZyB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDsKICAgICAgfQoKICAgICAgI2J1dHRvbnMgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdzsKICAgICAgfQoKICAgICAgcGFwZXItaWNvbi1idXR0b24gewogICAgICAgIGNvbG9yOiAjMjE5NmYzOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDEwMCU7CiAgICAgICAgd2lkdGg6IDMycHg7CiAgICAgICAgaGVpZ2h0OiAzMnB4OwogICAgICAgIHBhZGRpbmc6IDRweDsKICAgICAgfQoKICAgICAgcGFwZXItaWNvbi1idXR0b25bc2VsZWN0ZWRdIHsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS10Yi11aS1saWdodC1hY2NlbnQpOwogICAgICB9CgogICAgICAuZG93bmxvYWQtbGlua3MgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgaGVpZ2h0OiAzMnB4OwogICAgICB9CgogICAgICAuZG93bmxvYWQtbGlua3MgYSB7CiAgICAgICAgYWxpZ24tc2VsZjogY2VudGVyOwogICAgICAgIGZvbnQtc2l6ZTogMTBweDsKICAgICAgICBtYXJnaW46IDJweDsKICAgICAgfQoKICAgICAgLmRvd25sb2FkLWxpbmtzIHBhcGVyLWRyb3Bkb3duLW1lbnUgewogICAgICAgIHdpZHRoOiAxMDBweDsKICAgICAgICAtLXBhcGVyLWlucHV0LWNvbnRhaW5lci1sYWJlbDogewogICAgICAgICAgZm9udC1zaXplOiAxMHB4OwogICAgICAgIH0KICAgICAgICAtLXBhcGVyLWlucHV0LWNvbnRhaW5lci1pbnB1dDogewogICAgICAgICAgZm9udC1zaXplOiAxMHB4OwogICAgICAgIH0KICAgICAgfQoKICAgICAgcGFwZXItbWVudS1idXR0b24gewogICAgICAgIHBhZGRpbmc6IDA7CiAgICAgIH0KICAgICAgcGFwZXItaXRlbSBhIHsKICAgICAgICBjb2xvcjogaW5oZXJpdDsKICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgICAgfQogICAgPC9zdHlsZT4KICBgLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLF8wdC5wcm90b3R5cGUsInRhZyIsdm9pZCAwKSx0KFtvKHt0eXBlOkFycmF5fSksZSgiZGVzaWduOnR5cGUiLEFycmF5KV0sXzB0LnByb3RvdHlwZSwiZGF0YVRvTG9hZCIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxfMHQucHJvdG90eXBlLCJ4VHlwZSIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLF8wdC5wcm90b3R5cGUsImFjdGl2ZSIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLF8wdC5wcm90b3R5cGUsImlnbm9yZVlPdXRsaWVycyIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixicildLF8wdC5wcm90b3R5cGUsInJlcXVlc3RNYW5hZ2VyIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sXzB0LnByb3RvdHlwZSwic2hvd0Rvd25MaW5rcyIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLF8wdC5wcm90b3R5cGUsInNtb290aGluZ0VuYWJsZWQiLHZvaWQgMCksdChbbyh7dHlwZTpOdW1iZXJ9KSxlKCJkZXNpZ246dHlwZSIsTnVtYmVyKV0sXzB0LnByb3RvdHlwZSwic21vb3RoaW5nV2VpZ2h0Iix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLF8wdC5wcm90b3R5cGUsInRhZ01ldGFkYXRhIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLF8wdC5wcm90b3R5cGUsImNvbG9yU2NhbGUiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sXzB0LnByb3RvdHlwZSwidG9vbHRpcFNvcnRpbmdNZXRob2QiLHZvaWQgMCksdChbbyh7dHlwZTpOdW1iZXJ9KSxlKCJkZXNpZ246dHlwZSIsTnVtYmVyKV0sXzB0LnByb3RvdHlwZSwiYmF0Y2hTaXplIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixOdW1iZXIpXSxfMHQucHJvdG90eXBlLCJpbkNvbGFiIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLF8wdC5wcm90b3R5cGUsIl9sb2FkRGF0YUNhbGxiYWNrIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKV0sXzB0LnByb3RvdHlwZSwiZ2V0RGF0YUxvYWRVcmwiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sXzB0LnByb3RvdHlwZSwiX2Rvd25sb2FkVXJsRm4iLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pXSxfMHQucHJvdG90eXBlLCJyZXF1ZXN0RGF0YSIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxfMHQucHJvdG90eXBlLCJfZ2V0RGF0YUxvYWROYW1lIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbixyZWZsZWN0VG9BdHRyaWJ1dGU6ITB9KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLF8wdC5wcm90b3R5cGUsIl9leHBhbmRlZCIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLF8wdC5wcm90b3R5cGUsIl9sb2dTY2FsZUFjdGl2ZSIsdm9pZCAwKSx0KFtvKHt0eXBlOkFycmF5fSksZSgiZGVzaWduOnR5cGUiLEFycmF5KV0sXzB0LnByb3RvdHlwZSwiX3Rvb2x0aXBDb2x1bW5zIix2b2lkIDApLF8wdD10KFtpKCJ0Zi1zY2FsYXItY2FyZCIpXSxfMHQpO2xldCB5MHQ9Y2xhc3MgZXh0ZW5kcyhtMHQoW0FvXSx3ZSkpe2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLnNlc3Npb25Hcm91cD1udWxsLHRoaXMuX3hUeXBlPXdDdC5TVEVQLHRoaXMuX25vTXVsdGlFeHBlcmltZW50cz0hMSx0aGlzLl9yZXF1ZXN0RGF0YT0odCxlLG4pPT57UHJvbWlzZS5hbGwodC5tYXAoKHQ9PnRoaXMuYmFja2VuZC5saXN0TWV0cmljRXZhbHMoe2V4cGVyaW1lbnROYW1lOnRoaXMuZXhwZXJpbWVudE5hbWUsc2Vzc2lvbk5hbWU6dC5ydW4sbWV0cmljTmFtZTp0LnRhZ30pLnRoZW4oKG49PntlKHtpdGVtOnQsZGF0YTpufSl9KSkpKSkuZmluYWxseSgoKCk9PntuKCl9KSl9LHRoaXMuX2NvbG9yU2NhbGU9e3NjYWxlOnQ9Pntjb25zdCBlPUpTT04ucGFyc2UodClbMV0sbj10aGlzLl9pbmRleE9mU2Vzc2lvbi5nZXQoZSk7cmV0dXJuIGZPWyh0aGlzLl9zZXNzaW9uR3JvdXBOYW1lSGFzaCtuKSVmTy5sZW5ndGhdfX19Y29ubmVjdGVkQ2FsbGJhY2soKXtzdXBlci5jb25uZWN0ZWRDYWxsYmFjaygpLHRoaXMuYWRkRXZlbnRMaXN0ZW5lcigiaXJvbi1yZXNpemUiLHRoaXMucmVkcmF3LmJpbmQodGhpcykpfXJlZHJhdygpe3RoaXMuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yQWxsKCJ0Zi1zY2FsYXItY2FyZCIpLmZvckVhY2goKHQ9PnQucmVkcmF3KCkpKX1fc2Vzc2lvbkdyb3VwQ2hhbmdlZCgpe3RoaXMuc2Vzc2lvbkdyb3VwJiYwIT1PYmplY3Qua2V5cyh0aGlzLnNlc3Npb25Hcm91cCkubGVuZ3RoPyh0aGlzLl9pbmRleE9mU2Vzc2lvbj1uZXcgTWFwKHRoaXMuc2Vzc2lvbkdyb3VwLnNlc3Npb25zLm1hcCgoKHQsZSk9Plt0Lm5hbWUsZV0pKSksdGhpcy5fc2Vzc2lvbkdyb3VwTmFtZUhhc2g9Skp0KHRoaXMuc2Vzc2lvbkdyb3VwLm5hbWUpKToodGhpcy5faW5kZXhPZlNlc3Npb249bmV3IE1hcCx0aGlzLl9zZXNzaW9uR3JvdXBOYW1lSGFzaD0wKSx0aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvckFsbCgidGYtc2NhbGFyLWNhcmQiKS5mb3JFYWNoKCh0PT57Y29uc3QgZT10LG49ZS5nZXQoInRhZyIpO2Uuc2V0KCJ0YWciLCIiKSxlLnNldCgidGFnIixuKX0pKX1faGF2ZU1ldHJpY3MoKXtyZXR1cm4gdGhpcy52aXNpYmxlU2NoZW1hJiZBcnJheS5pc0FycmF5KHRoaXMudmlzaWJsZVNjaGVtYS5tZXRyaWNJbmZvcykmJnRoaXMudmlzaWJsZVNjaGVtYS5tZXRyaWNJbmZvcy5sZW5ndGg+MH1faGF2ZU1ldHJpY3NBbmRTZXNzaW9uR3JvdXAoKXtyZXR1cm4gdGhpcy5zZXNzaW9uR3JvdXAmJnRoaXMuX2hhdmVNZXRyaWNzKCl9X2NvbXB1dGVTZXJpZXNGb3JTZXNzaW9uR3JvdXBNZXRyaWModCxlKXtyZXR1cm4gbnVsbD09PXR8fDA9PU9iamVjdC5rZXlzKHQpLmxlbmd0aHx8bnVsbD09PWU/W106dC5zZXNzaW9ucy5maWx0ZXIoKHQ9PnZvaWQgMCE9PUlKdCh0Lm1ldHJpY1ZhbHVlcyxlLm5hbWUpKSkubWFwKCh0PT4oe3RhZzplLm5hbWUscnVuOnQubmFtZX0pKSl9X2NvbXB1dGVUYWdNZXRhZGF0YSh0KXtyZXR1cm57ZGlzcGxheU5hbWU6Q0p0KHQpLGRlc2NyaXB0aW9uOnQuZGVzY3JpcHRpb258fCIifX19O3kwdC50ZW1wbGF0ZT14ZWAKICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1shc2Vzc2lvbkdyb3VwXV0iPgogICAgICA8ZGl2PgogICAgICAgIDxoMz5ObyBzZXNzaW9uIGdyb3VwIHNlbGVjdGVkPC9oMz4KICAgICAgICA8cD5QbGVhc2Ugc2VsZWN0IGEgc2Vzc2lvbiBncm91cCB0byBzZWUgaXRzIG1ldHJpYy1ncmFwaHMgaGVyZS48L3A+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+ZT09PXQpKX19Y2xhc3MgQTB0e2NvbnN0cnVjdG9yKHQsZSxuLGkpe3RoaXMuX3N2Z1Byb3BzPXQsdGhpcy5fc2NoZW1hPWUsdGhpcy5faW50ZXJhY3Rpb25NYW5hZ2VyPW4sdGhpcy5fY29sSW5kZXg9aSx0aGlzLl9pc0Rpc3BsYXllZD0hMSx0aGlzLl95U2NhbGU9bnVsbCx0aGlzLl9zY2FsZVR5cGU9bnVsbCx0aGlzLnNldEJydXNoU2VsZWN0aW9uKG51bGwpfWNvbEluZGV4KCl7cmV0dXJuIHRoaXMuX2NvbEluZGV4fXlTY2FsZSgpe3JldHVybiB0aGlzLl95U2NhbGV9c2NhbGVUeXBlKCl7cmV0dXJuIHRoaXMuX3NjYWxlVHlwZX1icnVzaFNlbGVjdGlvbigpe3JldHVybiB0aGlzLl9icnVzaFNlbGVjdGlvbn1pc0Rpc3BsYXllZCgpe3JldHVybiB0aGlzLl9pc0Rpc3BsYXllZH1zZXRCcnVzaFNlbGVjdGlvbih0KXt0aGlzLl9icnVzaFNlbGVjdGlvbj10LHRoaXMuX2JydXNoRmlsdGVyPXRoaXMuX2J1aWxkQnJ1c2hGaWx0ZXIodGhpcy5icnVzaFNlbGVjdGlvbigpLHRoaXMuc2NhbGVUeXBlKCksdGhpcy55U2NhbGUoKSl9c2V0RG9tYWluQW5kU2NhbGUodCxlKXt0aGlzLl9zY2FsZVR5cGU9ZSx0aGlzLl95U2NhbGU9dzB0KHQuc2xpY2UoKSx0aGlzLl9zdmdQcm9wcy5oZWlnaHQsdGhpcy5zY2FsZVR5cGUoKSksdGhpcy5fYnJ1c2hGaWx0ZXI9dGhpcy5fYnVpbGRCcnVzaEZpbHRlcih0aGlzLmJydXNoU2VsZWN0aW9uKCksdGhpcy5zY2FsZVR5cGUoKSx0aGlzLnlTY2FsZSgpKX1icnVzaEZpbHRlcigpe3JldHVybiB0aGlzLl9icnVzaEZpbHRlcn11cGRhdGVET00odCl7bGV0IGU9YmModGhpcy55U2NhbGUoKSk7dGhpcy5zY2FsZVR5cGUoKT09PVMwdC5RVUFOVElMRSYmKGU9ZS50aWNrVmFsdWVzKHRoaXMueVNjYWxlKCkucXVhbnRpbGVzKCkpLnRpY2tGb3JtYXQoRHkoIi0uNmciKSkpO2NvbnN0IG49RHUodCk7bi5zZWxlY3RBbGwoImciKS5yZW1vdmUoKSxuLmFwcGVuZCgiZyIpLmNsYXNzZWQoImF4aXMiLCEwKS5jYWxsKGUpLmFwcGVuZCgidGV4dCIpLmNsYXNzZWQoImF4aXMtdGl0bGUiLCEwKS5zdHlsZSgiY3Vyc29yIiwibW92ZSIpLnN0eWxlKCJ0ZXh0LWFuY2hvciIsIm1pZGRsZSIpLmF0dHIoInkiLC05KS50ZXh0KCh0PT5BSnQodGhpcy5fc2NoZW1hLHQpKSksbi5jYWxsKEloKCkub24oInN0YXJ0IiwoKCk9Pnt0LnNldEF0dHJpYnV0ZSgiaXMtZHJhZ2dpbmciLCIiKSx0aGlzLl9pbnRlcmFjdGlvbk1hbmFnZXIub25EcmFnU3RhcnQodGhpcy5jb2xJbmRleCgpKX0pKS5vbigiZHJhZyIsKCgpPT50aGlzLl9pbnRlcmFjdGlvbk1hbmFnZXIub25EcmFnKE11LngpKSkub24oImVuZCIsKCgpPT57dGhpcy5faW50ZXJhY3Rpb25NYW5hZ2VyLm9uRHJhZ0VuZCgpLHQucmVtb3ZlQXR0cmlidXRlKCJpcy1kcmFnZ2luZyIpfSkpKTtjb25zdCBpPXlnKCkuZXh0ZW50KFtbLTgsMF0sWzgsdGhpcy5fc3ZnUHJvcHMuaGVpZ2h0KzFdXSkub24oInN0YXJ0IiwoKCk9PntMMHQoTXUpJiYodC5zZXRBdHRyaWJ1dGUoImlzLWJydXNoaW5nIiwiIiksdGhpcy5faW50ZXJhY3Rpb25NYW5hZ2VyLm9uQnJ1c2hDaGFuZ2VkKHRoaXMuY29sSW5kZXgoKSxNdS5zZWxlY3Rpb24pKX0pKS5vbigiYnJ1c2giLCgoKT0+e0wwdChNdSkmJnRoaXMuX2ludGVyYWN0aW9uTWFuYWdlci5vbkJydXNoQ2hhbmdlZCh0aGlzLmNvbEluZGV4KCksTXUuc2VsZWN0aW9uKX0pKS5vbigiZW5kIiwoKCk9PntMMHQoTXUpJiYodGhpcy5faW50ZXJhY3Rpb25NYW5hZ2VyLm9uQnJ1c2hDaGFuZ2VkKHRoaXMuY29sSW5kZXgoKSxNdS5zZWxlY3Rpb24pLHQucmVtb3ZlQXR0cmlidXRlKCJpcy1icnVzaGluZyIpKX0pKSxyPUR1KHQpLmFwcGVuZCgiZyIpLmNsYXNzZWQoImJydXNoIiwhMCk7ci5jYWxsKGkpLGkubW92ZShyLHRoaXMuYnJ1c2hTZWxlY3Rpb24oKSl9c2V0RGlzcGxheWVkKHQpe3RoaXMuX2lzRGlzcGxheWVkPXR9X2J1aWxkQnJ1c2hGaWx0ZXIodCxlLG4pe2lmKG51bGw9PT10KXJldHVybiBuZXcgRTB0O2lmKG51bGw9PT1lKXJldHVybiBjb25zb2xlLmVycm9yKCJTY2FsZSB0eXBlIGlzIG51bGwsIGJ1dCBicnVzaFNlbGVjdGlvbiBpc24ndDogIix0KSxuZXcgRTB0O3N3aXRjaChlKXtjYXNlIFMwdC5MSU5FQVI6Y2FzZSBTMHQuTE9HOntjb25zdFtlLGldPShmdW5jdGlvbiByKHQsZSxuKXtyZXR1cm5bdC5pbnZlcnQoZSksdC5pbnZlcnQobildLnNvcnQoKCh0LGUpPT50LWUpKX0pKG4sdFswXSx0WzFdKTtyZXR1cm4gbmV3IFQwdChlLGksITEsITEpfWNhc2UgUzB0LlFVQU5USUxFOntjb25zdFtlLGldPShmdW5jdGlvbiByKHQsZSxuKXtjb25zdCBpPXQucmFuZ2UoKSxyPWkuZmlsdGVyKCh0PT5lPD10JiZ0PD1uKSkubWFwKChlPT57Y29uc3Qgbj10LmludmVydEV4dGVudChlKTtyZXR1cm4gZT09PWlbaS5sZW5ndGgtMV0/W25bMF0sblsxXSsxXTpufSkpO3JldHVybiAwPT1yLmxlbmd0aD9bMCwwXTpHbChhYyhyKSl9KShuLHRbMF0sdFsxXSk7cmV0dXJuIG5ldyBUMHQoZSxpLCExLCEwKX1jYXNlIFMwdC5OT05fTlVNRVJJQzpyZXR1cm4gbmV3IEMwdCgoZnVuY3Rpb24gZSh0LG4saSl7cmV0dXJuIHQuZG9tYWluKCkuZmlsdGVyKChlPT57Y29uc3Qgcj10KGUpO3JldHVybiBuPD1yJiZyPD1pfSkpfSkobix0WzBdLHRbMV0pKX1yZXR1cm4gY29uc29sZS5lcnJvcigiVW5rbm93biBzY2FsZSB0eXBlOiAiLGUpLG5ldyBFMHR9fWNsYXNzIGswdHtjb25zdHJ1Y3Rvcih0LGUsbil7dGhpcy5fc3ZnUHJvcHM9dCx0aGlzLl9zY2hlbWE9ZSx0aGlzLl9heGVzPXRoaXMuX2NyZWF0ZUF4ZXMobiksdGhpcy5fc3RhdGlvbmFyeUF4ZXNQb3NpdGlvbnM9S00oKS5yYW5nZShbMSx0aGlzLl9zdmdQcm9wcy53aWR0aC0xXSkucGFkZGluZyguNSksdGhpcy5fZHJhZ2dlZEF4aXM9bnVsbCx0aGlzLl9zdmdQcm9wcy5zdmdHLnNlbGVjdEFsbCgiZy5heGlzLXBhcmVudCIpLnJlbW92ZSgpLHRoaXMuX3BhcmVudHNTZWw9dGhpcy5fc3ZnUHJvcHMuc3ZnRy5zZWxlY3RBbGwoIi5heGlzLXBhcmVudCIpfXVwZGF0ZUF4ZXModCxlKXtjb25zb2xlLmFzc2VydCghdGhpcy5pc0F4aXNEcmFnZ2luZygpKTtjb25zdCBuPW5ldyBTZXQ7dC5jb2x1bW5zLmZvckVhY2goKHQ9Pntjb25zdCBpPXQuYWJzb2x1dGVJbmRleDtsZXQgcj10aGlzLl9heGVzW2ldO3Iuc2V0RGlzcGxheWVkKCEwKTtjb25zdCBvPWUubWFwKCh0PT56SnQodGhpcy5fc2NoZW1hLHQsaSkpKTtyLnNldERvbWFpbkFuZFNjYWxlKG8sdC5zY2FsZSksbi5hZGQoaSl9KSksdGhpcy5fYXhlcy5mb3JFYWNoKCh0PT57bi5oYXModC5jb2xJbmRleCgpKXx8dC5zZXREaXNwbGF5ZWQoITEpfSkpLHRoaXMuX3VwZGF0ZVN0YXRpb25hcnlBeGVzUG9zaXRpb25zKG4pLHRoaXMuX3BhcmVudHNTZWw9dGhpcy5fcGFyZW50c1NlbC5kYXRhKEFycmF5LmZyb20obiksKHQ9PnQpKSx0aGlzLl9wYXJlbnRzU2VsLmV4aXQoKS5yZW1vdmUoKSx0aGlzLl9wYXJlbnRzU2VsPXRoaXMuX3BhcmVudHNTZWwuZW50ZXIoKS5hcHBlbmQoImciKS5jbGFzc2VkKCJheGlzLXBhcmVudCIsITApLm1lcmdlKHRoaXMuX3BhcmVudHNTZWwpO2NvbnN0IGk9dGhpczt0aGlzLl9wYXJlbnRzU2VsLmNhbGwoKHQ9PnRoaXMuX3VwZGF0ZUF4ZXNQb3NpdGlvbnNJbkRPTSh0KSkpLmVhY2goKGZ1bmN0aW9uKHQpe2kuX2F4ZXNbdF0udXBkYXRlRE9NKHRoaXMpfSkpfW1hcFZpc2libGVBeGVzKHQpe3JldHVybiB0aGlzLl9zdGF0aW9uYXJ5QXhlc1Bvc2l0aW9ucy5kb21haW4oKS5tYXAoKGU9PnQodGhpcy5nZXRBeGlzUG9zaXRpb24oZSksdGhpcy5fYXhlc1tlXSkpKX1hbGxWaXNpYmxlQXhlc1NhdGlzZnkodCl7cmV0dXJuIHRoaXMuX3N0YXRpb25hcnlBeGVzUG9zaXRpb25zLmRvbWFpbigpLmV2ZXJ5KChlPT50KHRoaXMuZ2V0QXhpc1Bvc2l0aW9uKGUpLHRoaXMuX2F4ZXNbZV0pKSl9Z2V0QXhpc0ZvckNvbEluZGV4KHQpe3JldHVybiB0aGlzLl9heGVzW3RdfWRyYWdTdGFydCh0KXtjb25zb2xlLmFzc2VydCghdGhpcy5pc0F4aXNEcmFnZ2luZygpKSxjb25zb2xlLmFzc2VydCh0aGlzLl9heGVzW3RdLmlzRGlzcGxheWVkKCkpLHRoaXMuX2RyYWdnZWRBeGlzPXRoaXMuX2F4ZXNbdF0sdGhpcy5fZHJhZ2dlZEF4aXNQb3NpdGlvbj10aGlzLl9zdGF0aW9uYXJ5QXhlc1Bvc2l0aW9ucyh0KX1kcmFnKHQpe3Q9TWF0aC5taW4oTWF0aC5tYXgodCwwKSx0aGlzLl9zdmdQcm9wcy53aWR0aCksdGhpcy5fZHJhZ2dlZEF4aXNQb3NpdGlvbj10O2xldCBlPXRoaXMuX3N0YXRpb25hcnlBeGVzUG9zaXRpb25zLmRvbWFpbigpO2Uuc29ydCgoKHQsZSk9PnRoaXMuZ2V0QXhpc1Bvc2l0aW9uKHQpLXRoaXMuZ2V0QXhpc1Bvc2l0aW9uKGUpKSksdGhpcy5fc3RhdGlvbmFyeUF4ZXNQb3NpdGlvbnMuZG9tYWluKGUpLHRoaXMuX3VwZGF0ZUF4ZXNQb3NpdGlvbnNJbkRPTSh0aGlzLl9wYXJlbnRzU2VsKX1kcmFnRW5kKHQpe2NvbnNvbGUuYXNzZXJ0KHRoaXMuaXNBeGlzRHJhZ2dpbmcoKSksdGhpcy5fZHJhZ2dlZEF4aXNQb3NpdGlvbj1udWxsLHRoaXMuX2RyYWdnZWRBeGlzPW51bGwsdGhpcy5fdXBkYXRlQXhlc1Bvc2l0aW9uc0luRE9NKHRoaXMuX3BhcmVudHNTZWwudHJhbnNpdGlvbigpLmR1cmF0aW9uKHQpKX1pc0F4aXNEcmFnZ2luZygpe3JldHVybiBudWxsIT09dGhpcy5fZHJhZ2dlZEF4aXN9Z2V0QXhpc1Bvc2l0aW9uKHQpe3JldHVybiBudWxsIT09dGhpcy5fZHJhZ2dlZEF4aXMmJnRoaXMuX2RyYWdnZWRBeGlzLmNvbEluZGV4KCk9PT10P3RoaXMuX2RyYWdnZWRBeGlzUG9zaXRpb246dGhpcy5fc3RhdGlvbmFyeUF4ZXNQb3NpdGlvbnModCl9X3VwZGF0ZVN0YXRpb25hcnlBeGVzUG9zaXRpb25zKHQpe2NvbnN0IGU9dGhpcy5fc3RhdGlvbmFyeUF4ZXNQb3NpdGlvbnMuZG9tYWluKCkuZmlsdGVyKChlPT50LmhhcyhlKSkpLG49QXJyYXkuZnJvbShuZXcgU2V0KFsuLi5lLC4uLkFycmF5LmZyb20odCldKSk7dGhpcy5fc3RhdGlvbmFyeUF4ZXNQb3NpdGlvbnMuZG9tYWluKG4pfV91cGRhdGVBeGVzUG9zaXRpb25zSW5ET00odCl7dC5hdHRyKCJ0cmFuc2Zvcm0iLCh0PT5LSnQodGhpcy5nZXRBeGlzUG9zaXRpb24odCkpKSl9X2NyZWF0ZUF4ZXModCl7cmV0dXJuIEtsKFBKdCh0aGlzLl9zY2hlbWEpKS5tYXAoKGU9Pm5ldyBBMHQodGhpcy5fc3ZnUHJvcHMsdGhpcy5fc2NoZW1hLHQsZSkpKX19ZnVuY3Rpb24gTDB0KHQpe3JldHVybiBudWxsIT09dC5zb3VyY2VFdmVudH0hKGZ1bmN0aW9uKHQpe3RbdC5GT1JFR1JPVU5EPTBdPSJGT1JFR1JPVU5EIix0W3QuQkFDS0dST1VORD0xXT0iQkFDS0dST1VORCJ9KShNMHR8fChNMHQ9e30pKTtjbGFzcyBQMHR7Y29uc3RydWN0b3IodCl7dm9pZCAwPT09dCYmKHQ9eGgobnVsbCkpLGNvbnNvbGUuYXNzZXJ0KHQuc2l6ZSgpPD0xKSx0aGlzLl9zZXNzaW9uR3JvdXBTZWw9dH1zZXNzaW9uR3JvdXAoKXtyZXR1cm4gMT09PXRoaXMuX3Nlc3Npb25Hcm91cFNlbC5zaXplKCk/dGhpcy5fc2Vzc2lvbkdyb3VwU2VsLmRhdHVtKCk6bnVsbH1pc051bGwoKXtyZXR1cm4gbnVsbD09PXRoaXMuc2Vzc2lvbkdyb3VwKCl9c2VsZWN0aW9uKCl7cmV0dXJuIHRoaXMuX3Nlc3Npb25Hcm91cFNlbH1lcXVhbHNUbyh0KXtyZXR1cm4gdGhpcy5pc051bGwoKT90LmlzTnVsbCgpOiF0LmlzTnVsbCgpJiZ0LnNlc3Npb25Hcm91cCgpLm5hbWU9PXRoaXMuc2Vzc2lvbkdyb3VwKCkubmFtZX19Y2xhc3MgTjB0e2NvbnN0cnVjdG9yKHQsZSxuKXt0aGlzLl9zdmdQcm9wcz10LHRoaXMuX3NjaGVtYT1lLHRoaXMuX2F4ZXNDb2xsZWN0aW9uPW4sdGhpcy5fc2Vzc2lvbkdyb3Vwcz1bXSx0aGlzLl9zdmdQcm9wcy5zdmdHLnNlbGVjdEFsbCgiZy5iYWNrZ3JvdW5kIikucmVtb3ZlKCksdGhpcy5fc3ZnUHJvcHMuc3ZnRy5zZWxlY3RBbGwoImcuZm9yZWdyb3VuZCIpLnJlbW92ZSgpLHRoaXMuX2JnUGF0aHNTZWw9dGhpcy5fc3ZnUHJvcHMuc3ZnRy5hcHBlbmQoImciKS5jbGFzc2VkKCJiYWNrZ3JvdW5kIiwhMCkuc2VsZWN0QWxsKCJwYXRoIiksdGhpcy5fZmdQYXRoc1NlbD10aGlzLl9zdmdQcm9wcy5zdmdHLmFwcGVuZCgiZyIpLmNsYXNzZWQoImZvcmVncm91bmQiLCEwKS5zZWxlY3RBbGwoInBhdGgiKSx0aGlzLl91cGRhdGVWaXNpYmxlRmdQYXRoc1NlbCgpLHRoaXMuX3BlYWtlZFNlc3Npb25Hcm91cEhhbmRsZT1uZXcgUDB0LHRoaXMuX3NlbGVjdGVkU2Vzc2lvbkdyb3VwSGFuZGxlPW5ldyBQMHQsdGhpcy5fZDNsaW5lPURMKCkuY3VydmUoUkwpfWdldFNlc3Npb25Hcm91cEhhbmRsZSh0KXtyZXR1cm4gbnVsbD09dD9uZXcgUDB0Om5ldyBQMHQodGhpcy5fZmdQYXRoc1NlbC5maWx0ZXIoKGU9PmUubmFtZT09PXQubmFtZSkpKX1oaWRlQmFja2dyb3VuZExpbmVzKCl7dGhpcy5fYmdQYXRoc1NlbC5hdHRyKCJ2aXNpYmlsaXR5IiwiaGlkZGVuIil9c2hvd0JhY2tncm91bmRMaW5lcygpe3RoaXMuX2JnUGF0aHNTZWwuYXR0cigidmlzaWJpbGl0eSIsbnVsbCl9cGVha2VkU2Vzc2lvbkdyb3VwSGFuZGxlKCl7cmV0dXJuIHRoaXMuX3BlYWtlZFNlc3Npb25Hcm91cEhhbmRsZX1zZWxlY3RlZFNlc3Npb25Hcm91cEhhbmRsZSgpe3JldHVybiB0aGlzLl9zZWxlY3RlZFNlc3Npb25Hcm91cEhhbmRsZX1yZWNvbXB1dGVDb250cm9sUG9pbnRzKHQsZT0wKXsodD09PU0wdC5GT1JFR1JPVU5EP3RoaXMuX2ZnUGF0aHNTZWw6dGhpcy5fYmdQYXRoc1NlbCkudHJhbnNpdGlvbigpLmR1cmF0aW9uKGUpLmF0dHIoImQiLCh0PT50aGlzLl9wYXRoREF0dHJpYnV0ZSh0KSkpLHQ9PT1NMHQuRk9SRUdST1VORCYmd2luZG93LnNldFRpbWVvdXQoKCgpPT57Y29uc3QgdD10aGlzO3RoaXMuX2ZnUGF0aHNTZWwuZWFjaCgoZnVuY3Rpb24oZSl7dC5fc2V0Q29udHJvbFBvaW50c1Byb3BlcnR5KHRoaXMsZSl9KSl9KSl9cmVjb21wdXRlRm9yZWdyb3VuZExpbmVzVmlzaWJpbGl0eSgpe3RoaXMuX2ZnUGF0aHNTZWwuY2xhc3NlZCgiaW52aXNpYmxlLXBhdGgiLCh0PT4hdGhpcy5fYXhlc0NvbGxlY3Rpb24uYWxsVmlzaWJsZUF4ZXNTYXRpc2Z5KCgoZSxuKT0+bi5icnVzaEZpbHRlcigpLmlzUGFzc2luZyh6SnQodGhpcy5fc2NoZW1hLHQsbi5jb2xJbmRleCgpKSkpKSkpLHRoaXMuX3VwZGF0ZVZpc2libGVGZ1BhdGhzU2VsKCl9c2V0Rm9yZWdyb3VuZExpbmVzQ29sb3IodCxlLG4pe2NvbnN0IGk9dGhpcy5fY3JlYXRlTGluZUNvbG9yRnVuY3Rpb24odCxlLG4pO3RoaXMuX2ZnUGF0aHNTZWwuYXR0cigic3Ryb2tlIixpKX1yZWRyYXcodCxlLG4saSl7Y29uc3Qgcj10aGlzLl9wZWFrZWRTZXNzaW9uR3JvdXBIYW5kbGUuc2Vzc2lvbkdyb3VwKCksbz10aGlzLl9zZWxlY3RlZFNlc3Npb25Hcm91cEhhbmRsZS5zZXNzaW9uR3JvdXAoKTt0aGlzLl9zZXNzaW9uR3JvdXBzPXQsdGhpcy5fZmdQYXRoc1NlbD10aGlzLl9yZWNvbXB1dGVQYXRoU2VsZWN0aW9uKHRoaXMuX2ZnUGF0aHNTZWwpLHRoaXMuX2JnUGF0aHNTZWw9dGhpcy5fcmVjb21wdXRlUGF0aFNlbGVjdGlvbih0aGlzLl9iZ1BhdGhzU2VsKSx0aGlzLl9wZWFrZWRTZXNzaW9uR3JvdXBIYW5kbGU9dGhpcy5nZXRTZXNzaW9uR3JvdXBIYW5kbGUociksdGhpcy5fc2VsZWN0ZWRTZXNzaW9uR3JvdXBIYW5kbGU9dGhpcy5nZXRTZXNzaW9uR3JvdXBIYW5kbGUobyksdGhpcy5yZWNvbXB1dGVDb250cm9sUG9pbnRzKE0wdC5GT1JFR1JPVU5EKSx0aGlzLnJlY29tcHV0ZUNvbnRyb2xQb2ludHMoTTB0LkJBQ0tHUk9VTkQpLHRoaXMucmVjb21wdXRlRm9yZWdyb3VuZExpbmVzVmlzaWJpbGl0eSgpLHRoaXMuc2V0Rm9yZWdyb3VuZExpbmVzQ29sb3IoZSxuLGkpfXVwZGF0ZVBlYWtlZFNlc3Npb25Hcm91cCh0KXt0aGlzLl9wZWFrZWRTZXNzaW9uR3JvdXBIYW5kbGUuc2VsZWN0aW9uKCkuY2xhc3NlZCgicGVha2VkLXBhdGgiLCExKSx0aGlzLl9wZWFrZWRTZXNzaW9uR3JvdXBIYW5kbGU9dCx0aGlzLl9wZWFrZWRTZXNzaW9uR3JvdXBIYW5kbGUuc2VsZWN0aW9uKCkuY2xhc3NlZCgicGVha2VkLXBhdGgiLCEwKX1jbGVhclBlYWtlZFNlc3Npb25Hcm91cCgpe3RoaXMudXBkYXRlUGVha2VkU2Vzc2lvbkdyb3VwKG5ldyBQMHQpfXVwZGF0ZVNlbGVjdGVkU2Vzc2lvbkdyb3VwKHQpe3RoaXMuX3NlbGVjdGVkU2Vzc2lvbkdyb3VwSGFuZGxlLnNlbGVjdGlvbigpLmNsYXNzZWQoInNlbGVjdGVkLXBhdGgiLCExKSx0aGlzLl9zZWxlY3RlZFNlc3Npb25Hcm91cEhhbmRsZT10LHRoaXMuX3NlbGVjdGVkU2Vzc2lvbkdyb3VwSGFuZGxlLnNlbGVjdGlvbigpLmNsYXNzZWQoInNlbGVjdGVkLXBhdGgiLCEwKX1maW5kQ2xvc2VzdFNlc3Npb25Hcm91cCh0LGUpe2NvbnN0IG49dGhpcy5fYXhlc0NvbGxlY3Rpb24ubWFwVmlzaWJsZUF4ZXMoKCh0LGUpPT50KSksaT14MHQodGhpcy5fdmlzaWJsZUZnUGF0aHNTZWwubm9kZXMoKSxuLFt0LGVdLDEwMCk7cmV0dXJuIG51bGw9PT1pP25ldyBQMHQ6bmV3IFAwdChEdShpKSl9X2NyZWF0ZUxpbmVDb2xvckZ1bmN0aW9uKHQsZSxuKXtpZihudWxsPT09dClyZXR1cm4oKT0+InJlZCI7Y29uc3QgaT1jRSgpLmRvbWFpbihESnQodGhpcy5fc2NoZW1hLHRoaXMuX3Nlc3Npb25Hcm91cHMsdCkpLnJhbmdlKFtlLG5dKS5pbnRlcnBvbGF0ZShrcCk7cmV0dXJuIGU9Pmkoekp0KHRoaXMuX3NjaGVtYSxlLHQpKX1fcmVjb21wdXRlUGF0aFNlbGVjdGlvbih0KXtyZXR1cm4odD10LmRhdGEodGhpcy5fc2Vzc2lvbkdyb3VwcywodD0+dC5uYW1lKSkpLmV4aXQoKS5yZW1vdmUoKSx0LmVudGVyKCkuYXBwZW5kKCJwYXRoIikubWVyZ2UodCl9X3NldENvbnRyb2xQb2ludHNQcm9wZXJ0eSh0LGUpe3QuY29udHJvbFBvaW50cz10aGlzLl9jb21wdXRlQ29udHJvbFBvaW50cyhlKX1fY29tcHV0ZUNvbnRyb2xQb2ludHModCl7cmV0dXJuIHRoaXMuX2F4ZXNDb2xsZWN0aW9uLm1hcFZpc2libGVBeGVzKCgoZSxuKT0+W2Usbi55U2NhbGUoKSh6SnQodGhpcy5fc2NoZW1hLHQsbi5jb2xJbmRleCgpKSldKSl9X3BhdGhEQXR0cmlidXRlKHQpe3JldHVybiB0aGlzLl9kM2xpbmUodGhpcy5fY29tcHV0ZUNvbnRyb2xQb2ludHModCkpfV91cGRhdGVWaXNpYmxlRmdQYXRoc1NlbCgpe3RoaXMuX3Zpc2libGVGZ1BhdGhzU2VsPXRoaXMuX2ZnUGF0aHNTZWwuZmlsdGVyKCI6bm90KC5pbnZpc2libGUtcGF0aCkiKX19Y2xhc3MgSTB0e2NvbnN0cnVjdG9yKHQsZSl7dGhpcy5zdmc9RHUodCk7Y29uc3Qgbj0zMCxpPTEwLHI9MTAsbz0xMCxhPTEwMCplK28raSxzPTIwMCtuK3I7dGhpcy5zdmcuYXR0cigidmlld0JveCIsYDAgMCAke2F9ICR7c31gKSx0aGlzLnN2Zy5hdHRyKCJwcmVzZXJ2ZUFzcGVjdFJhdGlvIiwieE1pZFlNaWQiKSx0aGlzLnN2Zy5zdHlsZSgibWluLXdpZHRoIixhKyJweCIpLHRoaXMuc3ZnLnN0eWxlKCJtaW4taGVpZ2h0IixzKyJweCIpLHRoaXMud2lkdGg9YS1vLWksdGhpcy5oZWlnaHQ9cy1uLXIsdGhpcy5zdmdHPXRoaXMuc3ZnLmFwcGVuZCgiZyIpLmF0dHIoInRyYW5zZm9ybSIsS0p0KG8sbikpfX1jbGFzcyBSMHR7Y29uc3RydWN0b3IodCxlLG4saSl7dGhpcy5fc3ZnUHJvcHM9dCx0aGlzLl9zY2hlbWE9ZSx0aGlzLl9wZWFrZWRTZXNzaW9uR3JvdXBDaGFuZ2VkQ0I9bix0aGlzLl9zZWxlY3RlZFNlc3Npb25Hcm91cENoYW5nZWRDQj1pLHRoaXMuX2F4ZXNDb2xsZWN0aW9uPW5ldyBrMHQodCxlLHRoaXMpLHRoaXMuX2xpbmVzQ29sbGVjdGlvbj1uZXcgTjB0KHQsZSx0aGlzLl9heGVzQ29sbGVjdGlvbiksdGhpcy5fc3ZnUHJvcHMuc3ZnLm9uKCJjbGljayIsKCgpPT50aGlzLm9uQ2xpY2soKSkpLm9uKCJtb3VzZW1vdmUgbW91c2VlbnRlciIsKCgpPT57Y29uc3RbdCxlXT1iaCh0aGlzLl9zdmdQcm9wcy5zdmdHLm5vZGUoKSk7dGhpcy5vbk1vdXNlTW92ZWQodCxlKX0pKS5vbigibW91c2VsZWF2ZSIsKCgpPT50aGlzLm9uTW91c2VMZWF2ZSgpKSl9b25EcmFnU3RhcnQodCl7dGhpcy5fYXhlc0NvbGxlY3Rpb24uZHJhZ1N0YXJ0KHQpLHRoaXMuX2xpbmVzQ29sbGVjdGlvbi5oaWRlQmFja2dyb3VuZExpbmVzKCl9b25EcmFnKHQpe3RoaXMuX2F4ZXNDb2xsZWN0aW9uLmRyYWcodCksdGhpcy5fbGluZXNDb2xsZWN0aW9uLnJlY29tcHV0ZUNvbnRyb2xQb2ludHMoTTB0LkZPUkVHUk9VTkQpfW9uRHJhZ0VuZCgpe3RoaXMuX2F4ZXNDb2xsZWN0aW9uLmRyYWdFbmQoNTAwKSx0aGlzLl9saW5lc0NvbGxlY3Rpb24ucmVjb21wdXRlQ29udHJvbFBvaW50cyhNMHQuRk9SRUdST1VORCw1MDApLHdpbmRvdy5zZXRUaW1lb3V0KCgoKT0+e3RoaXMuX2xpbmVzQ29sbGVjdGlvbi5yZWNvbXB1dGVDb250cm9sUG9pbnRzKE0wdC5CQUNLR1JPVU5EKSx0aGlzLl9saW5lc0NvbGxlY3Rpb24uc2hvd0JhY2tncm91bmRMaW5lcygpfSksNTAwKX1vbkJydXNoQ2hhbmdlZCh0LGUpe3RoaXMuX2F4ZXNDb2xsZWN0aW9uLmdldEF4aXNGb3JDb2xJbmRleCh0KS5zZXRCcnVzaFNlbGVjdGlvbihlKSx0aGlzLl9saW5lc0NvbGxlY3Rpb24ucmVjb21wdXRlRm9yZWdyb3VuZExpbmVzVmlzaWJpbGl0eSgpfW9uTW91c2VNb3ZlZCh0LGUpe3RoaXMuX2xpbmVzQ29sbGVjdGlvbi51cGRhdGVQZWFrZWRTZXNzaW9uR3JvdXAodGhpcy5fbGluZXNDb2xsZWN0aW9uLmZpbmRDbG9zZXN0U2Vzc2lvbkdyb3VwKHQsZSkpLHRoaXMuX3BlYWtlZFNlc3Npb25Hcm91cENoYW5nZWRDQih0aGlzLl9saW5lc0NvbGxlY3Rpb24ucGVha2VkU2Vzc2lvbkdyb3VwSGFuZGxlKCkuc2Vzc2lvbkdyb3VwKCkpfW9uTW91c2VMZWF2ZSgpe3RoaXMuX2xpbmVzQ29sbGVjdGlvbi5wZWFrZWRTZXNzaW9uR3JvdXBIYW5kbGUoKS5pc051bGwoKXx8KHRoaXMuX2xpbmVzQ29sbGVjdGlvbi5jbGVhclBlYWtlZFNlc3Npb25Hcm91cCgpLHRoaXMuX3BlYWtlZFNlc3Npb25Hcm91cENoYW5nZWRDQihudWxsKSl9b25DbGljaygpe3RoaXMuX2xpbmVzQ29sbGVjdGlvbi5wZWFrZWRTZXNzaW9uR3JvdXBIYW5kbGUoKS5zZXNzaW9uR3JvdXAoKT09PXRoaXMuX2xpbmVzQ29sbGVjdGlvbi5zZWxlY3RlZFNlc3Npb25Hcm91cEhhbmRsZSgpLnNlc3Npb25Hcm91cCgpP3RoaXMuX2xpbmVzQ29sbGVjdGlvbi51cGRhdGVTZWxlY3RlZFNlc3Npb25Hcm91cChuZXcgUDB0KTp0aGlzLl9saW5lc0NvbGxlY3Rpb24udXBkYXRlU2VsZWN0ZWRTZXNzaW9uR3JvdXAodGhpcy5fbGluZXNDb2xsZWN0aW9uLnBlYWtlZFNlc3Npb25Hcm91cEhhbmRsZSgpKSx0aGlzLl9zZWxlY3RlZFNlc3Npb25Hcm91cENoYW5nZWRDQih0aGlzLl9saW5lc0NvbGxlY3Rpb24uc2VsZWN0ZWRTZXNzaW9uR3JvdXBIYW5kbGUoKS5zZXNzaW9uR3JvdXAoKSl9b25PcHRpb25zT3JTZXNzaW9uR3JvdXBzQ2hhbmdlZCh0LGUpe3RoaXMuX2F4ZXNDb2xsZWN0aW9uLnVwZGF0ZUF4ZXModCxlKTtjb25zdCBuPXRoaXMuX2xpbmVzQ29sbGVjdGlvbi5wZWFrZWRTZXNzaW9uR3JvdXBIYW5kbGUoKSxpPXRoaXMuX2xpbmVzQ29sbGVjdGlvbi5zZWxlY3RlZFNlc3Npb25Hcm91cEhhbmRsZSgpO3RoaXMuX2xpbmVzQ29sbGVjdGlvbi5yZWRyYXcoZSx2b2lkIDAhPT10LmNvbG9yQnlDb2x1bW5JbmRleD90LmNvbHVtbnNbdC5jb2xvckJ5Q29sdW1uSW5kZXhdLmFic29sdXRlSW5kZXg6bnVsbCx0Lm1pbkNvbG9yLHQubWF4Q29sb3IpLG4uZXF1YWxzVG8odGhpcy5fbGluZXNDb2xsZWN0aW9uLnBlYWtlZFNlc3Npb25Hcm91cEhhbmRsZSgpKXx8dGhpcy5fcGVha2VkU2Vzc2lvbkdyb3VwQ2hhbmdlZENCKHRoaXMuX2xpbmVzQ29sbGVjdGlvbi5wZWFrZWRTZXNzaW9uR3JvdXBIYW5kbGUoKS5zZXNzaW9uR3JvdXAoKSksaS5lcXVhbHNUbyh0aGlzLl9saW5lc0NvbGxlY3Rpb24uc2VsZWN0ZWRTZXNzaW9uR3JvdXBIYW5kbGUoKSl8fHRoaXMuX3NlbGVjdGVkU2Vzc2lvbkdyb3VwQ2hhbmdlZENCKHRoaXMuX2xpbmVzQ29sbGVjdGlvbi5zZWxlY3RlZFNlc3Npb25Hcm91cEhhbmRsZSgpLnNlc3Npb25Hcm91cCgpKX1zY2hlbWEoKXtyZXR1cm4gdGhpcy5fc2NoZW1hfX1sZXQgTzB0PWNsYXNzIGV4dGVuZHMoY3IoZ2wod2UpKSl7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMuc2VsZWN0ZWRTZXNzaW9uR3JvdXA9bnVsbCx0aGlzLmNsb3Nlc3RTZXNzaW9uR3JvdXA9bnVsbCx0aGlzLnJlZHJhd0NvdW50PTB9X29wdGlvbnNPclNlc3Npb25Hcm91cHNDaGFuZ2VkKCl7dmFyIHQ7aWYoIXRoaXMub3B0aW9ucylyZXR1cm47Y29uc3R7Y29uZmlndXJhdGlvbjplfT1udWxsIT09KHQ9dGhpcy5fcHJldk9wdGlvbnMpJiZ2b2lkIDAhPT10P3Q6e30se2NvbmZpZ3VyYXRpb246bn09dGhpcy5vcHRpb25zO2lmKHZvaWQgMD09PXRoaXMuX2ludGVyYWN0aW9uTWFuYWdlcnx8IUNlLmV4cG9ydHMuaXNFcXVhbChlLnNjaGVtYSxuLnNjaGVtYSl8fCFDZS5leHBvcnRzLmlzRXF1YWwoZS5jb2x1bW5zVmlzaWJpbGl0eSxuLmNvbHVtbnNWaXNpYmlsaXR5KSl7RHUodGhpcy4kLnN2Zykuc2VsZWN0QWxsKCIqIikucmVtb3ZlKCk7Y29uc3QgdD1uZXcgSTB0KHRoaXMuJC5zdmcsbi5jb2x1bW5zVmlzaWJpbGl0eS5maWx0ZXIoQm9vbGVhbikubGVuZ3RoKTt0aGlzLnNjb3BlU3VidHJlZSh0aGlzLiQuc3ZnLCEwKSx0aGlzLl9pbnRlcmFjdGlvbk1hbmFnZXI9bmV3IFIwdCh0LG4uc2NoZW1hLCh0PT50aGlzLmNsb3Nlc3RTZXNzaW9uR3JvdXBDaGFuZ2VkKHQpKSwodD0+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+bi5jb2w9PXQmJm4ubWV0cmljPT1lKSkpKSkpO3JldHVybltvLHMsYV19KSh2LmFwcGVuZCgiZyIpLHgpO2NvbnN0IEE9bi5tYXAoKHQ9PmkubWFwKChlPT4oZnVuY3Rpb24gbih0LGUpe2NvbnN0IG49W107cmV0dXJuIEVbdF1bZV0uZWFjaCgoZnVuY3Rpb24oKXtuLnB1c2godGhpcyl9KSksdHkoKS54KCh0PT5EdSh0KS5kYXR1bSgpLngpKS55KCh0PT5EdSh0KS5kYXR1bSgpLnkpKS5hZGRBbGwobil9KSh0LGUpKSkpKTtsZXQgaz1udWxsO1IoKSYmKGs9di5maWx0ZXIoKHQ9PkNlLmV4cG9ydHMuaXNFcXVhbCh0LGUuX2JydXNoZWRDZWxsSW5kZXgpKSksY29uc29sZS5hc3NlcnQoMT09ay5zaXplKCksaykpO2xldCBMPW5ldyBTZXQoTS5ub2RlcygpKTtmdW5jdGlvbiBQKCl7bGV0IG49bmV3IFNldChNLm5vZGVzKCkpOyhmdW5jdGlvbiBpKCl7cmV0dXJuIVIoKXx8ZS5fYnJ1c2hTZWxlY3Rpb25bMF1bMF09PT1lLl9icnVzaFNlbGVjdGlvblsxXVswXXx8ZS5fYnJ1c2hTZWxlY3Rpb25bMF1bMV09PT1lLl9icnVzaFNlbGVjdGlvblsxXVsxXX0pKCl8fChuPShmdW5jdGlvbiByKGUsbil7Y29uc29sZS5hc3NlcnQobnVsbCE9PWUpLGNvbnNvbGUuYXNzZXJ0KG51bGwhPT1uKTtjb25zdFtpLHJdPWUsbz1uZXcgU2V0O3JldHVybiB0LnF1YWRUcmVlVmlzaXRQb2ludHNJblJlY3QoQVtpXVtyXSxuWzBdWzBdLG5bMF1bMV0sblsxXVswXSxuWzFdWzFdLCh0PT57RHUodCkuZGF0dW0oKS5zZXNzaW9uR3JvdXBNYXJrZXJzLmZvckVhY2goKHQ9PntvLmFkZCh0KX0pKX0pKSxvfSkoZS5fYnJ1c2hlZENlbGxJbmRleCxlLl9icnVzaFNlbGVjdGlvbikpLHhoKEFycmF5LmZyb20odC5maWx0ZXJTZXQobiwodD0+IUwuaGFzKHQpKSkpKS5hdHRyKCJmaWxsIix4KSx4aChBcnJheS5mcm9tKHQuZmlsdGVyU2V0KEwsKHQ9PiFuLmhhcyh0KSkpKSkuYXR0cigiZmlsbCIsIiNkZGQiKSxMPW59UCgpO2NvbnN0IE49dmcoKS5leHRlbnQoW1stNCwtNF0sW2wtMSs1LTEsYy0xKzUtMV1dKS5vbigic3RhcnQiLChmdW5jdGlvbigpe1IoKSYmay5ub2RlKCkhPXRoaXMmJk4ubW92ZShrLG51bGwpLEkodGhpcyl9KSkub24oImJydXNoIiwoZnVuY3Rpb24oKXtJKHRoaXMpfSkpLm9uKCJlbmQiLChmdW5jdGlvbigpe0kodGhpcyl9KSk7ZnVuY3Rpb24gSSh0KXtjb25zdCBuPV9nKHQpOyFSKCkmJm51bGw9PT1ufHxSKCkmJnQ9PT1rLm5vZGUoKSYmQ2UuZXhwb3J0cy5pc0VxdWFsKG4sZS5fYnJ1c2hTZWxlY3Rpb24pfHwoZS5fYnJ1c2hTZWxlY3Rpb249bixudWxsIT09bj8oaz1EdSh0KSxlLl9icnVzaGVkQ2VsbEluZGV4PWsuZGF0dW0oKSk6KGs9bnVsbCxlLl9icnVzaGVkQ2VsbEluZGV4PW51bGwpLFAoKSl9ZnVuY3Rpb24gUigpe3JldHVybiBudWxsIT09ZS5fYnJ1c2hlZENlbGxJbmRleCYmbnVsbCE9PWUuX2JydXNoU2VsZWN0aW9ufXYuY2FsbChOKSxSKCkmJk4ubW92ZShrLGUuX2JydXNoU2VsZWN0aW9uKTtsZXQgTz1udWxsLHo9bnVsbDtudWxsIT09dGhpcy5zZWxlY3RlZFNlc3Npb25Hcm91cCYmKHo9eGgoVC5nZXQodGhpcy5zZWxlY3RlZFNlc3Npb25Hcm91cCkpLmNsYXNzZWQoInNlbGVjdGVkLW1hcmtlciIsITApKSx2Lm9uKCJjbGljayIsKGZ1bmN0aW9uKCl7Y29uc3QgdD1PPT09ej9udWxsOk87aWYodD09PXopcmV0dXJuO251bGwhPT16JiZ6LmNsYXNzZWQoInNlbGVjdGVkLW1hcmtlciIsITEpLHo9dCxudWxsIT09eiYmei5jbGFzc2VkKCJzZWxlY3RlZC1tYXJrZXIiLCEwKTtjb25zdCBuPW51bGw9PT16P251bGw6ei5kYXR1bSgpLnNlc3Npb25Hcm91cDtlLnNlbGVjdGVkU2Vzc2lvbkdyb3VwPW59KSkub24oIm1vdXNlbW92ZSBtb3VzZWVudGVyIiwoZnVuY3Rpb24oW24saV0pe2NvbnN0W3Isb109YmgodGhpcyksYT0oZnVuY3Rpb24gcyhlLG4saSxyLG8pe2xldCBhPTEvMCxzPW51bGw7aWYodC5xdWFkVHJlZVZpc2l0UG9pbnRzSW5EaXNrKEFbZV1bbl0saSxyLG8sKCh0LGUpPT57aWYoTC5oYXModCkmJmU8YSl7Y29uc3Qgbj1EdSh0KS5kYXR1bSgpO2E9ZSxzPW4uc2Vzc2lvbkdyb3VwfX0pKSxudWxsPT09cylyZXR1cm4gbnVsbDtyZXR1cm4geGgoVC5nZXQocykpfSkobixpLHIsbywyMCk7TyE9PWEmJihudWxsIT09TyYmTy5jbGFzc2VkKCJjbG9zZXN0LW1hcmtlciIsITEpLE89YSxudWxsIT09Tz8oTy5jbGFzc2VkKCJjbG9zZXN0LW1hcmtlciIsITApLGUuY2xvc2VzdFNlc3Npb25Hcm91cD1PLmRhdHVtKCkuc2Vzc2lvbkdyb3VwKTplLmNsb3Nlc3RTZXNzaW9uR3JvdXA9bnVsbCl9KSkub24oIm1vdXNlbGVhdmUiLChmdW5jdGlvbihbdCxuXSl7bnVsbCE9PU8mJihPLmNsYXNzZWQoImNsb3Nlc3QtbWFya2VyIiwhMSksTz1udWxsLGUuY2xvc2VzdFNlc3Npb25Hcm91cD1udWxsKX0pKSx0aGlzLl9zdmcuc2VsZWN0QWxsKCIqIikuY2xhc3NlZCgidGYtaHBhcmFtcy1zY2F0dGVyLXBsb3QtbWF0cml4LXBsb3QiLCEwKX1fY2VsbFNjYWxlKHQsZSl7Y29uc3Qgbj10aGlzLl9jb2xFeHRlbnQodCksaT1jRSgpLmRvbWFpbihuKS5yYW5nZShlKTtpZigiTElORUFSIj09PXRoaXMub3B0aW9ucy5jb2x1bW5zW3RdLnNjYWxlKXJldHVybiBpO2lmKCJMT0ciPT09dGhpcy5vcHRpb25zLmNvbHVtbnNbdF0uc2NhbGUpcmV0dXJuIG5bMF08PTAmJm5bMV0+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+MX1fZ2V0QXJpYUV4cGFuZGVkKCl7cmV0dXJuIHRoaXMuYWN0dWFsU2l6ZT8idHJ1ZSI6ImZhbHNlIn1hdHRhY2hlZCgpe3RoaXMucmVsb2FkKCl9cmVsb2FkKCl7aWYoIXRoaXMuaXNBdHRhY2hlZClyZXR1cm47dGhpcy5fbWV0YWRhdGFDYW5jZWxsZXIuY2FuY2VsQWxsKCk7Y29uc3QgdD1QTyhFcigpLnBsdWdpblJvdXRlKCJpbWFnZXMiLCIvaW1hZ2VzIikse3RhZzp0aGlzLnRhZyxydW46dGhpcy5ydW4sc2FtcGxlOnRoaXMuc2FtcGxlfSksZT10aGlzLl9tZXRhZGF0YUNhbmNlbGxlci5jYW5jZWxsYWJsZSgodD0+e2lmKHQuY2FuY2VsbGVkKXJldHVybjtjb25zdCBlPXQudmFsdWUubWFwKHRoaXMuX2NyZWF0ZVN0ZXBEYXR1bS5iaW5kKHRoaXMpKTt0aGlzLnNldCgiX3N0ZXBzIixlKSx0aGlzLnNldCgiX3N0ZXBJbmRleCIsZS5sZW5ndGgtMSl9KSk7dGhpcy5yZXF1ZXN0TWFuYWdlci5yZXF1ZXN0KHQpLnRoZW4oZSl9X2NyZWF0ZVN0ZXBEYXR1bSh0KXtsZXQgZT1FcigpLnBsdWdpblJvdXRlKCJpbWFnZXMiLCIvaW5kaXZpZHVhbEltYWdlIik7cmV0dXJuIGU9UE8oZSx7dHM6dC53YWxsX3RpbWV9KSxlKz0iJiIrdC5xdWVyeSx7d2FsbF90aW1lOm5ldyBEYXRlKDFlMyp0LndhbGxfdGltZSksc3RlcDp0LnN0ZXAsdXJsOmV9fV91cGRhdGVJbWFnZVVybCgpe3ZhciB0PXRoaXMuX2N1cnJlbnRTdGVwLGU9dGhpcy5icmlnaHRuZXNzQWRqdXN0bWVudCxuPXRoaXMuY29udHJhc3RQZXJjZW50YWdlO2lmKCF0KXJldHVybjtjb25zdCBpPW5ldyBJbWFnZTt0aGlzLl9pbWFnZUNhbmNlbGxlci5jYW5jZWxBbGwoKSxpLm9ubG9hZD1pLm9uZXJyb3I9dGhpcy5faW1hZ2VDYW5jZWxsZXIuY2FuY2VsbGFibGUoKHQ9PntpZih0LmNhbmNlbGxlZClyZXR1cm47Y29uc3QgZT10aGlzLiQkKCIjbWFpbi1pbWFnZS1jb250YWluZXIiKTtlLnRleHRDb250ZW50PSIiLGVyKGUpLmFwcGVuZENoaWxkKGkpLHRoaXMuc2V0KCJfaXNJbWFnZUxvYWRpbmciLCExKX0pKS5iaW5kKHRoaXMpLGkuc3R5bGUuZmlsdGVyPWBjb250cmFzdCgke259JSkgYCxpLnN0eWxlLmZpbHRlcis9YGJyaWdodG5lc3MoJHtlfSlgLHRoaXMuc2V0KCJfaXNJbWFnZUxvYWRpbmciLCEwKSxpLnNyYz10LnVybH1faGFuZGxlVGFwKHQpe3RoaXMuc2V0KCJhY3R1YWxTaXplIiwhdGhpcy5hY3R1YWxTaXplKX1fdG9Mb2NhbGVTdHJpbmcodCl7cmV0dXJuIHQudG9Mb2NhbGVTdHJpbmcoKX19O0cwdC50ZW1wbGF0ZT14ZWAKICAgIDx0Zi1jYXJkLWhlYWRpbmcKICAgICAgdGFnPSJbW3RhZ11dIgogICAgICBydW49IltbcnVuXV0iCiAgICAgIGRpc3BsYXktbmFtZT0iW1t0YWdNZXRhZGF0YS5kaXNwbGF5TmFtZV1dIgogICAgICBkZXNjcmlwdGlvbj0iW1t0YWdNZXRhZGF0YS5kZXNjcmlwdGlvbl1dIgogICAgICBjb2xvcj0iW1tfcnVuQ29sb3JdXSIKICAgID4KICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19oYXNNdWx0aXBsZVNhbXBsZXNdXSI+CiAgICAgICAgPGRpdj5zYW1wbGU6IFtbX3NhbXBsZVRleHRdXSBvZiBbW29mU2FtcGxlc11dPC9kaXY+CiAgICAgIDwvdGVtcGxhdGU+CiAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfaGFzQXRMZWFzdE9uZVN0ZXBdXSI+CiAgICAgICAgPGRpdiBjbGFzcz0iaGVhZGluZy1yb3ciPgogICAgICAgICAgPGRpdiBjbGFzcz0iaGVhZGluZy1sYWJlbCI+CiAgICAgICAgICAgIHN0ZXAKICAgICAgICAgICAgPHNwYW4gc3R5bGU9ImZvbnQtd2VpZ2h0OiBib2xkIgogICAgICAgICAgICAgID5bW190b0xvY2FsZVN0cmluZyhfc3RlcFZhbHVlKV1dPC9zcGFuCiAgICAgICAgICAgID4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0iaGVhZGluZy1sYWJlbCBoZWFkaW5nLXJpZ2h0IGRhdGV0aW1lIj4KICAgICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19jdXJyZW50V2FsbFRpbWVdXSI+CiAgICAgICAgICAgICAgW1tfY3VycmVudFdhbGxUaW1lXV0KICAgICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0ibGFiZWwgcmlnaHQiPgogICAgICAgICAgICA8cGFwZXItc3Bpbm5lci1saXRlIGFjdGl2ZSBoaWRkZW4kPSJbWyFfaXNJbWFnZUxvYWRpbmddXSI+CiAgICAgICAgICAgIDwvcGFwZXItc3Bpbm5lci1saXRlPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvdGVtcGxhdGU+CiAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfaGFzTXVsdGlwbGVTdGVwc11dIj4KICAgICAgICA8ZGl2PgogICAgICAgICAgPHBhcGVyLXNsaWRlcgogICAgICAgICAgICBpZD0ic3RlcHMiCiAgICAgICAgICAgIGltbWVkaWF0ZS12YWx1ZT0ie3tfc3RlcEluZGV4fX0iCiAgICAgICAgICAgIG1heD0iW1tfbWF4U3RlcEluZGV4XV0iCiAgICAgICAgICAgIG1heC1tYXJrZXJzPSJbW19tYXhTdGVwSW5kZXhdXSIKICAgICAgICAgICAgc25hcHMKICAgICAgICAgICAgc3RlcD0iMSIKICAgICAgICAgICAgdmFsdWU9Int7X3N0ZXBJbmRleH19IgogICAgICAgICAgPjwvcGFwZXItc2xpZGVyPgogICAgICAgIDwvZGl2PgogICAgICA8L3RlbXBsYXRlPgogICAgPC90Zi1jYXJkLWhlYWRpbmc+CgogICAgPCEtLSBTZW1hbnRpY2FsbHkgYSBidXR0b24gYnV0IDxpbWc+IGluc2lkZSBhIDxidXR0b24+IGRpc2FsbG93cyB1c2VyIHRvIGRvCiAgICBhbiBpbnRlcmVzdGluZyBvcGVyYXRpb24gbGlrZSAiQ29weSBJbWFnZSIgaW4gbm9uLUNocm9taXVtIGJyb3dzZXJzLiAtLT4KICAgIDxhCiAgICAgIGlkPSJtYWluLWltYWdlLWNvbnRhaW5lciIKICAgICAgcm9sZT0iYnV0dG9uIgogICAgICBhcmlhLWxhYmVsPSJUb2dnbGUgYWN0dWFsIHNpemUiCiAgICAgIGFyaWEtZXhwYW5kZWQkPSJbW19nZXRBcmlhRXhwYW5kZWQoYWN0dWFsU2l6ZSldXSIKICAgICAgb24tdGFwPSJfaGFuZGxlVGFwIgogICAgPjwvYT4KCiAgICA8c3R5bGUgaW5jbHVkZT0idGYtY2FyZC1oZWFkaW5nLXN0eWxlIj4KICAgICAgLyoqIE1ha2UgYnV0dG9uIGEgZGl2LiAqLwogICAgICBidXR0b24gewogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIGJhY2tncm91bmQ6IG5vbmU7CiAgICAgICAgYm9yZGVyOiAwOwogICAgICAgIHBhZGRpbmc6IDA7CiAgICAgIH0KCiAgICAgIC8qKiBGaXJlZm94OiBHZXQgcmlkIG9mIGRvdHRlZCBsaW5lIGluc2lkZSBidXR0b24uICovCiAgICAgIGJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lciB7CiAgICAgICAgYm9yZGVyOiAwOwogICAgICAgIHBhZGRpbmc6IDA7CiAgICAgIH0KCiAgICAgIC8qKiBGaXJlZm94OiBTaW11bGF0ZSBDaHJvbWUncyBvdXRlciBnbG93IG9uIGJ1dHRvbiB3aGVuIGZvY3VzZWQuICovCiAgICAgIGJ1dHRvbjotbW96LWZvY3VzcmluZyB7CiAgICAgICAgb3V0bGluZTogbm9uZTsKICAgICAgICBib3gtc2hhZG93OiAwcHggMHB4IDFweCAycHggSGlnaGxpZ2h0OwogICAgICB9CgogICAgICA6aG9zdCB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgd2lkdGg6IDM1MHB4OwogICAgICAgIGhlaWdodDogYXV0bzsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgbWFyZ2luOiAwIDE1cHggNDBweCAwOwogICAgICAgIG92ZXJmbG93LXg6IGF1dG87CiAgICAgIH0KCiAgICAgIC8qKiBXaGVuIGFjdHVhbCBzaXplIHNob3duIGlzIG9uLCB1c2UgdGhlIGFjdHVhbCBpbWFnZSB3aWR0aC4gKi8KICAgICAgOmhvc3QoW2FjdHVhbC1zaXplXSkgewogICAgICAgIG1heC13aWR0aDogMTAwJTsKICAgICAgICB3aWR0aDogYXV0bzsKICAgICAgfQoKICAgICAgOmhvc3QoW2FjdHVhbC1zaXplXSkgI21haW4taW1hZ2UtY29udGFpbmVyIHsKICAgICAgICBtYXgtaGVpZ2h0OiBub25lOwogICAgICAgIHdpZHRoOiBhdXRvOwogICAgICB9CgogICAgICA6aG9zdChbYWN0dWFsLXNpemVdKSAjbWFpbi1pbWFnZS1jb250YWluZXIgaW1nIHsKICAgICAgICB3aWR0aDogYXV0bzsKICAgICAgfQoKICAgICAgcGFwZXItc3Bpbm5lci1saXRlIHsKICAgICAgICB3aWR0aDogMTRweDsKICAgICAgICBoZWlnaHQ6IDE0cHg7CiAgICAgICAgdmVydGljYWwtYWxpZ246IHRleHQtYm90dG9tOwogICAgICAgIC0tcGFwZXItc3Bpbm5lci1jb2xvcjogdmFyKC0tdGItb3JhbmdlLXN0cm9uZyk7CiAgICAgIH0KCiAgICAgICNzdGVwcyB7CiAgICAgICAgaGVpZ2h0OiAxNXB4OwogICAgICAgIG1hcmdpbjogMCAwIDAgLTE1cHg7CiAgICAgICAgLyoKICAgICAgICAgKiAzMSBjb21lcyBmcm9tIGFkZGluZyBhIHBhZGRpbmcgb2YgMTVweCBmcm9tIGJvdGggc2lkZXMgb2YgdGhlCiAgICAgICAgICogcGFwZXItc2xpZGVyLCBzdWJ0cmFjdGluZyAxcHggc28gdGhhdCB0aGUgc2xpZGVyIHdpZHRoIGFsaWducwogICAgICAgICAqIHdpdGggdGhlIGltYWdlICh0aGUgbGFzdCBzbGlkZXIgbWFya2VyIHRha2VzIHVwIDFweCksIGFuZAogICAgICAgICAqIGFkZGluZyAycHggdG8gYWNjb3VudCBmb3IgYSBib3JkZXIgb2YgMXB4IG9uIGJvdGggc2lkZXMgb2YKICAgICAgICAgKiB0aGUgaW1hZ2UuIDMwIC0gMSArIDIuCiAgICAgICAgICovCiAgICAgICAgd2lkdGg6IGNhbGMoMTAwJSArIDMxcHgpOwogICAgICAgIC0tcGFwZXItc2xpZGVyLWFjdGl2ZS1jb2xvcjogdmFyKC0tdGItb3JhbmdlLXN0cm9uZyk7CiAgICAgICAgLS1wYXBlci1zbGlkZXIta25vYi1jb2xvcjogdmFyKC0tdGItb3JhbmdlLXN0cm9uZyk7CiAgICAgICAgLS1wYXBlci1zbGlkZXIta25vYi1zdGFydC1ib3JkZXItY29sb3I6IHZhcigtLXRiLW9yYW5nZS1zdHJvbmcpOwogICAgICAgIC0tcGFwZXItc2xpZGVyLWtub2Itc3RhcnQtY29sb3I6IHZhcigtLXRiLW9yYW5nZS1zdHJvbmcpOwogICAgICAgIC0tcGFwZXItc2xpZGVyLW1hcmtlcnMtY29sb3I6IHZhcigtLXRiLW9yYW5nZS1zdHJvbmcpOwogICAgICAgIC0tcGFwZXItc2xpZGVyLXBpbi1jb2xvcjogdmFyKC0tdGItb3JhbmdlLXN0cm9uZyk7CiAgICAgICAgLS1wYXBlci1zbGlkZXItcGluLXN0YXJ0LWNvbG9yOiB2YXIoLS10Yi1vcmFuZ2Utc3Ryb25nKTsKICAgICAgfQoKICAgICAgI21haW4taW1hZ2UtY29udGFpbmVyIHsKICAgICAgICBtYXgtaGVpZ2h0OiAxMDI0cHg7CiAgICAgICAgb3ZlcmZsb3c6IGF1dG87CiAgICAgIH0KCiAgICAgICNtYWluLWltYWdlLWNvbnRhaW5lciBpbWcgewogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICBpbWFnZS1yZW5kZXJpbmc6IC1tb3otY3Jpc3AtZWRnZXM7CiAgICAgICAgaW1hZ2UtcmVuZGVyaW5nOiBwaXhlbGF0ZWQ7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgaGVpZ2h0OiBhdXRvOwogICAgICB9CgogICAgICBwYXBlci1pY29uLWJ1dHRvbiB7CiAgICAgICAgY29sb3I6ICMyMTk2ZjM7CiAgICAgICAgYm9yZGVyLXJhZGl1czogMTAwJTsKICAgICAgICB3aWR0aDogMzJweDsKICAgICAgICBoZWlnaHQ6IDMycHg7CiAgICAgICAgcGFkZGluZzogNHB4OwogICAgICB9CiAgICAgIHBhcGVyLWljb24tYnV0dG9uW3NlbGVjdGVkXSB7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tdGItdWktbGlnaHQtYWNjZW50KTsKICAgICAgfQogICAgICBbaGlkZGVuXSB7CiAgICAgICAgZGlzcGxheTogbm9uZTsKICAgICAgfQogICAgPC9zdHlsZT4KICBgLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLEcwdC5wcm90b3R5cGUsInJ1biIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxHMHQucHJvdG90eXBlLCJ0YWciLHZvaWQgMCksdChbbyh7dHlwZTpOdW1iZXJ9KSxlKCJkZXNpZ246dHlwZSIsTnVtYmVyKV0sRzB0LnByb3RvdHlwZSwic2FtcGxlIix2b2lkIDApLHQoW28oe3R5cGU6TnVtYmVyfSksZSgiZGVzaWduOnR5cGUiLE51bWJlcildLEcwdC5wcm90b3R5cGUsIm9mU2FtcGxlcyIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxHMHQucHJvdG90eXBlLCJ0YWdNZXRhZGF0YSIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW4scmVmbGVjdFRvQXR0cmlidXRlOiEwfSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxHMHQucHJvdG90eXBlLCJhY3R1YWxTaXplIix2b2lkIDApLHQoW28oe3R5cGU6TnVtYmVyfSksZSgiZGVzaWduOnR5cGUiLE51bWJlcildLEcwdC5wcm90b3R5cGUsImJyaWdodG5lc3NBZGp1c3RtZW50Iix2b2lkIDApLHQoW28oe3R5cGU6TnVtYmVyfSksZSgiZGVzaWduOnR5cGUiLE51bWJlcildLEcwdC5wcm90b3R5cGUsImNvbnRyYXN0UGVyY2VudGFnZSIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixicildLEcwdC5wcm90b3R5cGUsInJlcXVlc3RNYW5hZ2VyIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLEcwdC5wcm90b3R5cGUsIl9tZXRhZGF0YUNhbmNlbGxlciIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxHMHQucHJvdG90eXBlLCJfaW1hZ2VDYW5jZWxsZXIiLHZvaWQgMCksdChbbyh7dHlwZTpBcnJheSxub3RpZnk6ITB9KSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpXSxHMHQucHJvdG90eXBlLCJfc3RlcHMiLHZvaWQgMCksdChbbyh7dHlwZTpOdW1iZXIsbm90aWZ5OiEwfSksZSgiZGVzaWduOnR5cGUiLE51bWJlcildLEcwdC5wcm90b3R5cGUsIl9zdGVwSW5kZXgiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxHMHQucHJvdG90eXBlLCJfaXNJbWFnZUxvYWRpbmciLHZvaWQgMCksdChbcygicnVuIiksZSgiZGVzaWduOnR5cGUiLFN0cmluZyksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sRzB0LnByb3RvdHlwZSwiX3J1bkNvbG9yIixudWxsKSx0KFtzKCJfc3RlcHMiKSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sRzB0LnByb3RvdHlwZSwiX2hhc0F0TGVhc3RPbmVTdGVwIixudWxsKSx0KFtzKCJfc3RlcHMiKSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sRzB0LnByb3RvdHlwZSwiX2hhc011bHRpcGxlU3RlcHMiLG51bGwpLHQoW3MoIl9zdGVwcyIsIl9zdGVwSW5kZXgiKSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSxHMHQucHJvdG90eXBlLCJfY3VycmVudFN0ZXAiLG51bGwpLHQoW3MoIl9jdXJyZW50U3RlcCIpLGUoImRlc2lnbjp0eXBlIixOdW1iZXIpLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSldLEcwdC5wcm90b3R5cGUsIl9zdGVwVmFsdWUiLG51bGwpLHQoW3MoIl9jdXJyZW50U3RlcCIpLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSldLEcwdC5wcm90b3R5cGUsIl9jdXJyZW50V2FsbFRpbWUiLG51bGwpLHQoW3MoIl9zdGVwcyIpLGUoImRlc2lnbjp0eXBlIixOdW1iZXIpLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSldLEcwdC5wcm90b3R5cGUsIl9tYXhTdGVwSW5kZXgiLG51bGwpLHQoW3MoInNhbXBsZSIpLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSldLEcwdC5wcm90b3R5cGUsIl9zYW1wbGVUZXh0IixudWxsKSx0KFtzKCJvZlNhbXBsZXMiKSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sRzB0LnByb3RvdHlwZSwiX2hhc011bHRpcGxlU2FtcGxlcyIsbnVsbCksdChbYSgicnVuIiwidGFnIiksZSgiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pLGUoImRlc2lnbjpyZXR1cm50eXBlIix2b2lkIDApXSxHMHQucHJvdG90eXBlLCJyZWxvYWQiLG51bGwpLHQoW2EoIl9jdXJyZW50U3RlcCIsImJyaWdodG5lc3NBZGp1c3RtZW50IiwiY29udHJhc3RQZXJjZW50YWdlIiksZSgiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pLGUoImRlc2lnbjpyZXR1cm50eXBlIix2b2lkIDApXSxHMHQucHJvdG90eXBlLCJfdXBkYXRlSW1hZ2VVcmwiLG51bGwpLEcwdD10KFtpKCJ0Zi1pbWFnZS1sb2FkZXIiKV0sRzB0KTtsZXQgVzB0PWNsYXNzIGV4dGVuZHMoY3Iod2UpKXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5yZWxvYWRPblJlYWR5PSEwLHRoaXMuX2RlZmF1bHRCcmlnaHRuZXNzQWRqdXN0bWVudD0xLHRoaXMuX2RlZmF1bHRDb250cmFzdFBlcmNlbnRhZ2U9MTAwLHRoaXMuX2JyaWdodG5lc3NBZGp1c3RtZW50PTEsdGhpcy5fY29udHJhc3RQZXJjZW50YWdlPTEwMCx0aGlzLl9yZXF1ZXN0TWFuYWdlcj1uZXcgYnJ9cmVhZHkoKXtzdXBlci5yZWFkeSgpLHRoaXMucmVsb2FkT25SZWFkeSYmdGhpcy5yZWxvYWQoKX1yZWxvYWQoKXt0aGlzLl9mZXRjaFRhZ3MoKS50aGVuKCgoKT0+e3RoaXMuX3JlbG9hZEltYWdlcygpfSkpfV9mZXRjaFRhZ3MoKXtjb25zdCB0PUVyKCkucGx1Z2luUm91dGUoImltYWdlcyIsIi90YWdzIik7cmV0dXJuIHRoaXMuX3JlcXVlc3RNYW5hZ2VyLnJlcXVlc3QodCkudGhlbigodD0+e2lmKENlLmV4cG9ydHMuaXNFcXVhbCh0LHRoaXMuX3J1blRvVGFnSW5mbykpcmV0dXJuO2NvbnN0IGU9ZnIoQ2UuZXhwb3J0cy5tYXBWYWx1ZXModCwodD0+T2JqZWN0LmtleXModCkpKSk7dGhpcy5zZXQoIl9kYXRhTm90Rm91bmQiLDA9PT1lLmxlbmd0aCksdGhpcy5zZXQoIl9ydW5Ub1RhZ0luZm8iLHQpLHRoaXMuYXN5bmMoKCgpPT57dGhpcy5zZXQoIl9jYXRlZ29yaWVzRG9tUmVhZHkiLCEwKX0pKX0pKX1fcmVsb2FkSW1hZ2VzKCl7dGhpcy5yb290LnF1ZXJ5U2VsZWN0b3JBbGwoInRmLWltYWdlLWxvYWRlciIpLmZvckVhY2goKHQ9Pnt0LnJlbG9hZCgpfSkpfV9zaG91bGRPcGVuKHQpe3JldHVybiB0PD0yfV9yZXNldEJyaWdodG5lc3MoKXt0aGlzLl9icmlnaHRuZXNzQWRqdXN0bWVudD10aGlzLl9kZWZhdWx0QnJpZ2h0bmVzc0FkanVzdG1lbnR9X3Jlc2V0Q29udHJhc3QoKXt0aGlzLl9jb250cmFzdFBlcmNlbnRhZ2U9dGhpcy5fZGVmYXVsdENvbnRyYXN0UGVyY2VudGFnZX1nZXQgX2JyaWdodG5lc3NJc0RlZmF1bHQoKXtyZXR1cm4gdGhpcy5fYnJpZ2h0bmVzc0FkanVzdG1lbnQ9PT10aGlzLl9kZWZhdWx0QnJpZ2h0bmVzc0FkanVzdG1lbnR9Z2V0IF9jb250cmFzdElzRGVmYXVsdCgpe3JldHVybiB0aGlzLl9jb250cmFzdFBlcmNlbnRhZ2U9PT10aGlzLl9kZWZhdWx0Q29udHJhc3RQZXJjZW50YWdlfWdldCBfY2F0ZWdvcmllcygpe3ZhciB0PXRoaXMuX3J1blRvVGFnSW5mbyxlPXRoaXMuX3NlbGVjdGVkUnVucyxuPXRoaXMuX3RhZ0ZpbHRlcjtmdW5jdGlvbiBpKGUpe2NvbnN0IG49dFtlLnJ1bl1bZS50YWddLnNhbXBsZXM7cmV0dXJuIENlLmV4cG9ydHMucmFuZ2UobikubWFwKCh0PT5PYmplY3QuYXNzaWduKHt9LGUse3NhbXBsZTp0LG9mU2FtcGxlczpufSkpKX1yZXR1cm4gSXIoQ2UuZXhwb3J0cy5tYXBWYWx1ZXModCwodD0+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+dC5hcnJheUJ1ZmZlcigpKSkudGhlbihsKX1mZXRjaERhdGEodCxlLG4saSl7bGV0IHI9W10sbz1uZXcgTWFwO3JldHVybiBPYmplY3Qua2V5cyhZMHQpLmZvckVhY2goKGE9Pnt0LmNvbXBvbmVudHMmMTw8WTB0W2FdJiZyLnB1c2godGhpcy5fZmV0Y2hEYXRhQnlTdGVwKGUsbixhLGksdC5zdGVwLG8pKX0pKSxQcm9taXNlLmFsbChyKX1fZmV0Y2hNZXRhZGF0YSh0LGUsbil7dGhpcy5fY2FuY2VsbGVyLmNhbmNlbEFsbCgpO2NvbnN0IGk9RXIoKS5wbHVnaW5Sb3V0ZSgibWVzaCIsIi9tZXNoZXMiLG5ldyBVUkxTZWFyY2hQYXJhbXMoe3RhZzplLHJ1bjp0LHNhbXBsZTpufSkpLHI9dGhpcy5fY2FuY2VsbGVyLmNhbmNlbGxhYmxlKCh0PT50LmNhbmNlbGxlZD9Qcm9taXNlLnJlamVjdCh7Y29kZTpxMHQuQ0FOQ0VMTEVELG1lc3NhZ2U6IlJlc3BvbnNlIHdhcyBpbnZhbGlkYXRlZC4ifSk6dC52YWx1ZSkpO3JldHVybiB0aGlzLl9yZXF1ZXN0TWFuYWdlci5mZXRjaChpKS50aGVuKCh0PT50Lmpzb24oKSkpLnRoZW4ocikudGhlbih0aGlzLl9wcm9jZXNzTWV0YWRhdGEuYmluZCh0aGlzKSl9X3Byb2Nlc3NNZXRhZGF0YSh0KXtpZighdClyZXR1cm47Y29uc3QgZT1uZXcgTWFwO2ZvcihsZXQgbj0wO248dC5sZW5ndGg7bisrKXtsZXQgaT10W25dO2UuaGFzKGkuc3RlcCl8fGUuc2V0KGkuc3RlcCxbXSksZS5nZXQoaS5zdGVwKS5wdXNoKGkpfWxldCBuPVtdO3JldHVybiBlLmZvckVhY2goKHQ9PntsZXQgZT10aGlzLl9jcmVhdGVTdGVwRGF0dW0odFswXSk7bi5wdXNoKGUpfSkpLG59X2NyZWF0ZVN0ZXBEYXR1bSh0KXtyZXR1cm57d2FsbF90aW1lOm5ldyBEYXRlKDFlMyp0LndhbGxfdGltZSksc3RlcDp0LnN0ZXAsY29uZmlnOnQuY29uZmlnLGNvbnRlbnRfdHlwZTp0LmNvbnRlbnRfdHlwZSxjb21wb25lbnRzOnQuY29tcG9uZW50c319fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgMjAxMC0yMDIxIFRocmVlLmpzIEF1dGhvcnMKICAgICAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVQKICAgICAqL2NvbnN0IEswdD0iMTMxIixaMHQ9e0xFRlQ6MCxNSURETEU6MSxSSUdIVDoyLFJPVEFURTowLERPTExZOjEsUEFOOjJ9LEowdD17Uk9UQVRFOjAsUEFOOjEsRE9MTFlfUEFOOjIsRE9MTFlfUk9UQVRFOjN9LFEwdD0xMDAsdDJ0PTMwMCxlMnQ9MzAxLG4ydD0zMDIsaTJ0PTMwMyxyMnQ9MzA0LG8ydD0zMDYsYTJ0PTMwNyxzMnQ9MWUzLGwydD0xMDAxLGMydD0xMDAyLHUydD0xMDAzLGgydD0xMDA0LGQydD0xMDA1LHAydD0xMDA2LGYydD0xMDA3LG0ydD0xMDA4LGcydD0xMDA5LF8ydD0xMDEyLHkydD0xMDE0LHYydD0xMDE1LGIydD0xMDE2LHgydD0xMDIwLHcydD0xMDIyLFMydD0xMDIzLE0ydD0xMDI2LEUydD0xMDI3LFQydD0zMzc3NixDMnQ9MzM3NzcsQTJ0PTMzNzc4LGsydD0zMzc3OSxMMnQ9MzU4NDAsUDJ0PTM1ODQxLE4ydD0zNTg0MixJMnQ9MzU4NDMsUjJ0PTM3NDkyLE8ydD0zNzQ5Nix6MnQ9MjMwMCxEMnQ9MjMwMSxCMnQ9MjMwMixIMnQ9MjQwMCxGMnQ9MjQwMSxWMnQ9MjQwMixVMnQ9MjUwMCxqMnQ9MjUwMSxHMnQ9M2UzLFcydD0zMDAxLHEydD0zMDA3LFkydD0zMDAyLFgydD0zMDA0LCQydD0zMDA1LEsydD0zMDA2LFoydD03NjgwLEoydD0zNTA0NCxRMnQ9MzUwNDgsdDV0PSIzMDAgZXMiO2NsYXNzIGU1dHthZGRFdmVudExpc3RlbmVyKHQsZSl7dm9pZCAwPT09dGhpcy5fbGlzdGVuZXJzJiYodGhpcy5fbGlzdGVuZXJzPXt9KTtjb25zdCBuPXRoaXMuX2xpc3RlbmVyczt2b2lkIDA9PT1uW3RdJiYoblt0XT1bXSksLTE9PT1uW3RdLmluZGV4T2YoZSkmJm5bdF0ucHVzaChlKX1oYXNFdmVudExpc3RlbmVyKHQsZSl7aWYodm9pZCAwPT09dGhpcy5fbGlzdGVuZXJzKXJldHVybiExO2NvbnN0IG49dGhpcy5fbGlzdGVuZXJzO3JldHVybiB2b2lkIDAhPT1uW3RdJiYtMSE9PW5bdF0uaW5kZXhPZihlKX1yZW1vdmVFdmVudExpc3RlbmVyKHQsZSl7aWYodm9pZCAwPT09dGhpcy5fbGlzdGVuZXJzKXJldHVybjtjb25zdCBuPXRoaXMuX2xpc3RlbmVyc1t0XTtpZih2b2lkIDAhPT1uKXtjb25zdCB0PW4uaW5kZXhPZihlKTstMSE9PXQmJm4uc3BsaWNlKHQsMSl9fWRpc3BhdGNoRXZlbnQodCl7aWYodm9pZCAwPT09dGhpcy5fbGlzdGVuZXJzKXJldHVybjtjb25zdCBlPXRoaXMuX2xpc3RlbmVyc1t0LnR5cGVdO2lmKHZvaWQgMCE9PWUpe3QudGFyZ2V0PXRoaXM7Y29uc3Qgbj1lLnNsaWNlKDApO2ZvcihsZXQgZT0wLGk9bi5sZW5ndGg7ZTxpO2UrKyluW2VdLmNhbGwodGhpcyx0KTt0LnRhcmdldD1udWxsfX19Y29uc3QgbjV0PVtdO2ZvcihsZXQgdD0wO3Q8MjU2O3QrKyluNXRbdF09KHQ8MTY/IjAiOiIiKSt0LnRvU3RyaW5nKDE2KTtsZXQgaTV0PTEyMzQ1Njc7Y29uc3QgcjV0PU1hdGguUEkvMTgwLG81dD0xODAvTWF0aC5QSTtmdW5jdGlvbiBhNXQoKXtjb25zdCB0PTQyOTQ5NjcyOTUqTWF0aC5yYW5kb20oKXwwLGU9NDI5NDk2NzI5NSpNYXRoLnJhbmRvbSgpfDAsbj00Mjk0OTY3Mjk1Kk1hdGgucmFuZG9tKCl8MCxpPTQyOTQ5NjcyOTUqTWF0aC5yYW5kb20oKXwwO3JldHVybihuNXRbMjU1JnRdK241dFt0Pj44JjI1NV0rbjV0W3Q+PjE2JjI1NV0rbjV0W3Q+PjI0JjI1NV0rIi0iK241dFsyNTUmZV0rbjV0W2U+PjgmMjU1XSsiLSIrbjV0W2U+PjE2JjE1fDY0XStuNXRbZT4+MjQmMjU1XSsiLSIrbjV0WzYzJm58MTI4XStuNXRbbj4+OCYyNTVdKyItIituNXRbbj4+MTYmMjU1XStuNXRbbj4+MjQmMjU1XStuNXRbMjU1JmldK241dFtpPj44JjI1NV0rbjV0W2k+PjE2JjI1NV0rbjV0W2k+PjI0JjI1NV0pLnRvVXBwZXJDYXNlKCl9ZnVuY3Rpb24gczV0KHQsZSxuKXtyZXR1cm4gTWF0aC5tYXgoZSxNYXRoLm1pbihuLHQpKX1mdW5jdGlvbiBsNXQodCxlKXtyZXR1cm4odCVlK2UpJWV9ZnVuY3Rpb24gYzV0KHQsZSxuKXtyZXR1cm4oMS1uKSp0K24qZX1mdW5jdGlvbiB1NXQodCl7cmV0dXJuIDA9PSh0JnQtMSkmJjAhPT10fWZ1bmN0aW9uIGg1dCh0KXtyZXR1cm4gTWF0aC5wb3coMixNYXRoLmNlaWwoTWF0aC5sb2codCkvTWF0aC5MTjIpKX1mdW5jdGlvbiBkNXQodCl7cmV0dXJuIE1hdGgucG93KDIsTWF0aC5mbG9vcihNYXRoLmxvZyh0KS9NYXRoLkxOMikpfXZhciBwNXQ9T2JqZWN0LmZyZWV6ZSh7X19wcm90b19fOm51bGwsREVHMlJBRDpyNXQsUkFEMkRFRzpvNXQsZ2VuZXJhdGVVVUlEOmE1dCxjbGFtcDpzNXQsZXVjbGlkZWFuTW9kdWxvOmw1dCxtYXBMaW5lYXI6ZnVuY3Rpb24gZjV0KHQsZSxuLGkscil7cmV0dXJuIGkrKHQtZSkqKHItaSkvKG4tZSl9LGludmVyc2VMZXJwOmZ1bmN0aW9uIG01dCh0LGUsbil7cmV0dXJuIHQhPT1lPyhuLXQpLyhlLXQpOjB9LGxlcnA6YzV0LGRhbXA6ZnVuY3Rpb24gZzV0KHQsZSxuLGkpe3JldHVybiBjNXQodCxlLDEtTWF0aC5leHAoLW4qaSkpfSxwaW5ncG9uZzpmdW5jdGlvbiBfNXQodCxlPTEpe3JldHVybiBlLU1hdGguYWJzKGw1dCh0LDIqZSktZSl9LHNtb290aHN0ZXA6ZnVuY3Rpb24geTV0KHQsZSxuKXtyZXR1cm4gdDw9ZT8wOnQ+PW4/MToodD0odC1lKS8obi1lKSkqdCooMy0yKnQpfSxzbW9vdGhlcnN0ZXA6ZnVuY3Rpb24gdjV0KHQsZSxuKXtyZXR1cm4gdDw9ZT8wOnQ+PW4/MToodD0odC1lKS8obi1lKSkqdCp0Kih0Kig2KnQtMTUpKzEwKX0scmFuZEludDpmdW5jdGlvbiBiNXQodCxlKXtyZXR1cm4gdCtNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqKGUtdCsxKSl9LHJhbmRGbG9hdDpmdW5jdGlvbiB4NXQodCxlKXtyZXR1cm4gdCtNYXRoLnJhbmRvbSgpKihlLXQpfSxyYW5kRmxvYXRTcHJlYWQ6ZnVuY3Rpb24gdzV0KHQpe3JldHVybiB0KiguNS1NYXRoLnJhbmRvbSgpKX0sc2VlZGVkUmFuZG9tOmZ1bmN0aW9uIFM1dCh0KXtyZXR1cm4gdm9pZCAwIT09dCYmKGk1dD10JTIxNDc0ODM2NDcpLGk1dD0xNjgwNyppNXQlMjE0NzQ4MzY0NywoaTV0LTEpLzIxNDc0ODM2NDZ9LGRlZ1RvUmFkOmZ1bmN0aW9uIE01dCh0KXtyZXR1cm4gdCpyNXR9LHJhZFRvRGVnOmZ1bmN0aW9uIEU1dCh0KXtyZXR1cm4gdCpvNXR9LGlzUG93ZXJPZlR3bzp1NXQsY2VpbFBvd2VyT2ZUd286aDV0LGZsb29yUG93ZXJPZlR3bzpkNXQsc2V0UXVhdGVybmlvbkZyb21Qcm9wZXJFdWxlcjpmdW5jdGlvbiBUNXQodCxlLG4saSxyKXtjb25zdCBvPU1hdGguY29zLGE9TWF0aC5zaW4scz1vKG4vMiksbD1hKG4vMiksYz1vKChlK2kpLzIpLHU9YSgoZStpKS8yKSxoPW8oKGUtaSkvMiksZD1hKChlLWkpLzIpLHA9bygoaS1lKS8yKSxmPWEoKGktZSkvMik7c3dpdGNoKHIpe2Nhc2UiWFlYIjp0LnNldChzKnUsbCpoLGwqZCxzKmMpO2JyZWFrO2Nhc2UiWVpZIjp0LnNldChsKmQscyp1LGwqaCxzKmMpO2JyZWFrO2Nhc2UiWlhaIjp0LnNldChsKmgsbCpkLHMqdSxzKmMpO2JyZWFrO2Nhc2UiWFpYIjp0LnNldChzKnUsbCpmLGwqcCxzKmMpO2JyZWFrO2Nhc2UiWVhZIjp0LnNldChsKnAscyp1LGwqZixzKmMpO2JyZWFrO2Nhc2UiWllaIjp0LnNldChsKmYsbCpwLHMqdSxzKmMpO2JyZWFrO2RlZmF1bHQ6Y29uc29sZS53YXJuKCJUSFJFRS5NYXRoVXRpbHM6IC5zZXRRdWF0ZXJuaW9uRnJvbVByb3BlckV1bGVyKCkgZW5jb3VudGVyZWQgYW4gdW5rbm93biBvcmRlcjogIityKX19fSk7Y2xhc3MgQzV0e2NvbnN0cnVjdG9yKHQ9MCxlPTApe3RoaXMueD10LHRoaXMueT1lfWdldCB3aWR0aCgpe3JldHVybiB0aGlzLnh9c2V0IHdpZHRoKHQpe3RoaXMueD10fWdldCBoZWlnaHQoKXtyZXR1cm4gdGhpcy55fXNldCBoZWlnaHQodCl7dGhpcy55PXR9c2V0KHQsZSl7cmV0dXJuIHRoaXMueD10LHRoaXMueT1lLHRoaXN9c2V0U2NhbGFyKHQpe3JldHVybiB0aGlzLng9dCx0aGlzLnk9dCx0aGlzfXNldFgodCl7cmV0dXJuIHRoaXMueD10LHRoaXN9c2V0WSh0KXtyZXR1cm4gdGhpcy55PXQsdGhpc31zZXRDb21wb25lbnQodCxlKXtzd2l0Y2godCl7Y2FzZSAwOnRoaXMueD1lO2JyZWFrO2Nhc2UgMTp0aGlzLnk9ZTticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiaW5kZXggaXMgb3V0IG9mIHJhbmdlOiAiK3QpfXJldHVybiB0aGlzfWdldENvbXBvbmVudCh0KXtzd2l0Y2godCl7Y2FzZSAwOnJldHVybiB0aGlzLng7Y2FzZSAxOnJldHVybiB0aGlzLnk7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoImluZGV4IGlzIG91dCBvZiByYW5nZTogIit0KX19Y2xvbmUoKXtyZXR1cm4gbmV3IHRoaXMuY29uc3RydWN0b3IodGhpcy54LHRoaXMueSl9Y29weSh0KXtyZXR1cm4gdGhpcy54PXQueCx0aGlzLnk9dC55LHRoaXN9YWRkKHQsZSl7cmV0dXJuIHZvaWQgMCE9PWU/KGNvbnNvbGUud2FybigiVEhSRUUuVmVjdG9yMjogLmFkZCgpIG5vdyBvbmx5IGFjY2VwdHMgb25lIGFyZ3VtZW50LiBVc2UgLmFkZFZlY3RvcnMoIGEsIGIgKSBpbnN0ZWFkLiIpLHRoaXMuYWRkVmVjdG9ycyh0LGUpKToodGhpcy54Kz10LngsdGhpcy55Kz10LnksdGhpcyl9YWRkU2NhbGFyKHQpe3JldHVybiB0aGlzLngrPXQsdGhpcy55Kz10LHRoaXN9YWRkVmVjdG9ycyh0LGUpe3JldHVybiB0aGlzLng9dC54K2UueCx0aGlzLnk9dC55K2UueSx0aGlzfWFkZFNjYWxlZFZlY3Rvcih0LGUpe3JldHVybiB0aGlzLngrPXQueCplLHRoaXMueSs9dC55KmUsdGhpc31zdWIodCxlKXtyZXR1cm4gdm9pZCAwIT09ZT8oY29uc29sZS53YXJuKCJUSFJFRS5WZWN0b3IyOiAuc3ViKCkgbm93IG9ubHkgYWNjZXB0cyBvbmUgYXJndW1lbnQuIFVzZSAuc3ViVmVjdG9ycyggYSwgYiApIGluc3RlYWQuIiksdGhpcy5zdWJWZWN0b3JzKHQsZSkpOih0aGlzLngtPXQueCx0aGlzLnktPXQueSx0aGlzKX1zdWJTY2FsYXIodCl7cmV0dXJuIHRoaXMueC09dCx0aGlzLnktPXQsdGhpc31zdWJWZWN0b3JzKHQsZSl7cmV0dXJuIHRoaXMueD10LngtZS54LHRoaXMueT10LnktZS55LHRoaXN9bXVsdGlwbHkodCl7cmV0dXJuIHRoaXMueCo9dC54LHRoaXMueSo9dC55LHRoaXN9bXVsdGlwbHlTY2FsYXIodCl7cmV0dXJuIHRoaXMueCo9dCx0aGlzLnkqPXQsdGhpc31kaXZpZGUodCl7cmV0dXJuIHRoaXMueC89dC54LHRoaXMueS89dC55LHRoaXN9ZGl2aWRlU2NhbGFyKHQpe3JldHVybiB0aGlzLm11bHRpcGx5U2NhbGFyKDEvdCl9YXBwbHlNYXRyaXgzKHQpe2NvbnN0IGU9dGhpcy54LG49dGhpcy55LGk9dC5lbGVtZW50cztyZXR1cm4gdGhpcy54PWlbMF0qZStpWzNdKm4raVs2XSx0aGlzLnk9aVsxXSplK2lbNF0qbitpWzddLHRoaXN9bWluKHQpe3JldHVybiB0aGlzLng9TWF0aC5taW4odGhpcy54LHQueCksdGhpcy55PU1hdGgubWluKHRoaXMueSx0LnkpLHRoaXN9bWF4KHQpe3JldHVybiB0aGlzLng9TWF0aC5tYXgodGhpcy54LHQueCksdGhpcy55PU1hdGgubWF4KHRoaXMueSx0LnkpLHRoaXN9Y2xhbXAodCxlKXtyZXR1cm4gdGhpcy54PU1hdGgubWF4KHQueCxNYXRoLm1pbihlLngsdGhpcy54KSksdGhpcy55PU1hdGgubWF4KHQueSxNYXRoLm1pbihlLnksdGhpcy55KSksdGhpc31jbGFtcFNjYWxhcih0LGUpe3JldHVybiB0aGlzLng9TWF0aC5tYXgodCxNYXRoLm1pbihlLHRoaXMueCkpLHRoaXMueT1NYXRoLm1heCh0LE1hdGgubWluKGUsdGhpcy55KSksdGhpc31jbGFtcExlbmd0aCh0LGUpe2NvbnN0IG49dGhpcy5sZW5ndGgoKTtyZXR1cm4gdGhpcy5kaXZpZGVTY2FsYXIobnx8MSkubXVsdGlwbHlTY2FsYXIoTWF0aC5tYXgodCxNYXRoLm1pbihlLG4pKSl9Zmxvb3IoKXtyZXR1cm4gdGhpcy54PU1hdGguZmxvb3IodGhpcy54KSx0aGlzLnk9TWF0aC5mbG9vcih0aGlzLnkpLHRoaXN9Y2VpbCgpe3JldHVybiB0aGlzLng9TWF0aC5jZWlsKHRoaXMueCksdGhpcy55PU1hdGguY2VpbCh0aGlzLnkpLHRoaXN9cm91bmQoKXtyZXR1cm4gdGhpcy54PU1hdGgucm91bmQodGhpcy54KSx0aGlzLnk9TWF0aC5yb3VuZCh0aGlzLnkpLHRoaXN9cm91bmRUb1plcm8oKXtyZXR1cm4gdGhpcy54PXRoaXMueDwwP01hdGguY2VpbCh0aGlzLngpOk1hdGguZmxvb3IodGhpcy54KSx0aGlzLnk9dGhpcy55PDA/TWF0aC5jZWlsKHRoaXMueSk6TWF0aC5mbG9vcih0aGlzLnkpLHRoaXN9bmVnYXRlKCl7cmV0dXJuIHRoaXMueD0tdGhpcy54LHRoaXMueT0tdGhpcy55LHRoaXN9ZG90KHQpe3JldHVybiB0aGlzLngqdC54K3RoaXMueSp0Lnl9Y3Jvc3ModCl7cmV0dXJuIHRoaXMueCp0LnktdGhpcy55KnQueH1sZW5ndGhTcSgpe3JldHVybiB0aGlzLngqdGhpcy54K3RoaXMueSp0aGlzLnl9bGVuZ3RoKCl7cmV0dXJuIE1hdGguc3FydCh0aGlzLngqdGhpcy54K3RoaXMueSp0aGlzLnkpfW1hbmhhdHRhbkxlbmd0aCgpe3JldHVybiBNYXRoLmFicyh0aGlzLngpK01hdGguYWJzKHRoaXMueSl9bm9ybWFsaXplKCl7cmV0dXJuIHRoaXMuZGl2aWRlU2NhbGFyKHRoaXMubGVuZ3RoKCl8fDEpfWFuZ2xlKCl7cmV0dXJuIE1hdGguYXRhbjIoLXRoaXMueSwtdGhpcy54KStNYXRoLlBJfWRpc3RhbmNlVG8odCl7cmV0dXJuIE1hdGguc3FydCh0aGlzLmRpc3RhbmNlVG9TcXVhcmVkKHQpKX1kaXN0YW5jZVRvU3F1YXJlZCh0KXtjb25zdCBlPXRoaXMueC10Lngsbj10aGlzLnktdC55O3JldHVybiBlKmUrbipufW1hbmhhdHRhbkRpc3RhbmNlVG8odCl7cmV0dXJuIE1hdGguYWJzKHRoaXMueC10LngpK01hdGguYWJzKHRoaXMueS10LnkpfXNldExlbmd0aCh0KXtyZXR1cm4gdGhpcy5ub3JtYWxpemUoKS5tdWx0aXBseVNjYWxhcih0KX1sZXJwKHQsZSl7cmV0dXJuIHRoaXMueCs9KHQueC10aGlzLngpKmUsdGhpcy55Kz0odC55LXRoaXMueSkqZSx0aGlzfWxlcnBWZWN0b3JzKHQsZSxuKXtyZXR1cm4gdGhpcy54PXQueCsoZS54LXQueCkqbix0aGlzLnk9dC55KyhlLnktdC55KSpuLHRoaXN9ZXF1YWxzKHQpe3JldHVybiB0Lng9PT10aGlzLngmJnQueT09PXRoaXMueX1mcm9tQXJyYXkodCxlPTApe3JldHVybiB0aGlzLng9dFtlXSx0aGlzLnk9dFtlKzFdLHRoaXN9dG9BcnJheSh0PVtdLGU9MCl7cmV0dXJuIHRbZV09dGhpcy54LHRbZSsxXT10aGlzLnksdH1mcm9tQnVmZmVyQXR0cmlidXRlKHQsZSxuKXtyZXR1cm4gdm9pZCAwIT09biYmY29uc29sZS53YXJuKCJUSFJFRS5WZWN0b3IyOiBvZmZzZXQgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIC5mcm9tQnVmZmVyQXR0cmlidXRlKCkuIiksdGhpcy54PXQuZ2V0WChlKSx0aGlzLnk9dC5nZXRZKGUpLHRoaXN9cm90YXRlQXJvdW5kKHQsZSl7Y29uc3Qgbj1NYXRoLmNvcyhlKSxpPU1hdGguc2luKGUpLHI9dGhpcy54LXQueCxvPXRoaXMueS10Lnk7cmV0dXJuIHRoaXMueD1yKm4tbyppK3QueCx0aGlzLnk9cippK28qbit0LnksdGhpc31yYW5kb20oKXtyZXR1cm4gdGhpcy54PU1hdGgucmFuZG9tKCksdGhpcy55PU1hdGgucmFuZG9tKCksdGhpc319QzV0LnByb3RvdHlwZS5pc1ZlY3RvcjI9ITA7Y2xhc3MgQTV0e2NvbnN0cnVjdG9yKCl7dGhpcy5lbGVtZW50cz1bMSwwLDAsMCwxLDAsMCwwLDFdLGFyZ3VtZW50cy5sZW5ndGg+MCYmY29uc29sZS5lcnJvcigiVEhSRUUuTWF0cml4MzogdGhlIGNvbnN0cnVjdG9yIG5vIGxvbmdlciByZWFkcyBhcmd1bWVudHMuIHVzZSAuc2V0KCkgaW5zdGVhZC4iKX1zZXQodCxlLG4saSxyLG8sYSxzLGwpe2NvbnN0IGM9dGhpcy5lbGVtZW50cztyZXR1cm4gY1swXT10LGNbMV09aSxjWzJdPWEsY1szXT1lLGNbNF09cixjWzVdPXMsY1s2XT1uLGNbN109byxjWzhdPWwsdGhpc31pZGVudGl0eSgpe3JldHVybiB0aGlzLnNldCgxLDAsMCwwLDEsMCwwLDAsMSksdGhpc31jb3B5KHQpe2NvbnN0IGU9dGhpcy5lbGVtZW50cyxuPXQuZWxlbWVudHM7cmV0dXJuIGVbMF09blswXSxlWzFdPW5bMV0sZVsyXT1uWzJdLGVbM109blszXSxlWzRdPW5bNF0sZVs1XT1uWzVdLGVbNl09bls2XSxlWzddPW5bN10sZVs4XT1uWzhdLHRoaXN9ZXh0cmFjdEJhc2lzKHQsZSxuKXtyZXR1cm4gdC5zZXRGcm9tTWF0cml4M0NvbHVtbih0aGlzLDApLGUuc2V0RnJvbU1hdHJpeDNDb2x1bW4odGhpcywxKSxuLnNldEZyb21NYXRyaXgzQ29sdW1uKHRoaXMsMiksdGhpc31zZXRGcm9tTWF0cml4NCh0KXtjb25zdCBlPXQuZWxlbWVudHM7cmV0dXJuIHRoaXMuc2V0KGVbMF0sZVs0XSxlWzhdLGVbMV0sZVs1XSxlWzldLGVbMl0sZVs2XSxlWzEwXSksdGhpc31tdWx0aXBseSh0KXtyZXR1cm4gdGhpcy5tdWx0aXBseU1hdHJpY2VzKHRoaXMsdCl9cHJlbXVsdGlwbHkodCl7cmV0dXJuIHRoaXMubXVsdGlwbHlNYXRyaWNlcyh0LHRoaXMpfW11bHRpcGx5TWF0cmljZXModCxlKXtjb25zdCBuPXQuZWxlbWVudHMsaT1lLmVsZW1lbnRzLHI9dGhpcy5lbGVtZW50cyxvPW5bMF0sYT1uWzNdLHM9bls2XSxsPW5bMV0sYz1uWzRdLHU9bls3XSxoPW5bMl0sZD1uWzVdLHA9bls4XSxmPWlbMF0sbT1pWzNdLGc9aVs2XSxfPWlbMV0seT1pWzRdLHY9aVs3XSxiPWlbMl0seD1pWzVdLHc9aVs4XTtyZXR1cm4gclswXT1vKmYrYSpfK3MqYixyWzNdPW8qbSthKnkrcyp4LHJbNl09bypnK2EqditzKncsclsxXT1sKmYrYypfK3UqYixyWzRdPWwqbStjKnkrdSp4LHJbN109bCpnK2Mqdit1KncsclsyXT1oKmYrZCpfK3AqYixyWzVdPWgqbStkKnkrcCp4LHJbOF09aCpnK2QqditwKncsdGhpc31tdWx0aXBseVNjYWxhcih0KXtjb25zdCBlPXRoaXMuZWxlbWVudHM7cmV0dXJuIGVbMF0qPXQsZVszXSo9dCxlWzZdKj10LGVbMV0qPXQsZVs0XSo9dCxlWzddKj10LGVbMl0qPXQsZVs1XSo9dCxlWzhdKj10LHRoaXN9ZGV0ZXJtaW5hbnQoKXtjb25zdCB0PXRoaXMuZWxlbWVudHMsZT10WzBdLG49dFsxXSxpPXRbMl0scj10WzNdLG89dFs0XSxhPXRbNV0scz10WzZdLGw9dFs3XSxjPXRbOF07cmV0dXJuIGUqbypjLWUqYSpsLW4qcipjK24qYSpzK2kqcipsLWkqbypzfWludmVydCgpe2NvbnN0IHQ9dGhpcy5lbGVtZW50cyxlPXRbMF0sbj10WzFdLGk9dFsyXSxyPXRbM10sbz10WzRdLGE9dFs1XSxzPXRbNl0sbD10WzddLGM9dFs4XSx1PWMqby1hKmwsaD1hKnMtYypyLGQ9bCpyLW8qcyxwPWUqdStuKmgraSpkO2lmKDA9PT1wKXJldHVybiB0aGlzLnNldCgwLDAsMCwwLDAsMCwwLDAsMCk7Y29uc3QgZj0xL3A7cmV0dXJuIHRbMF09dSpmLHRbMV09KGkqbC1jKm4pKmYsdFsyXT0oYSpuLWkqbykqZix0WzNdPWgqZix0WzRdPShjKmUtaSpzKSpmLHRbNV09KGkqci1hKmUpKmYsdFs2XT1kKmYsdFs3XT0obipzLWwqZSkqZix0WzhdPShvKmUtbipyKSpmLHRoaXN9dHJhbnNwb3NlKCl7bGV0IHQ7Y29uc3QgZT10aGlzLmVsZW1lbnRzO3JldHVybiB0PWVbMV0sZVsxXT1lWzNdLGVbM109dCx0PWVbMl0sZVsyXT1lWzZdLGVbNl09dCx0PWVbNV0sZVs1XT1lWzddLGVbN109dCx0aGlzfWdldE5vcm1hbE1hdHJpeCh0KXtyZXR1cm4gdGhpcy5zZXRGcm9tTWF0cml4NCh0KS5pbnZlcnQoKS50cmFuc3Bvc2UoKX10cmFuc3Bvc2VJbnRvQXJyYXkodCl7Y29uc3QgZT10aGlzLmVsZW1lbnRzO3JldHVybiB0WzBdPWVbMF0sdFsxXT1lWzNdLHRbMl09ZVs2XSx0WzNdPWVbMV0sdFs0XT1lWzRdLHRbNV09ZVs3XSx0WzZdPWVbMl0sdFs3XT1lWzVdLHRbOF09ZVs4XSx0aGlzfXNldFV2VHJhbnNmb3JtKHQsZSxuLGkscixvLGEpe2NvbnN0IHM9TWF0aC5jb3MociksbD1NYXRoLnNpbihyKTtyZXR1cm4gdGhpcy5zZXQobipzLG4qbCwtbioocypvK2wqYSkrbyt0LC1pKmwsaSpzLC1pKigtbCpvK3MqYSkrYStlLDAsMCwxKSx0aGlzfXNjYWxlKHQsZSl7Y29uc3Qgbj10aGlzLmVsZW1lbnRzO3JldHVybiBuWzBdKj10LG5bM10qPXQsbls2XSo9dCxuWzFdKj1lLG5bNF0qPWUsbls3XSo9ZSx0aGlzfXJvdGF0ZSh0KXtjb25zdCBlPU1hdGguY29zKHQpLG49TWF0aC5zaW4odCksaT10aGlzLmVsZW1lbnRzLHI9aVswXSxvPWlbM10sYT1pWzZdLHM9aVsxXSxsPWlbNF0sYz1pWzddO3JldHVybiBpWzBdPWUqcituKnMsaVszXT1lKm8rbipsLGlbNl09ZSphK24qYyxpWzFdPS1uKnIrZSpzLGlbNF09LW4qbytlKmwsaVs3XT0tbiphK2UqYyx0aGlzfXRyYW5zbGF0ZSh0LGUpe2NvbnN0IG49dGhpcy5lbGVtZW50cztyZXR1cm4gblswXSs9dCpuWzJdLG5bM10rPXQqbls1XSxuWzZdKz10Km5bOF0sblsxXSs9ZSpuWzJdLG5bNF0rPWUqbls1XSxuWzddKz1lKm5bOF0sdGhpc31lcXVhbHModCl7Y29uc3QgZT10aGlzLmVsZW1lbnRzLG49dC5lbGVtZW50cztmb3IobGV0IHQ9MDt0PDk7dCsrKWlmKGVbdF0hPT1uW3RdKXJldHVybiExO3JldHVybiEwfWZyb21BcnJheSh0LGU9MCl7Zm9yKGxldCBuPTA7bjw5O24rKyl0aGlzLmVsZW1lbnRzW25dPXRbbitlXTtyZXR1cm4gdGhpc310b0FycmF5KHQ9W10sZT0wKXtjb25zdCBuPXRoaXMuZWxlbWVudHM7cmV0dXJuIHRbZV09blswXSx0W2UrMV09blsxXSx0W2UrMl09blsyXSx0W2UrM109blszXSx0W2UrNF09bls0XSx0W2UrNV09bls1XSx0W2UrNl09bls2XSx0W2UrN109bls3XSx0W2UrOF09bls4XSx0fWNsb25lKCl7cmV0dXJuKG5ldyB0aGlzLmNvbnN0cnVjdG9yKS5mcm9tQXJyYXkodGhpcy5lbGVtZW50cyl9fWxldCBrNXQ7QTV0LnByb3RvdHlwZS5pc01hdHJpeDM9ITA7Y2xhc3MgTDV0e3N0YXRpYyBnZXREYXRhVVJMKHQpe2lmKC9eZGF0YTovaS50ZXN0KHQuc3JjKSlyZXR1cm4gdC5zcmM7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBIVE1MQ2FudmFzRWxlbWVudClyZXR1cm4gdC5zcmM7bGV0IGU7aWYodCBpbnN0YW5jZW9mIEhUTUxDYW52YXNFbGVtZW50KWU9dDtlbHNle3ZvaWQgMD09PWs1dCYmKGs1dD1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiLCJjYW52YXMiKSksazV0LndpZHRoPXQud2lkdGgsazV0LmhlaWdodD10LmhlaWdodDtjb25zdCBuPWs1dC5nZXRDb250ZXh0KCIyZCIpO3QgaW5zdGFuY2VvZiBJbWFnZURhdGE/bi5wdXRJbWFnZURhdGEodCwwLDApOm4uZHJhd0ltYWdlKHQsMCwwLHQud2lkdGgsdC5oZWlnaHQpLGU9azV0fXJldHVybiBlLndpZHRoPjIwNDh8fGUuaGVpZ2h0PjIwNDg/KGNvbnNvbGUud2FybigiVEhSRUUuSW1hZ2VVdGlscy5nZXREYXRhVVJMOiBJbWFnZSBjb252ZXJ0ZWQgdG8ganBnIGZvciBwZXJmb3JtYW5jZSByZWFzb25zIix0KSxlLnRvRGF0YVVSTCgiaW1hZ2UvanBlZyIsLjYpKTplLnRvRGF0YVVSTCgiaW1hZ2UvcG5nIil9fWxldCBQNXQ9MDtjbGFzcyBONXQgZXh0ZW5kcyBlNXR7Y29uc3RydWN0b3IodD1ONXQuREVGQVVMVF9JTUFHRSxlPU41dC5ERUZBVUxUX01BUFBJTkcsbj0xMDAxLGk9MTAwMSxyPTEwMDYsbz0xMDA4LGE9MTAyMyxzPTEwMDksbD0xLGM9M2UzKXtzdXBlcigpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJpZCIse3ZhbHVlOlA1dCsrfSksdGhpcy51dWlkPWE1dCgpLHRoaXMubmFtZT0iIix0aGlzLmltYWdlPXQsdGhpcy5taXBtYXBzPVtdLHRoaXMubWFwcGluZz1lLHRoaXMud3JhcFM9bix0aGlzLndyYXBUPWksdGhpcy5tYWdGaWx0ZXI9cix0aGlzLm1pbkZpbHRlcj1vLHRoaXMuYW5pc290cm9weT1sLHRoaXMuZm9ybWF0PWEsdGhpcy5pbnRlcm5hbEZvcm1hdD1udWxsLHRoaXMudHlwZT1zLHRoaXMub2Zmc2V0PW5ldyBDNXQoMCwwKSx0aGlzLnJlcGVhdD1uZXcgQzV0KDEsMSksdGhpcy5jZW50ZXI9bmV3IEM1dCgwLDApLHRoaXMucm90YXRpb249MCx0aGlzLm1hdHJpeEF1dG9VcGRhdGU9ITAsdGhpcy5tYXRyaXg9bmV3IEE1dCx0aGlzLmdlbmVyYXRlTWlwbWFwcz0hMCx0aGlzLnByZW11bHRpcGx5QWxwaGE9ITEsdGhpcy5mbGlwWT0hMCx0aGlzLnVucGFja0FsaWdubWVudD00LHRoaXMuZW5jb2Rpbmc9Yyx0aGlzLnZlcnNpb249MCx0aGlzLm9uVXBkYXRlPW51bGwsdGhpcy5pc1JlbmRlclRhcmdldFRleHR1cmU9ITF9dXBkYXRlTWF0cml4KCl7dGhpcy5tYXRyaXguc2V0VXZUcmFuc2Zvcm0odGhpcy5vZmZzZXQueCx0aGlzLm9mZnNldC55LHRoaXMucmVwZWF0LngsdGhpcy5yZXBlYXQueSx0aGlzLnJvdGF0aW9uLHRoaXMuY2VudGVyLngsdGhpcy5jZW50ZXIueSl9Y2xvbmUoKXtyZXR1cm4obmV3IHRoaXMuY29uc3RydWN0b3IpLmNvcHkodGhpcyl9Y29weSh0KXtyZXR1cm4gdGhpcy5uYW1lPXQubmFtZSx0aGlzLmltYWdlPXQuaW1hZ2UsdGhpcy5taXBtYXBzPXQubWlwbWFwcy5zbGljZSgwKSx0aGlzLm1hcHBpbmc9dC5tYXBwaW5nLHRoaXMud3JhcFM9dC53cmFwUyx0aGlzLndyYXBUPXQud3JhcFQsdGhpcy5tYWdGaWx0ZXI9dC5tYWdGaWx0ZXIsdGhpcy5taW5GaWx0ZXI9dC5taW5GaWx0ZXIsdGhpcy5hbmlzb3Ryb3B5PXQuYW5pc290cm9weSx0aGlzLmZvcm1hdD10LmZvcm1hdCx0aGlzLmludGVybmFsRm9ybWF0PXQuaW50ZXJuYWxGb3JtYXQsdGhpcy50eXBlPXQudHlwZSx0aGlzLm9mZnNldC5jb3B5KHQub2Zmc2V0KSx0aGlzLnJlcGVhdC5jb3B5KHQucmVwZWF0KSx0aGlzLmNlbnRlci5jb3B5KHQuY2VudGVyKSx0aGlzLnJvdGF0aW9uPXQucm90YXRpb24sdGhpcy5tYXRyaXhBdXRvVXBkYXRlPXQubWF0cml4QXV0b1VwZGF0ZSx0aGlzLm1hdHJpeC5jb3B5KHQubWF0cml4KSx0aGlzLmdlbmVyYXRlTWlwbWFwcz10LmdlbmVyYXRlTWlwbWFwcyx0aGlzLnByZW11bHRpcGx5QWxwaGE9dC5wcmVtdWx0aXBseUFscGhhLHRoaXMuZmxpcFk9dC5mbGlwWSx0aGlzLnVucGFja0FsaWdubWVudD10LnVucGFja0FsaWdubWVudCx0aGlzLmVuY29kaW5nPXQuZW5jb2RpbmcsdGhpc310b0pTT04odCl7Y29uc3QgZT12b2lkIDA9PT10fHwic3RyaW5nIj09dHlwZW9mIHQ7aWYoIWUmJnZvaWQgMCE9PXQudGV4dHVyZXNbdGhpcy51dWlkXSlyZXR1cm4gdC50ZXh0dXJlc1t0aGlzLnV1aWRdO2NvbnN0IG49e21ldGFkYXRhOnt2ZXJzaW9uOjQuNSx0eXBlOiJUZXh0dXJlIixnZW5lcmF0b3I6IlRleHR1cmUudG9KU09OIn0sdXVpZDp0aGlzLnV1aWQsbmFtZTp0aGlzLm5hbWUsbWFwcGluZzp0aGlzLm1hcHBpbmcscmVwZWF0Olt0aGlzLnJlcGVhdC54LHRoaXMucmVwZWF0LnldLG9mZnNldDpbdGhpcy5vZmZzZXQueCx0aGlzLm9mZnNldC55XSxjZW50ZXI6W3RoaXMuY2VudGVyLngsdGhpcy5jZW50ZXIueV0scm90YXRpb246dGhpcy5yb3RhdGlvbix3cmFwOlt0aGlzLndyYXBTLHRoaXMud3JhcFRdLGZvcm1hdDp0aGlzLmZvcm1hdCx0eXBlOnRoaXMudHlwZSxlbmNvZGluZzp0aGlzLmVuY29kaW5nLG1pbkZpbHRlcjp0aGlzLm1pbkZpbHRlcixtYWdGaWx0ZXI6dGhpcy5tYWdGaWx0ZXIsYW5pc290cm9weTp0aGlzLmFuaXNvdHJvcHksZmxpcFk6dGhpcy5mbGlwWSxwcmVtdWx0aXBseUFscGhhOnRoaXMucHJlbXVsdGlwbHlBbHBoYSx1bnBhY2tBbGlnbm1lbnQ6dGhpcy51bnBhY2tBbGlnbm1lbnR9O2lmKHZvaWQgMCE9PXRoaXMuaW1hZ2Upe2NvbnN0IGk9dGhpcy5pbWFnZTtpZih2b2lkIDA9PT1pLnV1aWQmJihpLnV1aWQ9YTV0KCkpLCFlJiZ2b2lkIDA9PT10LmltYWdlc1tpLnV1aWRdKXtsZXQgZTtpZihBcnJheS5pc0FycmF5KGkpKXtlPVtdO2ZvcihsZXQgdD0wLG49aS5sZW5ndGg7dDxuO3QrKyllLnB1c2goSTV0KGlbdF0uaXNEYXRhVGV4dHVyZT9pW3RdLmltYWdlOmlbdF0pKX1lbHNlIGU9STV0KGkpO3QuaW1hZ2VzW2kudXVpZF09e3V1aWQ6aS51dWlkLHVybDplfX1uLmltYWdlPWkudXVpZH1yZXR1cm4gZXx8KHQudGV4dHVyZXNbdGhpcy51dWlkXT1uKSxufWRpc3Bvc2UoKXt0aGlzLmRpc3BhdGNoRXZlbnQoe3R5cGU6ImRpc3Bvc2UifSl9dHJhbnNmb3JtVXYodCl7aWYodGhpcy5tYXBwaW5nIT09dDJ0KXJldHVybiB0O2lmKHQuYXBwbHlNYXRyaXgzKHRoaXMubWF0cml4KSx0Lng8MHx8dC54PjEpc3dpdGNoKHRoaXMud3JhcFMpe2Nhc2UgczJ0OnQueD10LngtTWF0aC5mbG9vcih0LngpO2JyZWFrO2Nhc2UgbDJ0OnQueD10Lng8MD8wOjE7YnJlYWs7Y2FzZSBjMnQ6dC54PTE9PT1NYXRoLmFicyhNYXRoLmZsb29yKHQueCklMik/TWF0aC5jZWlsKHQueCktdC54OnQueC1NYXRoLmZsb29yKHQueCl9aWYodC55PDB8fHQueT4xKXN3aXRjaCh0aGlzLndyYXBUKXtjYXNlIHMydDp0Lnk9dC55LU1hdGguZmxvb3IodC55KTticmVhaztjYXNlIGwydDp0Lnk9dC55PDA/MDoxO2JyZWFrO2Nhc2UgYzJ0OnQueT0xPT09TWF0aC5hYnMoTWF0aC5mbG9vcih0LnkpJTIpP01hdGguY2VpbCh0LnkpLXQueTp0LnktTWF0aC5mbG9vcih0LnkpfXJldHVybiB0aGlzLmZsaXBZJiYodC55PTEtdC55KSx0fXNldCBuZWVkc1VwZGF0ZSh0KXshMD09PXQmJnRoaXMudmVyc2lvbisrfX1mdW5jdGlvbiBJNXQodCl7cmV0dXJuInVuZGVmaW5lZCIhPXR5cGVvZiBIVE1MSW1hZ2VFbGVtZW50JiZ0IGluc3RhbmNlb2YgSFRNTEltYWdlRWxlbWVudHx8InVuZGVmaW5lZCIhPXR5cGVvZiBIVE1MQ2FudmFzRWxlbWVudCYmdCBpbnN0YW5jZW9mIEhUTUxDYW52YXNFbGVtZW50fHwidW5kZWZpbmVkIiE9dHlwZW9mIEltYWdlQml0bWFwJiZ0IGluc3RhbmNlb2YgSW1hZ2VCaXRtYXA/TDV0LmdldERhdGFVUkwodCk6dC5kYXRhP3tkYXRhOkFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHQuZGF0YSksd2lkdGg6dC53aWR0aCxoZWlnaHQ6dC5oZWlnaHQsdHlwZTp0LmRhdGEuY29uc3RydWN0b3IubmFtZX06KGNvbnNvbGUud2FybigiVEhSRUUuVGV4dHVyZTogVW5hYmxlIHRvIHNlcmlhbGl6ZSBUZXh0dXJlLiIpLHt9KX1ONXQuREVGQVVMVF9JTUFHRT12b2lkIDAsTjV0LkRFRkFVTFRfTUFQUElORz10MnQsTjV0LnByb3RvdHlwZS5pc1RleHR1cmU9ITA7Y2xhc3MgUjV0e2NvbnN0cnVjdG9yKHQ9MCxlPTAsbj0wLGk9MSl7dGhpcy54PXQsdGhpcy55PWUsdGhpcy56PW4sdGhpcy53PWl9Z2V0IHdpZHRoKCl7cmV0dXJuIHRoaXMuen1zZXQgd2lkdGgodCl7dGhpcy56PXR9Z2V0IGhlaWdodCgpe3JldHVybiB0aGlzLnd9c2V0IGhlaWdodCh0KXt0aGlzLnc9dH1zZXQodCxlLG4saSl7cmV0dXJuIHRoaXMueD10LHRoaXMueT1lLHRoaXMuej1uLHRoaXMudz1pLHRoaXN9c2V0U2NhbGFyKHQpe3JldHVybiB0aGlzLng9dCx0aGlzLnk9dCx0aGlzLno9dCx0aGlzLnc9dCx0aGlzfXNldFgodCl7cmV0dXJuIHRoaXMueD10LHRoaXN9c2V0WSh0KXtyZXR1cm4gdGhpcy55PXQsdGhpc31zZXRaKHQpe3JldHVybiB0aGlzLno9dCx0aGlzfXNldFcodCl7cmV0dXJuIHRoaXMudz10LHRoaXN9c2V0Q29tcG9uZW50KHQsZSl7c3dpdGNoKHQpe2Nhc2UgMDp0aGlzLng9ZTticmVhaztjYXNlIDE6dGhpcy55PWU7YnJlYWs7Y2FzZSAyOnRoaXMuej1lO2JyZWFrO2Nhc2UgMzp0aGlzLnc9ZTticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiaW5kZXggaXMgb3V0IG9mIHJhbmdlOiAiK3QpfXJldHVybiB0aGlzfWdldENvbXBvbmVudCh0KXtzd2l0Y2godCl7Y2FzZSAwOnJldHVybiB0aGlzLng7Y2FzZSAxOnJldHVybiB0aGlzLnk7Y2FzZSAyOnJldHVybiB0aGlzLno7Y2FzZSAzOnJldHVybiB0aGlzLnc7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoImluZGV4IGlzIG91dCBvZiByYW5nZTogIit0KX19Y2xvbmUoKXtyZXR1cm4gbmV3IHRoaXMuY29uc3RydWN0b3IodGhpcy54LHRoaXMueSx0aGlzLnosdGhpcy53KX1jb3B5KHQpe3JldHVybiB0aGlzLng9dC54LHRoaXMueT10LnksdGhpcy56PXQueix0aGlzLnc9dm9pZCAwIT09dC53P3QudzoxLHRoaXN9YWRkKHQsZSl7cmV0dXJuIHZvaWQgMCE9PWU/KGNvbnNvbGUud2FybigiVEhSRUUuVmVjdG9yNDogLmFkZCgpIG5vdyBvbmx5IGFjY2VwdHMgb25lIGFyZ3VtZW50LiBVc2UgLmFkZFZlY3RvcnMoIGEsIGIgKSBpbnN0ZWFkLiIpLHRoaXMuYWRkVmVjdG9ycyh0LGUpKToodGhpcy54Kz10LngsdGhpcy55Kz10LnksdGhpcy56Kz10LnosdGhpcy53Kz10LncsdGhpcyl9YWRkU2NhbGFyKHQpe3JldHVybiB0aGlzLngrPXQsdGhpcy55Kz10LHRoaXMueis9dCx0aGlzLncrPXQsdGhpc31hZGRWZWN0b3JzKHQsZSl7cmV0dXJuIHRoaXMueD10LngrZS54LHRoaXMueT10LnkrZS55LHRoaXMuej10LnorZS56LHRoaXMudz10LncrZS53LHRoaXN9YWRkU2NhbGVkVmVjdG9yKHQsZSl7cmV0dXJuIHRoaXMueCs9dC54KmUsdGhpcy55Kz10LnkqZSx0aGlzLnorPXQueiplLHRoaXMudys9dC53KmUsdGhpc31zdWIodCxlKXtyZXR1cm4gdm9pZCAwIT09ZT8oY29uc29sZS53YXJuKCJUSFJFRS5WZWN0b3I0OiAuc3ViKCkgbm93IG9ubHkgYWNjZXB0cyBvbmUgYXJndW1lbnQuIFVzZSAuc3ViVmVjdG9ycyggYSwgYiApIGluc3RlYWQuIiksdGhpcy5zdWJWZWN0b3JzKHQsZSkpOih0aGlzLngtPXQueCx0aGlzLnktPXQueSx0aGlzLnotPXQueix0aGlzLnctPXQudyx0aGlzKX1zdWJTY2FsYXIodCl7cmV0dXJuIHRoaXMueC09dCx0aGlzLnktPXQsdGhpcy56LT10LHRoaXMudy09dCx0aGlzfXN1YlZlY3RvcnModCxlKXtyZXR1cm4gdGhpcy54PXQueC1lLngsdGhpcy55PXQueS1lLnksdGhpcy56PXQuei1lLnosdGhpcy53PXQudy1lLncsdGhpc31tdWx0aXBseSh0KXtyZXR1cm4gdGhpcy54Kj10LngsdGhpcy55Kj10LnksdGhpcy56Kj10LnosdGhpcy53Kj10LncsdGhpc31tdWx0aXBseVNjYWxhcih0KXtyZXR1cm4gdGhpcy54Kj10LHRoaXMueSo9dCx0aGlzLnoqPXQsdGhpcy53Kj10LHRoaXN9YXBwbHlNYXRyaXg0KHQpe2NvbnN0IGU9dGhpcy54LG49dGhpcy55LGk9dGhpcy56LHI9dGhpcy53LG89dC5lbGVtZW50cztyZXR1cm4gdGhpcy54PW9bMF0qZStvWzRdKm4rb1s4XSppK29bMTJdKnIsdGhpcy55PW9bMV0qZStvWzVdKm4rb1s5XSppK29bMTNdKnIsdGhpcy56PW9bMl0qZStvWzZdKm4rb1sxMF0qaStvWzE0XSpyLHRoaXMudz1vWzNdKmUrb1s3XSpuK29bMTFdKmkrb1sxNV0qcix0aGlzfWRpdmlkZVNjYWxhcih0KXtyZXR1cm4gdGhpcy5tdWx0aXBseVNjYWxhcigxL3QpfXNldEF4aXNBbmdsZUZyb21RdWF0ZXJuaW9uKHQpe3RoaXMudz0yKk1hdGguYWNvcyh0LncpO2NvbnN0IGU9TWF0aC5zcXJ0KDEtdC53KnQudyk7cmV0dXJuIGU8MWUtND8odGhpcy54PTEsdGhpcy55PTAsdGhpcy56PTApOih0aGlzLng9dC54L2UsdGhpcy55PXQueS9lLHRoaXMuej10LnovZSksdGhpc31zZXRBeGlzQW5nbGVGcm9tUm90YXRpb25NYXRyaXgodCl7bGV0IGUsbixpLHI7Y29uc3Qgbz0uMDEsYT0uMSxzPXQuZWxlbWVudHMsbD1zWzBdLGM9c1s0XSx1PXNbOF0saD1zWzFdLGQ9c1s1XSxwPXNbOV0sZj1zWzJdLG09c1s2XSxnPXNbMTBdO2lmKE1hdGguYWJzKGMtaCk8byYmTWF0aC5hYnModS1mKTxvJiZNYXRoLmFicyhwLW0pPG8pe2lmKE1hdGguYWJzKGMraCk8YSYmTWF0aC5hYnModStmKTxhJiZNYXRoLmFicyhwK20pPGEmJk1hdGguYWJzKGwrZCtnLTMpPGEpcmV0dXJuIHRoaXMuc2V0KDEsMCwwLDApLHRoaXM7ZT1NYXRoLlBJO2NvbnN0IHQ9KGwrMSkvMixzPShkKzEpLzIsXz0oZysxKS8yLHk9KGMraCkvNCx2PSh1K2YpLzQsYj0ocCttKS80O3JldHVybiB0PnMmJnQ+Xz90PG8/KG49MCxpPS43MDcxMDY3ODEscj0uNzA3MTA2NzgxKToobj1NYXRoLnNxcnQodCksaT15L24scj12L24pOnM+Xz9zPG8/KG49LjcwNzEwNjc4MSxpPTAscj0uNzA3MTA2NzgxKTooaT1NYXRoLnNxcnQocyksbj15L2kscj1iL2kpOl88bz8obj0uNzA3MTA2NzgxLGk9LjcwNzEwNjc4MSxyPTApOihyPU1hdGguc3FydChfKSxuPXYvcixpPWIvciksdGhpcy5zZXQobixpLHIsZSksdGhpc31sZXQgXz1NYXRoLnNxcnQoKG0tcCkqKG0tcCkrKHUtZikqKHUtZikrKGgtYykqKGgtYykpO3JldHVybiBNYXRoLmFicyhfKTwuMDAxJiYoXz0xKSx0aGlzLng9KG0tcCkvXyx0aGlzLnk9KHUtZikvXyx0aGlzLno9KGgtYykvXyx0aGlzLnc9TWF0aC5hY29zKChsK2QrZy0xKS8yKSx0aGlzfW1pbih0KXtyZXR1cm4gdGhpcy54PU1hdGgubWluKHRoaXMueCx0LngpLHRoaXMueT1NYXRoLm1pbih0aGlzLnksdC55KSx0aGlzLno9TWF0aC5taW4odGhpcy56LHQueiksdGhpcy53PU1hdGgubWluKHRoaXMudyx0LncpLHRoaXN9bWF4KHQpe3JldHVybiB0aGlzLng9TWF0aC5tYXgodGhpcy54LHQueCksdGhpcy55PU1hdGgubWF4KHRoaXMueSx0LnkpLHRoaXMuej1NYXRoLm1heCh0aGlzLnosdC56KSx0aGlzLnc9TWF0aC5tYXgodGhpcy53LHQudyksdGhpc31jbGFtcCh0LGUpe3JldHVybiB0aGlzLng9TWF0aC5tYXgodC54LE1hdGgubWluKGUueCx0aGlzLngpKSx0aGlzLnk9TWF0aC5tYXgodC55LE1hdGgubWluKGUueSx0aGlzLnkpKSx0aGlzLno9TWF0aC5tYXgodC56LE1hdGgubWluKGUueix0aGlzLnopKSx0aGlzLnc9TWF0aC5tYXgodC53LE1hdGgubWluKGUudyx0aGlzLncpKSx0aGlzfWNsYW1wU2NhbGFyKHQsZSl7cmV0dXJuIHRoaXMueD1NYXRoLm1heCh0LE1hdGgubWluKGUsdGhpcy54KSksdGhpcy55PU1hdGgubWF4KHQsTWF0aC5taW4oZSx0aGlzLnkpKSx0aGlzLno9TWF0aC5tYXgodCxNYXRoLm1pbihlLHRoaXMueikpLHRoaXMudz1NYXRoLm1heCh0LE1hdGgubWluKGUsdGhpcy53KSksdGhpc31jbGFtcExlbmd0aCh0LGUpe2NvbnN0IG49dGhpcy5sZW5ndGgoKTtyZXR1cm4gdGhpcy5kaXZpZGVTY2FsYXIobnx8MSkubXVsdGlwbHlTY2FsYXIoTWF0aC5tYXgodCxNYXRoLm1pbihlLG4pKSl9Zmxvb3IoKXtyZXR1cm4gdGhpcy54PU1hdGguZmxvb3IodGhpcy54KSx0aGlzLnk9TWF0aC5mbG9vcih0aGlzLnkpLHRoaXMuej1NYXRoLmZsb29yKHRoaXMueiksdGhpcy53PU1hdGguZmxvb3IodGhpcy53KSx0aGlzfWNlaWwoKXtyZXR1cm4gdGhpcy54PU1hdGguY2VpbCh0aGlzLngpLHRoaXMueT1NYXRoLmNlaWwodGhpcy55KSx0aGlzLno9TWF0aC5jZWlsKHRoaXMueiksdGhpcy53PU1hdGguY2VpbCh0aGlzLncpLHRoaXN9cm91bmQoKXtyZXR1cm4gdGhpcy54PU1hdGgucm91bmQodGhpcy54KSx0aGlzLnk9TWF0aC5yb3VuZCh0aGlzLnkpLHRoaXMuej1NYXRoLnJvdW5kKHRoaXMueiksdGhpcy53PU1hdGgucm91bmQodGhpcy53KSx0aGlzfXJvdW5kVG9aZXJvKCl7cmV0dXJuIHRoaXMueD10aGlzLng8MD9NYXRoLmNlaWwodGhpcy54KTpNYXRoLmZsb29yKHRoaXMueCksdGhpcy55PXRoaXMueTwwP01hdGguY2VpbCh0aGlzLnkpOk1hdGguZmxvb3IodGhpcy55KSx0aGlzLno9dGhpcy56PDA/TWF0aC5jZWlsKHRoaXMueik6TWF0aC5mbG9vcih0aGlzLnopLHRoaXMudz10aGlzLnc8MD9NYXRoLmNlaWwodGhpcy53KTpNYXRoLmZsb29yKHRoaXMudyksdGhpc31uZWdhdGUoKXtyZXR1cm4gdGhpcy54PS10aGlzLngsdGhpcy55PS10aGlzLnksdGhpcy56PS10aGlzLnosdGhpcy53PS10aGlzLncsdGhpc31kb3QodCl7cmV0dXJuIHRoaXMueCp0LngrdGhpcy55KnQueSt0aGlzLnoqdC56K3RoaXMudyp0Lnd9bGVuZ3RoU3EoKXtyZXR1cm4gdGhpcy54KnRoaXMueCt0aGlzLnkqdGhpcy55K3RoaXMueip0aGlzLnordGhpcy53KnRoaXMud31sZW5ndGgoKXtyZXR1cm4gTWF0aC5zcXJ0KHRoaXMueCp0aGlzLngrdGhpcy55KnRoaXMueSt0aGlzLnoqdGhpcy56K3RoaXMudyp0aGlzLncpfW1hbmhhdHRhbkxlbmd0aCgpe3JldHVybiBNYXRoLmFicyh0aGlzLngpK01hdGguYWJzKHRoaXMueSkrTWF0aC5hYnModGhpcy56KStNYXRoLmFicyh0aGlzLncpfW5vcm1hbGl6ZSgpe3JldHVybiB0aGlzLmRpdmlkZVNjYWxhcih0aGlzLmxlbmd0aCgpfHwxKX1zZXRMZW5ndGgodCl7cmV0dXJuIHRoaXMubm9ybWFsaXplKCkubXVsdGlwbHlTY2FsYXIodCl9bGVycCh0LGUpe3JldHVybiB0aGlzLngrPSh0LngtdGhpcy54KSplLHRoaXMueSs9KHQueS10aGlzLnkpKmUsdGhpcy56Kz0odC56LXRoaXMueikqZSx0aGlzLncrPSh0LnctdGhpcy53KSplLHRoaXN9bGVycFZlY3RvcnModCxlLG4pe3JldHVybiB0aGlzLng9dC54KyhlLngtdC54KSpuLHRoaXMueT10LnkrKGUueS10LnkpKm4sdGhpcy56PXQueisoZS56LXQueikqbix0aGlzLnc9dC53KyhlLnctdC53KSpuLHRoaXN9ZXF1YWxzKHQpe3JldHVybiB0Lng9PT10aGlzLngmJnQueT09PXRoaXMueSYmdC56PT09dGhpcy56JiZ0Lnc9PT10aGlzLnd9ZnJvbUFycmF5KHQsZT0wKXtyZXR1cm4gdGhpcy54PXRbZV0sdGhpcy55PXRbZSsxXSx0aGlzLno9dFtlKzJdLHRoaXMudz10W2UrM10sdGhpc310b0FycmF5KHQ9W10sZT0wKXtyZXR1cm4gdFtlXT10aGlzLngsdFtlKzFdPXRoaXMueSx0W2UrMl09dGhpcy56LHRbZSszXT10aGlzLncsdH1mcm9tQnVmZmVyQXR0cmlidXRlKHQsZSxuKXtyZXR1cm4gdm9pZCAwIT09biYmY29uc29sZS53YXJuKCJUSFJFRS5WZWN0b3I0OiBvZmZzZXQgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIC5mcm9tQnVmZmVyQXR0cmlidXRlKCkuIiksdGhpcy54PXQuZ2V0WChlKSx0aGlzLnk9dC5nZXRZKGUpLHRoaXMuej10LmdldFooZSksdGhpcy53PXQuZ2V0VyhlKSx0aGlzfXJhbmRvbSgpe3JldHVybiB0aGlzLng9TWF0aC5yYW5kb20oKSx0aGlzLnk9TWF0aC5yYW5kb20oKSx0aGlzLno9TWF0aC5yYW5kb20oKSx0aGlzLnc9TWF0aC5yYW5kb20oKSx0aGlzfX1SNXQucHJvdG90eXBlLmlzVmVjdG9yND0hMDtjbGFzcyBPNXQgZXh0ZW5kcyBlNXR7Y29uc3RydWN0b3IodCxlLG49e30pe3N1cGVyKCksdGhpcy53aWR0aD10LHRoaXMuaGVpZ2h0PWUsdGhpcy5kZXB0aD0xLHRoaXMuc2Npc3Nvcj1uZXcgUjV0KDAsMCx0LGUpLHRoaXMuc2Npc3NvclRlc3Q9ITEsdGhpcy52aWV3cG9ydD1uZXcgUjV0KDAsMCx0LGUpLHRoaXMudGV4dHVyZT1uZXcgTjV0KHZvaWQgMCxuLm1hcHBpbmcsbi53cmFwUyxuLndyYXBULG4ubWFnRmlsdGVyLG4ubWluRmlsdGVyLG4uZm9ybWF0LG4udHlwZSxuLmFuaXNvdHJvcHksbi5lbmNvZGluZyksdGhpcy50ZXh0dXJlLmlzUmVuZGVyVGFyZ2V0VGV4dHVyZT0hMCx0aGlzLnRleHR1cmUuaW1hZ2U9e3dpZHRoOnQsaGVpZ2h0OmUsZGVwdGg6MX0sdGhpcy50ZXh0dXJlLmdlbmVyYXRlTWlwbWFwcz12b2lkIDAhPT1uLmdlbmVyYXRlTWlwbWFwcyYmbi5nZW5lcmF0ZU1pcG1hcHMsdGhpcy50ZXh0dXJlLm1pbkZpbHRlcj12b2lkIDAhPT1uLm1pbkZpbHRlcj9uLm1pbkZpbHRlcjpwMnQsdGhpcy5kZXB0aEJ1ZmZlcj12b2lkIDA9PT1uLmRlcHRoQnVmZmVyfHxuLmRlcHRoQnVmZmVyLHRoaXMuc3RlbmNpbEJ1ZmZlcj12b2lkIDAhPT1uLnN0ZW5jaWxCdWZmZXImJm4uc3RlbmNpbEJ1ZmZlcix0aGlzLmRlcHRoVGV4dHVyZT12b2lkIDAhPT1uLmRlcHRoVGV4dHVyZT9uLmRlcHRoVGV4dHVyZTpudWxsfXNldFRleHR1cmUodCl7dC5pbWFnZT17d2lkdGg6dGhpcy53aWR0aCxoZWlnaHQ6dGhpcy5oZWlnaHQsZGVwdGg6dGhpcy5kZXB0aH0sdGhpcy50ZXh0dXJlPXR9c2V0U2l6ZSh0LGUsbj0xKXt0aGlzLndpZHRoPT09dCYmdGhpcy5oZWlnaHQ9PT1lJiZ0aGlzLmRlcHRoPT09bnx8KHRoaXMud2lkdGg9dCx0aGlzLmhlaWdodD1lLHRoaXMuZGVwdGg9bix0aGlzLnRleHR1cmUuaW1hZ2Uud2lkdGg9dCx0aGlzLnRleHR1cmUuaW1hZ2UuaGVpZ2h0PWUsdGhpcy50ZXh0dXJlLmltYWdlLmRlcHRoPW4sdGhpcy5kaXNwb3NlKCkpLHRoaXMudmlld3BvcnQuc2V0KDAsMCx0LGUpLHRoaXMuc2Npc3Nvci5zZXQoMCwwLHQsZSl9Y2xvbmUoKXtyZXR1cm4obmV3IHRoaXMuY29uc3RydWN0b3IpLmNvcHkodGhpcyl9Y29weSh0KXtyZXR1cm4gdGhpcy53aWR0aD10LndpZHRoLHRoaXMuaGVpZ2h0PXQuaGVpZ2h0LHRoaXMuZGVwdGg9dC5kZXB0aCx0aGlzLnZpZXdwb3J0LmNvcHkodC52aWV3cG9ydCksdGhpcy50ZXh0dXJlPXQudGV4dHVyZS5jbG9uZSgpLHRoaXMudGV4dHVyZS5pbWFnZT17Li4udGhpcy50ZXh0dXJlLmltYWdlfSx0aGlzLmRlcHRoQnVmZmVyPXQuZGVwdGhCdWZmZXIsdGhpcy5zdGVuY2lsQnVmZmVyPXQuc3RlbmNpbEJ1ZmZlcix0aGlzLmRlcHRoVGV4dHVyZT10LmRlcHRoVGV4dHVyZSx0aGlzfWRpc3Bvc2UoKXt0aGlzLmRpc3BhdGNoRXZlbnQoe3R5cGU6ImRpc3Bvc2UifSl9fU81dC5wcm90b3R5cGUuaXNXZWJHTFJlbmRlclRhcmdldD0hMDtjbGFzcyB6NXQgZXh0ZW5kcyBPNXR7Y29uc3RydWN0b3IodCxlLG4pe3N1cGVyKHQsZSk7Y29uc3QgaT10aGlzLnRleHR1cmU7dGhpcy50ZXh0dXJlPVtdO2ZvcihsZXQgdD0wO3Q8bjt0KyspdGhpcy50ZXh0dXJlW3RdPWkuY2xvbmUoKX1zZXRTaXplKHQsZSxuPTEpe2lmKHRoaXMud2lkdGghPT10fHx0aGlzLmhlaWdodCE9PWV8fHRoaXMuZGVwdGghPT1uKXt0aGlzLndpZHRoPXQsdGhpcy5oZWlnaHQ9ZSx0aGlzLmRlcHRoPW47Zm9yKGxldCBpPTAscj10aGlzLnRleHR1cmUubGVuZ3RoO2k8cjtpKyspdGhpcy50ZXh0dXJlW2ldLmltYWdlLndpZHRoPXQsdGhpcy50ZXh0dXJlW2ldLmltYWdlLmhlaWdodD1lLHRoaXMudGV4dHVyZVtpXS5pbWFnZS5kZXB0aD1uO3RoaXMuZGlzcG9zZSgpfXJldHVybiB0aGlzLnZpZXdwb3J0LnNldCgwLDAsdCxlKSx0aGlzLnNjaXNzb3Iuc2V0KDAsMCx0LGUpLHRoaXN9Y29weSh0KXt0aGlzLmRpc3Bvc2UoKSx0aGlzLndpZHRoPXQud2lkdGgsdGhpcy5oZWlnaHQ9dC5oZWlnaHQsdGhpcy5kZXB0aD10LmRlcHRoLHRoaXMudmlld3BvcnQuc2V0KDAsMCx0aGlzLndpZHRoLHRoaXMuaGVpZ2h0KSx0aGlzLnNjaXNzb3Iuc2V0KDAsMCx0aGlzLndpZHRoLHRoaXMuaGVpZ2h0KSx0aGlzLmRlcHRoQnVmZmVyPXQuZGVwdGhCdWZmZXIsdGhpcy5zdGVuY2lsQnVmZmVyPXQuc3RlbmNpbEJ1ZmZlcix0aGlzLmRlcHRoVGV4dHVyZT10LmRlcHRoVGV4dHVyZSx0aGlzLnRleHR1cmUubGVuZ3RoPTA7Zm9yKGxldCBlPTAsbj10LnRleHR1cmUubGVuZ3RoO2U8bjtlKyspdGhpcy50ZXh0dXJlW2VdPXQudGV4dHVyZVtlXS5jbG9uZSgpO3JldHVybiB0aGlzfX16NXQucHJvdG90eXBlLmlzV2ViR0xNdWx0aXBsZVJlbmRlclRhcmdldHM9ITA7Y2xhc3MgRDV0IGV4dGVuZHMgTzV0e2NvbnN0cnVjdG9yKHQsZSxuKXtzdXBlcih0LGUsbiksdGhpcy5zYW1wbGVzPTR9Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weS5jYWxsKHRoaXMsdCksdGhpcy5zYW1wbGVzPXQuc2FtcGxlcyx0aGlzfX1ENXQucHJvdG90eXBlLmlzV2ViR0xNdWx0aXNhbXBsZVJlbmRlclRhcmdldD0hMDtjbGFzcyBCNXR7Y29uc3RydWN0b3IodD0wLGU9MCxuPTAsaT0xKXt0aGlzLl94PXQsdGhpcy5feT1lLHRoaXMuX3o9bix0aGlzLl93PWl9c3RhdGljIHNsZXJwKHQsZSxuLGkpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlF1YXRlcm5pb246IFN0YXRpYyAuc2xlcnAoKSBoYXMgYmVlbiBkZXByZWNhdGVkLiBVc2UgcW0uc2xlcnBRdWF0ZXJuaW9ucyggcWEsIHFiLCB0ICkgaW5zdGVhZC4iKSxuLnNsZXJwUXVhdGVybmlvbnModCxlLGkpfXN0YXRpYyBzbGVycEZsYXQodCxlLG4saSxyLG8sYSl7bGV0IHM9bltpKzBdLGw9bltpKzFdLGM9bltpKzJdLHU9bltpKzNdO2NvbnN0IGg9cltvKzBdLGQ9cltvKzFdLHA9cltvKzJdLGY9cltvKzNdO2lmKDA9PT1hKXJldHVybiB0W2UrMF09cyx0W2UrMV09bCx0W2UrMl09Yyx2b2lkKHRbZSszXT11KTtpZigxPT09YSlyZXR1cm4gdFtlKzBdPWgsdFtlKzFdPWQsdFtlKzJdPXAsdm9pZCh0W2UrM109Zik7aWYodSE9PWZ8fHMhPT1ofHxsIT09ZHx8YyE9PXApe2xldCB0PTEtYTtjb25zdCBlPXMqaCtsKmQrYypwK3UqZixuPWU+PTA/MTotMSxpPTEtZSplO2lmKGk+TnVtYmVyLkVQU0lMT04pe2NvbnN0IHI9TWF0aC5zcXJ0KGkpLG89TWF0aC5hdGFuMihyLGUqbik7dD1NYXRoLnNpbih0Km8pL3IsYT1NYXRoLnNpbihhKm8pL3J9Y29uc3Qgcj1hKm47aWYocz1zKnQraCpyLGw9bCp0K2QqcixjPWMqdCtwKnIsdT11KnQrZipyLHQ9PT0xLWEpe2NvbnN0IHQ9MS9NYXRoLnNxcnQocypzK2wqbCtjKmMrdSp1KTtzKj10LGwqPXQsYyo9dCx1Kj10fX10W2VdPXMsdFtlKzFdPWwsdFtlKzJdPWMsdFtlKzNdPXV9c3RhdGljIG11bHRpcGx5UXVhdGVybmlvbnNGbGF0KHQsZSxuLGkscixvKXtjb25zdCBhPW5baV0scz1uW2krMV0sbD1uW2krMl0sYz1uW2krM10sdT1yW29dLGg9cltvKzFdLGQ9cltvKzJdLHA9cltvKzNdO3JldHVybiB0W2VdPWEqcCtjKnUrcypkLWwqaCx0W2UrMV09cypwK2MqaCtsKnUtYSpkLHRbZSsyXT1sKnArYypkK2EqaC1zKnUsdFtlKzNdPWMqcC1hKnUtcypoLWwqZCx0fWdldCB4KCl7cmV0dXJuIHRoaXMuX3h9c2V0IHgodCl7dGhpcy5feD10LHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2soKX1nZXQgeSgpe3JldHVybiB0aGlzLl95fXNldCB5KHQpe3RoaXMuX3k9dCx0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKCl9Z2V0IHooKXtyZXR1cm4gdGhpcy5fen1zZXQgeih0KXt0aGlzLl96PXQsdGhpcy5fb25DaGFuZ2VDYWxsYmFjaygpfWdldCB3KCl7cmV0dXJuIHRoaXMuX3d9c2V0IHcodCl7dGhpcy5fdz10LHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2soKX1zZXQodCxlLG4saSl7cmV0dXJuIHRoaXMuX3g9dCx0aGlzLl95PWUsdGhpcy5fej1uLHRoaXMuX3c9aSx0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKCksdGhpc31jbG9uZSgpe3JldHVybiBuZXcgdGhpcy5jb25zdHJ1Y3Rvcih0aGlzLl94LHRoaXMuX3ksdGhpcy5feix0aGlzLl93KX1jb3B5KHQpe3JldHVybiB0aGlzLl94PXQueCx0aGlzLl95PXQueSx0aGlzLl96PXQueix0aGlzLl93PXQudyx0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKCksdGhpc31zZXRGcm9tRXVsZXIodCxlKXtpZighdHx8IXQuaXNFdWxlcil0aHJvdyBuZXcgRXJyb3IoIlRIUkVFLlF1YXRlcm5pb246IC5zZXRGcm9tRXVsZXIoKSBub3cgZXhwZWN0cyBhbiBFdWxlciByb3RhdGlvbiByYXRoZXIgdGhhbiBhIFZlY3RvcjMgYW5kIG9yZGVyLiIpO2NvbnN0IG49dC5feCxpPXQuX3kscj10Ll96LG89dC5fb3JkZXIsYT1NYXRoLmNvcyxzPU1hdGguc2luLGw9YShuLzIpLGM9YShpLzIpLHU9YShyLzIpLGg9cyhuLzIpLGQ9cyhpLzIpLHA9cyhyLzIpO3N3aXRjaChvKXtjYXNlIlhZWiI6dGhpcy5feD1oKmMqdStsKmQqcCx0aGlzLl95PWwqZCp1LWgqYypwLHRoaXMuX3o9bCpjKnAraCpkKnUsdGhpcy5fdz1sKmMqdS1oKmQqcDticmVhaztjYXNlIllYWiI6dGhpcy5feD1oKmMqdStsKmQqcCx0aGlzLl95PWwqZCp1LWgqYypwLHRoaXMuX3o9bCpjKnAtaCpkKnUsdGhpcy5fdz1sKmMqdStoKmQqcDticmVhaztjYXNlIlpYWSI6dGhpcy5feD1oKmMqdS1sKmQqcCx0aGlzLl95PWwqZCp1K2gqYypwLHRoaXMuX3o9bCpjKnAraCpkKnUsdGhpcy5fdz1sKmMqdS1oKmQqcDticmVhaztjYXNlIlpZWCI6dGhpcy5feD1oKmMqdS1sKmQqcCx0aGlzLl95PWwqZCp1K2gqYypwLHRoaXMuX3o9bCpjKnAtaCpkKnUsdGhpcy5fdz1sKmMqdStoKmQqcDticmVhaztjYXNlIllaWCI6dGhpcy5feD1oKmMqdStsKmQqcCx0aGlzLl95PWwqZCp1K2gqYypwLHRoaXMuX3o9bCpjKnAtaCpkKnUsdGhpcy5fdz1sKmMqdS1oKmQqcDticmVhaztjYXNlIlhaWSI6dGhpcy5feD1oKmMqdS1sKmQqcCx0aGlzLl95PWwqZCp1LWgqYypwLHRoaXMuX3o9bCpjKnAraCpkKnUsdGhpcy5fdz1sKmMqdStoKmQqcDticmVhaztkZWZhdWx0OmNvbnNvbGUud2FybigiVEhSRUUuUXVhdGVybmlvbjogLnNldEZyb21FdWxlcigpIGVuY291bnRlcmVkIGFuIHVua25vd24gb3JkZXI6ICIrbyl9cmV0dXJuITEhPT1lJiZ0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKCksdGhpc31zZXRGcm9tQXhpc0FuZ2xlKHQsZSl7Y29uc3Qgbj1lLzIsaT1NYXRoLnNpbihuKTtyZXR1cm4gdGhpcy5feD10LngqaSx0aGlzLl95PXQueSppLHRoaXMuX3o9dC56KmksdGhpcy5fdz1NYXRoLmNvcyhuKSx0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKCksdGhpc31zZXRGcm9tUm90YXRpb25NYXRyaXgodCl7Y29uc3QgZT10LmVsZW1lbnRzLG49ZVswXSxpPWVbNF0scj1lWzhdLG89ZVsxXSxhPWVbNV0scz1lWzldLGw9ZVsyXSxjPWVbNl0sdT1lWzEwXSxoPW4rYSt1O2lmKGg+MCl7Y29uc3QgdD0uNS9NYXRoLnNxcnQoaCsxKTt0aGlzLl93PS4yNS90LHRoaXMuX3g9KGMtcykqdCx0aGlzLl95PShyLWwpKnQsdGhpcy5fej0oby1pKSp0fWVsc2UgaWYobj5hJiZuPnUpe2NvbnN0IHQ9MipNYXRoLnNxcnQoMStuLWEtdSk7dGhpcy5fdz0oYy1zKS90LHRoaXMuX3g9LjI1KnQsdGhpcy5feT0oaStvKS90LHRoaXMuX3o9KHIrbCkvdH1lbHNlIGlmKGE+dSl7Y29uc3QgdD0yKk1hdGguc3FydCgxK2Etbi11KTt0aGlzLl93PShyLWwpL3QsdGhpcy5feD0oaStvKS90LHRoaXMuX3k9LjI1KnQsdGhpcy5fej0ocytjKS90fWVsc2V7Y29uc3QgdD0yKk1hdGguc3FydCgxK3Utbi1hKTt0aGlzLl93PShvLWkpL3QsdGhpcy5feD0ocitsKS90LHRoaXMuX3k9KHMrYykvdCx0aGlzLl96PS4yNSp0fXJldHVybiB0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKCksdGhpc31zZXRGcm9tVW5pdFZlY3RvcnModCxlKXtsZXQgbj10LmRvdChlKSsxO3JldHVybiBuPE51bWJlci5FUFNJTE9OPyhuPTAsTWF0aC5hYnModC54KT5NYXRoLmFicyh0LnopPyh0aGlzLl94PS10LnksdGhpcy5feT10LngsdGhpcy5fej0wLHRoaXMuX3c9bik6KHRoaXMuX3g9MCx0aGlzLl95PS10LnosdGhpcy5fej10LnksdGhpcy5fdz1uKSk6KHRoaXMuX3g9dC55KmUuei10LnoqZS55LHRoaXMuX3k9dC56KmUueC10LngqZS56LHRoaXMuX3o9dC54KmUueS10LnkqZS54LHRoaXMuX3c9biksdGhpcy5ub3JtYWxpemUoKX1hbmdsZVRvKHQpe3JldHVybiAyKk1hdGguYWNvcyhNYXRoLmFicyhzNXQodGhpcy5kb3QodCksLTEsMSkpKX1yb3RhdGVUb3dhcmRzKHQsZSl7Y29uc3Qgbj10aGlzLmFuZ2xlVG8odCk7aWYoMD09PW4pcmV0dXJuIHRoaXM7Y29uc3QgaT1NYXRoLm1pbigxLGUvbik7cmV0dXJuIHRoaXMuc2xlcnAodCxpKSx0aGlzfWlkZW50aXR5KCl7cmV0dXJuIHRoaXMuc2V0KDAsMCwwLDEpfWludmVydCgpe3JldHVybiB0aGlzLmNvbmp1Z2F0ZSgpfWNvbmp1Z2F0ZSgpe3JldHVybiB0aGlzLl94Kj0tMSx0aGlzLl95Kj0tMSx0aGlzLl96Kj0tMSx0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKCksdGhpc31kb3QodCl7cmV0dXJuIHRoaXMuX3gqdC5feCt0aGlzLl95KnQuX3krdGhpcy5feip0Ll96K3RoaXMuX3cqdC5fd31sZW5ndGhTcSgpe3JldHVybiB0aGlzLl94KnRoaXMuX3grdGhpcy5feSp0aGlzLl95K3RoaXMuX3oqdGhpcy5feit0aGlzLl93KnRoaXMuX3d9bGVuZ3RoKCl7cmV0dXJuIE1hdGguc3FydCh0aGlzLl94KnRoaXMuX3grdGhpcy5feSp0aGlzLl95K3RoaXMuX3oqdGhpcy5feit0aGlzLl93KnRoaXMuX3cpfW5vcm1hbGl6ZSgpe2xldCB0PXRoaXMubGVuZ3RoKCk7cmV0dXJuIDA9PT10Pyh0aGlzLl94PTAsdGhpcy5feT0wLHRoaXMuX3o9MCx0aGlzLl93PTEpOih0PTEvdCx0aGlzLl94PXRoaXMuX3gqdCx0aGlzLl95PXRoaXMuX3kqdCx0aGlzLl96PXRoaXMuX3oqdCx0aGlzLl93PXRoaXMuX3cqdCksdGhpcy5fb25DaGFuZ2VDYWxsYmFjaygpLHRoaXN9bXVsdGlwbHkodCxlKXtyZXR1cm4gdm9pZCAwIT09ZT8oY29uc29sZS53YXJuKCJUSFJFRS5RdWF0ZXJuaW9uOiAubXVsdGlwbHkoKSBub3cgb25seSBhY2NlcHRzIG9uZSBhcmd1bWVudC4gVXNlIC5tdWx0aXBseVF1YXRlcm5pb25zKCBhLCBiICkgaW5zdGVhZC4iKSx0aGlzLm11bHRpcGx5UXVhdGVybmlvbnModCxlKSk6dGhpcy5tdWx0aXBseVF1YXRlcm5pb25zKHRoaXMsdCl9cHJlbXVsdGlwbHkodCl7cmV0dXJuIHRoaXMubXVsdGlwbHlRdWF0ZXJuaW9ucyh0LHRoaXMpfW11bHRpcGx5UXVhdGVybmlvbnModCxlKXtjb25zdCBuPXQuX3gsaT10Ll95LHI9dC5feixvPXQuX3csYT1lLl94LHM9ZS5feSxsPWUuX3osYz1lLl93O3JldHVybiB0aGlzLl94PW4qYytvKmEraSpsLXIqcyx0aGlzLl95PWkqYytvKnMrciphLW4qbCx0aGlzLl96PXIqYytvKmwrbipzLWkqYSx0aGlzLl93PW8qYy1uKmEtaSpzLXIqbCx0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKCksdGhpc31zbGVycCh0LGUpe2lmKDA9PT1lKXJldHVybiB0aGlzO2lmKDE9PT1lKXJldHVybiB0aGlzLmNvcHkodCk7Y29uc3Qgbj10aGlzLl94LGk9dGhpcy5feSxyPXRoaXMuX3osbz10aGlzLl93O2xldCBhPW8qdC5fdytuKnQuX3graSp0Ll95K3IqdC5fejtpZihhPDA/KHRoaXMuX3c9LXQuX3csdGhpcy5feD0tdC5feCx0aGlzLl95PS10Ll95LHRoaXMuX3o9LXQuX3osYT0tYSk6dGhpcy5jb3B5KHQpLGE+PTEpcmV0dXJuIHRoaXMuX3c9byx0aGlzLl94PW4sdGhpcy5feT1pLHRoaXMuX3o9cix0aGlzO2NvbnN0IHM9MS1hKmE7aWYoczw9TnVtYmVyLkVQU0lMT04pe2NvbnN0IHQ9MS1lO3JldHVybiB0aGlzLl93PXQqbytlKnRoaXMuX3csdGhpcy5feD10Km4rZSp0aGlzLl94LHRoaXMuX3k9dCppK2UqdGhpcy5feSx0aGlzLl96PXQqcitlKnRoaXMuX3osdGhpcy5ub3JtYWxpemUoKSx0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKCksdGhpc31jb25zdCBsPU1hdGguc3FydChzKSxjPU1hdGguYXRhbjIobCxhKSx1PU1hdGguc2luKCgxLWUpKmMpL2wsaD1NYXRoLnNpbihlKmMpL2w7cmV0dXJuIHRoaXMuX3c9byp1K3RoaXMuX3cqaCx0aGlzLl94PW4qdSt0aGlzLl94KmgsdGhpcy5feT1pKnUrdGhpcy5feSpoLHRoaXMuX3o9cip1K3RoaXMuX3oqaCx0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKCksdGhpc31zbGVycFF1YXRlcm5pb25zKHQsZSxuKXt0aGlzLmNvcHkodCkuc2xlcnAoZSxuKX1lcXVhbHModCl7cmV0dXJuIHQuX3g9PT10aGlzLl94JiZ0Ll95PT09dGhpcy5feSYmdC5fej09PXRoaXMuX3omJnQuX3c9PT10aGlzLl93fWZyb21BcnJheSh0LGU9MCl7cmV0dXJuIHRoaXMuX3g9dFtlXSx0aGlzLl95PXRbZSsxXSx0aGlzLl96PXRbZSsyXSx0aGlzLl93PXRbZSszXSx0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKCksdGhpc310b0FycmF5KHQ9W10sZT0wKXtyZXR1cm4gdFtlXT10aGlzLl94LHRbZSsxXT10aGlzLl95LHRbZSsyXT10aGlzLl96LHRbZSszXT10aGlzLl93LHR9ZnJvbUJ1ZmZlckF0dHJpYnV0ZSh0LGUpe3JldHVybiB0aGlzLl94PXQuZ2V0WChlKSx0aGlzLl95PXQuZ2V0WShlKSx0aGlzLl96PXQuZ2V0WihlKSx0aGlzLl93PXQuZ2V0VyhlKSx0aGlzfV9vbkNoYW5nZSh0KXtyZXR1cm4gdGhpcy5fb25DaGFuZ2VDYWxsYmFjaz10LHRoaXN9X29uQ2hhbmdlQ2FsbGJhY2soKXt9fUI1dC5wcm90b3R5cGUuaXNRdWF0ZXJuaW9uPSEwO2NsYXNzIEg1dHtjb25zdHJ1Y3Rvcih0PTAsZT0wLG49MCl7dGhpcy54PXQsdGhpcy55PWUsdGhpcy56PW59c2V0KHQsZSxuKXtyZXR1cm4gdm9pZCAwPT09biYmKG49dGhpcy56KSx0aGlzLng9dCx0aGlzLnk9ZSx0aGlzLno9bix0aGlzfXNldFNjYWxhcih0KXtyZXR1cm4gdGhpcy54PXQsdGhpcy55PXQsdGhpcy56PXQsdGhpc31zZXRYKHQpe3JldHVybiB0aGlzLng9dCx0aGlzfXNldFkodCl7cmV0dXJuIHRoaXMueT10LHRoaXN9c2V0Wih0KXtyZXR1cm4gdGhpcy56PXQsdGhpc31zZXRDb21wb25lbnQodCxlKXtzd2l0Y2godCl7Y2FzZSAwOnRoaXMueD1lO2JyZWFrO2Nhc2UgMTp0aGlzLnk9ZTticmVhaztjYXNlIDI6dGhpcy56PWU7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoImluZGV4IGlzIG91dCBvZiByYW5nZTogIit0KX1yZXR1cm4gdGhpc31nZXRDb21wb25lbnQodCl7c3dpdGNoKHQpe2Nhc2UgMDpyZXR1cm4gdGhpcy54O2Nhc2UgMTpyZXR1cm4gdGhpcy55O2Nhc2UgMjpyZXR1cm4gdGhpcy56O2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJpbmRleCBpcyBvdXQgb2YgcmFuZ2U6ICIrdCl9fWNsb25lKCl7cmV0dXJuIG5ldyB0aGlzLmNvbnN0cnVjdG9yKHRoaXMueCx0aGlzLnksdGhpcy56KX1jb3B5KHQpe3JldHVybiB0aGlzLng9dC54LHRoaXMueT10LnksdGhpcy56PXQueix0aGlzfWFkZCh0LGUpe3JldHVybiB2b2lkIDAhPT1lPyhjb25zb2xlLndhcm4oIlRIUkVFLlZlY3RvcjM6IC5hZGQoKSBub3cgb25seSBhY2NlcHRzIG9uZSBhcmd1bWVudC4gVXNlIC5hZGRWZWN0b3JzKCBhLCBiICkgaW5zdGVhZC4iKSx0aGlzLmFkZFZlY3RvcnModCxlKSk6KHRoaXMueCs9dC54LHRoaXMueSs9dC55LHRoaXMueis9dC56LHRoaXMpfWFkZFNjYWxhcih0KXtyZXR1cm4gdGhpcy54Kz10LHRoaXMueSs9dCx0aGlzLnorPXQsdGhpc31hZGRWZWN0b3JzKHQsZSl7cmV0dXJuIHRoaXMueD10LngrZS54LHRoaXMueT10LnkrZS55LHRoaXMuej10LnorZS56LHRoaXN9YWRkU2NhbGVkVmVjdG9yKHQsZSl7cmV0dXJuIHRoaXMueCs9dC54KmUsdGhpcy55Kz10LnkqZSx0aGlzLnorPXQueiplLHRoaXN9c3ViKHQsZSl7cmV0dXJuIHZvaWQgMCE9PWU/KGNvbnNvbGUud2FybigiVEhSRUUuVmVjdG9yMzogLnN1YigpIG5vdyBvbmx5IGFjY2VwdHMgb25lIGFyZ3VtZW50LiBVc2UgLnN1YlZlY3RvcnMoIGEsIGIgKSBpbnN0ZWFkLiIpLHRoaXMuc3ViVmVjdG9ycyh0LGUpKToodGhpcy54LT10LngsdGhpcy55LT10LnksdGhpcy56LT10LnosdGhpcyl9c3ViU2NhbGFyKHQpe3JldHVybiB0aGlzLngtPXQsdGhpcy55LT10LHRoaXMuei09dCx0aGlzfXN1YlZlY3RvcnModCxlKXtyZXR1cm4gdGhpcy54PXQueC1lLngsdGhpcy55PXQueS1lLnksdGhpcy56PXQuei1lLnosdGhpc31tdWx0aXBseSh0LGUpe3JldHVybiB2b2lkIDAhPT1lPyhjb25zb2xlLndhcm4oIlRIUkVFLlZlY3RvcjM6IC5tdWx0aXBseSgpIG5vdyBvbmx5IGFjY2VwdHMgb25lIGFyZ3VtZW50LiBVc2UgLm11bHRpcGx5VmVjdG9ycyggYSwgYiApIGluc3RlYWQuIiksdGhpcy5tdWx0aXBseVZlY3RvcnModCxlKSk6KHRoaXMueCo9dC54LHRoaXMueSo9dC55LHRoaXMueio9dC56LHRoaXMpfW11bHRpcGx5U2NhbGFyKHQpe3JldHVybiB0aGlzLngqPXQsdGhpcy55Kj10LHRoaXMueio9dCx0aGlzfW11bHRpcGx5VmVjdG9ycyh0LGUpe3JldHVybiB0aGlzLng9dC54KmUueCx0aGlzLnk9dC55KmUueSx0aGlzLno9dC56KmUueix0aGlzfWFwcGx5RXVsZXIodCl7cmV0dXJuIHQmJnQuaXNFdWxlcnx8Y29uc29sZS5lcnJvcigiVEhSRUUuVmVjdG9yMzogLmFwcGx5RXVsZXIoKSBub3cgZXhwZWN0cyBhbiBFdWxlciByb3RhdGlvbiByYXRoZXIgdGhhbiBhIFZlY3RvcjMgYW5kIG9yZGVyLiIpLHRoaXMuYXBwbHlRdWF0ZXJuaW9uKFY1dC5zZXRGcm9tRXVsZXIodCkpfWFwcGx5QXhpc0FuZ2xlKHQsZSl7cmV0dXJuIHRoaXMuYXBwbHlRdWF0ZXJuaW9uKFY1dC5zZXRGcm9tQXhpc0FuZ2xlKHQsZSkpfWFwcGx5TWF0cml4Myh0KXtjb25zdCBlPXRoaXMueCxuPXRoaXMueSxpPXRoaXMueixyPXQuZWxlbWVudHM7cmV0dXJuIHRoaXMueD1yWzBdKmUrclszXSpuK3JbNl0qaSx0aGlzLnk9clsxXSplK3JbNF0qbityWzddKmksdGhpcy56PXJbMl0qZStyWzVdKm4rcls4XSppLHRoaXN9YXBwbHlOb3JtYWxNYXRyaXgodCl7cmV0dXJuIHRoaXMuYXBwbHlNYXRyaXgzKHQpLm5vcm1hbGl6ZSgpfWFwcGx5TWF0cml4NCh0KXtjb25zdCBlPXRoaXMueCxuPXRoaXMueSxpPXRoaXMueixyPXQuZWxlbWVudHMsbz0xLyhyWzNdKmUrcls3XSpuK3JbMTFdKmkrclsxNV0pO3JldHVybiB0aGlzLng9KHJbMF0qZStyWzRdKm4rcls4XSppK3JbMTJdKSpvLHRoaXMueT0oclsxXSplK3JbNV0qbityWzldKmkrclsxM10pKm8sdGhpcy56PShyWzJdKmUrcls2XSpuK3JbMTBdKmkrclsxNF0pKm8sdGhpc31hcHBseVF1YXRlcm5pb24odCl7Y29uc3QgZT10aGlzLngsbj10aGlzLnksaT10aGlzLnoscj10Lngsbz10LnksYT10Lnoscz10LncsbD1zKmUrbyppLWEqbixjPXMqbithKmUtcippLHU9cyppK3Iqbi1vKmUsaD0tciplLW8qbi1hKmk7cmV0dXJuIHRoaXMueD1sKnMraCotcitjKi1hLXUqLW8sdGhpcy55PWMqcytoKi1vK3UqLXItbCotYSx0aGlzLno9dSpzK2gqLWErbCotby1jKi1yLHRoaXN9cHJvamVjdCh0KXtyZXR1cm4gdGhpcy5hcHBseU1hdHJpeDQodC5tYXRyaXhXb3JsZEludmVyc2UpLmFwcGx5TWF0cml4NCh0LnByb2plY3Rpb25NYXRyaXgpfXVucHJvamVjdCh0KXtyZXR1cm4gdGhpcy5hcHBseU1hdHJpeDQodC5wcm9qZWN0aW9uTWF0cml4SW52ZXJzZSkuYXBwbHlNYXRyaXg0KHQubWF0cml4V29ybGQpfXRyYW5zZm9ybURpcmVjdGlvbih0KXtjb25zdCBlPXRoaXMueCxuPXRoaXMueSxpPXRoaXMueixyPXQuZWxlbWVudHM7cmV0dXJuIHRoaXMueD1yWzBdKmUrcls0XSpuK3JbOF0qaSx0aGlzLnk9clsxXSplK3JbNV0qbityWzldKmksdGhpcy56PXJbMl0qZStyWzZdKm4rclsxMF0qaSx0aGlzLm5vcm1hbGl6ZSgpfWRpdmlkZSh0KXtyZXR1cm4gdGhpcy54Lz10LngsdGhpcy55Lz10LnksdGhpcy56Lz10LnosdGhpc31kaXZpZGVTY2FsYXIodCl7cmV0dXJuIHRoaXMubXVsdGlwbHlTY2FsYXIoMS90KX1taW4odCl7cmV0dXJuIHRoaXMueD1NYXRoLm1pbih0aGlzLngsdC54KSx0aGlzLnk9TWF0aC5taW4odGhpcy55LHQueSksdGhpcy56PU1hdGgubWluKHRoaXMueix0LnopLHRoaXN9bWF4KHQpe3JldHVybiB0aGlzLng9TWF0aC5tYXgodGhpcy54LHQueCksdGhpcy55PU1hdGgubWF4KHRoaXMueSx0LnkpLHRoaXMuej1NYXRoLm1heCh0aGlzLnosdC56KSx0aGlzfWNsYW1wKHQsZSl7cmV0dXJuIHRoaXMueD1NYXRoLm1heCh0LngsTWF0aC5taW4oZS54LHRoaXMueCkpLHRoaXMueT1NYXRoLm1heCh0LnksTWF0aC5taW4oZS55LHRoaXMueSkpLHRoaXMuej1NYXRoLm1heCh0LnosTWF0aC5taW4oZS56LHRoaXMueikpLHRoaXN9Y2xhbXBTY2FsYXIodCxlKXtyZXR1cm4gdGhpcy54PU1hdGgubWF4KHQsTWF0aC5taW4oZSx0aGlzLngpKSx0aGlzLnk9TWF0aC5tYXgodCxNYXRoLm1pbihlLHRoaXMueSkpLHRoaXMuej1NYXRoLm1heCh0LE1hdGgubWluKGUsdGhpcy56KSksdGhpc31jbGFtcExlbmd0aCh0LGUpe2NvbnN0IG49dGhpcy5sZW5ndGgoKTtyZXR1cm4gdGhpcy5kaXZpZGVTY2FsYXIobnx8MSkubXVsdGlwbHlTY2FsYXIoTWF0aC5tYXgodCxNYXRoLm1pbihlLG4pKSl9Zmxvb3IoKXtyZXR1cm4gdGhpcy54PU1hdGguZmxvb3IodGhpcy54KSx0aGlzLnk9TWF0aC5mbG9vcih0aGlzLnkpLHRoaXMuej1NYXRoLmZsb29yKHRoaXMueiksdGhpc31jZWlsKCl7cmV0dXJuIHRoaXMueD1NYXRoLmNlaWwodGhpcy54KSx0aGlzLnk9TWF0aC5jZWlsKHRoaXMueSksdGhpcy56PU1hdGguY2VpbCh0aGlzLnopLHRoaXN9cm91bmQoKXtyZXR1cm4gdGhpcy54PU1hdGgucm91bmQodGhpcy54KSx0aGlzLnk9TWF0aC5yb3VuZCh0aGlzLnkpLHRoaXMuej1NYXRoLnJvdW5kKHRoaXMueiksdGhpc31yb3VuZFRvWmVybygpe3JldHVybiB0aGlzLng9dGhpcy54PDA/TWF0aC5jZWlsKHRoaXMueCk6TWF0aC5mbG9vcih0aGlzLngpLHRoaXMueT10aGlzLnk8MD9NYXRoLmNlaWwodGhpcy55KTpNYXRoLmZsb29yKHRoaXMueSksdGhpcy56PXRoaXMuejwwP01hdGguY2VpbCh0aGlzLnopOk1hdGguZmxvb3IodGhpcy56KSx0aGlzfW5lZ2F0ZSgpe3JldHVybiB0aGlzLng9LXRoaXMueCx0aGlzLnk9LXRoaXMueSx0aGlzLno9LXRoaXMueix0aGlzfWRvdCh0KXtyZXR1cm4gdGhpcy54KnQueCt0aGlzLnkqdC55K3RoaXMueip0Lnp9bGVuZ3RoU3EoKXtyZXR1cm4gdGhpcy54KnRoaXMueCt0aGlzLnkqdGhpcy55K3RoaXMueip0aGlzLnp9bGVuZ3RoKCl7cmV0dXJuIE1hdGguc3FydCh0aGlzLngqdGhpcy54K3RoaXMueSp0aGlzLnkrdGhpcy56KnRoaXMueil9bWFuaGF0dGFuTGVuZ3RoKCl7cmV0dXJuIE1hdGguYWJzKHRoaXMueCkrTWF0aC5hYnModGhpcy55KStNYXRoLmFicyh0aGlzLnopfW5vcm1hbGl6ZSgpe3JldHVybiB0aGlzLmRpdmlkZVNjYWxhcih0aGlzLmxlbmd0aCgpfHwxKX1zZXRMZW5ndGgodCl7cmV0dXJuIHRoaXMubm9ybWFsaXplKCkubXVsdGlwbHlTY2FsYXIodCl9bGVycCh0LGUpe3JldHVybiB0aGlzLngrPSh0LngtdGhpcy54KSplLHRoaXMueSs9KHQueS10aGlzLnkpKmUsdGhpcy56Kz0odC56LXRoaXMueikqZSx0aGlzfWxlcnBWZWN0b3JzKHQsZSxuKXtyZXR1cm4gdGhpcy54PXQueCsoZS54LXQueCkqbix0aGlzLnk9dC55KyhlLnktdC55KSpuLHRoaXMuej10LnorKGUuei10LnopKm4sdGhpc31jcm9zcyh0LGUpe3JldHVybiB2b2lkIDAhPT1lPyhjb25zb2xlLndhcm4oIlRIUkVFLlZlY3RvcjM6IC5jcm9zcygpIG5vdyBvbmx5IGFjY2VwdHMgb25lIGFyZ3VtZW50LiBVc2UgLmNyb3NzVmVjdG9ycyggYSwgYiApIGluc3RlYWQuIiksdGhpcy5jcm9zc1ZlY3RvcnModCxlKSk6dGhpcy5jcm9zc1ZlY3RvcnModGhpcyx0KX1jcm9zc1ZlY3RvcnModCxlKXtjb25zdCBuPXQueCxpPXQueSxyPXQueixvPWUueCxhPWUueSxzPWUuejtyZXR1cm4gdGhpcy54PWkqcy1yKmEsdGhpcy55PXIqby1uKnMsdGhpcy56PW4qYS1pKm8sdGhpc31wcm9qZWN0T25WZWN0b3IodCl7Y29uc3QgZT10Lmxlbmd0aFNxKCk7aWYoMD09PWUpcmV0dXJuIHRoaXMuc2V0KDAsMCwwKTtjb25zdCBuPXQuZG90KHRoaXMpL2U7cmV0dXJuIHRoaXMuY29weSh0KS5tdWx0aXBseVNjYWxhcihuKX1wcm9qZWN0T25QbGFuZSh0KXtyZXR1cm4gRjV0LmNvcHkodGhpcykucHJvamVjdE9uVmVjdG9yKHQpLHRoaXMuc3ViKEY1dCl9cmVmbGVjdCh0KXtyZXR1cm4gdGhpcy5zdWIoRjV0LmNvcHkodCkubXVsdGlwbHlTY2FsYXIoMip0aGlzLmRvdCh0KSkpfWFuZ2xlVG8odCl7Y29uc3QgZT1NYXRoLnNxcnQodGhpcy5sZW5ndGhTcSgpKnQubGVuZ3RoU3EoKSk7aWYoMD09PWUpcmV0dXJuIE1hdGguUEkvMjtjb25zdCBuPXRoaXMuZG90KHQpL2U7cmV0dXJuIE1hdGguYWNvcyhzNXQobiwtMSwxKSl9ZGlzdGFuY2VUbyh0KXtyZXR1cm4gTWF0aC5zcXJ0KHRoaXMuZGlzdGFuY2VUb1NxdWFyZWQodCkpfWRpc3RhbmNlVG9TcXVhcmVkKHQpe2NvbnN0IGU9dGhpcy54LXQueCxuPXRoaXMueS10LnksaT10aGlzLnotdC56O3JldHVybiBlKmUrbipuK2kqaX1tYW5oYXR0YW5EaXN0YW5jZVRvKHQpe3JldHVybiBNYXRoLmFicyh0aGlzLngtdC54KStNYXRoLmFicyh0aGlzLnktdC55KStNYXRoLmFicyh0aGlzLnotdC56KX1zZXRGcm9tU3BoZXJpY2FsKHQpe3JldHVybiB0aGlzLnNldEZyb21TcGhlcmljYWxDb29yZHModC5yYWRpdXMsdC5waGksdC50aGV0YSl9c2V0RnJvbVNwaGVyaWNhbENvb3Jkcyh0LGUsbil7Y29uc3QgaT1NYXRoLnNpbihlKSp0O3JldHVybiB0aGlzLng9aSpNYXRoLnNpbihuKSx0aGlzLnk9TWF0aC5jb3MoZSkqdCx0aGlzLno9aSpNYXRoLmNvcyhuKSx0aGlzfXNldEZyb21DeWxpbmRyaWNhbCh0KXtyZXR1cm4gdGhpcy5zZXRGcm9tQ3lsaW5kcmljYWxDb29yZHModC5yYWRpdXMsdC50aGV0YSx0LnkpfXNldEZyb21DeWxpbmRyaWNhbENvb3Jkcyh0LGUsbil7cmV0dXJuIHRoaXMueD10Kk1hdGguc2luKGUpLHRoaXMueT1uLHRoaXMuej10Kk1hdGguY29zKGUpLHRoaXN9c2V0RnJvbU1hdHJpeFBvc2l0aW9uKHQpe2NvbnN0IGU9dC5lbGVtZW50cztyZXR1cm4gdGhpcy54PWVbMTJdLHRoaXMueT1lWzEzXSx0aGlzLno9ZVsxNF0sdGhpc31zZXRGcm9tTWF0cml4U2NhbGUodCl7Y29uc3QgZT10aGlzLnNldEZyb21NYXRyaXhDb2x1bW4odCwwKS5sZW5ndGgoKSxuPXRoaXMuc2V0RnJvbU1hdHJpeENvbHVtbih0LDEpLmxlbmd0aCgpLGk9dGhpcy5zZXRGcm9tTWF0cml4Q29sdW1uKHQsMikubGVuZ3RoKCk7cmV0dXJuIHRoaXMueD1lLHRoaXMueT1uLHRoaXMuej1pLHRoaXN9c2V0RnJvbU1hdHJpeENvbHVtbih0LGUpe3JldHVybiB0aGlzLmZyb21BcnJheSh0LmVsZW1lbnRzLDQqZSl9c2V0RnJvbU1hdHJpeDNDb2x1bW4odCxlKXtyZXR1cm4gdGhpcy5mcm9tQXJyYXkodC5lbGVtZW50cywzKmUpfWVxdWFscyh0KXtyZXR1cm4gdC54PT09dGhpcy54JiZ0Lnk9PT10aGlzLnkmJnQuej09PXRoaXMuen1mcm9tQXJyYXkodCxlPTApe3JldHVybiB0aGlzLng9dFtlXSx0aGlzLnk9dFtlKzFdLHRoaXMuej10W2UrMl0sdGhpc310b0FycmF5KHQ9W10sZT0wKXtyZXR1cm4gdFtlXT10aGlzLngsdFtlKzFdPXRoaXMueSx0W2UrMl09dGhpcy56LHR9ZnJvbUJ1ZmZlckF0dHJpYnV0ZSh0LGUsbil7cmV0dXJuIHZvaWQgMCE9PW4mJmNvbnNvbGUud2FybigiVEhSRUUuVmVjdG9yMzogb2Zmc2V0IGhhcyBiZWVuIHJlbW92ZWQgZnJvbSAuZnJvbUJ1ZmZlckF0dHJpYnV0ZSgpLiIpLHRoaXMueD10LmdldFgoZSksdGhpcy55PXQuZ2V0WShlKSx0aGlzLno9dC5nZXRaKGUpLHRoaXN9cmFuZG9tKCl7cmV0dXJuIHRoaXMueD1NYXRoLnJhbmRvbSgpLHRoaXMueT1NYXRoLnJhbmRvbSgpLHRoaXMuej1NYXRoLnJhbmRvbSgpLHRoaXN9fUg1dC5wcm90b3R5cGUuaXNWZWN0b3IzPSEwO2NvbnN0IEY1dD1uZXcgSDV0LFY1dD1uZXcgQjV0O2NsYXNzIFU1dHtjb25zdHJ1Y3Rvcih0PW5ldyBINXQoMS8wLDEvMCwxLzApLGU9bmV3IEg1dCgtMS8wLC0xLzAsLTEvMCkpe3RoaXMubWluPXQsdGhpcy5tYXg9ZX1zZXQodCxlKXtyZXR1cm4gdGhpcy5taW4uY29weSh0KSx0aGlzLm1heC5jb3B5KGUpLHRoaXN9c2V0RnJvbUFycmF5KHQpe2xldCBlPTEvMCxuPTEvMCxpPTEvMCxyPS0xLzAsbz0tMS8wLGE9LTEvMDtmb3IobGV0IHM9MCxsPXQubGVuZ3RoO3M8bDtzKz0zKXtjb25zdCBsPXRbc10sYz10W3MrMV0sdT10W3MrMl07bDxlJiYoZT1sKSxjPG4mJihuPWMpLHU8aSYmKGk9dSksbD5yJiYocj1sKSxjPm8mJihvPWMpLHU+YSYmKGE9dSl9cmV0dXJuIHRoaXMubWluLnNldChlLG4saSksdGhpcy5tYXguc2V0KHIsbyxhKSx0aGlzfXNldEZyb21CdWZmZXJBdHRyaWJ1dGUodCl7bGV0IGU9MS8wLG49MS8wLGk9MS8wLHI9LTEvMCxvPS0xLzAsYT0tMS8wO2ZvcihsZXQgcz0wLGw9dC5jb3VudDtzPGw7cysrKXtjb25zdCBsPXQuZ2V0WChzKSxjPXQuZ2V0WShzKSx1PXQuZ2V0WihzKTtsPGUmJihlPWwpLGM8biYmKG49YyksdTxpJiYoaT11KSxsPnImJihyPWwpLGM+byYmKG89YyksdT5hJiYoYT11KX1yZXR1cm4gdGhpcy5taW4uc2V0KGUsbixpKSx0aGlzLm1heC5zZXQocixvLGEpLHRoaXN9c2V0RnJvbVBvaW50cyh0KXt0aGlzLm1ha2VFbXB0eSgpO2ZvcihsZXQgZT0wLG49dC5sZW5ndGg7ZTxuO2UrKyl0aGlzLmV4cGFuZEJ5UG9pbnQodFtlXSk7cmV0dXJuIHRoaXN9c2V0RnJvbUNlbnRlckFuZFNpemUodCxlKXtjb25zdCBuPUc1dC5jb3B5KGUpLm11bHRpcGx5U2NhbGFyKC41KTtyZXR1cm4gdGhpcy5taW4uY29weSh0KS5zdWIobiksdGhpcy5tYXguY29weSh0KS5hZGQobiksdGhpc31zZXRGcm9tT2JqZWN0KHQpe3JldHVybiB0aGlzLm1ha2VFbXB0eSgpLHRoaXMuZXhwYW5kQnlPYmplY3QodCl9Y2xvbmUoKXtyZXR1cm4obmV3IHRoaXMuY29uc3RydWN0b3IpLmNvcHkodGhpcyl9Y29weSh0KXtyZXR1cm4gdGhpcy5taW4uY29weSh0Lm1pbiksdGhpcy5tYXguY29weSh0Lm1heCksdGhpc31tYWtlRW1wdHkoKXtyZXR1cm4gdGhpcy5taW4ueD10aGlzLm1pbi55PXRoaXMubWluLno9MS8wLHRoaXMubWF4Lng9dGhpcy5tYXgueT10aGlzLm1heC56PS0xLzAsdGhpc31pc0VtcHR5KCl7cmV0dXJuIHRoaXMubWF4Lng8dGhpcy5taW4ueHx8dGhpcy5tYXgueTx0aGlzLm1pbi55fHx0aGlzLm1heC56PHRoaXMubWluLnp9Z2V0Q2VudGVyKHQpe3JldHVybiB0aGlzLmlzRW1wdHkoKT90LnNldCgwLDAsMCk6dC5hZGRWZWN0b3JzKHRoaXMubWluLHRoaXMubWF4KS5tdWx0aXBseVNjYWxhciguNSl9Z2V0U2l6ZSh0KXtyZXR1cm4gdGhpcy5pc0VtcHR5KCk/dC5zZXQoMCwwLDApOnQuc3ViVmVjdG9ycyh0aGlzLm1heCx0aGlzLm1pbil9ZXhwYW5kQnlQb2ludCh0KXtyZXR1cm4gdGhpcy5taW4ubWluKHQpLHRoaXMubWF4Lm1heCh0KSx0aGlzfWV4cGFuZEJ5VmVjdG9yKHQpe3JldHVybiB0aGlzLm1pbi5zdWIodCksdGhpcy5tYXguYWRkKHQpLHRoaXN9ZXhwYW5kQnlTY2FsYXIodCl7cmV0dXJuIHRoaXMubWluLmFkZFNjYWxhcigtdCksdGhpcy5tYXguYWRkU2NhbGFyKHQpLHRoaXN9ZXhwYW5kQnlPYmplY3QodCl7dC51cGRhdGVXb3JsZE1hdHJpeCghMSwhMSk7Y29uc3QgZT10Lmdlb21ldHJ5O3ZvaWQgMCE9PWUmJihudWxsPT09ZS5ib3VuZGluZ0JveCYmZS5jb21wdXRlQm91bmRpbmdCb3goKSxXNXQuY29weShlLmJvdW5kaW5nQm94KSxXNXQuYXBwbHlNYXRyaXg0KHQubWF0cml4V29ybGQpLHRoaXMudW5pb24oVzV0KSk7Y29uc3Qgbj10LmNoaWxkcmVuO2ZvcihsZXQgdD0wLGU9bi5sZW5ndGg7dDxlO3QrKyl0aGlzLmV4cGFuZEJ5T2JqZWN0KG5bdF0pO3JldHVybiB0aGlzfWNvbnRhaW5zUG9pbnQodCl7cmV0dXJuISh0Lng8dGhpcy5taW4ueHx8dC54PnRoaXMubWF4Lnh8fHQueTx0aGlzLm1pbi55fHx0Lnk+dGhpcy5tYXgueXx8dC56PHRoaXMubWluLnp8fHQuej50aGlzLm1heC56KX1jb250YWluc0JveCh0KXtyZXR1cm4gdGhpcy5taW4ueDw9dC5taW4ueCYmdC5tYXgueDw9dGhpcy5tYXgueCYmdGhpcy5taW4ueTw9dC5taW4ueSYmdC5tYXgueTw9dGhpcy5tYXgueSYmdGhpcy5taW4uejw9dC5taW4ueiYmdC5tYXguejw9dGhpcy5tYXguen1nZXRQYXJhbWV0ZXIodCxlKXtyZXR1cm4gZS5zZXQoKHQueC10aGlzLm1pbi54KS8odGhpcy5tYXgueC10aGlzLm1pbi54KSwodC55LXRoaXMubWluLnkpLyh0aGlzLm1heC55LXRoaXMubWluLnkpLCh0LnotdGhpcy5taW4ueikvKHRoaXMubWF4LnotdGhpcy5taW4ueikpfWludGVyc2VjdHNCb3godCl7cmV0dXJuISh0Lm1heC54PHRoaXMubWluLnh8fHQubWluLng+dGhpcy5tYXgueHx8dC5tYXgueTx0aGlzLm1pbi55fHx0Lm1pbi55PnRoaXMubWF4Lnl8fHQubWF4Lno8dGhpcy5taW4uenx8dC5taW4uej50aGlzLm1heC56KX1pbnRlcnNlY3RzU3BoZXJlKHQpe3JldHVybiB0aGlzLmNsYW1wUG9pbnQodC5jZW50ZXIsRzV0KSxHNXQuZGlzdGFuY2VUb1NxdWFyZWQodC5jZW50ZXIpPD10LnJhZGl1cyp0LnJhZGl1c31pbnRlcnNlY3RzUGxhbmUodCl7bGV0IGUsbjtyZXR1cm4gdC5ub3JtYWwueD4wPyhlPXQubm9ybWFsLngqdGhpcy5taW4ueCxuPXQubm9ybWFsLngqdGhpcy5tYXgueCk6KGU9dC5ub3JtYWwueCp0aGlzLm1heC54LG49dC5ub3JtYWwueCp0aGlzLm1pbi54KSx0Lm5vcm1hbC55PjA/KGUrPXQubm9ybWFsLnkqdGhpcy5taW4ueSxuKz10Lm5vcm1hbC55KnRoaXMubWF4LnkpOihlKz10Lm5vcm1hbC55KnRoaXMubWF4Lnksbis9dC5ub3JtYWwueSp0aGlzLm1pbi55KSx0Lm5vcm1hbC56PjA/KGUrPXQubm9ybWFsLnoqdGhpcy5taW4ueixuKz10Lm5vcm1hbC56KnRoaXMubWF4LnopOihlKz10Lm5vcm1hbC56KnRoaXMubWF4Lnosbis9dC5ub3JtYWwueip0aGlzLm1pbi56KSxlPD0tdC5jb25zdGFudCYmbj49LXQuY29uc3RhbnR9aW50ZXJzZWN0c1RyaWFuZ2xlKHQpe2lmKHRoaXMuaXNFbXB0eSgpKXJldHVybiExO3RoaXMuZ2V0Q2VudGVyKEo1dCksUTV0LnN1YlZlY3RvcnModGhpcy5tYXgsSjV0KSxxNXQuc3ViVmVjdG9ycyh0LmEsSjV0KSxZNXQuc3ViVmVjdG9ycyh0LmIsSjV0KSxYNXQuc3ViVmVjdG9ycyh0LmMsSjV0KSwkNXQuc3ViVmVjdG9ycyhZNXQscTV0KSxLNXQuc3ViVmVjdG9ycyhYNXQsWTV0KSxaNXQuc3ViVmVjdG9ycyhxNXQsWDV0KTtsZXQgZT1bMCwtJDV0LnosJDV0LnksMCwtSzV0LnosSzV0LnksMCwtWjV0LnosWjV0LnksJDV0LnosMCwtJDV0LngsSzV0LnosMCwtSzV0LngsWjV0LnosMCwtWjV0LngsLSQ1dC55LCQ1dC54LDAsLUs1dC55LEs1dC54LDAsLVo1dC55LFo1dC54LDBdO3JldHVybiEhbjN0KGUscTV0LFk1dCxYNXQsUTV0KSYmKGU9WzEsMCwwLDAsMSwwLDAsMCwxXSwhIW4zdChlLHE1dCxZNXQsWDV0LFE1dCkmJih0M3QuY3Jvc3NWZWN0b3JzKCQ1dCxLNXQpLGU9W3QzdC54LHQzdC55LHQzdC56XSxuM3QoZSxxNXQsWTV0LFg1dCxRNXQpKSl9Y2xhbXBQb2ludCh0LGUpe3JldHVybiBlLmNvcHkodCkuY2xhbXAodGhpcy5taW4sdGhpcy5tYXgpfWRpc3RhbmNlVG9Qb2ludCh0KXtyZXR1cm4gRzV0LmNvcHkodCkuY2xhbXAodGhpcy5taW4sdGhpcy5tYXgpLnN1Yih0KS5sZW5ndGgoKX1nZXRCb3VuZGluZ1NwaGVyZSh0KXtyZXR1cm4gdGhpcy5nZXRDZW50ZXIodC5jZW50ZXIpLHQucmFkaXVzPS41KnRoaXMuZ2V0U2l6ZShHNXQpLmxlbmd0aCgpLHR9aW50ZXJzZWN0KHQpe3JldHVybiB0aGlzLm1pbi5tYXgodC5taW4pLHRoaXMubWF4Lm1pbih0Lm1heCksdGhpcy5pc0VtcHR5KCkmJnRoaXMubWFrZUVtcHR5KCksdGhpc311bmlvbih0KXtyZXR1cm4gdGhpcy5taW4ubWluKHQubWluKSx0aGlzLm1heC5tYXgodC5tYXgpLHRoaXN9YXBwbHlNYXRyaXg0KHQpe3JldHVybiB0aGlzLmlzRW1wdHkoKXx8KGo1dFswXS5zZXQodGhpcy5taW4ueCx0aGlzLm1pbi55LHRoaXMubWluLnopLmFwcGx5TWF0cml4NCh0KSxqNXRbMV0uc2V0KHRoaXMubWluLngsdGhpcy5taW4ueSx0aGlzLm1heC56KS5hcHBseU1hdHJpeDQodCksajV0WzJdLnNldCh0aGlzLm1pbi54LHRoaXMubWF4LnksdGhpcy5taW4ueikuYXBwbHlNYXRyaXg0KHQpLGo1dFszXS5zZXQodGhpcy5taW4ueCx0aGlzLm1heC55LHRoaXMubWF4LnopLmFwcGx5TWF0cml4NCh0KSxqNXRbNF0uc2V0KHRoaXMubWF4LngsdGhpcy5taW4ueSx0aGlzLm1pbi56KS5hcHBseU1hdHJpeDQodCksajV0WzVdLnNldCh0aGlzLm1heC54LHRoaXMubWluLnksdGhpcy5tYXgueikuYXBwbHlNYXRyaXg0KHQpLGo1dFs2XS5zZXQodGhpcy5tYXgueCx0aGlzLm1heC55LHRoaXMubWluLnopLmFwcGx5TWF0cml4NCh0KSxqNXRbN10uc2V0KHRoaXMubWF4LngsdGhpcy5tYXgueSx0aGlzLm1heC56KS5hcHBseU1hdHJpeDQodCksdGhpcy5zZXRGcm9tUG9pbnRzKGo1dCkpLHRoaXN9dHJhbnNsYXRlKHQpe3JldHVybiB0aGlzLm1pbi5hZGQodCksdGhpcy5tYXguYWRkKHQpLHRoaXN9ZXF1YWxzKHQpe3JldHVybiB0Lm1pbi5lcXVhbHModGhpcy5taW4pJiZ0Lm1heC5lcXVhbHModGhpcy5tYXgpfX1VNXQucHJvdG90eXBlLmlzQm94Mz0hMDtjb25zdCBqNXQ9W25ldyBINXQsbmV3IEg1dCxuZXcgSDV0LG5ldyBINXQsbmV3IEg1dCxuZXcgSDV0LG5ldyBINXQsbmV3IEg1dF0sRzV0PW5ldyBINXQsVzV0PW5ldyBVNXQscTV0PW5ldyBINXQsWTV0PW5ldyBINXQsWDV0PW5ldyBINXQsJDV0PW5ldyBINXQsSzV0PW5ldyBINXQsWjV0PW5ldyBINXQsSjV0PW5ldyBINXQsUTV0PW5ldyBINXQsdDN0PW5ldyBINXQsZTN0PW5ldyBINXQ7ZnVuY3Rpb24gbjN0KHQsZSxuLGkscil7Zm9yKGxldCBvPTAsYT10Lmxlbmd0aC0zO288PWE7bys9Myl7ZTN0LmZyb21BcnJheSh0LG8pO2NvbnN0IGE9ci54Kk1hdGguYWJzKGUzdC54KStyLnkqTWF0aC5hYnMoZTN0LnkpK3IueipNYXRoLmFicyhlM3Queikscz1lLmRvdChlM3QpLGw9bi5kb3QoZTN0KSxjPWkuZG90KGUzdCk7aWYoTWF0aC5tYXgoLU1hdGgubWF4KHMsbCxjKSxNYXRoLm1pbihzLGwsYykpPmEpcmV0dXJuITF9cmV0dXJuITB9Y29uc3QgaTN0PW5ldyBVNXQscjN0PW5ldyBINXQsbzN0PW5ldyBINXQsYTN0PW5ldyBINXQ7Y2xhc3MgczN0e2NvbnN0cnVjdG9yKHQ9bmV3IEg1dCxlPS0xKXt0aGlzLmNlbnRlcj10LHRoaXMucmFkaXVzPWV9c2V0KHQsZSl7cmV0dXJuIHRoaXMuY2VudGVyLmNvcHkodCksdGhpcy5yYWRpdXM9ZSx0aGlzfXNldEZyb21Qb2ludHModCxlKXtjb25zdCBuPXRoaXMuY2VudGVyO3ZvaWQgMCE9PWU/bi5jb3B5KGUpOmkzdC5zZXRGcm9tUG9pbnRzKHQpLmdldENlbnRlcihuKTtsZXQgaT0wO2ZvcihsZXQgZT0wLHI9dC5sZW5ndGg7ZTxyO2UrKylpPU1hdGgubWF4KGksbi5kaXN0YW5jZVRvU3F1YXJlZCh0W2VdKSk7cmV0dXJuIHRoaXMucmFkaXVzPU1hdGguc3FydChpKSx0aGlzfWNvcHkodCl7cmV0dXJuIHRoaXMuY2VudGVyLmNvcHkodC5jZW50ZXIpLHRoaXMucmFkaXVzPXQucmFkaXVzLHRoaXN9aXNFbXB0eSgpe3JldHVybiB0aGlzLnJhZGl1czwwfW1ha2VFbXB0eSgpe3JldHVybiB0aGlzLmNlbnRlci5zZXQoMCwwLDApLHRoaXMucmFkaXVzPS0xLHRoaXN9Y29udGFpbnNQb2ludCh0KXtyZXR1cm4gdC5kaXN0YW5jZVRvU3F1YXJlZCh0aGlzLmNlbnRlcik8PXRoaXMucmFkaXVzKnRoaXMucmFkaXVzfWRpc3RhbmNlVG9Qb2ludCh0KXtyZXR1cm4gdC5kaXN0YW5jZVRvKHRoaXMuY2VudGVyKS10aGlzLnJhZGl1c31pbnRlcnNlY3RzU3BoZXJlKHQpe2NvbnN0IGU9dGhpcy5yYWRpdXMrdC5yYWRpdXM7cmV0dXJuIHQuY2VudGVyLmRpc3RhbmNlVG9TcXVhcmVkKHRoaXMuY2VudGVyKTw9ZSplfWludGVyc2VjdHNCb3godCl7cmV0dXJuIHQuaW50ZXJzZWN0c1NwaGVyZSh0aGlzKX1pbnRlcnNlY3RzUGxhbmUodCl7cmV0dXJuIE1hdGguYWJzKHQuZGlzdGFuY2VUb1BvaW50KHRoaXMuY2VudGVyKSk8PXRoaXMucmFkaXVzfWNsYW1wUG9pbnQodCxlKXtjb25zdCBuPXRoaXMuY2VudGVyLmRpc3RhbmNlVG9TcXVhcmVkKHQpO3JldHVybiBlLmNvcHkodCksbj50aGlzLnJhZGl1cyp0aGlzLnJhZGl1cyYmKGUuc3ViKHRoaXMuY2VudGVyKS5ub3JtYWxpemUoKSxlLm11bHRpcGx5U2NhbGFyKHRoaXMucmFkaXVzKS5hZGQodGhpcy5jZW50ZXIpKSxlfWdldEJvdW5kaW5nQm94KHQpe3JldHVybiB0aGlzLmlzRW1wdHkoKT8odC5tYWtlRW1wdHkoKSx0KToodC5zZXQodGhpcy5jZW50ZXIsdGhpcy5jZW50ZXIpLHQuZXhwYW5kQnlTY2FsYXIodGhpcy5yYWRpdXMpLHQpfWFwcGx5TWF0cml4NCh0KXtyZXR1cm4gdGhpcy5jZW50ZXIuYXBwbHlNYXRyaXg0KHQpLHRoaXMucmFkaXVzPXRoaXMucmFkaXVzKnQuZ2V0TWF4U2NhbGVPbkF4aXMoKSx0aGlzfXRyYW5zbGF0ZSh0KXtyZXR1cm4gdGhpcy5jZW50ZXIuYWRkKHQpLHRoaXN9ZXhwYW5kQnlQb2ludCh0KXthM3Quc3ViVmVjdG9ycyh0LHRoaXMuY2VudGVyKTtjb25zdCBlPWEzdC5sZW5ndGhTcSgpO2lmKGU+dGhpcy5yYWRpdXMqdGhpcy5yYWRpdXMpe2NvbnN0IHQ9TWF0aC5zcXJ0KGUpLG49LjUqKHQtdGhpcy5yYWRpdXMpO3RoaXMuY2VudGVyLmFkZChhM3QubXVsdGlwbHlTY2FsYXIobi90KSksdGhpcy5yYWRpdXMrPW59cmV0dXJuIHRoaXN9dW5pb24odCl7cmV0dXJuIG8zdC5zdWJWZWN0b3JzKHQuY2VudGVyLHRoaXMuY2VudGVyKS5ub3JtYWxpemUoKS5tdWx0aXBseVNjYWxhcih0LnJhZGl1cyksdGhpcy5leHBhbmRCeVBvaW50KHIzdC5jb3B5KHQuY2VudGVyKS5hZGQobzN0KSksdGhpcy5leHBhbmRCeVBvaW50KHIzdC5jb3B5KHQuY2VudGVyKS5zdWIobzN0KSksdGhpc31lcXVhbHModCl7cmV0dXJuIHQuY2VudGVyLmVxdWFscyh0aGlzLmNlbnRlcikmJnQucmFkaXVzPT09dGhpcy5yYWRpdXN9Y2xvbmUoKXtyZXR1cm4obmV3IHRoaXMuY29uc3RydWN0b3IpLmNvcHkodGhpcyl9fWNvbnN0IGwzdD1uZXcgSDV0LGMzdD1uZXcgSDV0LHUzdD1uZXcgSDV0LGgzdD1uZXcgSDV0LGQzdD1uZXcgSDV0LHAzdD1uZXcgSDV0LGYzdD1uZXcgSDV0O2NsYXNzIG0zdHtjb25zdHJ1Y3Rvcih0PW5ldyBINXQsZT1uZXcgSDV0KDAsMCwtMSkpe3RoaXMub3JpZ2luPXQsdGhpcy5kaXJlY3Rpb249ZX1zZXQodCxlKXtyZXR1cm4gdGhpcy5vcmlnaW4uY29weSh0KSx0aGlzLmRpcmVjdGlvbi5jb3B5KGUpLHRoaXN9Y29weSh0KXtyZXR1cm4gdGhpcy5vcmlnaW4uY29weSh0Lm9yaWdpbiksdGhpcy5kaXJlY3Rpb24uY29weSh0LmRpcmVjdGlvbiksdGhpc31hdCh0LGUpe3JldHVybiBlLmNvcHkodGhpcy5kaXJlY3Rpb24pLm11bHRpcGx5U2NhbGFyKHQpLmFkZCh0aGlzLm9yaWdpbil9bG9va0F0KHQpe3JldHVybiB0aGlzLmRpcmVjdGlvbi5jb3B5KHQpLnN1Yih0aGlzLm9yaWdpbikubm9ybWFsaXplKCksdGhpc31yZWNhc3QodCl7cmV0dXJuIHRoaXMub3JpZ2luLmNvcHkodGhpcy5hdCh0LGwzdCkpLHRoaXN9Y2xvc2VzdFBvaW50VG9Qb2ludCh0LGUpe2Uuc3ViVmVjdG9ycyh0LHRoaXMub3JpZ2luKTtjb25zdCBuPWUuZG90KHRoaXMuZGlyZWN0aW9uKTtyZXR1cm4gbjwwP2UuY29weSh0aGlzLm9yaWdpbik6ZS5jb3B5KHRoaXMuZGlyZWN0aW9uKS5tdWx0aXBseVNjYWxhcihuKS5hZGQodGhpcy5vcmlnaW4pfWRpc3RhbmNlVG9Qb2ludCh0KXtyZXR1cm4gTWF0aC5zcXJ0KHRoaXMuZGlzdGFuY2VTcVRvUG9pbnQodCkpfWRpc3RhbmNlU3FUb1BvaW50KHQpe2NvbnN0IGU9bDN0LnN1YlZlY3RvcnModCx0aGlzLm9yaWdpbikuZG90KHRoaXMuZGlyZWN0aW9uKTtyZXR1cm4gZTwwP3RoaXMub3JpZ2luLmRpc3RhbmNlVG9TcXVhcmVkKHQpOihsM3QuY29weSh0aGlzLmRpcmVjdGlvbikubXVsdGlwbHlTY2FsYXIoZSkuYWRkKHRoaXMub3JpZ2luKSxsM3QuZGlzdGFuY2VUb1NxdWFyZWQodCkpfWRpc3RhbmNlU3FUb1NlZ21lbnQodCxlLG4saSl7YzN0LmNvcHkodCkuYWRkKGUpLm11bHRpcGx5U2NhbGFyKC41KSx1M3QuY29weShlKS5zdWIodCkubm9ybWFsaXplKCksaDN0LmNvcHkodGhpcy5vcmlnaW4pLnN1YihjM3QpO2NvbnN0IHI9LjUqdC5kaXN0YW5jZVRvKGUpLG89LXRoaXMuZGlyZWN0aW9uLmRvdCh1M3QpLGE9aDN0LmRvdCh0aGlzLmRpcmVjdGlvbikscz0taDN0LmRvdCh1M3QpLGw9aDN0Lmxlbmd0aFNxKCksYz1NYXRoLmFicygxLW8qbyk7bGV0IHUsaCxkLHA7aWYoYz4wKWlmKHU9bypzLWEsaD1vKmEtcyxwPXIqYyx1Pj0wKWlmKGg+PS1wKWlmKGg8PXApe2NvbnN0IHQ9MS9jO3UqPXQsaCo9dCxkPXUqKHUrbypoKzIqYSkraCoobyp1K2grMipzKStsfWVsc2UgaD1yLHU9TWF0aC5tYXgoMCwtKG8qaCthKSksZD0tdSp1K2gqKGgrMipzKStsO2Vsc2UgaD0tcix1PU1hdGgubWF4KDAsLShvKmgrYSkpLGQ9LXUqdStoKihoKzIqcykrbDtlbHNlIGg8PS1wPyh1PU1hdGgubWF4KDAsLSgtbypyK2EpKSxoPXU+MD8tcjpNYXRoLm1pbihNYXRoLm1heCgtciwtcyksciksZD0tdSp1K2gqKGgrMipzKStsKTpoPD1wPyh1PTAsaD1NYXRoLm1pbihNYXRoLm1heCgtciwtcyksciksZD1oKihoKzIqcykrbCk6KHU9TWF0aC5tYXgoMCwtKG8qcithKSksaD11PjA/cjpNYXRoLm1pbihNYXRoLm1heCgtciwtcyksciksZD0tdSp1K2gqKGgrMipzKStsKTtlbHNlIGg9bz4wPy1yOnIsdT1NYXRoLm1heCgwLC0obypoK2EpKSxkPS11KnUraCooaCsyKnMpK2w7cmV0dXJuIG4mJm4uY29weSh0aGlzLmRpcmVjdGlvbikubXVsdGlwbHlTY2FsYXIodSkuYWRkKHRoaXMub3JpZ2luKSxpJiZpLmNvcHkodTN0KS5tdWx0aXBseVNjYWxhcihoKS5hZGQoYzN0KSxkfWludGVyc2VjdFNwaGVyZSh0LGUpe2wzdC5zdWJWZWN0b3JzKHQuY2VudGVyLHRoaXMub3JpZ2luKTtjb25zdCBuPWwzdC5kb3QodGhpcy5kaXJlY3Rpb24pLGk9bDN0LmRvdChsM3QpLW4qbixyPXQucmFkaXVzKnQucmFkaXVzO2lmKGk+cilyZXR1cm4gbnVsbDtjb25zdCBvPU1hdGguc3FydChyLWkpLGE9bi1vLHM9bitvO3JldHVybiBhPDAmJnM8MD9udWxsOnRoaXMuYXQoYTwwP3M6YSxlKX1pbnRlcnNlY3RzU3BoZXJlKHQpe3JldHVybiB0aGlzLmRpc3RhbmNlU3FUb1BvaW50KHQuY2VudGVyKTw9dC5yYWRpdXMqdC5yYWRpdXN9ZGlzdGFuY2VUb1BsYW5lKHQpe2NvbnN0IGU9dC5ub3JtYWwuZG90KHRoaXMuZGlyZWN0aW9uKTtpZigwPT09ZSlyZXR1cm4gMD09PXQuZGlzdGFuY2VUb1BvaW50KHRoaXMub3JpZ2luKT8wOm51bGw7Y29uc3Qgbj0tKHRoaXMub3JpZ2luLmRvdCh0Lm5vcm1hbCkrdC5jb25zdGFudCkvZTtyZXR1cm4gbj49MD9uOm51bGx9aW50ZXJzZWN0UGxhbmUodCxlKXtjb25zdCBuPXRoaXMuZGlzdGFuY2VUb1BsYW5lKHQpO3JldHVybiBudWxsPT09bj9udWxsOnRoaXMuYXQobixlKX1pbnRlcnNlY3RzUGxhbmUodCl7Y29uc3QgZT10LmRpc3RhbmNlVG9Qb2ludCh0aGlzLm9yaWdpbik7aWYoMD09PWUpcmV0dXJuITA7cmV0dXJuIHQubm9ybWFsLmRvdCh0aGlzLmRpcmVjdGlvbikqZTwwfWludGVyc2VjdEJveCh0LGUpe2xldCBuLGkscixvLGEscztjb25zdCBsPTEvdGhpcy5kaXJlY3Rpb24ueCxjPTEvdGhpcy5kaXJlY3Rpb24ueSx1PTEvdGhpcy5kaXJlY3Rpb24ueixoPXRoaXMub3JpZ2luO3JldHVybiBsPj0wPyhuPSh0Lm1pbi54LWgueCkqbCxpPSh0Lm1heC54LWgueCkqbCk6KG49KHQubWF4LngtaC54KSpsLGk9KHQubWluLngtaC54KSpsKSxjPj0wPyhyPSh0Lm1pbi55LWgueSkqYyxvPSh0Lm1heC55LWgueSkqYyk6KHI9KHQubWF4LnktaC55KSpjLG89KHQubWluLnktaC55KSpjKSxuPm98fHI+aT9udWxsOigocj5ufHxuIT1uKSYmKG49ciksKG88aXx8aSE9aSkmJihpPW8pLHU+PTA/KGE9KHQubWluLnotaC56KSp1LHM9KHQubWF4LnotaC56KSp1KTooYT0odC5tYXguei1oLnopKnUscz0odC5taW4uei1oLnopKnUpLG4+c3x8YT5pP251bGw6KChhPm58fG4hPW4pJiYobj1hKSwoczxpfHxpIT1pKSYmKGk9cyksaTwwP251bGw6dGhpcy5hdChuPj0wP246aSxlKSkpfWludGVyc2VjdHNCb3godCl7cmV0dXJuIG51bGwhPT10aGlzLmludGVyc2VjdEJveCh0LGwzdCl9aW50ZXJzZWN0VHJpYW5nbGUodCxlLG4saSxyKXtkM3Quc3ViVmVjdG9ycyhlLHQpLHAzdC5zdWJWZWN0b3JzKG4sdCksZjN0LmNyb3NzVmVjdG9ycyhkM3QscDN0KTtsZXQgbyxhPXRoaXMuZGlyZWN0aW9uLmRvdChmM3QpO2lmKGE+MCl7aWYoaSlyZXR1cm4gbnVsbDtvPTF9ZWxzZXtpZighKGE8MCkpcmV0dXJuIG51bGw7bz0tMSxhPS1hfWgzdC5zdWJWZWN0b3JzKHRoaXMub3JpZ2luLHQpO2NvbnN0IHM9byp0aGlzLmRpcmVjdGlvbi5kb3QocDN0LmNyb3NzVmVjdG9ycyhoM3QscDN0KSk7aWYoczwwKXJldHVybiBudWxsO2NvbnN0IGw9byp0aGlzLmRpcmVjdGlvbi5kb3QoZDN0LmNyb3NzKGgzdCkpO2lmKGw8MClyZXR1cm4gbnVsbDtpZihzK2w+YSlyZXR1cm4gbnVsbDtjb25zdCBjPS1vKmgzdC5kb3QoZjN0KTtyZXR1cm4gYzwwP251bGw6dGhpcy5hdChjL2Escil9YXBwbHlNYXRyaXg0KHQpe3JldHVybiB0aGlzLm9yaWdpbi5hcHBseU1hdHJpeDQodCksdGhpcy5kaXJlY3Rpb24udHJhbnNmb3JtRGlyZWN0aW9uKHQpLHRoaXN9ZXF1YWxzKHQpe3JldHVybiB0Lm9yaWdpbi5lcXVhbHModGhpcy5vcmlnaW4pJiZ0LmRpcmVjdGlvbi5lcXVhbHModGhpcy5kaXJlY3Rpb24pfWNsb25lKCl7cmV0dXJuKG5ldyB0aGlzLmNvbnN0cnVjdG9yKS5jb3B5KHRoaXMpfX1jbGFzcyBnM3R7Y29uc3RydWN0b3IoKXt0aGlzLmVsZW1lbnRzPVsxLDAsMCwwLDAsMSwwLDAsMCwwLDEsMCwwLDAsMCwxXSxhcmd1bWVudHMubGVuZ3RoPjAmJmNvbnNvbGUuZXJyb3IoIlRIUkVFLk1hdHJpeDQ6IHRoZSBjb25zdHJ1Y3RvciBubyBsb25nZXIgcmVhZHMgYXJndW1lbnRzLiB1c2UgLnNldCgpIGluc3RlYWQuIil9c2V0KHQsZSxuLGkscixvLGEscyxsLGMsdSxoLGQscCxmLG0pe2NvbnN0IGc9dGhpcy5lbGVtZW50cztyZXR1cm4gZ1swXT10LGdbNF09ZSxnWzhdPW4sZ1sxMl09aSxnWzFdPXIsZ1s1XT1vLGdbOV09YSxnWzEzXT1zLGdbMl09bCxnWzZdPWMsZ1sxMF09dSxnWzE0XT1oLGdbM109ZCxnWzddPXAsZ1sxMV09ZixnWzE1XT1tLHRoaXN9aWRlbnRpdHkoKXtyZXR1cm4gdGhpcy5zZXQoMSwwLDAsMCwwLDEsMCwwLDAsMCwxLDAsMCwwLDAsMSksdGhpc31jbG9uZSgpe3JldHVybihuZXcgZzN0KS5mcm9tQXJyYXkodGhpcy5lbGVtZW50cyl9Y29weSh0KXtjb25zdCBlPXRoaXMuZWxlbWVudHMsbj10LmVsZW1lbnRzO3JldHVybiBlWzBdPW5bMF0sZVsxXT1uWzFdLGVbMl09blsyXSxlWzNdPW5bM10sZVs0XT1uWzRdLGVbNV09bls1XSxlWzZdPW5bNl0sZVs3XT1uWzddLGVbOF09bls4XSxlWzldPW5bOV0sZVsxMF09blsxMF0sZVsxMV09blsxMV0sZVsxMl09blsxMl0sZVsxM109blsxM10sZVsxNF09blsxNF0sZVsxNV09blsxNV0sdGhpc31jb3B5UG9zaXRpb24odCl7Y29uc3QgZT10aGlzLmVsZW1lbnRzLG49dC5lbGVtZW50cztyZXR1cm4gZVsxMl09blsxMl0sZVsxM109blsxM10sZVsxNF09blsxNF0sdGhpc31zZXRGcm9tTWF0cml4Myh0KXtjb25zdCBlPXQuZWxlbWVudHM7cmV0dXJuIHRoaXMuc2V0KGVbMF0sZVszXSxlWzZdLDAsZVsxXSxlWzRdLGVbN10sMCxlWzJdLGVbNV0sZVs4XSwwLDAsMCwwLDEpLHRoaXN9ZXh0cmFjdEJhc2lzKHQsZSxuKXtyZXR1cm4gdC5zZXRGcm9tTWF0cml4Q29sdW1uKHRoaXMsMCksZS5zZXRGcm9tTWF0cml4Q29sdW1uKHRoaXMsMSksbi5zZXRGcm9tTWF0cml4Q29sdW1uKHRoaXMsMiksdGhpc31tYWtlQmFzaXModCxlLG4pe3JldHVybiB0aGlzLnNldCh0LngsZS54LG4ueCwwLHQueSxlLnksbi55LDAsdC56LGUueixuLnosMCwwLDAsMCwxKSx0aGlzfWV4dHJhY3RSb3RhdGlvbih0KXtjb25zdCBlPXRoaXMuZWxlbWVudHMsbj10LmVsZW1lbnRzLGk9MS9fM3Quc2V0RnJvbU1hdHJpeENvbHVtbih0LDApLmxlbmd0aCgpLHI9MS9fM3Quc2V0RnJvbU1hdHJpeENvbHVtbih0LDEpLmxlbmd0aCgpLG89MS9fM3Quc2V0RnJvbU1hdHJpeENvbHVtbih0LDIpLmxlbmd0aCgpO3JldHVybiBlWzBdPW5bMF0qaSxlWzFdPW5bMV0qaSxlWzJdPW5bMl0qaSxlWzNdPTAsZVs0XT1uWzRdKnIsZVs1XT1uWzVdKnIsZVs2XT1uWzZdKnIsZVs3XT0wLGVbOF09bls4XSpvLGVbOV09bls5XSpvLGVbMTBdPW5bMTBdKm8sZVsxMV09MCxlWzEyXT0wLGVbMTNdPTAsZVsxNF09MCxlWzE1XT0xLHRoaXN9bWFrZVJvdGF0aW9uRnJvbUV1bGVyKHQpe3QmJnQuaXNFdWxlcnx8Y29uc29sZS5lcnJvcigiVEhSRUUuTWF0cml4NDogLm1ha2VSb3RhdGlvbkZyb21FdWxlcigpIG5vdyBleHBlY3RzIGEgRXVsZXIgcm90YXRpb24gcmF0aGVyIHRoYW4gYSBWZWN0b3IzIGFuZCBvcmRlci4iKTtjb25zdCBlPXRoaXMuZWxlbWVudHMsbj10LngsaT10Lnkscj10Lnosbz1NYXRoLmNvcyhuKSxhPU1hdGguc2luKG4pLHM9TWF0aC5jb3MoaSksbD1NYXRoLnNpbihpKSxjPU1hdGguY29zKHIpLHU9TWF0aC5zaW4ocik7aWYoIlhZWiI9PT10Lm9yZGVyKXtjb25zdCB0PW8qYyxuPW8qdSxpPWEqYyxyPWEqdTtlWzBdPXMqYyxlWzRdPS1zKnUsZVs4XT1sLGVbMV09bitpKmwsZVs1XT10LXIqbCxlWzldPS1hKnMsZVsyXT1yLXQqbCxlWzZdPWkrbipsLGVbMTBdPW8qc31lbHNlIGlmKCJZWFoiPT09dC5vcmRlcil7Y29uc3QgdD1zKmMsbj1zKnUsaT1sKmMscj1sKnU7ZVswXT10K3IqYSxlWzRdPWkqYS1uLGVbOF09bypsLGVbMV09byp1LGVbNV09bypjLGVbOV09LWEsZVsyXT1uKmEtaSxlWzZdPXIrdCphLGVbMTBdPW8qc31lbHNlIGlmKCJaWFkiPT09dC5vcmRlcil7Y29uc3QgdD1zKmMsbj1zKnUsaT1sKmMscj1sKnU7ZVswXT10LXIqYSxlWzRdPS1vKnUsZVs4XT1pK24qYSxlWzFdPW4raSphLGVbNV09bypjLGVbOV09ci10KmEsZVsyXT0tbypsLGVbNl09YSxlWzEwXT1vKnN9ZWxzZSBpZigiWllYIj09PXQub3JkZXIpe2NvbnN0IHQ9bypjLG49byp1LGk9YSpjLHI9YSp1O2VbMF09cypjLGVbNF09aSpsLW4sZVs4XT10KmwrcixlWzFdPXMqdSxlWzVdPXIqbCt0LGVbOV09bipsLWksZVsyXT0tbCxlWzZdPWEqcyxlWzEwXT1vKnN9ZWxzZSBpZigiWVpYIj09PXQub3JkZXIpe2NvbnN0IHQ9bypzLG49bypsLGk9YSpzLHI9YSpsO2VbMF09cypjLGVbNF09ci10KnUsZVs4XT1pKnUrbixlWzFdPXUsZVs1XT1vKmMsZVs5XT0tYSpjLGVbMl09LWwqYyxlWzZdPW4qdStpLGVbMTBdPXQtcip1fWVsc2UgaWYoIlhaWSI9PT10Lm9yZGVyKXtjb25zdCB0PW8qcyxuPW8qbCxpPWEqcyxyPWEqbDtlWzBdPXMqYyxlWzRdPS11LGVbOF09bCpjLGVbMV09dCp1K3IsZVs1XT1vKmMsZVs5XT1uKnUtaSxlWzJdPWkqdS1uLGVbNl09YSpjLGVbMTBdPXIqdSt0fXJldHVybiBlWzNdPTAsZVs3XT0wLGVbMTFdPTAsZVsxMl09MCxlWzEzXT0wLGVbMTRdPTAsZVsxNV09MSx0aGlzfW1ha2VSb3RhdGlvbkZyb21RdWF0ZXJuaW9uKHQpe3JldHVybiB0aGlzLmNvbXBvc2UodjN0LHQsYjN0KX1sb29rQXQodCxlLG4pe2NvbnN0IGk9dGhpcy5lbGVtZW50cztyZXR1cm4gUzN0LnN1YlZlY3RvcnModCxlKSwwPT09UzN0Lmxlbmd0aFNxKCkmJihTM3Quej0xKSxTM3Qubm9ybWFsaXplKCkseDN0LmNyb3NzVmVjdG9ycyhuLFMzdCksMD09PXgzdC5sZW5ndGhTcSgpJiYoMT09PU1hdGguYWJzKG4ueik/UzN0LngrPTFlLTQ6UzN0LnorPTFlLTQsUzN0Lm5vcm1hbGl6ZSgpLHgzdC5jcm9zc1ZlY3RvcnMobixTM3QpKSx4M3Qubm9ybWFsaXplKCksdzN0LmNyb3NzVmVjdG9ycyhTM3QseDN0KSxpWzBdPXgzdC54LGlbNF09dzN0LngsaVs4XT1TM3QueCxpWzFdPXgzdC55LGlbNV09dzN0LnksaVs5XT1TM3QueSxpWzJdPXgzdC56LGlbNl09dzN0LnosaVsxMF09UzN0LnosdGhpc31tdWx0aXBseSh0LGUpe3JldHVybiB2b2lkIDAhPT1lPyhjb25zb2xlLndhcm4oIlRIUkVFLk1hdHJpeDQ6IC5tdWx0aXBseSgpIG5vdyBvbmx5IGFjY2VwdHMgb25lIGFyZ3VtZW50LiBVc2UgLm11bHRpcGx5TWF0cmljZXMoIGEsIGIgKSBpbnN0ZWFkLiIpLHRoaXMubXVsdGlwbHlNYXRyaWNlcyh0LGUpKTp0aGlzLm11bHRpcGx5TWF0cmljZXModGhpcyx0KX1wcmVtdWx0aXBseSh0KXtyZXR1cm4gdGhpcy5tdWx0aXBseU1hdHJpY2VzKHQsdGhpcyl9bXVsdGlwbHlNYXRyaWNlcyh0LGUpe2NvbnN0IG49dC5lbGVtZW50cyxpPWUuZWxlbWVudHMscj10aGlzLmVsZW1lbnRzLG89blswXSxhPW5bNF0scz1uWzhdLGw9blsxMl0sYz1uWzFdLHU9bls1XSxoPW5bOV0sZD1uWzEzXSxwPW5bMl0sZj1uWzZdLG09blsxMF0sZz1uWzE0XSxfPW5bM10seT1uWzddLHY9blsxMV0sYj1uWzE1XSx4PWlbMF0sdz1pWzRdLFM9aVs4XSxNPWlbMTJdLEU9aVsxXSxUPWlbNV0sQz1pWzldLEE9aVsxM10saz1pWzJdLEw9aVs2XSxQPWlbMTBdLE49aVsxNF0sST1pWzNdLFI9aVs3XSxPPWlbMTFdLHo9aVsxNV07cmV0dXJuIHJbMF09byp4K2EqRStzKmsrbCpJLHJbNF09byp3K2EqVCtzKkwrbCpSLHJbOF09bypTK2EqQytzKlArbCpPLHJbMTJdPW8qTSthKkErcypOK2wqeixyWzFdPWMqeCt1KkUraCprK2QqSSxyWzVdPWMqdyt1KlQraCpMK2QqUixyWzldPWMqUyt1KkMraCpQK2QqTyxyWzEzXT1jKk0rdSpBK2gqTitkKnosclsyXT1wKngrZipFK20qaytnKkkscls2XT1wKncrZipUK20qTCtnKlIsclsxMF09cCpTK2YqQyttKlArZypPLHJbMTRdPXAqTStmKkErbSpOK2cqeixyWzNdPV8qeCt5KkUrdiprK2IqSSxyWzddPV8qdyt5KlQrdipMK2IqUixyWzExXT1fKlMreSpDK3YqUCtiKk8sclsxNV09XypNK3kqQSt2Kk4rYip6LHRoaXN9bXVsdGlwbHlTY2FsYXIodCl7Y29uc3QgZT10aGlzLmVsZW1lbnRzO3JldHVybiBlWzBdKj10LGVbNF0qPXQsZVs4XSo9dCxlWzEyXSo9dCxlWzFdKj10LGVbNV0qPXQsZVs5XSo9dCxlWzEzXSo9dCxlWzJdKj10LGVbNl0qPXQsZVsxMF0qPXQsZVsxNF0qPXQsZVszXSo9dCxlWzddKj10LGVbMTFdKj10LGVbMTVdKj10LHRoaXN9ZGV0ZXJtaW5hbnQoKXtjb25zdCB0PXRoaXMuZWxlbWVudHMsZT10WzBdLG49dFs0XSxpPXRbOF0scj10WzEyXSxvPXRbMV0sYT10WzVdLHM9dFs5XSxsPXRbMTNdLGM9dFsyXSx1PXRbNl0saD10WzEwXSxkPXRbMTRdO3JldHVybiB0WzNdKigrcipzKnUtaSpsKnUtciphKmgrbipsKmgraSphKmQtbipzKmQpK3RbN10qKCtlKnMqZC1lKmwqaCtyKm8qaC1pKm8qZCtpKmwqYy1yKnMqYykrdFsxMV0qKCtlKmwqdS1lKmEqZC1yKm8qdStuKm8qZCtyKmEqYy1uKmwqYykrdFsxNV0qKC1pKmEqYy1lKnMqdStlKmEqaCtpKm8qdS1uKm8qaCtuKnMqYyl9dHJhbnNwb3NlKCl7Y29uc3QgdD10aGlzLmVsZW1lbnRzO2xldCBlO3JldHVybiBlPXRbMV0sdFsxXT10WzRdLHRbNF09ZSxlPXRbMl0sdFsyXT10WzhdLHRbOF09ZSxlPXRbNl0sdFs2XT10WzldLHRbOV09ZSxlPXRbM10sdFszXT10WzEyXSx0WzEyXT1lLGU9dFs3XSx0WzddPXRbMTNdLHRbMTNdPWUsZT10WzExXSx0WzExXT10WzE0XSx0WzE0XT1lLHRoaXN9c2V0UG9zaXRpb24odCxlLG4pe2NvbnN0IGk9dGhpcy5lbGVtZW50cztyZXR1cm4gdC5pc1ZlY3RvcjM/KGlbMTJdPXQueCxpWzEzXT10LnksaVsxNF09dC56KTooaVsxMl09dCxpWzEzXT1lLGlbMTRdPW4pLHRoaXN9aW52ZXJ0KCl7Y29uc3QgdD10aGlzLmVsZW1lbnRzLGU9dFswXSxuPXRbMV0saT10WzJdLHI9dFszXSxvPXRbNF0sYT10WzVdLHM9dFs2XSxsPXRbN10sYz10WzhdLHU9dFs5XSxoPXRbMTBdLGQ9dFsxMV0scD10WzEyXSxmPXRbMTNdLG09dFsxNF0sZz10WzE1XSxfPXUqbSpsLWYqaCpsK2YqcypkLWEqbSpkLXUqcypnK2EqaCpnLHk9cCpoKmwtYyptKmwtcCpzKmQrbyptKmQrYypzKmctbypoKmcsdj1jKmYqbC1wKnUqbCtwKmEqZC1vKmYqZC1jKmEqZytvKnUqZyxiPXAqdSpzLWMqZipzLXAqYSpoK28qZipoK2MqYSptLW8qdSptLHg9ZSpfK24qeStpKnYrcipiO2lmKDA9PT14KXJldHVybiB0aGlzLnNldCgwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwKTtjb25zdCB3PTEveDtyZXR1cm4gdFswXT1fKncsdFsxXT0oZipoKnItdSptKnItZippKmQrbiptKmQrdSppKmctbipoKmcpKncsdFsyXT0oYSptKnItZipzKnIrZippKmwtbiptKmwtYSppKmcrbipzKmcpKncsdFszXT0odSpzKnItYSpoKnItdSppKmwrbipoKmwrYSppKmQtbipzKmQpKncsdFs0XT15KncsdFs1XT0oYyptKnItcCpoKnIrcCppKmQtZSptKmQtYyppKmcrZSpoKmcpKncsdFs2XT0ocCpzKnItbyptKnItcCppKmwrZSptKmwrbyppKmctZSpzKmcpKncsdFs3XT0obypoKnItYypzKnIrYyppKmwtZSpoKmwtbyppKmQrZSpzKmQpKncsdFs4XT12KncsdFs5XT0ocCp1KnItYypmKnItcCpuKmQrZSpmKmQrYypuKmctZSp1KmcpKncsdFsxMF09KG8qZipyLXAqYSpyK3AqbipsLWUqZipsLW8qbipnK2UqYSpnKSp3LHRbMTFdPShjKmEqci1vKnUqci1jKm4qbCtlKnUqbCtvKm4qZC1lKmEqZCkqdyx0WzEyXT1iKncsdFsxM109KGMqZippLXAqdSppK3AqbipoLWUqZipoLWMqbiptK2UqdSptKSp3LHRbMTRdPShwKmEqaS1vKmYqaS1wKm4qcytlKmYqcytvKm4qbS1lKmEqbSkqdyx0WzE1XT0obyp1KmktYyphKmkrYypuKnMtZSp1KnMtbypuKmgrZSphKmgpKncsdGhpc31zY2FsZSh0KXtjb25zdCBlPXRoaXMuZWxlbWVudHMsbj10LngsaT10Lnkscj10Lno7cmV0dXJuIGVbMF0qPW4sZVs0XSo9aSxlWzhdKj1yLGVbMV0qPW4sZVs1XSo9aSxlWzldKj1yLGVbMl0qPW4sZVs2XSo9aSxlWzEwXSo9cixlWzNdKj1uLGVbN10qPWksZVsxMV0qPXIsdGhpc31nZXRNYXhTY2FsZU9uQXhpcygpe2NvbnN0IHQ9dGhpcy5lbGVtZW50cztyZXR1cm4gTWF0aC5zcXJ0KE1hdGgubWF4KHRbMF0qdFswXSt0WzFdKnRbMV0rdFsyXSp0WzJdLHRbNF0qdFs0XSt0WzVdKnRbNV0rdFs2XSp0WzZdLHRbOF0qdFs4XSt0WzldKnRbOV0rdFsxMF0qdFsxMF0pKX1tYWtlVHJhbnNsYXRpb24odCxlLG4pe3JldHVybiB0aGlzLnNldCgxLDAsMCx0LDAsMSwwLGUsMCwwLDEsbiwwLDAsMCwxKSx0aGlzfW1ha2VSb3RhdGlvblgodCl7Y29uc3QgZT1NYXRoLmNvcyh0KSxuPU1hdGguc2luKHQpO3JldHVybiB0aGlzLnNldCgxLDAsMCwwLDAsZSwtbiwwLDAsbixlLDAsMCwwLDAsMSksdGhpc31tYWtlUm90YXRpb25ZKHQpe2NvbnN0IGU9TWF0aC5jb3ModCksbj1NYXRoLnNpbih0KTtyZXR1cm4gdGhpcy5zZXQoZSwwLG4sMCwwLDEsMCwwLC1uLDAsZSwwLDAsMCwwLDEpLHRoaXN9bWFrZVJvdGF0aW9uWih0KXtjb25zdCBlPU1hdGguY29zKHQpLG49TWF0aC5zaW4odCk7cmV0dXJuIHRoaXMuc2V0KGUsLW4sMCwwLG4sZSwwLDAsMCwwLDEsMCwwLDAsMCwxKSx0aGlzfW1ha2VSb3RhdGlvbkF4aXModCxlKXtjb25zdCBuPU1hdGguY29zKGUpLGk9TWF0aC5zaW4oZSkscj0xLW4sbz10LngsYT10Lnkscz10LnosbD1yKm8sYz1yKmE7cmV0dXJuIHRoaXMuc2V0KGwqbytuLGwqYS1pKnMsbCpzK2kqYSwwLGwqYStpKnMsYyphK24sYypzLWkqbywwLGwqcy1pKmEsYypzK2kqbyxyKnMqcytuLDAsMCwwLDAsMSksdGhpc31tYWtlU2NhbGUodCxlLG4pe3JldHVybiB0aGlzLnNldCh0LDAsMCwwLDAsZSwwLDAsMCwwLG4sMCwwLDAsMCwxKSx0aGlzfW1ha2VTaGVhcih0LGUsbixpLHIsbyl7cmV0dXJuIHRoaXMuc2V0KDEsbixyLDAsdCwxLG8sMCxlLGksMSwwLDAsMCwwLDEpLHRoaXN9Y29tcG9zZSh0LGUsbil7Y29uc3QgaT10aGlzLmVsZW1lbnRzLHI9ZS5feCxvPWUuX3ksYT1lLl96LHM9ZS5fdyxsPXIrcixjPW8rbyx1PWErYSxoPXIqbCxkPXIqYyxwPXIqdSxmPW8qYyxtPW8qdSxnPWEqdSxfPXMqbCx5PXMqYyx2PXMqdSxiPW4ueCx4PW4ueSx3PW4uejtyZXR1cm4gaVswXT0oMS0oZitnKSkqYixpWzFdPShkK3YpKmIsaVsyXT0ocC15KSpiLGlbM109MCxpWzRdPShkLXYpKngsaVs1XT0oMS0oaCtnKSkqeCxpWzZdPShtK18pKngsaVs3XT0wLGlbOF09KHAreSkqdyxpWzldPShtLV8pKncsaVsxMF09KDEtKGgrZikpKncsaVsxMV09MCxpWzEyXT10LngsaVsxM109dC55LGlbMTRdPXQueixpWzE1XT0xLHRoaXN9ZGVjb21wb3NlKHQsZSxuKXtjb25zdCBpPXRoaXMuZWxlbWVudHM7bGV0IHI9XzN0LnNldChpWzBdLGlbMV0saVsyXSkubGVuZ3RoKCk7Y29uc3Qgbz1fM3Quc2V0KGlbNF0saVs1XSxpWzZdKS5sZW5ndGgoKSxhPV8zdC5zZXQoaVs4XSxpWzldLGlbMTBdKS5sZW5ndGgoKTt0aGlzLmRldGVybWluYW50KCk8MCYmKHI9LXIpLHQueD1pWzEyXSx0Lnk9aVsxM10sdC56PWlbMTRdLHkzdC5jb3B5KHRoaXMpO2NvbnN0IHM9MS9yLGw9MS9vLGM9MS9hO3JldHVybiB5M3QuZWxlbWVudHNbMF0qPXMseTN0LmVsZW1lbnRzWzFdKj1zLHkzdC5lbGVtZW50c1syXSo9cyx5M3QuZWxlbWVudHNbNF0qPWwseTN0LmVsZW1lbnRzWzVdKj1sLHkzdC5lbGVtZW50c1s2XSo9bCx5M3QuZWxlbWVudHNbOF0qPWMseTN0LmVsZW1lbnRzWzldKj1jLHkzdC5lbGVtZW50c1sxMF0qPWMsZS5zZXRGcm9tUm90YXRpb25NYXRyaXgoeTN0KSxuLng9cixuLnk9byxuLno9YSx0aGlzfW1ha2VQZXJzcGVjdGl2ZSh0LGUsbixpLHIsbyl7dm9pZCAwPT09byYmY29uc29sZS53YXJuKCJUSFJFRS5NYXRyaXg0OiAubWFrZVBlcnNwZWN0aXZlKCkgaGFzIGJlZW4gcmVkZWZpbmVkIGFuZCBoYXMgYSBuZXcgc2lnbmF0dXJlLiBQbGVhc2UgY2hlY2sgdGhlIGRvY3MuIik7Y29uc3QgYT10aGlzLmVsZW1lbnRzLHM9MipyLyhuLWkpLGw9KGUrdCkvKGUtdCksYz0obitpKS8obi1pKSx1PS0obytyKS8oby1yKSxoPS0yKm8qci8oby1yKTtyZXR1cm4gYVswXT0yKnIvKGUtdCksYVs0XT0wLGFbOF09bCxhWzEyXT0wLGFbMV09MCxhWzVdPXMsYVs5XT1jLGFbMTNdPTAsYVsyXT0wLGFbNl09MCxhWzEwXT11LGFbMTRdPWgsYVszXT0wLGFbN109MCxhWzExXT0tMSxhWzE1XT0wLHRoaXN9bWFrZU9ydGhvZ3JhcGhpYyh0LGUsbixpLHIsbyl7Y29uc3QgYT10aGlzLmVsZW1lbnRzLHM9MS8oZS10KSxsPTEvKG4taSksYz0xLyhvLXIpLHU9KGUrdCkqcyxoPShuK2kpKmwsZD0obytyKSpjO3JldHVybiBhWzBdPTIqcyxhWzRdPTAsYVs4XT0wLGFbMTJdPS11LGFbMV09MCxhWzVdPTIqbCxhWzldPTAsYVsxM109LWgsYVsyXT0wLGFbNl09MCxhWzEwXT0tMipjLGFbMTRdPS1kLGFbM109MCxhWzddPTAsYVsxMV09MCxhWzE1XT0xLHRoaXN9ZXF1YWxzKHQpe2NvbnN0IGU9dGhpcy5lbGVtZW50cyxuPXQuZWxlbWVudHM7Zm9yKGxldCB0PTA7dDwxNjt0KyspaWYoZVt0XSE9PW5bdF0pcmV0dXJuITE7cmV0dXJuITB9ZnJvbUFycmF5KHQsZT0wKXtmb3IobGV0IG49MDtuPDE2O24rKyl0aGlzLmVsZW1lbnRzW25dPXRbbitlXTtyZXR1cm4gdGhpc310b0FycmF5KHQ9W10sZT0wKXtjb25zdCBuPXRoaXMuZWxlbWVudHM7cmV0dXJuIHRbZV09blswXSx0W2UrMV09blsxXSx0W2UrMl09blsyXSx0W2UrM109blszXSx0W2UrNF09bls0XSx0W2UrNV09bls1XSx0W2UrNl09bls2XSx0W2UrN109bls3XSx0W2UrOF09bls4XSx0W2UrOV09bls5XSx0W2UrMTBdPW5bMTBdLHRbZSsxMV09blsxMV0sdFtlKzEyXT1uWzEyXSx0W2UrMTNdPW5bMTNdLHRbZSsxNF09blsxNF0sdFtlKzE1XT1uWzE1XSx0fX1nM3QucHJvdG90eXBlLmlzTWF0cml4ND0hMDtjb25zdCBfM3Q9bmV3IEg1dCx5M3Q9bmV3IGczdCx2M3Q9bmV3IEg1dCgwLDAsMCksYjN0PW5ldyBINXQoMSwxLDEpLHgzdD1uZXcgSDV0LHczdD1uZXcgSDV0LFMzdD1uZXcgSDV0LE0zdD1uZXcgZzN0LEUzdD1uZXcgQjV0O2NsYXNzIFQzdHtjb25zdHJ1Y3Rvcih0PTAsZT0wLG49MCxpPVQzdC5EZWZhdWx0T3JkZXIpe3RoaXMuX3g9dCx0aGlzLl95PWUsdGhpcy5fej1uLHRoaXMuX29yZGVyPWl9Z2V0IHgoKXtyZXR1cm4gdGhpcy5feH1zZXQgeCh0KXt0aGlzLl94PXQsdGhpcy5fb25DaGFuZ2VDYWxsYmFjaygpfWdldCB5KCl7cmV0dXJuIHRoaXMuX3l9c2V0IHkodCl7dGhpcy5feT10LHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2soKX1nZXQgeigpe3JldHVybiB0aGlzLl96fXNldCB6KHQpe3RoaXMuX3o9dCx0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKCl9Z2V0IG9yZGVyKCl7cmV0dXJuIHRoaXMuX29yZGVyfXNldCBvcmRlcih0KXt0aGlzLl9vcmRlcj10LHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2soKX1zZXQodCxlLG4saT10aGlzLl9vcmRlcil7cmV0dXJuIHRoaXMuX3g9dCx0aGlzLl95PWUsdGhpcy5fej1uLHRoaXMuX29yZGVyPWksdGhpcy5fb25DaGFuZ2VDYWxsYmFjaygpLHRoaXN9Y2xvbmUoKXtyZXR1cm4gbmV3IHRoaXMuY29uc3RydWN0b3IodGhpcy5feCx0aGlzLl95LHRoaXMuX3osdGhpcy5fb3JkZXIpfWNvcHkodCl7cmV0dXJuIHRoaXMuX3g9dC5feCx0aGlzLl95PXQuX3ksdGhpcy5fej10Ll96LHRoaXMuX29yZGVyPXQuX29yZGVyLHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2soKSx0aGlzfXNldEZyb21Sb3RhdGlvbk1hdHJpeCh0LGU9dGhpcy5fb3JkZXIsbj0hMCl7Y29uc3QgaT10LmVsZW1lbnRzLHI9aVswXSxvPWlbNF0sYT1pWzhdLHM9aVsxXSxsPWlbNV0sYz1pWzldLHU9aVsyXSxoPWlbNl0sZD1pWzEwXTtzd2l0Y2goZSl7Y2FzZSJYWVoiOnRoaXMuX3k9TWF0aC5hc2luKHM1dChhLC0xLDEpKSxNYXRoLmFicyhhKTwuOTk5OTk5OT8odGhpcy5feD1NYXRoLmF0YW4yKC1jLGQpLHRoaXMuX3o9TWF0aC5hdGFuMigtbyxyKSk6KHRoaXMuX3g9TWF0aC5hdGFuMihoLGwpLHRoaXMuX3o9MCk7YnJlYWs7Y2FzZSJZWFoiOnRoaXMuX3g9TWF0aC5hc2luKC1zNXQoYywtMSwxKSksTWF0aC5hYnMoYyk8Ljk5OTk5OTk/KHRoaXMuX3k9TWF0aC5hdGFuMihhLGQpLHRoaXMuX3o9TWF0aC5hdGFuMihzLGwpKToodGhpcy5feT1NYXRoLmF0YW4yKC11LHIpLHRoaXMuX3o9MCk7YnJlYWs7Y2FzZSJaWFkiOnRoaXMuX3g9TWF0aC5hc2luKHM1dChoLC0xLDEpKSxNYXRoLmFicyhoKTwuOTk5OTk5OT8odGhpcy5feT1NYXRoLmF0YW4yKC11LGQpLHRoaXMuX3o9TWF0aC5hdGFuMigtbyxsKSk6KHRoaXMuX3k9MCx0aGlzLl96PU1hdGguYXRhbjIocyxyKSk7YnJlYWs7Y2FzZSJaWVgiOnRoaXMuX3k9TWF0aC5hc2luKC1zNXQodSwtMSwxKSksTWF0aC5hYnModSk8Ljk5OTk5OTk/KHRoaXMuX3g9TWF0aC5hdGFuMihoLGQpLHRoaXMuX3o9TWF0aC5hdGFuMihzLHIpKToodGhpcy5feD0wLHRoaXMuX3o9TWF0aC5hdGFuMigtbyxsKSk7YnJlYWs7Y2FzZSJZWlgiOnRoaXMuX3o9TWF0aC5hc2luKHM1dChzLC0xLDEpKSxNYXRoLmFicyhzKTwuOTk5OTk5OT8odGhpcy5feD1NYXRoLmF0YW4yKC1jLGwpLHRoaXMuX3k9TWF0aC5hdGFuMigtdSxyKSk6KHRoaXMuX3g9MCx0aGlzLl95PU1hdGguYXRhbjIoYSxkKSk7YnJlYWs7Y2FzZSJYWlkiOnRoaXMuX3o9TWF0aC5hc2luKC1zNXQobywtMSwxKSksTWF0aC5hYnMobyk8Ljk5OTk5OTk/KHRoaXMuX3g9TWF0aC5hdGFuMihoLGwpLHRoaXMuX3k9TWF0aC5hdGFuMihhLHIpKToodGhpcy5feD1NYXRoLmF0YW4yKC1jLGQpLHRoaXMuX3k9MCk7YnJlYWs7ZGVmYXVsdDpjb25zb2xlLndhcm4oIlRIUkVFLkV1bGVyOiAuc2V0RnJvbVJvdGF0aW9uTWF0cml4KCkgZW5jb3VudGVyZWQgYW4gdW5rbm93biBvcmRlcjogIitlKX1yZXR1cm4gdGhpcy5fb3JkZXI9ZSwhMD09PW4mJnRoaXMuX29uQ2hhbmdlQ2FsbGJhY2soKSx0aGlzfXNldEZyb21RdWF0ZXJuaW9uKHQsZSxuKXtyZXR1cm4gTTN0Lm1ha2VSb3RhdGlvbkZyb21RdWF0ZXJuaW9uKHQpLHRoaXMuc2V0RnJvbVJvdGF0aW9uTWF0cml4KE0zdCxlLG4pfXNldEZyb21WZWN0b3IzKHQsZT10aGlzLl9vcmRlcil7cmV0dXJuIHRoaXMuc2V0KHQueCx0LnksdC56LGUpfXJlb3JkZXIodCl7cmV0dXJuIEUzdC5zZXRGcm9tRXVsZXIodGhpcyksdGhpcy5zZXRGcm9tUXVhdGVybmlvbihFM3QsdCl9ZXF1YWxzKHQpe3JldHVybiB0Ll94PT09dGhpcy5feCYmdC5feT09PXRoaXMuX3kmJnQuX3o9PT10aGlzLl96JiZ0Ll9vcmRlcj09PXRoaXMuX29yZGVyfWZyb21BcnJheSh0KXtyZXR1cm4gdGhpcy5feD10WzBdLHRoaXMuX3k9dFsxXSx0aGlzLl96PXRbMl0sdm9pZCAwIT09dFszXSYmKHRoaXMuX29yZGVyPXRbM10pLHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2soKSx0aGlzfXRvQXJyYXkodD1bXSxlPTApe3JldHVybiB0W2VdPXRoaXMuX3gsdFtlKzFdPXRoaXMuX3ksdFtlKzJdPXRoaXMuX3osdFtlKzNdPXRoaXMuX29yZGVyLHR9dG9WZWN0b3IzKHQpe3JldHVybiB0P3Quc2V0KHRoaXMuX3gsdGhpcy5feSx0aGlzLl96KTpuZXcgSDV0KHRoaXMuX3gsdGhpcy5feSx0aGlzLl96KX1fb25DaGFuZ2UodCl7cmV0dXJuIHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2s9dCx0aGlzfV9vbkNoYW5nZUNhbGxiYWNrKCl7fX1UM3QucHJvdG90eXBlLmlzRXVsZXI9ITAsVDN0LkRlZmF1bHRPcmRlcj0iWFlaIixUM3QuUm90YXRpb25PcmRlcnM9WyJYWVoiLCJZWlgiLCJaWFkiLCJYWlkiLCJZWFoiLCJaWVgiXTtjbGFzcyBDM3R7Y29uc3RydWN0b3IoKXt0aGlzLm1hc2s9MX1zZXQodCl7dGhpcy5tYXNrPTE8PHR8MH1lbmFibGUodCl7dGhpcy5tYXNrfD0xPDx0fDB9ZW5hYmxlQWxsKCl7dGhpcy5tYXNrPS0xfXRvZ2dsZSh0KXt0aGlzLm1hc2tePTE8PHR8MH1kaXNhYmxlKHQpe3RoaXMubWFzayY9figxPDx0fDApfWRpc2FibGVBbGwoKXt0aGlzLm1hc2s9MH10ZXN0KHQpe3JldHVybiAwIT0odGhpcy5tYXNrJnQubWFzayl9fWxldCBBM3Q9MDtjb25zdCBrM3Q9bmV3IEg1dCxMM3Q9bmV3IEI1dCxQM3Q9bmV3IGczdCxOM3Q9bmV3IEg1dCxJM3Q9bmV3IEg1dCxSM3Q9bmV3IEg1dCxPM3Q9bmV3IEI1dCx6M3Q9bmV3IEg1dCgxLDAsMCksRDN0PW5ldyBINXQoMCwxLDApLEIzdD1uZXcgSDV0KDAsMCwxKSxIM3Q9e3R5cGU6ImFkZGVkIn0sRjN0PXt0eXBlOiJyZW1vdmVkIn07Y2xhc3MgVjN0IGV4dGVuZHMgZTV0e2NvbnN0cnVjdG9yKCl7c3VwZXIoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywiaWQiLHt2YWx1ZTpBM3QrK30pLHRoaXMudXVpZD1hNXQoKSx0aGlzLm5hbWU9IiIsdGhpcy50eXBlPSJPYmplY3QzRCIsdGhpcy5wYXJlbnQ9bnVsbCx0aGlzLmNoaWxkcmVuPVtdLHRoaXMudXA9VjN0LkRlZmF1bHRVcC5jbG9uZSgpO2NvbnN0IHQ9bmV3IEg1dCxlPW5ldyBUM3Qsbj1uZXcgQjV0LGk9bmV3IEg1dCgxLDEsMSk7ZS5fb25DaGFuZ2UoKGZ1bmN0aW9uIHIoKXtuLnNldEZyb21FdWxlcihlLCExKX0pKSxuLl9vbkNoYW5nZSgoZnVuY3Rpb24gbygpe2Uuc2V0RnJvbVF1YXRlcm5pb24obix2b2lkIDAsITEpfSkpLE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRoaXMse3Bvc2l0aW9uOntjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMCx2YWx1ZTp0fSxyb3RhdGlvbjp7Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITAsdmFsdWU6ZX0scXVhdGVybmlvbjp7Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITAsdmFsdWU6bn0sc2NhbGU6e2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwLHZhbHVlOml9LG1vZGVsVmlld01hdHJpeDp7dmFsdWU6bmV3IGczdH0sbm9ybWFsTWF0cml4Ont2YWx1ZTpuZXcgQTV0fX0pLHRoaXMubWF0cml4PW5ldyBnM3QsdGhpcy5tYXRyaXhXb3JsZD1uZXcgZzN0LHRoaXMubWF0cml4QXV0b1VwZGF0ZT1WM3QuRGVmYXVsdE1hdHJpeEF1dG9VcGRhdGUsdGhpcy5tYXRyaXhXb3JsZE5lZWRzVXBkYXRlPSExLHRoaXMubGF5ZXJzPW5ldyBDM3QsdGhpcy52aXNpYmxlPSEwLHRoaXMuY2FzdFNoYWRvdz0hMSx0aGlzLnJlY2VpdmVTaGFkb3c9ITEsdGhpcy5mcnVzdHVtQ3VsbGVkPSEwLHRoaXMucmVuZGVyT3JkZXI9MCx0aGlzLmFuaW1hdGlvbnM9W10sdGhpcy51c2VyRGF0YT17fX1vbkJlZm9yZVJlbmRlcigpe31vbkFmdGVyUmVuZGVyKCl7fWFwcGx5TWF0cml4NCh0KXt0aGlzLm1hdHJpeEF1dG9VcGRhdGUmJnRoaXMudXBkYXRlTWF0cml4KCksdGhpcy5tYXRyaXgucHJlbXVsdGlwbHkodCksdGhpcy5tYXRyaXguZGVjb21wb3NlKHRoaXMucG9zaXRpb24sdGhpcy5xdWF0ZXJuaW9uLHRoaXMuc2NhbGUpfWFwcGx5UXVhdGVybmlvbih0KXtyZXR1cm4gdGhpcy5xdWF0ZXJuaW9uLnByZW11bHRpcGx5KHQpLHRoaXN9c2V0Um90YXRpb25Gcm9tQXhpc0FuZ2xlKHQsZSl7dGhpcy5xdWF0ZXJuaW9uLnNldEZyb21BeGlzQW5nbGUodCxlKX1zZXRSb3RhdGlvbkZyb21FdWxlcih0KXt0aGlzLnF1YXRlcm5pb24uc2V0RnJvbUV1bGVyKHQsITApfXNldFJvdGF0aW9uRnJvbU1hdHJpeCh0KXt0aGlzLnF1YXRlcm5pb24uc2V0RnJvbVJvdGF0aW9uTWF0cml4KHQpfXNldFJvdGF0aW9uRnJvbVF1YXRlcm5pb24odCl7dGhpcy5xdWF0ZXJuaW9uLmNvcHkodCl9cm90YXRlT25BeGlzKHQsZSl7cmV0dXJuIEwzdC5zZXRGcm9tQXhpc0FuZ2xlKHQsZSksdGhpcy5xdWF0ZXJuaW9uLm11bHRpcGx5KEwzdCksdGhpc31yb3RhdGVPbldvcmxkQXhpcyh0LGUpe3JldHVybiBMM3Quc2V0RnJvbUF4aXNBbmdsZSh0LGUpLHRoaXMucXVhdGVybmlvbi5wcmVtdWx0aXBseShMM3QpLHRoaXN9cm90YXRlWCh0KXtyZXR1cm4gdGhpcy5yb3RhdGVPbkF4aXMoejN0LHQpfXJvdGF0ZVkodCl7cmV0dXJuIHRoaXMucm90YXRlT25BeGlzKEQzdCx0KX1yb3RhdGVaKHQpe3JldHVybiB0aGlzLnJvdGF0ZU9uQXhpcyhCM3QsdCl9dHJhbnNsYXRlT25BeGlzKHQsZSl7cmV0dXJuIGszdC5jb3B5KHQpLmFwcGx5UXVhdGVybmlvbih0aGlzLnF1YXRlcm5pb24pLHRoaXMucG9zaXRpb24uYWRkKGszdC5tdWx0aXBseVNjYWxhcihlKSksdGhpc310cmFuc2xhdGVYKHQpe3JldHVybiB0aGlzLnRyYW5zbGF0ZU9uQXhpcyh6M3QsdCl9dHJhbnNsYXRlWSh0KXtyZXR1cm4gdGhpcy50cmFuc2xhdGVPbkF4aXMoRDN0LHQpfXRyYW5zbGF0ZVoodCl7cmV0dXJuIHRoaXMudHJhbnNsYXRlT25BeGlzKEIzdCx0KX1sb2NhbFRvV29ybGQodCl7cmV0dXJuIHQuYXBwbHlNYXRyaXg0KHRoaXMubWF0cml4V29ybGQpfXdvcmxkVG9Mb2NhbCh0KXtyZXR1cm4gdC5hcHBseU1hdHJpeDQoUDN0LmNvcHkodGhpcy5tYXRyaXhXb3JsZCkuaW52ZXJ0KCkpfWxvb2tBdCh0LGUsbil7dC5pc1ZlY3RvcjM/TjN0LmNvcHkodCk6TjN0LnNldCh0LGUsbik7Y29uc3QgaT10aGlzLnBhcmVudDt0aGlzLnVwZGF0ZVdvcmxkTWF0cml4KCEwLCExKSxJM3Quc2V0RnJvbU1hdHJpeFBvc2l0aW9uKHRoaXMubWF0cml4V29ybGQpLHRoaXMuaXNDYW1lcmF8fHRoaXMuaXNMaWdodD9QM3QubG9va0F0KEkzdCxOM3QsdGhpcy51cCk6UDN0Lmxvb2tBdChOM3QsSTN0LHRoaXMudXApLHRoaXMucXVhdGVybmlvbi5zZXRGcm9tUm90YXRpb25NYXRyaXgoUDN0KSxpJiYoUDN0LmV4dHJhY3RSb3RhdGlvbihpLm1hdHJpeFdvcmxkKSxMM3Quc2V0RnJvbVJvdGF0aW9uTWF0cml4KFAzdCksdGhpcy5xdWF0ZXJuaW9uLnByZW11bHRpcGx5KEwzdC5pbnZlcnQoKSkpfWFkZCh0KXtpZihhcmd1bWVudHMubGVuZ3RoPjEpe2ZvcihsZXQgdD0wO3Q8YXJndW1lbnRzLmxlbmd0aDt0KyspdGhpcy5hZGQoYXJndW1lbnRzW3RdKTtyZXR1cm4gdGhpc31yZXR1cm4gdD09PXRoaXM/KGNvbnNvbGUuZXJyb3IoIlRIUkVFLk9iamVjdDNELmFkZDogb2JqZWN0IGNhbid0IGJlIGFkZGVkIGFzIGEgY2hpbGQgb2YgaXRzZWxmLiIsdCksdGhpcyk6KHQmJnQuaXNPYmplY3QzRD8obnVsbCE9PXQucGFyZW50JiZ0LnBhcmVudC5yZW1vdmUodCksdC5wYXJlbnQ9dGhpcyx0aGlzLmNoaWxkcmVuLnB1c2godCksdC5kaXNwYXRjaEV2ZW50KEgzdCkpOmNvbnNvbGUuZXJyb3IoIlRIUkVFLk9iamVjdDNELmFkZDogb2JqZWN0IG5vdCBhbiBpbnN0YW5jZSBvZiBUSFJFRS5PYmplY3QzRC4iLHQpLHRoaXMpfXJlbW92ZSh0KXtpZihhcmd1bWVudHMubGVuZ3RoPjEpe2ZvcihsZXQgdD0wO3Q8YXJndW1lbnRzLmxlbmd0aDt0KyspdGhpcy5yZW1vdmUoYXJndW1lbnRzW3RdKTtyZXR1cm4gdGhpc31jb25zdCBlPXRoaXMuY2hpbGRyZW4uaW5kZXhPZih0KTtyZXR1cm4tMSE9PWUmJih0LnBhcmVudD1udWxsLHRoaXMuY2hpbGRyZW4uc3BsaWNlKGUsMSksdC5kaXNwYXRjaEV2ZW50KEYzdCkpLHRoaXN9cmVtb3ZlRnJvbVBhcmVudCgpe2NvbnN0IHQ9dGhpcy5wYXJlbnQ7cmV0dXJuIG51bGwhPT10JiZ0LnJlbW92ZSh0aGlzKSx0aGlzfWNsZWFyKCl7Zm9yKGxldCB0PTA7dDx0aGlzLmNoaWxkcmVuLmxlbmd0aDt0Kyspe2NvbnN0IGU9dGhpcy5jaGlsZHJlblt0XTtlLnBhcmVudD1udWxsLGUuZGlzcGF0Y2hFdmVudChGM3QpfXJldHVybiB0aGlzLmNoaWxkcmVuLmxlbmd0aD0wLHRoaXN9YXR0YWNoKHQpe3JldHVybiB0aGlzLnVwZGF0ZVdvcmxkTWF0cml4KCEwLCExKSxQM3QuY29weSh0aGlzLm1hdHJpeFdvcmxkKS5pbnZlcnQoKSxudWxsIT09dC5wYXJlbnQmJih0LnBhcmVudC51cGRhdGVXb3JsZE1hdHJpeCghMCwhMSksUDN0Lm11bHRpcGx5KHQucGFyZW50Lm1hdHJpeFdvcmxkKSksdC5hcHBseU1hdHJpeDQoUDN0KSx0aGlzLmFkZCh0KSx0LnVwZGF0ZVdvcmxkTWF0cml4KCExLCEwKSx0aGlzfWdldE9iamVjdEJ5SWQodCl7cmV0dXJuIHRoaXMuZ2V0T2JqZWN0QnlQcm9wZXJ0eSgiaWQiLHQpfWdldE9iamVjdEJ5TmFtZSh0KXtyZXR1cm4gdGhpcy5nZXRPYmplY3RCeVByb3BlcnR5KCJuYW1lIix0KX1nZXRPYmplY3RCeVByb3BlcnR5KHQsZSl7aWYodGhpc1t0XT09PWUpcmV0dXJuIHRoaXM7Zm9yKGxldCBuPTAsaT10aGlzLmNoaWxkcmVuLmxlbmd0aDtuPGk7bisrKXtjb25zdCBpPXRoaXMuY2hpbGRyZW5bbl0uZ2V0T2JqZWN0QnlQcm9wZXJ0eSh0LGUpO2lmKHZvaWQgMCE9PWkpcmV0dXJuIGl9fWdldFdvcmxkUG9zaXRpb24odCl7cmV0dXJuIHRoaXMudXBkYXRlV29ybGRNYXRyaXgoITAsITEpLHQuc2V0RnJvbU1hdHJpeFBvc2l0aW9uKHRoaXMubWF0cml4V29ybGQpfWdldFdvcmxkUXVhdGVybmlvbih0KXtyZXR1cm4gdGhpcy51cGRhdGVXb3JsZE1hdHJpeCghMCwhMSksdGhpcy5tYXRyaXhXb3JsZC5kZWNvbXBvc2UoSTN0LHQsUjN0KSx0fWdldFdvcmxkU2NhbGUodCl7cmV0dXJuIHRoaXMudXBkYXRlV29ybGRNYXRyaXgoITAsITEpLHRoaXMubWF0cml4V29ybGQuZGVjb21wb3NlKEkzdCxPM3QsdCksdH1nZXRXb3JsZERpcmVjdGlvbih0KXt0aGlzLnVwZGF0ZVdvcmxkTWF0cml4KCEwLCExKTtjb25zdCBlPXRoaXMubWF0cml4V29ybGQuZWxlbWVudHM7cmV0dXJuIHQuc2V0KGVbOF0sZVs5XSxlWzEwXSkubm9ybWFsaXplKCl9cmF5Y2FzdCgpe310cmF2ZXJzZSh0KXt0KHRoaXMpO2NvbnN0IGU9dGhpcy5jaGlsZHJlbjtmb3IobGV0IG49MCxpPWUubGVuZ3RoO248aTtuKyspZVtuXS50cmF2ZXJzZSh0KX10cmF2ZXJzZVZpc2libGUodCl7aWYoITE9PT10aGlzLnZpc2libGUpcmV0dXJuO3QodGhpcyk7Y29uc3QgZT10aGlzLmNoaWxkcmVuO2ZvcihsZXQgbj0wLGk9ZS5sZW5ndGg7bjxpO24rKyllW25dLnRyYXZlcnNlVmlzaWJsZSh0KX10cmF2ZXJzZUFuY2VzdG9ycyh0KXtjb25zdCBlPXRoaXMucGFyZW50O251bGwhPT1lJiYodChlKSxlLnRyYXZlcnNlQW5jZXN0b3JzKHQpKX11cGRhdGVNYXRyaXgoKXt0aGlzLm1hdHJpeC5jb21wb3NlKHRoaXMucG9zaXRpb24sdGhpcy5xdWF0ZXJuaW9uLHRoaXMuc2NhbGUpLHRoaXMubWF0cml4V29ybGROZWVkc1VwZGF0ZT0hMH11cGRhdGVNYXRyaXhXb3JsZCh0KXt0aGlzLm1hdHJpeEF1dG9VcGRhdGUmJnRoaXMudXBkYXRlTWF0cml4KCksKHRoaXMubWF0cml4V29ybGROZWVkc1VwZGF0ZXx8dCkmJihudWxsPT09dGhpcy5wYXJlbnQ/dGhpcy5tYXRyaXhXb3JsZC5jb3B5KHRoaXMubWF0cml4KTp0aGlzLm1hdHJpeFdvcmxkLm11bHRpcGx5TWF0cmljZXModGhpcy5wYXJlbnQubWF0cml4V29ybGQsdGhpcy5tYXRyaXgpLHRoaXMubWF0cml4V29ybGROZWVkc1VwZGF0ZT0hMSx0PSEwKTtjb25zdCBlPXRoaXMuY2hpbGRyZW47Zm9yKGxldCBuPTAsaT1lLmxlbmd0aDtuPGk7bisrKWVbbl0udXBkYXRlTWF0cml4V29ybGQodCl9dXBkYXRlV29ybGRNYXRyaXgodCxlKXtjb25zdCBuPXRoaXMucGFyZW50O2lmKCEwPT09dCYmbnVsbCE9PW4mJm4udXBkYXRlV29ybGRNYXRyaXgoITAsITEpLHRoaXMubWF0cml4QXV0b1VwZGF0ZSYmdGhpcy51cGRhdGVNYXRyaXgoKSxudWxsPT09dGhpcy5wYXJlbnQ/dGhpcy5tYXRyaXhXb3JsZC5jb3B5KHRoaXMubWF0cml4KTp0aGlzLm1hdHJpeFdvcmxkLm11bHRpcGx5TWF0cmljZXModGhpcy5wYXJlbnQubWF0cml4V29ybGQsdGhpcy5tYXRyaXgpLCEwPT09ZSl7Y29uc3QgdD10aGlzLmNoaWxkcmVuO2ZvcihsZXQgZT0wLG49dC5sZW5ndGg7ZTxuO2UrKyl0W2VdLnVwZGF0ZVdvcmxkTWF0cml4KCExLCEwKX19dG9KU09OKHQpe2NvbnN0IGU9dm9pZCAwPT09dHx8InN0cmluZyI9PXR5cGVvZiB0LG49e307ZSYmKHQ9e2dlb21ldHJpZXM6e30sbWF0ZXJpYWxzOnt9LHRleHR1cmVzOnt9LGltYWdlczp7fSxzaGFwZXM6e30sc2tlbGV0b25zOnt9LGFuaW1hdGlvbnM6e319LG4ubWV0YWRhdGE9e3ZlcnNpb246NC41LHR5cGU6Ik9iamVjdCIsZ2VuZXJhdG9yOiJPYmplY3QzRC50b0pTT04ifSk7Y29uc3QgaT17fTtmdW5jdGlvbiByKGUsbil7cmV0dXJuIHZvaWQgMD09PWVbbi51dWlkXSYmKGVbbi51dWlkXT1uLnRvSlNPTih0KSksbi51dWlkfWlmKGkudXVpZD10aGlzLnV1aWQsaS50eXBlPXRoaXMudHlwZSwiIiE9PXRoaXMubmFtZSYmKGkubmFtZT10aGlzLm5hbWUpLCEwPT09dGhpcy5jYXN0U2hhZG93JiYoaS5jYXN0U2hhZG93PSEwKSwhMD09PXRoaXMucmVjZWl2ZVNoYWRvdyYmKGkucmVjZWl2ZVNoYWRvdz0hMCksITE9PT10aGlzLnZpc2libGUmJihpLnZpc2libGU9ITEpLCExPT09dGhpcy5mcnVzdHVtQ3VsbGVkJiYoaS5mcnVzdHVtQ3VsbGVkPSExKSwwIT09dGhpcy5yZW5kZXJPcmRlciYmKGkucmVuZGVyT3JkZXI9dGhpcy5yZW5kZXJPcmRlciksInt9IiE9PUpTT04uc3RyaW5naWZ5KHRoaXMudXNlckRhdGEpJiYoaS51c2VyRGF0YT10aGlzLnVzZXJEYXRhKSxpLmxheWVycz10aGlzLmxheWVycy5tYXNrLGkubWF0cml4PXRoaXMubWF0cml4LnRvQXJyYXkoKSwhMT09PXRoaXMubWF0cml4QXV0b1VwZGF0ZSYmKGkubWF0cml4QXV0b1VwZGF0ZT0hMSksdGhpcy5pc0luc3RhbmNlZE1lc2gmJihpLnR5cGU9Ikluc3RhbmNlZE1lc2giLGkuY291bnQ9dGhpcy5jb3VudCxpLmluc3RhbmNlTWF0cml4PXRoaXMuaW5zdGFuY2VNYXRyaXgudG9KU09OKCksbnVsbCE9PXRoaXMuaW5zdGFuY2VDb2xvciYmKGkuaW5zdGFuY2VDb2xvcj10aGlzLmluc3RhbmNlQ29sb3IudG9KU09OKCkpKSx0aGlzLmlzU2NlbmUpdGhpcy5iYWNrZ3JvdW5kJiYodGhpcy5iYWNrZ3JvdW5kLmlzQ29sb3I/aS5iYWNrZ3JvdW5kPXRoaXMuYmFja2dyb3VuZC50b0pTT04oKTp0aGlzLmJhY2tncm91bmQuaXNUZXh0dXJlJiYoaS5iYWNrZ3JvdW5kPXRoaXMuYmFja2dyb3VuZC50b0pTT04odCkudXVpZCkpLHRoaXMuZW52aXJvbm1lbnQmJnRoaXMuZW52aXJvbm1lbnQuaXNUZXh0dXJlJiYoaS5lbnZpcm9ubWVudD10aGlzLmVudmlyb25tZW50LnRvSlNPTih0KS51dWlkKTtlbHNlIGlmKHRoaXMuaXNNZXNofHx0aGlzLmlzTGluZXx8dGhpcy5pc1BvaW50cyl7aS5nZW9tZXRyeT1yKHQuZ2VvbWV0cmllcyx0aGlzLmdlb21ldHJ5KTtjb25zdCBlPXRoaXMuZ2VvbWV0cnkucGFyYW1ldGVycztpZih2b2lkIDAhPT1lJiZ2b2lkIDAhPT1lLnNoYXBlcyl7Y29uc3Qgbj1lLnNoYXBlcztpZihBcnJheS5pc0FycmF5KG4pKWZvcihsZXQgZT0wLGk9bi5sZW5ndGg7ZTxpO2UrKyl7cih0LnNoYXBlcyxuW2VdKX1lbHNlIHIodC5zaGFwZXMsbil9fWlmKHRoaXMuaXNTa2lubmVkTWVzaCYmKGkuYmluZE1vZGU9dGhpcy5iaW5kTW9kZSxpLmJpbmRNYXRyaXg9dGhpcy5iaW5kTWF0cml4LnRvQXJyYXkoKSx2b2lkIDAhPT10aGlzLnNrZWxldG9uJiYocih0LnNrZWxldG9ucyx0aGlzLnNrZWxldG9uKSxpLnNrZWxldG9uPXRoaXMuc2tlbGV0b24udXVpZCkpLHZvaWQgMCE9PXRoaXMubWF0ZXJpYWwpaWYoQXJyYXkuaXNBcnJheSh0aGlzLm1hdGVyaWFsKSl7Y29uc3QgZT1bXTtmb3IobGV0IG49MCxpPXRoaXMubWF0ZXJpYWwubGVuZ3RoO248aTtuKyspZS5wdXNoKHIodC5tYXRlcmlhbHMsdGhpcy5tYXRlcmlhbFtuXSkpO2kubWF0ZXJpYWw9ZX1lbHNlIGkubWF0ZXJpYWw9cih0Lm1hdGVyaWFscyx0aGlzLm1hdGVyaWFsKTtpZih0aGlzLmNoaWxkcmVuLmxlbmd0aD4wKXtpLmNoaWxkcmVuPVtdO2ZvcihsZXQgZT0wO2U8dGhpcy5jaGlsZHJlbi5sZW5ndGg7ZSsrKWkuY2hpbGRyZW4ucHVzaCh0aGlzLmNoaWxkcmVuW2VdLnRvSlNPTih0KS5vYmplY3QpfWlmKHRoaXMuYW5pbWF0aW9ucy5sZW5ndGg+MCl7aS5hbmltYXRpb25zPVtdO2ZvcihsZXQgZT0wO2U8dGhpcy5hbmltYXRpb25zLmxlbmd0aDtlKyspe2kuYW5pbWF0aW9ucy5wdXNoKHIodC5hbmltYXRpb25zLHRoaXMuYW5pbWF0aW9uc1tlXSkpfX1pZihlKXtjb25zdCBlPW8odC5nZW9tZXRyaWVzKSxpPW8odC5tYXRlcmlhbHMpLHI9byh0LnRleHR1cmVzKSxhPW8odC5pbWFnZXMpLHM9byh0LnNoYXBlcyksbD1vKHQuc2tlbGV0b25zKSxjPW8odC5hbmltYXRpb25zKTtlLmxlbmd0aD4wJiYobi5nZW9tZXRyaWVzPWUpLGkubGVuZ3RoPjAmJihuLm1hdGVyaWFscz1pKSxyLmxlbmd0aD4wJiYobi50ZXh0dXJlcz1yKSxhLmxlbmd0aD4wJiYobi5pbWFnZXM9YSkscy5sZW5ndGg+MCYmKG4uc2hhcGVzPXMpLGwubGVuZ3RoPjAmJihuLnNrZWxldG9ucz1sKSxjLmxlbmd0aD4wJiYobi5hbmltYXRpb25zPWMpfXJldHVybiBuLm9iamVjdD1pLG47ZnVuY3Rpb24gbyh0KXtjb25zdCBlPVtdO2Zvcihjb25zdCBuIGluIHQpe2NvbnN0IGk9dFtuXTtkZWxldGUgaS5tZXRhZGF0YSxlLnB1c2goaSl9cmV0dXJuIGV9fWNsb25lKHQpe3JldHVybihuZXcgdGhpcy5jb25zdHJ1Y3RvcikuY29weSh0aGlzLHQpfWNvcHkodCxlPSEwKXtpZih0aGlzLm5hbWU9dC5uYW1lLHRoaXMudXAuY29weSh0LnVwKSx0aGlzLnBvc2l0aW9uLmNvcHkodC5wb3NpdGlvbiksdGhpcy5yb3RhdGlvbi5vcmRlcj10LnJvdGF0aW9uLm9yZGVyLHRoaXMucXVhdGVybmlvbi5jb3B5KHQucXVhdGVybmlvbiksdGhpcy5zY2FsZS5jb3B5KHQuc2NhbGUpLHRoaXMubWF0cml4LmNvcHkodC5tYXRyaXgpLHRoaXMubWF0cml4V29ybGQuY29weSh0Lm1hdHJpeFdvcmxkKSx0aGlzLm1hdHJpeEF1dG9VcGRhdGU9dC5tYXRyaXhBdXRvVXBkYXRlLHRoaXMubWF0cml4V29ybGROZWVkc1VwZGF0ZT10Lm1hdHJpeFdvcmxkTmVlZHNVcGRhdGUsdGhpcy5sYXllcnMubWFzaz10LmxheWVycy5tYXNrLHRoaXMudmlzaWJsZT10LnZpc2libGUsdGhpcy5jYXN0U2hhZG93PXQuY2FzdFNoYWRvdyx0aGlzLnJlY2VpdmVTaGFkb3c9dC5yZWNlaXZlU2hhZG93LHRoaXMuZnJ1c3R1bUN1bGxlZD10LmZydXN0dW1DdWxsZWQsdGhpcy5yZW5kZXJPcmRlcj10LnJlbmRlck9yZGVyLHRoaXMudXNlckRhdGE9SlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0LnVzZXJEYXRhKSksITA9PT1lKWZvcihsZXQgZT0wO2U8dC5jaGlsZHJlbi5sZW5ndGg7ZSsrKXt0aGlzLmFkZCh0LmNoaWxkcmVuW2VdLmNsb25lKCkpfXJldHVybiB0aGlzfX1WM3QuRGVmYXVsdFVwPW5ldyBINXQoMCwxLDApLFYzdC5EZWZhdWx0TWF0cml4QXV0b1VwZGF0ZT0hMCxWM3QucHJvdG90eXBlLmlzT2JqZWN0M0Q9ITA7Y29uc3QgVTN0PW5ldyBINXQsajN0PW5ldyBINXQsRzN0PW5ldyBINXQsVzN0PW5ldyBINXQscTN0PW5ldyBINXQsWTN0PW5ldyBINXQsWDN0PW5ldyBINXQsJDN0PW5ldyBINXQsSzN0PW5ldyBINXQsWjN0PW5ldyBINXQ7Y2xhc3MgSjN0e2NvbnN0cnVjdG9yKHQ9bmV3IEg1dCxlPW5ldyBINXQsbj1uZXcgSDV0KXt0aGlzLmE9dCx0aGlzLmI9ZSx0aGlzLmM9bn1zdGF0aWMgZ2V0Tm9ybWFsKHQsZSxuLGkpe2kuc3ViVmVjdG9ycyhuLGUpLFUzdC5zdWJWZWN0b3JzKHQsZSksaS5jcm9zcyhVM3QpO2NvbnN0IHI9aS5sZW5ndGhTcSgpO3JldHVybiByPjA/aS5tdWx0aXBseVNjYWxhcigxL01hdGguc3FydChyKSk6aS5zZXQoMCwwLDApfXN0YXRpYyBnZXRCYXJ5Y29vcmQodCxlLG4saSxyKXtVM3Quc3ViVmVjdG9ycyhpLGUpLGozdC5zdWJWZWN0b3JzKG4sZSksRzN0LnN1YlZlY3RvcnModCxlKTtjb25zdCBvPVUzdC5kb3QoVTN0KSxhPVUzdC5kb3QoajN0KSxzPVUzdC5kb3QoRzN0KSxsPWozdC5kb3QoajN0KSxjPWozdC5kb3QoRzN0KSx1PW8qbC1hKmE7aWYoMD09PXUpcmV0dXJuIHIuc2V0KC0yLC0xLC0xKTtjb25zdCBoPTEvdSxkPShsKnMtYSpjKSpoLHA9KG8qYy1hKnMpKmg7cmV0dXJuIHIuc2V0KDEtZC1wLHAsZCl9c3RhdGljIGNvbnRhaW5zUG9pbnQodCxlLG4saSl7cmV0dXJuIHRoaXMuZ2V0QmFyeWNvb3JkKHQsZSxuLGksVzN0KSxXM3QueD49MCYmVzN0Lnk+PTAmJlczdC54K1czdC55PD0xfXN0YXRpYyBnZXRVVih0LGUsbixpLHIsbyxhLHMpe3JldHVybiB0aGlzLmdldEJhcnljb29yZCh0LGUsbixpLFczdCkscy5zZXQoMCwwKSxzLmFkZFNjYWxlZFZlY3RvcihyLFczdC54KSxzLmFkZFNjYWxlZFZlY3RvcihvLFczdC55KSxzLmFkZFNjYWxlZFZlY3RvcihhLFczdC56KSxzfXN0YXRpYyBpc0Zyb250RmFjaW5nKHQsZSxuLGkpe3JldHVybiBVM3Quc3ViVmVjdG9ycyhuLGUpLGozdC5zdWJWZWN0b3JzKHQsZSksVTN0LmNyb3NzKGozdCkuZG90KGkpPDB9c2V0KHQsZSxuKXtyZXR1cm4gdGhpcy5hLmNvcHkodCksdGhpcy5iLmNvcHkoZSksdGhpcy5jLmNvcHkobiksdGhpc31zZXRGcm9tUG9pbnRzQW5kSW5kaWNlcyh0LGUsbixpKXtyZXR1cm4gdGhpcy5hLmNvcHkodFtlXSksdGhpcy5iLmNvcHkodFtuXSksdGhpcy5jLmNvcHkodFtpXSksdGhpc31jbG9uZSgpe3JldHVybihuZXcgdGhpcy5jb25zdHJ1Y3RvcikuY29weSh0aGlzKX1jb3B5KHQpe3JldHVybiB0aGlzLmEuY29weSh0LmEpLHRoaXMuYi5jb3B5KHQuYiksdGhpcy5jLmNvcHkodC5jKSx0aGlzfWdldEFyZWEoKXtyZXR1cm4gVTN0LnN1YlZlY3RvcnModGhpcy5jLHRoaXMuYiksajN0LnN1YlZlY3RvcnModGhpcy5hLHRoaXMuYiksLjUqVTN0LmNyb3NzKGozdCkubGVuZ3RoKCl9Z2V0TWlkcG9pbnQodCl7cmV0dXJuIHQuYWRkVmVjdG9ycyh0aGlzLmEsdGhpcy5iKS5hZGQodGhpcy5jKS5tdWx0aXBseVNjYWxhcigxLzMpfWdldE5vcm1hbCh0KXtyZXR1cm4gSjN0LmdldE5vcm1hbCh0aGlzLmEsdGhpcy5iLHRoaXMuYyx0KX1nZXRQbGFuZSh0KXtyZXR1cm4gdC5zZXRGcm9tQ29wbGFuYXJQb2ludHModGhpcy5hLHRoaXMuYix0aGlzLmMpfWdldEJhcnljb29yZCh0LGUpe3JldHVybiBKM3QuZ2V0QmFyeWNvb3JkKHQsdGhpcy5hLHRoaXMuYix0aGlzLmMsZSl9Z2V0VVYodCxlLG4saSxyKXtyZXR1cm4gSjN0LmdldFVWKHQsdGhpcy5hLHRoaXMuYix0aGlzLmMsZSxuLGkscil9Y29udGFpbnNQb2ludCh0KXtyZXR1cm4gSjN0LmNvbnRhaW5zUG9pbnQodCx0aGlzLmEsdGhpcy5iLHRoaXMuYyl9aXNGcm9udEZhY2luZyh0KXtyZXR1cm4gSjN0LmlzRnJvbnRGYWNpbmcodGhpcy5hLHRoaXMuYix0aGlzLmMsdCl9aW50ZXJzZWN0c0JveCh0KXtyZXR1cm4gdC5pbnRlcnNlY3RzVHJpYW5nbGUodGhpcyl9Y2xvc2VzdFBvaW50VG9Qb2ludCh0LGUpe2NvbnN0IG49dGhpcy5hLGk9dGhpcy5iLHI9dGhpcy5jO2xldCBvLGE7cTN0LnN1YlZlY3RvcnMoaSxuKSxZM3Quc3ViVmVjdG9ycyhyLG4pLCQzdC5zdWJWZWN0b3JzKHQsbik7Y29uc3Qgcz1xM3QuZG90KCQzdCksbD1ZM3QuZG90KCQzdCk7aWYoczw9MCYmbDw9MClyZXR1cm4gZS5jb3B5KG4pO0szdC5zdWJWZWN0b3JzKHQsaSk7Y29uc3QgYz1xM3QuZG90KEszdCksdT1ZM3QuZG90KEszdCk7aWYoYz49MCYmdTw9YylyZXR1cm4gZS5jb3B5KGkpO2NvbnN0IGg9cyp1LWMqbDtpZihoPD0wJiZzPj0wJiZjPD0wKXJldHVybiBvPXMvKHMtYyksZS5jb3B5KG4pLmFkZFNjYWxlZFZlY3RvcihxM3Qsbyk7WjN0LnN1YlZlY3RvcnModCxyKTtjb25zdCBkPXEzdC5kb3QoWjN0KSxwPVkzdC5kb3QoWjN0KTtpZihwPj0wJiZkPD1wKXJldHVybiBlLmNvcHkocik7Y29uc3QgZj1kKmwtcypwO2lmKGY8PTAmJmw+PTAmJnA8PTApcmV0dXJuIGE9bC8obC1wKSxlLmNvcHkobikuYWRkU2NhbGVkVmVjdG9yKFkzdCxhKTtjb25zdCBtPWMqcC1kKnU7aWYobTw9MCYmdS1jPj0wJiZkLXA+PTApcmV0dXJuIFgzdC5zdWJWZWN0b3JzKHIsaSksYT0odS1jKS8odS1jKyhkLXApKSxlLmNvcHkoaSkuYWRkU2NhbGVkVmVjdG9yKFgzdCxhKTtjb25zdCBnPTEvKG0rZitoKTtyZXR1cm4gbz1mKmcsYT1oKmcsZS5jb3B5KG4pLmFkZFNjYWxlZFZlY3RvcihxM3QsbykuYWRkU2NhbGVkVmVjdG9yKFkzdCxhKX1lcXVhbHModCl7cmV0dXJuIHQuYS5lcXVhbHModGhpcy5hKSYmdC5iLmVxdWFscyh0aGlzLmIpJiZ0LmMuZXF1YWxzKHRoaXMuYyl9fWxldCBRM3Q9MDtjbGFzcyB0NHQgZXh0ZW5kcyBlNXR7Y29uc3RydWN0b3IoKXtzdXBlcigpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJpZCIse3ZhbHVlOlEzdCsrfSksdGhpcy51dWlkPWE1dCgpLHRoaXMubmFtZT0iIix0aGlzLnR5cGU9Ik1hdGVyaWFsIix0aGlzLmZvZz0hMCx0aGlzLmJsZW5kaW5nPTEsdGhpcy5zaWRlPTAsdGhpcy52ZXJ0ZXhDb2xvcnM9ITEsdGhpcy5vcGFjaXR5PTEsdGhpcy50cmFuc3BhcmVudD0hMSx0aGlzLmJsZW5kU3JjPTIwNCx0aGlzLmJsZW5kRHN0PTIwNSx0aGlzLmJsZW5kRXF1YXRpb249UTB0LHRoaXMuYmxlbmRTcmNBbHBoYT1udWxsLHRoaXMuYmxlbmREc3RBbHBoYT1udWxsLHRoaXMuYmxlbmRFcXVhdGlvbkFscGhhPW51bGwsdGhpcy5kZXB0aEZ1bmM9Myx0aGlzLmRlcHRoVGVzdD0hMCx0aGlzLmRlcHRoV3JpdGU9ITAsdGhpcy5zdGVuY2lsV3JpdGVNYXNrPTI1NSx0aGlzLnN0ZW5jaWxGdW5jPTUxOSx0aGlzLnN0ZW5jaWxSZWY9MCx0aGlzLnN0ZW5jaWxGdW5jTWFzaz0yNTUsdGhpcy5zdGVuY2lsRmFpbD1aMnQsdGhpcy5zdGVuY2lsWkZhaWw9WjJ0LHRoaXMuc3RlbmNpbFpQYXNzPVoydCx0aGlzLnN0ZW5jaWxXcml0ZT0hMSx0aGlzLmNsaXBwaW5nUGxhbmVzPW51bGwsdGhpcy5jbGlwSW50ZXJzZWN0aW9uPSExLHRoaXMuY2xpcFNoYWRvd3M9ITEsdGhpcy5zaGFkb3dTaWRlPW51bGwsdGhpcy5jb2xvcldyaXRlPSEwLHRoaXMucHJlY2lzaW9uPW51bGwsdGhpcy5wb2x5Z29uT2Zmc2V0PSExLHRoaXMucG9seWdvbk9mZnNldEZhY3Rvcj0wLHRoaXMucG9seWdvbk9mZnNldFVuaXRzPTAsdGhpcy5kaXRoZXJpbmc9ITEsdGhpcy5hbHBoYVRlc3Q9MCx0aGlzLmFscGhhVG9Db3ZlcmFnZT0hMSx0aGlzLnByZW11bHRpcGxpZWRBbHBoYT0hMSx0aGlzLnZpc2libGU9ITAsdGhpcy50b25lTWFwcGVkPSEwLHRoaXMudXNlckRhdGE9e30sdGhpcy52ZXJzaW9uPTB9b25CdWlsZCgpe31vbkJlZm9yZUNvbXBpbGUoKXt9Y3VzdG9tUHJvZ3JhbUNhY2hlS2V5KCl7cmV0dXJuIHRoaXMub25CZWZvcmVDb21waWxlLnRvU3RyaW5nKCl9c2V0VmFsdWVzKHQpe2lmKHZvaWQgMCE9PXQpZm9yKGNvbnN0IGUgaW4gdCl7Y29uc3Qgbj10W2VdO2lmKHZvaWQgMD09PW4pe2NvbnNvbGUud2FybigiVEhSRUUuTWF0ZXJpYWw6ICciK2UrIicgcGFyYW1ldGVyIGlzIHVuZGVmaW5lZC4iKTtjb250aW51ZX1pZigic2hhZGluZyI9PT1lKXtjb25zb2xlLndhcm4oIlRIUkVFLiIrdGhpcy50eXBlKyI6IC5zaGFkaW5nIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSB0aGUgYm9vbGVhbiAuZmxhdFNoYWRpbmcgaW5zdGVhZC4iKSx0aGlzLmZsYXRTaGFkaW5nPTE9PT1uO2NvbnRpbnVlfWNvbnN0IGk9dGhpc1tlXTt2b2lkIDAhPT1pP2kmJmkuaXNDb2xvcj9pLnNldChuKTppJiZpLmlzVmVjdG9yMyYmbiYmbi5pc1ZlY3RvcjM/aS5jb3B5KG4pOnRoaXNbZV09bjpjb25zb2xlLndhcm4oIlRIUkVFLiIrdGhpcy50eXBlKyI6ICciK2UrIicgaXMgbm90IGEgcHJvcGVydHkgb2YgdGhpcyBtYXRlcmlhbC4iKX19dG9KU09OKHQpe2NvbnN0IGU9dm9pZCAwPT09dHx8InN0cmluZyI9PXR5cGVvZiB0O2UmJih0PXt0ZXh0dXJlczp7fSxpbWFnZXM6e319KTtjb25zdCBuPXttZXRhZGF0YTp7dmVyc2lvbjo0LjUsdHlwZToiTWF0ZXJpYWwiLGdlbmVyYXRvcjoiTWF0ZXJpYWwudG9KU09OIn19O2Z1bmN0aW9uIGkodCl7Y29uc3QgZT1bXTtmb3IoY29uc3QgbiBpbiB0KXtjb25zdCBpPXRbbl07ZGVsZXRlIGkubWV0YWRhdGEsZS5wdXNoKGkpfXJldHVybiBlfWlmKG4udXVpZD10aGlzLnV1aWQsbi50eXBlPXRoaXMudHlwZSwiIiE9PXRoaXMubmFtZSYmKG4ubmFtZT10aGlzLm5hbWUpLHRoaXMuY29sb3ImJnRoaXMuY29sb3IuaXNDb2xvciYmKG4uY29sb3I9dGhpcy5jb2xvci5nZXRIZXgoKSksdm9pZCAwIT09dGhpcy5yb3VnaG5lc3MmJihuLnJvdWdobmVzcz10aGlzLnJvdWdobmVzcyksdm9pZCAwIT09dGhpcy5tZXRhbG5lc3MmJihuLm1ldGFsbmVzcz10aGlzLm1ldGFsbmVzcyksdGhpcy5zaGVlbiYmdGhpcy5zaGVlbi5pc0NvbG9yJiYobi5zaGVlbj10aGlzLnNoZWVuLmdldEhleCgpKSx0aGlzLmVtaXNzaXZlJiZ0aGlzLmVtaXNzaXZlLmlzQ29sb3ImJihuLmVtaXNzaXZlPXRoaXMuZW1pc3NpdmUuZ2V0SGV4KCkpLHRoaXMuZW1pc3NpdmVJbnRlbnNpdHkmJjEhPT10aGlzLmVtaXNzaXZlSW50ZW5zaXR5JiYobi5lbWlzc2l2ZUludGVuc2l0eT10aGlzLmVtaXNzaXZlSW50ZW5zaXR5KSx0aGlzLnNwZWN1bGFyJiZ0aGlzLnNwZWN1bGFyLmlzQ29sb3ImJihuLnNwZWN1bGFyPXRoaXMuc3BlY3VsYXIuZ2V0SGV4KCkpLHZvaWQgMCE9PXRoaXMuc3BlY3VsYXJJbnRlbnNpdHkmJihuLnNwZWN1bGFySW50ZW5zaXR5PXRoaXMuc3BlY3VsYXJJbnRlbnNpdHkpLHRoaXMuc3BlY3VsYXJUaW50JiZ0aGlzLnNwZWN1bGFyVGludC5pc0NvbG9yJiYobi5zcGVjdWxhclRpbnQ9dGhpcy5zcGVjdWxhclRpbnQuZ2V0SGV4KCkpLHZvaWQgMCE9PXRoaXMuc2hpbmluZXNzJiYobi5zaGluaW5lc3M9dGhpcy5zaGluaW5lc3MpLHZvaWQgMCE9PXRoaXMuY2xlYXJjb2F0JiYobi5jbGVhcmNvYXQ9dGhpcy5jbGVhcmNvYXQpLHZvaWQgMCE9PXRoaXMuY2xlYXJjb2F0Um91Z2huZXNzJiYobi5jbGVhcmNvYXRSb3VnaG5lc3M9dGhpcy5jbGVhcmNvYXRSb3VnaG5lc3MpLHRoaXMuY2xlYXJjb2F0TWFwJiZ0aGlzLmNsZWFyY29hdE1hcC5pc1RleHR1cmUmJihuLmNsZWFyY29hdE1hcD10aGlzLmNsZWFyY29hdE1hcC50b0pTT04odCkudXVpZCksdGhpcy5jbGVhcmNvYXRSb3VnaG5lc3NNYXAmJnRoaXMuY2xlYXJjb2F0Um91Z2huZXNzTWFwLmlzVGV4dHVyZSYmKG4uY2xlYXJjb2F0Um91Z2huZXNzTWFwPXRoaXMuY2xlYXJjb2F0Um91Z2huZXNzTWFwLnRvSlNPTih0KS51dWlkKSx0aGlzLmNsZWFyY29hdE5vcm1hbE1hcCYmdGhpcy5jbGVhcmNvYXROb3JtYWxNYXAuaXNUZXh0dXJlJiYobi5jbGVhcmNvYXROb3JtYWxNYXA9dGhpcy5jbGVhcmNvYXROb3JtYWxNYXAudG9KU09OKHQpLnV1aWQsbi5jbGVhcmNvYXROb3JtYWxTY2FsZT10aGlzLmNsZWFyY29hdE5vcm1hbFNjYWxlLnRvQXJyYXkoKSksdGhpcy5tYXAmJnRoaXMubWFwLmlzVGV4dHVyZSYmKG4ubWFwPXRoaXMubWFwLnRvSlNPTih0KS51dWlkKSx0aGlzLm1hdGNhcCYmdGhpcy5tYXRjYXAuaXNUZXh0dXJlJiYobi5tYXRjYXA9dGhpcy5tYXRjYXAudG9KU09OKHQpLnV1aWQpLHRoaXMuYWxwaGFNYXAmJnRoaXMuYWxwaGFNYXAuaXNUZXh0dXJlJiYobi5hbHBoYU1hcD10aGlzLmFscGhhTWFwLnRvSlNPTih0KS51dWlkKSx0aGlzLmxpZ2h0TWFwJiZ0aGlzLmxpZ2h0TWFwLmlzVGV4dHVyZSYmKG4ubGlnaHRNYXA9dGhpcy5saWdodE1hcC50b0pTT04odCkudXVpZCxuLmxpZ2h0TWFwSW50ZW5zaXR5PXRoaXMubGlnaHRNYXBJbnRlbnNpdHkpLHRoaXMuYW9NYXAmJnRoaXMuYW9NYXAuaXNUZXh0dXJlJiYobi5hb01hcD10aGlzLmFvTWFwLnRvSlNPTih0KS51dWlkLG4uYW9NYXBJbnRlbnNpdHk9dGhpcy5hb01hcEludGVuc2l0eSksdGhpcy5idW1wTWFwJiZ0aGlzLmJ1bXBNYXAuaXNUZXh0dXJlJiYobi5idW1wTWFwPXRoaXMuYnVtcE1hcC50b0pTT04odCkudXVpZCxuLmJ1bXBTY2FsZT10aGlzLmJ1bXBTY2FsZSksdGhpcy5ub3JtYWxNYXAmJnRoaXMubm9ybWFsTWFwLmlzVGV4dHVyZSYmKG4ubm9ybWFsTWFwPXRoaXMubm9ybWFsTWFwLnRvSlNPTih0KS51dWlkLG4ubm9ybWFsTWFwVHlwZT10aGlzLm5vcm1hbE1hcFR5cGUsbi5ub3JtYWxTY2FsZT10aGlzLm5vcm1hbFNjYWxlLnRvQXJyYXkoKSksdGhpcy5kaXNwbGFjZW1lbnRNYXAmJnRoaXMuZGlzcGxhY2VtZW50TWFwLmlzVGV4dHVyZSYmKG4uZGlzcGxhY2VtZW50TWFwPXRoaXMuZGlzcGxhY2VtZW50TWFwLnRvSlNPTih0KS51dWlkLG4uZGlzcGxhY2VtZW50U2NhbGU9dGhpcy5kaXNwbGFjZW1lbnRTY2FsZSxuLmRpc3BsYWNlbWVudEJpYXM9dGhpcy5kaXNwbGFjZW1lbnRCaWFzKSx0aGlzLnJvdWdobmVzc01hcCYmdGhpcy5yb3VnaG5lc3NNYXAuaXNUZXh0dXJlJiYobi5yb3VnaG5lc3NNYXA9dGhpcy5yb3VnaG5lc3NNYXAudG9KU09OKHQpLnV1aWQpLHRoaXMubWV0YWxuZXNzTWFwJiZ0aGlzLm1ldGFsbmVzc01hcC5pc1RleHR1cmUmJihuLm1ldGFsbmVzc01hcD10aGlzLm1ldGFsbmVzc01hcC50b0pTT04odCkudXVpZCksdGhpcy5lbWlzc2l2ZU1hcCYmdGhpcy5lbWlzc2l2ZU1hcC5pc1RleHR1cmUmJihuLmVtaXNzaXZlTWFwPXRoaXMuZW1pc3NpdmVNYXAudG9KU09OKHQpLnV1aWQpLHRoaXMuc3BlY3VsYXJNYXAmJnRoaXMuc3BlY3VsYXJNYXAuaXNUZXh0dXJlJiYobi5zcGVjdWxhck1hcD10aGlzLnNwZWN1bGFyTWFwLnRvSlNPTih0KS51dWlkKSx0aGlzLnNwZWN1bGFySW50ZW5zaXR5TWFwJiZ0aGlzLnNwZWN1bGFySW50ZW5zaXR5TWFwLmlzVGV4dHVyZSYmKG4uc3BlY3VsYXJJbnRlbnNpdHlNYXA9dGhpcy5zcGVjdWxhckludGVuc2l0eU1hcC50b0pTT04odCkudXVpZCksdGhpcy5zcGVjdWxhclRpbnRNYXAmJnRoaXMuc3BlY3VsYXJUaW50TWFwLmlzVGV4dHVyZSYmKG4uc3BlY3VsYXJUaW50TWFwPXRoaXMuc3BlY3VsYXJUaW50TWFwLnRvSlNPTih0KS51dWlkKSx0aGlzLmVudk1hcCYmdGhpcy5lbnZNYXAuaXNUZXh0dXJlJiYobi5lbnZNYXA9dGhpcy5lbnZNYXAudG9KU09OKHQpLnV1aWQsdm9pZCAwIT09dGhpcy5jb21iaW5lJiYobi5jb21iaW5lPXRoaXMuY29tYmluZSkpLHZvaWQgMCE9PXRoaXMuZW52TWFwSW50ZW5zaXR5JiYobi5lbnZNYXBJbnRlbnNpdHk9dGhpcy5lbnZNYXBJbnRlbnNpdHkpLHZvaWQgMCE9PXRoaXMucmVmbGVjdGl2aXR5JiYobi5yZWZsZWN0aXZpdHk9dGhpcy5yZWZsZWN0aXZpdHkpLHZvaWQgMCE9PXRoaXMucmVmcmFjdGlvblJhdGlvJiYobi5yZWZyYWN0aW9uUmF0aW89dGhpcy5yZWZyYWN0aW9uUmF0aW8pLHRoaXMuZ3JhZGllbnRNYXAmJnRoaXMuZ3JhZGllbnRNYXAuaXNUZXh0dXJlJiYobi5ncmFkaWVudE1hcD10aGlzLmdyYWRpZW50TWFwLnRvSlNPTih0KS51dWlkKSx2b2lkIDAhPT10aGlzLnRyYW5zbWlzc2lvbiYmKG4udHJhbnNtaXNzaW9uPXRoaXMudHJhbnNtaXNzaW9uKSx0aGlzLnRyYW5zbWlzc2lvbk1hcCYmdGhpcy50cmFuc21pc3Npb25NYXAuaXNUZXh0dXJlJiYobi50cmFuc21pc3Npb25NYXA9dGhpcy50cmFuc21pc3Npb25NYXAudG9KU09OKHQpLnV1aWQpLHZvaWQgMCE9PXRoaXMudGhpY2tuZXNzJiYobi50aGlja25lc3M9dGhpcy50aGlja25lc3MpLHRoaXMudGhpY2tuZXNzTWFwJiZ0aGlzLnRoaWNrbmVzc01hcC5pc1RleHR1cmUmJihuLnRoaWNrbmVzc01hcD10aGlzLnRoaWNrbmVzc01hcC50b0pTT04odCkudXVpZCksdm9pZCAwIT09dGhpcy5hdHRlbnVhdGlvbkRpc3RhbmNlJiYobi5hdHRlbnVhdGlvbkRpc3RhbmNlPXRoaXMuYXR0ZW51YXRpb25EaXN0YW5jZSksdm9pZCAwIT09dGhpcy5hdHRlbnVhdGlvblRpbnQmJihuLmF0dGVudWF0aW9uVGludD10aGlzLmF0dGVudWF0aW9uVGludC5nZXRIZXgoKSksdm9pZCAwIT09dGhpcy5zaXplJiYobi5zaXplPXRoaXMuc2l6ZSksbnVsbCE9PXRoaXMuc2hhZG93U2lkZSYmKG4uc2hhZG93U2lkZT10aGlzLnNoYWRvd1NpZGUpLHZvaWQgMCE9PXRoaXMuc2l6ZUF0dGVudWF0aW9uJiYobi5zaXplQXR0ZW51YXRpb249dGhpcy5zaXplQXR0ZW51YXRpb24pLDEhPT10aGlzLmJsZW5kaW5nJiYobi5ibGVuZGluZz10aGlzLmJsZW5kaW5nKSwwIT09dGhpcy5zaWRlJiYobi5zaWRlPXRoaXMuc2lkZSksdGhpcy52ZXJ0ZXhDb2xvcnMmJihuLnZlcnRleENvbG9ycz0hMCksdGhpcy5vcGFjaXR5PDEmJihuLm9wYWNpdHk9dGhpcy5vcGFjaXR5KSwhMD09PXRoaXMudHJhbnNwYXJlbnQmJihuLnRyYW5zcGFyZW50PXRoaXMudHJhbnNwYXJlbnQpLG4uZGVwdGhGdW5jPXRoaXMuZGVwdGhGdW5jLG4uZGVwdGhUZXN0PXRoaXMuZGVwdGhUZXN0LG4uZGVwdGhXcml0ZT10aGlzLmRlcHRoV3JpdGUsbi5jb2xvcldyaXRlPXRoaXMuY29sb3JXcml0ZSxuLnN0ZW5jaWxXcml0ZT10aGlzLnN0ZW5jaWxXcml0ZSxuLnN0ZW5jaWxXcml0ZU1hc2s9dGhpcy5zdGVuY2lsV3JpdGVNYXNrLG4uc3RlbmNpbEZ1bmM9dGhpcy5zdGVuY2lsRnVuYyxuLnN0ZW5jaWxSZWY9dGhpcy5zdGVuY2lsUmVmLG4uc3RlbmNpbEZ1bmNNYXNrPXRoaXMuc3RlbmNpbEZ1bmNNYXNrLG4uc3RlbmNpbEZhaWw9dGhpcy5zdGVuY2lsRmFpbCxuLnN0ZW5jaWxaRmFpbD10aGlzLnN0ZW5jaWxaRmFpbCxuLnN0ZW5jaWxaUGFzcz10aGlzLnN0ZW5jaWxaUGFzcyx0aGlzLnJvdGF0aW9uJiYwIT09dGhpcy5yb3RhdGlvbiYmKG4ucm90YXRpb249dGhpcy5yb3RhdGlvbiksITA9PT10aGlzLnBvbHlnb25PZmZzZXQmJihuLnBvbHlnb25PZmZzZXQ9ITApLDAhPT10aGlzLnBvbHlnb25PZmZzZXRGYWN0b3ImJihuLnBvbHlnb25PZmZzZXRGYWN0b3I9dGhpcy5wb2x5Z29uT2Zmc2V0RmFjdG9yKSwwIT09dGhpcy5wb2x5Z29uT2Zmc2V0VW5pdHMmJihuLnBvbHlnb25PZmZzZXRVbml0cz10aGlzLnBvbHlnb25PZmZzZXRVbml0cyksdGhpcy5saW5ld2lkdGgmJjEhPT10aGlzLmxpbmV3aWR0aCYmKG4ubGluZXdpZHRoPXRoaXMubGluZXdpZHRoKSx2b2lkIDAhPT10aGlzLmRhc2hTaXplJiYobi5kYXNoU2l6ZT10aGlzLmRhc2hTaXplKSx2b2lkIDAhPT10aGlzLmdhcFNpemUmJihuLmdhcFNpemU9dGhpcy5nYXBTaXplKSx2b2lkIDAhPT10aGlzLnNjYWxlJiYobi5zY2FsZT10aGlzLnNjYWxlKSwhMD09PXRoaXMuZGl0aGVyaW5nJiYobi5kaXRoZXJpbmc9ITApLHRoaXMuYWxwaGFUZXN0PjAmJihuLmFscGhhVGVzdD10aGlzLmFscGhhVGVzdCksITA9PT10aGlzLmFscGhhVG9Db3ZlcmFnZSYmKG4uYWxwaGFUb0NvdmVyYWdlPXRoaXMuYWxwaGFUb0NvdmVyYWdlKSwhMD09PXRoaXMucHJlbXVsdGlwbGllZEFscGhhJiYobi5wcmVtdWx0aXBsaWVkQWxwaGE9dGhpcy5wcmVtdWx0aXBsaWVkQWxwaGEpLCEwPT09dGhpcy53aXJlZnJhbWUmJihuLndpcmVmcmFtZT10aGlzLndpcmVmcmFtZSksdGhpcy53aXJlZnJhbWVMaW5ld2lkdGg+MSYmKG4ud2lyZWZyYW1lTGluZXdpZHRoPXRoaXMud2lyZWZyYW1lTGluZXdpZHRoKSwicm91bmQiIT09dGhpcy53aXJlZnJhbWVMaW5lY2FwJiYobi53aXJlZnJhbWVMaW5lY2FwPXRoaXMud2lyZWZyYW1lTGluZWNhcCksInJvdW5kIiE9PXRoaXMud2lyZWZyYW1lTGluZWpvaW4mJihuLndpcmVmcmFtZUxpbmVqb2luPXRoaXMud2lyZWZyYW1lTGluZWpvaW4pLCEwPT09dGhpcy5mbGF0U2hhZGluZyYmKG4uZmxhdFNoYWRpbmc9dGhpcy5mbGF0U2hhZGluZyksITE9PT10aGlzLnZpc2libGUmJihuLnZpc2libGU9ITEpLCExPT09dGhpcy50b25lTWFwcGVkJiYobi50b25lTWFwcGVkPSExKSwie30iIT09SlNPTi5zdHJpbmdpZnkodGhpcy51c2VyRGF0YSkmJihuLnVzZXJEYXRhPXRoaXMudXNlckRhdGEpLGUpe2NvbnN0IGU9aSh0LnRleHR1cmVzKSxyPWkodC5pbWFnZXMpO2UubGVuZ3RoPjAmJihuLnRleHR1cmVzPWUpLHIubGVuZ3RoPjAmJihuLmltYWdlcz1yKX1yZXR1cm4gbn1jbG9uZSgpe3JldHVybihuZXcgdGhpcy5jb25zdHJ1Y3RvcikuY29weSh0aGlzKX1jb3B5KHQpe3RoaXMubmFtZT10Lm5hbWUsdGhpcy5mb2c9dC5mb2csdGhpcy5ibGVuZGluZz10LmJsZW5kaW5nLHRoaXMuc2lkZT10LnNpZGUsdGhpcy52ZXJ0ZXhDb2xvcnM9dC52ZXJ0ZXhDb2xvcnMsdGhpcy5vcGFjaXR5PXQub3BhY2l0eSx0aGlzLnRyYW5zcGFyZW50PXQudHJhbnNwYXJlbnQsdGhpcy5ibGVuZFNyYz10LmJsZW5kU3JjLHRoaXMuYmxlbmREc3Q9dC5ibGVuZERzdCx0aGlzLmJsZW5kRXF1YXRpb249dC5ibGVuZEVxdWF0aW9uLHRoaXMuYmxlbmRTcmNBbHBoYT10LmJsZW5kU3JjQWxwaGEsdGhpcy5ibGVuZERzdEFscGhhPXQuYmxlbmREc3RBbHBoYSx0aGlzLmJsZW5kRXF1YXRpb25BbHBoYT10LmJsZW5kRXF1YXRpb25BbHBoYSx0aGlzLmRlcHRoRnVuYz10LmRlcHRoRnVuYyx0aGlzLmRlcHRoVGVzdD10LmRlcHRoVGVzdCx0aGlzLmRlcHRoV3JpdGU9dC5kZXB0aFdyaXRlLHRoaXMuc3RlbmNpbFdyaXRlTWFzaz10LnN0ZW5jaWxXcml0ZU1hc2ssdGhpcy5zdGVuY2lsRnVuYz10LnN0ZW5jaWxGdW5jLHRoaXMuc3RlbmNpbFJlZj10LnN0ZW5jaWxSZWYsdGhpcy5zdGVuY2lsRnVuY01hc2s9dC5zdGVuY2lsRnVuY01hc2ssdGhpcy5zdGVuY2lsRmFpbD10LnN0ZW5jaWxGYWlsLHRoaXMuc3RlbmNpbFpGYWlsPXQuc3RlbmNpbFpGYWlsLHRoaXMuc3RlbmNpbFpQYXNzPXQuc3RlbmNpbFpQYXNzLHRoaXMuc3RlbmNpbFdyaXRlPXQuc3RlbmNpbFdyaXRlO2NvbnN0IGU9dC5jbGlwcGluZ1BsYW5lcztsZXQgbj1udWxsO2lmKG51bGwhPT1lKXtjb25zdCB0PWUubGVuZ3RoO249bmV3IEFycmF5KHQpO2ZvcihsZXQgaT0wO2khPT10OysraSluW2ldPWVbaV0uY2xvbmUoKX1yZXR1cm4gdGhpcy5jbGlwcGluZ1BsYW5lcz1uLHRoaXMuY2xpcEludGVyc2VjdGlvbj10LmNsaXBJbnRlcnNlY3Rpb24sdGhpcy5jbGlwU2hhZG93cz10LmNsaXBTaGFkb3dzLHRoaXMuc2hhZG93U2lkZT10LnNoYWRvd1NpZGUsdGhpcy5jb2xvcldyaXRlPXQuY29sb3JXcml0ZSx0aGlzLnByZWNpc2lvbj10LnByZWNpc2lvbix0aGlzLnBvbHlnb25PZmZzZXQ9dC5wb2x5Z29uT2Zmc2V0LHRoaXMucG9seWdvbk9mZnNldEZhY3Rvcj10LnBvbHlnb25PZmZzZXRGYWN0b3IsdGhpcy5wb2x5Z29uT2Zmc2V0VW5pdHM9dC5wb2x5Z29uT2Zmc2V0VW5pdHMsdGhpcy5kaXRoZXJpbmc9dC5kaXRoZXJpbmcsdGhpcy5hbHBoYVRlc3Q9dC5hbHBoYVRlc3QsdGhpcy5hbHBoYVRvQ292ZXJhZ2U9dC5hbHBoYVRvQ292ZXJhZ2UsdGhpcy5wcmVtdWx0aXBsaWVkQWxwaGE9dC5wcmVtdWx0aXBsaWVkQWxwaGEsdGhpcy52aXNpYmxlPXQudmlzaWJsZSx0aGlzLnRvbmVNYXBwZWQ9dC50b25lTWFwcGVkLHRoaXMudXNlckRhdGE9SlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0LnVzZXJEYXRhKSksdGhpc31kaXNwb3NlKCl7dGhpcy5kaXNwYXRjaEV2ZW50KHt0eXBlOiJkaXNwb3NlIn0pfXNldCBuZWVkc1VwZGF0ZSh0KXshMD09PXQmJnRoaXMudmVyc2lvbisrfX10NHQucHJvdG90eXBlLmlzTWF0ZXJpYWw9ITA7Y29uc3QgZTR0PXthbGljZWJsdWU6MTU3OTIzODMsYW50aXF1ZXdoaXRlOjE2NDQ0Mzc1LGFxdWE6NjU1MzUsYXF1YW1hcmluZTo4Mzg4NTY0LGF6dXJlOjE1Nzk0MTc1LGJlaWdlOjE2MTE5MjYwLGJpc3F1ZToxNjc3MDI0NCxibGFjazowLGJsYW5jaGVkYWxtb25kOjE2NzcyMDQ1LGJsdWU6MjU1LGJsdWV2aW9sZXQ6OTA1NTIwMixicm93bjoxMDgyNDIzNCxidXJseXdvb2Q6MTQ1OTYyMzEsY2FkZXRibHVlOjYyNjY1MjgsY2hhcnRyZXVzZTo4Mzg4MzUyLGNob2NvbGF0ZToxMzc4OTQ3MCxjb3JhbDoxNjc0NDI3Mixjb3JuZmxvd2VyYmx1ZTo2NTkxOTgxLGNvcm5zaWxrOjE2Nzc1Mzg4LGNyaW1zb246MTQ0MjMxMDAsY3lhbjo2NTUzNSxkYXJrYmx1ZToxMzksZGFya2N5YW46MzU3MjMsZGFya2dvbGRlbnJvZDoxMjA5MjkzOSxkYXJrZ3JheToxMTExOTAxNyxkYXJrZ3JlZW46MjU2MDAsZGFya2dyZXk6MTExMTkwMTcsZGFya2toYWtpOjEyNDMzMjU5LGRhcmttYWdlbnRhOjkxMDk2NDMsZGFya29saXZlZ3JlZW46NTU5Nzk5OSxkYXJrb3JhbmdlOjE2NzQ3NTIwLGRhcmtvcmNoaWQ6MTAwNDAwMTIsZGFya3JlZDo5MTA5NTA0LGRhcmtzYWxtb246MTUzMDg0MTAsZGFya3NlYWdyZWVuOjk0MTk5MTksZGFya3NsYXRlYmx1ZTo0NzM0MzQ3LGRhcmtzbGF0ZWdyYXk6MzEwMDQ5NSxkYXJrc2xhdGVncmV5OjMxMDA0OTUsZGFya3R1cnF1b2lzZTo1Mjk0NSxkYXJrdmlvbGV0Ojk2OTk1MzksZGVlcHBpbms6MTY3MTY5NDcsZGVlcHNreWJsdWU6NDkxNTEsZGltZ3JheTo2OTA4MjY1LGRpbWdyZXk6NjkwODI2NSxkb2RnZXJibHVlOjIwMDMxOTksZmlyZWJyaWNrOjExNjc0MTQ2LGZsb3JhbHdoaXRlOjE2Nzc1OTIwLGZvcmVzdGdyZWVuOjIyNjM4NDIsZnVjaHNpYToxNjcxMTkzNSxnYWluc2Jvcm86MTQ0NzQ0NjAsZ2hvc3R3aGl0ZToxNjMxNjY3MSxnb2xkOjE2NzY2NzIwLGdvbGRlbnJvZDoxNDMyOTEyMCxncmF5Ojg0MjE1MDQsZ3JlZW46MzI3NjgsZ3JlZW55ZWxsb3c6MTE0MDMwNTUsZ3JleTo4NDIxNTA0LGhvbmV5ZGV3OjE1Nzk0MTYwLGhvdHBpbms6MTY3Mzg3NDAsaW5kaWFucmVkOjEzNDU4NTI0LGluZGlnbzo0OTE1MzMwLGl2b3J5OjE2Nzc3MjAwLGtoYWtpOjE1Nzg3NjYwLGxhdmVuZGVyOjE1MTMyNDEwLGxhdmVuZGVyYmx1c2g6MTY3NzMzNjUsbGF3bmdyZWVuOjgxOTA5NzYsbGVtb25jaGlmZm9uOjE2Nzc1ODg1LGxpZ2h0Ymx1ZToxMTM5MzI1NCxsaWdodGNvcmFsOjE1NzYxNTM2LGxpZ2h0Y3lhbjoxNDc0NTU5OSxsaWdodGdvbGRlbnJvZHllbGxvdzoxNjQ0ODIxMCxsaWdodGdyYXk6MTM4ODIzMjMsbGlnaHRncmVlbjo5NDk4MjU2LGxpZ2h0Z3JleToxMzg4MjMyMyxsaWdodHBpbms6MTY3NTg0NjUsbGlnaHRzYWxtb246MTY3NTI3NjIsbGlnaHRzZWFncmVlbjoyMTQyODkwLGxpZ2h0c2t5Ymx1ZTo4OTAwMzQ2LGxpZ2h0c2xhdGVncmF5Ojc4MzM3NTMsbGlnaHRzbGF0ZWdyZXk6NzgzMzc1MyxsaWdodHN0ZWVsYmx1ZToxMTU4NDczNCxsaWdodHllbGxvdzoxNjc3NzE4NCxsaW1lOjY1MjgwLGxpbWVncmVlbjozMzI5MzMwLGxpbmVuOjE2NDQ1NjcwLG1hZ2VudGE6MTY3MTE5MzUsbWFyb29uOjgzODg2MDgsbWVkaXVtYXF1YW1hcmluZTo2NzM3MzIyLG1lZGl1bWJsdWU6MjA1LG1lZGl1bW9yY2hpZDoxMjIxMTY2NyxtZWRpdW1wdXJwbGU6OTY2MjY4MyxtZWRpdW1zZWFncmVlbjozOTc4MDk3LG1lZGl1bXNsYXRlYmx1ZTo4MDg3NzkwLG1lZGl1bXNwcmluZ2dyZWVuOjY0MTU0LG1lZGl1bXR1cnF1b2lzZTo0NzcyMzAwLG1lZGl1bXZpb2xldHJlZDoxMzA0NzE3MyxtaWRuaWdodGJsdWU6MTY0NDkxMixtaW50Y3JlYW06MTYxMjE4NTAsbWlzdHlyb3NlOjE2NzcwMjczLG1vY2Nhc2luOjE2NzcwMjI5LG5hdmFqb3doaXRlOjE2NzY4Njg1LG5hdnk6MTI4LG9sZGxhY2U6MTY2NDM1NTgsb2xpdmU6ODQyMTM3NixvbGl2ZWRyYWI6NzA0ODczOSxvcmFuZ2U6MTY3NTM5MjAsb3JhbmdlcmVkOjE2NzI5MzQ0LG9yY2hpZDoxNDMxNTczNCxwYWxlZ29sZGVucm9kOjE1NjU3MTMwLHBhbGVncmVlbjoxMDAyNTg4MCxwYWxldHVycXVvaXNlOjExNTI5OTY2LHBhbGV2aW9sZXRyZWQ6MTQzODEyMDMscGFwYXlhd2hpcDoxNjc3MzA3NyxwZWFjaHB1ZmY6MTY3Njc2NzMscGVydToxMzQ2ODk5MSxwaW5rOjE2NzYxMDM1LHBsdW06MTQ1MjQ2MzcscG93ZGVyYmx1ZToxMTU5MTkxMCxwdXJwbGU6ODM4ODczNixyZWJlY2NhcHVycGxlOjY2OTc4ODEscmVkOjE2NzExNjgwLHJvc3licm93bjoxMjM1NzUxOSxyb3lhbGJsdWU6NDI4Njk0NSxzYWRkbGVicm93bjo5MTI3MTg3LHNhbG1vbjoxNjQxNjg4MixzYW5keWJyb3duOjE2MDMyODY0LHNlYWdyZWVuOjMwNTAzMjcsc2Vhc2hlbGw6MTY3NzQ2Mzgsc2llbm5hOjEwNTA2Nzk3LHNpbHZlcjoxMjYzMjI1Nixza3libHVlOjg5MDAzMzEsc2xhdGVibHVlOjY5NzAwNjEsc2xhdGVncmF5OjczNzI5NDQsc2xhdGVncmV5OjczNzI5NDQsc25vdzoxNjc3NTkzMCxzcHJpbmdncmVlbjo2NTQwNyxzdGVlbGJsdWU6NDYyMDk4MCx0YW46MTM4MDg3ODAsdGVhbDozMjg5Nix0aGlzdGxlOjE0MjA0ODg4LHRvbWF0bzoxNjczNzA5NSx0dXJxdW9pc2U6NDI1MTg1Nix2aW9sZXQ6MTU2MzEwODYsd2hlYXQ6MTYxMTMzMzEsd2hpdGU6MTY3NzcyMTUsd2hpdGVzbW9rZToxNjExOTI4NSx5ZWxsb3c6MTY3NzY5NjAseWVsbG93Z3JlZW46MTAxNDUwNzR9LG40dD17aDowLHM6MCxsOjB9LGk0dD17aDowLHM6MCxsOjB9O2Z1bmN0aW9uIHI0dCh0LGUsbil7cmV0dXJuIG48MCYmKG4rPTEpLG4+MSYmKG4tPTEpLG48MS82P3QrNiooZS10KSpuOm48LjU/ZTpuPDIvMz90KzYqKGUtdCkqKDIvMy1uKTp0fWZ1bmN0aW9uIG80dCh0KXtyZXR1cm4gdDwuMDQwNDU/LjA3NzM5OTM4MDgqdDpNYXRoLnBvdyguOTQ3ODY3Mjk4Nip0Ky4wNTIxMzI3MDE0LDIuNCl9ZnVuY3Rpb24gYTR0KHQpe3JldHVybiB0PC4wMDMxMzA4PzEyLjkyKnQ6MS4wNTUqTWF0aC5wb3codCwuNDE2NjYpLS4wNTV9Y2xhc3MgczR0e2NvbnN0cnVjdG9yKHQsZSxuKXtyZXR1cm4gdm9pZCAwPT09ZSYmdm9pZCAwPT09bj90aGlzLnNldCh0KTp0aGlzLnNldFJHQih0LGUsbil9c2V0KHQpe3JldHVybiB0JiZ0LmlzQ29sb3I/dGhpcy5jb3B5KHQpOiJudW1iZXIiPT10eXBlb2YgdD90aGlzLnNldEhleCh0KToic3RyaW5nIj09dHlwZW9mIHQmJnRoaXMuc2V0U3R5bGUodCksdGhpc31zZXRTY2FsYXIodCl7cmV0dXJuIHRoaXMucj10LHRoaXMuZz10LHRoaXMuYj10LHRoaXN9c2V0SGV4KHQpe3JldHVybiB0PU1hdGguZmxvb3IodCksdGhpcy5yPSh0Pj4xNiYyNTUpLzI1NSx0aGlzLmc9KHQ+PjgmMjU1KS8yNTUsdGhpcy5iPSgyNTUmdCkvMjU1LHRoaXN9c2V0UkdCKHQsZSxuKXtyZXR1cm4gdGhpcy5yPXQsdGhpcy5nPWUsdGhpcy5iPW4sdGhpc31zZXRIU0wodCxlLG4pe2lmKHQ9bDV0KHQsMSksZT1zNXQoZSwwLDEpLG49czV0KG4sMCwxKSwwPT09ZSl0aGlzLnI9dGhpcy5nPXRoaXMuYj1uO2Vsc2V7Y29uc3QgaT1uPD0uNT9uKigxK2UpOm4rZS1uKmUscj0yKm4taTt0aGlzLnI9cjR0KHIsaSx0KzEvMyksdGhpcy5nPXI0dChyLGksdCksdGhpcy5iPXI0dChyLGksdC0xLzMpfXJldHVybiB0aGlzfXNldFN0eWxlKHQpe2Z1bmN0aW9uIGUoZSl7dm9pZCAwIT09ZSYmcGFyc2VGbG9hdChlKTwxJiZjb25zb2xlLndhcm4oIlRIUkVFLkNvbG9yOiBBbHBoYSBjb21wb25lbnQgb2YgIit0KyIgd2lsbCBiZSBpZ25vcmVkLiIpfWxldCBuO2lmKG49L14oKD86cmdifGhzbClhPylcKChbXlwpXSopXCkvLmV4ZWModCkpe2xldCB0O2NvbnN0IGk9blsyXTtzd2l0Y2goblsxXSl7Y2FzZSJyZ2IiOmNhc2UicmdiYSI6aWYodD0vXlxzKihcZCspXHMqLFxzKihcZCspXHMqLFxzKihcZCspXHMqKD86LFxzKihcZCpcLj9cZCspXHMqKT8kLy5leGVjKGkpKXJldHVybiB0aGlzLnI9TWF0aC5taW4oMjU1LHBhcnNlSW50KHRbMV0sMTApKS8yNTUsdGhpcy5nPU1hdGgubWluKDI1NSxwYXJzZUludCh0WzJdLDEwKSkvMjU1LHRoaXMuYj1NYXRoLm1pbigyNTUscGFyc2VJbnQodFszXSwxMCkpLzI1NSxlKHRbNF0pLHRoaXM7aWYodD0vXlxzKihcZCspXCVccyosXHMqKFxkKylcJVxzKixccyooXGQrKVwlXHMqKD86LFxzKihcZCpcLj9cZCspXHMqKT8kLy5leGVjKGkpKXJldHVybiB0aGlzLnI9TWF0aC5taW4oMTAwLHBhcnNlSW50KHRbMV0sMTApKS8xMDAsdGhpcy5nPU1hdGgubWluKDEwMCxwYXJzZUludCh0WzJdLDEwKSkvMTAwLHRoaXMuYj1NYXRoLm1pbigxMDAscGFyc2VJbnQodFszXSwxMCkpLzEwMCxlKHRbNF0pLHRoaXM7YnJlYWs7Y2FzZSJoc2wiOmNhc2UiaHNsYSI6aWYodD0vXlxzKihcZCpcLj9cZCspXHMqLFxzKihcZCspXCVccyosXHMqKFxkKylcJVxzKig/OixccyooXGQqXC4/XGQrKVxzKik/JC8uZXhlYyhpKSl7Y29uc3Qgbj1wYXJzZUZsb2F0KHRbMV0pLzM2MCxpPXBhcnNlSW50KHRbMl0sMTApLzEwMCxyPXBhcnNlSW50KHRbM10sMTApLzEwMDtyZXR1cm4gZSh0WzRdKSx0aGlzLnNldEhTTChuLGkscil9fX1lbHNlIGlmKG49L15cIyhbQS1GYS1mXGRdKykkLy5leGVjKHQpKXtjb25zdCB0PW5bMV0sZT10Lmxlbmd0aDtpZigzPT09ZSlyZXR1cm4gdGhpcy5yPXBhcnNlSW50KHQuY2hhckF0KDApK3QuY2hhckF0KDApLDE2KS8yNTUsdGhpcy5nPXBhcnNlSW50KHQuY2hhckF0KDEpK3QuY2hhckF0KDEpLDE2KS8yNTUsdGhpcy5iPXBhcnNlSW50KHQuY2hhckF0KDIpK3QuY2hhckF0KDIpLDE2KS8yNTUsdGhpcztpZig2PT09ZSlyZXR1cm4gdGhpcy5yPXBhcnNlSW50KHQuY2hhckF0KDApK3QuY2hhckF0KDEpLDE2KS8yNTUsdGhpcy5nPXBhcnNlSW50KHQuY2hhckF0KDIpK3QuY2hhckF0KDMpLDE2KS8yNTUsdGhpcy5iPXBhcnNlSW50KHQuY2hhckF0KDQpK3QuY2hhckF0KDUpLDE2KS8yNTUsdGhpc31yZXR1cm4gdCYmdC5sZW5ndGg+MD90aGlzLnNldENvbG9yTmFtZSh0KTp0aGlzfXNldENvbG9yTmFtZSh0KXtjb25zdCBlPWU0dFt0LnRvTG93ZXJDYXNlKCldO3JldHVybiB2b2lkIDAhPT1lP3RoaXMuc2V0SGV4KGUpOmNvbnNvbGUud2FybigiVEhSRUUuQ29sb3I6IFVua25vd24gY29sb3IgIit0KSx0aGlzfWNsb25lKCl7cmV0dXJuIG5ldyB0aGlzLmNvbnN0cnVjdG9yKHRoaXMucix0aGlzLmcsdGhpcy5iKX1jb3B5KHQpe3JldHVybiB0aGlzLnI9dC5yLHRoaXMuZz10LmcsdGhpcy5iPXQuYix0aGlzfWNvcHlHYW1tYVRvTGluZWFyKHQsZT0yKXtyZXR1cm4gdGhpcy5yPU1hdGgucG93KHQucixlKSx0aGlzLmc9TWF0aC5wb3codC5nLGUpLHRoaXMuYj1NYXRoLnBvdyh0LmIsZSksdGhpc31jb3B5TGluZWFyVG9HYW1tYSh0LGU9Mil7Y29uc3Qgbj1lPjA/MS9lOjE7cmV0dXJuIHRoaXMucj1NYXRoLnBvdyh0LnIsbiksdGhpcy5nPU1hdGgucG93KHQuZyxuKSx0aGlzLmI9TWF0aC5wb3codC5iLG4pLHRoaXN9Y29udmVydEdhbW1hVG9MaW5lYXIodCl7cmV0dXJuIHRoaXMuY29weUdhbW1hVG9MaW5lYXIodGhpcyx0KSx0aGlzfWNvbnZlcnRMaW5lYXJUb0dhbW1hKHQpe3JldHVybiB0aGlzLmNvcHlMaW5lYXJUb0dhbW1hKHRoaXMsdCksdGhpc31jb3B5U1JHQlRvTGluZWFyKHQpe3JldHVybiB0aGlzLnI9bzR0KHQuciksdGhpcy5nPW80dCh0LmcpLHRoaXMuYj1vNHQodC5iKSx0aGlzfWNvcHlMaW5lYXJUb1NSR0IodCl7cmV0dXJuIHRoaXMucj1hNHQodC5yKSx0aGlzLmc9YTR0KHQuZyksdGhpcy5iPWE0dCh0LmIpLHRoaXN9Y29udmVydFNSR0JUb0xpbmVhcigpe3JldHVybiB0aGlzLmNvcHlTUkdCVG9MaW5lYXIodGhpcyksdGhpc31jb252ZXJ0TGluZWFyVG9TUkdCKCl7cmV0dXJuIHRoaXMuY29weUxpbmVhclRvU1JHQih0aGlzKSx0aGlzfWdldEhleCgpe3JldHVybiAyNTUqdGhpcy5yPDwxNl4yNTUqdGhpcy5nPDw4XjI1NSp0aGlzLmI8PDB9Z2V0SGV4U3RyaW5nKCl7cmV0dXJuKCIwMDAwMDAiK3RoaXMuZ2V0SGV4KCkudG9TdHJpbmcoMTYpKS5zbGljZSgtNil9Z2V0SFNMKHQpe2NvbnN0IGU9dGhpcy5yLG49dGhpcy5nLGk9dGhpcy5iLHI9TWF0aC5tYXgoZSxuLGkpLG89TWF0aC5taW4oZSxuLGkpO2xldCBhLHM7Y29uc3QgbD0obytyKS8yO2lmKG89PT1yKWE9MCxzPTA7ZWxzZXtjb25zdCB0PXItbztzd2l0Y2gocz1sPD0uNT90LyhyK28pOnQvKDItci1vKSxyKXtjYXNlIGU6YT0obi1pKS90KyhuPGk/NjowKTticmVhaztjYXNlIG46YT0oaS1lKS90KzI7YnJlYWs7Y2FzZSBpOmE9KGUtbikvdCs0fWEvPTZ9cmV0dXJuIHQuaD1hLHQucz1zLHQubD1sLHR9Z2V0U3R5bGUoKXtyZXR1cm4icmdiKCIrKDI1NSp0aGlzLnJ8MCkrIiwiKygyNTUqdGhpcy5nfDApKyIsIisoMjU1KnRoaXMuYnwwKSsiKSJ9b2Zmc2V0SFNMKHQsZSxuKXtyZXR1cm4gdGhpcy5nZXRIU0wobjR0KSxuNHQuaCs9dCxuNHQucys9ZSxuNHQubCs9bix0aGlzLnNldEhTTChuNHQuaCxuNHQucyxuNHQubCksdGhpc31hZGQodCl7cmV0dXJuIHRoaXMucis9dC5yLHRoaXMuZys9dC5nLHRoaXMuYis9dC5iLHRoaXN9YWRkQ29sb3JzKHQsZSl7cmV0dXJuIHRoaXMucj10LnIrZS5yLHRoaXMuZz10LmcrZS5nLHRoaXMuYj10LmIrZS5iLHRoaXN9YWRkU2NhbGFyKHQpe3JldHVybiB0aGlzLnIrPXQsdGhpcy5nKz10LHRoaXMuYis9dCx0aGlzfXN1Yih0KXtyZXR1cm4gdGhpcy5yPU1hdGgubWF4KDAsdGhpcy5yLXQuciksdGhpcy5nPU1hdGgubWF4KDAsdGhpcy5nLXQuZyksdGhpcy5iPU1hdGgubWF4KDAsdGhpcy5iLXQuYiksdGhpc31tdWx0aXBseSh0KXtyZXR1cm4gdGhpcy5yKj10LnIsdGhpcy5nKj10LmcsdGhpcy5iKj10LmIsdGhpc31tdWx0aXBseVNjYWxhcih0KXtyZXR1cm4gdGhpcy5yKj10LHRoaXMuZyo9dCx0aGlzLmIqPXQsdGhpc31sZXJwKHQsZSl7cmV0dXJuIHRoaXMucis9KHQuci10aGlzLnIpKmUsdGhpcy5nKz0odC5nLXRoaXMuZykqZSx0aGlzLmIrPSh0LmItdGhpcy5iKSplLHRoaXN9bGVycENvbG9ycyh0LGUsbil7cmV0dXJuIHRoaXMucj10LnIrKGUuci10LnIpKm4sdGhpcy5nPXQuZysoZS5nLXQuZykqbix0aGlzLmI9dC5iKyhlLmItdC5iKSpuLHRoaXN9bGVycEhTTCh0LGUpe3RoaXMuZ2V0SFNMKG40dCksdC5nZXRIU0woaTR0KTtjb25zdCBuPWM1dChuNHQuaCxpNHQuaCxlKSxpPWM1dChuNHQucyxpNHQucyxlKSxyPWM1dChuNHQubCxpNHQubCxlKTtyZXR1cm4gdGhpcy5zZXRIU0wobixpLHIpLHRoaXN9ZXF1YWxzKHQpe3JldHVybiB0LnI9PT10aGlzLnImJnQuZz09PXRoaXMuZyYmdC5iPT09dGhpcy5ifWZyb21BcnJheSh0LGU9MCl7cmV0dXJuIHRoaXMucj10W2VdLHRoaXMuZz10W2UrMV0sdGhpcy5iPXRbZSsyXSx0aGlzfXRvQXJyYXkodD1bXSxlPTApe3JldHVybiB0W2VdPXRoaXMucix0W2UrMV09dGhpcy5nLHRbZSsyXT10aGlzLmIsdH1mcm9tQnVmZmVyQXR0cmlidXRlKHQsZSl7cmV0dXJuIHRoaXMucj10LmdldFgoZSksdGhpcy5nPXQuZ2V0WShlKSx0aGlzLmI9dC5nZXRaKGUpLCEwPT09dC5ub3JtYWxpemVkJiYodGhpcy5yLz0yNTUsdGhpcy5nLz0yNTUsdGhpcy5iLz0yNTUpLHRoaXN9dG9KU09OKCl7cmV0dXJuIHRoaXMuZ2V0SGV4KCl9fXM0dC5OQU1FUz1lNHQsczR0LnByb3RvdHlwZS5pc0NvbG9yPSEwLHM0dC5wcm90b3R5cGUucj0xLHM0dC5wcm90b3R5cGUuZz0xLHM0dC5wcm90b3R5cGUuYj0xO2NsYXNzIGw0dCBleHRlbmRzIHQ0dHtjb25zdHJ1Y3Rvcih0KXtzdXBlcigpLHRoaXMudHlwZT0iTWVzaEJhc2ljTWF0ZXJpYWwiLHRoaXMuY29sb3I9bmV3IHM0dCgxNjc3NzIxNSksdGhpcy5tYXA9bnVsbCx0aGlzLmxpZ2h0TWFwPW51bGwsdGhpcy5saWdodE1hcEludGVuc2l0eT0xLHRoaXMuYW9NYXA9bnVsbCx0aGlzLmFvTWFwSW50ZW5zaXR5PTEsdGhpcy5zcGVjdWxhck1hcD1udWxsLHRoaXMuYWxwaGFNYXA9bnVsbCx0aGlzLmVudk1hcD1udWxsLHRoaXMuY29tYmluZT0wLHRoaXMucmVmbGVjdGl2aXR5PTEsdGhpcy5yZWZyYWN0aW9uUmF0aW89Ljk4LHRoaXMud2lyZWZyYW1lPSExLHRoaXMud2lyZWZyYW1lTGluZXdpZHRoPTEsdGhpcy53aXJlZnJhbWVMaW5lY2FwPSJyb3VuZCIsdGhpcy53aXJlZnJhbWVMaW5lam9pbj0icm91bmQiLHRoaXMuc2V0VmFsdWVzKHQpfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5jb2xvci5jb3B5KHQuY29sb3IpLHRoaXMubWFwPXQubWFwLHRoaXMubGlnaHRNYXA9dC5saWdodE1hcCx0aGlzLmxpZ2h0TWFwSW50ZW5zaXR5PXQubGlnaHRNYXBJbnRlbnNpdHksdGhpcy5hb01hcD10LmFvTWFwLHRoaXMuYW9NYXBJbnRlbnNpdHk9dC5hb01hcEludGVuc2l0eSx0aGlzLnNwZWN1bGFyTWFwPXQuc3BlY3VsYXJNYXAsdGhpcy5hbHBoYU1hcD10LmFscGhhTWFwLHRoaXMuZW52TWFwPXQuZW52TWFwLHRoaXMuY29tYmluZT10LmNvbWJpbmUsdGhpcy5yZWZsZWN0aXZpdHk9dC5yZWZsZWN0aXZpdHksdGhpcy5yZWZyYWN0aW9uUmF0aW89dC5yZWZyYWN0aW9uUmF0aW8sdGhpcy53aXJlZnJhbWU9dC53aXJlZnJhbWUsdGhpcy53aXJlZnJhbWVMaW5ld2lkdGg9dC53aXJlZnJhbWVMaW5ld2lkdGgsdGhpcy53aXJlZnJhbWVMaW5lY2FwPXQud2lyZWZyYW1lTGluZWNhcCx0aGlzLndpcmVmcmFtZUxpbmVqb2luPXQud2lyZWZyYW1lTGluZWpvaW4sdGhpc319bDR0LnByb3RvdHlwZS5pc01lc2hCYXNpY01hdGVyaWFsPSEwO2NvbnN0IGM0dD1uZXcgSDV0LHU0dD1uZXcgQzV0O2NsYXNzIGg0dHtjb25zdHJ1Y3Rvcih0LGUsbil7aWYoQXJyYXkuaXNBcnJheSh0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJUSFJFRS5CdWZmZXJBdHRyaWJ1dGU6IGFycmF5IHNob3VsZCBiZSBhIFR5cGVkIEFycmF5LiIpO3RoaXMubmFtZT0iIix0aGlzLmFycmF5PXQsdGhpcy5pdGVtU2l6ZT1lLHRoaXMuY291bnQ9dm9pZCAwIT09dD90Lmxlbmd0aC9lOjAsdGhpcy5ub3JtYWxpemVkPSEwPT09bix0aGlzLnVzYWdlPUoydCx0aGlzLnVwZGF0ZVJhbmdlPXtvZmZzZXQ6MCxjb3VudDotMX0sdGhpcy52ZXJzaW9uPTB9b25VcGxvYWRDYWxsYmFjaygpe31zZXQgbmVlZHNVcGRhdGUodCl7ITA9PT10JiZ0aGlzLnZlcnNpb24rK31zZXRVc2FnZSh0KXtyZXR1cm4gdGhpcy51c2FnZT10LHRoaXN9Y29weSh0KXtyZXR1cm4gdGhpcy5uYW1lPXQubmFtZSx0aGlzLmFycmF5PW5ldyB0LmFycmF5LmNvbnN0cnVjdG9yKHQuYXJyYXkpLHRoaXMuaXRlbVNpemU9dC5pdGVtU2l6ZSx0aGlzLmNvdW50PXQuY291bnQsdGhpcy5ub3JtYWxpemVkPXQubm9ybWFsaXplZCx0aGlzLnVzYWdlPXQudXNhZ2UsdGhpc31jb3B5QXQodCxlLG4pe3QqPXRoaXMuaXRlbVNpemUsbio9ZS5pdGVtU2l6ZTtmb3IobGV0IGk9MCxyPXRoaXMuaXRlbVNpemU7aTxyO2krKyl0aGlzLmFycmF5W3QraV09ZS5hcnJheVtuK2ldO3JldHVybiB0aGlzfWNvcHlBcnJheSh0KXtyZXR1cm4gdGhpcy5hcnJheS5zZXQodCksdGhpc31jb3B5Q29sb3JzQXJyYXkodCl7Y29uc3QgZT10aGlzLmFycmF5O2xldCBuPTA7Zm9yKGxldCBpPTAscj10Lmxlbmd0aDtpPHI7aSsrKXtsZXQgcj10W2ldO3ZvaWQgMD09PXImJihjb25zb2xlLndhcm4oIlRIUkVFLkJ1ZmZlckF0dHJpYnV0ZS5jb3B5Q29sb3JzQXJyYXkoKTogY29sb3IgaXMgdW5kZWZpbmVkIixpKSxyPW5ldyBzNHQpLGVbbisrXT1yLnIsZVtuKytdPXIuZyxlW24rK109ci5ifXJldHVybiB0aGlzfWNvcHlWZWN0b3Iyc0FycmF5KHQpe2NvbnN0IGU9dGhpcy5hcnJheTtsZXQgbj0wO2ZvcihsZXQgaT0wLHI9dC5sZW5ndGg7aTxyO2krKyl7bGV0IHI9dFtpXTt2b2lkIDA9PT1yJiYoY29uc29sZS53YXJuKCJUSFJFRS5CdWZmZXJBdHRyaWJ1dGUuY29weVZlY3RvcjJzQXJyYXkoKTogdmVjdG9yIGlzIHVuZGVmaW5lZCIsaSkscj1uZXcgQzV0KSxlW24rK109ci54LGVbbisrXT1yLnl9cmV0dXJuIHRoaXN9Y29weVZlY3RvcjNzQXJyYXkodCl7Y29uc3QgZT10aGlzLmFycmF5O2xldCBuPTA7Zm9yKGxldCBpPTAscj10Lmxlbmd0aDtpPHI7aSsrKXtsZXQgcj10W2ldO3ZvaWQgMD09PXImJihjb25zb2xlLndhcm4oIlRIUkVFLkJ1ZmZlckF0dHJpYnV0ZS5jb3B5VmVjdG9yM3NBcnJheSgpOiB2ZWN0b3IgaXMgdW5kZWZpbmVkIixpKSxyPW5ldyBINXQpLGVbbisrXT1yLngsZVtuKytdPXIueSxlW24rK109ci56fXJldHVybiB0aGlzfWNvcHlWZWN0b3I0c0FycmF5KHQpe2NvbnN0IGU9dGhpcy5hcnJheTtsZXQgbj0wO2ZvcihsZXQgaT0wLHI9dC5sZW5ndGg7aTxyO2krKyl7bGV0IHI9dFtpXTt2b2lkIDA9PT1yJiYoY29uc29sZS53YXJuKCJUSFJFRS5CdWZmZXJBdHRyaWJ1dGUuY29weVZlY3RvcjRzQXJyYXkoKTogdmVjdG9yIGlzIHVuZGVmaW5lZCIsaSkscj1uZXcgUjV0KSxlW24rK109ci54LGVbbisrXT1yLnksZVtuKytdPXIueixlW24rK109ci53fXJldHVybiB0aGlzfWFwcGx5TWF0cml4Myh0KXtpZigyPT09dGhpcy5pdGVtU2l6ZSlmb3IobGV0IGU9MCxuPXRoaXMuY291bnQ7ZTxuO2UrKyl1NHQuZnJvbUJ1ZmZlckF0dHJpYnV0ZSh0aGlzLGUpLHU0dC5hcHBseU1hdHJpeDModCksdGhpcy5zZXRYWShlLHU0dC54LHU0dC55KTtlbHNlIGlmKDM9PT10aGlzLml0ZW1TaXplKWZvcihsZXQgZT0wLG49dGhpcy5jb3VudDtlPG47ZSsrKWM0dC5mcm9tQnVmZmVyQXR0cmlidXRlKHRoaXMsZSksYzR0LmFwcGx5TWF0cml4Myh0KSx0aGlzLnNldFhZWihlLGM0dC54LGM0dC55LGM0dC56KTtyZXR1cm4gdGhpc31hcHBseU1hdHJpeDQodCl7Zm9yKGxldCBlPTAsbj10aGlzLmNvdW50O2U8bjtlKyspYzR0Lng9dGhpcy5nZXRYKGUpLGM0dC55PXRoaXMuZ2V0WShlKSxjNHQuej10aGlzLmdldFooZSksYzR0LmFwcGx5TWF0cml4NCh0KSx0aGlzLnNldFhZWihlLGM0dC54LGM0dC55LGM0dC56KTtyZXR1cm4gdGhpc31hcHBseU5vcm1hbE1hdHJpeCh0KXtmb3IobGV0IGU9MCxuPXRoaXMuY291bnQ7ZTxuO2UrKyljNHQueD10aGlzLmdldFgoZSksYzR0Lnk9dGhpcy5nZXRZKGUpLGM0dC56PXRoaXMuZ2V0WihlKSxjNHQuYXBwbHlOb3JtYWxNYXRyaXgodCksdGhpcy5zZXRYWVooZSxjNHQueCxjNHQueSxjNHQueik7cmV0dXJuIHRoaXN9dHJhbnNmb3JtRGlyZWN0aW9uKHQpe2ZvcihsZXQgZT0wLG49dGhpcy5jb3VudDtlPG47ZSsrKWM0dC54PXRoaXMuZ2V0WChlKSxjNHQueT10aGlzLmdldFkoZSksYzR0Lno9dGhpcy5nZXRaKGUpLGM0dC50cmFuc2Zvcm1EaXJlY3Rpb24odCksdGhpcy5zZXRYWVooZSxjNHQueCxjNHQueSxjNHQueik7cmV0dXJuIHRoaXN9c2V0KHQsZT0wKXtyZXR1cm4gdGhpcy5hcnJheS5zZXQodCxlKSx0aGlzfWdldFgodCl7cmV0dXJuIHRoaXMuYXJyYXlbdCp0aGlzLml0ZW1TaXplXX1zZXRYKHQsZSl7cmV0dXJuIHRoaXMuYXJyYXlbdCp0aGlzLml0ZW1TaXplXT1lLHRoaXN9Z2V0WSh0KXtyZXR1cm4gdGhpcy5hcnJheVt0KnRoaXMuaXRlbVNpemUrMV19c2V0WSh0LGUpe3JldHVybiB0aGlzLmFycmF5W3QqdGhpcy5pdGVtU2l6ZSsxXT1lLHRoaXN9Z2V0Wih0KXtyZXR1cm4gdGhpcy5hcnJheVt0KnRoaXMuaXRlbVNpemUrMl19c2V0Wih0LGUpe3JldHVybiB0aGlzLmFycmF5W3QqdGhpcy5pdGVtU2l6ZSsyXT1lLHRoaXN9Z2V0Vyh0KXtyZXR1cm4gdGhpcy5hcnJheVt0KnRoaXMuaXRlbVNpemUrM119c2V0Vyh0LGUpe3JldHVybiB0aGlzLmFycmF5W3QqdGhpcy5pdGVtU2l6ZSszXT1lLHRoaXN9c2V0WFkodCxlLG4pe3JldHVybiB0aGlzLmFycmF5Wyh0Kj10aGlzLml0ZW1TaXplKSswXT1lLHRoaXMuYXJyYXlbdCsxXT1uLHRoaXN9c2V0WFlaKHQsZSxuLGkpe3JldHVybiB0aGlzLmFycmF5Wyh0Kj10aGlzLml0ZW1TaXplKSswXT1lLHRoaXMuYXJyYXlbdCsxXT1uLHRoaXMuYXJyYXlbdCsyXT1pLHRoaXN9c2V0WFlaVyh0LGUsbixpLHIpe3JldHVybiB0aGlzLmFycmF5Wyh0Kj10aGlzLml0ZW1TaXplKSswXT1lLHRoaXMuYXJyYXlbdCsxXT1uLHRoaXMuYXJyYXlbdCsyXT1pLHRoaXMuYXJyYXlbdCszXT1yLHRoaXN9b25VcGxvYWQodCl7cmV0dXJuIHRoaXMub25VcGxvYWRDYWxsYmFjaz10LHRoaXN9Y2xvbmUoKXtyZXR1cm4gbmV3IHRoaXMuY29uc3RydWN0b3IodGhpcy5hcnJheSx0aGlzLml0ZW1TaXplKS5jb3B5KHRoaXMpfXRvSlNPTigpe2NvbnN0IHQ9e2l0ZW1TaXplOnRoaXMuaXRlbVNpemUsdHlwZTp0aGlzLmFycmF5LmNvbnN0cnVjdG9yLm5hbWUsYXJyYXk6QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwodGhpcy5hcnJheSksbm9ybWFsaXplZDp0aGlzLm5vcm1hbGl6ZWR9O3JldHVybiIiIT09dGhpcy5uYW1lJiYodC5uYW1lPXRoaXMubmFtZSksdGhpcy51c2FnZSE9PUoydCYmKHQudXNhZ2U9dGhpcy51c2FnZSksMD09PXRoaXMudXBkYXRlUmFuZ2Uub2Zmc2V0JiYtMT09PXRoaXMudXBkYXRlUmFuZ2UuY291bnR8fCh0LnVwZGF0ZVJhbmdlPXRoaXMudXBkYXRlUmFuZ2UpLHR9fWg0dC5wcm90b3R5cGUuaXNCdWZmZXJBdHRyaWJ1dGU9ITA7Y2xhc3MgZDR0IGV4dGVuZHMgaDR0e2NvbnN0cnVjdG9yKHQsZSxuKXtzdXBlcihuZXcgSW50OEFycmF5KHQpLGUsbil9fWNsYXNzIHA0dCBleHRlbmRzIGg0dHtjb25zdHJ1Y3Rvcih0LGUsbil7c3VwZXIobmV3IFVpbnQ4QXJyYXkodCksZSxuKX19Y2xhc3MgZjR0IGV4dGVuZHMgaDR0e2NvbnN0cnVjdG9yKHQsZSxuKXtzdXBlcihuZXcgVWludDhDbGFtcGVkQXJyYXkodCksZSxuKX19Y2xhc3MgbTR0IGV4dGVuZHMgaDR0e2NvbnN0cnVjdG9yKHQsZSxuKXtzdXBlcihuZXcgSW50MTZBcnJheSh0KSxlLG4pfX1jbGFzcyBnNHQgZXh0ZW5kcyBoNHR7Y29uc3RydWN0b3IodCxlLG4pe3N1cGVyKG5ldyBVaW50MTZBcnJheSh0KSxlLG4pfX1jbGFzcyBfNHQgZXh0ZW5kcyBoNHR7Y29uc3RydWN0b3IodCxlLG4pe3N1cGVyKG5ldyBJbnQzMkFycmF5KHQpLGUsbil9fWNsYXNzIHk0dCBleHRlbmRzIGg0dHtjb25zdHJ1Y3Rvcih0LGUsbil7c3VwZXIobmV3IFVpbnQzMkFycmF5KHQpLGUsbil9fWNsYXNzIHY0dCBleHRlbmRzIGg0dHtjb25zdHJ1Y3Rvcih0LGUsbil7c3VwZXIobmV3IFVpbnQxNkFycmF5KHQpLGUsbil9fXY0dC5wcm90b3R5cGUuaXNGbG9hdDE2QnVmZmVyQXR0cmlidXRlPSEwO2NsYXNzIGI0dCBleHRlbmRzIGg0dHtjb25zdHJ1Y3Rvcih0LGUsbil7c3VwZXIobmV3IEZsb2F0MzJBcnJheSh0KSxlLG4pfX1jbGFzcyB4NHQgZXh0ZW5kcyBoNHR7Y29uc3RydWN0b3IodCxlLG4pe3N1cGVyKG5ldyBGbG9hdDY0QXJyYXkodCksZSxuKX19ZnVuY3Rpb24gdzR0KHQpe2lmKDA9PT10Lmxlbmd0aClyZXR1cm4tMS8wO2xldCBlPXRbMF07Zm9yKGxldCBuPTEsaT10Lmxlbmd0aDtuPGk7KytuKXRbbl0+ZSYmKGU9dFtuXSk7cmV0dXJuIGV9Y29uc3QgUzR0PXtJbnQ4QXJyYXk6SW50OEFycmF5LFVpbnQ4QXJyYXk6VWludDhBcnJheSxVaW50OENsYW1wZWRBcnJheTpVaW50OENsYW1wZWRBcnJheSxJbnQxNkFycmF5OkludDE2QXJyYXksVWludDE2QXJyYXk6VWludDE2QXJyYXksSW50MzJBcnJheTpJbnQzMkFycmF5LFVpbnQzMkFycmF5OlVpbnQzMkFycmF5LEZsb2F0MzJBcnJheTpGbG9hdDMyQXJyYXksRmxvYXQ2NEFycmF5OkZsb2F0NjRBcnJheX07ZnVuY3Rpb24gTTR0KHQsZSl7cmV0dXJuIG5ldyBTNHRbdF0oZSl9bGV0IEU0dD0wO2NvbnN0IFQ0dD1uZXcgZzN0LEM0dD1uZXcgVjN0LEE0dD1uZXcgSDV0LGs0dD1uZXcgVTV0LEw0dD1uZXcgVTV0LFA0dD1uZXcgSDV0O2NsYXNzIE40dCBleHRlbmRzIGU1dHtjb25zdHJ1Y3Rvcigpe3N1cGVyKCksT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsImlkIix7dmFsdWU6RTR0Kyt9KSx0aGlzLnV1aWQ9YTV0KCksdGhpcy5uYW1lPSIiLHRoaXMudHlwZT0iQnVmZmVyR2VvbWV0cnkiLHRoaXMuaW5kZXg9bnVsbCx0aGlzLmF0dHJpYnV0ZXM9e30sdGhpcy5tb3JwaEF0dHJpYnV0ZXM9e30sdGhpcy5tb3JwaFRhcmdldHNSZWxhdGl2ZT0hMSx0aGlzLmdyb3Vwcz1bXSx0aGlzLmJvdW5kaW5nQm94PW51bGwsdGhpcy5ib3VuZGluZ1NwaGVyZT1udWxsLHRoaXMuZHJhd1JhbmdlPXtzdGFydDowLGNvdW50OjEvMH0sdGhpcy51c2VyRGF0YT17fX1nZXRJbmRleCgpe3JldHVybiB0aGlzLmluZGV4fXNldEluZGV4KHQpe3JldHVybiB0aGlzLmluZGV4PUFycmF5LmlzQXJyYXkodCk/bmV3KHc0dCh0KT42NTUzNT95NHQ6ZzR0KSh0LDEpOnQsdGhpc31nZXRBdHRyaWJ1dGUodCl7cmV0dXJuIHRoaXMuYXR0cmlidXRlc1t0XX1zZXRBdHRyaWJ1dGUodCxlKXtyZXR1cm4gdGhpcy5hdHRyaWJ1dGVzW3RdPWUsdGhpc31kZWxldGVBdHRyaWJ1dGUodCl7cmV0dXJuIGRlbGV0ZSB0aGlzLmF0dHJpYnV0ZXNbdF0sdGhpc31oYXNBdHRyaWJ1dGUodCl7cmV0dXJuIHZvaWQgMCE9PXRoaXMuYXR0cmlidXRlc1t0XX1hZGRHcm91cCh0LGUsbj0wKXt0aGlzLmdyb3Vwcy5wdXNoKHtzdGFydDp0LGNvdW50OmUsbWF0ZXJpYWxJbmRleDpufSl9Y2xlYXJHcm91cHMoKXt0aGlzLmdyb3Vwcz1bXX1zZXREcmF3UmFuZ2UodCxlKXt0aGlzLmRyYXdSYW5nZS5zdGFydD10LHRoaXMuZHJhd1JhbmdlLmNvdW50PWV9YXBwbHlNYXRyaXg0KHQpe2NvbnN0IGU9dGhpcy5hdHRyaWJ1dGVzLnBvc2l0aW9uO3ZvaWQgMCE9PWUmJihlLmFwcGx5TWF0cml4NCh0KSxlLm5lZWRzVXBkYXRlPSEwKTtjb25zdCBuPXRoaXMuYXR0cmlidXRlcy5ub3JtYWw7aWYodm9pZCAwIT09bil7Y29uc3QgZT0obmV3IEE1dCkuZ2V0Tm9ybWFsTWF0cml4KHQpO24uYXBwbHlOb3JtYWxNYXRyaXgoZSksbi5uZWVkc1VwZGF0ZT0hMH1jb25zdCBpPXRoaXMuYXR0cmlidXRlcy50YW5nZW50O3JldHVybiB2b2lkIDAhPT1pJiYoaS50cmFuc2Zvcm1EaXJlY3Rpb24odCksaS5uZWVkc1VwZGF0ZT0hMCksbnVsbCE9PXRoaXMuYm91bmRpbmdCb3gmJnRoaXMuY29tcHV0ZUJvdW5kaW5nQm94KCksbnVsbCE9PXRoaXMuYm91bmRpbmdTcGhlcmUmJnRoaXMuY29tcHV0ZUJvdW5kaW5nU3BoZXJlKCksdGhpc31hcHBseVF1YXRlcm5pb24odCl7cmV0dXJuIFQ0dC5tYWtlUm90YXRpb25Gcm9tUXVhdGVybmlvbih0KSx0aGlzLmFwcGx5TWF0cml4NChUNHQpLHRoaXN9cm90YXRlWCh0KXtyZXR1cm4gVDR0Lm1ha2VSb3RhdGlvblgodCksdGhpcy5hcHBseU1hdHJpeDQoVDR0KSx0aGlzfXJvdGF0ZVkodCl7cmV0dXJuIFQ0dC5tYWtlUm90YXRpb25ZKHQpLHRoaXMuYXBwbHlNYXRyaXg0KFQ0dCksdGhpc31yb3RhdGVaKHQpe3JldHVybiBUNHQubWFrZVJvdGF0aW9uWih0KSx0aGlzLmFwcGx5TWF0cml4NChUNHQpLHRoaXN9dHJhbnNsYXRlKHQsZSxuKXtyZXR1cm4gVDR0Lm1ha2VUcmFuc2xhdGlvbih0LGUsbiksdGhpcy5hcHBseU1hdHJpeDQoVDR0KSx0aGlzfXNjYWxlKHQsZSxuKXtyZXR1cm4gVDR0Lm1ha2VTY2FsZSh0LGUsbiksdGhpcy5hcHBseU1hdHJpeDQoVDR0KSx0aGlzfWxvb2tBdCh0KXtyZXR1cm4gQzR0Lmxvb2tBdCh0KSxDNHQudXBkYXRlTWF0cml4KCksdGhpcy5hcHBseU1hdHJpeDQoQzR0Lm1hdHJpeCksdGhpc31jZW50ZXIoKXtyZXR1cm4gdGhpcy5jb21wdXRlQm91bmRpbmdCb3goKSx0aGlzLmJvdW5kaW5nQm94LmdldENlbnRlcihBNHQpLm5lZ2F0ZSgpLHRoaXMudHJhbnNsYXRlKEE0dC54LEE0dC55LEE0dC56KSx0aGlzfXNldEZyb21Qb2ludHModCl7Y29uc3QgZT1bXTtmb3IobGV0IG49MCxpPXQubGVuZ3RoO248aTtuKyspe2NvbnN0IGk9dFtuXTtlLnB1c2goaS54LGkueSxpLnp8fDApfXJldHVybiB0aGlzLnNldEF0dHJpYnV0ZSgicG9zaXRpb24iLG5ldyBiNHQoZSwzKSksdGhpc31jb21wdXRlQm91bmRpbmdCb3goKXtudWxsPT09dGhpcy5ib3VuZGluZ0JveCYmKHRoaXMuYm91bmRpbmdCb3g9bmV3IFU1dCk7Y29uc3QgdD10aGlzLmF0dHJpYnV0ZXMucG9zaXRpb24sZT10aGlzLm1vcnBoQXR0cmlidXRlcy5wb3NpdGlvbjtpZih0JiZ0LmlzR0xCdWZmZXJBdHRyaWJ1dGUpcmV0dXJuIGNvbnNvbGUuZXJyb3IoJ1RIUkVFLkJ1ZmZlckdlb21ldHJ5LmNvbXB1dGVCb3VuZGluZ0JveCgpOiBHTEJ1ZmZlckF0dHJpYnV0ZSByZXF1aXJlcyBhIG1hbnVhbCBib3VuZGluZyBib3guIEFsdGVybmF0aXZlbHkgc2V0ICJtZXNoLmZydXN0dW1DdWxsZWQiIHRvICJmYWxzZSIuJyx0aGlzKSx2b2lkIHRoaXMuYm91bmRpbmdCb3guc2V0KG5ldyBINXQoLTEvMCwtMS8wLC0xLzApLG5ldyBINXQoMS8wLDEvMCwxLzApKTtpZih2b2lkIDAhPT10KXtpZih0aGlzLmJvdW5kaW5nQm94LnNldEZyb21CdWZmZXJBdHRyaWJ1dGUodCksZSlmb3IobGV0IHQ9MCxuPWUubGVuZ3RoO3Q8bjt0Kyspe2s0dC5zZXRGcm9tQnVmZmVyQXR0cmlidXRlKGVbdF0pLHRoaXMubW9ycGhUYXJnZXRzUmVsYXRpdmU/KFA0dC5hZGRWZWN0b3JzKHRoaXMuYm91bmRpbmdCb3gubWluLGs0dC5taW4pLHRoaXMuYm91bmRpbmdCb3guZXhwYW5kQnlQb2ludChQNHQpLFA0dC5hZGRWZWN0b3JzKHRoaXMuYm91bmRpbmdCb3gubWF4LGs0dC5tYXgpLHRoaXMuYm91bmRpbmdCb3guZXhwYW5kQnlQb2ludChQNHQpKToodGhpcy5ib3VuZGluZ0JveC5leHBhbmRCeVBvaW50KGs0dC5taW4pLHRoaXMuYm91bmRpbmdCb3guZXhwYW5kQnlQb2ludChrNHQubWF4KSl9fWVsc2UgdGhpcy5ib3VuZGluZ0JveC5tYWtlRW1wdHkoKTsoaXNOYU4odGhpcy5ib3VuZGluZ0JveC5taW4ueCl8fGlzTmFOKHRoaXMuYm91bmRpbmdCb3gubWluLnkpfHxpc05hTih0aGlzLmJvdW5kaW5nQm94Lm1pbi56KSkmJmNvbnNvbGUuZXJyb3IoJ1RIUkVFLkJ1ZmZlckdlb21ldHJ5LmNvbXB1dGVCb3VuZGluZ0JveCgpOiBDb21wdXRlZCBtaW4vbWF4IGhhdmUgTmFOIHZhbHVlcy4gVGhlICJwb3NpdGlvbiIgYXR0cmlidXRlIGlzIGxpa2VseSB0byBoYXZlIE5hTiB2YWx1ZXMuJyx0aGlzKX1jb21wdXRlQm91bmRpbmdTcGhlcmUoKXtudWxsPT09dGhpcy5ib3VuZGluZ1NwaGVyZSYmKHRoaXMuYm91bmRpbmdTcGhlcmU9bmV3IHMzdCk7Y29uc3QgdD10aGlzLmF0dHJpYnV0ZXMucG9zaXRpb24sZT10aGlzLm1vcnBoQXR0cmlidXRlcy5wb3NpdGlvbjtpZih0JiZ0LmlzR0xCdWZmZXJBdHRyaWJ1dGUpcmV0dXJuIGNvbnNvbGUuZXJyb3IoJ1RIUkVFLkJ1ZmZlckdlb21ldHJ5LmNvbXB1dGVCb3VuZGluZ1NwaGVyZSgpOiBHTEJ1ZmZlckF0dHJpYnV0ZSByZXF1aXJlcyBhIG1hbnVhbCBib3VuZGluZyBzcGhlcmUuIEFsdGVybmF0aXZlbHkgc2V0ICJtZXNoLmZydXN0dW1DdWxsZWQiIHRvICJmYWxzZSIuJyx0aGlzKSx2b2lkIHRoaXMuYm91bmRpbmdTcGhlcmUuc2V0KG5ldyBINXQsMS8wKTtpZih0KXtjb25zdCBuPXRoaXMuYm91bmRpbmdTcGhlcmUuY2VudGVyO2lmKGs0dC5zZXRGcm9tQnVmZmVyQXR0cmlidXRlKHQpLGUpZm9yKGxldCB0PTAsbj1lLmxlbmd0aDt0PG47dCsrKXtMNHQuc2V0RnJvbUJ1ZmZlckF0dHJpYnV0ZShlW3RdKSx0aGlzLm1vcnBoVGFyZ2V0c1JlbGF0aXZlPyhQNHQuYWRkVmVjdG9ycyhrNHQubWluLEw0dC5taW4pLGs0dC5leHBhbmRCeVBvaW50KFA0dCksUDR0LmFkZFZlY3RvcnMoazR0Lm1heCxMNHQubWF4KSxrNHQuZXhwYW5kQnlQb2ludChQNHQpKTooazR0LmV4cGFuZEJ5UG9pbnQoTDR0Lm1pbiksazR0LmV4cGFuZEJ5UG9pbnQoTDR0Lm1heCkpfWs0dC5nZXRDZW50ZXIobik7bGV0IGk9MDtmb3IobGV0IGU9MCxyPXQuY291bnQ7ZTxyO2UrKylQNHQuZnJvbUJ1ZmZlckF0dHJpYnV0ZSh0LGUpLGk9TWF0aC5tYXgoaSxuLmRpc3RhbmNlVG9TcXVhcmVkKFA0dCkpO2lmKGUpZm9yKGxldCByPTAsbz1lLmxlbmd0aDtyPG87cisrKXtjb25zdCBvPWVbcl0sYT10aGlzLm1vcnBoVGFyZ2V0c1JlbGF0aXZlO2ZvcihsZXQgZT0wLHI9by5jb3VudDtlPHI7ZSsrKVA0dC5mcm9tQnVmZmVyQXR0cmlidXRlKG8sZSksYSYmKEE0dC5mcm9tQnVmZmVyQXR0cmlidXRlKHQsZSksUDR0LmFkZChBNHQpKSxpPU1hdGgubWF4KGksbi5kaXN0YW5jZVRvU3F1YXJlZChQNHQpKX10aGlzLmJvdW5kaW5nU3BoZXJlLnJhZGl1cz1NYXRoLnNxcnQoaSksaXNOYU4odGhpcy5ib3VuZGluZ1NwaGVyZS5yYWRpdXMpJiZjb25zb2xlLmVycm9yKCdUSFJFRS5CdWZmZXJHZW9tZXRyeS5jb21wdXRlQm91bmRpbmdTcGhlcmUoKTogQ29tcHV0ZWQgcmFkaXVzIGlzIE5hTi4gVGhlICJwb3NpdGlvbiIgYXR0cmlidXRlIGlzIGxpa2VseSB0byBoYXZlIE5hTiB2YWx1ZXMuJyx0aGlzKX19Y29tcHV0ZUZhY2VOb3JtYWxzKCl7fWNvbXB1dGVUYW5nZW50cygpe2NvbnN0IHQ9dGhpcy5pbmRleCxlPXRoaXMuYXR0cmlidXRlcztpZihudWxsPT09dHx8dm9pZCAwPT09ZS5wb3NpdGlvbnx8dm9pZCAwPT09ZS5ub3JtYWx8fHZvaWQgMD09PWUudXYpcmV0dXJuIHZvaWQgY29uc29sZS5lcnJvcigiVEhSRUUuQnVmZmVyR2VvbWV0cnk6IC5jb21wdXRlVGFuZ2VudHMoKSBmYWlsZWQuIE1pc3NpbmcgcmVxdWlyZWQgYXR0cmlidXRlcyAoaW5kZXgsIHBvc2l0aW9uLCBub3JtYWwgb3IgdXYpIik7Y29uc3Qgbj10LmFycmF5LGk9ZS5wb3NpdGlvbi5hcnJheSxyPWUubm9ybWFsLmFycmF5LG89ZS51di5hcnJheSxhPWkubGVuZ3RoLzM7dm9pZCAwPT09ZS50YW5nZW50JiZ0aGlzLnNldEF0dHJpYnV0ZSgidGFuZ2VudCIsbmV3IGg0dChuZXcgRmxvYXQzMkFycmF5KDQqYSksNCkpO2NvbnN0IHM9ZS50YW5nZW50LmFycmF5LGw9W10sYz1bXTtmb3IobGV0IHQ9MDt0PGE7dCsrKWxbdF09bmV3IEg1dCxjW3RdPW5ldyBINXQ7Y29uc3QgdT1uZXcgSDV0LGg9bmV3IEg1dCxkPW5ldyBINXQscD1uZXcgQzV0LGY9bmV3IEM1dCxtPW5ldyBDNXQsZz1uZXcgSDV0LF89bmV3IEg1dDtmdW5jdGlvbiB5KHQsZSxuKXt1LmZyb21BcnJheShpLDMqdCksaC5mcm9tQXJyYXkoaSwzKmUpLGQuZnJvbUFycmF5KGksMypuKSxwLmZyb21BcnJheShvLDIqdCksZi5mcm9tQXJyYXkobywyKmUpLG0uZnJvbUFycmF5KG8sMipuKSxoLnN1Yih1KSxkLnN1Yih1KSxmLnN1YihwKSxtLnN1YihwKTtjb25zdCByPTEvKGYueCptLnktbS54KmYueSk7aXNGaW5pdGUocikmJihnLmNvcHkoaCkubXVsdGlwbHlTY2FsYXIobS55KS5hZGRTY2FsZWRWZWN0b3IoZCwtZi55KS5tdWx0aXBseVNjYWxhcihyKSxfLmNvcHkoZCkubXVsdGlwbHlTY2FsYXIoZi54KS5hZGRTY2FsZWRWZWN0b3IoaCwtbS54KS5tdWx0aXBseVNjYWxhcihyKSxsW3RdLmFkZChnKSxsW2VdLmFkZChnKSxsW25dLmFkZChnKSxjW3RdLmFkZChfKSxjW2VdLmFkZChfKSxjW25dLmFkZChfKSl9bGV0IHY9dGhpcy5ncm91cHM7MD09PXYubGVuZ3RoJiYodj1be3N0YXJ0OjAsY291bnQ6bi5sZW5ndGh9XSk7Zm9yKGxldCB0PTAsZT12Lmxlbmd0aDt0PGU7Kyt0KXtjb25zdCBlPXZbdF0saT1lLnN0YXJ0O2ZvcihsZXQgdD1pLHI9aStlLmNvdW50O3Q8cjt0Kz0zKXkoblt0KzBdLG5bdCsxXSxuW3QrMl0pfWNvbnN0IGI9bmV3IEg1dCx4PW5ldyBINXQsdz1uZXcgSDV0LFM9bmV3IEg1dDtmdW5jdGlvbiBNKHQpe3cuZnJvbUFycmF5KHIsMyp0KSxTLmNvcHkodyk7Y29uc3QgZT1sW3RdO2IuY29weShlKSxiLnN1Yih3Lm11bHRpcGx5U2NhbGFyKHcuZG90KGUpKSkubm9ybWFsaXplKCkseC5jcm9zc1ZlY3RvcnMoUyxlKTtjb25zdCBuPXguZG90KGNbdF0pPDA/LTE6MTtzWzQqdF09Yi54LHNbNCp0KzFdPWIueSxzWzQqdCsyXT1iLnosc1s0KnQrM109bn1mb3IobGV0IHQ9MCxlPXYubGVuZ3RoO3Q8ZTsrK3Qpe2NvbnN0IGU9dlt0XSxpPWUuc3RhcnQ7Zm9yKGxldCB0PWkscj1pK2UuY291bnQ7dDxyO3QrPTMpTShuW3QrMF0pLE0oblt0KzFdKSxNKG5bdCsyXSl9fWNvbXB1dGVWZXJ0ZXhOb3JtYWxzKCl7Y29uc3QgdD10aGlzLmluZGV4LGU9dGhpcy5nZXRBdHRyaWJ1dGUoInBvc2l0aW9uIik7aWYodm9pZCAwIT09ZSl7bGV0IG49dGhpcy5nZXRBdHRyaWJ1dGUoIm5vcm1hbCIpO2lmKHZvaWQgMD09PW4pbj1uZXcgaDR0KG5ldyBGbG9hdDMyQXJyYXkoMyplLmNvdW50KSwzKSx0aGlzLnNldEF0dHJpYnV0ZSgibm9ybWFsIixuKTtlbHNlIGZvcihsZXQgdD0wLGU9bi5jb3VudDt0PGU7dCsrKW4uc2V0WFlaKHQsMCwwLDApO2NvbnN0IGk9bmV3IEg1dCxyPW5ldyBINXQsbz1uZXcgSDV0LGE9bmV3IEg1dCxzPW5ldyBINXQsbD1uZXcgSDV0LGM9bmV3IEg1dCx1PW5ldyBINXQ7aWYodClmb3IobGV0IGg9MCxkPXQuY291bnQ7aDxkO2grPTMpe2NvbnN0IGQ9dC5nZXRYKGgrMCkscD10LmdldFgoaCsxKSxmPXQuZ2V0WChoKzIpO2kuZnJvbUJ1ZmZlckF0dHJpYnV0ZShlLGQpLHIuZnJvbUJ1ZmZlckF0dHJpYnV0ZShlLHApLG8uZnJvbUJ1ZmZlckF0dHJpYnV0ZShlLGYpLGMuc3ViVmVjdG9ycyhvLHIpLHUuc3ViVmVjdG9ycyhpLHIpLGMuY3Jvc3ModSksYS5mcm9tQnVmZmVyQXR0cmlidXRlKG4sZCkscy5mcm9tQnVmZmVyQXR0cmlidXRlKG4scCksbC5mcm9tQnVmZmVyQXR0cmlidXRlKG4sZiksYS5hZGQoYykscy5hZGQoYyksbC5hZGQoYyksbi5zZXRYWVooZCxhLngsYS55LGEueiksbi5zZXRYWVoocCxzLngscy55LHMueiksbi5zZXRYWVooZixsLngsbC55LGwueil9ZWxzZSBmb3IobGV0IHQ9MCxhPWUuY291bnQ7dDxhO3QrPTMpaS5mcm9tQnVmZmVyQXR0cmlidXRlKGUsdCswKSxyLmZyb21CdWZmZXJBdHRyaWJ1dGUoZSx0KzEpLG8uZnJvbUJ1ZmZlckF0dHJpYnV0ZShlLHQrMiksYy5zdWJWZWN0b3JzKG8sciksdS5zdWJWZWN0b3JzKGksciksYy5jcm9zcyh1KSxuLnNldFhZWih0KzAsYy54LGMueSxjLnopLG4uc2V0WFlaKHQrMSxjLngsYy55LGMueiksbi5zZXRYWVoodCsyLGMueCxjLnksYy56KTt0aGlzLm5vcm1hbGl6ZU5vcm1hbHMoKSxuLm5lZWRzVXBkYXRlPSEwfX1tZXJnZSh0LGUpe2lmKCF0fHwhdC5pc0J1ZmZlckdlb21ldHJ5KXJldHVybiB2b2lkIGNvbnNvbGUuZXJyb3IoIlRIUkVFLkJ1ZmZlckdlb21ldHJ5Lm1lcmdlKCk6IGdlb21ldHJ5IG5vdCBhbiBpbnN0YW5jZSBvZiBUSFJFRS5CdWZmZXJHZW9tZXRyeS4iLHQpO3ZvaWQgMD09PWUmJihlPTAsY29uc29sZS53YXJuKCJUSFJFRS5CdWZmZXJHZW9tZXRyeS5tZXJnZSgpOiBPdmVyd3JpdGluZyBvcmlnaW5hbCBnZW9tZXRyeSwgc3RhcnRpbmcgYXQgb2Zmc2V0PTAuIFVzZSBCdWZmZXJHZW9tZXRyeVV0aWxzLm1lcmdlQnVmZmVyR2VvbWV0cmllcygpIGZvciBsb3NzbGVzcyBtZXJnZS4iKSk7Y29uc3Qgbj10aGlzLmF0dHJpYnV0ZXM7Zm9yKGNvbnN0IGkgaW4gbil7aWYodm9pZCAwPT09dC5hdHRyaWJ1dGVzW2ldKWNvbnRpbnVlO2NvbnN0IHI9bltpXS5hcnJheSxvPXQuYXR0cmlidXRlc1tpXSxhPW8uYXJyYXkscz1vLml0ZW1TaXplKmUsbD1NYXRoLm1pbihhLmxlbmd0aCxyLmxlbmd0aC1zKTtmb3IobGV0IHQ9MCxlPXM7dDxsO3QrKyxlKyspcltlXT1hW3RdfXJldHVybiB0aGlzfW5vcm1hbGl6ZU5vcm1hbHMoKXtjb25zdCB0PXRoaXMuYXR0cmlidXRlcy5ub3JtYWw7Zm9yKGxldCBlPTAsbj10LmNvdW50O2U8bjtlKyspUDR0LmZyb21CdWZmZXJBdHRyaWJ1dGUodCxlKSxQNHQubm9ybWFsaXplKCksdC5zZXRYWVooZSxQNHQueCxQNHQueSxQNHQueil9dG9Ob25JbmRleGVkKCl7ZnVuY3Rpb24gdCh0LGUpe2NvbnN0IG49dC5hcnJheSxpPXQuaXRlbVNpemUscj10Lm5vcm1hbGl6ZWQsbz1uZXcgbi5jb25zdHJ1Y3RvcihlLmxlbmd0aCppKTtsZXQgYT0wLHM9MDtmb3IobGV0IHI9MCxsPWUubGVuZ3RoO3I8bDtyKyspe2E9dC5pc0ludGVybGVhdmVkQnVmZmVyQXR0cmlidXRlP2Vbcl0qdC5kYXRhLnN0cmlkZSt0Lm9mZnNldDplW3JdKmk7Zm9yKGxldCB0PTA7dDxpO3QrKylvW3MrK109blthKytdfXJldHVybiBuZXcgaDR0KG8saSxyKX1pZihudWxsPT09dGhpcy5pbmRleClyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5CdWZmZXJHZW9tZXRyeS50b05vbkluZGV4ZWQoKTogQnVmZmVyR2VvbWV0cnkgaXMgYWxyZWFkeSBub24taW5kZXhlZC4iKSx0aGlzO2NvbnN0IGU9bmV3IE40dCxuPXRoaXMuaW5kZXguYXJyYXksaT10aGlzLmF0dHJpYnV0ZXM7Zm9yKGNvbnN0IHIgaW4gaSl7Y29uc3Qgbz10KGlbcl0sbik7ZS5zZXRBdHRyaWJ1dGUocixvKX1jb25zdCByPXRoaXMubW9ycGhBdHRyaWJ1dGVzO2Zvcihjb25zdCBpIGluIHIpe2NvbnN0IG89W10sYT1yW2ldO2ZvcihsZXQgZT0wLGk9YS5sZW5ndGg7ZTxpO2UrKyl7Y29uc3QgaT10KGFbZV0sbik7by5wdXNoKGkpfWUubW9ycGhBdHRyaWJ1dGVzW2ldPW99ZS5tb3JwaFRhcmdldHNSZWxhdGl2ZT10aGlzLm1vcnBoVGFyZ2V0c1JlbGF0aXZlO2NvbnN0IG89dGhpcy5ncm91cHM7Zm9yKGxldCB0PTAsbj1vLmxlbmd0aDt0PG47dCsrKXtjb25zdCBuPW9bdF07ZS5hZGRHcm91cChuLnN0YXJ0LG4uY291bnQsbi5tYXRlcmlhbEluZGV4KX1yZXR1cm4gZX10b0pTT04oKXtjb25zdCB0PXttZXRhZGF0YTp7dmVyc2lvbjo0LjUsdHlwZToiQnVmZmVyR2VvbWV0cnkiLGdlbmVyYXRvcjoiQnVmZmVyR2VvbWV0cnkudG9KU09OIn19O2lmKHQudXVpZD10aGlzLnV1aWQsdC50eXBlPXRoaXMudHlwZSwiIiE9PXRoaXMubmFtZSYmKHQubmFtZT10aGlzLm5hbWUpLE9iamVjdC5rZXlzKHRoaXMudXNlckRhdGEpLmxlbmd0aD4wJiYodC51c2VyRGF0YT10aGlzLnVzZXJEYXRhKSx2b2lkIDAhPT10aGlzLnBhcmFtZXRlcnMpe2NvbnN0IGU9dGhpcy5wYXJhbWV0ZXJzO2Zvcihjb25zdCBuIGluIGUpdm9pZCAwIT09ZVtuXSYmKHRbbl09ZVtuXSk7cmV0dXJuIHR9dC5kYXRhPXthdHRyaWJ1dGVzOnt9fTtjb25zdCBlPXRoaXMuaW5kZXg7bnVsbCE9PWUmJih0LmRhdGEuaW5kZXg9e3R5cGU6ZS5hcnJheS5jb25zdHJ1Y3Rvci5uYW1lLGFycmF5OkFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGUuYXJyYXkpfSk7Y29uc3Qgbj10aGlzLmF0dHJpYnV0ZXM7Zm9yKGNvbnN0IGUgaW4gbil7dC5kYXRhLmF0dHJpYnV0ZXNbZV09bltlXS50b0pTT04odC5kYXRhKX1jb25zdCBpPXt9O2xldCByPSExO2Zvcihjb25zdCBlIGluIHRoaXMubW9ycGhBdHRyaWJ1dGVzKXtjb25zdCBuPXRoaXMubW9ycGhBdHRyaWJ1dGVzW2VdLG89W107Zm9yKGxldCBlPTAsaT1uLmxlbmd0aDtlPGk7ZSsrKXtvLnB1c2gobltlXS50b0pTT04odC5kYXRhKSl9by5sZW5ndGg+MCYmKGlbZV09byxyPSEwKX1yJiYodC5kYXRhLm1vcnBoQXR0cmlidXRlcz1pLHQuZGF0YS5tb3JwaFRhcmdldHNSZWxhdGl2ZT10aGlzLm1vcnBoVGFyZ2V0c1JlbGF0aXZlKTtjb25zdCBvPXRoaXMuZ3JvdXBzO28ubGVuZ3RoPjAmJih0LmRhdGEuZ3JvdXBzPUpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkobykpKTtjb25zdCBhPXRoaXMuYm91bmRpbmdTcGhlcmU7cmV0dXJuIG51bGwhPT1hJiYodC5kYXRhLmJvdW5kaW5nU3BoZXJlPXtjZW50ZXI6YS5jZW50ZXIudG9BcnJheSgpLHJhZGl1czphLnJhZGl1c30pLHR9Y2xvbmUoKXtyZXR1cm4obmV3IE40dCkuY29weSh0aGlzKX1jb3B5KHQpe3RoaXMuaW5kZXg9bnVsbCx0aGlzLmF0dHJpYnV0ZXM9e30sdGhpcy5tb3JwaEF0dHJpYnV0ZXM9e30sdGhpcy5ncm91cHM9W10sdGhpcy5ib3VuZGluZ0JveD1udWxsLHRoaXMuYm91bmRpbmdTcGhlcmU9bnVsbDtjb25zdCBlPXt9O3RoaXMubmFtZT10Lm5hbWU7Y29uc3Qgbj10LmluZGV4O251bGwhPT1uJiZ0aGlzLnNldEluZGV4KG4uY2xvbmUoZSkpO2NvbnN0IGk9dC5hdHRyaWJ1dGVzO2Zvcihjb25zdCB0IGluIGkpe3RoaXMuc2V0QXR0cmlidXRlKHQsaVt0XS5jbG9uZShlKSl9Y29uc3Qgcj10Lm1vcnBoQXR0cmlidXRlcztmb3IoY29uc3QgdCBpbiByKXtjb25zdCBuPVtdLGk9clt0XTtmb3IobGV0IHQ9MCxyPWkubGVuZ3RoO3Q8cjt0Kyspbi5wdXNoKGlbdF0uY2xvbmUoZSkpO3RoaXMubW9ycGhBdHRyaWJ1dGVzW3RdPW59dGhpcy5tb3JwaFRhcmdldHNSZWxhdGl2ZT10Lm1vcnBoVGFyZ2V0c1JlbGF0aXZlO2NvbnN0IG89dC5ncm91cHM7Zm9yKGxldCB0PTAsZT1vLmxlbmd0aDt0PGU7dCsrKXtjb25zdCBlPW9bdF07dGhpcy5hZGRHcm91cChlLnN0YXJ0LGUuY291bnQsZS5tYXRlcmlhbEluZGV4KX1jb25zdCBhPXQuYm91bmRpbmdCb3g7bnVsbCE9PWEmJih0aGlzLmJvdW5kaW5nQm94PWEuY2xvbmUoKSk7Y29uc3Qgcz10LmJvdW5kaW5nU3BoZXJlO3JldHVybiBudWxsIT09cyYmKHRoaXMuYm91bmRpbmdTcGhlcmU9cy5jbG9uZSgpKSx0aGlzLmRyYXdSYW5nZS5zdGFydD10LmRyYXdSYW5nZS5zdGFydCx0aGlzLmRyYXdSYW5nZS5jb3VudD10LmRyYXdSYW5nZS5jb3VudCx0aGlzLnVzZXJEYXRhPXQudXNlckRhdGEsdGhpc31kaXNwb3NlKCl7dGhpcy5kaXNwYXRjaEV2ZW50KHt0eXBlOiJkaXNwb3NlIn0pfX1ONHQucHJvdG90eXBlLmlzQnVmZmVyR2VvbWV0cnk9ITA7Y29uc3QgSTR0PW5ldyBnM3QsUjR0PW5ldyBtM3QsTzR0PW5ldyBzM3QsejR0PW5ldyBINXQsRDR0PW5ldyBINXQsQjR0PW5ldyBINXQsSDR0PW5ldyBINXQsRjR0PW5ldyBINXQsVjR0PW5ldyBINXQsVTR0PW5ldyBINXQsajR0PW5ldyBINXQsRzR0PW5ldyBINXQsVzR0PW5ldyBDNXQscTR0PW5ldyBDNXQsWTR0PW5ldyBDNXQsWDR0PW5ldyBINXQsJDR0PW5ldyBINXQ7Y2xhc3MgSzR0IGV4dGVuZHMgVjN0e2NvbnN0cnVjdG9yKHQ9bmV3IE40dCxlPW5ldyBsNHQpe3N1cGVyKCksdGhpcy50eXBlPSJNZXNoIix0aGlzLmdlb21ldHJ5PXQsdGhpcy5tYXRlcmlhbD1lLHRoaXMudXBkYXRlTW9ycGhUYXJnZXRzKCl9Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx2b2lkIDAhPT10Lm1vcnBoVGFyZ2V0SW5mbHVlbmNlcyYmKHRoaXMubW9ycGhUYXJnZXRJbmZsdWVuY2VzPXQubW9ycGhUYXJnZXRJbmZsdWVuY2VzLnNsaWNlKCkpLHZvaWQgMCE9PXQubW9ycGhUYXJnZXREaWN0aW9uYXJ5JiYodGhpcy5tb3JwaFRhcmdldERpY3Rpb25hcnk9T2JqZWN0LmFzc2lnbih7fSx0Lm1vcnBoVGFyZ2V0RGljdGlvbmFyeSkpLHRoaXMubWF0ZXJpYWw9dC5tYXRlcmlhbCx0aGlzLmdlb21ldHJ5PXQuZ2VvbWV0cnksdGhpc311cGRhdGVNb3JwaFRhcmdldHMoKXtjb25zdCB0PXRoaXMuZ2VvbWV0cnk7aWYodC5pc0J1ZmZlckdlb21ldHJ5KXtjb25zdCBlPXQubW9ycGhBdHRyaWJ1dGVzLG49T2JqZWN0LmtleXMoZSk7aWYobi5sZW5ndGg+MCl7Y29uc3QgdD1lW25bMF1dO2lmKHZvaWQgMCE9PXQpe3RoaXMubW9ycGhUYXJnZXRJbmZsdWVuY2VzPVtdLHRoaXMubW9ycGhUYXJnZXREaWN0aW9uYXJ5PXt9O2ZvcihsZXQgZT0wLG49dC5sZW5ndGg7ZTxuO2UrKyl7Y29uc3Qgbj10W2VdLm5hbWV8fFN0cmluZyhlKTt0aGlzLm1vcnBoVGFyZ2V0SW5mbHVlbmNlcy5wdXNoKDApLHRoaXMubW9ycGhUYXJnZXREaWN0aW9uYXJ5W25dPWV9fX19ZWxzZXtjb25zdCBlPXQubW9ycGhUYXJnZXRzO3ZvaWQgMCE9PWUmJmUubGVuZ3RoPjAmJmNvbnNvbGUuZXJyb3IoIlRIUkVFLk1lc2gudXBkYXRlTW9ycGhUYXJnZXRzKCkgbm8gbG9uZ2VyIHN1cHBvcnRzIFRIUkVFLkdlb21ldHJ5LiBVc2UgVEhSRUUuQnVmZmVyR2VvbWV0cnkgaW5zdGVhZC4iKX19cmF5Y2FzdCh0LGUpe2NvbnN0IG49dGhpcy5nZW9tZXRyeSxpPXRoaXMubWF0ZXJpYWwscj10aGlzLm1hdHJpeFdvcmxkO2lmKHZvaWQgMD09PWkpcmV0dXJuO2lmKG51bGw9PT1uLmJvdW5kaW5nU3BoZXJlJiZuLmNvbXB1dGVCb3VuZGluZ1NwaGVyZSgpLE80dC5jb3B5KG4uYm91bmRpbmdTcGhlcmUpLE80dC5hcHBseU1hdHJpeDQociksITE9PT10LnJheS5pbnRlcnNlY3RzU3BoZXJlKE80dCkpcmV0dXJuO2lmKEk0dC5jb3B5KHIpLmludmVydCgpLFI0dC5jb3B5KHQucmF5KS5hcHBseU1hdHJpeDQoSTR0KSxudWxsIT09bi5ib3VuZGluZ0JveCYmITE9PT1SNHQuaW50ZXJzZWN0c0JveChuLmJvdW5kaW5nQm94KSlyZXR1cm47bGV0IG87aWYobi5pc0J1ZmZlckdlb21ldHJ5KXtjb25zdCByPW4uaW5kZXgsYT1uLmF0dHJpYnV0ZXMucG9zaXRpb24scz1uLm1vcnBoQXR0cmlidXRlcy5wb3NpdGlvbixsPW4ubW9ycGhUYXJnZXRzUmVsYXRpdmUsYz1uLmF0dHJpYnV0ZXMudXYsdT1uLmF0dHJpYnV0ZXMudXYyLGg9bi5ncm91cHMsZD1uLmRyYXdSYW5nZTtpZihudWxsIT09cilpZihBcnJheS5pc0FycmF5KGkpKWZvcihsZXQgbj0wLHA9aC5sZW5ndGg7bjxwO24rKyl7Y29uc3QgcD1oW25dLGY9aVtwLm1hdGVyaWFsSW5kZXhdO2ZvcihsZXQgbj1NYXRoLm1heChwLnN0YXJ0LGQuc3RhcnQpLGk9TWF0aC5taW4ocC5zdGFydCtwLmNvdW50LGQuc3RhcnQrZC5jb3VudCk7bjxpO24rPTMpe2NvbnN0IGk9ci5nZXRYKG4pLGg9ci5nZXRYKG4rMSksZD1yLmdldFgobisyKTtvPVo0dCh0aGlzLGYsdCxSNHQsYSxzLGwsYyx1LGksaCxkKSxvJiYoby5mYWNlSW5kZXg9TWF0aC5mbG9vcihuLzMpLG8uZmFjZS5tYXRlcmlhbEluZGV4PXAubWF0ZXJpYWxJbmRleCxlLnB1c2gobykpfX1lbHNle2ZvcihsZXQgbj1NYXRoLm1heCgwLGQuc3RhcnQpLGg9TWF0aC5taW4oci5jb3VudCxkLnN0YXJ0K2QuY291bnQpO248aDtuKz0zKXtjb25zdCBoPXIuZ2V0WChuKSxkPXIuZ2V0WChuKzEpLHA9ci5nZXRYKG4rMik7bz1aNHQodGhpcyxpLHQsUjR0LGEscyxsLGMsdSxoLGQscCksbyYmKG8uZmFjZUluZGV4PU1hdGguZmxvb3Iobi8zKSxlLnB1c2gobykpfX1lbHNlIGlmKHZvaWQgMCE9PWEpaWYoQXJyYXkuaXNBcnJheShpKSlmb3IobGV0IG49MCxyPWgubGVuZ3RoO248cjtuKyspe2NvbnN0IHI9aFtuXSxwPWlbci5tYXRlcmlhbEluZGV4XTtmb3IobGV0IG49TWF0aC5tYXgoci5zdGFydCxkLnN0YXJ0KSxpPU1hdGgubWluKHIuc3RhcnQrci5jb3VudCxkLnN0YXJ0K2QuY291bnQpO248aTtuKz0zKXtvPVo0dCh0aGlzLHAsdCxSNHQsYSxzLGwsYyx1LG4sbisxLG4rMiksbyYmKG8uZmFjZUluZGV4PU1hdGguZmxvb3Iobi8zKSxvLmZhY2UubWF0ZXJpYWxJbmRleD1yLm1hdGVyaWFsSW5kZXgsZS5wdXNoKG8pKX19ZWxzZXtmb3IobGV0IG49TWF0aC5tYXgoMCxkLnN0YXJ0KSxyPU1hdGgubWluKGEuY291bnQsZC5zdGFydCtkLmNvdW50KTtuPHI7bis9Myl7bz1aNHQodGhpcyxpLHQsUjR0LGEscyxsLGMsdSxuLG4rMSxuKzIpLG8mJihvLmZhY2VJbmRleD1NYXRoLmZsb29yKG4vMyksZS5wdXNoKG8pKX19fWVsc2Ugbi5pc0dlb21ldHJ5JiZjb25zb2xlLmVycm9yKCJUSFJFRS5NZXNoLnJheWNhc3QoKSBubyBsb25nZXIgc3VwcG9ydHMgVEhSRUUuR2VvbWV0cnkuIFVzZSBUSFJFRS5CdWZmZXJHZW9tZXRyeSBpbnN0ZWFkLiIpfX1mdW5jdGlvbiBaNHQodCxlLG4saSxyLG8sYSxzLGwsYyx1LGgpe3o0dC5mcm9tQnVmZmVyQXR0cmlidXRlKHIsYyksRDR0LmZyb21CdWZmZXJBdHRyaWJ1dGUocix1KSxCNHQuZnJvbUJ1ZmZlckF0dHJpYnV0ZShyLGgpO2NvbnN0IGQ9dC5tb3JwaFRhcmdldEluZmx1ZW5jZXM7aWYobyYmZCl7VTR0LnNldCgwLDAsMCksajR0LnNldCgwLDAsMCksRzR0LnNldCgwLDAsMCk7Zm9yKGxldCB0PTAsZT1vLmxlbmd0aDt0PGU7dCsrKXtjb25zdCBlPWRbdF0sbj1vW3RdOzAhPT1lJiYoSDR0LmZyb21CdWZmZXJBdHRyaWJ1dGUobixjKSxGNHQuZnJvbUJ1ZmZlckF0dHJpYnV0ZShuLHUpLFY0dC5mcm9tQnVmZmVyQXR0cmlidXRlKG4saCksYT8oVTR0LmFkZFNjYWxlZFZlY3RvcihINHQsZSksajR0LmFkZFNjYWxlZFZlY3RvcihGNHQsZSksRzR0LmFkZFNjYWxlZFZlY3RvcihWNHQsZSkpOihVNHQuYWRkU2NhbGVkVmVjdG9yKEg0dC5zdWIoejR0KSxlKSxqNHQuYWRkU2NhbGVkVmVjdG9yKEY0dC5zdWIoRDR0KSxlKSxHNHQuYWRkU2NhbGVkVmVjdG9yKFY0dC5zdWIoQjR0KSxlKSkpfXo0dC5hZGQoVTR0KSxENHQuYWRkKGo0dCksQjR0LmFkZChHNHQpfXQuaXNTa2lubmVkTWVzaCYmKHQuYm9uZVRyYW5zZm9ybShjLHo0dCksdC5ib25lVHJhbnNmb3JtKHUsRDR0KSx0LmJvbmVUcmFuc2Zvcm0oaCxCNHQpKTtjb25zdCBwPShmdW5jdGlvbiBmKHQsZSxuLGkscixvLGEscyl7bGV0IGw7aWYobD0xPT09ZS5zaWRlP2kuaW50ZXJzZWN0VHJpYW5nbGUoYSxvLHIsITAscyk6aS5pbnRlcnNlY3RUcmlhbmdsZShyLG8sYSwyIT09ZS5zaWRlLHMpLG51bGw9PT1sKXJldHVybiBudWxsOyQ0dC5jb3B5KHMpLCQ0dC5hcHBseU1hdHJpeDQodC5tYXRyaXhXb3JsZCk7Y29uc3QgYz1uLnJheS5vcmlnaW4uZGlzdGFuY2VUbygkNHQpO3JldHVybiBjPG4ubmVhcnx8Yz5uLmZhcj9udWxsOntkaXN0YW5jZTpjLHBvaW50OiQ0dC5jbG9uZSgpLG9iamVjdDp0fX0pKHQsZSxuLGksejR0LEQ0dCxCNHQsWDR0KTtpZihwKXtzJiYoVzR0LmZyb21CdWZmZXJBdHRyaWJ1dGUocyxjKSxxNHQuZnJvbUJ1ZmZlckF0dHJpYnV0ZShzLHUpLFk0dC5mcm9tQnVmZmVyQXR0cmlidXRlKHMsaCkscC51dj1KM3QuZ2V0VVYoWDR0LHo0dCxENHQsQjR0LFc0dCxxNHQsWTR0LG5ldyBDNXQpKSxsJiYoVzR0LmZyb21CdWZmZXJBdHRyaWJ1dGUobCxjKSxxNHQuZnJvbUJ1ZmZlckF0dHJpYnV0ZShsLHUpLFk0dC5mcm9tQnVmZmVyQXR0cmlidXRlKGwsaCkscC51djI9SjN0LmdldFVWKFg0dCx6NHQsRDR0LEI0dCxXNHQscTR0LFk0dCxuZXcgQzV0KSk7Y29uc3QgdD17YTpjLGI6dSxjOmgsbm9ybWFsOm5ldyBINXQsbWF0ZXJpYWxJbmRleDowfTtKM3QuZ2V0Tm9ybWFsKHo0dCxENHQsQjR0LHQubm9ybWFsKSxwLmZhY2U9dH1yZXR1cm4gcH1LNHQucHJvdG90eXBlLmlzTWVzaD0hMDtjbGFzcyBKNHQgZXh0ZW5kcyBONHR7Y29uc3RydWN0b3IodD0xLGU9MSxuPTEsaT0xLHI9MSxvPTEpe3N1cGVyKCksdGhpcy50eXBlPSJCb3hHZW9tZXRyeSIsdGhpcy5wYXJhbWV0ZXJzPXt3aWR0aDp0LGhlaWdodDplLGRlcHRoOm4sd2lkdGhTZWdtZW50czppLGhlaWdodFNlZ21lbnRzOnIsZGVwdGhTZWdtZW50czpvfTtjb25zdCBhPXRoaXM7aT1NYXRoLmZsb29yKGkpLHI9TWF0aC5mbG9vcihyKSxvPU1hdGguZmxvb3Iobyk7Y29uc3Qgcz1bXSxsPVtdLGM9W10sdT1bXTtsZXQgaD0wLGQ9MDtmdW5jdGlvbiBwKHQsZSxuLGkscixvLHAsZixtLGcsXyl7Y29uc3QgeT1vL20sdj1wL2csYj1vLzIseD1wLzIsdz1mLzIsUz1tKzEsTT1nKzE7bGV0IEU9MCxUPTA7Y29uc3QgQz1uZXcgSDV0O2ZvcihsZXQgbz0wO288TTtvKyspe2NvbnN0IGE9byp2LXg7Zm9yKGxldCBzPTA7czxTO3MrKyl7Q1t0XT0ocyp5LWIpKmksQ1tlXT1hKnIsQ1tuXT13LGwucHVzaChDLngsQy55LEMueiksQ1t0XT0wLENbZV09MCxDW25dPWY+MD8xOi0xLGMucHVzaChDLngsQy55LEMueiksdS5wdXNoKHMvbSksdS5wdXNoKDEtby9nKSxFKz0xfX1mb3IobGV0IHQ9MDt0PGc7dCsrKWZvcihsZXQgZT0wO2U8bTtlKyspe2NvbnN0IG49aCtlK1MqKHQrMSksaT1oKyhlKzEpK1MqKHQrMSkscj1oKyhlKzEpK1MqdDtzLnB1c2goaCtlK1MqdCxuLHIpLHMucHVzaChuLGksciksVCs9Nn1hLmFkZEdyb3VwKGQsVCxfKSxkKz1ULGgrPUV9cCgieiIsInkiLCJ4IiwtMSwtMSxuLGUsdCxvLHIsMCkscCgieiIsInkiLCJ4IiwxLC0xLG4sZSwtdCxvLHIsMSkscCgieCIsInoiLCJ5IiwxLDEsdCxuLGUsaSxvLDIpLHAoIngiLCJ6IiwieSIsMSwtMSx0LG4sLWUsaSxvLDMpLHAoIngiLCJ5IiwieiIsMSwtMSx0LGUsbixpLHIsNCkscCgieCIsInkiLCJ6IiwtMSwtMSx0LGUsLW4saSxyLDUpLHRoaXMuc2V0SW5kZXgocyksdGhpcy5zZXRBdHRyaWJ1dGUoInBvc2l0aW9uIixuZXcgYjR0KGwsMykpLHRoaXMuc2V0QXR0cmlidXRlKCJub3JtYWwiLG5ldyBiNHQoYywzKSksdGhpcy5zZXRBdHRyaWJ1dGUoInV2IixuZXcgYjR0KHUsMikpfXN0YXRpYyBmcm9tSlNPTih0KXtyZXR1cm4gbmV3IEo0dCh0LndpZHRoLHQuaGVpZ2h0LHQuZGVwdGgsdC53aWR0aFNlZ21lbnRzLHQuaGVpZ2h0U2VnbWVudHMsdC5kZXB0aFNlZ21lbnRzKX19ZnVuY3Rpb24gUTR0KHQpe2NvbnN0IGU9e307Zm9yKGNvbnN0IG4gaW4gdCl7ZVtuXT17fTtmb3IoY29uc3QgaSBpbiB0W25dKXtjb25zdCByPXRbbl1baV07ZVtuXVtpXT1yJiYoci5pc0NvbG9yfHxyLmlzTWF0cml4M3x8ci5pc01hdHJpeDR8fHIuaXNWZWN0b3IyfHxyLmlzVmVjdG9yM3x8ci5pc1ZlY3RvcjR8fHIuaXNUZXh0dXJlfHxyLmlzUXVhdGVybmlvbik/ci5jbG9uZSgpOkFycmF5LmlzQXJyYXkocik/ci5zbGljZSgpOnJ9fXJldHVybiBlfWZ1bmN0aW9uIHQ2dCh0KXtjb25zdCBlPXt9O2ZvcihsZXQgbj0wO248dC5sZW5ndGg7bisrKXtjb25zdCBpPVE0dCh0W25dKTtmb3IoY29uc3QgdCBpbiBpKWVbdF09aVt0XX1yZXR1cm4gZX1jb25zdCBlNnQ9e2Nsb25lOlE0dCxtZXJnZTp0NnR9O2NsYXNzIG42dCBleHRlbmRzIHQ0dHtjb25zdHJ1Y3Rvcih0KXtzdXBlcigpLHRoaXMudHlwZT0iU2hhZGVyTWF0ZXJpYWwiLHRoaXMuZGVmaW5lcz17fSx0aGlzLnVuaWZvcm1zPXt9LHRoaXMudmVydGV4U2hhZGVyPSJ2b2lkIG1haW4oKSB7XG5cdGdsX1Bvc2l0aW9uID0gcHJvamVjdGlvbk1hdHJpeCAqIG1vZGVsVmlld01hdHJpeCAqIHZlYzQoIHBvc2l0aW9uLCAxLjAgKTtcbn0iLHRoaXMuZnJhZ21lbnRTaGFkZXI9InZvaWQgbWFpbigpIHtcblx0Z2xfRnJhZ0NvbG9yID0gdmVjNCggMS4wLCAwLjAsIDAuMCwgMS4wICk7XG59Iix0aGlzLmxpbmV3aWR0aD0xLHRoaXMud2lyZWZyYW1lPSExLHRoaXMud2lyZWZyYW1lTGluZXdpZHRoPTEsdGhpcy5mb2c9ITEsdGhpcy5saWdodHM9ITEsdGhpcy5jbGlwcGluZz0hMSx0aGlzLmV4dGVuc2lvbnM9e2Rlcml2YXRpdmVzOiExLGZyYWdEZXB0aDohMSxkcmF3QnVmZmVyczohMSxzaGFkZXJUZXh0dXJlTE9EOiExfSx0aGlzLmRlZmF1bHRBdHRyaWJ1dGVWYWx1ZXM9e2NvbG9yOlsxLDEsMV0sdXY6WzAsMF0sdXYyOlswLDBdfSx0aGlzLmluZGV4MEF0dHJpYnV0ZU5hbWU9dm9pZCAwLHRoaXMudW5pZm9ybXNOZWVkVXBkYXRlPSExLHRoaXMuZ2xzbFZlcnNpb249bnVsbCx2b2lkIDAhPT10JiYodm9pZCAwIT09dC5hdHRyaWJ1dGVzJiZjb25zb2xlLmVycm9yKCJUSFJFRS5TaGFkZXJNYXRlcmlhbDogYXR0cmlidXRlcyBzaG91bGQgbm93IGJlIGRlZmluZWQgaW4gVEhSRUUuQnVmZmVyR2VvbWV0cnkgaW5zdGVhZC4iKSx0aGlzLnNldFZhbHVlcyh0KSl9Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLmZyYWdtZW50U2hhZGVyPXQuZnJhZ21lbnRTaGFkZXIsdGhpcy52ZXJ0ZXhTaGFkZXI9dC52ZXJ0ZXhTaGFkZXIsdGhpcy51bmlmb3Jtcz1RNHQodC51bmlmb3JtcyksdGhpcy5kZWZpbmVzPU9iamVjdC5hc3NpZ24oe30sdC5kZWZpbmVzKSx0aGlzLndpcmVmcmFtZT10LndpcmVmcmFtZSx0aGlzLndpcmVmcmFtZUxpbmV3aWR0aD10LndpcmVmcmFtZUxpbmV3aWR0aCx0aGlzLmxpZ2h0cz10LmxpZ2h0cyx0aGlzLmNsaXBwaW5nPXQuY2xpcHBpbmcsdGhpcy5leHRlbnNpb25zPU9iamVjdC5hc3NpZ24oe30sdC5leHRlbnNpb25zKSx0aGlzLmdsc2xWZXJzaW9uPXQuZ2xzbFZlcnNpb24sdGhpc310b0pTT04odCl7Y29uc3QgZT1zdXBlci50b0pTT04odCk7ZS5nbHNsVmVyc2lvbj10aGlzLmdsc2xWZXJzaW9uLGUudW5pZm9ybXM9e307Zm9yKGNvbnN0IG4gaW4gdGhpcy51bmlmb3Jtcyl7Y29uc3QgaT10aGlzLnVuaWZvcm1zW25dLnZhbHVlO2UudW5pZm9ybXNbbl09aSYmaS5pc1RleHR1cmU/e3R5cGU6InQiLHZhbHVlOmkudG9KU09OKHQpLnV1aWR9OmkmJmkuaXNDb2xvcj97dHlwZToiYyIsdmFsdWU6aS5nZXRIZXgoKX06aSYmaS5pc1ZlY3RvcjI/e3R5cGU6InYyIix2YWx1ZTppLnRvQXJyYXkoKX06aSYmaS5pc1ZlY3RvcjM/e3R5cGU6InYzIix2YWx1ZTppLnRvQXJyYXkoKX06aSYmaS5pc1ZlY3RvcjQ/e3R5cGU6InY0Iix2YWx1ZTppLnRvQXJyYXkoKX06aSYmaS5pc01hdHJpeDM/e3R5cGU6Im0zIix2YWx1ZTppLnRvQXJyYXkoKX06aSYmaS5pc01hdHJpeDQ/e3R5cGU6Im00Iix2YWx1ZTppLnRvQXJyYXkoKX06e3ZhbHVlOml9fU9iamVjdC5rZXlzKHRoaXMuZGVmaW5lcykubGVuZ3RoPjAmJihlLmRlZmluZXM9dGhpcy5kZWZpbmVzKSxlLnZlcnRleFNoYWRlcj10aGlzLnZlcnRleFNoYWRlcixlLmZyYWdtZW50U2hhZGVyPXRoaXMuZnJhZ21lbnRTaGFkZXI7Y29uc3Qgbj17fTtmb3IoY29uc3QgdCBpbiB0aGlzLmV4dGVuc2lvbnMpITA9PT10aGlzLmV4dGVuc2lvbnNbdF0mJihuW3RdPSEwKTtyZXR1cm4gT2JqZWN0LmtleXMobikubGVuZ3RoPjAmJihlLmV4dGVuc2lvbnM9biksZX19bjZ0LnByb3RvdHlwZS5pc1NoYWRlck1hdGVyaWFsPSEwO2NsYXNzIGk2dCBleHRlbmRzIFYzdHtjb25zdHJ1Y3Rvcigpe3N1cGVyKCksdGhpcy50eXBlPSJDYW1lcmEiLHRoaXMubWF0cml4V29ybGRJbnZlcnNlPW5ldyBnM3QsdGhpcy5wcm9qZWN0aW9uTWF0cml4PW5ldyBnM3QsdGhpcy5wcm9qZWN0aW9uTWF0cml4SW52ZXJzZT1uZXcgZzN0fWNvcHkodCxlKXtyZXR1cm4gc3VwZXIuY29weSh0LGUpLHRoaXMubWF0cml4V29ybGRJbnZlcnNlLmNvcHkodC5tYXRyaXhXb3JsZEludmVyc2UpLHRoaXMucHJvamVjdGlvbk1hdHJpeC5jb3B5KHQucHJvamVjdGlvbk1hdHJpeCksdGhpcy5wcm9qZWN0aW9uTWF0cml4SW52ZXJzZS5jb3B5KHQucHJvamVjdGlvbk1hdHJpeEludmVyc2UpLHRoaXN9Z2V0V29ybGREaXJlY3Rpb24odCl7dGhpcy51cGRhdGVXb3JsZE1hdHJpeCghMCwhMSk7Y29uc3QgZT10aGlzLm1hdHJpeFdvcmxkLmVsZW1lbnRzO3JldHVybiB0LnNldCgtZVs4XSwtZVs5XSwtZVsxMF0pLm5vcm1hbGl6ZSgpfXVwZGF0ZU1hdHJpeFdvcmxkKHQpe3N1cGVyLnVwZGF0ZU1hdHJpeFdvcmxkKHQpLHRoaXMubWF0cml4V29ybGRJbnZlcnNlLmNvcHkodGhpcy5tYXRyaXhXb3JsZCkuaW52ZXJ0KCl9dXBkYXRlV29ybGRNYXRyaXgodCxlKXtzdXBlci51cGRhdGVXb3JsZE1hdHJpeCh0LGUpLHRoaXMubWF0cml4V29ybGRJbnZlcnNlLmNvcHkodGhpcy5tYXRyaXhXb3JsZCkuaW52ZXJ0KCl9Y2xvbmUoKXtyZXR1cm4obmV3IHRoaXMuY29uc3RydWN0b3IpLmNvcHkodGhpcyl9fWk2dC5wcm90b3R5cGUuaXNDYW1lcmE9ITA7Y2xhc3MgcjZ0IGV4dGVuZHMgaTZ0e2NvbnN0cnVjdG9yKHQ9NTAsZT0xLG49LjEsaT0yZTMpe3N1cGVyKCksdGhpcy50eXBlPSJQZXJzcGVjdGl2ZUNhbWVyYSIsdGhpcy5mb3Y9dCx0aGlzLnpvb209MSx0aGlzLm5lYXI9bix0aGlzLmZhcj1pLHRoaXMuZm9jdXM9MTAsdGhpcy5hc3BlY3Q9ZSx0aGlzLnZpZXc9bnVsbCx0aGlzLmZpbG1HYXVnZT0zNSx0aGlzLmZpbG1PZmZzZXQ9MCx0aGlzLnVwZGF0ZVByb2plY3Rpb25NYXRyaXgoKX1jb3B5KHQsZSl7cmV0dXJuIHN1cGVyLmNvcHkodCxlKSx0aGlzLmZvdj10LmZvdix0aGlzLnpvb209dC56b29tLHRoaXMubmVhcj10Lm5lYXIsdGhpcy5mYXI9dC5mYXIsdGhpcy5mb2N1cz10LmZvY3VzLHRoaXMuYXNwZWN0PXQuYXNwZWN0LHRoaXMudmlldz1udWxsPT09dC52aWV3P251bGw6T2JqZWN0LmFzc2lnbih7fSx0LnZpZXcpLHRoaXMuZmlsbUdhdWdlPXQuZmlsbUdhdWdlLHRoaXMuZmlsbU9mZnNldD10LmZpbG1PZmZzZXQsdGhpc31zZXRGb2NhbExlbmd0aCh0KXtjb25zdCBlPS41KnRoaXMuZ2V0RmlsbUhlaWdodCgpL3Q7dGhpcy5mb3Y9MipvNXQqTWF0aC5hdGFuKGUpLHRoaXMudXBkYXRlUHJvamVjdGlvbk1hdHJpeCgpfWdldEZvY2FsTGVuZ3RoKCl7Y29uc3QgdD1NYXRoLnRhbiguNSpyNXQqdGhpcy5mb3YpO3JldHVybi41KnRoaXMuZ2V0RmlsbUhlaWdodCgpL3R9Z2V0RWZmZWN0aXZlRk9WKCl7cmV0dXJuIDIqbzV0Kk1hdGguYXRhbihNYXRoLnRhbiguNSpyNXQqdGhpcy5mb3YpL3RoaXMuem9vbSl9Z2V0RmlsbVdpZHRoKCl7cmV0dXJuIHRoaXMuZmlsbUdhdWdlKk1hdGgubWluKHRoaXMuYXNwZWN0LDEpfWdldEZpbG1IZWlnaHQoKXtyZXR1cm4gdGhpcy5maWxtR2F1Z2UvTWF0aC5tYXgodGhpcy5hc3BlY3QsMSl9c2V0Vmlld09mZnNldCh0LGUsbixpLHIsbyl7dGhpcy5hc3BlY3Q9dC9lLG51bGw9PT10aGlzLnZpZXcmJih0aGlzLnZpZXc9e2VuYWJsZWQ6ITAsZnVsbFdpZHRoOjEsZnVsbEhlaWdodDoxLG9mZnNldFg6MCxvZmZzZXRZOjAsd2lkdGg6MSxoZWlnaHQ6MX0pLHRoaXMudmlldy5lbmFibGVkPSEwLHRoaXMudmlldy5mdWxsV2lkdGg9dCx0aGlzLnZpZXcuZnVsbEhlaWdodD1lLHRoaXMudmlldy5vZmZzZXRYPW4sdGhpcy52aWV3Lm9mZnNldFk9aSx0aGlzLnZpZXcud2lkdGg9cix0aGlzLnZpZXcuaGVpZ2h0PW8sdGhpcy51cGRhdGVQcm9qZWN0aW9uTWF0cml4KCl9Y2xlYXJWaWV3T2Zmc2V0KCl7bnVsbCE9PXRoaXMudmlldyYmKHRoaXMudmlldy5lbmFibGVkPSExKSx0aGlzLnVwZGF0ZVByb2plY3Rpb25NYXRyaXgoKX11cGRhdGVQcm9qZWN0aW9uTWF0cml4KCl7Y29uc3QgdD10aGlzLm5lYXI7bGV0IGU9dCpNYXRoLnRhbiguNSpyNXQqdGhpcy5mb3YpL3RoaXMuem9vbSxuPTIqZSxpPXRoaXMuYXNwZWN0Km4scj0tLjUqaTtjb25zdCBvPXRoaXMudmlldztpZihudWxsIT09dGhpcy52aWV3JiZ0aGlzLnZpZXcuZW5hYmxlZCl7Y29uc3QgdD1vLmZ1bGxXaWR0aCxhPW8uZnVsbEhlaWdodDtyKz1vLm9mZnNldFgqaS90LGUtPW8ub2Zmc2V0WSpuL2EsaSo9by53aWR0aC90LG4qPW8uaGVpZ2h0L2F9Y29uc3QgYT10aGlzLmZpbG1PZmZzZXQ7MCE9PWEmJihyKz10KmEvdGhpcy5nZXRGaWxtV2lkdGgoKSksdGhpcy5wcm9qZWN0aW9uTWF0cml4Lm1ha2VQZXJzcGVjdGl2ZShyLHIraSxlLGUtbix0LHRoaXMuZmFyKSx0aGlzLnByb2plY3Rpb25NYXRyaXhJbnZlcnNlLmNvcHkodGhpcy5wcm9qZWN0aW9uTWF0cml4KS5pbnZlcnQoKX10b0pTT04odCl7Y29uc3QgZT1zdXBlci50b0pTT04odCk7cmV0dXJuIGUub2JqZWN0LmZvdj10aGlzLmZvdixlLm9iamVjdC56b29tPXRoaXMuem9vbSxlLm9iamVjdC5uZWFyPXRoaXMubmVhcixlLm9iamVjdC5mYXI9dGhpcy5mYXIsZS5vYmplY3QuZm9jdXM9dGhpcy5mb2N1cyxlLm9iamVjdC5hc3BlY3Q9dGhpcy5hc3BlY3QsbnVsbCE9PXRoaXMudmlldyYmKGUub2JqZWN0LnZpZXc9T2JqZWN0LmFzc2lnbih7fSx0aGlzLnZpZXcpKSxlLm9iamVjdC5maWxtR2F1Z2U9dGhpcy5maWxtR2F1Z2UsZS5vYmplY3QuZmlsbU9mZnNldD10aGlzLmZpbG1PZmZzZXQsZX19cjZ0LnByb3RvdHlwZS5pc1BlcnNwZWN0aXZlQ2FtZXJhPSEwO2NvbnN0IG82dD05MDtjbGFzcyBhNnQgZXh0ZW5kcyBWM3R7Y29uc3RydWN0b3IodCxlLG4pe2lmKHN1cGVyKCksdGhpcy50eXBlPSJDdWJlQ2FtZXJhIiwhMCE9PW4uaXNXZWJHTEN1YmVSZW5kZXJUYXJnZXQpcmV0dXJuIHZvaWQgY29uc29sZS5lcnJvcigiVEhSRUUuQ3ViZUNhbWVyYTogVGhlIGNvbnN0cnVjdG9yIG5vdyBleHBlY3RzIGFuIGluc3RhbmNlIG9mIFdlYkdMQ3ViZVJlbmRlclRhcmdldCBhcyB0aGlyZCBwYXJhbWV0ZXIuIik7dGhpcy5yZW5kZXJUYXJnZXQ9bjtjb25zdCBpPW5ldyByNnQobzZ0LDEsdCxlKTtpLmxheWVycz10aGlzLmxheWVycyxpLnVwLnNldCgwLC0xLDApLGkubG9va0F0KG5ldyBINXQoMSwwLDApKSx0aGlzLmFkZChpKTtjb25zdCByPW5ldyByNnQobzZ0LDEsdCxlKTtyLmxheWVycz10aGlzLmxheWVycyxyLnVwLnNldCgwLC0xLDApLHIubG9va0F0KG5ldyBINXQoLTEsMCwwKSksdGhpcy5hZGQocik7Y29uc3Qgbz1uZXcgcjZ0KG82dCwxLHQsZSk7by5sYXllcnM9dGhpcy5sYXllcnMsby51cC5zZXQoMCwwLDEpLG8ubG9va0F0KG5ldyBINXQoMCwxLDApKSx0aGlzLmFkZChvKTtjb25zdCBhPW5ldyByNnQobzZ0LDEsdCxlKTthLmxheWVycz10aGlzLmxheWVycyxhLnVwLnNldCgwLDAsLTEpLGEubG9va0F0KG5ldyBINXQoMCwtMSwwKSksdGhpcy5hZGQoYSk7Y29uc3Qgcz1uZXcgcjZ0KG82dCwxLHQsZSk7cy5sYXllcnM9dGhpcy5sYXllcnMscy51cC5zZXQoMCwtMSwwKSxzLmxvb2tBdChuZXcgSDV0KDAsMCwxKSksdGhpcy5hZGQocyk7Y29uc3QgbD1uZXcgcjZ0KG82dCwxLHQsZSk7bC5sYXllcnM9dGhpcy5sYXllcnMsbC51cC5zZXQoMCwtMSwwKSxsLmxvb2tBdChuZXcgSDV0KDAsMCwtMSkpLHRoaXMuYWRkKGwpfXVwZGF0ZSh0LGUpe251bGw9PT10aGlzLnBhcmVudCYmdGhpcy51cGRhdGVNYXRyaXhXb3JsZCgpO2NvbnN0IG49dGhpcy5yZW5kZXJUYXJnZXQsW2kscixvLGEscyxsXT10aGlzLmNoaWxkcmVuLGM9dC54ci5lbmFibGVkLHU9dC5nZXRSZW5kZXJUYXJnZXQoKTt0LnhyLmVuYWJsZWQ9ITE7Y29uc3QgaD1uLnRleHR1cmUuZ2VuZXJhdGVNaXBtYXBzO24udGV4dHVyZS5nZW5lcmF0ZU1pcG1hcHM9ITEsdC5zZXRSZW5kZXJUYXJnZXQobiwwKSx0LnJlbmRlcihlLGkpLHQuc2V0UmVuZGVyVGFyZ2V0KG4sMSksdC5yZW5kZXIoZSxyKSx0LnNldFJlbmRlclRhcmdldChuLDIpLHQucmVuZGVyKGUsbyksdC5zZXRSZW5kZXJUYXJnZXQobiwzKSx0LnJlbmRlcihlLGEpLHQuc2V0UmVuZGVyVGFyZ2V0KG4sNCksdC5yZW5kZXIoZSxzKSxuLnRleHR1cmUuZ2VuZXJhdGVNaXBtYXBzPWgsdC5zZXRSZW5kZXJUYXJnZXQobiw1KSx0LnJlbmRlcihlLGwpLHQuc2V0UmVuZGVyVGFyZ2V0KHUpLHQueHIuZW5hYmxlZD1jfX1jbGFzcyBzNnQgZXh0ZW5kcyBONXR7Y29uc3RydWN0b3IodCxlLG4saSxyLG8sYSxzLGwsYyl7c3VwZXIodD12b2lkIDAhPT10P3Q6W10sZT12b2lkIDAhPT1lP2U6ZTJ0LG4saSxyLG8sYT12b2lkIDAhPT1hP2E6dzJ0LHMsbCxjKSx0aGlzLmZsaXBZPSExfWdldCBpbWFnZXMoKXtyZXR1cm4gdGhpcy5pbWFnZX1zZXQgaW1hZ2VzKHQpe3RoaXMuaW1hZ2U9dH19czZ0LnByb3RvdHlwZS5pc0N1YmVUZXh0dXJlPSEwO2NsYXNzIGw2dCBleHRlbmRzIE81dHtjb25zdHJ1Y3Rvcih0LGUsbil7TnVtYmVyLmlzSW50ZWdlcihlKSYmKGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xDdWJlUmVuZGVyVGFyZ2V0OiBjb25zdHJ1Y3RvciBzaWduYXR1cmUgaXMgbm93IFdlYkdMQ3ViZVJlbmRlclRhcmdldCggc2l6ZSwgb3B0aW9ucyApIiksZT1uKSxzdXBlcih0LHQsZSksdGhpcy50ZXh0dXJlPW5ldyBzNnQodm9pZCAwLChlPWV8fHt9KS5tYXBwaW5nLGUud3JhcFMsZS53cmFwVCxlLm1hZ0ZpbHRlcixlLm1pbkZpbHRlcixlLmZvcm1hdCxlLnR5cGUsZS5hbmlzb3Ryb3B5LGUuZW5jb2RpbmcpLHRoaXMudGV4dHVyZS5pc1JlbmRlclRhcmdldFRleHR1cmU9ITAsdGhpcy50ZXh0dXJlLmdlbmVyYXRlTWlwbWFwcz12b2lkIDAhPT1lLmdlbmVyYXRlTWlwbWFwcyYmZS5nZW5lcmF0ZU1pcG1hcHMsdGhpcy50ZXh0dXJlLm1pbkZpbHRlcj12b2lkIDAhPT1lLm1pbkZpbHRlcj9lLm1pbkZpbHRlcjpwMnQsdGhpcy50ZXh0dXJlLl9uZWVkc0ZsaXBFbnZNYXA9ITF9ZnJvbUVxdWlyZWN0YW5ndWxhclRleHR1cmUodCxlKXt0aGlzLnRleHR1cmUudHlwZT1lLnR5cGUsdGhpcy50ZXh0dXJlLmZvcm1hdD1TMnQsdGhpcy50ZXh0dXJlLmVuY29kaW5nPWUuZW5jb2RpbmcsdGhpcy50ZXh0dXJlLmdlbmVyYXRlTWlwbWFwcz1lLmdlbmVyYXRlTWlwbWFwcyx0aGlzLnRleHR1cmUubWluRmlsdGVyPWUubWluRmlsdGVyLHRoaXMudGV4dHVyZS5tYWdGaWx0ZXI9ZS5tYWdGaWx0ZXI7Y29uc3Qgbj17dW5pZm9ybXM6e3RFcXVpcmVjdDp7dmFsdWU6bnVsbH19LHZlcnRleFNoYWRlcjoiXG5cblx0XHRcdFx0dmFyeWluZyB2ZWMzIHZXb3JsZERpcmVjdGlvbjtcblxuXHRcdFx0XHR2ZWMzIHRyYW5zZm9ybURpcmVjdGlvbiggaW4gdmVjMyBkaXIsIGluIG1hdDQgbWF0cml4ICkge1xuXG5cdFx0XHRcdFx0cmV0dXJuIG5vcm1hbGl6ZSggKCBtYXRyaXggKiB2ZWM0KCBkaXIsIDAuMCApICkueHl6ICk7XG5cblx0XHRcdFx0fVxuXG5cdFx0XHRcdHZvaWQgbWFpbigpIHtcblxuXHRcdFx0XHRcdHZXb3JsZERpcmVjdGlvbiA9IHRyYW5zZm9ybURpcmVjdGlvbiggcG9zaXRpb24sIG1vZGVsTWF0cml4ICk7XG5cblx0XHRcdFx0XHQjaW5jbHVkZSA8YmVnaW5fdmVydGV4PlxuXHRcdFx0XHRcdCNpbmNsdWRlIDxwcm9qZWN0X3ZlcnRleD5cblxuXHRcdFx0XHR9XG5cdFx0XHQiLGZyYWdtZW50U2hhZGVyOiJcblxuXHRcdFx0XHR1bmlmb3JtIHNhbXBsZXIyRCB0RXF1aXJlY3Q7XG5cblx0XHRcdFx0dmFyeWluZyB2ZWMzIHZXb3JsZERpcmVjdGlvbjtcblxuXHRcdFx0XHQjaW5jbHVkZSA8Y29tbW9uPlxuXG5cdFx0XHRcdHZvaWQgbWFpbigpIHtcblxuXHRcdFx0XHRcdHZlYzMgZGlyZWN0aW9uID0gbm9ybWFsaXplKCB2V29ybGREaXJlY3Rpb24gKTtcblxuXHRcdFx0XHRcdHZlYzIgc2FtcGxlVVYgPSBlcXVpcmVjdFV2KCBkaXJlY3Rpb24gKTtcblxuXHRcdFx0XHRcdGdsX0ZyYWdDb2xvciA9IHRleHR1cmUyRCggdEVxdWlyZWN0LCBzYW1wbGVVViApO1xuXG5cdFx0XHRcdH1cblx0XHRcdCJ9LGk9bmV3IEo0dCg1LDUsNSkscj1uZXcgbjZ0KHtuYW1lOiJDdWJlbWFwRnJvbUVxdWlyZWN0Iix1bmlmb3JtczpRNHQobi51bmlmb3JtcyksdmVydGV4U2hhZGVyOm4udmVydGV4U2hhZGVyLGZyYWdtZW50U2hhZGVyOm4uZnJhZ21lbnRTaGFkZXIsc2lkZToxLGJsZW5kaW5nOjB9KTtyLnVuaWZvcm1zLnRFcXVpcmVjdC52YWx1ZT1lO2NvbnN0IG89bmV3IEs0dChpLHIpLGE9ZS5taW5GaWx0ZXI7ZS5taW5GaWx0ZXI9PT1tMnQmJihlLm1pbkZpbHRlcj1wMnQpO3JldHVybiBuZXcgYTZ0KDEsMTAsdGhpcykudXBkYXRlKHQsbyksZS5taW5GaWx0ZXI9YSxvLmdlb21ldHJ5LmRpc3Bvc2UoKSxvLm1hdGVyaWFsLmRpc3Bvc2UoKSx0aGlzfWNsZWFyKHQsZSxuLGkpe2NvbnN0IHI9dC5nZXRSZW5kZXJUYXJnZXQoKTtmb3IobGV0IHI9MDtyPDY7cisrKXQuc2V0UmVuZGVyVGFyZ2V0KHRoaXMsciksdC5jbGVhcihlLG4saSk7dC5zZXRSZW5kZXJUYXJnZXQocil9fWw2dC5wcm90b3R5cGUuaXNXZWJHTEN1YmVSZW5kZXJUYXJnZXQ9ITA7Y29uc3QgYzZ0PW5ldyBINXQsdTZ0PW5ldyBINXQsaDZ0PW5ldyBBNXQ7Y2xhc3MgZDZ0e2NvbnN0cnVjdG9yKHQ9bmV3IEg1dCgxLDAsMCksZT0wKXt0aGlzLm5vcm1hbD10LHRoaXMuY29uc3RhbnQ9ZX1zZXQodCxlKXtyZXR1cm4gdGhpcy5ub3JtYWwuY29weSh0KSx0aGlzLmNvbnN0YW50PWUsdGhpc31zZXRDb21wb25lbnRzKHQsZSxuLGkpe3JldHVybiB0aGlzLm5vcm1hbC5zZXQodCxlLG4pLHRoaXMuY29uc3RhbnQ9aSx0aGlzfXNldEZyb21Ob3JtYWxBbmRDb3BsYW5hclBvaW50KHQsZSl7cmV0dXJuIHRoaXMubm9ybWFsLmNvcHkodCksdGhpcy5jb25zdGFudD0tZS5kb3QodGhpcy5ub3JtYWwpLHRoaXN9c2V0RnJvbUNvcGxhbmFyUG9pbnRzKHQsZSxuKXtjb25zdCBpPWM2dC5zdWJWZWN0b3JzKG4sZSkuY3Jvc3ModTZ0LnN1YlZlY3RvcnModCxlKSkubm9ybWFsaXplKCk7cmV0dXJuIHRoaXMuc2V0RnJvbU5vcm1hbEFuZENvcGxhbmFyUG9pbnQoaSx0KSx0aGlzfWNvcHkodCl7cmV0dXJuIHRoaXMubm9ybWFsLmNvcHkodC5ub3JtYWwpLHRoaXMuY29uc3RhbnQ9dC5jb25zdGFudCx0aGlzfW5vcm1hbGl6ZSgpe2NvbnN0IHQ9MS90aGlzLm5vcm1hbC5sZW5ndGgoKTtyZXR1cm4gdGhpcy5ub3JtYWwubXVsdGlwbHlTY2FsYXIodCksdGhpcy5jb25zdGFudCo9dCx0aGlzfW5lZ2F0ZSgpe3JldHVybiB0aGlzLmNvbnN0YW50Kj0tMSx0aGlzLm5vcm1hbC5uZWdhdGUoKSx0aGlzfWRpc3RhbmNlVG9Qb2ludCh0KXtyZXR1cm4gdGhpcy5ub3JtYWwuZG90KHQpK3RoaXMuY29uc3RhbnR9ZGlzdGFuY2VUb1NwaGVyZSh0KXtyZXR1cm4gdGhpcy5kaXN0YW5jZVRvUG9pbnQodC5jZW50ZXIpLXQucmFkaXVzfXByb2plY3RQb2ludCh0LGUpe3JldHVybiBlLmNvcHkodGhpcy5ub3JtYWwpLm11bHRpcGx5U2NhbGFyKC10aGlzLmRpc3RhbmNlVG9Qb2ludCh0KSkuYWRkKHQpfWludGVyc2VjdExpbmUodCxlKXtjb25zdCBuPXQuZGVsdGEoYzZ0KSxpPXRoaXMubm9ybWFsLmRvdChuKTtpZigwPT09aSlyZXR1cm4gMD09PXRoaXMuZGlzdGFuY2VUb1BvaW50KHQuc3RhcnQpP2UuY29weSh0LnN0YXJ0KTpudWxsO2NvbnN0IHI9LSh0LnN0YXJ0LmRvdCh0aGlzLm5vcm1hbCkrdGhpcy5jb25zdGFudCkvaTtyZXR1cm4gcjwwfHxyPjE/bnVsbDplLmNvcHkobikubXVsdGlwbHlTY2FsYXIocikuYWRkKHQuc3RhcnQpfWludGVyc2VjdHNMaW5lKHQpe2NvbnN0IGU9dGhpcy5kaXN0YW5jZVRvUG9pbnQodC5zdGFydCksbj10aGlzLmRpc3RhbmNlVG9Qb2ludCh0LmVuZCk7cmV0dXJuIGU8MCYmbj4wfHxuPDAmJmU+MH1pbnRlcnNlY3RzQm94KHQpe3JldHVybiB0LmludGVyc2VjdHNQbGFuZSh0aGlzKX1pbnRlcnNlY3RzU3BoZXJlKHQpe3JldHVybiB0LmludGVyc2VjdHNQbGFuZSh0aGlzKX1jb3BsYW5hclBvaW50KHQpe3JldHVybiB0LmNvcHkodGhpcy5ub3JtYWwpLm11bHRpcGx5U2NhbGFyKC10aGlzLmNvbnN0YW50KX1hcHBseU1hdHJpeDQodCxlKXtjb25zdCBuPWV8fGg2dC5nZXROb3JtYWxNYXRyaXgodCksaT10aGlzLmNvcGxhbmFyUG9pbnQoYzZ0KS5hcHBseU1hdHJpeDQodCkscj10aGlzLm5vcm1hbC5hcHBseU1hdHJpeDMobikubm9ybWFsaXplKCk7cmV0dXJuIHRoaXMuY29uc3RhbnQ9LWkuZG90KHIpLHRoaXN9dHJhbnNsYXRlKHQpe3JldHVybiB0aGlzLmNvbnN0YW50LT10LmRvdCh0aGlzLm5vcm1hbCksdGhpc31lcXVhbHModCl7cmV0dXJuIHQubm9ybWFsLmVxdWFscyh0aGlzLm5vcm1hbCkmJnQuY29uc3RhbnQ9PT10aGlzLmNvbnN0YW50fWNsb25lKCl7cmV0dXJuKG5ldyB0aGlzLmNvbnN0cnVjdG9yKS5jb3B5KHRoaXMpfX1kNnQucHJvdG90eXBlLmlzUGxhbmU9ITA7Y29uc3QgcDZ0PW5ldyBzM3QsZjZ0PW5ldyBINXQ7Y2xhc3MgbTZ0e2NvbnN0cnVjdG9yKHQ9bmV3IGQ2dCxlPW5ldyBkNnQsbj1uZXcgZDZ0LGk9bmV3IGQ2dCxyPW5ldyBkNnQsbz1uZXcgZDZ0KXt0aGlzLnBsYW5lcz1bdCxlLG4saSxyLG9dfXNldCh0LGUsbixpLHIsbyl7Y29uc3QgYT10aGlzLnBsYW5lcztyZXR1cm4gYVswXS5jb3B5KHQpLGFbMV0uY29weShlKSxhWzJdLmNvcHkobiksYVszXS5jb3B5KGkpLGFbNF0uY29weShyKSxhWzVdLmNvcHkobyksdGhpc31jb3B5KHQpe2NvbnN0IGU9dGhpcy5wbGFuZXM7Zm9yKGxldCBuPTA7bjw2O24rKyllW25dLmNvcHkodC5wbGFuZXNbbl0pO3JldHVybiB0aGlzfXNldEZyb21Qcm9qZWN0aW9uTWF0cml4KHQpe2NvbnN0IGU9dGhpcy5wbGFuZXMsbj10LmVsZW1lbnRzLGk9blswXSxyPW5bMV0sbz1uWzJdLGE9blszXSxzPW5bNF0sbD1uWzVdLGM9bls2XSx1PW5bN10saD1uWzhdLGQ9bls5XSxwPW5bMTBdLGY9blsxMV0sbT1uWzEyXSxnPW5bMTNdLF89blsxNF0seT1uWzE1XTtyZXR1cm4gZVswXS5zZXRDb21wb25lbnRzKGEtaSx1LXMsZi1oLHktbSkubm9ybWFsaXplKCksZVsxXS5zZXRDb21wb25lbnRzKGEraSx1K3MsZitoLHkrbSkubm9ybWFsaXplKCksZVsyXS5zZXRDb21wb25lbnRzKGErcix1K2wsZitkLHkrZykubm9ybWFsaXplKCksZVszXS5zZXRDb21wb25lbnRzKGEtcix1LWwsZi1kLHktZykubm9ybWFsaXplKCksZVs0XS5zZXRDb21wb25lbnRzKGEtbyx1LWMsZi1wLHktXykubm9ybWFsaXplKCksZVs1XS5zZXRDb21wb25lbnRzKGErbyx1K2MsZitwLHkrXykubm9ybWFsaXplKCksdGhpc31pbnRlcnNlY3RzT2JqZWN0KHQpe2NvbnN0IGU9dC5nZW9tZXRyeTtyZXR1cm4gbnVsbD09PWUuYm91bmRpbmdTcGhlcmUmJmUuY29tcHV0ZUJvdW5kaW5nU3BoZXJlKCkscDZ0LmNvcHkoZS5ib3VuZGluZ1NwaGVyZSkuYXBwbHlNYXRyaXg0KHQubWF0cml4V29ybGQpLHRoaXMuaW50ZXJzZWN0c1NwaGVyZShwNnQpfWludGVyc2VjdHNTcHJpdGUodCl7cmV0dXJuIHA2dC5jZW50ZXIuc2V0KDAsMCwwKSxwNnQucmFkaXVzPS43MDcxMDY3ODExODY1NDc2LHA2dC5hcHBseU1hdHJpeDQodC5tYXRyaXhXb3JsZCksdGhpcy5pbnRlcnNlY3RzU3BoZXJlKHA2dCl9aW50ZXJzZWN0c1NwaGVyZSh0KXtjb25zdCBlPXRoaXMucGxhbmVzLG49dC5jZW50ZXIsaT0tdC5yYWRpdXM7Zm9yKGxldCB0PTA7dDw2O3QrKyl7aWYoZVt0XS5kaXN0YW5jZVRvUG9pbnQobik8aSlyZXR1cm4hMX1yZXR1cm4hMH1pbnRlcnNlY3RzQm94KHQpe2NvbnN0IGU9dGhpcy5wbGFuZXM7Zm9yKGxldCBuPTA7bjw2O24rKyl7Y29uc3QgaT1lW25dO2lmKGY2dC54PWkubm9ybWFsLng+MD90Lm1heC54OnQubWluLngsZjZ0Lnk9aS5ub3JtYWwueT4wP3QubWF4Lnk6dC5taW4ueSxmNnQuej1pLm5vcm1hbC56PjA/dC5tYXguejp0Lm1pbi56LGkuZGlzdGFuY2VUb1BvaW50KGY2dCk8MClyZXR1cm4hMX1yZXR1cm4hMH1jb250YWluc1BvaW50KHQpe2NvbnN0IGU9dGhpcy5wbGFuZXM7Zm9yKGxldCBuPTA7bjw2O24rKylpZihlW25dLmRpc3RhbmNlVG9Qb2ludCh0KTwwKXJldHVybiExO3JldHVybiEwfWNsb25lKCl7cmV0dXJuKG5ldyB0aGlzLmNvbnN0cnVjdG9yKS5jb3B5KHRoaXMpfX1mdW5jdGlvbiBnNnQoKXtsZXQgdD1udWxsLGU9ITEsbj1udWxsLGk9bnVsbDtmdW5jdGlvbiByKGUsbyl7bihlLG8pLGk9dC5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUocil9cmV0dXJue3N0YXJ0OmZ1bmN0aW9uKCl7ITAhPT1lJiZudWxsIT09biYmKGk9dC5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUociksZT0hMCl9LHN0b3A6ZnVuY3Rpb24oKXt0LmNhbmNlbEFuaW1hdGlvbkZyYW1lKGkpLGU9ITF9LHNldEFuaW1hdGlvbkxvb3A6ZnVuY3Rpb24odCl7bj10fSxzZXRDb250ZXh0OmZ1bmN0aW9uKGUpe3Q9ZX19fWZ1bmN0aW9uIF82dCh0LGUpe2NvbnN0IG49ZS5pc1dlYkdMMixpPW5ldyBXZWFrTWFwO3JldHVybntnZXQ6ZnVuY3Rpb24gcih0KXtyZXR1cm4gdC5pc0ludGVybGVhdmVkQnVmZmVyQXR0cmlidXRlJiYodD10LmRhdGEpLGkuZ2V0KHQpfSxyZW1vdmU6ZnVuY3Rpb24gbyhlKXtlLmlzSW50ZXJsZWF2ZWRCdWZmZXJBdHRyaWJ1dGUmJihlPWUuZGF0YSk7Y29uc3Qgbj1pLmdldChlKTtuJiYodC5kZWxldGVCdWZmZXIobi5idWZmZXIpLGkuZGVsZXRlKGUpKX0sdXBkYXRlOmZ1bmN0aW9uIGEoZSxyKXtpZihlLmlzR0xCdWZmZXJBdHRyaWJ1dGUpe2NvbnN0IHQ9aS5nZXQoZSk7cmV0dXJuIHZvaWQoKCF0fHx0LnZlcnNpb248ZS52ZXJzaW9uKSYmaS5zZXQoZSx7YnVmZmVyOmUuYnVmZmVyLHR5cGU6ZS50eXBlLGJ5dGVzUGVyRWxlbWVudDplLmVsZW1lbnRTaXplLHZlcnNpb246ZS52ZXJzaW9ufSkpfWUuaXNJbnRlcmxlYXZlZEJ1ZmZlckF0dHJpYnV0ZSYmKGU9ZS5kYXRhKTtjb25zdCBvPWkuZ2V0KGUpO3ZvaWQgMD09PW8/aS5zZXQoZSwoZnVuY3Rpb24gYShlLGkpe2NvbnN0IHI9ZS5hcnJheSxvPWUudXNhZ2UsYT10LmNyZWF0ZUJ1ZmZlcigpO3QuYmluZEJ1ZmZlcihpLGEpLHQuYnVmZmVyRGF0YShpLHIsbyksZS5vblVwbG9hZENhbGxiYWNrKCk7bGV0IHM9NTEyNjtyZXR1cm4gciBpbnN0YW5jZW9mIEZsb2F0MzJBcnJheT9zPTUxMjY6ciBpbnN0YW5jZW9mIEZsb2F0NjRBcnJheT9jb25zb2xlLndhcm4oIlRIUkVFLldlYkdMQXR0cmlidXRlczogVW5zdXBwb3J0ZWQgZGF0YSBidWZmZXIgZm9ybWF0OiBGbG9hdDY0QXJyYXkuIik6ciBpbnN0YW5jZW9mIFVpbnQxNkFycmF5P2UuaXNGbG9hdDE2QnVmZmVyQXR0cmlidXRlP24/cz01MTMxOmNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xBdHRyaWJ1dGVzOiBVc2FnZSBvZiBGbG9hdDE2QnVmZmVyQXR0cmlidXRlIHJlcXVpcmVzIFdlYkdMMi4iKTpzPTUxMjM6ciBpbnN0YW5jZW9mIEludDE2QXJyYXk/cz01MTIyOnIgaW5zdGFuY2VvZiBVaW50MzJBcnJheT9zPTUxMjU6ciBpbnN0YW5jZW9mIEludDMyQXJyYXk/cz01MTI0OnIgaW5zdGFuY2VvZiBJbnQ4QXJyYXk/cz01MTIwOihyIGluc3RhbmNlb2YgVWludDhBcnJheXx8ciBpbnN0YW5jZW9mIFVpbnQ4Q2xhbXBlZEFycmF5KSYmKHM9NTEyMSkse2J1ZmZlcjphLHR5cGU6cyxieXRlc1BlckVsZW1lbnQ6ci5CWVRFU19QRVJfRUxFTUVOVCx2ZXJzaW9uOmUudmVyc2lvbn19KShlLHIpKTpvLnZlcnNpb248ZS52ZXJzaW9uJiYoIShmdW5jdGlvbiBzKGUsaSxyKXtjb25zdCBvPWkuYXJyYXksYT1pLnVwZGF0ZVJhbmdlO3QuYmluZEJ1ZmZlcihyLGUpLC0xPT09YS5jb3VudD90LmJ1ZmZlclN1YkRhdGEociwwLG8pOihuP3QuYnVmZmVyU3ViRGF0YShyLGEub2Zmc2V0Km8uQllURVNfUEVSX0VMRU1FTlQsbyxhLm9mZnNldCxhLmNvdW50KTp0LmJ1ZmZlclN1YkRhdGEocixhLm9mZnNldCpvLkJZVEVTX1BFUl9FTEVNRU5ULG8uc3ViYXJyYXkoYS5vZmZzZXQsYS5vZmZzZXQrYS5jb3VudCkpLGEuY291bnQ9LTEpfSkoby5idWZmZXIsZSxyKSxvLnZlcnNpb249ZS52ZXJzaW9uKX19fWNsYXNzIHk2dCBleHRlbmRzIE40dHtjb25zdHJ1Y3Rvcih0PTEsZT0xLG49MSxpPTEpe3N1cGVyKCksdGhpcy50eXBlPSJQbGFuZUdlb21ldHJ5Iix0aGlzLnBhcmFtZXRlcnM9e3dpZHRoOnQsaGVpZ2h0OmUsd2lkdGhTZWdtZW50czpuLGhlaWdodFNlZ21lbnRzOml9O2NvbnN0IHI9dC8yLG89ZS8yLGE9TWF0aC5mbG9vcihuKSxzPU1hdGguZmxvb3IoaSksbD1hKzEsYz1zKzEsdT10L2EsaD1lL3MsZD1bXSxwPVtdLGY9W10sbT1bXTtmb3IobGV0IHQ9MDt0PGM7dCsrKXtjb25zdCBlPXQqaC1vO2ZvcihsZXQgbj0wO248bDtuKyspe3AucHVzaChuKnUtciwtZSwwKSxmLnB1c2goMCwwLDEpLG0ucHVzaChuL2EpLG0ucHVzaCgxLXQvcyl9fWZvcihsZXQgdD0wO3Q8czt0KyspZm9yKGxldCBlPTA7ZTxhO2UrKyl7Y29uc3Qgbj1lK2wqKHQrMSksaT1lKzErbCoodCsxKSxyPWUrMStsKnQ7ZC5wdXNoKGUrbCp0LG4sciksZC5wdXNoKG4saSxyKX10aGlzLnNldEluZGV4KGQpLHRoaXMuc2V0QXR0cmlidXRlKCJwb3NpdGlvbiIsbmV3IGI0dChwLDMpKSx0aGlzLnNldEF0dHJpYnV0ZSgibm9ybWFsIixuZXcgYjR0KGYsMykpLHRoaXMuc2V0QXR0cmlidXRlKCJ1diIsbmV3IGI0dChtLDIpKX1zdGF0aWMgZnJvbUpTT04odCl7cmV0dXJuIG5ldyB5NnQodC53aWR0aCx0LmhlaWdodCx0LndpZHRoU2VnbWVudHMsdC5oZWlnaHRTZWdtZW50cyl9fWNvbnN0IHY2dD17YWxwaGFtYXBfZnJhZ21lbnQ6IiNpZmRlZiBVU0VfQUxQSEFNQVBcblx0ZGlmZnVzZUNvbG9yLmEgKj0gdGV4dHVyZTJEKCBhbHBoYU1hcCwgdlV2ICkuZztcbiNlbmRpZiIsYWxwaGFtYXBfcGFyc19mcmFnbWVudDoiI2lmZGVmIFVTRV9BTFBIQU1BUFxuXHR1bmlmb3JtIHNhbXBsZXIyRCBhbHBoYU1hcDtcbiNlbmRpZiIsYWxwaGF0ZXN0X2ZyYWdtZW50OiIjaWZkZWYgQUxQSEFURVNUXG5cdGlmICggZGlmZnVzZUNvbG9yLmEgPCBBTFBIQVRFU1QgKSBkaXNjYXJkO1xuI2VuZGlmIixhb21hcF9mcmFnbWVudDoiI2lmZGVmIFVTRV9BT01BUFxuXHRmbG9hdCBhbWJpZW50T2NjbHVzaW9uID0gKCB0ZXh0dXJlMkQoIGFvTWFwLCB2VXYyICkuciAtIDEuMCApICogYW9NYXBJbnRlbnNpdHkgKyAxLjA7XG5cdHJlZmxlY3RlZExpZ2h0LmluZGlyZWN0RGlmZnVzZSAqPSBhbWJpZW50T2NjbHVzaW9uO1xuXHQjaWYgZGVmaW5lZCggVVNFX0VOVk1BUCApICYmIGRlZmluZWQoIFNUQU5EQVJEIClcblx0XHRmbG9hdCBkb3ROViA9IHNhdHVyYXRlKCBkb3QoIGdlb21ldHJ5Lm5vcm1hbCwgZ2VvbWV0cnkudmlld0RpciApICk7XG5cdFx0cmVmbGVjdGVkTGlnaHQuaW5kaXJlY3RTcGVjdWxhciAqPSBjb21wdXRlU3BlY3VsYXJPY2NsdXNpb24oIGRvdE5WLCBhbWJpZW50T2NjbHVzaW9uLCBtYXRlcmlhbC5zcGVjdWxhclJvdWdobmVzcyApO1xuXHQjZW5kaWZcbiNlbmRpZiIsYW9tYXBfcGFyc19mcmFnbWVudDoiI2lmZGVmIFVTRV9BT01BUFxuXHR1bmlmb3JtIHNhbXBsZXIyRCBhb01hcDtcblx0dW5pZm9ybSBmbG9hdCBhb01hcEludGVuc2l0eTtcbiNlbmRpZiIsYmVnaW5fdmVydGV4OiJ2ZWMzIHRyYW5zZm9ybWVkID0gdmVjMyggcG9zaXRpb24gKTsiLGJlZ2lubm9ybWFsX3ZlcnRleDoidmVjMyBvYmplY3ROb3JtYWwgPSB2ZWMzKCBub3JtYWwgKTtcbiNpZmRlZiBVU0VfVEFOR0VOVFxuXHR2ZWMzIG9iamVjdFRhbmdlbnQgPSB2ZWMzKCB0YW5nZW50Lnh5eiApO1xuI2VuZGlmIixic2RmczoidmVjMiBpbnRlZ3JhdGVTcGVjdWxhckJSREYoIGNvbnN0IGluIGZsb2F0IGRvdE5WLCBjb25zdCBpbiBmbG9hdCByb3VnaG5lc3MgKSB7XG5cdGNvbnN0IHZlYzQgYzAgPSB2ZWM0KCAtIDEsIC0gMC4wMjc1LCAtIDAuNTcyLCAwLjAyMiApO1xuXHRjb25zdCB2ZWM0IGMxID0gdmVjNCggMSwgMC4wNDI1LCAxLjA0LCAtIDAuMDQgKTtcblx0dmVjNCByID0gcm91Z2huZXNzICogYzAgKyBjMTtcblx0ZmxvYXQgYTAwNCA9IG1pbiggci54ICogci54LCBleHAyKCAtIDkuMjggKiBkb3ROViApICkgKiByLnggKyByLnk7XG5cdHJldHVybiB2ZWMyKCAtMS4wNCwgMS4wNCApICogYTAwNCArIHIuenc7XG59XG5mbG9hdCBwdW5jdHVhbExpZ2h0SW50ZW5zaXR5VG9JcnJhZGlhbmNlRmFjdG9yKCBjb25zdCBpbiBmbG9hdCBsaWdodERpc3RhbmNlLCBjb25zdCBpbiBmbG9hdCBjdXRvZmZEaXN0YW5jZSwgY29uc3QgaW4gZmxvYXQgZGVjYXlFeHBvbmVudCApIHtcbiNpZiBkZWZpbmVkICggUEhZU0lDQUxMWV9DT1JSRUNUX0xJR0hUUyApXG5cdGZsb2F0IGRpc3RhbmNlRmFsbG9mZiA9IDEuMCAvIG1heCggcG93KCBsaWdodERpc3RhbmNlLCBkZWNheUV4cG9uZW50ICksIDAuMDEgKTtcblx0aWYoIGN1dG9mZkRpc3RhbmNlID4gMC4wICkge1xuXHRcdGRpc3RhbmNlRmFsbG9mZiAqPSBwb3cyKCBzYXR1cmF0ZSggMS4wIC0gcG93NCggbGlnaHREaXN0YW5jZSAvIGN1dG9mZkRpc3RhbmNlICkgKSApO1xuXHR9XG5cdHJldHVybiBkaXN0YW5jZUZhbGxvZmY7XG4jZWxzZVxuXHRpZiggY3V0b2ZmRGlzdGFuY2UgPiAwLjAgJiYgZGVjYXlFeHBvbmVudCA+IDAuMCApIHtcblx0XHRyZXR1cm4gcG93KCBzYXR1cmF0ZSggLWxpZ2h0RGlzdGFuY2UgLyBjdXRvZmZEaXN0YW5jZSArIDEuMCApLCBkZWNheUV4cG9uZW50ICk7XG5cdH1cblx0cmV0dXJuIDEuMDtcbiNlbmRpZlxufVxudmVjMyBCUkRGX0RpZmZ1c2VfTGFtYmVydCggY29uc3QgaW4gdmVjMyBkaWZmdXNlQ29sb3IgKSB7XG5cdHJldHVybiBSRUNJUFJPQ0FMX1BJICogZGlmZnVzZUNvbG9yO1xufVxudmVjMyBGX1NjaGxpY2soIGNvbnN0IGluIHZlYzMgZjAsIGNvbnN0IGluIHZlYzMgZjkwLCBjb25zdCBpbiBmbG9hdCBkb3RWSCApIHtcblx0ZmxvYXQgZnJlc25lbCA9IGV4cDIoICggLTUuNTU0NzMgKiBkb3RWSCAtIDYuOTgzMTYgKSAqIGRvdFZIICk7XG5cdHJldHVybiAoIGY5MCAtIGYwICkgKiBmcmVzbmVsICsgZjA7XG59XG52ZWMzIEZfU2NobGlja19Sb3VnaG5lc3NEZXBlbmRlbnQoIGNvbnN0IGluIHZlYzMgRjAsIGNvbnN0IGluIGZsb2F0IGRvdE5WLCBjb25zdCBpbiBmbG9hdCByb3VnaG5lc3MgKSB7XG5cdGZsb2F0IGZyZXNuZWwgPSBleHAyKCAoIC01LjU1NDczICogZG90TlYgLSA2Ljk4MzE2ICkgKiBkb3ROViApO1xuXHR2ZWMzIEZyID0gbWF4KCB2ZWMzKCAxLjAgLSByb3VnaG5lc3MgKSwgRjAgKSAtIEYwO1xuXHRyZXR1cm4gRnIgKiBmcmVzbmVsICsgRjA7XG59XG5mbG9hdCBHX0dHWF9TbWl0aCggY29uc3QgaW4gZmxvYXQgYWxwaGEsIGNvbnN0IGluIGZsb2F0IGRvdE5MLCBjb25zdCBpbiBmbG9hdCBkb3ROViApIHtcblx0ZmxvYXQgYTIgPSBwb3cyKCBhbHBoYSApO1xuXHRmbG9hdCBnbCA9IGRvdE5MICsgc3FydCggYTIgKyAoIDEuMCAtIGEyICkgKiBwb3cyKCBkb3ROTCApICk7XG5cdGZsb2F0IGd2ID0gZG90TlYgKyBzcXJ0KCBhMiArICggMS4wIC0gYTIgKSAqIHBvdzIoIGRvdE5WICkgKTtcblx0cmV0dXJuIDEuMCAvICggZ2wgKiBndiApO1xufVxuZmxvYXQgR19HR1hfU21pdGhDb3JyZWxhdGVkKCBjb25zdCBpbiBmbG9hdCBhbHBoYSwgY29uc3QgaW4gZmxvYXQgZG90TkwsIGNvbnN0IGluIGZsb2F0IGRvdE5WICkge1xuXHRmbG9hdCBhMiA9IHBvdzIoIGFscGhhICk7XG5cdGZsb2F0IGd2ID0gZG90TkwgKiBzcXJ0KCBhMiArICggMS4wIC0gYTIgKSAqIHBvdzIoIGRvdE5WICkgKTtcblx0ZmxvYXQgZ2wgPSBkb3ROViAqIHNxcnQoIGEyICsgKCAxLjAgLSBhMiApICogcG93MiggZG90TkwgKSApO1xuXHRyZXR1cm4gMC41IC8gbWF4KCBndiArIGdsLCBFUFNJTE9OICk7XG59XG5mbG9hdCBEX0dHWCggY29uc3QgaW4gZmxvYXQgYWxwaGEsIGNvbnN0IGluIGZsb2F0IGRvdE5IICkge1xuXHRmbG9hdCBhMiA9IHBvdzIoIGFscGhhICk7XG5cdGZsb2F0IGRlbm9tID0gcG93MiggZG90TkggKSAqICggYTIgLSAxLjAgKSArIDEuMDtcblx0cmV0dXJuIFJFQ0lQUk9DQUxfUEkgKiBhMiAvIHBvdzIoIGRlbm9tICk7XG59XG52ZWMzIEJSREZfU3BlY3VsYXJfR0dYKCBjb25zdCBpbiBJbmNpZGVudExpZ2h0IGluY2lkZW50TGlnaHQsIGNvbnN0IGluIHZlYzMgdmlld0RpciwgY29uc3QgaW4gdmVjMyBub3JtYWwsIGNvbnN0IGluIHZlYzMgZjAsIGNvbnN0IGluIHZlYzMgZjkwLCBjb25zdCBpbiBmbG9hdCByb3VnaG5lc3MgKSB7XG5cdGZsb2F0IGFscGhhID0gcG93Miggcm91Z2huZXNzICk7XG5cdHZlYzMgaGFsZkRpciA9IG5vcm1hbGl6ZSggaW5jaWRlbnRMaWdodC5kaXJlY3Rpb24gKyB2aWV3RGlyICk7XG5cdGZsb2F0IGRvdE5MID0gc2F0dXJhdGUoIGRvdCggbm9ybWFsLCBpbmNpZGVudExpZ2h0LmRpcmVjdGlvbiApICk7XG5cdGZsb2F0IGRvdE5WID0gc2F0dXJhdGUoIGRvdCggbm9ybWFsLCB2aWV3RGlyICkgKTtcblx0ZmxvYXQgZG90TkggPSBzYXR1cmF0ZSggZG90KCBub3JtYWwsIGhhbGZEaXIgKSApO1xuXHRmbG9hdCBkb3RMSCA9IHNhdHVyYXRlKCBkb3QoIGluY2lkZW50TGlnaHQuZGlyZWN0aW9uLCBoYWxmRGlyICkgKTtcblx0dmVjMyBGID0gRl9TY2hsaWNrKCBmMCwgZjkwLCBkb3RMSCApO1xuXHRmbG9hdCBHID0gR19HR1hfU21pdGhDb3JyZWxhdGVkKCBhbHBoYSwgZG90TkwsIGRvdE5WICk7XG5cdGZsb2F0IEQgPSBEX0dHWCggYWxwaGEsIGRvdE5IICk7XG5cdHJldHVybiBGICogKCBHICogRCApO1xufVxudmVjMiBMVENfVXYoIGNvbnN0IGluIHZlYzMgTiwgY29uc3QgaW4gdmVjMyBWLCBjb25zdCBpbiBmbG9hdCByb3VnaG5lc3MgKSB7XG5cdGNvbnN0IGZsb2F0IExVVF9TSVpFID0gNjQuMDtcblx0Y29uc3QgZmxvYXQgTFVUX1NDQUxFID0gKCBMVVRfU0laRSAtIDEuMCApIC8gTFVUX1NJWkU7XG5cdGNvbnN0IGZsb2F0IExVVF9CSUFTID0gMC41IC8gTFVUX1NJWkU7XG5cdGZsb2F0IGRvdE5WID0gc2F0dXJhdGUoIGRvdCggTiwgViApICk7XG5cdHZlYzIgdXYgPSB2ZWMyKCByb3VnaG5lc3MsIHNxcnQoIDEuMCAtIGRvdE5WICkgKTtcblx0dXYgPSB1diAqIExVVF9TQ0FMRSArIExVVF9CSUFTO1xuXHRyZXR1cm4gdXY7XG59XG5mbG9hdCBMVENfQ2xpcHBlZFNwaGVyZUZvcm1GYWN0b3IoIGNvbnN0IGluIHZlYzMgZiApIHtcblx0ZmxvYXQgbCA9IGxlbmd0aCggZiApO1xuXHRyZXR1cm4gbWF4KCAoIGwgKiBsICsgZi56ICkgLyAoIGwgKyAxLjAgKSwgMC4wICk7XG59XG52ZWMzIExUQ19FZGdlVmVjdG9yRm9ybUZhY3RvciggY29uc3QgaW4gdmVjMyB2MSwgY29uc3QgaW4gdmVjMyB2MiApIHtcblx0ZmxvYXQgeCA9IGRvdCggdjEsIHYyICk7XG5cdGZsb2F0IHkgPSBhYnMoIHggKTtcblx0ZmxvYXQgYSA9IDAuODU0Mzk4NSArICggMC40OTY1MTU1ICsgMC4wMTQ1MjA2ICogeSApICogeTtcblx0ZmxvYXQgYiA9IDMuNDE3NTk0MCArICggNC4xNjE2NzI0ICsgeSApICogeTtcblx0ZmxvYXQgdiA9IGEgLyBiO1xuXHRmbG9hdCB0aGV0YV9zaW50aGV0YSA9ICggeCA+IDAuMCApID8gdiA6IDAuNSAqIGludmVyc2VzcXJ0KCBtYXgoIDEuMCAtIHggKiB4LCAxZS03ICkgKSAtIHY7XG5cdHJldHVybiBjcm9zcyggdjEsIHYyICkgKiB0aGV0YV9zaW50aGV0YTtcbn1cbnZlYzMgTFRDX0V2YWx1YXRlKCBjb25zdCBpbiB2ZWMzIE4sIGNvbnN0IGluIHZlYzMgViwgY29uc3QgaW4gdmVjMyBQLCBjb25zdCBpbiBtYXQzIG1JbnYsIGNvbnN0IGluIHZlYzMgcmVjdENvb3Jkc1sgNCBdICkge1xuXHR2ZWMzIHYxID0gcmVjdENvb3Jkc1sgMSBdIC0gcmVjdENvb3Jkc1sgMCBdO1xuXHR2ZWMzIHYyID0gcmVjdENvb3Jkc1sgMyBdIC0gcmVjdENvb3Jkc1sgMCBdO1xuXHR2ZWMzIGxpZ2h0Tm9ybWFsID0gY3Jvc3MoIHYxLCB2MiApO1xuXHRpZiggZG90KCBsaWdodE5vcm1hbCwgUCAtIHJlY3RDb29yZHNbIDAgXSApIDwgMC4wICkgcmV0dXJuIHZlYzMoIDAuMCApO1xuXHR2ZWMzIFQxLCBUMjtcblx0VDEgPSBub3JtYWxpemUoIFYgLSBOICogZG90KCBWLCBOICkgKTtcblx0VDIgPSAtIGNyb3NzKCBOLCBUMSApO1xuXHRtYXQzIG1hdCA9IG1JbnYgKiB0cmFuc3Bvc2VNYXQzKCBtYXQzKCBUMSwgVDIsIE4gKSApO1xuXHR2ZWMzIGNvb3Jkc1sgNCBdO1xuXHRjb29yZHNbIDAgXSA9IG1hdCAqICggcmVjdENvb3Jkc1sgMCBdIC0gUCApO1xuXHRjb29yZHNbIDEgXSA9IG1hdCAqICggcmVjdENvb3Jkc1sgMSBdIC0gUCApO1xuXHRjb29yZHNbIDIgXSA9IG1hdCAqICggcmVjdENvb3Jkc1sgMiBdIC0gUCApO1xuXHRjb29yZHNbIDMgXSA9IG1hdCAqICggcmVjdENvb3Jkc1sgMyBdIC0gUCApO1xuXHRjb29yZHNbIDAgXSA9IG5vcm1hbGl6ZSggY29vcmRzWyAwIF0gKTtcblx0Y29vcmRzWyAxIF0gPSBub3JtYWxpemUoIGNvb3Jkc1sgMSBdICk7XG5cdGNvb3Jkc1sgMiBdID0gbm9ybWFsaXplKCBjb29yZHNbIDIgXSApO1xuXHRjb29yZHNbIDMgXSA9IG5vcm1hbGl6ZSggY29vcmRzWyAzIF0gKTtcblx0dmVjMyB2ZWN0b3JGb3JtRmFjdG9yID0gdmVjMyggMC4wICk7XG5cdHZlY3RvckZvcm1GYWN0b3IgKz0gTFRDX0VkZ2VWZWN0b3JGb3JtRmFjdG9yKCBjb29yZHNbIDAgXSwgY29vcmRzWyAxIF0gKTtcblx0dmVjdG9yRm9ybUZhY3RvciArPSBMVENfRWRnZVZlY3RvckZvcm1GYWN0b3IoIGNvb3Jkc1sgMSBdLCBjb29yZHNbIDIgXSApO1xuXHR2ZWN0b3JGb3JtRmFjdG9yICs9IExUQ19FZGdlVmVjdG9yRm9ybUZhY3RvciggY29vcmRzWyAyIF0sIGNvb3Jkc1sgMyBdICk7XG5cdHZlY3RvckZvcm1GYWN0b3IgKz0gTFRDX0VkZ2VWZWN0b3JGb3JtRmFjdG9yKCBjb29yZHNbIDMgXSwgY29vcmRzWyAwIF0gKTtcblx0ZmxvYXQgcmVzdWx0ID0gTFRDX0NsaXBwZWRTcGhlcmVGb3JtRmFjdG9yKCB2ZWN0b3JGb3JtRmFjdG9yICk7XG5cdHJldHVybiB2ZWMzKCByZXN1bHQgKTtcbn1cbnZlYzMgQlJERl9TcGVjdWxhcl9HR1hfRW52aXJvbm1lbnQoIGNvbnN0IGluIHZlYzMgdmlld0RpciwgY29uc3QgaW4gdmVjMyBub3JtYWwsIGNvbnN0IGluIHZlYzMgc3BlY3VsYXJDb2xvciwgY29uc3QgaW4gZmxvYXQgcm91Z2huZXNzICkge1xuXHRmbG9hdCBkb3ROViA9IHNhdHVyYXRlKCBkb3QoIG5vcm1hbCwgdmlld0RpciApICk7XG5cdHZlYzIgYnJkZiA9IGludGVncmF0ZVNwZWN1bGFyQlJERiggZG90TlYsIHJvdWdobmVzcyApO1xuXHRyZXR1cm4gc3BlY3VsYXJDb2xvciAqIGJyZGYueCArIGJyZGYueTtcbn1cbnZvaWQgQlJERl9TcGVjdWxhcl9NdWx0aXNjYXR0ZXJpbmdfRW52aXJvbm1lbnQoIGNvbnN0IGluIEdlb21ldHJpY0NvbnRleHQgZ2VvbWV0cnksIGNvbnN0IGluIHZlYzMgc3BlY3VsYXJDb2xvciwgY29uc3QgaW4gZmxvYXQgcm91Z2huZXNzLCBpbm91dCB2ZWMzIHNpbmdsZVNjYXR0ZXIsIGlub3V0IHZlYzMgbXVsdGlTY2F0dGVyICkge1xuXHRmbG9hdCBkb3ROViA9IHNhdHVyYXRlKCBkb3QoIGdlb21ldHJ5Lm5vcm1hbCwgZ2VvbWV0cnkudmlld0RpciApICk7XG5cdHZlYzMgRiA9IEZfU2NobGlja19Sb3VnaG5lc3NEZXBlbmRlbnQoIHNwZWN1bGFyQ29sb3IsIGRvdE5WLCByb3VnaG5lc3MgKTtcblx0dmVjMiBicmRmID0gaW50ZWdyYXRlU3BlY3VsYXJCUkRGKCBkb3ROViwgcm91Z2huZXNzICk7XG5cdHZlYzMgRnNzRXNzID0gRiAqIGJyZGYueCArIGJyZGYueTtcblx0ZmxvYXQgRXNzID0gYnJkZi54ICsgYnJkZi55O1xuXHRmbG9hdCBFbXMgPSAxLjAgLSBFc3M7XG5cdHZlYzMgRmF2ZyA9IHNwZWN1bGFyQ29sb3IgKyAoIDEuMCAtIHNwZWN1bGFyQ29sb3IgKSAqIDAuMDQ3NjE5O1x0dmVjMyBGbXMgPSBGc3NFc3MgKiBGYXZnIC8gKCAxLjAgLSBFbXMgKiBGYXZnICk7XG5cdHNpbmdsZVNjYXR0ZXIgKz0gRnNzRXNzO1xuXHRtdWx0aVNjYXR0ZXIgKz0gRm1zICogRW1zO1xufVxuZmxvYXQgR19CbGlublBob25nX0ltcGxpY2l0KCApIHtcblx0cmV0dXJuIDAuMjU7XG59XG5mbG9hdCBEX0JsaW5uUGhvbmcoIGNvbnN0IGluIGZsb2F0IHNoaW5pbmVzcywgY29uc3QgaW4gZmxvYXQgZG90TkggKSB7XG5cdHJldHVybiBSRUNJUFJPQ0FMX1BJICogKCBzaGluaW5lc3MgKiAwLjUgKyAxLjAgKSAqIHBvdyggZG90TkgsIHNoaW5pbmVzcyApO1xufVxudmVjMyBCUkRGX1NwZWN1bGFyX0JsaW5uUGhvbmcoIGNvbnN0IGluIEluY2lkZW50TGlnaHQgaW5jaWRlbnRMaWdodCwgY29uc3QgaW4gR2VvbWV0cmljQ29udGV4dCBnZW9tZXRyeSwgY29uc3QgaW4gdmVjMyBzcGVjdWxhckNvbG9yLCBjb25zdCBpbiBmbG9hdCBzaGluaW5lc3MgKSB7XG5cdHZlYzMgaGFsZkRpciA9IG5vcm1hbGl6ZSggaW5jaWRlbnRMaWdodC5kaXJlY3Rpb24gKyBnZW9tZXRyeS52aWV3RGlyICk7XG5cdGZsb2F0IGRvdE5IID0gc2F0dXJhdGUoIGRvdCggZ2VvbWV0cnkubm9ybWFsLCBoYWxmRGlyICkgKTtcblx0ZmxvYXQgZG90TEggPSBzYXR1cmF0ZSggZG90KCBpbmNpZGVudExpZ2h0LmRpcmVjdGlvbiwgaGFsZkRpciApICk7XG5cdHZlYzMgRiA9IEZfU2NobGljayggc3BlY3VsYXJDb2xvciwgdmVjMyggMS4wICksIGRvdExIICk7XG5cdGZsb2F0IEcgPSBHX0JsaW5uUGhvbmdfSW1wbGljaXQoICk7XG5cdGZsb2F0IEQgPSBEX0JsaW5uUGhvbmcoIHNoaW5pbmVzcywgZG90TkggKTtcblx0cmV0dXJuIEYgKiAoIEcgKiBEICk7XG59XG5mbG9hdCBHR1hSb3VnaG5lc3NUb0JsaW5uRXhwb25lbnQoIGNvbnN0IGluIGZsb2F0IGdneFJvdWdobmVzcyApIHtcblx0cmV0dXJuICggMi4wIC8gcG93MiggZ2d4Um91Z2huZXNzICsgMC4wMDAxICkgLSAyLjAgKTtcbn1cbmZsb2F0IEJsaW5uRXhwb25lbnRUb0dHWFJvdWdobmVzcyggY29uc3QgaW4gZmxvYXQgYmxpbm5FeHBvbmVudCApIHtcblx0cmV0dXJuIHNxcnQoIDIuMCAvICggYmxpbm5FeHBvbmVudCArIDIuMCApICk7XG59XG4jaWYgZGVmaW5lZCggVVNFX1NIRUVOIClcbmZsb2F0IERfQ2hhcmxpZShmbG9hdCByb3VnaG5lc3MsIGZsb2F0IE5vSCkge1xuXHRmbG9hdCBpbnZBbHBoYSA9IDEuMCAvIHJvdWdobmVzcztcblx0ZmxvYXQgY29zMmggPSBOb0ggKiBOb0g7XG5cdGZsb2F0IHNpbjJoID0gbWF4KDEuMCAtIGNvczJoLCAwLjAwNzgxMjUpO1x0cmV0dXJuICgyLjAgKyBpbnZBbHBoYSkgKiBwb3coc2luMmgsIGludkFscGhhICogMC41KSAvICgyLjAgKiBQSSk7XG59XG5mbG9hdCBWX05ldWJlbHQoZmxvYXQgTm9WLCBmbG9hdCBOb0wpIHtcblx0cmV0dXJuIHNhdHVyYXRlKDEuMCAvICg0LjAgKiAoTm9MICsgTm9WIC0gTm9MICogTm9WKSkpO1xufVxudmVjMyBCUkRGX1NwZWN1bGFyX1NoZWVuKCBjb25zdCBpbiBmbG9hdCByb3VnaG5lc3MsIGNvbnN0IGluIHZlYzMgTCwgY29uc3QgaW4gR2VvbWV0cmljQ29udGV4dCBnZW9tZXRyeSwgdmVjMyBzcGVjdWxhckNvbG9yICkge1xuXHR2ZWMzIE4gPSBnZW9tZXRyeS5ub3JtYWw7XG5cdHZlYzMgViA9IGdlb21ldHJ5LnZpZXdEaXI7XG5cdHZlYzMgSCA9IG5vcm1hbGl6ZSggViArIEwgKTtcblx0ZmxvYXQgZG90TkggPSBzYXR1cmF0ZSggZG90KCBOLCBIICkgKTtcblx0cmV0dXJuIHNwZWN1bGFyQ29sb3IgKiBEX0NoYXJsaWUoIHJvdWdobmVzcywgZG90TkggKSAqIFZfTmV1YmVsdCggZG90KE4sIFYpLCBkb3QoTiwgTCkgKTtcbn1cbiNlbmRpZiIsYnVtcG1hcF9wYXJzX2ZyYWdtZW50OiIjaWZkZWYgVVNFX0JVTVBNQVBcblx0dW5pZm9ybSBzYW1wbGVyMkQgYnVtcE1hcDtcblx0dW5pZm9ybSBmbG9hdCBidW1wU2NhbGU7XG5cdHZlYzIgZEhkeHlfZndkKCkge1xuXHRcdHZlYzIgZFNUZHggPSBkRmR4KCB2VXYgKTtcblx0XHR2ZWMyIGRTVGR5ID0gZEZkeSggdlV2ICk7XG5cdFx0ZmxvYXQgSGxsID0gYnVtcFNjYWxlICogdGV4dHVyZTJEKCBidW1wTWFwLCB2VXYgKS54O1xuXHRcdGZsb2F0IGRCeCA9IGJ1bXBTY2FsZSAqIHRleHR1cmUyRCggYnVtcE1hcCwgdlV2ICsgZFNUZHggKS54IC0gSGxsO1xuXHRcdGZsb2F0IGRCeSA9IGJ1bXBTY2FsZSAqIHRleHR1cmUyRCggYnVtcE1hcCwgdlV2ICsgZFNUZHkgKS54IC0gSGxsO1xuXHRcdHJldHVybiB2ZWMyKCBkQngsIGRCeSApO1xuXHR9XG5cdHZlYzMgcGVydHVyYk5vcm1hbEFyYiggdmVjMyBzdXJmX3BvcywgdmVjMyBzdXJmX25vcm0sIHZlYzIgZEhkeHksIGZsb2F0IGZhY2VEaXJlY3Rpb24gKSB7XG5cdFx0dmVjMyB2U2lnbWFYID0gdmVjMyggZEZkeCggc3VyZl9wb3MueCApLCBkRmR4KCBzdXJmX3Bvcy55ICksIGRGZHgoIHN1cmZfcG9zLnogKSApO1xuXHRcdHZlYzMgdlNpZ21hWSA9IHZlYzMoIGRGZHkoIHN1cmZfcG9zLnggKSwgZEZkeSggc3VyZl9wb3MueSApLCBkRmR5KCBzdXJmX3Bvcy56ICkgKTtcblx0XHR2ZWMzIHZOID0gc3VyZl9ub3JtO1xuXHRcdHZlYzMgUjEgPSBjcm9zcyggdlNpZ21hWSwgdk4gKTtcblx0XHR2ZWMzIFIyID0gY3Jvc3MoIHZOLCB2U2lnbWFYICk7XG5cdFx0ZmxvYXQgZkRldCA9IGRvdCggdlNpZ21hWCwgUjEgKSAqIGZhY2VEaXJlY3Rpb247XG5cdFx0dmVjMyB2R3JhZCA9IHNpZ24oIGZEZXQgKSAqICggZEhkeHkueCAqIFIxICsgZEhkeHkueSAqIFIyICk7XG5cdFx0cmV0dXJuIG5vcm1hbGl6ZSggYWJzKCBmRGV0ICkgKiBzdXJmX25vcm0gLSB2R3JhZCApO1xuXHR9XG4jZW5kaWYiLGNsaXBwaW5nX3BsYW5lc19mcmFnbWVudDoiI2lmIE5VTV9DTElQUElOR19QTEFORVMgPiAwXG5cdHZlYzQgcGxhbmU7XG5cdCNwcmFnbWEgdW5yb2xsX2xvb3Bfc3RhcnRcblx0Zm9yICggaW50IGkgPSAwOyBpIDwgVU5JT05fQ0xJUFBJTkdfUExBTkVTOyBpICsrICkge1xuXHRcdHBsYW5lID0gY2xpcHBpbmdQbGFuZXNbIGkgXTtcblx0XHRpZiAoIGRvdCggdkNsaXBQb3NpdGlvbiwgcGxhbmUueHl6ICkgPiBwbGFuZS53ICkgZGlzY2FyZDtcblx0fVxuXHQjcHJhZ21hIHVucm9sbF9sb29wX2VuZFxuXHQjaWYgVU5JT05fQ0xJUFBJTkdfUExBTkVTIDwgTlVNX0NMSVBQSU5HX1BMQU5FU1xuXHRcdGJvb2wgY2xpcHBlZCA9IHRydWU7XG5cdFx0I3ByYWdtYSB1bnJvbGxfbG9vcF9zdGFydFxuXHRcdGZvciAoIGludCBpID0gVU5JT05fQ0xJUFBJTkdfUExBTkVTOyBpIDwgTlVNX0NMSVBQSU5HX1BMQU5FUzsgaSArKyApIHtcblx0XHRcdHBsYW5lID0gY2xpcHBpbmdQbGFuZXNbIGkgXTtcblx0XHRcdGNsaXBwZWQgPSAoIGRvdCggdkNsaXBQb3NpdGlvbiwgcGxhbmUueHl6ICkgPiBwbGFuZS53ICkgJiYgY2xpcHBlZDtcblx0XHR9XG5cdFx0I3ByYWdtYSB1bnJvbGxfbG9vcF9lbmRcblx0XHRpZiAoIGNsaXBwZWQgKSBkaXNjYXJkO1xuXHQjZW5kaWZcbiNlbmRpZiIsY2xpcHBpbmdfcGxhbmVzX3BhcnNfZnJhZ21lbnQ6IiNpZiBOVU1fQ0xJUFBJTkdfUExBTkVTID4gMFxuXHR2YXJ5aW5nIHZlYzMgdkNsaXBQb3NpdGlvbjtcblx0dW5pZm9ybSB2ZWM0IGNsaXBwaW5nUGxhbmVzWyBOVU1fQ0xJUFBJTkdfUExBTkVTIF07XG4jZW5kaWYiLGNsaXBwaW5nX3BsYW5lc19wYXJzX3ZlcnRleDoiI2lmIE5VTV9DTElQUElOR19QTEFORVMgPiAwXG5cdHZhcnlpbmcgdmVjMyB2Q2xpcFBvc2l0aW9uO1xuI2VuZGlmIixjbGlwcGluZ19wbGFuZXNfdmVydGV4OiIjaWYgTlVNX0NMSVBQSU5HX1BMQU5FUyA+IDBcblx0dkNsaXBQb3NpdGlvbiA9IC0gbXZQb3NpdGlvbi54eXo7XG4jZW5kaWYiLGNvbG9yX2ZyYWdtZW50OiIjaWYgZGVmaW5lZCggVVNFX0NPTE9SX0FMUEhBIClcblx0ZGlmZnVzZUNvbG9yICo9IHZDb2xvcjtcbiNlbGlmIGRlZmluZWQoIFVTRV9DT0xPUiApXG5cdGRpZmZ1c2VDb2xvci5yZ2IgKj0gdkNvbG9yO1xuI2VuZGlmIixjb2xvcl9wYXJzX2ZyYWdtZW50OiIjaWYgZGVmaW5lZCggVVNFX0NPTE9SX0FMUEhBIClcblx0dmFyeWluZyB2ZWM0IHZDb2xvcjtcbiNlbGlmIGRlZmluZWQoIFVTRV9DT0xPUiApXG5cdHZhcnlpbmcgdmVjMyB2Q29sb3I7XG4jZW5kaWYiLGNvbG9yX3BhcnNfdmVydGV4OiIjaWYgZGVmaW5lZCggVVNFX0NPTE9SX0FMUEhBIClcblx0dmFyeWluZyB2ZWM0IHZDb2xvcjtcbiNlbGlmIGRlZmluZWQoIFVTRV9DT0xPUiApIHx8IGRlZmluZWQoIFVTRV9JTlNUQU5DSU5HX0NPTE9SIClcblx0dmFyeWluZyB2ZWMzIHZDb2xvcjtcbiNlbmRpZiIsY29sb3JfdmVydGV4OiIjaWYgZGVmaW5lZCggVVNFX0NPTE9SX0FMUEhBIClcblx0dkNvbG9yID0gdmVjNCggMS4wICk7XG4jZWxpZiBkZWZpbmVkKCBVU0VfQ09MT1IgKSB8fCBkZWZpbmVkKCBVU0VfSU5TVEFOQ0lOR19DT0xPUiApXG5cdHZDb2xvciA9IHZlYzMoIDEuMCApO1xuI2VuZGlmXG4jaWZkZWYgVVNFX0NPTE9SXG5cdHZDb2xvciAqPSBjb2xvcjtcbiNlbmRpZlxuI2lmZGVmIFVTRV9JTlNUQU5DSU5HX0NPTE9SXG5cdHZDb2xvci54eXogKj0gaW5zdGFuY2VDb2xvci54eXo7XG4jZW5kaWYiLGNvbW1vbjoiI2RlZmluZSBQSSAzLjE0MTU5MjY1MzU4OTc5M1xuI2RlZmluZSBQSTIgNi4yODMxODUzMDcxNzk1ODZcbiNkZWZpbmUgUElfSEFMRiAxLjU3MDc5NjMyNjc5NDg5NjZcbiNkZWZpbmUgUkVDSVBST0NBTF9QSSAwLjMxODMwOTg4NjE4Mzc5MDdcbiNkZWZpbmUgUkVDSVBST0NBTF9QSTIgMC4xNTkxNTQ5NDMwOTE4OTUzNVxuI2RlZmluZSBFUFNJTE9OIDFlLTZcbiNpZm5kZWYgc2F0dXJhdGVcbiNkZWZpbmUgc2F0dXJhdGUoYSkgY2xhbXAoIGEsIDAuMCwgMS4wIClcbiNlbmRpZlxuI2RlZmluZSB3aGl0ZUNvbXBsZW1lbnQoYSkgKCAxLjAgLSBzYXR1cmF0ZSggYSApIClcbmZsb2F0IHBvdzIoIGNvbnN0IGluIGZsb2F0IHggKSB7IHJldHVybiB4Kng7IH1cbmZsb2F0IHBvdzMoIGNvbnN0IGluIGZsb2F0IHggKSB7IHJldHVybiB4KngqeDsgfVxuZmxvYXQgcG93NCggY29uc3QgaW4gZmxvYXQgeCApIHsgZmxvYXQgeDIgPSB4Kng7IHJldHVybiB4Mip4MjsgfVxuZmxvYXQgYXZlcmFnZSggY29uc3QgaW4gdmVjMyBjb2xvciApIHsgcmV0dXJuIGRvdCggY29sb3IsIHZlYzMoIDAuMzMzMyApICk7IH1cbmhpZ2hwIGZsb2F0IHJhbmQoIGNvbnN0IGluIHZlYzIgdXYgKSB7XG5cdGNvbnN0IGhpZ2hwIGZsb2F0IGEgPSAxMi45ODk4LCBiID0gNzguMjMzLCBjID0gNDM3NTguNTQ1Mztcblx0aGlnaHAgZmxvYXQgZHQgPSBkb3QoIHV2Lnh5LCB2ZWMyKCBhLGIgKSApLCBzbiA9IG1vZCggZHQsIFBJICk7XG5cdHJldHVybiBmcmFjdChzaW4oc24pICogYyk7XG59XG4jaWZkZWYgSElHSF9QUkVDSVNJT05cblx0ZmxvYXQgcHJlY2lzaW9uU2FmZUxlbmd0aCggdmVjMyB2ICkgeyByZXR1cm4gbGVuZ3RoKCB2ICk7IH1cbiNlbHNlXG5cdGZsb2F0IG1heDMoIHZlYzMgdiApIHsgcmV0dXJuIG1heCggbWF4KCB2LngsIHYueSApLCB2LnogKTsgfVxuXHRmbG9hdCBwcmVjaXNpb25TYWZlTGVuZ3RoKCB2ZWMzIHYgKSB7XG5cdFx0ZmxvYXQgbWF4Q29tcG9uZW50ID0gbWF4MyggYWJzKCB2ICkgKTtcblx0XHRyZXR1cm4gbGVuZ3RoKCB2IC8gbWF4Q29tcG9uZW50ICkgKiBtYXhDb21wb25lbnQ7XG5cdH1cbiNlbmRpZlxuc3RydWN0IEluY2lkZW50TGlnaHQge1xuXHR2ZWMzIGNvbG9yO1xuXHR2ZWMzIGRpcmVjdGlvbjtcblx0Ym9vbCB2aXNpYmxlO1xufTtcbnN0cnVjdCBSZWZsZWN0ZWRMaWdodCB7XG5cdHZlYzMgZGlyZWN0RGlmZnVzZTtcblx0dmVjMyBkaXJlY3RTcGVjdWxhcjtcblx0dmVjMyBpbmRpcmVjdERpZmZ1c2U7XG5cdHZlYzMgaW5kaXJlY3RTcGVjdWxhcjtcbn07XG5zdHJ1Y3QgR2VvbWV0cmljQ29udGV4dCB7XG5cdHZlYzMgcG9zaXRpb247XG5cdHZlYzMgbm9ybWFsO1xuXHR2ZWMzIHZpZXdEaXI7XG4jaWZkZWYgQ0xFQVJDT0FUXG5cdHZlYzMgY2xlYXJjb2F0Tm9ybWFsO1xuI2VuZGlmXG59O1xudmVjMyB0cmFuc2Zvcm1EaXJlY3Rpb24oIGluIHZlYzMgZGlyLCBpbiBtYXQ0IG1hdHJpeCApIHtcblx0cmV0dXJuIG5vcm1hbGl6ZSggKCBtYXRyaXggKiB2ZWM0KCBkaXIsIDAuMCApICkueHl6ICk7XG59XG52ZWMzIGludmVyc2VUcmFuc2Zvcm1EaXJlY3Rpb24oIGluIHZlYzMgZGlyLCBpbiBtYXQ0IG1hdHJpeCApIHtcblx0cmV0dXJuIG5vcm1hbGl6ZSggKCB2ZWM0KCBkaXIsIDAuMCApICogbWF0cml4ICkueHl6ICk7XG59XG52ZWMzIHByb2plY3RPblBsYW5lKGluIHZlYzMgcG9pbnQsIGluIHZlYzMgcG9pbnRPblBsYW5lLCBpbiB2ZWMzIHBsYW5lTm9ybWFsICkge1xuXHRmbG9hdCBkaXN0YW5jZSA9IGRvdCggcGxhbmVOb3JtYWwsIHBvaW50IC0gcG9pbnRPblBsYW5lICk7XG5cdHJldHVybiAtIGRpc3RhbmNlICogcGxhbmVOb3JtYWwgKyBwb2ludDtcbn1cbmZsb2F0IHNpZGVPZlBsYW5lKCBpbiB2ZWMzIHBvaW50LCBpbiB2ZWMzIHBvaW50T25QbGFuZSwgaW4gdmVjMyBwbGFuZU5vcm1hbCApIHtcblx0cmV0dXJuIHNpZ24oIGRvdCggcG9pbnQgLSBwb2ludE9uUGxhbmUsIHBsYW5lTm9ybWFsICkgKTtcbn1cbnZlYzMgbGluZVBsYW5lSW50ZXJzZWN0KCBpbiB2ZWMzIHBvaW50T25MaW5lLCBpbiB2ZWMzIGxpbmVEaXJlY3Rpb24sIGluIHZlYzMgcG9pbnRPblBsYW5lLCBpbiB2ZWMzIHBsYW5lTm9ybWFsICkge1xuXHRyZXR1cm4gbGluZURpcmVjdGlvbiAqICggZG90KCBwbGFuZU5vcm1hbCwgcG9pbnRPblBsYW5lIC0gcG9pbnRPbkxpbmUgKSAvIGRvdCggcGxhbmVOb3JtYWwsIGxpbmVEaXJlY3Rpb24gKSApICsgcG9pbnRPbkxpbmU7XG59XG5tYXQzIHRyYW5zcG9zZU1hdDMoIGNvbnN0IGluIG1hdDMgbSApIHtcblx0bWF0MyB0bXA7XG5cdHRtcFsgMCBdID0gdmVjMyggbVsgMCBdLngsIG1bIDEgXS54LCBtWyAyIF0ueCApO1xuXHR0bXBbIDEgXSA9IHZlYzMoIG1bIDAgXS55LCBtWyAxIF0ueSwgbVsgMiBdLnkgKTtcblx0dG1wWyAyIF0gPSB2ZWMzKCBtWyAwIF0ueiwgbVsgMSBdLnosIG1bIDIgXS56ICk7XG5cdHJldHVybiB0bXA7XG59XG5mbG9hdCBsaW5lYXJUb1JlbGF0aXZlTHVtaW5hbmNlKCBjb25zdCBpbiB2ZWMzIGNvbG9yICkge1xuXHR2ZWMzIHdlaWdodHMgPSB2ZWMzKCAwLjIxMjYsIDAuNzE1MiwgMC4wNzIyICk7XG5cdHJldHVybiBkb3QoIHdlaWdodHMsIGNvbG9yLnJnYiApO1xufVxuYm9vbCBpc1BlcnNwZWN0aXZlTWF0cml4KCBtYXQ0IG0gKSB7XG5cdHJldHVybiBtWyAyIF1bIDMgXSA9PSAtIDEuMDtcbn1cbnZlYzIgZXF1aXJlY3RVdiggaW4gdmVjMyBkaXIgKSB7XG5cdGZsb2F0IHUgPSBhdGFuKCBkaXIueiwgZGlyLnggKSAqIFJFQ0lQUk9DQUxfUEkyICsgMC41O1xuXHRmbG9hdCB2ID0gYXNpbiggY2xhbXAoIGRpci55LCAtIDEuMCwgMS4wICkgKSAqIFJFQ0lQUk9DQUxfUEkgKyAwLjU7XG5cdHJldHVybiB2ZWMyKCB1LCB2ICk7XG59IixjdWJlX3V2X3JlZmxlY3Rpb25fZnJhZ21lbnQ6IiNpZmRlZiBFTlZNQVBfVFlQRV9DVUJFX1VWXG5cdCNkZWZpbmUgY3ViZVVWX21heE1pcExldmVsIDguMFxuXHQjZGVmaW5lIGN1YmVVVl9taW5NaXBMZXZlbCA0LjBcblx0I2RlZmluZSBjdWJlVVZfbWF4VGlsZVNpemUgMjU2LjBcblx0I2RlZmluZSBjdWJlVVZfbWluVGlsZVNpemUgMTYuMFxuXHRmbG9hdCBnZXRGYWNlKCB2ZWMzIGRpcmVjdGlvbiApIHtcblx0XHR2ZWMzIGFic0RpcmVjdGlvbiA9IGFicyggZGlyZWN0aW9uICk7XG5cdFx0ZmxvYXQgZmFjZSA9IC0gMS4wO1xuXHRcdGlmICggYWJzRGlyZWN0aW9uLnggPiBhYnNEaXJlY3Rpb24ueiApIHtcblx0XHRcdGlmICggYWJzRGlyZWN0aW9uLnggPiBhYnNEaXJlY3Rpb24ueSApXG5cdFx0XHRcdGZhY2UgPSBkaXJlY3Rpb24ueCA+IDAuMCA/IDAuMCA6IDMuMDtcblx0XHRcdGVsc2Vcblx0XHRcdFx0ZmFjZSA9IGRpcmVjdGlvbi55ID4gMC4wID8gMS4wIDogNC4wO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRpZiAoIGFic0RpcmVjdGlvbi56ID4gYWJzRGlyZWN0aW9uLnkgKVxuXHRcdFx0XHRmYWNlID0gZGlyZWN0aW9uLnogPiAwLjAgPyAyLjAgOiA1LjA7XG5cdFx0XHRlbHNlXG5cdFx0XHRcdGZhY2UgPSBkaXJlY3Rpb24ueSA+IDAuMCA/IDEuMCA6IDQuMDtcblx0XHR9XG5cdFx0cmV0dXJuIGZhY2U7XG5cdH1cblx0dmVjMiBnZXRVViggdmVjMyBkaXJlY3Rpb24sIGZsb2F0IGZhY2UgKSB7XG5cdFx0dmVjMiB1djtcblx0XHRpZiAoIGZhY2UgPT0gMC4wICkge1xuXHRcdFx0dXYgPSB2ZWMyKCBkaXJlY3Rpb24ueiwgZGlyZWN0aW9uLnkgKSAvIGFicyggZGlyZWN0aW9uLnggKTtcblx0XHR9IGVsc2UgaWYgKCBmYWNlID09IDEuMCApIHtcblx0XHRcdHV2ID0gdmVjMiggLSBkaXJlY3Rpb24ueCwgLSBkaXJlY3Rpb24ueiApIC8gYWJzKCBkaXJlY3Rpb24ueSApO1xuXHRcdH0gZWxzZSBpZiAoIGZhY2UgPT0gMi4wICkge1xuXHRcdFx0dXYgPSB2ZWMyKCAtIGRpcmVjdGlvbi54LCBkaXJlY3Rpb24ueSApIC8gYWJzKCBkaXJlY3Rpb24ueiApO1xuXHRcdH0gZWxzZSBpZiAoIGZhY2UgPT0gMy4wICkge1xuXHRcdFx0dXYgPSB2ZWMyKCAtIGRpcmVjdGlvbi56LCBkaXJlY3Rpb24ueSApIC8gYWJzKCBkaXJlY3Rpb24ueCApO1xuXHRcdH0gZWxzZSBpZiAoIGZhY2UgPT0gNC4wICkge1xuXHRcdFx0dXYgPSB2ZWMyKCAtIGRpcmVjdGlvbi54LCBkaXJlY3Rpb24ueiApIC8gYWJzKCBkaXJlY3Rpb24ueSApO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR1diA9IHZlYzIoIGRpcmVjdGlvbi54LCBkaXJlY3Rpb24ueSApIC8gYWJzKCBkaXJlY3Rpb24ueiApO1xuXHRcdH1cblx0XHRyZXR1cm4gMC41ICogKCB1diArIDEuMCApO1xuXHR9XG5cdHZlYzMgYmlsaW5lYXJDdWJlVVYoIHNhbXBsZXIyRCBlbnZNYXAsIHZlYzMgZGlyZWN0aW9uLCBmbG9hdCBtaXBJbnQgKSB7XG5cdFx0ZmxvYXQgZmFjZSA9IGdldEZhY2UoIGRpcmVjdGlvbiApO1xuXHRcdGZsb2F0IGZpbHRlckludCA9IG1heCggY3ViZVVWX21pbk1pcExldmVsIC0gbWlwSW50LCAwLjAgKTtcblx0XHRtaXBJbnQgPSBtYXgoIG1pcEludCwgY3ViZVVWX21pbk1pcExldmVsICk7XG5cdFx0ZmxvYXQgZmFjZVNpemUgPSBleHAyKCBtaXBJbnQgKTtcblx0XHRmbG9hdCB0ZXhlbFNpemUgPSAxLjAgLyAoIDMuMCAqIGN1YmVVVl9tYXhUaWxlU2l6ZSApO1xuXHRcdHZlYzIgdXYgPSBnZXRVViggZGlyZWN0aW9uLCBmYWNlICkgKiAoIGZhY2VTaXplIC0gMS4wICk7XG5cdFx0dmVjMiBmID0gZnJhY3QoIHV2ICk7XG5cdFx0dXYgKz0gMC41IC0gZjtcblx0XHRpZiAoIGZhY2UgPiAyLjAgKSB7XG5cdFx0XHR1di55ICs9IGZhY2VTaXplO1xuXHRcdFx0ZmFjZSAtPSAzLjA7XG5cdFx0fVxuXHRcdHV2LnggKz0gZmFjZSAqIGZhY2VTaXplO1xuXHRcdGlmICggbWlwSW50IDwgY3ViZVVWX21heE1pcExldmVsICkge1xuXHRcdFx0dXYueSArPSAyLjAgKiBjdWJlVVZfbWF4VGlsZVNpemU7XG5cdFx0fVxuXHRcdHV2LnkgKz0gZmlsdGVySW50ICogMi4wICogY3ViZVVWX21pblRpbGVTaXplO1xuXHRcdHV2LnggKz0gMy4wICogbWF4KCAwLjAsIGN1YmVVVl9tYXhUaWxlU2l6ZSAtIDIuMCAqIGZhY2VTaXplICk7XG5cdFx0dXYgKj0gdGV4ZWxTaXplO1xuXHRcdHZlYzMgdGwgPSBlbnZNYXBUZXhlbFRvTGluZWFyKCB0ZXh0dXJlMkQoIGVudk1hcCwgdXYgKSApLnJnYjtcblx0XHR1di54ICs9IHRleGVsU2l6ZTtcblx0XHR2ZWMzIHRyID0gZW52TWFwVGV4ZWxUb0xpbmVhciggdGV4dHVyZTJEKCBlbnZNYXAsIHV2ICkgKS5yZ2I7XG5cdFx0dXYueSArPSB0ZXhlbFNpemU7XG5cdFx0dmVjMyBiciA9IGVudk1hcFRleGVsVG9MaW5lYXIoIHRleHR1cmUyRCggZW52TWFwLCB1diApICkucmdiO1xuXHRcdHV2LnggLT0gdGV4ZWxTaXplO1xuXHRcdHZlYzMgYmwgPSBlbnZNYXBUZXhlbFRvTGluZWFyKCB0ZXh0dXJlMkQoIGVudk1hcCwgdXYgKSApLnJnYjtcblx0XHR2ZWMzIHRtID0gbWl4KCB0bCwgdHIsIGYueCApO1xuXHRcdHZlYzMgYm0gPSBtaXgoIGJsLCBiciwgZi54ICk7XG5cdFx0cmV0dXJuIG1peCggdG0sIGJtLCBmLnkgKTtcblx0fVxuXHQjZGVmaW5lIHIwIDEuMFxuXHQjZGVmaW5lIHYwIDAuMzM5XG5cdCNkZWZpbmUgbTAgLSAyLjBcblx0I2RlZmluZSByMSAwLjhcblx0I2RlZmluZSB2MSAwLjI3NlxuXHQjZGVmaW5lIG0xIC0gMS4wXG5cdCNkZWZpbmUgcjQgMC40XG5cdCNkZWZpbmUgdjQgMC4wNDZcblx0I2RlZmluZSBtNCAyLjBcblx0I2RlZmluZSByNSAwLjMwNVxuXHQjZGVmaW5lIHY1IDAuMDE2XG5cdCNkZWZpbmUgbTUgMy4wXG5cdCNkZWZpbmUgcjYgMC4yMVxuXHQjZGVmaW5lIHY2IDAuMDAzOFxuXHQjZGVmaW5lIG02IDQuMFxuXHRmbG9hdCByb3VnaG5lc3NUb01pcCggZmxvYXQgcm91Z2huZXNzICkge1xuXHRcdGZsb2F0IG1pcCA9IDAuMDtcblx0XHRpZiAoIHJvdWdobmVzcyA+PSByMSApIHtcblx0XHRcdG1pcCA9ICggcjAgLSByb3VnaG5lc3MgKSAqICggbTEgLSBtMCApIC8gKCByMCAtIHIxICkgKyBtMDtcblx0XHR9IGVsc2UgaWYgKCByb3VnaG5lc3MgPj0gcjQgKSB7XG5cdFx0XHRtaXAgPSAoIHIxIC0gcm91Z2huZXNzICkgKiAoIG00IC0gbTEgKSAvICggcjEgLSByNCApICsgbTE7XG5cdFx0fSBlbHNlIGlmICggcm91Z2huZXNzID49IHI1ICkge1xuXHRcdFx0bWlwID0gKCByNCAtIHJvdWdobmVzcyApICogKCBtNSAtIG00ICkgLyAoIHI0IC0gcjUgKSArIG00O1xuXHRcdH0gZWxzZSBpZiAoIHJvdWdobmVzcyA+PSByNiApIHtcblx0XHRcdG1pcCA9ICggcjUgLSByb3VnaG5lc3MgKSAqICggbTYgLSBtNSApIC8gKCByNSAtIHI2ICkgKyBtNTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0bWlwID0gLSAyLjAgKiBsb2cyKCAxLjE2ICogcm91Z2huZXNzICk7XHRcdH1cblx0XHRyZXR1cm4gbWlwO1xuXHR9XG5cdHZlYzQgdGV4dHVyZUN1YmVVViggc2FtcGxlcjJEIGVudk1hcCwgdmVjMyBzYW1wbGVEaXIsIGZsb2F0IHJvdWdobmVzcyApIHtcblx0XHRmbG9hdCBtaXAgPSBjbGFtcCggcm91Z2huZXNzVG9NaXAoIHJvdWdobmVzcyApLCBtMCwgY3ViZVVWX21heE1pcExldmVsICk7XG5cdFx0ZmxvYXQgbWlwRiA9IGZyYWN0KCBtaXAgKTtcblx0XHRmbG9hdCBtaXBJbnQgPSBmbG9vciggbWlwICk7XG5cdFx0dmVjMyBjb2xvcjAgPSBiaWxpbmVhckN1YmVVViggZW52TWFwLCBzYW1wbGVEaXIsIG1pcEludCApO1xuXHRcdGlmICggbWlwRiA9PSAwLjAgKSB7XG5cdFx0XHRyZXR1cm4gdmVjNCggY29sb3IwLCAxLjAgKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dmVjMyBjb2xvcjEgPSBiaWxpbmVhckN1YmVVViggZW52TWFwLCBzYW1wbGVEaXIsIG1pcEludCArIDEuMCApO1xuXHRcdFx0cmV0dXJuIHZlYzQoIG1peCggY29sb3IwLCBjb2xvcjEsIG1pcEYgKSwgMS4wICk7XG5cdFx0fVxuXHR9XG4jZW5kaWYiLGRlZmF1bHRub3JtYWxfdmVydGV4OiJ2ZWMzIHRyYW5zZm9ybWVkTm9ybWFsID0gb2JqZWN0Tm9ybWFsO1xuI2lmZGVmIFVTRV9JTlNUQU5DSU5HXG5cdG1hdDMgbSA9IG1hdDMoIGluc3RhbmNlTWF0cml4ICk7XG5cdHRyYW5zZm9ybWVkTm9ybWFsIC89IHZlYzMoIGRvdCggbVsgMCBdLCBtWyAwIF0gKSwgZG90KCBtWyAxIF0sIG1bIDEgXSApLCBkb3QoIG1bIDIgXSwgbVsgMiBdICkgKTtcblx0dHJhbnNmb3JtZWROb3JtYWwgPSBtICogdHJhbnNmb3JtZWROb3JtYWw7XG4jZW5kaWZcbnRyYW5zZm9ybWVkTm9ybWFsID0gbm9ybWFsTWF0cml4ICogdHJhbnNmb3JtZWROb3JtYWw7XG4jaWZkZWYgRkxJUF9TSURFRFxuXHR0cmFuc2Zvcm1lZE5vcm1hbCA9IC0gdHJhbnNmb3JtZWROb3JtYWw7XG4jZW5kaWZcbiNpZmRlZiBVU0VfVEFOR0VOVFxuXHR2ZWMzIHRyYW5zZm9ybWVkVGFuZ2VudCA9ICggbW9kZWxWaWV3TWF0cml4ICogdmVjNCggb2JqZWN0VGFuZ2VudCwgMC4wICkgKS54eXo7XG5cdCNpZmRlZiBGTElQX1NJREVEXG5cdFx0dHJhbnNmb3JtZWRUYW5nZW50ID0gLSB0cmFuc2Zvcm1lZFRhbmdlbnQ7XG5cdCNlbmRpZlxuI2VuZGlmIixkaXNwbGFjZW1lbnRtYXBfcGFyc192ZXJ0ZXg6IiNpZmRlZiBVU0VfRElTUExBQ0VNRU5UTUFQXG5cdHVuaWZvcm0gc2FtcGxlcjJEIGRpc3BsYWNlbWVudE1hcDtcblx0dW5pZm9ybSBmbG9hdCBkaXNwbGFjZW1lbnRTY2FsZTtcblx0dW5pZm9ybSBmbG9hdCBkaXNwbGFjZW1lbnRCaWFzO1xuI2VuZGlmIixkaXNwbGFjZW1lbnRtYXBfdmVydGV4OiIjaWZkZWYgVVNFX0RJU1BMQUNFTUVOVE1BUFxuXHR0cmFuc2Zvcm1lZCArPSBub3JtYWxpemUoIG9iamVjdE5vcm1hbCApICogKCB0ZXh0dXJlMkQoIGRpc3BsYWNlbWVudE1hcCwgdlV2ICkueCAqIGRpc3BsYWNlbWVudFNjYWxlICsgZGlzcGxhY2VtZW50QmlhcyApO1xuI2VuZGlmIixlbWlzc2l2ZW1hcF9mcmFnbWVudDoiI2lmZGVmIFVTRV9FTUlTU0lWRU1BUFxuXHR2ZWM0IGVtaXNzaXZlQ29sb3IgPSB0ZXh0dXJlMkQoIGVtaXNzaXZlTWFwLCB2VXYgKTtcblx0ZW1pc3NpdmVDb2xvci5yZ2IgPSBlbWlzc2l2ZU1hcFRleGVsVG9MaW5lYXIoIGVtaXNzaXZlQ29sb3IgKS5yZ2I7XG5cdHRvdGFsRW1pc3NpdmVSYWRpYW5jZSAqPSBlbWlzc2l2ZUNvbG9yLnJnYjtcbiNlbmRpZiIsZW1pc3NpdmVtYXBfcGFyc19mcmFnbWVudDoiI2lmZGVmIFVTRV9FTUlTU0lWRU1BUFxuXHR1bmlmb3JtIHNhbXBsZXIyRCBlbWlzc2l2ZU1hcDtcbiNlbmRpZiIsZW5jb2RpbmdzX2ZyYWdtZW50OiJnbF9GcmFnQ29sb3IgPSBsaW5lYXJUb091dHB1dFRleGVsKCBnbF9GcmFnQ29sb3IgKTsiLGVuY29kaW5nc19wYXJzX2ZyYWdtZW50OiJcbnZlYzQgTGluZWFyVG9MaW5lYXIoIGluIHZlYzQgdmFsdWUgKSB7XG5cdHJldHVybiB2YWx1ZTtcbn1cbnZlYzQgR2FtbWFUb0xpbmVhciggaW4gdmVjNCB2YWx1ZSwgaW4gZmxvYXQgZ2FtbWFGYWN0b3IgKSB7XG5cdHJldHVybiB2ZWM0KCBwb3coIHZhbHVlLnJnYiwgdmVjMyggZ2FtbWFGYWN0b3IgKSApLCB2YWx1ZS5hICk7XG59XG52ZWM0IExpbmVhclRvR2FtbWEoIGluIHZlYzQgdmFsdWUsIGluIGZsb2F0IGdhbW1hRmFjdG9yICkge1xuXHRyZXR1cm4gdmVjNCggcG93KCB2YWx1ZS5yZ2IsIHZlYzMoIDEuMCAvIGdhbW1hRmFjdG9yICkgKSwgdmFsdWUuYSApO1xufVxudmVjNCBzUkdCVG9MaW5lYXIoIGluIHZlYzQgdmFsdWUgKSB7XG5cdHJldHVybiB2ZWM0KCBtaXgoIHBvdyggdmFsdWUucmdiICogMC45NDc4NjcyOTg2ICsgdmVjMyggMC4wNTIxMzI3MDE0ICksIHZlYzMoIDIuNCApICksIHZhbHVlLnJnYiAqIDAuMDc3Mzk5MzgwOCwgdmVjMyggbGVzc1RoYW5FcXVhbCggdmFsdWUucmdiLCB2ZWMzKCAwLjA0MDQ1ICkgKSApICksIHZhbHVlLmEgKTtcbn1cbnZlYzQgTGluZWFyVG9zUkdCKCBpbiB2ZWM0IHZhbHVlICkge1xuXHRyZXR1cm4gdmVjNCggbWl4KCBwb3coIHZhbHVlLnJnYiwgdmVjMyggMC40MTY2NiApICkgKiAxLjA1NSAtIHZlYzMoIDAuMDU1ICksIHZhbHVlLnJnYiAqIDEyLjkyLCB2ZWMzKCBsZXNzVGhhbkVxdWFsKCB2YWx1ZS5yZ2IsIHZlYzMoIDAuMDAzMTMwOCApICkgKSApLCB2YWx1ZS5hICk7XG59XG52ZWM0IFJHQkVUb0xpbmVhciggaW4gdmVjNCB2YWx1ZSApIHtcblx0cmV0dXJuIHZlYzQoIHZhbHVlLnJnYiAqIGV4cDIoIHZhbHVlLmEgKiAyNTUuMCAtIDEyOC4wICksIDEuMCApO1xufVxudmVjNCBMaW5lYXJUb1JHQkUoIGluIHZlYzQgdmFsdWUgKSB7XG5cdGZsb2F0IG1heENvbXBvbmVudCA9IG1heCggbWF4KCB2YWx1ZS5yLCB2YWx1ZS5nICksIHZhbHVlLmIgKTtcblx0ZmxvYXQgZkV4cCA9IGNsYW1wKCBjZWlsKCBsb2cyKCBtYXhDb21wb25lbnQgKSApLCAtMTI4LjAsIDEyNy4wICk7XG5cdHJldHVybiB2ZWM0KCB2YWx1ZS5yZ2IgLyBleHAyKCBmRXhwICksICggZkV4cCArIDEyOC4wICkgLyAyNTUuMCApO1xufVxudmVjNCBSR0JNVG9MaW5lYXIoIGluIHZlYzQgdmFsdWUsIGluIGZsb2F0IG1heFJhbmdlICkge1xuXHRyZXR1cm4gdmVjNCggdmFsdWUucmdiICogdmFsdWUuYSAqIG1heFJhbmdlLCAxLjAgKTtcbn1cbnZlYzQgTGluZWFyVG9SR0JNKCBpbiB2ZWM0IHZhbHVlLCBpbiBmbG9hdCBtYXhSYW5nZSApIHtcblx0ZmxvYXQgbWF4UkdCID0gbWF4KCB2YWx1ZS5yLCBtYXgoIHZhbHVlLmcsIHZhbHVlLmIgKSApO1xuXHRmbG9hdCBNID0gY2xhbXAoIG1heFJHQiAvIG1heFJhbmdlLCAwLjAsIDEuMCApO1xuXHRNID0gY2VpbCggTSAqIDI1NS4wICkgLyAyNTUuMDtcblx0cmV0dXJuIHZlYzQoIHZhbHVlLnJnYiAvICggTSAqIG1heFJhbmdlICksIE0gKTtcbn1cbnZlYzQgUkdCRFRvTGluZWFyKCBpbiB2ZWM0IHZhbHVlLCBpbiBmbG9hdCBtYXhSYW5nZSApIHtcblx0cmV0dXJuIHZlYzQoIHZhbHVlLnJnYiAqICggKCBtYXhSYW5nZSAvIDI1NS4wICkgLyB2YWx1ZS5hICksIDEuMCApO1xufVxudmVjNCBMaW5lYXJUb1JHQkQoIGluIHZlYzQgdmFsdWUsIGluIGZsb2F0IG1heFJhbmdlICkge1xuXHRmbG9hdCBtYXhSR0IgPSBtYXgoIHZhbHVlLnIsIG1heCggdmFsdWUuZywgdmFsdWUuYiApICk7XG5cdGZsb2F0IEQgPSBtYXgoIG1heFJhbmdlIC8gbWF4UkdCLCAxLjAgKTtcblx0RCA9IGNsYW1wKCBmbG9vciggRCApIC8gMjU1LjAsIDAuMCwgMS4wICk7XG5cdHJldHVybiB2ZWM0KCB2YWx1ZS5yZ2IgKiAoIEQgKiAoIDI1NS4wIC8gbWF4UmFuZ2UgKSApLCBEICk7XG59XG5jb25zdCBtYXQzIGNMb2dMdXZNID0gbWF0MyggMC4yMjA5LCAwLjMzOTAsIDAuNDE4NCwgMC4xMTM4LCAwLjY3ODAsIDAuNzMxOSwgMC4wMTAyLCAwLjExMzAsIDAuMjk2OSApO1xudmVjNCBMaW5lYXJUb0xvZ0x1diggaW4gdmVjNCB2YWx1ZSApIHtcblx0dmVjMyBYcF9ZX1hZWnAgPSBjTG9nTHV2TSAqIHZhbHVlLnJnYjtcblx0WHBfWV9YWVpwID0gbWF4KCBYcF9ZX1hZWnAsIHZlYzMoIDFlLTYsIDFlLTYsIDFlLTYgKSApO1xuXHR2ZWM0IHZSZXN1bHQ7XG5cdHZSZXN1bHQueHkgPSBYcF9ZX1hZWnAueHkgLyBYcF9ZX1hZWnAuejtcblx0ZmxvYXQgTGUgPSAyLjAgKiBsb2cyKFhwX1lfWFlacC55KSArIDEyNy4wO1xuXHR2UmVzdWx0LncgPSBmcmFjdCggTGUgKTtcblx0dlJlc3VsdC56ID0gKCBMZSAtICggZmxvb3IoIHZSZXN1bHQudyAqIDI1NS4wICkgKSAvIDI1NS4wICkgLyAyNTUuMDtcblx0cmV0dXJuIHZSZXN1bHQ7XG59XG5jb25zdCBtYXQzIGNMb2dMdXZJbnZlcnNlTSA9IG1hdDMoIDYuMDAxNCwgLTIuNzAwOCwgLTEuNzk5NiwgLTEuMzMyMCwgMy4xMDI5LCAtNS43NzIxLCAwLjMwMDgsIC0xLjA4ODIsIDUuNjI2OCApO1xudmVjNCBMb2dMdXZUb0xpbmVhciggaW4gdmVjNCB2YWx1ZSApIHtcblx0ZmxvYXQgTGUgPSB2YWx1ZS56ICogMjU1LjAgKyB2YWx1ZS53O1xuXHR2ZWMzIFhwX1lfWFlacDtcblx0WHBfWV9YWVpwLnkgPSBleHAyKCAoIExlIC0gMTI3LjAgKSAvIDIuMCApO1xuXHRYcF9ZX1hZWnAueiA9IFhwX1lfWFlacC55IC8gdmFsdWUueTtcblx0WHBfWV9YWVpwLnggPSB2YWx1ZS54ICogWHBfWV9YWVpwLno7XG5cdHZlYzMgdlJHQiA9IGNMb2dMdXZJbnZlcnNlTSAqIFhwX1lfWFlacC5yZ2I7XG5cdHJldHVybiB2ZWM0KCBtYXgoIHZSR0IsIDAuMCApLCAxLjAgKTtcbn0iLGVudm1hcF9mcmFnbWVudDoiI2lmZGVmIFVTRV9FTlZNQVBcblx0I2lmZGVmIEVOVl9XT1JMRFBPU1xuXHRcdHZlYzMgY2FtZXJhVG9GcmFnO1xuXHRcdGlmICggaXNPcnRob2dyYXBoaWMgKSB7XG5cdFx0XHRjYW1lcmFUb0ZyYWcgPSBub3JtYWxpemUoIHZlYzMoIC0gdmlld01hdHJpeFsgMCBdWyAyIF0sIC0gdmlld01hdHJpeFsgMSBdWyAyIF0sIC0gdmlld01hdHJpeFsgMiBdWyAyIF0gKSApO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRjYW1lcmFUb0ZyYWcgPSBub3JtYWxpemUoIHZXb3JsZFBvc2l0aW9uIC0gY2FtZXJhUG9zaXRpb24gKTtcblx0XHR9XG5cdFx0dmVjMyB3b3JsZE5vcm1hbCA9IGludmVyc2VUcmFuc2Zvcm1EaXJlY3Rpb24oIG5vcm1hbCwgdmlld01hdHJpeCApO1xuXHRcdCNpZmRlZiBFTlZNQVBfTU9ERV9SRUZMRUNUSU9OXG5cdFx0XHR2ZWMzIHJlZmxlY3RWZWMgPSByZWZsZWN0KCBjYW1lcmFUb0ZyYWcsIHdvcmxkTm9ybWFsICk7XG5cdFx0I2Vsc2Vcblx0XHRcdHZlYzMgcmVmbGVjdFZlYyA9IHJlZnJhY3QoIGNhbWVyYVRvRnJhZywgd29ybGROb3JtYWwsIHJlZnJhY3Rpb25SYXRpbyApO1xuXHRcdCNlbmRpZlxuXHQjZWxzZVxuXHRcdHZlYzMgcmVmbGVjdFZlYyA9IHZSZWZsZWN0O1xuXHQjZW5kaWZcblx0I2lmZGVmIEVOVk1BUF9UWVBFX0NVQkVcblx0XHR2ZWM0IGVudkNvbG9yID0gdGV4dHVyZUN1YmUoIGVudk1hcCwgdmVjMyggZmxpcEVudk1hcCAqIHJlZmxlY3RWZWMueCwgcmVmbGVjdFZlYy55eiApICk7XG5cdCNlbGlmIGRlZmluZWQoIEVOVk1BUF9UWVBFX0NVQkVfVVYgKVxuXHRcdHZlYzQgZW52Q29sb3IgPSB0ZXh0dXJlQ3ViZVVWKCBlbnZNYXAsIHJlZmxlY3RWZWMsIDAuMCApO1xuXHQjZWxzZVxuXHRcdHZlYzQgZW52Q29sb3IgPSB2ZWM0KCAwLjAgKTtcblx0I2VuZGlmXG5cdCNpZm5kZWYgRU5WTUFQX1RZUEVfQ1VCRV9VVlxuXHRcdGVudkNvbG9yID0gZW52TWFwVGV4ZWxUb0xpbmVhciggZW52Q29sb3IgKTtcblx0I2VuZGlmXG5cdCNpZmRlZiBFTlZNQVBfQkxFTkRJTkdfTVVMVElQTFlcblx0XHRvdXRnb2luZ0xpZ2h0ID0gbWl4KCBvdXRnb2luZ0xpZ2h0LCBvdXRnb2luZ0xpZ2h0ICogZW52Q29sb3IueHl6LCBzcGVjdWxhclN0cmVuZ3RoICogcmVmbGVjdGl2aXR5ICk7XG5cdCNlbGlmIGRlZmluZWQoIEVOVk1BUF9CTEVORElOR19NSVggKVxuXHRcdG91dGdvaW5nTGlnaHQgPSBtaXgoIG91dGdvaW5nTGlnaHQsIGVudkNvbG9yLnh5eiwgc3BlY3VsYXJTdHJlbmd0aCAqIHJlZmxlY3Rpdml0eSApO1xuXHQjZWxpZiBkZWZpbmVkKCBFTlZNQVBfQkxFTkRJTkdfQUREIClcblx0XHRvdXRnb2luZ0xpZ2h0ICs9IGVudkNvbG9yLnh5eiAqIHNwZWN1bGFyU3RyZW5ndGggKiByZWZsZWN0aXZpdHk7XG5cdCNlbmRpZlxuI2VuZGlmIixlbnZtYXBfY29tbW9uX3BhcnNfZnJhZ21lbnQ6IiNpZmRlZiBVU0VfRU5WTUFQXG5cdHVuaWZvcm0gZmxvYXQgZW52TWFwSW50ZW5zaXR5O1xuXHR1bmlmb3JtIGZsb2F0IGZsaXBFbnZNYXA7XG5cdHVuaWZvcm0gaW50IG1heE1pcExldmVsO1xuXHQjaWZkZWYgRU5WTUFQX1RZUEVfQ1VCRVxuXHRcdHVuaWZvcm0gc2FtcGxlckN1YmUgZW52TWFwO1xuXHQjZWxzZVxuXHRcdHVuaWZvcm0gc2FtcGxlcjJEIGVudk1hcDtcblx0I2VuZGlmXG5cdFxuI2VuZGlmIixlbnZtYXBfcGFyc19mcmFnbWVudDoiI2lmZGVmIFVTRV9FTlZNQVBcblx0dW5pZm9ybSBmbG9hdCByZWZsZWN0aXZpdHk7XG5cdCNpZiBkZWZpbmVkKCBVU0VfQlVNUE1BUCApIHx8IGRlZmluZWQoIFVTRV9OT1JNQUxNQVAgKSB8fCBkZWZpbmVkKCBQSE9ORyApXG5cdFx0I2RlZmluZSBFTlZfV09STERQT1Ncblx0I2VuZGlmXG5cdCNpZmRlZiBFTlZfV09STERQT1Ncblx0XHR2YXJ5aW5nIHZlYzMgdldvcmxkUG9zaXRpb247XG5cdFx0dW5pZm9ybSBmbG9hdCByZWZyYWN0aW9uUmF0aW87XG5cdCNlbHNlXG5cdFx0dmFyeWluZyB2ZWMzIHZSZWZsZWN0O1xuXHQjZW5kaWZcbiNlbmRpZiIsZW52bWFwX3BhcnNfdmVydGV4OiIjaWZkZWYgVVNFX0VOVk1BUFxuXHQjaWYgZGVmaW5lZCggVVNFX0JVTVBNQVAgKSB8fCBkZWZpbmVkKCBVU0VfTk9STUFMTUFQICkgfHxkZWZpbmVkKCBQSE9ORyApXG5cdFx0I2RlZmluZSBFTlZfV09STERQT1Ncblx0I2VuZGlmXG5cdCNpZmRlZiBFTlZfV09STERQT1Ncblx0XHRcblx0XHR2YXJ5aW5nIHZlYzMgdldvcmxkUG9zaXRpb247XG5cdCNlbHNlXG5cdFx0dmFyeWluZyB2ZWMzIHZSZWZsZWN0O1xuXHRcdHVuaWZvcm0gZmxvYXQgcmVmcmFjdGlvblJhdGlvO1xuXHQjZW5kaWZcbiNlbmRpZiIsZW52bWFwX3BoeXNpY2FsX3BhcnNfZnJhZ21lbnQ6IiNpZiBkZWZpbmVkKCBVU0VfRU5WTUFQIClcblx0I2lmZGVmIEVOVk1BUF9NT0RFX1JFRlJBQ1RJT05cblx0XHR1bmlmb3JtIGZsb2F0IHJlZnJhY3Rpb25SYXRpbztcblx0I2VuZGlmXG5cdHZlYzMgZ2V0TGlnaHRQcm9iZUluZGlyZWN0SXJyYWRpYW5jZSggY29uc3QgaW4gR2VvbWV0cmljQ29udGV4dCBnZW9tZXRyeSwgY29uc3QgaW4gaW50IG1heE1JUExldmVsICkge1xuXHRcdHZlYzMgd29ybGROb3JtYWwgPSBpbnZlcnNlVHJhbnNmb3JtRGlyZWN0aW9uKCBnZW9tZXRyeS5ub3JtYWwsIHZpZXdNYXRyaXggKTtcblx0XHQjaWZkZWYgRU5WTUFQX1RZUEVfQ1VCRVxuXHRcdFx0dmVjMyBxdWVyeVZlYyA9IHZlYzMoIGZsaXBFbnZNYXAgKiB3b3JsZE5vcm1hbC54LCB3b3JsZE5vcm1hbC55eiApO1xuXHRcdFx0I2lmZGVmIFRFWFRVUkVfTE9EX0VYVFxuXHRcdFx0XHR2ZWM0IGVudk1hcENvbG9yID0gdGV4dHVyZUN1YmVMb2RFWFQoIGVudk1hcCwgcXVlcnlWZWMsIGZsb2F0KCBtYXhNSVBMZXZlbCApICk7XG5cdFx0XHQjZWxzZVxuXHRcdFx0XHR2ZWM0IGVudk1hcENvbG9yID0gdGV4dHVyZUN1YmUoIGVudk1hcCwgcXVlcnlWZWMsIGZsb2F0KCBtYXhNSVBMZXZlbCApICk7XG5cdFx0XHQjZW5kaWZcblx0XHRcdGVudk1hcENvbG9yLnJnYiA9IGVudk1hcFRleGVsVG9MaW5lYXIoIGVudk1hcENvbG9yICkucmdiO1xuXHRcdCNlbGlmIGRlZmluZWQoIEVOVk1BUF9UWVBFX0NVQkVfVVYgKVxuXHRcdFx0dmVjNCBlbnZNYXBDb2xvciA9IHRleHR1cmVDdWJlVVYoIGVudk1hcCwgd29ybGROb3JtYWwsIDEuMCApO1xuXHRcdCNlbHNlXG5cdFx0XHR2ZWM0IGVudk1hcENvbG9yID0gdmVjNCggMC4wICk7XG5cdFx0I2VuZGlmXG5cdFx0cmV0dXJuIFBJICogZW52TWFwQ29sb3IucmdiICogZW52TWFwSW50ZW5zaXR5O1xuXHR9XG5cdGZsb2F0IGdldFNwZWN1bGFyTUlQTGV2ZWwoIGNvbnN0IGluIGZsb2F0IHJvdWdobmVzcywgY29uc3QgaW4gaW50IG1heE1JUExldmVsICkge1xuXHRcdGZsb2F0IG1heE1JUExldmVsU2NhbGFyID0gZmxvYXQoIG1heE1JUExldmVsICk7XG5cdFx0ZmxvYXQgc2lnbWEgPSBQSSAqIHJvdWdobmVzcyAqIHJvdWdobmVzcyAvICggMS4wICsgcm91Z2huZXNzICk7XG5cdFx0ZmxvYXQgZGVzaXJlZE1JUExldmVsID0gbWF4TUlQTGV2ZWxTY2FsYXIgKyBsb2cyKCBzaWdtYSApO1xuXHRcdHJldHVybiBjbGFtcCggZGVzaXJlZE1JUExldmVsLCAwLjAsIG1heE1JUExldmVsU2NhbGFyICk7XG5cdH1cblx0dmVjMyBnZXRMaWdodFByb2JlSW5kaXJlY3RSYWRpYW5jZSggY29uc3QgaW4gdmVjMyB2aWV3RGlyLCBjb25zdCBpbiB2ZWMzIG5vcm1hbCwgY29uc3QgaW4gZmxvYXQgcm91Z2huZXNzLCBjb25zdCBpbiBpbnQgbWF4TUlQTGV2ZWwgKSB7XG5cdFx0I2lmZGVmIEVOVk1BUF9NT0RFX1JFRkxFQ1RJT05cblx0XHRcdHZlYzMgcmVmbGVjdFZlYyA9IHJlZmxlY3QoIC12aWV3RGlyLCBub3JtYWwgKTtcblx0XHRcdHJlZmxlY3RWZWMgPSBub3JtYWxpemUoIG1peCggcmVmbGVjdFZlYywgbm9ybWFsLCByb3VnaG5lc3MgKiByb3VnaG5lc3MpICk7XG5cdFx0I2Vsc2Vcblx0XHRcdHZlYzMgcmVmbGVjdFZlYyA9IHJlZnJhY3QoIC12aWV3RGlyLCBub3JtYWwsIHJlZnJhY3Rpb25SYXRpbyApO1xuXHRcdCNlbmRpZlxuXHRcdHJlZmxlY3RWZWMgPSBpbnZlcnNlVHJhbnNmb3JtRGlyZWN0aW9uKCByZWZsZWN0VmVjLCB2aWV3TWF0cml4ICk7XG5cdFx0ZmxvYXQgc3BlY3VsYXJNSVBMZXZlbCA9IGdldFNwZWN1bGFyTUlQTGV2ZWwoIHJvdWdobmVzcywgbWF4TUlQTGV2ZWwgKTtcblx0XHQjaWZkZWYgRU5WTUFQX1RZUEVfQ1VCRVxuXHRcdFx0dmVjMyBxdWVyeVJlZmxlY3RWZWMgPSB2ZWMzKCBmbGlwRW52TWFwICogcmVmbGVjdFZlYy54LCByZWZsZWN0VmVjLnl6ICk7XG5cdFx0XHQjaWZkZWYgVEVYVFVSRV9MT0RfRVhUXG5cdFx0XHRcdHZlYzQgZW52TWFwQ29sb3IgPSB0ZXh0dXJlQ3ViZUxvZEVYVCggZW52TWFwLCBxdWVyeVJlZmxlY3RWZWMsIHNwZWN1bGFyTUlQTGV2ZWwgKTtcblx0XHRcdCNlbHNlXG5cdFx0XHRcdHZlYzQgZW52TWFwQ29sb3IgPSB0ZXh0dXJlQ3ViZSggZW52TWFwLCBxdWVyeVJlZmxlY3RWZWMsIHNwZWN1bGFyTUlQTGV2ZWwgKTtcblx0XHRcdCNlbmRpZlxuXHRcdFx0ZW52TWFwQ29sb3IucmdiID0gZW52TWFwVGV4ZWxUb0xpbmVhciggZW52TWFwQ29sb3IgKS5yZ2I7XG5cdFx0I2VsaWYgZGVmaW5lZCggRU5WTUFQX1RZUEVfQ1VCRV9VViApXG5cdFx0XHR2ZWM0IGVudk1hcENvbG9yID0gdGV4dHVyZUN1YmVVViggZW52TWFwLCByZWZsZWN0VmVjLCByb3VnaG5lc3MgKTtcblx0XHQjZW5kaWZcblx0XHRyZXR1cm4gZW52TWFwQ29sb3IucmdiICogZW52TWFwSW50ZW5zaXR5O1xuXHR9XG4jZW5kaWYiLGVudm1hcF92ZXJ0ZXg6IiNpZmRlZiBVU0VfRU5WTUFQXG5cdCNpZmRlZiBFTlZfV09STERQT1Ncblx0XHR2V29ybGRQb3NpdGlvbiA9IHdvcmxkUG9zaXRpb24ueHl6O1xuXHQjZWxzZVxuXHRcdHZlYzMgY2FtZXJhVG9WZXJ0ZXg7XG5cdFx0aWYgKCBpc09ydGhvZ3JhcGhpYyApIHtcblx0XHRcdGNhbWVyYVRvVmVydGV4ID0gbm9ybWFsaXplKCB2ZWMzKCAtIHZpZXdNYXRyaXhbIDAgXVsgMiBdLCAtIHZpZXdNYXRyaXhbIDEgXVsgMiBdLCAtIHZpZXdNYXRyaXhbIDIgXVsgMiBdICkgKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Y2FtZXJhVG9WZXJ0ZXggPSBub3JtYWxpemUoIHdvcmxkUG9zaXRpb24ueHl6IC0gY2FtZXJhUG9zaXRpb24gKTtcblx0XHR9XG5cdFx0dmVjMyB3b3JsZE5vcm1hbCA9IGludmVyc2VUcmFuc2Zvcm1EaXJlY3Rpb24oIHRyYW5zZm9ybWVkTm9ybWFsLCB2aWV3TWF0cml4ICk7XG5cdFx0I2lmZGVmIEVOVk1BUF9NT0RFX1JFRkxFQ1RJT05cblx0XHRcdHZSZWZsZWN0ID0gcmVmbGVjdCggY2FtZXJhVG9WZXJ0ZXgsIHdvcmxkTm9ybWFsICk7XG5cdFx0I2Vsc2Vcblx0XHRcdHZSZWZsZWN0ID0gcmVmcmFjdCggY2FtZXJhVG9WZXJ0ZXgsIHdvcmxkTm9ybWFsLCByZWZyYWN0aW9uUmF0aW8gKTtcblx0XHQjZW5kaWZcblx0I2VuZGlmXG4jZW5kaWYiLGZvZ192ZXJ0ZXg6IiNpZmRlZiBVU0VfRk9HXG5cdGZvZ0RlcHRoID0gLSBtdlBvc2l0aW9uLno7XG4jZW5kaWYiLGZvZ19wYXJzX3ZlcnRleDoiI2lmZGVmIFVTRV9GT0dcblx0dmFyeWluZyBmbG9hdCBmb2dEZXB0aDtcbiNlbmRpZiIsZm9nX2ZyYWdtZW50OiIjaWZkZWYgVVNFX0ZPR1xuXHQjaWZkZWYgRk9HX0VYUDJcblx0XHRmbG9hdCBmb2dGYWN0b3IgPSAxLjAgLSBleHAoIC0gZm9nRGVuc2l0eSAqIGZvZ0RlbnNpdHkgKiBmb2dEZXB0aCAqIGZvZ0RlcHRoICk7XG5cdCNlbHNlXG5cdFx0ZmxvYXQgZm9nRmFjdG9yID0gc21vb3Roc3RlcCggZm9nTmVhciwgZm9nRmFyLCBmb2dEZXB0aCApO1xuXHQjZW5kaWZcblx0Z2xfRnJhZ0NvbG9yLnJnYiA9IG1peCggZ2xfRnJhZ0NvbG9yLnJnYiwgZm9nQ29sb3IsIGZvZ0ZhY3RvciApO1xuI2VuZGlmIixmb2dfcGFyc19mcmFnbWVudDoiI2lmZGVmIFVTRV9GT0dcblx0dW5pZm9ybSB2ZWMzIGZvZ0NvbG9yO1xuXHR2YXJ5aW5nIGZsb2F0IGZvZ0RlcHRoO1xuXHQjaWZkZWYgRk9HX0VYUDJcblx0XHR1bmlmb3JtIGZsb2F0IGZvZ0RlbnNpdHk7XG5cdCNlbHNlXG5cdFx0dW5pZm9ybSBmbG9hdCBmb2dOZWFyO1xuXHRcdHVuaWZvcm0gZmxvYXQgZm9nRmFyO1xuXHQjZW5kaWZcbiNlbmRpZiIsZ3JhZGllbnRtYXBfcGFyc19mcmFnbWVudDoiI2lmZGVmIFVTRV9HUkFESUVOVE1BUFxuXHR1bmlmb3JtIHNhbXBsZXIyRCBncmFkaWVudE1hcDtcbiNlbmRpZlxudmVjMyBnZXRHcmFkaWVudElycmFkaWFuY2UoIHZlYzMgbm9ybWFsLCB2ZWMzIGxpZ2h0RGlyZWN0aW9uICkge1xuXHRmbG9hdCBkb3ROTCA9IGRvdCggbm9ybWFsLCBsaWdodERpcmVjdGlvbiApO1xuXHR2ZWMyIGNvb3JkID0gdmVjMiggZG90TkwgKiAwLjUgKyAwLjUsIDAuMCApO1xuXHQjaWZkZWYgVVNFX0dSQURJRU5UTUFQXG5cdFx0cmV0dXJuIHRleHR1cmUyRCggZ3JhZGllbnRNYXAsIGNvb3JkICkucmdiO1xuXHQjZWxzZVxuXHRcdHJldHVybiAoIGNvb3JkLnggPCAwLjcgKSA/IHZlYzMoIDAuNyApIDogdmVjMyggMS4wICk7XG5cdCNlbmRpZlxufSIsbGlnaHRtYXBfZnJhZ21lbnQ6IiNpZmRlZiBVU0VfTElHSFRNQVBcblx0dmVjNCBsaWdodE1hcFRleGVsPSB0ZXh0dXJlMkQoIGxpZ2h0TWFwLCB2VXYyICk7XG5cdHJlZmxlY3RlZExpZ2h0LmluZGlyZWN0RGlmZnVzZSArPSBQSSAqIGxpZ2h0TWFwVGV4ZWxUb0xpbmVhciggbGlnaHRNYXBUZXhlbCApLnJnYiAqIGxpZ2h0TWFwSW50ZW5zaXR5O1xuI2VuZGlmIixsaWdodG1hcF9wYXJzX2ZyYWdtZW50OiIjaWZkZWYgVVNFX0xJR0hUTUFQXG5cdHVuaWZvcm0gc2FtcGxlcjJEIGxpZ2h0TWFwO1xuXHR1bmlmb3JtIGZsb2F0IGxpZ2h0TWFwSW50ZW5zaXR5O1xuI2VuZGlmIixsaWdodHNfbGFtYmVydF92ZXJ0ZXg6InZlYzMgZGlmZnVzZSA9IHZlYzMoIDEuMCApO1xuR2VvbWV0cmljQ29udGV4dCBnZW9tZXRyeTtcbmdlb21ldHJ5LnBvc2l0aW9uID0gbXZQb3NpdGlvbi54eXo7XG5nZW9tZXRyeS5ub3JtYWwgPSBub3JtYWxpemUoIHRyYW5zZm9ybWVkTm9ybWFsICk7XG5nZW9tZXRyeS52aWV3RGlyID0gKCBpc09ydGhvZ3JhcGhpYyApID8gdmVjMyggMCwgMCwgMSApIDogbm9ybWFsaXplKCAtbXZQb3NpdGlvbi54eXogKTtcbkdlb21ldHJpY0NvbnRleHQgYmFja0dlb21ldHJ5O1xuYmFja0dlb21ldHJ5LnBvc2l0aW9uID0gZ2VvbWV0cnkucG9zaXRpb247XG5iYWNrR2VvbWV0cnkubm9ybWFsID0gLWdlb21ldHJ5Lm5vcm1hbDtcbmJhY2tHZW9tZXRyeS52aWV3RGlyID0gZ2VvbWV0cnkudmlld0RpcjtcbnZMaWdodEZyb250ID0gdmVjMyggMC4wICk7XG52SW5kaXJlY3RGcm9udCA9IHZlYzMoIDAuMCApO1xuI2lmZGVmIERPVUJMRV9TSURFRFxuXHR2TGlnaHRCYWNrID0gdmVjMyggMC4wICk7XG5cdHZJbmRpcmVjdEJhY2sgPSB2ZWMzKCAwLjAgKTtcbiNlbmRpZlxuSW5jaWRlbnRMaWdodCBkaXJlY3RMaWdodDtcbmZsb2F0IGRvdE5MO1xudmVjMyBkaXJlY3RMaWdodENvbG9yX0RpZmZ1c2U7XG52SW5kaXJlY3RGcm9udCArPSBnZXRBbWJpZW50TGlnaHRJcnJhZGlhbmNlKCBhbWJpZW50TGlnaHRDb2xvciApO1xudkluZGlyZWN0RnJvbnQgKz0gZ2V0TGlnaHRQcm9iZUlycmFkaWFuY2UoIGxpZ2h0UHJvYmUsIGdlb21ldHJ5ICk7XG4jaWZkZWYgRE9VQkxFX1NJREVEXG5cdHZJbmRpcmVjdEJhY2sgKz0gZ2V0QW1iaWVudExpZ2h0SXJyYWRpYW5jZSggYW1iaWVudExpZ2h0Q29sb3IgKTtcblx0dkluZGlyZWN0QmFjayArPSBnZXRMaWdodFByb2JlSXJyYWRpYW5jZSggbGlnaHRQcm9iZSwgYmFja0dlb21ldHJ5ICk7XG4jZW5kaWZcbiNpZiBOVU1fUE9JTlRfTElHSFRTID4gMFxuXHQjcHJhZ21hIHVucm9sbF9sb29wX3N0YXJ0XG5cdGZvciAoIGludCBpID0gMDsgaSA8IE5VTV9QT0lOVF9MSUdIVFM7IGkgKysgKSB7XG5cdFx0Z2V0UG9pbnREaXJlY3RMaWdodElycmFkaWFuY2UoIHBvaW50TGlnaHRzWyBpIF0sIGdlb21ldHJ5LCBkaXJlY3RMaWdodCApO1xuXHRcdGRvdE5MID0gZG90KCBnZW9tZXRyeS5ub3JtYWwsIGRpcmVjdExpZ2h0LmRpcmVjdGlvbiApO1xuXHRcdGRpcmVjdExpZ2h0Q29sb3JfRGlmZnVzZSA9IFBJICogZGlyZWN0TGlnaHQuY29sb3I7XG5cdFx0dkxpZ2h0RnJvbnQgKz0gc2F0dXJhdGUoIGRvdE5MICkgKiBkaXJlY3RMaWdodENvbG9yX0RpZmZ1c2U7XG5cdFx0I2lmZGVmIERPVUJMRV9TSURFRFxuXHRcdFx0dkxpZ2h0QmFjayArPSBzYXR1cmF0ZSggLWRvdE5MICkgKiBkaXJlY3RMaWdodENvbG9yX0RpZmZ1c2U7XG5cdFx0I2VuZGlmXG5cdH1cblx0I3ByYWdtYSB1bnJvbGxfbG9vcF9lbmRcbiNlbmRpZlxuI2lmIE5VTV9TUE9UX0xJR0hUUyA+IDBcblx0I3ByYWdtYSB1bnJvbGxfbG9vcF9zdGFydFxuXHRmb3IgKCBpbnQgaSA9IDA7IGkgPCBOVU1fU1BPVF9MSUdIVFM7IGkgKysgKSB7XG5cdFx0Z2V0U3BvdERpcmVjdExpZ2h0SXJyYWRpYW5jZSggc3BvdExpZ2h0c1sgaSBdLCBnZW9tZXRyeSwgZGlyZWN0TGlnaHQgKTtcblx0XHRkb3ROTCA9IGRvdCggZ2VvbWV0cnkubm9ybWFsLCBkaXJlY3RMaWdodC5kaXJlY3Rpb24gKTtcblx0XHRkaXJlY3RMaWdodENvbG9yX0RpZmZ1c2UgPSBQSSAqIGRpcmVjdExpZ2h0LmNvbG9yO1xuXHRcdHZMaWdodEZyb250ICs9IHNhdHVyYXRlKCBkb3ROTCApICogZGlyZWN0TGlnaHRDb2xvcl9EaWZmdXNlO1xuXHRcdCNpZmRlZiBET1VCTEVfU0lERURcblx0XHRcdHZMaWdodEJhY2sgKz0gc2F0dXJhdGUoIC1kb3ROTCApICogZGlyZWN0TGlnaHRDb2xvcl9EaWZmdXNlO1xuXHRcdCNlbmRpZlxuXHR9XG5cdCNwcmFnbWEgdW5yb2xsX2xvb3BfZW5kXG4jZW5kaWZcbiNpZiBOVU1fRElSX0xJR0hUUyA+IDBcblx0I3ByYWdtYSB1bnJvbGxfbG9vcF9zdGFydFxuXHRmb3IgKCBpbnQgaSA9IDA7IGkgPCBOVU1fRElSX0xJR0hUUzsgaSArKyApIHtcblx0XHRnZXREaXJlY3Rpb25hbERpcmVjdExpZ2h0SXJyYWRpYW5jZSggZGlyZWN0aW9uYWxMaWdodHNbIGkgXSwgZ2VvbWV0cnksIGRpcmVjdExpZ2h0ICk7XG5cdFx0ZG90TkwgPSBkb3QoIGdlb21ldHJ5Lm5vcm1hbCwgZGlyZWN0TGlnaHQuZGlyZWN0aW9uICk7XG5cdFx0ZGlyZWN0TGlnaHRDb2xvcl9EaWZmdXNlID0gUEkgKiBkaXJlY3RMaWdodC5jb2xvcjtcblx0XHR2TGlnaHRGcm9udCArPSBzYXR1cmF0ZSggZG90TkwgKSAqIGRpcmVjdExpZ2h0Q29sb3JfRGlmZnVzZTtcblx0XHQjaWZkZWYgRE9VQkxFX1NJREVEXG5cdFx0XHR2TGlnaHRCYWNrICs9IHNhdHVyYXRlKCAtZG90TkwgKSAqIGRpcmVjdExpZ2h0Q29sb3JfRGlmZnVzZTtcblx0XHQjZW5kaWZcblx0fVxuXHQjcHJhZ21hIHVucm9sbF9sb29wX2VuZFxuI2VuZGlmXG4jaWYgTlVNX0hFTUlfTElHSFRTID4gMFxuXHQjcHJhZ21hIHVucm9sbF9sb29wX3N0YXJ0XG5cdGZvciAoIGludCBpID0gMDsgaSA8IE5VTV9IRU1JX0xJR0hUUzsgaSArKyApIHtcblx0XHR2SW5kaXJlY3RGcm9udCArPSBnZXRIZW1pc3BoZXJlTGlnaHRJcnJhZGlhbmNlKCBoZW1pc3BoZXJlTGlnaHRzWyBpIF0sIGdlb21ldHJ5ICk7XG5cdFx0I2lmZGVmIERPVUJMRV9TSURFRFxuXHRcdFx0dkluZGlyZWN0QmFjayArPSBnZXRIZW1pc3BoZXJlTGlnaHRJcnJhZGlhbmNlKCBoZW1pc3BoZXJlTGlnaHRzWyBpIF0sIGJhY2tHZW9tZXRyeSApO1xuXHRcdCNlbmRpZlxuXHR9XG5cdCNwcmFnbWEgdW5yb2xsX2xvb3BfZW5kXG4jZW5kaWYiLGxpZ2h0c19wYXJzX2JlZ2luOiJ1bmlmb3JtIGJvb2wgcmVjZWl2ZVNoYWRvdztcbnVuaWZvcm0gdmVjMyBhbWJpZW50TGlnaHRDb2xvcjtcbnVuaWZvcm0gdmVjMyBsaWdodFByb2JlWyA5IF07XG52ZWMzIHNoR2V0SXJyYWRpYW5jZUF0KCBpbiB2ZWMzIG5vcm1hbCwgaW4gdmVjMyBzaENvZWZmaWNpZW50c1sgOSBdICkge1xuXHRmbG9hdCB4ID0gbm9ybWFsLngsIHkgPSBub3JtYWwueSwgeiA9IG5vcm1hbC56O1xuXHR2ZWMzIHJlc3VsdCA9IHNoQ29lZmZpY2llbnRzWyAwIF0gKiAwLjg4NjIyNztcblx0cmVzdWx0ICs9IHNoQ29lZmZpY2llbnRzWyAxIF0gKiAyLjAgKiAwLjUxMTY2NCAqIHk7XG5cdHJlc3VsdCArPSBzaENvZWZmaWNpZW50c1sgMiBdICogMi4wICogMC41MTE2NjQgKiB6O1xuXHRyZXN1bHQgKz0gc2hDb2VmZmljaWVudHNbIDMgXSAqIDIuMCAqIDAuNTExNjY0ICogeDtcblx0cmVzdWx0ICs9IHNoQ29lZmZpY2llbnRzWyA0IF0gKiAyLjAgKiAwLjQyOTA0MyAqIHggKiB5O1xuXHRyZXN1bHQgKz0gc2hDb2VmZmljaWVudHNbIDUgXSAqIDIuMCAqIDAuNDI5MDQzICogeSAqIHo7XG5cdHJlc3VsdCArPSBzaENvZWZmaWNpZW50c1sgNiBdICogKCAwLjc0MzEyNSAqIHogKiB6IC0gMC4yNDc3MDggKTtcblx0cmVzdWx0ICs9IHNoQ29lZmZpY2llbnRzWyA3IF0gKiAyLjAgKiAwLjQyOTA0MyAqIHggKiB6O1xuXHRyZXN1bHQgKz0gc2hDb2VmZmljaWVudHNbIDggXSAqIDAuNDI5MDQzICogKCB4ICogeCAtIHkgKiB5ICk7XG5cdHJldHVybiByZXN1bHQ7XG59XG52ZWMzIGdldExpZ2h0UHJvYmVJcnJhZGlhbmNlKCBjb25zdCBpbiB2ZWMzIGxpZ2h0UHJvYmVbIDkgXSwgY29uc3QgaW4gR2VvbWV0cmljQ29udGV4dCBnZW9tZXRyeSApIHtcblx0dmVjMyB3b3JsZE5vcm1hbCA9IGludmVyc2VUcmFuc2Zvcm1EaXJlY3Rpb24oIGdlb21ldHJ5Lm5vcm1hbCwgdmlld01hdHJpeCApO1xuXHR2ZWMzIGlycmFkaWFuY2UgPSBzaEdldElycmFkaWFuY2VBdCggd29ybGROb3JtYWwsIGxpZ2h0UHJvYmUgKTtcblx0cmV0dXJuIGlycmFkaWFuY2U7XG59XG52ZWMzIGdldEFtYmllbnRMaWdodElycmFkaWFuY2UoIGNvbnN0IGluIHZlYzMgYW1iaWVudExpZ2h0Q29sb3IgKSB7XG5cdHZlYzMgaXJyYWRpYW5jZSA9IGFtYmllbnRMaWdodENvbG9yO1xuXHQjaWZuZGVmIFBIWVNJQ0FMTFlfQ09SUkVDVF9MSUdIVFNcblx0XHRpcnJhZGlhbmNlICo9IFBJO1xuXHQjZW5kaWZcblx0cmV0dXJuIGlycmFkaWFuY2U7XG59XG4jaWYgTlVNX0RJUl9MSUdIVFMgPiAwXG5cdHN0cnVjdCBEaXJlY3Rpb25hbExpZ2h0IHtcblx0XHR2ZWMzIGRpcmVjdGlvbjtcblx0XHR2ZWMzIGNvbG9yO1xuXHR9O1xuXHR1bmlmb3JtIERpcmVjdGlvbmFsTGlnaHQgZGlyZWN0aW9uYWxMaWdodHNbIE5VTV9ESVJfTElHSFRTIF07XG5cdHZvaWQgZ2V0RGlyZWN0aW9uYWxEaXJlY3RMaWdodElycmFkaWFuY2UoIGNvbnN0IGluIERpcmVjdGlvbmFsTGlnaHQgZGlyZWN0aW9uYWxMaWdodCwgY29uc3QgaW4gR2VvbWV0cmljQ29udGV4dCBnZW9tZXRyeSwgb3V0IEluY2lkZW50TGlnaHQgZGlyZWN0TGlnaHQgKSB7XG5cdFx0ZGlyZWN0TGlnaHQuY29sb3IgPSBkaXJlY3Rpb25hbExpZ2h0LmNvbG9yO1xuXHRcdGRpcmVjdExpZ2h0LmRpcmVjdGlvbiA9IGRpcmVjdGlvbmFsTGlnaHQuZGlyZWN0aW9uO1xuXHRcdGRpcmVjdExpZ2h0LnZpc2libGUgPSB0cnVlO1xuXHR9XG4jZW5kaWZcbiNpZiBOVU1fUE9JTlRfTElHSFRTID4gMFxuXHRzdHJ1Y3QgUG9pbnRMaWdodCB7XG5cdFx0dmVjMyBwb3NpdGlvbjtcblx0XHR2ZWMzIGNvbG9yO1xuXHRcdGZsb2F0IGRpc3RhbmNlO1xuXHRcdGZsb2F0IGRlY2F5O1xuXHR9O1xuXHR1bmlmb3JtIFBvaW50TGlnaHQgcG9pbnRMaWdodHNbIE5VTV9QT0lOVF9MSUdIVFMgXTtcblx0dm9pZCBnZXRQb2ludERpcmVjdExpZ2h0SXJyYWRpYW5jZSggY29uc3QgaW4gUG9pbnRMaWdodCBwb2ludExpZ2h0LCBjb25zdCBpbiBHZW9tZXRyaWNDb250ZXh0IGdlb21ldHJ5LCBvdXQgSW5jaWRlbnRMaWdodCBkaXJlY3RMaWdodCApIHtcblx0XHR2ZWMzIGxWZWN0b3IgPSBwb2ludExpZ2h0LnBvc2l0aW9uIC0gZ2VvbWV0cnkucG9zaXRpb247XG5cdFx0ZGlyZWN0TGlnaHQuZGlyZWN0aW9uID0gbm9ybWFsaXplKCBsVmVjdG9yICk7XG5cdFx0ZmxvYXQgbGlnaHREaXN0YW5jZSA9IGxlbmd0aCggbFZlY3RvciApO1xuXHRcdGRpcmVjdExpZ2h0LmNvbG9yID0gcG9pbnRMaWdodC5jb2xvcjtcblx0XHRkaXJlY3RMaWdodC5jb2xvciAqPSBwdW5jdHVhbExpZ2h0SW50ZW5zaXR5VG9JcnJhZGlhbmNlRmFjdG9yKCBsaWdodERpc3RhbmNlLCBwb2ludExpZ2h0LmRpc3RhbmNlLCBwb2ludExpZ2h0LmRlY2F5ICk7XG5cdFx0ZGlyZWN0TGlnaHQudmlzaWJsZSA9ICggZGlyZWN0TGlnaHQuY29sb3IgIT0gdmVjMyggMC4wICkgKTtcblx0fVxuI2VuZGlmXG4jaWYgTlVNX1NQT1RfTElHSFRTID4gMFxuXHRzdHJ1Y3QgU3BvdExpZ2h0IHtcblx0XHR2ZWMzIHBvc2l0aW9uO1xuXHRcdHZlYzMgZGlyZWN0aW9uO1xuXHRcdHZlYzMgY29sb3I7XG5cdFx0ZmxvYXQgZGlzdGFuY2U7XG5cdFx0ZmxvYXQgZGVjYXk7XG5cdFx0ZmxvYXQgY29uZUNvcztcblx0XHRmbG9hdCBwZW51bWJyYUNvcztcblx0fTtcblx0dW5pZm9ybSBTcG90TGlnaHQgc3BvdExpZ2h0c1sgTlVNX1NQT1RfTElHSFRTIF07XG5cdHZvaWQgZ2V0U3BvdERpcmVjdExpZ2h0SXJyYWRpYW5jZSggY29uc3QgaW4gU3BvdExpZ2h0IHNwb3RMaWdodCwgY29uc3QgaW4gR2VvbWV0cmljQ29udGV4dCBnZW9tZXRyeSwgb3V0IEluY2lkZW50TGlnaHQgZGlyZWN0TGlnaHQgKSB7XG5cdFx0dmVjMyBsVmVjdG9yID0gc3BvdExpZ2h0LnBvc2l0aW9uIC0gZ2VvbWV0cnkucG9zaXRpb247XG5cdFx0ZGlyZWN0TGlnaHQuZGlyZWN0aW9uID0gbm9ybWFsaXplKCBsVmVjdG9yICk7XG5cdFx0ZmxvYXQgbGlnaHREaXN0YW5jZSA9IGxlbmd0aCggbFZlY3RvciApO1xuXHRcdGZsb2F0IGFuZ2xlQ29zID0gZG90KCBkaXJlY3RMaWdodC5kaXJlY3Rpb24sIHNwb3RMaWdodC5kaXJlY3Rpb24gKTtcblx0XHRpZiAoIGFuZ2xlQ29zID4gc3BvdExpZ2h0LmNvbmVDb3MgKSB7XG5cdFx0XHRmbG9hdCBzcG90RWZmZWN0ID0gc21vb3Roc3RlcCggc3BvdExpZ2h0LmNvbmVDb3MsIHNwb3RMaWdodC5wZW51bWJyYUNvcywgYW5nbGVDb3MgKTtcblx0XHRcdGRpcmVjdExpZ2h0LmNvbG9yID0gc3BvdExpZ2h0LmNvbG9yO1xuXHRcdFx0ZGlyZWN0TGlnaHQuY29sb3IgKj0gc3BvdEVmZmVjdCAqIHB1bmN0dWFsTGlnaHRJbnRlbnNpdHlUb0lycmFkaWFuY2VGYWN0b3IoIGxpZ2h0RGlzdGFuY2UsIHNwb3RMaWdodC5kaXN0YW5jZSwgc3BvdExpZ2h0LmRlY2F5ICk7XG5cdFx0XHRkaXJlY3RMaWdodC52aXNpYmxlID0gdHJ1ZTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0ZGlyZWN0TGlnaHQuY29sb3IgPSB2ZWMzKCAwLjAgKTtcblx0XHRcdGRpcmVjdExpZ2h0LnZpc2libGUgPSBmYWxzZTtcblx0XHR9XG5cdH1cbiNlbmRpZlxuI2lmIE5VTV9SRUNUX0FSRUFfTElHSFRTID4gMFxuXHRzdHJ1Y3QgUmVjdEFyZWFMaWdodCB7XG5cdFx0dmVjMyBjb2xvcjtcblx0XHR2ZWMzIHBvc2l0aW9uO1xuXHRcdHZlYzMgaGFsZldpZHRoO1xuXHRcdHZlYzMgaGFsZkhlaWdodDtcblx0fTtcblx0dW5pZm9ybSBzYW1wbGVyMkQgbHRjXzE7XHR1bmlmb3JtIHNhbXBsZXIyRCBsdGNfMjtcblx0dW5pZm9ybSBSZWN0QXJlYUxpZ2h0IHJlY3RBcmVhTGlnaHRzWyBOVU1fUkVDVF9BUkVBX0xJR0hUUyBdO1xuI2VuZGlmXG4jaWYgTlVNX0hFTUlfTElHSFRTID4gMFxuXHRzdHJ1Y3QgSGVtaXNwaGVyZUxpZ2h0IHtcblx0XHR2ZWMzIGRpcmVjdGlvbjtcblx0XHR2ZWMzIHNreUNvbG9yO1xuXHRcdHZlYzMgZ3JvdW5kQ29sb3I7XG5cdH07XG5cdHVuaWZvcm0gSGVtaXNwaGVyZUxpZ2h0IGhlbWlzcGhlcmVMaWdodHNbIE5VTV9IRU1JX0xJR0hUUyBdO1xuXHR2ZWMzIGdldEhlbWlzcGhlcmVMaWdodElycmFkaWFuY2UoIGNvbnN0IGluIEhlbWlzcGhlcmVMaWdodCBoZW1pTGlnaHQsIGNvbnN0IGluIEdlb21ldHJpY0NvbnRleHQgZ2VvbWV0cnkgKSB7XG5cdFx0ZmxvYXQgZG90TkwgPSBkb3QoIGdlb21ldHJ5Lm5vcm1hbCwgaGVtaUxpZ2h0LmRpcmVjdGlvbiApO1xuXHRcdGZsb2F0IGhlbWlEaWZmdXNlV2VpZ2h0ID0gMC41ICogZG90TkwgKyAwLjU7XG5cdFx0dmVjMyBpcnJhZGlhbmNlID0gbWl4KCBoZW1pTGlnaHQuZ3JvdW5kQ29sb3IsIGhlbWlMaWdodC5za3lDb2xvciwgaGVtaURpZmZ1c2VXZWlnaHQgKTtcblx0XHQjaWZuZGVmIFBIWVNJQ0FMTFlfQ09SUkVDVF9MSUdIVFNcblx0XHRcdGlycmFkaWFuY2UgKj0gUEk7XG5cdFx0I2VuZGlmXG5cdFx0cmV0dXJuIGlycmFkaWFuY2U7XG5cdH1cbiNlbmRpZiIsbGlnaHRzX3Rvb25fZnJhZ21lbnQ6IlRvb25NYXRlcmlhbCBtYXRlcmlhbDtcbm1hdGVyaWFsLmRpZmZ1c2VDb2xvciA9IGRpZmZ1c2VDb2xvci5yZ2I7IixsaWdodHNfdG9vbl9wYXJzX2ZyYWdtZW50OiJ2YXJ5aW5nIHZlYzMgdlZpZXdQb3NpdGlvbjtcbiNpZm5kZWYgRkxBVF9TSEFERURcblx0dmFyeWluZyB2ZWMzIHZOb3JtYWw7XG4jZW5kaWZcbnN0cnVjdCBUb29uTWF0ZXJpYWwge1xuXHR2ZWMzIGRpZmZ1c2VDb2xvcjtcbn07XG52b2lkIFJFX0RpcmVjdF9Ub29uKCBjb25zdCBpbiBJbmNpZGVudExpZ2h0IGRpcmVjdExpZ2h0LCBjb25zdCBpbiBHZW9tZXRyaWNDb250ZXh0IGdlb21ldHJ5LCBjb25zdCBpbiBUb29uTWF0ZXJpYWwgbWF0ZXJpYWwsIGlub3V0IFJlZmxlY3RlZExpZ2h0IHJlZmxlY3RlZExpZ2h0ICkge1xuXHR2ZWMzIGlycmFkaWFuY2UgPSBnZXRHcmFkaWVudElycmFkaWFuY2UoIGdlb21ldHJ5Lm5vcm1hbCwgZGlyZWN0TGlnaHQuZGlyZWN0aW9uICkgKiBkaXJlY3RMaWdodC5jb2xvcjtcblx0I2lmbmRlZiBQSFlTSUNBTExZX0NPUlJFQ1RfTElHSFRTXG5cdFx0aXJyYWRpYW5jZSAqPSBQSTtcblx0I2VuZGlmXG5cdHJlZmxlY3RlZExpZ2h0LmRpcmVjdERpZmZ1c2UgKz0gaXJyYWRpYW5jZSAqIEJSREZfRGlmZnVzZV9MYW1iZXJ0KCBtYXRlcmlhbC5kaWZmdXNlQ29sb3IgKTtcbn1cbnZvaWQgUkVfSW5kaXJlY3REaWZmdXNlX1Rvb24oIGNvbnN0IGluIHZlYzMgaXJyYWRpYW5jZSwgY29uc3QgaW4gR2VvbWV0cmljQ29udGV4dCBnZW9tZXRyeSwgY29uc3QgaW4gVG9vbk1hdGVyaWFsIG1hdGVyaWFsLCBpbm91dCBSZWZsZWN0ZWRMaWdodCByZWZsZWN0ZWRMaWdodCApIHtcblx0cmVmbGVjdGVkTGlnaHQuaW5kaXJlY3REaWZmdXNlICs9IGlycmFkaWFuY2UgKiBCUkRGX0RpZmZ1c2VfTGFtYmVydCggbWF0ZXJpYWwuZGlmZnVzZUNvbG9yICk7XG59XG4jZGVmaW5lIFJFX0RpcmVjdFx0XHRcdFx0UkVfRGlyZWN0X1Rvb25cbiNkZWZpbmUgUkVfSW5kaXJlY3REaWZmdXNlXHRcdFJFX0luZGlyZWN0RGlmZnVzZV9Ub29uXG4jZGVmaW5lIE1hdGVyaWFsX0xpZ2h0UHJvYmVMT0QoIG1hdGVyaWFsIClcdCgwKSIsbGlnaHRzX3Bob25nX2ZyYWdtZW50OiJCbGlublBob25nTWF0ZXJpYWwgbWF0ZXJpYWw7XG5tYXRlcmlhbC5kaWZmdXNlQ29sb3IgPSBkaWZmdXNlQ29sb3IucmdiO1xubWF0ZXJpYWwuc3BlY3VsYXJDb2xvciA9IHNwZWN1bGFyO1xubWF0ZXJpYWwuc3BlY3VsYXJTaGluaW5lc3MgPSBzaGluaW5lc3M7XG5tYXRlcmlhbC5zcGVjdWxhclN0cmVuZ3RoID0gc3BlY3VsYXJTdHJlbmd0aDsiLGxpZ2h0c19waG9uZ19wYXJzX2ZyYWdtZW50OiJ2YXJ5aW5nIHZlYzMgdlZpZXdQb3NpdGlvbjtcbiNpZm5kZWYgRkxBVF9TSEFERURcblx0dmFyeWluZyB2ZWMzIHZOb3JtYWw7XG4jZW5kaWZcbnN0cnVjdCBCbGlublBob25nTWF0ZXJpYWwge1xuXHR2ZWMzIGRpZmZ1c2VDb2xvcjtcblx0dmVjMyBzcGVjdWxhckNvbG9yO1xuXHRmbG9hdCBzcGVjdWxhclNoaW5pbmVzcztcblx0ZmxvYXQgc3BlY3VsYXJTdHJlbmd0aDtcbn07XG52b2lkIFJFX0RpcmVjdF9CbGlublBob25nKCBjb25zdCBpbiBJbmNpZGVudExpZ2h0IGRpcmVjdExpZ2h0LCBjb25zdCBpbiBHZW9tZXRyaWNDb250ZXh0IGdlb21ldHJ5LCBjb25zdCBpbiBCbGlublBob25nTWF0ZXJpYWwgbWF0ZXJpYWwsIGlub3V0IFJlZmxlY3RlZExpZ2h0IHJlZmxlY3RlZExpZ2h0ICkge1xuXHRmbG9hdCBkb3ROTCA9IHNhdHVyYXRlKCBkb3QoIGdlb21ldHJ5Lm5vcm1hbCwgZGlyZWN0TGlnaHQuZGlyZWN0aW9uICkgKTtcblx0dmVjMyBpcnJhZGlhbmNlID0gZG90TkwgKiBkaXJlY3RMaWdodC5jb2xvcjtcblx0I2lmbmRlZiBQSFlTSUNBTExZX0NPUlJFQ1RfTElHSFRTXG5cdFx0aXJyYWRpYW5jZSAqPSBQSTtcblx0I2VuZGlmXG5cdHJlZmxlY3RlZExpZ2h0LmRpcmVjdERpZmZ1c2UgKz0gaXJyYWRpYW5jZSAqIEJSREZfRGlmZnVzZV9MYW1iZXJ0KCBtYXRlcmlhbC5kaWZmdXNlQ29sb3IgKTtcblx0cmVmbGVjdGVkTGlnaHQuZGlyZWN0U3BlY3VsYXIgKz0gaXJyYWRpYW5jZSAqIEJSREZfU3BlY3VsYXJfQmxpbm5QaG9uZyggZGlyZWN0TGlnaHQsIGdlb21ldHJ5LCBtYXRlcmlhbC5zcGVjdWxhckNvbG9yLCBtYXRlcmlhbC5zcGVjdWxhclNoaW5pbmVzcyApICogbWF0ZXJpYWwuc3BlY3VsYXJTdHJlbmd0aDtcbn1cbnZvaWQgUkVfSW5kaXJlY3REaWZmdXNlX0JsaW5uUGhvbmcoIGNvbnN0IGluIHZlYzMgaXJyYWRpYW5jZSwgY29uc3QgaW4gR2VvbWV0cmljQ29udGV4dCBnZW9tZXRyeSwgY29uc3QgaW4gQmxpbm5QaG9uZ01hdGVyaWFsIG1hdGVyaWFsLCBpbm91dCBSZWZsZWN0ZWRMaWdodCByZWZsZWN0ZWRMaWdodCApIHtcblx0cmVmbGVjdGVkTGlnaHQuaW5kaXJlY3REaWZmdXNlICs9IGlycmFkaWFuY2UgKiBCUkRGX0RpZmZ1c2VfTGFtYmVydCggbWF0ZXJpYWwuZGlmZnVzZUNvbG9yICk7XG59XG4jZGVmaW5lIFJFX0RpcmVjdFx0XHRcdFx0UkVfRGlyZWN0X0JsaW5uUGhvbmdcbiNkZWZpbmUgUkVfSW5kaXJlY3REaWZmdXNlXHRcdFJFX0luZGlyZWN0RGlmZnVzZV9CbGlublBob25nXG4jZGVmaW5lIE1hdGVyaWFsX0xpZ2h0UHJvYmVMT0QoIG1hdGVyaWFsIClcdCgwKSIsbGlnaHRzX3BoeXNpY2FsX2ZyYWdtZW50OiJQaHlzaWNhbE1hdGVyaWFsIG1hdGVyaWFsO1xubWF0ZXJpYWwuZGlmZnVzZUNvbG9yID0gZGlmZnVzZUNvbG9yLnJnYiAqICggMS4wIC0gbWV0YWxuZXNzRmFjdG9yICk7XG52ZWMzIGR4eSA9IG1heCggYWJzKCBkRmR4KCBnZW9tZXRyeU5vcm1hbCApICksIGFicyggZEZkeSggZ2VvbWV0cnlOb3JtYWwgKSApICk7XG5mbG9hdCBnZW9tZXRyeVJvdWdobmVzcyA9IG1heCggbWF4KCBkeHkueCwgZHh5LnkgKSwgZHh5LnogKTtcbm1hdGVyaWFsLnNwZWN1bGFyUm91Z2huZXNzID0gbWF4KCByb3VnaG5lc3NGYWN0b3IsIDAuMDUyNSApO21hdGVyaWFsLnNwZWN1bGFyUm91Z2huZXNzICs9IGdlb21ldHJ5Um91Z2huZXNzO1xubWF0ZXJpYWwuc3BlY3VsYXJSb3VnaG5lc3MgPSBtaW4oIG1hdGVyaWFsLnNwZWN1bGFyUm91Z2huZXNzLCAxLjAgKTtcbiNpZmRlZiBSRUZMRUNUSVZJVFlcblx0I2lmZGVmIFNQRUNVTEFSXG5cdFx0dmVjMyBzcGVjdWxhckludGVuc2l0eUZhY3RvciA9IHZlYzMoIHNwZWN1bGFySW50ZW5zaXR5ICk7XG5cdFx0dmVjMyBzcGVjdWxhclRpbnRGYWN0b3IgPSBzcGVjdWxhclRpbnQ7XG5cdFx0I2lmZGVmIFVTRV9TUEVDVUxBUklOVEVOU0lUWU1BUFxuXHRcdFx0c3BlY3VsYXJJbnRlbnNpdHlGYWN0b3IgKj0gdGV4dHVyZTJEKCBzcGVjdWxhckludGVuc2l0eU1hcCwgdlV2ICkuYTtcblx0XHQjZW5kaWZcblx0XHQjaWZkZWYgVVNFX1NQRUNVTEFSVElOVE1BUFxuXHRcdFx0c3BlY3VsYXJUaW50RmFjdG9yICo9IHNwZWN1bGFyVGludE1hcFRleGVsVG9MaW5lYXIoIHRleHR1cmUyRCggc3BlY3VsYXJUaW50TWFwLCB2VXYgKSApLnJnYjtcblx0XHQjZW5kaWZcblx0XHRtYXRlcmlhbC5zcGVjdWxhckNvbG9yRjkwID0gbWl4KCBzcGVjdWxhckludGVuc2l0eUZhY3RvciwgdmVjMyggMS4wICksIG1ldGFsbmVzc0ZhY3RvciApO1xuXHQjZWxzZVxuXHRcdHZlYzMgc3BlY3VsYXJJbnRlbnNpdHlGYWN0b3IgPSB2ZWMzKCAxLjAgKTtcblx0XHR2ZWMzIHNwZWN1bGFyVGludEZhY3RvciA9IHZlYzMoIDEuMCApO1xuXHRcdG1hdGVyaWFsLnNwZWN1bGFyQ29sb3JGOTAgPSB2ZWMzKCAxLjAgKTtcblx0I2VuZGlmXG5cdG1hdGVyaWFsLnNwZWN1bGFyQ29sb3IgPSBtaXgoIG1pbiggdmVjMyggTUFYSU1VTV9TUEVDVUxBUl9DT0VGRklDSUVOVCAqIHBvdzIoIHJlZmxlY3Rpdml0eSApICkgKiBzcGVjdWxhclRpbnRGYWN0b3IsIHZlYzMoIDEuMCApICkgKiBzcGVjdWxhckludGVuc2l0eUZhY3RvciwgZGlmZnVzZUNvbG9yLnJnYiwgbWV0YWxuZXNzRmFjdG9yICk7XG4jZWxzZVxuXHRtYXRlcmlhbC5zcGVjdWxhckNvbG9yID0gbWl4KCB2ZWMzKCBERUZBVUxUX1NQRUNVTEFSX0NPRUZGSUNJRU5UICksIGRpZmZ1c2VDb2xvci5yZ2IsIG1ldGFsbmVzc0ZhY3RvciApO1xuXHRtYXRlcmlhbC5zcGVjdWxhckNvbG9yRjkwID0gdmVjMyggMS4wICk7XG4jZW5kaWZcbiNpZmRlZiBDTEVBUkNPQVRcblx0bWF0ZXJpYWwuY2xlYXJjb2F0ID0gY2xlYXJjb2F0O1xuXHRtYXRlcmlhbC5jbGVhcmNvYXRSb3VnaG5lc3MgPSBjbGVhcmNvYXRSb3VnaG5lc3M7XG5cdCNpZmRlZiBVU0VfQ0xFQVJDT0FUTUFQXG5cdFx0bWF0ZXJpYWwuY2xlYXJjb2F0ICo9IHRleHR1cmUyRCggY2xlYXJjb2F0TWFwLCB2VXYgKS54O1xuXHQjZW5kaWZcblx0I2lmZGVmIFVTRV9DTEVBUkNPQVRfUk9VR0hORVNTTUFQXG5cdFx0bWF0ZXJpYWwuY2xlYXJjb2F0Um91Z2huZXNzICo9IHRleHR1cmUyRCggY2xlYXJjb2F0Um91Z2huZXNzTWFwLCB2VXYgKS55O1xuXHQjZW5kaWZcblx0bWF0ZXJpYWwuY2xlYXJjb2F0ID0gc2F0dXJhdGUoIG1hdGVyaWFsLmNsZWFyY29hdCApO1x0bWF0ZXJpYWwuY2xlYXJjb2F0Um91Z2huZXNzID0gbWF4KCBtYXRlcmlhbC5jbGVhcmNvYXRSb3VnaG5lc3MsIDAuMDUyNSApO1xuXHRtYXRlcmlhbC5jbGVhcmNvYXRSb3VnaG5lc3MgKz0gZ2VvbWV0cnlSb3VnaG5lc3M7XG5cdG1hdGVyaWFsLmNsZWFyY29hdFJvdWdobmVzcyA9IG1pbiggbWF0ZXJpYWwuY2xlYXJjb2F0Um91Z2huZXNzLCAxLjAgKTtcbiNlbmRpZlxuI2lmZGVmIFVTRV9TSEVFTlxuXHRtYXRlcmlhbC5zaGVlbkNvbG9yID0gc2hlZW47XG4jZW5kaWYiLGxpZ2h0c19waHlzaWNhbF9wYXJzX2ZyYWdtZW50OiJzdHJ1Y3QgUGh5c2ljYWxNYXRlcmlhbCB7XG5cdHZlYzMgZGlmZnVzZUNvbG9yO1xuXHRmbG9hdCBzcGVjdWxhclJvdWdobmVzcztcblx0dmVjMyBzcGVjdWxhckNvbG9yO1xuXHR2ZWMzIHNwZWN1bGFyQ29sb3JGOTA7XG4jaWZkZWYgQ0xFQVJDT0FUXG5cdGZsb2F0IGNsZWFyY29hdDtcblx0ZmxvYXQgY2xlYXJjb2F0Um91Z2huZXNzO1xuI2VuZGlmXG4jaWZkZWYgVVNFX1NIRUVOXG5cdHZlYzMgc2hlZW5Db2xvcjtcbiNlbmRpZlxufTtcbiNkZWZpbmUgTUFYSU1VTV9TUEVDVUxBUl9DT0VGRklDSUVOVCAwLjE2XG4jZGVmaW5lIERFRkFVTFRfU1BFQ1VMQVJfQ09FRkZJQ0lFTlQgMC4wNFxuZmxvYXQgY2xlYXJjb2F0REhSQXBwcm94KCBjb25zdCBpbiBmbG9hdCByb3VnaG5lc3MsIGNvbnN0IGluIGZsb2F0IGRvdE5MICkge1xuXHRyZXR1cm4gREVGQVVMVF9TUEVDVUxBUl9DT0VGRklDSUVOVCArICggMS4wIC0gREVGQVVMVF9TUEVDVUxBUl9DT0VGRklDSUVOVCApICogKCBwb3coIDEuMCAtIGRvdE5MLCA1LjAgKSAqIHBvdyggMS4wIC0gcm91Z2huZXNzLCAyLjAgKSApO1xufVxuI2lmIE5VTV9SRUNUX0FSRUFfTElHSFRTID4gMFxuXHR2b2lkIFJFX0RpcmVjdF9SZWN0QXJlYV9QaHlzaWNhbCggY29uc3QgaW4gUmVjdEFyZWFMaWdodCByZWN0QXJlYUxpZ2h0LCBjb25zdCBpbiBHZW9tZXRyaWNDb250ZXh0IGdlb21ldHJ5LCBjb25zdCBpbiBQaHlzaWNhbE1hdGVyaWFsIG1hdGVyaWFsLCBpbm91dCBSZWZsZWN0ZWRMaWdodCByZWZsZWN0ZWRMaWdodCApIHtcblx0XHR2ZWMzIG5vcm1hbCA9IGdlb21ldHJ5Lm5vcm1hbDtcblx0XHR2ZWMzIHZpZXdEaXIgPSBnZW9tZXRyeS52aWV3RGlyO1xuXHRcdHZlYzMgcG9zaXRpb24gPSBnZW9tZXRyeS5wb3NpdGlvbjtcblx0XHR2ZWMzIGxpZ2h0UG9zID0gcmVjdEFyZWFMaWdodC5wb3NpdGlvbjtcblx0XHR2ZWMzIGhhbGZXaWR0aCA9IHJlY3RBcmVhTGlnaHQuaGFsZldpZHRoO1xuXHRcdHZlYzMgaGFsZkhlaWdodCA9IHJlY3RBcmVhTGlnaHQuaGFsZkhlaWdodDtcblx0XHR2ZWMzIGxpZ2h0Q29sb3IgPSByZWN0QXJlYUxpZ2h0LmNvbG9yO1xuXHRcdGZsb2F0IHJvdWdobmVzcyA9IG1hdGVyaWFsLnNwZWN1bGFyUm91Z2huZXNzO1xuXHRcdHZlYzMgcmVjdENvb3Jkc1sgNCBdO1xuXHRcdHJlY3RDb29yZHNbIDAgXSA9IGxpZ2h0UG9zICsgaGFsZldpZHRoIC0gaGFsZkhlaWdodDtcdFx0cmVjdENvb3Jkc1sgMSBdID0gbGlnaHRQb3MgLSBoYWxmV2lkdGggLSBoYWxmSGVpZ2h0O1xuXHRcdHJlY3RDb29yZHNbIDIgXSA9IGxpZ2h0UG9zIC0gaGFsZldpZHRoICsgaGFsZkhlaWdodDtcblx0XHRyZWN0Q29vcmRzWyAzIF0gPSBsaWdodFBvcyArIGhhbGZXaWR0aCArIGhhbGZIZWlnaHQ7XG5cdFx0dmVjMiB1diA9IExUQ19Vdiggbm9ybWFsLCB2aWV3RGlyLCByb3VnaG5lc3MgKTtcblx0XHR2ZWM0IHQxID0gdGV4dHVyZTJEKCBsdGNfMSwgdXYgKTtcblx0XHR2ZWM0IHQyID0gdGV4dHVyZTJEKCBsdGNfMiwgdXYgKTtcblx0XHRtYXQzIG1JbnYgPSBtYXQzKFxuXHRcdFx0dmVjMyggdDEueCwgMCwgdDEueSApLFxuXHRcdFx0dmVjMyggICAgMCwgMSwgICAgMCApLFxuXHRcdFx0dmVjMyggdDEueiwgMCwgdDEudyApXG5cdFx0KTtcblx0XHR2ZWMzIGZyZXNuZWwgPSAoIG1hdGVyaWFsLnNwZWN1bGFyQ29sb3IgKiB0Mi54ICsgKCB2ZWMzKCAxLjAgKSAtIG1hdGVyaWFsLnNwZWN1bGFyQ29sb3IgKSAqIHQyLnkgKTtcblx0XHRyZWZsZWN0ZWRMaWdodC5kaXJlY3RTcGVjdWxhciArPSBsaWdodENvbG9yICogZnJlc25lbCAqIExUQ19FdmFsdWF0ZSggbm9ybWFsLCB2aWV3RGlyLCBwb3NpdGlvbiwgbUludiwgcmVjdENvb3JkcyApO1xuXHRcdHJlZmxlY3RlZExpZ2h0LmRpcmVjdERpZmZ1c2UgKz0gbGlnaHRDb2xvciAqIG1hdGVyaWFsLmRpZmZ1c2VDb2xvciAqIExUQ19FdmFsdWF0ZSggbm9ybWFsLCB2aWV3RGlyLCBwb3NpdGlvbiwgbWF0MyggMS4wICksIHJlY3RDb29yZHMgKTtcblx0fVxuI2VuZGlmXG52b2lkIFJFX0RpcmVjdF9QaHlzaWNhbCggY29uc3QgaW4gSW5jaWRlbnRMaWdodCBkaXJlY3RMaWdodCwgY29uc3QgaW4gR2VvbWV0cmljQ29udGV4dCBnZW9tZXRyeSwgY29uc3QgaW4gUGh5c2ljYWxNYXRlcmlhbCBtYXRlcmlhbCwgaW5vdXQgUmVmbGVjdGVkTGlnaHQgcmVmbGVjdGVkTGlnaHQgKSB7XG5cdGZsb2F0IGRvdE5MID0gc2F0dXJhdGUoIGRvdCggZ2VvbWV0cnkubm9ybWFsLCBkaXJlY3RMaWdodC5kaXJlY3Rpb24gKSApO1xuXHR2ZWMzIGlycmFkaWFuY2UgPSBkb3ROTCAqIGRpcmVjdExpZ2h0LmNvbG9yO1xuXHQjaWZuZGVmIFBIWVNJQ0FMTFlfQ09SUkVDVF9MSUdIVFNcblx0XHRpcnJhZGlhbmNlICo9IFBJO1xuXHQjZW5kaWZcblx0I2lmZGVmIENMRUFSQ09BVFxuXHRcdGZsb2F0IGNjRG90TkwgPSBzYXR1cmF0ZSggZG90KCBnZW9tZXRyeS5jbGVhcmNvYXROb3JtYWwsIGRpcmVjdExpZ2h0LmRpcmVjdGlvbiApICk7XG5cdFx0dmVjMyBjY0lycmFkaWFuY2UgPSBjY0RvdE5MICogZGlyZWN0TGlnaHQuY29sb3I7XG5cdFx0I2lmbmRlZiBQSFlTSUNBTExZX0NPUlJFQ1RfTElHSFRTXG5cdFx0XHRjY0lycmFkaWFuY2UgKj0gUEk7XG5cdFx0I2VuZGlmXG5cdFx0ZmxvYXQgY2xlYXJjb2F0REhSID0gbWF0ZXJpYWwuY2xlYXJjb2F0ICogY2xlYXJjb2F0REhSQXBwcm94KCBtYXRlcmlhbC5jbGVhcmNvYXRSb3VnaG5lc3MsIGNjRG90TkwgKTtcblx0XHRyZWZsZWN0ZWRMaWdodC5kaXJlY3RTcGVjdWxhciArPSBjY0lycmFkaWFuY2UgKiBtYXRlcmlhbC5jbGVhcmNvYXQgKiBCUkRGX1NwZWN1bGFyX0dHWCggZGlyZWN0TGlnaHQsIGdlb21ldHJ5LnZpZXdEaXIsIGdlb21ldHJ5LmNsZWFyY29hdE5vcm1hbCwgdmVjMyggREVGQVVMVF9TUEVDVUxBUl9DT0VGRklDSUVOVCApLCB2ZWMzKCAxLjAgKSwgbWF0ZXJpYWwuY2xlYXJjb2F0Um91Z2huZXNzICk7XG5cdCNlbHNlXG5cdFx0ZmxvYXQgY2xlYXJjb2F0REhSID0gMC4wO1xuXHQjZW5kaWZcblx0I2lmZGVmIFVTRV9TSEVFTlxuXHRcdHJlZmxlY3RlZExpZ2h0LmRpcmVjdFNwZWN1bGFyICs9ICggMS4wIC0gY2xlYXJjb2F0REhSICkgKiBpcnJhZGlhbmNlICogQlJERl9TcGVjdWxhcl9TaGVlbihcblx0XHRcdG1hdGVyaWFsLnNwZWN1bGFyUm91Z2huZXNzLFxuXHRcdFx0ZGlyZWN0TGlnaHQuZGlyZWN0aW9uLFxuXHRcdFx0Z2VvbWV0cnksXG5cdFx0XHRtYXRlcmlhbC5zaGVlbkNvbG9yXG5cdFx0KTtcblx0I2Vsc2Vcblx0XHRyZWZsZWN0ZWRMaWdodC5kaXJlY3RTcGVjdWxhciArPSAoIDEuMCAtIGNsZWFyY29hdERIUiApICogaXJyYWRpYW5jZSAqIEJSREZfU3BlY3VsYXJfR0dYKCBkaXJlY3RMaWdodCwgZ2VvbWV0cnkudmlld0RpciwgZ2VvbWV0cnkubm9ybWFsLCBtYXRlcmlhbC5zcGVjdWxhckNvbG9yLCBtYXRlcmlhbC5zcGVjdWxhckNvbG9yRjkwLCBtYXRlcmlhbC5zcGVjdWxhclJvdWdobmVzcyk7XG5cdCNlbmRpZlxuXHRyZWZsZWN0ZWRMaWdodC5kaXJlY3REaWZmdXNlICs9ICggMS4wIC0gY2xlYXJjb2F0REhSICkgKiBpcnJhZGlhbmNlICogQlJERl9EaWZmdXNlX0xhbWJlcnQoIG1hdGVyaWFsLmRpZmZ1c2VDb2xvciApO1xufVxudm9pZCBSRV9JbmRpcmVjdERpZmZ1c2VfUGh5c2ljYWwoIGNvbnN0IGluIHZlYzMgaXJyYWRpYW5jZSwgY29uc3QgaW4gR2VvbWV0cmljQ29udGV4dCBnZW9tZXRyeSwgY29uc3QgaW4gUGh5c2ljYWxNYXRlcmlhbCBtYXRlcmlhbCwgaW5vdXQgUmVmbGVjdGVkTGlnaHQgcmVmbGVjdGVkTGlnaHQgKSB7XG5cdHJlZmxlY3RlZExpZ2h0LmluZGlyZWN0RGlmZnVzZSArPSBpcnJhZGlhbmNlICogQlJERl9EaWZmdXNlX0xhbWJlcnQoIG1hdGVyaWFsLmRpZmZ1c2VDb2xvciApO1xufVxudm9pZCBSRV9JbmRpcmVjdFNwZWN1bGFyX1BoeXNpY2FsKCBjb25zdCBpbiB2ZWMzIHJhZGlhbmNlLCBjb25zdCBpbiB2ZWMzIGlycmFkaWFuY2UsIGNvbnN0IGluIHZlYzMgY2xlYXJjb2F0UmFkaWFuY2UsIGNvbnN0IGluIEdlb21ldHJpY0NvbnRleHQgZ2VvbWV0cnksIGNvbnN0IGluIFBoeXNpY2FsTWF0ZXJpYWwgbWF0ZXJpYWwsIGlub3V0IFJlZmxlY3RlZExpZ2h0IHJlZmxlY3RlZExpZ2h0KSB7XG5cdCNpZmRlZiBDTEVBUkNPQVRcblx0XHRmbG9hdCBjY0RvdE5WID0gc2F0dXJhdGUoIGRvdCggZ2VvbWV0cnkuY2xlYXJjb2F0Tm9ybWFsLCBnZW9tZXRyeS52aWV3RGlyICkgKTtcblx0XHRyZWZsZWN0ZWRMaWdodC5pbmRpcmVjdFNwZWN1bGFyICs9IGNsZWFyY29hdFJhZGlhbmNlICogbWF0ZXJpYWwuY2xlYXJjb2F0ICogQlJERl9TcGVjdWxhcl9HR1hfRW52aXJvbm1lbnQoIGdlb21ldHJ5LnZpZXdEaXIsIGdlb21ldHJ5LmNsZWFyY29hdE5vcm1hbCwgdmVjMyggREVGQVVMVF9TUEVDVUxBUl9DT0VGRklDSUVOVCApLCBtYXRlcmlhbC5jbGVhcmNvYXRSb3VnaG5lc3MgKTtcblx0XHRmbG9hdCBjY0RvdE5MID0gY2NEb3ROVjtcblx0XHRmbG9hdCBjbGVhcmNvYXRESFIgPSBtYXRlcmlhbC5jbGVhcmNvYXQgKiBjbGVhcmNvYXRESFJBcHByb3goIG1hdGVyaWFsLmNsZWFyY29hdFJvdWdobmVzcywgY2NEb3ROTCApO1xuXHQjZWxzZVxuXHRcdGZsb2F0IGNsZWFyY29hdERIUiA9IDAuMDtcblx0I2VuZGlmXG5cdGZsb2F0IGNsZWFyY29hdEludiA9IDEuMCAtIGNsZWFyY29hdERIUjtcblx0dmVjMyBzaW5nbGVTY2F0dGVyaW5nID0gdmVjMyggMC4wICk7XG5cdHZlYzMgbXVsdGlTY2F0dGVyaW5nID0gdmVjMyggMC4wICk7XG5cdHZlYzMgY29zaW5lV2VpZ2h0ZWRJcnJhZGlhbmNlID0gaXJyYWRpYW5jZSAqIFJFQ0lQUk9DQUxfUEk7XG5cdEJSREZfU3BlY3VsYXJfTXVsdGlzY2F0dGVyaW5nX0Vudmlyb25tZW50KCBnZW9tZXRyeSwgbWF0ZXJpYWwuc3BlY3VsYXJDb2xvciwgbWF0ZXJpYWwuc3BlY3VsYXJSb3VnaG5lc3MsIHNpbmdsZVNjYXR0ZXJpbmcsIG11bHRpU2NhdHRlcmluZyApO1xuXHR2ZWMzIGRpZmZ1c2UgPSBtYXRlcmlhbC5kaWZmdXNlQ29sb3IgKiAoIDEuMCAtICggc2luZ2xlU2NhdHRlcmluZyArIG11bHRpU2NhdHRlcmluZyApICk7XG5cdHJlZmxlY3RlZExpZ2h0LmluZGlyZWN0U3BlY3VsYXIgKz0gY2xlYXJjb2F0SW52ICogcmFkaWFuY2UgKiBzaW5nbGVTY2F0dGVyaW5nO1xuXHRyZWZsZWN0ZWRMaWdodC5pbmRpcmVjdFNwZWN1bGFyICs9IG11bHRpU2NhdHRlcmluZyAqIGNvc2luZVdlaWdodGVkSXJyYWRpYW5jZTtcblx0cmVmbGVjdGVkTGlnaHQuaW5kaXJlY3REaWZmdXNlICs9IGRpZmZ1c2UgKiBjb3NpbmVXZWlnaHRlZElycmFkaWFuY2U7XG59XG4jZGVmaW5lIFJFX0RpcmVjdFx0XHRcdFx0UkVfRGlyZWN0X1BoeXNpY2FsXG4jZGVmaW5lIFJFX0RpcmVjdF9SZWN0QXJlYVx0XHRSRV9EaXJlY3RfUmVjdEFyZWFfUGh5c2ljYWxcbiNkZWZpbmUgUkVfSW5kaXJlY3REaWZmdXNlXHRcdFJFX0luZGlyZWN0RGlmZnVzZV9QaHlzaWNhbFxuI2RlZmluZSBSRV9JbmRpcmVjdFNwZWN1bGFyXHRcdFJFX0luZGlyZWN0U3BlY3VsYXJfUGh5c2ljYWxcbmZsb2F0IGNvbXB1dGVTcGVjdWxhck9jY2x1c2lvbiggY29uc3QgaW4gZmxvYXQgZG90TlYsIGNvbnN0IGluIGZsb2F0IGFtYmllbnRPY2NsdXNpb24sIGNvbnN0IGluIGZsb2F0IHJvdWdobmVzcyApIHtcblx0cmV0dXJuIHNhdHVyYXRlKCBwb3coIGRvdE5WICsgYW1iaWVudE9jY2x1c2lvbiwgZXhwMiggLSAxNi4wICogcm91Z2huZXNzIC0gMS4wICkgKSAtIDEuMCArIGFtYmllbnRPY2NsdXNpb24gKTtcbn0iLGxpZ2h0c19mcmFnbWVudF9iZWdpbjoiXG5HZW9tZXRyaWNDb250ZXh0IGdlb21ldHJ5O1xuZ2VvbWV0cnkucG9zaXRpb24gPSAtIHZWaWV3UG9zaXRpb247XG5nZW9tZXRyeS5ub3JtYWwgPSBub3JtYWw7XG5nZW9tZXRyeS52aWV3RGlyID0gKCBpc09ydGhvZ3JhcGhpYyApID8gdmVjMyggMCwgMCwgMSApIDogbm9ybWFsaXplKCB2Vmlld1Bvc2l0aW9uICk7XG4jaWZkZWYgQ0xFQVJDT0FUXG5cdGdlb21ldHJ5LmNsZWFyY29hdE5vcm1hbCA9IGNsZWFyY29hdE5vcm1hbDtcbiNlbmRpZlxuSW5jaWRlbnRMaWdodCBkaXJlY3RMaWdodDtcbiNpZiAoIE5VTV9QT0lOVF9MSUdIVFMgPiAwICkgJiYgZGVmaW5lZCggUkVfRGlyZWN0IClcblx0UG9pbnRMaWdodCBwb2ludExpZ2h0O1xuXHQjaWYgZGVmaW5lZCggVVNFX1NIQURPV01BUCApICYmIE5VTV9QT0lOVF9MSUdIVF9TSEFET1dTID4gMFxuXHRQb2ludExpZ2h0U2hhZG93IHBvaW50TGlnaHRTaGFkb3c7XG5cdCNlbmRpZlxuXHQjcHJhZ21hIHVucm9sbF9sb29wX3N0YXJ0XG5cdGZvciAoIGludCBpID0gMDsgaSA8IE5VTV9QT0lOVF9MSUdIVFM7IGkgKysgKSB7XG5cdFx0cG9pbnRMaWdodCA9IHBvaW50TGlnaHRzWyBpIF07XG5cdFx0Z2V0UG9pbnREaXJlY3RMaWdodElycmFkaWFuY2UoIHBvaW50TGlnaHQsIGdlb21ldHJ5LCBkaXJlY3RMaWdodCApO1xuXHRcdCNpZiBkZWZpbmVkKCBVU0VfU0hBRE9XTUFQICkgJiYgKCBVTlJPTExFRF9MT09QX0lOREVYIDwgTlVNX1BPSU5UX0xJR0hUX1NIQURPV1MgKVxuXHRcdHBvaW50TGlnaHRTaGFkb3cgPSBwb2ludExpZ2h0U2hhZG93c1sgaSBdO1xuXHRcdGRpcmVjdExpZ2h0LmNvbG9yICo9IGFsbCggYnZlYzIoIGRpcmVjdExpZ2h0LnZpc2libGUsIHJlY2VpdmVTaGFkb3cgKSApID8gZ2V0UG9pbnRTaGFkb3coIHBvaW50U2hhZG93TWFwWyBpIF0sIHBvaW50TGlnaHRTaGFkb3cuc2hhZG93TWFwU2l6ZSwgcG9pbnRMaWdodFNoYWRvdy5zaGFkb3dCaWFzLCBwb2ludExpZ2h0U2hhZG93LnNoYWRvd1JhZGl1cywgdlBvaW50U2hhZG93Q29vcmRbIGkgXSwgcG9pbnRMaWdodFNoYWRvdy5zaGFkb3dDYW1lcmFOZWFyLCBwb2ludExpZ2h0U2hhZG93LnNoYWRvd0NhbWVyYUZhciApIDogMS4wO1xuXHRcdCNlbmRpZlxuXHRcdFJFX0RpcmVjdCggZGlyZWN0TGlnaHQsIGdlb21ldHJ5LCBtYXRlcmlhbCwgcmVmbGVjdGVkTGlnaHQgKTtcblx0fVxuXHQjcHJhZ21hIHVucm9sbF9sb29wX2VuZFxuI2VuZGlmXG4jaWYgKCBOVU1fU1BPVF9MSUdIVFMgPiAwICkgJiYgZGVmaW5lZCggUkVfRGlyZWN0IClcblx0U3BvdExpZ2h0IHNwb3RMaWdodDtcblx0I2lmIGRlZmluZWQoIFVTRV9TSEFET1dNQVAgKSAmJiBOVU1fU1BPVF9MSUdIVF9TSEFET1dTID4gMFxuXHRTcG90TGlnaHRTaGFkb3cgc3BvdExpZ2h0U2hhZG93O1xuXHQjZW5kaWZcblx0I3ByYWdtYSB1bnJvbGxfbG9vcF9zdGFydFxuXHRmb3IgKCBpbnQgaSA9IDA7IGkgPCBOVU1fU1BPVF9MSUdIVFM7IGkgKysgKSB7XG5cdFx0c3BvdExpZ2h0ID0gc3BvdExpZ2h0c1sgaSBdO1xuXHRcdGdldFNwb3REaXJlY3RMaWdodElycmFkaWFuY2UoIHNwb3RMaWdodCwgZ2VvbWV0cnksIGRpcmVjdExpZ2h0ICk7XG5cdFx0I2lmIGRlZmluZWQoIFVTRV9TSEFET1dNQVAgKSAmJiAoIFVOUk9MTEVEX0xPT1BfSU5ERVggPCBOVU1fU1BPVF9MSUdIVF9TSEFET1dTIClcblx0XHRzcG90TGlnaHRTaGFkb3cgPSBzcG90TGlnaHRTaGFkb3dzWyBpIF07XG5cdFx0ZGlyZWN0TGlnaHQuY29sb3IgKj0gYWxsKCBidmVjMiggZGlyZWN0TGlnaHQudmlzaWJsZSwgcmVjZWl2ZVNoYWRvdyApICkgPyBnZXRTaGFkb3coIHNwb3RTaGFkb3dNYXBbIGkgXSwgc3BvdExpZ2h0U2hhZG93LnNoYWRvd01hcFNpemUsIHNwb3RMaWdodFNoYWRvdy5zaGFkb3dCaWFzLCBzcG90TGlnaHRTaGFkb3cuc2hhZG93UmFkaXVzLCB2U3BvdFNoYWRvd0Nvb3JkWyBpIF0gKSA6IDEuMDtcblx0XHQjZW5kaWZcblx0XHRSRV9EaXJlY3QoIGRpcmVjdExpZ2h0LCBnZW9tZXRyeSwgbWF0ZXJpYWwsIHJlZmxlY3RlZExpZ2h0ICk7XG5cdH1cblx0I3ByYWdtYSB1bnJvbGxfbG9vcF9lbmRcbiNlbmRpZlxuI2lmICggTlVNX0RJUl9MSUdIVFMgPiAwICkgJiYgZGVmaW5lZCggUkVfRGlyZWN0IClcblx0RGlyZWN0aW9uYWxMaWdodCBkaXJlY3Rpb25hbExpZ2h0O1xuXHQjaWYgZGVmaW5lZCggVVNFX1NIQURPV01BUCApICYmIE5VTV9ESVJfTElHSFRfU0hBRE9XUyA+IDBcblx0RGlyZWN0aW9uYWxMaWdodFNoYWRvdyBkaXJlY3Rpb25hbExpZ2h0U2hhZG93O1xuXHQjZW5kaWZcblx0I3ByYWdtYSB1bnJvbGxfbG9vcF9zdGFydFxuXHRmb3IgKCBpbnQgaSA9IDA7IGkgPCBOVU1fRElSX0xJR0hUUzsgaSArKyApIHtcblx0XHRkaXJlY3Rpb25hbExpZ2h0ID0gZGlyZWN0aW9uYWxMaWdodHNbIGkgXTtcblx0XHRnZXREaXJlY3Rpb25hbERpcmVjdExpZ2h0SXJyYWRpYW5jZSggZGlyZWN0aW9uYWxMaWdodCwgZ2VvbWV0cnksIGRpcmVjdExpZ2h0ICk7XG5cdFx0I2lmIGRlZmluZWQoIFVTRV9TSEFET1dNQVAgKSAmJiAoIFVOUk9MTEVEX0xPT1BfSU5ERVggPCBOVU1fRElSX0xJR0hUX1NIQURPV1MgKVxuXHRcdGRpcmVjdGlvbmFsTGlnaHRTaGFkb3cgPSBkaXJlY3Rpb25hbExpZ2h0U2hhZG93c1sgaSBdO1xuXHRcdGRpcmVjdExpZ2h0LmNvbG9yICo9IGFsbCggYnZlYzIoIGRpcmVjdExpZ2h0LnZpc2libGUsIHJlY2VpdmVTaGFkb3cgKSApID8gZ2V0U2hhZG93KCBkaXJlY3Rpb25hbFNoYWRvd01hcFsgaSBdLCBkaXJlY3Rpb25hbExpZ2h0U2hhZG93LnNoYWRvd01hcFNpemUsIGRpcmVjdGlvbmFsTGlnaHRTaGFkb3cuc2hhZG93QmlhcywgZGlyZWN0aW9uYWxMaWdodFNoYWRvdy5zaGFkb3dSYWRpdXMsIHZEaXJlY3Rpb25hbFNoYWRvd0Nvb3JkWyBpIF0gKSA6IDEuMDtcblx0XHQjZW5kaWZcblx0XHRSRV9EaXJlY3QoIGRpcmVjdExpZ2h0LCBnZW9tZXRyeSwgbWF0ZXJpYWwsIHJlZmxlY3RlZExpZ2h0ICk7XG5cdH1cblx0I3ByYWdtYSB1bnJvbGxfbG9vcF9lbmRcbiNlbmRpZlxuI2lmICggTlVNX1JFQ1RfQVJFQV9MSUdIVFMgPiAwICkgJiYgZGVmaW5lZCggUkVfRGlyZWN0X1JlY3RBcmVhIClcblx0UmVjdEFyZWFMaWdodCByZWN0QXJlYUxpZ2h0O1xuXHQjcHJhZ21hIHVucm9sbF9sb29wX3N0YXJ0XG5cdGZvciAoIGludCBpID0gMDsgaSA8IE5VTV9SRUNUX0FSRUFfTElHSFRTOyBpICsrICkge1xuXHRcdHJlY3RBcmVhTGlnaHQgPSByZWN0QXJlYUxpZ2h0c1sgaSBdO1xuXHRcdFJFX0RpcmVjdF9SZWN0QXJlYSggcmVjdEFyZWFMaWdodCwgZ2VvbWV0cnksIG1hdGVyaWFsLCByZWZsZWN0ZWRMaWdodCApO1xuXHR9XG5cdCNwcmFnbWEgdW5yb2xsX2xvb3BfZW5kXG4jZW5kaWZcbiNpZiBkZWZpbmVkKCBSRV9JbmRpcmVjdERpZmZ1c2UgKVxuXHR2ZWMzIGlibElycmFkaWFuY2UgPSB2ZWMzKCAwLjAgKTtcblx0dmVjMyBpcnJhZGlhbmNlID0gZ2V0QW1iaWVudExpZ2h0SXJyYWRpYW5jZSggYW1iaWVudExpZ2h0Q29sb3IgKTtcblx0aXJyYWRpYW5jZSArPSBnZXRMaWdodFByb2JlSXJyYWRpYW5jZSggbGlnaHRQcm9iZSwgZ2VvbWV0cnkgKTtcblx0I2lmICggTlVNX0hFTUlfTElHSFRTID4gMCApXG5cdFx0I3ByYWdtYSB1bnJvbGxfbG9vcF9zdGFydFxuXHRcdGZvciAoIGludCBpID0gMDsgaSA8IE5VTV9IRU1JX0xJR0hUUzsgaSArKyApIHtcblx0XHRcdGlycmFkaWFuY2UgKz0gZ2V0SGVtaXNwaGVyZUxpZ2h0SXJyYWRpYW5jZSggaGVtaXNwaGVyZUxpZ2h0c1sgaSBdLCBnZW9tZXRyeSApO1xuXHRcdH1cblx0XHQjcHJhZ21hIHVucm9sbF9sb29wX2VuZFxuXHQjZW5kaWZcbiNlbmRpZlxuI2lmIGRlZmluZWQoIFJFX0luZGlyZWN0U3BlY3VsYXIgKVxuXHR2ZWMzIHJhZGlhbmNlID0gdmVjMyggMC4wICk7XG5cdHZlYzMgY2xlYXJjb2F0UmFkaWFuY2UgPSB2ZWMzKCAwLjAgKTtcbiNlbmRpZiIsbGlnaHRzX2ZyYWdtZW50X21hcHM6IiNpZiBkZWZpbmVkKCBSRV9JbmRpcmVjdERpZmZ1c2UgKVxuXHQjaWZkZWYgVVNFX0xJR0hUTUFQXG5cdFx0dmVjNCBsaWdodE1hcFRleGVsPSB0ZXh0dXJlMkQoIGxpZ2h0TWFwLCB2VXYyICk7XG5cdFx0dmVjMyBsaWdodE1hcElycmFkaWFuY2UgPSBsaWdodE1hcFRleGVsVG9MaW5lYXIoIGxpZ2h0TWFwVGV4ZWwgKS5yZ2IgKiBsaWdodE1hcEludGVuc2l0eTtcblx0XHQjaWZuZGVmIFBIWVNJQ0FMTFlfQ09SUkVDVF9MSUdIVFNcblx0XHRcdGxpZ2h0TWFwSXJyYWRpYW5jZSAqPSBQSTtcblx0XHQjZW5kaWZcblx0XHRpcnJhZGlhbmNlICs9IGxpZ2h0TWFwSXJyYWRpYW5jZTtcblx0I2VuZGlmXG5cdCNpZiBkZWZpbmVkKCBVU0VfRU5WTUFQICkgJiYgZGVmaW5lZCggU1RBTkRBUkQgKSAmJiBkZWZpbmVkKCBFTlZNQVBfVFlQRV9DVUJFX1VWIClcblx0XHRpYmxJcnJhZGlhbmNlICs9IGdldExpZ2h0UHJvYmVJbmRpcmVjdElycmFkaWFuY2UoIGdlb21ldHJ5LCBtYXhNaXBMZXZlbCApO1xuXHQjZW5kaWZcbiNlbmRpZlxuI2lmIGRlZmluZWQoIFVTRV9FTlZNQVAgKSAmJiBkZWZpbmVkKCBSRV9JbmRpcmVjdFNwZWN1bGFyIClcblx0cmFkaWFuY2UgKz0gZ2V0TGlnaHRQcm9iZUluZGlyZWN0UmFkaWFuY2UoIGdlb21ldHJ5LnZpZXdEaXIsIGdlb21ldHJ5Lm5vcm1hbCwgbWF0ZXJpYWwuc3BlY3VsYXJSb3VnaG5lc3MsIG1heE1pcExldmVsICk7XG5cdCNpZmRlZiBDTEVBUkNPQVRcblx0XHRjbGVhcmNvYXRSYWRpYW5jZSArPSBnZXRMaWdodFByb2JlSW5kaXJlY3RSYWRpYW5jZSggZ2VvbWV0cnkudmlld0RpciwgZ2VvbWV0cnkuY2xlYXJjb2F0Tm9ybWFsLCBtYXRlcmlhbC5jbGVhcmNvYXRSb3VnaG5lc3MsIG1heE1pcExldmVsICk7XG5cdCNlbmRpZlxuI2VuZGlmIixsaWdodHNfZnJhZ21lbnRfZW5kOiIjaWYgZGVmaW5lZCggUkVfSW5kaXJlY3REaWZmdXNlIClcblx0UkVfSW5kaXJlY3REaWZmdXNlKCBpcnJhZGlhbmNlLCBnZW9tZXRyeSwgbWF0ZXJpYWwsIHJlZmxlY3RlZExpZ2h0ICk7XG4jZW5kaWZcbiNpZiBkZWZpbmVkKCBSRV9JbmRpcmVjdFNwZWN1bGFyIClcblx0UkVfSW5kaXJlY3RTcGVjdWxhciggcmFkaWFuY2UsIGlibElycmFkaWFuY2UsIGNsZWFyY29hdFJhZGlhbmNlLCBnZW9tZXRyeSwgbWF0ZXJpYWwsIHJlZmxlY3RlZExpZ2h0ICk7XG4jZW5kaWYiLGxvZ2RlcHRoYnVmX2ZyYWdtZW50OiIjaWYgZGVmaW5lZCggVVNFX0xPR0RFUFRIQlVGICkgJiYgZGVmaW5lZCggVVNFX0xPR0RFUFRIQlVGX0VYVCApXG5cdGdsX0ZyYWdEZXB0aEVYVCA9IHZJc1BlcnNwZWN0aXZlID09IDAuMCA/IGdsX0ZyYWdDb29yZC56IDogbG9nMiggdkZyYWdEZXB0aCApICogbG9nRGVwdGhCdWZGQyAqIDAuNTtcbiNlbmRpZiIsbG9nZGVwdGhidWZfcGFyc19mcmFnbWVudDoiI2lmIGRlZmluZWQoIFVTRV9MT0dERVBUSEJVRiApICYmIGRlZmluZWQoIFVTRV9MT0dERVBUSEJVRl9FWFQgKVxuXHR1bmlmb3JtIGZsb2F0IGxvZ0RlcHRoQnVmRkM7XG5cdHZhcnlpbmcgZmxvYXQgdkZyYWdEZXB0aDtcblx0dmFyeWluZyBmbG9hdCB2SXNQZXJzcGVjdGl2ZTtcbiNlbmRpZiIsbG9nZGVwdGhidWZfcGFyc192ZXJ0ZXg6IiNpZmRlZiBVU0VfTE9HREVQVEhCVUZcblx0I2lmZGVmIFVTRV9MT0dERVBUSEJVRl9FWFRcblx0XHR2YXJ5aW5nIGZsb2F0IHZGcmFnRGVwdGg7XG5cdFx0dmFyeWluZyBmbG9hdCB2SXNQZXJzcGVjdGl2ZTtcblx0I2Vsc2Vcblx0XHR1bmlmb3JtIGZsb2F0IGxvZ0RlcHRoQnVmRkM7XG5cdCNlbmRpZlxuI2VuZGlmIixsb2dkZXB0aGJ1Zl92ZXJ0ZXg6IiNpZmRlZiBVU0VfTE9HREVQVEhCVUZcblx0I2lmZGVmIFVTRV9MT0dERVBUSEJVRl9FWFRcblx0XHR2RnJhZ0RlcHRoID0gMS4wICsgZ2xfUG9zaXRpb24udztcblx0XHR2SXNQZXJzcGVjdGl2ZSA9IGZsb2F0KCBpc1BlcnNwZWN0aXZlTWF0cml4KCBwcm9qZWN0aW9uTWF0cml4ICkgKTtcblx0I2Vsc2Vcblx0XHRpZiAoIGlzUGVyc3BlY3RpdmVNYXRyaXgoIHByb2plY3Rpb25NYXRyaXggKSApIHtcblx0XHRcdGdsX1Bvc2l0aW9uLnogPSBsb2cyKCBtYXgoIEVQU0lMT04sIGdsX1Bvc2l0aW9uLncgKyAxLjAgKSApICogbG9nRGVwdGhCdWZGQyAtIDEuMDtcblx0XHRcdGdsX1Bvc2l0aW9uLnogKj0gZ2xfUG9zaXRpb24udztcblx0XHR9XG5cdCNlbmRpZlxuI2VuZGlmIixtYXBfZnJhZ21lbnQ6IiNpZmRlZiBVU0VfTUFQXG5cdHZlYzQgdGV4ZWxDb2xvciA9IHRleHR1cmUyRCggbWFwLCB2VXYgKTtcblx0dGV4ZWxDb2xvciA9IG1hcFRleGVsVG9MaW5lYXIoIHRleGVsQ29sb3IgKTtcblx0ZGlmZnVzZUNvbG9yICo9IHRleGVsQ29sb3I7XG4jZW5kaWYiLG1hcF9wYXJzX2ZyYWdtZW50OiIjaWZkZWYgVVNFX01BUFxuXHR1bmlmb3JtIHNhbXBsZXIyRCBtYXA7XG4jZW5kaWYiLG1hcF9wYXJ0aWNsZV9mcmFnbWVudDoiI2lmIGRlZmluZWQoIFVTRV9NQVAgKSB8fCBkZWZpbmVkKCBVU0VfQUxQSEFNQVAgKVxuXHR2ZWMyIHV2ID0gKCB1dlRyYW5zZm9ybSAqIHZlYzMoIGdsX1BvaW50Q29vcmQueCwgMS4wIC0gZ2xfUG9pbnRDb29yZC55LCAxICkgKS54eTtcbiNlbmRpZlxuI2lmZGVmIFVTRV9NQVBcblx0dmVjNCBtYXBUZXhlbCA9IHRleHR1cmUyRCggbWFwLCB1diApO1xuXHRkaWZmdXNlQ29sb3IgKj0gbWFwVGV4ZWxUb0xpbmVhciggbWFwVGV4ZWwgKTtcbiNlbmRpZlxuI2lmZGVmIFVTRV9BTFBIQU1BUFxuXHRkaWZmdXNlQ29sb3IuYSAqPSB0ZXh0dXJlMkQoIGFscGhhTWFwLCB1diApLmc7XG4jZW5kaWYiLG1hcF9wYXJ0aWNsZV9wYXJzX2ZyYWdtZW50OiIjaWYgZGVmaW5lZCggVVNFX01BUCApIHx8IGRlZmluZWQoIFVTRV9BTFBIQU1BUCApXG5cdHVuaWZvcm0gbWF0MyB1dlRyYW5zZm9ybTtcbiNlbmRpZlxuI2lmZGVmIFVTRV9NQVBcblx0dW5pZm9ybSBzYW1wbGVyMkQgbWFwO1xuI2VuZGlmXG4jaWZkZWYgVVNFX0FMUEhBTUFQXG5cdHVuaWZvcm0gc2FtcGxlcjJEIGFscGhhTWFwO1xuI2VuZGlmIixtZXRhbG5lc3NtYXBfZnJhZ21lbnQ6ImZsb2F0IG1ldGFsbmVzc0ZhY3RvciA9IG1ldGFsbmVzcztcbiNpZmRlZiBVU0VfTUVUQUxORVNTTUFQXG5cdHZlYzQgdGV4ZWxNZXRhbG5lc3MgPSB0ZXh0dXJlMkQoIG1ldGFsbmVzc01hcCwgdlV2ICk7XG5cdG1ldGFsbmVzc0ZhY3RvciAqPSB0ZXhlbE1ldGFsbmVzcy5iO1xuI2VuZGlmIixtZXRhbG5lc3NtYXBfcGFyc19mcmFnbWVudDoiI2lmZGVmIFVTRV9NRVRBTE5FU1NNQVBcblx0dW5pZm9ybSBzYW1wbGVyMkQgbWV0YWxuZXNzTWFwO1xuI2VuZGlmIixtb3JwaG5vcm1hbF92ZXJ0ZXg6IiNpZmRlZiBVU0VfTU9SUEhOT1JNQUxTXG5cdG9iamVjdE5vcm1hbCAqPSBtb3JwaFRhcmdldEJhc2VJbmZsdWVuY2U7XG5cdG9iamVjdE5vcm1hbCArPSBtb3JwaE5vcm1hbDAgKiBtb3JwaFRhcmdldEluZmx1ZW5jZXNbIDAgXTtcblx0b2JqZWN0Tm9ybWFsICs9IG1vcnBoTm9ybWFsMSAqIG1vcnBoVGFyZ2V0SW5mbHVlbmNlc1sgMSBdO1xuXHRvYmplY3ROb3JtYWwgKz0gbW9ycGhOb3JtYWwyICogbW9ycGhUYXJnZXRJbmZsdWVuY2VzWyAyIF07XG5cdG9iamVjdE5vcm1hbCArPSBtb3JwaE5vcm1hbDMgKiBtb3JwaFRhcmdldEluZmx1ZW5jZXNbIDMgXTtcbiNlbmRpZiIsbW9ycGh0YXJnZXRfcGFyc192ZXJ0ZXg6IiNpZmRlZiBVU0VfTU9SUEhUQVJHRVRTXG5cdHVuaWZvcm0gZmxvYXQgbW9ycGhUYXJnZXRCYXNlSW5mbHVlbmNlO1xuXHQjaWZuZGVmIFVTRV9NT1JQSE5PUk1BTFNcblx0XHR1bmlmb3JtIGZsb2F0IG1vcnBoVGFyZ2V0SW5mbHVlbmNlc1sgOCBdO1xuXHQjZWxzZVxuXHRcdHVuaWZvcm0gZmxvYXQgbW9ycGhUYXJnZXRJbmZsdWVuY2VzWyA0IF07XG5cdCNlbmRpZlxuI2VuZGlmIixtb3JwaHRhcmdldF92ZXJ0ZXg6IiNpZmRlZiBVU0VfTU9SUEhUQVJHRVRTXG5cdHRyYW5zZm9ybWVkICo9IG1vcnBoVGFyZ2V0QmFzZUluZmx1ZW5jZTtcblx0dHJhbnNmb3JtZWQgKz0gbW9ycGhUYXJnZXQwICogbW9ycGhUYXJnZXRJbmZsdWVuY2VzWyAwIF07XG5cdHRyYW5zZm9ybWVkICs9IG1vcnBoVGFyZ2V0MSAqIG1vcnBoVGFyZ2V0SW5mbHVlbmNlc1sgMSBdO1xuXHR0cmFuc2Zvcm1lZCArPSBtb3JwaFRhcmdldDIgKiBtb3JwaFRhcmdldEluZmx1ZW5jZXNbIDIgXTtcblx0dHJhbnNmb3JtZWQgKz0gbW9ycGhUYXJnZXQzICogbW9ycGhUYXJnZXRJbmZsdWVuY2VzWyAzIF07XG5cdCNpZm5kZWYgVVNFX01PUlBITk9STUFMU1xuXHRcdHRyYW5zZm9ybWVkICs9IG1vcnBoVGFyZ2V0NCAqIG1vcnBoVGFyZ2V0SW5mbHVlbmNlc1sgNCBdO1xuXHRcdHRyYW5zZm9ybWVkICs9IG1vcnBoVGFyZ2V0NSAqIG1vcnBoVGFyZ2V0SW5mbHVlbmNlc1sgNSBdO1xuXHRcdHRyYW5zZm9ybWVkICs9IG1vcnBoVGFyZ2V0NiAqIG1vcnBoVGFyZ2V0SW5mbHVlbmNlc1sgNiBdO1xuXHRcdHRyYW5zZm9ybWVkICs9IG1vcnBoVGFyZ2V0NyAqIG1vcnBoVGFyZ2V0SW5mbHVlbmNlc1sgNyBdO1xuXHQjZW5kaWZcbiNlbmRpZiIsbm9ybWFsX2ZyYWdtZW50X2JlZ2luOiJmbG9hdCBmYWNlRGlyZWN0aW9uID0gZ2xfRnJvbnRGYWNpbmcgPyAxLjAgOiAtIDEuMDtcbiNpZmRlZiBGTEFUX1NIQURFRFxuXHR2ZWMzIGZkeCA9IHZlYzMoIGRGZHgoIHZWaWV3UG9zaXRpb24ueCApLCBkRmR4KCB2Vmlld1Bvc2l0aW9uLnkgKSwgZEZkeCggdlZpZXdQb3NpdGlvbi56ICkgKTtcblx0dmVjMyBmZHkgPSB2ZWMzKCBkRmR5KCB2Vmlld1Bvc2l0aW9uLnggKSwgZEZkeSggdlZpZXdQb3NpdGlvbi55ICksIGRGZHkoIHZWaWV3UG9zaXRpb24ueiApICk7XG5cdHZlYzMgbm9ybWFsID0gbm9ybWFsaXplKCBjcm9zcyggZmR4LCBmZHkgKSApO1xuI2Vsc2Vcblx0dmVjMyBub3JtYWwgPSBub3JtYWxpemUoIHZOb3JtYWwgKTtcblx0I2lmZGVmIERPVUJMRV9TSURFRFxuXHRcdG5vcm1hbCA9IG5vcm1hbCAqIGZhY2VEaXJlY3Rpb247XG5cdCNlbmRpZlxuXHQjaWZkZWYgVVNFX1RBTkdFTlRcblx0XHR2ZWMzIHRhbmdlbnQgPSBub3JtYWxpemUoIHZUYW5nZW50ICk7XG5cdFx0dmVjMyBiaXRhbmdlbnQgPSBub3JtYWxpemUoIHZCaXRhbmdlbnQgKTtcblx0XHQjaWZkZWYgRE9VQkxFX1NJREVEXG5cdFx0XHR0YW5nZW50ID0gdGFuZ2VudCAqIGZhY2VEaXJlY3Rpb247XG5cdFx0XHRiaXRhbmdlbnQgPSBiaXRhbmdlbnQgKiBmYWNlRGlyZWN0aW9uO1xuXHRcdCNlbmRpZlxuXHRcdCNpZiBkZWZpbmVkKCBUQU5HRU5UU1BBQ0VfTk9STUFMTUFQICkgfHwgZGVmaW5lZCggVVNFX0NMRUFSQ09BVF9OT1JNQUxNQVAgKVxuXHRcdFx0bWF0MyB2VEJOID0gbWF0MyggdGFuZ2VudCwgYml0YW5nZW50LCBub3JtYWwgKTtcblx0XHQjZW5kaWZcblx0I2VuZGlmXG4jZW5kaWZcbnZlYzMgZ2VvbWV0cnlOb3JtYWwgPSBub3JtYWw7Iixub3JtYWxfZnJhZ21lbnRfbWFwczoiI2lmZGVmIE9CSkVDVFNQQUNFX05PUk1BTE1BUFxuXHRub3JtYWwgPSB0ZXh0dXJlMkQoIG5vcm1hbE1hcCwgdlV2ICkueHl6ICogMi4wIC0gMS4wO1xuXHQjaWZkZWYgRkxJUF9TSURFRFxuXHRcdG5vcm1hbCA9IC0gbm9ybWFsO1xuXHQjZW5kaWZcblx0I2lmZGVmIERPVUJMRV9TSURFRFxuXHRcdG5vcm1hbCA9IG5vcm1hbCAqIGZhY2VEaXJlY3Rpb247XG5cdCNlbmRpZlxuXHRub3JtYWwgPSBub3JtYWxpemUoIG5vcm1hbE1hdHJpeCAqIG5vcm1hbCApO1xuI2VsaWYgZGVmaW5lZCggVEFOR0VOVFNQQUNFX05PUk1BTE1BUCApXG5cdHZlYzMgbWFwTiA9IHRleHR1cmUyRCggbm9ybWFsTWFwLCB2VXYgKS54eXogKiAyLjAgLSAxLjA7XG5cdG1hcE4ueHkgKj0gbm9ybWFsU2NhbGU7XG5cdCNpZmRlZiBVU0VfVEFOR0VOVFxuXHRcdG5vcm1hbCA9IG5vcm1hbGl6ZSggdlRCTiAqIG1hcE4gKTtcblx0I2Vsc2Vcblx0XHRub3JtYWwgPSBwZXJ0dXJiTm9ybWFsMkFyYiggLXZWaWV3UG9zaXRpb24sIG5vcm1hbCwgbWFwTiwgZmFjZURpcmVjdGlvbiApO1xuXHQjZW5kaWZcbiNlbGlmIGRlZmluZWQoIFVTRV9CVU1QTUFQIClcblx0bm9ybWFsID0gcGVydHVyYk5vcm1hbEFyYiggLXZWaWV3UG9zaXRpb24sIG5vcm1hbCwgZEhkeHlfZndkKCksIGZhY2VEaXJlY3Rpb24gKTtcbiNlbmRpZiIsbm9ybWFsbWFwX3BhcnNfZnJhZ21lbnQ6IiNpZmRlZiBVU0VfTk9STUFMTUFQXG5cdHVuaWZvcm0gc2FtcGxlcjJEIG5vcm1hbE1hcDtcblx0dW5pZm9ybSB2ZWMyIG5vcm1hbFNjYWxlO1xuI2VuZGlmXG4jaWZkZWYgT0JKRUNUU1BBQ0VfTk9STUFMTUFQXG5cdHVuaWZvcm0gbWF0MyBub3JtYWxNYXRyaXg7XG4jZW5kaWZcbiNpZiAhIGRlZmluZWQgKCBVU0VfVEFOR0VOVCApICYmICggZGVmaW5lZCAoIFRBTkdFTlRTUEFDRV9OT1JNQUxNQVAgKSB8fCBkZWZpbmVkICggVVNFX0NMRUFSQ09BVF9OT1JNQUxNQVAgKSApXG5cdHZlYzMgcGVydHVyYk5vcm1hbDJBcmIoIHZlYzMgZXllX3BvcywgdmVjMyBzdXJmX25vcm0sIHZlYzMgbWFwTiwgZmxvYXQgZmFjZURpcmVjdGlvbiApIHtcblx0XHR2ZWMzIHEwID0gdmVjMyggZEZkeCggZXllX3Bvcy54ICksIGRGZHgoIGV5ZV9wb3MueSApLCBkRmR4KCBleWVfcG9zLnogKSApO1xuXHRcdHZlYzMgcTEgPSB2ZWMzKCBkRmR5KCBleWVfcG9zLnggKSwgZEZkeSggZXllX3Bvcy55ICksIGRGZHkoIGV5ZV9wb3MueiApICk7XG5cdFx0dmVjMiBzdDAgPSBkRmR4KCB2VXYuc3QgKTtcblx0XHR2ZWMyIHN0MSA9IGRGZHkoIHZVdi5zdCApO1xuXHRcdHZlYzMgTiA9IHN1cmZfbm9ybTtcblx0XHR2ZWMzIHExcGVycCA9IGNyb3NzKCBxMSwgTiApO1xuXHRcdHZlYzMgcTBwZXJwID0gY3Jvc3MoIE4sIHEwICk7XG5cdFx0dmVjMyBUID0gcTFwZXJwICogc3QwLnggKyBxMHBlcnAgKiBzdDEueDtcblx0XHR2ZWMzIEIgPSBxMXBlcnAgKiBzdDAueSArIHEwcGVycCAqIHN0MS55O1xuXHRcdGZsb2F0IGRldCA9IG1heCggZG90KCBULCBUICksIGRvdCggQiwgQiApICk7XG5cdFx0ZmxvYXQgc2NhbGUgPSAoIGRldCA9PSAwLjAgKSA/IDAuMCA6IGZhY2VEaXJlY3Rpb24gKiBpbnZlcnNlc3FydCggZGV0ICk7XG5cdFx0cmV0dXJuIG5vcm1hbGl6ZSggVCAqICggbWFwTi54ICogc2NhbGUgKSArIEIgKiAoIG1hcE4ueSAqIHNjYWxlICkgKyBOICogbWFwTi56ICk7XG5cdH1cbiNlbmRpZiIsY2xlYXJjb2F0X25vcm1hbF9mcmFnbWVudF9iZWdpbjoiI2lmZGVmIENMRUFSQ09BVFxuXHR2ZWMzIGNsZWFyY29hdE5vcm1hbCA9IGdlb21ldHJ5Tm9ybWFsO1xuI2VuZGlmIixjbGVhcmNvYXRfbm9ybWFsX2ZyYWdtZW50X21hcHM6IiNpZmRlZiBVU0VfQ0xFQVJDT0FUX05PUk1BTE1BUFxuXHR2ZWMzIGNsZWFyY29hdE1hcE4gPSB0ZXh0dXJlMkQoIGNsZWFyY29hdE5vcm1hbE1hcCwgdlV2ICkueHl6ICogMi4wIC0gMS4wO1xuXHRjbGVhcmNvYXRNYXBOLnh5ICo9IGNsZWFyY29hdE5vcm1hbFNjYWxlO1xuXHQjaWZkZWYgVVNFX1RBTkdFTlRcblx0XHRjbGVhcmNvYXROb3JtYWwgPSBub3JtYWxpemUoIHZUQk4gKiBjbGVhcmNvYXRNYXBOICk7XG5cdCNlbHNlXG5cdFx0Y2xlYXJjb2F0Tm9ybWFsID0gcGVydHVyYk5vcm1hbDJBcmIoIC0gdlZpZXdQb3NpdGlvbiwgY2xlYXJjb2F0Tm9ybWFsLCBjbGVhcmNvYXRNYXBOLCBmYWNlRGlyZWN0aW9uICk7XG5cdCNlbmRpZlxuI2VuZGlmIixjbGVhcmNvYXRfcGFyc19mcmFnbWVudDoiI2lmZGVmIFVTRV9DTEVBUkNPQVRNQVBcblx0dW5pZm9ybSBzYW1wbGVyMkQgY2xlYXJjb2F0TWFwO1xuI2VuZGlmXG4jaWZkZWYgVVNFX0NMRUFSQ09BVF9ST1VHSE5FU1NNQVBcblx0dW5pZm9ybSBzYW1wbGVyMkQgY2xlYXJjb2F0Um91Z2huZXNzTWFwO1xuI2VuZGlmXG4jaWZkZWYgVVNFX0NMRUFSQ09BVF9OT1JNQUxNQVBcblx0dW5pZm9ybSBzYW1wbGVyMkQgY2xlYXJjb2F0Tm9ybWFsTWFwO1xuXHR1bmlmb3JtIHZlYzIgY2xlYXJjb2F0Tm9ybWFsU2NhbGU7XG4jZW5kaWYiLHBhY2tpbmc6InZlYzMgcGFja05vcm1hbFRvUkdCKCBjb25zdCBpbiB2ZWMzIG5vcm1hbCApIHtcblx0cmV0dXJuIG5vcm1hbGl6ZSggbm9ybWFsICkgKiAwLjUgKyAwLjU7XG59XG52ZWMzIHVucGFja1JHQlRvTm9ybWFsKCBjb25zdCBpbiB2ZWMzIHJnYiApIHtcblx0cmV0dXJuIDIuMCAqIHJnYi54eXogLSAxLjA7XG59XG5jb25zdCBmbG9hdCBQYWNrVXBzY2FsZSA9IDI1Ni4gLyAyNTUuO2NvbnN0IGZsb2F0IFVucGFja0Rvd25zY2FsZSA9IDI1NS4gLyAyNTYuO1xuY29uc3QgdmVjMyBQYWNrRmFjdG9ycyA9IHZlYzMoIDI1Ni4gKiAyNTYuICogMjU2LiwgMjU2LiAqIDI1Ni4sIDI1Ni4gKTtcbmNvbnN0IHZlYzQgVW5wYWNrRmFjdG9ycyA9IFVucGFja0Rvd25zY2FsZSAvIHZlYzQoIFBhY2tGYWN0b3JzLCAxLiApO1xuY29uc3QgZmxvYXQgU2hpZnRSaWdodDggPSAxLiAvIDI1Ni47XG52ZWM0IHBhY2tEZXB0aFRvUkdCQSggY29uc3QgaW4gZmxvYXQgdiApIHtcblx0dmVjNCByID0gdmVjNCggZnJhY3QoIHYgKiBQYWNrRmFjdG9ycyApLCB2ICk7XG5cdHIueXp3IC09IHIueHl6ICogU2hpZnRSaWdodDg7XHRyZXR1cm4gciAqIFBhY2tVcHNjYWxlO1xufVxuZmxvYXQgdW5wYWNrUkdCQVRvRGVwdGgoIGNvbnN0IGluIHZlYzQgdiApIHtcblx0cmV0dXJuIGRvdCggdiwgVW5wYWNrRmFjdG9ycyApO1xufVxudmVjNCBwYWNrMkhhbGZUb1JHQkEoIHZlYzIgdiApIHtcblx0dmVjNCByID0gdmVjNCggdi54LCBmcmFjdCggdi54ICogMjU1LjAgKSwgdi55LCBmcmFjdCggdi55ICogMjU1LjAgKSk7XG5cdHJldHVybiB2ZWM0KCByLnggLSByLnkgLyAyNTUuMCwgci55LCByLnogLSByLncgLyAyNTUuMCwgci53KTtcbn1cbnZlYzIgdW5wYWNrUkdCQVRvMkhhbGYoIHZlYzQgdiApIHtcblx0cmV0dXJuIHZlYzIoIHYueCArICggdi55IC8gMjU1LjAgKSwgdi56ICsgKCB2LncgLyAyNTUuMCApICk7XG59XG5mbG9hdCB2aWV3WlRvT3J0aG9ncmFwaGljRGVwdGgoIGNvbnN0IGluIGZsb2F0IHZpZXdaLCBjb25zdCBpbiBmbG9hdCBuZWFyLCBjb25zdCBpbiBmbG9hdCBmYXIgKSB7XG5cdHJldHVybiAoIHZpZXdaICsgbmVhciApIC8gKCBuZWFyIC0gZmFyICk7XG59XG5mbG9hdCBvcnRob2dyYXBoaWNEZXB0aFRvVmlld1ooIGNvbnN0IGluIGZsb2F0IGxpbmVhckNsaXBaLCBjb25zdCBpbiBmbG9hdCBuZWFyLCBjb25zdCBpbiBmbG9hdCBmYXIgKSB7XG5cdHJldHVybiBsaW5lYXJDbGlwWiAqICggbmVhciAtIGZhciApIC0gbmVhcjtcbn1cbmZsb2F0IHZpZXdaVG9QZXJzcGVjdGl2ZURlcHRoKCBjb25zdCBpbiBmbG9hdCB2aWV3WiwgY29uc3QgaW4gZmxvYXQgbmVhciwgY29uc3QgaW4gZmxvYXQgZmFyICkge1xuXHRyZXR1cm4gKCggbmVhciArIHZpZXdaICkgKiBmYXIgKSAvICgoIGZhciAtIG5lYXIgKSAqIHZpZXdaICk7XG59XG5mbG9hdCBwZXJzcGVjdGl2ZURlcHRoVG9WaWV3WiggY29uc3QgaW4gZmxvYXQgaW52Q2xpcFosIGNvbnN0IGluIGZsb2F0IG5lYXIsIGNvbnN0IGluIGZsb2F0IGZhciApIHtcblx0cmV0dXJuICggbmVhciAqIGZhciApIC8gKCAoIGZhciAtIG5lYXIgKSAqIGludkNsaXBaIC0gZmFyICk7XG59IixwcmVtdWx0aXBsaWVkX2FscGhhX2ZyYWdtZW50OiIjaWZkZWYgUFJFTVVMVElQTElFRF9BTFBIQVxuXHRnbF9GcmFnQ29sb3IucmdiICo9IGdsX0ZyYWdDb2xvci5hO1xuI2VuZGlmIixwcm9qZWN0X3ZlcnRleDoidmVjNCBtdlBvc2l0aW9uID0gdmVjNCggdHJhbnNmb3JtZWQsIDEuMCApO1xuI2lmZGVmIFVTRV9JTlNUQU5DSU5HXG5cdG12UG9zaXRpb24gPSBpbnN0YW5jZU1hdHJpeCAqIG12UG9zaXRpb247XG4jZW5kaWZcbm12UG9zaXRpb24gPSBtb2RlbFZpZXdNYXRyaXggKiBtdlBvc2l0aW9uO1xuZ2xfUG9zaXRpb24gPSBwcm9qZWN0aW9uTWF0cml4ICogbXZQb3NpdGlvbjsiLGRpdGhlcmluZ19mcmFnbWVudDoiI2lmZGVmIERJVEhFUklOR1xuXHRnbF9GcmFnQ29sb3IucmdiID0gZGl0aGVyaW5nKCBnbF9GcmFnQ29sb3IucmdiICk7XG4jZW5kaWYiLGRpdGhlcmluZ19wYXJzX2ZyYWdtZW50OiIjaWZkZWYgRElUSEVSSU5HXG5cdHZlYzMgZGl0aGVyaW5nKCB2ZWMzIGNvbG9yICkge1xuXHRcdGZsb2F0IGdyaWRfcG9zaXRpb24gPSByYW5kKCBnbF9GcmFnQ29vcmQueHkgKTtcblx0XHR2ZWMzIGRpdGhlcl9zaGlmdF9SR0IgPSB2ZWMzKCAwLjI1IC8gMjU1LjAsIC0wLjI1IC8gMjU1LjAsIDAuMjUgLyAyNTUuMCApO1xuXHRcdGRpdGhlcl9zaGlmdF9SR0IgPSBtaXgoIDIuMCAqIGRpdGhlcl9zaGlmdF9SR0IsIC0yLjAgKiBkaXRoZXJfc2hpZnRfUkdCLCBncmlkX3Bvc2l0aW9uICk7XG5cdFx0cmV0dXJuIGNvbG9yICsgZGl0aGVyX3NoaWZ0X1JHQjtcblx0fVxuI2VuZGlmIixyb3VnaG5lc3NtYXBfZnJhZ21lbnQ6ImZsb2F0IHJvdWdobmVzc0ZhY3RvciA9IHJvdWdobmVzcztcbiNpZmRlZiBVU0VfUk9VR0hORVNTTUFQXG5cdHZlYzQgdGV4ZWxSb3VnaG5lc3MgPSB0ZXh0dXJlMkQoIHJvdWdobmVzc01hcCwgdlV2ICk7XG5cdHJvdWdobmVzc0ZhY3RvciAqPSB0ZXhlbFJvdWdobmVzcy5nO1xuI2VuZGlmIixyb3VnaG5lc3NtYXBfcGFyc19mcmFnbWVudDoiI2lmZGVmIFVTRV9ST1VHSE5FU1NNQVBcblx0dW5pZm9ybSBzYW1wbGVyMkQgcm91Z2huZXNzTWFwO1xuI2VuZGlmIixzaGFkb3dtYXBfcGFyc19mcmFnbWVudDoiI2lmZGVmIFVTRV9TSEFET1dNQVBcblx0I2lmIE5VTV9ESVJfTElHSFRfU0hBRE9XUyA+IDBcblx0XHR1bmlmb3JtIHNhbXBsZXIyRCBkaXJlY3Rpb25hbFNoYWRvd01hcFsgTlVNX0RJUl9MSUdIVF9TSEFET1dTIF07XG5cdFx0dmFyeWluZyB2ZWM0IHZEaXJlY3Rpb25hbFNoYWRvd0Nvb3JkWyBOVU1fRElSX0xJR0hUX1NIQURPV1MgXTtcblx0XHRzdHJ1Y3QgRGlyZWN0aW9uYWxMaWdodFNoYWRvdyB7XG5cdFx0XHRmbG9hdCBzaGFkb3dCaWFzO1xuXHRcdFx0ZmxvYXQgc2hhZG93Tm9ybWFsQmlhcztcblx0XHRcdGZsb2F0IHNoYWRvd1JhZGl1cztcblx0XHRcdHZlYzIgc2hhZG93TWFwU2l6ZTtcblx0XHR9O1xuXHRcdHVuaWZvcm0gRGlyZWN0aW9uYWxMaWdodFNoYWRvdyBkaXJlY3Rpb25hbExpZ2h0U2hhZG93c1sgTlVNX0RJUl9MSUdIVF9TSEFET1dTIF07XG5cdCNlbmRpZlxuXHQjaWYgTlVNX1NQT1RfTElHSFRfU0hBRE9XUyA+IDBcblx0XHR1bmlmb3JtIHNhbXBsZXIyRCBzcG90U2hhZG93TWFwWyBOVU1fU1BPVF9MSUdIVF9TSEFET1dTIF07XG5cdFx0dmFyeWluZyB2ZWM0IHZTcG90U2hhZG93Q29vcmRbIE5VTV9TUE9UX0xJR0hUX1NIQURPV1MgXTtcblx0XHRzdHJ1Y3QgU3BvdExpZ2h0U2hhZG93IHtcblx0XHRcdGZsb2F0IHNoYWRvd0JpYXM7XG5cdFx0XHRmbG9hdCBzaGFkb3dOb3JtYWxCaWFzO1xuXHRcdFx0ZmxvYXQgc2hhZG93UmFkaXVzO1xuXHRcdFx0dmVjMiBzaGFkb3dNYXBTaXplO1xuXHRcdH07XG5cdFx0dW5pZm9ybSBTcG90TGlnaHRTaGFkb3cgc3BvdExpZ2h0U2hhZG93c1sgTlVNX1NQT1RfTElHSFRfU0hBRE9XUyBdO1xuXHQjZW5kaWZcblx0I2lmIE5VTV9QT0lOVF9MSUdIVF9TSEFET1dTID4gMFxuXHRcdHVuaWZvcm0gc2FtcGxlcjJEIHBvaW50U2hhZG93TWFwWyBOVU1fUE9JTlRfTElHSFRfU0hBRE9XUyBdO1xuXHRcdHZhcnlpbmcgdmVjNCB2UG9pbnRTaGFkb3dDb29yZFsgTlVNX1BPSU5UX0xJR0hUX1NIQURPV1MgXTtcblx0XHRzdHJ1Y3QgUG9pbnRMaWdodFNoYWRvdyB7XG5cdFx0XHRmbG9hdCBzaGFkb3dCaWFzO1xuXHRcdFx0ZmxvYXQgc2hhZG93Tm9ybWFsQmlhcztcblx0XHRcdGZsb2F0IHNoYWRvd1JhZGl1cztcblx0XHRcdHZlYzIgc2hhZG93TWFwU2l6ZTtcblx0XHRcdGZsb2F0IHNoYWRvd0NhbWVyYU5lYXI7XG5cdFx0XHRmbG9hdCBzaGFkb3dDYW1lcmFGYXI7XG5cdFx0fTtcblx0XHR1bmlmb3JtIFBvaW50TGlnaHRTaGFkb3cgcG9pbnRMaWdodFNoYWRvd3NbIE5VTV9QT0lOVF9MSUdIVF9TSEFET1dTIF07XG5cdCNlbmRpZlxuXHRmbG9hdCB0ZXh0dXJlMkRDb21wYXJlKCBzYW1wbGVyMkQgZGVwdGhzLCB2ZWMyIHV2LCBmbG9hdCBjb21wYXJlICkge1xuXHRcdHJldHVybiBzdGVwKCBjb21wYXJlLCB1bnBhY2tSR0JBVG9EZXB0aCggdGV4dHVyZTJEKCBkZXB0aHMsIHV2ICkgKSApO1xuXHR9XG5cdHZlYzIgdGV4dHVyZTJERGlzdHJpYnV0aW9uKCBzYW1wbGVyMkQgc2hhZG93LCB2ZWMyIHV2ICkge1xuXHRcdHJldHVybiB1bnBhY2tSR0JBVG8ySGFsZiggdGV4dHVyZTJEKCBzaGFkb3csIHV2ICkgKTtcblx0fVxuXHRmbG9hdCBWU01TaGFkb3cgKHNhbXBsZXIyRCBzaGFkb3csIHZlYzIgdXYsIGZsb2F0IGNvbXBhcmUgKXtcblx0XHRmbG9hdCBvY2NsdXNpb24gPSAxLjA7XG5cdFx0dmVjMiBkaXN0cmlidXRpb24gPSB0ZXh0dXJlMkREaXN0cmlidXRpb24oIHNoYWRvdywgdXYgKTtcblx0XHRmbG9hdCBoYXJkX3NoYWRvdyA9IHN0ZXAoIGNvbXBhcmUgLCBkaXN0cmlidXRpb24ueCApO1xuXHRcdGlmIChoYXJkX3NoYWRvdyAhPSAxLjAgKSB7XG5cdFx0XHRmbG9hdCBkaXN0YW5jZSA9IGNvbXBhcmUgLSBkaXN0cmlidXRpb24ueCA7XG5cdFx0XHRmbG9hdCB2YXJpYW5jZSA9IG1heCggMC4wMDAwMCwgZGlzdHJpYnV0aW9uLnkgKiBkaXN0cmlidXRpb24ueSApO1xuXHRcdFx0ZmxvYXQgc29mdG5lc3NfcHJvYmFiaWxpdHkgPSB2YXJpYW5jZSAvICh2YXJpYW5jZSArIGRpc3RhbmNlICogZGlzdGFuY2UgKTtcdFx0XHRzb2Z0bmVzc19wcm9iYWJpbGl0eSA9IGNsYW1wKCAoIHNvZnRuZXNzX3Byb2JhYmlsaXR5IC0gMC4zICkgLyAoIDAuOTUgLSAwLjMgKSwgMC4wLCAxLjAgKTtcdFx0XHRvY2NsdXNpb24gPSBjbGFtcCggbWF4KCBoYXJkX3NoYWRvdywgc29mdG5lc3NfcHJvYmFiaWxpdHkgKSwgMC4wLCAxLjAgKTtcblx0XHR9XG5cdFx0cmV0dXJuIG9jY2x1c2lvbjtcblx0fVxuXHRmbG9hdCBnZXRTaGFkb3coIHNhbXBsZXIyRCBzaGFkb3dNYXAsIHZlYzIgc2hhZG93TWFwU2l6ZSwgZmxvYXQgc2hhZG93QmlhcywgZmxvYXQgc2hhZG93UmFkaXVzLCB2ZWM0IHNoYWRvd0Nvb3JkICkge1xuXHRcdGZsb2F0IHNoYWRvdyA9IDEuMDtcblx0XHRzaGFkb3dDb29yZC54eXogLz0gc2hhZG93Q29vcmQudztcblx0XHRzaGFkb3dDb29yZC56ICs9IHNoYWRvd0JpYXM7XG5cdFx0YnZlYzQgaW5GcnVzdHVtVmVjID0gYnZlYzQgKCBzaGFkb3dDb29yZC54ID49IDAuMCwgc2hhZG93Q29vcmQueCA8PSAxLjAsIHNoYWRvd0Nvb3JkLnkgPj0gMC4wLCBzaGFkb3dDb29yZC55IDw9IDEuMCApO1xuXHRcdGJvb2wgaW5GcnVzdHVtID0gYWxsKCBpbkZydXN0dW1WZWMgKTtcblx0XHRidmVjMiBmcnVzdHVtVGVzdFZlYyA9IGJ2ZWMyKCBpbkZydXN0dW0sIHNoYWRvd0Nvb3JkLnogPD0gMS4wICk7XG5cdFx0Ym9vbCBmcnVzdHVtVGVzdCA9IGFsbCggZnJ1c3R1bVRlc3RWZWMgKTtcblx0XHRpZiAoIGZydXN0dW1UZXN0ICkge1xuXHRcdCNpZiBkZWZpbmVkKCBTSEFET1dNQVBfVFlQRV9QQ0YgKVxuXHRcdFx0dmVjMiB0ZXhlbFNpemUgPSB2ZWMyKCAxLjAgKSAvIHNoYWRvd01hcFNpemU7XG5cdFx0XHRmbG9hdCBkeDAgPSAtIHRleGVsU2l6ZS54ICogc2hhZG93UmFkaXVzO1xuXHRcdFx0ZmxvYXQgZHkwID0gLSB0ZXhlbFNpemUueSAqIHNoYWRvd1JhZGl1cztcblx0XHRcdGZsb2F0IGR4MSA9ICsgdGV4ZWxTaXplLnggKiBzaGFkb3dSYWRpdXM7XG5cdFx0XHRmbG9hdCBkeTEgPSArIHRleGVsU2l6ZS55ICogc2hhZG93UmFkaXVzO1xuXHRcdFx0ZmxvYXQgZHgyID0gZHgwIC8gMi4wO1xuXHRcdFx0ZmxvYXQgZHkyID0gZHkwIC8gMi4wO1xuXHRcdFx0ZmxvYXQgZHgzID0gZHgxIC8gMi4wO1xuXHRcdFx0ZmxvYXQgZHkzID0gZHkxIC8gMi4wO1xuXHRcdFx0c2hhZG93ID0gKFxuXHRcdFx0XHR0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHNoYWRvd0Nvb3JkLnh5ICsgdmVjMiggZHgwLCBkeTAgKSwgc2hhZG93Q29vcmQueiApICtcblx0XHRcdFx0dGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBzaGFkb3dDb29yZC54eSArIHZlYzIoIDAuMCwgZHkwICksIHNoYWRvd0Nvb3JkLnogKSArXG5cdFx0XHRcdHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgc2hhZG93Q29vcmQueHkgKyB2ZWMyKCBkeDEsIGR5MCApLCBzaGFkb3dDb29yZC56ICkgK1xuXHRcdFx0XHR0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHNoYWRvd0Nvb3JkLnh5ICsgdmVjMiggZHgyLCBkeTIgKSwgc2hhZG93Q29vcmQueiApICtcblx0XHRcdFx0dGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBzaGFkb3dDb29yZC54eSArIHZlYzIoIDAuMCwgZHkyICksIHNoYWRvd0Nvb3JkLnogKSArXG5cdFx0XHRcdHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgc2hhZG93Q29vcmQueHkgKyB2ZWMyKCBkeDMsIGR5MiApLCBzaGFkb3dDb29yZC56ICkgK1xuXHRcdFx0XHR0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHNoYWRvd0Nvb3JkLnh5ICsgdmVjMiggZHgwLCAwLjAgKSwgc2hhZG93Q29vcmQueiApICtcblx0XHRcdFx0dGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBzaGFkb3dDb29yZC54eSArIHZlYzIoIGR4MiwgMC4wICksIHNoYWRvd0Nvb3JkLnogKSArXG5cdFx0XHRcdHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgc2hhZG93Q29vcmQueHksIHNoYWRvd0Nvb3JkLnogKSArXG5cdFx0XHRcdHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgc2hhZG93Q29vcmQueHkgKyB2ZWMyKCBkeDMsIDAuMCApLCBzaGFkb3dDb29yZC56ICkgK1xuXHRcdFx0XHR0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHNoYWRvd0Nvb3JkLnh5ICsgdmVjMiggZHgxLCAwLjAgKSwgc2hhZG93Q29vcmQueiApICtcblx0XHRcdFx0dGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBzaGFkb3dDb29yZC54eSArIHZlYzIoIGR4MiwgZHkzICksIHNoYWRvd0Nvb3JkLnogKSArXG5cdFx0XHRcdHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgc2hhZG93Q29vcmQueHkgKyB2ZWMyKCAwLjAsIGR5MyApLCBzaGFkb3dDb29yZC56ICkgK1xuXHRcdFx0XHR0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHNoYWRvd0Nvb3JkLnh5ICsgdmVjMiggZHgzLCBkeTMgKSwgc2hhZG93Q29vcmQueiApICtcblx0XHRcdFx0dGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBzaGFkb3dDb29yZC54eSArIHZlYzIoIGR4MCwgZHkxICksIHNoYWRvd0Nvb3JkLnogKSArXG5cdFx0XHRcdHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgc2hhZG93Q29vcmQueHkgKyB2ZWMyKCAwLjAsIGR5MSApLCBzaGFkb3dDb29yZC56ICkgK1xuXHRcdFx0XHR0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHNoYWRvd0Nvb3JkLnh5ICsgdmVjMiggZHgxLCBkeTEgKSwgc2hhZG93Q29vcmQueiApXG5cdFx0XHQpICogKCAxLjAgLyAxNy4wICk7XG5cdFx0I2VsaWYgZGVmaW5lZCggU0hBRE9XTUFQX1RZUEVfUENGX1NPRlQgKVxuXHRcdFx0dmVjMiB0ZXhlbFNpemUgPSB2ZWMyKCAxLjAgKSAvIHNoYWRvd01hcFNpemU7XG5cdFx0XHRmbG9hdCBkeCA9IHRleGVsU2l6ZS54O1xuXHRcdFx0ZmxvYXQgZHkgPSB0ZXhlbFNpemUueTtcblx0XHRcdHZlYzIgdXYgPSBzaGFkb3dDb29yZC54eTtcblx0XHRcdHZlYzIgZiA9IGZyYWN0KCB1diAqIHNoYWRvd01hcFNpemUgKyAwLjUgKTtcblx0XHRcdHV2IC09IGYgKiB0ZXhlbFNpemU7XG5cdFx0XHRzaGFkb3cgPSAoXG5cdFx0XHRcdHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgdXYsIHNoYWRvd0Nvb3JkLnogKSArXG5cdFx0XHRcdHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgdXYgKyB2ZWMyKCBkeCwgMC4wICksIHNoYWRvd0Nvb3JkLnogKSArXG5cdFx0XHRcdHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgdXYgKyB2ZWMyKCAwLjAsIGR5ICksIHNoYWRvd0Nvb3JkLnogKSArXG5cdFx0XHRcdHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgdXYgKyB0ZXhlbFNpemUsIHNoYWRvd0Nvb3JkLnogKSArXG5cdFx0XHRcdG1peCggdGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCB1diArIHZlYzIoIC1keCwgMC4wICksIHNoYWRvd0Nvb3JkLnogKSwgXG5cdFx0XHRcdFx0IHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgdXYgKyB2ZWMyKCAyLjAgKiBkeCwgMC4wICksIHNoYWRvd0Nvb3JkLnogKSxcblx0XHRcdFx0XHQgZi54ICkgK1xuXHRcdFx0XHRtaXgoIHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgdXYgKyB2ZWMyKCAtZHgsIGR5ICksIHNoYWRvd0Nvb3JkLnogKSwgXG5cdFx0XHRcdFx0IHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgdXYgKyB2ZWMyKCAyLjAgKiBkeCwgZHkgKSwgc2hhZG93Q29vcmQueiApLFxuXHRcdFx0XHRcdCBmLnggKSArXG5cdFx0XHRcdG1peCggdGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCB1diArIHZlYzIoIDAuMCwgLWR5ICksIHNoYWRvd0Nvb3JkLnogKSwgXG5cdFx0XHRcdFx0IHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgdXYgKyB2ZWMyKCAwLjAsIDIuMCAqIGR5ICksIHNoYWRvd0Nvb3JkLnogKSxcblx0XHRcdFx0XHQgZi55ICkgK1xuXHRcdFx0XHRtaXgoIHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgdXYgKyB2ZWMyKCBkeCwgLWR5ICksIHNoYWRvd0Nvb3JkLnogKSwgXG5cdFx0XHRcdFx0IHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgdXYgKyB2ZWMyKCBkeCwgMi4wICogZHkgKSwgc2hhZG93Q29vcmQueiApLFxuXHRcdFx0XHRcdCBmLnkgKSArXG5cdFx0XHRcdG1peCggbWl4KCB0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHV2ICsgdmVjMiggLWR4LCAtZHkgKSwgc2hhZG93Q29vcmQueiApLCBcblx0XHRcdFx0XHRcdCAgdGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCB1diArIHZlYzIoIDIuMCAqIGR4LCAtZHkgKSwgc2hhZG93Q29vcmQueiApLFxuXHRcdFx0XHRcdFx0ICBmLnggKSxcblx0XHRcdFx0XHQgbWl4KCB0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHV2ICsgdmVjMiggLWR4LCAyLjAgKiBkeSApLCBzaGFkb3dDb29yZC56ICksIFxuXHRcdFx0XHRcdFx0ICB0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHV2ICsgdmVjMiggMi4wICogZHgsIDIuMCAqIGR5ICksIHNoYWRvd0Nvb3JkLnogKSxcblx0XHRcdFx0XHRcdCAgZi54ICksXG5cdFx0XHRcdFx0IGYueSApXG5cdFx0XHQpICogKCAxLjAgLyA5LjAgKTtcblx0XHQjZWxpZiBkZWZpbmVkKCBTSEFET1dNQVBfVFlQRV9WU00gKVxuXHRcdFx0c2hhZG93ID0gVlNNU2hhZG93KCBzaGFkb3dNYXAsIHNoYWRvd0Nvb3JkLnh5LCBzaGFkb3dDb29yZC56ICk7XG5cdFx0I2Vsc2Vcblx0XHRcdHNoYWRvdyA9IHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgc2hhZG93Q29vcmQueHksIHNoYWRvd0Nvb3JkLnogKTtcblx0XHQjZW5kaWZcblx0XHR9XG5cdFx0cmV0dXJuIHNoYWRvdztcblx0fVxuXHR2ZWMyIGN1YmVUb1VWKCB2ZWMzIHYsIGZsb2F0IHRleGVsU2l6ZVkgKSB7XG5cdFx0dmVjMyBhYnNWID0gYWJzKCB2ICk7XG5cdFx0ZmxvYXQgc2NhbGVUb0N1YmUgPSAxLjAgLyBtYXgoIGFic1YueCwgbWF4KCBhYnNWLnksIGFic1YueiApICk7XG5cdFx0YWJzViAqPSBzY2FsZVRvQ3ViZTtcblx0XHR2ICo9IHNjYWxlVG9DdWJlICogKCAxLjAgLSAyLjAgKiB0ZXhlbFNpemVZICk7XG5cdFx0dmVjMiBwbGFuYXIgPSB2Lnh5O1xuXHRcdGZsb2F0IGFsbW9zdEFUZXhlbCA9IDEuNSAqIHRleGVsU2l6ZVk7XG5cdFx0ZmxvYXQgYWxtb3N0T25lID0gMS4wIC0gYWxtb3N0QVRleGVsO1xuXHRcdGlmICggYWJzVi56ID49IGFsbW9zdE9uZSApIHtcblx0XHRcdGlmICggdi56ID4gMC4wIClcblx0XHRcdFx0cGxhbmFyLnggPSA0LjAgLSB2Lng7XG5cdFx0fSBlbHNlIGlmICggYWJzVi54ID49IGFsbW9zdE9uZSApIHtcblx0XHRcdGZsb2F0IHNpZ25YID0gc2lnbiggdi54ICk7XG5cdFx0XHRwbGFuYXIueCA9IHYueiAqIHNpZ25YICsgMi4wICogc2lnblg7XG5cdFx0fSBlbHNlIGlmICggYWJzVi55ID49IGFsbW9zdE9uZSApIHtcblx0XHRcdGZsb2F0IHNpZ25ZID0gc2lnbiggdi55ICk7XG5cdFx0XHRwbGFuYXIueCA9IHYueCArIDIuMCAqIHNpZ25ZICsgMi4wO1xuXHRcdFx0cGxhbmFyLnkgPSB2LnogKiBzaWduWSAtIDIuMDtcblx0XHR9XG5cdFx0cmV0dXJuIHZlYzIoIDAuMTI1LCAwLjI1ICkgKiBwbGFuYXIgKyB2ZWMyKCAwLjM3NSwgMC43NSApO1xuXHR9XG5cdGZsb2F0IGdldFBvaW50U2hhZG93KCBzYW1wbGVyMkQgc2hhZG93TWFwLCB2ZWMyIHNoYWRvd01hcFNpemUsIGZsb2F0IHNoYWRvd0JpYXMsIGZsb2F0IHNoYWRvd1JhZGl1cywgdmVjNCBzaGFkb3dDb29yZCwgZmxvYXQgc2hhZG93Q2FtZXJhTmVhciwgZmxvYXQgc2hhZG93Q2FtZXJhRmFyICkge1xuXHRcdHZlYzIgdGV4ZWxTaXplID0gdmVjMiggMS4wICkgLyAoIHNoYWRvd01hcFNpemUgKiB2ZWMyKCA0LjAsIDIuMCApICk7XG5cdFx0dmVjMyBsaWdodFRvUG9zaXRpb24gPSBzaGFkb3dDb29yZC54eXo7XG5cdFx0ZmxvYXQgZHAgPSAoIGxlbmd0aCggbGlnaHRUb1Bvc2l0aW9uICkgLSBzaGFkb3dDYW1lcmFOZWFyICkgLyAoIHNoYWRvd0NhbWVyYUZhciAtIHNoYWRvd0NhbWVyYU5lYXIgKTtcdFx0ZHAgKz0gc2hhZG93Qmlhcztcblx0XHR2ZWMzIGJkM0QgPSBub3JtYWxpemUoIGxpZ2h0VG9Qb3NpdGlvbiApO1xuXHRcdCNpZiBkZWZpbmVkKCBTSEFET1dNQVBfVFlQRV9QQ0YgKSB8fCBkZWZpbmVkKCBTSEFET1dNQVBfVFlQRV9QQ0ZfU09GVCApIHx8IGRlZmluZWQoIFNIQURPV01BUF9UWVBFX1ZTTSApXG5cdFx0XHR2ZWMyIG9mZnNldCA9IHZlYzIoIC0gMSwgMSApICogc2hhZG93UmFkaXVzICogdGV4ZWxTaXplLnk7XG5cdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHR0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIGN1YmVUb1VWKCBiZDNEICsgb2Zmc2V0Lnh5eSwgdGV4ZWxTaXplLnkgKSwgZHAgKSArXG5cdFx0XHRcdHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgY3ViZVRvVVYoIGJkM0QgKyBvZmZzZXQueXl5LCB0ZXhlbFNpemUueSApLCBkcCApICtcblx0XHRcdFx0dGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBjdWJlVG9VViggYmQzRCArIG9mZnNldC54eXgsIHRleGVsU2l6ZS55ICksIGRwICkgK1xuXHRcdFx0XHR0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIGN1YmVUb1VWKCBiZDNEICsgb2Zmc2V0Lnl5eCwgdGV4ZWxTaXplLnkgKSwgZHAgKSArXG5cdFx0XHRcdHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgY3ViZVRvVVYoIGJkM0QsIHRleGVsU2l6ZS55ICksIGRwICkgK1xuXHRcdFx0XHR0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIGN1YmVUb1VWKCBiZDNEICsgb2Zmc2V0Lnh4eSwgdGV4ZWxTaXplLnkgKSwgZHAgKSArXG5cdFx0XHRcdHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgY3ViZVRvVVYoIGJkM0QgKyBvZmZzZXQueXh5LCB0ZXhlbFNpemUueSApLCBkcCApICtcblx0XHRcdFx0dGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBjdWJlVG9VViggYmQzRCArIG9mZnNldC54eHgsIHRleGVsU2l6ZS55ICksIGRwICkgK1xuXHRcdFx0XHR0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIGN1YmVUb1VWKCBiZDNEICsgb2Zmc2V0Lnl4eCwgdGV4ZWxTaXplLnkgKSwgZHAgKVxuXHRcdFx0KSAqICggMS4wIC8gOS4wICk7XG5cdFx0I2Vsc2Vcblx0XHRcdHJldHVybiB0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIGN1YmVUb1VWKCBiZDNELCB0ZXhlbFNpemUueSApLCBkcCApO1xuXHRcdCNlbmRpZlxuXHR9XG4jZW5kaWYiLHNoYWRvd21hcF9wYXJzX3ZlcnRleDoiI2lmZGVmIFVTRV9TSEFET1dNQVBcblx0I2lmIE5VTV9ESVJfTElHSFRfU0hBRE9XUyA+IDBcblx0XHR1bmlmb3JtIG1hdDQgZGlyZWN0aW9uYWxTaGFkb3dNYXRyaXhbIE5VTV9ESVJfTElHSFRfU0hBRE9XUyBdO1xuXHRcdHZhcnlpbmcgdmVjNCB2RGlyZWN0aW9uYWxTaGFkb3dDb29yZFsgTlVNX0RJUl9MSUdIVF9TSEFET1dTIF07XG5cdFx0c3RydWN0IERpcmVjdGlvbmFsTGlnaHRTaGFkb3cge1xuXHRcdFx0ZmxvYXQgc2hhZG93Qmlhcztcblx0XHRcdGZsb2F0IHNoYWRvd05vcm1hbEJpYXM7XG5cdFx0XHRmbG9hdCBzaGFkb3dSYWRpdXM7XG5cdFx0XHR2ZWMyIHNoYWRvd01hcFNpemU7XG5cdFx0fTtcblx0XHR1bmlmb3JtIERpcmVjdGlvbmFsTGlnaHRTaGFkb3cgZGlyZWN0aW9uYWxMaWdodFNoYWRvd3NbIE5VTV9ESVJfTElHSFRfU0hBRE9XUyBdO1xuXHQjZW5kaWZcblx0I2lmIE5VTV9TUE9UX0xJR0hUX1NIQURPV1MgPiAwXG5cdFx0dW5pZm9ybSBtYXQ0IHNwb3RTaGFkb3dNYXRyaXhbIE5VTV9TUE9UX0xJR0hUX1NIQURPV1MgXTtcblx0XHR2YXJ5aW5nIHZlYzQgdlNwb3RTaGFkb3dDb29yZFsgTlVNX1NQT1RfTElHSFRfU0hBRE9XUyBdO1xuXHRcdHN0cnVjdCBTcG90TGlnaHRTaGFkb3cge1xuXHRcdFx0ZmxvYXQgc2hhZG93Qmlhcztcblx0XHRcdGZsb2F0IHNoYWRvd05vcm1hbEJpYXM7XG5cdFx0XHRmbG9hdCBzaGFkb3dSYWRpdXM7XG5cdFx0XHR2ZWMyIHNoYWRvd01hcFNpemU7XG5cdFx0fTtcblx0XHR1bmlmb3JtIFNwb3RMaWdodFNoYWRvdyBzcG90TGlnaHRTaGFkb3dzWyBOVU1fU1BPVF9MSUdIVF9TSEFET1dTIF07XG5cdCNlbmRpZlxuXHQjaWYgTlVNX1BPSU5UX0xJR0hUX1NIQURPV1MgPiAwXG5cdFx0dW5pZm9ybSBtYXQ0IHBvaW50U2hhZG93TWF0cml4WyBOVU1fUE9JTlRfTElHSFRfU0hBRE9XUyBdO1xuXHRcdHZhcnlpbmcgdmVjNCB2UG9pbnRTaGFkb3dDb29yZFsgTlVNX1BPSU5UX0xJR0hUX1NIQURPV1MgXTtcblx0XHRzdHJ1Y3QgUG9pbnRMaWdodFNoYWRvdyB7XG5cdFx0XHRmbG9hdCBzaGFkb3dCaWFzO1xuXHRcdFx0ZmxvYXQgc2hhZG93Tm9ybWFsQmlhcztcblx0XHRcdGZsb2F0IHNoYWRvd1JhZGl1cztcblx0XHRcdHZlYzIgc2hhZG93TWFwU2l6ZTtcblx0XHRcdGZsb2F0IHNoYWRvd0NhbWVyYU5lYXI7XG5cdFx0XHRmbG9hdCBzaGFkb3dDYW1lcmFGYXI7XG5cdFx0fTtcblx0XHR1bmlmb3JtIFBvaW50TGlnaHRTaGFkb3cgcG9pbnRMaWdodFNoYWRvd3NbIE5VTV9QT0lOVF9MSUdIVF9TSEFET1dTIF07XG5cdCNlbmRpZlxuI2VuZGlmIixzaGFkb3dtYXBfdmVydGV4OiIjaWZkZWYgVVNFX1NIQURPV01BUFxuXHQjaWYgTlVNX0RJUl9MSUdIVF9TSEFET1dTID4gMCB8fCBOVU1fU1BPVF9MSUdIVF9TSEFET1dTID4gMCB8fCBOVU1fUE9JTlRfTElHSFRfU0hBRE9XUyA+IDBcblx0XHR2ZWMzIHNoYWRvd1dvcmxkTm9ybWFsID0gaW52ZXJzZVRyYW5zZm9ybURpcmVjdGlvbiggdHJhbnNmb3JtZWROb3JtYWwsIHZpZXdNYXRyaXggKTtcblx0XHR2ZWM0IHNoYWRvd1dvcmxkUG9zaXRpb247XG5cdCNlbmRpZlxuXHQjaWYgTlVNX0RJUl9MSUdIVF9TSEFET1dTID4gMFxuXHQjcHJhZ21hIHVucm9sbF9sb29wX3N0YXJ0XG5cdGZvciAoIGludCBpID0gMDsgaSA8IE5VTV9ESVJfTElHSFRfU0hBRE9XUzsgaSArKyApIHtcblx0XHRzaGFkb3dXb3JsZFBvc2l0aW9uID0gd29ybGRQb3NpdGlvbiArIHZlYzQoIHNoYWRvd1dvcmxkTm9ybWFsICogZGlyZWN0aW9uYWxMaWdodFNoYWRvd3NbIGkgXS5zaGFkb3dOb3JtYWxCaWFzLCAwICk7XG5cdFx0dkRpcmVjdGlvbmFsU2hhZG93Q29vcmRbIGkgXSA9IGRpcmVjdGlvbmFsU2hhZG93TWF0cml4WyBpIF0gKiBzaGFkb3dXb3JsZFBvc2l0aW9uO1xuXHR9XG5cdCNwcmFnbWEgdW5yb2xsX2xvb3BfZW5kXG5cdCNlbmRpZlxuXHQjaWYgTlVNX1NQT1RfTElHSFRfU0hBRE9XUyA+IDBcblx0I3ByYWdtYSB1bnJvbGxfbG9vcF9zdGFydFxuXHRmb3IgKCBpbnQgaSA9IDA7IGkgPCBOVU1fU1BPVF9MSUdIVF9TSEFET1dTOyBpICsrICkge1xuXHRcdHNoYWRvd1dvcmxkUG9zaXRpb24gPSB3b3JsZFBvc2l0aW9uICsgdmVjNCggc2hhZG93V29ybGROb3JtYWwgKiBzcG90TGlnaHRTaGFkb3dzWyBpIF0uc2hhZG93Tm9ybWFsQmlhcywgMCApO1xuXHRcdHZTcG90U2hhZG93Q29vcmRbIGkgXSA9IHNwb3RTaGFkb3dNYXRyaXhbIGkgXSAqIHNoYWRvd1dvcmxkUG9zaXRpb247XG5cdH1cblx0I3ByYWdtYSB1bnJvbGxfbG9vcF9lbmRcblx0I2VuZGlmXG5cdCNpZiBOVU1fUE9JTlRfTElHSFRfU0hBRE9XUyA+IDBcblx0I3ByYWdtYSB1bnJvbGxfbG9vcF9zdGFydFxuXHRmb3IgKCBpbnQgaSA9IDA7IGkgPCBOVU1fUE9JTlRfTElHSFRfU0hBRE9XUzsgaSArKyApIHtcblx0XHRzaGFkb3dXb3JsZFBvc2l0aW9uID0gd29ybGRQb3NpdGlvbiArIHZlYzQoIHNoYWRvd1dvcmxkTm9ybWFsICogcG9pbnRMaWdodFNoYWRvd3NbIGkgXS5zaGFkb3dOb3JtYWxCaWFzLCAwICk7XG5cdFx0dlBvaW50U2hhZG93Q29vcmRbIGkgXSA9IHBvaW50U2hhZG93TWF0cml4WyBpIF0gKiBzaGFkb3dXb3JsZFBvc2l0aW9uO1xuXHR9XG5cdCNwcmFnbWEgdW5yb2xsX2xvb3BfZW5kXG5cdCNlbmRpZlxuI2VuZGlmIixzaGFkb3dtYXNrX3BhcnNfZnJhZ21lbnQ6ImZsb2F0IGdldFNoYWRvd01hc2soKSB7XG5cdGZsb2F0IHNoYWRvdyA9IDEuMDtcblx0I2lmZGVmIFVTRV9TSEFET1dNQVBcblx0I2lmIE5VTV9ESVJfTElHSFRfU0hBRE9XUyA+IDBcblx0RGlyZWN0aW9uYWxMaWdodFNoYWRvdyBkaXJlY3Rpb25hbExpZ2h0O1xuXHQjcHJhZ21hIHVucm9sbF9sb29wX3N0YXJ0XG5cdGZvciAoIGludCBpID0gMDsgaSA8IE5VTV9ESVJfTElHSFRfU0hBRE9XUzsgaSArKyApIHtcblx0XHRkaXJlY3Rpb25hbExpZ2h0ID0gZGlyZWN0aW9uYWxMaWdodFNoYWRvd3NbIGkgXTtcblx0XHRzaGFkb3cgKj0gcmVjZWl2ZVNoYWRvdyA/IGdldFNoYWRvdyggZGlyZWN0aW9uYWxTaGFkb3dNYXBbIGkgXSwgZGlyZWN0aW9uYWxMaWdodC5zaGFkb3dNYXBTaXplLCBkaXJlY3Rpb25hbExpZ2h0LnNoYWRvd0JpYXMsIGRpcmVjdGlvbmFsTGlnaHQuc2hhZG93UmFkaXVzLCB2RGlyZWN0aW9uYWxTaGFkb3dDb29yZFsgaSBdICkgOiAxLjA7XG5cdH1cblx0I3ByYWdtYSB1bnJvbGxfbG9vcF9lbmRcblx0I2VuZGlmXG5cdCNpZiBOVU1fU1BPVF9MSUdIVF9TSEFET1dTID4gMFxuXHRTcG90TGlnaHRTaGFkb3cgc3BvdExpZ2h0O1xuXHQjcHJhZ21hIHVucm9sbF9sb29wX3N0YXJ0XG5cdGZvciAoIGludCBpID0gMDsgaSA8IE5VTV9TUE9UX0xJR0hUX1NIQURPV1M7IGkgKysgKSB7XG5cdFx0c3BvdExpZ2h0ID0gc3BvdExpZ2h0U2hhZG93c1sgaSBdO1xuXHRcdHNoYWRvdyAqPSByZWNlaXZlU2hhZG93ID8gZ2V0U2hhZG93KCBzcG90U2hhZG93TWFwWyBpIF0sIHNwb3RMaWdodC5zaGFkb3dNYXBTaXplLCBzcG90TGlnaHQuc2hhZG93Qmlhcywgc3BvdExpZ2h0LnNoYWRvd1JhZGl1cywgdlNwb3RTaGFkb3dDb29yZFsgaSBdICkgOiAxLjA7XG5cdH1cblx0I3ByYWdtYSB1bnJvbGxfbG9vcF9lbmRcblx0I2VuZGlmXG5cdCNpZiBOVU1fUE9JTlRfTElHSFRfU0hBRE9XUyA+IDBcblx0UG9pbnRMaWdodFNoYWRvdyBwb2ludExpZ2h0O1xuXHQjcHJhZ21hIHVucm9sbF9sb29wX3N0YXJ0XG5cdGZvciAoIGludCBpID0gMDsgaSA8IE5VTV9QT0lOVF9MSUdIVF9TSEFET1dTOyBpICsrICkge1xuXHRcdHBvaW50TGlnaHQgPSBwb2ludExpZ2h0U2hhZG93c1sgaSBdO1xuXHRcdHNoYWRvdyAqPSByZWNlaXZlU2hhZG93ID8gZ2V0UG9pbnRTaGFkb3coIHBvaW50U2hhZG93TWFwWyBpIF0sIHBvaW50TGlnaHQuc2hhZG93TWFwU2l6ZSwgcG9pbnRMaWdodC5zaGFkb3dCaWFzLCBwb2ludExpZ2h0LnNoYWRvd1JhZGl1cywgdlBvaW50U2hhZG93Q29vcmRbIGkgXSwgcG9pbnRMaWdodC5zaGFkb3dDYW1lcmFOZWFyLCBwb2ludExpZ2h0LnNoYWRvd0NhbWVyYUZhciApIDogMS4wO1xuXHR9XG5cdCNwcmFnbWEgdW5yb2xsX2xvb3BfZW5kXG5cdCNlbmRpZlxuXHQjZW5kaWZcblx0cmV0dXJuIHNoYWRvdztcbn0iLHNraW5iYXNlX3ZlcnRleDoiI2lmZGVmIFVTRV9TS0lOTklOR1xuXHRtYXQ0IGJvbmVNYXRYID0gZ2V0Qm9uZU1hdHJpeCggc2tpbkluZGV4LnggKTtcblx0bWF0NCBib25lTWF0WSA9IGdldEJvbmVNYXRyaXgoIHNraW5JbmRleC55ICk7XG5cdG1hdDQgYm9uZU1hdFogPSBnZXRCb25lTWF0cml4KCBza2luSW5kZXgueiApO1xuXHRtYXQ0IGJvbmVNYXRXID0gZ2V0Qm9uZU1hdHJpeCggc2tpbkluZGV4LncgKTtcbiNlbmRpZiIsc2tpbm5pbmdfcGFyc192ZXJ0ZXg6IiNpZmRlZiBVU0VfU0tJTk5JTkdcblx0dW5pZm9ybSBtYXQ0IGJpbmRNYXRyaXg7XG5cdHVuaWZvcm0gbWF0NCBiaW5kTWF0cml4SW52ZXJzZTtcblx0I2lmZGVmIEJPTkVfVEVYVFVSRVxuXHRcdHVuaWZvcm0gaGlnaHAgc2FtcGxlcjJEIGJvbmVUZXh0dXJlO1xuXHRcdHVuaWZvcm0gaW50IGJvbmVUZXh0dXJlU2l6ZTtcblx0XHRtYXQ0IGdldEJvbmVNYXRyaXgoIGNvbnN0IGluIGZsb2F0IGkgKSB7XG5cdFx0XHRmbG9hdCBqID0gaSAqIDQuMDtcblx0XHRcdGZsb2F0IHggPSBtb2QoIGosIGZsb2F0KCBib25lVGV4dHVyZVNpemUgKSApO1xuXHRcdFx0ZmxvYXQgeSA9IGZsb29yKCBqIC8gZmxvYXQoIGJvbmVUZXh0dXJlU2l6ZSApICk7XG5cdFx0XHRmbG9hdCBkeCA9IDEuMCAvIGZsb2F0KCBib25lVGV4dHVyZVNpemUgKTtcblx0XHRcdGZsb2F0IGR5ID0gMS4wIC8gZmxvYXQoIGJvbmVUZXh0dXJlU2l6ZSApO1xuXHRcdFx0eSA9IGR5ICogKCB5ICsgMC41ICk7XG5cdFx0XHR2ZWM0IHYxID0gdGV4dHVyZTJEKCBib25lVGV4dHVyZSwgdmVjMiggZHggKiAoIHggKyAwLjUgKSwgeSApICk7XG5cdFx0XHR2ZWM0IHYyID0gdGV4dHVyZTJEKCBib25lVGV4dHVyZSwgdmVjMiggZHggKiAoIHggKyAxLjUgKSwgeSApICk7XG5cdFx0XHR2ZWM0IHYzID0gdGV4dHVyZTJEKCBib25lVGV4dHVyZSwgdmVjMiggZHggKiAoIHggKyAyLjUgKSwgeSApICk7XG5cdFx0XHR2ZWM0IHY0ID0gdGV4dHVyZTJEKCBib25lVGV4dHVyZSwgdmVjMiggZHggKiAoIHggKyAzLjUgKSwgeSApICk7XG5cdFx0XHRtYXQ0IGJvbmUgPSBtYXQ0KCB2MSwgdjIsIHYzLCB2NCApO1xuXHRcdFx0cmV0dXJuIGJvbmU7XG5cdFx0fVxuXHQjZWxzZVxuXHRcdHVuaWZvcm0gbWF0NCBib25lTWF0cmljZXNbIE1BWF9CT05FUyBdO1xuXHRcdG1hdDQgZ2V0Qm9uZU1hdHJpeCggY29uc3QgaW4gZmxvYXQgaSApIHtcblx0XHRcdG1hdDQgYm9uZSA9IGJvbmVNYXRyaWNlc1sgaW50KGkpIF07XG5cdFx0XHRyZXR1cm4gYm9uZTtcblx0XHR9XG5cdCNlbmRpZlxuI2VuZGlmIixza2lubmluZ192ZXJ0ZXg6IiNpZmRlZiBVU0VfU0tJTk5JTkdcblx0dmVjNCBza2luVmVydGV4ID0gYmluZE1hdHJpeCAqIHZlYzQoIHRyYW5zZm9ybWVkLCAxLjAgKTtcblx0dmVjNCBza2lubmVkID0gdmVjNCggMC4wICk7XG5cdHNraW5uZWQgKz0gYm9uZU1hdFggKiBza2luVmVydGV4ICogc2tpbldlaWdodC54O1xuXHRza2lubmVkICs9IGJvbmVNYXRZICogc2tpblZlcnRleCAqIHNraW5XZWlnaHQueTtcblx0c2tpbm5lZCArPSBib25lTWF0WiAqIHNraW5WZXJ0ZXggKiBza2luV2VpZ2h0Lno7XG5cdHNraW5uZWQgKz0gYm9uZU1hdFcgKiBza2luVmVydGV4ICogc2tpbldlaWdodC53O1xuXHR0cmFuc2Zvcm1lZCA9ICggYmluZE1hdHJpeEludmVyc2UgKiBza2lubmVkICkueHl6O1xuI2VuZGlmIixza2lubm9ybWFsX3ZlcnRleDoiI2lmZGVmIFVTRV9TS0lOTklOR1xuXHRtYXQ0IHNraW5NYXRyaXggPSBtYXQ0KCAwLjAgKTtcblx0c2tpbk1hdHJpeCArPSBza2luV2VpZ2h0LnggKiBib25lTWF0WDtcblx0c2tpbk1hdHJpeCArPSBza2luV2VpZ2h0LnkgKiBib25lTWF0WTtcblx0c2tpbk1hdHJpeCArPSBza2luV2VpZ2h0LnogKiBib25lTWF0Wjtcblx0c2tpbk1hdHJpeCArPSBza2luV2VpZ2h0LncgKiBib25lTWF0Vztcblx0c2tpbk1hdHJpeCA9IGJpbmRNYXRyaXhJbnZlcnNlICogc2tpbk1hdHJpeCAqIGJpbmRNYXRyaXg7XG5cdG9iamVjdE5vcm1hbCA9IHZlYzQoIHNraW5NYXRyaXggKiB2ZWM0KCBvYmplY3ROb3JtYWwsIDAuMCApICkueHl6O1xuXHQjaWZkZWYgVVNFX1RBTkdFTlRcblx0XHRvYmplY3RUYW5nZW50ID0gdmVjNCggc2tpbk1hdHJpeCAqIHZlYzQoIG9iamVjdFRhbmdlbnQsIDAuMCApICkueHl6O1xuXHQjZW5kaWZcbiNlbmRpZiIsc3BlY3VsYXJtYXBfZnJhZ21lbnQ6ImZsb2F0IHNwZWN1bGFyU3RyZW5ndGg7XG4jaWZkZWYgVVNFX1NQRUNVTEFSTUFQXG5cdHZlYzQgdGV4ZWxTcGVjdWxhciA9IHRleHR1cmUyRCggc3BlY3VsYXJNYXAsIHZVdiApO1xuXHRzcGVjdWxhclN0cmVuZ3RoID0gdGV4ZWxTcGVjdWxhci5yO1xuI2Vsc2Vcblx0c3BlY3VsYXJTdHJlbmd0aCA9IDEuMDtcbiNlbmRpZiIsc3BlY3VsYXJtYXBfcGFyc19mcmFnbWVudDoiI2lmZGVmIFVTRV9TUEVDVUxBUk1BUFxuXHR1bmlmb3JtIHNhbXBsZXIyRCBzcGVjdWxhck1hcDtcbiNlbmRpZiIsdG9uZW1hcHBpbmdfZnJhZ21lbnQ6IiNpZiBkZWZpbmVkKCBUT05FX01BUFBJTkcgKVxuXHRnbF9GcmFnQ29sb3IucmdiID0gdG9uZU1hcHBpbmcoIGdsX0ZyYWdDb2xvci5yZ2IgKTtcbiNlbmRpZiIsdG9uZW1hcHBpbmdfcGFyc19mcmFnbWVudDoiI2lmbmRlZiBzYXR1cmF0ZVxuI2RlZmluZSBzYXR1cmF0ZShhKSBjbGFtcCggYSwgMC4wLCAxLjAgKVxuI2VuZGlmXG51bmlmb3JtIGZsb2F0IHRvbmVNYXBwaW5nRXhwb3N1cmU7XG52ZWMzIExpbmVhclRvbmVNYXBwaW5nKCB2ZWMzIGNvbG9yICkge1xuXHRyZXR1cm4gdG9uZU1hcHBpbmdFeHBvc3VyZSAqIGNvbG9yO1xufVxudmVjMyBSZWluaGFyZFRvbmVNYXBwaW5nKCB2ZWMzIGNvbG9yICkge1xuXHRjb2xvciAqPSB0b25lTWFwcGluZ0V4cG9zdXJlO1xuXHRyZXR1cm4gc2F0dXJhdGUoIGNvbG9yIC8gKCB2ZWMzKCAxLjAgKSArIGNvbG9yICkgKTtcbn1cbnZlYzMgT3B0aW1pemVkQ2luZW9uVG9uZU1hcHBpbmcoIHZlYzMgY29sb3IgKSB7XG5cdGNvbG9yICo9IHRvbmVNYXBwaW5nRXhwb3N1cmU7XG5cdGNvbG9yID0gbWF4KCB2ZWMzKCAwLjAgKSwgY29sb3IgLSAwLjAwNCApO1xuXHRyZXR1cm4gcG93KCAoIGNvbG9yICogKCA2LjIgKiBjb2xvciArIDAuNSApICkgLyAoIGNvbG9yICogKCA2LjIgKiBjb2xvciArIDEuNyApICsgMC4wNiApLCB2ZWMzKCAyLjIgKSApO1xufVxudmVjMyBSUlRBbmRPRFRGaXQoIHZlYzMgdiApIHtcblx0dmVjMyBhID0gdiAqICggdiArIDAuMDI0NTc4NiApIC0gMC4wMDAwOTA1Mzc7XG5cdHZlYzMgYiA9IHYgKiAoIDAuOTgzNzI5ICogdiArIDAuNDMyOTUxMCApICsgMC4yMzgwODE7XG5cdHJldHVybiBhIC8gYjtcbn1cbnZlYzMgQUNFU0ZpbG1pY1RvbmVNYXBwaW5nKCB2ZWMzIGNvbG9yICkge1xuXHRjb25zdCBtYXQzIEFDRVNJbnB1dE1hdCA9IG1hdDMoXG5cdFx0dmVjMyggMC41OTcxOSwgMC4wNzYwMCwgMC4wMjg0MCApLFx0XHR2ZWMzKCAwLjM1NDU4LCAwLjkwODM0LCAwLjEzMzgzICksXG5cdFx0dmVjMyggMC4wNDgyMywgMC4wMTU2NiwgMC44Mzc3NyApXG5cdCk7XG5cdGNvbnN0IG1hdDMgQUNFU091dHB1dE1hdCA9IG1hdDMoXG5cdFx0dmVjMyggIDEuNjA0NzUsIC0wLjEwMjA4LCAtMC4wMDMyNyApLFx0XHR2ZWMzKCAtMC41MzEwOCwgIDEuMTA4MTMsIC0wLjA3Mjc2ICksXG5cdFx0dmVjMyggLTAuMDczNjcsIC0wLjAwNjA1LCAgMS4wNzYwMiApXG5cdCk7XG5cdGNvbG9yICo9IHRvbmVNYXBwaW5nRXhwb3N1cmUgLyAwLjY7XG5cdGNvbG9yID0gQUNFU0lucHV0TWF0ICogY29sb3I7XG5cdGNvbG9yID0gUlJUQW5kT0RURml0KCBjb2xvciApO1xuXHRjb2xvciA9IEFDRVNPdXRwdXRNYXQgKiBjb2xvcjtcblx0cmV0dXJuIHNhdHVyYXRlKCBjb2xvciApO1xufVxudmVjMyBDdXN0b21Ub25lTWFwcGluZyggdmVjMyBjb2xvciApIHsgcmV0dXJuIGNvbG9yOyB9Iix0cmFuc21pc3Npb25fZnJhZ21lbnQ6IiNpZmRlZiBVU0VfVFJBTlNNSVNTSU9OXG5cdGZsb2F0IHRyYW5zbWlzc2lvbkZhY3RvciA9IHRyYW5zbWlzc2lvbjtcblx0ZmxvYXQgdGhpY2tuZXNzRmFjdG9yID0gdGhpY2tuZXNzO1xuXHQjaWZkZWYgVVNFX1RSQU5TTUlTU0lPTk1BUFxuXHRcdHRyYW5zbWlzc2lvbkZhY3RvciAqPSB0ZXh0dXJlMkQoIHRyYW5zbWlzc2lvbk1hcCwgdlV2ICkucjtcblx0I2VuZGlmXG5cdCNpZmRlZiBVU0VfVEhJQ0tORVNTTUFQXG5cdFx0dGhpY2tuZXNzRmFjdG9yICo9IHRleHR1cmUyRCggdGhpY2tuZXNzTWFwLCB2VXYgKS5nO1xuXHQjZW5kaWZcblx0dmVjMyBwb3MgPSB2V29ybGRQb3NpdGlvbi54eXogLyB2V29ybGRQb3NpdGlvbi53O1xuXHR2ZWMzIHYgPSBub3JtYWxpemUoIGNhbWVyYVBvc2l0aW9uIC0gcG9zICk7XG5cdHZlYzMgbiA9IGludmVyc2VUcmFuc2Zvcm1EaXJlY3Rpb24oIG5vcm1hbCwgdmlld01hdHJpeCApO1xuXHRmbG9hdCBpb3IgPSAoIDEuMCArIDAuNCAqIHJlZmxlY3Rpdml0eSApIC8gKCAxLjAgLSAwLjQgKiByZWZsZWN0aXZpdHkgKTtcblx0dmVjMyB0cmFuc21pc3Npb24gPSB0cmFuc21pc3Npb25GYWN0b3IgKiBnZXRJQkxWb2x1bWVSZWZyYWN0aW9uKFxuXHRcdG4sIHYsIHJvdWdobmVzc0ZhY3RvciwgbWF0ZXJpYWwuZGlmZnVzZUNvbG9yLCBtYXRlcmlhbC5zcGVjdWxhckNvbG9yLFxuXHRcdHBvcywgbW9kZWxNYXRyaXgsIHZpZXdNYXRyaXgsIHByb2plY3Rpb25NYXRyaXgsIGlvciwgdGhpY2tuZXNzRmFjdG9yLFxuXHRcdGF0dGVudWF0aW9uVGludCwgYXR0ZW51YXRpb25EaXN0YW5jZSApO1xuXHR0b3RhbERpZmZ1c2UgPSBtaXgoIHRvdGFsRGlmZnVzZSwgdHJhbnNtaXNzaW9uLCB0cmFuc21pc3Npb25GYWN0b3IgKTtcbiNlbmRpZiIsdHJhbnNtaXNzaW9uX3BhcnNfZnJhZ21lbnQ6IiNpZmRlZiBVU0VfVFJBTlNNSVNTSU9OXG5cdCNpZmRlZiBVU0VfVFJBTlNNSVNTSU9OTUFQXG5cdFx0dW5pZm9ybSBzYW1wbGVyMkQgdHJhbnNtaXNzaW9uTWFwO1xuXHQjZW5kaWZcblx0I2lmZGVmIFVTRV9USElDS05FU1NNQVBcblx0XHR1bmlmb3JtIHNhbXBsZXIyRCB0aGlja25lc3NNYXA7XG5cdCNlbmRpZlxuXHR1bmlmb3JtIHZlYzIgdHJhbnNtaXNzaW9uU2FtcGxlclNpemU7XG5cdHVuaWZvcm0gc2FtcGxlcjJEIHRyYW5zbWlzc2lvblNhbXBsZXJNYXA7XG5cdHVuaWZvcm0gbWF0NCBtb2RlbE1hdHJpeDtcblx0dW5pZm9ybSBtYXQ0IHByb2plY3Rpb25NYXRyaXg7XG5cdHZhcnlpbmcgdmVjNCB2V29ybGRQb3NpdGlvbjtcblx0dmVjMyBnZXRWb2x1bWVUcmFuc21pc3Npb25SYXkodmVjMyBuLCB2ZWMzIHYsIGZsb2F0IHRoaWNrbmVzcywgZmxvYXQgaW9yLCBtYXQ0IG1vZGVsTWF0cml4KSB7XG5cdFx0dmVjMyByZWZyYWN0aW9uVmVjdG9yID0gcmVmcmFjdCgtdiwgbm9ybWFsaXplKG4pLCAxLjAgLyBpb3IpO1xuXHRcdHZlYzMgbW9kZWxTY2FsZTtcblx0XHRtb2RlbFNjYWxlLnggPSBsZW5ndGgodmVjMyhtb2RlbE1hdHJpeFswXS54eXopKTtcblx0XHRtb2RlbFNjYWxlLnkgPSBsZW5ndGgodmVjMyhtb2RlbE1hdHJpeFsxXS54eXopKTtcblx0XHRtb2RlbFNjYWxlLnogPSBsZW5ndGgodmVjMyhtb2RlbE1hdHJpeFsyXS54eXopKTtcblx0XHRyZXR1cm4gbm9ybWFsaXplKHJlZnJhY3Rpb25WZWN0b3IpICogdGhpY2tuZXNzICogbW9kZWxTY2FsZTtcblx0fVxuXHRmbG9hdCBhcHBseUlvclRvUm91Z2huZXNzKGZsb2F0IHJvdWdobmVzcywgZmxvYXQgaW9yKSB7XG5cdFx0cmV0dXJuIHJvdWdobmVzcyAqIGNsYW1wKGlvciAqIDIuMCAtIDIuMCwgMC4wLCAxLjApO1xuXHR9XG5cdHZlYzMgZ2V0VHJhbnNtaXNzaW9uU2FtcGxlKHZlYzIgZnJhZ0Nvb3JkLCBmbG9hdCByb3VnaG5lc3MsIGZsb2F0IGlvcikge1xuXHRcdGZsb2F0IGZyYW1lYnVmZmVyTG9kID0gbG9nMih0cmFuc21pc3Npb25TYW1wbGVyU2l6ZS54KSAqIGFwcGx5SW9yVG9Sb3VnaG5lc3Mocm91Z2huZXNzLCBpb3IpO1xuXHRcdHJldHVybiB0ZXh0dXJlMkRMb2RFWFQodHJhbnNtaXNzaW9uU2FtcGxlck1hcCwgZnJhZ0Nvb3JkLnh5LCBmcmFtZWJ1ZmZlckxvZCkucmdiO1xuXHR9XG5cdHZlYzMgYXBwbHlWb2x1bWVBdHRlbnVhdGlvbih2ZWMzIHJhZGlhbmNlLCBmbG9hdCB0cmFuc21pc3Npb25EaXN0YW5jZSwgdmVjMyBhdHRlbnVhdGlvbkNvbG9yLCBmbG9hdCBhdHRlbnVhdGlvbkRpc3RhbmNlKSB7XG5cdFx0aWYgKGF0dGVudWF0aW9uRGlzdGFuY2UgPT0gMC4wKSB7XG5cdFx0XHRyZXR1cm4gcmFkaWFuY2U7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHZlYzMgYXR0ZW51YXRpb25Db2VmZmljaWVudCA9IC1sb2coYXR0ZW51YXRpb25Db2xvcikgLyBhdHRlbnVhdGlvbkRpc3RhbmNlO1xuXHRcdFx0dmVjMyB0cmFuc21pdHRhbmNlID0gZXhwKC1hdHRlbnVhdGlvbkNvZWZmaWNpZW50ICogdHJhbnNtaXNzaW9uRGlzdGFuY2UpO1x0XHRcdHJldHVybiB0cmFuc21pdHRhbmNlICogcmFkaWFuY2U7XG5cdFx0fVxuXHR9XG5cdHZlYzMgZ2V0SUJMVm9sdW1lUmVmcmFjdGlvbih2ZWMzIG4sIHZlYzMgdiwgZmxvYXQgcGVyY2VwdHVhbFJvdWdobmVzcywgdmVjMyBiYXNlQ29sb3IsIHZlYzMgc3BlY3VsYXJDb2xvcixcblx0XHR2ZWMzIHBvc2l0aW9uLCBtYXQ0IG1vZGVsTWF0cml4LCBtYXQ0IHZpZXdNYXRyaXgsIG1hdDQgcHJvak1hdHJpeCwgZmxvYXQgaW9yLCBmbG9hdCB0aGlja25lc3MsXG5cdFx0dmVjMyBhdHRlbnVhdGlvbkNvbG9yLCBmbG9hdCBhdHRlbnVhdGlvbkRpc3RhbmNlKSB7XG5cdFx0dmVjMyB0cmFuc21pc3Npb25SYXkgPSBnZXRWb2x1bWVUcmFuc21pc3Npb25SYXkobiwgdiwgdGhpY2tuZXNzLCBpb3IsIG1vZGVsTWF0cml4KTtcblx0XHR2ZWMzIHJlZnJhY3RlZFJheUV4aXQgPSBwb3NpdGlvbiArIHRyYW5zbWlzc2lvblJheTtcblx0XHR2ZWM0IG5kY1BvcyA9IHByb2pNYXRyaXggKiB2aWV3TWF0cml4ICogdmVjNChyZWZyYWN0ZWRSYXlFeGl0LCAxLjApO1xuXHRcdHZlYzIgcmVmcmFjdGlvbkNvb3JkcyA9IG5kY1Bvcy54eSAvIG5kY1Bvcy53O1xuXHRcdHJlZnJhY3Rpb25Db29yZHMgKz0gMS4wO1xuXHRcdHJlZnJhY3Rpb25Db29yZHMgLz0gMi4wO1xuXHRcdHZlYzMgdHJhbnNtaXR0ZWRMaWdodCA9IGdldFRyYW5zbWlzc2lvblNhbXBsZShyZWZyYWN0aW9uQ29vcmRzLCBwZXJjZXB0dWFsUm91Z2huZXNzLCBpb3IpO1xuXHRcdHZlYzMgYXR0ZW51YXRlZENvbG9yID0gYXBwbHlWb2x1bWVBdHRlbnVhdGlvbih0cmFuc21pdHRlZExpZ2h0LCBsZW5ndGgodHJhbnNtaXNzaW9uUmF5KSwgYXR0ZW51YXRpb25Db2xvciwgYXR0ZW51YXRpb25EaXN0YW5jZSk7XG5cdFx0cmV0dXJuICgxLjAgLSBzcGVjdWxhckNvbG9yKSAqIGF0dGVudWF0ZWRDb2xvciAqIGJhc2VDb2xvcjtcblx0fVxuI2VuZGlmIix1dl9wYXJzX2ZyYWdtZW50OiIjaWYgKCBkZWZpbmVkKCBVU0VfVVYgKSAmJiAhIGRlZmluZWQoIFVWU19WRVJURVhfT05MWSApIClcblx0dmFyeWluZyB2ZWMyIHZVdjtcbiNlbmRpZiIsdXZfcGFyc192ZXJ0ZXg6IiNpZmRlZiBVU0VfVVZcblx0I2lmZGVmIFVWU19WRVJURVhfT05MWVxuXHRcdHZlYzIgdlV2O1xuXHQjZWxzZVxuXHRcdHZhcnlpbmcgdmVjMiB2VXY7XG5cdCNlbmRpZlxuXHR1bmlmb3JtIG1hdDMgdXZUcmFuc2Zvcm07XG4jZW5kaWYiLHV2X3ZlcnRleDoiI2lmZGVmIFVTRV9VVlxuXHR2VXYgPSAoIHV2VHJhbnNmb3JtICogdmVjMyggdXYsIDEgKSApLnh5O1xuI2VuZGlmIix1djJfcGFyc19mcmFnbWVudDoiI2lmIGRlZmluZWQoIFVTRV9MSUdIVE1BUCApIHx8IGRlZmluZWQoIFVTRV9BT01BUCApXG5cdHZhcnlpbmcgdmVjMiB2VXYyO1xuI2VuZGlmIix1djJfcGFyc192ZXJ0ZXg6IiNpZiBkZWZpbmVkKCBVU0VfTElHSFRNQVAgKSB8fCBkZWZpbmVkKCBVU0VfQU9NQVAgKVxuXHRhdHRyaWJ1dGUgdmVjMiB1djI7XG5cdHZhcnlpbmcgdmVjMiB2VXYyO1xuXHR1bmlmb3JtIG1hdDMgdXYyVHJhbnNmb3JtO1xuI2VuZGlmIix1djJfdmVydGV4OiIjaWYgZGVmaW5lZCggVVNFX0xJR0hUTUFQICkgfHwgZGVmaW5lZCggVVNFX0FPTUFQIClcblx0dlV2MiA9ICggdXYyVHJhbnNmb3JtICogdmVjMyggdXYyLCAxICkgKS54eTtcbiNlbmRpZiIsd29ybGRwb3NfdmVydGV4OiIjaWYgZGVmaW5lZCggVVNFX0VOVk1BUCApIHx8IGRlZmluZWQoIERJU1RBTkNFICkgfHwgZGVmaW5lZCAoIFVTRV9TSEFET1dNQVAgKSB8fCBkZWZpbmVkICggVVNFX1RSQU5TTUlTU0lPTiApXG5cdHZlYzQgd29ybGRQb3NpdGlvbiA9IHZlYzQoIHRyYW5zZm9ybWVkLCAxLjAgKTtcblx0I2lmZGVmIFVTRV9JTlNUQU5DSU5HXG5cdFx0d29ybGRQb3NpdGlvbiA9IGluc3RhbmNlTWF0cml4ICogd29ybGRQb3NpdGlvbjtcblx0I2VuZGlmXG5cdHdvcmxkUG9zaXRpb24gPSBtb2RlbE1hdHJpeCAqIHdvcmxkUG9zaXRpb247XG4jZW5kaWYiLGJhY2tncm91bmRfZnJhZzoidW5pZm9ybSBzYW1wbGVyMkQgdDJEO1xudmFyeWluZyB2ZWMyIHZVdjtcbnZvaWQgbWFpbigpIHtcblx0dmVjNCB0ZXhDb2xvciA9IHRleHR1cmUyRCggdDJELCB2VXYgKTtcblx0Z2xfRnJhZ0NvbG9yID0gbWFwVGV4ZWxUb0xpbmVhciggdGV4Q29sb3IgKTtcblx0I2luY2x1ZGUgPHRvbmVtYXBwaW5nX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8ZW5jb2RpbmdzX2ZyYWdtZW50PlxufSIsYmFja2dyb3VuZF92ZXJ0OiJ2YXJ5aW5nIHZlYzIgdlV2O1xudW5pZm9ybSBtYXQzIHV2VHJhbnNmb3JtO1xudm9pZCBtYWluKCkge1xuXHR2VXYgPSAoIHV2VHJhbnNmb3JtICogdmVjMyggdXYsIDEgKSApLnh5O1xuXHRnbF9Qb3NpdGlvbiA9IHZlYzQoIHBvc2l0aW9uLnh5LCAxLjAsIDEuMCApO1xufSIsY3ViZV9mcmFnOiIjaW5jbHVkZSA8ZW52bWFwX2NvbW1vbl9wYXJzX2ZyYWdtZW50PlxudW5pZm9ybSBmbG9hdCBvcGFjaXR5O1xudmFyeWluZyB2ZWMzIHZXb3JsZERpcmVjdGlvbjtcbiNpbmNsdWRlIDxjdWJlX3V2X3JlZmxlY3Rpb25fZnJhZ21lbnQ+XG52b2lkIG1haW4oKSB7XG5cdHZlYzMgdlJlZmxlY3QgPSB2V29ybGREaXJlY3Rpb247XG5cdCNpbmNsdWRlIDxlbnZtYXBfZnJhZ21lbnQ+XG5cdGdsX0ZyYWdDb2xvciA9IGVudkNvbG9yO1xuXHRnbF9GcmFnQ29sb3IuYSAqPSBvcGFjaXR5O1xuXHQjaW5jbHVkZSA8dG9uZW1hcHBpbmdfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxlbmNvZGluZ3NfZnJhZ21lbnQ+XG59IixjdWJlX3ZlcnQ6InZhcnlpbmcgdmVjMyB2V29ybGREaXJlY3Rpb247XG4jaW5jbHVkZSA8Y29tbW9uPlxudm9pZCBtYWluKCkge1xuXHR2V29ybGREaXJlY3Rpb24gPSB0cmFuc2Zvcm1EaXJlY3Rpb24oIHBvc2l0aW9uLCBtb2RlbE1hdHJpeCApO1xuXHQjaW5jbHVkZSA8YmVnaW5fdmVydGV4PlxuXHQjaW5jbHVkZSA8cHJvamVjdF92ZXJ0ZXg+XG5cdGdsX1Bvc2l0aW9uLnogPSBnbF9Qb3NpdGlvbi53O1xufSIsZGVwdGhfZnJhZzoiI2lmIERFUFRIX1BBQ0tJTkcgPT0gMzIwMFxuXHR1bmlmb3JtIGZsb2F0IG9wYWNpdHk7XG4jZW5kaWZcbiNpbmNsdWRlIDxjb21tb24+XG4jaW5jbHVkZSA8cGFja2luZz5cbiNpbmNsdWRlIDx1dl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPG1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGFscGhhbWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8bG9nZGVwdGhidWZfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfcGFyc19mcmFnbWVudD5cbnZhcnlpbmcgdmVjMiB2SGlnaFByZWNpc2lvblpXO1xudm9pZCBtYWluKCkge1xuXHQjaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX2ZyYWdtZW50PlxuXHR2ZWM0IGRpZmZ1c2VDb2xvciA9IHZlYzQoIDEuMCApO1xuXHQjaWYgREVQVEhfUEFDS0lORyA9PSAzMjAwXG5cdFx0ZGlmZnVzZUNvbG9yLmEgPSBvcGFjaXR5O1xuXHQjZW5kaWZcblx0I2luY2x1ZGUgPG1hcF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGFscGhhbWFwX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8YWxwaGF0ZXN0X2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8bG9nZGVwdGhidWZfZnJhZ21lbnQ+XG5cdGZsb2F0IGZyYWdDb29yZFogPSAwLjUgKiB2SGlnaFByZWNpc2lvblpXWzBdIC8gdkhpZ2hQcmVjaXNpb25aV1sxXSArIDAuNTtcblx0I2lmIERFUFRIX1BBQ0tJTkcgPT0gMzIwMFxuXHRcdGdsX0ZyYWdDb2xvciA9IHZlYzQoIHZlYzMoIDEuMCAtIGZyYWdDb29yZFogKSwgb3BhY2l0eSApO1xuXHQjZWxpZiBERVBUSF9QQUNLSU5HID09IDMyMDFcblx0XHRnbF9GcmFnQ29sb3IgPSBwYWNrRGVwdGhUb1JHQkEoIGZyYWdDb29yZFogKTtcblx0I2VuZGlmXG59IixkZXB0aF92ZXJ0OiIjaW5jbHVkZSA8Y29tbW9uPlxuI2luY2x1ZGUgPHV2X3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGRpc3BsYWNlbWVudG1hcF9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxtb3JwaHRhcmdldF9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxza2lubmluZ19wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfcGFyc192ZXJ0ZXg+XG52YXJ5aW5nIHZlYzIgdkhpZ2hQcmVjaXNpb25aVztcbnZvaWQgbWFpbigpIHtcblx0I2luY2x1ZGUgPHV2X3ZlcnRleD5cblx0I2luY2x1ZGUgPHNraW5iYXNlX3ZlcnRleD5cblx0I2lmZGVmIFVTRV9ESVNQTEFDRU1FTlRNQVBcblx0XHQjaW5jbHVkZSA8YmVnaW5ub3JtYWxfdmVydGV4PlxuXHRcdCNpbmNsdWRlIDxtb3JwaG5vcm1hbF92ZXJ0ZXg+XG5cdFx0I2luY2x1ZGUgPHNraW5ub3JtYWxfdmVydGV4PlxuXHQjZW5kaWZcblx0I2luY2x1ZGUgPGJlZ2luX3ZlcnRleD5cblx0I2luY2x1ZGUgPG1vcnBodGFyZ2V0X3ZlcnRleD5cblx0I2luY2x1ZGUgPHNraW5uaW5nX3ZlcnRleD5cblx0I2luY2x1ZGUgPGRpc3BsYWNlbWVudG1hcF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxwcm9qZWN0X3ZlcnRleD5cblx0I2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3ZlcnRleD5cblx0I2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc192ZXJ0ZXg+XG5cdHZIaWdoUHJlY2lzaW9uWlcgPSBnbF9Qb3NpdGlvbi56dztcbn0iLGRpc3RhbmNlUkdCQV9mcmFnOiIjZGVmaW5lIERJU1RBTkNFXG51bmlmb3JtIHZlYzMgcmVmZXJlbmNlUG9zaXRpb247XG51bmlmb3JtIGZsb2F0IG5lYXJEaXN0YW5jZTtcbnVuaWZvcm0gZmxvYXQgZmFyRGlzdGFuY2U7XG52YXJ5aW5nIHZlYzMgdldvcmxkUG9zaXRpb247XG4jaW5jbHVkZSA8Y29tbW9uPlxuI2luY2x1ZGUgPHBhY2tpbmc+XG4jaW5jbHVkZSA8dXZfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxhbHBoYW1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19wYXJzX2ZyYWdtZW50Plxudm9pZCBtYWluICgpIHtcblx0I2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19mcmFnbWVudD5cblx0dmVjNCBkaWZmdXNlQ29sb3IgPSB2ZWM0KCAxLjAgKTtcblx0I2luY2x1ZGUgPG1hcF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGFscGhhbWFwX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8YWxwaGF0ZXN0X2ZyYWdtZW50PlxuXHRmbG9hdCBkaXN0ID0gbGVuZ3RoKCB2V29ybGRQb3NpdGlvbiAtIHJlZmVyZW5jZVBvc2l0aW9uICk7XG5cdGRpc3QgPSAoIGRpc3QgLSBuZWFyRGlzdGFuY2UgKSAvICggZmFyRGlzdGFuY2UgLSBuZWFyRGlzdGFuY2UgKTtcblx0ZGlzdCA9IHNhdHVyYXRlKCBkaXN0ICk7XG5cdGdsX0ZyYWdDb2xvciA9IHBhY2tEZXB0aFRvUkdCQSggZGlzdCApO1xufSIsZGlzdGFuY2VSR0JBX3ZlcnQ6IiNkZWZpbmUgRElTVEFOQ0VcbnZhcnlpbmcgdmVjMyB2V29ybGRQb3NpdGlvbjtcbiNpbmNsdWRlIDxjb21tb24+XG4jaW5jbHVkZSA8dXZfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8ZGlzcGxhY2VtZW50bWFwX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPG1vcnBodGFyZ2V0X3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPHNraW5uaW5nX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19wYXJzX3ZlcnRleD5cbnZvaWQgbWFpbigpIHtcblx0I2luY2x1ZGUgPHV2X3ZlcnRleD5cblx0I2luY2x1ZGUgPHNraW5iYXNlX3ZlcnRleD5cblx0I2lmZGVmIFVTRV9ESVNQTEFDRU1FTlRNQVBcblx0XHQjaW5jbHVkZSA8YmVnaW5ub3JtYWxfdmVydGV4PlxuXHRcdCNpbmNsdWRlIDxtb3JwaG5vcm1hbF92ZXJ0ZXg+XG5cdFx0I2luY2x1ZGUgPHNraW5ub3JtYWxfdmVydGV4PlxuXHQjZW5kaWZcblx0I2luY2x1ZGUgPGJlZ2luX3ZlcnRleD5cblx0I2luY2x1ZGUgPG1vcnBodGFyZ2V0X3ZlcnRleD5cblx0I2luY2x1ZGUgPHNraW5uaW5nX3ZlcnRleD5cblx0I2luY2x1ZGUgPGRpc3BsYWNlbWVudG1hcF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxwcm9qZWN0X3ZlcnRleD5cblx0I2luY2x1ZGUgPHdvcmxkcG9zX3ZlcnRleD5cblx0I2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc192ZXJ0ZXg+XG5cdHZXb3JsZFBvc2l0aW9uID0gd29ybGRQb3NpdGlvbi54eXo7XG59IixlcXVpcmVjdF9mcmFnOiJ1bmlmb3JtIHNhbXBsZXIyRCB0RXF1aXJlY3Q7XG52YXJ5aW5nIHZlYzMgdldvcmxkRGlyZWN0aW9uO1xuI2luY2x1ZGUgPGNvbW1vbj5cbnZvaWQgbWFpbigpIHtcblx0dmVjMyBkaXJlY3Rpb24gPSBub3JtYWxpemUoIHZXb3JsZERpcmVjdGlvbiApO1xuXHR2ZWMyIHNhbXBsZVVWID0gZXF1aXJlY3RVdiggZGlyZWN0aW9uICk7XG5cdHZlYzQgdGV4Q29sb3IgPSB0ZXh0dXJlMkQoIHRFcXVpcmVjdCwgc2FtcGxlVVYgKTtcblx0Z2xfRnJhZ0NvbG9yID0gbWFwVGV4ZWxUb0xpbmVhciggdGV4Q29sb3IgKTtcblx0I2luY2x1ZGUgPHRvbmVtYXBwaW5nX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8ZW5jb2RpbmdzX2ZyYWdtZW50PlxufSIsZXF1aXJlY3RfdmVydDoidmFyeWluZyB2ZWMzIHZXb3JsZERpcmVjdGlvbjtcbiNpbmNsdWRlIDxjb21tb24+XG52b2lkIG1haW4oKSB7XG5cdHZXb3JsZERpcmVjdGlvbiA9IHRyYW5zZm9ybURpcmVjdGlvbiggcG9zaXRpb24sIG1vZGVsTWF0cml4ICk7XG5cdCNpbmNsdWRlIDxiZWdpbl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxwcm9qZWN0X3ZlcnRleD5cbn0iLGxpbmVkYXNoZWRfZnJhZzoidW5pZm9ybSB2ZWMzIGRpZmZ1c2U7XG51bmlmb3JtIGZsb2F0IG9wYWNpdHk7XG51bmlmb3JtIGZsb2F0IGRhc2hTaXplO1xudW5pZm9ybSBmbG9hdCB0b3RhbFNpemU7XG52YXJ5aW5nIGZsb2F0IHZMaW5lRGlzdGFuY2U7XG4jaW5jbHVkZSA8Y29tbW9uPlxuI2luY2x1ZGUgPGNvbG9yX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8Zm9nX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8bG9nZGVwdGhidWZfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfcGFyc19mcmFnbWVudD5cbnZvaWQgbWFpbigpIHtcblx0I2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19mcmFnbWVudD5cblx0aWYgKCBtb2QoIHZMaW5lRGlzdGFuY2UsIHRvdGFsU2l6ZSApID4gZGFzaFNpemUgKSB7XG5cdFx0ZGlzY2FyZDtcblx0fVxuXHR2ZWMzIG91dGdvaW5nTGlnaHQgPSB2ZWMzKCAwLjAgKTtcblx0dmVjNCBkaWZmdXNlQ29sb3IgPSB2ZWM0KCBkaWZmdXNlLCBvcGFjaXR5ICk7XG5cdCNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGNvbG9yX2ZyYWdtZW50PlxuXHRvdXRnb2luZ0xpZ2h0ID0gZGlmZnVzZUNvbG9yLnJnYjtcblx0Z2xfRnJhZ0NvbG9yID0gdmVjNCggb3V0Z29pbmdMaWdodCwgZGlmZnVzZUNvbG9yLmEgKTtcblx0I2luY2x1ZGUgPHRvbmVtYXBwaW5nX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8ZW5jb2RpbmdzX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8Zm9nX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8cHJlbXVsdGlwbGllZF9hbHBoYV9mcmFnbWVudD5cbn0iLGxpbmVkYXNoZWRfdmVydDoidW5pZm9ybSBmbG9hdCBzY2FsZTtcbmF0dHJpYnV0ZSBmbG9hdCBsaW5lRGlzdGFuY2U7XG52YXJ5aW5nIGZsb2F0IHZMaW5lRGlzdGFuY2U7XG4jaW5jbHVkZSA8Y29tbW9uPlxuI2luY2x1ZGUgPGNvbG9yX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGZvZ19wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxtb3JwaHRhcmdldF9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfcGFyc192ZXJ0ZXg+XG52b2lkIG1haW4oKSB7XG5cdHZMaW5lRGlzdGFuY2UgPSBzY2FsZSAqIGxpbmVEaXN0YW5jZTtcblx0I2luY2x1ZGUgPGNvbG9yX3ZlcnRleD5cblx0I2luY2x1ZGUgPGJlZ2luX3ZlcnRleD5cblx0I2luY2x1ZGUgPG1vcnBodGFyZ2V0X3ZlcnRleD5cblx0I2luY2x1ZGUgPHByb2plY3RfdmVydGV4PlxuXHQjaW5jbHVkZSA8bG9nZGVwdGhidWZfdmVydGV4PlxuXHQjaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3ZlcnRleD5cblx0I2luY2x1ZGUgPGZvZ192ZXJ0ZXg+XG59IixtZXNoYmFzaWNfZnJhZzoidW5pZm9ybSB2ZWMzIGRpZmZ1c2U7XG51bmlmb3JtIGZsb2F0IG9wYWNpdHk7XG4jaWZuZGVmIEZMQVRfU0hBREVEXG5cdHZhcnlpbmcgdmVjMyB2Tm9ybWFsO1xuI2VuZGlmXG4jaW5jbHVkZSA8Y29tbW9uPlxuI2luY2x1ZGUgPGRpdGhlcmluZ19wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGNvbG9yX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8dXZfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDx1djJfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxhbHBoYW1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGFvbWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8bGlnaHRtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxlbnZtYXBfY29tbW9uX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8ZW52bWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8Y3ViZV91dl9yZWZsZWN0aW9uX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGZvZ19wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPHNwZWN1bGFybWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8bG9nZGVwdGhidWZfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfcGFyc19mcmFnbWVudD5cbnZvaWQgbWFpbigpIHtcblx0I2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19mcmFnbWVudD5cblx0dmVjNCBkaWZmdXNlQ29sb3IgPSB2ZWM0KCBkaWZmdXNlLCBvcGFjaXR5ICk7XG5cdCNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9mcmFnbWVudD5cblx0I2luY2x1ZGUgPG1hcF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGNvbG9yX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8YWxwaGFtYXBfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxhbHBoYXRlc3RfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxzcGVjdWxhcm1hcF9mcmFnbWVudD5cblx0UmVmbGVjdGVkTGlnaHQgcmVmbGVjdGVkTGlnaHQgPSBSZWZsZWN0ZWRMaWdodCggdmVjMyggMC4wICksIHZlYzMoIDAuMCApLCB2ZWMzKCAwLjAgKSwgdmVjMyggMC4wICkgKTtcblx0I2lmZGVmIFVTRV9MSUdIVE1BUFxuXHRcblx0XHR2ZWM0IGxpZ2h0TWFwVGV4ZWw9IHRleHR1cmUyRCggbGlnaHRNYXAsIHZVdjIgKTtcblx0XHRyZWZsZWN0ZWRMaWdodC5pbmRpcmVjdERpZmZ1c2UgKz0gbGlnaHRNYXBUZXhlbFRvTGluZWFyKCBsaWdodE1hcFRleGVsICkucmdiICogbGlnaHRNYXBJbnRlbnNpdHk7XG5cdCNlbHNlXG5cdFx0cmVmbGVjdGVkTGlnaHQuaW5kaXJlY3REaWZmdXNlICs9IHZlYzMoIDEuMCApO1xuXHQjZW5kaWZcblx0I2luY2x1ZGUgPGFvbWFwX2ZyYWdtZW50PlxuXHRyZWZsZWN0ZWRMaWdodC5pbmRpcmVjdERpZmZ1c2UgKj0gZGlmZnVzZUNvbG9yLnJnYjtcblx0dmVjMyBvdXRnb2luZ0xpZ2h0ID0gcmVmbGVjdGVkTGlnaHQuaW5kaXJlY3REaWZmdXNlO1xuXHQjaW5jbHVkZSA8ZW52bWFwX2ZyYWdtZW50PlxuXHRnbF9GcmFnQ29sb3IgPSB2ZWM0KCBvdXRnb2luZ0xpZ2h0LCBkaWZmdXNlQ29sb3IuYSApO1xuXHQjaW5jbHVkZSA8dG9uZW1hcHBpbmdfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxlbmNvZGluZ3NfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxmb2dfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxwcmVtdWx0aXBsaWVkX2FscGhhX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8ZGl0aGVyaW5nX2ZyYWdtZW50PlxufSIsbWVzaGJhc2ljX3ZlcnQ6IiNpbmNsdWRlIDxjb21tb24+XG4jaW5jbHVkZSA8dXZfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8dXYyX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGVudm1hcF9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxjb2xvcl9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxmb2dfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8bW9ycGh0YXJnZXRfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8c2tpbm5pbmdfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8bG9nZGVwdGhidWZfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3BhcnNfdmVydGV4Plxudm9pZCBtYWluKCkge1xuXHQjaW5jbHVkZSA8dXZfdmVydGV4PlxuXHQjaW5jbHVkZSA8dXYyX3ZlcnRleD5cblx0I2luY2x1ZGUgPGNvbG9yX3ZlcnRleD5cblx0I2lmIGRlZmluZWQgKCBVU0VfRU5WTUFQICkgfHwgZGVmaW5lZCAoIFVTRV9TS0lOTklORyApXG5cdFx0I2luY2x1ZGUgPGJlZ2lubm9ybWFsX3ZlcnRleD5cblx0XHQjaW5jbHVkZSA8bW9ycGhub3JtYWxfdmVydGV4PlxuXHRcdCNpbmNsdWRlIDxza2luYmFzZV92ZXJ0ZXg+XG5cdFx0I2luY2x1ZGUgPHNraW5ub3JtYWxfdmVydGV4PlxuXHRcdCNpbmNsdWRlIDxkZWZhdWx0bm9ybWFsX3ZlcnRleD5cblx0I2VuZGlmXG5cdCNpbmNsdWRlIDxiZWdpbl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxtb3JwaHRhcmdldF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxza2lubmluZ192ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxwcm9qZWN0X3ZlcnRleD5cblx0I2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3ZlcnRleD5cblx0I2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc192ZXJ0ZXg+XG5cdCNpbmNsdWRlIDx3b3JsZHBvc192ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxlbnZtYXBfdmVydGV4PlxuXHQjaW5jbHVkZSA8Zm9nX3ZlcnRleD5cbn0iLG1lc2hsYW1iZXJ0X2ZyYWc6InVuaWZvcm0gdmVjMyBkaWZmdXNlO1xudW5pZm9ybSB2ZWMzIGVtaXNzaXZlO1xudW5pZm9ybSBmbG9hdCBvcGFjaXR5O1xudmFyeWluZyB2ZWMzIHZMaWdodEZyb250O1xudmFyeWluZyB2ZWMzIHZJbmRpcmVjdEZyb250O1xuI2lmZGVmIERPVUJMRV9TSURFRFxuXHR2YXJ5aW5nIHZlYzMgdkxpZ2h0QmFjaztcblx0dmFyeWluZyB2ZWMzIHZJbmRpcmVjdEJhY2s7XG4jZW5kaWZcbiNpbmNsdWRlIDxjb21tb24+XG4jaW5jbHVkZSA8cGFja2luZz5cbiNpbmNsdWRlIDxkaXRoZXJpbmdfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxjb2xvcl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPHV2X3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8dXYyX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8bWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8YWxwaGFtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxhb21hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGxpZ2h0bWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8ZW1pc3NpdmVtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxlbnZtYXBfY29tbW9uX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8ZW52bWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8Y3ViZV91dl9yZWZsZWN0aW9uX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGJzZGZzPlxuI2luY2x1ZGUgPGxpZ2h0c19wYXJzX2JlZ2luPlxuI2luY2x1ZGUgPGZvZ19wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPHNoYWRvd21hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPHNoYWRvd21hc2tfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxzcGVjdWxhcm1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3BhcnNfZnJhZ21lbnQ+XG52b2lkIG1haW4oKSB7XG5cdCNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfZnJhZ21lbnQ+XG5cdHZlYzQgZGlmZnVzZUNvbG9yID0gdmVjNCggZGlmZnVzZSwgb3BhY2l0eSApO1xuXHRSZWZsZWN0ZWRMaWdodCByZWZsZWN0ZWRMaWdodCA9IFJlZmxlY3RlZExpZ2h0KCB2ZWMzKCAwLjAgKSwgdmVjMyggMC4wICksIHZlYzMoIDAuMCApLCB2ZWMzKCAwLjAgKSApO1xuXHR2ZWMzIHRvdGFsRW1pc3NpdmVSYWRpYW5jZSA9IGVtaXNzaXZlO1xuXHQjaW5jbHVkZSA8bG9nZGVwdGhidWZfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxtYXBfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxjb2xvcl9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGFscGhhbWFwX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8YWxwaGF0ZXN0X2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8c3BlY3VsYXJtYXBfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxlbWlzc2l2ZW1hcF9mcmFnbWVudD5cblx0I2lmZGVmIERPVUJMRV9TSURFRFxuXHRcdHJlZmxlY3RlZExpZ2h0LmluZGlyZWN0RGlmZnVzZSArPSAoIGdsX0Zyb250RmFjaW5nICkgPyB2SW5kaXJlY3RGcm9udCA6IHZJbmRpcmVjdEJhY2s7XG5cdCNlbHNlXG5cdFx0cmVmbGVjdGVkTGlnaHQuaW5kaXJlY3REaWZmdXNlICs9IHZJbmRpcmVjdEZyb250O1xuXHQjZW5kaWZcblx0I2luY2x1ZGUgPGxpZ2h0bWFwX2ZyYWdtZW50PlxuXHRyZWZsZWN0ZWRMaWdodC5pbmRpcmVjdERpZmZ1c2UgKj0gQlJERl9EaWZmdXNlX0xhbWJlcnQoIGRpZmZ1c2VDb2xvci5yZ2IgKTtcblx0I2lmZGVmIERPVUJMRV9TSURFRFxuXHRcdHJlZmxlY3RlZExpZ2h0LmRpcmVjdERpZmZ1c2UgPSAoIGdsX0Zyb250RmFjaW5nICkgPyB2TGlnaHRGcm9udCA6IHZMaWdodEJhY2s7XG5cdCNlbHNlXG5cdFx0cmVmbGVjdGVkTGlnaHQuZGlyZWN0RGlmZnVzZSA9IHZMaWdodEZyb250O1xuXHQjZW5kaWZcblx0cmVmbGVjdGVkTGlnaHQuZGlyZWN0RGlmZnVzZSAqPSBCUkRGX0RpZmZ1c2VfTGFtYmVydCggZGlmZnVzZUNvbG9yLnJnYiApICogZ2V0U2hhZG93TWFzaygpO1xuXHQjaW5jbHVkZSA8YW9tYXBfZnJhZ21lbnQ+XG5cdHZlYzMgb3V0Z29pbmdMaWdodCA9IHJlZmxlY3RlZExpZ2h0LmRpcmVjdERpZmZ1c2UgKyByZWZsZWN0ZWRMaWdodC5pbmRpcmVjdERpZmZ1c2UgKyB0b3RhbEVtaXNzaXZlUmFkaWFuY2U7XG5cdCNpbmNsdWRlIDxlbnZtYXBfZnJhZ21lbnQ+XG5cdGdsX0ZyYWdDb2xvciA9IHZlYzQoIG91dGdvaW5nTGlnaHQsIGRpZmZ1c2VDb2xvci5hICk7XG5cdCNpbmNsdWRlIDx0b25lbWFwcGluZ19mcmFnbWVudD5cblx0I2luY2x1ZGUgPGVuY29kaW5nc19mcmFnbWVudD5cblx0I2luY2x1ZGUgPGZvZ19mcmFnbWVudD5cblx0I2luY2x1ZGUgPHByZW11bHRpcGxpZWRfYWxwaGFfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxkaXRoZXJpbmdfZnJhZ21lbnQ+XG59IixtZXNobGFtYmVydF92ZXJ0OiIjZGVmaW5lIExBTUJFUlRcbnZhcnlpbmcgdmVjMyB2TGlnaHRGcm9udDtcbnZhcnlpbmcgdmVjMyB2SW5kaXJlY3RGcm9udDtcbiNpZmRlZiBET1VCTEVfU0lERURcblx0dmFyeWluZyB2ZWMzIHZMaWdodEJhY2s7XG5cdHZhcnlpbmcgdmVjMyB2SW5kaXJlY3RCYWNrO1xuI2VuZGlmXG4jaW5jbHVkZSA8Y29tbW9uPlxuI2luY2x1ZGUgPHV2X3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPHV2Ml9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxlbnZtYXBfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8YnNkZnM+XG4jaW5jbHVkZSA8bGlnaHRzX3BhcnNfYmVnaW4+XG4jaW5jbHVkZSA8Y29sb3JfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8Zm9nX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPG1vcnBodGFyZ2V0X3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPHNraW5uaW5nX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPHNoYWRvd21hcF9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfcGFyc192ZXJ0ZXg+XG52b2lkIG1haW4oKSB7XG5cdCNpbmNsdWRlIDx1dl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDx1djJfdmVydGV4PlxuXHQjaW5jbHVkZSA8Y29sb3JfdmVydGV4PlxuXHQjaW5jbHVkZSA8YmVnaW5ub3JtYWxfdmVydGV4PlxuXHQjaW5jbHVkZSA8bW9ycGhub3JtYWxfdmVydGV4PlxuXHQjaW5jbHVkZSA8c2tpbmJhc2VfdmVydGV4PlxuXHQjaW5jbHVkZSA8c2tpbm5vcm1hbF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxkZWZhdWx0bm9ybWFsX3ZlcnRleD5cblx0I2luY2x1ZGUgPGJlZ2luX3ZlcnRleD5cblx0I2luY2x1ZGUgPG1vcnBodGFyZ2V0X3ZlcnRleD5cblx0I2luY2x1ZGUgPHNraW5uaW5nX3ZlcnRleD5cblx0I2luY2x1ZGUgPHByb2plY3RfdmVydGV4PlxuXHQjaW5jbHVkZSA8bG9nZGVwdGhidWZfdmVydGV4PlxuXHQjaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3ZlcnRleD5cblx0I2luY2x1ZGUgPHdvcmxkcG9zX3ZlcnRleD5cblx0I2luY2x1ZGUgPGVudm1hcF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxsaWdodHNfbGFtYmVydF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxzaGFkb3dtYXBfdmVydGV4PlxuXHQjaW5jbHVkZSA8Zm9nX3ZlcnRleD5cbn0iLG1lc2htYXRjYXBfZnJhZzoiI2RlZmluZSBNQVRDQVBcbnVuaWZvcm0gdmVjMyBkaWZmdXNlO1xudW5pZm9ybSBmbG9hdCBvcGFjaXR5O1xudW5pZm9ybSBzYW1wbGVyMkQgbWF0Y2FwO1xudmFyeWluZyB2ZWMzIHZWaWV3UG9zaXRpb247XG4jaWZuZGVmIEZMQVRfU0hBREVEXG5cdHZhcnlpbmcgdmVjMyB2Tm9ybWFsO1xuXHQjaWZkZWYgVVNFX1RBTkdFTlRcblx0XHR2YXJ5aW5nIHZlYzMgdlRhbmdlbnQ7XG5cdFx0dmFyeWluZyB2ZWMzIHZCaXRhbmdlbnQ7XG5cdCNlbmRpZlxuI2VuZGlmXG4jaW5jbHVkZSA8Y29tbW9uPlxuI2luY2x1ZGUgPGRpdGhlcmluZ19wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGNvbG9yX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8dXZfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxhbHBoYW1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGZvZ19wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGJ1bXBtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxub3JtYWxtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19wYXJzX2ZyYWdtZW50Plxudm9pZCBtYWluKCkge1xuXHQjaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX2ZyYWdtZW50PlxuXHR2ZWM0IGRpZmZ1c2VDb2xvciA9IHZlYzQoIGRpZmZ1c2UsIG9wYWNpdHkgKTtcblx0I2luY2x1ZGUgPGxvZ2RlcHRoYnVmX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8bWFwX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8Y29sb3JfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxhbHBoYW1hcF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGFscGhhdGVzdF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPG5vcm1hbF9mcmFnbWVudF9iZWdpbj5cblx0I2luY2x1ZGUgPG5vcm1hbF9mcmFnbWVudF9tYXBzPlxuXHR2ZWMzIHZpZXdEaXIgPSBub3JtYWxpemUoIHZWaWV3UG9zaXRpb24gKTtcblx0dmVjMyB4ID0gbm9ybWFsaXplKCB2ZWMzKCB2aWV3RGlyLnosIDAuMCwgLSB2aWV3RGlyLnggKSApO1xuXHR2ZWMzIHkgPSBjcm9zcyggdmlld0RpciwgeCApO1xuXHR2ZWMyIHV2ID0gdmVjMiggZG90KCB4LCBub3JtYWwgKSwgZG90KCB5LCBub3JtYWwgKSApICogMC40OTUgKyAwLjU7XG5cdCNpZmRlZiBVU0VfTUFUQ0FQXG5cdFx0dmVjNCBtYXRjYXBDb2xvciA9IHRleHR1cmUyRCggbWF0Y2FwLCB1diApO1xuXHRcdG1hdGNhcENvbG9yID0gbWF0Y2FwVGV4ZWxUb0xpbmVhciggbWF0Y2FwQ29sb3IgKTtcblx0I2Vsc2Vcblx0XHR2ZWM0IG1hdGNhcENvbG9yID0gdmVjNCggMS4wICk7XG5cdCNlbmRpZlxuXHR2ZWMzIG91dGdvaW5nTGlnaHQgPSBkaWZmdXNlQ29sb3IucmdiICogbWF0Y2FwQ29sb3IucmdiO1xuXHRnbF9GcmFnQ29sb3IgPSB2ZWM0KCBvdXRnb2luZ0xpZ2h0LCBkaWZmdXNlQ29sb3IuYSApO1xuXHQjaW5jbHVkZSA8dG9uZW1hcHBpbmdfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxlbmNvZGluZ3NfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxmb2dfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxwcmVtdWx0aXBsaWVkX2FscGhhX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8ZGl0aGVyaW5nX2ZyYWdtZW50PlxufSIsbWVzaG1hdGNhcF92ZXJ0OiIjZGVmaW5lIE1BVENBUFxudmFyeWluZyB2ZWMzIHZWaWV3UG9zaXRpb247XG4jaWZuZGVmIEZMQVRfU0hBREVEXG5cdHZhcnlpbmcgdmVjMyB2Tm9ybWFsO1xuXHQjaWZkZWYgVVNFX1RBTkdFTlRcblx0XHR2YXJ5aW5nIHZlYzMgdlRhbmdlbnQ7XG5cdFx0dmFyeWluZyB2ZWMzIHZCaXRhbmdlbnQ7XG5cdCNlbmRpZlxuI2VuZGlmXG4jaW5jbHVkZSA8Y29tbW9uPlxuI2luY2x1ZGUgPHV2X3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGNvbG9yX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGRpc3BsYWNlbWVudG1hcF9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxmb2dfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8bW9ycGh0YXJnZXRfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8c2tpbm5pbmdfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8bG9nZGVwdGhidWZfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3BhcnNfdmVydGV4Plxudm9pZCBtYWluKCkge1xuXHQjaW5jbHVkZSA8dXZfdmVydGV4PlxuXHQjaW5jbHVkZSA8Y29sb3JfdmVydGV4PlxuXHQjaW5jbHVkZSA8YmVnaW5ub3JtYWxfdmVydGV4PlxuXHQjaW5jbHVkZSA8bW9ycGhub3JtYWxfdmVydGV4PlxuXHQjaW5jbHVkZSA8c2tpbmJhc2VfdmVydGV4PlxuXHQjaW5jbHVkZSA8c2tpbm5vcm1hbF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxkZWZhdWx0bm9ybWFsX3ZlcnRleD5cblx0I2lmbmRlZiBGTEFUX1NIQURFRFxuXHRcdHZOb3JtYWwgPSBub3JtYWxpemUoIHRyYW5zZm9ybWVkTm9ybWFsICk7XG5cdFx0I2lmZGVmIFVTRV9UQU5HRU5UXG5cdFx0XHR2VGFuZ2VudCA9IG5vcm1hbGl6ZSggdHJhbnNmb3JtZWRUYW5nZW50ICk7XG5cdFx0XHR2Qml0YW5nZW50ID0gbm9ybWFsaXplKCBjcm9zcyggdk5vcm1hbCwgdlRhbmdlbnQgKSAqIHRhbmdlbnQudyApO1xuXHRcdCNlbmRpZlxuXHQjZW5kaWZcblx0I2luY2x1ZGUgPGJlZ2luX3ZlcnRleD5cblx0I2luY2x1ZGUgPG1vcnBodGFyZ2V0X3ZlcnRleD5cblx0I2luY2x1ZGUgPHNraW5uaW5nX3ZlcnRleD5cblx0I2luY2x1ZGUgPGRpc3BsYWNlbWVudG1hcF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxwcm9qZWN0X3ZlcnRleD5cblx0I2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3ZlcnRleD5cblx0I2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc192ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxmb2dfdmVydGV4PlxuXHR2Vmlld1Bvc2l0aW9uID0gLSBtdlBvc2l0aW9uLnh5ejtcbn0iLG1lc2h0b29uX2ZyYWc6IiNkZWZpbmUgVE9PTlxudW5pZm9ybSB2ZWMzIGRpZmZ1c2U7XG51bmlmb3JtIHZlYzMgZW1pc3NpdmU7XG51bmlmb3JtIGZsb2F0IG9wYWNpdHk7XG4jaW5jbHVkZSA8Y29tbW9uPlxuI2luY2x1ZGUgPHBhY2tpbmc+XG4jaW5jbHVkZSA8ZGl0aGVyaW5nX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8Y29sb3JfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDx1dl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPHV2Ml9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPG1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGFscGhhbWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8YW9tYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxsaWdodG1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGVtaXNzaXZlbWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8Z3JhZGllbnRtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxmb2dfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxic2Rmcz5cbiNpbmNsdWRlIDxsaWdodHNfcGFyc19iZWdpbj5cbiNpbmNsdWRlIDxsaWdodHNfdG9vbl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPHNoYWRvd21hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGJ1bXBtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxub3JtYWxtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19wYXJzX2ZyYWdtZW50Plxudm9pZCBtYWluKCkge1xuXHQjaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX2ZyYWdtZW50PlxuXHR2ZWM0IGRpZmZ1c2VDb2xvciA9IHZlYzQoIGRpZmZ1c2UsIG9wYWNpdHkgKTtcblx0UmVmbGVjdGVkTGlnaHQgcmVmbGVjdGVkTGlnaHQgPSBSZWZsZWN0ZWRMaWdodCggdmVjMyggMC4wICksIHZlYzMoIDAuMCApLCB2ZWMzKCAwLjAgKSwgdmVjMyggMC4wICkgKTtcblx0dmVjMyB0b3RhbEVtaXNzaXZlUmFkaWFuY2UgPSBlbWlzc2l2ZTtcblx0I2luY2x1ZGUgPGxvZ2RlcHRoYnVmX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8bWFwX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8Y29sb3JfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxhbHBoYW1hcF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGFscGhhdGVzdF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPG5vcm1hbF9mcmFnbWVudF9iZWdpbj5cblx0I2luY2x1ZGUgPG5vcm1hbF9mcmFnbWVudF9tYXBzPlxuXHQjaW5jbHVkZSA8ZW1pc3NpdmVtYXBfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxsaWdodHNfdG9vbl9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGxpZ2h0c19mcmFnbWVudF9iZWdpbj5cblx0I2luY2x1ZGUgPGxpZ2h0c19mcmFnbWVudF9tYXBzPlxuXHQjaW5jbHVkZSA8bGlnaHRzX2ZyYWdtZW50X2VuZD5cblx0I2luY2x1ZGUgPGFvbWFwX2ZyYWdtZW50PlxuXHR2ZWMzIG91dGdvaW5nTGlnaHQgPSByZWZsZWN0ZWRMaWdodC5kaXJlY3REaWZmdXNlICsgcmVmbGVjdGVkTGlnaHQuaW5kaXJlY3REaWZmdXNlICsgdG90YWxFbWlzc2l2ZVJhZGlhbmNlO1xuXHRnbF9GcmFnQ29sb3IgPSB2ZWM0KCBvdXRnb2luZ0xpZ2h0LCBkaWZmdXNlQ29sb3IuYSApO1xuXHQjaW5jbHVkZSA8dG9uZW1hcHBpbmdfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxlbmNvZGluZ3NfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxmb2dfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxwcmVtdWx0aXBsaWVkX2FscGhhX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8ZGl0aGVyaW5nX2ZyYWdtZW50PlxufSIsbWVzaHRvb25fdmVydDoiI2RlZmluZSBUT09OXG52YXJ5aW5nIHZlYzMgdlZpZXdQb3NpdGlvbjtcbiNpZm5kZWYgRkxBVF9TSEFERURcblx0dmFyeWluZyB2ZWMzIHZOb3JtYWw7XG4jZW5kaWZcbiNpbmNsdWRlIDxjb21tb24+XG4jaW5jbHVkZSA8dXZfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8dXYyX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGRpc3BsYWNlbWVudG1hcF9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxjb2xvcl9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxmb2dfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8bW9ycGh0YXJnZXRfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8c2tpbm5pbmdfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8c2hhZG93bWFwX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19wYXJzX3ZlcnRleD5cbnZvaWQgbWFpbigpIHtcblx0I2luY2x1ZGUgPHV2X3ZlcnRleD5cblx0I2luY2x1ZGUgPHV2Ml92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxjb2xvcl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxiZWdpbm5vcm1hbF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxtb3JwaG5vcm1hbF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxza2luYmFzZV92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxza2lubm9ybWFsX3ZlcnRleD5cblx0I2luY2x1ZGUgPGRlZmF1bHRub3JtYWxfdmVydGV4PlxuI2lmbmRlZiBGTEFUX1NIQURFRFxuXHR2Tm9ybWFsID0gbm9ybWFsaXplKCB0cmFuc2Zvcm1lZE5vcm1hbCApO1xuI2VuZGlmXG5cdCNpbmNsdWRlIDxiZWdpbl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxtb3JwaHRhcmdldF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxza2lubmluZ192ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxkaXNwbGFjZW1lbnRtYXBfdmVydGV4PlxuXHQjaW5jbHVkZSA8cHJvamVjdF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfdmVydGV4PlxuXHR2Vmlld1Bvc2l0aW9uID0gLSBtdlBvc2l0aW9uLnh5ejtcblx0I2luY2x1ZGUgPHdvcmxkcG9zX3ZlcnRleD5cblx0I2luY2x1ZGUgPHNoYWRvd21hcF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxmb2dfdmVydGV4PlxufSIsbWVzaHBob25nX2ZyYWc6IiNkZWZpbmUgUEhPTkdcbnVuaWZvcm0gdmVjMyBkaWZmdXNlO1xudW5pZm9ybSB2ZWMzIGVtaXNzaXZlO1xudW5pZm9ybSB2ZWMzIHNwZWN1bGFyO1xudW5pZm9ybSBmbG9hdCBzaGluaW5lc3M7XG51bmlmb3JtIGZsb2F0IG9wYWNpdHk7XG4jaW5jbHVkZSA8Y29tbW9uPlxuI2luY2x1ZGUgPHBhY2tpbmc+XG4jaW5jbHVkZSA8ZGl0aGVyaW5nX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8Y29sb3JfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDx1dl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPHV2Ml9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPG1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGFscGhhbWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8YW9tYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxsaWdodG1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGVtaXNzaXZlbWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8ZW52bWFwX2NvbW1vbl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGVudm1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGN1YmVfdXZfcmVmbGVjdGlvbl9mcmFnbWVudD5cbiNpbmNsdWRlIDxmb2dfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxic2Rmcz5cbiNpbmNsdWRlIDxsaWdodHNfcGFyc19iZWdpbj5cbiNpbmNsdWRlIDxsaWdodHNfcGhvbmdfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxzaGFkb3dtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxidW1wbWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8bm9ybWFsbWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8c3BlY3VsYXJtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19wYXJzX2ZyYWdtZW50Plxudm9pZCBtYWluKCkge1xuXHQjaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX2ZyYWdtZW50PlxuXHR2ZWM0IGRpZmZ1c2VDb2xvciA9IHZlYzQoIGRpZmZ1c2UsIG9wYWNpdHkgKTtcblx0UmVmbGVjdGVkTGlnaHQgcmVmbGVjdGVkTGlnaHQgPSBSZWZsZWN0ZWRMaWdodCggdmVjMyggMC4wICksIHZlYzMoIDAuMCApLCB2ZWMzKCAwLjAgKSwgdmVjMyggMC4wICkgKTtcblx0dmVjMyB0b3RhbEVtaXNzaXZlUmFkaWFuY2UgPSBlbWlzc2l2ZTtcblx0I2luY2x1ZGUgPGxvZ2RlcHRoYnVmX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8bWFwX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8Y29sb3JfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxhbHBoYW1hcF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGFscGhhdGVzdF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPHNwZWN1bGFybWFwX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8bm9ybWFsX2ZyYWdtZW50X2JlZ2luPlxuXHQjaW5jbHVkZSA8bm9ybWFsX2ZyYWdtZW50X21hcHM+XG5cdCNpbmNsdWRlIDxlbWlzc2l2ZW1hcF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGxpZ2h0c19waG9uZ19mcmFnbWVudD5cblx0I2luY2x1ZGUgPGxpZ2h0c19mcmFnbWVudF9iZWdpbj5cblx0I2luY2x1ZGUgPGxpZ2h0c19mcmFnbWVudF9tYXBzPlxuXHQjaW5jbHVkZSA8bGlnaHRzX2ZyYWdtZW50X2VuZD5cblx0I2luY2x1ZGUgPGFvbWFwX2ZyYWdtZW50PlxuXHR2ZWMzIG91dGdvaW5nTGlnaHQgPSByZWZsZWN0ZWRMaWdodC5kaXJlY3REaWZmdXNlICsgcmVmbGVjdGVkTGlnaHQuaW5kaXJlY3REaWZmdXNlICsgcmVmbGVjdGVkTGlnaHQuZGlyZWN0U3BlY3VsYXIgKyByZWZsZWN0ZWRMaWdodC5pbmRpcmVjdFNwZWN1bGFyICsgdG90YWxFbWlzc2l2ZVJhZGlhbmNlO1xuXHQjaW5jbHVkZSA8ZW52bWFwX2ZyYWdtZW50PlxuXHRnbF9GcmFnQ29sb3IgPSB2ZWM0KCBvdXRnb2luZ0xpZ2h0LCBkaWZmdXNlQ29sb3IuYSApO1xuXHQjaW5jbHVkZSA8dG9uZW1hcHBpbmdfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxlbmNvZGluZ3NfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxmb2dfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxwcmVtdWx0aXBsaWVkX2FscGhhX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8ZGl0aGVyaW5nX2ZyYWdtZW50PlxufSIsbWVzaHBob25nX3ZlcnQ6IiNkZWZpbmUgUEhPTkdcbnZhcnlpbmcgdmVjMyB2Vmlld1Bvc2l0aW9uO1xuI2lmbmRlZiBGTEFUX1NIQURFRFxuXHR2YXJ5aW5nIHZlYzMgdk5vcm1hbDtcbiNlbmRpZlxuI2luY2x1ZGUgPGNvbW1vbj5cbiNpbmNsdWRlIDx1dl9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDx1djJfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8ZGlzcGxhY2VtZW50bWFwX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGVudm1hcF9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxjb2xvcl9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxmb2dfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8bW9ycGh0YXJnZXRfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8c2tpbm5pbmdfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8c2hhZG93bWFwX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19wYXJzX3ZlcnRleD5cbnZvaWQgbWFpbigpIHtcblx0I2luY2x1ZGUgPHV2X3ZlcnRleD5cblx0I2luY2x1ZGUgPHV2Ml92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxjb2xvcl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxiZWdpbm5vcm1hbF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxtb3JwaG5vcm1hbF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxza2luYmFzZV92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxza2lubm9ybWFsX3ZlcnRleD5cblx0I2luY2x1ZGUgPGRlZmF1bHRub3JtYWxfdmVydGV4PlxuI2lmbmRlZiBGTEFUX1NIQURFRFxuXHR2Tm9ybWFsID0gbm9ybWFsaXplKCB0cmFuc2Zvcm1lZE5vcm1hbCApO1xuI2VuZGlmXG5cdCNpbmNsdWRlIDxiZWdpbl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxtb3JwaHRhcmdldF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxza2lubmluZ192ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxkaXNwbGFjZW1lbnRtYXBfdmVydGV4PlxuXHQjaW5jbHVkZSA8cHJvamVjdF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfdmVydGV4PlxuXHR2Vmlld1Bvc2l0aW9uID0gLSBtdlBvc2l0aW9uLnh5ejtcblx0I2luY2x1ZGUgPHdvcmxkcG9zX3ZlcnRleD5cblx0I2luY2x1ZGUgPGVudm1hcF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxzaGFkb3dtYXBfdmVydGV4PlxuXHQjaW5jbHVkZSA8Zm9nX3ZlcnRleD5cbn0iLG1lc2hwaHlzaWNhbF9mcmFnOiIjZGVmaW5lIFNUQU5EQVJEXG4jaWZkZWYgUEhZU0lDQUxcblx0I2RlZmluZSBSRUZMRUNUSVZJVFlcblx0I2RlZmluZSBDTEVBUkNPQVRcblx0I2RlZmluZSBTUEVDVUxBUlxuI2VuZGlmXG51bmlmb3JtIHZlYzMgZGlmZnVzZTtcbnVuaWZvcm0gdmVjMyBlbWlzc2l2ZTtcbnVuaWZvcm0gZmxvYXQgcm91Z2huZXNzO1xudW5pZm9ybSBmbG9hdCBtZXRhbG5lc3M7XG51bmlmb3JtIGZsb2F0IG9wYWNpdHk7XG4jaWZkZWYgVVNFX1RSQU5TTUlTU0lPTlxuXHR1bmlmb3JtIGZsb2F0IHRyYW5zbWlzc2lvbjtcblx0dW5pZm9ybSBmbG9hdCB0aGlja25lc3M7XG5cdHVuaWZvcm0gZmxvYXQgYXR0ZW51YXRpb25EaXN0YW5jZTtcblx0dW5pZm9ybSB2ZWMzIGF0dGVudWF0aW9uVGludDtcbiNlbmRpZlxuI2lmZGVmIFJFRkxFQ1RJVklUWVxuXHR1bmlmb3JtIGZsb2F0IHJlZmxlY3Rpdml0eTtcbiNlbmRpZlxuI2lmZGVmIFNQRUNVTEFSXG5cdHVuaWZvcm0gZmxvYXQgc3BlY3VsYXJJbnRlbnNpdHk7XG5cdHVuaWZvcm0gdmVjMyBzcGVjdWxhclRpbnQ7XG5cdCNpZmRlZiBVU0VfU1BFQ1VMQVJJTlRFTlNJVFlNQVBcblx0XHR1bmlmb3JtIHNhbXBsZXIyRCBzcGVjdWxhckludGVuc2l0eU1hcDtcblx0I2VuZGlmXG5cdCNpZmRlZiBVU0VfU1BFQ1VMQVJUSU5UTUFQXG5cdFx0dW5pZm9ybSBzYW1wbGVyMkQgc3BlY3VsYXJUaW50TWFwO1xuXHQjZW5kaWZcbiNlbmRpZlxuI2lmZGVmIENMRUFSQ09BVFxuXHR1bmlmb3JtIGZsb2F0IGNsZWFyY29hdDtcblx0dW5pZm9ybSBmbG9hdCBjbGVhcmNvYXRSb3VnaG5lc3M7XG4jZW5kaWZcbiNpZmRlZiBVU0VfU0hFRU5cblx0dW5pZm9ybSB2ZWMzIHNoZWVuO1xuI2VuZGlmXG52YXJ5aW5nIHZlYzMgdlZpZXdQb3NpdGlvbjtcbiNpZm5kZWYgRkxBVF9TSEFERURcblx0dmFyeWluZyB2ZWMzIHZOb3JtYWw7XG5cdCNpZmRlZiBVU0VfVEFOR0VOVFxuXHRcdHZhcnlpbmcgdmVjMyB2VGFuZ2VudDtcblx0XHR2YXJ5aW5nIHZlYzMgdkJpdGFuZ2VudDtcblx0I2VuZGlmXG4jZW5kaWZcbiNpbmNsdWRlIDxjb21tb24+XG4jaW5jbHVkZSA8cGFja2luZz5cbiNpbmNsdWRlIDxkaXRoZXJpbmdfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxjb2xvcl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPHV2X3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8dXYyX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8bWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8YWxwaGFtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxhb21hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGxpZ2h0bWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8ZW1pc3NpdmVtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxic2Rmcz5cbiNpbmNsdWRlIDx0cmFuc21pc3Npb25fcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxjdWJlX3V2X3JlZmxlY3Rpb25fZnJhZ21lbnQ+XG4jaW5jbHVkZSA8ZW52bWFwX2NvbW1vbl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGVudm1hcF9waHlzaWNhbF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGZvZ19wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGxpZ2h0c19wYXJzX2JlZ2luPlxuI2luY2x1ZGUgPGxpZ2h0c19waHlzaWNhbF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPHNoYWRvd21hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGJ1bXBtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxub3JtYWxtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxjbGVhcmNvYXRfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxyb3VnaG5lc3NtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxtZXRhbG5lc3NtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19wYXJzX2ZyYWdtZW50Plxudm9pZCBtYWluKCkge1xuXHQjaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX2ZyYWdtZW50PlxuXHR2ZWM0IGRpZmZ1c2VDb2xvciA9IHZlYzQoIGRpZmZ1c2UsIG9wYWNpdHkgKTtcblx0UmVmbGVjdGVkTGlnaHQgcmVmbGVjdGVkTGlnaHQgPSBSZWZsZWN0ZWRMaWdodCggdmVjMyggMC4wICksIHZlYzMoIDAuMCApLCB2ZWMzKCAwLjAgKSwgdmVjMyggMC4wICkgKTtcblx0dmVjMyB0b3RhbEVtaXNzaXZlUmFkaWFuY2UgPSBlbWlzc2l2ZTtcblx0I2luY2x1ZGUgPGxvZ2RlcHRoYnVmX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8bWFwX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8Y29sb3JfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxhbHBoYW1hcF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGFscGhhdGVzdF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPHJvdWdobmVzc21hcF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPG1ldGFsbmVzc21hcF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPG5vcm1hbF9mcmFnbWVudF9iZWdpbj5cblx0I2luY2x1ZGUgPG5vcm1hbF9mcmFnbWVudF9tYXBzPlxuXHQjaW5jbHVkZSA8Y2xlYXJjb2F0X25vcm1hbF9mcmFnbWVudF9iZWdpbj5cblx0I2luY2x1ZGUgPGNsZWFyY29hdF9ub3JtYWxfZnJhZ21lbnRfbWFwcz5cblx0I2luY2x1ZGUgPGVtaXNzaXZlbWFwX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8bGlnaHRzX3BoeXNpY2FsX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8bGlnaHRzX2ZyYWdtZW50X2JlZ2luPlxuXHQjaW5jbHVkZSA8bGlnaHRzX2ZyYWdtZW50X21hcHM+XG5cdCNpbmNsdWRlIDxsaWdodHNfZnJhZ21lbnRfZW5kPlxuXHQjaW5jbHVkZSA8YW9tYXBfZnJhZ21lbnQ+XG5cdHZlYzMgdG90YWxEaWZmdXNlID0gcmVmbGVjdGVkTGlnaHQuZGlyZWN0RGlmZnVzZSArIHJlZmxlY3RlZExpZ2h0LmluZGlyZWN0RGlmZnVzZTtcblx0dmVjMyB0b3RhbFNwZWN1bGFyID0gcmVmbGVjdGVkTGlnaHQuZGlyZWN0U3BlY3VsYXIgKyByZWZsZWN0ZWRMaWdodC5pbmRpcmVjdFNwZWN1bGFyO1xuXHQjaW5jbHVkZSA8dHJhbnNtaXNzaW9uX2ZyYWdtZW50PlxuXHR2ZWMzIG91dGdvaW5nTGlnaHQgPSB0b3RhbERpZmZ1c2UgKyB0b3RhbFNwZWN1bGFyICsgdG90YWxFbWlzc2l2ZVJhZGlhbmNlO1xuXHRnbF9GcmFnQ29sb3IgPSB2ZWM0KCBvdXRnb2luZ0xpZ2h0LCBkaWZmdXNlQ29sb3IuYSApO1xuXHQjaW5jbHVkZSA8dG9uZW1hcHBpbmdfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxlbmNvZGluZ3NfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxmb2dfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxwcmVtdWx0aXBsaWVkX2FscGhhX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8ZGl0aGVyaW5nX2ZyYWdtZW50PlxufSIsbWVzaHBoeXNpY2FsX3ZlcnQ6IiNkZWZpbmUgU1RBTkRBUkRcbnZhcnlpbmcgdmVjMyB2Vmlld1Bvc2l0aW9uO1xuI2lmbmRlZiBGTEFUX1NIQURFRFxuXHR2YXJ5aW5nIHZlYzMgdk5vcm1hbDtcblx0I2lmZGVmIFVTRV9UQU5HRU5UXG5cdFx0dmFyeWluZyB2ZWMzIHZUYW5nZW50O1xuXHRcdHZhcnlpbmcgdmVjMyB2Qml0YW5nZW50O1xuXHQjZW5kaWZcbiNlbmRpZlxuI2lmZGVmIFVTRV9UUkFOU01JU1NJT05cblx0dmFyeWluZyB2ZWM0IHZXb3JsZFBvc2l0aW9uO1xuI2VuZGlmXG4jaW5jbHVkZSA8Y29tbW9uPlxuI2luY2x1ZGUgPHV2X3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPHV2Ml9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxkaXNwbGFjZW1lbnRtYXBfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8Y29sb3JfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8Zm9nX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPG1vcnBodGFyZ2V0X3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPHNraW5uaW5nX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPHNoYWRvd21hcF9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfcGFyc192ZXJ0ZXg+XG52b2lkIG1haW4oKSB7XG5cdCNpbmNsdWRlIDx1dl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDx1djJfdmVydGV4PlxuXHQjaW5jbHVkZSA8Y29sb3JfdmVydGV4PlxuXHQjaW5jbHVkZSA8YmVnaW5ub3JtYWxfdmVydGV4PlxuXHQjaW5jbHVkZSA8bW9ycGhub3JtYWxfdmVydGV4PlxuXHQjaW5jbHVkZSA8c2tpbmJhc2VfdmVydGV4PlxuXHQjaW5jbHVkZSA8c2tpbm5vcm1hbF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxkZWZhdWx0bm9ybWFsX3ZlcnRleD5cbiNpZm5kZWYgRkxBVF9TSEFERURcblx0dk5vcm1hbCA9IG5vcm1hbGl6ZSggdHJhbnNmb3JtZWROb3JtYWwgKTtcblx0I2lmZGVmIFVTRV9UQU5HRU5UXG5cdFx0dlRhbmdlbnQgPSBub3JtYWxpemUoIHRyYW5zZm9ybWVkVGFuZ2VudCApO1xuXHRcdHZCaXRhbmdlbnQgPSBub3JtYWxpemUoIGNyb3NzKCB2Tm9ybWFsLCB2VGFuZ2VudCApICogdGFuZ2VudC53ICk7XG5cdCNlbmRpZlxuI2VuZGlmXG5cdCNpbmNsdWRlIDxiZWdpbl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxtb3JwaHRhcmdldF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxza2lubmluZ192ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxkaXNwbGFjZW1lbnRtYXBfdmVydGV4PlxuXHQjaW5jbHVkZSA8cHJvamVjdF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfdmVydGV4PlxuXHR2Vmlld1Bvc2l0aW9uID0gLSBtdlBvc2l0aW9uLnh5ejtcblx0I2luY2x1ZGUgPHdvcmxkcG9zX3ZlcnRleD5cblx0I2luY2x1ZGUgPHNoYWRvd21hcF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxmb2dfdmVydGV4PlxuI2lmZGVmIFVTRV9UUkFOU01JU1NJT05cblx0dldvcmxkUG9zaXRpb24gPSB3b3JsZFBvc2l0aW9uO1xuI2VuZGlmXG59Iixub3JtYWxfZnJhZzoiI2RlZmluZSBOT1JNQUxcbnVuaWZvcm0gZmxvYXQgb3BhY2l0eTtcbiNpZiBkZWZpbmVkKCBGTEFUX1NIQURFRCApIHx8IGRlZmluZWQoIFVTRV9CVU1QTUFQICkgfHwgZGVmaW5lZCggVEFOR0VOVFNQQUNFX05PUk1BTE1BUCApXG5cdHZhcnlpbmcgdmVjMyB2Vmlld1Bvc2l0aW9uO1xuI2VuZGlmXG4jaWZuZGVmIEZMQVRfU0hBREVEXG5cdHZhcnlpbmcgdmVjMyB2Tm9ybWFsO1xuXHQjaWZkZWYgVVNFX1RBTkdFTlRcblx0XHR2YXJ5aW5nIHZlYzMgdlRhbmdlbnQ7XG5cdFx0dmFyeWluZyB2ZWMzIHZCaXRhbmdlbnQ7XG5cdCNlbmRpZlxuI2VuZGlmXG4jaW5jbHVkZSA8cGFja2luZz5cbiNpbmNsdWRlIDx1dl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGJ1bXBtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxub3JtYWxtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19wYXJzX2ZyYWdtZW50Plxudm9pZCBtYWluKCkge1xuXHQjaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8bG9nZGVwdGhidWZfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxub3JtYWxfZnJhZ21lbnRfYmVnaW4+XG5cdCNpbmNsdWRlIDxub3JtYWxfZnJhZ21lbnRfbWFwcz5cblx0Z2xfRnJhZ0NvbG9yID0gdmVjNCggcGFja05vcm1hbFRvUkdCKCBub3JtYWwgKSwgb3BhY2l0eSApO1xufSIsbm9ybWFsX3ZlcnQ6IiNkZWZpbmUgTk9STUFMXG4jaWYgZGVmaW5lZCggRkxBVF9TSEFERUQgKSB8fCBkZWZpbmVkKCBVU0VfQlVNUE1BUCApIHx8IGRlZmluZWQoIFRBTkdFTlRTUEFDRV9OT1JNQUxNQVAgKVxuXHR2YXJ5aW5nIHZlYzMgdlZpZXdQb3NpdGlvbjtcbiNlbmRpZlxuI2lmbmRlZiBGTEFUX1NIQURFRFxuXHR2YXJ5aW5nIHZlYzMgdk5vcm1hbDtcblx0I2lmZGVmIFVTRV9UQU5HRU5UXG5cdFx0dmFyeWluZyB2ZWMzIHZUYW5nZW50O1xuXHRcdHZhcnlpbmcgdmVjMyB2Qml0YW5nZW50O1xuXHQjZW5kaWZcbiNlbmRpZlxuI2luY2x1ZGUgPGNvbW1vbj5cbiNpbmNsdWRlIDx1dl9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxkaXNwbGFjZW1lbnRtYXBfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8bW9ycGh0YXJnZXRfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8c2tpbm5pbmdfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8bG9nZGVwdGhidWZfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3BhcnNfdmVydGV4Plxudm9pZCBtYWluKCkge1xuXHQjaW5jbHVkZSA8dXZfdmVydGV4PlxuXHQjaW5jbHVkZSA8YmVnaW5ub3JtYWxfdmVydGV4PlxuXHQjaW5jbHVkZSA8bW9ycGhub3JtYWxfdmVydGV4PlxuXHQjaW5jbHVkZSA8c2tpbmJhc2VfdmVydGV4PlxuXHQjaW5jbHVkZSA8c2tpbm5vcm1hbF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxkZWZhdWx0bm9ybWFsX3ZlcnRleD5cbiNpZm5kZWYgRkxBVF9TSEFERURcblx0dk5vcm1hbCA9IG5vcm1hbGl6ZSggdHJhbnNmb3JtZWROb3JtYWwgKTtcblx0I2lmZGVmIFVTRV9UQU5HRU5UXG5cdFx0dlRhbmdlbnQgPSBub3JtYWxpemUoIHRyYW5zZm9ybWVkVGFuZ2VudCApO1xuXHRcdHZCaXRhbmdlbnQgPSBub3JtYWxpemUoIGNyb3NzKCB2Tm9ybWFsLCB2VGFuZ2VudCApICogdGFuZ2VudC53ICk7XG5cdCNlbmRpZlxuI2VuZGlmXG5cdCNpbmNsdWRlIDxiZWdpbl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxtb3JwaHRhcmdldF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxza2lubmluZ192ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxkaXNwbGFjZW1lbnRtYXBfdmVydGV4PlxuXHQjaW5jbHVkZSA8cHJvamVjdF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfdmVydGV4PlxuI2lmIGRlZmluZWQoIEZMQVRfU0hBREVEICkgfHwgZGVmaW5lZCggVVNFX0JVTVBNQVAgKSB8fCBkZWZpbmVkKCBUQU5HRU5UU1BBQ0VfTk9STUFMTUFQIClcblx0dlZpZXdQb3NpdGlvbiA9IC0gbXZQb3NpdGlvbi54eXo7XG4jZW5kaWZcbn0iLHBvaW50c19mcmFnOiJ1bmlmb3JtIHZlYzMgZGlmZnVzZTtcbnVuaWZvcm0gZmxvYXQgb3BhY2l0eTtcbiNpbmNsdWRlIDxjb21tb24+XG4jaW5jbHVkZSA8Y29sb3JfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxtYXBfcGFydGljbGVfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxmb2dfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19wYXJzX2ZyYWdtZW50Plxudm9pZCBtYWluKCkge1xuXHQjaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX2ZyYWdtZW50PlxuXHR2ZWMzIG91dGdvaW5nTGlnaHQgPSB2ZWMzKCAwLjAgKTtcblx0dmVjNCBkaWZmdXNlQ29sb3IgPSB2ZWM0KCBkaWZmdXNlLCBvcGFjaXR5ICk7XG5cdCNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9mcmFnbWVudD5cblx0I2luY2x1ZGUgPG1hcF9wYXJ0aWNsZV9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGNvbG9yX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8YWxwaGF0ZXN0X2ZyYWdtZW50PlxuXHRvdXRnb2luZ0xpZ2h0ID0gZGlmZnVzZUNvbG9yLnJnYjtcblx0Z2xfRnJhZ0NvbG9yID0gdmVjNCggb3V0Z29pbmdMaWdodCwgZGlmZnVzZUNvbG9yLmEgKTtcblx0I2luY2x1ZGUgPHRvbmVtYXBwaW5nX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8ZW5jb2RpbmdzX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8Zm9nX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8cHJlbXVsdGlwbGllZF9hbHBoYV9mcmFnbWVudD5cbn0iLHBvaW50c192ZXJ0OiJ1bmlmb3JtIGZsb2F0IHNpemU7XG51bmlmb3JtIGZsb2F0IHNjYWxlO1xuI2luY2x1ZGUgPGNvbW1vbj5cbiNpbmNsdWRlIDxjb2xvcl9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxmb2dfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8bW9ycGh0YXJnZXRfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8bG9nZGVwdGhidWZfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3BhcnNfdmVydGV4Plxudm9pZCBtYWluKCkge1xuXHQjaW5jbHVkZSA8Y29sb3JfdmVydGV4PlxuXHQjaW5jbHVkZSA8YmVnaW5fdmVydGV4PlxuXHQjaW5jbHVkZSA8bW9ycGh0YXJnZXRfdmVydGV4PlxuXHQjaW5jbHVkZSA8cHJvamVjdF92ZXJ0ZXg+XG5cdGdsX1BvaW50U2l6ZSA9IHNpemU7XG5cdCNpZmRlZiBVU0VfU0laRUFUVEVOVUFUSU9OXG5cdFx0Ym9vbCBpc1BlcnNwZWN0aXZlID0gaXNQZXJzcGVjdGl2ZU1hdHJpeCggcHJvamVjdGlvbk1hdHJpeCApO1xuXHRcdGlmICggaXNQZXJzcGVjdGl2ZSApIGdsX1BvaW50U2l6ZSAqPSAoIHNjYWxlIC8gLSBtdlBvc2l0aW9uLnogKTtcblx0I2VuZGlmXG5cdCNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfdmVydGV4PlxuXHQjaW5jbHVkZSA8d29ybGRwb3NfdmVydGV4PlxuXHQjaW5jbHVkZSA8Zm9nX3ZlcnRleD5cbn0iLHNoYWRvd19mcmFnOiJ1bmlmb3JtIHZlYzMgY29sb3I7XG51bmlmb3JtIGZsb2F0IG9wYWNpdHk7XG4jaW5jbHVkZSA8Y29tbW9uPlxuI2luY2x1ZGUgPHBhY2tpbmc+XG4jaW5jbHVkZSA8Zm9nX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8YnNkZnM+XG4jaW5jbHVkZSA8bGlnaHRzX3BhcnNfYmVnaW4+XG4jaW5jbHVkZSA8c2hhZG93bWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8c2hhZG93bWFza19wYXJzX2ZyYWdtZW50Plxudm9pZCBtYWluKCkge1xuXHRnbF9GcmFnQ29sb3IgPSB2ZWM0KCBjb2xvciwgb3BhY2l0eSAqICggMS4wIC0gZ2V0U2hhZG93TWFzaygpICkgKTtcblx0I2luY2x1ZGUgPHRvbmVtYXBwaW5nX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8ZW5jb2RpbmdzX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8Zm9nX2ZyYWdtZW50PlxufSIsc2hhZG93X3ZlcnQ6IiNpbmNsdWRlIDxjb21tb24+XG4jaW5jbHVkZSA8Zm9nX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPHNoYWRvd21hcF9wYXJzX3ZlcnRleD5cbnZvaWQgbWFpbigpIHtcblx0I2luY2x1ZGUgPGJlZ2luX3ZlcnRleD5cblx0I2luY2x1ZGUgPHByb2plY3RfdmVydGV4PlxuXHQjaW5jbHVkZSA8d29ybGRwb3NfdmVydGV4PlxuXHQjaW5jbHVkZSA8YmVnaW5ub3JtYWxfdmVydGV4PlxuXHQjaW5jbHVkZSA8bW9ycGhub3JtYWxfdmVydGV4PlxuXHQjaW5jbHVkZSA8c2tpbmJhc2VfdmVydGV4PlxuXHQjaW5jbHVkZSA8c2tpbm5vcm1hbF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxkZWZhdWx0bm9ybWFsX3ZlcnRleD5cblx0I2luY2x1ZGUgPHNoYWRvd21hcF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxmb2dfdmVydGV4PlxufSIsc3ByaXRlX2ZyYWc6InVuaWZvcm0gdmVjMyBkaWZmdXNlO1xudW5pZm9ybSBmbG9hdCBvcGFjaXR5O1xuI2luY2x1ZGUgPGNvbW1vbj5cbiNpbmNsdWRlIDx1dl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPG1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGFscGhhbWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8Zm9nX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8bG9nZGVwdGhidWZfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfcGFyc19mcmFnbWVudD5cbnZvaWQgbWFpbigpIHtcblx0I2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19mcmFnbWVudD5cblx0dmVjMyBvdXRnb2luZ0xpZ2h0ID0gdmVjMyggMC4wICk7XG5cdHZlYzQgZGlmZnVzZUNvbG9yID0gdmVjNCggZGlmZnVzZSwgb3BhY2l0eSApO1xuXHQjaW5jbHVkZSA8bG9nZGVwdGhidWZfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxtYXBfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxhbHBoYW1hcF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGFscGhhdGVzdF9mcmFnbWVudD5cblx0b3V0Z29pbmdMaWdodCA9IGRpZmZ1c2VDb2xvci5yZ2I7XG5cdGdsX0ZyYWdDb2xvciA9IHZlYzQoIG91dGdvaW5nTGlnaHQsIGRpZmZ1c2VDb2xvci5hICk7XG5cdCNpbmNsdWRlIDx0b25lbWFwcGluZ19mcmFnbWVudD5cblx0I2luY2x1ZGUgPGVuY29kaW5nc19mcmFnbWVudD5cblx0I2luY2x1ZGUgPGZvZ19mcmFnbWVudD5cbn0iLHNwcml0ZV92ZXJ0OiJ1bmlmb3JtIGZsb2F0IHJvdGF0aW9uO1xudW5pZm9ybSB2ZWMyIGNlbnRlcjtcbiNpbmNsdWRlIDxjb21tb24+XG4jaW5jbHVkZSA8dXZfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8Zm9nX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19wYXJzX3ZlcnRleD5cbnZvaWQgbWFpbigpIHtcblx0I2luY2x1ZGUgPHV2X3ZlcnRleD5cblx0dmVjNCBtdlBvc2l0aW9uID0gbW9kZWxWaWV3TWF0cml4ICogdmVjNCggMC4wLCAwLjAsIDAuMCwgMS4wICk7XG5cdHZlYzIgc2NhbGU7XG5cdHNjYWxlLnggPSBsZW5ndGgoIHZlYzMoIG1vZGVsTWF0cml4WyAwIF0ueCwgbW9kZWxNYXRyaXhbIDAgXS55LCBtb2RlbE1hdHJpeFsgMCBdLnogKSApO1xuXHRzY2FsZS55ID0gbGVuZ3RoKCB2ZWMzKCBtb2RlbE1hdHJpeFsgMSBdLngsIG1vZGVsTWF0cml4WyAxIF0ueSwgbW9kZWxNYXRyaXhbIDEgXS56ICkgKTtcblx0I2lmbmRlZiBVU0VfU0laRUFUVEVOVUFUSU9OXG5cdFx0Ym9vbCBpc1BlcnNwZWN0aXZlID0gaXNQZXJzcGVjdGl2ZU1hdHJpeCggcHJvamVjdGlvbk1hdHJpeCApO1xuXHRcdGlmICggaXNQZXJzcGVjdGl2ZSApIHNjYWxlICo9IC0gbXZQb3NpdGlvbi56O1xuXHQjZW5kaWZcblx0dmVjMiBhbGlnbmVkUG9zaXRpb24gPSAoIHBvc2l0aW9uLnh5IC0gKCBjZW50ZXIgLSB2ZWMyKCAwLjUgKSApICkgKiBzY2FsZTtcblx0dmVjMiByb3RhdGVkUG9zaXRpb247XG5cdHJvdGF0ZWRQb3NpdGlvbi54ID0gY29zKCByb3RhdGlvbiApICogYWxpZ25lZFBvc2l0aW9uLnggLSBzaW4oIHJvdGF0aW9uICkgKiBhbGlnbmVkUG9zaXRpb24ueTtcblx0cm90YXRlZFBvc2l0aW9uLnkgPSBzaW4oIHJvdGF0aW9uICkgKiBhbGlnbmVkUG9zaXRpb24ueCArIGNvcyggcm90YXRpb24gKSAqIGFsaWduZWRQb3NpdGlvbi55O1xuXHRtdlBvc2l0aW9uLnh5ICs9IHJvdGF0ZWRQb3NpdGlvbjtcblx0Z2xfUG9zaXRpb24gPSBwcm9qZWN0aW9uTWF0cml4ICogbXZQb3NpdGlvbjtcblx0I2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3ZlcnRleD5cblx0I2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc192ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxmb2dfdmVydGV4PlxufSJ9LGI2dD17Y29tbW9uOntkaWZmdXNlOnt2YWx1ZTpuZXcgczR0KDE2Nzc3MjE1KX0sb3BhY2l0eTp7dmFsdWU6MX0sbWFwOnt2YWx1ZTpudWxsfSx1dlRyYW5zZm9ybTp7dmFsdWU6bmV3IEE1dH0sdXYyVHJhbnNmb3JtOnt2YWx1ZTpuZXcgQTV0fSxhbHBoYU1hcDp7dmFsdWU6bnVsbH19LHNwZWN1bGFybWFwOntzcGVjdWxhck1hcDp7dmFsdWU6bnVsbH19LGVudm1hcDp7ZW52TWFwOnt2YWx1ZTpudWxsfSxmbGlwRW52TWFwOnt2YWx1ZTotMX0scmVmbGVjdGl2aXR5Ont2YWx1ZToxfSxyZWZyYWN0aW9uUmF0aW86e3ZhbHVlOi45OH0sbWF4TWlwTGV2ZWw6e3ZhbHVlOjB9fSxhb21hcDp7YW9NYXA6e3ZhbHVlOm51bGx9LGFvTWFwSW50ZW5zaXR5Ont2YWx1ZToxfX0sbGlnaHRtYXA6e2xpZ2h0TWFwOnt2YWx1ZTpudWxsfSxsaWdodE1hcEludGVuc2l0eTp7dmFsdWU6MX19LGVtaXNzaXZlbWFwOntlbWlzc2l2ZU1hcDp7dmFsdWU6bnVsbH19LGJ1bXBtYXA6e2J1bXBNYXA6e3ZhbHVlOm51bGx9LGJ1bXBTY2FsZTp7dmFsdWU6MX19LG5vcm1hbG1hcDp7bm9ybWFsTWFwOnt2YWx1ZTpudWxsfSxub3JtYWxTY2FsZTp7dmFsdWU6bmV3IEM1dCgxLDEpfX0sZGlzcGxhY2VtZW50bWFwOntkaXNwbGFjZW1lbnRNYXA6e3ZhbHVlOm51bGx9LGRpc3BsYWNlbWVudFNjYWxlOnt2YWx1ZToxfSxkaXNwbGFjZW1lbnRCaWFzOnt2YWx1ZTowfX0scm91Z2huZXNzbWFwOntyb3VnaG5lc3NNYXA6e3ZhbHVlOm51bGx9fSxtZXRhbG5lc3NtYXA6e21ldGFsbmVzc01hcDp7dmFsdWU6bnVsbH19LGdyYWRpZW50bWFwOntncmFkaWVudE1hcDp7dmFsdWU6bnVsbH19LGZvZzp7Zm9nRGVuc2l0eTp7dmFsdWU6MjVlLTV9LGZvZ05lYXI6e3ZhbHVlOjF9LGZvZ0Zhcjp7dmFsdWU6MmUzfSxmb2dDb2xvcjp7dmFsdWU6bmV3IHM0dCgxNjc3NzIxNSl9fSxsaWdodHM6e2FtYmllbnRMaWdodENvbG9yOnt2YWx1ZTpbXX0sbGlnaHRQcm9iZTp7dmFsdWU6W119LGRpcmVjdGlvbmFsTGlnaHRzOnt2YWx1ZTpbXSxwcm9wZXJ0aWVzOntkaXJlY3Rpb246e30sY29sb3I6e319fSxkaXJlY3Rpb25hbExpZ2h0U2hhZG93czp7dmFsdWU6W10scHJvcGVydGllczp7c2hhZG93Qmlhczp7fSxzaGFkb3dOb3JtYWxCaWFzOnt9LHNoYWRvd1JhZGl1czp7fSxzaGFkb3dNYXBTaXplOnt9fX0sZGlyZWN0aW9uYWxTaGFkb3dNYXA6e3ZhbHVlOltdfSxkaXJlY3Rpb25hbFNoYWRvd01hdHJpeDp7dmFsdWU6W119LHNwb3RMaWdodHM6e3ZhbHVlOltdLHByb3BlcnRpZXM6e2NvbG9yOnt9LHBvc2l0aW9uOnt9LGRpcmVjdGlvbjp7fSxkaXN0YW5jZTp7fSxjb25lQ29zOnt9LHBlbnVtYnJhQ29zOnt9LGRlY2F5Ont9fX0sc3BvdExpZ2h0U2hhZG93czp7dmFsdWU6W10scHJvcGVydGllczp7c2hhZG93Qmlhczp7fSxzaGFkb3dOb3JtYWxCaWFzOnt9LHNoYWRvd1JhZGl1czp7fSxzaGFkb3dNYXBTaXplOnt9fX0sc3BvdFNoYWRvd01hcDp7dmFsdWU6W119LHNwb3RTaGFkb3dNYXRyaXg6e3ZhbHVlOltdfSxwb2ludExpZ2h0czp7dmFsdWU6W10scHJvcGVydGllczp7Y29sb3I6e30scG9zaXRpb246e30sZGVjYXk6e30sZGlzdGFuY2U6e319fSxwb2ludExpZ2h0U2hhZG93czp7dmFsdWU6W10scHJvcGVydGllczp7c2hhZG93Qmlhczp7fSxzaGFkb3dOb3JtYWxCaWFzOnt9LHNoYWRvd1JhZGl1czp7fSxzaGFkb3dNYXBTaXplOnt9LHNoYWRvd0NhbWVyYU5lYXI6e30sc2hhZG93Q2FtZXJhRmFyOnt9fX0scG9pbnRTaGFkb3dNYXA6e3ZhbHVlOltdfSxwb2ludFNoYWRvd01hdHJpeDp7dmFsdWU6W119LGhlbWlzcGhlcmVMaWdodHM6e3ZhbHVlOltdLHByb3BlcnRpZXM6e2RpcmVjdGlvbjp7fSxza3lDb2xvcjp7fSxncm91bmRDb2xvcjp7fX19LHJlY3RBcmVhTGlnaHRzOnt2YWx1ZTpbXSxwcm9wZXJ0aWVzOntjb2xvcjp7fSxwb3NpdGlvbjp7fSx3aWR0aDp7fSxoZWlnaHQ6e319fSxsdGNfMTp7dmFsdWU6bnVsbH0sbHRjXzI6e3ZhbHVlOm51bGx9fSxwb2ludHM6e2RpZmZ1c2U6e3ZhbHVlOm5ldyBzNHQoMTY3NzcyMTUpfSxvcGFjaXR5Ont2YWx1ZToxfSxzaXplOnt2YWx1ZToxfSxzY2FsZTp7dmFsdWU6MX0sbWFwOnt2YWx1ZTpudWxsfSxhbHBoYU1hcDp7dmFsdWU6bnVsbH0sdXZUcmFuc2Zvcm06e3ZhbHVlOm5ldyBBNXR9fSxzcHJpdGU6e2RpZmZ1c2U6e3ZhbHVlOm5ldyBzNHQoMTY3NzcyMTUpfSxvcGFjaXR5Ont2YWx1ZToxfSxjZW50ZXI6e3ZhbHVlOm5ldyBDNXQoLjUsLjUpfSxyb3RhdGlvbjp7dmFsdWU6MH0sbWFwOnt2YWx1ZTpudWxsfSxhbHBoYU1hcDp7dmFsdWU6bnVsbH0sdXZUcmFuc2Zvcm06e3ZhbHVlOm5ldyBBNXR9fX0seDZ0PXtiYXNpYzp7dW5pZm9ybXM6dDZ0KFtiNnQuY29tbW9uLGI2dC5zcGVjdWxhcm1hcCxiNnQuZW52bWFwLGI2dC5hb21hcCxiNnQubGlnaHRtYXAsYjZ0LmZvZ10pLHZlcnRleFNoYWRlcjp2NnQubWVzaGJhc2ljX3ZlcnQsZnJhZ21lbnRTaGFkZXI6djZ0Lm1lc2hiYXNpY19mcmFnfSxsYW1iZXJ0Ont1bmlmb3Jtczp0NnQoW2I2dC5jb21tb24sYjZ0LnNwZWN1bGFybWFwLGI2dC5lbnZtYXAsYjZ0LmFvbWFwLGI2dC5saWdodG1hcCxiNnQuZW1pc3NpdmVtYXAsYjZ0LmZvZyxiNnQubGlnaHRzLHtlbWlzc2l2ZTp7dmFsdWU6bmV3IHM0dCgwKX19XSksdmVydGV4U2hhZGVyOnY2dC5tZXNobGFtYmVydF92ZXJ0LGZyYWdtZW50U2hhZGVyOnY2dC5tZXNobGFtYmVydF9mcmFnfSxwaG9uZzp7dW5pZm9ybXM6dDZ0KFtiNnQuY29tbW9uLGI2dC5zcGVjdWxhcm1hcCxiNnQuZW52bWFwLGI2dC5hb21hcCxiNnQubGlnaHRtYXAsYjZ0LmVtaXNzaXZlbWFwLGI2dC5idW1wbWFwLGI2dC5ub3JtYWxtYXAsYjZ0LmRpc3BsYWNlbWVudG1hcCxiNnQuZm9nLGI2dC5saWdodHMse2VtaXNzaXZlOnt2YWx1ZTpuZXcgczR0KDApfSxzcGVjdWxhcjp7dmFsdWU6bmV3IHM0dCgxMTE4NDgxKX0sc2hpbmluZXNzOnt2YWx1ZTozMH19XSksdmVydGV4U2hhZGVyOnY2dC5tZXNocGhvbmdfdmVydCxmcmFnbWVudFNoYWRlcjp2NnQubWVzaHBob25nX2ZyYWd9LHN0YW5kYXJkOnt1bmlmb3Jtczp0NnQoW2I2dC5jb21tb24sYjZ0LmVudm1hcCxiNnQuYW9tYXAsYjZ0LmxpZ2h0bWFwLGI2dC5lbWlzc2l2ZW1hcCxiNnQuYnVtcG1hcCxiNnQubm9ybWFsbWFwLGI2dC5kaXNwbGFjZW1lbnRtYXAsYjZ0LnJvdWdobmVzc21hcCxiNnQubWV0YWxuZXNzbWFwLGI2dC5mb2csYjZ0LmxpZ2h0cyx7ZW1pc3NpdmU6e3ZhbHVlOm5ldyBzNHQoMCl9LHJvdWdobmVzczp7dmFsdWU6MX0sbWV0YWxuZXNzOnt2YWx1ZTowfSxlbnZNYXBJbnRlbnNpdHk6e3ZhbHVlOjF9fV0pLHZlcnRleFNoYWRlcjp2NnQubWVzaHBoeXNpY2FsX3ZlcnQsZnJhZ21lbnRTaGFkZXI6djZ0Lm1lc2hwaHlzaWNhbF9mcmFnfSx0b29uOnt1bmlmb3Jtczp0NnQoW2I2dC5jb21tb24sYjZ0LmFvbWFwLGI2dC5saWdodG1hcCxiNnQuZW1pc3NpdmVtYXAsYjZ0LmJ1bXBtYXAsYjZ0Lm5vcm1hbG1hcCxiNnQuZGlzcGxhY2VtZW50bWFwLGI2dC5ncmFkaWVudG1hcCxiNnQuZm9nLGI2dC5saWdodHMse2VtaXNzaXZlOnt2YWx1ZTpuZXcgczR0KDApfX1dKSx2ZXJ0ZXhTaGFkZXI6djZ0Lm1lc2h0b29uX3ZlcnQsZnJhZ21lbnRTaGFkZXI6djZ0Lm1lc2h0b29uX2ZyYWd9LG1hdGNhcDp7dW5pZm9ybXM6dDZ0KFtiNnQuY29tbW9uLGI2dC5idW1wbWFwLGI2dC5ub3JtYWxtYXAsYjZ0LmRpc3BsYWNlbWVudG1hcCxiNnQuZm9nLHttYXRjYXA6e3ZhbHVlOm51bGx9fV0pLHZlcnRleFNoYWRlcjp2NnQubWVzaG1hdGNhcF92ZXJ0LGZyYWdtZW50U2hhZGVyOnY2dC5tZXNobWF0Y2FwX2ZyYWd9LHBvaW50czp7dW5pZm9ybXM6dDZ0KFtiNnQucG9pbnRzLGI2dC5mb2ddKSx2ZXJ0ZXhTaGFkZXI6djZ0LnBvaW50c192ZXJ0LGZyYWdtZW50U2hhZGVyOnY2dC5wb2ludHNfZnJhZ30sZGFzaGVkOnt1bmlmb3Jtczp0NnQoW2I2dC5jb21tb24sYjZ0LmZvZyx7c2NhbGU6e3ZhbHVlOjF9LGRhc2hTaXplOnt2YWx1ZToxfSx0b3RhbFNpemU6e3ZhbHVlOjJ9fV0pLHZlcnRleFNoYWRlcjp2NnQubGluZWRhc2hlZF92ZXJ0LGZyYWdtZW50U2hhZGVyOnY2dC5saW5lZGFzaGVkX2ZyYWd9LGRlcHRoOnt1bmlmb3Jtczp0NnQoW2I2dC5jb21tb24sYjZ0LmRpc3BsYWNlbWVudG1hcF0pLHZlcnRleFNoYWRlcjp2NnQuZGVwdGhfdmVydCxmcmFnbWVudFNoYWRlcjp2NnQuZGVwdGhfZnJhZ30sbm9ybWFsOnt1bmlmb3Jtczp0NnQoW2I2dC5jb21tb24sYjZ0LmJ1bXBtYXAsYjZ0Lm5vcm1hbG1hcCxiNnQuZGlzcGxhY2VtZW50bWFwLHtvcGFjaXR5Ont2YWx1ZToxfX1dKSx2ZXJ0ZXhTaGFkZXI6djZ0Lm5vcm1hbF92ZXJ0LGZyYWdtZW50U2hhZGVyOnY2dC5ub3JtYWxfZnJhZ30sc3ByaXRlOnt1bmlmb3Jtczp0NnQoW2I2dC5zcHJpdGUsYjZ0LmZvZ10pLHZlcnRleFNoYWRlcjp2NnQuc3ByaXRlX3ZlcnQsZnJhZ21lbnRTaGFkZXI6djZ0LnNwcml0ZV9mcmFnfSxiYWNrZ3JvdW5kOnt1bmlmb3Jtczp7dXZUcmFuc2Zvcm06e3ZhbHVlOm5ldyBBNXR9LHQyRDp7dmFsdWU6bnVsbH19LHZlcnRleFNoYWRlcjp2NnQuYmFja2dyb3VuZF92ZXJ0LGZyYWdtZW50U2hhZGVyOnY2dC5iYWNrZ3JvdW5kX2ZyYWd9LGN1YmU6e3VuaWZvcm1zOnQ2dChbYjZ0LmVudm1hcCx7b3BhY2l0eTp7dmFsdWU6MX19XSksdmVydGV4U2hhZGVyOnY2dC5jdWJlX3ZlcnQsZnJhZ21lbnRTaGFkZXI6djZ0LmN1YmVfZnJhZ30sZXF1aXJlY3Q6e3VuaWZvcm1zOnt0RXF1aXJlY3Q6e3ZhbHVlOm51bGx9fSx2ZXJ0ZXhTaGFkZXI6djZ0LmVxdWlyZWN0X3ZlcnQsZnJhZ21lbnRTaGFkZXI6djZ0LmVxdWlyZWN0X2ZyYWd9LGRpc3RhbmNlUkdCQTp7dW5pZm9ybXM6dDZ0KFtiNnQuY29tbW9uLGI2dC5kaXNwbGFjZW1lbnRtYXAse3JlZmVyZW5jZVBvc2l0aW9uOnt2YWx1ZTpuZXcgSDV0fSxuZWFyRGlzdGFuY2U6e3ZhbHVlOjF9LGZhckRpc3RhbmNlOnt2YWx1ZToxZTN9fV0pLHZlcnRleFNoYWRlcjp2NnQuZGlzdGFuY2VSR0JBX3ZlcnQsZnJhZ21lbnRTaGFkZXI6djZ0LmRpc3RhbmNlUkdCQV9mcmFnfSxzaGFkb3c6e3VuaWZvcm1zOnQ2dChbYjZ0LmxpZ2h0cyxiNnQuZm9nLHtjb2xvcjp7dmFsdWU6bmV3IHM0dCgwKX0sb3BhY2l0eTp7dmFsdWU6MX19XSksdmVydGV4U2hhZGVyOnY2dC5zaGFkb3dfdmVydCxmcmFnbWVudFNoYWRlcjp2NnQuc2hhZG93X2ZyYWd9fTtmdW5jdGlvbiB3NnQodCxlLG4saSxyKXtjb25zdCBvPW5ldyBzNHQoMCk7bGV0IGEscyxsPTAsYz1udWxsLHU9MCxoPW51bGw7ZnVuY3Rpb24gZCh0LGUpe24uYnVmZmVycy5jb2xvci5zZXRDbGVhcih0LnIsdC5nLHQuYixlLHIpfXJldHVybntnZXRDbGVhckNvbG9yOmZ1bmN0aW9uKCl7cmV0dXJuIG99LHNldENsZWFyQ29sb3I6ZnVuY3Rpb24odCxlPTEpe28uc2V0KHQpLGw9ZSxkKG8sbCl9LGdldENsZWFyQWxwaGE6ZnVuY3Rpb24oKXtyZXR1cm4gbH0sc2V0Q2xlYXJBbHBoYTpmdW5jdGlvbih0KXtsPXQsZChvLGwpfSxyZW5kZXI6ZnVuY3Rpb24gcChuLHIpe2xldCBwPSExLGY9ITA9PT1yLmlzU2NlbmU/ci5iYWNrZ3JvdW5kOm51bGw7ZiYmZi5pc1RleHR1cmUmJihmPWUuZ2V0KGYpKTtjb25zdCBtPXQueHIsZz1tLmdldFNlc3Npb24mJm0uZ2V0U2Vzc2lvbigpO2cmJiJhZGRpdGl2ZSI9PT1nLmVudmlyb25tZW50QmxlbmRNb2RlJiYoZj1udWxsKSxudWxsPT09Zj9kKG8sbCk6ZiYmZi5pc0NvbG9yJiYoZChmLDEpLHA9ITApLCh0LmF1dG9DbGVhcnx8cCkmJnQuY2xlYXIodC5hdXRvQ2xlYXJDb2xvcix0LmF1dG9DbGVhckRlcHRoLHQuYXV0b0NsZWFyU3RlbmNpbCksZiYmKGYuaXNDdWJlVGV4dHVyZXx8Zi5tYXBwaW5nPT09bzJ0KT8odm9pZCAwPT09cyYmKHM9bmV3IEs0dChuZXcgSjR0KDEsMSwxKSxuZXcgbjZ0KHtuYW1lOiJCYWNrZ3JvdW5kQ3ViZU1hdGVyaWFsIix1bmlmb3JtczpRNHQoeDZ0LmN1YmUudW5pZm9ybXMpLHZlcnRleFNoYWRlcjp4NnQuY3ViZS52ZXJ0ZXhTaGFkZXIsZnJhZ21lbnRTaGFkZXI6eDZ0LmN1YmUuZnJhZ21lbnRTaGFkZXIsc2lkZToxLGRlcHRoVGVzdDohMSxkZXB0aFdyaXRlOiExLGZvZzohMX0pKSxzLmdlb21ldHJ5LmRlbGV0ZUF0dHJpYnV0ZSgibm9ybWFsIikscy5nZW9tZXRyeS5kZWxldGVBdHRyaWJ1dGUoInV2Iikscy5vbkJlZm9yZVJlbmRlcj1mdW5jdGlvbih0LGUsbil7dGhpcy5tYXRyaXhXb3JsZC5jb3B5UG9zaXRpb24obi5tYXRyaXhXb3JsZCl9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShzLm1hdGVyaWFsLCJlbnZNYXAiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy51bmlmb3Jtcy5lbnZNYXAudmFsdWV9fSksaS51cGRhdGUocykpLHMubWF0ZXJpYWwudW5pZm9ybXMuZW52TWFwLnZhbHVlPWYscy5tYXRlcmlhbC51bmlmb3Jtcy5mbGlwRW52TWFwLnZhbHVlPWYuaXNDdWJlVGV4dHVyZSYmITE9PT1mLmlzUmVuZGVyVGFyZ2V0VGV4dHVyZT8tMToxLGM9PT1mJiZ1PT09Zi52ZXJzaW9uJiZoPT09dC50b25lTWFwcGluZ3x8KHMubWF0ZXJpYWwubmVlZHNVcGRhdGU9ITAsYz1mLHU9Zi52ZXJzaW9uLGg9dC50b25lTWFwcGluZyksbi51bnNoaWZ0KHMscy5nZW9tZXRyeSxzLm1hdGVyaWFsLDAsMCxudWxsKSk6ZiYmZi5pc1RleHR1cmUmJih2b2lkIDA9PT1hJiYoYT1uZXcgSzR0KG5ldyB5NnQoMiwyKSxuZXcgbjZ0KHtuYW1lOiJCYWNrZ3JvdW5kTWF0ZXJpYWwiLHVuaWZvcm1zOlE0dCh4NnQuYmFja2dyb3VuZC51bmlmb3JtcyksdmVydGV4U2hhZGVyOng2dC5iYWNrZ3JvdW5kLnZlcnRleFNoYWRlcixmcmFnbWVudFNoYWRlcjp4NnQuYmFja2dyb3VuZC5mcmFnbWVudFNoYWRlcixzaWRlOjAsZGVwdGhUZXN0OiExLGRlcHRoV3JpdGU6ITEsZm9nOiExfSkpLGEuZ2VvbWV0cnkuZGVsZXRlQXR0cmlidXRlKCJub3JtYWwiKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoYS5tYXRlcmlhbCwibWFwIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudW5pZm9ybXMudDJELnZhbHVlfX0pLGkudXBkYXRlKGEpKSxhLm1hdGVyaWFsLnVuaWZvcm1zLnQyRC52YWx1ZT1mLCEwPT09Zi5tYXRyaXhBdXRvVXBkYXRlJiZmLnVwZGF0ZU1hdHJpeCgpLGEubWF0ZXJpYWwudW5pZm9ybXMudXZUcmFuc2Zvcm0udmFsdWUuY29weShmLm1hdHJpeCksYz09PWYmJnU9PT1mLnZlcnNpb24mJmg9PT10LnRvbmVNYXBwaW5nfHwoYS5tYXRlcmlhbC5uZWVkc1VwZGF0ZT0hMCxjPWYsdT1mLnZlcnNpb24saD10LnRvbmVNYXBwaW5nKSxuLnVuc2hpZnQoYSxhLmdlb21ldHJ5LGEubWF0ZXJpYWwsMCwwLG51bGwpKX19fWZ1bmN0aW9uIFM2dCh0LGUsbixpKXtjb25zdCByPXQuZ2V0UGFyYW1ldGVyKDM0OTIxKSxvPWkuaXNXZWJHTDI/bnVsbDplLmdldCgiT0VTX3ZlcnRleF9hcnJheV9vYmplY3QiKSxhPWkuaXNXZWJHTDJ8fG51bGwhPT1vLHM9e30sbD1kKG51bGwpO2xldCBjPWw7ZnVuY3Rpb24gdShlKXtyZXR1cm4gaS5pc1dlYkdMMj90LmJpbmRWZXJ0ZXhBcnJheShlKTpvLmJpbmRWZXJ0ZXhBcnJheU9FUyhlKX1mdW5jdGlvbiBoKGUpe3JldHVybiBpLmlzV2ViR0wyP3QuZGVsZXRlVmVydGV4QXJyYXkoZSk6by5kZWxldGVWZXJ0ZXhBcnJheU9FUyhlKX1mdW5jdGlvbiBkKHQpe2NvbnN0IGU9W10sbj1bXSxpPVtdO2ZvcihsZXQgdD0wO3Q8cjt0KyspZVt0XT0wLG5bdF09MCxpW3RdPTA7cmV0dXJue2dlb21ldHJ5Om51bGwscHJvZ3JhbTpudWxsLHdpcmVmcmFtZTohMSxuZXdBdHRyaWJ1dGVzOmUsZW5hYmxlZEF0dHJpYnV0ZXM6bixhdHRyaWJ1dGVEaXZpc29yczppLG9iamVjdDp0LGF0dHJpYnV0ZXM6e30saW5kZXg6bnVsbH19ZnVuY3Rpb24gcCgpe2NvbnN0IHQ9Yy5uZXdBdHRyaWJ1dGVzO2ZvcihsZXQgZT0wLG49dC5sZW5ndGg7ZTxuO2UrKyl0W2VdPTB9ZnVuY3Rpb24gZih0KXttKHQsMCl9ZnVuY3Rpb24gbShuLHIpe2NvbnN0IG89Yy5lbmFibGVkQXR0cmlidXRlcyxhPWMuYXR0cmlidXRlRGl2aXNvcnM7aWYoYy5uZXdBdHRyaWJ1dGVzW25dPTEsMD09PW9bbl0mJih0LmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KG4pLG9bbl09MSksYVtuXSE9PXIpeyhpLmlzV2ViR0wyP3Q6ZS5nZXQoIkFOR0xFX2luc3RhbmNlZF9hcnJheXMiKSlbaS5pc1dlYkdMMj8idmVydGV4QXR0cmliRGl2aXNvciI6InZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRSJdKG4sciksYVtuXT1yfX1mdW5jdGlvbiBnKCl7Y29uc3QgZT1jLm5ld0F0dHJpYnV0ZXMsbj1jLmVuYWJsZWRBdHRyaWJ1dGVzO2ZvcihsZXQgaT0wLHI9bi5sZW5ndGg7aTxyO2krKyluW2ldIT09ZVtpXSYmKHQuZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KGkpLG5baV09MCl9ZnVuY3Rpb24gXyhlLG4scixvLGEscyl7ITAhPT1pLmlzV2ViR0wyfHw1MTI0IT09ciYmNTEyNSE9PXI/dC52ZXJ0ZXhBdHRyaWJQb2ludGVyKGUsbixyLG8sYSxzKTp0LnZlcnRleEF0dHJpYklQb2ludGVyKGUsbixyLGEscyl9ZnVuY3Rpb24geSgpe3YoKSxjIT09bCYmKGM9bCx1KGMub2JqZWN0KSl9ZnVuY3Rpb24gdigpe2wuZ2VvbWV0cnk9bnVsbCxsLnByb2dyYW09bnVsbCxsLndpcmVmcmFtZT0hMX1yZXR1cm57c2V0dXA6ZnVuY3Rpb24gYihyLGwsaCx5LHYpe2xldCBiPSExO2lmKGEpe2NvbnN0IGU9KGZ1bmN0aW9uIHgoZSxuLHIpe2NvbnN0IGE9ITA9PT1yLndpcmVmcmFtZTtsZXQgbD1zW2UuaWRdO3ZvaWQgMD09PWwmJihsPXt9LHNbZS5pZF09bCk7bGV0IGM9bFtuLmlkXTt2b2lkIDA9PT1jJiYoYz17fSxsW24uaWRdPWMpO2xldCB1PWNbYV07dm9pZCAwPT09dSYmKHU9ZCgoZnVuY3Rpb24gaCgpe3JldHVybiBpLmlzV2ViR0wyP3QuY3JlYXRlVmVydGV4QXJyYXkoKTpvLmNyZWF0ZVZlcnRleEFycmF5T0VTKCl9KSgpKSxjW2FdPXUpO3JldHVybiB1fSkoeSxoLGwpO2MhPT1lJiYoYz1lLHUoYy5vYmplY3QpKSxiPShmdW5jdGlvbiB3KHQsZSl7Y29uc3Qgbj1jLmF0dHJpYnV0ZXMsaT10LmF0dHJpYnV0ZXM7bGV0IHI9MDtmb3IoY29uc3QgdCBpbiBpKXtjb25zdCBlPW5bdF0sbz1pW3RdO2lmKHZvaWQgMD09PWUpcmV0dXJuITA7aWYoZS5hdHRyaWJ1dGUhPT1vKXJldHVybiEwO2lmKGUuZGF0YSE9PW8uZGF0YSlyZXR1cm4hMDtyKyt9cmV0dXJuIGMuYXR0cmlidXRlc051bSE9PXJ8fGMuaW5kZXghPT1lfSkoeSx2KSxiJiYoZnVuY3Rpb24gUyh0LGUpe2NvbnN0IG49e30saT10LmF0dHJpYnV0ZXM7bGV0IHI9MDtmb3IoY29uc3QgdCBpbiBpKXtjb25zdCBlPWlbdF0sbz17fTtvLmF0dHJpYnV0ZT1lLGUuZGF0YSYmKG8uZGF0YT1lLmRhdGEpLG5bdF09byxyKyt9Yy5hdHRyaWJ1dGVzPW4sYy5hdHRyaWJ1dGVzTnVtPXIsYy5pbmRleD1lfSkoeSx2KX1lbHNle2NvbnN0IHQ9ITA9PT1sLndpcmVmcmFtZTtjLmdlb21ldHJ5PT09eS5pZCYmYy5wcm9ncmFtPT09aC5pZCYmYy53aXJlZnJhbWU9PT10fHwoYy5nZW9tZXRyeT15LmlkLGMucHJvZ3JhbT1oLmlkLGMud2lyZWZyYW1lPXQsYj0hMCl9ITA9PT1yLmlzSW5zdGFuY2VkTWVzaCYmKGI9ITApLG51bGwhPT12JiZuLnVwZGF0ZSh2LDM0OTYzKSxiJiYoIShmdW5jdGlvbiBNKHIsbyxhLHMpe2lmKCExPT09aS5pc1dlYkdMMiYmKHIuaXNJbnN0YW5jZWRNZXNofHxzLmlzSW5zdGFuY2VkQnVmZmVyR2VvbWV0cnkpJiZudWxsPT09ZS5nZXQoIkFOR0xFX2luc3RhbmNlZF9hcnJheXMiKSlyZXR1cm47cCgpO2NvbnN0IGw9cy5hdHRyaWJ1dGVzLGM9YS5nZXRBdHRyaWJ1dGVzKCksdT1vLmRlZmF1bHRBdHRyaWJ1dGVWYWx1ZXM7Zm9yKGNvbnN0IGUgaW4gYyl7Y29uc3QgaT1jW2VdO2lmKGk+PTApe2NvbnN0IG89bFtlXTtpZih2b2lkIDAhPT1vKXtjb25zdCBlPW8ubm9ybWFsaXplZCxyPW8uaXRlbVNpemUsYT1uLmdldChvKTtpZih2b2lkIDA9PT1hKWNvbnRpbnVlO2NvbnN0IGw9YS5idWZmZXIsYz1hLnR5cGUsdT1hLmJ5dGVzUGVyRWxlbWVudDtpZihvLmlzSW50ZXJsZWF2ZWRCdWZmZXJBdHRyaWJ1dGUpe2NvbnN0IG49by5kYXRhLGE9bi5zdHJpZGUsaD1vLm9mZnNldDtuJiZuLmlzSW5zdGFuY2VkSW50ZXJsZWF2ZWRCdWZmZXI/KG0oaSxuLm1lc2hQZXJBdHRyaWJ1dGUpLHZvaWQgMD09PXMuX21heEluc3RhbmNlQ291bnQmJihzLl9tYXhJbnN0YW5jZUNvdW50PW4ubWVzaFBlckF0dHJpYnV0ZSpuLmNvdW50KSk6ZihpKSx0LmJpbmRCdWZmZXIoMzQ5NjIsbCksXyhpLHIsYyxlLGEqdSxoKnUpfWVsc2Ugby5pc0luc3RhbmNlZEJ1ZmZlckF0dHJpYnV0ZT8obShpLG8ubWVzaFBlckF0dHJpYnV0ZSksdm9pZCAwPT09cy5fbWF4SW5zdGFuY2VDb3VudCYmKHMuX21heEluc3RhbmNlQ291bnQ9by5tZXNoUGVyQXR0cmlidXRlKm8uY291bnQpKTpmKGkpLHQuYmluZEJ1ZmZlcigzNDk2MixsKSxfKGkscixjLGUsMCwwKX1lbHNlIGlmKCJpbnN0YW5jZU1hdHJpeCI9PT1lKXtjb25zdCBlPW4uZ2V0KHIuaW5zdGFuY2VNYXRyaXgpO2lmKHZvaWQgMD09PWUpY29udGludWU7Y29uc3Qgbz1lLmJ1ZmZlcixhPWUudHlwZTttKGkrMCwxKSxtKGkrMSwxKSxtKGkrMiwxKSxtKGkrMywxKSx0LmJpbmRCdWZmZXIoMzQ5NjIsbyksdC52ZXJ0ZXhBdHRyaWJQb2ludGVyKGkrMCw0LGEsITEsNjQsMCksdC52ZXJ0ZXhBdHRyaWJQb2ludGVyKGkrMSw0LGEsITEsNjQsMTYpLHQudmVydGV4QXR0cmliUG9pbnRlcihpKzIsNCxhLCExLDY0LDMyKSx0LnZlcnRleEF0dHJpYlBvaW50ZXIoaSszLDQsYSwhMSw2NCw0OCl9ZWxzZSBpZigiaW5zdGFuY2VDb2xvciI9PT1lKXtjb25zdCBlPW4uZ2V0KHIuaW5zdGFuY2VDb2xvcik7aWYodm9pZCAwPT09ZSljb250aW51ZTtjb25zdCBvPWUuYnVmZmVyLGE9ZS50eXBlO20oaSwxKSx0LmJpbmRCdWZmZXIoMzQ5NjIsbyksdC52ZXJ0ZXhBdHRyaWJQb2ludGVyKGksMyxhLCExLDEyLDApfWVsc2UgaWYodm9pZCAwIT09dSl7Y29uc3Qgbj11W2VdO2lmKHZvaWQgMCE9PW4pc3dpdGNoKG4ubGVuZ3RoKXtjYXNlIDI6dC52ZXJ0ZXhBdHRyaWIyZnYoaSxuKTticmVhaztjYXNlIDM6dC52ZXJ0ZXhBdHRyaWIzZnYoaSxuKTticmVhaztjYXNlIDQ6dC52ZXJ0ZXhBdHRyaWI0ZnYoaSxuKTticmVhaztkZWZhdWx0OnQudmVydGV4QXR0cmliMWZ2KGksbil9fX19ZygpfSkocixsLGgseSksbnVsbCE9PXYmJnQuYmluZEJ1ZmZlcigzNDk2MyxuLmdldCh2KS5idWZmZXIpKX0scmVzZXQ6eSxyZXNldERlZmF1bHRTdGF0ZTp2LGRpc3Bvc2U6ZnVuY3Rpb24geCgpe3koKTtmb3IoY29uc3QgdCBpbiBzKXtjb25zdCBlPXNbdF07Zm9yKGNvbnN0IHQgaW4gZSl7Y29uc3Qgbj1lW3RdO2Zvcihjb25zdCB0IGluIG4paChuW3RdLm9iamVjdCksZGVsZXRlIG5bdF07ZGVsZXRlIGVbdF19ZGVsZXRlIHNbdF19fSxyZWxlYXNlU3RhdGVzT2ZHZW9tZXRyeTpmdW5jdGlvbiB3KHQpe2lmKHZvaWQgMD09PXNbdC5pZF0pcmV0dXJuO2NvbnN0IGU9c1t0LmlkXTtmb3IoY29uc3QgdCBpbiBlKXtjb25zdCBuPWVbdF07Zm9yKGNvbnN0IHQgaW4gbiloKG5bdF0ub2JqZWN0KSxkZWxldGUgblt0XTtkZWxldGUgZVt0XX1kZWxldGUgc1t0LmlkXX0scmVsZWFzZVN0YXRlc09mUHJvZ3JhbTpmdW5jdGlvbiBTKHQpe2Zvcihjb25zdCBlIGluIHMpe2NvbnN0IG49c1tlXTtpZih2b2lkIDA9PT1uW3QuaWRdKWNvbnRpbnVlO2NvbnN0IGk9blt0LmlkXTtmb3IoY29uc3QgdCBpbiBpKWgoaVt0XS5vYmplY3QpLGRlbGV0ZSBpW3RdO2RlbGV0ZSBuW3QuaWRdfX0saW5pdEF0dHJpYnV0ZXM6cCxlbmFibGVBdHRyaWJ1dGU6ZixkaXNhYmxlVW51c2VkQXR0cmlidXRlczpnfX1mdW5jdGlvbiBNNnQodCxlLG4saSl7Y29uc3Qgcj1pLmlzV2ViR0wyO2xldCBvO3RoaXMuc2V0TW9kZT1mdW5jdGlvbiBhKHQpe289dH0sdGhpcy5yZW5kZXI9ZnVuY3Rpb24gcyhlLGkpe3QuZHJhd0FycmF5cyhvLGUsaSksbi51cGRhdGUoaSxvLDEpfSx0aGlzLnJlbmRlckluc3RhbmNlcz1mdW5jdGlvbiBsKGksYSxzKXtpZigwPT09cylyZXR1cm47bGV0IGwsYztpZihyKWw9dCxjPSJkcmF3QXJyYXlzSW5zdGFuY2VkIjtlbHNlIGlmKGw9ZS5nZXQoIkFOR0xFX2luc3RhbmNlZF9hcnJheXMiKSxjPSJkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUiLG51bGw9PT1sKXJldHVybiB2b2lkIGNvbnNvbGUuZXJyb3IoIlRIUkVFLldlYkdMQnVmZmVyUmVuZGVyZXI6IHVzaW5nIFRIUkVFLkluc3RhbmNlZEJ1ZmZlckdlb21ldHJ5IGJ1dCBoYXJkd2FyZSBkb2VzIG5vdCBzdXBwb3J0IGV4dGVuc2lvbiBBTkdMRV9pbnN0YW5jZWRfYXJyYXlzLiIpO2xbY10obyxpLGEscyksbi51cGRhdGUoYSxvLHMpfX1mdW5jdGlvbiBFNnQodCxlLG4pe2xldCBpO2Z1bmN0aW9uIHIoZSl7aWYoImhpZ2hwIj09PWUpe2lmKHQuZ2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KDM1NjMzLDM2MzM4KS5wcmVjaXNpb24+MCYmdC5nZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQoMzU2MzIsMzYzMzgpLnByZWNpc2lvbj4wKXJldHVybiJoaWdocCI7ZT0ibWVkaXVtcCJ9cmV0dXJuIm1lZGl1bXAiPT09ZSYmdC5nZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQoMzU2MzMsMzYzMzcpLnByZWNpc2lvbj4wJiZ0LmdldFNoYWRlclByZWNpc2lvbkZvcm1hdCgzNTYzMiwzNjMzNykucHJlY2lzaW9uPjA/Im1lZGl1bXAiOiJsb3dwIn1jb25zdCBvPSJ1bmRlZmluZWQiIT10eXBlb2YgV2ViR0wyUmVuZGVyaW5nQ29udGV4dCYmdCBpbnN0YW5jZW9mIFdlYkdMMlJlbmRlcmluZ0NvbnRleHR8fCJ1bmRlZmluZWQiIT10eXBlb2YgV2ViR0wyQ29tcHV0ZVJlbmRlcmluZ0NvbnRleHQmJnQgaW5zdGFuY2VvZiBXZWJHTDJDb21wdXRlUmVuZGVyaW5nQ29udGV4dDtsZXQgYT12b2lkIDAhPT1uLnByZWNpc2lvbj9uLnByZWNpc2lvbjoiaGlnaHAiO2NvbnN0IHM9cihhKTtzIT09YSYmKGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjoiLGEsIm5vdCBzdXBwb3J0ZWQsIHVzaW5nIixzLCJpbnN0ZWFkLiIpLGE9cyk7Y29uc3QgbD1vfHxlLmhhcygiV0VCR0xfZHJhd19idWZmZXJzIiksYz0hMD09PW4ubG9nYXJpdGhtaWNEZXB0aEJ1ZmZlcix1PXQuZ2V0UGFyYW1ldGVyKDM0OTMwKSxoPXQuZ2V0UGFyYW1ldGVyKDM1NjYwKSxkPXQuZ2V0UGFyYW1ldGVyKDMzNzkpLHA9dC5nZXRQYXJhbWV0ZXIoMzQwNzYpLGY9dC5nZXRQYXJhbWV0ZXIoMzQ5MjEpLG09dC5nZXRQYXJhbWV0ZXIoMzYzNDcpLGc9dC5nZXRQYXJhbWV0ZXIoMzYzNDgpLF89dC5nZXRQYXJhbWV0ZXIoMzYzNDkpLHk9aD4wLHY9b3x8ZS5oYXMoIk9FU190ZXh0dXJlX2Zsb2F0Iik7cmV0dXJue2lzV2ViR0wyOm8sZHJhd0J1ZmZlcnM6bCxnZXRNYXhBbmlzb3Ryb3B5OmZ1bmN0aW9uIGIoKXtpZih2b2lkIDAhPT1pKXJldHVybiBpO2lmKCEwPT09ZS5oYXMoIkVYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyIpKXtjb25zdCBuPWUuZ2V0KCJFWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMiKTtpPXQuZ2V0UGFyYW1ldGVyKG4uTUFYX1RFWFRVUkVfTUFYX0FOSVNPVFJPUFlfRVhUKX1lbHNlIGk9MDtyZXR1cm4gaX0sZ2V0TWF4UHJlY2lzaW9uOnIscHJlY2lzaW9uOmEsbG9nYXJpdGhtaWNEZXB0aEJ1ZmZlcjpjLG1heFRleHR1cmVzOnUsbWF4VmVydGV4VGV4dHVyZXM6aCxtYXhUZXh0dXJlU2l6ZTpkLG1heEN1YmVtYXBTaXplOnAsbWF4QXR0cmlidXRlczpmLG1heFZlcnRleFVuaWZvcm1zOm0sbWF4VmFyeWluZ3M6ZyxtYXhGcmFnbWVudFVuaWZvcm1zOl8sdmVydGV4VGV4dHVyZXM6eSxmbG9hdEZyYWdtZW50VGV4dHVyZXM6dixmbG9hdFZlcnRleFRleHR1cmVzOnkmJnYsbWF4U2FtcGxlczpvP3QuZ2V0UGFyYW1ldGVyKDM2MTgzKTowfX1mdW5jdGlvbiBUNnQodCl7Y29uc3QgZT10aGlzO2xldCBuPW51bGwsaT0wLHI9ITEsbz0hMTtjb25zdCBhPW5ldyBkNnQscz1uZXcgQTV0LGw9e3ZhbHVlOm51bGwsbmVlZHNVcGRhdGU6ITF9O2Z1bmN0aW9uIGMoKXtsLnZhbHVlIT09biYmKGwudmFsdWU9bixsLm5lZWRzVXBkYXRlPWk+MCksZS5udW1QbGFuZXM9aSxlLm51bUludGVyc2VjdGlvbj0wfWZ1bmN0aW9uIHUodCxuLGkscil7Y29uc3Qgbz1udWxsIT09dD90Lmxlbmd0aDowO2xldCBjPW51bGw7aWYoMCE9PW8pe2lmKGM9bC52YWx1ZSwhMCE9PXJ8fG51bGw9PT1jKXtjb25zdCBlPWkrNCpvLHI9bi5tYXRyaXhXb3JsZEludmVyc2U7cy5nZXROb3JtYWxNYXRyaXgociksKG51bGw9PT1jfHxjLmxlbmd0aDxlKSYmKGM9bmV3IEZsb2F0MzJBcnJheShlKSk7Zm9yKGxldCBlPTAsbj1pO2UhPT1vOysrZSxuKz00KWEuY29weSh0W2VdKS5hcHBseU1hdHJpeDQocixzKSxhLm5vcm1hbC50b0FycmF5KGMsbiksY1tuKzNdPWEuY29uc3RhbnR9bC52YWx1ZT1jLGwubmVlZHNVcGRhdGU9ITB9cmV0dXJuIGUubnVtUGxhbmVzPW8sZS5udW1JbnRlcnNlY3Rpb249MCxjfXRoaXMudW5pZm9ybT1sLHRoaXMubnVtUGxhbmVzPTAsdGhpcy5udW1JbnRlcnNlY3Rpb249MCx0aGlzLmluaXQ9ZnVuY3Rpb24odCxlLG8pe2NvbnN0IGE9MCE9PXQubGVuZ3RofHxlfHwwIT09aXx8cjtyZXR1cm4gcj1lLG49dSh0LG8sMCksaT10Lmxlbmd0aCxhfSx0aGlzLmJlZ2luU2hhZG93cz1mdW5jdGlvbigpe289ITAsdShudWxsKX0sdGhpcy5lbmRTaGFkb3dzPWZ1bmN0aW9uKCl7bz0hMSxjKCl9LHRoaXMuc2V0U3RhdGU9ZnVuY3Rpb24oZSxhLHMpe2NvbnN0IGg9ZS5jbGlwcGluZ1BsYW5lcyxkPWUuY2xpcEludGVyc2VjdGlvbixwPWUuY2xpcFNoYWRvd3MsZj10LmdldChlKTtpZighcnx8bnVsbD09PWh8fDA9PT1oLmxlbmd0aHx8byYmIXApbz91KG51bGwpOmMoKTtlbHNle2NvbnN0IHQ9bz8wOmksZT00KnQ7bGV0IHI9Zi5jbGlwcGluZ1N0YXRlfHxudWxsO2wudmFsdWU9cixyPXUoaCxhLGUscyk7Zm9yKGxldCB0PTA7dCE9PWU7Kyt0KXJbdF09blt0XTtmLmNsaXBwaW5nU3RhdGU9cix0aGlzLm51bUludGVyc2VjdGlvbj1kP3RoaXMubnVtUGxhbmVzOjAsdGhpcy5udW1QbGFuZXMrPXR9fX1mdW5jdGlvbiBDNnQodCl7bGV0IGU9bmV3IFdlYWtNYXA7ZnVuY3Rpb24gbih0LGUpe3JldHVybiBlPT09aTJ0P3QubWFwcGluZz1lMnQ6ZT09PXIydCYmKHQubWFwcGluZz1uMnQpLHR9ZnVuY3Rpb24gaSh0KXtjb25zdCBuPXQudGFyZ2V0O24ucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZGlzcG9zZSIsaSk7Y29uc3Qgcj1lLmdldChuKTt2b2lkIDAhPT1yJiYoZS5kZWxldGUobiksci5kaXNwb3NlKCkpfXJldHVybntnZXQ6ZnVuY3Rpb24gcihvKXtpZihvJiZvLmlzVGV4dHVyZSYmITE9PT1vLmlzUmVuZGVyVGFyZ2V0VGV4dHVyZSl7Y29uc3Qgcj1vLm1hcHBpbmc7aWYocj09PWkydHx8cj09PXIydCl7aWYoZS5oYXMobykpe3JldHVybiBuKGUuZ2V0KG8pLnRleHR1cmUsby5tYXBwaW5nKX17Y29uc3Qgcj1vLmltYWdlO2lmKHImJnIuaGVpZ2h0PjApe2NvbnN0IGE9dC5nZXRSZW5kZXJUYXJnZXQoKSxzPW5ldyBsNnQoci5oZWlnaHQvMik7cmV0dXJuIHMuZnJvbUVxdWlyZWN0YW5ndWxhclRleHR1cmUodCxvKSxlLnNldChvLHMpLHQuc2V0UmVuZGVyVGFyZ2V0KGEpLG8uYWRkRXZlbnRMaXN0ZW5lcigiZGlzcG9zZSIsaSksbihzLnRleHR1cmUsby5tYXBwaW5nKX1yZXR1cm4gbnVsbH19fXJldHVybiBvfSxkaXNwb3NlOmZ1bmN0aW9uIG8oKXtlPW5ldyBXZWFrTWFwfX19eDZ0LnBoeXNpY2FsPXt1bmlmb3Jtczp0NnQoW3g2dC5zdGFuZGFyZC51bmlmb3Jtcyx7Y2xlYXJjb2F0Ont2YWx1ZTowfSxjbGVhcmNvYXRNYXA6e3ZhbHVlOm51bGx9LGNsZWFyY29hdFJvdWdobmVzczp7dmFsdWU6MH0sY2xlYXJjb2F0Um91Z2huZXNzTWFwOnt2YWx1ZTpudWxsfSxjbGVhcmNvYXROb3JtYWxTY2FsZTp7dmFsdWU6bmV3IEM1dCgxLDEpfSxjbGVhcmNvYXROb3JtYWxNYXA6e3ZhbHVlOm51bGx9LHNoZWVuOnt2YWx1ZTpuZXcgczR0KDApfSx0cmFuc21pc3Npb246e3ZhbHVlOjB9LHRyYW5zbWlzc2lvbk1hcDp7dmFsdWU6bnVsbH0sdHJhbnNtaXNzaW9uU2FtcGxlclNpemU6e3ZhbHVlOm5ldyBDNXR9LHRyYW5zbWlzc2lvblNhbXBsZXJNYXA6e3ZhbHVlOm51bGx9LHRoaWNrbmVzczp7dmFsdWU6MH0sdGhpY2tuZXNzTWFwOnt2YWx1ZTpudWxsfSxhdHRlbnVhdGlvbkRpc3RhbmNlOnt2YWx1ZTowfSxhdHRlbnVhdGlvblRpbnQ6e3ZhbHVlOm5ldyBzNHQoMCl9LHNwZWN1bGFySW50ZW5zaXR5Ont2YWx1ZTowfSxzcGVjdWxhckludGVuc2l0eU1hcDp7dmFsdWU6bnVsbH0sc3BlY3VsYXJUaW50Ont2YWx1ZTpuZXcgczR0KDEsMSwxKX0sc3BlY3VsYXJUaW50TWFwOnt2YWx1ZTpudWxsfX1dKSx2ZXJ0ZXhTaGFkZXI6djZ0Lm1lc2hwaHlzaWNhbF92ZXJ0LGZyYWdtZW50U2hhZGVyOnY2dC5tZXNocGh5c2ljYWxfZnJhZ307Y2xhc3MgQTZ0IGV4dGVuZHMgaTZ0e2NvbnN0cnVjdG9yKHQ9LTEsZT0xLG49MSxpPS0xLHI9LjEsbz0yZTMpe3N1cGVyKCksdGhpcy50eXBlPSJPcnRob2dyYXBoaWNDYW1lcmEiLHRoaXMuem9vbT0xLHRoaXMudmlldz1udWxsLHRoaXMubGVmdD10LHRoaXMucmlnaHQ9ZSx0aGlzLnRvcD1uLHRoaXMuYm90dG9tPWksdGhpcy5uZWFyPXIsdGhpcy5mYXI9byx0aGlzLnVwZGF0ZVByb2plY3Rpb25NYXRyaXgoKX1jb3B5KHQsZSl7cmV0dXJuIHN1cGVyLmNvcHkodCxlKSx0aGlzLmxlZnQ9dC5sZWZ0LHRoaXMucmlnaHQ9dC5yaWdodCx0aGlzLnRvcD10LnRvcCx0aGlzLmJvdHRvbT10LmJvdHRvbSx0aGlzLm5lYXI9dC5uZWFyLHRoaXMuZmFyPXQuZmFyLHRoaXMuem9vbT10Lnpvb20sdGhpcy52aWV3PW51bGw9PT10LnZpZXc/bnVsbDpPYmplY3QuYXNzaWduKHt9LHQudmlldyksdGhpc31zZXRWaWV3T2Zmc2V0KHQsZSxuLGkscixvKXtudWxsPT09dGhpcy52aWV3JiYodGhpcy52aWV3PXtlbmFibGVkOiEwLGZ1bGxXaWR0aDoxLGZ1bGxIZWlnaHQ6MSxvZmZzZXRYOjAsb2Zmc2V0WTowLHdpZHRoOjEsaGVpZ2h0OjF9KSx0aGlzLnZpZXcuZW5hYmxlZD0hMCx0aGlzLnZpZXcuZnVsbFdpZHRoPXQsdGhpcy52aWV3LmZ1bGxIZWlnaHQ9ZSx0aGlzLnZpZXcub2Zmc2V0WD1uLHRoaXMudmlldy5vZmZzZXRZPWksdGhpcy52aWV3LndpZHRoPXIsdGhpcy52aWV3LmhlaWdodD1vLHRoaXMudXBkYXRlUHJvamVjdGlvbk1hdHJpeCgpfWNsZWFyVmlld09mZnNldCgpe251bGwhPT10aGlzLnZpZXcmJih0aGlzLnZpZXcuZW5hYmxlZD0hMSksdGhpcy51cGRhdGVQcm9qZWN0aW9uTWF0cml4KCl9dXBkYXRlUHJvamVjdGlvbk1hdHJpeCgpe2NvbnN0IHQ9KHRoaXMucmlnaHQtdGhpcy5sZWZ0KS8oMip0aGlzLnpvb20pLGU9KHRoaXMudG9wLXRoaXMuYm90dG9tKS8oMip0aGlzLnpvb20pLG49KHRoaXMucmlnaHQrdGhpcy5sZWZ0KS8yLGk9KHRoaXMudG9wK3RoaXMuYm90dG9tKS8yO2xldCByPW4tdCxvPW4rdCxhPWkrZSxzPWktZTtpZihudWxsIT09dGhpcy52aWV3JiZ0aGlzLnZpZXcuZW5hYmxlZCl7Y29uc3QgdD0odGhpcy5yaWdodC10aGlzLmxlZnQpL3RoaXMudmlldy5mdWxsV2lkdGgvdGhpcy56b29tLGU9KHRoaXMudG9wLXRoaXMuYm90dG9tKS90aGlzLnZpZXcuZnVsbEhlaWdodC90aGlzLnpvb207cis9dCp0aGlzLnZpZXcub2Zmc2V0WCxvPXIrdCp0aGlzLnZpZXcud2lkdGgsYS09ZSp0aGlzLnZpZXcub2Zmc2V0WSxzPWEtZSp0aGlzLnZpZXcuaGVpZ2h0fXRoaXMucHJvamVjdGlvbk1hdHJpeC5tYWtlT3J0aG9ncmFwaGljKHIsbyxhLHMsdGhpcy5uZWFyLHRoaXMuZmFyKSx0aGlzLnByb2plY3Rpb25NYXRyaXhJbnZlcnNlLmNvcHkodGhpcy5wcm9qZWN0aW9uTWF0cml4KS5pbnZlcnQoKX10b0pTT04odCl7Y29uc3QgZT1zdXBlci50b0pTT04odCk7cmV0dXJuIGUub2JqZWN0Lnpvb209dGhpcy56b29tLGUub2JqZWN0LmxlZnQ9dGhpcy5sZWZ0LGUub2JqZWN0LnJpZ2h0PXRoaXMucmlnaHQsZS5vYmplY3QudG9wPXRoaXMudG9wLGUub2JqZWN0LmJvdHRvbT10aGlzLmJvdHRvbSxlLm9iamVjdC5uZWFyPXRoaXMubmVhcixlLm9iamVjdC5mYXI9dGhpcy5mYXIsbnVsbCE9PXRoaXMudmlldyYmKGUub2JqZWN0LnZpZXc9T2JqZWN0LmFzc2lnbih7fSx0aGlzLnZpZXcpKSxlfX1BNnQucHJvdG90eXBlLmlzT3J0aG9ncmFwaGljQ2FtZXJhPSEwO2NsYXNzIGs2dCBleHRlbmRzIG42dHtjb25zdHJ1Y3Rvcih0KXtzdXBlcih0KSx0aGlzLnR5cGU9IlJhd1NoYWRlck1hdGVyaWFsIn19azZ0LnByb3RvdHlwZS5pc1Jhd1NoYWRlck1hdGVyaWFsPSEwO2NvbnN0IEw2dD1NYXRoLnBvdygyLDgpLFA2dD1bLjEyNSwuMjE1LC4zNSwuNDQ2LC41MjYsLjU4Ml0sTjZ0PTUrUDZ0Lmxlbmd0aCxJNnQ9MjAsUjZ0PXtbRzJ0XTowLFtXMnRdOjEsW1kydF06MixbWDJ0XTozLFskMnRdOjQsW0sydF06NSxbcTJ0XTo2fSxPNnQ9bmV3IGw0dCh7c2lkZToxLGRlcHRoV3JpdGU6ITEsZGVwdGhUZXN0OiExfSksejZ0PW5ldyBLNHQobmV3IEo0dCxPNnQpLEQ2dD1uZXcgQTZ0LHtfbG9kUGxhbmVzOkI2dCxfc2l6ZUxvZHM6SDZ0LF9zaWdtYXM6RjZ0fT0kNnQoKSxWNnQ9bmV3IHM0dDtsZXQgVTZ0PW51bGw7Y29uc3QgajZ0PSgxK01hdGguc3FydCg1KSkvMixHNnQ9MS9qNnQsVzZ0PVtuZXcgSDV0KDEsMSwxKSxuZXcgSDV0KC0xLDEsMSksbmV3IEg1dCgxLDEsLTEpLG5ldyBINXQoLTEsMSwtMSksbmV3IEg1dCgwLGo2dCxHNnQpLG5ldyBINXQoMCxqNnQsLUc2dCksbmV3IEg1dChHNnQsMCxqNnQpLG5ldyBINXQoLUc2dCwwLGo2dCksbmV3IEg1dChqNnQsRzZ0LDApLG5ldyBINXQoLWo2dCxHNnQsMCldO2Z1bmN0aW9uIHE2dCh0KXtjb25zdCBlPU1hdGgubWF4KHQucix0LmcsdC5iKSxuPU1hdGgubWluKE1hdGgubWF4KE1hdGguY2VpbChNYXRoLmxvZzIoZSkpLC0xMjgpLDEyNyk7dC5tdWx0aXBseVNjYWxhcihNYXRoLnBvdygyLC1uKSk7cmV0dXJuKG4rMTI4KS8yNTV9Y2xhc3MgWTZ0e2NvbnN0cnVjdG9yKHQpe3RoaXMuX3JlbmRlcmVyPXQsdGhpcy5fcGluZ1BvbmdSZW5kZXJUYXJnZXQ9bnVsbCx0aGlzLl9ibHVyTWF0ZXJpYWw9KGZ1bmN0aW9uIGUodCl7Y29uc3QgZT1uZXcgRmxvYXQzMkFycmF5KHQpLG49bmV3IEg1dCgwLDEsMCk7cmV0dXJuIG5ldyBrNnQoe25hbWU6IlNwaGVyaWNhbEdhdXNzaWFuQmx1ciIsZGVmaW5lczp7bjp0fSx1bmlmb3Jtczp7ZW52TWFwOnt2YWx1ZTpudWxsfSxzYW1wbGVzOnt2YWx1ZToxfSx3ZWlnaHRzOnt2YWx1ZTplfSxsYXRpdHVkaW5hbDp7dmFsdWU6ITF9LGRUaGV0YTp7dmFsdWU6MH0sbWlwSW50Ont2YWx1ZTowfSxwb2xlQXhpczp7dmFsdWU6bn0saW5wdXRFbmNvZGluZzp7dmFsdWU6UjZ0WzNlM119LG91dHB1dEVuY29kaW5nOnt2YWx1ZTpSNnRbM2UzXX19LHZlcnRleFNoYWRlcjp0OXQoKSxmcmFnbWVudFNoYWRlcjpgXG5cblx0XHRcdHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuXHRcdFx0cHJlY2lzaW9uIG1lZGl1bXAgaW50O1xuXG5cdFx0XHR2YXJ5aW5nIHZlYzMgdk91dHB1dERpcmVjdGlvbjtcblxuXHRcdFx0dW5pZm9ybSBzYW1wbGVyMkQgZW52TWFwO1xuXHRcdFx0dW5pZm9ybSBpbnQgc2FtcGxlcztcblx0XHRcdHVuaWZvcm0gZmxvYXQgd2VpZ2h0c1sgbiBdO1xuXHRcdFx0dW5pZm9ybSBib29sIGxhdGl0dWRpbmFsO1xuXHRcdFx0dW5pZm9ybSBmbG9hdCBkVGhldGE7XG5cdFx0XHR1bmlmb3JtIGZsb2F0IG1pcEludDtcblx0XHRcdHVuaWZvcm0gdmVjMyBwb2xlQXhpcztcblxuXHRcdFx0JHtlOXQoKX1cblxuXHRcdFx0I2RlZmluZSBFTlZNQVBfVFlQRV9DVUJFX1VWXG5cdFx0XHQjaW5jbHVkZSA8Y3ViZV91dl9yZWZsZWN0aW9uX2ZyYWdtZW50PlxuXG5cdFx0XHR2ZWMzIGdldFNhbXBsZSggZmxvYXQgdGhldGEsIHZlYzMgYXhpcyApIHtcblxuXHRcdFx0XHRmbG9hdCBjb3NUaGV0YSA9IGNvcyggdGhldGEgKTtcblx0XHRcdFx0Ly8gUm9kcmlndWVzJyBheGlzLWFuZ2xlIHJvdGF0aW9uXG5cdFx0XHRcdHZlYzMgc2FtcGxlRGlyZWN0aW9uID0gdk91dHB1dERpcmVjdGlvbiAqIGNvc1RoZXRhXG5cdFx0XHRcdFx0KyBjcm9zcyggYXhpcywgdk91dHB1dERpcmVjdGlvbiApICogc2luKCB0aGV0YSApXG5cdFx0XHRcdFx0KyBheGlzICogZG90KCBheGlzLCB2T3V0cHV0RGlyZWN0aW9uICkgKiAoIDEuMCAtIGNvc1RoZXRhICk7XG5cblx0XHRcdFx0cmV0dXJuIGJpbGluZWFyQ3ViZVVWKCBlbnZNYXAsIHNhbXBsZURpcmVjdGlvbiwgbWlwSW50ICk7XG5cblx0XHRcdH1cblxuXHRcdFx0dm9pZCBtYWluKCkge1xuXG5cdFx0XHRcdHZlYzMgYXhpcyA9IGxhdGl0dWRpbmFsID8gcG9sZUF4aXMgOiBjcm9zcyggcG9sZUF4aXMsIHZPdXRwdXREaXJlY3Rpb24gKTtcblxuXHRcdFx0XHRpZiAoIGFsbCggZXF1YWwoIGF4aXMsIHZlYzMoIDAuMCApICkgKSApIHtcblxuXHRcdFx0XHRcdGF4aXMgPSB2ZWMzKCB2T3V0cHV0RGlyZWN0aW9uLnosIDAuMCwgLSB2T3V0cHV0RGlyZWN0aW9uLnggKTtcblxuXHRcdFx0XHR9XG5cblx0XHRcdFx0YXhpcyA9IG5vcm1hbGl6ZSggYXhpcyApO1xuXG5cdFx0XHRcdGdsX0ZyYWdDb2xvciA9IHZlYzQoIDAuMCwgMC4wLCAwLjAsIDEuMCApO1xuXHRcdFx0XHRnbF9GcmFnQ29sb3IucmdiICs9IHdlaWdodHNbIDAgXSAqIGdldFNhbXBsZSggMC4wLCBheGlzICk7XG5cblx0XHRcdFx0Zm9yICggaW50IGkgPSAxOyBpIDwgbjsgaSsrICkge1xuXG5cdFx0XHRcdFx0aWYgKCBpID49IHNhbXBsZXMgKSB7XG5cblx0XHRcdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0ZmxvYXQgdGhldGEgPSBkVGhldGEgKiBmbG9hdCggaSApO1xuXHRcdFx0XHRcdGdsX0ZyYWdDb2xvci5yZ2IgKz0gd2VpZ2h0c1sgaSBdICogZ2V0U2FtcGxlKCAtMS4wICogdGhldGEsIGF4aXMgKTtcblx0XHRcdFx0XHRnbF9GcmFnQ29sb3IucmdiICs9IHdlaWdodHNbIGkgXSAqIGdldFNhbXBsZSggdGhldGEsIGF4aXMgKTtcblxuXHRcdFx0XHR9XG5cblx0XHRcdFx0Z2xfRnJhZ0NvbG9yID0gbGluZWFyVG9PdXRwdXRUZXhlbCggZ2xfRnJhZ0NvbG9yICk7XG5cblx0XHRcdH1cblx0XHRgLGJsZW5kaW5nOjAsZGVwdGhUZXN0OiExLGRlcHRoV3JpdGU6ITF9KX0pKEk2dCksdGhpcy5fZXF1aXJlY3RTaGFkZXI9bnVsbCx0aGlzLl9jdWJlbWFwU2hhZGVyPW51bGwsdGhpcy5fY29tcGlsZU1hdGVyaWFsKHRoaXMuX2JsdXJNYXRlcmlhbCl9ZnJvbVNjZW5lKHQsZT0wLG49LjEsaT0xMDApe1U2dD10aGlzLl9yZW5kZXJlci5nZXRSZW5kZXJUYXJnZXQoKTtjb25zdCByPXRoaXMuX2FsbG9jYXRlVGFyZ2V0cygpO3JldHVybiB0aGlzLl9zY2VuZVRvQ3ViZVVWKHQsbixpLHIpLGU+MCYmdGhpcy5fYmx1cihyLDAsMCxlKSx0aGlzLl9hcHBseVBNUkVNKHIpLHRoaXMuX2NsZWFudXAocikscn1mcm9tRXF1aXJlY3Rhbmd1bGFyKHQpe3JldHVybiB0aGlzLl9mcm9tVGV4dHVyZSh0KX1mcm9tQ3ViZW1hcCh0KXtyZXR1cm4gdGhpcy5fZnJvbVRleHR1cmUodCl9Y29tcGlsZUN1YmVtYXBTaGFkZXIoKXtudWxsPT09dGhpcy5fY3ViZW1hcFNoYWRlciYmKHRoaXMuX2N1YmVtYXBTaGFkZXI9UTZ0KCksdGhpcy5fY29tcGlsZU1hdGVyaWFsKHRoaXMuX2N1YmVtYXBTaGFkZXIpKX1jb21waWxlRXF1aXJlY3Rhbmd1bGFyU2hhZGVyKCl7bnVsbD09PXRoaXMuX2VxdWlyZWN0U2hhZGVyJiYodGhpcy5fZXF1aXJlY3RTaGFkZXI9SjZ0KCksdGhpcy5fY29tcGlsZU1hdGVyaWFsKHRoaXMuX2VxdWlyZWN0U2hhZGVyKSl9ZGlzcG9zZSgpe3RoaXMuX2JsdXJNYXRlcmlhbC5kaXNwb3NlKCksbnVsbCE9PXRoaXMuX2N1YmVtYXBTaGFkZXImJnRoaXMuX2N1YmVtYXBTaGFkZXIuZGlzcG9zZSgpLG51bGwhPT10aGlzLl9lcXVpcmVjdFNoYWRlciYmdGhpcy5fZXF1aXJlY3RTaGFkZXIuZGlzcG9zZSgpO2ZvcihsZXQgdD0wO3Q8QjZ0Lmxlbmd0aDt0KyspQjZ0W3RdLmRpc3Bvc2UoKX1fY2xlYW51cCh0KXt0aGlzLl9waW5nUG9uZ1JlbmRlclRhcmdldC5kaXNwb3NlKCksdGhpcy5fcmVuZGVyZXIuc2V0UmVuZGVyVGFyZ2V0KFU2dCksdC5zY2lzc29yVGVzdD0hMSxaNnQodCwwLDAsdC53aWR0aCx0LmhlaWdodCl9X2Zyb21UZXh0dXJlKHQpe1U2dD10aGlzLl9yZW5kZXJlci5nZXRSZW5kZXJUYXJnZXQoKTtjb25zdCBlPXRoaXMuX2FsbG9jYXRlVGFyZ2V0cyh0KTtyZXR1cm4gdGhpcy5fdGV4dHVyZVRvQ3ViZVVWKHQsZSksdGhpcy5fYXBwbHlQTVJFTShlKSx0aGlzLl9jbGVhbnVwKGUpLGV9X2FsbG9jYXRlVGFyZ2V0cyh0KXtjb25zdCBlPXttYWdGaWx0ZXI6dTJ0LG1pbkZpbHRlcjp1MnQsZ2VuZXJhdGVNaXBtYXBzOiExLHR5cGU6ZzJ0LGZvcm1hdDoxMDIzLGVuY29kaW5nOlg2dCh0KT90LmVuY29kaW5nOlkydCxkZXB0aEJ1ZmZlcjohMX0sbj1LNnQoZSk7cmV0dXJuIG4uZGVwdGhCdWZmZXI9IXQsdGhpcy5fcGluZ1BvbmdSZW5kZXJUYXJnZXQ9SzZ0KGUpLG59X2NvbXBpbGVNYXRlcmlhbCh0KXtjb25zdCBlPW5ldyBLNHQoQjZ0WzBdLHQpO3RoaXMuX3JlbmRlcmVyLmNvbXBpbGUoZSxENnQpfV9zY2VuZVRvQ3ViZVVWKHQsZSxuLGkpe2NvbnN0IHI9bmV3IHI2dCg5MCwxLGUsbiksbz1bMSwtMSwxLDEsMSwxXSxhPVsxLDEsMSwtMSwtMSwtMV0scz10aGlzLl9yZW5kZXJlcixsPXMuYXV0b0NsZWFyLGM9cy5vdXRwdXRFbmNvZGluZyx1PXMudG9uZU1hcHBpbmc7cy5nZXRDbGVhckNvbG9yKFY2dCkscy50b25lTWFwcGluZz0wLHMub3V0cHV0RW5jb2Rpbmc9RzJ0LHMuYXV0b0NsZWFyPSExO2xldCBoPSExO2NvbnN0IGQ9dC5iYWNrZ3JvdW5kO2lmKGQpe2lmKGQuaXNDb2xvcil7TzZ0LmNvbG9yLmNvcHkoZCkuY29udmVydFNSR0JUb0xpbmVhcigpLHQuYmFja2dyb3VuZD1udWxsO2NvbnN0IGU9cTZ0KE82dC5jb2xvcik7TzZ0Lm9wYWNpdHk9ZSxoPSEwfX1lbHNle082dC5jb2xvci5jb3B5KFY2dCkuY29udmVydFNSR0JUb0xpbmVhcigpO2NvbnN0IHQ9cTZ0KE82dC5jb2xvcik7TzZ0Lm9wYWNpdHk9dCxoPSEwfWZvcihsZXQgZT0wO2U8NjtlKyspe2NvbnN0IG49ZSUzOzA9PW4/KHIudXAuc2V0KDAsb1tlXSwwKSxyLmxvb2tBdChhW2VdLDAsMCkpOjE9PW4/KHIudXAuc2V0KDAsMCxvW2VdKSxyLmxvb2tBdCgwLGFbZV0sMCkpOihyLnVwLnNldCgwLG9bZV0sMCksci5sb29rQXQoMCwwLGFbZV0pKSxaNnQoaSxuKkw2dCxlPjI/TDZ0OjAsTDZ0LEw2dCkscy5zZXRSZW5kZXJUYXJnZXQoaSksaCYmcy5yZW5kZXIoejZ0LHIpLHMucmVuZGVyKHQscil9cy50b25lTWFwcGluZz11LHMub3V0cHV0RW5jb2Rpbmc9YyxzLmF1dG9DbGVhcj1sfV90ZXh0dXJlVG9DdWJlVVYodCxlKXtjb25zdCBuPXRoaXMuX3JlbmRlcmVyO3QuaXNDdWJlVGV4dHVyZT9udWxsPT10aGlzLl9jdWJlbWFwU2hhZGVyJiYodGhpcy5fY3ViZW1hcFNoYWRlcj1RNnQoKSk6bnVsbD09dGhpcy5fZXF1aXJlY3RTaGFkZXImJih0aGlzLl9lcXVpcmVjdFNoYWRlcj1KNnQoKSk7Y29uc3QgaT10LmlzQ3ViZVRleHR1cmU/dGhpcy5fY3ViZW1hcFNoYWRlcjp0aGlzLl9lcXVpcmVjdFNoYWRlcixyPW5ldyBLNHQoQjZ0WzBdLGkpLG89aS51bmlmb3JtcztvLmVudk1hcC52YWx1ZT10LHQuaXNDdWJlVGV4dHVyZXx8by50ZXhlbFNpemUudmFsdWUuc2V0KDEvdC5pbWFnZS53aWR0aCwxL3QuaW1hZ2UuaGVpZ2h0KSxvLmlucHV0RW5jb2RpbmcudmFsdWU9UjZ0W3QuZW5jb2RpbmddLG8ub3V0cHV0RW5jb2RpbmcudmFsdWU9UjZ0W2UudGV4dHVyZS5lbmNvZGluZ10sWjZ0KGUsMCwwLDMqTDZ0LDIqTDZ0KSxuLnNldFJlbmRlclRhcmdldChlKSxuLnJlbmRlcihyLEQ2dCl9X2FwcGx5UE1SRU0odCl7Y29uc3QgZT10aGlzLl9yZW5kZXJlcixuPWUuYXV0b0NsZWFyO2UuYXV0b0NsZWFyPSExO2ZvcihsZXQgZT0xO2U8TjZ0O2UrKyl7Y29uc3Qgbj1NYXRoLnNxcnQoRjZ0W2VdKkY2dFtlXS1GNnRbZS0xXSpGNnRbZS0xXSk7dGhpcy5fYmx1cih0LGUtMSxlLG4sVzZ0WyhlLTEpJVc2dC5sZW5ndGhdKX1lLmF1dG9DbGVhcj1ufV9ibHVyKHQsZSxuLGkscil7Y29uc3Qgbz10aGlzLl9waW5nUG9uZ1JlbmRlclRhcmdldDt0aGlzLl9oYWxmQmx1cih0LG8sZSxuLGksImxhdGl0dWRpbmFsIixyKSx0aGlzLl9oYWxmQmx1cihvLHQsbixuLGksImxvbmdpdHVkaW5hbCIscil9X2hhbGZCbHVyKHQsZSxuLGkscixvLGEpe2NvbnN0IHM9dGhpcy5fcmVuZGVyZXIsbD10aGlzLl9ibHVyTWF0ZXJpYWw7ImxhdGl0dWRpbmFsIiE9PW8mJiJsb25naXR1ZGluYWwiIT09byYmY29uc29sZS5lcnJvcigiYmx1ciBkaXJlY3Rpb24gbXVzdCBiZSBlaXRoZXIgbGF0aXR1ZGluYWwgb3IgbG9uZ2l0dWRpbmFsISIpO2NvbnN0IGM9bmV3IEs0dChCNnRbaV0sbCksdT1sLnVuaWZvcm1zLGg9SDZ0W25dLTEsZD1pc0Zpbml0ZShyKT9NYXRoLlBJLygyKmgpOjIqTWF0aC5QSS8zOSxwPXIvZCxmPWlzRmluaXRlKHIpPzErTWF0aC5mbG9vcigzKnApOkk2dDtmPkk2dCYmY29uc29sZS53YXJuKGBzaWdtYVJhZGlhbnMsICR7cn0sIGlzIHRvbyBsYXJnZSBhbmQgd2lsbCBjbGlwLCBhcyBpdCByZXF1ZXN0ZWQgJHtmfSBzYW1wbGVzIHdoZW4gdGhlIG1heGltdW0gaXMgc2V0IHRvIDIwYCk7Y29uc3QgbT1bXTtsZXQgZz0wO2ZvcihsZXQgdD0wO3Q8STZ0OysrdCl7Y29uc3QgZT10L3Asbj1NYXRoLmV4cCgtZSplLzIpO20ucHVzaChuKSwwPT10P2crPW46dDxmJiYoZys9MipuKX1mb3IobGV0IHQ9MDt0PG0ubGVuZ3RoO3QrKyltW3RdPW1bdF0vZzt1LmVudk1hcC52YWx1ZT10LnRleHR1cmUsdS5zYW1wbGVzLnZhbHVlPWYsdS53ZWlnaHRzLnZhbHVlPW0sdS5sYXRpdHVkaW5hbC52YWx1ZT0ibGF0aXR1ZGluYWwiPT09byxhJiYodS5wb2xlQXhpcy52YWx1ZT1hKSx1LmRUaGV0YS52YWx1ZT1kLHUubWlwSW50LnZhbHVlPTgtbix1LmlucHV0RW5jb2RpbmcudmFsdWU9UjZ0W3QudGV4dHVyZS5lbmNvZGluZ10sdS5vdXRwdXRFbmNvZGluZy52YWx1ZT1SNnRbdC50ZXh0dXJlLmVuY29kaW5nXTtjb25zdCBfPUg2dFtpXTtaNnQoZSwzKk1hdGgubWF4KDAsTDZ0LTIqXyksKDA9PT1pPzA6MipMNnQpKzIqXyooaT40P2ktOCs0OjApLDMqXywyKl8pLHMuc2V0UmVuZGVyVGFyZ2V0KGUpLHMucmVuZGVyKGMsRDZ0KX19ZnVuY3Rpb24gWDZ0KHQpe3JldHVybiB2b2lkIDAhPT10JiZ0LnR5cGU9PT1nMnQmJih0LmVuY29kaW5nPT09RzJ0fHx0LmVuY29kaW5nPT09VzJ0fHx0LmVuY29kaW5nPT09cTJ0KX1mdW5jdGlvbiAkNnQoKXtjb25zdCB0PVtdLGU9W10sbj1bXTtsZXQgaT04O2ZvcihsZXQgcj0wO3I8TjZ0O3IrKyl7Y29uc3Qgbz1NYXRoLnBvdygyLGkpO2UucHVzaChvKTtsZXQgYT0xL287cj40P2E9UDZ0W3ItOCs0LTFdOjA9PXImJihhPTApLG4ucHVzaChhKTtjb25zdCBzPTEvKG8tMSksbD0tcy8yLGM9MStzLzIsdT1bbCxsLGMsbCxjLGMsbCxsLGMsYyxsLGNdLGg9NixkPTYscD0zLGY9MixtPTEsZz1uZXcgRmxvYXQzMkFycmF5KHAqZCpoKSxfPW5ldyBGbG9hdDMyQXJyYXkoZipkKmgpLHk9bmV3IEZsb2F0MzJBcnJheShtKmQqaCk7Zm9yKGxldCB0PTA7dDxoO3QrKyl7Y29uc3QgZT10JTMqMi8zLTEsbj10PjI/MDotMTtnLnNldChbZSxuLDAsZSsyLzMsbiwwLGUrMi8zLG4rMSwwLGUsbiwwLGUrMi8zLG4rMSwwLGUsbisxLDBdLHAqZCp0KSxfLnNldCh1LGYqZCp0KTt5LnNldChbdCx0LHQsdCx0LHRdLG0qZCp0KX1jb25zdCB2PW5ldyBONHQ7di5zZXRBdHRyaWJ1dGUoInBvc2l0aW9uIixuZXcgaDR0KGcscCkpLHYuc2V0QXR0cmlidXRlKCJ1diIsbmV3IGg0dChfLGYpKSx2LnNldEF0dHJpYnV0ZSgiZmFjZUluZGV4IixuZXcgaDR0KHksbSkpLHQucHVzaCh2KSxpPjQmJmktLX1yZXR1cm57X2xvZFBsYW5lczp0LF9zaXplTG9kczplLF9zaWdtYXM6bn19ZnVuY3Rpb24gSzZ0KHQpe2NvbnN0IGU9bmV3IE81dCgzKkw2dCwzKkw2dCx0KTtyZXR1cm4gZS50ZXh0dXJlLm1hcHBpbmc9bzJ0LGUudGV4dHVyZS5uYW1lPSJQTVJFTS5jdWJlVXYiLGUuc2Npc3NvclRlc3Q9ITAsZX1mdW5jdGlvbiBaNnQodCxlLG4saSxyKXt0LnZpZXdwb3J0LnNldChlLG4saSxyKSx0LnNjaXNzb3Iuc2V0KGUsbixpLHIpfWZ1bmN0aW9uIEo2dCgpe2NvbnN0IHQ9bmV3IEM1dCgxLDEpO3JldHVybiBuZXcgazZ0KHtuYW1lOiJFcXVpcmVjdGFuZ3VsYXJUb0N1YmVVViIsdW5pZm9ybXM6e2Vudk1hcDp7dmFsdWU6bnVsbH0sdGV4ZWxTaXplOnt2YWx1ZTp0fSxpbnB1dEVuY29kaW5nOnt2YWx1ZTpSNnRbM2UzXX0sb3V0cHV0RW5jb2Rpbmc6e3ZhbHVlOlI2dFszZTNdfX0sdmVydGV4U2hhZGVyOnQ5dCgpLGZyYWdtZW50U2hhZGVyOmBcblxuXHRcdFx0cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG5cdFx0XHRwcmVjaXNpb24gbWVkaXVtcCBpbnQ7XG5cblx0XHRcdHZhcnlpbmcgdmVjMyB2T3V0cHV0RGlyZWN0aW9uO1xuXG5cdFx0XHR1bmlmb3JtIHNhbXBsZXIyRCBlbnZNYXA7XG5cdFx0XHR1bmlmb3JtIHZlYzIgdGV4ZWxTaXplO1xuXG5cdFx0XHQke2U5dCgpfVxuXG5cdFx0XHQjaW5jbHVkZSA8Y29tbW9uPlxuXG5cdFx0XHR2b2lkIG1haW4oKSB7XG5cblx0XHRcdFx0Z2xfRnJhZ0NvbG9yID0gdmVjNCggMC4wLCAwLjAsIDAuMCwgMS4wICk7XG5cblx0XHRcdFx0dmVjMyBvdXRwdXREaXJlY3Rpb24gPSBub3JtYWxpemUoIHZPdXRwdXREaXJlY3Rpb24gKTtcblx0XHRcdFx0dmVjMiB1diA9IGVxdWlyZWN0VXYoIG91dHB1dERpcmVjdGlvbiApO1xuXG5cdFx0XHRcdHZlYzIgZiA9IGZyYWN0KCB1diAvIHRleGVsU2l6ZSAtIDAuNSApO1xuXHRcdFx0XHR1diAtPSBmICogdGV4ZWxTaXplO1xuXHRcdFx0XHR2ZWMzIHRsID0gZW52TWFwVGV4ZWxUb0xpbmVhciggdGV4dHVyZTJEICggZW52TWFwLCB1diApICkucmdiO1xuXHRcdFx0XHR1di54ICs9IHRleGVsU2l6ZS54O1xuXHRcdFx0XHR2ZWMzIHRyID0gZW52TWFwVGV4ZWxUb0xpbmVhciggdGV4dHVyZTJEICggZW52TWFwLCB1diApICkucmdiO1xuXHRcdFx0XHR1di55ICs9IHRleGVsU2l6ZS55O1xuXHRcdFx0XHR2ZWMzIGJyID0gZW52TWFwVGV4ZWxUb0xpbmVhciggdGV4dHVyZTJEICggZW52TWFwLCB1diApICkucmdiO1xuXHRcdFx0XHR1di54IC09IHRleGVsU2l6ZS54O1xuXHRcdFx0XHR2ZWMzIGJsID0gZW52TWFwVGV4ZWxUb0xpbmVhciggdGV4dHVyZTJEICggZW52TWFwLCB1diApICkucmdiO1xuXG5cdFx0XHRcdHZlYzMgdG0gPSBtaXgoIHRsLCB0ciwgZi54ICk7XG5cdFx0XHRcdHZlYzMgYm0gPSBtaXgoIGJsLCBiciwgZi54ICk7XG5cdFx0XHRcdGdsX0ZyYWdDb2xvci5yZ2IgPSBtaXgoIHRtLCBibSwgZi55ICk7XG5cblx0XHRcdFx0Z2xfRnJhZ0NvbG9yID0gbGluZWFyVG9PdXRwdXRUZXhlbCggZ2xfRnJhZ0NvbG9yICk7XG5cblx0XHRcdH1cblx0XHRgLGJsZW5kaW5nOjAsZGVwdGhUZXN0OiExLGRlcHRoV3JpdGU6ITF9KX1mdW5jdGlvbiBRNnQoKXtyZXR1cm4gbmV3IGs2dCh7bmFtZToiQ3ViZW1hcFRvQ3ViZVVWIix1bmlmb3Jtczp7ZW52TWFwOnt2YWx1ZTpudWxsfSxpbnB1dEVuY29kaW5nOnt2YWx1ZTpSNnRbM2UzXX0sb3V0cHV0RW5jb2Rpbmc6e3ZhbHVlOlI2dFszZTNdfX0sdmVydGV4U2hhZGVyOnQ5dCgpLGZyYWdtZW50U2hhZGVyOmBcblxuXHRcdFx0cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG5cdFx0XHRwcmVjaXNpb24gbWVkaXVtcCBpbnQ7XG5cblx0XHRcdHZhcnlpbmcgdmVjMyB2T3V0cHV0RGlyZWN0aW9uO1xuXG5cdFx0XHR1bmlmb3JtIHNhbXBsZXJDdWJlIGVudk1hcDtcblxuXHRcdFx0JHtlOXQoKX1cblxuXHRcdFx0dm9pZCBtYWluKCkge1xuXG5cdFx0XHRcdGdsX0ZyYWdDb2xvciA9IHZlYzQoIDAuMCwgMC4wLCAwLjAsIDEuMCApO1xuXHRcdFx0XHRnbF9GcmFnQ29sb3IucmdiID0gZW52TWFwVGV4ZWxUb0xpbmVhciggdGV4dHVyZUN1YmUoIGVudk1hcCwgdmVjMyggLSB2T3V0cHV0RGlyZWN0aW9uLngsIHZPdXRwdXREaXJlY3Rpb24ueXogKSApICkucmdiO1xuXHRcdFx0XHRnbF9GcmFnQ29sb3IgPSBsaW5lYXJUb091dHB1dFRleGVsKCBnbF9GcmFnQ29sb3IgKTtcblxuXHRcdFx0fVxuXHRcdGAsYmxlbmRpbmc6MCxkZXB0aFRlc3Q6ITEsZGVwdGhXcml0ZTohMX0pfWZ1bmN0aW9uIHQ5dCgpe3JldHVybiJcblxuXHRcdHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuXHRcdHByZWNpc2lvbiBtZWRpdW1wIGludDtcblxuXHRcdGF0dHJpYnV0ZSB2ZWMzIHBvc2l0aW9uO1xuXHRcdGF0dHJpYnV0ZSB2ZWMyIHV2O1xuXHRcdGF0dHJpYnV0ZSBmbG9hdCBmYWNlSW5kZXg7XG5cblx0XHR2YXJ5aW5nIHZlYzMgdk91dHB1dERpcmVjdGlvbjtcblxuXHRcdC8vIFJIIGNvb3JkaW5hdGUgc3lzdGVtOyBQTVJFTSBmYWNlLWluZGV4aW5nIGNvbnZlbnRpb25cblx0XHR2ZWMzIGdldERpcmVjdGlvbiggdmVjMiB1diwgZmxvYXQgZmFjZSApIHtcblxuXHRcdFx0dXYgPSAyLjAgKiB1diAtIDEuMDtcblxuXHRcdFx0dmVjMyBkaXJlY3Rpb24gPSB2ZWMzKCB1diwgMS4wICk7XG5cblx0XHRcdGlmICggZmFjZSA9PSAwLjAgKSB7XG5cblx0XHRcdFx0ZGlyZWN0aW9uID0gZGlyZWN0aW9uLnp5eDsgLy8gKCAxLCB2LCB1ICkgcG9zIHhcblxuXHRcdFx0fSBlbHNlIGlmICggZmFjZSA9PSAxLjAgKSB7XG5cblx0XHRcdFx0ZGlyZWN0aW9uID0gZGlyZWN0aW9uLnh6eTtcblx0XHRcdFx0ZGlyZWN0aW9uLnh6ICo9IC0xLjA7IC8vICggLXUsIDEsIC12ICkgcG9zIHlcblxuXHRcdFx0fSBlbHNlIGlmICggZmFjZSA9PSAyLjAgKSB7XG5cblx0XHRcdFx0ZGlyZWN0aW9uLnggKj0gLTEuMDsgLy8gKCAtdSwgdiwgMSApIHBvcyB6XG5cblx0XHRcdH0gZWxzZSBpZiAoIGZhY2UgPT0gMy4wICkge1xuXG5cdFx0XHRcdGRpcmVjdGlvbiA9IGRpcmVjdGlvbi56eXg7XG5cdFx0XHRcdGRpcmVjdGlvbi54eiAqPSAtMS4wOyAvLyAoIC0xLCB2LCAtdSApIG5lZyB4XG5cblx0XHRcdH0gZWxzZSBpZiAoIGZhY2UgPT0gNC4wICkge1xuXG5cdFx0XHRcdGRpcmVjdGlvbiA9IGRpcmVjdGlvbi54enk7XG5cdFx0XHRcdGRpcmVjdGlvbi54eSAqPSAtMS4wOyAvLyAoIC11LCAtMSwgdiApIG5lZyB5XG5cblx0XHRcdH0gZWxzZSBpZiAoIGZhY2UgPT0gNS4wICkge1xuXG5cdFx0XHRcdGRpcmVjdGlvbi56ICo9IC0xLjA7IC8vICggdSwgdiwgLTEgKSBuZWcgelxuXG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiBkaXJlY3Rpb247XG5cblx0XHR9XG5cblx0XHR2b2lkIG1haW4oKSB7XG5cblx0XHRcdHZPdXRwdXREaXJlY3Rpb24gPSBnZXREaXJlY3Rpb24oIHV2LCBmYWNlSW5kZXggKTtcblx0XHRcdGdsX1Bvc2l0aW9uID0gdmVjNCggcG9zaXRpb24sIDEuMCApO1xuXG5cdFx0fVxuXHQifWZ1bmN0aW9uIGU5dCgpe3JldHVybiJcblxuXHRcdHVuaWZvcm0gaW50IGlucHV0RW5jb2Rpbmc7XG5cdFx0dW5pZm9ybSBpbnQgb3V0cHV0RW5jb2Rpbmc7XG5cblx0XHQjaW5jbHVkZSA8ZW5jb2RpbmdzX3BhcnNfZnJhZ21lbnQ+XG5cblx0XHR2ZWM0IGlucHV0VGV4ZWxUb0xpbmVhciggdmVjNCB2YWx1ZSApIHtcblxuXHRcdFx0aWYgKCBpbnB1dEVuY29kaW5nID09IDAgKSB7XG5cblx0XHRcdFx0cmV0dXJuIHZhbHVlO1xuXG5cdFx0XHR9IGVsc2UgaWYgKCBpbnB1dEVuY29kaW5nID09IDEgKSB7XG5cblx0XHRcdFx0cmV0dXJuIHNSR0JUb0xpbmVhciggdmFsdWUgKTtcblxuXHRcdFx0fSBlbHNlIGlmICggaW5wdXRFbmNvZGluZyA9PSAyICkge1xuXG5cdFx0XHRcdHJldHVybiBSR0JFVG9MaW5lYXIoIHZhbHVlICk7XG5cblx0XHRcdH0gZWxzZSBpZiAoIGlucHV0RW5jb2RpbmcgPT0gMyApIHtcblxuXHRcdFx0XHRyZXR1cm4gUkdCTVRvTGluZWFyKCB2YWx1ZSwgNy4wICk7XG5cblx0XHRcdH0gZWxzZSBpZiAoIGlucHV0RW5jb2RpbmcgPT0gNCApIHtcblxuXHRcdFx0XHRyZXR1cm4gUkdCTVRvTGluZWFyKCB2YWx1ZSwgMTYuMCApO1xuXG5cdFx0XHR9IGVsc2UgaWYgKCBpbnB1dEVuY29kaW5nID09IDUgKSB7XG5cblx0XHRcdFx0cmV0dXJuIFJHQkRUb0xpbmVhciggdmFsdWUsIDI1Ni4wICk7XG5cblx0XHRcdH0gZWxzZSB7XG5cblx0XHRcdFx0cmV0dXJuIEdhbW1hVG9MaW5lYXIoIHZhbHVlLCAyLjIgKTtcblxuXHRcdFx0fVxuXG5cdFx0fVxuXG5cdFx0dmVjNCBsaW5lYXJUb091dHB1dFRleGVsKCB2ZWM0IHZhbHVlICkge1xuXG5cdFx0XHRpZiAoIG91dHB1dEVuY29kaW5nID09IDAgKSB7XG5cblx0XHRcdFx0cmV0dXJuIHZhbHVlO1xuXG5cdFx0XHR9IGVsc2UgaWYgKCBvdXRwdXRFbmNvZGluZyA9PSAxICkge1xuXG5cdFx0XHRcdHJldHVybiBMaW5lYXJUb3NSR0IoIHZhbHVlICk7XG5cblx0XHRcdH0gZWxzZSBpZiAoIG91dHB1dEVuY29kaW5nID09IDIgKSB7XG5cblx0XHRcdFx0cmV0dXJuIExpbmVhclRvUkdCRSggdmFsdWUgKTtcblxuXHRcdFx0fSBlbHNlIGlmICggb3V0cHV0RW5jb2RpbmcgPT0gMyApIHtcblxuXHRcdFx0XHRyZXR1cm4gTGluZWFyVG9SR0JNKCB2YWx1ZSwgNy4wICk7XG5cblx0XHRcdH0gZWxzZSBpZiAoIG91dHB1dEVuY29kaW5nID09IDQgKSB7XG5cblx0XHRcdFx0cmV0dXJuIExpbmVhclRvUkdCTSggdmFsdWUsIDE2LjAgKTtcblxuXHRcdFx0fSBlbHNlIGlmICggb3V0cHV0RW5jb2RpbmcgPT0gNSApIHtcblxuXHRcdFx0XHRyZXR1cm4gTGluZWFyVG9SR0JEKCB2YWx1ZSwgMjU2LjAgKTtcblxuXHRcdFx0fSBlbHNlIHtcblxuXHRcdFx0XHRyZXR1cm4gTGluZWFyVG9HYW1tYSggdmFsdWUsIDIuMiApO1xuXG5cdFx0XHR9XG5cblx0XHR9XG5cblx0XHR2ZWM0IGVudk1hcFRleGVsVG9MaW5lYXIoIHZlYzQgY29sb3IgKSB7XG5cblx0XHRcdHJldHVybiBpbnB1dFRleGVsVG9MaW5lYXIoIGNvbG9yICk7XG5cblx0XHR9XG5cdCJ9ZnVuY3Rpb24gbjl0KHQpe2xldCBlPW5ldyBXZWFrTWFwLG49bnVsbDtmdW5jdGlvbiBpKHQpe2NvbnN0IG49dC50YXJnZXQ7bi5yZW1vdmVFdmVudExpc3RlbmVyKCJkaXNwb3NlIixpKTtjb25zdCByPWUuZ2V0KG4pO3ZvaWQgMCE9PXImJihyLmRlbGV0ZShuKSxyLmRpc3Bvc2UoKSl9cmV0dXJue2dldDpmdW5jdGlvbiByKG8pe2lmKG8mJm8uaXNUZXh0dXJlJiYhMT09PW8uaXNSZW5kZXJUYXJnZXRUZXh0dXJlKXtjb25zdCByPW8ubWFwcGluZyxhPXI9PT1pMnR8fHI9PT1yMnQscz1yPT09ZTJ0fHxyPT09bjJ0O2lmKGF8fHMpe2lmKGUuaGFzKG8pKXJldHVybiBlLmdldChvKS50ZXh0dXJlO3tjb25zdCByPW8uaW1hZ2U7aWYoYSYmciYmci5oZWlnaHQ+MHx8cyYmciYmKGZ1bmN0aW9uIGEodCl7bGV0IGU9MDtjb25zdCBuPTY7Zm9yKGxldCBpPTA7aTxuO2krKyl2b2lkIDAhPT10W2ldJiZlKys7cmV0dXJuIGU9PT1ufSkocikpe2NvbnN0IHI9dC5nZXRSZW5kZXJUYXJnZXQoKTtudWxsPT09biYmKG49bmV3IFk2dCh0KSk7Y29uc3Qgcz1hP24uZnJvbUVxdWlyZWN0YW5ndWxhcihvKTpuLmZyb21DdWJlbWFwKG8pO3JldHVybiBlLnNldChvLHMpLHQuc2V0UmVuZGVyVGFyZ2V0KHIpLG8uYWRkRXZlbnRMaXN0ZW5lcigiZGlzcG9zZSIsaSkscy50ZXh0dXJlfXJldHVybiBudWxsfX19cmV0dXJuIG99LGRpc3Bvc2U6ZnVuY3Rpb24gbygpe2U9bmV3IFdlYWtNYXAsbnVsbCE9PW4mJihuLmRpc3Bvc2UoKSxuPW51bGwpfX19ZnVuY3Rpb24gaTl0KHQpe2NvbnN0IGU9e307ZnVuY3Rpb24gbihuKXtpZih2b2lkIDAhPT1lW25dKXJldHVybiBlW25dO2xldCBpO3N3aXRjaChuKXtjYXNlIldFQkdMX2RlcHRoX3RleHR1cmUiOmk9dC5nZXRFeHRlbnNpb24oIldFQkdMX2RlcHRoX3RleHR1cmUiKXx8dC5nZXRFeHRlbnNpb24oIk1PWl9XRUJHTF9kZXB0aF90ZXh0dXJlIil8fHQuZ2V0RXh0ZW5zaW9uKCJXRUJLSVRfV0VCR0xfZGVwdGhfdGV4dHVyZSIpO2JyZWFrO2Nhc2UiRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIjppPXQuZ2V0RXh0ZW5zaW9uKCJFWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMiKXx8dC5nZXRFeHRlbnNpb24oIk1PWl9FWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMiKXx8dC5nZXRFeHRlbnNpb24oIldFQktJVF9FWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMiKTticmVhaztjYXNlIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9zM3RjIjppPXQuZ2V0RXh0ZW5zaW9uKCJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfczN0YyIpfHx0LmdldEV4dGVuc2lvbigiTU9aX1dFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9zM3RjIil8fHQuZ2V0RXh0ZW5zaW9uKCJXRUJLSVRfV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3MzdGMiKTticmVhaztjYXNlIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9wdnJ0YyI6aT10LmdldEV4dGVuc2lvbigiV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3B2cnRjIil8fHQuZ2V0RXh0ZW5zaW9uKCJXRUJLSVRfV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3B2cnRjIik7YnJlYWs7ZGVmYXVsdDppPXQuZ2V0RXh0ZW5zaW9uKG4pfXJldHVybiBlW25dPWksaX1yZXR1cm57aGFzOmZ1bmN0aW9uKHQpe3JldHVybiBudWxsIT09bih0KX0saW5pdDpmdW5jdGlvbih0KXt0LmlzV2ViR0wyP24oIkVYVF9jb2xvcl9idWZmZXJfZmxvYXQiKToobigiV0VCR0xfZGVwdGhfdGV4dHVyZSIpLG4oIk9FU190ZXh0dXJlX2Zsb2F0IiksbigiT0VTX3RleHR1cmVfaGFsZl9mbG9hdCIpLG4oIk9FU190ZXh0dXJlX2hhbGZfZmxvYXRfbGluZWFyIiksbigiT0VTX3N0YW5kYXJkX2Rlcml2YXRpdmVzIiksbigiT0VTX2VsZW1lbnRfaW5kZXhfdWludCIpLG4oIk9FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0IiksbigiQU5HTEVfaW5zdGFuY2VkX2FycmF5cyIpKSxuKCJPRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIiKSxuKCJFWFRfY29sb3JfYnVmZmVyX2hhbGZfZmxvYXQiKX0sZ2V0OmZ1bmN0aW9uKHQpe2NvbnN0IGU9bih0KTtyZXR1cm4gbnVsbD09PWUmJmNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogIit0KyIgZXh0ZW5zaW9uIG5vdCBzdXBwb3J0ZWQuIiksZX19fWZ1bmN0aW9uIHI5dCh0LGUsbixpKXtjb25zdCByPXt9LG89bmV3IFdlYWtNYXA7ZnVuY3Rpb24gYSh0KXtjb25zdCBzPXQudGFyZ2V0O251bGwhPT1zLmluZGV4JiZlLnJlbW92ZShzLmluZGV4KTtmb3IoY29uc3QgdCBpbiBzLmF0dHJpYnV0ZXMpZS5yZW1vdmUocy5hdHRyaWJ1dGVzW3RdKTtzLnJlbW92ZUV2ZW50TGlzdGVuZXIoImRpc3Bvc2UiLGEpLGRlbGV0ZSByW3MuaWRdO2NvbnN0IGw9by5nZXQocyk7bCYmKGUucmVtb3ZlKGwpLG8uZGVsZXRlKHMpKSxpLnJlbGVhc2VTdGF0ZXNPZkdlb21ldHJ5KHMpLCEwPT09cy5pc0luc3RhbmNlZEJ1ZmZlckdlb21ldHJ5JiZkZWxldGUgcy5fbWF4SW5zdGFuY2VDb3VudCxuLm1lbW9yeS5nZW9tZXRyaWVzLS19ZnVuY3Rpb24gcyh0KXtjb25zdCBuPVtdLGk9dC5pbmRleCxyPXQuYXR0cmlidXRlcy5wb3NpdGlvbjtsZXQgYT0wO2lmKG51bGwhPT1pKXtjb25zdCB0PWkuYXJyYXk7YT1pLnZlcnNpb247Zm9yKGxldCBlPTAsaT10Lmxlbmd0aDtlPGk7ZSs9Myl7Y29uc3QgaT10W2UrMF0scj10W2UrMV0sbz10W2UrMl07bi5wdXNoKGkscixyLG8sbyxpKX19ZWxzZXthPXIudmVyc2lvbjtmb3IobGV0IHQ9MCxlPXIuYXJyYXkubGVuZ3RoLzMtMTt0PGU7dCs9Myl7Y29uc3QgZT10KzAsaT10KzEscj10KzI7bi5wdXNoKGUsaSxpLHIscixlKX19Y29uc3Qgcz1uZXcodzR0KG4pPjY1NTM1P3k0dDpnNHQpKG4sMSk7cy52ZXJzaW9uPWE7Y29uc3QgbD1vLmdldCh0KTtsJiZlLnJlbW92ZShsKSxvLnNldCh0LHMpfXJldHVybntnZXQ6ZnVuY3Rpb24gbCh0LGUpe3JldHVybiEwPT09cltlLmlkXXx8KGUuYWRkRXZlbnRMaXN0ZW5lcigiZGlzcG9zZSIsYSkscltlLmlkXT0hMCxuLm1lbW9yeS5nZW9tZXRyaWVzKyspLGV9LHVwZGF0ZTpmdW5jdGlvbiBjKHQpe2NvbnN0IG49dC5hdHRyaWJ1dGVzO2Zvcihjb25zdCB0IGluIG4pZS51cGRhdGUoblt0XSwzNDk2Mik7Y29uc3QgaT10Lm1vcnBoQXR0cmlidXRlcztmb3IoY29uc3QgdCBpbiBpKXtjb25zdCBuPWlbdF07Zm9yKGxldCB0PTAsaT1uLmxlbmd0aDt0PGk7dCsrKWUudXBkYXRlKG5bdF0sMzQ5NjIpfX0sZ2V0V2lyZWZyYW1lQXR0cmlidXRlOmZ1bmN0aW9uIHUodCl7Y29uc3QgZT1vLmdldCh0KTtpZihlKXtjb25zdCBuPXQuaW5kZXg7bnVsbCE9PW4mJmUudmVyc2lvbjxuLnZlcnNpb24mJnModCl9ZWxzZSBzKHQpO3JldHVybiBvLmdldCh0KX19fWZ1bmN0aW9uIG85dCh0LGUsbixpKXtjb25zdCByPWkuaXNXZWJHTDI7bGV0IG8sYSxzO3RoaXMuc2V0TW9kZT1mdW5jdGlvbiBsKHQpe289dH0sdGhpcy5zZXRJbmRleD1mdW5jdGlvbiBjKHQpe2E9dC50eXBlLHM9dC5ieXRlc1BlckVsZW1lbnR9LHRoaXMucmVuZGVyPWZ1bmN0aW9uIHUoZSxpKXt0LmRyYXdFbGVtZW50cyhvLGksYSxlKnMpLG4udXBkYXRlKGksbywxKX0sdGhpcy5yZW5kZXJJbnN0YW5jZXM9ZnVuY3Rpb24gaChpLGwsYyl7aWYoMD09PWMpcmV0dXJuO2xldCB1LGg7aWYocil1PXQsaD0iZHJhd0VsZW1lbnRzSW5zdGFuY2VkIjtlbHNlIGlmKHU9ZS5nZXQoIkFOR0xFX2luc3RhbmNlZF9hcnJheXMiKSxoPSJkcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRSIsbnVsbD09PXUpcmV0dXJuIHZvaWQgY29uc29sZS5lcnJvcigiVEhSRUUuV2ViR0xJbmRleGVkQnVmZmVyUmVuZGVyZXI6IHVzaW5nIFRIUkVFLkluc3RhbmNlZEJ1ZmZlckdlb21ldHJ5IGJ1dCBoYXJkd2FyZSBkb2VzIG5vdCBzdXBwb3J0IGV4dGVuc2lvbiBBTkdMRV9pbnN0YW5jZWRfYXJyYXlzLiIpO3VbaF0obyxsLGEsaSpzLGMpLG4udXBkYXRlKGwsbyxjKX19ZnVuY3Rpb24gYTl0KHQpe2NvbnN0IGU9e2ZyYW1lOjAsY2FsbHM6MCx0cmlhbmdsZXM6MCxwb2ludHM6MCxsaW5lczowfTtyZXR1cm57bWVtb3J5OntnZW9tZXRyaWVzOjAsdGV4dHVyZXM6MH0scmVuZGVyOmUscHJvZ3JhbXM6bnVsbCxhdXRvUmVzZXQ6ITAscmVzZXQ6ZnVuY3Rpb24gbigpe2UuZnJhbWUrKyxlLmNhbGxzPTAsZS50cmlhbmdsZXM9MCxlLnBvaW50cz0wLGUubGluZXM9MH0sdXBkYXRlOmZ1bmN0aW9uIGkodCxuLHIpe3N3aXRjaChlLmNhbGxzKyssbil7Y2FzZSA0OmUudHJpYW5nbGVzKz1yKih0LzMpO2JyZWFrO2Nhc2UgMTplLmxpbmVzKz1yKih0LzIpO2JyZWFrO2Nhc2UgMzplLmxpbmVzKz1yKih0LTEpO2JyZWFrO2Nhc2UgMjplLmxpbmVzKz1yKnQ7YnJlYWs7Y2FzZSAwOmUucG9pbnRzKz1yKnQ7YnJlYWs7ZGVmYXVsdDpjb25zb2xlLmVycm9yKCJUSFJFRS5XZWJHTEluZm86IFVua25vd24gZHJhdyBtb2RlOiIsbil9fX19ZnVuY3Rpb24gczl0KHQsZSl7cmV0dXJuIHRbMF0tZVswXX1mdW5jdGlvbiBsOXQodCxlKXtyZXR1cm4gTWF0aC5hYnMoZVsxXSktTWF0aC5hYnModFsxXSl9ZnVuY3Rpb24gYzl0KHQpe2NvbnN0IGU9e30sbj1uZXcgRmxvYXQzMkFycmF5KDgpLGk9W107Zm9yKGxldCB0PTA7dDw4O3QrKylpW3RdPVt0LDBdO3JldHVybnt1cGRhdGU6ZnVuY3Rpb24gcihvLGEscyxsKXtjb25zdCBjPW8ubW9ycGhUYXJnZXRJbmZsdWVuY2VzLHU9dm9pZCAwPT09Yz8wOmMubGVuZ3RoO2xldCBoPWVbYS5pZF07aWYodm9pZCAwPT09aHx8aC5sZW5ndGghPT11KXtoPVtdO2ZvcihsZXQgdD0wO3Q8dTt0KyspaFt0XT1bdCwwXTtlW2EuaWRdPWh9Zm9yKGxldCB0PTA7dDx1O3QrKyl7Y29uc3QgZT1oW3RdO2VbMF09dCxlWzFdPWNbdF19aC5zb3J0KGw5dCk7Zm9yKGxldCB0PTA7dDw4O3QrKyl0PHUmJmhbdF1bMV0/KGlbdF1bMF09aFt0XVswXSxpW3RdWzFdPWhbdF1bMV0pOihpW3RdWzBdPU51bWJlci5NQVhfU0FGRV9JTlRFR0VSLGlbdF1bMV09MCk7aS5zb3J0KHM5dCk7Y29uc3QgZD1hLm1vcnBoQXR0cmlidXRlcy5wb3NpdGlvbixwPWEubW9ycGhBdHRyaWJ1dGVzLm5vcm1hbDtsZXQgZj0wO2ZvcihsZXQgdD0wO3Q8ODt0Kyspe2NvbnN0IGU9aVt0XSxyPWVbMF0sbz1lWzFdO3IhPT1OdW1iZXIuTUFYX1NBRkVfSU5URUdFUiYmbz8oZCYmYS5nZXRBdHRyaWJ1dGUoIm1vcnBoVGFyZ2V0Iit0KSE9PWRbcl0mJmEuc2V0QXR0cmlidXRlKCJtb3JwaFRhcmdldCIrdCxkW3JdKSxwJiZhLmdldEF0dHJpYnV0ZSgibW9ycGhOb3JtYWwiK3QpIT09cFtyXSYmYS5zZXRBdHRyaWJ1dGUoIm1vcnBoTm9ybWFsIit0LHBbcl0pLG5bdF09byxmKz1vKTooZCYmITA9PT1hLmhhc0F0dHJpYnV0ZSgibW9ycGhUYXJnZXQiK3QpJiZhLmRlbGV0ZUF0dHJpYnV0ZSgibW9ycGhUYXJnZXQiK3QpLHAmJiEwPT09YS5oYXNBdHRyaWJ1dGUoIm1vcnBoTm9ybWFsIit0KSYmYS5kZWxldGVBdHRyaWJ1dGUoIm1vcnBoTm9ybWFsIit0KSxuW3RdPTApfWNvbnN0IG09YS5tb3JwaFRhcmdldHNSZWxhdGl2ZT8xOjEtZjtsLmdldFVuaWZvcm1zKCkuc2V0VmFsdWUodCwibW9ycGhUYXJnZXRCYXNlSW5mbHVlbmNlIixtKSxsLmdldFVuaWZvcm1zKCkuc2V0VmFsdWUodCwibW9ycGhUYXJnZXRJbmZsdWVuY2VzIixuKX19fWZ1bmN0aW9uIHU5dCh0LGUsbixpKXtsZXQgcj1uZXcgV2Vha01hcDtmdW5jdGlvbiBvKHQpe2NvbnN0IGU9dC50YXJnZXQ7ZS5yZW1vdmVFdmVudExpc3RlbmVyKCJkaXNwb3NlIixvKSxuLnJlbW92ZShlLmluc3RhbmNlTWF0cml4KSxudWxsIT09ZS5pbnN0YW5jZUNvbG9yJiZuLnJlbW92ZShlLmluc3RhbmNlQ29sb3IpfXJldHVybnt1cGRhdGU6ZnVuY3Rpb24gYSh0KXtjb25zdCBhPWkucmVuZGVyLmZyYW1lLHM9ZS5nZXQodCx0Lmdlb21ldHJ5KTtyZXR1cm4gci5nZXQocykhPT1hJiYoZS51cGRhdGUocyksci5zZXQocyxhKSksdC5pc0luc3RhbmNlZE1lc2gmJighMT09PXQuaGFzRXZlbnRMaXN0ZW5lcigiZGlzcG9zZSIsbykmJnQuYWRkRXZlbnRMaXN0ZW5lcigiZGlzcG9zZSIsbyksbi51cGRhdGUodC5pbnN0YW5jZU1hdHJpeCwzNDk2MiksbnVsbCE9PXQuaW5zdGFuY2VDb2xvciYmbi51cGRhdGUodC5pbnN0YW5jZUNvbG9yLDM0OTYyKSksc30sZGlzcG9zZTpmdW5jdGlvbiBzKCl7cj1uZXcgV2Vha01hcH19fWNsYXNzIGg5dCBleHRlbmRzIE41dHtjb25zdHJ1Y3Rvcih0PW51bGwsZT0xLG49MSxpPTEpe3N1cGVyKG51bGwpLHRoaXMuaW1hZ2U9e2RhdGE6dCx3aWR0aDplLGhlaWdodDpuLGRlcHRoOml9LHRoaXMubWFnRmlsdGVyPXUydCx0aGlzLm1pbkZpbHRlcj11MnQsdGhpcy53cmFwUj1sMnQsdGhpcy5nZW5lcmF0ZU1pcG1hcHM9ITEsdGhpcy5mbGlwWT0hMSx0aGlzLnVucGFja0FsaWdubWVudD0xLHRoaXMubmVlZHNVcGRhdGU9ITB9fWg5dC5wcm90b3R5cGUuaXNEYXRhVGV4dHVyZTJEQXJyYXk9ITA7Y2xhc3MgZDl0IGV4dGVuZHMgTjV0e2NvbnN0cnVjdG9yKHQ9bnVsbCxlPTEsbj0xLGk9MSl7c3VwZXIobnVsbCksdGhpcy5pbWFnZT17ZGF0YTp0LHdpZHRoOmUsaGVpZ2h0Om4sZGVwdGg6aX0sdGhpcy5tYWdGaWx0ZXI9dTJ0LHRoaXMubWluRmlsdGVyPXUydCx0aGlzLndyYXBSPWwydCx0aGlzLmdlbmVyYXRlTWlwbWFwcz0hMSx0aGlzLmZsaXBZPSExLHRoaXMudW5wYWNrQWxpZ25tZW50PTEsdGhpcy5uZWVkc1VwZGF0ZT0hMH19ZDl0LnByb3RvdHlwZS5pc0RhdGFUZXh0dXJlM0Q9ITA7Y29uc3QgcDl0PW5ldyBONXQsZjl0PW5ldyBoOXQsbTl0PW5ldyBkOXQsZzl0PW5ldyBzNnQsXzl0PVtdLHk5dD1bXSx2OXQ9bmV3IEZsb2F0MzJBcnJheSgxNiksYjl0PW5ldyBGbG9hdDMyQXJyYXkoOSkseDl0PW5ldyBGbG9hdDMyQXJyYXkoNCk7ZnVuY3Rpb24gdzl0KHQsZSxuKXtjb25zdCBpPXRbMF07aWYoaTw9MHx8aT4wKXJldHVybiB0O2NvbnN0IHI9ZSpuO2xldCBvPV85dFtyXTtpZih2b2lkIDA9PT1vJiYobz1uZXcgRmxvYXQzMkFycmF5KHIpLF85dFtyXT1vKSwwIT09ZSl7aS50b0FycmF5KG8sMCk7Zm9yKGxldCBpPTEscj0wO2khPT1lOysraSlyKz1uLHRbaV0udG9BcnJheShvLHIpfXJldHVybiBvfWZ1bmN0aW9uIFM5dCh0LGUpe2lmKHQubGVuZ3RoIT09ZS5sZW5ndGgpcmV0dXJuITE7Zm9yKGxldCBuPTAsaT10Lmxlbmd0aDtuPGk7bisrKWlmKHRbbl0hPT1lW25dKXJldHVybiExO3JldHVybiEwfWZ1bmN0aW9uIE05dCh0LGUpe2ZvcihsZXQgbj0wLGk9ZS5sZW5ndGg7bjxpO24rKyl0W25dPWVbbl19ZnVuY3Rpb24gRTl0KHQsZSl7bGV0IG49eTl0W2VdO3ZvaWQgMD09PW4mJihuPW5ldyBJbnQzMkFycmF5KGUpLHk5dFtlXT1uKTtmb3IobGV0IGk9MDtpIT09ZTsrK2kpbltpXT10LmFsbG9jYXRlVGV4dHVyZVVuaXQoKTtyZXR1cm4gbn1mdW5jdGlvbiBUOXQodCxlKXtjb25zdCBuPXRoaXMuY2FjaGU7blswXSE9PWUmJih0LnVuaWZvcm0xZih0aGlzLmFkZHIsZSksblswXT1lKX1mdW5jdGlvbiBDOXQodCxlKXtjb25zdCBuPXRoaXMuY2FjaGU7aWYodm9pZCAwIT09ZS54KW5bMF09PT1lLngmJm5bMV09PT1lLnl8fCh0LnVuaWZvcm0yZih0aGlzLmFkZHIsZS54LGUueSksblswXT1lLngsblsxXT1lLnkpO2Vsc2V7aWYoUzl0KG4sZSkpcmV0dXJuO3QudW5pZm9ybTJmdih0aGlzLmFkZHIsZSksTTl0KG4sZSl9fWZ1bmN0aW9uIEE5dCh0LGUpe2NvbnN0IG49dGhpcy5jYWNoZTtpZih2b2lkIDAhPT1lLngpblswXT09PWUueCYmblsxXT09PWUueSYmblsyXT09PWUuenx8KHQudW5pZm9ybTNmKHRoaXMuYWRkcixlLngsZS55LGUueiksblswXT1lLngsblsxXT1lLnksblsyXT1lLnopO2Vsc2UgaWYodm9pZCAwIT09ZS5yKW5bMF09PT1lLnImJm5bMV09PT1lLmcmJm5bMl09PT1lLmJ8fCh0LnVuaWZvcm0zZih0aGlzLmFkZHIsZS5yLGUuZyxlLmIpLG5bMF09ZS5yLG5bMV09ZS5nLG5bMl09ZS5iKTtlbHNle2lmKFM5dChuLGUpKXJldHVybjt0LnVuaWZvcm0zZnYodGhpcy5hZGRyLGUpLE05dChuLGUpfX1mdW5jdGlvbiBrOXQodCxlKXtjb25zdCBuPXRoaXMuY2FjaGU7aWYodm9pZCAwIT09ZS54KW5bMF09PT1lLngmJm5bMV09PT1lLnkmJm5bMl09PT1lLnomJm5bM109PT1lLnd8fCh0LnVuaWZvcm00Zih0aGlzLmFkZHIsZS54LGUueSxlLnosZS53KSxuWzBdPWUueCxuWzFdPWUueSxuWzJdPWUueixuWzNdPWUudyk7ZWxzZXtpZihTOXQobixlKSlyZXR1cm47dC51bmlmb3JtNGZ2KHRoaXMuYWRkcixlKSxNOXQobixlKX19ZnVuY3Rpb24gTDl0KHQsZSl7Y29uc3Qgbj10aGlzLmNhY2hlLGk9ZS5lbGVtZW50cztpZih2b2lkIDA9PT1pKXtpZihTOXQobixlKSlyZXR1cm47dC51bmlmb3JtTWF0cml4MmZ2KHRoaXMuYWRkciwhMSxlKSxNOXQobixlKX1lbHNle2lmKFM5dChuLGkpKXJldHVybjt4OXQuc2V0KGkpLHQudW5pZm9ybU1hdHJpeDJmdih0aGlzLmFkZHIsITEseDl0KSxNOXQobixpKX19ZnVuY3Rpb24gUDl0KHQsZSl7Y29uc3Qgbj10aGlzLmNhY2hlLGk9ZS5lbGVtZW50cztpZih2b2lkIDA9PT1pKXtpZihTOXQobixlKSlyZXR1cm47dC51bmlmb3JtTWF0cml4M2Z2KHRoaXMuYWRkciwhMSxlKSxNOXQobixlKX1lbHNle2lmKFM5dChuLGkpKXJldHVybjtiOXQuc2V0KGkpLHQudW5pZm9ybU1hdHJpeDNmdih0aGlzLmFkZHIsITEsYjl0KSxNOXQobixpKX19ZnVuY3Rpb24gTjl0KHQsZSl7Y29uc3Qgbj10aGlzLmNhY2hlLGk9ZS5lbGVtZW50cztpZih2b2lkIDA9PT1pKXtpZihTOXQobixlKSlyZXR1cm47dC51bmlmb3JtTWF0cml4NGZ2KHRoaXMuYWRkciwhMSxlKSxNOXQobixlKX1lbHNle2lmKFM5dChuLGkpKXJldHVybjt2OXQuc2V0KGkpLHQudW5pZm9ybU1hdHJpeDRmdih0aGlzLmFkZHIsITEsdjl0KSxNOXQobixpKX19ZnVuY3Rpb24gSTl0KHQsZSl7Y29uc3Qgbj10aGlzLmNhY2hlO25bMF0hPT1lJiYodC51bmlmb3JtMWkodGhpcy5hZGRyLGUpLG5bMF09ZSl9ZnVuY3Rpb24gUjl0KHQsZSl7Y29uc3Qgbj10aGlzLmNhY2hlO1M5dChuLGUpfHwodC51bmlmb3JtMml2KHRoaXMuYWRkcixlKSxNOXQobixlKSl9ZnVuY3Rpb24gTzl0KHQsZSl7Y29uc3Qgbj10aGlzLmNhY2hlO1M5dChuLGUpfHwodC51bmlmb3JtM2l2KHRoaXMuYWRkcixlKSxNOXQobixlKSl9ZnVuY3Rpb24gejl0KHQsZSl7Y29uc3Qgbj10aGlzLmNhY2hlO1M5dChuLGUpfHwodC51bmlmb3JtNGl2KHRoaXMuYWRkcixlKSxNOXQobixlKSl9ZnVuY3Rpb24gRDl0KHQsZSl7Y29uc3Qgbj10aGlzLmNhY2hlO25bMF0hPT1lJiYodC51bmlmb3JtMXVpKHRoaXMuYWRkcixlKSxuWzBdPWUpfWZ1bmN0aW9uIEI5dCh0LGUpe2NvbnN0IG49dGhpcy5jYWNoZTtTOXQobixlKXx8KHQudW5pZm9ybTJ1aXYodGhpcy5hZGRyLGUpLE05dChuLGUpKX1mdW5jdGlvbiBIOXQodCxlKXtjb25zdCBuPXRoaXMuY2FjaGU7Uzl0KG4sZSl8fCh0LnVuaWZvcm0zdWl2KHRoaXMuYWRkcixlKSxNOXQobixlKSl9ZnVuY3Rpb24gRjl0KHQsZSl7Y29uc3Qgbj10aGlzLmNhY2hlO1M5dChuLGUpfHwodC51bmlmb3JtNHVpdih0aGlzLmFkZHIsZSksTTl0KG4sZSkpfWZ1bmN0aW9uIFY5dCh0LGUsbil7Y29uc3QgaT10aGlzLmNhY2hlLHI9bi5hbGxvY2F0ZVRleHR1cmVVbml0KCk7aVswXSE9PXImJih0LnVuaWZvcm0xaSh0aGlzLmFkZHIsciksaVswXT1yKSxuLnNhZmVTZXRUZXh0dXJlMkQoZXx8cDl0LHIpfWZ1bmN0aW9uIFU5dCh0LGUsbil7Y29uc3QgaT10aGlzLmNhY2hlLHI9bi5hbGxvY2F0ZVRleHR1cmVVbml0KCk7aVswXSE9PXImJih0LnVuaWZvcm0xaSh0aGlzLmFkZHIsciksaVswXT1yKSxuLnNldFRleHR1cmUzRChlfHxtOXQscil9ZnVuY3Rpb24gajl0KHQsZSxuKXtjb25zdCBpPXRoaXMuY2FjaGUscj1uLmFsbG9jYXRlVGV4dHVyZVVuaXQoKTtpWzBdIT09ciYmKHQudW5pZm9ybTFpKHRoaXMuYWRkcixyKSxpWzBdPXIpLG4uc2FmZVNldFRleHR1cmVDdWJlKGV8fGc5dCxyKX1mdW5jdGlvbiBHOXQodCxlLG4pe2NvbnN0IGk9dGhpcy5jYWNoZSxyPW4uYWxsb2NhdGVUZXh0dXJlVW5pdCgpO2lbMF0hPT1yJiYodC51bmlmb3JtMWkodGhpcy5hZGRyLHIpLGlbMF09ciksbi5zZXRUZXh0dXJlMkRBcnJheShlfHxmOXQscil9ZnVuY3Rpb24gVzl0KHQsZSl7dC51bmlmb3JtMWZ2KHRoaXMuYWRkcixlKX1mdW5jdGlvbiBxOXQodCxlKXtjb25zdCBuPXc5dChlLHRoaXMuc2l6ZSwyKTt0LnVuaWZvcm0yZnYodGhpcy5hZGRyLG4pfWZ1bmN0aW9uIFk5dCh0LGUpe2NvbnN0IG49dzl0KGUsdGhpcy5zaXplLDMpO3QudW5pZm9ybTNmdih0aGlzLmFkZHIsbil9ZnVuY3Rpb24gWDl0KHQsZSl7Y29uc3Qgbj13OXQoZSx0aGlzLnNpemUsNCk7dC51bmlmb3JtNGZ2KHRoaXMuYWRkcixuKX1mdW5jdGlvbiAkOXQodCxlKXtjb25zdCBuPXc5dChlLHRoaXMuc2l6ZSw0KTt0LnVuaWZvcm1NYXRyaXgyZnYodGhpcy5hZGRyLCExLG4pfWZ1bmN0aW9uIEs5dCh0LGUpe2NvbnN0IG49dzl0KGUsdGhpcy5zaXplLDkpO3QudW5pZm9ybU1hdHJpeDNmdih0aGlzLmFkZHIsITEsbil9ZnVuY3Rpb24gWjl0KHQsZSl7Y29uc3Qgbj13OXQoZSx0aGlzLnNpemUsMTYpO3QudW5pZm9ybU1hdHJpeDRmdih0aGlzLmFkZHIsITEsbil9ZnVuY3Rpb24gSjl0KHQsZSl7dC51bmlmb3JtMWl2KHRoaXMuYWRkcixlKX1mdW5jdGlvbiBROXQodCxlKXt0LnVuaWZvcm0yaXYodGhpcy5hZGRyLGUpfWZ1bmN0aW9uIHQ4dCh0LGUpe3QudW5pZm9ybTNpdih0aGlzLmFkZHIsZSl9ZnVuY3Rpb24gZTh0KHQsZSl7dC51bmlmb3JtNGl2KHRoaXMuYWRkcixlKX1mdW5jdGlvbiBuOHQodCxlKXt0LnVuaWZvcm0xdWl2KHRoaXMuYWRkcixlKX1mdW5jdGlvbiBpOHQodCxlKXt0LnVuaWZvcm0ydWl2KHRoaXMuYWRkcixlKX1mdW5jdGlvbiByOHQodCxlKXt0LnVuaWZvcm0zdWl2KHRoaXMuYWRkcixlKX1mdW5jdGlvbiBvOHQodCxlKXt0LnVuaWZvcm00dWl2KHRoaXMuYWRkcixlKX1mdW5jdGlvbiBhOHQodCxlLG4pe2NvbnN0IGk9ZS5sZW5ndGgscj1FOXQobixpKTt0LnVuaWZvcm0xaXYodGhpcy5hZGRyLHIpO2ZvcihsZXQgdD0wO3QhPT1pOysrdCluLnNhZmVTZXRUZXh0dXJlMkQoZVt0XXx8cDl0LHJbdF0pfWZ1bmN0aW9uIHM4dCh0LGUsbil7Y29uc3QgaT1lLmxlbmd0aCxyPUU5dChuLGkpO3QudW5pZm9ybTFpdih0aGlzLmFkZHIscik7Zm9yKGxldCB0PTA7dCE9PWk7Kyt0KW4uc2FmZVNldFRleHR1cmVDdWJlKGVbdF18fGc5dCxyW3RdKX1mdW5jdGlvbiBsOHQodCxlLG4pe3RoaXMuaWQ9dCx0aGlzLmFkZHI9bix0aGlzLmNhY2hlPVtdLHRoaXMuc2V0VmFsdWU9KGZ1bmN0aW9uIGkodCl7c3dpdGNoKHQpe2Nhc2UgNTEyNjpyZXR1cm4gVDl0O2Nhc2UgMzU2NjQ6cmV0dXJuIEM5dDtjYXNlIDM1NjY1OnJldHVybiBBOXQ7Y2FzZSAzNTY2NjpyZXR1cm4gazl0O2Nhc2UgMzU2NzQ6cmV0dXJuIEw5dDtjYXNlIDM1Njc1OnJldHVybiBQOXQ7Y2FzZSAzNTY3NjpyZXR1cm4gTjl0O2Nhc2UgNTEyNDpjYXNlIDM1NjcwOnJldHVybiBJOXQ7Y2FzZSAzNTY2NzpjYXNlIDM1NjcxOnJldHVybiBSOXQ7Y2FzZSAzNTY2ODpjYXNlIDM1NjcyOnJldHVybiBPOXQ7Y2FzZSAzNTY2OTpjYXNlIDM1NjczOnJldHVybiB6OXQ7Y2FzZSA1MTI1OnJldHVybiBEOXQ7Y2FzZSAzNjI5NDpyZXR1cm4gQjl0O2Nhc2UgMzYyOTU6cmV0dXJuIEg5dDtjYXNlIDM2Mjk2OnJldHVybiBGOXQ7Y2FzZSAzNTY3ODpjYXNlIDM2MTk4OmNhc2UgMzYyOTg6Y2FzZSAzNjMwNjpjYXNlIDM1NjgyOnJldHVybiBWOXQ7Y2FzZSAzNTY3OTpjYXNlIDM2Mjk5OmNhc2UgMzYzMDc6cmV0dXJuIFU5dDtjYXNlIDM1NjgwOmNhc2UgMzYzMDA6Y2FzZSAzNjMwODpjYXNlIDM2MjkzOnJldHVybiBqOXQ7Y2FzZSAzNjI4OTpjYXNlIDM2MzAzOmNhc2UgMzYzMTE6Y2FzZSAzNjI5MjpyZXR1cm4gRzl0fX0pKGUudHlwZSl9ZnVuY3Rpb24gYzh0KHQsZSxuKXt0aGlzLmlkPXQsdGhpcy5hZGRyPW4sdGhpcy5jYWNoZT1bXSx0aGlzLnNpemU9ZS5zaXplLHRoaXMuc2V0VmFsdWU9KGZ1bmN0aW9uIGkodCl7c3dpdGNoKHQpe2Nhc2UgNTEyNjpyZXR1cm4gVzl0O2Nhc2UgMzU2NjQ6cmV0dXJuIHE5dDtjYXNlIDM1NjY1OnJldHVybiBZOXQ7Y2FzZSAzNTY2NjpyZXR1cm4gWDl0O2Nhc2UgMzU2NzQ6cmV0dXJuICQ5dDtjYXNlIDM1Njc1OnJldHVybiBLOXQ7Y2FzZSAzNTY3NjpyZXR1cm4gWjl0O2Nhc2UgNTEyNDpjYXNlIDM1NjcwOnJldHVybiBKOXQ7Y2FzZSAzNTY2NzpjYXNlIDM1NjcxOnJldHVybiBROXQ7Y2FzZSAzNTY2ODpjYXNlIDM1NjcyOnJldHVybiB0OHQ7Y2FzZSAzNTY2OTpjYXNlIDM1NjczOnJldHVybiBlOHQ7Y2FzZSA1MTI1OnJldHVybiBuOHQ7Y2FzZSAzNjI5NDpyZXR1cm4gaTh0O2Nhc2UgMzYyOTU6cmV0dXJuIHI4dDtjYXNlIDM2Mjk2OnJldHVybiBvOHQ7Y2FzZSAzNTY3ODpjYXNlIDM2MTk4OmNhc2UgMzYyOTg6Y2FzZSAzNjMwNjpjYXNlIDM1NjgyOnJldHVybiBhOHQ7Y2FzZSAzNTY4MDpjYXNlIDM2MzAwOmNhc2UgMzYzMDg6Y2FzZSAzNjI5MzpyZXR1cm4gczh0fX0pKGUudHlwZSl9ZnVuY3Rpb24gdTh0KHQpe3RoaXMuaWQ9dCx0aGlzLnNlcT1bXSx0aGlzLm1hcD17fX1jOHQucHJvdG90eXBlLnVwZGF0ZUNhY2hlPWZ1bmN0aW9uKHQpe2NvbnN0IGU9dGhpcy5jYWNoZTt0IGluc3RhbmNlb2YgRmxvYXQzMkFycmF5JiZlLmxlbmd0aCE9PXQubGVuZ3RoJiYodGhpcy5jYWNoZT1uZXcgRmxvYXQzMkFycmF5KHQubGVuZ3RoKSksTTl0KGUsdCl9LHU4dC5wcm90b3R5cGUuc2V0VmFsdWU9ZnVuY3Rpb24odCxlLG4pe2NvbnN0IGk9dGhpcy5zZXE7Zm9yKGxldCByPTAsbz1pLmxlbmd0aDtyIT09bzsrK3Ipe2NvbnN0IG89aVtyXTtvLnNldFZhbHVlKHQsZVtvLmlkXSxuKX19O2NvbnN0IGg4dD0vKFx3KykoXF0pPyhcW3xcLik/L2c7ZnVuY3Rpb24gZDh0KHQsZSl7dC5zZXEucHVzaChlKSx0Lm1hcFtlLmlkXT1lfWZ1bmN0aW9uIHA4dCh0LGUsbil7Y29uc3QgaT10Lm5hbWUscj1pLmxlbmd0aDtmb3IoaDh0Lmxhc3RJbmRleD0wOzspe2NvbnN0IG89aDh0LmV4ZWMoaSksYT1oOHQubGFzdEluZGV4O2xldCBzPW9bMV07Y29uc3QgbD1vWzNdO2lmKCJdIj09PW9bMl0mJihzfD0wKSx2b2lkIDA9PT1sfHwiWyI9PT1sJiZhKzI9PT1yKXtkOHQobix2b2lkIDA9PT1sP25ldyBsOHQocyx0LGUpOm5ldyBjOHQocyx0LGUpKTticmVha317bGV0IHQ9bi5tYXBbc107dm9pZCAwPT09dCYmKHQ9bmV3IHU4dChzKSxkOHQobix0KSksbj10fX19ZnVuY3Rpb24gZjh0KHQsZSl7dGhpcy5zZXE9W10sdGhpcy5tYXA9e307Y29uc3Qgbj10LmdldFByb2dyYW1QYXJhbWV0ZXIoZSwzNTcxOCk7Zm9yKGxldCBpPTA7aTxuOysraSl7Y29uc3Qgbj10LmdldEFjdGl2ZVVuaWZvcm0oZSxpKTtwOHQobix0LmdldFVuaWZvcm1Mb2NhdGlvbihlLG4ubmFtZSksdGhpcyl9fWZ1bmN0aW9uIG04dCh0LGUsbil7Y29uc3QgaT10LmNyZWF0ZVNoYWRlcihlKTtyZXR1cm4gdC5zaGFkZXJTb3VyY2UoaSxuKSx0LmNvbXBpbGVTaGFkZXIoaSksaX1mOHQucHJvdG90eXBlLnNldFZhbHVlPWZ1bmN0aW9uKHQsZSxuLGkpe2NvbnN0IHI9dGhpcy5tYXBbZV07dm9pZCAwIT09ciYmci5zZXRWYWx1ZSh0LG4saSl9LGY4dC5wcm90b3R5cGUuc2V0T3B0aW9uYWw9ZnVuY3Rpb24odCxlLG4pe2NvbnN0IGk9ZVtuXTt2b2lkIDAhPT1pJiZ0aGlzLnNldFZhbHVlKHQsbixpKX0sZjh0LnVwbG9hZD1mdW5jdGlvbih0LGUsbixpKXtmb3IobGV0IHI9MCxvPWUubGVuZ3RoO3IhPT1vOysrcil7Y29uc3Qgbz1lW3JdLGE9bltvLmlkXTshMSE9PWEubmVlZHNVcGRhdGUmJm8uc2V0VmFsdWUodCxhLnZhbHVlLGkpfX0sZjh0LnNlcVdpdGhWYWx1ZT1mdW5jdGlvbih0LGUpe2NvbnN0IG49W107Zm9yKGxldCBpPTAscj10Lmxlbmd0aDtpIT09cjsrK2kpe2NvbnN0IHI9dFtpXTtyLmlkIGluIGUmJm4ucHVzaChyKX1yZXR1cm4gbn07bGV0IGc4dD0wO2Z1bmN0aW9uIF84dCh0KXtzd2l0Y2godCl7Y2FzZSBHMnQ6cmV0dXJuWyJMaW5lYXIiLCIoIHZhbHVlICkiXTtjYXNlIFcydDpyZXR1cm5bInNSR0IiLCIoIHZhbHVlICkiXTtjYXNlIFkydDpyZXR1cm5bIlJHQkUiLCIoIHZhbHVlICkiXTtjYXNlIFgydDpyZXR1cm5bIlJHQk0iLCIoIHZhbHVlLCA3LjAgKSJdO2Nhc2UgJDJ0OnJldHVyblsiUkdCTSIsIiggdmFsdWUsIDE2LjAgKSJdO2Nhc2UgSzJ0OnJldHVyblsiUkdCRCIsIiggdmFsdWUsIDI1Ni4wICkiXTtjYXNlIHEydDpyZXR1cm5bIkdhbW1hIiwiKCB2YWx1ZSwgZmxvYXQoIEdBTU1BX0ZBQ1RPUiApICkiXTtjYXNlIDMwMDM6cmV0dXJuWyJMb2dMdXYiLCIoIHZhbHVlICkiXTtkZWZhdWx0OnJldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUHJvZ3JhbTogVW5zdXBwb3J0ZWQgZW5jb2Rpbmc6Iix0KSxbIkxpbmVhciIsIiggdmFsdWUgKSJdfX1mdW5jdGlvbiB5OHQodCxlLG4pe2NvbnN0IGk9dC5nZXRTaGFkZXJQYXJhbWV0ZXIoZSwzNTcxMykscj10LmdldFNoYWRlckluZm9Mb2coZSkudHJpbSgpO2lmKGkmJiIiPT09cilyZXR1cm4iIjtyZXR1cm4iVEhSRUUuV2ViR0xTaGFkZXI6IGdsLmdldFNoYWRlckluZm9Mb2coKSAiK24rIlxuIityKyhmdW5jdGlvbiBvKHQpe2NvbnN0IGU9dC5zcGxpdCgiXG4iKTtmb3IobGV0IHQ9MDt0PGUubGVuZ3RoO3QrKyllW3RdPXQrMSsiOiAiK2VbdF07cmV0dXJuIGUuam9pbigiXG4iKX0pKHQuZ2V0U2hhZGVyU291cmNlKGUpKX1mdW5jdGlvbiB2OHQodCxlKXtjb25zdCBuPV84dChlKTtyZXR1cm4idmVjNCAiK3QrIiggdmVjNCB2YWx1ZSApIHsgcmV0dXJuICIrblswXSsiVG9MaW5lYXIiK25bMV0rIjsgfSJ9ZnVuY3Rpb24gYjh0KHQsZSl7Y29uc3Qgbj1fOHQoZSk7cmV0dXJuInZlYzQgIit0KyIoIHZlYzQgdmFsdWUgKSB7IHJldHVybiBMaW5lYXJUbyIrblswXStuWzFdKyI7IH0ifWZ1bmN0aW9uIHg4dCh0LGUpe2xldCBuO3N3aXRjaChlKXtjYXNlIDE6bj0iTGluZWFyIjticmVhaztjYXNlIDI6bj0iUmVpbmhhcmQiO2JyZWFrO2Nhc2UgMzpuPSJPcHRpbWl6ZWRDaW5lb24iO2JyZWFrO2Nhc2UgNDpuPSJBQ0VTRmlsbWljIjticmVhaztjYXNlIDU6bj0iQ3VzdG9tIjticmVhaztkZWZhdWx0OmNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xQcm9ncmFtOiBVbnN1cHBvcnRlZCB0b25lTWFwcGluZzoiLGUpLG49IkxpbmVhciJ9cmV0dXJuInZlYzMgIit0KyIoIHZlYzMgY29sb3IgKSB7IHJldHVybiAiK24rIlRvbmVNYXBwaW5nKCBjb2xvciApOyB9In1mdW5jdGlvbiB3OHQodCl7cmV0dXJuIiIhPT10fWZ1bmN0aW9uIFM4dCh0LGUpe3JldHVybiB0LnJlcGxhY2UoL05VTV9ESVJfTElHSFRTL2csZS5udW1EaXJMaWdodHMpLnJlcGxhY2UoL05VTV9TUE9UX0xJR0hUUy9nLGUubnVtU3BvdExpZ2h0cykucmVwbGFjZSgvTlVNX1JFQ1RfQVJFQV9MSUdIVFMvZyxlLm51bVJlY3RBcmVhTGlnaHRzKS5yZXBsYWNlKC9OVU1fUE9JTlRfTElHSFRTL2csZS5udW1Qb2ludExpZ2h0cykucmVwbGFjZSgvTlVNX0hFTUlfTElHSFRTL2csZS5udW1IZW1pTGlnaHRzKS5yZXBsYWNlKC9OVU1fRElSX0xJR0hUX1NIQURPV1MvZyxlLm51bURpckxpZ2h0U2hhZG93cykucmVwbGFjZSgvTlVNX1NQT1RfTElHSFRfU0hBRE9XUy9nLGUubnVtU3BvdExpZ2h0U2hhZG93cykucmVwbGFjZSgvTlVNX1BPSU5UX0xJR0hUX1NIQURPV1MvZyxlLm51bVBvaW50TGlnaHRTaGFkb3dzKX1mdW5jdGlvbiBNOHQodCxlKXtyZXR1cm4gdC5yZXBsYWNlKC9OVU1fQ0xJUFBJTkdfUExBTkVTL2csZS5udW1DbGlwcGluZ1BsYW5lcykucmVwbGFjZSgvVU5JT05fQ0xJUFBJTkdfUExBTkVTL2csZS5udW1DbGlwcGluZ1BsYW5lcy1lLm51bUNsaXBJbnRlcnNlY3Rpb24pfWNvbnN0IEU4dD0vXlsgXHRdKiNpbmNsdWRlICs8KFtcd1xkLi9dKyk+L2dtO2Z1bmN0aW9uIFQ4dCh0KXtyZXR1cm4gdC5yZXBsYWNlKEU4dCxDOHQpfWZ1bmN0aW9uIEM4dCh0LGUpe2NvbnN0IG49djZ0W2VdO2lmKHZvaWQgMD09PW4pdGhyb3cgbmV3IEVycm9yKCJDYW4gbm90IHJlc29sdmUgI2luY2x1ZGUgPCIrZSsiPiIpO3JldHVybiBUOHQobil9Y29uc3QgQTh0PS8jcHJhZ21hIHVucm9sbF9sb29wW1xzXSs/Zm9yIFwoIGludCBpIFw9IChcZCspXDsgaSA8IChcZCspXDsgaSBcK1wrIFwpIFx7KFtcc1xTXSs/KSg/PVx9KVx9L2csazh0PS8jcHJhZ21hIHVucm9sbF9sb29wX3N0YXJ0XHMrZm9yXHMqXChccyppbnRccytpXHMqPVxzKihcZCspXHMqO1xzKmlccyo8XHMqKFxkKylccyo7XHMqaVxzKlwrXCtccypcKVxzKnsoW1xzXFNdKz8pfVxzKyNwcmFnbWEgdW5yb2xsX2xvb3BfZW5kL2c7ZnVuY3Rpb24gTDh0KHQpe3JldHVybiB0LnJlcGxhY2Uoazh0LE44dCkucmVwbGFjZShBOHQsUDh0KX1mdW5jdGlvbiBQOHQodCxlLG4saSl7cmV0dXJuIGNvbnNvbGUud2FybigiV2ViR0xQcm9ncmFtOiAjcHJhZ21hIHVucm9sbF9sb29wIHNoYWRlciBzeW50YXggaXMgZGVwcmVjYXRlZC4gUGxlYXNlIHVzZSAjcHJhZ21hIHVucm9sbF9sb29wX3N0YXJ0IHN5bnRheCBpbnN0ZWFkLiIpLE44dCh0LGUsbixpKX1mdW5jdGlvbiBOOHQodCxlLG4saSl7bGV0IHI9IiI7Zm9yKGxldCB0PXBhcnNlSW50KGUpO3Q8cGFyc2VJbnQobik7dCsrKXIrPWkucmVwbGFjZSgvXFtccyppXHMqXF0vZywiWyAiK3QrIiBdIikucmVwbGFjZSgvVU5ST0xMRURfTE9PUF9JTkRFWC9nLHQpO3JldHVybiByfWZ1bmN0aW9uIEk4dCh0KXtsZXQgZT0icHJlY2lzaW9uICIrdC5wcmVjaXNpb24rIiBmbG9hdDtcbnByZWNpc2lvbiAiK3QucHJlY2lzaW9uKyIgaW50OyI7cmV0dXJuImhpZ2hwIj09PXQucHJlY2lzaW9uP2UrPSJcbiNkZWZpbmUgSElHSF9QUkVDSVNJT04iOiJtZWRpdW1wIj09PXQucHJlY2lzaW9uP2UrPSJcbiNkZWZpbmUgTUVESVVNX1BSRUNJU0lPTiI6Imxvd3AiPT09dC5wcmVjaXNpb24mJihlKz0iXG4jZGVmaW5lIExPV19QUkVDSVNJT04iKSxlfWZ1bmN0aW9uIFI4dCh0LGUsbixpKXtjb25zdCByPXQuZ2V0Q29udGV4dCgpLG89bi5kZWZpbmVzO2xldCBhPW4udmVydGV4U2hhZGVyLHM9bi5mcmFnbWVudFNoYWRlcjtjb25zdCBsPShmdW5jdGlvbiBjKHQpe2xldCBlPSJTSEFET1dNQVBfVFlQRV9CQVNJQyI7cmV0dXJuIDE9PT10LnNoYWRvd01hcFR5cGU/ZT0iU0hBRE9XTUFQX1RZUEVfUENGIjoyPT09dC5zaGFkb3dNYXBUeXBlP2U9IlNIQURPV01BUF9UWVBFX1BDRl9TT0ZUIjozPT09dC5zaGFkb3dNYXBUeXBlJiYoZT0iU0hBRE9XTUFQX1RZUEVfVlNNIiksZX0pKG4pLHU9KGZ1bmN0aW9uIGgodCl7bGV0IGU9IkVOVk1BUF9UWVBFX0NVQkUiO2lmKHQuZW52TWFwKXN3aXRjaCh0LmVudk1hcE1vZGUpe2Nhc2UgZTJ0OmNhc2UgbjJ0OmU9IkVOVk1BUF9UWVBFX0NVQkUiO2JyZWFrO2Nhc2UgbzJ0OmNhc2UgYTJ0OmU9IkVOVk1BUF9UWVBFX0NVQkVfVVYifXJldHVybiBlfSkobiksZD0oZnVuY3Rpb24gcCh0KXtsZXQgZT0iRU5WTUFQX01PREVfUkVGTEVDVElPTiI7aWYodC5lbnZNYXApc3dpdGNoKHQuZW52TWFwTW9kZSl7Y2FzZSBuMnQ6Y2FzZSBhMnQ6ZT0iRU5WTUFQX01PREVfUkVGUkFDVElPTiJ9cmV0dXJuIGV9KShuKSxmPShmdW5jdGlvbiBtKHQpe2xldCBlPSJFTlZNQVBfQkxFTkRJTkdfTk9ORSI7aWYodC5lbnZNYXApc3dpdGNoKHQuY29tYmluZSl7Y2FzZSAwOmU9IkVOVk1BUF9CTEVORElOR19NVUxUSVBMWSI7YnJlYWs7Y2FzZSAxOmU9IkVOVk1BUF9CTEVORElOR19NSVgiO2JyZWFrO2Nhc2UgMjplPSJFTlZNQVBfQkxFTkRJTkdfQUREIn1yZXR1cm4gZX0pKG4pLGc9dC5nYW1tYUZhY3Rvcj4wP3QuZ2FtbWFGYWN0b3I6MSxfPW4uaXNXZWJHTDI/IiI6KGZ1bmN0aW9uIHkodCl7cmV0dXJuW3QuZXh0ZW5zaW9uRGVyaXZhdGl2ZXN8fHQuZW52TWFwQ3ViZVVWfHx0LmJ1bXBNYXB8fHQudGFuZ2VudFNwYWNlTm9ybWFsTWFwfHx0LmNsZWFyY29hdE5vcm1hbE1hcHx8dC5mbGF0U2hhZGluZ3x8InBoeXNpY2FsIj09PXQuc2hhZGVySUQ/IiNleHRlbnNpb24gR0xfT0VTX3N0YW5kYXJkX2Rlcml2YXRpdmVzIDogZW5hYmxlIjoiIiwodC5leHRlbnNpb25GcmFnRGVwdGh8fHQubG9nYXJpdGhtaWNEZXB0aEJ1ZmZlcikmJnQucmVuZGVyZXJFeHRlbnNpb25GcmFnRGVwdGg/IiNleHRlbnNpb24gR0xfRVhUX2ZyYWdfZGVwdGggOiBlbmFibGUiOiIiLHQuZXh0ZW5zaW9uRHJhd0J1ZmZlcnMmJnQucmVuZGVyZXJFeHRlbnNpb25EcmF3QnVmZmVycz8iI2V4dGVuc2lvbiBHTF9FWFRfZHJhd19idWZmZXJzIDogcmVxdWlyZSI6IiIsKHQuZXh0ZW5zaW9uU2hhZGVyVGV4dHVyZUxPRHx8dC5lbnZNYXB8fHQudHJhbnNtaXNzaW9uPjApJiZ0LnJlbmRlcmVyRXh0ZW5zaW9uU2hhZGVyVGV4dHVyZUxvZD8iI2V4dGVuc2lvbiBHTF9FWFRfc2hhZGVyX3RleHR1cmVfbG9kIDogZW5hYmxlIjoiIl0uZmlsdGVyKHc4dCkuam9pbigiXG4iKX0pKG4pLHY9KGZ1bmN0aW9uIGIodCl7Y29uc3QgZT1bXTtmb3IoY29uc3QgbiBpbiB0KXtjb25zdCBpPXRbbl07ITEhPT1pJiZlLnB1c2goIiNkZWZpbmUgIituKyIgIitpKX1yZXR1cm4gZS5qb2luKCJcbiIpfSkobykseD1yLmNyZWF0ZVByb2dyYW0oKTtsZXQgdyxTLE09bi5nbHNsVmVyc2lvbj8iI3ZlcnNpb24gIituLmdsc2xWZXJzaW9uKyJcbiI6IiI7bi5pc1Jhd1NoYWRlck1hdGVyaWFsPyh3PVt2XS5maWx0ZXIodzh0KS5qb2luKCJcbiIpLHcubGVuZ3RoPjAmJih3Kz0iXG4iKSxTPVtfLHZdLmZpbHRlcih3OHQpLmpvaW4oIlxuIiksUy5sZW5ndGg+MCYmKFMrPSJcbiIpKToodz1bSTh0KG4pLCIjZGVmaW5lIFNIQURFUl9OQU1FICIrbi5zaGFkZXJOYW1lLHYsbi5pbnN0YW5jaW5nPyIjZGVmaW5lIFVTRV9JTlNUQU5DSU5HIjoiIixuLmluc3RhbmNpbmdDb2xvcj8iI2RlZmluZSBVU0VfSU5TVEFOQ0lOR19DT0xPUiI6IiIsbi5zdXBwb3J0c1ZlcnRleFRleHR1cmVzPyIjZGVmaW5lIFZFUlRFWF9URVhUVVJFUyI6IiIsIiNkZWZpbmUgR0FNTUFfRkFDVE9SICIrZywiI2RlZmluZSBNQVhfQk9ORVMgIituLm1heEJvbmVzLG4udXNlRm9nJiZuLmZvZz8iI2RlZmluZSBVU0VfRk9HIjoiIixuLnVzZUZvZyYmbi5mb2dFeHAyPyIjZGVmaW5lIEZPR19FWFAyIjoiIixuLm1hcD8iI2RlZmluZSBVU0VfTUFQIjoiIixuLmVudk1hcD8iI2RlZmluZSBVU0VfRU5WTUFQIjoiIixuLmVudk1hcD8iI2RlZmluZSAiK2Q6IiIsbi5saWdodE1hcD8iI2RlZmluZSBVU0VfTElHSFRNQVAiOiIiLG4uYW9NYXA/IiNkZWZpbmUgVVNFX0FPTUFQIjoiIixuLmVtaXNzaXZlTWFwPyIjZGVmaW5lIFVTRV9FTUlTU0lWRU1BUCI6IiIsbi5idW1wTWFwPyIjZGVmaW5lIFVTRV9CVU1QTUFQIjoiIixuLm5vcm1hbE1hcD8iI2RlZmluZSBVU0VfTk9STUFMTUFQIjoiIixuLm5vcm1hbE1hcCYmbi5vYmplY3RTcGFjZU5vcm1hbE1hcD8iI2RlZmluZSBPQkpFQ1RTUEFDRV9OT1JNQUxNQVAiOiIiLG4ubm9ybWFsTWFwJiZuLnRhbmdlbnRTcGFjZU5vcm1hbE1hcD8iI2RlZmluZSBUQU5HRU5UU1BBQ0VfTk9STUFMTUFQIjoiIixuLmNsZWFyY29hdE1hcD8iI2RlZmluZSBVU0VfQ0xFQVJDT0FUTUFQIjoiIixuLmNsZWFyY29hdFJvdWdobmVzc01hcD8iI2RlZmluZSBVU0VfQ0xFQVJDT0FUX1JPVUdITkVTU01BUCI6IiIsbi5jbGVhcmNvYXROb3JtYWxNYXA/IiNkZWZpbmUgVVNFX0NMRUFSQ09BVF9OT1JNQUxNQVAiOiIiLG4uZGlzcGxhY2VtZW50TWFwJiZuLnN1cHBvcnRzVmVydGV4VGV4dHVyZXM/IiNkZWZpbmUgVVNFX0RJU1BMQUNFTUVOVE1BUCI6IiIsbi5zcGVjdWxhck1hcD8iI2RlZmluZSBVU0VfU1BFQ1VMQVJNQVAiOiIiLG4uc3BlY3VsYXJJbnRlbnNpdHlNYXA/IiNkZWZpbmUgVVNFX1NQRUNVTEFSSU5URU5TSVRZTUFQIjoiIixuLnNwZWN1bGFyVGludE1hcD8iI2RlZmluZSBVU0VfU1BFQ1VMQVJUSU5UTUFQIjoiIixuLnJvdWdobmVzc01hcD8iI2RlZmluZSBVU0VfUk9VR0hORVNTTUFQIjoiIixuLm1ldGFsbmVzc01hcD8iI2RlZmluZSBVU0VfTUVUQUxORVNTTUFQIjoiIixuLmFscGhhTWFwPyIjZGVmaW5lIFVTRV9BTFBIQU1BUCI6IiIsbi50cmFuc21pc3Npb24/IiNkZWZpbmUgVVNFX1RSQU5TTUlTU0lPTiI6IiIsbi50cmFuc21pc3Npb25NYXA/IiNkZWZpbmUgVVNFX1RSQU5TTUlTU0lPTk1BUCI6IiIsbi50aGlja25lc3NNYXA/IiNkZWZpbmUgVVNFX1RISUNLTkVTU01BUCI6IiIsbi52ZXJ0ZXhUYW5nZW50cz8iI2RlZmluZSBVU0VfVEFOR0VOVCI6IiIsbi52ZXJ0ZXhDb2xvcnM/IiNkZWZpbmUgVVNFX0NPTE9SIjoiIixuLnZlcnRleEFscGhhcz8iI2RlZmluZSBVU0VfQ09MT1JfQUxQSEEiOiIiLG4udmVydGV4VXZzPyIjZGVmaW5lIFVTRV9VViI6IiIsbi51dnNWZXJ0ZXhPbmx5PyIjZGVmaW5lIFVWU19WRVJURVhfT05MWSI6IiIsbi5mbGF0U2hhZGluZz8iI2RlZmluZSBGTEFUX1NIQURFRCI6IiIsbi5za2lubmluZz8iI2RlZmluZSBVU0VfU0tJTk5JTkciOiIiLG4udXNlVmVydGV4VGV4dHVyZT8iI2RlZmluZSBCT05FX1RFWFRVUkUiOiIiLG4ubW9ycGhUYXJnZXRzPyIjZGVmaW5lIFVTRV9NT1JQSFRBUkdFVFMiOiIiLG4ubW9ycGhOb3JtYWxzJiYhMT09PW4uZmxhdFNoYWRpbmc/IiNkZWZpbmUgVVNFX01PUlBITk9STUFMUyI6IiIsbi5kb3VibGVTaWRlZD8iI2RlZmluZSBET1VCTEVfU0lERUQiOiIiLG4uZmxpcFNpZGVkPyIjZGVmaW5lIEZMSVBfU0lERUQiOiIiLG4uc2hhZG93TWFwRW5hYmxlZD8iI2RlZmluZSBVU0VfU0hBRE9XTUFQIjoiIixuLnNoYWRvd01hcEVuYWJsZWQ/IiNkZWZpbmUgIitsOiIiLG4uc2l6ZUF0dGVudWF0aW9uPyIjZGVmaW5lIFVTRV9TSVpFQVRURU5VQVRJT04iOiIiLG4ubG9nYXJpdGhtaWNEZXB0aEJ1ZmZlcj8iI2RlZmluZSBVU0VfTE9HREVQVEhCVUYiOiIiLG4ubG9nYXJpdGhtaWNEZXB0aEJ1ZmZlciYmbi5yZW5kZXJlckV4dGVuc2lvbkZyYWdEZXB0aD8iI2RlZmluZSBVU0VfTE9HREVQVEhCVUZfRVhUIjoiIiwidW5pZm9ybSBtYXQ0IG1vZGVsTWF0cml4OyIsInVuaWZvcm0gbWF0NCBtb2RlbFZpZXdNYXRyaXg7IiwidW5pZm9ybSBtYXQ0IHByb2plY3Rpb25NYXRyaXg7IiwidW5pZm9ybSBtYXQ0IHZpZXdNYXRyaXg7IiwidW5pZm9ybSBtYXQzIG5vcm1hbE1hdHJpeDsiLCJ1bmlmb3JtIHZlYzMgY2FtZXJhUG9zaXRpb247IiwidW5pZm9ybSBib29sIGlzT3J0aG9ncmFwaGljOyIsIiNpZmRlZiBVU0VfSU5TVEFOQ0lORyIsIlx0YXR0cmlidXRlIG1hdDQgaW5zdGFuY2VNYXRyaXg7IiwiI2VuZGlmIiwiI2lmZGVmIFVTRV9JTlNUQU5DSU5HX0NPTE9SIiwiXHRhdHRyaWJ1dGUgdmVjMyBpbnN0YW5jZUNvbG9yOyIsIiNlbmRpZiIsImF0dHJpYnV0ZSB2ZWMzIHBvc2l0aW9uOyIsImF0dHJpYnV0ZSB2ZWMzIG5vcm1hbDsiLCJhdHRyaWJ1dGUgdmVjMiB1djsiLCIjaWZkZWYgVVNFX1RBTkdFTlQiLCJcdGF0dHJpYnV0ZSB2ZWM0IHRhbmdlbnQ7IiwiI2VuZGlmIiwiI2lmIGRlZmluZWQoIFVTRV9DT0xPUl9BTFBIQSApIiwiXHRhdHRyaWJ1dGUgdmVjNCBjb2xvcjsiLCIjZWxpZiBkZWZpbmVkKCBVU0VfQ09MT1IgKSIsIlx0YXR0cmlidXRlIHZlYzMgY29sb3I7IiwiI2VuZGlmIiwiI2lmZGVmIFVTRV9NT1JQSFRBUkdFVFMiLCJcdGF0dHJpYnV0ZSB2ZWMzIG1vcnBoVGFyZ2V0MDsiLCJcdGF0dHJpYnV0ZSB2ZWMzIG1vcnBoVGFyZ2V0MTsiLCJcdGF0dHJpYnV0ZSB2ZWMzIG1vcnBoVGFyZ2V0MjsiLCJcdGF0dHJpYnV0ZSB2ZWMzIG1vcnBoVGFyZ2V0MzsiLCJcdCNpZmRlZiBVU0VfTU9SUEhOT1JNQUxTIiwiXHRcdGF0dHJpYnV0ZSB2ZWMzIG1vcnBoTm9ybWFsMDsiLCJcdFx0YXR0cmlidXRlIHZlYzMgbW9ycGhOb3JtYWwxOyIsIlx0XHRhdHRyaWJ1dGUgdmVjMyBtb3JwaE5vcm1hbDI7IiwiXHRcdGF0dHJpYnV0ZSB2ZWMzIG1vcnBoTm9ybWFsMzsiLCJcdCNlbHNlIiwiXHRcdGF0dHJpYnV0ZSB2ZWMzIG1vcnBoVGFyZ2V0NDsiLCJcdFx0YXR0cmlidXRlIHZlYzMgbW9ycGhUYXJnZXQ1OyIsIlx0XHRhdHRyaWJ1dGUgdmVjMyBtb3JwaFRhcmdldDY7IiwiXHRcdGF0dHJpYnV0ZSB2ZWMzIG1vcnBoVGFyZ2V0NzsiLCJcdCNlbmRpZiIsIiNlbmRpZiIsIiNpZmRlZiBVU0VfU0tJTk5JTkciLCJcdGF0dHJpYnV0ZSB2ZWM0IHNraW5JbmRleDsiLCJcdGF0dHJpYnV0ZSB2ZWM0IHNraW5XZWlnaHQ7IiwiI2VuZGlmIiwiXG4iXS5maWx0ZXIodzh0KS5qb2luKCJcbiIpLFM9W18sSTh0KG4pLCIjZGVmaW5lIFNIQURFUl9OQU1FICIrbi5zaGFkZXJOYW1lLHYsbi5hbHBoYVRlc3Q/IiNkZWZpbmUgQUxQSEFURVNUICIrbi5hbHBoYVRlc3QrKG4uYWxwaGFUZXN0JTE/IiI6Ii4wIik6IiIsIiNkZWZpbmUgR0FNTUFfRkFDVE9SICIrZyxuLnVzZUZvZyYmbi5mb2c/IiNkZWZpbmUgVVNFX0ZPRyI6IiIsbi51c2VGb2cmJm4uZm9nRXhwMj8iI2RlZmluZSBGT0dfRVhQMiI6IiIsbi5tYXA/IiNkZWZpbmUgVVNFX01BUCI6IiIsbi5tYXRjYXA/IiNkZWZpbmUgVVNFX01BVENBUCI6IiIsbi5lbnZNYXA/IiNkZWZpbmUgVVNFX0VOVk1BUCI6IiIsbi5lbnZNYXA/IiNkZWZpbmUgIit1OiIiLG4uZW52TWFwPyIjZGVmaW5lICIrZDoiIixuLmVudk1hcD8iI2RlZmluZSAiK2Y6IiIsbi5saWdodE1hcD8iI2RlZmluZSBVU0VfTElHSFRNQVAiOiIiLG4uYW9NYXA/IiNkZWZpbmUgVVNFX0FPTUFQIjoiIixuLmVtaXNzaXZlTWFwPyIjZGVmaW5lIFVTRV9FTUlTU0lWRU1BUCI6IiIsbi5idW1wTWFwPyIjZGVmaW5lIFVTRV9CVU1QTUFQIjoiIixuLm5vcm1hbE1hcD8iI2RlZmluZSBVU0VfTk9STUFMTUFQIjoiIixuLm5vcm1hbE1hcCYmbi5vYmplY3RTcGFjZU5vcm1hbE1hcD8iI2RlZmluZSBPQkpFQ1RTUEFDRV9OT1JNQUxNQVAiOiIiLG4ubm9ybWFsTWFwJiZuLnRhbmdlbnRTcGFjZU5vcm1hbE1hcD8iI2RlZmluZSBUQU5HRU5UU1BBQ0VfTk9STUFMTUFQIjoiIixuLmNsZWFyY29hdE1hcD8iI2RlZmluZSBVU0VfQ0xFQVJDT0FUTUFQIjoiIixuLmNsZWFyY29hdFJvdWdobmVzc01hcD8iI2RlZmluZSBVU0VfQ0xFQVJDT0FUX1JPVUdITkVTU01BUCI6IiIsbi5jbGVhcmNvYXROb3JtYWxNYXA/IiNkZWZpbmUgVVNFX0NMRUFSQ09BVF9OT1JNQUxNQVAiOiIiLG4uc3BlY3VsYXJNYXA/IiNkZWZpbmUgVVNFX1NQRUNVTEFSTUFQIjoiIixuLnNwZWN1bGFySW50ZW5zaXR5TWFwPyIjZGVmaW5lIFVTRV9TUEVDVUxBUklOVEVOU0lUWU1BUCI6IiIsbi5zcGVjdWxhclRpbnRNYXA/IiNkZWZpbmUgVVNFX1NQRUNVTEFSVElOVE1BUCI6IiIsbi5yb3VnaG5lc3NNYXA/IiNkZWZpbmUgVVNFX1JPVUdITkVTU01BUCI6IiIsbi5tZXRhbG5lc3NNYXA/IiNkZWZpbmUgVVNFX01FVEFMTkVTU01BUCI6IiIsbi5hbHBoYU1hcD8iI2RlZmluZSBVU0VfQUxQSEFNQVAiOiIiLG4uc2hlZW4/IiNkZWZpbmUgVVNFX1NIRUVOIjoiIixuLnRyYW5zbWlzc2lvbj8iI2RlZmluZSBVU0VfVFJBTlNNSVNTSU9OIjoiIixuLnRyYW5zbWlzc2lvbk1hcD8iI2RlZmluZSBVU0VfVFJBTlNNSVNTSU9OTUFQIjoiIixuLnRoaWNrbmVzc01hcD8iI2RlZmluZSBVU0VfVEhJQ0tORVNTTUFQIjoiIixuLnZlcnRleFRhbmdlbnRzPyIjZGVmaW5lIFVTRV9UQU5HRU5UIjoiIixuLnZlcnRleENvbG9yc3x8bi5pbnN0YW5jaW5nQ29sb3I/IiNkZWZpbmUgVVNFX0NPTE9SIjoiIixuLnZlcnRleEFscGhhcz8iI2RlZmluZSBVU0VfQ09MT1JfQUxQSEEiOiIiLG4udmVydGV4VXZzPyIjZGVmaW5lIFVTRV9VViI6IiIsbi51dnNWZXJ0ZXhPbmx5PyIjZGVmaW5lIFVWU19WRVJURVhfT05MWSI6IiIsbi5ncmFkaWVudE1hcD8iI2RlZmluZSBVU0VfR1JBRElFTlRNQVAiOiIiLG4uZmxhdFNoYWRpbmc/IiNkZWZpbmUgRkxBVF9TSEFERUQiOiIiLG4uZG91YmxlU2lkZWQ/IiNkZWZpbmUgRE9VQkxFX1NJREVEIjoiIixuLmZsaXBTaWRlZD8iI2RlZmluZSBGTElQX1NJREVEIjoiIixuLnNoYWRvd01hcEVuYWJsZWQ/IiNkZWZpbmUgVVNFX1NIQURPV01BUCI6IiIsbi5zaGFkb3dNYXBFbmFibGVkPyIjZGVmaW5lICIrbDoiIixuLnByZW11bHRpcGxpZWRBbHBoYT8iI2RlZmluZSBQUkVNVUxUSVBMSUVEX0FMUEhBIjoiIixuLnBoeXNpY2FsbHlDb3JyZWN0TGlnaHRzPyIjZGVmaW5lIFBIWVNJQ0FMTFlfQ09SUkVDVF9MSUdIVFMiOiIiLG4ubG9nYXJpdGhtaWNEZXB0aEJ1ZmZlcj8iI2RlZmluZSBVU0VfTE9HREVQVEhCVUYiOiIiLG4ubG9nYXJpdGhtaWNEZXB0aEJ1ZmZlciYmbi5yZW5kZXJlckV4dGVuc2lvbkZyYWdEZXB0aD8iI2RlZmluZSBVU0VfTE9HREVQVEhCVUZfRVhUIjoiIiwobi5leHRlbnNpb25TaGFkZXJUZXh0dXJlTE9EfHxuLmVudk1hcCkmJm4ucmVuZGVyZXJFeHRlbnNpb25TaGFkZXJUZXh0dXJlTG9kPyIjZGVmaW5lIFRFWFRVUkVfTE9EX0VYVCI6IiIsInVuaWZvcm0gbWF0NCB2aWV3TWF0cml4OyIsInVuaWZvcm0gdmVjMyBjYW1lcmFQb3NpdGlvbjsiLCJ1bmlmb3JtIGJvb2wgaXNPcnRob2dyYXBoaWM7IiwwIT09bi50b25lTWFwcGluZz8iI2RlZmluZSBUT05FX01BUFBJTkciOiIiLDAhPT1uLnRvbmVNYXBwaW5nP3Y2dC50b25lbWFwcGluZ19wYXJzX2ZyYWdtZW50OiIiLDAhPT1uLnRvbmVNYXBwaW5nP3g4dCgidG9uZU1hcHBpbmciLG4udG9uZU1hcHBpbmcpOiIiLG4uZGl0aGVyaW5nPyIjZGVmaW5lIERJVEhFUklORyI6IiIsdjZ0LmVuY29kaW5nc19wYXJzX2ZyYWdtZW50LG4ubWFwP3Y4dCgibWFwVGV4ZWxUb0xpbmVhciIsbi5tYXBFbmNvZGluZyk6IiIsbi5tYXRjYXA/djh0KCJtYXRjYXBUZXhlbFRvTGluZWFyIixuLm1hdGNhcEVuY29kaW5nKToiIixuLmVudk1hcD92OHQoImVudk1hcFRleGVsVG9MaW5lYXIiLG4uZW52TWFwRW5jb2RpbmcpOiIiLG4uZW1pc3NpdmVNYXA/djh0KCJlbWlzc2l2ZU1hcFRleGVsVG9MaW5lYXIiLG4uZW1pc3NpdmVNYXBFbmNvZGluZyk6IiIsbi5zcGVjdWxhclRpbnRNYXA/djh0KCJzcGVjdWxhclRpbnRNYXBUZXhlbFRvTGluZWFyIixuLnNwZWN1bGFyVGludE1hcEVuY29kaW5nKToiIixuLmxpZ2h0TWFwP3Y4dCgibGlnaHRNYXBUZXhlbFRvTGluZWFyIixuLmxpZ2h0TWFwRW5jb2RpbmcpOiIiLGI4dCgibGluZWFyVG9PdXRwdXRUZXhlbCIsbi5vdXRwdXRFbmNvZGluZyksbi5kZXB0aFBhY2tpbmc/IiNkZWZpbmUgREVQVEhfUEFDS0lORyAiK24uZGVwdGhQYWNraW5nOiIiLCJcbiJdLmZpbHRlcih3OHQpLmpvaW4oIlxuIikpLGE9VDh0KGEpLGE9Uzh0KGEsbiksYT1NOHQoYSxuKSxzPVQ4dChzKSxzPVM4dChzLG4pLHM9TTh0KHMsbiksYT1MOHQoYSkscz1MOHQocyksbi5pc1dlYkdMMiYmITAhPT1uLmlzUmF3U2hhZGVyTWF0ZXJpYWwmJihNPSIjdmVyc2lvbiAzMDAgZXNcbiIsdz1bIiNkZWZpbmUgYXR0cmlidXRlIGluIiwiI2RlZmluZSB2YXJ5aW5nIG91dCIsIiNkZWZpbmUgdGV4dHVyZTJEIHRleHR1cmUiXS5qb2luKCJcbiIpKyJcbiIrdyxTPVsiI2RlZmluZSB2YXJ5aW5nIGluIixuLmdsc2xWZXJzaW9uPT09dDV0PyIiOiJvdXQgaGlnaHAgdmVjNCBwY19mcmFnQ29sb3I7IixuLmdsc2xWZXJzaW9uPT09dDV0PyIiOiIjZGVmaW5lIGdsX0ZyYWdDb2xvciBwY19mcmFnQ29sb3IiLCIjZGVmaW5lIGdsX0ZyYWdEZXB0aEVYVCBnbF9GcmFnRGVwdGgiLCIjZGVmaW5lIHRleHR1cmUyRCB0ZXh0dXJlIiwiI2RlZmluZSB0ZXh0dXJlQ3ViZSB0ZXh0dXJlIiwiI2RlZmluZSB0ZXh0dXJlMkRQcm9qIHRleHR1cmVQcm9qIiwiI2RlZmluZSB0ZXh0dXJlMkRMb2RFWFQgdGV4dHVyZUxvZCIsIiNkZWZpbmUgdGV4dHVyZTJEUHJvakxvZEVYVCB0ZXh0dXJlUHJvakxvZCIsIiNkZWZpbmUgdGV4dHVyZUN1YmVMb2RFWFQgdGV4dHVyZUxvZCIsIiNkZWZpbmUgdGV4dHVyZTJER3JhZEVYVCB0ZXh0dXJlR3JhZCIsIiNkZWZpbmUgdGV4dHVyZTJEUHJvakdyYWRFWFQgdGV4dHVyZVByb2pHcmFkIiwiI2RlZmluZSB0ZXh0dXJlQ3ViZUdyYWRFWFQgdGV4dHVyZUdyYWQiXS5qb2luKCJcbiIpKyJcbiIrUyk7Y29uc3QgRT1NK1MrcyxUPW04dChyLDM1NjMzLE0rdythKSxDPW04dChyLDM1NjMyLEUpO2lmKHIuYXR0YWNoU2hhZGVyKHgsVCksci5hdHRhY2hTaGFkZXIoeCxDKSx2b2lkIDAhPT1uLmluZGV4MEF0dHJpYnV0ZU5hbWU/ci5iaW5kQXR0cmliTG9jYXRpb24oeCwwLG4uaW5kZXgwQXR0cmlidXRlTmFtZSk6ITA9PT1uLm1vcnBoVGFyZ2V0cyYmci5iaW5kQXR0cmliTG9jYXRpb24oeCwwLCJwb3NpdGlvbiIpLHIubGlua1Byb2dyYW0oeCksdC5kZWJ1Zy5jaGVja1NoYWRlckVycm9ycyl7Y29uc3QgdD1yLmdldFByb2dyYW1JbmZvTG9nKHgpLnRyaW0oKSxlPXIuZ2V0U2hhZGVySW5mb0xvZyhUKS50cmltKCksbj1yLmdldFNoYWRlckluZm9Mb2coQykudHJpbSgpO2xldCBpPSEwLG89ITA7aWYoITE9PT1yLmdldFByb2dyYW1QYXJhbWV0ZXIoeCwzNTcxNCkpe2k9ITE7Y29uc3QgZT15OHQocixULCJ2ZXJ0ZXgiKSxuPXk4dChyLEMsImZyYWdtZW50Iik7Y29uc29sZS5lcnJvcigiVEhSRUUuV2ViR0xQcm9ncmFtOiBzaGFkZXIgZXJyb3I6ICIsci5nZXRFcnJvcigpLCIzNTcxNSIsci5nZXRQcm9ncmFtUGFyYW1ldGVyKHgsMzU3MTUpLCJnbC5nZXRQcm9ncmFtSW5mb0xvZyIsdCxlLG4pfWVsc2UiIiE9PXQ/Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFByb2dyYW06IGdsLmdldFByb2dyYW1JbmZvTG9nKCkiLHQpOiIiIT09ZSYmIiIhPT1ufHwobz0hMSk7byYmKHRoaXMuZGlhZ25vc3RpY3M9e3J1bm5hYmxlOmkscHJvZ3JhbUxvZzp0LHZlcnRleFNoYWRlcjp7bG9nOmUscHJlZml4Ond9LGZyYWdtZW50U2hhZGVyOntsb2c6bixwcmVmaXg6U319KX1sZXQgQSxrO3JldHVybiByLmRlbGV0ZVNoYWRlcihUKSxyLmRlbGV0ZVNoYWRlcihDKSx0aGlzLmdldFVuaWZvcm1zPWZ1bmN0aW9uKCl7cmV0dXJuIHZvaWQgMD09PUEmJihBPW5ldyBmOHQocix4KSksQX0sdGhpcy5nZXRBdHRyaWJ1dGVzPWZ1bmN0aW9uKCl7cmV0dXJuIHZvaWQgMD09PWsmJihrPShmdW5jdGlvbiB0KGUsbil7Y29uc3QgaT17fSxyPWUuZ2V0UHJvZ3JhbVBhcmFtZXRlcihuLDM1NzIxKTtmb3IobGV0IHQ9MDt0PHI7dCsrKXtjb25zdCByPWUuZ2V0QWN0aXZlQXR0cmliKG4sdCkubmFtZTtpW3JdPWUuZ2V0QXR0cmliTG9jYXRpb24obixyKX1yZXR1cm4gaX0pKHIseCkpLGt9LHRoaXMuZGVzdHJveT1mdW5jdGlvbigpe2kucmVsZWFzZVN0YXRlc09mUHJvZ3JhbSh0aGlzKSxyLmRlbGV0ZVByb2dyYW0oeCksdGhpcy5wcm9ncmFtPXZvaWQgMH0sdGhpcy5uYW1lPW4uc2hhZGVyTmFtZSx0aGlzLmlkPWc4dCsrLHRoaXMuY2FjaGVLZXk9ZSx0aGlzLnVzZWRUaW1lcz0xLHRoaXMucHJvZ3JhbT14LHRoaXMudmVydGV4U2hhZGVyPVQsdGhpcy5mcmFnbWVudFNoYWRlcj1DLHRoaXN9ZnVuY3Rpb24gTzh0KHQsZSxuLGkscixvLGEpe2NvbnN0IHM9W10sbD1yLmlzV2ViR0wyLGM9ci5sb2dhcml0aG1pY0RlcHRoQnVmZmVyLHU9ci5mbG9hdFZlcnRleFRleHR1cmVzLGg9ci5tYXhWZXJ0ZXhVbmlmb3JtcyxkPXIudmVydGV4VGV4dHVyZXM7bGV0IHA9ci5wcmVjaXNpb247Y29uc3QgZj17TWVzaERlcHRoTWF0ZXJpYWw6ImRlcHRoIixNZXNoRGlzdGFuY2VNYXRlcmlhbDoiZGlzdGFuY2VSR0JBIixNZXNoTm9ybWFsTWF0ZXJpYWw6Im5vcm1hbCIsTWVzaEJhc2ljTWF0ZXJpYWw6ImJhc2ljIixNZXNoTGFtYmVydE1hdGVyaWFsOiJsYW1iZXJ0IixNZXNoUGhvbmdNYXRlcmlhbDoicGhvbmciLE1lc2hUb29uTWF0ZXJpYWw6InRvb24iLE1lc2hTdGFuZGFyZE1hdGVyaWFsOiJwaHlzaWNhbCIsTWVzaFBoeXNpY2FsTWF0ZXJpYWw6InBoeXNpY2FsIixNZXNoTWF0Y2FwTWF0ZXJpYWw6Im1hdGNhcCIsTGluZUJhc2ljTWF0ZXJpYWw6ImJhc2ljIixMaW5lRGFzaGVkTWF0ZXJpYWw6ImRhc2hlZCIsUG9pbnRzTWF0ZXJpYWw6InBvaW50cyIsU2hhZG93TWF0ZXJpYWw6InNoYWRvdyIsU3ByaXRlTWF0ZXJpYWw6InNwcml0ZSJ9LG09WyJwcmVjaXNpb24iLCJpc1dlYkdMMiIsInN1cHBvcnRzVmVydGV4VGV4dHVyZXMiLCJvdXRwdXRFbmNvZGluZyIsImluc3RhbmNpbmciLCJpbnN0YW5jaW5nQ29sb3IiLCJtYXAiLCJtYXBFbmNvZGluZyIsIm1hdGNhcCIsIm1hdGNhcEVuY29kaW5nIiwiZW52TWFwIiwiZW52TWFwTW9kZSIsImVudk1hcEVuY29kaW5nIiwiZW52TWFwQ3ViZVVWIiwibGlnaHRNYXAiLCJsaWdodE1hcEVuY29kaW5nIiwiYW9NYXAiLCJlbWlzc2l2ZU1hcCIsImVtaXNzaXZlTWFwRW5jb2RpbmciLCJidW1wTWFwIiwibm9ybWFsTWFwIiwib2JqZWN0U3BhY2VOb3JtYWxNYXAiLCJ0YW5nZW50U3BhY2VOb3JtYWxNYXAiLCJjbGVhcmNvYXRNYXAiLCJjbGVhcmNvYXRSb3VnaG5lc3NNYXAiLCJjbGVhcmNvYXROb3JtYWxNYXAiLCJkaXNwbGFjZW1lbnRNYXAiLCJzcGVjdWxhck1hcCIsInNwZWN1bGFySW50ZW5zaXR5TWFwIiwic3BlY3VsYXJUaW50TWFwIiwic3BlY3VsYXJUaW50TWFwRW5jb2RpbmciLCJyb3VnaG5lc3NNYXAiLCJtZXRhbG5lc3NNYXAiLCJncmFkaWVudE1hcCIsImFscGhhTWFwIiwiY29tYmluZSIsInZlcnRleENvbG9ycyIsInZlcnRleEFscGhhcyIsInZlcnRleFRhbmdlbnRzIiwidmVydGV4VXZzIiwidXZzVmVydGV4T25seSIsImZvZyIsInVzZUZvZyIsImZvZ0V4cDIiLCJmbGF0U2hhZGluZyIsInNpemVBdHRlbnVhdGlvbiIsImxvZ2FyaXRobWljRGVwdGhCdWZmZXIiLCJza2lubmluZyIsIm1heEJvbmVzIiwidXNlVmVydGV4VGV4dHVyZSIsIm1vcnBoVGFyZ2V0cyIsIm1vcnBoTm9ybWFscyIsInByZW11bHRpcGxpZWRBbHBoYSIsIm51bURpckxpZ2h0cyIsIm51bVBvaW50TGlnaHRzIiwibnVtU3BvdExpZ2h0cyIsIm51bUhlbWlMaWdodHMiLCJudW1SZWN0QXJlYUxpZ2h0cyIsIm51bURpckxpZ2h0U2hhZG93cyIsIm51bVBvaW50TGlnaHRTaGFkb3dzIiwibnVtU3BvdExpZ2h0U2hhZG93cyIsInNoYWRvd01hcEVuYWJsZWQiLCJzaGFkb3dNYXBUeXBlIiwidG9uZU1hcHBpbmciLCJwaHlzaWNhbGx5Q29ycmVjdExpZ2h0cyIsImFscGhhVGVzdCIsImRvdWJsZVNpZGVkIiwiZmxpcFNpZGVkIiwibnVtQ2xpcHBpbmdQbGFuZXMiLCJudW1DbGlwSW50ZXJzZWN0aW9uIiwiZGVwdGhQYWNraW5nIiwiZGl0aGVyaW5nIiwic2hlZW4iLCJ0cmFuc21pc3Npb24iLCJ0cmFuc21pc3Npb25NYXAiLCJ0aGlja25lc3NNYXAiXTtmdW5jdGlvbiBnKHQpe2xldCBlO3JldHVybiB0JiZ0LmlzVGV4dHVyZT9lPXQuZW5jb2Rpbmc6dCYmdC5pc1dlYkdMUmVuZGVyVGFyZ2V0Pyhjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUHJvZ3JhbXMuZ2V0VGV4dHVyZUVuY29kaW5nRnJvbU1hcDogZG9uJ3QgdXNlIHJlbmRlciB0YXJnZXRzIGFzIHRleHR1cmVzLiBVc2UgdGhlaXIgLnRleHR1cmUgcHJvcGVydHkgaW5zdGVhZC4iKSxlPXQudGV4dHVyZS5lbmNvZGluZyk6ZT1HMnQsZX1yZXR1cm57Z2V0UGFyYW1ldGVyczpmdW5jdGlvbiBfKG8scyxtLHksdil7Y29uc3QgYj15LmZvZyx4PShvLmlzTWVzaFN0YW5kYXJkTWF0ZXJpYWw/bjplKS5nZXQoby5lbnZNYXB8fChvLmlzTWVzaFN0YW5kYXJkTWF0ZXJpYWw/eS5lbnZpcm9ubWVudDpudWxsKSksdz1mW28udHlwZV0sUz12LmlzU2tpbm5lZE1lc2g/KGZ1bmN0aW9uIE0odCl7Y29uc3QgZT10LnNrZWxldG9uLmJvbmVzO2lmKHUpcmV0dXJuIDEwMjQ7e2NvbnN0IHQ9TWF0aC5mbG9vcigoaC0yMCkvNCksbj1NYXRoLm1pbih0LGUubGVuZ3RoKTtyZXR1cm4gbjxlLmxlbmd0aD8oY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiBTa2VsZXRvbiBoYXMgIitlLmxlbmd0aCsiIGJvbmVzLiBUaGlzIEdQVSBzdXBwb3J0cyAiK24rIi4iKSwwKTpufX0pKHYpOjA7bGV0IEUsVDtpZihudWxsIT09by5wcmVjaXNpb24mJihwPXIuZ2V0TWF4UHJlY2lzaW9uKG8ucHJlY2lzaW9uKSxwIT09by5wcmVjaXNpb24mJmNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xQcm9ncmFtLmdldFBhcmFtZXRlcnM6IixvLnByZWNpc2lvbiwibm90IHN1cHBvcnRlZCwgdXNpbmciLHAsImluc3RlYWQuIikpLHcpe2NvbnN0IHQ9eDZ0W3ddO0U9dC52ZXJ0ZXhTaGFkZXIsVD10LmZyYWdtZW50U2hhZGVyfWVsc2UgRT1vLnZlcnRleFNoYWRlcixUPW8uZnJhZ21lbnRTaGFkZXI7Y29uc3QgQz10LmdldFJlbmRlclRhcmdldCgpO3JldHVybntpc1dlYkdMMjpsLHNoYWRlcklEOncsc2hhZGVyTmFtZTpvLnR5cGUsdmVydGV4U2hhZGVyOkUsZnJhZ21lbnRTaGFkZXI6VCxkZWZpbmVzOm8uZGVmaW5lcyxpc1Jhd1NoYWRlck1hdGVyaWFsOiEwPT09by5pc1Jhd1NoYWRlck1hdGVyaWFsLGdsc2xWZXJzaW9uOm8uZ2xzbFZlcnNpb24scHJlY2lzaW9uOnAsaW5zdGFuY2luZzohMD09PXYuaXNJbnN0YW5jZWRNZXNoLGluc3RhbmNpbmdDb2xvcjohMD09PXYuaXNJbnN0YW5jZWRNZXNoJiZudWxsIT09di5pbnN0YW5jZUNvbG9yLHN1cHBvcnRzVmVydGV4VGV4dHVyZXM6ZCxvdXRwdXRFbmNvZGluZzpudWxsIT09Qz9nKEMudGV4dHVyZSk6dC5vdXRwdXRFbmNvZGluZyxtYXA6ISFvLm1hcCxtYXBFbmNvZGluZzpnKG8ubWFwKSxtYXRjYXA6ISFvLm1hdGNhcCxtYXRjYXBFbmNvZGluZzpnKG8ubWF0Y2FwKSxlbnZNYXA6ISF4LGVudk1hcE1vZGU6eCYmeC5tYXBwaW5nLGVudk1hcEVuY29kaW5nOmcoeCksZW52TWFwQ3ViZVVWOiEheCYmKHgubWFwcGluZz09PW8ydHx8eC5tYXBwaW5nPT09YTJ0KSxsaWdodE1hcDohIW8ubGlnaHRNYXAsbGlnaHRNYXBFbmNvZGluZzpnKG8ubGlnaHRNYXApLGFvTWFwOiEhby5hb01hcCxlbWlzc2l2ZU1hcDohIW8uZW1pc3NpdmVNYXAsZW1pc3NpdmVNYXBFbmNvZGluZzpnKG8uZW1pc3NpdmVNYXApLGJ1bXBNYXA6ISFvLmJ1bXBNYXAsbm9ybWFsTWFwOiEhby5ub3JtYWxNYXAsb2JqZWN0U3BhY2VOb3JtYWxNYXA6MT09PW8ubm9ybWFsTWFwVHlwZSx0YW5nZW50U3BhY2VOb3JtYWxNYXA6MD09PW8ubm9ybWFsTWFwVHlwZSxjbGVhcmNvYXRNYXA6ISFvLmNsZWFyY29hdE1hcCxjbGVhcmNvYXRSb3VnaG5lc3NNYXA6ISFvLmNsZWFyY29hdFJvdWdobmVzc01hcCxjbGVhcmNvYXROb3JtYWxNYXA6ISFvLmNsZWFyY29hdE5vcm1hbE1hcCxkaXNwbGFjZW1lbnRNYXA6ISFvLmRpc3BsYWNlbWVudE1hcCxyb3VnaG5lc3NNYXA6ISFvLnJvdWdobmVzc01hcCxtZXRhbG5lc3NNYXA6ISFvLm1ldGFsbmVzc01hcCxzcGVjdWxhck1hcDohIW8uc3BlY3VsYXJNYXAsc3BlY3VsYXJJbnRlbnNpdHlNYXA6ISFvLnNwZWN1bGFySW50ZW5zaXR5TWFwLHNwZWN1bGFyVGludE1hcDohIW8uc3BlY3VsYXJUaW50TWFwLHNwZWN1bGFyVGludE1hcEVuY29kaW5nOmcoby5zcGVjdWxhclRpbnRNYXApLGFscGhhTWFwOiEhby5hbHBoYU1hcCxncmFkaWVudE1hcDohIW8uZ3JhZGllbnRNYXAsc2hlZW46ISFvLnNoZWVuLHRyYW5zbWlzc2lvbjohIW8udHJhbnNtaXNzaW9uLHRyYW5zbWlzc2lvbk1hcDohIW8udHJhbnNtaXNzaW9uTWFwLHRoaWNrbmVzc01hcDohIW8udGhpY2tuZXNzTWFwLGNvbWJpbmU6by5jb21iaW5lLHZlcnRleFRhbmdlbnRzOiEhby5ub3JtYWxNYXAmJiEhdi5nZW9tZXRyeSYmISF2Lmdlb21ldHJ5LmF0dHJpYnV0ZXMudGFuZ2VudCx2ZXJ0ZXhDb2xvcnM6by52ZXJ0ZXhDb2xvcnMsdmVydGV4QWxwaGFzOiEwPT09by52ZXJ0ZXhDb2xvcnMmJiEhdi5nZW9tZXRyeSYmISF2Lmdlb21ldHJ5LmF0dHJpYnV0ZXMuY29sb3ImJjQ9PT12Lmdlb21ldHJ5LmF0dHJpYnV0ZXMuY29sb3IuaXRlbVNpemUsdmVydGV4VXZzOiEhKG8ubWFwfHxvLmJ1bXBNYXB8fG8ubm9ybWFsTWFwfHxvLnNwZWN1bGFyTWFwfHxvLmFscGhhTWFwfHxvLmVtaXNzaXZlTWFwfHxvLnJvdWdobmVzc01hcHx8by5tZXRhbG5lc3NNYXB8fG8uY2xlYXJjb2F0TWFwfHxvLmNsZWFyY29hdFJvdWdobmVzc01hcHx8by5jbGVhcmNvYXROb3JtYWxNYXB8fG8uZGlzcGxhY2VtZW50TWFwfHxvLnRyYW5zbWlzc2lvbk1hcHx8by50aGlja25lc3NNYXB8fG8uc3BlY3VsYXJJbnRlbnNpdHlNYXB8fG8uc3BlY3VsYXJUaW50TWFwKSx1dnNWZXJ0ZXhPbmx5OiEoby5tYXB8fG8uYnVtcE1hcHx8by5ub3JtYWxNYXB8fG8uc3BlY3VsYXJNYXB8fG8uYWxwaGFNYXB8fG8uZW1pc3NpdmVNYXB8fG8ucm91Z2huZXNzTWFwfHxvLm1ldGFsbmVzc01hcHx8by5jbGVhcmNvYXROb3JtYWxNYXB8fG8udHJhbnNtaXNzaW9ufHxvLnRyYW5zbWlzc2lvbk1hcHx8by50aGlja25lc3NNYXB8fG8uc3BlY3VsYXJJbnRlbnNpdHlNYXB8fG8uc3BlY3VsYXJUaW50TWFwfHwhby5kaXNwbGFjZW1lbnRNYXApLGZvZzohIWIsdXNlRm9nOm8uZm9nLGZvZ0V4cDI6YiYmYi5pc0ZvZ0V4cDIsZmxhdFNoYWRpbmc6ISFvLmZsYXRTaGFkaW5nLHNpemVBdHRlbnVhdGlvbjpvLnNpemVBdHRlbnVhdGlvbixsb2dhcml0aG1pY0RlcHRoQnVmZmVyOmMsc2tpbm5pbmc6ITA9PT12LmlzU2tpbm5lZE1lc2gmJlM+MCxtYXhCb25lczpTLHVzZVZlcnRleFRleHR1cmU6dSxtb3JwaFRhcmdldHM6ISF2Lmdlb21ldHJ5JiYhIXYuZ2VvbWV0cnkubW9ycGhBdHRyaWJ1dGVzLnBvc2l0aW9uLG1vcnBoTm9ybWFsczohIXYuZ2VvbWV0cnkmJiEhdi5nZW9tZXRyeS5tb3JwaEF0dHJpYnV0ZXMubm9ybWFsLG51bURpckxpZ2h0czpzLmRpcmVjdGlvbmFsLmxlbmd0aCxudW1Qb2ludExpZ2h0czpzLnBvaW50Lmxlbmd0aCxudW1TcG90TGlnaHRzOnMuc3BvdC5sZW5ndGgsbnVtUmVjdEFyZWFMaWdodHM6cy5yZWN0QXJlYS5sZW5ndGgsbnVtSGVtaUxpZ2h0czpzLmhlbWkubGVuZ3RoLG51bURpckxpZ2h0U2hhZG93czpzLmRpcmVjdGlvbmFsU2hhZG93TWFwLmxlbmd0aCxudW1Qb2ludExpZ2h0U2hhZG93czpzLnBvaW50U2hhZG93TWFwLmxlbmd0aCxudW1TcG90TGlnaHRTaGFkb3dzOnMuc3BvdFNoYWRvd01hcC5sZW5ndGgsbnVtQ2xpcHBpbmdQbGFuZXM6YS5udW1QbGFuZXMsbnVtQ2xpcEludGVyc2VjdGlvbjphLm51bUludGVyc2VjdGlvbixkaXRoZXJpbmc6by5kaXRoZXJpbmcsc2hhZG93TWFwRW5hYmxlZDp0LnNoYWRvd01hcC5lbmFibGVkJiZtLmxlbmd0aD4wLHNoYWRvd01hcFR5cGU6dC5zaGFkb3dNYXAudHlwZSx0b25lTWFwcGluZzpvLnRvbmVNYXBwZWQ/dC50b25lTWFwcGluZzowLHBoeXNpY2FsbHlDb3JyZWN0TGlnaHRzOnQucGh5c2ljYWxseUNvcnJlY3RMaWdodHMscHJlbXVsdGlwbGllZEFscGhhOm8ucHJlbXVsdGlwbGllZEFscGhhLGFscGhhVGVzdDpvLmFscGhhVGVzdCxkb3VibGVTaWRlZDoyPT09by5zaWRlLGZsaXBTaWRlZDoxPT09by5zaWRlLGRlcHRoUGFja2luZzp2b2lkIDAhPT1vLmRlcHRoUGFja2luZyYmby5kZXB0aFBhY2tpbmcsaW5kZXgwQXR0cmlidXRlTmFtZTpvLmluZGV4MEF0dHJpYnV0ZU5hbWUsZXh0ZW5zaW9uRGVyaXZhdGl2ZXM6by5leHRlbnNpb25zJiZvLmV4dGVuc2lvbnMuZGVyaXZhdGl2ZXMsZXh0ZW5zaW9uRnJhZ0RlcHRoOm8uZXh0ZW5zaW9ucyYmby5leHRlbnNpb25zLmZyYWdEZXB0aCxleHRlbnNpb25EcmF3QnVmZmVyczpvLmV4dGVuc2lvbnMmJm8uZXh0ZW5zaW9ucy5kcmF3QnVmZmVycyxleHRlbnNpb25TaGFkZXJUZXh0dXJlTE9EOm8uZXh0ZW5zaW9ucyYmby5leHRlbnNpb25zLnNoYWRlclRleHR1cmVMT0QscmVuZGVyZXJFeHRlbnNpb25GcmFnRGVwdGg6bHx8aS5oYXMoIkVYVF9mcmFnX2RlcHRoIikscmVuZGVyZXJFeHRlbnNpb25EcmF3QnVmZmVyczpsfHxpLmhhcygiV0VCR0xfZHJhd19idWZmZXJzIikscmVuZGVyZXJFeHRlbnNpb25TaGFkZXJUZXh0dXJlTG9kOmx8fGkuaGFzKCJFWFRfc2hhZGVyX3RleHR1cmVfbG9kIiksY3VzdG9tUHJvZ3JhbUNhY2hlS2V5Om8uY3VzdG9tUHJvZ3JhbUNhY2hlS2V5KCl9fSxnZXRQcm9ncmFtQ2FjaGVLZXk6ZnVuY3Rpb24geShlKXtjb25zdCBuPVtdO2lmKGUuc2hhZGVySUQ/bi5wdXNoKGUuc2hhZGVySUQpOihuLnB1c2goZS5mcmFnbWVudFNoYWRlciksbi5wdXNoKGUudmVydGV4U2hhZGVyKSksdm9pZCAwIT09ZS5kZWZpbmVzKWZvcihjb25zdCB0IGluIGUuZGVmaW5lcyluLnB1c2godCksbi5wdXNoKGUuZGVmaW5lc1t0XSk7aWYoITE9PT1lLmlzUmF3U2hhZGVyTWF0ZXJpYWwpe2ZvcihsZXQgdD0wO3Q8bS5sZW5ndGg7dCsrKW4ucHVzaChlW21bdF1dKTtuLnB1c2godC5vdXRwdXRFbmNvZGluZyksbi5wdXNoKHQuZ2FtbWFGYWN0b3IpfXJldHVybiBuLnB1c2goZS5jdXN0b21Qcm9ncmFtQ2FjaGVLZXkpLG4uam9pbigpfSxnZXRVbmlmb3JtczpmdW5jdGlvbiB2KHQpe2NvbnN0IGU9Zlt0LnR5cGVdO2xldCBuO2lmKGUpe249ZTZ0LmNsb25lKHg2dFtlXS51bmlmb3Jtcyl9ZWxzZSBuPXQudW5pZm9ybXM7cmV0dXJuIG59LGFjcXVpcmVQcm9ncmFtOmZ1bmN0aW9uIGIoZSxuKXtsZXQgaTtmb3IobGV0IHQ9MCxlPXMubGVuZ3RoO3Q8ZTt0Kyspe2NvbnN0IGU9c1t0XTtpZihlLmNhY2hlS2V5PT09bil7aT1lLCsraS51c2VkVGltZXM7YnJlYWt9fXJldHVybiB2b2lkIDA9PT1pJiYoaT1uZXcgUjh0KHQsbixlLG8pLHMucHVzaChpKSksaX0scmVsZWFzZVByb2dyYW06ZnVuY3Rpb24geCh0KXtpZigwPT0tLXQudXNlZFRpbWVzKXtjb25zdCBlPXMuaW5kZXhPZih0KTtzW2VdPXNbcy5sZW5ndGgtMV0scy5wb3AoKSx0LmRlc3Ryb3koKX19LHByb2dyYW1zOnN9fWZ1bmN0aW9uIHo4dCgpe2xldCB0PW5ldyBXZWFrTWFwO3JldHVybntnZXQ6ZnVuY3Rpb24gZShuKXtsZXQgaT10LmdldChuKTtyZXR1cm4gdm9pZCAwPT09aSYmKGk9e30sdC5zZXQobixpKSksaX0scmVtb3ZlOmZ1bmN0aW9uIG4oZSl7dC5kZWxldGUoZSl9LHVwZGF0ZTpmdW5jdGlvbiBpKGUsbixyKXt0LmdldChlKVtuXT1yfSxkaXNwb3NlOmZ1bmN0aW9uIHIoKXt0PW5ldyBXZWFrTWFwfX19ZnVuY3Rpb24gRDh0KHQsZSl7cmV0dXJuIHQuZ3JvdXBPcmRlciE9PWUuZ3JvdXBPcmRlcj90Lmdyb3VwT3JkZXItZS5ncm91cE9yZGVyOnQucmVuZGVyT3JkZXIhPT1lLnJlbmRlck9yZGVyP3QucmVuZGVyT3JkZXItZS5yZW5kZXJPcmRlcjp0LnByb2dyYW0hPT1lLnByb2dyYW0/dC5wcm9ncmFtLmlkLWUucHJvZ3JhbS5pZDp0Lm1hdGVyaWFsLmlkIT09ZS5tYXRlcmlhbC5pZD90Lm1hdGVyaWFsLmlkLWUubWF0ZXJpYWwuaWQ6dC56IT09ZS56P3Quei1lLno6dC5pZC1lLmlkfWZ1bmN0aW9uIEI4dCh0LGUpe3JldHVybiB0Lmdyb3VwT3JkZXIhPT1lLmdyb3VwT3JkZXI/dC5ncm91cE9yZGVyLWUuZ3JvdXBPcmRlcjp0LnJlbmRlck9yZGVyIT09ZS5yZW5kZXJPcmRlcj90LnJlbmRlck9yZGVyLWUucmVuZGVyT3JkZXI6dC56IT09ZS56P2Uuei10Lno6dC5pZC1lLmlkfWZ1bmN0aW9uIEg4dCh0KXtjb25zdCBlPVtdO2xldCBuPTA7Y29uc3QgaT1bXSxyPVtdLG89W10sYT17aWQ6LTF9O2Z1bmN0aW9uIHMoaSxyLG8scyxsLGMpe2xldCB1PWVbbl07Y29uc3QgaD10LmdldChvKTtyZXR1cm4gdm9pZCAwPT09dT8odT17aWQ6aS5pZCxvYmplY3Q6aSxnZW9tZXRyeTpyLG1hdGVyaWFsOm8scHJvZ3JhbTpoLnByb2dyYW18fGEsZ3JvdXBPcmRlcjpzLHJlbmRlck9yZGVyOmkucmVuZGVyT3JkZXIsejpsLGdyb3VwOmN9LGVbbl09dSk6KHUuaWQ9aS5pZCx1Lm9iamVjdD1pLHUuZ2VvbWV0cnk9cix1Lm1hdGVyaWFsPW8sdS5wcm9ncmFtPWgucHJvZ3JhbXx8YSx1Lmdyb3VwT3JkZXI9cyx1LnJlbmRlck9yZGVyPWkucmVuZGVyT3JkZXIsdS56PWwsdS5ncm91cD1jKSxuKyssdX1yZXR1cm57b3BhcXVlOmksdHJhbnNtaXNzaXZlOnIsdHJhbnNwYXJlbnQ6byxpbml0OmZ1bmN0aW9uIGwoKXtuPTAsaS5sZW5ndGg9MCxyLmxlbmd0aD0wLG8ubGVuZ3RoPTB9LHB1c2g6ZnVuY3Rpb24gYyh0LGUsbixhLGwsdSl7Y29uc3QgaD1zKHQsZSxuLGEsbCx1KTtuLnRyYW5zbWlzc2lvbj4wP3IucHVzaChoKTohMD09PW4udHJhbnNwYXJlbnQ/by5wdXNoKGgpOmkucHVzaChoKX0sdW5zaGlmdDpmdW5jdGlvbiB1KHQsZSxuLGEsbCxjKXtjb25zdCB1PXModCxlLG4sYSxsLGMpO24udHJhbnNtaXNzaW9uPjA/ci51bnNoaWZ0KHUpOiEwPT09bi50cmFuc3BhcmVudD9vLnVuc2hpZnQodSk6aS51bnNoaWZ0KHUpfSxmaW5pc2g6ZnVuY3Rpb24gaCgpe2ZvcihsZXQgdD1uLGk9ZS5sZW5ndGg7dDxpO3QrKyl7Y29uc3Qgbj1lW3RdO2lmKG51bGw9PT1uLmlkKWJyZWFrO24uaWQ9bnVsbCxuLm9iamVjdD1udWxsLG4uZ2VvbWV0cnk9bnVsbCxuLm1hdGVyaWFsPW51bGwsbi5wcm9ncmFtPW51bGwsbi5ncm91cD1udWxsfX0sc29ydDpmdW5jdGlvbiBkKHQsZSl7aS5sZW5ndGg+MSYmaS5zb3J0KHR8fEQ4dCksci5sZW5ndGg+MSYmci5zb3J0KGV8fEI4dCksby5sZW5ndGg+MSYmby5zb3J0KGV8fEI4dCl9fX1mdW5jdGlvbiBGOHQodCl7bGV0IGU9bmV3IFdlYWtNYXA7cmV0dXJue2dldDpmdW5jdGlvbiBuKGkscil7bGV0IG87cmV0dXJuITE9PT1lLmhhcyhpKT8obz1uZXcgSDh0KHQpLGUuc2V0KGksW29dKSk6cj49ZS5nZXQoaSkubGVuZ3RoPyhvPW5ldyBIOHQodCksZS5nZXQoaSkucHVzaChvKSk6bz1lLmdldChpKVtyXSxvfSxkaXNwb3NlOmZ1bmN0aW9uIGkoKXtlPW5ldyBXZWFrTWFwfX19ZnVuY3Rpb24gVjh0KCl7Y29uc3QgdD17fTtyZXR1cm57Z2V0OmZ1bmN0aW9uKGUpe2lmKHZvaWQgMCE9PXRbZS5pZF0pcmV0dXJuIHRbZS5pZF07bGV0IG47c3dpdGNoKGUudHlwZSl7Y2FzZSJEaXJlY3Rpb25hbExpZ2h0IjpuPXtkaXJlY3Rpb246bmV3IEg1dCxjb2xvcjpuZXcgczR0fTticmVhaztjYXNlIlNwb3RMaWdodCI6bj17cG9zaXRpb246bmV3IEg1dCxkaXJlY3Rpb246bmV3IEg1dCxjb2xvcjpuZXcgczR0LGRpc3RhbmNlOjAsY29uZUNvczowLHBlbnVtYnJhQ29zOjAsZGVjYXk6MH07YnJlYWs7Y2FzZSJQb2ludExpZ2h0IjpuPXtwb3NpdGlvbjpuZXcgSDV0LGNvbG9yOm5ldyBzNHQsZGlzdGFuY2U6MCxkZWNheTowfTticmVhaztjYXNlIkhlbWlzcGhlcmVMaWdodCI6bj17ZGlyZWN0aW9uOm5ldyBINXQsc2t5Q29sb3I6bmV3IHM0dCxncm91bmRDb2xvcjpuZXcgczR0fTticmVhaztjYXNlIlJlY3RBcmVhTGlnaHQiOm49e2NvbG9yOm5ldyBzNHQscG9zaXRpb246bmV3IEg1dCxoYWxmV2lkdGg6bmV3IEg1dCxoYWxmSGVpZ2h0Om5ldyBINXR9fXJldHVybiB0W2UuaWRdPW4sbn19fWxldCBVOHQ9MDtmdW5jdGlvbiBqOHQodCxlKXtyZXR1cm4oZS5jYXN0U2hhZG93PzE6MCktKHQuY2FzdFNoYWRvdz8xOjApfWZ1bmN0aW9uIEc4dCh0LGUpe2NvbnN0IG49bmV3IFY4dCxpPShmdW5jdGlvbiByKCl7Y29uc3QgdD17fTtyZXR1cm57Z2V0OmZ1bmN0aW9uKGUpe2lmKHZvaWQgMCE9PXRbZS5pZF0pcmV0dXJuIHRbZS5pZF07bGV0IG47c3dpdGNoKGUudHlwZSl7Y2FzZSJEaXJlY3Rpb25hbExpZ2h0IjpjYXNlIlNwb3RMaWdodCI6bj17c2hhZG93QmlhczowLHNoYWRvd05vcm1hbEJpYXM6MCxzaGFkb3dSYWRpdXM6MSxzaGFkb3dNYXBTaXplOm5ldyBDNXR9O2JyZWFrO2Nhc2UiUG9pbnRMaWdodCI6bj17c2hhZG93QmlhczowLHNoYWRvd05vcm1hbEJpYXM6MCxzaGFkb3dSYWRpdXM6MSxzaGFkb3dNYXBTaXplOm5ldyBDNXQsc2hhZG93Q2FtZXJhTmVhcjoxLHNoYWRvd0NhbWVyYUZhcjoxZTN9fXJldHVybiB0W2UuaWRdPW4sbn19fSkoKSxvPXt2ZXJzaW9uOjAsaGFzaDp7ZGlyZWN0aW9uYWxMZW5ndGg6LTEscG9pbnRMZW5ndGg6LTEsc3BvdExlbmd0aDotMSxyZWN0QXJlYUxlbmd0aDotMSxoZW1pTGVuZ3RoOi0xLG51bURpcmVjdGlvbmFsU2hhZG93czotMSxudW1Qb2ludFNoYWRvd3M6LTEsbnVtU3BvdFNoYWRvd3M6LTF9LGFtYmllbnQ6WzAsMCwwXSxwcm9iZTpbXSxkaXJlY3Rpb25hbDpbXSxkaXJlY3Rpb25hbFNoYWRvdzpbXSxkaXJlY3Rpb25hbFNoYWRvd01hcDpbXSxkaXJlY3Rpb25hbFNoYWRvd01hdHJpeDpbXSxzcG90OltdLHNwb3RTaGFkb3c6W10sc3BvdFNoYWRvd01hcDpbXSxzcG90U2hhZG93TWF0cml4OltdLHJlY3RBcmVhOltdLHJlY3RBcmVhTFRDMTpudWxsLHJlY3RBcmVhTFRDMjpudWxsLHBvaW50OltdLHBvaW50U2hhZG93OltdLHBvaW50U2hhZG93TWFwOltdLHBvaW50U2hhZG93TWF0cml4OltdLGhlbWk6W119O2ZvcihsZXQgdD0wO3Q8OTt0Kyspby5wcm9iZS5wdXNoKG5ldyBINXQpO2NvbnN0IGE9bmV3IEg1dCxzPW5ldyBnM3QsbD1uZXcgZzN0O3JldHVybntzZXR1cDpmdW5jdGlvbiBjKHIpe2xldCBhPTAscz0wLGw9MDtmb3IobGV0IHQ9MDt0PDk7dCsrKW8ucHJvYmVbdF0uc2V0KDAsMCwwKTtsZXQgYz0wLHU9MCxoPTAsZD0wLHA9MCxmPTAsbT0wLGc9MDtyLnNvcnQoajh0KTtmb3IobGV0IHQ9MCxlPXIubGVuZ3RoO3Q8ZTt0Kyspe2NvbnN0IGU9clt0XSxfPWUuY29sb3IseT1lLmludGVuc2l0eSx2PWUuZGlzdGFuY2UsYj1lLnNoYWRvdyYmZS5zaGFkb3cubWFwP2Uuc2hhZG93Lm1hcC50ZXh0dXJlOm51bGw7aWYoZS5pc0FtYmllbnRMaWdodClhKz1fLnIqeSxzKz1fLmcqeSxsKz1fLmIqeTtlbHNlIGlmKGUuaXNMaWdodFByb2JlKWZvcihsZXQgdD0wO3Q8OTt0Kyspby5wcm9iZVt0XS5hZGRTY2FsZWRWZWN0b3IoZS5zaC5jb2VmZmljaWVudHNbdF0seSk7ZWxzZSBpZihlLmlzRGlyZWN0aW9uYWxMaWdodCl7Y29uc3QgdD1uLmdldChlKTtpZih0LmNvbG9yLmNvcHkoZS5jb2xvcikubXVsdGlwbHlTY2FsYXIoZS5pbnRlbnNpdHkpLGUuY2FzdFNoYWRvdyl7Y29uc3QgdD1lLnNoYWRvdyxuPWkuZ2V0KGUpO24uc2hhZG93Qmlhcz10LmJpYXMsbi5zaGFkb3dOb3JtYWxCaWFzPXQubm9ybWFsQmlhcyxuLnNoYWRvd1JhZGl1cz10LnJhZGl1cyxuLnNoYWRvd01hcFNpemU9dC5tYXBTaXplLG8uZGlyZWN0aW9uYWxTaGFkb3dbY109bixvLmRpcmVjdGlvbmFsU2hhZG93TWFwW2NdPWIsby5kaXJlY3Rpb25hbFNoYWRvd01hdHJpeFtjXT1lLnNoYWRvdy5tYXRyaXgsZisrfW8uZGlyZWN0aW9uYWxbY109dCxjKyt9ZWxzZSBpZihlLmlzU3BvdExpZ2h0KXtjb25zdCB0PW4uZ2V0KGUpO2lmKHQucG9zaXRpb24uc2V0RnJvbU1hdHJpeFBvc2l0aW9uKGUubWF0cml4V29ybGQpLHQuY29sb3IuY29weShfKS5tdWx0aXBseVNjYWxhcih5KSx0LmRpc3RhbmNlPXYsdC5jb25lQ29zPU1hdGguY29zKGUuYW5nbGUpLHQucGVudW1icmFDb3M9TWF0aC5jb3MoZS5hbmdsZSooMS1lLnBlbnVtYnJhKSksdC5kZWNheT1lLmRlY2F5LGUuY2FzdFNoYWRvdyl7Y29uc3QgdD1lLnNoYWRvdyxuPWkuZ2V0KGUpO24uc2hhZG93Qmlhcz10LmJpYXMsbi5zaGFkb3dOb3JtYWxCaWFzPXQubm9ybWFsQmlhcyxuLnNoYWRvd1JhZGl1cz10LnJhZGl1cyxuLnNoYWRvd01hcFNpemU9dC5tYXBTaXplLG8uc3BvdFNoYWRvd1toXT1uLG8uc3BvdFNoYWRvd01hcFtoXT1iLG8uc3BvdFNoYWRvd01hdHJpeFtoXT1lLnNoYWRvdy5tYXRyaXgsZysrfW8uc3BvdFtoXT10LGgrK31lbHNlIGlmKGUuaXNSZWN0QXJlYUxpZ2h0KXtjb25zdCB0PW4uZ2V0KGUpO3QuY29sb3IuY29weShfKS5tdWx0aXBseVNjYWxhcih5KSx0LmhhbGZXaWR0aC5zZXQoLjUqZS53aWR0aCwwLDApLHQuaGFsZkhlaWdodC5zZXQoMCwuNSplLmhlaWdodCwwKSxvLnJlY3RBcmVhW2RdPXQsZCsrfWVsc2UgaWYoZS5pc1BvaW50TGlnaHQpe2NvbnN0IHQ9bi5nZXQoZSk7aWYodC5jb2xvci5jb3B5KGUuY29sb3IpLm11bHRpcGx5U2NhbGFyKGUuaW50ZW5zaXR5KSx0LmRpc3RhbmNlPWUuZGlzdGFuY2UsdC5kZWNheT1lLmRlY2F5LGUuY2FzdFNoYWRvdyl7Y29uc3QgdD1lLnNoYWRvdyxuPWkuZ2V0KGUpO24uc2hhZG93Qmlhcz10LmJpYXMsbi5zaGFkb3dOb3JtYWxCaWFzPXQubm9ybWFsQmlhcyxuLnNoYWRvd1JhZGl1cz10LnJhZGl1cyxuLnNoYWRvd01hcFNpemU9dC5tYXBTaXplLG4uc2hhZG93Q2FtZXJhTmVhcj10LmNhbWVyYS5uZWFyLG4uc2hhZG93Q2FtZXJhRmFyPXQuY2FtZXJhLmZhcixvLnBvaW50U2hhZG93W3VdPW4sby5wb2ludFNoYWRvd01hcFt1XT1iLG8ucG9pbnRTaGFkb3dNYXRyaXhbdV09ZS5zaGFkb3cubWF0cml4LG0rK31vLnBvaW50W3VdPXQsdSsrfWVsc2UgaWYoZS5pc0hlbWlzcGhlcmVMaWdodCl7Y29uc3QgdD1uLmdldChlKTt0LnNreUNvbG9yLmNvcHkoZS5jb2xvcikubXVsdGlwbHlTY2FsYXIoeSksdC5ncm91bmRDb2xvci5jb3B5KGUuZ3JvdW5kQ29sb3IpLm11bHRpcGx5U2NhbGFyKHkpLG8uaGVtaVtwXT10LHArK319ZD4wJiYoZS5pc1dlYkdMMnx8ITA9PT10LmhhcygiT0VTX3RleHR1cmVfZmxvYXRfbGluZWFyIik/KG8ucmVjdEFyZWFMVEMxPWI2dC5MVENfRkxPQVRfMSxvLnJlY3RBcmVhTFRDMj1iNnQuTFRDX0ZMT0FUXzIpOiEwPT09dC5oYXMoIk9FU190ZXh0dXJlX2hhbGZfZmxvYXRfbGluZWFyIik/KG8ucmVjdEFyZWFMVEMxPWI2dC5MVENfSEFMRl8xLG8ucmVjdEFyZWFMVEMyPWI2dC5MVENfSEFMRl8yKTpjb25zb2xlLmVycm9yKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiBVbmFibGUgdG8gdXNlIFJlY3RBcmVhTGlnaHQuIE1pc3NpbmcgV2ViR0wgZXh0ZW5zaW9ucy4iKSksby5hbWJpZW50WzBdPWEsby5hbWJpZW50WzFdPXMsby5hbWJpZW50WzJdPWw7Y29uc3QgXz1vLmhhc2g7Xy5kaXJlY3Rpb25hbExlbmd0aD09PWMmJl8ucG9pbnRMZW5ndGg9PT11JiZfLnNwb3RMZW5ndGg9PT1oJiZfLnJlY3RBcmVhTGVuZ3RoPT09ZCYmXy5oZW1pTGVuZ3RoPT09cCYmXy5udW1EaXJlY3Rpb25hbFNoYWRvd3M9PT1mJiZfLm51bVBvaW50U2hhZG93cz09PW0mJl8ubnVtU3BvdFNoYWRvd3M9PT1nfHwoby5kaXJlY3Rpb25hbC5sZW5ndGg9YyxvLnNwb3QubGVuZ3RoPWgsby5yZWN0QXJlYS5sZW5ndGg9ZCxvLnBvaW50Lmxlbmd0aD11LG8uaGVtaS5sZW5ndGg9cCxvLmRpcmVjdGlvbmFsU2hhZG93Lmxlbmd0aD1mLG8uZGlyZWN0aW9uYWxTaGFkb3dNYXAubGVuZ3RoPWYsby5wb2ludFNoYWRvdy5sZW5ndGg9bSxvLnBvaW50U2hhZG93TWFwLmxlbmd0aD1tLG8uc3BvdFNoYWRvdy5sZW5ndGg9ZyxvLnNwb3RTaGFkb3dNYXAubGVuZ3RoPWcsby5kaXJlY3Rpb25hbFNoYWRvd01hdHJpeC5sZW5ndGg9ZixvLnBvaW50U2hhZG93TWF0cml4Lmxlbmd0aD1tLG8uc3BvdFNoYWRvd01hdHJpeC5sZW5ndGg9ZyxfLmRpcmVjdGlvbmFsTGVuZ3RoPWMsXy5wb2ludExlbmd0aD11LF8uc3BvdExlbmd0aD1oLF8ucmVjdEFyZWFMZW5ndGg9ZCxfLmhlbWlMZW5ndGg9cCxfLm51bURpcmVjdGlvbmFsU2hhZG93cz1mLF8ubnVtUG9pbnRTaGFkb3dzPW0sXy5udW1TcG90U2hhZG93cz1nLG8udmVyc2lvbj1VOHQrKyl9LHNldHVwVmlldzpmdW5jdGlvbiB1KHQsZSl7bGV0IG49MCxpPTAscj0wLGM9MCx1PTA7Y29uc3QgaD1lLm1hdHJpeFdvcmxkSW52ZXJzZTtmb3IobGV0IGU9MCxkPXQubGVuZ3RoO2U8ZDtlKyspe2NvbnN0IGQ9dFtlXTtpZihkLmlzRGlyZWN0aW9uYWxMaWdodCl7Y29uc3QgdD1vLmRpcmVjdGlvbmFsW25dO3QuZGlyZWN0aW9uLnNldEZyb21NYXRyaXhQb3NpdGlvbihkLm1hdHJpeFdvcmxkKSxhLnNldEZyb21NYXRyaXhQb3NpdGlvbihkLnRhcmdldC5tYXRyaXhXb3JsZCksdC5kaXJlY3Rpb24uc3ViKGEpLHQuZGlyZWN0aW9uLnRyYW5zZm9ybURpcmVjdGlvbihoKSxuKyt9ZWxzZSBpZihkLmlzU3BvdExpZ2h0KXtjb25zdCB0PW8uc3BvdFtyXTt0LnBvc2l0aW9uLnNldEZyb21NYXRyaXhQb3NpdGlvbihkLm1hdHJpeFdvcmxkKSx0LnBvc2l0aW9uLmFwcGx5TWF0cml4NChoKSx0LmRpcmVjdGlvbi5zZXRGcm9tTWF0cml4UG9zaXRpb24oZC5tYXRyaXhXb3JsZCksYS5zZXRGcm9tTWF0cml4UG9zaXRpb24oZC50YXJnZXQubWF0cml4V29ybGQpLHQuZGlyZWN0aW9uLnN1YihhKSx0LmRpcmVjdGlvbi50cmFuc2Zvcm1EaXJlY3Rpb24oaCkscisrfWVsc2UgaWYoZC5pc1JlY3RBcmVhTGlnaHQpe2NvbnN0IHQ9by5yZWN0QXJlYVtjXTt0LnBvc2l0aW9uLnNldEZyb21NYXRyaXhQb3NpdGlvbihkLm1hdHJpeFdvcmxkKSx0LnBvc2l0aW9uLmFwcGx5TWF0cml4NChoKSxsLmlkZW50aXR5KCkscy5jb3B5KGQubWF0cml4V29ybGQpLHMucHJlbXVsdGlwbHkoaCksbC5leHRyYWN0Um90YXRpb24ocyksdC5oYWxmV2lkdGguc2V0KC41KmQud2lkdGgsMCwwKSx0LmhhbGZIZWlnaHQuc2V0KDAsLjUqZC5oZWlnaHQsMCksdC5oYWxmV2lkdGguYXBwbHlNYXRyaXg0KGwpLHQuaGFsZkhlaWdodC5hcHBseU1hdHJpeDQobCksYysrfWVsc2UgaWYoZC5pc1BvaW50TGlnaHQpe2NvbnN0IHQ9by5wb2ludFtpXTt0LnBvc2l0aW9uLnNldEZyb21NYXRyaXhQb3NpdGlvbihkLm1hdHJpeFdvcmxkKSx0LnBvc2l0aW9uLmFwcGx5TWF0cml4NChoKSxpKyt9ZWxzZSBpZihkLmlzSGVtaXNwaGVyZUxpZ2h0KXtjb25zdCB0PW8uaGVtaVt1XTt0LmRpcmVjdGlvbi5zZXRGcm9tTWF0cml4UG9zaXRpb24oZC5tYXRyaXhXb3JsZCksdC5kaXJlY3Rpb24udHJhbnNmb3JtRGlyZWN0aW9uKGgpLHQuZGlyZWN0aW9uLm5vcm1hbGl6ZSgpLHUrK319fSxzdGF0ZTpvfX1mdW5jdGlvbiBXOHQodCxlKXtjb25zdCBuPW5ldyBHOHQodCxlKSxpPVtdLHI9W107cmV0dXJue2luaXQ6ZnVuY3Rpb24gbygpe2kubGVuZ3RoPTAsci5sZW5ndGg9MH0sc3RhdGU6e2xpZ2h0c0FycmF5Omksc2hhZG93c0FycmF5OnIsbGlnaHRzOm59LHNldHVwTGlnaHRzOmZ1bmN0aW9uIGEoKXtuLnNldHVwKGkpfSxzZXR1cExpZ2h0c1ZpZXc6ZnVuY3Rpb24gcyh0KXtuLnNldHVwVmlldyhpLHQpfSxwdXNoTGlnaHQ6ZnVuY3Rpb24gbCh0KXtpLnB1c2godCl9LHB1c2hTaGFkb3c6ZnVuY3Rpb24gYyh0KXtyLnB1c2godCl9fX1mdW5jdGlvbiBxOHQodCxlKXtsZXQgbj1uZXcgV2Vha01hcDtyZXR1cm57Z2V0OmZ1bmN0aW9uIGkocixvPTApe2xldCBhO3JldHVybiExPT09bi5oYXMocik/KGE9bmV3IFc4dCh0LGUpLG4uc2V0KHIsW2FdKSk6bz49bi5nZXQocikubGVuZ3RoPyhhPW5ldyBXOHQodCxlKSxuLmdldChyKS5wdXNoKGEpKTphPW4uZ2V0KHIpW29dLGF9LGRpc3Bvc2U6ZnVuY3Rpb24gcigpe249bmV3IFdlYWtNYXB9fX1jbGFzcyBZOHQgZXh0ZW5kcyB0NHR7Y29uc3RydWN0b3IodCl7c3VwZXIoKSx0aGlzLnR5cGU9Ik1lc2hEZXB0aE1hdGVyaWFsIix0aGlzLmRlcHRoUGFja2luZz0zMjAwLHRoaXMubWFwPW51bGwsdGhpcy5hbHBoYU1hcD1udWxsLHRoaXMuZGlzcGxhY2VtZW50TWFwPW51bGwsdGhpcy5kaXNwbGFjZW1lbnRTY2FsZT0xLHRoaXMuZGlzcGxhY2VtZW50Qmlhcz0wLHRoaXMud2lyZWZyYW1lPSExLHRoaXMud2lyZWZyYW1lTGluZXdpZHRoPTEsdGhpcy5mb2c9ITEsdGhpcy5zZXRWYWx1ZXModCl9Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLmRlcHRoUGFja2luZz10LmRlcHRoUGFja2luZyx0aGlzLm1hcD10Lm1hcCx0aGlzLmFscGhhTWFwPXQuYWxwaGFNYXAsdGhpcy5kaXNwbGFjZW1lbnRNYXA9dC5kaXNwbGFjZW1lbnRNYXAsdGhpcy5kaXNwbGFjZW1lbnRTY2FsZT10LmRpc3BsYWNlbWVudFNjYWxlLHRoaXMuZGlzcGxhY2VtZW50Qmlhcz10LmRpc3BsYWNlbWVudEJpYXMsdGhpcy53aXJlZnJhbWU9dC53aXJlZnJhbWUsdGhpcy53aXJlZnJhbWVMaW5ld2lkdGg9dC53aXJlZnJhbWVMaW5ld2lkdGgsdGhpc319WTh0LnByb3RvdHlwZS5pc01lc2hEZXB0aE1hdGVyaWFsPSEwO2NsYXNzIFg4dCBleHRlbmRzIHQ0dHtjb25zdHJ1Y3Rvcih0KXtzdXBlcigpLHRoaXMudHlwZT0iTWVzaERpc3RhbmNlTWF0ZXJpYWwiLHRoaXMucmVmZXJlbmNlUG9zaXRpb249bmV3IEg1dCx0aGlzLm5lYXJEaXN0YW5jZT0xLHRoaXMuZmFyRGlzdGFuY2U9MWUzLHRoaXMubWFwPW51bGwsdGhpcy5hbHBoYU1hcD1udWxsLHRoaXMuZGlzcGxhY2VtZW50TWFwPW51bGwsdGhpcy5kaXNwbGFjZW1lbnRTY2FsZT0xLHRoaXMuZGlzcGxhY2VtZW50Qmlhcz0wLHRoaXMuZm9nPSExLHRoaXMuc2V0VmFsdWVzKHQpfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5yZWZlcmVuY2VQb3NpdGlvbi5jb3B5KHQucmVmZXJlbmNlUG9zaXRpb24pLHRoaXMubmVhckRpc3RhbmNlPXQubmVhckRpc3RhbmNlLHRoaXMuZmFyRGlzdGFuY2U9dC5mYXJEaXN0YW5jZSx0aGlzLm1hcD10Lm1hcCx0aGlzLmFscGhhTWFwPXQuYWxwaGFNYXAsdGhpcy5kaXNwbGFjZW1lbnRNYXA9dC5kaXNwbGFjZW1lbnRNYXAsdGhpcy5kaXNwbGFjZW1lbnRTY2FsZT10LmRpc3BsYWNlbWVudFNjYWxlLHRoaXMuZGlzcGxhY2VtZW50Qmlhcz10LmRpc3BsYWNlbWVudEJpYXMsdGhpc319WDh0LnByb3RvdHlwZS5pc01lc2hEaXN0YW5jZU1hdGVyaWFsPSEwO2Z1bmN0aW9uICQ4dCh0LGUsbil7bGV0IGk9bmV3IG02dDtjb25zdCByPW5ldyBDNXQsbz1uZXcgQzV0LGE9bmV3IFI1dCxzPW5ldyBZOHQoe2RlcHRoUGFja2luZzozMjAxfSksbD1uZXcgWDh0LGM9e30sdT1uLm1heFRleHR1cmVTaXplLGg9ezA6MSwxOjAsMjoyfSxkPW5ldyBuNnQoe2RlZmluZXM6e1NBTVBMRV9SQVRFOjIvOCxIQUxGX1NBTVBMRV9SQVRFOjEvOH0sdW5pZm9ybXM6e3NoYWRvd19wYXNzOnt2YWx1ZTpudWxsfSxyZXNvbHV0aW9uOnt2YWx1ZTpuZXcgQzV0fSxyYWRpdXM6e3ZhbHVlOjR9fSx2ZXJ0ZXhTaGFkZXI6InZvaWQgbWFpbigpIHtcblx0Z2xfUG9zaXRpb24gPSB2ZWM0KCBwb3NpdGlvbiwgMS4wICk7XG59IixmcmFnbWVudFNoYWRlcjoidW5pZm9ybSBzYW1wbGVyMkQgc2hhZG93X3Bhc3M7XG51bmlmb3JtIHZlYzIgcmVzb2x1dGlvbjtcbnVuaWZvcm0gZmxvYXQgcmFkaXVzO1xuI2luY2x1ZGUgPHBhY2tpbmc+XG52b2lkIG1haW4oKSB7XG5cdGZsb2F0IG1lYW4gPSAwLjA7XG5cdGZsb2F0IHNxdWFyZWRfbWVhbiA9IDAuMDtcblx0ZmxvYXQgZGVwdGggPSB1bnBhY2tSR0JBVG9EZXB0aCggdGV4dHVyZTJEKCBzaGFkb3dfcGFzcywgKCBnbF9GcmFnQ29vcmQueHkgKSAvIHJlc29sdXRpb24gKSApO1xuXHRmb3IgKCBmbG9hdCBpID0gLTEuMDsgaSA8IDEuMCA7IGkgKz0gU0FNUExFX1JBVEUpIHtcblx0XHQjaWZkZWYgSE9SSVpPTlRBTF9QQVNTXG5cdFx0XHR2ZWMyIGRpc3RyaWJ1dGlvbiA9IHVucGFja1JHQkFUbzJIYWxmKCB0ZXh0dXJlMkQoIHNoYWRvd19wYXNzLCAoIGdsX0ZyYWdDb29yZC54eSArIHZlYzIoIGksIDAuMCApICogcmFkaXVzICkgLyByZXNvbHV0aW9uICkgKTtcblx0XHRcdG1lYW4gKz0gZGlzdHJpYnV0aW9uLng7XG5cdFx0XHRzcXVhcmVkX21lYW4gKz0gZGlzdHJpYnV0aW9uLnkgKiBkaXN0cmlidXRpb24ueSArIGRpc3RyaWJ1dGlvbi54ICogZGlzdHJpYnV0aW9uLng7XG5cdFx0I2Vsc2Vcblx0XHRcdGZsb2F0IGRlcHRoID0gdW5wYWNrUkdCQVRvRGVwdGgoIHRleHR1cmUyRCggc2hhZG93X3Bhc3MsICggZ2xfRnJhZ0Nvb3JkLnh5ICsgdmVjMiggMC4wLCBpICkgKiByYWRpdXMgKSAvIHJlc29sdXRpb24gKSApO1xuXHRcdFx0bWVhbiArPSBkZXB0aDtcblx0XHRcdHNxdWFyZWRfbWVhbiArPSBkZXB0aCAqIGRlcHRoO1xuXHRcdCNlbmRpZlxuXHR9XG5cdG1lYW4gPSBtZWFuICogSEFMRl9TQU1QTEVfUkFURTtcblx0c3F1YXJlZF9tZWFuID0gc3F1YXJlZF9tZWFuICogSEFMRl9TQU1QTEVfUkFURTtcblx0ZmxvYXQgc3RkX2RldiA9IHNxcnQoIHNxdWFyZWRfbWVhbiAtIG1lYW4gKiBtZWFuICk7XG5cdGdsX0ZyYWdDb2xvciA9IHBhY2sySGFsZlRvUkdCQSggdmVjMiggbWVhbiwgc3RkX2RldiApICk7XG59In0pLHA9ZC5jbG9uZSgpO3AuZGVmaW5lcy5IT1JJWk9OVEFMX1BBU1M9MTtjb25zdCBmPW5ldyBONHQ7Zi5zZXRBdHRyaWJ1dGUoInBvc2l0aW9uIixuZXcgaDR0KG5ldyBGbG9hdDMyQXJyYXkoWy0xLC0xLC41LDMsLTEsLjUsLTEsMywuNV0pLDMpKTtjb25zdCBtPW5ldyBLNHQoZixkKSxnPXRoaXM7ZnVuY3Rpb24gXyhuLGkpe2NvbnN0IHI9ZS51cGRhdGUobSk7ZC51bmlmb3Jtcy5zaGFkb3dfcGFzcy52YWx1ZT1uLm1hcC50ZXh0dXJlLGQudW5pZm9ybXMucmVzb2x1dGlvbi52YWx1ZT1uLm1hcFNpemUsZC51bmlmb3Jtcy5yYWRpdXMudmFsdWU9bi5yYWRpdXMsdC5zZXRSZW5kZXJUYXJnZXQobi5tYXBQYXNzKSx0LmNsZWFyKCksdC5yZW5kZXJCdWZmZXJEaXJlY3QoaSxudWxsLHIsZCxtLG51bGwpLHAudW5pZm9ybXMuc2hhZG93X3Bhc3MudmFsdWU9bi5tYXBQYXNzLnRleHR1cmUscC51bmlmb3Jtcy5yZXNvbHV0aW9uLnZhbHVlPW4ubWFwU2l6ZSxwLnVuaWZvcm1zLnJhZGl1cy52YWx1ZT1uLnJhZGl1cyx0LnNldFJlbmRlclRhcmdldChuLm1hcCksdC5jbGVhcigpLHQucmVuZGVyQnVmZmVyRGlyZWN0KGksbnVsbCxyLHAsbSxudWxsKX1mdW5jdGlvbiB5KGUsbixpLHIsbyxhLHUpe2xldCBkPW51bGw7Y29uc3QgcD0hMD09PXIuaXNQb2ludExpZ2h0P2UuY3VzdG9tRGlzdGFuY2VNYXRlcmlhbDplLmN1c3RvbURlcHRoTWF0ZXJpYWw7aWYoZD12b2lkIDAhPT1wP3A6ITA9PT1yLmlzUG9pbnRMaWdodD9sOnMsdC5sb2NhbENsaXBwaW5nRW5hYmxlZCYmITA9PT1pLmNsaXBTaGFkb3dzJiYwIT09aS5jbGlwcGluZ1BsYW5lcy5sZW5ndGgpe2NvbnN0IHQ9ZC51dWlkLGU9aS51dWlkO2xldCBuPWNbdF07dm9pZCAwPT09biYmKG49e30sY1t0XT1uKTtsZXQgcj1uW2VdO3ZvaWQgMD09PXImJihyPWQuY2xvbmUoKSxuW2VdPXIpLGQ9cn1yZXR1cm4gZC52aXNpYmxlPWkudmlzaWJsZSxkLndpcmVmcmFtZT1pLndpcmVmcmFtZSxkLnNpZGU9Mz09PXU/bnVsbCE9PWkuc2hhZG93U2lkZT9pLnNoYWRvd1NpZGU6aS5zaWRlOm51bGwhPT1pLnNoYWRvd1NpZGU/aS5zaGFkb3dTaWRlOmhbaS5zaWRlXSxkLmNsaXBTaGFkb3dzPWkuY2xpcFNoYWRvd3MsZC5jbGlwcGluZ1BsYW5lcz1pLmNsaXBwaW5nUGxhbmVzLGQuY2xpcEludGVyc2VjdGlvbj1pLmNsaXBJbnRlcnNlY3Rpb24sZC53aXJlZnJhbWVMaW5ld2lkdGg9aS53aXJlZnJhbWVMaW5ld2lkdGgsZC5saW5ld2lkdGg9aS5saW5ld2lkdGgsITA9PT1yLmlzUG9pbnRMaWdodCYmITA9PT1kLmlzTWVzaERpc3RhbmNlTWF0ZXJpYWwmJihkLnJlZmVyZW5jZVBvc2l0aW9uLnNldEZyb21NYXRyaXhQb3NpdGlvbihyLm1hdHJpeFdvcmxkKSxkLm5lYXJEaXN0YW5jZT1vLGQuZmFyRGlzdGFuY2U9YSksZH1mdW5jdGlvbiB2KG4scixvLGEscyl7aWYoITE9PT1uLnZpc2libGUpcmV0dXJuO2lmKG4ubGF5ZXJzLnRlc3Qoci5sYXllcnMpJiYobi5pc01lc2h8fG4uaXNMaW5lfHxuLmlzUG9pbnRzKSYmKG4uY2FzdFNoYWRvd3x8bi5yZWNlaXZlU2hhZG93JiYzPT09cykmJighbi5mcnVzdHVtQ3VsbGVkfHxpLmludGVyc2VjdHNPYmplY3QobikpKXtuLm1vZGVsVmlld01hdHJpeC5tdWx0aXBseU1hdHJpY2VzKG8ubWF0cml4V29ybGRJbnZlcnNlLG4ubWF0cml4V29ybGQpO2NvbnN0IGk9ZS51cGRhdGUobikscj1uLm1hdGVyaWFsO2lmKEFycmF5LmlzQXJyYXkocikpe2NvbnN0IGU9aS5ncm91cHM7Zm9yKGxldCBsPTAsYz1lLmxlbmd0aDtsPGM7bCsrKXtjb25zdCBjPWVbbF0sdT1yW2MubWF0ZXJpYWxJbmRleF07aWYodSYmdS52aXNpYmxlKXtjb25zdCBlPXkobiwwLHUsYSxvLm5lYXIsby5mYXIscyk7dC5yZW5kZXJCdWZmZXJEaXJlY3QobyxudWxsLGksZSxuLGMpfX19ZWxzZSBpZihyLnZpc2libGUpe2NvbnN0IGU9eShuLDAscixhLG8ubmVhcixvLmZhcixzKTt0LnJlbmRlckJ1ZmZlckRpcmVjdChvLG51bGwsaSxlLG4sbnVsbCl9fWNvbnN0IGw9bi5jaGlsZHJlbjtmb3IobGV0IHQ9MCxlPWwubGVuZ3RoO3Q8ZTt0KyspdihsW3RdLHIsbyxhLHMpfXRoaXMuZW5hYmxlZD0hMSx0aGlzLmF1dG9VcGRhdGU9ITAsdGhpcy5uZWVkc1VwZGF0ZT0hMSx0aGlzLnR5cGU9MSx0aGlzLnJlbmRlcj1mdW5jdGlvbihlLG4scyl7aWYoITE9PT1nLmVuYWJsZWQpcmV0dXJuO2lmKCExPT09Zy5hdXRvVXBkYXRlJiYhMT09PWcubmVlZHNVcGRhdGUpcmV0dXJuO2lmKDA9PT1lLmxlbmd0aClyZXR1cm47Y29uc3QgbD10LmdldFJlbmRlclRhcmdldCgpLGM9dC5nZXRBY3RpdmVDdWJlRmFjZSgpLGg9dC5nZXRBY3RpdmVNaXBtYXBMZXZlbCgpLGQ9dC5zdGF0ZTtkLnNldEJsZW5kaW5nKDApLGQuYnVmZmVycy5jb2xvci5zZXRDbGVhcigxLDEsMSwxKSxkLmJ1ZmZlcnMuZGVwdGguc2V0VGVzdCghMCksZC5zZXRTY2lzc29yVGVzdCghMSk7Zm9yKGxldCBsPTAsYz1lLmxlbmd0aDtsPGM7bCsrKXtjb25zdCBjPWVbbF0saD1jLnNoYWRvdztpZih2b2lkIDA9PT1oKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMU2hhZG93TWFwOiIsYywiaGFzIG5vIHNoYWRvdy4iKTtjb250aW51ZX1pZighMT09PWguYXV0b1VwZGF0ZSYmITE9PT1oLm5lZWRzVXBkYXRlKWNvbnRpbnVlO3IuY29weShoLm1hcFNpemUpO2NvbnN0IHA9aC5nZXRGcmFtZUV4dGVudHMoKTtpZihyLm11bHRpcGx5KHApLG8uY29weShoLm1hcFNpemUpLChyLng+dXx8ci55PnUpJiYoci54PnUmJihvLng9TWF0aC5mbG9vcih1L3AueCksci54PW8ueCpwLngsaC5tYXBTaXplLng9by54KSxyLnk+dSYmKG8ueT1NYXRoLmZsb29yKHUvcC55KSxyLnk9by55KnAueSxoLm1hcFNpemUueT1vLnkpKSxudWxsPT09aC5tYXAmJiFoLmlzUG9pbnRMaWdodFNoYWRvdyYmMz09PXRoaXMudHlwZSl7Y29uc3QgdD17bWluRmlsdGVyOnAydCxtYWdGaWx0ZXI6cDJ0LGZvcm1hdDpTMnR9O2gubWFwPW5ldyBPNXQoci54LHIueSx0KSxoLm1hcC50ZXh0dXJlLm5hbWU9Yy5uYW1lKyIuc2hhZG93TWFwIixoLm1hcFBhc3M9bmV3IE81dChyLngsci55LHQpLGguY2FtZXJhLnVwZGF0ZVByb2plY3Rpb25NYXRyaXgoKX1pZihudWxsPT09aC5tYXApe2gubWFwPW5ldyBPNXQoci54LHIueSx7bWluRmlsdGVyOnUydCxtYWdGaWx0ZXI6dTJ0LGZvcm1hdDpTMnR9KSxoLm1hcC50ZXh0dXJlLm5hbWU9Yy5uYW1lKyIuc2hhZG93TWFwIixoLmNhbWVyYS51cGRhdGVQcm9qZWN0aW9uTWF0cml4KCl9dC5zZXRSZW5kZXJUYXJnZXQoaC5tYXApLHQuY2xlYXIoKTtjb25zdCBmPWguZ2V0Vmlld3BvcnRDb3VudCgpO2ZvcihsZXQgdD0wO3Q8Zjt0Kyspe2NvbnN0IGU9aC5nZXRWaWV3cG9ydCh0KTthLnNldChvLngqZS54LG8ueSplLnksby54KmUueixvLnkqZS53KSxkLnZpZXdwb3J0KGEpLGgudXBkYXRlTWF0cmljZXMoYyx0KSxpPWguZ2V0RnJ1c3R1bSgpLHYobixzLGguY2FtZXJhLGMsdGhpcy50eXBlKX1oLmlzUG9pbnRMaWdodFNoYWRvd3x8MyE9PXRoaXMudHlwZXx8XyhoLHMpLGgubmVlZHNVcGRhdGU9ITF9Zy5uZWVkc1VwZGF0ZT0hMSx0LnNldFJlbmRlclRhcmdldChsLGMsaCl9fWZ1bmN0aW9uIEs4dCh0LGUsbil7Y29uc3QgaT1uLmlzV2ViR0wyO2NvbnN0IHI9bmV3KGZ1bmN0aW9uIG8oKXtsZXQgZT0hMTtjb25zdCBuPW5ldyBSNXQ7bGV0IGk9bnVsbDtjb25zdCByPW5ldyBSNXQoMCwwLDAsMCk7cmV0dXJue3NldE1hc2s6ZnVuY3Rpb24obil7aT09PW58fGV8fCh0LmNvbG9yTWFzayhuLG4sbixuKSxpPW4pfSxzZXRMb2NrZWQ6ZnVuY3Rpb24odCl7ZT10fSxzZXRDbGVhcjpmdW5jdGlvbihlLGksbyxhLHMpeyEwPT09cyYmKGUqPWEsaSo9YSxvKj1hKSxuLnNldChlLGksbyxhKSwhMT09PXIuZXF1YWxzKG4pJiYodC5jbGVhckNvbG9yKGUsaSxvLGEpLHIuY29weShuKSl9LHJlc2V0OmZ1bmN0aW9uKCl7ZT0hMSxpPW51bGwsci5zZXQoLTEsMCwwLDApfX19KSxhPW5ldyhmdW5jdGlvbiBzKCl7bGV0IGU9ITEsbj1udWxsLGk9bnVsbCxyPW51bGw7cmV0dXJue3NldFRlc3Q6ZnVuY3Rpb24odCl7dD9GKDI5MjkpOlYoMjkyOSl9LHNldE1hc2s6ZnVuY3Rpb24oaSl7bj09PWl8fGV8fCh0LmRlcHRoTWFzayhpKSxuPWkpfSxzZXRGdW5jOmZ1bmN0aW9uKGUpe2lmKGkhPT1lKXtpZihlKXN3aXRjaChlKXtjYXNlIDA6dC5kZXB0aEZ1bmMoNTEyKTticmVhaztjYXNlIDE6dC5kZXB0aEZ1bmMoNTE5KTticmVhaztjYXNlIDI6dC5kZXB0aEZ1bmMoNTEzKTticmVhaztjYXNlIDM6dC5kZXB0aEZ1bmMoNTE1KTticmVhaztjYXNlIDQ6dC5kZXB0aEZ1bmMoNTE0KTticmVhaztjYXNlIDU6dC5kZXB0aEZ1bmMoNTE4KTticmVhaztjYXNlIDY6dC5kZXB0aEZ1bmMoNTE2KTticmVhaztjYXNlIDc6dC5kZXB0aEZ1bmMoNTE3KTticmVhaztkZWZhdWx0OnQuZGVwdGhGdW5jKDUxNSl9ZWxzZSB0LmRlcHRoRnVuYyg1MTUpO2k9ZX19LHNldExvY2tlZDpmdW5jdGlvbih0KXtlPXR9LHNldENsZWFyOmZ1bmN0aW9uKGUpe3IhPT1lJiYodC5jbGVhckRlcHRoKGUpLHI9ZSl9LHJlc2V0OmZ1bmN0aW9uKCl7ZT0hMSxuPW51bGwsaT1udWxsLHI9bnVsbH19fSksbD1uZXcoZnVuY3Rpb24gYygpe2xldCBlPSExLG49bnVsbCxpPW51bGwscj1udWxsLG89bnVsbCxhPW51bGwscz1udWxsLGw9bnVsbCxjPW51bGw7cmV0dXJue3NldFRlc3Q6ZnVuY3Rpb24odCl7ZXx8KHQ/RigyOTYwKTpWKDI5NjApKX0sc2V0TWFzazpmdW5jdGlvbihpKXtuPT09aXx8ZXx8KHQuc3RlbmNpbE1hc2soaSksbj1pKX0sc2V0RnVuYzpmdW5jdGlvbihlLG4sYSl7aT09PWUmJnI9PT1uJiZvPT09YXx8KHQuc3RlbmNpbEZ1bmMoZSxuLGEpLGk9ZSxyPW4sbz1hKX0sc2V0T3A6ZnVuY3Rpb24oZSxuLGkpe2E9PT1lJiZzPT09biYmbD09PWl8fCh0LnN0ZW5jaWxPcChlLG4saSksYT1lLHM9bixsPWkpfSxzZXRMb2NrZWQ6ZnVuY3Rpb24odCl7ZT10fSxzZXRDbGVhcjpmdW5jdGlvbihlKXtjIT09ZSYmKHQuY2xlYXJTdGVuY2lsKGUpLGM9ZSl9LHJlc2V0OmZ1bmN0aW9uKCl7ZT0hMSxuPW51bGwsaT1udWxsLHI9bnVsbCxvPW51bGwsYT1udWxsLHM9bnVsbCxsPW51bGwsYz1udWxsfX19KTtsZXQgdT17fSxoPW51bGwsZD17fSxwPW51bGwsZj0hMSxtPW51bGwsZz1udWxsLF89bnVsbCx5PW51bGwsdj1udWxsLGI9bnVsbCx4PW51bGwsdz0hMSxTPW51bGwsTT1udWxsLEU9bnVsbCxUPW51bGwsQz1udWxsO2NvbnN0IEE9dC5nZXRQYXJhbWV0ZXIoMzU2NjEpO2xldCBrPSExLEw9MDtjb25zdCBQPXQuZ2V0UGFyYW1ldGVyKDc5MzgpOy0xIT09UC5pbmRleE9mKCJXZWJHTCIpPyhMPXBhcnNlRmxvYXQoL15XZWJHTCAoXGQpLy5leGVjKFApWzFdKSxrPUw+PTEpOi0xIT09UC5pbmRleE9mKCJPcGVuR0wgRVMiKSYmKEw9cGFyc2VGbG9hdCgvXk9wZW5HTCBFUyAoXGQpLy5leGVjKFApWzFdKSxrPUw+PTIpO2xldCBOPW51bGwsST17fTtjb25zdCBSPXQuZ2V0UGFyYW1ldGVyKDMwODgpLE89dC5nZXRQYXJhbWV0ZXIoMjk3OCksej0obmV3IFI1dCkuZnJvbUFycmF5KFIpLEQ9KG5ldyBSNXQpLmZyb21BcnJheShPKTtmdW5jdGlvbiBCKGUsbixpKXtjb25zdCByPW5ldyBVaW50OEFycmF5KDQpLG89dC5jcmVhdGVUZXh0dXJlKCk7dC5iaW5kVGV4dHVyZShlLG8pLHQudGV4UGFyYW1ldGVyaShlLDEwMjQxLDk3MjgpLHQudGV4UGFyYW1ldGVyaShlLDEwMjQwLDk3MjgpO2ZvcihsZXQgZT0wO2U8aTtlKyspdC50ZXhJbWFnZTJEKG4rZSwwLDY0MDgsMSwxLDAsNjQwOCw1MTIxLHIpO3JldHVybiBvfWNvbnN0IEg9e307ZnVuY3Rpb24gRihlKXshMCE9PXVbZV0mJih0LmVuYWJsZShlKSx1W2VdPSEwKX1mdW5jdGlvbiBWKGUpeyExIT09dVtlXSYmKHQuZGlzYWJsZShlKSx1W2VdPSExKX1IWzM1NTNdPUIoMzU1MywzNTUzLDEpLEhbMzQwNjddPUIoMzQwNjcsMzQwNjksNiksci5zZXRDbGVhcigwLDAsMCwxKSxhLnNldENsZWFyKDEpLGwuc2V0Q2xlYXIoMCksRigyOTI5KSxhLnNldEZ1bmMoMyksVyghMSkscSgxKSxGKDI4ODQpLEcoMCk7Y29uc3QgVT17W1EwdF06MzI3NzQsMTAxOjMyNzc4LDEwMjozMjc3OX07aWYoaSlVWzEwM109MzI3NzUsVVsxMDRdPTMyNzc2O2Vsc2V7Y29uc3QgdD1lLmdldCgiRVhUX2JsZW5kX21pbm1heCIpO251bGwhPT10JiYoVVsxMDNdPXQuTUlOX0VYVCxVWzEwNF09dC5NQVhfRVhUKX1jb25zdCBqPXsyMDA6MCwyMDE6MSwyMDI6NzY4LDIwNDo3NzAsMjEwOjc3NiwyMDg6Nzc0LDIwNjo3NzIsMjAzOjc2OSwyMDU6NzcxLDIwOTo3NzUsMjA3Ojc3M307ZnVuY3Rpb24gRyhlLG4saSxyLG8sYSxzLGwpe2lmKDAhPT1lKXtpZighMT09PWYmJihGKDMwNDIpLGY9ITApLDU9PT1lKW89b3x8bixhPWF8fGkscz1zfHxyLG49PT1nJiZvPT09dnx8KHQuYmxlbmRFcXVhdGlvblNlcGFyYXRlKFVbbl0sVVtvXSksZz1uLHY9byksaT09PV8mJnI9PT15JiZhPT09YiYmcz09PXh8fCh0LmJsZW5kRnVuY1NlcGFyYXRlKGpbaV0saltyXSxqW2FdLGpbc10pLF89aSx5PXIsYj1hLHg9cyksbT1lLHc9bnVsbDtlbHNlIGlmKGUhPT1tfHxsIT09dyl7aWYoZz09PVEwdCYmdj09PVEwdHx8KHQuYmxlbmRFcXVhdGlvbigzMjc3NCksZz1RMHQsdj1RMHQpLGwpc3dpdGNoKGUpe2Nhc2UgMTp0LmJsZW5kRnVuY1NlcGFyYXRlKDEsNzcxLDEsNzcxKTticmVhaztjYXNlIDI6dC5ibGVuZEZ1bmMoMSwxKTticmVhaztjYXNlIDM6dC5ibGVuZEZ1bmNTZXBhcmF0ZSgwLDAsNzY5LDc3MSk7YnJlYWs7Y2FzZSA0OnQuYmxlbmRGdW5jU2VwYXJhdGUoMCw3NjgsMCw3NzApO2JyZWFrO2RlZmF1bHQ6Y29uc29sZS5lcnJvcigiVEhSRUUuV2ViR0xTdGF0ZTogSW52YWxpZCBibGVuZGluZzogIixlKX1lbHNlIHN3aXRjaChlKXtjYXNlIDE6dC5ibGVuZEZ1bmNTZXBhcmF0ZSg3NzAsNzcxLDEsNzcxKTticmVhaztjYXNlIDI6dC5ibGVuZEZ1bmMoNzcwLDEpO2JyZWFrO2Nhc2UgMzp0LmJsZW5kRnVuYygwLDc2OSk7YnJlYWs7Y2FzZSA0OnQuYmxlbmRGdW5jKDAsNzY4KTticmVhaztkZWZhdWx0OmNvbnNvbGUuZXJyb3IoIlRIUkVFLldlYkdMU3RhdGU6IEludmFsaWQgYmxlbmRpbmc6ICIsZSl9Xz1udWxsLHk9bnVsbCxiPW51bGwseD1udWxsLG09ZSx3PWx9fWVsc2UhMD09PWYmJihWKDMwNDIpLGY9ITEpfWZ1bmN0aW9uIFcoZSl7UyE9PWUmJih0LmZyb250RmFjZShlPzIzMDQ6MjMwNSksUz1lKX1mdW5jdGlvbiBxKGUpezAhPT1lPyhGKDI4ODQpLGUhPT1NJiZ0LmN1bGxGYWNlKDE9PT1lPzEwMjk6Mj09PWU/MTAyODoxMDMyKSk6VigyODg0KSxNPWV9ZnVuY3Rpb24gWShlLG4saSl7ZT8oRigzMjgyMyksVD09PW4mJkM9PT1pfHwodC5wb2x5Z29uT2Zmc2V0KG4saSksVD1uLEM9aSkpOlYoMzI4MjMpfWZ1bmN0aW9uIFgoZSl7dm9pZCAwPT09ZSYmKGU9MzM5ODQrQS0xKSxOIT09ZSYmKHQuYWN0aXZlVGV4dHVyZShlKSxOPWUpfXJldHVybntidWZmZXJzOntjb2xvcjpyLGRlcHRoOmEsc3RlbmNpbDpsfSxlbmFibGU6RixkaXNhYmxlOlYsYmluZEZyYW1lYnVmZmVyOmZ1bmN0aW9uICQoZSxuKXtyZXR1cm4gbnVsbD09PW4mJm51bGwhPT1oJiYobj1oKSxkW2VdIT09biYmKHQuYmluZEZyYW1lYnVmZmVyKGUsbiksZFtlXT1uLGkmJigzNjAwOT09PWUmJihkWzM2MTYwXT1uKSwzNjE2MD09PWUmJihkWzM2MDA5XT1uKSksITApfSxiaW5kWFJGcmFtZWJ1ZmZlcjpmdW5jdGlvbiBLKGUpe2UhPT1oJiYodC5iaW5kRnJhbWVidWZmZXIoMzYxNjAsZSksaD1lKX0sdXNlUHJvZ3JhbTpmdW5jdGlvbiBaKGUpe3JldHVybiBwIT09ZSYmKHQudXNlUHJvZ3JhbShlKSxwPWUsITApfSxzZXRCbGVuZGluZzpHLHNldE1hdGVyaWFsOmZ1bmN0aW9uIEoodCxlKXsyPT09dC5zaWRlP1YoMjg4NCk6RigyODg0KTtsZXQgbj0xPT09dC5zaWRlO2UmJihuPSFuKSxXKG4pLDE9PT10LmJsZW5kaW5nJiYhMT09PXQudHJhbnNwYXJlbnQ/RygwKTpHKHQuYmxlbmRpbmcsdC5ibGVuZEVxdWF0aW9uLHQuYmxlbmRTcmMsdC5ibGVuZERzdCx0LmJsZW5kRXF1YXRpb25BbHBoYSx0LmJsZW5kU3JjQWxwaGEsdC5ibGVuZERzdEFscGhhLHQucHJlbXVsdGlwbGllZEFscGhhKSxhLnNldEZ1bmModC5kZXB0aEZ1bmMpLGEuc2V0VGVzdCh0LmRlcHRoVGVzdCksYS5zZXRNYXNrKHQuZGVwdGhXcml0ZSksci5zZXRNYXNrKHQuY29sb3JXcml0ZSk7Y29uc3QgaT10LnN0ZW5jaWxXcml0ZTtsLnNldFRlc3QoaSksaSYmKGwuc2V0TWFzayh0LnN0ZW5jaWxXcml0ZU1hc2spLGwuc2V0RnVuYyh0LnN0ZW5jaWxGdW5jLHQuc3RlbmNpbFJlZix0LnN0ZW5jaWxGdW5jTWFzayksbC5zZXRPcCh0LnN0ZW5jaWxGYWlsLHQuc3RlbmNpbFpGYWlsLHQuc3RlbmNpbFpQYXNzKSksWSh0LnBvbHlnb25PZmZzZXQsdC5wb2x5Z29uT2Zmc2V0RmFjdG9yLHQucG9seWdvbk9mZnNldFVuaXRzKSwhMD09PXQuYWxwaGFUb0NvdmVyYWdlP0YoMzI5MjYpOlYoMzI5MjYpfSxzZXRGbGlwU2lkZWQ6VyxzZXRDdWxsRmFjZTpxLHNldExpbmVXaWR0aDpmdW5jdGlvbiBRKGUpe2UhPT1FJiYoayYmdC5saW5lV2lkdGgoZSksRT1lKX0sc2V0UG9seWdvbk9mZnNldDpZLHNldFNjaXNzb3JUZXN0OmZ1bmN0aW9uIHR0KHQpe3Q/RigzMDg5KTpWKDMwODkpfSxhY3RpdmVUZXh0dXJlOlgsYmluZFRleHR1cmU6ZnVuY3Rpb24gZXQoZSxuKXtudWxsPT09TiYmWCgpO2xldCBpPUlbTl07dm9pZCAwPT09aSYmKGk9e3R5cGU6dm9pZCAwLHRleHR1cmU6dm9pZCAwfSxJW05dPWkpLGkudHlwZT09PWUmJmkudGV4dHVyZT09PW58fCh0LmJpbmRUZXh0dXJlKGUsbnx8SFtlXSksaS50eXBlPWUsaS50ZXh0dXJlPW4pfSx1bmJpbmRUZXh0dXJlOmZ1bmN0aW9uIG50KCl7Y29uc3QgZT1JW05dO3ZvaWQgMCE9PWUmJnZvaWQgMCE9PWUudHlwZSYmKHQuYmluZFRleHR1cmUoZS50eXBlLG51bGwpLGUudHlwZT12b2lkIDAsZS50ZXh0dXJlPXZvaWQgMCl9LGNvbXByZXNzZWRUZXhJbWFnZTJEOmZ1bmN0aW9uIGl0KCl7dHJ5e3QuY29tcHJlc3NlZFRleEltYWdlMkQuYXBwbHkodCxhcmd1bWVudHMpfWNhdGNoKHQpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLldlYkdMU3RhdGU6Iix0KX19LHRleEltYWdlMkQ6ZnVuY3Rpb24gcnQoKXt0cnl7dC50ZXhJbWFnZTJELmFwcGx5KHQsYXJndW1lbnRzKX1jYXRjaCh0KXtjb25zb2xlLmVycm9yKCJUSFJFRS5XZWJHTFN0YXRlOiIsdCl9fSx0ZXhJbWFnZTNEOmZ1bmN0aW9uIG90KCl7dHJ5e3QudGV4SW1hZ2UzRC5hcHBseSh0LGFyZ3VtZW50cyl9Y2F0Y2godCl7Y29uc29sZS5lcnJvcigiVEhSRUUuV2ViR0xTdGF0ZToiLHQpfX0sc2Npc3NvcjpmdW5jdGlvbiBhdChlKXshMT09PXouZXF1YWxzKGUpJiYodC5zY2lzc29yKGUueCxlLnksZS56LGUudyksei5jb3B5KGUpKX0sdmlld3BvcnQ6ZnVuY3Rpb24gc3QoZSl7ITE9PT1ELmVxdWFscyhlKSYmKHQudmlld3BvcnQoZS54LGUueSxlLnosZS53KSxELmNvcHkoZSkpfSxyZXNldDpmdW5jdGlvbiBsdCgpe3QuZGlzYWJsZSgzMDQyKSx0LmRpc2FibGUoMjg4NCksdC5kaXNhYmxlKDI5MjkpLHQuZGlzYWJsZSgzMjgyMyksdC5kaXNhYmxlKDMwODkpLHQuZGlzYWJsZSgyOTYwKSx0LmRpc2FibGUoMzI5MjYpLHQuYmxlbmRFcXVhdGlvbigzMjc3NCksdC5ibGVuZEZ1bmMoMSwwKSx0LmJsZW5kRnVuY1NlcGFyYXRlKDEsMCwxLDApLHQuY29sb3JNYXNrKCEwLCEwLCEwLCEwKSx0LmNsZWFyQ29sb3IoMCwwLDAsMCksdC5kZXB0aE1hc2soITApLHQuZGVwdGhGdW5jKDUxMyksdC5jbGVhckRlcHRoKDEpLHQuc3RlbmNpbE1hc2soNDI5NDk2NzI5NSksdC5zdGVuY2lsRnVuYyg1MTksMCw0Mjk0OTY3Mjk1KSx0LnN0ZW5jaWxPcCg3NjgwLDc2ODAsNzY4MCksdC5jbGVhclN0ZW5jaWwoMCksdC5jdWxsRmFjZSgxMDI5KSx0LmZyb250RmFjZSgyMzA1KSx0LnBvbHlnb25PZmZzZXQoMCwwKSx0LmFjdGl2ZVRleHR1cmUoMzM5ODQpLHQuYmluZEZyYW1lYnVmZmVyKDM2MTYwLG51bGwpLCEwPT09aSYmKHQuYmluZEZyYW1lYnVmZmVyKDM2MDA5LG51bGwpLHQuYmluZEZyYW1lYnVmZmVyKDM2MDA4LG51bGwpKSx0LnVzZVByb2dyYW0obnVsbCksdC5saW5lV2lkdGgoMSksdC5zY2lzc29yKDAsMCx0LmNhbnZhcy53aWR0aCx0LmNhbnZhcy5oZWlnaHQpLHQudmlld3BvcnQoMCwwLHQuY2FudmFzLndpZHRoLHQuY2FudmFzLmhlaWdodCksdT17fSxOPW51bGwsST17fSxoPW51bGwsZD17fSxwPW51bGwsZj0hMSxtPW51bGwsZz1udWxsLF89bnVsbCx5PW51bGwsdj1udWxsLGI9bnVsbCx4PW51bGwsdz0hMSxTPW51bGwsTT1udWxsLEU9bnVsbCxUPW51bGwsQz1udWxsLHouc2V0KDAsMCx0LmNhbnZhcy53aWR0aCx0LmNhbnZhcy5oZWlnaHQpLEQuc2V0KDAsMCx0LmNhbnZhcy53aWR0aCx0LmNhbnZhcy5oZWlnaHQpLHIucmVzZXQoKSxhLnJlc2V0KCksbC5yZXNldCgpfX19ZnVuY3Rpb24gWjh0KHQsZSxuLGkscixvLGEpe2NvbnN0IHM9ci5pc1dlYkdMMixsPXIubWF4VGV4dHVyZXMsYz1yLm1heEN1YmVtYXBTaXplLHU9ci5tYXhUZXh0dXJlU2l6ZSxoPXIubWF4U2FtcGxlcyxkPW5ldyBXZWFrTWFwO2xldCBwLGY9ITE7dHJ5e2Y9InVuZGVmaW5lZCIhPXR5cGVvZiBPZmZzY3JlZW5DYW52YXMmJm51bGwhPT1uZXcgT2Zmc2NyZWVuQ2FudmFzKDEsMSkuZ2V0Q29udGV4dCgiMmQiKX1jYXRjaCh0KXt9ZnVuY3Rpb24gbSh0LGUpe3JldHVybiBmP25ldyBPZmZzY3JlZW5DYW52YXModCxlKTpkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiLCJjYW52YXMiKX1mdW5jdGlvbiBnKHQsZSxuLGkpe2xldCByPTE7aWYoKHQud2lkdGg+aXx8dC5oZWlnaHQ+aSkmJihyPWkvTWF0aC5tYXgodC53aWR0aCx0LmhlaWdodCkpLHI8MXx8ITA9PT1lKXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIEhUTUxJbWFnZUVsZW1lbnQmJnQgaW5zdGFuY2VvZiBIVE1MSW1hZ2VFbGVtZW50fHwidW5kZWZpbmVkIiE9dHlwZW9mIEhUTUxDYW52YXNFbGVtZW50JiZ0IGluc3RhbmNlb2YgSFRNTENhbnZhc0VsZW1lbnR8fCJ1bmRlZmluZWQiIT10eXBlb2YgSW1hZ2VCaXRtYXAmJnQgaW5zdGFuY2VvZiBJbWFnZUJpdG1hcCl7Y29uc3QgaT1lP2Q1dDpNYXRoLmZsb29yLG89aShyKnQud2lkdGgpLGE9aShyKnQuaGVpZ2h0KTt2b2lkIDA9PT1wJiYocD1tKG8sYSkpO2NvbnN0IHM9bj9tKG8sYSk6cDtzLndpZHRoPW8scy5oZWlnaHQ9YTtyZXR1cm4gcy5nZXRDb250ZXh0KCIyZCIpLmRyYXdJbWFnZSh0LDAsMCxvLGEpLGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogVGV4dHVyZSBoYXMgYmVlbiByZXNpemVkIGZyb20gKCIrdC53aWR0aCsieCIrdC5oZWlnaHQrIikgdG8gKCIrbysieCIrYSsiKS4iKSxzfXJldHVybiJkYXRhImluIHQmJmNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogSW1hZ2UgaW4gRGF0YVRleHR1cmUgaXMgdG9vIGJpZyAoIit0LndpZHRoKyJ4Iit0LmhlaWdodCsiKS4iKSx0fXJldHVybiB0fWZ1bmN0aW9uIF8odCl7cmV0dXJuIHU1dCh0LndpZHRoKSYmdTV0KHQuaGVpZ2h0KX1mdW5jdGlvbiB5KHQsZSl7cmV0dXJuIHQuZ2VuZXJhdGVNaXBtYXBzJiZlJiZ0Lm1pbkZpbHRlciE9PXUydCYmdC5taW5GaWx0ZXIhPT1wMnR9ZnVuY3Rpb24gdihlLG4scixvLGE9MSl7dC5nZW5lcmF0ZU1pcG1hcChlKTtpLmdldChuKS5fX21heE1pcExldmVsPU1hdGgubG9nMihNYXRoLm1heChyLG8sYSkpfWZ1bmN0aW9uIGIobixpLHIpe2lmKCExPT09cylyZXR1cm4gaTtpZihudWxsIT09bil7aWYodm9pZCAwIT09dFtuXSlyZXR1cm4gdFtuXTtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IEF0dGVtcHQgdG8gdXNlIG5vbi1leGlzdGluZyBXZWJHTCBpbnRlcm5hbCBmb3JtYXQgJyIrbisiJyIpfWxldCBvPWk7cmV0dXJuIDY0MDM9PT1pJiYoNTEyNj09PXImJihvPTMzMzI2KSw1MTMxPT09ciYmKG89MzMzMjUpLDUxMjE9PT1yJiYobz0zMzMyMSkpLDY0MDc9PT1pJiYoNTEyNj09PXImJihvPTM0ODM3KSw1MTMxPT09ciYmKG89MzQ4NDMpLDUxMjE9PT1yJiYobz0zMjg0OSkpLDY0MDg9PT1pJiYoNTEyNj09PXImJihvPTM0ODM2KSw1MTMxPT09ciYmKG89MzQ4NDIpLDUxMjE9PT1yJiYobz0zMjg1NikpLDMzMzI1IT09byYmMzMzMjYhPT1vJiYzNDg0MiE9PW8mJjM0ODM2IT09b3x8ZS5nZXQoIkVYVF9jb2xvcl9idWZmZXJfZmxvYXQiKSxvfWZ1bmN0aW9uIHgodCl7cmV0dXJuIHQ9PT11MnR8fHQ9PT1oMnR8fHQ9PT1kMnQ/OTcyODo5NzI5fWZ1bmN0aW9uIHcoZSl7Y29uc3Qgbj1lLnRhcmdldDtuLnJlbW92ZUV2ZW50TGlzdGVuZXIoImRpc3Bvc2UiLHcpLChmdW5jdGlvbiByKGUpe2NvbnN0IG49aS5nZXQoZSk7aWYodm9pZCAwPT09bi5fX3dlYmdsSW5pdClyZXR1cm47dC5kZWxldGVUZXh0dXJlKG4uX193ZWJnbFRleHR1cmUpLGkucmVtb3ZlKGUpfSkobiksbi5pc1ZpZGVvVGV4dHVyZSYmZC5kZWxldGUobiksYS5tZW1vcnkudGV4dHVyZXMtLX1mdW5jdGlvbiBTKGUpe2NvbnN0IG49ZS50YXJnZXQ7bi5yZW1vdmVFdmVudExpc3RlbmVyKCJkaXNwb3NlIixTKSwoZnVuY3Rpb24gcihlKXtjb25zdCBuPWUudGV4dHVyZSxyPWkuZ2V0KGUpLG89aS5nZXQobik7aWYoIWUpcmV0dXJuO3ZvaWQgMCE9PW8uX193ZWJnbFRleHR1cmUmJih0LmRlbGV0ZVRleHR1cmUoby5fX3dlYmdsVGV4dHVyZSksYS5tZW1vcnkudGV4dHVyZXMtLSk7ZS5kZXB0aFRleHR1cmUmJmUuZGVwdGhUZXh0dXJlLmRpc3Bvc2UoKTtpZihlLmlzV2ViR0xDdWJlUmVuZGVyVGFyZ2V0KWZvcihsZXQgZT0wO2U8NjtlKyspdC5kZWxldGVGcmFtZWJ1ZmZlcihyLl9fd2ViZ2xGcmFtZWJ1ZmZlcltlXSksci5fX3dlYmdsRGVwdGhidWZmZXImJnQuZGVsZXRlUmVuZGVyYnVmZmVyKHIuX193ZWJnbERlcHRoYnVmZmVyW2VdKTtlbHNlIHQuZGVsZXRlRnJhbWVidWZmZXIoci5fX3dlYmdsRnJhbWVidWZmZXIpLHIuX193ZWJnbERlcHRoYnVmZmVyJiZ0LmRlbGV0ZVJlbmRlcmJ1ZmZlcihyLl9fd2ViZ2xEZXB0aGJ1ZmZlciksci5fX3dlYmdsTXVsdGlzYW1wbGVkRnJhbWVidWZmZXImJnQuZGVsZXRlRnJhbWVidWZmZXIoci5fX3dlYmdsTXVsdGlzYW1wbGVkRnJhbWVidWZmZXIpLHIuX193ZWJnbENvbG9yUmVuZGVyYnVmZmVyJiZ0LmRlbGV0ZVJlbmRlcmJ1ZmZlcihyLl9fd2ViZ2xDb2xvclJlbmRlcmJ1ZmZlciksci5fX3dlYmdsRGVwdGhSZW5kZXJidWZmZXImJnQuZGVsZXRlUmVuZGVyYnVmZmVyKHIuX193ZWJnbERlcHRoUmVuZGVyYnVmZmVyKTtpZihlLmlzV2ViR0xNdWx0aXBsZVJlbmRlclRhcmdldHMpZm9yKGxldCBlPTAscj1uLmxlbmd0aDtlPHI7ZSsrKXtjb25zdCByPWkuZ2V0KG5bZV0pO3IuX193ZWJnbFRleHR1cmUmJih0LmRlbGV0ZVRleHR1cmUoci5fX3dlYmdsVGV4dHVyZSksYS5tZW1vcnkudGV4dHVyZXMtLSksaS5yZW1vdmUobltlXSl9aS5yZW1vdmUobiksaS5yZW1vdmUoZSl9KShuKX1sZXQgTT0wO2Z1bmN0aW9uIEUodCxlKXtjb25zdCByPWkuZ2V0KHQpO2lmKHQuaXNWaWRlb1RleHR1cmUmJihmdW5jdGlvbiBvKHQpe2NvbnN0IGU9YS5yZW5kZXIuZnJhbWU7ZC5nZXQodCkhPT1lJiYoZC5zZXQodCxlKSx0LnVwZGF0ZSgpKX0pKHQpLHQudmVyc2lvbj4wJiZyLl9fdmVyc2lvbiE9PXQudmVyc2lvbil7Y29uc3Qgbj10LmltYWdlO2lmKHZvaWQgMD09PW4pY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiBUZXh0dXJlIG1hcmtlZCBmb3IgdXBkYXRlIGJ1dCBpbWFnZSBpcyB1bmRlZmluZWQiKTtlbHNle2lmKCExIT09bi5jb21wbGV0ZSlyZXR1cm4gdm9pZCBQKHIsdCxlKTtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IFRleHR1cmUgbWFya2VkIGZvciB1cGRhdGUgYnV0IGltYWdlIGlzIGluY29tcGxldGUiKX19bi5hY3RpdmVUZXh0dXJlKDMzOTg0K2UpLG4uYmluZFRleHR1cmUoMzU1MyxyLl9fd2ViZ2xUZXh0dXJlKX1mdW5jdGlvbiBUKGUscil7Y29uc3QgYT1pLmdldChlKTtlLnZlcnNpb24+MCYmYS5fX3ZlcnNpb24hPT1lLnZlcnNpb24/KGZ1bmN0aW9uIGwoZSxpLHIpe2lmKDYhPT1pLmltYWdlLmxlbmd0aClyZXR1cm47TChlLGkpLG4uYWN0aXZlVGV4dHVyZSgzMzk4NCtyKSxuLmJpbmRUZXh0dXJlKDM0MDY3LGUuX193ZWJnbFRleHR1cmUpLHQucGl4ZWxTdG9yZWkoMzc0NDAsaS5mbGlwWSksdC5waXhlbFN0b3JlaSgzNzQ0MSxpLnByZW11bHRpcGx5QWxwaGEpLHQucGl4ZWxTdG9yZWkoMzMxNyxpLnVucGFja0FsaWdubWVudCksdC5waXhlbFN0b3JlaSgzNzQ0MywwKTtjb25zdCBhPWkmJihpLmlzQ29tcHJlc3NlZFRleHR1cmV8fGkuaW1hZ2VbMF0uaXNDb21wcmVzc2VkVGV4dHVyZSksbD1pLmltYWdlWzBdJiZpLmltYWdlWzBdLmlzRGF0YVRleHR1cmUsdT1bXTtmb3IobGV0IHQ9MDt0PDY7dCsrKXVbdF09YXx8bD9sP2kuaW1hZ2VbdF0uaW1hZ2U6aS5pbWFnZVt0XTpnKGkuaW1hZ2VbdF0sITEsITAsYyk7Y29uc3QgaD11WzBdLGQ9XyhoKXx8cyxwPW8uY29udmVydChpLmZvcm1hdCksZj1vLmNvbnZlcnQoaS50eXBlKSxtPWIoaS5pbnRlcm5hbEZvcm1hdCxwLGYpO2xldCB4O2lmKGsoMzQwNjcsaSxkKSxhKXtmb3IobGV0IHQ9MDt0PDY7dCsrKXt4PXVbdF0ubWlwbWFwcztmb3IobGV0IGU9MDtlPHgubGVuZ3RoO2UrKyl7Y29uc3Qgcj14W2VdO2kuZm9ybWF0IT09UzJ0JiZpLmZvcm1hdCE9PXcydD9udWxsIT09cD9uLmNvbXByZXNzZWRUZXhJbWFnZTJEKDM0MDY5K3QsZSxtLHIud2lkdGgsci5oZWlnaHQsMCxyLmRhdGEpOmNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogQXR0ZW1wdCB0byBsb2FkIHVuc3VwcG9ydGVkIGNvbXByZXNzZWQgdGV4dHVyZSBmb3JtYXQgaW4gLnNldFRleHR1cmVDdWJlKCkiKTpuLnRleEltYWdlMkQoMzQwNjkrdCxlLG0sci53aWR0aCxyLmhlaWdodCwwLHAsZixyLmRhdGEpfX1lLl9fbWF4TWlwTGV2ZWw9eC5sZW5ndGgtMX1lbHNle3g9aS5taXBtYXBzO2ZvcihsZXQgdD0wO3Q8Njt0KyspaWYobCl7bi50ZXhJbWFnZTJEKDM0MDY5K3QsMCxtLHVbdF0ud2lkdGgsdVt0XS5oZWlnaHQsMCxwLGYsdVt0XS5kYXRhKTtmb3IobGV0IGU9MDtlPHgubGVuZ3RoO2UrKyl7Y29uc3QgaT14W2VdLmltYWdlW3RdLmltYWdlO24udGV4SW1hZ2UyRCgzNDA2OSt0LGUrMSxtLGkud2lkdGgsaS5oZWlnaHQsMCxwLGYsaS5kYXRhKX19ZWxzZXtuLnRleEltYWdlMkQoMzQwNjkrdCwwLG0scCxmLHVbdF0pO2ZvcihsZXQgZT0wO2U8eC5sZW5ndGg7ZSsrKXtuLnRleEltYWdlMkQoMzQwNjkrdCxlKzEsbSxwLGYseFtlXS5pbWFnZVt0XSl9fWUuX19tYXhNaXBMZXZlbD14Lmxlbmd0aH15KGksZCkmJnYoMzQwNjcsaSxoLndpZHRoLGguaGVpZ2h0KTtlLl9fdmVyc2lvbj1pLnZlcnNpb24saS5vblVwZGF0ZSYmaS5vblVwZGF0ZShpKX0pKGEsZSxyKToobi5hY3RpdmVUZXh0dXJlKDMzOTg0K3IpLG4uYmluZFRleHR1cmUoMzQwNjcsYS5fX3dlYmdsVGV4dHVyZSkpfWNvbnN0IEM9e1tzMnRdOjEwNDk3LFtsMnRdOjMzMDcxLFtjMnRdOjMzNjQ4fSxBPXtbdTJ0XTo5NzI4LFtoMnRdOjk5ODQsW2QydF06OTk4NixbcDJ0XTo5NzI5LFtmMnRdOjk5ODUsW20ydF06OTk4N307ZnVuY3Rpb24gayhuLG8sYSl7aWYoYT8odC50ZXhQYXJhbWV0ZXJpKG4sMTAyNDIsQ1tvLndyYXBTXSksdC50ZXhQYXJhbWV0ZXJpKG4sMTAyNDMsQ1tvLndyYXBUXSksMzI4NzkhPT1uJiYzNTg2NiE9PW58fHQudGV4UGFyYW1ldGVyaShuLDMyODgyLENbby53cmFwUl0pLHQudGV4UGFyYW1ldGVyaShuLDEwMjQwLEFbby5tYWdGaWx0ZXJdKSx0LnRleFBhcmFtZXRlcmkobiwxMDI0MSxBW28ubWluRmlsdGVyXSkpOih0LnRleFBhcmFtZXRlcmkobiwxMDI0MiwzMzA3MSksdC50ZXhQYXJhbWV0ZXJpKG4sMTAyNDMsMzMwNzEpLDMyODc5IT09biYmMzU4NjYhPT1ufHx0LnRleFBhcmFtZXRlcmkobiwzMjg4MiwzMzA3MSksby53cmFwUz09PWwydCYmby53cmFwVD09PWwydHx8Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiBUZXh0dXJlIGlzIG5vdCBwb3dlciBvZiB0d28uIFRleHR1cmUud3JhcFMgYW5kIFRleHR1cmUud3JhcFQgc2hvdWxkIGJlIHNldCB0byBUSFJFRS5DbGFtcFRvRWRnZVdyYXBwaW5nLiIpLHQudGV4UGFyYW1ldGVyaShuLDEwMjQwLHgoby5tYWdGaWx0ZXIpKSx0LnRleFBhcmFtZXRlcmkobiwxMDI0MSx4KG8ubWluRmlsdGVyKSksby5taW5GaWx0ZXIhPT11MnQmJm8ubWluRmlsdGVyIT09cDJ0JiZjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IFRleHR1cmUgaXMgbm90IHBvd2VyIG9mIHR3by4gVGV4dHVyZS5taW5GaWx0ZXIgc2hvdWxkIGJlIHNldCB0byBUSFJFRS5OZWFyZXN0RmlsdGVyIG9yIFRIUkVFLkxpbmVhckZpbHRlci4iKSksITA9PT1lLmhhcygiRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIikpe2NvbnN0IGE9ZS5nZXQoIkVYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyIpO2lmKG8udHlwZT09PXYydCYmITE9PT1lLmhhcygiT0VTX3RleHR1cmVfZmxvYXRfbGluZWFyIikpcmV0dXJuO2lmKCExPT09cyYmby50eXBlPT09YjJ0JiYhMT09PWUuaGFzKCJPRVNfdGV4dHVyZV9oYWxmX2Zsb2F0X2xpbmVhciIpKXJldHVybjsoby5hbmlzb3Ryb3B5PjF8fGkuZ2V0KG8pLl9fY3VycmVudEFuaXNvdHJvcHkpJiYodC50ZXhQYXJhbWV0ZXJmKG4sYS5URVhUVVJFX01BWF9BTklTT1RST1BZX0VYVCxNYXRoLm1pbihvLmFuaXNvdHJvcHksci5nZXRNYXhBbmlzb3Ryb3B5KCkpKSxpLmdldChvKS5fX2N1cnJlbnRBbmlzb3Ryb3B5PW8uYW5pc290cm9weSl9fWZ1bmN0aW9uIEwoZSxuKXt2b2lkIDA9PT1lLl9fd2ViZ2xJbml0JiYoZS5fX3dlYmdsSW5pdD0hMCxuLmFkZEV2ZW50TGlzdGVuZXIoImRpc3Bvc2UiLHcpLGUuX193ZWJnbFRleHR1cmU9dC5jcmVhdGVUZXh0dXJlKCksYS5tZW1vcnkudGV4dHVyZXMrKyl9ZnVuY3Rpb24gUChlLGkscil7bGV0IGE9MzU1MztpLmlzRGF0YVRleHR1cmUyREFycmF5JiYoYT0zNTg2NiksaS5pc0RhdGFUZXh0dXJlM0QmJihhPTMyODc5KSxMKGUsaSksbi5hY3RpdmVUZXh0dXJlKDMzOTg0K3IpLG4uYmluZFRleHR1cmUoYSxlLl9fd2ViZ2xUZXh0dXJlKSx0LnBpeGVsU3RvcmVpKDM3NDQwLGkuZmxpcFkpLHQucGl4ZWxTdG9yZWkoMzc0NDEsaS5wcmVtdWx0aXBseUFscGhhKSx0LnBpeGVsU3RvcmVpKDMzMTcsaS51bnBhY2tBbGlnbm1lbnQpLHQucGl4ZWxTdG9yZWkoMzc0NDMsMCk7Y29uc3QgbD0oZnVuY3Rpb24gYyh0KXtyZXR1cm4hcyYmKHQud3JhcFMhPT1sMnR8fHQud3JhcFQhPT1sMnR8fHQubWluRmlsdGVyIT09dTJ0JiZ0Lm1pbkZpbHRlciE9PXAydCl9KShpKSYmITE9PT1fKGkuaW1hZ2UpLGg9ZyhpLmltYWdlLGwsITEsdSksZD1fKGgpfHxzLHA9by5jb252ZXJ0KGkuZm9ybWF0KTtsZXQgZixtPW8uY29udmVydChpLnR5cGUpLHg9YihpLmludGVybmFsRm9ybWF0LHAsbSk7ayhhLGksZCk7Y29uc3Qgdz1pLm1pcG1hcHM7aWYoaS5pc0RlcHRoVGV4dHVyZSl4PTY0MDIscz94PWkudHlwZT09PXYydD8zNjAxMjppLnR5cGU9PT15MnQ/MzMxOTA6aS50eXBlPT09eDJ0PzM1MDU2OjMzMTg5OmkudHlwZT09PXYydCYmY29uc29sZS5lcnJvcigiV2ViR0xSZW5kZXJlcjogRmxvYXRpbmcgcG9pbnQgZGVwdGggdGV4dHVyZSByZXF1aXJlcyBXZWJHTDIuIiksaS5mb3JtYXQ9PT1NMnQmJjY0MDI9PT14JiZpLnR5cGUhPT1fMnQmJmkudHlwZSE9PXkydCYmKGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogVXNlIFVuc2lnbmVkU2hvcnRUeXBlIG9yIFVuc2lnbmVkSW50VHlwZSBmb3IgRGVwdGhGb3JtYXQgRGVwdGhUZXh0dXJlLiIpLGkudHlwZT1fMnQsbT1vLmNvbnZlcnQoaS50eXBlKSksaS5mb3JtYXQ9PT1FMnQmJjY0MDI9PT14JiYoeD0zNDA0MSxpLnR5cGUhPT14MnQmJihjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IFVzZSBVbnNpZ25lZEludDI0OFR5cGUgZm9yIERlcHRoU3RlbmNpbEZvcm1hdCBEZXB0aFRleHR1cmUuIiksaS50eXBlPXgydCxtPW8uY29udmVydChpLnR5cGUpKSksbi50ZXhJbWFnZTJEKDM1NTMsMCx4LGgud2lkdGgsaC5oZWlnaHQsMCxwLG0sbnVsbCk7ZWxzZSBpZihpLmlzRGF0YVRleHR1cmUpaWYody5sZW5ndGg+MCYmZCl7Zm9yKGxldCB0PTAsZT13Lmxlbmd0aDt0PGU7dCsrKWY9d1t0XSxuLnRleEltYWdlMkQoMzU1Myx0LHgsZi53aWR0aCxmLmhlaWdodCwwLHAsbSxmLmRhdGEpO2kuZ2VuZXJhdGVNaXBtYXBzPSExLGUuX19tYXhNaXBMZXZlbD13Lmxlbmd0aC0xfWVsc2Ugbi50ZXhJbWFnZTJEKDM1NTMsMCx4LGgud2lkdGgsaC5oZWlnaHQsMCxwLG0saC5kYXRhKSxlLl9fbWF4TWlwTGV2ZWw9MDtlbHNlIGlmKGkuaXNDb21wcmVzc2VkVGV4dHVyZSl7Zm9yKGxldCB0PTAsZT13Lmxlbmd0aDt0PGU7dCsrKWY9d1t0XSxpLmZvcm1hdCE9PVMydCYmaS5mb3JtYXQhPT13MnQ/bnVsbCE9PXA/bi5jb21wcmVzc2VkVGV4SW1hZ2UyRCgzNTUzLHQseCxmLndpZHRoLGYuaGVpZ2h0LDAsZi5kYXRhKTpjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IEF0dGVtcHQgdG8gbG9hZCB1bnN1cHBvcnRlZCBjb21wcmVzc2VkIHRleHR1cmUgZm9ybWF0IGluIC51cGxvYWRUZXh0dXJlKCkiKTpuLnRleEltYWdlMkQoMzU1Myx0LHgsZi53aWR0aCxmLmhlaWdodCwwLHAsbSxmLmRhdGEpO2UuX19tYXhNaXBMZXZlbD13Lmxlbmd0aC0xfWVsc2UgaWYoaS5pc0RhdGFUZXh0dXJlMkRBcnJheSluLnRleEltYWdlM0QoMzU4NjYsMCx4LGgud2lkdGgsaC5oZWlnaHQsaC5kZXB0aCwwLHAsbSxoLmRhdGEpLGUuX19tYXhNaXBMZXZlbD0wO2Vsc2UgaWYoaS5pc0RhdGFUZXh0dXJlM0Qpbi50ZXhJbWFnZTNEKDMyODc5LDAseCxoLndpZHRoLGguaGVpZ2h0LGguZGVwdGgsMCxwLG0saC5kYXRhKSxlLl9fbWF4TWlwTGV2ZWw9MDtlbHNlIGlmKHcubGVuZ3RoPjAmJmQpe2ZvcihsZXQgdD0wLGU9dy5sZW5ndGg7dDxlO3QrKylmPXdbdF0sbi50ZXhJbWFnZTJEKDM1NTMsdCx4LHAsbSxmKTtpLmdlbmVyYXRlTWlwbWFwcz0hMSxlLl9fbWF4TWlwTGV2ZWw9dy5sZW5ndGgtMX1lbHNlIG4udGV4SW1hZ2UyRCgzNTUzLDAseCxwLG0saCksZS5fX21heE1pcExldmVsPTA7eShpLGQpJiZ2KGEsaSxoLndpZHRoLGguaGVpZ2h0KSxlLl9fdmVyc2lvbj1pLnZlcnNpb24saS5vblVwZGF0ZSYmaS5vblVwZGF0ZShpKX1mdW5jdGlvbiBOKGUscixhLHMsbCl7Y29uc3QgYz1vLmNvbnZlcnQoYS5mb3JtYXQpLHU9by5jb252ZXJ0KGEudHlwZSksaD1iKGEuaW50ZXJuYWxGb3JtYXQsYyx1KTszMjg3OT09PWx8fDM1ODY2PT09bD9uLnRleEltYWdlM0QobCwwLGgsci53aWR0aCxyLmhlaWdodCxyLmRlcHRoLDAsYyx1LG51bGwpOm4udGV4SW1hZ2UyRChsLDAsaCxyLndpZHRoLHIuaGVpZ2h0LDAsYyx1LG51bGwpLG4uYmluZEZyYW1lYnVmZmVyKDM2MTYwLGUpLHQuZnJhbWVidWZmZXJUZXh0dXJlMkQoMzYxNjAscyxsLGkuZ2V0KGEpLl9fd2ViZ2xUZXh0dXJlLDApLG4uYmluZEZyYW1lYnVmZmVyKDM2MTYwLG51bGwpfWZ1bmN0aW9uIEkoZSxuLGkpe2lmKHQuYmluZFJlbmRlcmJ1ZmZlcigzNjE2MSxlKSxuLmRlcHRoQnVmZmVyJiYhbi5zdGVuY2lsQnVmZmVyKXtsZXQgcj0zMzE4OTtpZihpKXtjb25zdCBlPW4uZGVwdGhUZXh0dXJlO2UmJmUuaXNEZXB0aFRleHR1cmUmJihlLnR5cGU9PT12MnQ/cj0zNjAxMjplLnR5cGU9PT15MnQmJihyPTMzMTkwKSk7Y29uc3QgaT1PKG4pO3QucmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKDM2MTYxLGkscixuLndpZHRoLG4uaGVpZ2h0KX1lbHNlIHQucmVuZGVyYnVmZmVyU3RvcmFnZSgzNjE2MSxyLG4ud2lkdGgsbi5oZWlnaHQpO3QuZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoMzYxNjAsMzYwOTYsMzYxNjEsZSl9ZWxzZSBpZihuLmRlcHRoQnVmZmVyJiZuLnN0ZW5jaWxCdWZmZXIpe2lmKGkpe2NvbnN0IGU9TyhuKTt0LnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSgzNjE2MSxlLDM1MDU2LG4ud2lkdGgsbi5oZWlnaHQpfWVsc2UgdC5yZW5kZXJidWZmZXJTdG9yYWdlKDM2MTYxLDM0MDQxLG4ud2lkdGgsbi5oZWlnaHQpO3QuZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoMzYxNjAsMzMzMDYsMzYxNjEsZSl9ZWxzZXtjb25zdCBlPSEwPT09bi5pc1dlYkdMTXVsdGlwbGVSZW5kZXJUYXJnZXRzP24udGV4dHVyZVswXTpuLnRleHR1cmUscj1vLmNvbnZlcnQoZS5mb3JtYXQpLGE9by5jb252ZXJ0KGUudHlwZSkscz1iKGUuaW50ZXJuYWxGb3JtYXQscixhKTtpZihpKXtjb25zdCBlPU8obik7dC5yZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUoMzYxNjEsZSxzLG4ud2lkdGgsbi5oZWlnaHQpfWVsc2UgdC5yZW5kZXJidWZmZXJTdG9yYWdlKDM2MTYxLHMsbi53aWR0aCxuLmhlaWdodCl9dC5iaW5kUmVuZGVyYnVmZmVyKDM2MTYxLG51bGwpfWZ1bmN0aW9uIFIoZSl7Y29uc3Qgcj1pLmdldChlKSxvPSEwPT09ZS5pc1dlYkdMQ3ViZVJlbmRlclRhcmdldDtpZihlLmRlcHRoVGV4dHVyZSl7aWYobyl0aHJvdyBuZXcgRXJyb3IoInRhcmdldC5kZXB0aFRleHR1cmUgbm90IHN1cHBvcnRlZCBpbiBDdWJlIHJlbmRlciB0YXJnZXRzIik7IShmdW5jdGlvbiBhKGUscil7aWYociYmci5pc1dlYkdMQ3ViZVJlbmRlclRhcmdldCl0aHJvdyBuZXcgRXJyb3IoIkRlcHRoIFRleHR1cmUgd2l0aCBjdWJlIHJlbmRlciB0YXJnZXRzIGlzIG5vdCBzdXBwb3J0ZWQiKTtpZihuLmJpbmRGcmFtZWJ1ZmZlcigzNjE2MCxlKSwhci5kZXB0aFRleHR1cmV8fCFyLmRlcHRoVGV4dHVyZS5pc0RlcHRoVGV4dHVyZSl0aHJvdyBuZXcgRXJyb3IoInJlbmRlclRhcmdldC5kZXB0aFRleHR1cmUgbXVzdCBiZSBhbiBpbnN0YW5jZSBvZiBUSFJFRS5EZXB0aFRleHR1cmUiKTtpLmdldChyLmRlcHRoVGV4dHVyZSkuX193ZWJnbFRleHR1cmUmJnIuZGVwdGhUZXh0dXJlLmltYWdlLndpZHRoPT09ci53aWR0aCYmci5kZXB0aFRleHR1cmUuaW1hZ2UuaGVpZ2h0PT09ci5oZWlnaHR8fChyLmRlcHRoVGV4dHVyZS5pbWFnZS53aWR0aD1yLndpZHRoLHIuZGVwdGhUZXh0dXJlLmltYWdlLmhlaWdodD1yLmhlaWdodCxyLmRlcHRoVGV4dHVyZS5uZWVkc1VwZGF0ZT0hMCksRShyLmRlcHRoVGV4dHVyZSwwKTtjb25zdCBvPWkuZ2V0KHIuZGVwdGhUZXh0dXJlKS5fX3dlYmdsVGV4dHVyZTtpZihyLmRlcHRoVGV4dHVyZS5mb3JtYXQ9PT1NMnQpdC5mcmFtZWJ1ZmZlclRleHR1cmUyRCgzNjE2MCwzNjA5NiwzNTUzLG8sMCk7ZWxzZXtpZihyLmRlcHRoVGV4dHVyZS5mb3JtYXQhPT1FMnQpdGhyb3cgbmV3IEVycm9yKCJVbmtub3duIGRlcHRoVGV4dHVyZSBmb3JtYXQiKTt0LmZyYW1lYnVmZmVyVGV4dHVyZTJEKDM2MTYwLDMzMzA2LDM1NTMsbywwKX19KShyLl9fd2ViZ2xGcmFtZWJ1ZmZlcixlKX1lbHNlIGlmKG8pe3IuX193ZWJnbERlcHRoYnVmZmVyPVtdO2ZvcihsZXQgaT0wO2k8NjtpKyspbi5iaW5kRnJhbWVidWZmZXIoMzYxNjAsci5fX3dlYmdsRnJhbWVidWZmZXJbaV0pLHIuX193ZWJnbERlcHRoYnVmZmVyW2ldPXQuY3JlYXRlUmVuZGVyYnVmZmVyKCksSShyLl9fd2ViZ2xEZXB0aGJ1ZmZlcltpXSxlLCExKX1lbHNlIG4uYmluZEZyYW1lYnVmZmVyKDM2MTYwLHIuX193ZWJnbEZyYW1lYnVmZmVyKSxyLl9fd2ViZ2xEZXB0aGJ1ZmZlcj10LmNyZWF0ZVJlbmRlcmJ1ZmZlcigpLEkoci5fX3dlYmdsRGVwdGhidWZmZXIsZSwhMSk7bi5iaW5kRnJhbWVidWZmZXIoMzYxNjAsbnVsbCl9ZnVuY3Rpb24gTyh0KXtyZXR1cm4gcyYmdC5pc1dlYkdMTXVsdGlzYW1wbGVSZW5kZXJUYXJnZXQ/TWF0aC5taW4oaCx0LnNhbXBsZXMpOjB9bGV0IHo9ITEsRD0hMTt0aGlzLmFsbG9jYXRlVGV4dHVyZVVuaXQ9ZnVuY3Rpb24gQigpe2NvbnN0IHQ9TTtyZXR1cm4gdD49bCYmY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFRleHR1cmVzOiBUcnlpbmcgdG8gdXNlICIrdCsiIHRleHR1cmUgdW5pdHMgd2hpbGUgdGhpcyBHUFUgc3VwcG9ydHMgb25seSAiK2wpLE0rPTEsdH0sdGhpcy5yZXNldFRleHR1cmVVbml0cz1mdW5jdGlvbiBIKCl7TT0wfSx0aGlzLnNldFRleHR1cmUyRD1FLHRoaXMuc2V0VGV4dHVyZTJEQXJyYXk9ZnVuY3Rpb24gRih0LGUpe2NvbnN0IHI9aS5nZXQodCk7dC52ZXJzaW9uPjAmJnIuX192ZXJzaW9uIT09dC52ZXJzaW9uP1Aocix0LGUpOihuLmFjdGl2ZVRleHR1cmUoMzM5ODQrZSksbi5iaW5kVGV4dHVyZSgzNTg2NixyLl9fd2ViZ2xUZXh0dXJlKSl9LHRoaXMuc2V0VGV4dHVyZTNEPWZ1bmN0aW9uIFYodCxlKXtjb25zdCByPWkuZ2V0KHQpO3QudmVyc2lvbj4wJiZyLl9fdmVyc2lvbiE9PXQudmVyc2lvbj9QKHIsdCxlKToobi5hY3RpdmVUZXh0dXJlKDMzOTg0K2UpLG4uYmluZFRleHR1cmUoMzI4Nzksci5fX3dlYmdsVGV4dHVyZSkpfSx0aGlzLnNldFRleHR1cmVDdWJlPVQsdGhpcy5zZXR1cFJlbmRlclRhcmdldD1mdW5jdGlvbiBVKGUpe2NvbnN0IGw9ZS50ZXh0dXJlLGM9aS5nZXQoZSksdT1pLmdldChsKTtlLmFkZEV2ZW50TGlzdGVuZXIoImRpc3Bvc2UiLFMpLCEwIT09ZS5pc1dlYkdMTXVsdGlwbGVSZW5kZXJUYXJnZXRzJiYodS5fX3dlYmdsVGV4dHVyZT10LmNyZWF0ZVRleHR1cmUoKSx1Ll9fdmVyc2lvbj1sLnZlcnNpb24sYS5tZW1vcnkudGV4dHVyZXMrKyk7Y29uc3QgaD0hMD09PWUuaXNXZWJHTEN1YmVSZW5kZXJUYXJnZXQsZD0hMD09PWUuaXNXZWJHTE11bHRpcGxlUmVuZGVyVGFyZ2V0cyxwPSEwPT09ZS5pc1dlYkdMTXVsdGlzYW1wbGVSZW5kZXJUYXJnZXQsZj1sLmlzRGF0YVRleHR1cmUzRHx8bC5pc0RhdGFUZXh0dXJlMkRBcnJheSxtPV8oZSl8fHM7aWYoIXN8fGwuZm9ybWF0IT09dzJ0fHxsLnR5cGUhPT12MnQmJmwudHlwZSE9PWIydHx8KGwuZm9ybWF0PVMydCxjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IFJlbmRlcmluZyB0byB0ZXh0dXJlcyB3aXRoIFJHQiBmb3JtYXQgaXMgbm90IHN1cHBvcnRlZC4gVXNpbmcgUkdCQSBmb3JtYXQgaW5zdGVhZC4iKSksaCl7Yy5fX3dlYmdsRnJhbWVidWZmZXI9W107Zm9yKGxldCBlPTA7ZTw2O2UrKyljLl9fd2ViZ2xGcmFtZWJ1ZmZlcltlXT10LmNyZWF0ZUZyYW1lYnVmZmVyKCl9ZWxzZSBpZihjLl9fd2ViZ2xGcmFtZWJ1ZmZlcj10LmNyZWF0ZUZyYW1lYnVmZmVyKCksZClpZihyLmRyYXdCdWZmZXJzKXtjb25zdCBuPWUudGV4dHVyZTtmb3IobGV0IGU9MCxyPW4ubGVuZ3RoO2U8cjtlKyspe2NvbnN0IHI9aS5nZXQobltlXSk7dm9pZCAwPT09ci5fX3dlYmdsVGV4dHVyZSYmKHIuX193ZWJnbFRleHR1cmU9dC5jcmVhdGVUZXh0dXJlKCksYS5tZW1vcnkudGV4dHVyZXMrKyl9fWVsc2UgY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiBXZWJHTE11bHRpcGxlUmVuZGVyVGFyZ2V0cyBjYW4gb25seSBiZSB1c2VkIHdpdGggV2ViR0wyIG9yIFdFQkdMX2RyYXdfYnVmZmVycyBleHRlbnNpb24uIik7ZWxzZSBpZihwKWlmKHMpe2MuX193ZWJnbE11bHRpc2FtcGxlZEZyYW1lYnVmZmVyPXQuY3JlYXRlRnJhbWVidWZmZXIoKSxjLl9fd2ViZ2xDb2xvclJlbmRlcmJ1ZmZlcj10LmNyZWF0ZVJlbmRlcmJ1ZmZlcigpLHQuYmluZFJlbmRlcmJ1ZmZlcigzNjE2MSxjLl9fd2ViZ2xDb2xvclJlbmRlcmJ1ZmZlcik7Y29uc3QgaT1vLmNvbnZlcnQobC5mb3JtYXQpLHI9by5jb252ZXJ0KGwudHlwZSksYT1iKGwuaW50ZXJuYWxGb3JtYXQsaSxyKSxzPU8oZSk7dC5yZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUoMzYxNjEscyxhLGUud2lkdGgsZS5oZWlnaHQpLG4uYmluZEZyYW1lYnVmZmVyKDM2MTYwLGMuX193ZWJnbE11bHRpc2FtcGxlZEZyYW1lYnVmZmVyKSx0LmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKDM2MTYwLDM2MDY0LDM2MTYxLGMuX193ZWJnbENvbG9yUmVuZGVyYnVmZmVyKSx0LmJpbmRSZW5kZXJidWZmZXIoMzYxNjEsbnVsbCksZS5kZXB0aEJ1ZmZlciYmKGMuX193ZWJnbERlcHRoUmVuZGVyYnVmZmVyPXQuY3JlYXRlUmVuZGVyYnVmZmVyKCksSShjLl9fd2ViZ2xEZXB0aFJlbmRlcmJ1ZmZlcixlLCEwKSksbi5iaW5kRnJhbWVidWZmZXIoMzYxNjAsbnVsbCl9ZWxzZSBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IFdlYkdMTXVsdGlzYW1wbGVSZW5kZXJUYXJnZXQgY2FuIG9ubHkgYmUgdXNlZCB3aXRoIFdlYkdMMi4iKTtpZihoKXtuLmJpbmRUZXh0dXJlKDM0MDY3LHUuX193ZWJnbFRleHR1cmUpLGsoMzQwNjcsbCxtKTtmb3IobGV0IHQ9MDt0PDY7dCsrKU4oYy5fX3dlYmdsRnJhbWVidWZmZXJbdF0sZSxsLDM2MDY0LDM0MDY5K3QpO3kobCxtKSYmdigzNDA2NyxsLGUud2lkdGgsZS5oZWlnaHQpLG4uYmluZFRleHR1cmUoMzQwNjcsbnVsbCl9ZWxzZSBpZihkKXtjb25zdCB0PWUudGV4dHVyZTtmb3IobGV0IHI9MCxvPXQubGVuZ3RoO3I8bztyKyspe2NvbnN0IG89dFtyXSxhPWkuZ2V0KG8pO24uYmluZFRleHR1cmUoMzU1MyxhLl9fd2ViZ2xUZXh0dXJlKSxrKDM1NTMsbyxtKSxOKGMuX193ZWJnbEZyYW1lYnVmZmVyLGUsbywzNjA2NCtyLDM1NTMpLHkobyxtKSYmdigzNTUzLG8sZS53aWR0aCxlLmhlaWdodCl9bi5iaW5kVGV4dHVyZSgzNTUzLG51bGwpfWVsc2V7bGV0IHQ9MzU1MztpZihmKWlmKHMpe3Q9bC5pc0RhdGFUZXh0dXJlM0Q/MzI4Nzk6MzU4NjZ9ZWxzZSBjb25zb2xlLndhcm4oIlRIUkVFLkRhdGFUZXh0dXJlM0QgYW5kIFRIUkVFLkRhdGFUZXh0dXJlMkRBcnJheSBvbmx5IHN1cHBvcnRlZCB3aXRoIFdlYkdMMi4iKTtuLmJpbmRUZXh0dXJlKHQsdS5fX3dlYmdsVGV4dHVyZSksayh0LGwsbSksTihjLl9fd2ViZ2xGcmFtZWJ1ZmZlcixlLGwsMzYwNjQsdCkseShsLG0pJiZ2KHQsbCxlLndpZHRoLGUuaGVpZ2h0LGUuZGVwdGgpLG4uYmluZFRleHR1cmUodCxudWxsKX1lLmRlcHRoQnVmZmVyJiZSKGUpfSx0aGlzLnVwZGF0ZVJlbmRlclRhcmdldE1pcG1hcD1mdW5jdGlvbiBqKHQpe2NvbnN0IGU9Xyh0KXx8cyxyPSEwPT09dC5pc1dlYkdMTXVsdGlwbGVSZW5kZXJUYXJnZXRzP3QudGV4dHVyZTpbdC50ZXh0dXJlXTtmb3IobGV0IG89MCxhPXIubGVuZ3RoO288YTtvKyspe2NvbnN0IGE9cltvXTtpZih5KGEsZSkpe2NvbnN0IGU9dC5pc1dlYkdMQ3ViZVJlbmRlclRhcmdldD8zNDA2NzozNTUzLHI9aS5nZXQoYSkuX193ZWJnbFRleHR1cmU7bi5iaW5kVGV4dHVyZShlLHIpLHYoZSxhLHQud2lkdGgsdC5oZWlnaHQpLG4uYmluZFRleHR1cmUoZSxudWxsKX19fSx0aGlzLnVwZGF0ZU11bHRpc2FtcGxlUmVuZGVyVGFyZ2V0PWZ1bmN0aW9uIEcoZSl7aWYoZS5pc1dlYkdMTXVsdGlzYW1wbGVSZW5kZXJUYXJnZXQpaWYocyl7Y29uc3Qgcj1lLndpZHRoLG89ZS5oZWlnaHQ7bGV0IGE9MTYzODQ7ZS5kZXB0aEJ1ZmZlciYmKGF8PTI1NiksZS5zdGVuY2lsQnVmZmVyJiYoYXw9MTAyNCk7Y29uc3Qgcz1pLmdldChlKTtuLmJpbmRGcmFtZWJ1ZmZlcigzNjAwOCxzLl9fd2ViZ2xNdWx0aXNhbXBsZWRGcmFtZWJ1ZmZlciksbi5iaW5kRnJhbWVidWZmZXIoMzYwMDkscy5fX3dlYmdsRnJhbWVidWZmZXIpLHQuYmxpdEZyYW1lYnVmZmVyKDAsMCxyLG8sMCwwLHIsbyxhLDk3MjgpLG4uYmluZEZyYW1lYnVmZmVyKDM2MDA4LG51bGwpLG4uYmluZEZyYW1lYnVmZmVyKDM2MDA5LHMuX193ZWJnbE11bHRpc2FtcGxlZEZyYW1lYnVmZmVyKX1lbHNlIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogV2ViR0xNdWx0aXNhbXBsZVJlbmRlclRhcmdldCBjYW4gb25seSBiZSB1c2VkIHdpdGggV2ViR0wyLiIpfSx0aGlzLnNhZmVTZXRUZXh0dXJlMkQ9ZnVuY3Rpb24gVyh0LGUpe3QmJnQuaXNXZWJHTFJlbmRlclRhcmdldCYmKCExPT09eiYmKGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xUZXh0dXJlcy5zYWZlU2V0VGV4dHVyZTJEOiBkb24ndCB1c2UgcmVuZGVyIHRhcmdldHMgYXMgdGV4dHVyZXMuIFVzZSB0aGVpciAudGV4dHVyZSBwcm9wZXJ0eSBpbnN0ZWFkLiIpLHo9ITApLHQ9dC50ZXh0dXJlKSxFKHQsZSl9LHRoaXMuc2FmZVNldFRleHR1cmVDdWJlPWZ1bmN0aW9uIHEodCxlKXt0JiZ0LmlzV2ViR0xDdWJlUmVuZGVyVGFyZ2V0JiYoITE9PT1EJiYoY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFRleHR1cmVzLnNhZmVTZXRUZXh0dXJlQ3ViZTogZG9uJ3QgdXNlIGN1YmUgcmVuZGVyIHRhcmdldHMgYXMgdGV4dHVyZXMuIFVzZSB0aGVpciAudGV4dHVyZSBwcm9wZXJ0eSBpbnN0ZWFkLiIpLEQ9ITApLHQ9dC50ZXh0dXJlKSxUKHQsZSl9fWZ1bmN0aW9uIEo4dCh0LGUsbil7Y29uc3QgaT1uLmlzV2ViR0wyO3JldHVybntjb252ZXJ0OmZ1bmN0aW9uIHIodCl7bGV0IG47aWYodD09PWcydClyZXR1cm4gNTEyMTtpZigxMDE3PT09dClyZXR1cm4gMzI4MTk7aWYoMTAxOD09PXQpcmV0dXJuIDMyODIwO2lmKDEwMTk9PT10KXJldHVybiAzMzYzNTtpZigxMDEwPT09dClyZXR1cm4gNTEyMDtpZigxMDExPT09dClyZXR1cm4gNTEyMjtpZih0PT09XzJ0KXJldHVybiA1MTIzO2lmKDEwMTM9PT10KXJldHVybiA1MTI0O2lmKHQ9PT15MnQpcmV0dXJuIDUxMjU7aWYodD09PXYydClyZXR1cm4gNTEyNjtpZih0PT09YjJ0KXJldHVybiBpPzUxMzE6KG49ZS5nZXQoIk9FU190ZXh0dXJlX2hhbGZfZmxvYXQiKSxudWxsIT09bj9uLkhBTEZfRkxPQVRfT0VTOm51bGwpO2lmKDEwMjE9PT10KXJldHVybiA2NDA2O2lmKHQ9PT13MnQpcmV0dXJuIDY0MDc7aWYodD09PVMydClyZXR1cm4gNjQwODtpZigxMDI0PT09dClyZXR1cm4gNjQwOTtpZigxMDI1PT09dClyZXR1cm4gNjQxMDtpZih0PT09TTJ0KXJldHVybiA2NDAyO2lmKHQ9PT1FMnQpcmV0dXJuIDM0MDQxO2lmKDEwMjg9PT10KXJldHVybiA2NDAzO2lmKDEwMjk9PT10KXJldHVybiAzNjI0NDtpZigxMDMwPT09dClyZXR1cm4gMzMzMTk7aWYoMTAzMT09PXQpcmV0dXJuIDMzMzIwO2lmKDEwMzI9PT10KXJldHVybiAzNjI0ODtpZigxMDMzPT09dClyZXR1cm4gMzYyNDk7aWYodD09PVQydHx8dD09PUMydHx8dD09PUEydHx8dD09PWsydCl7aWYobj1lLmdldCgiV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3MzdGMiKSxudWxsPT09bilyZXR1cm4gbnVsbDtpZih0PT09VDJ0KXJldHVybiBuLkNPTVBSRVNTRURfUkdCX1MzVENfRFhUMV9FWFQ7aWYodD09PUMydClyZXR1cm4gbi5DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVDtpZih0PT09QTJ0KXJldHVybiBuLkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDNfRVhUO2lmKHQ9PT1rMnQpcmV0dXJuIG4uQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUNV9FWFR9aWYodD09PUwydHx8dD09PVAydHx8dD09PU4ydHx8dD09PUkydCl7aWYobj1lLmdldCgiV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3B2cnRjIiksbnVsbD09PW4pcmV0dXJuIG51bGw7aWYodD09PUwydClyZXR1cm4gbi5DT01QUkVTU0VEX1JHQl9QVlJUQ180QlBQVjFfSU1HO2lmKHQ9PT1QMnQpcmV0dXJuIG4uQ09NUFJFU1NFRF9SR0JfUFZSVENfMkJQUFYxX0lNRztpZih0PT09TjJ0KXJldHVybiBuLkNPTVBSRVNTRURfUkdCQV9QVlJUQ180QlBQVjFfSU1HO2lmKHQ9PT1JMnQpcmV0dXJuIG4uQ09NUFJFU1NFRF9SR0JBX1BWUlRDXzJCUFBWMV9JTUd9aWYoMzYxOTY9PT10KXJldHVybiBuPWUuZ2V0KCJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfZXRjMSIpLG51bGwhPT1uP24uQ09NUFJFU1NFRF9SR0JfRVRDMV9XRUJHTDpudWxsO2lmKCh0PT09UjJ0fHx0PT09TzJ0KSYmKG49ZS5nZXQoIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9ldGMiKSxudWxsIT09bikpe2lmKHQ9PT1SMnQpcmV0dXJuIG4uQ09NUFJFU1NFRF9SR0I4X0VUQzI7aWYodD09PU8ydClyZXR1cm4gbi5DT01QUkVTU0VEX1JHQkE4X0VUQzJfRUFDfXJldHVybiAzNzgwOD09PXR8fDM3ODA5PT09dHx8Mzc4MTA9PT10fHwzNzgxMT09PXR8fDM3ODEyPT09dHx8Mzc4MTM9PT10fHwzNzgxND09PXR8fDM3ODE1PT09dHx8Mzc4MTY9PT10fHwzNzgxNz09PXR8fDM3ODE4PT09dHx8Mzc4MTk9PT10fHwzNzgyMD09PXR8fDM3ODIxPT09dHx8Mzc4NDA9PT10fHwzNzg0MT09PXR8fDM3ODQyPT09dHx8Mzc4NDM9PT10fHwzNzg0ND09PXR8fDM3ODQ1PT09dHx8Mzc4NDY9PT10fHwzNzg0Nz09PXR8fDM3ODQ4PT09dHx8Mzc4NDk9PT10fHwzNzg1MD09PXR8fDM3ODUxPT09dHx8Mzc4NTI9PT10fHwzNzg1Mz09PXQ/KG49ZS5nZXQoIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9hc3RjIiksbnVsbCE9PW4/dDpudWxsKTozNjQ5Mj09PXQ/KG49ZS5nZXQoIkVYVF90ZXh0dXJlX2NvbXByZXNzaW9uX2JwdGMiKSxudWxsIT09bj90Om51bGwpOnQ9PT14MnQ/aT8zNDA0Mjoobj1lLmdldCgiV0VCR0xfZGVwdGhfdGV4dHVyZSIpLG51bGwhPT1uP24uVU5TSUdORURfSU5UXzI0XzhfV0VCR0w6bnVsbCk6dm9pZCAwfX19Y2xhc3MgUTh0IGV4dGVuZHMgcjZ0e2NvbnN0cnVjdG9yKHQ9W10pe3N1cGVyKCksdGhpcy5jYW1lcmFzPXR9fVE4dC5wcm90b3R5cGUuaXNBcnJheUNhbWVyYT0hMDtjbGFzcyB0N3QgZXh0ZW5kcyBWM3R7Y29uc3RydWN0b3IoKXtzdXBlcigpLHRoaXMudHlwZT0iR3JvdXAifX10N3QucHJvdG90eXBlLmlzR3JvdXA9ITA7Y29uc3QgZTd0PXt0eXBlOiJtb3ZlIn07Y2xhc3Mgbjd0e2NvbnN0cnVjdG9yKCl7dGhpcy5fdGFyZ2V0UmF5PW51bGwsdGhpcy5fZ3JpcD1udWxsLHRoaXMuX2hhbmQ9bnVsbH1nZXRIYW5kU3BhY2UoKXtyZXR1cm4gbnVsbD09PXRoaXMuX2hhbmQmJih0aGlzLl9oYW5kPW5ldyB0N3QsdGhpcy5faGFuZC5tYXRyaXhBdXRvVXBkYXRlPSExLHRoaXMuX2hhbmQudmlzaWJsZT0hMSx0aGlzLl9oYW5kLmpvaW50cz17fSx0aGlzLl9oYW5kLmlucHV0U3RhdGU9e3BpbmNoaW5nOiExfSksdGhpcy5faGFuZH1nZXRUYXJnZXRSYXlTcGFjZSgpe3JldHVybiBudWxsPT09dGhpcy5fdGFyZ2V0UmF5JiYodGhpcy5fdGFyZ2V0UmF5PW5ldyB0N3QsdGhpcy5fdGFyZ2V0UmF5Lm1hdHJpeEF1dG9VcGRhdGU9ITEsdGhpcy5fdGFyZ2V0UmF5LnZpc2libGU9ITEsdGhpcy5fdGFyZ2V0UmF5Lmhhc0xpbmVhclZlbG9jaXR5PSExLHRoaXMuX3RhcmdldFJheS5saW5lYXJWZWxvY2l0eT1uZXcgSDV0LHRoaXMuX3RhcmdldFJheS5oYXNBbmd1bGFyVmVsb2NpdHk9ITEsdGhpcy5fdGFyZ2V0UmF5LmFuZ3VsYXJWZWxvY2l0eT1uZXcgSDV0KSx0aGlzLl90YXJnZXRSYXl9Z2V0R3JpcFNwYWNlKCl7cmV0dXJuIG51bGw9PT10aGlzLl9ncmlwJiYodGhpcy5fZ3JpcD1uZXcgdDd0LHRoaXMuX2dyaXAubWF0cml4QXV0b1VwZGF0ZT0hMSx0aGlzLl9ncmlwLnZpc2libGU9ITEsdGhpcy5fZ3JpcC5oYXNMaW5lYXJWZWxvY2l0eT0hMSx0aGlzLl9ncmlwLmxpbmVhclZlbG9jaXR5PW5ldyBINXQsdGhpcy5fZ3JpcC5oYXNBbmd1bGFyVmVsb2NpdHk9ITEsdGhpcy5fZ3JpcC5hbmd1bGFyVmVsb2NpdHk9bmV3IEg1dCksdGhpcy5fZ3JpcH1kaXNwYXRjaEV2ZW50KHQpe3JldHVybiBudWxsIT09dGhpcy5fdGFyZ2V0UmF5JiZ0aGlzLl90YXJnZXRSYXkuZGlzcGF0Y2hFdmVudCh0KSxudWxsIT09dGhpcy5fZ3JpcCYmdGhpcy5fZ3JpcC5kaXNwYXRjaEV2ZW50KHQpLG51bGwhPT10aGlzLl9oYW5kJiZ0aGlzLl9oYW5kLmRpc3BhdGNoRXZlbnQodCksdGhpc31kaXNjb25uZWN0KHQpe3JldHVybiB0aGlzLmRpc3BhdGNoRXZlbnQoe3R5cGU6ImRpc2Nvbm5lY3RlZCIsZGF0YTp0fSksbnVsbCE9PXRoaXMuX3RhcmdldFJheSYmKHRoaXMuX3RhcmdldFJheS52aXNpYmxlPSExKSxudWxsIT09dGhpcy5fZ3JpcCYmKHRoaXMuX2dyaXAudmlzaWJsZT0hMSksbnVsbCE9PXRoaXMuX2hhbmQmJih0aGlzLl9oYW5kLnZpc2libGU9ITEpLHRoaXN9dXBkYXRlKHQsZSxuKXtsZXQgaT1udWxsLHI9bnVsbCxvPW51bGw7Y29uc3QgYT10aGlzLl90YXJnZXRSYXkscz10aGlzLl9ncmlwLGw9dGhpcy5faGFuZDtpZih0JiYidmlzaWJsZS1ibHVycmVkIiE9PWUuc2Vzc2lvbi52aXNpYmlsaXR5U3RhdGUpaWYobnVsbCE9PWEmJihpPWUuZ2V0UG9zZSh0LnRhcmdldFJheVNwYWNlLG4pLG51bGwhPT1pJiYoYS5tYXRyaXguZnJvbUFycmF5KGkudHJhbnNmb3JtLm1hdHJpeCksYS5tYXRyaXguZGVjb21wb3NlKGEucG9zaXRpb24sYS5yb3RhdGlvbixhLnNjYWxlKSxpLmxpbmVhclZlbG9jaXR5PyhhLmhhc0xpbmVhclZlbG9jaXR5PSEwLGEubGluZWFyVmVsb2NpdHkuY29weShpLmxpbmVhclZlbG9jaXR5KSk6YS5oYXNMaW5lYXJWZWxvY2l0eT0hMSxpLmFuZ3VsYXJWZWxvY2l0eT8oYS5oYXNBbmd1bGFyVmVsb2NpdHk9ITAsYS5hbmd1bGFyVmVsb2NpdHkuY29weShpLmFuZ3VsYXJWZWxvY2l0eSkpOmEuaGFzQW5ndWxhclZlbG9jaXR5PSExLHRoaXMuZGlzcGF0Y2hFdmVudChlN3QpKSksbCYmdC5oYW5kKXtvPSEwO2Zvcihjb25zdCBpIG9mIHQuaGFuZC52YWx1ZXMoKSl7Y29uc3QgdD1lLmdldEpvaW50UG9zZShpLG4pO2lmKHZvaWQgMD09PWwuam9pbnRzW2kuam9pbnROYW1lXSl7Y29uc3QgdD1uZXcgdDd0O3QubWF0cml4QXV0b1VwZGF0ZT0hMSx0LnZpc2libGU9ITEsbC5qb2ludHNbaS5qb2ludE5hbWVdPXQsbC5hZGQodCl9Y29uc3Qgcj1sLmpvaW50c1tpLmpvaW50TmFtZV07bnVsbCE9PXQmJihyLm1hdHJpeC5mcm9tQXJyYXkodC50cmFuc2Zvcm0ubWF0cml4KSxyLm1hdHJpeC5kZWNvbXBvc2Uoci5wb3NpdGlvbixyLnJvdGF0aW9uLHIuc2NhbGUpLHIuam9pbnRSYWRpdXM9dC5yYWRpdXMpLHIudmlzaWJsZT1udWxsIT09dH1jb25zdCBpPWwuam9pbnRzWyJpbmRleC1maW5nZXItdGlwIl0ucG9zaXRpb24uZGlzdGFuY2VUbyhsLmpvaW50c1sidGh1bWItdGlwIl0ucG9zaXRpb24pLHI9LjAyLGE9LjAwNTtsLmlucHV0U3RhdGUucGluY2hpbmcmJmk+cithPyhsLmlucHV0U3RhdGUucGluY2hpbmc9ITEsdGhpcy5kaXNwYXRjaEV2ZW50KHt0eXBlOiJwaW5jaGVuZCIsaGFuZGVkbmVzczp0LmhhbmRlZG5lc3MsdGFyZ2V0OnRoaXN9KSk6IWwuaW5wdXRTdGF0ZS5waW5jaGluZyYmaTw9ci1hJiYobC5pbnB1dFN0YXRlLnBpbmNoaW5nPSEwLHRoaXMuZGlzcGF0Y2hFdmVudCh7dHlwZToicGluY2hzdGFydCIsaGFuZGVkbmVzczp0LmhhbmRlZG5lc3MsdGFyZ2V0OnRoaXN9KSl9ZWxzZSBudWxsIT09cyYmdC5ncmlwU3BhY2UmJihyPWUuZ2V0UG9zZSh0LmdyaXBTcGFjZSxuKSxudWxsIT09ciYmKHMubWF0cml4LmZyb21BcnJheShyLnRyYW5zZm9ybS5tYXRyaXgpLHMubWF0cml4LmRlY29tcG9zZShzLnBvc2l0aW9uLHMucm90YXRpb24scy5zY2FsZSksci5saW5lYXJWZWxvY2l0eT8ocy5oYXNMaW5lYXJWZWxvY2l0eT0hMCxzLmxpbmVhclZlbG9jaXR5LmNvcHkoci5saW5lYXJWZWxvY2l0eSkpOnMuaGFzTGluZWFyVmVsb2NpdHk9ITEsci5hbmd1bGFyVmVsb2NpdHk/KHMuaGFzQW5ndWxhclZlbG9jaXR5PSEwLHMuYW5ndWxhclZlbG9jaXR5LmNvcHkoci5hbmd1bGFyVmVsb2NpdHkpKTpzLmhhc0FuZ3VsYXJWZWxvY2l0eT0hMSkpO3JldHVybiBudWxsIT09YSYmKGEudmlzaWJsZT1udWxsIT09aSksbnVsbCE9PXMmJihzLnZpc2libGU9bnVsbCE9PXIpLG51bGwhPT1sJiYobC52aXNpYmxlPW51bGwhPT1vKSx0aGlzfX1jbGFzcyBpN3QgZXh0ZW5kcyBlNXR7Y29uc3RydWN0b3IodCxlKXtzdXBlcigpO2NvbnN0IG49dGhpcyxpPXQuc3RhdGU7bGV0IHI9bnVsbCxvPTEsYT1udWxsLHM9ImxvY2FsLWZsb29yIixsPW51bGwsYz1udWxsLHU9bnVsbCxoPW51bGwsZD1udWxsO2NvbnN0IHA9W10sZj1uZXcgTWFwLG09bmV3IHI2dDttLmxheWVycy5lbmFibGUoMSksbS52aWV3cG9ydD1uZXcgUjV0O2NvbnN0IGc9bmV3IHI2dDtnLmxheWVycy5lbmFibGUoMiksZy52aWV3cG9ydD1uZXcgUjV0O2NvbnN0IF89W20sZ10seT1uZXcgUTh0O3kubGF5ZXJzLmVuYWJsZSgxKSx5LmxheWVycy5lbmFibGUoMik7bGV0IHY9bnVsbCxiPW51bGw7ZnVuY3Rpb24geCh0KXtjb25zdCBlPWYuZ2V0KHQuaW5wdXRTb3VyY2UpO2UmJmUuZGlzcGF0Y2hFdmVudCh7dHlwZTp0LnR5cGUsZGF0YTp0LmlucHV0U291cmNlfSl9ZnVuY3Rpb24gdygpe2YuZm9yRWFjaCgoZnVuY3Rpb24odCxlKXt0LmRpc2Nvbm5lY3QoZSl9KSksZi5jbGVhcigpLHY9bnVsbCxiPW51bGwsaS5iaW5kWFJGcmFtZWJ1ZmZlcihudWxsKSx0LnNldFJlbmRlclRhcmdldCh0LmdldFJlbmRlclRhcmdldCgpKSxBLnN0b3AoKSxuLmlzUHJlc2VudGluZz0hMSxuLmRpc3BhdGNoRXZlbnQoe3R5cGU6InNlc3Npb25lbmQifSl9ZnVuY3Rpb24gUyh0KXtjb25zdCBlPXIuaW5wdXRTb3VyY2VzO2ZvcihsZXQgdD0wO3Q8cC5sZW5ndGg7dCsrKWYuc2V0KGVbdF0scFt0XSk7Zm9yKGxldCBlPTA7ZTx0LnJlbW92ZWQubGVuZ3RoO2UrKyl7Y29uc3Qgbj10LnJlbW92ZWRbZV0saT1mLmdldChuKTtpJiYoaS5kaXNwYXRjaEV2ZW50KHt0eXBlOiJkaXNjb25uZWN0ZWQiLGRhdGE6bn0pLGYuZGVsZXRlKG4pKX1mb3IobGV0IGU9MDtlPHQuYWRkZWQubGVuZ3RoO2UrKyl7Y29uc3Qgbj10LmFkZGVkW2VdLGk9Zi5nZXQobik7aSYmaS5kaXNwYXRjaEV2ZW50KHt0eXBlOiJjb25uZWN0ZWQiLGRhdGE6bn0pfX10aGlzLmNhbWVyYUF1dG9VcGRhdGU9ITAsdGhpcy5lbmFibGVkPSExLHRoaXMuaXNQcmVzZW50aW5nPSExLHRoaXMuZ2V0Q29udHJvbGxlcj1mdW5jdGlvbih0KXtsZXQgZT1wW3RdO3JldHVybiB2b2lkIDA9PT1lJiYoZT1uZXcgbjd0LHBbdF09ZSksZS5nZXRUYXJnZXRSYXlTcGFjZSgpfSx0aGlzLmdldENvbnRyb2xsZXJHcmlwPWZ1bmN0aW9uKHQpe2xldCBlPXBbdF07cmV0dXJuIHZvaWQgMD09PWUmJihlPW5ldyBuN3QscFt0XT1lKSxlLmdldEdyaXBTcGFjZSgpfSx0aGlzLmdldEhhbmQ9ZnVuY3Rpb24odCl7bGV0IGU9cFt0XTtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9bmV3IG43dCxwW3RdPWUpLGUuZ2V0SGFuZFNwYWNlKCl9LHRoaXMuc2V0RnJhbWVidWZmZXJTY2FsZUZhY3Rvcj1mdW5jdGlvbih0KXtvPXQsITA9PT1uLmlzUHJlc2VudGluZyYmY29uc29sZS53YXJuKCJUSFJFRS5XZWJYUk1hbmFnZXI6IENhbm5vdCBjaGFuZ2UgZnJhbWVidWZmZXIgc2NhbGUgd2hpbGUgcHJlc2VudGluZy4iKX0sdGhpcy5zZXRSZWZlcmVuY2VTcGFjZVR5cGU9ZnVuY3Rpb24odCl7cz10LCEwPT09bi5pc1ByZXNlbnRpbmcmJmNvbnNvbGUud2FybigiVEhSRUUuV2ViWFJNYW5hZ2VyOiBDYW5ub3QgY2hhbmdlIHJlZmVyZW5jZSBzcGFjZSB0eXBlIHdoaWxlIHByZXNlbnRpbmcuIil9LHRoaXMuZ2V0UmVmZXJlbmNlU3BhY2U9ZnVuY3Rpb24oKXtyZXR1cm4gYX0sdGhpcy5nZXRTZXNzaW9uPWZ1bmN0aW9uKCl7cmV0dXJuIHJ9LHRoaXMuc2V0U2Vzc2lvbj1hc3luYyBmdW5jdGlvbih0KXtpZihyPXQsbnVsbCE9PXIpe3IuYWRkRXZlbnRMaXN0ZW5lcigic2VsZWN0Iix4KSxyLmFkZEV2ZW50TGlzdGVuZXIoInNlbGVjdHN0YXJ0Iix4KSxyLmFkZEV2ZW50TGlzdGVuZXIoInNlbGVjdGVuZCIseCksci5hZGRFdmVudExpc3RlbmVyKCJzcXVlZXplIix4KSxyLmFkZEV2ZW50TGlzdGVuZXIoInNxdWVlemVzdGFydCIseCksci5hZGRFdmVudExpc3RlbmVyKCJzcXVlZXplZW5kIix4KSxyLmFkZEV2ZW50TGlzdGVuZXIoImVuZCIsdyksci5hZGRFdmVudExpc3RlbmVyKCJpbnB1dHNvdXJjZXNjaGFuZ2UiLFMpO2NvbnN0IHQ9ZS5nZXRDb250ZXh0QXR0cmlidXRlcygpO2lmKCEwIT09dC54ckNvbXBhdGlibGUmJmF3YWl0IGUubWFrZVhSQ29tcGF0aWJsZSgpLHZvaWQgMD09PXIucmVuZGVyU3RhdGUubGF5ZXJzKXtkPW5ldyBYUldlYkdMTGF5ZXIocixlLHthbnRpYWxpYXM6dC5hbnRpYWxpYXMsYWxwaGE6dC5hbHBoYSxkZXB0aDp0LmRlcHRoLHN0ZW5jaWw6dC5zdGVuY2lsLGZyYW1lYnVmZmVyU2NhbGVGYWN0b3I6b30pLHIudXBkYXRlUmVuZGVyU3RhdGUoe2Jhc2VMYXllcjpkfSl9ZWxzZXtsZXQgbj0wO2lmKHQuYW50aWFsaWFzKXtkPW5ldyBYUldlYkdMTGF5ZXIocixlLHthbnRpYWxpYXM6ITAsYWxwaGE6dC5hbHBoYSxkZXB0aDp0LmRlcHRoLHN0ZW5jaWw6dC5zdGVuY2lsLGZyYW1lYnVmZmVyU2NhbGVGYWN0b3I6b30pLHIudXBkYXRlUmVuZGVyU3RhdGUoe2xheWVyczpbZF19KX1lbHNle3QuZGVwdGgmJihuPXQuc3RlbmNpbD8zNDA0MTo2NDAyKTtjb25zdCBpPXtjb2xvckZvcm1hdDp0LmFscGhhPzY0MDg6NjQwNyxkZXB0aEZvcm1hdDpuLHNjYWxlRmFjdG9yOm99O2M9bmV3IFhSV2ViR0xCaW5kaW5nKHIsZSksaD1jLmNyZWF0ZVByb2plY3Rpb25MYXllcihpKSx1PWUuY3JlYXRlRnJhbWVidWZmZXIoKSxyLnVwZGF0ZVJlbmRlclN0YXRlKHtsYXllcnM6W2hdfSl9fWE9YXdhaXQgci5yZXF1ZXN0UmVmZXJlbmNlU3BhY2UocyksQS5zZXRDb250ZXh0KHIpLEEuc3RhcnQoKSxuLmlzUHJlc2VudGluZz0hMCxuLmRpc3BhdGNoRXZlbnQoe3R5cGU6InNlc3Npb25zdGFydCJ9KX19O2NvbnN0IE09bmV3IEg1dCxFPW5ldyBINXQ7ZnVuY3Rpb24gVCh0LGUpe251bGw9PT1lP3QubWF0cml4V29ybGQuY29weSh0Lm1hdHJpeCk6dC5tYXRyaXhXb3JsZC5tdWx0aXBseU1hdHJpY2VzKGUubWF0cml4V29ybGQsdC5tYXRyaXgpLHQubWF0cml4V29ybGRJbnZlcnNlLmNvcHkodC5tYXRyaXhXb3JsZCkuaW52ZXJ0KCl9dGhpcy51cGRhdGVDYW1lcmE9ZnVuY3Rpb24odCl7aWYobnVsbD09PXIpcmV0dXJuO3kubmVhcj1nLm5lYXI9bS5uZWFyPXQubmVhcix5LmZhcj1nLmZhcj1tLmZhcj10LmZhcix2PT09eS5uZWFyJiZiPT09eS5mYXJ8fChyLnVwZGF0ZVJlbmRlclN0YXRlKHtkZXB0aE5lYXI6eS5uZWFyLGRlcHRoRmFyOnkuZmFyfSksdj15Lm5lYXIsYj15LmZhcik7Y29uc3QgZT10LnBhcmVudCxuPXkuY2FtZXJhcztUKHksZSk7Zm9yKGxldCB0PTA7dDxuLmxlbmd0aDt0KyspVChuW3RdLGUpO3kubWF0cml4V29ybGQuZGVjb21wb3NlKHkucG9zaXRpb24seS5xdWF0ZXJuaW9uLHkuc2NhbGUpLHQucG9zaXRpb24uY29weSh5LnBvc2l0aW9uKSx0LnF1YXRlcm5pb24uY29weSh5LnF1YXRlcm5pb24pLHQuc2NhbGUuY29weSh5LnNjYWxlKSx0Lm1hdHJpeC5jb3B5KHkubWF0cml4KSx0Lm1hdHJpeFdvcmxkLmNvcHkoeS5tYXRyaXhXb3JsZCk7Y29uc3QgaT10LmNoaWxkcmVuO2ZvcihsZXQgdD0wLGU9aS5sZW5ndGg7dDxlO3QrKylpW3RdLnVwZGF0ZU1hdHJpeFdvcmxkKCEwKTsyPT09bi5sZW5ndGg/KGZ1bmN0aW9uIG8odCxlLG4pe00uc2V0RnJvbU1hdHJpeFBvc2l0aW9uKGUubWF0cml4V29ybGQpLEUuc2V0RnJvbU1hdHJpeFBvc2l0aW9uKG4ubWF0cml4V29ybGQpO2NvbnN0IGk9TS5kaXN0YW5jZVRvKEUpLHI9ZS5wcm9qZWN0aW9uTWF0cml4LmVsZW1lbnRzLG89bi5wcm9qZWN0aW9uTWF0cml4LmVsZW1lbnRzLGE9clsxNF0vKHJbMTBdLTEpLHM9clsxNF0vKHJbMTBdKzEpLGw9KHJbOV0rMSkvcls1XSxjPShyWzldLTEpL3JbNV0sdT0ocls4XS0xKS9yWzBdLGg9KG9bOF0rMSkvb1swXSxkPWEqdSxwPWEqaCxmPWkvKC11K2gpLG09ZiotdTtlLm1hdHJpeFdvcmxkLmRlY29tcG9zZSh0LnBvc2l0aW9uLHQucXVhdGVybmlvbix0LnNjYWxlKSx0LnRyYW5zbGF0ZVgobSksdC50cmFuc2xhdGVaKGYpLHQubWF0cml4V29ybGQuY29tcG9zZSh0LnBvc2l0aW9uLHQucXVhdGVybmlvbix0LnNjYWxlKSx0Lm1hdHJpeFdvcmxkSW52ZXJzZS5jb3B5KHQubWF0cml4V29ybGQpLmludmVydCgpO2NvbnN0IGc9YStmLF89cytmO3QucHJvamVjdGlvbk1hdHJpeC5tYWtlUGVyc3BlY3RpdmUoZC1tLHArKGktbSksbCpzL18qZyxjKnMvXypnLGcsXyl9KSh5LG0sZyk6eS5wcm9qZWN0aW9uTWF0cml4LmNvcHkobS5wcm9qZWN0aW9uTWF0cml4KX0sdGhpcy5nZXRDYW1lcmE9ZnVuY3Rpb24oKXtyZXR1cm4geX0sdGhpcy5nZXRGb3ZlYXRpb249ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbCE9PWg/aC5maXhlZEZvdmVhdGlvbjpudWxsIT09ZD9kLmZpeGVkRm92ZWF0aW9uOnZvaWQgMH0sdGhpcy5zZXRGb3ZlYXRpb249ZnVuY3Rpb24odCl7bnVsbCE9PWgmJihoLmZpeGVkRm92ZWF0aW9uPXQpLG51bGwhPT1kJiZ2b2lkIDAhPT1kLmZpeGVkRm92ZWF0aW9uJiYoZC5maXhlZEZvdmVhdGlvbj10KX07bGV0IEM9bnVsbDtjb25zdCBBPW5ldyBnNnQ7QS5zZXRBbmltYXRpb25Mb29wKChmdW5jdGlvbiBrKHQsbil7aWYobD1uLmdldFZpZXdlclBvc2UoYSksbnVsbCE9PWwpe2NvbnN0IHQ9bC52aWV3cztudWxsIT09ZCYmaS5iaW5kWFJGcmFtZWJ1ZmZlcihkLmZyYW1lYnVmZmVyKTtsZXQgbj0hMTt0Lmxlbmd0aCE9PXkuY2FtZXJhcy5sZW5ndGgmJih5LmNhbWVyYXMubGVuZ3RoPTAsbj0hMCk7Zm9yKGxldCByPTA7cjx0Lmxlbmd0aDtyKyspe2NvbnN0IG89dFtyXTtsZXQgYT1udWxsO2lmKG51bGwhPT1kKWE9ZC5nZXRWaWV3cG9ydChvKTtlbHNle2NvbnN0IHQ9Yy5nZXRWaWV3U3ViSW1hZ2UoaCxvKTtpLmJpbmRYUkZyYW1lYnVmZmVyKHUpLHZvaWQgMCE9PXQuZGVwdGhTdGVuY2lsVGV4dHVyZSYmZS5mcmFtZWJ1ZmZlclRleHR1cmUyRCgzNjE2MCwzNjA5NiwzNTUzLHQuZGVwdGhTdGVuY2lsVGV4dHVyZSwwKSxlLmZyYW1lYnVmZmVyVGV4dHVyZTJEKDM2MTYwLDM2MDY0LDM1NTMsdC5jb2xvclRleHR1cmUsMCksYT10LnZpZXdwb3J0fWNvbnN0IHM9X1tyXTtzLm1hdHJpeC5mcm9tQXJyYXkoby50cmFuc2Zvcm0ubWF0cml4KSxzLnByb2plY3Rpb25NYXRyaXguZnJvbUFycmF5KG8ucHJvamVjdGlvbk1hdHJpeCkscy52aWV3cG9ydC5zZXQoYS54LGEueSxhLndpZHRoLGEuaGVpZ2h0KSwwPT09ciYmeS5tYXRyaXguY29weShzLm1hdHJpeCksITA9PT1uJiZ5LmNhbWVyYXMucHVzaChzKX19Y29uc3Qgbz1yLmlucHV0U291cmNlcztmb3IobGV0IHQ9MDt0PHAubGVuZ3RoO3QrKyl7cFt0XS51cGRhdGUob1t0XSxuLGEpfUMmJkModCxuKX0pKSx0aGlzLnNldEFuaW1hdGlvbkxvb3A9ZnVuY3Rpb24odCl7Qz10fSx0aGlzLmRpc3Bvc2U9ZnVuY3Rpb24oKXt9fX1mdW5jdGlvbiByN3QodCl7ZnVuY3Rpb24gZShlLG4pe2Uub3BhY2l0eS52YWx1ZT1uLm9wYWNpdHksbi5jb2xvciYmZS5kaWZmdXNlLnZhbHVlLmNvcHkobi5jb2xvciksbi5lbWlzc2l2ZSYmZS5lbWlzc2l2ZS52YWx1ZS5jb3B5KG4uZW1pc3NpdmUpLm11bHRpcGx5U2NhbGFyKG4uZW1pc3NpdmVJbnRlbnNpdHkpLG4ubWFwJiYoZS5tYXAudmFsdWU9bi5tYXApLG4uYWxwaGFNYXAmJihlLmFscGhhTWFwLnZhbHVlPW4uYWxwaGFNYXApLG4uc3BlY3VsYXJNYXAmJihlLnNwZWN1bGFyTWFwLnZhbHVlPW4uc3BlY3VsYXJNYXApO2NvbnN0IGk9dC5nZXQobikuZW52TWFwO2lmKGkpe2UuZW52TWFwLnZhbHVlPWksZS5mbGlwRW52TWFwLnZhbHVlPWkuaXNDdWJlVGV4dHVyZSYmITE9PT1pLmlzUmVuZGVyVGFyZ2V0VGV4dHVyZT8tMToxLGUucmVmbGVjdGl2aXR5LnZhbHVlPW4ucmVmbGVjdGl2aXR5LGUucmVmcmFjdGlvblJhdGlvLnZhbHVlPW4ucmVmcmFjdGlvblJhdGlvO2NvbnN0IHI9dC5nZXQoaSkuX19tYXhNaXBMZXZlbDt2b2lkIDAhPT1yJiYoZS5tYXhNaXBMZXZlbC52YWx1ZT1yKX1sZXQgcixvO24ubGlnaHRNYXAmJihlLmxpZ2h0TWFwLnZhbHVlPW4ubGlnaHRNYXAsZS5saWdodE1hcEludGVuc2l0eS52YWx1ZT1uLmxpZ2h0TWFwSW50ZW5zaXR5KSxuLmFvTWFwJiYoZS5hb01hcC52YWx1ZT1uLmFvTWFwLGUuYW9NYXBJbnRlbnNpdHkudmFsdWU9bi5hb01hcEludGVuc2l0eSksbi5tYXA/cj1uLm1hcDpuLnNwZWN1bGFyTWFwP3I9bi5zcGVjdWxhck1hcDpuLmRpc3BsYWNlbWVudE1hcD9yPW4uZGlzcGxhY2VtZW50TWFwOm4ubm9ybWFsTWFwP3I9bi5ub3JtYWxNYXA6bi5idW1wTWFwP3I9bi5idW1wTWFwOm4ucm91Z2huZXNzTWFwP3I9bi5yb3VnaG5lc3NNYXA6bi5tZXRhbG5lc3NNYXA/cj1uLm1ldGFsbmVzc01hcDpuLmFscGhhTWFwP3I9bi5hbHBoYU1hcDpuLmVtaXNzaXZlTWFwP3I9bi5lbWlzc2l2ZU1hcDpuLmNsZWFyY29hdE1hcD9yPW4uY2xlYXJjb2F0TWFwOm4uY2xlYXJjb2F0Tm9ybWFsTWFwP3I9bi5jbGVhcmNvYXROb3JtYWxNYXA6bi5jbGVhcmNvYXRSb3VnaG5lc3NNYXA/cj1uLmNsZWFyY29hdFJvdWdobmVzc01hcDpuLnNwZWN1bGFySW50ZW5zaXR5TWFwP3I9bi5zcGVjdWxhckludGVuc2l0eU1hcDpuLnNwZWN1bGFyVGludE1hcCYmKHI9bi5zcGVjdWxhclRpbnRNYXApLHZvaWQgMCE9PXImJihyLmlzV2ViR0xSZW5kZXJUYXJnZXQmJihyPXIudGV4dHVyZSksITA9PT1yLm1hdHJpeEF1dG9VcGRhdGUmJnIudXBkYXRlTWF0cml4KCksZS51dlRyYW5zZm9ybS52YWx1ZS5jb3B5KHIubWF0cml4KSksbi5hb01hcD9vPW4uYW9NYXA6bi5saWdodE1hcCYmKG89bi5saWdodE1hcCksdm9pZCAwIT09byYmKG8uaXNXZWJHTFJlbmRlclRhcmdldCYmKG89by50ZXh0dXJlKSwhMD09PW8ubWF0cml4QXV0b1VwZGF0ZSYmby51cGRhdGVNYXRyaXgoKSxlLnV2MlRyYW5zZm9ybS52YWx1ZS5jb3B5KG8ubWF0cml4KSl9ZnVuY3Rpb24gbihlLG4pe2Uucm91Z2huZXNzLnZhbHVlPW4ucm91Z2huZXNzLGUubWV0YWxuZXNzLnZhbHVlPW4ubWV0YWxuZXNzLG4ucm91Z2huZXNzTWFwJiYoZS5yb3VnaG5lc3NNYXAudmFsdWU9bi5yb3VnaG5lc3NNYXApLG4ubWV0YWxuZXNzTWFwJiYoZS5tZXRhbG5lc3NNYXAudmFsdWU9bi5tZXRhbG5lc3NNYXApLG4uZW1pc3NpdmVNYXAmJihlLmVtaXNzaXZlTWFwLnZhbHVlPW4uZW1pc3NpdmVNYXApLG4uYnVtcE1hcCYmKGUuYnVtcE1hcC52YWx1ZT1uLmJ1bXBNYXAsZS5idW1wU2NhbGUudmFsdWU9bi5idW1wU2NhbGUsMT09PW4uc2lkZSYmKGUuYnVtcFNjYWxlLnZhbHVlKj0tMSkpLG4ubm9ybWFsTWFwJiYoZS5ub3JtYWxNYXAudmFsdWU9bi5ub3JtYWxNYXAsZS5ub3JtYWxTY2FsZS52YWx1ZS5jb3B5KG4ubm9ybWFsU2NhbGUpLDE9PT1uLnNpZGUmJmUubm9ybWFsU2NhbGUudmFsdWUubmVnYXRlKCkpLG4uZGlzcGxhY2VtZW50TWFwJiYoZS5kaXNwbGFjZW1lbnRNYXAudmFsdWU9bi5kaXNwbGFjZW1lbnRNYXAsZS5kaXNwbGFjZW1lbnRTY2FsZS52YWx1ZT1uLmRpc3BsYWNlbWVudFNjYWxlLGUuZGlzcGxhY2VtZW50Qmlhcy52YWx1ZT1uLmRpc3BsYWNlbWVudEJpYXMpO3QuZ2V0KG4pLmVudk1hcCYmKGUuZW52TWFwSW50ZW5zaXR5LnZhbHVlPW4uZW52TWFwSW50ZW5zaXR5KX1yZXR1cm57cmVmcmVzaEZvZ1VuaWZvcm1zOmZ1bmN0aW9uIGkodCxlKXt0LmZvZ0NvbG9yLnZhbHVlLmNvcHkoZS5jb2xvciksZS5pc0ZvZz8odC5mb2dOZWFyLnZhbHVlPWUubmVhcix0LmZvZ0Zhci52YWx1ZT1lLmZhcik6ZS5pc0ZvZ0V4cDImJih0LmZvZ0RlbnNpdHkudmFsdWU9ZS5kZW5zaXR5KX0scmVmcmVzaE1hdGVyaWFsVW5pZm9ybXM6ZnVuY3Rpb24gcih0LGksbyxhLHMpe2kuaXNNZXNoQmFzaWNNYXRlcmlhbD9lKHQsaSk6aS5pc01lc2hMYW1iZXJ0TWF0ZXJpYWw/KGUodCxpKSwoZnVuY3Rpb24gbCh0LGUpe2UuZW1pc3NpdmVNYXAmJih0LmVtaXNzaXZlTWFwLnZhbHVlPWUuZW1pc3NpdmVNYXApfSkodCxpKSk6aS5pc01lc2hUb29uTWF0ZXJpYWw/KGUodCxpKSwoZnVuY3Rpb24gYyh0LGUpe2UuZ3JhZGllbnRNYXAmJih0LmdyYWRpZW50TWFwLnZhbHVlPWUuZ3JhZGllbnRNYXApO2UuZW1pc3NpdmVNYXAmJih0LmVtaXNzaXZlTWFwLnZhbHVlPWUuZW1pc3NpdmVNYXApO2UuYnVtcE1hcCYmKHQuYnVtcE1hcC52YWx1ZT1lLmJ1bXBNYXAsdC5idW1wU2NhbGUudmFsdWU9ZS5idW1wU2NhbGUsMT09PWUuc2lkZSYmKHQuYnVtcFNjYWxlLnZhbHVlKj0tMSkpO2Uubm9ybWFsTWFwJiYodC5ub3JtYWxNYXAudmFsdWU9ZS5ub3JtYWxNYXAsdC5ub3JtYWxTY2FsZS52YWx1ZS5jb3B5KGUubm9ybWFsU2NhbGUpLDE9PT1lLnNpZGUmJnQubm9ybWFsU2NhbGUudmFsdWUubmVnYXRlKCkpO2UuZGlzcGxhY2VtZW50TWFwJiYodC5kaXNwbGFjZW1lbnRNYXAudmFsdWU9ZS5kaXNwbGFjZW1lbnRNYXAsdC5kaXNwbGFjZW1lbnRTY2FsZS52YWx1ZT1lLmRpc3BsYWNlbWVudFNjYWxlLHQuZGlzcGxhY2VtZW50Qmlhcy52YWx1ZT1lLmRpc3BsYWNlbWVudEJpYXMpfSkodCxpKSk6aS5pc01lc2hQaG9uZ01hdGVyaWFsPyhlKHQsaSksKGZ1bmN0aW9uIHUodCxlKXt0LnNwZWN1bGFyLnZhbHVlLmNvcHkoZS5zcGVjdWxhciksdC5zaGluaW5lc3MudmFsdWU9TWF0aC5tYXgoZS5zaGluaW5lc3MsMWUtNCksZS5lbWlzc2l2ZU1hcCYmKHQuZW1pc3NpdmVNYXAudmFsdWU9ZS5lbWlzc2l2ZU1hcCk7ZS5idW1wTWFwJiYodC5idW1wTWFwLnZhbHVlPWUuYnVtcE1hcCx0LmJ1bXBTY2FsZS52YWx1ZT1lLmJ1bXBTY2FsZSwxPT09ZS5zaWRlJiYodC5idW1wU2NhbGUudmFsdWUqPS0xKSk7ZS5ub3JtYWxNYXAmJih0Lm5vcm1hbE1hcC52YWx1ZT1lLm5vcm1hbE1hcCx0Lm5vcm1hbFNjYWxlLnZhbHVlLmNvcHkoZS5ub3JtYWxTY2FsZSksMT09PWUuc2lkZSYmdC5ub3JtYWxTY2FsZS52YWx1ZS5uZWdhdGUoKSk7ZS5kaXNwbGFjZW1lbnRNYXAmJih0LmRpc3BsYWNlbWVudE1hcC52YWx1ZT1lLmRpc3BsYWNlbWVudE1hcCx0LmRpc3BsYWNlbWVudFNjYWxlLnZhbHVlPWUuZGlzcGxhY2VtZW50U2NhbGUsdC5kaXNwbGFjZW1lbnRCaWFzLnZhbHVlPWUuZGlzcGxhY2VtZW50Qmlhcyl9KSh0LGkpKTppLmlzTWVzaFN0YW5kYXJkTWF0ZXJpYWw/KGUodCxpKSxpLmlzTWVzaFBoeXNpY2FsTWF0ZXJpYWw/KGZ1bmN0aW9uIGgodCxlLGkpe24odCxlKSx0LnJlZmxlY3Rpdml0eS52YWx1ZT1lLnJlZmxlY3Rpdml0eSx0LmNsZWFyY29hdC52YWx1ZT1lLmNsZWFyY29hdCx0LmNsZWFyY29hdFJvdWdobmVzcy52YWx1ZT1lLmNsZWFyY29hdFJvdWdobmVzcyxlLnNoZWVuJiZ0LnNoZWVuLnZhbHVlLmNvcHkoZS5zaGVlbik7ZS5jbGVhcmNvYXRNYXAmJih0LmNsZWFyY29hdE1hcC52YWx1ZT1lLmNsZWFyY29hdE1hcCk7ZS5jbGVhcmNvYXRSb3VnaG5lc3NNYXAmJih0LmNsZWFyY29hdFJvdWdobmVzc01hcC52YWx1ZT1lLmNsZWFyY29hdFJvdWdobmVzc01hcCk7ZS5jbGVhcmNvYXROb3JtYWxNYXAmJih0LmNsZWFyY29hdE5vcm1hbFNjYWxlLnZhbHVlLmNvcHkoZS5jbGVhcmNvYXROb3JtYWxTY2FsZSksdC5jbGVhcmNvYXROb3JtYWxNYXAudmFsdWU9ZS5jbGVhcmNvYXROb3JtYWxNYXAsMT09PWUuc2lkZSYmdC5jbGVhcmNvYXROb3JtYWxTY2FsZS52YWx1ZS5uZWdhdGUoKSk7dC50cmFuc21pc3Npb24udmFsdWU9ZS50cmFuc21pc3Npb24sZS50cmFuc21pc3Npb25NYXAmJih0LnRyYW5zbWlzc2lvbk1hcC52YWx1ZT1lLnRyYW5zbWlzc2lvbk1hcCk7ZS50cmFuc21pc3Npb24+MCYmKHQudHJhbnNtaXNzaW9uU2FtcGxlck1hcC52YWx1ZT1pLnRleHR1cmUsdC50cmFuc21pc3Npb25TYW1wbGVyU2l6ZS52YWx1ZS5zZXQoaS53aWR0aCxpLmhlaWdodCkpO3QudGhpY2tuZXNzLnZhbHVlPWUudGhpY2tuZXNzLGUudGhpY2tuZXNzTWFwJiYodC50aGlja25lc3NNYXAudmFsdWU9ZS50aGlja25lc3NNYXApO3QuYXR0ZW51YXRpb25EaXN0YW5jZS52YWx1ZT1lLmF0dGVudWF0aW9uRGlzdGFuY2UsdC5hdHRlbnVhdGlvblRpbnQudmFsdWUuY29weShlLmF0dGVudWF0aW9uVGludCksdC5zcGVjdWxhckludGVuc2l0eS52YWx1ZT1lLnNwZWN1bGFySW50ZW5zaXR5LHQuc3BlY3VsYXJUaW50LnZhbHVlLmNvcHkoZS5zcGVjdWxhclRpbnQpLGUuc3BlY3VsYXJJbnRlbnNpdHlNYXAmJih0LnNwZWN1bGFySW50ZW5zaXR5TWFwLnZhbHVlPWUuc3BlY3VsYXJJbnRlbnNpdHlNYXApO2Uuc3BlY3VsYXJUaW50TWFwJiYodC5zcGVjdWxhclRpbnRNYXAudmFsdWU9ZS5zcGVjdWxhclRpbnRNYXApfSkodCxpLHMpOm4odCxpKSk6aS5pc01lc2hNYXRjYXBNYXRlcmlhbD8oZSh0LGkpLChmdW5jdGlvbiBkKHQsZSl7ZS5tYXRjYXAmJih0Lm1hdGNhcC52YWx1ZT1lLm1hdGNhcCk7ZS5idW1wTWFwJiYodC5idW1wTWFwLnZhbHVlPWUuYnVtcE1hcCx0LmJ1bXBTY2FsZS52YWx1ZT1lLmJ1bXBTY2FsZSwxPT09ZS5zaWRlJiYodC5idW1wU2NhbGUudmFsdWUqPS0xKSk7ZS5ub3JtYWxNYXAmJih0Lm5vcm1hbE1hcC52YWx1ZT1lLm5vcm1hbE1hcCx0Lm5vcm1hbFNjYWxlLnZhbHVlLmNvcHkoZS5ub3JtYWxTY2FsZSksMT09PWUuc2lkZSYmdC5ub3JtYWxTY2FsZS52YWx1ZS5uZWdhdGUoKSk7ZS5kaXNwbGFjZW1lbnRNYXAmJih0LmRpc3BsYWNlbWVudE1hcC52YWx1ZT1lLmRpc3BsYWNlbWVudE1hcCx0LmRpc3BsYWNlbWVudFNjYWxlLnZhbHVlPWUuZGlzcGxhY2VtZW50U2NhbGUsdC5kaXNwbGFjZW1lbnRCaWFzLnZhbHVlPWUuZGlzcGxhY2VtZW50Qmlhcyl9KSh0LGkpKTppLmlzTWVzaERlcHRoTWF0ZXJpYWw/KGUodCxpKSwoZnVuY3Rpb24gcCh0LGUpe2UuZGlzcGxhY2VtZW50TWFwJiYodC5kaXNwbGFjZW1lbnRNYXAudmFsdWU9ZS5kaXNwbGFjZW1lbnRNYXAsdC5kaXNwbGFjZW1lbnRTY2FsZS52YWx1ZT1lLmRpc3BsYWNlbWVudFNjYWxlLHQuZGlzcGxhY2VtZW50Qmlhcy52YWx1ZT1lLmRpc3BsYWNlbWVudEJpYXMpfSkodCxpKSk6aS5pc01lc2hEaXN0YW5jZU1hdGVyaWFsPyhlKHQsaSksKGZ1bmN0aW9uIGYodCxlKXtlLmRpc3BsYWNlbWVudE1hcCYmKHQuZGlzcGxhY2VtZW50TWFwLnZhbHVlPWUuZGlzcGxhY2VtZW50TWFwLHQuZGlzcGxhY2VtZW50U2NhbGUudmFsdWU9ZS5kaXNwbGFjZW1lbnRTY2FsZSx0LmRpc3BsYWNlbWVudEJpYXMudmFsdWU9ZS5kaXNwbGFjZW1lbnRCaWFzKTt0LnJlZmVyZW5jZVBvc2l0aW9uLnZhbHVlLmNvcHkoZS5yZWZlcmVuY2VQb3NpdGlvbiksdC5uZWFyRGlzdGFuY2UudmFsdWU9ZS5uZWFyRGlzdGFuY2UsdC5mYXJEaXN0YW5jZS52YWx1ZT1lLmZhckRpc3RhbmNlfSkodCxpKSk6aS5pc01lc2hOb3JtYWxNYXRlcmlhbD8oZSh0LGkpLChmdW5jdGlvbiBtKHQsZSl7ZS5idW1wTWFwJiYodC5idW1wTWFwLnZhbHVlPWUuYnVtcE1hcCx0LmJ1bXBTY2FsZS52YWx1ZT1lLmJ1bXBTY2FsZSwxPT09ZS5zaWRlJiYodC5idW1wU2NhbGUudmFsdWUqPS0xKSk7ZS5ub3JtYWxNYXAmJih0Lm5vcm1hbE1hcC52YWx1ZT1lLm5vcm1hbE1hcCx0Lm5vcm1hbFNjYWxlLnZhbHVlLmNvcHkoZS5ub3JtYWxTY2FsZSksMT09PWUuc2lkZSYmdC5ub3JtYWxTY2FsZS52YWx1ZS5uZWdhdGUoKSk7ZS5kaXNwbGFjZW1lbnRNYXAmJih0LmRpc3BsYWNlbWVudE1hcC52YWx1ZT1lLmRpc3BsYWNlbWVudE1hcCx0LmRpc3BsYWNlbWVudFNjYWxlLnZhbHVlPWUuZGlzcGxhY2VtZW50U2NhbGUsdC5kaXNwbGFjZW1lbnRCaWFzLnZhbHVlPWUuZGlzcGxhY2VtZW50Qmlhcyl9KSh0LGkpKTppLmlzTGluZUJhc2ljTWF0ZXJpYWw/KCEoZnVuY3Rpb24gZyh0LGUpe3QuZGlmZnVzZS52YWx1ZS5jb3B5KGUuY29sb3IpLHQub3BhY2l0eS52YWx1ZT1lLm9wYWNpdHl9KSh0LGkpLGkuaXNMaW5lRGFzaGVkTWF0ZXJpYWwmJihmdW5jdGlvbiBfKHQsZSl7dC5kYXNoU2l6ZS52YWx1ZT1lLmRhc2hTaXplLHQudG90YWxTaXplLnZhbHVlPWUuZGFzaFNpemUrZS5nYXBTaXplLHQuc2NhbGUudmFsdWU9ZS5zY2FsZX0pKHQsaSkpOmkuaXNQb2ludHNNYXRlcmlhbD8oZnVuY3Rpb24geSh0LGUsbixpKXt0LmRpZmZ1c2UudmFsdWUuY29weShlLmNvbG9yKSx0Lm9wYWNpdHkudmFsdWU9ZS5vcGFjaXR5LHQuc2l6ZS52YWx1ZT1lLnNpemUqbix0LnNjYWxlLnZhbHVlPS41KmksZS5tYXAmJih0Lm1hcC52YWx1ZT1lLm1hcCk7ZS5hbHBoYU1hcCYmKHQuYWxwaGFNYXAudmFsdWU9ZS5hbHBoYU1hcCk7bGV0IHI7ZS5tYXA/cj1lLm1hcDplLmFscGhhTWFwJiYocj1lLmFscGhhTWFwKTt2b2lkIDAhPT1yJiYoITA9PT1yLm1hdHJpeEF1dG9VcGRhdGUmJnIudXBkYXRlTWF0cml4KCksdC51dlRyYW5zZm9ybS52YWx1ZS5jb3B5KHIubWF0cml4KSl9KSh0LGksbyxhKTppLmlzU3ByaXRlTWF0ZXJpYWw/KGZ1bmN0aW9uIHYodCxlKXt0LmRpZmZ1c2UudmFsdWUuY29weShlLmNvbG9yKSx0Lm9wYWNpdHkudmFsdWU9ZS5vcGFjaXR5LHQucm90YXRpb24udmFsdWU9ZS5yb3RhdGlvbixlLm1hcCYmKHQubWFwLnZhbHVlPWUubWFwKTtlLmFscGhhTWFwJiYodC5hbHBoYU1hcC52YWx1ZT1lLmFscGhhTWFwKTtsZXQgbjtlLm1hcD9uPWUubWFwOmUuYWxwaGFNYXAmJihuPWUuYWxwaGFNYXApO3ZvaWQgMCE9PW4mJighMD09PW4ubWF0cml4QXV0b1VwZGF0ZSYmbi51cGRhdGVNYXRyaXgoKSx0LnV2VHJhbnNmb3JtLnZhbHVlLmNvcHkobi5tYXRyaXgpKX0pKHQsaSk6aS5pc1NoYWRvd01hdGVyaWFsPyh0LmNvbG9yLnZhbHVlLmNvcHkoaS5jb2xvciksdC5vcGFjaXR5LnZhbHVlPWkub3BhY2l0eSk6aS5pc1NoYWRlck1hdGVyaWFsJiYoaS51bmlmb3Jtc05lZWRVcGRhdGU9ITEpfX19ZnVuY3Rpb24gbzd0KHQ9e30pe2NvbnN0IGU9dm9pZCAwIT09dC5jYW52YXM/dC5jYW52YXM6KGZ1bmN0aW9uIG4oKXtjb25zdCB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIsImNhbnZhcyIpO3JldHVybiB0LnN0eWxlLmRpc3BsYXk9ImJsb2NrIix0fSkoKSxpPXZvaWQgMCE9PXQuY29udGV4dD90LmNvbnRleHQ6bnVsbCxyPXZvaWQgMCE9PXQuYWxwaGEmJnQuYWxwaGEsbz12b2lkIDA9PT10LmRlcHRofHx0LmRlcHRoLGE9dm9pZCAwPT09dC5zdGVuY2lsfHx0LnN0ZW5jaWwscz12b2lkIDAhPT10LmFudGlhbGlhcyYmdC5hbnRpYWxpYXMsbD12b2lkIDA9PT10LnByZW11bHRpcGxpZWRBbHBoYXx8dC5wcmVtdWx0aXBsaWVkQWxwaGEsYz12b2lkIDAhPT10LnByZXNlcnZlRHJhd2luZ0J1ZmZlciYmdC5wcmVzZXJ2ZURyYXdpbmdCdWZmZXIsdT12b2lkIDAhPT10LnBvd2VyUHJlZmVyZW5jZT90LnBvd2VyUHJlZmVyZW5jZToiZGVmYXVsdCIsaD12b2lkIDAhPT10LmZhaWxJZk1ham9yUGVyZm9ybWFuY2VDYXZlYXQmJnQuZmFpbElmTWFqb3JQZXJmb3JtYW5jZUNhdmVhdDtsZXQgZD1udWxsLHA9bnVsbDtjb25zdCBmPVtdLG09W107dGhpcy5kb21FbGVtZW50PWUsdGhpcy5kZWJ1Zz17Y2hlY2tTaGFkZXJFcnJvcnM6ITB9LHRoaXMuYXV0b0NsZWFyPSEwLHRoaXMuYXV0b0NsZWFyQ29sb3I9ITAsdGhpcy5hdXRvQ2xlYXJEZXB0aD0hMCx0aGlzLmF1dG9DbGVhclN0ZW5jaWw9ITAsdGhpcy5zb3J0T2JqZWN0cz0hMCx0aGlzLmNsaXBwaW5nUGxhbmVzPVtdLHRoaXMubG9jYWxDbGlwcGluZ0VuYWJsZWQ9ITEsdGhpcy5nYW1tYUZhY3Rvcj0yLHRoaXMub3V0cHV0RW5jb2Rpbmc9RzJ0LHRoaXMucGh5c2ljYWxseUNvcnJlY3RMaWdodHM9ITEsdGhpcy50b25lTWFwcGluZz0wLHRoaXMudG9uZU1hcHBpbmdFeHBvc3VyZT0xO2NvbnN0IGc9dGhpcztsZXQgXz0hMSx5PTAsdj0wLGI9bnVsbCx4PS0xLHc9bnVsbDtjb25zdCBTPW5ldyBSNXQsTT1uZXcgUjV0O2xldCBFPW51bGwsVD1lLndpZHRoLEM9ZS5oZWlnaHQsQT0xLGs9bnVsbCxMPW51bGw7Y29uc3QgUD1uZXcgUjV0KDAsMCxULEMpLE49bmV3IFI1dCgwLDAsVCxDKTtsZXQgST0hMTtjb25zdCBSPVtdLE89bmV3IG02dDtsZXQgej0hMSxEPSExLEI9bnVsbDtjb25zdCBIPW5ldyBnM3QsRj1uZXcgSDV0LFY9e2JhY2tncm91bmQ6bnVsbCxmb2c6bnVsbCxlbnZpcm9ubWVudDpudWxsLG92ZXJyaWRlTWF0ZXJpYWw6bnVsbCxpc1NjZW5lOiEwfTtmdW5jdGlvbiBVKCl7cmV0dXJuIG51bGw9PT1iP0E6MX1sZXQgaixHLFcscSxZLFgsJCxLLFosSixRLHR0LGV0LG50LGl0LHJ0LG90LGF0LHN0LGx0LGN0LHV0LGh0LGR0PWk7ZnVuY3Rpb24gcHQodCxuKXtmb3IobGV0IGk9MDtpPHQubGVuZ3RoO2krKyl7Y29uc3Qgcj1lLmdldENvbnRleHQodFtpXSxuKTtpZihudWxsIT09cilyZXR1cm4gcn1yZXR1cm4gbnVsbH10cnl7Y29uc3QgdD17YWxwaGE6cixkZXB0aDpvLHN0ZW5jaWw6YSxhbnRpYWxpYXM6cyxwcmVtdWx0aXBsaWVkQWxwaGE6bCxwcmVzZXJ2ZURyYXdpbmdCdWZmZXI6Yyxwb3dlclByZWZlcmVuY2U6dSxmYWlsSWZNYWpvclBlcmZvcm1hbmNlQ2F2ZWF0Omh9O2lmKGUuYWRkRXZlbnRMaXN0ZW5lcigid2ViZ2xjb250ZXh0bG9zdCIsZ3QsITEpLGUuYWRkRXZlbnRMaXN0ZW5lcigid2ViZ2xjb250ZXh0cmVzdG9yZWQiLF90LCExKSxudWxsPT09ZHQpe2NvbnN0IGU9WyJ3ZWJnbDIiLCJ3ZWJnbCIsImV4cGVyaW1lbnRhbC13ZWJnbCJdO2lmKCEwPT09Zy5pc1dlYkdMMVJlbmRlcmVyJiZlLnNoaWZ0KCksZHQ9cHQoZSx0KSxudWxsPT09ZHQpdGhyb3cgcHQoZSk/bmV3IEVycm9yKCJFcnJvciBjcmVhdGluZyBXZWJHTCBjb250ZXh0IHdpdGggeW91ciBzZWxlY3RlZCBhdHRyaWJ1dGVzLiIpOm5ldyBFcnJvcigiRXJyb3IgY3JlYXRpbmcgV2ViR0wgY29udGV4dC4iKX12b2lkIDA9PT1kdC5nZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQmJihkdC5nZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQ9ZnVuY3Rpb24oKXtyZXR1cm57cmFuZ2VNaW46MSxyYW5nZU1heDoxLHByZWNpc2lvbjoxfX0pfWNhdGNoKHQpe3Rocm93IGNvbnNvbGUuZXJyb3IoIlRIUkVFLldlYkdMUmVuZGVyZXI6ICIrdC5tZXNzYWdlKSx0fWZ1bmN0aW9uIGZ0KCl7aj1uZXcgaTl0KGR0KSxHPW5ldyBFNnQoZHQsaix0KSxqLmluaXQoRyksdXQ9bmV3IEo4dChkdCxqLEcpLFc9bmV3IEs4dChkdCxqLEcpLFJbMF09MTAyOSxxPW5ldyBhOXQoZHQpLFk9bmV3IHo4dCxYPW5ldyBaOHQoZHQsaixXLFksRyx1dCxxKSwkPW5ldyBDNnQoZyksSz1uZXcgbjl0KGcpLFo9bmV3IF82dChkdCxHKSxodD1uZXcgUzZ0KGR0LGosWixHKSxKPW5ldyByOXQoZHQsWixxLGh0KSxRPW5ldyB1OXQoZHQsSixaLHEpLHN0PW5ldyBjOXQoZHQpLHJ0PW5ldyBUNnQoWSksdHQ9bmV3IE84dChnLCQsSyxqLEcsaHQscnQpLGV0PW5ldyByN3QoWSksbnQ9bmV3IEY4dChZKSxpdD1uZXcgcTh0KGosRyksYXQ9bmV3IHc2dChnLCQsVyxRLGwpLG90PW5ldyAkOHQoZyxRLEcpLGx0PW5ldyBNNnQoZHQsaixxLEcpLGN0PW5ldyBvOXQoZHQsaixxLEcpLHEucHJvZ3JhbXM9dHQucHJvZ3JhbXMsZy5jYXBhYmlsaXRpZXM9RyxnLmV4dGVuc2lvbnM9aixnLnByb3BlcnRpZXM9WSxnLnJlbmRlckxpc3RzPW50LGcuc2hhZG93TWFwPW90LGcuc3RhdGU9VyxnLmluZm89cX1mdCgpO2NvbnN0IG10PW5ldyBpN3QoZyxkdCk7ZnVuY3Rpb24gZ3QodCl7dC5wcmV2ZW50RGVmYXVsdCgpLGNvbnNvbGUubG9nKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiBDb250ZXh0IExvc3QuIiksXz0hMH1mdW5jdGlvbiBfdCgpe2NvbnNvbGUubG9nKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiBDb250ZXh0IFJlc3RvcmVkLiIpLF89ITE7Y29uc3QgdD1xLmF1dG9SZXNldCxlPW90LmVuYWJsZWQsbj1vdC5hdXRvVXBkYXRlLGk9b3QubmVlZHNVcGRhdGUscj1vdC50eXBlO2Z0KCkscS5hdXRvUmVzZXQ9dCxvdC5lbmFibGVkPWUsb3QuYXV0b1VwZGF0ZT1uLG90Lm5lZWRzVXBkYXRlPWksb3QudHlwZT1yfWZ1bmN0aW9uIHl0KHQpe2NvbnN0IGU9dC50YXJnZXQ7ZS5yZW1vdmVFdmVudExpc3RlbmVyKCJkaXNwb3NlIix5dCksKGZ1bmN0aW9uIG4odCl7KGZ1bmN0aW9uIGUodCl7Y29uc3QgZT1ZLmdldCh0KS5wcm9ncmFtczt2b2lkIDAhPT1lJiZlLmZvckVhY2goKGZ1bmN0aW9uKHQpe3R0LnJlbGVhc2VQcm9ncmFtKHQpfSkpfSkodCksWS5yZW1vdmUodCl9KShlKX10aGlzLnhyPW10LHRoaXMuZ2V0Q29udGV4dD1mdW5jdGlvbigpe3JldHVybiBkdH0sdGhpcy5nZXRDb250ZXh0QXR0cmlidXRlcz1mdW5jdGlvbigpe3JldHVybiBkdC5nZXRDb250ZXh0QXR0cmlidXRlcygpfSx0aGlzLmZvcmNlQ29udGV4dExvc3M9ZnVuY3Rpb24oKXtjb25zdCB0PWouZ2V0KCJXRUJHTF9sb3NlX2NvbnRleHQiKTt0JiZ0Lmxvc2VDb250ZXh0KCl9LHRoaXMuZm9yY2VDb250ZXh0UmVzdG9yZT1mdW5jdGlvbigpe2NvbnN0IHQ9ai5nZXQoIldFQkdMX2xvc2VfY29udGV4dCIpO3QmJnQucmVzdG9yZUNvbnRleHQoKX0sdGhpcy5nZXRQaXhlbFJhdGlvPWZ1bmN0aW9uKCl7cmV0dXJuIEF9LHRoaXMuc2V0UGl4ZWxSYXRpbz1mdW5jdGlvbih0KXt2b2lkIDAhPT10JiYoQT10LHRoaXMuc2V0U2l6ZShULEMsITEpKX0sdGhpcy5nZXRTaXplPWZ1bmN0aW9uKHQpe3JldHVybiB0LnNldChULEMpfSx0aGlzLnNldFNpemU9ZnVuY3Rpb24odCxuLGkpe210LmlzUHJlc2VudGluZz9jb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IENhbid0IGNoYW5nZSBzaXplIHdoaWxlIFZSIGRldmljZSBpcyBwcmVzZW50aW5nLiIpOihUPXQsQz1uLGUud2lkdGg9TWF0aC5mbG9vcih0KkEpLGUuaGVpZ2h0PU1hdGguZmxvb3IobipBKSwhMSE9PWkmJihlLnN0eWxlLndpZHRoPXQrInB4IixlLnN0eWxlLmhlaWdodD1uKyJweCIpLHRoaXMuc2V0Vmlld3BvcnQoMCwwLHQsbikpfSx0aGlzLmdldERyYXdpbmdCdWZmZXJTaXplPWZ1bmN0aW9uKHQpe3JldHVybiB0LnNldChUKkEsQypBKS5mbG9vcigpfSx0aGlzLnNldERyYXdpbmdCdWZmZXJTaXplPWZ1bmN0aW9uKHQsbixpKXtUPXQsQz1uLEE9aSxlLndpZHRoPU1hdGguZmxvb3IodCppKSxlLmhlaWdodD1NYXRoLmZsb29yKG4qaSksdGhpcy5zZXRWaWV3cG9ydCgwLDAsdCxuKX0sdGhpcy5nZXRDdXJyZW50Vmlld3BvcnQ9ZnVuY3Rpb24odCl7cmV0dXJuIHQuY29weShTKX0sdGhpcy5nZXRWaWV3cG9ydD1mdW5jdGlvbih0KXtyZXR1cm4gdC5jb3B5KFApfSx0aGlzLnNldFZpZXdwb3J0PWZ1bmN0aW9uKHQsZSxuLGkpe3QuaXNWZWN0b3I0P1Auc2V0KHQueCx0LnksdC56LHQudyk6UC5zZXQodCxlLG4saSksVy52aWV3cG9ydChTLmNvcHkoUCkubXVsdGlwbHlTY2FsYXIoQSkuZmxvb3IoKSl9LHRoaXMuZ2V0U2Npc3Nvcj1mdW5jdGlvbih0KXtyZXR1cm4gdC5jb3B5KE4pfSx0aGlzLnNldFNjaXNzb3I9ZnVuY3Rpb24odCxlLG4saSl7dC5pc1ZlY3RvcjQ/Ti5zZXQodC54LHQueSx0LnosdC53KTpOLnNldCh0LGUsbixpKSxXLnNjaXNzb3IoTS5jb3B5KE4pLm11bHRpcGx5U2NhbGFyKEEpLmZsb29yKCkpfSx0aGlzLmdldFNjaXNzb3JUZXN0PWZ1bmN0aW9uKCl7cmV0dXJuIEl9LHRoaXMuc2V0U2Npc3NvclRlc3Q9ZnVuY3Rpb24odCl7Vy5zZXRTY2lzc29yVGVzdChJPXQpfSx0aGlzLnNldE9wYXF1ZVNvcnQ9ZnVuY3Rpb24odCl7az10fSx0aGlzLnNldFRyYW5zcGFyZW50U29ydD1mdW5jdGlvbih0KXtMPXR9LHRoaXMuZ2V0Q2xlYXJDb2xvcj1mdW5jdGlvbih0KXtyZXR1cm4gdC5jb3B5KGF0LmdldENsZWFyQ29sb3IoKSl9LHRoaXMuc2V0Q2xlYXJDb2xvcj1mdW5jdGlvbigpe2F0LnNldENsZWFyQ29sb3IuYXBwbHkoYXQsYXJndW1lbnRzKX0sdGhpcy5nZXRDbGVhckFscGhhPWZ1bmN0aW9uKCl7cmV0dXJuIGF0LmdldENsZWFyQWxwaGEoKX0sdGhpcy5zZXRDbGVhckFscGhhPWZ1bmN0aW9uKCl7YXQuc2V0Q2xlYXJBbHBoYS5hcHBseShhdCxhcmd1bWVudHMpfSx0aGlzLmNsZWFyPWZ1bmN0aW9uKHQsZSxuKXtsZXQgaT0wOyh2b2lkIDA9PT10fHx0KSYmKGl8PTE2Mzg0KSwodm9pZCAwPT09ZXx8ZSkmJihpfD0yNTYpLCh2b2lkIDA9PT1ufHxuKSYmKGl8PTEwMjQpLGR0LmNsZWFyKGkpfSx0aGlzLmNsZWFyQ29sb3I9ZnVuY3Rpb24oKXt0aGlzLmNsZWFyKCEwLCExLCExKX0sdGhpcy5jbGVhckRlcHRoPWZ1bmN0aW9uKCl7dGhpcy5jbGVhcighMSwhMCwhMSl9LHRoaXMuY2xlYXJTdGVuY2lsPWZ1bmN0aW9uKCl7dGhpcy5jbGVhcighMSwhMSwhMCl9LHRoaXMuZGlzcG9zZT1mdW5jdGlvbigpe2UucmVtb3ZlRXZlbnRMaXN0ZW5lcigid2ViZ2xjb250ZXh0bG9zdCIsZ3QsITEpLGUucmVtb3ZlRXZlbnRMaXN0ZW5lcigid2ViZ2xjb250ZXh0cmVzdG9yZWQiLF90LCExKSxudC5kaXNwb3NlKCksaXQuZGlzcG9zZSgpLFkuZGlzcG9zZSgpLCQuZGlzcG9zZSgpLEsuZGlzcG9zZSgpLFEuZGlzcG9zZSgpLGh0LmRpc3Bvc2UoKSxtdC5kaXNwb3NlKCksbXQucmVtb3ZlRXZlbnRMaXN0ZW5lcigic2Vzc2lvbnN0YXJ0IixidCksbXQucmVtb3ZlRXZlbnRMaXN0ZW5lcigic2Vzc2lvbmVuZCIseHQpLEImJihCLmRpc3Bvc2UoKSxCPW51bGwpLHd0LnN0b3AoKX0sdGhpcy5yZW5kZXJCdWZmZXJJbW1lZGlhdGU9ZnVuY3Rpb24odCxlKXtodC5pbml0QXR0cmlidXRlcygpO2NvbnN0IG49WS5nZXQodCk7dC5oYXNQb3NpdGlvbnMmJiFuLnBvc2l0aW9uJiYobi5wb3NpdGlvbj1kdC5jcmVhdGVCdWZmZXIoKSksdC5oYXNOb3JtYWxzJiYhbi5ub3JtYWwmJihuLm5vcm1hbD1kdC5jcmVhdGVCdWZmZXIoKSksdC5oYXNVdnMmJiFuLnV2JiYobi51dj1kdC5jcmVhdGVCdWZmZXIoKSksdC5oYXNDb2xvcnMmJiFuLmNvbG9yJiYobi5jb2xvcj1kdC5jcmVhdGVCdWZmZXIoKSk7Y29uc3QgaT1lLmdldEF0dHJpYnV0ZXMoKTt0Lmhhc1Bvc2l0aW9ucyYmKGR0LmJpbmRCdWZmZXIoMzQ5NjIsbi5wb3NpdGlvbiksZHQuYnVmZmVyRGF0YSgzNDk2Mix0LnBvc2l0aW9uQXJyYXksMzUwNDgpLGh0LmVuYWJsZUF0dHJpYnV0ZShpLnBvc2l0aW9uKSxkdC52ZXJ0ZXhBdHRyaWJQb2ludGVyKGkucG9zaXRpb24sMyw1MTI2LCExLDAsMCkpLHQuaGFzTm9ybWFscyYmKGR0LmJpbmRCdWZmZXIoMzQ5NjIsbi5ub3JtYWwpLGR0LmJ1ZmZlckRhdGEoMzQ5NjIsdC5ub3JtYWxBcnJheSwzNTA0OCksaHQuZW5hYmxlQXR0cmlidXRlKGkubm9ybWFsKSxkdC52ZXJ0ZXhBdHRyaWJQb2ludGVyKGkubm9ybWFsLDMsNTEyNiwhMSwwLDApKSx0Lmhhc1V2cyYmKGR0LmJpbmRCdWZmZXIoMzQ5NjIsbi51diksZHQuYnVmZmVyRGF0YSgzNDk2Mix0LnV2QXJyYXksMzUwNDgpLGh0LmVuYWJsZUF0dHJpYnV0ZShpLnV2KSxkdC52ZXJ0ZXhBdHRyaWJQb2ludGVyKGkudXYsMiw1MTI2LCExLDAsMCkpLHQuaGFzQ29sb3JzJiYoZHQuYmluZEJ1ZmZlcigzNDk2MixuLmNvbG9yKSxkdC5idWZmZXJEYXRhKDM0OTYyLHQuY29sb3JBcnJheSwzNTA0OCksaHQuZW5hYmxlQXR0cmlidXRlKGkuY29sb3IpLGR0LnZlcnRleEF0dHJpYlBvaW50ZXIoaS5jb2xvciwzLDUxMjYsITEsMCwwKSksaHQuZGlzYWJsZVVudXNlZEF0dHJpYnV0ZXMoKSxkdC5kcmF3QXJyYXlzKDQsMCx0LmNvdW50KSx0LmNvdW50PTB9LHRoaXMucmVuZGVyQnVmZmVyRGlyZWN0PWZ1bmN0aW9uKHQsZSxuLGkscixvKXtudWxsPT09ZSYmKGU9Vik7Y29uc3QgYT1yLmlzTWVzaCYmci5tYXRyaXhXb3JsZC5kZXRlcm1pbmFudCgpPDAscz1BdCh0LGUsaSxyKTtXLnNldE1hdGVyaWFsKGksYSk7bGV0IGw9bi5pbmRleDtjb25zdCBjPW4uYXR0cmlidXRlcy5wb3NpdGlvbjtpZihudWxsPT09bCl7aWYodm9pZCAwPT09Y3x8MD09PWMuY291bnQpcmV0dXJufWVsc2UgaWYoMD09PWwuY291bnQpcmV0dXJuO2xldCB1LGg9MTshMD09PWkud2lyZWZyYW1lJiYobD1KLmdldFdpcmVmcmFtZUF0dHJpYnV0ZShuKSxoPTIpLHZvaWQgMD09PW4ubW9ycGhBdHRyaWJ1dGVzLnBvc2l0aW9uJiZ2b2lkIDA9PT1uLm1vcnBoQXR0cmlidXRlcy5ub3JtYWx8fHN0LnVwZGF0ZShyLG4saSxzKSxodC5zZXR1cChyLGkscyxuLGwpO2xldCBkPWx0O251bGwhPT1sJiYodT1aLmdldChsKSxkPWN0LGQuc2V0SW5kZXgodSkpO2NvbnN0IHA9bnVsbCE9PWw/bC5jb3VudDpjLmNvdW50LGY9bi5kcmF3UmFuZ2Uuc3RhcnQqaCxtPW4uZHJhd1JhbmdlLmNvdW50KmgsZz1udWxsIT09bz9vLnN0YXJ0Kmg6MCxfPW51bGwhPT1vP28uY291bnQqaDoxLzAseT1NYXRoLm1heChmLGcpLHY9TWF0aC5taW4ocCxmK20sZytfKS0xLGI9TWF0aC5tYXgoMCx2LXkrMSk7aWYoMCE9PWIpe2lmKHIuaXNNZXNoKSEwPT09aS53aXJlZnJhbWU/KFcuc2V0TGluZVdpZHRoKGkud2lyZWZyYW1lTGluZXdpZHRoKlUoKSksZC5zZXRNb2RlKDEpKTpkLnNldE1vZGUoNCk7ZWxzZSBpZihyLmlzTGluZSl7bGV0IHQ9aS5saW5ld2lkdGg7dm9pZCAwPT09dCYmKHQ9MSksVy5zZXRMaW5lV2lkdGgodCpVKCkpLGQuc2V0TW9kZShyLmlzTGluZVNlZ21lbnRzPzE6ci5pc0xpbmVMb29wPzI6Myl9ZWxzZSByLmlzUG9pbnRzP2Quc2V0TW9kZSgwKTpyLmlzU3ByaXRlJiZkLnNldE1vZGUoNCk7aWYoci5pc0luc3RhbmNlZE1lc2gpZC5yZW5kZXJJbnN0YW5jZXMoeSxiLHIuY291bnQpO2Vsc2UgaWYobi5pc0luc3RhbmNlZEJ1ZmZlckdlb21ldHJ5KXtjb25zdCB0PU1hdGgubWluKG4uaW5zdGFuY2VDb3VudCxuLl9tYXhJbnN0YW5jZUNvdW50KTtkLnJlbmRlckluc3RhbmNlcyh5LGIsdCl9ZWxzZSBkLnJlbmRlcih5LGIpfX0sdGhpcy5jb21waWxlPWZ1bmN0aW9uKHQsZSl7cD1pdC5nZXQodCkscC5pbml0KCksbS5wdXNoKHApLHQudHJhdmVyc2VWaXNpYmxlKChmdW5jdGlvbih0KXt0LmlzTGlnaHQmJnQubGF5ZXJzLnRlc3QoZS5sYXllcnMpJiYocC5wdXNoTGlnaHQodCksdC5jYXN0U2hhZG93JiZwLnB1c2hTaGFkb3codCkpfSkpLHAuc2V0dXBMaWdodHMoKSx0LnRyYXZlcnNlKChmdW5jdGlvbihlKXtjb25zdCBuPWUubWF0ZXJpYWw7aWYobilpZihBcnJheS5pc0FycmF5KG4pKWZvcihsZXQgaT0wO2k8bi5sZW5ndGg7aSsrKXtUdChuW2ldLHQsZSl9ZWxzZSBUdChuLHQsZSl9KSksbS5wb3AoKSxwPW51bGx9O2xldCB2dD1udWxsO2Z1bmN0aW9uIGJ0KCl7d3Quc3RvcCgpfWZ1bmN0aW9uIHh0KCl7d3Quc3RhcnQoKX1jb25zdCB3dD1uZXcgZzZ0O2Z1bmN0aW9uIFN0KHQsZSxuLGkpe2lmKCExPT09dC52aXNpYmxlKXJldHVybjtpZih0LmxheWVycy50ZXN0KGUubGF5ZXJzKSlpZih0LmlzR3JvdXApbj10LnJlbmRlck9yZGVyO2Vsc2UgaWYodC5pc0xPRCkhMD09PXQuYXV0b1VwZGF0ZSYmdC51cGRhdGUoZSk7ZWxzZSBpZih0LmlzTGlnaHQpcC5wdXNoTGlnaHQodCksdC5jYXN0U2hhZG93JiZwLnB1c2hTaGFkb3codCk7ZWxzZSBpZih0LmlzU3ByaXRlKXtpZighdC5mcnVzdHVtQ3VsbGVkfHxPLmludGVyc2VjdHNTcHJpdGUodCkpe2kmJkYuc2V0RnJvbU1hdHJpeFBvc2l0aW9uKHQubWF0cml4V29ybGQpLmFwcGx5TWF0cml4NChIKTtjb25zdCBlPVEudXBkYXRlKHQpLHI9dC5tYXRlcmlhbDtyLnZpc2libGUmJmQucHVzaCh0LGUscixuLEYueixudWxsKX19ZWxzZSBpZih0LmlzSW1tZWRpYXRlUmVuZGVyT2JqZWN0KWkmJkYuc2V0RnJvbU1hdHJpeFBvc2l0aW9uKHQubWF0cml4V29ybGQpLmFwcGx5TWF0cml4NChIKSxkLnB1c2godCxudWxsLHQubWF0ZXJpYWwsbixGLnosbnVsbCk7ZWxzZSBpZigodC5pc01lc2h8fHQuaXNMaW5lfHx0LmlzUG9pbnRzKSYmKHQuaXNTa2lubmVkTWVzaCYmdC5za2VsZXRvbi5mcmFtZSE9PXEucmVuZGVyLmZyYW1lJiYodC5za2VsZXRvbi51cGRhdGUoKSx0LnNrZWxldG9uLmZyYW1lPXEucmVuZGVyLmZyYW1lKSwhdC5mcnVzdHVtQ3VsbGVkfHxPLmludGVyc2VjdHNPYmplY3QodCkpKXtpJiZGLnNldEZyb21NYXRyaXhQb3NpdGlvbih0Lm1hdHJpeFdvcmxkKS5hcHBseU1hdHJpeDQoSCk7Y29uc3QgZT1RLnVwZGF0ZSh0KSxyPXQubWF0ZXJpYWw7aWYoQXJyYXkuaXNBcnJheShyKSl7Y29uc3QgaT1lLmdyb3Vwcztmb3IobGV0IG89MCxhPWkubGVuZ3RoO288YTtvKyspe2NvbnN0IGE9aVtvXSxzPXJbYS5tYXRlcmlhbEluZGV4XTtzJiZzLnZpc2libGUmJmQucHVzaCh0LGUscyxuLEYueixhKX19ZWxzZSByLnZpc2libGUmJmQucHVzaCh0LGUscixuLEYueixudWxsKX1jb25zdCByPXQuY2hpbGRyZW47Zm9yKGxldCB0PTAsbz1yLmxlbmd0aDt0PG87dCsrKVN0KHJbdF0sZSxuLGkpfWZ1bmN0aW9uIE10KHQsZSxuKXtjb25zdCBpPSEwPT09ZS5pc1NjZW5lP2Uub3ZlcnJpZGVNYXRlcmlhbDpudWxsO2lmKG4uaXNBcnJheUNhbWVyYSl7Y29uc3Qgcj1uLmNhbWVyYXM7Zm9yKGxldCBuPTAsbz1yLmxlbmd0aDtuPG87bisrKXtjb25zdCBvPXJbbl07Vy52aWV3cG9ydChTLmNvcHkoby52aWV3cG9ydCkpLHAuc2V0dXBMaWdodHNWaWV3KG8pO2ZvcihsZXQgbj0wLHI9dC5sZW5ndGg7bjxyO24rKyl7Y29uc3Qgcj10W25dLGE9ci5vYmplY3Qscz1yLmdlb21ldHJ5LGw9bnVsbD09PWk/ci5tYXRlcmlhbDppLGM9ci5ncm91cDthLmxheWVycy50ZXN0KG8ubGF5ZXJzKSYmRXQoYSxlLG8scyxsLGMpfX19ZWxzZSBmb3IobGV0IHI9MCxvPXQubGVuZ3RoO3I8bztyKyspe2NvbnN0IG89dFtyXTtFdChvLm9iamVjdCxlLG4sby5nZW9tZXRyeSxudWxsPT09aT9vLm1hdGVyaWFsOmksby5ncm91cCl9fWZ1bmN0aW9uIEV0KHQsZSxuLGkscixvKXtpZih0Lm9uQmVmb3JlUmVuZGVyKGcsZSxuLGkscixvKSx0Lm1vZGVsVmlld01hdHJpeC5tdWx0aXBseU1hdHJpY2VzKG4ubWF0cml4V29ybGRJbnZlcnNlLHQubWF0cml4V29ybGQpLHQubm9ybWFsTWF0cml4LmdldE5vcm1hbE1hdHJpeCh0Lm1vZGVsVmlld01hdHJpeCksdC5pc0ltbWVkaWF0ZVJlbmRlck9iamVjdCl7Y29uc3QgaT1BdChuLGUscix0KTtXLnNldE1hdGVyaWFsKHIpLGh0LnJlc2V0KCksKGZ1bmN0aW9uIGEodCxlKXt0LnJlbmRlcigoZnVuY3Rpb24odCl7Zy5yZW5kZXJCdWZmZXJJbW1lZGlhdGUodCxlKX0pKX0pKHQsaSl9ZWxzZSEwPT09ci50cmFuc3BhcmVudCYmMj09PXIuc2lkZT8oci5zaWRlPTEsci5uZWVkc1VwZGF0ZT0hMCxnLnJlbmRlckJ1ZmZlckRpcmVjdChuLGUsaSxyLHQsbyksci5zaWRlPTAsci5uZWVkc1VwZGF0ZT0hMCxnLnJlbmRlckJ1ZmZlckRpcmVjdChuLGUsaSxyLHQsbyksci5zaWRlPTIpOmcucmVuZGVyQnVmZmVyRGlyZWN0KG4sZSxpLHIsdCxvKTt0Lm9uQWZ0ZXJSZW5kZXIoZyxlLG4saSxyLG8pfWZ1bmN0aW9uIFR0KHQsZSxuKXshMCE9PWUuaXNTY2VuZSYmKGU9Vik7Y29uc3QgaT1ZLmdldCh0KSxyPXAuc3RhdGUubGlnaHRzLG89ci5zdGF0ZS52ZXJzaW9uLGE9dHQuZ2V0UGFyYW1ldGVycyh0LHIuc3RhdGUscC5zdGF0ZS5zaGFkb3dzQXJyYXksZSxuKSxzPXR0LmdldFByb2dyYW1DYWNoZUtleShhKTtsZXQgbD1pLnByb2dyYW1zO2kuZW52aXJvbm1lbnQ9dC5pc01lc2hTdGFuZGFyZE1hdGVyaWFsP2UuZW52aXJvbm1lbnQ6bnVsbCxpLmZvZz1lLmZvZyxpLmVudk1hcD0odC5pc01lc2hTdGFuZGFyZE1hdGVyaWFsP0s6JCkuZ2V0KHQuZW52TWFwfHxpLmVudmlyb25tZW50KSx2b2lkIDA9PT1sJiYodC5hZGRFdmVudExpc3RlbmVyKCJkaXNwb3NlIix5dCksbD1uZXcgTWFwLGkucHJvZ3JhbXM9bCk7bGV0IGM9bC5nZXQocyk7aWYodm9pZCAwIT09Yyl7aWYoaS5jdXJyZW50UHJvZ3JhbT09PWMmJmkubGlnaHRzU3RhdGVWZXJzaW9uPT09bylyZXR1cm4gQ3QodCxhKSxjfWVsc2UgYS51bmlmb3Jtcz10dC5nZXRVbmlmb3Jtcyh0KSx0Lm9uQnVpbGQoYSxnKSx0Lm9uQmVmb3JlQ29tcGlsZShhLGcpLGM9dHQuYWNxdWlyZVByb2dyYW0oYSxzKSxsLnNldChzLGMpLGkudW5pZm9ybXM9YS51bmlmb3Jtcztjb25zdCB1PWkudW5pZm9ybXM7KHQuaXNTaGFkZXJNYXRlcmlhbHx8dC5pc1Jhd1NoYWRlck1hdGVyaWFsKSYmITAhPT10LmNsaXBwaW5nfHwodS5jbGlwcGluZ1BsYW5lcz1ydC51bmlmb3JtKSxDdCh0LGEpLGkubmVlZHNMaWdodHM9KGZ1bmN0aW9uIGgodCl7cmV0dXJuIHQuaXNNZXNoTGFtYmVydE1hdGVyaWFsfHx0LmlzTWVzaFRvb25NYXRlcmlhbHx8dC5pc01lc2hQaG9uZ01hdGVyaWFsfHx0LmlzTWVzaFN0YW5kYXJkTWF0ZXJpYWx8fHQuaXNTaGFkb3dNYXRlcmlhbHx8dC5pc1NoYWRlck1hdGVyaWFsJiYhMD09PXQubGlnaHRzfSkodCksaS5saWdodHNTdGF0ZVZlcnNpb249byxpLm5lZWRzTGlnaHRzJiYodS5hbWJpZW50TGlnaHRDb2xvci52YWx1ZT1yLnN0YXRlLmFtYmllbnQsdS5saWdodFByb2JlLnZhbHVlPXIuc3RhdGUucHJvYmUsdS5kaXJlY3Rpb25hbExpZ2h0cy52YWx1ZT1yLnN0YXRlLmRpcmVjdGlvbmFsLHUuZGlyZWN0aW9uYWxMaWdodFNoYWRvd3MudmFsdWU9ci5zdGF0ZS5kaXJlY3Rpb25hbFNoYWRvdyx1LnNwb3RMaWdodHMudmFsdWU9ci5zdGF0ZS5zcG90LHUuc3BvdExpZ2h0U2hhZG93cy52YWx1ZT1yLnN0YXRlLnNwb3RTaGFkb3csdS5yZWN0QXJlYUxpZ2h0cy52YWx1ZT1yLnN0YXRlLnJlY3RBcmVhLHUubHRjXzEudmFsdWU9ci5zdGF0ZS5yZWN0QXJlYUxUQzEsdS5sdGNfMi52YWx1ZT1yLnN0YXRlLnJlY3RBcmVhTFRDMix1LnBvaW50TGlnaHRzLnZhbHVlPXIuc3RhdGUucG9pbnQsdS5wb2ludExpZ2h0U2hhZG93cy52YWx1ZT1yLnN0YXRlLnBvaW50U2hhZG93LHUuaGVtaXNwaGVyZUxpZ2h0cy52YWx1ZT1yLnN0YXRlLmhlbWksdS5kaXJlY3Rpb25hbFNoYWRvd01hcC52YWx1ZT1yLnN0YXRlLmRpcmVjdGlvbmFsU2hhZG93TWFwLHUuZGlyZWN0aW9uYWxTaGFkb3dNYXRyaXgudmFsdWU9ci5zdGF0ZS5kaXJlY3Rpb25hbFNoYWRvd01hdHJpeCx1LnNwb3RTaGFkb3dNYXAudmFsdWU9ci5zdGF0ZS5zcG90U2hhZG93TWFwLHUuc3BvdFNoYWRvd01hdHJpeC52YWx1ZT1yLnN0YXRlLnNwb3RTaGFkb3dNYXRyaXgsdS5wb2ludFNoYWRvd01hcC52YWx1ZT1yLnN0YXRlLnBvaW50U2hhZG93TWFwLHUucG9pbnRTaGFkb3dNYXRyaXgudmFsdWU9ci5zdGF0ZS5wb2ludFNoYWRvd01hdHJpeCk7Y29uc3QgZD1jLmdldFVuaWZvcm1zKCksZj1mOHQuc2VxV2l0aFZhbHVlKGQuc2VxLHUpO3JldHVybiBpLmN1cnJlbnRQcm9ncmFtPWMsaS51bmlmb3Jtc0xpc3Q9ZixjfWZ1bmN0aW9uIEN0KHQsZSl7Y29uc3Qgbj1ZLmdldCh0KTtuLm91dHB1dEVuY29kaW5nPWUub3V0cHV0RW5jb2Rpbmcsbi5pbnN0YW5jaW5nPWUuaW5zdGFuY2luZyxuLnNraW5uaW5nPWUuc2tpbm5pbmcsbi5tb3JwaFRhcmdldHM9ZS5tb3JwaFRhcmdldHMsbi5tb3JwaE5vcm1hbHM9ZS5tb3JwaE5vcm1hbHMsbi5udW1DbGlwcGluZ1BsYW5lcz1lLm51bUNsaXBwaW5nUGxhbmVzLG4ubnVtSW50ZXJzZWN0aW9uPWUubnVtQ2xpcEludGVyc2VjdGlvbixuLnZlcnRleEFscGhhcz1lLnZlcnRleEFscGhhcyxuLnZlcnRleFRhbmdlbnRzPWUudmVydGV4VGFuZ2VudHN9ZnVuY3Rpb24gQXQodCxlLG4saSl7ITAhPT1lLmlzU2NlbmUmJihlPVYpLFgucmVzZXRUZXh0dXJlVW5pdHMoKTtjb25zdCByPWUuZm9nLG89bnVsbD09PWI/Zy5vdXRwdXRFbmNvZGluZzpiLnRleHR1cmUuZW5jb2RpbmcsYT0obi5pc01lc2hTdGFuZGFyZE1hdGVyaWFsP0s6JCkuZ2V0KG4uZW52TWFwfHwobi5pc01lc2hTdGFuZGFyZE1hdGVyaWFsP2UuZW52aXJvbm1lbnQ6bnVsbCkpLHM9ITA9PT1uLnZlcnRleENvbG9ycyYmISFpLmdlb21ldHJ5JiYhIWkuZ2VvbWV0cnkuYXR0cmlidXRlcy5jb2xvciYmND09PWkuZ2VvbWV0cnkuYXR0cmlidXRlcy5jb2xvci5pdGVtU2l6ZSxsPSEhaS5nZW9tZXRyeSYmISFpLmdlb21ldHJ5LmF0dHJpYnV0ZXMudGFuZ2VudCxjPSEhaS5nZW9tZXRyeSYmISFpLmdlb21ldHJ5Lm1vcnBoQXR0cmlidXRlcy5wb3NpdGlvbix1PSEhaS5nZW9tZXRyeSYmISFpLmdlb21ldHJ5Lm1vcnBoQXR0cmlidXRlcy5ub3JtYWwsaD1ZLmdldChuKSxkPXAuc3RhdGUubGlnaHRzO2lmKCEwPT09eiYmKCEwPT09RHx8dCE9PXcpKXtydC5zZXRTdGF0ZShuLHQsdD09PXcmJm4uaWQ9PT14KX1sZXQgZj0hMTtuLnZlcnNpb249PT1oLl9fdmVyc2lvbj9oLm5lZWRzTGlnaHRzJiZoLmxpZ2h0c1N0YXRlVmVyc2lvbiE9PWQuc3RhdGUudmVyc2lvbnx8aC5vdXRwdXRFbmNvZGluZyE9PW98fGkuaXNJbnN0YW5jZWRNZXNoJiYhMT09PWguaW5zdGFuY2luZz9mPSEwOmkuaXNJbnN0YW5jZWRNZXNofHwhMCE9PWguaW5zdGFuY2luZz9pLmlzU2tpbm5lZE1lc2gmJiExPT09aC5za2lubmluZz9mPSEwOmkuaXNTa2lubmVkTWVzaHx8ITAhPT1oLnNraW5uaW5nP2guZW52TWFwIT09YXx8bi5mb2cmJmguZm9nIT09cj9mPSEwOnZvaWQgMD09PWgubnVtQ2xpcHBpbmdQbGFuZXN8fGgubnVtQ2xpcHBpbmdQbGFuZXM9PT1ydC5udW1QbGFuZXMmJmgubnVtSW50ZXJzZWN0aW9uPT09cnQubnVtSW50ZXJzZWN0aW9uPyhoLnZlcnRleEFscGhhcyE9PXN8fGgudmVydGV4VGFuZ2VudHMhPT1sfHxoLm1vcnBoVGFyZ2V0cyE9PWN8fGgubW9ycGhOb3JtYWxzIT09dSkmJihmPSEwKTpmPSEwOmY9ITA6Zj0hMDooZj0hMCxoLl9fdmVyc2lvbj1uLnZlcnNpb24pO2xldCBtPWguY3VycmVudFByb2dyYW07ITA9PT1mJiYobT1UdChuLGUsaSkpO2xldCBfPSExLHk9ITEsdj0hMTtjb25zdCBTPW0uZ2V0VW5pZm9ybXMoKSxNPWgudW5pZm9ybXM7aWYoVy51c2VQcm9ncmFtKG0ucHJvZ3JhbSkmJihfPSEwLHk9ITAsdj0hMCksbi5pZCE9PXgmJih4PW4uaWQseT0hMCksX3x8dyE9PXQpe2lmKFMuc2V0VmFsdWUoZHQsInByb2plY3Rpb25NYXRyaXgiLHQucHJvamVjdGlvbk1hdHJpeCksRy5sb2dhcml0aG1pY0RlcHRoQnVmZmVyJiZTLnNldFZhbHVlKGR0LCJsb2dEZXB0aEJ1ZkZDIiwyLyhNYXRoLmxvZyh0LmZhcisxKS9NYXRoLkxOMikpLHchPT10JiYodz10LHk9ITAsdj0hMCksbi5pc1NoYWRlck1hdGVyaWFsfHxuLmlzTWVzaFBob25nTWF0ZXJpYWx8fG4uaXNNZXNoVG9vbk1hdGVyaWFsfHxuLmlzTWVzaFN0YW5kYXJkTWF0ZXJpYWx8fG4uZW52TWFwKXtjb25zdCBlPVMubWFwLmNhbWVyYVBvc2l0aW9uO3ZvaWQgMCE9PWUmJmUuc2V0VmFsdWUoZHQsRi5zZXRGcm9tTWF0cml4UG9zaXRpb24odC5tYXRyaXhXb3JsZCkpfShuLmlzTWVzaFBob25nTWF0ZXJpYWx8fG4uaXNNZXNoVG9vbk1hdGVyaWFsfHxuLmlzTWVzaExhbWJlcnRNYXRlcmlhbHx8bi5pc01lc2hCYXNpY01hdGVyaWFsfHxuLmlzTWVzaFN0YW5kYXJkTWF0ZXJpYWx8fG4uaXNTaGFkZXJNYXRlcmlhbCkmJlMuc2V0VmFsdWUoZHQsImlzT3J0aG9ncmFwaGljIiwhMD09PXQuaXNPcnRob2dyYXBoaWNDYW1lcmEpLChuLmlzTWVzaFBob25nTWF0ZXJpYWx8fG4uaXNNZXNoVG9vbk1hdGVyaWFsfHxuLmlzTWVzaExhbWJlcnRNYXRlcmlhbHx8bi5pc01lc2hCYXNpY01hdGVyaWFsfHxuLmlzTWVzaFN0YW5kYXJkTWF0ZXJpYWx8fG4uaXNTaGFkZXJNYXRlcmlhbHx8bi5pc1NoYWRvd01hdGVyaWFsfHxpLmlzU2tpbm5lZE1lc2gpJiZTLnNldFZhbHVlKGR0LCJ2aWV3TWF0cml4Iix0Lm1hdHJpeFdvcmxkSW52ZXJzZSl9aWYoaS5pc1NraW5uZWRNZXNoKXtTLnNldE9wdGlvbmFsKGR0LGksImJpbmRNYXRyaXgiKSxTLnNldE9wdGlvbmFsKGR0LGksImJpbmRNYXRyaXhJbnZlcnNlIik7Y29uc3QgdD1pLnNrZWxldG9uO3QmJihHLmZsb2F0VmVydGV4VGV4dHVyZXM/KG51bGw9PT10LmJvbmVUZXh0dXJlJiZ0LmNvbXB1dGVCb25lVGV4dHVyZSgpLFMuc2V0VmFsdWUoZHQsImJvbmVUZXh0dXJlIix0LmJvbmVUZXh0dXJlLFgpLFMuc2V0VmFsdWUoZHQsImJvbmVUZXh0dXJlU2l6ZSIsdC5ib25lVGV4dHVyZVNpemUpKTpTLnNldE9wdGlvbmFsKGR0LHQsImJvbmVNYXRyaWNlcyIpKX1yZXR1cm4oeXx8aC5yZWNlaXZlU2hhZG93IT09aS5yZWNlaXZlU2hhZG93KSYmKGgucmVjZWl2ZVNoYWRvdz1pLnJlY2VpdmVTaGFkb3csUy5zZXRWYWx1ZShkdCwicmVjZWl2ZVNoYWRvdyIsaS5yZWNlaXZlU2hhZG93KSkseSYmKFMuc2V0VmFsdWUoZHQsInRvbmVNYXBwaW5nRXhwb3N1cmUiLGcudG9uZU1hcHBpbmdFeHBvc3VyZSksaC5uZWVkc0xpZ2h0cyYmKGZ1bmN0aW9uIEUodCxlKXt0LmFtYmllbnRMaWdodENvbG9yLm5lZWRzVXBkYXRlPWUsdC5saWdodFByb2JlLm5lZWRzVXBkYXRlPWUsdC5kaXJlY3Rpb25hbExpZ2h0cy5uZWVkc1VwZGF0ZT1lLHQuZGlyZWN0aW9uYWxMaWdodFNoYWRvd3MubmVlZHNVcGRhdGU9ZSx0LnBvaW50TGlnaHRzLm5lZWRzVXBkYXRlPWUsdC5wb2ludExpZ2h0U2hhZG93cy5uZWVkc1VwZGF0ZT1lLHQuc3BvdExpZ2h0cy5uZWVkc1VwZGF0ZT1lLHQuc3BvdExpZ2h0U2hhZG93cy5uZWVkc1VwZGF0ZT1lLHQucmVjdEFyZWFMaWdodHMubmVlZHNVcGRhdGU9ZSx0LmhlbWlzcGhlcmVMaWdodHMubmVlZHNVcGRhdGU9ZX0pKE0sdiksciYmbi5mb2cmJmV0LnJlZnJlc2hGb2dVbmlmb3JtcyhNLHIpLGV0LnJlZnJlc2hNYXRlcmlhbFVuaWZvcm1zKE0sbixBLEMsQiksZjh0LnVwbG9hZChkdCxoLnVuaWZvcm1zTGlzdCxNLFgpKSxuLmlzU2hhZGVyTWF0ZXJpYWwmJiEwPT09bi51bmlmb3Jtc05lZWRVcGRhdGUmJihmOHQudXBsb2FkKGR0LGgudW5pZm9ybXNMaXN0LE0sWCksbi51bmlmb3Jtc05lZWRVcGRhdGU9ITEpLG4uaXNTcHJpdGVNYXRlcmlhbCYmUy5zZXRWYWx1ZShkdCwiY2VudGVyIixpLmNlbnRlciksUy5zZXRWYWx1ZShkdCwibW9kZWxWaWV3TWF0cml4IixpLm1vZGVsVmlld01hdHJpeCksUy5zZXRWYWx1ZShkdCwibm9ybWFsTWF0cml4IixpLm5vcm1hbE1hdHJpeCksUy5zZXRWYWx1ZShkdCwibW9kZWxNYXRyaXgiLGkubWF0cml4V29ybGQpLG19d3Quc2V0QW5pbWF0aW9uTG9vcCgoZnVuY3Rpb24ga3QodCl7dnQmJnZ0KHQpfSkpLCJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93JiZ3dC5zZXRDb250ZXh0KHdpbmRvdyksdGhpcy5zZXRBbmltYXRpb25Mb29wPWZ1bmN0aW9uKHQpe3Z0PXQsbXQuc2V0QW5pbWF0aW9uTG9vcCh0KSxudWxsPT09dD93dC5zdG9wKCk6d3Quc3RhcnQoKX0sbXQuYWRkRXZlbnRMaXN0ZW5lcigic2Vzc2lvbnN0YXJ0IixidCksbXQuYWRkRXZlbnRMaXN0ZW5lcigic2Vzc2lvbmVuZCIseHQpLHRoaXMucmVuZGVyPWZ1bmN0aW9uKHQsZSl7aWYodm9pZCAwIT09ZSYmITAhPT1lLmlzQ2FtZXJhKXJldHVybiB2b2lkIGNvbnNvbGUuZXJyb3IoIlRIUkVFLldlYkdMUmVuZGVyZXIucmVuZGVyOiBjYW1lcmEgaXMgbm90IGFuIGluc3RhbmNlIG9mIFRIUkVFLkNhbWVyYS4iKTtpZighMD09PV8pcmV0dXJuOyEwPT09dC5hdXRvVXBkYXRlJiZ0LnVwZGF0ZU1hdHJpeFdvcmxkKCksbnVsbD09PWUucGFyZW50JiZlLnVwZGF0ZU1hdHJpeFdvcmxkKCksITA9PT1tdC5lbmFibGVkJiYhMD09PW10LmlzUHJlc2VudGluZyYmKCEwPT09bXQuY2FtZXJhQXV0b1VwZGF0ZSYmbXQudXBkYXRlQ2FtZXJhKGUpLGU9bXQuZ2V0Q2FtZXJhKCkpLCEwPT09dC5pc1NjZW5lJiZ0Lm9uQmVmb3JlUmVuZGVyKGcsdCxlLGIpLHA9aXQuZ2V0KHQsbS5sZW5ndGgpLHAuaW5pdCgpLG0ucHVzaChwKSxILm11bHRpcGx5TWF0cmljZXMoZS5wcm9qZWN0aW9uTWF0cml4LGUubWF0cml4V29ybGRJbnZlcnNlKSxPLnNldEZyb21Qcm9qZWN0aW9uTWF0cml4KEgpLEQ9dGhpcy5sb2NhbENsaXBwaW5nRW5hYmxlZCx6PXJ0LmluaXQodGhpcy5jbGlwcGluZ1BsYW5lcyxELGUpLGQ9bnQuZ2V0KHQsZi5sZW5ndGgpLGQuaW5pdCgpLGYucHVzaChkKSxTdCh0LGUsMCxnLnNvcnRPYmplY3RzKSxkLmZpbmlzaCgpLCEwPT09Zy5zb3J0T2JqZWN0cyYmZC5zb3J0KGssTCksITA9PT16JiZydC5iZWdpblNoYWRvd3MoKTtvdC5yZW5kZXIocC5zdGF0ZS5zaGFkb3dzQXJyYXksdCxlKSxwLnNldHVwTGlnaHRzKCkscC5zZXR1cExpZ2h0c1ZpZXcoZSksITA9PT16JiZydC5lbmRTaGFkb3dzKCksITA9PT10aGlzLmluZm8uYXV0b1Jlc2V0JiZ0aGlzLmluZm8ucmVzZXQoKSxhdC5yZW5kZXIoZCx0KTtjb25zdCBuPWQub3BhcXVlLGk9ZC50cmFuc21pc3NpdmUscj1kLnRyYW5zcGFyZW50O24ubGVuZ3RoPjAmJk10KG4sdCxlKSxpLmxlbmd0aD4wJiYoZnVuY3Rpb24gbyh0LGUsbixpKXtpZihudWxsPT09Qil7Qj1uZXcoITA9PT1zJiYhMD09PUcuaXNXZWJHTDI/RDV0Ok81dCkoMTAyNCwxMDI0LHtnZW5lcmF0ZU1pcG1hcHM6ITAsdHlwZTpudWxsIT09dXQuY29udmVydChiMnQpP2IydDpnMnQsbWluRmlsdGVyOm0ydCxtYWdGaWx0ZXI6dTJ0LHdyYXBTOmwydCx3cmFwVDpsMnR9KX1jb25zdCByPWcuZ2V0UmVuZGVyVGFyZ2V0KCk7Zy5zZXRSZW5kZXJUYXJnZXQoQiksZy5jbGVhcigpO2NvbnN0IG89Zy50b25lTWFwcGluZztnLnRvbmVNYXBwaW5nPTAsTXQodCxuLGkpLGcudG9uZU1hcHBpbmc9byxYLnVwZGF0ZU11bHRpc2FtcGxlUmVuZGVyVGFyZ2V0KEIpLFgudXBkYXRlUmVuZGVyVGFyZ2V0TWlwbWFwKEIpLGcuc2V0UmVuZGVyVGFyZ2V0KHIpLE10KGUsbixpKX0pKG4saSx0LGUpLHIubGVuZ3RoPjAmJk10KHIsdCxlKSxudWxsIT09YiYmKFgudXBkYXRlTXVsdGlzYW1wbGVSZW5kZXJUYXJnZXQoYiksWC51cGRhdGVSZW5kZXJUYXJnZXRNaXBtYXAoYikpLCEwPT09dC5pc1NjZW5lJiZ0Lm9uQWZ0ZXJSZW5kZXIoZyx0LGUpLFcuYnVmZmVycy5kZXB0aC5zZXRUZXN0KCEwKSxXLmJ1ZmZlcnMuZGVwdGguc2V0TWFzayghMCksVy5idWZmZXJzLmNvbG9yLnNldE1hc2soITApLFcuc2V0UG9seWdvbk9mZnNldCghMSksaHQucmVzZXREZWZhdWx0U3RhdGUoKSx4PS0xLHc9bnVsbCxtLnBvcCgpLHA9bS5sZW5ndGg+MD9tW20ubGVuZ3RoLTFdOm51bGwsZi5wb3AoKSxkPWYubGVuZ3RoPjA/ZltmLmxlbmd0aC0xXTpudWxsfSx0aGlzLmdldEFjdGl2ZUN1YmVGYWNlPWZ1bmN0aW9uKCl7cmV0dXJuIHl9LHRoaXMuZ2V0QWN0aXZlTWlwbWFwTGV2ZWw9ZnVuY3Rpb24oKXtyZXR1cm4gdn0sdGhpcy5nZXRSZW5kZXJUYXJnZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gYn0sdGhpcy5zZXRSZW5kZXJUYXJnZXQ9ZnVuY3Rpb24odCxlPTAsbj0wKXtiPXQseT1lLHY9bix0JiZ2b2lkIDA9PT1ZLmdldCh0KS5fX3dlYmdsRnJhbWVidWZmZXImJlguc2V0dXBSZW5kZXJUYXJnZXQodCk7bGV0IGk9bnVsbCxyPSExLG89ITE7aWYodCl7Y29uc3Qgbj10LnRleHR1cmU7KG4uaXNEYXRhVGV4dHVyZTNEfHxuLmlzRGF0YVRleHR1cmUyREFycmF5KSYmKG89ITApO2NvbnN0IGE9WS5nZXQodCkuX193ZWJnbEZyYW1lYnVmZmVyO3QuaXNXZWJHTEN1YmVSZW5kZXJUYXJnZXQ/KGk9YVtlXSxyPSEwKTppPXQuaXNXZWJHTE11bHRpc2FtcGxlUmVuZGVyVGFyZ2V0P1kuZ2V0KHQpLl9fd2ViZ2xNdWx0aXNhbXBsZWRGcmFtZWJ1ZmZlcjphLFMuY29weSh0LnZpZXdwb3J0KSxNLmNvcHkodC5zY2lzc29yKSxFPXQuc2Npc3NvclRlc3R9ZWxzZSBTLmNvcHkoUCkubXVsdGlwbHlTY2FsYXIoQSkuZmxvb3IoKSxNLmNvcHkoTikubXVsdGlwbHlTY2FsYXIoQSkuZmxvb3IoKSxFPUk7aWYoVy5iaW5kRnJhbWVidWZmZXIoMzYxNjAsaSkmJkcuZHJhd0J1ZmZlcnMpe2xldCBlPSExO2lmKHQpaWYodC5pc1dlYkdMTXVsdGlwbGVSZW5kZXJUYXJnZXRzKXtjb25zdCBuPXQudGV4dHVyZTtpZihSLmxlbmd0aCE9PW4ubGVuZ3RofHwzNjA2NCE9PVJbMF0pe2ZvcihsZXQgdD0wLGU9bi5sZW5ndGg7dDxlO3QrKylSW3RdPTM2MDY0K3Q7Ui5sZW5ndGg9bi5sZW5ndGgsZT0hMH19ZWxzZSAxPT09Ui5sZW5ndGgmJjM2MDY0PT09UlswXXx8KFJbMF09MzYwNjQsUi5sZW5ndGg9MSxlPSEwKTtlbHNlIDE9PT1SLmxlbmd0aCYmMTAyOT09PVJbMF18fChSWzBdPTEwMjksUi5sZW5ndGg9MSxlPSEwKTtlJiYoRy5pc1dlYkdMMj9kdC5kcmF3QnVmZmVycyhSKTpqLmdldCgiV0VCR0xfZHJhd19idWZmZXJzIikuZHJhd0J1ZmZlcnNXRUJHTChSKSl9aWYoVy52aWV3cG9ydChTKSxXLnNjaXNzb3IoTSksVy5zZXRTY2lzc29yVGVzdChFKSxyKXtjb25zdCBpPVkuZ2V0KHQudGV4dHVyZSk7ZHQuZnJhbWVidWZmZXJUZXh0dXJlMkQoMzYxNjAsMzYwNjQsMzQwNjkrZSxpLl9fd2ViZ2xUZXh0dXJlLG4pfWVsc2UgaWYobyl7Y29uc3QgaT1ZLmdldCh0LnRleHR1cmUpO2R0LmZyYW1lYnVmZmVyVGV4dHVyZUxheWVyKDM2MTYwLDM2MDY0LGkuX193ZWJnbFRleHR1cmUsbnx8MCxlfHwwKX19LHRoaXMucmVhZFJlbmRlclRhcmdldFBpeGVscz1mdW5jdGlvbih0LGUsbixpLHIsbyxhKXtpZighdHx8IXQuaXNXZWJHTFJlbmRlclRhcmdldClyZXR1cm4gdm9pZCBjb25zb2xlLmVycm9yKCJUSFJFRS5XZWJHTFJlbmRlcmVyLnJlYWRSZW5kZXJUYXJnZXRQaXhlbHM6IHJlbmRlclRhcmdldCBpcyBub3QgVEhSRUUuV2ViR0xSZW5kZXJUYXJnZXQuIik7bGV0IHM9WS5nZXQodCkuX193ZWJnbEZyYW1lYnVmZmVyO2lmKHQuaXNXZWJHTEN1YmVSZW5kZXJUYXJnZXQmJnZvaWQgMCE9PWEmJihzPXNbYV0pLHMpe1cuYmluZEZyYW1lYnVmZmVyKDM2MTYwLHMpO3RyeXtjb25zdCBhPXQudGV4dHVyZSxzPWEuZm9ybWF0LGw9YS50eXBlO2lmKHMhPT1TMnQmJnV0LmNvbnZlcnQocykhPT1kdC5nZXRQYXJhbWV0ZXIoMzU3MzkpKXJldHVybiB2b2lkIGNvbnNvbGUuZXJyb3IoIlRIUkVFLldlYkdMUmVuZGVyZXIucmVhZFJlbmRlclRhcmdldFBpeGVsczogcmVuZGVyVGFyZ2V0IGlzIG5vdCBpbiBSR0JBIG9yIGltcGxlbWVudGF0aW9uIGRlZmluZWQgZm9ybWF0LiIpO2NvbnN0IGM9bD09PWIydCYmKGouaGFzKCJFWFRfY29sb3JfYnVmZmVyX2hhbGZfZmxvYXQiKXx8Ry5pc1dlYkdMMiYmai5oYXMoIkVYVF9jb2xvcl9idWZmZXJfZmxvYXQiKSk7aWYoIShsPT09ZzJ0fHx1dC5jb252ZXJ0KGwpPT09ZHQuZ2V0UGFyYW1ldGVyKDM1NzM4KXx8bD09PXYydCYmKEcuaXNXZWJHTDJ8fGouaGFzKCJPRVNfdGV4dHVyZV9mbG9hdCIpfHxqLmhhcygiV0VCR0xfY29sb3JfYnVmZmVyX2Zsb2F0IikpfHxjKSlyZXR1cm4gdm9pZCBjb25zb2xlLmVycm9yKCJUSFJFRS5XZWJHTFJlbmRlcmVyLnJlYWRSZW5kZXJUYXJnZXRQaXhlbHM6IHJlbmRlclRhcmdldCBpcyBub3QgaW4gVW5zaWduZWRCeXRlVHlwZSBvciBpbXBsZW1lbnRhdGlvbiBkZWZpbmVkIHR5cGUuIik7MzYwNTM9PT1kdC5jaGVja0ZyYW1lYnVmZmVyU3RhdHVzKDM2MTYwKT9lPj0wJiZlPD10LndpZHRoLWkmJm4+PTAmJm48PXQuaGVpZ2h0LXImJmR0LnJlYWRQaXhlbHMoZSxuLGkscix1dC5jb252ZXJ0KHMpLHV0LmNvbnZlcnQobCksbyk6Y29uc29sZS5lcnJvcigiVEhSRUUuV2ViR0xSZW5kZXJlci5yZWFkUmVuZGVyVGFyZ2V0UGl4ZWxzOiByZWFkUGl4ZWxzIGZyb20gcmVuZGVyVGFyZ2V0IGZhaWxlZC4gRnJhbWVidWZmZXIgbm90IGNvbXBsZXRlLiIpfWZpbmFsbHl7Y29uc3QgdD1udWxsIT09Yj9ZLmdldChiKS5fX3dlYmdsRnJhbWVidWZmZXI6bnVsbDtXLmJpbmRGcmFtZWJ1ZmZlcigzNjE2MCx0KX19fSx0aGlzLmNvcHlGcmFtZWJ1ZmZlclRvVGV4dHVyZT1mdW5jdGlvbih0LGUsbj0wKXtjb25zdCBpPU1hdGgucG93KDIsLW4pLHI9TWF0aC5mbG9vcihlLmltYWdlLndpZHRoKmkpLG89TWF0aC5mbG9vcihlLmltYWdlLmhlaWdodCppKTtsZXQgYT11dC5jb252ZXJ0KGUuZm9ybWF0KTtHLmlzV2ViR0wyJiYoNjQwNz09PWEmJihhPTMyODQ5KSw2NDA4PT09YSYmKGE9MzI4NTYpKSxYLnNldFRleHR1cmUyRChlLDApLGR0LmNvcHlUZXhJbWFnZTJEKDM1NTMsbixhLHQueCx0LnkscixvLDApLFcudW5iaW5kVGV4dHVyZSgpfSx0aGlzLmNvcHlUZXh0dXJlVG9UZXh0dXJlPWZ1bmN0aW9uKHQsZSxuLGk9MCl7Y29uc3Qgcj1lLmltYWdlLndpZHRoLG89ZS5pbWFnZS5oZWlnaHQsYT11dC5jb252ZXJ0KG4uZm9ybWF0KSxzPXV0LmNvbnZlcnQobi50eXBlKTtYLnNldFRleHR1cmUyRChuLDApLGR0LnBpeGVsU3RvcmVpKDM3NDQwLG4uZmxpcFkpLGR0LnBpeGVsU3RvcmVpKDM3NDQxLG4ucHJlbXVsdGlwbHlBbHBoYSksZHQucGl4ZWxTdG9yZWkoMzMxNyxuLnVucGFja0FsaWdubWVudCksZS5pc0RhdGFUZXh0dXJlP2R0LnRleFN1YkltYWdlMkQoMzU1MyxpLHQueCx0LnkscixvLGEscyxlLmltYWdlLmRhdGEpOmUuaXNDb21wcmVzc2VkVGV4dHVyZT9kdC5jb21wcmVzc2VkVGV4U3ViSW1hZ2UyRCgzNTUzLGksdC54LHQueSxlLm1pcG1hcHNbMF0ud2lkdGgsZS5taXBtYXBzWzBdLmhlaWdodCxhLGUubWlwbWFwc1swXS5kYXRhKTpkdC50ZXhTdWJJbWFnZTJEKDM1NTMsaSx0LngsdC55LGEscyxlLmltYWdlKSwwPT09aSYmbi5nZW5lcmF0ZU1pcG1hcHMmJmR0LmdlbmVyYXRlTWlwbWFwKDM1NTMpLFcudW5iaW5kVGV4dHVyZSgpfSx0aGlzLmNvcHlUZXh0dXJlVG9UZXh0dXJlM0Q9ZnVuY3Rpb24odCxlLG4saSxyPTApe2lmKGcuaXNXZWJHTDFSZW5kZXJlcilyZXR1cm4gdm9pZCBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXIuY29weVRleHR1cmVUb1RleHR1cmUzRDogY2FuIG9ubHkgYmUgdXNlZCB3aXRoIFdlYkdMMi4iKTtjb25zdCBvPXQubWF4LngtdC5taW4ueCsxLGE9dC5tYXgueS10Lm1pbi55KzEscz10Lm1heC56LXQubWluLnorMSxsPXV0LmNvbnZlcnQoaS5mb3JtYXQpLGM9dXQuY29udmVydChpLnR5cGUpO2xldCB1O2lmKGkuaXNEYXRhVGV4dHVyZTNEKVguc2V0VGV4dHVyZTNEKGksMCksdT0zMjg3OTtlbHNle2lmKCFpLmlzRGF0YVRleHR1cmUyREFycmF5KXJldHVybiB2b2lkIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlci5jb3B5VGV4dHVyZVRvVGV4dHVyZTNEOiBvbmx5IHN1cHBvcnRzIFRIUkVFLkRhdGFUZXh0dXJlM0QgYW5kIFRIUkVFLkRhdGFUZXh0dXJlMkRBcnJheS4iKTtYLnNldFRleHR1cmUyREFycmF5KGksMCksdT0zNTg2Nn1kdC5waXhlbFN0b3JlaSgzNzQ0MCxpLmZsaXBZKSxkdC5waXhlbFN0b3JlaSgzNzQ0MSxpLnByZW11bHRpcGx5QWxwaGEpLGR0LnBpeGVsU3RvcmVpKDMzMTcsaS51bnBhY2tBbGlnbm1lbnQpO2NvbnN0IGg9ZHQuZ2V0UGFyYW1ldGVyKDMzMTQpLGQ9ZHQuZ2V0UGFyYW1ldGVyKDMyODc4KSxwPWR0LmdldFBhcmFtZXRlcigzMzE2KSxmPWR0LmdldFBhcmFtZXRlcigzMzE1KSxtPWR0LmdldFBhcmFtZXRlcigzMjg3NyksXz1uLmlzQ29tcHJlc3NlZFRleHR1cmU/bi5taXBtYXBzWzBdOm4uaW1hZ2U7ZHQucGl4ZWxTdG9yZWkoMzMxNCxfLndpZHRoKSxkdC5waXhlbFN0b3JlaSgzMjg3OCxfLmhlaWdodCksZHQucGl4ZWxTdG9yZWkoMzMxNix0Lm1pbi54KSxkdC5waXhlbFN0b3JlaSgzMzE1LHQubWluLnkpLGR0LnBpeGVsU3RvcmVpKDMyODc3LHQubWluLnopLG4uaXNEYXRhVGV4dHVyZXx8bi5pc0RhdGFUZXh0dXJlM0Q/ZHQudGV4U3ViSW1hZ2UzRCh1LHIsZS54LGUueSxlLnosbyxhLHMsbCxjLF8uZGF0YSk6bi5pc0NvbXByZXNzZWRUZXh0dXJlPyhjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXIuY29weVRleHR1cmVUb1RleHR1cmUzRDogdW50ZXN0ZWQgc3VwcG9ydCBmb3IgY29tcHJlc3NlZCBzcmNUZXh0dXJlLiIpLGR0LmNvbXByZXNzZWRUZXhTdWJJbWFnZTNEKHUscixlLngsZS55LGUueixvLGEscyxsLF8uZGF0YSkpOmR0LnRleFN1YkltYWdlM0QodSxyLGUueCxlLnksZS56LG8sYSxzLGwsYyxfKSxkdC5waXhlbFN0b3JlaSgzMzE0LGgpLGR0LnBpeGVsU3RvcmVpKDMyODc4LGQpLGR0LnBpeGVsU3RvcmVpKDMzMTYscCksZHQucGl4ZWxTdG9yZWkoMzMxNSxmKSxkdC5waXhlbFN0b3JlaSgzMjg3NyxtKSwwPT09ciYmaS5nZW5lcmF0ZU1pcG1hcHMmJmR0LmdlbmVyYXRlTWlwbWFwKHUpLFcudW5iaW5kVGV4dHVyZSgpfSx0aGlzLmluaXRUZXh0dXJlPWZ1bmN0aW9uKHQpe1guc2V0VGV4dHVyZTJEKHQsMCksVy51bmJpbmRUZXh0dXJlKCl9LHRoaXMucmVzZXRTdGF0ZT1mdW5jdGlvbigpe3k9MCx2PTAsYj1udWxsLFcucmVzZXQoKSxodC5yZXNldCgpfSwidW5kZWZpbmVkIiE9dHlwZW9mIF9fVEhSRUVfREVWVE9PTFNfXyYmX19USFJFRV9ERVZUT09MU19fLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJvYnNlcnZlIix7ZGV0YWlsOnRoaXN9KSl9Y2xhc3MgYTd0IGV4dGVuZHMgbzd0e31hN3QucHJvdG90eXBlLmlzV2ViR0wxUmVuZGVyZXI9ITA7Y2xhc3Mgczd0e2NvbnN0cnVjdG9yKHQsZT0yNWUtNSl7dGhpcy5uYW1lPSIiLHRoaXMuY29sb3I9bmV3IHM0dCh0KSx0aGlzLmRlbnNpdHk9ZX1jbG9uZSgpe3JldHVybiBuZXcgczd0KHRoaXMuY29sb3IsdGhpcy5kZW5zaXR5KX10b0pTT04oKXtyZXR1cm57dHlwZToiRm9nRXhwMiIsY29sb3I6dGhpcy5jb2xvci5nZXRIZXgoKSxkZW5zaXR5OnRoaXMuZGVuc2l0eX19fXM3dC5wcm90b3R5cGUuaXNGb2dFeHAyPSEwO2NsYXNzIGw3dHtjb25zdHJ1Y3Rvcih0LGU9MSxuPTFlMyl7dGhpcy5uYW1lPSIiLHRoaXMuY29sb3I9bmV3IHM0dCh0KSx0aGlzLm5lYXI9ZSx0aGlzLmZhcj1ufWNsb25lKCl7cmV0dXJuIG5ldyBsN3QodGhpcy5jb2xvcix0aGlzLm5lYXIsdGhpcy5mYXIpfXRvSlNPTigpe3JldHVybnt0eXBlOiJGb2ciLGNvbG9yOnRoaXMuY29sb3IuZ2V0SGV4KCksbmVhcjp0aGlzLm5lYXIsZmFyOnRoaXMuZmFyfX19bDd0LnByb3RvdHlwZS5pc0ZvZz0hMDtjbGFzcyBjN3QgZXh0ZW5kcyBWM3R7Y29uc3RydWN0b3IoKXtzdXBlcigpLHRoaXMudHlwZT0iU2NlbmUiLHRoaXMuYmFja2dyb3VuZD1udWxsLHRoaXMuZW52aXJvbm1lbnQ9bnVsbCx0aGlzLmZvZz1udWxsLHRoaXMub3ZlcnJpZGVNYXRlcmlhbD1udWxsLHRoaXMuYXV0b1VwZGF0ZT0hMCwidW5kZWZpbmVkIiE9dHlwZW9mIF9fVEhSRUVfREVWVE9PTFNfXyYmX19USFJFRV9ERVZUT09MU19fLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJvYnNlcnZlIix7ZGV0YWlsOnRoaXN9KSl9Y29weSh0LGUpe3JldHVybiBzdXBlci5jb3B5KHQsZSksbnVsbCE9PXQuYmFja2dyb3VuZCYmKHRoaXMuYmFja2dyb3VuZD10LmJhY2tncm91bmQuY2xvbmUoKSksbnVsbCE9PXQuZW52aXJvbm1lbnQmJih0aGlzLmVudmlyb25tZW50PXQuZW52aXJvbm1lbnQuY2xvbmUoKSksbnVsbCE9PXQuZm9nJiYodGhpcy5mb2c9dC5mb2cuY2xvbmUoKSksbnVsbCE9PXQub3ZlcnJpZGVNYXRlcmlhbCYmKHRoaXMub3ZlcnJpZGVNYXRlcmlhbD10Lm92ZXJyaWRlTWF0ZXJpYWwuY2xvbmUoKSksdGhpcy5hdXRvVXBkYXRlPXQuYXV0b1VwZGF0ZSx0aGlzLm1hdHJpeEF1dG9VcGRhdGU9dC5tYXRyaXhBdXRvVXBkYXRlLHRoaXN9dG9KU09OKHQpe2NvbnN0IGU9c3VwZXIudG9KU09OKHQpO3JldHVybiBudWxsIT09dGhpcy5mb2cmJihlLm9iamVjdC5mb2c9dGhpcy5mb2cudG9KU09OKCkpLGV9fWM3dC5wcm90b3R5cGUuaXNTY2VuZT0hMDtjbGFzcyB1N3R7Y29uc3RydWN0b3IodCxlKXt0aGlzLmFycmF5PXQsdGhpcy5zdHJpZGU9ZSx0aGlzLmNvdW50PXZvaWQgMCE9PXQ/dC5sZW5ndGgvZTowLHRoaXMudXNhZ2U9SjJ0LHRoaXMudXBkYXRlUmFuZ2U9e29mZnNldDowLGNvdW50Oi0xfSx0aGlzLnZlcnNpb249MCx0aGlzLnV1aWQ9YTV0KCl9b25VcGxvYWRDYWxsYmFjaygpe31zZXQgbmVlZHNVcGRhdGUodCl7ITA9PT10JiZ0aGlzLnZlcnNpb24rK31zZXRVc2FnZSh0KXtyZXR1cm4gdGhpcy51c2FnZT10LHRoaXN9Y29weSh0KXtyZXR1cm4gdGhpcy5hcnJheT1uZXcgdC5hcnJheS5jb25zdHJ1Y3Rvcih0LmFycmF5KSx0aGlzLmNvdW50PXQuY291bnQsdGhpcy5zdHJpZGU9dC5zdHJpZGUsdGhpcy51c2FnZT10LnVzYWdlLHRoaXN9Y29weUF0KHQsZSxuKXt0Kj10aGlzLnN0cmlkZSxuKj1lLnN0cmlkZTtmb3IobGV0IGk9MCxyPXRoaXMuc3RyaWRlO2k8cjtpKyspdGhpcy5hcnJheVt0K2ldPWUuYXJyYXlbbitpXTtyZXR1cm4gdGhpc31zZXQodCxlPTApe3JldHVybiB0aGlzLmFycmF5LnNldCh0LGUpLHRoaXN9Y2xvbmUodCl7dm9pZCAwPT09dC5hcnJheUJ1ZmZlcnMmJih0LmFycmF5QnVmZmVycz17fSksdm9pZCAwPT09dGhpcy5hcnJheS5idWZmZXIuX3V1aWQmJih0aGlzLmFycmF5LmJ1ZmZlci5fdXVpZD1hNXQoKSksdm9pZCAwPT09dC5hcnJheUJ1ZmZlcnNbdGhpcy5hcnJheS5idWZmZXIuX3V1aWRdJiYodC5hcnJheUJ1ZmZlcnNbdGhpcy5hcnJheS5idWZmZXIuX3V1aWRdPXRoaXMuYXJyYXkuc2xpY2UoMCkuYnVmZmVyKTtjb25zdCBlPW5ldyB0aGlzLmFycmF5LmNvbnN0cnVjdG9yKHQuYXJyYXlCdWZmZXJzW3RoaXMuYXJyYXkuYnVmZmVyLl91dWlkXSksbj1uZXcgdGhpcy5jb25zdHJ1Y3RvcihlLHRoaXMuc3RyaWRlKTtyZXR1cm4gbi5zZXRVc2FnZSh0aGlzLnVzYWdlKSxufW9uVXBsb2FkKHQpe3JldHVybiB0aGlzLm9uVXBsb2FkQ2FsbGJhY2s9dCx0aGlzfXRvSlNPTih0KXtyZXR1cm4gdm9pZCAwPT09dC5hcnJheUJ1ZmZlcnMmJih0LmFycmF5QnVmZmVycz17fSksdm9pZCAwPT09dGhpcy5hcnJheS5idWZmZXIuX3V1aWQmJih0aGlzLmFycmF5LmJ1ZmZlci5fdXVpZD1hNXQoKSksdm9pZCAwPT09dC5hcnJheUJ1ZmZlcnNbdGhpcy5hcnJheS5idWZmZXIuX3V1aWRdJiYodC5hcnJheUJ1ZmZlcnNbdGhpcy5hcnJheS5idWZmZXIuX3V1aWRdPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKG5ldyBVaW50MzJBcnJheSh0aGlzLmFycmF5LmJ1ZmZlcikpKSx7dXVpZDp0aGlzLnV1aWQsYnVmZmVyOnRoaXMuYXJyYXkuYnVmZmVyLl91dWlkLHR5cGU6dGhpcy5hcnJheS5jb25zdHJ1Y3Rvci5uYW1lLHN0cmlkZTp0aGlzLnN0cmlkZX19fXU3dC5wcm90b3R5cGUuaXNJbnRlcmxlYXZlZEJ1ZmZlcj0hMDtjb25zdCBoN3Q9bmV3IEg1dDtjbGFzcyBkN3R7Y29uc3RydWN0b3IodCxlLG4saT0hMSl7dGhpcy5uYW1lPSIiLHRoaXMuZGF0YT10LHRoaXMuaXRlbVNpemU9ZSx0aGlzLm9mZnNldD1uLHRoaXMubm9ybWFsaXplZD0hMD09PWl9Z2V0IGNvdW50KCl7cmV0dXJuIHRoaXMuZGF0YS5jb3VudH1nZXQgYXJyYXkoKXtyZXR1cm4gdGhpcy5kYXRhLmFycmF5fXNldCBuZWVkc1VwZGF0ZSh0KXt0aGlzLmRhdGEubmVlZHNVcGRhdGU9dH1hcHBseU1hdHJpeDQodCl7Zm9yKGxldCBlPTAsbj10aGlzLmRhdGEuY291bnQ7ZTxuO2UrKyloN3QueD10aGlzLmdldFgoZSksaDd0Lnk9dGhpcy5nZXRZKGUpLGg3dC56PXRoaXMuZ2V0WihlKSxoN3QuYXBwbHlNYXRyaXg0KHQpLHRoaXMuc2V0WFlaKGUsaDd0LngsaDd0LnksaDd0LnopO3JldHVybiB0aGlzfWFwcGx5Tm9ybWFsTWF0cml4KHQpe2ZvcihsZXQgZT0wLG49dGhpcy5jb3VudDtlPG47ZSsrKWg3dC54PXRoaXMuZ2V0WChlKSxoN3QueT10aGlzLmdldFkoZSksaDd0Lno9dGhpcy5nZXRaKGUpLGg3dC5hcHBseU5vcm1hbE1hdHJpeCh0KSx0aGlzLnNldFhZWihlLGg3dC54LGg3dC55LGg3dC56KTtyZXR1cm4gdGhpc310cmFuc2Zvcm1EaXJlY3Rpb24odCl7Zm9yKGxldCBlPTAsbj10aGlzLmNvdW50O2U8bjtlKyspaDd0Lng9dGhpcy5nZXRYKGUpLGg3dC55PXRoaXMuZ2V0WShlKSxoN3Quej10aGlzLmdldFooZSksaDd0LnRyYW5zZm9ybURpcmVjdGlvbih0KSx0aGlzLnNldFhZWihlLGg3dC54LGg3dC55LGg3dC56KTtyZXR1cm4gdGhpc31zZXRYKHQsZSl7cmV0dXJuIHRoaXMuZGF0YS5hcnJheVt0KnRoaXMuZGF0YS5zdHJpZGUrdGhpcy5vZmZzZXRdPWUsdGhpc31zZXRZKHQsZSl7cmV0dXJuIHRoaXMuZGF0YS5hcnJheVt0KnRoaXMuZGF0YS5zdHJpZGUrdGhpcy5vZmZzZXQrMV09ZSx0aGlzfXNldFoodCxlKXtyZXR1cm4gdGhpcy5kYXRhLmFycmF5W3QqdGhpcy5kYXRhLnN0cmlkZSt0aGlzLm9mZnNldCsyXT1lLHRoaXN9c2V0Vyh0LGUpe3JldHVybiB0aGlzLmRhdGEuYXJyYXlbdCp0aGlzLmRhdGEuc3RyaWRlK3RoaXMub2Zmc2V0KzNdPWUsdGhpc31nZXRYKHQpe3JldHVybiB0aGlzLmRhdGEuYXJyYXlbdCp0aGlzLmRhdGEuc3RyaWRlK3RoaXMub2Zmc2V0XX1nZXRZKHQpe3JldHVybiB0aGlzLmRhdGEuYXJyYXlbdCp0aGlzLmRhdGEuc3RyaWRlK3RoaXMub2Zmc2V0KzFdfWdldFoodCl7cmV0dXJuIHRoaXMuZGF0YS5hcnJheVt0KnRoaXMuZGF0YS5zdHJpZGUrdGhpcy5vZmZzZXQrMl19Z2V0Vyh0KXtyZXR1cm4gdGhpcy5kYXRhLmFycmF5W3QqdGhpcy5kYXRhLnN0cmlkZSt0aGlzLm9mZnNldCszXX1zZXRYWSh0LGUsbil7cmV0dXJuIHRoaXMuZGF0YS5hcnJheVsodD10KnRoaXMuZGF0YS5zdHJpZGUrdGhpcy5vZmZzZXQpKzBdPWUsdGhpcy5kYXRhLmFycmF5W3QrMV09bix0aGlzfXNldFhZWih0LGUsbixpKXtyZXR1cm4gdGhpcy5kYXRhLmFycmF5Wyh0PXQqdGhpcy5kYXRhLnN0cmlkZSt0aGlzLm9mZnNldCkrMF09ZSx0aGlzLmRhdGEuYXJyYXlbdCsxXT1uLHRoaXMuZGF0YS5hcnJheVt0KzJdPWksdGhpc31zZXRYWVpXKHQsZSxuLGkscil7cmV0dXJuIHRoaXMuZGF0YS5hcnJheVsodD10KnRoaXMuZGF0YS5zdHJpZGUrdGhpcy5vZmZzZXQpKzBdPWUsdGhpcy5kYXRhLmFycmF5W3QrMV09bix0aGlzLmRhdGEuYXJyYXlbdCsyXT1pLHRoaXMuZGF0YS5hcnJheVt0KzNdPXIsdGhpc31jbG9uZSh0KXtpZih2b2lkIDA9PT10KXtjb25zb2xlLmxvZygiVEhSRUUuSW50ZXJsZWF2ZWRCdWZmZXJBdHRyaWJ1dGUuY2xvbmUoKTogQ2xvbmluZyBhbiBpbnRlcmxhdmVkIGJ1ZmZlciBhdHRyaWJ1dGUgd2lsbCBkZWludGVybGVhdmUgYnVmZmVyIGRhdGEuIik7Y29uc3QgdD1bXTtmb3IobGV0IGU9MDtlPHRoaXMuY291bnQ7ZSsrKXtjb25zdCBuPWUqdGhpcy5kYXRhLnN0cmlkZSt0aGlzLm9mZnNldDtmb3IobGV0IGU9MDtlPHRoaXMuaXRlbVNpemU7ZSsrKXQucHVzaCh0aGlzLmRhdGEuYXJyYXlbbitlXSl9cmV0dXJuIG5ldyBoNHQobmV3IHRoaXMuYXJyYXkuY29uc3RydWN0b3IodCksdGhpcy5pdGVtU2l6ZSx0aGlzLm5vcm1hbGl6ZWQpfXJldHVybiB2b2lkIDA9PT10LmludGVybGVhdmVkQnVmZmVycyYmKHQuaW50ZXJsZWF2ZWRCdWZmZXJzPXt9KSx2b2lkIDA9PT10LmludGVybGVhdmVkQnVmZmVyc1t0aGlzLmRhdGEudXVpZF0mJih0LmludGVybGVhdmVkQnVmZmVyc1t0aGlzLmRhdGEudXVpZF09dGhpcy5kYXRhLmNsb25lKHQpKSxuZXcgZDd0KHQuaW50ZXJsZWF2ZWRCdWZmZXJzW3RoaXMuZGF0YS51dWlkXSx0aGlzLml0ZW1TaXplLHRoaXMub2Zmc2V0LHRoaXMubm9ybWFsaXplZCl9dG9KU09OKHQpe2lmKHZvaWQgMD09PXQpe2NvbnNvbGUubG9nKCJUSFJFRS5JbnRlcmxlYXZlZEJ1ZmZlckF0dHJpYnV0ZS50b0pTT04oKTogU2VyaWFsaXppbmcgYW4gaW50ZXJsYXZlZCBidWZmZXIgYXR0cmlidXRlIHdpbGwgZGVpbnRlcmxlYXZlIGJ1ZmZlciBkYXRhLiIpO2NvbnN0IHQ9W107Zm9yKGxldCBlPTA7ZTx0aGlzLmNvdW50O2UrKyl7Y29uc3Qgbj1lKnRoaXMuZGF0YS5zdHJpZGUrdGhpcy5vZmZzZXQ7Zm9yKGxldCBlPTA7ZTx0aGlzLml0ZW1TaXplO2UrKyl0LnB1c2godGhpcy5kYXRhLmFycmF5W24rZV0pfXJldHVybntpdGVtU2l6ZTp0aGlzLml0ZW1TaXplLHR5cGU6dGhpcy5hcnJheS5jb25zdHJ1Y3Rvci5uYW1lLGFycmF5OnQsbm9ybWFsaXplZDp0aGlzLm5vcm1hbGl6ZWR9fXJldHVybiB2b2lkIDA9PT10LmludGVybGVhdmVkQnVmZmVycyYmKHQuaW50ZXJsZWF2ZWRCdWZmZXJzPXt9KSx2b2lkIDA9PT10LmludGVybGVhdmVkQnVmZmVyc1t0aGlzLmRhdGEudXVpZF0mJih0LmludGVybGVhdmVkQnVmZmVyc1t0aGlzLmRhdGEudXVpZF09dGhpcy5kYXRhLnRvSlNPTih0KSkse2lzSW50ZXJsZWF2ZWRCdWZmZXJBdHRyaWJ1dGU6ITAsaXRlbVNpemU6dGhpcy5pdGVtU2l6ZSxkYXRhOnRoaXMuZGF0YS51dWlkLG9mZnNldDp0aGlzLm9mZnNldCxub3JtYWxpemVkOnRoaXMubm9ybWFsaXplZH19fWQ3dC5wcm90b3R5cGUuaXNJbnRlcmxlYXZlZEJ1ZmZlckF0dHJpYnV0ZT0hMDtjbGFzcyBwN3QgZXh0ZW5kcyB0NHR7Y29uc3RydWN0b3IodCl7c3VwZXIoKSx0aGlzLnR5cGU9IlNwcml0ZU1hdGVyaWFsIix0aGlzLmNvbG9yPW5ldyBzNHQoMTY3NzcyMTUpLHRoaXMubWFwPW51bGwsdGhpcy5hbHBoYU1hcD1udWxsLHRoaXMucm90YXRpb249MCx0aGlzLnNpemVBdHRlbnVhdGlvbj0hMCx0aGlzLnRyYW5zcGFyZW50PSEwLHRoaXMuc2V0VmFsdWVzKHQpfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5jb2xvci5jb3B5KHQuY29sb3IpLHRoaXMubWFwPXQubWFwLHRoaXMuYWxwaGFNYXA9dC5hbHBoYU1hcCx0aGlzLnJvdGF0aW9uPXQucm90YXRpb24sdGhpcy5zaXplQXR0ZW51YXRpb249dC5zaXplQXR0ZW51YXRpb24sdGhpc319bGV0IGY3dDtwN3QucHJvdG90eXBlLmlzU3ByaXRlTWF0ZXJpYWw9ITA7Y29uc3QgbTd0PW5ldyBINXQsZzd0PW5ldyBINXQsXzd0PW5ldyBINXQseTd0PW5ldyBDNXQsdjd0PW5ldyBDNXQsYjd0PW5ldyBnM3QseDd0PW5ldyBINXQsdzd0PW5ldyBINXQsUzd0PW5ldyBINXQsTTd0PW5ldyBDNXQsRTd0PW5ldyBDNXQsVDd0PW5ldyBDNXQ7Y2xhc3MgQzd0IGV4dGVuZHMgVjN0e2NvbnN0cnVjdG9yKHQpe2lmKHN1cGVyKCksdGhpcy50eXBlPSJTcHJpdGUiLHZvaWQgMD09PWY3dCl7Zjd0PW5ldyBONHQ7Y29uc3QgdD1uZXcgRmxvYXQzMkFycmF5KFstLjUsLS41LDAsMCwwLC41LC0uNSwwLDEsMCwuNSwuNSwwLDEsMSwtLjUsLjUsMCwwLDFdKSxlPW5ldyB1N3QodCw1KTtmN3Quc2V0SW5kZXgoWzAsMSwyLDAsMiwzXSksZjd0LnNldEF0dHJpYnV0ZSgicG9zaXRpb24iLG5ldyBkN3QoZSwzLDAsITEpKSxmN3Quc2V0QXR0cmlidXRlKCJ1diIsbmV3IGQ3dChlLDIsMywhMSkpfXRoaXMuZ2VvbWV0cnk9Zjd0LHRoaXMubWF0ZXJpYWw9dm9pZCAwIT09dD90Om5ldyBwN3QsdGhpcy5jZW50ZXI9bmV3IEM1dCguNSwuNSl9cmF5Y2FzdCh0LGUpe251bGw9PT10LmNhbWVyYSYmY29uc29sZS5lcnJvcignVEhSRUUuU3ByaXRlOiAiUmF5Y2FzdGVyLmNhbWVyYSIgbmVlZHMgdG8gYmUgc2V0IGluIG9yZGVyIHRvIHJheWNhc3QgYWdhaW5zdCBzcHJpdGVzLicpLGc3dC5zZXRGcm9tTWF0cml4U2NhbGUodGhpcy5tYXRyaXhXb3JsZCksYjd0LmNvcHkodC5jYW1lcmEubWF0cml4V29ybGQpLHRoaXMubW9kZWxWaWV3TWF0cml4Lm11bHRpcGx5TWF0cmljZXModC5jYW1lcmEubWF0cml4V29ybGRJbnZlcnNlLHRoaXMubWF0cml4V29ybGQpLF83dC5zZXRGcm9tTWF0cml4UG9zaXRpb24odGhpcy5tb2RlbFZpZXdNYXRyaXgpLHQuY2FtZXJhLmlzUGVyc3BlY3RpdmVDYW1lcmEmJiExPT09dGhpcy5tYXRlcmlhbC5zaXplQXR0ZW51YXRpb24mJmc3dC5tdWx0aXBseVNjYWxhcigtXzd0LnopO2NvbnN0IG49dGhpcy5tYXRlcmlhbC5yb3RhdGlvbjtsZXQgaSxyOzAhPT1uJiYocj1NYXRoLmNvcyhuKSxpPU1hdGguc2luKG4pKTtjb25zdCBvPXRoaXMuY2VudGVyO0E3dCh4N3Quc2V0KC0uNSwtLjUsMCksXzd0LG8sZzd0LGksciksQTd0KHc3dC5zZXQoLjUsLS41LDApLF83dCxvLGc3dCxpLHIpLEE3dChTN3Quc2V0KC41LC41LDApLF83dCxvLGc3dCxpLHIpLE03dC5zZXQoMCwwKSxFN3Quc2V0KDEsMCksVDd0LnNldCgxLDEpO2xldCBhPXQucmF5LmludGVyc2VjdFRyaWFuZ2xlKHg3dCx3N3QsUzd0LCExLG03dCk7aWYobnVsbD09PWEmJihBN3Qodzd0LnNldCgtLjUsLjUsMCksXzd0LG8sZzd0LGksciksRTd0LnNldCgwLDEpLGE9dC5yYXkuaW50ZXJzZWN0VHJpYW5nbGUoeDd0LFM3dCx3N3QsITEsbTd0KSxudWxsPT09YSkpcmV0dXJuO2NvbnN0IHM9dC5yYXkub3JpZ2luLmRpc3RhbmNlVG8obTd0KTtzPHQubmVhcnx8cz50LmZhcnx8ZS5wdXNoKHtkaXN0YW5jZTpzLHBvaW50Om03dC5jbG9uZSgpLHV2OkozdC5nZXRVVihtN3QseDd0LHc3dCxTN3QsTTd0LEU3dCxUN3QsbmV3IEM1dCksZmFjZTpudWxsLG9iamVjdDp0aGlzfSl9Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx2b2lkIDAhPT10LmNlbnRlciYmdGhpcy5jZW50ZXIuY29weSh0LmNlbnRlciksdGhpcy5tYXRlcmlhbD10Lm1hdGVyaWFsLHRoaXN9fWZ1bmN0aW9uIEE3dCh0LGUsbixpLHIsbyl7eTd0LnN1YlZlY3RvcnModCxuKS5hZGRTY2FsYXIoLjUpLm11bHRpcGx5KGkpLHZvaWQgMCE9PXI/KHY3dC54PW8qeTd0Lngtcip5N3QueSx2N3QueT1yKnk3dC54K28qeTd0LnkpOnY3dC5jb3B5KHk3dCksdC5jb3B5KGUpLHQueCs9djd0LngsdC55Kz12N3QueSx0LmFwcGx5TWF0cml4NChiN3QpfUM3dC5wcm90b3R5cGUuaXNTcHJpdGU9ITA7Y29uc3Qgazd0PW5ldyBINXQsTDd0PW5ldyBINXQ7Y2xhc3MgUDd0IGV4dGVuZHMgVjN0e2NvbnN0cnVjdG9yKCl7c3VwZXIoKSx0aGlzLl9jdXJyZW50TGV2ZWw9MCx0aGlzLnR5cGU9IkxPRCIsT2JqZWN0LmRlZmluZVByb3BlcnRpZXModGhpcyx7bGV2ZWxzOntlbnVtZXJhYmxlOiEwLHZhbHVlOltdfSxpc0xPRDp7dmFsdWU6ITB9fSksdGhpcy5hdXRvVXBkYXRlPSEwfWNvcHkodCl7c3VwZXIuY29weSh0LCExKTtjb25zdCBlPXQubGV2ZWxzO2ZvcihsZXQgdD0wLG49ZS5sZW5ndGg7dDxuO3QrKyl7Y29uc3Qgbj1lW3RdO3RoaXMuYWRkTGV2ZWwobi5vYmplY3QuY2xvbmUoKSxuLmRpc3RhbmNlKX1yZXR1cm4gdGhpcy5hdXRvVXBkYXRlPXQuYXV0b1VwZGF0ZSx0aGlzfWFkZExldmVsKHQsZT0wKXtlPU1hdGguYWJzKGUpO2NvbnN0IG49dGhpcy5sZXZlbHM7bGV0IGk7Zm9yKGk9MDtpPG4ubGVuZ3RoJiYhKGU8bltpXS5kaXN0YW5jZSk7aSsrKTtyZXR1cm4gbi5zcGxpY2UoaSwwLHtkaXN0YW5jZTplLG9iamVjdDp0fSksdGhpcy5hZGQodCksdGhpc31nZXRDdXJyZW50TGV2ZWwoKXtyZXR1cm4gdGhpcy5fY3VycmVudExldmVsfWdldE9iamVjdEZvckRpc3RhbmNlKHQpe2NvbnN0IGU9dGhpcy5sZXZlbHM7aWYoZS5sZW5ndGg+MCl7bGV0IG4saTtmb3Iobj0xLGk9ZS5sZW5ndGg7bjxpJiYhKHQ8ZVtuXS5kaXN0YW5jZSk7bisrKTtyZXR1cm4gZVtuLTFdLm9iamVjdH1yZXR1cm4gbnVsbH1yYXljYXN0KHQsZSl7aWYodGhpcy5sZXZlbHMubGVuZ3RoPjApe2s3dC5zZXRGcm9tTWF0cml4UG9zaXRpb24odGhpcy5tYXRyaXhXb3JsZCk7Y29uc3Qgbj10LnJheS5vcmlnaW4uZGlzdGFuY2VUbyhrN3QpO3RoaXMuZ2V0T2JqZWN0Rm9yRGlzdGFuY2UobikucmF5Y2FzdCh0LGUpfX11cGRhdGUodCl7Y29uc3QgZT10aGlzLmxldmVscztpZihlLmxlbmd0aD4xKXtrN3Quc2V0RnJvbU1hdHJpeFBvc2l0aW9uKHQubWF0cml4V29ybGQpLEw3dC5zZXRGcm9tTWF0cml4UG9zaXRpb24odGhpcy5tYXRyaXhXb3JsZCk7Y29uc3Qgbj1rN3QuZGlzdGFuY2VUbyhMN3QpL3Quem9vbTtsZXQgaSxyO2ZvcihlWzBdLm9iamVjdC52aXNpYmxlPSEwLGk9MSxyPWUubGVuZ3RoO2k8ciYmbj49ZVtpXS5kaXN0YW5jZTtpKyspZVtpLTFdLm9iamVjdC52aXNpYmxlPSExLGVbaV0ub2JqZWN0LnZpc2libGU9ITA7Zm9yKHRoaXMuX2N1cnJlbnRMZXZlbD1pLTE7aTxyO2krKyllW2ldLm9iamVjdC52aXNpYmxlPSExfX10b0pTT04odCl7Y29uc3QgZT1zdXBlci50b0pTT04odCk7ITE9PT10aGlzLmF1dG9VcGRhdGUmJihlLm9iamVjdC5hdXRvVXBkYXRlPSExKSxlLm9iamVjdC5sZXZlbHM9W107Y29uc3Qgbj10aGlzLmxldmVscztmb3IobGV0IHQ9MCxpPW4ubGVuZ3RoO3Q8aTt0Kyspe2NvbnN0IGk9blt0XTtlLm9iamVjdC5sZXZlbHMucHVzaCh7b2JqZWN0Omkub2JqZWN0LnV1aWQsZGlzdGFuY2U6aS5kaXN0YW5jZX0pfXJldHVybiBlfX1jb25zdCBON3Q9bmV3IEg1dCxJN3Q9bmV3IFI1dCxSN3Q9bmV3IFI1dCxPN3Q9bmV3IEg1dCx6N3Q9bmV3IGczdDtjbGFzcyBEN3QgZXh0ZW5kcyBLNHR7Y29uc3RydWN0b3IodCxlKXtzdXBlcih0LGUpLHRoaXMudHlwZT0iU2tpbm5lZE1lc2giLHRoaXMuYmluZE1vZGU9ImF0dGFjaGVkIix0aGlzLmJpbmRNYXRyaXg9bmV3IGczdCx0aGlzLmJpbmRNYXRyaXhJbnZlcnNlPW5ldyBnM3R9Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLmJpbmRNb2RlPXQuYmluZE1vZGUsdGhpcy5iaW5kTWF0cml4LmNvcHkodC5iaW5kTWF0cml4KSx0aGlzLmJpbmRNYXRyaXhJbnZlcnNlLmNvcHkodC5iaW5kTWF0cml4SW52ZXJzZSksdGhpcy5za2VsZXRvbj10LnNrZWxldG9uLHRoaXN9YmluZCh0LGUpe3RoaXMuc2tlbGV0b249dCx2b2lkIDA9PT1lJiYodGhpcy51cGRhdGVNYXRyaXhXb3JsZCghMCksdGhpcy5za2VsZXRvbi5jYWxjdWxhdGVJbnZlcnNlcygpLGU9dGhpcy5tYXRyaXhXb3JsZCksdGhpcy5iaW5kTWF0cml4LmNvcHkoZSksdGhpcy5iaW5kTWF0cml4SW52ZXJzZS5jb3B5KGUpLmludmVydCgpfXBvc2UoKXt0aGlzLnNrZWxldG9uLnBvc2UoKX1ub3JtYWxpemVTa2luV2VpZ2h0cygpe2NvbnN0IHQ9bmV3IFI1dCxlPXRoaXMuZ2VvbWV0cnkuYXR0cmlidXRlcy5za2luV2VpZ2h0O2ZvcihsZXQgbj0wLGk9ZS5jb3VudDtuPGk7bisrKXt0Lng9ZS5nZXRYKG4pLHQueT1lLmdldFkobiksdC56PWUuZ2V0WihuKSx0Lnc9ZS5nZXRXKG4pO2NvbnN0IGk9MS90Lm1hbmhhdHRhbkxlbmd0aCgpO2khPT0xLzA/dC5tdWx0aXBseVNjYWxhcihpKTp0LnNldCgxLDAsMCwwKSxlLnNldFhZWlcobix0LngsdC55LHQueix0LncpfX11cGRhdGVNYXRyaXhXb3JsZCh0KXtzdXBlci51cGRhdGVNYXRyaXhXb3JsZCh0KSwiYXR0YWNoZWQiPT09dGhpcy5iaW5kTW9kZT90aGlzLmJpbmRNYXRyaXhJbnZlcnNlLmNvcHkodGhpcy5tYXRyaXhXb3JsZCkuaW52ZXJ0KCk6ImRldGFjaGVkIj09PXRoaXMuYmluZE1vZGU/dGhpcy5iaW5kTWF0cml4SW52ZXJzZS5jb3B5KHRoaXMuYmluZE1hdHJpeCkuaW52ZXJ0KCk6Y29uc29sZS53YXJuKCJUSFJFRS5Ta2lubmVkTWVzaDogVW5yZWNvZ25pemVkIGJpbmRNb2RlOiAiK3RoaXMuYmluZE1vZGUpfWJvbmVUcmFuc2Zvcm0odCxlKXtjb25zdCBuPXRoaXMuc2tlbGV0b24saT10aGlzLmdlb21ldHJ5O0k3dC5mcm9tQnVmZmVyQXR0cmlidXRlKGkuYXR0cmlidXRlcy5za2luSW5kZXgsdCksUjd0LmZyb21CdWZmZXJBdHRyaWJ1dGUoaS5hdHRyaWJ1dGVzLnNraW5XZWlnaHQsdCksTjd0LmZyb21CdWZmZXJBdHRyaWJ1dGUoaS5hdHRyaWJ1dGVzLnBvc2l0aW9uLHQpLmFwcGx5TWF0cml4NCh0aGlzLmJpbmRNYXRyaXgpLGUuc2V0KDAsMCwwKTtmb3IobGV0IHQ9MDt0PDQ7dCsrKXtjb25zdCBpPVI3dC5nZXRDb21wb25lbnQodCk7aWYoMCE9PWkpe2NvbnN0IHI9STd0LmdldENvbXBvbmVudCh0KTt6N3QubXVsdGlwbHlNYXRyaWNlcyhuLmJvbmVzW3JdLm1hdHJpeFdvcmxkLG4uYm9uZUludmVyc2VzW3JdKSxlLmFkZFNjYWxlZFZlY3RvcihPN3QuY29weShON3QpLmFwcGx5TWF0cml4NCh6N3QpLGkpfX1yZXR1cm4gZS5hcHBseU1hdHJpeDQodGhpcy5iaW5kTWF0cml4SW52ZXJzZSl9fUQ3dC5wcm90b3R5cGUuaXNTa2lubmVkTWVzaD0hMDtjbGFzcyBCN3QgZXh0ZW5kcyBWM3R7Y29uc3RydWN0b3IoKXtzdXBlcigpLHRoaXMudHlwZT0iQm9uZSJ9fUI3dC5wcm90b3R5cGUuaXNCb25lPSEwO2NsYXNzIEg3dCBleHRlbmRzIE41dHtjb25zdHJ1Y3Rvcih0PW51bGwsZT0xLG49MSxpLHIsbyxhLHMsbD0xMDAzLGM9MTAwMyx1LGgpe3N1cGVyKG51bGwsbyxhLHMsbCxjLGkscix1LGgpLHRoaXMuaW1hZ2U9e2RhdGE6dCx3aWR0aDplLGhlaWdodDpufSx0aGlzLm1hZ0ZpbHRlcj1sLHRoaXMubWluRmlsdGVyPWMsdGhpcy5nZW5lcmF0ZU1pcG1hcHM9ITEsdGhpcy5mbGlwWT0hMSx0aGlzLnVucGFja0FsaWdubWVudD0xLHRoaXMubmVlZHNVcGRhdGU9ITB9fUg3dC5wcm90b3R5cGUuaXNEYXRhVGV4dHVyZT0hMDtjb25zdCBGN3Q9bmV3IGczdCxWN3Q9bmV3IGczdDtjbGFzcyBVN3R7Y29uc3RydWN0b3IodD1bXSxlPVtdKXt0aGlzLnV1aWQ9YTV0KCksdGhpcy5ib25lcz10LnNsaWNlKDApLHRoaXMuYm9uZUludmVyc2VzPWUsdGhpcy5ib25lTWF0cmljZXM9bnVsbCx0aGlzLmJvbmVUZXh0dXJlPW51bGwsdGhpcy5ib25lVGV4dHVyZVNpemU9MCx0aGlzLmZyYW1lPS0xLHRoaXMuaW5pdCgpfWluaXQoKXtjb25zdCB0PXRoaXMuYm9uZXMsZT10aGlzLmJvbmVJbnZlcnNlcztpZih0aGlzLmJvbmVNYXRyaWNlcz1uZXcgRmxvYXQzMkFycmF5KDE2KnQubGVuZ3RoKSwwPT09ZS5sZW5ndGgpdGhpcy5jYWxjdWxhdGVJbnZlcnNlcygpO2Vsc2UgaWYodC5sZW5ndGghPT1lLmxlbmd0aCl7Y29uc29sZS53YXJuKCJUSFJFRS5Ta2VsZXRvbjogTnVtYmVyIG9mIGludmVyc2UgYm9uZSBtYXRyaWNlcyBkb2VzIG5vdCBtYXRjaCBhbW91bnQgb2YgYm9uZXMuIiksdGhpcy5ib25lSW52ZXJzZXM9W107Zm9yKGxldCB0PTAsZT10aGlzLmJvbmVzLmxlbmd0aDt0PGU7dCsrKXRoaXMuYm9uZUludmVyc2VzLnB1c2gobmV3IGczdCl9fWNhbGN1bGF0ZUludmVyc2VzKCl7dGhpcy5ib25lSW52ZXJzZXMubGVuZ3RoPTA7Zm9yKGxldCB0PTAsZT10aGlzLmJvbmVzLmxlbmd0aDt0PGU7dCsrKXtjb25zdCBlPW5ldyBnM3Q7dGhpcy5ib25lc1t0XSYmZS5jb3B5KHRoaXMuYm9uZXNbdF0ubWF0cml4V29ybGQpLmludmVydCgpLHRoaXMuYm9uZUludmVyc2VzLnB1c2goZSl9fXBvc2UoKXtmb3IobGV0IHQ9MCxlPXRoaXMuYm9uZXMubGVuZ3RoO3Q8ZTt0Kyspe2NvbnN0IGU9dGhpcy5ib25lc1t0XTtlJiZlLm1hdHJpeFdvcmxkLmNvcHkodGhpcy5ib25lSW52ZXJzZXNbdF0pLmludmVydCgpfWZvcihsZXQgdD0wLGU9dGhpcy5ib25lcy5sZW5ndGg7dDxlO3QrKyl7Y29uc3QgZT10aGlzLmJvbmVzW3RdO2UmJihlLnBhcmVudCYmZS5wYXJlbnQuaXNCb25lPyhlLm1hdHJpeC5jb3B5KGUucGFyZW50Lm1hdHJpeFdvcmxkKS5pbnZlcnQoKSxlLm1hdHJpeC5tdWx0aXBseShlLm1hdHJpeFdvcmxkKSk6ZS5tYXRyaXguY29weShlLm1hdHJpeFdvcmxkKSxlLm1hdHJpeC5kZWNvbXBvc2UoZS5wb3NpdGlvbixlLnF1YXRlcm5pb24sZS5zY2FsZSkpfX11cGRhdGUoKXtjb25zdCB0PXRoaXMuYm9uZXMsZT10aGlzLmJvbmVJbnZlcnNlcyxuPXRoaXMuYm9uZU1hdHJpY2VzLGk9dGhpcy5ib25lVGV4dHVyZTtmb3IobGV0IGk9MCxyPXQubGVuZ3RoO2k8cjtpKyspe0Y3dC5tdWx0aXBseU1hdHJpY2VzKHRbaV0/dFtpXS5tYXRyaXhXb3JsZDpWN3QsZVtpXSksRjd0LnRvQXJyYXkobiwxNippKX1udWxsIT09aSYmKGkubmVlZHNVcGRhdGU9ITApfWNsb25lKCl7cmV0dXJuIG5ldyBVN3QodGhpcy5ib25lcyx0aGlzLmJvbmVJbnZlcnNlcyl9Y29tcHV0ZUJvbmVUZXh0dXJlKCl7bGV0IHQ9TWF0aC5zcXJ0KDQqdGhpcy5ib25lcy5sZW5ndGgpO3Q9aDV0KHQpLHQ9TWF0aC5tYXgodCw0KTtjb25zdCBlPW5ldyBGbG9hdDMyQXJyYXkodCp0KjQpO2Uuc2V0KHRoaXMuYm9uZU1hdHJpY2VzKTtjb25zdCBuPW5ldyBIN3QoZSx0LHQsUzJ0LHYydCk7cmV0dXJuIHRoaXMuYm9uZU1hdHJpY2VzPWUsdGhpcy5ib25lVGV4dHVyZT1uLHRoaXMuYm9uZVRleHR1cmVTaXplPXQsdGhpc31nZXRCb25lQnlOYW1lKHQpe2ZvcihsZXQgZT0wLG49dGhpcy5ib25lcy5sZW5ndGg7ZTxuO2UrKyl7Y29uc3Qgbj10aGlzLmJvbmVzW2VdO2lmKG4ubmFtZT09PXQpcmV0dXJuIG59fWRpc3Bvc2UoKXtudWxsIT09dGhpcy5ib25lVGV4dHVyZSYmKHRoaXMuYm9uZVRleHR1cmUuZGlzcG9zZSgpLHRoaXMuYm9uZVRleHR1cmU9bnVsbCl9ZnJvbUpTT04odCxlKXt0aGlzLnV1aWQ9dC51dWlkO2ZvcihsZXQgbj0wLGk9dC5ib25lcy5sZW5ndGg7bjxpO24rKyl7Y29uc3QgaT10LmJvbmVzW25dO2xldCByPWVbaV07dm9pZCAwPT09ciYmKGNvbnNvbGUud2FybigiVEhSRUUuU2tlbGV0b246IE5vIGJvbmUgZm91bmQgd2l0aCBVVUlEOiIsaSkscj1uZXcgQjd0KSx0aGlzLmJvbmVzLnB1c2gociksdGhpcy5ib25lSW52ZXJzZXMucHVzaCgobmV3IGczdCkuZnJvbUFycmF5KHQuYm9uZUludmVyc2VzW25dKSl9cmV0dXJuIHRoaXMuaW5pdCgpLHRoaXN9dG9KU09OKCl7Y29uc3QgdD17bWV0YWRhdGE6e3ZlcnNpb246NC41LHR5cGU6IlNrZWxldG9uIixnZW5lcmF0b3I6IlNrZWxldG9uLnRvSlNPTiJ9LGJvbmVzOltdLGJvbmVJbnZlcnNlczpbXX07dC51dWlkPXRoaXMudXVpZDtjb25zdCBlPXRoaXMuYm9uZXMsbj10aGlzLmJvbmVJbnZlcnNlcztmb3IobGV0IGk9MCxyPWUubGVuZ3RoO2k8cjtpKyspe3QuYm9uZXMucHVzaChlW2ldLnV1aWQpO3QuYm9uZUludmVyc2VzLnB1c2gobltpXS50b0FycmF5KCkpfXJldHVybiB0fX1jb25zdCBqN3Q9bmV3IGczdCxHN3Q9bmV3IGczdCxXN3Q9W10scTd0PW5ldyBLNHQ7Y2xhc3MgWTd0IGV4dGVuZHMgSzR0e2NvbnN0cnVjdG9yKHQsZSxuKXtzdXBlcih0LGUpLHRoaXMuaW5zdGFuY2VNYXRyaXg9bmV3IGg0dChuZXcgRmxvYXQzMkFycmF5KDE2Km4pLDE2KSx0aGlzLmluc3RhbmNlQ29sb3I9bnVsbCx0aGlzLmNvdW50PW4sdGhpcy5mcnVzdHVtQ3VsbGVkPSExfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5pbnN0YW5jZU1hdHJpeC5jb3B5KHQuaW5zdGFuY2VNYXRyaXgpLG51bGwhPT10Lmluc3RhbmNlQ29sb3ImJih0aGlzLmluc3RhbmNlQ29sb3I9dC5pbnN0YW5jZUNvbG9yLmNsb25lKCkpLHRoaXMuY291bnQ9dC5jb3VudCx0aGlzfWdldENvbG9yQXQodCxlKXtlLmZyb21BcnJheSh0aGlzLmluc3RhbmNlQ29sb3IuYXJyYXksMyp0KX1nZXRNYXRyaXhBdCh0LGUpe2UuZnJvbUFycmF5KHRoaXMuaW5zdGFuY2VNYXRyaXguYXJyYXksMTYqdCl9cmF5Y2FzdCh0LGUpe2NvbnN0IG49dGhpcy5tYXRyaXhXb3JsZCxpPXRoaXMuY291bnQ7aWYocTd0Lmdlb21ldHJ5PXRoaXMuZ2VvbWV0cnkscTd0Lm1hdGVyaWFsPXRoaXMubWF0ZXJpYWwsdm9pZCAwIT09cTd0Lm1hdGVyaWFsKWZvcihsZXQgcj0wO3I8aTtyKyspe3RoaXMuZ2V0TWF0cml4QXQocixqN3QpLEc3dC5tdWx0aXBseU1hdHJpY2VzKG4sajd0KSxxN3QubWF0cml4V29ybGQ9Rzd0LHE3dC5yYXljYXN0KHQsVzd0KTtmb3IobGV0IHQ9MCxuPVc3dC5sZW5ndGg7dDxuO3QrKyl7Y29uc3Qgbj1XN3RbdF07bi5pbnN0YW5jZUlkPXIsbi5vYmplY3Q9dGhpcyxlLnB1c2gobil9Vzd0Lmxlbmd0aD0wfX1zZXRDb2xvckF0KHQsZSl7bnVsbD09PXRoaXMuaW5zdGFuY2VDb2xvciYmKHRoaXMuaW5zdGFuY2VDb2xvcj1uZXcgaDR0KG5ldyBGbG9hdDMyQXJyYXkoMyp0aGlzLmluc3RhbmNlTWF0cml4LmNvdW50KSwzKSksZS50b0FycmF5KHRoaXMuaW5zdGFuY2VDb2xvci5hcnJheSwzKnQpfXNldE1hdHJpeEF0KHQsZSl7ZS50b0FycmF5KHRoaXMuaW5zdGFuY2VNYXRyaXguYXJyYXksMTYqdCl9dXBkYXRlTW9ycGhUYXJnZXRzKCl7fWRpc3Bvc2UoKXt0aGlzLmRpc3BhdGNoRXZlbnQoe3R5cGU6ImRpc3Bvc2UifSl9fVk3dC5wcm90b3R5cGUuaXNJbnN0YW5jZWRNZXNoPSEwO2NsYXNzIFg3dCBleHRlbmRzIHQ0dHtjb25zdHJ1Y3Rvcih0KXtzdXBlcigpLHRoaXMudHlwZT0iTGluZUJhc2ljTWF0ZXJpYWwiLHRoaXMuY29sb3I9bmV3IHM0dCgxNjc3NzIxNSksdGhpcy5saW5ld2lkdGg9MSx0aGlzLmxpbmVjYXA9InJvdW5kIix0aGlzLmxpbmVqb2luPSJyb3VuZCIsdGhpcy5zZXRWYWx1ZXModCl9Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLmNvbG9yLmNvcHkodC5jb2xvciksdGhpcy5saW5ld2lkdGg9dC5saW5ld2lkdGgsdGhpcy5saW5lY2FwPXQubGluZWNhcCx0aGlzLmxpbmVqb2luPXQubGluZWpvaW4sdGhpc319WDd0LnByb3RvdHlwZS5pc0xpbmVCYXNpY01hdGVyaWFsPSEwO2NvbnN0ICQ3dD1uZXcgSDV0LEs3dD1uZXcgSDV0LFo3dD1uZXcgZzN0LEo3dD1uZXcgbTN0LFE3dD1uZXcgczN0O2NsYXNzIHR0ZSBleHRlbmRzIFYzdHtjb25zdHJ1Y3Rvcih0PW5ldyBONHQsZT1uZXcgWDd0KXtzdXBlcigpLHRoaXMudHlwZT0iTGluZSIsdGhpcy5nZW9tZXRyeT10LHRoaXMubWF0ZXJpYWw9ZSx0aGlzLnVwZGF0ZU1vcnBoVGFyZ2V0cygpfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5tYXRlcmlhbD10Lm1hdGVyaWFsLHRoaXMuZ2VvbWV0cnk9dC5nZW9tZXRyeSx0aGlzfWNvbXB1dGVMaW5lRGlzdGFuY2VzKCl7Y29uc3QgdD10aGlzLmdlb21ldHJ5O2lmKHQuaXNCdWZmZXJHZW9tZXRyeSlpZihudWxsPT09dC5pbmRleCl7Y29uc3QgZT10LmF0dHJpYnV0ZXMucG9zaXRpb24sbj1bMF07Zm9yKGxldCB0PTEsaT1lLmNvdW50O3Q8aTt0KyspJDd0LmZyb21CdWZmZXJBdHRyaWJ1dGUoZSx0LTEpLEs3dC5mcm9tQnVmZmVyQXR0cmlidXRlKGUsdCksblt0XT1uW3QtMV0sblt0XSs9JDd0LmRpc3RhbmNlVG8oSzd0KTt0LnNldEF0dHJpYnV0ZSgibGluZURpc3RhbmNlIixuZXcgYjR0KG4sMSkpfWVsc2UgY29uc29sZS53YXJuKCJUSFJFRS5MaW5lLmNvbXB1dGVMaW5lRGlzdGFuY2VzKCk6IENvbXB1dGF0aW9uIG9ubHkgcG9zc2libGUgd2l0aCBub24taW5kZXhlZCBCdWZmZXJHZW9tZXRyeS4iKTtlbHNlIHQuaXNHZW9tZXRyeSYmY29uc29sZS5lcnJvcigiVEhSRUUuTGluZS5jb21wdXRlTGluZURpc3RhbmNlcygpIG5vIGxvbmdlciBzdXBwb3J0cyBUSFJFRS5HZW9tZXRyeS4gVXNlIFRIUkVFLkJ1ZmZlckdlb21ldHJ5IGluc3RlYWQuIik7cmV0dXJuIHRoaXN9cmF5Y2FzdCh0LGUpe2NvbnN0IG49dGhpcy5nZW9tZXRyeSxpPXRoaXMubWF0cml4V29ybGQscj10LnBhcmFtcy5MaW5lLnRocmVzaG9sZCxvPW4uZHJhd1JhbmdlO2lmKG51bGw9PT1uLmJvdW5kaW5nU3BoZXJlJiZuLmNvbXB1dGVCb3VuZGluZ1NwaGVyZSgpLFE3dC5jb3B5KG4uYm91bmRpbmdTcGhlcmUpLFE3dC5hcHBseU1hdHJpeDQoaSksUTd0LnJhZGl1cys9ciwhMT09PXQucmF5LmludGVyc2VjdHNTcGhlcmUoUTd0KSlyZXR1cm47Wjd0LmNvcHkoaSkuaW52ZXJ0KCksSjd0LmNvcHkodC5yYXkpLmFwcGx5TWF0cml4NChaN3QpO2NvbnN0IGE9ci8oKHRoaXMuc2NhbGUueCt0aGlzLnNjYWxlLnkrdGhpcy5zY2FsZS56KS8zKSxzPWEqYSxsPW5ldyBINXQsYz1uZXcgSDV0LHU9bmV3IEg1dCxoPW5ldyBINXQsZD10aGlzLmlzTGluZVNlZ21lbnRzPzI6MTtpZihuLmlzQnVmZmVyR2VvbWV0cnkpe2NvbnN0IGk9bi5pbmRleCxyPW4uYXR0cmlidXRlcy5wb3NpdGlvbjtpZihudWxsIT09aSl7Zm9yKGxldCBuPU1hdGgubWF4KDAsby5zdGFydCksYT1NYXRoLm1pbihpLmNvdW50LG8uc3RhcnQrby5jb3VudCktMTtuPGE7bis9ZCl7Y29uc3Qgbz1pLmdldFgobiksYT1pLmdldFgobisxKTtsLmZyb21CdWZmZXJBdHRyaWJ1dGUocixvKSxjLmZyb21CdWZmZXJBdHRyaWJ1dGUocixhKTtpZihKN3QuZGlzdGFuY2VTcVRvU2VnbWVudChsLGMsaCx1KT5zKWNvbnRpbnVlO2guYXBwbHlNYXRyaXg0KHRoaXMubWF0cml4V29ybGQpO2NvbnN0IGQ9dC5yYXkub3JpZ2luLmRpc3RhbmNlVG8oaCk7ZDx0Lm5lYXJ8fGQ+dC5mYXJ8fGUucHVzaCh7ZGlzdGFuY2U6ZCxwb2ludDp1LmNsb25lKCkuYXBwbHlNYXRyaXg0KHRoaXMubWF0cml4V29ybGQpLGluZGV4Om4sZmFjZTpudWxsLGZhY2VJbmRleDpudWxsLG9iamVjdDp0aGlzfSl9fWVsc2V7Zm9yKGxldCBuPU1hdGgubWF4KDAsby5zdGFydCksaT1NYXRoLm1pbihyLmNvdW50LG8uc3RhcnQrby5jb3VudCktMTtuPGk7bis9ZCl7bC5mcm9tQnVmZmVyQXR0cmlidXRlKHIsbiksYy5mcm9tQnVmZmVyQXR0cmlidXRlKHIsbisxKTtpZihKN3QuZGlzdGFuY2VTcVRvU2VnbWVudChsLGMsaCx1KT5zKWNvbnRpbnVlO2guYXBwbHlNYXRyaXg0KHRoaXMubWF0cml4V29ybGQpO2NvbnN0IGk9dC5yYXkub3JpZ2luLmRpc3RhbmNlVG8oaCk7aTx0Lm5lYXJ8fGk+dC5mYXJ8fGUucHVzaCh7ZGlzdGFuY2U6aSxwb2ludDp1LmNsb25lKCkuYXBwbHlNYXRyaXg0KHRoaXMubWF0cml4V29ybGQpLGluZGV4Om4sZmFjZTpudWxsLGZhY2VJbmRleDpudWxsLG9iamVjdDp0aGlzfSl9fX1lbHNlIG4uaXNHZW9tZXRyeSYmY29uc29sZS5lcnJvcigiVEhSRUUuTGluZS5yYXljYXN0KCkgbm8gbG9uZ2VyIHN1cHBvcnRzIFRIUkVFLkdlb21ldHJ5LiBVc2UgVEhSRUUuQnVmZmVyR2VvbWV0cnkgaW5zdGVhZC4iKX11cGRhdGVNb3JwaFRhcmdldHMoKXtjb25zdCB0PXRoaXMuZ2VvbWV0cnk7aWYodC5pc0J1ZmZlckdlb21ldHJ5KXtjb25zdCBlPXQubW9ycGhBdHRyaWJ1dGVzLG49T2JqZWN0LmtleXMoZSk7aWYobi5sZW5ndGg+MCl7Y29uc3QgdD1lW25bMF1dO2lmKHZvaWQgMCE9PXQpe3RoaXMubW9ycGhUYXJnZXRJbmZsdWVuY2VzPVtdLHRoaXMubW9ycGhUYXJnZXREaWN0aW9uYXJ5PXt9O2ZvcihsZXQgZT0wLG49dC5sZW5ndGg7ZTxuO2UrKyl7Y29uc3Qgbj10W2VdLm5hbWV8fFN0cmluZyhlKTt0aGlzLm1vcnBoVGFyZ2V0SW5mbHVlbmNlcy5wdXNoKDApLHRoaXMubW9ycGhUYXJnZXREaWN0aW9uYXJ5W25dPWV9fX19ZWxzZXtjb25zdCBlPXQubW9ycGhUYXJnZXRzO3ZvaWQgMCE9PWUmJmUubGVuZ3RoPjAmJmNvbnNvbGUuZXJyb3IoIlRIUkVFLkxpbmUudXBkYXRlTW9ycGhUYXJnZXRzKCkgZG9lcyBub3Qgc3VwcG9ydCBUSFJFRS5HZW9tZXRyeS4gVXNlIFRIUkVFLkJ1ZmZlckdlb21ldHJ5IGluc3RlYWQuIil9fX10dGUucHJvdG90eXBlLmlzTGluZT0hMDtjb25zdCBldGU9bmV3IEg1dCxudGU9bmV3IEg1dDtjbGFzcyBpdGUgZXh0ZW5kcyB0dGV7Y29uc3RydWN0b3IodCxlKXtzdXBlcih0LGUpLHRoaXMudHlwZT0iTGluZVNlZ21lbnRzIn1jb21wdXRlTGluZURpc3RhbmNlcygpe2NvbnN0IHQ9dGhpcy5nZW9tZXRyeTtpZih0LmlzQnVmZmVyR2VvbWV0cnkpaWYobnVsbD09PXQuaW5kZXgpe2NvbnN0IGU9dC5hdHRyaWJ1dGVzLnBvc2l0aW9uLG49W107Zm9yKGxldCB0PTAsaT1lLmNvdW50O3Q8aTt0Kz0yKWV0ZS5mcm9tQnVmZmVyQXR0cmlidXRlKGUsdCksbnRlLmZyb21CdWZmZXJBdHRyaWJ1dGUoZSx0KzEpLG5bdF09MD09PXQ/MDpuW3QtMV0sblt0KzFdPW5bdF0rZXRlLmRpc3RhbmNlVG8obnRlKTt0LnNldEF0dHJpYnV0ZSgibGluZURpc3RhbmNlIixuZXcgYjR0KG4sMSkpfWVsc2UgY29uc29sZS53YXJuKCJUSFJFRS5MaW5lU2VnbWVudHMuY29tcHV0ZUxpbmVEaXN0YW5jZXMoKTogQ29tcHV0YXRpb24gb25seSBwb3NzaWJsZSB3aXRoIG5vbi1pbmRleGVkIEJ1ZmZlckdlb21ldHJ5LiIpO2Vsc2UgdC5pc0dlb21ldHJ5JiZjb25zb2xlLmVycm9yKCJUSFJFRS5MaW5lU2VnbWVudHMuY29tcHV0ZUxpbmVEaXN0YW5jZXMoKSBubyBsb25nZXIgc3VwcG9ydHMgVEhSRUUuR2VvbWV0cnkuIFVzZSBUSFJFRS5CdWZmZXJHZW9tZXRyeSBpbnN0ZWFkLiIpO3JldHVybiB0aGlzfX1pdGUucHJvdG90eXBlLmlzTGluZVNlZ21lbnRzPSEwO2NsYXNzIHJ0ZSBleHRlbmRzIHR0ZXtjb25zdHJ1Y3Rvcih0LGUpe3N1cGVyKHQsZSksdGhpcy50eXBlPSJMaW5lTG9vcCJ9fXJ0ZS5wcm90b3R5cGUuaXNMaW5lTG9vcD0hMDtjbGFzcyBvdGUgZXh0ZW5kcyB0NHR7Y29uc3RydWN0b3IodCl7c3VwZXIoKSx0aGlzLnR5cGU9IlBvaW50c01hdGVyaWFsIix0aGlzLmNvbG9yPW5ldyBzNHQoMTY3NzcyMTUpLHRoaXMubWFwPW51bGwsdGhpcy5hbHBoYU1hcD1udWxsLHRoaXMuc2l6ZT0xLHRoaXMuc2l6ZUF0dGVudWF0aW9uPSEwLHRoaXMuc2V0VmFsdWVzKHQpfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5jb2xvci5jb3B5KHQuY29sb3IpLHRoaXMubWFwPXQubWFwLHRoaXMuYWxwaGFNYXA9dC5hbHBoYU1hcCx0aGlzLnNpemU9dC5zaXplLHRoaXMuc2l6ZUF0dGVudWF0aW9uPXQuc2l6ZUF0dGVudWF0aW9uLHRoaXN9fW90ZS5wcm90b3R5cGUuaXNQb2ludHNNYXRlcmlhbD0hMDtjb25zdCBhdGU9bmV3IGczdCxzdGU9bmV3IG0zdCxsdGU9bmV3IHMzdCxjdGU9bmV3IEg1dDtjbGFzcyB1dGUgZXh0ZW5kcyBWM3R7Y29uc3RydWN0b3IodD1uZXcgTjR0LGU9bmV3IG90ZSl7c3VwZXIoKSx0aGlzLnR5cGU9IlBvaW50cyIsdGhpcy5nZW9tZXRyeT10LHRoaXMubWF0ZXJpYWw9ZSx0aGlzLnVwZGF0ZU1vcnBoVGFyZ2V0cygpfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5tYXRlcmlhbD10Lm1hdGVyaWFsLHRoaXMuZ2VvbWV0cnk9dC5nZW9tZXRyeSx0aGlzfXJheWNhc3QodCxlKXtjb25zdCBuPXRoaXMuZ2VvbWV0cnksaT10aGlzLm1hdHJpeFdvcmxkLHI9dC5wYXJhbXMuUG9pbnRzLnRocmVzaG9sZCxvPW4uZHJhd1JhbmdlO2lmKG51bGw9PT1uLmJvdW5kaW5nU3BoZXJlJiZuLmNvbXB1dGVCb3VuZGluZ1NwaGVyZSgpLGx0ZS5jb3B5KG4uYm91bmRpbmdTcGhlcmUpLGx0ZS5hcHBseU1hdHJpeDQoaSksbHRlLnJhZGl1cys9ciwhMT09PXQucmF5LmludGVyc2VjdHNTcGhlcmUobHRlKSlyZXR1cm47YXRlLmNvcHkoaSkuaW52ZXJ0KCksc3RlLmNvcHkodC5yYXkpLmFwcGx5TWF0cml4NChhdGUpO2NvbnN0IGE9ci8oKHRoaXMuc2NhbGUueCt0aGlzLnNjYWxlLnkrdGhpcy5zY2FsZS56KS8zKSxzPWEqYTtpZihuLmlzQnVmZmVyR2VvbWV0cnkpe2NvbnN0IHI9bi5pbmRleCxhPW4uYXR0cmlidXRlcy5wb3NpdGlvbjtpZihudWxsIT09cil7Zm9yKGxldCBuPU1hdGgubWF4KDAsby5zdGFydCksbD1NYXRoLm1pbihyLmNvdW50LG8uc3RhcnQrby5jb3VudCk7bjxsO24rKyl7Y29uc3Qgbz1yLmdldFgobik7Y3RlLmZyb21CdWZmZXJBdHRyaWJ1dGUoYSxvKSxodGUoY3RlLG8scyxpLHQsZSx0aGlzKX19ZWxzZXtmb3IobGV0IG49TWF0aC5tYXgoMCxvLnN0YXJ0KSxyPU1hdGgubWluKGEuY291bnQsby5zdGFydCtvLmNvdW50KTtuPHI7bisrKWN0ZS5mcm9tQnVmZmVyQXR0cmlidXRlKGEsbiksaHRlKGN0ZSxuLHMsaSx0LGUsdGhpcyl9fWVsc2UgY29uc29sZS5lcnJvcigiVEhSRUUuUG9pbnRzLnJheWNhc3QoKSBubyBsb25nZXIgc3VwcG9ydHMgVEhSRUUuR2VvbWV0cnkuIFVzZSBUSFJFRS5CdWZmZXJHZW9tZXRyeSBpbnN0ZWFkLiIpfXVwZGF0ZU1vcnBoVGFyZ2V0cygpe2NvbnN0IHQ9dGhpcy5nZW9tZXRyeTtpZih0LmlzQnVmZmVyR2VvbWV0cnkpe2NvbnN0IGU9dC5tb3JwaEF0dHJpYnV0ZXMsbj1PYmplY3Qua2V5cyhlKTtpZihuLmxlbmd0aD4wKXtjb25zdCB0PWVbblswXV07aWYodm9pZCAwIT09dCl7dGhpcy5tb3JwaFRhcmdldEluZmx1ZW5jZXM9W10sdGhpcy5tb3JwaFRhcmdldERpY3Rpb25hcnk9e307Zm9yKGxldCBlPTAsbj10Lmxlbmd0aDtlPG47ZSsrKXtjb25zdCBuPXRbZV0ubmFtZXx8U3RyaW5nKGUpO3RoaXMubW9ycGhUYXJnZXRJbmZsdWVuY2VzLnB1c2goMCksdGhpcy5tb3JwaFRhcmdldERpY3Rpb25hcnlbbl09ZX19fX1lbHNle2NvbnN0IGU9dC5tb3JwaFRhcmdldHM7dm9pZCAwIT09ZSYmZS5sZW5ndGg+MCYmY29uc29sZS5lcnJvcigiVEhSRUUuUG9pbnRzLnVwZGF0ZU1vcnBoVGFyZ2V0cygpIGRvZXMgbm90IHN1cHBvcnQgVEhSRUUuR2VvbWV0cnkuIFVzZSBUSFJFRS5CdWZmZXJHZW9tZXRyeSBpbnN0ZWFkLiIpfX19ZnVuY3Rpb24gaHRlKHQsZSxuLGkscixvLGEpe2NvbnN0IHM9c3RlLmRpc3RhbmNlU3FUb1BvaW50KHQpO2lmKHM8bil7Y29uc3Qgbj1uZXcgSDV0O3N0ZS5jbG9zZXN0UG9pbnRUb1BvaW50KHQsbiksbi5hcHBseU1hdHJpeDQoaSk7Y29uc3QgbD1yLnJheS5vcmlnaW4uZGlzdGFuY2VUbyhuKTtpZihsPHIubmVhcnx8bD5yLmZhcilyZXR1cm47by5wdXNoKHtkaXN0YW5jZTpsLGRpc3RhbmNlVG9SYXk6TWF0aC5zcXJ0KHMpLHBvaW50Om4saW5kZXg6ZSxmYWNlOm51bGwsb2JqZWN0OmF9KX19dXRlLnByb3RvdHlwZS5pc1BvaW50cz0hMDtjbGFzcyBkdGUgZXh0ZW5kcyBONXR7Y29uc3RydWN0b3IodCxlLG4saSxyLG8sYSxzLGwpe3N1cGVyKHQsZSxuLGkscixvLGEscyxsKSx0aGlzLmZvcm1hdD12b2lkIDAhPT1hP2E6dzJ0LHRoaXMubWluRmlsdGVyPXZvaWQgMCE9PW8/bzpwMnQsdGhpcy5tYWdGaWx0ZXI9dm9pZCAwIT09cj9yOnAydCx0aGlzLmdlbmVyYXRlTWlwbWFwcz0hMTtjb25zdCBjPXRoaXM7InJlcXVlc3RWaWRlb0ZyYW1lQ2FsbGJhY2siaW4gdCYmdC5yZXF1ZXN0VmlkZW9GcmFtZUNhbGxiYWNrKChmdW5jdGlvbiBlKCl7Yy5uZWVkc1VwZGF0ZT0hMCx0LnJlcXVlc3RWaWRlb0ZyYW1lQ2FsbGJhY2soZSl9KSl9Y2xvbmUoKXtyZXR1cm4gbmV3IHRoaXMuY29uc3RydWN0b3IodGhpcy5pbWFnZSkuY29weSh0aGlzKX11cGRhdGUoKXtjb25zdCB0PXRoaXMuaW1hZ2U7ITE9PT0icmVxdWVzdFZpZGVvRnJhbWVDYWxsYmFjayJpbiB0JiZ0LnJlYWR5U3RhdGU+PXQuSEFWRV9DVVJSRU5UX0RBVEEmJih0aGlzLm5lZWRzVXBkYXRlPSEwKX19ZHRlLnByb3RvdHlwZS5pc1ZpZGVvVGV4dHVyZT0hMDtjbGFzcyBwdGUgZXh0ZW5kcyBONXR7Y29uc3RydWN0b3IodCxlLG4saSxyLG8sYSxzLGwsYyx1LGgpe3N1cGVyKG51bGwsbyxhLHMsbCxjLGkscix1LGgpLHRoaXMuaW1hZ2U9e3dpZHRoOmUsaGVpZ2h0Om59LHRoaXMubWlwbWFwcz10LHRoaXMuZmxpcFk9ITEsdGhpcy5nZW5lcmF0ZU1pcG1hcHM9ITF9fXB0ZS5wcm90b3R5cGUuaXNDb21wcmVzc2VkVGV4dHVyZT0hMDtjbGFzcyBmdGUgZXh0ZW5kcyBONXR7Y29uc3RydWN0b3IodCxlLG4saSxyLG8sYSxzLGwpe3N1cGVyKHQsZSxuLGkscixvLGEscyxsKSx0aGlzLm5lZWRzVXBkYXRlPSEwfX1mdGUucHJvdG90eXBlLmlzQ2FudmFzVGV4dHVyZT0hMDtjbGFzcyBtdGUgZXh0ZW5kcyBONXR7Y29uc3RydWN0b3IodCxlLG4saSxyLG8sYSxzLGwsYyl7aWYoKGM9dm9pZCAwIT09Yz9jOk0ydCkhPT1NMnQmJmMhPT1FMnQpdGhyb3cgbmV3IEVycm9yKCJEZXB0aFRleHR1cmUgZm9ybWF0IG11c3QgYmUgZWl0aGVyIFRIUkVFLkRlcHRoRm9ybWF0IG9yIFRIUkVFLkRlcHRoU3RlbmNpbEZvcm1hdCIpO3ZvaWQgMD09PW4mJmM9PT1NMnQmJihuPV8ydCksdm9pZCAwPT09biYmYz09PUUydCYmKG49eDJ0KSxzdXBlcihudWxsLGkscixvLGEscyxjLG4sbCksdGhpcy5pbWFnZT17d2lkdGg6dCxoZWlnaHQ6ZX0sdGhpcy5tYWdGaWx0ZXI9dm9pZCAwIT09YT9hOnUydCx0aGlzLm1pbkZpbHRlcj12b2lkIDAhPT1zP3M6dTJ0LHRoaXMuZmxpcFk9ITEsdGhpcy5nZW5lcmF0ZU1pcG1hcHM9ITF9fW10ZS5wcm90b3R5cGUuaXNEZXB0aFRleHR1cmU9ITA7Y2xhc3MgZ3RlIGV4dGVuZHMgTjR0e2NvbnN0cnVjdG9yKHQ9MSxlPTgsbj0wLGk9MipNYXRoLlBJKXtzdXBlcigpLHRoaXMudHlwZT0iQ2lyY2xlR2VvbWV0cnkiLHRoaXMucGFyYW1ldGVycz17cmFkaXVzOnQsc2VnbWVudHM6ZSx0aGV0YVN0YXJ0Om4sdGhldGFMZW5ndGg6aX0sZT1NYXRoLm1heCgzLGUpO2NvbnN0IHI9W10sbz1bXSxhPVtdLHM9W10sbD1uZXcgSDV0LGM9bmV3IEM1dDtvLnB1c2goMCwwLDApLGEucHVzaCgwLDAsMSkscy5wdXNoKC41LC41KTtmb3IobGV0IHI9MCx1PTM7cjw9ZTtyKyssdSs9Myl7Y29uc3QgaD1uK3IvZSppO2wueD10Kk1hdGguY29zKGgpLGwueT10Kk1hdGguc2luKGgpLG8ucHVzaChsLngsbC55LGwueiksYS5wdXNoKDAsMCwxKSxjLng9KG9bdV0vdCsxKS8yLGMueT0ob1t1KzFdL3QrMSkvMixzLnB1c2goYy54LGMueSl9Zm9yKGxldCB0PTE7dDw9ZTt0Kyspci5wdXNoKHQsdCsxLDApO3RoaXMuc2V0SW5kZXgociksdGhpcy5zZXRBdHRyaWJ1dGUoInBvc2l0aW9uIixuZXcgYjR0KG8sMykpLHRoaXMuc2V0QXR0cmlidXRlKCJub3JtYWwiLG5ldyBiNHQoYSwzKSksdGhpcy5zZXRBdHRyaWJ1dGUoInV2IixuZXcgYjR0KHMsMikpfXN0YXRpYyBmcm9tSlNPTih0KXtyZXR1cm4gbmV3IGd0ZSh0LnJhZGl1cyx0LnNlZ21lbnRzLHQudGhldGFTdGFydCx0LnRoZXRhTGVuZ3RoKX19Y2xhc3MgX3RlIGV4dGVuZHMgTjR0e2NvbnN0cnVjdG9yKHQ9MSxlPTEsbj0xLGk9OCxyPTEsbz0hMSxhPTAscz0yKk1hdGguUEkpe3N1cGVyKCksdGhpcy50eXBlPSJDeWxpbmRlckdlb21ldHJ5Iix0aGlzLnBhcmFtZXRlcnM9e3JhZGl1c1RvcDp0LHJhZGl1c0JvdHRvbTplLGhlaWdodDpuLHJhZGlhbFNlZ21lbnRzOmksaGVpZ2h0U2VnbWVudHM6cixvcGVuRW5kZWQ6byx0aGV0YVN0YXJ0OmEsdGhldGFMZW5ndGg6c307Y29uc3QgbD10aGlzO2k9TWF0aC5mbG9vcihpKSxyPU1hdGguZmxvb3Iocik7Y29uc3QgYz1bXSx1PVtdLGg9W10sZD1bXTtsZXQgcD0wO2NvbnN0IGY9W10sbT1uLzI7bGV0IGc9MDtmdW5jdGlvbiBfKG4pe2NvbnN0IHI9cCxvPW5ldyBDNXQsZj1uZXcgSDV0O2xldCBfPTA7Y29uc3QgeT0hMD09PW4/dDplLHY9ITA9PT1uPzE6LTE7Zm9yKGxldCB0PTE7dDw9aTt0KyspdS5wdXNoKDAsbSp2LDApLGgucHVzaCgwLHYsMCksZC5wdXNoKC41LC41KSxwKys7Y29uc3QgYj1wO2ZvcihsZXQgdD0wO3Q8PWk7dCsrKXtjb25zdCBlPXQvaSpzK2Esbj1NYXRoLmNvcyhlKSxyPU1hdGguc2luKGUpO2YueD15KnIsZi55PW0qdixmLno9eSpuLHUucHVzaChmLngsZi55LGYueiksaC5wdXNoKDAsdiwwKSxvLng9LjUqbisuNSxvLnk9LjUqcip2Ky41LGQucHVzaChvLngsby55KSxwKyt9Zm9yKGxldCB0PTA7dDxpO3QrKyl7Y29uc3QgZT1yK3QsaT1iK3Q7ITA9PT1uP2MucHVzaChpLGkrMSxlKTpjLnB1c2goaSsxLGksZSksXys9M31sLmFkZEdyb3VwKGcsXywhMD09PW4/MToyKSxnKz1ffSEoZnVuY3Rpb24geSgpe2NvbnN0IG89bmV3IEg1dCxfPW5ldyBINXQ7bGV0IHk9MDtjb25zdCB2PShlLXQpL247Zm9yKGxldCBsPTA7bDw9cjtsKyspe2NvbnN0IGM9W10sZz1sL3IseT1nKihlLXQpK3Q7Zm9yKGxldCB0PTA7dDw9aTt0Kyspe2NvbnN0IGU9dC9pLHI9ZSpzK2EsbD1NYXRoLnNpbihyKSxmPU1hdGguY29zKHIpO18ueD15KmwsXy55PS1nKm4rbSxfLno9eSpmLHUucHVzaChfLngsXy55LF8ueiksby5zZXQobCx2LGYpLm5vcm1hbGl6ZSgpLGgucHVzaChvLngsby55LG8ueiksZC5wdXNoKGUsMS1nKSxjLnB1c2gocCsrKX1mLnB1c2goYyl9Zm9yKGxldCB0PTA7dDxpO3QrKylmb3IobGV0IGU9MDtlPHI7ZSsrKXtjb25zdCBuPWZbZSsxXVt0XSxpPWZbZSsxXVt0KzFdLHI9ZltlXVt0KzFdO2MucHVzaChmW2VdW3RdLG4sciksYy5wdXNoKG4saSxyKSx5Kz02fWwuYWRkR3JvdXAoZyx5LDApLGcrPXl9KSgpLCExPT09byYmKHQ+MCYmXyghMCksZT4wJiZfKCExKSksdGhpcy5zZXRJbmRleChjKSx0aGlzLnNldEF0dHJpYnV0ZSgicG9zaXRpb24iLG5ldyBiNHQodSwzKSksdGhpcy5zZXRBdHRyaWJ1dGUoIm5vcm1hbCIsbmV3IGI0dChoLDMpKSx0aGlzLnNldEF0dHJpYnV0ZSgidXYiLG5ldyBiNHQoZCwyKSl9c3RhdGljIGZyb21KU09OKHQpe3JldHVybiBuZXcgX3RlKHQucmFkaXVzVG9wLHQucmFkaXVzQm90dG9tLHQuaGVpZ2h0LHQucmFkaWFsU2VnbWVudHMsdC5oZWlnaHRTZWdtZW50cyx0Lm9wZW5FbmRlZCx0LnRoZXRhU3RhcnQsdC50aGV0YUxlbmd0aCl9fWNsYXNzIHl0ZSBleHRlbmRzIF90ZXtjb25zdHJ1Y3Rvcih0PTEsZT0xLG49OCxpPTEscj0hMSxvPTAsYT0yKk1hdGguUEkpe3N1cGVyKDAsdCxlLG4saSxyLG8sYSksdGhpcy50eXBlPSJDb25lR2VvbWV0cnkiLHRoaXMucGFyYW1ldGVycz17cmFkaXVzOnQsaGVpZ2h0OmUscmFkaWFsU2VnbWVudHM6bixoZWlnaHRTZWdtZW50czppLG9wZW5FbmRlZDpyLHRoZXRhU3RhcnQ6byx0aGV0YUxlbmd0aDphfX1zdGF0aWMgZnJvbUpTT04odCl7cmV0dXJuIG5ldyB5dGUodC5yYWRpdXMsdC5oZWlnaHQsdC5yYWRpYWxTZWdtZW50cyx0LmhlaWdodFNlZ21lbnRzLHQub3BlbkVuZGVkLHQudGhldGFTdGFydCx0LnRoZXRhTGVuZ3RoKX19Y2xhc3MgdnRlIGV4dGVuZHMgTjR0e2NvbnN0cnVjdG9yKHQsZSxuPTEsaT0wKXtzdXBlcigpLHRoaXMudHlwZT0iUG9seWhlZHJvbkdlb21ldHJ5Iix0aGlzLnBhcmFtZXRlcnM9e3ZlcnRpY2VzOnQsaW5kaWNlczplLHJhZGl1czpuLGRldGFpbDppfTtjb25zdCByPVtdLG89W107ZnVuY3Rpb24gYSh0LGUsbixpKXtjb25zdCByPWkrMSxvPVtdO2ZvcihsZXQgaT0wO2k8PXI7aSsrKXtvW2ldPVtdO2NvbnN0IGE9dC5jbG9uZSgpLmxlcnAobixpL3IpLHM9ZS5jbG9uZSgpLmxlcnAobixpL3IpLGw9ci1pO2ZvcihsZXQgdD0wO3Q8PWw7dCsrKW9baV1bdF09MD09PXQmJmk9PT1yP2E6YS5jbG9uZSgpLmxlcnAocyx0L2wpfWZvcihsZXQgdD0wO3Q8cjt0KyspZm9yKGxldCBlPTA7ZTwyKihyLXQpLTE7ZSsrKXtjb25zdCBuPU1hdGguZmxvb3IoZS8yKTtlJTI9PTA/KHMob1t0XVtuKzFdKSxzKG9bdCsxXVtuXSkscyhvW3RdW25dKSk6KHMob1t0XVtuKzFdKSxzKG9bdCsxXVtuKzFdKSxzKG9bdCsxXVtuXSkpfX1mdW5jdGlvbiBzKHQpe3IucHVzaCh0LngsdC55LHQueil9ZnVuY3Rpb24gbChlLG4pe2NvbnN0IGk9MyplO24ueD10W2krMF0sbi55PXRbaSsxXSxuLno9dFtpKzJdfWZ1bmN0aW9uIGModCxlLG4saSl7aTwwJiYxPT09dC54JiYob1tlXT10LngtMSksMD09PW4ueCYmMD09PW4ueiYmKG9bZV09aS8yL01hdGguUEkrLjUpfWZ1bmN0aW9uIHUodCl7cmV0dXJuIE1hdGguYXRhbjIodC56LC10LngpfSEoZnVuY3Rpb24gaCh0KXtjb25zdCBuPW5ldyBINXQsaT1uZXcgSDV0LHI9bmV3IEg1dDtmb3IobGV0IG89MDtvPGUubGVuZ3RoO28rPTMpbChlW28rMF0sbiksbChlW28rMV0saSksbChlW28rMl0sciksYShuLGkscix0KX0pKGkpLChmdW5jdGlvbiBkKHQpe2NvbnN0IGU9bmV3IEg1dDtmb3IobGV0IG49MDtuPHIubGVuZ3RoO24rPTMpZS54PXJbbiswXSxlLnk9cltuKzFdLGUuej1yW24rMl0sZS5ub3JtYWxpemUoKS5tdWx0aXBseVNjYWxhcih0KSxyW24rMF09ZS54LHJbbisxXT1lLnkscltuKzJdPWUuen0pKG4pLChmdW5jdGlvbiBwKCl7Y29uc3QgdD1uZXcgSDV0O2ZvcihsZXQgbj0wO248ci5sZW5ndGg7bis9Myl7dC54PXJbbiswXSx0Lnk9cltuKzFdLHQuej1yW24rMl07Y29uc3QgaT11KHQpLzIvTWF0aC5QSSsuNSxhPShlPXQsTWF0aC5hdGFuMigtZS55LE1hdGguc3FydChlLngqZS54K2UueiplLnopKS9NYXRoLlBJKy41KTtvLnB1c2goaSwxLWEpfXZhciBlOyhmdW5jdGlvbiBuKCl7Y29uc3QgdD1uZXcgSDV0LGU9bmV3IEg1dCxuPW5ldyBINXQsaT1uZXcgSDV0LGE9bmV3IEM1dCxzPW5ldyBDNXQsbD1uZXcgQzV0O2ZvcihsZXQgaD0wLGQ9MDtoPHIubGVuZ3RoO2grPTksZCs9Nil7dC5zZXQocltoKzBdLHJbaCsxXSxyW2grMl0pLGUuc2V0KHJbaCszXSxyW2grNF0scltoKzVdKSxuLnNldChyW2grNl0scltoKzddLHJbaCs4XSksYS5zZXQob1tkKzBdLG9bZCsxXSkscy5zZXQob1tkKzJdLG9bZCszXSksbC5zZXQob1tkKzRdLG9bZCs1XSksaS5jb3B5KHQpLmFkZChlKS5hZGQobikuZGl2aWRlU2NhbGFyKDMpO2NvbnN0IHA9dShpKTtjKGEsZCswLHQscCksYyhzLGQrMixlLHApLGMobCxkKzQsbixwKX19KSgpLChmdW5jdGlvbiBpKCl7Zm9yKGxldCB0PTA7dDxvLmxlbmd0aDt0Kz02KXtjb25zdCBlPW9bdCswXSxuPW9bdCsyXSxpPW9bdCs0XSxyPU1hdGgubWF4KGUsbixpKSxhPU1hdGgubWluKGUsbixpKTtyPi45JiZhPC4xJiYoZTwuMiYmKG9bdCswXSs9MSksbjwuMiYmKG9bdCsyXSs9MSksaTwuMiYmKG9bdCs0XSs9MSkpfX0pKCl9KSgpLHRoaXMuc2V0QXR0cmlidXRlKCJwb3NpdGlvbiIsbmV3IGI0dChyLDMpKSx0aGlzLnNldEF0dHJpYnV0ZSgibm9ybWFsIixuZXcgYjR0KHIuc2xpY2UoKSwzKSksdGhpcy5zZXRBdHRyaWJ1dGUoInV2IixuZXcgYjR0KG8sMikpLDA9PT1pP3RoaXMuY29tcHV0ZVZlcnRleE5vcm1hbHMoKTp0aGlzLm5vcm1hbGl6ZU5vcm1hbHMoKX1zdGF0aWMgZnJvbUpTT04odCl7cmV0dXJuIG5ldyB2dGUodC52ZXJ0aWNlcyx0LmluZGljZXMsdC5yYWRpdXMsdC5kZXRhaWxzKX19Y2xhc3MgYnRlIGV4dGVuZHMgdnRle2NvbnN0cnVjdG9yKHQ9MSxlPTApe2NvbnN0IG49KDErTWF0aC5zcXJ0KDUpKS8yLGk9MS9uO3N1cGVyKFstMSwtMSwtMSwtMSwtMSwxLC0xLDEsLTEsLTEsMSwxLDEsLTEsLTEsMSwtMSwxLDEsMSwtMSwxLDEsMSwwLC1pLC1uLDAsLWksbiwwLGksLW4sMCxpLG4sLWksLW4sMCwtaSxuLDAsaSwtbiwwLGksbiwwLC1uLDAsLWksbiwwLC1pLC1uLDAsaSxuLDAsaV0sWzMsMTEsNywzLDcsMTUsMywxNSwxMyw3LDE5LDE3LDcsMTcsNiw3LDYsMTUsMTcsNCw4LDE3LDgsMTAsMTcsMTAsNiw4LDAsMTYsOCwxNiwyLDgsMiwxMCwwLDEyLDEsMCwxLDE4LDAsMTgsMTYsNiwxMCwyLDYsMiwxMyw2LDEzLDE1LDIsMTYsMTgsMiwxOCwzLDIsMywxMywxOCwxLDksMTgsOSwxMSwxOCwxMSwzLDQsMTQsMTIsNCwxMiwwLDQsMCw4LDExLDksNSwxMSw1LDE5LDExLDE5LDcsMTksNSwxNCwxOSwxNCw0LDE5LDQsMTcsMSwxMiwxNCwxLDE0LDUsMSw1LDldLHQsZSksdGhpcy50eXBlPSJEb2RlY2FoZWRyb25HZW9tZXRyeSIsdGhpcy5wYXJhbWV0ZXJzPXtyYWRpdXM6dCxkZXRhaWw6ZX19c3RhdGljIGZyb21KU09OKHQpe3JldHVybiBuZXcgYnRlKHQucmFkaXVzLHQuZGV0YWlsKX19Y29uc3QgeHRlPW5ldyBINXQsd3RlPW5ldyBINXQsU3RlPW5ldyBINXQsTXRlPW5ldyBKM3Q7Y2xhc3MgRXRlIGV4dGVuZHMgTjR0e2NvbnN0cnVjdG9yKHQsZSl7aWYoc3VwZXIoKSx0aGlzLnR5cGU9IkVkZ2VzR2VvbWV0cnkiLHRoaXMucGFyYW1ldGVycz17dGhyZXNob2xkQW5nbGU6ZX0sZT12b2lkIDAhPT1lP2U6MSwhMD09PXQuaXNHZW9tZXRyeSlyZXR1cm4gdm9pZCBjb25zb2xlLmVycm9yKCJUSFJFRS5FZGdlc0dlb21ldHJ5IG5vIGxvbmdlciBzdXBwb3J0cyBUSFJFRS5HZW9tZXRyeS4gVXNlIFRIUkVFLkJ1ZmZlckdlb21ldHJ5IGluc3RlYWQuIik7Y29uc3Qgbj1NYXRoLmNvcyhyNXQqZSksaT10LmdldEluZGV4KCkscj10LmdldEF0dHJpYnV0ZSgicG9zaXRpb24iKSxvPWk/aS5jb3VudDpyLmNvdW50LGE9WzAsMCwwXSxzPVsiYSIsImIiLCJjIl0sbD1uZXcgQXJyYXkoMyksYz17fSx1PVtdO2ZvcihsZXQgdD0wO3Q8bzt0Kz0zKXtpPyhhWzBdPWkuZ2V0WCh0KSxhWzFdPWkuZ2V0WCh0KzEpLGFbMl09aS5nZXRYKHQrMikpOihhWzBdPXQsYVsxXT10KzEsYVsyXT10KzIpO2NvbnN0e2E6ZSxiOm8sYzpofT1NdGU7aWYoZS5mcm9tQnVmZmVyQXR0cmlidXRlKHIsYVswXSksby5mcm9tQnVmZmVyQXR0cmlidXRlKHIsYVsxXSksaC5mcm9tQnVmZmVyQXR0cmlidXRlKHIsYVsyXSksTXRlLmdldE5vcm1hbChTdGUpLGxbMF09YCR7ZS54fSwke2UueX0sJHtlLnp9YCxsWzFdPWAke28ueH0sJHtvLnl9LCR7by56fWAsbFsyXT1gJHtoLnh9LCR7aC55fSwke2guen1gLGxbMF0hPT1sWzFdJiZsWzFdIT09bFsyXSYmbFsyXSE9PWxbMF0pZm9yKGxldCB0PTA7dDwzO3QrKyl7Y29uc3QgZT0odCsxKSUzLGk9bFt0XSxyPWxbZV0sbz1NdGVbc1t0XV0saD1NdGVbc1tlXV0sZD1gJHtpfV8ke3J9YCxwPWAke3J9XyR7aX1gO3AgaW4gYyYmY1twXT8oU3RlLmRvdChjW3BdLm5vcm1hbCk8PW4mJih1LnB1c2goby54LG8ueSxvLnopLHUucHVzaChoLngsaC55LGgueikpLGNbcF09bnVsbCk6ZCBpbiBjfHwoY1tkXT17aW5kZXgwOmFbdF0saW5kZXgxOmFbZV0sbm9ybWFsOlN0ZS5jbG9uZSgpfSl9fWZvcihjb25zdCB0IGluIGMpaWYoY1t0XSl7Y29uc3R7aW5kZXgwOmUsaW5kZXgxOm59PWNbdF07eHRlLmZyb21CdWZmZXJBdHRyaWJ1dGUocixlKSx3dGUuZnJvbUJ1ZmZlckF0dHJpYnV0ZShyLG4pLHUucHVzaCh4dGUueCx4dGUueSx4dGUueiksdS5wdXNoKHd0ZS54LHd0ZS55LHd0ZS56KX10aGlzLnNldEF0dHJpYnV0ZSgicG9zaXRpb24iLG5ldyBiNHQodSwzKSl9fWNsYXNzIFR0ZXtjb25zdHJ1Y3Rvcigpe3RoaXMudHlwZT0iQ3VydmUiLHRoaXMuYXJjTGVuZ3RoRGl2aXNpb25zPTIwMH1nZXRQb2ludCgpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLkN1cnZlOiAuZ2V0UG9pbnQoKSBub3QgaW1wbGVtZW50ZWQuIiksbnVsbH1nZXRQb2ludEF0KHQsZSl7Y29uc3Qgbj10aGlzLmdldFV0b1RtYXBwaW5nKHQpO3JldHVybiB0aGlzLmdldFBvaW50KG4sZSl9Z2V0UG9pbnRzKHQ9NSl7Y29uc3QgZT1bXTtmb3IobGV0IG49MDtuPD10O24rKyllLnB1c2godGhpcy5nZXRQb2ludChuL3QpKTtyZXR1cm4gZX1nZXRTcGFjZWRQb2ludHModD01KXtjb25zdCBlPVtdO2ZvcihsZXQgbj0wO248PXQ7bisrKWUucHVzaCh0aGlzLmdldFBvaW50QXQobi90KSk7cmV0dXJuIGV9Z2V0TGVuZ3RoKCl7Y29uc3QgdD10aGlzLmdldExlbmd0aHMoKTtyZXR1cm4gdFt0Lmxlbmd0aC0xXX1nZXRMZW5ndGhzKHQ9dGhpcy5hcmNMZW5ndGhEaXZpc2lvbnMpe2lmKHRoaXMuY2FjaGVBcmNMZW5ndGhzJiZ0aGlzLmNhY2hlQXJjTGVuZ3Rocy5sZW5ndGg9PT10KzEmJiF0aGlzLm5lZWRzVXBkYXRlKXJldHVybiB0aGlzLmNhY2hlQXJjTGVuZ3Roczt0aGlzLm5lZWRzVXBkYXRlPSExO2NvbnN0IGU9W107bGV0IG4saT10aGlzLmdldFBvaW50KDApLHI9MDtlLnB1c2goMCk7Zm9yKGxldCBvPTE7bzw9dDtvKyspbj10aGlzLmdldFBvaW50KG8vdCkscis9bi5kaXN0YW5jZVRvKGkpLGUucHVzaChyKSxpPW47cmV0dXJuIHRoaXMuY2FjaGVBcmNMZW5ndGhzPWUsZX11cGRhdGVBcmNMZW5ndGhzKCl7dGhpcy5uZWVkc1VwZGF0ZT0hMCx0aGlzLmdldExlbmd0aHMoKX1nZXRVdG9UbWFwcGluZyh0LGUpe2NvbnN0IG49dGhpcy5nZXRMZW5ndGhzKCk7bGV0IGk9MDtjb25zdCByPW4ubGVuZ3RoO2xldCBvO289ZXx8dCpuW3ItMV07bGV0IGEscz0wLGw9ci0xO2Zvcig7czw9bDspaWYoaT1NYXRoLmZsb29yKHMrKGwtcykvMiksYT1uW2ldLW8sYTwwKXM9aSsxO2Vsc2V7aWYoIShhPjApKXtsPWk7YnJlYWt9bD1pLTF9aWYoaT1sLG5baV09PT1vKXJldHVybiBpLyhyLTEpO2NvbnN0IGM9bltpXTtyZXR1cm4oaSsoby1jKS8obltpKzFdLWMpKS8oci0xKX1nZXRUYW5nZW50KHQsZSl7Y29uc3Qgbj0xZS00O2xldCBpPXQtbixyPXQrbjtpPDAmJihpPTApLHI+MSYmKHI9MSk7Y29uc3Qgbz10aGlzLmdldFBvaW50KGkpLGE9dGhpcy5nZXRQb2ludChyKSxzPWV8fChvLmlzVmVjdG9yMj9uZXcgQzV0Om5ldyBINXQpO3JldHVybiBzLmNvcHkoYSkuc3ViKG8pLm5vcm1hbGl6ZSgpLHN9Z2V0VGFuZ2VudEF0KHQsZSl7Y29uc3Qgbj10aGlzLmdldFV0b1RtYXBwaW5nKHQpO3JldHVybiB0aGlzLmdldFRhbmdlbnQobixlKX1jb21wdXRlRnJlbmV0RnJhbWVzKHQsZSl7Y29uc3Qgbj1uZXcgSDV0LGk9W10scj1bXSxvPVtdLGE9bmV3IEg1dCxzPW5ldyBnM3Q7Zm9yKGxldCBlPTA7ZTw9dDtlKyspe2lbZV09dGhpcy5nZXRUYW5nZW50QXQoZS90LG5ldyBINXQpLGlbZV0ubm9ybWFsaXplKCl9clswXT1uZXcgSDV0LG9bMF09bmV3IEg1dDtsZXQgbD1OdW1iZXIuTUFYX1ZBTFVFO2NvbnN0IGM9TWF0aC5hYnMoaVswXS54KSx1PU1hdGguYWJzKGlbMF0ueSksaD1NYXRoLmFicyhpWzBdLnopO2M8PWwmJihsPWMsbi5zZXQoMSwwLDApKSx1PD1sJiYobD11LG4uc2V0KDAsMSwwKSksaDw9bCYmbi5zZXQoMCwwLDEpLGEuY3Jvc3NWZWN0b3JzKGlbMF0sbikubm9ybWFsaXplKCksclswXS5jcm9zc1ZlY3RvcnMoaVswXSxhKSxvWzBdLmNyb3NzVmVjdG9ycyhpWzBdLHJbMF0pO2ZvcihsZXQgZT0xO2U8PXQ7ZSsrKXtpZihyW2VdPXJbZS0xXS5jbG9uZSgpLG9bZV09b1tlLTFdLmNsb25lKCksYS5jcm9zc1ZlY3RvcnMoaVtlLTFdLGlbZV0pLGEubGVuZ3RoKCk+TnVtYmVyLkVQU0lMT04pe2Eubm9ybWFsaXplKCk7Y29uc3QgdD1NYXRoLmFjb3MoczV0KGlbZS0xXS5kb3QoaVtlXSksLTEsMSkpO3JbZV0uYXBwbHlNYXRyaXg0KHMubWFrZVJvdGF0aW9uQXhpcyhhLHQpKX1vW2VdLmNyb3NzVmVjdG9ycyhpW2VdLHJbZV0pfWlmKCEwPT09ZSl7bGV0IGU9TWF0aC5hY29zKHM1dChyWzBdLmRvdChyW3RdKSwtMSwxKSk7ZS89dCxpWzBdLmRvdChhLmNyb3NzVmVjdG9ycyhyWzBdLHJbdF0pKT4wJiYoZT0tZSk7Zm9yKGxldCBuPTE7bjw9dDtuKyspcltuXS5hcHBseU1hdHJpeDQocy5tYWtlUm90YXRpb25BeGlzKGlbbl0sZSpuKSksb1tuXS5jcm9zc1ZlY3RvcnMoaVtuXSxyW25dKX1yZXR1cm57dGFuZ2VudHM6aSxub3JtYWxzOnIsYmlub3JtYWxzOm99fWNsb25lKCl7cmV0dXJuKG5ldyB0aGlzLmNvbnN0cnVjdG9yKS5jb3B5KHRoaXMpfWNvcHkodCl7cmV0dXJuIHRoaXMuYXJjTGVuZ3RoRGl2aXNpb25zPXQuYXJjTGVuZ3RoRGl2aXNpb25zLHRoaXN9dG9KU09OKCl7Y29uc3QgdD17bWV0YWRhdGE6e3ZlcnNpb246NC41LHR5cGU6IkN1cnZlIixnZW5lcmF0b3I6IkN1cnZlLnRvSlNPTiJ9fTtyZXR1cm4gdC5hcmNMZW5ndGhEaXZpc2lvbnM9dGhpcy5hcmNMZW5ndGhEaXZpc2lvbnMsdC50eXBlPXRoaXMudHlwZSx0fWZyb21KU09OKHQpe3JldHVybiB0aGlzLmFyY0xlbmd0aERpdmlzaW9ucz10LmFyY0xlbmd0aERpdmlzaW9ucyx0aGlzfX1jbGFzcyBDdGUgZXh0ZW5kcyBUdGV7Y29uc3RydWN0b3IodD0wLGU9MCxuPTEsaT0xLHI9MCxvPTIqTWF0aC5QSSxhPSExLHM9MCl7c3VwZXIoKSx0aGlzLnR5cGU9IkVsbGlwc2VDdXJ2ZSIsdGhpcy5hWD10LHRoaXMuYVk9ZSx0aGlzLnhSYWRpdXM9bix0aGlzLnlSYWRpdXM9aSx0aGlzLmFTdGFydEFuZ2xlPXIsdGhpcy5hRW5kQW5nbGU9byx0aGlzLmFDbG9ja3dpc2U9YSx0aGlzLmFSb3RhdGlvbj1zfWdldFBvaW50KHQsZSl7Y29uc3Qgbj1lfHxuZXcgQzV0LGk9MipNYXRoLlBJO2xldCByPXRoaXMuYUVuZEFuZ2xlLXRoaXMuYVN0YXJ0QW5nbGU7Y29uc3Qgbz1NYXRoLmFicyhyKTxOdW1iZXIuRVBTSUxPTjtmb3IoO3I8MDspcis9aTtmb3IoO3I+aTspci09aTtyPE51bWJlci5FUFNJTE9OJiYocj1vPzA6aSksITAhPT10aGlzLmFDbG9ja3dpc2V8fG98fChyPT09aT9yPS1pOnItPWkpO2NvbnN0IGE9dGhpcy5hU3RhcnRBbmdsZSt0KnI7bGV0IHM9dGhpcy5hWCt0aGlzLnhSYWRpdXMqTWF0aC5jb3MoYSksbD10aGlzLmFZK3RoaXMueVJhZGl1cypNYXRoLnNpbihhKTtpZigwIT09dGhpcy5hUm90YXRpb24pe2NvbnN0IHQ9TWF0aC5jb3ModGhpcy5hUm90YXRpb24pLGU9TWF0aC5zaW4odGhpcy5hUm90YXRpb24pLG49cy10aGlzLmFYLGk9bC10aGlzLmFZO3M9bip0LWkqZSt0aGlzLmFYLGw9biplK2kqdCt0aGlzLmFZfXJldHVybiBuLnNldChzLGwpfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5hWD10LmFYLHRoaXMuYVk9dC5hWSx0aGlzLnhSYWRpdXM9dC54UmFkaXVzLHRoaXMueVJhZGl1cz10LnlSYWRpdXMsdGhpcy5hU3RhcnRBbmdsZT10LmFTdGFydEFuZ2xlLHRoaXMuYUVuZEFuZ2xlPXQuYUVuZEFuZ2xlLHRoaXMuYUNsb2Nrd2lzZT10LmFDbG9ja3dpc2UsdGhpcy5hUm90YXRpb249dC5hUm90YXRpb24sdGhpc310b0pTT04oKXtjb25zdCB0PXN1cGVyLnRvSlNPTigpO3JldHVybiB0LmFYPXRoaXMuYVgsdC5hWT10aGlzLmFZLHQueFJhZGl1cz10aGlzLnhSYWRpdXMsdC55UmFkaXVzPXRoaXMueVJhZGl1cyx0LmFTdGFydEFuZ2xlPXRoaXMuYVN0YXJ0QW5nbGUsdC5hRW5kQW5nbGU9dGhpcy5hRW5kQW5nbGUsdC5hQ2xvY2t3aXNlPXRoaXMuYUNsb2Nrd2lzZSx0LmFSb3RhdGlvbj10aGlzLmFSb3RhdGlvbix0fWZyb21KU09OKHQpe3JldHVybiBzdXBlci5mcm9tSlNPTih0KSx0aGlzLmFYPXQuYVgsdGhpcy5hWT10LmFZLHRoaXMueFJhZGl1cz10LnhSYWRpdXMsdGhpcy55UmFkaXVzPXQueVJhZGl1cyx0aGlzLmFTdGFydEFuZ2xlPXQuYVN0YXJ0QW5nbGUsdGhpcy5hRW5kQW5nbGU9dC5hRW5kQW5nbGUsdGhpcy5hQ2xvY2t3aXNlPXQuYUNsb2Nrd2lzZSx0aGlzLmFSb3RhdGlvbj10LmFSb3RhdGlvbix0aGlzfX1DdGUucHJvdG90eXBlLmlzRWxsaXBzZUN1cnZlPSEwO2NsYXNzIEF0ZSBleHRlbmRzIEN0ZXtjb25zdHJ1Y3Rvcih0LGUsbixpLHIsbyl7c3VwZXIodCxlLG4sbixpLHIsbyksdGhpcy50eXBlPSJBcmNDdXJ2ZSJ9fWZ1bmN0aW9uIGt0ZSgpe2xldCB0PTAsZT0wLG49MCxpPTA7ZnVuY3Rpb24gcihyLG8sYSxzKXt0PXIsZT1hLG49LTMqciszKm8tMiphLXMsaT0yKnItMipvK2Erc31yZXR1cm57aW5pdENhdG11bGxSb206ZnVuY3Rpb24odCxlLG4saSxvKXtyKGUsbixvKihuLXQpLG8qKGktZSkpfSxpbml0Tm9udW5pZm9ybUNhdG11bGxSb206ZnVuY3Rpb24odCxlLG4saSxvLGEscyl7bGV0IGw9KGUtdCkvby0obi10KS8obythKSsobi1lKS9hLGM9KG4tZSkvYS0oaS1lKS8oYStzKSsoaS1uKS9zO2wqPWEsYyo9YSxyKGUsbixsLGMpfSxjYWxjOmZ1bmN0aW9uKHIpe2NvbnN0IG89cipyO3JldHVybiB0K2UqcituKm8raSoobypyKX19fUF0ZS5wcm90b3R5cGUuaXNBcmNDdXJ2ZT0hMDtjb25zdCBMdGU9bmV3IEg1dCxQdGU9bmV3IGt0ZSxOdGU9bmV3IGt0ZSxJdGU9bmV3IGt0ZTtjbGFzcyBSdGUgZXh0ZW5kcyBUdGV7Y29uc3RydWN0b3IodD1bXSxlPSExLG49ImNlbnRyaXBldGFsIixpPS41KXtzdXBlcigpLHRoaXMudHlwZT0iQ2F0bXVsbFJvbUN1cnZlMyIsdGhpcy5wb2ludHM9dCx0aGlzLmNsb3NlZD1lLHRoaXMuY3VydmVUeXBlPW4sdGhpcy50ZW5zaW9uPWl9Z2V0UG9pbnQodCxlPW5ldyBINXQpe2NvbnN0IG49ZSxpPXRoaXMucG9pbnRzLHI9aS5sZW5ndGgsbz0oci0odGhpcy5jbG9zZWQ/MDoxKSkqdDtsZXQgYSxzLGw9TWF0aC5mbG9vcihvKSxjPW8tbDt0aGlzLmNsb3NlZD9sKz1sPjA/MDooTWF0aC5mbG9vcihNYXRoLmFicyhsKS9yKSsxKSpyOjA9PT1jJiZsPT09ci0xJiYobD1yLTIsYz0xKSx0aGlzLmNsb3NlZHx8bD4wP2E9aVsobC0xKSVyXTooTHRlLnN1YlZlY3RvcnMoaVswXSxpWzFdKS5hZGQoaVswXSksYT1MdGUpO2NvbnN0IHU9aVtsJXJdLGg9aVsobCsxKSVyXTtpZih0aGlzLmNsb3NlZHx8bCsyPHI/cz1pWyhsKzIpJXJdOihMdGUuc3ViVmVjdG9ycyhpW3ItMV0saVtyLTJdKS5hZGQoaVtyLTFdKSxzPUx0ZSksImNlbnRyaXBldGFsIj09PXRoaXMuY3VydmVUeXBlfHwiY2hvcmRhbCI9PT10aGlzLmN1cnZlVHlwZSl7Y29uc3QgdD0iY2hvcmRhbCI9PT10aGlzLmN1cnZlVHlwZT8uNTouMjU7bGV0IGU9TWF0aC5wb3coYS5kaXN0YW5jZVRvU3F1YXJlZCh1KSx0KSxuPU1hdGgucG93KHUuZGlzdGFuY2VUb1NxdWFyZWQoaCksdCksaT1NYXRoLnBvdyhoLmRpc3RhbmNlVG9TcXVhcmVkKHMpLHQpO248MWUtNCYmKG49MSksZTwxZS00JiYoZT1uKSxpPDFlLTQmJihpPW4pLFB0ZS5pbml0Tm9udW5pZm9ybUNhdG11bGxSb20oYS54LHUueCxoLngscy54LGUsbixpKSxOdGUuaW5pdE5vbnVuaWZvcm1DYXRtdWxsUm9tKGEueSx1LnksaC55LHMueSxlLG4saSksSXRlLmluaXROb251bmlmb3JtQ2F0bXVsbFJvbShhLnosdS56LGgueixzLnosZSxuLGkpfWVsc2UiY2F0bXVsbHJvbSI9PT10aGlzLmN1cnZlVHlwZSYmKFB0ZS5pbml0Q2F0bXVsbFJvbShhLngsdS54LGgueCxzLngsdGhpcy50ZW5zaW9uKSxOdGUuaW5pdENhdG11bGxSb20oYS55LHUueSxoLnkscy55LHRoaXMudGVuc2lvbiksSXRlLmluaXRDYXRtdWxsUm9tKGEueix1LnosaC56LHMueix0aGlzLnRlbnNpb24pKTtyZXR1cm4gbi5zZXQoUHRlLmNhbGMoYyksTnRlLmNhbGMoYyksSXRlLmNhbGMoYykpLG59Y29weSh0KXtzdXBlci5jb3B5KHQpLHRoaXMucG9pbnRzPVtdO2ZvcihsZXQgZT0wLG49dC5wb2ludHMubGVuZ3RoO2U8bjtlKyspe3RoaXMucG9pbnRzLnB1c2godC5wb2ludHNbZV0uY2xvbmUoKSl9cmV0dXJuIHRoaXMuY2xvc2VkPXQuY2xvc2VkLHRoaXMuY3VydmVUeXBlPXQuY3VydmVUeXBlLHRoaXMudGVuc2lvbj10LnRlbnNpb24sdGhpc310b0pTT04oKXtjb25zdCB0PXN1cGVyLnRvSlNPTigpO3QucG9pbnRzPVtdO2ZvcihsZXQgZT0wLG49dGhpcy5wb2ludHMubGVuZ3RoO2U8bjtlKyspe3QucG9pbnRzLnB1c2godGhpcy5wb2ludHNbZV0udG9BcnJheSgpKX1yZXR1cm4gdC5jbG9zZWQ9dGhpcy5jbG9zZWQsdC5jdXJ2ZVR5cGU9dGhpcy5jdXJ2ZVR5cGUsdC50ZW5zaW9uPXRoaXMudGVuc2lvbix0fWZyb21KU09OKHQpe3N1cGVyLmZyb21KU09OKHQpLHRoaXMucG9pbnRzPVtdO2ZvcihsZXQgZT0wLG49dC5wb2ludHMubGVuZ3RoO2U8bjtlKyspe2NvbnN0IG49dC5wb2ludHNbZV07dGhpcy5wb2ludHMucHVzaCgobmV3IEg1dCkuZnJvbUFycmF5KG4pKX1yZXR1cm4gdGhpcy5jbG9zZWQ9dC5jbG9zZWQsdGhpcy5jdXJ2ZVR5cGU9dC5jdXJ2ZVR5cGUsdGhpcy50ZW5zaW9uPXQudGVuc2lvbix0aGlzfX1mdW5jdGlvbiBPdGUodCxlLG4saSxyKXtjb25zdCBvPS41KihpLWUpLGE9LjUqKHItbikscz10KnQ7cmV0dXJuKDIqbi0yKmkrbythKSoodCpzKSsoLTMqbiszKmktMipvLWEpKnMrbyp0K259ZnVuY3Rpb24genRlKHQsZSxuLGkpe3JldHVybihmdW5jdGlvbiByKHQsZSl7Y29uc3Qgbj0xLXQ7cmV0dXJuIG4qbiplfSkodCxlKSsoZnVuY3Rpb24gbyh0LGUpe3JldHVybiAyKigxLXQpKnQqZX0pKHQsbikrKGZ1bmN0aW9uIGEodCxlKXtyZXR1cm4gdCp0KmV9KSh0LGkpfWZ1bmN0aW9uIER0ZSh0LGUsbixpLHIpe3JldHVybihmdW5jdGlvbiBvKHQsZSl7Y29uc3Qgbj0xLXQ7cmV0dXJuIG4qbipuKmV9KSh0LGUpKyhmdW5jdGlvbiBhKHQsZSl7Y29uc3Qgbj0xLXQ7cmV0dXJuIDMqbipuKnQqZX0pKHQsbikrKGZ1bmN0aW9uIHModCxlKXtyZXR1cm4gMyooMS10KSp0KnQqZX0pKHQsaSkrKGZ1bmN0aW9uIGwodCxlKXtyZXR1cm4gdCp0KnQqZX0pKHQscil9UnRlLnByb3RvdHlwZS5pc0NhdG11bGxSb21DdXJ2ZTM9ITA7Y2xhc3MgQnRlIGV4dGVuZHMgVHRle2NvbnN0cnVjdG9yKHQ9bmV3IEM1dCxlPW5ldyBDNXQsbj1uZXcgQzV0LGk9bmV3IEM1dCl7c3VwZXIoKSx0aGlzLnR5cGU9IkN1YmljQmV6aWVyQ3VydmUiLHRoaXMudjA9dCx0aGlzLnYxPWUsdGhpcy52Mj1uLHRoaXMudjM9aX1nZXRQb2ludCh0LGU9bmV3IEM1dCl7Y29uc3Qgbj1lLGk9dGhpcy52MCxyPXRoaXMudjEsbz10aGlzLnYyLGE9dGhpcy52MztyZXR1cm4gbi5zZXQoRHRlKHQsaS54LHIueCxvLngsYS54KSxEdGUodCxpLnksci55LG8ueSxhLnkpKSxufWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy52MC5jb3B5KHQudjApLHRoaXMudjEuY29weSh0LnYxKSx0aGlzLnYyLmNvcHkodC52MiksdGhpcy52My5jb3B5KHQudjMpLHRoaXN9dG9KU09OKCl7Y29uc3QgdD1zdXBlci50b0pTT04oKTtyZXR1cm4gdC52MD10aGlzLnYwLnRvQXJyYXkoKSx0LnYxPXRoaXMudjEudG9BcnJheSgpLHQudjI9dGhpcy52Mi50b0FycmF5KCksdC52Mz10aGlzLnYzLnRvQXJyYXkoKSx0fWZyb21KU09OKHQpe3JldHVybiBzdXBlci5mcm9tSlNPTih0KSx0aGlzLnYwLmZyb21BcnJheSh0LnYwKSx0aGlzLnYxLmZyb21BcnJheSh0LnYxKSx0aGlzLnYyLmZyb21BcnJheSh0LnYyKSx0aGlzLnYzLmZyb21BcnJheSh0LnYzKSx0aGlzfX1CdGUucHJvdG90eXBlLmlzQ3ViaWNCZXppZXJDdXJ2ZT0hMDtjbGFzcyBIdGUgZXh0ZW5kcyBUdGV7Y29uc3RydWN0b3IodD1uZXcgSDV0LGU9bmV3IEg1dCxuPW5ldyBINXQsaT1uZXcgSDV0KXtzdXBlcigpLHRoaXMudHlwZT0iQ3ViaWNCZXppZXJDdXJ2ZTMiLHRoaXMudjA9dCx0aGlzLnYxPWUsdGhpcy52Mj1uLHRoaXMudjM9aX1nZXRQb2ludCh0LGU9bmV3IEg1dCl7Y29uc3Qgbj1lLGk9dGhpcy52MCxyPXRoaXMudjEsbz10aGlzLnYyLGE9dGhpcy52MztyZXR1cm4gbi5zZXQoRHRlKHQsaS54LHIueCxvLngsYS54KSxEdGUodCxpLnksci55LG8ueSxhLnkpLER0ZSh0LGkueixyLnosby56LGEueikpLG59Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLnYwLmNvcHkodC52MCksdGhpcy52MS5jb3B5KHQudjEpLHRoaXMudjIuY29weSh0LnYyKSx0aGlzLnYzLmNvcHkodC52MyksdGhpc310b0pTT04oKXtjb25zdCB0PXN1cGVyLnRvSlNPTigpO3JldHVybiB0LnYwPXRoaXMudjAudG9BcnJheSgpLHQudjE9dGhpcy52MS50b0FycmF5KCksdC52Mj10aGlzLnYyLnRvQXJyYXkoKSx0LnYzPXRoaXMudjMudG9BcnJheSgpLHR9ZnJvbUpTT04odCl7cmV0dXJuIHN1cGVyLmZyb21KU09OKHQpLHRoaXMudjAuZnJvbUFycmF5KHQudjApLHRoaXMudjEuZnJvbUFycmF5KHQudjEpLHRoaXMudjIuZnJvbUFycmF5KHQudjIpLHRoaXMudjMuZnJvbUFycmF5KHQudjMpLHRoaXN9fUh0ZS5wcm90b3R5cGUuaXNDdWJpY0JlemllckN1cnZlMz0hMDtjbGFzcyBGdGUgZXh0ZW5kcyBUdGV7Y29uc3RydWN0b3IodD1uZXcgQzV0LGU9bmV3IEM1dCl7c3VwZXIoKSx0aGlzLnR5cGU9IkxpbmVDdXJ2ZSIsdGhpcy52MT10LHRoaXMudjI9ZX1nZXRQb2ludCh0LGU9bmV3IEM1dCl7Y29uc3Qgbj1lO3JldHVybiAxPT09dD9uLmNvcHkodGhpcy52Mik6KG4uY29weSh0aGlzLnYyKS5zdWIodGhpcy52MSksbi5tdWx0aXBseVNjYWxhcih0KS5hZGQodGhpcy52MSkpLG59Z2V0UG9pbnRBdCh0LGUpe3JldHVybiB0aGlzLmdldFBvaW50KHQsZSl9Z2V0VGFuZ2VudCh0LGUpe2NvbnN0IG49ZXx8bmV3IEM1dDtyZXR1cm4gbi5jb3B5KHRoaXMudjIpLnN1Yih0aGlzLnYxKS5ub3JtYWxpemUoKSxufWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy52MS5jb3B5KHQudjEpLHRoaXMudjIuY29weSh0LnYyKSx0aGlzfXRvSlNPTigpe2NvbnN0IHQ9c3VwZXIudG9KU09OKCk7cmV0dXJuIHQudjE9dGhpcy52MS50b0FycmF5KCksdC52Mj10aGlzLnYyLnRvQXJyYXkoKSx0fWZyb21KU09OKHQpe3JldHVybiBzdXBlci5mcm9tSlNPTih0KSx0aGlzLnYxLmZyb21BcnJheSh0LnYxKSx0aGlzLnYyLmZyb21BcnJheSh0LnYyKSx0aGlzfX1GdGUucHJvdG90eXBlLmlzTGluZUN1cnZlPSEwO2NsYXNzIFZ0ZSBleHRlbmRzIFR0ZXtjb25zdHJ1Y3Rvcih0PW5ldyBINXQsZT1uZXcgSDV0KXtzdXBlcigpLHRoaXMudHlwZT0iTGluZUN1cnZlMyIsdGhpcy5pc0xpbmVDdXJ2ZTM9ITAsdGhpcy52MT10LHRoaXMudjI9ZX1nZXRQb2ludCh0LGU9bmV3IEg1dCl7Y29uc3Qgbj1lO3JldHVybiAxPT09dD9uLmNvcHkodGhpcy52Mik6KG4uY29weSh0aGlzLnYyKS5zdWIodGhpcy52MSksbi5tdWx0aXBseVNjYWxhcih0KS5hZGQodGhpcy52MSkpLG59Z2V0UG9pbnRBdCh0LGUpe3JldHVybiB0aGlzLmdldFBvaW50KHQsZSl9Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLnYxLmNvcHkodC52MSksdGhpcy52Mi5jb3B5KHQudjIpLHRoaXN9dG9KU09OKCl7Y29uc3QgdD1zdXBlci50b0pTT04oKTtyZXR1cm4gdC52MT10aGlzLnYxLnRvQXJyYXkoKSx0LnYyPXRoaXMudjIudG9BcnJheSgpLHR9ZnJvbUpTT04odCl7cmV0dXJuIHN1cGVyLmZyb21KU09OKHQpLHRoaXMudjEuZnJvbUFycmF5KHQudjEpLHRoaXMudjIuZnJvbUFycmF5KHQudjIpLHRoaXN9fWNsYXNzIFV0ZSBleHRlbmRzIFR0ZXtjb25zdHJ1Y3Rvcih0PW5ldyBDNXQsZT1uZXcgQzV0LG49bmV3IEM1dCl7c3VwZXIoKSx0aGlzLnR5cGU9IlF1YWRyYXRpY0JlemllckN1cnZlIix0aGlzLnYwPXQsdGhpcy52MT1lLHRoaXMudjI9bn1nZXRQb2ludCh0LGU9bmV3IEM1dCl7Y29uc3Qgbj1lLGk9dGhpcy52MCxyPXRoaXMudjEsbz10aGlzLnYyO3JldHVybiBuLnNldCh6dGUodCxpLngsci54LG8ueCksenRlKHQsaS55LHIueSxvLnkpKSxufWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy52MC5jb3B5KHQudjApLHRoaXMudjEuY29weSh0LnYxKSx0aGlzLnYyLmNvcHkodC52MiksdGhpc310b0pTT04oKXtjb25zdCB0PXN1cGVyLnRvSlNPTigpO3JldHVybiB0LnYwPXRoaXMudjAudG9BcnJheSgpLHQudjE9dGhpcy52MS50b0FycmF5KCksdC52Mj10aGlzLnYyLnRvQXJyYXkoKSx0fWZyb21KU09OKHQpe3JldHVybiBzdXBlci5mcm9tSlNPTih0KSx0aGlzLnYwLmZyb21BcnJheSh0LnYwKSx0aGlzLnYxLmZyb21BcnJheSh0LnYxKSx0aGlzLnYyLmZyb21BcnJheSh0LnYyKSx0aGlzfX1VdGUucHJvdG90eXBlLmlzUXVhZHJhdGljQmV6aWVyQ3VydmU9ITA7Y2xhc3MganRlIGV4dGVuZHMgVHRle2NvbnN0cnVjdG9yKHQ9bmV3IEg1dCxlPW5ldyBINXQsbj1uZXcgSDV0KXtzdXBlcigpLHRoaXMudHlwZT0iUXVhZHJhdGljQmV6aWVyQ3VydmUzIix0aGlzLnYwPXQsdGhpcy52MT1lLHRoaXMudjI9bn1nZXRQb2ludCh0LGU9bmV3IEg1dCl7Y29uc3Qgbj1lLGk9dGhpcy52MCxyPXRoaXMudjEsbz10aGlzLnYyO3JldHVybiBuLnNldCh6dGUodCxpLngsci54LG8ueCksenRlKHQsaS55LHIueSxvLnkpLHp0ZSh0LGkueixyLnosby56KSksbn1jb3B5KHQpe3JldHVybiBzdXBlci5jb3B5KHQpLHRoaXMudjAuY29weSh0LnYwKSx0aGlzLnYxLmNvcHkodC52MSksdGhpcy52Mi5jb3B5KHQudjIpLHRoaXN9dG9KU09OKCl7Y29uc3QgdD1zdXBlci50b0pTT04oKTtyZXR1cm4gdC52MD10aGlzLnYwLnRvQXJyYXkoKSx0LnYxPXRoaXMudjEudG9BcnJheSgpLHQudjI9dGhpcy52Mi50b0FycmF5KCksdH1mcm9tSlNPTih0KXtyZXR1cm4gc3VwZXIuZnJvbUpTT04odCksdGhpcy52MC5mcm9tQXJyYXkodC52MCksdGhpcy52MS5mcm9tQXJyYXkodC52MSksdGhpcy52Mi5mcm9tQXJyYXkodC52MiksdGhpc319anRlLnByb3RvdHlwZS5pc1F1YWRyYXRpY0JlemllckN1cnZlMz0hMDtjbGFzcyBHdGUgZXh0ZW5kcyBUdGV7Y29uc3RydWN0b3IodD1bXSl7c3VwZXIoKSx0aGlzLnR5cGU9IlNwbGluZUN1cnZlIix0aGlzLnBvaW50cz10fWdldFBvaW50KHQsZT1uZXcgQzV0KXtjb25zdCBuPWUsaT10aGlzLnBvaW50cyxyPShpLmxlbmd0aC0xKSp0LG89TWF0aC5mbG9vcihyKSxhPXItbyxzPWlbMD09PW8/bzpvLTFdLGw9aVtvXSxjPWlbbz5pLmxlbmd0aC0yP2kubGVuZ3RoLTE6bysxXSx1PWlbbz5pLmxlbmd0aC0zP2kubGVuZ3RoLTE6bysyXTtyZXR1cm4gbi5zZXQoT3RlKGEscy54LGwueCxjLngsdS54KSxPdGUoYSxzLnksbC55LGMueSx1LnkpKSxufWNvcHkodCl7c3VwZXIuY29weSh0KSx0aGlzLnBvaW50cz1bXTtmb3IobGV0IGU9MCxuPXQucG9pbnRzLmxlbmd0aDtlPG47ZSsrKXt0aGlzLnBvaW50cy5wdXNoKHQucG9pbnRzW2VdLmNsb25lKCkpfXJldHVybiB0aGlzfXRvSlNPTigpe2NvbnN0IHQ9c3VwZXIudG9KU09OKCk7dC5wb2ludHM9W107Zm9yKGxldCBlPTAsbj10aGlzLnBvaW50cy5sZW5ndGg7ZTxuO2UrKyl7dC5wb2ludHMucHVzaCh0aGlzLnBvaW50c1tlXS50b0FycmF5KCkpfXJldHVybiB0fWZyb21KU09OKHQpe3N1cGVyLmZyb21KU09OKHQpLHRoaXMucG9pbnRzPVtdO2ZvcihsZXQgZT0wLG49dC5wb2ludHMubGVuZ3RoO2U8bjtlKyspe2NvbnN0IG49dC5wb2ludHNbZV07dGhpcy5wb2ludHMucHVzaCgobmV3IEM1dCkuZnJvbUFycmF5KG4pKX1yZXR1cm4gdGhpc319R3RlLnByb3RvdHlwZS5pc1NwbGluZUN1cnZlPSEwO3ZhciBXdGU9T2JqZWN0LmZyZWV6ZSh7X19wcm90b19fOm51bGwsQXJjQ3VydmU6QXRlLENhdG11bGxSb21DdXJ2ZTM6UnRlLEN1YmljQmV6aWVyQ3VydmU6QnRlLEN1YmljQmV6aWVyQ3VydmUzOkh0ZSxFbGxpcHNlQ3VydmU6Q3RlLExpbmVDdXJ2ZTpGdGUsTGluZUN1cnZlMzpWdGUsUXVhZHJhdGljQmV6aWVyQ3VydmU6VXRlLFF1YWRyYXRpY0JlemllckN1cnZlMzpqdGUsU3BsaW5lQ3VydmU6R3RlfSk7Y29uc3QgcXRlPWZ1bmN0aW9uKHQsZSxuPTIpe2NvbnN0IGk9ZSYmZS5sZW5ndGgscj1pP2VbMF0qbjp0Lmxlbmd0aDtsZXQgbz1ZdGUodCwwLHIsbiwhMCk7Y29uc3QgYT1bXTtpZighb3x8by5uZXh0PT09by5wcmV2KXJldHVybiBhO2xldCBzLGwsYyx1LGgsZCxwO2lmKGkmJihvPShmdW5jdGlvbiBmKHQsZSxuLGkpe2NvbnN0IHI9W107bGV0IG8sYSxzLGwsYztmb3Iobz0wLGE9ZS5sZW5ndGg7bzxhO28rKylzPWVbb10qaSxsPW88YS0xP2VbbysxXSppOnQubGVuZ3RoLGM9WXRlKHQscyxsLGksITEpLGM9PT1jLm5leHQmJihjLnN0ZWluZXI9ITApLHIucHVzaChyZWUoYykpO2ZvcihyLnNvcnQodGVlKSxvPTA7bzxyLmxlbmd0aDtvKyspZWVlKHJbb10sbiksbj1YdGUobixuLm5leHQpO3JldHVybiBufSkodCxlLG8sbikpLHQubGVuZ3RoPjgwKm4pe3M9Yz10WzBdLGw9dT10WzFdO2ZvcihsZXQgZT1uO2U8cjtlKz1uKWg9dFtlXSxkPXRbZSsxXSxoPHMmJihzPWgpLGQ8bCYmKGw9ZCksaD5jJiYoYz1oKSxkPnUmJih1PWQpO3A9TWF0aC5tYXgoYy1zLHUtbCkscD0wIT09cD8xL3A6MH1yZXR1cm4gJHRlKG8sYSxuLHMsbCxwKSxhfTtmdW5jdGlvbiBZdGUodCxlLG4saSxyKXtsZXQgbyxhO2lmKHI9PT0oZnVuY3Rpb24gcyh0LGUsbixpKXtsZXQgcj0wO2ZvcihsZXQgbz1lLGE9bi1pO288bjtvKz1pKXIrPSh0W2FdLXRbb10pKih0W28rMV0rdFthKzFdKSxhPW87cmV0dXJuIHJ9KSh0LGUsbixpKT4wKWZvcihvPWU7bzxuO28rPWkpYT1mZWUobyx0W29dLHRbbysxXSxhKTtlbHNlIGZvcihvPW4taTtvPj1lO28tPWkpYT1mZWUobyx0W29dLHRbbysxXSxhKTtyZXR1cm4gYSYmbGVlKGEsYS5uZXh0KSYmKG1lZShhKSxhPWEubmV4dCksYX1mdW5jdGlvbiBYdGUodCxlKXtpZighdClyZXR1cm4gdDtlfHwoZT10KTtsZXQgbixpPXQ7ZG97aWYobj0hMSxpLnN0ZWluZXJ8fCFsZWUoaSxpLm5leHQpJiYwIT09c2VlKGkucHJldixpLGkubmV4dCkpaT1pLm5leHQ7ZWxzZXtpZihtZWUoaSksaT1lPWkucHJldixpPT09aS5uZXh0KWJyZWFrO249ITB9fXdoaWxlKG58fGkhPT1lKTtyZXR1cm4gZX1mdW5jdGlvbiAkdGUodCxlLG4saSxyLG8sYSl7aWYoIXQpcmV0dXJuOyFhJiZvJiYoZnVuY3Rpb24gcyh0LGUsbixpKXtsZXQgcj10O2Rve251bGw9PT1yLnomJihyLno9aWVlKHIueCxyLnksZSxuLGkpKSxyLnByZXZaPXIucHJldixyLm5leHRaPXIubmV4dCxyPXIubmV4dH13aGlsZShyIT09dCk7ci5wcmV2Wi5uZXh0Wj1udWxsLHIucHJldlo9bnVsbCwoZnVuY3Rpb24gbyh0KXtsZXQgZSxuLGkscixvLGEscyxsLGM9MTtkb3tmb3Iobj10LHQ9bnVsbCxvPW51bGwsYT0wO247KXtmb3IoYSsrLGk9bixzPTAsZT0wO2U8YyYmKHMrKyxpPWkubmV4dFosaSk7ZSsrKTtmb3IobD1jO3M+MHx8bD4wJiZpOykwIT09cyYmKDA9PT1sfHwhaXx8bi56PD1pLnopPyhyPW4sbj1uLm5leHRaLHMtLSk6KHI9aSxpPWkubmV4dFosbC0tKSxvP28ubmV4dFo9cjp0PXIsci5wcmV2Wj1vLG89cjtuPWl9by5uZXh0Wj1udWxsLGMqPTJ9d2hpbGUoYT4xKTtyZXR1cm4gdH0pKHIpfSkodCxpLHIsbyk7bGV0IGwsYyx1PXQ7Zm9yKDt0LnByZXYhPT10Lm5leHQ7KWlmKGw9dC5wcmV2LGM9dC5uZXh0LG8/WnRlKHQsaSxyLG8pOkt0ZSh0KSllLnB1c2gobC5pL24pLGUucHVzaCh0LmkvbiksZS5wdXNoKGMuaS9uKSxtZWUodCksdD1jLm5leHQsdT1jLm5leHQ7ZWxzZSBpZigodD1jKT09PXUpe2E/MT09PWE/JHRlKHQ9SnRlKFh0ZSh0KSxlLG4pLGUsbixpLHIsbywyKToyPT09YSYmUXRlKHQsZSxuLGkscixvKTokdGUoWHRlKHQpLGUsbixpLHIsbywxKTticmVha319ZnVuY3Rpb24gS3RlKHQpe2NvbnN0IGU9dC5wcmV2LG49dCxpPXQubmV4dDtpZihzZWUoZSxuLGkpPj0wKXJldHVybiExO2xldCByPXQubmV4dC5uZXh0O2Zvcig7ciE9PXQucHJldjspe2lmKG9lZShlLngsZS55LG4ueCxuLnksaS54LGkueSxyLngsci55KSYmc2VlKHIucHJldixyLHIubmV4dCk+PTApcmV0dXJuITE7cj1yLm5leHR9cmV0dXJuITB9ZnVuY3Rpb24gWnRlKHQsZSxuLGkpe2NvbnN0IHI9dC5wcmV2LG89dCxhPXQubmV4dDtpZihzZWUocixvLGEpPj0wKXJldHVybiExO2NvbnN0IHM9ci54Pm8ueD9yLng+YS54P3IueDphLng6by54PmEueD9vLng6YS54LGw9ci55Pm8ueT9yLnk+YS55P3IueTphLnk6by55PmEueT9vLnk6YS55LGM9aWVlKHIueDxvLng/ci54PGEueD9yLng6YS54Om8ueDxhLng/by54OmEueCxyLnk8by55P3IueTxhLnk/ci55OmEueTpvLnk8YS55P28ueTphLnksZSxuLGkpLHU9aWVlKHMsbCxlLG4saSk7bGV0IGg9dC5wcmV2WixkPXQubmV4dFo7Zm9yKDtoJiZoLno+PWMmJmQmJmQuejw9dTspe2lmKGghPT10LnByZXYmJmghPT10Lm5leHQmJm9lZShyLngsci55LG8ueCxvLnksYS54LGEueSxoLngsaC55KSYmc2VlKGgucHJldixoLGgubmV4dCk+PTApcmV0dXJuITE7aWYoaD1oLnByZXZaLGQhPT10LnByZXYmJmQhPT10Lm5leHQmJm9lZShyLngsci55LG8ueCxvLnksYS54LGEueSxkLngsZC55KSYmc2VlKGQucHJldixkLGQubmV4dCk+PTApcmV0dXJuITE7ZD1kLm5leHRafWZvcig7aCYmaC56Pj1jOyl7aWYoaCE9PXQucHJldiYmaCE9PXQubmV4dCYmb2VlKHIueCxyLnksby54LG8ueSxhLngsYS55LGgueCxoLnkpJiZzZWUoaC5wcmV2LGgsaC5uZXh0KT49MClyZXR1cm4hMTtoPWgucHJldlp9Zm9yKDtkJiZkLno8PXU7KXtpZihkIT09dC5wcmV2JiZkIT09dC5uZXh0JiZvZWUoci54LHIueSxvLngsby55LGEueCxhLnksZC54LGQueSkmJnNlZShkLnByZXYsZCxkLm5leHQpPj0wKXJldHVybiExO2Q9ZC5uZXh0Wn1yZXR1cm4hMH1mdW5jdGlvbiBKdGUodCxlLG4pe2xldCBpPXQ7ZG97Y29uc3Qgcj1pLnByZXYsbz1pLm5leHQubmV4dDshbGVlKHIsbykmJmNlZShyLGksaS5uZXh0LG8pJiZkZWUocixvKSYmZGVlKG8scikmJihlLnB1c2goci5pL24pLGUucHVzaChpLmkvbiksZS5wdXNoKG8uaS9uKSxtZWUoaSksbWVlKGkubmV4dCksaT10PW8pLGk9aS5uZXh0fXdoaWxlKGkhPT10KTtyZXR1cm4gWHRlKGkpfWZ1bmN0aW9uIFF0ZSh0LGUsbixpLHIsbyl7bGV0IGE9dDtkb3tsZXQgdD1hLm5leHQubmV4dDtmb3IoO3QhPT1hLnByZXY7KXtpZihhLmkhPT10LmkmJmFlZShhLHQpKXtsZXQgcz1wZWUoYSx0KTtyZXR1cm4gYT1YdGUoYSxhLm5leHQpLHM9WHRlKHMscy5uZXh0KSwkdGUoYSxlLG4saSxyLG8pLHZvaWQgJHRlKHMsZSxuLGkscixvKX10PXQubmV4dH1hPWEubmV4dH13aGlsZShhIT09dCl9ZnVuY3Rpb24gdGVlKHQsZSl7cmV0dXJuIHQueC1lLnh9ZnVuY3Rpb24gZWVlKHQsZSl7aWYoZT0oZnVuY3Rpb24gbih0LGUpe2xldCBuPWU7Y29uc3QgaT10Lngscj10Lnk7bGV0IG8sYT0tMS8wO2Rve2lmKHI8PW4ueSYmcj49bi5uZXh0LnkmJm4ubmV4dC55IT09bi55KXtjb25zdCB0PW4ueCsoci1uLnkpKihuLm5leHQueC1uLngpLyhuLm5leHQueS1uLnkpO2lmKHQ8PWkmJnQ+YSl7aWYoYT10LHQ9PT1pKXtpZihyPT09bi55KXJldHVybiBuO2lmKHI9PT1uLm5leHQueSlyZXR1cm4gbi5uZXh0fW89bi54PG4ubmV4dC54P246bi5uZXh0fX1uPW4ubmV4dH13aGlsZShuIT09ZSk7aWYoIW8pcmV0dXJuIG51bGw7aWYoaT09PWEpcmV0dXJuIG87Y29uc3Qgcz1vLGw9by54LGM9by55O2xldCB1LGg9MS8wO249bztkb3tpPj1uLngmJm4ueD49bCYmaSE9PW4ueCYmb2VlKHI8Yz9pOmEscixsLGMscjxjP2E6aSxyLG4ueCxuLnkpJiYodT1NYXRoLmFicyhyLW4ueSkvKGktbi54KSxkZWUobix0KSYmKHU8aHx8dT09PWgmJihuLng+by54fHxuLng9PT1vLngmJm5lZShvLG4pKSkmJihvPW4saD11KSksbj1uLm5leHR9d2hpbGUobiE9PXMpO3JldHVybiBvfSkodCxlKSl7Y29uc3Qgbj1wZWUoZSx0KTtYdGUoZSxlLm5leHQpLFh0ZShuLG4ubmV4dCl9fWZ1bmN0aW9uIG5lZSh0LGUpe3JldHVybiBzZWUodC5wcmV2LHQsZS5wcmV2KTwwJiZzZWUoZS5uZXh0LHQsdC5uZXh0KTwwfWZ1bmN0aW9uIGllZSh0LGUsbixpLHIpe3JldHVybih0PTE0MzE2NTU3NjUmKCh0PTg1ODk5MzQ1OSYoKHQ9MjUyNjQ1MTM1JigodD0xNjcxMTkzNSYoKHQ9MzI3NjcqKHQtbikqcil8dDw8OCkpfHQ8PDQpKXx0PDwyKSl8dDw8MSkpfChlPTE0MzE2NTU3NjUmKChlPTg1ODk5MzQ1OSYoKGU9MjUyNjQ1MTM1JigoZT0xNjcxMTkzNSYoKGU9MzI3NjcqKGUtaSkqcil8ZTw8OCkpfGU8PDQpKXxlPDwyKSl8ZTw8MSkpPDwxfWZ1bmN0aW9uIHJlZSh0KXtsZXQgZT10LG49dDtkb3soZS54PG4ueHx8ZS54PT09bi54JiZlLnk8bi55KSYmKG49ZSksZT1lLm5leHR9d2hpbGUoZSE9PXQpO3JldHVybiBufWZ1bmN0aW9uIG9lZSh0LGUsbixpLHIsbyxhLHMpe3JldHVybihyLWEpKihlLXMpLSh0LWEpKihvLXMpPj0wJiYodC1hKSooaS1zKS0obi1hKSooZS1zKT49MCYmKG4tYSkqKG8tcyktKHItYSkqKGktcyk+PTB9ZnVuY3Rpb24gYWVlKHQsZSl7cmV0dXJuIHQubmV4dC5pIT09ZS5pJiZ0LnByZXYuaSE9PWUuaSYmIShmdW5jdGlvbiBuKHQsZSl7bGV0IG49dDtkb3tpZihuLmkhPT10LmkmJm4ubmV4dC5pIT09dC5pJiZuLmkhPT1lLmkmJm4ubmV4dC5pIT09ZS5pJiZjZWUobixuLm5leHQsdCxlKSlyZXR1cm4hMDtuPW4ubmV4dH13aGlsZShuIT09dCk7cmV0dXJuITF9KSh0LGUpJiYoZGVlKHQsZSkmJmRlZShlLHQpJiYoZnVuY3Rpb24gaSh0LGUpe2xldCBuPXQsaT0hMTtjb25zdCByPSh0LngrZS54KS8yLG89KHQueStlLnkpLzI7ZG97bi55Pm8hPW4ubmV4dC55Pm8mJm4ubmV4dC55IT09bi55JiZyPChuLm5leHQueC1uLngpKihvLW4ueSkvKG4ubmV4dC55LW4ueSkrbi54JiYoaT0haSksbj1uLm5leHR9d2hpbGUobiE9PXQpO3JldHVybiBpfSkodCxlKSYmKHNlZSh0LnByZXYsdCxlLnByZXYpfHxzZWUodCxlLnByZXYsZSkpfHxsZWUodCxlKSYmc2VlKHQucHJldix0LHQubmV4dCk+MCYmc2VlKGUucHJldixlLGUubmV4dCk+MCl9ZnVuY3Rpb24gc2VlKHQsZSxuKXtyZXR1cm4oZS55LXQueSkqKG4ueC1lLngpLShlLngtdC54KSoobi55LWUueSl9ZnVuY3Rpb24gbGVlKHQsZSl7cmV0dXJuIHQueD09PWUueCYmdC55PT09ZS55fWZ1bmN0aW9uIGNlZSh0LGUsbixpKXtjb25zdCByPWhlZShzZWUodCxlLG4pKSxvPWhlZShzZWUodCxlLGkpKSxhPWhlZShzZWUobixpLHQpKSxzPWhlZShzZWUobixpLGUpKTtyZXR1cm4gciE9PW8mJmEhPT1zfHwoISgwIT09cnx8IXVlZSh0LG4sZSkpfHwoISgwIT09b3x8IXVlZSh0LGksZSkpfHwoISgwIT09YXx8IXVlZShuLHQsaSkpfHwhKDAhPT1zfHwhdWVlKG4sZSxpKSkpKSl9ZnVuY3Rpb24gdWVlKHQsZSxuKXtyZXR1cm4gZS54PD1NYXRoLm1heCh0Lngsbi54KSYmZS54Pj1NYXRoLm1pbih0Lngsbi54KSYmZS55PD1NYXRoLm1heCh0Lnksbi55KSYmZS55Pj1NYXRoLm1pbih0Lnksbi55KX1mdW5jdGlvbiBoZWUodCl7cmV0dXJuIHQ+MD8xOnQ8MD8tMTowfWZ1bmN0aW9uIGRlZSh0LGUpe3JldHVybiBzZWUodC5wcmV2LHQsdC5uZXh0KTwwP3NlZSh0LGUsdC5uZXh0KT49MCYmc2VlKHQsdC5wcmV2LGUpPj0wOnNlZSh0LGUsdC5wcmV2KTwwfHxzZWUodCx0Lm5leHQsZSk8MH1mdW5jdGlvbiBwZWUodCxlKXtjb25zdCBuPW5ldyBnZWUodC5pLHQueCx0LnkpLGk9bmV3IGdlZShlLmksZS54LGUueSkscj10Lm5leHQsbz1lLnByZXY7cmV0dXJuIHQubmV4dD1lLGUucHJldj10LG4ubmV4dD1yLHIucHJldj1uLGkubmV4dD1uLG4ucHJldj1pLG8ubmV4dD1pLGkucHJldj1vLGl9ZnVuY3Rpb24gZmVlKHQsZSxuLGkpe2NvbnN0IHI9bmV3IGdlZSh0LGUsbik7cmV0dXJuIGk/KHIubmV4dD1pLm5leHQsci5wcmV2PWksaS5uZXh0LnByZXY9cixpLm5leHQ9cik6KHIucHJldj1yLHIubmV4dD1yKSxyfWZ1bmN0aW9uIG1lZSh0KXt0Lm5leHQucHJldj10LnByZXYsdC5wcmV2Lm5leHQ9dC5uZXh0LHQucHJldlomJih0LnByZXZaLm5leHRaPXQubmV4dFopLHQubmV4dFomJih0Lm5leHRaLnByZXZaPXQucHJldlopfWZ1bmN0aW9uIGdlZSh0LGUsbil7dGhpcy5pPXQsdGhpcy54PWUsdGhpcy55PW4sdGhpcy5wcmV2PW51bGwsdGhpcy5uZXh0PW51bGwsdGhpcy56PW51bGwsdGhpcy5wcmV2Wj1udWxsLHRoaXMubmV4dFo9bnVsbCx0aGlzLnN0ZWluZXI9ITF9Y2xhc3MgX2Vle3N0YXRpYyBhcmVhKHQpe2NvbnN0IGU9dC5sZW5ndGg7bGV0IG49MDtmb3IobGV0IGk9ZS0xLHI9MDtyPGU7aT1yKyspbis9dFtpXS54KnRbcl0ueS10W3JdLngqdFtpXS55O3JldHVybi41Km59c3RhdGljIGlzQ2xvY2tXaXNlKHQpe3JldHVybiBfZWUuYXJlYSh0KTwwfXN0YXRpYyB0cmlhbmd1bGF0ZVNoYXBlKHQsZSl7Y29uc3Qgbj1bXSxpPVtdLHI9W107eWVlKHQpLHZlZShuLHQpO2xldCBvPXQubGVuZ3RoO2UuZm9yRWFjaCh5ZWUpO2ZvcihsZXQgdD0wO3Q8ZS5sZW5ndGg7dCsrKWkucHVzaChvKSxvKz1lW3RdLmxlbmd0aCx2ZWUobixlW3RdKTtjb25zdCBhPXF0ZShuLGkpO2ZvcihsZXQgdD0wO3Q8YS5sZW5ndGg7dCs9MylyLnB1c2goYS5zbGljZSh0LHQrMykpO3JldHVybiByfX1mdW5jdGlvbiB5ZWUodCl7Y29uc3QgZT10Lmxlbmd0aDtlPjImJnRbZS0xXS5lcXVhbHModFswXSkmJnQucG9wKCl9ZnVuY3Rpb24gdmVlKHQsZSl7Zm9yKGxldCBuPTA7bjxlLmxlbmd0aDtuKyspdC5wdXNoKGVbbl0ueCksdC5wdXNoKGVbbl0ueSl9Y2xhc3MgYmVlIGV4dGVuZHMgTjR0e2NvbnN0cnVjdG9yKHQsZSl7c3VwZXIoKSx0aGlzLnR5cGU9IkV4dHJ1ZGVHZW9tZXRyeSIsdGhpcy5wYXJhbWV0ZXJzPXtzaGFwZXM6dCxvcHRpb25zOmV9LHQ9QXJyYXkuaXNBcnJheSh0KT90Olt0XTtjb25zdCBuPXRoaXMsaT1bXSxyPVtdO2ZvcihsZXQgZT0wLG49dC5sZW5ndGg7ZTxuO2UrKyl7byh0W2VdKX1mdW5jdGlvbiBvKHQpe2NvbnN0IG89W10sYT12b2lkIDAhPT1lLmN1cnZlU2VnbWVudHM/ZS5jdXJ2ZVNlZ21lbnRzOjEyLHM9dm9pZCAwIT09ZS5zdGVwcz9lLnN0ZXBzOjE7bGV0IGw9dm9pZCAwIT09ZS5kZXB0aD9lLmRlcHRoOjEwMCxjPXZvaWQgMD09PWUuYmV2ZWxFbmFibGVkfHxlLmJldmVsRW5hYmxlZCx1PXZvaWQgMCE9PWUuYmV2ZWxUaGlja25lc3M/ZS5iZXZlbFRoaWNrbmVzczo2LGg9dm9pZCAwIT09ZS5iZXZlbFNpemU/ZS5iZXZlbFNpemU6dS0yLGQ9dm9pZCAwIT09ZS5iZXZlbE9mZnNldD9lLmJldmVsT2Zmc2V0OjAscD12b2lkIDAhPT1lLmJldmVsU2VnbWVudHM/ZS5iZXZlbFNlZ21lbnRzOjM7Y29uc3QgZj1lLmV4dHJ1ZGVQYXRoLG09dm9pZCAwIT09ZS5VVkdlbmVyYXRvcj9lLlVWR2VuZXJhdG9yOnhlZTt2b2lkIDAhPT1lLmFtb3VudCYmKGNvbnNvbGUud2FybigiVEhSRUUuRXh0cnVkZUJ1ZmZlckdlb21ldHJ5OiBhbW91bnQgaGFzIGJlZW4gcmVuYW1lZCB0byBkZXB0aC4iKSxsPWUuYW1vdW50KTtsZXQgZyxfLHksdixiLHg9ITE7ZiYmKGc9Zi5nZXRTcGFjZWRQb2ludHMocykseD0hMCxjPSExLF89Zi5jb21wdXRlRnJlbmV0RnJhbWVzKHMsITEpLHk9bmV3IEg1dCx2PW5ldyBINXQsYj1uZXcgSDV0KSxjfHwocD0wLHU9MCxoPTAsZD0wKTtjb25zdCB3PXQuZXh0cmFjdFBvaW50cyhhKTtsZXQgUz13LnNoYXBlO2NvbnN0IE09dy5ob2xlcztpZighX2VlLmlzQ2xvY2tXaXNlKFMpKXtTPVMucmV2ZXJzZSgpO2ZvcihsZXQgdD0wLGU9TS5sZW5ndGg7dDxlO3QrKyl7Y29uc3QgZT1NW3RdO19lZS5pc0Nsb2NrV2lzZShlKSYmKE1bdF09ZS5yZXZlcnNlKCkpfX1jb25zdCBFPV9lZS50cmlhbmd1bGF0ZVNoYXBlKFMsTSksVD1TO2ZvcihsZXQgdD0wLGU9TS5sZW5ndGg7dDxlO3QrKyl7Uz1TLmNvbmNhdChNW3RdKX1mdW5jdGlvbiBDKHQsZSxuKXtyZXR1cm4gZXx8Y29uc29sZS5lcnJvcigiVEhSRUUuRXh0cnVkZUdlb21ldHJ5OiB2ZWMgZG9lcyBub3QgZXhpc3QiKSxlLmNsb25lKCkubXVsdGlwbHlTY2FsYXIobikuYWRkKHQpfWNvbnN0IEE9Uy5sZW5ndGgsaz1FLmxlbmd0aDtmdW5jdGlvbiBMKHQsZSxuKXtsZXQgaSxyLG87Y29uc3QgYT10LngtZS54LHM9dC55LWUueSxsPW4ueC10LngsYz1uLnktdC55LHU9YSphK3MqcztpZihNYXRoLmFicyhhKmMtcypsKT5OdW1iZXIuRVBTSUxPTil7Y29uc3QgaD1NYXRoLnNxcnQodSksZD1NYXRoLnNxcnQobCpsK2MqYykscD1lLngtcy9oLGY9ZS55K2EvaCxtPSgobi54LWMvZC1wKSpjLShuLnkrbC9kLWYpKmwpLyhhKmMtcypsKTtpPXArYSptLXQueCxyPWYrcyptLXQueTtjb25zdCBnPWkqaStyKnI7aWYoZzw9MilyZXR1cm4gbmV3IEM1dChpLHIpO289TWF0aC5zcXJ0KGcvMil9ZWxzZXtsZXQgdD0hMTthPk51bWJlci5FUFNJTE9OP2w+TnVtYmVyLkVQU0lMT04mJih0PSEwKTphPC1OdW1iZXIuRVBTSUxPTj9sPC1OdW1iZXIuRVBTSUxPTiYmKHQ9ITApOk1hdGguc2lnbihzKT09PU1hdGguc2lnbihjKSYmKHQ9ITApLHQ/KGk9LXMscj1hLG89TWF0aC5zcXJ0KHUpKTooaT1hLHI9cyxvPU1hdGguc3FydCh1LzIpKX1yZXR1cm4gbmV3IEM1dChpL28sci9vKX1jb25zdCBQPVtdO2ZvcihsZXQgdD0wLGU9VC5sZW5ndGgsbj1lLTEsaT10KzE7dDxlO3QrKyxuKyssaSsrKW49PT1lJiYobj0wKSxpPT09ZSYmKGk9MCksUFt0XT1MKFRbdF0sVFtuXSxUW2ldKTtjb25zdCBOPVtdO2xldCBJLFI9UC5jb25jYXQoKTtmb3IobGV0IHQ9MCxlPU0ubGVuZ3RoO3Q8ZTt0Kyspe2NvbnN0IGU9TVt0XTtJPVtdO2ZvcihsZXQgdD0wLG49ZS5sZW5ndGgsaT1uLTEscj10KzE7dDxuO3QrKyxpKysscisrKWk9PT1uJiYoaT0wKSxyPT09biYmKHI9MCksSVt0XT1MKGVbdF0sZVtpXSxlW3JdKTtOLnB1c2goSSksUj1SLmNvbmNhdChJKX1mb3IobGV0IHQ9MDt0PHA7dCsrKXtjb25zdCBlPXQvcCxuPXUqTWF0aC5jb3MoZSpNYXRoLlBJLzIpLGk9aCpNYXRoLnNpbihlKk1hdGguUEkvMikrZDtmb3IobGV0IHQ9MCxlPVQubGVuZ3RoO3Q8ZTt0Kyspe2NvbnN0IGU9QyhUW3RdLFBbdF0saSk7RChlLngsZS55LC1uKX1mb3IobGV0IHQ9MCxlPU0ubGVuZ3RoO3Q8ZTt0Kyspe2NvbnN0IGU9TVt0XTtJPU5bdF07Zm9yKGxldCB0PTAscj1lLmxlbmd0aDt0PHI7dCsrKXtjb25zdCByPUMoZVt0XSxJW3RdLGkpO0Qoci54LHIueSwtbil9fX1jb25zdCBPPWgrZDtmb3IobGV0IHQ9MDt0PEE7dCsrKXtjb25zdCBlPWM/QyhTW3RdLFJbdF0sTyk6U1t0XTt4Pyh2LmNvcHkoXy5ub3JtYWxzWzBdKS5tdWx0aXBseVNjYWxhcihlLngpLHkuY29weShfLmJpbm9ybWFsc1swXSkubXVsdGlwbHlTY2FsYXIoZS55KSxiLmNvcHkoZ1swXSkuYWRkKHYpLmFkZCh5KSxEKGIueCxiLnksYi56KSk6RChlLngsZS55LDApfWZvcihsZXQgdD0xO3Q8PXM7dCsrKWZvcihsZXQgZT0wO2U8QTtlKyspe2NvbnN0IG49Yz9DKFNbZV0sUltlXSxPKTpTW2VdO3g/KHYuY29weShfLm5vcm1hbHNbdF0pLm11bHRpcGx5U2NhbGFyKG4ueCkseS5jb3B5KF8uYmlub3JtYWxzW3RdKS5tdWx0aXBseVNjYWxhcihuLnkpLGIuY29weShnW3RdKS5hZGQodikuYWRkKHkpLEQoYi54LGIueSxiLnopKTpEKG4ueCxuLnksbC9zKnQpfWZvcihsZXQgdD1wLTE7dD49MDt0LS0pe2NvbnN0IGU9dC9wLG49dSpNYXRoLmNvcyhlKk1hdGguUEkvMiksaT1oKk1hdGguc2luKGUqTWF0aC5QSS8yKStkO2ZvcihsZXQgdD0wLGU9VC5sZW5ndGg7dDxlO3QrKyl7Y29uc3QgZT1DKFRbdF0sUFt0XSxpKTtEKGUueCxlLnksbCtuKX1mb3IobGV0IHQ9MCxlPU0ubGVuZ3RoO3Q8ZTt0Kyspe2NvbnN0IGU9TVt0XTtJPU5bdF07Zm9yKGxldCB0PTAscj1lLmxlbmd0aDt0PHI7dCsrKXtjb25zdCByPUMoZVt0XSxJW3RdLGkpO3g/RChyLngsci55K2dbcy0xXS55LGdbcy0xXS54K24pOkQoci54LHIueSxsK24pfX19ZnVuY3Rpb24geih0LGUpe2xldCBuPXQubGVuZ3RoO2Zvcig7LS1uPj0wOyl7Y29uc3QgaT1uO2xldCByPW4tMTtyPDAmJihyPXQubGVuZ3RoLTEpO2ZvcihsZXQgdD0wLG49cysyKnA7dDxuO3QrKyl7Y29uc3Qgbj1BKnQsbz1BKih0KzEpO0goZStpK24sZStyK24sZStyK28sZStpK28pfX19ZnVuY3Rpb24gRCh0LGUsbil7by5wdXNoKHQpLG8ucHVzaChlKSxvLnB1c2gobil9ZnVuY3Rpb24gQih0LGUscil7Rih0KSxGKGUpLEYocik7Y29uc3Qgbz1pLmxlbmd0aC8zLGE9bS5nZW5lcmF0ZVRvcFVWKG4saSxvLTMsby0yLG8tMSk7VihhWzBdKSxWKGFbMV0pLFYoYVsyXSl9ZnVuY3Rpb24gSCh0LGUscixvKXtGKHQpLEYoZSksRihvKSxGKGUpLEYociksRihvKTtjb25zdCBhPWkubGVuZ3RoLzMscz1tLmdlbmVyYXRlU2lkZVdhbGxVVihuLGksYS02LGEtMyxhLTIsYS0xKTtWKHNbMF0pLFYoc1sxXSksVihzWzNdKSxWKHNbMV0pLFYoc1syXSksVihzWzNdKX1mdW5jdGlvbiBGKHQpe2kucHVzaChvWzMqdCswXSksaS5wdXNoKG9bMyp0KzFdKSxpLnB1c2gob1szKnQrMl0pfWZ1bmN0aW9uIFYodCl7ci5wdXNoKHQueCksci5wdXNoKHQueSl9IShmdW5jdGlvbiBVKCl7Y29uc3QgdD1pLmxlbmd0aC8zO2lmKGMpe2xldCB0PTAsZT1BKnQ7Zm9yKGxldCB0PTA7dDxrO3QrKyl7Y29uc3Qgbj1FW3RdO0IoblsyXStlLG5bMV0rZSxuWzBdK2UpfXQ9cysyKnAsZT1BKnQ7Zm9yKGxldCB0PTA7dDxrO3QrKyl7Y29uc3Qgbj1FW3RdO0IoblswXStlLG5bMV0rZSxuWzJdK2UpfX1lbHNle2ZvcihsZXQgdD0wO3Q8azt0Kyspe2NvbnN0IGU9RVt0XTtCKGVbMl0sZVsxXSxlWzBdKX1mb3IobGV0IHQ9MDt0PGs7dCsrKXtjb25zdCBlPUVbdF07QihlWzBdK0EqcyxlWzFdK0EqcyxlWzJdK0Eqcyl9fW4uYWRkR3JvdXAodCxpLmxlbmd0aC8zLXQsMCl9KSgpLChmdW5jdGlvbiBqKCl7Y29uc3QgdD1pLmxlbmd0aC8zO2xldCBlPTA7eihULGUpLGUrPVQubGVuZ3RoO2ZvcihsZXQgdD0wLG49TS5sZW5ndGg7dDxuO3QrKyl7Y29uc3Qgbj1NW3RdO3oobixlKSxlKz1uLmxlbmd0aH1uLmFkZEdyb3VwKHQsaS5sZW5ndGgvMy10LDEpfSkoKX10aGlzLnNldEF0dHJpYnV0ZSgicG9zaXRpb24iLG5ldyBiNHQoaSwzKSksdGhpcy5zZXRBdHRyaWJ1dGUoInV2IixuZXcgYjR0KHIsMikpLHRoaXMuY29tcHV0ZVZlcnRleE5vcm1hbHMoKX10b0pTT04oKXtjb25zdCB0PXN1cGVyLnRvSlNPTigpO3JldHVybihmdW5jdGlvbiBlKHQsbixpKXtpZihpLnNoYXBlcz1bXSxBcnJheS5pc0FycmF5KHQpKWZvcihsZXQgZT0wLG49dC5sZW5ndGg7ZTxuO2UrKyl7aS5zaGFwZXMucHVzaCh0W2VdLnV1aWQpfWVsc2UgaS5zaGFwZXMucHVzaCh0LnV1aWQpO3ZvaWQgMCE9PW4uZXh0cnVkZVBhdGgmJihpLm9wdGlvbnMuZXh0cnVkZVBhdGg9bi5leHRydWRlUGF0aC50b0pTT04oKSk7cmV0dXJuIGl9KSh0aGlzLnBhcmFtZXRlcnMuc2hhcGVzLHRoaXMucGFyYW1ldGVycy5vcHRpb25zLHQpfXN0YXRpYyBmcm9tSlNPTih0LGUpe2NvbnN0IG49W107Zm9yKGxldCBpPTAscj10LnNoYXBlcy5sZW5ndGg7aTxyO2krKyl7bi5wdXNoKGVbdC5zaGFwZXNbaV1dKX1jb25zdCBpPXQub3B0aW9ucy5leHRydWRlUGF0aDtyZXR1cm4gdm9pZCAwIT09aSYmKHQub3B0aW9ucy5leHRydWRlUGF0aD0obmV3IFd0ZVtpLnR5cGVdKS5mcm9tSlNPTihpKSksbmV3IGJlZShuLHQub3B0aW9ucyl9fWNvbnN0IHhlZT17Z2VuZXJhdGVUb3BVVjpmdW5jdGlvbih0LGUsbixpLHIpe2NvbnN0IG89ZVszKmldLGE9ZVszKmkrMV0scz1lWzMqcl0sbD1lWzMqcisxXTtyZXR1cm5bbmV3IEM1dChlWzMqbl0sZVszKm4rMV0pLG5ldyBDNXQobyxhKSxuZXcgQzV0KHMsbCldfSxnZW5lcmF0ZVNpZGVXYWxsVVY6ZnVuY3Rpb24odCxlLG4saSxyLG8pe2NvbnN0IGE9ZVszKm5dLHM9ZVszKm4rMV0sbD1lWzMqbisyXSxjPWVbMyppXSx1PWVbMyppKzFdLGg9ZVszKmkrMl0sZD1lWzMqcl0scD1lWzMqcisxXSxmPWVbMypyKzJdLG09ZVszKm9dLGc9ZVszKm8rMV0sXz1lWzMqbysyXTtyZXR1cm4gTWF0aC5hYnMocy11KTxNYXRoLmFicyhhLWMpP1tuZXcgQzV0KGEsMS1sKSxuZXcgQzV0KGMsMS1oKSxuZXcgQzV0KGQsMS1mKSxuZXcgQzV0KG0sMS1fKV06W25ldyBDNXQocywxLWwpLG5ldyBDNXQodSwxLWgpLG5ldyBDNXQocCwxLWYpLG5ldyBDNXQoZywxLV8pXX19O2NsYXNzIHdlZSBleHRlbmRzIHZ0ZXtjb25zdHJ1Y3Rvcih0PTEsZT0wKXtjb25zdCBuPSgxK01hdGguc3FydCg1KSkvMjtzdXBlcihbLTEsbiwwLDEsbiwwLC0xLC1uLDAsMSwtbiwwLDAsLTEsbiwwLDEsbiwwLC0xLC1uLDAsMSwtbixuLDAsLTEsbiwwLDEsLW4sMCwtMSwtbiwwLDFdLFswLDExLDUsMCw1LDEsMCwxLDcsMCw3LDEwLDAsMTAsMTEsMSw1LDksNSwxMSw0LDExLDEwLDIsMTAsNyw2LDcsMSw4LDMsOSw0LDMsNCwyLDMsMiw2LDMsNiw4LDMsOCw5LDQsOSw1LDIsNCwxMSw2LDIsMTAsOCw2LDcsOSw4LDFdLHQsZSksdGhpcy50eXBlPSJJY29zYWhlZHJvbkdlb21ldHJ5Iix0aGlzLnBhcmFtZXRlcnM9e3JhZGl1czp0LGRldGFpbDplfX1zdGF0aWMgZnJvbUpTT04odCl7cmV0dXJuIG5ldyB3ZWUodC5yYWRpdXMsdC5kZXRhaWwpfX1jbGFzcyBTZWUgZXh0ZW5kcyBONHR7Y29uc3RydWN0b3IodCxlPTEyLG49MCxpPTIqTWF0aC5QSSl7c3VwZXIoKSx0aGlzLnR5cGU9IkxhdGhlR2VvbWV0cnkiLHRoaXMucGFyYW1ldGVycz17cG9pbnRzOnQsc2VnbWVudHM6ZSxwaGlTdGFydDpuLHBoaUxlbmd0aDppfSxlPU1hdGguZmxvb3IoZSksaT1zNXQoaSwwLDIqTWF0aC5QSSk7Y29uc3Qgcj1bXSxvPVtdLGE9W10scz0xL2UsbD1uZXcgSDV0LGM9bmV3IEM1dDtmb3IobGV0IHI9MDtyPD1lO3IrKyl7Y29uc3QgdT1uK3IqcyppLGg9TWF0aC5zaW4odSksZD1NYXRoLmNvcyh1KTtmb3IobGV0IG49MDtuPD10Lmxlbmd0aC0xO24rKylsLng9dFtuXS54KmgsbC55PXRbbl0ueSxsLno9dFtuXS54KmQsby5wdXNoKGwueCxsLnksbC56KSxjLng9ci9lLGMueT1uLyh0Lmxlbmd0aC0xKSxhLnB1c2goYy54LGMueSl9Zm9yKGxldCBuPTA7bjxlO24rKylmb3IobGV0IGU9MDtlPHQubGVuZ3RoLTE7ZSsrKXtjb25zdCBpPWUrbip0Lmxlbmd0aCxvPWkrdC5sZW5ndGgsYT1pK3QubGVuZ3RoKzEscz1pKzE7ci5wdXNoKGksbyxzKSxyLnB1c2gobyxhLHMpfWlmKHRoaXMuc2V0SW5kZXgociksdGhpcy5zZXRBdHRyaWJ1dGUoInBvc2l0aW9uIixuZXcgYjR0KG8sMykpLHRoaXMuc2V0QXR0cmlidXRlKCJ1diIsbmV3IGI0dChhLDIpKSx0aGlzLmNvbXB1dGVWZXJ0ZXhOb3JtYWxzKCksaT09PTIqTWF0aC5QSSl7Y29uc3Qgbj10aGlzLmF0dHJpYnV0ZXMubm9ybWFsLmFycmF5LGk9bmV3IEg1dCxyPW5ldyBINXQsbz1uZXcgSDV0LGE9ZSp0Lmxlbmd0aCozO2ZvcihsZXQgZT0wLHM9MDtlPHQubGVuZ3RoO2UrKyxzKz0zKWkueD1uW3MrMF0saS55PW5bcysxXSxpLno9bltzKzJdLHIueD1uW2ErcyswXSxyLnk9blthK3MrMV0sci56PW5bYStzKzJdLG8uYWRkVmVjdG9ycyhpLHIpLm5vcm1hbGl6ZSgpLG5bcyswXT1uW2ErcyswXT1vLngsbltzKzFdPW5bYStzKzFdPW8ueSxuW3MrMl09blthK3MrMl09by56fX1zdGF0aWMgZnJvbUpTT04odCl7cmV0dXJuIG5ldyBTZWUodC5wb2ludHMsdC5zZWdtZW50cyx0LnBoaVN0YXJ0LHQucGhpTGVuZ3RoKX19Y2xhc3MgTWVlIGV4dGVuZHMgdnRle2NvbnN0cnVjdG9yKHQ9MSxlPTApe3N1cGVyKFsxLDAsMCwtMSwwLDAsMCwxLDAsMCwtMSwwLDAsMCwxLDAsMCwtMV0sWzAsMiw0LDAsNCwzLDAsMyw1LDAsNSwyLDEsMiw1LDEsNSwzLDEsMyw0LDEsNCwyXSx0LGUpLHRoaXMudHlwZT0iT2N0YWhlZHJvbkdlb21ldHJ5Iix0aGlzLnBhcmFtZXRlcnM9e3JhZGl1czp0LGRldGFpbDplfX1zdGF0aWMgZnJvbUpTT04odCl7cmV0dXJuIG5ldyBNZWUodC5yYWRpdXMsdC5kZXRhaWwpfX1jbGFzcyBFZWUgZXh0ZW5kcyBONHR7Y29uc3RydWN0b3IodCxlLG4pe3N1cGVyKCksdGhpcy50eXBlPSJQYXJhbWV0cmljR2VvbWV0cnkiLHRoaXMucGFyYW1ldGVycz17ZnVuYzp0LHNsaWNlczplLHN0YWNrczpufTtjb25zdCBpPVtdLHI9W10sbz1bXSxhPVtdLHM9MWUtNSxsPW5ldyBINXQsYz1uZXcgSDV0LHU9bmV3IEg1dCxoPW5ldyBINXQsZD1uZXcgSDV0O3QubGVuZ3RoPDMmJmNvbnNvbGUuZXJyb3IoIlRIUkVFLlBhcmFtZXRyaWNHZW9tZXRyeTogRnVuY3Rpb24gbXVzdCBub3cgbW9kaWZ5IGEgVmVjdG9yMyBhcyB0aGlyZCBwYXJhbWV0ZXIuIik7Y29uc3QgcD1lKzE7Zm9yKGxldCBpPTA7aTw9bjtpKyspe2NvbnN0IHA9aS9uO2ZvcihsZXQgbj0wO248PWU7bisrKXtjb25zdCBpPW4vZTt0KGkscCxjKSxyLnB1c2goYy54LGMueSxjLnopLGktcz49MD8odChpLXMscCx1KSxoLnN1YlZlY3RvcnMoYyx1KSk6KHQoaStzLHAsdSksaC5zdWJWZWN0b3JzKHUsYykpLHAtcz49MD8odChpLHAtcyx1KSxkLnN1YlZlY3RvcnMoYyx1KSk6KHQoaSxwK3MsdSksZC5zdWJWZWN0b3JzKHUsYykpLGwuY3Jvc3NWZWN0b3JzKGgsZCkubm9ybWFsaXplKCksby5wdXNoKGwueCxsLnksbC56KSxhLnB1c2goaSxwKX19Zm9yKGxldCB0PTA7dDxuO3QrKylmb3IobGV0IG49MDtuPGU7bisrKXtjb25zdCBlPXQqcCtuKzEscj0odCsxKSpwK24rMSxvPSh0KzEpKnArbjtpLnB1c2godCpwK24sZSxvKSxpLnB1c2goZSxyLG8pfXRoaXMuc2V0SW5kZXgoaSksdGhpcy5zZXRBdHRyaWJ1dGUoInBvc2l0aW9uIixuZXcgYjR0KHIsMykpLHRoaXMuc2V0QXR0cmlidXRlKCJub3JtYWwiLG5ldyBiNHQobywzKSksdGhpcy5zZXRBdHRyaWJ1dGUoInV2IixuZXcgYjR0KGEsMikpfX1jbGFzcyBUZWUgZXh0ZW5kcyBONHR7Y29uc3RydWN0b3IodD0uNSxlPTEsbj04LGk9MSxyPTAsbz0yKk1hdGguUEkpe3N1cGVyKCksdGhpcy50eXBlPSJSaW5nR2VvbWV0cnkiLHRoaXMucGFyYW1ldGVycz17aW5uZXJSYWRpdXM6dCxvdXRlclJhZGl1czplLHRoZXRhU2VnbWVudHM6bixwaGlTZWdtZW50czppLHRoZXRhU3RhcnQ6cix0aGV0YUxlbmd0aDpvfSxuPU1hdGgubWF4KDMsbik7Y29uc3QgYT1bXSxzPVtdLGw9W10sYz1bXTtsZXQgdT10O2NvbnN0IGg9KGUtdCkvKGk9TWF0aC5tYXgoMSxpKSksZD1uZXcgSDV0LHA9bmV3IEM1dDtmb3IobGV0IHQ9MDt0PD1pO3QrKyl7Zm9yKGxldCB0PTA7dDw9bjt0Kyspe2NvbnN0IGk9cit0L24qbztkLng9dSpNYXRoLmNvcyhpKSxkLnk9dSpNYXRoLnNpbihpKSxzLnB1c2goZC54LGQueSxkLnopLGwucHVzaCgwLDAsMSkscC54PShkLngvZSsxKS8yLHAueT0oZC55L2UrMSkvMixjLnB1c2gocC54LHAueSl9dSs9aH1mb3IobGV0IHQ9MDt0PGk7dCsrKXtjb25zdCBlPXQqKG4rMSk7Zm9yKGxldCB0PTA7dDxuO3QrKyl7Y29uc3QgaT10K2Uscj1pK24rMSxvPWkrbisyLHM9aSsxO2EucHVzaChpLHIscyksYS5wdXNoKHIsbyxzKX19dGhpcy5zZXRJbmRleChhKSx0aGlzLnNldEF0dHJpYnV0ZSgicG9zaXRpb24iLG5ldyBiNHQocywzKSksdGhpcy5zZXRBdHRyaWJ1dGUoIm5vcm1hbCIsbmV3IGI0dChsLDMpKSx0aGlzLnNldEF0dHJpYnV0ZSgidXYiLG5ldyBiNHQoYywyKSl9c3RhdGljIGZyb21KU09OKHQpe3JldHVybiBuZXcgVGVlKHQuaW5uZXJSYWRpdXMsdC5vdXRlclJhZGl1cyx0LnRoZXRhU2VnbWVudHMsdC5waGlTZWdtZW50cyx0LnRoZXRhU3RhcnQsdC50aGV0YUxlbmd0aCl9fWNsYXNzIENlZSBleHRlbmRzIE40dHtjb25zdHJ1Y3Rvcih0LGU9MTIpe3N1cGVyKCksdGhpcy50eXBlPSJTaGFwZUdlb21ldHJ5Iix0aGlzLnBhcmFtZXRlcnM9e3NoYXBlczp0LGN1cnZlU2VnbWVudHM6ZX07Y29uc3Qgbj1bXSxpPVtdLHI9W10sbz1bXTtsZXQgYT0wLHM9MDtpZighMT09PUFycmF5LmlzQXJyYXkodCkpbCh0KTtlbHNlIGZvcihsZXQgZT0wO2U8dC5sZW5ndGg7ZSsrKWwodFtlXSksdGhpcy5hZGRHcm91cChhLHMsZSksYSs9cyxzPTA7ZnVuY3Rpb24gbCh0KXtjb25zdCBhPWkubGVuZ3RoLzMsbD10LmV4dHJhY3RQb2ludHMoZSk7bGV0IGM9bC5zaGFwZTtjb25zdCB1PWwuaG9sZXM7ITE9PT1fZWUuaXNDbG9ja1dpc2UoYykmJihjPWMucmV2ZXJzZSgpKTtmb3IobGV0IHQ9MCxlPXUubGVuZ3RoO3Q8ZTt0Kyspe2NvbnN0IGU9dVt0XTshMD09PV9lZS5pc0Nsb2NrV2lzZShlKSYmKHVbdF09ZS5yZXZlcnNlKCkpfWNvbnN0IGg9X2VlLnRyaWFuZ3VsYXRlU2hhcGUoYyx1KTtmb3IobGV0IHQ9MCxlPXUubGVuZ3RoO3Q8ZTt0Kyspe2M9Yy5jb25jYXQodVt0XSl9Zm9yKGxldCB0PTAsZT1jLmxlbmd0aDt0PGU7dCsrKXtjb25zdCBlPWNbdF07aS5wdXNoKGUueCxlLnksMCksci5wdXNoKDAsMCwxKSxvLnB1c2goZS54LGUueSl9Zm9yKGxldCB0PTAsZT1oLmxlbmd0aDt0PGU7dCsrKXtjb25zdCBlPWhbdF07bi5wdXNoKGVbMF0rYSxlWzFdK2EsZVsyXSthKSxzKz0zfX10aGlzLnNldEluZGV4KG4pLHRoaXMuc2V0QXR0cmlidXRlKCJwb3NpdGlvbiIsbmV3IGI0dChpLDMpKSx0aGlzLnNldEF0dHJpYnV0ZSgibm9ybWFsIixuZXcgYjR0KHIsMykpLHRoaXMuc2V0QXR0cmlidXRlKCJ1diIsbmV3IGI0dChvLDIpKX10b0pTT04oKXtjb25zdCB0PXN1cGVyLnRvSlNPTigpO3JldHVybihmdW5jdGlvbiBlKHQsbil7aWYobi5zaGFwZXM9W10sQXJyYXkuaXNBcnJheSh0KSlmb3IobGV0IGU9MCxpPXQubGVuZ3RoO2U8aTtlKyspe24uc2hhcGVzLnB1c2godFtlXS51dWlkKX1lbHNlIG4uc2hhcGVzLnB1c2godC51dWlkKTtyZXR1cm4gbn0pKHRoaXMucGFyYW1ldGVycy5zaGFwZXMsdCl9c3RhdGljIGZyb21KU09OKHQsZSl7Y29uc3Qgbj1bXTtmb3IobGV0IGk9MCxyPXQuc2hhcGVzLmxlbmd0aDtpPHI7aSsrKXtuLnB1c2goZVt0LnNoYXBlc1tpXV0pfXJldHVybiBuZXcgQ2VlKG4sdC5jdXJ2ZVNlZ21lbnRzKX19Y2xhc3MgQWVlIGV4dGVuZHMgTjR0e2NvbnN0cnVjdG9yKHQ9MSxlPTMyLG49MTYsaT0wLHI9MipNYXRoLlBJLG89MCxhPU1hdGguUEkpe3N1cGVyKCksdGhpcy50eXBlPSJTcGhlcmVHZW9tZXRyeSIsdGhpcy5wYXJhbWV0ZXJzPXtyYWRpdXM6dCx3aWR0aFNlZ21lbnRzOmUsaGVpZ2h0U2VnbWVudHM6bixwaGlTdGFydDppLHBoaUxlbmd0aDpyLHRoZXRhU3RhcnQ6byx0aGV0YUxlbmd0aDphfSxlPU1hdGgubWF4KDMsTWF0aC5mbG9vcihlKSksbj1NYXRoLm1heCgyLE1hdGguZmxvb3IobikpO2NvbnN0IHM9TWF0aC5taW4obythLE1hdGguUEkpO2xldCBsPTA7Y29uc3QgYz1bXSx1PW5ldyBINXQsaD1uZXcgSDV0LGQ9W10scD1bXSxmPVtdLG09W107Zm9yKGxldCBkPTA7ZDw9bjtkKyspe2NvbnN0IGc9W10sXz1kL247bGV0IHk9MDswPT1kJiYwPT1vP3k9LjUvZTpkPT1uJiZzPT1NYXRoLlBJJiYoeT0tLjUvZSk7Zm9yKGxldCBuPTA7bjw9ZTtuKyspe2NvbnN0IHM9bi9lO3UueD0tdCpNYXRoLmNvcyhpK3MqcikqTWF0aC5zaW4obytfKmEpLHUueT10Kk1hdGguY29zKG8rXyphKSx1Lno9dCpNYXRoLnNpbihpK3MqcikqTWF0aC5zaW4obytfKmEpLHAucHVzaCh1LngsdS55LHUueiksaC5jb3B5KHUpLm5vcm1hbGl6ZSgpLGYucHVzaChoLngsaC55LGgueiksbS5wdXNoKHMreSwxLV8pLGcucHVzaChsKyspfWMucHVzaChnKX1mb3IobGV0IHQ9MDt0PG47dCsrKWZvcihsZXQgaT0wO2k8ZTtpKyspe2NvbnN0IGU9Y1t0XVtpKzFdLHI9Y1t0XVtpXSxhPWNbdCsxXVtpXSxsPWNbdCsxXVtpKzFdOygwIT09dHx8bz4wKSYmZC5wdXNoKGUscixsKSwodCE9PW4tMXx8czxNYXRoLlBJKSYmZC5wdXNoKHIsYSxsKX10aGlzLnNldEluZGV4KGQpLHRoaXMuc2V0QXR0cmlidXRlKCJwb3NpdGlvbiIsbmV3IGI0dChwLDMpKSx0aGlzLnNldEF0dHJpYnV0ZSgibm9ybWFsIixuZXcgYjR0KGYsMykpLHRoaXMuc2V0QXR0cmlidXRlKCJ1diIsbmV3IGI0dChtLDIpKX1zdGF0aWMgZnJvbUpTT04odCl7cmV0dXJuIG5ldyBBZWUodC5yYWRpdXMsdC53aWR0aFNlZ21lbnRzLHQuaGVpZ2h0U2VnbWVudHMsdC5waGlTdGFydCx0LnBoaUxlbmd0aCx0LnRoZXRhU3RhcnQsdC50aGV0YUxlbmd0aCl9fWNsYXNzIGtlZSBleHRlbmRzIHZ0ZXtjb25zdHJ1Y3Rvcih0PTEsZT0wKXtzdXBlcihbMSwxLDEsLTEsLTEsMSwtMSwxLC0xLDEsLTEsLTFdLFsyLDEsMCwwLDMsMiwxLDMsMCwyLDMsMV0sdCxlKSx0aGlzLnR5cGU9IlRldHJhaGVkcm9uR2VvbWV0cnkiLHRoaXMucGFyYW1ldGVycz17cmFkaXVzOnQsZGV0YWlsOmV9fXN0YXRpYyBmcm9tSlNPTih0KXtyZXR1cm4gbmV3IGtlZSh0LnJhZGl1cyx0LmRldGFpbCl9fWNsYXNzIExlZSBleHRlbmRzIGJlZXtjb25zdHJ1Y3Rvcih0LGU9e30pe2NvbnN0IG49ZS5mb250O2lmKCFufHwhbi5pc0ZvbnQpcmV0dXJuIGNvbnNvbGUuZXJyb3IoIlRIUkVFLlRleHRHZW9tZXRyeTogZm9udCBwYXJhbWV0ZXIgaXMgbm90IGFuIGluc3RhbmNlIG9mIFRIUkVFLkZvbnQuIiksbmV3IE40dDtjb25zdCBpPW4uZ2VuZXJhdGVTaGFwZXModCxlLnNpemUpO2UuZGVwdGg9dm9pZCAwIT09ZS5oZWlnaHQ/ZS5oZWlnaHQ6NTAsdm9pZCAwPT09ZS5iZXZlbFRoaWNrbmVzcyYmKGUuYmV2ZWxUaGlja25lc3M9MTApLHZvaWQgMD09PWUuYmV2ZWxTaXplJiYoZS5iZXZlbFNpemU9OCksdm9pZCAwPT09ZS5iZXZlbEVuYWJsZWQmJihlLmJldmVsRW5hYmxlZD0hMSksc3VwZXIoaSxlKSx0aGlzLnR5cGU9IlRleHRHZW9tZXRyeSJ9fWNsYXNzIFBlZSBleHRlbmRzIE40dHtjb25zdHJ1Y3Rvcih0PTEsZT0uNCxuPTgsaT02LHI9MipNYXRoLlBJKXtzdXBlcigpLHRoaXMudHlwZT0iVG9ydXNHZW9tZXRyeSIsdGhpcy5wYXJhbWV0ZXJzPXtyYWRpdXM6dCx0dWJlOmUscmFkaWFsU2VnbWVudHM6bix0dWJ1bGFyU2VnbWVudHM6aSxhcmM6cn0sbj1NYXRoLmZsb29yKG4pLGk9TWF0aC5mbG9vcihpKTtjb25zdCBvPVtdLGE9W10scz1bXSxsPVtdLGM9bmV3IEg1dCx1PW5ldyBINXQsaD1uZXcgSDV0O2ZvcihsZXQgbz0wO288PW47bysrKWZvcihsZXQgZD0wO2Q8PWk7ZCsrKXtjb25zdCBwPWQvaSpyLGY9by9uKk1hdGguUEkqMjt1Lng9KHQrZSpNYXRoLmNvcyhmKSkqTWF0aC5jb3MocCksdS55PSh0K2UqTWF0aC5jb3MoZikpKk1hdGguc2luKHApLHUuej1lKk1hdGguc2luKGYpLGEucHVzaCh1LngsdS55LHUueiksYy54PXQqTWF0aC5jb3MocCksYy55PXQqTWF0aC5zaW4ocCksaC5zdWJWZWN0b3JzKHUsYykubm9ybWFsaXplKCkscy5wdXNoKGgueCxoLnksaC56KSxsLnB1c2goZC9pKSxsLnB1c2goby9uKX1mb3IobGV0IHQ9MTt0PD1uO3QrKylmb3IobGV0IGU9MTtlPD1pO2UrKyl7Y29uc3Qgbj0oaSsxKSoodC0xKStlLTEscj0oaSsxKSoodC0xKStlLGE9KGkrMSkqdCtlO28ucHVzaCgoaSsxKSp0K2UtMSxuLGEpLG8ucHVzaChuLHIsYSl9dGhpcy5zZXRJbmRleChvKSx0aGlzLnNldEF0dHJpYnV0ZSgicG9zaXRpb24iLG5ldyBiNHQoYSwzKSksdGhpcy5zZXRBdHRyaWJ1dGUoIm5vcm1hbCIsbmV3IGI0dChzLDMpKSx0aGlzLnNldEF0dHJpYnV0ZSgidXYiLG5ldyBiNHQobCwyKSl9c3RhdGljIGZyb21KU09OKHQpe3JldHVybiBuZXcgUGVlKHQucmFkaXVzLHQudHViZSx0LnJhZGlhbFNlZ21lbnRzLHQudHVidWxhclNlZ21lbnRzLHQuYXJjKX19Y2xhc3MgTmVlIGV4dGVuZHMgTjR0e2NvbnN0cnVjdG9yKHQ9MSxlPS40LG49NjQsaT04LHI9MixvPTMpe3N1cGVyKCksdGhpcy50eXBlPSJUb3J1c0tub3RHZW9tZXRyeSIsdGhpcy5wYXJhbWV0ZXJzPXtyYWRpdXM6dCx0dWJlOmUsdHVidWxhclNlZ21lbnRzOm4scmFkaWFsU2VnbWVudHM6aSxwOnIscTpvfSxuPU1hdGguZmxvb3IobiksaT1NYXRoLmZsb29yKGkpO2NvbnN0IGE9W10scz1bXSxsPVtdLGM9W10sdT1uZXcgSDV0LGg9bmV3IEg1dCxkPW5ldyBINXQscD1uZXcgSDV0LGY9bmV3IEg1dCxtPW5ldyBINXQsZz1uZXcgSDV0O2ZvcihsZXQgYT0wO2E8PW47KythKXtjb25zdCB5PWEvbipyKk1hdGguUEkqMjtfKHkscixvLHQsZCksXyh5Ky4wMSxyLG8sdCxwKSxtLnN1YlZlY3RvcnMocCxkKSxnLmFkZFZlY3RvcnMocCxkKSxmLmNyb3NzVmVjdG9ycyhtLGcpLGcuY3Jvc3NWZWN0b3JzKGYsbSksZi5ub3JtYWxpemUoKSxnLm5vcm1hbGl6ZSgpO2ZvcihsZXQgdD0wO3Q8PWk7Kyt0KXtjb25zdCByPXQvaSpNYXRoLlBJKjIsbz0tZSpNYXRoLmNvcyhyKSxwPWUqTWF0aC5zaW4ocik7dS54PWQueCsobypnLngrcCpmLngpLHUueT1kLnkrKG8qZy55K3AqZi55KSx1Lno9ZC56KyhvKmcueitwKmYueikscy5wdXNoKHUueCx1LnksdS56KSxoLnN1YlZlY3RvcnModSxkKS5ub3JtYWxpemUoKSxsLnB1c2goaC54LGgueSxoLnopLGMucHVzaChhL24pLGMucHVzaCh0L2kpfX1mb3IobGV0IHQ9MTt0PD1uO3QrKylmb3IobGV0IGU9MTtlPD1pO2UrKyl7Y29uc3Qgbj0oaSsxKSp0KyhlLTEpLHI9KGkrMSkqdCtlLG89KGkrMSkqKHQtMSkrZTthLnB1c2goKGkrMSkqKHQtMSkrKGUtMSksbixvKSxhLnB1c2gobixyLG8pfWZ1bmN0aW9uIF8odCxlLG4saSxyKXtjb25zdCBvPU1hdGguY29zKHQpLGE9TWF0aC5zaW4odCkscz1uL2UqdCxsPU1hdGguY29zKHMpO3IueD1pKigyK2wpKi41Km8sci55PWkqKDIrbCkqYSouNSxyLno9aSpNYXRoLnNpbihzKSouNX10aGlzLnNldEluZGV4KGEpLHRoaXMuc2V0QXR0cmlidXRlKCJwb3NpdGlvbiIsbmV3IGI0dChzLDMpKSx0aGlzLnNldEF0dHJpYnV0ZSgibm9ybWFsIixuZXcgYjR0KGwsMykpLHRoaXMuc2V0QXR0cmlidXRlKCJ1diIsbmV3IGI0dChjLDIpKX1zdGF0aWMgZnJvbUpTT04odCl7cmV0dXJuIG5ldyBOZWUodC5yYWRpdXMsdC50dWJlLHQudHVidWxhclNlZ21lbnRzLHQucmFkaWFsU2VnbWVudHMsdC5wLHQucSl9fWNsYXNzIEllZSBleHRlbmRzIE40dHtjb25zdHJ1Y3Rvcih0LGU9NjQsbj0xLGk9OCxyPSExKXtzdXBlcigpLHRoaXMudHlwZT0iVHViZUdlb21ldHJ5Iix0aGlzLnBhcmFtZXRlcnM9e3BhdGg6dCx0dWJ1bGFyU2VnbWVudHM6ZSxyYWRpdXM6bixyYWRpYWxTZWdtZW50czppLGNsb3NlZDpyfTtjb25zdCBvPXQuY29tcHV0ZUZyZW5ldEZyYW1lcyhlLHIpO3RoaXMudGFuZ2VudHM9by50YW5nZW50cyx0aGlzLm5vcm1hbHM9by5ub3JtYWxzLHRoaXMuYmlub3JtYWxzPW8uYmlub3JtYWxzO2NvbnN0IGE9bmV3IEg1dCxzPW5ldyBINXQsbD1uZXcgQzV0O2xldCBjPW5ldyBINXQ7Y29uc3QgdT1bXSxoPVtdLGQ9W10scD1bXTtmdW5jdGlvbiBmKHIpe2M9dC5nZXRQb2ludEF0KHIvZSxjKTtjb25zdCBsPW8ubm9ybWFsc1tyXSxkPW8uYmlub3JtYWxzW3JdO2ZvcihsZXQgdD0wO3Q8PWk7dCsrKXtjb25zdCBlPXQvaSpNYXRoLlBJKjIscj1NYXRoLnNpbihlKSxvPS1NYXRoLmNvcyhlKTtzLng9bypsLngrcipkLngscy55PW8qbC55K3IqZC55LHMuej1vKmwueityKmQueixzLm5vcm1hbGl6ZSgpLGgucHVzaChzLngscy55LHMueiksYS54PWMueCtuKnMueCxhLnk9Yy55K24qcy55LGEuej1jLnorbipzLnosdS5wdXNoKGEueCxhLnksYS56KX19IShmdW5jdGlvbiBtKCl7Zm9yKGxldCB0PTA7dDxlO3QrKylmKHQpO2YoITE9PT1yP2U6MCksKGZ1bmN0aW9uIHQoKXtmb3IobGV0IHQ9MDt0PD1lO3QrKylmb3IobGV0IG49MDtuPD1pO24rKylsLng9dC9lLGwueT1uL2ksZC5wdXNoKGwueCxsLnkpfSkoKSwoZnVuY3Rpb24gbigpe2ZvcihsZXQgdD0xO3Q8PWU7dCsrKWZvcihsZXQgZT0xO2U8PWk7ZSsrKXtjb25zdCBuPShpKzEpKnQrKGUtMSkscj0oaSsxKSp0K2Usbz0oaSsxKSoodC0xKStlO3AucHVzaCgoaSsxKSoodC0xKSsoZS0xKSxuLG8pLHAucHVzaChuLHIsbyl9fSkoKX0pKCksdGhpcy5zZXRJbmRleChwKSx0aGlzLnNldEF0dHJpYnV0ZSgicG9zaXRpb24iLG5ldyBiNHQodSwzKSksdGhpcy5zZXRBdHRyaWJ1dGUoIm5vcm1hbCIsbmV3IGI0dChoLDMpKSx0aGlzLnNldEF0dHJpYnV0ZSgidXYiLG5ldyBiNHQoZCwyKSl9dG9KU09OKCl7Y29uc3QgdD1zdXBlci50b0pTT04oKTtyZXR1cm4gdC5wYXRoPXRoaXMucGFyYW1ldGVycy5wYXRoLnRvSlNPTigpLHR9c3RhdGljIGZyb21KU09OKHQpe3JldHVybiBuZXcgSWVlKChuZXcgV3RlW3QucGF0aC50eXBlXSkuZnJvbUpTT04odC5wYXRoKSx0LnR1YnVsYXJTZWdtZW50cyx0LnJhZGl1cyx0LnJhZGlhbFNlZ21lbnRzLHQuY2xvc2VkKX19Y2xhc3MgUmVlIGV4dGVuZHMgTjR0e2NvbnN0cnVjdG9yKHQpe2lmKHN1cGVyKCksdGhpcy50eXBlPSJXaXJlZnJhbWVHZW9tZXRyeSIsITA9PT10LmlzR2VvbWV0cnkpcmV0dXJuIHZvaWQgY29uc29sZS5lcnJvcigiVEhSRUUuV2lyZWZyYW1lR2VvbWV0cnkgbm8gbG9uZ2VyIHN1cHBvcnRzIFRIUkVFLkdlb21ldHJ5LiBVc2UgVEhSRUUuQnVmZmVyR2VvbWV0cnkgaW5zdGVhZC4iKTtjb25zdCBlPVtdLG49bmV3IFNldCxpPW5ldyBINXQscj1uZXcgSDV0O2lmKG51bGwhPT10LmluZGV4KXtjb25zdCBvPXQuYXR0cmlidXRlcy5wb3NpdGlvbixhPXQuaW5kZXg7bGV0IHM9dC5ncm91cHM7MD09PXMubGVuZ3RoJiYocz1be3N0YXJ0OjAsY291bnQ6YS5jb3VudCxtYXRlcmlhbEluZGV4OjB9XSk7Zm9yKGxldCB0PTAsbD1zLmxlbmd0aDt0PGw7Kyt0KXtjb25zdCBsPXNbdF0sYz1sLnN0YXJ0O2ZvcihsZXQgdD1jLHM9YytsLmNvdW50O3Q8czt0Kz0zKWZvcihsZXQgcz0wO3M8MztzKyspe2NvbnN0IGw9YS5nZXRYKHQrcyksYz1hLmdldFgodCsocysxKSUzKTtpLmZyb21CdWZmZXJBdHRyaWJ1dGUobyxsKSxyLmZyb21CdWZmZXJBdHRyaWJ1dGUobyxjKSwhMD09PU9lZShpLHIsbikmJihlLnB1c2goaS54LGkueSxpLnopLGUucHVzaChyLngsci55LHIueikpfX19ZWxzZXtjb25zdCBvPXQuYXR0cmlidXRlcy5wb3NpdGlvbjtmb3IobGV0IHQ9MCxhPW8uY291bnQvMzt0PGE7dCsrKWZvcihsZXQgYT0wO2E8MzthKyspe2NvbnN0IHM9Myp0KyhhKzEpJTM7aS5mcm9tQnVmZmVyQXR0cmlidXRlKG8sMyp0K2EpLHIuZnJvbUJ1ZmZlckF0dHJpYnV0ZShvLHMpLCEwPT09T2VlKGkscixuKSYmKGUucHVzaChpLngsaS55LGkueiksZS5wdXNoKHIueCxyLnksci56KSl9fXRoaXMuc2V0QXR0cmlidXRlKCJwb3NpdGlvbiIsbmV3IGI0dChlLDMpKX19ZnVuY3Rpb24gT2VlKHQsZSxuKXtjb25zdCBpPWAke3QueH0sJHt0Lnl9LCR7dC56fS0ke2UueH0sJHtlLnl9LCR7ZS56fWAscj1gJHtlLnh9LCR7ZS55fSwke2Uuen0tJHt0Lnh9LCR7dC55fSwke3Quen1gO3JldHVybiEwIT09bi5oYXMoaSkmJiEwIT09bi5oYXMocikmJihuLmFkZChpLHIpLCEwKX12YXIgemVlPU9iamVjdC5mcmVlemUoe19fcHJvdG9fXzpudWxsLEJveEdlb21ldHJ5Oko0dCxCb3hCdWZmZXJHZW9tZXRyeTpKNHQsQ2lyY2xlR2VvbWV0cnk6Z3RlLENpcmNsZUJ1ZmZlckdlb21ldHJ5Omd0ZSxDb25lR2VvbWV0cnk6eXRlLENvbmVCdWZmZXJHZW9tZXRyeTp5dGUsQ3lsaW5kZXJHZW9tZXRyeTpfdGUsQ3lsaW5kZXJCdWZmZXJHZW9tZXRyeTpfdGUsRG9kZWNhaGVkcm9uR2VvbWV0cnk6YnRlLERvZGVjYWhlZHJvbkJ1ZmZlckdlb21ldHJ5OmJ0ZSxFZGdlc0dlb21ldHJ5OkV0ZSxFeHRydWRlR2VvbWV0cnk6YmVlLEV4dHJ1ZGVCdWZmZXJHZW9tZXRyeTpiZWUsSWNvc2FoZWRyb25HZW9tZXRyeTp3ZWUsSWNvc2FoZWRyb25CdWZmZXJHZW9tZXRyeTp3ZWUsTGF0aGVHZW9tZXRyeTpTZWUsTGF0aGVCdWZmZXJHZW9tZXRyeTpTZWUsT2N0YWhlZHJvbkdlb21ldHJ5Ok1lZSxPY3RhaGVkcm9uQnVmZmVyR2VvbWV0cnk6TWVlLFBhcmFtZXRyaWNHZW9tZXRyeTpFZWUsUGFyYW1ldHJpY0J1ZmZlckdlb21ldHJ5OkVlZSxQbGFuZUdlb21ldHJ5Onk2dCxQbGFuZUJ1ZmZlckdlb21ldHJ5Onk2dCxQb2x5aGVkcm9uR2VvbWV0cnk6dnRlLFBvbHloZWRyb25CdWZmZXJHZW9tZXRyeTp2dGUsUmluZ0dlb21ldHJ5OlRlZSxSaW5nQnVmZmVyR2VvbWV0cnk6VGVlLFNoYXBlR2VvbWV0cnk6Q2VlLFNoYXBlQnVmZmVyR2VvbWV0cnk6Q2VlLFNwaGVyZUdlb21ldHJ5OkFlZSxTcGhlcmVCdWZmZXJHZW9tZXRyeTpBZWUsVGV0cmFoZWRyb25HZW9tZXRyeTprZWUsVGV0cmFoZWRyb25CdWZmZXJHZW9tZXRyeTprZWUsVGV4dEdlb21ldHJ5OkxlZSxUZXh0QnVmZmVyR2VvbWV0cnk6TGVlLFRvcnVzR2VvbWV0cnk6UGVlLFRvcnVzQnVmZmVyR2VvbWV0cnk6UGVlLFRvcnVzS25vdEdlb21ldHJ5Ok5lZSxUb3J1c0tub3RCdWZmZXJHZW9tZXRyeTpOZWUsVHViZUdlb21ldHJ5OkllZSxUdWJlQnVmZmVyR2VvbWV0cnk6SWVlLFdpcmVmcmFtZUdlb21ldHJ5OlJlZX0pO2NsYXNzIERlZSBleHRlbmRzIHQ0dHtjb25zdHJ1Y3Rvcih0KXtzdXBlcigpLHRoaXMudHlwZT0iU2hhZG93TWF0ZXJpYWwiLHRoaXMuY29sb3I9bmV3IHM0dCgwKSx0aGlzLnRyYW5zcGFyZW50PSEwLHRoaXMuc2V0VmFsdWVzKHQpfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5jb2xvci5jb3B5KHQuY29sb3IpLHRoaXN9fURlZS5wcm90b3R5cGUuaXNTaGFkb3dNYXRlcmlhbD0hMDtjbGFzcyBCZWUgZXh0ZW5kcyB0NHR7Y29uc3RydWN0b3IodCl7c3VwZXIoKSx0aGlzLmRlZmluZXM9e1NUQU5EQVJEOiIifSx0aGlzLnR5cGU9Ik1lc2hTdGFuZGFyZE1hdGVyaWFsIix0aGlzLmNvbG9yPW5ldyBzNHQoMTY3NzcyMTUpLHRoaXMucm91Z2huZXNzPTEsdGhpcy5tZXRhbG5lc3M9MCx0aGlzLm1hcD1udWxsLHRoaXMubGlnaHRNYXA9bnVsbCx0aGlzLmxpZ2h0TWFwSW50ZW5zaXR5PTEsdGhpcy5hb01hcD1udWxsLHRoaXMuYW9NYXBJbnRlbnNpdHk9MSx0aGlzLmVtaXNzaXZlPW5ldyBzNHQoMCksdGhpcy5lbWlzc2l2ZUludGVuc2l0eT0xLHRoaXMuZW1pc3NpdmVNYXA9bnVsbCx0aGlzLmJ1bXBNYXA9bnVsbCx0aGlzLmJ1bXBTY2FsZT0xLHRoaXMubm9ybWFsTWFwPW51bGwsdGhpcy5ub3JtYWxNYXBUeXBlPTAsdGhpcy5ub3JtYWxTY2FsZT1uZXcgQzV0KDEsMSksdGhpcy5kaXNwbGFjZW1lbnRNYXA9bnVsbCx0aGlzLmRpc3BsYWNlbWVudFNjYWxlPTEsdGhpcy5kaXNwbGFjZW1lbnRCaWFzPTAsdGhpcy5yb3VnaG5lc3NNYXA9bnVsbCx0aGlzLm1ldGFsbmVzc01hcD1udWxsLHRoaXMuYWxwaGFNYXA9bnVsbCx0aGlzLmVudk1hcD1udWxsLHRoaXMuZW52TWFwSW50ZW5zaXR5PTEsdGhpcy5yZWZyYWN0aW9uUmF0aW89Ljk4LHRoaXMud2lyZWZyYW1lPSExLHRoaXMud2lyZWZyYW1lTGluZXdpZHRoPTEsdGhpcy53aXJlZnJhbWVMaW5lY2FwPSJyb3VuZCIsdGhpcy53aXJlZnJhbWVMaW5lam9pbj0icm91bmQiLHRoaXMuZmxhdFNoYWRpbmc9ITEsdGhpcy5zZXRWYWx1ZXModCl9Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLmRlZmluZXM9e1NUQU5EQVJEOiIifSx0aGlzLmNvbG9yLmNvcHkodC5jb2xvciksdGhpcy5yb3VnaG5lc3M9dC5yb3VnaG5lc3MsdGhpcy5tZXRhbG5lc3M9dC5tZXRhbG5lc3MsdGhpcy5tYXA9dC5tYXAsdGhpcy5saWdodE1hcD10LmxpZ2h0TWFwLHRoaXMubGlnaHRNYXBJbnRlbnNpdHk9dC5saWdodE1hcEludGVuc2l0eSx0aGlzLmFvTWFwPXQuYW9NYXAsdGhpcy5hb01hcEludGVuc2l0eT10LmFvTWFwSW50ZW5zaXR5LHRoaXMuZW1pc3NpdmUuY29weSh0LmVtaXNzaXZlKSx0aGlzLmVtaXNzaXZlTWFwPXQuZW1pc3NpdmVNYXAsdGhpcy5lbWlzc2l2ZUludGVuc2l0eT10LmVtaXNzaXZlSW50ZW5zaXR5LHRoaXMuYnVtcE1hcD10LmJ1bXBNYXAsdGhpcy5idW1wU2NhbGU9dC5idW1wU2NhbGUsdGhpcy5ub3JtYWxNYXA9dC5ub3JtYWxNYXAsdGhpcy5ub3JtYWxNYXBUeXBlPXQubm9ybWFsTWFwVHlwZSx0aGlzLm5vcm1hbFNjYWxlLmNvcHkodC5ub3JtYWxTY2FsZSksdGhpcy5kaXNwbGFjZW1lbnRNYXA9dC5kaXNwbGFjZW1lbnRNYXAsdGhpcy5kaXNwbGFjZW1lbnRTY2FsZT10LmRpc3BsYWNlbWVudFNjYWxlLHRoaXMuZGlzcGxhY2VtZW50Qmlhcz10LmRpc3BsYWNlbWVudEJpYXMsdGhpcy5yb3VnaG5lc3NNYXA9dC5yb3VnaG5lc3NNYXAsdGhpcy5tZXRhbG5lc3NNYXA9dC5tZXRhbG5lc3NNYXAsdGhpcy5hbHBoYU1hcD10LmFscGhhTWFwLHRoaXMuZW52TWFwPXQuZW52TWFwLHRoaXMuZW52TWFwSW50ZW5zaXR5PXQuZW52TWFwSW50ZW5zaXR5LHRoaXMucmVmcmFjdGlvblJhdGlvPXQucmVmcmFjdGlvblJhdGlvLHRoaXMud2lyZWZyYW1lPXQud2lyZWZyYW1lLHRoaXMud2lyZWZyYW1lTGluZXdpZHRoPXQud2lyZWZyYW1lTGluZXdpZHRoLHRoaXMud2lyZWZyYW1lTGluZWNhcD10LndpcmVmcmFtZUxpbmVjYXAsdGhpcy53aXJlZnJhbWVMaW5lam9pbj10LndpcmVmcmFtZUxpbmVqb2luLHRoaXMuZmxhdFNoYWRpbmc9dC5mbGF0U2hhZGluZyx0aGlzfX1CZWUucHJvdG90eXBlLmlzTWVzaFN0YW5kYXJkTWF0ZXJpYWw9ITA7Y2xhc3MgSGVlIGV4dGVuZHMgQmVle2NvbnN0cnVjdG9yKHQpe3N1cGVyKCksdGhpcy5kZWZpbmVzPXtTVEFOREFSRDoiIixQSFlTSUNBTDoiIn0sdGhpcy50eXBlPSJNZXNoUGh5c2ljYWxNYXRlcmlhbCIsdGhpcy5jbGVhcmNvYXQ9MCx0aGlzLmNsZWFyY29hdE1hcD1udWxsLHRoaXMuY2xlYXJjb2F0Um91Z2huZXNzPTAsdGhpcy5jbGVhcmNvYXRSb3VnaG5lc3NNYXA9bnVsbCx0aGlzLmNsZWFyY29hdE5vcm1hbFNjYWxlPW5ldyBDNXQoMSwxKSx0aGlzLmNsZWFyY29hdE5vcm1hbE1hcD1udWxsLHRoaXMucmVmbGVjdGl2aXR5PS41LE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJpb3IiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4oMSsuNCp0aGlzLnJlZmxlY3Rpdml0eSkvKDEtLjQqdGhpcy5yZWZsZWN0aXZpdHkpfSxzZXQ6ZnVuY3Rpb24odCl7dGhpcy5yZWZsZWN0aXZpdHk9czV0KDIuNSoodC0xKS8odCsxKSwwLDEpfX0pLHRoaXMuc2hlZW49bnVsbCx0aGlzLnRyYW5zbWlzc2lvbj0wLHRoaXMudHJhbnNtaXNzaW9uTWFwPW51bGwsdGhpcy50aGlja25lc3M9LjAxLHRoaXMudGhpY2tuZXNzTWFwPW51bGwsdGhpcy5hdHRlbnVhdGlvbkRpc3RhbmNlPTAsdGhpcy5hdHRlbnVhdGlvblRpbnQ9bmV3IHM0dCgxLDEsMSksdGhpcy5zcGVjdWxhckludGVuc2l0eT0xLHRoaXMuc3BlY3VsYXJJbnRlbnNpdHlNYXA9bnVsbCx0aGlzLnNwZWN1bGFyVGludD1uZXcgczR0KDEsMSwxKSx0aGlzLnNwZWN1bGFyVGludE1hcD1udWxsLHRoaXMuc2V0VmFsdWVzKHQpfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5kZWZpbmVzPXtTVEFOREFSRDoiIixQSFlTSUNBTDoiIn0sdGhpcy5jbGVhcmNvYXQ9dC5jbGVhcmNvYXQsdGhpcy5jbGVhcmNvYXRNYXA9dC5jbGVhcmNvYXRNYXAsdGhpcy5jbGVhcmNvYXRSb3VnaG5lc3M9dC5jbGVhcmNvYXRSb3VnaG5lc3MsdGhpcy5jbGVhcmNvYXRSb3VnaG5lc3NNYXA9dC5jbGVhcmNvYXRSb3VnaG5lc3NNYXAsdGhpcy5jbGVhcmNvYXROb3JtYWxNYXA9dC5jbGVhcmNvYXROb3JtYWxNYXAsdGhpcy5jbGVhcmNvYXROb3JtYWxTY2FsZS5jb3B5KHQuY2xlYXJjb2F0Tm9ybWFsU2NhbGUpLHRoaXMucmVmbGVjdGl2aXR5PXQucmVmbGVjdGl2aXR5LHRoaXMuc2hlZW49dC5zaGVlbj8odGhpcy5zaGVlbnx8bmV3IHM0dCkuY29weSh0LnNoZWVuKTpudWxsLHRoaXMudHJhbnNtaXNzaW9uPXQudHJhbnNtaXNzaW9uLHRoaXMudHJhbnNtaXNzaW9uTWFwPXQudHJhbnNtaXNzaW9uTWFwLHRoaXMudGhpY2tuZXNzPXQudGhpY2tuZXNzLHRoaXMudGhpY2tuZXNzTWFwPXQudGhpY2tuZXNzTWFwLHRoaXMuYXR0ZW51YXRpb25EaXN0YW5jZT10LmF0dGVudWF0aW9uRGlzdGFuY2UsdGhpcy5hdHRlbnVhdGlvblRpbnQuY29weSh0LmF0dGVudWF0aW9uVGludCksdGhpcy5zcGVjdWxhckludGVuc2l0eT10LnNwZWN1bGFySW50ZW5zaXR5LHRoaXMuc3BlY3VsYXJJbnRlbnNpdHlNYXA9dC5zcGVjdWxhckludGVuc2l0eU1hcCx0aGlzLnNwZWN1bGFyVGludC5jb3B5KHQuc3BlY3VsYXJUaW50KSx0aGlzLnNwZWN1bGFyVGludE1hcD10LnNwZWN1bGFyVGludE1hcCx0aGlzfX1IZWUucHJvdG90eXBlLmlzTWVzaFBoeXNpY2FsTWF0ZXJpYWw9ITA7Y2xhc3MgRmVlIGV4dGVuZHMgdDR0e2NvbnN0cnVjdG9yKHQpe3N1cGVyKCksdGhpcy50eXBlPSJNZXNoUGhvbmdNYXRlcmlhbCIsdGhpcy5jb2xvcj1uZXcgczR0KDE2Nzc3MjE1KSx0aGlzLnNwZWN1bGFyPW5ldyBzNHQoMTExODQ4MSksdGhpcy5zaGluaW5lc3M9MzAsdGhpcy5tYXA9bnVsbCx0aGlzLmxpZ2h0TWFwPW51bGwsdGhpcy5saWdodE1hcEludGVuc2l0eT0xLHRoaXMuYW9NYXA9bnVsbCx0aGlzLmFvTWFwSW50ZW5zaXR5PTEsdGhpcy5lbWlzc2l2ZT1uZXcgczR0KDApLHRoaXMuZW1pc3NpdmVJbnRlbnNpdHk9MSx0aGlzLmVtaXNzaXZlTWFwPW51bGwsdGhpcy5idW1wTWFwPW51bGwsdGhpcy5idW1wU2NhbGU9MSx0aGlzLm5vcm1hbE1hcD1udWxsLHRoaXMubm9ybWFsTWFwVHlwZT0wLHRoaXMubm9ybWFsU2NhbGU9bmV3IEM1dCgxLDEpLHRoaXMuZGlzcGxhY2VtZW50TWFwPW51bGwsdGhpcy5kaXNwbGFjZW1lbnRTY2FsZT0xLHRoaXMuZGlzcGxhY2VtZW50Qmlhcz0wLHRoaXMuc3BlY3VsYXJNYXA9bnVsbCx0aGlzLmFscGhhTWFwPW51bGwsdGhpcy5lbnZNYXA9bnVsbCx0aGlzLmNvbWJpbmU9MCx0aGlzLnJlZmxlY3Rpdml0eT0xLHRoaXMucmVmcmFjdGlvblJhdGlvPS45OCx0aGlzLndpcmVmcmFtZT0hMSx0aGlzLndpcmVmcmFtZUxpbmV3aWR0aD0xLHRoaXMud2lyZWZyYW1lTGluZWNhcD0icm91bmQiLHRoaXMud2lyZWZyYW1lTGluZWpvaW49InJvdW5kIix0aGlzLmZsYXRTaGFkaW5nPSExLHRoaXMuc2V0VmFsdWVzKHQpfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5jb2xvci5jb3B5KHQuY29sb3IpLHRoaXMuc3BlY3VsYXIuY29weSh0LnNwZWN1bGFyKSx0aGlzLnNoaW5pbmVzcz10LnNoaW5pbmVzcyx0aGlzLm1hcD10Lm1hcCx0aGlzLmxpZ2h0TWFwPXQubGlnaHRNYXAsdGhpcy5saWdodE1hcEludGVuc2l0eT10LmxpZ2h0TWFwSW50ZW5zaXR5LHRoaXMuYW9NYXA9dC5hb01hcCx0aGlzLmFvTWFwSW50ZW5zaXR5PXQuYW9NYXBJbnRlbnNpdHksdGhpcy5lbWlzc2l2ZS5jb3B5KHQuZW1pc3NpdmUpLHRoaXMuZW1pc3NpdmVNYXA9dC5lbWlzc2l2ZU1hcCx0aGlzLmVtaXNzaXZlSW50ZW5zaXR5PXQuZW1pc3NpdmVJbnRlbnNpdHksdGhpcy5idW1wTWFwPXQuYnVtcE1hcCx0aGlzLmJ1bXBTY2FsZT10LmJ1bXBTY2FsZSx0aGlzLm5vcm1hbE1hcD10Lm5vcm1hbE1hcCx0aGlzLm5vcm1hbE1hcFR5cGU9dC5ub3JtYWxNYXBUeXBlLHRoaXMubm9ybWFsU2NhbGUuY29weSh0Lm5vcm1hbFNjYWxlKSx0aGlzLmRpc3BsYWNlbWVudE1hcD10LmRpc3BsYWNlbWVudE1hcCx0aGlzLmRpc3BsYWNlbWVudFNjYWxlPXQuZGlzcGxhY2VtZW50U2NhbGUsdGhpcy5kaXNwbGFjZW1lbnRCaWFzPXQuZGlzcGxhY2VtZW50Qmlhcyx0aGlzLnNwZWN1bGFyTWFwPXQuc3BlY3VsYXJNYXAsdGhpcy5hbHBoYU1hcD10LmFscGhhTWFwLHRoaXMuZW52TWFwPXQuZW52TWFwLHRoaXMuY29tYmluZT10LmNvbWJpbmUsdGhpcy5yZWZsZWN0aXZpdHk9dC5yZWZsZWN0aXZpdHksdGhpcy5yZWZyYWN0aW9uUmF0aW89dC5yZWZyYWN0aW9uUmF0aW8sdGhpcy53aXJlZnJhbWU9dC53aXJlZnJhbWUsdGhpcy53aXJlZnJhbWVMaW5ld2lkdGg9dC53aXJlZnJhbWVMaW5ld2lkdGgsdGhpcy53aXJlZnJhbWVMaW5lY2FwPXQud2lyZWZyYW1lTGluZWNhcCx0aGlzLndpcmVmcmFtZUxpbmVqb2luPXQud2lyZWZyYW1lTGluZWpvaW4sdGhpcy5mbGF0U2hhZGluZz10LmZsYXRTaGFkaW5nLHRoaXN9fUZlZS5wcm90b3R5cGUuaXNNZXNoUGhvbmdNYXRlcmlhbD0hMDtjbGFzcyBWZWUgZXh0ZW5kcyB0NHR7Y29uc3RydWN0b3IodCl7c3VwZXIoKSx0aGlzLmRlZmluZXM9e1RPT046IiJ9LHRoaXMudHlwZT0iTWVzaFRvb25NYXRlcmlhbCIsdGhpcy5jb2xvcj1uZXcgczR0KDE2Nzc3MjE1KSx0aGlzLm1hcD1udWxsLHRoaXMuZ3JhZGllbnRNYXA9bnVsbCx0aGlzLmxpZ2h0TWFwPW51bGwsdGhpcy5saWdodE1hcEludGVuc2l0eT0xLHRoaXMuYW9NYXA9bnVsbCx0aGlzLmFvTWFwSW50ZW5zaXR5PTEsdGhpcy5lbWlzc2l2ZT1uZXcgczR0KDApLHRoaXMuZW1pc3NpdmVJbnRlbnNpdHk9MSx0aGlzLmVtaXNzaXZlTWFwPW51bGwsdGhpcy5idW1wTWFwPW51bGwsdGhpcy5idW1wU2NhbGU9MSx0aGlzLm5vcm1hbE1hcD1udWxsLHRoaXMubm9ybWFsTWFwVHlwZT0wLHRoaXMubm9ybWFsU2NhbGU9bmV3IEM1dCgxLDEpLHRoaXMuZGlzcGxhY2VtZW50TWFwPW51bGwsdGhpcy5kaXNwbGFjZW1lbnRTY2FsZT0xLHRoaXMuZGlzcGxhY2VtZW50Qmlhcz0wLHRoaXMuYWxwaGFNYXA9bnVsbCx0aGlzLndpcmVmcmFtZT0hMSx0aGlzLndpcmVmcmFtZUxpbmV3aWR0aD0xLHRoaXMud2lyZWZyYW1lTGluZWNhcD0icm91bmQiLHRoaXMud2lyZWZyYW1lTGluZWpvaW49InJvdW5kIix0aGlzLnNldFZhbHVlcyh0KX1jb3B5KHQpe3JldHVybiBzdXBlci5jb3B5KHQpLHRoaXMuY29sb3IuY29weSh0LmNvbG9yKSx0aGlzLm1hcD10Lm1hcCx0aGlzLmdyYWRpZW50TWFwPXQuZ3JhZGllbnRNYXAsdGhpcy5saWdodE1hcD10LmxpZ2h0TWFwLHRoaXMubGlnaHRNYXBJbnRlbnNpdHk9dC5saWdodE1hcEludGVuc2l0eSx0aGlzLmFvTWFwPXQuYW9NYXAsdGhpcy5hb01hcEludGVuc2l0eT10LmFvTWFwSW50ZW5zaXR5LHRoaXMuZW1pc3NpdmUuY29weSh0LmVtaXNzaXZlKSx0aGlzLmVtaXNzaXZlTWFwPXQuZW1pc3NpdmVNYXAsdGhpcy5lbWlzc2l2ZUludGVuc2l0eT10LmVtaXNzaXZlSW50ZW5zaXR5LHRoaXMuYnVtcE1hcD10LmJ1bXBNYXAsdGhpcy5idW1wU2NhbGU9dC5idW1wU2NhbGUsdGhpcy5ub3JtYWxNYXA9dC5ub3JtYWxNYXAsdGhpcy5ub3JtYWxNYXBUeXBlPXQubm9ybWFsTWFwVHlwZSx0aGlzLm5vcm1hbFNjYWxlLmNvcHkodC5ub3JtYWxTY2FsZSksdGhpcy5kaXNwbGFjZW1lbnRNYXA9dC5kaXNwbGFjZW1lbnRNYXAsdGhpcy5kaXNwbGFjZW1lbnRTY2FsZT10LmRpc3BsYWNlbWVudFNjYWxlLHRoaXMuZGlzcGxhY2VtZW50Qmlhcz10LmRpc3BsYWNlbWVudEJpYXMsdGhpcy5hbHBoYU1hcD10LmFscGhhTWFwLHRoaXMud2lyZWZyYW1lPXQud2lyZWZyYW1lLHRoaXMud2lyZWZyYW1lTGluZXdpZHRoPXQud2lyZWZyYW1lTGluZXdpZHRoLHRoaXMud2lyZWZyYW1lTGluZWNhcD10LndpcmVmcmFtZUxpbmVjYXAsdGhpcy53aXJlZnJhbWVMaW5lam9pbj10LndpcmVmcmFtZUxpbmVqb2luLHRoaXN9fVZlZS5wcm90b3R5cGUuaXNNZXNoVG9vbk1hdGVyaWFsPSEwO2NsYXNzIFVlZSBleHRlbmRzIHQ0dHtjb25zdHJ1Y3Rvcih0KXtzdXBlcigpLHRoaXMudHlwZT0iTWVzaE5vcm1hbE1hdGVyaWFsIix0aGlzLmJ1bXBNYXA9bnVsbCx0aGlzLmJ1bXBTY2FsZT0xLHRoaXMubm9ybWFsTWFwPW51bGwsdGhpcy5ub3JtYWxNYXBUeXBlPTAsdGhpcy5ub3JtYWxTY2FsZT1uZXcgQzV0KDEsMSksdGhpcy5kaXNwbGFjZW1lbnRNYXA9bnVsbCx0aGlzLmRpc3BsYWNlbWVudFNjYWxlPTEsdGhpcy5kaXNwbGFjZW1lbnRCaWFzPTAsdGhpcy53aXJlZnJhbWU9ITEsdGhpcy53aXJlZnJhbWVMaW5ld2lkdGg9MSx0aGlzLmZvZz0hMSx0aGlzLmZsYXRTaGFkaW5nPSExLHRoaXMuc2V0VmFsdWVzKHQpfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5idW1wTWFwPXQuYnVtcE1hcCx0aGlzLmJ1bXBTY2FsZT10LmJ1bXBTY2FsZSx0aGlzLm5vcm1hbE1hcD10Lm5vcm1hbE1hcCx0aGlzLm5vcm1hbE1hcFR5cGU9dC5ub3JtYWxNYXBUeXBlLHRoaXMubm9ybWFsU2NhbGUuY29weSh0Lm5vcm1hbFNjYWxlKSx0aGlzLmRpc3BsYWNlbWVudE1hcD10LmRpc3BsYWNlbWVudE1hcCx0aGlzLmRpc3BsYWNlbWVudFNjYWxlPXQuZGlzcGxhY2VtZW50U2NhbGUsdGhpcy5kaXNwbGFjZW1lbnRCaWFzPXQuZGlzcGxhY2VtZW50Qmlhcyx0aGlzLndpcmVmcmFtZT10LndpcmVmcmFtZSx0aGlzLndpcmVmcmFtZUxpbmV3aWR0aD10LndpcmVmcmFtZUxpbmV3aWR0aCx0aGlzLmZsYXRTaGFkaW5nPXQuZmxhdFNoYWRpbmcsdGhpc319VWVlLnByb3RvdHlwZS5pc01lc2hOb3JtYWxNYXRlcmlhbD0hMDtjbGFzcyBqZWUgZXh0ZW5kcyB0NHR7Y29uc3RydWN0b3IodCl7c3VwZXIoKSx0aGlzLnR5cGU9Ik1lc2hMYW1iZXJ0TWF0ZXJpYWwiLHRoaXMuY29sb3I9bmV3IHM0dCgxNjc3NzIxNSksdGhpcy5tYXA9bnVsbCx0aGlzLmxpZ2h0TWFwPW51bGwsdGhpcy5saWdodE1hcEludGVuc2l0eT0xLHRoaXMuYW9NYXA9bnVsbCx0aGlzLmFvTWFwSW50ZW5zaXR5PTEsdGhpcy5lbWlzc2l2ZT1uZXcgczR0KDApLHRoaXMuZW1pc3NpdmVJbnRlbnNpdHk9MSx0aGlzLmVtaXNzaXZlTWFwPW51bGwsdGhpcy5zcGVjdWxhck1hcD1udWxsLHRoaXMuYWxwaGFNYXA9bnVsbCx0aGlzLmVudk1hcD1udWxsLHRoaXMuY29tYmluZT0wLHRoaXMucmVmbGVjdGl2aXR5PTEsdGhpcy5yZWZyYWN0aW9uUmF0aW89Ljk4LHRoaXMud2lyZWZyYW1lPSExLHRoaXMud2lyZWZyYW1lTGluZXdpZHRoPTEsdGhpcy53aXJlZnJhbWVMaW5lY2FwPSJyb3VuZCIsdGhpcy53aXJlZnJhbWVMaW5lam9pbj0icm91bmQiLHRoaXMuc2V0VmFsdWVzKHQpfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5jb2xvci5jb3B5KHQuY29sb3IpLHRoaXMubWFwPXQubWFwLHRoaXMubGlnaHRNYXA9dC5saWdodE1hcCx0aGlzLmxpZ2h0TWFwSW50ZW5zaXR5PXQubGlnaHRNYXBJbnRlbnNpdHksdGhpcy5hb01hcD10LmFvTWFwLHRoaXMuYW9NYXBJbnRlbnNpdHk9dC5hb01hcEludGVuc2l0eSx0aGlzLmVtaXNzaXZlLmNvcHkodC5lbWlzc2l2ZSksdGhpcy5lbWlzc2l2ZU1hcD10LmVtaXNzaXZlTWFwLHRoaXMuZW1pc3NpdmVJbnRlbnNpdHk9dC5lbWlzc2l2ZUludGVuc2l0eSx0aGlzLnNwZWN1bGFyTWFwPXQuc3BlY3VsYXJNYXAsdGhpcy5hbHBoYU1hcD10LmFscGhhTWFwLHRoaXMuZW52TWFwPXQuZW52TWFwLHRoaXMuY29tYmluZT10LmNvbWJpbmUsdGhpcy5yZWZsZWN0aXZpdHk9dC5yZWZsZWN0aXZpdHksdGhpcy5yZWZyYWN0aW9uUmF0aW89dC5yZWZyYWN0aW9uUmF0aW8sdGhpcy53aXJlZnJhbWU9dC53aXJlZnJhbWUsdGhpcy53aXJlZnJhbWVMaW5ld2lkdGg9dC53aXJlZnJhbWVMaW5ld2lkdGgsdGhpcy53aXJlZnJhbWVMaW5lY2FwPXQud2lyZWZyYW1lTGluZWNhcCx0aGlzLndpcmVmcmFtZUxpbmVqb2luPXQud2lyZWZyYW1lTGluZWpvaW4sdGhpc319amVlLnByb3RvdHlwZS5pc01lc2hMYW1iZXJ0TWF0ZXJpYWw9ITA7Y2xhc3MgR2VlIGV4dGVuZHMgdDR0e2NvbnN0cnVjdG9yKHQpe3N1cGVyKCksdGhpcy5kZWZpbmVzPXtNQVRDQVA6IiJ9LHRoaXMudHlwZT0iTWVzaE1hdGNhcE1hdGVyaWFsIix0aGlzLmNvbG9yPW5ldyBzNHQoMTY3NzcyMTUpLHRoaXMubWF0Y2FwPW51bGwsdGhpcy5tYXA9bnVsbCx0aGlzLmJ1bXBNYXA9bnVsbCx0aGlzLmJ1bXBTY2FsZT0xLHRoaXMubm9ybWFsTWFwPW51bGwsdGhpcy5ub3JtYWxNYXBUeXBlPTAsdGhpcy5ub3JtYWxTY2FsZT1uZXcgQzV0KDEsMSksdGhpcy5kaXNwbGFjZW1lbnRNYXA9bnVsbCx0aGlzLmRpc3BsYWNlbWVudFNjYWxlPTEsdGhpcy5kaXNwbGFjZW1lbnRCaWFzPTAsdGhpcy5hbHBoYU1hcD1udWxsLHRoaXMuZmxhdFNoYWRpbmc9ITEsdGhpcy5zZXRWYWx1ZXModCl9Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLmRlZmluZXM9e01BVENBUDoiIn0sdGhpcy5jb2xvci5jb3B5KHQuY29sb3IpLHRoaXMubWF0Y2FwPXQubWF0Y2FwLHRoaXMubWFwPXQubWFwLHRoaXMuYnVtcE1hcD10LmJ1bXBNYXAsdGhpcy5idW1wU2NhbGU9dC5idW1wU2NhbGUsdGhpcy5ub3JtYWxNYXA9dC5ub3JtYWxNYXAsdGhpcy5ub3JtYWxNYXBUeXBlPXQubm9ybWFsTWFwVHlwZSx0aGlzLm5vcm1hbFNjYWxlLmNvcHkodC5ub3JtYWxTY2FsZSksdGhpcy5kaXNwbGFjZW1lbnRNYXA9dC5kaXNwbGFjZW1lbnRNYXAsdGhpcy5kaXNwbGFjZW1lbnRTY2FsZT10LmRpc3BsYWNlbWVudFNjYWxlLHRoaXMuZGlzcGxhY2VtZW50Qmlhcz10LmRpc3BsYWNlbWVudEJpYXMsdGhpcy5hbHBoYU1hcD10LmFscGhhTWFwLHRoaXMuZmxhdFNoYWRpbmc9dC5mbGF0U2hhZGluZyx0aGlzfX1HZWUucHJvdG90eXBlLmlzTWVzaE1hdGNhcE1hdGVyaWFsPSEwO2NsYXNzIFdlZSBleHRlbmRzIFg3dHtjb25zdHJ1Y3Rvcih0KXtzdXBlcigpLHRoaXMudHlwZT0iTGluZURhc2hlZE1hdGVyaWFsIix0aGlzLnNjYWxlPTEsdGhpcy5kYXNoU2l6ZT0zLHRoaXMuZ2FwU2l6ZT0xLHRoaXMuc2V0VmFsdWVzKHQpfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5zY2FsZT10LnNjYWxlLHRoaXMuZGFzaFNpemU9dC5kYXNoU2l6ZSx0aGlzLmdhcFNpemU9dC5nYXBTaXplLHRoaXN9fVdlZS5wcm90b3R5cGUuaXNMaW5lRGFzaGVkTWF0ZXJpYWw9ITA7dmFyIHFlZT1PYmplY3QuZnJlZXplKHtfX3Byb3RvX186bnVsbCxTaGFkb3dNYXRlcmlhbDpEZWUsU3ByaXRlTWF0ZXJpYWw6cDd0LFJhd1NoYWRlck1hdGVyaWFsOms2dCxTaGFkZXJNYXRlcmlhbDpuNnQsUG9pbnRzTWF0ZXJpYWw6b3RlLE1lc2hQaHlzaWNhbE1hdGVyaWFsOkhlZSxNZXNoU3RhbmRhcmRNYXRlcmlhbDpCZWUsTWVzaFBob25nTWF0ZXJpYWw6RmVlLE1lc2hUb29uTWF0ZXJpYWw6VmVlLE1lc2hOb3JtYWxNYXRlcmlhbDpVZWUsTWVzaExhbWJlcnRNYXRlcmlhbDpqZWUsTWVzaERlcHRoTWF0ZXJpYWw6WTh0LE1lc2hEaXN0YW5jZU1hdGVyaWFsOlg4dCxNZXNoQmFzaWNNYXRlcmlhbDpsNHQsTWVzaE1hdGNhcE1hdGVyaWFsOkdlZSxMaW5lRGFzaGVkTWF0ZXJpYWw6V2VlLExpbmVCYXNpY01hdGVyaWFsOlg3dCxNYXRlcmlhbDp0NHR9KTtjb25zdCBZZWU9e2FycmF5U2xpY2U6ZnVuY3Rpb24odCxlLG4pe3JldHVybiBZZWUuaXNUeXBlZEFycmF5KHQpP25ldyB0LmNvbnN0cnVjdG9yKHQuc3ViYXJyYXkoZSx2b2lkIDAhPT1uP246dC5sZW5ndGgpKTp0LnNsaWNlKGUsbil9LGNvbnZlcnRBcnJheTpmdW5jdGlvbih0LGUsbil7cmV0dXJuIXR8fCFuJiZ0LmNvbnN0cnVjdG9yPT09ZT90OiJudW1iZXIiPT10eXBlb2YgZS5CWVRFU19QRVJfRUxFTUVOVD9uZXcgZSh0KTpBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0KX0saXNUeXBlZEFycmF5OmZ1bmN0aW9uKHQpe3JldHVybiBBcnJheUJ1ZmZlci5pc1ZpZXcodCkmJiEodCBpbnN0YW5jZW9mIERhdGFWaWV3KX0sZ2V0S2V5ZnJhbWVPcmRlcjpmdW5jdGlvbih0KXtjb25zdCBlPXQubGVuZ3RoLG49bmV3IEFycmF5KGUpO2ZvcihsZXQgdD0wO3QhPT1lOysrdCluW3RdPXQ7cmV0dXJuIG4uc29ydCgoZnVuY3Rpb24gaShlLG4pe3JldHVybiB0W2VdLXRbbl19KSksbn0sc29ydGVkQXJyYXk6ZnVuY3Rpb24odCxlLG4pe2NvbnN0IGk9dC5sZW5ndGgscj1uZXcgdC5jb25zdHJ1Y3RvcihpKTtmb3IobGV0IG89MCxhPTA7YSE9PWk7KytvKXtjb25zdCBpPW5bb10qZTtmb3IobGV0IG49MDtuIT09ZTsrK24pclthKytdPXRbaStuXX1yZXR1cm4gcn0sZmxhdHRlbkpTT046ZnVuY3Rpb24odCxlLG4saSl7bGV0IHI9MSxvPXRbMF07Zm9yKDt2b2lkIDAhPT1vJiZ2b2lkIDA9PT1vW2ldOylvPXRbcisrXTtpZih2b2lkIDA9PT1vKXJldHVybjtsZXQgYT1vW2ldO2lmKHZvaWQgMCE9PWEpaWYoQXJyYXkuaXNBcnJheShhKSlkb3thPW9baV0sdm9pZCAwIT09YSYmKGUucHVzaChvLnRpbWUpLG4ucHVzaC5hcHBseShuLGEpKSxvPXRbcisrXX13aGlsZSh2b2lkIDAhPT1vKTtlbHNlIGlmKHZvaWQgMCE9PWEudG9BcnJheSlkb3thPW9baV0sdm9pZCAwIT09YSYmKGUucHVzaChvLnRpbWUpLGEudG9BcnJheShuLG4ubGVuZ3RoKSksbz10W3IrK119d2hpbGUodm9pZCAwIT09byk7ZWxzZSBkb3thPW9baV0sdm9pZCAwIT09YSYmKGUucHVzaChvLnRpbWUpLG4ucHVzaChhKSksbz10W3IrK119d2hpbGUodm9pZCAwIT09byl9LHN1YmNsaXA6ZnVuY3Rpb24odCxlLG4saSxyPTMwKXtjb25zdCBvPXQuY2xvbmUoKTtvLm5hbWU9ZTtjb25zdCBhPVtdO2ZvcihsZXQgdD0wO3Q8by50cmFja3MubGVuZ3RoOysrdCl7Y29uc3QgZT1vLnRyYWNrc1t0XSxzPWUuZ2V0VmFsdWVTaXplKCksbD1bXSxjPVtdO2ZvcihsZXQgdD0wO3Q8ZS50aW1lcy5sZW5ndGg7Kyt0KXtjb25zdCBvPWUudGltZXNbdF0qcjtpZighKG88bnx8bz49aSkpe2wucHVzaChlLnRpbWVzW3RdKTtmb3IobGV0IG49MDtuPHM7KytuKWMucHVzaChlLnZhbHVlc1t0KnMrbl0pfX0wIT09bC5sZW5ndGgmJihlLnRpbWVzPVllZS5jb252ZXJ0QXJyYXkobCxlLnRpbWVzLmNvbnN0cnVjdG9yKSxlLnZhbHVlcz1ZZWUuY29udmVydEFycmF5KGMsZS52YWx1ZXMuY29uc3RydWN0b3IpLGEucHVzaChlKSl9by50cmFja3M9YTtsZXQgcz0xLzA7Zm9yKGxldCB0PTA7dDxvLnRyYWNrcy5sZW5ndGg7Kyt0KXM+by50cmFja3NbdF0udGltZXNbMF0mJihzPW8udHJhY2tzW3RdLnRpbWVzWzBdKTtmb3IobGV0IHQ9MDt0PG8udHJhY2tzLmxlbmd0aDsrK3Qpby50cmFja3NbdF0uc2hpZnQoLTEqcyk7cmV0dXJuIG8ucmVzZXREdXJhdGlvbigpLG99LG1ha2VDbGlwQWRkaXRpdmU6ZnVuY3Rpb24odCxlPTAsbj10LGk9MzApe2k8PTAmJihpPTMwKTtjb25zdCByPW4udHJhY2tzLmxlbmd0aCxvPWUvaTtmb3IobGV0IGU9MDtlPHI7KytlKXtjb25zdCBpPW4udHJhY2tzW2VdLHI9aS5WYWx1ZVR5cGVOYW1lO2lmKCJib29sIj09PXJ8fCJzdHJpbmciPT09ciljb250aW51ZTtjb25zdCBhPXQudHJhY2tzLmZpbmQoKGZ1bmN0aW9uKHQpe3JldHVybiB0Lm5hbWU9PT1pLm5hbWUmJnQuVmFsdWVUeXBlTmFtZT09PXJ9KSk7aWYodm9pZCAwPT09YSljb250aW51ZTtsZXQgcz0wO2NvbnN0IGw9aS5nZXRWYWx1ZVNpemUoKTtpLmNyZWF0ZUludGVycG9sYW50LmlzSW50ZXJwb2xhbnRGYWN0b3J5TWV0aG9kR0xURkN1YmljU3BsaW5lJiYocz1sLzMpO2xldCBjPTA7Y29uc3QgdT1hLmdldFZhbHVlU2l6ZSgpO2EuY3JlYXRlSW50ZXJwb2xhbnQuaXNJbnRlcnBvbGFudEZhY3RvcnlNZXRob2RHTFRGQ3ViaWNTcGxpbmUmJihjPXUvMyk7Y29uc3QgaD1pLnRpbWVzLmxlbmd0aC0xO2xldCBkO2lmKG88PWkudGltZXNbMF0pe2Q9WWVlLmFycmF5U2xpY2UoaS52YWx1ZXMscyxsLXMpfWVsc2UgaWYobz49aS50aW1lc1toXSl7Y29uc3QgdD1oKmwrcztkPVllZS5hcnJheVNsaWNlKGkudmFsdWVzLHQsdCtsLXMpfWVsc2V7Y29uc3QgdD1pLmNyZWF0ZUludGVycG9sYW50KCksZT1zLG49bC1zO3QuZXZhbHVhdGUobyksZD1ZZWUuYXJyYXlTbGljZSh0LnJlc3VsdEJ1ZmZlcixlLG4pfWlmKCJxdWF0ZXJuaW9uIj09PXIpeyhuZXcgQjV0KS5mcm9tQXJyYXkoZCkubm9ybWFsaXplKCkuY29uanVnYXRlKCkudG9BcnJheShkKX1jb25zdCBwPWEudGltZXMubGVuZ3RoO2ZvcihsZXQgdD0wO3Q8cDsrK3Qpe2NvbnN0IGU9dCp1K2M7aWYoInF1YXRlcm5pb24iPT09cilCNXQubXVsdGlwbHlRdWF0ZXJuaW9uc0ZsYXQoYS52YWx1ZXMsZSxkLDAsYS52YWx1ZXMsZSk7ZWxzZXtjb25zdCB0PXUtMipjO2ZvcihsZXQgbj0wO248dDsrK24pYS52YWx1ZXNbZStuXS09ZFtuXX19fXJldHVybiB0LmJsZW5kTW9kZT1qMnQsdH19O2NsYXNzIFhlZXtjb25zdHJ1Y3Rvcih0LGUsbixpKXt0aGlzLnBhcmFtZXRlclBvc2l0aW9ucz10LHRoaXMuX2NhY2hlZEluZGV4PTAsdGhpcy5yZXN1bHRCdWZmZXI9dm9pZCAwIT09aT9pOm5ldyBlLmNvbnN0cnVjdG9yKG4pLHRoaXMuc2FtcGxlVmFsdWVzPWUsdGhpcy52YWx1ZVNpemU9bix0aGlzLnNldHRpbmdzPW51bGwsdGhpcy5EZWZhdWx0U2V0dGluZ3NfPXt9fWV2YWx1YXRlKHQpe2NvbnN0IGU9dGhpcy5wYXJhbWV0ZXJQb3NpdGlvbnM7bGV0IG49dGhpcy5fY2FjaGVkSW5kZXgsaT1lW25dLHI9ZVtuLTFdO3Q6e2U6e2xldCBvO246e2k6aWYoISh0PGkpKXtmb3IobGV0IG89bisyOzspe2lmKHZvaWQgMD09PWkpe2lmKHQ8cilicmVhayBpO3JldHVybiBuPWUubGVuZ3RoLHRoaXMuX2NhY2hlZEluZGV4PW4sdGhpcy5hZnRlckVuZF8obi0xLHQscil9aWYobj09PW8pYnJlYWs7aWYocj1pLGk9ZVsrK25dLHQ8aSlicmVhayBlfW89ZS5sZW5ndGg7YnJlYWsgbn1pZih0Pj1yKWJyZWFrIHQ7e2NvbnN0IGE9ZVsxXTt0PGEmJihuPTIscj1hKTtmb3IobGV0IG89bi0yOzspe2lmKHZvaWQgMD09PXIpcmV0dXJuIHRoaXMuX2NhY2hlZEluZGV4PTAsdGhpcy5iZWZvcmVTdGFydF8oMCx0LGkpO2lmKG49PT1vKWJyZWFrO2lmKGk9cixyPWVbLS1uLTFdLHQ+PXIpYnJlYWsgZX1vPW4sbj0wfX1mb3IoO248bzspe2NvbnN0IGk9bitvPj4+MTt0PGVbaV0/bz1pOm49aSsxfWlmKGk9ZVtuXSxyPWVbbi0xXSx2b2lkIDA9PT1yKXJldHVybiB0aGlzLl9jYWNoZWRJbmRleD0wLHRoaXMuYmVmb3JlU3RhcnRfKDAsdCxpKTtpZih2b2lkIDA9PT1pKXJldHVybiBuPWUubGVuZ3RoLHRoaXMuX2NhY2hlZEluZGV4PW4sdGhpcy5hZnRlckVuZF8obi0xLHIsdCl9dGhpcy5fY2FjaGVkSW5kZXg9bix0aGlzLmludGVydmFsQ2hhbmdlZF8obixyLGkpfXJldHVybiB0aGlzLmludGVycG9sYXRlXyhuLHIsdCxpKX1nZXRTZXR0aW5nc18oKXtyZXR1cm4gdGhpcy5zZXR0aW5nc3x8dGhpcy5EZWZhdWx0U2V0dGluZ3NffWNvcHlTYW1wbGVWYWx1ZV8odCl7Y29uc3QgZT10aGlzLnJlc3VsdEJ1ZmZlcixuPXRoaXMuc2FtcGxlVmFsdWVzLGk9dGhpcy52YWx1ZVNpemUscj10Kmk7Zm9yKGxldCB0PTA7dCE9PWk7Kyt0KWVbdF09bltyK3RdO3JldHVybiBlfWludGVycG9sYXRlXygpe3Rocm93IG5ldyBFcnJvcigiY2FsbCB0byBhYnN0cmFjdCBtZXRob2QiKX1pbnRlcnZhbENoYW5nZWRfKCl7fX1YZWUucHJvdG90eXBlLmJlZm9yZVN0YXJ0Xz1YZWUucHJvdG90eXBlLmNvcHlTYW1wbGVWYWx1ZV8sWGVlLnByb3RvdHlwZS5hZnRlckVuZF89WGVlLnByb3RvdHlwZS5jb3B5U2FtcGxlVmFsdWVfO2NsYXNzICRlZSBleHRlbmRzIFhlZXtjb25zdHJ1Y3Rvcih0LGUsbixpKXtzdXBlcih0LGUsbixpKSx0aGlzLl93ZWlnaHRQcmV2PS0wLHRoaXMuX29mZnNldFByZXY9LTAsdGhpcy5fd2VpZ2h0TmV4dD0tMCx0aGlzLl9vZmZzZXROZXh0PS0wLHRoaXMuRGVmYXVsdFNldHRpbmdzXz17ZW5kaW5nU3RhcnQ6SDJ0LGVuZGluZ0VuZDpIMnR9fWludGVydmFsQ2hhbmdlZF8odCxlLG4pe2NvbnN0IGk9dGhpcy5wYXJhbWV0ZXJQb3NpdGlvbnM7bGV0IHI9dC0yLG89dCsxLGE9aVtyXSxzPWlbb107aWYodm9pZCAwPT09YSlzd2l0Y2godGhpcy5nZXRTZXR0aW5nc18oKS5lbmRpbmdTdGFydCl7Y2FzZSBGMnQ6cj10LGE9MiplLW47YnJlYWs7Y2FzZSBWMnQ6cj1pLmxlbmd0aC0yLGE9ZStpW3JdLWlbcisxXTticmVhaztkZWZhdWx0OnI9dCxhPW59aWYodm9pZCAwPT09cylzd2l0Y2godGhpcy5nZXRTZXR0aW5nc18oKS5lbmRpbmdFbmQpe2Nhc2UgRjJ0Om89dCxzPTIqbi1lO2JyZWFrO2Nhc2UgVjJ0Om89MSxzPW4raVsxXS1pWzBdO2JyZWFrO2RlZmF1bHQ6bz10LTEscz1lfWNvbnN0IGw9LjUqKG4tZSksYz10aGlzLnZhbHVlU2l6ZTt0aGlzLl93ZWlnaHRQcmV2PWwvKGUtYSksdGhpcy5fd2VpZ2h0TmV4dD1sLyhzLW4pLHRoaXMuX29mZnNldFByZXY9cipjLHRoaXMuX29mZnNldE5leHQ9bypjfWludGVycG9sYXRlXyh0LGUsbixpKXtjb25zdCByPXRoaXMucmVzdWx0QnVmZmVyLG89dGhpcy5zYW1wbGVWYWx1ZXMsYT10aGlzLnZhbHVlU2l6ZSxzPXQqYSxsPXMtYSxjPXRoaXMuX29mZnNldFByZXYsdT10aGlzLl9vZmZzZXROZXh0LGg9dGhpcy5fd2VpZ2h0UHJldixkPXRoaXMuX3dlaWdodE5leHQscD0obi1lKS8oaS1lKSxmPXAqcCxtPWYqcCxnPS1oKm0rMipoKmYtaCpwLF89KDEraCkqbSsoLTEuNS0yKmgpKmYrKC0uNStoKSpwKzEseT0oLTEtZCkqbSsoMS41K2QpKmYrLjUqcCx2PWQqbS1kKmY7Zm9yKGxldCB0PTA7dCE9PWE7Kyt0KXJbdF09ZypvW2MrdF0rXypvW2wrdF0reSpvW3MrdF0rdipvW3UrdF07cmV0dXJuIHJ9fWNsYXNzIEtlZSBleHRlbmRzIFhlZXtjb25zdHJ1Y3Rvcih0LGUsbixpKXtzdXBlcih0LGUsbixpKX1pbnRlcnBvbGF0ZV8odCxlLG4saSl7Y29uc3Qgcj10aGlzLnJlc3VsdEJ1ZmZlcixvPXRoaXMuc2FtcGxlVmFsdWVzLGE9dGhpcy52YWx1ZVNpemUscz10KmEsbD1zLWEsYz0obi1lKS8oaS1lKSx1PTEtYztmb3IobGV0IHQ9MDt0IT09YTsrK3Qpclt0XT1vW2wrdF0qdStvW3MrdF0qYztyZXR1cm4gcn19Y2xhc3MgWmVlIGV4dGVuZHMgWGVle2NvbnN0cnVjdG9yKHQsZSxuLGkpe3N1cGVyKHQsZSxuLGkpfWludGVycG9sYXRlXyh0KXtyZXR1cm4gdGhpcy5jb3B5U2FtcGxlVmFsdWVfKHQtMSl9fWNsYXNzIEplZXtjb25zdHJ1Y3Rvcih0LGUsbixpKXtpZih2b2lkIDA9PT10KXRocm93IG5ldyBFcnJvcigiVEhSRUUuS2V5ZnJhbWVUcmFjazogdHJhY2sgbmFtZSBpcyB1bmRlZmluZWQiKTtpZih2b2lkIDA9PT1lfHwwPT09ZS5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJUSFJFRS5LZXlmcmFtZVRyYWNrOiBubyBrZXlmcmFtZXMgaW4gdHJhY2sgbmFtZWQgIit0KTt0aGlzLm5hbWU9dCx0aGlzLnRpbWVzPVllZS5jb252ZXJ0QXJyYXkoZSx0aGlzLlRpbWVCdWZmZXJUeXBlKSx0aGlzLnZhbHVlcz1ZZWUuY29udmVydEFycmF5KG4sdGhpcy5WYWx1ZUJ1ZmZlclR5cGUpLHRoaXMuc2V0SW50ZXJwb2xhdGlvbihpfHx0aGlzLkRlZmF1bHRJbnRlcnBvbGF0aW9uKX1zdGF0aWMgdG9KU09OKHQpe2NvbnN0IGU9dC5jb25zdHJ1Y3RvcjtsZXQgbjtpZihlLnRvSlNPTiE9PXRoaXMudG9KU09OKW49ZS50b0pTT04odCk7ZWxzZXtuPXtuYW1lOnQubmFtZSx0aW1lczpZZWUuY29udmVydEFycmF5KHQudGltZXMsQXJyYXkpLHZhbHVlczpZZWUuY29udmVydEFycmF5KHQudmFsdWVzLEFycmF5KX07Y29uc3QgZT10LmdldEludGVycG9sYXRpb24oKTtlIT09dC5EZWZhdWx0SW50ZXJwb2xhdGlvbiYmKG4uaW50ZXJwb2xhdGlvbj1lKX1yZXR1cm4gbi50eXBlPXQuVmFsdWVUeXBlTmFtZSxufUludGVycG9sYW50RmFjdG9yeU1ldGhvZERpc2NyZXRlKHQpe3JldHVybiBuZXcgWmVlKHRoaXMudGltZXMsdGhpcy52YWx1ZXMsdGhpcy5nZXRWYWx1ZVNpemUoKSx0KX1JbnRlcnBvbGFudEZhY3RvcnlNZXRob2RMaW5lYXIodCl7cmV0dXJuIG5ldyBLZWUodGhpcy50aW1lcyx0aGlzLnZhbHVlcyx0aGlzLmdldFZhbHVlU2l6ZSgpLHQpfUludGVycG9sYW50RmFjdG9yeU1ldGhvZFNtb290aCh0KXtyZXR1cm4gbmV3ICRlZSh0aGlzLnRpbWVzLHRoaXMudmFsdWVzLHRoaXMuZ2V0VmFsdWVTaXplKCksdCl9c2V0SW50ZXJwb2xhdGlvbih0KXtsZXQgZTtzd2l0Y2godCl7Y2FzZSB6MnQ6ZT10aGlzLkludGVycG9sYW50RmFjdG9yeU1ldGhvZERpc2NyZXRlO2JyZWFrO2Nhc2UgRDJ0OmU9dGhpcy5JbnRlcnBvbGFudEZhY3RvcnlNZXRob2RMaW5lYXI7YnJlYWs7Y2FzZSBCMnQ6ZT10aGlzLkludGVycG9sYW50RmFjdG9yeU1ldGhvZFNtb290aH1pZih2b2lkIDA9PT1lKXtjb25zdCBlPSJ1bnN1cHBvcnRlZCBpbnRlcnBvbGF0aW9uIGZvciAiK3RoaXMuVmFsdWVUeXBlTmFtZSsiIGtleWZyYW1lIHRyYWNrIG5hbWVkICIrdGhpcy5uYW1lO2lmKHZvaWQgMD09PXRoaXMuY3JlYXRlSW50ZXJwb2xhbnQpe2lmKHQ9PT10aGlzLkRlZmF1bHRJbnRlcnBvbGF0aW9uKXRocm93IG5ldyBFcnJvcihlKTt0aGlzLnNldEludGVycG9sYXRpb24odGhpcy5EZWZhdWx0SW50ZXJwb2xhdGlvbil9cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuS2V5ZnJhbWVUcmFjazoiLGUpLHRoaXN9cmV0dXJuIHRoaXMuY3JlYXRlSW50ZXJwb2xhbnQ9ZSx0aGlzfWdldEludGVycG9sYXRpb24oKXtzd2l0Y2godGhpcy5jcmVhdGVJbnRlcnBvbGFudCl7Y2FzZSB0aGlzLkludGVycG9sYW50RmFjdG9yeU1ldGhvZERpc2NyZXRlOnJldHVybiB6MnQ7Y2FzZSB0aGlzLkludGVycG9sYW50RmFjdG9yeU1ldGhvZExpbmVhcjpyZXR1cm4gRDJ0O2Nhc2UgdGhpcy5JbnRlcnBvbGFudEZhY3RvcnlNZXRob2RTbW9vdGg6cmV0dXJuIEIydH19Z2V0VmFsdWVTaXplKCl7cmV0dXJuIHRoaXMudmFsdWVzLmxlbmd0aC90aGlzLnRpbWVzLmxlbmd0aH1zaGlmdCh0KXtpZigwIT09dCl7Y29uc3QgZT10aGlzLnRpbWVzO2ZvcihsZXQgbj0wLGk9ZS5sZW5ndGg7biE9PWk7KytuKWVbbl0rPXR9cmV0dXJuIHRoaXN9c2NhbGUodCl7aWYoMSE9PXQpe2NvbnN0IGU9dGhpcy50aW1lcztmb3IobGV0IG49MCxpPWUubGVuZ3RoO24hPT1pOysrbillW25dKj10fXJldHVybiB0aGlzfXRyaW0odCxlKXtjb25zdCBuPXRoaXMudGltZXMsaT1uLmxlbmd0aDtsZXQgcj0wLG89aS0xO2Zvcig7ciE9PWkmJm5bcl08dDspKytyO2Zvcig7LTEhPT1vJiZuW29dPmU7KS0tbztpZigrK28sMCE9PXJ8fG8hPT1pKXtyPj1vJiYobz1NYXRoLm1heChvLDEpLHI9by0xKTtjb25zdCB0PXRoaXMuZ2V0VmFsdWVTaXplKCk7dGhpcy50aW1lcz1ZZWUuYXJyYXlTbGljZShuLHIsbyksdGhpcy52YWx1ZXM9WWVlLmFycmF5U2xpY2UodGhpcy52YWx1ZXMscip0LG8qdCl9cmV0dXJuIHRoaXN9dmFsaWRhdGUoKXtsZXQgdD0hMDtjb25zdCBlPXRoaXMuZ2V0VmFsdWVTaXplKCk7ZS1NYXRoLmZsb29yKGUpIT0wJiYoY29uc29sZS5lcnJvcigiVEhSRUUuS2V5ZnJhbWVUcmFjazogSW52YWxpZCB2YWx1ZSBzaXplIGluIHRyYWNrLiIsdGhpcyksdD0hMSk7Y29uc3Qgbj10aGlzLnRpbWVzLGk9dGhpcy52YWx1ZXMscj1uLmxlbmd0aDswPT09ciYmKGNvbnNvbGUuZXJyb3IoIlRIUkVFLktleWZyYW1lVHJhY2s6IFRyYWNrIGlzIGVtcHR5LiIsdGhpcyksdD0hMSk7bGV0IG89bnVsbDtmb3IobGV0IGU9MDtlIT09cjtlKyspe2NvbnN0IGk9bltlXTtpZigibnVtYmVyIj09dHlwZW9mIGkmJmlzTmFOKGkpKXtjb25zb2xlLmVycm9yKCJUSFJFRS5LZXlmcmFtZVRyYWNrOiBUaW1lIGlzIG5vdCBhIHZhbGlkIG51bWJlci4iLHRoaXMsZSxpKSx0PSExO2JyZWFrfWlmKG51bGwhPT1vJiZvPmkpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLktleWZyYW1lVHJhY2s6IE91dCBvZiBvcmRlciBrZXlzLiIsdGhpcyxlLGksbyksdD0hMTticmVha31vPWl9aWYodm9pZCAwIT09aSYmWWVlLmlzVHlwZWRBcnJheShpKSlmb3IobGV0IGU9MCxuPWkubGVuZ3RoO2UhPT1uOysrZSl7Y29uc3Qgbj1pW2VdO2lmKGlzTmFOKG4pKXtjb25zb2xlLmVycm9yKCJUSFJFRS5LZXlmcmFtZVRyYWNrOiBWYWx1ZSBpcyBub3QgYSB2YWxpZCBudW1iZXIuIix0aGlzLGUsbiksdD0hMTticmVha319cmV0dXJuIHR9b3B0aW1pemUoKXtjb25zdCB0PVllZS5hcnJheVNsaWNlKHRoaXMudGltZXMpLGU9WWVlLmFycmF5U2xpY2UodGhpcy52YWx1ZXMpLG49dGhpcy5nZXRWYWx1ZVNpemUoKSxpPXRoaXMuZ2V0SW50ZXJwb2xhdGlvbigpPT09QjJ0LHI9dC5sZW5ndGgtMTtsZXQgbz0xO2ZvcihsZXQgYT0xO2E8cjsrK2Epe2xldCByPSExO2NvbnN0IHM9dFthXTtpZihzIT09dFthKzFdJiYoMSE9PWF8fHMhPT10WzBdKSlpZihpKXI9ITA7ZWxzZXtjb25zdCB0PWEqbixpPXQtbixvPXQrbjtmb3IobGV0IGE9MDthIT09bjsrK2Epe2NvbnN0IG49ZVt0K2FdO2lmKG4hPT1lW2krYV18fG4hPT1lW28rYV0pe3I9ITA7YnJlYWt9fX1pZihyKXtpZihhIT09byl7dFtvXT10W2FdO2NvbnN0IGk9YSpuLHI9bypuO2ZvcihsZXQgdD0wO3QhPT1uOysrdCllW3IrdF09ZVtpK3RdfSsrb319aWYocj4wKXt0W29dPXRbcl07Zm9yKGxldCB0PXIqbixpPW8qbixhPTA7YSE9PW47KythKWVbaSthXT1lW3QrYV07KytvfXJldHVybiBvIT09dC5sZW5ndGg/KHRoaXMudGltZXM9WWVlLmFycmF5U2xpY2UodCwwLG8pLHRoaXMudmFsdWVzPVllZS5hcnJheVNsaWNlKGUsMCxvKm4pKToodGhpcy50aW1lcz10LHRoaXMudmFsdWVzPWUpLHRoaXN9Y2xvbmUoKXtjb25zdCB0PVllZS5hcnJheVNsaWNlKHRoaXMudGltZXMsMCksZT1ZZWUuYXJyYXlTbGljZSh0aGlzLnZhbHVlcywwKSxuPW5ldygwLHRoaXMuY29uc3RydWN0b3IpKHRoaXMubmFtZSx0LGUpO3JldHVybiBuLmNyZWF0ZUludGVycG9sYW50PXRoaXMuY3JlYXRlSW50ZXJwb2xhbnQsbn19SmVlLnByb3RvdHlwZS5UaW1lQnVmZmVyVHlwZT1GbG9hdDMyQXJyYXksSmVlLnByb3RvdHlwZS5WYWx1ZUJ1ZmZlclR5cGU9RmxvYXQzMkFycmF5LEplZS5wcm90b3R5cGUuRGVmYXVsdEludGVycG9sYXRpb249RDJ0O2NsYXNzIFFlZSBleHRlbmRzIEplZXt9UWVlLnByb3RvdHlwZS5WYWx1ZVR5cGVOYW1lPSJib29sIixRZWUucHJvdG90eXBlLlZhbHVlQnVmZmVyVHlwZT1BcnJheSxRZWUucHJvdG90eXBlLkRlZmF1bHRJbnRlcnBvbGF0aW9uPXoydCxRZWUucHJvdG90eXBlLkludGVycG9sYW50RmFjdG9yeU1ldGhvZExpbmVhcj12b2lkIDAsUWVlLnByb3RvdHlwZS5JbnRlcnBvbGFudEZhY3RvcnlNZXRob2RTbW9vdGg9dm9pZCAwO2NsYXNzIHRuZSBleHRlbmRzIEplZXt9dG5lLnByb3RvdHlwZS5WYWx1ZVR5cGVOYW1lPSJjb2xvciI7Y2xhc3MgZW5lIGV4dGVuZHMgSmVle31lbmUucHJvdG90eXBlLlZhbHVlVHlwZU5hbWU9Im51bWJlciI7Y2xhc3Mgbm5lIGV4dGVuZHMgWGVle2NvbnN0cnVjdG9yKHQsZSxuLGkpe3N1cGVyKHQsZSxuLGkpfWludGVycG9sYXRlXyh0LGUsbixpKXtjb25zdCByPXRoaXMucmVzdWx0QnVmZmVyLG89dGhpcy5zYW1wbGVWYWx1ZXMsYT10aGlzLnZhbHVlU2l6ZSxzPShuLWUpLyhpLWUpO2xldCBsPXQqYTtmb3IobGV0IHQ9bCthO2whPT10O2wrPTQpQjV0LnNsZXJwRmxhdChyLDAsbyxsLWEsbyxsLHMpO3JldHVybiByfX1jbGFzcyBpbmUgZXh0ZW5kcyBKZWV7SW50ZXJwb2xhbnRGYWN0b3J5TWV0aG9kTGluZWFyKHQpe3JldHVybiBuZXcgbm5lKHRoaXMudGltZXMsdGhpcy52YWx1ZXMsdGhpcy5nZXRWYWx1ZVNpemUoKSx0KX19aW5lLnByb3RvdHlwZS5WYWx1ZVR5cGVOYW1lPSJxdWF0ZXJuaW9uIixpbmUucHJvdG90eXBlLkRlZmF1bHRJbnRlcnBvbGF0aW9uPUQydCxpbmUucHJvdG90eXBlLkludGVycG9sYW50RmFjdG9yeU1ldGhvZFNtb290aD12b2lkIDA7Y2xhc3Mgcm5lIGV4dGVuZHMgSmVle31ybmUucHJvdG90eXBlLlZhbHVlVHlwZU5hbWU9InN0cmluZyIscm5lLnByb3RvdHlwZS5WYWx1ZUJ1ZmZlclR5cGU9QXJyYXkscm5lLnByb3RvdHlwZS5EZWZhdWx0SW50ZXJwb2xhdGlvbj16MnQscm5lLnByb3RvdHlwZS5JbnRlcnBvbGFudEZhY3RvcnlNZXRob2RMaW5lYXI9dm9pZCAwLHJuZS5wcm90b3R5cGUuSW50ZXJwb2xhbnRGYWN0b3J5TWV0aG9kU21vb3RoPXZvaWQgMDtjbGFzcyBvbmUgZXh0ZW5kcyBKZWV7fW9uZS5wcm90b3R5cGUuVmFsdWVUeXBlTmFtZT0idmVjdG9yIjtjbGFzcyBhbmV7Y29uc3RydWN0b3IodCxlPS0xLG4saT0yNTAwKXt0aGlzLm5hbWU9dCx0aGlzLnRyYWNrcz1uLHRoaXMuZHVyYXRpb249ZSx0aGlzLmJsZW5kTW9kZT1pLHRoaXMudXVpZD1hNXQoKSx0aGlzLmR1cmF0aW9uPDAmJnRoaXMucmVzZXREdXJhdGlvbigpfXN0YXRpYyBwYXJzZSh0KXtjb25zdCBlPVtdLG49dC50cmFja3MsaT0xLyh0LmZwc3x8MSk7Zm9yKGxldCB0PTAscj1uLmxlbmd0aDt0IT09cjsrK3QpZS5wdXNoKHNuZShuW3RdKS5zY2FsZShpKSk7Y29uc3Qgcj1uZXcgdGhpcyh0Lm5hbWUsdC5kdXJhdGlvbixlLHQuYmxlbmRNb2RlKTtyZXR1cm4gci51dWlkPXQudXVpZCxyfXN0YXRpYyB0b0pTT04odCl7Y29uc3QgZT1bXSxuPXQudHJhY2tzLGk9e25hbWU6dC5uYW1lLGR1cmF0aW9uOnQuZHVyYXRpb24sdHJhY2tzOmUsdXVpZDp0LnV1aWQsYmxlbmRNb2RlOnQuYmxlbmRNb2RlfTtmb3IobGV0IHQ9MCxpPW4ubGVuZ3RoO3QhPT1pOysrdCllLnB1c2goSmVlLnRvSlNPTihuW3RdKSk7cmV0dXJuIGl9c3RhdGljIENyZWF0ZUZyb21Nb3JwaFRhcmdldFNlcXVlbmNlKHQsZSxuLGkpe2NvbnN0IHI9ZS5sZW5ndGgsbz1bXTtmb3IobGV0IHQ9MDt0PHI7dCsrKXtsZXQgYT1bXSxzPVtdO2EucHVzaCgodCtyLTEpJXIsdCwodCsxKSVyKSxzLnB1c2goMCwxLDApO2NvbnN0IGw9WWVlLmdldEtleWZyYW1lT3JkZXIoYSk7YT1ZZWUuc29ydGVkQXJyYXkoYSwxLGwpLHM9WWVlLnNvcnRlZEFycmF5KHMsMSxsKSxpfHwwIT09YVswXXx8KGEucHVzaChyKSxzLnB1c2goc1swXSkpLG8ucHVzaChuZXcgZW5lKCIubW9ycGhUYXJnZXRJbmZsdWVuY2VzWyIrZVt0XS5uYW1lKyJdIixhLHMpLnNjYWxlKDEvbikpfXJldHVybiBuZXcgdGhpcyh0LC0xLG8pfXN0YXRpYyBmaW5kQnlOYW1lKHQsZSl7bGV0IG49dDtpZighQXJyYXkuaXNBcnJheSh0KSl7Y29uc3QgZT10O249ZS5nZW9tZXRyeSYmZS5nZW9tZXRyeS5hbmltYXRpb25zfHxlLmFuaW1hdGlvbnN9Zm9yKGxldCB0PTA7dDxuLmxlbmd0aDt0KyspaWYoblt0XS5uYW1lPT09ZSlyZXR1cm4gblt0XTtyZXR1cm4gbnVsbH1zdGF0aWMgQ3JlYXRlQ2xpcHNGcm9tTW9ycGhUYXJnZXRTZXF1ZW5jZXModCxlLG4pe2NvbnN0IGk9e30scj0vXihbXHctXSo/KShbXGRdKykkLztmb3IobGV0IGU9MCxuPXQubGVuZ3RoO2U8bjtlKyspe2NvbnN0IG49dFtlXSxvPW4ubmFtZS5tYXRjaChyKTtpZihvJiZvLmxlbmd0aD4xKXtjb25zdCB0PW9bMV07bGV0IGU9aVt0XTtlfHwoaVt0XT1lPVtdKSxlLnB1c2gobil9fWNvbnN0IG89W107Zm9yKGNvbnN0IHQgaW4gaSlvLnB1c2godGhpcy5DcmVhdGVGcm9tTW9ycGhUYXJnZXRTZXF1ZW5jZSh0LGlbdF0sZSxuKSk7cmV0dXJuIG99c3RhdGljIHBhcnNlQW5pbWF0aW9uKHQsZSl7aWYoIXQpcmV0dXJuIGNvbnNvbGUuZXJyb3IoIlRIUkVFLkFuaW1hdGlvbkNsaXA6IE5vIGFuaW1hdGlvbiBpbiBKU09OTG9hZGVyIGRhdGEuIiksbnVsbDtjb25zdCBuPWZ1bmN0aW9uKHQsZSxuLGkscil7aWYoMCE9PW4ubGVuZ3RoKXtjb25zdCBvPVtdLGE9W107WWVlLmZsYXR0ZW5KU09OKG4sbyxhLGkpLDAhPT1vLmxlbmd0aCYmci5wdXNoKG5ldyB0KGUsbyxhKSl9fSxpPVtdLHI9dC5uYW1lfHwiZGVmYXVsdCIsbz10LmZwc3x8MzAsYT10LmJsZW5kTW9kZTtsZXQgcz10Lmxlbmd0aHx8LTE7Y29uc3QgbD10LmhpZXJhcmNoeXx8W107Zm9yKGxldCB0PTA7dDxsLmxlbmd0aDt0Kyspe2NvbnN0IHI9bFt0XS5rZXlzO2lmKHImJjAhPT1yLmxlbmd0aClpZihyWzBdLm1vcnBoVGFyZ2V0cyl7Y29uc3QgdD17fTtsZXQgZTtmb3IoZT0wO2U8ci5sZW5ndGg7ZSsrKWlmKHJbZV0ubW9ycGhUYXJnZXRzKWZvcihsZXQgbj0wO248cltlXS5tb3JwaFRhcmdldHMubGVuZ3RoO24rKyl0W3JbZV0ubW9ycGhUYXJnZXRzW25dXT0tMTtmb3IoY29uc3QgbiBpbiB0KXtjb25zdCB0PVtdLG89W107Zm9yKGxldCBpPTA7aSE9PXJbZV0ubW9ycGhUYXJnZXRzLmxlbmd0aDsrK2kpe2NvbnN0IGk9cltlXTt0LnB1c2goaS50aW1lKSxvLnB1c2goaS5tb3JwaFRhcmdldD09PW4/MTowKX1pLnB1c2gobmV3IGVuZSgiLm1vcnBoVGFyZ2V0SW5mbHVlbmNlWyIrbisiXSIsdCxvKSl9cz10Lmxlbmd0aCoob3x8MSl9ZWxzZXtjb25zdCBvPSIuYm9uZXNbIitlW3RdLm5hbWUrIl0iO24ob25lLG8rIi5wb3NpdGlvbiIsciwicG9zIixpKSxuKGluZSxvKyIucXVhdGVybmlvbiIsciwicm90IixpKSxuKG9uZSxvKyIuc2NhbGUiLHIsInNjbCIsaSl9fWlmKDA9PT1pLmxlbmd0aClyZXR1cm4gbnVsbDtyZXR1cm4gbmV3IHRoaXMocixzLGksYSl9cmVzZXREdXJhdGlvbigpe2xldCB0PTA7Zm9yKGxldCBlPTAsbj10aGlzLnRyYWNrcy5sZW5ndGg7ZSE9PW47KytlKXtjb25zdCBuPXRoaXMudHJhY2tzW2VdO3Q9TWF0aC5tYXgodCxuLnRpbWVzW24udGltZXMubGVuZ3RoLTFdKX1yZXR1cm4gdGhpcy5kdXJhdGlvbj10LHRoaXN9dHJpbSgpe2ZvcihsZXQgdD0wO3Q8dGhpcy50cmFja3MubGVuZ3RoO3QrKyl0aGlzLnRyYWNrc1t0XS50cmltKDAsdGhpcy5kdXJhdGlvbik7cmV0dXJuIHRoaXN9dmFsaWRhdGUoKXtsZXQgdD0hMDtmb3IobGV0IGU9MDtlPHRoaXMudHJhY2tzLmxlbmd0aDtlKyspdD10JiZ0aGlzLnRyYWNrc1tlXS52YWxpZGF0ZSgpO3JldHVybiB0fW9wdGltaXplKCl7Zm9yKGxldCB0PTA7dDx0aGlzLnRyYWNrcy5sZW5ndGg7dCsrKXRoaXMudHJhY2tzW3RdLm9wdGltaXplKCk7cmV0dXJuIHRoaXN9Y2xvbmUoKXtjb25zdCB0PVtdO2ZvcihsZXQgZT0wO2U8dGhpcy50cmFja3MubGVuZ3RoO2UrKyl0LnB1c2godGhpcy50cmFja3NbZV0uY2xvbmUoKSk7cmV0dXJuIG5ldyB0aGlzLmNvbnN0cnVjdG9yKHRoaXMubmFtZSx0aGlzLmR1cmF0aW9uLHQsdGhpcy5ibGVuZE1vZGUpfXRvSlNPTigpe3JldHVybiB0aGlzLmNvbnN0cnVjdG9yLnRvSlNPTih0aGlzKX19ZnVuY3Rpb24gc25lKHQpe2lmKHZvaWQgMD09PXQudHlwZSl0aHJvdyBuZXcgRXJyb3IoIlRIUkVFLktleWZyYW1lVHJhY2s6IHRyYWNrIHR5cGUgdW5kZWZpbmVkLCBjYW4gbm90IHBhcnNlIik7Y29uc3QgZT0oZnVuY3Rpb24gbih0KXtzd2l0Y2godC50b0xvd2VyQ2FzZSgpKXtjYXNlInNjYWxhciI6Y2FzZSJkb3VibGUiOmNhc2UiZmxvYXQiOmNhc2UibnVtYmVyIjpjYXNlImludGVnZXIiOnJldHVybiBlbmU7Y2FzZSJ2ZWN0b3IiOmNhc2UidmVjdG9yMiI6Y2FzZSJ2ZWN0b3IzIjpjYXNlInZlY3RvcjQiOnJldHVybiBvbmU7Y2FzZSJjb2xvciI6cmV0dXJuIHRuZTtjYXNlInF1YXRlcm5pb24iOnJldHVybiBpbmU7Y2FzZSJib29sIjpjYXNlImJvb2xlYW4iOnJldHVybiBRZWU7Y2FzZSJzdHJpbmciOnJldHVybiBybmV9dGhyb3cgbmV3IEVycm9yKCJUSFJFRS5LZXlmcmFtZVRyYWNrOiBVbnN1cHBvcnRlZCB0eXBlTmFtZTogIit0KX0pKHQudHlwZSk7aWYodm9pZCAwPT09dC50aW1lcyl7Y29uc3QgZT1bXSxuPVtdO1llZS5mbGF0dGVuSlNPTih0LmtleXMsZSxuLCJ2YWx1ZSIpLHQudGltZXM9ZSx0LnZhbHVlcz1ufXJldHVybiB2b2lkIDAhPT1lLnBhcnNlP2UucGFyc2UodCk6bmV3IGUodC5uYW1lLHQudGltZXMsdC52YWx1ZXMsdC5pbnRlcnBvbGF0aW9uKX1jb25zdCBsbmU9e2VuYWJsZWQ6ITEsZmlsZXM6e30sYWRkOmZ1bmN0aW9uKHQsZSl7ITEhPT10aGlzLmVuYWJsZWQmJih0aGlzLmZpbGVzW3RdPWUpfSxnZXQ6ZnVuY3Rpb24odCl7aWYoITEhPT10aGlzLmVuYWJsZWQpcmV0dXJuIHRoaXMuZmlsZXNbdF19LHJlbW92ZTpmdW5jdGlvbih0KXtkZWxldGUgdGhpcy5maWxlc1t0XX0sY2xlYXI6ZnVuY3Rpb24oKXt0aGlzLmZpbGVzPXt9fX07Y2xhc3MgY25le2NvbnN0cnVjdG9yKHQsZSxuKXtjb25zdCBpPXRoaXM7bGV0IHIsbz0hMSxhPTAscz0wO2NvbnN0IGw9W107dGhpcy5vblN0YXJ0PXZvaWQgMCx0aGlzLm9uTG9hZD10LHRoaXMub25Qcm9ncmVzcz1lLHRoaXMub25FcnJvcj1uLHRoaXMuaXRlbVN0YXJ0PWZ1bmN0aW9uKHQpe3MrKywhMT09PW8mJnZvaWQgMCE9PWkub25TdGFydCYmaS5vblN0YXJ0KHQsYSxzKSxvPSEwfSx0aGlzLml0ZW1FbmQ9ZnVuY3Rpb24odCl7YSsrLHZvaWQgMCE9PWkub25Qcm9ncmVzcyYmaS5vblByb2dyZXNzKHQsYSxzKSxhPT09cyYmKG89ITEsdm9pZCAwIT09aS5vbkxvYWQmJmkub25Mb2FkKCkpfSx0aGlzLml0ZW1FcnJvcj1mdW5jdGlvbih0KXt2b2lkIDAhPT1pLm9uRXJyb3ImJmkub25FcnJvcih0KX0sdGhpcy5yZXNvbHZlVVJMPWZ1bmN0aW9uKHQpe3JldHVybiByP3IodCk6dH0sdGhpcy5zZXRVUkxNb2RpZmllcj1mdW5jdGlvbih0KXtyZXR1cm4gcj10LHRoaXN9LHRoaXMuYWRkSGFuZGxlcj1mdW5jdGlvbih0LGUpe3JldHVybiBsLnB1c2godCxlKSx0aGlzfSx0aGlzLnJlbW92ZUhhbmRsZXI9ZnVuY3Rpb24odCl7Y29uc3QgZT1sLmluZGV4T2YodCk7cmV0dXJuLTEhPT1lJiZsLnNwbGljZShlLDIpLHRoaXN9LHRoaXMuZ2V0SGFuZGxlcj1mdW5jdGlvbih0KXtmb3IobGV0IGU9MCxuPWwubGVuZ3RoO2U8bjtlKz0yKXtjb25zdCBuPWxbZV0saT1sW2UrMV07aWYobi5nbG9iYWwmJihuLmxhc3RJbmRleD0wKSxuLnRlc3QodCkpcmV0dXJuIGl9cmV0dXJuIG51bGx9fX1jb25zdCB1bmU9bmV3IGNuZTtjbGFzcyBobmV7Y29uc3RydWN0b3IodCl7dGhpcy5tYW5hZ2VyPXZvaWQgMCE9PXQ/dDp1bmUsdGhpcy5jcm9zc09yaWdpbj0iYW5vbnltb3VzIix0aGlzLndpdGhDcmVkZW50aWFscz0hMSx0aGlzLnBhdGg9IiIsdGhpcy5yZXNvdXJjZVBhdGg9IiIsdGhpcy5yZXF1ZXN0SGVhZGVyPXt9fWxvYWQoKXt9bG9hZEFzeW5jKHQsZSl7Y29uc3Qgbj10aGlzO3JldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24oaSxyKXtuLmxvYWQodCxpLGUscil9KSl9cGFyc2UoKXt9c2V0Q3Jvc3NPcmlnaW4odCl7cmV0dXJuIHRoaXMuY3Jvc3NPcmlnaW49dCx0aGlzfXNldFdpdGhDcmVkZW50aWFscyh0KXtyZXR1cm4gdGhpcy53aXRoQ3JlZGVudGlhbHM9dCx0aGlzfXNldFBhdGgodCl7cmV0dXJuIHRoaXMucGF0aD10LHRoaXN9c2V0UmVzb3VyY2VQYXRoKHQpe3JldHVybiB0aGlzLnJlc291cmNlUGF0aD10LHRoaXN9c2V0UmVxdWVzdEhlYWRlcih0KXtyZXR1cm4gdGhpcy5yZXF1ZXN0SGVhZGVyPXQsdGhpc319Y29uc3QgZG5lPXt9O2NsYXNzIHBuZSBleHRlbmRzIGhuZXtjb25zdHJ1Y3Rvcih0KXtzdXBlcih0KX1sb2FkKHQsZSxuLGkpe3ZvaWQgMD09PXQmJih0PSIiKSx2b2lkIDAhPT10aGlzLnBhdGgmJih0PXRoaXMucGF0aCt0KSx0PXRoaXMubWFuYWdlci5yZXNvbHZlVVJMKHQpO2NvbnN0IHI9dGhpcyxvPWxuZS5nZXQodCk7aWYodm9pZCAwIT09bylyZXR1cm4gci5tYW5hZ2VyLml0ZW1TdGFydCh0KSxzZXRUaW1lb3V0KChmdW5jdGlvbigpe2UmJmUobyksci5tYW5hZ2VyLml0ZW1FbmQodCl9KSwwKSxvO2lmKHZvaWQgMCE9PWRuZVt0XSlyZXR1cm4gdm9pZCBkbmVbdF0ucHVzaCh7b25Mb2FkOmUsb25Qcm9ncmVzczpuLG9uRXJyb3I6aX0pO2NvbnN0IGE9dC5tYXRjaCgvXmRhdGE6KC4qPykoO2Jhc2U2NCk/LCguKikkLyk7bGV0IHM7aWYoYSl7Y29uc3Qgbj1hWzFdLG89ISFhWzJdO2xldCBzPWFbM107cz1kZWNvZGVVUklDb21wb25lbnQocyksbyYmKHM9YXRvYihzKSk7dHJ5e2xldCBpO2NvbnN0IG89KHRoaXMucmVzcG9uc2VUeXBlfHwiIikudG9Mb3dlckNhc2UoKTtzd2l0Y2gobyl7Y2FzZSJhcnJheWJ1ZmZlciI6Y2FzZSJibG9iIjpjb25zdCB0PW5ldyBVaW50OEFycmF5KHMubGVuZ3RoKTtmb3IobGV0IGU9MDtlPHMubGVuZ3RoO2UrKyl0W2VdPXMuY2hhckNvZGVBdChlKTtpPSJibG9iIj09PW8/bmV3IEJsb2IoW3QuYnVmZmVyXSx7dHlwZTpufSk6dC5idWZmZXI7YnJlYWs7Y2FzZSJkb2N1bWVudCI6Y29uc3QgZT1uZXcgRE9NUGFyc2VyO2k9ZS5wYXJzZUZyb21TdHJpbmcocyxuKTticmVhaztjYXNlImpzb24iOmk9SlNPTi5wYXJzZShzKTticmVhaztkZWZhdWx0Omk9c31zZXRUaW1lb3V0KChmdW5jdGlvbigpe2UmJmUoaSksci5tYW5hZ2VyLml0ZW1FbmQodCl9KSwwKX1jYXRjaChlKXtzZXRUaW1lb3V0KChmdW5jdGlvbigpe2kmJmkoZSksci5tYW5hZ2VyLml0ZW1FcnJvcih0KSxyLm1hbmFnZXIuaXRlbUVuZCh0KX0pLDApfX1lbHNle2RuZVt0XT1bXSxkbmVbdF0ucHVzaCh7b25Mb2FkOmUsb25Qcm9ncmVzczpuLG9uRXJyb3I6aX0pLHM9bmV3IFhNTEh0dHBSZXF1ZXN0LHMub3BlbigiR0VUIix0LCEwKSxzLmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLChmdW5jdGlvbihlKXtjb25zdCBuPXRoaXMucmVzcG9uc2UsaT1kbmVbdF07aWYoZGVsZXRlIGRuZVt0XSwyMDA9PT10aGlzLnN0YXR1c3x8MD09PXRoaXMuc3RhdHVzKXswPT09dGhpcy5zdGF0dXMmJmNvbnNvbGUud2FybigiVEhSRUUuRmlsZUxvYWRlcjogSFRUUCBTdGF0dXMgMCByZWNlaXZlZC4iKSxsbmUuYWRkKHQsbik7Zm9yKGxldCB0PTAsZT1pLmxlbmd0aDt0PGU7dCsrKXtjb25zdCBlPWlbdF07ZS5vbkxvYWQmJmUub25Mb2FkKG4pfXIubWFuYWdlci5pdGVtRW5kKHQpfWVsc2V7Zm9yKGxldCB0PTAsbj1pLmxlbmd0aDt0PG47dCsrKXtjb25zdCBuPWlbdF07bi5vbkVycm9yJiZuLm9uRXJyb3IoZSl9ci5tYW5hZ2VyLml0ZW1FcnJvcih0KSxyLm1hbmFnZXIuaXRlbUVuZCh0KX19KSwhMSkscy5hZGRFdmVudExpc3RlbmVyKCJwcm9ncmVzcyIsKGZ1bmN0aW9uKGUpe2NvbnN0IG49ZG5lW3RdO2ZvcihsZXQgdD0wLGk9bi5sZW5ndGg7dDxpO3QrKyl7Y29uc3QgaT1uW3RdO2kub25Qcm9ncmVzcyYmaS5vblByb2dyZXNzKGUpfX0pLCExKSxzLmFkZEV2ZW50TGlzdGVuZXIoImVycm9yIiwoZnVuY3Rpb24oZSl7Y29uc3Qgbj1kbmVbdF07ZGVsZXRlIGRuZVt0XTtmb3IobGV0IHQ9MCxpPW4ubGVuZ3RoO3Q8aTt0Kyspe2NvbnN0IGk9blt0XTtpLm9uRXJyb3ImJmkub25FcnJvcihlKX1yLm1hbmFnZXIuaXRlbUVycm9yKHQpLHIubWFuYWdlci5pdGVtRW5kKHQpfSksITEpLHMuYWRkRXZlbnRMaXN0ZW5lcigiYWJvcnQiLChmdW5jdGlvbihlKXtjb25zdCBuPWRuZVt0XTtkZWxldGUgZG5lW3RdO2ZvcihsZXQgdD0wLGk9bi5sZW5ndGg7dDxpO3QrKyl7Y29uc3QgaT1uW3RdO2kub25FcnJvciYmaS5vbkVycm9yKGUpfXIubWFuYWdlci5pdGVtRXJyb3IodCksci5tYW5hZ2VyLml0ZW1FbmQodCl9KSwhMSksdm9pZCAwIT09dGhpcy5yZXNwb25zZVR5cGUmJihzLnJlc3BvbnNlVHlwZT10aGlzLnJlc3BvbnNlVHlwZSksdm9pZCAwIT09dGhpcy53aXRoQ3JlZGVudGlhbHMmJihzLndpdGhDcmVkZW50aWFscz10aGlzLndpdGhDcmVkZW50aWFscykscy5vdmVycmlkZU1pbWVUeXBlJiZzLm92ZXJyaWRlTWltZVR5cGUodm9pZCAwIT09dGhpcy5taW1lVHlwZT90aGlzLm1pbWVUeXBlOiJ0ZXh0L3BsYWluIik7Zm9yKGNvbnN0IHQgaW4gdGhpcy5yZXF1ZXN0SGVhZGVyKXMuc2V0UmVxdWVzdEhlYWRlcih0LHRoaXMucmVxdWVzdEhlYWRlclt0XSk7cy5zZW5kKG51bGwpfXJldHVybiByLm1hbmFnZXIuaXRlbVN0YXJ0KHQpLHN9c2V0UmVzcG9uc2VUeXBlKHQpe3JldHVybiB0aGlzLnJlc3BvbnNlVHlwZT10LHRoaXN9c2V0TWltZVR5cGUodCl7cmV0dXJuIHRoaXMubWltZVR5cGU9dCx0aGlzfX1jbGFzcyBmbmUgZXh0ZW5kcyBobmV7Y29uc3RydWN0b3IodCl7c3VwZXIodCl9bG9hZCh0LGUsbixpKXt2b2lkIDAhPT10aGlzLnBhdGgmJih0PXRoaXMucGF0aCt0KSx0PXRoaXMubWFuYWdlci5yZXNvbHZlVVJMKHQpO2NvbnN0IHI9dGhpcyxvPWxuZS5nZXQodCk7aWYodm9pZCAwIT09bylyZXR1cm4gci5tYW5hZ2VyLml0ZW1TdGFydCh0KSxzZXRUaW1lb3V0KChmdW5jdGlvbigpe2UmJmUobyksci5tYW5hZ2VyLml0ZW1FbmQodCl9KSwwKSxvO2NvbnN0IGE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiwiaW1nIik7ZnVuY3Rpb24gcygpe2EucmVtb3ZlRXZlbnRMaXN0ZW5lcigibG9hZCIscywhMSksYS5yZW1vdmVFdmVudExpc3RlbmVyKCJlcnJvciIsbCwhMSksbG5lLmFkZCh0LHRoaXMpLGUmJmUodGhpcyksci5tYW5hZ2VyLml0ZW1FbmQodCl9ZnVuY3Rpb24gbChlKXthLnJlbW92ZUV2ZW50TGlzdGVuZXIoImxvYWQiLHMsITEpLGEucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZXJyb3IiLGwsITEpLGkmJmkoZSksci5tYW5hZ2VyLml0ZW1FcnJvcih0KSxyLm1hbmFnZXIuaXRlbUVuZCh0KX1yZXR1cm4gYS5hZGRFdmVudExpc3RlbmVyKCJsb2FkIixzLCExKSxhLmFkZEV2ZW50TGlzdGVuZXIoImVycm9yIixsLCExKSwiZGF0YToiIT09dC5zdWJzdHIoMCw1KSYmdm9pZCAwIT09dGhpcy5jcm9zc09yaWdpbiYmKGEuY3Jvc3NPcmlnaW49dGhpcy5jcm9zc09yaWdpbiksci5tYW5hZ2VyLml0ZW1TdGFydCh0KSxhLnNyYz10LGF9fWNsYXNzIG1uZSBleHRlbmRzIGhuZXtjb25zdHJ1Y3Rvcih0KXtzdXBlcih0KX1sb2FkKHQsZSxuLGkpe2NvbnN0IHI9bmV3IHM2dCxvPW5ldyBmbmUodGhpcy5tYW5hZ2VyKTtvLnNldENyb3NzT3JpZ2luKHRoaXMuY3Jvc3NPcmlnaW4pLG8uc2V0UGF0aCh0aGlzLnBhdGgpO2xldCBhPTA7ZnVuY3Rpb24gcyhuKXtvLmxvYWQodFtuXSwoZnVuY3Rpb24odCl7ci5pbWFnZXNbbl09dCxhKyssNj09PWEmJihyLm5lZWRzVXBkYXRlPSEwLGUmJmUocikpfSksdm9pZCAwLGkpfWZvcihsZXQgZT0wO2U8dC5sZW5ndGg7KytlKXMoZSk7cmV0dXJuIHJ9fWNsYXNzIGduZSBleHRlbmRzIGhuZXtjb25zdHJ1Y3Rvcih0KXtzdXBlcih0KX1sb2FkKHQsZSxuLGkpe2NvbnN0IHI9dGhpcyxvPW5ldyBIN3QsYT1uZXcgcG5lKHRoaXMubWFuYWdlcik7cmV0dXJuIGEuc2V0UmVzcG9uc2VUeXBlKCJhcnJheWJ1ZmZlciIpLGEuc2V0UmVxdWVzdEhlYWRlcih0aGlzLnJlcXVlc3RIZWFkZXIpLGEuc2V0UGF0aCh0aGlzLnBhdGgpLGEuc2V0V2l0aENyZWRlbnRpYWxzKHIud2l0aENyZWRlbnRpYWxzKSxhLmxvYWQodCwoZnVuY3Rpb24odCl7Y29uc3Qgbj1yLnBhcnNlKHQpO24mJih2b2lkIDAhPT1uLmltYWdlP28uaW1hZ2U9bi5pbWFnZTp2b2lkIDAhPT1uLmRhdGEmJihvLmltYWdlLndpZHRoPW4ud2lkdGgsby5pbWFnZS5oZWlnaHQ9bi5oZWlnaHQsby5pbWFnZS5kYXRhPW4uZGF0YSksby53cmFwUz12b2lkIDAhPT1uLndyYXBTP24ud3JhcFM6bDJ0LG8ud3JhcFQ9dm9pZCAwIT09bi53cmFwVD9uLndyYXBUOmwydCxvLm1hZ0ZpbHRlcj12b2lkIDAhPT1uLm1hZ0ZpbHRlcj9uLm1hZ0ZpbHRlcjpwMnQsby5taW5GaWx0ZXI9dm9pZCAwIT09bi5taW5GaWx0ZXI/bi5taW5GaWx0ZXI6cDJ0LG8uYW5pc290cm9weT12b2lkIDAhPT1uLmFuaXNvdHJvcHk/bi5hbmlzb3Ryb3B5OjEsdm9pZCAwIT09bi5lbmNvZGluZyYmKG8uZW5jb2Rpbmc9bi5lbmNvZGluZyksdm9pZCAwIT09bi5mbGlwWSYmKG8uZmxpcFk9bi5mbGlwWSksdm9pZCAwIT09bi5mb3JtYXQmJihvLmZvcm1hdD1uLmZvcm1hdCksdm9pZCAwIT09bi50eXBlJiYoby50eXBlPW4udHlwZSksdm9pZCAwIT09bi5taXBtYXBzJiYoby5taXBtYXBzPW4ubWlwbWFwcyxvLm1pbkZpbHRlcj1tMnQpLDE9PT1uLm1pcG1hcENvdW50JiYoby5taW5GaWx0ZXI9cDJ0KSx2b2lkIDAhPT1uLmdlbmVyYXRlTWlwbWFwcyYmKG8uZ2VuZXJhdGVNaXBtYXBzPW4uZ2VuZXJhdGVNaXBtYXBzKSxvLm5lZWRzVXBkYXRlPSEwLGUmJmUobyxuKSl9KSxuLGkpLG99fWNsYXNzIF9uZSBleHRlbmRzIGhuZXtjb25zdHJ1Y3Rvcih0KXtzdXBlcih0KX1sb2FkKHQsZSxuLGkpe2NvbnN0IHI9bmV3IE41dCxvPW5ldyBmbmUodGhpcy5tYW5hZ2VyKTtyZXR1cm4gby5zZXRDcm9zc09yaWdpbih0aGlzLmNyb3NzT3JpZ2luKSxvLnNldFBhdGgodGhpcy5wYXRoKSxvLmxvYWQodCwoZnVuY3Rpb24obil7ci5pbWFnZT1uO2NvbnN0IGk9dC5zZWFyY2goL1wuanBlP2coJHxcPykvaSk+MHx8MD09PXQuc2VhcmNoKC9eZGF0YVw6aW1hZ2VcL2pwZWcvKTtyLmZvcm1hdD1pP3cydDpTMnQsci5uZWVkc1VwZGF0ZT0hMCx2b2lkIDAhPT1lJiZlKHIpfSksbixpKSxyfX1jbGFzcyB5bmUgZXh0ZW5kcyBUdGV7Y29uc3RydWN0b3IoKXtzdXBlcigpLHRoaXMudHlwZT0iQ3VydmVQYXRoIix0aGlzLmN1cnZlcz1bXSx0aGlzLmF1dG9DbG9zZT0hMX1hZGQodCl7dGhpcy5jdXJ2ZXMucHVzaCh0KX1jbG9zZVBhdGgoKXtjb25zdCB0PXRoaXMuY3VydmVzWzBdLmdldFBvaW50KDApLGU9dGhpcy5jdXJ2ZXNbdGhpcy5jdXJ2ZXMubGVuZ3RoLTFdLmdldFBvaW50KDEpO3QuZXF1YWxzKGUpfHx0aGlzLmN1cnZlcy5wdXNoKG5ldyBGdGUoZSx0KSl9Z2V0UG9pbnQodCl7Y29uc3QgZT10KnRoaXMuZ2V0TGVuZ3RoKCksbj10aGlzLmdldEN1cnZlTGVuZ3RocygpO2xldCBpPTA7Zm9yKDtpPG4ubGVuZ3RoOyl7aWYobltpXT49ZSl7Y29uc3QgdD1uW2ldLWUscj10aGlzLmN1cnZlc1tpXSxvPXIuZ2V0TGVuZ3RoKCk7cmV0dXJuIHIuZ2V0UG9pbnRBdCgwPT09bz8wOjEtdC9vKX1pKyt9cmV0dXJuIG51bGx9Z2V0TGVuZ3RoKCl7Y29uc3QgdD10aGlzLmdldEN1cnZlTGVuZ3RocygpO3JldHVybiB0W3QubGVuZ3RoLTFdfXVwZGF0ZUFyY0xlbmd0aHMoKXt0aGlzLm5lZWRzVXBkYXRlPSEwLHRoaXMuY2FjaGVMZW5ndGhzPW51bGwsdGhpcy5nZXRDdXJ2ZUxlbmd0aHMoKX1nZXRDdXJ2ZUxlbmd0aHMoKXtpZih0aGlzLmNhY2hlTGVuZ3RocyYmdGhpcy5jYWNoZUxlbmd0aHMubGVuZ3RoPT09dGhpcy5jdXJ2ZXMubGVuZ3RoKXJldHVybiB0aGlzLmNhY2hlTGVuZ3Rocztjb25zdCB0PVtdO2xldCBlPTA7Zm9yKGxldCBuPTAsaT10aGlzLmN1cnZlcy5sZW5ndGg7bjxpO24rKyllKz10aGlzLmN1cnZlc1tuXS5nZXRMZW5ndGgoKSx0LnB1c2goZSk7cmV0dXJuIHRoaXMuY2FjaGVMZW5ndGhzPXQsdH1nZXRTcGFjZWRQb2ludHModD00MCl7Y29uc3QgZT1bXTtmb3IobGV0IG49MDtuPD10O24rKyllLnB1c2godGhpcy5nZXRQb2ludChuL3QpKTtyZXR1cm4gdGhpcy5hdXRvQ2xvc2UmJmUucHVzaChlWzBdKSxlfWdldFBvaW50cyh0PTEyKXtjb25zdCBlPVtdO2xldCBuO2ZvcihsZXQgaT0wLHI9dGhpcy5jdXJ2ZXM7aTxyLmxlbmd0aDtpKyspe2NvbnN0IG89cltpXSxhPW8uZ2V0UG9pbnRzKG8mJm8uaXNFbGxpcHNlQ3VydmU/Mip0Om8mJihvLmlzTGluZUN1cnZlfHxvLmlzTGluZUN1cnZlMyk/MTpvJiZvLmlzU3BsaW5lQ3VydmU/dCpvLnBvaW50cy5sZW5ndGg6dCk7Zm9yKGxldCB0PTA7dDxhLmxlbmd0aDt0Kyspe2NvbnN0IGk9YVt0XTtuJiZuLmVxdWFscyhpKXx8KGUucHVzaChpKSxuPWkpfX1yZXR1cm4gdGhpcy5hdXRvQ2xvc2UmJmUubGVuZ3RoPjEmJiFlW2UubGVuZ3RoLTFdLmVxdWFscyhlWzBdKSYmZS5wdXNoKGVbMF0pLGV9Y29weSh0KXtzdXBlci5jb3B5KHQpLHRoaXMuY3VydmVzPVtdO2ZvcihsZXQgZT0wLG49dC5jdXJ2ZXMubGVuZ3RoO2U8bjtlKyspe3RoaXMuY3VydmVzLnB1c2godC5jdXJ2ZXNbZV0uY2xvbmUoKSl9cmV0dXJuIHRoaXMuYXV0b0Nsb3NlPXQuYXV0b0Nsb3NlLHRoaXN9dG9KU09OKCl7Y29uc3QgdD1zdXBlci50b0pTT04oKTt0LmF1dG9DbG9zZT10aGlzLmF1dG9DbG9zZSx0LmN1cnZlcz1bXTtmb3IobGV0IGU9MCxuPXRoaXMuY3VydmVzLmxlbmd0aDtlPG47ZSsrKXt0LmN1cnZlcy5wdXNoKHRoaXMuY3VydmVzW2VdLnRvSlNPTigpKX1yZXR1cm4gdH1mcm9tSlNPTih0KXtzdXBlci5mcm9tSlNPTih0KSx0aGlzLmF1dG9DbG9zZT10LmF1dG9DbG9zZSx0aGlzLmN1cnZlcz1bXTtmb3IobGV0IGU9MCxuPXQuY3VydmVzLmxlbmd0aDtlPG47ZSsrKXtjb25zdCBuPXQuY3VydmVzW2VdO3RoaXMuY3VydmVzLnB1c2goKG5ldyBXdGVbbi50eXBlXSkuZnJvbUpTT04obikpfXJldHVybiB0aGlzfX1jbGFzcyB2bmUgZXh0ZW5kcyB5bmV7Y29uc3RydWN0b3IodCl7c3VwZXIoKSx0aGlzLnR5cGU9IlBhdGgiLHRoaXMuY3VycmVudFBvaW50PW5ldyBDNXQsdCYmdGhpcy5zZXRGcm9tUG9pbnRzKHQpfXNldEZyb21Qb2ludHModCl7dGhpcy5tb3ZlVG8odFswXS54LHRbMF0ueSk7Zm9yKGxldCBlPTEsbj10Lmxlbmd0aDtlPG47ZSsrKXRoaXMubGluZVRvKHRbZV0ueCx0W2VdLnkpO3JldHVybiB0aGlzfW1vdmVUbyh0LGUpe3JldHVybiB0aGlzLmN1cnJlbnRQb2ludC5zZXQodCxlKSx0aGlzfWxpbmVUbyh0LGUpe2NvbnN0IG49bmV3IEZ0ZSh0aGlzLmN1cnJlbnRQb2ludC5jbG9uZSgpLG5ldyBDNXQodCxlKSk7cmV0dXJuIHRoaXMuY3VydmVzLnB1c2gobiksdGhpcy5jdXJyZW50UG9pbnQuc2V0KHQsZSksdGhpc31xdWFkcmF0aWNDdXJ2ZVRvKHQsZSxuLGkpe2NvbnN0IHI9bmV3IFV0ZSh0aGlzLmN1cnJlbnRQb2ludC5jbG9uZSgpLG5ldyBDNXQodCxlKSxuZXcgQzV0KG4saSkpO3JldHVybiB0aGlzLmN1cnZlcy5wdXNoKHIpLHRoaXMuY3VycmVudFBvaW50LnNldChuLGkpLHRoaXN9YmV6aWVyQ3VydmVUbyh0LGUsbixpLHIsbyl7Y29uc3QgYT1uZXcgQnRlKHRoaXMuY3VycmVudFBvaW50LmNsb25lKCksbmV3IEM1dCh0LGUpLG5ldyBDNXQobixpKSxuZXcgQzV0KHIsbykpO3JldHVybiB0aGlzLmN1cnZlcy5wdXNoKGEpLHRoaXMuY3VycmVudFBvaW50LnNldChyLG8pLHRoaXN9c3BsaW5lVGhydSh0KXtjb25zdCBlPVt0aGlzLmN1cnJlbnRQb2ludC5jbG9uZSgpXS5jb25jYXQodCksbj1uZXcgR3RlKGUpO3JldHVybiB0aGlzLmN1cnZlcy5wdXNoKG4pLHRoaXMuY3VycmVudFBvaW50LmNvcHkodFt0Lmxlbmd0aC0xXSksdGhpc31hcmModCxlLG4saSxyLG8pe3JldHVybiB0aGlzLmFic2FyYyh0K3RoaXMuY3VycmVudFBvaW50LngsZSt0aGlzLmN1cnJlbnRQb2ludC55LG4saSxyLG8pLHRoaXN9YWJzYXJjKHQsZSxuLGkscixvKXtyZXR1cm4gdGhpcy5hYnNlbGxpcHNlKHQsZSxuLG4saSxyLG8pLHRoaXN9ZWxsaXBzZSh0LGUsbixpLHIsbyxhLHMpe3JldHVybiB0aGlzLmFic2VsbGlwc2UodCt0aGlzLmN1cnJlbnRQb2ludC54LGUrdGhpcy5jdXJyZW50UG9pbnQueSxuLGkscixvLGEscyksdGhpc31hYnNlbGxpcHNlKHQsZSxuLGkscixvLGEscyl7Y29uc3QgbD1uZXcgQ3RlKHQsZSxuLGkscixvLGEscyk7aWYodGhpcy5jdXJ2ZXMubGVuZ3RoPjApe2NvbnN0IHQ9bC5nZXRQb2ludCgwKTt0LmVxdWFscyh0aGlzLmN1cnJlbnRQb2ludCl8fHRoaXMubGluZVRvKHQueCx0LnkpfXRoaXMuY3VydmVzLnB1c2gobCk7Y29uc3QgYz1sLmdldFBvaW50KDEpO3JldHVybiB0aGlzLmN1cnJlbnRQb2ludC5jb3B5KGMpLHRoaXN9Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLmN1cnJlbnRQb2ludC5jb3B5KHQuY3VycmVudFBvaW50KSx0aGlzfXRvSlNPTigpe2NvbnN0IHQ9c3VwZXIudG9KU09OKCk7cmV0dXJuIHQuY3VycmVudFBvaW50PXRoaXMuY3VycmVudFBvaW50LnRvQXJyYXkoKSx0fWZyb21KU09OKHQpe3JldHVybiBzdXBlci5mcm9tSlNPTih0KSx0aGlzLmN1cnJlbnRQb2ludC5mcm9tQXJyYXkodC5jdXJyZW50UG9pbnQpLHRoaXN9fWNsYXNzIGJuZSBleHRlbmRzIHZuZXtjb25zdHJ1Y3Rvcih0KXtzdXBlcih0KSx0aGlzLnV1aWQ9YTV0KCksdGhpcy50eXBlPSJTaGFwZSIsdGhpcy5ob2xlcz1bXX1nZXRQb2ludHNIb2xlcyh0KXtjb25zdCBlPVtdO2ZvcihsZXQgbj0wLGk9dGhpcy5ob2xlcy5sZW5ndGg7bjxpO24rKyllW25dPXRoaXMuaG9sZXNbbl0uZ2V0UG9pbnRzKHQpO3JldHVybiBlfWV4dHJhY3RQb2ludHModCl7cmV0dXJue3NoYXBlOnRoaXMuZ2V0UG9pbnRzKHQpLGhvbGVzOnRoaXMuZ2V0UG9pbnRzSG9sZXModCl9fWNvcHkodCl7c3VwZXIuY29weSh0KSx0aGlzLmhvbGVzPVtdO2ZvcihsZXQgZT0wLG49dC5ob2xlcy5sZW5ndGg7ZTxuO2UrKyl7dGhpcy5ob2xlcy5wdXNoKHQuaG9sZXNbZV0uY2xvbmUoKSl9cmV0dXJuIHRoaXN9dG9KU09OKCl7Y29uc3QgdD1zdXBlci50b0pTT04oKTt0LnV1aWQ9dGhpcy51dWlkLHQuaG9sZXM9W107Zm9yKGxldCBlPTAsbj10aGlzLmhvbGVzLmxlbmd0aDtlPG47ZSsrKXt0LmhvbGVzLnB1c2godGhpcy5ob2xlc1tlXS50b0pTT04oKSl9cmV0dXJuIHR9ZnJvbUpTT04odCl7c3VwZXIuZnJvbUpTT04odCksdGhpcy51dWlkPXQudXVpZCx0aGlzLmhvbGVzPVtdO2ZvcihsZXQgZT0wLG49dC5ob2xlcy5sZW5ndGg7ZTxuO2UrKyl7Y29uc3Qgbj10LmhvbGVzW2VdO3RoaXMuaG9sZXMucHVzaCgobmV3IHZuZSkuZnJvbUpTT04obikpfXJldHVybiB0aGlzfX1jbGFzcyB4bmUgZXh0ZW5kcyBWM3R7Y29uc3RydWN0b3IodCxlPTEpe3N1cGVyKCksdGhpcy50eXBlPSJMaWdodCIsdGhpcy5jb2xvcj1uZXcgczR0KHQpLHRoaXMuaW50ZW5zaXR5PWV9ZGlzcG9zZSgpe31jb3B5KHQpe3JldHVybiBzdXBlci5jb3B5KHQpLHRoaXMuY29sb3IuY29weSh0LmNvbG9yKSx0aGlzLmludGVuc2l0eT10LmludGVuc2l0eSx0aGlzfXRvSlNPTih0KXtjb25zdCBlPXN1cGVyLnRvSlNPTih0KTtyZXR1cm4gZS5vYmplY3QuY29sb3I9dGhpcy5jb2xvci5nZXRIZXgoKSxlLm9iamVjdC5pbnRlbnNpdHk9dGhpcy5pbnRlbnNpdHksdm9pZCAwIT09dGhpcy5ncm91bmRDb2xvciYmKGUub2JqZWN0Lmdyb3VuZENvbG9yPXRoaXMuZ3JvdW5kQ29sb3IuZ2V0SGV4KCkpLHZvaWQgMCE9PXRoaXMuZGlzdGFuY2UmJihlLm9iamVjdC5kaXN0YW5jZT10aGlzLmRpc3RhbmNlKSx2b2lkIDAhPT10aGlzLmFuZ2xlJiYoZS5vYmplY3QuYW5nbGU9dGhpcy5hbmdsZSksdm9pZCAwIT09dGhpcy5kZWNheSYmKGUub2JqZWN0LmRlY2F5PXRoaXMuZGVjYXkpLHZvaWQgMCE9PXRoaXMucGVudW1icmEmJihlLm9iamVjdC5wZW51bWJyYT10aGlzLnBlbnVtYnJhKSx2b2lkIDAhPT10aGlzLnNoYWRvdyYmKGUub2JqZWN0LnNoYWRvdz10aGlzLnNoYWRvdy50b0pTT04oKSksZX19eG5lLnByb3RvdHlwZS5pc0xpZ2h0PSEwO2NsYXNzIHduZSBleHRlbmRzIHhuZXtjb25zdHJ1Y3Rvcih0LGUsbil7c3VwZXIodCxuKSx0aGlzLnR5cGU9IkhlbWlzcGhlcmVMaWdodCIsdGhpcy5wb3NpdGlvbi5jb3B5KFYzdC5EZWZhdWx0VXApLHRoaXMudXBkYXRlTWF0cml4KCksdGhpcy5ncm91bmRDb2xvcj1uZXcgczR0KGUpfWNvcHkodCl7cmV0dXJuIHhuZS5wcm90b3R5cGUuY29weS5jYWxsKHRoaXMsdCksdGhpcy5ncm91bmRDb2xvci5jb3B5KHQuZ3JvdW5kQ29sb3IpLHRoaXN9fXduZS5wcm90b3R5cGUuaXNIZW1pc3BoZXJlTGlnaHQ9ITA7Y29uc3QgU25lPW5ldyBnM3QsTW5lPW5ldyBINXQsRW5lPW5ldyBINXQ7Y2xhc3MgVG5le2NvbnN0cnVjdG9yKHQpe3RoaXMuY2FtZXJhPXQsdGhpcy5iaWFzPTAsdGhpcy5ub3JtYWxCaWFzPTAsdGhpcy5yYWRpdXM9MSx0aGlzLm1hcFNpemU9bmV3IEM1dCg1MTIsNTEyKSx0aGlzLm1hcD1udWxsLHRoaXMubWFwUGFzcz1udWxsLHRoaXMubWF0cml4PW5ldyBnM3QsdGhpcy5hdXRvVXBkYXRlPSEwLHRoaXMubmVlZHNVcGRhdGU9ITEsdGhpcy5fZnJ1c3R1bT1uZXcgbTZ0LHRoaXMuX2ZyYW1lRXh0ZW50cz1uZXcgQzV0KDEsMSksdGhpcy5fdmlld3BvcnRDb3VudD0xLHRoaXMuX3ZpZXdwb3J0cz1bbmV3IFI1dCgwLDAsMSwxKV19Z2V0Vmlld3BvcnRDb3VudCgpe3JldHVybiB0aGlzLl92aWV3cG9ydENvdW50fWdldEZydXN0dW0oKXtyZXR1cm4gdGhpcy5fZnJ1c3R1bX11cGRhdGVNYXRyaWNlcyh0KXtjb25zdCBlPXRoaXMuY2FtZXJhLG49dGhpcy5tYXRyaXg7TW5lLnNldEZyb21NYXRyaXhQb3NpdGlvbih0Lm1hdHJpeFdvcmxkKSxlLnBvc2l0aW9uLmNvcHkoTW5lKSxFbmUuc2V0RnJvbU1hdHJpeFBvc2l0aW9uKHQudGFyZ2V0Lm1hdHJpeFdvcmxkKSxlLmxvb2tBdChFbmUpLGUudXBkYXRlTWF0cml4V29ybGQoKSxTbmUubXVsdGlwbHlNYXRyaWNlcyhlLnByb2plY3Rpb25NYXRyaXgsZS5tYXRyaXhXb3JsZEludmVyc2UpLHRoaXMuX2ZydXN0dW0uc2V0RnJvbVByb2plY3Rpb25NYXRyaXgoU25lKSxuLnNldCguNSwwLDAsLjUsMCwuNSwwLC41LDAsMCwuNSwuNSwwLDAsMCwxKSxuLm11bHRpcGx5KGUucHJvamVjdGlvbk1hdHJpeCksbi5tdWx0aXBseShlLm1hdHJpeFdvcmxkSW52ZXJzZSl9Z2V0Vmlld3BvcnQodCl7cmV0dXJuIHRoaXMuX3ZpZXdwb3J0c1t0XX1nZXRGcmFtZUV4dGVudHMoKXtyZXR1cm4gdGhpcy5fZnJhbWVFeHRlbnRzfWRpc3Bvc2UoKXt0aGlzLm1hcCYmdGhpcy5tYXAuZGlzcG9zZSgpLHRoaXMubWFwUGFzcyYmdGhpcy5tYXBQYXNzLmRpc3Bvc2UoKX1jb3B5KHQpe3JldHVybiB0aGlzLmNhbWVyYT10LmNhbWVyYS5jbG9uZSgpLHRoaXMuYmlhcz10LmJpYXMsdGhpcy5yYWRpdXM9dC5yYWRpdXMsdGhpcy5tYXBTaXplLmNvcHkodC5tYXBTaXplKSx0aGlzfWNsb25lKCl7cmV0dXJuKG5ldyB0aGlzLmNvbnN0cnVjdG9yKS5jb3B5KHRoaXMpfXRvSlNPTigpe2NvbnN0IHQ9e307cmV0dXJuIDAhPT10aGlzLmJpYXMmJih0LmJpYXM9dGhpcy5iaWFzKSwwIT09dGhpcy5ub3JtYWxCaWFzJiYodC5ub3JtYWxCaWFzPXRoaXMubm9ybWFsQmlhcyksMSE9PXRoaXMucmFkaXVzJiYodC5yYWRpdXM9dGhpcy5yYWRpdXMpLDUxMj09PXRoaXMubWFwU2l6ZS54JiY1MTI9PT10aGlzLm1hcFNpemUueXx8KHQubWFwU2l6ZT10aGlzLm1hcFNpemUudG9BcnJheSgpKSx0LmNhbWVyYT10aGlzLmNhbWVyYS50b0pTT04oITEpLm9iamVjdCxkZWxldGUgdC5jYW1lcmEubWF0cml4LHR9fWNsYXNzIENuZSBleHRlbmRzIFRuZXtjb25zdHJ1Y3Rvcigpe3N1cGVyKG5ldyByNnQoNTAsMSwuNSw1MDApKSx0aGlzLmZvY3VzPTF9dXBkYXRlTWF0cmljZXModCl7Y29uc3QgZT10aGlzLmNhbWVyYSxuPTIqbzV0KnQuYW5nbGUqdGhpcy5mb2N1cyxpPXRoaXMubWFwU2l6ZS53aWR0aC90aGlzLm1hcFNpemUuaGVpZ2h0LHI9dC5kaXN0YW5jZXx8ZS5mYXI7bj09PWUuZm92JiZpPT09ZS5hc3BlY3QmJnI9PT1lLmZhcnx8KGUuZm92PW4sZS5hc3BlY3Q9aSxlLmZhcj1yLGUudXBkYXRlUHJvamVjdGlvbk1hdHJpeCgpKSxzdXBlci51cGRhdGVNYXRyaWNlcyh0KX1jb3B5KHQpe3JldHVybiBzdXBlci5jb3B5KHQpLHRoaXMuZm9jdXM9dC5mb2N1cyx0aGlzfX1DbmUucHJvdG90eXBlLmlzU3BvdExpZ2h0U2hhZG93PSEwO2NsYXNzIEFuZSBleHRlbmRzIHhuZXtjb25zdHJ1Y3Rvcih0LGUsbj0wLGk9TWF0aC5QSS8zLHI9MCxvPTEpe3N1cGVyKHQsZSksdGhpcy50eXBlPSJTcG90TGlnaHQiLHRoaXMucG9zaXRpb24uY29weShWM3QuRGVmYXVsdFVwKSx0aGlzLnVwZGF0ZU1hdHJpeCgpLHRoaXMudGFyZ2V0PW5ldyBWM3QsdGhpcy5kaXN0YW5jZT1uLHRoaXMuYW5nbGU9aSx0aGlzLnBlbnVtYnJhPXIsdGhpcy5kZWNheT1vLHRoaXMuc2hhZG93PW5ldyBDbmV9Z2V0IHBvd2VyKCl7cmV0dXJuIHRoaXMuaW50ZW5zaXR5Kk1hdGguUEl9c2V0IHBvd2VyKHQpe3RoaXMuaW50ZW5zaXR5PXQvTWF0aC5QSX1kaXNwb3NlKCl7dGhpcy5zaGFkb3cuZGlzcG9zZSgpfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5kaXN0YW5jZT10LmRpc3RhbmNlLHRoaXMuYW5nbGU9dC5hbmdsZSx0aGlzLnBlbnVtYnJhPXQucGVudW1icmEsdGhpcy5kZWNheT10LmRlY2F5LHRoaXMudGFyZ2V0PXQudGFyZ2V0LmNsb25lKCksdGhpcy5zaGFkb3c9dC5zaGFkb3cuY2xvbmUoKSx0aGlzfX1BbmUucHJvdG90eXBlLmlzU3BvdExpZ2h0PSEwO2NvbnN0IGtuZT1uZXcgZzN0LExuZT1uZXcgSDV0LFBuZT1uZXcgSDV0O2NsYXNzIE5uZSBleHRlbmRzIFRuZXtjb25zdHJ1Y3Rvcigpe3N1cGVyKG5ldyByNnQoOTAsMSwuNSw1MDApKSx0aGlzLl9mcmFtZUV4dGVudHM9bmV3IEM1dCg0LDIpLHRoaXMuX3ZpZXdwb3J0Q291bnQ9Nix0aGlzLl92aWV3cG9ydHM9W25ldyBSNXQoMiwxLDEsMSksbmV3IFI1dCgwLDEsMSwxKSxuZXcgUjV0KDMsMSwxLDEpLG5ldyBSNXQoMSwxLDEsMSksbmV3IFI1dCgzLDAsMSwxKSxuZXcgUjV0KDEsMCwxLDEpXSx0aGlzLl9jdWJlRGlyZWN0aW9ucz1bbmV3IEg1dCgxLDAsMCksbmV3IEg1dCgtMSwwLDApLG5ldyBINXQoMCwwLDEpLG5ldyBINXQoMCwwLC0xKSxuZXcgSDV0KDAsMSwwKSxuZXcgSDV0KDAsLTEsMCldLHRoaXMuX2N1YmVVcHM9W25ldyBINXQoMCwxLDApLG5ldyBINXQoMCwxLDApLG5ldyBINXQoMCwxLDApLG5ldyBINXQoMCwxLDApLG5ldyBINXQoMCwwLDEpLG5ldyBINXQoMCwwLC0xKV19dXBkYXRlTWF0cmljZXModCxlPTApe2NvbnN0IG49dGhpcy5jYW1lcmEsaT10aGlzLm1hdHJpeCxyPXQuZGlzdGFuY2V8fG4uZmFyO3IhPT1uLmZhciYmKG4uZmFyPXIsbi51cGRhdGVQcm9qZWN0aW9uTWF0cml4KCkpLExuZS5zZXRGcm9tTWF0cml4UG9zaXRpb24odC5tYXRyaXhXb3JsZCksbi5wb3NpdGlvbi5jb3B5KExuZSksUG5lLmNvcHkobi5wb3NpdGlvbiksUG5lLmFkZCh0aGlzLl9jdWJlRGlyZWN0aW9uc1tlXSksbi51cC5jb3B5KHRoaXMuX2N1YmVVcHNbZV0pLG4ubG9va0F0KFBuZSksbi51cGRhdGVNYXRyaXhXb3JsZCgpLGkubWFrZVRyYW5zbGF0aW9uKC1MbmUueCwtTG5lLnksLUxuZS56KSxrbmUubXVsdGlwbHlNYXRyaWNlcyhuLnByb2plY3Rpb25NYXRyaXgsbi5tYXRyaXhXb3JsZEludmVyc2UpLHRoaXMuX2ZydXN0dW0uc2V0RnJvbVByb2plY3Rpb25NYXRyaXgoa25lKX19Tm5lLnByb3RvdHlwZS5pc1BvaW50TGlnaHRTaGFkb3c9ITA7Y2xhc3MgSW5lIGV4dGVuZHMgeG5le2NvbnN0cnVjdG9yKHQsZSxuPTAsaT0xKXtzdXBlcih0LGUpLHRoaXMudHlwZT0iUG9pbnRMaWdodCIsdGhpcy5kaXN0YW5jZT1uLHRoaXMuZGVjYXk9aSx0aGlzLnNoYWRvdz1uZXcgTm5lfWdldCBwb3dlcigpe3JldHVybiA0KnRoaXMuaW50ZW5zaXR5Kk1hdGguUEl9c2V0IHBvd2VyKHQpe3RoaXMuaW50ZW5zaXR5PXQvKDQqTWF0aC5QSSl9ZGlzcG9zZSgpe3RoaXMuc2hhZG93LmRpc3Bvc2UoKX1jb3B5KHQpe3JldHVybiBzdXBlci5jb3B5KHQpLHRoaXMuZGlzdGFuY2U9dC5kaXN0YW5jZSx0aGlzLmRlY2F5PXQuZGVjYXksdGhpcy5zaGFkb3c9dC5zaGFkb3cuY2xvbmUoKSx0aGlzfX1JbmUucHJvdG90eXBlLmlzUG9pbnRMaWdodD0hMDtjbGFzcyBSbmUgZXh0ZW5kcyBUbmV7Y29uc3RydWN0b3IoKXtzdXBlcihuZXcgQTZ0KC01LDUsNSwtNSwuNSw1MDApKX19Um5lLnByb3RvdHlwZS5pc0RpcmVjdGlvbmFsTGlnaHRTaGFkb3c9ITA7Y2xhc3MgT25lIGV4dGVuZHMgeG5le2NvbnN0cnVjdG9yKHQsZSl7c3VwZXIodCxlKSx0aGlzLnR5cGU9IkRpcmVjdGlvbmFsTGlnaHQiLHRoaXMucG9zaXRpb24uY29weShWM3QuRGVmYXVsdFVwKSx0aGlzLnVwZGF0ZU1hdHJpeCgpLHRoaXMudGFyZ2V0PW5ldyBWM3QsdGhpcy5zaGFkb3c9bmV3IFJuZX1kaXNwb3NlKCl7dGhpcy5zaGFkb3cuZGlzcG9zZSgpfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy50YXJnZXQ9dC50YXJnZXQuY2xvbmUoKSx0aGlzLnNoYWRvdz10LnNoYWRvdy5jbG9uZSgpLHRoaXN9fU9uZS5wcm90b3R5cGUuaXNEaXJlY3Rpb25hbExpZ2h0PSEwO2NsYXNzIHpuZSBleHRlbmRzIHhuZXtjb25zdHJ1Y3Rvcih0LGUpe3N1cGVyKHQsZSksdGhpcy50eXBlPSJBbWJpZW50TGlnaHQifX16bmUucHJvdG90eXBlLmlzQW1iaWVudExpZ2h0PSEwO2NsYXNzIERuZSBleHRlbmRzIHhuZXtjb25zdHJ1Y3Rvcih0LGUsbj0xMCxpPTEwKXtzdXBlcih0LGUpLHRoaXMudHlwZT0iUmVjdEFyZWFMaWdodCIsdGhpcy53aWR0aD1uLHRoaXMuaGVpZ2h0PWl9Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLndpZHRoPXQud2lkdGgsdGhpcy5oZWlnaHQ9dC5oZWlnaHQsdGhpc310b0pTT04odCl7Y29uc3QgZT1zdXBlci50b0pTT04odCk7cmV0dXJuIGUub2JqZWN0LndpZHRoPXRoaXMud2lkdGgsZS5vYmplY3QuaGVpZ2h0PXRoaXMuaGVpZ2h0LGV9fURuZS5wcm90b3R5cGUuaXNSZWN0QXJlYUxpZ2h0PSEwO2NsYXNzIEJuZXtjb25zdHJ1Y3Rvcigpe3RoaXMuY29lZmZpY2llbnRzPVtdO2ZvcihsZXQgdD0wO3Q8OTt0KyspdGhpcy5jb2VmZmljaWVudHMucHVzaChuZXcgSDV0KX1zZXQodCl7Zm9yKGxldCBlPTA7ZTw5O2UrKyl0aGlzLmNvZWZmaWNpZW50c1tlXS5jb3B5KHRbZV0pO3JldHVybiB0aGlzfXplcm8oKXtmb3IobGV0IHQ9MDt0PDk7dCsrKXRoaXMuY29lZmZpY2llbnRzW3RdLnNldCgwLDAsMCk7cmV0dXJuIHRoaXN9Z2V0QXQodCxlKXtjb25zdCBuPXQueCxpPXQueSxyPXQueixvPXRoaXMuY29lZmZpY2llbnRzO3JldHVybiBlLmNvcHkob1swXSkubXVsdGlwbHlTY2FsYXIoLjI4MjA5NSksZS5hZGRTY2FsZWRWZWN0b3Iob1sxXSwuNDg4NjAzKmkpLGUuYWRkU2NhbGVkVmVjdG9yKG9bMl0sLjQ4ODYwMypyKSxlLmFkZFNjYWxlZFZlY3RvcihvWzNdLC40ODg2MDMqbiksZS5hZGRTY2FsZWRWZWN0b3Iob1s0XSxuKmkqMS4wOTI1NDgpLGUuYWRkU2NhbGVkVmVjdG9yKG9bNV0saSpyKjEuMDkyNTQ4KSxlLmFkZFNjYWxlZFZlY3RvcihvWzZdLC4zMTUzOTIqKDMqcipyLTEpKSxlLmFkZFNjYWxlZFZlY3RvcihvWzddLG4qcioxLjA5MjU0OCksZS5hZGRTY2FsZWRWZWN0b3Iob1s4XSwuNTQ2Mjc0KihuKm4taSppKSksZX1nZXRJcnJhZGlhbmNlQXQodCxlKXtjb25zdCBuPXQueCxpPXQueSxyPXQueixvPXRoaXMuY29lZmZpY2llbnRzO3JldHVybiBlLmNvcHkob1swXSkubXVsdGlwbHlTY2FsYXIoLjg4NjIyNyksZS5hZGRTY2FsZWRWZWN0b3Iob1sxXSwxLjAyMzMyOCppKSxlLmFkZFNjYWxlZFZlY3RvcihvWzJdLDEuMDIzMzI4KnIpLGUuYWRkU2NhbGVkVmVjdG9yKG9bM10sMS4wMjMzMjgqbiksZS5hZGRTY2FsZWRWZWN0b3Iob1s0XSwuODU4MDg2Km4qaSksZS5hZGRTY2FsZWRWZWN0b3Iob1s1XSwuODU4MDg2KmkqciksZS5hZGRTY2FsZWRWZWN0b3Iob1s2XSwuNzQzMTI1KnIqci0uMjQ3NzA4KSxlLmFkZFNjYWxlZFZlY3RvcihvWzddLC44NTgwODYqbipyKSxlLmFkZFNjYWxlZFZlY3RvcihvWzhdLC40MjkwNDMqKG4qbi1pKmkpKSxlfWFkZCh0KXtmb3IobGV0IGU9MDtlPDk7ZSsrKXRoaXMuY29lZmZpY2llbnRzW2VdLmFkZCh0LmNvZWZmaWNpZW50c1tlXSk7cmV0dXJuIHRoaXN9YWRkU2NhbGVkU0godCxlKXtmb3IobGV0IG49MDtuPDk7bisrKXRoaXMuY29lZmZpY2llbnRzW25dLmFkZFNjYWxlZFZlY3Rvcih0LmNvZWZmaWNpZW50c1tuXSxlKTtyZXR1cm4gdGhpc31zY2FsZSh0KXtmb3IobGV0IGU9MDtlPDk7ZSsrKXRoaXMuY29lZmZpY2llbnRzW2VdLm11bHRpcGx5U2NhbGFyKHQpO3JldHVybiB0aGlzfWxlcnAodCxlKXtmb3IobGV0IG49MDtuPDk7bisrKXRoaXMuY29lZmZpY2llbnRzW25dLmxlcnAodC5jb2VmZmljaWVudHNbbl0sZSk7cmV0dXJuIHRoaXN9ZXF1YWxzKHQpe2ZvcihsZXQgZT0wO2U8OTtlKyspaWYoIXRoaXMuY29lZmZpY2llbnRzW2VdLmVxdWFscyh0LmNvZWZmaWNpZW50c1tlXSkpcmV0dXJuITE7cmV0dXJuITB9Y29weSh0KXtyZXR1cm4gdGhpcy5zZXQodC5jb2VmZmljaWVudHMpfWNsb25lKCl7cmV0dXJuKG5ldyB0aGlzLmNvbnN0cnVjdG9yKS5jb3B5KHRoaXMpfWZyb21BcnJheSh0LGU9MCl7Y29uc3Qgbj10aGlzLmNvZWZmaWNpZW50cztmb3IobGV0IGk9MDtpPDk7aSsrKW5baV0uZnJvbUFycmF5KHQsZSszKmkpO3JldHVybiB0aGlzfXRvQXJyYXkodD1bXSxlPTApe2NvbnN0IG49dGhpcy5jb2VmZmljaWVudHM7Zm9yKGxldCBpPTA7aTw5O2krKyluW2ldLnRvQXJyYXkodCxlKzMqaSk7cmV0dXJuIHR9c3RhdGljIGdldEJhc2lzQXQodCxlKXtjb25zdCBuPXQueCxpPXQueSxyPXQuejtlWzBdPS4yODIwOTUsZVsxXT0uNDg4NjAzKmksZVsyXT0uNDg4NjAzKnIsZVszXT0uNDg4NjAzKm4sZVs0XT0xLjA5MjU0OCpuKmksZVs1XT0xLjA5MjU0OCppKnIsZVs2XT0uMzE1MzkyKigzKnIqci0xKSxlWzddPTEuMDkyNTQ4Km4qcixlWzhdPS41NDYyNzQqKG4qbi1pKmkpfX1CbmUucHJvdG90eXBlLmlzU3BoZXJpY2FsSGFybW9uaWNzMz0hMDtjbGFzcyBIbmUgZXh0ZW5kcyB4bmV7Y29uc3RydWN0b3IodD1uZXcgQm5lLGU9MSl7c3VwZXIodm9pZCAwLGUpLHRoaXMuc2g9dH1jb3B5KHQpe3JldHVybiBzdXBlci5jb3B5KHQpLHRoaXMuc2guY29weSh0LnNoKSx0aGlzfWZyb21KU09OKHQpe3JldHVybiB0aGlzLmludGVuc2l0eT10LmludGVuc2l0eSx0aGlzLnNoLmZyb21BcnJheSh0LnNoKSx0aGlzfXRvSlNPTih0KXtjb25zdCBlPXN1cGVyLnRvSlNPTih0KTtyZXR1cm4gZS5vYmplY3Quc2g9dGhpcy5zaC50b0FycmF5KCksZX19SG5lLnByb3RvdHlwZS5pc0xpZ2h0UHJvYmU9ITA7Y2xhc3MgRm5lIGV4dGVuZHMgaG5le2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQpLHRoaXMudGV4dHVyZXM9e319bG9hZCh0LGUsbixpKXtjb25zdCByPXRoaXMsbz1uZXcgcG5lKHIubWFuYWdlcik7by5zZXRQYXRoKHIucGF0aCksby5zZXRSZXF1ZXN0SGVhZGVyKHIucmVxdWVzdEhlYWRlciksby5zZXRXaXRoQ3JlZGVudGlhbHMoci53aXRoQ3JlZGVudGlhbHMpLG8ubG9hZCh0LChmdW5jdGlvbihuKXt0cnl7ZShyLnBhcnNlKEpTT04ucGFyc2UobikpKX1jYXRjaChlKXtpP2koZSk6Y29uc29sZS5lcnJvcihlKSxyLm1hbmFnZXIuaXRlbUVycm9yKHQpfX0pLG4saSl9cGFyc2UodCl7Y29uc3QgZT10aGlzLnRleHR1cmVzO2Z1bmN0aW9uIG4odCl7cmV0dXJuIHZvaWQgMD09PWVbdF0mJmNvbnNvbGUud2FybigiVEhSRUUuTWF0ZXJpYWxMb2FkZXI6IFVuZGVmaW5lZCB0ZXh0dXJlIix0KSxlW3RdfWNvbnN0IGk9bmV3IHFlZVt0LnR5cGVdO2lmKHZvaWQgMCE9PXQudXVpZCYmKGkudXVpZD10LnV1aWQpLHZvaWQgMCE9PXQubmFtZSYmKGkubmFtZT10Lm5hbWUpLHZvaWQgMCE9PXQuY29sb3ImJnZvaWQgMCE9PWkuY29sb3ImJmkuY29sb3Iuc2V0SGV4KHQuY29sb3IpLHZvaWQgMCE9PXQucm91Z2huZXNzJiYoaS5yb3VnaG5lc3M9dC5yb3VnaG5lc3MpLHZvaWQgMCE9PXQubWV0YWxuZXNzJiYoaS5tZXRhbG5lc3M9dC5tZXRhbG5lc3MpLHZvaWQgMCE9PXQuc2hlZW4mJihpLnNoZWVuPShuZXcgczR0KS5zZXRIZXgodC5zaGVlbikpLHZvaWQgMCE9PXQuZW1pc3NpdmUmJnZvaWQgMCE9PWkuZW1pc3NpdmUmJmkuZW1pc3NpdmUuc2V0SGV4KHQuZW1pc3NpdmUpLHZvaWQgMCE9PXQuc3BlY3VsYXImJnZvaWQgMCE9PWkuc3BlY3VsYXImJmkuc3BlY3VsYXIuc2V0SGV4KHQuc3BlY3VsYXIpLHZvaWQgMCE9PXQuc3BlY3VsYXJJbnRlbnNpdHkmJihpLnNwZWN1bGFySW50ZW5zaXR5PXQuc3BlY3VsYXJJbnRlbnNpdHkpLHZvaWQgMCE9PXQuc3BlY3VsYXJUaW50JiZ2b2lkIDAhPT1pLnNwZWN1bGFyVGludCYmaS5zcGVjdWxhclRpbnQuc2V0SGV4KHQuc3BlY3VsYXJUaW50KSx2b2lkIDAhPT10LnNoaW5pbmVzcyYmKGkuc2hpbmluZXNzPXQuc2hpbmluZXNzKSx2b2lkIDAhPT10LmNsZWFyY29hdCYmKGkuY2xlYXJjb2F0PXQuY2xlYXJjb2F0KSx2b2lkIDAhPT10LmNsZWFyY29hdFJvdWdobmVzcyYmKGkuY2xlYXJjb2F0Um91Z2huZXNzPXQuY2xlYXJjb2F0Um91Z2huZXNzKSx2b2lkIDAhPT10LnRyYW5zbWlzc2lvbiYmKGkudHJhbnNtaXNzaW9uPXQudHJhbnNtaXNzaW9uKSx2b2lkIDAhPT10LnRoaWNrbmVzcyYmKGkudGhpY2tuZXNzPXQudGhpY2tuZXNzKSx2b2lkIDAhPT10LmF0dGVudWF0aW9uRGlzdGFuY2UmJihpLmF0dGVudWF0aW9uRGlzdGFuY2U9dC5hdHRlbnVhdGlvbkRpc3RhbmNlKSx2b2lkIDAhPT10LmF0dGVudWF0aW9uVGludCYmdm9pZCAwIT09aS5hdHRlbnVhdGlvblRpbnQmJmkuYXR0ZW51YXRpb25UaW50LnNldEhleCh0LmF0dGVudWF0aW9uVGludCksdm9pZCAwIT09dC5mb2cmJihpLmZvZz10LmZvZyksdm9pZCAwIT09dC5mbGF0U2hhZGluZyYmKGkuZmxhdFNoYWRpbmc9dC5mbGF0U2hhZGluZyksdm9pZCAwIT09dC5ibGVuZGluZyYmKGkuYmxlbmRpbmc9dC5ibGVuZGluZyksdm9pZCAwIT09dC5jb21iaW5lJiYoaS5jb21iaW5lPXQuY29tYmluZSksdm9pZCAwIT09dC5zaWRlJiYoaS5zaWRlPXQuc2lkZSksdm9pZCAwIT09dC5zaGFkb3dTaWRlJiYoaS5zaGFkb3dTaWRlPXQuc2hhZG93U2lkZSksdm9pZCAwIT09dC5vcGFjaXR5JiYoaS5vcGFjaXR5PXQub3BhY2l0eSksdm9pZCAwIT09dC50cmFuc3BhcmVudCYmKGkudHJhbnNwYXJlbnQ9dC50cmFuc3BhcmVudCksdm9pZCAwIT09dC5hbHBoYVRlc3QmJihpLmFscGhhVGVzdD10LmFscGhhVGVzdCksdm9pZCAwIT09dC5kZXB0aFRlc3QmJihpLmRlcHRoVGVzdD10LmRlcHRoVGVzdCksdm9pZCAwIT09dC5kZXB0aFdyaXRlJiYoaS5kZXB0aFdyaXRlPXQuZGVwdGhXcml0ZSksdm9pZCAwIT09dC5jb2xvcldyaXRlJiYoaS5jb2xvcldyaXRlPXQuY29sb3JXcml0ZSksdm9pZCAwIT09dC5zdGVuY2lsV3JpdGUmJihpLnN0ZW5jaWxXcml0ZT10LnN0ZW5jaWxXcml0ZSksdm9pZCAwIT09dC5zdGVuY2lsV3JpdGVNYXNrJiYoaS5zdGVuY2lsV3JpdGVNYXNrPXQuc3RlbmNpbFdyaXRlTWFzayksdm9pZCAwIT09dC5zdGVuY2lsRnVuYyYmKGkuc3RlbmNpbEZ1bmM9dC5zdGVuY2lsRnVuYyksdm9pZCAwIT09dC5zdGVuY2lsUmVmJiYoaS5zdGVuY2lsUmVmPXQuc3RlbmNpbFJlZiksdm9pZCAwIT09dC5zdGVuY2lsRnVuY01hc2smJihpLnN0ZW5jaWxGdW5jTWFzaz10LnN0ZW5jaWxGdW5jTWFzayksdm9pZCAwIT09dC5zdGVuY2lsRmFpbCYmKGkuc3RlbmNpbEZhaWw9dC5zdGVuY2lsRmFpbCksdm9pZCAwIT09dC5zdGVuY2lsWkZhaWwmJihpLnN0ZW5jaWxaRmFpbD10LnN0ZW5jaWxaRmFpbCksdm9pZCAwIT09dC5zdGVuY2lsWlBhc3MmJihpLnN0ZW5jaWxaUGFzcz10LnN0ZW5jaWxaUGFzcyksdm9pZCAwIT09dC53aXJlZnJhbWUmJihpLndpcmVmcmFtZT10LndpcmVmcmFtZSksdm9pZCAwIT09dC53aXJlZnJhbWVMaW5ld2lkdGgmJihpLndpcmVmcmFtZUxpbmV3aWR0aD10LndpcmVmcmFtZUxpbmV3aWR0aCksdm9pZCAwIT09dC53aXJlZnJhbWVMaW5lY2FwJiYoaS53aXJlZnJhbWVMaW5lY2FwPXQud2lyZWZyYW1lTGluZWNhcCksdm9pZCAwIT09dC53aXJlZnJhbWVMaW5lam9pbiYmKGkud2lyZWZyYW1lTGluZWpvaW49dC53aXJlZnJhbWVMaW5lam9pbiksdm9pZCAwIT09dC5yb3RhdGlvbiYmKGkucm90YXRpb249dC5yb3RhdGlvbiksMSE9PXQubGluZXdpZHRoJiYoaS5saW5ld2lkdGg9dC5saW5ld2lkdGgpLHZvaWQgMCE9PXQuZGFzaFNpemUmJihpLmRhc2hTaXplPXQuZGFzaFNpemUpLHZvaWQgMCE9PXQuZ2FwU2l6ZSYmKGkuZ2FwU2l6ZT10LmdhcFNpemUpLHZvaWQgMCE9PXQuc2NhbGUmJihpLnNjYWxlPXQuc2NhbGUpLHZvaWQgMCE9PXQucG9seWdvbk9mZnNldCYmKGkucG9seWdvbk9mZnNldD10LnBvbHlnb25PZmZzZXQpLHZvaWQgMCE9PXQucG9seWdvbk9mZnNldEZhY3RvciYmKGkucG9seWdvbk9mZnNldEZhY3Rvcj10LnBvbHlnb25PZmZzZXRGYWN0b3IpLHZvaWQgMCE9PXQucG9seWdvbk9mZnNldFVuaXRzJiYoaS5wb2x5Z29uT2Zmc2V0VW5pdHM9dC5wb2x5Z29uT2Zmc2V0VW5pdHMpLHZvaWQgMCE9PXQuZGl0aGVyaW5nJiYoaS5kaXRoZXJpbmc9dC5kaXRoZXJpbmcpLHZvaWQgMCE9PXQuYWxwaGFUb0NvdmVyYWdlJiYoaS5hbHBoYVRvQ292ZXJhZ2U9dC5hbHBoYVRvQ292ZXJhZ2UpLHZvaWQgMCE9PXQucHJlbXVsdGlwbGllZEFscGhhJiYoaS5wcmVtdWx0aXBsaWVkQWxwaGE9dC5wcmVtdWx0aXBsaWVkQWxwaGEpLHZvaWQgMCE9PXQudmlzaWJsZSYmKGkudmlzaWJsZT10LnZpc2libGUpLHZvaWQgMCE9PXQudG9uZU1hcHBlZCYmKGkudG9uZU1hcHBlZD10LnRvbmVNYXBwZWQpLHZvaWQgMCE9PXQudXNlckRhdGEmJihpLnVzZXJEYXRhPXQudXNlckRhdGEpLHZvaWQgMCE9PXQudmVydGV4Q29sb3JzJiYoaS52ZXJ0ZXhDb2xvcnM9Im51bWJlciI9PXR5cGVvZiB0LnZlcnRleENvbG9ycz90LnZlcnRleENvbG9ycz4wOnQudmVydGV4Q29sb3JzKSx2b2lkIDAhPT10LnVuaWZvcm1zKWZvcihjb25zdCBlIGluIHQudW5pZm9ybXMpe2NvbnN0IHI9dC51bmlmb3Jtc1tlXTtzd2l0Y2goaS51bmlmb3Jtc1tlXT17fSxyLnR5cGUpe2Nhc2UidCI6aS51bmlmb3Jtc1tlXS52YWx1ZT1uKHIudmFsdWUpO2JyZWFrO2Nhc2UiYyI6aS51bmlmb3Jtc1tlXS52YWx1ZT0obmV3IHM0dCkuc2V0SGV4KHIudmFsdWUpO2JyZWFrO2Nhc2UidjIiOmkudW5pZm9ybXNbZV0udmFsdWU9KG5ldyBDNXQpLmZyb21BcnJheShyLnZhbHVlKTticmVhaztjYXNlInYzIjppLnVuaWZvcm1zW2VdLnZhbHVlPShuZXcgSDV0KS5mcm9tQXJyYXkoci52YWx1ZSk7YnJlYWs7Y2FzZSJ2NCI6aS51bmlmb3Jtc1tlXS52YWx1ZT0obmV3IFI1dCkuZnJvbUFycmF5KHIudmFsdWUpO2JyZWFrO2Nhc2UibTMiOmkudW5pZm9ybXNbZV0udmFsdWU9KG5ldyBBNXQpLmZyb21BcnJheShyLnZhbHVlKTticmVhaztjYXNlIm00IjppLnVuaWZvcm1zW2VdLnZhbHVlPShuZXcgZzN0KS5mcm9tQXJyYXkoci52YWx1ZSk7YnJlYWs7ZGVmYXVsdDppLnVuaWZvcm1zW2VdLnZhbHVlPXIudmFsdWV9fWlmKHZvaWQgMCE9PXQuZGVmaW5lcyYmKGkuZGVmaW5lcz10LmRlZmluZXMpLHZvaWQgMCE9PXQudmVydGV4U2hhZGVyJiYoaS52ZXJ0ZXhTaGFkZXI9dC52ZXJ0ZXhTaGFkZXIpLHZvaWQgMCE9PXQuZnJhZ21lbnRTaGFkZXImJihpLmZyYWdtZW50U2hhZGVyPXQuZnJhZ21lbnRTaGFkZXIpLHZvaWQgMCE9PXQuZXh0ZW5zaW9ucylmb3IoY29uc3QgZSBpbiB0LmV4dGVuc2lvbnMpaS5leHRlbnNpb25zW2VdPXQuZXh0ZW5zaW9uc1tlXTtpZih2b2lkIDAhPT10LnNoYWRpbmcmJihpLmZsYXRTaGFkaW5nPTE9PT10LnNoYWRpbmcpLHZvaWQgMCE9PXQuc2l6ZSYmKGkuc2l6ZT10LnNpemUpLHZvaWQgMCE9PXQuc2l6ZUF0dGVudWF0aW9uJiYoaS5zaXplQXR0ZW51YXRpb249dC5zaXplQXR0ZW51YXRpb24pLHZvaWQgMCE9PXQubWFwJiYoaS5tYXA9bih0Lm1hcCkpLHZvaWQgMCE9PXQubWF0Y2FwJiYoaS5tYXRjYXA9bih0Lm1hdGNhcCkpLHZvaWQgMCE9PXQuYWxwaGFNYXAmJihpLmFscGhhTWFwPW4odC5hbHBoYU1hcCkpLHZvaWQgMCE9PXQuYnVtcE1hcCYmKGkuYnVtcE1hcD1uKHQuYnVtcE1hcCkpLHZvaWQgMCE9PXQuYnVtcFNjYWxlJiYoaS5idW1wU2NhbGU9dC5idW1wU2NhbGUpLHZvaWQgMCE9PXQubm9ybWFsTWFwJiYoaS5ub3JtYWxNYXA9bih0Lm5vcm1hbE1hcCkpLHZvaWQgMCE9PXQubm9ybWFsTWFwVHlwZSYmKGkubm9ybWFsTWFwVHlwZT10Lm5vcm1hbE1hcFR5cGUpLHZvaWQgMCE9PXQubm9ybWFsU2NhbGUpe2xldCBlPXQubm9ybWFsU2NhbGU7ITE9PT1BcnJheS5pc0FycmF5KGUpJiYoZT1bZSxlXSksaS5ub3JtYWxTY2FsZT0obmV3IEM1dCkuZnJvbUFycmF5KGUpfXJldHVybiB2b2lkIDAhPT10LmRpc3BsYWNlbWVudE1hcCYmKGkuZGlzcGxhY2VtZW50TWFwPW4odC5kaXNwbGFjZW1lbnRNYXApKSx2b2lkIDAhPT10LmRpc3BsYWNlbWVudFNjYWxlJiYoaS5kaXNwbGFjZW1lbnRTY2FsZT10LmRpc3BsYWNlbWVudFNjYWxlKSx2b2lkIDAhPT10LmRpc3BsYWNlbWVudEJpYXMmJihpLmRpc3BsYWNlbWVudEJpYXM9dC5kaXNwbGFjZW1lbnRCaWFzKSx2b2lkIDAhPT10LnJvdWdobmVzc01hcCYmKGkucm91Z2huZXNzTWFwPW4odC5yb3VnaG5lc3NNYXApKSx2b2lkIDAhPT10Lm1ldGFsbmVzc01hcCYmKGkubWV0YWxuZXNzTWFwPW4odC5tZXRhbG5lc3NNYXApKSx2b2lkIDAhPT10LmVtaXNzaXZlTWFwJiYoaS5lbWlzc2l2ZU1hcD1uKHQuZW1pc3NpdmVNYXApKSx2b2lkIDAhPT10LmVtaXNzaXZlSW50ZW5zaXR5JiYoaS5lbWlzc2l2ZUludGVuc2l0eT10LmVtaXNzaXZlSW50ZW5zaXR5KSx2b2lkIDAhPT10LnNwZWN1bGFyTWFwJiYoaS5zcGVjdWxhck1hcD1uKHQuc3BlY3VsYXJNYXApKSx2b2lkIDAhPT10LnNwZWN1bGFySW50ZW5zaXR5TWFwJiYoaS5zcGVjdWxhckludGVuc2l0eU1hcD1uKHQuc3BlY3VsYXJJbnRlbnNpdHlNYXApKSx2b2lkIDAhPT10LnNwZWN1bGFyVGludE1hcCYmKGkuc3BlY3VsYXJUaW50TWFwPW4odC5zcGVjdWxhclRpbnRNYXApKSx2b2lkIDAhPT10LmVudk1hcCYmKGkuZW52TWFwPW4odC5lbnZNYXApKSx2b2lkIDAhPT10LmVudk1hcEludGVuc2l0eSYmKGkuZW52TWFwSW50ZW5zaXR5PXQuZW52TWFwSW50ZW5zaXR5KSx2b2lkIDAhPT10LnJlZmxlY3Rpdml0eSYmKGkucmVmbGVjdGl2aXR5PXQucmVmbGVjdGl2aXR5KSx2b2lkIDAhPT10LnJlZnJhY3Rpb25SYXRpbyYmKGkucmVmcmFjdGlvblJhdGlvPXQucmVmcmFjdGlvblJhdGlvKSx2b2lkIDAhPT10LmxpZ2h0TWFwJiYoaS5saWdodE1hcD1uKHQubGlnaHRNYXApKSx2b2lkIDAhPT10LmxpZ2h0TWFwSW50ZW5zaXR5JiYoaS5saWdodE1hcEludGVuc2l0eT10LmxpZ2h0TWFwSW50ZW5zaXR5KSx2b2lkIDAhPT10LmFvTWFwJiYoaS5hb01hcD1uKHQuYW9NYXApKSx2b2lkIDAhPT10LmFvTWFwSW50ZW5zaXR5JiYoaS5hb01hcEludGVuc2l0eT10LmFvTWFwSW50ZW5zaXR5KSx2b2lkIDAhPT10LmdyYWRpZW50TWFwJiYoaS5ncmFkaWVudE1hcD1uKHQuZ3JhZGllbnRNYXApKSx2b2lkIDAhPT10LmNsZWFyY29hdE1hcCYmKGkuY2xlYXJjb2F0TWFwPW4odC5jbGVhcmNvYXRNYXApKSx2b2lkIDAhPT10LmNsZWFyY29hdFJvdWdobmVzc01hcCYmKGkuY2xlYXJjb2F0Um91Z2huZXNzTWFwPW4odC5jbGVhcmNvYXRSb3VnaG5lc3NNYXApKSx2b2lkIDAhPT10LmNsZWFyY29hdE5vcm1hbE1hcCYmKGkuY2xlYXJjb2F0Tm9ybWFsTWFwPW4odC5jbGVhcmNvYXROb3JtYWxNYXApKSx2b2lkIDAhPT10LmNsZWFyY29hdE5vcm1hbFNjYWxlJiYoaS5jbGVhcmNvYXROb3JtYWxTY2FsZT0obmV3IEM1dCkuZnJvbUFycmF5KHQuY2xlYXJjb2F0Tm9ybWFsU2NhbGUpKSx2b2lkIDAhPT10LnRyYW5zbWlzc2lvbk1hcCYmKGkudHJhbnNtaXNzaW9uTWFwPW4odC50cmFuc21pc3Npb25NYXApKSx2b2lkIDAhPT10LnRoaWNrbmVzc01hcCYmKGkudGhpY2tuZXNzTWFwPW4odC50aGlja25lc3NNYXApKSxpfXNldFRleHR1cmVzKHQpe3JldHVybiB0aGlzLnRleHR1cmVzPXQsdGhpc319Y2xhc3MgVm5le3N0YXRpYyBkZWNvZGVUZXh0KHQpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgVGV4dERlY29kZXIpcmV0dXJuKG5ldyBUZXh0RGVjb2RlcikuZGVjb2RlKHQpO2xldCBlPSIiO2ZvcihsZXQgbj0wLGk9dC5sZW5ndGg7bjxpO24rKyllKz1TdHJpbmcuZnJvbUNoYXJDb2RlKHRbbl0pO3RyeXtyZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KGVzY2FwZShlKSl9Y2F0Y2godCl7cmV0dXJuIGV9fXN0YXRpYyBleHRyYWN0VXJsQmFzZSh0KXtjb25zdCBlPXQubGFzdEluZGV4T2YoIi8iKTtyZXR1cm4tMT09PWU/Ii4vIjp0LnN1YnN0cigwLGUrMSl9fWNsYXNzIFVuZSBleHRlbmRzIE40dHtjb25zdHJ1Y3Rvcigpe3N1cGVyKCksdGhpcy50eXBlPSJJbnN0YW5jZWRCdWZmZXJHZW9tZXRyeSIsdGhpcy5pbnN0YW5jZUNvdW50PTEvMH1jb3B5KHQpe3JldHVybiBzdXBlci5jb3B5KHQpLHRoaXMuaW5zdGFuY2VDb3VudD10Lmluc3RhbmNlQ291bnQsdGhpc31jbG9uZSgpe3JldHVybihuZXcgdGhpcy5jb25zdHJ1Y3RvcikuY29weSh0aGlzKX10b0pTT04oKXtjb25zdCB0PXN1cGVyLnRvSlNPTih0aGlzKTtyZXR1cm4gdC5pbnN0YW5jZUNvdW50PXRoaXMuaW5zdGFuY2VDb3VudCx0LmlzSW5zdGFuY2VkQnVmZmVyR2VvbWV0cnk9ITAsdH19VW5lLnByb3RvdHlwZS5pc0luc3RhbmNlZEJ1ZmZlckdlb21ldHJ5PSEwO2NsYXNzIGpuZSBleHRlbmRzIGg0dHtjb25zdHJ1Y3Rvcih0LGUsbixpPTEpeyJudW1iZXIiPT10eXBlb2YgbiYmKGk9bixuPSExLGNvbnNvbGUuZXJyb3IoIlRIUkVFLkluc3RhbmNlZEJ1ZmZlckF0dHJpYnV0ZTogVGhlIGNvbnN0cnVjdG9yIG5vdyBleHBlY3RzIG5vcm1hbGl6ZWQgYXMgdGhlIHRoaXJkIGFyZ3VtZW50LiIpKSxzdXBlcih0LGUsbiksdGhpcy5tZXNoUGVyQXR0cmlidXRlPWl9Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLm1lc2hQZXJBdHRyaWJ1dGU9dC5tZXNoUGVyQXR0cmlidXRlLHRoaXN9dG9KU09OKCl7Y29uc3QgdD1zdXBlci50b0pTT04oKTtyZXR1cm4gdC5tZXNoUGVyQXR0cmlidXRlPXRoaXMubWVzaFBlckF0dHJpYnV0ZSx0LmlzSW5zdGFuY2VkQnVmZmVyQXR0cmlidXRlPSEwLHR9fWpuZS5wcm90b3R5cGUuaXNJbnN0YW5jZWRCdWZmZXJBdHRyaWJ1dGU9ITA7Y2xhc3MgR25lIGV4dGVuZHMgaG5le2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQpfWxvYWQodCxlLG4saSl7Y29uc3Qgcj10aGlzLG89bmV3IHBuZShyLm1hbmFnZXIpO28uc2V0UGF0aChyLnBhdGgpLG8uc2V0UmVxdWVzdEhlYWRlcihyLnJlcXVlc3RIZWFkZXIpLG8uc2V0V2l0aENyZWRlbnRpYWxzKHIud2l0aENyZWRlbnRpYWxzKSxvLmxvYWQodCwoZnVuY3Rpb24obil7dHJ5e2Uoci5wYXJzZShKU09OLnBhcnNlKG4pKSl9Y2F0Y2goZSl7aT9pKGUpOmNvbnNvbGUuZXJyb3IoZSksci5tYW5hZ2VyLml0ZW1FcnJvcih0KX19KSxuLGkpfXBhcnNlKHQpe2NvbnN0IGU9e30sbj17fTtmdW5jdGlvbiBpKHQsaSl7aWYodm9pZCAwIT09ZVtpXSlyZXR1cm4gZVtpXTtjb25zdCByPXQuaW50ZXJsZWF2ZWRCdWZmZXJzW2ldLG89KGZ1bmN0aW9uIGEodCxlKXtpZih2b2lkIDAhPT1uW2VdKXJldHVybiBuW2VdO2NvbnN0IGk9bmV3IFVpbnQzMkFycmF5KHQuYXJyYXlCdWZmZXJzW2VdKS5idWZmZXI7cmV0dXJuIG5bZV09aSxpfSkodCxyLmJ1ZmZlcikscz1NNHQoci50eXBlLG8pLGw9bmV3IHU3dChzLHIuc3RyaWRlKTtyZXR1cm4gbC51dWlkPXIudXVpZCxlW2ldPWwsbH1jb25zdCByPXQuaXNJbnN0YW5jZWRCdWZmZXJHZW9tZXRyeT9uZXcgVW5lOm5ldyBONHQsbz10LmRhdGEuaW5kZXg7aWYodm9pZCAwIT09byl7Y29uc3QgdD1NNHQoby50eXBlLG8uYXJyYXkpO3Iuc2V0SW5kZXgobmV3IGg0dCh0LDEpKX1jb25zdCBhPXQuZGF0YS5hdHRyaWJ1dGVzO2Zvcihjb25zdCBlIGluIGEpe2NvbnN0IG49YVtlXTtsZXQgbztpZihuLmlzSW50ZXJsZWF2ZWRCdWZmZXJBdHRyaWJ1dGUpe2NvbnN0IGU9aSh0LmRhdGEsbi5kYXRhKTtvPW5ldyBkN3QoZSxuLml0ZW1TaXplLG4ub2Zmc2V0LG4ubm9ybWFsaXplZCl9ZWxzZXtjb25zdCB0PU00dChuLnR5cGUsbi5hcnJheSk7bz1uZXcobi5pc0luc3RhbmNlZEJ1ZmZlckF0dHJpYnV0ZT9qbmU6aDR0KSh0LG4uaXRlbVNpemUsbi5ub3JtYWxpemVkKX12b2lkIDAhPT1uLm5hbWUmJihvLm5hbWU9bi5uYW1lKSx2b2lkIDAhPT1uLnVzYWdlJiZvLnNldFVzYWdlKG4udXNhZ2UpLHZvaWQgMCE9PW4udXBkYXRlUmFuZ2UmJihvLnVwZGF0ZVJhbmdlLm9mZnNldD1uLnVwZGF0ZVJhbmdlLm9mZnNldCxvLnVwZGF0ZVJhbmdlLmNvdW50PW4udXBkYXRlUmFuZ2UuY291bnQpLHIuc2V0QXR0cmlidXRlKGUsbyl9Y29uc3Qgcz10LmRhdGEubW9ycGhBdHRyaWJ1dGVzO2lmKHMpZm9yKGNvbnN0IGUgaW4gcyl7Y29uc3Qgbj1zW2VdLG89W107Zm9yKGxldCBlPTAscj1uLmxlbmd0aDtlPHI7ZSsrKXtjb25zdCByPW5bZV07bGV0IGE7aWYoci5pc0ludGVybGVhdmVkQnVmZmVyQXR0cmlidXRlKXtjb25zdCBlPWkodC5kYXRhLHIuZGF0YSk7YT1uZXcgZDd0KGUsci5pdGVtU2l6ZSxyLm9mZnNldCxyLm5vcm1hbGl6ZWQpfWVsc2V7Y29uc3QgdD1NNHQoci50eXBlLHIuYXJyYXkpO2E9bmV3IGg0dCh0LHIuaXRlbVNpemUsci5ub3JtYWxpemVkKX12b2lkIDAhPT1yLm5hbWUmJihhLm5hbWU9ci5uYW1lKSxvLnB1c2goYSl9ci5tb3JwaEF0dHJpYnV0ZXNbZV09b310LmRhdGEubW9ycGhUYXJnZXRzUmVsYXRpdmUmJihyLm1vcnBoVGFyZ2V0c1JlbGF0aXZlPSEwKTtjb25zdCBsPXQuZGF0YS5ncm91cHN8fHQuZGF0YS5kcmF3Y2FsbHN8fHQuZGF0YS5vZmZzZXRzO2lmKHZvaWQgMCE9PWwpZm9yKGxldCB0PTAsZT1sLmxlbmd0aDt0IT09ZTsrK3Qpe2NvbnN0IGU9bFt0XTtyLmFkZEdyb3VwKGUuc3RhcnQsZS5jb3VudCxlLm1hdGVyaWFsSW5kZXgpfWNvbnN0IGM9dC5kYXRhLmJvdW5kaW5nU3BoZXJlO2lmKHZvaWQgMCE9PWMpe2NvbnN0IHQ9bmV3IEg1dDt2b2lkIDAhPT1jLmNlbnRlciYmdC5mcm9tQXJyYXkoYy5jZW50ZXIpLHIuYm91bmRpbmdTcGhlcmU9bmV3IHMzdCh0LGMucmFkaXVzKX1yZXR1cm4gdC5uYW1lJiYoci5uYW1lPXQubmFtZSksdC51c2VyRGF0YSYmKHIudXNlckRhdGE9dC51c2VyRGF0YSkscn19Y29uc3QgV25lPXtVVk1hcHBpbmc6dDJ0LEN1YmVSZWZsZWN0aW9uTWFwcGluZzplMnQsQ3ViZVJlZnJhY3Rpb25NYXBwaW5nOm4ydCxFcXVpcmVjdGFuZ3VsYXJSZWZsZWN0aW9uTWFwcGluZzppMnQsRXF1aXJlY3Rhbmd1bGFyUmVmcmFjdGlvbk1hcHBpbmc6cjJ0LEN1YmVVVlJlZmxlY3Rpb25NYXBwaW5nOm8ydCxDdWJlVVZSZWZyYWN0aW9uTWFwcGluZzphMnR9LHFuZT17UmVwZWF0V3JhcHBpbmc6czJ0LENsYW1wVG9FZGdlV3JhcHBpbmc6bDJ0LE1pcnJvcmVkUmVwZWF0V3JhcHBpbmc6YzJ0fSxZbmU9e05lYXJlc3RGaWx0ZXI6dTJ0LE5lYXJlc3RNaXBtYXBOZWFyZXN0RmlsdGVyOmgydCxOZWFyZXN0TWlwbWFwTGluZWFyRmlsdGVyOmQydCxMaW5lYXJGaWx0ZXI6cDJ0LExpbmVhck1pcG1hcE5lYXJlc3RGaWx0ZXI6ZjJ0LExpbmVhck1pcG1hcExpbmVhckZpbHRlcjptMnR9O2NsYXNzIFhuZSBleHRlbmRzIGhuZXtjb25zdHJ1Y3Rvcih0KXtzdXBlcih0KSwidW5kZWZpbmVkIj09dHlwZW9mIGNyZWF0ZUltYWdlQml0bWFwJiZjb25zb2xlLndhcm4oIlRIUkVFLkltYWdlQml0bWFwTG9hZGVyOiBjcmVhdGVJbWFnZUJpdG1hcCgpIG5vdCBzdXBwb3J0ZWQuIiksInVuZGVmaW5lZCI9PXR5cGVvZiBmZXRjaCYmY29uc29sZS53YXJuKCJUSFJFRS5JbWFnZUJpdG1hcExvYWRlcjogZmV0Y2goKSBub3Qgc3VwcG9ydGVkLiIpLHRoaXMub3B0aW9ucz17cHJlbXVsdGlwbHlBbHBoYToibm9uZSJ9fXNldE9wdGlvbnModCl7cmV0dXJuIHRoaXMub3B0aW9ucz10LHRoaXN9bG9hZCh0LGUsbixpKXt2b2lkIDA9PT10JiYodD0iIiksdm9pZCAwIT09dGhpcy5wYXRoJiYodD10aGlzLnBhdGgrdCksdD10aGlzLm1hbmFnZXIucmVzb2x2ZVVSTCh0KTtjb25zdCByPXRoaXMsbz1sbmUuZ2V0KHQpO2lmKHZvaWQgMCE9PW8pcmV0dXJuIHIubWFuYWdlci5pdGVtU3RhcnQodCksc2V0VGltZW91dCgoZnVuY3Rpb24oKXtlJiZlKG8pLHIubWFuYWdlci5pdGVtRW5kKHQpfSksMCksbztjb25zdCBhPXt9O2EuY3JlZGVudGlhbHM9ImFub255bW91cyI9PT10aGlzLmNyb3NzT3JpZ2luPyJzYW1lLW9yaWdpbiI6ImluY2x1ZGUiLGEuaGVhZGVycz10aGlzLnJlcXVlc3RIZWFkZXIsZmV0Y2godCxhKS50aGVuKChmdW5jdGlvbih0KXtyZXR1cm4gdC5ibG9iKCl9KSkudGhlbigoZnVuY3Rpb24odCl7cmV0dXJuIGNyZWF0ZUltYWdlQml0bWFwKHQsT2JqZWN0LmFzc2lnbihyLm9wdGlvbnMse2NvbG9yU3BhY2VDb252ZXJzaW9uOiJub25lIn0pKX0pKS50aGVuKChmdW5jdGlvbihuKXtsbmUuYWRkKHQsbiksZSYmZShuKSxyLm1hbmFnZXIuaXRlbUVuZCh0KX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7aSYmaShlKSxyLm1hbmFnZXIuaXRlbUVycm9yKHQpLHIubWFuYWdlci5pdGVtRW5kKHQpfSkpLHIubWFuYWdlci5pdGVtU3RhcnQodCl9fVhuZS5wcm90b3R5cGUuaXNJbWFnZUJpdG1hcExvYWRlcj0hMDtjbGFzcyAkbmV7Y29uc3RydWN0b3IoKXt0aGlzLnR5cGU9IlNoYXBlUGF0aCIsdGhpcy5jb2xvcj1uZXcgczR0LHRoaXMuc3ViUGF0aHM9W10sdGhpcy5jdXJyZW50UGF0aD1udWxsfW1vdmVUbyh0LGUpe3JldHVybiB0aGlzLmN1cnJlbnRQYXRoPW5ldyB2bmUsdGhpcy5zdWJQYXRocy5wdXNoKHRoaXMuY3VycmVudFBhdGgpLHRoaXMuY3VycmVudFBhdGgubW92ZVRvKHQsZSksdGhpc31saW5lVG8odCxlKXtyZXR1cm4gdGhpcy5jdXJyZW50UGF0aC5saW5lVG8odCxlKSx0aGlzfXF1YWRyYXRpY0N1cnZlVG8odCxlLG4saSl7cmV0dXJuIHRoaXMuY3VycmVudFBhdGgucXVhZHJhdGljQ3VydmVUbyh0LGUsbixpKSx0aGlzfWJlemllckN1cnZlVG8odCxlLG4saSxyLG8pe3JldHVybiB0aGlzLmN1cnJlbnRQYXRoLmJlemllckN1cnZlVG8odCxlLG4saSxyLG8pLHRoaXN9c3BsaW5lVGhydSh0KXtyZXR1cm4gdGhpcy5jdXJyZW50UGF0aC5zcGxpbmVUaHJ1KHQpLHRoaXN9dG9TaGFwZXModCxlKXtmdW5jdGlvbiBuKHQpe2NvbnN0IGU9W107Zm9yKGxldCBuPTAsaT10Lmxlbmd0aDtuPGk7bisrKXtjb25zdCBpPXRbbl0scj1uZXcgYm5lO3IuY3VydmVzPWkuY3VydmVzLGUucHVzaChyKX1yZXR1cm4gZX1mdW5jdGlvbiBpKHQsZSl7Y29uc3Qgbj1lLmxlbmd0aDtsZXQgaT0hMTtmb3IobGV0IHI9bi0xLG89MDtvPG47cj1vKyspe2xldCBuPWVbcl0sYT1lW29dLHM9YS54LW4ueCxsPWEueS1uLnk7aWYoTWF0aC5hYnMobCk+TnVtYmVyLkVQU0lMT04pe2lmKGw8MCYmKG49ZVtvXSxzPS1zLGE9ZVtyXSxsPS1sKSx0Lnk8bi55fHx0Lnk+YS55KWNvbnRpbnVlO2lmKHQueT09PW4ueSl7aWYodC54PT09bi54KXJldHVybiEwfWVsc2V7Y29uc3QgZT1sKih0Lngtbi54KS1zKih0Lnktbi55KTtpZigwPT09ZSlyZXR1cm4hMDtpZihlPDApY29udGludWU7aT0haX19ZWxzZXtpZih0LnkhPT1uLnkpY29udGludWU7aWYoYS54PD10LngmJnQueDw9bi54fHxuLng8PXQueCYmdC54PD1hLngpcmV0dXJuITB9fXJldHVybiBpfWNvbnN0IHI9X2VlLmlzQ2xvY2tXaXNlLG89dGhpcy5zdWJQYXRocztpZigwPT09by5sZW5ndGgpcmV0dXJuW107aWYoITA9PT1lKXJldHVybiBuKG8pO2xldCBhLHMsbDtjb25zdCBjPVtdO2lmKDE9PT1vLmxlbmd0aClyZXR1cm4gcz1vWzBdLGw9bmV3IGJuZSxsLmN1cnZlcz1zLmN1cnZlcyxjLnB1c2gobCksYztsZXQgdT0hcihvWzBdLmdldFBvaW50cygpKTt1PXQ/IXU6dTtjb25zdCBoPVtdLGQ9W107bGV0IHAsZixtPVtdLGc9MDtkW2ddPXZvaWQgMCxtW2ddPVtdO2ZvcihsZXQgZT0wLG49by5sZW5ndGg7ZTxuO2UrKylzPW9bZV0scD1zLmdldFBvaW50cygpLGE9cihwKSxhPXQ/IWE6YSxhPyghdSYmZFtnXSYmZysrLGRbZ109e3M6bmV3IGJuZSxwOnB9LGRbZ10ucy5jdXJ2ZXM9cy5jdXJ2ZXMsdSYmZysrLG1bZ109W10pOm1bZ10ucHVzaCh7aDpzLHA6cFswXX0pO2lmKCFkWzBdKXJldHVybiBuKG8pO2lmKGQubGVuZ3RoPjEpe2xldCB0PSExO2NvbnN0IGU9W107Zm9yKGxldCB0PTAsZT1kLmxlbmd0aDt0PGU7dCsrKWhbdF09W107Zm9yKGxldCBuPTAscj1kLmxlbmd0aDtuPHI7bisrKXtjb25zdCByPW1bbl07Zm9yKGxldCBvPTA7bzxyLmxlbmd0aDtvKyspe2NvbnN0IGE9cltvXTtsZXQgcz0hMDtmb3IobGV0IHI9MDtyPGQubGVuZ3RoO3IrKylpKGEucCxkW3JdLnApJiYobiE9PXImJmUucHVzaCh7ZnJvbXM6bix0b3M6cixob2xlOm99KSxzPyhzPSExLGhbcl0ucHVzaChhKSk6dD0hMCk7cyYmaFtuXS5wdXNoKGEpfX1lLmxlbmd0aD4wJiYodHx8KG09aCkpfWZvcihsZXQgdD0wLGU9ZC5sZW5ndGg7dDxlO3QrKyl7bD1kW3RdLnMsYy5wdXNoKGwpLGY9bVt0XTtmb3IobGV0IHQ9MCxlPWYubGVuZ3RoO3Q8ZTt0KyspbC5ob2xlcy5wdXNoKGZbdF0uaCl9cmV0dXJuIGN9fWNsYXNzIEtuZXtjb25zdHJ1Y3Rvcih0KXt0aGlzLnR5cGU9IkZvbnQiLHRoaXMuZGF0YT10fWdlbmVyYXRlU2hhcGVzKHQsZT0xMDApe2NvbnN0IG49W10saT0oZnVuY3Rpb24gcih0LGUsbil7Y29uc3QgaT1BcnJheS5mcm9tKHQpLHI9ZS9uLnJlc29sdXRpb24sbz0obi5ib3VuZGluZ0JveC55TWF4LW4uYm91bmRpbmdCb3gueU1pbituLnVuZGVybGluZVRoaWNrbmVzcykqcixhPVtdO2xldCBzPTAsbD0wO2ZvcihsZXQgdD0wO3Q8aS5sZW5ndGg7dCsrKXtjb25zdCBlPWlbdF07aWYoIlxuIj09PWUpcz0wLGwtPW87ZWxzZXtjb25zdCB0PVpuZShlLHIscyxsLG4pO3MrPXQub2Zmc2V0WCxhLnB1c2godC5wYXRoKX19cmV0dXJuIGF9KSh0LGUsdGhpcy5kYXRhKTtmb3IobGV0IHQ9MCxlPWkubGVuZ3RoO3Q8ZTt0KyspQXJyYXkucHJvdG90eXBlLnB1c2guYXBwbHkobixpW3RdLnRvU2hhcGVzKCkpO3JldHVybiBufX1mdW5jdGlvbiBabmUodCxlLG4saSxyKXtjb25zdCBvPXIuZ2x5cGhzW3RdfHxyLmdseXBoc1siPyJdO2lmKCFvKXJldHVybiB2b2lkIGNvbnNvbGUuZXJyb3IoJ1RIUkVFLkZvbnQ6IGNoYXJhY3RlciAiJyt0KyciIGRvZXMgbm90IGV4aXN0cyBpbiBmb250IGZhbWlseSAnK3IuZmFtaWx5TmFtZSsiLiIpO2NvbnN0IGE9bmV3ICRuZTtsZXQgcyxsLGMsdSxoLGQscCxmO2lmKG8ubyl7Y29uc3QgdD1vLl9jYWNoZWRPdXRsaW5lfHwoby5fY2FjaGVkT3V0bGluZT1vLm8uc3BsaXQoIiAiKSk7Zm9yKGxldCByPTAsbz10Lmxlbmd0aDtyPG87KXtzd2l0Y2godFtyKytdKXtjYXNlIm0iOnM9dFtyKytdKmUrbixsPXRbcisrXSplK2ksYS5tb3ZlVG8ocyxsKTticmVhaztjYXNlImwiOnM9dFtyKytdKmUrbixsPXRbcisrXSplK2ksYS5saW5lVG8ocyxsKTticmVhaztjYXNlInEiOmM9dFtyKytdKmUrbix1PXRbcisrXSplK2ksaD10W3IrK10qZStuLGQ9dFtyKytdKmUraSxhLnF1YWRyYXRpY0N1cnZlVG8oaCxkLGMsdSk7YnJlYWs7Y2FzZSJiIjpjPXRbcisrXSplK24sdT10W3IrK10qZStpLGg9dFtyKytdKmUrbixkPXRbcisrXSplK2kscD10W3IrK10qZStuLGY9dFtyKytdKmUraSxhLmJlemllckN1cnZlVG8oaCxkLHAsZixjLHUpfX19cmV0dXJue29mZnNldFg6by5oYSplLHBhdGg6YX19S25lLnByb3RvdHlwZS5pc0ZvbnQ9ITA7bGV0IEpuZTtjb25zdCBRbmU9e2dldENvbnRleHQ6ZnVuY3Rpb24oKXtyZXR1cm4gdm9pZCAwPT09Sm5lJiYoSm5lPW5ldyh3aW5kb3cuQXVkaW9Db250ZXh0fHx3aW5kb3cud2Via2l0QXVkaW9Db250ZXh0KSksSm5lfSxzZXRDb250ZXh0OmZ1bmN0aW9uKHQpe0puZT10fX07Y2xhc3MgdGllIGV4dGVuZHMgaG5le2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQpfWxvYWQodCxlLG4saSl7Y29uc3Qgcj10aGlzLG89bmV3IHBuZSh0aGlzLm1hbmFnZXIpO28uc2V0UmVzcG9uc2VUeXBlKCJhcnJheWJ1ZmZlciIpLG8uc2V0UGF0aCh0aGlzLnBhdGgpLG8uc2V0UmVxdWVzdEhlYWRlcih0aGlzLnJlcXVlc3RIZWFkZXIpLG8uc2V0V2l0aENyZWRlbnRpYWxzKHRoaXMud2l0aENyZWRlbnRpYWxzKSxvLmxvYWQodCwoZnVuY3Rpb24obil7dHJ5e2NvbnN0IHQ9bi5zbGljZSgwKTtRbmUuZ2V0Q29udGV4dCgpLmRlY29kZUF1ZGlvRGF0YSh0LChmdW5jdGlvbih0KXtlKHQpfSkpfWNhdGNoKGUpe2k/aShlKTpjb25zb2xlLmVycm9yKGUpLHIubWFuYWdlci5pdGVtRXJyb3IodCl9fSksbixpKX19Y2xhc3MgZWllIGV4dGVuZHMgSG5le2NvbnN0cnVjdG9yKHQsZSxuPTEpe3N1cGVyKHZvaWQgMCxuKTtjb25zdCBpPShuZXcgczR0KS5zZXQodCkscj0obmV3IHM0dCkuc2V0KGUpLG89bmV3IEg1dChpLnIsaS5nLGkuYiksYT1uZXcgSDV0KHIucixyLmcsci5iKSxzPU1hdGguc3FydChNYXRoLlBJKSxsPXMqTWF0aC5zcXJ0KC43NSk7dGhpcy5zaC5jb2VmZmljaWVudHNbMF0uY29weShvKS5hZGQoYSkubXVsdGlwbHlTY2FsYXIocyksdGhpcy5zaC5jb2VmZmljaWVudHNbMV0uY29weShvKS5zdWIoYSkubXVsdGlwbHlTY2FsYXIobCl9fWVpZS5wcm90b3R5cGUuaXNIZW1pc3BoZXJlTGlnaHRQcm9iZT0hMDtjbGFzcyBuaWUgZXh0ZW5kcyBIbmV7Y29uc3RydWN0b3IodCxlPTEpe3N1cGVyKHZvaWQgMCxlKTtjb25zdCBuPShuZXcgczR0KS5zZXQodCk7dGhpcy5zaC5jb2VmZmljaWVudHNbMF0uc2V0KG4ucixuLmcsbi5iKS5tdWx0aXBseVNjYWxhcigyKk1hdGguc3FydChNYXRoLlBJKSl9fW5pZS5wcm90b3R5cGUuaXNBbWJpZW50TGlnaHRQcm9iZT0hMDtjb25zdCBpaWU9bmV3IGczdCxyaWU9bmV3IGczdDtjbGFzcyBvaWV7Y29uc3RydWN0b3IodD0hMCl7dGhpcy5hdXRvU3RhcnQ9dCx0aGlzLnN0YXJ0VGltZT0wLHRoaXMub2xkVGltZT0wLHRoaXMuZWxhcHNlZFRpbWU9MCx0aGlzLnJ1bm5pbmc9ITF9c3RhcnQoKXt0aGlzLnN0YXJ0VGltZT1haWUoKSx0aGlzLm9sZFRpbWU9dGhpcy5zdGFydFRpbWUsdGhpcy5lbGFwc2VkVGltZT0wLHRoaXMucnVubmluZz0hMH1zdG9wKCl7dGhpcy5nZXRFbGFwc2VkVGltZSgpLHRoaXMucnVubmluZz0hMSx0aGlzLmF1dG9TdGFydD0hMX1nZXRFbGFwc2VkVGltZSgpe3JldHVybiB0aGlzLmdldERlbHRhKCksdGhpcy5lbGFwc2VkVGltZX1nZXREZWx0YSgpe2xldCB0PTA7aWYodGhpcy5hdXRvU3RhcnQmJiF0aGlzLnJ1bm5pbmcpcmV0dXJuIHRoaXMuc3RhcnQoKSwwO2lmKHRoaXMucnVubmluZyl7Y29uc3QgZT1haWUoKTt0PShlLXRoaXMub2xkVGltZSkvMWUzLHRoaXMub2xkVGltZT1lLHRoaXMuZWxhcHNlZFRpbWUrPXR9cmV0dXJuIHR9fWZ1bmN0aW9uIGFpZSgpe3JldHVybigidW5kZWZpbmVkIj09dHlwZW9mIHBlcmZvcm1hbmNlP0RhdGU6cGVyZm9ybWFuY2UpLm5vdygpfWNvbnN0IHNpZT1uZXcgSDV0LGxpZT1uZXcgQjV0LGNpZT1uZXcgSDV0LHVpZT1uZXcgSDV0O2NsYXNzIGhpZSBleHRlbmRzIFYzdHtjb25zdHJ1Y3Rvcih0KXtzdXBlcigpLHRoaXMudHlwZT0iQXVkaW8iLHRoaXMubGlzdGVuZXI9dCx0aGlzLmNvbnRleHQ9dC5jb250ZXh0LHRoaXMuZ2Fpbj10aGlzLmNvbnRleHQuY3JlYXRlR2FpbigpLHRoaXMuZ2Fpbi5jb25uZWN0KHQuZ2V0SW5wdXQoKSksdGhpcy5hdXRvcGxheT0hMSx0aGlzLmJ1ZmZlcj1udWxsLHRoaXMuZGV0dW5lPTAsdGhpcy5sb29wPSExLHRoaXMubG9vcFN0YXJ0PTAsdGhpcy5sb29wRW5kPTAsdGhpcy5vZmZzZXQ9MCx0aGlzLmR1cmF0aW9uPXZvaWQgMCx0aGlzLnBsYXliYWNrUmF0ZT0xLHRoaXMuaXNQbGF5aW5nPSExLHRoaXMuaGFzUGxheWJhY2tDb250cm9sPSEwLHRoaXMuc291cmNlPW51bGwsdGhpcy5zb3VyY2VUeXBlPSJlbXB0eSIsdGhpcy5fc3RhcnRlZEF0PTAsdGhpcy5fcHJvZ3Jlc3M9MCx0aGlzLl9jb25uZWN0ZWQ9ITEsdGhpcy5maWx0ZXJzPVtdfWdldE91dHB1dCgpe3JldHVybiB0aGlzLmdhaW59c2V0Tm9kZVNvdXJjZSh0KXtyZXR1cm4gdGhpcy5oYXNQbGF5YmFja0NvbnRyb2w9ITEsdGhpcy5zb3VyY2VUeXBlPSJhdWRpb05vZGUiLHRoaXMuc291cmNlPXQsdGhpcy5jb25uZWN0KCksdGhpc31zZXRNZWRpYUVsZW1lbnRTb3VyY2UodCl7cmV0dXJuIHRoaXMuaGFzUGxheWJhY2tDb250cm9sPSExLHRoaXMuc291cmNlVHlwZT0ibWVkaWFOb2RlIix0aGlzLnNvdXJjZT10aGlzLmNvbnRleHQuY3JlYXRlTWVkaWFFbGVtZW50U291cmNlKHQpLHRoaXMuY29ubmVjdCgpLHRoaXN9c2V0TWVkaWFTdHJlYW1Tb3VyY2UodCl7cmV0dXJuIHRoaXMuaGFzUGxheWJhY2tDb250cm9sPSExLHRoaXMuc291cmNlVHlwZT0ibWVkaWFTdHJlYW1Ob2RlIix0aGlzLnNvdXJjZT10aGlzLmNvbnRleHQuY3JlYXRlTWVkaWFTdHJlYW1Tb3VyY2UodCksdGhpcy5jb25uZWN0KCksdGhpc31zZXRCdWZmZXIodCl7cmV0dXJuIHRoaXMuYnVmZmVyPXQsdGhpcy5zb3VyY2VUeXBlPSJidWZmZXIiLHRoaXMuYXV0b3BsYXkmJnRoaXMucGxheSgpLHRoaXN9cGxheSh0PTApe2lmKCEwPT09dGhpcy5pc1BsYXlpbmcpcmV0dXJuIHZvaWQgY29uc29sZS53YXJuKCJUSFJFRS5BdWRpbzogQXVkaW8gaXMgYWxyZWFkeSBwbGF5aW5nLiIpO2lmKCExPT09dGhpcy5oYXNQbGF5YmFja0NvbnRyb2wpcmV0dXJuIHZvaWQgY29uc29sZS53YXJuKCJUSFJFRS5BdWRpbzogdGhpcyBBdWRpbyBoYXMgbm8gcGxheWJhY2sgY29udHJvbC4iKTt0aGlzLl9zdGFydGVkQXQ9dGhpcy5jb250ZXh0LmN1cnJlbnRUaW1lK3Q7Y29uc3QgZT10aGlzLmNvbnRleHQuY3JlYXRlQnVmZmVyU291cmNlKCk7cmV0dXJuIGUuYnVmZmVyPXRoaXMuYnVmZmVyLGUubG9vcD10aGlzLmxvb3AsZS5sb29wU3RhcnQ9dGhpcy5sb29wU3RhcnQsZS5sb29wRW5kPXRoaXMubG9vcEVuZCxlLm9uZW5kZWQ9dGhpcy5vbkVuZGVkLmJpbmQodGhpcyksZS5zdGFydCh0aGlzLl9zdGFydGVkQXQsdGhpcy5fcHJvZ3Jlc3MrdGhpcy5vZmZzZXQsdGhpcy5kdXJhdGlvbiksdGhpcy5pc1BsYXlpbmc9ITAsdGhpcy5zb3VyY2U9ZSx0aGlzLnNldERldHVuZSh0aGlzLmRldHVuZSksdGhpcy5zZXRQbGF5YmFja1JhdGUodGhpcy5wbGF5YmFja1JhdGUpLHRoaXMuY29ubmVjdCgpfXBhdXNlKCl7aWYoITEhPT10aGlzLmhhc1BsYXliYWNrQ29udHJvbClyZXR1cm4hMD09PXRoaXMuaXNQbGF5aW5nJiYodGhpcy5fcHJvZ3Jlc3MrPU1hdGgubWF4KHRoaXMuY29udGV4dC5jdXJyZW50VGltZS10aGlzLl9zdGFydGVkQXQsMCkqdGhpcy5wbGF5YmFja1JhdGUsITA9PT10aGlzLmxvb3AmJih0aGlzLl9wcm9ncmVzcz10aGlzLl9wcm9ncmVzcyUodGhpcy5kdXJhdGlvbnx8dGhpcy5idWZmZXIuZHVyYXRpb24pKSx0aGlzLnNvdXJjZS5zdG9wKCksdGhpcy5zb3VyY2Uub25lbmRlZD1udWxsLHRoaXMuaXNQbGF5aW5nPSExKSx0aGlzO2NvbnNvbGUud2FybigiVEhSRUUuQXVkaW86IHRoaXMgQXVkaW8gaGFzIG5vIHBsYXliYWNrIGNvbnRyb2wuIil9c3RvcCgpe2lmKCExIT09dGhpcy5oYXNQbGF5YmFja0NvbnRyb2wpcmV0dXJuIHRoaXMuX3Byb2dyZXNzPTAsdGhpcy5zb3VyY2Uuc3RvcCgpLHRoaXMuc291cmNlLm9uZW5kZWQ9bnVsbCx0aGlzLmlzUGxheWluZz0hMSx0aGlzO2NvbnNvbGUud2FybigiVEhSRUUuQXVkaW86IHRoaXMgQXVkaW8gaGFzIG5vIHBsYXliYWNrIGNvbnRyb2wuIil9Y29ubmVjdCgpe2lmKHRoaXMuZmlsdGVycy5sZW5ndGg+MCl7dGhpcy5zb3VyY2UuY29ubmVjdCh0aGlzLmZpbHRlcnNbMF0pO2ZvcihsZXQgdD0xLGU9dGhpcy5maWx0ZXJzLmxlbmd0aDt0PGU7dCsrKXRoaXMuZmlsdGVyc1t0LTFdLmNvbm5lY3QodGhpcy5maWx0ZXJzW3RdKTt0aGlzLmZpbHRlcnNbdGhpcy5maWx0ZXJzLmxlbmd0aC0xXS5jb25uZWN0KHRoaXMuZ2V0T3V0cHV0KCkpfWVsc2UgdGhpcy5zb3VyY2UuY29ubmVjdCh0aGlzLmdldE91dHB1dCgpKTtyZXR1cm4gdGhpcy5fY29ubmVjdGVkPSEwLHRoaXN9ZGlzY29ubmVjdCgpe2lmKHRoaXMuZmlsdGVycy5sZW5ndGg+MCl7dGhpcy5zb3VyY2UuZGlzY29ubmVjdCh0aGlzLmZpbHRlcnNbMF0pO2ZvcihsZXQgdD0xLGU9dGhpcy5maWx0ZXJzLmxlbmd0aDt0PGU7dCsrKXRoaXMuZmlsdGVyc1t0LTFdLmRpc2Nvbm5lY3QodGhpcy5maWx0ZXJzW3RdKTt0aGlzLmZpbHRlcnNbdGhpcy5maWx0ZXJzLmxlbmd0aC0xXS5kaXNjb25uZWN0KHRoaXMuZ2V0T3V0cHV0KCkpfWVsc2UgdGhpcy5zb3VyY2UuZGlzY29ubmVjdCh0aGlzLmdldE91dHB1dCgpKTtyZXR1cm4gdGhpcy5fY29ubmVjdGVkPSExLHRoaXN9Z2V0RmlsdGVycygpe3JldHVybiB0aGlzLmZpbHRlcnN9c2V0RmlsdGVycyh0KXtyZXR1cm4gdHx8KHQ9W10pLCEwPT09dGhpcy5fY29ubmVjdGVkPyh0aGlzLmRpc2Nvbm5lY3QoKSx0aGlzLmZpbHRlcnM9dC5zbGljZSgpLHRoaXMuY29ubmVjdCgpKTp0aGlzLmZpbHRlcnM9dC5zbGljZSgpLHRoaXN9c2V0RGV0dW5lKHQpe2lmKHRoaXMuZGV0dW5lPXQsdm9pZCAwIT09dGhpcy5zb3VyY2UuZGV0dW5lKXJldHVybiEwPT09dGhpcy5pc1BsYXlpbmcmJnRoaXMuc291cmNlLmRldHVuZS5zZXRUYXJnZXRBdFRpbWUodGhpcy5kZXR1bmUsdGhpcy5jb250ZXh0LmN1cnJlbnRUaW1lLC4wMSksdGhpc31nZXREZXR1bmUoKXtyZXR1cm4gdGhpcy5kZXR1bmV9Z2V0RmlsdGVyKCl7cmV0dXJuIHRoaXMuZ2V0RmlsdGVycygpWzBdfXNldEZpbHRlcih0KXtyZXR1cm4gdGhpcy5zZXRGaWx0ZXJzKHQ/W3RdOltdKX1zZXRQbGF5YmFja1JhdGUodCl7aWYoITEhPT10aGlzLmhhc1BsYXliYWNrQ29udHJvbClyZXR1cm4gdGhpcy5wbGF5YmFja1JhdGU9dCwhMD09PXRoaXMuaXNQbGF5aW5nJiZ0aGlzLnNvdXJjZS5wbGF5YmFja1JhdGUuc2V0VGFyZ2V0QXRUaW1lKHRoaXMucGxheWJhY2tSYXRlLHRoaXMuY29udGV4dC5jdXJyZW50VGltZSwuMDEpLHRoaXM7Y29uc29sZS53YXJuKCJUSFJFRS5BdWRpbzogdGhpcyBBdWRpbyBoYXMgbm8gcGxheWJhY2sgY29udHJvbC4iKX1nZXRQbGF5YmFja1JhdGUoKXtyZXR1cm4gdGhpcy5wbGF5YmFja1JhdGV9b25FbmRlZCgpe3RoaXMuaXNQbGF5aW5nPSExfWdldExvb3AoKXtyZXR1cm4hMT09PXRoaXMuaGFzUGxheWJhY2tDb250cm9sPyhjb25zb2xlLndhcm4oIlRIUkVFLkF1ZGlvOiB0aGlzIEF1ZGlvIGhhcyBubyBwbGF5YmFjayBjb250cm9sLiIpLCExKTp0aGlzLmxvb3B9c2V0TG9vcCh0KXtpZighMSE9PXRoaXMuaGFzUGxheWJhY2tDb250cm9sKXJldHVybiB0aGlzLmxvb3A9dCwhMD09PXRoaXMuaXNQbGF5aW5nJiYodGhpcy5zb3VyY2UubG9vcD10aGlzLmxvb3ApLHRoaXM7Y29uc29sZS53YXJuKCJUSFJFRS5BdWRpbzogdGhpcyBBdWRpbyBoYXMgbm8gcGxheWJhY2sgY29udHJvbC4iKX1zZXRMb29wU3RhcnQodCl7cmV0dXJuIHRoaXMubG9vcFN0YXJ0PXQsdGhpc31zZXRMb29wRW5kKHQpe3JldHVybiB0aGlzLmxvb3BFbmQ9dCx0aGlzfWdldFZvbHVtZSgpe3JldHVybiB0aGlzLmdhaW4uZ2Fpbi52YWx1ZX1zZXRWb2x1bWUodCl7cmV0dXJuIHRoaXMuZ2Fpbi5nYWluLnNldFRhcmdldEF0VGltZSh0LHRoaXMuY29udGV4dC5jdXJyZW50VGltZSwuMDEpLHRoaXN9fWNvbnN0IGRpZT1uZXcgSDV0LHBpZT1uZXcgQjV0LGZpZT1uZXcgSDV0LG1pZT1uZXcgSDV0O2NsYXNzIGdpZXtjb25zdHJ1Y3Rvcih0LGU9MjA0OCl7dGhpcy5hbmFseXNlcj10LmNvbnRleHQuY3JlYXRlQW5hbHlzZXIoKSx0aGlzLmFuYWx5c2VyLmZmdFNpemU9ZSx0aGlzLmRhdGE9bmV3IFVpbnQ4QXJyYXkodGhpcy5hbmFseXNlci5mcmVxdWVuY3lCaW5Db3VudCksdC5nZXRPdXRwdXQoKS5jb25uZWN0KHRoaXMuYW5hbHlzZXIpfWdldEZyZXF1ZW5jeURhdGEoKXtyZXR1cm4gdGhpcy5hbmFseXNlci5nZXRCeXRlRnJlcXVlbmN5RGF0YSh0aGlzLmRhdGEpLHRoaXMuZGF0YX1nZXRBdmVyYWdlRnJlcXVlbmN5KCl7bGV0IHQ9MDtjb25zdCBlPXRoaXMuZ2V0RnJlcXVlbmN5RGF0YSgpO2ZvcihsZXQgbj0wO248ZS5sZW5ndGg7bisrKXQrPWVbbl07cmV0dXJuIHQvZS5sZW5ndGh9fWNsYXNzIF9pZXtjb25zdHJ1Y3Rvcih0LGUsbil7bGV0IGkscixvO3N3aXRjaCh0aGlzLmJpbmRpbmc9dCx0aGlzLnZhbHVlU2l6ZT1uLGUpe2Nhc2UicXVhdGVybmlvbiI6aT10aGlzLl9zbGVycCxyPXRoaXMuX3NsZXJwQWRkaXRpdmUsbz10aGlzLl9zZXRBZGRpdGl2ZUlkZW50aXR5UXVhdGVybmlvbix0aGlzLmJ1ZmZlcj1uZXcgRmxvYXQ2NEFycmF5KDYqbiksdGhpcy5fd29ya0luZGV4PTU7YnJlYWs7Y2FzZSJzdHJpbmciOmNhc2UiYm9vbCI6aT10aGlzLl9zZWxlY3Qscj10aGlzLl9zZWxlY3Qsbz10aGlzLl9zZXRBZGRpdGl2ZUlkZW50aXR5T3RoZXIsdGhpcy5idWZmZXI9bmV3IEFycmF5KDUqbik7YnJlYWs7ZGVmYXVsdDppPXRoaXMuX2xlcnAscj10aGlzLl9sZXJwQWRkaXRpdmUsbz10aGlzLl9zZXRBZGRpdGl2ZUlkZW50aXR5TnVtZXJpYyx0aGlzLmJ1ZmZlcj1uZXcgRmxvYXQ2NEFycmF5KDUqbil9dGhpcy5fbWl4QnVmZmVyUmVnaW9uPWksdGhpcy5fbWl4QnVmZmVyUmVnaW9uQWRkaXRpdmU9cix0aGlzLl9zZXRJZGVudGl0eT1vLHRoaXMuX29yaWdJbmRleD0zLHRoaXMuX2FkZEluZGV4PTQsdGhpcy5jdW11bGF0aXZlV2VpZ2h0PTAsdGhpcy5jdW11bGF0aXZlV2VpZ2h0QWRkaXRpdmU9MCx0aGlzLnVzZUNvdW50PTAsdGhpcy5yZWZlcmVuY2VDb3VudD0wfWFjY3VtdWxhdGUodCxlKXtjb25zdCBuPXRoaXMuYnVmZmVyLGk9dGhpcy52YWx1ZVNpemUscj10KmkraTtsZXQgbz10aGlzLmN1bXVsYXRpdmVXZWlnaHQ7aWYoMD09PW8pe2ZvcihsZXQgdD0wO3QhPT1pOysrdCluW3IrdF09blt0XTtvPWV9ZWxzZXtvKz1lO3RoaXMuX21peEJ1ZmZlclJlZ2lvbihuLHIsMCxlL28saSl9dGhpcy5jdW11bGF0aXZlV2VpZ2h0PW99YWNjdW11bGF0ZUFkZGl0aXZlKHQpe2NvbnN0IGU9dGhpcy5idWZmZXIsbj10aGlzLnZhbHVlU2l6ZSxpPW4qdGhpcy5fYWRkSW5kZXg7MD09PXRoaXMuY3VtdWxhdGl2ZVdlaWdodEFkZGl0aXZlJiZ0aGlzLl9zZXRJZGVudGl0eSgpLHRoaXMuX21peEJ1ZmZlclJlZ2lvbkFkZGl0aXZlKGUsaSwwLHQsbiksdGhpcy5jdW11bGF0aXZlV2VpZ2h0QWRkaXRpdmUrPXR9YXBwbHkodCl7Y29uc3QgZT10aGlzLnZhbHVlU2l6ZSxuPXRoaXMuYnVmZmVyLGk9dCplK2Uscj10aGlzLmN1bXVsYXRpdmVXZWlnaHQsbz10aGlzLmN1bXVsYXRpdmVXZWlnaHRBZGRpdGl2ZSxhPXRoaXMuYmluZGluZztpZih0aGlzLmN1bXVsYXRpdmVXZWlnaHQ9MCx0aGlzLmN1bXVsYXRpdmVXZWlnaHRBZGRpdGl2ZT0wLHI8MSl7dGhpcy5fbWl4QnVmZmVyUmVnaW9uKG4saSxlKnRoaXMuX29yaWdJbmRleCwxLXIsZSl9bz4wJiZ0aGlzLl9taXhCdWZmZXJSZWdpb25BZGRpdGl2ZShuLGksdGhpcy5fYWRkSW5kZXgqZSwxLGUpO2ZvcihsZXQgdD1lLHI9ZStlO3QhPT1yOysrdClpZihuW3RdIT09blt0K2VdKXthLnNldFZhbHVlKG4saSk7YnJlYWt9fXNhdmVPcmlnaW5hbFN0YXRlKCl7Y29uc3QgdD10aGlzLmJ1ZmZlcixlPXRoaXMudmFsdWVTaXplLG49ZSp0aGlzLl9vcmlnSW5kZXg7dGhpcy5iaW5kaW5nLmdldFZhbHVlKHQsbik7Zm9yKGxldCBpPWUscj1uO2khPT1yOysraSl0W2ldPXRbbitpJWVdO3RoaXMuX3NldElkZW50aXR5KCksdGhpcy5jdW11bGF0aXZlV2VpZ2h0PTAsdGhpcy5jdW11bGF0aXZlV2VpZ2h0QWRkaXRpdmU9MH1yZXN0b3JlT3JpZ2luYWxTdGF0ZSgpe3RoaXMuYmluZGluZy5zZXRWYWx1ZSh0aGlzLmJ1ZmZlciwzKnRoaXMudmFsdWVTaXplKX1fc2V0QWRkaXRpdmVJZGVudGl0eU51bWVyaWMoKXtjb25zdCB0PXRoaXMuX2FkZEluZGV4KnRoaXMudmFsdWVTaXplLGU9dCt0aGlzLnZhbHVlU2l6ZTtmb3IobGV0IG49dDtuPGU7bisrKXRoaXMuYnVmZmVyW25dPTB9X3NldEFkZGl0aXZlSWRlbnRpdHlRdWF0ZXJuaW9uKCl7dGhpcy5fc2V0QWRkaXRpdmVJZGVudGl0eU51bWVyaWMoKSx0aGlzLmJ1ZmZlclt0aGlzLl9hZGRJbmRleCp0aGlzLnZhbHVlU2l6ZSszXT0xfV9zZXRBZGRpdGl2ZUlkZW50aXR5T3RoZXIoKXtjb25zdCB0PXRoaXMuX29yaWdJbmRleCp0aGlzLnZhbHVlU2l6ZSxlPXRoaXMuX2FkZEluZGV4KnRoaXMudmFsdWVTaXplO2ZvcihsZXQgbj0wO248dGhpcy52YWx1ZVNpemU7bisrKXRoaXMuYnVmZmVyW2Urbl09dGhpcy5idWZmZXJbdCtuXX1fc2VsZWN0KHQsZSxuLGkscil7aWYoaT49LjUpZm9yKGxldCBpPTA7aSE9PXI7KytpKXRbZStpXT10W24raV19X3NsZXJwKHQsZSxuLGkpe0I1dC5zbGVycEZsYXQodCxlLHQsZSx0LG4saSl9X3NsZXJwQWRkaXRpdmUodCxlLG4saSxyKXtjb25zdCBvPXRoaXMuX3dvcmtJbmRleCpyO0I1dC5tdWx0aXBseVF1YXRlcm5pb25zRmxhdCh0LG8sdCxlLHQsbiksQjV0LnNsZXJwRmxhdCh0LGUsdCxlLHQsbyxpKX1fbGVycCh0LGUsbixpLHIpe2NvbnN0IG89MS1pO2ZvcihsZXQgYT0wO2EhPT1yOysrYSl7Y29uc3Qgcj1lK2E7dFtyXT10W3JdKm8rdFtuK2FdKml9fV9sZXJwQWRkaXRpdmUodCxlLG4saSxyKXtmb3IobGV0IG89MDtvIT09cjsrK28pe2NvbnN0IHI9ZStvO3Rbcl09dFtyXSt0W24rb10qaX19fWNvbnN0IHlpZT0iXFxbXFxdXFwuOlxcLyIsdmllPW5ldyBSZWdFeHAoIltcXFtcXF1cXC46XFwvXSIsImciKSxiaWU9IlteXFxbXFxdXFwuOlxcL10iLHhpZT0iW14iK3lpZS5yZXBsYWNlKCJcXC4iLCIiKSsiXSIsd2llPS8oKD86V0MrW1wvOl0pKikvLnNvdXJjZS5yZXBsYWNlKCJXQyIsYmllKSxTaWU9LyhXQ09EKyk/Ly5zb3VyY2UucmVwbGFjZSgiV0NPRCIseGllKSxNaWU9Lyg/OlwuKFdDKykoPzpcWyguKylcXSk/KT8vLnNvdXJjZS5yZXBsYWNlKCJXQyIsYmllKSxFaWU9L1wuKFdDKykoPzpcWyguKylcXSk/Ly5zb3VyY2UucmVwbGFjZSgiV0MiLGJpZSksVGllPW5ldyBSZWdFeHAoIl4iK3dpZStTaWUrTWllK0VpZSsiJCIpLENpZT1bIm1hdGVyaWFsIiwibWF0ZXJpYWxzIiwiYm9uZXMiXTtjbGFzcyBBaWV7Y29uc3RydWN0b3IodCxlLG4pe3RoaXMucGF0aD1lLHRoaXMucGFyc2VkUGF0aD1ufHxBaWUucGFyc2VUcmFja05hbWUoZSksdGhpcy5ub2RlPUFpZS5maW5kTm9kZSh0LHRoaXMucGFyc2VkUGF0aC5ub2RlTmFtZSl8fHQsdGhpcy5yb290Tm9kZT10LHRoaXMuZ2V0VmFsdWU9dGhpcy5fZ2V0VmFsdWVfdW5ib3VuZCx0aGlzLnNldFZhbHVlPXRoaXMuX3NldFZhbHVlX3VuYm91bmR9c3RhdGljIGNyZWF0ZSh0LGUsbil7cmV0dXJuIHQmJnQuaXNBbmltYXRpb25PYmplY3RHcm91cD9uZXcgQWllLkNvbXBvc2l0ZSh0LGUsbik6bmV3IEFpZSh0LGUsbil9c3RhdGljIHNhbml0aXplTm9kZU5hbWUodCl7cmV0dXJuIHQucmVwbGFjZSgvXHMvZywiXyIpLnJlcGxhY2UodmllLCIiKX1zdGF0aWMgcGFyc2VUcmFja05hbWUodCl7Y29uc3QgZT1UaWUuZXhlYyh0KTtpZighZSl0aHJvdyBuZXcgRXJyb3IoIlByb3BlcnR5QmluZGluZzogQ2Fubm90IHBhcnNlIHRyYWNrTmFtZTogIit0KTtjb25zdCBuPXtub2RlTmFtZTplWzJdLG9iamVjdE5hbWU6ZVszXSxvYmplY3RJbmRleDplWzRdLHByb3BlcnR5TmFtZTplWzVdLHByb3BlcnR5SW5kZXg6ZVs2XX0saT1uLm5vZGVOYW1lJiZuLm5vZGVOYW1lLmxhc3RJbmRleE9mKCIuIik7aWYodm9pZCAwIT09aSYmLTEhPT1pKXtjb25zdCB0PW4ubm9kZU5hbWUuc3Vic3RyaW5nKGkrMSk7LTEhPT1DaWUuaW5kZXhPZih0KSYmKG4ubm9kZU5hbWU9bi5ub2RlTmFtZS5zdWJzdHJpbmcoMCxpKSxuLm9iamVjdE5hbWU9dCl9aWYobnVsbD09PW4ucHJvcGVydHlOYW1lfHwwPT09bi5wcm9wZXJ0eU5hbWUubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiUHJvcGVydHlCaW5kaW5nOiBjYW4gbm90IHBhcnNlIHByb3BlcnR5TmFtZSBmcm9tIHRyYWNrTmFtZTogIit0KTtyZXR1cm4gbn1zdGF0aWMgZmluZE5vZGUodCxlKXtpZighZXx8IiI9PT1lfHwiLiI9PT1lfHwtMT09PWV8fGU9PT10Lm5hbWV8fGU9PT10LnV1aWQpcmV0dXJuIHQ7aWYodC5za2VsZXRvbil7Y29uc3Qgbj10LnNrZWxldG9uLmdldEJvbmVCeU5hbWUoZSk7aWYodm9pZCAwIT09bilyZXR1cm4gbn1pZih0LmNoaWxkcmVuKXtjb25zdCBuPWZ1bmN0aW9uKHQpe2ZvcihsZXQgaT0wO2k8dC5sZW5ndGg7aSsrKXtjb25zdCByPXRbaV07aWYoci5uYW1lPT09ZXx8ci51dWlkPT09ZSlyZXR1cm4gcjtjb25zdCBvPW4oci5jaGlsZHJlbik7aWYobylyZXR1cm4gb31yZXR1cm4gbnVsbH0saT1uKHQuY2hpbGRyZW4pO2lmKGkpcmV0dXJuIGl9cmV0dXJuIG51bGx9X2dldFZhbHVlX3VuYXZhaWxhYmxlKCl7fV9zZXRWYWx1ZV91bmF2YWlsYWJsZSgpe31fZ2V0VmFsdWVfZGlyZWN0KHQsZSl7dFtlXT10aGlzLm5vZGVbdGhpcy5wcm9wZXJ0eU5hbWVdfV9nZXRWYWx1ZV9hcnJheSh0LGUpe2NvbnN0IG49dGhpcy5yZXNvbHZlZFByb3BlcnR5O2ZvcihsZXQgaT0wLHI9bi5sZW5ndGg7aSE9PXI7KytpKXRbZSsrXT1uW2ldfV9nZXRWYWx1ZV9hcnJheUVsZW1lbnQodCxlKXt0W2VdPXRoaXMucmVzb2x2ZWRQcm9wZXJ0eVt0aGlzLnByb3BlcnR5SW5kZXhdfV9nZXRWYWx1ZV90b0FycmF5KHQsZSl7dGhpcy5yZXNvbHZlZFByb3BlcnR5LnRvQXJyYXkodCxlKX1fc2V0VmFsdWVfZGlyZWN0KHQsZSl7dGhpcy50YXJnZXRPYmplY3RbdGhpcy5wcm9wZXJ0eU5hbWVdPXRbZV19X3NldFZhbHVlX2RpcmVjdF9zZXROZWVkc1VwZGF0ZSh0LGUpe3RoaXMudGFyZ2V0T2JqZWN0W3RoaXMucHJvcGVydHlOYW1lXT10W2VdLHRoaXMudGFyZ2V0T2JqZWN0Lm5lZWRzVXBkYXRlPSEwfV9zZXRWYWx1ZV9kaXJlY3Rfc2V0TWF0cml4V29ybGROZWVkc1VwZGF0ZSh0LGUpe3RoaXMudGFyZ2V0T2JqZWN0W3RoaXMucHJvcGVydHlOYW1lXT10W2VdLHRoaXMudGFyZ2V0T2JqZWN0Lm1hdHJpeFdvcmxkTmVlZHNVcGRhdGU9ITB9X3NldFZhbHVlX2FycmF5KHQsZSl7Y29uc3Qgbj10aGlzLnJlc29sdmVkUHJvcGVydHk7Zm9yKGxldCBpPTAscj1uLmxlbmd0aDtpIT09cjsrK2kpbltpXT10W2UrK119X3NldFZhbHVlX2FycmF5X3NldE5lZWRzVXBkYXRlKHQsZSl7Y29uc3Qgbj10aGlzLnJlc29sdmVkUHJvcGVydHk7Zm9yKGxldCBpPTAscj1uLmxlbmd0aDtpIT09cjsrK2kpbltpXT10W2UrK107dGhpcy50YXJnZXRPYmplY3QubmVlZHNVcGRhdGU9ITB9X3NldFZhbHVlX2FycmF5X3NldE1hdHJpeFdvcmxkTmVlZHNVcGRhdGUodCxlKXtjb25zdCBuPXRoaXMucmVzb2x2ZWRQcm9wZXJ0eTtmb3IobGV0IGk9MCxyPW4ubGVuZ3RoO2khPT1yOysraSluW2ldPXRbZSsrXTt0aGlzLnRhcmdldE9iamVjdC5tYXRyaXhXb3JsZE5lZWRzVXBkYXRlPSEwfV9zZXRWYWx1ZV9hcnJheUVsZW1lbnQodCxlKXt0aGlzLnJlc29sdmVkUHJvcGVydHlbdGhpcy5wcm9wZXJ0eUluZGV4XT10W2VdfV9zZXRWYWx1ZV9hcnJheUVsZW1lbnRfc2V0TmVlZHNVcGRhdGUodCxlKXt0aGlzLnJlc29sdmVkUHJvcGVydHlbdGhpcy5wcm9wZXJ0eUluZGV4XT10W2VdLHRoaXMudGFyZ2V0T2JqZWN0Lm5lZWRzVXBkYXRlPSEwfV9zZXRWYWx1ZV9hcnJheUVsZW1lbnRfc2V0TWF0cml4V29ybGROZWVkc1VwZGF0ZSh0LGUpe3RoaXMucmVzb2x2ZWRQcm9wZXJ0eVt0aGlzLnByb3BlcnR5SW5kZXhdPXRbZV0sdGhpcy50YXJnZXRPYmplY3QubWF0cml4V29ybGROZWVkc1VwZGF0ZT0hMH1fc2V0VmFsdWVfZnJvbUFycmF5KHQsZSl7dGhpcy5yZXNvbHZlZFByb3BlcnR5LmZyb21BcnJheSh0LGUpfV9zZXRWYWx1ZV9mcm9tQXJyYXlfc2V0TmVlZHNVcGRhdGUodCxlKXt0aGlzLnJlc29sdmVkUHJvcGVydHkuZnJvbUFycmF5KHQsZSksdGhpcy50YXJnZXRPYmplY3QubmVlZHNVcGRhdGU9ITB9X3NldFZhbHVlX2Zyb21BcnJheV9zZXRNYXRyaXhXb3JsZE5lZWRzVXBkYXRlKHQsZSl7dGhpcy5yZXNvbHZlZFByb3BlcnR5LmZyb21BcnJheSh0LGUpLHRoaXMudGFyZ2V0T2JqZWN0Lm1hdHJpeFdvcmxkTmVlZHNVcGRhdGU9ITB9X2dldFZhbHVlX3VuYm91bmQodCxlKXt0aGlzLmJpbmQoKSx0aGlzLmdldFZhbHVlKHQsZSl9X3NldFZhbHVlX3VuYm91bmQodCxlKXt0aGlzLmJpbmQoKSx0aGlzLnNldFZhbHVlKHQsZSl9YmluZCgpe2xldCB0PXRoaXMubm9kZTtjb25zdCBlPXRoaXMucGFyc2VkUGF0aCxuPWUub2JqZWN0TmFtZSxpPWUucHJvcGVydHlOYW1lO2xldCByPWUucHJvcGVydHlJbmRleDtpZih0fHwodD1BaWUuZmluZE5vZGUodGhpcy5yb290Tm9kZSxlLm5vZGVOYW1lKXx8dGhpcy5yb290Tm9kZSx0aGlzLm5vZGU9dCksdGhpcy5nZXRWYWx1ZT10aGlzLl9nZXRWYWx1ZV91bmF2YWlsYWJsZSx0aGlzLnNldFZhbHVlPXRoaXMuX3NldFZhbHVlX3VuYXZhaWxhYmxlLCF0KXJldHVybiB2b2lkIGNvbnNvbGUuZXJyb3IoIlRIUkVFLlByb3BlcnR5QmluZGluZzogVHJ5aW5nIHRvIHVwZGF0ZSBub2RlIGZvciB0cmFjazogIit0aGlzLnBhdGgrIiBidXQgaXQgd2Fzbid0IGZvdW5kLiIpO2lmKG4pe2xldCBpPWUub2JqZWN0SW5kZXg7c3dpdGNoKG4pe2Nhc2UibWF0ZXJpYWxzIjppZighdC5tYXRlcmlhbClyZXR1cm4gdm9pZCBjb25zb2xlLmVycm9yKCJUSFJFRS5Qcm9wZXJ0eUJpbmRpbmc6IENhbiBub3QgYmluZCB0byBtYXRlcmlhbCBhcyBub2RlIGRvZXMgbm90IGhhdmUgYSBtYXRlcmlhbC4iLHRoaXMpO2lmKCF0Lm1hdGVyaWFsLm1hdGVyaWFscylyZXR1cm4gdm9pZCBjb25zb2xlLmVycm9yKCJUSFJFRS5Qcm9wZXJ0eUJpbmRpbmc6IENhbiBub3QgYmluZCB0byBtYXRlcmlhbC5tYXRlcmlhbHMgYXMgbm9kZS5tYXRlcmlhbCBkb2VzIG5vdCBoYXZlIGEgbWF0ZXJpYWxzIGFycmF5LiIsdGhpcyk7dD10Lm1hdGVyaWFsLm1hdGVyaWFsczticmVhaztjYXNlImJvbmVzIjppZighdC5za2VsZXRvbilyZXR1cm4gdm9pZCBjb25zb2xlLmVycm9yKCJUSFJFRS5Qcm9wZXJ0eUJpbmRpbmc6IENhbiBub3QgYmluZCB0byBib25lcyBhcyBub2RlIGRvZXMgbm90IGhhdmUgYSBza2VsZXRvbi4iLHRoaXMpO3Q9dC5za2VsZXRvbi5ib25lcztmb3IobGV0IGU9MDtlPHQubGVuZ3RoO2UrKylpZih0W2VdLm5hbWU9PT1pKXtpPWU7YnJlYWt9YnJlYWs7ZGVmYXVsdDppZih2b2lkIDA9PT10W25dKXJldHVybiB2b2lkIGNvbnNvbGUuZXJyb3IoIlRIUkVFLlByb3BlcnR5QmluZGluZzogQ2FuIG5vdCBiaW5kIHRvIG9iamVjdE5hbWUgb2Ygbm9kZSB1bmRlZmluZWQuIix0aGlzKTt0PXRbbl19aWYodm9pZCAwIT09aSl7aWYodm9pZCAwPT09dFtpXSlyZXR1cm4gdm9pZCBjb25zb2xlLmVycm9yKCJUSFJFRS5Qcm9wZXJ0eUJpbmRpbmc6IFRyeWluZyB0byBiaW5kIHRvIG9iamVjdEluZGV4IG9mIG9iamVjdE5hbWUsIGJ1dCBpcyB1bmRlZmluZWQuIix0aGlzLHQpO3Q9dFtpXX19Y29uc3Qgbz10W2ldO2lmKHZvaWQgMD09PW8pe3JldHVybiB2b2lkIGNvbnNvbGUuZXJyb3IoIlRIUkVFLlByb3BlcnR5QmluZGluZzogVHJ5aW5nIHRvIHVwZGF0ZSBwcm9wZXJ0eSBmb3IgdHJhY2s6ICIrZS5ub2RlTmFtZSsiLiIraSsiIGJ1dCBpdCB3YXNuJ3QgZm91bmQuIix0KX1sZXQgYT10aGlzLlZlcnNpb25pbmcuTm9uZTt0aGlzLnRhcmdldE9iamVjdD10LHZvaWQgMCE9PXQubmVlZHNVcGRhdGU/YT10aGlzLlZlcnNpb25pbmcuTmVlZHNVcGRhdGU6dm9pZCAwIT09dC5tYXRyaXhXb3JsZE5lZWRzVXBkYXRlJiYoYT10aGlzLlZlcnNpb25pbmcuTWF0cml4V29ybGROZWVkc1VwZGF0ZSk7bGV0IHM9dGhpcy5CaW5kaW5nVHlwZS5EaXJlY3Q7aWYodm9pZCAwIT09cil7aWYoIm1vcnBoVGFyZ2V0SW5mbHVlbmNlcyI9PT1pKXtpZighdC5nZW9tZXRyeSlyZXR1cm4gdm9pZCBjb25zb2xlLmVycm9yKCJUSFJFRS5Qcm9wZXJ0eUJpbmRpbmc6IENhbiBub3QgYmluZCB0byBtb3JwaFRhcmdldEluZmx1ZW5jZXMgYmVjYXVzZSBub2RlIGRvZXMgbm90IGhhdmUgYSBnZW9tZXRyeS4iLHRoaXMpO2lmKCF0Lmdlb21ldHJ5LmlzQnVmZmVyR2VvbWV0cnkpcmV0dXJuIHZvaWQgY29uc29sZS5lcnJvcigiVEhSRUUuUHJvcGVydHlCaW5kaW5nOiBDYW4gbm90IGJpbmQgdG8gbW9ycGhUYXJnZXRJbmZsdWVuY2VzIG9uIFRIUkVFLkdlb21ldHJ5LiBVc2UgVEhSRUUuQnVmZmVyR2VvbWV0cnkgaW5zdGVhZC4iLHRoaXMpO2lmKCF0Lmdlb21ldHJ5Lm1vcnBoQXR0cmlidXRlcylyZXR1cm4gdm9pZCBjb25zb2xlLmVycm9yKCJUSFJFRS5Qcm9wZXJ0eUJpbmRpbmc6IENhbiBub3QgYmluZCB0byBtb3JwaFRhcmdldEluZmx1ZW5jZXMgYmVjYXVzZSBub2RlIGRvZXMgbm90IGhhdmUgYSBnZW9tZXRyeS5tb3JwaEF0dHJpYnV0ZXMuIix0aGlzKTt2b2lkIDAhPT10Lm1vcnBoVGFyZ2V0RGljdGlvbmFyeVtyXSYmKHI9dC5tb3JwaFRhcmdldERpY3Rpb25hcnlbcl0pfXM9dGhpcy5CaW5kaW5nVHlwZS5BcnJheUVsZW1lbnQsdGhpcy5yZXNvbHZlZFByb3BlcnR5PW8sdGhpcy5wcm9wZXJ0eUluZGV4PXJ9ZWxzZSB2b2lkIDAhPT1vLmZyb21BcnJheSYmdm9pZCAwIT09by50b0FycmF5PyhzPXRoaXMuQmluZGluZ1R5cGUuSGFzRnJvbVRvQXJyYXksdGhpcy5yZXNvbHZlZFByb3BlcnR5PW8pOkFycmF5LmlzQXJyYXkobyk/KHM9dGhpcy5CaW5kaW5nVHlwZS5FbnRpcmVBcnJheSx0aGlzLnJlc29sdmVkUHJvcGVydHk9byk6dGhpcy5wcm9wZXJ0eU5hbWU9aTt0aGlzLmdldFZhbHVlPXRoaXMuR2V0dGVyQnlCaW5kaW5nVHlwZVtzXSx0aGlzLnNldFZhbHVlPXRoaXMuU2V0dGVyQnlCaW5kaW5nVHlwZUFuZFZlcnNpb25pbmdbc11bYV19dW5iaW5kKCl7dGhpcy5ub2RlPW51bGwsdGhpcy5nZXRWYWx1ZT10aGlzLl9nZXRWYWx1ZV91bmJvdW5kLHRoaXMuc2V0VmFsdWU9dGhpcy5fc2V0VmFsdWVfdW5ib3VuZH19QWllLkNvbXBvc2l0ZT1jbGFzc3tjb25zdHJ1Y3Rvcih0LGUsbil7Y29uc3QgaT1ufHxBaWUucGFyc2VUcmFja05hbWUoZSk7dGhpcy5fdGFyZ2V0R3JvdXA9dCx0aGlzLl9iaW5kaW5ncz10LnN1YnNjcmliZV8oZSxpKX1nZXRWYWx1ZSh0LGUpe3RoaXMuYmluZCgpO2NvbnN0IG49dGhpcy5fYmluZGluZ3NbdGhpcy5fdGFyZ2V0R3JvdXAubkNhY2hlZE9iamVjdHNfXTt2b2lkIDAhPT1uJiZuLmdldFZhbHVlKHQsZSl9c2V0VmFsdWUodCxlKXtjb25zdCBuPXRoaXMuX2JpbmRpbmdzO2ZvcihsZXQgaT10aGlzLl90YXJnZXRHcm91cC5uQ2FjaGVkT2JqZWN0c18scj1uLmxlbmd0aDtpIT09cjsrK2kpbltpXS5zZXRWYWx1ZSh0LGUpfWJpbmQoKXtjb25zdCB0PXRoaXMuX2JpbmRpbmdzO2ZvcihsZXQgZT10aGlzLl90YXJnZXRHcm91cC5uQ2FjaGVkT2JqZWN0c18sbj10Lmxlbmd0aDtlIT09bjsrK2UpdFtlXS5iaW5kKCl9dW5iaW5kKCl7Y29uc3QgdD10aGlzLl9iaW5kaW5ncztmb3IobGV0IGU9dGhpcy5fdGFyZ2V0R3JvdXAubkNhY2hlZE9iamVjdHNfLG49dC5sZW5ndGg7ZSE9PW47KytlKXRbZV0udW5iaW5kKCl9fSxBaWUucHJvdG90eXBlLkJpbmRpbmdUeXBlPXtEaXJlY3Q6MCxFbnRpcmVBcnJheToxLEFycmF5RWxlbWVudDoyLEhhc0Zyb21Ub0FycmF5OjN9LEFpZS5wcm90b3R5cGUuVmVyc2lvbmluZz17Tm9uZTowLE5lZWRzVXBkYXRlOjEsTWF0cml4V29ybGROZWVkc1VwZGF0ZToyfSxBaWUucHJvdG90eXBlLkdldHRlckJ5QmluZGluZ1R5cGU9W0FpZS5wcm90b3R5cGUuX2dldFZhbHVlX2RpcmVjdCxBaWUucHJvdG90eXBlLl9nZXRWYWx1ZV9hcnJheSxBaWUucHJvdG90eXBlLl9nZXRWYWx1ZV9hcnJheUVsZW1lbnQsQWllLnByb3RvdHlwZS5fZ2V0VmFsdWVfdG9BcnJheV0sQWllLnByb3RvdHlwZS5TZXR0ZXJCeUJpbmRpbmdUeXBlQW5kVmVyc2lvbmluZz1bW0FpZS5wcm90b3R5cGUuX3NldFZhbHVlX2RpcmVjdCxBaWUucHJvdG90eXBlLl9zZXRWYWx1ZV9kaXJlY3Rfc2V0TmVlZHNVcGRhdGUsQWllLnByb3RvdHlwZS5fc2V0VmFsdWVfZGlyZWN0X3NldE1hdHJpeFdvcmxkTmVlZHNVcGRhdGVdLFtBaWUucHJvdG90eXBlLl9zZXRWYWx1ZV9hcnJheSxBaWUucHJvdG90eXBlLl9zZXRWYWx1ZV9hcnJheV9zZXROZWVkc1VwZGF0ZSxBaWUucHJvdG90eXBlLl9zZXRWYWx1ZV9hcnJheV9zZXRNYXRyaXhXb3JsZE5lZWRzVXBkYXRlXSxbQWllLnByb3RvdHlwZS5fc2V0VmFsdWVfYXJyYXlFbGVtZW50LEFpZS5wcm90b3R5cGUuX3NldFZhbHVlX2FycmF5RWxlbWVudF9zZXROZWVkc1VwZGF0ZSxBaWUucHJvdG90eXBlLl9zZXRWYWx1ZV9hcnJheUVsZW1lbnRfc2V0TWF0cml4V29ybGROZWVkc1VwZGF0ZV0sW0FpZS5wcm90b3R5cGUuX3NldFZhbHVlX2Zyb21BcnJheSxBaWUucHJvdG90eXBlLl9zZXRWYWx1ZV9mcm9tQXJyYXlfc2V0TmVlZHNVcGRhdGUsQWllLnByb3RvdHlwZS5fc2V0VmFsdWVfZnJvbUFycmF5X3NldE1hdHJpeFdvcmxkTmVlZHNVcGRhdGVdXTtjbGFzcyBraWV7Y29uc3RydWN0b3IoKXt0aGlzLnV1aWQ9YTV0KCksdGhpcy5fb2JqZWN0cz1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpLHRoaXMubkNhY2hlZE9iamVjdHNfPTA7Y29uc3QgdD17fTt0aGlzLl9pbmRpY2VzQnlVVUlEPXQ7Zm9yKGxldCBlPTAsbj1hcmd1bWVudHMubGVuZ3RoO2UhPT1uOysrZSl0W2FyZ3VtZW50c1tlXS51dWlkXT1lO3RoaXMuX3BhdGhzPVtdLHRoaXMuX3BhcnNlZFBhdGhzPVtdLHRoaXMuX2JpbmRpbmdzPVtdLHRoaXMuX2JpbmRpbmdzSW5kaWNlc0J5UGF0aD17fTtjb25zdCBlPXRoaXM7dGhpcy5zdGF0cz17b2JqZWN0czp7Z2V0IHRvdGFsKCl7cmV0dXJuIGUuX29iamVjdHMubGVuZ3RofSxnZXQgaW5Vc2UoKXtyZXR1cm4gdGhpcy50b3RhbC1lLm5DYWNoZWRPYmplY3RzX319LGdldCBiaW5kaW5nc1Blck9iamVjdCgpe3JldHVybiBlLl9iaW5kaW5ncy5sZW5ndGh9fX1hZGQoKXtjb25zdCB0PXRoaXMuX29iamVjdHMsZT10aGlzLl9pbmRpY2VzQnlVVUlELG49dGhpcy5fcGF0aHMsaT10aGlzLl9wYXJzZWRQYXRocyxyPXRoaXMuX2JpbmRpbmdzLG89ci5sZW5ndGg7bGV0IGEscz10Lmxlbmd0aCxsPXRoaXMubkNhY2hlZE9iamVjdHNfO2ZvcihsZXQgYz0wLHU9YXJndW1lbnRzLmxlbmd0aDtjIT09dTsrK2Mpe2NvbnN0IHU9YXJndW1lbnRzW2NdLGg9dS51dWlkO2xldCBkPWVbaF07aWYodm9pZCAwPT09ZCl7ZD1zKyssZVtoXT1kLHQucHVzaCh1KTtmb3IobGV0IHQ9MCxlPW87dCE9PWU7Kyt0KXJbdF0ucHVzaChuZXcgQWllKHUsblt0XSxpW3RdKSl9ZWxzZSBpZihkPGwpe2E9dFtkXTtjb25zdCBzPS0tbCxjPXRbc107ZVtjLnV1aWRdPWQsdFtkXT1jLGVbaF09cyx0W3NdPXU7Zm9yKGxldCB0PTAsZT1vO3QhPT1lOysrdCl7Y29uc3QgZT1yW3RdO2xldCBvPWVbZF07ZVtkXT1lW3NdLHZvaWQgMD09PW8mJihvPW5ldyBBaWUodSxuW3RdLGlbdF0pKSxlW3NdPW99fWVsc2UgdFtkXSE9PWEmJmNvbnNvbGUuZXJyb3IoIlRIUkVFLkFuaW1hdGlvbk9iamVjdEdyb3VwOiBEaWZmZXJlbnQgb2JqZWN0cyB3aXRoIHRoZSBzYW1lIFVVSUQgZGV0ZWN0ZWQuIENsZWFuIHRoZSBjYWNoZXMgb3IgcmVjcmVhdGUgeW91ciBpbmZyYXN0cnVjdHVyZSB3aGVuIHJlbG9hZGluZyBzY2VuZXMuIil9dGhpcy5uQ2FjaGVkT2JqZWN0c189bH1yZW1vdmUoKXtjb25zdCB0PXRoaXMuX29iamVjdHMsZT10aGlzLl9pbmRpY2VzQnlVVUlELG49dGhpcy5fYmluZGluZ3MsaT1uLmxlbmd0aDtsZXQgcj10aGlzLm5DYWNoZWRPYmplY3RzXztmb3IobGV0IG89MCxhPWFyZ3VtZW50cy5sZW5ndGg7byE9PWE7KytvKXtjb25zdCBhPWFyZ3VtZW50c1tvXSxzPWEudXVpZCxsPWVbc107aWYodm9pZCAwIT09bCYmbD49cil7Y29uc3Qgbz1yKyssYz10W29dO2VbYy51dWlkXT1sLHRbbF09YyxlW3NdPW8sdFtvXT1hO2ZvcihsZXQgdD0wLGU9aTt0IT09ZTsrK3Qpe2NvbnN0IGU9blt0XSxpPWVbbF07ZVtsXT1lW29dLGVbb109aX19fXRoaXMubkNhY2hlZE9iamVjdHNfPXJ9dW5jYWNoZSgpe2NvbnN0IHQ9dGhpcy5fb2JqZWN0cyxlPXRoaXMuX2luZGljZXNCeVVVSUQsbj10aGlzLl9iaW5kaW5ncyxpPW4ubGVuZ3RoO2xldCByPXRoaXMubkNhY2hlZE9iamVjdHNfLG89dC5sZW5ndGg7Zm9yKGxldCBhPTAscz1hcmd1bWVudHMubGVuZ3RoO2EhPT1zOysrYSl7Y29uc3Qgcz1hcmd1bWVudHNbYV0udXVpZCxsPWVbc107aWYodm9pZCAwIT09bClpZihkZWxldGUgZVtzXSxsPHIpe2NvbnN0IGE9LS1yLHM9dFthXSxjPS0tbyx1PXRbY107ZVtzLnV1aWRdPWwsdFtsXT1zLGVbdS51dWlkXT1hLHRbYV09dSx0LnBvcCgpO2ZvcihsZXQgdD0wLGU9aTt0IT09ZTsrK3Qpe2NvbnN0IGU9blt0XSxpPWVbY107ZVtsXT1lW2FdLGVbYV09aSxlLnBvcCgpfX1lbHNle2NvbnN0IHI9LS1vLGE9dFtyXTtyPjAmJihlW2EudXVpZF09bCksdFtsXT1hLHQucG9wKCk7Zm9yKGxldCB0PTAsZT1pO3QhPT1lOysrdCl7Y29uc3QgZT1uW3RdO2VbbF09ZVtyXSxlLnBvcCgpfX19dGhpcy5uQ2FjaGVkT2JqZWN0c189cn1zdWJzY3JpYmVfKHQsZSl7Y29uc3Qgbj10aGlzLl9iaW5kaW5nc0luZGljZXNCeVBhdGg7bGV0IGk9blt0XTtjb25zdCByPXRoaXMuX2JpbmRpbmdzO2lmKHZvaWQgMCE9PWkpcmV0dXJuIHJbaV07Y29uc3Qgbz10aGlzLl9wYXRocyxhPXRoaXMuX3BhcnNlZFBhdGhzLHM9dGhpcy5fb2JqZWN0cyxsPXRoaXMubkNhY2hlZE9iamVjdHNfLGM9bmV3IEFycmF5KHMubGVuZ3RoKTtpPXIubGVuZ3RoLG5bdF09aSxvLnB1c2godCksYS5wdXNoKGUpLHIucHVzaChjKTtmb3IobGV0IG49bCxpPXMubGVuZ3RoO24hPT1pOysrbil7Y1tuXT1uZXcgQWllKHNbbl0sdCxlKX1yZXR1cm4gY311bnN1YnNjcmliZV8odCl7Y29uc3QgZT10aGlzLl9iaW5kaW5nc0luZGljZXNCeVBhdGgsbj1lW3RdO2lmKHZvaWQgMCE9PW4pe2NvbnN0IGk9dGhpcy5fcGF0aHMscj10aGlzLl9wYXJzZWRQYXRocyxvPXRoaXMuX2JpbmRpbmdzLGE9by5sZW5ndGgtMSxzPW9bYV07ZVt0W2FdXT1uLG9bbl09cyxvLnBvcCgpLHJbbl09clthXSxyLnBvcCgpLGlbbl09aVthXSxpLnBvcCgpfX19a2llLnByb3RvdHlwZS5pc0FuaW1hdGlvbk9iamVjdEdyb3VwPSEwO2NsYXNzIExpZXtjb25zdHJ1Y3Rvcih0LGUsbj1udWxsLGk9ZS5ibGVuZE1vZGUpe3RoaXMuX21peGVyPXQsdGhpcy5fY2xpcD1lLHRoaXMuX2xvY2FsUm9vdD1uLHRoaXMuYmxlbmRNb2RlPWk7Y29uc3Qgcj1lLnRyYWNrcyxvPXIubGVuZ3RoLGE9bmV3IEFycmF5KG8pLHM9e2VuZGluZ1N0YXJ0OkgydCxlbmRpbmdFbmQ6SDJ0fTtmb3IobGV0IHQ9MDt0IT09bzsrK3Qpe2NvbnN0IGU9clt0XS5jcmVhdGVJbnRlcnBvbGFudChudWxsKTthW3RdPWUsZS5zZXR0aW5ncz1zfXRoaXMuX2ludGVycG9sYW50U2V0dGluZ3M9cyx0aGlzLl9pbnRlcnBvbGFudHM9YSx0aGlzLl9wcm9wZXJ0eUJpbmRpbmdzPW5ldyBBcnJheShvKSx0aGlzLl9jYWNoZUluZGV4PW51bGwsdGhpcy5fYnlDbGlwQ2FjaGVJbmRleD1udWxsLHRoaXMuX3RpbWVTY2FsZUludGVycG9sYW50PW51bGwsdGhpcy5fd2VpZ2h0SW50ZXJwb2xhbnQ9bnVsbCx0aGlzLmxvb3A9MjIwMSx0aGlzLl9sb29wQ291bnQ9LTEsdGhpcy5fc3RhcnRUaW1lPW51bGwsdGhpcy50aW1lPTAsdGhpcy50aW1lU2NhbGU9MSx0aGlzLl9lZmZlY3RpdmVUaW1lU2NhbGU9MSx0aGlzLndlaWdodD0xLHRoaXMuX2VmZmVjdGl2ZVdlaWdodD0xLHRoaXMucmVwZXRpdGlvbnM9MS8wLHRoaXMucGF1c2VkPSExLHRoaXMuZW5hYmxlZD0hMCx0aGlzLmNsYW1wV2hlbkZpbmlzaGVkPSExLHRoaXMuemVyb1Nsb3BlQXRTdGFydD0hMCx0aGlzLnplcm9TbG9wZUF0RW5kPSEwfXBsYXkoKXtyZXR1cm4gdGhpcy5fbWl4ZXIuX2FjdGl2YXRlQWN0aW9uKHRoaXMpLHRoaXN9c3RvcCgpe3JldHVybiB0aGlzLl9taXhlci5fZGVhY3RpdmF0ZUFjdGlvbih0aGlzKSx0aGlzLnJlc2V0KCl9cmVzZXQoKXtyZXR1cm4gdGhpcy5wYXVzZWQ9ITEsdGhpcy5lbmFibGVkPSEwLHRoaXMudGltZT0wLHRoaXMuX2xvb3BDb3VudD0tMSx0aGlzLl9zdGFydFRpbWU9bnVsbCx0aGlzLnN0b3BGYWRpbmcoKS5zdG9wV2FycGluZygpfWlzUnVubmluZygpe3JldHVybiB0aGlzLmVuYWJsZWQmJiF0aGlzLnBhdXNlZCYmMCE9PXRoaXMudGltZVNjYWxlJiZudWxsPT09dGhpcy5fc3RhcnRUaW1lJiZ0aGlzLl9taXhlci5faXNBY3RpdmVBY3Rpb24odGhpcyl9aXNTY2hlZHVsZWQoKXtyZXR1cm4gdGhpcy5fbWl4ZXIuX2lzQWN0aXZlQWN0aW9uKHRoaXMpfXN0YXJ0QXQodCl7cmV0dXJuIHRoaXMuX3N0YXJ0VGltZT10LHRoaXN9c2V0TG9vcCh0LGUpe3JldHVybiB0aGlzLmxvb3A9dCx0aGlzLnJlcGV0aXRpb25zPWUsdGhpc31zZXRFZmZlY3RpdmVXZWlnaHQodCl7cmV0dXJuIHRoaXMud2VpZ2h0PXQsdGhpcy5fZWZmZWN0aXZlV2VpZ2h0PXRoaXMuZW5hYmxlZD90OjAsdGhpcy5zdG9wRmFkaW5nKCl9Z2V0RWZmZWN0aXZlV2VpZ2h0KCl7cmV0dXJuIHRoaXMuX2VmZmVjdGl2ZVdlaWdodH1mYWRlSW4odCl7cmV0dXJuIHRoaXMuX3NjaGVkdWxlRmFkaW5nKHQsMCwxKX1mYWRlT3V0KHQpe3JldHVybiB0aGlzLl9zY2hlZHVsZUZhZGluZyh0LDEsMCl9Y3Jvc3NGYWRlRnJvbSh0LGUsbil7aWYodC5mYWRlT3V0KGUpLHRoaXMuZmFkZUluKGUpLG4pe2NvbnN0IG49dGhpcy5fY2xpcC5kdXJhdGlvbixpPXQuX2NsaXAuZHVyYXRpb24scj1uL2k7dC53YXJwKDEsaS9uLGUpLHRoaXMud2FycChyLDEsZSl9cmV0dXJuIHRoaXN9Y3Jvc3NGYWRlVG8odCxlLG4pe3JldHVybiB0LmNyb3NzRmFkZUZyb20odGhpcyxlLG4pfXN0b3BGYWRpbmcoKXtjb25zdCB0PXRoaXMuX3dlaWdodEludGVycG9sYW50O3JldHVybiBudWxsIT09dCYmKHRoaXMuX3dlaWdodEludGVycG9sYW50PW51bGwsdGhpcy5fbWl4ZXIuX3Rha2VCYWNrQ29udHJvbEludGVycG9sYW50KHQpKSx0aGlzfXNldEVmZmVjdGl2ZVRpbWVTY2FsZSh0KXtyZXR1cm4gdGhpcy50aW1lU2NhbGU9dCx0aGlzLl9lZmZlY3RpdmVUaW1lU2NhbGU9dGhpcy5wYXVzZWQ/MDp0LHRoaXMuc3RvcFdhcnBpbmcoKX1nZXRFZmZlY3RpdmVUaW1lU2NhbGUoKXtyZXR1cm4gdGhpcy5fZWZmZWN0aXZlVGltZVNjYWxlfXNldER1cmF0aW9uKHQpe3JldHVybiB0aGlzLnRpbWVTY2FsZT10aGlzLl9jbGlwLmR1cmF0aW9uL3QsdGhpcy5zdG9wV2FycGluZygpfXN5bmNXaXRoKHQpe3JldHVybiB0aGlzLnRpbWU9dC50aW1lLHRoaXMudGltZVNjYWxlPXQudGltZVNjYWxlLHRoaXMuc3RvcFdhcnBpbmcoKX1oYWx0KHQpe3JldHVybiB0aGlzLndhcnAodGhpcy5fZWZmZWN0aXZlVGltZVNjYWxlLDAsdCl9d2FycCh0LGUsbil7Y29uc3QgaT10aGlzLl9taXhlcixyPWkudGltZSxvPXRoaXMudGltZVNjYWxlO2xldCBhPXRoaXMuX3RpbWVTY2FsZUludGVycG9sYW50O251bGw9PT1hJiYoYT1pLl9sZW5kQ29udHJvbEludGVycG9sYW50KCksdGhpcy5fdGltZVNjYWxlSW50ZXJwb2xhbnQ9YSk7Y29uc3Qgcz1hLnBhcmFtZXRlclBvc2l0aW9ucyxsPWEuc2FtcGxlVmFsdWVzO3JldHVybiBzWzBdPXIsc1sxXT1yK24sbFswXT10L28sbFsxXT1lL28sdGhpc31zdG9wV2FycGluZygpe2NvbnN0IHQ9dGhpcy5fdGltZVNjYWxlSW50ZXJwb2xhbnQ7cmV0dXJuIG51bGwhPT10JiYodGhpcy5fdGltZVNjYWxlSW50ZXJwb2xhbnQ9bnVsbCx0aGlzLl9taXhlci5fdGFrZUJhY2tDb250cm9sSW50ZXJwb2xhbnQodCkpLHRoaXN9Z2V0TWl4ZXIoKXtyZXR1cm4gdGhpcy5fbWl4ZXJ9Z2V0Q2xpcCgpe3JldHVybiB0aGlzLl9jbGlwfWdldFJvb3QoKXtyZXR1cm4gdGhpcy5fbG9jYWxSb290fHx0aGlzLl9taXhlci5fcm9vdH1fdXBkYXRlKHQsZSxuLGkpe2lmKCF0aGlzLmVuYWJsZWQpcmV0dXJuIHZvaWQgdGhpcy5fdXBkYXRlV2VpZ2h0KHQpO2NvbnN0IHI9dGhpcy5fc3RhcnRUaW1lO2lmKG51bGwhPT1yKXtjb25zdCBpPSh0LXIpKm47aWYoaTwwfHwwPT09bilyZXR1cm47dGhpcy5fc3RhcnRUaW1lPW51bGwsZT1uKml9ZSo9dGhpcy5fdXBkYXRlVGltZVNjYWxlKHQpO2NvbnN0IG89dGhpcy5fdXBkYXRlVGltZShlKSxhPXRoaXMuX3VwZGF0ZVdlaWdodCh0KTtpZihhPjApe2NvbnN0IHQ9dGhpcy5faW50ZXJwb2xhbnRzLGU9dGhpcy5fcHJvcGVydHlCaW5kaW5ncztzd2l0Y2godGhpcy5ibGVuZE1vZGUpe2Nhc2UgajJ0OmZvcihsZXQgbj0wLGk9dC5sZW5ndGg7biE9PWk7KytuKXRbbl0uZXZhbHVhdGUobyksZVtuXS5hY2N1bXVsYXRlQWRkaXRpdmUoYSk7YnJlYWs7Y2FzZSBVMnQ6ZGVmYXVsdDpmb3IobGV0IG49MCxyPXQubGVuZ3RoO24hPT1yOysrbil0W25dLmV2YWx1YXRlKG8pLGVbbl0uYWNjdW11bGF0ZShpLGEpfX19X3VwZGF0ZVdlaWdodCh0KXtsZXQgZT0wO2lmKHRoaXMuZW5hYmxlZCl7ZT10aGlzLndlaWdodDtjb25zdCBuPXRoaXMuX3dlaWdodEludGVycG9sYW50O2lmKG51bGwhPT1uKXtjb25zdCBpPW4uZXZhbHVhdGUodClbMF07ZSo9aSx0Pm4ucGFyYW1ldGVyUG9zaXRpb25zWzFdJiYodGhpcy5zdG9wRmFkaW5nKCksMD09PWkmJih0aGlzLmVuYWJsZWQ9ITEpKX19cmV0dXJuIHRoaXMuX2VmZmVjdGl2ZVdlaWdodD1lLGV9X3VwZGF0ZVRpbWVTY2FsZSh0KXtsZXQgZT0wO2lmKCF0aGlzLnBhdXNlZCl7ZT10aGlzLnRpbWVTY2FsZTtjb25zdCBuPXRoaXMuX3RpbWVTY2FsZUludGVycG9sYW50O2lmKG51bGwhPT1uKXtlKj1uLmV2YWx1YXRlKHQpWzBdLHQ+bi5wYXJhbWV0ZXJQb3NpdGlvbnNbMV0mJih0aGlzLnN0b3BXYXJwaW5nKCksMD09PWU/dGhpcy5wYXVzZWQ9ITA6dGhpcy50aW1lU2NhbGU9ZSl9fXJldHVybiB0aGlzLl9lZmZlY3RpdmVUaW1lU2NhbGU9ZSxlfV91cGRhdGVUaW1lKHQpe2NvbnN0IGU9dGhpcy5fY2xpcC5kdXJhdGlvbixuPXRoaXMubG9vcDtsZXQgaT10aGlzLnRpbWUrdCxyPXRoaXMuX2xvb3BDb3VudDtjb25zdCBvPTIyMDI9PT1uO2lmKDA9PT10KXJldHVybi0xPT09cj9pOm8mJjE9PSgxJnIpP2UtaTppO2lmKDIyMDA9PT1uKXstMT09PXImJih0aGlzLl9sb29wQ291bnQ9MCx0aGlzLl9zZXRFbmRpbmdzKCEwLCEwLCExKSk7dDp7aWYoaT49ZSlpPWU7ZWxzZXtpZighKGk8MCkpe3RoaXMudGltZT1pO2JyZWFrIHR9aT0wfXRoaXMuY2xhbXBXaGVuRmluaXNoZWQ/dGhpcy5wYXVzZWQ9ITA6dGhpcy5lbmFibGVkPSExLHRoaXMudGltZT1pLHRoaXMuX21peGVyLmRpc3BhdGNoRXZlbnQoe3R5cGU6ImZpbmlzaGVkIixhY3Rpb246dGhpcyxkaXJlY3Rpb246dDwwPy0xOjF9KX19ZWxzZXtpZigtMT09PXImJih0Pj0wPyhyPTAsdGhpcy5fc2V0RW5kaW5ncyghMCwwPT09dGhpcy5yZXBldGl0aW9ucyxvKSk6dGhpcy5fc2V0RW5kaW5ncygwPT09dGhpcy5yZXBldGl0aW9ucywhMCxvKSksaT49ZXx8aTwwKXtjb25zdCBuPU1hdGguZmxvb3IoaS9lKTtpLT1lKm4scis9TWF0aC5hYnMobik7Y29uc3QgYT10aGlzLnJlcGV0aXRpb25zLXI7aWYoYTw9MCl0aGlzLmNsYW1wV2hlbkZpbmlzaGVkP3RoaXMucGF1c2VkPSEwOnRoaXMuZW5hYmxlZD0hMSxpPXQ+MD9lOjAsdGhpcy50aW1lPWksdGhpcy5fbWl4ZXIuZGlzcGF0Y2hFdmVudCh7dHlwZToiZmluaXNoZWQiLGFjdGlvbjp0aGlzLGRpcmVjdGlvbjp0PjA/MTotMX0pO2Vsc2V7aWYoMT09PWEpe2NvbnN0IGU9dDwwO3RoaXMuX3NldEVuZGluZ3MoZSwhZSxvKX1lbHNlIHRoaXMuX3NldEVuZGluZ3MoITEsITEsbyk7dGhpcy5fbG9vcENvdW50PXIsdGhpcy50aW1lPWksdGhpcy5fbWl4ZXIuZGlzcGF0Y2hFdmVudCh7dHlwZToibG9vcCIsYWN0aW9uOnRoaXMsbG9vcERlbHRhOm59KX19ZWxzZSB0aGlzLnRpbWU9aTtpZihvJiYxPT0oMSZyKSlyZXR1cm4gZS1pfXJldHVybiBpfV9zZXRFbmRpbmdzKHQsZSxuKXtjb25zdCBpPXRoaXMuX2ludGVycG9sYW50U2V0dGluZ3M7bj8oaS5lbmRpbmdTdGFydD1GMnQsaS5lbmRpbmdFbmQ9RjJ0KTooaS5lbmRpbmdTdGFydD10P3RoaXMuemVyb1Nsb3BlQXRTdGFydD9GMnQ6SDJ0OlYydCxpLmVuZGluZ0VuZD1lP3RoaXMuemVyb1Nsb3BlQXRFbmQ/RjJ0OkgydDpWMnQpfV9zY2hlZHVsZUZhZGluZyh0LGUsbil7Y29uc3QgaT10aGlzLl9taXhlcixyPWkudGltZTtsZXQgbz10aGlzLl93ZWlnaHRJbnRlcnBvbGFudDtudWxsPT09byYmKG89aS5fbGVuZENvbnRyb2xJbnRlcnBvbGFudCgpLHRoaXMuX3dlaWdodEludGVycG9sYW50PW8pO2NvbnN0IGE9by5wYXJhbWV0ZXJQb3NpdGlvbnMscz1vLnNhbXBsZVZhbHVlcztyZXR1cm4gYVswXT1yLHNbMF09ZSxhWzFdPXIrdCxzWzFdPW4sdGhpc319Y2xhc3MgUGllIGV4dGVuZHMgZTV0e2NvbnN0cnVjdG9yKHQpe3N1cGVyKCksdGhpcy5fcm9vdD10LHRoaXMuX2luaXRNZW1vcnlNYW5hZ2VyKCksdGhpcy5fYWNjdUluZGV4PTAsdGhpcy50aW1lPTAsdGhpcy50aW1lU2NhbGU9MX1fYmluZEFjdGlvbih0LGUpe2NvbnN0IG49dC5fbG9jYWxSb290fHx0aGlzLl9yb290LGk9dC5fY2xpcC50cmFja3Mscj1pLmxlbmd0aCxvPXQuX3Byb3BlcnR5QmluZGluZ3MsYT10Ll9pbnRlcnBvbGFudHMscz1uLnV1aWQsbD10aGlzLl9iaW5kaW5nc0J5Um9vdEFuZE5hbWU7bGV0IGM9bFtzXTt2b2lkIDA9PT1jJiYoYz17fSxsW3NdPWMpO2ZvcihsZXQgdD0wO3QhPT1yOysrdCl7Y29uc3Qgcj1pW3RdLGw9ci5uYW1lO2xldCB1PWNbbF07aWYodm9pZCAwIT09dSlvW3RdPXU7ZWxzZXtpZih1PW9bdF0sdm9pZCAwIT09dSl7bnVsbD09PXUuX2NhY2hlSW5kZXgmJigrK3UucmVmZXJlbmNlQ291bnQsdGhpcy5fYWRkSW5hY3RpdmVCaW5kaW5nKHUscyxsKSk7Y29udGludWV9dT1uZXcgX2llKEFpZS5jcmVhdGUobixsLGUmJmUuX3Byb3BlcnR5QmluZGluZ3NbdF0uYmluZGluZy5wYXJzZWRQYXRoKSxyLlZhbHVlVHlwZU5hbWUsci5nZXRWYWx1ZVNpemUoKSksKyt1LnJlZmVyZW5jZUNvdW50LHRoaXMuX2FkZEluYWN0aXZlQmluZGluZyh1LHMsbCksb1t0XT11fWFbdF0ucmVzdWx0QnVmZmVyPXUuYnVmZmVyfX1fYWN0aXZhdGVBY3Rpb24odCl7aWYoIXRoaXMuX2lzQWN0aXZlQWN0aW9uKHQpKXtpZihudWxsPT09dC5fY2FjaGVJbmRleCl7Y29uc3QgZT0odC5fbG9jYWxSb290fHx0aGlzLl9yb290KS51dWlkLG49dC5fY2xpcC51dWlkLGk9dGhpcy5fYWN0aW9uc0J5Q2xpcFtuXTt0aGlzLl9iaW5kQWN0aW9uKHQsaSYmaS5rbm93bkFjdGlvbnNbMF0pLHRoaXMuX2FkZEluYWN0aXZlQWN0aW9uKHQsbixlKX1jb25zdCBlPXQuX3Byb3BlcnR5QmluZGluZ3M7Zm9yKGxldCB0PTAsbj1lLmxlbmd0aDt0IT09bjsrK3Qpe2NvbnN0IG49ZVt0XTswPT1uLnVzZUNvdW50KysmJih0aGlzLl9sZW5kQmluZGluZyhuKSxuLnNhdmVPcmlnaW5hbFN0YXRlKCkpfXRoaXMuX2xlbmRBY3Rpb24odCl9fV9kZWFjdGl2YXRlQWN0aW9uKHQpe2lmKHRoaXMuX2lzQWN0aXZlQWN0aW9uKHQpKXtjb25zdCBlPXQuX3Byb3BlcnR5QmluZGluZ3M7Zm9yKGxldCB0PTAsbj1lLmxlbmd0aDt0IT09bjsrK3Qpe2NvbnN0IG49ZVt0XTswPT0tLW4udXNlQ291bnQmJihuLnJlc3RvcmVPcmlnaW5hbFN0YXRlKCksdGhpcy5fdGFrZUJhY2tCaW5kaW5nKG4pKX10aGlzLl90YWtlQmFja0FjdGlvbih0KX19X2luaXRNZW1vcnlNYW5hZ2VyKCl7dGhpcy5fYWN0aW9ucz1bXSx0aGlzLl9uQWN0aXZlQWN0aW9ucz0wLHRoaXMuX2FjdGlvbnNCeUNsaXA9e30sdGhpcy5fYmluZGluZ3M9W10sdGhpcy5fbkFjdGl2ZUJpbmRpbmdzPTAsdGhpcy5fYmluZGluZ3NCeVJvb3RBbmROYW1lPXt9LHRoaXMuX2NvbnRyb2xJbnRlcnBvbGFudHM9W10sdGhpcy5fbkFjdGl2ZUNvbnRyb2xJbnRlcnBvbGFudHM9MDtjb25zdCB0PXRoaXM7dGhpcy5zdGF0cz17YWN0aW9uczp7Z2V0IHRvdGFsKCl7cmV0dXJuIHQuX2FjdGlvbnMubGVuZ3RofSxnZXQgaW5Vc2UoKXtyZXR1cm4gdC5fbkFjdGl2ZUFjdGlvbnN9fSxiaW5kaW5nczp7Z2V0IHRvdGFsKCl7cmV0dXJuIHQuX2JpbmRpbmdzLmxlbmd0aH0sZ2V0IGluVXNlKCl7cmV0dXJuIHQuX25BY3RpdmVCaW5kaW5nc319LGNvbnRyb2xJbnRlcnBvbGFudHM6e2dldCB0b3RhbCgpe3JldHVybiB0Ll9jb250cm9sSW50ZXJwb2xhbnRzLmxlbmd0aH0sZ2V0IGluVXNlKCl7cmV0dXJuIHQuX25BY3RpdmVDb250cm9sSW50ZXJwb2xhbnRzfX19fV9pc0FjdGl2ZUFjdGlvbih0KXtjb25zdCBlPXQuX2NhY2hlSW5kZXg7cmV0dXJuIG51bGwhPT1lJiZlPHRoaXMuX25BY3RpdmVBY3Rpb25zfV9hZGRJbmFjdGl2ZUFjdGlvbih0LGUsbil7Y29uc3QgaT10aGlzLl9hY3Rpb25zLHI9dGhpcy5fYWN0aW9uc0J5Q2xpcDtsZXQgbz1yW2VdO2lmKHZvaWQgMD09PW8pbz17a25vd25BY3Rpb25zOlt0XSxhY3Rpb25CeVJvb3Q6e319LHQuX2J5Q2xpcENhY2hlSW5kZXg9MCxyW2VdPW87ZWxzZXtjb25zdCBlPW8ua25vd25BY3Rpb25zO3QuX2J5Q2xpcENhY2hlSW5kZXg9ZS5sZW5ndGgsZS5wdXNoKHQpfXQuX2NhY2hlSW5kZXg9aS5sZW5ndGgsaS5wdXNoKHQpLG8uYWN0aW9uQnlSb290W25dPXR9X3JlbW92ZUluYWN0aXZlQWN0aW9uKHQpe2NvbnN0IGU9dGhpcy5fYWN0aW9ucyxuPWVbZS5sZW5ndGgtMV0saT10Ll9jYWNoZUluZGV4O24uX2NhY2hlSW5kZXg9aSxlW2ldPW4sZS5wb3AoKSx0Ll9jYWNoZUluZGV4PW51bGw7Y29uc3Qgcj10Ll9jbGlwLnV1aWQsbz10aGlzLl9hY3Rpb25zQnlDbGlwLGE9b1tyXSxzPWEua25vd25BY3Rpb25zLGw9c1tzLmxlbmd0aC0xXSxjPXQuX2J5Q2xpcENhY2hlSW5kZXg7bC5fYnlDbGlwQ2FjaGVJbmRleD1jLHNbY109bCxzLnBvcCgpLHQuX2J5Q2xpcENhY2hlSW5kZXg9bnVsbDtkZWxldGUgYS5hY3Rpb25CeVJvb3RbKHQuX2xvY2FsUm9vdHx8dGhpcy5fcm9vdCkudXVpZF0sMD09PXMubGVuZ3RoJiZkZWxldGUgb1tyXSx0aGlzLl9yZW1vdmVJbmFjdGl2ZUJpbmRpbmdzRm9yQWN0aW9uKHQpfV9yZW1vdmVJbmFjdGl2ZUJpbmRpbmdzRm9yQWN0aW9uKHQpe2NvbnN0IGU9dC5fcHJvcGVydHlCaW5kaW5ncztmb3IobGV0IHQ9MCxuPWUubGVuZ3RoO3QhPT1uOysrdCl7Y29uc3Qgbj1lW3RdOzA9PS0tbi5yZWZlcmVuY2VDb3VudCYmdGhpcy5fcmVtb3ZlSW5hY3RpdmVCaW5kaW5nKG4pfX1fbGVuZEFjdGlvbih0KXtjb25zdCBlPXRoaXMuX2FjdGlvbnMsbj10Ll9jYWNoZUluZGV4LGk9dGhpcy5fbkFjdGl2ZUFjdGlvbnMrKyxyPWVbaV07dC5fY2FjaGVJbmRleD1pLGVbaV09dCxyLl9jYWNoZUluZGV4PW4sZVtuXT1yfV90YWtlQmFja0FjdGlvbih0KXtjb25zdCBlPXRoaXMuX2FjdGlvbnMsbj10Ll9jYWNoZUluZGV4LGk9LS10aGlzLl9uQWN0aXZlQWN0aW9ucyxyPWVbaV07dC5fY2FjaGVJbmRleD1pLGVbaV09dCxyLl9jYWNoZUluZGV4PW4sZVtuXT1yfV9hZGRJbmFjdGl2ZUJpbmRpbmcodCxlLG4pe2NvbnN0IGk9dGhpcy5fYmluZGluZ3NCeVJvb3RBbmROYW1lLHI9dGhpcy5fYmluZGluZ3M7bGV0IG89aVtlXTt2b2lkIDA9PT1vJiYobz17fSxpW2VdPW8pLG9bbl09dCx0Ll9jYWNoZUluZGV4PXIubGVuZ3RoLHIucHVzaCh0KX1fcmVtb3ZlSW5hY3RpdmVCaW5kaW5nKHQpe2NvbnN0IGU9dGhpcy5fYmluZGluZ3Msbj10LmJpbmRpbmcsaT1uLnJvb3ROb2RlLnV1aWQscj1uLnBhdGgsbz10aGlzLl9iaW5kaW5nc0J5Um9vdEFuZE5hbWUsYT1vW2ldLHM9ZVtlLmxlbmd0aC0xXSxsPXQuX2NhY2hlSW5kZXg7cy5fY2FjaGVJbmRleD1sLGVbbF09cyxlLnBvcCgpLGRlbGV0ZSBhW3JdLDA9PT1PYmplY3Qua2V5cyhhKS5sZW5ndGgmJmRlbGV0ZSBvW2ldfV9sZW5kQmluZGluZyh0KXtjb25zdCBlPXRoaXMuX2JpbmRpbmdzLG49dC5fY2FjaGVJbmRleCxpPXRoaXMuX25BY3RpdmVCaW5kaW5ncysrLHI9ZVtpXTt0Ll9jYWNoZUluZGV4PWksZVtpXT10LHIuX2NhY2hlSW5kZXg9bixlW25dPXJ9X3Rha2VCYWNrQmluZGluZyh0KXtjb25zdCBlPXRoaXMuX2JpbmRpbmdzLG49dC5fY2FjaGVJbmRleCxpPS0tdGhpcy5fbkFjdGl2ZUJpbmRpbmdzLHI9ZVtpXTt0Ll9jYWNoZUluZGV4PWksZVtpXT10LHIuX2NhY2hlSW5kZXg9bixlW25dPXJ9X2xlbmRDb250cm9sSW50ZXJwb2xhbnQoKXtjb25zdCB0PXRoaXMuX2NvbnRyb2xJbnRlcnBvbGFudHMsZT10aGlzLl9uQWN0aXZlQ29udHJvbEludGVycG9sYW50cysrO2xldCBuPXRbZV07cmV0dXJuIHZvaWQgMD09PW4mJihuPW5ldyBLZWUobmV3IEZsb2F0MzJBcnJheSgyKSxuZXcgRmxvYXQzMkFycmF5KDIpLDEsdGhpcy5fY29udHJvbEludGVycG9sYW50c1Jlc3VsdEJ1ZmZlciksbi5fX2NhY2hlSW5kZXg9ZSx0W2VdPW4pLG59X3Rha2VCYWNrQ29udHJvbEludGVycG9sYW50KHQpe2NvbnN0IGU9dGhpcy5fY29udHJvbEludGVycG9sYW50cyxuPXQuX19jYWNoZUluZGV4LGk9LS10aGlzLl9uQWN0aXZlQ29udHJvbEludGVycG9sYW50cyxyPWVbaV07dC5fX2NhY2hlSW5kZXg9aSxlW2ldPXQsci5fX2NhY2hlSW5kZXg9bixlW25dPXJ9Y2xpcEFjdGlvbih0LGUsbil7Y29uc3QgaT1lfHx0aGlzLl9yb290LHI9aS51dWlkO2xldCBvPSJzdHJpbmciPT10eXBlb2YgdD9hbmUuZmluZEJ5TmFtZShpLHQpOnQ7Y29uc3QgYT1udWxsIT09bz9vLnV1aWQ6dCxzPXRoaXMuX2FjdGlvbnNCeUNsaXBbYV07bGV0IGw9bnVsbDtpZih2b2lkIDA9PT1uJiYobj1udWxsIT09bz9vLmJsZW5kTW9kZTpVMnQpLHZvaWQgMCE9PXMpe2NvbnN0IHQ9cy5hY3Rpb25CeVJvb3Rbcl07aWYodm9pZCAwIT09dCYmdC5ibGVuZE1vZGU9PT1uKXJldHVybiB0O2w9cy5rbm93bkFjdGlvbnNbMF0sbnVsbD09PW8mJihvPWwuX2NsaXApfWlmKG51bGw9PT1vKXJldHVybiBudWxsO2NvbnN0IGM9bmV3IExpZSh0aGlzLG8sZSxuKTtyZXR1cm4gdGhpcy5fYmluZEFjdGlvbihjLGwpLHRoaXMuX2FkZEluYWN0aXZlQWN0aW9uKGMsYSxyKSxjfWV4aXN0aW5nQWN0aW9uKHQsZSl7Y29uc3Qgbj1lfHx0aGlzLl9yb290LGk9bi51dWlkLHI9InN0cmluZyI9PXR5cGVvZiB0P2FuZS5maW5kQnlOYW1lKG4sdCk6dCxvPXRoaXMuX2FjdGlvbnNCeUNsaXBbcj9yLnV1aWQ6dF07cmV0dXJuIHZvaWQgMCE9PW8mJm8uYWN0aW9uQnlSb290W2ldfHxudWxsfXN0b3BBbGxBY3Rpb24oKXtjb25zdCB0PXRoaXMuX2FjdGlvbnM7Zm9yKGxldCBlPXRoaXMuX25BY3RpdmVBY3Rpb25zLTE7ZT49MDstLWUpdFtlXS5zdG9wKCk7cmV0dXJuIHRoaXN9dXBkYXRlKHQpe2NvbnN0IGU9dGhpcy5fYWN0aW9ucyxuPXRoaXMuX25BY3RpdmVBY3Rpb25zLGk9dGhpcy50aW1lKz10Kj10aGlzLnRpbWVTY2FsZSxyPU1hdGguc2lnbih0KSxvPXRoaXMuX2FjY3VJbmRleF49MTtmb3IobGV0IGE9MDthIT09bjsrK2Epe2VbYV0uX3VwZGF0ZShpLHQscixvKX1jb25zdCBhPXRoaXMuX2JpbmRpbmdzLHM9dGhpcy5fbkFjdGl2ZUJpbmRpbmdzO2ZvcihsZXQgdD0wO3QhPT1zOysrdClhW3RdLmFwcGx5KG8pO3JldHVybiB0aGlzfXNldFRpbWUodCl7dGhpcy50aW1lPTA7Zm9yKGxldCB0PTA7dDx0aGlzLl9hY3Rpb25zLmxlbmd0aDt0KyspdGhpcy5fYWN0aW9uc1t0XS50aW1lPTA7cmV0dXJuIHRoaXMudXBkYXRlKHQpfWdldFJvb3QoKXtyZXR1cm4gdGhpcy5fcm9vdH11bmNhY2hlQ2xpcCh0KXtjb25zdCBlPXRoaXMuX2FjdGlvbnMsbj10LnV1aWQsaT10aGlzLl9hY3Rpb25zQnlDbGlwLHI9aVtuXTtpZih2b2lkIDAhPT1yKXtjb25zdCB0PXIua25vd25BY3Rpb25zO2ZvcihsZXQgbj0wLGk9dC5sZW5ndGg7biE9PWk7KytuKXtjb25zdCBpPXRbbl07dGhpcy5fZGVhY3RpdmF0ZUFjdGlvbihpKTtjb25zdCByPWkuX2NhY2hlSW5kZXgsbz1lW2UubGVuZ3RoLTFdO2kuX2NhY2hlSW5kZXg9bnVsbCxpLl9ieUNsaXBDYWNoZUluZGV4PW51bGwsby5fY2FjaGVJbmRleD1yLGVbcl09byxlLnBvcCgpLHRoaXMuX3JlbW92ZUluYWN0aXZlQmluZGluZ3NGb3JBY3Rpb24oaSl9ZGVsZXRlIGlbbl19fXVuY2FjaGVSb290KHQpe2NvbnN0IGU9dC51dWlkLG49dGhpcy5fYWN0aW9uc0J5Q2xpcDtmb3IoY29uc3QgdCBpbiBuKXtjb25zdCBpPW5bdF0uYWN0aW9uQnlSb290W2VdO3ZvaWQgMCE9PWkmJih0aGlzLl9kZWFjdGl2YXRlQWN0aW9uKGkpLHRoaXMuX3JlbW92ZUluYWN0aXZlQWN0aW9uKGkpKX1jb25zdCBpPXRoaXMuX2JpbmRpbmdzQnlSb290QW5kTmFtZVtlXTtpZih2b2lkIDAhPT1pKWZvcihjb25zdCB0IGluIGkpe2NvbnN0IGU9aVt0XTtlLnJlc3RvcmVPcmlnaW5hbFN0YXRlKCksdGhpcy5fcmVtb3ZlSW5hY3RpdmVCaW5kaW5nKGUpfX11bmNhY2hlQWN0aW9uKHQsZSl7Y29uc3Qgbj10aGlzLmV4aXN0aW5nQWN0aW9uKHQsZSk7bnVsbCE9PW4mJih0aGlzLl9kZWFjdGl2YXRlQWN0aW9uKG4pLHRoaXMuX3JlbW92ZUluYWN0aXZlQWN0aW9uKG4pKX19UGllLnByb3RvdHlwZS5fY29udHJvbEludGVycG9sYW50c1Jlc3VsdEJ1ZmZlcj1uZXcgRmxvYXQzMkFycmF5KDEpO2NsYXNzIE5pZXtjb25zdHJ1Y3Rvcih0KXsic3RyaW5nIj09dHlwZW9mIHQmJihjb25zb2xlLndhcm4oIlRIUkVFLlVuaWZvcm06IFR5cGUgcGFyYW1ldGVyIGlzIG5vIGxvbmdlciBuZWVkZWQuIiksdD1hcmd1bWVudHNbMV0pLHRoaXMudmFsdWU9dH1jbG9uZSgpe3JldHVybiBuZXcgTmllKHZvaWQgMD09PXRoaXMudmFsdWUuY2xvbmU/dGhpcy52YWx1ZTp0aGlzLnZhbHVlLmNsb25lKCkpfX1jbGFzcyBJaWUgZXh0ZW5kcyB1N3R7Y29uc3RydWN0b3IodCxlLG49MSl7c3VwZXIodCxlKSx0aGlzLm1lc2hQZXJBdHRyaWJ1dGU9bn1jb3B5KHQpe3JldHVybiBzdXBlci5jb3B5KHQpLHRoaXMubWVzaFBlckF0dHJpYnV0ZT10Lm1lc2hQZXJBdHRyaWJ1dGUsdGhpc31jbG9uZSh0KXtjb25zdCBlPXN1cGVyLmNsb25lKHQpO3JldHVybiBlLm1lc2hQZXJBdHRyaWJ1dGU9dGhpcy5tZXNoUGVyQXR0cmlidXRlLGV9dG9KU09OKHQpe2NvbnN0IGU9c3VwZXIudG9KU09OKHQpO3JldHVybiBlLmlzSW5zdGFuY2VkSW50ZXJsZWF2ZWRCdWZmZXI9ITAsZS5tZXNoUGVyQXR0cmlidXRlPXRoaXMubWVzaFBlckF0dHJpYnV0ZSxlfX1JaWUucHJvdG90eXBlLmlzSW5zdGFuY2VkSW50ZXJsZWF2ZWRCdWZmZXI9ITA7Y2xhc3MgUmlle2NvbnN0cnVjdG9yKHQsZSxuLGkscil7dGhpcy5idWZmZXI9dCx0aGlzLnR5cGU9ZSx0aGlzLml0ZW1TaXplPW4sdGhpcy5lbGVtZW50U2l6ZT1pLHRoaXMuY291bnQ9cix0aGlzLnZlcnNpb249MH1zZXQgbmVlZHNVcGRhdGUodCl7ITA9PT10JiZ0aGlzLnZlcnNpb24rK31zZXRCdWZmZXIodCl7cmV0dXJuIHRoaXMuYnVmZmVyPXQsdGhpc31zZXRUeXBlKHQsZSl7cmV0dXJuIHRoaXMudHlwZT10LHRoaXMuZWxlbWVudFNpemU9ZSx0aGlzfXNldEl0ZW1TaXplKHQpe3JldHVybiB0aGlzLml0ZW1TaXplPXQsdGhpc31zZXRDb3VudCh0KXtyZXR1cm4gdGhpcy5jb3VudD10LHRoaXN9fVJpZS5wcm90b3R5cGUuaXNHTEJ1ZmZlckF0dHJpYnV0ZT0hMDtmdW5jdGlvbiBPaWUodCxlKXtyZXR1cm4gdC5kaXN0YW5jZS1lLmRpc3RhbmNlfWZ1bmN0aW9uIHppZSh0LGUsbixpKXtpZih0LmxheWVycy50ZXN0KGUubGF5ZXJzKSYmdC5yYXljYXN0KGUsbiksITA9PT1pKXtjb25zdCBpPXQuY2hpbGRyZW47Zm9yKGxldCB0PTAscj1pLmxlbmd0aDt0PHI7dCsrKXppZShpW3RdLGUsbiwhMCl9fWNsYXNzIERpZXtjb25zdHJ1Y3Rvcih0PTEsZT0wLG49MCl7cmV0dXJuIHRoaXMucmFkaXVzPXQsdGhpcy5waGk9ZSx0aGlzLnRoZXRhPW4sdGhpc31zZXQodCxlLG4pe3JldHVybiB0aGlzLnJhZGl1cz10LHRoaXMucGhpPWUsdGhpcy50aGV0YT1uLHRoaXN9Y29weSh0KXtyZXR1cm4gdGhpcy5yYWRpdXM9dC5yYWRpdXMsdGhpcy5waGk9dC5waGksdGhpcy50aGV0YT10LnRoZXRhLHRoaXN9bWFrZVNhZmUoKXtjb25zdCB0PTFlLTY7cmV0dXJuIHRoaXMucGhpPU1hdGgubWF4KHQsTWF0aC5taW4oTWF0aC5QSS10LHRoaXMucGhpKSksdGhpc31zZXRGcm9tVmVjdG9yMyh0KXtyZXR1cm4gdGhpcy5zZXRGcm9tQ2FydGVzaWFuQ29vcmRzKHQueCx0LnksdC56KX1zZXRGcm9tQ2FydGVzaWFuQ29vcmRzKHQsZSxuKXtyZXR1cm4gdGhpcy5yYWRpdXM9TWF0aC5zcXJ0KHQqdCtlKmUrbipuKSwwPT09dGhpcy5yYWRpdXM/KHRoaXMudGhldGE9MCx0aGlzLnBoaT0wKToodGhpcy50aGV0YT1NYXRoLmF0YW4yKHQsbiksdGhpcy5waGk9TWF0aC5hY29zKHM1dChlL3RoaXMucmFkaXVzLC0xLDEpKSksdGhpc31jbG9uZSgpe3JldHVybihuZXcgdGhpcy5jb25zdHJ1Y3RvcikuY29weSh0aGlzKX19Y29uc3QgQmllPW5ldyBDNXQ7Y2xhc3MgSGlle2NvbnN0cnVjdG9yKHQ9bmV3IEM1dCgxLzAsMS8wKSxlPW5ldyBDNXQoLTEvMCwtMS8wKSl7dGhpcy5taW49dCx0aGlzLm1heD1lfXNldCh0LGUpe3JldHVybiB0aGlzLm1pbi5jb3B5KHQpLHRoaXMubWF4LmNvcHkoZSksdGhpc31zZXRGcm9tUG9pbnRzKHQpe3RoaXMubWFrZUVtcHR5KCk7Zm9yKGxldCBlPTAsbj10Lmxlbmd0aDtlPG47ZSsrKXRoaXMuZXhwYW5kQnlQb2ludCh0W2VdKTtyZXR1cm4gdGhpc31zZXRGcm9tQ2VudGVyQW5kU2l6ZSh0LGUpe2NvbnN0IG49QmllLmNvcHkoZSkubXVsdGlwbHlTY2FsYXIoLjUpO3JldHVybiB0aGlzLm1pbi5jb3B5KHQpLnN1YihuKSx0aGlzLm1heC5jb3B5KHQpLmFkZChuKSx0aGlzfWNsb25lKCl7cmV0dXJuKG5ldyB0aGlzLmNvbnN0cnVjdG9yKS5jb3B5KHRoaXMpfWNvcHkodCl7cmV0dXJuIHRoaXMubWluLmNvcHkodC5taW4pLHRoaXMubWF4LmNvcHkodC5tYXgpLHRoaXN9bWFrZUVtcHR5KCl7cmV0dXJuIHRoaXMubWluLng9dGhpcy5taW4ueT0xLzAsdGhpcy5tYXgueD10aGlzLm1heC55PS0xLzAsdGhpc31pc0VtcHR5KCl7cmV0dXJuIHRoaXMubWF4Lng8dGhpcy5taW4ueHx8dGhpcy5tYXgueTx0aGlzLm1pbi55fWdldENlbnRlcih0KXtyZXR1cm4gdGhpcy5pc0VtcHR5KCk/dC5zZXQoMCwwKTp0LmFkZFZlY3RvcnModGhpcy5taW4sdGhpcy5tYXgpLm11bHRpcGx5U2NhbGFyKC41KX1nZXRTaXplKHQpe3JldHVybiB0aGlzLmlzRW1wdHkoKT90LnNldCgwLDApOnQuc3ViVmVjdG9ycyh0aGlzLm1heCx0aGlzLm1pbil9ZXhwYW5kQnlQb2ludCh0KXtyZXR1cm4gdGhpcy5taW4ubWluKHQpLHRoaXMubWF4Lm1heCh0KSx0aGlzfWV4cGFuZEJ5VmVjdG9yKHQpe3JldHVybiB0aGlzLm1pbi5zdWIodCksdGhpcy5tYXguYWRkKHQpLHRoaXN9ZXhwYW5kQnlTY2FsYXIodCl7cmV0dXJuIHRoaXMubWluLmFkZFNjYWxhcigtdCksdGhpcy5tYXguYWRkU2NhbGFyKHQpLHRoaXN9Y29udGFpbnNQb2ludCh0KXtyZXR1cm4hKHQueDx0aGlzLm1pbi54fHx0Lng+dGhpcy5tYXgueHx8dC55PHRoaXMubWluLnl8fHQueT50aGlzLm1heC55KX1jb250YWluc0JveCh0KXtyZXR1cm4gdGhpcy5taW4ueDw9dC5taW4ueCYmdC5tYXgueDw9dGhpcy5tYXgueCYmdGhpcy5taW4ueTw9dC5taW4ueSYmdC5tYXgueTw9dGhpcy5tYXgueX1nZXRQYXJhbWV0ZXIodCxlKXtyZXR1cm4gZS5zZXQoKHQueC10aGlzLm1pbi54KS8odGhpcy5tYXgueC10aGlzLm1pbi54KSwodC55LXRoaXMubWluLnkpLyh0aGlzLm1heC55LXRoaXMubWluLnkpKX1pbnRlcnNlY3RzQm94KHQpe3JldHVybiEodC5tYXgueDx0aGlzLm1pbi54fHx0Lm1pbi54PnRoaXMubWF4Lnh8fHQubWF4Lnk8dGhpcy5taW4ueXx8dC5taW4ueT50aGlzLm1heC55KX1jbGFtcFBvaW50KHQsZSl7cmV0dXJuIGUuY29weSh0KS5jbGFtcCh0aGlzLm1pbix0aGlzLm1heCl9ZGlzdGFuY2VUb1BvaW50KHQpe3JldHVybiBCaWUuY29weSh0KS5jbGFtcCh0aGlzLm1pbix0aGlzLm1heCkuc3ViKHQpLmxlbmd0aCgpfWludGVyc2VjdCh0KXtyZXR1cm4gdGhpcy5taW4ubWF4KHQubWluKSx0aGlzLm1heC5taW4odC5tYXgpLHRoaXN9dW5pb24odCl7cmV0dXJuIHRoaXMubWluLm1pbih0Lm1pbiksdGhpcy5tYXgubWF4KHQubWF4KSx0aGlzfXRyYW5zbGF0ZSh0KXtyZXR1cm4gdGhpcy5taW4uYWRkKHQpLHRoaXMubWF4LmFkZCh0KSx0aGlzfWVxdWFscyh0KXtyZXR1cm4gdC5taW4uZXF1YWxzKHRoaXMubWluKSYmdC5tYXguZXF1YWxzKHRoaXMubWF4KX19SGllLnByb3RvdHlwZS5pc0JveDI9ITA7Y29uc3QgRmllPW5ldyBINXQsVmllPW5ldyBINXQ7Y2xhc3MgVWlle2NvbnN0cnVjdG9yKHQ9bmV3IEg1dCxlPW5ldyBINXQpe3RoaXMuc3RhcnQ9dCx0aGlzLmVuZD1lfXNldCh0LGUpe3JldHVybiB0aGlzLnN0YXJ0LmNvcHkodCksdGhpcy5lbmQuY29weShlKSx0aGlzfWNvcHkodCl7cmV0dXJuIHRoaXMuc3RhcnQuY29weSh0LnN0YXJ0KSx0aGlzLmVuZC5jb3B5KHQuZW5kKSx0aGlzfWdldENlbnRlcih0KXtyZXR1cm4gdC5hZGRWZWN0b3JzKHRoaXMuc3RhcnQsdGhpcy5lbmQpLm11bHRpcGx5U2NhbGFyKC41KX1kZWx0YSh0KXtyZXR1cm4gdC5zdWJWZWN0b3JzKHRoaXMuZW5kLHRoaXMuc3RhcnQpfWRpc3RhbmNlU3EoKXtyZXR1cm4gdGhpcy5zdGFydC5kaXN0YW5jZVRvU3F1YXJlZCh0aGlzLmVuZCl9ZGlzdGFuY2UoKXtyZXR1cm4gdGhpcy5zdGFydC5kaXN0YW5jZVRvKHRoaXMuZW5kKX1hdCh0LGUpe3JldHVybiB0aGlzLmRlbHRhKGUpLm11bHRpcGx5U2NhbGFyKHQpLmFkZCh0aGlzLnN0YXJ0KX1jbG9zZXN0UG9pbnRUb1BvaW50UGFyYW1ldGVyKHQsZSl7RmllLnN1YlZlY3RvcnModCx0aGlzLnN0YXJ0KSxWaWUuc3ViVmVjdG9ycyh0aGlzLmVuZCx0aGlzLnN0YXJ0KTtjb25zdCBuPVZpZS5kb3QoVmllKTtsZXQgaT1WaWUuZG90KEZpZSkvbjtyZXR1cm4gZSYmKGk9czV0KGksMCwxKSksaX1jbG9zZXN0UG9pbnRUb1BvaW50KHQsZSxuKXtjb25zdCBpPXRoaXMuY2xvc2VzdFBvaW50VG9Qb2ludFBhcmFtZXRlcih0LGUpO3JldHVybiB0aGlzLmRlbHRhKG4pLm11bHRpcGx5U2NhbGFyKGkpLmFkZCh0aGlzLnN0YXJ0KX1hcHBseU1hdHJpeDQodCl7cmV0dXJuIHRoaXMuc3RhcnQuYXBwbHlNYXRyaXg0KHQpLHRoaXMuZW5kLmFwcGx5TWF0cml4NCh0KSx0aGlzfWVxdWFscyh0KXtyZXR1cm4gdC5zdGFydC5lcXVhbHModGhpcy5zdGFydCkmJnQuZW5kLmVxdWFscyh0aGlzLmVuZCl9Y2xvbmUoKXtyZXR1cm4obmV3IHRoaXMuY29uc3RydWN0b3IpLmNvcHkodGhpcyl9fWNsYXNzIGppZSBleHRlbmRzIFYzdHtjb25zdHJ1Y3Rvcih0KXtzdXBlcigpLHRoaXMubWF0ZXJpYWw9dCx0aGlzLnJlbmRlcj1mdW5jdGlvbigpe30sdGhpcy5oYXNQb3NpdGlvbnM9ITEsdGhpcy5oYXNOb3JtYWxzPSExLHRoaXMuaGFzQ29sb3JzPSExLHRoaXMuaGFzVXZzPSExLHRoaXMucG9zaXRpb25BcnJheT1udWxsLHRoaXMubm9ybWFsQXJyYXk9bnVsbCx0aGlzLmNvbG9yQXJyYXk9bnVsbCx0aGlzLnV2QXJyYXk9bnVsbCx0aGlzLmNvdW50PTB9fWppZS5wcm90b3R5cGUuaXNJbW1lZGlhdGVSZW5kZXJPYmplY3Q9ITA7Y29uc3QgR2llPW5ldyBINXQ7Y29uc3QgV2llPW5ldyBINXQscWllPW5ldyBnM3QsWWllPW5ldyBnM3Q7Y2xhc3MgWGllIGV4dGVuZHMgaXRle2NvbnN0cnVjdG9yKHQpe2NvbnN0IGU9JGllKHQpLG49bmV3IE40dCxpPVtdLHI9W10sbz1uZXcgczR0KDAsMCwxKSxhPW5ldyBzNHQoMCwxLDApO2ZvcihsZXQgdD0wO3Q8ZS5sZW5ndGg7dCsrKXtjb25zdCBuPWVbdF07bi5wYXJlbnQmJm4ucGFyZW50LmlzQm9uZSYmKGkucHVzaCgwLDAsMCksaS5wdXNoKDAsMCwwKSxyLnB1c2goby5yLG8uZyxvLmIpLHIucHVzaChhLnIsYS5nLGEuYikpfW4uc2V0QXR0cmlidXRlKCJwb3NpdGlvbiIsbmV3IGI0dChpLDMpKSxuLnNldEF0dHJpYnV0ZSgiY29sb3IiLG5ldyBiNHQociwzKSk7c3VwZXIobixuZXcgWDd0KHt2ZXJ0ZXhDb2xvcnM6ITAsZGVwdGhUZXN0OiExLGRlcHRoV3JpdGU6ITEsdG9uZU1hcHBlZDohMSx0cmFuc3BhcmVudDohMH0pKSx0aGlzLnR5cGU9IlNrZWxldG9uSGVscGVyIix0aGlzLmlzU2tlbGV0b25IZWxwZXI9ITAsdGhpcy5yb290PXQsdGhpcy5ib25lcz1lLHRoaXMubWF0cml4PXQubWF0cml4V29ybGQsdGhpcy5tYXRyaXhBdXRvVXBkYXRlPSExfXVwZGF0ZU1hdHJpeFdvcmxkKHQpe2NvbnN0IGU9dGhpcy5ib25lcyxuPXRoaXMuZ2VvbWV0cnksaT1uLmdldEF0dHJpYnV0ZSgicG9zaXRpb24iKTtZaWUuY29weSh0aGlzLnJvb3QubWF0cml4V29ybGQpLmludmVydCgpO2ZvcihsZXQgdD0wLG49MDt0PGUubGVuZ3RoO3QrKyl7Y29uc3Qgcj1lW3RdO3IucGFyZW50JiZyLnBhcmVudC5pc0JvbmUmJihxaWUubXVsdGlwbHlNYXRyaWNlcyhZaWUsci5tYXRyaXhXb3JsZCksV2llLnNldEZyb21NYXRyaXhQb3NpdGlvbihxaWUpLGkuc2V0WFlaKG4sV2llLngsV2llLnksV2llLnopLHFpZS5tdWx0aXBseU1hdHJpY2VzKFlpZSxyLnBhcmVudC5tYXRyaXhXb3JsZCksV2llLnNldEZyb21NYXRyaXhQb3NpdGlvbihxaWUpLGkuc2V0WFlaKG4rMSxXaWUueCxXaWUueSxXaWUueiksbis9Mil9bi5nZXRBdHRyaWJ1dGUoInBvc2l0aW9uIikubmVlZHNVcGRhdGU9ITAsc3VwZXIudXBkYXRlTWF0cml4V29ybGQodCl9fWZ1bmN0aW9uICRpZSh0KXtjb25zdCBlPVtdO3QmJnQuaXNCb25lJiZlLnB1c2godCk7Zm9yKGxldCBuPTA7bjx0LmNoaWxkcmVuLmxlbmd0aDtuKyspZS5wdXNoLmFwcGx5KGUsJGllKHQuY2hpbGRyZW5bbl0pKTtyZXR1cm4gZX1jb25zdCBLaWU9bmV3IEg1dCxaaWU9bmV3IHM0dCxKaWU9bmV3IHM0dDtjbGFzcyBRaWUgZXh0ZW5kcyBpdGV7Y29uc3RydWN0b3IodD0xMCxlPTEwLG49NDQ3MzkyNCxpPTg5NDc4NDgpe249bmV3IHM0dChuKSxpPW5ldyBzNHQoaSk7Y29uc3Qgcj1lLzIsbz10L2UsYT10LzIscz1bXSxsPVtdO2ZvcihsZXQgdD0wLGM9MCx1PS1hO3Q8PWU7dCsrLHUrPW8pe3MucHVzaCgtYSwwLHUsYSwwLHUpLHMucHVzaCh1LDAsLWEsdSwwLGEpO2NvbnN0IGU9dD09PXI/bjppO2UudG9BcnJheShsLGMpLGMrPTMsZS50b0FycmF5KGwsYyksYys9MyxlLnRvQXJyYXkobCxjKSxjKz0zLGUudG9BcnJheShsLGMpLGMrPTN9Y29uc3QgYz1uZXcgTjR0O2Muc2V0QXR0cmlidXRlKCJwb3NpdGlvbiIsbmV3IGI0dChzLDMpKSxjLnNldEF0dHJpYnV0ZSgiY29sb3IiLG5ldyBiNHQobCwzKSk7c3VwZXIoYyxuZXcgWDd0KHt2ZXJ0ZXhDb2xvcnM6ITAsdG9uZU1hcHBlZDohMX0pKSx0aGlzLnR5cGU9IkdyaWRIZWxwZXIifX1jb25zdCB0cmU9bmV3IEg1dCxlcmU9bmV3IEg1dCxucmU9bmV3IEg1dDtjb25zdCBpcmU9bmV3IEg1dCxycmU9bmV3IGk2dDtmdW5jdGlvbiBvcmUodCxlLG4saSxyLG8sYSl7aXJlLnNldChyLG8sYSkudW5wcm9qZWN0KGkpO2NvbnN0IHM9ZVt0XTtpZih2b2lkIDAhPT1zKXtjb25zdCB0PW4uZ2V0QXR0cmlidXRlKCJwb3NpdGlvbiIpO2ZvcihsZXQgZT0wLG49cy5sZW5ndGg7ZTxuO2UrKyl0LnNldFhZWihzW2VdLGlyZS54LGlyZS55LGlyZS56KX19Y29uc3QgYXJlPW5ldyBVNXQ7Y2xhc3Mgc3JlIGV4dGVuZHMgaXRle2NvbnN0cnVjdG9yKHQsZT0xNjc3Njk2MCl7Y29uc3Qgbj1uZXcgVWludDE2QXJyYXkoWzAsMSwxLDIsMiwzLDMsMCw0LDUsNSw2LDYsNyw3LDQsMCw0LDEsNSwyLDYsMyw3XSksaT1uZXcgRmxvYXQzMkFycmF5KDI0KSxyPW5ldyBONHQ7ci5zZXRJbmRleChuZXcgaDR0KG4sMSkpLHIuc2V0QXR0cmlidXRlKCJwb3NpdGlvbiIsbmV3IGg0dChpLDMpKSxzdXBlcihyLG5ldyBYN3Qoe2NvbG9yOmUsdG9uZU1hcHBlZDohMX0pKSx0aGlzLm9iamVjdD10LHRoaXMudHlwZT0iQm94SGVscGVyIix0aGlzLm1hdHJpeEF1dG9VcGRhdGU9ITEsdGhpcy51cGRhdGUoKX11cGRhdGUodCl7aWYodm9pZCAwIT09dCYmY29uc29sZS53YXJuKCJUSFJFRS5Cb3hIZWxwZXI6IC51cGRhdGUoKSBoYXMgbm8gbG9uZ2VyIGFyZ3VtZW50cy4iKSx2b2lkIDAhPT10aGlzLm9iamVjdCYmYXJlLnNldEZyb21PYmplY3QodGhpcy5vYmplY3QpLGFyZS5pc0VtcHR5KCkpcmV0dXJuO2NvbnN0IGU9YXJlLm1pbixuPWFyZS5tYXgsaT10aGlzLmdlb21ldHJ5LmF0dHJpYnV0ZXMucG9zaXRpb24scj1pLmFycmF5O3JbMF09bi54LHJbMV09bi55LHJbMl09bi56LHJbM109ZS54LHJbNF09bi55LHJbNV09bi56LHJbNl09ZS54LHJbN109ZS55LHJbOF09bi56LHJbOV09bi54LHJbMTBdPWUueSxyWzExXT1uLnosclsxMl09bi54LHJbMTNdPW4ueSxyWzE0XT1lLnosclsxNV09ZS54LHJbMTZdPW4ueSxyWzE3XT1lLnosclsxOF09ZS54LHJbMTldPWUueSxyWzIwXT1lLnosclsyMV09bi54LHJbMjJdPWUueSxyWzIzXT1lLnosaS5uZWVkc1VwZGF0ZT0hMCx0aGlzLmdlb21ldHJ5LmNvbXB1dGVCb3VuZGluZ1NwaGVyZSgpfXNldEZyb21PYmplY3QodCl7cmV0dXJuIHRoaXMub2JqZWN0PXQsdGhpcy51cGRhdGUoKSx0aGlzfWNvcHkodCl7cmV0dXJuIGl0ZS5wcm90b3R5cGUuY29weS5jYWxsKHRoaXMsdCksdGhpcy5vYmplY3Q9dC5vYmplY3QsdGhpc319Y29uc3QgbHJlPW5ldyBINXQ7bGV0IGNyZSx1cmU7Y2xhc3MgaHJlIGV4dGVuZHMgaXRle2NvbnN0cnVjdG9yKHQ9MSl7Y29uc3QgZT1bMCwwLDAsdCwwLDAsMCwwLDAsMCx0LDAsMCwwLDAsMCwwLHRdLG49bmV3IE40dDtuLnNldEF0dHJpYnV0ZSgicG9zaXRpb24iLG5ldyBiNHQoZSwzKSksbi5zZXRBdHRyaWJ1dGUoImNvbG9yIixuZXcgYjR0KFsxLDAsMCwxLC42LDAsMCwxLDAsLjYsMSwwLDAsMCwxLDAsLjYsMV0sMykpO3N1cGVyKG4sbmV3IFg3dCh7dmVydGV4Q29sb3JzOiEwLHRvbmVNYXBwZWQ6ITF9KSksdGhpcy50eXBlPSJBeGVzSGVscGVyIn1zZXRDb2xvcnModCxlLG4pe2NvbnN0IGk9bmV3IHM0dCxyPXRoaXMuZ2VvbWV0cnkuYXR0cmlidXRlcy5jb2xvci5hcnJheTtyZXR1cm4gaS5zZXQodCksaS50b0FycmF5KHIsMCksaS50b0FycmF5KHIsMyksaS5zZXQoZSksaS50b0FycmF5KHIsNiksaS50b0FycmF5KHIsOSksaS5zZXQobiksaS50b0FycmF5KHIsMTIpLGkudG9BcnJheShyLDE1KSx0aGlzLmdlb21ldHJ5LmF0dHJpYnV0ZXMuY29sb3IubmVlZHNVcGRhdGU9ITAsdGhpc31kaXNwb3NlKCl7dGhpcy5nZW9tZXRyeS5kaXNwb3NlKCksdGhpcy5tYXRlcmlhbC5kaXNwb3NlKCl9fWNvbnN0IGRyZT1uZXcgRmxvYXQzMkFycmF5KDEpLHByZT1uZXcgSW50MzJBcnJheShkcmUuYnVmZmVyKTtUdGUuY3JlYXRlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGNvbnNvbGUubG9nKCJUSFJFRS5DdXJ2ZS5jcmVhdGUoKSBoYXMgYmVlbiBkZXByZWNhdGVkIiksdC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShUdGUucHJvdG90eXBlKSx0LnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj10LHQucHJvdG90eXBlLmdldFBvaW50PWUsdH0sdm5lLnByb3RvdHlwZS5mcm9tUG9pbnRzPWZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlBhdGg6IC5mcm9tUG9pbnRzKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuc2V0RnJvbVBvaW50cygpLiIpLHRoaXMuc2V0RnJvbVBvaW50cyh0KX0sUWllLnByb3RvdHlwZS5zZXRDb2xvcnM9ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5HcmlkSGVscGVyOiBzZXRDb2xvcnMoKSBoYXMgYmVlbiBkZXByZWNhdGVkLCBwYXNzIHRoZW0gaW4gdGhlIGNvbnN0cnVjdG9yIGluc3RlYWQuIil9LFhpZS5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuU2tlbGV0b25IZWxwZXI6IHVwZGF0ZSgpIG5vIGxvbmdlciBuZWVkcyB0byBiZSBjYWxsZWQuIil9LGhuZS5wcm90b3R5cGUuZXh0cmFjdFVybEJhc2U9ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuTG9hZGVyOiAuZXh0cmFjdFVybEJhc2UoKSBoYXMgYmVlbiBkZXByZWNhdGVkLiBVc2UgVEhSRUUuTG9hZGVyVXRpbHMuZXh0cmFjdFVybEJhc2UoKSBpbnN0ZWFkLiIpLFZuZS5leHRyYWN0VXJsQmFzZSh0KX0saG5lLkhhbmRsZXJzPXthZGQ6ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5Mb2FkZXI6IEhhbmRsZXJzLmFkZCgpIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBMb2FkaW5nTWFuYWdlci5hZGRIYW5kbGVyKCkgaW5zdGVhZC4iKX0sZ2V0OmZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuTG9hZGVyOiBIYW5kbGVycy5nZXQoKSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgTG9hZGluZ01hbmFnZXIuZ2V0SGFuZGxlcigpIGluc3RlYWQuIil9fSxIaWUucHJvdG90eXBlLmNlbnRlcj1mdW5jdGlvbih0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5Cb3gyOiAuY2VudGVyKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuZ2V0Q2VudGVyKCkuIiksdGhpcy5nZXRDZW50ZXIodCl9LEhpZS5wcm90b3R5cGUuZW1wdHk9ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5Cb3gyOiAuZW1wdHkoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5pc0VtcHR5KCkuIiksdGhpcy5pc0VtcHR5KCl9LEhpZS5wcm90b3R5cGUuaXNJbnRlcnNlY3Rpb25Cb3g9ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuQm94MjogLmlzSW50ZXJzZWN0aW9uQm94KCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuaW50ZXJzZWN0c0JveCgpLiIpLHRoaXMuaW50ZXJzZWN0c0JveCh0KX0sSGllLnByb3RvdHlwZS5zaXplPWZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLkJveDI6IC5zaXplKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuZ2V0U2l6ZSgpLiIpLHRoaXMuZ2V0U2l6ZSh0KX0sVTV0LnByb3RvdHlwZS5jZW50ZXI9ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuQm94MzogLmNlbnRlcigpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmdldENlbnRlcigpLiIpLHRoaXMuZ2V0Q2VudGVyKHQpfSxVNXQucHJvdG90eXBlLmVtcHR5PWZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuQm94MzogLmVtcHR5KCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuaXNFbXB0eSgpLiIpLHRoaXMuaXNFbXB0eSgpfSxVNXQucHJvdG90eXBlLmlzSW50ZXJzZWN0aW9uQm94PWZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLkJveDM6IC5pc0ludGVyc2VjdGlvbkJveCgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmludGVyc2VjdHNCb3goKS4iKSx0aGlzLmludGVyc2VjdHNCb3godCl9LFU1dC5wcm90b3R5cGUuaXNJbnRlcnNlY3Rpb25TcGhlcmU9ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuQm94MzogLmlzSW50ZXJzZWN0aW9uU3BoZXJlKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuaW50ZXJzZWN0c1NwaGVyZSgpLiIpLHRoaXMuaW50ZXJzZWN0c1NwaGVyZSh0KX0sVTV0LnByb3RvdHlwZS5zaXplPWZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLkJveDM6IC5zaXplKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuZ2V0U2l6ZSgpLiIpLHRoaXMuZ2V0U2l6ZSh0KX0sczN0LnByb3RvdHlwZS5lbXB0eT1mdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlNwaGVyZTogLmVtcHR5KCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuaXNFbXB0eSgpLiIpLHRoaXMuaXNFbXB0eSgpfSxtNnQucHJvdG90eXBlLnNldEZyb21NYXRyaXg9ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuRnJ1c3R1bTogLnNldEZyb21NYXRyaXgoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5zZXRGcm9tUHJvamVjdGlvbk1hdHJpeCgpLiIpLHRoaXMuc2V0RnJvbVByb2plY3Rpb25NYXRyaXgodCl9LFVpZS5wcm90b3R5cGUuY2VudGVyPWZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLkxpbmUzOiAuY2VudGVyKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuZ2V0Q2VudGVyKCkuIiksdGhpcy5nZXRDZW50ZXIodCl9LEE1dC5wcm90b3R5cGUuZmxhdHRlblRvQXJyYXlPZmZzZXQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5NYXRyaXgzOiAuZmxhdHRlblRvQXJyYXlPZmZzZXQoKSBoYXMgYmVlbiBkZXByZWNhdGVkLiBVc2UgLnRvQXJyYXkoKSBpbnN0ZWFkLiIpLHRoaXMudG9BcnJheSh0LGUpfSxBNXQucHJvdG90eXBlLm11bHRpcGx5VmVjdG9yMz1mdW5jdGlvbih0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5NYXRyaXgzOiAubXVsdGlwbHlWZWN0b3IzKCkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIHZlY3Rvci5hcHBseU1hdHJpeDMoIG1hdHJpeCApIGluc3RlYWQuIiksdC5hcHBseU1hdHJpeDModGhpcyl9LEE1dC5wcm90b3R5cGUubXVsdGlwbHlWZWN0b3IzQXJyYXk9ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5NYXRyaXgzOiAubXVsdGlwbHlWZWN0b3IzQXJyYXkoKSBoYXMgYmVlbiByZW1vdmVkLiIpfSxBNXQucHJvdG90eXBlLmFwcGx5VG9CdWZmZXJBdHRyaWJ1dGU9ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuTWF0cml4MzogLmFwcGx5VG9CdWZmZXJBdHRyaWJ1dGUoKSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgYXR0cmlidXRlLmFwcGx5TWF0cml4MyggbWF0cml4ICkgaW5zdGVhZC4iKSx0LmFwcGx5TWF0cml4Myh0aGlzKX0sQTV0LnByb3RvdHlwZS5hcHBseVRvVmVjdG9yM0FycmF5PWZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuTWF0cml4MzogLmFwcGx5VG9WZWN0b3IzQXJyYXkoKSBoYXMgYmVlbiByZW1vdmVkLiIpfSxBNXQucHJvdG90eXBlLmdldEludmVyc2U9ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuTWF0cml4MzogLmdldEludmVyc2UoKSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgbWF0cml4SW52LmNvcHkoIG1hdHJpeCApLmludmVydCgpOyBpbnN0ZWFkLiIpLHRoaXMuY29weSh0KS5pbnZlcnQoKX0sZzN0LnByb3RvdHlwZS5leHRyYWN0UG9zaXRpb249ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuTWF0cml4NDogLmV4dHJhY3RQb3NpdGlvbigpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmNvcHlQb3NpdGlvbigpLiIpLHRoaXMuY29weVBvc2l0aW9uKHQpfSxnM3QucHJvdG90eXBlLmZsYXR0ZW5Ub0FycmF5T2Zmc2V0PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuTWF0cml4NDogLmZsYXR0ZW5Ub0FycmF5T2Zmc2V0KCkgaGFzIGJlZW4gZGVwcmVjYXRlZC4gVXNlIC50b0FycmF5KCkgaW5zdGVhZC4iKSx0aGlzLnRvQXJyYXkodCxlKX0sZzN0LnByb3RvdHlwZS5nZXRQb3NpdGlvbj1mdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLk1hdHJpeDQ6IC5nZXRQb3NpdGlvbigpIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBWZWN0b3IzLnNldEZyb21NYXRyaXhQb3NpdGlvbiggbWF0cml4ICkgaW5zdGVhZC4iKSwobmV3IEg1dCkuc2V0RnJvbU1hdHJpeENvbHVtbih0aGlzLDMpfSxnM3QucHJvdG90eXBlLnNldFJvdGF0aW9uRnJvbVF1YXRlcm5pb249ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuTWF0cml4NDogLnNldFJvdGF0aW9uRnJvbVF1YXRlcm5pb24oKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5tYWtlUm90YXRpb25Gcm9tUXVhdGVybmlvbigpLiIpLHRoaXMubWFrZVJvdGF0aW9uRnJvbVF1YXRlcm5pb24odCl9LGczdC5wcm90b3R5cGUubXVsdGlwbHlUb0FycmF5PWZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5NYXRyaXg0OiAubXVsdGlwbHlUb0FycmF5KCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX0sZzN0LnByb3RvdHlwZS5tdWx0aXBseVZlY3RvcjM9ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuTWF0cml4NDogLm11bHRpcGx5VmVjdG9yMygpIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSB2ZWN0b3IuYXBwbHlNYXRyaXg0KCBtYXRyaXggKSBpbnN0ZWFkLiIpLHQuYXBwbHlNYXRyaXg0KHRoaXMpfSxnM3QucHJvdG90eXBlLm11bHRpcGx5VmVjdG9yND1mdW5jdGlvbih0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5NYXRyaXg0OiAubXVsdGlwbHlWZWN0b3I0KCkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIHZlY3Rvci5hcHBseU1hdHJpeDQoIG1hdHJpeCApIGluc3RlYWQuIiksdC5hcHBseU1hdHJpeDQodGhpcyl9LGczdC5wcm90b3R5cGUubXVsdGlwbHlWZWN0b3IzQXJyYXk9ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5NYXRyaXg0OiAubXVsdGlwbHlWZWN0b3IzQXJyYXkoKSBoYXMgYmVlbiByZW1vdmVkLiIpfSxnM3QucHJvdG90eXBlLnJvdGF0ZUF4aXM9ZnVuY3Rpb24odCl7Y29uc29sZS53YXJuKCJUSFJFRS5NYXRyaXg0OiAucm90YXRlQXhpcygpIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBWZWN0b3IzLnRyYW5zZm9ybURpcmVjdGlvbiggbWF0cml4ICkgaW5zdGVhZC4iKSx0LnRyYW5zZm9ybURpcmVjdGlvbih0aGlzKX0sZzN0LnByb3RvdHlwZS5jcm9zc1ZlY3Rvcj1mdW5jdGlvbih0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5NYXRyaXg0OiAuY3Jvc3NWZWN0b3IoKSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgdmVjdG9yLmFwcGx5TWF0cml4NCggbWF0cml4ICkgaW5zdGVhZC4iKSx0LmFwcGx5TWF0cml4NCh0aGlzKX0sZzN0LnByb3RvdHlwZS50cmFuc2xhdGU9ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5NYXRyaXg0OiAudHJhbnNsYXRlKCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX0sZzN0LnByb3RvdHlwZS5yb3RhdGVYPWZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuTWF0cml4NDogLnJvdGF0ZVgoKSBoYXMgYmVlbiByZW1vdmVkLiIpfSxnM3QucHJvdG90eXBlLnJvdGF0ZVk9ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5NYXRyaXg0OiAucm90YXRlWSgpIGhhcyBiZWVuIHJlbW92ZWQuIil9LGczdC5wcm90b3R5cGUucm90YXRlWj1mdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLk1hdHJpeDQ6IC5yb3RhdGVaKCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX0sZzN0LnByb3RvdHlwZS5yb3RhdGVCeUF4aXM9ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5NYXRyaXg0OiAucm90YXRlQnlBeGlzKCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX0sZzN0LnByb3RvdHlwZS5hcHBseVRvQnVmZmVyQXR0cmlidXRlPWZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLk1hdHJpeDQ6IC5hcHBseVRvQnVmZmVyQXR0cmlidXRlKCkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIGF0dHJpYnV0ZS5hcHBseU1hdHJpeDQoIG1hdHJpeCApIGluc3RlYWQuIiksdC5hcHBseU1hdHJpeDQodGhpcyl9LGczdC5wcm90b3R5cGUuYXBwbHlUb1ZlY3RvcjNBcnJheT1mdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLk1hdHJpeDQ6IC5hcHBseVRvVmVjdG9yM0FycmF5KCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX0sZzN0LnByb3RvdHlwZS5tYWtlRnJ1c3R1bT1mdW5jdGlvbih0LGUsbixpLHIsbyl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuTWF0cml4NDogLm1ha2VGcnVzdHVtKCkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIC5tYWtlUGVyc3BlY3RpdmUoIGxlZnQsIHJpZ2h0LCB0b3AsIGJvdHRvbSwgbmVhciwgZmFyICkgaW5zdGVhZC4iKSx0aGlzLm1ha2VQZXJzcGVjdGl2ZSh0LGUsaSxuLHIsbyl9LGczdC5wcm90b3R5cGUuZ2V0SW52ZXJzZT1mdW5jdGlvbih0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5NYXRyaXg0OiAuZ2V0SW52ZXJzZSgpIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBtYXRyaXhJbnYuY29weSggbWF0cml4ICkuaW52ZXJ0KCk7IGluc3RlYWQuIiksdGhpcy5jb3B5KHQpLmludmVydCgpfSxkNnQucHJvdG90eXBlLmlzSW50ZXJzZWN0aW9uTGluZT1mdW5jdGlvbih0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5QbGFuZTogLmlzSW50ZXJzZWN0aW9uTGluZSgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmludGVyc2VjdHNMaW5lKCkuIiksdGhpcy5pbnRlcnNlY3RzTGluZSh0KX0sQjV0LnByb3RvdHlwZS5tdWx0aXBseVZlY3RvcjM9ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuUXVhdGVybmlvbjogLm11bHRpcGx5VmVjdG9yMygpIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBpcyBub3cgdmVjdG9yLmFwcGx5UXVhdGVybmlvbiggcXVhdGVybmlvbiApIGluc3RlYWQuIiksdC5hcHBseVF1YXRlcm5pb24odGhpcyl9LEI1dC5wcm90b3R5cGUuaW52ZXJzZT1mdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlF1YXRlcm5pb246IC5pbnZlcnNlKCkgaGFzIGJlZW4gcmVuYW1lZCB0byBpbnZlcnQoKS4iKSx0aGlzLmludmVydCgpfSxtM3QucHJvdG90eXBlLmlzSW50ZXJzZWN0aW9uQm94PWZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlJheTogLmlzSW50ZXJzZWN0aW9uQm94KCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuaW50ZXJzZWN0c0JveCgpLiIpLHRoaXMuaW50ZXJzZWN0c0JveCh0KX0sbTN0LnByb3RvdHlwZS5pc0ludGVyc2VjdGlvblBsYW5lPWZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlJheTogLmlzSW50ZXJzZWN0aW9uUGxhbmUoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5pbnRlcnNlY3RzUGxhbmUoKS4iKSx0aGlzLmludGVyc2VjdHNQbGFuZSh0KX0sbTN0LnByb3RvdHlwZS5pc0ludGVyc2VjdGlvblNwaGVyZT1mdW5jdGlvbih0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5SYXk6IC5pc0ludGVyc2VjdGlvblNwaGVyZSgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmludGVyc2VjdHNTcGhlcmUoKS4iKSx0aGlzLmludGVyc2VjdHNTcGhlcmUodCl9LEozdC5wcm90b3R5cGUuYXJlYT1mdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlRyaWFuZ2xlOiAuYXJlYSgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmdldEFyZWEoKS4iKSx0aGlzLmdldEFyZWEoKX0sSjN0LnByb3RvdHlwZS5iYXJ5Y29vcmRGcm9tUG9pbnQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5UcmlhbmdsZTogLmJhcnljb29yZEZyb21Qb2ludCgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmdldEJhcnljb29yZCgpLiIpLHRoaXMuZ2V0QmFyeWNvb3JkKHQsZSl9LEozdC5wcm90b3R5cGUubWlkcG9pbnQ9ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuVHJpYW5nbGU6IC5taWRwb2ludCgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmdldE1pZHBvaW50KCkuIiksdGhpcy5nZXRNaWRwb2ludCh0KX0sSjN0LnByb3RvdHlwZW5vcm1hbD1mdW5jdGlvbih0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5UcmlhbmdsZTogLm5vcm1hbCgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmdldE5vcm1hbCgpLiIpLHRoaXMuZ2V0Tm9ybWFsKHQpfSxKM3QucHJvdG90eXBlLnBsYW5lPWZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlRyaWFuZ2xlOiAucGxhbmUoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5nZXRQbGFuZSgpLiIpLHRoaXMuZ2V0UGxhbmUodCl9LEozdC5iYXJ5Y29vcmRGcm9tUG9pbnQ9ZnVuY3Rpb24odCxlLG4saSxyKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5UcmlhbmdsZTogLmJhcnljb29yZEZyb21Qb2ludCgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmdldEJhcnljb29yZCgpLiIpLEozdC5nZXRCYXJ5Y29vcmQodCxlLG4saSxyKX0sSjN0Lm5vcm1hbD1mdW5jdGlvbih0LGUsbixpKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5UcmlhbmdsZTogLm5vcm1hbCgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmdldE5vcm1hbCgpLiIpLEozdC5nZXROb3JtYWwodCxlLG4saSl9LGJuZS5wcm90b3R5cGUuZXh0cmFjdEFsbFBvaW50cz1mdW5jdGlvbih0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5TaGFwZTogLmV4dHJhY3RBbGxQb2ludHMoKSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgLmV4dHJhY3RQb2ludHMoKSBpbnN0ZWFkLiIpLHRoaXMuZXh0cmFjdFBvaW50cyh0KX0sYm5lLnByb3RvdHlwZS5leHRydWRlPWZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlNoYXBlOiAuZXh0cnVkZSgpIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBFeHRydWRlR2VvbWV0cnkoKSBpbnN0ZWFkLiIpLG5ldyBiZWUodGhpcyx0KX0sYm5lLnByb3RvdHlwZS5tYWtlR2VvbWV0cnk9ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuU2hhcGU6IC5tYWtlR2VvbWV0cnkoKSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgU2hhcGVHZW9tZXRyeSgpIGluc3RlYWQuIiksbmV3IENlZSh0aGlzLHQpfSxDNXQucHJvdG90eXBlLmZyb21BdHRyaWJ1dGU9ZnVuY3Rpb24odCxlLG4pe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlZlY3RvcjI6IC5mcm9tQXR0cmlidXRlKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuZnJvbUJ1ZmZlckF0dHJpYnV0ZSgpLiIpLHRoaXMuZnJvbUJ1ZmZlckF0dHJpYnV0ZSh0LGUsbil9LEM1dC5wcm90b3R5cGUuZGlzdGFuY2VUb01hbmhhdHRhbj1mdW5jdGlvbih0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5WZWN0b3IyOiAuZGlzdGFuY2VUb01hbmhhdHRhbigpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLm1hbmhhdHRhbkRpc3RhbmNlVG8oKS4iKSx0aGlzLm1hbmhhdHRhbkRpc3RhbmNlVG8odCl9LEM1dC5wcm90b3R5cGUubGVuZ3RoTWFuaGF0dGFuPWZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuVmVjdG9yMjogLmxlbmd0aE1hbmhhdHRhbigpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLm1hbmhhdHRhbkxlbmd0aCgpLiIpLHRoaXMubWFuaGF0dGFuTGVuZ3RoKCl9LEg1dC5wcm90b3R5cGUuc2V0RXVsZXJGcm9tUm90YXRpb25NYXRyaXg9ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5WZWN0b3IzOiAuc2V0RXVsZXJGcm9tUm90YXRpb25NYXRyaXgoKSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgRXVsZXIuc2V0RnJvbVJvdGF0aW9uTWF0cml4KCkgaW5zdGVhZC4iKX0sSDV0LnByb3RvdHlwZS5zZXRFdWxlckZyb21RdWF0ZXJuaW9uPWZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuVmVjdG9yMzogLnNldEV1bGVyRnJvbVF1YXRlcm5pb24oKSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgRXVsZXIuc2V0RnJvbVF1YXRlcm5pb24oKSBpbnN0ZWFkLiIpfSxINXQucHJvdG90eXBlLmdldFBvc2l0aW9uRnJvbU1hdHJpeD1mdW5jdGlvbih0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5WZWN0b3IzOiAuZ2V0UG9zaXRpb25Gcm9tTWF0cml4KCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuc2V0RnJvbU1hdHJpeFBvc2l0aW9uKCkuIiksdGhpcy5zZXRGcm9tTWF0cml4UG9zaXRpb24odCl9LEg1dC5wcm90b3R5cGUuZ2V0U2NhbGVGcm9tTWF0cml4PWZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlZlY3RvcjM6IC5nZXRTY2FsZUZyb21NYXRyaXgoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5zZXRGcm9tTWF0cml4U2NhbGUoKS4iKSx0aGlzLnNldEZyb21NYXRyaXhTY2FsZSh0KX0sSDV0LnByb3RvdHlwZS5nZXRDb2x1bW5Gcm9tTWF0cml4PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuVmVjdG9yMzogLmdldENvbHVtbkZyb21NYXRyaXgoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5zZXRGcm9tTWF0cml4Q29sdW1uKCkuIiksdGhpcy5zZXRGcm9tTWF0cml4Q29sdW1uKGUsdCl9LEg1dC5wcm90b3R5cGUuYXBwbHlQcm9qZWN0aW9uPWZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlZlY3RvcjM6IC5hcHBseVByb2plY3Rpb24oKSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgLmFwcGx5TWF0cml4NCggbSApIGluc3RlYWQuIiksdGhpcy5hcHBseU1hdHJpeDQodCl9LEg1dC5wcm90b3R5cGUuZnJvbUF0dHJpYnV0ZT1mdW5jdGlvbih0LGUsbil7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuVmVjdG9yMzogLmZyb21BdHRyaWJ1dGUoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5mcm9tQnVmZmVyQXR0cmlidXRlKCkuIiksdGhpcy5mcm9tQnVmZmVyQXR0cmlidXRlKHQsZSxuKX0sSDV0LnByb3RvdHlwZS5kaXN0YW5jZVRvTWFuaGF0dGFuPWZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlZlY3RvcjM6IC5kaXN0YW5jZVRvTWFuaGF0dGFuKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAubWFuaGF0dGFuRGlzdGFuY2VUbygpLiIpLHRoaXMubWFuaGF0dGFuRGlzdGFuY2VUbyh0KX0sSDV0LnByb3RvdHlwZS5sZW5ndGhNYW5oYXR0YW49ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5WZWN0b3IzOiAubGVuZ3RoTWFuaGF0dGFuKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAubWFuaGF0dGFuTGVuZ3RoKCkuIiksdGhpcy5tYW5oYXR0YW5MZW5ndGgoKX0sUjV0LnByb3RvdHlwZS5mcm9tQXR0cmlidXRlPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5WZWN0b3I0OiAuZnJvbUF0dHJpYnV0ZSgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmZyb21CdWZmZXJBdHRyaWJ1dGUoKS4iKSx0aGlzLmZyb21CdWZmZXJBdHRyaWJ1dGUodCxlLG4pfSxSNXQucHJvdG90eXBlLmxlbmd0aE1hbmhhdHRhbj1mdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlZlY3RvcjQ6IC5sZW5ndGhNYW5oYXR0YW4oKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5tYW5oYXR0YW5MZW5ndGgoKS4iKSx0aGlzLm1hbmhhdHRhbkxlbmd0aCgpfSxWM3QucHJvdG90eXBlLmdldENoaWxkQnlOYW1lPWZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLk9iamVjdDNEOiAuZ2V0Q2hpbGRCeU5hbWUoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5nZXRPYmplY3RCeU5hbWUoKS4iKSx0aGlzLmdldE9iamVjdEJ5TmFtZSh0KX0sVjN0LnByb3RvdHlwZS5yZW5kZXJEZXB0aD1mdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuT2JqZWN0M0Q6IC5yZW5kZXJEZXB0aCBoYXMgYmVlbiByZW1vdmVkLiBVc2UgLnJlbmRlck9yZGVyLCBpbnN0ZWFkLiIpfSxWM3QucHJvdG90eXBlLnRyYW5zbGF0ZT1mdW5jdGlvbih0LGUpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLk9iamVjdDNEOiAudHJhbnNsYXRlKCkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIC50cmFuc2xhdGVPbkF4aXMoIGF4aXMsIGRpc3RhbmNlICkgaW5zdGVhZC4iKSx0aGlzLnRyYW5zbGF0ZU9uQXhpcyhlLHQpfSxWM3QucHJvdG90eXBlLmdldFdvcmxkUm90YXRpb249ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5PYmplY3QzRDogLmdldFdvcmxkUm90YXRpb24oKSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgVEhSRUUuT2JqZWN0M0QuZ2V0V29ybGRRdWF0ZXJuaW9uKCB0YXJnZXQgKSBpbnN0ZWFkLiIpfSxWM3QucHJvdG90eXBlLmFwcGx5TWF0cml4PWZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLk9iamVjdDNEOiAuYXBwbHlNYXRyaXgoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5hcHBseU1hdHJpeDQoKS4iKSx0aGlzLmFwcGx5TWF0cml4NCh0KX0sT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoVjN0LnByb3RvdHlwZSx7ZXVsZXJPcmRlcjp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuT2JqZWN0M0Q6IC5ldWxlck9yZGVyIGlzIG5vdyAucm90YXRpb24ub3JkZXIuIiksdGhpcy5yb3RhdGlvbi5vcmRlcn0sc2V0OmZ1bmN0aW9uKHQpe2NvbnNvbGUud2FybigiVEhSRUUuT2JqZWN0M0Q6IC5ldWxlck9yZGVyIGlzIG5vdyAucm90YXRpb24ub3JkZXIuIiksdGhpcy5yb3RhdGlvbi5vcmRlcj10fX0sdXNlUXVhdGVybmlvbjp7Z2V0OmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5PYmplY3QzRDogLnVzZVF1YXRlcm5pb24gaGFzIGJlZW4gcmVtb3ZlZC4gVGhlIGxpYnJhcnkgbm93IHVzZXMgcXVhdGVybmlvbnMgYnkgZGVmYXVsdC4iKX0sc2V0OmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5PYmplY3QzRDogLnVzZVF1YXRlcm5pb24gaGFzIGJlZW4gcmVtb3ZlZC4gVGhlIGxpYnJhcnkgbm93IHVzZXMgcXVhdGVybmlvbnMgYnkgZGVmYXVsdC4iKX19fSksSzR0LnByb3RvdHlwZS5zZXREcmF3TW9kZT1mdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLk1lc2g6IC5zZXREcmF3TW9kZSgpIGhhcyBiZWVuIHJlbW92ZWQuIFRoZSByZW5kZXJlciBub3cgYWx3YXlzIGFzc3VtZXMgVEhSRUUuVHJpYW5nbGVzRHJhd01vZGUuIFRyYW5zZm9ybSB5b3VyIGdlb21ldHJ5IHZpYSBCdWZmZXJHZW9tZXRyeVV0aWxzLnRvVHJpYW5nbGVzRHJhd01vZGUoKSBpZiBuZWNlc3NhcnkuIil9LE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKEs0dC5wcm90b3R5cGUse2RyYXdNb2RlOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS5lcnJvcigiVEhSRUUuTWVzaDogLmRyYXdNb2RlIGhhcyBiZWVuIHJlbW92ZWQuIFRoZSByZW5kZXJlciBub3cgYWx3YXlzIGFzc3VtZXMgVEhSRUUuVHJpYW5nbGVzRHJhd01vZGUuIiksMH0sc2V0OmZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuTWVzaDogLmRyYXdNb2RlIGhhcyBiZWVuIHJlbW92ZWQuIFRoZSByZW5kZXJlciBub3cgYWx3YXlzIGFzc3VtZXMgVEhSRUUuVHJpYW5nbGVzRHJhd01vZGUuIFRyYW5zZm9ybSB5b3VyIGdlb21ldHJ5IHZpYSBCdWZmZXJHZW9tZXRyeVV0aWxzLnRvVHJpYW5nbGVzRHJhd01vZGUoKSBpZiBuZWNlc3NhcnkuIil9fX0pLEQ3dC5wcm90b3R5cGUuaW5pdEJvbmVzPWZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuU2tpbm5lZE1lc2g6IGluaXRCb25lcygpIGhhcyBiZWVuIHJlbW92ZWQuIil9LHI2dC5wcm90b3R5cGUuc2V0TGVucz1mdW5jdGlvbih0LGUpe2NvbnNvbGUud2FybigiVEhSRUUuUGVyc3BlY3RpdmVDYW1lcmEuc2V0TGVucyBpcyBkZXByZWNhdGVkLiBVc2UgLnNldEZvY2FsTGVuZ3RoIGFuZCAuZmlsbUdhdWdlIGZvciBhIHBob3RvZ3JhcGhpYyBzZXR1cC4iKSx2b2lkIDAhPT1lJiYodGhpcy5maWxtR2F1Z2U9ZSksdGhpcy5zZXRGb2NhbExlbmd0aCh0KX0sT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoeG5lLnByb3RvdHlwZSx7b25seVNoYWRvdzp7c2V0OmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5MaWdodDogLm9ubHlTaGFkb3cgaGFzIGJlZW4gcmVtb3ZlZC4iKX19LHNoYWRvd0NhbWVyYUZvdjp7c2V0OmZ1bmN0aW9uKHQpe2NvbnNvbGUud2FybigiVEhSRUUuTGlnaHQ6IC5zaGFkb3dDYW1lcmFGb3YgaXMgbm93IC5zaGFkb3cuY2FtZXJhLmZvdi4iKSx0aGlzLnNoYWRvdy5jYW1lcmEuZm92PXR9fSxzaGFkb3dDYW1lcmFMZWZ0OntzZXQ6ZnVuY3Rpb24odCl7Y29uc29sZS53YXJuKCJUSFJFRS5MaWdodDogLnNoYWRvd0NhbWVyYUxlZnQgaXMgbm93IC5zaGFkb3cuY2FtZXJhLmxlZnQuIiksdGhpcy5zaGFkb3cuY2FtZXJhLmxlZnQ9dH19LHNoYWRvd0NhbWVyYVJpZ2h0OntzZXQ6ZnVuY3Rpb24odCl7Y29uc29sZS53YXJuKCJUSFJFRS5MaWdodDogLnNoYWRvd0NhbWVyYVJpZ2h0IGlzIG5vdyAuc2hhZG93LmNhbWVyYS5yaWdodC4iKSx0aGlzLnNoYWRvdy5jYW1lcmEucmlnaHQ9dH19LHNoYWRvd0NhbWVyYVRvcDp7c2V0OmZ1bmN0aW9uKHQpe2NvbnNvbGUud2FybigiVEhSRUUuTGlnaHQ6IC5zaGFkb3dDYW1lcmFUb3AgaXMgbm93IC5zaGFkb3cuY2FtZXJhLnRvcC4iKSx0aGlzLnNoYWRvdy5jYW1lcmEudG9wPXR9fSxzaGFkb3dDYW1lcmFCb3R0b206e3NldDpmdW5jdGlvbih0KXtjb25zb2xlLndhcm4oIlRIUkVFLkxpZ2h0OiAuc2hhZG93Q2FtZXJhQm90dG9tIGlzIG5vdyAuc2hhZG93LmNhbWVyYS5ib3R0b20uIiksdGhpcy5zaGFkb3cuY2FtZXJhLmJvdHRvbT10fX0sc2hhZG93Q2FtZXJhTmVhcjp7c2V0OmZ1bmN0aW9uKHQpe2NvbnNvbGUud2FybigiVEhSRUUuTGlnaHQ6IC5zaGFkb3dDYW1lcmFOZWFyIGlzIG5vdyAuc2hhZG93LmNhbWVyYS5uZWFyLiIpLHRoaXMuc2hhZG93LmNhbWVyYS5uZWFyPXR9fSxzaGFkb3dDYW1lcmFGYXI6e3NldDpmdW5jdGlvbih0KXtjb25zb2xlLndhcm4oIlRIUkVFLkxpZ2h0OiAuc2hhZG93Q2FtZXJhRmFyIGlzIG5vdyAuc2hhZG93LmNhbWVyYS5mYXIuIiksdGhpcy5zaGFkb3cuY2FtZXJhLmZhcj10fX0sc2hhZG93Q2FtZXJhVmlzaWJsZTp7c2V0OmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5MaWdodDogLnNoYWRvd0NhbWVyYVZpc2libGUgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIG5ldyBUSFJFRS5DYW1lcmFIZWxwZXIoIGxpZ2h0LnNoYWRvdy5jYW1lcmEgKSBpbnN0ZWFkLiIpfX0sc2hhZG93Qmlhczp7c2V0OmZ1bmN0aW9uKHQpe2NvbnNvbGUud2FybigiVEhSRUUuTGlnaHQ6IC5zaGFkb3dCaWFzIGlzIG5vdyAuc2hhZG93LmJpYXMuIiksdGhpcy5zaGFkb3cuYmlhcz10fX0sc2hhZG93RGFya25lc3M6e3NldDpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuTGlnaHQ6IC5zaGFkb3dEYXJrbmVzcyBoYXMgYmVlbiByZW1vdmVkLiIpfX0sc2hhZG93TWFwV2lkdGg6e3NldDpmdW5jdGlvbih0KXtjb25zb2xlLndhcm4oIlRIUkVFLkxpZ2h0OiAuc2hhZG93TWFwV2lkdGggaXMgbm93IC5zaGFkb3cubWFwU2l6ZS53aWR0aC4iKSx0aGlzLnNoYWRvdy5tYXBTaXplLndpZHRoPXR9fSxzaGFkb3dNYXBIZWlnaHQ6e3NldDpmdW5jdGlvbih0KXtjb25zb2xlLndhcm4oIlRIUkVFLkxpZ2h0OiAuc2hhZG93TWFwSGVpZ2h0IGlzIG5vdyAuc2hhZG93Lm1hcFNpemUuaGVpZ2h0LiIpLHRoaXMuc2hhZG93Lm1hcFNpemUuaGVpZ2h0PXR9fX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGg0dC5wcm90b3R5cGUse2xlbmd0aDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuQnVmZmVyQXR0cmlidXRlOiAubGVuZ3RoIGhhcyBiZWVuIGRlcHJlY2F0ZWQuIFVzZSAuY291bnQgaW5zdGVhZC4iKSx0aGlzLmFycmF5Lmxlbmd0aH19LGR5bmFtaWM6e2dldDpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLkJ1ZmZlckF0dHJpYnV0ZTogLmR5bmFtaWMgaGFzIGJlZW4gZGVwcmVjYXRlZC4gVXNlIC51c2FnZSBpbnN0ZWFkLiIpLHRoaXMudXNhZ2U9PT1RMnR9LHNldDpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuQnVmZmVyQXR0cmlidXRlOiAuZHluYW1pYyBoYXMgYmVlbiBkZXByZWNhdGVkLiBVc2UgLnVzYWdlIGluc3RlYWQuIiksdGhpcy5zZXRVc2FnZShRMnQpfX19KSxoNHQucHJvdG90eXBlLnNldER5bmFtaWM9ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuQnVmZmVyQXR0cmlidXRlOiAuc2V0RHluYW1pYygpIGhhcyBiZWVuIGRlcHJlY2F0ZWQuIFVzZSAuc2V0VXNhZ2UoKSBpbnN0ZWFkLiIpLHRoaXMuc2V0VXNhZ2UoITA9PT10P1EydDpKMnQpLHRoaXN9LGg0dC5wcm90b3R5cGUuY29weUluZGljZXNBcnJheT1mdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLkJ1ZmZlckF0dHJpYnV0ZTogLmNvcHlJbmRpY2VzQXJyYXkoKSBoYXMgYmVlbiByZW1vdmVkLiIpfSxoNHQucHJvdG90eXBlLnNldEFycmF5PWZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuQnVmZmVyQXR0cmlidXRlOiAuc2V0QXJyYXkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIEJ1ZmZlckdlb21ldHJ5IC5zZXRBdHRyaWJ1dGUgdG8gcmVwbGFjZS9yZXNpemUgYXR0cmlidXRlIGJ1ZmZlcnMiKX0sTjR0LnByb3RvdHlwZS5hZGRJbmRleD1mdW5jdGlvbih0KXtjb25zb2xlLndhcm4oIlRIUkVFLkJ1ZmZlckdlb21ldHJ5OiAuYWRkSW5kZXgoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5zZXRJbmRleCgpLiIpLHRoaXMuc2V0SW5kZXgodCl9LE40dC5wcm90b3R5cGUuYWRkQXR0cmlidXRlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuQnVmZmVyR2VvbWV0cnk6IC5hZGRBdHRyaWJ1dGUoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5zZXRBdHRyaWJ1dGUoKS4iKSxlJiZlLmlzQnVmZmVyQXR0cmlidXRlfHxlJiZlLmlzSW50ZXJsZWF2ZWRCdWZmZXJBdHRyaWJ1dGU/ImluZGV4Ij09PXQ/KGNvbnNvbGUud2FybigiVEhSRUUuQnVmZmVyR2VvbWV0cnkuYWRkQXR0cmlidXRlOiBVc2UgLnNldEluZGV4KCkgZm9yIGluZGV4IGF0dHJpYnV0ZS4iKSx0aGlzLnNldEluZGV4KGUpLHRoaXMpOnRoaXMuc2V0QXR0cmlidXRlKHQsZSk6KGNvbnNvbGUud2FybigiVEhSRUUuQnVmZmVyR2VvbWV0cnk6IC5hZGRBdHRyaWJ1dGUoKSBub3cgZXhwZWN0cyAoIG5hbWUsIGF0dHJpYnV0ZSApLiIpLHRoaXMuc2V0QXR0cmlidXRlKHQsbmV3IGg0dChhcmd1bWVudHNbMV0sYXJndW1lbnRzWzJdKSkpfSxONHQucHJvdG90eXBlLmFkZERyYXdDYWxsPWZ1bmN0aW9uKHQsZSxuKXt2b2lkIDAhPT1uJiZjb25zb2xlLndhcm4oIlRIUkVFLkJ1ZmZlckdlb21ldHJ5OiAuYWRkRHJhd0NhbGwoKSBubyBsb25nZXIgc3VwcG9ydHMgaW5kZXhPZmZzZXQuIiksY29uc29sZS53YXJuKCJUSFJFRS5CdWZmZXJHZW9tZXRyeTogLmFkZERyYXdDYWxsKCkgaXMgbm93IC5hZGRHcm91cCgpLiIpLHRoaXMuYWRkR3JvdXAodCxlKX0sTjR0LnByb3RvdHlwZS5jbGVhckRyYXdDYWxscz1mdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuQnVmZmVyR2VvbWV0cnk6IC5jbGVhckRyYXdDYWxscygpIGlzIG5vdyAuY2xlYXJHcm91cHMoKS4iKSx0aGlzLmNsZWFyR3JvdXBzKCl9LE40dC5wcm90b3R5cGUuY29tcHV0ZU9mZnNldHM9ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLkJ1ZmZlckdlb21ldHJ5OiAuY29tcHV0ZU9mZnNldHMoKSBoYXMgYmVlbiByZW1vdmVkLiIpfSxONHQucHJvdG90eXBlLnJlbW92ZUF0dHJpYnV0ZT1mdW5jdGlvbih0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5CdWZmZXJHZW9tZXRyeTogLnJlbW92ZUF0dHJpYnV0ZSgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmRlbGV0ZUF0dHJpYnV0ZSgpLiIpLHRoaXMuZGVsZXRlQXR0cmlidXRlKHQpfSxONHQucHJvdG90eXBlLmFwcGx5TWF0cml4PWZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLkJ1ZmZlckdlb21ldHJ5OiAuYXBwbHlNYXRyaXgoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5hcHBseU1hdHJpeDQoKS4iKSx0aGlzLmFwcGx5TWF0cml4NCh0KX0sT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoTjR0LnByb3RvdHlwZSx7ZHJhd2NhbGxzOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS5lcnJvcigiVEhSRUUuQnVmZmVyR2VvbWV0cnk6IC5kcmF3Y2FsbHMgaGFzIGJlZW4gcmVuYW1lZCB0byAuZ3JvdXBzLiIpLHRoaXMuZ3JvdXBzfX0sb2Zmc2V0czp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuQnVmZmVyR2VvbWV0cnk6IC5vZmZzZXRzIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmdyb3Vwcy4iKSx0aGlzLmdyb3Vwc319fSksdTd0LnByb3RvdHlwZS5zZXREeW5hbWljPWZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLkludGVybGVhdmVkQnVmZmVyOiAuc2V0RHluYW1pYygpIGhhcyBiZWVuIGRlcHJlY2F0ZWQuIFVzZSAuc2V0VXNhZ2UoKSBpbnN0ZWFkLiIpLHRoaXMuc2V0VXNhZ2UoITA9PT10P1EydDpKMnQpLHRoaXN9LHU3dC5wcm90b3R5cGUuc2V0QXJyYXk9ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5JbnRlcmxlYXZlZEJ1ZmZlcjogLnNldEFycmF5IGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBCdWZmZXJHZW9tZXRyeSAuc2V0QXR0cmlidXRlIHRvIHJlcGxhY2UvcmVzaXplIGF0dHJpYnV0ZSBidWZmZXJzIil9LGJlZS5wcm90b3R5cGUuZ2V0QXJyYXlzPWZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuRXh0cnVkZUdlb21ldHJ5OiAuZ2V0QXJyYXlzKCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX0sYmVlLnByb3RvdHlwZS5hZGRTaGFwZUxpc3Q9ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5FeHRydWRlR2VvbWV0cnk6IC5hZGRTaGFwZUxpc3QoKSBoYXMgYmVlbiByZW1vdmVkLiIpfSxiZWUucHJvdG90eXBlLmFkZFNoYXBlPWZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuRXh0cnVkZUdlb21ldHJ5OiAuYWRkU2hhcGUoKSBoYXMgYmVlbiByZW1vdmVkLiIpfSxjN3QucHJvdG90eXBlLmRpc3Bvc2U9ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5TY2VuZTogLmRpc3Bvc2UoKSBoYXMgYmVlbiByZW1vdmVkLiIpfSxOaWUucHJvdG90eXBlLm9uVXBkYXRlPWZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuVW5pZm9ybTogLm9uVXBkYXRlKCkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIG9iamVjdC5vbkJlZm9yZVJlbmRlcigpIGluc3RlYWQuIiksdGhpc30sT2JqZWN0LmRlZmluZVByb3BlcnRpZXModDR0LnByb3RvdHlwZSx7d3JhcEFyb3VuZDp7Z2V0OmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5NYXRlcmlhbDogLndyYXBBcm91bmQgaGFzIGJlZW4gcmVtb3ZlZC4iKX0sc2V0OmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5NYXRlcmlhbDogLndyYXBBcm91bmQgaGFzIGJlZW4gcmVtb3ZlZC4iKX19LG92ZXJkcmF3OntnZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLk1hdGVyaWFsOiAub3ZlcmRyYXcgaGFzIGJlZW4gcmVtb3ZlZC4iKX0sc2V0OmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5NYXRlcmlhbDogLm92ZXJkcmF3IGhhcyBiZWVuIHJlbW92ZWQuIil9fSx3cmFwUkdCOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5NYXRlcmlhbDogLndyYXBSR0IgaGFzIGJlZW4gcmVtb3ZlZC4iKSxuZXcgczR0fX0sc2hhZGluZzp7Z2V0OmZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuIit0aGlzLnR5cGUrIjogLnNoYWRpbmcgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIHRoZSBib29sZWFuIC5mbGF0U2hhZGluZyBpbnN0ZWFkLiIpfSxzZXQ6ZnVuY3Rpb24odCl7Y29uc29sZS53YXJuKCJUSFJFRS4iK3RoaXMudHlwZSsiOiAuc2hhZGluZyBoYXMgYmVlbiByZW1vdmVkLiBVc2UgdGhlIGJvb2xlYW4gLmZsYXRTaGFkaW5nIGluc3RlYWQuIiksdGhpcy5mbGF0U2hhZGluZz0xPT09dH19LHN0ZW5jaWxNYXNrOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS4iK3RoaXMudHlwZSsiOiAuc3RlbmNpbE1hc2sgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIC5zdGVuY2lsRnVuY01hc2sgaW5zdGVhZC4iKSx0aGlzLnN0ZW5jaWxGdW5jTWFza30sc2V0OmZ1bmN0aW9uKHQpe2NvbnNvbGUud2FybigiVEhSRUUuIit0aGlzLnR5cGUrIjogLnN0ZW5jaWxNYXNrIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSAuc3RlbmNpbEZ1bmNNYXNrIGluc3RlYWQuIiksdGhpcy5zdGVuY2lsRnVuY01hc2s9dH19LHZlcnRleFRhbmdlbnRzOntnZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLiIrdGhpcy50eXBlKyI6IC52ZXJ0ZXhUYW5nZW50cyBoYXMgYmVlbiByZW1vdmVkLiIpfSxzZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLiIrdGhpcy50eXBlKyI6IC52ZXJ0ZXhUYW5nZW50cyBoYXMgYmVlbiByZW1vdmVkLiIpfX19KSxPYmplY3QuZGVmaW5lUHJvcGVydGllcyhuNnQucHJvdG90eXBlLHtkZXJpdmF0aXZlczp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuU2hhZGVyTWF0ZXJpYWw6IC5kZXJpdmF0aXZlcyBoYXMgYmVlbiBtb3ZlZCB0byAuZXh0ZW5zaW9ucy5kZXJpdmF0aXZlcy4iKSx0aGlzLmV4dGVuc2lvbnMuZGVyaXZhdGl2ZXN9LHNldDpmdW5jdGlvbih0KXtjb25zb2xlLndhcm4oIlRIUkVFLiBTaGFkZXJNYXRlcmlhbDogLmRlcml2YXRpdmVzIGhhcyBiZWVuIG1vdmVkIHRvIC5leHRlbnNpb25zLmRlcml2YXRpdmVzLiIpLHRoaXMuZXh0ZW5zaW9ucy5kZXJpdmF0aXZlcz10fX19KSxvN3QucHJvdG90eXBlLmNsZWFyVGFyZ2V0PWZ1bmN0aW9uKHQsZSxuLGkpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLmNsZWFyVGFyZ2V0KCkgaGFzIGJlZW4gZGVwcmVjYXRlZC4gVXNlIC5zZXRSZW5kZXJUYXJnZXQoKSBhbmQgLmNsZWFyKCkgaW5zdGVhZC4iKSx0aGlzLnNldFJlbmRlclRhcmdldCh0KSx0aGlzLmNsZWFyKGUsbixpKX0sbzd0LnByb3RvdHlwZS5hbmltYXRlPWZ1bmN0aW9uKHQpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLmFuaW1hdGUoKSBpcyBub3cgLnNldEFuaW1hdGlvbkxvb3AoKS4iKSx0aGlzLnNldEFuaW1hdGlvbkxvb3AodCl9LG83dC5wcm90b3R5cGUuZ2V0Q3VycmVudFJlbmRlclRhcmdldD1mdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5nZXRDdXJyZW50UmVuZGVyVGFyZ2V0KCkgaXMgbm93IC5nZXRSZW5kZXJUYXJnZXQoKS4iKSx0aGlzLmdldFJlbmRlclRhcmdldCgpfSxvN3QucHJvdG90eXBlLmdldE1heEFuaXNvdHJvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuZ2V0TWF4QW5pc290cm9weSgpIGlzIG5vdyAuY2FwYWJpbGl0aWVzLmdldE1heEFuaXNvdHJvcHkoKS4iKSx0aGlzLmNhcGFiaWxpdGllcy5nZXRNYXhBbmlzb3Ryb3B5KCl9LG83dC5wcm90b3R5cGUuZ2V0UHJlY2lzaW9uPWZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLmdldFByZWNpc2lvbigpIGlzIG5vdyAuY2FwYWJpbGl0aWVzLnByZWNpc2lvbi4iKSx0aGlzLmNhcGFiaWxpdGllcy5wcmVjaXNpb259LG83dC5wcm90b3R5cGUucmVzZXRHTFN0YXRlPWZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnJlc2V0R0xTdGF0ZSgpIGlzIG5vdyAuc3RhdGUucmVzZXQoKS4iKSx0aGlzLnN0YXRlLnJlc2V0KCl9LG83dC5wcm90b3R5cGUuc3VwcG9ydHNGbG9hdFRleHR1cmVzPWZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnN1cHBvcnRzRmxvYXRUZXh0dXJlcygpIGlzIG5vdyAuZXh0ZW5zaW9ucy5nZXQoICdPRVNfdGV4dHVyZV9mbG9hdCcgKS4iKSx0aGlzLmV4dGVuc2lvbnMuZ2V0KCJPRVNfdGV4dHVyZV9mbG9hdCIpfSxvN3QucHJvdG90eXBlLnN1cHBvcnRzSGFsZkZsb2F0VGV4dHVyZXM9ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuc3VwcG9ydHNIYWxmRmxvYXRUZXh0dXJlcygpIGlzIG5vdyAuZXh0ZW5zaW9ucy5nZXQoICdPRVNfdGV4dHVyZV9oYWxmX2Zsb2F0JyApLiIpLHRoaXMuZXh0ZW5zaW9ucy5nZXQoIk9FU190ZXh0dXJlX2hhbGZfZmxvYXQiKX0sbzd0LnByb3RvdHlwZS5zdXBwb3J0c1N0YW5kYXJkRGVyaXZhdGl2ZXM9ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuc3VwcG9ydHNTdGFuZGFyZERlcml2YXRpdmVzKCkgaXMgbm93IC5leHRlbnNpb25zLmdldCggJ09FU19zdGFuZGFyZF9kZXJpdmF0aXZlcycgKS4iKSx0aGlzLmV4dGVuc2lvbnMuZ2V0KCJPRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMiKX0sbzd0LnByb3RvdHlwZS5zdXBwb3J0c0NvbXByZXNzZWRUZXh0dXJlUzNUQz1mdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5zdXBwb3J0c0NvbXByZXNzZWRUZXh0dXJlUzNUQygpIGlzIG5vdyAuZXh0ZW5zaW9ucy5nZXQoICdXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfczN0YycgKS4iKSx0aGlzLmV4dGVuc2lvbnMuZ2V0KCJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfczN0YyIpfSxvN3QucHJvdG90eXBlLnN1cHBvcnRzQ29tcHJlc3NlZFRleHR1cmVQVlJUQz1mdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5zdXBwb3J0c0NvbXByZXNzZWRUZXh0dXJlUFZSVEMoKSBpcyBub3cgLmV4dGVuc2lvbnMuZ2V0KCAnV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3B2cnRjJyApLiIpLHRoaXMuZXh0ZW5zaW9ucy5nZXQoIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9wdnJ0YyIpfSxvN3QucHJvdG90eXBlLnN1cHBvcnRzQmxlbmRNaW5NYXg9ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuc3VwcG9ydHNCbGVuZE1pbk1heCgpIGlzIG5vdyAuZXh0ZW5zaW9ucy5nZXQoICdFWFRfYmxlbmRfbWlubWF4JyApLiIpLHRoaXMuZXh0ZW5zaW9ucy5nZXQoIkVYVF9ibGVuZF9taW5tYXgiKX0sbzd0LnByb3RvdHlwZS5zdXBwb3J0c1ZlcnRleFRleHR1cmVzPWZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnN1cHBvcnRzVmVydGV4VGV4dHVyZXMoKSBpcyBub3cgLmNhcGFiaWxpdGllcy52ZXJ0ZXhUZXh0dXJlcy4iKSx0aGlzLmNhcGFiaWxpdGllcy52ZXJ0ZXhUZXh0dXJlc30sbzd0LnByb3RvdHlwZS5zdXBwb3J0c0luc3RhbmNlZEFycmF5cz1mdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5zdXBwb3J0c0luc3RhbmNlZEFycmF5cygpIGlzIG5vdyAuZXh0ZW5zaW9ucy5nZXQoICdBTkdMRV9pbnN0YW5jZWRfYXJyYXlzJyApLiIpLHRoaXMuZXh0ZW5zaW9ucy5nZXQoIkFOR0xFX2luc3RhbmNlZF9hcnJheXMiKX0sbzd0LnByb3RvdHlwZS5lbmFibGVTY2lzc29yVGVzdD1mdW5jdGlvbih0KXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5lbmFibGVTY2lzc29yVGVzdCgpIGlzIG5vdyAuc2V0U2Npc3NvclRlc3QoKS4iKSx0aGlzLnNldFNjaXNzb3JUZXN0KHQpfSxvN3QucHJvdG90eXBlLmluaXRNYXRlcmlhbD1mdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLmluaXRNYXRlcmlhbCgpIGhhcyBiZWVuIHJlbW92ZWQuIil9LG83dC5wcm90b3R5cGUuYWRkUHJlUGx1Z2luPWZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuYWRkUHJlUGx1Z2luKCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX0sbzd0LnByb3RvdHlwZS5hZGRQb3N0UGx1Z2luPWZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuYWRkUG9zdFBsdWdpbigpIGhhcyBiZWVuIHJlbW92ZWQuIil9LG83dC5wcm90b3R5cGUudXBkYXRlU2hhZG93TWFwPWZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAudXBkYXRlU2hhZG93TWFwKCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX0sbzd0LnByb3RvdHlwZS5zZXRGYWNlQ3VsbGluZz1mdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnNldEZhY2VDdWxsaW5nKCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX0sbzd0LnByb3RvdHlwZS5hbGxvY1RleHR1cmVVbml0PWZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuYWxsb2NUZXh0dXJlVW5pdCgpIGhhcyBiZWVuIHJlbW92ZWQuIil9LG83dC5wcm90b3R5cGUuc2V0VGV4dHVyZT1mdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnNldFRleHR1cmUoKSBoYXMgYmVlbiByZW1vdmVkLiIpfSxvN3QucHJvdG90eXBlLnNldFRleHR1cmUyRD1mdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnNldFRleHR1cmUyRCgpIGhhcyBiZWVuIHJlbW92ZWQuIil9LG83dC5wcm90b3R5cGUuc2V0VGV4dHVyZUN1YmU9ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5zZXRUZXh0dXJlQ3ViZSgpIGhhcyBiZWVuIHJlbW92ZWQuIil9LG83dC5wcm90b3R5cGUuZ2V0QWN0aXZlTWlwTWFwTGV2ZWw9ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuZ2V0QWN0aXZlTWlwTWFwTGV2ZWwoKSBpcyBub3cgLmdldEFjdGl2ZU1pcG1hcExldmVsKCkuIiksdGhpcy5nZXRBY3RpdmVNaXBtYXBMZXZlbCgpfSxPYmplY3QuZGVmaW5lUHJvcGVydGllcyhvN3QucHJvdG90eXBlLHtzaGFkb3dNYXBFbmFibGVkOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zaGFkb3dNYXAuZW5hYmxlZH0sc2V0OmZ1bmN0aW9uKHQpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnNoYWRvd01hcEVuYWJsZWQgaXMgbm93IC5zaGFkb3dNYXAuZW5hYmxlZC4iKSx0aGlzLnNoYWRvd01hcC5lbmFibGVkPXR9fSxzaGFkb3dNYXBUeXBlOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zaGFkb3dNYXAudHlwZX0sc2V0OmZ1bmN0aW9uKHQpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnNoYWRvd01hcFR5cGUgaXMgbm93IC5zaGFkb3dNYXAudHlwZS4iKSx0aGlzLnNoYWRvd01hcC50eXBlPXR9fSxzaGFkb3dNYXBDdWxsRmFjZTp7Z2V0OmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuc2hhZG93TWFwQ3VsbEZhY2UgaGFzIGJlZW4gcmVtb3ZlZC4gU2V0IE1hdGVyaWFsLnNoYWRvd1NpZGUgaW5zdGVhZC4iKX0sc2V0OmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuc2hhZG93TWFwQ3VsbEZhY2UgaGFzIGJlZW4gcmVtb3ZlZC4gU2V0IE1hdGVyaWFsLnNoYWRvd1NpZGUgaW5zdGVhZC4iKX19LGNvbnRleHQ6e2dldDpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5jb250ZXh0IGhhcyBiZWVuIHJlbW92ZWQuIFVzZSAuZ2V0Q29udGV4dCgpIGluc3RlYWQuIiksdGhpcy5nZXRDb250ZXh0KCl9fSx2cjp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnZyIGhhcyBiZWVuIHJlbmFtZWQgdG8gLnhyIiksdGhpcy54cn19LGdhbW1hSW5wdXQ6e2dldDpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5nYW1tYUlucHV0IGhhcyBiZWVuIHJlbW92ZWQuIFNldCB0aGUgZW5jb2RpbmcgZm9yIHRleHR1cmVzIHZpYSBUZXh0dXJlLmVuY29kaW5nIGluc3RlYWQuIiksITF9LHNldDpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLmdhbW1hSW5wdXQgaGFzIGJlZW4gcmVtb3ZlZC4gU2V0IHRoZSBlbmNvZGluZyBmb3IgdGV4dHVyZXMgdmlhIFRleHR1cmUuZW5jb2RpbmcgaW5zdGVhZC4iKX19LGdhbW1hT3V0cHV0OntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuZ2FtbWFPdXRwdXQgaGFzIGJlZW4gcmVtb3ZlZC4gU2V0IFdlYkdMUmVuZGVyZXIub3V0cHV0RW5jb2RpbmcgaW5zdGVhZC4iKSwhMX0sc2V0OmZ1bmN0aW9uKHQpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLmdhbW1hT3V0cHV0IGhhcyBiZWVuIHJlbW92ZWQuIFNldCBXZWJHTFJlbmRlcmVyLm91dHB1dEVuY29kaW5nIGluc3RlYWQuIiksdGhpcy5vdXRwdXRFbmNvZGluZz0hMD09PXQ/VzJ0OkcydH19LHRvbmVNYXBwaW5nV2hpdGVQb2ludDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnRvbmVNYXBwaW5nV2hpdGVQb2ludCBoYXMgYmVlbiByZW1vdmVkLiIpLDF9LHNldDpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnRvbmVNYXBwaW5nV2hpdGVQb2ludCBoYXMgYmVlbiByZW1vdmVkLiIpfX19KSxPYmplY3QuZGVmaW5lUHJvcGVydGllcygkOHQucHJvdG90eXBlLHtjdWxsRmFjZTp7Z2V0OmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuc2hhZG93TWFwLmN1bGxGYWNlIGhhcyBiZWVuIHJlbW92ZWQuIFNldCBNYXRlcmlhbC5zaGFkb3dTaWRlIGluc3RlYWQuIil9LHNldDpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnNoYWRvd01hcC5jdWxsRmFjZSBoYXMgYmVlbiByZW1vdmVkLiBTZXQgTWF0ZXJpYWwuc2hhZG93U2lkZSBpbnN0ZWFkLiIpfX0scmVuZGVyUmV2ZXJzZVNpZGVkOntnZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5zaGFkb3dNYXAucmVuZGVyUmV2ZXJzZVNpZGVkIGhhcyBiZWVuIHJlbW92ZWQuIFNldCBNYXRlcmlhbC5zaGFkb3dTaWRlIGluc3RlYWQuIil9LHNldDpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnNoYWRvd01hcC5yZW5kZXJSZXZlcnNlU2lkZWQgaGFzIGJlZW4gcmVtb3ZlZC4gU2V0IE1hdGVyaWFsLnNoYWRvd1NpZGUgaW5zdGVhZC4iKX19LHJlbmRlclNpbmdsZVNpZGVkOntnZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5zaGFkb3dNYXAucmVuZGVyU2luZ2xlU2lkZWQgaGFzIGJlZW4gcmVtb3ZlZC4gU2V0IE1hdGVyaWFsLnNoYWRvd1NpZGUgaW5zdGVhZC4iKX0sc2V0OmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuc2hhZG93TWFwLnJlbmRlclNpbmdsZVNpZGVkIGhhcyBiZWVuIHJlbW92ZWQuIFNldCBNYXRlcmlhbC5zaGFkb3dTaWRlIGluc3RlYWQuIil9fX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKE81dC5wcm90b3R5cGUse3dyYXBTOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlclRhcmdldDogLndyYXBTIGlzIG5vdyAudGV4dHVyZS53cmFwUy4iKSx0aGlzLnRleHR1cmUud3JhcFN9LHNldDpmdW5jdGlvbih0KXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyVGFyZ2V0OiAud3JhcFMgaXMgbm93IC50ZXh0dXJlLndyYXBTLiIpLHRoaXMudGV4dHVyZS53cmFwUz10fX0sd3JhcFQ6e2dldDpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyVGFyZ2V0OiAud3JhcFQgaXMgbm93IC50ZXh0dXJlLndyYXBULiIpLHRoaXMudGV4dHVyZS53cmFwVH0sc2V0OmZ1bmN0aW9uKHQpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJUYXJnZXQ6IC53cmFwVCBpcyBub3cgLnRleHR1cmUud3JhcFQuIiksdGhpcy50ZXh0dXJlLndyYXBUPXR9fSxtYWdGaWx0ZXI6e2dldDpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyVGFyZ2V0OiAubWFnRmlsdGVyIGlzIG5vdyAudGV4dHVyZS5tYWdGaWx0ZXIuIiksdGhpcy50ZXh0dXJlLm1hZ0ZpbHRlcn0sc2V0OmZ1bmN0aW9uKHQpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJUYXJnZXQ6IC5tYWdGaWx0ZXIgaXMgbm93IC50ZXh0dXJlLm1hZ0ZpbHRlci4iKSx0aGlzLnRleHR1cmUubWFnRmlsdGVyPXR9fSxtaW5GaWx0ZXI6e2dldDpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyVGFyZ2V0OiAubWluRmlsdGVyIGlzIG5vdyAudGV4dHVyZS5taW5GaWx0ZXIuIiksdGhpcy50ZXh0dXJlLm1pbkZpbHRlcn0sc2V0OmZ1bmN0aW9uKHQpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJUYXJnZXQ6IC5taW5GaWx0ZXIgaXMgbm93IC50ZXh0dXJlLm1pbkZpbHRlci4iKSx0aGlzLnRleHR1cmUubWluRmlsdGVyPXR9fSxhbmlzb3Ryb3B5OntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlclRhcmdldDogLmFuaXNvdHJvcHkgaXMgbm93IC50ZXh0dXJlLmFuaXNvdHJvcHkuIiksdGhpcy50ZXh0dXJlLmFuaXNvdHJvcHl9LHNldDpmdW5jdGlvbih0KXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyVGFyZ2V0OiAuYW5pc290cm9weSBpcyBub3cgLnRleHR1cmUuYW5pc290cm9weS4iKSx0aGlzLnRleHR1cmUuYW5pc290cm9weT10fX0sb2Zmc2V0OntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlclRhcmdldDogLm9mZnNldCBpcyBub3cgLnRleHR1cmUub2Zmc2V0LiIpLHRoaXMudGV4dHVyZS5vZmZzZXR9LHNldDpmdW5jdGlvbih0KXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyVGFyZ2V0OiAub2Zmc2V0IGlzIG5vdyAudGV4dHVyZS5vZmZzZXQuIiksdGhpcy50ZXh0dXJlLm9mZnNldD10fX0scmVwZWF0OntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlclRhcmdldDogLnJlcGVhdCBpcyBub3cgLnRleHR1cmUucmVwZWF0LiIpLHRoaXMudGV4dHVyZS5yZXBlYXR9LHNldDpmdW5jdGlvbih0KXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyVGFyZ2V0OiAucmVwZWF0IGlzIG5vdyAudGV4dHVyZS5yZXBlYXQuIiksdGhpcy50ZXh0dXJlLnJlcGVhdD10fX0sZm9ybWF0OntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlclRhcmdldDogLmZvcm1hdCBpcyBub3cgLnRleHR1cmUuZm9ybWF0LiIpLHRoaXMudGV4dHVyZS5mb3JtYXR9LHNldDpmdW5jdGlvbih0KXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyVGFyZ2V0OiAuZm9ybWF0IGlzIG5vdyAudGV4dHVyZS5mb3JtYXQuIiksdGhpcy50ZXh0dXJlLmZvcm1hdD10fX0sdHlwZTp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJUYXJnZXQ6IC50eXBlIGlzIG5vdyAudGV4dHVyZS50eXBlLiIpLHRoaXMudGV4dHVyZS50eXBlfSxzZXQ6ZnVuY3Rpb24odCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlclRhcmdldDogLnR5cGUgaXMgbm93IC50ZXh0dXJlLnR5cGUuIiksdGhpcy50ZXh0dXJlLnR5cGU9dH19LGdlbmVyYXRlTWlwbWFwczp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJUYXJnZXQ6IC5nZW5lcmF0ZU1pcG1hcHMgaXMgbm93IC50ZXh0dXJlLmdlbmVyYXRlTWlwbWFwcy4iKSx0aGlzLnRleHR1cmUuZ2VuZXJhdGVNaXBtYXBzfSxzZXQ6ZnVuY3Rpb24odCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlclRhcmdldDogLmdlbmVyYXRlTWlwbWFwcyBpcyBub3cgLnRleHR1cmUuZ2VuZXJhdGVNaXBtYXBzLiIpLHRoaXMudGV4dHVyZS5nZW5lcmF0ZU1pcG1hcHM9dH19fSksaGllLnByb3RvdHlwZS5sb2FkPWZ1bmN0aW9uKHQpe2NvbnNvbGUud2FybigiVEhSRUUuQXVkaW86IC5sb2FkIGhhcyBiZWVuIGRlcHJlY2F0ZWQuIFVzZSBUSFJFRS5BdWRpb0xvYWRlciBpbnN0ZWFkLiIpO2NvbnN0IGU9dGhpcztyZXR1cm4obmV3IHRpZSkubG9hZCh0LChmdW5jdGlvbih0KXtlLnNldEJ1ZmZlcih0KX0pKSx0aGlzfSxnaWUucHJvdG90eXBlLmdldERhdGE9ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5BdWRpb0FuYWx5c2VyOiAuZ2V0RGF0YSgpIGlzIG5vdyAuZ2V0RnJlcXVlbmN5RGF0YSgpLiIpLHRoaXMuZ2V0RnJlcXVlbmN5RGF0YSgpfSxhNnQucHJvdG90eXBlLnVwZGF0ZUN1YmVNYXA9ZnVuY3Rpb24odCxlKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5DdWJlQ2FtZXJhOiAudXBkYXRlQ3ViZU1hcCgpIGlzIG5vdyAudXBkYXRlKCkuIiksdGhpcy51cGRhdGUodCxlKX0sYTZ0LnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbih0LGUsbixpKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5DdWJlQ2FtZXJhOiAuY2xlYXIoKSBpcyBub3cgLnJlbmRlclRhcmdldC5jbGVhcigpLiIpLHRoaXMucmVuZGVyVGFyZ2V0LmNsZWFyKHQsZSxuLGkpfSxMNXQuY3Jvc3NPcmlnaW49dm9pZCAwLEw1dC5sb2FkVGV4dHVyZT1mdW5jdGlvbih0LGUsbixpKXtjb25zb2xlLndhcm4oIlRIUkVFLkltYWdlVXRpbHMubG9hZFRleHR1cmUgaGFzIGJlZW4gZGVwcmVjYXRlZC4gVXNlIFRIUkVFLlRleHR1cmVMb2FkZXIoKSBpbnN0ZWFkLiIpO2NvbnN0IHI9bmV3IF9uZTtyLnNldENyb3NzT3JpZ2luKHRoaXMuY3Jvc3NPcmlnaW4pO2NvbnN0IG89ci5sb2FkKHQsbix2b2lkIDAsaSk7cmV0dXJuIGUmJihvLm1hcHBpbmc9ZSksb30sTDV0LmxvYWRUZXh0dXJlQ3ViZT1mdW5jdGlvbih0LGUsbixpKXtjb25zb2xlLndhcm4oIlRIUkVFLkltYWdlVXRpbHMubG9hZFRleHR1cmVDdWJlIGhhcyBiZWVuIGRlcHJlY2F0ZWQuIFVzZSBUSFJFRS5DdWJlVGV4dHVyZUxvYWRlcigpIGluc3RlYWQuIik7Y29uc3Qgcj1uZXcgbW5lO3Iuc2V0Q3Jvc3NPcmlnaW4odGhpcy5jcm9zc09yaWdpbik7Y29uc3Qgbz1yLmxvYWQodCxuLHZvaWQgMCxpKTtyZXR1cm4gZSYmKG8ubWFwcGluZz1lKSxvfSxMNXQubG9hZENvbXByZXNzZWRUZXh0dXJlPWZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuSW1hZ2VVdGlscy5sb2FkQ29tcHJlc3NlZFRleHR1cmUgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIFRIUkVFLkREU0xvYWRlciBpbnN0ZWFkLiIpfSxMNXQubG9hZENvbXByZXNzZWRUZXh0dXJlQ3ViZT1mdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLkltYWdlVXRpbHMubG9hZENvbXByZXNzZWRUZXh0dXJlQ3ViZSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgVEhSRUUuRERTTG9hZGVyIGluc3RlYWQuIil9O2NvbnN0IGZyZT17Y3JlYXRlTXVsdGlNYXRlcmlhbE9iamVjdDpmdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLlNjZW5lVXRpbHMgaGFzIGJlZW4gbW92ZWQgdG8gL2V4YW1wbGVzL2pzbS91dGlscy9TY2VuZVV0aWxzLmpzIil9LGRldGFjaDpmdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLlNjZW5lVXRpbHMgaGFzIGJlZW4gbW92ZWQgdG8gL2V4YW1wbGVzL2pzbS91dGlscy9TY2VuZVV0aWxzLmpzIil9LGF0dGFjaDpmdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLlNjZW5lVXRpbHMgaGFzIGJlZW4gbW92ZWQgdG8gL2V4YW1wbGVzL2pzbS91dGlscy9TY2VuZVV0aWxzLmpzIil9fTsidW5kZWZpbmVkIiE9dHlwZW9mIF9fVEhSRUVfREVWVE9PTFNfXyYmX19USFJFRV9ERVZUT09MU19fLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJyZWdpc3RlciIse2RldGFpbDp7cmV2aXNpb246SzB0fX0pKSwidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdyYmKHdpbmRvdy5fX1RIUkVFX18/Y29uc29sZS53YXJuKCJXQVJOSU5HOiBNdWx0aXBsZSBpbnN0YW5jZXMgb2YgVGhyZWUuanMgYmVpbmcgaW1wb3J0ZWQuIik6d2luZG93Ll9fVEhSRUVfXz1LMHQpO3ZhciBtcmU9T2JqZWN0LmZyZWV6ZSh7X19wcm90b19fOm51bGwsQUNFU0ZpbG1pY1RvbmVNYXBwaW5nOjQsQWRkRXF1YXRpb246UTB0LEFkZE9wZXJhdGlvbjoyLEFkZGl0aXZlQW5pbWF0aW9uQmxlbmRNb2RlOmoydCxBZGRpdGl2ZUJsZW5kaW5nOjIsQWxwaGFGb3JtYXQ6MTAyMSxBbHdheXNEZXB0aDoxLEFsd2F5c1N0ZW5jaWxGdW5jOjUxOSxBbWJpZW50TGlnaHQ6em5lLEFtYmllbnRMaWdodFByb2JlOm5pZSxBbmltYXRpb25DbGlwOmFuZSxBbmltYXRpb25Mb2FkZXI6Y2xhc3MgZXh0ZW5kcyBobmV7Y29uc3RydWN0b3IodCl7c3VwZXIodCl9bG9hZCh0LGUsbixpKXtjb25zdCByPXRoaXMsbz1uZXcgcG5lKHRoaXMubWFuYWdlcik7by5zZXRQYXRoKHRoaXMucGF0aCksby5zZXRSZXF1ZXN0SGVhZGVyKHRoaXMucmVxdWVzdEhlYWRlciksby5zZXRXaXRoQ3JlZGVudGlhbHModGhpcy53aXRoQ3JlZGVudGlhbHMpLG8ubG9hZCh0LChmdW5jdGlvbihuKXt0cnl7ZShyLnBhcnNlKEpTT04ucGFyc2UobikpKX1jYXRjaChlKXtpP2koZSk6Y29uc29sZS5lcnJvcihlKSxyLm1hbmFnZXIuaXRlbUVycm9yKHQpfX0pLG4saSl9cGFyc2UodCl7Y29uc3QgZT1bXTtmb3IobGV0IG49MDtuPHQubGVuZ3RoO24rKyl7Y29uc3QgaT1hbmUucGFyc2UodFtuXSk7ZS5wdXNoKGkpfXJldHVybiBlfX0sQW5pbWF0aW9uTWl4ZXI6UGllLEFuaW1hdGlvbk9iamVjdEdyb3VwOmtpZSxBbmltYXRpb25VdGlsczpZZWUsQXJjQ3VydmU6QXRlLEFycmF5Q2FtZXJhOlE4dCxBcnJvd0hlbHBlcjpjbGFzcyBleHRlbmRzIFYzdHtjb25zdHJ1Y3Rvcih0PW5ldyBINXQoMCwwLDEpLGU9bmV3IEg1dCgwLDAsMCksbj0xLGk9MTY3NzY5NjAscj0uMipuLG89LjIqcil7c3VwZXIoKSx0aGlzLnR5cGU9IkFycm93SGVscGVyIix2b2lkIDA9PT1jcmUmJihjcmU9bmV3IE40dCxjcmUuc2V0QXR0cmlidXRlKCJwb3NpdGlvbiIsbmV3IGI0dChbMCwwLDAsMCwxLDBdLDMpKSx1cmU9bmV3IF90ZSgwLC41LDEsNSwxKSx1cmUudHJhbnNsYXRlKDAsLS41LDApKSx0aGlzLnBvc2l0aW9uLmNvcHkoZSksdGhpcy5saW5lPW5ldyB0dGUoY3JlLG5ldyBYN3Qoe2NvbG9yOmksdG9uZU1hcHBlZDohMX0pKSx0aGlzLmxpbmUubWF0cml4QXV0b1VwZGF0ZT0hMSx0aGlzLmFkZCh0aGlzLmxpbmUpLHRoaXMuY29uZT1uZXcgSzR0KHVyZSxuZXcgbDR0KHtjb2xvcjppLHRvbmVNYXBwZWQ6ITF9KSksdGhpcy5jb25lLm1hdHJpeEF1dG9VcGRhdGU9ITEsdGhpcy5hZGQodGhpcy5jb25lKSx0aGlzLnNldERpcmVjdGlvbih0KSx0aGlzLnNldExlbmd0aChuLHIsbyl9c2V0RGlyZWN0aW9uKHQpe2lmKHQueT4uOTk5OTkpdGhpcy5xdWF0ZXJuaW9uLnNldCgwLDAsMCwxKTtlbHNlIGlmKHQueTwtLjk5OTk5KXRoaXMucXVhdGVybmlvbi5zZXQoMSwwLDAsMCk7ZWxzZXtscmUuc2V0KHQueiwwLC10LngpLm5vcm1hbGl6ZSgpO2NvbnN0IGU9TWF0aC5hY29zKHQueSk7dGhpcy5xdWF0ZXJuaW9uLnNldEZyb21BeGlzQW5nbGUobHJlLGUpfX1zZXRMZW5ndGgodCxlPS4yKnQsbj0uMiplKXt0aGlzLmxpbmUuc2NhbGUuc2V0KDEsTWF0aC5tYXgoMWUtNCx0LWUpLDEpLHRoaXMubGluZS51cGRhdGVNYXRyaXgoKSx0aGlzLmNvbmUuc2NhbGUuc2V0KG4sZSxuKSx0aGlzLmNvbmUucG9zaXRpb24ueT10LHRoaXMuY29uZS51cGRhdGVNYXRyaXgoKX1zZXRDb2xvcih0KXt0aGlzLmxpbmUubWF0ZXJpYWwuY29sb3Iuc2V0KHQpLHRoaXMuY29uZS5tYXRlcmlhbC5jb2xvci5zZXQodCl9Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0LCExKSx0aGlzLmxpbmUuY29weSh0LmxpbmUpLHRoaXMuY29uZS5jb3B5KHQuY29uZSksdGhpc319LEF1ZGlvOmhpZSxBdWRpb0FuYWx5c2VyOmdpZSxBdWRpb0NvbnRleHQ6UW5lLEF1ZGlvTGlzdGVuZXI6Y2xhc3MgZXh0ZW5kcyBWM3R7Y29uc3RydWN0b3IoKXtzdXBlcigpLHRoaXMudHlwZT0iQXVkaW9MaXN0ZW5lciIsdGhpcy5jb250ZXh0PVFuZS5nZXRDb250ZXh0KCksdGhpcy5nYWluPXRoaXMuY29udGV4dC5jcmVhdGVHYWluKCksdGhpcy5nYWluLmNvbm5lY3QodGhpcy5jb250ZXh0LmRlc3RpbmF0aW9uKSx0aGlzLmZpbHRlcj1udWxsLHRoaXMudGltZURlbHRhPTAsdGhpcy5fY2xvY2s9bmV3IG9pZX1nZXRJbnB1dCgpe3JldHVybiB0aGlzLmdhaW59cmVtb3ZlRmlsdGVyKCl7cmV0dXJuIG51bGwhPT10aGlzLmZpbHRlciYmKHRoaXMuZ2Fpbi5kaXNjb25uZWN0KHRoaXMuZmlsdGVyKSx0aGlzLmZpbHRlci5kaXNjb25uZWN0KHRoaXMuY29udGV4dC5kZXN0aW5hdGlvbiksdGhpcy5nYWluLmNvbm5lY3QodGhpcy5jb250ZXh0LmRlc3RpbmF0aW9uKSx0aGlzLmZpbHRlcj1udWxsKSx0aGlzfWdldEZpbHRlcigpe3JldHVybiB0aGlzLmZpbHRlcn1zZXRGaWx0ZXIodCl7cmV0dXJuIG51bGwhPT10aGlzLmZpbHRlcj8odGhpcy5nYWluLmRpc2Nvbm5lY3QodGhpcy5maWx0ZXIpLHRoaXMuZmlsdGVyLmRpc2Nvbm5lY3QodGhpcy5jb250ZXh0LmRlc3RpbmF0aW9uKSk6dGhpcy5nYWluLmRpc2Nvbm5lY3QodGhpcy5jb250ZXh0LmRlc3RpbmF0aW9uKSx0aGlzLmZpbHRlcj10LHRoaXMuZ2Fpbi5jb25uZWN0KHRoaXMuZmlsdGVyKSx0aGlzLmZpbHRlci5jb25uZWN0KHRoaXMuY29udGV4dC5kZXN0aW5hdGlvbiksdGhpc31nZXRNYXN0ZXJWb2x1bWUoKXtyZXR1cm4gdGhpcy5nYWluLmdhaW4udmFsdWV9c2V0TWFzdGVyVm9sdW1lKHQpe3JldHVybiB0aGlzLmdhaW4uZ2Fpbi5zZXRUYXJnZXRBdFRpbWUodCx0aGlzLmNvbnRleHQuY3VycmVudFRpbWUsLjAxKSx0aGlzfXVwZGF0ZU1hdHJpeFdvcmxkKHQpe3N1cGVyLnVwZGF0ZU1hdHJpeFdvcmxkKHQpO2NvbnN0IGU9dGhpcy5jb250ZXh0Lmxpc3RlbmVyLG49dGhpcy51cDtpZih0aGlzLnRpbWVEZWx0YT10aGlzLl9jbG9jay5nZXREZWx0YSgpLHRoaXMubWF0cml4V29ybGQuZGVjb21wb3NlKHNpZSxsaWUsY2llKSx1aWUuc2V0KDAsMCwtMSkuYXBwbHlRdWF0ZXJuaW9uKGxpZSksZS5wb3NpdGlvblgpe2NvbnN0IHQ9dGhpcy5jb250ZXh0LmN1cnJlbnRUaW1lK3RoaXMudGltZURlbHRhO2UucG9zaXRpb25YLmxpbmVhclJhbXBUb1ZhbHVlQXRUaW1lKHNpZS54LHQpLGUucG9zaXRpb25ZLmxpbmVhclJhbXBUb1ZhbHVlQXRUaW1lKHNpZS55LHQpLGUucG9zaXRpb25aLmxpbmVhclJhbXBUb1ZhbHVlQXRUaW1lKHNpZS56LHQpLGUuZm9yd2FyZFgubGluZWFyUmFtcFRvVmFsdWVBdFRpbWUodWllLngsdCksZS5mb3J3YXJkWS5saW5lYXJSYW1wVG9WYWx1ZUF0VGltZSh1aWUueSx0KSxlLmZvcndhcmRaLmxpbmVhclJhbXBUb1ZhbHVlQXRUaW1lKHVpZS56LHQpLGUudXBYLmxpbmVhclJhbXBUb1ZhbHVlQXRUaW1lKG4ueCx0KSxlLnVwWS5saW5lYXJSYW1wVG9WYWx1ZUF0VGltZShuLnksdCksZS51cFoubGluZWFyUmFtcFRvVmFsdWVBdFRpbWUobi56LHQpfWVsc2UgZS5zZXRQb3NpdGlvbihzaWUueCxzaWUueSxzaWUueiksZS5zZXRPcmllbnRhdGlvbih1aWUueCx1aWUueSx1aWUueixuLngsbi55LG4ueil9fSxBdWRpb0xvYWRlcjp0aWUsQXhlc0hlbHBlcjpocmUsQXhpc0hlbHBlcjpmdW5jdGlvbiBncmUodCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuQXhpc0hlbHBlciBoYXMgYmVlbiByZW5hbWVkIHRvIFRIUkVFLkF4ZXNIZWxwZXIuIiksbmV3IGhyZSh0KX0sQmFja1NpZGU6MSxCYXNpY0RlcHRoUGFja2luZzozMjAwLEJhc2ljU2hhZG93TWFwOjAsQmluYXJ5VGV4dHVyZUxvYWRlcjpmdW5jdGlvbiBfcmUodCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuQmluYXJ5VGV4dHVyZUxvYWRlciBoYXMgYmVlbiByZW5hbWVkIHRvIFRIUkVFLkRhdGFUZXh0dXJlTG9hZGVyLiIpLG5ldyBnbmUodCl9LEJvbmU6Qjd0LEJvb2xlYW5LZXlmcmFtZVRyYWNrOlFlZSxCb3VuZGluZ0JveEhlbHBlcjpmdW5jdGlvbiB5cmUodCxlKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5Cb3VuZGluZ0JveEhlbHBlciBoYXMgYmVlbiBkZXByZWNhdGVkLiBDcmVhdGluZyBhIFRIUkVFLkJveEhlbHBlciBpbnN0ZWFkLiIpLG5ldyBzcmUodCxlKX0sQm94MjpIaWUsQm94MzpVNXQsQm94M0hlbHBlcjpjbGFzcyBleHRlbmRzIGl0ZXtjb25zdHJ1Y3Rvcih0LGU9MTY3NzY5NjApe2NvbnN0IG49bmV3IFVpbnQxNkFycmF5KFswLDEsMSwyLDIsMywzLDAsNCw1LDUsNiw2LDcsNyw0LDAsNCwxLDUsMiw2LDMsN10pLGk9bmV3IE40dDtpLnNldEluZGV4KG5ldyBoNHQobiwxKSksaS5zZXRBdHRyaWJ1dGUoInBvc2l0aW9uIixuZXcgYjR0KFsxLDEsMSwtMSwxLDEsLTEsLTEsMSwxLC0xLDEsMSwxLC0xLC0xLDEsLTEsLTEsLTEsLTEsMSwtMSwtMV0sMykpLHN1cGVyKGksbmV3IFg3dCh7Y29sb3I6ZSx0b25lTWFwcGVkOiExfSkpLHRoaXMuYm94PXQsdGhpcy50eXBlPSJCb3gzSGVscGVyIix0aGlzLmdlb21ldHJ5LmNvbXB1dGVCb3VuZGluZ1NwaGVyZSgpfXVwZGF0ZU1hdHJpeFdvcmxkKHQpe2NvbnN0IGU9dGhpcy5ib3g7ZS5pc0VtcHR5KCl8fChlLmdldENlbnRlcih0aGlzLnBvc2l0aW9uKSxlLmdldFNpemUodGhpcy5zY2FsZSksdGhpcy5zY2FsZS5tdWx0aXBseVNjYWxhciguNSksc3VwZXIudXBkYXRlTWF0cml4V29ybGQodCkpfX0sQm94QnVmZmVyR2VvbWV0cnk6SjR0LEJveEdlb21ldHJ5Oko0dCxCb3hIZWxwZXI6c3JlLEJ1ZmZlckF0dHJpYnV0ZTpoNHQsQnVmZmVyR2VvbWV0cnk6TjR0LEJ1ZmZlckdlb21ldHJ5TG9hZGVyOkduZSxCeXRlVHlwZToxMDEwLENhY2hlOmxuZSxDYW1lcmE6aTZ0LENhbWVyYUhlbHBlcjpjbGFzcyBleHRlbmRzIGl0ZXtjb25zdHJ1Y3Rvcih0KXtjb25zdCBlPW5ldyBONHQsbj1uZXcgWDd0KHtjb2xvcjoxNjc3NzIxNSx2ZXJ0ZXhDb2xvcnM6ITAsdG9uZU1hcHBlZDohMX0pLGk9W10scj1bXSxvPXt9LGE9bmV3IHM0dCgxNjc1NTIwMCkscz1uZXcgczR0KDE2NzExNjgwKSxsPW5ldyBzNHQoNDM3NzUpLGM9bmV3IHM0dCgxNjc3NzIxNSksdT1uZXcgczR0KDMzNTU0NDMpO2Z1bmN0aW9uIGgodCxlLG4pe2QodCxuKSxkKGUsbil9ZnVuY3Rpb24gZCh0LGUpe2kucHVzaCgwLDAsMCksci5wdXNoKGUucixlLmcsZS5iKSx2b2lkIDA9PT1vW3RdJiYob1t0XT1bXSksb1t0XS5wdXNoKGkubGVuZ3RoLzMtMSl9aCgibjEiLCJuMiIsYSksaCgibjIiLCJuNCIsYSksaCgibjQiLCJuMyIsYSksaCgibjMiLCJuMSIsYSksaCgiZjEiLCJmMiIsYSksaCgiZjIiLCJmNCIsYSksaCgiZjQiLCJmMyIsYSksaCgiZjMiLCJmMSIsYSksaCgibjEiLCJmMSIsYSksaCgibjIiLCJmMiIsYSksaCgibjMiLCJmMyIsYSksaCgibjQiLCJmNCIsYSksaCgicCIsIm4xIixzKSxoKCJwIiwibjIiLHMpLGgoInAiLCJuMyIscyksaCgicCIsIm40IixzKSxoKCJ1MSIsInUyIixsKSxoKCJ1MiIsInUzIixsKSxoKCJ1MyIsInUxIixsKSxoKCJjIiwidCIsYyksaCgicCIsImMiLHUpLGgoImNuMSIsImNuMiIsdSksaCgiY24zIiwiY240Iix1KSxoKCJjZjEiLCJjZjIiLHUpLGgoImNmMyIsImNmNCIsdSksZS5zZXRBdHRyaWJ1dGUoInBvc2l0aW9uIixuZXcgYjR0KGksMykpLGUuc2V0QXR0cmlidXRlKCJjb2xvciIsbmV3IGI0dChyLDMpKSxzdXBlcihlLG4pLHRoaXMudHlwZT0iQ2FtZXJhSGVscGVyIix0aGlzLmNhbWVyYT10LHRoaXMuY2FtZXJhLnVwZGF0ZVByb2plY3Rpb25NYXRyaXgmJnRoaXMuY2FtZXJhLnVwZGF0ZVByb2plY3Rpb25NYXRyaXgoKSx0aGlzLm1hdHJpeD10Lm1hdHJpeFdvcmxkLHRoaXMubWF0cml4QXV0b1VwZGF0ZT0hMSx0aGlzLnBvaW50TWFwPW8sdGhpcy51cGRhdGUoKX11cGRhdGUoKXtjb25zdCB0PXRoaXMuZ2VvbWV0cnksZT10aGlzLnBvaW50TWFwO3JyZS5wcm9qZWN0aW9uTWF0cml4SW52ZXJzZS5jb3B5KHRoaXMuY2FtZXJhLnByb2plY3Rpb25NYXRyaXhJbnZlcnNlKSxvcmUoImMiLGUsdCxycmUsMCwwLC0xKSxvcmUoInQiLGUsdCxycmUsMCwwLDEpLG9yZSgibjEiLGUsdCxycmUsLTEsLTEsLTEpLG9yZSgibjIiLGUsdCxycmUsMSwtMSwtMSksb3JlKCJuMyIsZSx0LHJyZSwtMSwxLC0xKSxvcmUoIm40IixlLHQscnJlLDEsMSwtMSksb3JlKCJmMSIsZSx0LHJyZSwtMSwtMSwxKSxvcmUoImYyIixlLHQscnJlLDEsLTEsMSksb3JlKCJmMyIsZSx0LHJyZSwtMSwxLDEpLG9yZSgiZjQiLGUsdCxycmUsMSwxLDEpLG9yZSgidTEiLGUsdCxycmUsLjcsMS4xLC0xKSxvcmUoInUyIixlLHQscnJlLC0uNywxLjEsLTEpLG9yZSgidTMiLGUsdCxycmUsMCwyLC0xKSxvcmUoImNmMSIsZSx0LHJyZSwtMSwwLDEpLG9yZSgiY2YyIixlLHQscnJlLDEsMCwxKSxvcmUoImNmMyIsZSx0LHJyZSwwLC0xLDEpLG9yZSgiY2Y0IixlLHQscnJlLDAsMSwxKSxvcmUoImNuMSIsZSx0LHJyZSwtMSwwLC0xKSxvcmUoImNuMiIsZSx0LHJyZSwxLDAsLTEpLG9yZSgiY24zIixlLHQscnJlLDAsLTEsLTEpLG9yZSgiY240IixlLHQscnJlLDAsMSwtMSksdC5nZXRBdHRyaWJ1dGUoInBvc2l0aW9uIikubmVlZHNVcGRhdGU9ITB9ZGlzcG9zZSgpe3RoaXMuZ2VvbWV0cnkuZGlzcG9zZSgpLHRoaXMubWF0ZXJpYWwuZGlzcG9zZSgpfX0sQ2FudmFzUmVuZGVyZXI6ZnVuY3Rpb24gdnJlKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuQ2FudmFzUmVuZGVyZXIgaGFzIGJlZW4gcmVtb3ZlZCIpfSxDYW52YXNUZXh0dXJlOmZ0ZSxDYXRtdWxsUm9tQ3VydmUzOlJ0ZSxDaW5lb25Ub25lTWFwcGluZzozLENpcmNsZUJ1ZmZlckdlb21ldHJ5Omd0ZSxDaXJjbGVHZW9tZXRyeTpndGUsQ2xhbXBUb0VkZ2VXcmFwcGluZzpsMnQsQ2xvY2s6b2llLENvbG9yOnM0dCxDb2xvcktleWZyYW1lVHJhY2s6dG5lLENvbXByZXNzZWRUZXh0dXJlOnB0ZSxDb21wcmVzc2VkVGV4dHVyZUxvYWRlcjpjbGFzcyBleHRlbmRzIGhuZXtjb25zdHJ1Y3Rvcih0KXtzdXBlcih0KX1sb2FkKHQsZSxuLGkpe2NvbnN0IHI9dGhpcyxvPVtdLGE9bmV3IHB0ZSxzPW5ldyBwbmUodGhpcy5tYW5hZ2VyKTtzLnNldFBhdGgodGhpcy5wYXRoKSxzLnNldFJlc3BvbnNlVHlwZSgiYXJyYXlidWZmZXIiKSxzLnNldFJlcXVlc3RIZWFkZXIodGhpcy5yZXF1ZXN0SGVhZGVyKSxzLnNldFdpdGhDcmVkZW50aWFscyhyLndpdGhDcmVkZW50aWFscyk7bGV0IGw9MDtmdW5jdGlvbiBjKGMpe3MubG9hZCh0W2NdLChmdW5jdGlvbih0KXtjb25zdCBuPXIucGFyc2UodCwhMCk7b1tjXT17d2lkdGg6bi53aWR0aCxoZWlnaHQ6bi5oZWlnaHQsZm9ybWF0Om4uZm9ybWF0LG1pcG1hcHM6bi5taXBtYXBzfSxsKz0xLDY9PT1sJiYoMT09PW4ubWlwbWFwQ291bnQmJihhLm1pbkZpbHRlcj1wMnQpLGEuaW1hZ2U9byxhLmZvcm1hdD1uLmZvcm1hdCxhLm5lZWRzVXBkYXRlPSEwLGUmJmUoYSkpfSksbixpKX1pZihBcnJheS5pc0FycmF5KHQpKWZvcihsZXQgZT0wLG49dC5sZW5ndGg7ZTxuOysrZSljKGUpO2Vsc2Ugcy5sb2FkKHQsKGZ1bmN0aW9uKHQpe2NvbnN0IG49ci5wYXJzZSh0LCEwKTtpZihuLmlzQ3ViZW1hcCl7Y29uc3QgdD1uLm1pcG1hcHMubGVuZ3RoL24ubWlwbWFwQ291bnQ7Zm9yKGxldCBlPTA7ZTx0O2UrKyl7b1tlXT17bWlwbWFwczpbXX07Zm9yKGxldCB0PTA7dDxuLm1pcG1hcENvdW50O3QrKylvW2VdLm1pcG1hcHMucHVzaChuLm1pcG1hcHNbZSpuLm1pcG1hcENvdW50K3RdKSxvW2VdLmZvcm1hdD1uLmZvcm1hdCxvW2VdLndpZHRoPW4ud2lkdGgsb1tlXS5oZWlnaHQ9bi5oZWlnaHR9YS5pbWFnZT1vfWVsc2UgYS5pbWFnZS53aWR0aD1uLndpZHRoLGEuaW1hZ2UuaGVpZ2h0PW4uaGVpZ2h0LGEubWlwbWFwcz1uLm1pcG1hcHM7MT09PW4ubWlwbWFwQ291bnQmJihhLm1pbkZpbHRlcj1wMnQpLGEuZm9ybWF0PW4uZm9ybWF0LGEubmVlZHNVcGRhdGU9ITAsZSYmZShhKX0pLG4saSk7cmV0dXJuIGF9fSxDb25lQnVmZmVyR2VvbWV0cnk6eXRlLENvbmVHZW9tZXRyeTp5dGUsQ3ViZUNhbWVyYTphNnQsQ3ViZVJlZmxlY3Rpb25NYXBwaW5nOmUydCxDdWJlUmVmcmFjdGlvbk1hcHBpbmc6bjJ0LEN1YmVUZXh0dXJlOnM2dCxDdWJlVGV4dHVyZUxvYWRlcjptbmUsQ3ViZVVWUmVmbGVjdGlvbk1hcHBpbmc6bzJ0LEN1YmVVVlJlZnJhY3Rpb25NYXBwaW5nOmEydCxDdWJpY0JlemllckN1cnZlOkJ0ZSxDdWJpY0JlemllckN1cnZlMzpIdGUsQ3ViaWNJbnRlcnBvbGFudDokZWUsQ3VsbEZhY2VCYWNrOjEsQ3VsbEZhY2VGcm9udDoyLEN1bGxGYWNlRnJvbnRCYWNrOjMsQ3VsbEZhY2VOb25lOjAsQ3VydmU6VHRlLEN1cnZlUGF0aDp5bmUsQ3VzdG9tQmxlbmRpbmc6NSxDdXN0b21Ub25lTWFwcGluZzo1LEN5bGluZGVyQnVmZmVyR2VvbWV0cnk6X3RlLEN5bGluZGVyR2VvbWV0cnk6X3RlLEN5bGluZHJpY2FsOmNsYXNze2NvbnN0cnVjdG9yKHQ9MSxlPTAsbj0wKXtyZXR1cm4gdGhpcy5yYWRpdXM9dCx0aGlzLnRoZXRhPWUsdGhpcy55PW4sdGhpc31zZXQodCxlLG4pe3JldHVybiB0aGlzLnJhZGl1cz10LHRoaXMudGhldGE9ZSx0aGlzLnk9bix0aGlzfWNvcHkodCl7cmV0dXJuIHRoaXMucmFkaXVzPXQucmFkaXVzLHRoaXMudGhldGE9dC50aGV0YSx0aGlzLnk9dC55LHRoaXN9c2V0RnJvbVZlY3RvcjModCl7cmV0dXJuIHRoaXMuc2V0RnJvbUNhcnRlc2lhbkNvb3Jkcyh0LngsdC55LHQueil9c2V0RnJvbUNhcnRlc2lhbkNvb3Jkcyh0LGUsbil7cmV0dXJuIHRoaXMucmFkaXVzPU1hdGguc3FydCh0KnQrbipuKSx0aGlzLnRoZXRhPU1hdGguYXRhbjIodCxuKSx0aGlzLnk9ZSx0aGlzfWNsb25lKCl7cmV0dXJuKG5ldyB0aGlzLmNvbnN0cnVjdG9yKS5jb3B5KHRoaXMpfX0sRGF0YVRleHR1cmU6SDd0LERhdGFUZXh0dXJlMkRBcnJheTpoOXQsRGF0YVRleHR1cmUzRDpkOXQsRGF0YVRleHR1cmVMb2FkZXI6Z25lLERhdGFVdGlsczpjbGFzc3tzdGF0aWMgdG9IYWxmRmxvYXQodCl7ZHJlWzBdPXQ7Y29uc3QgZT1wcmVbMF07bGV0IG49ZT4+MTYmMzI3NjgsaT1lPj4xMiYyMDQ3O2NvbnN0IHI9ZT4+MjMmMjU1O3JldHVybiByPDEwMz9uOnI+MTQyPyhufD0zMTc0NCxufD0oMjU1PT1yPzA6MSkmJjgzODg2MDcmZSxuKTpyPDExMz8oaXw9MjA0OCxufD0oaT4+MTE0LXIpKyhpPj4xMTMtciYxKSxuKToobnw9ci0xMTI8PDEwfGk+PjEsbis9MSZpLG4pfX0sRGVjcmVtZW50U3RlbmNpbE9wOjc2ODMsRGVjcmVtZW50V3JhcFN0ZW5jaWxPcDozNDA1NixEZWZhdWx0TG9hZGluZ01hbmFnZXI6dW5lLERlcHRoRm9ybWF0Ok0ydCxEZXB0aFN0ZW5jaWxGb3JtYXQ6RTJ0LERlcHRoVGV4dHVyZTptdGUsRGlyZWN0aW9uYWxMaWdodDpPbmUsRGlyZWN0aW9uYWxMaWdodEhlbHBlcjpjbGFzcyBleHRlbmRzIFYzdHtjb25zdHJ1Y3Rvcih0LGUsbil7c3VwZXIoKSx0aGlzLmxpZ2h0PXQsdGhpcy5saWdodC51cGRhdGVNYXRyaXhXb3JsZCgpLHRoaXMubWF0cml4PXQubWF0cml4V29ybGQsdGhpcy5tYXRyaXhBdXRvVXBkYXRlPSExLHRoaXMuY29sb3I9bix2b2lkIDA9PT1lJiYoZT0xKTtsZXQgaT1uZXcgTjR0O2kuc2V0QXR0cmlidXRlKCJwb3NpdGlvbiIsbmV3IGI0dChbLWUsZSwwLGUsZSwwLGUsLWUsMCwtZSwtZSwwLC1lLGUsMF0sMykpO2NvbnN0IHI9bmV3IFg3dCh7Zm9nOiExLHRvbmVNYXBwZWQ6ITF9KTt0aGlzLmxpZ2h0UGxhbmU9bmV3IHR0ZShpLHIpLHRoaXMuYWRkKHRoaXMubGlnaHRQbGFuZSksaT1uZXcgTjR0LGkuc2V0QXR0cmlidXRlKCJwb3NpdGlvbiIsbmV3IGI0dChbMCwwLDAsMCwwLDFdLDMpKSx0aGlzLnRhcmdldExpbmU9bmV3IHR0ZShpLHIpLHRoaXMuYWRkKHRoaXMudGFyZ2V0TGluZSksdGhpcy51cGRhdGUoKX1kaXNwb3NlKCl7dGhpcy5saWdodFBsYW5lLmdlb21ldHJ5LmRpc3Bvc2UoKSx0aGlzLmxpZ2h0UGxhbmUubWF0ZXJpYWwuZGlzcG9zZSgpLHRoaXMudGFyZ2V0TGluZS5nZW9tZXRyeS5kaXNwb3NlKCksdGhpcy50YXJnZXRMaW5lLm1hdGVyaWFsLmRpc3Bvc2UoKX11cGRhdGUoKXt0cmUuc2V0RnJvbU1hdHJpeFBvc2l0aW9uKHRoaXMubGlnaHQubWF0cml4V29ybGQpLGVyZS5zZXRGcm9tTWF0cml4UG9zaXRpb24odGhpcy5saWdodC50YXJnZXQubWF0cml4V29ybGQpLG5yZS5zdWJWZWN0b3JzKGVyZSx0cmUpLHRoaXMubGlnaHRQbGFuZS5sb29rQXQoZXJlKSx2b2lkIDAhPT10aGlzLmNvbG9yPyh0aGlzLmxpZ2h0UGxhbmUubWF0ZXJpYWwuY29sb3Iuc2V0KHRoaXMuY29sb3IpLHRoaXMudGFyZ2V0TGluZS5tYXRlcmlhbC5jb2xvci5zZXQodGhpcy5jb2xvcikpOih0aGlzLmxpZ2h0UGxhbmUubWF0ZXJpYWwuY29sb3IuY29weSh0aGlzLmxpZ2h0LmNvbG9yKSx0aGlzLnRhcmdldExpbmUubWF0ZXJpYWwuY29sb3IuY29weSh0aGlzLmxpZ2h0LmNvbG9yKSksdGhpcy50YXJnZXRMaW5lLmxvb2tBdChlcmUpLHRoaXMudGFyZ2V0TGluZS5zY2FsZS56PW5yZS5sZW5ndGgoKX19LERpc2NyZXRlSW50ZXJwb2xhbnQ6WmVlLERvZGVjYWhlZHJvbkJ1ZmZlckdlb21ldHJ5OmJ0ZSxEb2RlY2FoZWRyb25HZW9tZXRyeTpidGUsRG91YmxlU2lkZToyLERzdEFscGhhRmFjdG9yOjIwNixEc3RDb2xvckZhY3RvcjoyMDgsRHluYW1pY0J1ZmZlckF0dHJpYnV0ZTpmdW5jdGlvbiBicmUodCxlKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5EeW5hbWljQnVmZmVyQXR0cmlidXRlIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBuZXcgVEhSRUUuQnVmZmVyQXR0cmlidXRlKCkuc2V0VXNhZ2UoIFRIUkVFLkR5bmFtaWNEcmF3VXNhZ2UgKSBpbnN0ZWFkLiIpLG5ldyBoNHQodCxlKS5zZXRVc2FnZShRMnQpfSxEeW5hbWljQ29weVVzYWdlOjM1MDUwLER5bmFtaWNEcmF3VXNhZ2U6UTJ0LER5bmFtaWNSZWFkVXNhZ2U6MzUwNDksRWRnZXNHZW9tZXRyeTpFdGUsRWRnZXNIZWxwZXI6ZnVuY3Rpb24geHJlKHQsZSl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuRWRnZXNIZWxwZXIgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIFRIUkVFLkVkZ2VzR2VvbWV0cnkgaW5zdGVhZC4iKSxuZXcgaXRlKG5ldyBFdGUodC5nZW9tZXRyeSksbmV3IFg3dCh7Y29sb3I6dm9pZCAwIT09ZT9lOjE2Nzc3MjE1fSkpfSxFbGxpcHNlQ3VydmU6Q3RlLEVxdWFsRGVwdGg6NCxFcXVhbFN0ZW5jaWxGdW5jOjUxNCxFcXVpcmVjdGFuZ3VsYXJSZWZsZWN0aW9uTWFwcGluZzppMnQsRXF1aXJlY3Rhbmd1bGFyUmVmcmFjdGlvbk1hcHBpbmc6cjJ0LEV1bGVyOlQzdCxFdmVudERpc3BhdGNoZXI6ZTV0LEV4dHJ1ZGVCdWZmZXJHZW9tZXRyeTpiZWUsRXh0cnVkZUdlb21ldHJ5OmJlZSxGYWNlQ29sb3JzOjEsRmlsZUxvYWRlcjpwbmUsRmxhdFNoYWRpbmc6MSxGbG9hdDE2QnVmZmVyQXR0cmlidXRlOnY0dCxGbG9hdDMyQXR0cmlidXRlOmZ1bmN0aW9uIHdyZSh0LGUpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLkZsb2F0MzJBdHRyaWJ1dGUgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIG5ldyBUSFJFRS5GbG9hdDMyQnVmZmVyQXR0cmlidXRlKCkgaW5zdGVhZC4iKSxuZXcgYjR0KHQsZSl9LEZsb2F0MzJCdWZmZXJBdHRyaWJ1dGU6YjR0LEZsb2F0NjRBdHRyaWJ1dGU6ZnVuY3Rpb24gU3JlKHQsZSl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuRmxvYXQ2NEF0dHJpYnV0ZSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgbmV3IFRIUkVFLkZsb2F0NjRCdWZmZXJBdHRyaWJ1dGUoKSBpbnN0ZWFkLiIpLG5ldyB4NHQodCxlKX0sRmxvYXQ2NEJ1ZmZlckF0dHJpYnV0ZTp4NHQsRmxvYXRUeXBlOnYydCxGb2c6bDd0LEZvZ0V4cDI6czd0LEZvbnQ6S25lLEZvbnRMb2FkZXI6Y2xhc3MgZXh0ZW5kcyBobmV7Y29uc3RydWN0b3IodCl7c3VwZXIodCl9bG9hZCh0LGUsbixpKXtjb25zdCByPXRoaXMsbz1uZXcgcG5lKHRoaXMubWFuYWdlcik7by5zZXRQYXRoKHRoaXMucGF0aCksby5zZXRSZXF1ZXN0SGVhZGVyKHRoaXMucmVxdWVzdEhlYWRlciksby5zZXRXaXRoQ3JlZGVudGlhbHMoci53aXRoQ3JlZGVudGlhbHMpLG8ubG9hZCh0LChmdW5jdGlvbih0KXtsZXQgbjt0cnl7bj1KU09OLnBhcnNlKHQpfWNhdGNoKGUpe2NvbnNvbGUud2FybigiVEhSRUUuRm9udExvYWRlcjogdHlwZWZhY2UuanMgc3VwcG9ydCBpcyBiZWluZyBkZXByZWNhdGVkLiBVc2UgdHlwZWZhY2UuanNvbiBpbnN0ZWFkLiIpLG49SlNPTi5wYXJzZSh0LnN1YnN0cmluZyg2NSx0Lmxlbmd0aC0yKSl9Y29uc3QgaT1yLnBhcnNlKG4pO2UmJmUoaSl9KSxuLGkpfXBhcnNlKHQpe3JldHVybiBuZXcgS25lKHQpfX0sRnJvbnRTaWRlOjAsRnJ1c3R1bTptNnQsR0xCdWZmZXJBdHRyaWJ1dGU6UmllLEdMU0wxOiIxMDAiLEdMU0wzOnQ1dCxHYW1tYUVuY29kaW5nOnEydCxHcmVhdGVyRGVwdGg6NixHcmVhdGVyRXF1YWxEZXB0aDo1LEdyZWF0ZXJFcXVhbFN0ZW5jaWxGdW5jOjUxOCxHcmVhdGVyU3RlbmNpbEZ1bmM6NTE2LEdyaWRIZWxwZXI6UWllLEdyb3VwOnQ3dCxIYWxmRmxvYXRUeXBlOmIydCxIZW1pc3BoZXJlTGlnaHQ6d25lLEhlbWlzcGhlcmVMaWdodEhlbHBlcjpjbGFzcyBleHRlbmRzIFYzdHtjb25zdHJ1Y3Rvcih0LGUsbil7c3VwZXIoKSx0aGlzLmxpZ2h0PXQsdGhpcy5saWdodC51cGRhdGVNYXRyaXhXb3JsZCgpLHRoaXMubWF0cml4PXQubWF0cml4V29ybGQsdGhpcy5tYXRyaXhBdXRvVXBkYXRlPSExLHRoaXMuY29sb3I9bjtjb25zdCBpPW5ldyBNZWUoZSk7aS5yb3RhdGVZKC41Kk1hdGguUEkpLHRoaXMubWF0ZXJpYWw9bmV3IGw0dCh7d2lyZWZyYW1lOiEwLGZvZzohMSx0b25lTWFwcGVkOiExfSksdm9pZCAwPT09dGhpcy5jb2xvciYmKHRoaXMubWF0ZXJpYWwudmVydGV4Q29sb3JzPSEwKTtjb25zdCByPWkuZ2V0QXR0cmlidXRlKCJwb3NpdGlvbiIpLG89bmV3IEZsb2F0MzJBcnJheSgzKnIuY291bnQpO2kuc2V0QXR0cmlidXRlKCJjb2xvciIsbmV3IGg0dChvLDMpKSx0aGlzLmFkZChuZXcgSzR0KGksdGhpcy5tYXRlcmlhbCkpLHRoaXMudXBkYXRlKCl9ZGlzcG9zZSgpe3RoaXMuY2hpbGRyZW5bMF0uZ2VvbWV0cnkuZGlzcG9zZSgpLHRoaXMuY2hpbGRyZW5bMF0ubWF0ZXJpYWwuZGlzcG9zZSgpfXVwZGF0ZSgpe2NvbnN0IHQ9dGhpcy5jaGlsZHJlblswXTtpZih2b2lkIDAhPT10aGlzLmNvbG9yKXRoaXMubWF0ZXJpYWwuY29sb3Iuc2V0KHRoaXMuY29sb3IpO2Vsc2V7Y29uc3QgZT10Lmdlb21ldHJ5LmdldEF0dHJpYnV0ZSgiY29sb3IiKTtaaWUuY29weSh0aGlzLmxpZ2h0LmNvbG9yKSxKaWUuY29weSh0aGlzLmxpZ2h0Lmdyb3VuZENvbG9yKTtmb3IobGV0IHQ9MCxuPWUuY291bnQ7dDxuO3QrKyl7Y29uc3QgaT10PG4vMj9aaWU6SmllO2Uuc2V0WFlaKHQsaS5yLGkuZyxpLmIpfWUubmVlZHNVcGRhdGU9ITB9dC5sb29rQXQoS2llLnNldEZyb21NYXRyaXhQb3NpdGlvbih0aGlzLmxpZ2h0Lm1hdHJpeFdvcmxkKS5uZWdhdGUoKSl9fSxIZW1pc3BoZXJlTGlnaHRQcm9iZTplaWUsSWNvc2FoZWRyb25CdWZmZXJHZW9tZXRyeTp3ZWUsSWNvc2FoZWRyb25HZW9tZXRyeTp3ZWUsSW1hZ2VCaXRtYXBMb2FkZXI6WG5lLEltYWdlTG9hZGVyOmZuZSxJbWFnZVV0aWxzOkw1dCxJbW1lZGlhdGVSZW5kZXJPYmplY3Q6amllLEluY3JlbWVudFN0ZW5jaWxPcDo3NjgyLEluY3JlbWVudFdyYXBTdGVuY2lsT3A6MzQwNTUsSW5zdGFuY2VkQnVmZmVyQXR0cmlidXRlOmpuZSxJbnN0YW5jZWRCdWZmZXJHZW9tZXRyeTpVbmUsSW5zdGFuY2VkSW50ZXJsZWF2ZWRCdWZmZXI6SWllLEluc3RhbmNlZE1lc2g6WTd0LEludDE2QXR0cmlidXRlOmZ1bmN0aW9uIE1yZSh0LGUpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLkludDE2QXR0cmlidXRlIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBuZXcgVEhSRUUuSW50MTZCdWZmZXJBdHRyaWJ1dGUoKSBpbnN0ZWFkLiIpLG5ldyBtNHQodCxlKX0sSW50MTZCdWZmZXJBdHRyaWJ1dGU6bTR0LEludDMyQXR0cmlidXRlOmZ1bmN0aW9uIEVyZSh0LGUpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLkludDMyQXR0cmlidXRlIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBuZXcgVEhSRUUuSW50MzJCdWZmZXJBdHRyaWJ1dGUoKSBpbnN0ZWFkLiIpLG5ldyBfNHQodCxlKX0sSW50MzJCdWZmZXJBdHRyaWJ1dGU6XzR0LEludDhBdHRyaWJ1dGU6ZnVuY3Rpb24gVHJlKHQsZSl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuSW50OEF0dHJpYnV0ZSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgbmV3IFRIUkVFLkludDhCdWZmZXJBdHRyaWJ1dGUoKSBpbnN0ZWFkLiIpLG5ldyBkNHQodCxlKX0sSW50OEJ1ZmZlckF0dHJpYnV0ZTpkNHQsSW50VHlwZToxMDEzLEludGVybGVhdmVkQnVmZmVyOnU3dCxJbnRlcmxlYXZlZEJ1ZmZlckF0dHJpYnV0ZTpkN3QsSW50ZXJwb2xhbnQ6WGVlLEludGVycG9sYXRlRGlzY3JldGU6ejJ0LEludGVycG9sYXRlTGluZWFyOkQydCxJbnRlcnBvbGF0ZVNtb290aDpCMnQsSW52ZXJ0U3RlbmNpbE9wOjUzODYsSlNPTkxvYWRlcjpmdW5jdGlvbiBDcmUoKXtjb25zb2xlLmVycm9yKCJUSFJFRS5KU09OTG9hZGVyIGhhcyBiZWVuIHJlbW92ZWQuIil9LEtlZXBTdGVuY2lsT3A6WjJ0LEtleWZyYW1lVHJhY2s6SmVlLExPRDpQN3QsTGF0aGVCdWZmZXJHZW9tZXRyeTpTZWUsTGF0aGVHZW9tZXRyeTpTZWUsTGF5ZXJzOkMzdCxMZW5zRmxhcmU6ZnVuY3Rpb24gQXJlKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuTGVuc0ZsYXJlIGhhcyBiZWVuIG1vdmVkIHRvIC9leGFtcGxlcy9qc20vb2JqZWN0cy9MZW5zZmxhcmUuanMiKX0sTGVzc0RlcHRoOjIsTGVzc0VxdWFsRGVwdGg6MyxMZXNzRXF1YWxTdGVuY2lsRnVuYzo1MTUsTGVzc1N0ZW5jaWxGdW5jOjUxMyxMaWdodDp4bmUsTGlnaHRQcm9iZTpIbmUsTGluZTp0dGUsTGluZTM6VWllLExpbmVCYXNpY01hdGVyaWFsOlg3dCxMaW5lQ3VydmU6RnRlLExpbmVDdXJ2ZTM6VnRlLExpbmVEYXNoZWRNYXRlcmlhbDpXZWUsTGluZUxvb3A6cnRlLExpbmVQaWVjZXM6MSxMaW5lU2VnbWVudHM6aXRlLExpbmVTdHJpcDowLExpbmVhckVuY29kaW5nOkcydCxMaW5lYXJGaWx0ZXI6cDJ0LExpbmVhckludGVycG9sYW50OktlZSxMaW5lYXJNaXBNYXBMaW5lYXJGaWx0ZXI6MTAwOCxMaW5lYXJNaXBNYXBOZWFyZXN0RmlsdGVyOjEwMDcsTGluZWFyTWlwbWFwTGluZWFyRmlsdGVyOm0ydCxMaW5lYXJNaXBtYXBOZWFyZXN0RmlsdGVyOmYydCxMaW5lYXJUb25lTWFwcGluZzoxLExvYWRlcjpobmUsTG9hZGVyVXRpbHM6Vm5lLExvYWRpbmdNYW5hZ2VyOmNuZSxMb2dMdXZFbmNvZGluZzozMDAzLExvb3BPbmNlOjIyMDAsTG9vcFBpbmdQb25nOjIyMDIsTG9vcFJlcGVhdDoyMjAxLEx1bWluYW5jZUFscGhhRm9ybWF0OjEwMjUsTHVtaW5hbmNlRm9ybWF0OjEwMjQsTU9VU0U6WjB0LE1hdGVyaWFsOnQ0dCxNYXRlcmlhbExvYWRlcjpGbmUsTWF0aDpwNXQsTWF0aFV0aWxzOnA1dCxNYXRyaXgzOkE1dCxNYXRyaXg0OmczdCxNYXhFcXVhdGlvbjoxMDQsTWVzaDpLNHQsTWVzaEJhc2ljTWF0ZXJpYWw6bDR0LE1lc2hEZXB0aE1hdGVyaWFsOlk4dCxNZXNoRGlzdGFuY2VNYXRlcmlhbDpYOHQsTWVzaEZhY2VNYXRlcmlhbDpmdW5jdGlvbiBrcmUodCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuTWVzaEZhY2VNYXRlcmlhbCBoYXMgYmVlbiByZW1vdmVkLiBVc2UgYW4gQXJyYXkgaW5zdGVhZC4iKSx0fSxNZXNoTGFtYmVydE1hdGVyaWFsOmplZSxNZXNoTWF0Y2FwTWF0ZXJpYWw6R2VlLE1lc2hOb3JtYWxNYXRlcmlhbDpVZWUsTWVzaFBob25nTWF0ZXJpYWw6RmVlLE1lc2hQaHlzaWNhbE1hdGVyaWFsOkhlZSxNZXNoU3RhbmRhcmRNYXRlcmlhbDpCZWUsTWVzaFRvb25NYXRlcmlhbDpWZWUsTWluRXF1YXRpb246MTAzLE1pcnJvcmVkUmVwZWF0V3JhcHBpbmc6YzJ0LE1peE9wZXJhdGlvbjoxLE11bHRpTWF0ZXJpYWw6ZnVuY3Rpb24gTHJlKHQ9W10pe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLk11bHRpTWF0ZXJpYWwgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIGFuIEFycmF5IGluc3RlYWQuIiksdC5pc011bHRpTWF0ZXJpYWw9ITAsdC5tYXRlcmlhbHM9dCx0LmNsb25lPWZ1bmN0aW9uKCl7cmV0dXJuIHQuc2xpY2UoKX0sdH0sTXVsdGlwbHlCbGVuZGluZzo0LE11bHRpcGx5T3BlcmF0aW9uOjAsTmVhcmVzdEZpbHRlcjp1MnQsTmVhcmVzdE1pcE1hcExpbmVhckZpbHRlcjoxMDA1LE5lYXJlc3RNaXBNYXBOZWFyZXN0RmlsdGVyOjEwMDQsTmVhcmVzdE1pcG1hcExpbmVhckZpbHRlcjpkMnQsTmVhcmVzdE1pcG1hcE5lYXJlc3RGaWx0ZXI6aDJ0LE5ldmVyRGVwdGg6MCxOZXZlclN0ZW5jaWxGdW5jOjUxMixOb0JsZW5kaW5nOjAsTm9Db2xvcnM6MCxOb1RvbmVNYXBwaW5nOjAsTm9ybWFsQW5pbWF0aW9uQmxlbmRNb2RlOlUydCxOb3JtYWxCbGVuZGluZzoxLE5vdEVxdWFsRGVwdGg6NyxOb3RFcXVhbFN0ZW5jaWxGdW5jOjUxNyxOdW1iZXJLZXlmcmFtZVRyYWNrOmVuZSxPYmplY3QzRDpWM3QsT2JqZWN0TG9hZGVyOmNsYXNzIGV4dGVuZHMgaG5le2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQpfWxvYWQodCxlLG4saSl7Y29uc3Qgcj10aGlzLG89IiI9PT10aGlzLnBhdGg/Vm5lLmV4dHJhY3RVcmxCYXNlKHQpOnRoaXMucGF0aDt0aGlzLnJlc291cmNlUGF0aD10aGlzLnJlc291cmNlUGF0aHx8bztjb25zdCBhPW5ldyBwbmUodGhpcy5tYW5hZ2VyKTthLnNldFBhdGgodGhpcy5wYXRoKSxhLnNldFJlcXVlc3RIZWFkZXIodGhpcy5yZXF1ZXN0SGVhZGVyKSxhLnNldFdpdGhDcmVkZW50aWFscyh0aGlzLndpdGhDcmVkZW50aWFscyksYS5sb2FkKHQsKGZ1bmN0aW9uKG4pe2xldCBvPW51bGw7dHJ5e289SlNPTi5wYXJzZShuKX1jYXRjaChlKXtyZXR1cm4gdm9pZCAwIT09aSYmaShlKSx2b2lkIGNvbnNvbGUuZXJyb3IoIlRIUkVFOk9iamVjdExvYWRlcjogQ2FuJ3QgcGFyc2UgIit0KyIuIixlLm1lc3NhZ2UpfWNvbnN0IGE9by5tZXRhZGF0YTt2b2lkIDAhPT1hJiZ2b2lkIDAhPT1hLnR5cGUmJiJnZW9tZXRyeSIhPT1hLnR5cGUudG9Mb3dlckNhc2UoKT9yLnBhcnNlKG8sZSk6Y29uc29sZS5lcnJvcigiVEhSRUUuT2JqZWN0TG9hZGVyOiBDYW4ndCBsb2FkICIrdCl9KSxuLGkpfWFzeW5jIGxvYWRBc3luYyh0LGUpe2NvbnN0IG49IiI9PT10aGlzLnBhdGg/Vm5lLmV4dHJhY3RVcmxCYXNlKHQpOnRoaXMucGF0aDt0aGlzLnJlc291cmNlUGF0aD10aGlzLnJlc291cmNlUGF0aHx8bjtjb25zdCBpPW5ldyBwbmUodGhpcy5tYW5hZ2VyKTtpLnNldFBhdGgodGhpcy5wYXRoKSxpLnNldFJlcXVlc3RIZWFkZXIodGhpcy5yZXF1ZXN0SGVhZGVyKSxpLnNldFdpdGhDcmVkZW50aWFscyh0aGlzLndpdGhDcmVkZW50aWFscyk7Y29uc3Qgcj1hd2FpdCBpLmxvYWRBc3luYyh0LGUpLG89SlNPTi5wYXJzZShyKSxhPW8ubWV0YWRhdGE7aWYodm9pZCAwPT09YXx8dm9pZCAwPT09YS50eXBlfHwiZ2VvbWV0cnkiPT09YS50eXBlLnRvTG93ZXJDYXNlKCkpdGhyb3cgbmV3IEVycm9yKCJUSFJFRS5PYmplY3RMb2FkZXI6IENhbid0IGxvYWQgIit0KTtyZXR1cm4gYXdhaXQgdGhpcy5wYXJzZUFzeW5jKG8pfXBhcnNlKHQsZSl7Y29uc3Qgbj10aGlzLnBhcnNlQW5pbWF0aW9ucyh0LmFuaW1hdGlvbnMpLGk9dGhpcy5wYXJzZVNoYXBlcyh0LnNoYXBlcykscj10aGlzLnBhcnNlR2VvbWV0cmllcyh0Lmdlb21ldHJpZXMsaSksbz10aGlzLnBhcnNlSW1hZ2VzKHQuaW1hZ2VzLChmdW5jdGlvbigpe3ZvaWQgMCE9PWUmJmUobCl9KSksYT10aGlzLnBhcnNlVGV4dHVyZXModC50ZXh0dXJlcyxvKSxzPXRoaXMucGFyc2VNYXRlcmlhbHModC5tYXRlcmlhbHMsYSksbD10aGlzLnBhcnNlT2JqZWN0KHQub2JqZWN0LHIscyxhLG4pLGM9dGhpcy5wYXJzZVNrZWxldG9ucyh0LnNrZWxldG9ucyxsKTtpZih0aGlzLmJpbmRTa2VsZXRvbnMobCxjKSx2b2lkIDAhPT1lKXtsZXQgdD0hMTtmb3IoY29uc3QgZSBpbiBvKWlmKG9bZV1pbnN0YW5jZW9mIEhUTUxJbWFnZUVsZW1lbnQpe3Q9ITA7YnJlYWt9ITE9PT10JiZlKGwpfXJldHVybiBsfWFzeW5jIHBhcnNlQXN5bmModCl7Y29uc3QgZT10aGlzLnBhcnNlQW5pbWF0aW9ucyh0LmFuaW1hdGlvbnMpLG49dGhpcy5wYXJzZVNoYXBlcyh0LnNoYXBlcyksaT10aGlzLnBhcnNlR2VvbWV0cmllcyh0Lmdlb21ldHJpZXMsbikscj1hd2FpdCB0aGlzLnBhcnNlSW1hZ2VzQXN5bmModC5pbWFnZXMpLG89dGhpcy5wYXJzZVRleHR1cmVzKHQudGV4dHVyZXMsciksYT10aGlzLnBhcnNlTWF0ZXJpYWxzKHQubWF0ZXJpYWxzLG8pLHM9dGhpcy5wYXJzZU9iamVjdCh0Lm9iamVjdCxpLGEsbyxlKSxsPXRoaXMucGFyc2VTa2VsZXRvbnModC5za2VsZXRvbnMscyk7cmV0dXJuIHRoaXMuYmluZFNrZWxldG9ucyhzLGwpLHN9cGFyc2VTaGFwZXModCl7Y29uc3QgZT17fTtpZih2b2lkIDAhPT10KWZvcihsZXQgbj0wLGk9dC5sZW5ndGg7bjxpO24rKyl7Y29uc3QgaT0obmV3IGJuZSkuZnJvbUpTT04odFtuXSk7ZVtpLnV1aWRdPWl9cmV0dXJuIGV9cGFyc2VTa2VsZXRvbnModCxlKXtjb25zdCBuPXt9LGk9e307aWYoZS50cmF2ZXJzZSgoZnVuY3Rpb24odCl7dC5pc0JvbmUmJihpW3QudXVpZF09dCl9KSksdm9pZCAwIT09dClmb3IobGV0IGU9MCxyPXQubGVuZ3RoO2U8cjtlKyspe2NvbnN0IHI9KG5ldyBVN3QpLmZyb21KU09OKHRbZV0saSk7bltyLnV1aWRdPXJ9cmV0dXJuIG59cGFyc2VHZW9tZXRyaWVzKHQsZSl7Y29uc3Qgbj17fTtpZih2b2lkIDAhPT10KXtjb25zdCBpPW5ldyBHbmU7Zm9yKGxldCByPTAsbz10Lmxlbmd0aDtyPG87cisrKXtsZXQgbztjb25zdCBhPXRbcl07c3dpdGNoKGEudHlwZSl7Y2FzZSJCdWZmZXJHZW9tZXRyeSI6Y2FzZSJJbnN0YW5jZWRCdWZmZXJHZW9tZXRyeSI6bz1pLnBhcnNlKGEpO2JyZWFrO2Nhc2UiR2VvbWV0cnkiOmNvbnNvbGUuZXJyb3IoIlRIUkVFLk9iamVjdExvYWRlcjogVGhlIGxlZ2FjeSBHZW9tZXRyeSB0eXBlIGlzIG5vIGxvbmdlciBzdXBwb3J0ZWQuIik7YnJlYWs7ZGVmYXVsdDphLnR5cGUgaW4gemVlP289emVlW2EudHlwZV0uZnJvbUpTT04oYSxlKTpjb25zb2xlLndhcm4oYFRIUkVFLk9iamVjdExvYWRlcjogVW5zdXBwb3J0ZWQgZ2VvbWV0cnkgdHlwZSAiJHthLnR5cGV9ImApfW8udXVpZD1hLnV1aWQsdm9pZCAwIT09YS5uYW1lJiYoby5uYW1lPWEubmFtZSksITA9PT1vLmlzQnVmZmVyR2VvbWV0cnkmJnZvaWQgMCE9PWEudXNlckRhdGEmJihvLnVzZXJEYXRhPWEudXNlckRhdGEpLG5bYS51dWlkXT1vfX1yZXR1cm4gbn1wYXJzZU1hdGVyaWFscyh0LGUpe2NvbnN0IG49e30saT17fTtpZih2b2lkIDAhPT10KXtjb25zdCByPW5ldyBGbmU7ci5zZXRUZXh0dXJlcyhlKTtmb3IobGV0IGU9MCxvPXQubGVuZ3RoO2U8bztlKyspe2NvbnN0IG89dFtlXTtpZigiTXVsdGlNYXRlcmlhbCI9PT1vLnR5cGUpe2NvbnN0IHQ9W107Zm9yKGxldCBlPTA7ZTxvLm1hdGVyaWFscy5sZW5ndGg7ZSsrKXtjb25zdCBpPW8ubWF0ZXJpYWxzW2VdO3ZvaWQgMD09PW5baS51dWlkXSYmKG5baS51dWlkXT1yLnBhcnNlKGkpKSx0LnB1c2gobltpLnV1aWRdKX1pW28udXVpZF09dH1lbHNlIHZvaWQgMD09PW5bby51dWlkXSYmKG5bby51dWlkXT1yLnBhcnNlKG8pKSxpW28udXVpZF09bltvLnV1aWRdfX1yZXR1cm4gaX1wYXJzZUFuaW1hdGlvbnModCl7Y29uc3QgZT17fTtpZih2b2lkIDAhPT10KWZvcihsZXQgbj0wO248dC5sZW5ndGg7bisrKXtjb25zdCBpPWFuZS5wYXJzZSh0W25dKTtlW2kudXVpZF09aX1yZXR1cm4gZX1wYXJzZUltYWdlcyh0LGUpe2NvbnN0IG49dGhpcyxpPXt9O2xldCByO2Z1bmN0aW9uIG8odCl7aWYoInN0cmluZyI9PXR5cGVvZiB0KXtjb25zdCBlPXQ7cmV0dXJuKGZ1bmN0aW9uIGkodCl7cmV0dXJuIG4ubWFuYWdlci5pdGVtU3RhcnQodCksci5sb2FkKHQsKGZ1bmN0aW9uKCl7bi5tYW5hZ2VyLml0ZW1FbmQodCl9KSx2b2lkIDAsKGZ1bmN0aW9uKCl7bi5tYW5hZ2VyLml0ZW1FcnJvcih0KSxuLm1hbmFnZXIuaXRlbUVuZCh0KX0pKX0pKC9eKFwvXC8pfChbYS16XSs6KFwvXC8pPykvaS50ZXN0KGUpP2U6bi5yZXNvdXJjZVBhdGgrZSl9cmV0dXJuIHQuZGF0YT97ZGF0YTpNNHQodC50eXBlLHQuZGF0YSksd2lkdGg6dC53aWR0aCxoZWlnaHQ6dC5oZWlnaHR9Om51bGx9aWYodm9pZCAwIT09dCYmdC5sZW5ndGg+MCl7Y29uc3Qgbj1uZXcgY25lKGUpO3I9bmV3IGZuZShuKSxyLnNldENyb3NzT3JpZ2luKHRoaXMuY3Jvc3NPcmlnaW4pO2ZvcihsZXQgZT0wLG49dC5sZW5ndGg7ZTxuO2UrKyl7Y29uc3Qgbj10W2VdLHI9bi51cmw7aWYoQXJyYXkuaXNBcnJheShyKSl7aVtuLnV1aWRdPVtdO2ZvcihsZXQgdD0wLGU9ci5sZW5ndGg7dDxlO3QrKyl7Y29uc3QgZT1vKHJbdF0pO251bGwhPT1lJiYoZSBpbnN0YW5jZW9mIEhUTUxJbWFnZUVsZW1lbnQ/aVtuLnV1aWRdLnB1c2goZSk6aVtuLnV1aWRdLnB1c2gobmV3IEg3dChlLmRhdGEsZS53aWR0aCxlLmhlaWdodCkpKX19ZWxzZXtjb25zdCB0PW8obi51cmwpO251bGwhPT10JiYoaVtuLnV1aWRdPXQpfX19cmV0dXJuIGl9YXN5bmMgcGFyc2VJbWFnZXNBc3luYyh0KXtjb25zdCBlPXRoaXMsbj17fTtsZXQgaTthc3luYyBmdW5jdGlvbiByKHQpe2lmKCJzdHJpbmciPT10eXBlb2YgdCl7Y29uc3Qgbj10LHI9L14oXC9cLyl8KFthLXpdKzooXC9cLyk/KS9pLnRlc3Qobik/bjplLnJlc291cmNlUGF0aCtuO3JldHVybiBhd2FpdCBpLmxvYWRBc3luYyhyKX1yZXR1cm4gdC5kYXRhP3tkYXRhOk00dCh0LnR5cGUsdC5kYXRhKSx3aWR0aDp0LndpZHRoLGhlaWdodDp0LmhlaWdodH06bnVsbH1pZih2b2lkIDAhPT10JiZ0Lmxlbmd0aD4wKXtpPW5ldyBmbmUodGhpcy5tYW5hZ2VyKSxpLnNldENyb3NzT3JpZ2luKHRoaXMuY3Jvc3NPcmlnaW4pO2ZvcihsZXQgZT0wLGk9dC5sZW5ndGg7ZTxpO2UrKyl7Y29uc3QgaT10W2VdLG89aS51cmw7aWYoQXJyYXkuaXNBcnJheShvKSl7bltpLnV1aWRdPVtdO2ZvcihsZXQgdD0wLGU9by5sZW5ndGg7dDxlO3QrKyl7Y29uc3QgZT1vW3RdLGE9YXdhaXQgcihlKTtudWxsIT09YSYmKGEgaW5zdGFuY2VvZiBIVE1MSW1hZ2VFbGVtZW50P25baS51dWlkXS5wdXNoKGEpOm5baS51dWlkXS5wdXNoKG5ldyBIN3QoYS5kYXRhLGEud2lkdGgsYS5oZWlnaHQpKSl9fWVsc2V7Y29uc3QgdD1hd2FpdCByKGkudXJsKTtudWxsIT09dCYmKG5baS51dWlkXT10KX19fXJldHVybiBufXBhcnNlVGV4dHVyZXModCxlKXtmdW5jdGlvbiBuKHQsZSl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiB0P3Q6KGNvbnNvbGUud2FybigiVEhSRUUuT2JqZWN0TG9hZGVyLnBhcnNlVGV4dHVyZTogQ29uc3RhbnQgc2hvdWxkIGJlIGluIG51bWVyaWMgZm9ybS4iLHQpLGVbdF0pfWNvbnN0IGk9e307aWYodm9pZCAwIT09dClmb3IobGV0IHI9MCxvPXQubGVuZ3RoO3I8bztyKyspe2NvbnN0IG89dFtyXTtsZXQgYTt2b2lkIDA9PT1vLmltYWdlJiZjb25zb2xlLndhcm4oJ1RIUkVFLk9iamVjdExvYWRlcjogTm8gImltYWdlIiBzcGVjaWZpZWQgZm9yJyxvLnV1aWQpLHZvaWQgMD09PWVbby5pbWFnZV0mJmNvbnNvbGUud2FybigiVEhSRUUuT2JqZWN0TG9hZGVyOiBVbmRlZmluZWQgaW1hZ2UiLG8uaW1hZ2UpO2NvbnN0IHM9ZVtvLmltYWdlXTtBcnJheS5pc0FycmF5KHMpPyhhPW5ldyBzNnQocyksNj09PXMubGVuZ3RoJiYoYS5uZWVkc1VwZGF0ZT0hMCkpOihhPXMmJnMuZGF0YT9uZXcgSDd0KHMuZGF0YSxzLndpZHRoLHMuaGVpZ2h0KTpuZXcgTjV0KHMpLHMmJihhLm5lZWRzVXBkYXRlPSEwKSksYS51dWlkPW8udXVpZCx2b2lkIDAhPT1vLm5hbWUmJihhLm5hbWU9by5uYW1lKSx2b2lkIDAhPT1vLm1hcHBpbmcmJihhLm1hcHBpbmc9bihvLm1hcHBpbmcsV25lKSksdm9pZCAwIT09by5vZmZzZXQmJmEub2Zmc2V0LmZyb21BcnJheShvLm9mZnNldCksdm9pZCAwIT09by5yZXBlYXQmJmEucmVwZWF0LmZyb21BcnJheShvLnJlcGVhdCksdm9pZCAwIT09by5jZW50ZXImJmEuY2VudGVyLmZyb21BcnJheShvLmNlbnRlciksdm9pZCAwIT09by5yb3RhdGlvbiYmKGEucm90YXRpb249by5yb3RhdGlvbiksdm9pZCAwIT09by53cmFwJiYoYS53cmFwUz1uKG8ud3JhcFswXSxxbmUpLGEud3JhcFQ9bihvLndyYXBbMV0scW5lKSksdm9pZCAwIT09by5mb3JtYXQmJihhLmZvcm1hdD1vLmZvcm1hdCksdm9pZCAwIT09by50eXBlJiYoYS50eXBlPW8udHlwZSksdm9pZCAwIT09by5lbmNvZGluZyYmKGEuZW5jb2Rpbmc9by5lbmNvZGluZyksdm9pZCAwIT09by5taW5GaWx0ZXImJihhLm1pbkZpbHRlcj1uKG8ubWluRmlsdGVyLFluZSkpLHZvaWQgMCE9PW8ubWFnRmlsdGVyJiYoYS5tYWdGaWx0ZXI9bihvLm1hZ0ZpbHRlcixZbmUpKSx2b2lkIDAhPT1vLmFuaXNvdHJvcHkmJihhLmFuaXNvdHJvcHk9by5hbmlzb3Ryb3B5KSx2b2lkIDAhPT1vLmZsaXBZJiYoYS5mbGlwWT1vLmZsaXBZKSx2b2lkIDAhPT1vLnByZW11bHRpcGx5QWxwaGEmJihhLnByZW11bHRpcGx5QWxwaGE9by5wcmVtdWx0aXBseUFscGhhKSx2b2lkIDAhPT1vLnVucGFja0FsaWdubWVudCYmKGEudW5wYWNrQWxpZ25tZW50PW8udW5wYWNrQWxpZ25tZW50KSxpW28udXVpZF09YX1yZXR1cm4gaX1wYXJzZU9iamVjdCh0LGUsbixpLHIpe2xldCBvLGEscztmdW5jdGlvbiBsKHQpe3JldHVybiB2b2lkIDA9PT1lW3RdJiZjb25zb2xlLndhcm4oIlRIUkVFLk9iamVjdExvYWRlcjogVW5kZWZpbmVkIGdlb21ldHJ5Iix0KSxlW3RdfWZ1bmN0aW9uIGModCl7aWYodm9pZCAwIT09dCl7aWYoQXJyYXkuaXNBcnJheSh0KSl7Y29uc3QgZT1bXTtmb3IobGV0IGk9MCxyPXQubGVuZ3RoO2k8cjtpKyspe2NvbnN0IHI9dFtpXTt2b2lkIDA9PT1uW3JdJiZjb25zb2xlLndhcm4oIlRIUkVFLk9iamVjdExvYWRlcjogVW5kZWZpbmVkIG1hdGVyaWFsIixyKSxlLnB1c2gobltyXSl9cmV0dXJuIGV9cmV0dXJuIHZvaWQgMD09PW5bdF0mJmNvbnNvbGUud2FybigiVEhSRUUuT2JqZWN0TG9hZGVyOiBVbmRlZmluZWQgbWF0ZXJpYWwiLHQpLG5bdF19fWZ1bmN0aW9uIHUodCl7cmV0dXJuIHZvaWQgMD09PWlbdF0mJmNvbnNvbGUud2FybigiVEhSRUUuT2JqZWN0TG9hZGVyOiBVbmRlZmluZWQgdGV4dHVyZSIsdCksaVt0XX1zd2l0Y2godC50eXBlKXtjYXNlIlNjZW5lIjpvPW5ldyBjN3Qsdm9pZCAwIT09dC5iYWNrZ3JvdW5kJiYoby5iYWNrZ3JvdW5kPU51bWJlci5pc0ludGVnZXIodC5iYWNrZ3JvdW5kKT9uZXcgczR0KHQuYmFja2dyb3VuZCk6dSh0LmJhY2tncm91bmQpKSx2b2lkIDAhPT10LmVudmlyb25tZW50JiYoby5lbnZpcm9ubWVudD11KHQuZW52aXJvbm1lbnQpKSx2b2lkIDAhPT10LmZvZyYmKCJGb2ciPT09dC5mb2cudHlwZT9vLmZvZz1uZXcgbDd0KHQuZm9nLmNvbG9yLHQuZm9nLm5lYXIsdC5mb2cuZmFyKToiRm9nRXhwMiI9PT10LmZvZy50eXBlJiYoby5mb2c9bmV3IHM3dCh0LmZvZy5jb2xvcix0LmZvZy5kZW5zaXR5KSkpO2JyZWFrO2Nhc2UiUGVyc3BlY3RpdmVDYW1lcmEiOm89bmV3IHI2dCh0LmZvdix0LmFzcGVjdCx0Lm5lYXIsdC5mYXIpLHZvaWQgMCE9PXQuZm9jdXMmJihvLmZvY3VzPXQuZm9jdXMpLHZvaWQgMCE9PXQuem9vbSYmKG8uem9vbT10Lnpvb20pLHZvaWQgMCE9PXQuZmlsbUdhdWdlJiYoby5maWxtR2F1Z2U9dC5maWxtR2F1Z2UpLHZvaWQgMCE9PXQuZmlsbU9mZnNldCYmKG8uZmlsbU9mZnNldD10LmZpbG1PZmZzZXQpLHZvaWQgMCE9PXQudmlldyYmKG8udmlldz1PYmplY3QuYXNzaWduKHt9LHQudmlldykpO2JyZWFrO2Nhc2UiT3J0aG9ncmFwaGljQ2FtZXJhIjpvPW5ldyBBNnQodC5sZWZ0LHQucmlnaHQsdC50b3AsdC5ib3R0b20sdC5uZWFyLHQuZmFyKSx2b2lkIDAhPT10Lnpvb20mJihvLnpvb209dC56b29tKSx2b2lkIDAhPT10LnZpZXcmJihvLnZpZXc9T2JqZWN0LmFzc2lnbih7fSx0LnZpZXcpKTticmVhaztjYXNlIkFtYmllbnRMaWdodCI6bz1uZXcgem5lKHQuY29sb3IsdC5pbnRlbnNpdHkpO2JyZWFrO2Nhc2UiRGlyZWN0aW9uYWxMaWdodCI6bz1uZXcgT25lKHQuY29sb3IsdC5pbnRlbnNpdHkpO2JyZWFrO2Nhc2UiUG9pbnRMaWdodCI6bz1uZXcgSW5lKHQuY29sb3IsdC5pbnRlbnNpdHksdC5kaXN0YW5jZSx0LmRlY2F5KTticmVhaztjYXNlIlJlY3RBcmVhTGlnaHQiOm89bmV3IERuZSh0LmNvbG9yLHQuaW50ZW5zaXR5LHQud2lkdGgsdC5oZWlnaHQpO2JyZWFrO2Nhc2UiU3BvdExpZ2h0IjpvPW5ldyBBbmUodC5jb2xvcix0LmludGVuc2l0eSx0LmRpc3RhbmNlLHQuYW5nbGUsdC5wZW51bWJyYSx0LmRlY2F5KTticmVhaztjYXNlIkhlbWlzcGhlcmVMaWdodCI6bz1uZXcgd25lKHQuY29sb3IsdC5ncm91bmRDb2xvcix0LmludGVuc2l0eSk7YnJlYWs7Y2FzZSJMaWdodFByb2JlIjpvPShuZXcgSG5lKS5mcm9tSlNPTih0KTticmVhaztjYXNlIlNraW5uZWRNZXNoIjphPWwodC5nZW9tZXRyeSkscz1jKHQubWF0ZXJpYWwpLG89bmV3IEQ3dChhLHMpLHZvaWQgMCE9PXQuYmluZE1vZGUmJihvLmJpbmRNb2RlPXQuYmluZE1vZGUpLHZvaWQgMCE9PXQuYmluZE1hdHJpeCYmby5iaW5kTWF0cml4LmZyb21BcnJheSh0LmJpbmRNYXRyaXgpLHZvaWQgMCE9PXQuc2tlbGV0b24mJihvLnNrZWxldG9uPXQuc2tlbGV0b24pO2JyZWFrO2Nhc2UiTWVzaCI6YT1sKHQuZ2VvbWV0cnkpLHM9Yyh0Lm1hdGVyaWFsKSxvPW5ldyBLNHQoYSxzKTticmVhaztjYXNlIkluc3RhbmNlZE1lc2giOmE9bCh0Lmdlb21ldHJ5KSxzPWModC5tYXRlcmlhbCk7Y29uc3QgZT10Lmluc3RhbmNlTWF0cml4LG49dC5pbnN0YW5jZUNvbG9yO289bmV3IFk3dChhLHMsdC5jb3VudCksby5pbnN0YW5jZU1hdHJpeD1uZXcgaDR0KG5ldyBGbG9hdDMyQXJyYXkoZS5hcnJheSksMTYpLHZvaWQgMCE9PW4mJihvLmluc3RhbmNlQ29sb3I9bmV3IGg0dChuZXcgRmxvYXQzMkFycmF5KG4uYXJyYXkpLG4uaXRlbVNpemUpKTticmVhaztjYXNlIkxPRCI6bz1uZXcgUDd0O2JyZWFrO2Nhc2UiTGluZSI6bz1uZXcgdHRlKGwodC5nZW9tZXRyeSksYyh0Lm1hdGVyaWFsKSk7YnJlYWs7Y2FzZSJMaW5lTG9vcCI6bz1uZXcgcnRlKGwodC5nZW9tZXRyeSksYyh0Lm1hdGVyaWFsKSk7YnJlYWs7Y2FzZSJMaW5lU2VnbWVudHMiOm89bmV3IGl0ZShsKHQuZ2VvbWV0cnkpLGModC5tYXRlcmlhbCkpO2JyZWFrO2Nhc2UiUG9pbnRDbG91ZCI6Y2FzZSJQb2ludHMiOm89bmV3IHV0ZShsKHQuZ2VvbWV0cnkpLGModC5tYXRlcmlhbCkpO2JyZWFrO2Nhc2UiU3ByaXRlIjpvPW5ldyBDN3QoYyh0Lm1hdGVyaWFsKSk7YnJlYWs7Y2FzZSJHcm91cCI6bz1uZXcgdDd0O2JyZWFrO2Nhc2UiQm9uZSI6bz1uZXcgQjd0O2JyZWFrO2RlZmF1bHQ6bz1uZXcgVjN0fWlmKG8udXVpZD10LnV1aWQsdm9pZCAwIT09dC5uYW1lJiYoby5uYW1lPXQubmFtZSksdm9pZCAwIT09dC5tYXRyaXg/KG8ubWF0cml4LmZyb21BcnJheSh0Lm1hdHJpeCksdm9pZCAwIT09dC5tYXRyaXhBdXRvVXBkYXRlJiYoby5tYXRyaXhBdXRvVXBkYXRlPXQubWF0cml4QXV0b1VwZGF0ZSksby5tYXRyaXhBdXRvVXBkYXRlJiZvLm1hdHJpeC5kZWNvbXBvc2Uoby5wb3NpdGlvbixvLnF1YXRlcm5pb24sby5zY2FsZSkpOih2b2lkIDAhPT10LnBvc2l0aW9uJiZvLnBvc2l0aW9uLmZyb21BcnJheSh0LnBvc2l0aW9uKSx2b2lkIDAhPT10LnJvdGF0aW9uJiZvLnJvdGF0aW9uLmZyb21BcnJheSh0LnJvdGF0aW9uKSx2b2lkIDAhPT10LnF1YXRlcm5pb24mJm8ucXVhdGVybmlvbi5mcm9tQXJyYXkodC5xdWF0ZXJuaW9uKSx2b2lkIDAhPT10LnNjYWxlJiZvLnNjYWxlLmZyb21BcnJheSh0LnNjYWxlKSksdm9pZCAwIT09dC5jYXN0U2hhZG93JiYoby5jYXN0U2hhZG93PXQuY2FzdFNoYWRvdyksdm9pZCAwIT09dC5yZWNlaXZlU2hhZG93JiYoby5yZWNlaXZlU2hhZG93PXQucmVjZWl2ZVNoYWRvdyksdC5zaGFkb3cmJih2b2lkIDAhPT10LnNoYWRvdy5iaWFzJiYoby5zaGFkb3cuYmlhcz10LnNoYWRvdy5iaWFzKSx2b2lkIDAhPT10LnNoYWRvdy5ub3JtYWxCaWFzJiYoby5zaGFkb3cubm9ybWFsQmlhcz10LnNoYWRvdy5ub3JtYWxCaWFzKSx2b2lkIDAhPT10LnNoYWRvdy5yYWRpdXMmJihvLnNoYWRvdy5yYWRpdXM9dC5zaGFkb3cucmFkaXVzKSx2b2lkIDAhPT10LnNoYWRvdy5tYXBTaXplJiZvLnNoYWRvdy5tYXBTaXplLmZyb21BcnJheSh0LnNoYWRvdy5tYXBTaXplKSx2b2lkIDAhPT10LnNoYWRvdy5jYW1lcmEmJihvLnNoYWRvdy5jYW1lcmE9dGhpcy5wYXJzZU9iamVjdCh0LnNoYWRvdy5jYW1lcmEpKSksdm9pZCAwIT09dC52aXNpYmxlJiYoby52aXNpYmxlPXQudmlzaWJsZSksdm9pZCAwIT09dC5mcnVzdHVtQ3VsbGVkJiYoby5mcnVzdHVtQ3VsbGVkPXQuZnJ1c3R1bUN1bGxlZCksdm9pZCAwIT09dC5yZW5kZXJPcmRlciYmKG8ucmVuZGVyT3JkZXI9dC5yZW5kZXJPcmRlciksdm9pZCAwIT09dC51c2VyRGF0YSYmKG8udXNlckRhdGE9dC51c2VyRGF0YSksdm9pZCAwIT09dC5sYXllcnMmJihvLmxheWVycy5tYXNrPXQubGF5ZXJzKSx2b2lkIDAhPT10LmNoaWxkcmVuKXtjb25zdCBhPXQuY2hpbGRyZW47Zm9yKGxldCB0PTA7dDxhLmxlbmd0aDt0Kyspby5hZGQodGhpcy5wYXJzZU9iamVjdChhW3RdLGUsbixpLHIpKX1pZih2b2lkIDAhPT10LmFuaW1hdGlvbnMpe2NvbnN0IGU9dC5hbmltYXRpb25zO2ZvcihsZXQgdD0wO3Q8ZS5sZW5ndGg7dCsrKXtvLmFuaW1hdGlvbnMucHVzaChyW2VbdF1dKX19aWYoIkxPRCI9PT10LnR5cGUpe3ZvaWQgMCE9PXQuYXV0b1VwZGF0ZSYmKG8uYXV0b1VwZGF0ZT10LmF1dG9VcGRhdGUpO2NvbnN0IGU9dC5sZXZlbHM7Zm9yKGxldCB0PTA7dDxlLmxlbmd0aDt0Kyspe2NvbnN0IG49ZVt0XSxpPW8uZ2V0T2JqZWN0QnlQcm9wZXJ0eSgidXVpZCIsbi5vYmplY3QpO3ZvaWQgMCE9PWkmJm8uYWRkTGV2ZWwoaSxuLmRpc3RhbmNlKX19cmV0dXJuIG99YmluZFNrZWxldG9ucyh0LGUpezAhPT1PYmplY3Qua2V5cyhlKS5sZW5ndGgmJnQudHJhdmVyc2UoKGZ1bmN0aW9uKHQpe2lmKCEwPT09dC5pc1NraW5uZWRNZXNoJiZ2b2lkIDAhPT10LnNrZWxldG9uKXtjb25zdCBuPWVbdC5za2VsZXRvbl07dm9pZCAwPT09bj9jb25zb2xlLndhcm4oIlRIUkVFLk9iamVjdExvYWRlcjogTm8gc2tlbGV0b24gZm91bmQgd2l0aCBVVUlEOiIsdC5za2VsZXRvbik6dC5iaW5kKG4sdC5iaW5kTWF0cml4KX19KSl9c2V0VGV4dHVyZVBhdGgodCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuT2JqZWN0TG9hZGVyOiAuc2V0VGV4dHVyZVBhdGgoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5zZXRSZXNvdXJjZVBhdGgoKS4iKSx0aGlzLnNldFJlc291cmNlUGF0aCh0KX19LE9iamVjdFNwYWNlTm9ybWFsTWFwOjEsT2N0YWhlZHJvbkJ1ZmZlckdlb21ldHJ5Ok1lZSxPY3RhaGVkcm9uR2VvbWV0cnk6TWVlLE9uZUZhY3RvcjoyMDEsT25lTWludXNEc3RBbHBoYUZhY3RvcjoyMDcsT25lTWludXNEc3RDb2xvckZhY3RvcjoyMDksT25lTWludXNTcmNBbHBoYUZhY3RvcjoyMDUsT25lTWludXNTcmNDb2xvckZhY3RvcjoyMDMsT3J0aG9ncmFwaGljQ2FtZXJhOkE2dCxQQ0ZTaGFkb3dNYXA6MSxQQ0ZTb2Z0U2hhZG93TWFwOjIsUE1SRU1HZW5lcmF0b3I6WTZ0LFBhcmFtZXRyaWNCdWZmZXJHZW9tZXRyeTpFZWUsUGFyYW1ldHJpY0dlb21ldHJ5OkVlZSxQYXJ0aWNsZTpmdW5jdGlvbiBQcmUodCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuUGFydGljbGUgaGFzIGJlZW4gcmVuYW1lZCB0byBUSFJFRS5TcHJpdGUuIiksbmV3IEM3dCh0KX0sUGFydGljbGVCYXNpY01hdGVyaWFsOmZ1bmN0aW9uIE5yZSh0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5QYXJ0aWNsZUJhc2ljTWF0ZXJpYWwgaGFzIGJlZW4gcmVuYW1lZCB0byBUSFJFRS5Qb2ludHNNYXRlcmlhbC4iKSxuZXcgb3RlKHQpfSxQYXJ0aWNsZVN5c3RlbTpmdW5jdGlvbiBJcmUodCxlKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5QYXJ0aWNsZVN5c3RlbSBoYXMgYmVlbiByZW5hbWVkIHRvIFRIUkVFLlBvaW50cy4iKSxuZXcgdXRlKHQsZSl9LFBhcnRpY2xlU3lzdGVtTWF0ZXJpYWw6ZnVuY3Rpb24gUnJlKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlBhcnRpY2xlU3lzdGVtTWF0ZXJpYWwgaGFzIGJlZW4gcmVuYW1lZCB0byBUSFJFRS5Qb2ludHNNYXRlcmlhbC4iKSxuZXcgb3RlKHQpfSxQYXRoOnZuZSxQZXJzcGVjdGl2ZUNhbWVyYTpyNnQsUGxhbmU6ZDZ0LFBsYW5lQnVmZmVyR2VvbWV0cnk6eTZ0LFBsYW5lR2VvbWV0cnk6eTZ0LFBsYW5lSGVscGVyOmNsYXNzIGV4dGVuZHMgdHRle2NvbnN0cnVjdG9yKHQsZT0xLG49MTY3NzY5NjApe2NvbnN0IGk9bixyPW5ldyBONHQ7ci5zZXRBdHRyaWJ1dGUoInBvc2l0aW9uIixuZXcgYjR0KFsxLC0xLDEsLTEsMSwxLC0xLC0xLDEsMSwxLDEsLTEsMSwxLC0xLC0xLDEsMSwtMSwxLDEsMSwxLDAsMCwxLDAsMCwwXSwzKSksci5jb21wdXRlQm91bmRpbmdTcGhlcmUoKSxzdXBlcihyLG5ldyBYN3Qoe2NvbG9yOmksdG9uZU1hcHBlZDohMX0pKSx0aGlzLnR5cGU9IlBsYW5lSGVscGVyIix0aGlzLnBsYW5lPXQsdGhpcy5zaXplPWU7Y29uc3Qgbz1uZXcgTjR0O28uc2V0QXR0cmlidXRlKCJwb3NpdGlvbiIsbmV3IGI0dChbMSwxLDEsLTEsMSwxLC0xLC0xLDEsMSwxLDEsLTEsLTEsMSwxLC0xLDFdLDMpKSxvLmNvbXB1dGVCb3VuZGluZ1NwaGVyZSgpLHRoaXMuYWRkKG5ldyBLNHQobyxuZXcgbDR0KHtjb2xvcjppLG9wYWNpdHk6LjIsdHJhbnNwYXJlbnQ6ITAsZGVwdGhXcml0ZTohMSx0b25lTWFwcGVkOiExfSkpKX11cGRhdGVNYXRyaXhXb3JsZCh0KXtsZXQgZT0tdGhpcy5wbGFuZS5jb25zdGFudDtNYXRoLmFicyhlKTwxZS04JiYoZT0xZS04KSx0aGlzLnNjYWxlLnNldCguNSp0aGlzLnNpemUsLjUqdGhpcy5zaXplLGUpLHRoaXMuY2hpbGRyZW5bMF0ubWF0ZXJpYWwuc2lkZT1lPDA/MTowLHRoaXMubG9va0F0KHRoaXMucGxhbmUubm9ybWFsKSxzdXBlci51cGRhdGVNYXRyaXhXb3JsZCh0KX19LFBvaW50Q2xvdWQ6ZnVuY3Rpb24gT3JlKHQsZSl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuUG9pbnRDbG91ZCBoYXMgYmVlbiByZW5hbWVkIHRvIFRIUkVFLlBvaW50cy4iKSxuZXcgdXRlKHQsZSl9LFBvaW50Q2xvdWRNYXRlcmlhbDpmdW5jdGlvbiB6cmUodCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuUG9pbnRDbG91ZE1hdGVyaWFsIGhhcyBiZWVuIHJlbmFtZWQgdG8gVEhSRUUuUG9pbnRzTWF0ZXJpYWwuIiksbmV3IG90ZSh0KX0sUG9pbnRMaWdodDpJbmUsUG9pbnRMaWdodEhlbHBlcjpjbGFzcyBleHRlbmRzIEs0dHtjb25zdHJ1Y3Rvcih0LGUsbil7c3VwZXIobmV3IEFlZShlLDQsMiksbmV3IGw0dCh7d2lyZWZyYW1lOiEwLGZvZzohMSx0b25lTWFwcGVkOiExfSkpLHRoaXMubGlnaHQ9dCx0aGlzLmxpZ2h0LnVwZGF0ZU1hdHJpeFdvcmxkKCksdGhpcy5jb2xvcj1uLHRoaXMudHlwZT0iUG9pbnRMaWdodEhlbHBlciIsdGhpcy5tYXRyaXg9dGhpcy5saWdodC5tYXRyaXhXb3JsZCx0aGlzLm1hdHJpeEF1dG9VcGRhdGU9ITEsdGhpcy51cGRhdGUoKX1kaXNwb3NlKCl7dGhpcy5nZW9tZXRyeS5kaXNwb3NlKCksdGhpcy5tYXRlcmlhbC5kaXNwb3NlKCl9dXBkYXRlKCl7dm9pZCAwIT09dGhpcy5jb2xvcj90aGlzLm1hdGVyaWFsLmNvbG9yLnNldCh0aGlzLmNvbG9yKTp0aGlzLm1hdGVyaWFsLmNvbG9yLmNvcHkodGhpcy5saWdodC5jb2xvcil9fSxQb2ludHM6dXRlLFBvaW50c01hdGVyaWFsOm90ZSxQb2xhckdyaWRIZWxwZXI6Y2xhc3MgZXh0ZW5kcyBpdGV7Y29uc3RydWN0b3IodD0xMCxlPTE2LG49OCxpPTY0LHI9NDQ3MzkyNCxvPTg5NDc4NDgpe3I9bmV3IHM0dChyKSxvPW5ldyBzNHQobyk7Y29uc3QgYT1bXSxzPVtdO2ZvcihsZXQgbj0wO248PWU7bisrKXtjb25zdCBpPW4vZSooMipNYXRoLlBJKSxsPU1hdGguc2luKGkpKnQsYz1NYXRoLmNvcyhpKSp0O2EucHVzaCgwLDAsMCksYS5wdXNoKGwsMCxjKTtjb25zdCB1PTEmbj9yOm87cy5wdXNoKHUucix1LmcsdS5iKSxzLnB1c2godS5yLHUuZyx1LmIpfWZvcihsZXQgZT0wO2U8PW47ZSsrKXtjb25zdCBsPTEmZT9yOm8sYz10LXQvbiplO2ZvcihsZXQgdD0wO3Q8aTt0Kyspe2xldCBlPXQvaSooMipNYXRoLlBJKSxuPU1hdGguc2luKGUpKmMscj1NYXRoLmNvcyhlKSpjO2EucHVzaChuLDAscikscy5wdXNoKGwucixsLmcsbC5iKSxlPSh0KzEpL2kqKDIqTWF0aC5QSSksbj1NYXRoLnNpbihlKSpjLHI9TWF0aC5jb3MoZSkqYyxhLnB1c2gobiwwLHIpLHMucHVzaChsLnIsbC5nLGwuYil9fWNvbnN0IGw9bmV3IE40dDtsLnNldEF0dHJpYnV0ZSgicG9zaXRpb24iLG5ldyBiNHQoYSwzKSksbC5zZXRBdHRyaWJ1dGUoImNvbG9yIixuZXcgYjR0KHMsMykpO3N1cGVyKGwsbmV3IFg3dCh7dmVydGV4Q29sb3JzOiEwLHRvbmVNYXBwZWQ6ITF9KSksdGhpcy50eXBlPSJQb2xhckdyaWRIZWxwZXIifX0sUG9seWhlZHJvbkJ1ZmZlckdlb21ldHJ5OnZ0ZSxQb2x5aGVkcm9uR2VvbWV0cnk6dnRlLFBvc2l0aW9uYWxBdWRpbzpjbGFzcyBleHRlbmRzIGhpZXtjb25zdHJ1Y3Rvcih0KXtzdXBlcih0KSx0aGlzLnBhbm5lcj10aGlzLmNvbnRleHQuY3JlYXRlUGFubmVyKCksdGhpcy5wYW5uZXIucGFubmluZ01vZGVsPSJIUlRGIix0aGlzLnBhbm5lci5jb25uZWN0KHRoaXMuZ2Fpbil9Z2V0T3V0cHV0KCl7cmV0dXJuIHRoaXMucGFubmVyfWdldFJlZkRpc3RhbmNlKCl7cmV0dXJuIHRoaXMucGFubmVyLnJlZkRpc3RhbmNlfXNldFJlZkRpc3RhbmNlKHQpe3JldHVybiB0aGlzLnBhbm5lci5yZWZEaXN0YW5jZT10LHRoaXN9Z2V0Um9sbG9mZkZhY3Rvcigpe3JldHVybiB0aGlzLnBhbm5lci5yb2xsb2ZmRmFjdG9yfXNldFJvbGxvZmZGYWN0b3IodCl7cmV0dXJuIHRoaXMucGFubmVyLnJvbGxvZmZGYWN0b3I9dCx0aGlzfWdldERpc3RhbmNlTW9kZWwoKXtyZXR1cm4gdGhpcy5wYW5uZXIuZGlzdGFuY2VNb2RlbH1zZXREaXN0YW5jZU1vZGVsKHQpe3JldHVybiB0aGlzLnBhbm5lci5kaXN0YW5jZU1vZGVsPXQsdGhpc31nZXRNYXhEaXN0YW5jZSgpe3JldHVybiB0aGlzLnBhbm5lci5tYXhEaXN0YW5jZX1zZXRNYXhEaXN0YW5jZSh0KXtyZXR1cm4gdGhpcy5wYW5uZXIubWF4RGlzdGFuY2U9dCx0aGlzfXNldERpcmVjdGlvbmFsQ29uZSh0LGUsbil7cmV0dXJuIHRoaXMucGFubmVyLmNvbmVJbm5lckFuZ2xlPXQsdGhpcy5wYW5uZXIuY29uZU91dGVyQW5nbGU9ZSx0aGlzLnBhbm5lci5jb25lT3V0ZXJHYWluPW4sdGhpc311cGRhdGVNYXRyaXhXb3JsZCh0KXtpZihzdXBlci51cGRhdGVNYXRyaXhXb3JsZCh0KSwhMD09PXRoaXMuaGFzUGxheWJhY2tDb250cm9sJiYhMT09PXRoaXMuaXNQbGF5aW5nKXJldHVybjt0aGlzLm1hdHJpeFdvcmxkLmRlY29tcG9zZShkaWUscGllLGZpZSksbWllLnNldCgwLDAsMSkuYXBwbHlRdWF0ZXJuaW9uKHBpZSk7Y29uc3QgZT10aGlzLnBhbm5lcjtpZihlLnBvc2l0aW9uWCl7Y29uc3QgdD10aGlzLmNvbnRleHQuY3VycmVudFRpbWUrdGhpcy5saXN0ZW5lci50aW1lRGVsdGE7ZS5wb3NpdGlvblgubGluZWFyUmFtcFRvVmFsdWVBdFRpbWUoZGllLngsdCksZS5wb3NpdGlvblkubGluZWFyUmFtcFRvVmFsdWVBdFRpbWUoZGllLnksdCksZS5wb3NpdGlvbloubGluZWFyUmFtcFRvVmFsdWVBdFRpbWUoZGllLnosdCksZS5vcmllbnRhdGlvblgubGluZWFyUmFtcFRvVmFsdWVBdFRpbWUobWllLngsdCksZS5vcmllbnRhdGlvblkubGluZWFyUmFtcFRvVmFsdWVBdFRpbWUobWllLnksdCksZS5vcmllbnRhdGlvbloubGluZWFyUmFtcFRvVmFsdWVBdFRpbWUobWllLnosdCl9ZWxzZSBlLnNldFBvc2l0aW9uKGRpZS54LGRpZS55LGRpZS56KSxlLnNldE9yaWVudGF0aW9uKG1pZS54LG1pZS55LG1pZS56KX19LFByb3BlcnR5QmluZGluZzpBaWUsUHJvcGVydHlNaXhlcjpfaWUsUXVhZHJhdGljQmV6aWVyQ3VydmU6VXRlLFF1YWRyYXRpY0JlemllckN1cnZlMzpqdGUsUXVhdGVybmlvbjpCNXQsUXVhdGVybmlvbktleWZyYW1lVHJhY2s6aW5lLFF1YXRlcm5pb25MaW5lYXJJbnRlcnBvbGFudDpubmUsUkVWSVNJT046SzB0LFJHQkFEZXB0aFBhY2tpbmc6MzIwMSxSR0JBRm9ybWF0OlMydCxSR0JBSW50ZWdlckZvcm1hdDoxMDMzLFJHQkFfQVNUQ18xMHgxMF9Gb3JtYXQ6Mzc4MTksUkdCQV9BU1RDXzEweDVfRm9ybWF0OjM3ODE2LFJHQkFfQVNUQ18xMHg2X0Zvcm1hdDozNzgxNyxSR0JBX0FTVENfMTB4OF9Gb3JtYXQ6Mzc4MTgsUkdCQV9BU1RDXzEyeDEwX0Zvcm1hdDozNzgyMCxSR0JBX0FTVENfMTJ4MTJfRm9ybWF0OjM3ODIxLFJHQkFfQVNUQ180eDRfRm9ybWF0OjM3ODA4LFJHQkFfQVNUQ181eDRfRm9ybWF0OjM3ODA5LFJHQkFfQVNUQ181eDVfRm9ybWF0OjM3ODEwLFJHQkFfQVNUQ182eDVfRm9ybWF0OjM3ODExLFJHQkFfQVNUQ182eDZfRm9ybWF0OjM3ODEyLFJHQkFfQVNUQ184eDVfRm9ybWF0OjM3ODEzLFJHQkFfQVNUQ184eDZfRm9ybWF0OjM3ODE0LFJHQkFfQVNUQ184eDhfRm9ybWF0OjM3ODE1LFJHQkFfQlBUQ19Gb3JtYXQ6MzY0OTIsUkdCQV9FVEMyX0VBQ19Gb3JtYXQ6TzJ0LFJHQkFfUFZSVENfMkJQUFYxX0Zvcm1hdDpJMnQsUkdCQV9QVlJUQ180QlBQVjFfRm9ybWF0Ok4ydCxSR0JBX1MzVENfRFhUMV9Gb3JtYXQ6QzJ0LFJHQkFfUzNUQ19EWFQzX0Zvcm1hdDpBMnQsUkdCQV9TM1RDX0RYVDVfRm9ybWF0OmsydCxSR0JERW5jb2Rpbmc6SzJ0LFJHQkVFbmNvZGluZzpZMnQsUkdCRUZvcm1hdDoxMDIzLFJHQkZvcm1hdDp3MnQsUkdCSW50ZWdlckZvcm1hdDoxMDMyLFJHQk0xNkVuY29kaW5nOiQydCxSR0JNN0VuY29kaW5nOlgydCxSR0JfRVRDMV9Gb3JtYXQ6MzYxOTYsUkdCX0VUQzJfRm9ybWF0OlIydCxSR0JfUFZSVENfMkJQUFYxX0Zvcm1hdDpQMnQsUkdCX1BWUlRDXzRCUFBWMV9Gb3JtYXQ6TDJ0LFJHQl9TM1RDX0RYVDFfRm9ybWF0OlQydCxSR0Zvcm1hdDoxMDMwLFJHSW50ZWdlckZvcm1hdDoxMDMxLFJhd1NoYWRlck1hdGVyaWFsOms2dCxSYXk6bTN0LFJheWNhc3RlcjpjbGFzc3tjb25zdHJ1Y3Rvcih0LGUsbj0wLGk9MS8wKXt0aGlzLnJheT1uZXcgbTN0KHQsZSksdGhpcy5uZWFyPW4sdGhpcy5mYXI9aSx0aGlzLmNhbWVyYT1udWxsLHRoaXMubGF5ZXJzPW5ldyBDM3QsdGhpcy5wYXJhbXM9e01lc2g6e30sTGluZTp7dGhyZXNob2xkOjF9LExPRDp7fSxQb2ludHM6e3RocmVzaG9sZDoxfSxTcHJpdGU6e319fXNldCh0LGUpe3RoaXMucmF5LnNldCh0LGUpfXNldEZyb21DYW1lcmEodCxlKXtlJiZlLmlzUGVyc3BlY3RpdmVDYW1lcmE/KHRoaXMucmF5Lm9yaWdpbi5zZXRGcm9tTWF0cml4UG9zaXRpb24oZS5tYXRyaXhXb3JsZCksdGhpcy5yYXkuZGlyZWN0aW9uLnNldCh0LngsdC55LC41KS51bnByb2plY3QoZSkuc3ViKHRoaXMucmF5Lm9yaWdpbikubm9ybWFsaXplKCksdGhpcy5jYW1lcmE9ZSk6ZSYmZS5pc09ydGhvZ3JhcGhpY0NhbWVyYT8odGhpcy5yYXkub3JpZ2luLnNldCh0LngsdC55LChlLm5lYXIrZS5mYXIpLyhlLm5lYXItZS5mYXIpKS51bnByb2plY3QoZSksdGhpcy5yYXkuZGlyZWN0aW9uLnNldCgwLDAsLTEpLnRyYW5zZm9ybURpcmVjdGlvbihlLm1hdHJpeFdvcmxkKSx0aGlzLmNhbWVyYT1lKTpjb25zb2xlLmVycm9yKCJUSFJFRS5SYXljYXN0ZXI6IFVuc3VwcG9ydGVkIGNhbWVyYSB0eXBlOiAiK2UudHlwZSl9aW50ZXJzZWN0T2JqZWN0KHQsZT0hMSxuPVtdKXtyZXR1cm4gemllKHQsdGhpcyxuLGUpLG4uc29ydChPaWUpLG59aW50ZXJzZWN0T2JqZWN0cyh0LGU9ITEsbj1bXSl7Zm9yKGxldCBpPTAscj10Lmxlbmd0aDtpPHI7aSsrKXppZSh0W2ldLHRoaXMsbixlKTtyZXR1cm4gbi5zb3J0KE9pZSksbn19LFJlY3RBcmVhTGlnaHQ6RG5lLFJlZEZvcm1hdDoxMDI4LFJlZEludGVnZXJGb3JtYXQ6MTAyOSxSZWluaGFyZFRvbmVNYXBwaW5nOjIsUmVwZWF0V3JhcHBpbmc6czJ0LFJlcGxhY2VTdGVuY2lsT3A6NzY4MSxSZXZlcnNlU3VidHJhY3RFcXVhdGlvbjoxMDIsUmluZ0J1ZmZlckdlb21ldHJ5OlRlZSxSaW5nR2VvbWV0cnk6VGVlLFNSR0I4X0FMUEhBOF9BU1RDXzEweDEwX0Zvcm1hdDozNzg1MSxTUkdCOF9BTFBIQThfQVNUQ18xMHg1X0Zvcm1hdDozNzg0OCxTUkdCOF9BTFBIQThfQVNUQ18xMHg2X0Zvcm1hdDozNzg0OSxTUkdCOF9BTFBIQThfQVNUQ18xMHg4X0Zvcm1hdDozNzg1MCxTUkdCOF9BTFBIQThfQVNUQ18xMngxMF9Gb3JtYXQ6Mzc4NTIsU1JHQjhfQUxQSEE4X0FTVENfMTJ4MTJfRm9ybWF0OjM3ODUzLFNSR0I4X0FMUEhBOF9BU1RDXzR4NF9Gb3JtYXQ6Mzc4NDAsU1JHQjhfQUxQSEE4X0FTVENfNXg0X0Zvcm1hdDozNzg0MSxTUkdCOF9BTFBIQThfQVNUQ181eDVfRm9ybWF0OjM3ODQyLFNSR0I4X0FMUEhBOF9BU1RDXzZ4NV9Gb3JtYXQ6Mzc4NDMsU1JHQjhfQUxQSEE4X0FTVENfNng2X0Zvcm1hdDozNzg0NCxTUkdCOF9BTFBIQThfQVNUQ184eDVfRm9ybWF0OjM3ODQ1LFNSR0I4X0FMUEhBOF9BU1RDXzh4Nl9Gb3JtYXQ6Mzc4NDYsU1JHQjhfQUxQSEE4X0FTVENfOHg4X0Zvcm1hdDozNzg0NyxTY2VuZTpjN3QsU2NlbmVVdGlsczpmcmUsU2hhZGVyQ2h1bms6djZ0LFNoYWRlckxpYjp4NnQsU2hhZGVyTWF0ZXJpYWw6bjZ0LFNoYWRvd01hdGVyaWFsOkRlZSxTaGFwZTpibmUsU2hhcGVCdWZmZXJHZW9tZXRyeTpDZWUsU2hhcGVHZW9tZXRyeTpDZWUsU2hhcGVQYXRoOiRuZSxTaGFwZVV0aWxzOl9lZSxTaG9ydFR5cGU6MTAxMSxTa2VsZXRvbjpVN3QsU2tlbGV0b25IZWxwZXI6WGllLFNraW5uZWRNZXNoOkQ3dCxTbW9vdGhTaGFkaW5nOjIsU3BoZXJlOnMzdCxTcGhlcmVCdWZmZXJHZW9tZXRyeTpBZWUsU3BoZXJlR2VvbWV0cnk6QWVlLFNwaGVyaWNhbDpEaWUsU3BoZXJpY2FsSGFybW9uaWNzMzpCbmUsU3BsaW5lQ3VydmU6R3RlLFNwb3RMaWdodDpBbmUsU3BvdExpZ2h0SGVscGVyOmNsYXNzIGV4dGVuZHMgVjN0e2NvbnN0cnVjdG9yKHQsZSl7c3VwZXIoKSx0aGlzLmxpZ2h0PXQsdGhpcy5saWdodC51cGRhdGVNYXRyaXhXb3JsZCgpLHRoaXMubWF0cml4PXQubWF0cml4V29ybGQsdGhpcy5tYXRyaXhBdXRvVXBkYXRlPSExLHRoaXMuY29sb3I9ZTtjb25zdCBuPW5ldyBONHQsaT1bMCwwLDAsMCwwLDEsMCwwLDAsMSwwLDEsMCwwLDAsLTEsMCwxLDAsMCwwLDAsMSwxLDAsMCwwLDAsLTEsMV07Zm9yKGxldCB0PTAsZT0xLG49MzI7dDxuO3QrKyxlKyspe2NvbnN0IHI9dC9uKk1hdGguUEkqMixvPWUvbipNYXRoLlBJKjI7aS5wdXNoKE1hdGguY29zKHIpLE1hdGguc2luKHIpLDEsTWF0aC5jb3MobyksTWF0aC5zaW4obyksMSl9bi5zZXRBdHRyaWJ1dGUoInBvc2l0aW9uIixuZXcgYjR0KGksMykpO2NvbnN0IHI9bmV3IFg3dCh7Zm9nOiExLHRvbmVNYXBwZWQ6ITF9KTt0aGlzLmNvbmU9bmV3IGl0ZShuLHIpLHRoaXMuYWRkKHRoaXMuY29uZSksdGhpcy51cGRhdGUoKX1kaXNwb3NlKCl7dGhpcy5jb25lLmdlb21ldHJ5LmRpc3Bvc2UoKSx0aGlzLmNvbmUubWF0ZXJpYWwuZGlzcG9zZSgpfXVwZGF0ZSgpe3RoaXMubGlnaHQudXBkYXRlTWF0cml4V29ybGQoKTtjb25zdCB0PXRoaXMubGlnaHQuZGlzdGFuY2U/dGhpcy5saWdodC5kaXN0YW5jZToxZTMsZT10Kk1hdGgudGFuKHRoaXMubGlnaHQuYW5nbGUpO3RoaXMuY29uZS5zY2FsZS5zZXQoZSxlLHQpLEdpZS5zZXRGcm9tTWF0cml4UG9zaXRpb24odGhpcy5saWdodC50YXJnZXQubWF0cml4V29ybGQpLHRoaXMuY29uZS5sb29rQXQoR2llKSx2b2lkIDAhPT10aGlzLmNvbG9yP3RoaXMuY29uZS5tYXRlcmlhbC5jb2xvci5zZXQodGhpcy5jb2xvcik6dGhpcy5jb25lLm1hdGVyaWFsLmNvbG9yLmNvcHkodGhpcy5saWdodC5jb2xvcil9fSxTcHJpdGU6Qzd0LFNwcml0ZU1hdGVyaWFsOnA3dCxTcmNBbHBoYUZhY3RvcjoyMDQsU3JjQWxwaGFTYXR1cmF0ZUZhY3RvcjoyMTAsU3JjQ29sb3JGYWN0b3I6MjAyLFN0YXRpY0NvcHlVc2FnZTozNTA0NixTdGF0aWNEcmF3VXNhZ2U6SjJ0LFN0YXRpY1JlYWRVc2FnZTozNTA0NSxTdGVyZW9DYW1lcmE6Y2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLnR5cGU9IlN0ZXJlb0NhbWVyYSIsdGhpcy5hc3BlY3Q9MSx0aGlzLmV5ZVNlcD0uMDY0LHRoaXMuY2FtZXJhTD1uZXcgcjZ0LHRoaXMuY2FtZXJhTC5sYXllcnMuZW5hYmxlKDEpLHRoaXMuY2FtZXJhTC5tYXRyaXhBdXRvVXBkYXRlPSExLHRoaXMuY2FtZXJhUj1uZXcgcjZ0LHRoaXMuY2FtZXJhUi5sYXllcnMuZW5hYmxlKDIpLHRoaXMuY2FtZXJhUi5tYXRyaXhBdXRvVXBkYXRlPSExLHRoaXMuX2NhY2hlPXtmb2N1czpudWxsLGZvdjpudWxsLGFzcGVjdDpudWxsLG5lYXI6bnVsbCxmYXI6bnVsbCx6b29tOm51bGwsZXllU2VwOm51bGx9fXVwZGF0ZSh0KXtjb25zdCBlPXRoaXMuX2NhY2hlO2lmKGUuZm9jdXMhPT10LmZvY3VzfHxlLmZvdiE9PXQuZm92fHxlLmFzcGVjdCE9PXQuYXNwZWN0KnRoaXMuYXNwZWN0fHxlLm5lYXIhPT10Lm5lYXJ8fGUuZmFyIT09dC5mYXJ8fGUuem9vbSE9PXQuem9vbXx8ZS5leWVTZXAhPT10aGlzLmV5ZVNlcCl7ZS5mb2N1cz10LmZvY3VzLGUuZm92PXQuZm92LGUuYXNwZWN0PXQuYXNwZWN0KnRoaXMuYXNwZWN0LGUubmVhcj10Lm5lYXIsZS5mYXI9dC5mYXIsZS56b29tPXQuem9vbSxlLmV5ZVNlcD10aGlzLmV5ZVNlcDtjb25zdCBuPXQucHJvamVjdGlvbk1hdHJpeC5jbG9uZSgpLGk9ZS5leWVTZXAvMixyPWkqZS5uZWFyL2UuZm9jdXMsbz1lLm5lYXIqTWF0aC50YW4ocjV0KmUuZm92Ki41KS9lLnpvb207bGV0IGEscztyaWUuZWxlbWVudHNbMTJdPS1pLGlpZS5lbGVtZW50c1sxMl09aSxhPS1vKmUuYXNwZWN0K3Iscz1vKmUuYXNwZWN0K3Isbi5lbGVtZW50c1swXT0yKmUubmVhci8ocy1hKSxuLmVsZW1lbnRzWzhdPShzK2EpLyhzLWEpLHRoaXMuY2FtZXJhTC5wcm9qZWN0aW9uTWF0cml4LmNvcHkobiksYT0tbyplLmFzcGVjdC1yLHM9byplLmFzcGVjdC1yLG4uZWxlbWVudHNbMF09MiplLm5lYXIvKHMtYSksbi5lbGVtZW50c1s4XT0ocythKS8ocy1hKSx0aGlzLmNhbWVyYVIucHJvamVjdGlvbk1hdHJpeC5jb3B5KG4pfXRoaXMuY2FtZXJhTC5tYXRyaXhXb3JsZC5jb3B5KHQubWF0cml4V29ybGQpLm11bHRpcGx5KHJpZSksdGhpcy5jYW1lcmFSLm1hdHJpeFdvcmxkLmNvcHkodC5tYXRyaXhXb3JsZCkubXVsdGlwbHkoaWllKX19LFN0cmVhbUNvcHlVc2FnZTozNTA0MixTdHJlYW1EcmF3VXNhZ2U6MzUwNDAsU3RyZWFtUmVhZFVzYWdlOjM1MDQxLFN0cmluZ0tleWZyYW1lVHJhY2s6cm5lLFN1YnRyYWN0RXF1YXRpb246MTAxLFN1YnRyYWN0aXZlQmxlbmRpbmc6MyxUT1VDSDpKMHQsVGFuZ2VudFNwYWNlTm9ybWFsTWFwOjAsVGV0cmFoZWRyb25CdWZmZXJHZW9tZXRyeTprZWUsVGV0cmFoZWRyb25HZW9tZXRyeTprZWUsVGV4dEJ1ZmZlckdlb21ldHJ5OkxlZSxUZXh0R2VvbWV0cnk6TGVlLFRleHR1cmU6TjV0LFRleHR1cmVMb2FkZXI6X25lLFRvcnVzQnVmZmVyR2VvbWV0cnk6UGVlLFRvcnVzR2VvbWV0cnk6UGVlLFRvcnVzS25vdEJ1ZmZlckdlb21ldHJ5Ok5lZSxUb3J1c0tub3RHZW9tZXRyeTpOZWUsVHJpYW5nbGU6SjN0LFRyaWFuZ2xlRmFuRHJhd01vZGU6MixUcmlhbmdsZVN0cmlwRHJhd01vZGU6MSxUcmlhbmdsZXNEcmF3TW9kZTowLFR1YmVCdWZmZXJHZW9tZXRyeTpJZWUsVHViZUdlb21ldHJ5OkllZSxVVk1hcHBpbmc6dDJ0LFVpbnQxNkF0dHJpYnV0ZTpmdW5jdGlvbiBEcmUodCxlKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5VaW50MTZBdHRyaWJ1dGUgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIG5ldyBUSFJFRS5VaW50MTZCdWZmZXJBdHRyaWJ1dGUoKSBpbnN0ZWFkLiIpLG5ldyBnNHQodCxlKX0sVWludDE2QnVmZmVyQXR0cmlidXRlOmc0dCxVaW50MzJBdHRyaWJ1dGU6ZnVuY3Rpb24gQnJlKHQsZSl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuVWludDMyQXR0cmlidXRlIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBuZXcgVEhSRUUuVWludDMyQnVmZmVyQXR0cmlidXRlKCkgaW5zdGVhZC4iKSxuZXcgeTR0KHQsZSl9LFVpbnQzMkJ1ZmZlckF0dHJpYnV0ZTp5NHQsVWludDhBdHRyaWJ1dGU6ZnVuY3Rpb24gSHJlKHQsZSl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuVWludDhBdHRyaWJ1dGUgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIG5ldyBUSFJFRS5VaW50OEJ1ZmZlckF0dHJpYnV0ZSgpIGluc3RlYWQuIiksbmV3IHA0dCh0LGUpfSxVaW50OEJ1ZmZlckF0dHJpYnV0ZTpwNHQsVWludDhDbGFtcGVkQXR0cmlidXRlOmZ1bmN0aW9uIEZyZSh0LGUpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlVpbnQ4Q2xhbXBlZEF0dHJpYnV0ZSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgbmV3IFRIUkVFLlVpbnQ4Q2xhbXBlZEJ1ZmZlckF0dHJpYnV0ZSgpIGluc3RlYWQuIiksbmV3IGY0dCh0LGUpfSxVaW50OENsYW1wZWRCdWZmZXJBdHRyaWJ1dGU6ZjR0LFVuaWZvcm06TmllLFVuaWZvcm1zTGliOmI2dCxVbmlmb3Jtc1V0aWxzOmU2dCxVbnNpZ25lZEJ5dGVUeXBlOmcydCxVbnNpZ25lZEludDI0OFR5cGU6eDJ0LFVuc2lnbmVkSW50VHlwZTp5MnQsVW5zaWduZWRTaG9ydDQ0NDRUeXBlOjEwMTcsVW5zaWduZWRTaG9ydDU1NTFUeXBlOjEwMTgsVW5zaWduZWRTaG9ydDU2NVR5cGU6MTAxOSxVbnNpZ25lZFNob3J0VHlwZTpfMnQsVlNNU2hhZG93TWFwOjMsVmVjdG9yMjpDNXQsVmVjdG9yMzpINXQsVmVjdG9yNDpSNXQsVmVjdG9yS2V5ZnJhbWVUcmFjazpvbmUsVmVydGV4OmZ1bmN0aW9uIFZyZSh0LGUsbil7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuVmVydGV4IGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBUSFJFRS5WZWN0b3IzIGluc3RlYWQuIiksbmV3IEg1dCh0LGUsbil9LFZlcnRleENvbG9yczoyLFZpZGVvVGV4dHVyZTpkdGUsV2ViR0wxUmVuZGVyZXI6YTd0LFdlYkdMQ3ViZVJlbmRlclRhcmdldDpsNnQsV2ViR0xNdWx0aXBsZVJlbmRlclRhcmdldHM6ejV0LFdlYkdMTXVsdGlzYW1wbGVSZW5kZXJUYXJnZXQ6RDV0LFdlYkdMUmVuZGVyVGFyZ2V0Ok81dCxXZWJHTFJlbmRlclRhcmdldEN1YmU6ZnVuY3Rpb24gVXJlKHQsZSxuKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlclRhcmdldEN1YmUoIHdpZHRoLCBoZWlnaHQsIG9wdGlvbnMgKSBpcyBub3cgV2ViR0xDdWJlUmVuZGVyVGFyZ2V0KCBzaXplLCBvcHRpb25zICkuIiksbmV3IGw2dCh0LG4pfSxXZWJHTFJlbmRlcmVyOm83dCxXZWJHTFV0aWxzOko4dCxXaXJlZnJhbWVHZW9tZXRyeTpSZWUsV2lyZWZyYW1lSGVscGVyOmZ1bmN0aW9uIGpyZSh0LGUpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldpcmVmcmFtZUhlbHBlciBoYXMgYmVlbiByZW1vdmVkLiBVc2UgVEhSRUUuV2lyZWZyYW1lR2VvbWV0cnkgaW5zdGVhZC4iKSxuZXcgaXRlKG5ldyBSZWUodC5nZW9tZXRyeSksbmV3IFg3dCh7Y29sb3I6dm9pZCAwIT09ZT9lOjE2Nzc3MjE1fSkpfSxXcmFwQXJvdW5kRW5kaW5nOlYydCxYSFJMb2FkZXI6ZnVuY3Rpb24gR3JlKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlhIUkxvYWRlciBoYXMgYmVlbiByZW5hbWVkIHRvIFRIUkVFLkZpbGVMb2FkZXIuIiksbmV3IHBuZSh0KX0sWmVyb0N1cnZhdHVyZUVuZGluZzpIMnQsWmVyb0ZhY3RvcjoyMDAsWmVyb1Nsb3BlRW5kaW5nOkYydCxaZXJvU3RlbmNpbE9wOjAsc1JHQkVuY29kaW5nOlcydH0pO2NvbnN0IFdyZT17dHlwZToiY2hhbmdlIn0scXJlPXt0eXBlOiJzdGFydCJ9LFlyZT17dHlwZToiZW5kIn07Y2xhc3MgWHJlIGV4dGVuZHMgZTV0e2NvbnN0cnVjdG9yKHQsZSl7c3VwZXIoKSx2b2lkIDA9PT1lJiZjb25zb2xlLndhcm4oJ1RIUkVFLk9yYml0Q29udHJvbHM6IFRoZSBzZWNvbmQgcGFyYW1ldGVyICJkb21FbGVtZW50IiBpcyBub3cgbWFuZGF0b3J5LicpLGU9PT1kb2N1bWVudCYmY29uc29sZS5lcnJvcignVEhSRUUuT3JiaXRDb250cm9sczogImRvY3VtZW50IiBzaG91bGQgbm90IGJlIHVzZWQgYXMgdGhlIHRhcmdldCAiZG9tRWxlbWVudCIuIFBsZWFzZSB1c2UgInJlbmRlcmVyLmRvbUVsZW1lbnQiIGluc3RlYWQuJyksdGhpcy5vYmplY3Q9dCx0aGlzLmRvbUVsZW1lbnQ9ZSx0aGlzLmRvbUVsZW1lbnQuc3R5bGUudG91Y2hBY3Rpb249Im5vbmUiLHRoaXMuZW5hYmxlZD0hMCx0aGlzLnRhcmdldD1uZXcgSDV0LHRoaXMubWluRGlzdGFuY2U9MCx0aGlzLm1heERpc3RhbmNlPTEvMCx0aGlzLm1pblpvb209MCx0aGlzLm1heFpvb209MS8wLHRoaXMubWluUG9sYXJBbmdsZT0wLHRoaXMubWF4UG9sYXJBbmdsZT1NYXRoLlBJLHRoaXMubWluQXppbXV0aEFuZ2xlPS0xLzAsdGhpcy5tYXhBemltdXRoQW5nbGU9MS8wLHRoaXMuZW5hYmxlRGFtcGluZz0hMSx0aGlzLmRhbXBpbmdGYWN0b3I9LjA1LHRoaXMuZW5hYmxlWm9vbT0hMCx0aGlzLnpvb21TcGVlZD0xLHRoaXMuZW5hYmxlUm90YXRlPSEwLHRoaXMucm90YXRlU3BlZWQ9MSx0aGlzLmVuYWJsZVBhbj0hMCx0aGlzLnBhblNwZWVkPTEsdGhpcy5zY3JlZW5TcGFjZVBhbm5pbmc9ITAsdGhpcy5rZXlQYW5TcGVlZD03LHRoaXMuYXV0b1JvdGF0ZT0hMSx0aGlzLmF1dG9Sb3RhdGVTcGVlZD0yLHRoaXMua2V5cz17TEVGVDoiQXJyb3dMZWZ0IixVUDoiQXJyb3dVcCIsUklHSFQ6IkFycm93UmlnaHQiLEJPVFRPTToiQXJyb3dEb3duIn0sdGhpcy5tb3VzZUJ1dHRvbnM9e0xFRlQ6WjB0LlJPVEFURSxNSURETEU6WjB0LkRPTExZLFJJR0hUOlowdC5QQU59LHRoaXMudG91Y2hlcz17T05FOkowdC5ST1RBVEUsVFdPOkowdC5ET0xMWV9QQU59LHRoaXMudGFyZ2V0MD10aGlzLnRhcmdldC5jbG9uZSgpLHRoaXMucG9zaXRpb24wPXRoaXMub2JqZWN0LnBvc2l0aW9uLmNsb25lKCksdGhpcy56b29tMD10aGlzLm9iamVjdC56b29tLHRoaXMuX2RvbUVsZW1lbnRLZXlFdmVudHM9bnVsbCx0aGlzLmdldFBvbGFyQW5nbGU9ZnVuY3Rpb24oKXtyZXR1cm4gYS5waGl9LHRoaXMuZ2V0QXppbXV0aGFsQW5nbGU9ZnVuY3Rpb24oKXtyZXR1cm4gYS50aGV0YX0sdGhpcy5nZXREaXN0YW5jZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLm9iamVjdC5wb3NpdGlvbi5kaXN0YW5jZVRvKHRoaXMudGFyZ2V0KX0sdGhpcy5saXN0ZW5Ub0tleUV2ZW50cz1mdW5jdGlvbih0KXt0LmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLGopLHRoaXMuX2RvbUVsZW1lbnRLZXlFdmVudHM9dH0sdGhpcy5zYXZlU3RhdGU9ZnVuY3Rpb24oKXtuLnRhcmdldDAuY29weShuLnRhcmdldCksbi5wb3NpdGlvbjAuY29weShuLm9iamVjdC5wb3NpdGlvbiksbi56b29tMD1uLm9iamVjdC56b29tfSx0aGlzLnJlc2V0PWZ1bmN0aW9uKCl7bi50YXJnZXQuY29weShuLnRhcmdldDApLG4ub2JqZWN0LnBvc2l0aW9uLmNvcHkobi5wb3NpdGlvbjApLG4ub2JqZWN0Lnpvb209bi56b29tMCxuLm9iamVjdC51cGRhdGVQcm9qZWN0aW9uTWF0cml4KCksbi5kaXNwYXRjaEV2ZW50KFdyZSksbi51cGRhdGUoKSxyPWkuTk9ORX0sdGhpcy51cGRhdGU9KGZ1bmN0aW9uKCl7Y29uc3QgZT1uZXcgSDV0LGg9KG5ldyBCNXQpLnNldEZyb21Vbml0VmVjdG9ycyh0LnVwLG5ldyBINXQoMCwxLDApKSxkPWguY2xvbmUoKS5pbnZlcnQoKSxwPW5ldyBINXQsZj1uZXcgQjV0LG09MipNYXRoLlBJO3JldHVybiBmdW5jdGlvbiB0KCl7Y29uc3QgZz1uLm9iamVjdC5wb3NpdGlvbjtlLmNvcHkoZykuc3ViKG4udGFyZ2V0KSxlLmFwcGx5UXVhdGVybmlvbihoKSxhLnNldEZyb21WZWN0b3IzKGUpLG4uYXV0b1JvdGF0ZSYmcj09PWkuTk9ORSYmUygoZnVuY3Rpb24gXygpe3JldHVybiAyKk1hdGguUEkvNjAvNjAqbi5hdXRvUm90YXRlU3BlZWR9KSgpKSxuLmVuYWJsZURhbXBpbmc/KGEudGhldGErPXMudGhldGEqbi5kYW1waW5nRmFjdG9yLGEucGhpKz1zLnBoaSpuLmRhbXBpbmdGYWN0b3IpOihhLnRoZXRhKz1zLnRoZXRhLGEucGhpKz1zLnBoaSk7bGV0IHk9bi5taW5BemltdXRoQW5nbGUsdj1uLm1heEF6aW11dGhBbmdsZTtyZXR1cm4gaXNGaW5pdGUoeSkmJmlzRmluaXRlKHYpJiYoeTwtTWF0aC5QST95Kz1tOnk+TWF0aC5QSSYmKHktPW0pLHY8LU1hdGguUEk/dis9bTp2Pk1hdGguUEkmJih2LT1tKSxhLnRoZXRhPXk8PXY/TWF0aC5tYXgoeSxNYXRoLm1pbih2LGEudGhldGEpKTphLnRoZXRhPih5K3YpLzI/TWF0aC5tYXgoeSxhLnRoZXRhKTpNYXRoLm1pbih2LGEudGhldGEpKSxhLnBoaT1NYXRoLm1heChuLm1pblBvbGFyQW5nbGUsTWF0aC5taW4obi5tYXhQb2xhckFuZ2xlLGEucGhpKSksYS5tYWtlU2FmZSgpLGEucmFkaXVzKj1sLGEucmFkaXVzPU1hdGgubWF4KG4ubWluRGlzdGFuY2UsTWF0aC5taW4obi5tYXhEaXN0YW5jZSxhLnJhZGl1cykpLCEwPT09bi5lbmFibGVEYW1waW5nP24udGFyZ2V0LmFkZFNjYWxlZFZlY3RvcihjLG4uZGFtcGluZ0ZhY3Rvcik6bi50YXJnZXQuYWRkKGMpLGUuc2V0RnJvbVNwaGVyaWNhbChhKSxlLmFwcGx5UXVhdGVybmlvbihkKSxnLmNvcHkobi50YXJnZXQpLmFkZChlKSxuLm9iamVjdC5sb29rQXQobi50YXJnZXQpLCEwPT09bi5lbmFibGVEYW1waW5nPyhzLnRoZXRhKj0xLW4uZGFtcGluZ0ZhY3RvcixzLnBoaSo9MS1uLmRhbXBpbmdGYWN0b3IsYy5tdWx0aXBseVNjYWxhcigxLW4uZGFtcGluZ0ZhY3RvcikpOihzLnNldCgwLDAsMCksYy5zZXQoMCwwLDApKSxsPTEsISEodXx8cC5kaXN0YW5jZVRvU3F1YXJlZChuLm9iamVjdC5wb3NpdGlvbik+b3x8OCooMS1mLmRvdChuLm9iamVjdC5xdWF0ZXJuaW9uKSk+bykmJihuLmRpc3BhdGNoRXZlbnQoV3JlKSxwLmNvcHkobi5vYmplY3QucG9zaXRpb24pLGYuY29weShuLm9iamVjdC5xdWF0ZXJuaW9uKSx1PSExLCEwKX19KSgpLHRoaXMuZGlzcG9zZT1mdW5jdGlvbigpe24uZG9tRWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJjb250ZXh0bWVudSIsRyksbi5kb21FbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoInBvaW50ZXJkb3duIixCKSxuLmRvbUVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigicG9pbnRlcmNhbmNlbCIsViksbi5kb21FbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoIndoZWVsIixVKSxuLmRvbUVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigicG9pbnRlcm1vdmUiLEgpLG4uZG9tRWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJwb2ludGVydXAiLEYpLG51bGwhPT1uLl9kb21FbGVtZW50S2V5RXZlbnRzJiZuLl9kb21FbGVtZW50S2V5RXZlbnRzLnJlbW92ZUV2ZW50TGlzdGVuZXIoImtleWRvd24iLGopfTtjb25zdCBuPXRoaXMsaT17Tk9ORTotMSxST1RBVEU6MCxET0xMWToxLFBBTjoyLFRPVUNIX1JPVEFURTozLFRPVUNIX1BBTjo0LFRPVUNIX0RPTExZX1BBTjo1LFRPVUNIX0RPTExZX1JPVEFURTo2fTtsZXQgcj1pLk5PTkU7Y29uc3Qgbz0xZS02LGE9bmV3IERpZSxzPW5ldyBEaWU7bGV0IGw9MTtjb25zdCBjPW5ldyBINXQ7bGV0IHU9ITE7Y29uc3QgaD1uZXcgQzV0LGQ9bmV3IEM1dCxwPW5ldyBDNXQsZj1uZXcgQzV0LG09bmV3IEM1dCxnPW5ldyBDNXQsXz1uZXcgQzV0LHk9bmV3IEM1dCx2PW5ldyBDNXQsYj1bXSx4PXt9O2Z1bmN0aW9uIHcoKXtyZXR1cm4gTWF0aC5wb3coLjk1LG4uem9vbVNwZWVkKX1mdW5jdGlvbiBTKHQpe3MudGhldGEtPXR9ZnVuY3Rpb24gTSh0KXtzLnBoaS09dH1jb25zdCBFPShmdW5jdGlvbigpe2NvbnN0IHQ9bmV3IEg1dDtyZXR1cm4gZnVuY3Rpb24gZShuLGkpe3Quc2V0RnJvbU1hdHJpeENvbHVtbihpLDApLHQubXVsdGlwbHlTY2FsYXIoLW4pLGMuYWRkKHQpfX0pKCksVD0oZnVuY3Rpb24oKXtjb25zdCB0PW5ldyBINXQ7cmV0dXJuIGZ1bmN0aW9uIGUoaSxyKXshMD09PW4uc2NyZWVuU3BhY2VQYW5uaW5nP3Quc2V0RnJvbU1hdHJpeENvbHVtbihyLDEpOih0LnNldEZyb21NYXRyaXhDb2x1bW4ociwwKSx0LmNyb3NzVmVjdG9ycyhuLm9iamVjdC51cCx0KSksdC5tdWx0aXBseVNjYWxhcihpKSxjLmFkZCh0KX19KSgpLEM9KGZ1bmN0aW9uKCl7Y29uc3QgdD1uZXcgSDV0O3JldHVybiBmdW5jdGlvbiBlKGkscil7Y29uc3Qgbz1uLmRvbUVsZW1lbnQ7aWYobi5vYmplY3QuaXNQZXJzcGVjdGl2ZUNhbWVyYSl7dC5jb3B5KG4ub2JqZWN0LnBvc2l0aW9uKS5zdWIobi50YXJnZXQpO2xldCBlPXQubGVuZ3RoKCk7ZSo9TWF0aC50YW4obi5vYmplY3QuZm92LzIqTWF0aC5QSS8xODApLEUoMippKmUvby5jbGllbnRIZWlnaHQsbi5vYmplY3QubWF0cml4KSxUKDIqciplL28uY2xpZW50SGVpZ2h0LG4ub2JqZWN0Lm1hdHJpeCl9ZWxzZSBuLm9iamVjdC5pc09ydGhvZ3JhcGhpY0NhbWVyYT8oRShpKihuLm9iamVjdC5yaWdodC1uLm9iamVjdC5sZWZ0KS9uLm9iamVjdC56b29tL28uY2xpZW50V2lkdGgsbi5vYmplY3QubWF0cml4KSxUKHIqKG4ub2JqZWN0LnRvcC1uLm9iamVjdC5ib3R0b20pL24ub2JqZWN0Lnpvb20vby5jbGllbnRIZWlnaHQsbi5vYmplY3QubWF0cml4KSk6KGNvbnNvbGUud2FybigiV0FSTklORzogT3JiaXRDb250cm9scy5qcyBlbmNvdW50ZXJlZCBhbiB1bmtub3duIGNhbWVyYSB0eXBlIC0gcGFuIGRpc2FibGVkLiIpLG4uZW5hYmxlUGFuPSExKX19KSgpO2Z1bmN0aW9uIEEodCl7bi5vYmplY3QuaXNQZXJzcGVjdGl2ZUNhbWVyYT9sLz10Om4ub2JqZWN0LmlzT3J0aG9ncmFwaGljQ2FtZXJhPyhuLm9iamVjdC56b29tPU1hdGgubWF4KG4ubWluWm9vbSxNYXRoLm1pbihuLm1heFpvb20sbi5vYmplY3Quem9vbSp0KSksbi5vYmplY3QudXBkYXRlUHJvamVjdGlvbk1hdHJpeCgpLHU9ITApOihjb25zb2xlLndhcm4oIldBUk5JTkc6IE9yYml0Q29udHJvbHMuanMgZW5jb3VudGVyZWQgYW4gdW5rbm93biBjYW1lcmEgdHlwZSAtIGRvbGx5L3pvb20gZGlzYWJsZWQuIiksbi5lbmFibGVab29tPSExKX1mdW5jdGlvbiBrKHQpe24ub2JqZWN0LmlzUGVyc3BlY3RpdmVDYW1lcmE/bCo9dDpuLm9iamVjdC5pc09ydGhvZ3JhcGhpY0NhbWVyYT8obi5vYmplY3Quem9vbT1NYXRoLm1heChuLm1pblpvb20sTWF0aC5taW4obi5tYXhab29tLG4ub2JqZWN0Lnpvb20vdCkpLG4ub2JqZWN0LnVwZGF0ZVByb2plY3Rpb25NYXRyaXgoKSx1PSEwKTooY29uc29sZS53YXJuKCJXQVJOSU5HOiBPcmJpdENvbnRyb2xzLmpzIGVuY291bnRlcmVkIGFuIHVua25vd24gY2FtZXJhIHR5cGUgLSBkb2xseS96b29tIGRpc2FibGVkLiIpLG4uZW5hYmxlWm9vbT0hMSl9ZnVuY3Rpb24gTCh0KXtoLnNldCh0LmNsaWVudFgsdC5jbGllbnRZKX1mdW5jdGlvbiBQKHQpe2Yuc2V0KHQuY2xpZW50WCx0LmNsaWVudFkpfWZ1bmN0aW9uIE4oKXtpZigxPT09Yi5sZW5ndGgpaC5zZXQoYlswXS5wYWdlWCxiWzBdLnBhZ2VZKTtlbHNle2guc2V0KC41KihiWzBdLnBhZ2VYK2JbMV0ucGFnZVgpLC41KihiWzBdLnBhZ2VZK2JbMV0ucGFnZVkpKX19ZnVuY3Rpb24gSSgpe2lmKDE9PT1iLmxlbmd0aClmLnNldChiWzBdLnBhZ2VYLGJbMF0ucGFnZVkpO2Vsc2V7Zi5zZXQoLjUqKGJbMF0ucGFnZVgrYlsxXS5wYWdlWCksLjUqKGJbMF0ucGFnZVkrYlsxXS5wYWdlWSkpfX1mdW5jdGlvbiBSKCl7Y29uc3QgdD1iWzBdLnBhZ2VYLWJbMV0ucGFnZVgsZT1iWzBdLnBhZ2VZLWJbMV0ucGFnZVksbj1NYXRoLnNxcnQodCp0K2UqZSk7Xy5zZXQoMCxuKX1mdW5jdGlvbiBPKHQpe2lmKDE9PWIubGVuZ3RoKWQuc2V0KHQucGFnZVgsdC5wYWdlWSk7ZWxzZXtjb25zdCBlPVkodCk7ZC5zZXQoLjUqKHQucGFnZVgrZS54KSwuNSoodC5wYWdlWStlLnkpKX1wLnN1YlZlY3RvcnMoZCxoKS5tdWx0aXBseVNjYWxhcihuLnJvdGF0ZVNwZWVkKTtjb25zdCBlPW4uZG9tRWxlbWVudDtTKDIqTWF0aC5QSSpwLngvZS5jbGllbnRIZWlnaHQpLE0oMipNYXRoLlBJKnAueS9lLmNsaWVudEhlaWdodCksaC5jb3B5KGQpfWZ1bmN0aW9uIHoodCl7aWYoMT09PWIubGVuZ3RoKW0uc2V0KHQucGFnZVgsdC5wYWdlWSk7ZWxzZXtjb25zdCBlPVkodCk7bS5zZXQoLjUqKHQucGFnZVgrZS54KSwuNSoodC5wYWdlWStlLnkpKX1nLnN1YlZlY3RvcnMobSxmKS5tdWx0aXBseVNjYWxhcihuLnBhblNwZWVkKSxDKGcueCxnLnkpLGYuY29weShtKX1mdW5jdGlvbiBEKHQpe2NvbnN0IGU9WSh0KSxpPXQucGFnZVgtZS54LHI9dC5wYWdlWS1lLnksbz1NYXRoLnNxcnQoaSppK3Iqcik7eS5zZXQoMCxvKSx2LnNldCgwLE1hdGgucG93KHkueS9fLnksbi56b29tU3BlZWQpKSxBKHYueSksXy5jb3B5KHkpfWZ1bmN0aW9uIEIodCl7ITEhPT1uLmVuYWJsZWQmJigwPT09Yi5sZW5ndGgmJihuLmRvbUVsZW1lbnQuc2V0UG9pbnRlckNhcHR1cmUodC5wb2ludGVySWQpLG4uZG9tRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJwb2ludGVybW92ZSIsSCksbi5kb21FbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoInBvaW50ZXJ1cCIsRikpLChmdW5jdGlvbiBlKHQpe2IucHVzaCh0KX0pKHQpLCJ0b3VjaCI9PT10LnBvaW50ZXJUeXBlPyhmdW5jdGlvbiBvKHQpe3N3aXRjaChxKHQpLGIubGVuZ3RoKXtjYXNlIDE6c3dpdGNoKG4udG91Y2hlcy5PTkUpe2Nhc2UgSjB0LlJPVEFURTppZighMT09PW4uZW5hYmxlUm90YXRlKXJldHVybjtOKCkscj1pLlRPVUNIX1JPVEFURTticmVhaztjYXNlIEowdC5QQU46aWYoITE9PT1uLmVuYWJsZVBhbilyZXR1cm47SSgpLHI9aS5UT1VDSF9QQU47YnJlYWs7ZGVmYXVsdDpyPWkuTk9ORX1icmVhaztjYXNlIDI6c3dpdGNoKG4udG91Y2hlcy5UV08pe2Nhc2UgSjB0LkRPTExZX1BBTjppZighMT09PW4uZW5hYmxlWm9vbSYmITE9PT1uLmVuYWJsZVBhbilyZXR1cm47IShmdW5jdGlvbiB0KCl7bi5lbmFibGVab29tJiZSKCksbi5lbmFibGVQYW4mJkkoKX0pKCkscj1pLlRPVUNIX0RPTExZX1BBTjticmVhaztjYXNlIEowdC5ET0xMWV9ST1RBVEU6aWYoITE9PT1uLmVuYWJsZVpvb20mJiExPT09bi5lbmFibGVSb3RhdGUpcmV0dXJuOyEoZnVuY3Rpb24gZSgpe24uZW5hYmxlWm9vbSYmUigpLG4uZW5hYmxlUm90YXRlJiZOKCl9KSgpLHI9aS5UT1VDSF9ET0xMWV9ST1RBVEU7YnJlYWs7ZGVmYXVsdDpyPWkuTk9ORX1icmVhaztkZWZhdWx0OnI9aS5OT05FfXIhPT1pLk5PTkUmJm4uZGlzcGF0Y2hFdmVudChxcmUpfSkodCk6KGZ1bmN0aW9uIGEodCl7bGV0IGU7c3dpdGNoKHQuYnV0dG9uKXtjYXNlIDA6ZT1uLm1vdXNlQnV0dG9ucy5MRUZUO2JyZWFrO2Nhc2UgMTplPW4ubW91c2VCdXR0b25zLk1JRERMRTticmVhaztjYXNlIDI6ZT1uLm1vdXNlQnV0dG9ucy5SSUdIVDticmVhaztkZWZhdWx0OmU9LTF9c3dpdGNoKGUpe2Nhc2UgWjB0LkRPTExZOmlmKCExPT09bi5lbmFibGVab29tKXJldHVybjshKGZ1bmN0aW9uIGUodCl7Xy5zZXQodC5jbGllbnRYLHQuY2xpZW50WSl9KSh0KSxyPWkuRE9MTFk7YnJlYWs7Y2FzZSBaMHQuUk9UQVRFOmlmKHQuY3RybEtleXx8dC5tZXRhS2V5fHx0LnNoaWZ0S2V5KXtpZighMT09PW4uZW5hYmxlUGFuKXJldHVybjtQKHQpLHI9aS5QQU59ZWxzZXtpZighMT09PW4uZW5hYmxlUm90YXRlKXJldHVybjtMKHQpLHI9aS5ST1RBVEV9YnJlYWs7Y2FzZSBaMHQuUEFOOmlmKHQuY3RybEtleXx8dC5tZXRhS2V5fHx0LnNoaWZ0S2V5KXtpZighMT09PW4uZW5hYmxlUm90YXRlKXJldHVybjtMKHQpLHI9aS5ST1RBVEV9ZWxzZXtpZighMT09PW4uZW5hYmxlUGFuKXJldHVybjtQKHQpLHI9aS5QQU59YnJlYWs7ZGVmYXVsdDpyPWkuTk9ORX1yIT09aS5OT05FJiZuLmRpc3BhdGNoRXZlbnQocXJlKX0pKHQpKX1mdW5jdGlvbiBIKHQpeyExIT09bi5lbmFibGVkJiYoInRvdWNoIj09PXQucG9pbnRlclR5cGU/KGZ1bmN0aW9uIGUodCl7c3dpdGNoKHEodCkscil7Y2FzZSBpLlRPVUNIX1JPVEFURTppZighMT09PW4uZW5hYmxlUm90YXRlKXJldHVybjtPKHQpLG4udXBkYXRlKCk7YnJlYWs7Y2FzZSBpLlRPVUNIX1BBTjppZighMT09PW4uZW5hYmxlUGFuKXJldHVybjt6KHQpLG4udXBkYXRlKCk7YnJlYWs7Y2FzZSBpLlRPVUNIX0RPTExZX1BBTjppZighMT09PW4uZW5hYmxlWm9vbSYmITE9PT1uLmVuYWJsZVBhbilyZXR1cm47IShmdW5jdGlvbiBlKHQpe24uZW5hYmxlWm9vbSYmRCh0KSxuLmVuYWJsZVBhbiYmeih0KX0pKHQpLG4udXBkYXRlKCk7YnJlYWs7Y2FzZSBpLlRPVUNIX0RPTExZX1JPVEFURTppZighMT09PW4uZW5hYmxlWm9vbSYmITE9PT1uLmVuYWJsZVJvdGF0ZSlyZXR1cm47IShmdW5jdGlvbiBvKHQpe24uZW5hYmxlWm9vbSYmRCh0KSxuLmVuYWJsZVJvdGF0ZSYmTyh0KX0pKHQpLG4udXBkYXRlKCk7YnJlYWs7ZGVmYXVsdDpyPWkuTk9ORX19KSh0KTooZnVuY3Rpb24gbyh0KXtpZighMT09PW4uZW5hYmxlZClyZXR1cm47c3dpdGNoKHIpe2Nhc2UgaS5ST1RBVEU6aWYoITE9PT1uLmVuYWJsZVJvdGF0ZSlyZXR1cm47IShmdW5jdGlvbiBlKHQpe2Quc2V0KHQuY2xpZW50WCx0LmNsaWVudFkpLHAuc3ViVmVjdG9ycyhkLGgpLm11bHRpcGx5U2NhbGFyKG4ucm90YXRlU3BlZWQpO2NvbnN0IGU9bi5kb21FbGVtZW50O1MoMipNYXRoLlBJKnAueC9lLmNsaWVudEhlaWdodCksTSgyKk1hdGguUEkqcC55L2UuY2xpZW50SGVpZ2h0KSxoLmNvcHkoZCksbi51cGRhdGUoKX0pKHQpO2JyZWFrO2Nhc2UgaS5ET0xMWTppZighMT09PW4uZW5hYmxlWm9vbSlyZXR1cm47IShmdW5jdGlvbiByKHQpe3kuc2V0KHQuY2xpZW50WCx0LmNsaWVudFkpLHYuc3ViVmVjdG9ycyh5LF8pLHYueT4wP0EodygpKTp2Lnk8MCYmayh3KCkpLF8uY29weSh5KSxuLnVwZGF0ZSgpfSkodCk7YnJlYWs7Y2FzZSBpLlBBTjppZighMT09PW4uZW5hYmxlUGFuKXJldHVybjshKGZ1bmN0aW9uIG8odCl7bS5zZXQodC5jbGllbnRYLHQuY2xpZW50WSksZy5zdWJWZWN0b3JzKG0sZikubXVsdGlwbHlTY2FsYXIobi5wYW5TcGVlZCksQyhnLngsZy55KSxmLmNvcHkobSksbi51cGRhdGUoKX0pKHQpfX0pKHQpKX1mdW5jdGlvbiBGKHQpeyExIT09bi5lbmFibGVkJiYoInRvdWNoIj09PXQucG9pbnRlclR5cGU/KGZ1bmN0aW9uIGUodCl7bi5kaXNwYXRjaEV2ZW50KFlyZSkscj1pLk5PTkV9KSgpOihmdW5jdGlvbiBvKHQpe24uZGlzcGF0Y2hFdmVudChZcmUpLHI9aS5OT05FfSkoKSxXKHQpLDA9PT1iLmxlbmd0aCYmKG4uZG9tRWxlbWVudC5yZWxlYXNlUG9pbnRlckNhcHR1cmUodC5wb2ludGVySWQpLG4uZG9tRWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJwb2ludGVybW92ZSIsSCksbi5kb21FbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoInBvaW50ZXJ1cCIsRikpKX1mdW5jdGlvbiBWKHQpe1codCl9ZnVuY3Rpb24gVSh0KXshMT09PW4uZW5hYmxlZHx8ITE9PT1uLmVuYWJsZVpvb218fHIhPT1pLk5PTkUmJnIhPT1pLlJPVEFURXx8KHQucHJldmVudERlZmF1bHQoKSxuLmRpc3BhdGNoRXZlbnQocXJlKSwoZnVuY3Rpb24gZSh0KXt0LmRlbHRhWTwwP2sodygpKTp0LmRlbHRhWT4wJiZBKHcoKSksbi51cGRhdGUoKX0pKHQpLG4uZGlzcGF0Y2hFdmVudChZcmUpKX1mdW5jdGlvbiBqKHQpeyExIT09bi5lbmFibGVkJiYhMSE9PW4uZW5hYmxlUGFuJiYoZnVuY3Rpb24gZSh0KXtsZXQgZT0hMTtzd2l0Y2godC5jb2RlKXtjYXNlIG4ua2V5cy5VUDpDKDAsbi5rZXlQYW5TcGVlZCksZT0hMDticmVhaztjYXNlIG4ua2V5cy5CT1RUT006QygwLC1uLmtleVBhblNwZWVkKSxlPSEwO2JyZWFrO2Nhc2Ugbi5rZXlzLkxFRlQ6QyhuLmtleVBhblNwZWVkLDApLGU9ITA7YnJlYWs7Y2FzZSBuLmtleXMuUklHSFQ6Qygtbi5rZXlQYW5TcGVlZCwwKSxlPSEwfWUmJih0LnByZXZlbnREZWZhdWx0KCksbi51cGRhdGUoKSl9KSh0KX1mdW5jdGlvbiBHKHQpeyExIT09bi5lbmFibGVkJiZ0LnByZXZlbnREZWZhdWx0KCl9ZnVuY3Rpb24gVyh0KXtkZWxldGUgeFt0LnBvaW50ZXJJZF07Zm9yKGxldCBlPTA7ZTxiLmxlbmd0aDtlKyspaWYoYltlXS5wb2ludGVySWQ9PXQucG9pbnRlcklkKXJldHVybiB2b2lkIGIuc3BsaWNlKGUsMSl9ZnVuY3Rpb24gcSh0KXtsZXQgZT14W3QucG9pbnRlcklkXTt2b2lkIDA9PT1lJiYoZT1uZXcgQzV0LHhbdC5wb2ludGVySWRdPWUpLGUuc2V0KHQucGFnZVgsdC5wYWdlWSl9ZnVuY3Rpb24gWSh0KXtyZXR1cm4geFsodC5wb2ludGVySWQ9PT1iWzBdLnBvaW50ZXJJZD9iWzFdOmJbMF0pLnBvaW50ZXJJZF19bi5kb21FbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNvbnRleHRtZW51IixHKSxuLmRvbUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigicG9pbnRlcmRvd24iLEIpLG4uZG9tRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJwb2ludGVyY2FuY2VsIixWKSxuLmRvbUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigid2hlZWwiLFUse3Bhc3NpdmU6ITF9KSx0aGlzLnVwZGF0ZSgpfX1jbGFzcyAkcmUgZXh0ZW5kcyBlNXR7Y29uc3RydWN0b3IodCl7c3VwZXIoKSx0aGlzLl9sYXN0TWVzaD1udWxsLHRoaXMuX2Nsb2NrPW5ldyBvaWUsdGhpcy5fY2FudmFzU2l6ZT1udWxsLHRoaXMuX2xheWVyc0NvbmZpZz1udWxsLHRoaXMuX3J1bkNvbG9yPXR9X2lzT2JqZWN0KHQpe3JldHVybiJvYmplY3QiPT10eXBlb2YgdCYmbnVsbCE9dCYmIUFycmF5LmlzQXJyYXkodCl9X2FwcGx5RGVmYXVsdHModCxlKXtsZXQgbj17fTtjb25zdCBpPVt0LGVdO2ZvcihsZXQgdD0wO3Q8aS5sZW5ndGg7dCsrKXtjb25zdCBlPWlbdF07Zm9yKGxldCB0IGluIGUpe2NvbnN0IGk9dCBpbiBuO3RoaXMuX2lzT2JqZWN0KGVbdF0pP25bdF09dGhpcy5fYXBwbHlEZWZhdWx0cyhuW3RdfHx7fSxlW3RdKTppfHwoblt0XT1lW3RdKX19cmV0dXJuIG59X2NyZWF0ZUxheWVycygpe2lmKHRoaXMuX2xheWVyc0NvbmZpZyYmdGhpcy5fc2NlbmUmJnRoaXMuX2xhc3RNZXNoKXtpZih0aGlzLl9sYXllcnNDb25maWcuc2hvd0JvdW5kaW5nQm94KXt2YXIgdD1uZXcgc3JlKHRoaXMuX2xhc3RNZXNoLG5ldyBzNHQoInJnYigwLCAwLCAyNTUpIikpO3RoaXMuX3NjZW5lLmFkZCh0KX1pZih0aGlzLl9sYXllcnNDb25maWcuc2hvd0F4ZXMpe3ZhciBlPW5ldyBocmUoNSk7dGhpcy5fc2NlbmUuYWRkKGUpfX19c2V0TGF5ZXJzQ29uZmlnKHQpe3RoaXMuX2xheWVyc0NvbmZpZz10aGlzLl9hcHBseURlZmF1bHRzKHQsdGhpcy5fbGF5ZXJzQ29uZmlnfHx7fSl9X2NyZWF0ZVdvcmxkKHQsZSl7aWYodGhpcy5pc1JlYWR5KCkpcmV0dXJuO3RoaXMuX3NjZW5lPW5ldyBjN3Q7dmFyIG49bmV3IG1yZVt0LmNhbWVyYS5jbHNdKHQuY2FtZXJhLmZvdix0aGlzLl9jYW52YXNTaXplLndpZHRoL3RoaXMuX2NhbnZhc1NpemUuaGVpZ2h0LHQuY2FtZXJhLm5lYXIsdC5jYW1lcmEuZmFyKTt0aGlzLl9jYW1lcmE9bix0aGlzLmluaXRDYW1lcmFQb3NpdGlvbj1udWxsLHQuY2FtZXJhLnBvc2l0aW9uJiYodGhpcy5pbml0Q2FtZXJhUG9zaXRpb249KG5ldyBINXQpLmZyb21BcnJheSh0LmNhbWVyYS5wb3NpdGlvbikpLHRoaXMuaW5pdENhbWVyYUxvb2tBdD1udWxsLHQuY2FtZXJhLmxvb2tBdCYmKHRoaXMuaW5pdENhbWVyYUxvb2tBdD0obmV3IEg1dCkuZnJvbUFycmF5KHQuY2FtZXJhLmxvb2tBdCkpO3ZhciBpPW5ldyBYcmUobixlKTtjb25zdCByPWk7ci5sb29rU3BlZWQ9LjQsci5tb3ZlbWVudFNwZWVkPTIwLHIubm9GbHk9ITAsci5sb29rVmVydGljYWw9ITAsci5jb25zdHJhaW5WZXJ0aWNhbD0hMCxyLnZlcnRpY2FsTWluPTEsci52ZXJ0aWNhbE1heD0yLHIuYWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdlIix0aGlzLl9vbkNhbWVyYVBvc2l0aW9uQ2hhbmdlLmJpbmQodGhpcykpLHRoaXMuX2NhbWVyYUNvbnRyb2xzPWksdGhpcy5fcmVuZGVyZXI9bmV3IG83dCh7YW50aWFsaWFzOiEwfSksdGhpcy5fcmVuZGVyZXIuc2V0UGl4ZWxSYXRpbyh3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbyksdGhpcy5fcmVuZGVyZXIuc2V0U2l6ZSh0aGlzLl9jYW52YXNTaXplLndpZHRoLHRoaXMuX2NhbnZhc1NpemUuaGVpZ2h0KSx0aGlzLl9yZW5kZXJlci5zZXRDbGVhckNvbG9yKDE2Nzc3MjE1LDEpfV9jbGVhclNjZW5lKCl7Zm9yKDt0aGlzLl9zY2VuZS5jaGlsZHJlbi5sZW5ndGg+MDspdGhpcy5fc2NlbmUucmVtb3ZlKHRoaXMuX3NjZW5lLmNoaWxkcmVuWzBdKX1nZXRSZW5kZXJlcigpe3JldHVybiB0aGlzLl9yZW5kZXJlcn1nZXRDYW1lcmFDb250cm9scygpe3JldHVybiB0aGlzLl9jYW1lcmFDb250cm9sc31pc1JlYWR5KCl7cmV0dXJuISF0aGlzLl9jYW1lcmEmJiEhdGhpcy5fY2FtZXJhQ29udHJvbHN9Z2V0Q2FtZXJhUG9zaXRpb24oKXtyZXR1cm57ZmFyOnRoaXMuX2NhbWVyYS5mYXIscG9zaXRpb246dGhpcy5fY2FtZXJhLnBvc2l0aW9uLmNsb25lKCksdGFyZ2V0OnRoaXMuX2NhbWVyYUNvbnRyb2xzLnRhcmdldC5jbG9uZSgpfX1zZXRDYW52YXNTaXplKHQpe3RoaXMuX2NhbnZhc1NpemU9dH1kcmF3KCl7dGhpcy5fYW5pbWF0aW9uRnJhbWVJbmRleCYmY2FuY2VsQW5pbWF0aW9uRnJhbWUodGhpcy5fYW5pbWF0aW9uRnJhbWVJbmRleCksdGhpcy5fY2FtZXJhLmFzcGVjdD10aGlzLl9jYW52YXNTaXplLndpZHRoL3RoaXMuX2NhbnZhc1NpemUuaGVpZ2h0LHRoaXMuX2NhbWVyYS51cGRhdGVQcm9qZWN0aW9uTWF0cml4KCksdGhpcy5fcmVuZGVyZXIuc2V0U2l6ZSh0aGlzLl9jYW52YXNTaXplLndpZHRoLHRoaXMuX2NhbnZhc1NpemUuaGVpZ2h0KTtjb25zdCB0PWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5fY2xvY2suZ2V0RGVsdGEoKTt0aGlzLl9jYW1lcmFDb250cm9scy51cGRhdGUoZSksdGhpcy5fYW5pbWF0aW9uRnJhbWVJbmRleD1yZXF1ZXN0QW5pbWF0aW9uRnJhbWUodCksdGhpcy5fcmVuZGVyZXIucmVuZGVyKHRoaXMuX3NjZW5lLHRoaXMuX2NhbWVyYSl9LmJpbmQodGhpcyk7dCgpfXVwZGF0ZVNjZW5lKHQsZSl7bGV0IG49e307ImNvbmZpZyJpbiB0JiZ0LmNvbmZpZyYmKG49SlNPTi5wYXJzZSh0LmNvbmZpZykpLHRoaXMuZGlzcGF0Y2hFdmVudCh7dHlwZToiYmVmb3JlVXBkYXRlU2NlbmUifSk7bj10aGlzLl9hcHBseURlZmF1bHRzKG4se2NhbWVyYTp7Y2xzOiJQZXJzcGVjdGl2ZUNhbWVyYSIsZm92Ojc1LG5lYXI6LjEsZmFyOjFlM30sbGlnaHRzOlt7Y2xzOiJBbWJpZW50TGlnaHQiLGNvbG9yOiIjZmZmZmZmIixpbnRlbnNpdHk6Ljc1fSx7Y2xzOiJEaXJlY3Rpb25hbExpZ2h0Iixjb2xvcjoiI2ZmZmZmZiIsaW50ZW5zaXR5Oi43NSxwb3NpdGlvbjpbMCwtMSwyXX1dfSksdGhpcy5fY3JlYXRlV29ybGQobixlKSx0aGlzLl9jbGVhclNjZW5lKCksdGhpcy5fY3JlYXRlTGlnaHRzKHRoaXMuX3NjZW5lLG4pLHRoaXMuX2NyZWF0ZUdlb21ldHJ5KHQsbiksdGhpcy5fY3JlYXRlTGF5ZXJzKCksdGhpcy5kcmF3KCl9cmVzZXRWaWV3KHQpe2lmKCF0aGlzLmlzUmVhZHkoKSlyZXR1cm47bGV0IGU7dGhpcy5fY2FtZXJhQ29udHJvbHMucmVzZXQoKSwhdCYmdGhpcy5fbGFzdE1lc2gmJihlPXRoaXMuX2xhc3RNZXNoKSxlJiYodGhpcy5fZml0T2JqZWN0VG9WaWV3cG9ydChlKSx0aGlzLl9sYXN0TWVzaD1lKSx0aGlzLl9jYW1lcmFDb250cm9scy51cGRhdGUoKX1fY3JlYXRlR2VvbWV0cnkodCxlKXtjb25zdCBuPXQubWVzaDtuLnZlcnRpY2VzJiZuLmZhY2VzJiZuLmZhY2VzLmxlbmd0aD90aGlzLl9jcmVhdGVNZXNoKG4sZSk6dGhpcy5fY3JlYXRlUG9pbnRDbG91ZChuLGUpfV9jcmVhdGVQb2ludENsb3VkKHQsZSl7Y29uc3Qgbj10LnZlcnRpY2VzLGk9dC5jb2xvcnM7bGV0IHI9e21hdGVyaWFsOntjbHM6IlBvaW50c01hdGVyaWFsIixzaXplOi4wMDV9fTtpJiZpLmxlbmd0aD09bi5sZW5ndGg/ci5tYXRlcmlhbC52ZXJ0ZXhDb2xvcnM9ITA6ci5tYXRlcmlhbC5jb2xvcj10aGlzLl9ydW5Db2xvcjtjb25zdCBvPXRoaXMuX2FwcGx5RGVmYXVsdHMoZSxyKSxhPW5ldyBONHQscz1uZXcgRmxvYXQzMkFycmF5KG4uZmxhdCgpKTtpZihhLnNldEF0dHJpYnV0ZSgicG9zaXRpb24iLG5ldyBoNHQocywzKSksaSYmaS5sZW5ndGg9PW4ubGVuZ3RoKXtjb25zdCB0PW5ldyBGbG9hdDMyQXJyYXkoaS5mbGF0KCkpO2ZvcihsZXQgZT0wO2U8dC5sZW5ndGg7ZSsrKXRbZV09dFtlXS8yNTU7YS5zZXRBdHRyaWJ1dGUoImNvbG9yIixuZXcgaDR0KHQsMykpfXZhciBsPW5ldyBtcmVbby5tYXRlcmlhbC5jbHNdKG8ubWF0ZXJpYWwpLGM9bmV3IHV0ZShhLGwpO3RoaXMuX3NjZW5lLmFkZChjKSx0aGlzLl9sYXN0TWVzaD1jfXNldENhbWVyYVZpZXdwb2ludCh0LGUsbil7dGhpcy5fc2lsZW50PSEwLHRoaXMuX2NhbWVyYS5mYXI9ZSx0aGlzLl9jYW1lcmEucG9zaXRpb24uc2V0KHQueCx0LnksdC56KSx0aGlzLl9jYW1lcmEubG9va0F0KG4uY2xvbmUoKSksdGhpcy5fY2FtZXJhLnVwZGF0ZVByb2plY3Rpb25NYXRyaXgoKSx0aGlzLl9jYW1lcmFDb250cm9scy50YXJnZXQ9bi5jbG9uZSgpLHRoaXMuX2NhbWVyYUNvbnRyb2xzLnVwZGF0ZSgpLHRoaXMuX3NpbGVudD0hMX1fb25DYW1lcmFQb3NpdGlvbkNoYW5nZSh0KXt0aGlzLl9zaWxlbnR8fHRoaXMuZGlzcGF0Y2hFdmVudCh7dHlwZToiY2FtZXJhUG9zaXRpb25DaGFuZ2UiLGV2ZW50OnR9KX1fZml0T2JqZWN0VG9WaWV3cG9ydCh0KXt2YXIgZSxuO2NvbnN0IGk9bmV3IFU1dCxyPW5ldyBINXQsbz1uZXcgSDV0O2kuc2V0RnJvbU9iamVjdCh0KSxpLmdldENlbnRlcihyKSxpLmdldFNpemUobyk7Y29uc3QgYT1NYXRoLm1heChvLngsby55LG8ueikscz10aGlzLl9jYW1lcmEuZm92KihNYXRoLlBJLzE4MCk7bGV0IGw9MS4yNSpNYXRoLmFicyhhLygyKk1hdGgudGFuKHMvMikpKTtjb25zdCBjPWkubWluLnosdT1jPDA/LWMrbDpsLWMsaD1udWxsIT09KGU9dGhpcy5pbml0Q2FtZXJhUG9zaXRpb24pJiZ2b2lkIDAhPT1lP2U6bmV3IEg1dChyLngsci55LGwpLGQ9bnVsbCE9PShuPXRoaXMuaW5pdENhbWVyYUxvb2tBdCkmJnZvaWQgMCE9PW4/bjpyO3RoaXMuc2V0Q2FtZXJhVmlld3BvaW50KGgsMyp1LGQpfV9jcmVhdGVNZXNoKHQsZSl7Y29uc3Qgbj10LnZlcnRpY2VzLGk9dC5mYWNlcyxyPXQuY29sb3JzLG89dGhpcy5fYXBwbHlEZWZhdWx0cyhlLHttYXRlcmlhbDp7Y2xzOiJNZXNoU3RhbmRhcmRNYXRlcmlhbCIsY29sb3I6IiNhMGEwYTAiLHJvdWdobmVzczoxLG1ldGFsbmVzczowfX0pLGE9bmV3IE40dCxzPW5ldyBGbG9hdDMyQXJyYXkobi5mbGF0KCkpO2Euc2V0QXR0cmlidXRlKCJwb3NpdGlvbiIsbmV3IGg0dChzLDMpKTtjb25zdCBsPW5ldyBVaW50MTZBcnJheShpLmZsYXQoKSk7aWYociYmci5sZW5ndGgpe2NvbnN0IHQ9ci5mbGF0KCk7Zm9yKGxldCBlPTA7ZTx0Lmxlbmd0aDtlKyspdFtlXT10W2VdLzI1NTthLnNldEF0dHJpYnV0ZSgiY29sb3IiLG5ldyBoNHQobmV3IEZsb2F0MzJBcnJheSh0KSwzKSksby5tYXRlcmlhbD1vLm1hdGVyaWFsfHx7fSxvLm1hdGVyaWFsLnZlcnRleENvbG9ycz0hMH1hLmNlbnRlcigpLGEuY29tcHV0ZUJvdW5kaW5nU3BoZXJlKCksYS5zZXRJbmRleChuZXcgaDR0KGwsMSkpLGEuY29tcHV0ZVZlcnRleE5vcm1hbHMoKTtsZXQgYz1uZXcgbXJlW28ubWF0ZXJpYWwuY2xzXShvLm1hdGVyaWFsKSx1PW5ldyBLNHQoYSxjKTt1LmNhc3RTaGFkb3c9ITAsdS5yZWNlaXZlU2hhZG93PSEwLHRoaXMuX3NjZW5lLmFkZCh1KSx0aGlzLl9sYXN0TWVzaD11fV9jcmVhdGVMaWdodHModCxlKXtmb3IobGV0IG49MDtuPGUubGlnaHRzLmxlbmd0aDtuKyspe2NvbnN0IGk9ZS5saWdodHNbbl07bGV0IHI9bmV3IG1yZVtpLmNsc10oaS5jb2xvcixpLmludGVuc2l0eSk7aS5wb3NpdGlvbiYmci5wb3NpdGlvbi5zZXQoaS5wb3NpdGlvblswXSxpLnBvc2l0aW9uWzFdLGkucG9zaXRpb25bMl0pLHQuYWRkKHIpfX19bGV0IEtyZT1jbGFzcyBleHRlbmRzKGNyKHdlKSl7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMuc2VsZWN0ZWRWaWV3PSJhbGwiLHRoaXMuYWN0aXZlPSExLHRoaXMuX2NvbG9yU2NhbGVGdW5jdGlvbj1fTyx0aGlzLl9zdGVwcz1bXSx0aGlzLl9tZXNoVmlld2VyQXR0YWNoZWQ9ITEsdGhpcy5fY2FtZXJhUG9zaXRpb25Jbml0aWFsaXplZD0hMSx0aGlzLl9pc01lc2hMb2FkaW5nPSExfWdldCBfcnVuQ29sb3IoKXtyZXR1cm4gdGhpcy5fY29sb3JTY2FsZUZ1bmN0aW9uKHRoaXMucnVuKX1jb25uZWN0ZWRDYWxsYmFjaygpe3N1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCksdGhpcy5fZGF0YVByb3ZpZGVyPW5ldyAkMHQodGhpcy5yZXF1ZXN0TWFuYWdlcik7Y29uc3QgdD1uZXcgJHJlKHRoaXMuX3J1bkNvbG9yKTt0LmFkZEV2ZW50TGlzdGVuZXIoImJlZm9yZVVwZGF0ZVNjZW5lIix0aGlzLl91cGRhdGVDYW52YXNTaXplLmJpbmQodGhpcykpLHQuYWRkRXZlbnRMaXN0ZW5lcigiY2FtZXJhUG9zaXRpb25DaGFuZ2UiLHRoaXMuX29uQ2FtZXJhUG9zaXRpb25DaGFuZ2UuYmluZCh0aGlzKSksdGhpcy5fbWVzaFZpZXdlcj10fXJlbG9hZCgpe3RoaXMuYWN0aXZlJiZ0aGlzLl9kYXRhUHJvdmlkZXImJih0aGlzLl9pc01lc2hMb2FkaW5nPSEwLHRoaXMuX2RhdGFQcm92aWRlci5yZWxvYWQodGhpcy5ydW4sdGhpcy50YWcsdGhpcy5zYW1wbGUpLnRoZW4oKHQ9Pnt0JiYodGhpcy5fc3RlcHM9dCx0aGlzLl9zdGVwSW5kZXg9dC5sZW5ndGgtMSl9KSkuY2F0Y2goKHQ9PntpZighdHx8IXQuY29kZXx8dC5jb2RlIT1xMHQuQ0FOQ0VMTEVEKXRocm93IHQ9dHx8IlJlc3BvbnNlIHByb2Nlc3NpbmcgZmFpbGVkLiIsbmV3IEVycm9yKHQpfSkpKX1fdXBkYXRlU2NlbmUoKXtjb25zdCB0PXRoaXMuX2N1cnJlbnRTdGVwO3QmJnQubWVzaCYmKHRoaXMuX21lc2hWaWV3ZXIudXBkYXRlU2NlbmUodCx0aGlzKSx0aGlzLl9jYW1lcmFQb3NpdGlvbkluaXRpYWxpemVkfHwodGhpcy5fbWVzaFZpZXdlci5yZXNldFZpZXcoKSx0aGlzLl9jYW1lcmFQb3NpdGlvbkluaXRpYWxpemVkPSEwKSx0aGlzLl9tZXNoVmlld2VyQXR0YWNoZWR8fCh0aGlzLnNoYWRvd1Jvb3QuYXBwZW5kQ2hpbGQodGhpcy5fbWVzaFZpZXdlci5nZXRSZW5kZXJlcigpLmRvbUVsZW1lbnQpLHRoaXMuX21lc2hWaWV3ZXJBdHRhY2hlZD0hMCkpfV9kZWJvdW5jZWRGZXRjaE1lc2goKXt0aGlzLmRlYm91bmNlKCJmZXRjaE1lc2giLCgoKT0+dGhpcy5fbWF5YmVGZXRjaE1lc2goKSksMTAwKX1fbWF5YmVGZXRjaE1lc2goKXtyZXR1cm4gbih0aGlzLHZvaWQgMCx2b2lkIDAsKGZ1bmN0aW9uKigpe2NvbnN0IHQ9dGhpcy5fY3VycmVudFN0ZXA7aWYodCYmIXQubWVzaCYmIXQubWVzaEZldGNoaW5nKXt0Lm1lc2hGZXRjaGluZz0hMCx0aGlzLl9pc01lc2hMb2FkaW5nPSEwO3RyeXtjb25zdCBlPXlpZWxkIHRoaXMuX2RhdGFQcm92aWRlci5mZXRjaERhdGEodCx0aGlzLnJ1bix0aGlzLnRhZyx0aGlzLnNhbXBsZSk7dC5tZXNoPWVbMF0sdGhpcy5ub3RpZnlQYXRoKCJfY3VycmVudFN0ZXAubWVzaCIpfWNhdGNoKHQpe2lmKCF0fHwhdC5jb2RlfHx0LmNvZGUhPXEwdC5DQU5DRUxMRUQpdGhyb3cgdD10fHwiUmVzcG9uc2UgcHJvY2Vzc2luZyBmYWlsZWQuIixuZXcgRXJyb3IodCl9ZmluYWxseXt0aGlzLl9pc01lc2hMb2FkaW5nPSExLHQubWVzaEZldGNoaW5nPSExfX19KSl9X29uQ2FtZXJhUG9zaXRpb25DaGFuZ2UoKXtpZighdGhpcy5fbWVzaFZpZXdlci5pc1JlYWR5KCkpcmV0dXJuO2NvbnN0IHQ9bmV3IEN1c3RvbUV2ZW50KCJjYW1lcmEtcG9zaXRpb24tY2hhbmdlIix7ZGV0YWlsOnRoaXMuX21lc2hWaWV3ZXIuZ2V0Q2FtZXJhUG9zaXRpb24oKX0pO3RoaXMuZGlzcGF0Y2hFdmVudCh0KX1zZXRDYW1lcmFWaWV3cG9pbnQodCxlLG4pe3RoaXMuX21lc2hWaWV3ZXIuc2V0Q2FtZXJhVmlld3BvaW50KHQsZSxuKX1fdXBkYXRlQ2FudmFzU2l6ZSgpe2NvbnN0IHQ9dGhpcy5vZmZzZXRXaWR0aCxlPXQsbj10aGlzLiQkKCIudGYtbWVzaC1sb2FkZXItaGVhZGVyIikub2Zmc2V0SGVpZ2h0O3RoaXMuX21lc2hWaWV3ZXIuc2V0Q2FudmFzU2l6ZSh7d2lkdGg6dCxoZWlnaHQ6ZS1ufSl9cmVkcmF3KCl7dGhpcy5fdXBkYXRlQ2FudmFzU2l6ZSgpLHRoaXMuaXNDb25uZWN0ZWQmJnRoaXMuX21lc2hWaWV3ZXIuZHJhdygpfV9oYXNBdExlYXN0T25lU3RlcCh0KXtyZXR1cm4hIXQmJnQubGVuZ3RoPjB9X2hhc011bHRpcGxlU3RlcHModCl7cmV0dXJuISF0JiZ0Lmxlbmd0aD4xfWdldCBfY3VycmVudFN0ZXAoKXtyZXR1cm4gdGhpcy5fc3RlcHNbdGhpcy5fc3RlcEluZGV4XXx8bnVsbH1nZXQgX3N0ZXBWYWx1ZSgpe2NvbnN0IHQ9dGhpcy5fY3VycmVudFN0ZXA7cmV0dXJuIHQ/dC5zdGVwOjB9Z2V0IF9jdXJyZW50V2FsbFRpbWUoKXtjb25zdCB0PXRoaXMuX2N1cnJlbnRTdGVwO3JldHVybiB0P1NPKHQud2FsbF90aW1lKToiIn1fZ2V0TWF4U3RlcEluZGV4KHQpe3JldHVybiB0Lmxlbmd0aC0xfV9nZXRTYW1wbGVUZXh0KHQpe3JldHVybiBTdHJpbmcodCsxKX1faGFzTXVsdGlwbGVTYW1wbGVzKHQpe3JldHVybiB0PjF9X3VwZGF0ZVZpZXcoKXt0aGlzLl9tZXNoVmlld2VyJiYiYWxsIj09dGhpcy5zZWxlY3RlZFZpZXcmJnRoaXMuX21lc2hWaWV3ZXIucmVzZXRWaWV3KCl9dG9Mb2NhbGVTdHJpbmdfKHQpe3JldHVybiB0LnRvTG9jYWxlU3RyaW5nKCl9fTtLcmUudGVtcGxhdGU9eGVgCiAgICA8dGYtY2FyZC1oZWFkaW5nIGNvbG9yPSJbW19ydW5Db2xvcl1dIiBjbGFzcz0idGYtbWVzaC1sb2FkZXItaGVhZGVyIj4KICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19oYXNNdWx0aXBsZVNhbXBsZXMob2ZTYW1wbGVzKV1dIj4KICAgICAgICA8ZGl2PnNhbXBsZTogW1tfZ2V0U2FtcGxlVGV4dChzYW1wbGUpXV0gb2YgW1tvZlNhbXBsZXNdXTwvZGl2PgogICAgICA8L3RlbXBsYXRlPgogICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbX2hhc0F0TGVhc3RPbmVTdGVwKF9zdGVwcyldXSI+CiAgICAgICAgPGRpdiBjbGFzcz0iaGVhZGluZy1yb3ciPgogICAgICAgICAgPGRpdiBjbGFzcz0iaGVhZGluZy1sYWJlbCI+CiAgICAgICAgICAgIHN0ZXAKICAgICAgICAgICAgPHNwYW4gc3R5bGU9ImZvbnQtd2VpZ2h0OiBib2xkIgogICAgICAgICAgICAgID5bW3RvTG9jYWxlU3RyaW5nXyhfc3RlcFZhbHVlKV1dPC9zcGFuCiAgICAgICAgICAgID4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0iaGVhZGluZy1sYWJlbCBoZWFkaW5nLXJpZ2h0Ij4KICAgICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19jdXJyZW50V2FsbFRpbWVdXSI+CiAgICAgICAgICAgICAgW1tfY3VycmVudFdhbGxUaW1lXV0KICAgICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0ibGFiZWwgcmlnaHQiPgogICAgICAgICAgICA8cGFwZXItc3Bpbm5lci1saXRlIGFjdGl2ZSBoaWRkZW4kPSJbWyFfaXNNZXNoTG9hZGluZ11dIj4KICAgICAgICAgICAgPC9wYXBlci1zcGlubmVyLWxpdGU+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgPC90ZW1wbGF0ZT4KICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19oYXNNdWx0aXBsZVN0ZXBzKF9zdGVwcyldXSI+CiAgICAgICAgPGRpdj4KICAgICAgICAgIDxwYXBlci1zbGlkZXIKICAgICAgICAgICAgaWQ9InN0ZXBzIgogICAgICAgICAgICBpbW1lZGlhdGUtdmFsdWU9Int7X3N0ZXBJbmRleH19IgogICAgICAgICAgICBtYXg9IltbX2dldE1heFN0ZXBJbmRleChfc3RlcHMpXV0iCiAgICAgICAgICAgIG1heC1tYXJrZXJzPSJbW19nZXRNYXhTdGVwSW5kZXgoX3N0ZXBzKV1dIgogICAgICAgICAgICBzbmFwcwogICAgICAgICAgICBzdGVwPSIxIgogICAgICAgICAgICB2YWx1ZT0ie3tfc3RlcEluZGV4fX0iCiAgICAgICAgICA+PC9wYXBlci1zbGlkZXI+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvdGVtcGxhdGU+CiAgICA8L3RmLWNhcmQtaGVhZGluZz4KICAgIDxzdHlsZT4KICAgICAgcGFwZXItc2xpZGVyIHsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBtYXJnaW4tbGVmdDogMXB4OwogICAgICAgIG1hcmdpbi1yaWdodDogMXB4OwogICAgICB9CiAgICAgIC50Zi1tZXNoLWxvYWRlci1oZWFkZXIgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIGhlaWdodDogMTA1cHg7CiAgICAgIH0KICAgICAgW2hpZGRlbl0gewogICAgICAgIGRpc3BsYXk6IG5vbmU7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgYCx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxLcmUucHJvdG90eXBlLCJydW4iLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sS3JlLnByb3RvdHlwZSwidGFnIix2b2lkIDApLHQoW28oe3R5cGU6TnVtYmVyfSksZSgiZGVzaWduOnR5cGUiLE51bWJlcildLEtyZS5wcm90b3R5cGUsInNhbXBsZSIsdm9pZCAwKSx0KFtvKHt0eXBlOk51bWJlcn0pLGUoImRlc2lnbjp0eXBlIixOdW1iZXIpXSxLcmUucHJvdG90eXBlLCJvZlNhbXBsZXMiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sS3JlLnByb3RvdHlwZSwic2VsZWN0ZWRWaWV3Iix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sS3JlLnByb3RvdHlwZSwiYWN0aXZlIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLGJyKV0sS3JlLnByb3RvdHlwZSwicmVxdWVzdE1hbmFnZXIiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsJHJlKV0sS3JlLnByb3RvdHlwZSwiX21lc2hWaWV3ZXIiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsJDB0KV0sS3JlLnByb3RvdHlwZSwiX2RhdGFQcm92aWRlciIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxLcmUucHJvdG90eXBlLCJfY29sb3JTY2FsZUZ1bmN0aW9uIix2b2lkIDApLHQoW28oe3R5cGU6QXJyYXksbm90aWZ5OiEwfSksZSgiZGVzaWduOnR5cGUiLEFycmF5KV0sS3JlLnByb3RvdHlwZSwiX3N0ZXBzIix2b2lkIDApLHQoW28oe3R5cGU6TnVtYmVyLG5vdGlmeTohMH0pLGUoImRlc2lnbjp0eXBlIixOdW1iZXIpXSxLcmUucHJvdG90eXBlLCJfc3RlcEluZGV4Iix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sS3JlLnByb3RvdHlwZSwiX21lc2hWaWV3ZXJBdHRhY2hlZCIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLEtyZS5wcm90b3R5cGUsIl9jYW1lcmFQb3NpdGlvbkluaXRpYWxpemVkIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sS3JlLnByb3RvdHlwZSwiX2lzTWVzaExvYWRpbmciLHZvaWQgMCksdChbcygicnVuIiksZSgiZGVzaWduOnR5cGUiLFN0cmluZyksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sS3JlLnByb3RvdHlwZSwiX3J1bkNvbG9yIixudWxsKSx0KFthKCJydW4iLCJ0YWciLCJhY3RpdmUiLCJfZGF0YVByb3ZpZGVyIiwiX21lc2hWaWV3ZXIiKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLEtyZS5wcm90b3R5cGUsInJlbG9hZCIsbnVsbCksdChbYSgiX2N1cnJlbnRTdGVwLioiLCJfbWVzaFZpZXdlciIpLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKSxlKCJkZXNpZ246cmV0dXJudHlwZSIsdm9pZCAwKV0sS3JlLnByb3RvdHlwZSwiX3VwZGF0ZVNjZW5lIixudWxsKSx0KFthKCJfY3VycmVudFN0ZXAiKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLEtyZS5wcm90b3R5cGUsIl9kZWJvdW5jZWRGZXRjaE1lc2giLG51bGwpLHQoW3MoIl9zdGVwcyIsIl9zdGVwSW5kZXgiKSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSxLcmUucHJvdG90eXBlLCJfY3VycmVudFN0ZXAiLG51bGwpLHQoW3MoIl9jdXJyZW50U3RlcCIpLGUoImRlc2lnbjp0eXBlIixOdW1iZXIpLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSldLEtyZS5wcm90b3R5cGUsIl9zdGVwVmFsdWUiLG51bGwpLHQoW3MoIl9jdXJyZW50U3RlcCIpLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSldLEtyZS5wcm90b3R5cGUsIl9jdXJyZW50V2FsbFRpbWUiLG51bGwpLHQoW2EoInNlbGVjdGVkVmlldyIpLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKSxlKCJkZXNpZ246cmV0dXJudHlwZSIsdm9pZCAwKV0sS3JlLnByb3RvdHlwZSwiX3VwZGF0ZVZpZXciLG51bGwpLEtyZT10KFtpKCJ0Zi1tZXNoLWxvYWRlciIpXSxLcmUpO2xldCBacmU9Y2xhc3MgZXh0ZW5kcyB3ZXtjb25zdHJ1Y3Rvcigpe3N1cGVyKCksdGhpcy5yZWxvYWRPblJlYWR5PSEwLHRoaXMuX3RhZ0ZpbHRlcj0iLioiLHRoaXMuX3NlbGVjdGVkVmlldz0iYWxsIix0aGlzLl9yZXF1ZXN0TWFuYWdlcj1uZXcgYnIsd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInJlc2l6ZSIsKCgpPT57dGhpcy5faGFuZGxlV2luZG93UmVzaXplKCl9KSwhMSksdGhpcy5yZWxvYWRPblJlYWR5JiZ0aGlzLnJlbG9hZCgpfV9nZXRBbGxDaGlsZHJlbigpe3JldHVybiBBcnJheS5mcm9tKHRoaXMuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yQWxsKCJ0Zi1tZXNoLWxvYWRlciIpKX1fb25DYW1lcmFQb3NpdGlvbkNoYW5nZWQodCl7InNoYXJlIj09dGhpcy5fc2VsZWN0ZWRWaWV3JiZ0aGlzLl9nZXRBbGxDaGlsZHJlbigpLmZvckVhY2goKGU9Pnt0LnRhcmdldCE9ZSYmZS5zZXRDYW1lcmFWaWV3cG9pbnQodC5kZXRhaWwucG9zaXRpb24sdC5kZXRhaWwuZmFyLHQuZGV0YWlsLnRhcmdldCl9KSl9X3Nob3VsZE9wZW4odCl7cmV0dXJuIHQ8PTJ9cmVsb2FkKCl7dGhpcy5fZmV0Y2hUYWdzKCkudGhlbih0aGlzLl9yZWxvYWRNZXNoZXMuYmluZCh0aGlzKSl9X2hhbmRsZVdpbmRvd1Jlc2l6ZSgpe3RoaXMuX2dldEFsbENoaWxkcmVuKCkuZm9yRWFjaCgodD0+e3QucmVkcmF3KCl9KSl9X2ZldGNoVGFncygpe2NvbnN0IHQ9RXIoKS5wbHVnaW5Sb3V0ZSgibWVzaCIsIi90YWdzIik7cmV0dXJuIHRoaXMuX3JlcXVlc3RNYW5hZ2VyLnJlcXVlc3QodCkudGhlbigodD0+e2lmKENlLmV4cG9ydHMuaXNFcXVhbCh0LHRoaXMuX3J1blRvVGFnSW5mbykpcmV0dXJuO2NvbnN0IGU9ZnIoQ2UuZXhwb3J0cy5tYXBWYWx1ZXModCwodD0+T2JqZWN0LmtleXModCkpKSk7dGhpcy5fZGF0YU5vdEZvdW5kPTA9PT1lLmxlbmd0aCx0aGlzLl9ydW5Ub1RhZ0luZm89dH0pKX1fcmVsb2FkTWVzaGVzKCl7dGhpcy5fZ2V0QWxsQ2hpbGRyZW4oKS5mb3JFYWNoKCh0PT57dC5yZWxvYWQoKX0pKX1nZXQgX2NhdGVnb3JpZXMoKXt2YXIgdD10aGlzLl9ydW5Ub1RhZ0luZm8sZT10aGlzLl9zZWxlY3RlZFJ1bnMsbj10aGlzLl90YWdGaWx0ZXI7ZnVuY3Rpb24gaShlKXtjb25zdCBuPXRbZS5ydW5dW2UudGFnXS5zYW1wbGVzO3JldHVybiBDZS5leHBvcnRzLnJhbmdlKG4pLm1hcCgodD0+T2JqZWN0LmFzc2lnbih7fSxlLHtzYW1wbGU6dCxvZlNhbXBsZXM6bn0pKSl9cmV0dXJuIElyKENlLmV4cG9ydHMubWFwVmFsdWVzKHQsKHQ9Pk9iamVjdC5rZXlzKHQpKSksZSxuKS5tYXAoKHQ9Pk9iamVjdC5hc3NpZ24oe30sdCx7aXRlbXM6W10uY29uY2F0LmFwcGx5KFtdLHQuaXRlbXMubWFwKGkpKX0pKSl9fTtacmUudGVtcGxhdGU9eGVgCiAgICA8dGYtZGFzaGJvYXJkLWxheW91dD4KICAgICAgPGRpdiBzbG90PSJzaWRlYmFyIiBjbGFzcz0iYWxsLWNvbnRyb2xzIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzZXR0aW5ncyI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJzaWRlYmFyLXNlY3Rpb24gdmlldy1jb250cm9sIj4KICAgICAgICAgICAgPGgzIGNsYXNzPSJ0aXRsZSI+UG9pbnQgb2YgdmlldzwvaDM+CiAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgPHBhcGVyLXJhZGlvLWdyb3VwCiAgICAgICAgICAgICAgICBpZD0idmlldy1yYWRpby1ncm91cCIKICAgICAgICAgICAgICAgIHNlbGVjdGVkPSJ7e19zZWxlY3RlZFZpZXd9fSIKICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICA8cGFwZXItcmFkaW8tYnV0dG9uIGlkPSJhbGwtcmFkaW8tYnV0dG9uIiBuYW1lPSJhbGwiPgogICAgICAgICAgICAgICAgICBEaXNwbGF5IGFsbCBwb2ludHMKICAgICAgICAgICAgICAgIDwvcGFwZXItcmFkaW8tYnV0dG9uPgogICAgICAgICAgICAgICAgPHBhcGVyLXRvb2x0aXAKICAgICAgICAgICAgICAgICAgYW5pbWF0aW9uLWRlbGF5PSIwIgogICAgICAgICAgICAgICAgICBmb3I9ImFsbC1yYWRpby1idXR0b24iCiAgICAgICAgICAgICAgICAgIHBvc2l0aW9uPSJyaWdodCIKICAgICAgICAgICAgICAgICAgb2Zmc2V0PSIwIgogICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICBab29tIGFuZCBjZW50ZXIgY2FtZXJhIHRvIGRpc3BsYXkgYWxsIHBvaW50cyBhdCBvbmNlLiBOb3RlLAogICAgICAgICAgICAgICAgICB0aGF0IHNvbWUgcG9pbnRzIGNvdWxkIGJlIHRvbyBmYXIgKGkuZS4gdG9vIHNtYWxsKSB0byBiZQogICAgICAgICAgICAgICAgICB2aXNpYmxlLgogICAgICAgICAgICAgICAgPC9wYXBlci10b29sdGlwPgogICAgICAgICAgICAgICAgPHBhcGVyLXJhZGlvLWJ1dHRvbiBpZD0idXNlci1yYWRpby1idXR0b24iIG5hbWU9InVzZXIiPgogICAgICAgICAgICAgICAgICBDdXJyZW50IHZpZXcKICAgICAgICAgICAgICAgIDwvcGFwZXItcmFkaW8tYnV0dG9uPgogICAgICAgICAgICAgICAgPHBhcGVyLXRvb2x0aXAKICAgICAgICAgICAgICAgICAgYW5pbWF0aW9uLWRlbGF5PSIwIgogICAgICAgICAgICAgICAgICBmb3I9InVzZXItcmFkaW8tYnV0dG9uIgogICAgICAgICAgICAgICAgICBwb3NpdGlvbj0icmlnaHQiCiAgICAgICAgICAgICAgICAgIG9mZnNldD0iMCIKICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgS2VlcCBjdXJyZW50IGNhbWVyYSBwb3NpdGlvbiBhbmQgem9vbSBsZXZlbC4KICAgICAgICAgICAgICAgIDwvcGFwZXItdG9vbHRpcD4KICAgICAgICAgICAgICAgIDxwYXBlci1yYWRpby1idXR0b24gaWQ9InNoYXJlLXJhZGlvLWJ1dHRvbiIgbmFtZT0ic2hhcmUiPgogICAgICAgICAgICAgICAgICBTaGFyZSB2aWV3cG9pbnQKICAgICAgICAgICAgICAgIDwvcGFwZXItcmFkaW8tYnV0dG9uPgogICAgICAgICAgICAgICAgPHBhcGVyLXRvb2x0aXAKICAgICAgICAgICAgICAgICAgYW5pbWF0aW9uLWRlbGF5PSIwIgogICAgICAgICAgICAgICAgICBmb3I9InNoYXJlLXJhZGlvLWJ1dHRvbiIKICAgICAgICAgICAgICAgICAgcG9zaXRpb249InJpZ2h0IgogICAgICAgICAgICAgICAgICBvZmZzZXQ9IjAiCiAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgIFNoYXJlIHZpZXdwb2ludCBhbW9uZyBhbGwgY2FtZXJhcy4KICAgICAgICAgICAgICAgIDwvcGFwZXItdG9vbHRpcD4KICAgICAgICAgICAgICA8L3BhcGVyLXJhZGlvLWdyb3VwPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InNpZGViYXItc2VjdGlvbiBydW5zLXNlbGVjdG9yIj4KICAgICAgICAgIDx0Zi1ydW5zLXNlbGVjdG9yIHNlbGVjdGVkLXJ1bnM9Int7X3NlbGVjdGVkUnVuc319Ij4KICAgICAgICAgIDwvdGYtcnVucy1zZWxlY3Rvcj4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgc2xvdD0iY2VudGVyIj4KICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbX2RhdGFOb3RGb3VuZF1dIj4KICAgICAgICAgIDxkaXYgY2xhc3M9Im5vLWRhdGEtd2FybmluZyI+CiAgICAgICAgICAgIDxoMz5ObyBwb2ludCBjbG91ZCBkYXRhIHdhcyBmb3VuZC48L2gzPgogICAgICAgICAgICA8cD5Qcm9iYWJsZSBjYXVzZXM6PC9wPgogICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgWW91IGhhdmVu4oCZdCB3cml0dGVuIGFueSBwb2ludCBjbG91ZCBkYXRhIHRvIHlvdXIgZXZlbnQgZmlsZXMuCiAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICA8bGk+VGVuc29yQm9hcmQgY2Fu4oCZdCBmaW5kIHlvdXIgZXZlbnQgZmlsZXMuPC9saT4KICAgICAgICAgICAgPC91bD4KCiAgICAgICAgICAgIDxwPgogICAgICAgICAgICAgIElmIHlvdeKAmXJlIG5ldyB0byB1c2luZyBUZW5zb3JCb2FyZCwgYW5kIHdhbnQgdG8gZmluZCBvdXQgaG93IHRvCiAgICAgICAgICAgICAgYWRkIGRhdGEgYW5kIHNldCB1cCB5b3VyIGV2ZW50IGZpbGVzLCBjaGVjayBvdXQgdGhlCiAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS90ZW5zb3JmbG93L3RlbnNvcmJvYXJkL2Jsb2IvbWFzdGVyL1JFQURNRS5tZCIKICAgICAgICAgICAgICAgID5SRUFETUU8L2EKICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgYW5kIHBlcmhhcHMgdGhlCiAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgIGhyZWY9Imh0dHBzOi8vd3d3LnRlbnNvcmZsb3cub3JnL2dldF9zdGFydGVkL3N1bW1hcmllc19hbmRfdGVuc29yYm9hcmQiCiAgICAgICAgICAgICAgICA+VGVuc29yQm9hcmQgdHV0b3JpYWw8L2EKICAgICAgICAgICAgICA+LgogICAgICAgICAgICA8L3A+CgogICAgICAgICAgICA8cD4KICAgICAgICAgICAgICBJZiB5b3UgdGhpbmsgVGVuc29yQm9hcmQgaXMgY29uZmlndXJlZCBwcm9wZXJseSwgcGxlYXNlIHNlZQogICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vdGVuc29yZmxvdy90ZW5zb3Jib2FyZC9ibG9iL21hc3Rlci9SRUFETUUubWQjbXktdGVuc29yYm9hcmQtaXNudC1zaG93aW5nLWFueS1kYXRhLXdoYXRzLXdyb25nIgogICAgICAgICAgICAgICAgPnRoZSBzZWN0aW9uIG9mIHRoZSBSRUFETUUgZGV2b3RlZCB0byBtaXNzaW5nIGRhdGEgcHJvYmxlbXM8L2EKICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgYW5kIGNvbnNpZGVyIGZpbGluZyBhbiBpc3N1ZSBvbiBHaXRIdWIuCiAgICAgICAgICAgIDwvcD4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbWyFfZGF0YU5vdEZvdW5kXV0iPgogICAgICAgICAgPHRmLXRhZy1maWx0ZXJlciB0YWctZmlsdGVyPSJ7e190YWdGaWx0ZXJ9fSI+PC90Zi10YWctZmlsdGVyZXI+CiAgICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1yZXBlYXQiIGl0ZW1zPSJbW19jYXRlZ29yaWVzXV0iIGFzPSJjYXRlZ29yeSI+CiAgICAgICAgICAgIDx0Zi1jYXRlZ29yeS1wYWdpbmF0ZWQtdmlldwogICAgICAgICAgICAgIGNhdGVnb3J5PSJbW2NhdGVnb3J5XV0iCiAgICAgICAgICAgICAgaW5pdGlhbC1vcGVuZWQ9IltbX3Nob3VsZE9wZW4oaW5kZXgpXV0iCiAgICAgICAgICAgID4KICAgICAgICAgICAgICA8dGVtcGxhdGU+CiAgICAgICAgICAgICAgICA8dGYtbWVzaC1sb2FkZXIKICAgICAgICAgICAgICAgICAgYWN0aXZlPSJbW2FjdGl2ZV1dIgogICAgICAgICAgICAgICAgICBzZWxlY3RlZC12aWV3PSJbW19zZWxlY3RlZFZpZXddXSIKICAgICAgICAgICAgICAgICAgcnVuPSJbW2l0ZW0ucnVuXV0iCiAgICAgICAgICAgICAgICAgIHRhZz0iW1tpdGVtLnRhZ11dIgogICAgICAgICAgICAgICAgICBzYW1wbGU9IltbaXRlbS5zYW1wbGVdXSIKICAgICAgICAgICAgICAgICAgb2Ytc2FtcGxlcz0iW1tpdGVtLm9mU2FtcGxlc11dIgogICAgICAgICAgICAgICAgICByZXF1ZXN0LW1hbmFnZXI9IltbX3JlcXVlc3RNYW5hZ2VyXV0iCiAgICAgICAgICAgICAgICAgIGNsYXNzPSJ0Zi1tZXNoLWxvYWRlci1jb250YWluZXIiCiAgICAgICAgICAgICAgICAgIG9uLWNhbWVyYS1wb3NpdGlvbi1jaGFuZ2U9Il9vbkNhbWVyYVBvc2l0aW9uQ2hhbmdlZCIKICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgIDwvdGYtbWVzaC1sb2FkZXI+CiAgICAgICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgICAgPC90Zi1jYXRlZ29yeS1wYWdpbmF0ZWQtdmlldz4KICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgPC9kaXY+CiAgICA8L3RmLWRhc2hib2FyZC1sYXlvdXQ+CgogICAgPHN0eWxlIGluY2x1ZGU9ImRhc2hib2FyZC1zdHlsZSI+PC9zdHlsZT4KICAgIDxzdHlsZT4KICAgICAgLm5vLWRhdGEtd2FybmluZyB7CiAgICAgICAgbWF4LXdpZHRoOiA1NDBweDsKICAgICAgICBtYXJnaW46IDgwcHggYXV0byAwIGF1dG87CiAgICAgIH0KICAgICAgcGFwZXItcmFkaW8tYnV0dG9uIHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICBwYWRkaW5nOiA1cHg7CiAgICAgIH0KICAgICAgLnNpZGViYXItc2VjdGlvbiBoMyB7CiAgICAgICAgbWFyZ2luOiAwOwogICAgICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIG1hcmdpbi1ib3R0b206IDVweDsKICAgICAgfQoKICAgICAgLnJ1bnMtc2VsZWN0b3IgewogICAgICAgIGZsZXgtZ3JvdzogMTsKICAgICAgfQoKICAgICAgdGYtcnVucy1zZWxlY3RvciB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgfQoKICAgICAgLnZpZXctY29udHJvbCB7CiAgICAgICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsKICAgICAgfQoKICAgICAgLnZpZXctY29udHJvbCBoMy50aXRsZSB7CiAgICAgICAgcGFkZGluZy10b3A6IDE2cHg7CiAgICAgICAgcGFkZGluZy1ib3R0b206IDE2cHg7CiAgICAgIH0KCiAgICAgIC5hbGxjb250cm9scyAudmlldy1jb250cm9sIHBhcGVyLXJhZGlvLWdyb3VwIHsKICAgICAgICBtYXJnaW4tdG9wOiA1cHg7CiAgICAgIH0KICAgICAgLyogTGF5b3V0IG11c3QgYmUgaG9yaXpvbnRhbCwgaS5lLiBpdGVtcyBhcnJhbmdlZCBpbiBhIHJvdy4gSWYgaXRlbXMgY2Fubm90IGZpdCBpbiBhIHJvdywKICAgICAgICogdGhleSBzaG91bGQgYmUgbW92ZWQgdG8gbmV4dCBsaW5lLiBBbGwgaXRlbXMgbXVzdCBiZSBzcXVhcmUgYXQgYWxsIHRpbWVzLiBNaW5pbXVtIHNpemUgb2YKICAgICAgICogdGhlIGl0ZW0gaXMgNDgwcHguIFRoaXMgbWVhbnMgdGhhdCBtYXhpbXVtIHNpemUgb2YgdGhlIGl0ZW0gbXVzdCBiZSA0ODBweCArIDQ3OXB4ID0gOTU5cHguCiAgICAgICAqICovCiAgICAgIC5ob3Jpem9udGFsIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7CiAgICAgICAgZmxleC13cmFwOiB3cmFwOwogICAgICB9CiAgICAgIHRmLW1lc2gtbG9hZGVyIHsKICAgICAgICB3aWR0aDogNDgwcHg7CiAgICAgICAgZmxleC1iYXNpczogNDgwcHg7CiAgICAgICAgZmxleC1ncm93OiAxOwogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICB9CiAgICA8L3N0eWxlPgogIGAsdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxacmUucHJvdG90eXBlLCJyZWxvYWRPblJlYWR5Iix2b2lkIDApLHQoW28oe3R5cGU6QXJyYXl9KSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpXSxacmUucHJvdG90eXBlLCJfc2VsZWN0ZWRSdW5zIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLFpyZS5wcm90b3R5cGUsIl9ydW5Ub1RhZ0luZm8iLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxacmUucHJvdG90eXBlLCJfZGF0YU5vdEZvdW5kIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLFpyZS5wcm90b3R5cGUsIl90YWdGaWx0ZXIiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmcsbm90aWZ5OiEwfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLFpyZS5wcm90b3R5cGUsIl9zZWxlY3RlZFZpZXciLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sWnJlLnByb3RvdHlwZSwiX3JlcXVlc3RNYW5hZ2VyIix2b2lkIDApLHQoW3MoIl9ydW5Ub1RhZ0luZm8iLCJfc2VsZWN0ZWRSdW5zIiwiX3RhZ0ZpbHRlciIpLGUoImRlc2lnbjp0eXBlIixBcnJheSksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sWnJlLnByb3RvdHlwZSwiX2NhdGVnb3JpZXMiLG51bGwpLFpyZT10KFtpKCJtZXNoLWRhc2hib2FyZCIpLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSldLFpyZSk7bGV0IEpyZT1jbGFzcyBleHRlbmRzKGNyKHdlKSl7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMuX2luc3RhbGxDb21tYW5kPSJwaXAgaW5zdGFsbCAtVSB0ZW5zb3Jib2FyZC1wbHVnaW4tcHJvZmlsZSJ9X2NvcHlJbnN0YWxsQ29tbWFuZCgpe3JldHVybiBuKHRoaXMsdm9pZCAwLHZvaWQgMCwoZnVuY3Rpb24qKCl7Y29uc3QgdD0oKT0+bih0aGlzLHZvaWQgMCx2b2lkIDAsKGZ1bmN0aW9uKigpe3RoaXMuJC5jb21tYW5kVGV4dGFyZWEuc2VsZWN0KCk7dHJ5e3lpZWxkIG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KHRoaXMuX2luc3RhbGxDb21tYW5kKX1jYXRjaCh0KXtpZighZG9jdW1lbnQuZXhlY0NvbW1hbmQoImNvcHkiKSlyZXR1cm4gUHJvbWlzZS5yZWplY3QoKX19KSksZT10aGlzLiQuY29waWVkTWVzc2FnZTt0cnl7eWllbGQgdCgpLGUuaW5uZXJUZXh0PSJDb3BpZWQuIn1jYXRjaCh0KXtlLmlubmVyVGV4dD0iRmFpbGVkIHRvIGNvcHkgdG8gY2xpcGJvYXJkLiJ9fSkpfV9yZW1vdmVDb3BpZWRNZXNzYWdlKCl7dGhpcy4kLmNvcGllZE1lc3NhZ2UuaW5uZXJUZXh0PSIifX07SnJlLnRlbXBsYXRlPXhlYAogICAgPGRpdiBjbGFzcz0ibWVzc2FnZSI+CiAgICAgIDxoMz5UaGUgcHJvZmlsZSBwbHVnaW4gaGFzIG1vdmVkLjwvaDM+CiAgICAgIDxwPgogICAgICAgIFBsZWFzZSBpbnN0YWxsIHRoZSBuZXcgdmVyc2lvbiBvZiB0aGUgcHJvZmlsZSBwbHVnaW4gZnJvbSBQeVBJIGJ5CiAgICAgICAgcnVubmluZyB0aGUgZm9sbG93aW5nIGNvbW1hbmQgZnJvbSB0aGUgbWFjaGluZSBydW5uaW5nIFRlbnNvckJvYXJkOgogICAgICA8L3A+CiAgICAgIDx0ZXh0YXJlYQogICAgICAgIGlkPSJjb21tYW5kVGV4dGFyZWEiCiAgICAgICAgcmVhZG9ubHk9IiIKICAgICAgICByb3dzPSIxIgogICAgICAgIG9uLWJsdXI9Il9yZW1vdmVDb3BpZWRNZXNzYWdlIgogICAgICA+CltbX2luc3RhbGxDb21tYW5kXV08L3RleHRhcmVhCiAgICAgID4KICAgICAgPGRpdiBpZD0iY29weUNvbnRhaW5lciI+CiAgICAgICAgPHNwYW4gaWQ9ImNvcGllZE1lc3NhZ2UiPjwvc3Bhbj4KICAgICAgICA8cGFwZXItYnV0dG9uIHJhaXNlZD0iIiBvbi10YXA9Il9jb3B5SW5zdGFsbENvbW1hbmQiCiAgICAgICAgICA+Q29weSB0byBjbGlwYm9hcmQ8L3BhcGVyLWJ1dHRvbgogICAgICAgID4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICB9CgogICAgICAubWVzc2FnZSB7CiAgICAgICAgbWFyZ2luOiA4MHB4IGF1dG8gMCBhdXRvOwogICAgICAgIG1heC13aWR0aDogNTQwcHg7CiAgICAgIH0KICAgICAgI2NvbW1hbmRUZXh0YXJlYSB7CiAgICAgICAgbWFyZ2luLXRvcDogMWV4OwogICAgICAgIHBhZGRpbmc6IDFleCAxZW07CiAgICAgICAgcmVzaXplOiB2ZXJ0aWNhbDsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgfQogICAgICAjY29weUNvbnRhaW5lciB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgfQogICAgICAjY29waWVkTWVzc2FnZSB7CiAgICAgICAgYWxpZ24tc2VsZjogY2VudGVyOwogICAgICAgIGZsZXgtZ3JvdzogMTsKICAgICAgICBmb250LXN0eWxlOiBpdGFsaWM7CiAgICAgICAgcGFkZGluZy1yaWdodDogMWVtOwogICAgICAgIHRleHQtYWxpZ246IHJpZ2h0OwogICAgICB9CiAgICA8L3N0eWxlPgogIGAsdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sSnJlLnByb3RvdHlwZSwiX2luc3RhbGxDb21tYW5kIix2b2lkIDApLEpyZT10KFtpKCJ0Zi1wcm9maWxlLXJlZGlyZWN0LWRhc2hib2FyZCIpXSxKcmUpO2xldCBRcmU9Y2xhc3MgZXh0ZW5kcyB3ZXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5fZXhwYW5kZWQ9ITEsdGhpcy5fcnVuVG9QckN1cnZlRW50cnk9e30sdGhpcy5fcHJldmlvdXNSdW5Ub1ByQ3VydmVFbnRyeT17fSx0aGlzLl9jb2xvclNjYWxlRnVuY3Rpb249e3NjYWxlOl9PfSx0aGlzLl9jYW5jZWxsZXI9bmV3IHhPLHRoaXMuX3hDb21wb25lbnRzQ3JlYXRpb25NZXRob2Q9KCk9Pntjb25zdCB0PW5ldyBOTy5TY2FsZXMuTGluZWFyO3JldHVybntzY2FsZTp0LGF4aXM6bmV3IE5PLkF4ZXMuTnVtZXJpYyh0LCJib3R0b20iKSxhY2Nlc3Nvcjp0PT50LnJlY2FsbH19LHRoaXMuX3lWYWx1ZUFjY2Vzc29yPXQ9PnQucHJlY2lzaW9uLHRoaXMuX3Rvb2x0aXBDb2x1bW5zPSgoKT0+e2NvbnN0IHQ9U0N0KDQpLGU9ZT0+aXNOYU4oZSk/Ik5hTiI6dChlKTtyZXR1cm5be3RpdGxlOiJSdW4iLGV2YWx1YXRlOnQ9PnQuZGF0YXNldC5tZXRhZGF0YSgpLm5hbWV9LHt0aXRsZToiVGhyZXNob2xkIixldmFsdWF0ZTp0PT5lKHQuZGF0dW0udGhyZXNob2xkcyl9LHt0aXRsZToiUHJlY2lzaW9uIixldmFsdWF0ZTp0PT5lKHQuZGF0dW0ucHJlY2lzaW9uKX0se3RpdGxlOiJSZWNhbGwiLGV2YWx1YXRlOnQ9PmUodC5kYXR1bS5yZWNhbGwpfSx7dGl0bGU6IlRQIixldmFsdWF0ZTp0PT50LmRhdHVtLnRydWVfcG9zaXRpdmVzfSx7dGl0bGU6IkZQIixldmFsdWF0ZTp0PT50LmRhdHVtLmZhbHNlX3Bvc2l0aXZlc30se3RpdGxlOiJUTiIsZXZhbHVhdGU6dD0+dC5kYXR1bS50cnVlX25lZ2F0aXZlc30se3RpdGxlOiJGTiIsZXZhbHVhdGU6dD0+dC5kYXR1bS5mYWxzZV9uZWdhdGl2ZXN9XX0pKCksdGhpcy5fc2VyaWVzRGF0YUZpZWxkcz1bInRocmVzaG9sZHMiLCJwcmVjaXNpb24iLCJyZWNhbGwiLCJ0cnVlX3Bvc2l0aXZlcyIsImZhbHNlX3Bvc2l0aXZlcyIsInRydWVfbmVnYXRpdmVzIiwiZmFsc2VfbmVnYXRpdmVzIl0sdGhpcy5fZGVmYXVsdFhSYW5nZT1bLS4wNSwxLjA1XSx0aGlzLl9kZWZhdWx0WVJhbmdlPVstLjA1LDEuMDVdLHRoaXMuX3JlcXVlc3REYXRhPSh0LGUsbik9Pntjb25zdCBpPUVyKCkucGx1Z2luUm91dGUoInByX2N1cnZlcyIsIi9wcl9jdXJ2ZXMiKTtQcm9taXNlLmFsbCh0Lm1hcCgodD0+e2NvbnN0IG49UE8oaSx7dGFnOnRoaXMudGFnLHJ1bjp0fSk7cmV0dXJuIHRoaXMucmVxdWVzdE1hbmFnZXIucmVxdWVzdChuKS50aGVuKChuPT57ZSh7aXRlbTp0LGRhdGE6bn0pfSkpfSkpKS5maW5hbGx5KCgoKT0+e24oKX0pKX0sdGhpcy5fc21vb3RoaW5nRW5hYmxlZD0hMX1fY3JlYXRlUHJvY2Vzc0RhdGFGdW5jdGlvbigpe3JldHVybih0LGUsbik9Pnt0aGlzLnNldCgiX3J1blRvRGF0YU92ZXJUaW1lIixPYmplY3QuYXNzaWduKHt9LHRoaXMuX3J1blRvRGF0YU92ZXJUaW1lLG4pKX19X2NvbXB1dGVSdW5Db2xvcih0KXtyZXR1cm4gX08odCl9Y29ubmVjdGVkQ2FsbGJhY2soKXtzdXBlci5jb25uZWN0ZWRDYWxsYmFjaygpLHRoaXMuX2F0dGFjaGVkPSEwLHRoaXMucmVsb2FkKCl9X2dldENoYXJ0RGF0YUxvYWRlcigpe3JldHVybiB0aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcigidGYtbGluZS1jaGFydC1kYXRhLWxvYWRlciIpfXJlbG9hZCgpe3RoaXMuX2F0dGFjaGVkJiYoMCE9PXRoaXMucnVucy5sZW5ndGg/dGhpcy5fZ2V0Q2hhcnREYXRhTG9hZGVyKCkucmVsb2FkKCk6dGhpcy5zZXQoIl9ydW5Ub0RhdGFPdmVyVGltZSIse30pKX1fc2V0Q2hhcnREYXRhKCl7dmFyIHQ9dGhpcy5fcnVuVG9QckN1cnZlRW50cnksZT10aGlzLl9wcmV2aW91c1J1blRvUHJDdXJ2ZUVudHJ5LG49dGhpcy5fc2V0T2ZSZWxldmFudFJ1bnM7Q2UuZXhwb3J0cy5mb3JPd24odCwoKGkscik9Pntjb25zdCBvPWVbcl07byYmdFtyXS5zdGVwPT09by5zdGVwfHwobltyXT90aGlzLl91cGRhdGVTZXJpZXNEYXRhRm9yUnVuKHIsaSk6dGhpcy5fY2xlYXJTZXJpZXNEYXRhKHIpKX0pKX1fdXBkYXRlU2VyaWVzRGF0YUZvclJ1bih0LGUpe2NvbnN0IG49Q2UuZXhwb3J0cy5yZWR1Y2UodGhpcy5fc2VyaWVzRGF0YUZpZWxkcywoKHQsbik9Pih0W25dPWVbbl0uc2xpY2UoKS5yZXZlcnNlKCksdCkpLHt9KSxpPW5ldyBBcnJheShuW3RoaXMuX3Nlcmllc0RhdGFGaWVsZHNbMF1dLmxlbmd0aCk7Zm9yKGxldCB0PTA7dDxpLmxlbmd0aDt0KyspaVt0XT1DZS5leHBvcnRzLm1hcFZhbHVlcyhuLChlPT5lW3RdKSk7Y29uc3Qgcj10aGlzLl9nZXRDaGFydERhdGFMb2FkZXIoKTtyLnNldFNlcmllc0RhdGEodCxpKSxyLmNvbW1pdENoYW5nZXMoKX1fY2xlYXJTZXJpZXNEYXRhKHQpe2NvbnN0IGU9dGhpcy5fZ2V0Q2hhcnREYXRhTG9hZGVyKCk7ZS5zZXRTZXJpZXNEYXRhKHQsW10pLGUuY29tbWl0Q2hhbmdlcygpfV91cGRhdGVSdW5Ub1ByQ3VydmVFbnRyeSgpe3ZhciB0PXRoaXMucnVuVG9TdGVwQ2FwO2NvbnN0IGU9e307Q2UuZXhwb3J0cy5mb3JPd24odGhpcy5fcnVuVG9EYXRhT3ZlclRpbWUsKChuLGkpPT57biYmbi5sZW5ndGgmJihlW2ldPXRoaXMuX2NvbXB1dGVFbnRyeUNsb3Nlc3RPckVxdWFsVG9TdGVwQ2FwKHRbaV0sbikpfSkpLHRoaXMuc2V0KCJfcHJldmlvdXNSdW5Ub1ByQ3VydmVFbnRyeSIsdGhpcy5fcnVuVG9QckN1cnZlRW50cnkpLHRoaXMuc2V0KCJfcnVuVG9QckN1cnZlRW50cnkiLGUpfV9ub3RpZnlEYXRhQ2hhbmdlKCl7dGhpcy5vbkRhdGFDaGFuZ2UmJnRoaXMub25EYXRhQ2hhbmdlKHRoaXMuX3J1blRvRGF0YU92ZXJUaW1lKX1fY29tcHV0ZUVudHJ5Q2xvc2VzdE9yRXF1YWxUb1N0ZXBDYXAodCxlKXtjb25zdCBuPU1hdGgubWluKENlLmV4cG9ydHMuc29ydGVkSW5kZXgoZS5tYXAoKHQ9PnQuc3RlcCkpLHQpLGUubGVuZ3RoLTEpO3JldHVybiBlW25dfWdldCBfcnVuc1dpdGhTdGVwQXZhaWxhYmxlKCl7dmFyIHQ9dGhpcy5fcnVuVG9QckN1cnZlRW50cnk7cmV0dXJuIENlLmV4cG9ydHMuZmlsdGVyKHRoaXMucnVucywoZT0+dFtlXSkpLnNvcnQoKX1nZXQgX3NldE9mUmVsZXZhbnRSdW5zKCl7Y29uc3QgdD17fTtyZXR1cm4gQ2UuZXhwb3J0cy5mb3JFYWNoKHRoaXMuX3J1bnNXaXRoU3RlcEF2YWlsYWJsZSwoZT0+e3RbZV09ITB9KSksdH1fY29tcHV0ZUN1cnJlbnRTdGVwRm9yUnVuKHQsZSl7Y29uc3Qgbj10W2VdO3JldHVybiBuP24uc3RlcDpudWxsfV9jb21wdXRlQ3VycmVudFdhbGxUaW1lRm9yUnVuKHQsZSl7Y29uc3Qgbj10W2VdO3JldHVybiBuP25ldyBEYXRlKDFlMypuLndhbGxfdGltZSkudG9TdHJpbmcoKTpudWxsfV90b2dnbGVFeHBhbmRlZCh0KXt0aGlzLnNldCgiX2V4cGFuZGVkIiwhdGhpcy5fZXhwYW5kZWQpLHRoaXMucmVkcmF3KCl9X3Jlc2V0RG9tYWluKCl7dGhpcy5fZ2V0Q2hhcnREYXRhTG9hZGVyKCkucmVzZXREb21haW4oKX1yZWRyYXcoKXt0aGlzLl9nZXRDaGFydERhdGFMb2FkZXIoKS5yZWRyYXcoKX19O1FyZS50ZW1wbGF0ZT14ZWAKICAgIDx0Zi1jYXJkLWhlYWRpbmcKICAgICAgdGFnPSJbW3RhZ11dIgogICAgICBkaXNwbGF5LW5hbWU9IltbdGFnTWV0YWRhdGEuZGlzcGxheU5hbWVdXSIKICAgICAgZGVzY3JpcHRpb249IltbdGFnTWV0YWRhdGEuZGVzY3JpcHRpb25dXSIKICAgID48L3RmLWNhcmQtaGVhZGluZz4KCiAgICA8dGYtbGluZS1jaGFydC1kYXRhLWxvYWRlcgogICAgICB4LWNvbXBvbmVudHMtY3JlYXRpb24tbWV0aG9kPSJbW194Q29tcG9uZW50c0NyZWF0aW9uTWV0aG9kXV0iCiAgICAgIHktdmFsdWUtYWNjZXNzb3I9IltbX3lWYWx1ZUFjY2Vzc29yXV0iCiAgICAgIHRvb2x0aXAtY29sdW1ucz0iW1tfdG9vbHRpcENvbHVtbnNdXSIKICAgICAgY29sb3Itc2NhbGU9IltbX2NvbG9yU2NhbGVGdW5jdGlvbl1dIgogICAgICBkZWZhdWx0LXgtcmFuZ2U9IltbX2RlZmF1bHRYUmFuZ2VdXSIKICAgICAgZGVmYXVsdC15LXJhbmdlPSJbW19kZWZhdWx0WVJhbmdlXV0iCiAgICAgIHNtb290aGluZy1lbmFibGVkPSJbW19zbW9vdGhpbmdFbmFibGVkXV0iCiAgICAgIHJlcXVlc3QtbWFuYWdlcj0iW1tyZXF1ZXN0TWFuYWdlcl1dIgogICAgICBkYXRhLXRvLWxvYWQ9IltbcnVuc11dIgogICAgICBkYXRhLXNlcmllcz0iW1tydW5zXV0iCiAgICAgIGxvYWQta2V5PSJbW3RhZ11dIgogICAgICByZXF1ZXN0LWRhdGE9IltbX3JlcXVlc3REYXRhXV0iCiAgICAgIGxvYWQtZGF0YS1jYWxsYmFjaz0iW1tfY3JlYXRlUHJvY2Vzc0RhdGFGdW5jdGlvbigpXV0iCiAgICAgIGFjdGl2ZT0iW1thY3RpdmVdXSIKICAgID48L3RmLWxpbmUtY2hhcnQtZGF0YS1sb2FkZXI+CgogICAgPGRpdiBpZD0iYnV0dG9ucy1yb3ciPgogICAgICA8cGFwZXItaWNvbi1idXR0b24KICAgICAgICBzZWxlY3RlZCQ9IltbX2V4cGFuZGVkXV0iCiAgICAgICAgaWNvbj0iZnVsbHNjcmVlbiIKICAgICAgICBvbi10YXA9Il90b2dnbGVFeHBhbmRlZCIKICAgICAgPjwvcGFwZXItaWNvbi1idXR0b24+CiAgICAgIDxwYXBlci1pY29uLWJ1dHRvbgogICAgICAgIGljb249InNldHRpbmdzLW92ZXJzY2FuIgogICAgICAgIG9uLXRhcD0iX3Jlc2V0RG9tYWluIgogICAgICAgIHRpdGxlPSJSZXNldCBheGVzIHRvIFswLCAxXS4iCiAgICAgID48L3BhcGVyLWljb24tYnV0dG9uPgogICAgPC9kaXY+CgogICAgPGRpdiBpZD0ic3RlcC1sZWdlbmQiPgogICAgICA8dGVtcGxhdGUgaXM9ImRvbS1yZXBlYXQiIGl0ZW1zPSJbW19ydW5zV2l0aFN0ZXBBdmFpbGFibGVdXSIgYXM9InJ1biI+CiAgICAgICAgPGRpdiBjbGFzcz0ibGVnZW5kLXJvdyI+CiAgICAgICAgICA8ZGl2CiAgICAgICAgICAgIGNsYXNzPSJjb2xvci1ib3giCiAgICAgICAgICAgIHN0eWxlPSJiYWNrZ3JvdW5kOiBbW19jb21wdXRlUnVuQ29sb3IocnVuKV1dOyIKICAgICAgICAgID48L2Rpdj4KICAgICAgICAgIFtbcnVuXV0gaXMgYXQKICAgICAgICAgIDxzcGFuIGNsYXNzPSJzdGVwLWxhYmVsLXRleHQiPgogICAgICAgICAgICBzdGVwIFtbX2NvbXB1dGVDdXJyZW50U3RlcEZvclJ1bihfcnVuVG9QckN1cnZlRW50cnksIHJ1bildXSA8L3NwYW4KICAgICAgICAgID48YnIgLz4KICAgICAgICAgIDxzcGFuIGNsYXNzPSJ3YWxsLXRpbWUtbGFiZWwtdGV4dCI+CiAgICAgICAgICAgIChbW19jb21wdXRlQ3VycmVudFdhbGxUaW1lRm9yUnVuKF9ydW5Ub1ByQ3VydmVFbnRyeSwgcnVuKV1dKQogICAgICAgICAgPC9zcGFuPgogICAgICAgIDwvZGl2PgogICAgICA8L3RlbXBsYXRlPgogICAgPC9kaXY+CgogICAgPHN0eWxlPgogICAgICA6aG9zdCB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgIHdpZHRoOiA1MDBweDsKICAgICAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMjVweDsKICAgICAgfQogICAgICA6aG9zdChbX2V4cGFuZGVkXSkgewogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICB9CiAgICAgIHRmLWxpbmUtY2hhcnQtZGF0YS1sb2FkZXIgewogICAgICAgIGhlaWdodDogMzAwcHg7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICB9CiAgICAgIDpob3N0KFtfZXhwYW5kZWRdKSB0Zi1saW5lLWNoYXJ0LWRhdGEtbG9hZGVyIHsKICAgICAgICBoZWlnaHQ6IDYwMHB4OwogICAgICB9CiAgICAgICNidXR0b25zLXJvdyB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93OwogICAgICB9CiAgICAgICNidXR0b25zLXJvdyBwYXBlci1pY29uLWJ1dHRvbiB7CiAgICAgICAgY29sb3I6ICMyMTk2ZjM7CiAgICAgICAgYm9yZGVyLXJhZGl1czogMTAwJTsKICAgICAgICB3aWR0aDogMzJweDsKICAgICAgICBoZWlnaHQ6IDMycHg7CiAgICAgICAgcGFkZGluZzogNHB4OwogICAgICB9CiAgICAgICNidXR0b25zLXJvdyBwYXBlci1pY29uLWJ1dHRvbltzZWxlY3RlZF0gewogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXRiLXVpLWxpZ2h0LWFjY2VudCk7CiAgICAgIH0KICAgICAgI3N0ZXAtbGVnZW5kIHsKICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgICAgIGZvbnQtc2l6ZTogMC44ZW07CiAgICAgICAgbWF4LWhlaWdodDogMjAwcHg7CiAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKICAgICAgICBwYWRkaW5nOiAwIDAgMCAxMHB4OwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICB9CiAgICAgIC5sZWdlbmQtcm93IHsKICAgICAgICBtYXJnaW46IDVweCAwIDVweCAwOwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICB9CiAgICAgIC5jb2xvci1ib3ggewogICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgICBib3JkZXItcmFkaXVzOiAxcHg7CiAgICAgICAgd2lkdGg6IDEwcHg7CiAgICAgICAgaGVpZ2h0OiAxMHB4OwogICAgICB9CiAgICAgIC5zdGVwLWxhYmVsLXRleHQgewogICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkOwogICAgICB9CiAgICAgIC53YWxsLXRpbWUtbGFiZWwtdGV4dCB7CiAgICAgICAgY29sb3I6ICM4ODg7CiAgICAgICAgZm9udC1zaXplOiAwLjhlbTsKICAgICAgfQogICAgPC9zdHlsZT4KICBgLHQoW28oe3R5cGU6QXJyYXl9KSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpXSxRcmUucHJvdG90eXBlLCJydW5zIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLFFyZS5wcm90b3R5cGUsInRhZyIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxRcmUucHJvdG90eXBlLCJ0YWdNZXRhZGF0YSIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxRcmUucHJvdG90eXBlLCJydW5Ub1N0ZXBDYXAiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsYnIpXSxRcmUucHJvdG90eXBlLCJyZXF1ZXN0TWFuYWdlciIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLFFyZS5wcm90b3R5cGUsImFjdGl2ZSIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW4scmVmbGVjdFRvQXR0cmlidXRlOiEwfSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxRcmUucHJvdG90eXBlLCJfZXhwYW5kZWQiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sUXJlLnByb3RvdHlwZSwiX3J1blRvUHJDdXJ2ZUVudHJ5Iix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLFFyZS5wcm90b3R5cGUsIl9wcmV2aW91c1J1blRvUHJDdXJ2ZUVudHJ5Iix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLFFyZS5wcm90b3R5cGUsIl9ydW5Ub0RhdGFPdmVyVGltZSIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbildLFFyZS5wcm90b3R5cGUsIm9uRGF0YUNoYW5nZSIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxRcmUucHJvdG90eXBlLCJfY29sb3JTY2FsZUZ1bmN0aW9uIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLHhPKV0sUXJlLnByb3RvdHlwZSwiX2NhbmNlbGxlciIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLFFyZS5wcm90b3R5cGUsIl9hdHRhY2hlZCIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxRcmUucHJvdG90eXBlLCJfeENvbXBvbmVudHNDcmVhdGlvbk1ldGhvZCIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxRcmUucHJvdG90eXBlLCJfeVZhbHVlQWNjZXNzb3IiLHZvaWQgMCksdChbbyh7dHlwZTpBcnJheX0pLGUoImRlc2lnbjp0eXBlIixBcnJheSldLFFyZS5wcm90b3R5cGUsIl90b29sdGlwQ29sdW1ucyIsdm9pZCAwKSx0KFtvKHt0eXBlOkFycmF5fSksZSgiZGVzaWduOnR5cGUiLEFycmF5KV0sUXJlLnByb3RvdHlwZSwiX3Nlcmllc0RhdGFGaWVsZHMiLHZvaWQgMCksdChbbyh7dHlwZTpBcnJheX0pLGUoImRlc2lnbjp0eXBlIixBcnJheSldLFFyZS5wcm90b3R5cGUsIl9kZWZhdWx0WFJhbmdlIix2b2lkIDApLHQoW28oe3R5cGU6QXJyYXl9KSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpXSxRcmUucHJvdG90eXBlLCJfZGVmYXVsdFlSYW5nZSIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbildLFFyZS5wcm90b3R5cGUsIl9yZXF1ZXN0RGF0YSIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLFFyZS5wcm90b3R5cGUsIl9zbW9vdGhpbmdFbmFibGVkIix2b2lkIDApLHQoW2EoInJ1bnMiLCJ0YWciKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLFFyZS5wcm90b3R5cGUsInJlbG9hZCIsbnVsbCksdChbYSgiX3J1blRvUHJDdXJ2ZUVudHJ5IiwiX3ByZXZpb3VzUnVuVG9QckN1cnZlRW50cnkiLCJfc2V0T2ZSZWxldmFudFJ1bnMiKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLFFyZS5wcm90b3R5cGUsIl9zZXRDaGFydERhdGEiLG51bGwpLHQoW2EoIl9ydW5Ub0RhdGFPdmVyVGltZSIsInJ1blRvU3RlcENhcCIpLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKSxlKCJkZXNpZ246cmV0dXJudHlwZSIsdm9pZCAwKV0sUXJlLnByb3RvdHlwZSwiX3VwZGF0ZVJ1blRvUHJDdXJ2ZUVudHJ5IixudWxsKSx0KFthKCJfcnVuVG9EYXRhT3ZlclRpbWUiKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLFFyZS5wcm90b3R5cGUsIl9ub3RpZnlEYXRhQ2hhbmdlIixudWxsKSx0KFtzKCJydW5zIiwiX3J1blRvUHJDdXJ2ZUVudHJ5IiksZSgiZGVzaWduOnR5cGUiLEFycmF5KSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSxRcmUucHJvdG90eXBlLCJfcnVuc1dpdGhTdGVwQXZhaWxhYmxlIixudWxsKSx0KFtzKCJfcnVuc1dpdGhTdGVwQXZhaWxhYmxlIiksZSgiZGVzaWduOnR5cGUiLE9iamVjdCksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sUXJlLnByb3RvdHlwZSwiX3NldE9mUmVsZXZhbnRSdW5zIixudWxsKSxRcmU9dChbaSgidGYtcHItY3VydmUtY2FyZCIpXSxRcmUpO2xldCB0b2U9Y2xhc3MgZXh0ZW5kcyB3ZXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5fcnVuVG9TdGVwSW5kZXg9e319X2NvbXB1dGVDb2xvckZvclJ1bih0KXtyZXR1cm4gX08odCl9X2NvbXB1dGVUaW1lVGV4dEZvclJ1bih0LGUsbixpKXtjb25zdCByPWVbbl07aWYoIUNlLmV4cG9ydHMuaXNOdW1iZXIocikpcmV0dXJuIiI7Y29uc3Qgbz10W25dO2lmKCFvKXJldHVybiIiO2NvbnN0IGE9b1tyXVtpXTtpZigic3RlcCI9PT1pKXJldHVybmBzdGVwICR7YX1gO2lmKCJyZWxhdGl2ZSI9PT1pKXJldHVybiBhPDE/YCR7KDFlMyphKS50b0ZpeGVkKDIpfSBtc2A6YCR7YS50b0ZpeGVkKDIpfSBzYDtpZigid2FsbF90aW1lIj09PWkpcmV0dXJuIG5ldyBEYXRlKDFlMyphKS50b1N0cmluZygpO3Rocm93IG5ldyBFcnJvcihgVGhlIGRpc3BsYXkgdHlwZSBvZiAke2l9IGlzIG5vdCByZWNvZ25pemVkLmApfV9zbGlkZXJWYWx1ZUNoYW5nZWQodCl7Y29uc3QgZT10LnRhcmdldC5kYXRhc2V0LnJ1bixuPXQudGFyZ2V0LmltbWVkaWF0ZVZhbHVlLGk9T2JqZWN0LmFzc2lnbih7fSx0aGlzLl9ydW5Ub1N0ZXBJbmRleCk7aXNOYU4obik/ZGVsZXRlIGlbZV06aVtlXT10LnRhcmdldC5pbW1lZGlhdGVWYWx1ZSx0aGlzLl9ydW5Ub1N0ZXBJbmRleD1pfV9jb21wdXRlTWF4U3RlcEluZGV4Rm9yUnVuKHQsZSl7Y29uc3Qgbj10W2VdO3JldHVybiBuJiZuLmxlbmd0aD9uLmxlbmd0aC0xOjB9X3VwZGF0ZVN0ZXBzRm9yTmV3UnVucygpe3ZhciB0PXRoaXMucnVuVG9BdmFpbGFibGVUaW1lRW50cmllcztjb25zdCBlPU9iamVjdC5hc3NpZ24oe30sdGhpcy5fcnVuVG9TdGVwSW5kZXgpO0NlLmV4cG9ydHMuZm9yT3duKHQsKCh0LG4pPT57Q2UuZXhwb3J0cy5pc051bWJlcihlW25dKXx8KGVbbl09dC5sZW5ndGgtMSl9KSksdGhpcy5fcnVuVG9TdGVwSW5kZXg9ZX1fZ2V0U3RlcCh0LGUpe3JldHVybiB0aGlzLl9ydW5Ub1N0ZXBJbmRleD90aGlzLl9ydW5Ub1N0ZXBJbmRleFtlXTowfV9jb21wdXRlUnVuVG9TdGVwKHQsZSl7Y29uc3Qgbj17fTtyZXR1cm4gQ2UuZXhwb3J0cy5mb3JPd24oZSwoKGUsaSk9Pntjb25zdCByPXRbaV07ciYmKG5baV09cltlXS5zdGVwKX0pKSxufWdldCBfcnVuc1dpdGhTbGlkZXJzKCl7dmFyIHQ9dGhpcy5ydW5Ub0F2YWlsYWJsZVRpbWVFbnRyaWVzO3JldHVybiB0aGlzLnJ1bnMuZmlsdGVyKChlPT50W2VdKSl9fTt0b2UudGVtcGxhdGU9eGVgCiAgICA8dGVtcGxhdGUgaXM9ImRvbS1yZXBlYXQiIGl0ZW1zPSJbW19ydW5zV2l0aFNsaWRlcnNdXSIgYXM9InJ1biI+CiAgICAgIDxkaXYgY2xhc3M9InJ1bi13aWRnZXQiPgogICAgICAgIDxkaXYgY2xhc3M9InJ1bi1kaXNwbGF5LWNvbnRhaW5lciI+CiAgICAgICAgICA8ZGl2CiAgICAgICAgICAgIGNsYXNzPSJydW4tY29sb3ItYm94IgogICAgICAgICAgICBzdHlsZT0iYmFja2dyb3VuZDpbW19jb21wdXRlQ29sb3JGb3JSdW4ocnVuKV1dOyIKICAgICAgICAgID48L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9InJ1bi10ZXh0Ij5bW3J1bl1dPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ic3RlcC1kaXNwbGF5LWNvbnRhaW5lciI+CiAgICAgICAgICBbW19jb21wdXRlVGltZVRleHRGb3JSdW4ocnVuVG9BdmFpbGFibGVUaW1lRW50cmllcywgX3J1blRvU3RlcEluZGV4LAogICAgICAgICAgcnVuLCB0aW1lRGlzcGxheVR5cGUpXV0KICAgICAgICA8L2Rpdj4KICAgICAgICA8cGFwZXItc2xpZGVyCiAgICAgICAgICBkYXRhLXJ1biQ9IltbcnVuXV0iCiAgICAgICAgICBzdGVwPSIxIgogICAgICAgICAgdHlwZT0ibnVtYmVyIgogICAgICAgICAgbWluPSIwIgogICAgICAgICAgbWF4PSJbW19jb21wdXRlTWF4U3RlcEluZGV4Rm9yUnVuKHJ1blRvQXZhaWxhYmxlVGltZUVudHJpZXMsIHJ1bildXSIKICAgICAgICAgIHZhbHVlPSJbW19nZXRTdGVwKF9ydW5Ub1N0ZXBJbmRleCwgcnVuKV1dIgogICAgICAgICAgb24taW1tZWRpYXRlLXZhbHVlLWNoYW5nZWQ9Il9zbGlkZXJWYWx1ZUNoYW5nZWQiCiAgICAgICAgPjwvcGFwZXItc2xpZGVyPgogICAgICA8L2Rpdj4KICAgIDwvdGVtcGxhdGU+CiAgICA8c3R5bGU+CiAgICAgIC5ydW4td2lkZ2V0IHsKICAgICAgICBtYXJnaW46IDEwcHggMCAwIDA7CiAgICAgIH0KICAgICAgcGFwZXItc2xpZGVyIHsKICAgICAgICBtYXJnaW46IC04cHggMCAwIC0xNXB4OwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICB9CiAgICAgIC5zdGVwLWRpc3BsYXktY29udGFpbmVyIHsKICAgICAgICBmb250LXNpemU6IDAuOWVtOwogICAgICAgIG1hcmdpbjogMCAxNXB4IDAgMDsKICAgICAgfQogICAgICAucnVuLXRleHQgewogICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgfQogICAgICAucnVuLWNvbG9yLWJveCB7CiAgICAgICAgd2lkdGg6IDEycHg7CiAgICAgICAgaGVpZ2h0OiAxMnB4OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDNweDsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgYCx0KFtvKHt0eXBlOkFycmF5fSksZSgiZGVzaWduOnR5cGUiLEFycmF5KV0sdG9lLnByb3RvdHlwZSwicnVucyIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSx0b2UucHJvdG90eXBlLCJydW5Ub0F2YWlsYWJsZVRpbWVFbnRyaWVzIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0LG5vdGlmeTohMCxjb21wdXRlZDoiX2NvbXB1dGVSdW5Ub1N0ZXAocnVuVG9BdmFpbGFibGVUaW1lRW50cmllcywgX3J1blRvU3RlcEluZGV4KSJ9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sdG9lLnByb3RvdHlwZSwicnVuVG9TdGVwIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLHRvZS5wcm90b3R5cGUsInRpbWVEaXNwbGF5VHlwZSIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSx0b2UucHJvdG90eXBlLCJfcnVuVG9TdGVwSW5kZXgiLHZvaWQgMCksdChbYSgicnVuVG9BdmFpbGFibGVUaW1lRW50cmllcyIpLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKSxlKCJkZXNpZ246cmV0dXJudHlwZSIsdm9pZCAwKV0sdG9lLnByb3RvdHlwZSwiX3VwZGF0ZVN0ZXBzRm9yTmV3UnVucyIsbnVsbCksdChbcygicnVucyIsInJ1blRvQXZhaWxhYmxlVGltZUVudHJpZXMiKSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSldLHRvZS5wcm90b3R5cGUsIl9ydW5zV2l0aFNsaWRlcnMiLG51bGwpLHRvZT10KFtpKCJ0Zi1wci1jdXJ2ZS1zdGVwcy1zZWxlY3RvciIpXSx0b2UpO2xldCBlb2U9Y2xhc3MgZXh0ZW5kcyhjcih3ZSkpe2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLnJlbG9hZE9uUmVhZHk9ITAsdGhpcy5fdGltZURpc3BsYXlUeXBlPSJzdGVwIix0aGlzLl9zZWxlY3RlZFJ1bnM9W10sdGhpcy5fcnVuVG9UYWdJbmZvPXt9LHRoaXMuX3RhZ1RvUnVuVG9EYXRhPXt9LHRoaXMuX2dldENhdGVnb3J5SXRlbUtleT10PT50LnRhZyx0aGlzLl9yZXF1ZXN0TWFuYWdlcj1uZXcgYnIsdGhpcy5fc3RlcD0wfXJlYWR5KCl7c3VwZXIucmVhZHkoKSx0aGlzLnJlbG9hZE9uUmVhZHkmJnRoaXMucmVsb2FkKCl9cmVsb2FkKCl7UHJvbWlzZS5hbGwoW3RoaXMuX2ZldGNoVGFncygpXSkudGhlbigoKCk9Pnt0aGlzLl9yZWxvYWRDYXJkcygpfSkpfV9zaG91bGRPcGVuKHQpe3JldHVybiB0PD0yfV9mZXRjaFRhZ3MoKXtjb25zdCB0PUVyKCkucGx1Z2luUm91dGUoInByX2N1cnZlcyIsIi90YWdzIik7cmV0dXJuIHRoaXMuX3JlcXVlc3RNYW5hZ2VyLnJlcXVlc3QodCkudGhlbigodD0+e2lmKENlLmV4cG9ydHMuaXNFcXVhbCh0LHRoaXMuX3J1blRvVGFnSW5mbykpcmV0dXJuO2NvbnN0IGU9ZnIoQ2UuZXhwb3J0cy5tYXBWYWx1ZXModCwodD0+Q2UuZXhwb3J0cy5rZXlzKHQpKSkpO3RoaXMuc2V0KCJfZGF0YU5vdEZvdW5kIiwwPT09ZS5sZW5ndGgpLHRoaXMuc2V0KCJfcnVuVG9UYWdJbmZvIix0KSx0aGlzLmFzeW5jKCgoKT0+e3RoaXMuc2V0KCJfY2F0ZWdvcmllc0RvbVJlYWR5IiwhMCl9KSl9KSl9X3JlbG9hZENhcmRzKCl7Q2UuZXhwb3J0cy5mb3JFYWNoKHRoaXMucm9vdC5xdWVyeVNlbGVjdG9yQWxsKCJ0Zi1wci1jdXJ2ZS1jYXJkIiksKHQ9Pnt0LnJlbG9hZCgpfSkpfWdldCBfY2F0ZWdvcmllcygpe3ZhciB0PXRoaXMuX3NlbGVjdGVkUnVucyxlPXRoaXMuX3RhZ0ZpbHRlcjtyZXR1cm4gUHIoQ2UuZXhwb3J0cy5tYXBWYWx1ZXModGhpcy5fcnVuVG9UYWdJbmZvLCh0PT5PYmplY3Qua2V5cyh0KSkpLHQsZSl9Z2V0IF9yZWxldmFudFNlbGVjdGVkUnVucygpe3ZhciB0PXRoaXMuX3J1blRvVGFnSW5mbztyZXR1cm4gdGhpcy5fc2VsZWN0ZWRSdW5zLmZpbHRlcigoZT0+dFtlXSkpfV90YWdNZXRhZGF0YSh0LGUsbil7Y29uc3QgaT17fTtlLmZvckVhY2goKGU9PntpW2VdPXRbZV1bbl19KSk7Y29uc3Qgcj1uLnJlcGxhY2UoL1wvcHJfY3VydmVzJC8sIiIpO3JldHVybiBrTyhpLHIpfV9jcmVhdGVEYXRhQ2hhbmdlQ2FsbGJhY2sodCl7cmV0dXJuIGU9Pnt0aGlzLnNldCgiX3RhZ1RvUnVuVG9EYXRhIixPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdGhpcy5fdGFnVG9SdW5Ub0RhdGEpLHtbdF06ZX0pKX19Z2V0IF9ydW5Ub0F2YWlsYWJsZVRpbWVFbnRyaWVzKCl7dmFyIHQ9dGhpcy5fdGFnVG9SdW5Ub0RhdGE7Y29uc3QgZT17fTtmb3IoY29uc3RbbixpXW9mIE9iamVjdC5lbnRyaWVzKHQpKWZvcihjb25zdFt0XW9mIE9iamVjdC5lbnRyaWVzKGkpKShudWxsPT1lW3RdfHxuPGVbdF0pJiYoZVt0XT1uKTtjb25zdCBuPXt9O2Zvcihjb25zdFtpLHJdb2YgT2JqZWN0LmVudHJpZXMoZSkpe2NvbnN0IGU9dFtyXVtpXTtuW2ldPWUubWFwKCh0PT4oe3N0ZXA6dC5zdGVwLHdhbGxfdGltZTp0LndhbGxfdGltZSxyZWxhdGl2ZTp0LndhbGxfdGltZS1lWzBdLndhbGxfdGltZX0pKSl9cmV0dXJuIG59fTtlb2UudGVtcGxhdGU9eGVgCiAgICA8dGYtZGFzaGJvYXJkLWxheW91dD4KICAgICAgPGRpdiBjbGFzcz0ic2lkZWJhciIgc2xvdD0ic2lkZWJhciI+CiAgICAgICAgPGRpdiBjbGFzcz0ic2V0dGluZ3MiPgogICAgICAgICAgPGRpdiBjbGFzcz0ic2lkZWJhci1zZWN0aW9uIj4KICAgICAgICAgICAgPHRmLW9wdGlvbi1zZWxlY3RvcgogICAgICAgICAgICAgIGlkPSJ0aW1lLXR5cGUtc2VsZWN0b3IiCiAgICAgICAgICAgICAgbmFtZT0iVGltZSBEaXNwbGF5IFR5cGUiCiAgICAgICAgICAgICAgc2VsZWN0ZWQtaWQ9Int7X3RpbWVEaXNwbGF5VHlwZX19IgogICAgICAgICAgICA+CiAgICAgICAgICAgICAgPHBhcGVyLWJ1dHRvbiBpZD0ic3RlcCI+c3RlcDwvcGFwZXItYnV0dG9uPgogICAgICAgICAgICAgIDwhLS0KICAgICAgICAgICAgLS0+CiAgICAgICAgICAgICAgPHBhcGVyLWJ1dHRvbiBpZD0icmVsYXRpdmUiPnJlbGF0aXZlPC9wYXBlci1idXR0b24+CiAgICAgICAgICAgICAgPCEtLQogICAgICAgICAgICAtLT4KICAgICAgICAgICAgICA8cGFwZXItYnV0dG9uIGlkPSJ3YWxsX3RpbWUiPndhbGw8L3BhcGVyLWJ1dHRvbj4KICAgICAgICAgICAgPC90Zi1vcHRpb24tc2VsZWN0b3I+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfcnVuVG9BdmFpbGFibGVUaW1lRW50cmllc11dIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2lkZWJhci1zZWN0aW9uIiBpZD0ic3RlcHMtc2VsZWN0b3ItY29udGFpbmVyIj4KICAgICAgICAgICAgICA8dGYtcHItY3VydmUtc3RlcHMtc2VsZWN0b3IKICAgICAgICAgICAgICAgIHJ1bnM9IltbX3JlbGV2YW50U2VsZWN0ZWRSdW5zXV0iCiAgICAgICAgICAgICAgICBydW4tdG8tc3RlcD0ie3tfcnVuVG9TdGVwfX0iCiAgICAgICAgICAgICAgICBydW4tdG8tYXZhaWxhYmxlLXRpbWUtZW50cmllcz0iW1tfcnVuVG9BdmFpbGFibGVUaW1lRW50cmllc11dIgogICAgICAgICAgICAgICAgdGltZS1kaXNwbGF5LXR5cGU9IltbX3RpbWVEaXNwbGF5VHlwZV1dIgogICAgICAgICAgICAgID4KICAgICAgICAgICAgICA8L3RmLXByLWN1cnZlLXN0ZXBzLXNlbGVjdG9yPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ic2lkZWJhci1zZWN0aW9uIHJ1bnMtc2VsZWN0b3IiPgogICAgICAgICAgPHRmLXJ1bnMtc2VsZWN0b3Igc2VsZWN0ZWQtcnVucz0ie3tfc2VsZWN0ZWRSdW5zfX0iPgogICAgICAgICAgPC90Zi1ydW5zLXNlbGVjdG9yPgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0iY2VudGVyIiBzbG90PSJjZW50ZXIiPgogICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfZGF0YU5vdEZvdW5kXV0iPgogICAgICAgICAgPGRpdiBjbGFzcz0ibm8tZGF0YS13YXJuaW5nIj4KICAgICAgICAgICAgPGgzPk5vIHByZWNpc2lvbuKAk3JlY2FsbCBjdXJ2ZSBkYXRhIHdhcyBmb3VuZC48L2gzPgogICAgICAgICAgICA8cD5Qcm9iYWJsZSBjYXVzZXM6PC9wPgogICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgWW91IGhhdmVu4oCZdCB3cml0dGVuIGFueSBwcmVjaXNpb27igJNyZWNhbGwgZGF0YSB0byB5b3VyIGV2ZW50CiAgICAgICAgICAgICAgICBmaWxlcy4KICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgIDxsaT5UZW5zb3JCb2FyZCBjYW7igJl0IGZpbmQgeW91ciBldmVudCBmaWxlcy48L2xpPgogICAgICAgICAgICA8L3VsPgogICAgICAgICAgICA8cD4KICAgICAgICAgICAgICBJZiB5b3XigJlyZSBuZXcgdG8gdXNpbmcgVGVuc29yQm9hcmQsIGFuZCB3YW50IHRvIGZpbmQgb3V0IGhvdyB0bwogICAgICAgICAgICAgIGFkZCBkYXRhIGFuZCBzZXQgdXAgeW91ciBldmVudCBmaWxlcywgY2hlY2sgb3V0IHRoZQogICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vdGVuc29yZmxvdy90ZW5zb3Jib2FyZC9ibG9iL21hc3Rlci9SRUFETUUubWQiCiAgICAgICAgICAgICAgICA+UkVBRE1FPC9hCiAgICAgICAgICAgICAgPgogICAgICAgICAgICAgIGFuZCBwZXJoYXBzIHRoZQogICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICBocmVmPSJodHRwczovL3d3dy50ZW5zb3JmbG93Lm9yZy9nZXRfc3RhcnRlZC9zdW1tYXJpZXNfYW5kX3RlbnNvcmJvYXJkIgogICAgICAgICAgICAgICAgPlRlbnNvckJvYXJkIHR1dG9yaWFsPC9hCiAgICAgICAgICAgICAgPi4KICAgICAgICAgICAgPC9wPgoKICAgICAgICAgICAgPHA+CiAgICAgICAgICAgICAgSWYgeW91IHRoaW5rIFRlbnNvckJvYXJkIGlzIGNvbmZpZ3VyZWQgcHJvcGVybHksIHBsZWFzZSBzZWUKICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3RlbnNvcmZsb3cvdGVuc29yYm9hcmQvYmxvYi9tYXN0ZXIvUkVBRE1FLm1kI215LXRlbnNvcmJvYXJkLWlzbnQtc2hvd2luZy1hbnktZGF0YS13aGF0cy13cm9uZyIKICAgICAgICAgICAgICAgID50aGUgc2VjdGlvbiBvZiB0aGUgUkVBRE1FIGRldm90ZWQgdG8gbWlzc2luZyBkYXRhIHByb2JsZW1zPC9hCiAgICAgICAgICAgICAgPgogICAgICAgICAgICAgIGFuZCBjb25zaWRlciBmaWxpbmcgYW4gaXNzdWUgb24gR2l0SHViLgogICAgICAgICAgICA8L3A+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1shX2RhdGFOb3RGb3VuZF1dIj4KICAgICAgICAgIDx0Zi10YWctZmlsdGVyZXIgdGFnLWZpbHRlcj0ie3tfdGFnRmlsdGVyfX0iPjwvdGYtdGFnLWZpbHRlcmVyPgogICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20tcmVwZWF0IiBpdGVtcz0iW1tfY2F0ZWdvcmllc11dIiBhcz0iY2F0ZWdvcnkiPgogICAgICAgICAgICA8dGYtY2F0ZWdvcnktcGFnaW5hdGVkLXZpZXcKICAgICAgICAgICAgICBjYXRlZ29yeT0iW1tjYXRlZ29yeV1dIgogICAgICAgICAgICAgIGluaXRpYWwtb3BlbmVkPSJbW19zaG91bGRPcGVuKGluZGV4KV1dIgogICAgICAgICAgICAgIGdldC1jYXRlZ29yeS1pdGVtLWtleT0iW1tfZ2V0Q2F0ZWdvcnlJdGVtS2V5XV0iCiAgICAgICAgICAgID4KICAgICAgICAgICAgICA8dGVtcGxhdGU+CiAgICAgICAgICAgICAgICA8dGYtcHItY3VydmUtY2FyZAogICAgICAgICAgICAgICAgICBhY3RpdmU9IltbYWN0aXZlXV0iCiAgICAgICAgICAgICAgICAgIHJ1bnM9IltbaXRlbS5ydW5zXV0iCiAgICAgICAgICAgICAgICAgIHRhZz0iW1tpdGVtLnRhZ11dIgogICAgICAgICAgICAgICAgICB0YWctbWV0YWRhdGE9IltbX3RhZ01ldGFkYXRhKF9ydW5Ub1RhZ0luZm8sIGl0ZW0ucnVucywgaXRlbS50YWcpXV0iCiAgICAgICAgICAgICAgICAgIHJlcXVlc3QtbWFuYWdlcj0iW1tfcmVxdWVzdE1hbmFnZXJdXSIKICAgICAgICAgICAgICAgICAgcnVuLXRvLXN0ZXAtY2FwPSJbW19ydW5Ub1N0ZXBdXSIKICAgICAgICAgICAgICAgICAgb24tZGF0YS1jaGFuZ2U9IltbX2NyZWF0ZURhdGFDaGFuZ2VDYWxsYmFjayhpdGVtLnRhZyldXSIKICAgICAgICAgICAgICAgID48L3RmLXByLWN1cnZlLWNhcmQ+CiAgICAgICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgICAgPC90Zi1jYXRlZ29yeS1wYWdpbmF0ZWQtdmlldz4KICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgPC9kaXY+CiAgICA8L3RmLWRhc2hib2FyZC1sYXlvdXQ+CgogICAgPHN0eWxlIGluY2x1ZGU9ImRhc2hib2FyZC1zdHlsZSI+PC9zdHlsZT4KICAgIDxzdHlsZT4KICAgICAgLm5vLWRhdGEtd2FybmluZyB7CiAgICAgICAgbWF4LXdpZHRoOiA1NDBweDsKICAgICAgICBtYXJnaW46IDgwcHggYXV0byAwIGF1dG87CiAgICAgIH0KCiAgICAgIC8qKiBEbyBub3QgbGV0IHRoZSBzdGVwcyBzZWxlY3RvciBvY2NsdWRlIHRoZSBydW4gc2VsZWN0b3IuICovCiAgICAgICNzdGVwcy1zZWxlY3Rvci1jb250YWluZXIgewogICAgICAgIG1heC1oZWlnaHQ6IDYwJTsKICAgICAgICBvdmVyZmxvdy15OiBhdXRvOwogICAgICB9CiAgICA8L3N0eWxlPgogIGAsdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxlb2UucHJvdG90eXBlLCJyZWxvYWRPblJlYWR5Iix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLGVvZS5wcm90b3R5cGUsIl90aW1lRGlzcGxheVR5cGUiLHZvaWQgMCksdChbbyh7dHlwZTpBcnJheX0pLGUoImRlc2lnbjp0eXBlIixBcnJheSldLGVvZS5wcm90b3R5cGUsIl9zZWxlY3RlZFJ1bnMiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sZW9lLnByb3RvdHlwZSwiX3J1blRvVGFnSW5mbyIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxlb2UucHJvdG90eXBlLCJfdGFnVG9SdW5Ub0RhdGEiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3Qsbm90aWZ5OiEwfSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLGVvZS5wcm90b3R5cGUsIl9ydW5Ub1N0ZXAiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxlb2UucHJvdG90eXBlLCJfZGF0YU5vdEZvdW5kIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLGVvZS5wcm90b3R5cGUsIl90YWdGaWx0ZXIiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxlb2UucHJvdG90eXBlLCJfY2F0ZWdvcmllc0RvbVJlYWR5Iix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLGVvZS5wcm90b3R5cGUsIl9nZXRDYXRlZ29yeUl0ZW1LZXkiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsYnIpXSxlb2UucHJvdG90eXBlLCJfcmVxdWVzdE1hbmFnZXIiLHZvaWQgMCksdChbbyh7dHlwZTpOdW1iZXIsbm90aWZ5OiEwfSksZSgiZGVzaWduOnR5cGUiLE51bWJlcildLGVvZS5wcm90b3R5cGUsIl9zdGVwIix2b2lkIDApLHQoW3MoIl9ydW5Ub1RhZ0luZm8iLCJfc2VsZWN0ZWRSdW5zIiwiX3RhZ0ZpbHRlciIsIl9jYXRlZ29yaWVzRG9tUmVhZHkiKSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSldLGVvZS5wcm90b3R5cGUsIl9jYXRlZ29yaWVzIixudWxsKSx0KFtzKCJfc2VsZWN0ZWRSdW5zIiwiX3J1blRvVGFnSW5mbyIpLGUoImRlc2lnbjp0eXBlIixBcnJheSksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sZW9lLnByb3RvdHlwZSwiX3JlbGV2YW50U2VsZWN0ZWRSdW5zIixudWxsKSx0KFtzKCJfdGFnVG9SdW5Ub0RhdGEiKSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSxlb2UucHJvdG90eXBlLCJfcnVuVG9BdmFpbGFibGVUaW1lRW50cmllcyIsbnVsbCksZW9lPXQoW2koInRmLXByLWN1cnZlLWRhc2hib2FyZCIpXSxlb2UpO2xldCBub2U9Y2xhc3MgZXh0ZW5kcyhjcihFbCkpe2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLnJlbG9hZE9uUmVhZHk9ITAsdGhpcy5fc2hvd0Rvd25sb2FkTGlua3M9UXMoIl9zaG93RG93bmxvYWRMaW5rcyIse2RlZmF1bHRWYWx1ZTohMSx1c2VMb2NhbFN0b3JhZ2U6ITB9KS5jYWxsKHRoaXMpLHRoaXMuX3Ntb290aGluZ1dlaWdodD1ybCgiX3Ntb290aGluZ1dlaWdodCIse2RlZmF1bHRWYWx1ZTouNn0pLmNhbGwodGhpcyksdGhpcy5faWdub3JlWU91dGxpZXJzPVFzKCJfaWdub3JlWU91dGxpZXJzIix7ZGVmYXVsdFZhbHVlOiEwLHVzZUxvY2FsU3RvcmFnZTohMH0pLmNhbGwodGhpcyksdGhpcy5feFR5cGU9d0N0LlNURVAsdGhpcy5fc2VsZWN0ZWRSdW5zPVtdLHRoaXMuX3RhZ0ZpbHRlcj0iIix0aGlzLl9jYXRlZ29yaWVzPVtdLHRoaXMuX2dldENhdGVnb3J5SXRlbUtleT10PT50LnRhZyx0aGlzLl9yZXF1ZXN0TWFuYWdlcj1uZXcgYnIoNTApLHRoaXMuX3Nob3dEb3dubG9hZExpbmtzT2JzZXJ2ZXI9dGwoIl9zaG93RG93bmxvYWRMaW5rcyIse2RlZmF1bHRWYWx1ZTohMSx1c2VMb2NhbFN0b3JhZ2U6ITB9KSx0aGlzLl9zbW9vdGhpbmdXZWlnaHRPYnNlcnZlcj1vbCgiX3Ntb290aGluZ1dlaWdodCIse2RlZmF1bHRWYWx1ZTouNn0pLHRoaXMuX2lnbm9yZVlPdXRsaWVyc09ic2VydmVyPXRsKCJfaWdub3JlWU91dGxpZXJzIix7ZGVmYXVsdFZhbHVlOiEwLHVzZUxvY2FsU3RvcmFnZTohMH0pfWdldCBfc21vb3RoaW5nRW5hYmxlZCgpe3JldHVybiB0aGlzLl9zbW9vdGhpbmdXZWlnaHQ+MH1fZ2V0Q2F0ZWdvcnlLZXkodCl7cmV0dXJuIHQubWV0YWRhdGEudHlwZT09QXIuU0VBUkNIX1JFU1VMVFM/IiI6dC5uYW1lfV9zaG91bGRPcGVuKHQpe3JldHVybiB0PD0yfXJlYWR5KCl7c3VwZXIucmVhZHkoKSx0aGlzLnJlbG9hZE9uUmVhZHkmJnRoaXMucmVsb2FkKCl9cmVsb2FkKCl7dGhpcy5fZmV0Y2hUYWdzKCkudGhlbigoKCk9Pnt0aGlzLl9yZWxvYWRDaGFydHMoKX0pKX1fZmV0Y2hUYWdzKCl7Y29uc3QgdD1FcigpLnBsdWdpblJvdXRlKCJzY2FsYXJzIiwiL3RhZ3MiKTtyZXR1cm4gdGhpcy5fcmVxdWVzdE1hbmFnZXIucmVxdWVzdCh0KS50aGVuKCh0PT57aWYoQ2UuZXhwb3J0cy5pc0VxdWFsKHQsdGhpcy5fcnVuVG9UYWdJbmZvKSlyZXR1cm47Y29uc3QgZT1mcihDZS5leHBvcnRzLm1hcFZhbHVlcyh0LCh0PT5PYmplY3Qua2V5cyh0KSkpKTt0aGlzLnNldCgiX2RhdGFOb3RGb3VuZCIsMD09PWUubGVuZ3RoKSx0aGlzLnNldCgiX3J1blRvVGFnSW5mbyIsdCksdGhpcy5hc3luYygoKCk9Pnt0aGlzLnNldCgiX2NhdGVnb3JpZXNEb21SZWFkeSIsITApfSkpfSkpfV9yZWxvYWRDaGFydHMoKXt0aGlzLnJvb3QucXVlcnlTZWxlY3RvckFsbCgidGYtc2NhbGFyLWNhcmQiKS5mb3JFYWNoKCh0PT57dC5yZWxvYWQoKX0pKX1fdXBkYXRlQ2F0ZWdvcmllcygpe3ZhciB0PXRoaXMuX3NlbGVjdGVkUnVucztsZXQgZSxuPXRoaXMuX3RhZ0ZpbHRlcjtlPVByKENlLmV4cG9ydHMubWFwVmFsdWVzKHRoaXMuX3J1blRvVGFnSW5mbywodD0+T2JqZWN0LmtleXModCkpKSx0LG4pLGUuZm9yRWFjaCgodD0+e3QuaXRlbXM9dC5pdGVtcy5tYXAoKHQ9Pih7dGFnOnQudGFnLHNlcmllczp0LnJ1bnMubWFwKChlPT4oe3J1bjplLHRhZzp0LnRhZ30pKSl9KSkpfSkpLHRoaXMudXBkYXRlQXJyYXlQcm9wKCJfY2F0ZWdvcmllcyIsZSx0aGlzLl9nZXRDYXRlZ29yeUtleSl9X3RhZ01ldGFkYXRhKHQsZSxuKXtjb25zdCBpPXQubmFtZSxyPW4udGFnLG89e307bi5zZXJpZXMuZm9yRWFjaCgoKHtydW46dH0pPT57b1t0XT1lW3RdW3JdfSkpO2NvbnN0IGE9ci5yZXBsYWNlKC9cL3NjYWxhcl9zdW1tYXJ5JC8sIiIpO2xldHtkZXNjcmlwdGlvbjpzLGRpc3BsYXlOYW1lOmx9PWtPKG8sYSk7cmV0dXJuIHQubWV0YWRhdGEudHlwZT09QXIuUFJFRklYX0dST1VQJiZsLnN0YXJ0c1dpdGgoaSsiLyIpJiYobD1sLnNsaWNlKGkubGVuZ3RoKzEpKSx7ZGVzY3JpcHRpb246cyxkaXNwbGF5TmFtZTpsfX19O25vZS50ZW1wbGF0ZT14ZWAKICAgIDx0Zi1kYXNoYm9hcmQtbGF5b3V0PgogICAgICA8ZGl2IGNsYXNzPSJzaWRlYmFyIiBzbG90PSJzaWRlYmFyIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzZXR0aW5ncyI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJzaWRlYmFyLXNlY3Rpb24iPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJsaW5lLWl0ZW0iPgogICAgICAgICAgICAgIDxwYXBlci1jaGVja2JveAogICAgICAgICAgICAgICAgaWQ9InNob3ctZG93bmxvYWQtbGlua3MiCiAgICAgICAgICAgICAgICBjaGVja2VkPSJ7e19zaG93RG93bmxvYWRMaW5rc319IgogICAgICAgICAgICAgICAgPlNob3cgZGF0YSBkb3dubG9hZCBsaW5rczwvcGFwZXItY2hlY2tib3gKICAgICAgICAgICAgICA+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJsaW5lLWl0ZW0iPgogICAgICAgICAgICAgIDxwYXBlci1jaGVja2JveAogICAgICAgICAgICAgICAgaWQ9Imlnbm9yZS15LW91dGxpZXIiCiAgICAgICAgICAgICAgICBjaGVja2VkPSJ7e19pZ25vcmVZT3V0bGllcnN9fSIKICAgICAgICAgICAgICAgID5JZ25vcmUgb3V0bGllcnMgaW4gY2hhcnQgc2NhbGluZzwvcGFwZXItY2hlY2tib3gKICAgICAgICAgICAgICA+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGlkPSJ0b29sdGlwLXNvcnRpbmciPgogICAgICAgICAgICAgIDxkaXY+VG9vbHRpcCBzb3J0aW5nIG1ldGhvZDo8L2Rpdj4KICAgICAgICAgICAgICA8cGFwZXItZHJvcGRvd24tbWVudQogICAgICAgICAgICAgICAgbm8tbGFiZWwtZmxvYXQKICAgICAgICAgICAgICAgIHNlbGVjdGVkLWl0ZW0tbGFiZWw9Int7X3Rvb2x0aXBTb3J0aW5nTWV0aG9kfX0iCiAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgPHBhcGVyLWxpc3Rib3gKICAgICAgICAgICAgICAgICAgY2xhc3M9ImRyb3Bkb3duLWNvbnRlbnQiCiAgICAgICAgICAgICAgICAgIHNlbGVjdGVkPSIwIgogICAgICAgICAgICAgICAgICBzbG90PSJkcm9wZG93bi1jb250ZW50IgogICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICA8cGFwZXItaXRlbT5kZWZhdWx0PC9wYXBlci1pdGVtPgogICAgICAgICAgICAgICAgICA8cGFwZXItaXRlbT5kZXNjZW5kaW5nPC9wYXBlci1pdGVtPgogICAgICAgICAgICAgICAgICA8cGFwZXItaXRlbT5hc2NlbmRpbmc8L3BhcGVyLWl0ZW0+CiAgICAgICAgICAgICAgICAgIDxwYXBlci1pdGVtPm5lYXJlc3Q8L3BhcGVyLWl0ZW0+CiAgICAgICAgICAgICAgICA8L3BhcGVyLWxpc3Rib3g+CiAgICAgICAgICAgICAgPC9wYXBlci1kcm9wZG93bi1tZW51PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0ic2lkZWJhci1zZWN0aW9uIj4KICAgICAgICAgICAgPHRmLXNtb290aGluZy1pbnB1dAogICAgICAgICAgICAgIHdlaWdodD0ie3tfc21vb3RoaW5nV2VpZ2h0fX0iCiAgICAgICAgICAgICAgc3RlcD0iMC4wMDEiCiAgICAgICAgICAgICAgbWluPSIwIgogICAgICAgICAgICAgIG1heD0iMC45OTkiCiAgICAgICAgICAgID48L3RmLXNtb290aGluZy1pbnB1dD4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0ic2lkZWJhci1zZWN0aW9uIj4KICAgICAgICAgICAgPHRmLW9wdGlvbi1zZWxlY3RvcgogICAgICAgICAgICAgIGlkPSJ4LXR5cGUtc2VsZWN0b3IiCiAgICAgICAgICAgICAgbmFtZT0iSG9yaXpvbnRhbCBBeGlzIgogICAgICAgICAgICAgIHNlbGVjdGVkLWlkPSJ7e194VHlwZX19IgogICAgICAgICAgICA+CiAgICAgICAgICAgICAgPHBhcGVyLWJ1dHRvbiBpZD0ic3RlcCI+c3RlcDwvcGFwZXItYnV0dG9uCiAgICAgICAgICAgICAgPjwhLS0KICAgICAgICAgICAgLS0+PHBhcGVyLWJ1dHRvbiBpZD0icmVsYXRpdmUiPnJlbGF0aXZlPC9wYXBlci1idXR0b24KICAgICAgICAgICAgICA+PCEtLQogICAgICAgICAgICAtLT48cGFwZXItYnV0dG9uIGlkPSJ3YWxsX3RpbWUiPndhbGw8L3BhcGVyLWJ1dHRvbj4KICAgICAgICAgICAgPC90Zi1vcHRpb24tc2VsZWN0b3I+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJzaWRlYmFyLXNlY3Rpb24gcnVucy1zZWxlY3RvciI+CiAgICAgICAgICA8dGYtcnVucy1zZWxlY3RvciBzZWxlY3RlZC1ydW5zPSJ7e19zZWxlY3RlZFJ1bnN9fSI+CiAgICAgICAgICA8L3RmLXJ1bnMtc2VsZWN0b3I+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJjZW50ZXIiIHNsb3Q9ImNlbnRlciI+CiAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19kYXRhTm90Rm91bmRdXSI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJuby1kYXRhLXdhcm5pbmciPgogICAgICAgICAgICA8aDM+Tm8gc2NhbGFyIGRhdGEgd2FzIGZvdW5kLjwvaDM+CiAgICAgICAgICAgIDxwPlByb2JhYmxlIGNhdXNlczo8L3A+CiAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICA8bGk+WW91IGhhdmVu4oCZdCB3cml0dGVuIGFueSBzY2FsYXIgZGF0YSB0byB5b3VyIGV2ZW50IGZpbGVzLjwvbGk+CiAgICAgICAgICAgICAgPGxpPlRlbnNvckJvYXJkIGNhbuKAmXQgZmluZCB5b3VyIGV2ZW50IGZpbGVzLjwvbGk+CiAgICAgICAgICAgIDwvdWw+CgogICAgICAgICAgICA8cD4KICAgICAgICAgICAgICBJZiB5b3XigJlyZSBuZXcgdG8gdXNpbmcgVGVuc29yQm9hcmQsIGFuZCB3YW50IHRvIGZpbmQgb3V0IGhvdyB0bwogICAgICAgICAgICAgIGFkZCBkYXRhIGFuZCBzZXQgdXAgeW91ciBldmVudCBmaWxlcywgY2hlY2sgb3V0IHRoZQogICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vdGVuc29yZmxvdy90ZW5zb3Jib2FyZC9ibG9iL21hc3Rlci9SRUFETUUubWQiCiAgICAgICAgICAgICAgICA+UkVBRE1FPC9hCiAgICAgICAgICAgICAgPgogICAgICAgICAgICAgIGFuZCBwZXJoYXBzIHRoZQogICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICBocmVmPSJodHRwczovL3d3dy50ZW5zb3JmbG93Lm9yZy9nZXRfc3RhcnRlZC9zdW1tYXJpZXNfYW5kX3RlbnNvcmJvYXJkIgogICAgICAgICAgICAgICAgPlRlbnNvckJvYXJkIHR1dG9yaWFsPC9hCiAgICAgICAgICAgICAgPi4KICAgICAgICAgICAgPC9wPgoKICAgICAgICAgICAgPHA+CiAgICAgICAgICAgICAgSWYgeW91IHRoaW5rIFRlbnNvckJvYXJkIGlzIGNvbmZpZ3VyZWQgcHJvcGVybHksIHBsZWFzZSBzZWUKICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3RlbnNvcmZsb3cvdGVuc29yYm9hcmQvYmxvYi9tYXN0ZXIvUkVBRE1FLm1kI215LXRlbnNvcmJvYXJkLWlzbnQtc2hvd2luZy1hbnktZGF0YS13aGF0cy13cm9uZyIKICAgICAgICAgICAgICAgID50aGUgc2VjdGlvbiBvZiB0aGUgUkVBRE1FIGRldm90ZWQgdG8gbWlzc2luZyBkYXRhIHByb2JsZW1zPC9hCiAgICAgICAgICAgICAgPgogICAgICAgICAgICAgIGFuZCBjb25zaWRlciBmaWxpbmcgYW4gaXNzdWUgb24gR2l0SHViLgogICAgICAgICAgICA8L3A+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1shX2RhdGFOb3RGb3VuZF1dIj4KICAgICAgICAgIDx0Zi10YWctZmlsdGVyZXIgdGFnLWZpbHRlcj0ie3tfdGFnRmlsdGVyfX0iPjwvdGYtdGFnLWZpbHRlcmVyPgogICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20tcmVwZWF0IiBpdGVtcz0iW1tfY2F0ZWdvcmllc11dIiBhcz0iY2F0ZWdvcnkiPgogICAgICAgICAgICA8dGYtY2F0ZWdvcnktcGFnaW5hdGVkLXZpZXcKICAgICAgICAgICAgICBjYXRlZ29yeT0iW1tjYXRlZ29yeV1dIgogICAgICAgICAgICAgIGluaXRpYWwtb3BlbmVkPSJbW19zaG91bGRPcGVuKGluZGV4KV1dIgogICAgICAgICAgICAgIGdldC1jYXRlZ29yeS1pdGVtLWtleT0iW1tfZ2V0Q2F0ZWdvcnlJdGVtS2V5XV0iCiAgICAgICAgICAgID4KICAgICAgICAgICAgICA8dGVtcGxhdGU+CiAgICAgICAgICAgICAgICA8dGYtc2NhbGFyLWNhcmQKICAgICAgICAgICAgICAgICAgYWN0aXZlPSJbW2FjdGl2ZV1dIgogICAgICAgICAgICAgICAgICBkYXRhLXRvLWxvYWQ9IltbaXRlbS5zZXJpZXNdXSIKICAgICAgICAgICAgICAgICAgaWdub3JlLXktb3V0bGllcnM9IltbX2lnbm9yZVlPdXRsaWVyc11dIgogICAgICAgICAgICAgICAgICBtdWx0aS1leHBlcmltZW50cz0iW1tfZ2V0TXVsdGlFeHBlcmltZW50cyhkYXRhU2VsZWN0aW9uKV1dIgogICAgICAgICAgICAgICAgICByZXF1ZXN0LW1hbmFnZXI9IltbX3JlcXVlc3RNYW5hZ2VyXV0iCiAgICAgICAgICAgICAgICAgIHNob3ctZG93bmxvYWQtbGlua3M9IltbX3Nob3dEb3dubG9hZExpbmtzXV0iCiAgICAgICAgICAgICAgICAgIHNtb290aGluZy1lbmFibGVkPSJbW19zbW9vdGhpbmdFbmFibGVkXV0iCiAgICAgICAgICAgICAgICAgIHNtb290aGluZy13ZWlnaHQ9IltbX3Ntb290aGluZ1dlaWdodF1dIgogICAgICAgICAgICAgICAgICB0YWctbWV0YWRhdGE9IltbX3RhZ01ldGFkYXRhKGNhdGVnb3J5LCBfcnVuVG9UYWdJbmZvLCBpdGVtKV1dIgogICAgICAgICAgICAgICAgICB0YWc9IltbaXRlbS50YWddXSIKICAgICAgICAgICAgICAgICAgdG9vbHRpcC1zb3J0aW5nLW1ldGhvZD0iW1tfdG9vbHRpcFNvcnRpbmdNZXRob2RdXSIKICAgICAgICAgICAgICAgICAgeC10eXBlPSJbW194VHlwZV1dIgogICAgICAgICAgICAgICAgICBiYXRjaC1zaXplPSJbW2ZlYXR1cmVGbGFncy5zY2FsYXJzQmF0Y2hTaXplXV0iCiAgICAgICAgICAgICAgICAgIGluLWNvbGFiPSJbW2ZlYXR1cmVGbGFncy5pbkNvbGFiXV0iCiAgICAgICAgICAgICAgICA+PC90Zi1zY2FsYXItY2FyZD4KICAgICAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgICA8L3RmLWNhdGVnb3J5LXBhZ2luYXRlZC12aWV3PgogICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICA8L3RlbXBsYXRlPgogICAgICA8L2Rpdj4KICAgIDwvdGYtZGFzaGJvYXJkLWxheW91dD4KCiAgICA8c3R5bGUgaW5jbHVkZT0iZGFzaGJvYXJkLXN0eWxlIj48L3N0eWxlPgogICAgPHN0eWxlPgogICAgICAjdG9vbHRpcC1zb3J0aW5nIHsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIG1hcmdpbi10b3A6IDE1cHg7CiAgICAgIH0KCiAgICAgICN0b29sdGlwLXNvcnRpbmcgcGFwZXItZHJvcGRvd24tbWVudSB7CiAgICAgICAgbWFyZ2luLWxlZnQ6IDEwcHg7CiAgICAgICAgLS1wYXBlci1pbnB1dC1jb250YWluZXItZm9jdXMtY29sb3I6IHZhcigtLXRiLW9yYW5nZS1zdHJvbmcpOwogICAgICAgIHdpZHRoOiAxMDVweDsKICAgICAgfQoKICAgICAgLmxpbmUtaXRlbSB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgcGFkZGluZy10b3A6IDVweDsKICAgICAgfQogICAgICAubm8tZGF0YS13YXJuaW5nIHsKICAgICAgICBtYXgtd2lkdGg6IDU0MHB4OwogICAgICAgIG1hcmdpbjogODBweCBhdXRvIDAgYXV0bzsKICAgICAgfQogICAgICAuY2VudGVyIHsKICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgYCx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLG5vZS5wcm90b3R5cGUsInJlbG9hZE9uUmVhZHkiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sbm9lLnByb3RvdHlwZSwiZmVhdHVyZUZsYWdzIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbixub3RpZnk6ITAsb2JzZXJ2ZXI6Il9zaG93RG93bmxvYWRMaW5rc09ic2VydmVyIn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sbm9lLnByb3RvdHlwZSwiX3Nob3dEb3dubG9hZExpbmtzIix2b2lkIDApLHQoW28oe3R5cGU6TnVtYmVyLG5vdGlmeTohMCxvYnNlcnZlcjoiX3Ntb290aGluZ1dlaWdodE9ic2VydmVyIn0pLGUoImRlc2lnbjp0eXBlIixOdW1iZXIpXSxub2UucHJvdG90eXBlLCJfc21vb3RoaW5nV2VpZ2h0Iix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbixvYnNlcnZlcjoiX2lnbm9yZVlPdXRsaWVyc09ic2VydmVyIn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sbm9lLnByb3RvdHlwZSwiX2lnbm9yZVlPdXRsaWVycyIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxub2UucHJvdG90eXBlLCJfeFR5cGUiLHZvaWQgMCksdChbbyh7dHlwZTpBcnJheX0pLGUoImRlc2lnbjp0eXBlIixBcnJheSldLG5vZS5wcm90b3R5cGUsIl9zZWxlY3RlZFJ1bnMiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sbm9lLnByb3RvdHlwZSwiX3J1blRvVGFnSW5mbyIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLG5vZS5wcm90b3R5cGUsIl9kYXRhTm90Rm91bmQiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sbm9lLnByb3RvdHlwZSwiX3RhZ0ZpbHRlciIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLG5vZS5wcm90b3R5cGUsIl9jYXRlZ29yaWVzRG9tUmVhZHkiLHZvaWQgMCksdChbbyh7dHlwZTpBcnJheX0pLGUoImRlc2lnbjp0eXBlIixBcnJheSldLG5vZS5wcm90b3R5cGUsIl9jYXRlZ29yaWVzIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLG5vZS5wcm90b3R5cGUsIl9nZXRDYXRlZ29yeUl0ZW1LZXkiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsYnIpXSxub2UucHJvdG90eXBlLCJfcmVxdWVzdE1hbmFnZXIiLHZvaWQgMCksdChbcygiX3Ntb290aGluZ1dlaWdodCIpLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSxub2UucHJvdG90eXBlLCJfc21vb3RoaW5nRW5hYmxlZCIsbnVsbCksdChbYSgiX3J1blRvVGFnSW5mbyIsIl9zZWxlY3RlZFJ1bnMiLCJfdGFnRmlsdGVyIiwiX2NhdGVnb3JpZXNEb21SZWFkeSIpLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKSxlKCJkZXNpZ246cmV0dXJudHlwZSIsdm9pZCAwKV0sbm9lLnByb3RvdHlwZSwiX3VwZGF0ZUNhdGVnb3JpZXMiLG51bGwpLG5vZT10KFtpKCJ0Zi1zY2FsYXItZGFzaGJvYXJkIildLG5vZSk7bGV0IGlvZT1jbGFzcyBleHRlbmRzKGNyKHdlKSl7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMuX3RleHRzPVtdLHRoaXMuX2NhbmNlbGxlcj1uZXcgeE99Z2V0IF9ydW5Db2xvcigpe3JldHVybiBfTyh0aGlzLnJ1bil9X2NoYW5nZVJ1bkNvbG9yKCl7dGhpcy51cGRhdGVTdHlsZXMoeyItLXRiLXRleHQtbG9hZGVyLW91dGxpbmUiOnRoaXMuX3J1bkNvbG9yfSl9YXR0YWNoZWQoKXt0aGlzLnJlbG9hZCgpfXJlbG9hZCgpe2lmKCF0aGlzLmlzQXR0YWNoZWQpcmV0dXJuO3RoaXMuX2NhbmNlbGxlci5jYW5jZWxBbGwoKTtjb25zdCB0PVBPKEVyKCkucGx1Z2luUm91dGUoInRleHQiLCIvdGV4dCIpLHt0YWc6dGhpcy50YWcscnVuOnRoaXMucnVuLG1hcmtkb3duOnRoaXMubWFya2Rvd25FbmFibGVkPyJ0cnVlIjoiZmFsc2UifSksZT10aGlzLl9jYW5jZWxsZXIuY2FuY2VsbGFibGUoKHQ9PntpZih0LmNhbmNlbGxlZClyZXR1cm47Y29uc3QgZT10LnZhbHVlLm1hcCgodD0+KHt3YWxsX3RpbWU6bmV3IERhdGUoMWUzKnQud2FsbF90aW1lKSxzdGVwOnQuc3RlcCx0ZXh0OnQudGV4dH0pKSk7dGhpcy5zZXQoIl90ZXh0cyIsZS5zbGljZSgpLnJldmVyc2UoKSl9KSk7dGhpcy5yZXF1ZXN0TWFuYWdlci5yZXF1ZXN0KHQpLnRoZW4oZSl9X2Zvcm1hdFN0ZXAodCl7cmV0dXJuIER5KCIsIikodCl9fTtpb2UudGVtcGxhdGU9eGVgCiAgICA8dGYtY2FyZC1oZWFkaW5nIHJ1bj0iW1tydW5dXSIgdGFnPSJbW3RhZ11dIiBjb2xvcj0iW1tfcnVuQ29sb3JdXSI+CiAgICA8L3RmLWNhcmQtaGVhZGluZz4KICAgIDxwYXBlci1tYXRlcmlhbAogICAgICBlbGV2YXRpb249IjEiCiAgICAgIGlkPSJzdGVwcy1jb250YWluZXIiCiAgICAgIGNsYXNzPSJjb250YWluZXIgc2Nyb2xsYmFyIgogICAgPgogICAgICA8dGVtcGxhdGUgaXM9ImRvbS1yZXBlYXQiIGl0ZW1zPSJbW190ZXh0c11dIj4KICAgICAgICA8cGFwZXItbWF0ZXJpYWwgZWxldmF0aW9uPSIxIiBjbGFzcz0ic3RlcC1jb250YWluZXIiPgogICAgICAgICAgc3RlcCA8c3BhbiBjbGFzcz0ic3RlcC12YWx1ZSI+W1tfZm9ybWF0U3RlcChpdGVtLnN0ZXApXV08L3NwYW4+CiAgICAgICAgPC9wYXBlci1tYXRlcmlhbD4KICAgICAgICA8cGFwZXItbWF0ZXJpYWwgZWxldmF0aW9uPSIxIiBjbGFzcz0idGV4dCI+CiAgICAgICAgICA8dGYtbWFya2Rvd24tdmlldyBodG1sPSJbW2l0ZW0udGV4dF1dIj48L3RmLW1hcmtkb3duLXZpZXc+CiAgICAgICAgPC9wYXBlci1tYXRlcmlhbD4KICAgICAgPC90ZW1wbGF0ZT4KICAgIDwvcGFwZXItbWF0ZXJpYWw+CiAgICA8c3R5bGUgaW5jbHVkZT0ic2Nyb2xsYmFyLXN0eWxlIj48L3N0eWxlPgogICAgPHN0eWxlPgogICAgICA6aG9zdCB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIGhlaWdodDogYXV0bzsKICAgICAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTVweDsKICAgICAgfQogICAgICAuc2Nyb2xsYmFyIHsKICAgICAgICB3aWxsLWNoYW5nZTogdHJhbnNmb3JtOwogICAgICB9CiAgICAgICNzdGVwcy1jb250YWluZXIgewogICAgICAgIGJvcmRlci1yYWRpdXM6IDNweDsKICAgICAgICBib3JkZXI6IDJweCBzb2xpZCAvKiBjb2xvciBjb21wdXRlZCBhbmQgc2V0IGFzIGlubGluZSBzdHlsZSAqLzsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICBtYXgtaGVpZ2h0OiA1MDBweDsKICAgICAgICBvdmVyZmxvdzogYXV0bzsKICAgICAgICBwYWRkaW5nOiAxMHB4OwogICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tdGItdGV4dC1sb2FkZXItb3V0bGluZSk7CiAgICAgIH0KICAgICAgLnRleHQgewogICAgICAgIGJhY2tncm91bmQtY29sb3I6IGluaGVyaXQ7CiAgICAgICAgYm9yZGVyLXJhZGl1czogMCAzcHggM3B4IDNweDsKICAgICAgICBwYWRkaW5nOiA1cHg7CiAgICAgICAgd29yZC1icmVhazogYnJlYWstd29yZDsKICAgICAgfQogICAgICAuc3RlcC1jb250YWluZXIgewogICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXRiLXVpLWxpZ2h0LWFjY2VudCk7CiAgICAgICAgYm9yZGVyLWJvdHRvbTogbm9uZTsKICAgICAgICBib3JkZXItcmFkaXVzOiAzcHggM3B4IDAgMDsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS10Yi11aS1ib3JkZXIpOwogICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgICBmb250LXNpemU6IDEycHg7CiAgICAgICAgZm9udC1zdHlsZTogaXRhbGljOwogICAgICAgIG1hcmdpbi1sZWZ0OiAtMXB4OyAvKiB0byBjb3JyZWN0IGZvciBib3JkZXIgKi8KICAgICAgICBwYWRkaW5nOiAzcHg7CiAgICAgIH0KICAgICAgLnN0ZXAtY29udGFpbmVyOm5vdCg6Zmlyc3QtY2hpbGQpIHsKICAgICAgICBtYXJnaW4tdG9wOiAxNXB4OwogICAgICB9CgogICAgICB0Zi1jYXJkLWhlYWRpbmcgewogICAgICAgIG1hcmdpbi1ib3R0b206IDEwcHg7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgYCx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxpb2UucHJvdG90eXBlLCJydW4iLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0saW9lLnByb3RvdHlwZSwidGFnIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0saW9lLnByb3RvdHlwZSwibWFya2Rvd25FbmFibGVkIix2b2lkIDApLHQoW28oe3R5cGU6QXJyYXl9KSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpXSxpb2UucHJvdG90eXBlLCJfdGV4dHMiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsYnIpXSxpb2UucHJvdG90eXBlLCJyZXF1ZXN0TWFuYWdlciIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIix4TyldLGlvZS5wcm90b3R5cGUsIl9jYW5jZWxsZXIiLHZvaWQgMCksdChbcygicnVuIiksZSgiZGVzaWduOnR5cGUiLFN0cmluZyksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0saW9lLnByb3RvdHlwZSwiX3J1bkNvbG9yIixudWxsKSx0KFthKCJfcnVuQ29sb3IiKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLGlvZS5wcm90b3R5cGUsIl9jaGFuZ2VSdW5Db2xvciIsbnVsbCksaW9lPXQoW2koInRmLXRleHQtbG9hZGVyIildLGlvZSk7bGV0IHJvZT1jbGFzcyBleHRlbmRzKGNyKHdlKSl7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMucmVsb2FkT25SZWFkeT0hMCx0aGlzLl9tYXJrZG93bkVuYWJsZWQ9UXMoIl9tYXJrZG93bkVuYWJsZWQiLHtkZWZhdWx0VmFsdWU6ITAsdXNlTG9jYWxTdG9yYWdlOiEwfSkuY2FsbCh0aGlzKSx0aGlzLl9yZXF1ZXN0TWFuYWdlcj1uZXcgYnIsdGhpcy5fbWFya2Rvd25FbmFibGVkU3RvcmFnZU9ic2VydmVyPXRsKCJfbWFya2Rvd25FbmFibGVkIix7ZGVmYXVsdFZhbHVlOiEwLHVzZUxvY2FsU3RvcmFnZTohMH0pfXN0YXRpYyBnZXQgb2JzZXJ2ZXJzKCl7cmV0dXJuWyJfbWFya2Rvd25FbmFibGVkT2JzZXJ2ZXIoX21hcmtkb3duRW5hYmxlZCkiXX1yZWFkeSgpe3N1cGVyLnJlYWR5KCksdGhpcy5yZWxvYWRPblJlYWR5JiZ0aGlzLnJlbG9hZCgpfXJlbG9hZCgpe3RoaXMuX2ZldGNoVGFncygpLnRoZW4oKCgpPT57dGhpcy5fcmVsb2FkVGV4dHMoKX0pKX1fc2hvdWxkT3Blbih0KXtyZXR1cm4gdDw9Mn1fZmV0Y2hUYWdzKCl7Y29uc3QgdD1FcigpLnBsdWdpblJvdXRlKCJ0ZXh0IiwiL3RhZ3MiKTtyZXR1cm4gdGhpcy5fcmVxdWVzdE1hbmFnZXIucmVxdWVzdCh0KS50aGVuKCh0PT57aWYoQ2UuZXhwb3J0cy5pc0VxdWFsKHQsdGhpcy5fcnVuVG9UYWcpKXJldHVybjtjb25zdCBlPWZyKHQpO3RoaXMuc2V0KCJfZGF0YU5vdEZvdW5kIiwwPT09ZS5sZW5ndGgpLHRoaXMuc2V0KCJfcnVuVG9UYWciLHQpLHRoaXMuYXN5bmMoKCgpPT57dGhpcy5zZXQoIl9jYXRlZ29yaWVzRG9tUmVhZHkiLCEwKX0pKX0pKX1fcmVsb2FkVGV4dHMoKXt0aGlzLnJvb3QucXVlcnlTZWxlY3RvckFsbCgidGYtdGV4dC1sb2FkZXIiKS5mb3JFYWNoKCh0PT57dC5yZWxvYWQoKX0pKX1nZXQgX2NhdGVnb3JpZXMoKXtyZXR1cm4gSXIodGhpcy5fcnVuVG9UYWcsdGhpcy5fc2VsZWN0ZWRSdW5zLHRoaXMuX3RhZ0ZpbHRlcil9X21hcmtkb3duRW5hYmxlZE9ic2VydmVyKCl7dGhpcy5fcmVsb2FkVGV4dHMoKX19O3JvZS50ZW1wbGF0ZT14ZWAKICAgIDx0Zi1kYXNoYm9hcmQtbGF5b3V0PgogICAgICA8ZGl2IGNsYXNzPSJzaWRlYmFyIiBzbG90PSJzaWRlYmFyIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzaWRlYmFyLXNlY3Rpb24iPgogICAgICAgICAgPGRpdiBjbGFzcz0ibGluZS1pdGVtIj4KICAgICAgICAgICAgPHBhcGVyLWNoZWNrYm94IGNoZWNrZWQ9Int7X21hcmtkb3duRW5hYmxlZH19IgogICAgICAgICAgICAgID5FbmFibGUgTWFya2Rvd248L3BhcGVyLWNoZWNrYm94CiAgICAgICAgICAgID4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InNpZGViYXItc2VjdGlvbiBydW5zLXNlbGVjdG9yIj4KICAgICAgICAgIDx0Zi1ydW5zLXNlbGVjdG9yIHNlbGVjdGVkLXJ1bnM9Int7X3NlbGVjdGVkUnVuc319Ij4KICAgICAgICAgIDwvdGYtcnVucy1zZWxlY3Rvcj4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9ImNlbnRlciIgc2xvdD0iY2VudGVyIj4KICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbX2RhdGFOb3RGb3VuZF1dIj4KICAgICAgICAgIDxkaXYgY2xhc3M9Im5vLWRhdGEtd2FybmluZyI+CiAgICAgICAgICAgIDxoMz5ObyB0ZXh0IGRhdGEgd2FzIGZvdW5kLjwvaDM+CiAgICAgICAgICAgIDxwPlByb2JhYmxlIGNhdXNlczo8L3A+CiAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICA8bGk+WW91IGhhdmVu4oCZdCB3cml0dGVuIGFueSB0ZXh0IGRhdGEgdG8geW91ciBldmVudCBmaWxlcy48L2xpPgogICAgICAgICAgICAgIDxsaT5UZW5zb3JCb2FyZCBjYW7igJl0IGZpbmQgeW91ciBldmVudCBmaWxlcy48L2xpPgogICAgICAgICAgICA8L3VsPgoKICAgICAgICAgICAgPHA+CiAgICAgICAgICAgICAgSWYgeW914oCZcmUgbmV3IHRvIHVzaW5nIFRlbnNvckJvYXJkLCBhbmQgd2FudCB0byBmaW5kIG91dCBob3cgdG8KICAgICAgICAgICAgICBhZGQgZGF0YSBhbmQgc2V0IHVwIHlvdXIgZXZlbnQgZmlsZXMsIGNoZWNrIG91dCB0aGUKICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3RlbnNvcmZsb3cvdGVuc29yYm9hcmQvYmxvYi9tYXN0ZXIvUkVBRE1FLm1kIgogICAgICAgICAgICAgICAgPlJFQURNRTwvYQogICAgICAgICAgICAgID4KICAgICAgICAgICAgICBhbmQgcGVyaGFwcyB0aGUKICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgaHJlZj0iaHR0cHM6Ly93d3cudGVuc29yZmxvdy5vcmcvZ2V0X3N0YXJ0ZWQvc3VtbWFyaWVzX2FuZF90ZW5zb3Jib2FyZCIKICAgICAgICAgICAgICAgID5UZW5zb3JCb2FyZCB0dXRvcmlhbDwvYQogICAgICAgICAgICAgID4uCiAgICAgICAgICAgIDwvcD4KCiAgICAgICAgICAgIDxwPgogICAgICAgICAgICAgIElmIHlvdSB0aGluayBUZW5zb3JCb2FyZCBpcyBjb25maWd1cmVkIHByb3Blcmx5LCBwbGVhc2Ugc2VlCiAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS90ZW5zb3JmbG93L3RlbnNvcmJvYXJkL2Jsb2IvbWFzdGVyL1JFQURNRS5tZCNteS10ZW5zb3Jib2FyZC1pc250LXNob3dpbmctYW55LWRhdGEtd2hhdHMtd3JvbmciCiAgICAgICAgICAgICAgICA+dGhlIHNlY3Rpb24gb2YgdGhlIFJFQURNRSBkZXZvdGVkIHRvIG1pc3NpbmcgZGF0YSBwcm9ibGVtczwvYQogICAgICAgICAgICAgID4KICAgICAgICAgICAgICBhbmQgY29uc2lkZXIgZmlsaW5nIGFuIGlzc3VlIG9uIEdpdEh1Yi4KICAgICAgICAgICAgPC9wPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbIV9kYXRhTm90Rm91bmRdXSI+CiAgICAgICAgICA8dGYtdGFnLWZpbHRlcmVyIHRhZy1maWx0ZXI9Int7X3RhZ0ZpbHRlcn19Ij48L3RmLXRhZy1maWx0ZXJlcj4KICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLXJlcGVhdCIgaXRlbXM9IltbX2NhdGVnb3JpZXNdXSIgYXM9ImNhdGVnb3J5Ij4KICAgICAgICAgICAgPHRmLWNhdGVnb3J5LXBhZ2luYXRlZC12aWV3CiAgICAgICAgICAgICAgY2F0ZWdvcnk9IltbY2F0ZWdvcnldXSIKICAgICAgICAgICAgICBpbml0aWFsLW9wZW5lZD0iW1tfc2hvdWxkT3BlbihpbmRleCldXSIKICAgICAgICAgICAgPgogICAgICAgICAgICAgIDx0ZW1wbGF0ZT4KICAgICAgICAgICAgICAgIDx0Zi10ZXh0LWxvYWRlcgogICAgICAgICAgICAgICAgICBhY3RpdmU9IltbYWN0aXZlXV0iCiAgICAgICAgICAgICAgICAgIHRhZz0iW1tpdGVtLnRhZ11dIgogICAgICAgICAgICAgICAgICBydW49IltbaXRlbS5ydW5dXSIKICAgICAgICAgICAgICAgICAgcmVxdWVzdC1tYW5hZ2VyPSJbW19yZXF1ZXN0TWFuYWdlcl1dIgogICAgICAgICAgICAgICAgICBtYXJrZG93bi1lbmFibGVkPSJbW19tYXJrZG93bkVuYWJsZWRdXSIKICAgICAgICAgICAgICAgID48L3RmLXRleHQtbG9hZGVyPgogICAgICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgICAgIDwvdGYtY2F0ZWdvcnktcGFnaW5hdGVkLXZpZXc+CiAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgIDwvdGVtcGxhdGU+CiAgICAgIDwvZGl2PgogICAgPC90Zi1kYXNoYm9hcmQtbGF5b3V0PgogICAgPHN0eWxlIGluY2x1ZGU9ImRhc2hib2FyZC1zdHlsZSI+PC9zdHlsZT4KICAgIDxzdHlsZT4KICAgICAgLm5vLWRhdGEtd2FybmluZyB7CiAgICAgICAgbWF4LXdpZHRoOiA1NDBweDsKICAgICAgICBtYXJnaW46IDgwcHggYXV0byAwIGF1dG87CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgYCx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLHJvZS5wcm90b3R5cGUsInJlbG9hZE9uUmVhZHkiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFuLG5vdGlmeTohMCxvYnNlcnZlcjoiX21hcmtkb3duRW5hYmxlZFN0b3JhZ2VPYnNlcnZlciJ9KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLHJvZS5wcm90b3R5cGUsIl9tYXJrZG93bkVuYWJsZWQiLHZvaWQgMCksdChbbyh7dHlwZTpBcnJheX0pLGUoImRlc2lnbjp0eXBlIixBcnJheSldLHJvZS5wcm90b3R5cGUsIl9zZWxlY3RlZFJ1bnMiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0scm9lLnByb3RvdHlwZSwiX3J1blRvVGFnIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0scm9lLnByb3RvdHlwZSwiX2RhdGFOb3RGb3VuZCIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxyb2UucHJvdG90eXBlLCJfdGFnRmlsdGVyIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0scm9lLnByb3RvdHlwZSwiX2NhdGVnb3JpZXNEb21SZWFkeSIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxyb2UucHJvdG90eXBlLCJfcmVxdWVzdE1hbmFnZXIiLHZvaWQgMCksdChbcygiX3J1blRvVGFnIiwiX3NlbGVjdGVkUnVucyIsIl90YWdGaWx0ZXIiLCJfY2F0ZWdvcmllc0RvbVJlYWR5IiksZSgiZGVzaWduOnR5cGUiLEFycmF5KSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSxyb2UucHJvdG90eXBlLCJfY2F0ZWdvcmllcyIsbnVsbCkscm9lPXQoW2koInRmLXRleHQtZGFzaGJvYXJkIildLHJvZSk7bGV0IG9vZT1jbGFzcyBleHRlbmRzIHdle2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLl90ZW1wbGF0ZT1udWxsLHRoaXMudGZfYmFja2VuZD1TQXR9fTtvb2U9dChbaSgidGYtYmFja2VuZCIpXSxvb2UpO2xldCBhb2U9Y2xhc3MgZXh0ZW5kcyB3ZXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5fdGVtcGxhdGU9bnVsbCx0aGlzLnJ1bnNDb2xvclNjYWxlPV9PfX07YW9lPXQoW2koInRmLWNvbG9yLXNjYWxlIildLGFvZSk7bGV0IHNvZT1jbGFzcyBleHRlbmRzIHdle2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLl90ZW1wbGF0ZT1udWxsLHRoaXMudGZfZ2xvYmFscz1Ec319O3NvZT10KFtpKCJ0Zi1nbG9iYWxzIildLHNvZSk7dmFyIGxvZT1PYmplY3QuZnJlZXplKHtfX3Byb3RvX186bnVsbCxhZGRMaW1pdExpc3RlbmVyOndsLHJlbW92ZUxpbWl0TGlzdGVuZXI6U2wsZ2V0TGltaXQ6TWwsc2V0TGltaXQ6ZnVuY3Rpb24gY29lKHQpe2lmKHQhPT1NYXRoLmZsb29yKHQpKXRocm93IG5ldyBFcnJvcihgbGltaXQgbXVzdCBiZSBhbiBpbnRlZ2VyLCBidXQgZ290OiAke3R9YCk7aWYodDw9MCl0aHJvdyBuZXcgRXJyb3IoYGxpbWl0IG11c3QgYmUgcG9zaXRpdmUsIGJ1dCBnb3Q6ICR7dH1gKTt0IT09YmwmJihibD10LGlsKHZsLGJsLHt1c2VMb2NhbFN0b3JhZ2U6ITB9KSx4bC5mb3JFYWNoKCh0PT57dCgpfSkpKX0sVGZEb21SZXBlYXQ6VGx9KTtsZXQgdW9lPWNsYXNzIGV4dGVuZHMgd2V7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMuX3RlbXBsYXRlPW51bGwsdGhpcy50Zl9wYWdpbmF0ZWRfdmlldz1sb2V9fTt1b2U9dChbaSgidGYtcGFnaW5hdGVkLXZpZXctc3RvcmUiKV0sdW9lKTtsZXQgaG9lPWNsYXNzIGV4dGVuZHMgd2V7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMuX3RlbXBsYXRlPW51bGwsdGhpcy50Zl9zdG9yYWdlPUlBdH19O2hvZT10KFtpKCJ0Zi1zdG9yYWdlIildLGhvZSl9KSgpOwoKIShmdW5jdGlvbigpewovKiEgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgIENvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLgoKICAgIFBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnksIGFuZC9vciBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUgZm9yIGFueQogICAgcHVycG9zZSB3aXRoIG9yIHdpdGhvdXQgZmVlIGlzIGhlcmVieSBncmFudGVkLgoKICAgIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiIEFORCBUSEUgQVVUSE9SIERJU0NMQUlNUyBBTEwgV0FSUkFOVElFUyBXSVRICiAgICBSRUdBUkQgVE8gVEhJUyBTT0ZUV0FSRSBJTkNMVURJTkcgQUxMIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkKICAgIEFORCBGSVRORVNTLiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFIExJQUJMRSBGT1IgQU5ZIFNQRUNJQUwsIERJUkVDVCwKICAgIElORElSRUNULCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgT1IgQU5ZIERBTUFHRVMgV0hBVFNPRVZFUiBSRVNVTFRJTkcgRlJPTQogICAgTE9TUyBPRiBVU0UsIERBVEEgT1IgUFJPRklUUywgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1IKICAgIE9USEVSIFRPUlRJT1VTIEFDVElPTiwgQVJJU0lORyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1IKICAgIFBFUkZPUk1BTkNFIE9GIFRISVMgU09GVFdBUkUuCiAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwp2YXIgdD1mdW5jdGlvbihlLG4pe3JldHVybih0PU9iamVjdC5zZXRQcm90b3R5cGVPZnx8e19fcHJvdG9fXzpbXX1pbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbih0LGUpe3QuX19wcm90b19fPWV9fHxmdW5jdGlvbih0LGUpe2Zvcih2YXIgbiBpbiBlKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLG4pJiYodFtuXT1lW25dKX0pKGUsbil9O2Z1bmN0aW9uIGUoZSxuKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgbiYmbnVsbCE9PW4pdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSAiK1N0cmluZyhuKSsiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGwiKTtmdW5jdGlvbiBvKCl7dGhpcy5jb25zdHJ1Y3Rvcj1lfXQoZSxuKSxlLnByb3RvdHlwZT1udWxsPT09bj9PYmplY3QuY3JlYXRlKG4pOihvLnByb3RvdHlwZT1uLnByb3RvdHlwZSxuZXcgbyl9ZnVuY3Rpb24gbih0LGUsbixvKXtyZXR1cm4gbmV3KG58fChuPVByb21pc2UpKSgoZnVuY3Rpb24oaSxhKXtmdW5jdGlvbiByKHQpe3RyeXtsKG8ubmV4dCh0KSl9Y2F0Y2godCl7YSh0KX19ZnVuY3Rpb24gcyh0KXt0cnl7bChvLnRocm93KHQpKX1jYXRjaCh0KXthKHQpfX1mdW5jdGlvbiBsKHQpe3QuZG9uZT9pKHQudmFsdWUpOihmdW5jdGlvbiBlKHQpe3JldHVybiB0IGluc3RhbmNlb2Ygbj90Om5ldyBuKChmdW5jdGlvbihlKXtlKHQpfSkpfSkodC52YWx1ZSkudGhlbihyLHMpfWwoKG89by5hcHBseSh0LGV8fFtdKSkubmV4dCgpKX0pKX1mdW5jdGlvbiBvKHQsZSl7dmFyIG4sbyxpLGEscj17bGFiZWw6MCxzZW50OmZ1bmN0aW9uKCl7aWYoMSZpWzBdKXRocm93IGlbMV07cmV0dXJuIGlbMV19LHRyeXM6W10sb3BzOltdfTtyZXR1cm4gYT17bmV4dDpzKDApLHRocm93OnMoMSkscmV0dXJuOnMoMil9LCJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJihhW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pLGE7ZnVuY3Rpb24gcyhhKXtyZXR1cm4gZnVuY3Rpb24ocyl7cmV0dXJuKGZ1bmN0aW9uIGwoYSl7aWYobil0aHJvdyBuZXcgVHlwZUVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuIik7Zm9yKDtyOyl0cnl7aWYobj0xLG8mJihpPTImYVswXT9vLnJldHVybjphWzBdP28udGhyb3d8fCgoaT1vLnJldHVybikmJmkuY2FsbChvKSwwKTpvLm5leHQpJiYhKGk9aS5jYWxsKG8sYVsxXSkpLmRvbmUpcmV0dXJuIGk7c3dpdGNoKG89MCxpJiYoYT1bMiZhWzBdLGkudmFsdWVdKSxhWzBdKXtjYXNlIDA6Y2FzZSAxOmk9YTticmVhaztjYXNlIDQ6cmV0dXJuIHIubGFiZWwrKyx7dmFsdWU6YVsxXSxkb25lOiExfTtjYXNlIDU6ci5sYWJlbCsrLG89YVsxXSxhPVswXTtjb250aW51ZTtjYXNlIDc6YT1yLm9wcy5wb3AoKSxyLnRyeXMucG9wKCk7Y29udGludWU7ZGVmYXVsdDppZighKGk9ci50cnlzLChpPWkubGVuZ3RoPjAmJmlbaS5sZW5ndGgtMV0pfHw2IT09YVswXSYmMiE9PWFbMF0pKXtyPTA7Y29udGludWV9aWYoMz09PWFbMF0mJighaXx8YVsxXT5pWzBdJiZhWzFdPGlbM10pKXtyLmxhYmVsPWFbMV07YnJlYWt9aWYoNj09PWFbMF0mJnIubGFiZWw8aVsxXSl7ci5sYWJlbD1pWzFdLGk9YTticmVha31pZihpJiZyLmxhYmVsPGlbMl0pe3IubGFiZWw9aVsyXSxyLm9wcy5wdXNoKGEpO2JyZWFrfWlbMl0mJnIub3BzLnBvcCgpLHIudHJ5cy5wb3AoKTtjb250aW51ZX1hPWUuY2FsbCh0LHIpfWNhdGNoKHQpe2E9WzYsdF0sbz0wfWZpbmFsbHl7bj1pPTB9aWYoNSZhWzBdKXRocm93IGFbMV07cmV0dXJue3ZhbHVlOmFbMF0/YVsxXTp2b2lkIDAsZG9uZTohMH19KShbYSxzXSl9fX1mdW5jdGlvbiBpKHQpe3ZhciBlPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJlN5bWJvbC5pdGVyYXRvcixuPWUmJnRbZV0sbz0wO2lmKG4pcmV0dXJuIG4uY2FsbCh0KTtpZih0JiYibnVtYmVyIj09dHlwZW9mIHQubGVuZ3RoKXJldHVybntuZXh0OmZ1bmN0aW9uKCl7cmV0dXJuIHQmJm8+PXQubGVuZ3RoJiYodD12b2lkIDApLHt2YWx1ZTp0JiZ0W28rK10sZG9uZTohdH19fTt0aHJvdyBuZXcgVHlwZUVycm9yKGU/Ik9iamVjdCBpcyBub3QgaXRlcmFibGUuIjoiU3ltYm9sLml0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLiIpfWZ1bmN0aW9uIGEodCxlKXt2YXIgbj0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZ0W1N5bWJvbC5pdGVyYXRvcl07aWYoIW4pcmV0dXJuIHQ7dmFyIG8saSxhPW4uY2FsbCh0KSxyPVtdO3RyeXtmb3IoOyh2b2lkIDA9PT1lfHxlLS0gPjApJiYhKG89YS5uZXh0KCkpLmRvbmU7KXIucHVzaChvLnZhbHVlKX1jYXRjaCh0KXtpPXtlcnJvcjp0fX1maW5hbGx5e3RyeXtvJiYhby5kb25lJiYobj1hLnJldHVybikmJm4uY2FsbChhKX1maW5hbGx5e2lmKGkpdGhyb3cgaS5lcnJvcn19cmV0dXJuIHJ9ZnVuY3Rpb24gcih0LGUpe2Zvcih2YXIgbj0wLG89ZS5sZW5ndGgsaT10Lmxlbmd0aDtuPG87bisrLGkrKyl0W2ldPWVbbl07cmV0dXJuIHR9ZnVuY3Rpb24gcyh0KXtyZXR1cm4gdGhpcyBpbnN0YW5jZW9mIHM/KHRoaXMudj10LHRoaXMpOm5ldyBzKHQpfWZ1bmN0aW9uIGwodCxlLG4pe2lmKCFTeW1ib2wuYXN5bmNJdGVyYXRvcil0aHJvdyBuZXcgVHlwZUVycm9yKCJTeW1ib2wuYXN5bmNJdGVyYXRvciBpcyBub3QgZGVmaW5lZC4iKTt2YXIgbyxpPW4uYXBwbHkodCxlfHxbXSksYT1bXTtyZXR1cm4gbz17fSxyKCJuZXh0IikscigidGhyb3ciKSxyKCJyZXR1cm4iKSxvW1N5bWJvbC5hc3luY0l0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSxvO2Z1bmN0aW9uIHIodCl7aVt0XSYmKG9bdF09ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihuLG8pe2EucHVzaChbdCxlLG4sb10pPjF8fGwodCxlKX0pKX0pfWZ1bmN0aW9uIGwodCxlKXt0cnl7IShmdW5jdGlvbiBuKHQpe3QudmFsdWUgaW5zdGFuY2VvZiBzP1Byb21pc2UucmVzb2x2ZSh0LnZhbHVlLnYpLnRoZW4oYyxkKTpwKGFbMF1bMl0sdCl9KShpW3RdKGUpKX1jYXRjaCh0KXtwKGFbMF1bM10sdCl9fWZ1bmN0aW9uIGModCl7bCgibmV4dCIsdCl9ZnVuY3Rpb24gZCh0KXtsKCJ0aHJvdyIsdCl9ZnVuY3Rpb24gcCh0LGUpe3QoZSksYS5zaGlmdCgpLGEubGVuZ3RoJiZsKGFbMF1bMF0sYVswXVsxXSl9fWZ1bmN0aW9uIGModCl7aWYoIVN5bWJvbC5hc3luY0l0ZXJhdG9yKXRocm93IG5ldyBUeXBlRXJyb3IoIlN5bWJvbC5hc3luY0l0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLiIpO3ZhciBlLG49dFtTeW1ib2wuYXN5bmNJdGVyYXRvcl07cmV0dXJuIG4/bi5jYWxsKHQpOih0PWkodCksZT17fSxvKCJuZXh0IiksbygidGhyb3ciKSxvKCJyZXR1cm4iKSxlW1N5bWJvbC5hc3luY0l0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSxlKTtmdW5jdGlvbiBvKG4pe2Vbbl09dFtuXSYmZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihvLGkpeyhmdW5jdGlvbiBhKHQsZSxuLG8pe1Byb21pc2UucmVzb2x2ZShvKS50aGVuKChmdW5jdGlvbihlKXt0KHt2YWx1ZTplLGRvbmU6bn0pfSksZSl9KShvLGksKGU9dFtuXShlKSkuZG9uZSxlLnZhbHVlKX0pKX19fWZ1bmN0aW9uIGQodCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHR9ZnVuY3Rpb24gcCh0KXt2YXIgZT10KChmdW5jdGlvbih0KXtFcnJvci5jYWxsKHQpLHQuc3RhY2s9KG5ldyBFcnJvcikuc3RhY2t9KSk7cmV0dXJuIGUucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoRXJyb3IucHJvdG90eXBlKSxlLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1lLGV9dmFyIG09cCgoZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uIGUobil7dCh0aGlzKSx0aGlzLm1lc3NhZ2U9bj9uLmxlbmd0aCsiIGVycm9ycyBvY2N1cnJlZCBkdXJpbmcgdW5zdWJzY3JpcHRpb246XG4iK24ubWFwKChmdW5jdGlvbih0LGUpe3JldHVybiBlKzErIikgIit0LnRvU3RyaW5nKCl9KSkuam9pbigiXG4gICIpOiIiLHRoaXMubmFtZT0iVW5zdWJzY3JpcHRpb25FcnJvciIsdGhpcy5lcnJvcnM9bn19KSk7ZnVuY3Rpb24gZih0LGUpe2lmKHQpe3ZhciBuPXQuaW5kZXhPZihlKTswPD1uJiZ0LnNwbGljZShuLDEpfX12YXIgdT0oZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe3RoaXMuaW5pdGlhbFRlYXJkb3duPXQsdGhpcy5jbG9zZWQ9ITEsdGhpcy5fcGFyZW50YWdlPW51bGwsdGhpcy5fdGVhcmRvd25zPW51bGx9cmV0dXJuIHQucHJvdG90eXBlLnVuc3Vic2NyaWJlPWZ1bmN0aW9uKCl7dmFyIHQsZSxuLG8scztpZighdGhpcy5jbG9zZWQpe3RoaXMuY2xvc2VkPSEwO3ZhciBsPXRoaXMuX3BhcmVudGFnZTtpZihsKWlmKHRoaXMuX3BhcmVudGFnZT1udWxsLEFycmF5LmlzQXJyYXkobCkpdHJ5e2Zvcih2YXIgYz1pKGwpLHA9Yy5uZXh0KCk7IXAuZG9uZTtwPWMubmV4dCgpKXtwLnZhbHVlLnJlbW92ZSh0aGlzKX19Y2F0Y2goZSl7dD17ZXJyb3I6ZX19ZmluYWxseXt0cnl7cCYmIXAuZG9uZSYmKGU9Yy5yZXR1cm4pJiZlLmNhbGwoYyl9ZmluYWxseXtpZih0KXRocm93IHQuZXJyb3J9fWVsc2UgbC5yZW1vdmUodGhpcyk7dmFyIGY9dGhpcy5pbml0aWFsVGVhcmRvd247aWYoZChmKSl0cnl7ZigpfWNhdGNoKHQpe3M9dCBpbnN0YW5jZW9mIG0/dC5lcnJvcnM6W3RdfXZhciB1PXRoaXMuX3RlYXJkb3ducztpZih1KXt0aGlzLl90ZWFyZG93bnM9bnVsbDt0cnl7Zm9yKHZhciBnPWkodSksaD1nLm5leHQoKTshaC5kb25lO2g9Zy5uZXh0KCkpe3ZhciB5PWgudmFsdWU7dHJ5e2IoeSl9Y2F0Y2godCl7cz1udWxsIT1zP3M6W10sdCBpbnN0YW5jZW9mIG0/cz1yKHIoW10sYShzKSksYSh0LmVycm9ycykpOnMucHVzaCh0KX19fWNhdGNoKHQpe249e2Vycm9yOnR9fWZpbmFsbHl7dHJ5e2gmJiFoLmRvbmUmJihvPWcucmV0dXJuKSYmby5jYWxsKGcpfWZpbmFsbHl7aWYobil0aHJvdyBuLmVycm9yfX19aWYocyl0aHJvdyBuZXcgbShzKX19LHQucHJvdG90eXBlLmFkZD1mdW5jdGlvbihlKXt2YXIgbjtpZihlJiZlIT09dGhpcylpZih0aGlzLmNsb3NlZCliKGUpO2Vsc2V7aWYoZSBpbnN0YW5jZW9mIHQpe2lmKGUuY2xvc2VkfHxlLl9oYXNQYXJlbnQodGhpcykpcmV0dXJuO2UuX2FkZFBhcmVudCh0aGlzKX0odGhpcy5fdGVhcmRvd25zPW51bGwhPT0obj10aGlzLl90ZWFyZG93bnMpJiZ2b2lkIDAhPT1uP246W10pLnB1c2goZSl9fSx0LnByb3RvdHlwZS5faGFzUGFyZW50PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX3BhcmVudGFnZTtyZXR1cm4gZT09PXR8fEFycmF5LmlzQXJyYXkoZSkmJmUuaW5jbHVkZXModCl9LHQucHJvdG90eXBlLl9hZGRQYXJlbnQ9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fcGFyZW50YWdlO3RoaXMuX3BhcmVudGFnZT1BcnJheS5pc0FycmF5KGUpPyhlLnB1c2godCksZSk6ZT9bZSx0XTp0fSx0LnByb3RvdHlwZS5fcmVtb3ZlUGFyZW50PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX3BhcmVudGFnZTtlPT09dD90aGlzLl9wYXJlbnRhZ2U9bnVsbDpBcnJheS5pc0FycmF5KGUpJiZmKGUsdCl9LHQucHJvdG90eXBlLnJlbW92ZT1mdW5jdGlvbihlKXt2YXIgbj10aGlzLl90ZWFyZG93bnM7biYmZihuLGUpLGUgaW5zdGFuY2VvZiB0JiZlLl9yZW1vdmVQYXJlbnQodGhpcyl9LHQuRU1QVFk9KGZ1bmN0aW9uKCl7dmFyIGU9bmV3IHQ7cmV0dXJuIGUuY2xvc2VkPSEwLGV9KSgpLHR9KSgpLGc9dS5FTVBUWTtmdW5jdGlvbiBoKHQpe3JldHVybiB0IGluc3RhbmNlb2YgdXx8dCYmImNsb3NlZCJpbiB0JiZkKHQucmVtb3ZlKSYmZCh0LmFkZCkmJmQodC51bnN1YnNjcmliZSl9ZnVuY3Rpb24gYih0KXtkKHQpP3QoKTp0LnVuc3Vic2NyaWJlKCl9dmFyIHk9e29uVW5oYW5kbGVkRXJyb3I6bnVsbCxvblN0b3BwZWROb3RpZmljYXRpb246bnVsbCxQcm9taXNlOnZvaWQgMCx1c2VEZXByZWNhdGVkU3luY2hyb25vdXNFcnJvckhhbmRsaW5nOiExLHVzZURlcHJlY2F0ZWROZXh0Q29udGV4dDohMX0sXz17c2V0VGltZW91dDpmdW5jdGlvbigpe2Zvcih2YXIgdD1bXSxlPTA7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyl0W2VdPWFyZ3VtZW50c1tlXTt2YXIgbj1fLmRlbGVnYXRlO3JldHVybigobnVsbD09bj92b2lkIDA6bi5zZXRUaW1lb3V0KXx8c2V0VGltZW91dCkuYXBwbHkodm9pZCAwLHIoW10sYSh0KSkpfSxjbGVhclRpbWVvdXQ6ZnVuY3Rpb24odCl7dmFyIGU9Xy5kZWxlZ2F0ZTtyZXR1cm4oKG51bGw9PWU/dm9pZCAwOmUuY2xlYXJUaW1lb3V0KXx8Y2xlYXJUaW1lb3V0KSh0KX0sZGVsZWdhdGU6dm9pZCAwfTtmdW5jdGlvbiBDKHQpe18uc2V0VGltZW91dCgoZnVuY3Rpb24oKXt0aHJvdyB0fSkpfWZ1bmN0aW9uIE0oKXt9dmFyIHY9bnVsbDtmdW5jdGlvbiB4KHQpe2lmKHkudXNlRGVwcmVjYXRlZFN5bmNocm9ub3VzRXJyb3JIYW5kbGluZyl7dmFyIGU9IXY7aWYoZSYmKHY9e2Vycm9yVGhyb3duOiExLGVycm9yOm51bGx9KSx0KCksZSl7dmFyIG49djtpZih2PW51bGwsbi5lcnJvclRocm93bil0aHJvdyBuLmVycm9yfX1lbHNlIHQoKX12YXIgTz0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gbihlKXt2YXIgbj10LmNhbGwodGhpcyl8fHRoaXM7cmV0dXJuIG4uaXNTdG9wcGVkPSExLGU/KG4uZGVzdGluYXRpb249ZSxoKGUpJiZlLmFkZChuKSk6bi5kZXN0aW5hdGlvbj1TLG59cmV0dXJuIGUobix0KSxuLmNyZWF0ZT1mdW5jdGlvbih0LGUsbil7cmV0dXJuIG5ldyBQKHQsZSxuKX0sbi5wcm90b3R5cGUubmV4dD1mdW5jdGlvbih0KXt0aGlzLmlzU3RvcHBlZHx8dGhpcy5fbmV4dCh0KX0sbi5wcm90b3R5cGUuZXJyb3I9ZnVuY3Rpb24odCl7dGhpcy5pc1N0b3BwZWR8fCh0aGlzLmlzU3RvcHBlZD0hMCx0aGlzLl9lcnJvcih0KSl9LG4ucHJvdG90eXBlLmNvbXBsZXRlPWZ1bmN0aW9uKCl7dGhpcy5pc1N0b3BwZWR8fCh0aGlzLmlzU3RvcHBlZD0hMCx0aGlzLl9jb21wbGV0ZSgpKX0sbi5wcm90b3R5cGUudW5zdWJzY3JpYmU9ZnVuY3Rpb24oKXt0aGlzLmNsb3NlZHx8KHRoaXMuaXNTdG9wcGVkPSEwLHQucHJvdG90eXBlLnVuc3Vic2NyaWJlLmNhbGwodGhpcyksdGhpcy5kZXN0aW5hdGlvbj1udWxsKX0sbi5wcm90b3R5cGUuX25leHQ9ZnVuY3Rpb24odCl7dGhpcy5kZXN0aW5hdGlvbi5uZXh0KHQpfSxuLnByb3RvdHlwZS5fZXJyb3I9ZnVuY3Rpb24odCl7dHJ5e3RoaXMuZGVzdGluYXRpb24uZXJyb3IodCl9ZmluYWxseXt0aGlzLnVuc3Vic2NyaWJlKCl9fSxuLnByb3RvdHlwZS5fY29tcGxldGU9ZnVuY3Rpb24oKXt0cnl7dGhpcy5kZXN0aW5hdGlvbi5jb21wbGV0ZSgpfWZpbmFsbHl7dGhpcy51bnN1YnNjcmliZSgpfX0sbn0pKHUpLFA9KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIG4oZSxuLG8pe3ZhciBpLGE9dC5jYWxsKHRoaXMpfHx0aGlzO2lmKGQoZSkpaT1lO2Vsc2UgaWYoZSl7dmFyIHI7aT1lLm5leHQsbj1lLmVycm9yLG89ZS5jb21wbGV0ZSxhJiZ5LnVzZURlcHJlY2F0ZWROZXh0Q29udGV4dD8ocj1PYmplY3QuY3JlYXRlKGUpKS51bnN1YnNjcmliZT1mdW5jdGlvbigpe3JldHVybiBhLnVuc3Vic2NyaWJlKCl9OnI9ZSxpPW51bGw9PWk/dm9pZCAwOmkuYmluZChyKSxuPW51bGw9PW4/dm9pZCAwOm4uYmluZChyKSxvPW51bGw9PW8/dm9pZCAwOm8uYmluZChyKX1yZXR1cm4gYS5kZXN0aW5hdGlvbj17bmV4dDppP3coaSk6TSxlcnJvcjp3KG51bGwhPW4/bjprKSxjb21wbGV0ZTpvP3cobyk6TX0sYX1yZXR1cm4gZShuLHQpLG59KShPKTtmdW5jdGlvbiB3KHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7Zm9yKHZhciBlPVtdLG49MDtuPGFyZ3VtZW50cy5sZW5ndGg7bisrKWVbbl09YXJndW1lbnRzW25dO3RyeXt0LmFwcGx5KHZvaWQgMCxyKFtdLGEoZSkpKX1jYXRjaCh0KXtDKHQpfX19ZnVuY3Rpb24gayh0KXt0aHJvdyB0fXZhciBTPXtjbG9zZWQ6ITAsbmV4dDpNLGVycm9yOmssY29tcGxldGU6TX0sRD0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZTeW1ib2wub2JzZXJ2YWJsZXx8IkBAb2JzZXJ2YWJsZSI7ZnVuY3Rpb24gUih0KXtyZXR1cm4gdH1mdW5jdGlvbiBFKCl7Zm9yKHZhciB0PVtdLGU9MDtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXRbZV09YXJndW1lbnRzW2VdO3JldHVybiBBKHQpfWZ1bmN0aW9uIEEodCl7cmV0dXJuIDA9PT10Lmxlbmd0aD9SOjE9PT10Lmxlbmd0aD90WzBdOmZ1bmN0aW9uIGUobil7cmV0dXJuIHQucmVkdWNlKChmdW5jdGlvbih0LGUpe3JldHVybiBlKHQpfSksbil9fXZhciBUPShmdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7dCYmKHRoaXMuX3N1YnNjcmliZT10KX1yZXR1cm4gdC5wcm90b3R5cGUubGlmdD1mdW5jdGlvbihlKXt2YXIgbj1uZXcgdDtyZXR1cm4gbi5zb3VyY2U9dGhpcyxuLm9wZXJhdG9yPWUsbn0sdC5wcm90b3R5cGUuc3Vic2NyaWJlPWZ1bmN0aW9uKHQsZSxuKXt2YXIgbz10aGlzLGk9KGZ1bmN0aW9uIGEodCl7cmV0dXJuIHQmJnQgaW5zdGFuY2VvZiBPfHwoZnVuY3Rpb24gZSh0KXtyZXR1cm4gdCYmZCh0Lm5leHQpJiZkKHQuZXJyb3IpJiZkKHQuY29tcGxldGUpfSkodCkmJmgodCl9KSh0KT90Om5ldyBQKHQsZSxuKTtyZXR1cm4geCgoZnVuY3Rpb24oKXt2YXIgdD1vLm9wZXJhdG9yLGU9by5zb3VyY2U7aS5hZGQodD90LmNhbGwoaSxlKTplP28uX3N1YnNjcmliZShpKTpvLl90cnlTdWJzY3JpYmUoaSkpfSkpLGl9LHQucHJvdG90eXBlLl90cnlTdWJzY3JpYmU9ZnVuY3Rpb24odCl7dHJ5e3JldHVybiB0aGlzLl9zdWJzY3JpYmUodCl9Y2F0Y2goZSl7dC5lcnJvcihlKX19LHQucHJvdG90eXBlLmZvckVhY2g9ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzO3JldHVybiBuZXcoZT1OKGUpKSgoZnVuY3Rpb24oZSxvKXt2YXIgaTtpPW4uc3Vic2NyaWJlKChmdW5jdGlvbihlKXt0cnl7dChlKX1jYXRjaCh0KXtvKHQpLG51bGw9PWl8fGkudW5zdWJzY3JpYmUoKX19KSxvLGUpfSkpfSx0LnByb3RvdHlwZS5fc3Vic2NyaWJlPWZ1bmN0aW9uKHQpe3ZhciBlO3JldHVybiBudWxsPT09KGU9dGhpcy5zb3VyY2UpfHx2b2lkIDA9PT1lP3ZvaWQgMDplLnN1YnNjcmliZSh0KX0sdC5wcm90b3R5cGVbRF09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30sdC5wcm90b3R5cGUucGlwZT1mdW5jdGlvbigpe2Zvcih2YXIgdD1bXSxlPTA7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyl0W2VdPWFyZ3VtZW50c1tlXTtyZXR1cm4gQSh0KSh0aGlzKX0sdC5wcm90b3R5cGUudG9Qcm9taXNlPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7cmV0dXJuIG5ldyh0PU4odCkpKChmdW5jdGlvbih0LG4pe3ZhciBvO2Uuc3Vic2NyaWJlKChmdW5jdGlvbih0KXtyZXR1cm4gbz10fSksKGZ1bmN0aW9uKHQpe3JldHVybiBuKHQpfSksKGZ1bmN0aW9uKCl7cmV0dXJuIHQobyl9KSl9KSl9LHQuY3JlYXRlPWZ1bmN0aW9uKGUpe3JldHVybiBuZXcgdChlKX0sdH0pKCk7ZnVuY3Rpb24gTih0KXt2YXIgZTtyZXR1cm4gbnVsbCE9PShlPW51bGwhPXQ/dDp5LlByb21pc2UpJiZ2b2lkIDAhPT1lP2U6UHJvbWlzZX1mdW5jdGlvbiB6KHQpe3JldHVybiBmdW5jdGlvbihlKXtpZigoZnVuY3Rpb24gbih0KXtyZXR1cm4gZChudWxsPT10P3ZvaWQgMDp0LmxpZnQpfSkoZSkpcmV0dXJuIGUubGlmdCgoZnVuY3Rpb24oZSl7dHJ5e3JldHVybiB0KGUsdGhpcyl9Y2F0Y2godCl7dGhpcy5lcnJvcih0KX19KSk7dGhyb3cgbmV3IFR5cGVFcnJvcigiVW5hYmxlIHRvIGxpZnQgdW5rbm93biBPYnNlcnZhYmxlIHR5cGUiKX19dmFyIEksSD0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gbihlLG4sbyxpLGEpe3ZhciByPXQuY2FsbCh0aGlzLGUpfHx0aGlzO3JldHVybiByLm9uRmluYWxpemU9YSxyLl9uZXh0PW4/ZnVuY3Rpb24odCl7dHJ5e24odCl9Y2F0Y2godCl7ZS5lcnJvcih0KX19OnQucHJvdG90eXBlLl9uZXh0LHIuX2Vycm9yPWk/ZnVuY3Rpb24odCl7dHJ5e2kodCl9Y2F0Y2godCl7ZS5lcnJvcih0KX1maW5hbGx5e3RoaXMudW5zdWJzY3JpYmUoKX19OnQucHJvdG90eXBlLl9lcnJvcixyLl9jb21wbGV0ZT1vP2Z1bmN0aW9uKCl7dHJ5e28oKX1jYXRjaCh0KXtlLmVycm9yKHQpfWZpbmFsbHl7dGhpcy51bnN1YnNjcmliZSgpfX06dC5wcm90b3R5cGUuX2NvbXBsZXRlLHJ9cmV0dXJuIGUobix0KSxuLnByb3RvdHlwZS51bnN1YnNjcmliZT1mdW5jdGlvbigpe3ZhciBlLG49dGhpcy5jbG9zZWQ7dC5wcm90b3R5cGUudW5zdWJzY3JpYmUuY2FsbCh0aGlzKSwhbiYmKG51bGw9PT0oZT10aGlzLm9uRmluYWxpemUpfHx2b2lkIDA9PT1lfHxlLmNhbGwodGhpcykpfSxufSkoTyksRj17c2NoZWR1bGU6ZnVuY3Rpb24odCl7dmFyIGU9cmVxdWVzdEFuaW1hdGlvbkZyYW1lLG49Y2FuY2VsQW5pbWF0aW9uRnJhbWUsbz1GLmRlbGVnYXRlO28mJihlPW8ucmVxdWVzdEFuaW1hdGlvbkZyYW1lLG49by5jYW5jZWxBbmltYXRpb25GcmFtZSk7dmFyIGk9ZSgoZnVuY3Rpb24oZSl7bj12b2lkIDAsdChlKX0pKTtyZXR1cm4gbmV3IHUoKGZ1bmN0aW9uKCl7cmV0dXJuIG51bGw9PW4/dm9pZCAwOm4oaSl9KSl9LHJlcXVlc3RBbmltYXRpb25GcmFtZTpmdW5jdGlvbigpe2Zvcih2YXIgdD1bXSxlPTA7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyl0W2VdPWFyZ3VtZW50c1tlXTt2YXIgbj1GLmRlbGVnYXRlO3JldHVybigobnVsbD09bj92b2lkIDA6bi5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUpfHxyZXF1ZXN0QW5pbWF0aW9uRnJhbWUpLmFwcGx5KHZvaWQgMCxyKFtdLGEodCkpKX0sY2FuY2VsQW5pbWF0aW9uRnJhbWU6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9W10sZT0wO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspdFtlXT1hcmd1bWVudHNbZV07dmFyIG49Ri5kZWxlZ2F0ZTtyZXR1cm4oKG51bGw9PW4/dm9pZCAwOm4uY2FuY2VsQW5pbWF0aW9uRnJhbWUpfHxjYW5jZWxBbmltYXRpb25GcmFtZSkuYXBwbHkodm9pZCAwLHIoW10sYSh0KSkpfSxkZWxlZ2F0ZTp2b2lkIDB9LEw9cCgoZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uIGUoKXt0KHRoaXMpLHRoaXMubmFtZT0iT2JqZWN0VW5zdWJzY3JpYmVkRXJyb3IiLHRoaXMubWVzc2FnZT0ib2JqZWN0IHVuc3Vic2NyaWJlZCJ9fSkpLEI9KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIG4oKXt2YXIgZT10LmNhbGwodGhpcyl8fHRoaXM7cmV0dXJuIGUuY2xvc2VkPSExLGUub2JzZXJ2ZXJzPVtdLGUuaXNTdG9wcGVkPSExLGUuaGFzRXJyb3I9ITEsZS50aHJvd25FcnJvcj1udWxsLGV9cmV0dXJuIGUobix0KSxuLnByb3RvdHlwZS5saWZ0PWZ1bmN0aW9uKHQpe3ZhciBlPW5ldyBWKHRoaXMsdGhpcyk7cmV0dXJuIGUub3BlcmF0b3I9dCxlfSxuLnByb3RvdHlwZS5fdGhyb3dJZkNsb3NlZD1mdW5jdGlvbigpe2lmKHRoaXMuY2xvc2VkKXRocm93IG5ldyBMfSxuLnByb3RvdHlwZS5uZXh0PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7eCgoZnVuY3Rpb24oKXt2YXIgbixvO2lmKGUuX3Rocm93SWZDbG9zZWQoKSwhZS5pc1N0b3BwZWQpe3ZhciBhPWUub2JzZXJ2ZXJzLnNsaWNlKCk7dHJ5e2Zvcih2YXIgcj1pKGEpLHM9ci5uZXh0KCk7IXMuZG9uZTtzPXIubmV4dCgpKXtzLnZhbHVlLm5leHQodCl9fWNhdGNoKHQpe249e2Vycm9yOnR9fWZpbmFsbHl7dHJ5e3MmJiFzLmRvbmUmJihvPXIucmV0dXJuKSYmby5jYWxsKHIpfWZpbmFsbHl7aWYobil0aHJvdyBuLmVycm9yfX19fSkpfSxuLnByb3RvdHlwZS5lcnJvcj1mdW5jdGlvbih0KXt2YXIgZT10aGlzO3goKGZ1bmN0aW9uKCl7aWYoZS5fdGhyb3dJZkNsb3NlZCgpLCFlLmlzU3RvcHBlZCl7ZS5oYXNFcnJvcj1lLmlzU3RvcHBlZD0hMCxlLnRocm93bkVycm9yPXQ7Zm9yKHZhciBuPWUub2JzZXJ2ZXJzO24ubGVuZ3RoOyluLnNoaWZ0KCkuZXJyb3IodCl9fSkpfSxuLnByb3RvdHlwZS5jb21wbGV0ZT1mdW5jdGlvbigpe3ZhciB0PXRoaXM7eCgoZnVuY3Rpb24oKXtpZih0Ll90aHJvd0lmQ2xvc2VkKCksIXQuaXNTdG9wcGVkKXt0LmlzU3RvcHBlZD0hMDtmb3IodmFyIGU9dC5vYnNlcnZlcnM7ZS5sZW5ndGg7KWUuc2hpZnQoKS5jb21wbGV0ZSgpfX0pKX0sbi5wcm90b3R5cGUudW5zdWJzY3JpYmU9ZnVuY3Rpb24oKXt0aGlzLmlzU3RvcHBlZD10aGlzLmNsb3NlZD0hMCx0aGlzLm9ic2VydmVycz1udWxsfSxPYmplY3QuZGVmaW5lUHJvcGVydHkobi5wcm90b3R5cGUsIm9ic2VydmVkIix7Z2V0OmZ1bmN0aW9uKCl7dmFyIHQ7cmV0dXJuKG51bGw9PT0odD10aGlzLm9ic2VydmVycyl8fHZvaWQgMD09PXQ/dm9pZCAwOnQubGVuZ3RoKT4wfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLG4ucHJvdG90eXBlLl90cnlTdWJzY3JpYmU9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX3Rocm93SWZDbG9zZWQoKSx0LnByb3RvdHlwZS5fdHJ5U3Vic2NyaWJlLmNhbGwodGhpcyxlKX0sbi5wcm90b3R5cGUuX3N1YnNjcmliZT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fdGhyb3dJZkNsb3NlZCgpLHRoaXMuX2NoZWNrRmluYWxpemVkU3RhdHVzZXModCksdGhpcy5faW5uZXJTdWJzY3JpYmUodCl9LG4ucHJvdG90eXBlLl9pbm5lclN1YnNjcmliZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLG49ZS5vYnNlcnZlcnM7cmV0dXJuIGUuaGFzRXJyb3J8fGUuaXNTdG9wcGVkP2c6KG4ucHVzaCh0KSxuZXcgdSgoZnVuY3Rpb24oKXtyZXR1cm4gZihuLHQpfSkpKX0sbi5wcm90b3R5cGUuX2NoZWNrRmluYWxpemVkU3RhdHVzZXM9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxuPWUuaXNTdG9wcGVkO2UuaGFzRXJyb3I/dC5lcnJvcihlLnRocm93bkVycm9yKTpuJiZ0LmNvbXBsZXRlKCl9LG4ucHJvdG90eXBlLmFzT2JzZXJ2YWJsZT1mdW5jdGlvbigpe3ZhciB0PW5ldyBUO3JldHVybiB0LnNvdXJjZT10aGlzLHR9LG4uY3JlYXRlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIG5ldyBWKHQsZSl9LG59KShUKSxWPShmdW5jdGlvbih0KXtmdW5jdGlvbiBuKGUsbil7dmFyIG89dC5jYWxsKHRoaXMpfHx0aGlzO3JldHVybiBvLmRlc3RpbmF0aW9uPWUsby5zb3VyY2U9bixvfXJldHVybiBlKG4sdCksbi5wcm90b3R5cGUubmV4dD1mdW5jdGlvbih0KXt2YXIgZSxuO251bGw9PT0obj1udWxsPT09KGU9dGhpcy5kZXN0aW5hdGlvbil8fHZvaWQgMD09PWU/dm9pZCAwOmUubmV4dCl8fHZvaWQgMD09PW58fG4uY2FsbChlLHQpfSxuLnByb3RvdHlwZS5lcnJvcj1mdW5jdGlvbih0KXt2YXIgZSxuO251bGw9PT0obj1udWxsPT09KGU9dGhpcy5kZXN0aW5hdGlvbil8fHZvaWQgMD09PWU/dm9pZCAwOmUuZXJyb3IpfHx2b2lkIDA9PT1ufHxuLmNhbGwoZSx0KX0sbi5wcm90b3R5cGUuY29tcGxldGU9ZnVuY3Rpb24oKXt2YXIgdCxlO251bGw9PT0oZT1udWxsPT09KHQ9dGhpcy5kZXN0aW5hdGlvbil8fHZvaWQgMD09PXQ/dm9pZCAwOnQuY29tcGxldGUpfHx2b2lkIDA9PT1lfHxlLmNhbGwodCl9LG4ucHJvdG90eXBlLl9zdWJzY3JpYmU9ZnVuY3Rpb24odCl7dmFyIGUsbjtyZXR1cm4gbnVsbCE9PShuPW51bGw9PT0oZT10aGlzLnNvdXJjZSl8fHZvaWQgMD09PWU/dm9pZCAwOmUuc3Vic2NyaWJlKHQpKSYmdm9pZCAwIT09bj9uOmd9LG59KShCKSxqPShmdW5jdGlvbih0KXtmdW5jdGlvbiBuKGUpe3ZhciBuPXQuY2FsbCh0aGlzKXx8dGhpcztyZXR1cm4gbi5fdmFsdWU9ZSxufXJldHVybiBlKG4sdCksT2JqZWN0LmRlZmluZVByb3BlcnR5KG4ucHJvdG90eXBlLCJ2YWx1ZSIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmdldFZhbHVlKCl9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksbi5wcm90b3R5cGUuX3N1YnNjcmliZT1mdW5jdGlvbihlKXt2YXIgbj10LnByb3RvdHlwZS5fc3Vic2NyaWJlLmNhbGwodGhpcyxlKTtyZXR1cm4hbi5jbG9zZWQmJmUubmV4dCh0aGlzLl92YWx1ZSksbn0sbi5wcm90b3R5cGUuZ2V0VmFsdWU9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dC5fdmFsdWU7aWYodC5oYXNFcnJvcil0aHJvdyB0LnRocm93bkVycm9yO3JldHVybiB0aGlzLl90aHJvd0lmQ2xvc2VkKCksZX0sbi5wcm90b3R5cGUubmV4dD1mdW5jdGlvbihlKXt0LnByb3RvdHlwZS5uZXh0LmNhbGwodGhpcyx0aGlzLl92YWx1ZT1lKX0sbn0pKEIpLFU9e25vdzpmdW5jdGlvbigpe3JldHVybihVLmRlbGVnYXRlfHxEYXRlKS5ub3coKX0sZGVsZWdhdGU6dm9pZCAwfSxXPShmdW5jdGlvbih0KXtmdW5jdGlvbiBuKGUsbixvKXt2b2lkIDA9PT1lJiYoZT0xLzApLHZvaWQgMD09PW4mJihuPTEvMCksdm9pZCAwPT09byYmKG89VSk7dmFyIGk9dC5jYWxsKHRoaXMpfHx0aGlzO3JldHVybiBpLl9idWZmZXJTaXplPWUsaS5fd2luZG93VGltZT1uLGkuX3RpbWVzdGFtcFByb3ZpZGVyPW8saS5fYnVmZmVyPVtdLGkuX2luZmluaXRlVGltZVdpbmRvdz0hMCxpLl9pbmZpbml0ZVRpbWVXaW5kb3c9bj09PTEvMCxpLl9idWZmZXJTaXplPU1hdGgubWF4KDEsZSksaS5fd2luZG93VGltZT1NYXRoLm1heCgxLG4pLGl9cmV0dXJuIGUobix0KSxuLnByb3RvdHlwZS5uZXh0PWZ1bmN0aW9uKGUpe3ZhciBuPXRoaXMsbz1uLl9idWZmZXIsaT1uLl9pbmZpbml0ZVRpbWVXaW5kb3csYT1uLl90aW1lc3RhbXBQcm92aWRlcixyPW4uX3dpbmRvd1RpbWU7bi5pc1N0b3BwZWR8fChvLnB1c2goZSksIWkmJm8ucHVzaChhLm5vdygpK3IpKSx0aGlzLl90cmltQnVmZmVyKCksdC5wcm90b3R5cGUubmV4dC5jYWxsKHRoaXMsZSl9LG4ucHJvdG90eXBlLl9zdWJzY3JpYmU9ZnVuY3Rpb24odCl7dGhpcy5fdGhyb3dJZkNsb3NlZCgpLHRoaXMuX3RyaW1CdWZmZXIoKTtmb3IodmFyIGU9dGhpcy5faW5uZXJTdWJzY3JpYmUodCksbj10aGlzLl9pbmZpbml0ZVRpbWVXaW5kb3csbz10aGlzLl9idWZmZXIuc2xpY2UoKSxpPTA7aTxvLmxlbmd0aCYmIXQuY2xvc2VkO2krPW4/MToyKXQubmV4dChvW2ldKTtyZXR1cm4gdGhpcy5fY2hlY2tGaW5hbGl6ZWRTdGF0dXNlcyh0KSxlfSxuLnByb3RvdHlwZS5fdHJpbUJ1ZmZlcj1mdW5jdGlvbigpe3ZhciB0PXRoaXMsZT10Ll9idWZmZXJTaXplLG49dC5fdGltZXN0YW1wUHJvdmlkZXIsbz10Ll9idWZmZXIsaT10Ll9pbmZpbml0ZVRpbWVXaW5kb3csYT0oaT8xOjIpKmU7aWYoZTwxLzAmJmE8by5sZW5ndGgmJm8uc3BsaWNlKDAsby5sZW5ndGgtYSksIWkpe2Zvcih2YXIgcj1uLm5vdygpLHM9MCxsPTE7bDxvLmxlbmd0aCYmb1tsXTw9cjtsKz0yKXM9bDtzJiZvLnNwbGljZSgwLHMrMSl9fSxufSkoQiksRz0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gbihlLG4pe3JldHVybiB0LmNhbGwodGhpcyl8fHRoaXN9cmV0dXJuIGUobix0KSxuLnByb3RvdHlwZS5zY2hlZHVsZT1mdW5jdGlvbih0LGUpe3JldHVybiB0aGlzfSxufSkodSksWT17c2V0SW50ZXJ2YWw6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9W10sZT0wO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspdFtlXT1hcmd1bWVudHNbZV07dmFyIG49WS5kZWxlZ2F0ZTtyZXR1cm4oKG51bGw9PW4/dm9pZCAwOm4uc2V0SW50ZXJ2YWwpfHxzZXRJbnRlcnZhbCkuYXBwbHkodm9pZCAwLHIoW10sYSh0KSkpfSxjbGVhckludGVydmFsOmZ1bmN0aW9uKHQpe3ZhciBlPVkuZGVsZWdhdGU7cmV0dXJuKChudWxsPT1lP3ZvaWQgMDplLmNsZWFySW50ZXJ2YWwpfHxjbGVhckludGVydmFsKSh0KX0sZGVsZWdhdGU6dm9pZCAwfSxxPShmdW5jdGlvbih0KXtmdW5jdGlvbiBuKGUsbil7dmFyIG89dC5jYWxsKHRoaXMsZSxuKXx8dGhpcztyZXR1cm4gby5zY2hlZHVsZXI9ZSxvLndvcms9bixvLnBlbmRpbmc9ITEsb31yZXR1cm4gZShuLHQpLG4ucHJvdG90eXBlLnNjaGVkdWxlPWZ1bmN0aW9uKHQsZSl7aWYodm9pZCAwPT09ZSYmKGU9MCksdGhpcy5jbG9zZWQpcmV0dXJuIHRoaXM7dGhpcy5zdGF0ZT10O3ZhciBuPXRoaXMuaWQsbz10aGlzLnNjaGVkdWxlcjtyZXR1cm4gbnVsbCE9biYmKHRoaXMuaWQ9dGhpcy5yZWN5Y2xlQXN5bmNJZChvLG4sZSkpLHRoaXMucGVuZGluZz0hMCx0aGlzLmRlbGF5PWUsdGhpcy5pZD10aGlzLmlkfHx0aGlzLnJlcXVlc3RBc3luY0lkKG8sdGhpcy5pZCxlKSx0aGlzfSxuLnByb3RvdHlwZS5yZXF1ZXN0QXN5bmNJZD1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHZvaWQgMD09PW4mJihuPTApLFkuc2V0SW50ZXJ2YWwodC5mbHVzaC5iaW5kKHQsdGhpcyksbil9LG4ucHJvdG90eXBlLnJlY3ljbGVBc3luY0lkPWZ1bmN0aW9uKHQsZSxuKXtpZih2b2lkIDA9PT1uJiYobj0wKSxudWxsIT1uJiZ0aGlzLmRlbGF5PT09biYmITE9PT10aGlzLnBlbmRpbmcpcmV0dXJuIGU7WS5jbGVhckludGVydmFsKGUpfSxuLnByb3RvdHlwZS5leGVjdXRlPWZ1bmN0aW9uKHQsZSl7aWYodGhpcy5jbG9zZWQpcmV0dXJuIG5ldyBFcnJvcigiZXhlY3V0aW5nIGEgY2FuY2VsbGVkIGFjdGlvbiIpO3RoaXMucGVuZGluZz0hMTt2YXIgbj10aGlzLl9leGVjdXRlKHQsZSk7aWYobilyZXR1cm4gbjshMT09PXRoaXMucGVuZGluZyYmbnVsbCE9dGhpcy5pZCYmKHRoaXMuaWQ9dGhpcy5yZWN5Y2xlQXN5bmNJZCh0aGlzLnNjaGVkdWxlcix0aGlzLmlkLG51bGwpKX0sbi5wcm90b3R5cGUuX2V4ZWN1dGU9ZnVuY3Rpb24odCxlKXt2YXIgbixvPSExO3RyeXt0aGlzLndvcmsodCl9Y2F0Y2godCl7bz0hMCxuPSEhdCYmdHx8bmV3IEVycm9yKHQpfWlmKG8pcmV0dXJuIHRoaXMudW5zdWJzY3JpYmUoKSxufSxuLnByb3RvdHlwZS51bnN1YnNjcmliZT1mdW5jdGlvbigpe2lmKCF0aGlzLmNsb3NlZCl7dmFyIGU9dGhpcy5pZCxuPXRoaXMuc2NoZWR1bGVyLG89bi5hY3Rpb25zO3RoaXMud29yaz10aGlzLnN0YXRlPXRoaXMuc2NoZWR1bGVyPW51bGwsdGhpcy5wZW5kaW5nPSExLGYobyx0aGlzKSxudWxsIT1lJiYodGhpcy5pZD10aGlzLnJlY3ljbGVBc3luY0lkKG4sZSxudWxsKSksdGhpcy5kZWxheT1udWxsLHQucHJvdG90eXBlLnVuc3Vic2NyaWJlLmNhbGwodGhpcyl9fSxufSkoRyksWj0xLFg9e307ZnVuY3Rpb24gSyh0KXtyZXR1cm4gdCBpbiBYJiYoZGVsZXRlIFhbdF0sITApfXZhciBKPWZ1bmN0aW9uKHQpe3ZhciBlPVorKztyZXR1cm4gWFtlXT0hMCxJfHwoST1Qcm9taXNlLnJlc29sdmUoKSksSS50aGVuKChmdW5jdGlvbigpe3JldHVybiBLKGUpJiZ0KCl9KSksZX0sUT1mdW5jdGlvbih0KXtLKHQpfSwkPXtzZXRJbW1lZGlhdGU6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9W10sZT0wO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspdFtlXT1hcmd1bWVudHNbZV07dmFyIG49JC5kZWxlZ2F0ZTtyZXR1cm4oKG51bGw9PW4/dm9pZCAwOm4uc2V0SW1tZWRpYXRlKXx8SikuYXBwbHkodm9pZCAwLHIoW10sYSh0KSkpfSxjbGVhckltbWVkaWF0ZTpmdW5jdGlvbih0KXt2YXIgZT0kLmRlbGVnYXRlO3JldHVybigobnVsbD09ZT92b2lkIDA6ZS5jbGVhckltbWVkaWF0ZSl8fFEpKHQpfSxkZWxlZ2F0ZTp2b2lkIDB9LHR0PShmdW5jdGlvbih0KXtmdW5jdGlvbiBuKGUsbil7dmFyIG89dC5jYWxsKHRoaXMsZSxuKXx8dGhpcztyZXR1cm4gby5zY2hlZHVsZXI9ZSxvLndvcms9bixvfXJldHVybiBlKG4sdCksbi5wcm90b3R5cGUucmVxdWVzdEFzeW5jSWQ9ZnVuY3Rpb24oZSxuLG8pe3JldHVybiB2b2lkIDA9PT1vJiYobz0wKSxudWxsIT09byYmbz4wP3QucHJvdG90eXBlLnJlcXVlc3RBc3luY0lkLmNhbGwodGhpcyxlLG4sbyk6KGUuYWN0aW9ucy5wdXNoKHRoaXMpLGUuX3NjaGVkdWxlZHx8KGUuX3NjaGVkdWxlZD0kLnNldEltbWVkaWF0ZShlLmZsdXNoLmJpbmQoZSx2b2lkIDApKSkpfSxuLnByb3RvdHlwZS5yZWN5Y2xlQXN5bmNJZD1mdW5jdGlvbihlLG4sbyl7aWYodm9pZCAwPT09byYmKG89MCksbnVsbCE9byYmbz4wfHxudWxsPT1vJiZ0aGlzLmRlbGF5PjApcmV0dXJuIHQucHJvdG90eXBlLnJlY3ljbGVBc3luY0lkLmNhbGwodGhpcyxlLG4sbyk7MD09PWUuYWN0aW9ucy5sZW5ndGgmJigkLmNsZWFySW1tZWRpYXRlKG4pLGUuX3NjaGVkdWxlZD12b2lkIDApfSxufSkocSksZXQ9KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlLG4pe3ZvaWQgMD09PW4mJihuPXQubm93KSx0aGlzLnNjaGVkdWxlckFjdGlvbkN0b3I9ZSx0aGlzLm5vdz1ufXJldHVybiB0LnByb3RvdHlwZS5zY2hlZHVsZT1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHZvaWQgMD09PWUmJihlPTApLG5ldyB0aGlzLnNjaGVkdWxlckFjdGlvbkN0b3IodGhpcyx0KS5zY2hlZHVsZShuLGUpfSx0Lm5vdz1VLm5vdyx0fSkoKSxudD0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gbihlLG4pe3ZvaWQgMD09PW4mJihuPWV0Lm5vdyk7dmFyIG89dC5jYWxsKHRoaXMsZSxuKXx8dGhpcztyZXR1cm4gby5hY3Rpb25zPVtdLG8uX2FjdGl2ZT0hMSxvLl9zY2hlZHVsZWQ9dm9pZCAwLG99cmV0dXJuIGUobix0KSxuLnByb3RvdHlwZS5mbHVzaD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmFjdGlvbnM7aWYodGhpcy5fYWN0aXZlKWUucHVzaCh0KTtlbHNle3ZhciBuO3RoaXMuX2FjdGl2ZT0hMDtkb3tpZihuPXQuZXhlY3V0ZSh0LnN0YXRlLHQuZGVsYXkpKWJyZWFrfXdoaWxlKHQ9ZS5zaGlmdCgpKTtpZih0aGlzLl9hY3RpdmU9ITEsbil7Zm9yKDt0PWUuc2hpZnQoKTspdC51bnN1YnNjcmliZSgpO3Rocm93IG59fX0sbn0pKGV0KSxvdD1uZXcoKGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIG4oKXtyZXR1cm4gbnVsbCE9PXQmJnQuYXBwbHkodGhpcyxhcmd1bWVudHMpfHx0aGlzfXJldHVybiBlKG4sdCksbi5wcm90b3R5cGUuZmx1c2g9ZnVuY3Rpb24odCl7dGhpcy5fYWN0aXZlPSEwLHRoaXMuX3NjaGVkdWxlZD12b2lkIDA7dmFyIGUsbj10aGlzLmFjdGlvbnMsbz0tMTt0PXR8fG4uc2hpZnQoKTt2YXIgaT1uLmxlbmd0aDtkb3tpZihlPXQuZXhlY3V0ZSh0LnN0YXRlLHQuZGVsYXkpKWJyZWFrfXdoaWxlKCsrbzxpJiYodD1uLnNoaWZ0KCkpKTtpZih0aGlzLl9hY3RpdmU9ITEsZSl7Zm9yKDsrK288aSYmKHQ9bi5zaGlmdCgpKTspdC51bnN1YnNjcmliZSgpO3Rocm93IGV9fSxufSkobnQpKSh0dCksaXQ9bmV3IG50KHEpLGF0PWl0LHJ0PShmdW5jdGlvbih0KXtmdW5jdGlvbiBuKGUsbil7dmFyIG89dC5jYWxsKHRoaXMsZSxuKXx8dGhpcztyZXR1cm4gby5zY2hlZHVsZXI9ZSxvLndvcms9bixvfXJldHVybiBlKG4sdCksbi5wcm90b3R5cGUuc2NoZWR1bGU9ZnVuY3Rpb24oZSxuKXtyZXR1cm4gdm9pZCAwPT09biYmKG49MCksbj4wP3QucHJvdG90eXBlLnNjaGVkdWxlLmNhbGwodGhpcyxlLG4pOih0aGlzLmRlbGF5PW4sdGhpcy5zdGF0ZT1lLHRoaXMuc2NoZWR1bGVyLmZsdXNoKHRoaXMpLHRoaXMpfSxuLnByb3RvdHlwZS5leGVjdXRlPWZ1bmN0aW9uKGUsbil7cmV0dXJuIG4+MHx8dGhpcy5jbG9zZWQ/dC5wcm90b3R5cGUuZXhlY3V0ZS5jYWxsKHRoaXMsZSxuKTp0aGlzLl9leGVjdXRlKGUsbil9LG4ucHJvdG90eXBlLnJlcXVlc3RBc3luY0lkPWZ1bmN0aW9uKGUsbixvKXtyZXR1cm4gdm9pZCAwPT09byYmKG89MCksbnVsbCE9byYmbz4wfHxudWxsPT1vJiZ0aGlzLmRlbGF5PjA/dC5wcm90b3R5cGUucmVxdWVzdEFzeW5jSWQuY2FsbCh0aGlzLGUsbixvKTplLmZsdXNoKHRoaXMpfSxufSkocSksc3Q9bmV3KChmdW5jdGlvbih0KXtmdW5jdGlvbiBuKCl7cmV0dXJuIG51bGwhPT10JiZ0LmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8dGhpc31yZXR1cm4gZShuLHQpLG59KShudCkpKHJ0KSxsdD0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gbihlLG4pe3ZhciBvPXQuY2FsbCh0aGlzLGUsbil8fHRoaXM7cmV0dXJuIG8uc2NoZWR1bGVyPWUsby53b3JrPW4sb31yZXR1cm4gZShuLHQpLG4ucHJvdG90eXBlLnJlcXVlc3RBc3luY0lkPWZ1bmN0aW9uKGUsbixvKXtyZXR1cm4gdm9pZCAwPT09byYmKG89MCksbnVsbCE9PW8mJm8+MD90LnByb3RvdHlwZS5yZXF1ZXN0QXN5bmNJZC5jYWxsKHRoaXMsZSxuLG8pOihlLmFjdGlvbnMucHVzaCh0aGlzKSxlLl9zY2hlZHVsZWR8fChlLl9zY2hlZHVsZWQ9Ri5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKGZ1bmN0aW9uKCl7cmV0dXJuIGUuZmx1c2godm9pZCAwKX0pKSkpfSxuLnByb3RvdHlwZS5yZWN5Y2xlQXN5bmNJZD1mdW5jdGlvbihlLG4sbyl7aWYodm9pZCAwPT09byYmKG89MCksbnVsbCE9byYmbz4wfHxudWxsPT1vJiZ0aGlzLmRlbGF5PjApcmV0dXJuIHQucHJvdG90eXBlLnJlY3ljbGVBc3luY0lkLmNhbGwodGhpcyxlLG4sbyk7MD09PWUuYWN0aW9ucy5sZW5ndGgmJihGLmNhbmNlbEFuaW1hdGlvbkZyYW1lKG4pLGUuX3NjaGVkdWxlZD12b2lkIDApfSxufSkocSksY3Q9bmV3KChmdW5jdGlvbih0KXtmdW5jdGlvbiBuKCl7cmV0dXJuIG51bGwhPT10JiZ0LmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8dGhpc31yZXR1cm4gZShuLHQpLG4ucHJvdG90eXBlLmZsdXNoPWZ1bmN0aW9uKHQpe3RoaXMuX2FjdGl2ZT0hMCx0aGlzLl9zY2hlZHVsZWQ9dm9pZCAwO3ZhciBlLG49dGhpcy5hY3Rpb25zLG89LTE7dD10fHxuLnNoaWZ0KCk7dmFyIGk9bi5sZW5ndGg7ZG97aWYoZT10LmV4ZWN1dGUodC5zdGF0ZSx0LmRlbGF5KSlicmVha313aGlsZSgrK288aSYmKHQ9bi5zaGlmdCgpKSk7aWYodGhpcy5fYWN0aXZlPSExLGUpe2Zvcig7KytvPGkmJih0PW4uc2hpZnQoKSk7KXQudW5zdWJzY3JpYmUoKTt0aHJvdyBlfX0sbn0pKG50KSkobHQpLGR0PW5ldyBUKChmdW5jdGlvbih0KXtyZXR1cm4gdC5jb21wbGV0ZSgpfSkpO2Z1bmN0aW9uIHB0KHQsZSl7cmV0dXJuIG5ldyBUKChmdW5jdGlvbihuKXt2YXIgbz0wO3JldHVybiBlLnNjaGVkdWxlKChmdW5jdGlvbigpe289PT10Lmxlbmd0aD9uLmNvbXBsZXRlKCk6KG4ubmV4dCh0W28rK10pLG4uY2xvc2VkfHx0aGlzLnNjaGVkdWxlKCkpfSkpfSkpfXZhciBtdD1mdW5jdGlvbih0KXtyZXR1cm4gdCYmIm51bWJlciI9PXR5cGVvZiB0Lmxlbmd0aCYmImZ1bmN0aW9uIiE9dHlwZW9mIHR9O2Z1bmN0aW9uIGZ0KHQpe3JldHVybiBkKG51bGw9PXQ/dm9pZCAwOnQudGhlbil9dmFyIHV0LGd0PShmdW5jdGlvbiBodCgpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJlN5bWJvbC5pdGVyYXRvcj9TeW1ib2wuaXRlcmF0b3I6IkBAaXRlcmF0b3IifSkoKTtmdW5jdGlvbiBidCh0LGUpe2lmKCF0KXRocm93IG5ldyBFcnJvcigiSXRlcmFibGUgY2Fubm90IGJlIG51bGwiKTtyZXR1cm4gbmV3IFQoKGZ1bmN0aW9uKG4pe3ZhciBvPW5ldyB1O3JldHVybiBvLmFkZChlLnNjaGVkdWxlKChmdW5jdGlvbigpe3ZhciBpPXRbU3ltYm9sLmFzeW5jSXRlcmF0b3JdKCk7by5hZGQoZS5zY2hlZHVsZSgoZnVuY3Rpb24oKXt2YXIgdD10aGlzO2kubmV4dCgpLnRoZW4oKGZ1bmN0aW9uKGUpe2UuZG9uZT9uLmNvbXBsZXRlKCk6KG4ubmV4dChlLnZhbHVlKSx0LnNjaGVkdWxlKCkpfSkpfSkpKX0pKSksb30pKX1mdW5jdGlvbiB5dCh0KXtyZXR1cm4gZCh0W0RdKX1mdW5jdGlvbiBfdCh0KXtyZXR1cm4gZChudWxsPT10P3ZvaWQgMDp0W2d0XSl9ZnVuY3Rpb24gQ3QodCl7cmV0dXJuIFN5bWJvbC5hc3luY0l0ZXJhdG9yJiZkKG51bGw9PXQ/dm9pZCAwOnRbU3ltYm9sLmFzeW5jSXRlcmF0b3JdKX1mdW5jdGlvbiBNdCh0KXtyZXR1cm4gbmV3IFR5cGVFcnJvcigiWW91IHByb3ZpZGVkICIrKG51bGwhPT10JiYib2JqZWN0Ij09dHlwZW9mIHQ/ImFuIGludmFsaWQgb2JqZWN0IjoiJyIrdCsiJyIpKyIgd2hlcmUgYSBzdHJlYW0gd2FzIGV4cGVjdGVkLiBZb3UgY2FuIHByb3ZpZGUgYW4gT2JzZXJ2YWJsZSwgUHJvbWlzZSwgUmVhZGFibGVTdHJlYW0sIEFycmF5LCBBc3luY0l0ZXJhYmxlLCBvciBJdGVyYWJsZS4iKX1mdW5jdGlvbiB2dCh0KXtyZXR1cm4gbCh0aGlzLGFyZ3VtZW50cywoZnVuY3Rpb24gZSgpe3ZhciBuLGksYTtyZXR1cm4gbyh0aGlzLChmdW5jdGlvbihlKXtzd2l0Y2goZS5sYWJlbCl7Y2FzZSAwOm49dC5nZXRSZWFkZXIoKSxlLmxhYmVsPTE7Y2FzZSAxOmUudHJ5cy5wdXNoKFsxLCw5LDEwXSksZS5sYWJlbD0yO2Nhc2UgMjpyZXR1cm5bNCxzKG4ucmVhZCgpKV07Y2FzZSAzOnJldHVybiBpPWUuc2VudCgpLGE9aS52YWx1ZSxpLmRvbmU/WzQscyh2b2lkIDApXTpbMyw1XTtjYXNlIDQ6cmV0dXJuWzIsZS5zZW50KCldO2Nhc2UgNTpyZXR1cm5bNCxzKGEpXTtjYXNlIDY6cmV0dXJuWzQsZS5zZW50KCldO2Nhc2UgNzpyZXR1cm4gZS5zZW50KCksWzMsMl07Y2FzZSA4OnJldHVyblszLDEwXTtjYXNlIDk6cmV0dXJuIG4ucmVsZWFzZUxvY2soKSxbN107Y2FzZSAxMDpyZXR1cm5bMl19fSkpfSkpfWZ1bmN0aW9uIHh0KHQpe3JldHVybiBkKG51bGw9PXQ/dm9pZCAwOnQuZ2V0UmVhZGVyKX1mdW5jdGlvbiBPdCh0LGUpe2lmKG51bGwhPXQpe2lmKHl0KHQpKXJldHVybihmdW5jdGlvbiBuKHQsZSl7cmV0dXJuIG5ldyBUKChmdW5jdGlvbihuKXt2YXIgbz1uZXcgdTtyZXR1cm4gby5hZGQoZS5zY2hlZHVsZSgoZnVuY3Rpb24oKXt2YXIgaT10W0RdKCk7by5hZGQoaS5zdWJzY3JpYmUoe25leHQ6ZnVuY3Rpb24odCl7by5hZGQoZS5zY2hlZHVsZSgoZnVuY3Rpb24oKXtyZXR1cm4gbi5uZXh0KHQpfSkpKX0sZXJyb3I6ZnVuY3Rpb24odCl7by5hZGQoZS5zY2hlZHVsZSgoZnVuY3Rpb24oKXtyZXR1cm4gbi5lcnJvcih0KX0pKSl9LGNvbXBsZXRlOmZ1bmN0aW9uKCl7by5hZGQoZS5zY2hlZHVsZSgoZnVuY3Rpb24oKXtyZXR1cm4gbi5jb21wbGV0ZSgpfSkpKX19KSl9KSkpLG99KSl9KSh0LGUpO2lmKG10KHQpKXJldHVybiBwdCh0LGUpO2lmKGZ0KHQpKXJldHVybihmdW5jdGlvbiBvKHQsZSl7cmV0dXJuIG5ldyBUKChmdW5jdGlvbihuKXtyZXR1cm4gZS5zY2hlZHVsZSgoZnVuY3Rpb24oKXtyZXR1cm4gdC50aGVuKChmdW5jdGlvbih0KXtuLmFkZChlLnNjaGVkdWxlKChmdW5jdGlvbigpe24ubmV4dCh0KSxuLmFkZChlLnNjaGVkdWxlKChmdW5jdGlvbigpe3JldHVybiBuLmNvbXBsZXRlKCl9KSkpfSkpKX0pLChmdW5jdGlvbih0KXtuLmFkZChlLnNjaGVkdWxlKChmdW5jdGlvbigpe3JldHVybiBuLmVycm9yKHQpfSkpKX0pKX0pKX0pKX0pKHQsZSk7aWYoQ3QodCkpcmV0dXJuIGJ0KHQsZSk7aWYoX3QodCkpcmV0dXJuKGZ1bmN0aW9uIGkodCxlKXtyZXR1cm4gbmV3IFQoKGZ1bmN0aW9uKG4pe3ZhciBvO3JldHVybiBuLmFkZChlLnNjaGVkdWxlKChmdW5jdGlvbigpe289dFtndF0oKSwoZnVuY3Rpb24gaSh0LGUsbixvKXt2b2lkIDA9PT1vJiYobz0wKTt2YXIgaT1lLnNjaGVkdWxlKChmdW5jdGlvbigpe3RyeXtuLmNhbGwodGhpcyl9Y2F0Y2goZSl7dC5lcnJvcihlKX19KSxvKTt0LmFkZChpKX0pKG4sZSwoZnVuY3Rpb24oKXt2YXIgdD1vLm5leHQoKSxlPXQudmFsdWU7dC5kb25lP24uY29tcGxldGUoKToobi5uZXh0KGUpLHRoaXMuc2NoZWR1bGUoKSl9KSl9KSkpLGZ1bmN0aW9uKCl7cmV0dXJuIGQobnVsbD09bz92b2lkIDA6by5yZXR1cm4pJiZvLnJldHVybigpfX0pKX0pKHQsZSk7aWYoeHQodCkpcmV0dXJuKGZ1bmN0aW9uIGEodCxlKXtyZXR1cm4gYnQodnQodCksZSl9KSh0LGUpfXRocm93IE10KHQpfWZ1bmN0aW9uIFB0KHQsZSl7cmV0dXJuIGU/T3QodCxlKTp3dCh0KX1mdW5jdGlvbiB3dCh0KXtpZih0IGluc3RhbmNlb2YgVClyZXR1cm4gdDtpZihudWxsIT10KXtpZih5dCh0KSlyZXR1cm4oZnVuY3Rpb24gZSh0KXtyZXR1cm4gbmV3IFQoKGZ1bmN0aW9uKGUpe3ZhciBuPXRbRF0oKTtpZihkKG4uc3Vic2NyaWJlKSlyZXR1cm4gbi5zdWJzY3JpYmUoZSk7dGhyb3cgbmV3IFR5cGVFcnJvcigiUHJvdmlkZWQgb2JqZWN0IGRvZXMgbm90IGNvcnJlY3RseSBpbXBsZW1lbnQgU3ltYm9sLm9ic2VydmFibGUiKX0pKX0pKHQpO2lmKG10KHQpKXJldHVybiBrdCh0KTtpZihmdCh0KSlyZXR1cm4oZnVuY3Rpb24gbih0KXtyZXR1cm4gbmV3IFQoKGZ1bmN0aW9uKGUpe3QudGhlbigoZnVuY3Rpb24odCl7ZS5jbG9zZWR8fChlLm5leHQodCksZS5jb21wbGV0ZSgpKX0pLChmdW5jdGlvbih0KXtyZXR1cm4gZS5lcnJvcih0KX0pKS50aGVuKG51bGwsQyl9KSl9KSh0KTtpZihDdCh0KSlyZXR1cm4gU3QodCk7aWYoX3QodCkpcmV0dXJuKGZ1bmN0aW9uIG8odCl7cmV0dXJuIG5ldyBUKChmdW5jdGlvbihlKXt2YXIgbixvO3RyeXtmb3IodmFyIGE9aSh0KSxyPWEubmV4dCgpOyFyLmRvbmU7cj1hLm5leHQoKSl7aWYoZS5uZXh0KHIudmFsdWUpLGUuY2xvc2VkKXJldHVybn19Y2F0Y2godCl7bj17ZXJyb3I6dH19ZmluYWxseXt0cnl7ciYmIXIuZG9uZSYmKG89YS5yZXR1cm4pJiZvLmNhbGwoYSl9ZmluYWxseXtpZihuKXRocm93IG4uZXJyb3J9fWUuY29tcGxldGUoKX0pKX0pKHQpO2lmKHh0KHQpKXJldHVybihmdW5jdGlvbiBhKHQpe3JldHVybiBTdCh2dCh0KSl9KSh0KX10aHJvdyBNdCh0KX1mdW5jdGlvbiBrdCh0KXtyZXR1cm4gbmV3IFQoKGZ1bmN0aW9uKGUpe2Zvcih2YXIgbj0wO248dC5sZW5ndGgmJiFlLmNsb3NlZDtuKyspZS5uZXh0KHRbbl0pO2UuY29tcGxldGUoKX0pKX1mdW5jdGlvbiBTdCh0KXtyZXR1cm4gbmV3IFQoKGZ1bmN0aW9uKGUpeyhmdW5jdGlvbiBpKHQsZSl7dmFyIGksYSxyLHM7cmV0dXJuIG4odGhpcyx2b2lkIDAsdm9pZCAwLChmdW5jdGlvbigpe3ZhciBuO3JldHVybiBvKHRoaXMsKGZ1bmN0aW9uKG8pe3N3aXRjaChvLmxhYmVsKXtjYXNlIDA6by50cnlzLnB1c2goWzAsNSw2LDExXSksaT1jKHQpLG8ubGFiZWw9MTtjYXNlIDE6cmV0dXJuWzQsaS5uZXh0KCldO2Nhc2UgMjppZigoYT1vLnNlbnQoKSkuZG9uZSlyZXR1cm5bMyw0XTtpZihlLm5leHQoYS52YWx1ZSksZS5jbG9zZWQpcmV0dXJuWzJdO28ubGFiZWw9MztjYXNlIDM6cmV0dXJuWzMsMV07Y2FzZSA0OnJldHVyblszLDExXTtjYXNlIDU6cmV0dXJuIG49by5zZW50KCkscj17ZXJyb3I6bn0sWzMsMTFdO2Nhc2UgNjpyZXR1cm4gby50cnlzLnB1c2goWzYsLDksMTBdKSxhJiYhYS5kb25lJiYocz1pLnJldHVybik/WzQscy5jYWxsKGkpXTpbMyw4XTtjYXNlIDc6by5zZW50KCksby5sYWJlbD04O2Nhc2UgODpyZXR1cm5bMywxMF07Y2FzZSA5OmlmKHIpdGhyb3cgci5lcnJvcjtyZXR1cm5bN107Y2FzZSAxMDpyZXR1cm5bN107Y2FzZSAxMTpyZXR1cm4gZS5jb21wbGV0ZSgpLFsyXX19KSl9KSl9KSh0LGUpLmNhdGNoKChmdW5jdGlvbih0KXtyZXR1cm4gZS5lcnJvcih0KX0pKX0pKX1mdW5jdGlvbiBEdCh0LGUpe3JldHVybiBlP3B0KHQsZSk6a3QodCl9ZnVuY3Rpb24gUnQodCl7cmV0dXJuIHQmJmQodC5zY2hlZHVsZSl9ZnVuY3Rpb24gRXQodCl7cmV0dXJuIHRbdC5sZW5ndGgtMV19ZnVuY3Rpb24gQXQodCl7cmV0dXJuIGQoRXQodCkpP3QucG9wKCk6dm9pZCAwfWZ1bmN0aW9uIFR0KHQpe3JldHVybiBSdChFdCh0KSk/dC5wb3AoKTp2b2lkIDB9ZnVuY3Rpb24gTnQodCxlKXtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIEV0KHQpP3QucG9wKCk6ZX1mdW5jdGlvbiB6dCgpe2Zvcih2YXIgdD1bXSxlPTA7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyl0W2VdPWFyZ3VtZW50c1tlXTt2YXIgbj1UdCh0KTtyZXR1cm4gbj9wdCh0LG4pOkR0KHQpfWZ1bmN0aW9uIEl0KHQsZSl7dmFyIG49ZCh0KT90OmZ1bmN0aW9uKCl7cmV0dXJuIHR9LG89ZnVuY3Rpb24odCl7cmV0dXJuIHQuZXJyb3IobigpKX07cmV0dXJuIG5ldyBUKGU/ZnVuY3Rpb24odCl7cmV0dXJuIGUuc2NoZWR1bGUobywwLHQpfTpvKX0hKGZ1bmN0aW9uKHQpe3QuTkVYVD0iTiIsdC5FUlJPUj0iRSIsdC5DT01QTEVURT0iQyJ9KSh1dHx8KHV0PXt9KSk7dmFyIEh0PShmdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlLG4pe3RoaXMua2luZD10LHRoaXMudmFsdWU9ZSx0aGlzLmVycm9yPW4sdGhpcy5oYXNWYWx1ZT0iTiI9PT10fXJldHVybiB0LnByb3RvdHlwZS5vYnNlcnZlPWZ1bmN0aW9uKHQpe3JldHVybiBGdCh0aGlzLHQpfSx0LnByb3RvdHlwZS5kbz1mdW5jdGlvbih0LGUsbil7dmFyIG89dGhpcyxpPW8ua2luZCxhPW8uZXJyb3I7cmV0dXJuIk4iPT09aT9udWxsPT10P3ZvaWQgMDp0KG8udmFsdWUpOiJFIj09PWk/bnVsbD09ZT92b2lkIDA6ZShhKTpudWxsPT1uP3ZvaWQgMDpuKCl9LHQucHJvdG90eXBlLmFjY2VwdD1mdW5jdGlvbih0LGUsbil7dmFyIG87cmV0dXJuIGQobnVsbD09PShvPXQpfHx2b2lkIDA9PT1vP3ZvaWQgMDpvLm5leHQpP3RoaXMub2JzZXJ2ZSh0KTp0aGlzLmRvKHQsZSxuKX0sdC5wcm90b3R5cGUudG9PYnNlcnZhYmxlPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPXQua2luZCxuPXQuZXJyb3Isbz0iTiI9PT1lP3p0KHQudmFsdWUpOiJFIj09PWU/SXQoKGZ1bmN0aW9uKCl7cmV0dXJuIG59KSk6IkMiPT09ZT9kdDowO2lmKCFvKXRocm93IG5ldyBUeXBlRXJyb3IoIlVuZXhwZWN0ZWQgbm90aWZpY2F0aW9uIGtpbmQgIitlKTtyZXR1cm4gb30sdC5jcmVhdGVOZXh0PWZ1bmN0aW9uKGUpe3JldHVybiBuZXcgdCgiTiIsZSl9LHQuY3JlYXRlRXJyb3I9ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyB0KCJFIix2b2lkIDAsZSl9LHQuY3JlYXRlQ29tcGxldGU9ZnVuY3Rpb24oKXtyZXR1cm4gdC5jb21wbGV0ZU5vdGlmaWNhdGlvbn0sdC5jb21wbGV0ZU5vdGlmaWNhdGlvbj1uZXcgdCgiQyIpLHR9KSgpO2Z1bmN0aW9uIEZ0KHQsZSl7dmFyIG4sbyxpLGE9dC5raW5kLHI9dC52YWx1ZSxzPXQuZXJyb3I7aWYoInN0cmluZyIhPXR5cGVvZiBhKXRocm93IG5ldyBUeXBlRXJyb3IoJ0ludmFsaWQgbm90aWZpY2F0aW9uLCBtaXNzaW5nICJraW5kIicpOyJOIj09PWE/bnVsbD09PShuPWUubmV4dCl8fHZvaWQgMD09PW58fG4uY2FsbChlLHIpOiJFIj09PWE/bnVsbD09PShvPWUuZXJyb3IpfHx2b2lkIDA9PT1vfHxvLmNhbGwoZSxzKTpudWxsPT09KGk9ZS5jb21wbGV0ZSl8fHZvaWQgMD09PWl8fGkuY2FsbChlKX1mdW5jdGlvbiBMdCh0KXtyZXR1cm4hIXQmJih0IGluc3RhbmNlb2YgVHx8ZCh0LmxpZnQpJiZkKHQuc3Vic2NyaWJlKSl9dmFyIEJ0PXAoKGZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbiBlKCl7dCh0aGlzKSx0aGlzLm5hbWU9IkVtcHR5RXJyb3IiLHRoaXMubWVzc2FnZT0ibm8gZWxlbWVudHMgaW4gc2VxdWVuY2UifX0pKTtmdW5jdGlvbiBWdCh0LGUpe3JldHVybiB6KChmdW5jdGlvbihuLG8pe3ZhciBpPTA7bi5zdWJzY3JpYmUobmV3IEgobywoZnVuY3Rpb24obil7by5uZXh0KHQuY2FsbChlLG4saSsrKSl9KSkpfSkpfXZhciBqdD1BcnJheS5pc0FycmF5O2Z1bmN0aW9uIFV0KHQpe3JldHVybiBWdCgoZnVuY3Rpb24oZSl7cmV0dXJuKGZ1bmN0aW9uIG4odCxlKXtyZXR1cm4ganQoZSk/dC5hcHBseSh2b2lkIDAscihbXSxhKGUpKSk6dChlKX0pKHQsZSl9KSl9dmFyIFd0PUFycmF5LmlzQXJyYXksR3Q9T2JqZWN0LmdldFByb3RvdHlwZU9mLFl0PU9iamVjdC5wcm90b3R5cGUscXQ9T2JqZWN0LmtleXM7ZnVuY3Rpb24gWnQodCl7aWYoMT09PXQubGVuZ3RoKXt2YXIgZT10WzBdO2lmKFd0KGUpKXJldHVybnthcmdzOmUsa2V5czpudWxsfTtpZigoZnVuY3Rpb24gbih0KXtyZXR1cm4gdCYmIm9iamVjdCI9PXR5cGVvZiB0JiZHdCh0KT09PVl0fSkoZSkpe3ZhciBvPXF0KGUpO3JldHVybnthcmdzOm8ubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gZVt0XX0pKSxrZXlzOm99fX1yZXR1cm57YXJnczp0LGtleXM6bnVsbH19ZnVuY3Rpb24gWHQodCxlKXtyZXR1cm4gdC5yZWR1Y2UoKGZ1bmN0aW9uKHQsbixvKXtyZXR1cm4gdFtuXT1lW29dLHR9KSx7fSl9ZnVuY3Rpb24gS3QoKXtmb3IodmFyIHQ9W10sZT0wO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspdFtlXT1hcmd1bWVudHNbZV07dmFyIG49VHQodCksbz1BdCh0KSxpPVp0KHQpLGE9aS5hcmdzLHI9aS5rZXlzO2lmKDA9PT1hLmxlbmd0aClyZXR1cm4gUHQoW10sbik7dmFyIHM9bmV3IFQoSnQoYSxuLHI/ZnVuY3Rpb24odCl7cmV0dXJuIFh0KHIsdCl9OlIpKTtyZXR1cm4gbz9zLnBpcGUoVXQobykpOnN9ZnVuY3Rpb24gSnQodCxlLG4pe3JldHVybiB2b2lkIDA9PT1uJiYobj1SKSxmdW5jdGlvbihvKXtRdChlLChmdW5jdGlvbigpe2Zvcih2YXIgaT10Lmxlbmd0aCxhPW5ldyBBcnJheShpKSxyPWkscz1pLGw9ZnVuY3Rpb24oaSl7UXQoZSwoZnVuY3Rpb24oKXt2YXIgbD1QdCh0W2ldLGUpLGM9ITE7bC5zdWJzY3JpYmUobmV3IEgobywoZnVuY3Rpb24odCl7YVtpXT10LGN8fChjPSEwLHMtLSksc3x8by5uZXh0KG4oYS5zbGljZSgpKSl9KSwoZnVuY3Rpb24oKXstLXJ8fG8uY29tcGxldGUoKX0pKSl9KSxvKX0sYz0wO2M8aTtjKyspbChjKX0pLG8pfX1mdW5jdGlvbiBRdCh0LGUsbil7dD9uLmFkZCh0LnNjaGVkdWxlKGUpKTplKCl9ZnVuY3Rpb24gJHQodCxlLG4pe3JldHVybiB2b2lkIDA9PT1uJiYobj0xLzApLGQoZSk/JHQoKGZ1bmN0aW9uKG4sbyl7cmV0dXJuIFZ0KChmdW5jdGlvbih0LGkpe3JldHVybiBlKG4sdCxvLGkpfSkpKHd0KHQobixvKSkpfSksbik6KCJudW1iZXIiPT10eXBlb2YgZSYmKG49ZSkseigoZnVuY3Rpb24oZSxvKXtyZXR1cm4oZnVuY3Rpb24gaSh0LGUsbixvLGEscixzLGwpe3ZhciBjPVtdLGQ9MCxwPTAsbT0hMSxmPWZ1bmN0aW9uKCl7IW18fGMubGVuZ3RofHxkfHxlLmNvbXBsZXRlKCl9LHU9ZnVuY3Rpb24odCl7cmV0dXJuIGQ8bz9nKHQpOmMucHVzaCh0KX0sZz1mdW5jdGlvbih0KXtyJiZlLm5leHQodCksZCsrO3ZhciBpPSExO3d0KG4odCxwKyspKS5zdWJzY3JpYmUobmV3IEgoZSwoZnVuY3Rpb24odCl7bnVsbD09YXx8YSh0KSxyP3UodCk6ZS5uZXh0KHQpfSksKGZ1bmN0aW9uKCl7aT0hMH0pLHZvaWQgMCwoZnVuY3Rpb24oKXtpZihpKXRyeXtkLS07Zm9yKHZhciB0PWZ1bmN0aW9uKCl7dmFyIHQ9Yy5zaGlmdCgpO3M/ZS5hZGQocy5zY2hlZHVsZSgoZnVuY3Rpb24oKXtyZXR1cm4gZyh0KX0pKSk6Zyh0KX07Yy5sZW5ndGgmJmQ8bzspdCgpO2YoKX1jYXRjaCh0KXtlLmVycm9yKHQpfX0pKSl9O3JldHVybiB0LnN1YnNjcmliZShuZXcgSChlLHUsKGZ1bmN0aW9uKCl7bT0hMCxmKCl9KSkpLGZ1bmN0aW9uKCl7bnVsbD09bHx8bCgpfX0pKGUsbyx0LG4pfSkpKX1mdW5jdGlvbiB0ZSh0KXtyZXR1cm4gdm9pZCAwPT09dCYmKHQ9MS8wKSwkdChSLHQpfWZ1bmN0aW9uIGVlKCl7cmV0dXJuIHRlKDEpfWZ1bmN0aW9uIG5lKCl7Zm9yKHZhciB0PVtdLGU9MDtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXRbZV09YXJndW1lbnRzW2VdO3JldHVybiBlZSgpKER0KHQsVHQodCkpKX1mdW5jdGlvbiBvZSh0KXtyZXR1cm4gbmV3IFQoKGZ1bmN0aW9uKGUpe3d0KHQoKSkuc3Vic2NyaWJlKGUpfSkpfWZ1bmN0aW9uIGllKCl7Zm9yKHZhciB0PVtdLGU9MDtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXRbZV09YXJndW1lbnRzW2VdO3ZhciBuPUF0KHQpLG89WnQodCksaT1vLmFyZ3MsYT1vLmtleXMscj1uZXcgVCgoZnVuY3Rpb24odCl7dmFyIGU9aS5sZW5ndGg7aWYoZSlmb3IodmFyIG49bmV3IEFycmF5KGUpLG89ZSxyPWUscz1mdW5jdGlvbihlKXt2YXIgcz0hMTt3dChpW2VdKS5zdWJzY3JpYmUobmV3IEgodCwoZnVuY3Rpb24odCl7c3x8KHM9ITAsci0tKSxuW2VdPXR9KSwoZnVuY3Rpb24oKXstLW8mJnN8fChyfHx0Lm5leHQoYT9YdChhLG4pOm4pLHQuY29tcGxldGUoKSl9KSkpfSxsPTA7bDxlO2wrKylzKGwpO2Vsc2UgdC5jb21wbGV0ZSgpfSkpO3JldHVybiBuP3IucGlwZShVdChuKSk6cn12YXIgYWU9WyJhZGRMaXN0ZW5lciIsInJlbW92ZUxpc3RlbmVyIl0scmU9WyJhZGRFdmVudExpc3RlbmVyIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciJdLHNlPVsib24iLCJvZmYiXTtmdW5jdGlvbiBsZSh0LGUsbixvKXtpZihkKG4pJiYobz1uLG49dm9pZCAwKSxvKXJldHVybiBsZSh0LGUsbikucGlwZShVdChvKSk7dmFyIGk9YSgoZnVuY3Rpb24gcih0KXtyZXR1cm4gZCh0LmFkZEV2ZW50TGlzdGVuZXIpJiZkKHQucmVtb3ZlRXZlbnRMaXN0ZW5lcil9KSh0KT9yZS5tYXAoKGZ1bmN0aW9uKG8pe3JldHVybiBmdW5jdGlvbihpKXtyZXR1cm4gdFtvXShlLGksbil9fSkpOihmdW5jdGlvbiBzKHQpe3JldHVybiBkKHQuYWRkTGlzdGVuZXIpJiZkKHQucmVtb3ZlTGlzdGVuZXIpfSkodCk/YWUubWFwKGNlKHQsZSkpOihmdW5jdGlvbiBsKHQpe3JldHVybiBkKHQub24pJiZkKHQub2ZmKX0pKHQpP3NlLm1hcChjZSh0LGUpKTpbXSwyKSxjPWlbMF0scD1pWzFdO2lmKCFjJiZtdCh0KSlyZXR1cm4gJHQoKGZ1bmN0aW9uKHQpe3JldHVybiBsZSh0LGUsbil9KSkoRHQodCkpO2lmKCFjKXRocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgZXZlbnQgdGFyZ2V0Iik7cmV0dXJuIG5ldyBUKChmdW5jdGlvbih0KXt2YXIgZT1mdW5jdGlvbigpe2Zvcih2YXIgZT1bXSxuPTA7bjxhcmd1bWVudHMubGVuZ3RoO24rKyllW25dPWFyZ3VtZW50c1tuXTtyZXR1cm4gdC5uZXh0KDE8ZS5sZW5ndGg/ZTplWzBdKX07cmV0dXJuIGMoZSksZnVuY3Rpb24oKXtyZXR1cm4gcChlKX19KSl9ZnVuY3Rpb24gY2UodCxlKXtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIGZ1bmN0aW9uKG8pe3JldHVybiB0W25dKGUsbyl9fX1mdW5jdGlvbiBkZSh0LGUsbil7dm9pZCAwPT09dCYmKHQ9MCksdm9pZCAwPT09biYmKG49YXQpO3ZhciBvPS0xO3JldHVybiBudWxsIT1lJiYoUnQoZSk/bj1lOm89ZSksbmV3IFQoKGZ1bmN0aW9uKGUpe3ZhciBpPShmdW5jdGlvbiBhKHQpe3JldHVybiB0IGluc3RhbmNlb2YgRGF0ZSYmIWlzTmFOKHQpfSkodCk/K3Qtbi5ub3coKTp0O2k8MCYmKGk9MCk7dmFyIHI9MDtyZXR1cm4gbi5zY2hlZHVsZSgoZnVuY3Rpb24oKXtlLmNsb3NlZHx8KGUubmV4dChyKyspLDA8PW8/dGhpcy5zY2hlZHVsZSh2b2lkIDAsbyk6ZS5jb21wbGV0ZSgpKX0pLGkpfSkpfWZ1bmN0aW9uIHBlKCl7Zm9yKHZhciB0PVtdLGU9MDtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXRbZV09YXJndW1lbnRzW2VdO3ZhciBuPVR0KHQpLG89TnQodCwxLzApLGk9dDtyZXR1cm4gaS5sZW5ndGg/MT09PWkubGVuZ3RoP3d0KGlbMF0pOnRlKG8pKER0KGksbikpOmR0fXZhciBtZT1BcnJheS5pc0FycmF5O2Z1bmN0aW9uIGZlKHQpe3JldHVybiAxPT09dC5sZW5ndGgmJm1lKHRbMF0pP3RbMF06dH1mdW5jdGlvbiB1ZSh0LGUpe3JldHVybiB6KChmdW5jdGlvbihuLG8pe3ZhciBpPTA7bi5zdWJzY3JpYmUobmV3IEgobywoZnVuY3Rpb24obil7cmV0dXJuIHQuY2FsbChlLG4saSsrKSYmby5uZXh0KG4pfSkpKX0pKX1mdW5jdGlvbiBnZSh0LGUpe3JldHVybiB2b2lkIDA9PT1lJiYoZT1hdCksKGZ1bmN0aW9uIG4odCl7cmV0dXJuIHooKGZ1bmN0aW9uKGUsbil7dmFyIG89ITEsaT1udWxsLGE9bnVsbCxyPSExLHM9ZnVuY3Rpb24oKXtpZihudWxsPT1hfHxhLnVuc3Vic2NyaWJlKCksYT1udWxsLG8pe289ITE7dmFyIHQ9aTtpPW51bGwsbi5uZXh0KHQpfXImJm4uY29tcGxldGUoKX0sbD1mdW5jdGlvbigpe2E9bnVsbCxyJiZuLmNvbXBsZXRlKCl9O2Uuc3Vic2NyaWJlKG5ldyBIKG4sKGZ1bmN0aW9uKGUpe289ITAsaT1lLGF8fHd0KHQoZSkpLnN1YnNjcmliZShhPW5ldyBIKG4scyxsKSl9KSwoZnVuY3Rpb24oKXtyPSEwLCghb3x8IWF8fGEuY2xvc2VkKSYmbi5jb21wbGV0ZSgpfSkpKX0pKX0pKChmdW5jdGlvbigpe3JldHVybiBkZSh0LGUpfSkpfWZ1bmN0aW9uIGhlKHQpe3JldHVybiB6KChmdW5jdGlvbihlLG4pe3ZhciBvLGk9bnVsbCxhPSExO2k9ZS5zdWJzY3JpYmUobmV3IEgobix2b2lkIDAsdm9pZCAwLChmdW5jdGlvbihyKXtvPXd0KHQocixoZSh0KShlKSkpLGk/KGkudW5zdWJzY3JpYmUoKSxpPW51bGwsby5zdWJzY3JpYmUobikpOmE9ITB9KSkpLGEmJihpLnVuc3Vic2NyaWJlKCksaT1udWxsLG8uc3Vic2NyaWJlKG4pKX0pKX1mdW5jdGlvbiBiZSh0LGUsbixvLGkpe3JldHVybiBmdW5jdGlvbihhLHIpe3ZhciBzPW4sbD1lLGM9MDthLnN1YnNjcmliZShuZXcgSChyLChmdW5jdGlvbihlKXt2YXIgbj1jKys7bD1zP3QobCxlLG4pOihzPSEwLGUpLG8mJnIubmV4dChsKX0pLGkmJmZ1bmN0aW9uKCl7cyYmci5uZXh0KGwpLHIuY29tcGxldGUoKX0pKX19ZnVuY3Rpb24geWUoKXtmb3IodmFyIHQ9W10sZT0wO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspdFtlXT1hcmd1bWVudHNbZV07dmFyIG49QXQodCk7cmV0dXJuIG4/RSh5ZS5hcHBseSh2b2lkIDAscihbXSxhKHQpKSksVXQobikpOnooKGZ1bmN0aW9uKGUsbil7SnQocihbZV0sYShmZSh0KSkpKShuKX0pKX1mdW5jdGlvbiBfZSgpe2Zvcih2YXIgdD1bXSxlPTA7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyl0W2VdPWFyZ3VtZW50c1tlXTtyZXR1cm4geWUuYXBwbHkodm9pZCAwLHIoW10sYSh0KSkpfWZ1bmN0aW9uIENlKHQsZSl7cmV0dXJuIHZvaWQgMD09PWUmJihlPWl0KSx6KChmdW5jdGlvbihuLG8pe3ZhciBpPW51bGwsYT1udWxsLHI9bnVsbCxzPWZ1bmN0aW9uKCl7aWYoaSl7aS51bnN1YnNjcmliZSgpLGk9bnVsbDt2YXIgdD1hO2E9bnVsbCxvLm5leHQodCl9fTtmdW5jdGlvbiBsKCl7dmFyIG49cit0LGE9ZS5ub3coKTtpZihhPG4pcmV0dXJuIGk9dGhpcy5zY2hlZHVsZSh2b2lkIDAsbi1hKSx2b2lkIG8uYWRkKGkpO3MoKX1uLnN1YnNjcmliZShuZXcgSChvLChmdW5jdGlvbihuKXthPW4scj1lLm5vdygpLGl8fChpPWUuc2NoZWR1bGUobCx0KSxvLmFkZChpKSl9KSwoZnVuY3Rpb24oKXtzKCksby5jb21wbGV0ZSgpfSksdm9pZCAwLChmdW5jdGlvbigpe2E9aT1udWxsfSkpKX0pKX1mdW5jdGlvbiBNZSh0KXtyZXR1cm4geigoZnVuY3Rpb24oZSxuKXt2YXIgbz0hMTtlLnN1YnNjcmliZShuZXcgSChuLChmdW5jdGlvbih0KXtvPSEwLG4ubmV4dCh0KX0pLChmdW5jdGlvbigpe298fG4ubmV4dCh0KSxuLmNvbXBsZXRlKCl9KSkpfSkpfWZ1bmN0aW9uIHZlKHQpe3JldHVybiB0PD0wP2Z1bmN0aW9uKCl7cmV0dXJuIGR0fTp6KChmdW5jdGlvbihlLG4pe3ZhciBvPTA7ZS5zdWJzY3JpYmUobmV3IEgobiwoZnVuY3Rpb24oZSl7KytvPD10JiYobi5uZXh0KGUpLHQ8PW8mJm4uY29tcGxldGUoKSl9KSkpfSkpfWZ1bmN0aW9uIHhlKCl7cmV0dXJuIHooKGZ1bmN0aW9uKHQsZSl7dC5zdWJzY3JpYmUobmV3IEgoZSxNKSl9KSl9ZnVuY3Rpb24gT2UodCxlKXtyZXR1cm4gZT9mdW5jdGlvbihuKXtyZXR1cm4gbmUoZS5waXBlKHZlKDEpLHhlKCkpLG4ucGlwZShPZSh0KSkpfTokdCgoZnVuY3Rpb24oZSxuKXtyZXR1cm4gdChlLG4pLnBpcGUodmUoMSksKGZ1bmN0aW9uIG8odCl7cmV0dXJuIFZ0KChmdW5jdGlvbigpe3JldHVybiB0fSkpfSkoZSkpfSkpfWZ1bmN0aW9uIFBlKHQsZSl7dm9pZCAwPT09ZSYmKGU9aXQpO3ZhciBuPWRlKHQsZSk7cmV0dXJuIE9lKChmdW5jdGlvbigpe3JldHVybiBufSkpfWZ1bmN0aW9uIHdlKHQsZSl7cmV0dXJuIHZvaWQgMD09PWUmJihlPVIpLHQ9bnVsbCE9dD90OmtlLHooKGZ1bmN0aW9uKG4sbyl7dmFyIGksYT0hMDtuLnN1YnNjcmliZShuZXcgSChvLChmdW5jdGlvbihuKXt2YXIgcj1lKG4pOyFhJiZ0KGkscil8fChhPSExLGk9cixvLm5leHQobikpfSkpKX0pKX1mdW5jdGlvbiBrZSh0LGUpe3JldHVybiB0PT09ZX1mdW5jdGlvbiBTZSh0KXtyZXR1cm4gdm9pZCAwPT09dCYmKHQ9RGUpLHooKGZ1bmN0aW9uKGUsbil7dmFyIG89ITE7ZS5zdWJzY3JpYmUobmV3IEgobiwoZnVuY3Rpb24odCl7bz0hMCxuLm5leHQodCl9KSwoZnVuY3Rpb24oKXtyZXR1cm4gbz9uLmNvbXBsZXRlKCk6bi5lcnJvcih0KCkpfSkpKX0pKX1mdW5jdGlvbiBEZSgpe3JldHVybiBuZXcgQnR9ZnVuY3Rpb24gUmUodCxlKXtyZXR1cm4gZT9mdW5jdGlvbihuKXtyZXR1cm4gbi5waXBlKFJlKChmdW5jdGlvbihuLG8pe3JldHVybiB3dCh0KG4sbykpLnBpcGUoVnQoKGZ1bmN0aW9uKHQsaSl7cmV0dXJuIGUobix0LG8saSl9KSkpfSkpKX06eigoZnVuY3Rpb24oZSxuKXt2YXIgbz0wLGk9bnVsbCxhPSExO2Uuc3Vic2NyaWJlKG5ldyBIKG4sKGZ1bmN0aW9uKGUpe2l8fChpPW5ldyBIKG4sdm9pZCAwLChmdW5jdGlvbigpe2k9bnVsbCxhJiZuLmNvbXBsZXRlKCl9KSksd3QodChlLG8rKykpLnN1YnNjcmliZShpKSl9KSwoZnVuY3Rpb24oKXthPSEwLCFpJiZuLmNvbXBsZXRlKCl9KSkpfSkpfWZ1bmN0aW9uIEVlKHQsZSxuLG8pe3JldHVybiB6KChmdW5jdGlvbihpLGEpe3ZhciByO2UmJiJmdW5jdGlvbiIhPXR5cGVvZiBlPyhuPWUuZHVyYXRpb24scj1lLmVsZW1lbnQsbz1lLmNvbm5lY3Rvcik6cj1lO3ZhciBzPW5ldyBNYXAsbD1mdW5jdGlvbih0KXtzLmZvckVhY2godCksdChhKX0sYz1mdW5jdGlvbih0KXtyZXR1cm4gbCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUuZXJyb3IodCl9KSl9LGQ9bmV3IEFlKGEsKGZ1bmN0aW9uKGUpe3RyeXt2YXIgaT10KGUpLGw9cy5nZXQoaSk7aWYoIWwpe3Muc2V0KGksbD1vP28oKTpuZXcgQik7dmFyIHA9KGZ1bmN0aW9uIG0odCxlKXt2YXIgbj1uZXcgVCgoZnVuY3Rpb24odCl7ZC5hY3RpdmVHcm91cHMrKzt2YXIgbj1lLnN1YnNjcmliZSh0KTtyZXR1cm4gZnVuY3Rpb24oKXtuLnVuc3Vic2NyaWJlKCksMD09LS1kLmFjdGl2ZUdyb3VwcyYmZC50ZWFyZG93bkF0dGVtcHRlZCYmZC51bnN1YnNjcmliZSgpfX0pKTtyZXR1cm4gbi5rZXk9dCxufSkoaSxsKTtpZihhLm5leHQocCksbil7dmFyIGY9bmV3IEgobCwoZnVuY3Rpb24oKXtsLmNvbXBsZXRlKCksbnVsbD09Znx8Zi51bnN1YnNjcmliZSgpfSksdm9pZCAwLHZvaWQgMCwoZnVuY3Rpb24oKXtyZXR1cm4gcy5kZWxldGUoaSl9KSk7ZC5hZGQod3QobihwKSkuc3Vic2NyaWJlKGYpKX19bC5uZXh0KHI/cihlKTplKX1jYXRjaCh0KXtjKHQpfX0pLChmdW5jdGlvbigpe3JldHVybiBsKChmdW5jdGlvbih0KXtyZXR1cm4gdC5jb21wbGV0ZSgpfSkpfSksYywoZnVuY3Rpb24oKXtyZXR1cm4gcy5jbGVhcigpfSkpO2kuc3Vic2NyaWJlKGQpfSkpfXZhciBBZT0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gbigpe3ZhciBlPW51bGwhPT10JiZ0LmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8dGhpcztyZXR1cm4gZS5hY3RpdmVHcm91cHM9MCxlLnRlYXJkb3duQXR0ZW1wdGVkPSExLGV9cmV0dXJuIGUobix0KSxuLnByb3RvdHlwZS51bnN1YnNjcmliZT1mdW5jdGlvbigpe3RoaXMudGVhcmRvd25BdHRlbXB0ZWQ9ITAsMD09PXRoaXMuYWN0aXZlR3JvdXBzJiZ0LnByb3RvdHlwZS51bnN1YnNjcmliZS5jYWxsKHRoaXMpfSxufSkoSCk7ZnVuY3Rpb24gVGUodCl7cmV0dXJuIHQ8PTA/ZnVuY3Rpb24oKXtyZXR1cm4gZHR9OnooKGZ1bmN0aW9uKGUsbil7dmFyIG89W107ZS5zdWJzY3JpYmUobmV3IEgobiwoZnVuY3Rpb24oZSl7by5wdXNoKGUpLHQ8by5sZW5ndGgmJm8uc2hpZnQoKX0pLChmdW5jdGlvbigpe3ZhciB0LGU7dHJ5e2Zvcih2YXIgYT1pKG8pLHI9YS5uZXh0KCk7IXIuZG9uZTtyPWEubmV4dCgpKXtuLm5leHQoci52YWx1ZSl9fWNhdGNoKGUpe3Q9e2Vycm9yOmV9fWZpbmFsbHl7dHJ5e3ImJiFyLmRvbmUmJihlPWEucmV0dXJuKSYmZS5jYWxsKGEpfWZpbmFsbHl7aWYodCl0aHJvdyB0LmVycm9yfX1uLmNvbXBsZXRlKCl9KSx2b2lkIDAsKGZ1bmN0aW9uKCl7bz1udWxsfSkpKX0pKX1mdW5jdGlvbiBOZSgpe3JldHVybiB6KChmdW5jdGlvbih0LGUpe3ZhciBuLG89ITE7dC5zdWJzY3JpYmUobmV3IEgoZSwoZnVuY3Rpb24odCl7dmFyIGk9bjtuPXQsbyYmZS5uZXh0KFtpLHRdKSxvPSEwfSkpKX0pKX1mdW5jdGlvbiB6ZSh0KXtyZXR1cm4geigoZnVuY3Rpb24oZSxuKXt2YXIgbyxpLGE9ITEscj0hMSxzPSExLGw9ZnVuY3Rpb24oKXtyZXR1cm4gcyYmciYmKG4uY29tcGxldGUoKSwhMCl9LGM9ZnVuY3Rpb24oKXtzPSExLG89ZS5zdWJzY3JpYmUobmV3IEgobix2b2lkIDAsKGZ1bmN0aW9uKCl7cz0hMCwhbCgpJiYoaXx8KGk9bmV3IEIsdChpKS5zdWJzY3JpYmUobmV3IEgobiwoZnVuY3Rpb24oKXtvP2MoKTphPSEwfSksKGZ1bmN0aW9uKCl7cj0hMCxsKCl9KSkpKSxpKS5uZXh0KCl9KSkpLGEmJihvLnVuc3Vic2NyaWJlKCksbz1udWxsLGE9ITEsYygpKX07YygpfSkpfWZ1bmN0aW9uIEllKHQpe3ZvaWQgMD09PXQmJih0PXt9KTt2YXIgZT10LmNvbm5lY3RvcixuPXZvaWQgMD09PWU/ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IEJ9OmUsbz10LnJlc2V0T25FcnJvcixpPXZvaWQgMD09PW98fG8sYT10LnJlc2V0T25Db21wbGV0ZSxyPXZvaWQgMD09PWF8fGEscz10LnJlc2V0T25SZWZDb3VudFplcm8sbD12b2lkIDA9PT1zfHxzO3JldHVybiBmdW5jdGlvbih0KXt2YXIgZT1udWxsLG89bnVsbCxhPW51bGwscz0wLGM9ITEsZD0hMSxwPWZ1bmN0aW9uKCl7bnVsbD09b3x8by51bnN1YnNjcmliZSgpLG89bnVsbH0sbT1mdW5jdGlvbigpe3AoKSxlPWE9bnVsbCxjPWQ9ITF9LGY9ZnVuY3Rpb24oKXt2YXIgdD1lO20oKSxudWxsPT10fHx0LnVuc3Vic2NyaWJlKCl9O3JldHVybiB6KChmdW5jdGlvbih0LHUpe3MrKyxkfHxjfHxwKCk7dmFyIGc9YT1udWxsIT1hP2E6bigpO3UuYWRkKChmdW5jdGlvbigpezAhPT0tLXN8fGR8fGN8fChvPUhlKGYsbCkpfSkpLGcuc3Vic2NyaWJlKHUpLGV8fChlPW5ldyBQKHtuZXh0OmZ1bmN0aW9uKHQpe3JldHVybiBnLm5leHQodCl9LGVycm9yOmZ1bmN0aW9uKHQpe2Q9ITAscCgpLG89SGUobSxpLHQpLGcuZXJyb3IodCl9LGNvbXBsZXRlOmZ1bmN0aW9uKCl7Yz0hMCxwKCksbz1IZShtLHIpLGcuY29tcGxldGUoKX19KSxQdCh0KS5zdWJzY3JpYmUoZSkpfSkpKHQpfX1mdW5jdGlvbiBIZSh0LGUpe2Zvcih2YXIgbj1bXSxvPTI7bzxhcmd1bWVudHMubGVuZ3RoO28rKyluW28tMl09YXJndW1lbnRzW29dO3JldHVybiEwPT09ZT8odCgpLG51bGwpOiExPT09ZT9udWxsOmUuYXBwbHkodm9pZCAwLHIoW10sYShuKSkpLnBpcGUodmUoMSkpLnN1YnNjcmliZSgoZnVuY3Rpb24oKXtyZXR1cm4gdCgpfSkpfWZ1bmN0aW9uIEZlKHQsZSxuKXt2YXIgbyxpLGEscj0hMTtyZXR1cm4gdCYmIm9iamVjdCI9PXR5cGVvZiB0PyhhPW51bGwhPT0obz10LmJ1ZmZlclNpemUpJiZ2b2lkIDAhPT1vP286MS8wLGU9bnVsbCE9PShpPXQud2luZG93VGltZSkmJnZvaWQgMCE9PWk/aToxLzAscj0hIXQucmVmQ291bnQsbj10LnNjaGVkdWxlcik6YT1udWxsIT10P3Q6MS8wLEllKHtjb25uZWN0b3I6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IFcoYSxlLG4pfSxyZXNldE9uRXJyb3I6ITAscmVzZXRPbkNvbXBsZXRlOiExLHJlc2V0T25SZWZDb3VudFplcm86cn0pfWZ1bmN0aW9uIExlKHQpe3JldHVybiB1ZSgoZnVuY3Rpb24oZSxuKXtyZXR1cm4gdDw9bn0pKX1mdW5jdGlvbiBCZSgpe2Zvcih2YXIgdD1bXSxlPTA7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyl0W2VdPWFyZ3VtZW50c1tlXTt2YXIgbj1UdCh0KTtyZXR1cm4geigoZnVuY3Rpb24oZSxvKXsobj9uZSh0LGUsbik6bmUodCxlKSkuc3Vic2NyaWJlKG8pfSkpfWZ1bmN0aW9uIFZlKHQsZSl7cmV0dXJuIHooKGZ1bmN0aW9uKG4sbyl7dmFyIGk9bnVsbCxhPTAscj0hMSxzPWZ1bmN0aW9uKCl7cmV0dXJuIHImJiFpJiZvLmNvbXBsZXRlKCl9O24uc3Vic2NyaWJlKG5ldyBIKG8sKGZ1bmN0aW9uKG4pe251bGw9PWl8fGkudW5zdWJzY3JpYmUoKTt2YXIgcj0wLGw9YSsrO3d0KHQobixsKSkuc3Vic2NyaWJlKGk9bmV3IEgobywoZnVuY3Rpb24odCl7cmV0dXJuIG8ubmV4dChlP2Uobix0LGwscisrKTp0KX0pLChmdW5jdGlvbigpe2k9bnVsbCxzKCl9KSkpfSksKGZ1bmN0aW9uKCl7cj0hMCxzKCl9KSkpfSkpfWZ1bmN0aW9uIGplKHQpe3JldHVybiB6KChmdW5jdGlvbihlLG4pe3d0KHQpLnN1YnNjcmliZShuZXcgSChuLChmdW5jdGlvbigpe3JldHVybiBuLmNvbXBsZXRlKCl9KSxNKSksIW4uY2xvc2VkJiZlLnN1YnNjcmliZShuKX0pKX1mdW5jdGlvbiBVZSh0LGUpe3JldHVybiB2b2lkIDA9PT1lJiYoZT0hMSkseigoZnVuY3Rpb24obixvKXt2YXIgaT0wO24uc3Vic2NyaWJlKG5ldyBIKG8sKGZ1bmN0aW9uKG4pe3ZhciBhPXQobixpKyspOyhhfHxlKSYmby5uZXh0KG4pLCFhJiZvLmNvbXBsZXRlKCl9KSkpfSkpfWZ1bmN0aW9uIFdlKHQsZSxuKXt2YXIgbz1kKHQpfHxlfHxuP3tuZXh0OnQsZXJyb3I6ZSxjb21wbGV0ZTpufTp0O3JldHVybiBvP3ooKGZ1bmN0aW9uKHQsZSl7dmFyIG47bnVsbD09PShuPW8uc3Vic2NyaWJlKXx8dm9pZCAwPT09bnx8bi5jYWxsKG8pO3ZhciBpPSEwO3Quc3Vic2NyaWJlKG5ldyBIKGUsKGZ1bmN0aW9uKHQpe3ZhciBuO251bGw9PT0obj1vLm5leHQpfHx2b2lkIDA9PT1ufHxuLmNhbGwobyx0KSxlLm5leHQodCl9KSwoZnVuY3Rpb24oKXt2YXIgdDtpPSExLG51bGw9PT0odD1vLmNvbXBsZXRlKXx8dm9pZCAwPT09dHx8dC5jYWxsKG8pLGUuY29tcGxldGUoKX0pLChmdW5jdGlvbih0KXt2YXIgbjtpPSExLG51bGw9PT0obj1vLmVycm9yKXx8dm9pZCAwPT09bnx8bi5jYWxsKG8sdCksZS5lcnJvcih0KX0pLChmdW5jdGlvbigpe3ZhciB0LGU7aSYmKG51bGw9PT0odD1vLnVuc3Vic2NyaWJlKXx8dm9pZCAwPT09dHx8dC5jYWxsKG8pKSxudWxsPT09KGU9by5maW5hbGl6ZSl8fHZvaWQgMD09PWV8fGUuY2FsbChvKX0pKSl9KSk6Un12YXIgR2U9e2xlYWRpbmc6ITAsdHJhaWxpbmc6ITF9O2Z1bmN0aW9uIFllKHQsZSxuKXt2b2lkIDA9PT1lJiYoZT1pdCksdm9pZCAwPT09biYmKG49R2UpO3ZhciBvPWRlKHQsZSk7cmV0dXJuKGZ1bmN0aW9uIGkodCxlKXt2YXIgbj12b2lkIDA9PT1lP0dlOmUsbz1uLmxlYWRpbmcsaT1uLnRyYWlsaW5nO3JldHVybiB6KChmdW5jdGlvbihlLG4pe3ZhciBhPSExLHI9bnVsbCxzPW51bGwsbD0hMSxjPWZ1bmN0aW9uKCl7bnVsbD09c3x8cy51bnN1YnNjcmliZSgpLHM9bnVsbCxpJiYobSgpLGwmJm4uY29tcGxldGUoKSl9LGQ9ZnVuY3Rpb24oKXtzPW51bGwsbCYmbi5jb21wbGV0ZSgpfSxwPWZ1bmN0aW9uKGUpe3JldHVybiBzPXd0KHQoZSkpLnN1YnNjcmliZShuZXcgSChuLGMsZCkpfSxtPWZ1bmN0aW9uKCl7aWYoYSl7YT0hMTt2YXIgdD1yO3I9bnVsbCxuLm5leHQodCksIWwmJnAodCl9fTtlLnN1YnNjcmliZShuZXcgSChuLChmdW5jdGlvbih0KXthPSEwLHI9dCwoIXN8fHMuY2xvc2VkKSYmKG8/bSgpOnAodCkpfSksKGZ1bmN0aW9uKCl7bD0hMCwoIShpJiZhJiZzKXx8cy5jbG9zZWQpJiZuLmNvbXBsZXRlKCl9KSkpfSkpfSkoKGZ1bmN0aW9uKCl7cmV0dXJuIG99KSxuKX1mdW5jdGlvbiBxZSgpe2Zvcih2YXIgdD1bXSxlPTA7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyl0W2VdPWFyZ3VtZW50c1tlXTt2YXIgbj1BdCh0KTtyZXR1cm4geigoZnVuY3Rpb24oZSxvKXtmb3IodmFyIGk9dC5sZW5ndGgscz1uZXcgQXJyYXkoaSksbD10Lm1hcCgoZnVuY3Rpb24oKXtyZXR1cm4hMX0pKSxjPSExLGQ9ZnVuY3Rpb24oZSl7d3QodFtlXSkuc3Vic2NyaWJlKG5ldyBIKG8sKGZ1bmN0aW9uKHQpe3NbZV09dCxjfHxsW2VdfHwobFtlXT0hMCwoYz1sLmV2ZXJ5KFIpKSYmKGw9bnVsbCkpfSksTSkpfSxwPTA7cDxpO3ArKylkKHApO2Uuc3Vic2NyaWJlKG5ldyBIKG8sKGZ1bmN0aW9uKHQpe2lmKGMpe3ZhciBlPXIoW3RdLGEocykpO28ubmV4dChuP24uYXBwbHkodm9pZCAwLHIoW10sYShlKSkpOmUpfX0pKSl9KSl9Ci8qKgogICAgICogQGxpY2Vuc2UgQW5ndWxhciB2MTIuMi4xCiAgICAgKiAoYykgMjAxMC0yMDIxIEdvb2dsZSBMTEMuIGh0dHBzOi8vYW5ndWxhci5pby8KICAgICAqIExpY2Vuc2U6IE1JVAogICAgICovCi8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2Z1bmN0aW9uIFplKHQpe2ZvcihsZXQgZSBpbiB0KWlmKHRbZV09PT1aZSlyZXR1cm4gZTt0aHJvdyBFcnJvcigiQ291bGQgbm90IGZpbmQgcmVuYW1lZCBwcm9wZXJ0eSBvbiB0YXJnZXQgb2JqZWN0LiIpfWZ1bmN0aW9uIFhlKHQsZSl7Zm9yKGNvbnN0IG4gaW4gZSllLmhhc093blByb3BlcnR5KG4pJiYhdC5oYXNPd25Qcm9wZXJ0eShuKSYmKHRbbl09ZVtuXSl9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2Z1bmN0aW9uIEtlKHQpe2lmKCJzdHJpbmciPT10eXBlb2YgdClyZXR1cm4gdDtpZihBcnJheS5pc0FycmF5KHQpKXJldHVybiJbIit0Lm1hcChLZSkuam9pbigiLCAiKSsiXSI7aWYobnVsbD09dClyZXR1cm4iIit0O2lmKHQub3ZlcnJpZGRlbk5hbWUpcmV0dXJuYCR7dC5vdmVycmlkZGVuTmFtZX1gO2lmKHQubmFtZSlyZXR1cm5gJHt0Lm5hbWV9YDtjb25zdCBlPXQudG9TdHJpbmcoKTtpZihudWxsPT1lKXJldHVybiIiK2U7Y29uc3Qgbj1lLmluZGV4T2YoIlxuIik7cmV0dXJuLTE9PT1uP2U6ZS5zdWJzdHJpbmcoMCxuKX1mdW5jdGlvbiBKZSh0LGUpe3JldHVybiBudWxsPT10fHwiIj09PXQ/bnVsbD09PWU/IiI6ZTpudWxsPT1lfHwiIj09PWU/dDp0KyIgIitlfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jb25zdCBRZT1aZSh7X19mb3J3YXJkX3JlZl9fOlplfSk7ZnVuY3Rpb24gJGUodCl7cmV0dXJuIHQuX19mb3J3YXJkX3JlZl9fPSRlLHQudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gS2UodGhpcygpKX0sdH1mdW5jdGlvbiB0bih0KXtyZXR1cm4gZW4odCk/dCgpOnR9ZnVuY3Rpb24gZW4odCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHQmJnQuaGFzT3duUHJvcGVydHkoUWUpJiZ0Ll9fZm9yd2FyZF9yZWZfXz09PSRlfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jbGFzcyBubiBleHRlbmRzIEVycm9ye2NvbnN0cnVjdG9yKHQsZSl7c3VwZXIoYW4odCxlKSksdGhpcy5jb2RlPXR9fWNvbnN0IG9uPW5ldyBTZXQoWyIxMDAiLCIyMDAiLCIyMDEiLCIzMDAiLCIzMDEiLCIzMDIiXSk7ZnVuY3Rpb24gYW4odCxlKXtsZXQgbj1gJHt0P2BORzAke3R9OiBgOiIifSR7ZX1gO3JldHVybiBuZ0Rldk1vZGUmJm9uLmhhcyh0KSYmKG49YCR7bn0uIEZpbmQgbW9yZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vZXJyb3JzL05HMCR7dH1gKSxufQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9mdW5jdGlvbiBybih0KXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHQ/dDpudWxsPT10PyIiOlN0cmluZyh0KX1mdW5jdGlvbiBzbih0KXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdD90Lm5hbWV8fHQudG9TdHJpbmcoKToib2JqZWN0Ij09dHlwZW9mIHQmJm51bGwhPXQmJiJmdW5jdGlvbiI9PXR5cGVvZiB0LnR5cGU/dC50eXBlLm5hbWV8fHQudHlwZS50b1N0cmluZygpOnJuKHQpfWZ1bmN0aW9uIGxuKHQsZSl7Y29uc3Qgbj1lP2AuIERlcGVuZGVuY3kgcGF0aDogJHtlLmpvaW4oIiA+ICIpfSA+ICR7dH1gOiIiO3Rocm93IG5ldyBubigiMjAwIixgQ2lyY3VsYXIgZGVwZW5kZW5jeSBpbiBESSBkZXRlY3RlZCBmb3IgJHt0fSR7bn1gKX1mdW5jdGlvbiBjbigpe3Rocm93IG5ldyBFcnJvcigiQ2Fubm90IG1peCBtdWx0aSBwcm92aWRlcnMgYW5kIHJlZ3VsYXIgcHJvdmlkZXJzIil9ZnVuY3Rpb24gZG4odCxlKXtjb25zdCBuPWU/YCBpbiAke2V9YDoiIjt0aHJvdyBuZXcgbm4oIjIwMSIsYE5vIHByb3ZpZGVyIGZvciAke3NuKHQpfSBmb3VuZCR7bn1gKX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovZnVuY3Rpb24gcG4odCxlKXsibnVtYmVyIiE9dHlwZW9mIHQmJk9uKGUsdHlwZW9mIHQsIm51bWJlciIsIj09PSIpfWZ1bmN0aW9uIG1uKHQsZSxuKXtwbih0LCJFeHBlY3RlZCBhIG51bWJlciIpLENuKHQsbiwiRXhwZWN0ZWQgbnVtYmVyIHRvIGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byIpLHZuKHQsZSwiRXhwZWN0ZWQgbnVtYmVyIHRvIGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byIpfWZ1bmN0aW9uIGZuKHQsZSl7InN0cmluZyIhPXR5cGVvZiB0JiZPbihlLG51bGw9PT10PyJudWxsIjp0eXBlb2YgdCwic3RyaW5nIiwiPT09Iil9ZnVuY3Rpb24gdW4odCxlKXsiZnVuY3Rpb24iIT10eXBlb2YgdCYmT24oZSxudWxsPT09dD8ibnVsbCI6dHlwZW9mIHQsImZ1bmN0aW9uIiwiPT09Iil9ZnVuY3Rpb24gZ24odCxlLG4pe3QhPWUmJk9uKG4sdCxlLCI9PSIpfWZ1bmN0aW9uIGhuKHQsZSxuKXt0PT1lJiZPbihuLHQsZSwiIT0iKX1mdW5jdGlvbiBibih0LGUsbil7dCE9PWUmJk9uKG4sdCxlLCI9PT0iKX1mdW5jdGlvbiB5bih0LGUsbil7dD09PWUmJk9uKG4sdCxlLCIhPT0iKX1mdW5jdGlvbiBfbih0LGUsbil7dDxlfHxPbihuLHQsZSwiPCIpfWZ1bmN0aW9uIENuKHQsZSxuKXt0PD1lfHxPbihuLHQsZSwiPD0iKX1mdW5jdGlvbiBNbih0LGUsbil7dD5lfHxPbihuLHQsZSwiPiIpfWZ1bmN0aW9uIHZuKHQsZSxuKXt0Pj1lfHxPbihuLHQsZSwiPj0iKX1mdW5jdGlvbiB4bih0LGUpe251bGw9PXQmJk9uKGUsdCxudWxsLCIhPSIpfWZ1bmN0aW9uIE9uKHQsZSxuLG8pe3Rocm93IG5ldyBFcnJvcihgQVNTRVJUSU9OIEVSUk9SOiAke3R9YCsobnVsbD09bz8iIjpgIFtFeHBlY3RlZD0+ICR7bn0gJHtvfSAke2V9IDw9QWN0dWFsXWApKX1mdW5jdGlvbiBQbih0KXsidW5kZWZpbmVkIiE9dHlwZW9mIE5vZGUmJnQgaW5zdGFuY2VvZiBOb2RlfHwib2JqZWN0Ij09dHlwZW9mIHQmJm51bGwhPXQmJiJXZWJXb3JrZXJSZW5kZXJOb2RlIj09PXQuY29uc3RydWN0b3IubmFtZXx8T24oYFRoZSBwcm92aWRlZCB2YWx1ZSBtdXN0IGJlIGFuIGluc3RhbmNlIG9mIGEgRE9NIE5vZGUgYnV0IGdvdCAke0tlKHQpfWApfWZ1bmN0aW9uIHduKHQsZSl7eG4odCwiQXJyYXkgbXVzdCBiZSBkZWZpbmVkLiIpO2NvbnN0IG49dC5sZW5ndGg7KGU8MHx8ZT49bikmJk9uKGBJbmRleCBleHBlY3RlZCB0byBiZSBsZXNzIHRoYW4gJHtufSBidXQgZ290ICR7ZX1gKX1mdW5jdGlvbiBrbih0LC4uLmUpe2lmKC0xIT09ZS5pbmRleE9mKHQpKXJldHVybiEwO09uKGBFeHBlY3RlZCB2YWx1ZSB0byBiZSBvbmUgb2YgJHtKU09OLnN0cmluZ2lmeShlKX0gYnV0IHdhcyAke0pTT04uc3RyaW5naWZ5KHQpfS5gKX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovZnVuY3Rpb24gU24odCl7cmV0dXJue3Rva2VuOnQudG9rZW4scHJvdmlkZWRJbjp0LnByb3ZpZGVkSW58fG51bGwsZmFjdG9yeTp0LmZhY3RvcnksdmFsdWU6dm9pZCAwfX1mdW5jdGlvbiBEbih0KXtyZXR1cm57cHJvdmlkZXJzOnQucHJvdmlkZXJzfHxbXSxpbXBvcnRzOnQuaW1wb3J0c3x8W119fWZ1bmN0aW9uIFJuKHQpe3JldHVybiBFbih0LFRuKXx8RW4odCx6bil9ZnVuY3Rpb24gRW4odCxlKXtyZXR1cm4gdC5oYXNPd25Qcm9wZXJ0eShlKT90W2VdOm51bGx9ZnVuY3Rpb24gQW4odCl7cmV0dXJuIHQmJih0Lmhhc093blByb3BlcnR5KE5uKXx8dC5oYXNPd25Qcm9wZXJ0eShJbikpP3RbTm5dOm51bGx9Y29uc3QgVG49WmUoeyLJtXByb3YiOlplfSksTm49WmUoeyLJtWluaiI6WmV9KSx6bj1aZSh7bmdJbmplY3RhYmxlRGVmOlplfSksSW49WmUoe25nSW5qZWN0b3JEZWY6WmV9KTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCnZhciBIbjsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmxldCBGbjtmdW5jdGlvbiBMbih0KXtjb25zdCBlPUZuO3JldHVybiBGbj10LGV9ZnVuY3Rpb24gQm4odCxlLG4pe2NvbnN0IG89Um4odCk7cmV0dXJuIG8mJiJyb290Ij09by5wcm92aWRlZEluP3ZvaWQgMD09PW8udmFsdWU/by52YWx1ZT1vLmZhY3RvcnkoKTpvLnZhbHVlOm4mSG4uT3B0aW9uYWw/bnVsbDp2b2lkIDAhPT1lP2U6dm9pZCBkbihLZSh0KSwiSW5qZWN0b3IiKX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmZ1bmN0aW9uIFZuKHQpe3JldHVybnt0b1N0cmluZzp0fS50b1N0cmluZygpfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi92YXIgam4sVW4sV247IShmdW5jdGlvbih0KXt0W3QuRGVmYXVsdD0wXT0iRGVmYXVsdCIsdFt0Lkhvc3Q9MV09Ikhvc3QiLHRbdC5TZWxmPTJdPSJTZWxmIix0W3QuU2tpcFNlbGY9NF09IlNraXBTZWxmIix0W3QuT3B0aW9uYWw9OF09Ik9wdGlvbmFsIn0pKEhufHwoSG49e30pKSwoZnVuY3Rpb24odCl7dFt0Lk9uUHVzaD0wXT0iT25QdXNoIix0W3QuRGVmYXVsdD0xXT0iRGVmYXVsdCJ9KShqbnx8KGpuPXt9KSksKGZ1bmN0aW9uKHQpe3RbdC5DaGVja09uY2U9MF09IkNoZWNrT25jZSIsdFt0LkNoZWNrZWQ9MV09IkNoZWNrZWQiLHRbdC5DaGVja0Fsd2F5cz0yXT0iQ2hlY2tBbHdheXMiLHRbdC5EZXRhY2hlZD0zXT0iRGV0YWNoZWQiLHRbdC5FcnJvcmVkPTRdPSJFcnJvcmVkIix0W3QuRGVzdHJveWVkPTVdPSJEZXN0cm95ZWQifSkoVW58fChVbj17fSkpLChmdW5jdGlvbih0KXt0W3QuRW11bGF0ZWQ9MF09IkVtdWxhdGVkIix0W3QuTm9uZT0yXT0iTm9uZSIsdFt0LlNoYWRvd0RvbT0zXT0iU2hhZG93RG9tIn0pKFdufHwoV249e30pKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNvbnN0IEduPSJ1bmRlZmluZWQiIT10eXBlb2YgZ2xvYmFsVGhpcyYmZ2xvYmFsVGhpcyxZbj0idW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdyYmd2luZG93LHFuPSJ1bmRlZmluZWQiIT10eXBlb2Ygc2VsZiYmInVuZGVmaW5lZCIhPXR5cGVvZiBXb3JrZXJHbG9iYWxTY29wZSYmc2VsZiBpbnN0YW5jZW9mIFdvcmtlckdsb2JhbFNjb3BlJiZzZWxmLFpuPSJ1bmRlZmluZWQiIT10eXBlb2YgZ2xvYmFsJiZnbG9iYWwsWG49R258fFpufHxZbnx8cW47ZnVuY3Rpb24gS24oKXtyZXR1cm4hKCJ1bmRlZmluZWQiIT10eXBlb2YgbmdEZXZNb2RlJiYhbmdEZXZNb2RlKSYmKCJvYmplY3QiIT10eXBlb2YgbmdEZXZNb2RlJiYoCi8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpmdW5jdGlvbiB0KCl7Y29uc3QgdD0idW5kZWZpbmVkIiE9dHlwZW9mIGxvY2F0aW9uP2xvY2F0aW9uLnRvU3RyaW5nKCk6IiIsZT17bmFtZWRDb25zdHJ1Y3RvcnM6LTEhPXQuaW5kZXhPZigibmdEZXZNb2RlPW5hbWVkQ29uc3RydWN0b3JzIiksZmlyc3RDcmVhdGVQYXNzOjAsdE5vZGU6MCx0VmlldzowLHJlbmRlcmVyQ3JlYXRlVGV4dE5vZGU6MCxyZW5kZXJlclNldFRleHQ6MCxyZW5kZXJlckNyZWF0ZUVsZW1lbnQ6MCxyZW5kZXJlckFkZEV2ZW50TGlzdGVuZXI6MCxyZW5kZXJlclNldEF0dHJpYnV0ZTowLHJlbmRlcmVyUmVtb3ZlQXR0cmlidXRlOjAscmVuZGVyZXJTZXRQcm9wZXJ0eTowLHJlbmRlcmVyU2V0Q2xhc3NOYW1lOjAscmVuZGVyZXJBZGRDbGFzczowLHJlbmRlcmVyUmVtb3ZlQ2xhc3M6MCxyZW5kZXJlclNldFN0eWxlOjAscmVuZGVyZXJSZW1vdmVTdHlsZTowLHJlbmRlcmVyRGVzdHJveTowLHJlbmRlcmVyRGVzdHJveU5vZGU6MCxyZW5kZXJlck1vdmVOb2RlOjAscmVuZGVyZXJSZW1vdmVOb2RlOjAscmVuZGVyZXJBcHBlbmRDaGlsZDowLHJlbmRlcmVySW5zZXJ0QmVmb3JlOjAscmVuZGVyZXJDcmVhdGVDb21tZW50OjB9LG49LTE9PT10LmluZGV4T2YoIm5nRGV2TW9kZT1mYWxzZSIpO3JldHVybiBYbi5uZ0Rldk1vZGU9biYmZSxlfSkoKSwidW5kZWZpbmVkIiE9dHlwZW9mIG5nRGV2TW9kZSYmISFuZ0Rldk1vZGUpfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jb25zdCBKbj17fSxRbj1bXTsoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJktuKCkmJihPYmplY3QuZnJlZXplKEpuKSxPYmplY3QuZnJlZXplKFFuKSkKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovO2NvbnN0ICRuPVplKHsiybVjbXAiOlplfSksdG89WmUoeyLJtWRpciI6WmV9KSxlbz1aZSh7Ism1cGlwZSI6WmV9KSxubz1aZSh7Ism1bW9kIjpaZX0pLG9vPVplKHsiybVsb2MiOlplfSksaW89WmUoeyLJtWZhYyI6WmV9KSxhbz1aZSh7X19OR19FTEVNRU5UX0lEX186WmV9KTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmxldCBybz0wO2Z1bmN0aW9uIHNvKHQpe3JldHVybiBWbigoKCk9PnsoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJktuKCk7Y29uc3QgZT17fSxuPXt0eXBlOnQudHlwZSxwcm92aWRlcnNSZXNvbHZlcjpudWxsLGRlY2xzOnQuZGVjbHMsdmFyczp0LnZhcnMsZmFjdG9yeTpudWxsLHRlbXBsYXRlOnQudGVtcGxhdGV8fG51bGwsY29uc3RzOnQuY29uc3RzfHxudWxsLG5nQ29udGVudFNlbGVjdG9yczp0Lm5nQ29udGVudFNlbGVjdG9ycyxob3N0QmluZGluZ3M6dC5ob3N0QmluZGluZ3N8fG51bGwsaG9zdFZhcnM6dC5ob3N0VmFyc3x8MCxob3N0QXR0cnM6dC5ob3N0QXR0cnN8fG51bGwsY29udGVudFF1ZXJpZXM6dC5jb250ZW50UXVlcmllc3x8bnVsbCxkZWNsYXJlZElucHV0czplLGlucHV0czpudWxsLG91dHB1dHM6bnVsbCxleHBvcnRBczp0LmV4cG9ydEFzfHxudWxsLG9uUHVzaDp0LmNoYW5nZURldGVjdGlvbj09PWpuLk9uUHVzaCxkaXJlY3RpdmVEZWZzOm51bGwscGlwZURlZnM6bnVsbCxzZWxlY3RvcnM6dC5zZWxlY3RvcnN8fFFuLHZpZXdRdWVyeTp0LnZpZXdRdWVyeXx8bnVsbCxmZWF0dXJlczp0LmZlYXR1cmVzfHxudWxsLGRhdGE6dC5kYXRhfHx7fSxlbmNhcHN1bGF0aW9uOnQuZW5jYXBzdWxhdGlvbnx8V24uRW11bGF0ZWQsaWQ6ImMiLHN0eWxlczp0LnN0eWxlc3x8UW4sXzpudWxsLHNldElucHV0Om51bGwsc2NoZW1hczp0LnNjaGVtYXN8fG51bGwsdFZpZXc6bnVsbH0sbz10LmRpcmVjdGl2ZXMsaT10LmZlYXR1cmVzLGE9dC5waXBlcztyZXR1cm4gbi5pZCs9cm8rKyxuLmlucHV0cz1nbyh0LmlucHV0cyxlKSxuLm91dHB1dHM9Z28odC5vdXRwdXRzKSxpJiZpLmZvckVhY2goKHQ9PnQobikpKSxuLmRpcmVjdGl2ZURlZnM9bz8oKT0+KCJmdW5jdGlvbiI9PXR5cGVvZiBvP28oKTpvKS5tYXAoY28pOm51bGwsbi5waXBlRGVmcz1hPygpPT4oImZ1bmN0aW9uIj09dHlwZW9mIGE/YSgpOmEpLm1hcChwbyk6bnVsbCxufSkpfWZ1bmN0aW9uIGxvKHQsZSxuKXtjb25zdCBvPXQuybVjbXA7by5kaXJlY3RpdmVEZWZzPSgpPT5lLm1hcChjbyksby5waXBlRGVmcz0oKT0+bi5tYXAocG8pfWZ1bmN0aW9uIGNvKHQpe2NvbnN0IGU9eW8odCl8fF9vKHQpO2lmKG5nRGV2TW9kZSYmIWUpdGhyb3cgbmV3IEVycm9yKGAnJHt0Lm5hbWV9JyBpcyBuZWl0aGVyICdDb21wb25lbnRUeXBlJyBvciAnRGlyZWN0aXZlVHlwZScuYCk7cmV0dXJuIGV9ZnVuY3Rpb24gcG8odCl7Y29uc3QgZT1Dbyh0KTtpZihuZ0Rldk1vZGUmJiFlKXRocm93IG5ldyBFcnJvcihgJyR7dC5uYW1lfScgaXMgbm90IGEgJ1BpcGVUeXBlJy5gKTtyZXR1cm4gZX1jb25zdCBtbz17fTtmdW5jdGlvbiBmbyh0KXtyZXR1cm4gVm4oKCgpPT57Y29uc3QgZT17dHlwZTp0LnR5cGUsYm9vdHN0cmFwOnQuYm9vdHN0cmFwfHxRbixkZWNsYXJhdGlvbnM6dC5kZWNsYXJhdGlvbnN8fFFuLGltcG9ydHM6dC5pbXBvcnRzfHxRbixleHBvcnRzOnQuZXhwb3J0c3x8UW4sdHJhbnNpdGl2ZUNvbXBpbGVTY29wZXM6bnVsbCxzY2hlbWFzOnQuc2NoZW1hc3x8bnVsbCxpZDp0LmlkfHxudWxsfTtyZXR1cm4gbnVsbCE9dC5pZCYmKG1vW3QuaWRdPXQudHlwZSksZX0pKX1mdW5jdGlvbiB1byh0LGUpe3JldHVybiBWbigoKCk9Pntjb25zdCBuPU1vKHQsITApO24uZGVjbGFyYXRpb25zPWUuZGVjbGFyYXRpb25zfHxRbixuLmltcG9ydHM9ZS5pbXBvcnRzfHxRbixuLmV4cG9ydHM9ZS5leHBvcnRzfHxRbn0pKX1mdW5jdGlvbiBnbyh0LGUpe2lmKG51bGw9PXQpcmV0dXJuIEpuO2NvbnN0IG49e307Zm9yKGNvbnN0IG8gaW4gdClpZih0Lmhhc093blByb3BlcnR5KG8pKXtsZXQgaT10W29dLGE9aTtBcnJheS5pc0FycmF5KGkpJiYoYT1pWzFdLGk9aVswXSksbltpXT1vLGUmJihlW2ldPWEpfXJldHVybiBufWNvbnN0IGhvPXNvO2Z1bmN0aW9uIGJvKHQpe3JldHVybnt0eXBlOnQudHlwZSxuYW1lOnQubmFtZSxmYWN0b3J5Om51bGwscHVyZTohMSE9PXQucHVyZSxvbkRlc3Ryb3k6dC50eXBlLnByb3RvdHlwZS5uZ09uRGVzdHJveXx8bnVsbH19ZnVuY3Rpb24geW8odCl7cmV0dXJuIHRbJG5dfHxudWxsfWZ1bmN0aW9uIF9vKHQpe3JldHVybiB0W3RvXXx8bnVsbH1mdW5jdGlvbiBDbyh0KXtyZXR1cm4gdFtlb118fG51bGx9ZnVuY3Rpb24gTW8odCxlKXtjb25zdCBuPXRbbm9dfHxudWxsO2lmKCFuJiYhMD09PWUpdGhyb3cgbmV3IEVycm9yKGBUeXBlICR7S2UodCl9IGRvZXMgbm90IGhhdmUgJ8m1bW9kJyBwcm9wZXJ0eS5gKTtyZXR1cm4gbn0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNvbnN0IHZvPTIwLHhvPVsiUm9vdCIsIkNvbXBvbmVudCIsIkVtYmVkZGVkIl0sT289MTA7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpmdW5jdGlvbiBQbyh0KXtyZXR1cm4gQXJyYXkuaXNBcnJheSh0KSYmIm9iamVjdCI9PXR5cGVvZiB0WzFdfWZ1bmN0aW9uIHdvKHQpe3JldHVybiBBcnJheS5pc0FycmF5KHQpJiYhMD09PXRbMV19ZnVuY3Rpb24ga28odCl7cmV0dXJuIDAhPSg4JnQuZmxhZ3MpfWZ1bmN0aW9uIFNvKHQpe3JldHVybiAyPT0oMiZ0LmZsYWdzKX1mdW5jdGlvbiBEbyh0KXtyZXR1cm4gMT09KDEmdC5mbGFncyl9ZnVuY3Rpb24gUm8odCl7cmV0dXJuIG51bGwhPT10LnRlbXBsYXRlfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KZnVuY3Rpb24gRW8odCxlKXtBbyh0LGVbMV0pfWZ1bmN0aW9uIEFvKHQsZSl7VG8odCksdC5oYXNPd25Qcm9wZXJ0eSgidFZpZXdfIikmJmduKHQudFZpZXdfLGUsIlRoaXMgVE5vZGUgZG9lcyBub3QgYmVsb25nIHRvIHRoaXMgVFZpZXcuIil9ZnVuY3Rpb24gVG8odCl7eG4odCwiVE5vZGUgbXVzdCBiZSBkZWZpbmVkIiksdCYmIm9iamVjdCI9PXR5cGVvZiB0JiZ0Lmhhc093blByb3BlcnR5KCJkaXJlY3RpdmVTdHlsaW5nTGFzdCIpfHxPbigiTm90IG9mIHR5cGUgVE5vZGUsIGdvdDogIit0KX1mdW5jdGlvbiBObyh0KXt4bih0LCJFeHBlY3RlZCBUSWN1IHRvIGJlIGRlZmluZWQiKSwibnVtYmVyIiE9dHlwZW9mIHQuY3VycmVudENhc2VMVmlld0luZGV4JiZPbigiT2JqZWN0IGlzIG5vdCBvZiBUSWN1IHR5cGUuIil9ZnVuY3Rpb24gem8odCl7eG4odCwiY3VycmVudFROb2RlIHNob3VsZCBleGlzdCEiKSx4bih0LnBhcmVudCwiY3VycmVudFROb2RlIHNob3VsZCBoYXZlIGEgcGFyZW50Iil9ZnVuY3Rpb24gSW8odCl7eG4odCwiTENvbnRhaW5lciBtdXN0IGJlIGRlZmluZWQiKSxnbih3byh0KSwhMCwiRXhwZWN0aW5nIExDb250YWluZXIiKX1mdW5jdGlvbiBIbyh0KXt0JiZnbihQbyh0KSwhMCwiRXhwZWN0aW5nIExWaWV3IG9yIHVuZGVmaW5lZCBvciBudWxsIil9ZnVuY3Rpb24gRm8odCl7eG4odCwiTFZpZXcgbXVzdCBiZSBkZWZpbmVkIiksZ24oUG8odCksITAsIkV4cGVjdGluZyBMVmlldyIpfWZ1bmN0aW9uIExvKHQsZSl7Z24odC5maXJzdENyZWF0ZVBhc3MsITAsZXx8IlNob3VsZCBvbmx5IGJlIGNhbGxlZCBpbiBmaXJzdCBjcmVhdGUgcGFzcy4iKX1mdW5jdGlvbiBCbyh0LGUpe2duKHQuZmlyc3RVcGRhdGVQYXNzLCEwLGV8fCJTaG91bGQgb25seSBiZSBjYWxsZWQgaW4gZmlyc3QgdXBkYXRlIHBhc3MuIil9ZnVuY3Rpb24gVm8odCxlKXtqbyh0WzFdLmV4cGFuZG9TdGFydEluZGV4LHQubGVuZ3RoLGUpfWZ1bmN0aW9uIGpvKHQsZSxuKXt0PD1uJiZuPGV8fE9uKGBJbmRleCBvdXQgb2YgcmFuZ2UgKGV4cGVjdGluZyAke3R9IDw9ICR7bn0gPCAke2V9KWApfWZ1bmN0aW9uIFVvKHQsZSl7eG4odCxlfHwiQ29tcG9uZW50IHZpZXdzIHNob3VsZCBhbHdheXMgaGF2ZSBhIHBhcmVudCB2aWV3IChjb21wb25lbnQncyBob3N0IHZpZXcpIil9ZnVuY3Rpb24gV28odCxlKXtWbyh0LGUpLFZvKHQsZSs4KSxwbih0W2UrMF0sImluamVjdG9ySW5kZXggc2hvdWxkIHBvaW50IHRvIGEgYmxvb20gZmlsdGVyIikscG4odFtlKzFdLCJpbmplY3RvckluZGV4IHNob3VsZCBwb2ludCB0byBhIGJsb29tIGZpbHRlciIpLHBuKHRbZSsyXSwiaW5qZWN0b3JJbmRleCBzaG91bGQgcG9pbnQgdG8gYSBibG9vbSBmaWx0ZXIiKSxwbih0W2UrM10sImluamVjdG9ySW5kZXggc2hvdWxkIHBvaW50IHRvIGEgYmxvb20gZmlsdGVyIikscG4odFtlKzRdLCJpbmplY3RvckluZGV4IHNob3VsZCBwb2ludCB0byBhIGJsb29tIGZpbHRlciIpLHBuKHRbZSs1XSwiaW5qZWN0b3JJbmRleCBzaG91bGQgcG9pbnQgdG8gYSBibG9vbSBmaWx0ZXIiKSxwbih0W2UrNl0sImluamVjdG9ySW5kZXggc2hvdWxkIHBvaW50IHRvIGEgYmxvb20gZmlsdGVyIikscG4odFtlKzddLCJpbmplY3RvckluZGV4IHNob3VsZCBwb2ludCB0byBhIGJsb29tIGZpbHRlciIpLHBuKHRbZSs4XSwiaW5qZWN0b3JJbmRleCBzaG91bGQgcG9pbnQgdG8gcGFyZW50IGluamVjdG9yIil9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2Z1bmN0aW9uIEdvKHQsZSl7Y29uc3Qgbj10Lmhhc093blByb3BlcnR5KGlvKTtpZighbiYmITA9PT1lJiZuZ0Rldk1vZGUpdGhyb3cgbmV3IEVycm9yKGBUeXBlICR7S2UodCl9IGRvZXMgbm90IGhhdmUgJ8m1ZmFjJyBwcm9wZXJ0eS5gKTtyZXR1cm4gbj90W2lvXTpudWxsfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jbGFzcyBZb3tjb25zdHJ1Y3Rvcih0LGUsbil7dGhpcy5wcmV2aW91c1ZhbHVlPXQsdGhpcy5jdXJyZW50VmFsdWU9ZSx0aGlzLmZpcnN0Q2hhbmdlPW59aXNGaXJzdENoYW5nZSgpe3JldHVybiB0aGlzLmZpcnN0Q2hhbmdlfX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovZnVuY3Rpb24gcW8oKXtyZXR1cm4gWm99ZnVuY3Rpb24gWm8odCl7cmV0dXJuIHQudHlwZS5wcm90b3R5cGUubmdPbkNoYW5nZXMmJih0LnNldElucHV0PUtvKSxYb31mdW5jdGlvbiBYbygpe2NvbnN0IHQ9Sm8odGhpcyksZT1udWxsPT10P3ZvaWQgMDp0LmN1cnJlbnQ7aWYoZSl7Y29uc3Qgbj10LnByZXZpb3VzO2lmKG49PT1Kbil0LnByZXZpb3VzPWU7ZWxzZSBmb3IobGV0IHQgaW4gZSluW3RdPWVbdF07dC5jdXJyZW50PW51bGwsdGhpcy5uZ09uQ2hhbmdlcyhlKX19ZnVuY3Rpb24gS28odCxlLG4sbyl7Y29uc3QgaT1Kbyh0KXx8KGZ1bmN0aW9uIGEodCxlKXtyZXR1cm4gdC5fX25nU2ltcGxlQ2hhbmdlc19fPWV9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLykodCx7cHJldmlvdXM6Sm4sY3VycmVudDpudWxsfSkscj1pLmN1cnJlbnR8fChpLmN1cnJlbnQ9e30pLHM9aS5wcmV2aW91cyxsPXRoaXMuZGVjbGFyZWRJbnB1dHNbbl0sYz1zW2xdO3JbbF09bmV3IFlvKGMmJmMuY3VycmVudFZhbHVlLGUscz09PUpuKSx0W29dPWV9cW8ubmdJbmhlcml0PSEwO2Z1bmN0aW9uIEpvKHQpe3JldHVybiB0Ll9fbmdTaW1wbGVDaGFuZ2VzX198fG51bGx9bGV0IFFvPW51bGw7Y29uc3QgJG89dD0+e1FvPXR9LHRpPWZ1bmN0aW9uKHQsZSxuKXtudWxsIT1RbyYmUW8odCxlLG4pfSxlaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLG5pPSJodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGhNTC8iOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KbGV0IG9pO2Z1bmN0aW9uIGlpKCl7cmV0dXJuIHZvaWQgMCE9PW9pP29pOiJ1bmRlZmluZWQiIT10eXBlb2YgZG9jdW1lbnQ/ZG9jdW1lbnQ6dm9pZCAwfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi92YXIgYWk7ZnVuY3Rpb24gcmkodCl7cmV0dXJuISF0Lmxpc3Rlbn0hKGZ1bmN0aW9uKHQpe3RbdC5JbXBvcnRhbnQ9MV09IkltcG9ydGFudCIsdFt0LkRhc2hDYXNlPTJdPSJEYXNoQ2FzZSJ9KShhaXx8KGFpPXt9KSk7Y29uc3Qgc2k9e2NyZWF0ZVJlbmRlcmVyOih0LGUpPT5paSgpfTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmZ1bmN0aW9uIGxpKHQpe2Zvcig7QXJyYXkuaXNBcnJheSh0KTspdD10WzBdO3JldHVybiB0fWZ1bmN0aW9uIGNpKHQsZSl7cmV0dXJuIG5nRGV2TW9kZSYmd24oZSx0KSxuZ0Rldk1vZGUmJnZuKHQsdm8sIkV4cGVjdGVkIHRvIGJlIHBhc3QgSEVBREVSX09GRlNFVCIpLGxpKGVbdF0pfWZ1bmN0aW9uIGRpKHQsZSl7bmdEZXZNb2RlJiZFbyh0LGUpLG5nRGV2TW9kZSYmd24oZSx0LmluZGV4KTtjb25zdCBuPWxpKGVbdC5pbmRleF0pO3JldHVybiBuZ0Rldk1vZGUmJiFyaShlWzExXSkmJlBuKG4pLG59ZnVuY3Rpb24gcGkodCxlKXtuZ0Rldk1vZGUmJk1uKGUsLTEsIndyb25nIGluZGV4IGZvciBUTm9kZSIpLG5nRGV2TW9kZSYmX24oZSx0LmRhdGEubGVuZ3RoLCJ3cm9uZyBpbmRleCBmb3IgVE5vZGUiKTtjb25zdCBuPXQuZGF0YVtlXTtyZXR1cm4gbmdEZXZNb2RlJiZudWxsIT09biYmVG8obiksbn1mdW5jdGlvbiBtaSh0LGUpe3JldHVybiBuZ0Rldk1vZGUmJnduKHQsZSksdFtlXX1mdW5jdGlvbiBmaSh0LGUpe25nRGV2TW9kZSYmd24oZSx0KTtjb25zdCBuPWVbdF07cmV0dXJuIFBvKG4pP246blswXX1mdW5jdGlvbiB1aSh0KXtyZXR1cm4gND09KDQmdFsyXSl9ZnVuY3Rpb24gZ2kodCl7cmV0dXJuIDEyOD09KDEyOCZ0WzJdKX1mdW5jdGlvbiBoaSh0LGUpe3JldHVybiBudWxsPT1lP251bGw6KG5nRGV2TW9kZSYmd24odCxlKSx0W2VdKX1mdW5jdGlvbiBiaSh0KXt0WzE4XT0wfWZ1bmN0aW9uIHlpKHQsZSl7dFs1XSs9ZTtsZXQgbj10LG89dFszXTtmb3IoO251bGwhPT1vJiYoMT09PWUmJjE9PT1uWzVdfHwtMT09PWUmJjA9PT1uWzVdKTspb1s1XSs9ZSxuPW8sbz1vWzNdfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jb25zdCBfaT17bEZyYW1lOlhpKG51bGwpLGJpbmRpbmdzRW5hYmxlZDohMCxpc0luQ2hlY2tOb0NoYW5nZXNNb2RlOiExfTtmdW5jdGlvbiBDaSgpe3JldHVybiBfaS5iaW5kaW5nc0VuYWJsZWR9ZnVuY3Rpb24gTWkoKXtfaS5iaW5kaW5nc0VuYWJsZWQ9ITB9ZnVuY3Rpb24gdmkoKXtfaS5iaW5kaW5nc0VuYWJsZWQ9ITF9ZnVuY3Rpb24geGkoKXtyZXR1cm4gX2kubEZyYW1lLmxWaWV3fWZ1bmN0aW9uIE9pKCl7cmV0dXJuIF9pLmxGcmFtZS50Vmlld31mdW5jdGlvbiBQaSh0KXtyZXR1cm4gX2kubEZyYW1lLmNvbnRleHRMVmlldz10LHRbOF19ZnVuY3Rpb24gd2koKXtsZXQgdD1raSgpO2Zvcig7bnVsbCE9PXQmJjY0PT09dC50eXBlOyl0PXQucGFyZW50O3JldHVybiB0fWZ1bmN0aW9uIGtpKCl7cmV0dXJuIF9pLmxGcmFtZS5jdXJyZW50VE5vZGV9ZnVuY3Rpb24gU2koKXtjb25zdCB0PV9pLmxGcmFtZSxlPXQuY3VycmVudFROb2RlO3JldHVybiB0LmlzUGFyZW50P2U6ZS5wYXJlbnR9ZnVuY3Rpb24gRGkodCxlKXtuZ0Rldk1vZGUmJnQmJkFvKHQsX2kubEZyYW1lLnRWaWV3KTtjb25zdCBuPV9pLmxGcmFtZTtuLmN1cnJlbnRUTm9kZT10LG4uaXNQYXJlbnQ9ZX1mdW5jdGlvbiBSaSgpe3JldHVybiBfaS5sRnJhbWUuaXNQYXJlbnR9ZnVuY3Rpb24gRWkoKXtfaS5sRnJhbWUuaXNQYXJlbnQ9ITF9ZnVuY3Rpb24gQWkoKXtyZXR1cm4gX2kuaXNJbkNoZWNrTm9DaGFuZ2VzTW9kZX1mdW5jdGlvbiBUaSh0KXtfaS5pc0luQ2hlY2tOb0NoYW5nZXNNb2RlPXR9ZnVuY3Rpb24gTmkoKXtjb25zdCB0PV9pLmxGcmFtZTtsZXQgZT10LmJpbmRpbmdSb290SW5kZXg7cmV0dXJuLTE9PT1lJiYoZT10LmJpbmRpbmdSb290SW5kZXg9dC50Vmlldy5iaW5kaW5nU3RhcnRJbmRleCksZX1mdW5jdGlvbiB6aSgpe3JldHVybiBfaS5sRnJhbWUuYmluZGluZ0luZGV4fWZ1bmN0aW9uIElpKHQpe3JldHVybiBfaS5sRnJhbWUuYmluZGluZ0luZGV4PXR9ZnVuY3Rpb24gSGkoKXtyZXR1cm4gX2kubEZyYW1lLmJpbmRpbmdJbmRleCsrfWZ1bmN0aW9uIEZpKHQpe2NvbnN0IGU9X2kubEZyYW1lLG49ZS5iaW5kaW5nSW5kZXg7cmV0dXJuIGUuYmluZGluZ0luZGV4PWUuYmluZGluZ0luZGV4K3Qsbn1mdW5jdGlvbiBMaSh0KXtfaS5sRnJhbWUuaW5JMThuPXR9ZnVuY3Rpb24gQmkodCxlKXtjb25zdCBuPV9pLmxGcmFtZTtuLmJpbmRpbmdJbmRleD1uLmJpbmRpbmdSb290SW5kZXg9dCxWaShlKX1mdW5jdGlvbiBWaSh0KXtfaS5sRnJhbWUuY3VycmVudERpcmVjdGl2ZUluZGV4PXR9ZnVuY3Rpb24gamkodCl7Y29uc3QgZT1faS5sRnJhbWUuY3VycmVudERpcmVjdGl2ZUluZGV4O3JldHVybi0xPT09ZT9udWxsOnRbZV19ZnVuY3Rpb24gVWkoKXtyZXR1cm4gX2kubEZyYW1lLmN1cnJlbnRRdWVyeUluZGV4fWZ1bmN0aW9uIFdpKHQpe19pLmxGcmFtZS5jdXJyZW50UXVlcnlJbmRleD10fWZ1bmN0aW9uIEdpKHQpe2NvbnN0IGU9dFsxXTtyZXR1cm4gMj09PWUudHlwZT8obmdEZXZNb2RlJiZ4bihlLmRlY2xUTm9kZSwiRW1iZWRkZWQgVE5vZGVzIHNob3VsZCBoYXZlIGRlY2xhcmF0aW9uIHBhcmVudHMuIiksZS5kZWNsVE5vZGUpOjE9PT1lLnR5cGU/dFs2XTpudWxsfWZ1bmN0aW9uIFlpKHQsZSxuKXtpZihuZ0Rldk1vZGUmJkhvKHQpLG4mSG4uU2tpcFNlbGYpe25nRGV2TW9kZSYmQW8oZSx0WzFdKTtsZXQgbz1lLGk9dDtmb3IoOyEobmdEZXZNb2RlJiZ4bihvLCJQYXJlbnQgVE5vZGUgc2hvdWxkIGJlIGRlZmluZWQiKSxvPW8ucGFyZW50LG51bGwhPT1vfHxuJkhuLkhvc3R8fChvPUdpKGkpLG51bGw9PT1vKXx8KG5nRGV2TW9kZSYmeG4oaSwiUGFyZW50IExWaWV3IHNob3VsZCBiZSBkZWZpbmVkIiksaT1pWzE1XSwxMCZvLnR5cGUpKTspO2lmKG51bGw9PT1vKXJldHVybiExO2U9byx0PWl9bmdEZXZNb2RlJiZFbyhlLHQpO2NvbnN0IG89X2kubEZyYW1lPVppKCk7cmV0dXJuIG8uY3VycmVudFROb2RlPWUsby5sVmlldz10LCEwfWZ1bmN0aW9uIHFpKHQpe25nRGV2TW9kZSYmaG4odFswXSx0WzFdLCI/Pz8/IiksbmdEZXZNb2RlJiZIbyh0KTtjb25zdCBlPVppKCk7bmdEZXZNb2RlJiYoZ24oZS5pc1BhcmVudCwhMCwiRXhwZWN0ZWQgY2xlYW4gTEZyYW1lIiksZ24oZS5sVmlldyxudWxsLCJFeHBlY3RlZCBjbGVhbiBMRnJhbWUiKSxnbihlLnRWaWV3LG51bGwsIkV4cGVjdGVkIGNsZWFuIExGcmFtZSIpLGduKGUuc2VsZWN0ZWRJbmRleCwtMSwiRXhwZWN0ZWQgY2xlYW4gTEZyYW1lIiksZ24oZS5lbGVtZW50RGVwdGhDb3VudCwwLCJFeHBlY3RlZCBjbGVhbiBMRnJhbWUiKSxnbihlLmN1cnJlbnREaXJlY3RpdmVJbmRleCwtMSwiRXhwZWN0ZWQgY2xlYW4gTEZyYW1lIiksZ24oZS5jdXJyZW50TmFtZXNwYWNlLG51bGwsIkV4cGVjdGVkIGNsZWFuIExGcmFtZSIpLGduKGUuYmluZGluZ1Jvb3RJbmRleCwtMSwiRXhwZWN0ZWQgY2xlYW4gTEZyYW1lIiksZ24oZS5jdXJyZW50UXVlcnlJbmRleCwwLCJFeHBlY3RlZCBjbGVhbiBMRnJhbWUiKSk7Y29uc3Qgbj10WzFdO19pLmxGcmFtZT1lLG5nRGV2TW9kZSYmbi5maXJzdENoaWxkJiZBbyhuLmZpcnN0Q2hpbGQsbiksZS5jdXJyZW50VE5vZGU9bi5maXJzdENoaWxkLGUubFZpZXc9dCxlLnRWaWV3PW4sZS5jb250ZXh0TFZpZXc9dCxlLmJpbmRpbmdJbmRleD1uLmJpbmRpbmdTdGFydEluZGV4LGUuaW5JMThuPSExfWZ1bmN0aW9uIFppKCl7Y29uc3QgdD1faS5sRnJhbWUsZT1udWxsPT09dD9udWxsOnQuY2hpbGQ7cmV0dXJuIG51bGw9PT1lP1hpKHQpOmV9ZnVuY3Rpb24gWGkodCl7Y29uc3QgZT17Y3VycmVudFROb2RlOm51bGwsaXNQYXJlbnQ6ITAsbFZpZXc6bnVsbCx0VmlldzpudWxsLHNlbGVjdGVkSW5kZXg6LTEsY29udGV4dExWaWV3Om51bGwsZWxlbWVudERlcHRoQ291bnQ6MCxjdXJyZW50TmFtZXNwYWNlOm51bGwsY3VycmVudERpcmVjdGl2ZUluZGV4Oi0xLGJpbmRpbmdSb290SW5kZXg6LTEsYmluZGluZ0luZGV4Oi0xLGN1cnJlbnRRdWVyeUluZGV4OjAscGFyZW50OnQsY2hpbGQ6bnVsbCxpbkkxOG46ITF9O3JldHVybiBudWxsIT09dCYmKHQuY2hpbGQ9ZSksZX1mdW5jdGlvbiBLaSgpe2NvbnN0IHQ9X2kubEZyYW1lO3JldHVybiBfaS5sRnJhbWU9dC5wYXJlbnQsdC5jdXJyZW50VE5vZGU9bnVsbCx0LmxWaWV3PW51bGwsdH1jb25zdCBKaT1LaTtmdW5jdGlvbiBRaSgpe2NvbnN0IHQ9S2koKTt0LmlzUGFyZW50PSEwLHQudFZpZXc9bnVsbCx0LnNlbGVjdGVkSW5kZXg9LTEsdC5jb250ZXh0TFZpZXc9bnVsbCx0LmVsZW1lbnREZXB0aENvdW50PTAsdC5jdXJyZW50RGlyZWN0aXZlSW5kZXg9LTEsdC5jdXJyZW50TmFtZXNwYWNlPW51bGwsdC5iaW5kaW5nUm9vdEluZGV4PS0xLHQuYmluZGluZ0luZGV4PS0xLHQuY3VycmVudFF1ZXJ5SW5kZXg9MH1mdW5jdGlvbiAkaSh0KXtyZXR1cm4oX2kubEZyYW1lLmNvbnRleHRMVmlldz0oZnVuY3Rpb24gZSh0LG4pe2Zvcig7dD4wOyluZ0Rldk1vZGUmJnhuKG5bMTVdLCJEZWNsYXJhdGlvbiB2aWV3IHNob3VsZCBiZSBkZWZpbmVkIGlmIG5lc3RpbmcgbGV2ZWwgaXMgZ3JlYXRlciB0aGFuIDAuIiksbj1uWzE1XSx0LS07cmV0dXJuIG59KSh0LF9pLmxGcmFtZS5jb250ZXh0TFZpZXcpKVs4XX1mdW5jdGlvbiB0YSgpe3JldHVybiBfaS5sRnJhbWUuc2VsZWN0ZWRJbmRleH1mdW5jdGlvbiBlYSh0KXtuZ0Rldk1vZGUmJi0xIT09dCYmdm4odCx2bywiSW5kZXggbXVzdCBiZSBwYXN0IEhFQURFUl9PRkZTRVQgKG9yIC0xKS4iKSxuZ0Rldk1vZGUmJl9uKHQsX2kubEZyYW1lLmxWaWV3Lmxlbmd0aCwiQ2FuJ3Qgc2V0IGluZGV4IHBhc3NlZCBlbmQgb2YgTFZpZXciKSxfaS5sRnJhbWUuc2VsZWN0ZWRJbmRleD10fWZ1bmN0aW9uIG5hKCl7Y29uc3QgdD1faS5sRnJhbWU7cmV0dXJuIHBpKHQudFZpZXcsdC5zZWxlY3RlZEluZGV4KX1mdW5jdGlvbiBvYSgpe19pLmxGcmFtZS5jdXJyZW50TmFtZXNwYWNlPWVpfWZ1bmN0aW9uIGlhKCl7X2kubEZyYW1lLmN1cnJlbnROYW1lc3BhY2U9bml9ZnVuY3Rpb24gYWEoKXshKGZ1bmN0aW9uIHQoKXtfaS5sRnJhbWUuY3VycmVudE5hbWVzcGFjZT1udWxsfSkoKX1mdW5jdGlvbiByYSh0LGUpe25nRGV2TW9kZSYmTG8odCk7Zm9yKGxldCBuPWUuZGlyZWN0aXZlU3RhcnQsbz1lLmRpcmVjdGl2ZUVuZDtuPG87bisrKXtjb25zdCBlPXQuZGF0YVtuXTtuZ0Rldk1vZGUmJnhuKGUsIkV4cGVjdGluZyBEaXJlY3RpdmVEZWYiKTtjb25zdCBvPWUudHlwZS5wcm90b3R5cGUse25nQWZ0ZXJDb250ZW50SW5pdDppLG5nQWZ0ZXJDb250ZW50Q2hlY2tlZDphLG5nQWZ0ZXJWaWV3SW5pdDpyLG5nQWZ0ZXJWaWV3Q2hlY2tlZDpzLG5nT25EZXN0cm95Omx9PW87aSYmKHQuY29udGVudEhvb2tzfHwodC5jb250ZW50SG9va3M9W10pKS5wdXNoKC1uLGkpLGEmJigodC5jb250ZW50SG9va3N8fCh0LmNvbnRlbnRIb29rcz1bXSkpLnB1c2gobixhKSwodC5jb250ZW50Q2hlY2tIb29rc3x8KHQuY29udGVudENoZWNrSG9va3M9W10pKS5wdXNoKG4sYSkpLHImJih0LnZpZXdIb29rc3x8KHQudmlld0hvb2tzPVtdKSkucHVzaCgtbixyKSxzJiYoKHQudmlld0hvb2tzfHwodC52aWV3SG9va3M9W10pKS5wdXNoKG4scyksKHQudmlld0NoZWNrSG9va3N8fCh0LnZpZXdDaGVja0hvb2tzPVtdKSkucHVzaChuLHMpKSxudWxsIT1sJiYodC5kZXN0cm95SG9va3N8fCh0LmRlc3Ryb3lIb29rcz1bXSkpLnB1c2gobixsKX19ZnVuY3Rpb24gc2EodCxlLG4pe2RhKHQsZSwzLG4pfWZ1bmN0aW9uIGxhKHQsZSxuLG8pe25nRGV2TW9kZSYmaG4obiwzLCJJbml0IHByZS1vcmRlciBob29rcyBzaG91bGQgbm90IGJlIGNhbGxlZCBtb3JlIHRoYW4gb25jZSIpLCgzJnRbMl0pPT09biYmZGEodCxlLG4sbyl9ZnVuY3Rpb24gY2EodCxlKXtuZ0Rldk1vZGUmJmhuKGUsMywiSW5pdCBob29rcyBwaGFzZSBzaG91bGQgbm90IGJlIGluY3JlbWVudGVkIGFmdGVyIGFsbCBpbml0IGhvb2tzIGhhdmUgYmVlbiBydW4uIik7bGV0IG49dFsyXTsoMyZuKT09PWUmJihuJj0yMDQ3LG4rPTEsdFsyXT1uKX1mdW5jdGlvbiBkYSh0LGUsbixvKXtuZ0Rldk1vZGUmJmduKEFpKCksITEsIkhvb2tzIHNob3VsZCBuZXZlciBiZSBydW4gd2hlbiBpbiBjaGVjayBubyBjaGFuZ2VzIG1vZGUuIik7Y29uc3QgaT1udWxsIT1vP286LTEsYT1lLmxlbmd0aC0xO2xldCByPTA7Zm9yKGxldCBzPXZvaWQgMCE9PW8/NjU1MzUmdFsxOF06MDtzPGE7cysrKXtpZigibnVtYmVyIj09dHlwZW9mIGVbcysxXSl7aWYocj1lW3NdLG51bGwhPW8mJnI+PW8pYnJlYWt9ZWxzZXtlW3NdPDAmJih0WzE4XSs9NjU1MzYpLChyPGl8fC0xPT1pKSYmKHBhKHQsbixlLHMpLHRbMThdPSg0Mjk0OTAxNzYwJnRbMThdKStzKzIpLHMrK319fWZ1bmN0aW9uIHBhKHQsZSxuLG8pe2NvbnN0IGk9bltvXTwwLGE9bltvKzFdLHI9dFtpPy1uW29dOm5bb11dO2lmKGkpe2lmKHRbMl0+PjExPHRbMThdPj4xNiYmKDMmdFsyXSk9PT1lKXt0WzJdKz0yMDQ4LHRpKDQscixhKTt0cnl7YS5jYWxsKHIpfWZpbmFsbHl7dGkoNSxyLGEpfX19ZWxzZXt0aSg0LHIsYSk7dHJ5e2EuY2FsbChyKX1maW5hbGx5e3RpKDUscixhKX19fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jb25zdCBtYT0tMTtjbGFzcyBmYXtjb25zdHJ1Y3Rvcih0LGUsbil7dGhpcy5mYWN0b3J5PXQsdGhpcy5yZXNvbHZpbmc9ITEsbmdEZXZNb2RlJiZ4bih0LCJGYWN0b3J5IG5vdCBzcGVjaWZpZWQiKSxuZ0Rldk1vZGUmJmduKHR5cGVvZiB0LCJmdW5jdGlvbiIsIkV4cGVjdGVkIGZhY3RvcnkgZnVuY3Rpb24uIiksdGhpcy5jYW5TZWVWaWV3UHJvdmlkZXJzPWUsdGhpcy5pbmplY3RJbXBsPW59fWZ1bmN0aW9uIHVhKHQpe2xldCBlPSIiO3JldHVybiAxJnQmJihlKz0ifFRleHQiKSwyJnQmJihlKz0ifEVsZW1lbnQiKSw0JnQmJihlKz0ifENvbnRhaW5lciIpLDgmdCYmKGUrPSJ8RWxlbWVudENvbnRhaW5lciIpLDE2JnQmJihlKz0ifFByb2plY3Rpb24iKSwzMiZ0JiYoZSs9InxJY3VDb250YWluZXIiKSw2NCZ0JiYoZSs9InxQbGFjZWhvbGRlciIpLGUubGVuZ3RoPjA/ZS5zdWJzdHJpbmcoMSk6ZX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmZ1bmN0aW9uIGdhKHQsZSxuKXt4bih0LCJzaG91bGQgYmUgY2FsbGVkIHdpdGggYSBUTm9kZSIpLDA9PSh0LnR5cGUmZSkmJk9uKG58fGBFeHBlY3RlZCBbJHt1YShlKX1dIGJ1dCBnb3QgJHt1YSh0LnR5cGUpfS5gKX1mdW5jdGlvbiBoYSh0LGUsbil7Y29uc3Qgbz1yaSh0KTtsZXQgaT0wO2Zvcig7aTxuLmxlbmd0aDspe2NvbnN0IGE9bltpXTtpZigibnVtYmVyIj09dHlwZW9mIGEpe2lmKDAhPT1hKWJyZWFrO2krKztjb25zdCByPW5baSsrXSxzPW5baSsrXSxsPW5baSsrXTtuZ0Rldk1vZGUmJm5nRGV2TW9kZS5yZW5kZXJlclNldEF0dHJpYnV0ZSsrLG8/dC5zZXRBdHRyaWJ1dGUoZSxzLGwscik6ZS5zZXRBdHRyaWJ1dGVOUyhyLHMsbCl9ZWxzZXtjb25zdCByPWEscz1uWysraV07bmdEZXZNb2RlJiZuZ0Rldk1vZGUucmVuZGVyZXJTZXRBdHRyaWJ1dGUrKyx5YShyKT9vJiZ0LnNldFByb3BlcnR5KGUscixzKTpvP3Quc2V0QXR0cmlidXRlKGUscixzKTplLnNldEF0dHJpYnV0ZShyLHMpLGkrK319cmV0dXJuIGl9ZnVuY3Rpb24gYmEodCl7cmV0dXJuIDM9PT10fHw0PT09dHx8Nj09PXR9ZnVuY3Rpb24geWEodCl7cmV0dXJuIDY0PT09dC5jaGFyQ29kZUF0KDApfWZ1bmN0aW9uIF9hKHQsZSl7aWYobnVsbD09PWV8fDA9PT1lLmxlbmd0aCk7ZWxzZSBpZihudWxsPT09dHx8MD09PXQubGVuZ3RoKXQ9ZS5zbGljZSgpO2Vsc2V7bGV0IG49LTE7Zm9yKGxldCBvPTA7bzxlLmxlbmd0aDtvKyspe2NvbnN0IGk9ZVtvXTsibnVtYmVyIj09dHlwZW9mIGk/bj1pOjA9PT1ufHxDYSh0LG4saSxudWxsLC0xPT09bnx8Mj09PW4/ZVsrK29dOm51bGwpfX1yZXR1cm4gdH1mdW5jdGlvbiBDYSh0LGUsbixvLGkpe2xldCBhPTAscj10Lmxlbmd0aDtpZigtMT09PWUpcj0tMTtlbHNlIGZvcig7YTx0Lmxlbmd0aDspe2NvbnN0IG49dFthKytdO2lmKCJudW1iZXIiPT10eXBlb2Ygbil7aWYobj09PWUpe3I9LTE7YnJlYWt9aWYobj5lKXtyPWEtMTticmVha319fWZvcig7YTx0Lmxlbmd0aDspe2NvbnN0IGU9dFthXTtpZigibnVtYmVyIj09dHlwZW9mIGUpYnJlYWs7aWYoZT09PW4pe2lmKG51bGw9PT1vKXJldHVybiB2b2lkKG51bGwhPT1pJiYodFthKzFdPWkpKTtpZihvPT09dFthKzFdKXJldHVybiB2b2lkKHRbYSsyXT1pKX1hKyssbnVsbCE9PW8mJmErKyxudWxsIT09aSYmYSsrfS0xIT09ciYmKHQuc3BsaWNlKHIsMCxlKSxhPXIrMSksdC5zcGxpY2UoYSsrLDAsbiksbnVsbCE9PW8mJnQuc3BsaWNlKGErKywwLG8pLG51bGwhPT1pJiZ0LnNwbGljZShhKyssMCxpKX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovZnVuY3Rpb24gTWEodCl7cmV0dXJuIHQhPT1tYX1mdW5jdGlvbiB2YSh0KXtuZ0Rldk1vZGUmJnBuKHQsIk51bWJlciBleHBlY3RlZCIpLG5nRGV2TW9kZSYmaG4odCwtMSwiTm90IGEgdmFsaWQgc3RhdGUuIik7cmV0dXJuIG5nRGV2TW9kZSYmTW4oMzI3NjcmdCx2bywiUGFyZW50IGluamVjdG9yIG11c3QgYmUgcG9pbnRpbmcgcGFzdCBIRUFERVJfT0ZGU0VULiIpLDMyNzY3JnR9ZnVuY3Rpb24geGEodCxlKXtsZXQgbj0oZnVuY3Rpb24gbyh0KXtyZXR1cm4gdD4+MTZ9KSh0KSxpPWU7Zm9yKDtuPjA7KWk9aVsxNV0sbi0tO3JldHVybiBpfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9sZXQgT2E9ITA7ZnVuY3Rpb24gUGEodCl7Y29uc3QgZT1PYTtyZXR1cm4gT2E9dCxlfWxldCB3YT0wO2Z1bmN0aW9uIGthKHQsZSl7Y29uc3Qgbj1EYSh0LGUpO2lmKC0xIT09bilyZXR1cm4gbjtjb25zdCBvPWVbMV07by5maXJzdENyZWF0ZVBhc3MmJih0LmluamVjdG9ySW5kZXg9ZS5sZW5ndGgsU2Eoby5kYXRhLHQpLFNhKGUsbnVsbCksU2Eoby5ibHVlcHJpbnQsbnVsbCkpO2NvbnN0IGk9UmEodCxlKSxhPXQuaW5qZWN0b3JJbmRleDtpZihNYShpKSl7Y29uc3QgdD12YShpKSxuPXhhKGksZSksbz1uWzFdLmRhdGE7Zm9yKGxldCBpPTA7aTw4O2krKyllW2EraV09blt0K2ldfG9bdCtpXX1yZXR1cm4gZVthKzhdPWksYX1mdW5jdGlvbiBTYSh0LGUpe3QucHVzaCgwLDAsMCwwLDAsMCwwLDAsZSl9ZnVuY3Rpb24gRGEodCxlKXtyZXR1cm4tMT09PXQuaW5qZWN0b3JJbmRleHx8dC5wYXJlbnQmJnQucGFyZW50LmluamVjdG9ySW5kZXg9PT10LmluamVjdG9ySW5kZXh8fG51bGw9PT1lW3QuaW5qZWN0b3JJbmRleCs4XT8tMToobmdEZXZNb2RlJiZ3bihlLHQuaW5qZWN0b3JJbmRleCksdC5pbmplY3RvckluZGV4KX1mdW5jdGlvbiBSYSh0LGUpe2lmKHQucGFyZW50JiYtMSE9PXQucGFyZW50LmluamVjdG9ySW5kZXgpcmV0dXJuIHQucGFyZW50LmluamVjdG9ySW5kZXg7bGV0IG49MCxvPW51bGwsaT1lO2Zvcig7bnVsbCE9PWk7KXtjb25zdCB0PWlbMV0sZT10LnR5cGU7aWYoMj09PWU/KG5nRGV2TW9kZSYmeG4odC5kZWNsVE5vZGUsIkVtYmVkZGVkIFROb2RlcyBzaG91bGQgaGF2ZSBkZWNsYXJhdGlvbiBwYXJlbnRzLiIpLG89dC5kZWNsVE5vZGUpOjE9PT1lP289aVs2XToobmdEZXZNb2RlJiZnbih0LnR5cGUsMCwiUm9vdCB0eXBlIGV4cGVjdGVkIiksbz1udWxsKSxudWxsPT09bylyZXR1cm4gbWE7aWYobmdEZXZNb2RlJiZvJiZFbyhvLGlbMTVdKSxuKyssaT1pWzE1XSwtMSE9PW8uaW5qZWN0b3JJbmRleClyZXR1cm4gby5pbmplY3RvckluZGV4fG48PDE2fXJldHVybiBtYX1mdW5jdGlvbiBFYSh0LGUsbil7IShmdW5jdGlvbiBvKHQsZSxuKXtsZXQgbztuZ0Rldk1vZGUmJmduKGUuZmlyc3RDcmVhdGVQYXNzLCEwLCJleHBlY3RlZCBmaXJzdENyZWF0ZVBhc3MgdG8gYmUgdHJ1ZSIpLCJzdHJpbmciPT10eXBlb2Ygbj9vPW4uY2hhckNvZGVBdCgwKXx8MDpuLmhhc093blByb3BlcnR5KGFvKSYmKG89blthb10pLG51bGw9PW8mJihvPW5bYW9dPXdhKyspO2NvbnN0IGk9MjU1Jm87ZS5kYXRhW3QrKGk+PjUpXXw9MTw8aX0pKHQsZSxuKX1mdW5jdGlvbiBBYSh0LGUsbil7aWYobiZIbi5PcHRpb25hbClyZXR1cm4gdDtkbihlLCJOb2RlSW5qZWN0b3IiKX1mdW5jdGlvbiBUYSh0LGUsbixvKXtpZihuJkhuLk9wdGlvbmFsJiZ2b2lkIDA9PT1vJiYobz1udWxsKSwwPT0obiYoSG4uU2VsZnxIbi5Ib3N0KSkpe2NvbnN0IGk9dFs5XSxhPUxuKHZvaWQgMCk7dHJ5e3JldHVybiBpP2kuZ2V0KGUsbyxuJkhuLk9wdGlvbmFsKTpCbihlLG8sbiZIbi5PcHRpb25hbCl9ZmluYWxseXtMbihhKX19cmV0dXJuIEFhKG8sZSxuKX1mdW5jdGlvbiBOYSh0LGUsbixvPUhuLkRlZmF1bHQsaSl7aWYobnVsbCE9PXQpe2NvbnN0IGE9KGZ1bmN0aW9uIGEodCl7aWYobmdEZXZNb2RlJiZ4bih0LCJ0b2tlbiBtdXN0IGJlIGRlZmluZWQiKSwic3RyaW5nIj09dHlwZW9mIHQpcmV0dXJuIHQuY2hhckNvZGVBdCgwKXx8MDtjb25zdCBlPXQuaGFzT3duUHJvcGVydHkoYW8pP3RbYW9dOnZvaWQgMDtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIGU/ZT49MD8yNTUmZToobmdEZXZNb2RlJiZnbihlLC0xLCJFeHBlY3RpbmcgdG8gZ2V0IFNwZWNpYWwgSW5qZWN0b3IgSWQiKSxJYSk6ZX0pKG4pO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBhKXtpZighWWkoZSx0LG8pKXJldHVybiBvJkhuLkhvc3Q/QWEoaSxuLG8pOlRhKGUsbixvLGkpO3RyeXtjb25zdCB0PWEobyk7aWYobnVsbCE9dHx8byZIbi5PcHRpb25hbClyZXR1cm4gdDtkbihuKX1maW5hbGx5e0ppKCl9fWVsc2UgaWYoIm51bWJlciI9PXR5cGVvZiBhKXtsZXQgaT1udWxsLHI9RGEodCxlKSxzPW1hLGw9byZIbi5Ib3N0P2VbMTZdWzZdOm51bGw7Zm9yKCgtMT09PXJ8fG8mSG4uU2tpcFNlbGYpJiYocz0tMT09PXI/UmEodCxlKTplW3IrOF0scyE9PW1hJiZWYShvLCExKT8oaT1lWzFdLHI9dmEocyksZT14YShzLGUpKTpyPS0xKTstMSE9PXI7KXtuZ0Rldk1vZGUmJldvKGUscik7Y29uc3QgdD1lWzFdO2lmKG5nRGV2TW9kZSYmRW8odC5kYXRhW3IrOF0sZSksQmEoYSxyLHQuZGF0YSkpe2NvbnN0IHQ9SGEocixlLG4saSxvLGwpO2lmKHQhPT16YSlyZXR1cm4gdH1zPWVbcis4XSxzIT09bWEmJlZhKG8sZVsxXS5kYXRhW3IrOF09PT1sKSYmQmEoYSxyLGUpPyhpPXQscj12YShzKSxlPXhhKHMsZSkpOnI9LTF9fX1yZXR1cm4gVGEoZSxuLG8saSl9Y29uc3QgemE9e307ZnVuY3Rpb24gSWEoKXtyZXR1cm4gbmV3IGphKHdpKCkseGkoKSl9ZnVuY3Rpb24gSGEodCxlLG4sbyxpLGEpe2NvbnN0IHI9ZVsxXSxzPXIuZGF0YVt0KzhdLGw9RmEocyxyLG4sbnVsbD09bz9TbyhzKSYmT2E6byE9ciYmMCE9KDMmcy50eXBlKSxpJkhuLkhvc3QmJmE9PT1zKTtyZXR1cm4gbnVsbCE9PWw/TGEoZSxyLGwscyk6emF9ZnVuY3Rpb24gRmEodCxlLG4sbyxpKXtjb25zdCBhPXQucHJvdmlkZXJJbmRleGVzLHI9ZS5kYXRhLHM9MTA0ODU3NSZhLGw9dC5kaXJlY3RpdmVTdGFydCxjPWE+PjIwLGQ9aT9zK2M6dC5kaXJlY3RpdmVFbmQ7Zm9yKGxldCB0PW8/czpzK2M7dDxkO3QrKyl7Y29uc3QgZT1yW3RdO2lmKHQ8bCYmbj09PWV8fHQ+PWwmJmUudHlwZT09PW4pcmV0dXJuIHR9aWYoaSl7Y29uc3QgdD1yW2xdO2lmKHQmJlJvKHQpJiZ0LnR5cGU9PT1uKXJldHVybiBsfXJldHVybiBudWxsfWZ1bmN0aW9uIExhKHQsZSxuLG8pe2xldCBpPXRbbl07Y29uc3QgYT1lLmRhdGE7aWYoKGZ1bmN0aW9uIHIodCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBmYX0pKGkpKXtjb25zdCByPWk7ci5yZXNvbHZpbmcmJmxuKHNuKGFbbl0pKTtjb25zdCBzPVBhKHIuY2FuU2VlVmlld1Byb3ZpZGVycyk7ci5yZXNvbHZpbmc9ITA7Y29uc3QgbD1yLmluamVjdEltcGw/TG4oci5pbmplY3RJbXBsKTpudWxsLGM9WWkodCxvLEhuLkRlZmF1bHQpO25nRGV2TW9kZSYmZ24oYywhMCwiQmVjYXVzZSBmbGFncyBkbyBub3QgY29udGFpbiBgU2tpcFNlbGYnIHdlIGV4cGVjdCB0aGlzIHRvIGFsd2F5cyBzdWNjZWVkLiIpO3RyeXtpPXRbbl09ci5mYWN0b3J5KHZvaWQgMCxhLHQsbyksZS5maXJzdENyZWF0ZVBhc3MmJm4+PW8uZGlyZWN0aXZlU3RhcnQmJihuZ0Rldk1vZGUmJihmdW5jdGlvbiBzKHQpe3ZvaWQgMCE9PXQudHlwZSYmbnVsbCE9dC5zZWxlY3RvcnMmJnZvaWQgMCE9PXQuaW5wdXRzfHxPbigiRXhwZWN0ZWQgYSBEaXJlY3RpdmVEZWYvQ29tcG9uZW50RGVmIGFuZCB0aGlzIG9iamVjdCBkb2VzIG5vdCBzZWVtIHRvIGhhdmUgdGhlIGV4cGVjdGVkIHNoYXBlLiIpfSkoYVtuXSksKAovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KZnVuY3Rpb24gbCh0LGUsbil7bmdEZXZNb2RlJiZMbyhuKTtjb25zdHtuZ09uQ2hhbmdlczpvLG5nT25Jbml0OmksbmdEb0NoZWNrOmF9PWUudHlwZS5wcm90b3R5cGU7aWYobyl7Y29uc3Qgbz1abyhlKTsobi5wcmVPcmRlckhvb2tzfHwobi5wcmVPcmRlckhvb2tzPVtdKSkucHVzaCh0LG8pLChuLnByZU9yZGVyQ2hlY2tIb29rc3x8KG4ucHJlT3JkZXJDaGVja0hvb2tzPVtdKSkucHVzaCh0LG8pfWkmJihuLnByZU9yZGVySG9va3N8fChuLnByZU9yZGVySG9va3M9W10pKS5wdXNoKDAtdCxpKSxhJiYoKG4ucHJlT3JkZXJIb29rc3x8KG4ucHJlT3JkZXJIb29rcz1bXSkpLnB1c2godCxhKSwobi5wcmVPcmRlckNoZWNrSG9va3N8fChuLnByZU9yZGVyQ2hlY2tIb29rcz1bXSkpLnB1c2godCxhKSl9KShuLGFbbl0sZSkpfWZpbmFsbHl7bnVsbCE9PWwmJkxuKGwpLFBhKHMpLHIucmVzb2x2aW5nPSExLEppKCl9fXJldHVybiBpfWZ1bmN0aW9uIEJhKHQsZSxuKXtyZXR1cm4hIShuW2UrKHQ+PjUpXSYxPDx0KX1mdW5jdGlvbiBWYSh0LGUpe3JldHVybiEodCZIbi5TZWxmfHx0JkhuLkhvc3QmJmUpfWNsYXNzIGphe2NvbnN0cnVjdG9yKHQsZSl7dGhpcy5fdE5vZGU9dCx0aGlzLl9sVmlldz1lfWdldCh0LGUpe3JldHVybiBOYSh0aGlzLl90Tm9kZSx0aGlzLl9sVmlldyx0LHZvaWQgMCxlKX19ZnVuY3Rpb24gVWEodCl7cmV0dXJuIFZuKCgoKT0+e2NvbnN0IGU9dC5wcm90b3R5cGUuY29uc3RydWN0b3Isbj1lW2lvXXx8V2EoZSksbz1PYmplY3QucHJvdG90eXBlO2xldCBpPU9iamVjdC5nZXRQcm90b3R5cGVPZih0LnByb3RvdHlwZSkuY29uc3RydWN0b3I7Zm9yKDtpJiZpIT09bzspe2NvbnN0IHQ9aVtpb118fFdhKGkpO2lmKHQmJnQhPT1uKXJldHVybiB0O2k9T2JqZWN0LmdldFByb3RvdHlwZU9mKGkpfXJldHVybiB0PT5uZXcgdH0pKX1mdW5jdGlvbiBXYSh0KXtyZXR1cm4gZW4odCk/KCk9Pntjb25zdCBlPVdhKHRuKHQpKTtyZXR1cm4gZSYmZSgpfTpHbyh0KX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovZnVuY3Rpb24gR2EodCl7cmV0dXJuKGZ1bmN0aW9uIGUodCxuKXtpZihuZ0Rldk1vZGUmJmdhKHQsMTUpLG5nRGV2TW9kZSYmeG4odCwiZXhwZWN0aW5nIHROb2RlIiksImNsYXNzIj09PW4pcmV0dXJuIHQuY2xhc3NlcztpZigic3R5bGUiPT09bilyZXR1cm4gdC5zdHlsZXM7Y29uc3Qgbz10LmF0dHJzO2lmKG8pe2NvbnN0IHQ9by5sZW5ndGg7bGV0IGU9MDtmb3IoO2U8dDspe2NvbnN0IGk9b1tlXTtpZihiYShpKSlicmVhaztpZigwPT09aSllKz0yO2Vsc2UgaWYoIm51bWJlciI9PXR5cGVvZiBpKWZvcihlKys7ZTx0JiYic3RyaW5nIj09dHlwZW9mIG9bZV07KWUrKztlbHNle2lmKGk9PT1uKXJldHVybiBvW2UrMV07ZSs9Mn19fXJldHVybiBudWxsfSkod2koKSx0KX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY29uc3QgWWE9Il9fYW5ub3RhdGlvbnNfXyIscWE9Il9fcGFyYW1ldGVyc19fIixaYT0iX19wcm9wX19tZXRhZGF0YV9fIjtmdW5jdGlvbiBYYSh0LGUsbixvLGkpe3JldHVybiBWbigoKCk9Pntjb25zdCBhPUthKGUpO2Z1bmN0aW9uIHIoLi4udCl7aWYodGhpcyBpbnN0YW5jZW9mIHIpcmV0dXJuIGEuY2FsbCh0aGlzLC4uLnQpLHRoaXM7Y29uc3QgZT1uZXcgciguLi50KTtyZXR1cm4gZnVuY3Rpb24gbihhKXtpJiZpKGEsLi4udCk7cmV0dXJuKGEuaGFzT3duUHJvcGVydHkoWWEpP2FbWWFdOk9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLFlhLHt2YWx1ZTpbXX0pW1lhXSkucHVzaChlKSxvJiZvKGEpLGF9fXJldHVybiBuJiYoci5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShuLnByb3RvdHlwZSkpLHIucHJvdG90eXBlLm5nTWV0YWRhdGFOYW1lPXQsci5hbm5vdGF0aW9uQ2xzPXIscn0pKX1mdW5jdGlvbiBLYSh0KXtyZXR1cm4gZnVuY3Rpb24gZSguLi5uKXtpZih0KXtjb25zdCBlPXQoLi4ubik7Zm9yKGNvbnN0IHQgaW4gZSl0aGlzW3RdPWVbdF19fX1mdW5jdGlvbiBKYSh0LGUsbil7cmV0dXJuIFZuKCgoKT0+e2NvbnN0IG89S2EoZSk7ZnVuY3Rpb24gaSguLi50KXtpZih0aGlzIGluc3RhbmNlb2YgaSlyZXR1cm4gby5hcHBseSh0aGlzLHQpLHRoaXM7Y29uc3QgZT1uZXcgaSguLi50KTtyZXR1cm4gbi5hbm5vdGF0aW9uPWUsbjtmdW5jdGlvbiBuKHQsbixvKXtjb25zdCBpPXQuaGFzT3duUHJvcGVydHkocWEpP3RbcWFdOk9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LHFhLHt2YWx1ZTpbXX0pW3FhXTtmb3IoO2kubGVuZ3RoPD1vOylpLnB1c2gobnVsbCk7cmV0dXJuKGlbb109aVtvXXx8W10pLnB1c2goZSksdH19cmV0dXJuIG4mJihpLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKG4ucHJvdG90eXBlKSksaS5wcm90b3R5cGUubmdNZXRhZGF0YU5hbWU9dCxpLmFubm90YXRpb25DbHM9aSxpfSkpfWZ1bmN0aW9uIFFhKHQsZSxuLG8pe3JldHVybiBWbigoKCk9Pntjb25zdCBpPUthKGUpO2Z1bmN0aW9uIGEoLi4udCl7aWYodGhpcyBpbnN0YW5jZW9mIGEpcmV0dXJuIGkuYXBwbHkodGhpcyx0KSx0aGlzO2NvbnN0IGU9bmV3IGEoLi4udCk7cmV0dXJuIGZ1bmN0aW9uIG4oaSxhKXtjb25zdCByPWkuY29uc3RydWN0b3Iscz1yLmhhc093blByb3BlcnR5KFphKT9yW1phXTpPYmplY3QuZGVmaW5lUHJvcGVydHkocixaYSx7dmFsdWU6e319KVtaYV07c1thXT1zLmhhc093blByb3BlcnR5KGEpJiZzW2FdfHxbXSxzW2FdLnVuc2hpZnQoZSksbyYmbyhpLGEsLi4udCl9fXJldHVybiBuJiYoYS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShuLnByb3RvdHlwZSkpLGEucHJvdG90eXBlLm5nTWV0YWRhdGFOYW1lPXQsYS5hbm5vdGF0aW9uQ2xzPWEsYX0pKX1jb25zdCAkYT0oZnVuY3Rpb24gdHIoKXtyZXR1cm4gSmEoIkF0dHJpYnV0ZSIsKHQ9Pih7YXR0cmlidXRlTmFtZTp0LF9fTkdfRUxFTUVOVF9JRF9fOigpPT5HYSh0KX0pKSl9KSgpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3MgZXJ7Y29uc3RydWN0b3IodCxlKXt0aGlzLl9kZXNjPXQsdGhpcy5uZ01ldGFkYXRhTmFtZT0iSW5qZWN0aW9uVG9rZW4iLHRoaXMuybVwcm92PXZvaWQgMCwibnVtYmVyIj09dHlwZW9mIGU/KCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmX24oZSwwLCJPbmx5IG5lZ2F0aXZlIG51bWJlcnMgYXJlIHN1cHBvcnRlZCBoZXJlIiksdGhpcy5fX05HX0VMRU1FTlRfSURfXz1lKTp2b2lkIDAhPT1lJiYodGhpcy7JtXByb3Y9U24oe3Rva2VuOnRoaXMscHJvdmlkZWRJbjplLnByb3ZpZGVkSW58fCJyb290IixmYWN0b3J5OmUuZmFjdG9yeX0pKX10b1N0cmluZygpe3JldHVybmBJbmplY3Rpb25Ub2tlbiAke3RoaXMuX2Rlc2N9YH19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL25ldyBlcigiQW5hbHl6ZUZvckVudHJ5Q29tcG9uZW50cyIpO2NsYXNzIG5ye31jb25zdCBvcj1RYSgiQ29udGVudENoaWxkcmVuIiwoKHQsZT17fSk9Pk9iamVjdC5hc3NpZ24oe3NlbGVjdG9yOnQsZmlyc3Q6ITEsaXNWaWV3UXVlcnk6ITEsZGVzY2VuZGFudHM6ITEsZW1pdERpc3RpbmN0Q2hhbmdlc09ubHk6dHJ1ZX0sZSkpLG5yKSxpcj1RYSgiQ29udGVudENoaWxkIiwoKHQsZT17fSk9Pk9iamVjdC5hc3NpZ24oe3NlbGVjdG9yOnQsZmlyc3Q6ITAsaXNWaWV3UXVlcnk6ITEsZGVzY2VuZGFudHM6ITB9LGUpKSxucik7UWEoIlZpZXdDaGlsZHJlbiIsKCh0LGU9e30pPT5PYmplY3QuYXNzaWduKHtzZWxlY3Rvcjp0LGZpcnN0OiExLGlzVmlld1F1ZXJ5OiEwLGRlc2NlbmRhbnRzOiEwLGVtaXREaXN0aW5jdENoYW5nZXNPbmx5OnRydWV9LGUpKSxucik7Y29uc3QgYXI9UWEoIlZpZXdDaGlsZCIsKCh0LGUpPT5PYmplY3QuYXNzaWduKHtzZWxlY3Rvcjp0LGZpcnN0OiEwLGlzVmlld1F1ZXJ5OiEwLGRlc2NlbmRhbnRzOiEwfSxlKSksbnIpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KdmFyIHJyLHNyOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KZnVuY3Rpb24gbHIodCl7Y29uc3QgZT1Ybi5uZztpZihlJiZlLsm1Y29tcGlsZXJGYWNhZGUpcmV0dXJuIGUuybVjb21waWxlckZhY2FkZTtpZigidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKXtjb25zb2xlLmVycm9yKGBKSVQgY29tcGlsYXRpb24gZmFpbGVkIGZvciAke3Qua2luZH1gLHQudHlwZSk7bGV0IGU9YFRoZSAke3Qua2luZH0gJyR7dC50eXBlLm5hbWV9JyBuZWVkcyB0byBiZSBjb21waWxlZCB1c2luZyB0aGUgSklUIGNvbXBpbGVyLCBidXQgJ0Bhbmd1bGFyL2NvbXBpbGVyJyBpcyBub3QgYXZhaWxhYmxlLlxuXG5gO3Rocm93IDE9PT10LnVzYWdlPyhlKz1gVGhlICR7dC5raW5kfSBpcyBwYXJ0IG9mIGEgbGlicmFyeSB0aGF0IGhhcyBiZWVuIHBhcnRpYWxseSBjb21waWxlZC5cbmAsZSs9Ikhvd2V2ZXIsIHRoZSBBbmd1bGFyIExpbmtlciBoYXMgbm90IHByb2Nlc3NlZCB0aGUgbGlicmFyeSBzdWNoIHRoYXQgSklUIGNvbXBpbGF0aW9uIGlzIHVzZWQgYXMgZmFsbGJhY2suXG4iLGUrPSJcbiIsZSs9IklkZWFsbHksIHRoZSBsaWJyYXJ5IGlzIHByb2Nlc3NlZCB1c2luZyB0aGUgQW5ndWxhciBMaW5rZXIgdG8gYmVjb21lIGZ1bGx5IEFPVCBjb21waWxlZC5cbiIpOmUrPSJKSVQgY29tcGlsYXRpb24gaXMgZGlzY291cmFnZWQgZm9yIHByb2R1Y3Rpb24gdXNlLWNhc2VzISBDb25zaWRlciB1c2luZyBBT1QgbW9kZSBpbnN0ZWFkLlxuIixlKz0iQWx0ZXJuYXRpdmVseSwgdGhlIEpJVCBjb21waWxlciBzaG91bGQgYmUgbG9hZGVkIGJ5IGJvb3RzdHJhcHBpbmcgdXNpbmcgJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXItZHluYW1pYycgb3IgJ0Bhbmd1bGFyL3BsYXRmb3JtLXNlcnZlcicsXG4iLGUrPSJvciBtYW51YWxseSBwcm92aWRlIHRoZSBjb21waWxlciB3aXRoICdpbXBvcnQgXCJAYW5ndWxhci9jb21waWxlclwiOycgYmVmb3JlIGJvb3RzdHJhcHBpbmcuIixuZXcgRXJyb3IoZSl9dGhyb3cgbmV3IEVycm9yKCJKSVQgY29tcGlsZXIgdW5hdmFpbGFibGUiKX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovIShmdW5jdGlvbih0KXt0W3QuRGlyZWN0aXZlPTBdPSJEaXJlY3RpdmUiLHRbdC5Db21wb25lbnQ9MV09IkNvbXBvbmVudCIsdFt0LkluamVjdGFibGU9Ml09IkluamVjdGFibGUiLHRbdC5QaXBlPTNdPSJQaXBlIix0W3QuTmdNb2R1bGU9NF09Ik5nTW9kdWxlIn0pKHJyfHwocnI9e30pKSwoZnVuY3Rpb24odCl7dFt0LkVtdWxhdGVkPTBdPSJFbXVsYXRlZCIsdFt0Lk5vbmU9Ml09Ik5vbmUiLHRbdC5TaGFkb3dEb209M109IlNoYWRvd0RvbSJ9KShzcnx8KHNyPXt9KSk7Y29uc3QgY3I9RnVuY3Rpb247ZnVuY3Rpb24gZHIodCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHR9ZnVuY3Rpb24gcHIodCxlKXt2b2lkIDA9PT1lJiYoZT10KTtmb3IobGV0IG49MDtuPHQubGVuZ3RoO24rKyl7bGV0IG89dFtuXTtBcnJheS5pc0FycmF5KG8pPyhlPT09dCYmKGU9dC5zbGljZSgwLG4pKSxwcihvLGUpKTplIT09dCYmZS5wdXNoKG8pfXJldHVybiBlfWZ1bmN0aW9uIG1yKHQsZSl7dC5mb3JFYWNoKCh0PT5BcnJheS5pc0FycmF5KHQpP21yKHQsZSk6ZSh0KSkpfWZ1bmN0aW9uIGZyKHQsZSxuKXtlPj10Lmxlbmd0aD90LnB1c2gobik6dC5zcGxpY2UoZSwwLG4pfWZ1bmN0aW9uIHVyKHQsZSl7cmV0dXJuIGU+PXQubGVuZ3RoLTE/dC5wb3AoKTp0LnNwbGljZShlLDEpWzBdfWZ1bmN0aW9uIGdyKHQsZSl7Y29uc3Qgbj1bXTtmb3IobGV0IG89MDtvPHQ7bysrKW4ucHVzaChlKTtyZXR1cm4gbn1mdW5jdGlvbiBocih0LGUsbil7bGV0IG89eXIodCxlKTtyZXR1cm4gbz49MD90WzF8b109bjoobz1+bywoZnVuY3Rpb24gaSh0LGUsbixvKXtuZ0Rldk1vZGUmJkNuKGUsdC5sZW5ndGgsIkNhbid0IGluc2VydCBwYXN0IGFycmF5IGVuZC4iKTtsZXQgaT10Lmxlbmd0aDtpZihpPT1lKXQucHVzaChuLG8pO2Vsc2UgaWYoMT09PWkpdC5wdXNoKG8sdFswXSksdFswXT1uO2Vsc2V7Zm9yKGktLSx0LnB1c2godFtpLTFdLHRbaV0pO2k+ZTspdFtpXT10W2ktMl0saS0tO3RbZV09bix0W2UrMV09b319KSh0LG8sZSxuKSksb31mdW5jdGlvbiBicih0LGUpe2NvbnN0IG49eXIodCxlKTtpZihuPj0wKXJldHVybiB0WzF8bl19ZnVuY3Rpb24geXIodCxlKXtyZXR1cm4oZnVuY3Rpb24gbih0LGUsbyl7bmdEZXZNb2RlJiZnbihBcnJheS5pc0FycmF5KHQpLCEwLCJFeHBlY3RpbmcgYW4gYXJyYXkiKTtsZXQgaT0wLGE9dC5sZW5ndGg+Pm87Zm9yKDthIT09aTspe2NvbnN0IG49aSsoYS1pPj4xKSxyPXRbbjw8b107aWYoZT09PXIpcmV0dXJuIG48PG87cj5lP2E9bjppPW4rMX1yZXR1cm5+KGE8PG8pfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8pKHQsZSwxKX1jb25zdCBfcj0vXmZ1bmN0aW9uXHMrXFMrXChcKVxzKntbXHNcU10rXC5hcHBseVwodGhpcyxccyooYXJndW1lbnRzfCg/OlteKCldK1woXFtcXSwpP1teKCldK1woYXJndW1lbnRzXCkpXCkvLENyPS9eY2xhc3NccytbQS1aYS16XGQkX10qXHMqZXh0ZW5kc1xzK1tee10rey8sTXI9L15jbGFzc1xzK1tBLVphLXpcZCRfXSpccypleHRlbmRzXHMrW157XSt7W1xzXFNdKmNvbnN0cnVjdG9yXHMqXCgvLHZyPS9eY2xhc3NccytbQS1aYS16XGQkX10qXHMqZXh0ZW5kc1xzK1tee10re1tcc1xTXSpjb25zdHJ1Y3RvclxzKlwoXClccyp7XHMqc3VwZXJcKFwuXC5cLmFyZ3VtZW50c1wpLztjbGFzcyB4cntjb25zdHJ1Y3Rvcih0KXt0aGlzLl9yZWZsZWN0PXR8fFhuLlJlZmxlY3R9aXNSZWZsZWN0aW9uRW5hYmxlZCgpe3JldHVybiEwfWZhY3RvcnkodCl7cmV0dXJuKC4uLmUpPT5uZXcgdCguLi5lKX1femlwVHlwZXNBbmRBbm5vdGF0aW9ucyh0LGUpe2xldCBuO249Z3Iodm9pZCAwPT09dD9lLmxlbmd0aDp0Lmxlbmd0aCk7Zm9yKGxldCBvPTA7bzxuLmxlbmd0aDtvKyspbltvXT12b2lkIDA9PT10P1tdOnRbb10mJnRbb10hPU9iamVjdD9bdFtvXV06W10sZSYmbnVsbCE9ZVtvXSYmKG5bb109bltvXS5jb25jYXQoZVtvXSkpO3JldHVybiBufV9vd25QYXJhbWV0ZXJzKHQsZSl7aWYoKGZ1bmN0aW9uIG4odCl7cmV0dXJuIF9yLnRlc3QodCl8fHZyLnRlc3QodCl8fENyLnRlc3QodCkmJiFNci50ZXN0KHQpfSkodC50b1N0cmluZygpKSlyZXR1cm4gbnVsbDtpZih0LnBhcmFtZXRlcnMmJnQucGFyYW1ldGVycyE9PWUucGFyYW1ldGVycylyZXR1cm4gdC5wYXJhbWV0ZXJzO2NvbnN0IG89dC5jdG9yUGFyYW1ldGVycztpZihvJiZvIT09ZS5jdG9yUGFyYW1ldGVycyl7Y29uc3QgdD0iZnVuY3Rpb24iPT10eXBlb2Ygbz9vKCk6byxlPXQubWFwKCh0PT50JiZ0LnR5cGUpKSxuPXQubWFwKCh0PT50JiZPcih0LmRlY29yYXRvcnMpKSk7cmV0dXJuIHRoaXMuX3ppcFR5cGVzQW5kQW5ub3RhdGlvbnMoZSxuKX1jb25zdCBpPXQuaGFzT3duUHJvcGVydHkocWEpJiZ0W3FhXSxhPXRoaXMuX3JlZmxlY3QmJnRoaXMuX3JlZmxlY3QuZ2V0T3duTWV0YWRhdGEmJnRoaXMuX3JlZmxlY3QuZ2V0T3duTWV0YWRhdGEoImRlc2lnbjpwYXJhbXR5cGVzIix0KTtyZXR1cm4gYXx8aT90aGlzLl96aXBUeXBlc0FuZEFubm90YXRpb25zKGEsaSk6Z3IodC5sZW5ndGgpfXBhcmFtZXRlcnModCl7aWYoIWRyKHQpKXJldHVybltdO2NvbnN0IGU9UHIodCk7bGV0IG49dGhpcy5fb3duUGFyYW1ldGVycyh0LGUpO3JldHVybiBufHxlPT09T2JqZWN0fHwobj10aGlzLnBhcmFtZXRlcnMoZSkpLG58fFtdfV9vd25Bbm5vdGF0aW9ucyh0LGUpe2lmKHQuYW5ub3RhdGlvbnMmJnQuYW5ub3RhdGlvbnMhPT1lLmFubm90YXRpb25zKXtsZXQgZT10LmFubm90YXRpb25zO3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBlJiZlLmFubm90YXRpb25zJiYoZT1lLmFubm90YXRpb25zKSxlfXJldHVybiB0LmRlY29yYXRvcnMmJnQuZGVjb3JhdG9ycyE9PWUuZGVjb3JhdG9ycz9Pcih0LmRlY29yYXRvcnMpOnQuaGFzT3duUHJvcGVydHkoWWEpP3RbWWFdOm51bGx9YW5ub3RhdGlvbnModCl7aWYoIWRyKHQpKXJldHVybltdO2NvbnN0IGU9UHIodCksbj10aGlzLl9vd25Bbm5vdGF0aW9ucyh0LGUpfHxbXTtyZXR1cm4oZSE9PU9iamVjdD90aGlzLmFubm90YXRpb25zKGUpOltdKS5jb25jYXQobil9X293blByb3BNZXRhZGF0YSh0LGUpe2lmKHQucHJvcE1ldGFkYXRhJiZ0LnByb3BNZXRhZGF0YSE9PWUucHJvcE1ldGFkYXRhKXtsZXQgZT10LnByb3BNZXRhZGF0YTtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgZSYmZS5wcm9wTWV0YWRhdGEmJihlPWUucHJvcE1ldGFkYXRhKSxlfWlmKHQucHJvcERlY29yYXRvcnMmJnQucHJvcERlY29yYXRvcnMhPT1lLnByb3BEZWNvcmF0b3JzKXtjb25zdCBlPXQucHJvcERlY29yYXRvcnMsbj17fTtyZXR1cm4gT2JqZWN0LmtleXMoZSkuZm9yRWFjaCgodD0+e25bdF09T3IoZVt0XSl9KSksbn1yZXR1cm4gdC5oYXNPd25Qcm9wZXJ0eShaYSk/dFtaYV06bnVsbH1wcm9wTWV0YWRhdGEodCl7aWYoIWRyKHQpKXJldHVybnt9O2NvbnN0IGU9UHIodCksbj17fTtpZihlIT09T2JqZWN0KXtjb25zdCB0PXRoaXMucHJvcE1ldGFkYXRhKGUpO09iamVjdC5rZXlzKHQpLmZvckVhY2goKGU9PntuW2VdPXRbZV19KSl9Y29uc3Qgbz10aGlzLl9vd25Qcm9wTWV0YWRhdGEodCxlKTtyZXR1cm4gbyYmT2JqZWN0LmtleXMobykuZm9yRWFjaCgodD0+e2NvbnN0IGU9W107bi5oYXNPd25Qcm9wZXJ0eSh0KSYmZS5wdXNoKC4uLm5bdF0pLGUucHVzaCguLi5vW3RdKSxuW3RdPWV9KSksbn1vd25Qcm9wTWV0YWRhdGEodCl7cmV0dXJuIGRyKHQpJiZ0aGlzLl9vd25Qcm9wTWV0YWRhdGEodCxQcih0KSl8fHt9fWhhc0xpZmVjeWNsZUhvb2sodCxlKXtyZXR1cm4gdCBpbnN0YW5jZW9mIGNyJiZlIGluIHQucHJvdG90eXBlfWd1YXJkcyh0KXtyZXR1cm57fX1nZXR0ZXIodCl7cmV0dXJuIG5ldyBGdW5jdGlvbigibyIsInJldHVybiBvLiIrdCsiOyIpfXNldHRlcih0KXtyZXR1cm4gbmV3IEZ1bmN0aW9uKCJvIiwidiIsInJldHVybiBvLiIrdCsiID0gdjsiKX1tZXRob2QodCl7cmV0dXJuIG5ldyBGdW5jdGlvbigibyIsImFyZ3MiLGBpZiAoIW8uJHt0fSkgdGhyb3cgbmV3IEVycm9yKCciJHt0fSIgaXMgdW5kZWZpbmVkJyk7XG4gICAgICAgIHJldHVybiBvLiR7dH0uYXBwbHkobywgYXJncyk7YCl9aW1wb3J0VXJpKHQpe3JldHVybiJvYmplY3QiPT10eXBlb2YgdCYmdC5maWxlUGF0aD90LmZpbGVQYXRoOmAuLyR7S2UodCl9YH1yZXNvdXJjZVVyaSh0KXtyZXR1cm5gLi8ke0tlKHQpfWB9cmVzb2x2ZUlkZW50aWZpZXIodCxlLG4sbyl7cmV0dXJuIG99cmVzb2x2ZUVudW0odCxlKXtyZXR1cm4gdFtlXX19ZnVuY3Rpb24gT3IodCl7cmV0dXJuIHQ/dC5tYXAoKHQ9Pm5ldygwLHQudHlwZS5hbm5vdGF0aW9uQ2xzKSguLi50LmFyZ3M/dC5hcmdzOltdKSkpOltdfWZ1bmN0aW9uIFByKHQpe2NvbnN0IGU9dC5wcm90b3R5cGU/T2JqZWN0LmdldFByb3RvdHlwZU9mKHQucHJvdG90eXBlKTpudWxsO3JldHVybihlP2UuY29uc3RydWN0b3I6bnVsbCl8fE9iamVjdH0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY29uc3Qgd3I9e30sa3I9L1xuL2dtLFNyPSJfX3NvdXJjZSIsRHI9WmUoe3Byb3ZpZGU6U3RyaW5nLHVzZVZhbHVlOlplfSk7bGV0IFJyO2Z1bmN0aW9uIEVyKHQpe2NvbnN0IGU9UnI7cmV0dXJuIFJyPXQsZX1mdW5jdGlvbiBBcih0LGU9SG4uRGVmYXVsdCl7aWYodm9pZCAwPT09UnIpdGhyb3cgbmV3IEVycm9yKCJpbmplY3QoKSBtdXN0IGJlIGNhbGxlZCBmcm9tIGFuIGluamVjdGlvbiBjb250ZXh0Iik7cmV0dXJuIG51bGw9PT1Scj9Cbih0LHZvaWQgMCxlKTpSci5nZXQodCxlJkhuLk9wdGlvbmFsP251bGw6dm9pZCAwLGUpfWZ1bmN0aW9uIFRyKHQsZT1Ibi5EZWZhdWx0KXtyZXR1cm4oKGZ1bmN0aW9uIG4oKXtyZXR1cm4gRm59KSgpfHxBcikodG4odCksZSl9ZnVuY3Rpb24gTnIodCl7Y29uc3QgZT1uZ0Rldk1vZGU/YFRoaXMgY29uc3RydWN0b3IgaXMgbm90IGNvbXBhdGlibGUgd2l0aCBBbmd1bGFyIERlcGVuZGVuY3kgSW5qZWN0aW9uIGJlY2F1c2UgaXRzIGRlcGVuZGVuY3kgYXQgaW5kZXggJHt0fSBvZiB0aGUgcGFyYW1ldGVyIGxpc3QgaXMgaW52YWxpZC5cblRoaXMgY2FuIGhhcHBlbiBpZiB0aGUgZGVwZW5kZW5jeSB0eXBlIGlzIGEgcHJpbWl0aXZlIGxpa2UgYSBzdHJpbmcgb3IgaWYgYW4gYW5jZXN0b3Igb2YgdGhpcyBjbGFzcyBpcyBtaXNzaW5nIGFuIEFuZ3VsYXIgZGVjb3JhdG9yLlxuXG5QbGVhc2UgY2hlY2sgdGhhdCAxKSB0aGUgdHlwZSBmb3IgdGhlIHBhcmFtZXRlciBhdCBpbmRleCAke3R9IGlzIGNvcnJlY3QgYW5kIDIpIHRoZSBjb3JyZWN0IEFuZ3VsYXIgZGVjb3JhdG9ycyBhcmUgZGVmaW5lZCBmb3IgdGhpcyBjbGFzcyBhbmQgaXRzIGFuY2VzdG9ycy5gOiJpbnZhbGlkIjt0aHJvdyBuZXcgRXJyb3IoZSl9Y29uc3QgenI9VHI7ZnVuY3Rpb24gSXIodCl7Y29uc3QgZT1bXTtmb3IobGV0IG49MDtuPHQubGVuZ3RoO24rKyl7Y29uc3Qgbz10bih0W25dKTtpZihBcnJheS5pc0FycmF5KG8pKXtpZigwPT09by5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJBcmd1bWVudHMgYXJyYXkgbXVzdCBoYXZlIGFyZ3VtZW50cy4iKTtsZXQgdCxuPUhuLkRlZmF1bHQ7Zm9yKGxldCBlPTA7ZTxvLmxlbmd0aDtlKyspe2NvbnN0IGk9b1tlXSxhPWkuX19OR19ESV9GTEFHX187Im51bWJlciI9PXR5cGVvZiBhPy0xPT09YT90PWkudG9rZW46bnw9YTp0PWl9ZS5wdXNoKFRyKHQsbikpfWVsc2UgZS5wdXNoKFRyKG8pKX1yZXR1cm4gZX1mdW5jdGlvbiBIcih0LGUpe3JldHVybiB0Ll9fTkdfRElfRkxBR19fPWUsdC5wcm90b3R5cGUuX19OR19ESV9GTEFHX189ZSx0fWZ1bmN0aW9uIEZyKHQsZSxuLG8pe2NvbnN0IGk9dC5uZ1RlbXBUb2tlblBhdGg7dGhyb3cgZVtTcl0mJmkudW5zaGlmdChlW1NyXSksdC5tZXNzYWdlPShmdW5jdGlvbiBhKHQsZSxuLG89bnVsbCl7dD10JiYiXG4iPT09dC5jaGFyQXQoMCkmJiLJtSI9PXQuY2hhckF0KDEpP3Quc3Vic3RyKDIpOnQ7bGV0IGk9S2UoZSk7aWYoQXJyYXkuaXNBcnJheShlKSlpPWUubWFwKEtlKS5qb2luKCIgLT4gIik7ZWxzZSBpZigib2JqZWN0Ij09dHlwZW9mIGUpe2xldCB0PVtdO2ZvcihsZXQgbiBpbiBlKWlmKGUuaGFzT3duUHJvcGVydHkobikpe2xldCBvPWVbbl07dC5wdXNoKG4rIjoiKygic3RyaW5nIj09dHlwZW9mIG8/SlNPTi5zdHJpbmdpZnkobyk6S2UobykpKX1pPWB7JHt0LmpvaW4oIiwgIil9fWB9cmV0dXJuYCR7bn0ke28/IigiK28rIikiOiIifVske2l9XTogJHt0LnJlcGxhY2Uoa3IsIlxuICAiKX1gfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8pKCJcbiIrdC5tZXNzYWdlLGksbixvKSx0Lm5nVG9rZW5QYXRoPWksdC5uZ1RlbXBUb2tlblBhdGg9bnVsbCx0fWNvbnN0IExyPUhyKEphKCJJbmplY3QiLCh0PT4oe3Rva2VuOnR9KSkpLC0xKSxCcj1IcihKYSgiT3B0aW9uYWwiKSw4KSxWcj1IcihKYSgiU2VsZiIpLDIpLGpyPUhyKEphKCJTa2lwU2VsZiIpLDQpLFVyPUhyKEphKCJIb3N0IiksMSk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpsZXQgV3I9bnVsbDtmdW5jdGlvbiBHcigpe3JldHVybiBXcj1Xcnx8bmV3IHhyfWZ1bmN0aW9uIFlyKHQpe3JldHVybiBxcihHcigpLnBhcmFtZXRlcnModCkpfWZ1bmN0aW9uIHFyKHQpe3JldHVybiB0Lm1hcCgodD0+KGZ1bmN0aW9uIGUodCl7Y29uc3QgZT17dG9rZW46bnVsbCxhdHRyaWJ1dGU6bnVsbCxob3N0OiExLG9wdGlvbmFsOiExLHNlbGY6ITEsc2tpcFNlbGY6ITF9O2lmKEFycmF5LmlzQXJyYXkodCkmJnQubGVuZ3RoPjApZm9yKGxldCBuPTA7bjx0Lmxlbmd0aDtuKyspe2NvbnN0IG89dFtuXTtpZih2b2lkIDA9PT1vKWNvbnRpbnVlO2NvbnN0IGk9T2JqZWN0LmdldFByb3RvdHlwZU9mKG8pO2lmKG8gaW5zdGFuY2VvZiBCcnx8Ik9wdGlvbmFsIj09PWkubmdNZXRhZGF0YU5hbWUpZS5vcHRpb25hbD0hMDtlbHNlIGlmKG8gaW5zdGFuY2VvZiBqcnx8IlNraXBTZWxmIj09PWkubmdNZXRhZGF0YU5hbWUpZS5za2lwU2VsZj0hMDtlbHNlIGlmKG8gaW5zdGFuY2VvZiBWcnx8IlNlbGYiPT09aS5uZ01ldGFkYXRhTmFtZSllLnNlbGY9ITA7ZWxzZSBpZihvIGluc3RhbmNlb2YgVXJ8fCJIb3N0Ij09PWkubmdNZXRhZGF0YU5hbWUpZS5ob3N0PSEwO2Vsc2UgaWYobyBpbnN0YW5jZW9mIExyKWUudG9rZW49by50b2tlbjtlbHNlIGlmKG8gaW5zdGFuY2VvZiAkYSl7aWYodm9pZCAwPT09by5hdHRyaWJ1dGVOYW1lKXRocm93IG5ldyBFcnJvcigiQXR0cmlidXRlIG5hbWUgbXVzdCBiZSBkZWZpbmVkLiIpO2UuYXR0cmlidXRlPW8uYXR0cmlidXRlTmFtZX1lbHNlIGUudG9rZW49b31lbHNlIGUudG9rZW49dm9pZCAwPT09dHx8QXJyYXkuaXNBcnJheSh0KSYmMD09PXQubGVuZ3RoP251bGw6dDtyZXR1cm4gZX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovKSh0KSkpfWZ1bmN0aW9uIFpyKHQpe2NvbnN0IGU9W10sbj1uZXcgTWFwO2Z1bmN0aW9uIG8oZSl7bGV0IG89bi5nZXQoZSk7aWYoIW8pe2NvbnN0IGk9dChlKTtuLnNldChlLG89aS50aGVuKFFyKSl9cmV0dXJuIG99cmV0dXJuIFhyLmZvckVhY2goKCh0LG4pPT57Y29uc3QgaT1bXTt0LnRlbXBsYXRlVXJsJiZpLnB1c2gobyh0LnRlbXBsYXRlVXJsKS50aGVuKChlPT57dC50ZW1wbGF0ZT1lfSkpKTtjb25zdCBhPXQuc3R5bGVVcmxzLHI9dC5zdHlsZXN8fCh0LnN0eWxlcz1bXSkscz10LnN0eWxlcy5sZW5ndGg7YSYmYS5mb3JFYWNoKCgoZSxuKT0+e3IucHVzaCgiIiksaS5wdXNoKG8oZSkudGhlbigobz0+e3JbcytuXT1vLGEuc3BsaWNlKGEuaW5kZXhPZihlKSwxKSwwPT1hLmxlbmd0aCYmKHQuc3R5bGVVcmxzPXZvaWQgMCl9KSkpfSkpO2NvbnN0IGw9UHJvbWlzZS5hbGwoaSkudGhlbigoKCk9PihmdW5jdGlvbiB0KGUpe0tyLmRlbGV0ZShlKX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovKShuKSkpO2UucHVzaChsKX0pKSwoZnVuY3Rpb24gaSgpe2NvbnN0IHQ9WHI7cmV0dXJuIFhyPW5ldyBNYXAsdH0pKCksUHJvbWlzZS5hbGwoZSkudGhlbigoKCk9Pnt9KSl9bGV0IFhyPW5ldyBNYXA7Y29uc3QgS3I9bmV3IFNldDtmdW5jdGlvbiBKcih0KXtyZXR1cm4hISh0LnRlbXBsYXRlVXJsJiYhdC5oYXNPd25Qcm9wZXJ0eSgidGVtcGxhdGUiKXx8dC5zdHlsZVVybHMmJnQuc3R5bGVVcmxzLmxlbmd0aCl9ZnVuY3Rpb24gUXIodCl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0P3Q6dC50ZXh0KCl9bGV0ICRyLHRzO2Z1bmN0aW9uIGVzKCl7aWYodm9pZCAwPT09JHImJigkcj1udWxsLFhuLnRydXN0ZWRUeXBlcykpdHJ5eyRyPVhuLnRydXN0ZWRUeXBlcy5jcmVhdGVQb2xpY3koImFuZ3VsYXIiLHtjcmVhdGVIVE1MOnQ9PnQsY3JlYXRlU2NyaXB0OnQ9PnQsY3JlYXRlU2NyaXB0VVJMOnQ9PnR9KX1jYXRjaCh0KXt9cmV0dXJuICRyfWZ1bmN0aW9uIG5zKHQpe3ZhciBlO3JldHVybihudWxsPT09KGU9ZXMoKSl8fHZvaWQgMD09PWU/dm9pZCAwOmUuY3JlYXRlSFRNTCh0KSl8fHR9ZnVuY3Rpb24gb3MoLi4udCl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGUpdGhyb3cgbmV3IEVycm9yKCJuZXdUcnVzdGVkRnVuY3Rpb25Gb3JEZXYgc2hvdWxkIG5ldmVyIGJlIGNhbGxlZCBpbiBwcm9kdWN0aW9uIik7aWYoIVhuLnRydXN0ZWRUeXBlcylyZXR1cm4gbmV3IEZ1bmN0aW9uKC4uLnQpO2NvbnN0IGU9YChmdW5jdGlvbiBhbm9ueW1vdXMoJHt0LnNsaWNlKDAsLTEpLmpvaW4oIiwiKX1cbikgeyAke3RbdC5sZW5ndGgtMV19XG59KWAsbj1Ybi5ldmFsKChmdW5jdGlvbiBvKHQpe3ZhciBlO3JldHVybihudWxsPT09KGU9ZXMoKSl8fHZvaWQgMD09PWU/dm9pZCAwOmUuY3JlYXRlU2NyaXB0KHQpKXx8dH0pKGUpKTtyZXR1cm4gdm9pZCAwPT09bi5iaW5kP25ldyBGdW5jdGlvbiguLi50KToobi50b1N0cmluZz0oKT0+ZSxuLmJpbmQoWG4pKX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovZnVuY3Rpb24gaXMoKXtpZih2b2lkIDA9PT10cyYmKHRzPW51bGwsWG4udHJ1c3RlZFR5cGVzKSl0cnl7dHM9WG4udHJ1c3RlZFR5cGVzLmNyZWF0ZVBvbGljeSgiYW5ndWxhciN1bnNhZmUtYnlwYXNzIix7Y3JlYXRlSFRNTDp0PT50LGNyZWF0ZVNjcmlwdDp0PT50LGNyZWF0ZVNjcmlwdFVSTDp0PT50fSl9Y2F0Y2godCl7fXJldHVybiB0c31mdW5jdGlvbiBhcyh0KXt2YXIgZTtyZXR1cm4obnVsbD09PShlPWlzKCkpfHx2b2lkIDA9PT1lP3ZvaWQgMDplLmNyZWF0ZUhUTUwodCkpfHx0fWZ1bmN0aW9uIHJzKHQpe3ZhciBlO3JldHVybihudWxsPT09KGU9aXMoKSl8fHZvaWQgMD09PWU/dm9pZCAwOmUuY3JlYXRlU2NyaXB0KHQpKXx8dH1mdW5jdGlvbiBzcyh0KXt2YXIgZTtyZXR1cm4obnVsbD09PShlPWlzKCkpfHx2b2lkIDA9PT1lP3ZvaWQgMDplLmNyZWF0ZVNjcmlwdFVSTCh0KSl8fHR9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NsYXNzIGxze2NvbnN0cnVjdG9yKHQpe3RoaXMuY2hhbmdpbmdUaGlzQnJlYWtzQXBwbGljYXRpb25TZWN1cml0eT10fXRvU3RyaW5nKCl7cmV0dXJuYFNhZmVWYWx1ZSBtdXN0IHVzZSBbcHJvcGVydHldPWJpbmRpbmc6ICR7dGhpcy5jaGFuZ2luZ1RoaXNCcmVha3NBcHBsaWNhdGlvblNlY3VyaXR5fSAoc2VlIGh0dHBzOi8vZy5jby9uZy9zZWN1cml0eSN4c3MpYH19Y2xhc3MgY3MgZXh0ZW5kcyBsc3tnZXRUeXBlTmFtZSgpe3JldHVybiJIVE1MIn19Y2xhc3MgZHMgZXh0ZW5kcyBsc3tnZXRUeXBlTmFtZSgpe3JldHVybiJTdHlsZSJ9fWNsYXNzIHBzIGV4dGVuZHMgbHN7Z2V0VHlwZU5hbWUoKXtyZXR1cm4iU2NyaXB0In19Y2xhc3MgbXMgZXh0ZW5kcyBsc3tnZXRUeXBlTmFtZSgpe3JldHVybiJVUkwifX1jbGFzcyBmcyBleHRlbmRzIGxze2dldFR5cGVOYW1lKCl7cmV0dXJuIlJlc291cmNlVVJMIn19ZnVuY3Rpb24gdXModCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBscz90LmNoYW5naW5nVGhpc0JyZWFrc0FwcGxpY2F0aW9uU2VjdXJpdHk6dH1mdW5jdGlvbiBncyh0LGUpe2NvbnN0IG49aHModCk7aWYobnVsbCE9biYmbiE9PWUpe2lmKCJSZXNvdXJjZVVSTCI9PT1uJiYiVVJMIj09PWUpcmV0dXJuITA7dGhyb3cgbmV3IEVycm9yKGBSZXF1aXJlZCBhIHNhZmUgJHtlfSwgZ290IGEgJHtufSAoc2VlIGh0dHBzOi8vZy5jby9uZy9zZWN1cml0eSN4c3MpYCl9cmV0dXJuIG49PT1lfWZ1bmN0aW9uIGhzKHQpe3JldHVybiB0IGluc3RhbmNlb2YgbHMmJnQuZ2V0VHlwZU5hbWUoKXx8bnVsbH0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmZ1bmN0aW9uIGJzKHQpe2NvbnN0IGU9bmV3IF9zKHQpO3JldHVybihmdW5jdGlvbiBuKCl7dHJ5e3JldHVybiEhKG5ldyB3aW5kb3cuRE9NUGFyc2VyKS5wYXJzZUZyb21TdHJpbmcobnMoIiIpLCJ0ZXh0L2h0bWwiKX1jYXRjaCh0KXtyZXR1cm4hMX19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLykoKT9uZXcgeXMoZSk6ZX1jbGFzcyB5c3tjb25zdHJ1Y3Rvcih0KXt0aGlzLmluZXJ0RG9jdW1lbnRIZWxwZXI9dH1nZXRJbmVydEJvZHlFbGVtZW50KHQpe3Q9Ijxib2R5PjxyZW1vdmU+PC9yZW1vdmU+Iit0O3RyeXtjb25zdCBlPShuZXcgd2luZG93LkRPTVBhcnNlcikucGFyc2VGcm9tU3RyaW5nKG5zKHQpLCJ0ZXh0L2h0bWwiKS5ib2R5O3JldHVybiBudWxsPT09ZT90aGlzLmluZXJ0RG9jdW1lbnRIZWxwZXIuZ2V0SW5lcnRCb2R5RWxlbWVudCh0KTooZS5yZW1vdmVDaGlsZChlLmZpcnN0Q2hpbGQpLGUpfWNhdGNoKHQpe3JldHVybiBudWxsfX19Y2xhc3MgX3N7Y29uc3RydWN0b3IodCl7aWYodGhpcy5kZWZhdWx0RG9jPXQsdGhpcy5pbmVydERvY3VtZW50PXRoaXMuZGVmYXVsdERvYy5pbXBsZW1lbnRhdGlvbi5jcmVhdGVIVE1MRG9jdW1lbnQoInNhbml0aXphdGlvbi1pbmVydCIpLG51bGw9PXRoaXMuaW5lcnREb2N1bWVudC5ib2R5KXtjb25zdCB0PXRoaXMuaW5lcnREb2N1bWVudC5jcmVhdGVFbGVtZW50KCJodG1sIik7dGhpcy5pbmVydERvY3VtZW50LmFwcGVuZENoaWxkKHQpO2NvbnN0IGU9dGhpcy5pbmVydERvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImJvZHkiKTt0LmFwcGVuZENoaWxkKGUpfX1nZXRJbmVydEJvZHlFbGVtZW50KHQpe2NvbnN0IGU9dGhpcy5pbmVydERvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRlbXBsYXRlIik7aWYoImNvbnRlbnQiaW4gZSlyZXR1cm4gZS5pbm5lckhUTUw9bnModCksZTtjb25zdCBuPXRoaXMuaW5lcnREb2N1bWVudC5jcmVhdGVFbGVtZW50KCJib2R5Iik7cmV0dXJuIG4uaW5uZXJIVE1MPW5zKHQpLHRoaXMuZGVmYXVsdERvYy5kb2N1bWVudE1vZGUmJnRoaXMuc3RyaXBDdXN0b21Oc0F0dHJzKG4pLG59c3RyaXBDdXN0b21Oc0F0dHJzKHQpe2NvbnN0IGU9dC5hdHRyaWJ1dGVzO2ZvcihsZXQgbj1lLmxlbmd0aC0xOzA8bjtuLS0pe2NvbnN0IG89ZS5pdGVtKG4pLm5hbWU7InhtbG5zOm5zMSIhPT1vJiYwIT09by5pbmRleE9mKCJuczE6Iil8fHQucmVtb3ZlQXR0cmlidXRlKG8pfWxldCBuPXQuZmlyc3RDaGlsZDtmb3IoO247KW4ubm9kZVR5cGU9PT1Ob2RlLkVMRU1FTlRfTk9ERSYmdGhpcy5zdHJpcEN1c3RvbU5zQXR0cnMobiksbj1uLm5leHRTaWJsaW5nfX1jb25zdCBDcz0vXig/Oig/Omh0dHBzP3xtYWlsdG98ZnRwfHRlbHxmaWxlfHNtcyk6fFteJjovPyNdKig/OlsvPyNdfCQpKS9naSxNcz0vXmRhdGE6KD86aW1hZ2VcLyg/OmJtcHxnaWZ8anBlZ3xqcGd8cG5nfHRpZmZ8d2VicCl8dmlkZW9cLyg/Om1wZWd8bXA0fG9nZ3x3ZWJtKXxhdWRpb1wvKD86bXAzfG9nYXxvZ2d8b3B1cykpO2Jhc2U2NCxbYS16MC05K1wvXSs9KiQvaTtmdW5jdGlvbiB2cyh0KXtyZXR1cm4odD1TdHJpbmcodCkpLm1hdGNoKENzKXx8dC5tYXRjaChNcyk/dDooKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZjb25zb2xlLndhcm4oYFdBUk5JTkc6IHNhbml0aXppbmcgdW5zYWZlIFVSTCB2YWx1ZSAke3R9IChzZWUgaHR0cHM6Ly9nLmNvL25nL3NlY3VyaXR5I3hzcylgKSwidW5zYWZlOiIrdCl9ZnVuY3Rpb24geHModCl7cmV0dXJuKHQ9U3RyaW5nKHQpKS5zcGxpdCgiLCIpLm1hcCgodD0+dnModC50cmltKCkpKSkuam9pbigiLCAiKX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovZnVuY3Rpb24gT3ModCl7Y29uc3QgZT17fTtmb3IoY29uc3QgbiBvZiB0LnNwbGl0KCIsIikpZVtuXT0hMDtyZXR1cm4gZX1mdW5jdGlvbiBQcyguLi50KXtjb25zdCBlPXt9O2Zvcihjb25zdCBuIG9mIHQpZm9yKGNvbnN0IHQgaW4gbiluLmhhc093blByb3BlcnR5KHQpJiYoZVt0XT0hMCk7cmV0dXJuIGV9Y29uc3Qgd3M9T3MoImFyZWEsYnIsY29sLGhyLGltZyx3YnIiKSxrcz1PcygiY29sZ3JvdXAsZGQsZHQsbGkscCx0Ym9keSx0ZCx0Zm9vdCx0aCx0aGVhZCx0ciIpLFNzPU9zKCJycCxydCIpLERzPVBzKFNzLGtzKSxScz1QcyhrcyxPcygiYWRkcmVzcyxhcnRpY2xlLGFzaWRlLGJsb2NrcXVvdGUsY2FwdGlvbixjZW50ZXIsZGVsLGRldGFpbHMsZGlhbG9nLGRpcixkaXYsZGwsZmlndXJlLGZpZ2NhcHRpb24sZm9vdGVyLGgxLGgyLGgzLGg0LGg1LGg2LGhlYWRlcixoZ3JvdXAsaHIsaW5zLG1haW4sbWFwLG1lbnUsbmF2LG9sLHByZSxzZWN0aW9uLHN1bW1hcnksdGFibGUsdWwiKSksRXM9UHMoU3MsT3MoImEsYWJicixhY3JvbnltLGF1ZGlvLGIsYmRpLGJkbyxiaWcsYnIsY2l0ZSxjb2RlLGRlbCxkZm4sZW0sZm9udCxpLGltZyxpbnMsa2JkLGxhYmVsLG1hcCxtYXJrLHBpY3R1cmUscSxydWJ5LHJwLHJ0LHMsc2FtcCxzbWFsbCxzb3VyY2Usc3BhbixzdHJpa2Usc3Ryb25nLHN1YixzdXAsdGltZSx0cmFjayx0dCx1LHZhcix2aWRlbyIpKSxBcz1Qcyh3cyxScyxFcyxEcyksVHM9T3MoImJhY2tncm91bmQsY2l0ZSxocmVmLGl0ZW10eXBlLGxvbmdkZXNjLHBvc3RlcixzcmMseGxpbms6aHJlZiIpLE5zPU9zKCJzcmNzZXQiKSx6cz1PcygiYWJicixhY2Nlc3NrZXksYWxpZ24sYWx0LGF1dG9wbGF5LGF4aXMsYmdjb2xvcixib3JkZXIsY2VsbHBhZGRpbmcsY2VsbHNwYWNpbmcsY2xhc3MsY2xlYXIsY29sb3IsY29scyxjb2xzcGFuLGNvbXBhY3QsY29udHJvbHMsY29vcmRzLGRhdGV0aW1lLGRlZmF1bHQsZGlyLGRvd25sb2FkLGZhY2UsaGVhZGVycyxoZWlnaHQsaGlkZGVuLGhyZWZsYW5nLGhzcGFjZSxpc21hcCxpdGVtc2NvcGUsaXRlbXByb3Asa2luZCxsYWJlbCxsYW5nLGxhbmd1YWdlLGxvb3AsbWVkaWEsbXV0ZWQsbm9ocmVmLG5vd3JhcCxvcGVuLHByZWxvYWQscmVsLHJldixyb2xlLHJvd3Mscm93c3BhbixydWxlcyxzY29wZSxzY3JvbGxpbmcsc2hhcGUsc2l6ZSxzaXplcyxzcGFuLHNyY2xhbmcsc3RhcnQsc3VtbWFyeSx0YWJpbmRleCx0YXJnZXQsdGl0bGUsdHJhbnNsYXRlLHR5cGUsdXNlbWFwLHZhbGlnbix2YWx1ZSx2c3BhY2Usd2lkdGgiKSxJcz1PcygiYXJpYS1hY3RpdmVkZXNjZW5kYW50LGFyaWEtYXRvbWljLGFyaWEtYXV0b2NvbXBsZXRlLGFyaWEtYnVzeSxhcmlhLWNoZWNrZWQsYXJpYS1jb2xjb3VudCxhcmlhLWNvbGluZGV4LGFyaWEtY29sc3BhbixhcmlhLWNvbnRyb2xzLGFyaWEtY3VycmVudCxhcmlhLWRlc2NyaWJlZGJ5LGFyaWEtZGV0YWlscyxhcmlhLWRpc2FibGVkLGFyaWEtZHJvcGVmZmVjdCxhcmlhLWVycm9ybWVzc2FnZSxhcmlhLWV4cGFuZGVkLGFyaWEtZmxvd3RvLGFyaWEtZ3JhYmJlZCxhcmlhLWhhc3BvcHVwLGFyaWEtaGlkZGVuLGFyaWEtaW52YWxpZCxhcmlhLWtleXNob3J0Y3V0cyxhcmlhLWxhYmVsLGFyaWEtbGFiZWxsZWRieSxhcmlhLWxldmVsLGFyaWEtbGl2ZSxhcmlhLW1vZGFsLGFyaWEtbXVsdGlsaW5lLGFyaWEtbXVsdGlzZWxlY3RhYmxlLGFyaWEtb3JpZW50YXRpb24sYXJpYS1vd25zLGFyaWEtcGxhY2Vob2xkZXIsYXJpYS1wb3NpbnNldCxhcmlhLXByZXNzZWQsYXJpYS1yZWFkb25seSxhcmlhLXJlbGV2YW50LGFyaWEtcmVxdWlyZWQsYXJpYS1yb2xlZGVzY3JpcHRpb24sYXJpYS1yb3djb3VudCxhcmlhLXJvd2luZGV4LGFyaWEtcm93c3BhbixhcmlhLXNlbGVjdGVkLGFyaWEtc2V0c2l6ZSxhcmlhLXNvcnQsYXJpYS12YWx1ZW1heCxhcmlhLXZhbHVlbWluLGFyaWEtdmFsdWVub3csYXJpYS12YWx1ZXRleHQiKSxIcz1QcyhUcyxOcyx6cyxJcyksRnM9T3MoInNjcmlwdCxzdHlsZSx0ZW1wbGF0ZSIpO2NsYXNzIExze2NvbnN0cnVjdG9yKCl7dGhpcy5zYW5pdGl6ZWRTb21ldGhpbmc9ITEsdGhpcy5idWY9W119c2FuaXRpemVDaGlsZHJlbih0KXtsZXQgZT10LmZpcnN0Q2hpbGQsbj0hMDtmb3IoO2U7KWlmKGUubm9kZVR5cGU9PT1Ob2RlLkVMRU1FTlRfTk9ERT9uPXRoaXMuc3RhcnRFbGVtZW50KGUpOmUubm9kZVR5cGU9PT1Ob2RlLlRFWFRfTk9ERT90aGlzLmNoYXJzKGUubm9kZVZhbHVlKTp0aGlzLnNhbml0aXplZFNvbWV0aGluZz0hMCxuJiZlLmZpcnN0Q2hpbGQpZT1lLmZpcnN0Q2hpbGQ7ZWxzZSBmb3IoO2U7KXtlLm5vZGVUeXBlPT09Tm9kZS5FTEVNRU5UX05PREUmJnRoaXMuZW5kRWxlbWVudChlKTtsZXQgdD10aGlzLmNoZWNrQ2xvYmJlcmVkRWxlbWVudChlLGUubmV4dFNpYmxpbmcpO2lmKHQpe2U9dDticmVha31lPXRoaXMuY2hlY2tDbG9iYmVyZWRFbGVtZW50KGUsZS5wYXJlbnROb2RlKX1yZXR1cm4gdGhpcy5idWYuam9pbigiIil9c3RhcnRFbGVtZW50KHQpe2NvbnN0IGU9dC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO2lmKCFBcy5oYXNPd25Qcm9wZXJ0eShlKSlyZXR1cm4gdGhpcy5zYW5pdGl6ZWRTb21ldGhpbmc9ITAsIUZzLmhhc093blByb3BlcnR5KGUpO3RoaXMuYnVmLnB1c2goIjwiKSx0aGlzLmJ1Zi5wdXNoKGUpO2NvbnN0IG49dC5hdHRyaWJ1dGVzO2ZvcihsZXQgdD0wO3Q8bi5sZW5ndGg7dCsrKXtjb25zdCBlPW4uaXRlbSh0KSxvPWUubmFtZSxpPW8udG9Mb3dlckNhc2UoKTtpZighSHMuaGFzT3duUHJvcGVydHkoaSkpe3RoaXMuc2FuaXRpemVkU29tZXRoaW5nPSEwO2NvbnRpbnVlfWxldCBhPWUudmFsdWU7VHNbaV0mJihhPXZzKGEpKSxOc1tpXSYmKGE9eHMoYSkpLHRoaXMuYnVmLnB1c2goIiAiLG8sJz0iJyxqcyhhKSwnIicpfXJldHVybiB0aGlzLmJ1Zi5wdXNoKCI+IiksITB9ZW5kRWxlbWVudCh0KXtjb25zdCBlPXQubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtBcy5oYXNPd25Qcm9wZXJ0eShlKSYmIXdzLmhhc093blByb3BlcnR5KGUpJiYodGhpcy5idWYucHVzaCgiPC8iKSx0aGlzLmJ1Zi5wdXNoKGUpLHRoaXMuYnVmLnB1c2goIj4iKSl9Y2hhcnModCl7dGhpcy5idWYucHVzaChqcyh0KSl9Y2hlY2tDbG9iYmVyZWRFbGVtZW50KHQsZSl7aWYoZSYmKHQuY29tcGFyZURvY3VtZW50UG9zaXRpb24oZSkmTm9kZS5ET0NVTUVOVF9QT1NJVElPTl9DT05UQUlORURfQlkpPT09Tm9kZS5ET0NVTUVOVF9QT1NJVElPTl9DT05UQUlORURfQlkpdGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgdG8gc2FuaXRpemUgaHRtbCBiZWNhdXNlIHRoZSBlbGVtZW50IGlzIGNsb2JiZXJlZDogJHt0Lm91dGVySFRNTH1gKTtyZXR1cm4gZX19Y29uc3QgQnM9L1tcdUQ4MDAtXHVEQkZGXVtcdURDMDAtXHVERkZGXS9nLFZzPS8oW15cIy1+IHwhXSkvZztmdW5jdGlvbiBqcyh0KXtyZXR1cm4gdC5yZXBsYWNlKC8mL2csIiZhbXA7IikucmVwbGFjZShCcywoZnVuY3Rpb24odCl7cmV0dXJuIiYjIisoMTAyNCoodC5jaGFyQ29kZUF0KDApLTU1Mjk2KSsodC5jaGFyQ29kZUF0KDEpLTU2MzIwKSs2NTUzNikrIjsifSkpLnJlcGxhY2UoVnMsKGZ1bmN0aW9uKHQpe3JldHVybiImIyIrdC5jaGFyQ29kZUF0KDApKyI7In0pKS5yZXBsYWNlKC88L2csIiZsdDsiKS5yZXBsYWNlKC8+L2csIiZndDsiKX1sZXQgVXM7ZnVuY3Rpb24gV3ModCxlKXtsZXQgbj1udWxsO3RyeXtVcz1Vc3x8YnModCk7bGV0IG89ZT9TdHJpbmcoZSk6IiI7bj1Vcy5nZXRJbmVydEJvZHlFbGVtZW50KG8pO2xldCBpPTUsYT1vO2Rve2lmKDA9PT1pKXRocm93IG5ldyBFcnJvcigiRmFpbGVkIHRvIHNhbml0aXplIGh0bWwgYmVjYXVzZSB0aGUgaW5wdXQgaXMgdW5zdGFibGUiKTtpLS0sbz1hLGE9bi5pbm5lckhUTUwsbj1Vcy5nZXRJbmVydEJvZHlFbGVtZW50KG8pfXdoaWxlKG8hPT1hKTtjb25zdCByPW5ldyBMcyxzPXIuc2FuaXRpemVDaGlsZHJlbihHcyhuKXx8bik7cmV0dXJuKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZyLnNhbml0aXplZFNvbWV0aGluZyYmY29uc29sZS53YXJuKCJXQVJOSU5HOiBzYW5pdGl6aW5nIEhUTUwgc3RyaXBwZWQgc29tZSBjb250ZW50LCBzZWUgaHR0cHM6Ly9nLmNvL25nL3NlY3VyaXR5I3hzcyIpLG5zKHMpfWZpbmFsbHl7aWYobil7Y29uc3QgdD1HcyhuKXx8bjtmb3IoO3QuZmlyc3RDaGlsZDspdC5yZW1vdmVDaGlsZCh0LmZpcnN0Q2hpbGQpfX19ZnVuY3Rpb24gR3ModCl7cmV0dXJuImNvbnRlbnQiaW4gdCYmKGZ1bmN0aW9uIGUodCl7cmV0dXJuIHQubm9kZVR5cGU9PT1Ob2RlLkVMRU1FTlRfTk9ERSYmIlRFTVBMQVRFIj09PXQubm9kZU5hbWV9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLykodCk/dC5jb250ZW50Om51bGx9dmFyIFlzOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KZnVuY3Rpb24gcXModCl7Y29uc3QgZT1lbCgpO3JldHVybiBlP2FzKGUuc2FuaXRpemUoWXMuSFRNTCx0KXx8IiIpOmdzKHQsIkhUTUwiKT9hcyh1cyh0KSk6V3MoaWkoKSxybih0KSl9ZnVuY3Rpb24gWnModCl7Y29uc3QgZT1lbCgpO3JldHVybiBlP2Uuc2FuaXRpemUoWXMuU1RZTEUsdCl8fCIiOmdzKHQsIlN0eWxlIik/dXModCk6cm4odCl9ZnVuY3Rpb24gWHModCl7Y29uc3QgZT1lbCgpO3JldHVybiBlP2Uuc2FuaXRpemUoWXMuVVJMLHQpfHwiIjpncyh0LCJVUkwiKT91cyh0KTp2cyhybih0KSl9ZnVuY3Rpb24gS3ModCl7Y29uc3QgZT1lbCgpO2lmKGUpcmV0dXJuIHNzKGUuc2FuaXRpemUoWXMuUkVTT1VSQ0VfVVJMLHQpfHwiIik7aWYoZ3ModCwiUmVzb3VyY2VVUkwiKSlyZXR1cm4gc3ModXModCkpO3Rocm93IG5ldyBFcnJvcigidW5zYWZlIHZhbHVlIHVzZWQgaW4gYSByZXNvdXJjZSBVUkwgY29udGV4dCAoc2VlIGh0dHBzOi8vZy5jby9uZy9zZWN1cml0eSN4c3MpIil9ZnVuY3Rpb24gSnModCl7Y29uc3QgZT1lbCgpO2lmKGUpcmV0dXJuIHJzKGUuc2FuaXRpemUoWXMuU0NSSVBULHQpfHwiIik7aWYoZ3ModCwiU2NyaXB0IikpcmV0dXJuIHJzKHVzKHQpKTt0aHJvdyBuZXcgRXJyb3IoInVuc2FmZSB2YWx1ZSB1c2VkIGluIGEgc2NyaXB0IGNvbnRleHQiKX1mdW5jdGlvbiBRcyh0KXtpZihuZ0Rldk1vZGUmJighQXJyYXkuaXNBcnJheSh0KXx8IUFycmF5LmlzQXJyYXkodC5yYXcpfHwxIT09dC5sZW5ndGgpKXRocm93IG5ldyBFcnJvcihgVW5leHBlY3RlZCBpbnRlcnBvbGF0aW9uIGluIHRydXN0ZWQgSFRNTCBjb25zdGFudDogJHt0LmpvaW4oIj8iKX1gKTtyZXR1cm4gbnModFswXSl9ZnVuY3Rpb24gJHModCl7aWYobmdEZXZNb2RlJiYoIUFycmF5LmlzQXJyYXkodCl8fCFBcnJheS5pc0FycmF5KHQucmF3KXx8MSE9PXQubGVuZ3RoKSl0aHJvdyBuZXcgRXJyb3IoYFVuZXhwZWN0ZWQgaW50ZXJwb2xhdGlvbiBpbiB0cnVzdGVkIFVSTCBjb25zdGFudDogJHt0LmpvaW4oIj8iKX1gKTtyZXR1cm4oZnVuY3Rpb24gZSh0KXt2YXIgZTtyZXR1cm4obnVsbD09PShlPWVzKCkpfHx2b2lkIDA9PT1lP3ZvaWQgMDplLmNyZWF0ZVNjcmlwdFVSTCh0KSl8fHR9KSh0WzBdKX1mdW5jdGlvbiB0bCh0LGUsbil7cmV0dXJuKGZ1bmN0aW9uIG8odCxlKXtyZXR1cm4ic3JjIj09PWUmJigiZW1iZWQiPT09dHx8ImZyYW1lIj09PXR8fCJpZnJhbWUiPT09dHx8Im1lZGlhIj09PXR8fCJzY3JpcHQiPT09dCl8fCJocmVmIj09PWUmJigiYmFzZSI9PT10fHwibGluayI9PT10KT9LczpYc30pKGUsbikodCl9ZnVuY3Rpb24gZWwoKXtjb25zdCB0PXhpKCk7cmV0dXJuIHQmJnRbMTJdfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9mdW5jdGlvbiBubCh0KXtsZXQgZT1ybCh0KTtpZihlKXtpZihBcnJheS5pc0FycmF5KGUpKXtjb25zdCBuPWU7bGV0IG8saSxhO2lmKChmdW5jdGlvbiBuKHQpe3JldHVybiB0JiZ0LmNvbnN0cnVjdG9yJiZ0LmNvbnN0cnVjdG9yLsm1Y21wfSkodCkpe2lmKG89ZGwobix0KSwtMT09byl0aHJvdyBuZXcgRXJyb3IoIlRoZSBwcm92aWRlZCBjb21wb25lbnQgd2FzIG5vdCBmb3VuZCBpbiB0aGUgYXBwbGljYXRpb24iKTtpPXR9ZWxzZSBpZigoZnVuY3Rpb24gbyh0KXtyZXR1cm4gdCYmdC5jb25zdHJ1Y3RvciYmdC5jb25zdHJ1Y3Rvci7JtWRpcn0pKHQpKXtpZihvPShmdW5jdGlvbiBpKHQsZSl7bGV0IG49dFsxXS5maXJzdENoaWxkO2Zvcig7bjspe2NvbnN0IG89bi5kaXJlY3RpdmVFbmQ7Zm9yKGxldCBpPW4uZGlyZWN0aXZlU3RhcnQ7aTxvO2krKylpZih0W2ldPT09ZSlyZXR1cm4gbi5pbmRleDtuPWNsKG4pfXJldHVybi0xfSkobix0KSwtMT09byl0aHJvdyBuZXcgRXJyb3IoIlRoZSBwcm92aWRlZCBkaXJlY3RpdmUgd2FzIG5vdCBmb3VuZCBpbiB0aGUgYXBwbGljYXRpb24iKTthPXBsKG8sbiwhMSl9ZWxzZSBpZihvPWxsKG4sdCksLTE9PW8pcmV0dXJuIG51bGw7Y29uc3Qgcj1saShuW29dKSxzPXJsKHIpLGw9cyYmIUFycmF5LmlzQXJyYXkocyk/czpvbChuLG8scik7aWYoaSYmdm9pZCAwPT09bC5jb21wb25lbnQmJihsLmNvbXBvbmVudD1pLGFsKGwuY29tcG9uZW50LGwpKSxhJiZ2b2lkIDA9PT1sLmRpcmVjdGl2ZXMpe2wuZGlyZWN0aXZlcz1hO2ZvcihsZXQgdD0wO3Q8YS5sZW5ndGg7dCsrKWFsKGFbdF0sbCl9YWwobC5uYXRpdmUsbCksZT1sfX1lbHNle2NvbnN0IG49dDtuZ0Rldk1vZGUmJlBuKG4pO2xldCBvPW47Zm9yKDtvPW8ucGFyZW50Tm9kZTspe2NvbnN0IHQ9cmwobyk7aWYodCl7bGV0IG87aWYobz1BcnJheS5pc0FycmF5KHQpP3Q6dC5sVmlldywhbylyZXR1cm4gbnVsbDtjb25zdCBpPWxsKG8sbik7aWYoaT49MCl7Y29uc3QgdD1saShvW2ldKSxuPW9sKG8saSx0KTthbCh0LG4pLGU9bjticmVha319fX1yZXR1cm4gZXx8bnVsbH1mdW5jdGlvbiBvbCh0LGUsbil7cmV0dXJue2xWaWV3OnQsbm9kZUluZGV4OmUsbmF0aXZlOm4sY29tcG9uZW50OnZvaWQgMCxkaXJlY3RpdmVzOnZvaWQgMCxsb2NhbFJlZnM6dm9pZCAwfX1mdW5jdGlvbiBpbCh0KXtsZXQgZSxuPXJsKHQpO2lmKEFycmF5LmlzQXJyYXkobikpe2NvbnN0IG89ZGwobix0KTtlPWZpKG8sbik7Y29uc3QgaT1vbChuLG8sZVswXSk7aS5jb21wb25lbnQ9dCxhbCh0LGkpLGFsKGkubmF0aXZlLGkpfWVsc2V7ZT1maShuLm5vZGVJbmRleCxuLmxWaWV3KX1yZXR1cm4gZX0hKGZ1bmN0aW9uKHQpe3RbdC5OT05FPTBdPSJOT05FIix0W3QuSFRNTD0xXT0iSFRNTCIsdFt0LlNUWUxFPTJdPSJTVFlMRSIsdFt0LlNDUklQVD0zXT0iU0NSSVBUIix0W3QuVVJMPTRdPSJVUkwiLHRbdC5SRVNPVVJDRV9VUkw9NV09IlJFU09VUkNFX1VSTCJ9KShZc3x8KFlzPXt9KSk7ZnVuY3Rpb24gYWwodCxlKXtuZ0Rldk1vZGUmJnhuKHQsIlRhcmdldCBleHBlY3RlZCIpLHQuX19uZ0NvbnRleHRfXz1lfWZ1bmN0aW9uIHJsKHQpe3JldHVybiBuZ0Rldk1vZGUmJnhuKHQsIlRhcmdldCBleHBlY3RlZCIpLHQuX19uZ0NvbnRleHRfX3x8bnVsbH1mdW5jdGlvbiBzbCh0KXtjb25zdCBlPXJsKHQpO3JldHVybiBlP0FycmF5LmlzQXJyYXkoZSk/ZTplLmxWaWV3Om51bGx9ZnVuY3Rpb24gbGwodCxlKXtjb25zdCBuPXRbMV07Zm9yKGxldCBvPXZvO288bi5iaW5kaW5nU3RhcnRJbmRleDtvKyspaWYobGkodFtvXSk9PT1lKXJldHVybiBvO3JldHVybi0xfWZ1bmN0aW9uIGNsKHQpe2lmKHQuY2hpbGQpcmV0dXJuIHQuY2hpbGQ7aWYodC5uZXh0KXJldHVybiB0Lm5leHQ7Zm9yKDt0LnBhcmVudCYmIXQucGFyZW50Lm5leHQ7KXQ9dC5wYXJlbnQ7cmV0dXJuIHQucGFyZW50JiZ0LnBhcmVudC5uZXh0fWZ1bmN0aW9uIGRsKHQsZSl7Y29uc3Qgbj10WzFdLmNvbXBvbmVudHM7aWYobilmb3IobGV0IG89MDtvPG4ubGVuZ3RoO28rKyl7Y29uc3QgaT1uW29dO2lmKGZpKGksdClbOF09PT1lKXJldHVybiBpfWVsc2V7aWYoZmkodm8sdClbOF09PT1lKXJldHVybiB2b31yZXR1cm4tMX1mdW5jdGlvbiBwbCh0LGUsbil7Y29uc3Qgbz1lWzFdLmRhdGFbdF07bGV0IGk9by5kaXJlY3RpdmVTdGFydDtpZigwPT1pKXJldHVybiBRbjtyZXR1cm4hbiYmMiZvLmZsYWdzJiZpKyssZS5zbGljZShpLG8uZGlyZWN0aXZlRW5kKX1mdW5jdGlvbiBtbCh0KXtyZXR1cm4gdC5uZ09yaWdpbmFsRXJyb3J9ZnVuY3Rpb24gZmwodCwuLi5lKXt0LmVycm9yKC4uLmUpfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jbGFzcyB1bHtjb25zdHJ1Y3Rvcigpe3RoaXMuX2NvbnNvbGU9Y29uc29sZX1oYW5kbGVFcnJvcih0KXtjb25zdCBlPXRoaXMuX2ZpbmRPcmlnaW5hbEVycm9yKHQpLG49dGhpcy5fZmluZENvbnRleHQodCksbz0oZnVuY3Rpb24gaSh0KXtyZXR1cm4gdCYmdC5uZ0Vycm9yTG9nZ2VyfHxmbH0pKHQpO28odGhpcy5fY29uc29sZSwiRVJST1IiLHQpLGUmJm8odGhpcy5fY29uc29sZSwiT1JJR0lOQUwgRVJST1IiLGUpLG4mJm8odGhpcy5fY29uc29sZSwiRVJST1IgQ09OVEVYVCIsbil9X2ZpbmRDb250ZXh0KHQpe3JldHVybiB0PyhmdW5jdGlvbiBlKHQpe3JldHVybiB0Lm5nRGVidWdDb250ZXh0fSkodCl8fHRoaXMuX2ZpbmRDb250ZXh0KG1sKHQpKTpudWxsfV9maW5kT3JpZ2luYWxFcnJvcih0KXtsZXQgZT10JiZtbCh0KTtmb3IoO2UmJm1sKGUpOyllPW1sKGUpO3JldHVybiBlfHxudWxsfX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY29uc3QgZ2w9e25hbWU6ImN1c3RvbS1lbGVtZW50cyJ9LGhsPXtuYW1lOiJuby1lcnJvcnMtc2NoZW1hIn0sYmw9L14+fF4tPnw8IS0tfC0tPnwtLSE+fDwhLSQvZyx5bD0vKDx8PikvO2Z1bmN0aW9uIF9sKHQpe3JldHVybiB0LnJlcGxhY2UoYmwsKHQ9PnQucmVwbGFjZSh5bCwi4oCLJDHigIsiKSkpfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9mdW5jdGlvbiBDbCh0KXtpZighbmdEZXZNb2RlKXRocm93IG5ldyBFcnJvcigiTG9va3MgbGlrZSB3ZSBhcmUgaW4gJ3Byb2QgbW9kZScsIGJ1dCB3ZSBhcmUgY3JlYXRpbmcgYSBuYW1lZCBBcnJheSB0eXBlLCB3aGljaCBpcyB3cm9uZyEgQ2hlY2sgeW91ciBjb2RlIik7dHJ5e3JldHVybiBvcygiQXJyYXkiLGByZXR1cm4gY2xhc3MgJHt0fSBleHRlbmRzIEFycmF5e31gKShBcnJheSl9Y2F0Y2godCl7cmV0dXJuIEFycmF5fX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovZnVuY3Rpb24gTWwodCl7cmV0dXJuYG5nLXJlZmxlY3QtJHt0PShmdW5jdGlvbiBlKHQpe3JldHVybiB0LnJlcGxhY2UodmwsKCguLi50KT0+Ii0iK3RbMV0udG9Mb3dlckNhc2UoKSkpfSkodC5yZXBsYWNlKC9bJEBdL2csIl8iKSl9YH1jb25zdCB2bD0vKFtBLVpdKS9nOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY29uc3QgeGw9KCJ1bmRlZmluZWQiIT10eXBlb2YgcmVxdWVzdEFuaW1hdGlvbkZyYW1lJiZyZXF1ZXN0QW5pbWF0aW9uRnJhbWV8fHNldFRpbWVvdXQpLmJpbmQoWG4pO2Z1bmN0aW9uIE9sKHQpe3JldHVybiB0Lm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXd9ZnVuY3Rpb24gUGwodCl7cmV0dXJuIHQub3duZXJEb2N1bWVudH1mdW5jdGlvbiB3bCh0KXtyZXR1cm4gdC5vd25lckRvY3VtZW50LmJvZHl9Y29uc3Qga2w9Iu+/vSI7ZnVuY3Rpb24gU2wodCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBGdW5jdGlvbj90KCk6dH0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovZnVuY3Rpb24gRGwodCl7dGhyb3cgbmV3IG5uKCIzMDAiLGBNdWx0aXBsZSBjb21wb25lbnRzIG1hdGNoIG5vZGUgd2l0aCB0YWduYW1lICR7dC52YWx1ZX1gKX1mdW5jdGlvbiBSbCh0LGUsbixvLGkpe2NvbnN0W2EsciwuLi5zXT1vLnNwbGl0KGtsKTtsZXQgbD1yLGM9cjtmb3IobGV0IG89MDtvPHMubGVuZ3RoO28rKyl7Y29uc3QgYT1lK287bCs9YCR7dFthXX0ke3Nbb119YCxjKz1gJHthPT09bj9pOnRbYV19JHtzW29dfWB9cmV0dXJue3Byb3BOYW1lOmEsb2xkVmFsdWU6bCxuZXdWYWx1ZTpjfX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCnZhciBFbDsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmxldCBBbDtmdW5jdGlvbiBUbCh0LGUpe3JldHVybiBBbCh0LGUpfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KZnVuY3Rpb24gTmwodCl7bmdEZXZNb2RlJiZGbyh0KTtjb25zdCBlPXRbM107cmV0dXJuIHdvKGUpP2VbM106ZX1mdW5jdGlvbiB6bCh0KXtjb25zdCBlPShmdW5jdGlvbiBuKHQpe25nRGV2TW9kZSYmeG4odCwiY29tcG9uZW50Iik7bGV0IGU9UG8odCk/dDpzbCh0KTtmb3IoO2UmJiEoNTEyJmVbMl0pOyllPU5sKGUpO3JldHVybiBuZ0Rldk1vZGUmJkZvKGUpLGV9KSh0KTtyZXR1cm4gbmdEZXZNb2RlJiZ4bihlWzhdLCJSb290VmlldyBoYXMgbm8gY29udGV4dC4gUGVyaGFwcyBpdCBpcyBkaXNjb25uZWN0ZWQ/IiksZVs4XX1mdW5jdGlvbiBJbCh0KXtyZXR1cm4gRmwodFsxM10pfWZ1bmN0aW9uIEhsKHQpe3JldHVybiBGbCh0WzRdKX1mdW5jdGlvbiBGbCh0KXtmb3IoO251bGwhPT10JiYhd28odCk7KXQ9dFs0XTtyZXR1cm4gdH1mdW5jdGlvbiBMbCh0LGUsbixvLGkpe2lmKG51bGwhPW8pe2xldCBhLHI9ITE7d28obyk/YT1vOlBvKG8pJiYocj0hMCxuZ0Rldk1vZGUmJnhuKG9bMF0sIkhPU1QgbXVzdCBiZSBkZWZpbmVkIGZvciBhIGNvbXBvbmVudCBMVmlldyIpLG89b1swXSk7Y29uc3Qgcz1saShvKTtuZ0Rldk1vZGUmJiFyaShlKSYmUG4ocyksMD09PXQmJm51bGwhPT1uP251bGw9PWk/UWwoZSxuLHMpOkpsKGUsbixzLGl8fG51bGwsITApOjE9PT10JiZudWxsIT09bj9KbChlLG4scyxpfHxudWxsLCEwKToyPT09dD9kYyhlLHMscik6Mz09PXQmJihuZ0Rldk1vZGUmJm5nRGV2TW9kZS5yZW5kZXJlckRlc3Ryb3lOb2RlKyssZS5kZXN0cm95Tm9kZShzKSksbnVsbCE9YSYmKGZ1bmN0aW9uIGEodCxlLG4sbyxpKXtuZ0Rldk1vZGUmJklvKG4pO2NvbnN0IGE9bls3XSxyPWxpKG4pO2EhPT1yJiZMbChlLHQsbyxhLGkpO2ZvcihsZXQgaT1PbztpPG4ubGVuZ3RoO2krKyl7Y29uc3Qgcj1uW2ldO21jKHJbMV0scix0LGUsbyxhKX19KShlLHQsYSxuLGkpfX1mdW5jdGlvbiBCbCh0LGUpe3JldHVybiBuZ0Rldk1vZGUmJm5nRGV2TW9kZS5yZW5kZXJlckNyZWF0ZVRleHROb2RlKyssbmdEZXZNb2RlJiZuZ0Rldk1vZGUucmVuZGVyZXJTZXRUZXh0KysscmkodCk/dC5jcmVhdGVUZXh0KGUpOnQuY3JlYXRlVGV4dE5vZGUoZSl9ZnVuY3Rpb24gVmwodCxlLG4pe25nRGV2TW9kZSYmbmdEZXZNb2RlLnJlbmRlcmVyU2V0VGV4dCsrLHJpKHQpP3Quc2V0VmFsdWUoZSxuKTplLnRleHRDb250ZW50PW59ZnVuY3Rpb24gamwodCxlKXtyZXR1cm4gbmdEZXZNb2RlJiZuZ0Rldk1vZGUucmVuZGVyZXJDcmVhdGVDb21tZW50KyssdC5jcmVhdGVDb21tZW50KF9sKGUpKX1mdW5jdGlvbiBVbCh0LGUsbil7cmV0dXJuIG5nRGV2TW9kZSYmbmdEZXZNb2RlLnJlbmRlcmVyQ3JlYXRlRWxlbWVudCsrLHJpKHQpP3QuY3JlYXRlRWxlbWVudChlLG4pOm51bGw9PT1uP3QuY3JlYXRlRWxlbWVudChlKTp0LmNyZWF0ZUVsZW1lbnROUyhuLGUpfWZ1bmN0aW9uIFdsKHQsZSxuLG8pe25nRGV2TW9kZSYmRm8oZSksbmdEZXZNb2RlJiZJbyhuKTtjb25zdCBpPU9vK28sYT1uLmxlbmd0aDtvPjAmJihuW2ktMV1bNF09ZSksbzxhLU9vPyhlWzRdPW5baV0sZnIobixPbytvLGUpKToobi5wdXNoKGUpLGVbNF09bnVsbCksZVszXT1uO2NvbnN0IHI9ZVsxN107bnVsbCE9PXImJm4hPT1yJiYoZnVuY3Rpb24gcyh0LGUpe25nRGV2TW9kZSYmeG4oZSwiTFZpZXcgcmVxdWlyZWQiKSxuZ0Rldk1vZGUmJklvKHQpO2NvbnN0IG49dFs5XSxvPWVbM107bmdEZXZNb2RlJiZJbyhvKTtjb25zdCBpPW9bM11bMTZdO25nRGV2TW9kZSYmeG4oaSwiTWlzc2luZyBpbnNlcnRlZENvbXBvbmVudExWaWV3Iik7Y29uc3QgYT1lWzE2XTtuZ0Rldk1vZGUmJnhuKGEsIk1pc3NpbmcgZGVjbGFyZWRDb21wb25lbnRMVmlldyIpLGEhPT1pJiYodFsyXT0hMCk7bnVsbD09PW4/dFs5XT1bZV06bi5wdXNoKGUpfSkocixlKTtjb25zdCBsPWVbMTldO251bGwhPT1sJiZsLmluc2VydFZpZXcodCksZVsyXXw9MTI4fWZ1bmN0aW9uIEdsKHQsZSl7bmdEZXZNb2RlJiZJbyh0KSxuZ0Rldk1vZGUmJnhuKHRbOV0sIkEgcHJvamVjdGVkIHZpZXcgc2hvdWxkIGJlbG9uZyB0byBhIG5vbi1lbXB0eSBwcm9qZWN0ZWQgdmlld3MgY29sbGVjdGlvbiIpO2NvbnN0IG49dFs5XSxvPW4uaW5kZXhPZihlKSxpPWVbM107bmdEZXZNb2RlJiZJbyhpKSwxMDI0JmVbMl0mJihlWzJdJj0tMTAyNSx5aShpLC0xKSksbi5zcGxpY2UobywxKX1mdW5jdGlvbiBZbCh0LGUpe2lmKHQubGVuZ3RoPD1PbylyZXR1cm47Y29uc3Qgbj1PbytlLG89dFtuXTtpZihvKXtjb25zdCBpPW9bMTddO251bGwhPT1pJiZpIT09dCYmR2woaSxvKSxlPjAmJih0W24tMV1bNF09b1s0XSk7Y29uc3QgYT11cih0LE9vK2UpOyEoZnVuY3Rpb24gaSh0LGUpe21jKHQsZSxlWzExXSwyLG51bGwsbnVsbCksZVswXT1udWxsLGVbNl09bnVsbH0pKG9bMV0sbyk7Y29uc3Qgcj1hWzE5XTtudWxsIT09ciYmci5kZXRhY2hWaWV3KGFbMV0pLG9bM109bnVsbCxvWzRdPW51bGwsb1syXSY9LTEyOX1yZXR1cm4gb31mdW5jdGlvbiBxbCh0LGUpe2lmKCEoMjU2JmVbMl0pKXtjb25zdCBuPWVbMTFdO3JpKG4pJiZuLmRlc3Ryb3lOb2RlJiZtYyh0LGUsbiwzLG51bGwsbnVsbCksKGZ1bmN0aW9uIG4odCl7bGV0IGU9dFsxM107aWYoIWUpcmV0dXJuIFpsKHRbMV0sdCk7Zm9yKDtlOyl7bGV0IG49bnVsbDtpZihQbyhlKSluPWVbMTNdO2Vsc2V7bmdEZXZNb2RlJiZJbyhlKTtjb25zdCB0PWVbMTBdO3QmJihuPXQpfWlmKCFuKXtmb3IoO2UmJiFlWzRdJiZlIT09dDspUG8oZSkmJlpsKGVbMV0sZSksZT1lWzNdO251bGw9PT1lJiYoZT10KSxQbyhlKSYmWmwoZVsxXSxlKSxuPWUmJmVbNF19ZT1ufX0pKGUpfX1mdW5jdGlvbiBabCh0LGUpe2lmKCEoMjU2JmVbMl0pKXtlWzJdJj0tMTI5LGVbMl18PTI1NiwoZnVuY3Rpb24gbih0LGUpe2xldCBuO2lmKG51bGwhPXQmJm51bGwhPShuPXQuZGVzdHJveUhvb2tzKSlmb3IobGV0IHQ9MDt0PG4ubGVuZ3RoO3QrPTIpe2NvbnN0IG89ZVtuW3RdXTtpZighKG8gaW5zdGFuY2VvZiBmYSkpe2NvbnN0IGU9blt0KzFdO2lmKEFycmF5LmlzQXJyYXkoZSkpZm9yKGxldCB0PTA7dDxlLmxlbmd0aDt0Kz0yKXtjb25zdCBuPW9bZVt0XV0saT1lW3QrMV07dGkoNCxuLGkpO3RyeXtpLmNhbGwobil9ZmluYWxseXt0aSg1LG4saSl9fWVsc2V7dGkoNCxvLGUpO3RyeXtlLmNhbGwobyl9ZmluYWxseXt0aSg1LG8sZSl9fX19fSkodCxlKSwoZnVuY3Rpb24gbyh0LGUpe2NvbnN0IG49dC5jbGVhbnVwLG89ZVs3XTtsZXQgaT0tMTtpZihudWxsIT09bilmb3IobGV0IHQ9MDt0PG4ubGVuZ3RoLTE7dCs9MilpZigic3RyaW5nIj09dHlwZW9mIG5bdF0pe2NvbnN0IGE9blt0KzFdLHI9ImZ1bmN0aW9uIj09dHlwZW9mIGE/YShlKTpsaShlW2FdKSxzPW9baT1uW3QrMl1dLGw9blt0KzNdOyJib29sZWFuIj09dHlwZW9mIGw/ci5yZW1vdmVFdmVudExpc3RlbmVyKG5bdF0scyxsKTpsPj0wP29baT1sXSgpOm9baT0tbF0udW5zdWJzY3JpYmUoKSx0Kz0yfWVsc2V7Y29uc3QgZT1vW2k9blt0KzFdXTtuW3RdLmNhbGwoZSl9aWYobnVsbCE9PW8pe2ZvcihsZXQgdD1pKzE7dDxvLmxlbmd0aDt0Kyspe2NvbnN0IGU9b1t0XTtuZ0Rldk1vZGUmJnVuKGUsIkV4cGVjdGluZyBpbnN0YW5jZSBjbGVhbnVwIGZ1bmN0aW9uLiIpLGUoKX1lWzddPW51bGx9fSkodCxlKSwxPT09ZVsxXS50eXBlJiZyaShlWzExXSkmJihuZ0Rldk1vZGUmJm5nRGV2TW9kZS5yZW5kZXJlckRlc3Ryb3krKyxlWzExXS5kZXN0cm95KCkpO2NvbnN0IG49ZVsxN107aWYobnVsbCE9PW4mJndvKGVbM10pKXtuIT09ZVszXSYmR2wobixlKTtjb25zdCBvPWVbMTldO251bGwhPT1vJiZvLmRldGFjaFZpZXcodCl9fX1mdW5jdGlvbiBYbCh0LGUsbil7cmV0dXJuIEtsKHQsZS5wYXJlbnQsbil9ZnVuY3Rpb24gS2wodCxlLG4pe2xldCBvPWU7Zm9yKDtudWxsIT09byYmNDAmby50eXBlOylvPShlPW8pLnBhcmVudDtpZihudWxsPT09bylyZXR1cm4gblswXTtpZihuZ0Rldk1vZGUmJmdhKG8sNyksMiZvLmZsYWdzKXtuZ0Rldk1vZGUmJkVvKG8sbik7Y29uc3QgZT10LmRhdGFbby5kaXJlY3RpdmVTdGFydF0uZW5jYXBzdWxhdGlvbjtpZihlPT09V24uTm9uZXx8ZT09PVduLkVtdWxhdGVkKXJldHVybiBudWxsfXJldHVybiBkaShvLG4pfWZ1bmN0aW9uIEpsKHQsZSxuLG8saSl7bmdEZXZNb2RlJiZuZ0Rldk1vZGUucmVuZGVyZXJJbnNlcnRCZWZvcmUrKyxyaSh0KT90Lmluc2VydEJlZm9yZShlLG4sbyxpKTplLmluc2VydEJlZm9yZShuLG8saSl9ZnVuY3Rpb24gUWwodCxlLG4pe25nRGV2TW9kZSYmbmdEZXZNb2RlLnJlbmRlcmVyQXBwZW5kQ2hpbGQrKyxuZ0Rldk1vZGUmJnhuKGUsInBhcmVudCBub2RlIG11c3QgYmUgZGVmaW5lZCIpLHJpKHQpP3QuYXBwZW5kQ2hpbGQoZSxuKTplLmFwcGVuZENoaWxkKG4pfWZ1bmN0aW9uICRsKHQsZSxuLG8saSl7bnVsbCE9PW8/SmwodCxlLG4sbyxpKTpRbCh0LGUsbil9ZnVuY3Rpb24gdGModCxlKXtyZXR1cm4gcmkodCk/dC5wYXJlbnROb2RlKGUpOmUucGFyZW50Tm9kZX1mdW5jdGlvbiBlYyh0LGUsbil7cmV0dXJuIGljKHQsZSxuKX1mdW5jdGlvbiBuYyh0LGUsbil7cmV0dXJuIDQwJnQudHlwZT9kaSh0LG4pOm51bGx9IShmdW5jdGlvbih0KXt0W3QuSW1wb3J0YW50PTFdPSJJbXBvcnRhbnQiLHRbdC5EYXNoQ2FzZT0yXT0iRGFzaENhc2UifSkoRWx8fChFbD17fSkpO2xldCBvYyxpYz1uYztmdW5jdGlvbiBhYyh0LGUpe2ljPXQsb2M9ZX1mdW5jdGlvbiByYyh0LGUsbixvKXtjb25zdCBpPVhsKHQsbyxlKSxhPWVbMTFdLHI9ZWMoby5wYXJlbnR8fGVbNl0sbyxlKTtpZihudWxsIT1pKWlmKEFycmF5LmlzQXJyYXkobikpZm9yKGxldCB0PTA7dDxuLmxlbmd0aDt0KyspJGwoYSxpLG5bdF0sciwhMSk7ZWxzZSAkbChhLGksbixyLCExKTt2b2lkIDAhPT1vYyYmb2MoYSxvLGUsbixpKX1mdW5jdGlvbiBzYyh0LGUpe2lmKG51bGwhPT1lKXtuZ0Rldk1vZGUmJmdhKGUsNjMpO2NvbnN0IG49ZS50eXBlO2lmKDMmbilyZXR1cm4gZGkoZSx0KTtpZig0Jm4pcmV0dXJuIGNjKC0xLHRbZS5pbmRleF0pO2lmKDgmbil7Y29uc3Qgbj1lLmNoaWxkO2lmKG51bGwhPT1uKXJldHVybiBzYyh0LG4pO3tjb25zdCBuPXRbZS5pbmRleF07cmV0dXJuIHdvKG4pP2NjKC0xLG4pOmxpKG4pfX1pZigzMiZuKXtyZXR1cm4gVGwoZSx0KSgpfHxsaSh0W2UuaW5kZXhdKX17Y29uc3Qgbj1sYyh0LGUpO2lmKG51bGwhPT1uKXtpZihBcnJheS5pc0FycmF5KG4pKXJldHVybiBuWzBdO2NvbnN0IGU9TmwodFsxNl0pO3JldHVybiBuZ0Rldk1vZGUmJlVvKGUpLHNjKGUsbil9cmV0dXJuIHNjKHQsZS5uZXh0KX19cmV0dXJuIG51bGx9ZnVuY3Rpb24gbGModCxlKXtpZihudWxsIT09ZSl7Y29uc3Qgbj10WzE2XVs2XSxvPWUucHJvamVjdGlvbjtyZXR1cm4gbmdEZXZNb2RlJiYoZnVuY3Rpb24gbih0LGUpe3huKHRbMTZdLCJDb21wb25lbnQgdmlld3Mgc2hvdWxkIGV4aXN0LiIpLHhuKHRbMTZdWzZdLnByb2plY3Rpb24sZXx8IkNvbXBvbmVudHMgd2l0aCBwcm9qZWN0aW9uIG5vZGVzICg8bmctY29udGVudD4pIG11c3QgaGF2ZSBwcm9qZWN0aW9uIHNsb3RzIGRlZmluZWQuIil9KSh0KSxuLnByb2plY3Rpb25bb119cmV0dXJuIG51bGx9ZnVuY3Rpb24gY2ModCxlKXtjb25zdCBuPU9vK3QrMTtpZihuPGUubGVuZ3RoKXtjb25zdCB0PWVbbl0sbz10WzFdLmZpcnN0Q2hpbGQ7aWYobnVsbCE9PW8pcmV0dXJuIHNjKHQsbyl9cmV0dXJuIGVbN119ZnVuY3Rpb24gZGModCxlLG4pe25nRGV2TW9kZSYmbmdEZXZNb2RlLnJlbmRlcmVyUmVtb3ZlTm9kZSsrO2NvbnN0IG89dGModCxlKTtvJiYoZnVuY3Rpb24gaSh0LGUsbixvKXtyaSh0KT90LnJlbW92ZUNoaWxkKGUsbixvKTplLnJlbW92ZUNoaWxkKG4pfSkodCxvLGUsbil9ZnVuY3Rpb24gcGModCxlLG4sbyxpLGEscil7Zm9yKDtudWxsIT1uOyl7bmdEZXZNb2RlJiZFbyhuLG8pLG5nRGV2TW9kZSYmZ2Eobiw2Myk7Y29uc3Qgcz1vW24uaW5kZXhdLGw9bi50eXBlO2lmKHImJjA9PT1lJiYocyYmYWwobGkocyksbyksbi5mbGFnc3w9NCksNjQhPSg2NCZuLmZsYWdzKSlpZig4JmwpcGModCxlLG4uY2hpbGQsbyxpLGEsITEpLExsKGUsdCxpLHMsYSk7ZWxzZSBpZigzMiZsKXtjb25zdCByPVRsKG4sbyk7bGV0IGw7Zm9yKDtsPXIoKTspTGwoZSx0LGksbCxhKTtMbChlLHQsaSxzLGEpfWVsc2UgMTYmbD9mYyh0LGUsbyxuLGksYSk6KG5nRGV2TW9kZSYmZ2Eobiw3KSxMbChlLHQsaSxzLGEpKTtuPXI/bi5wcm9qZWN0aW9uTmV4dDpuLm5leHR9fWZ1bmN0aW9uIG1jKHQsZSxuLG8saSxhKXtwYyhuLG8sdC5maXJzdENoaWxkLGUsaSxhLCExKX1mdW5jdGlvbiBmYyh0LGUsbixvLGksYSl7Y29uc3Qgcj1uWzE2XSxzPXJbNl07bmdEZXZNb2RlJiZnbih0eXBlb2Ygby5wcm9qZWN0aW9uLCJudW1iZXIiLCJleHBlY3RpbmcgcHJvamVjdGlvbiBpbmRleCIpO2NvbnN0IGw9cy5wcm9qZWN0aW9uW28ucHJvamVjdGlvbl07aWYoQXJyYXkuaXNBcnJheShsKSlmb3IobGV0IG49MDtuPGwubGVuZ3RoO24rKyl7TGwoZSx0LGksbFtuXSxhKX1lbHNle3BjKHQsZSxsLHJbM10saSxhLCEwKX19ZnVuY3Rpb24gdWModCxlLG4pe25nRGV2TW9kZSYmZm4obiwiJ25ld1ZhbHVlJyBzaG91bGQgYmUgYSBzdHJpbmciKSxyaSh0KT90LnNldEF0dHJpYnV0ZShlLCJzdHlsZSIsbik6ZS5zdHlsZS5jc3NUZXh0PW4sbmdEZXZNb2RlJiZuZ0Rldk1vZGUucmVuZGVyZXJTZXRTdHlsZSsrfWZ1bmN0aW9uIGdjKHQsZSxuKXtuZ0Rldk1vZGUmJmZuKG4sIiduZXdWYWx1ZScgc2hvdWxkIGJlIGEgc3RyaW5nIikscmkodCk/IiI9PT1uP3QucmVtb3ZlQXR0cmlidXRlKGUsImNsYXNzIik6dC5zZXRBdHRyaWJ1dGUoZSwiY2xhc3MiLG4pOmUuY2xhc3NOYW1lPW4sbmdEZXZNb2RlJiZuZ0Rldk1vZGUucmVuZGVyZXJTZXRDbGFzc05hbWUrK30KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovZnVuY3Rpb24gaGModCxlLG4pe25nRGV2TW9kZSYmaG4oZSwiIiwnY2FuIG5vdCBsb29rIGZvciAiIiBzdHJpbmcuJyk7bGV0IG89dC5sZW5ndGg7Zm9yKDs7KXtjb25zdCBpPXQuaW5kZXhPZihlLG4pO2lmKC0xPT09aSlyZXR1cm4gaTtpZigwPT09aXx8dC5jaGFyQ29kZUF0KGktMSk8PTMyKXtjb25zdCBuPWUubGVuZ3RoO2lmKGkrbj09PW98fHQuY2hhckNvZGVBdChpK24pPD0zMilyZXR1cm4gaX1uPWkrMX19Y29uc3QgYmM9Im5nLXRlbXBsYXRlIjtmdW5jdGlvbiB5Yyh0LGUsbil7bmdEZXZNb2RlJiZnbihlLGUudG9Mb3dlckNhc2UoKSwiQ2xhc3MgbmFtZSBleHBlY3RlZCB0byBiZSBsb3dlcmNhc2UuIik7bGV0IG89MDtmb3IoO288dC5sZW5ndGg7KXtsZXQgaT10W28rK107aWYobiYmImNsYXNzIj09PWkpe2lmKGk9dFtvXSwtMSE9PWhjKGkudG9Mb3dlckNhc2UoKSxlLDApKXJldHVybiEwfWVsc2UgaWYoMT09PWkpe2Zvcig7bzx0Lmxlbmd0aCYmInN0cmluZyI9PXR5cGVvZihpPXRbbysrXSk7KWlmKGkudG9Mb3dlckNhc2UoKT09PWUpcmV0dXJuITA7cmV0dXJuITF9fXJldHVybiExfWZ1bmN0aW9uIF9jKHQpe3JldHVybiA0PT09dC50eXBlJiZ0LnZhbHVlIT09YmN9ZnVuY3Rpb24gQ2ModCxlLG4pe3JldHVybiBlPT09KDQhPT10LnR5cGV8fG4/dC52YWx1ZTpiYyl9ZnVuY3Rpb24gTWModCxlLG4pe25nRGV2TW9kZSYmeG4oZVswXSwiU2VsZWN0b3Igc2hvdWxkIGhhdmUgYSB0YWcgbmFtZSIpO2xldCBvPTQ7Y29uc3QgaT10LmF0dHJzfHxbXSxhPShmdW5jdGlvbiByKHQpe2ZvcihsZXQgZT0wO2U8dC5sZW5ndGg7ZSsrKXtpZihiYSh0W2VdKSlyZXR1cm4gZX1yZXR1cm4gdC5sZW5ndGh9KShpKTtsZXQgcz0hMTtmb3IobGV0IHI9MDtyPGUubGVuZ3RoO3IrKyl7Y29uc3QgbD1lW3JdO2lmKCJudW1iZXIiIT10eXBlb2YgbCl7aWYoIXMpaWYoNCZvKXtpZihvPTJ8MSZvLCIiIT09bCYmIUNjKHQsbCxuKXx8IiI9PT1sJiYxPT09ZS5sZW5ndGgpe2lmKHZjKG8pKXJldHVybiExO3M9ITB9fWVsc2V7Y29uc3QgYz04Jm8/bDplWysrcl07aWYoOCZvJiZudWxsIT09dC5hdHRycyl7aWYoIXljKHQuYXR0cnMsYyxuKSl7aWYodmMobykpcmV0dXJuITE7cz0hMH1jb250aW51ZX1jb25zdCBkPXhjKDgmbz8iY2xhc3MiOmwsaSxfYyh0KSxuKTtpZigtMT09PWQpe2lmKHZjKG8pKXJldHVybiExO3M9ITA7Y29udGludWV9aWYoIiIhPT1jKXtsZXQgdDtkPmE/dD0iIjoobmdEZXZNb2RlJiZobihpW2RdLDAsIldlIGRvIG5vdCBtYXRjaCBkaXJlY3RpdmVzIG9uIG5hbWVzcGFjZWQgYXR0cmlidXRlcyIpLHQ9aVtkKzFdLnRvTG93ZXJDYXNlKCkpO2NvbnN0IGU9OCZvP3Q6bnVsbDtpZihlJiYtMSE9PWhjKGUsYywwKXx8MiZvJiZjIT09dCl7aWYodmMobykpcmV0dXJuITE7cz0hMH19fX1lbHNle2lmKCFzJiYhdmMobykmJiF2YyhsKSlyZXR1cm4hMTtpZihzJiZ2YyhsKSljb250aW51ZTtzPSExLG89bHwxJm99fXJldHVybiB2YyhvKXx8c31mdW5jdGlvbiB2Yyh0KXtyZXR1cm4gMD09KDEmdCl9ZnVuY3Rpb24geGModCxlLG4sbyl7aWYobnVsbD09PWUpcmV0dXJuLTE7bGV0IGk9MDtpZihvfHwhbil7bGV0IG49ITE7Zm9yKDtpPGUubGVuZ3RoOyl7Y29uc3Qgbz1lW2ldO2lmKG89PT10KXJldHVybiBpO2lmKDM9PT1vfHw2PT09byluPSEwO2Vsc2V7aWYoMT09PW98fDI9PT1vKXtsZXQgdD1lWysraV07Zm9yKDsic3RyaW5nIj09dHlwZW9mIHQ7KXQ9ZVsrK2ldO2NvbnRpbnVlfWlmKDQ9PT1vKWJyZWFrO2lmKDA9PT1vKXtpKz00O2NvbnRpbnVlfX1pKz1uPzE6Mn1yZXR1cm4tMX1yZXR1cm4oZnVuY3Rpb24gYSh0LGUpe2xldCBuPXQuaW5kZXhPZig0KTtpZihuPi0xKWZvcihuKys7bjx0Lmxlbmd0aDspe2NvbnN0IG89dFtuXTtpZigibnVtYmVyIj09dHlwZW9mIG8pcmV0dXJuLTE7aWYobz09PWUpcmV0dXJuIG47bisrfXJldHVybi0xfSkoZSx0KX1mdW5jdGlvbiBPYyh0LGUsbj0hMSl7Zm9yKGxldCBvPTA7bzxlLmxlbmd0aDtvKyspaWYoTWModCxlW29dLG4pKXJldHVybiEwO3JldHVybiExfWZ1bmN0aW9uIFBjKHQsZSl7dDpmb3IobGV0IG49MDtuPGUubGVuZ3RoO24rKyl7Y29uc3Qgbz1lW25dO2lmKHQubGVuZ3RoPT09by5sZW5ndGgpe2ZvcihsZXQgZT0wO2U8dC5sZW5ndGg7ZSsrKWlmKHRbZV0hPT1vW2VdKWNvbnRpbnVlIHQ7cmV0dXJuITB9fXJldHVybiExfWZ1bmN0aW9uIHdjKHQsZSl7cmV0dXJuIHQ/Ijpub3QoIitlLnRyaW0oKSsiKSI6ZX1mdW5jdGlvbiBrYyh0KXtsZXQgZT10WzBdLG49MSxvPTIsaT0iIixhPSExO2Zvcig7bjx0Lmxlbmd0aDspe2xldCByPXRbbl07aWYoInN0cmluZyI9PXR5cGVvZiByKWlmKDImbyl7Y29uc3QgZT10Wysrbl07aSs9IlsiK3IrKGUubGVuZ3RoPjA/Jz0iJytlKyciJzoiIikrIl0ifWVsc2UgOCZvP2krPSIuIityOjQmbyYmKGkrPSIgIityKTtlbHNlIiI9PT1pfHx2YyhyKXx8KGUrPXdjKGEsaSksaT0iIiksbz1yLGE9YXx8IXZjKG8pO24rK31yZXR1cm4iIiE9PWkmJihlKz13YyhhLGkpKSxlfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY29uc3QgU2M9InVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZT97X19icmFuZF9fOiJOT19DSEFOR0UifTp7fTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovZnVuY3Rpb24gRGModCl7bmdEZXZNb2RlJiZNbih0LDAsIkNhbiBvbmx5IGFkdmFuY2UgZm9yd2FyZCIpLFJjKE9pKCkseGkoKSx0YSgpK3QsQWkoKSl9ZnVuY3Rpb24gUmModCxlLG4sbyl7aWYobmdEZXZNb2RlJiYoZnVuY3Rpb24gaSh0LGUpe2pvKHZvLHRbMV0uYmluZGluZ1N0YXJ0SW5kZXgsZSl9KShlLG4pLCFvKXtpZigzPT0oMyZlWzJdKSl7Y29uc3Qgbz10LnByZU9yZGVyQ2hlY2tIb29rcztudWxsIT09byYmc2EoZSxvLG4pfWVsc2V7Y29uc3Qgbz10LnByZU9yZGVySG9va3M7bnVsbCE9PW8mJmxhKGUsbywwLG4pfX1lYShuKX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovZnVuY3Rpb24gRWModCxlKXtyZXR1cm4gbmdEZXZNb2RlJiZtbih0LDAsMzI3NjcpLG5nRGV2TW9kZSYmbW4oZSwwLDMyNzY3KSx0PDwxN3xlPDwyfWZ1bmN0aW9uIEFjKHQpe3JldHVybiBuZ0Rldk1vZGUmJnBuKHQsImV4cGVjdGVkIG51bWJlciIpLHQ+PjE3JjMyNzY3fWZ1bmN0aW9uIFRjKHQpe3JldHVybiBuZ0Rldk1vZGUmJnBuKHQsImV4cGVjdGVkIG51bWJlciIpLDI9PSgyJnQpfWZ1bmN0aW9uIE5jKHQpe3JldHVybiBuZ0Rldk1vZGUmJnBuKHQsImV4cGVjdGVkIG51bWJlciIpLDJ8dH1mdW5jdGlvbiB6Yyh0KXtyZXR1cm4gbmdEZXZNb2RlJiZwbih0LCJleHBlY3RlZCBudW1iZXIiKSwoMTMxMDY4JnQpPj4yfWZ1bmN0aW9uIEljKHQsZSl7cmV0dXJuIG5nRGV2TW9kZSYmcG4odCwiZXhwZWN0ZWQgbnVtYmVyIiksbmdEZXZNb2RlJiZtbihlLDAsMzI3NjcpLC0xMzEwNjkmdHxlPDwyfWZ1bmN0aW9uIEhjKHQpe3JldHVybiBuZ0Rldk1vZGUmJnBuKHQsImV4cGVjdGVkIG51bWJlciIpLDE9PSgxJnQpfWZ1bmN0aW9uIEZjKHQpe3JldHVybiBuZ0Rldk1vZGUmJnBuKHQsImV4cGVjdGVkIG51bWJlciIpLDF8dH0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovZnVuY3Rpb24gTGModCxlKXtpZighbmdEZXZNb2RlKXRocm93IG5ldyBFcnJvcigiVGhpcyBtZXRob2Qgc2hvdWxkIGJlIGd1YXJkZWQgd2l0aCBgbmdEZXZNb2RlYCBzbyB0aGF0IGl0IGNhbiBiZSB0cmVlIHNoYWtlbiBpbiBwcm9kdWN0aW9uISIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJkZWJ1ZyIse3ZhbHVlOmUsZW51bWVyYWJsZTohMX0pfWZ1bmN0aW9uIEJjKHQsZSl7aWYoIW5nRGV2TW9kZSl0aHJvdyBuZXcgRXJyb3IoIlRoaXMgbWV0aG9kIHNob3VsZCBiZSBndWFyZGVkIHdpdGggYG5nRGV2TW9kZWAgc28gdGhhdCBpdCBjYW4gYmUgdHJlZSBzaGFrZW4gaW4gcHJvZHVjdGlvbiEiKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiZGVidWciLHtnZXQ6ZSxlbnVtZXJhYmxlOiExfSl9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NvbnN0IFZjPSgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8ISFuZ0Rldk1vZGUpJiZLbigpO2xldCBqYyxVYyxXYztmdW5jdGlvbiBHYyh0KXtyZXR1cm4oZnVuY3Rpb24gZSh0LG4pe3N3aXRjaCh0KXtjYXNlIDA6cmV0dXJuIHZvaWQgMD09PVdjJiYoV2M9bmV3KENsKCJMUm9vdFZpZXciKSkpLFdjO2Nhc2UgMTp2b2lkIDA9PT1qYyYmKGpjPW5ldyBNYXApO2xldCB0PWpjLmdldChuKTtyZXR1cm4gdm9pZCAwPT09dCYmKHQ9bmV3KENsKCJMQ29tcG9uZW50VmlldyIrWWMobikpKSxqYy5zZXQobix0KSksdDtjYXNlIDI6dm9pZCAwPT09VWMmJihVYz1uZXcgTWFwKTtsZXQgZT1VYy5nZXQobik7cmV0dXJuIHZvaWQgMD09PWUmJihlPW5ldyhDbCgiTEVtYmVkZGVkVmlldyIrWWMobikpKSxVYy5zZXQobixlKSksZX19KSh0LnR5cGUsdC50ZW1wbGF0ZSYmdC50ZW1wbGF0ZS5uYW1lKS5jb25jYXQodC5ibHVlcHJpbnQpfWZ1bmN0aW9uIFljKHQpe2lmKG51bGw9PXQpcmV0dXJuIiI7Y29uc3QgZT10Lmxhc3RJbmRleE9mKCJfVGVtcGxhdGUiKTtyZXR1cm4iXyIrKC0xPT09ZT90OnQuc3Vic3RyKDAsZSkpfWNvbnN0IHFjPWNsYXNze2NvbnN0cnVjdG9yKHQsZSxuLG8saSxhLHIscyxsLGMsZCxwLG0sZix1LGcsaCxiLHksXyxDLE0sdix4LE8sUCx3LGssUyxELFIsRSl7dGhpcy50Vmlld189dCx0aGlzLnR5cGU9ZSx0aGlzLmluZGV4PW4sdGhpcy5pbnNlcnRCZWZvcmVJbmRleD1vLHRoaXMuaW5qZWN0b3JJbmRleD1pLHRoaXMuZGlyZWN0aXZlU3RhcnQ9YSx0aGlzLmRpcmVjdGl2ZUVuZD1yLHRoaXMuZGlyZWN0aXZlU3R5bGluZ0xhc3Q9cyx0aGlzLnByb3BlcnR5QmluZGluZ3M9bCx0aGlzLmZsYWdzPWMsdGhpcy5wcm92aWRlckluZGV4ZXM9ZCx0aGlzLnZhbHVlPXAsdGhpcy5hdHRycz1tLHRoaXMubWVyZ2VkQXR0cnM9Zix0aGlzLmxvY2FsTmFtZXM9dSx0aGlzLmluaXRpYWxJbnB1dHM9Zyx0aGlzLmlucHV0cz1oLHRoaXMub3V0cHV0cz1iLHRoaXMudFZpZXdzPXksdGhpcy5uZXh0PV8sdGhpcy5wcm9qZWN0aW9uTmV4dD1DLHRoaXMuY2hpbGQ9TSx0aGlzLnBhcmVudD12LHRoaXMucHJvamVjdGlvbj14LHRoaXMuc3R5bGVzPU8sdGhpcy5zdHlsZXNXaXRob3V0SG9zdD1QLHRoaXMucmVzaWR1YWxTdHlsZXM9dyx0aGlzLmNsYXNzZXM9ayx0aGlzLmNsYXNzZXNXaXRob3V0SG9zdD1TLHRoaXMucmVzaWR1YWxDbGFzc2VzPUQsdGhpcy5jbGFzc0JpbmRpbmdzPVIsdGhpcy5zdHlsZUJpbmRpbmdzPUV9ZGVidWdOb2RlSW5qZWN0b3JQYXRoKHQpe2NvbnN0IGU9W107bGV0IG49RGEodGhpcyx0KTtpZigtMT09PW4pe2NvbnN0IGU9UmEodGhpcyx0KTtlIT09bWEmJihuPXZhKGUpLHQ9eGEoZSx0KSl9Zm9yKDstMSE9PW47KXtuZ0Rldk1vZGUmJldvKHQsbik7ZS5wdXNoKHBkKHRbMV0uZGF0YVtuKzhdLHQpKTtjb25zdCBvPXRbbis4XTtvPT09bWE/bj0tMToobj12YShvKSx0PXhhKG8sdCkpfXJldHVybiBlfWdldCB0eXBlXygpe3JldHVybiB1YSh0aGlzLnR5cGUpfHxgVE5vZGVUeXBlLj8ke3RoaXMudHlwZX0/YH1nZXQgZmxhZ3NfKCl7Y29uc3QgdD1bXTtyZXR1cm4gMTYmdGhpcy5mbGFncyYmdC5wdXNoKCJUTm9kZUZsYWdzLmhhc0NsYXNzSW5wdXQiKSw4JnRoaXMuZmxhZ3MmJnQucHVzaCgiVE5vZGVGbGFncy5oYXNDb250ZW50UXVlcnkiKSwzMiZ0aGlzLmZsYWdzJiZ0LnB1c2goIlROb2RlRmxhZ3MuaGFzU3R5bGVJbnB1dCIpLDEyOCZ0aGlzLmZsYWdzJiZ0LnB1c2goIlROb2RlRmxhZ3MuaGFzSG9zdEJpbmRpbmdzIiksMiZ0aGlzLmZsYWdzJiZ0LnB1c2goIlROb2RlRmxhZ3MuaXNDb21wb25lbnRIb3N0IiksMSZ0aGlzLmZsYWdzJiZ0LnB1c2goIlROb2RlRmxhZ3MuaXNEaXJlY3RpdmVIb3N0IiksNjQmdGhpcy5mbGFncyYmdC5wdXNoKCJUTm9kZUZsYWdzLmlzRGV0YWNoZWQiKSw0JnRoaXMuZmxhZ3MmJnQucHVzaCgiVE5vZGVGbGFncy5pc1Byb2plY3RlZCIpLHQuam9pbigifCIpfWdldCB0ZW1wbGF0ZV8oKXtpZigxJnRoaXMudHlwZSlyZXR1cm4gdGhpcy52YWx1ZTtjb25zdCB0PVtdLGU9InN0cmluZyI9PXR5cGVvZiB0aGlzLnZhbHVlJiZ0aGlzLnZhbHVlfHx0aGlzLnR5cGVfO2lmKHQucHVzaCgiPCIsZSksdGhpcy5mbGFncyYmdC5wdXNoKCIgIix0aGlzLmZsYWdzXyksdGhpcy5hdHRycylmb3IobGV0IGU9MDtlPHRoaXMuYXR0cnMubGVuZ3RoOyl7Y29uc3Qgbj10aGlzLmF0dHJzW2UrK107aWYoIm51bWJlciI9PXR5cGVvZiBuKWJyZWFrO2NvbnN0IG89dGhpcy5hdHRyc1tlKytdO3QucHVzaCgiICIsbiwnPSInLG8sJyInKX1yZXR1cm4gdC5wdXNoKCI+IiksWGModGhpcy5jaGlsZCx0KSx0LnB1c2goIjwvIixlLCI+IiksdC5qb2luKCIiKX1nZXQgc3R5bGVCaW5kaW5nc18oKXtyZXR1cm4gWmModGhpcywhMSl9Z2V0IGNsYXNzQmluZGluZ3NfKCl7cmV0dXJuIFpjKHRoaXMsITApfWdldCBwcm92aWRlckluZGV4U3RhcnRfKCl7cmV0dXJuIDEwNDg1NzUmdGhpcy5wcm92aWRlckluZGV4ZXN9Z2V0IHByb3ZpZGVySW5kZXhFbmRfKCl7cmV0dXJuIHRoaXMucHJvdmlkZXJJbmRleFN0YXJ0XysodGhpcy5wcm92aWRlckluZGV4ZXM+Pj4yMCl9fTtmdW5jdGlvbiBaYyh0LGUpe2NvbnN0IG49dC50Vmlld18uZGF0YSxvPVtdLGk9ZT90LmNsYXNzQmluZGluZ3M6dC5zdHlsZUJpbmRpbmdzLGE9QWMoaSkscj16YyhpKTtsZXQgcz0wIT09cixsPXM/cjphO2Zvcig7MCE9PWw7KXtjb25zdCB0PW5bbCsxXTtvLnVuc2hpZnQoe2tleTpuW2xdLGluZGV4OmwsaXNUZW1wbGF0ZTpzLHByZXZEdXBsaWNhdGU6VGModCksbmV4dER1cGxpY2F0ZTpIYyh0KSxuZXh0SW5kZXg6emModCkscHJldkluZGV4OkFjKHQpfSksbD09PWEmJihzPSExKSxsPUFjKHQpfXJldHVybiBvLnB1c2goKGU/dC5yZXNpZHVhbENsYXNzZXM6dC5yZXNpZHVhbFN0eWxlcyl8fG51bGwpLG99ZnVuY3Rpb24gWGModCxlKXtmb3IoO3Q7KWUucHVzaCh0LnRlbXBsYXRlXyksdD10Lm5leHR9Y29uc3QgS2M9VmMmJkNsKCJUVmlld0RhdGEiKXx8bnVsbDtsZXQgSmM7Y29uc3QgUWM9VmMmJkNsKCJMVmlld0JsdWVwcmludCIpfHxudWxsLCRjPVZjJiZDbCgiTWF0Y2hlc0FycmF5Iil8fG51bGwsdGQ9VmMmJkNsKCJUVmlld0NvbXBvbmVudHMiKXx8bnVsbCxlZD1WYyYmQ2woIlROb2RlTG9jYWxOYW1lcyIpfHxudWxsLG5kPVZjJiZDbCgiVE5vZGVJbml0aWFsSW5wdXRzIil8fG51bGw7VmMmJkNsKCJUTm9kZUluaXRpYWxEYXRhIik7Y29uc3Qgb2Q9VmMmJkNsKCJMQ2xlYW51cCIpfHxudWxsLGlkPVZjJiZDbCgiVENsZWFudXAiKXx8bnVsbDtmdW5jdGlvbiBhZCh0KXtpZih0KXtjb25zdCBlPXQuZGVidWc7cmV0dXJuIHhuKGUsIk9iamVjdCBkb2VzIG5vdCBoYXZlIGEgZGVidWcgcmVwcmVzZW50YXRpb24uIiksZX1yZXR1cm4gdH1mdW5jdGlvbiByZCh0LGU9ITEpe2NvbnN0IG49bGkodCk7aWYobilzd2l0Y2gobi5ub2RlVHlwZSl7Y2FzZSBOb2RlLlRFWFRfTk9ERTpyZXR1cm4gbi50ZXh0Q29udGVudDtjYXNlIE5vZGUuQ09NTUVOVF9OT0RFOnJldHVybmBceDNjIS0tJHtuLnRleHRDb250ZW50fS0tXHgzZWA7Y2FzZSBOb2RlLkVMRU1FTlRfTk9ERTpjb25zdCB0PW4ub3V0ZXJIVE1MO2lmKGUpcmV0dXJuIHQ7cmV0dXJuIHQuc3BsaXQoIj4iK24uaW5uZXJIVE1MKyI8IilbMF0rIj4ifXJldHVybiBudWxsfWNsYXNzIHNke2NvbnN0cnVjdG9yKHQpe3RoaXMuX3Jhd19sVmlldz10fWdldCBmbGFncygpe2NvbnN0IHQ9dGhpcy5fcmF3X2xWaWV3WzJdO3JldHVybntfX3Jhd19fZmxhZ3NfXzp0LGluaXRQaGFzZVN0YXRlOjMmdCxjcmVhdGlvbk1vZGU6ISEoNCZ0KSxmaXJzdFZpZXdQYXNzOiEhKDgmdCksY2hlY2tBbHdheXM6ISEoMTYmdCksZGlydHk6ISEoNjQmdCksYXR0YWNoZWQ6ISEoMTI4JnQpLGRlc3Ryb3llZDohISgyNTYmdCksaXNSb290OiEhKDUxMiZ0KSxpbmRleFdpdGhpbkluaXRQaGFzZTp0Pj4xMX19Z2V0IHBhcmVudCgpe3JldHVybiBhZCh0aGlzLl9yYXdfbFZpZXdbM10pfWdldCBob3N0SFRNTCgpe3JldHVybiByZCh0aGlzLl9yYXdfbFZpZXdbMF0sITApfWdldCBodG1sKCl7cmV0dXJuKHRoaXMubm9kZXN8fFtdKS5tYXAobGQpLmpvaW4oIiIpfWdldCBjb250ZXh0KCl7cmV0dXJuIHRoaXMuX3Jhd19sVmlld1s4XX1nZXQgbm9kZXMoKXtjb25zdCB0PXRoaXMuX3Jhd19sVmlldztyZXR1cm4gZGQodFsxXS5maXJzdENoaWxkLHQpfWdldCB0ZW1wbGF0ZSgpe3JldHVybiB0aGlzLnRWaWV3LnRlbXBsYXRlX31nZXQgdFZpZXcoKXtyZXR1cm4gdGhpcy5fcmF3X2xWaWV3WzFdfWdldCBjbGVhbnVwKCl7cmV0dXJuIHRoaXMuX3Jhd19sVmlld1s3XX1nZXQgaW5qZWN0b3IoKXtyZXR1cm4gdGhpcy5fcmF3X2xWaWV3WzldfWdldCByZW5kZXJlckZhY3RvcnkoKXtyZXR1cm4gdGhpcy5fcmF3X2xWaWV3WzEwXX1nZXQgcmVuZGVyZXIoKXtyZXR1cm4gdGhpcy5fcmF3X2xWaWV3WzExXX1nZXQgc2FuaXRpemVyKCl7cmV0dXJuIHRoaXMuX3Jhd19sVmlld1sxMl19Z2V0IGNoaWxkSGVhZCgpe3JldHVybiBhZCh0aGlzLl9yYXdfbFZpZXdbMTNdKX1nZXQgbmV4dCgpe3JldHVybiBhZCh0aGlzLl9yYXdfbFZpZXdbNF0pfWdldCBjaGlsZFRhaWwoKXtyZXR1cm4gYWQodGhpcy5fcmF3X2xWaWV3WzE0XSl9Z2V0IGRlY2xhcmF0aW9uVmlldygpe3JldHVybiBhZCh0aGlzLl9yYXdfbFZpZXdbMTVdKX1nZXQgcXVlcmllcygpe3JldHVybiB0aGlzLl9yYXdfbFZpZXdbMTldfWdldCB0SG9zdCgpe3JldHVybiB0aGlzLl9yYXdfbFZpZXdbNl19Z2V0IGRlY2xzKCl7cmV0dXJuIGNkKHRoaXMudFZpZXcsdGhpcy5fcmF3X2xWaWV3LHZvLHRoaXMudFZpZXcuYmluZGluZ1N0YXJ0SW5kZXgpfWdldCB2YXJzKCl7cmV0dXJuIGNkKHRoaXMudFZpZXcsdGhpcy5fcmF3X2xWaWV3LHRoaXMudFZpZXcuYmluZGluZ1N0YXJ0SW5kZXgsdGhpcy50Vmlldy5leHBhbmRvU3RhcnRJbmRleCl9Z2V0IGV4cGFuZG8oKXtyZXR1cm4gY2QodGhpcy50Vmlldyx0aGlzLl9yYXdfbFZpZXcsdGhpcy50Vmlldy5leHBhbmRvU3RhcnRJbmRleCx0aGlzLl9yYXdfbFZpZXcubGVuZ3RoKX1nZXQgY2hpbGRWaWV3cygpe2NvbnN0IHQ9W107bGV0IGU9dGhpcy5jaGlsZEhlYWQ7Zm9yKDtlOyl0LnB1c2goZSksZT1lLm5leHQ7cmV0dXJuIHR9fWZ1bmN0aW9uIGxkKHQpe2lmKCJFbGVtZW50Q29udGFpbmVyIj09PXQudHlwZSlyZXR1cm4odC5jaGlsZHJlbnx8W10pLm1hcChsZCkuam9pbigiIik7aWYoIkljdUNvbnRhaW5lciI9PT10LnR5cGUpdGhyb3cgbmV3IEVycm9yKCJOb3QgaW1wbGVtZW50ZWQiKTtyZXR1cm4gcmQodC5uYXRpdmUsITApfHwiIn1mdW5jdGlvbiBjZCh0LGUsbixvKXtsZXQgaT1bXTtmb3IobGV0IGE9bjthPG87YSsrKWkucHVzaCh7aW5kZXg6YSx0OnQuZGF0YVthXSxsOmVbYV19KTtyZXR1cm57c3RhcnQ6bixlbmQ6byxsZW5ndGg6by1uLGNvbnRlbnQ6aX19ZnVuY3Rpb24gZGQodCxlKXtpZih0KXtjb25zdCBuPVtdO2xldCBvPXQ7Zm9yKDtvOyluLnB1c2gocGQobyxlKSksbz1vLm5leHQ7cmV0dXJuIG59cmV0dXJuW119ZnVuY3Rpb24gcGQodCxlKXtjb25zdCBuPWxpKGVbdC5pbmRleF0pLG89W10saT1bXSxhPWVbMV07Zm9yKGxldCBuPXQuZGlyZWN0aXZlU3RhcnQ7bjx0LmRpcmVjdGl2ZUVuZDtuKyspe28ucHVzaChhLmRhdGFbbl0udHlwZSksaS5wdXNoKGVbbl0pfXJldHVybntodG1sOnJkKG4pLHR5cGU6dWEodC50eXBlKSx0Tm9kZTp0LG5hdGl2ZTpuLGNoaWxkcmVuOmRkKHQuY2hpbGQsZSksZmFjdG9yaWVzOm8saW5zdGFuY2VzOmksaW5qZWN0b3I6bWQodCxhLGUpLGdldCBpbmplY3RvclJlc29sdXRpb25QYXRoKCl7cmV0dXJuIHQuZGVidWdOb2RlSW5qZWN0b3JQYXRoKGUpfX19ZnVuY3Rpb24gbWQodCxlLG4pe2NvbnN0IG89W107Zm9yKGxldCBuPXQucHJvdmlkZXJJbmRleFN0YXJ0XztuPHQucHJvdmlkZXJJbmRleEVuZF87bisrKW8ucHVzaChlLmRhdGFbbl0pO2NvbnN0IGk9W107Zm9yKGxldCBuPXQucHJvdmlkZXJJbmRleEVuZF87bjx0LmRpcmVjdGl2ZUVuZDtuKyspaS5wdXNoKGUuZGF0YVtuXSk7cmV0dXJue2Jsb29tOnVkKG4sdC5pbmplY3RvckluZGV4KSxjdW11bGF0aXZlQmxvb206dWQoZS5kYXRhLHQuaW5qZWN0b3JJbmRleCkscHJvdmlkZXJzOmksdmlld1Byb3ZpZGVyczpvLHBhcmVudEluamVjdG9ySW5kZXg6blt0LnByb3ZpZGVySW5kZXhTdGFydF8tMV19fWZ1bmN0aW9uIGZkKHQsZSl7Y29uc3Qgbj10W2VdO2lmKCJudW1iZXIiIT10eXBlb2YgbilyZXR1cm4iPz8/Pz8/Pz8iO2NvbnN0IG89IjAwMDAwMDAwIituLnRvU3RyaW5nKDIpO3JldHVybiBvLnN1YnN0cmluZyhvLmxlbmd0aC04KX1mdW5jdGlvbiB1ZCh0LGUpe3JldHVybiBlPDA/Ik5PX05PREVfSU5KRUNUT1IiOmAke2ZkKHQsZSs3KX1fJHtmZCh0LGUrNil9XyR7ZmQodCxlKzUpfV8ke2ZkKHQsZSs0KX1fJHtmZCh0LGUrMyl9XyR7ZmQodCxlKzIpfV8ke2ZkKHQsZSsxKX1fJHtmZCh0LGUrMCl9YH1jbGFzcyBnZHtjb25zdHJ1Y3Rvcih0KXt0aGlzLl9yYXdfbENvbnRhaW5lcj10fWdldCBoYXNUcmFuc3BsYW50ZWRWaWV3cygpe3JldHVybiB0aGlzLl9yYXdfbENvbnRhaW5lclsyXX1nZXQgdmlld3MoKXtyZXR1cm4gdGhpcy5fcmF3X2xDb250YWluZXIuc2xpY2UoT28pLm1hcChhZCl9Z2V0IHBhcmVudCgpe3JldHVybiBhZCh0aGlzLl9yYXdfbENvbnRhaW5lclszXSl9Z2V0IG1vdmVkVmlld3MoKXtyZXR1cm4gdGhpcy5fcmF3X2xDb250YWluZXJbOV19Z2V0IGhvc3QoKXtyZXR1cm4gdGhpcy5fcmF3X2xDb250YWluZXJbMF19Z2V0IG5hdGl2ZSgpe3JldHVybiB0aGlzLl9yYXdfbENvbnRhaW5lcls3XX1nZXQgbmV4dCgpe3JldHVybiBhZCh0aGlzLl9yYXdfbENvbnRhaW5lcls0XSl9fWNvbnN0IGhkPVByb21pc2UucmVzb2x2ZShudWxsKTtmdW5jdGlvbiBiZCh0LGUpe2NvbnN0IG49dC5jb250ZW50UXVlcmllcztpZihudWxsIT09bilmb3IobGV0IG89MDtvPG4ubGVuZ3RoO28rPTIpe2NvbnN0IGk9bltvXSxhPW5bbysxXTtpZigtMSE9PWEpe2NvbnN0IG49dC5kYXRhW2FdO25nRGV2TW9kZSYmeG4obiwiRGlyZWN0aXZlRGVmIG5vdCBmb3VuZC4iKSxuZ0Rldk1vZGUmJnhuKG4uY29udGVudFF1ZXJpZXMsImNvbnRlbnRRdWVyaWVzIGZ1bmN0aW9uIHNob3VsZCBiZSBkZWZpbmVkIiksV2koaSksbi5jb250ZW50UXVlcmllcygyLGVbYV0sYSl9fX1mdW5jdGlvbiB5ZCh0LGUsbixvLGksYSxyLHMsbCxjKXtjb25zdCBkPW5nRGV2TW9kZT9HYyhlKTplLmJsdWVwcmludC5zbGljZSgpO3JldHVybiBkWzBdPWksZFsyXT0xNDB8byxiaShkKSxuZ0Rldk1vZGUmJmUuZGVjbFROb2RlJiZ0JiZFbyhlLmRlY2xUTm9kZSx0KSxkWzNdPWRbMTVdPXQsZFs4XT1uLGRbMTBdPXJ8fHQmJnRbMTBdLG5nRGV2TW9kZSYmeG4oZFsxMF0sIlJlbmRlcmVyRmFjdG9yeSBpcyByZXF1aXJlZCIpLGRbMTFdPXN8fHQmJnRbMTFdLG5nRGV2TW9kZSYmeG4oZFsxMV0sIlJlbmRlcmVyIGlzIHJlcXVpcmVkIiksZFsxMl09bHx8dCYmdFsxMl18fG51bGwsZFs5XT1jfHx0JiZ0WzldfHxudWxsLGRbNl09YSxuZ0Rldk1vZGUmJmduKDIhPWUudHlwZXx8bnVsbCE9PXQsITAsIkVtYmVkZGVkIHZpZXdzIG11c3QgaGF2ZSBwYXJlbnRMVmlldyIpLGRbMTZdPTI9PWUudHlwZT90WzE2XTpkLG5nRGV2TW9kZSYmKGZ1bmN0aW9uIHAodCl7TGModCxuZXcgc2QodCkpfSkoZCksZH1mdW5jdGlvbiBfZCh0LGUsbixvLGkpe25nRGV2TW9kZSYmMCE9PWUmJnZuKGUsdm8sIlROb2RlcyBjYW4ndCBiZSBpbiB0aGUgTFZpZXcgaGVhZGVyLiIpLG5nRGV2TW9kZSYmKGZ1bmN0aW9uIGEodCl7MiE9PXQmJjEhPT10JiY0IT09dCYmOCE9PXQmJjMyIT09dCYmMTYhPT10JiY2NCE9PXQmJk9uKGBFeHBlY3RlZCBUTm9kZVR5cGUgdG8gaGF2ZSBvbmx5IGEgc2luZ2xlIHR5cGUgc2VsZWN0ZWQsIGJ1dCBnb3QgJHt1YSh0KX0uYCl9KShuKTtsZXQgcj10LmRhdGFbZV07aWYobnVsbD09PXIpcj1DZCh0LGUsbixvLGkpLChmdW5jdGlvbiBzKCl7cmV0dXJuIF9pLmxGcmFtZS5pbkkxOG59KSgpJiYoci5mbGFnc3w9NjQpO2Vsc2UgaWYoNjQmci50eXBlKXtyLnR5cGU9bixyLnZhbHVlPW8sci5hdHRycz1pO2NvbnN0IGE9U2koKTtyLmluamVjdG9ySW5kZXg9bnVsbD09PWE/LTE6YS5pbmplY3RvckluZGV4LG5nRGV2TW9kZSYmQW8ocix0KSxuZ0Rldk1vZGUmJmduKGUsci5pbmRleCwiRXhwZWN0aW5nIHNhbWUgaW5kZXgiKX1yZXR1cm4gRGkociwhMCkscn1mdW5jdGlvbiBDZCh0LGUsbixvLGkpe2NvbnN0IGE9a2koKSxyPVJpKCkscz10LmRhdGFbZV09KGZ1bmN0aW9uIGwodCxlLG4sbyxpLGEpe25nRGV2TW9kZSYmMCE9PW8mJnZuKG8sdm8sIlROb2RlcyBjYW4ndCBiZSBpbiB0aGUgTFZpZXcgaGVhZGVyLiIpLG5nRGV2TW9kZSYmeW4oYSx2b2lkIDAsIid1bmRlZmluZWQnIGlzIG5vdCB2YWxpZCB2YWx1ZSBmb3IgJ2F0dHJzJyIpLG5nRGV2TW9kZSYmbmdEZXZNb2RlLnROb2RlKyssbmdEZXZNb2RlJiZlJiZBbyhlLHQpO2xldCByPWU/ZS5pbmplY3RvckluZGV4Oi0xO2NvbnN0IHM9bmdEZXZNb2RlP25ldyBxYyh0LG4sbyxudWxsLHIsLTEsLTEsLTEsbnVsbCwwLDAsaSxhLG51bGwsbnVsbCx2b2lkIDAsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsZSxudWxsLG51bGwsbnVsbCx2b2lkIDAsbnVsbCxudWxsLHZvaWQgMCwwLDApOnt0eXBlOm4saW5kZXg6byxpbnNlcnRCZWZvcmVJbmRleDpudWxsLGluamVjdG9ySW5kZXg6cixkaXJlY3RpdmVTdGFydDotMSxkaXJlY3RpdmVFbmQ6LTEsZGlyZWN0aXZlU3R5bGluZ0xhc3Q6LTEscHJvcGVydHlCaW5kaW5nczpudWxsLGZsYWdzOjAscHJvdmlkZXJJbmRleGVzOjAsdmFsdWU6aSxhdHRyczphLG1lcmdlZEF0dHJzOm51bGwsbG9jYWxOYW1lczpudWxsLGluaXRpYWxJbnB1dHM6dm9pZCAwLGlucHV0czpudWxsLG91dHB1dHM6bnVsbCx0Vmlld3M6bnVsbCxuZXh0Om51bGwscHJvamVjdGlvbk5leHQ6bnVsbCxjaGlsZDpudWxsLHBhcmVudDplLHByb2plY3Rpb246bnVsbCxzdHlsZXM6bnVsbCxzdHlsZXNXaXRob3V0SG9zdDpudWxsLHJlc2lkdWFsU3R5bGVzOnZvaWQgMCxjbGFzc2VzOm51bGwsY2xhc3Nlc1dpdGhvdXRIb3N0Om51bGwscmVzaWR1YWxDbGFzc2VzOnZvaWQgMCxjbGFzc0JpbmRpbmdzOjAsc3R5bGVCaW5kaW5nczowfTtuZ0Rldk1vZGUmJk9iamVjdC5zZWFsKHMpO3JldHVybiBzfSkodCxyP2E6YSYmYS5wYXJlbnQsbixlLG8saSk7cmV0dXJuIG51bGw9PT10LmZpcnN0Q2hpbGQmJih0LmZpcnN0Q2hpbGQ9cyksbnVsbCE9PWEmJihyP251bGw9PWEuY2hpbGQmJm51bGwhPT1zLnBhcmVudCYmKGEuY2hpbGQ9cyk6bnVsbD09PWEubmV4dCYmKGEubmV4dD1zKSksc31mdW5jdGlvbiBNZCh0LGUsbixvKXtpZigwPT09bilyZXR1cm4tMTtuZ0Rldk1vZGUmJihMbyh0KSxibih0LGVbMV0sImBMVmlld2AgbXVzdCBiZSBhc3NvY2lhdGVkIHdpdGggYFRWaWV3YCEiKSxnbih0LmRhdGEubGVuZ3RoLGUubGVuZ3RoLCJFeHBlY3RpbmcgTFZpZXcgdG8gYmUgc2FtZSBzaXplIGFzIFRWaWV3IiksZ24odC5kYXRhLmxlbmd0aCx0LmJsdWVwcmludC5sZW5ndGgsIkV4cGVjdGluZyBCbHVlcHJpbnQgdG8gYmUgc2FtZSBzaXplIGFzIFRWaWV3IiksQm8odCkpO2NvbnN0IGk9ZS5sZW5ndGg7Zm9yKGxldCBpPTA7aTxuO2krKyllLnB1c2gobyksdC5ibHVlcHJpbnQucHVzaChvKSx0LmRhdGEucHVzaChudWxsKTtyZXR1cm4gaX1mdW5jdGlvbiB2ZCh0LGUsbil7bmdEZXZNb2RlJiZnbih1aShlKSwhMCwiU2hvdWxkIGJlIHJ1biBpbiBjcmVhdGlvbiBtb2RlIikscWkoZSk7dHJ5e2NvbnN0IG89dC52aWV3UXVlcnk7bnVsbCE9PW8mJnNwKDEsbyxuKTtjb25zdCBpPXQudGVtcGxhdGU7bnVsbCE9PWkmJlBkKHQsZSxpLDEsbiksdC5maXJzdENyZWF0ZVBhc3MmJih0LmZpcnN0Q3JlYXRlUGFzcz0hMSksdC5zdGF0aWNDb250ZW50UXVlcmllcyYmYmQodCxlKSx0LnN0YXRpY1ZpZXdRdWVyaWVzJiZzcCgyLHQudmlld1F1ZXJ5LG4pO2NvbnN0IGE9dC5jb21wb25lbnRzO251bGwhPT1hJiYoZnVuY3Rpb24gbyh0LGUpe2ZvcihsZXQgbj0wO248ZS5sZW5ndGg7bisrKWVwKHQsZVtuXSl9KShlLGEpfWNhdGNoKGUpe3Rocm93IHQuZmlyc3RDcmVhdGVQYXNzJiYodC5pbmNvbXBsZXRlRmlyc3RQYXNzPSEwLHQuZmlyc3RDcmVhdGVQYXNzPSExKSxlfWZpbmFsbHl7ZVsyXSY9LTUsUWkoKX19ZnVuY3Rpb24geGQodCxlLG4sbyl7bmdEZXZNb2RlJiZnbih1aShlKSwhMSwiU2hvdWxkIGJlIHJ1biBpbiB1cGRhdGUgbW9kZSIpO2NvbnN0IGk9ZVsyXTtpZigyNTY9PSgyNTYmaSkpcmV0dXJuO3FpKGUpO2NvbnN0IGE9QWkoKTt0cnl7YmkoZSksSWkodC5iaW5kaW5nU3RhcnRJbmRleCksbnVsbCE9PW4mJlBkKHQsZSxuLDIsbyk7Y29uc3Qgcj0zPT0oMyZpKTtpZighYSlpZihyKXtjb25zdCBuPXQucHJlT3JkZXJDaGVja0hvb2tzO251bGwhPT1uJiZzYShlLG4sbnVsbCl9ZWxzZXtjb25zdCBuPXQucHJlT3JkZXJIb29rcztudWxsIT09biYmbGEoZSxuLDAsbnVsbCksY2EoZSwwKX1pZigoZnVuY3Rpb24gcih0KXtmb3IobGV0IGU9SWwodCk7bnVsbCE9PWU7ZT1IbChlKSl7aWYoIWVbMl0pY29udGludWU7Y29uc3QgdD1lWzldO25nRGV2TW9kZSYmeG4odCwiVHJhbnNwbGFudGVkIFZpZXcgZmxhZ3Mgc2V0IGJ1dCBtaXNzaW5nIE1PVkVEX1ZJRVdTIik7Zm9yKGxldCBlPTA7ZTx0Lmxlbmd0aDtlKyspe2NvbnN0IG49dFtlXSxvPW5bM107bmdEZXZNb2RlJiZJbyhvKSwwPT0oMTAyNCZuWzJdKSYmeWkobywxKSxuWzJdfD0xMDI0fX19KShlKSwoZnVuY3Rpb24gcyh0KXtmb3IobGV0IGU9SWwodCk7bnVsbCE9PWU7ZT1IbChlKSlmb3IobGV0IHQ9T287dDxlLmxlbmd0aDt0Kyspe2NvbnN0IG49ZVt0XSxvPW5bMV07bmdEZXZNb2RlJiZ4bihvLCJUVmlldyBtdXN0IGJlIGFsbG9jYXRlZCIpLGdpKG4pJiZ4ZChvLG4sby50ZW1wbGF0ZSxuWzhdKX19KShlKSxudWxsIT09dC5jb250ZW50UXVlcmllcyYmYmQodCxlKSwhYSlpZihyKXtjb25zdCBuPXQuY29udGVudENoZWNrSG9va3M7bnVsbCE9PW4mJnNhKGUsbil9ZWxzZXtjb25zdCBuPXQuY29udGVudEhvb2tzO251bGwhPT1uJiZsYShlLG4sMSksY2EoZSwxKX0hKGZ1bmN0aW9uIGwodCxlKXtjb25zdCBuPXQuaG9zdEJpbmRpbmdPcENvZGVzO2lmKG51bGwhPT1uKXRyeXtmb3IobGV0IHQ9MDt0PG4ubGVuZ3RoO3QrKyl7Y29uc3Qgbz1uW3RdO2lmKG88MCllYSh+byk7ZWxzZXtjb25zdCBpPW8sYT1uWysrdF0scj1uWysrdF07QmkoYSxpKSxyKDIsZVtpXSl9fX1maW5hbGx5e2VhKC0xKX19KSh0LGUpO2NvbnN0IHM9dC5jb21wb25lbnRzO251bGwhPT1zJiYoZnVuY3Rpb24gYyh0LGUpe2ZvcihsZXQgbj0wO248ZS5sZW5ndGg7bisrKSRkKHQsZVtuXSl9KShlLHMpO2NvbnN0IGw9dC52aWV3UXVlcnk7aWYobnVsbCE9PWwmJnNwKDIsbCxvKSwhYSlpZihyKXtjb25zdCBuPXQudmlld0NoZWNrSG9va3M7bnVsbCE9PW4mJnNhKGUsbil9ZWxzZXtjb25zdCBuPXQudmlld0hvb2tzO251bGwhPT1uJiZsYShlLG4sMiksY2EoZSwyKX0hMD09PXQuZmlyc3RVcGRhdGVQYXNzJiYodC5maXJzdFVwZGF0ZVBhc3M9ITEpLGF8fChlWzJdJj0tNzMpLDEwMjQmZVsyXSYmKGVbMl0mPS0xMDI1LHlpKGVbM10sLTEpKX1maW5hbGx5e1FpKCl9fWZ1bmN0aW9uIE9kKHQsZSxuLG8pe2NvbnN0IGk9ZVsxMF0sYT0hQWkoKSxyPXVpKGUpO3RyeXthJiYhciYmaS5iZWdpbiYmaS5iZWdpbigpLHImJnZkKHQsZSxvKSx4ZCh0LGUsbixvKX1maW5hbGx5e2EmJiFyJiZpLmVuZCYmaS5lbmQoKX19ZnVuY3Rpb24gUGQodCxlLG4sbyxpKXtjb25zdCBhPXRhKCkscj0yJm87dHJ5e2VhKC0xKSxyJiZlLmxlbmd0aD52byYmUmModCxlLHZvLEFpKCkpO3RpKHI/MjowLGkpLG4obyxpKX1maW5hbGx5e2VhKGEpO3RpKHI/MzoxLGkpfX1mdW5jdGlvbiB3ZCh0LGUsbil7aWYoa28oZSkpe2NvbnN0IG89ZS5kaXJlY3RpdmVFbmQ7Zm9yKGxldCBpPWUuZGlyZWN0aXZlU3RhcnQ7aTxvO2krKyl7Y29uc3QgZT10LmRhdGFbaV07ZS5jb250ZW50UXVlcmllcyYmZS5jb250ZW50UXVlcmllcygxLG5baV0saSl9fX1mdW5jdGlvbiBrZCh0LGUsbil7Q2koKSYmKCEoZnVuY3Rpb24gbyh0LGUsbixpKXtjb25zdCBhPW4uZGlyZWN0aXZlU3RhcnQscj1uLmRpcmVjdGl2ZUVuZDt0LmZpcnN0Q3JlYXRlUGFzc3x8a2EobixlKTthbChpLGUpO2NvbnN0IHM9bi5pbml0aWFsSW5wdXRzO2ZvcihsZXQgbz1hO288cjtvKyspe2NvbnN0IGk9dC5kYXRhW29dLHI9Um8oaSk7ciYmKG5nRGV2TW9kZSYmZ2EobiwzKSxZZChlLG4saSkpO2NvbnN0IGw9TGEoZSx0LG8sbik7aWYoYWwobCxlKSxudWxsIT09cyYmWGQoZSxvLWEsbCxpLG4scykscil7Zmkobi5pbmRleCxlKVs4XT1sfX19KSh0LGUsbixkaShuLGUpKSwxMjg9PSgxMjgmbi5mbGFncykmJihmdW5jdGlvbiBpKHQsZSxuKXtjb25zdCBvPW4uZGlyZWN0aXZlU3RhcnQsaT1uLmRpcmVjdGl2ZUVuZDtjb25zdCBhPW4uaW5kZXgscj0oZnVuY3Rpb24gcygpe3JldHVybiBfaS5sRnJhbWUuY3VycmVudERpcmVjdGl2ZUluZGV4fSkoKTt0cnl7ZWEoYSk7Zm9yKGxldCBuPW87bjxpO24rKyl7Y29uc3Qgbz10LmRhdGFbbl0saT1lW25dO1ZpKG4pLG51bGw9PT1vLmhvc3RCaW5kaW5ncyYmMD09PW8uaG9zdFZhcnMmJm51bGw9PT1vLmhvc3RBdHRyc3x8VmQobyxpKX19ZmluYWxseXtlYSgtMSksVmkocil9fSkodCxlLG4pKX1mdW5jdGlvbiBTZCh0LGUsbj1kaSl7Y29uc3Qgbz1lLmxvY2FsTmFtZXM7aWYobnVsbCE9PW8pe2xldCBpPWUuaW5kZXgrMTtmb3IobGV0IGE9MDthPG8ubGVuZ3RoO2ErPTIpe2NvbnN0IHI9b1thKzFdLHM9LTE9PT1yP24oZSx0KTp0W3JdO3RbaSsrXT1zfX19ZnVuY3Rpb24gRGQodCl7Y29uc3QgZT10LnRWaWV3O2lmKG51bGw9PT1lfHxlLmluY29tcGxldGVGaXJzdFBhc3Mpe3JldHVybiB0LnRWaWV3PVJkKDEsbnVsbCx0LnRlbXBsYXRlLHQuZGVjbHMsdC52YXJzLHQuZGlyZWN0aXZlRGVmcyx0LnBpcGVEZWZzLHQudmlld1F1ZXJ5LHQuc2NoZW1hcyx0LmNvbnN0cyl9cmV0dXJuIGV9ZnVuY3Rpb24gUmQodCxlLG4sbyxpLGEscixzLGwsYyl7bmdEZXZNb2RlJiZuZ0Rldk1vZGUudFZpZXcrKztjb25zdCBkPXZvK28scD1kK2ksbT0oZnVuY3Rpb24gZih0LGUpe2NvbnN0IG49bmdEZXZNb2RlP25ldyBRYzpbXTtmb3IobGV0IG89MDtvPGU7bysrKW4ucHVzaChvPHQ/bnVsbDpTYyk7cmV0dXJuIG59KShkLHApLHU9ImZ1bmN0aW9uIj09dHlwZW9mIGM/YygpOmMsZz1tWzFdPW5nRGV2TW9kZT9uZXcgY2xhc3N7Y29uc3RydWN0b3IodCxlLG4sbyxpLGEscixzLGwsYyxkLHAsbSxmLHUsZyxoLGIseSxfLEMsTSx2LHgsTyxQLHcsayxTLEQsUixFKXt0aGlzLnR5cGU9dCx0aGlzLmJsdWVwcmludD1lLHRoaXMudGVtcGxhdGU9bix0aGlzLnF1ZXJpZXM9byx0aGlzLnZpZXdRdWVyeT1pLHRoaXMuZGVjbFROb2RlPWEsdGhpcy5kYXRhPXIsdGhpcy5iaW5kaW5nU3RhcnRJbmRleD1zLHRoaXMuZXhwYW5kb1N0YXJ0SW5kZXg9bCx0aGlzLmhvc3RCaW5kaW5nT3BDb2Rlcz1jLHRoaXMuZmlyc3RDcmVhdGVQYXNzPWQsdGhpcy5maXJzdFVwZGF0ZVBhc3M9cCx0aGlzLnN0YXRpY1ZpZXdRdWVyaWVzPW0sdGhpcy5zdGF0aWNDb250ZW50UXVlcmllcz1mLHRoaXMucHJlT3JkZXJIb29rcz11LHRoaXMucHJlT3JkZXJDaGVja0hvb2tzPWcsdGhpcy5jb250ZW50SG9va3M9aCx0aGlzLmNvbnRlbnRDaGVja0hvb2tzPWIsdGhpcy52aWV3SG9va3M9eSx0aGlzLnZpZXdDaGVja0hvb2tzPV8sdGhpcy5kZXN0cm95SG9va3M9Qyx0aGlzLmNsZWFudXA9TSx0aGlzLmNvbnRlbnRRdWVyaWVzPXYsdGhpcy5jb21wb25lbnRzPXgsdGhpcy5kaXJlY3RpdmVSZWdpc3RyeT1PLHRoaXMucGlwZVJlZ2lzdHJ5PVAsdGhpcy5maXJzdENoaWxkPXcsdGhpcy5zY2hlbWFzPWssdGhpcy5jb25zdHM9Uyx0aGlzLmluY29tcGxldGVGaXJzdFBhc3M9RCx0aGlzLl9kZWNscz1SLHRoaXMuX3ZhcnM9RX1nZXQgdGVtcGxhdGVfKCl7Y29uc3QgdD1bXTtyZXR1cm4gWGModGhpcy5maXJzdENoaWxkLHQpLHQuam9pbigiIil9Z2V0IHR5cGVfKCl7cmV0dXJuIHhvW3RoaXMudHlwZV18fGBUVmlld1R5cGUuPyR7dGhpcy50eXBlfT9gfX0odCxtLG4sbnVsbCxzLGUsKGZ1bmN0aW9uIGgodCl7cmV0dXJuIHZvaWQgMD09PUpjJiYoSmM9bmV3IEtjKSxKYy5jb25jYXQodCl9KShtKS5maWxsKG51bGwsZCksZCxwLG51bGwsITAsITAsITEsITEsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwiZnVuY3Rpb24iPT10eXBlb2YgYT9hKCk6YSwiZnVuY3Rpb24iPT10eXBlb2Ygcj9yKCk6cixudWxsLGwsdSwhMSxvLGkpOnt0eXBlOnQsYmx1ZXByaW50Om0sdGVtcGxhdGU6bixxdWVyaWVzOm51bGwsdmlld1F1ZXJ5OnMsZGVjbFROb2RlOmUsZGF0YTptLnNsaWNlKCkuZmlsbChudWxsLGQpLGJpbmRpbmdTdGFydEluZGV4OmQsZXhwYW5kb1N0YXJ0SW5kZXg6cCxob3N0QmluZGluZ09wQ29kZXM6bnVsbCxmaXJzdENyZWF0ZVBhc3M6ITAsZmlyc3RVcGRhdGVQYXNzOiEwLHN0YXRpY1ZpZXdRdWVyaWVzOiExLHN0YXRpY0NvbnRlbnRRdWVyaWVzOiExLHByZU9yZGVySG9va3M6bnVsbCxwcmVPcmRlckNoZWNrSG9va3M6bnVsbCxjb250ZW50SG9va3M6bnVsbCxjb250ZW50Q2hlY2tIb29rczpudWxsLHZpZXdIb29rczpudWxsLHZpZXdDaGVja0hvb2tzOm51bGwsZGVzdHJveUhvb2tzOm51bGwsY2xlYW51cDpudWxsLGNvbnRlbnRRdWVyaWVzOm51bGwsY29tcG9uZW50czpudWxsLGRpcmVjdGl2ZVJlZ2lzdHJ5OiJmdW5jdGlvbiI9PXR5cGVvZiBhP2EoKTphLHBpcGVSZWdpc3RyeToiZnVuY3Rpb24iPT10eXBlb2Ygcj9yKCk6cixmaXJzdENoaWxkOm51bGwsc2NoZW1hczpsLGNvbnN0czp1LGluY29tcGxldGVGaXJzdFBhc3M6ITF9O3JldHVybiBuZ0Rldk1vZGUmJk9iamVjdC5zZWFsKGcpLGd9ZnVuY3Rpb24gRWQodCxlKXtyZXR1cm4gbmV3IEVycm9yKGBSZW5kZXJlcjogJHt0fSBbJHtzbihlKX1dYCl9ZnVuY3Rpb24gQWQodCxlLG4pe2lmKHJpKHQpKXtyZXR1cm4gdC5zZWxlY3RSb290RWxlbWVudChlLG49PT1Xbi5TaGFkb3dEb20pfWxldCBvPSJzdHJpbmciPT10eXBlb2YgZT90LnF1ZXJ5U2VsZWN0b3IoZSk6ZTtyZXR1cm4gbmdEZXZNb2RlJiYoZnVuY3Rpb24gaSh0LGUpe2lmKCF0KXRocm93IEVkKCJzdHJpbmciPT10eXBlb2YgZT8iSG9zdCBub2RlIHdpdGggc2VsZWN0b3Igbm90IGZvdW5kOiI6Ikhvc3Qgbm9kZSBpcyByZXF1aXJlZDoiLGUpfSkobyxlKSxvLnRleHRDb250ZW50PSIiLG99ZnVuY3Rpb24gVGQodCxlLG4sbyl7Y29uc3QgaT1kcChlKTtudWxsPT09bj8obmdEZXZNb2RlJiZPYmplY3QuZnJlZXplKHBwKHQpKSxpLnB1c2gobykpOihpLnB1c2gobiksdC5maXJzdENyZWF0ZVBhc3MmJnBwKHQpLnB1c2gobyxpLmxlbmd0aC0xKSl9ZnVuY3Rpb24gTmQodCxlLG4pe2ZvcihsZXQgbyBpbiB0KWlmKHQuaGFzT3duUHJvcGVydHkobykpe2NvbnN0IGk9dFtvXTsobj1udWxsPT09bj97fTpuKS5oYXNPd25Qcm9wZXJ0eShvKT9uW29dLnB1c2goZSxpKTpuW29dPVtlLGldfXJldHVybiBufWZ1bmN0aW9uIHpkKHQsZSxuLG8saSxhLHIscyl7bmdEZXZNb2RlJiZ5bihpLFNjLCJJbmNvbWluZyB2YWx1ZSBzaG91bGQgbmV2ZXIgYmUgTk9fQ0hBTkdFLiIpO2NvbnN0IGw9ZGkoZSxuKTtsZXQgYyxkPWUuaW5wdXRzO2lmKCFzJiZudWxsIT1kJiYoYz1kW29dKSl1cCh0LG4sYyxvLGkpLFNvKGUpJiYoZnVuY3Rpb24gcCh0LGUpe25nRGV2TW9kZSYmRm8odCk7Y29uc3Qgbj1maShlLHQpOzE2Jm5bMl18fChuWzJdfD02NCl9KShuLGUuaW5kZXgpLG5nRGV2TW9kZSYmKGZ1bmN0aW9uIG0odCxlLG4sbyxpKXtpZig3Jm4pZm9yKGxldCBhPTA7YTxvLmxlbmd0aDthKz0yKUlkKHQsZSxuLG9bYSsxXSxpKX0pKG4sbCxlLnR5cGUsYyxpKTtlbHNlIGlmKDMmZS50eXBlKXtpZihvPShmdW5jdGlvbiBmKHQpe3JldHVybiJjbGFzcyI9PT10PyJjbGFzc05hbWUiOiJmb3IiPT09dD8iaHRtbEZvciI6ImZvcm1hY3Rpb24iPT09dD8iZm9ybUFjdGlvbiI6ImlubmVySHRtbCI9PT10PyJpbm5lckhUTUwiOiJyZWFkb25seSI9PT10PyJyZWFkT25seSI6InRhYmluZGV4Ij09PXQ/InRhYkluZGV4Ijp0fSkobyksbmdEZXZNb2RlKXtpZigoZnVuY3Rpb24gdSh0KXtpZih0LnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aCgib24iKSl7Y29uc3QgZT1gQmluZGluZyB0byBldmVudCBwcm9wZXJ0eSAnJHt0fScgaXMgZGlzYWxsb3dlZCBmb3Igc2VjdXJpdHkgcmVhc29ucywgcGxlYXNlIHVzZSAoJHt0LnNsaWNlKDIpfSk9Li4uXG5JZiAnJHt0fScgaXMgYSBkaXJlY3RpdmUgaW5wdXQsIG1ha2Ugc3VyZSB0aGUgZGlyZWN0aXZlIGlzIGltcG9ydGVkIGJ5IHRoZSBjdXJyZW50IG1vZHVsZS5gO3Rocm93IG5ldyBFcnJvcihlKX19KShvKSwhKGZ1bmN0aW9uIGcodCxlLG4sbyl7aWYobnVsbD09PXQuc2NoZW1hcylyZXR1cm4hMDtpZihIZCh0LG8udmFsdWUpfHxuIGluIGV8fHlhKG4pKXJldHVybiEwO3JldHVybiJ1bmRlZmluZWQiPT10eXBlb2YgTm9kZXx8bnVsbD09PU5vZGV8fCEoZSBpbnN0YW5jZW9mIE5vZGUpfSkodCxsLG8sZSkpcmV0dXJuIHZvaWQgRmQobyxlKTtuZ0Rldk1vZGUucmVuZGVyZXJTZXRQcm9wZXJ0eSsrfWk9bnVsbCE9cj9yKGksZS52YWx1ZXx8IiIsbyk6aSxyaShhKT9hLnNldFByb3BlcnR5KGwsbyxpKTp5YShvKXx8KGwuc2V0UHJvcGVydHk/bC5zZXRQcm9wZXJ0eShvLGkpOmxbb109aSl9ZWxzZSAxMiZlLnR5cGUmJm5nRGV2TW9kZSYmIUhkKHQsZS52YWx1ZSkmJkZkKG8sZSl9ZnVuY3Rpb24gSWQodCxlLG4sbyxpKXtjb25zdCBhPXRbMTFdO289TWwobyk7Y29uc3Qgcj0oZnVuY3Rpb24gcyh0KXt0cnl7cmV0dXJuIG51bGwhPXQ/dC50b1N0cmluZygpLnNsaWNlKDAsMzApOnR9Y2F0Y2godCl7cmV0dXJuIltFUlJPUl0gRXhjZXB0aW9uIHdoaWxlIHRyeWluZyB0byBzZXJpYWxpemUgdGhlIHZhbHVlIn19KShpKTtpZigzJm4pbnVsbD09aT9yaShhKT9hLnJlbW92ZUF0dHJpYnV0ZShlLG8pOmUucmVtb3ZlQXR0cmlidXRlKG8pOnJpKGEpP2Euc2V0QXR0cmlidXRlKGUsbyxyKTplLnNldEF0dHJpYnV0ZShvLHIpO2Vsc2V7Y29uc3QgdD1fbChgYmluZGluZ3M9JHtKU09OLnN0cmluZ2lmeSh7W29dOnJ9LG51bGwsMil9YCk7cmkoYSk/YS5zZXRWYWx1ZShlLHQpOmUudGV4dENvbnRlbnQ9dH19ZnVuY3Rpb24gSGQodCxlKXtjb25zdCBuPXQuc2NoZW1hcztpZihudWxsIT09bilmb3IobGV0IHQ9MDt0PG4ubGVuZ3RoO3QrKyl7Y29uc3Qgbz1uW3RdO2lmKG89PT1obHx8bz09PWdsJiZlJiZlLmluZGV4T2YoIi0iKT4tMSlyZXR1cm4hMH1yZXR1cm4hMX1mdW5jdGlvbiBGZCh0LGUpe2NvbnNvbGUuZXJyb3IoYW4oIjMwMyIsYENhbid0IGJpbmQgdG8gJyR7dH0nIHNpbmNlIGl0IGlzbid0IGEga25vd24gcHJvcGVydHkgb2YgJyR7ZS52YWx1ZX0nLmApKX1mdW5jdGlvbiBMZCh0LGUsbixvKXtuZ0Rldk1vZGUmJkxvKHQpO2xldCBpPSExO2lmKENpKCkpe2NvbnN0IGE9KGZ1bmN0aW9uIGEodCxlLG4pe25nRGV2TW9kZSYmTG8odCksbmdEZXZNb2RlJiZnYShuLDE1KTtjb25zdCBvPXQuZGlyZWN0aXZlUmVnaXN0cnk7bGV0IGk9bnVsbDtpZihvKWZvcihsZXQgYT0wO2E8by5sZW5ndGg7YSsrKXtjb25zdCByPW9bYV07T2MobixyLnNlbGVjdG9ycywhMSkmJihpfHwoaT1uZ0Rldk1vZGU/bmV3ICRjOltdKSxFYShrYShuLGUpLHQsci50eXBlKSxSbyhyKT8obmdEZXZNb2RlJiYoZ2EobiwyLGAiJHtuLnZhbHVlfSIgdGFncyBjYW5ub3QgYmUgdXNlZCBhcyBjb21wb25lbnQgaG9zdHMuIFBsZWFzZSB1c2UgYSBkaWZmZXJlbnQgdGFnIHRvIGFjdGl2YXRlIHRoZSAke0tlKHIudHlwZSl9IGNvbXBvbmVudC5gKSwyJm4uZmxhZ3MmJkRsKG4pKSxqZCh0LG4pLGkudW5zaGlmdChyKSk6aS5wdXNoKHIpKX1yZXR1cm4gaX0pKHQsZSxuKSxyPW51bGw9PT1vP251bGw6eyIiOi0xfTtpZihudWxsIT09YSl7aT0hMCxXZChuLHQuZGF0YS5sZW5ndGgsYS5sZW5ndGgpO2ZvcihsZXQgdD0wO3Q8YS5sZW5ndGg7dCsrKXtjb25zdCBlPWFbdF07ZS5wcm92aWRlcnNSZXNvbHZlciYmZS5wcm92aWRlcnNSZXNvbHZlcihlKX1sZXQgbz0hMSxzPSExLGw9TWQodCxlLGEubGVuZ3RoLG51bGwpO25nRGV2TW9kZSYmYm4obCxuLmRpcmVjdGl2ZVN0YXJ0LCJUTm9kZS5kaXJlY3RpdmVTdGFydCBzaG91bGQgcG9pbnQgdG8ganVzdCBhbGxvY2F0ZWQgc3BhY2UiKTtmb3IobGV0IGk9MDtpPGEubGVuZ3RoO2krKyl7Y29uc3QgYz1hW2ldO24ubWVyZ2VkQXR0cnM9X2Eobi5tZXJnZWRBdHRycyxjLmhvc3RBdHRycyksR2QodCxuLGUsbCxjKSxVZChsLGMsciksbnVsbCE9PWMuY29udGVudFF1ZXJpZXMmJihuLmZsYWdzfD04KSxudWxsPT09Yy5ob3N0QmluZGluZ3MmJm51bGw9PT1jLmhvc3RBdHRycyYmMD09PWMuaG9zdFZhcnN8fChuLmZsYWdzfD0xMjgpO2NvbnN0IGQ9Yy50eXBlLnByb3RvdHlwZTshbyYmKGQubmdPbkNoYW5nZXN8fGQubmdPbkluaXR8fGQubmdEb0NoZWNrKSYmKCh0LnByZU9yZGVySG9va3N8fCh0LnByZU9yZGVySG9va3M9W10pKS5wdXNoKG4uaW5kZXgpLG89ITApLHN8fCFkLm5nT25DaGFuZ2VzJiYhZC5uZ0RvQ2hlY2t8fCgodC5wcmVPcmRlckNoZWNrSG9va3N8fCh0LnByZU9yZGVyQ2hlY2tIb29rcz1bXSkpLnB1c2gobi5pbmRleCkscz0hMCksbCsrfSEoZnVuY3Rpb24gcih0LGUpe25nRGV2TW9kZSYmTG8odCk7Y29uc3Qgbj1lLmRpcmVjdGl2ZVN0YXJ0LG89ZS5kaXJlY3RpdmVFbmQsaT10LmRhdGEsYT1lLmF0dHJzLHI9bmdEZXZNb2RlP25ldyBuZDpbXTtsZXQgcz1udWxsLGw9bnVsbDtmb3IobGV0IHQ9bjt0PG87dCsrKXtjb25zdCBuPWlbdF0sbz1uLmlucHV0cyxjPW51bGw9PT1hfHxfYyhlKT9udWxsOktkKG8sYSk7ci5wdXNoKGMpLHM9TmQobyx0LHMpLGw9TmQobi5vdXRwdXRzLHQsbCl9bnVsbCE9PXMmJihzLmhhc093blByb3BlcnR5KCJjbGFzcyIpJiYoZS5mbGFnc3w9MTYpLHMuaGFzT3duUHJvcGVydHkoInN0eWxlIikmJihlLmZsYWdzfD0zMikpLGUuaW5pdGlhbElucHV0cz1yLGUuaW5wdXRzPXMsZS5vdXRwdXRzPWx9KSh0LG4pfXImJihmdW5jdGlvbiBzKHQsZSxuKXtpZihlKXtjb25zdCBvPXQubG9jYWxOYW1lcz1uZ0Rldk1vZGU/bmV3IGVkOltdO2ZvcihsZXQgdD0wO3Q8ZS5sZW5ndGg7dCs9Mil7Y29uc3QgaT1uW2VbdCsxXV07aWYobnVsbD09aSl0aHJvdyBuZXcgbm4oIjMwMSIsYEV4cG9ydCBvZiBuYW1lICcke2VbdCsxXX0nIG5vdCBmb3VuZCFgKTtvLnB1c2goZVt0XSxpKX19fSkobixvLHIpfXJldHVybiBuLm1lcmdlZEF0dHJzPV9hKG4ubWVyZ2VkQXR0cnMsbi5hdHRycyksaX1mdW5jdGlvbiBCZCh0LGUsbixvLGksYSl7bmdEZXZNb2RlJiZMbyh0KTtjb25zdCByPWEuaG9zdEJpbmRpbmdzO2lmKHIpe2xldCBuPXQuaG9zdEJpbmRpbmdPcENvZGVzO251bGw9PT1uJiYobj10Lmhvc3RCaW5kaW5nT3BDb2Rlcz1bXSk7Y29uc3QgYT1+ZS5pbmRleDsoZnVuY3Rpb24gcyh0KXtsZXQgZT10Lmxlbmd0aDtmb3IoO2U+MDspe2NvbnN0IG49dFstLWVdO2lmKCJudW1iZXIiPT10eXBlb2YgbiYmbjwwKXJldHVybiBufXJldHVybiAwfSkobikhPWEmJm4ucHVzaChhKSxuLnB1c2gobyxpLHIpfX1mdW5jdGlvbiBWZCh0LGUpe251bGwhPT10Lmhvc3RCaW5kaW5ncyYmdC5ob3N0QmluZGluZ3MoMSxlKX1mdW5jdGlvbiBqZCh0LGUpe25nRGV2TW9kZSYmTG8odCksZS5mbGFnc3w9MiwodC5jb21wb25lbnRzfHwodC5jb21wb25lbnRzPW5nRGV2TW9kZT9uZXcgdGQ6W10pKS5wdXNoKGUuaW5kZXgpfWZ1bmN0aW9uIFVkKHQsZSxuKXtpZihuKXtpZihlLmV4cG9ydEFzKWZvcihsZXQgbz0wO288ZS5leHBvcnRBcy5sZW5ndGg7bysrKW5bZS5leHBvcnRBc1tvXV09dDtSbyhlKSYmKG5bIiJdPXQpfX1mdW5jdGlvbiBXZCh0LGUsbil7bmdEZXZNb2RlJiZobihuLHQuZGlyZWN0aXZlRW5kLXQuZGlyZWN0aXZlU3RhcnQsIlJlYWNoZWQgdGhlIG1heCBudW1iZXIgb2YgZGlyZWN0aXZlcyIpLHQuZmxhZ3N8PTEsdC5kaXJlY3RpdmVTdGFydD1lLHQuZGlyZWN0aXZlRW5kPWUrbix0LnByb3ZpZGVySW5kZXhlcz1lfWZ1bmN0aW9uIEdkKHQsZSxuLG8saSl7bmdEZXZNb2RlJiZ2bihvLHZvLCJNdXN0IGJlIGluIEV4cGFuZG8gc2VjdGlvbiIpLHQuZGF0YVtvXT1pO2NvbnN0IGE9aS5mYWN0b3J5fHwoaS5mYWN0b3J5PUdvKGkudHlwZSwhMCkpLHI9bmV3IGZhKGEsUm8oaSksbnVsbCk7dC5ibHVlcHJpbnRbb109cixuW29dPXIsQmQodCxlLDAsbyxNZCh0LG4saS5ob3N0VmFycyxTYyksaSl9ZnVuY3Rpb24gWWQodCxlLG4pe2NvbnN0IG89ZGkoZSx0KSxpPURkKG4pLGE9dFsxMF0scj1ucCh0LHlkKHQsaSxudWxsLG4ub25QdXNoPzY0OjE2LG8sZSxhLGEuY3JlYXRlUmVuZGVyZXIobyxuKSxudWxsLG51bGwpKTt0W2UuaW5kZXhdPXJ9ZnVuY3Rpb24gcWQodCxlLG4sbyxpLGEpe25nRGV2TW9kZSYmKHluKG8sU2MsIkluY29taW5nIHZhbHVlIHNob3VsZCBuZXZlciBiZSBOT19DSEFOR0UuIiksKGZ1bmN0aW9uIHIodCl7aWYodC50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoIm9uIikpe2NvbnN0IGU9YEJpbmRpbmcgdG8gZXZlbnQgYXR0cmlidXRlICcke3R9JyBpcyBkaXNhbGxvd2VkIGZvciBzZWN1cml0eSByZWFzb25zLCBwbGVhc2UgdXNlICgke3Quc2xpY2UoMil9KT0uLi5gO3Rocm93IG5ldyBFcnJvcihlKX19KShuKSxnYSh0LDIsYEF0dGVtcHRlZCB0byBzZXQgYXR0cmlidXRlIFxgJHtufVxgIG9uIGEgY29udGFpbmVyIG5vZGUuIEhvc3QgYmluZGluZ3MgYXJlIG5vdCB2YWxpZCBvbiBuZy1jb250YWluZXIgb3IgbmctdGVtcGxhdGUuYCkpO2NvbnN0IHM9ZGkodCxlKTtaZChlWzExXSxzLGEsdC52YWx1ZSxuLG8saSl9ZnVuY3Rpb24gWmQodCxlLG4sbyxpLGEscil7aWYobnVsbD09YSluZ0Rldk1vZGUmJm5nRGV2TW9kZS5yZW5kZXJlclJlbW92ZUF0dHJpYnV0ZSsrLHJpKHQpP3QucmVtb3ZlQXR0cmlidXRlKGUsaSxuKTplLnJlbW92ZUF0dHJpYnV0ZShpKTtlbHNle25nRGV2TW9kZSYmbmdEZXZNb2RlLnJlbmRlcmVyU2V0QXR0cmlidXRlKys7Y29uc3Qgcz1udWxsPT1yP3JuKGEpOnIoYSxvfHwiIixpKTtyaSh0KT90LnNldEF0dHJpYnV0ZShlLGkscyxuKTpuP2Uuc2V0QXR0cmlidXRlTlMobixpLHMpOmUuc2V0QXR0cmlidXRlKGkscyl9fWZ1bmN0aW9uIFhkKHQsZSxuLG8saSxhKXtjb25zdCByPWFbZV07aWYobnVsbCE9PXIpe2NvbnN0IGU9by5zZXRJbnB1dDtmb3IobGV0IGE9MDthPHIubGVuZ3RoOyl7Y29uc3Qgcz1yW2ErK10sbD1yW2ErK10sYz1yW2ErK107aWYobnVsbCE9PWU/by5zZXRJbnB1dChuLGMscyxsKTpuW2xdPWMsbmdEZXZNb2RlKXtJZCh0LGRpKGksdCksaS50eXBlLGwsYyl9fX19ZnVuY3Rpb24gS2QodCxlKXtsZXQgbj1udWxsLG89MDtmb3IoO288ZS5sZW5ndGg7KXtjb25zdCBpPWVbb107aWYoMCE9PWkpaWYoNSE9PWkpe2lmKCJudW1iZXIiPT10eXBlb2YgaSlicmVhazt0Lmhhc093blByb3BlcnR5KGkpJiYobnVsbD09PW4mJihuPVtdKSxuLnB1c2goaSx0W2ldLGVbbysxXSkpLG8rPTJ9ZWxzZSBvKz0yO2Vsc2Ugbys9NH1yZXR1cm4gbn1jb25zdCBKZD0oInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJktuKCkmJkNsKCJMQ29udGFpbmVyIik7ZnVuY3Rpb24gUWQodCxlLG4sbyl7bmdEZXZNb2RlJiZGbyhlKSxuZ0Rldk1vZGUmJiFyaShlWzExXSkmJlBuKG4pO2NvbnN0IGk9bmV3KG5nRGV2TW9kZT9KZDpBcnJheSkodCwhMCwhMSxlLG51bGwsMCxvLG4sbnVsbCxudWxsKTtyZXR1cm4gbmdEZXZNb2RlJiZnbihpLmxlbmd0aCxPbywiU2hvdWxkIGFsbG9jYXRlIGNvcnJlY3QgbnVtYmVyIG9mIHNsb3RzIGZvciBMQ29udGFpbmVyIGhlYWRlci4iKSxuZ0Rldk1vZGUmJihmdW5jdGlvbiBhKHQpe0xjKHQsbmV3IGdkKHQpKX0pKGkpLGl9ZnVuY3Rpb24gJGQodCxlKXtuZ0Rldk1vZGUmJmduKHVpKHQpLCExLCJTaG91bGQgYmUgcnVuIGluIHVwZGF0ZSBtb2RlIik7Y29uc3Qgbj1maShlLHQpO2lmKGdpKG4pKXtjb25zdCB0PW5bMV07ODAmblsyXT94ZCh0LG4sdC50ZW1wbGF0ZSxuWzhdKTpuWzVdPjAmJnRwKG4pfX1mdW5jdGlvbiB0cCh0KXtmb3IobGV0IGU9SWwodCk7bnVsbCE9PWU7ZT1IbChlKSlmb3IobGV0IHQ9T287dDxlLmxlbmd0aDt0Kyspe2NvbnN0IG49ZVt0XTtpZigxMDI0Jm5bMl0pe2NvbnN0IHQ9blsxXTtuZ0Rldk1vZGUmJnhuKHQsIlRWaWV3IG11c3QgYmUgYWxsb2NhdGVkIikseGQodCxuLHQudGVtcGxhdGUsbls4XSl9ZWxzZSBuWzVdPjAmJnRwKG4pfWNvbnN0IGU9dFsxXS5jb21wb25lbnRzO2lmKG51bGwhPT1lKWZvcihsZXQgbj0wO248ZS5sZW5ndGg7bisrKXtjb25zdCBvPWZpKGVbbl0sdCk7Z2kobykmJm9bNV0+MCYmdHAobyl9fWZ1bmN0aW9uIGVwKHQsZSl7bmdEZXZNb2RlJiZnbih1aSh0KSwhMCwiU2hvdWxkIGJlIHJ1biBpbiBjcmVhdGlvbiBtb2RlIik7Y29uc3Qgbj1maShlLHQpLG89blsxXTshKGZ1bmN0aW9uIGkodCxlKXtmb3IobGV0IG49ZS5sZW5ndGg7bjx0LmJsdWVwcmludC5sZW5ndGg7bisrKWUucHVzaCh0LmJsdWVwcmludFtuXSl9KShvLG4pLHZkKG8sbixuWzhdKX1mdW5jdGlvbiBucCh0LGUpe3JldHVybiB0WzEzXT90WzE0XVs0XT1lOnRbMTNdPWUsdFsxNF09ZSxlfWZ1bmN0aW9uIG9wKHQpe2Zvcig7dDspe3RbMl18PTY0O2NvbnN0IGU9TmwodCk7aWYoMCE9KDUxMiZ0WzJdKSYmIWUpcmV0dXJuIHQ7dD1lfXJldHVybiBudWxsfWZ1bmN0aW9uIGlwKHQpe2ZvcihsZXQgZT0wO2U8dC5jb21wb25lbnRzLmxlbmd0aDtlKyspe2NvbnN0IG49dC5jb21wb25lbnRzW2VdLG89c2wobiksaT1vWzFdO09kKGksbyxpLnRlbXBsYXRlLG4pfX1mdW5jdGlvbiBhcCh0LGUsbil7Y29uc3Qgbz1lWzEwXTtvLmJlZ2luJiZvLmJlZ2luKCk7dHJ5e3hkKHQsZSx0LnRlbXBsYXRlLG4pfWNhdGNoKHQpe3Rocm93IGZwKGUsdCksdH1maW5hbGx5e28uZW5kJiZvLmVuZCgpfX1mdW5jdGlvbiBycCh0KXtpcCh0WzhdKX1mdW5jdGlvbiBzcCh0LGUsbil7bmdEZXZNb2RlJiZ4bihlLCJWaWV3IHF1ZXJpZXMgZnVuY3Rpb24gdG8gZXhlY3V0ZSBtdXN0IGJlIGRlZmluZWQuIiksV2koMCksZSh0LG4pfWZ1bmN0aW9uIGxwKHQsZSxuLG8sLi4uaSl7aWYobnVsbD09PXRbb10mJihudWxsPT1lLmlucHV0c3x8IWUuaW5wdXRzW25dKSl7KGUucHJvcGVydHlCaW5kaW5nc3x8KGUucHJvcGVydHlCaW5kaW5ncz1bXSkpLnB1c2gobyk7bGV0IGE9bjtpLmxlbmd0aD4wJiYoYSs9a2wraS5qb2luKGtsKSksdFtvXT1hfX1jb25zdCBjcD1oZDtmdW5jdGlvbiBkcCh0KXtyZXR1cm4gdFs3XXx8KHRbN109bmdEZXZNb2RlP25ldyBvZDpbXSl9ZnVuY3Rpb24gcHAodCl7cmV0dXJuIHQuY2xlYW51cHx8KHQuY2xlYW51cD1uZ0Rldk1vZGU/bmV3IGlkOltdKX1mdW5jdGlvbiBtcCh0LGUsbil7cmV0dXJuKG51bGw9PT10fHxSbyh0KSkmJihuPShmdW5jdGlvbiBvKHQpe2Zvcig7QXJyYXkuaXNBcnJheSh0KTspe2lmKCJvYmplY3QiPT10eXBlb2YgdFsxXSlyZXR1cm4gdDt0PXRbMF19cmV0dXJuIG51bGx9KShuW2UuaW5kZXhdKSksblsxMV19ZnVuY3Rpb24gZnAodCxlKXtjb25zdCBuPXRbOV0sbz1uP24uZ2V0KHVsLG51bGwpOm51bGw7byYmby5oYW5kbGVFcnJvcihlKX1mdW5jdGlvbiB1cCh0LGUsbixvLGkpe2ZvcihsZXQgYT0wO2E8bi5sZW5ndGg7KXtjb25zdCByPW5bYSsrXSxzPW5bYSsrXSxsPWVbcl07bmdEZXZNb2RlJiZ3bihlLHIpO2NvbnN0IGM9dC5kYXRhW3JdO251bGwhPT1jLnNldElucHV0P2Muc2V0SW5wdXQobCxpLG8scyk6bFtzXT1pfX1mdW5jdGlvbiBncCh0LGUsbil7bmdEZXZNb2RlJiZmbihuLCJWYWx1ZSBzaG91bGQgYmUgYSBzdHJpbmciKSxuZ0Rldk1vZGUmJnluKG4sU2MsInZhbHVlIHNob3VsZCBub3QgYmUgTk9fQ0hBTkdFIiksbmdEZXZNb2RlJiZ3bih0LGUpO2NvbnN0IG89Y2koZSx0KTtuZ0Rldk1vZGUmJnhuKG8sIm5hdGl2ZSBlbGVtZW50IHNob3VsZCBleGlzdCIpLFZsKHRbMTFdLG8sbil9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2Z1bmN0aW9uIGhwKHQsZSxuKXtuZ0Rldk1vZGUmJkxvKE9pKCksIkV4cGVjdGluZyB0byBiZSBjYWxsZWQgaW4gZmlyc3QgdGVtcGxhdGUgcGFzcyBvbmx5Iik7bGV0IG89bj90LnN0eWxlczpudWxsLGk9bj90LmNsYXNzZXM6bnVsbCxhPTA7aWYobnVsbCE9PWUpZm9yKGxldCB0PTA7dDxlLmxlbmd0aDt0Kyspe2NvbnN0IG49ZVt0XTtpZigibnVtYmVyIj09dHlwZW9mIG4pYT1uO2Vsc2UgaWYoMT09YSlpPUplKGksbik7ZWxzZSBpZigyPT1hKXtvPUplKG8sbisiOiAiK2VbKyt0XSsiOyIpfX1uP3Quc3R5bGVzPW86dC5zdHlsZXNXaXRob3V0SG9zdD1vLG4/dC5jbGFzc2VzPWk6dC5jbGFzc2VzV2l0aG91dEhvc3Q9aX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovZnVuY3Rpb24gYnAodCl7bmdEZXZNb2RlJiZ4bih0LCJjb21wb25lbnQiKTtjb25zdCBlPW9wKGlsKHQpKTtuZ0Rldk1vZGUmJnhuKGVbOF0sInJvb3RDb250ZXh0IHNob3VsZCBiZSBkZWZpbmVkIiksKGZ1bmN0aW9uIG4odCxlKXtpZigwPT09dC5mbGFncyYmdC5jbGVhbj09aGQpe2xldCBuO3QuZmxhZ3N8PWUsdC5jbGVhbj1uZXcgUHJvbWlzZSgodD0+bj10KSksdC5zY2hlZHVsZXIoKCgpPT57aWYoMSZ0LmZsYWdzJiYodC5mbGFncyY9LTIsaXAodCkpLDImdC5mbGFncyl7dC5mbGFncyY9LTM7Y29uc3QgZT10LnBsYXllckhhbmRsZXI7ZSYmZS5mbHVzaFBsYXllcnMoKX10LmNsZWFuPWhkLG4obnVsbCl9KSl9fSkoZVs4XSwxKX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY29uc3QgeXA9bmV3IGVyKCJJTkpFQ1RPUiIsLTEpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jbGFzcyBfcHtnZXQodCxlPXdyKXtpZihlPT09d3Ipe2NvbnN0IGU9bmV3IEVycm9yKGBOdWxsSW5qZWN0b3JFcnJvcjogTm8gcHJvdmlkZXIgZm9yICR7S2UodCl9IWApO3Rocm93IGUubmFtZT0iTnVsbEluamVjdG9yRXJyb3IiLGV9cmV0dXJuIGV9fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jb25zdCBDcD1uZXcgZXIoIlNldCBJbmplY3RvciBzY29wZS4iKSxNcD17fSx2cD17fTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovbGV0IHhwO2Z1bmN0aW9uIE9wKCl7cmV0dXJuIHZvaWQgMD09PXhwJiYoeHA9bmV3IF9wKSx4cH1mdW5jdGlvbiBQcCh0LGU9bnVsbCxuPW51bGwsbyl7cmV0dXJuIG5ldyB3cCh0LG4sZXx8T3AoKSxvKX1jbGFzcyB3cHtjb25zdHJ1Y3Rvcih0LGUsbixvPW51bGwpe3RoaXMucGFyZW50PW4sdGhpcy5yZWNvcmRzPW5ldyBNYXAsdGhpcy5pbmplY3RvckRlZlR5cGVzPW5ldyBTZXQsdGhpcy5vbkRlc3Ryb3k9bmV3IFNldCx0aGlzLl9kZXN0cm95ZWQ9ITE7Y29uc3QgaT1bXTtlJiZtcihlLChuPT50aGlzLnByb2Nlc3NQcm92aWRlcihuLHQsZSkpKSxtcihbdF0sKHQ9PnRoaXMucHJvY2Vzc0luamVjdG9yVHlwZSh0LFtdLGkpKSksdGhpcy5yZWNvcmRzLnNldCh5cCxEcCh2b2lkIDAsdGhpcykpO2NvbnN0IGE9dGhpcy5yZWNvcmRzLmdldChDcCk7dGhpcy5zY29wZT1udWxsIT1hP2EudmFsdWU6bnVsbCx0aGlzLnNvdXJjZT1vfHwoIm9iamVjdCI9PXR5cGVvZiB0P251bGw6S2UodCkpfWdldCBkZXN0cm95ZWQoKXtyZXR1cm4gdGhpcy5fZGVzdHJveWVkfWRlc3Ryb3koKXt0aGlzLmFzc2VydE5vdERlc3Ryb3llZCgpLHRoaXMuX2Rlc3Ryb3llZD0hMDt0cnl7dGhpcy5vbkRlc3Ryb3kuZm9yRWFjaCgodD0+dC5uZ09uRGVzdHJveSgpKSl9ZmluYWxseXt0aGlzLnJlY29yZHMuY2xlYXIoKSx0aGlzLm9uRGVzdHJveS5jbGVhcigpLHRoaXMuaW5qZWN0b3JEZWZUeXBlcy5jbGVhcigpfX1nZXQodCxlPXdyLG49SG4uRGVmYXVsdCl7dGhpcy5hc3NlcnROb3REZXN0cm95ZWQoKTtjb25zdCBvPUVyKHRoaXMpLGk9TG4odm9pZCAwKTt0cnl7aWYoIShuJkhuLlNraXBTZWxmKSl7bGV0IGU9dGhpcy5yZWNvcmRzLmdldCh0KTtpZih2b2lkIDA9PT1lKXtjb25zdCBuPShmdW5jdGlvbiBvKHQpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiB0fHwib2JqZWN0Ij09dHlwZW9mIHQmJnQgaW5zdGFuY2VvZiBlcn0pKHQpJiZSbih0KTtlPW4mJnRoaXMuaW5qZWN0YWJsZURlZkluU2NvcGUobik/RHAoa3AodCksTXApOm51bGwsdGhpcy5yZWNvcmRzLnNldCh0LGUpfWlmKG51bGwhPWUpcmV0dXJuIHRoaXMuaHlkcmF0ZSh0LGUpfXJldHVybihuJkhuLlNlbGY/T3AoKTp0aGlzLnBhcmVudCkuZ2V0KHQsZT1uJkhuLk9wdGlvbmFsJiZlPT09d3I/bnVsbDplKX1jYXRjaChlKXtpZigiTnVsbEluamVjdG9yRXJyb3IiPT09ZS5uYW1lKXtpZigoZS5uZ1RlbXBUb2tlblBhdGg9ZS5uZ1RlbXBUb2tlblBhdGh8fFtdKS51bnNoaWZ0KEtlKHQpKSxvKXRocm93IGU7cmV0dXJuIEZyKGUsdCwiUjNJbmplY3RvckVycm9yIix0aGlzLnNvdXJjZSl9dGhyb3cgZX1maW5hbGx5e0xuKGkpLEVyKG8pfX1fcmVzb2x2ZUluamVjdG9yRGVmVHlwZXMoKXt0aGlzLmluamVjdG9yRGVmVHlwZXMuZm9yRWFjaCgodD0+dGhpcy5nZXQodCkpKX10b1N0cmluZygpe2NvbnN0IHQ9W107cmV0dXJuIHRoaXMucmVjb3Jkcy5mb3JFYWNoKCgoZSxuKT0+dC5wdXNoKEtlKG4pKSkpLGBSM0luamVjdG9yWyR7dC5qb2luKCIsICIpfV1gfWFzc2VydE5vdERlc3Ryb3llZCgpe2lmKHRoaXMuX2Rlc3Ryb3llZCl0aHJvdyBuZXcgRXJyb3IoIkluamVjdG9yIGhhcyBhbHJlYWR5IGJlZW4gZGVzdHJveWVkLiIpfXByb2Nlc3NJbmplY3RvclR5cGUodCxlLG4pe2lmKCEodD10bih0KSkpcmV0dXJuITE7bGV0IG89QW4odCk7Y29uc3QgaT1udWxsPT1vJiZ0Lm5nTW9kdWxlfHx2b2lkIDAsYT12b2lkIDA9PT1pP3Q6aTtpZihuZ0Rldk1vZGUmJi0xIT09ZS5pbmRleE9mKGEpKXtsbihLZShhKSxlLm1hcChLZSkpfWNvbnN0IHI9LTEhPT1uLmluZGV4T2YoYSk7aWYodm9pZCAwIT09aSYmKG89QW4oaSkpLG51bGw9PW8pcmV0dXJuITE7aWYobnVsbCE9by5pbXBvcnRzJiYhcil7bGV0IHQ7bmdEZXZNb2RlJiZlLnB1c2goYSksbi5wdXNoKGEpO3RyeXttcihvLmltcG9ydHMsKG89Pnt0aGlzLnByb2Nlc3NJbmplY3RvclR5cGUobyxlLG4pJiYodm9pZCAwPT09dCYmKHQ9W10pLHQucHVzaChvKSl9KSl9ZmluYWxseXtuZ0Rldk1vZGUmJmUucG9wKCl9aWYodm9pZCAwIT09dClmb3IobGV0IGU9MDtlPHQubGVuZ3RoO2UrKyl7Y29uc3R7bmdNb2R1bGU6bixwcm92aWRlcnM6b309dFtlXTttcihvLCh0PT50aGlzLnByb2Nlc3NQcm92aWRlcih0LG4sb3x8UW4pKSl9fXRoaXMuaW5qZWN0b3JEZWZUeXBlcy5hZGQoYSk7Y29uc3Qgcz1HbyhhKXx8KCgpPT5uZXcgYSk7dGhpcy5yZWNvcmRzLnNldChhLERwKHMsTXApKTtjb25zdCBsPW8ucHJvdmlkZXJzO2lmKG51bGwhPWwmJiFyKXtjb25zdCBlPXQ7bXIobCwodD0+dGhpcy5wcm9jZXNzUHJvdmlkZXIodCxlLGwpKSl9cmV0dXJuIHZvaWQgMCE9PWkmJnZvaWQgMCE9PXQucHJvdmlkZXJzfXByb2Nlc3NQcm92aWRlcih0LGUsbil7bGV0IG89RXAodD10bih0KSk/dDp0bih0JiZ0LnByb3ZpZGUpO2NvbnN0IGk9KGZ1bmN0aW9uIGEodCxlLG4pe2lmKFJwKHQpKXJldHVybiBEcCh2b2lkIDAsdC51c2VWYWx1ZSk7cmV0dXJuIERwKFNwKHQsZSxuKSxNcCl9KSh0LGUsbik7aWYoRXAodCl8fCEwIT09dC5tdWx0aSl7Y29uc3QgdD10aGlzLnJlY29yZHMuZ2V0KG8pO25nRGV2TW9kZSYmdCYmdm9pZCAwIT09dC5tdWx0aSYmY24oKX1lbHNle2xldCBlPXRoaXMucmVjb3Jkcy5nZXQobyk7ZT9uZ0Rldk1vZGUmJnZvaWQgMD09PWUubXVsdGkmJmNuKCk6KGU9RHAodm9pZCAwLE1wLCEwKSxlLmZhY3Rvcnk9KCk9PklyKGUubXVsdGkpLHRoaXMucmVjb3Jkcy5zZXQobyxlKSksbz10LGUubXVsdGkucHVzaCh0KX10aGlzLnJlY29yZHMuc2V0KG8saSl9aHlkcmF0ZSh0LGUpe3JldHVybiBuZ0Rldk1vZGUmJmUudmFsdWU9PT12cD9sbihLZSh0KSk6ZS52YWx1ZT09PU1wJiYoZS52YWx1ZT12cCxlLnZhbHVlPWUuZmFjdG9yeSgpKSwib2JqZWN0Ij09dHlwZW9mIGUudmFsdWUmJmUudmFsdWUmJihmdW5jdGlvbiBuKHQpe3JldHVybiBudWxsIT09dCYmIm9iamVjdCI9PXR5cGVvZiB0JiYiZnVuY3Rpb24iPT10eXBlb2YgdC5uZ09uRGVzdHJveX0pKGUudmFsdWUpJiZ0aGlzLm9uRGVzdHJveS5hZGQoZS52YWx1ZSksZS52YWx1ZX1pbmplY3RhYmxlRGVmSW5TY29wZSh0KXtpZighdC5wcm92aWRlZEluKXJldHVybiExO2NvbnN0IGU9dG4odC5wcm92aWRlZEluKTtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGU/ImFueSI9PT1lfHxlPT09dGhpcy5zY29wZTp0aGlzLmluamVjdG9yRGVmVHlwZXMuaGFzKGUpfX1mdW5jdGlvbiBrcCh0KXtjb25zdCBlPVJuKHQpLG49bnVsbCE9PWU/ZS5mYWN0b3J5OkdvKHQpO2lmKG51bGwhPT1uKXJldHVybiBuO2lmKHQgaW5zdGFuY2VvZiBlcil0aHJvdyBuZXcgRXJyb3IoYFRva2VuICR7S2UodCl9IGlzIG1pc3NpbmcgYSDJtXByb3YgZGVmaW5pdGlvbi5gKTtpZih0IGluc3RhbmNlb2YgRnVuY3Rpb24pcmV0dXJuKGZ1bmN0aW9uIG8odCl7Y29uc3QgZT10Lmxlbmd0aDtpZihlPjApe2NvbnN0IG49Z3IoZSwiPyIpO3Rocm93IG5ldyBFcnJvcihgQ2FuJ3QgcmVzb2x2ZSBhbGwgcGFyYW1ldGVycyBmb3IgJHtLZSh0KX06ICgke24uam9pbigiLCAiKX0pLmApfWNvbnN0IG49KGZ1bmN0aW9uIG8odCl7Y29uc3QgZT10JiYodFtUbl18fHRbem5dKTtpZihlKXtjb25zdCBuPShmdW5jdGlvbiBuKHQpe2lmKHQuaGFzT3duUHJvcGVydHkoIm5hbWUiKSlyZXR1cm4gdC5uYW1lO2NvbnN0IGU9KCIiK3QpLm1hdGNoKC9eZnVuY3Rpb25ccyooW15ccyhdKykvKTtyZXR1cm4gbnVsbD09PWU/IiI6ZVsxXX0pKHQpO3JldHVybiBjb25zb2xlLndhcm4oYERFUFJFQ0FURUQ6IERJIGlzIGluc3RhbnRpYXRpbmcgYSB0b2tlbiAiJHtufSIgdGhhdCBpbmhlcml0cyBpdHMgQEluamVjdGFibGUgZGVjb3JhdG9yIGJ1dCBkb2VzIG5vdCBwcm92aWRlIG9uZSBpdHNlbGYuXG5UaGlzIHdpbGwgYmVjb21lIGFuIGVycm9yIGluIGEgZnV0dXJlIHZlcnNpb24gb2YgQW5ndWxhci4gUGxlYXNlIGFkZCBASW5qZWN0YWJsZSgpIHRvIHRoZSAiJHtufSIgY2xhc3MuYCksZX1yZXR1cm4gbnVsbH0pKHQpO3JldHVybiBudWxsIT09bj8oKT0+bi5mYWN0b3J5KHQpOigpPT5uZXcgdH0pKHQpO3Rocm93IG5ldyBFcnJvcigidW5yZWFjaGFibGUiKX1mdW5jdGlvbiBTcCh0LGUsbil7bGV0IG87aWYoRXAodCkpe2NvbnN0IGU9dG4odCk7cmV0dXJuIEdvKGUpfHxrcChlKX1pZihScCh0KSlvPSgpPT50bih0LnVzZVZhbHVlKTtlbHNlIGlmKChmdW5jdGlvbiBpKHQpe3JldHVybiEoIXR8fCF0LnVzZUZhY3RvcnkpfSkodCkpbz0oKT0+dC51c2VGYWN0b3J5KC4uLklyKHQuZGVwc3x8W10pKTtlbHNlIGlmKChmdW5jdGlvbiBhKHQpe3JldHVybiEoIXR8fCF0LnVzZUV4aXN0aW5nKX0pKHQpKW89KCk9PlRyKHRuKHQudXNlRXhpc3RpbmcpKTtlbHNle2NvbnN0IGk9dG4odCYmKHQudXNlQ2xhc3N8fHQucHJvdmlkZSkpO2lmKG5nRGV2TW9kZSYmIWkmJihmdW5jdGlvbiByKHQsZSxuKXtsZXQgbz0iIjt0JiZlJiYobz1gIC0gb25seSBpbnN0YW5jZXMgb2YgUHJvdmlkZXIgYW5kIFR5cGUgYXJlIGFsbG93ZWQsIGdvdDogWyR7ZS5tYXAoKHQ9PnQ9PW4/Ij8iK24rIj8iOiIuLi4iKSkuam9pbigiLCAiKX1dYCk7dGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHByb3ZpZGVyIGZvciB0aGUgTmdNb2R1bGUgJyR7S2UodCl9J2Arbyl9KShlLG4sdCksIShmdW5jdGlvbiBzKHQpe3JldHVybiEhdC5kZXBzfSkodCkpcmV0dXJuIEdvKGkpfHxrcChpKTtvPSgpPT5uZXcgaSguLi5Jcih0LmRlcHMpKX1yZXR1cm4gb31mdW5jdGlvbiBEcCh0LGUsbj0hMSl7cmV0dXJue2ZhY3Rvcnk6dCx2YWx1ZTplLG11bHRpOm4/W106dm9pZCAwfX1mdW5jdGlvbiBScCh0KXtyZXR1cm4gbnVsbCE9PXQmJiJvYmplY3QiPT10eXBlb2YgdCYmRHIgaW4gdH1mdW5jdGlvbiBFcCh0KXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdH1jb25zdCBBcD1mdW5jdGlvbiBUcCh0LGUsbil7cmV0dXJuKGZ1bmN0aW9uIG8odCxlPW51bGwsbj1udWxsLGkpe2NvbnN0IGE9UHAodCxlLG4saSk7cmV0dXJuIGEuX3Jlc29sdmVJbmplY3RvckRlZlR5cGVzKCksYX0pKHtuYW1lOm59LGUsdCxuKX07Y2xhc3MgTnB7c3RhdGljIGNyZWF0ZSh0LGUpe3JldHVybiBBcnJheS5pc0FycmF5KHQpP0FwKHQsZSwiIik6QXAodC5wcm92aWRlcnMsdC5wYXJlbnQsdC5uYW1lfHwiIil9fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KZnVuY3Rpb24genAodCl7R3AodCk7Y29uc3QgZT1ubCh0KTtyZXR1cm4gbnVsbD09PWU/bnVsbDoodm9pZCAwPT09ZS5jb21wb25lbnQmJihlLmNvbXBvbmVudD0oZnVuY3Rpb24gbih0LGUpe2NvbnN0IG49ZVsxXS5kYXRhW3RdO3JldHVybiAyJm4uZmxhZ3M/ZVtuLmRpcmVjdGl2ZVN0YXJ0XTpudWxsfSkoZS5ub2RlSW5kZXgsZS5sVmlldykpLGUuY29tcG9uZW50KX1mdW5jdGlvbiBJcCh0KXtHcCh0KTtjb25zdCBlPW5sKHQpO3JldHVybiBudWxsPT09ZT9udWxsOmUubFZpZXdbOF19ZnVuY3Rpb24gSHAodCl7Y29uc3QgZT1ubCh0KTtpZihudWxsPT09ZSlyZXR1cm4gbnVsbDtsZXQgbixvPWUubFZpZXc7Zm9yKG5nRGV2TW9kZSYmRm8obyk7Mj09PW9bMV0udHlwZSYmKG49TmwobykpOylvPW47cmV0dXJuIDUxMiZvWzJdP251bGw6b1s4XX1mdW5jdGlvbiBGcCh0KXtyZXR1cm5bLi4uemwodCkuY29tcG9uZW50c119ZnVuY3Rpb24gTHAodCl7Y29uc3QgZT1ubCh0KTtpZihudWxsPT09ZSlyZXR1cm4gTnAuTlVMTDtyZXR1cm4gbmV3IGphKGUubFZpZXdbMV0uZGF0YVtlLm5vZGVJbmRleF0sZS5sVmlldyl9ZnVuY3Rpb24gQnAodCl7aWYodCBpbnN0YW5jZW9mIFRleHQpcmV0dXJuW107Y29uc3QgZT1ubCh0KTtpZihudWxsPT09ZSlyZXR1cm5bXTtjb25zdCBuPWUubFZpZXcsbz1uWzFdLGk9ZS5ub2RlSW5kZXg7cmV0dXJuKG51bGw9PW8/dm9pZCAwOm8uZGF0YVtpXSk/KHZvaWQgMD09PWUuZGlyZWN0aXZlcyYmKGUuZGlyZWN0aXZlcz1wbChpLG4sITEpKSxudWxsPT09ZS5kaXJlY3RpdmVzP1tdOlsuLi5lLmRpcmVjdGl2ZXNdKTpbXX1mdW5jdGlvbiBWcCh0KXtjb25zdHtjb25zdHJ1Y3RvcjplfT10O2lmKCFlKXRocm93IG5ldyBFcnJvcigiVW5hYmxlIHRvIGZpbmQgdGhlIGluc3RhbmNlIGNvbnN0cnVjdG9yIik7Y29uc3Qgbj15byhlKTtpZihuKXJldHVybntpbnB1dHM6bi5pbnB1dHMsb3V0cHV0czpuLm91dHB1dHMsZW5jYXBzdWxhdGlvbjpuLmVuY2Fwc3VsYXRpb24sY2hhbmdlRGV0ZWN0aW9uOm4ub25QdXNoP2puLk9uUHVzaDpqbi5EZWZhdWx0fTtjb25zdCBvPV9vKGUpO3JldHVybiBvP3tpbnB1dHM6by5pbnB1dHMsb3V0cHV0czpvLm91dHB1dHN9Om51bGx9ZnVuY3Rpb24ganAodCl7cmV0dXJuIG5sKHQpLm5hdGl2ZX1mdW5jdGlvbiBVcCh0KXtHcCh0KTtjb25zdCBlPW5sKHQpO2lmKG51bGw9PT1lKXJldHVybltdO2NvbnN0IG49ZS5sVmlldyxvPW5bN10saT1uWzFdLmNsZWFudXAsYT1bXTtpZihpJiZvKWZvcihsZXQgZT0wO2U8aS5sZW5ndGg7KXtjb25zdCByPWlbZSsrXSxzPWlbZSsrXTtpZigic3RyaW5nIj09dHlwZW9mIHIpe2NvbnN0IGw9cixjPWxpKG5bc10pLGQ9b1tpW2UrK11dLHA9aVtlKytdLG09ImJvb2xlYW4iPT10eXBlb2YgcHx8cD49MD8iZG9tIjoib3V0cHV0IixmPSJib29sZWFuIj09dHlwZW9mIHAmJnA7dD09YyYmYS5wdXNoKHtlbGVtZW50OnQsbmFtZTpsLGNhbGxiYWNrOmQsdXNlQ2FwdHVyZTpmLHR5cGU6bX0pfX1yZXR1cm4gYS5zb3J0KFdwKSxhfWZ1bmN0aW9uIFdwKHQsZSl7cmV0dXJuIHQubmFtZT09ZS5uYW1lPzA6dC5uYW1lPGUubmFtZT8tMToxfWZ1bmN0aW9uIEdwKHQpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgRWxlbWVudCYmISh0IGluc3RhbmNlb2YgRWxlbWVudCkpdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RpbmcgaW5zdGFuY2Ugb2YgRE9NIEVsZW1lbnQiKX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovZnVuY3Rpb24gWXAodCl7YnAodCksRnAodCkuZm9yRWFjaCgodD0+KGZ1bmN0aW9uIGUodCl7Y29uc3QgZT1pbCh0KTthcChlWzFdLGUsdCl9KSh0KSkpfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9OcC5USFJPV19JRl9OT1RfRk9VTkQ9d3IsTnAuTlVMTD1uZXcgX3AsTnAuybVwcm92PVNuKHt0b2tlbjpOcCxwcm92aWRlZEluOiJhbnkiLGZhY3Rvcnk6KCk9PlRyKHlwKX0pLE5wLl9fTkdfRUxFTUVOVF9JRF9fPS0xO2xldCBxcD0hMTtmdW5jdGlvbiBacCh0LGUpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgQ09NUElMRUR8fCFDT01QSUxFRCl7Y29uc3Qgbj1YbjtpZihuZ0Rldk1vZGUmJnhuKGUsImZ1bmN0aW9uIG5vdCBkZWZpbmVkIiksbil7bGV0IG89bi5uZztvfHwobz1uLm5nPXt9KSxvW3RdPWV9fX1mdW5jdGlvbiBYcCh0LGUsbixvLGkpe2NvbnN0IGE9blsxXSxyPShmdW5jdGlvbiBzKHQsZSxuKXtjb25zdCBvPXdpKCk7aWYodC5maXJzdENyZWF0ZVBhc3Mpe24ucHJvdmlkZXJzUmVzb2x2ZXImJm4ucHJvdmlkZXJzUmVzb2x2ZXIobik7Y29uc3QgaT1NZCh0LGUsMSxudWxsKTtuZ0Rldk1vZGUmJmduKGksby5kaXJlY3RpdmVTdGFydCwiQmVjYXVzZSB0aGlzIGlzIGEgcm9vdCBjb21wb25lbnQgdGhlIGFsbG9jYXRlZCBleHBhbmRvIHNob3VsZCBtYXRjaCB0aGUgVE5vZGUgY29tcG9uZW50LiIpLEdkKHQsbyxlLGksbil9Y29uc3QgaT1MYShlLHQsby5kaXJlY3RpdmVTdGFydCxvKTthbChpLGUpO2NvbnN0IGE9ZGkobyxlKTtyZXR1cm4gYSYmYWwoYSxlKSxpfSkoYSxuLGUpO2lmKG8uY29tcG9uZW50cy5wdXNoKHIpLHRbOF09cixpJiZpLmZvckVhY2goKHQ9PnQocixlKSkpLGUuY29udGVudFF1ZXJpZXMpe2NvbnN0IHQ9d2koKTtuZ0Rldk1vZGUmJnhuKHQsIlROb2RlIGV4cGVjdGVkIiksZS5jb250ZW50UXVlcmllcygxLHIsdC5kaXJlY3RpdmVTdGFydCl9Y29uc3QgbD13aSgpO2lmKG5nRGV2TW9kZSYmeG4obCwidE5vZGUgc2hvdWxkIGhhdmUgYmVlbiBhbHJlYWR5IGNyZWF0ZWQiKSxhLmZpcnN0Q3JlYXRlUGFzcyYmKG51bGwhPT1lLmhvc3RCaW5kaW5nc3x8bnVsbCE9PWUuaG9zdEF0dHJzKSl7ZWEobC5pbmRleCk7QmQoblsxXSxsLDAsbC5kaXJlY3RpdmVTdGFydCxsLmRpcmVjdGl2ZUVuZCxlKSxWZChlLHIpfXJldHVybiByfWZ1bmN0aW9uIEtwKHQsZSl7Y29uc3Qgbj1zbCh0KTtuZ0Rldk1vZGUmJnhuKG4sIkxWaWV3IGlzIHJlcXVpcmVkIik7Y29uc3Qgbz1uWzFdLGk9d2koKTtuZ0Rldk1vZGUmJnhuKGksIlROb2RlIGlzIHJlcXVpcmVkIikscmEobyxpKX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovZnVuY3Rpb24gSnAodCl7cmV0dXJuIE9iamVjdC5nZXRQcm90b3R5cGVPZih0LnByb3RvdHlwZSkuY29uc3RydWN0b3J9ZnVuY3Rpb24gUXAodCl7bGV0IGU9SnAodC50eXBlKSxuPSEwO2NvbnN0IG89W3RdO2Zvcig7ZTspe2xldCBpO2lmKFJvKHQpKWk9ZS7JtWNtcHx8ZS7JtWRpcjtlbHNle2lmKGUuybVjbXApdGhyb3cgbmV3IEVycm9yKCJEaXJlY3RpdmVzIGNhbm5vdCBpbmhlcml0IENvbXBvbmVudHMiKTtpPWUuybVkaXJ9aWYoaSl7aWYobil7by5wdXNoKGkpO2NvbnN0IGU9dDtlLmlucHV0cz0kcCh0LmlucHV0cyksZS5kZWNsYXJlZElucHV0cz0kcCh0LmRlY2xhcmVkSW5wdXRzKSxlLm91dHB1dHM9JHAodC5vdXRwdXRzKTtjb25zdCBuPWkuaG9zdEJpbmRpbmdzO24mJm5tKHQsbik7Y29uc3QgYT1pLnZpZXdRdWVyeSxyPWkuY29udGVudFF1ZXJpZXM7aWYoYSYmdG0odCxhKSxyJiZlbSh0LHIpLFhlKHQuaW5wdXRzLGkuaW5wdXRzKSxYZSh0LmRlY2xhcmVkSW5wdXRzLGkuZGVjbGFyZWRJbnB1dHMpLFhlKHQub3V0cHV0cyxpLm91dHB1dHMpLFJvKGkpJiZpLmRhdGEuYW5pbWF0aW9uKXtjb25zdCBlPXQuZGF0YTtlLmFuaW1hdGlvbj0oZS5hbmltYXRpb258fFtdKS5jb25jYXQoaS5kYXRhLmFuaW1hdGlvbil9fWNvbnN0IGU9aS5mZWF0dXJlcztpZihlKWZvcihsZXQgbz0wO288ZS5sZW5ndGg7bysrKXtjb25zdCBpPWVbb107aSYmaS5uZ0luaGVyaXQmJmkodCksaT09PVFwJiYobj0hMSl9fWU9T2JqZWN0LmdldFByb3RvdHlwZU9mKGUpfSEoZnVuY3Rpb24gaSh0KXtsZXQgZT0wLG49bnVsbDtmb3IobGV0IG89dC5sZW5ndGgtMTtvPj0wO28tLSl7Y29uc3QgaT10W29dO2kuaG9zdFZhcnM9ZSs9aS5ob3N0VmFycyxpLmhvc3RBdHRycz1fYShpLmhvc3RBdHRycyxuPV9hKG4saS5ob3N0QXR0cnMpKX19KShvKX1mdW5jdGlvbiAkcCh0KXtyZXR1cm4gdD09PUpuP3t9OnQ9PT1Rbj9bXTp0fWZ1bmN0aW9uIHRtKHQsZSl7Y29uc3Qgbj10LnZpZXdRdWVyeTt0LnZpZXdRdWVyeT1uPyh0LG8pPT57ZSh0LG8pLG4odCxvKX06ZX1mdW5jdGlvbiBlbSh0LGUpe2NvbnN0IG49dC5jb250ZW50UXVlcmllczt0LmNvbnRlbnRRdWVyaWVzPW4/KHQsbyxpKT0+e2UodCxvLGkpLG4odCxvLGkpfTplfWZ1bmN0aW9uIG5tKHQsZSl7Y29uc3Qgbj10Lmhvc3RCaW5kaW5nczt0Lmhvc3RCaW5kaW5ncz1uPyh0LG8pPT57ZSh0LG8pLG4odCxvKX06ZX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY29uc3Qgb209WyJwcm92aWRlcnNSZXNvbHZlciJdLGltPVsidGVtcGxhdGUiLCJkZWNscyIsImNvbnN0cyIsInZhcnMiLCJvblB1c2giLCJuZ0NvbnRlbnRTZWxlY3RvcnMiLCJzdHlsZXMiLCJlbmNhcHN1bGF0aW9uIiwic2NoZW1hcyJdO2Z1bmN0aW9uIGFtKHQpe2xldCBlLG49SnAodC50eXBlKTtlPVJvKHQpP24uybVjbXA6bi7JtWRpcjtjb25zdCBvPXQ7Zm9yKGNvbnN0IHQgb2Ygb20pb1t0XT1lW3RdO2lmKFJvKGUpKWZvcihjb25zdCB0IG9mIGltKW9bdF09ZVt0XX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovbGV0IHJtPW51bGw7ZnVuY3Rpb24gc20oKXtpZighcm0pe2NvbnN0IHQ9WG4uU3ltYm9sO2lmKHQmJnQuaXRlcmF0b3Ipcm09dC5pdGVyYXRvcjtlbHNle2NvbnN0IHQ9T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoTWFwLnByb3RvdHlwZSk7Zm9yKGxldCBlPTA7ZTx0Lmxlbmd0aDsrK2Upe2NvbnN0IG49dFtlXTsiZW50cmllcyIhPT1uJiYic2l6ZSIhPT1uJiZNYXAucHJvdG90eXBlW25dPT09TWFwLnByb3RvdHlwZS5lbnRyaWVzJiYocm09bil9fX1yZXR1cm4gcm19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2Z1bmN0aW9uIGxtKHQsZSl7Y29uc3Qgbj1kbSh0KSxvPWRtKGUpO2lmKG4mJm8pcmV0dXJuKGZ1bmN0aW9uIGkodCxlLG4pe2NvbnN0IG89dFtzbSgpXSgpLGk9ZVtzbSgpXSgpO2Zvcig7Oyl7Y29uc3QgdD1vLm5leHQoKSxlPWkubmV4dCgpO2lmKHQuZG9uZSYmZS5kb25lKXJldHVybiEwO2lmKHQuZG9uZXx8ZS5kb25lKXJldHVybiExO2lmKCFuKHQudmFsdWUsZS52YWx1ZSkpcmV0dXJuITF9fSkodCxlLGxtKTt7Y29uc3QgaT10JiYoIm9iamVjdCI9PXR5cGVvZiB0fHwiZnVuY3Rpb24iPT10eXBlb2YgdCksYT1lJiYoIm9iamVjdCI9PXR5cGVvZiBlfHwiZnVuY3Rpb24iPT10eXBlb2YgZSk7cmV0dXJuIShufHwhaXx8b3x8IWEpfHxPYmplY3QuaXModCxlKX19Y2xhc3MgY217Y29uc3RydWN0b3IodCl7dGhpcy53cmFwcGVkPXR9c3RhdGljIHdyYXAodCl7cmV0dXJuIG5ldyBjbSh0KX1zdGF0aWMgdW53cmFwKHQpe3JldHVybiBjbS5pc1dyYXBwZWQodCk/dC53cmFwcGVkOnR9c3RhdGljIGlzV3JhcHBlZCh0KXtyZXR1cm4gdCBpbnN0YW5jZW9mIGNtfX1mdW5jdGlvbiBkbSh0KXtyZXR1cm4hIXBtKHQpJiYoQXJyYXkuaXNBcnJheSh0KXx8ISh0IGluc3RhbmNlb2YgTWFwKSYmc20oKWluIHQpfWZ1bmN0aW9uIHBtKHQpe3JldHVybiBudWxsIT09dCYmKCJmdW5jdGlvbiI9PXR5cGVvZiB0fHwib2JqZWN0Ij09dHlwZW9mIHQpfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9mdW5jdGlvbiBtbSh0LGUsbil7cmV0dXJuIHRbZV09bn1mdW5jdGlvbiBmbSh0LGUpe3JldHVybiBuZ0Rldk1vZGUmJnduKHQsZSksbmdEZXZNb2RlJiZ5bih0W2VdLFNjLCJTdG9yZWQgdmFsdWUgc2hvdWxkIG5ldmVyIGJlIE5PX0NIQU5HRS4iKSx0W2VdfWZ1bmN0aW9uIHVtKHQsZSxuKXtuZ0Rldk1vZGUmJnluKG4sU2MsIkluY29taW5nIHZhbHVlIHNob3VsZCBuZXZlciBiZSBOT19DSEFOR0UuIiksbmdEZXZNb2RlJiZfbihlLHQubGVuZ3RoLCJTbG90IHNob3VsZCBoYXZlIGJlZW4gaW5pdGlhbGl6ZWQgdG8gTk9fQ0hBTkdFIik7Y29uc3Qgbz10W2VdO2lmKE9iamVjdC5pcyhvLG4pKXJldHVybiExO2lmKG5nRGV2TW9kZSYmQWkoKSl7Y29uc3QgaT1vIT09U2M/bzp2b2lkIDA7aWYoIWxtKGksbikpe2NvbnN0IGE9KGZ1bmN0aW9uIGkodCxlLG4sbyl7Y29uc3QgaT10WzFdLmRhdGEsYT1pW2VdO2lmKCJzdHJpbmciPT10eXBlb2YgYSlyZXR1cm4gYS5pbmRleE9mKGtsKT4tMT9SbCh0LGUsZSxhLG8pOntwcm9wTmFtZTphLG9sZFZhbHVlOm4sbmV3VmFsdWU6b307aWYobnVsbD09PWEpe2xldCBuPWUtMTtmb3IoOyJzdHJpbmciIT10eXBlb2YgaVtuXSYmbnVsbD09PWlbbisxXTspbi0tO2NvbnN0IGE9aVtuXTtpZigic3RyaW5nIj09dHlwZW9mIGEpe2NvbnN0IGk9YS5tYXRjaChuZXcgUmVnRXhwKGtsLCJnIikpO2lmKGkmJmkubGVuZ3RoLTE+ZS1uKXJldHVybiBSbCh0LG4sZSxhLG8pfX1yZXR1cm57cHJvcE5hbWU6dm9pZCAwLG9sZFZhbHVlOm4sbmV3VmFsdWU6b319KSh0LGUsaSxuKTshKGZ1bmN0aW9uIGEodCxlLG4sbyl7bGV0IGk9YEV4cHJlc3Npb25DaGFuZ2VkQWZ0ZXJJdEhhc0JlZW5DaGVja2VkRXJyb3I6IEV4cHJlc3Npb24gaGFzIGNoYW5nZWQgYWZ0ZXIgaXQgd2FzIGNoZWNrZWQuIFByZXZpb3VzIHZhbHVlJHtvP2AgZm9yICcke299J2A6IiJ9OiAnJHtlfScuIEN1cnJlbnQgdmFsdWU6ICcke259Jy5gO3Rocm93IHQmJihpKz0iIEl0IHNlZW1zIGxpa2UgdGhlIHZpZXcgaGFzIGJlZW4gY3JlYXRlZCBhZnRlciBpdHMgcGFyZW50IGFuZCBpdHMgY2hpbGRyZW4gaGF2ZSBiZWVuIGRpcnR5IGNoZWNrZWQuIEhhcyBpdCBiZWVuIGNyZWF0ZWQgaW4gYSBjaGFuZ2UgZGV0ZWN0aW9uIGhvb2s/IiksbmV3IG5uKCIxMDAiLGkpfSkobz09PVNjLGEub2xkVmFsdWUsYS5uZXdWYWx1ZSxhLnByb3BOYW1lKX1yZXR1cm4hMX1yZXR1cm4gdFtlXT1uLCEwfWZ1bmN0aW9uIGdtKHQsZSxuLG8pe2NvbnN0IGk9dW0odCxlLG4pO3JldHVybiB1bSh0LGUrMSxvKXx8aX1mdW5jdGlvbiBobSh0LGUsbixvLGkpe2NvbnN0IGE9Z20odCxlLG4sbyk7cmV0dXJuIHVtKHQsZSsyLGkpfHxhfWZ1bmN0aW9uIGJtKHQsZSxuLG8saSxhKXtjb25zdCByPWdtKHQsZSxuLG8pO3JldHVybiBnbSh0LGUrMixpLGEpfHxyfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9mdW5jdGlvbiB5bSh0LGUsbixvKXtjb25zdCBpPXhpKCksYT1IaSgpO2lmKHVtKGksYSxlKSl7Y29uc3Qgcj1PaSgpLHM9bmEoKTtxZChzLGksdCxlLG4sbyksbmdEZXZNb2RlJiZscChyLmRhdGEscywiYXR0ci4iK3QsYSl9cmV0dXJuIHltfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9mdW5jdGlvbiBfbSh0LGUpe25nRGV2TW9kZSYmX24oMixlLmxlbmd0aCwic2hvdWxkIGhhdmUgYXQgbGVhc3QgMyB2YWx1ZXMiKSxuZ0Rldk1vZGUmJmduKGUubGVuZ3RoJTIsMSwic2hvdWxkIGhhdmUgYW4gb2RkIG51bWJlciBvZiB2YWx1ZXMiKTtsZXQgbj0hMSxvPXppKCk7Zm9yKGxldCBpPTE7aTxlLmxlbmd0aDtpKz0yKW49dW0odCxvKyssZVtpXSl8fG47aWYoSWkobyksIW4pcmV0dXJuIFNjO2xldCBpPWVbMF07Zm9yKGxldCB0PTE7dDxlLmxlbmd0aDt0Kz0yKWkrPXJuKGVbdF0pK2VbdCsxXTtyZXR1cm4gaX1mdW5jdGlvbiBDbSh0LGUsbixvKXtyZXR1cm4gdW0odCxIaSgpLG4pP2Urcm4obikrbzpTY31mdW5jdGlvbiBNbSh0LGUsbixvLGksYSl7Y29uc3Qgcj1nbSh0LHppKCksbixpKTtyZXR1cm4gRmkoMikscj9lK3JuKG4pK28rcm4oaSkrYTpTY31mdW5jdGlvbiB2bSh0LGUsbixvLGksYSxyLHMpe2NvbnN0IGw9aG0odCx6aSgpLG4saSxyKTtyZXR1cm4gRmkoMyksbD9lK3JuKG4pK28rcm4oaSkrYStybihyKStzOlNjfWZ1bmN0aW9uIHhtKHQsZSxuLG8saSxhLHIscyxsLGMpe2NvbnN0IGQ9Ym0odCx6aSgpLG4saSxyLGwpO3JldHVybiBGaSg0KSxkP2Urcm4obikrbytybihpKSthK3JuKHIpK3Mrcm4obCkrYzpTY31mdW5jdGlvbiBPbSh0LGUsbixvLGksYSxyLHMsbCxjLGQscCl7Y29uc3QgbT16aSgpO2xldCBmPWJtKHQsbSxuLGkscixsKTtyZXR1cm4gZj11bSh0LG0rNCxkKXx8ZixGaSg1KSxmP2Urcm4obikrbytybihpKSthK3JuKHIpK3Mrcm4obCkrYytybihkKStwOlNjfWZ1bmN0aW9uIFBtKHQsZSxuLG8saSxhLHIscyxsLGMsZCxwLG0sZil7Y29uc3QgdT16aSgpO2xldCBnPWJtKHQsdSxuLGkscixsKTtyZXR1cm4gZz1nbSh0LHUrNCxkLG0pfHxnLEZpKDYpLGc/ZStybihuKStvK3JuKGkpK2Ercm4ocikrcytybihsKStjK3JuKGQpK3Arcm4obSkrZjpTY31mdW5jdGlvbiB3bSh0LGUsbixvLGksYSxyLHMsbCxjLGQscCxtLGYsdSxnKXtjb25zdCBoPXppKCk7bGV0IGI9Ym0odCxoLG4saSxyLGwpO3JldHVybiBiPWhtKHQsaCs0LGQsbSx1KXx8YixGaSg3KSxiP2Urcm4obikrbytybihpKSthK3JuKHIpK3Mrcm4obCkrYytybihkKStwK3JuKG0pK2Yrcm4odSkrZzpTY31mdW5jdGlvbiBrbSh0LGUsbixvLGksYSxyLHMsbCxjLGQscCxtLGYsdSxnLGgsYil7Y29uc3QgeT16aSgpO2xldCBfPWJtKHQseSxuLGkscixsKTtyZXR1cm4gXz1ibSh0LHkrNCxkLG0sdSxoKXx8XyxGaSg4KSxfP2Urcm4obikrbytybihpKSthK3JuKHIpK3Mrcm4obCkrYytybihkKStwK3JuKG0pK2Yrcm4odSkrZytybihoKStiOlNjfWZ1bmN0aW9uIFNtKHQsZSxuLG8saSxhKXtjb25zdCByPXhpKCkscz1DbShyLGUsbixvKTtpZihzIT09U2Mpe2NvbnN0IG49bmEoKTtxZChuLHIsdCxzLGksYSksbmdEZXZNb2RlJiZscChPaSgpLmRhdGEsbiwiYXR0ci4iK3QsemkoKS0xLGUsbyl9cmV0dXJuIFNtfWZ1bmN0aW9uIERtKHQsZSxuLG8saSxhLHIscyl7Y29uc3QgbD14aSgpLGM9TW0obCxlLG4sbyxpLGEpO2lmKGMhPT1TYyl7Y29uc3Qgbj1uYSgpO3FkKG4sbCx0LGMscixzKSxuZ0Rldk1vZGUmJmxwKE9pKCkuZGF0YSxuLCJhdHRyLiIrdCx6aSgpLTIsZSxvLGEpfXJldHVybiBEbX1mdW5jdGlvbiBSbSh0LGUsbixvLGksYSxyLHMsbCxjKXtjb25zdCBkPXhpKCkscD12bShkLGUsbixvLGksYSxyLHMpO2lmKHAhPT1TYyl7Y29uc3Qgbj1uYSgpO3FkKG4sZCx0LHAsbCxjKSxuZ0Rldk1vZGUmJmxwKE9pKCkuZGF0YSxuLCJhdHRyLiIrdCx6aSgpLTMsZSxvLGEscyl9cmV0dXJuIFJtfWZ1bmN0aW9uIEVtKHQsZSxuLG8saSxhLHIscyxsLGMsZCxwKXtjb25zdCBtPXhpKCksZj14bShtLGUsbixvLGksYSxyLHMsbCxjKTtpZihmIT09U2Mpe2NvbnN0IG49bmEoKTtxZChuLG0sdCxmLGQscCksbmdEZXZNb2RlJiZscChPaSgpLmRhdGEsbiwiYXR0ci4iK3QsemkoKS00LGUsbyxhLHMsYyl9cmV0dXJuIEVtfWZ1bmN0aW9uIEFtKHQsZSxuLG8saSxhLHIscyxsLGMsZCxwLG0sZil7Y29uc3QgdT14aSgpLGc9T20odSxlLG4sbyxpLGEscixzLGwsYyxkLHApO2lmKGchPT1TYyl7Y29uc3Qgbj1uYSgpO3FkKG4sdSx0LGcsbSxmKSxuZ0Rldk1vZGUmJmxwKE9pKCkuZGF0YSxuLCJhdHRyLiIrdCx6aSgpLTUsZSxvLGEscyxjLHApfXJldHVybiBBbX1mdW5jdGlvbiBUbSh0LGUsbixvLGksYSxyLHMsbCxjLGQscCxtLGYsdSxnKXtjb25zdCBoPXhpKCksYj1QbShoLGUsbixvLGksYSxyLHMsbCxjLGQscCxtLGYpO2lmKGIhPT1TYyl7Y29uc3Qgbj1uYSgpO3FkKG4saCx0LGIsdSxnKSxuZ0Rldk1vZGUmJmxwKE9pKCkuZGF0YSxuLCJhdHRyLiIrdCx6aSgpLTYsZSxvLGEscyxjLHAsZil9cmV0dXJuIFRtfWZ1bmN0aW9uIE5tKHQsZSxuLG8saSxhLHIscyxsLGMsZCxwLG0sZix1LGcsaCxiKXtjb25zdCB5PXhpKCksXz13bSh5LGUsbixvLGksYSxyLHMsbCxjLGQscCxtLGYsdSxnKTtpZihfIT09U2Mpe2NvbnN0IG49bmEoKTtxZChuLHksdCxfLGgsYiksbmdEZXZNb2RlJiZscChPaSgpLmRhdGEsbiwiYXR0ci4iK3QsemkoKS03LGUsbyxhLHMsYyxwLGYsZyl9cmV0dXJuIE5tfWZ1bmN0aW9uIHptKHQsZSxuLG8saSxhLHIscyxsLGMsZCxwLG0sZix1LGcsaCxiLHksXyl7Y29uc3QgQz14aSgpLE09a20oQyxlLG4sbyxpLGEscixzLGwsYyxkLHAsbSxmLHUsZyxoLGIpO2lmKE0hPT1TYyl7Y29uc3Qgbj1uYSgpO3FkKG4sQyx0LE0seSxfKSxuZ0Rldk1vZGUmJmxwKE9pKCkuZGF0YSxuLCJhdHRyLiIrdCx6aSgpLTgsZSxvLGEscyxjLHAsZixnLGIpfXJldHVybiB6bX1mdW5jdGlvbiBJbSh0LGUsbixvKXtjb25zdCBpPXhpKCksYT1fbShpLGUpO2lmKGEhPT1TYyl7Y29uc3Qgcj1uYSgpO2lmKHFkKHIsaSx0LGEsbixvKSxuZ0Rldk1vZGUpe2NvbnN0IG49W2VbMF1dO2ZvcihsZXQgdD0yO3Q8ZS5sZW5ndGg7dCs9MiluLnB1c2goZVt0XSk7bHAoT2koKS5kYXRhLHIsImF0dHIuIit0LHppKCktbi5sZW5ndGgrMSwuLi5uKX19cmV0dXJuIEltfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9mdW5jdGlvbiBIbSh0LGUsbixvLGksYSxyLHMpe2NvbnN0IGw9eGkoKSxjPU9pKCksZD10K3ZvLHA9Yy5maXJzdENyZWF0ZVBhc3M/KGZ1bmN0aW9uIG0odCxlLG4sbyxpLGEscixzLGwpe25nRGV2TW9kZSYmTG8oZSksbmdEZXZNb2RlJiZuZ0Rldk1vZGUuZmlyc3RDcmVhdGVQYXNzKys7Y29uc3QgYz1lLmNvbnN0cyxkPV9kKGUsdCw0LHJ8fG51bGwsaGkoYyxzKSk7TGQoZSxuLGQsaGkoYyxsKSkscmEoZSxkKTtjb25zdCBwPWQudFZpZXdzPVJkKDIsZCxvLGksYSxlLmRpcmVjdGl2ZVJlZ2lzdHJ5LGUucGlwZVJlZ2lzdHJ5LG51bGwsZS5zY2hlbWFzLGMpO3JldHVybiBudWxsIT09ZS5xdWVyaWVzJiYoZS5xdWVyaWVzLnRlbXBsYXRlKGUsZCkscC5xdWVyaWVzPWUucXVlcmllcy5lbWJlZGRlZFRWaWV3KGQpKSxkfSkoZCxjLGwsZSxuLG8saSxhLHIpOmMuZGF0YVtkXTtEaShwLCExKTtjb25zdCBmPWxbMTFdLmNyZWF0ZUNvbW1lbnQobmdEZXZNb2RlPyJjb250YWluZXIiOiIiKTtyYyhjLGwsZixwKSxhbChmLGwpLG5wKGwsbFtkXT1RZChmLGwsZixwKSksRG8ocCkmJmtkKGMsbCxwKSxudWxsIT1yJiZTZChsLHAscyl9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2Z1bmN0aW9uIEZtKHQpe3JldHVybiBtaSgoZnVuY3Rpb24gZSgpe3JldHVybiBfaS5sRnJhbWUuY29udGV4dExWaWV3fSkoKSx2byt0KX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY29uc3QgTG09eyLJtcm1ZGVmaW5lSW5qZWN0YWJsZSI6U24sIsm1ybVkZWZpbmVJbmplY3RvciI6RG4sIsm1ybVpbmplY3QiOlRyLCLJtcm1aW52YWxpZEZhY3RvcnlEZXAiOk5yLHJlc29sdmVGb3J3YXJkUmVmOnRufTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY29uc3QgQm09WmUoe3Byb3ZpZGU6U3RyaW5nLHVzZVZhbHVlOlplfSk7ZnVuY3Rpb24gVm0odCl7cmV0dXJuIHZvaWQgMCE9PXQudXNlQ2xhc3N9ZnVuY3Rpb24gam0odCl7cmV0dXJuIHZvaWQgMCE9PXQudXNlRmFjdG9yeX1aZSh7cHJvdmlkZTpTdHJpbmcsdXNlVmFsdWU6WmV9KTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNvbnN0IFVtPVhhKCJJbmplY3RhYmxlIix2b2lkIDAsdm9pZCAwLHZvaWQgMCwoKHQsZSk9PldtKHQsZSkpKSxXbT1mdW5jdGlvbiBHbSh0LGUpe2xldCBuPW51bGwsbz1udWxsO3QuaGFzT3duUHJvcGVydHkoVG4pfHxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxUbix7Z2V0OigpPT57aWYobnVsbD09PW4pe2NvbnN0IG89bHIoe3VzYWdlOjAsa2luZDoiaW5qZWN0YWJsZSIsdHlwZTp0fSk7bj1vLmNvbXBpbGVJbmplY3RhYmxlKExtLGBuZzovLy8ke3QubmFtZX0vybVwcm92LmpzYCwoZnVuY3Rpb24gbyh0LGUpe2NvbnN0IG49ZXx8e3Byb3ZpZGVkSW46bnVsbH0sbz17bmFtZTp0Lm5hbWUsdHlwZTp0LHR5cGVBcmd1bWVudENvdW50OjAscHJvdmlkZWRJbjpuLnByb3ZpZGVkSW59OyhWbShuKXx8am0obikpJiZ2b2lkIDAhPT1uLmRlcHMmJihvLmRlcHM9cXIobi5kZXBzKSk7Vm0obik/by51c2VDbGFzcz1uLnVzZUNsYXNzOiEoZnVuY3Rpb24gaSh0KXtyZXR1cm4gQm0gaW4gdH0pKG4pP2ptKG4pP28udXNlRmFjdG9yeT1uLnVzZUZhY3Rvcnk6KGZ1bmN0aW9uIGEodCl7cmV0dXJuIHZvaWQgMCE9PXQudXNlRXhpc3Rpbmd9KShuKSYmKG8udXNlRXhpc3Rpbmc9bi51c2VFeGlzdGluZyk6by51c2VWYWx1ZT1uLnVzZVZhbHVlO3JldHVybiBvfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8pKHQsZSkpfXJldHVybiBufX0pLHQuaGFzT3duUHJvcGVydHkoaW8pfHxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxpbyx7Z2V0OigpPT57aWYobnVsbD09PW8pe2NvbnN0IGU9bHIoe3VzYWdlOjAsa2luZDoiaW5qZWN0YWJsZSIsdHlwZTp0fSk7bz1lLmNvbXBpbGVGYWN0b3J5KExtLGBuZzovLy8ke3QubmFtZX0vybVmYWMuanNgLHtuYW1lOnQubmFtZSx0eXBlOnQsdHlwZUFyZ3VtZW50Q291bnQ6MCxkZXBzOllyKHQpLHRhcmdldDplLkZhY3RvcnlUYXJnZXQuSW5qZWN0YWJsZX0pfXJldHVybiBvfSxjb25maWd1cmFibGU6ITB9KX07ZnVuY3Rpb24gWW0odCl7aWYodC5sZW5ndGg+MSl7cmV0dXJuIiAoIisoCi8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpmdW5jdGlvbiBlKHQpe2NvbnN0IGU9W107Zm9yKGxldCBuPTA7bjx0Lmxlbmd0aDsrK24pe2lmKGUuaW5kZXhPZih0W25dKT4tMSlyZXR1cm4gZS5wdXNoKHRbbl0pLGU7ZS5wdXNoKHRbbl0pfXJldHVybiBlfSkodC5zbGljZSgpLnJldmVyc2UoKSkubWFwKCh0PT5LZSh0LnRva2VuKSkpLmpvaW4oIiAtPiAiKSsiKSJ9cmV0dXJuIiJ9ZnVuY3Rpb24gcW0odCxlLG4sbyl7Y29uc3QgaT1bZV0sYT1uKGkpLHI9bz8oZnVuY3Rpb24gcyh0LGUpe2NvbnN0IG49YCR7dH0gY2F1c2VkIGJ5OiAke2UgaW5zdGFuY2VvZiBFcnJvcj9lLm1lc3NhZ2U6ZX1gLG89RXJyb3Iobik7cmV0dXJuIG8ubmdPcmlnaW5hbEVycm9yPWUsb30pKGEsbyk6RXJyb3IoYSk7cmV0dXJuIHIuYWRkS2V5PVptLHIua2V5cz1pLHIuaW5qZWN0b3JzPVt0XSxyLmNvbnN0cnVjdFJlc29sdmluZ01lc3NhZ2U9bixyLm5nT3JpZ2luYWxFcnJvcj1vLHJ9ZnVuY3Rpb24gWm0odCxlKXt0aGlzLmluamVjdG9ycy5wdXNoKHQpLHRoaXMua2V5cy5wdXNoKGUpLHRoaXMubWVzc2FnZT10aGlzLmNvbnN0cnVjdFJlc29sdmluZ01lc3NhZ2UodGhpcy5rZXlzKX1mdW5jdGlvbiBYbSh0LGUpe2NvbnN0IG49W107Zm9yKGxldCB0PTAsbz1lLmxlbmd0aDt0PG87dCsrKXtjb25zdCBvPWVbdF07bi5wdXNoKG8mJjAhPW8ubGVuZ3RoP28ubWFwKEtlKS5qb2luKCIgIik6Ij8iKX1yZXR1cm4gRXJyb3IoIkNhbm5vdCByZXNvbHZlIGFsbCBwYXJhbWV0ZXJzIGZvciAnIitLZSh0KSsiJygiK24uam9pbigiLCAiKSsiKS4gTWFrZSBzdXJlIHRoYXQgYWxsIHRoZSBwYXJhbWV0ZXJzIGFyZSBkZWNvcmF0ZWQgd2l0aCBJbmplY3Qgb3IgaGF2ZSB2YWxpZCB0eXBlIGFubm90YXRpb25zIGFuZCB0aGF0ICciK0tlKHQpKyInIGlzIGRlY29yYXRlZCB3aXRoIEluamVjdGFibGUuIil9ZnVuY3Rpb24gS20odCxlKXtyZXR1cm4gRXJyb3IoYENhbm5vdCBtaXggbXVsdGkgcHJvdmlkZXJzIGFuZCByZWd1bGFyIHByb3ZpZGVycywgZ290OiAke3R9ICR7ZX1gKX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY2xhc3MgSm17Y29uc3RydWN0b3IodCxlKXtpZih0aGlzLnRva2VuPXQsdGhpcy5pZD1lLCF0KXRocm93IG5ldyBFcnJvcigiVG9rZW4gbXVzdCBiZSBkZWZpbmVkISIpO3RoaXMuZGlzcGxheU5hbWU9S2UodGhpcy50b2tlbil9c3RhdGljIGdldCh0KXtyZXR1cm4gUW0uZ2V0KHRuKHQpKX1zdGF0aWMgZ2V0IG51bWJlck9mS2V5cygpe3JldHVybiBRbS5udW1iZXJPZktleXN9fWNvbnN0IFFtPW5ldyBjbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMuX2FsbEtleXM9bmV3IE1hcH1nZXQodCl7aWYodCBpbnN0YW5jZW9mIEptKXJldHVybiB0O2lmKHRoaXMuX2FsbEtleXMuaGFzKHQpKXJldHVybiB0aGlzLl9hbGxLZXlzLmdldCh0KTtjb25zdCBlPW5ldyBKbSh0LEptLm51bWJlck9mS2V5cyk7cmV0dXJuIHRoaXMuX2FsbEtleXMuc2V0KHQsZSksZX1nZXQgbnVtYmVyT2ZLZXlzKCl7cmV0dXJuIHRoaXMuX2FsbEtleXMuc2l6ZX19OwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNvbnN0ICRtPW5ldyBjbGFzc3tjb25zdHJ1Y3Rvcih0KXt0aGlzLnJlZmxlY3Rpb25DYXBhYmlsaXRpZXM9dH11cGRhdGVDYXBhYmlsaXRpZXModCl7dGhpcy5yZWZsZWN0aW9uQ2FwYWJpbGl0aWVzPXR9ZmFjdG9yeSh0KXtyZXR1cm4gdGhpcy5yZWZsZWN0aW9uQ2FwYWJpbGl0aWVzLmZhY3RvcnkodCl9cGFyYW1ldGVycyh0KXtyZXR1cm4gdGhpcy5yZWZsZWN0aW9uQ2FwYWJpbGl0aWVzLnBhcmFtZXRlcnModCl9YW5ub3RhdGlvbnModCl7cmV0dXJuIHRoaXMucmVmbGVjdGlvbkNhcGFiaWxpdGllcy5hbm5vdGF0aW9ucyh0KX1wcm9wTWV0YWRhdGEodCl7cmV0dXJuIHRoaXMucmVmbGVjdGlvbkNhcGFiaWxpdGllcy5wcm9wTWV0YWRhdGEodCl9aGFzTGlmZWN5Y2xlSG9vayh0LGUpe3JldHVybiB0aGlzLnJlZmxlY3Rpb25DYXBhYmlsaXRpZXMuaGFzTGlmZWN5Y2xlSG9vayh0LGUpfWdldHRlcih0KXtyZXR1cm4gdGhpcy5yZWZsZWN0aW9uQ2FwYWJpbGl0aWVzLmdldHRlcih0KX1zZXR0ZXIodCl7cmV0dXJuIHRoaXMucmVmbGVjdGlvbkNhcGFiaWxpdGllcy5zZXR0ZXIodCl9bWV0aG9kKHQpe3JldHVybiB0aGlzLnJlZmxlY3Rpb25DYXBhYmlsaXRpZXMubWV0aG9kKHQpfWltcG9ydFVyaSh0KXtyZXR1cm4gdGhpcy5yZWZsZWN0aW9uQ2FwYWJpbGl0aWVzLmltcG9ydFVyaSh0KX1yZXNvdXJjZVVyaSh0KXtyZXR1cm4gdGhpcy5yZWZsZWN0aW9uQ2FwYWJpbGl0aWVzLnJlc291cmNlVXJpKHQpfXJlc29sdmVJZGVudGlmaWVyKHQsZSxuLG8pe3JldHVybiB0aGlzLnJlZmxlY3Rpb25DYXBhYmlsaXRpZXMucmVzb2x2ZUlkZW50aWZpZXIodCxlLG4sbyl9cmVzb2x2ZUVudW0odCxlKXtyZXR1cm4gdGhpcy5yZWZsZWN0aW9uQ2FwYWJpbGl0aWVzLnJlc29sdmVFbnVtKHQsZSl9fShuZXcgeHIpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jbGFzcyB0Zntjb25zdHJ1Y3Rvcih0LGUsbil7dGhpcy5rZXk9dCx0aGlzLm9wdGlvbmFsPWUsdGhpcy52aXNpYmlsaXR5PW59c3RhdGljIGZyb21LZXkodCl7cmV0dXJuIG5ldyB0Zih0LCExLG51bGwpfX1jb25zdCBlZj1bXTtjbGFzcyBuZntjb25zdHJ1Y3Rvcih0LGUsbil7dGhpcy5rZXk9dCx0aGlzLnJlc29sdmVkRmFjdG9yaWVzPWUsdGhpcy5tdWx0aVByb3ZpZGVyPW4sdGhpcy5yZXNvbHZlZEZhY3Rvcnk9dGhpcy5yZXNvbHZlZEZhY3Rvcmllc1swXX19Y2xhc3Mgb2Z7Y29uc3RydWN0b3IodCxlKXt0aGlzLmZhY3Rvcnk9dCx0aGlzLmRlcGVuZGVuY2llcz1lfX1mdW5jdGlvbiBhZih0KXtsZXQgZSxuO2lmKHQudXNlQ2xhc3Mpe2NvbnN0IG89dG4odC51c2VDbGFzcyk7ZT0kbS5mYWN0b3J5KG8pLG49Y2Yobyl9ZWxzZSB0LnVzZUV4aXN0aW5nPyhlPXQ9PnQsbj1bdGYuZnJvbUtleShKbS5nZXQodC51c2VFeGlzdGluZykpXSk6dC51c2VGYWN0b3J5PyhlPXQudXNlRmFjdG9yeSxuPShmdW5jdGlvbiBvKHQsZSl7aWYoZSl7Y29uc3Qgbj1lLm1hcCgodD0+W3RdKSk7cmV0dXJuIGUubWFwKChlPT5kZih0LGUsbikpKX1yZXR1cm4gY2YodCl9KSh0LnVzZUZhY3RvcnksdC5kZXBzKSk6KGU9KCk9PnQudXNlVmFsdWUsbj1lZik7cmV0dXJuIG5ldyBvZihlLG4pfWZ1bmN0aW9uIHJmKHQpe3JldHVybiBuZXcgbmYoSm0uZ2V0KHQucHJvdmlkZSksW2FmKHQpXSx0Lm11bHRpfHwhMSl9ZnVuY3Rpb24gc2YodCl7Y29uc3QgZT0oZnVuY3Rpb24gbih0LGUpe2ZvcihsZXQgbj0wO248dC5sZW5ndGg7bisrKXtjb25zdCBvPXRbbl0saT1lLmdldChvLmtleS5pZCk7aWYoaSl7aWYoby5tdWx0aVByb3ZpZGVyIT09aS5tdWx0aVByb3ZpZGVyKXRocm93IEttKGksbyk7aWYoby5tdWx0aVByb3ZpZGVyKWZvcihsZXQgdD0wO3Q8by5yZXNvbHZlZEZhY3Rvcmllcy5sZW5ndGg7dCsrKWkucmVzb2x2ZWRGYWN0b3JpZXMucHVzaChvLnJlc29sdmVkRmFjdG9yaWVzW3RdKTtlbHNlIGUuc2V0KG8ua2V5LmlkLG8pfWVsc2V7bGV0IHQ7dD1vLm11bHRpUHJvdmlkZXI/bmV3IG5mKG8ua2V5LG8ucmVzb2x2ZWRGYWN0b3JpZXMuc2xpY2UoKSxvLm11bHRpUHJvdmlkZXIpOm8sZS5zZXQoby5rZXkuaWQsdCl9fXJldHVybiBlfSkobGYodCxbXSkubWFwKHJmKSxuZXcgTWFwKTtyZXR1cm4gQXJyYXkuZnJvbShlLnZhbHVlcygpKX1mdW5jdGlvbiBsZih0LGUpe3JldHVybiB0LmZvckVhY2goKHQ9PntpZih0IGluc3RhbmNlb2YgY3IpZS5wdXNoKHtwcm92aWRlOnQsdXNlQ2xhc3M6dH0pO2Vsc2UgaWYodCYmIm9iamVjdCI9PXR5cGVvZiB0JiZ2b2lkIDAhPT10LnByb3ZpZGUpZS5wdXNoKHQpO2Vsc2V7aWYoIUFycmF5LmlzQXJyYXkodCkpdGhyb3coZnVuY3Rpb24gbih0KXtyZXR1cm4gRXJyb3IoYEludmFsaWQgcHJvdmlkZXIgLSBvbmx5IGluc3RhbmNlcyBvZiBQcm92aWRlciBhbmQgVHlwZSBhcmUgYWxsb3dlZCwgZ290OiAke3R9YCl9KSh0KTtsZih0LGUpfX0pKSxlfWZ1bmN0aW9uIGNmKHQpe2NvbnN0IGU9JG0ucGFyYW1ldGVycyh0KTtpZighZSlyZXR1cm5bXTtpZihlLnNvbWUoKHQ9Pm51bGw9PXQpKSl0aHJvdyBYbSh0LGUpO3JldHVybiBlLm1hcCgobj0+ZGYodCxuLGUpKSl9ZnVuY3Rpb24gZGYodCxlLG4pe2xldCBvPW51bGwsaT0hMTtpZighQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gcGYoZSBpbnN0YW5jZW9mIExyP2UudG9rZW46ZSxpLG51bGwpO2xldCBhPW51bGw7Zm9yKGxldCB0PTA7dDxlLmxlbmd0aDsrK3Qpe2NvbnN0IG49ZVt0XTtuIGluc3RhbmNlb2YgY3I/bz1uOm4gaW5zdGFuY2VvZiBMcj9vPW4udG9rZW46biBpbnN0YW5jZW9mIEJyP2k9ITA6biBpbnN0YW5jZW9mIFZyfHxuIGluc3RhbmNlb2YganI/YT1uOm4gaW5zdGFuY2VvZiBlciYmKG89bil9aWYobz10bihvKSxudWxsIT1vKXJldHVybiBwZihvLGksYSk7dGhyb3cgWG0odCxuKX1mdW5jdGlvbiBwZih0LGUsbil7cmV0dXJuIG5ldyB0ZihKbS5nZXQodCksZSxuKX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY29uc3QgbWY9e307Y2xhc3MgZmZ7c3RhdGljIHJlc29sdmUodCl7cmV0dXJuIHNmKHQpfXN0YXRpYyByZXNvbHZlQW5kQ3JlYXRlKHQsZSl7Y29uc3Qgbj1mZi5yZXNvbHZlKHQpO3JldHVybiBmZi5mcm9tUmVzb2x2ZWRQcm92aWRlcnMobixlKX1zdGF0aWMgZnJvbVJlc29sdmVkUHJvdmlkZXJzKHQsZSl7cmV0dXJuIG5ldyB1Zih0LGUpfX1jbGFzcyB1Zntjb25zdHJ1Y3Rvcih0LGUpe3RoaXMuX2NvbnN0cnVjdGlvbkNvdW50ZXI9MCx0aGlzLl9wcm92aWRlcnM9dCx0aGlzLnBhcmVudD1lfHxudWxsO2NvbnN0IG49dC5sZW5ndGg7dGhpcy5rZXlJZHM9W10sdGhpcy5vYmpzPVtdO2ZvcihsZXQgZT0wO2U8bjtlKyspdGhpcy5rZXlJZHNbZV09dFtlXS5rZXkuaWQsdGhpcy5vYmpzW2VdPW1mfWdldCh0LGU9d3Ipe3JldHVybiB0aGlzLl9nZXRCeUtleShKbS5nZXQodCksbnVsbCxlKX1yZXNvbHZlQW5kQ3JlYXRlQ2hpbGQodCl7Y29uc3QgZT1mZi5yZXNvbHZlKHQpO3JldHVybiB0aGlzLmNyZWF0ZUNoaWxkRnJvbVJlc29sdmVkKGUpfWNyZWF0ZUNoaWxkRnJvbVJlc29sdmVkKHQpe2NvbnN0IGU9bmV3IHVmKHQpO3JldHVybiBlLnBhcmVudD10aGlzLGV9cmVzb2x2ZUFuZEluc3RhbnRpYXRlKHQpe3JldHVybiB0aGlzLmluc3RhbnRpYXRlUmVzb2x2ZWQoZmYucmVzb2x2ZShbdF0pWzBdKX1pbnN0YW50aWF0ZVJlc29sdmVkKHQpe3JldHVybiB0aGlzLl9pbnN0YW50aWF0ZVByb3ZpZGVyKHQpfWdldFByb3ZpZGVyQXRJbmRleCh0KXtpZih0PDB8fHQ+PXRoaXMuX3Byb3ZpZGVycy5sZW5ndGgpdGhyb3coZnVuY3Rpb24gZSh0KXtyZXR1cm4gRXJyb3IoYEluZGV4ICR7dH0gaXMgb3V0LW9mLWJvdW5kcy5gKX0pKHQpO3JldHVybiB0aGlzLl9wcm92aWRlcnNbdF19X25ldyh0KXtpZih0aGlzLl9jb25zdHJ1Y3Rpb25Db3VudGVyKys+dGhpcy5fZ2V0TWF4TnVtYmVyT2ZPYmplY3RzKCkpdGhyb3coZnVuY3Rpb24gZSh0LG4pe3JldHVybiBxbSh0LG4sKGZ1bmN0aW9uKHQpe3JldHVybmBDYW5ub3QgaW5zdGFudGlhdGUgY3ljbGljIGRlcGVuZGVuY3khJHtZbSh0KX1gfSkpfSkodGhpcyx0LmtleSk7cmV0dXJuIHRoaXMuX2luc3RhbnRpYXRlUHJvdmlkZXIodCl9X2dldE1heE51bWJlck9mT2JqZWN0cygpe3JldHVybiB0aGlzLm9ianMubGVuZ3RofV9pbnN0YW50aWF0ZVByb3ZpZGVyKHQpe2lmKHQubXVsdGlQcm92aWRlcil7Y29uc3QgZT1bXTtmb3IobGV0IG49MDtuPHQucmVzb2x2ZWRGYWN0b3JpZXMubGVuZ3RoOysrbillW25dPXRoaXMuX2luc3RhbnRpYXRlKHQsdC5yZXNvbHZlZEZhY3Rvcmllc1tuXSk7cmV0dXJuIGV9cmV0dXJuIHRoaXMuX2luc3RhbnRpYXRlKHQsdC5yZXNvbHZlZEZhY3Rvcmllc1swXSl9X2luc3RhbnRpYXRlKHQsZSl7Y29uc3Qgbj1lLmZhY3Rvcnk7bGV0IG8saTt0cnl7bz1lLmRlcGVuZGVuY2llcy5tYXAoKHQ9PnRoaXMuX2dldEJ5UmVmbGVjdGl2ZURlcGVuZGVuY3kodCkpKX1jYXRjaChlKXt0aHJvdyBlLmFkZEtleSYmZS5hZGRLZXkodGhpcyx0LmtleSksZX10cnl7aT1uKC4uLm8pfWNhdGNoKGUpe3Rocm93KGZ1bmN0aW9uIG4odCxlLG8saSl7cmV0dXJuIHFtKHQsaSwoZnVuY3Rpb24odCl7Y29uc3Qgbj1LZSh0WzBdLnRva2VuKTtyZXR1cm5gJHtlLm1lc3NhZ2V9OiBFcnJvciBkdXJpbmcgaW5zdGFudGlhdGlvbiBvZiAke259ISR7WW0odCl9LmB9KSxlKX0pKHRoaXMsZSwwLHQua2V5KX1yZXR1cm4gaX1fZ2V0QnlSZWZsZWN0aXZlRGVwZW5kZW5jeSh0KXtyZXR1cm4gdGhpcy5fZ2V0QnlLZXkodC5rZXksdC52aXNpYmlsaXR5LHQub3B0aW9uYWw/bnVsbDp3cil9X2dldEJ5S2V5KHQsZSxuKXtyZXR1cm4gdD09PXVmLklOSkVDVE9SX0tFWT90aGlzOmUgaW5zdGFuY2VvZiBWcj90aGlzLl9nZXRCeUtleVNlbGYodCxuKTp0aGlzLl9nZXRCeUtleURlZmF1bHQodCxuLGUpfV9nZXRPYmpCeUtleUlkKHQpe2ZvcihsZXQgZT0wO2U8dGhpcy5rZXlJZHMubGVuZ3RoO2UrKylpZih0aGlzLmtleUlkc1tlXT09PXQpcmV0dXJuIHRoaXMub2Jqc1tlXT09PW1mJiYodGhpcy5vYmpzW2VdPXRoaXMuX25ldyh0aGlzLl9wcm92aWRlcnNbZV0pKSx0aGlzLm9ianNbZV07cmV0dXJuIG1mfV90aHJvd09yTnVsbCh0LGUpe2lmKGUhPT13cilyZXR1cm4gZTt0aHJvdyhmdW5jdGlvbiBuKHQsZSl7cmV0dXJuIHFtKHQsZSwoZnVuY3Rpb24odCl7cmV0dXJuYE5vIHByb3ZpZGVyIGZvciAke0tlKHRbMF0udG9rZW4pfSEke1ltKHQpfWB9KSl9KSh0aGlzLHQpfV9nZXRCeUtleVNlbGYodCxlKXtjb25zdCBuPXRoaXMuX2dldE9iakJ5S2V5SWQodC5pZCk7cmV0dXJuIG4hPT1tZj9uOnRoaXMuX3Rocm93T3JOdWxsKHQsZSl9X2dldEJ5S2V5RGVmYXVsdCh0LGUsbil7bGV0IG87Zm9yKG89biBpbnN0YW5jZW9mIGpyP3RoaXMucGFyZW50OnRoaXM7byBpbnN0YW5jZW9mIHVmOyl7Y29uc3QgZT1vLG49ZS5fZ2V0T2JqQnlLZXlJZCh0LmlkKTtpZihuIT09bWYpcmV0dXJuIG47bz1lLnBhcmVudH1yZXR1cm4gbnVsbCE9PW8/by5nZXQodC50b2tlbixlKTp0aGlzLl90aHJvd09yTnVsbCh0LGUpfWdldCBkaXNwbGF5TmFtZSgpe3JldHVybmBSZWZsZWN0aXZlSW5qZWN0b3IocHJvdmlkZXJzOiBbJHsoZnVuY3Rpb24gdChlLG4pe2NvbnN0IG89W107Zm9yKGxldCB0PTA7dDxlLl9wcm92aWRlcnMubGVuZ3RoOysrdClvW3RdPW4oZS5nZXRQcm92aWRlckF0SW5kZXgodCkpO3JldHVybiBvfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCi8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLykodGhpcywodD0+JyAiJyt0LmtleS5kaXNwbGF5TmFtZSsnIiAnKSkuam9pbigiLCAiKX1dKWB9dG9TdHJpbmcoKXtyZXR1cm4gdGhpcy5kaXNwbGF5TmFtZX19ZnVuY3Rpb24gZ2YodCxlPUhuLkRlZmF1bHQpe2NvbnN0IG49eGkoKTtpZihudWxsPT09bilyZXR1cm4gbmdEZXZNb2RlJiYoZnVuY3Rpb24gbyh0KXtuZ0Rldk1vZGUmJmhuKEZuLHQsIkNhbGxpbmcgybXJtWluamVjdCB3b3VsZCBjYXVzZSBpbmZpbml0ZSByZWN1cnNpb24iKX0pKGdmKSxUcih0LGUpO3JldHVybiBOYSh3aSgpLG4sdG4odCksZSl9ZnVuY3Rpb24gaGYoKXtjb25zdCB0PW5nRGV2TW9kZT8iVGhpcyBjb25zdHJ1Y3RvciB3YXMgbm90IGNvbXBhdGlibGUgd2l0aCBEZXBlbmRlbmN5IEluamVjdGlvbi4iOiJpbnZhbGlkIjt0aHJvdyBuZXcgRXJyb3IodCl9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2Z1bmN0aW9uIGJmKHQsZSxuKXtjb25zdCBvPXhpKCksaT1IaSgpO2lmKHVtKG8saSxlKSl7Y29uc3QgYT1PaSgpLHI9bmEoKTt6ZChhLHIsbyx0LGUsb1sxMV0sbiwhMSksbmdEZXZNb2RlJiZscChhLmRhdGEscix0LGkpfXJldHVybiBiZn1mdW5jdGlvbiB5Zih0LGUsbixvLGkpe2NvbnN0IGE9aT8iY2xhc3MiOiJzdHlsZSI7dXAodCxuLGUuaW5wdXRzW2FdLGEsbyl9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2Z1bmN0aW9uIF9mKHQsZSxuLG8saSxhLHIpe25nRGV2TW9kZSYmTG8oZSksbmdEZXZNb2RlJiZuZ0Rldk1vZGUuZmlyc3RDcmVhdGVQYXNzKys7Y29uc3Qgcz1lLmNvbnN0cyxsPV9kKGUsdCwyLGksaGkocyxhKSksYz1MZChlLG4sbCxoaShzLHIpKTtyZXR1cm4gbmdEZXZNb2RlJiYoZnVuY3Rpb24gZCh0LGUsbixvKXtpZihudWxsPT09dC5zY2hlbWFzKXJldHVybjtjb25zdCBpPW4udmFsdWU7aWYoIW8mJm51bGwhPT1pKXtpZigoInVuZGVmaW5lZCIhPXR5cGVvZiBIVE1MVW5rbm93bkVsZW1lbnQmJkhUTUxVbmtub3duRWxlbWVudCYmZSBpbnN0YW5jZW9mIEhUTUxVbmtub3duRWxlbWVudHx8InVuZGVmaW5lZCIhPXR5cGVvZiBjdXN0b21FbGVtZW50cyYmaS5pbmRleE9mKCItIik+LTEmJiFjdXN0b21FbGVtZW50cy5nZXQoaSkpJiYhSGQodCxpKSl7bGV0IHQ9YCcke2l9JyBpcyBub3QgYSBrbm93biBlbGVtZW50OlxuYDt0Kz1gMS4gSWYgJyR7aX0nIGlzIGFuIEFuZ3VsYXIgY29tcG9uZW50LCB0aGVuIHZlcmlmeSB0aGF0IGl0IGlzIHBhcnQgb2YgdGhpcyBtb2R1bGUuXG5gLGkmJmkuaW5kZXhPZigiLSIpPi0xP3QrPWAyLiBJZiAnJHtpfScgaXMgYSBXZWIgQ29tcG9uZW50IHRoZW4gYWRkICdDVVNUT01fRUxFTUVOVFNfU0NIRU1BJyB0byB0aGUgJ0BOZ01vZHVsZS5zY2hlbWFzJyBvZiB0aGlzIGNvbXBvbmVudCB0byBzdXBwcmVzcyB0aGlzIG1lc3NhZ2UuYDp0Kz0iMi4gVG8gYWxsb3cgYW55IGVsZW1lbnQgYWRkICdOT19FUlJPUlNfU0NIRU1BJyB0byB0aGUgJ0BOZ01vZHVsZS5zY2hlbWFzJyBvZiB0aGlzIGNvbXBvbmVudC4iLGNvbnNvbGUuZXJyb3IoYW4oIjMwNCIsdCkpfX19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLykoZSxvLGwsYyksbnVsbCE9PWwuYXR0cnMmJmhwKGwsbC5hdHRycywhMSksbnVsbCE9PWwubWVyZ2VkQXR0cnMmJmhwKGwsbC5tZXJnZWRBdHRycywhMCksbnVsbCE9PWUucXVlcmllcyYmZS5xdWVyaWVzLmVsZW1lbnRTdGFydChlLGwpLGx9ZnVuY3Rpb24gQ2YodCxlLG4sbyl7Y29uc3QgaT14aSgpLGE9T2koKSxyPXZvK3Q7bmdEZXZNb2RlJiZnbih6aSgpLGEuYmluZGluZ1N0YXJ0SW5kZXgsImVsZW1lbnRzIHNob3VsZCBiZSBjcmVhdGVkIGJlZm9yZSBhbnkgYmluZGluZ3MiKSxuZ0Rldk1vZGUmJnduKGkscik7Y29uc3Qgcz1pWzExXSxsPWlbcl09VWwocyxlLChmdW5jdGlvbiBjKCl7cmV0dXJuIF9pLmxGcmFtZS5jdXJyZW50TmFtZXNwYWNlfSkoKSksZD1hLmZpcnN0Q3JlYXRlUGFzcz9fZihyLGEsaSxsLGUsbixvKTphLmRhdGFbcl07RGkoZCwhMCk7Y29uc3QgcD1kLm1lcmdlZEF0dHJzO251bGwhPT1wJiZoYShzLGwscCk7Y29uc3QgbT1kLmNsYXNzZXM7bnVsbCE9PW0mJmdjKHMsbCxtKTtjb25zdCBmPWQuc3R5bGVzO251bGwhPT1mJiZ1YyhzLGwsZiksNjQhPSg2NCZkLmZsYWdzKSYmcmMoYSxpLGwsZCksMD09PShmdW5jdGlvbiB1KCl7cmV0dXJuIF9pLmxGcmFtZS5lbGVtZW50RGVwdGhDb3VudH0pKCkmJmFsKGwsaSksKGZ1bmN0aW9uIGcoKXtfaS5sRnJhbWUuZWxlbWVudERlcHRoQ291bnQrK30pKCksRG8oZCkmJihrZChhLGksZCksd2QoYSxkLGkpKSxudWxsIT09byYmU2QoaSxkKX1mdW5jdGlvbiBNZigpe2xldCB0PXdpKCk7bmdEZXZNb2RlJiZ4bih0LCJObyBwYXJlbnQgbm9kZSB0byBjbG9zZS4iKSxSaSgpP0VpKCk6KG5nRGV2TW9kZSYmem8od2koKSksdD10LnBhcmVudCxEaSh0LCExKSk7Y29uc3QgZT10O25nRGV2TW9kZSYmZ2EoZSwzKSwoZnVuY3Rpb24gbigpe19pLmxGcmFtZS5lbGVtZW50RGVwdGhDb3VudC0tfSkoKTtjb25zdCBvPU9pKCk7by5maXJzdENyZWF0ZVBhc3MmJihyYShvLHQpLGtvKHQpJiZvLnF1ZXJpZXMuZWxlbWVudEVuZCh0KSksbnVsbCE9ZS5jbGFzc2VzV2l0aG91dEhvc3QmJihmdW5jdGlvbiBpKHQpe3JldHVybiAwIT0oMTYmdC5mbGFncyl9KShlKSYmeWYobyxlLHhpKCksZS5jbGFzc2VzV2l0aG91dEhvc3QsITApLG51bGwhPWUuc3R5bGVzV2l0aG91dEhvc3QmJihmdW5jdGlvbiBhKHQpe3JldHVybiAwIT0oMzImdC5mbGFncyl9KShlKSYmeWYobyxlLHhpKCksZS5zdHlsZXNXaXRob3V0SG9zdCwhMSl9ZnVuY3Rpb24gdmYodCxlLG4sbyl7Q2YodCxlLG4sbyksTWYoKX1mdW5jdGlvbiB4Zih0LGUsbil7Y29uc3Qgbz14aSgpLGk9T2koKSxhPXQrdm87bmdEZXZNb2RlJiZ3bihvLGEpLG5nRGV2TW9kZSYmZ24oemkoKSxpLmJpbmRpbmdTdGFydEluZGV4LCJlbGVtZW50IGNvbnRhaW5lcnMgc2hvdWxkIGJlIGNyZWF0ZWQgYmVmb3JlIGFueSBiaW5kaW5ncyIpO2NvbnN0IHI9aS5maXJzdENyZWF0ZVBhc3M/KGZ1bmN0aW9uIHModCxlLG4sbyxpKXtuZ0Rldk1vZGUmJm5nRGV2TW9kZS5maXJzdENyZWF0ZVBhc3MrKztjb25zdCBhPWUuY29uc3RzLHI9aGkoYSxvKSxzPV9kKGUsdCw4LCJuZy1jb250YWluZXIiLHIpO3JldHVybiBudWxsIT09ciYmaHAocyxyLCEwKSxMZChlLG4scyxoaShhLGkpKSxudWxsIT09ZS5xdWVyaWVzJiZlLnF1ZXJpZXMuZWxlbWVudFN0YXJ0KGUscyksc30pKGEsaSxvLGUsbik6aS5kYXRhW2FdO0RpKHIsITApLG5nRGV2TW9kZSYmbmdEZXZNb2RlLnJlbmRlcmVyQ3JlYXRlQ29tbWVudCsrO2NvbnN0IGw9b1thXT1vWzExXS5jcmVhdGVDb21tZW50KG5nRGV2TW9kZT8ibmctY29udGFpbmVyIjoiIik7cmMoaSxvLGwsciksYWwobCxvKSxEbyhyKSYmKGtkKGksbyxyKSx3ZChpLHIsbykpLG51bGwhPW4mJlNkKG8scil9ZnVuY3Rpb24gT2YoKXtsZXQgdD13aSgpO2NvbnN0IGU9T2koKTtSaSgpP0VpKCk6KG5nRGV2TW9kZSYmem8odCksdD10LnBhcmVudCxEaSh0LCExKSksbmdEZXZNb2RlJiZnYSh0LDgpLGUuZmlyc3RDcmVhdGVQYXNzJiYocmEoZSx0KSxrbyh0KSYmZS5xdWVyaWVzLmVsZW1lbnRFbmQodCkpfWZ1bmN0aW9uIFBmKHQsZSxuKXt4Zih0LGUsbiksT2YoKX1mdW5jdGlvbiB3Zigpe3JldHVybiB4aSgpfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9mdW5jdGlvbiBrZih0KXtyZXR1cm4hIXQmJiJmdW5jdGlvbiI9PXR5cGVvZiB0LnRoZW59ZnVuY3Rpb24gU2YodCl7cmV0dXJuISF0JiYiZnVuY3Rpb24iPT10eXBlb2YgdC5zdWJzY3JpYmV9dWYuSU5KRUNUT1JfS0VZPUptLmdldChOcCk7Y29uc3QgRGY9U2Y7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2Z1bmN0aW9uIFJmKHQsZSxuLG8pe2NvbnN0IGk9eGkoKSxhPU9pKCkscj13aSgpO3JldHVybiBBZihhLGksaVsxMV0scix0LGUsISFuLG8pLFJmfWZ1bmN0aW9uIEVmKHQsZSl7Y29uc3Qgbj13aSgpLG89eGkoKSxpPU9pKCk7cmV0dXJuIEFmKGksbyxtcChqaShpLmRhdGEpLG4sbyksbix0LGUsITEpLEVmfWZ1bmN0aW9uIEFmKHQsZSxuLG8saSxhLHIscyl7Y29uc3QgbD1EbyhvKSxjPXQuZmlyc3RDcmVhdGVQYXNzJiZwcCh0KSxkPWVbOF0scD1kcChlKTtuZ0Rldk1vZGUmJmdhKG8sMTUpO2xldCBtPSEwO2lmKDMmby50eXBlfHxzKXtjb25zdCBmPWRpKG8sZSksdT1zP3MoZik6ZixnPXAubGVuZ3RoLGg9cz90PT5zKGxpKHRbby5pbmRleF0pKTpvLmluZGV4O2lmKHJpKG4pKXtsZXQgcj1udWxsO2lmKCFzJiZsJiYocj0oZnVuY3Rpb24gZih0LGUsbixvKXtjb25zdCBpPXQuY2xlYW51cDtpZihudWxsIT1pKWZvcihsZXQgdD0wO3Q8aS5sZW5ndGgtMTt0Kz0yKXtjb25zdCBhPWlbdF07aWYoYT09PW4mJmlbdCsxXT09PW8pe2NvbnN0IG49ZVs3XSxvPWlbdCsyXTtyZXR1cm4gbi5sZW5ndGg+bz9uW29dOm51bGx9InN0cmluZyI9PXR5cGVvZiBhJiYodCs9Mil9cmV0dXJuIG51bGx9KSh0LGUsaSxvLmluZGV4KSksbnVsbCE9PXIpeyhyLl9fbmdMYXN0TGlzdGVuZXJGbl9ffHxyKS5fX25nTmV4dExpc3RlbmVyRm5fXz1hLHIuX19uZ0xhc3RMaXN0ZW5lckZuX189YSxtPSExfWVsc2V7YT1OZihvLGUsZCxhLCExKTtjb25zdCB0PW4ubGlzdGVuKHUsaSxhKTtuZ0Rldk1vZGUmJm5nRGV2TW9kZS5yZW5kZXJlckFkZEV2ZW50TGlzdGVuZXIrKyxwLnB1c2goYSx0KSxjJiZjLnB1c2goaSxoLGcsZysxKX19ZWxzZSBhPU5mKG8sZSxkLGEsITApLHUuYWRkRXZlbnRMaXN0ZW5lcihpLGEsciksbmdEZXZNb2RlJiZuZ0Rldk1vZGUucmVuZGVyZXJBZGRFdmVudExpc3RlbmVyKysscC5wdXNoKGEpLGMmJmMucHVzaChpLGgsZyxyKX1lbHNlIGE9TmYobyxlLGQsYSwhMSk7Y29uc3QgdT1vLm91dHB1dHM7bGV0IGc7aWYobSYmbnVsbCE9PXUmJihnPXVbaV0pKXtjb25zdCB0PWcubGVuZ3RoO2lmKHQpZm9yKGxldCBuPTA7bjx0O24rPTIpe2NvbnN0IHQ9Z1tuXTtuZ0Rldk1vZGUmJnduKGUsdCk7Y29uc3Qgcj1nW24rMV0scz1lW3RdLGw9c1tyXTtpZihuZ0Rldk1vZGUmJiFEZihsKSl0aHJvdyBuZXcgRXJyb3IoYEBPdXRwdXQgJHtyfSBub3QgaW5pdGlhbGl6ZWQgaW4gJyR7cy5jb25zdHJ1Y3Rvci5uYW1lfScuYCk7Y29uc3QgZD1sLnN1YnNjcmliZShhKSxtPXAubGVuZ3RoO3AucHVzaChhLGQpLGMmJmMucHVzaChpLG8uaW5kZXgsbSwtKG0rMSkpfX19ZnVuY3Rpb24gVGYodCxlLG4sbyl7dHJ5e3JldHVybiB0aSg2LGUsbiksITEhPT1uKG8pfWNhdGNoKGUpe3JldHVybiBmcCh0LGUpLCExfWZpbmFsbHl7dGkoNyxlLG4pfX1mdW5jdGlvbiBOZih0LGUsbixvLGkpe3JldHVybiBmdW5jdGlvbiBhKHIpe2lmKHI9PT1GdW5jdGlvbilyZXR1cm4gbztjb25zdCBzPTImdC5mbGFncz9maSh0LmluZGV4LGUpOmU7MD09KDMyJmVbMl0pJiZvcChzKTtsZXQgbD1UZihlLG4sbyxyKSxjPWEuX19uZ05leHRMaXN0ZW5lckZuX187Zm9yKDtjOylsPVRmKGUsbixjLHIpJiZsLGM9Yy5fX25nTmV4dExpc3RlbmVyRm5fXztyZXR1cm4gaSYmITE9PT1sJiYoci5wcmV2ZW50RGVmYXVsdCgpLHIucmV0dXJuVmFsdWU9ITEpLGx9fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovZnVuY3Rpb24gemYodD0xKXtyZXR1cm4gJGkodCl9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2Z1bmN0aW9uIElmKHQsZSl7bGV0IG49bnVsbDtjb25zdCBvPShmdW5jdGlvbiBpKHQpe2NvbnN0IGU9dC5hdHRycztpZihudWxsIT1lKXtjb25zdCB0PWUuaW5kZXhPZig1KTtpZigwPT0oMSZ0KSlyZXR1cm4gZVt0KzFdfXJldHVybiBudWxsfSkodCk7Zm9yKGxldCBpPTA7aTxlLmxlbmd0aDtpKyspe2NvbnN0IGE9ZVtpXTtpZigiKiIhPT1hKXtpZihudWxsPT09bz9PYyh0LGEsITApOlBjKG8sYSkpcmV0dXJuIGl9ZWxzZSBuPWl9cmV0dXJuIG59ZnVuY3Rpb24gSGYodCl7Y29uc3QgZT14aSgpWzE2XVs2XTtpZighZS5wcm9qZWN0aW9uKXtjb25zdCBuPWUucHJvamVjdGlvbj1ncih0P3QubGVuZ3RoOjEsbnVsbCksbz1uLnNsaWNlKCk7bGV0IGk9ZS5jaGlsZDtmb3IoO251bGwhPT1pOyl7Y29uc3QgZT10P0lmKGksdCk6MDtudWxsIT09ZSYmKG9bZV0/b1tlXS5wcm9qZWN0aW9uTmV4dD1pOm5bZV09aSxvW2VdPWkpLGk9aS5uZXh0fX19ZnVuY3Rpb24gRmYodCxlPTAsbil7Y29uc3Qgbz14aSgpLGk9T2koKSxhPV9kKGksdm8rdCwxNixudWxsLG58fG51bGwpO251bGw9PT1hLnByb2plY3Rpb24mJihhLnByb2plY3Rpb249ZSksRWkoKSw2NCE9KDY0JmEuZmxhZ3MpJiYoZnVuY3Rpb24gcih0LGUsbil7ZmMoZVsxMV0sMCxlLG4sWGwodCxuLGUpLGVjKG4ucGFyZW50fHxlWzZdLG4sZSkpfSkoaSxvLGEpfWZ1bmN0aW9uIExmKHQsZSxuKXtyZXR1cm4gQmYodCwiIixlLCIiLG4pLExmfWZ1bmN0aW9uIEJmKHQsZSxuLG8saSl7Y29uc3QgYT14aSgpLHI9Q20oYSxlLG4sbyk7aWYociE9PVNjKXtjb25zdCBuPU9pKCkscz1uYSgpO3pkKG4scyxhLHQscixhWzExXSxpLCExKSxuZ0Rldk1vZGUmJmxwKG4uZGF0YSxzLHQsemkoKS0xLGUsbyl9cmV0dXJuIEJmfWZ1bmN0aW9uIFZmKHQsZSxuLG8saSxhLHIpe2NvbnN0IHM9eGkoKSxsPU1tKHMsZSxuLG8saSxhKTtpZihsIT09U2Mpe2NvbnN0IG49T2koKSxpPW5hKCk7emQobixpLHMsdCxsLHNbMTFdLHIsITEpLG5nRGV2TW9kZSYmbHAobi5kYXRhLGksdCx6aSgpLTIsZSxvLGEpfXJldHVybiBWZn1mdW5jdGlvbiBqZih0LGUsbixvLGksYSxyLHMsbCl7Y29uc3QgYz14aSgpLGQ9dm0oYyxlLG4sbyxpLGEscixzKTtpZihkIT09U2Mpe2NvbnN0IG49T2koKSxpPW5hKCk7emQobixpLGMsdCxkLGNbMTFdLGwsITEpLG5nRGV2TW9kZSYmbHAobi5kYXRhLGksdCx6aSgpLTMsZSxvLGEscyl9cmV0dXJuIGpmfWZ1bmN0aW9uIFVmKHQsZSxuLG8saSxhLHIscyxsLGMsZCl7Y29uc3QgcD14aSgpLG09eG0ocCxlLG4sbyxpLGEscixzLGwsYyk7aWYobSE9PVNjKXtjb25zdCBuPU9pKCksaT1uYSgpO3pkKG4saSxwLHQsbSxwWzExXSxkLCExKSxuZ0Rldk1vZGUmJmxwKG4uZGF0YSxpLHQsemkoKS00LGUsbyxhLHMsYyl9cmV0dXJuIFVmfWZ1bmN0aW9uIFdmKHQsZSxuLG8saSxhLHIscyxsLGMsZCxwLG0pe2NvbnN0IGY9eGkoKSx1PU9tKGYsZSxuLG8saSxhLHIscyxsLGMsZCxwKTtpZih1IT09U2Mpe2NvbnN0IG49T2koKSxpPW5hKCk7emQobixpLGYsdCx1LGZbMTFdLG0sITEpLG5nRGV2TW9kZSYmbHAobi5kYXRhLGksdCx6aSgpLTUsZSxvLGEscyxjLHApfXJldHVybiBXZn1mdW5jdGlvbiBHZih0LGUsbixvLGksYSxyLHMsbCxjLGQscCxtLGYsdSl7Y29uc3QgZz14aSgpLGg9UG0oZyxlLG4sbyxpLGEscixzLGwsYyxkLHAsbSxmKTtpZihoIT09U2Mpe2NvbnN0IG49T2koKSxpPW5hKCk7emQobixpLGcsdCxoLGdbMTFdLHUsITEpLG5nRGV2TW9kZSYmbHAobi5kYXRhLGksdCx6aSgpLTYsZSxvLGEscyxjLHAsZil9cmV0dXJuIEdmfWZ1bmN0aW9uIFlmKHQsZSxuLG8saSxhLHIscyxsLGMsZCxwLG0sZix1LGcsaCl7Y29uc3QgYj14aSgpLHk9d20oYixlLG4sbyxpLGEscixzLGwsYyxkLHAsbSxmLHUsZyk7aWYoeSE9PVNjKXtjb25zdCBuPU9pKCksaT1uYSgpO3pkKG4saSxiLHQseSxiWzExXSxoLCExKSxuZ0Rldk1vZGUmJmxwKG4uZGF0YSxpLHQsemkoKS03LGUsbyxhLHMsYyxwLGYsZyl9cmV0dXJuIFlmfWZ1bmN0aW9uIHFmKHQsZSxuLG8saSxhLHIscyxsLGMsZCxwLG0sZix1LGcsaCxiLHkpe2NvbnN0IF89eGkoKSxDPWttKF8sZSxuLG8saSxhLHIscyxsLGMsZCxwLG0sZix1LGcsaCxiKTtpZihDIT09U2Mpe2NvbnN0IG49T2koKSxpPW5hKCk7emQobixpLF8sdCxDLF9bMTFdLHksITEpLG5nRGV2TW9kZSYmbHAobi5kYXRhLGksdCx6aSgpLTgsZSxvLGEscyxjLHAsZixnLGIpfXJldHVybiBxZn1mdW5jdGlvbiBaZih0LGUsbil7Y29uc3Qgbz14aSgpLGk9X20obyxlKTtpZihpIT09U2Mpe2NvbnN0IGE9T2koKSxyPW5hKCk7aWYoemQoYSxyLG8sdCxpLG9bMTFdLG4sITEpLG5nRGV2TW9kZSl7Y29uc3Qgbj1bZVswXV07Zm9yKGxldCB0PTI7dDxlLmxlbmd0aDt0Kz0yKW4ucHVzaChlW3RdKTtscChhLmRhdGEscix0LHppKCktbi5sZW5ndGgrMSwuLi5uKX19cmV0dXJuIFpmfWZ1bmN0aW9uIFhmKHQsZSxuLG8saSxhKXtuZ0Rldk1vZGUmJkJvKE9pKCkpO2xldCByPWE/ZS5jbGFzc0JpbmRpbmdzOmUuc3R5bGVCaW5kaW5ncyxzPUFjKHIpLGw9emMocik7dFtvXT1uO2xldCBjLGQ9ITE7aWYoQXJyYXkuaXNBcnJheShuKSl7Y29uc3QgdD1uO2M9dFsxXSwobnVsbD09PWN8fHlyKHQsYyk+MCkmJihkPSEwKX1lbHNlIGM9bjtpZihpKXtpZigwIT09bCl7Y29uc3QgZT1BYyh0W3MrMV0pO3RbbysxXT1FYyhlLHMpLDAhPT1lJiYodFtlKzFdPUljKHRbZSsxXSxvKSksdFtzKzFdPShmdW5jdGlvbiBwKHQsZSl7cmV0dXJuIG5nRGV2TW9kZSYmcG4odCwiZXhwZWN0ZWQgbnVtYmVyIiksbmdEZXZNb2RlJiZtbihlLDAsMzI3NjcpLDEzMTA3MSZ0fGU8PDE3fSkodFtzKzFdLG8pfWVsc2UgdFtvKzFdPUVjKHMsMCksMCE9PXMmJih0W3MrMV09SWModFtzKzFdLG8pKSxzPW99ZWxzZSB0W28rMV09RWMobCwwKSxuZ0Rldk1vZGUmJmduKDAhPT1zJiYwPT09bCwhMSwiQWRkaW5nIHRlbXBsYXRlIGJpbmRpbmdzIGFmdGVyIGhvc3RCaW5kaW5ncyBpcyBub3QgYWxsb3dlZC4iKSwwPT09cz9zPW86dFtsKzFdPUljKHRbbCsxXSxvKSxsPW87ZCYmKHRbbysxXT1OYyh0W28rMV0pKSxLZih0LGMsbywhMCksS2YodCxjLG8sITEpLChmdW5jdGlvbiBtKHQsZSxuLG8saSl7Y29uc3QgYT1pP3QucmVzaWR1YWxDbGFzc2VzOnQucmVzaWR1YWxTdHlsZXM7bnVsbCE9YSYmInN0cmluZyI9PXR5cGVvZiBlJiZ5cihhLGUpPj0wJiYobltvKzFdPUZjKG5bbysxXSkpfSkoZSxjLHQsbyxhKSxyPUVjKHMsbCksYT9lLmNsYXNzQmluZGluZ3M9cjplLnN0eWxlQmluZGluZ3M9cn1mdW5jdGlvbiBLZih0LGUsbixvLGkpe2NvbnN0IGE9dFtuKzFdLHI9bnVsbD09PWU7bGV0IHM9bz9BYyhhKTp6YyhhKSxsPSExO2Zvcig7MCE9PXMmJighMT09PWx8fHIpOyl7bmdEZXZNb2RlJiZ3bih0LHMpO2NvbnN0IG49dFtzKzFdO0pmKHRbc10sZSkmJihsPSEwLHRbcysxXT1vP0ZjKG4pOk5jKG4pKSxzPW8/QWMobik6emMobil9bCYmKHRbbisxXT1vP05jKGEpOkZjKGEpKX1mdW5jdGlvbiBKZih0LGUpe3JldHVybiBuZ0Rldk1vZGUmJmhuKEFycmF5LmlzQXJyYXkoZSksITAsIkV4cGVjdGVkIHRoYXQgJ3RTdHlsaW5nS2V5JyBoYXMgYmVlbiB1bndyYXBwZWQiKSxudWxsPT09dHx8bnVsbD09ZXx8KEFycmF5LmlzQXJyYXkodCk/dFsxXTp0KT09PWV8fCEoIUFycmF5LmlzQXJyYXkodCl8fCJzdHJpbmciIT10eXBlb2YgZSkmJnlyKHQsZSk+PTB9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NvbnN0IFFmPXt0ZXh0RW5kOjAsa2V5OjAsa2V5RW5kOjAsdmFsdWU6MCx2YWx1ZUVuZDowfTtmdW5jdGlvbiAkZih0KXtyZXR1cm4gdC5zdWJzdHJpbmcoUWYua2V5LFFmLmtleUVuZCl9ZnVuY3Rpb24gdHUodCl7cmV0dXJuIHQuc3Vic3RyaW5nKFFmLnZhbHVlLFFmLnZhbHVlRW5kKX1mdW5jdGlvbiBldSh0LGUpe2NvbnN0IG49UWYudGV4dEVuZDtyZXR1cm4gbj09PWU/LTE6KGU9UWYua2V5RW5kPShmdW5jdGlvbiBvKHQsZSxuKXtmb3IoO2U8biYmdC5jaGFyQ29kZUF0KGUpPjMyOyllKys7cmV0dXJuIGV9KSh0LFFmLmtleT1lLG4pLGl1KHQsZSxuKSl9ZnVuY3Rpb24gbnUodCxlKXtjb25zdCBuPVFmLnRleHRFbmQ7bGV0IG89UWYua2V5PWl1KHQsZSxuKTtyZXR1cm4gbj09PW8/LTE6KG89UWYua2V5RW5kPShmdW5jdGlvbiBpKHQsZSxuKXtsZXQgbztmb3IoO2U8biYmKDQ1PT09KG89dC5jaGFyQ29kZUF0KGUpKXx8OTU9PT1vfHwoLTMzJm8pPj02NSYmKC0zMyZvKTw9OTB8fG8+PTQ4JiZvPD01Nyk7KWUrKztyZXR1cm4gZX0pKHQsbyxuKSxvPWF1KHQsbyxuLDU4KSxvPVFmLnZhbHVlPWl1KHQsbyxuKSxvPVFmLnZhbHVlRW5kPShmdW5jdGlvbiBhKHQsZSxuKXtsZXQgbz0tMSxpPS0xLGE9LTEscj1lLHM9cjtmb3IoO3I8bjspe2NvbnN0IGw9dC5jaGFyQ29kZUF0KHIrKyk7aWYoNTk9PT1sKXJldHVybiBzOzM0PT09bHx8Mzk9PT1sP3M9cj1ydSh0LGwscixuKTplPT09ci00JiY4NT09PWEmJjgyPT09aSYmNzY9PT1vJiY0MD09PWw/cz1yPXJ1KHQsNDEscixuKTpsPjMyJiYocz1yKSxhPWksaT1vLG89LTMzJmx9cmV0dXJuIHN9KSh0LG8sbiksYXUodCxvLG4sNTkpKX1mdW5jdGlvbiBvdSh0KXtRZi5rZXk9MCxRZi5rZXlFbmQ9MCxRZi52YWx1ZT0wLFFmLnZhbHVlRW5kPTAsUWYudGV4dEVuZD10Lmxlbmd0aH1mdW5jdGlvbiBpdSh0LGUsbil7Zm9yKDtlPG4mJnQuY2hhckNvZGVBdChlKTw9MzI7KWUrKztyZXR1cm4gZX1mdW5jdGlvbiBhdSh0LGUsbixvKXtyZXR1cm4oZT1pdSh0LGUsbikpPG4mJihuZ0Rldk1vZGUmJnQuY2hhckNvZGVBdChlKSE9PW8mJnN1KHQsU3RyaW5nLmZyb21DaGFyQ29kZShvKSxlKSxlKyspLGV9ZnVuY3Rpb24gcnUodCxlLG4sbyl7bGV0IGk9LTEsYT1uO2Zvcig7YTxvOyl7Y29uc3Qgbj10LmNoYXJDb2RlQXQoYSsrKTtpZihuPT1lJiY5MiE9PWkpcmV0dXJuIGE7aT05Mj09biYmOTI9PT1pPzA6bn10aHJvdyBuZ0Rldk1vZGU/c3UodCxTdHJpbmcuZnJvbUNoYXJDb2RlKGUpLG8pOm5ldyBFcnJvcn1mdW5jdGlvbiBzdSh0LGUsbil7dGhyb3cgbmdEZXZNb2RlJiZnbigic3RyaW5nIj09dHlwZW9mIHQsITAsIlN0cmluZyBleHBlY3RlZCBoZXJlIiksT24oYE1hbGZvcm1lZCBzdHlsZSBhdCBsb2NhdGlvbiAke259IGluIHN0cmluZyAnYCt0LnN1YnN0cmluZygwLG4pKyJbPj4iK3Quc3Vic3RyaW5nKG4sbisxKSsiPDxdIit0LnN1YnN0cihuKzEpK2AnLiBFeHBlY3RpbmcgJyR7ZX0nLmApfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9mdW5jdGlvbiBsdSh0LGUsbil7cmV0dXJuIHV1KHQsZSxuLCExKSxsdX1mdW5jdGlvbiBjdSh0LGUpe3JldHVybiB1dSh0LGUsbnVsbCwhMCksY3V9ZnVuY3Rpb24gZHUodCl7Z3UoQ3UscHUsdCwhMSl9ZnVuY3Rpb24gcHUodCxlKXtmb3IobGV0IG49KGZ1bmN0aW9uIG4odCl7cmV0dXJuIG91KHQpLG51KHQsaXUodCwwLFFmLnRleHRFbmQpKX0pKGUpO24+PTA7bj1udShlLG4pKUN1KHQsJGYoZSksdHUoZSkpfWZ1bmN0aW9uIG11KHQpe2d1KGhyLGZ1LHQsITApfWZ1bmN0aW9uIGZ1KHQsZSl7Zm9yKGxldCBuPShmdW5jdGlvbiBuKHQpe3JldHVybiBvdSh0KSxldSh0LGl1KHQsMCxRZi50ZXh0RW5kKSl9KShlKTtuPj0wO249ZXUoZSxuKSlocih0LCRmKGUpLCEwKX1mdW5jdGlvbiB1dSh0LGUsbixvKXtjb25zdCBpPXhpKCksYT1PaSgpLHI9RmkoMik7aWYoYS5maXJzdFVwZGF0ZVBhc3MmJmJ1KGEsdCxyLG8pLGUhPT1TYyYmdW0oaSxyLGUpKXtNdShhLGEuZGF0YVt0YSgpXSxpLGlbMTFdLHQsaVtyKzFdPShmdW5jdGlvbiBzKHQsZSl7bnVsbD09dHx8KCJzdHJpbmciPT10eXBlb2YgZT90Kz1lOiJvYmplY3QiPT10eXBlb2YgdCYmKHQ9S2UodXModCkpKSk7cmV0dXJuIHR9KShlLG4pLG8scil9fWZ1bmN0aW9uIGd1KHQsZSxuLG8pe2NvbnN0IGk9T2koKSxhPUZpKDIpO2kuZmlyc3RVcGRhdGVQYXNzJiZidShpLG51bGwsYSxvKTtjb25zdCByPXhpKCk7aWYobiE9PVNjJiZ1bShyLGEsbikpe2NvbnN0IHM9aS5kYXRhW3RhKCldO2lmKE91KHMsbykmJiFodShpLGEpKXtpZihuZ0Rldk1vZGUpe2NvbnN0IHQ9aS5kYXRhW2FdO2duKEFycmF5LmlzQXJyYXkodCk/dFsxXTp0LCExLCJTdHlsaW5nIGxpbmtlZCBsaXN0IHNoYWRvdyBpbnB1dCBzaG91bGQgYmUgbWFya2VkIGFzICdmYWxzZSciKX1sZXQgdD1vP3MuY2xhc3Nlc1dpdGhvdXRIb3N0OnMuc3R5bGVzV2l0aG91dEhvc3Q7bmdEZXZNb2RlJiYhMT09PW8mJm51bGwhPT10JiZnbih0LmVuZHNXaXRoKCI7IiksITAsIkV4cGVjdGluZyBzdGF0aWMgcG9ydGlvbiB0byBlbmQgd2l0aCAnOyciKSxudWxsIT09dCYmKG49SmUodCxufHwiIikpLHlmKGkscyxyLG4sbyl9ZWxzZSEoZnVuY3Rpb24gbCh0LGUsbixvLGksYSxyLHMpe2k9PT1TYyYmKGk9UW4pO2xldCBsPTAsYz0wLGQ9MDxpLmxlbmd0aD9pWzBdOm51bGwscD0wPGEubGVuZ3RoP2FbMF06bnVsbDtmb3IoO251bGwhPT1kfHxudWxsIT09cDspe25nRGV2TW9kZSYmX24obCw5OTksIkFyZSB3ZSBzdHVjayBpbiBpbmZpbml0ZSBsb29wPyIpLG5nRGV2TW9kZSYmX24oYyw5OTksIkFyZSB3ZSBzdHVjayBpbiBpbmZpbml0ZSBsb29wPyIpO2NvbnN0IG09bDxpLmxlbmd0aD9pW2wrMV06dm9pZCAwLGY9YzxhLmxlbmd0aD9hW2MrMV06dm9pZCAwO2xldCB1LGc9bnVsbDtkPT09cD8obCs9MixjKz0yLG0hPT1mJiYoZz1wLHU9ZikpOm51bGw9PT1wfHxudWxsIT09ZCYmZDxwPyhsKz0yLGc9ZCk6KG5nRGV2TW9kZSYmeG4ocCwiRXhwZWN0aW5nIHRvIGhhdmUgYSB2YWxpZCBrZXkiKSxjKz0yLGc9cCx1PWYpLG51bGwhPT1nJiZNdSh0LGUsbixvLGcsdSxyLHMpLGQ9bDxpLmxlbmd0aD9pW2xdOm51bGwscD1jPGEubGVuZ3RoP2FbY106bnVsbH19KShpLHMscixyWzExXSxyW2ErMV0sclthKzFdPShmdW5jdGlvbiBzKHQsZSxuKXtpZihudWxsPT1ufHwiIj09PW4pcmV0dXJuIFFuO2NvbnN0IG89W10saT11cyhuKTtpZihBcnJheS5pc0FycmF5KGkpKWZvcihsZXQgZT0wO2U8aS5sZW5ndGg7ZSsrKXQobyxpW2VdLCEwKTtlbHNlIGlmKCJvYmplY3QiPT10eXBlb2YgaSlmb3IoY29uc3QgZSBpbiBpKWkuaGFzT3duUHJvcGVydHkoZSkmJnQobyxlLGlbZV0pO2Vsc2Uic3RyaW5nIj09dHlwZW9mIGk/ZShvLGkpOm5nRGV2TW9kZSYmT24oIlVuc3VwcG9ydGVkIHN0eWxpbmcgdHlwZSAiK3R5cGVvZiBpKyI6ICIraSk7cmV0dXJuIG99KSh0LGUsbiksbyxhKX19ZnVuY3Rpb24gaHUodCxlKXtyZXR1cm4gZT49dC5leHBhbmRvU3RhcnRJbmRleH1mdW5jdGlvbiBidSh0LGUsbixvKXtuZ0Rldk1vZGUmJkJvKHQpO2NvbnN0IGk9dC5kYXRhO2lmKG51bGw9PT1pW24rMV0pe2NvbnN0IGE9aVt0YSgpXTtuZ0Rldk1vZGUmJnhuKGEsIlROb2RlIGV4cGVjdGVkIik7Y29uc3Qgcj1odSh0LG4pO091KGEsbykmJm51bGw9PT1lJiYhciYmKGU9ITEpLGU9KGZ1bmN0aW9uIGEodCxlLG4sbyl7Y29uc3QgaT1qaSh0KTtsZXQgYT1vP2UucmVzaWR1YWxDbGFzc2VzOmUucmVzaWR1YWxTdHlsZXM7aWYobnVsbD09PWkpezA9PT0obz9lLmNsYXNzQmluZGluZ3M6ZS5zdHlsZUJpbmRpbmdzKSYmKG49X3Uobj15dShudWxsLHQsZSxuLG8pLGUuYXR0cnMsbyksYT1udWxsKX1lbHNle2NvbnN0IHI9ZS5kaXJlY3RpdmVTdHlsaW5nTGFzdDtpZigtMT09PXJ8fHRbcl0hPT1pKWlmKG49eXUoaSx0LGUsbixvKSxudWxsPT09YSl7bGV0IG49KGZ1bmN0aW9uIHIodCxlLG4pe2NvbnN0IG89bj9lLmNsYXNzQmluZGluZ3M6ZS5zdHlsZUJpbmRpbmdzO2lmKDA9PT16YyhvKSlyZXR1cm47cmV0dXJuIHRbQWMobyldfSkodCxlLG8pO3ZvaWQgMCE9PW4mJkFycmF5LmlzQXJyYXkobikmJihuPXl1KG51bGwsdCxlLG5bMV0sbyksbj1fdShuLGUuYXR0cnMsbyksKGZ1bmN0aW9uIHModCxlLG4sbyl7Y29uc3QgaT1uP2UuY2xhc3NCaW5kaW5nczplLnN0eWxlQmluZGluZ3M7bmdEZXZNb2RlJiZobih6YyhpKSwwLCJFeHBlY3RpbmcgdG8gaGF2ZSBhdCBsZWFzdCBvbmUgdGVtcGxhdGUgc3R5bGluZyBiaW5kaW5nLiIpLHRbQWMoaSldPW99KSh0LGUsbyxuKSl9ZWxzZSBhPShmdW5jdGlvbiBsKHQsZSxuKXtsZXQgbztjb25zdCBpPWUuZGlyZWN0aXZlRW5kO25nRGV2TW9kZSYmaG4oZS5kaXJlY3RpdmVTdHlsaW5nTGFzdCwtMSwiQnkgdGhlIHRpbWUgdGhpcyBmdW5jdGlvbiBnZXRzIGNhbGxlZCBhdCBsZWFzdCBvbmUgaG9zdEJpbmRpbmdzLW5vZGUgc3R5bGluZyBpbnN0cnVjdGlvbiBtdXN0IGhhdmUgZXhlY3V0ZWQuIik7Zm9yKGxldCBhPTErZS5kaXJlY3RpdmVTdHlsaW5nTGFzdDthPGk7YSsrKXtvPV91KG8sdFthXS5ob3N0QXR0cnMsbil9cmV0dXJuIF91KG8sZS5hdHRycyxuKX0pKHQsZSxvKX12b2lkIDAhPT1hJiYobz9lLnJlc2lkdWFsQ2xhc3Nlcz1hOmUucmVzaWR1YWxTdHlsZXM9YSk7cmV0dXJuIG59KShpLGEsZSxvKSxYZihpLGEsZSxuLHIsbyl9fWZ1bmN0aW9uIHl1KHQsZSxuLG8saSl7bGV0IGE9bnVsbDtjb25zdCByPW4uZGlyZWN0aXZlRW5kO2xldCBzPW4uZGlyZWN0aXZlU3R5bGluZ0xhc3Q7Zm9yKC0xPT09cz9zPW4uZGlyZWN0aXZlU3RhcnQ6cysrO3M8ciYmKGE9ZVtzXSxuZ0Rldk1vZGUmJnhuKGEsImV4cGVjdGVkIHRvIGJlIGRlZmluZWQiKSxvPV91KG8sYS5ob3N0QXR0cnMsaSksYSE9PXQpOylzKys7cmV0dXJuIG51bGwhPT10JiYobi5kaXJlY3RpdmVTdHlsaW5nTGFzdD1zKSxvfWZ1bmN0aW9uIF91KHQsZSxuKXtjb25zdCBvPW4/MToyO2xldCBpPS0xO2lmKG51bGwhPT1lKWZvcihsZXQgYT0wO2E8ZS5sZW5ndGg7YSsrKXtjb25zdCByPWVbYV07Im51bWJlciI9PXR5cGVvZiByP2k9cjppPT09byYmKEFycmF5LmlzQXJyYXkodCl8fCh0PXZvaWQgMD09PXQ/W106WyIiLHRdKSxocih0LHIsISFufHxlWysrYV0pKX1yZXR1cm4gdm9pZCAwPT09dD9udWxsOnR9ZnVuY3Rpb24gQ3UodCxlLG4pe2hyKHQsZSx1cyhuKSl9ZnVuY3Rpb24gTXUodCxlLG4sbyxpLGEscixzKXtpZighKDMmZS50eXBlKSlyZXR1cm47Y29uc3QgbD10LmRhdGEsYz1sW3MrMV07aWYoIXh1KEhjKGMpP3Z1KGwsZSxuLGksemMoYykscik6dm9pZCAwKSl7eHUoYSl8fFRjKGMpJiYoYT12dShsLG51bGwsbixpLHMscikpOyEoZnVuY3Rpb24gZCh0LGUsbixvLGkpe2NvbnN0IGE9cmkodCk7aWYoZSlpPyhuZ0Rldk1vZGUmJm5nRGV2TW9kZS5yZW5kZXJlckFkZENsYXNzKyssYT90LmFkZENsYXNzKG4sbyk6KG5nRGV2TW9kZSYmeG4obi5jbGFzc0xpc3QsIkhUTUxFbGVtZW50IGV4cGVjdGVkIiksbi5jbGFzc0xpc3QuYWRkKG8pKSk6KG5nRGV2TW9kZSYmbmdEZXZNb2RlLnJlbmRlcmVyUmVtb3ZlQ2xhc3MrKyxhP3QucmVtb3ZlQ2xhc3MobixvKTpuLmNsYXNzTGlzdC5yZW1vdmUobykpO2Vsc2V7bGV0IGU9LTE9PT1vLmluZGV4T2YoIi0iKT92b2lkIDA6RWwuRGFzaENhc2U7aWYobnVsbD09aSluZ0Rldk1vZGUmJm5nRGV2TW9kZS5yZW5kZXJlclJlbW92ZVN0eWxlKyssYT90LnJlbW92ZVN0eWxlKG4sbyxlKTpuLnN0eWxlLnJlbW92ZVByb3BlcnR5KG8pO2Vsc2V7Y29uc3Qgcj0ic3RyaW5nIj09dHlwZW9mIGkmJmkuZW5kc1dpdGgoIiFpbXBvcnRhbnQiKTtyJiYoaT1pLnNsaWNlKDAsLTEwKSxlfD1FbC5JbXBvcnRhbnQpLG5nRGV2TW9kZSYmbmdEZXZNb2RlLnJlbmRlcmVyU2V0U3R5bGUrKyxhP3Quc2V0U3R5bGUobixvLGksZSk6KG5nRGV2TW9kZSYmeG4obi5zdHlsZSwiSFRNTEVsZW1lbnQgZXhwZWN0ZWQiKSxuLnN0eWxlLnNldFByb3BlcnR5KG8saSxyPyJpbXBvcnRhbnQiOiIiKSl9fX0pKG8scixjaSh0YSgpLG4pLGksYSl9fWZ1bmN0aW9uIHZ1KHQsZSxuLG8saSxhKXtjb25zdCByPW51bGw9PT1lO2xldCBzO2Zvcig7aT4wOyl7Y29uc3QgZT10W2ldLGE9QXJyYXkuaXNBcnJheShlKSxsPWE/ZVsxXTplLGM9bnVsbD09PWw7bGV0IGQ9bltpKzFdO2Q9PT1TYyYmKGQ9Yz9Rbjp2b2lkIDApO2xldCBwPWM/YnIoZCxvKTpsPT09bz9kOnZvaWQgMDtpZihhJiYheHUocCkmJihwPWJyKGUsbykpLHh1KHApJiYocz1wLHIpKXJldHVybiBzO2NvbnN0IG09dFtpKzFdO2k9cj9BYyhtKTp6YyhtKX1pZihudWxsIT09ZSl7bGV0IHQ9YT9lLnJlc2lkdWFsQ2xhc3NlczplLnJlc2lkdWFsU3R5bGVzO251bGwhPXQmJihzPWJyKHQsbykpfXJldHVybiBzfWZ1bmN0aW9uIHh1KHQpe3JldHVybiB2b2lkIDAhPT10fWZ1bmN0aW9uIE91KHQsZSl7cmV0dXJuIDAhPSh0LmZsYWdzJihlPzE2OjMyKSl9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2Z1bmN0aW9uIFB1KHQsZT0iIil7Y29uc3Qgbj14aSgpLG89T2koKSxpPXQrdm87bmdEZXZNb2RlJiZnbih6aSgpLG8uYmluZGluZ1N0YXJ0SW5kZXgsInRleHQgbm9kZXMgc2hvdWxkIGJlIGNyZWF0ZWQgYmVmb3JlIGFueSBiaW5kaW5ncyIpLG5nRGV2TW9kZSYmd24obixpKTtjb25zdCBhPW8uZmlyc3RDcmVhdGVQYXNzP19kKG8saSwxLGUsbnVsbCk6by5kYXRhW2ldLHI9bltpXT1CbChuWzExXSxlKTtyYyhvLG4scixhKSxEaShhLCExKX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovZnVuY3Rpb24gd3UodCl7cmV0dXJuIGt1KCIiLHQsIiIpLHd1fWZ1bmN0aW9uIGt1KHQsZSxuKXtjb25zdCBvPXhpKCksaT1DbShvLHQsZSxuKTtyZXR1cm4gaSE9PVNjJiZncChvLHRhKCksaSksa3V9ZnVuY3Rpb24gU3UodCxlLG4sbyxpKXtjb25zdCBhPXhpKCkscj1NbShhLHQsZSxuLG8saSk7cmV0dXJuIHIhPT1TYyYmZ3AoYSx0YSgpLHIpLFN1fWZ1bmN0aW9uIER1KHQsZSxuLG8saSxhLHIpe2NvbnN0IHM9eGkoKSxsPXZtKHMsdCxlLG4sbyxpLGEscik7cmV0dXJuIGwhPT1TYyYmZ3Aocyx0YSgpLGwpLER1fWZ1bmN0aW9uIFJ1KHQsZSxuLG8saSxhLHIscyxsKXtjb25zdCBjPXhpKCksZD14bShjLHQsZSxuLG8saSxhLHIscyxsKTtyZXR1cm4gZCE9PVNjJiZncChjLHRhKCksZCksUnV9ZnVuY3Rpb24gRXUodCxlLG4sbyxpLGEscixzLGwsYyxkKXtjb25zdCBwPXhpKCksbT1PbShwLHQsZSxuLG8saSxhLHIscyxsLGMsZCk7cmV0dXJuIG0hPT1TYyYmZ3AocCx0YSgpLG0pLEV1fWZ1bmN0aW9uIEF1KHQsZSxuLG8saSxhLHIscyxsLGMsZCxwLG0pe2NvbnN0IGY9eGkoKSx1PVBtKGYsdCxlLG4sbyxpLGEscixzLGwsYyxkLHAsbSk7cmV0dXJuIHUhPT1TYyYmZ3AoZix0YSgpLHUpLEF1fWZ1bmN0aW9uIFR1KHQsZSxuLG8saSxhLHIscyxsLGMsZCxwLG0sZix1KXtjb25zdCBnPXhpKCksaD13bShnLHQsZSxuLG8saSxhLHIscyxsLGMsZCxwLG0sZix1KTtyZXR1cm4gaCE9PVNjJiZncChnLHRhKCksaCksVHV9ZnVuY3Rpb24gTnUodCxlLG4sbyxpLGEscixzLGwsYyxkLHAsbSxmLHUsZyxoKXtjb25zdCBiPXhpKCkseT1rbShiLHQsZSxuLG8saSxhLHIscyxsLGMsZCxwLG0sZix1LGcsaCk7cmV0dXJuIHkhPT1TYyYmZ3AoYix0YSgpLHkpLE51fWZ1bmN0aW9uIHp1KHQpe2NvbnN0IGU9eGkoKSxuPV9tKGUsdCk7cmV0dXJuIG4hPT1TYyYmZ3AoZSx0YSgpLG4pLHp1fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9mdW5jdGlvbiBJdSh0LGUsbil7Z3UoaHIsZnUsQ20oeGkoKSx0LGUsbiksITApfWZ1bmN0aW9uIEh1KHQsZSxuLG8saSl7Z3UoaHIsZnUsTW0oeGkoKSx0LGUsbixvLGkpLCEwKX1mdW5jdGlvbiBGdSh0LGUsbixvLGksYSxyKXtndShocixmdSx2bSh4aSgpLHQsZSxuLG8saSxhLHIpLCEwKX1mdW5jdGlvbiBMdSh0LGUsbixvLGksYSxyLHMsbCl7Z3UoaHIsZnUseG0oeGkoKSx0LGUsbixvLGksYSxyLHMsbCksITApfWZ1bmN0aW9uIEJ1KHQsZSxuLG8saSxhLHIscyxsLGMsZCl7Z3UoaHIsZnUsT20oeGkoKSx0LGUsbixvLGksYSxyLHMsbCxjLGQpLCEwKX1mdW5jdGlvbiBWdSh0LGUsbixvLGksYSxyLHMsbCxjLGQscCxtKXtndShocixmdSxQbSh4aSgpLHQsZSxuLG8saSxhLHIscyxsLGMsZCxwLG0pLCEwKX1mdW5jdGlvbiBqdSh0LGUsbixvLGksYSxyLHMsbCxjLGQscCxtLGYsdSl7Z3UoaHIsZnUsd20oeGkoKSx0LGUsbixvLGksYSxyLHMsbCxjLGQscCxtLGYsdSksITApfWZ1bmN0aW9uIFV1KHQsZSxuLG8saSxhLHIscyxsLGMsZCxwLG0sZix1LGcsaCl7Z3UoaHIsZnUsa20oeGkoKSx0LGUsbixvLGksYSxyLHMsbCxjLGQscCxtLGYsdSxnLGgpLCEwKX1mdW5jdGlvbiBXdSh0KXtndShocixmdSxfbSh4aSgpLHQpLCEwKX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovZnVuY3Rpb24gR3UodCxlLG4pe2R1KENtKHhpKCksdCxlLG4pKX1mdW5jdGlvbiBZdSh0LGUsbixvLGkpe2R1KE1tKHhpKCksdCxlLG4sbyxpKSl9ZnVuY3Rpb24gcXUodCxlLG4sbyxpLGEscil7ZHUodm0oeGkoKSx0LGUsbixvLGksYSxyKSl9ZnVuY3Rpb24gWnUodCxlLG4sbyxpLGEscixzLGwpe2R1KHhtKHhpKCksdCxlLG4sbyxpLGEscixzLGwpKX1mdW5jdGlvbiBYdSh0LGUsbixvLGksYSxyLHMsbCxjLGQpe2R1KE9tKHhpKCksdCxlLG4sbyxpLGEscixzLGwsYyxkKSl9ZnVuY3Rpb24gS3UodCxlLG4sbyxpLGEscixzLGwsYyxkLHAsbSl7ZHUoUG0oeGkoKSx0LGUsbixvLGksYSxyLHMsbCxjLGQscCxtKSl9ZnVuY3Rpb24gSnUodCxlLG4sbyxpLGEscixzLGwsYyxkLHAsbSxmLHUpe2R1KHdtKHhpKCksdCxlLG4sbyxpLGEscixzLGwsYyxkLHAsbSxmLHUpKX1mdW5jdGlvbiBRdSh0LGUsbixvLGksYSxyLHMsbCxjLGQscCxtLGYsdSxnLGgpe2R1KGttKHhpKCksdCxlLG4sbyxpLGEscixzLGwsYyxkLHAsbSxmLHUsZyxoKSl9ZnVuY3Rpb24gJHUodCl7ZHUoX20oeGkoKSx0KSl9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2Z1bmN0aW9uIHRnKHQsZSxuLG8saSl7cmV0dXJuIHV1KHQsQ20oeGkoKSxlLG4sbyksaSwhMSksdGd9ZnVuY3Rpb24gZWcodCxlLG4sbyxpLGEscil7cmV0dXJuIHV1KHQsTW0oeGkoKSxlLG4sbyxpLGEpLHIsITEpLGVnfWZ1bmN0aW9uIG5nKHQsZSxuLG8saSxhLHIscyxsKXtyZXR1cm4gdXUodCx2bSh4aSgpLGUsbixvLGksYSxyLHMpLGwsITEpLG5nfWZ1bmN0aW9uIG9nKHQsZSxuLG8saSxhLHIscyxsLGMsZCl7cmV0dXJuIHV1KHQseG0oeGkoKSxlLG4sbyxpLGEscixzLGwsYyksZCwhMSksb2d9ZnVuY3Rpb24gaWcodCxlLG4sbyxpLGEscixzLGwsYyxkLHAsbSl7cmV0dXJuIHV1KHQsT20oeGkoKSxlLG4sbyxpLGEscixzLGwsYyxkLHApLG0sITEpLGlnfWZ1bmN0aW9uIGFnKHQsZSxuLG8saSxhLHIscyxsLGMsZCxwLG0sZix1KXtyZXR1cm4gdXUodCxQbSh4aSgpLGUsbixvLGksYSxyLHMsbCxjLGQscCxtLGYpLHUsITEpLGFnfWZ1bmN0aW9uIHJnKHQsZSxuLG8saSxhLHIscyxsLGMsZCxwLG0sZix1LGcsaCl7cmV0dXJuIHV1KHQsd20oeGkoKSxlLG4sbyxpLGEscixzLGwsYyxkLHAsbSxmLHUsZyksaCwhMSkscmd9ZnVuY3Rpb24gc2codCxlLG4sbyxpLGEscixzLGwsYyxkLHAsbSxmLHUsZyxoLGIseSl7cmV0dXJuIHV1KHQsa20oeGkoKSxlLG4sbyxpLGEscixzLGwsYyxkLHAsbSxmLHUsZyxoLGIpLHksITEpLHNnfWZ1bmN0aW9uIGxnKHQsZSxuKXtyZXR1cm4gdXUodCxfbSh4aSgpLGUpLG4sITEpLGxnfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9mdW5jdGlvbiBjZyh0LGUsbil7Y29uc3Qgbz14aSgpLGk9SGkoKTtpZih1bShvLGksZSkpe2NvbnN0IGE9T2koKSxyPW5hKCk7emQoYSxyLG8sdCxlLG9bMTFdLG4sITApLG5nRGV2TW9kZSYmbHAoYS5kYXRhLHIsdCxpKX1yZXR1cm4gY2d9ZnVuY3Rpb24gZGcodCxlLG4pe2NvbnN0IG89eGkoKSxpPUhpKCk7aWYodW0obyxpLGUpKXtjb25zdCBhPU9pKCkscj1uYSgpO3pkKGEscixvLHQsZSxtcChqaShhLmRhdGEpLHIsbyksbiwhMCksbmdEZXZNb2RlJiZscChhLmRhdGEscix0LGkpfXJldHVybiBkZ30KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0kxOG5DbG9zdXJlTW9kZSYmKFhuLm5nSTE4bkNsb3N1cmVNb2RlPSJ1bmRlZmluZWQiIT10eXBlb2YgZ29vZyYmImZ1bmN0aW9uIj09dHlwZW9mIGdvb2cuZ2V0TXNnKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY29uc3QgcGc9dm9pZCAwO3ZhciBtZz1bImVuIixbWyJhIiwicCJdLFsiQU0iLCJQTSJdLHBnXSxbWyJBTSIsIlBNIl0scGcscGddLFtbIlMiLCJNIiwiVCIsIlciLCJUIiwiRiIsIlMiXSxbIlN1biIsIk1vbiIsIlR1ZSIsIldlZCIsIlRodSIsIkZyaSIsIlNhdCJdLFsiU3VuZGF5IiwiTW9uZGF5IiwiVHVlc2RheSIsIldlZG5lc2RheSIsIlRodXJzZGF5IiwiRnJpZGF5IiwiU2F0dXJkYXkiXSxbIlN1IiwiTW8iLCJUdSIsIldlIiwiVGgiLCJGciIsIlNhIl1dLHBnLFtbIkoiLCJGIiwiTSIsIkEiLCJNIiwiSiIsIkoiLCJBIiwiUyIsIk8iLCJOIiwiRCJdLFsiSmFuIiwiRmViIiwiTWFyIiwiQXByIiwiTWF5IiwiSnVuIiwiSnVsIiwiQXVnIiwiU2VwIiwiT2N0IiwiTm92IiwiRGVjIl0sWyJKYW51YXJ5IiwiRmVicnVhcnkiLCJNYXJjaCIsIkFwcmlsIiwiTWF5IiwiSnVuZSIsIkp1bHkiLCJBdWd1c3QiLCJTZXB0ZW1iZXIiLCJPY3RvYmVyIiwiTm92ZW1iZXIiLCJEZWNlbWJlciJdXSxwZyxbWyJCIiwiQSJdLFsiQkMiLCJBRCJdLFsiQmVmb3JlIENocmlzdCIsIkFubm8gRG9taW5pIl1dLDAsWzYsMF0sWyJNL2QveXkiLCJNTU0gZCwgeSIsIk1NTU0gZCwgeSIsIkVFRUUsIE1NTU0gZCwgeSJdLFsiaDptbSBhIiwiaDptbTpzcyBhIiwiaDptbTpzcyBhIHoiLCJoOm1tOnNzIGEgenp6eiJdLFsiezF9LCB7MH0iLHBnLCJ7MX0gJ2F0JyB7MH0iLHBnXSxbIi4iLCIsIiwiOyIsIiUiLCIrIiwiLSIsIkUiLCLDlyIsIuKAsCIsIuKIniIsIk5hTiIsIjoiXSxbIiMsIyMwLiMjIyIsIiMsIyMwJSIsIsKkIywjIzAuMDAiLCIjRTAiXSwiVVNEIiwiJCIsIlVTIERvbGxhciIse30sImx0ciIsZnVuY3Rpb24gZmcodCl7Y29uc3QgZT1NYXRoLmZsb29yKE1hdGguYWJzKHQpKSxuPXQudG9TdHJpbmcoKS5yZXBsYWNlKC9eW14uXSpcLj8vLCIiKS5sZW5ndGg7cmV0dXJuIDE9PT1lJiYwPT09bj8xOjV9XTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovbGV0IHVnPXt9O2Z1bmN0aW9uIGdnKHQpe2NvbnN0IGU9KGZ1bmN0aW9uIG4odCl7cmV0dXJuIHQudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC9fL2csIi0iKX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovKSh0KTtsZXQgbz1iZyhlKTtpZihvKXJldHVybiBvO2NvbnN0IGk9ZS5zcGxpdCgiLSIpWzBdO2lmKG89YmcoaSksbylyZXR1cm4gbztpZigiZW4iPT09aSlyZXR1cm4gbWc7dGhyb3cgbmV3IEVycm9yKGBNaXNzaW5nIGxvY2FsZSBkYXRhIGZvciB0aGUgbG9jYWxlICIke3R9Ii5gKX1mdW5jdGlvbiBoZyh0KXtyZXR1cm4gZ2codClbeWcuUGx1cmFsQ2FzZV19ZnVuY3Rpb24gYmcodCl7cmV0dXJuIHQgaW4gdWd8fCh1Z1t0XT1Ybi5uZyYmWG4ubmcuY29tbW9uJiZYbi5uZy5jb21tb24ubG9jYWxlcyYmWG4ubmcuY29tbW9uLmxvY2FsZXNbdF0pLHVnW3RdfXZhciB5ZzshKGZ1bmN0aW9uKHQpe3RbdC5Mb2NhbGVJZD0wXT0iTG9jYWxlSWQiLHRbdC5EYXlQZXJpb2RzRm9ybWF0PTFdPSJEYXlQZXJpb2RzRm9ybWF0Iix0W3QuRGF5UGVyaW9kc1N0YW5kYWxvbmU9Ml09IkRheVBlcmlvZHNTdGFuZGFsb25lIix0W3QuRGF5c0Zvcm1hdD0zXT0iRGF5c0Zvcm1hdCIsdFt0LkRheXNTdGFuZGFsb25lPTRdPSJEYXlzU3RhbmRhbG9uZSIsdFt0Lk1vbnRoc0Zvcm1hdD01XT0iTW9udGhzRm9ybWF0Iix0W3QuTW9udGhzU3RhbmRhbG9uZT02XT0iTW9udGhzU3RhbmRhbG9uZSIsdFt0LkVyYXM9N109IkVyYXMiLHRbdC5GaXJzdERheU9mV2Vlaz04XT0iRmlyc3REYXlPZldlZWsiLHRbdC5XZWVrZW5kUmFuZ2U9OV09IldlZWtlbmRSYW5nZSIsdFt0LkRhdGVGb3JtYXQ9MTBdPSJEYXRlRm9ybWF0Iix0W3QuVGltZUZvcm1hdD0xMV09IlRpbWVGb3JtYXQiLHRbdC5EYXRlVGltZUZvcm1hdD0xMl09IkRhdGVUaW1lRm9ybWF0Iix0W3QuTnVtYmVyU3ltYm9scz0xM109Ik51bWJlclN5bWJvbHMiLHRbdC5OdW1iZXJGb3JtYXRzPTE0XT0iTnVtYmVyRm9ybWF0cyIsdFt0LkN1cnJlbmN5Q29kZT0xNV09IkN1cnJlbmN5Q29kZSIsdFt0LkN1cnJlbmN5U3ltYm9sPTE2XT0iQ3VycmVuY3lTeW1ib2wiLHRbdC5DdXJyZW5jeU5hbWU9MTddPSJDdXJyZW5jeU5hbWUiLHRbdC5DdXJyZW5jaWVzPTE4XT0iQ3VycmVuY2llcyIsdFt0LkRpcmVjdGlvbmFsaXR5PTE5XT0iRGlyZWN0aW9uYWxpdHkiLHRbdC5QbHVyYWxDYXNlPTIwXT0iUGx1cmFsQ2FzZSIsdFt0LkV4dHJhRGF0YT0yMV09IkV4dHJhRGF0YSJ9KSh5Z3x8KHlnPXt9KSk7Y29uc3QgX2c9WyJ6ZXJvIiwib25lIiwidHdvIiwiZmV3IiwibWFueSJdO2NvbnN0IENnPSJlbi1VUyIsTWc9e21hcmtlcjoiZWxlbWVudCJ9LHZnPXttYXJrZXI6IklDVSJ9O3ZhciB4ZzshKGZ1bmN0aW9uKHQpe3RbdC5TSElGVD0yXT0iU0hJRlQiLHRbdC5BUFBFTkRfRUFHRVJMWT0xXT0iQVBQRU5EX0VBR0VSTFkiLHRbdC5DT01NRU5UPTJdPSJDT01NRU5UIn0pKHhnfHwoeGc9e30pKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmxldCBPZz1DZztmdW5jdGlvbiBQZyh0KXt4bih0LCJFeHBlY3RlZCBsb2NhbGVJZCB0byBiZSBkZWZpbmVkIiksInN0cmluZyI9PXR5cGVvZiB0JiYoT2c9dC50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoL18vZywiLSIpKX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmZ1bmN0aW9uIHdnKHQsZSxuKXtjb25zdCBvPWUuaW5zZXJ0QmVmb3JlSW5kZXgsaT1BcnJheS5pc0FycmF5KG8pP29bMF06bztyZXR1cm4gbnVsbD09PWk/bmModCwwLG4pOihuZ0Rldk1vZGUmJnduKG4saSksbGkobltpXSkpfWZ1bmN0aW9uIGtnKHQsZSxuLG8saSl7Y29uc3QgYT1lLmluc2VydEJlZm9yZUluZGV4O2lmKEFycmF5LmlzQXJyYXkoYSkpe25nRGV2TW9kZSYmUG4obyk7bGV0IHI9byxzPW51bGw7aWYoMyZlLnR5cGV8fChzPXIscj1pKSxudWxsIT09ciYmMD09KDImZS5mbGFncykpZm9yKGxldCBlPTE7ZTxhLmxlbmd0aDtlKyspe0psKHQscixuW2FbZV1dLHMsITEpfX19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2Z1bmN0aW9uIFNnKHQsZSl7aWYobmdEZXZNb2RlJiZnbihlLmluc2VydEJlZm9yZUluZGV4LG51bGwsIldlIGV4cGVjdCB0aGF0IGluc2VydEJlZm9yZUluZGV4IGlzIG5vdCBzZXQiKSx0LnB1c2goZSksdC5sZW5ndGg+MSlmb3IobGV0IG49dC5sZW5ndGgtMjtuPj0wO24tLSl7Y29uc3Qgbz10W25dO0RnKG8pfHxSZyhvLGUpJiZudWxsPT09RWcobykmJkFnKG8sZS5pbmRleCl9fWZ1bmN0aW9uIERnKHQpe3JldHVybiEoNjQmdC50eXBlKX1mdW5jdGlvbiBSZyh0LGUpe3JldHVybiBEZyhlKXx8dC5pbmRleD5lLmluZGV4fWZ1bmN0aW9uIEVnKHQpe2NvbnN0IGU9dC5pbnNlcnRCZWZvcmVJbmRleDtyZXR1cm4gQXJyYXkuaXNBcnJheShlKT9lWzBdOmV9ZnVuY3Rpb24gQWcodCxlKXtjb25zdCBuPXQuaW5zZXJ0QmVmb3JlSW5kZXg7QXJyYXkuaXNBcnJheShuKT9uWzBdPWU6KGFjKHdnLGtnKSx0Lmluc2VydEJlZm9yZUluZGV4PWUpfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9mdW5jdGlvbiBUZyh0LGUpe2NvbnN0IG49dC5kYXRhW2VdO2lmKG51bGw9PT1ufHwic3RyaW5nIj09dHlwZW9mIG4pcmV0dXJuIG51bGw7IW5nRGV2TW9kZXx8bi5oYXNPd25Qcm9wZXJ0eSgidFZpZXdzIil8fG4uaGFzT3duUHJvcGVydHkoImN1cnJlbnRDYXNlTFZpZXdJbmRleCIpfHxPbigiV2UgZXhwZWN0IHRvIGdldCAnbnVsbCd8J1RJY3UnfCdUSWN1Q29udGFpbmVyJywgYnV0IGdvdDogIituKTtjb25zdCBvPW4uaGFzT3duUHJvcGVydHkoImN1cnJlbnRDYXNlTFZpZXdJbmRleCIpP246bi52YWx1ZTtyZXR1cm4gbmdEZXZNb2RlJiZObyhvKSxvfWZ1bmN0aW9uIE5nKHQsZSxuKXtjb25zdCBvPUNkKHQsbiw2NCxudWxsLG51bGwpO3JldHVybiBTZyhlLG8pLG99ZnVuY3Rpb24gemcodCxlKXtjb25zdCBuPWVbdC5jdXJyZW50Q2FzZUxWaWV3SW5kZXhdO3JldHVybiBudWxsPT09bj9uOm48MD9+bjpufWZ1bmN0aW9uIElnKHQpe3JldHVybiB0Pj4+MTd9ZnVuY3Rpb24gSGcodCl7cmV0dXJuKDEzMTA3MCZ0KT4+PjF9ZnVuY3Rpb24gRmcodCl7cmV0dXJuIDEmdH0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmxldCBMZz0wLEJnPTA7ZnVuY3Rpb24gVmcodCxlLG4sbyl7bmdEZXZNb2RlJiZQbihvKTtjb25zdCBpPW5bMTFdO2xldCBhLHI9bnVsbDtmb3IobGV0IHM9MDtzPGUubGVuZ3RoO3MrKyl7Y29uc3QgbD1lW3NdO2lmKCJzdHJpbmciPT10eXBlb2YgbCl7Y29uc3QgdD1lWysrc107bnVsbD09PW5bdF0mJihuZ0Rldk1vZGUmJm5nRGV2TW9kZS5yZW5kZXJlckNyZWF0ZVRleHROb2RlKyssbmdEZXZNb2RlJiZ3bihuLHQpLG5bdF09QmwoaSxsKSl9ZWxzZSBpZigibnVtYmVyIj09dHlwZW9mIGwpc3dpdGNoKDEmbCl7Y2FzZSAwOmNvbnN0IGM9SWcobCk7bGV0IGQscDtpZihudWxsPT09ciYmKHI9YyxhPXRjKGksbykpLGM9PT1yPyhkPW8scD1hKTooZD1udWxsLHA9bGkobltjXSkpLG51bGwhPT1wKXtuZ0Rldk1vZGUmJlBuKHApO2NvbnN0IGU9SGcobCk7bmdEZXZNb2RlJiZNbihlLHZvLCJNaXNzaW5nIHJlZiIpO2NvbnN0IG89bltlXTtuZ0Rldk1vZGUmJlBuKG8pLEpsKGkscCxvLGQsITEpO2NvbnN0IGE9VGcodCxlKTtpZihudWxsIT09YSYmIm9iamVjdCI9PXR5cGVvZiBhKXtuZ0Rldk1vZGUmJk5vKGEpO2NvbnN0IGU9emcoYSxuKTtudWxsIT09ZSYmVmcodCxhLmNyZWF0ZVtlXSxuLG5bYS5hbmNob3JJZHhdKX19YnJlYWs7Y2FzZSAxOmNvbnN0IG09ZVsrK3NdLGY9ZVsrK3NdO1pkKGksY2kobD4+PjEsbiksbnVsbCxudWxsLG0sZixudWxsKTticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcihgVW5hYmxlIHRvIGRldGVybWluZSB0aGUgdHlwZSBvZiBtdXRhdGUgb3BlcmF0aW9uIGZvciAiJHtsfSJgKX1lbHNlIHN3aXRjaChsKXtjYXNlIHZnOmNvbnN0IHQ9ZVsrK3NdLG89ZVsrK3NdO2lmKG51bGw9PT1uW29dKXtuZ0Rldk1vZGUmJmduKHR5cGVvZiB0LCJzdHJpbmciLGBFeHBlY3RlZCAiJHt0fSIgdG8gYmUgYSBjb21tZW50IG5vZGUgdmFsdWVgKSxuZ0Rldk1vZGUmJm5nRGV2TW9kZS5yZW5kZXJlckNyZWF0ZUNvbW1lbnQrKyxuZ0Rldk1vZGUmJlZvKG4sbyk7YWwobltvXT1qbChpLHQpLG4pfWJyZWFrO2Nhc2UgTWc6Y29uc3QgYT1lWysrc10scj1lWysrc107aWYobnVsbD09PW5bcl0pe25nRGV2TW9kZSYmZ24odHlwZW9mIGEsInN0cmluZyIsYEV4cGVjdGVkICIke2F9IiB0byBiZSBhbiBlbGVtZW50IG5vZGUgdGFnIG5hbWVgKSxuZ0Rldk1vZGUmJm5nRGV2TW9kZS5yZW5kZXJlckNyZWF0ZUVsZW1lbnQrKyxuZ0Rldk1vZGUmJlZvKG4scik7YWwobltyXT1VbChpLGEsbnVsbCksbil9YnJlYWs7ZGVmYXVsdDpuZ0Rldk1vZGUmJk9uKGBVbmFibGUgdG8gZGV0ZXJtaW5lIHRoZSB0eXBlIG9mIG11dGF0ZSBvcGVyYXRpb24gZm9yICIke2x9ImApfX19ZnVuY3Rpb24gamcodCxlLG4sbyxpKXtmb3IobGV0IGE9MDthPG4ubGVuZ3RoO2ErKyl7Y29uc3Qgcj1uW2FdLHM9blsrK2FdO2lmKHImaSl7bGV0IGk9IiI7Zm9yKGxldCByPWErMTtyPD1hK3M7cisrKXtjb25zdCBhPW5bcl07aWYoInN0cmluZyI9PXR5cGVvZiBhKWkrPWE7ZWxzZSBpZigibnVtYmVyIj09dHlwZW9mIGEpaWYoYTwwKWkrPXJuKGVbby1hXSk7ZWxzZXtjb25zdCBzPWE+Pj4yO3N3aXRjaCgzJmEpe2Nhc2UgMTpjb25zdCBhPW5bKytyXSxsPW5bKytyXSxjPXQuZGF0YVtzXTtuZ0Rldk1vZGUmJnhuKGMsIkV4cGVydGluZyBUTm9kZSBvciBzdHJpbmciKSwic3RyaW5nIj09dHlwZW9mIGM/WmQoZVsxMV0sZVtzXSxudWxsLGMsYSxpLGwpOnpkKHQsYyxlLGEsaSxlWzExXSxsLCExKTticmVhaztjYXNlIDA6Y29uc3QgZD1lW3NdO251bGwhPT1kJiZWbChlWzExXSxkLGkpO2JyZWFrO2Nhc2UgMjpXZyh0LFRnKHQscyksZSxpKTticmVhaztjYXNlIDM6VWcodCxUZyh0LHMpLG8sZSl9fX19ZWxzZXtjb25zdCBpPW5bYSsxXTtpZihpPjAmJjM9PSgzJmkpKXtjb25zdCBuPVRnKHQsaT4+PjIpO2Vbbi5jdXJyZW50Q2FzZUxWaWV3SW5kZXhdPDAmJlVnKHQsbixvLGUpfX1hKz1zfX1mdW5jdGlvbiBVZyh0LGUsbixvKXtuZ0Rldk1vZGUmJnduKG8sZS5jdXJyZW50Q2FzZUxWaWV3SW5kZXgpO2xldCBpPW9bZS5jdXJyZW50Q2FzZUxWaWV3SW5kZXhdO2lmKG51bGwhPT1pKXtsZXQgYT1MZztpPDAmJihpPW9bZS5jdXJyZW50Q2FzZUxWaWV3SW5kZXhdPX5pLGE9LTEpLGpnKHQsbyxlLnVwZGF0ZVtpXSxuLGEpfX1mdW5jdGlvbiBXZyh0LGUsbixvKXtjb25zdCBpPShmdW5jdGlvbiBhKHQsZSl7bGV0IG49dC5jYXNlcy5pbmRleE9mKGUpO2lmKC0xPT09bilzd2l0Y2godC50eXBlKXtjYXNlIDE6e2NvbnN0IG89KGZ1bmN0aW9uIGkodCxlKXtjb25zdCBuPWhnKGUpKHBhcnNlSW50KHQsMTApKSxvPV9nW25dO3JldHVybiB2b2lkIDAhPT1vP286Im90aGVyIn0pKGUsKGZ1bmN0aW9uIG8oKXtyZXR1cm4gT2d9KSgpKTtuPXQuY2FzZXMuaW5kZXhPZihvKSwtMT09PW4mJiJvdGhlciIhPT1vJiYobj10LmNhc2VzLmluZGV4T2YoIm90aGVyIikpO2JyZWFrfWNhc2UgMDpuPXQuY2FzZXMuaW5kZXhPZigib3RoZXIiKX1yZXR1cm4tMT09PW4/bnVsbDpufQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8pKGUsbyk7aWYoemcoZSxuKSE9PWkmJihHZyh0LGUsbiksbltlLmN1cnJlbnRDYXNlTFZpZXdJbmRleF09bnVsbD09PWk/bnVsbDp+aSxudWxsIT09aSkpe2NvbnN0IG89bltlLmFuY2hvcklkeF07byYmKG5nRGV2TW9kZSYmUG4obyksVmcodCxlLmNyZWF0ZVtpXSxuLG8pKX19ZnVuY3Rpb24gR2codCxlLG4pe2xldCBvPXpnKGUsbik7aWYobnVsbCE9PW8pe2NvbnN0IGk9ZS5yZW1vdmVbb107Zm9yKGxldCBlPTA7ZTxpLmxlbmd0aDtlKyspe2NvbnN0IG89aVtlXTtpZihvPjApe2NvbnN0IHQ9Y2kobyxuKTtudWxsIT09dCYmZGMoblsxMV0sdCl9ZWxzZSBHZyh0LFRnKHQsfm8pLG4pfX19ZnVuY3Rpb24gWWcoKXtjb25zdCB0PVtdO2xldCBlLG4sbz0tMTtmdW5jdGlvbiBpKHQsZSl7bz0wO2NvbnN0IGk9emcodCxlKTtudWxsIT09aT8obmdEZXZNb2RlJiZtbihpLDAsdC5jYXNlcy5sZW5ndGgtMSksbj10LnJlbW92ZVtpXSk6bj1Rbn1mdW5jdGlvbiBhKCl7aWYobzxuLmxlbmd0aCl7Y29uc3Qgcj1uW28rK107aWYobmdEZXZNb2RlJiZwbihyLCJFeHBlY3RpbmcgT3BDb2RlIG51bWJlciIpLHI+MCl7Y29uc3QgdD1lW3JdO3JldHVybiBuZ0Rldk1vZGUmJlBuKHQpLHR9e3QucHVzaChvLG4pO2NvbnN0IHM9ZVsxXS5kYXRhW35yXTtyZXR1cm4gbmdEZXZNb2RlJiZObyhzKSxpKHMsZSksYSgpfX1yZXR1cm4gMD09PXQubGVuZ3RoP251bGw6KG49dC5wb3AoKSxvPXQucG9wKCksYSgpKX1yZXR1cm4gZnVuY3Rpb24gcihuLG8pe2ZvcihlPW87dC5sZW5ndGg7KXQucG9wKCk7cmV0dXJuIG5nRGV2TW9kZSYmRW8obixvKSxpKG4udmFsdWUsbyksYX19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2Z1bmN0aW9uIHFnKHQpe2NvbnN0IGU9dHx8KEFycmF5LmlzQXJyYXkodGhpcyk/dGhpczpbXSk7bGV0IG49W107Zm9yKGxldCB0PTA7dDxlLmxlbmd0aDt0Kyspe2NvbnN0IG89ZVt0KytdLGk9KG8meGcuQVBQRU5EX0VBR0VSTFkpPT09eGcuQVBQRU5EX0VBR0VSTFksYT1vPj4+eGcuU0hJRlQ7bi5wdXNoKGBsVmlld1ske2F9XSA9IGRvY3VtZW50LiR7KG8meGcuQ09NTUVOVCk9PT14Zy5DT01NRU5UPyJjcmVhdGVDb21tZW50IjoiY3JlYXRlVGV4dCJ9KCR7SlNPTi5zdHJpbmdpZnkoZVt0XSl9KTtgKSxpJiZuLnB1c2goYHBhcmVudC5hcHBlbmRDaGlsZChsVmlld1ske2F9XSk7YCl9cmV0dXJuIG59ZnVuY3Rpb24gWmcodCl7Y29uc3QgZT1uZXcgSmcodHx8KEFycmF5LmlzQXJyYXkodGhpcyk/dGhpczpbXSkpO2xldCBuPVtdO2Z1bmN0aW9uIG8odCl7Y29uc3Qgbj10Pj4+Mjtzd2l0Y2goMyZ0KXtjYXNlIDA6cmV0dXJuYChsVmlld1ske259XSBhcyBUZXh0KS50ZXh0Q29udGVudCA9ICQkJGA7Y2FzZSAxOmNvbnN0IHQ9ZS5jb25zdW1lU3RyaW5nKCksbz1lLmNvbnN1bWVGdW5jdGlvbigpO3JldHVybmAobFZpZXdbJHtufV0gYXMgRWxlbWVudCkuc2V0QXR0cmlidXRlKCcke3R9JywgJHtvP2AoJHtvfSkoJCQkKWA6IiQkJCJ9KWA7Y2FzZSAyOnJldHVybmBpY3VTd2l0Y2hDYXNlKCR7bn0sICQkJClgO2Nhc2UgMzpyZXR1cm5gaWN1VXBkYXRlQ2FzZSgke259KWB9dGhyb3cgbmV3IEVycm9yKCJ1bmV4cGVjdGVkIE9wQ29kZSIpfWZvcig7ZS5oYXNNb3JlKCk7KXtsZXQgdD1lLmNvbnN1bWVOdW1iZXIoKSxpPWUuY29uc3VtZU51bWJlcigpO2NvbnN0IGE9ZS5pK2kscj1bXTtsZXQgcz0iIjtmb3IoO2UuaTxhOyl7bGV0IHQ9ZS5jb25zdW1lTnVtYmVyT3JTdHJpbmcoKTtpZigic3RyaW5nIj09dHlwZW9mIHQpcys9dDtlbHNlIGlmKHQ8MClzKz0iJHtsVmlld1tpIit0KyJdfSI7ZWxzZXtjb25zdCBlPW8odCk7ci5wdXNoKGUucmVwbGFjZSgiJCQkIiwiYCIrcysiYCIpKyI7Iikscz0iIn19bi5wdXNoKGBpZiAobWFzayAmIDBiJHt0LnRvU3RyaW5nKDIpfSkgeyAke3Iuam9pbigiICIpfSB9YCl9cmV0dXJuIG59ZnVuY3Rpb24gWGcodCl7Y29uc3QgZT1uZXcgSmcodHx8KEFycmF5LmlzQXJyYXkodGhpcyk/dGhpczpbXSkpO2xldCBuPVtdO2Z1bmN0aW9uIG8odCl7Y29uc3Qgbj1JZyh0KSxvPUhnKHQpO3N3aXRjaChGZyh0KSl7Y2FzZSAwOnJldHVybmAobFZpZXdbJHtufV0gYXMgRWxlbWVudCkuYXBwZW5kQ2hpbGQobFZpZXdbJHtpfV0pYDtjYXNlIDE6cmV0dXJuYChsVmlld1ske299XSBhcyBFbGVtZW50KS5zZXRBdHRyaWJ1dGUoIiR7ZS5jb25zdW1lU3RyaW5nKCl9IiwgIiR7ZS5jb25zdW1lU3RyaW5nKCl9IilgfXRocm93IG5ldyBFcnJvcigiVW5leHBlY3RlZCBPcENvZGU6ICIrRmcodCkpfWxldCBpPS0xO2Zvcig7ZS5oYXNNb3JlKCk7KXtsZXQgdD1lLmNvbnN1bWVOdW1iZXJTdHJpbmdPck1hcmtlcigpO2lmKHQ9PT12Zyl7Y29uc3QgdD1lLmNvbnN1bWVTdHJpbmcoKTtpPWUuY29uc3VtZU51bWJlcigpLG4ucHVzaChgbFZpZXdbJHtpfV0gPSBkb2N1bWVudC5jcmVhdGVDb21tZW50KCIke3R9IilgKX1lbHNlIGlmKHQ9PT1NZyl7Y29uc3QgdD1lLmNvbnN1bWVTdHJpbmcoKTtpPWUuY29uc3VtZU51bWJlcigpLG4ucHVzaChgbFZpZXdbJHtpfV0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCIke3R9IilgKX1lbHNlIGlmKCJzdHJpbmciPT10eXBlb2YgdClpPWUuY29uc3VtZU51bWJlcigpLG4ucHVzaChgbFZpZXdbJHtpfV0gPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgiJHt0fSIpYCk7ZWxzZXtpZigibnVtYmVyIiE9dHlwZW9mIHQpdGhyb3cgbmV3IEVycm9yKCJVbmV4cGVjdGVkIHZhbHVlIik7e2NvbnN0IGU9byh0KTtlJiZuLnB1c2goZSl9fX1yZXR1cm4gbn1mdW5jdGlvbiBLZyh0KXtjb25zdCBlPXR8fChBcnJheS5pc0FycmF5KHRoaXMpP3RoaXM6W10pO2xldCBuPVtdO2ZvcihsZXQgdD0wO3Q8ZS5sZW5ndGg7dCsrKXtjb25zdCBvPWVbdF07bi5wdXNoKG8+MD9gcmVtb3ZlKGxWaWV3WyR7b31dKWA6YHJlbW92ZU5lc3RlZElDVSgke35vfSlgKX1yZXR1cm4gbn1jbGFzcyBKZ3tjb25zdHJ1Y3Rvcih0KXt0aGlzLmk9MCx0aGlzLmNvZGVzPXR9aGFzTW9yZSgpe3JldHVybiB0aGlzLmk8dGhpcy5jb2Rlcy5sZW5ndGh9Y29uc3VtZU51bWJlcigpe2xldCB0PXRoaXMuY29kZXNbdGhpcy5pKytdO3JldHVybiBwbih0LCJleHBlY3RpbmcgbnVtYmVyIGluIE9wQ29kZSIpLHR9Y29uc3VtZVN0cmluZygpe2xldCB0PXRoaXMuY29kZXNbdGhpcy5pKytdO3JldHVybiBmbih0LCJleHBlY3Rpbmcgc3RyaW5nIGluIE9wQ29kZSIpLHR9Y29uc3VtZUZ1bmN0aW9uKCl7bGV0IHQ9dGhpcy5jb2Rlc1t0aGlzLmkrK107aWYobnVsbD09PXR8fCJmdW5jdGlvbiI9PXR5cGVvZiB0KXJldHVybiB0O3Rocm93IG5ldyBFcnJvcigiZXhwZWN0aW5nIGZ1bmN0aW9uIGluIE9wQ29kZSIpfWNvbnN1bWVOdW1iZXJPclN0cmluZygpe2xldCB0PXRoaXMuY29kZXNbdGhpcy5pKytdO3JldHVybiJzdHJpbmciPT10eXBlb2YgdHx8cG4odCwiZXhwZWN0aW5nIG51bWJlciBvciBzdHJpbmcgaW4gT3BDb2RlIiksdH1jb25zdW1lTnVtYmVyU3RyaW5nT3JNYXJrZXIoKXtsZXQgdD10aGlzLmNvZGVzW3RoaXMuaSsrXTtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHR8fCJudW1iZXIiPT10eXBlb2YgdHx8dD09dmd8fHQ9PU1nfHxwbih0LCJleHBlY3RpbmcgbnVtYmVyLCBzdHJpbmcsIElDVV9NQVJLRVIgb3IgRUxFTUVOVF9NQVJLRVIgaW4gT3BDb2RlIiksdH19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NvbnN0IFFnPS/vv70oXGQrKTo/XGQq77+9L2dpLCRnPS8oe1xzKu+/vVxkKzo/XGQq77+9XHMqLFxzKlxTezZ9XHMqLFtcc1xTXSp9KS9naSx0aD0v77+9KFxkKynvv70vLGVoPS9eXHMqKO+/vVxkKzo/XGQq77+9KVxzKixccyooc2VsZWN0fHBsdXJhbClccyosLyxuaD0v77+9XC8/XCooXGQrOlxkKynvv70vZ2ksb2g9L++/vShcLz9bIypdXGQrKTo/XGQq77+9L2dpLGloPS9cdUU1MDAvZztmdW5jdGlvbiBhaCh0LGUsbixvLGksYSl7Y29uc3Qgcj1TaSgpLHM9W10sbD1bXSxjPVtbXV07bmdEZXZNb2RlJiYoQmMocyxxZyksQmMobCxaZykpO2NvbnN0IGQ9KGZ1bmN0aW9uIG0odCl7cmV0dXJuIHQucmVwbGFjZShpaCwiICIpfSkoaT0oZnVuY3Rpb24gcCh0LGUpe2lmKChmdW5jdGlvbiBuKHQpe3JldHVybi0xPT09dH0pKGUpKXJldHVybiBwaCh0KTt7Y29uc3Qgbj10LmluZGV4T2YoYDoke2V977+9YCkrMitlLnRvU3RyaW5nKCkubGVuZ3RoLG89dC5zZWFyY2gobmV3IFJlZ0V4cChg77+9XFwvXFwqXFxkKzoke2V977+9YCkpO3JldHVybiBwaCh0LnN1YnN0cmluZyhuLG8pKX19KShpLGEpKS5zcGxpdChvaCk7Zm9yKGxldCBhPTA7YTxkLmxlbmd0aDthKyspe2xldCBwPWRbYV07aWYoMD09KDEmYSkpe2NvbnN0IGE9dWgocCk7Zm9yKGxldCBkPTA7ZDxhLmxlbmd0aDtkKyspe2xldCBwPWFbZF07aWYoMD09KDEmZCkpe2NvbnN0IGU9cDtuZ0Rldk1vZGUmJmZuKGUsIlBhcnNlZCBJQ1UgcGFydCBzaG91bGQgYmUgc3RyaW5nIiksIiIhPT1lJiZzaCh0LHIsY1swXSxzLGwsbixlKX1lbHNle2NvbnN0IGE9cDtpZigib2JqZWN0IiE9dHlwZW9mIGEpdGhyb3cgbmV3IEVycm9yKGBVbmFibGUgdG8gcGFyc2UgSUNVIGV4cHJlc3Npb24gaW4gIiR7aX0iIG1lc3NhZ2UuYCk7Y29uc3QgZD1yaCh0LHIsY1swXSxuLHMsbmdEZXZNb2RlP2BJQ1UgJHtvfToke2EubWFpbkJpbmRpbmd9YDoiIiwhMCkuaW5kZXg7bmdEZXZNb2RlJiZ2bihkLHZvLCJJbmRleCBtdXN0IGJlIGluIGFic29sdXRlIExWaWV3IG9mZnNldCIpLG1oKHQsbixsLGUsYSxkKX19fWVsc2V7Y29uc3QgZT00Nz09PXAuY2hhckNvZGVBdCgwKSxuPXAuY2hhckNvZGVBdChlPzE6MCk7bmdEZXZNb2RlJiZrbihuLDQyLDM1KTtjb25zdCBvPXZvK051bWJlci5wYXJzZUludChwLnN1YnN0cmluZyhlPzI6MSkpO2lmKGUpYy5zaGlmdCgpLERpKFNpKCksITEpO2Vsc2V7Y29uc3QgZT1OZyh0LGNbMF0sbyk7Yy51bnNoaWZ0KFtdKSxEaShlLCEwKX19fXQuZGF0YVtvXT17Y3JlYXRlOnMsdXBkYXRlOmx9fWZ1bmN0aW9uIHJoKHQsZSxuLG8saSxhLHIpe2NvbnN0IHM9TWQodCxvLDEsbnVsbCk7bGV0IGw9czw8eGcuU0hJRlQsYz1TaSgpO2U9PT1jJiYoYz1udWxsKSxudWxsPT09YyYmKGx8PXhnLkFQUEVORF9FQUdFUkxZKSxyJiYobHw9eGcuQ09NTUVOVCwoZnVuY3Rpb24gZCh0KXt2b2lkIDA9PT1BbCYmKEFsPXQoKSl9KShZZykpLGkucHVzaChsLG51bGw9PT1hPyIiOmEpO2NvbnN0IHA9Q2QodCxzLHI/MzI6MSxudWxsPT09YT9uZ0Rldk1vZGU/Int7P319IjoiIjphLG51bGwpO1NnKG4scCk7Y29uc3QgbT1wLmluZGV4O3JldHVybiBEaShwLCExKSxudWxsIT09YyYmZSE9PWMmJihmdW5jdGlvbiBmKHQsZSl7bmdEZXZNb2RlJiZUbyh0KTtsZXQgbj10Lmluc2VydEJlZm9yZUluZGV4O251bGw9PT1uPyhhYyh3ZyxrZyksbj10Lmluc2VydEJlZm9yZUluZGV4PVtudWxsLGVdKTooZ24oQXJyYXkuaXNBcnJheShuKSwhMCwiRXhwZWN0aW5nIGFycmF5IGhlcmUiKSxuLnB1c2goZSkpfSkoYyxtKSxwfWZ1bmN0aW9uIHNoKHQsZSxuLG8saSxhLHIpe2NvbnN0IHM9ci5tYXRjaChRZyksbD1yaCh0LGUsbixhLG8scz9udWxsOnIsITEpO3MmJmxoKGkscixsLmluZGV4LG51bGwsMCxudWxsKX1mdW5jdGlvbiBsaCh0LGUsbixvLGksYSl7bmdEZXZNb2RlJiZ2bihuLHZvLCJJbmRleCBtdXN0IGJlIGluIGFic29sdXRlIExWaWV3IG9mZnNldCIpO2NvbnN0IHI9dC5sZW5ndGgscz1yKzE7dC5wdXNoKG51bGwsbnVsbCk7Y29uc3QgbD1yKzI7bmdEZXZNb2RlJiZCYyh0LFpnKTtjb25zdCBjPWUuc3BsaXQoUWcpO2xldCBkPTA7Zm9yKGxldCBlPTA7ZTxjLmxlbmd0aDtlKyspe2NvbnN0IG49Y1tlXTtpZigxJmUpe2NvbnN0IGU9aStwYXJzZUludChuLDEwKTt0LnB1c2goLTEtZSksZHw9ZGgoZSl9ZWxzZSIiIT09biYmdC5wdXNoKG4pfXJldHVybiB0LnB1c2gobjw8Mnwobz8xOjApKSxvJiZ0LnB1c2gobyxhKSx0W3JdPWQsdFtzXT10Lmxlbmd0aC1sLGR9ZnVuY3Rpb24gY2godCl7bGV0IGU9MDtmb3IobGV0IG49MDtuPHQubGVuZ3RoO24rKyl7Y29uc3Qgbz10W25dOyJudW1iZXIiPT10eXBlb2YgbyYmbzwwJiZlKyt9cmV0dXJuIGV9ZnVuY3Rpb24gZGgodCl7cmV0dXJuIDE8PE1hdGgubWluKHQsMzEpfWZ1bmN0aW9uIHBoKHQpe2xldCBlLG4sbz0iIixpPTAsYT0hMTtmb3IoO251bGwhPT0oZT1uaC5leGVjKHQpKTspYT9lWzBdPT09YO+/vS8qJHtufe+/vWAmJihpPWUuaW5kZXgsYT0hMSk6KG8rPXQuc3Vic3RyaW5nKGksZS5pbmRleCtlWzBdLmxlbmd0aCksbj1lWzFdLGE9ITApO3JldHVybiBuZ0Rldk1vZGUmJmduKGEsITEsYFRhZyBtaXNtYXRjaDogdW5hYmxlIHRvIGZpbmQgdGhlIGVuZCBvZiB0aGUgc3ViLXRlbXBsYXRlIGluIHRoZSB0cmFuc2xhdGlvbiAiJHt0fSJgKSxvKz10LnN1YnN0cihpKSxvfWZ1bmN0aW9uIG1oKHQsZSxuLG8saSxhKXtuZ0Rldk1vZGUmJnhuKGksIklDVSBleHByZXNzaW9uIG11c3QgYmUgZGVmaW5lZCIpO2xldCByPTA7Y29uc3Qgcz17dHlwZTppLnR5cGUsY3VycmVudENhc2VMVmlld0luZGV4Ok1kKHQsZSwxLG51bGwpLGFuY2hvcklkeDphLGNhc2VzOltdLGNyZWF0ZTpbXSxyZW1vdmU6W10sdXBkYXRlOltdfTshKGZ1bmN0aW9uIGwodCxlLG4pe3QucHVzaChkaChlLm1haW5CaW5kaW5nKSwyLC0xLWUubWFpbkJpbmRpbmcsbjw8MnwyKX0pKG4saSxhKSwoZnVuY3Rpb24gYyh0LGUsbil7Y29uc3Qgbz10LmRhdGFbZV07bmdEZXZNb2RlJiZnbihudWxsPT09b3x8by5oYXNPd25Qcm9wZXJ0eSgidFZpZXdzIiksITAsIldlIGV4cGVjdCB0byBnZXQgJ251bGwnfCdUSWN1Q29udGFpbmVyJyIpLG51bGw9PT1vP3QuZGF0YVtlXT1uOihuZ0Rldk1vZGUmJmdhKG8sMzIpLG8udmFsdWU9bil9KSh0LGEscyk7Y29uc3QgZD1pLnZhbHVlcztmb3IobGV0IGE9MDthPGQubGVuZ3RoO2ErKyl7Y29uc3QgbD1kW2FdLGM9W107Zm9yKGxldCB0PTA7dDxsLmxlbmd0aDt0Kyspe2NvbnN0IGU9bFt0XTtpZigic3RyaW5nIiE9dHlwZW9mIGUpe2NvbnN0IG49Yy5wdXNoKGUpLTE7bFt0XT1gXHgzYyEtLe+/vSR7bn3vv70tLVx4M2VgfX1yPWdoKHQscyxlLG4sbyxpLmNhc2VzW2FdLGwuam9pbigiIiksYyl8cn1yJiYoZnVuY3Rpb24gcCh0LGUsbil7dC5wdXNoKGUsMSxuPDwyfDMpfSkobixyLGEpfWZ1bmN0aW9uIGZoKHQpe2NvbnN0IGU9W10sbj1bXTtsZXQgbz0xLGk9MDtjb25zdCBhPXVoKHQ9dC5yZXBsYWNlKGVoLChmdW5jdGlvbih0LGUsbil7cmV0dXJuIG89InNlbGVjdCI9PT1uPzA6MSxpPXBhcnNlSW50KGUuc3Vic3RyKDEpLDEwKSwiIn0pKSk7Zm9yKGxldCB0PTA7dDxhLmxlbmd0aDspe2xldCBpPWFbdCsrXS50cmltKCk7MT09PW8mJihpPWkucmVwbGFjZSgvXHMqKD86PSk/KFx3KylccyovLCIkMSIpKSxpLmxlbmd0aCYmZS5wdXNoKGkpO2NvbnN0IHI9dWgoYVt0KytdKTtlLmxlbmd0aD5uLmxlbmd0aCYmbi5wdXNoKHIpfXJldHVybnt0eXBlOm8sbWFpbkJpbmRpbmc6aSxjYXNlczplLHZhbHVlczpufX1mdW5jdGlvbiB1aCh0KXtpZighdClyZXR1cm5bXTtsZXQgZT0wO2NvbnN0IG49W10sbz1bXSxpPS9be31dL2c7bGV0IGE7Zm9yKGkubGFzdEluZGV4PTA7YT1pLmV4ZWModCk7KXtjb25zdCBpPWEuaW5kZXg7aWYoIn0iPT1hWzBdKXtpZihuLnBvcCgpLDA9PW4ubGVuZ3RoKXtjb25zdCBuPXQuc3Vic3RyaW5nKGUsaSk7ZWgudGVzdChuKT9vLnB1c2goZmgobikpOm8ucHVzaChuKSxlPWkrMX19ZWxzZXtpZigwPT1uLmxlbmd0aCl7Y29uc3Qgbj10LnN1YnN0cmluZyhlLGkpO28ucHVzaChuKSxlPWkrMX1uLnB1c2goInsiKX19Y29uc3Qgcj10LnN1YnN0cmluZyhlKTtyZXR1cm4gby5wdXNoKHIpLG99ZnVuY3Rpb24gZ2godCxlLG4sbyxpLGEscixzKXtjb25zdCBsPVtdLGM9W10sZD1bXTtuZ0Rldk1vZGUmJihCYyhsLFhnKSxCYyhjLEtnKSxCYyhkLFpnKSksZS5jYXNlcy5wdXNoKGEpLGUuY3JlYXRlLnB1c2gobCksZS5yZW1vdmUucHVzaChjKSxlLnVwZGF0ZS5wdXNoKGQpO2NvbnN0IHA9YnMoaWkoKSkuZ2V0SW5lcnRCb2R5RWxlbWVudChyKTtuZ0Rldk1vZGUmJnhuKHAsIlVuYWJsZSB0byBnZW5lcmF0ZSBpbmVydCBib2R5IGVsZW1lbnQiKTtjb25zdCBtPUdzKHApfHxwO3JldHVybiBtP2hoKHQsZSxuLG8sbCxjLGQsbSxpLHMsMCk6MH1mdW5jdGlvbiBoaCh0LGUsbixvLGksYSxyLHMsbCxjLGQpe2xldCBwPTAsbT1zLmZpcnN0Q2hpbGQ7Zm9yKDttOyl7Y29uc3Qgcz1NZCh0LG4sMSxudWxsKTtzd2l0Y2gobS5ub2RlVHlwZSl7Y2FzZSBOb2RlLkVMRU1FTlRfTk9ERTpjb25zdCBmPW0sdT1mLnRhZ05hbWUudG9Mb3dlckNhc2UoKTtpZihBcy5oYXNPd25Qcm9wZXJ0eSh1KSl7X2goaSxNZyx1LGwscyksdC5kYXRhW3NdPXU7Y29uc3QgZz1mLmF0dHJpYnV0ZXM7Zm9yKGxldCB0PTA7dDxnLmxlbmd0aDt0Kyspe2NvbnN0IGU9Zy5pdGVtKHQpLG49ZS5uYW1lLnRvTG93ZXJDYXNlKCk7ISFlLnZhbHVlLm1hdGNoKFFnKT9Icy5oYXNPd25Qcm9wZXJ0eShuKT9saChyLGUudmFsdWUscyxlLm5hbWUsMCxUc1tuXT92czpOc1tuXT94czpudWxsKTpuZ0Rldk1vZGUmJmNvbnNvbGUud2FybihgV0FSTklORzogaWdub3JpbmcgdW5zYWZlIGF0dHJpYnV0ZSB2YWx1ZSAke259IG9uIGVsZW1lbnQgJHt1fSAoc2VlIGh0dHBzOi8vZy5jby9uZy9zZWN1cml0eSN4c3MpYCk6Q2goaSxzLGUpfXA9aGgodCxlLG4sbyxpLGEscixtLHMsYyxkKzEpfHAsYmgoYSxzLGQpfWJyZWFrO2Nhc2UgTm9kZS5URVhUX05PREU6Y29uc3QgZz1tLnRleHRDb250ZW50fHwiIixoPWcubWF0Y2goUWcpO19oKGksbnVsbCxoPyIiOmcsbCxzKSxiaChhLHMsZCksaCYmKHA9bGgocixnLHMsbnVsbCwwLG51bGwpfHApO2JyZWFrO2Nhc2UgTm9kZS5DT01NRU5UX05PREU6Y29uc3QgYj10aC5leGVjKG0udGV4dENvbnRlbnR8fCIiKTtpZihiKXtjb25zdCBlPXBhcnNlSW50KGJbMV0sMTApLHI9Y1tlXTtfaChpLHZnLG5nRGV2TW9kZT9gbmVzdGVkIElDVSAke2V9YDoiIixsLHMpLG1oKHQsbixvLGwscixzKSx5aChhLHMsZCl9fW09bS5uZXh0U2libGluZ31yZXR1cm4gcH1mdW5jdGlvbiBiaCh0LGUsbil7MD09PW4mJnQucHVzaChlKX1mdW5jdGlvbiB5aCh0LGUsbil7MD09PW4mJih0LnB1c2gofmUpLHQucHVzaChlKSl9ZnVuY3Rpb24gX2godCxlLG4sbyxpKXtudWxsIT09ZSYmdC5wdXNoKGUpLHQucHVzaChuLGksKGZ1bmN0aW9uIGEodCxlLG4pe3JldHVybiBuZ0Rldk1vZGUmJnZuKGUsMCwiTWlzc2luZyBwYXJlbnQgaW5kZXgiKSxuZ0Rldk1vZGUmJk1uKG4sMCwiTWlzc2luZyByZWYgaW5kZXgiKSx0fGU8PDE3fG48PDF9KSgwLG8saSkpfWZ1bmN0aW9uIENoKHQsZSxuKXt0LnB1c2goZTw8MXwxLG4ubmFtZSxuLnZhbHVlKX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY29uc3QgTWg9L1xbKO+/vS4rP++/vT8pXF0vLHZoPS9cWyjvv70uKz/vv70/KVxdfCjvv71cLz9cKlxkKzpcZCvvv70pL2cseGg9Lyh7XHMqKShWQVJfKFBMVVJBTHxTRUxFQ1QpKF9cZCspPykoXHMqLCkvZyxPaD0veyhbQS1aMC05X10rKX0vZyxQaD0v77+9STE4Tl9FWFBfKElDVShfXGQrKT8p77+9L2csd2g9L1wvXCovLGtoPS9cZCtcOihcZCspLzsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmZ1bmN0aW9uIFNoKHQsZSxuPS0xKXtjb25zdCBvPU9pKCksaT14aSgpLGE9dm8rdDtuZ0Rldk1vZGUmJnhuKG8sInRWaWV3IHNob3VsZCBiZSBkZWZpbmVkIik7Y29uc3Qgcj1oaShvLmNvbnN0cyxlKSxzPVNpKCk7by5maXJzdENyZWF0ZVBhc3MmJmFoKG8sbnVsbD09PXM/MDpzLmluZGV4LGksYSxyLG4pO2NvbnN0IGw9by5kYXRhW2FdLGM9S2wobyxzPT09aVs2XT9udWxsOnMsaSk7IShmdW5jdGlvbiBkKHQsZSxuLG8pe2NvbnN0IGk9dFsxMV07Zm9yKGxldCBhPTA7YTxlLmxlbmd0aDthKyspe2NvbnN0IHI9ZVthKytdLHM9ZVthXSxsPShyJnhnLkNPTU1FTlQpPT09eGcuQ09NTUVOVCxjPShyJnhnLkFQUEVORF9FQUdFUkxZKT09PXhnLkFQUEVORF9FQUdFUkxZLGQ9cj4+PnhnLlNISUZUO2xldCBwPXRbZF07bnVsbD09PXAmJihwPXRbZF09bD9pLmNyZWF0ZUNvbW1lbnQocyk6QmwoaSxzKSksYyYmbnVsbCE9PW4mJkpsKGksbixwLG8sITEpfX0pKGksbC5jcmVhdGUsYyxzJiY4JnMudHlwZT9pW3MuaW5kZXhdOm51bGwpLExpKCEwKX1mdW5jdGlvbiBEaCgpe0xpKCExKX1mdW5jdGlvbiBSaCh0LGUsbil7U2godCxlLG4pLERoKCl9ZnVuY3Rpb24gRWgodCxlKXtjb25zdCBuPU9pKCk7bmdEZXZNb2RlJiZ4bihuLCJ0VmlldyBzaG91bGQgYmUgZGVmaW5lZCIpO2NvbnN0IG89aGkobi5jb25zdHMsZSk7IShmdW5jdGlvbiBpKHQsZSxuKXtjb25zdCBvPXdpKCkuaW5kZXgsaT1bXTtpZihuZ0Rldk1vZGUmJkJjKGksWmcpLHQuZmlyc3RDcmVhdGVQYXNzJiZudWxsPT09dC5kYXRhW2VdKXtmb3IobGV0IHQ9MDt0PG4ubGVuZ3RoO3QrPTIpe2NvbnN0IGU9blt0XSxhPW5bdCsxXTtpZigiIiE9PWEpe2lmKCRnLnRlc3QoYSkpdGhyb3cgbmV3IEVycm9yKGBJQ1UgZXhwcmVzc2lvbnMgYXJlIG5vdCBzdXBwb3J0ZWQgaW4gYXR0cmlidXRlcy4gTWVzc2FnZTogIiR7YX0iLmApO2xoKGksYSxvLGUsY2goaSksbnVsbCl9fXQuZGF0YVtlXT1pfX0pKG4sdCt2byxvKX1mdW5jdGlvbiBBaCh0KXtyZXR1cm4oZnVuY3Rpb24gZSh0KXt0JiYoTGd8PTE8PE1hdGgubWluKEJnLDMxKSksQmcrK30pKHVtKHhpKCksSGkoKSx0KSksQWh9ZnVuY3Rpb24gVGgodCl7IShmdW5jdGlvbiBlKHQsbixvKXtpZihCZz4wKXtuZ0Rldk1vZGUmJnhuKHQsInRWaWV3IHNob3VsZCBiZSBkZWZpbmVkIik7Y29uc3QgZT10LmRhdGFbb107amcodCxuLEFycmF5LmlzQXJyYXkoZSk/ZTplLnVwZGF0ZSx6aSgpLUJnLTEsTGcpfUxnPTAsQmc9MH0pKE9pKCkseGkoKSx0K3ZvKX1mdW5jdGlvbiBOaCh0LGU9e30pe3JldHVybihmdW5jdGlvbiBuKHQsZT17fSl7bGV0IG49dDtpZihNaC50ZXN0KHQpKXtjb25zdCB0PXt9LGU9WzBdO249bi5yZXBsYWNlKHZoLCgobixvLGkpPT57Y29uc3QgYT1vfHxpLHI9dFthXXx8W107aWYoci5sZW5ndGh8fChhLnNwbGl0KCJ8IikuZm9yRWFjaCgodD0+e2NvbnN0IGU9dC5tYXRjaChraCksbj1lP3BhcnNlSW50KGVbMV0sMTApOjAsbz13aC50ZXN0KHQpO3IucHVzaChbbixvLHRdKX0pKSx0W2FdPXIpLCFyLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoYGkxOG4gcG9zdHByb2Nlc3M6IHVubWF0Y2hlZCBwbGFjZWhvbGRlciAtICR7YX1gKTtjb25zdCBzPWVbZS5sZW5ndGgtMV07bGV0IGw9MDtmb3IobGV0IHQ9MDt0PHIubGVuZ3RoO3QrKylpZihyW3RdWzBdPT09cyl7bD10O2JyZWFrfWNvbnN0W2MsZCxwXT1yW2xdO3JldHVybiBkP2UucG9wKCk6cyE9PWMmJmUucHVzaChjKSxyLnNwbGljZShsLDEpLHB9KSl9cmV0dXJuIE9iamVjdC5rZXlzKGUpLmxlbmd0aD8obj1uLnJlcGxhY2UoeGgsKCh0LG4sbyxpLGEscik9PmUuaGFzT3duUHJvcGVydHkobyk/YCR7bn0ke2Vbb119JHtyfWA6dCkpLG49bi5yZXBsYWNlKE9oLCgodCxuKT0+ZS5oYXNPd25Qcm9wZXJ0eShuKT9lW25dOnQpKSxuPW4ucmVwbGFjZShQaCwoKHQsbik9PntpZihlLmhhc093blByb3BlcnR5KG4pKXtjb25zdCBvPWVbbl07aWYoIW8ubGVuZ3RoKXRocm93IG5ldyBFcnJvcihgaTE4biBwb3N0cHJvY2VzczogdW5tYXRjaGVkIElDVSAtICR7dH0gd2l0aCBrZXk6ICR7bn1gKTtyZXR1cm4gby5zaGlmdCgpfXJldHVybiB0fSkpLG4pOm59KSh0LGUpfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovZnVuY3Rpb24gemgodCxlLG4sbyxpKXtpZih0PXRuKHQpLEFycmF5LmlzQXJyYXkodCkpZm9yKGxldCBhPTA7YTx0Lmxlbmd0aDthKyspemgodFthXSxlLG4sbyxpKTtlbHNle2NvbnN0IGE9T2koKSxyPXhpKCk7bGV0IHM9RXAodCk/dDp0bih0LnByb3ZpZGUpLGw9U3AodCk7Y29uc3QgYz13aSgpLGQ9MTA0ODU3NSZjLnByb3ZpZGVySW5kZXhlcyxwPWMuZGlyZWN0aXZlU3RhcnQsbT1jLnByb3ZpZGVySW5kZXhlcz4+MjA7aWYoRXAodCl8fCF0Lm11bHRpKXtjb25zdCBvPW5ldyBmYShsLGksZ2YpLGY9RmgocyxlLGk/ZDpkK20scCk7LTE9PT1mPyhFYShrYShjLHIpLGEscyksSWgoYSx0LGUubGVuZ3RoKSxlLnB1c2gocyksYy5kaXJlY3RpdmVTdGFydCsrLGMuZGlyZWN0aXZlRW5kKyssaSYmKGMucHJvdmlkZXJJbmRleGVzKz0xMDQ4NTc2KSxuLnB1c2gobyksci5wdXNoKG8pKToobltmXT1vLHJbZl09byl9ZWxzZXtjb25zdCBmPUZoKHMsZSxkK20scCksdT1GaChzLGUsZCxkK20pLGc9Zj49MCYmbltmXSxoPXU+PTAmJm5bdV07aWYoaSYmIWh8fCFpJiYhZyl7RWEoa2EoYyxyKSxhLHMpO2NvbnN0IGQ9KGZ1bmN0aW9uIGEodCxlLG4sbyxpKXtjb25zdCBhPW5ldyBmYSh0LG4sZ2YpO3JldHVybiBhLm11bHRpPVtdLGEuaW5kZXg9ZSxhLmNvbXBvbmVudFByb3ZpZGVycz0wLEhoKGEsaSxvJiYhbiksYX0pKGk/Qmg6TGgsbi5sZW5ndGgsaSxvLGwpOyFpJiZoJiYoblt1XS5wcm92aWRlckZhY3Rvcnk9ZCksSWgoYSx0LGUubGVuZ3RoLDApLGUucHVzaChzKSxjLmRpcmVjdGl2ZVN0YXJ0KyssYy5kaXJlY3RpdmVFbmQrKyxpJiYoYy5wcm92aWRlckluZGV4ZXMrPTEwNDg1NzYpLG4ucHVzaChkKSxyLnB1c2goZCl9ZWxzZXtJaChhLHQsZj4tMT9mOnUsSGgobltpP3U6Zl0sbCwhaSYmbykpfSFpJiZvJiZoJiZuW3VdLmNvbXBvbmVudFByb3ZpZGVycysrfX19ZnVuY3Rpb24gSWgodCxlLG4sbyl7Y29uc3QgaT1FcChlKTtpZihpfHwoZnVuY3Rpb24gYSh0KXtyZXR1cm4hIXQudXNlQ2xhc3N9KShlKSl7Y29uc3QgYT0oZS51c2VDbGFzc3x8ZSkucHJvdG90eXBlLm5nT25EZXN0cm95O2lmKGEpe2NvbnN0IHI9dC5kZXN0cm95SG9va3N8fCh0LmRlc3Ryb3lIb29rcz1bXSk7aWYoIWkmJmUubXVsdGkpe25nRGV2TW9kZSYmeG4obywiaW5kZXhJbkZhY3Rvcnkgd2hlbiByZWdpc3RlcmluZyBtdWx0aSBmYWN0b3J5IGRlc3Ryb3kgaG9vayIpO2NvbnN0IHQ9ci5pbmRleE9mKG4pOy0xPT09dD9yLnB1c2gobixbbyxhXSk6clt0KzFdLnB1c2gobyxhKX1lbHNlIHIucHVzaChuLGEpfX19ZnVuY3Rpb24gSGgodCxlLG4pe3JldHVybiBuJiZ0LmNvbXBvbmVudFByb3ZpZGVycysrLHQubXVsdGkucHVzaChlKS0xfWZ1bmN0aW9uIEZoKHQsZSxuLG8pe2ZvcihsZXQgaT1uO2k8bztpKyspaWYoZVtpXT09PXQpcmV0dXJuIGk7cmV0dXJuLTF9ZnVuY3Rpb24gTGgodCxlLG4sbyl7cmV0dXJuIFZoKHRoaXMubXVsdGksW10pfWZ1bmN0aW9uIEJoKHQsZSxuLG8pe2NvbnN0IGk9dGhpcy5tdWx0aTtsZXQgYTtpZih0aGlzLnByb3ZpZGVyRmFjdG9yeSl7Y29uc3QgdD10aGlzLnByb3ZpZGVyRmFjdG9yeS5jb21wb25lbnRQcm92aWRlcnMsZT1MYShuLG5bMV0sdGhpcy5wcm92aWRlckZhY3RvcnkuaW5kZXgsbyk7YT1lLnNsaWNlKDAsdCksVmgoaSxhKTtmb3IobGV0IG49dDtuPGUubGVuZ3RoO24rKylhLnB1c2goZVtuXSl9ZWxzZSBhPVtdLFZoKGksYSk7cmV0dXJuIGF9ZnVuY3Rpb24gVmgodCxlKXtmb3IobGV0IG49MDtuPHQubGVuZ3RoO24rKyl7ZS5wdXNoKCgwLHRbbl0pKCkpfXJldHVybiBlfWZ1bmN0aW9uIGpoKHQsZT1bXSl7cmV0dXJuIG49PntuLnByb3ZpZGVyc1Jlc29sdmVyPShuLG8pPT4oZnVuY3Rpb24gaSh0LGUsbil7Y29uc3Qgbz1PaSgpO2lmKG8uZmlyc3RDcmVhdGVQYXNzKXtjb25zdCBpPVJvKHQpO3poKG4sby5kYXRhLG8uYmx1ZXByaW50LGksITApLHpoKGUsby5kYXRhLG8uYmx1ZXByaW50LGksITEpfX0pKG4sbz9vKHQpOnQsZSl9fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jbGFzcyBVaHt9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NvbnN0IFdoPSJuZ0NvbXBvbmVudCI7Y2xhc3MgR2h7fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KZnVuY3Rpb24gWWgoLi4udCl7fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9mdW5jdGlvbiBxaCh0LGUpe3JldHVybiBuZXcgS2goZGkodCxlKSl9R2guTlVMTD1uZXcgY2xhc3N7cmVzb2x2ZUNvbXBvbmVudEZhY3RvcnkodCl7dGhyb3coZnVuY3Rpb24gZSh0KXtjb25zdCBlPUVycm9yKGBObyBjb21wb25lbnQgZmFjdG9yeSBmb3VuZCBmb3IgJHtLZSh0KX0uIERpZCB5b3UgYWRkIGl0IHRvIEBOZ01vZHVsZS5lbnRyeUNvbXBvbmVudHM/YCk7cmV0dXJuIGVbV2hdPXQsZX0pKHQpfX07Y29uc3QgWmg9ZnVuY3Rpb24gWGgoKXtyZXR1cm4gcWgod2koKSx4aSgpKX07Y2xhc3MgS2h7Y29uc3RydWN0b3IodCl7dGhpcy5uYXRpdmVFbGVtZW50PXR9fWZ1bmN0aW9uIEpoKHQpe3JldHVybiB0IGluc3RhbmNlb2YgS2g/dC5uYXRpdmVFbGVtZW50OnR9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL0toLl9fTkdfRUxFTUVOVF9JRF9fPVpoLG5ldyBlcigiUmVuZGVyZXIySW50ZXJjZXB0b3IiKTtjbGFzcyBRaHt9Y2xhc3MgJGh7fSRoLl9fTkdfRUxFTUVOVF9JRF9fPSgpPT50YigpO2NvbnN0IHRiPWZ1bmN0aW9uIGViKCl7Y29uc3QgdD14aSgpLGU9Zmkod2koKS5pbmRleCx0KTtyZXR1cm4oZnVuY3Rpb24gbih0KXtjb25zdCBlPXRbMTFdO2lmKG5nRGV2TW9kZSYmIXJpKGUpKXRocm93IG5ldyBFcnJvcigiQ2Fubm90IGluamVjdCBSZW5kZXJlcjIgd2hlbiB0aGUgYXBwbGljYXRpb24gdXNlcyBSZW5kZXJlcjMhIik7cmV0dXJuIGV9KShQbyhlKT9lOnQpfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi87Y2xhc3MgbmJ7fW5iLsm1cHJvdj1Tbih7dG9rZW46bmIscHJvdmlkZWRJbjoicm9vdCIsZmFjdG9yeTooKT0+bnVsbH0pOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3Mgb2J7Y29uc3RydWN0b3IodCl7dGhpcy5mdWxsPXQsdGhpcy5tYWpvcj10LnNwbGl0KCIuIilbMF0sdGhpcy5taW5vcj10LnNwbGl0KCIuIilbMV0sdGhpcy5wYXRjaD10LnNwbGl0KCIuIikuc2xpY2UoMikuam9pbigiLiIpfX1jb25zdCBpYj1uZXcgb2IoIjEyLjIuMSIpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jbGFzcyBhYntjb25zdHJ1Y3Rvcigpe31zdXBwb3J0cyh0KXtyZXR1cm4gZG0odCl9Y3JlYXRlKHQpe3JldHVybiBuZXcgc2IodCl9fWNvbnN0IHJiPSh0LGUpPT5lO2NsYXNzIHNie2NvbnN0cnVjdG9yKHQpe3RoaXMubGVuZ3RoPTAsdGhpcy5fbGlua2VkUmVjb3Jkcz1udWxsLHRoaXMuX3VubGlua2VkUmVjb3Jkcz1udWxsLHRoaXMuX3ByZXZpb3VzSXRIZWFkPW51bGwsdGhpcy5faXRIZWFkPW51bGwsdGhpcy5faXRUYWlsPW51bGwsdGhpcy5fYWRkaXRpb25zSGVhZD1udWxsLHRoaXMuX2FkZGl0aW9uc1RhaWw9bnVsbCx0aGlzLl9tb3Zlc0hlYWQ9bnVsbCx0aGlzLl9tb3Zlc1RhaWw9bnVsbCx0aGlzLl9yZW1vdmFsc0hlYWQ9bnVsbCx0aGlzLl9yZW1vdmFsc1RhaWw9bnVsbCx0aGlzLl9pZGVudGl0eUNoYW5nZXNIZWFkPW51bGwsdGhpcy5faWRlbnRpdHlDaGFuZ2VzVGFpbD1udWxsLHRoaXMuX3RyYWNrQnlGbj10fHxyYn1mb3JFYWNoSXRlbSh0KXtsZXQgZTtmb3IoZT10aGlzLl9pdEhlYWQ7bnVsbCE9PWU7ZT1lLl9uZXh0KXQoZSl9Zm9yRWFjaE9wZXJhdGlvbih0KXtsZXQgZT10aGlzLl9pdEhlYWQsbj10aGlzLl9yZW1vdmFsc0hlYWQsbz0wLGk9bnVsbDtmb3IoO2V8fG47KXtjb25zdCBhPSFufHxlJiZlLmN1cnJlbnRJbmRleDxwYihuLG8saSk/ZTpuLHI9cGIoYSxvLGkpLHM9YS5jdXJyZW50SW5kZXg7aWYoYT09PW4pby0tLG49bi5fbmV4dFJlbW92ZWQ7ZWxzZSBpZihlPWUuX25leHQsbnVsbD09YS5wcmV2aW91c0luZGV4KW8rKztlbHNle2l8fChpPVtdKTtjb25zdCB0PXItbyxlPXMtbztpZih0IT1lKXtmb3IobGV0IG49MDtuPHQ7bisrKXtjb25zdCBvPW48aS5sZW5ndGg/aVtuXTppW25dPTAsYT1vK247ZTw9YSYmYTx0JiYoaVtuXT1vKzEpfWlbYS5wcmV2aW91c0luZGV4XT1lLXR9fXIhPT1zJiZ0KGEscixzKX19Zm9yRWFjaFByZXZpb3VzSXRlbSh0KXtsZXQgZTtmb3IoZT10aGlzLl9wcmV2aW91c0l0SGVhZDtudWxsIT09ZTtlPWUuX25leHRQcmV2aW91cyl0KGUpfWZvckVhY2hBZGRlZEl0ZW0odCl7bGV0IGU7Zm9yKGU9dGhpcy5fYWRkaXRpb25zSGVhZDtudWxsIT09ZTtlPWUuX25leHRBZGRlZCl0KGUpfWZvckVhY2hNb3ZlZEl0ZW0odCl7bGV0IGU7Zm9yKGU9dGhpcy5fbW92ZXNIZWFkO251bGwhPT1lO2U9ZS5fbmV4dE1vdmVkKXQoZSl9Zm9yRWFjaFJlbW92ZWRJdGVtKHQpe2xldCBlO2ZvcihlPXRoaXMuX3JlbW92YWxzSGVhZDtudWxsIT09ZTtlPWUuX25leHRSZW1vdmVkKXQoZSl9Zm9yRWFjaElkZW50aXR5Q2hhbmdlKHQpe2xldCBlO2ZvcihlPXRoaXMuX2lkZW50aXR5Q2hhbmdlc0hlYWQ7bnVsbCE9PWU7ZT1lLl9uZXh0SWRlbnRpdHlDaGFuZ2UpdChlKX1kaWZmKHQpe2lmKG51bGw9PXQmJih0PVtdKSwhZG0odCkpdGhyb3cgbmV3IEVycm9yKGBFcnJvciB0cnlpbmcgdG8gZGlmZiAnJHtLZSh0KX0nLiBPbmx5IGFycmF5cyBhbmQgaXRlcmFibGVzIGFyZSBhbGxvd2VkYCk7cmV0dXJuIHRoaXMuY2hlY2sodCk/dGhpczpudWxsfW9uRGVzdHJveSgpe31jaGVjayh0KXt0aGlzLl9yZXNldCgpO2xldCBlLG4sbyxpPXRoaXMuX2l0SGVhZCxhPSExO2lmKEFycmF5LmlzQXJyYXkodCkpe3RoaXMubGVuZ3RoPXQubGVuZ3RoO2ZvcihsZXQgZT0wO2U8dGhpcy5sZW5ndGg7ZSsrKW49dFtlXSxvPXRoaXMuX3RyYWNrQnlGbihlLG4pLG51bGwhPT1pJiZPYmplY3QuaXMoaS50cmFja0J5SWQsbyk/KGEmJihpPXRoaXMuX3ZlcmlmeVJlaW5zZXJ0aW9uKGksbixvLGUpKSxPYmplY3QuaXMoaS5pdGVtLG4pfHx0aGlzLl9hZGRJZGVudGl0eUNoYW5nZShpLG4pKTooaT10aGlzLl9taXNtYXRjaChpLG4sbyxlKSxhPSEwKSxpPWkuX25leHR9ZWxzZSBlPTAsKGZ1bmN0aW9uIHIodCxlKXtpZihBcnJheS5pc0FycmF5KHQpKWZvcihsZXQgbj0wO248dC5sZW5ndGg7bisrKWUodFtuXSk7ZWxzZXtjb25zdCBuPXRbc20oKV0oKTtsZXQgbztmb3IoOyEobz1uLm5leHQoKSkuZG9uZTspZShvLnZhbHVlKX19KSh0LCh0PT57bz10aGlzLl90cmFja0J5Rm4oZSx0KSxudWxsIT09aSYmT2JqZWN0LmlzKGkudHJhY2tCeUlkLG8pPyhhJiYoaT10aGlzLl92ZXJpZnlSZWluc2VydGlvbihpLHQsbyxlKSksT2JqZWN0LmlzKGkuaXRlbSx0KXx8dGhpcy5fYWRkSWRlbnRpdHlDaGFuZ2UoaSx0KSk6KGk9dGhpcy5fbWlzbWF0Y2goaSx0LG8sZSksYT0hMCksaT1pLl9uZXh0LGUrK30pKSx0aGlzLmxlbmd0aD1lO3JldHVybiB0aGlzLl90cnVuY2F0ZShpKSx0aGlzLmNvbGxlY3Rpb249dCx0aGlzLmlzRGlydHl9Z2V0IGlzRGlydHkoKXtyZXR1cm4gbnVsbCE9PXRoaXMuX2FkZGl0aW9uc0hlYWR8fG51bGwhPT10aGlzLl9tb3Zlc0hlYWR8fG51bGwhPT10aGlzLl9yZW1vdmFsc0hlYWR8fG51bGwhPT10aGlzLl9pZGVudGl0eUNoYW5nZXNIZWFkfV9yZXNldCgpe2lmKHRoaXMuaXNEaXJ0eSl7bGV0IHQ7Zm9yKHQ9dGhpcy5fcHJldmlvdXNJdEhlYWQ9dGhpcy5faXRIZWFkO251bGwhPT10O3Q9dC5fbmV4dCl0Ll9uZXh0UHJldmlvdXM9dC5fbmV4dDtmb3IodD10aGlzLl9hZGRpdGlvbnNIZWFkO251bGwhPT10O3Q9dC5fbmV4dEFkZGVkKXQucHJldmlvdXNJbmRleD10LmN1cnJlbnRJbmRleDtmb3IodGhpcy5fYWRkaXRpb25zSGVhZD10aGlzLl9hZGRpdGlvbnNUYWlsPW51bGwsdD10aGlzLl9tb3Zlc0hlYWQ7bnVsbCE9PXQ7dD10Ll9uZXh0TW92ZWQpdC5wcmV2aW91c0luZGV4PXQuY3VycmVudEluZGV4O3RoaXMuX21vdmVzSGVhZD10aGlzLl9tb3Zlc1RhaWw9bnVsbCx0aGlzLl9yZW1vdmFsc0hlYWQ9dGhpcy5fcmVtb3ZhbHNUYWlsPW51bGwsdGhpcy5faWRlbnRpdHlDaGFuZ2VzSGVhZD10aGlzLl9pZGVudGl0eUNoYW5nZXNUYWlsPW51bGx9fV9taXNtYXRjaCh0LGUsbixvKXtsZXQgaTtyZXR1cm4gbnVsbD09PXQ/aT10aGlzLl9pdFRhaWw6KGk9dC5fcHJldix0aGlzLl9yZW1vdmUodCkpLG51bGwhPT0odD1udWxsPT09dGhpcy5fdW5saW5rZWRSZWNvcmRzP251bGw6dGhpcy5fdW5saW5rZWRSZWNvcmRzLmdldChuLG51bGwpKT8oT2JqZWN0LmlzKHQuaXRlbSxlKXx8dGhpcy5fYWRkSWRlbnRpdHlDaGFuZ2UodCxlKSx0aGlzLl9yZWluc2VydEFmdGVyKHQsaSxvKSk6bnVsbCE9PSh0PW51bGw9PT10aGlzLl9saW5rZWRSZWNvcmRzP251bGw6dGhpcy5fbGlua2VkUmVjb3Jkcy5nZXQobixvKSk/KE9iamVjdC5pcyh0Lml0ZW0sZSl8fHRoaXMuX2FkZElkZW50aXR5Q2hhbmdlKHQsZSksdGhpcy5fbW92ZUFmdGVyKHQsaSxvKSk6dD10aGlzLl9hZGRBZnRlcihuZXcgbGIoZSxuKSxpLG8pLHR9X3ZlcmlmeVJlaW5zZXJ0aW9uKHQsZSxuLG8pe2xldCBpPW51bGw9PT10aGlzLl91bmxpbmtlZFJlY29yZHM/bnVsbDp0aGlzLl91bmxpbmtlZFJlY29yZHMuZ2V0KG4sbnVsbCk7cmV0dXJuIG51bGwhPT1pP3Q9dGhpcy5fcmVpbnNlcnRBZnRlcihpLHQuX3ByZXYsbyk6dC5jdXJyZW50SW5kZXghPW8mJih0LmN1cnJlbnRJbmRleD1vLHRoaXMuX2FkZFRvTW92ZXModCxvKSksdH1fdHJ1bmNhdGUodCl7Zm9yKDtudWxsIT09dDspe2NvbnN0IGU9dC5fbmV4dDt0aGlzLl9hZGRUb1JlbW92YWxzKHRoaXMuX3VubGluayh0KSksdD1lfW51bGwhPT10aGlzLl91bmxpbmtlZFJlY29yZHMmJnRoaXMuX3VubGlua2VkUmVjb3Jkcy5jbGVhcigpLG51bGwhPT10aGlzLl9hZGRpdGlvbnNUYWlsJiYodGhpcy5fYWRkaXRpb25zVGFpbC5fbmV4dEFkZGVkPW51bGwpLG51bGwhPT10aGlzLl9tb3Zlc1RhaWwmJih0aGlzLl9tb3Zlc1RhaWwuX25leHRNb3ZlZD1udWxsKSxudWxsIT09dGhpcy5faXRUYWlsJiYodGhpcy5faXRUYWlsLl9uZXh0PW51bGwpLG51bGwhPT10aGlzLl9yZW1vdmFsc1RhaWwmJih0aGlzLl9yZW1vdmFsc1RhaWwuX25leHRSZW1vdmVkPW51bGwpLG51bGwhPT10aGlzLl9pZGVudGl0eUNoYW5nZXNUYWlsJiYodGhpcy5faWRlbnRpdHlDaGFuZ2VzVGFpbC5fbmV4dElkZW50aXR5Q2hhbmdlPW51bGwpfV9yZWluc2VydEFmdGVyKHQsZSxuKXtudWxsIT09dGhpcy5fdW5saW5rZWRSZWNvcmRzJiZ0aGlzLl91bmxpbmtlZFJlY29yZHMucmVtb3ZlKHQpO2NvbnN0IG89dC5fcHJldlJlbW92ZWQsaT10Ll9uZXh0UmVtb3ZlZDtyZXR1cm4gbnVsbD09PW8/dGhpcy5fcmVtb3ZhbHNIZWFkPWk6by5fbmV4dFJlbW92ZWQ9aSxudWxsPT09aT90aGlzLl9yZW1vdmFsc1RhaWw9bzppLl9wcmV2UmVtb3ZlZD1vLHRoaXMuX2luc2VydEFmdGVyKHQsZSxuKSx0aGlzLl9hZGRUb01vdmVzKHQsbiksdH1fbW92ZUFmdGVyKHQsZSxuKXtyZXR1cm4gdGhpcy5fdW5saW5rKHQpLHRoaXMuX2luc2VydEFmdGVyKHQsZSxuKSx0aGlzLl9hZGRUb01vdmVzKHQsbiksdH1fYWRkQWZ0ZXIodCxlLG4pe3JldHVybiB0aGlzLl9pbnNlcnRBZnRlcih0LGUsbiksdGhpcy5fYWRkaXRpb25zVGFpbD1udWxsPT09dGhpcy5fYWRkaXRpb25zVGFpbD90aGlzLl9hZGRpdGlvbnNIZWFkPXQ6dGhpcy5fYWRkaXRpb25zVGFpbC5fbmV4dEFkZGVkPXQsdH1faW5zZXJ0QWZ0ZXIodCxlLG4pe2NvbnN0IG89bnVsbD09PWU/dGhpcy5faXRIZWFkOmUuX25leHQ7cmV0dXJuIHQuX25leHQ9byx0Ll9wcmV2PWUsbnVsbD09PW8/dGhpcy5faXRUYWlsPXQ6by5fcHJldj10LG51bGw9PT1lP3RoaXMuX2l0SGVhZD10OmUuX25leHQ9dCxudWxsPT09dGhpcy5fbGlua2VkUmVjb3JkcyYmKHRoaXMuX2xpbmtlZFJlY29yZHM9bmV3IGRiKSx0aGlzLl9saW5rZWRSZWNvcmRzLnB1dCh0KSx0LmN1cnJlbnRJbmRleD1uLHR9X3JlbW92ZSh0KXtyZXR1cm4gdGhpcy5fYWRkVG9SZW1vdmFscyh0aGlzLl91bmxpbmsodCkpfV91bmxpbmsodCl7bnVsbCE9PXRoaXMuX2xpbmtlZFJlY29yZHMmJnRoaXMuX2xpbmtlZFJlY29yZHMucmVtb3ZlKHQpO2NvbnN0IGU9dC5fcHJldixuPXQuX25leHQ7cmV0dXJuIG51bGw9PT1lP3RoaXMuX2l0SGVhZD1uOmUuX25leHQ9bixudWxsPT09bj90aGlzLl9pdFRhaWw9ZTpuLl9wcmV2PWUsdH1fYWRkVG9Nb3Zlcyh0LGUpe3JldHVybiB0LnByZXZpb3VzSW5kZXg9PT1lfHwodGhpcy5fbW92ZXNUYWlsPW51bGw9PT10aGlzLl9tb3Zlc1RhaWw/dGhpcy5fbW92ZXNIZWFkPXQ6dGhpcy5fbW92ZXNUYWlsLl9uZXh0TW92ZWQ9dCksdH1fYWRkVG9SZW1vdmFscyh0KXtyZXR1cm4gbnVsbD09PXRoaXMuX3VubGlua2VkUmVjb3JkcyYmKHRoaXMuX3VubGlua2VkUmVjb3Jkcz1uZXcgZGIpLHRoaXMuX3VubGlua2VkUmVjb3Jkcy5wdXQodCksdC5jdXJyZW50SW5kZXg9bnVsbCx0Ll9uZXh0UmVtb3ZlZD1udWxsLG51bGw9PT10aGlzLl9yZW1vdmFsc1RhaWw/KHRoaXMuX3JlbW92YWxzVGFpbD10aGlzLl9yZW1vdmFsc0hlYWQ9dCx0Ll9wcmV2UmVtb3ZlZD1udWxsKToodC5fcHJldlJlbW92ZWQ9dGhpcy5fcmVtb3ZhbHNUYWlsLHRoaXMuX3JlbW92YWxzVGFpbD10aGlzLl9yZW1vdmFsc1RhaWwuX25leHRSZW1vdmVkPXQpLHR9X2FkZElkZW50aXR5Q2hhbmdlKHQsZSl7cmV0dXJuIHQuaXRlbT1lLHRoaXMuX2lkZW50aXR5Q2hhbmdlc1RhaWw9bnVsbD09PXRoaXMuX2lkZW50aXR5Q2hhbmdlc1RhaWw/dGhpcy5faWRlbnRpdHlDaGFuZ2VzSGVhZD10OnRoaXMuX2lkZW50aXR5Q2hhbmdlc1RhaWwuX25leHRJZGVudGl0eUNoYW5nZT10LHR9fWNsYXNzIGxie2NvbnN0cnVjdG9yKHQsZSl7dGhpcy5pdGVtPXQsdGhpcy50cmFja0J5SWQ9ZSx0aGlzLmN1cnJlbnRJbmRleD1udWxsLHRoaXMucHJldmlvdXNJbmRleD1udWxsLHRoaXMuX25leHRQcmV2aW91cz1udWxsLHRoaXMuX3ByZXY9bnVsbCx0aGlzLl9uZXh0PW51bGwsdGhpcy5fcHJldkR1cD1udWxsLHRoaXMuX25leHREdXA9bnVsbCx0aGlzLl9wcmV2UmVtb3ZlZD1udWxsLHRoaXMuX25leHRSZW1vdmVkPW51bGwsdGhpcy5fbmV4dEFkZGVkPW51bGwsdGhpcy5fbmV4dE1vdmVkPW51bGwsdGhpcy5fbmV4dElkZW50aXR5Q2hhbmdlPW51bGx9fWNsYXNzIGNie2NvbnN0cnVjdG9yKCl7dGhpcy5faGVhZD1udWxsLHRoaXMuX3RhaWw9bnVsbH1hZGQodCl7bnVsbD09PXRoaXMuX2hlYWQ/KHRoaXMuX2hlYWQ9dGhpcy5fdGFpbD10LHQuX25leHREdXA9bnVsbCx0Ll9wcmV2RHVwPW51bGwpOih0aGlzLl90YWlsLl9uZXh0RHVwPXQsdC5fcHJldkR1cD10aGlzLl90YWlsLHQuX25leHREdXA9bnVsbCx0aGlzLl90YWlsPXQpfWdldCh0LGUpe2xldCBuO2ZvcihuPXRoaXMuX2hlYWQ7bnVsbCE9PW47bj1uLl9uZXh0RHVwKWlmKChudWxsPT09ZXx8ZTw9bi5jdXJyZW50SW5kZXgpJiZPYmplY3QuaXMobi50cmFja0J5SWQsdCkpcmV0dXJuIG47cmV0dXJuIG51bGx9cmVtb3ZlKHQpe2NvbnN0IGU9dC5fcHJldkR1cCxuPXQuX25leHREdXA7cmV0dXJuIG51bGw9PT1lP3RoaXMuX2hlYWQ9bjplLl9uZXh0RHVwPW4sbnVsbD09PW4/dGhpcy5fdGFpbD1lOm4uX3ByZXZEdXA9ZSxudWxsPT09dGhpcy5faGVhZH19Y2xhc3MgZGJ7Y29uc3RydWN0b3IoKXt0aGlzLm1hcD1uZXcgTWFwfXB1dCh0KXtjb25zdCBlPXQudHJhY2tCeUlkO2xldCBuPXRoaXMubWFwLmdldChlKTtufHwobj1uZXcgY2IsdGhpcy5tYXAuc2V0KGUsbikpLG4uYWRkKHQpfWdldCh0LGUpe2NvbnN0IG49dGhpcy5tYXAuZ2V0KHQpO3JldHVybiBuP24uZ2V0KHQsZSk6bnVsbH1yZW1vdmUodCl7Y29uc3QgZT10LnRyYWNrQnlJZDtyZXR1cm4gdGhpcy5tYXAuZ2V0KGUpLnJlbW92ZSh0KSYmdGhpcy5tYXAuZGVsZXRlKGUpLHR9Z2V0IGlzRW1wdHkoKXtyZXR1cm4gMD09PXRoaXMubWFwLnNpemV9Y2xlYXIoKXt0aGlzLm1hcC5jbGVhcigpfX1mdW5jdGlvbiBwYih0LGUsbil7Y29uc3Qgbz10LnByZXZpb3VzSW5kZXg7aWYobnVsbD09PW8pcmV0dXJuIG87bGV0IGk9MDtyZXR1cm4gbiYmbzxuLmxlbmd0aCYmKGk9bltvXSksbytlK2l9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NsYXNzIG1ie2NvbnN0cnVjdG9yKCl7fXN1cHBvcnRzKHQpe3JldHVybiB0IGluc3RhbmNlb2YgTWFwfHxwbSh0KX1jcmVhdGUoKXtyZXR1cm4gbmV3IGZifX1jbGFzcyBmYntjb25zdHJ1Y3Rvcigpe3RoaXMuX3JlY29yZHM9bmV3IE1hcCx0aGlzLl9tYXBIZWFkPW51bGwsdGhpcy5fYXBwZW5kQWZ0ZXI9bnVsbCx0aGlzLl9wcmV2aW91c01hcEhlYWQ9bnVsbCx0aGlzLl9jaGFuZ2VzSGVhZD1udWxsLHRoaXMuX2NoYW5nZXNUYWlsPW51bGwsdGhpcy5fYWRkaXRpb25zSGVhZD1udWxsLHRoaXMuX2FkZGl0aW9uc1RhaWw9bnVsbCx0aGlzLl9yZW1vdmFsc0hlYWQ9bnVsbCx0aGlzLl9yZW1vdmFsc1RhaWw9bnVsbH1nZXQgaXNEaXJ0eSgpe3JldHVybiBudWxsIT09dGhpcy5fYWRkaXRpb25zSGVhZHx8bnVsbCE9PXRoaXMuX2NoYW5nZXNIZWFkfHxudWxsIT09dGhpcy5fcmVtb3ZhbHNIZWFkfWZvckVhY2hJdGVtKHQpe2xldCBlO2ZvcihlPXRoaXMuX21hcEhlYWQ7bnVsbCE9PWU7ZT1lLl9uZXh0KXQoZSl9Zm9yRWFjaFByZXZpb3VzSXRlbSh0KXtsZXQgZTtmb3IoZT10aGlzLl9wcmV2aW91c01hcEhlYWQ7bnVsbCE9PWU7ZT1lLl9uZXh0UHJldmlvdXMpdChlKX1mb3JFYWNoQ2hhbmdlZEl0ZW0odCl7bGV0IGU7Zm9yKGU9dGhpcy5fY2hhbmdlc0hlYWQ7bnVsbCE9PWU7ZT1lLl9uZXh0Q2hhbmdlZCl0KGUpfWZvckVhY2hBZGRlZEl0ZW0odCl7bGV0IGU7Zm9yKGU9dGhpcy5fYWRkaXRpb25zSGVhZDtudWxsIT09ZTtlPWUuX25leHRBZGRlZCl0KGUpfWZvckVhY2hSZW1vdmVkSXRlbSh0KXtsZXQgZTtmb3IoZT10aGlzLl9yZW1vdmFsc0hlYWQ7bnVsbCE9PWU7ZT1lLl9uZXh0UmVtb3ZlZCl0KGUpfWRpZmYodCl7aWYodCl7aWYoISh0IGluc3RhbmNlb2YgTWFwfHxwbSh0KSkpdGhyb3cgbmV3IEVycm9yKGBFcnJvciB0cnlpbmcgdG8gZGlmZiAnJHtLZSh0KX0nLiBPbmx5IG1hcHMgYW5kIG9iamVjdHMgYXJlIGFsbG93ZWRgKX1lbHNlIHQ9bmV3IE1hcDtyZXR1cm4gdGhpcy5jaGVjayh0KT90aGlzOm51bGx9b25EZXN0cm95KCl7fWNoZWNrKHQpe3RoaXMuX3Jlc2V0KCk7bGV0IGU9dGhpcy5fbWFwSGVhZDtpZih0aGlzLl9hcHBlbmRBZnRlcj1udWxsLHRoaXMuX2ZvckVhY2godCwoKHQsbik9PntpZihlJiZlLmtleT09PW4pdGhpcy5fbWF5YmVBZGRUb0NoYW5nZXMoZSx0KSx0aGlzLl9hcHBlbmRBZnRlcj1lLGU9ZS5fbmV4dDtlbHNle2NvbnN0IG89dGhpcy5fZ2V0T3JDcmVhdGVSZWNvcmRGb3JLZXkobix0KTtlPXRoaXMuX2luc2VydEJlZm9yZU9yQXBwZW5kKGUsbyl9fSkpLGUpe2UuX3ByZXYmJihlLl9wcmV2Ll9uZXh0PW51bGwpLHRoaXMuX3JlbW92YWxzSGVhZD1lO2ZvcihsZXQgdD1lO251bGwhPT10O3Q9dC5fbmV4dFJlbW92ZWQpdD09PXRoaXMuX21hcEhlYWQmJih0aGlzLl9tYXBIZWFkPW51bGwpLHRoaXMuX3JlY29yZHMuZGVsZXRlKHQua2V5KSx0Ll9uZXh0UmVtb3ZlZD10Ll9uZXh0LHQucHJldmlvdXNWYWx1ZT10LmN1cnJlbnRWYWx1ZSx0LmN1cnJlbnRWYWx1ZT1udWxsLHQuX3ByZXY9bnVsbCx0Ll9uZXh0PW51bGx9cmV0dXJuIHRoaXMuX2NoYW5nZXNUYWlsJiYodGhpcy5fY2hhbmdlc1RhaWwuX25leHRDaGFuZ2VkPW51bGwpLHRoaXMuX2FkZGl0aW9uc1RhaWwmJih0aGlzLl9hZGRpdGlvbnNUYWlsLl9uZXh0QWRkZWQ9bnVsbCksdGhpcy5pc0RpcnR5fV9pbnNlcnRCZWZvcmVPckFwcGVuZCh0LGUpe2lmKHQpe2NvbnN0IG49dC5fcHJldjtyZXR1cm4gZS5fbmV4dD10LGUuX3ByZXY9bix0Ll9wcmV2PWUsbiYmKG4uX25leHQ9ZSksdD09PXRoaXMuX21hcEhlYWQmJih0aGlzLl9tYXBIZWFkPWUpLHRoaXMuX2FwcGVuZEFmdGVyPXQsdH1yZXR1cm4gdGhpcy5fYXBwZW5kQWZ0ZXI/KHRoaXMuX2FwcGVuZEFmdGVyLl9uZXh0PWUsZS5fcHJldj10aGlzLl9hcHBlbmRBZnRlcik6dGhpcy5fbWFwSGVhZD1lLHRoaXMuX2FwcGVuZEFmdGVyPWUsbnVsbH1fZ2V0T3JDcmVhdGVSZWNvcmRGb3JLZXkodCxlKXtpZih0aGlzLl9yZWNvcmRzLmhhcyh0KSl7Y29uc3Qgbj10aGlzLl9yZWNvcmRzLmdldCh0KTt0aGlzLl9tYXliZUFkZFRvQ2hhbmdlcyhuLGUpO2NvbnN0IG89bi5fcHJldixpPW4uX25leHQ7cmV0dXJuIG8mJihvLl9uZXh0PWkpLGkmJihpLl9wcmV2PW8pLG4uX25leHQ9bnVsbCxuLl9wcmV2PW51bGwsbn1jb25zdCBuPW5ldyB1Yih0KTtyZXR1cm4gdGhpcy5fcmVjb3Jkcy5zZXQodCxuKSxuLmN1cnJlbnRWYWx1ZT1lLHRoaXMuX2FkZFRvQWRkaXRpb25zKG4pLG59X3Jlc2V0KCl7aWYodGhpcy5pc0RpcnR5KXtsZXQgdDtmb3IodGhpcy5fcHJldmlvdXNNYXBIZWFkPXRoaXMuX21hcEhlYWQsdD10aGlzLl9wcmV2aW91c01hcEhlYWQ7bnVsbCE9PXQ7dD10Ll9uZXh0KXQuX25leHRQcmV2aW91cz10Ll9uZXh0O2Zvcih0PXRoaXMuX2NoYW5nZXNIZWFkO251bGwhPT10O3Q9dC5fbmV4dENoYW5nZWQpdC5wcmV2aW91c1ZhbHVlPXQuY3VycmVudFZhbHVlO2Zvcih0PXRoaXMuX2FkZGl0aW9uc0hlYWQ7bnVsbCE9dDt0PXQuX25leHRBZGRlZCl0LnByZXZpb3VzVmFsdWU9dC5jdXJyZW50VmFsdWU7dGhpcy5fY2hhbmdlc0hlYWQ9dGhpcy5fY2hhbmdlc1RhaWw9bnVsbCx0aGlzLl9hZGRpdGlvbnNIZWFkPXRoaXMuX2FkZGl0aW9uc1RhaWw9bnVsbCx0aGlzLl9yZW1vdmFsc0hlYWQ9bnVsbH19X21heWJlQWRkVG9DaGFuZ2VzKHQsZSl7T2JqZWN0LmlzKGUsdC5jdXJyZW50VmFsdWUpfHwodC5wcmV2aW91c1ZhbHVlPXQuY3VycmVudFZhbHVlLHQuY3VycmVudFZhbHVlPWUsdGhpcy5fYWRkVG9DaGFuZ2VzKHQpKX1fYWRkVG9BZGRpdGlvbnModCl7bnVsbD09PXRoaXMuX2FkZGl0aW9uc0hlYWQ/dGhpcy5fYWRkaXRpb25zSGVhZD10aGlzLl9hZGRpdGlvbnNUYWlsPXQ6KHRoaXMuX2FkZGl0aW9uc1RhaWwuX25leHRBZGRlZD10LHRoaXMuX2FkZGl0aW9uc1RhaWw9dCl9X2FkZFRvQ2hhbmdlcyh0KXtudWxsPT09dGhpcy5fY2hhbmdlc0hlYWQ/dGhpcy5fY2hhbmdlc0hlYWQ9dGhpcy5fY2hhbmdlc1RhaWw9dDoodGhpcy5fY2hhbmdlc1RhaWwuX25leHRDaGFuZ2VkPXQsdGhpcy5fY2hhbmdlc1RhaWw9dCl9X2ZvckVhY2godCxlKXt0IGluc3RhbmNlb2YgTWFwP3QuZm9yRWFjaChlKTpPYmplY3Qua2V5cyh0KS5mb3JFYWNoKChuPT5lKHRbbl0sbikpKX19Y2xhc3MgdWJ7Y29uc3RydWN0b3IodCl7dGhpcy5rZXk9dCx0aGlzLnByZXZpb3VzVmFsdWU9bnVsbCx0aGlzLmN1cnJlbnRWYWx1ZT1udWxsLHRoaXMuX25leHRQcmV2aW91cz1udWxsLHRoaXMuX25leHQ9bnVsbCx0aGlzLl9wcmV2PW51bGwsdGhpcy5fbmV4dEFkZGVkPW51bGwsdGhpcy5fbmV4dFJlbW92ZWQ9bnVsbCx0aGlzLl9uZXh0Q2hhbmdlZD1udWxsfX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovZnVuY3Rpb24gZ2IoKXtyZXR1cm4gbmV3IGhiKFtuZXcgYWJdKX1jbGFzcyBoYntjb25zdHJ1Y3Rvcih0KXt0aGlzLmZhY3Rvcmllcz10fXN0YXRpYyBjcmVhdGUodCxlKXtpZihudWxsIT1lKXtjb25zdCBuPWUuZmFjdG9yaWVzLnNsaWNlKCk7dD10LmNvbmNhdChuKX1yZXR1cm4gbmV3IGhiKHQpfXN0YXRpYyBleHRlbmQodCl7cmV0dXJue3Byb3ZpZGU6aGIsdXNlRmFjdG9yeTplPT5oYi5jcmVhdGUodCxlfHxnYigpKSxkZXBzOltbaGIsbmV3IGpyLG5ldyBCcl1dfX1maW5kKHQpe2NvbnN0IGU9dGhpcy5mYWN0b3JpZXMuZmluZCgoZT0+ZS5zdXBwb3J0cyh0KSkpO2lmKG51bGwhPWUpcmV0dXJuIGU7dGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgZmluZCBhIGRpZmZlciBzdXBwb3J0aW5nIG9iamVjdCAnJHt0fScgb2YgdHlwZSAnJHsoZnVuY3Rpb24gbih0KXtyZXR1cm4gdC5uYW1lfHx0eXBlb2YgdH0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovKSh0KX0nYCl9fWZ1bmN0aW9uIGJiKCl7cmV0dXJuIG5ldyB5YihbbmV3IG1iXSl9aGIuybVwcm92PVNuKHt0b2tlbjpoYixwcm92aWRlZEluOiJyb290IixmYWN0b3J5OmdifSk7Y2xhc3MgeWJ7Y29uc3RydWN0b3IodCl7dGhpcy5mYWN0b3JpZXM9dH1zdGF0aWMgY3JlYXRlKHQsZSl7aWYoZSl7Y29uc3Qgbj1lLmZhY3Rvcmllcy5zbGljZSgpO3Q9dC5jb25jYXQobil9cmV0dXJuIG5ldyB5Yih0KX1zdGF0aWMgZXh0ZW5kKHQpe3JldHVybntwcm92aWRlOnliLHVzZUZhY3Rvcnk6ZT0+eWIuY3JlYXRlKHQsZXx8YmIoKSksZGVwczpbW3liLG5ldyBqcixuZXcgQnJdXX19ZmluZCh0KXtjb25zdCBlPXRoaXMuZmFjdG9yaWVzLmZpbmQoKGU9PmUuc3VwcG9ydHModCkpKTtpZihlKXJldHVybiBlO3Rocm93IG5ldyBFcnJvcihgQ2Fubm90IGZpbmQgYSBkaWZmZXIgc3VwcG9ydGluZyBvYmplY3QgJyR7dH0nYCl9fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KZnVuY3Rpb24gX2IodCxlLG4sbyxpPSExKXtmb3IoO251bGwhPT1uOyl7bmdEZXZNb2RlJiZnYShuLDYzKTtjb25zdCBhPWVbbi5pbmRleF07aWYobnVsbCE9PWEmJm8ucHVzaChsaShhKSksd28oYSkpZm9yKGxldCB0PU9vO3Q8YS5sZW5ndGg7dCsrKXtjb25zdCBlPWFbdF0sbj1lWzFdLmZpcnN0Q2hpbGQ7bnVsbCE9PW4mJl9iKGVbMV0sZSxuLG8pfWNvbnN0IHI9bi50eXBlO2lmKDgmcilfYih0LGUsbi5jaGlsZCxvKTtlbHNlIGlmKDMyJnIpe2NvbnN0IHQ9VGwobixlKTtsZXQgaTtmb3IoO2k9dCgpOylvLnB1c2goaSl9ZWxzZSBpZigxNiZyKXtjb25zdCB0PWxjKGUsbik7aWYoQXJyYXkuaXNBcnJheSh0KSlvLnB1c2goLi4udCk7ZWxzZXtjb25zdCBuPU5sKGVbMTZdKTtuZ0Rldk1vZGUmJlVvKG4pLF9iKG5bMV0sbix0LG8sITApfX1uPWk/bi5wcm9qZWN0aW9uTmV4dDpuLm5leHR9cmV0dXJuIG99Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL3liLsm1cHJvdj1Tbih7dG9rZW46eWIscHJvdmlkZWRJbjoicm9vdCIsZmFjdG9yeTpiYn0pO2NsYXNzIENie2NvbnN0cnVjdG9yKHQsZSl7dGhpcy5fbFZpZXc9dCx0aGlzLl9jZFJlZkluamVjdGluZ1ZpZXc9ZSx0aGlzLl9hcHBSZWY9bnVsbCx0aGlzLl9hdHRhY2hlZFRvVmlld0NvbnRhaW5lcj0hMX1nZXQgcm9vdE5vZGVzKCl7Y29uc3QgdD10aGlzLl9sVmlldyxlPXRbMV07cmV0dXJuIF9iKGUsdCxlLmZpcnN0Q2hpbGQsW10pfWdldCBjb250ZXh0KCl7cmV0dXJuIHRoaXMuX2xWaWV3WzhdfXNldCBjb250ZXh0KHQpe3RoaXMuX2xWaWV3WzhdPXR9Z2V0IGRlc3Ryb3llZCgpe3JldHVybiAyNTY9PSgyNTYmdGhpcy5fbFZpZXdbMl0pfWRlc3Ryb3koKXtpZih0aGlzLl9hcHBSZWYpdGhpcy5fYXBwUmVmLmRldGFjaFZpZXcodGhpcyk7ZWxzZSBpZih0aGlzLl9hdHRhY2hlZFRvVmlld0NvbnRhaW5lcil7Y29uc3QgdD10aGlzLl9sVmlld1szXTtpZih3byh0KSl7Y29uc3QgZT10WzhdLG49ZT9lLmluZGV4T2YodGhpcyk6LTE7bj4tMSYmKG5nRGV2TW9kZSYmZ24obix0LmluZGV4T2YodGhpcy5fbFZpZXcpLU9vLCJBbiBhdHRhY2hlZCB2aWV3IHNob3VsZCBiZSBpbiB0aGUgc2FtZSBwb3NpdGlvbiB3aXRoaW4gaXRzIGNvbnRhaW5lciBhcyBpdHMgVmlld1JlZiBpbiB0aGUgVklFV19SRUZTIGFycmF5LiIpLFlsKHQsbiksdXIoZSxuKSl9dGhpcy5fYXR0YWNoZWRUb1ZpZXdDb250YWluZXI9ITF9cWwodGhpcy5fbFZpZXdbMV0sdGhpcy5fbFZpZXcpfW9uRGVzdHJveSh0KXtUZCh0aGlzLl9sVmlld1sxXSx0aGlzLl9sVmlldyxudWxsLHQpfW1hcmtGb3JDaGVjaygpe29wKHRoaXMuX2NkUmVmSW5qZWN0aW5nVmlld3x8dGhpcy5fbFZpZXcpfWRldGFjaCgpe3RoaXMuX2xWaWV3WzJdJj0tMTI5fXJlYXR0YWNoKCl7dGhpcy5fbFZpZXdbMl18PTEyOH1kZXRlY3RDaGFuZ2VzKCl7YXAodGhpcy5fbFZpZXdbMV0sdGhpcy5fbFZpZXcsdGhpcy5jb250ZXh0KX1jaGVja05vQ2hhbmdlcygpeyEoZnVuY3Rpb24gdChlLG4sbyl7VGkoITApO3RyeXthcChlLG4sbyl9ZmluYWxseXtUaSghMSl9fSkodGhpcy5fbFZpZXdbMV0sdGhpcy5fbFZpZXcsdGhpcy5jb250ZXh0KX1hdHRhY2hUb1ZpZXdDb250YWluZXJSZWYoKXtpZih0aGlzLl9hcHBSZWYpdGhyb3cgbmV3IEVycm9yKCJUaGlzIHZpZXcgaXMgYWxyZWFkeSBhdHRhY2hlZCBkaXJlY3RseSB0byB0aGUgQXBwbGljYXRpb25SZWYhIik7dGhpcy5fYXR0YWNoZWRUb1ZpZXdDb250YWluZXI9ITB9ZGV0YWNoRnJvbUFwcFJlZigpe3RoaXMuX2FwcFJlZj1udWxsLChmdW5jdGlvbiB0KGUsbil7bWMoZSxuLG5bMTFdLDIsbnVsbCxudWxsKX0pKHRoaXMuX2xWaWV3WzFdLHRoaXMuX2xWaWV3KX1hdHRhY2hUb0FwcFJlZih0KXtpZih0aGlzLl9hdHRhY2hlZFRvVmlld0NvbnRhaW5lcil0aHJvdyBuZXcgRXJyb3IoIlRoaXMgdmlldyBpcyBhbHJlYWR5IGF0dGFjaGVkIHRvIGEgVmlld0NvbnRhaW5lciEiKTt0aGlzLl9hcHBSZWY9dH19Y2xhc3MgTWIgZXh0ZW5kcyBDYntjb25zdHJ1Y3Rvcih0KXtzdXBlcih0KSx0aGlzLl92aWV3PXR9ZGV0ZWN0Q2hhbmdlcygpe3JwKHRoaXMuX3ZpZXcpfWNoZWNrTm9DaGFuZ2VzKCl7IShmdW5jdGlvbiB0KGUpe1RpKCEwKTt0cnl7cnAoZSl9ZmluYWxseXtUaSghMSl9fSkodGhpcy5fdmlldyl9Z2V0IGNvbnRleHQoKXtyZXR1cm4gbnVsbH19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NvbnN0IHZiPWZ1bmN0aW9uIHhiKHQpe3JldHVybihmdW5jdGlvbiBlKHQsbixvKXtpZihTbyh0KSYmIW8pe2NvbnN0IGU9ZmkodC5pbmRleCxuKTtyZXR1cm4gbmV3IENiKGUsZSl9aWYoNDcmdC50eXBlKXtyZXR1cm4gbmV3IENiKG5bMTZdLG4pfXJldHVybiBudWxsfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8pKHdpKCkseGkoKSwxNj09KDE2JnQpKX07Y2xhc3MgT2J7fU9iLl9fTkdfRUxFTUVOVF9JRF9fPXZiO2NvbnN0IFBiPVtuZXcgbWJdLHdiPVtuZXcgYWJdLGtiPW5ldyBoYih3YiksU2I9bmV3IHliKFBiKSxEYj1mdW5jdGlvbiBSYigpe3JldHVybiBOYih3aSgpLHhpKCkpfTtjbGFzcyBFYnt9RWIuX19OR19FTEVNRU5UX0lEX189RGI7Y29uc3QgQWI9RWIsVGI9Y2xhc3MgZXh0ZW5kcyBBYntjb25zdHJ1Y3Rvcih0LGUsbil7c3VwZXIoKSx0aGlzLl9kZWNsYXJhdGlvbkxWaWV3PXQsdGhpcy5fZGVjbGFyYXRpb25UQ29udGFpbmVyPWUsdGhpcy5lbGVtZW50UmVmPW59Y3JlYXRlRW1iZWRkZWRWaWV3KHQpe2NvbnN0IGU9dGhpcy5fZGVjbGFyYXRpb25UQ29udGFpbmVyLnRWaWV3cyxuPXlkKHRoaXMuX2RlY2xhcmF0aW9uTFZpZXcsZSx0LDE2LG51bGwsZS5kZWNsVE5vZGUsbnVsbCxudWxsLG51bGwsbnVsbCksbz10aGlzLl9kZWNsYXJhdGlvbkxWaWV3W3RoaXMuX2RlY2xhcmF0aW9uVENvbnRhaW5lci5pbmRleF07bmdEZXZNb2RlJiZJbyhvKSxuWzE3XT1vO2NvbnN0IGk9dGhpcy5fZGVjbGFyYXRpb25MVmlld1sxOV07cmV0dXJuIG51bGwhPT1pJiYoblsxOV09aS5jcmVhdGVFbWJlZGRlZFZpZXcoZSkpLHZkKGUsbix0KSxuZXcgQ2Iobil9fTtmdW5jdGlvbiBOYih0LGUpe3JldHVybiA0JnQudHlwZT8obmdEZXZNb2RlJiZ4bih0LnRWaWV3cywiVFZpZXcgbXVzdCBiZSBhbGxvY2F0ZWQiKSxuZXcgVGIoZSx0LHFoKHQsZSkpKTpudWxsfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jbGFzcyB6Ynt9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjb25zdCBJYj1mdW5jdGlvbiBIYigpe3JldHVybiBVYih3aSgpLHhpKCkpfTtjbGFzcyBGYnt9RmIuX19OR19FTEVNRU5UX0lEX189SWI7Y29uc3QgTGI9RmIsQmI9Y2xhc3MgZXh0ZW5kcyBMYntjb25zdHJ1Y3Rvcih0LGUsbil7c3VwZXIoKSx0aGlzLl9sQ29udGFpbmVyPXQsdGhpcy5faG9zdFROb2RlPWUsdGhpcy5faG9zdExWaWV3PW59Z2V0IGVsZW1lbnQoKXtyZXR1cm4gcWgodGhpcy5faG9zdFROb2RlLHRoaXMuX2hvc3RMVmlldyl9Z2V0IGluamVjdG9yKCl7cmV0dXJuIG5ldyBqYSh0aGlzLl9ob3N0VE5vZGUsdGhpcy5faG9zdExWaWV3KX1nZXQgcGFyZW50SW5qZWN0b3IoKXtjb25zdCB0PVJhKHRoaXMuX2hvc3RUTm9kZSx0aGlzLl9ob3N0TFZpZXcpO2lmKE1hKHQpKXtjb25zdCBlPXhhKHQsdGhpcy5faG9zdExWaWV3KSxuPXZhKHQpO25nRGV2TW9kZSYmV28oZSxuKTtyZXR1cm4gbmV3IGphKGVbMV0uZGF0YVtuKzhdLGUpfXJldHVybiBuZXcgamEobnVsbCx0aGlzLl9ob3N0TFZpZXcpfWNsZWFyKCl7Zm9yKDt0aGlzLmxlbmd0aD4wOyl0aGlzLnJlbW92ZSh0aGlzLmxlbmd0aC0xKX1nZXQodCl7Y29uc3QgZT1WYih0aGlzLl9sQ29udGFpbmVyKTtyZXR1cm4gbnVsbCE9PWUmJmVbdF18fG51bGx9Z2V0IGxlbmd0aCgpe3JldHVybiB0aGlzLl9sQ29udGFpbmVyLmxlbmd0aC1Pb31jcmVhdGVFbWJlZGRlZFZpZXcodCxlLG4pe2NvbnN0IG89dC5jcmVhdGVFbWJlZGRlZFZpZXcoZXx8e30pO3JldHVybiB0aGlzLmluc2VydChvLG4pLG99Y3JlYXRlQ29tcG9uZW50KHQsZSxuLG8saSl7Y29uc3QgYT1ufHx0aGlzLnBhcmVudEluamVjdG9yO2lmKCFpJiZudWxsPT10Lm5nTW9kdWxlJiZhKXtjb25zdCB0PWEuZ2V0KHpiLG51bGwpO3QmJihpPXQpfWNvbnN0IHI9dC5jcmVhdGUoYSxvLHZvaWQgMCxpKTtyZXR1cm4gdGhpcy5pbnNlcnQoci5ob3N0VmlldyxlKSxyfWluc2VydCh0LGUpe2NvbnN0IG49dC5fbFZpZXcsbz1uWzFdO2lmKG5nRGV2TW9kZSYmdC5kZXN0cm95ZWQpdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgaW5zZXJ0IGEgZGVzdHJveWVkIFZpZXcgaW4gYSBWaWV3Q29udGFpbmVyISIpO2lmKChmdW5jdGlvbiBpKHQpe3JldHVybiB3byh0WzNdKX0pKG4pKXtjb25zdCBlPXRoaXMuaW5kZXhPZih0KTtpZigtMSE9PWUpdGhpcy5kZXRhY2goZSk7ZWxzZXtjb25zdCBlPW5bM107bmdEZXZNb2RlJiZnbih3byhlKSwhMCwiQW4gYXR0YWNoZWQgdmlldyBzaG91bGQgaGF2ZSBpdHMgUEFSRU5UIHBvaW50IHRvIGEgY29udGFpbmVyLiIpO2NvbnN0IG89bmV3IEJiKGUsZVs2XSxlWzNdKTtvLmRldGFjaChvLmluZGV4T2YodCkpfX1jb25zdCBhPXRoaXMuX2FkanVzdEluZGV4KGUpLHI9dGhpcy5fbENvbnRhaW5lcjtXbChvLG4scixhKTtjb25zdCBzPWNjKGEsciksbD1uWzExXSxjPXRjKGwscls3XSk7cmV0dXJuIG51bGwhPT1jJiYoZnVuY3Rpb24gZCh0LGUsbixvLGksYSl7b1swXT1pLG9bNl09ZSxtYyh0LG8sbiwxLGksYSl9KShvLHJbNl0sbCxuLGMscyksdC5hdHRhY2hUb1ZpZXdDb250YWluZXJSZWYoKSxmcihqYihyKSxhLHQpLHR9bW92ZSh0LGUpe2lmKG5nRGV2TW9kZSYmdC5kZXN0cm95ZWQpdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgbW92ZSBhIGRlc3Ryb3llZCBWaWV3IGluIGEgVmlld0NvbnRhaW5lciEiKTtyZXR1cm4gdGhpcy5pbnNlcnQodCxlKX1pbmRleE9mKHQpe2NvbnN0IGU9VmIodGhpcy5fbENvbnRhaW5lcik7cmV0dXJuIG51bGwhPT1lP2UuaW5kZXhPZih0KTotMX1yZW1vdmUodCl7Y29uc3QgZT10aGlzLl9hZGp1c3RJbmRleCh0LC0xKSxuPVlsKHRoaXMuX2xDb250YWluZXIsZSk7biYmKHVyKGpiKHRoaXMuX2xDb250YWluZXIpLGUpLHFsKG5bMV0sbikpfWRldGFjaCh0KXtjb25zdCBlPXRoaXMuX2FkanVzdEluZGV4KHQsLTEpLG49WWwodGhpcy5fbENvbnRhaW5lcixlKTtyZXR1cm4gbiYmbnVsbCE9dXIoamIodGhpcy5fbENvbnRhaW5lciksZSk/bmV3IENiKG4pOm51bGx9X2FkanVzdEluZGV4KHQsZT0wKXtyZXR1cm4gbnVsbD09dD90aGlzLmxlbmd0aCtlOihuZ0Rldk1vZGUmJihNbih0LC0xLGBWaWV3UmVmIGluZGV4IG11c3QgYmUgcG9zaXRpdmUsIGdvdCAke3R9YCksX24odCx0aGlzLmxlbmd0aCsxK2UsImluZGV4IikpLHQpfX07ZnVuY3Rpb24gVmIodCl7cmV0dXJuIHRbOF19ZnVuY3Rpb24gamIodCl7cmV0dXJuIHRbOF18fCh0WzhdPVtdKX1mdW5jdGlvbiBVYih0LGUpe2xldCBuO25nRGV2TW9kZSYmZ2EodCwxNSk7Y29uc3Qgbz1lW3QuaW5kZXhdO2lmKHdvKG8pKW49bztlbHNle2xldCBpO2lmKDgmdC50eXBlKWk9bGkobyk7ZWxzZXtjb25zdCBuPWVbMTFdO25nRGV2TW9kZSYmbmdEZXZNb2RlLnJlbmRlcmVyQ3JlYXRlQ29tbWVudCsrLGk9bi5jcmVhdGVDb21tZW50KG5nRGV2TW9kZT8iY29udGFpbmVyIjoiIik7Y29uc3Qgbz1kaSh0LGUpO0psKG4sdGMobixvKSxpLChmdW5jdGlvbiBpKHQsZSl7cmV0dXJuIHJpKHQpP3QubmV4dFNpYmxpbmcoZSk6ZS5uZXh0U2libGluZ30pKG4sbyksITEpfWVbdC5pbmRleF09bj1RZChvLGUsaSx0KSxucChlLG4pfXJldHVybiBuZXcgQmIobix0LGUpfWNvbnN0IFdiPW5ldyBNYXA7ZnVuY3Rpb24gR2IodCl7bGV0IGU9V2IuZ2V0KHQpO3JldHVybiBlfHwoZT1LZSh0KSsiXyIrV2Iuc2l6ZSxXYi5zZXQodCxlKSksZX1HYihOcCksR2IoeXApLEdiKHpiKSwKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCkdiKCRoKSxHYihLaCksR2IoRmIpLEdiKEViKSxHYihPYiksR2IoTnApLEdiKHlwKTtjb25zdCBZYj17fTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY2xhc3MgcWIgZXh0ZW5kcyBHaHtjb25zdHJ1Y3Rvcih0KXtzdXBlcigpLHRoaXMubmdNb2R1bGU9dH1yZXNvbHZlQ29tcG9uZW50RmFjdG9yeSh0KXtuZ0Rldk1vZGUmJihmdW5jdGlvbiBlKHQsbj0iVHlwZSBwYXNzZWQgaW4gaXMgbm90IENvbXBvbmVudFR5cGUsIGl0IGRvZXMgbm90IGhhdmUgJ8m1Y21wJyBwcm9wZXJ0eS4iKXt5byh0KXx8T24obil9KSh0KTtjb25zdCBuPXlvKHQpO3JldHVybiBuZXcgS2Iobix0aGlzLm5nTW9kdWxlKX19ZnVuY3Rpb24gWmIodCl7Y29uc3QgZT1bXTtmb3IobGV0IG4gaW4gdClpZih0Lmhhc093blByb3BlcnR5KG4pKXtlLnB1c2goe3Byb3BOYW1lOnRbbl0sdGVtcGxhdGVOYW1lOm59KX1yZXR1cm4gZX1jb25zdCBYYj1uZXcgZXIoIlNDSEVEVUxFUl9UT0tFTiIse3Byb3ZpZGVkSW46InJvb3QiLGZhY3Rvcnk6KCk9PnhsfSk7Y2xhc3MgS2IgZXh0ZW5kcyBVaHtjb25zdHJ1Y3Rvcih0LGUpe3N1cGVyKCksdGhpcy5jb21wb25lbnREZWY9dCx0aGlzLm5nTW9kdWxlPWUsdGhpcy5jb21wb25lbnRUeXBlPXQudHlwZSx0aGlzLnNlbGVjdG9yPShmdW5jdGlvbiBuKHQpe3JldHVybiB0Lm1hcChrYykuam9pbigiLCIpfSkodC5zZWxlY3RvcnMpLHRoaXMubmdDb250ZW50U2VsZWN0b3JzPXQubmdDb250ZW50U2VsZWN0b3JzP3QubmdDb250ZW50U2VsZWN0b3JzOltdLHRoaXMuaXNCb3VuZFRvTW9kdWxlPSEhZX1nZXQgaW5wdXRzKCl7cmV0dXJuIFpiKHRoaXMuY29tcG9uZW50RGVmLmlucHV0cyl9Z2V0IG91dHB1dHMoKXtyZXR1cm4gWmIodGhpcy5jb21wb25lbnREZWYub3V0cHV0cyl9Y3JlYXRlKHQsZSxuLG8pe2NvbnN0IGk9KG89b3x8dGhpcy5uZ01vZHVsZSk/KGZ1bmN0aW9uIGEodCxlKXtyZXR1cm57Z2V0OihuLG8saSk9Pntjb25zdCBhPXQuZ2V0KG4sWWIsaSk7cmV0dXJuIGEhPT1ZYnx8bz09PVliP2E6ZS5nZXQobixvLGkpfX19KSh0LG8uaW5qZWN0b3IpOnQscj1pLmdldChRaCxzaSkscz1pLmdldChuYixudWxsKSxsPXIuY3JlYXRlUmVuZGVyZXIobnVsbCx0aGlzLmNvbXBvbmVudERlZiksYz10aGlzLmNvbXBvbmVudERlZi5zZWxlY3RvcnNbMF1bMF18fCJkaXYiLGQ9bj9BZChsLG4sdGhpcy5jb21wb25lbnREZWYuZW5jYXBzdWxhdGlvbik6VWwoci5jcmVhdGVSZW5kZXJlcihudWxsLHRoaXMuY29tcG9uZW50RGVmKSxjLChmdW5jdGlvbiBwKHQpe2NvbnN0IGU9dC50b0xvd2VyQ2FzZSgpO3JldHVybiJzdmciPT09ZT9laToibWF0aCI9PT1lP25pOm51bGx9KShjKSksbT10aGlzLmNvbXBvbmVudERlZi5vblB1c2g/NTc2OjUyOCxmPShmdW5jdGlvbiB1KHQsZSl7cmV0dXJue2NvbXBvbmVudHM6W10sc2NoZWR1bGVyOnR8fHhsLGNsZWFuOmNwLHBsYXllckhhbmRsZXI6ZXx8bnVsbCxmbGFnczowfX0pKCksZz1SZCgwLG51bGwsbnVsbCwxLDAsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsKSxoPXlkKG51bGwsZyxmLG0sbnVsbCxudWxsLHIsbCxzLGkpO2xldCBiLHk7cWkoaCk7dHJ5e2NvbnN0IHQ9KGZ1bmN0aW9uIG8odCxlLG4saSxhLHIpe2NvbnN0IHM9blsxXTtuZ0Rldk1vZGUmJnduKG4sMjApLG5bMjBdPXQ7Y29uc3QgbD1fZChzLDIwLDIsIiNob3N0IixudWxsKSxjPWwubWVyZ2VkQXR0cnM9ZS5ob3N0QXR0cnM7bnVsbCE9PWMmJihocChsLGMsITApLG51bGwhPT10JiYoaGEoYSx0LGMpLG51bGwhPT1sLmNsYXNzZXMmJmdjKGEsdCxsLmNsYXNzZXMpLG51bGwhPT1sLnN0eWxlcyYmdWMoYSx0LGwuc3R5bGVzKSkpO2NvbnN0IGQ9aS5jcmVhdGVSZW5kZXJlcih0LGUpLHA9eWQobixEZChlKSxudWxsLGUub25QdXNoPzY0OjE2LG5bMjBdLGwsaSxkLHJ8fG51bGwsbnVsbCk7cmV0dXJuIHMuZmlyc3RDcmVhdGVQYXNzJiYoRWEoa2EobCxuKSxzLGUudHlwZSksamQocyxsKSxXZChsLG4ubGVuZ3RoLDEpKSxucChuLHApLG5bMjBdPXB9KShkLHRoaXMuY29tcG9uZW50RGVmLGgscixsKTtpZihkKWlmKG4paGEobCxkLFsibmctdmVyc2lvbiIsaWIuZnVsbF0pO2Vsc2V7Y29uc3R7YXR0cnM6dCxjbGFzc2VzOmV9PShmdW5jdGlvbiBuKHQpe2NvbnN0IGU9W10sbj1bXTtsZXQgbz0xLGk9Mjtmb3IoO288dC5sZW5ndGg7KXtsZXQgYT10W29dO2lmKCJzdHJpbmciPT10eXBlb2YgYSkyPT09aT8iIiE9PWEmJmUucHVzaChhLHRbKytvXSk6OD09PWkmJm4ucHVzaChhKTtlbHNle2lmKCF2YyhpKSlicmVhaztpPWF9bysrfXJldHVybnthdHRyczplLGNsYXNzZXM6bn19KSh0aGlzLmNvbXBvbmVudERlZi5zZWxlY3RvcnNbMF0pO3QmJmhhKGwsZCx0KSxlJiZlLmxlbmd0aD4wJiZnYyhsLGQsZS5qb2luKCIgIikpfWlmKHk9cGkoZyx2byksdm9pZCAwIT09ZSl7Y29uc3QgdD15LnByb2plY3Rpb249W107Zm9yKGxldCBuPTA7bjx0aGlzLm5nQ29udGVudFNlbGVjdG9ycy5sZW5ndGg7bisrKXtjb25zdCBvPWVbbl07dC5wdXNoKG51bGwhPW8/QXJyYXkuZnJvbShvKTpudWxsKX19Yj1YcCh0LHRoaXMuY29tcG9uZW50RGVmLGgsZixbS3BdKSx2ZChnLGgsbnVsbCl9ZmluYWxseXtRaSgpfXJldHVybiBuZXcgSmIodGhpcy5jb21wb25lbnRUeXBlLGIscWgoeSxoKSxoLHkpfX1uZXcgcWI7Y2xhc3MgSmIgZXh0ZW5kcyBjbGFzc3t9e2NvbnN0cnVjdG9yKHQsZSxuLG8saSl7c3VwZXIoKSx0aGlzLmxvY2F0aW9uPW4sdGhpcy5fcm9vdExWaWV3PW8sdGhpcy5fdE5vZGU9aSx0aGlzLmluc3RhbmNlPWUsdGhpcy5ob3N0Vmlldz10aGlzLmNoYW5nZURldGVjdG9yUmVmPW5ldyBNYihvKSx0aGlzLmNvbXBvbmVudFR5cGU9dH1nZXQgaW5qZWN0b3IoKXtyZXR1cm4gbmV3IGphKHRoaXMuX3ROb2RlLHRoaXMuX3Jvb3RMVmlldyl9ZGVzdHJveSgpe3RoaXMuaG9zdFZpZXcuZGVzdHJveSgpfW9uRGVzdHJveSh0KXt0aGlzLmhvc3RWaWV3Lm9uRGVzdHJveSh0KX19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2Z1bmN0aW9uIFFiKHQsZSxuLG8pe3JldHVybiBWbigoKCk9Pntjb25zdCBpPXQ7bnVsbCE9PWUmJihpLmhhc093blByb3BlcnR5KCJkZWNvcmF0b3JzIikmJnZvaWQgMCE9PWkuZGVjb3JhdG9ycz9pLmRlY29yYXRvcnMucHVzaCguLi5lKTppLmRlY29yYXRvcnM9ZSksbnVsbCE9PW4mJihpLmN0b3JQYXJhbWV0ZXJzPW4pLG51bGwhPT1vJiYoaS5wcm9wRGVjb3JhdG9ycz1pLmhhc093blByb3BlcnR5KCJwcm9wRGVjb3JhdG9ycyIpJiZ2b2lkIDAhPT1pLnByb3BEZWNvcmF0b3JzP09iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxpLnByb3BEZWNvcmF0b3JzKSxvKTpvKX0pKX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY29uc3QgJGI9bmV3IE1hcDtmdW5jdGlvbiB0eSh0KXtjb25zdCBlPW5ldyBTZXQ7IShmdW5jdGlvbiB0KG4pe2NvbnN0IG89TW8obiwhMCksaT1vLmlkO2lmKG51bGwhPT1pKXtjb25zdCB0PSRiLmdldChpKTshKGZ1bmN0aW9uIGEodCxlLG4pe2lmKGUmJmUhPT1uKXRocm93IG5ldyBFcnJvcihgRHVwbGljYXRlIG1vZHVsZSByZWdpc3RlcmVkIGZvciAke3R9IC0gJHtLZShlKX0gdnMgJHtLZShlLm5hbWUpfWApfSkoaSx0LG4pLCRiLnNldChpLG4pfWNvbnN0IHI9U2woby5pbXBvcnRzKTtmb3IoY29uc3QgbiBvZiByKWUuaGFzKG4pfHwoZS5hZGQobiksdChuKSl9KSh0KX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY2xhc3MgZXkgZXh0ZW5kcyB6Yntjb25zdHJ1Y3Rvcih0LGUpe3N1cGVyKCksdGhpcy5fcGFyZW50PWUsdGhpcy5fYm9vdHN0cmFwQ29tcG9uZW50cz1bXSx0aGlzLmluamVjdG9yPXRoaXMsdGhpcy5kZXN0cm95Q2JzPVtdLHRoaXMuY29tcG9uZW50RmFjdG9yeVJlc29sdmVyPW5ldyBxYih0aGlzKTtjb25zdCBuPU1vKHQpO25nRGV2TW9kZSYmeG4obixgTmdNb2R1bGUgJyR7S2UodCl9JyBpcyBub3QgYSBzdWJ0eXBlIG9mICdOZ01vZHVsZVR5cGUnLmApO2NvbnN0IG89KGZ1bmN0aW9uIGkodCl7cmV0dXJuIHRbb29dfHxudWxsfSkodCk7byYmUGcobyksdGhpcy5fYm9vdHN0cmFwQ29tcG9uZW50cz1TbChuLmJvb3RzdHJhcCksdGhpcy5fcjNJbmplY3Rvcj1QcCh0LGUsW3twcm92aWRlOnpiLHVzZVZhbHVlOnRoaXN9LHtwcm92aWRlOkdoLHVzZVZhbHVlOnRoaXMuY29tcG9uZW50RmFjdG9yeVJlc29sdmVyfV0sS2UodCkpLHRoaXMuX3IzSW5qZWN0b3IuX3Jlc29sdmVJbmplY3RvckRlZlR5cGVzKCksdGhpcy5pbnN0YW5jZT10aGlzLmdldCh0KX1nZXQodCxlPU5wLlRIUk9XX0lGX05PVF9GT1VORCxuPUhuLkRlZmF1bHQpe3JldHVybiB0PT09TnB8fHQ9PT16Ynx8dD09PXlwP3RoaXM6dGhpcy5fcjNJbmplY3Rvci5nZXQodCxlLG4pfWRlc3Ryb3koKXtuZ0Rldk1vZGUmJnhuKHRoaXMuZGVzdHJveUNicywiTmdNb2R1bGUgYWxyZWFkeSBkZXN0cm95ZWQiKTtjb25zdCB0PXRoaXMuX3IzSW5qZWN0b3I7IXQuZGVzdHJveWVkJiZ0LmRlc3Ryb3koKSx0aGlzLmRlc3Ryb3lDYnMuZm9yRWFjaCgodD0+dCgpKSksdGhpcy5kZXN0cm95Q2JzPW51bGx9b25EZXN0cm95KHQpe25nRGV2TW9kZSYmeG4odGhpcy5kZXN0cm95Q2JzLCJOZ01vZHVsZSBhbHJlYWR5IGRlc3Ryb3llZCIpLHRoaXMuZGVzdHJveUNicy5wdXNoKHQpfX1jbGFzcyBueSBleHRlbmRzIGNsYXNze317Y29uc3RydWN0b3IodCl7c3VwZXIoKSx0aGlzLm1vZHVsZVR5cGU9dDtudWxsIT09TW8odCkmJnR5KHQpfWNyZWF0ZSh0KXtyZXR1cm4gbmV3IGV5KHRoaXMubW9kdWxlVHlwZSx0KX19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2Z1bmN0aW9uIG95KHQsZSxuKXtjb25zdCBvPU5pKCkrdCxpPXhpKCk7cmV0dXJuIGlbb109PT1TYz9tbShpLG8sbj9lLmNhbGwobik6ZSgpKTpmbShpLG8pfWZ1bmN0aW9uIGl5KHQsZSxuLG8pe3JldHVybiB1eSh4aSgpLE5pKCksdCxlLG4sbyl9ZnVuY3Rpb24gYXkodCxlLG4sbyxpKXtyZXR1cm4gZ3koeGkoKSxOaSgpLHQsZSxuLG8saSl9ZnVuY3Rpb24gcnkodCxlLG4sbyxpLGEpe3JldHVybiBoeSh4aSgpLE5pKCksdCxlLG4sbyxpLGEpfWZ1bmN0aW9uIHN5KHQsZSxuLG8saSxhLHIpe3JldHVybiBieSh4aSgpLE5pKCksdCxlLG4sbyxpLGEscil9ZnVuY3Rpb24gbHkodCxlLG4sbyxpLGEscixzKXtjb25zdCBsPU5pKCkrdCxjPXhpKCksZD1ibShjLGwsbixvLGksYSk7cmV0dXJuIHVtKGMsbCs0LHIpfHxkP21tKGMsbCs1LHM/ZS5jYWxsKHMsbixvLGksYSxyKTplKG4sbyxpLGEscikpOmZtKGMsbCs1KX1mdW5jdGlvbiBjeSh0LGUsbixvLGksYSxyLHMsbCl7Y29uc3QgYz1OaSgpK3QsZD14aSgpLHA9Ym0oZCxjLG4sbyxpLGEpO3JldHVybiBnbShkLGMrNCxyLHMpfHxwP21tKGQsYys2LGw/ZS5jYWxsKGwsbixvLGksYSxyLHMpOmUobixvLGksYSxyLHMpKTpmbShkLGMrNil9ZnVuY3Rpb24gZHkodCxlLG4sbyxpLGEscixzLGwsYyl7Y29uc3QgZD1OaSgpK3QscD14aSgpO2xldCBtPWJtKHAsZCxuLG8saSxhKTtyZXR1cm4gaG0ocCxkKzQscixzLGwpfHxtP21tKHAsZCs3LGM/ZS5jYWxsKGMsbixvLGksYSxyLHMsbCk6ZShuLG8saSxhLHIscyxsKSk6Zm0ocCxkKzcpfWZ1bmN0aW9uIHB5KHQsZSxuLG8saSxhLHIscyxsLGMsZCl7Y29uc3QgcD1OaSgpK3QsbT14aSgpLGY9Ym0obSxwLG4sbyxpLGEpO3JldHVybiBibShtLHArNCxyLHMsbCxjKXx8Zj9tbShtLHArOCxkP2UuY2FsbChkLG4sbyxpLGEscixzLGwsYyk6ZShuLG8saSxhLHIscyxsLGMpKTpmbShtLHArOCl9ZnVuY3Rpb24gbXkodCxlLG4sbyl7cmV0dXJuIHl5KHhpKCksTmkoKSx0LGUsbixvKX1mdW5jdGlvbiBmeSh0LGUpe25nRGV2TW9kZSYmd24odCxlKTtjb25zdCBuPXRbZV07cmV0dXJuIG49PT1TYz92b2lkIDA6bn1mdW5jdGlvbiB1eSh0LGUsbixvLGksYSl7Y29uc3Qgcj1lK247cmV0dXJuIHVtKHQscixpKT9tbSh0LHIrMSxhP28uY2FsbChhLGkpOm8oaSkpOmZ5KHQscisxKX1mdW5jdGlvbiBneSh0LGUsbixvLGksYSxyKXtjb25zdCBzPWUrbjtyZXR1cm4gZ20odCxzLGksYSk/bW0odCxzKzIscj9vLmNhbGwocixpLGEpOm8oaSxhKSk6ZnkodCxzKzIpfWZ1bmN0aW9uIGh5KHQsZSxuLG8saSxhLHIscyl7Y29uc3QgbD1lK247cmV0dXJuIGhtKHQsbCxpLGEscik/bW0odCxsKzMscz9vLmNhbGwocyxpLGEscik6byhpLGEscikpOmZ5KHQsbCszKX1mdW5jdGlvbiBieSh0LGUsbixvLGksYSxyLHMsbCl7Y29uc3QgYz1lK247cmV0dXJuIGJtKHQsYyxpLGEscixzKT9tbSh0LGMrNCxsP28uY2FsbChsLGksYSxyLHMpOm8oaSxhLHIscykpOmZ5KHQsYys0KX1mdW5jdGlvbiB5eSh0LGUsbixvLGksYSl7bGV0IHI9ZStuLHM9ITE7Zm9yKGxldCBlPTA7ZTxpLmxlbmd0aDtlKyspdW0odCxyKyssaVtlXSkmJihzPSEwKTtyZXR1cm4gcz9tbSh0LHIsby5hcHBseShhLGkpKTpmeSh0LHIpfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9mdW5jdGlvbiBfeSh0LGUpe2NvbnN0IG49T2koKTtsZXQgbztjb25zdCBpPXQrdm87bi5maXJzdENyZWF0ZVBhc3M/KG89KGZ1bmN0aW9uIGEodCxlKXtpZihlKWZvcihsZXQgbj1lLmxlbmd0aC0xO24+PTA7bi0tKXtjb25zdCBvPWVbbl07aWYodD09PW8ubmFtZSlyZXR1cm4gb310aHJvdyBuZXcgbm4oIjMwMiIsYFRoZSBwaXBlICcke3R9JyBjb3VsZCBub3QgYmUgZm91bmQhYCl9KShlLG4ucGlwZVJlZ2lzdHJ5KSxuLmRhdGFbaV09byxvLm9uRGVzdHJveSYmKG4uZGVzdHJveUhvb2tzfHwobi5kZXN0cm95SG9va3M9W10pKS5wdXNoKGksby5vbkRlc3Ryb3kpKTpvPW4uZGF0YVtpXTtjb25zdCByPW8uZmFjdG9yeXx8KG8uZmFjdG9yeT1HbyhvLnR5cGUsITApKSxzPUxuKGdmKTt0cnl7Y29uc3QgdD1QYSghMSksZT1yKCk7cmV0dXJuIFBhKHQpLChmdW5jdGlvbiBsKHQsZSxuLG8pe24+PXQuZGF0YS5sZW5ndGgmJih0LmRhdGFbbl09bnVsbCx0LmJsdWVwcmludFtuXT1udWxsKSxlW25dPW99KShuLHhpKCksaSxlKSxlfWZpbmFsbHl7TG4ocyl9fWZ1bmN0aW9uIEN5KHQsZSxuKXtjb25zdCBvPXQrdm8saT14aSgpLGE9bWkoaSxvKTtyZXR1cm4gd3koaSxQeShpLG8pP3V5KGksTmkoKSxlLGEudHJhbnNmb3JtLG4sYSk6YS50cmFuc2Zvcm0obikpfWZ1bmN0aW9uIE15KHQsZSxuLG8pe2NvbnN0IGk9dCt2byxhPXhpKCkscj1taShhLGkpO3JldHVybiB3eShhLFB5KGEsaSk/Z3koYSxOaSgpLGUsci50cmFuc2Zvcm0sbixvLHIpOnIudHJhbnNmb3JtKG4sbykpfWZ1bmN0aW9uIHZ5KHQsZSxuLG8saSl7Y29uc3QgYT10K3ZvLHI9eGkoKSxzPW1pKHIsYSk7cmV0dXJuIHd5KHIsUHkocixhKT9oeShyLE5pKCksZSxzLnRyYW5zZm9ybSxuLG8saSxzKTpzLnRyYW5zZm9ybShuLG8saSkpfWZ1bmN0aW9uIHh5KHQsZSxuLG8saSxhKXtjb25zdCByPXQrdm8scz14aSgpLGw9bWkocyxyKTtyZXR1cm4gd3kocyxQeShzLHIpP2J5KHMsTmkoKSxlLGwudHJhbnNmb3JtLG4sbyxpLGEsbCk6bC50cmFuc2Zvcm0obixvLGksYSkpfWZ1bmN0aW9uIE95KHQsZSxuKXtjb25zdCBvPXQrdm8saT14aSgpLGE9bWkoaSxvKTtyZXR1cm4gd3koaSxQeShpLG8pP3l5KGksTmkoKSxlLGEudHJhbnNmb3JtLG4sYSk6YS50cmFuc2Zvcm0uYXBwbHkoYSxuKSl9ZnVuY3Rpb24gUHkodCxlKXtyZXR1cm4gdFsxXS5kYXRhW2VdLnB1cmV9ZnVuY3Rpb24gd3kodCxlKXtpZihjbS5pc1dyYXBwZWQoZSkpe2U9Y20udW53cmFwKGUpO3RbemkoKV09U2N9cmV0dXJuIGV9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2Z1bmN0aW9uIGt5KHQpe3JldHVybiBlPT57c2V0VGltZW91dCh0LHZvaWQgMCxlKX19Y29uc3QgU3k9Y2xhc3MgZXh0ZW5kcyBCe2NvbnN0cnVjdG9yKHQ9ITEpe3N1cGVyKCksdGhpcy5fX2lzQXN5bmM9dH1lbWl0KHQpe3N1cGVyLm5leHQodCl9c3Vic2NyaWJlKHQsZSxuKXt2YXIgbyxpLGE7bGV0IHI9dCxzPWV8fCgoKT0+bnVsbCksbD1uO2lmKHQmJiJvYmplY3QiPT10eXBlb2YgdCl7Y29uc3QgZT10O3I9bnVsbD09PShvPWUubmV4dCl8fHZvaWQgMD09PW8/dm9pZCAwOm8uYmluZChlKSxzPW51bGw9PT0oaT1lLmVycm9yKXx8dm9pZCAwPT09aT92b2lkIDA6aS5iaW5kKGUpLGw9bnVsbD09PShhPWUuY29tcGxldGUpfHx2b2lkIDA9PT1hP3ZvaWQgMDphLmJpbmQoZSl9dGhpcy5fX2lzQXN5bmMmJihzPWt5KHMpLHImJihyPWt5KHIpKSxsJiYobD1reShsKSkpO2NvbnN0IGM9c3VwZXIuc3Vic2NyaWJlKHtuZXh0OnIsZXJyb3I6cyxjb21wbGV0ZTpsfSk7cmV0dXJuIHQgaW5zdGFuY2VvZiB1JiZ0LmFkZChjKSxjfX07Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2Z1bmN0aW9uIER5KCl7cmV0dXJuIHRoaXMuX3Jlc3VsdHNbc20oKV0oKX1jbGFzcyBSeXtjb25zdHJ1Y3Rvcih0PSExKXt0aGlzLl9lbWl0RGlzdGluY3RDaGFuZ2VzT25seT10LHRoaXMuZGlydHk9ITAsdGhpcy5fcmVzdWx0cz1bXSx0aGlzLl9jaGFuZ2VzRGV0ZWN0ZWQ9ITEsdGhpcy5fY2hhbmdlcz1udWxsLHRoaXMubGVuZ3RoPTAsdGhpcy5maXJzdD12b2lkIDAsdGhpcy5sYXN0PXZvaWQgMDtjb25zdCBlPXNtKCksbj1SeS5wcm90b3R5cGU7bltlXXx8KG5bZV09RHkpfWdldCBjaGFuZ2VzKCl7cmV0dXJuIHRoaXMuX2NoYW5nZXN8fCh0aGlzLl9jaGFuZ2VzPW5ldyBTeSl9Z2V0KHQpe3JldHVybiB0aGlzLl9yZXN1bHRzW3RdfW1hcCh0KXtyZXR1cm4gdGhpcy5fcmVzdWx0cy5tYXAodCl9ZmlsdGVyKHQpe3JldHVybiB0aGlzLl9yZXN1bHRzLmZpbHRlcih0KX1maW5kKHQpe3JldHVybiB0aGlzLl9yZXN1bHRzLmZpbmQodCl9cmVkdWNlKHQsZSl7cmV0dXJuIHRoaXMuX3Jlc3VsdHMucmVkdWNlKHQsZSl9Zm9yRWFjaCh0KXt0aGlzLl9yZXN1bHRzLmZvckVhY2godCl9c29tZSh0KXtyZXR1cm4gdGhpcy5fcmVzdWx0cy5zb21lKHQpfXRvQXJyYXkoKXtyZXR1cm4gdGhpcy5fcmVzdWx0cy5zbGljZSgpfXRvU3RyaW5nKCl7cmV0dXJuIHRoaXMuX3Jlc3VsdHMudG9TdHJpbmcoKX1yZXNldCh0LGUpe2NvbnN0IG49dGhpcztuLmRpcnR5PSExO2NvbnN0IG89cHIodCk7KHRoaXMuX2NoYW5nZXNEZXRlY3RlZD0hKGZ1bmN0aW9uIGkodCxlLG4pe2lmKHQubGVuZ3RoIT09ZS5sZW5ndGgpcmV0dXJuITE7Zm9yKGxldCBvPTA7bzx0Lmxlbmd0aDtvKyspe2xldCBpPXRbb10sYT1lW29dO2lmKG4mJihpPW4oaSksYT1uKGEpKSxhIT09aSlyZXR1cm4hMX1yZXR1cm4hMH0pKG4uX3Jlc3VsdHMsbyxlKSkmJihuLl9yZXN1bHRzPW8sbi5sZW5ndGg9by5sZW5ndGgsbi5sYXN0PW9bdGhpcy5sZW5ndGgtMV0sbi5maXJzdD1vWzBdKX1ub3RpZnlPbkNoYW5nZXMoKXshdGhpcy5fY2hhbmdlc3x8IXRoaXMuX2NoYW5nZXNEZXRlY3RlZCYmdGhpcy5fZW1pdERpc3RpbmN0Q2hhbmdlc09ubHl8fHRoaXMuX2NoYW5nZXMuZW1pdCh0aGlzKX1zZXREaXJ0eSgpe3RoaXMuZGlydHk9ITB9ZGVzdHJveSgpe3RoaXMuY2hhbmdlcy5jb21wbGV0ZSgpLHRoaXMuY2hhbmdlcy51bnN1YnNjcmliZSgpfX1jbGFzcyBFeXtjb25zdHJ1Y3Rvcih0KXt0aGlzLnF1ZXJ5TGlzdD10LHRoaXMubWF0Y2hlcz1udWxsfWNsb25lKCl7cmV0dXJuIG5ldyBFeSh0aGlzLnF1ZXJ5TGlzdCl9c2V0RGlydHkoKXt0aGlzLnF1ZXJ5TGlzdC5zZXREaXJ0eSgpfX1jbGFzcyBBeXtjb25zdHJ1Y3Rvcih0PVtdKXt0aGlzLnF1ZXJpZXM9dH1jcmVhdGVFbWJlZGRlZFZpZXcodCl7Y29uc3QgZT10LnF1ZXJpZXM7aWYobnVsbCE9PWUpe2NvbnN0IG49bnVsbCE9PXQuY29udGVudFF1ZXJpZXM/dC5jb250ZW50UXVlcmllc1swXTplLmxlbmd0aCxvPVtdO2ZvcihsZXQgdD0wO3Q8bjt0Kyspe2NvbnN0IG49ZS5nZXRCeUluZGV4KHQpO28ucHVzaCh0aGlzLnF1ZXJpZXNbbi5pbmRleEluRGVjbGFyYXRpb25WaWV3XS5jbG9uZSgpKX1yZXR1cm4gbmV3IEF5KG8pfXJldHVybiBudWxsfWluc2VydFZpZXcodCl7dGhpcy5kaXJ0eVF1ZXJpZXNXaXRoTWF0Y2hlcyh0KX1kZXRhY2hWaWV3KHQpe3RoaXMuZGlydHlRdWVyaWVzV2l0aE1hdGNoZXModCl9ZGlydHlRdWVyaWVzV2l0aE1hdGNoZXModCl7Zm9yKGxldCBlPTA7ZTx0aGlzLnF1ZXJpZXMubGVuZ3RoO2UrKyludWxsIT09WXkodCxlKS5tYXRjaGVzJiZ0aGlzLnF1ZXJpZXNbZV0uc2V0RGlydHkoKX19Y2xhc3MgVHl7Y29uc3RydWN0b3IodCxlLG49bnVsbCl7dGhpcy5wcmVkaWNhdGU9dCx0aGlzLmZsYWdzPWUsdGhpcy5yZWFkPW59fWNsYXNzIE55e2NvbnN0cnVjdG9yKHQ9W10pe3RoaXMucXVlcmllcz10fWVsZW1lbnRTdGFydCh0LGUpe25nRGV2TW9kZSYmTG8odCwiUXVlcmllcyBzaG91bGQgY29sbGVjdCByZXN1bHRzIG9uIHRoZSBmaXJzdCB0ZW1wbGF0ZSBwYXNzIG9ubHkiKTtmb3IobGV0IG49MDtuPHRoaXMucXVlcmllcy5sZW5ndGg7bisrKXRoaXMucXVlcmllc1tuXS5lbGVtZW50U3RhcnQodCxlKX1lbGVtZW50RW5kKHQpe2ZvcihsZXQgZT0wO2U8dGhpcy5xdWVyaWVzLmxlbmd0aDtlKyspdGhpcy5xdWVyaWVzW2VdLmVsZW1lbnRFbmQodCl9ZW1iZWRkZWRUVmlldyh0KXtsZXQgZT1udWxsO2ZvcihsZXQgbj0wO248dGhpcy5sZW5ndGg7bisrKXtjb25zdCBvPW51bGwhPT1lP2UubGVuZ3RoOjAsaT10aGlzLmdldEJ5SW5kZXgobikuZW1iZWRkZWRUVmlldyh0LG8pO2kmJihpLmluZGV4SW5EZWNsYXJhdGlvblZpZXc9bixudWxsIT09ZT9lLnB1c2goaSk6ZT1baV0pfXJldHVybiBudWxsIT09ZT9uZXcgTnkoZSk6bnVsbH10ZW1wbGF0ZSh0LGUpe25nRGV2TW9kZSYmTG8odCwiUXVlcmllcyBzaG91bGQgY29sbGVjdCByZXN1bHRzIG9uIHRoZSBmaXJzdCB0ZW1wbGF0ZSBwYXNzIG9ubHkiKTtmb3IobGV0IG49MDtuPHRoaXMucXVlcmllcy5sZW5ndGg7bisrKXRoaXMucXVlcmllc1tuXS50ZW1wbGF0ZSh0LGUpfWdldEJ5SW5kZXgodCl7cmV0dXJuIG5nRGV2TW9kZSYmd24odGhpcy5xdWVyaWVzLHQpLHRoaXMucXVlcmllc1t0XX1nZXQgbGVuZ3RoKCl7cmV0dXJuIHRoaXMucXVlcmllcy5sZW5ndGh9dHJhY2sodCl7dGhpcy5xdWVyaWVzLnB1c2godCl9fWNsYXNzIHp5e2NvbnN0cnVjdG9yKHQsZT0tMSl7dGhpcy5tZXRhZGF0YT10LHRoaXMubWF0Y2hlcz1udWxsLHRoaXMuaW5kZXhJbkRlY2xhcmF0aW9uVmlldz0tMSx0aGlzLmNyb3NzZXNOZ1RlbXBsYXRlPSExLHRoaXMuX2FwcGxpZXNUb05leHROb2RlPSEwLHRoaXMuX2RlY2xhcmF0aW9uTm9kZUluZGV4PWV9ZWxlbWVudFN0YXJ0KHQsZSl7dGhpcy5pc0FwcGx5aW5nVG9Ob2RlKGUpJiZ0aGlzLm1hdGNoVE5vZGUodCxlKX1lbGVtZW50RW5kKHQpe3RoaXMuX2RlY2xhcmF0aW9uTm9kZUluZGV4PT09dC5pbmRleCYmKHRoaXMuX2FwcGxpZXNUb05leHROb2RlPSExKX10ZW1wbGF0ZSh0LGUpe3RoaXMuZWxlbWVudFN0YXJ0KHQsZSl9ZW1iZWRkZWRUVmlldyh0LGUpe3JldHVybiB0aGlzLmlzQXBwbHlpbmdUb05vZGUodCk/KHRoaXMuY3Jvc3Nlc05nVGVtcGxhdGU9ITAsdGhpcy5hZGRNYXRjaCgtdC5pbmRleCxlKSxuZXcgenkodGhpcy5tZXRhZGF0YSkpOm51bGx9aXNBcHBseWluZ1RvTm9kZSh0KXtpZih0aGlzLl9hcHBsaWVzVG9OZXh0Tm9kZSYmMSE9KDEmdGhpcy5tZXRhZGF0YS5mbGFncykpe2NvbnN0IGU9dGhpcy5fZGVjbGFyYXRpb25Ob2RlSW5kZXg7bGV0IG49dC5wYXJlbnQ7Zm9yKDtudWxsIT09biYmOCZuLnR5cGUmJm4uaW5kZXghPT1lOyluPW4ucGFyZW50O3JldHVybiBlPT09KG51bGwhPT1uP24uaW5kZXg6LTEpfXJldHVybiB0aGlzLl9hcHBsaWVzVG9OZXh0Tm9kZX1tYXRjaFROb2RlKHQsZSl7Y29uc3Qgbj10aGlzLm1ldGFkYXRhLnByZWRpY2F0ZTtpZihBcnJheS5pc0FycmF5KG4pKWZvcihsZXQgbz0wO288bi5sZW5ndGg7bysrKXtjb25zdCBpPW5bb107dGhpcy5tYXRjaFROb2RlV2l0aFJlYWRPcHRpb24odCxlLEl5KGUsaSkpLHRoaXMubWF0Y2hUTm9kZVdpdGhSZWFkT3B0aW9uKHQsZSxGYShlLHQsaSwhMSwhMSkpfWVsc2Ugbj09PUViPzQmZS50eXBlJiZ0aGlzLm1hdGNoVE5vZGVXaXRoUmVhZE9wdGlvbih0LGUsLTEpOnRoaXMubWF0Y2hUTm9kZVdpdGhSZWFkT3B0aW9uKHQsZSxGYShlLHQsbiwhMSwhMSkpfW1hdGNoVE5vZGVXaXRoUmVhZE9wdGlvbih0LGUsbil7aWYobnVsbCE9PW4pe2NvbnN0IG89dGhpcy5tZXRhZGF0YS5yZWFkO2lmKG51bGwhPT1vKWlmKG89PT1LaHx8bz09PUZifHxvPT09RWImJjQmZS50eXBlKXRoaXMuYWRkTWF0Y2goZS5pbmRleCwtMik7ZWxzZXtjb25zdCBuPUZhKGUsdCxvLCExLCExKTtudWxsIT09biYmdGhpcy5hZGRNYXRjaChlLmluZGV4LG4pfWVsc2UgdGhpcy5hZGRNYXRjaChlLmluZGV4LG4pfX1hZGRNYXRjaCh0LGUpe251bGw9PT10aGlzLm1hdGNoZXM/dGhpcy5tYXRjaGVzPVt0LGVdOnRoaXMubWF0Y2hlcy5wdXNoKHQsZSl9fWZ1bmN0aW9uIEl5KHQsZSl7Y29uc3Qgbj10LmxvY2FsTmFtZXM7aWYobnVsbCE9PW4pZm9yKGxldCB0PTA7dDxuLmxlbmd0aDt0Kz0yKWlmKG5bdF09PT1lKXJldHVybiBuW3QrMV07cmV0dXJuIG51bGx9ZnVuY3Rpb24gSHkodCxlLG4sbyl7cmV0dXJuLTE9PT1uPyhmdW5jdGlvbiBpKHQsZSl7cmV0dXJuIDExJnQudHlwZT9xaCh0LGUpOjQmdC50eXBlP05iKHQsZSk6bnVsbH0pKGUsdCk6LTI9PT1uPyhmdW5jdGlvbiBhKHQsZSxuKXtpZihuPT09S2gpcmV0dXJuIHFoKGUsdCk7aWYobj09PUViKXJldHVybiBOYihlLHQpO2lmKG49PT1GYilyZXR1cm4gbmdEZXZNb2RlJiZnYShlLDE1KSxVYihlLHQpO25nRGV2TW9kZSYmT24oYFNwZWNpYWwgdG9rZW4gdG8gcmVhZCBzaG91bGQgYmUgb25lIG9mIEVsZW1lbnRSZWYsIFRlbXBsYXRlUmVmIG9yIFZpZXdDb250YWluZXJSZWYgYnV0IGdvdCAke0tlKG4pfS5gKX0pKHQsZSxvKTpMYSh0LHRbMV0sbixlKX1mdW5jdGlvbiBGeSh0LGUsbixvKXtjb25zdCBpPWVbMTldLnF1ZXJpZXNbb107aWYobnVsbD09PWkubWF0Y2hlcyl7Y29uc3Qgbz10LmRhdGEsYT1uLm1hdGNoZXMscj1bXTtmb3IobGV0IHQ9MDt0PGEubGVuZ3RoO3QrPTIpe2NvbnN0IGk9YVt0XTtpZihpPDApci5wdXNoKG51bGwpO2Vsc2V7bmdEZXZNb2RlJiZ3bihvLGkpO3IucHVzaChIeShlLG9baV0sYVt0KzFdLG4ubWV0YWRhdGEucmVhZCkpfX1pLm1hdGNoZXM9cn1yZXR1cm4gaS5tYXRjaGVzfWZ1bmN0aW9uIEx5KHQsZSxuLG8pe2NvbnN0IGk9dC5xdWVyaWVzLmdldEJ5SW5kZXgobiksYT1pLm1hdGNoZXM7aWYobnVsbCE9PWEpe2NvbnN0IHI9RnkodCxlLGksbik7Zm9yKGxldCB0PTA7dDxhLmxlbmd0aDt0Kz0yKXtjb25zdCBuPWFbdF07aWYobj4wKW8ucHVzaChyW3QvMl0pO2Vsc2V7Y29uc3QgaT1hW3QrMV0scj1lWy1uXTtuZ0Rldk1vZGUmJklvKHIpO2ZvcihsZXQgdD1Pbzt0PHIubGVuZ3RoO3QrKyl7Y29uc3QgZT1yW3RdO2VbMTddPT09ZVszXSYmTHkoZVsxXSxlLGksbyl9aWYobnVsbCE9PXJbOV0pe2NvbnN0IHQ9cls5XTtmb3IobGV0IGU9MDtlPHQubGVuZ3RoO2UrKyl7Y29uc3Qgbj10W2VdO0x5KG5bMV0sbixpLG8pfX19fX1yZXR1cm4gb31mdW5jdGlvbiBCeSh0KXtjb25zdCBlPXhpKCksbj1PaSgpLG89VWkoKTtXaShvKzEpO2NvbnN0IGk9WXkobixvKTtpZih0LmRpcnR5JiZ1aShlKT09PSgyPT0oMiZpLm1ldGFkYXRhLmZsYWdzKSkpe2lmKG51bGw9PT1pLm1hdGNoZXMpdC5yZXNldChbXSk7ZWxzZXtjb25zdCBhPWkuY3Jvc3Nlc05nVGVtcGxhdGU/THkobixlLG8sW10pOkZ5KG4sZSxpLG8pO3QucmVzZXQoYSxKaCksdC5ub3RpZnlPbkNoYW5nZXMoKX1yZXR1cm4hMH1yZXR1cm4hMX1mdW5jdGlvbiBWeSh0LGUsbil7bmdEZXZNb2RlJiZwbihlLCJFeHBlY3RpbmcgZmxhZ3MiKTtjb25zdCBvPU9pKCk7by5maXJzdENyZWF0ZVBhc3MmJihHeShvLG5ldyBUeSh0LGUsbiksLTEpLDI9PSgyJmUpJiYoby5zdGF0aWNWaWV3UXVlcmllcz0hMCkpLFd5KG8seGkoKSxlKX1mdW5jdGlvbiBqeSh0LGUsbixvKXtuZ0Rldk1vZGUmJnBuKG4sIkV4cGVjdGluZyBmbGFncyIpO2NvbnN0IGk9T2koKTtpZihpLmZpcnN0Q3JlYXRlUGFzcyl7Y29uc3QgYT13aSgpO0d5KGksbmV3IFR5KGUsbixvKSxhLmluZGV4KSwoZnVuY3Rpb24gYSh0LGUpe2NvbnN0IG49dC5jb250ZW50UXVlcmllc3x8KHQuY29udGVudFF1ZXJpZXM9W10pO2UhPT0obi5sZW5ndGg/bltuLmxlbmd0aC0xXTotMSkmJm4ucHVzaCh0LnF1ZXJpZXMubGVuZ3RoLTEsZSl9KShpLHQpLDI9PSgyJm4pJiYoaS5zdGF0aWNDb250ZW50UXVlcmllcz0hMCl9V3koaSx4aSgpLG4pfWZ1bmN0aW9uIFV5KCl7cmV0dXJuKGZ1bmN0aW9uIHQoZSxuKXtyZXR1cm4gbmdEZXZNb2RlJiZ4bihlWzE5XSwiTFF1ZXJpZXMgc2hvdWxkIGJlIGRlZmluZWQgd2hlbiB0cnlpbmcgdG8gbG9hZCBhIHF1ZXJ5IiksbmdEZXZNb2RlJiZ3bihlWzE5XS5xdWVyaWVzLG4pLGVbMTldLnF1ZXJpZXNbbl0ucXVlcnlMaXN0fSkoeGkoKSxVaSgpKX1mdW5jdGlvbiBXeSh0LGUsbil7Y29uc3Qgbz1uZXcgUnkoND09KDQmbikpO1RkKHQsZSxvLG8uZGVzdHJveSksbnVsbD09PWVbMTldJiYoZVsxOV09bmV3IEF5KSxlWzE5XS5xdWVyaWVzLnB1c2gobmV3IEV5KG8pKX1mdW5jdGlvbiBHeSh0LGUsbil7bnVsbD09PXQucXVlcmllcyYmKHQucXVlcmllcz1uZXcgTnkpLHQucXVlcmllcy50cmFjayhuZXcgenkoZSxuKSl9ZnVuY3Rpb24gWXkodCxlKXtyZXR1cm4gbmdEZXZNb2RlJiZ4bih0LnF1ZXJpZXMsIlRRdWVyaWVzIG11c3QgYmUgZGVmaW5lZCB0byByZXRyaWV2ZSBhIFRRdWVyeSIpLHQucXVlcmllcy5nZXRCeUluZGV4KGUpfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9mdW5jdGlvbiBxeSh0LGUpe3JldHVybiBOYih0LGUpfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY29uc3QgWnk9eyLJtcm1YXR0cmlidXRlIjp5bSwiybXJtWF0dHJpYnV0ZUludGVycG9sYXRlMSI6U20sIsm1ybVhdHRyaWJ1dGVJbnRlcnBvbGF0ZTIiOkRtLCLJtcm1YXR0cmlidXRlSW50ZXJwb2xhdGUzIjpSbSwiybXJtWF0dHJpYnV0ZUludGVycG9sYXRlNCI6RW0sIsm1ybVhdHRyaWJ1dGVJbnRlcnBvbGF0ZTUiOkFtLCLJtcm1YXR0cmlidXRlSW50ZXJwb2xhdGU2IjpUbSwiybXJtWF0dHJpYnV0ZUludGVycG9sYXRlNyI6Tm0sIsm1ybVhdHRyaWJ1dGVJbnRlcnBvbGF0ZTgiOnptLCLJtcm1YXR0cmlidXRlSW50ZXJwb2xhdGVWIjpJbSwiybXJtWRlZmluZUNvbXBvbmVudCI6c28sIsm1ybVkZWZpbmVEaXJlY3RpdmUiOmhvLCLJtcm1ZGVmaW5lSW5qZWN0YWJsZSI6U24sIsm1ybVkZWZpbmVJbmplY3RvciI6RG4sIsm1ybVkZWZpbmVOZ01vZHVsZSI6Zm8sIsm1ybVkZWZpbmVQaXBlIjpibywiybXJtWRpcmVjdGl2ZUluamVjdCI6Z2YsIsm1ybVnZXRJbmhlcml0ZWRGYWN0b3J5IjpVYSwiybXJtWluamVjdCI6VHIsIsm1ybVpbmplY3RBdHRyaWJ1dGUiOkdhLCLJtcm1aW52YWxpZEZhY3RvcnkiOmhmLCLJtcm1aW52YWxpZEZhY3RvcnlEZXAiOk5yLCLJtcm1dGVtcGxhdGVSZWZFeHRyYWN0b3IiOnF5LCLJtcm1TmdPbkNoYW5nZXNGZWF0dXJlIjpxbywiybXJtVByb3ZpZGVyc0ZlYXR1cmUiOmpoLCLJtcm1Q29weURlZmluaXRpb25GZWF0dXJlIjphbSwiybXJtUluaGVyaXREZWZpbml0aW9uRmVhdHVyZSI6UXAsIsm1ybVuZXh0Q29udGV4dCI6emYsIsm1ybVuYW1lc3BhY2VIVE1MIjphYSwiybXJtW5hbWVzcGFjZU1hdGhNTCI6aWEsIsm1ybVuYW1lc3BhY2VTVkciOm9hLCLJtcm1ZW5hYmxlQmluZGluZ3MiOk1pLCLJtcm1ZGlzYWJsZUJpbmRpbmdzIjp2aSwiybXJtWVsZW1lbnRTdGFydCI6Q2YsIsm1ybVlbGVtZW50RW5kIjpNZiwiybXJtWVsZW1lbnQiOnZmLCLJtcm1ZWxlbWVudENvbnRhaW5lclN0YXJ0Ijp4ZiwiybXJtWVsZW1lbnRDb250YWluZXJFbmQiOk9mLCLJtcm1ZWxlbWVudENvbnRhaW5lciI6UGYsIsm1ybVwdXJlRnVuY3Rpb24wIjpveSwiybXJtXB1cmVGdW5jdGlvbjEiOml5LCLJtcm1cHVyZUZ1bmN0aW9uMiI6YXksIsm1ybVwdXJlRnVuY3Rpb24zIjpyeSwiybXJtXB1cmVGdW5jdGlvbjQiOnN5LCLJtcm1cHVyZUZ1bmN0aW9uNSI6bHksIsm1ybVwdXJlRnVuY3Rpb242IjpjeSwiybXJtXB1cmVGdW5jdGlvbjciOmR5LCLJtcm1cHVyZUZ1bmN0aW9uOCI6cHksIsm1ybVwdXJlRnVuY3Rpb25WIjpteSwiybXJtWdldEN1cnJlbnRWaWV3Ijp3ZiwiybXJtXJlc3RvcmVWaWV3IjpQaSwiybXJtWxpc3RlbmVyIjpSZiwiybXJtXByb2plY3Rpb24iOkZmLCLJtcm1c3ludGhldGljSG9zdFByb3BlcnR5IjpkZywiybXJtXN5bnRoZXRpY0hvc3RMaXN0ZW5lciI6RWYsIsm1ybVwaXBlQmluZDEiOkN5LCLJtcm1cGlwZUJpbmQyIjpNeSwiybXJtXBpcGVCaW5kMyI6dnksIsm1ybVwaXBlQmluZDQiOnh5LCLJtcm1cGlwZUJpbmRWIjpPeSwiybXJtXByb2plY3Rpb25EZWYiOkhmLCLJtcm1aG9zdFByb3BlcnR5IjpjZywiybXJtXByb3BlcnR5IjpiZiwiybXJtXByb3BlcnR5SW50ZXJwb2xhdGUiOkxmLCLJtcm1cHJvcGVydHlJbnRlcnBvbGF0ZTEiOkJmLCLJtcm1cHJvcGVydHlJbnRlcnBvbGF0ZTIiOlZmLCLJtcm1cHJvcGVydHlJbnRlcnBvbGF0ZTMiOmpmLCLJtcm1cHJvcGVydHlJbnRlcnBvbGF0ZTQiOlVmLCLJtcm1cHJvcGVydHlJbnRlcnBvbGF0ZTUiOldmLCLJtcm1cHJvcGVydHlJbnRlcnBvbGF0ZTYiOkdmLCLJtcm1cHJvcGVydHlJbnRlcnBvbGF0ZTciOllmLCLJtcm1cHJvcGVydHlJbnRlcnBvbGF0ZTgiOnFmLCLJtcm1cHJvcGVydHlJbnRlcnBvbGF0ZVYiOlpmLCLJtcm1cGlwZSI6X3ksIsm1ybVxdWVyeVJlZnJlc2giOkJ5LCLJtcm1dmlld1F1ZXJ5IjpWeSwiybXJtWxvYWRRdWVyeSI6VXksIsm1ybVjb250ZW50UXVlcnkiOmp5LCLJtcm1cmVmZXJlbmNlIjpGbSwiybXJtWNsYXNzTWFwIjptdSwiybXJtWNsYXNzTWFwSW50ZXJwb2xhdGUxIjpJdSwiybXJtWNsYXNzTWFwSW50ZXJwb2xhdGUyIjpIdSwiybXJtWNsYXNzTWFwSW50ZXJwb2xhdGUzIjpGdSwiybXJtWNsYXNzTWFwSW50ZXJwb2xhdGU0IjpMdSwiybXJtWNsYXNzTWFwSW50ZXJwb2xhdGU1IjpCdSwiybXJtWNsYXNzTWFwSW50ZXJwb2xhdGU2IjpWdSwiybXJtWNsYXNzTWFwSW50ZXJwb2xhdGU3IjpqdSwiybXJtWNsYXNzTWFwSW50ZXJwb2xhdGU4IjpVdSwiybXJtWNsYXNzTWFwSW50ZXJwb2xhdGVWIjpXdSwiybXJtXN0eWxlTWFwIjpkdSwiybXJtXN0eWxlTWFwSW50ZXJwb2xhdGUxIjpHdSwiybXJtXN0eWxlTWFwSW50ZXJwb2xhdGUyIjpZdSwiybXJtXN0eWxlTWFwSW50ZXJwb2xhdGUzIjpxdSwiybXJtXN0eWxlTWFwSW50ZXJwb2xhdGU0IjpadSwiybXJtXN0eWxlTWFwSW50ZXJwb2xhdGU1IjpYdSwiybXJtXN0eWxlTWFwSW50ZXJwb2xhdGU2IjpLdSwiybXJtXN0eWxlTWFwSW50ZXJwb2xhdGU3IjpKdSwiybXJtXN0eWxlTWFwSW50ZXJwb2xhdGU4IjpRdSwiybXJtXN0eWxlTWFwSW50ZXJwb2xhdGVWIjokdSwiybXJtXN0eWxlUHJvcCI6bHUsIsm1ybVzdHlsZVByb3BJbnRlcnBvbGF0ZTEiOnRnLCLJtcm1c3R5bGVQcm9wSW50ZXJwb2xhdGUyIjplZywiybXJtXN0eWxlUHJvcEludGVycG9sYXRlMyI6bmcsIsm1ybVzdHlsZVByb3BJbnRlcnBvbGF0ZTQiOm9nLCLJtcm1c3R5bGVQcm9wSW50ZXJwb2xhdGU1IjppZywiybXJtXN0eWxlUHJvcEludGVycG9sYXRlNiI6YWcsIsm1ybVzdHlsZVByb3BJbnRlcnBvbGF0ZTciOnJnLCLJtcm1c3R5bGVQcm9wSW50ZXJwb2xhdGU4IjpzZywiybXJtXN0eWxlUHJvcEludGVycG9sYXRlViI6bGcsIsm1ybVjbGFzc1Byb3AiOmN1LCLJtcm1YWR2YW5jZSI6RGMsIsm1ybV0ZW1wbGF0ZSI6SG0sIsm1ybV0ZXh0IjpQdSwiybXJtXRleHRJbnRlcnBvbGF0ZSI6d3UsIsm1ybV0ZXh0SW50ZXJwb2xhdGUxIjprdSwiybXJtXRleHRJbnRlcnBvbGF0ZTIiOlN1LCLJtcm1dGV4dEludGVycG9sYXRlMyI6RHUsIsm1ybV0ZXh0SW50ZXJwb2xhdGU0IjpSdSwiybXJtXRleHRJbnRlcnBvbGF0ZTUiOkV1LCLJtcm1dGV4dEludGVycG9sYXRlNiI6QXUsIsm1ybV0ZXh0SW50ZXJwb2xhdGU3IjpUdSwiybXJtXRleHRJbnRlcnBvbGF0ZTgiOk51LCLJtcm1dGV4dEludGVycG9sYXRlViI6enUsIsm1ybVpMThuIjpSaCwiybXJtWkxOG5BdHRyaWJ1dGVzIjpFaCwiybXJtWkxOG5FeHAiOkFoLCLJtcm1aTE4blN0YXJ0IjpTaCwiybXJtWkxOG5FbmQiOkRoLCLJtcm1aTE4bkFwcGx5IjpUaCwiybXJtWkxOG5Qb3N0cHJvY2VzcyI6TmgsIsm1ybVyZXNvbHZlV2luZG93IjpPbCwiybXJtXJlc29sdmVEb2N1bWVudCI6UGwsIsm1ybVyZXNvbHZlQm9keSI6d2wsIsm1ybVzZXRDb21wb25lbnRTY29wZSI6bG8sIsm1ybVzZXROZ01vZHVsZVNjb3BlIjp1bywiybXJtXNhbml0aXplSHRtbCI6cXMsIsm1ybVzYW5pdGl6ZVN0eWxlIjpacywiybXJtXNhbml0aXplUmVzb3VyY2VVcmwiOktzLCLJtcm1c2FuaXRpemVTY3JpcHQiOkpzLCLJtcm1c2FuaXRpemVVcmwiOlhzLCLJtcm1c2FuaXRpemVVcmxPclJlc291cmNlVXJsIjp0bCwiybXJtXRydXN0Q29uc3RhbnRIdG1sIjpRcywiybXJtXRydXN0Q29uc3RhbnRSZXNvdXJjZVVybCI6JHMsZm9yd2FyZFJlZjokZSxyZXNvbHZlRm9yd2FyZFJlZjp0bn07bGV0IFh5PW51bGw7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjb25zdCBLeT1bXTtsZXQgSnk9ITE7ZnVuY3Rpb24gUXkodCl7cmV0dXJuIEFycmF5LmlzQXJyYXkodCk/dC5ldmVyeShReSk6ISF0bih0KX1mdW5jdGlvbiAkeSh0LGUsbil7aWYob18uZ2V0KHQpKXJldHVybjtsZXQgbztpZihvXy5zZXQodCwhMCksdD10bih0KSxuKXtpZihvPU1vKHQpLCFvKXRocm93IG5ldyBFcnJvcihgVW5leHBlY3RlZCB2YWx1ZSAnJHt0Lm5hbWV9JyBpbXBvcnRlZCBieSB0aGUgbW9kdWxlICcke24ubmFtZX0nLiBQbGVhc2UgYWRkIGFuIEBOZ01vZHVsZSBhbm5vdGF0aW9uLmApfWVsc2Ugbz1Nbyh0LCEwKTtjb25zdCBpPVtdLGE9U2woby5kZWNsYXJhdGlvbnMpLHI9U2woby5pbXBvcnRzKTtwcihyKS5tYXAodF8pLmZvckVhY2goKGU9PntoKGUsdCksJHkoZSwhMSx0KX0pKTtjb25zdCBzPVNsKG8uZXhwb3J0cyk7YS5mb3JFYWNoKChmdW5jdGlvbiBsKGUpe2U9dG4oZSk7eW8oZSl8fF9vKGUpfHxDbyhlKXx8aS5wdXNoKGBVbmV4cGVjdGVkIHZhbHVlICcke3NuKGUpfScgZGVjbGFyZWQgYnkgdGhlIG1vZHVsZSAnJHtzbih0KX0nLiBQbGVhc2UgYWRkIGEgQFBpcGUvQERpcmVjdGl2ZS9AQ29tcG9uZW50IGFubm90YXRpb24uYCl9KSksYS5mb3JFYWNoKChmdW5jdGlvbiBjKHQpe2NvbnN0IGU9X28odD10bih0KSk7IXlvKHQpJiZlJiYwPT1lLnNlbGVjdG9ycy5sZW5ndGgmJmkucHVzaChgRGlyZWN0aXZlICR7c24odCl9IGhhcyBubyBzZWxlY3RvciwgcGxlYXNlIGFkZCBpdCFgKX0pKTtjb25zdCBkPVsuLi5hLm1hcCh0biksLi4ucHIoci5tYXAoaV8pKS5tYXAodG4pXTtzLmZvckVhY2goKGZ1bmN0aW9uIHAoZSl7Y29uc3Qgbj0oeW8oZT10bihlKSk/ImNvbXBvbmVudCI6X28oZSkmJiJkaXJlY3RpdmUiKXx8Q28oZSkmJiJwaXBlIjtuJiYtMT09PWQubGFzdEluZGV4T2YoZSkmJmkucHVzaChgQ2FuJ3QgZXhwb3J0ICR7bn0gJHtzbihlKX0gZnJvbSAke3NuKHQpfSBhcyBpdCB3YXMgbmVpdGhlciBkZWNsYXJlZCBub3IgaW1wb3J0ZWQhYCl9KSksYS5mb3JFYWNoKChuPT4oZnVuY3Rpb24gbyhlLG4pe2U9dG4oZSk7Y29uc3Qgbz1uXy5nZXQoZSk7aWYobyYmbyE9PXQpe2lmKCFuKXtjb25zdCBuPVtvLHRdLm1hcChzbikuc29ydCgpO2kucHVzaChgVHlwZSAke3NuKGUpfSBpcyBwYXJ0IG9mIHRoZSBkZWNsYXJhdGlvbnMgb2YgMiBtb2R1bGVzOiAke25bMF19IGFuZCAke25bMV19ISBQbGVhc2UgY29uc2lkZXIgbW92aW5nICR7c24oZSl9IHRvIGEgaGlnaGVyIG1vZHVsZSB0aGF0IGltcG9ydHMgJHtuWzBdfSBhbmQgJHtuWzFdfS4gWW91IGNhbiBhbHNvIGNyZWF0ZSBhIG5ldyBOZ01vZHVsZSB0aGF0IGV4cG9ydHMgYW5kIGluY2x1ZGVzICR7c24oZSl9IHRoZW4gaW1wb3J0IHRoYXQgTmdNb2R1bGUgaW4gJHtuWzBdfSBhbmQgJHtuWzFdfS5gKX19ZWxzZSBuXy5zZXQoZSx0KX0pKG4sZSkpKSxhLmZvckVhY2goKGZ1bmN0aW9uIG0odCl7aWYoeW8odD10bih0KSkpe2NvbnN0IGU9ZV8odCwiQ29tcG9uZW50Iik7ZSYmZS5lbnRyeUNvbXBvbmVudHMmJm1yKGUuZW50cnlDb21wb25lbnRzLGcpfX0pKTtjb25zdCBmPWVfKHQsIk5nTW9kdWxlIik7aWYoZiYmKGYuaW1wb3J0cyYmcHIoZi5pbXBvcnRzKS5tYXAodF8pLmZvckVhY2goKGU9PntoKGUsdCksJHkoZSwhMSx0KX0pKSxmLmJvb3RzdHJhcCYmbXIoZi5ib290c3RyYXAsKGZ1bmN0aW9uIHUodCl7eW8odD10bih0KSl8fGkucHVzaChgJHtzbih0KX0gY2Fubm90IGJlIHVzZWQgYXMgYW4gZW50cnkgY29tcG9uZW50LmApfSkpLGYuYm9vdHN0cmFwJiZtcihmLmJvb3RzdHJhcCxnKSxmLmVudHJ5Q29tcG9uZW50cyYmbXIoZi5lbnRyeUNvbXBvbmVudHMsZykpLGkubGVuZ3RoKXRocm93IG5ldyBFcnJvcihpLmpvaW4oIlxuIikpO2Z1bmN0aW9uIGcodCl7dD10bih0KTtuXy5nZXQodCl8fGkucHVzaChgQ29tcG9uZW50ICR7c24odCl9IGlzIG5vdCBwYXJ0IG9mIGFueSBOZ01vZHVsZSBvciB0aGUgbW9kdWxlIGhhcyBub3QgYmVlbiBpbXBvcnRlZCBpbnRvIHlvdXIgbW9kdWxlLmApfWZ1bmN0aW9uIGgodCxlKXtpZih5byh0PXRuKHQpKXx8X28odCkpdGhyb3cgbmV3IEVycm9yKGBVbmV4cGVjdGVkIGRpcmVjdGl2ZSAnJHt0Lm5hbWV9JyBpbXBvcnRlZCBieSB0aGUgbW9kdWxlICcke2UubmFtZX0nLiBQbGVhc2UgYWRkIGFuIEBOZ01vZHVsZSBhbm5vdGF0aW9uLmApO2lmKENvKHQpKXRocm93IG5ldyBFcnJvcihgVW5leHBlY3RlZCBwaXBlICcke3QubmFtZX0nIGltcG9ydGVkIGJ5IHRoZSBtb2R1bGUgJyR7ZS5uYW1lfScuIFBsZWFzZSBhZGQgYW4gQE5nTW9kdWxlIGFubm90YXRpb24uYCl9fWZ1bmN0aW9uIHRfKHQpe3JldHVybih0PXRuKHQpKS5uZ01vZHVsZXx8dH1mdW5jdGlvbiBlXyh0LGUpe2xldCBuPW51bGw7cmV0dXJuIG8odC5fX2Fubm90YXRpb25zX18pLG8odC5kZWNvcmF0b3JzKSxuO2Z1bmN0aW9uIG8odCl7dCYmdC5mb3JFYWNoKGkpfWZ1bmN0aW9uIGkodCl7aWYoIW4pe2lmKE9iamVjdC5nZXRQcm90b3R5cGVPZih0KS5uZ01ldGFkYXRhTmFtZT09ZSluPXQ7ZWxzZSBpZih0LnR5cGUpe09iamVjdC5nZXRQcm90b3R5cGVPZih0LnR5cGUpLm5nTWV0YWRhdGFOYW1lPT1lJiYobj10LmFyZ3NbMF0pfX19fWxldCBuXz1uZXcgV2Vha01hcCxvXz1uZXcgV2Vha01hcDtmdW5jdGlvbiBpXyh0KXtyZXR1cm5bLi4ucHIoU2woTW8odD10bih0KSwhMCkuZXhwb3J0cykubWFwKCh0PT5Nbyh0KT8oJHkodCwhMSksaV8odCkpOnQpKSldfWZ1bmN0aW9uIGFfKHQsZSl7Y29uc3Qgbj1wcihlLmRlY2xhcmF0aW9uc3x8UW4pLG89c18odCk7bi5mb3JFYWNoKChlPT57aWYoZS5oYXNPd25Qcm9wZXJ0eSgkbikpe3JfKHlvKGUpLG8pfWVsc2UgZS5oYXNPd25Qcm9wZXJ0eSh0byl8fGUuaGFzT3duUHJvcGVydHkoZW8pfHwoZS5uZ1NlbGVjdG9yU2NvcGU9dCl9KSl9ZnVuY3Rpb24gcl8odCxlKXt0LmRpcmVjdGl2ZURlZnM9KCk9PkFycmF5LmZyb20oZS5jb21waWxhdGlvbi5kaXJlY3RpdmVzKS5tYXAoKHQ9PnQuaGFzT3duUHJvcGVydHkoJG4pP3lvKHQpOl9vKHQpKSkuZmlsdGVyKCh0PT4hIXQpKSx0LnBpcGVEZWZzPSgpPT5BcnJheS5mcm9tKGUuY29tcGlsYXRpb24ucGlwZXMpLm1hcCgodD0+Q28odCkpKSx0LnNjaGVtYXM9ZS5zY2hlbWFzLHQudFZpZXc9bnVsbH1mdW5jdGlvbiBzXyh0KXtpZighY18odCkpdGhyb3cgbmV3IEVycm9yKGAke3QubmFtZX0gZG9lcyBub3QgaGF2ZSBhIG1vZHVsZSBkZWYgKMm1bW9kIHByb3BlcnR5KWApO2NvbnN0IGU9TW8odCk7aWYobnVsbCE9PWUudHJhbnNpdGl2ZUNvbXBpbGVTY29wZXMpcmV0dXJuIGUudHJhbnNpdGl2ZUNvbXBpbGVTY29wZXM7Y29uc3Qgbj17c2NoZW1hczplLnNjaGVtYXN8fG51bGwsY29tcGlsYXRpb246e2RpcmVjdGl2ZXM6bmV3IFNldCxwaXBlczpuZXcgU2V0fSxleHBvcnRlZDp7ZGlyZWN0aXZlczpuZXcgU2V0LHBpcGVzOm5ldyBTZXR9fTtyZXR1cm4gU2woZS5pbXBvcnRzKS5mb3JFYWNoKCh0PT57Y29uc3QgZT10O2lmKCFjXyhlKSl0aHJvdyBuZXcgRXJyb3IoYEltcG9ydGluZyAke2UubmFtZX0gd2hpY2ggZG9lcyBub3QgaGF2ZSBhIMm1bW9kIHByb3BlcnR5YCk7Y29uc3Qgbz1zXyhlKTtvLmV4cG9ydGVkLmRpcmVjdGl2ZXMuZm9yRWFjaCgodD0+bi5jb21waWxhdGlvbi5kaXJlY3RpdmVzLmFkZCh0KSkpLG8uZXhwb3J0ZWQucGlwZXMuZm9yRWFjaCgodD0+bi5jb21waWxhdGlvbi5waXBlcy5hZGQodCkpKX0pKSxTbChlLmRlY2xhcmF0aW9ucykuZm9yRWFjaCgodD0+e0NvKHQpP24uY29tcGlsYXRpb24ucGlwZXMuYWRkKHQpOm4uY29tcGlsYXRpb24uZGlyZWN0aXZlcy5hZGQodCl9KSksU2woZS5leHBvcnRzKS5mb3JFYWNoKCh0PT57Y29uc3QgZT10O2lmKGNfKGUpKXtjb25zdCB0PXNfKGUpO3QuZXhwb3J0ZWQuZGlyZWN0aXZlcy5mb3JFYWNoKCh0PT57bi5jb21waWxhdGlvbi5kaXJlY3RpdmVzLmFkZCh0KSxuLmV4cG9ydGVkLmRpcmVjdGl2ZXMuYWRkKHQpfSkpLHQuZXhwb3J0ZWQucGlwZXMuZm9yRWFjaCgodD0+e24uY29tcGlsYXRpb24ucGlwZXMuYWRkKHQpLG4uZXhwb3J0ZWQucGlwZXMuYWRkKHQpfSkpfWVsc2UgQ28oZSk/bi5leHBvcnRlZC5waXBlcy5hZGQoZSk6bi5leHBvcnRlZC5kaXJlY3RpdmVzLmFkZChlKX0pKSxlLnRyYW5zaXRpdmVDb21waWxlU2NvcGVzPW4sbn1mdW5jdGlvbiBsXyh0KXtyZXR1cm4oZnVuY3Rpb24gZSh0KXtyZXR1cm4gdm9pZCAwIT09dC5uZ01vZHVsZX0pKHQpP3QubmdNb2R1bGU6dH1mdW5jdGlvbiBjXyh0KXtyZXR1cm4hIU1vKHQpfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9sZXQgZF89MDtmdW5jdGlvbiBwXyh0LGUpe2xldCBuPW51bGw7Zl8odCxlfHx7fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsdG8se2dldDooKT0+e2lmKG51bGw9PT1uKXtjb25zdCBvPW1fKHQsZXx8e30pLGk9bHIoe3VzYWdlOjAsa2luZDoiZGlyZWN0aXZlIix0eXBlOnR9KTtuPWkuY29tcGlsZURpcmVjdGl2ZShaeSxvLnNvdXJjZU1hcFVybCxvLm1ldGFkYXRhKX1yZXR1cm4gbn0sY29uZmlndXJhYmxlOiEhbmdEZXZNb2RlfSl9ZnVuY3Rpb24gbV8odCxlKXtjb25zdCBuPXQmJnQubmFtZSxvPWBuZzovLy8ke259L8m1ZGlyLmpzYCxpPWxyKHt1c2FnZTowLGtpbmQ6ImRpcmVjdGl2ZSIsdHlwZTp0fSksYT1nXyh0LGUpO3JldHVybiBhLnR5cGVTb3VyY2VTcGFuPWkuY3JlYXRlUGFyc2VTb3VyY2VTcGFuKCJEaXJlY3RpdmUiLG4sbyksYS51c2VzSW5oZXJpdGFuY2UmJmhfKHQpLHttZXRhZGF0YTphLHNvdXJjZU1hcFVybDpvfX1mdW5jdGlvbiBmXyh0LGUpe2xldCBuPW51bGw7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsaW8se2dldDooKT0+e2lmKG51bGw9PT1uKXtjb25zdCBvPW1fKHQsZSksaT1scih7dXNhZ2U6MCxraW5kOiJkaXJlY3RpdmUiLHR5cGU6dH0pO249aS5jb21waWxlRmFjdG9yeShaeSxgbmc6Ly8vJHt0Lm5hbWV9L8m1ZmFjLmpzYCx7bmFtZTpvLm1ldGFkYXRhLm5hbWUsdHlwZTpvLm1ldGFkYXRhLnR5cGUsdHlwZUFyZ3VtZW50Q291bnQ6MCxkZXBzOllyKHQpLHRhcmdldDppLkZhY3RvcnlUYXJnZXQuRGlyZWN0aXZlfSl9cmV0dXJuIG59LGNvbmZpZ3VyYWJsZTohIW5nRGV2TW9kZX0pfWZ1bmN0aW9uIHVfKHQpe3JldHVybiBPYmplY3QuZ2V0UHJvdG90eXBlT2YodC5wcm90b3R5cGUpPT09T2JqZWN0LnByb3RvdHlwZX1mdW5jdGlvbiBnXyh0LGUpe2NvbnN0IG49R3IoKSxvPW4ub3duUHJvcE1ldGFkYXRhKHQpO3JldHVybntuYW1lOnQubmFtZSx0eXBlOnQsc2VsZWN0b3I6dm9pZCAwIT09ZS5zZWxlY3Rvcj9lLnNlbGVjdG9yOm51bGwsaG9zdDplLmhvc3R8fEpuLHByb3BNZXRhZGF0YTpvLGlucHV0czplLmlucHV0c3x8UW4sb3V0cHV0czplLm91dHB1dHN8fFFuLHF1ZXJpZXM6X18odCxvLENfKSxsaWZlY3ljbGU6e3VzZXNPbkNoYW5nZXM6bi5oYXNMaWZlY3ljbGVIb29rKHQsIm5nT25DaGFuZ2VzIil9LHR5cGVTb3VyY2VTcGFuOm51bGwsdXNlc0luaGVyaXRhbmNlOiF1Xyh0KSxleHBvcnRBczooaT1lLmV4cG9ydEFzLHZvaWQgMD09PWk/bnVsbDp4XyhpKSkscHJvdmlkZXJzOmUucHJvdmlkZXJzfHxudWxsLHZpZXdRdWVyaWVzOl9fKHQsbyxNXyl9O3ZhciBpfWZ1bmN0aW9uIGhfKHQpe2NvbnN0IGU9T2JqZWN0LnByb3RvdHlwZTtsZXQgbj1PYmplY3QuZ2V0UHJvdG90eXBlT2YodC5wcm90b3R5cGUpLmNvbnN0cnVjdG9yO2Zvcig7biYmbiE9PWU7KV9vKG4pfHx5byhuKXx8IVBfKG4pfHxwXyhuLG51bGwpLG49T2JqZWN0LmdldFByb3RvdHlwZU9mKG4pfWZ1bmN0aW9uIGJfKHQpe3JldHVybiJzdHJpbmciPT10eXBlb2YgdD94Xyh0KTp0bih0KX1mdW5jdGlvbiB5Xyh0LGUpe3JldHVybntwcm9wZXJ0eU5hbWU6dCxwcmVkaWNhdGU6Yl8oZS5zZWxlY3RvciksZGVzY2VuZGFudHM6ZS5kZXNjZW5kYW50cyxmaXJzdDplLmZpcnN0LHJlYWQ6ZS5yZWFkP2UucmVhZDpudWxsLHN0YXRpYzohIWUuc3RhdGljLGVtaXREaXN0aW5jdENoYW5nZXNPbmx5OiEhZS5lbWl0RGlzdGluY3RDaGFuZ2VzT25seX19ZnVuY3Rpb24gX18odCxlLG4pe2NvbnN0IG89W107Zm9yKGNvbnN0IGkgaW4gZSlpZihlLmhhc093blByb3BlcnR5KGkpKXtjb25zdCBhPWVbaV07YS5mb3JFYWNoKChlPT57aWYobihlKSl7aWYoIWUuc2VsZWN0b3IpdGhyb3cgbmV3IEVycm9yKGBDYW4ndCBjb25zdHJ1Y3QgYSBxdWVyeSBmb3IgdGhlIHByb3BlcnR5ICIke2l9IiBvZiAiJHtzbih0KX0iIHNpbmNlIHRoZSBxdWVyeSBzZWxlY3RvciB3YXNuJ3QgZGVmaW5lZC5gKTtpZihhLnNvbWUodl8pKXRocm93IG5ldyBFcnJvcigiQ2Fubm90IGNvbWJpbmUgQElucHV0IGRlY29yYXRvcnMgd2l0aCBxdWVyeSBkZWNvcmF0b3JzIik7by5wdXNoKHlfKGksZSkpfX0pKX1yZXR1cm4gb31mdW5jdGlvbiBDXyh0KXtjb25zdCBlPXQubmdNZXRhZGF0YU5hbWU7cmV0dXJuIkNvbnRlbnRDaGlsZCI9PT1lfHwiQ29udGVudENoaWxkcmVuIj09PWV9ZnVuY3Rpb24gTV8odCl7Y29uc3QgZT10Lm5nTWV0YWRhdGFOYW1lO3JldHVybiJWaWV3Q2hpbGQiPT09ZXx8IlZpZXdDaGlsZHJlbiI9PT1lfWZ1bmN0aW9uIHZfKHQpe3JldHVybiJJbnB1dCI9PT10Lm5nTWV0YWRhdGFOYW1lfWZ1bmN0aW9uIHhfKHQpe3JldHVybiB0LnNwbGl0KCIsIikubWFwKCh0PT50LnRyaW0oKSkpfWNvbnN0IE9fPVsibmdPbkNoYW5nZXMiLCJuZ09uSW5pdCIsIm5nT25EZXN0cm95IiwibmdEb0NoZWNrIiwibmdBZnRlclZpZXdJbml0IiwibmdBZnRlclZpZXdDaGVja2VkIiwibmdBZnRlckNvbnRlbnRJbml0IiwibmdBZnRlckNvbnRlbnRDaGVja2VkIl07ZnVuY3Rpb24gUF8odCl7Y29uc3QgZT1HcigpO2lmKE9fLnNvbWUoKG49PmUuaGFzTGlmZWN5Y2xlSG9vayh0LG4pKSkpcmV0dXJuITA7Y29uc3Qgbj1lLnByb3BNZXRhZGF0YSh0KTtmb3IoY29uc3QgdCBpbiBuKXtjb25zdCBlPW5bdF07Zm9yKGxldCB0PTA7dDxlLmxlbmd0aDt0Kyspe2NvbnN0IG49ZVt0XSxvPW4ubmdNZXRhZGF0YU5hbWU7aWYodl8obil8fENfKG4pfHxNXyhuKXx8Ik91dHB1dCI9PT1vfHwiSG9zdEJpbmRpbmciPT09b3x8Ikhvc3RMaXN0ZW5lciI9PT1vKXJldHVybiEwfX1yZXR1cm4hMX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovZnVuY3Rpb24gd18odCxlKXtyZXR1cm57dHlwZTp0LG5hbWU6dC5uYW1lLHBpcGVOYW1lOmUubmFtZSxwdXJlOnZvaWQgMD09PWUucHVyZXx8ZS5wdXJlfX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY29uc3Qga189WGEoIkRpcmVjdGl2ZSIsKCh0PXt9KT0+dCksdm9pZCAwLHZvaWQgMCwoKHQsZSk9PklfKHQsZSkpKSxTXz1YYSgiQ29tcG9uZW50IiwoKHQ9e30pPT5PYmplY3QuYXNzaWduKHtjaGFuZ2VEZXRlY3Rpb246am4uRGVmYXVsdH0sdCkpLGtfLHZvaWQgMCwoKHQsZSk9Pk5fKHQsZSkpKSxEXz1YYSgiUGlwZSIsKHQ9Pk9iamVjdC5hc3NpZ24oe3B1cmU6ITB9LHQpKSx2b2lkIDAsdm9pZCAwLCgodCxlKT0+SF8odCxlKSkpLFJfPVFhKCJJbnB1dCIsKHQ9Pih7YmluZGluZ1Byb3BlcnR5TmFtZTp0fSkpKSxFXz1RYSgiT3V0cHV0IiwodD0+KHtiaW5kaW5nUHJvcGVydHlOYW1lOnR9KSkpLEFfPVFhKCJIb3N0QmluZGluZyIsKHQ9Pih7aG9zdFByb3BlcnR5TmFtZTp0fSkpKSxUXz1RYSgiSG9zdExpc3RlbmVyIiwoKHQsZSk9Pih7ZXZlbnROYW1lOnQsYXJnczplfSkpKSxOXz1mdW5jdGlvbiB6Xyh0LGUpeygidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmS24oKTtsZXQgbj1udWxsOyEoZnVuY3Rpb24gbyh0LGUpe0pyKGUpJiYoWHIuc2V0KHQsZSksS3IuYWRkKHQpKX0pKHQsZSksZl8odCxlKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwkbix7Z2V0OigpPT57aWYobnVsbD09PW4pe2NvbnN0IG89bHIoe3VzYWdlOjAsa2luZDoiY29tcG9uZW50Iix0eXBlOnR9KTtpZihKcihlKSl7Y29uc3Qgbj1bYENvbXBvbmVudCAnJHt0Lm5hbWV9JyBpcyBub3QgcmVzb2x2ZWQ6YF07dGhyb3cgZS50ZW1wbGF0ZVVybCYmbi5wdXNoKGAgLSB0ZW1wbGF0ZVVybDogJHtlLnRlbXBsYXRlVXJsfWApLGUuc3R5bGVVcmxzJiZlLnN0eWxlVXJscy5sZW5ndGgmJm4ucHVzaChgIC0gc3R5bGVVcmxzOiAke0pTT04uc3RyaW5naWZ5KGUuc3R5bGVVcmxzKX1gKSxuLnB1c2goIkRpZCB5b3UgcnVuIGFuZCB3YWl0IGZvciAncmVzb2x2ZUNvbXBvbmVudFJlc291cmNlcygpJz8iKSxuZXcgRXJyb3Iobi5qb2luKCJcbiIpKX1jb25zdCBpPShmdW5jdGlvbiBvKCl7cmV0dXJuIFh5fSkoKTtsZXQgYT1lLnByZXNlcnZlV2hpdGVzcGFjZXM7dm9pZCAwPT09YSYmKGE9bnVsbCE9PWkmJnZvaWQgMCE9PWkucHJlc2VydmVXaGl0ZXNwYWNlcyYmaS5wcmVzZXJ2ZVdoaXRlc3BhY2VzKTtsZXQgcj1lLmVuY2Fwc3VsYXRpb247dm9pZCAwPT09ciYmKHI9bnVsbCE9PWkmJnZvaWQgMCE9PWkuZGVmYXVsdEVuY2Fwc3VsYXRpb24/aS5kZWZhdWx0RW5jYXBzdWxhdGlvbjpXbi5FbXVsYXRlZCk7Y29uc3Qgcz1lLnRlbXBsYXRlVXJsfHxgbmc6Ly8vJHt0Lm5hbWV9L3RlbXBsYXRlLmh0bWxgLGw9T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGdfKHQsZSkpLHt0eXBlU291cmNlU3BhbjpvLmNyZWF0ZVBhcnNlU291cmNlU3BhbigiQ29tcG9uZW50Iix0Lm5hbWUscyksdGVtcGxhdGU6ZS50ZW1wbGF0ZXx8IiIscHJlc2VydmVXaGl0ZXNwYWNlczphLHN0eWxlczplLnN0eWxlc3x8UW4sYW5pbWF0aW9uczplLmFuaW1hdGlvbnMsZGlyZWN0aXZlczpbXSxjaGFuZ2VEZXRlY3Rpb246ZS5jaGFuZ2VEZXRlY3Rpb24scGlwZXM6bmV3IE1hcCxlbmNhcHN1bGF0aW9uOnIsaW50ZXJwb2xhdGlvbjplLmludGVycG9sYXRpb24sdmlld1Byb3ZpZGVyczplLnZpZXdQcm92aWRlcnN8fG51bGx9KTtkXysrO3RyeXtsLnVzZXNJbmhlcml0YW5jZSYmaF8odCksbj1vLmNvbXBpbGVDb21wb25lbnQoWnkscyxsKX1maW5hbGx5e2RfLS19aWYoMD09PWRfJiYoZnVuY3Rpb24gaSgpe2lmKCFKeSl7Snk9ITA7dHJ5e2ZvcihsZXQgdD1LeS5sZW5ndGgtMTt0Pj0wO3QtLSl7Y29uc3R7bW9kdWxlVHlwZTplLG5nTW9kdWxlOm59PUt5W3RdO24uZGVjbGFyYXRpb25zJiZuLmRlY2xhcmF0aW9ucy5ldmVyeShReSkmJihLeS5zcGxpY2UodCwxKSxhXyhlLG4pKX19ZmluYWxseXtKeT0hMX19fSkoKSwoZnVuY3Rpb24gYSh0KXtyZXR1cm4gdm9pZCAwIT09dC5uZ1NlbGVjdG9yU2NvcGV9KSh0KSl7Y29uc3QgZT1zXyh0Lm5nU2VsZWN0b3JTY29wZSk7cl8obixlKX19cmV0dXJuIG59LGNvbmZpZ3VyYWJsZTohIW5nRGV2TW9kZX0pfSxJXz1wXyxIXz1mdW5jdGlvbiBGXyh0LGUpe2xldCBuPW51bGwsbz1udWxsO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGlvLHtnZXQ6KCk9PntpZihudWxsPT09byl7Y29uc3Qgbj13Xyh0LGUpLGk9bHIoe3VzYWdlOjAsa2luZDoicGlwZSIsdHlwZTpuLnR5cGV9KTtvPWkuY29tcGlsZUZhY3RvcnkoWnksYG5nOi8vLyR7bi5uYW1lfS/JtWZhYy5qc2Ase25hbWU6bi5uYW1lLHR5cGU6bi50eXBlLHR5cGVBcmd1bWVudENvdW50OjAsZGVwczpZcih0KSx0YXJnZXQ6aS5GYWN0b3J5VGFyZ2V0LlBpcGV9KX1yZXR1cm4gb30sY29uZmlndXJhYmxlOiEhbmdEZXZNb2RlfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsZW8se2dldDooKT0+e2lmKG51bGw9PT1uKXtjb25zdCBvPXdfKHQsZSksaT1scih7dXNhZ2U6MCxraW5kOiJwaXBlIix0eXBlOm8udHlwZX0pO249aS5jb21waWxlUGlwZShaeSxgbmc6Ly8vJHtvLm5hbWV9L8m1cGlwZS5qc2Asbyl9cmV0dXJuIG59LGNvbmZpZ3VyYWJsZTohIW5nRGV2TW9kZX0pfSxMXz1YYSgiTmdNb2R1bGUiLCh0PT50KSx2b2lkIDAsdm9pZCAwLCgodCxlKT0+Ql8odCxlKSkpLEJfPWZ1bmN0aW9uIFZfKHQsZT17fSl7IShmdW5jdGlvbiBuKHQsZSxvPSExKXtuZ0Rldk1vZGUmJnhuKHQsIlJlcXVpcmVkIHZhbHVlIG1vZHVsZVR5cGUiKSxuZ0Rldk1vZGUmJnhuKGUsIlJlcXVpcmVkIHZhbHVlIG5nTW9kdWxlIik7Y29uc3QgaT1wcihlLmRlY2xhcmF0aW9uc3x8UW4pO2xldCBhPW51bGw7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsbm8se2NvbmZpZ3VyYWJsZTohMCxnZXQ6KCk9PntpZihudWxsPT09YSl7aWYobmdEZXZNb2RlJiZlLmltcG9ydHMmJmUuaW1wb3J0cy5pbmRleE9mKHQpPi0xKXRocm93IG5ldyBFcnJvcihgJyR7c24odCl9JyBtb2R1bGUgY2FuJ3QgaW1wb3J0IGl0c2VsZmApO2NvbnN0IG49bHIoe3VzYWdlOjAsa2luZDoiTmdNb2R1bGUiLHR5cGU6dH0pO2E9bi5jb21waWxlTmdNb2R1bGUoWnksYG5nOi8vLyR7dC5uYW1lfS/JtW1vZC5qc2Ase3R5cGU6dCxib290c3RyYXA6cHIoZS5ib290c3RyYXB8fFFuKS5tYXAodG4pLGRlY2xhcmF0aW9uczppLm1hcCh0biksaW1wb3J0czpwcihlLmltcG9ydHN8fFFuKS5tYXAodG4pLm1hcChsXyksZXhwb3J0czpwcihlLmV4cG9ydHN8fFFuKS5tYXAodG4pLm1hcChsXyksc2NoZW1hczplLnNjaGVtYXM/cHIoZS5zY2hlbWFzKTpudWxsLGlkOmUuaWR8fG51bGx9KSxhLnNjaGVtYXN8fChhLnNjaGVtYXM9W10pfXJldHVybiBhfX0pO2xldCByPW51bGw7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsaW8se2dldDooKT0+e2lmKG51bGw9PT1yKXtjb25zdCBlPWxyKHt1c2FnZTowLGtpbmQ6Ik5nTW9kdWxlIix0eXBlOnR9KTtyPWUuY29tcGlsZUZhY3RvcnkoWnksYG5nOi8vLyR7dC5uYW1lfS/JtWZhYy5qc2Ase25hbWU6dC5uYW1lLHR5cGU6dCxkZXBzOllyKHQpLHRhcmdldDplLkZhY3RvcnlUYXJnZXQuTmdNb2R1bGUsdHlwZUFyZ3VtZW50Q291bnQ6MH0pfXJldHVybiByfSxjb25maWd1cmFibGU6ISFuZ0Rldk1vZGV9KTtsZXQgcz1udWxsO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LE5uLHtnZXQ6KCk9PntpZihudWxsPT09cyl7bmdEZXZNb2RlJiYkeSh0LG8pO2NvbnN0IG49e25hbWU6dC5uYW1lLHR5cGU6dCxwcm92aWRlcnM6ZS5wcm92aWRlcnN8fFFuLGltcG9ydHM6WyhlLmltcG9ydHN8fFFuKS5tYXAodG4pLChlLmV4cG9ydHN8fFFuKS5tYXAodG4pXX0saT1scih7dXNhZ2U6MCxraW5kOiJOZ01vZHVsZSIsdHlwZTp0fSk7cz1pLmNvbXBpbGVJbmplY3RvcihaeSxgbmc6Ly8vJHt0Lm5hbWV9L8m1aW5qLmpzYCxuKX1yZXR1cm4gc30sY29uZmlndXJhYmxlOiEhbmdEZXZNb2RlfSl9KSh0LGUpLChmdW5jdGlvbiBvKHQsZSl7S3kucHVzaCh7bW9kdWxlVHlwZTp0LG5nTW9kdWxlOmV9KX0pKHQsZSl9LGpfPW5ldyBlcigiQXBwbGljYXRpb24gSW5pdGlhbGl6ZXIiKTtjbGFzcyBVX3tjb25zdHJ1Y3Rvcih0KXt0aGlzLmFwcEluaXRzPXQsdGhpcy5yZXNvbHZlPVloLHRoaXMucmVqZWN0PVloLHRoaXMuaW5pdGlhbGl6ZWQ9ITEsdGhpcy5kb25lPSExLHRoaXMuZG9uZVByb21pc2U9bmV3IFByb21pc2UoKCh0LGUpPT57dGhpcy5yZXNvbHZlPXQsdGhpcy5yZWplY3Q9ZX0pKX1ydW5Jbml0aWFsaXplcnMoKXtpZih0aGlzLmluaXRpYWxpemVkKXJldHVybjtjb25zdCB0PVtdLGU9KCk9Pnt0aGlzLmRvbmU9ITAsdGhpcy5yZXNvbHZlKCl9O2lmKHRoaXMuYXBwSW5pdHMpZm9yKGxldCBlPTA7ZTx0aGlzLmFwcEluaXRzLmxlbmd0aDtlKyspe2NvbnN0IG49dGhpcy5hcHBJbml0c1tlXSgpO2lmKGtmKG4pKXQucHVzaChuKTtlbHNlIGlmKERmKG4pKXtjb25zdCBlPW5ldyBQcm9taXNlKCgodCxlKT0+e24uc3Vic2NyaWJlKHtjb21wbGV0ZTp0LGVycm9yOmV9KX0pKTt0LnB1c2goZSl9fVByb21pc2UuYWxsKHQpLnRoZW4oKCgpPT57ZSgpfSkpLmNhdGNoKCh0PT57dGhpcy5yZWplY3QodCl9KSksMD09PXQubGVuZ3RoJiZlKCksdGhpcy5pbml0aWFsaXplZD0hMH19VV8uybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFVfKShUcihqXyw4KSl9LFVfLsm1cHJvdj1Tbih7dG9rZW46VV8sZmFjdG9yeTpVXy7JtWZhY30pLFVfLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W2pfXX0se3R5cGU6QnJ9XX1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoVV8sW3t0eXBlOlVtfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltqX119LHt0eXBlOkJyfV19XX0pLG51bGwpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY29uc3QgV189bmV3IGVyKCJBcHBJZCIpO2NvbnN0IEdfPXtwcm92aWRlOldfLHVzZUZhY3Rvcnk6ZnVuY3Rpb24gWV8oKXtyZXR1cm5gJHtxXygpfSR7cV8oKX0ke3FfKCl9YH0sZGVwczpbXX07ZnVuY3Rpb24gcV8oKXtyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZSg5NytNYXRoLmZsb29yKDI1Kk1hdGgucmFuZG9tKCkpKX1jb25zdCBaXz1uZXcgZXIoIlBsYXRmb3JtIEluaXRpYWxpemVyIiksWF89bmV3IGVyKCJQbGF0Zm9ybSBJRCIpLEtfPW5ldyBlcigiYXBwQm9vdHN0cmFwTGlzdGVuZXIiKTtuZXcgZXIoIkFwcGxpY2F0aW9uIFBhY2thZ2VzIFJvb3QgVVJMIik7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjbGFzcyBKX3tsb2codCl7Y29uc29sZS5sb2codCl9d2Fybih0KXtjb25zb2xlLndhcm4odCl9fUpfLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxKXyl9LEpfLsm1cHJvdj1Tbih7dG9rZW46Sl8sZmFjdG9yeTpKXy7JtWZhY30pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoSl8sW3t0eXBlOlVtfV0sbnVsbCxudWxsKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNvbnN0IFFfPW5ldyBlcigiTG9jYWxlSWQiKSwkXz1uZXcgZXIoIkRlZmF1bHRDdXJyZW5jeUNvZGUiKTt2YXIgdEM7bmV3IGVyKCJUcmFuc2xhdGlvbnMiKSxuZXcgZXIoIlRyYW5zbGF0aW9uc0Zvcm1hdCIpLChmdW5jdGlvbih0KXt0W3QuRXJyb3I9MF09IkVycm9yIix0W3QuV2FybmluZz0xXT0iV2FybmluZyIsdFt0Lklnbm9yZT0yXT0iSWdub3JlIn0pKHRDfHwodEM9e30pKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNsYXNzIGVDe2NvbnN0cnVjdG9yKHQsZSl7dGhpcy5uZ01vZHVsZUZhY3Rvcnk9dCx0aGlzLmNvbXBvbmVudEZhY3Rvcmllcz1lfX1jb25zdCBuQz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IG55KHQpfSxvQz1uQyxpQz1mdW5jdGlvbih0KXtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKG5DKHQpKX0sYUM9ZnVuY3Rpb24odCl7Y29uc3QgZT1uQyh0KSxuPVNsKE1vKHQpLmRlY2xhcmF0aW9ucykucmVkdWNlKCgodCxlKT0+e2NvbnN0IG49eW8oZSk7cmV0dXJuIG4mJnQucHVzaChuZXcgS2IobikpLHR9KSxbXSk7cmV0dXJuIG5ldyBlQyhlLG4pfSxyQz1hQyxzQz1mdW5jdGlvbih0KXtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGFDKHQpKX07Y2xhc3MgbEN7Y29uc3RydWN0b3IoKXt0aGlzLmNvbXBpbGVNb2R1bGVTeW5jPW9DLHRoaXMuY29tcGlsZU1vZHVsZUFzeW5jPWlDLHRoaXMuY29tcGlsZU1vZHVsZUFuZEFsbENvbXBvbmVudHNTeW5jPXJDLHRoaXMuY29tcGlsZU1vZHVsZUFuZEFsbENvbXBvbmVudHNBc3luYz1zQ31jbGVhckNhY2hlKCl7fWNsZWFyQ2FjaGVGb3IodCl7fWdldE1vZHVsZUlkKHQpe319bEMuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGxDKX0sbEMuybVwcm92PVNuKHt0b2tlbjpsQyxmYWN0b3J5OmxDLsm1ZmFjfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihsQyxbe3R5cGU6VW19XSwoZnVuY3Rpb24oKXtyZXR1cm5bXX0pLG51bGwpO2NvbnN0IGNDPW5ldyBlcigiY29tcGlsZXJPcHRpb25zIiksZEM9UHJvbWlzZS5yZXNvbHZlKDApOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9mdW5jdGlvbiBwQyh0KXsidW5kZWZpbmVkIj09dHlwZW9mIFpvbmU/ZEMudGhlbigoKCk9Pnt0JiZ0LmFwcGx5KG51bGwsbnVsbCl9KSk6Wm9uZS5jdXJyZW50LnNjaGVkdWxlTWljcm9UYXNrKCJzY2hlZHVsZU1pY3JvdGFzayIsdCl9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3MgbUN7Y29uc3RydWN0b3Ioe2VuYWJsZUxvbmdTdGFja1RyYWNlOnQ9ITEsc2hvdWxkQ29hbGVzY2VFdmVudENoYW5nZURldGVjdGlvbjplPSExLHNob3VsZENvYWxlc2NlUnVuQ2hhbmdlRGV0ZWN0aW9uOm49ITF9KXtpZih0aGlzLmhhc1BlbmRpbmdNYWNyb3Rhc2tzPSExLHRoaXMuaGFzUGVuZGluZ01pY3JvdGFza3M9ITEsdGhpcy5pc1N0YWJsZT0hMCx0aGlzLm9uVW5zdGFibGU9bmV3IFN5KCExKSx0aGlzLm9uTWljcm90YXNrRW1wdHk9bmV3IFN5KCExKSx0aGlzLm9uU3RhYmxlPW5ldyBTeSghMSksdGhpcy5vbkVycm9yPW5ldyBTeSghMSksInVuZGVmaW5lZCI9PXR5cGVvZiBab25lKXRocm93IG5ldyBFcnJvcigiSW4gdGhpcyBjb25maWd1cmF0aW9uIEFuZ3VsYXIgcmVxdWlyZXMgWm9uZS5qcyIpO1pvbmUuYXNzZXJ0Wm9uZVBhdGNoZWQoKTtjb25zdCBvPXRoaXM7by5fbmVzdGluZz0wLG8uX291dGVyPW8uX2lubmVyPVpvbmUuY3VycmVudCxab25lLlRhc2tUcmFja2luZ1pvbmVTcGVjJiYoby5faW5uZXI9by5faW5uZXIuZm9yayhuZXcgWm9uZS5UYXNrVHJhY2tpbmdab25lU3BlYykpLHQmJlpvbmUubG9uZ1N0YWNrVHJhY2Vab25lU3BlYyYmKG8uX2lubmVyPW8uX2lubmVyLmZvcmsoWm9uZS5sb25nU3RhY2tUcmFjZVpvbmVTcGVjKSksby5zaG91bGRDb2FsZXNjZUV2ZW50Q2hhbmdlRGV0ZWN0aW9uPSFuJiZlLG8uc2hvdWxkQ29hbGVzY2VSdW5DaGFuZ2VEZXRlY3Rpb249bixvLmxhc3RSZXF1ZXN0QW5pbWF0aW9uRnJhbWVJZD0tMSxvLm5hdGl2ZVJlcXVlc3RBbmltYXRpb25GcmFtZT0oZnVuY3Rpb24gaSgpe2xldCB0PVhuLnJlcXVlc3RBbmltYXRpb25GcmFtZSxlPVhuLmNhbmNlbEFuaW1hdGlvbkZyYW1lO2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgWm9uZSYmdCYmZSl7Y29uc3Qgbj10W1pvbmUuX19zeW1ib2xfXygiT3JpZ2luYWxEZWxlZ2F0ZSIpXTtuJiYodD1uKTtjb25zdCBvPWVbWm9uZS5fX3N5bWJvbF9fKCJPcmlnaW5hbERlbGVnYXRlIildO28mJihlPW8pfXJldHVybntuYXRpdmVSZXF1ZXN0QW5pbWF0aW9uRnJhbWU6dCxuYXRpdmVDYW5jZWxBbmltYXRpb25GcmFtZTplfX0pKCkubmF0aXZlUmVxdWVzdEFuaW1hdGlvbkZyYW1lLChmdW5jdGlvbiBhKHQpe2NvbnN0IGU9KCk9PnshKGZ1bmN0aW9uIGUodCl7aWYodC5pc0NoZWNrU3RhYmxlUnVubmluZ3x8LTEhPT10Lmxhc3RSZXF1ZXN0QW5pbWF0aW9uRnJhbWVJZClyZXR1cm47dC5sYXN0UmVxdWVzdEFuaW1hdGlvbkZyYW1lSWQ9dC5uYXRpdmVSZXF1ZXN0QW5pbWF0aW9uRnJhbWUuY2FsbChYbiwoKCk9Pnt0LmZha2VUb3BFdmVudFRhc2t8fCh0LmZha2VUb3BFdmVudFRhc2s9Wm9uZS5yb290LnNjaGVkdWxlRXZlbnRUYXNrKCJmYWtlVG9wRXZlbnRUYXNrIiwoKCk9Pnt0Lmxhc3RSZXF1ZXN0QW5pbWF0aW9uRnJhbWVJZD0tMSxnQyh0KSx0LmlzQ2hlY2tTdGFibGVSdW5uaW5nPSEwLHVDKHQpLHQuaXNDaGVja1N0YWJsZVJ1bm5pbmc9ITF9KSx2b2lkIDAsKCgpPT57fSksKCgpPT57fSkpKSx0LmZha2VUb3BFdmVudFRhc2suaW52b2tlKCl9KSksZ0ModCl9KSh0KX07dC5faW5uZXI9dC5faW5uZXIuZm9yayh7bmFtZToiYW5ndWxhciIscHJvcGVydGllczp7aXNBbmd1bGFyWm9uZTohMH0sb25JbnZva2VUYXNrOihuLG8saSxhLHIscyk9Pnt0cnl7cmV0dXJuIGhDKHQpLG4uaW52b2tlVGFzayhpLGEscixzKX1maW5hbGx5eyh0LnNob3VsZENvYWxlc2NlRXZlbnRDaGFuZ2VEZXRlY3Rpb24mJiJldmVudFRhc2siPT09YS50eXBlfHx0LnNob3VsZENvYWxlc2NlUnVuQ2hhbmdlRGV0ZWN0aW9uKSYmZSgpLGJDKHQpfX0sb25JbnZva2U6KG4sbyxpLGEscixzLGwpPT57dHJ5e3JldHVybiBoQyh0KSxuLmludm9rZShpLGEscixzLGwpfWZpbmFsbHl7dC5zaG91bGRDb2FsZXNjZVJ1bkNoYW5nZURldGVjdGlvbiYmZSgpLGJDKHQpfX0sb25IYXNUYXNrOihlLG4sbyxpKT0+e2UuaGFzVGFzayhvLGkpLG49PT1vJiYoIm1pY3JvVGFzayI9PWkuY2hhbmdlPyh0Ll9oYXNQZW5kaW5nTWljcm90YXNrcz1pLm1pY3JvVGFzayxnQyh0KSx1Qyh0KSk6Im1hY3JvVGFzayI9PWkuY2hhbmdlJiYodC5oYXNQZW5kaW5nTWFjcm90YXNrcz1pLm1hY3JvVGFzaykpfSxvbkhhbmRsZUVycm9yOihlLG4sbyxpKT0+KGUuaGFuZGxlRXJyb3IobyxpKSx0LnJ1bk91dHNpZGVBbmd1bGFyKCgoKT0+dC5vbkVycm9yLmVtaXQoaSkpKSwhMSl9KX0pKG8pfXN0YXRpYyBpc0luQW5ndWxhclpvbmUoKXtyZXR1cm4hMD09PVpvbmUuY3VycmVudC5nZXQoImlzQW5ndWxhclpvbmUiKX1zdGF0aWMgYXNzZXJ0SW5Bbmd1bGFyWm9uZSgpe2lmKCFtQy5pc0luQW5ndWxhclpvbmUoKSl0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIHRvIGJlIGluIEFuZ3VsYXIgWm9uZSwgYnV0IGl0IGlzIG5vdCEiKX1zdGF0aWMgYXNzZXJ0Tm90SW5Bbmd1bGFyWm9uZSgpe2lmKG1DLmlzSW5Bbmd1bGFyWm9uZSgpKXRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgdG8gbm90IGJlIGluIEFuZ3VsYXIgWm9uZSwgYnV0IGl0IGlzISIpfXJ1bih0LGUsbil7cmV0dXJuIHRoaXMuX2lubmVyLnJ1bih0LGUsbil9cnVuVGFzayh0LGUsbixvKXtjb25zdCBpPXRoaXMuX2lubmVyLGE9aS5zY2hlZHVsZUV2ZW50VGFzaygiTmdab25lRXZlbnQ6ICIrbyx0LGZDLFloLFloKTt0cnl7cmV0dXJuIGkucnVuVGFzayhhLGUsbil9ZmluYWxseXtpLmNhbmNlbFRhc2soYSl9fXJ1bkd1YXJkZWQodCxlLG4pe3JldHVybiB0aGlzLl9pbm5lci5ydW5HdWFyZGVkKHQsZSxuKX1ydW5PdXRzaWRlQW5ndWxhcih0KXtyZXR1cm4gdGhpcy5fb3V0ZXIucnVuKHQpfX1jb25zdCBmQz17fTtmdW5jdGlvbiB1Qyh0KXtpZigwPT10Ll9uZXN0aW5nJiYhdC5oYXNQZW5kaW5nTWljcm90YXNrcyYmIXQuaXNTdGFibGUpdHJ5e3QuX25lc3RpbmcrKyx0Lm9uTWljcm90YXNrRW1wdHkuZW1pdChudWxsKX1maW5hbGx5e2lmKHQuX25lc3RpbmctLSwhdC5oYXNQZW5kaW5nTWljcm90YXNrcyl0cnl7dC5ydW5PdXRzaWRlQW5ndWxhcigoKCk9PnQub25TdGFibGUuZW1pdChudWxsKSkpfWZpbmFsbHl7dC5pc1N0YWJsZT0hMH19fWZ1bmN0aW9uIGdDKHQpe3QuaGFzUGVuZGluZ01pY3JvdGFza3M9ISEodC5faGFzUGVuZGluZ01pY3JvdGFza3N8fCh0LnNob3VsZENvYWxlc2NlRXZlbnRDaGFuZ2VEZXRlY3Rpb258fHQuc2hvdWxkQ29hbGVzY2VSdW5DaGFuZ2VEZXRlY3Rpb24pJiYtMSE9PXQubGFzdFJlcXVlc3RBbmltYXRpb25GcmFtZUlkKX1mdW5jdGlvbiBoQyh0KXt0Ll9uZXN0aW5nKyssdC5pc1N0YWJsZSYmKHQuaXNTdGFibGU9ITEsdC5vblVuc3RhYmxlLmVtaXQobnVsbCkpfWZ1bmN0aW9uIGJDKHQpe3QuX25lc3RpbmctLSx1Qyh0KX1jbGFzcyB5Q3tjb25zdHJ1Y3Rvcigpe3RoaXMuaGFzUGVuZGluZ01pY3JvdGFza3M9ITEsdGhpcy5oYXNQZW5kaW5nTWFjcm90YXNrcz0hMSx0aGlzLmlzU3RhYmxlPSEwLHRoaXMub25VbnN0YWJsZT1uZXcgU3ksdGhpcy5vbk1pY3JvdGFza0VtcHR5PW5ldyBTeSx0aGlzLm9uU3RhYmxlPW5ldyBTeSx0aGlzLm9uRXJyb3I9bmV3IFN5fXJ1bih0LGUsbil7cmV0dXJuIHQuYXBwbHkoZSxuKX1ydW5HdWFyZGVkKHQsZSxuKXtyZXR1cm4gdC5hcHBseShlLG4pfXJ1bk91dHNpZGVBbmd1bGFyKHQpe3JldHVybiB0KCl9cnVuVGFzayh0LGUsbixvKXtyZXR1cm4gdC5hcHBseShlLG4pfX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY2xhc3MgX0N7Y29uc3RydWN0b3IodCl7dGhpcy5fbmdab25lPXQsdGhpcy5fcGVuZGluZ0NvdW50PTAsdGhpcy5faXNab25lU3RhYmxlPSEwLHRoaXMuX2RpZFdvcms9ITEsdGhpcy5fY2FsbGJhY2tzPVtdLHRoaXMudGFza1RyYWNraW5nWm9uZT1udWxsLHRoaXMuX3dhdGNoQW5ndWxhckV2ZW50cygpLHQucnVuKCgoKT0+e3RoaXMudGFza1RyYWNraW5nWm9uZT0idW5kZWZpbmVkIj09dHlwZW9mIFpvbmU/bnVsbDpab25lLmN1cnJlbnQuZ2V0KCJUYXNrVHJhY2tpbmdab25lIil9KSl9X3dhdGNoQW5ndWxhckV2ZW50cygpe3RoaXMuX25nWm9uZS5vblVuc3RhYmxlLnN1YnNjcmliZSh7bmV4dDooKT0+e3RoaXMuX2RpZFdvcms9ITAsdGhpcy5faXNab25lU3RhYmxlPSExfX0pLHRoaXMuX25nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKCk9Pnt0aGlzLl9uZ1pvbmUub25TdGFibGUuc3Vic2NyaWJlKHtuZXh0OigpPT57bUMuYXNzZXJ0Tm90SW5Bbmd1bGFyWm9uZSgpLHBDKCgoKT0+e3RoaXMuX2lzWm9uZVN0YWJsZT0hMCx0aGlzLl9ydW5DYWxsYmFja3NJZlJlYWR5KCl9KSl9fSl9KSl9aW5jcmVhc2VQZW5kaW5nUmVxdWVzdENvdW50KCl7cmV0dXJuIHRoaXMuX3BlbmRpbmdDb3VudCs9MSx0aGlzLl9kaWRXb3JrPSEwLHRoaXMuX3BlbmRpbmdDb3VudH1kZWNyZWFzZVBlbmRpbmdSZXF1ZXN0Q291bnQoKXtpZih0aGlzLl9wZW5kaW5nQ291bnQtPTEsdGhpcy5fcGVuZGluZ0NvdW50PDApdGhyb3cgbmV3IEVycm9yKCJwZW5kaW5nIGFzeW5jIHJlcXVlc3RzIGJlbG93IHplcm8iKTtyZXR1cm4gdGhpcy5fcnVuQ2FsbGJhY2tzSWZSZWFkeSgpLHRoaXMuX3BlbmRpbmdDb3VudH1pc1N0YWJsZSgpe3JldHVybiB0aGlzLl9pc1pvbmVTdGFibGUmJjA9PT10aGlzLl9wZW5kaW5nQ291bnQmJiF0aGlzLl9uZ1pvbmUuaGFzUGVuZGluZ01hY3JvdGFza3N9X3J1bkNhbGxiYWNrc0lmUmVhZHkoKXtpZih0aGlzLmlzU3RhYmxlKCkpcEMoKCgpPT57Zm9yKDswIT09dGhpcy5fY2FsbGJhY2tzLmxlbmd0aDspe2xldCB0PXRoaXMuX2NhbGxiYWNrcy5wb3AoKTtjbGVhclRpbWVvdXQodC50aW1lb3V0SWQpLHQuZG9uZUNiKHRoaXMuX2RpZFdvcmspfXRoaXMuX2RpZFdvcms9ITF9KSk7ZWxzZXtsZXQgdD10aGlzLmdldFBlbmRpbmdUYXNrcygpO3RoaXMuX2NhbGxiYWNrcz10aGlzLl9jYWxsYmFja3MuZmlsdGVyKChlPT4hZS51cGRhdGVDYnx8IWUudXBkYXRlQ2IodCl8fChjbGVhclRpbWVvdXQoZS50aW1lb3V0SWQpLCExKSkpLHRoaXMuX2RpZFdvcms9ITB9fWdldFBlbmRpbmdUYXNrcygpe3JldHVybiB0aGlzLnRhc2tUcmFja2luZ1pvbmU/dGhpcy50YXNrVHJhY2tpbmdab25lLm1hY3JvVGFza3MubWFwKCh0PT4oe3NvdXJjZTp0LnNvdXJjZSxjcmVhdGlvbkxvY2F0aW9uOnQuY3JlYXRpb25Mb2NhdGlvbixkYXRhOnQuZGF0YX0pKSk6W119YWRkQ2FsbGJhY2sodCxlLG4pe2xldCBvPS0xO2UmJmU+MCYmKG89c2V0VGltZW91dCgoKCk9Pnt0aGlzLl9jYWxsYmFja3M9dGhpcy5fY2FsbGJhY2tzLmZpbHRlcigodD0+dC50aW1lb3V0SWQhPT1vKSksdCh0aGlzLl9kaWRXb3JrLHRoaXMuZ2V0UGVuZGluZ1Rhc2tzKCkpfSksZSkpLHRoaXMuX2NhbGxiYWNrcy5wdXNoKHtkb25lQ2I6dCx0aW1lb3V0SWQ6byx1cGRhdGVDYjpufSl9d2hlblN0YWJsZSh0LGUsbil7aWYobiYmIXRoaXMudGFza1RyYWNraW5nWm9uZSl0aHJvdyBuZXcgRXJyb3IoJ1Rhc2sgdHJhY2tpbmcgem9uZSBpcyByZXF1aXJlZCB3aGVuIHBhc3NpbmcgYW4gdXBkYXRlIGNhbGxiYWNrIHRvIHdoZW5TdGFibGUoKS4gSXMgInpvbmUuanMvcGx1Z2lucy90YXNrLXRyYWNraW5nIiBsb2FkZWQ/Jyk7dGhpcy5hZGRDYWxsYmFjayh0LGUsbiksdGhpcy5fcnVuQ2FsbGJhY2tzSWZSZWFkeSgpfWdldFBlbmRpbmdSZXF1ZXN0Q291bnQoKXtyZXR1cm4gdGhpcy5fcGVuZGluZ0NvdW50fWZpbmRQcm92aWRlcnModCxlLG4pe3JldHVybltdfX1fQy7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8X0MpKFRyKG1DKSl9LF9DLsm1cHJvdj1Tbih7dG9rZW46X0MsZmFjdG9yeTpfQy7JtWZhY30pLF9DLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6bUN9XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKF9DLFt7dHlwZTpVbX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTptQ31dfSksbnVsbCk7Y2xhc3MgQ0N7Y29uc3RydWN0b3IoKXt0aGlzLl9hcHBsaWNhdGlvbnM9bmV3IE1hcCx2Qy5hZGRUb1dpbmRvdyh0aGlzKX1yZWdpc3RlckFwcGxpY2F0aW9uKHQsZSl7dGhpcy5fYXBwbGljYXRpb25zLnNldCh0LGUpfXVucmVnaXN0ZXJBcHBsaWNhdGlvbih0KXt0aGlzLl9hcHBsaWNhdGlvbnMuZGVsZXRlKHQpfXVucmVnaXN0ZXJBbGxBcHBsaWNhdGlvbnMoKXt0aGlzLl9hcHBsaWNhdGlvbnMuY2xlYXIoKX1nZXRUZXN0YWJpbGl0eSh0KXtyZXR1cm4gdGhpcy5fYXBwbGljYXRpb25zLmdldCh0KXx8bnVsbH1nZXRBbGxUZXN0YWJpbGl0aWVzKCl7cmV0dXJuIEFycmF5LmZyb20odGhpcy5fYXBwbGljYXRpb25zLnZhbHVlcygpKX1nZXRBbGxSb290RWxlbWVudHMoKXtyZXR1cm4gQXJyYXkuZnJvbSh0aGlzLl9hcHBsaWNhdGlvbnMua2V5cygpKX1maW5kVGVzdGFiaWxpdHlJblRyZWUodCxlPSEwKXtyZXR1cm4gdkMuZmluZFRlc3RhYmlsaXR5SW5UcmVlKHRoaXMsdCxlKX19Q0MuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fENDKX0sQ0MuybVwcm92PVNuKHt0b2tlbjpDQyxmYWN0b3J5OkNDLsm1ZmFjfSksQ0MuY3RvclBhcmFtZXRlcnM9KCk9PltdLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoQ0MsW3t0eXBlOlVtfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW119KSxudWxsKTtsZXQgTUMsdkM9bmV3IGNsYXNze2FkZFRvV2luZG93KHQpe31maW5kVGVzdGFiaWxpdHlJblRyZWUodCxlLG4pe3JldHVybiBudWxsfX0seEM9ITAsT0M9ITE7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2Z1bmN0aW9uIFBDKCl7cmV0dXJuIE9DPSEwLHhDfWxldCB3Qz1mdW5jdGlvbiBrQyh0LGUsbil7bmdEZXZNb2RlJiYoZnVuY3Rpb24gbyh0LGU9IlR5cGUgcGFzc2VkIGluIGlzIG5vdCBOZ01vZHVsZVR5cGUsIGl0IGRvZXMgbm90IGhhdmUgJ8m1bW9kJyBwcm9wZXJ0eS4iKXtNbyh0KXx8T24oZSl9KShuKTtjb25zdCBpPW5ldyBueShuKTtpZigidW5kZWZpbmVkIiE9dHlwZW9mIG5nSml0TW9kZSYmIW5nSml0TW9kZSlyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGkpO2NvbnN0IGE9dC5nZXQoY0MsW10pLmNvbmNhdChlKTtpZigoZnVuY3Rpb24gcih0KXtpZihudWxsIT09WHkpe2lmKHQuZGVmYXVsdEVuY2Fwc3VsYXRpb24hPT1YeS5kZWZhdWx0RW5jYXBzdWxhdGlvbilyZXR1cm4gdm9pZChuZ0Rldk1vZGUmJmNvbnNvbGUuZXJyb3IoIlByb3ZpZGVkIHZhbHVlIGZvciBgZGVmYXVsdEVuY2Fwc3VsYXRpb25gIGNhbiBub3QgYmUgY2hhbmdlZCBvbmNlIGl0IGhhcyBiZWVuIHNldC4iKSk7aWYodC5wcmVzZXJ2ZVdoaXRlc3BhY2VzIT09WHkucHJlc2VydmVXaGl0ZXNwYWNlcylyZXR1cm4gdm9pZChuZ0Rldk1vZGUmJmNvbnNvbGUuZXJyb3IoIlByb3ZpZGVkIHZhbHVlIGZvciBgcHJlc2VydmVXaGl0ZXNwYWNlc2AgY2FuIG5vdCBiZSBjaGFuZ2VkIG9uY2UgaXQgaGFzIGJlZW4gc2V0LiIpKX1YeT10fSkoe2RlZmF1bHRFbmNhcHN1bGF0aW9uOkxDKGEubWFwKCh0PT50LmRlZmF1bHRFbmNhcHN1bGF0aW9uKSkpLHByZXNlcnZlV2hpdGVzcGFjZXM6TEMoYS5tYXAoKHQ9PnQucHJlc2VydmVXaGl0ZXNwYWNlcykpKX0pLChmdW5jdGlvbiBzKCl7cmV0dXJuIDA9PT1Yci5zaXplfSkoKSlyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGkpO2NvbnN0IGw9KGZ1bmN0aW9uIGModCl7Y29uc3QgZT1bXTtyZXR1cm4gdC5mb3JFYWNoKCh0PT50JiZlLnB1c2goLi4udCkpKSxlfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8pKGEubWFwKCh0PT50LnByb3ZpZGVycykpKTtpZigwPT09bC5sZW5ndGgpcmV0dXJuIFByb21pc2UucmVzb2x2ZShpKTtjb25zdCBkPWxyKHt1c2FnZTowLGtpbmQ6Ik5nTW9kdWxlIix0eXBlOm59KSxwPU5wLmNyZWF0ZSh7cHJvdmlkZXJzOmx9KS5nZXQoZC5SZXNvdXJjZUxvYWRlcik7cmV0dXJuIFpyKCh0PT5Qcm9taXNlLnJlc29sdmUocC5nZXQodCkpKSkudGhlbigoKCk9PmkpKX07bGV0IFNDPWZ1bmN0aW9uIERDKCl7bmdEZXZNb2RlJiYoZnVuY3Rpb24gdCgpe3FwfHwocXA9ITAsWnAoIsm1c2V0UHJvZmlsZXIiLCRvKSxacCgiZ2V0RGlyZWN0aXZlTWV0YWRhdGEiLFZwKSxacCgiZ2V0Q29tcG9uZW50Iix6cCksWnAoImdldENvbnRleHQiLElwKSxacCgiZ2V0TGlzdGVuZXJzIixVcCksWnAoImdldE93bmluZ0NvbXBvbmVudCIsSHApLFpwKCJnZXRIb3N0RWxlbWVudCIsanApLFpwKCJnZXRJbmplY3RvciIsTHApLFpwKCJnZXRSb290Q29tcG9uZW50cyIsRnApLFpwKCJnZXREaXJlY3RpdmVzIixCcCksWnAoImFwcGx5Q2hhbmdlcyIsWXApKX0pKCl9LFJDPWZ1bmN0aW9uIEVDKHQpe3JldHVybiB0LmlzQm91bmRUb01vZHVsZX07Y29uc3QgQUM9bmV3IGVyKCJBbGxvd011bHRpcGxlVG9rZW4iKTtmdW5jdGlvbiBUQyh0LGUsbj1bXSl7Y29uc3Qgbz1gUGxhdGZvcm06ICR7ZX1gLGk9bmV3IGVyKG8pO3JldHVybihlPVtdKT0+e2xldCBhPU5DKCk7aWYoIWF8fGEuaW5qZWN0b3IuZ2V0KEFDLCExKSlpZih0KXQobi5jb25jYXQoZSkuY29uY2F0KHtwcm92aWRlOmksdXNlVmFsdWU6ITB9KSk7ZWxzZXtjb25zdCB0PW4uY29uY2F0KGUpLmNvbmNhdCh7cHJvdmlkZTppLHVzZVZhbHVlOiEwfSx7cHJvdmlkZTpDcCx1c2VWYWx1ZToicGxhdGZvcm0ifSk7IShmdW5jdGlvbiByKHQpe2lmKE1DJiYhTUMuZGVzdHJveWVkJiYhTUMuaW5qZWN0b3IuZ2V0KEFDLCExKSl0aHJvdyBuZXcgRXJyb3IoIlRoZXJlIGNhbiBiZSBvbmx5IG9uZSBwbGF0Zm9ybS4gRGVzdHJveSB0aGUgcHJldmlvdXMgb25lIHRvIGNyZWF0ZSBhIG5ldyBvbmUuIik7U0MoKSxNQz10LmdldCh6Qyk7Y29uc3QgZT10LmdldChaXyxudWxsKTtyZXR1cm4gZSYmZS5mb3JFYWNoKCh0PT50KCkpKSxNQ30pKE5wLmNyZWF0ZSh7cHJvdmlkZXJzOnQsbmFtZTpvfSkpfXJldHVybihmdW5jdGlvbiBzKHQpe2NvbnN0IGU9TkMoKTtpZighZSl0aHJvdyBuZXcgRXJyb3IoIk5vIHBsYXRmb3JtIGV4aXN0cyEiKTtpZighZS5pbmplY3Rvci5nZXQodCxudWxsKSl0aHJvdyBuZXcgRXJyb3IoIkEgcGxhdGZvcm0gd2l0aCBhIGRpZmZlcmVudCBjb25maWd1cmF0aW9uIGhhcyBiZWVuIGNyZWF0ZWQuIFBsZWFzZSBkZXN0cm95IGl0IGZpcnN0LiIpO3JldHVybiBlfSkoaSl9fWZ1bmN0aW9uIE5DKCl7cmV0dXJuIE1DJiYhTUMuZGVzdHJveWVkP01DOm51bGx9Y2xhc3MgekN7Y29uc3RydWN0b3IodCl7dGhpcy5faW5qZWN0b3I9dCx0aGlzLl9tb2R1bGVzPVtdLHRoaXMuX2Rlc3Ryb3lMaXN0ZW5lcnM9W10sdGhpcy5fZGVzdHJveWVkPSExfWJvb3RzdHJhcE1vZHVsZUZhY3RvcnkodCxlKXtjb25zdCBuPShmdW5jdGlvbiBvKHQsZSl7bGV0IG47bj0ibm9vcCI9PT10P25ldyB5QzooInpvbmUuanMiPT09dD92b2lkIDA6dCl8fG5ldyBtQyh7ZW5hYmxlTG9uZ1N0YWNrVHJhY2U6UEMoKSxzaG91bGRDb2FsZXNjZUV2ZW50Q2hhbmdlRGV0ZWN0aW9uOiEhKG51bGw9PWU/dm9pZCAwOmUubmdab25lRXZlbnRDb2FsZXNjaW5nKSxzaG91bGRDb2FsZXNjZVJ1bkNoYW5nZURldGVjdGlvbjohIShudWxsPT1lP3ZvaWQgMDplLm5nWm9uZVJ1bkNvYWxlc2NpbmcpfSk7cmV0dXJuIG59KShlP2Uubmdab25lOnZvaWQgMCx7bmdab25lRXZlbnRDb2FsZXNjaW5nOmUmJmUubmdab25lRXZlbnRDb2FsZXNjaW5nfHwhMSxuZ1pvbmVSdW5Db2FsZXNjaW5nOmUmJmUubmdab25lUnVuQ29hbGVzY2luZ3x8ITF9KSxpPVt7cHJvdmlkZTptQyx1c2VWYWx1ZTpufV07cmV0dXJuIG4ucnVuKCgoKT0+e2NvbnN0IGU9TnAuY3JlYXRlKHtwcm92aWRlcnM6aSxwYXJlbnQ6dGhpcy5pbmplY3RvcixuYW1lOnQubW9kdWxlVHlwZS5uYW1lfSksbz10LmNyZWF0ZShlKSxhPW8uaW5qZWN0b3IuZ2V0KHVsLG51bGwpO2lmKCFhKXRocm93IG5ldyBFcnJvcigiTm8gRXJyb3JIYW5kbGVyLiBJcyBwbGF0Zm9ybSBtb2R1bGUgKEJyb3dzZXJNb2R1bGUpIGluY2x1ZGVkPyIpO3JldHVybiBuLnJ1bk91dHNpZGVBbmd1bGFyKCgoKT0+e2NvbnN0IHQ9bi5vbkVycm9yLnN1YnNjcmliZSh7bmV4dDp0PT57YS5oYW5kbGVFcnJvcih0KX19KTtvLm9uRGVzdHJveSgoKCk9PntGQyh0aGlzLl9tb2R1bGVzLG8pLHQudW5zdWJzY3JpYmUoKX0pKX0pKSwoZnVuY3Rpb24gcih0LGUsbil7dHJ5e2NvbnN0IG89bigpO3JldHVybiBrZihvKT9vLmNhdGNoKChuPT57dGhyb3cgZS5ydW5PdXRzaWRlQW5ndWxhcigoKCk9PnQuaGFuZGxlRXJyb3IobikpKSxufSkpOm99Y2F0Y2gobil7dGhyb3cgZS5ydW5PdXRzaWRlQW5ndWxhcigoKCk9PnQuaGFuZGxlRXJyb3IobikpKSxufX0pKGEsbiwoKCk9Pntjb25zdCB0PW8uaW5qZWN0b3IuZ2V0KFVfKTtyZXR1cm4gdC5ydW5Jbml0aWFsaXplcnMoKSx0LmRvbmVQcm9taXNlLnRoZW4oKCgpPT57UGcoby5pbmplY3Rvci5nZXQoUV8sQ2cpfHxDZyk7cmV0dXJuIHRoaXMuX21vZHVsZURvQm9vdHN0cmFwKG8pLG99KSl9KSl9KSl9Ym9vdHN0cmFwTW9kdWxlKHQsZT1bXSl7Y29uc3Qgbj1JQyh7fSxlKTtyZXR1cm4gd0ModGhpcy5pbmplY3RvcixuLHQpLnRoZW4oKHQ9PnRoaXMuYm9vdHN0cmFwTW9kdWxlRmFjdG9yeSh0LG4pKSl9X21vZHVsZURvQm9vdHN0cmFwKHQpe2NvbnN0IGU9dC5pbmplY3Rvci5nZXQoSEMpO2lmKHQuX2Jvb3RzdHJhcENvbXBvbmVudHMubGVuZ3RoPjApdC5fYm9vdHN0cmFwQ29tcG9uZW50cy5mb3JFYWNoKCh0PT5lLmJvb3RzdHJhcCh0KSkpO2Vsc2V7aWYoIXQuaW5zdGFuY2UubmdEb0Jvb3RzdHJhcCl0aHJvdyBuZXcgRXJyb3IoYFRoZSBtb2R1bGUgJHtLZSh0Lmluc3RhbmNlLmNvbnN0cnVjdG9yKX0gd2FzIGJvb3RzdHJhcHBlZCwgYnV0IGl0IGRvZXMgbm90IGRlY2xhcmUgIkBOZ01vZHVsZS5ib290c3RyYXAiIGNvbXBvbmVudHMgbm9yIGEgIm5nRG9Cb290c3RyYXAiIG1ldGhvZC4gUGxlYXNlIGRlZmluZSBvbmUgb2YgdGhlc2UuYCk7dC5pbnN0YW5jZS5uZ0RvQm9vdHN0cmFwKGUpfXRoaXMuX21vZHVsZXMucHVzaCh0KX1vbkRlc3Ryb3kodCl7dGhpcy5fZGVzdHJveUxpc3RlbmVycy5wdXNoKHQpfWdldCBpbmplY3Rvcigpe3JldHVybiB0aGlzLl9pbmplY3Rvcn1kZXN0cm95KCl7aWYodGhpcy5fZGVzdHJveWVkKXRocm93IG5ldyBFcnJvcigiVGhlIHBsYXRmb3JtIGhhcyBhbHJlYWR5IGJlZW4gZGVzdHJveWVkISIpO3RoaXMuX21vZHVsZXMuc2xpY2UoKS5mb3JFYWNoKCh0PT50LmRlc3Ryb3koKSkpLHRoaXMuX2Rlc3Ryb3lMaXN0ZW5lcnMuZm9yRWFjaCgodD0+dCgpKSksdGhpcy5fZGVzdHJveWVkPSEwfWdldCBkZXN0cm95ZWQoKXtyZXR1cm4gdGhpcy5fZGVzdHJveWVkfX1mdW5jdGlvbiBJQyh0LGUpe3JldHVybiB0PUFycmF5LmlzQXJyYXkoZSk/ZS5yZWR1Y2UoSUMsdCk6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLGUpfXpDLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHx6QykoVHIoTnApKX0sekMuybVwcm92PVNuKHt0b2tlbjp6QyxmYWN0b3J5OnpDLsm1ZmFjfSksekMuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpOcH1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoekMsW3t0eXBlOlVtfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOk5wfV19KSxudWxsKTtjbGFzcyBIQ3tjb25zdHJ1Y3Rvcih0LGUsbixvLGkpe3RoaXMuX3pvbmU9dCx0aGlzLl9pbmplY3Rvcj1lLHRoaXMuX2V4Y2VwdGlvbkhhbmRsZXI9bix0aGlzLl9jb21wb25lbnRGYWN0b3J5UmVzb2x2ZXI9byx0aGlzLl9pbml0U3RhdHVzPWksdGhpcy5fYm9vdHN0cmFwTGlzdGVuZXJzPVtdLHRoaXMuX3ZpZXdzPVtdLHRoaXMuX3J1bm5pbmdUaWNrPSExLHRoaXMuX3N0YWJsZT0hMCx0aGlzLmNvbXBvbmVudFR5cGVzPVtdLHRoaXMuY29tcG9uZW50cz1bXSx0aGlzLl9vbk1pY3JvdGFza0VtcHR5U3Vic2NyaXB0aW9uPXRoaXMuX3pvbmUub25NaWNyb3Rhc2tFbXB0eS5zdWJzY3JpYmUoe25leHQ6KCk9Pnt0aGlzLl96b25lLnJ1bigoKCk9Pnt0aGlzLnRpY2soKX0pKX19KTtjb25zdCBhPW5ldyBUKCh0PT57dGhpcy5fc3RhYmxlPXRoaXMuX3pvbmUuaXNTdGFibGUmJiF0aGlzLl96b25lLmhhc1BlbmRpbmdNYWNyb3Rhc2tzJiYhdGhpcy5fem9uZS5oYXNQZW5kaW5nTWljcm90YXNrcyx0aGlzLl96b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgoKT0+e3QubmV4dCh0aGlzLl9zdGFibGUpLHQuY29tcGxldGUoKX0pKX0pKSxyPW5ldyBUKCh0PT57bGV0IGU7dGhpcy5fem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKCk9PntlPXRoaXMuX3pvbmUub25TdGFibGUuc3Vic2NyaWJlKCgoKT0+e21DLmFzc2VydE5vdEluQW5ndWxhclpvbmUoKSxwQygoKCk9Pnt0aGlzLl9zdGFibGV8fHRoaXMuX3pvbmUuaGFzUGVuZGluZ01hY3JvdGFza3N8fHRoaXMuX3pvbmUuaGFzUGVuZGluZ01pY3JvdGFza3N8fCh0aGlzLl9zdGFibGU9ITAsdC5uZXh0KCEwKSl9KSl9KSl9KSk7Y29uc3Qgbj10aGlzLl96b25lLm9uVW5zdGFibGUuc3Vic2NyaWJlKCgoKT0+e21DLmFzc2VydEluQW5ndWxhclpvbmUoKSx0aGlzLl9zdGFibGUmJih0aGlzLl9zdGFibGU9ITEsdGhpcy5fem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKCk9Pnt0Lm5leHQoITEpfSkpKX0pKTtyZXR1cm4oKT0+e2UudW5zdWJzY3JpYmUoKSxuLnVuc3Vic2NyaWJlKCl9fSkpO3RoaXMuaXNTdGFibGU9cGUoYSxyLnBpcGUoSWUoKSkpfWJvb3RzdHJhcCh0LGUpe2lmKCF0aGlzLl9pbml0U3RhdHVzLmRvbmUpdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgYm9vdHN0cmFwIGFzIHRoZXJlIGFyZSBzdGlsbCBhc3luY2hyb25vdXMgaW5pdGlhbGl6ZXJzIHJ1bm5pbmcuIEJvb3RzdHJhcCBjb21wb25lbnRzIGluIHRoZSBgbmdEb0Jvb3RzdHJhcGAgbWV0aG9kIG9mIHRoZSByb290IG1vZHVsZS4iKTtsZXQgbjtuPXQgaW5zdGFuY2VvZiBVaD90OnRoaXMuX2NvbXBvbmVudEZhY3RvcnlSZXNvbHZlci5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeSh0KSx0aGlzLmNvbXBvbmVudFR5cGVzLnB1c2gobi5jb21wb25lbnRUeXBlKTtjb25zdCBvPVJDKG4pP3ZvaWQgMDp0aGlzLl9pbmplY3Rvci5nZXQoemIpLGk9bi5jcmVhdGUoTnAuTlVMTCxbXSxlfHxuLnNlbGVjdG9yLG8pLGE9aS5sb2NhdGlvbi5uYXRpdmVFbGVtZW50LHI9aS5pbmplY3Rvci5nZXQoX0MsbnVsbCkscz1yJiZpLmluamVjdG9yLmdldChDQyk7aWYociYmcyYmcy5yZWdpc3RlckFwcGxpY2F0aW9uKGEsciksaS5vbkRlc3Ryb3koKCgpPT57dGhpcy5kZXRhY2hWaWV3KGkuaG9zdFZpZXcpLEZDKHRoaXMuY29tcG9uZW50cyxpKSxzJiZzLnVucmVnaXN0ZXJBcHBsaWNhdGlvbihhKX0pKSx0aGlzLl9sb2FkQ29tcG9uZW50KGkpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUEMoKSl7dGhpcy5faW5qZWN0b3IuZ2V0KEpfKS5sb2coIkFuZ3VsYXIgaXMgcnVubmluZyBpbiBkZXZlbG9wbWVudCBtb2RlLiBDYWxsIGVuYWJsZVByb2RNb2RlKCkgdG8gZW5hYmxlIHByb2R1Y3Rpb24gbW9kZS4iKX1yZXR1cm4gaX10aWNrKCl7aWYodGhpcy5fcnVubmluZ1RpY2spdGhyb3cgbmV3IEVycm9yKCJBcHBsaWNhdGlvblJlZi50aWNrIGlzIGNhbGxlZCByZWN1cnNpdmVseSIpO3RyeXt0aGlzLl9ydW5uaW5nVGljaz0hMDtmb3IobGV0IHQgb2YgdGhpcy5fdmlld3MpdC5kZXRlY3RDaGFuZ2VzKCk7aWYoKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZQQygpKWZvcihsZXQgdCBvZiB0aGlzLl92aWV3cyl0LmNoZWNrTm9DaGFuZ2VzKCl9Y2F0Y2godCl7dGhpcy5fem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKCk9PnRoaXMuX2V4Y2VwdGlvbkhhbmRsZXIuaGFuZGxlRXJyb3IodCkpKX1maW5hbGx5e3RoaXMuX3J1bm5pbmdUaWNrPSExfX1hdHRhY2hWaWV3KHQpe2NvbnN0IGU9dDt0aGlzLl92aWV3cy5wdXNoKGUpLGUuYXR0YWNoVG9BcHBSZWYodGhpcyl9ZGV0YWNoVmlldyh0KXtjb25zdCBlPXQ7RkModGhpcy5fdmlld3MsZSksZS5kZXRhY2hGcm9tQXBwUmVmKCl9X2xvYWRDb21wb25lbnQodCl7dGhpcy5hdHRhY2hWaWV3KHQuaG9zdFZpZXcpLHRoaXMudGljaygpLHRoaXMuY29tcG9uZW50cy5wdXNoKHQpO3RoaXMuX2luamVjdG9yLmdldChLXyxbXSkuY29uY2F0KHRoaXMuX2Jvb3RzdHJhcExpc3RlbmVycykuZm9yRWFjaCgoZT0+ZSh0KSkpfW5nT25EZXN0cm95KCl7dGhpcy5fdmlld3Muc2xpY2UoKS5mb3JFYWNoKCh0PT50LmRlc3Ryb3koKSkpLHRoaXMuX29uTWljcm90YXNrRW1wdHlTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKX1nZXQgdmlld0NvdW50KCl7cmV0dXJuIHRoaXMuX3ZpZXdzLmxlbmd0aH19ZnVuY3Rpb24gRkModCxlKXtjb25zdCBuPXQuaW5kZXhPZihlKTtuPi0xJiZ0LnNwbGljZShuLDEpfWZ1bmN0aW9uIExDKHQpe2ZvcihsZXQgZT10Lmxlbmd0aC0xO2U+PTA7ZS0tKWlmKHZvaWQgMCE9PXRbZV0pcmV0dXJuIHRbZV19SEMuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEhDKShUcihtQyksVHIoTnApLFRyKHVsKSxUcihHaCksVHIoVV8pKX0sSEMuybVwcm92PVNuKHt0b2tlbjpIQyxmYWN0b3J5OkhDLsm1ZmFjfSksSEMuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTptQ30se3R5cGU6TnB9LHt0eXBlOnVsfSx7dHlwZTpHaH0se3R5cGU6VV99XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKEhDLFt7dHlwZTpVbX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTptQ30se3R5cGU6TnB9LHt0eXBlOnVsfSx7dHlwZTpHaH0se3R5cGU6VV99XX0pLG51bGwpO2NsYXNzIEJDe31jb25zdCBWQz17ZmFjdG9yeVBhdGhQcmVmaXg6IiIsZmFjdG9yeVBhdGhTdWZmaXg6Ii5uZ2ZhY3RvcnkifTtjbGFzcyBqQ3tjb25zdHJ1Y3Rvcih0LGUpe3RoaXMuX2NvbXBpbGVyPXQsdGhpcy5fY29uZmlnPWV8fFZDfWxvYWQodCl7cmV0dXJuIHRoaXMubG9hZEFuZENvbXBpbGUodCl9bG9hZEFuZENvbXBpbGUodCl7bGV0W2Usbl09dC5zcGxpdCgiIyIpO3JldHVybiB2b2lkIDA9PT1uJiYobj0iZGVmYXVsdCIpLFN5c3RlbS5pbXBvcnQoZSkudGhlbigodD0+dFtuXSkpLnRoZW4oKHQ9PlVDKHQsZSxuKSkpLnRoZW4oKHQ9PnRoaXMuX2NvbXBpbGVyLmNvbXBpbGVNb2R1bGVBc3luYyh0KSkpfWxvYWRGYWN0b3J5KHQpe2xldFtlLG5dPXQuc3BsaXQoIiMiKSxvPSJOZ0ZhY3RvcnkiO3JldHVybiB2b2lkIDA9PT1uJiYobj0iZGVmYXVsdCIsbz0iIiksU3lzdGVtLmltcG9ydCh0aGlzLl9jb25maWcuZmFjdG9yeVBhdGhQcmVmaXgrZSt0aGlzLl9jb25maWcuZmFjdG9yeVBhdGhTdWZmaXgpLnRoZW4oKHQ9PnRbbitvXSkpLnRoZW4oKHQ9PlVDKHQsZSxuKSkpfX1mdW5jdGlvbiBVQyh0LGUsbil7aWYoIXQpdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgZmluZCAnJHtufScgaW4gJyR7ZX0nYCk7cmV0dXJuIHR9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2pDLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxqQykoVHIobEMpLFRyKEJDLDgpKX0sakMuybVwcm92PVNuKHt0b2tlbjpqQyxmYWN0b3J5OmpDLsm1ZmFjfSksakMuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpsQ30se3R5cGU6QkMsZGVjb3JhdG9yczpbe3R5cGU6QnJ9XX1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoakMsW3t0eXBlOlVtfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmxDfSx7dHlwZTpCQyxkZWNvcmF0b3JzOlt7dHlwZTpCcn1dfV19KSxudWxsKTtjb25zdCBXQz1UQyhudWxsLCJjb3JlIixbe3Byb3ZpZGU6WF8sdXNlVmFsdWU6InVua25vd24ifSx7cHJvdmlkZTp6QyxkZXBzOltOcF19LHtwcm92aWRlOkNDLGRlcHM6W119LHtwcm92aWRlOkpfLGRlcHM6W119XSk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jb25zdCBHQz1be3Byb3ZpZGU6SEMsdXNlQ2xhc3M6SEMsZGVwczpbbUMsTnAsdWwsR2gsVV9dfSx7cHJvdmlkZTpYYixkZXBzOlttQ10sdXNlRmFjdG9yeTpmdW5jdGlvbiBZQyh0KXtsZXQgZT1bXTtyZXR1cm4gdC5vblN0YWJsZS5zdWJzY3JpYmUoKCgpPT57Zm9yKDtlLmxlbmd0aDspZS5wb3AoKSgpfSkpLGZ1bmN0aW9uKHQpe2UucHVzaCh0KX19fSx7cHJvdmlkZTpVXyx1c2VDbGFzczpVXyxkZXBzOltbbmV3IEJyLGpfXV19LHtwcm92aWRlOmxDLHVzZUNsYXNzOmxDLGRlcHM6W119LEdfLHtwcm92aWRlOmhiLHVzZUZhY3Rvcnk6Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpmdW5jdGlvbiBxQygpe3JldHVybiBrYn0sZGVwczpbXX0se3Byb3ZpZGU6eWIsdXNlRmFjdG9yeTpmdW5jdGlvbiBaQygpe3JldHVybiBTYn0sZGVwczpbXX0se3Byb3ZpZGU6UV8sdXNlRmFjdG9yeTpmdW5jdGlvbiBYQyh0KXtyZXR1cm4gUGcodD10fHwoZnVuY3Rpb24gZSgpe3JldHVybiJ1bmRlZmluZWQiIT10eXBlb2YgbmdJMThuQ2xvc3VyZU1vZGUmJm5nSTE4bkNsb3N1cmVNb2RlJiYidW5kZWZpbmVkIiE9dHlwZW9mIGdvb2cmJiJlbiIhPT1nb29nLmdldExvY2FsZSgpP2dvb2cuZ2V0TG9jYWxlKCk6InVuZGVmaW5lZCIhPXR5cGVvZiAkbG9jYWxpemUmJiRsb2NhbGl6ZS5sb2NhbGV8fENnfSkoKSksdH0sZGVwczpbW25ldyBMcihRXyksbmV3IEJyLG5ldyBqcl1dfSx7cHJvdmlkZTokXyx1c2VWYWx1ZToiVVNEIn1dO2NsYXNzIEtDe2NvbnN0cnVjdG9yKHQpe319dmFyIEpDLFFDO0tDLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxLQykoVHIoSEMpKX0sS0MuybVtb2Q9Zm8oe3R5cGU6S0N9KSxLQy7JtWluaj1Ebih7cHJvdmlkZXJzOkdDfSksS0MuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpIQ31dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoS0MsW3t0eXBlOkxfLGFyZ3M6W3twcm92aWRlcnM6R0N9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpIQ31dfSksbnVsbCksKGZ1bmN0aW9uKHQpe3RbdC5DcmVhdGVWaWV3Tm9kZXM9MF09IkNyZWF0ZVZpZXdOb2RlcyIsdFt0LkNoZWNrTm9DaGFuZ2VzPTFdPSJDaGVja05vQ2hhbmdlcyIsdFt0LkNoZWNrTm9DaGFuZ2VzUHJvamVjdGVkVmlld3M9Ml09IkNoZWNrTm9DaGFuZ2VzUHJvamVjdGVkVmlld3MiLHRbdC5DaGVja0FuZFVwZGF0ZT0zXT0iQ2hlY2tBbmRVcGRhdGUiLHRbdC5DaGVja0FuZFVwZGF0ZVByb2plY3RlZFZpZXdzPTRdPSJDaGVja0FuZFVwZGF0ZVByb2plY3RlZFZpZXdzIix0W3QuRGVzdHJveT01XT0iRGVzdHJveSJ9KShKQ3x8KEpDPXt9KSksKGZ1bmN0aW9uKHQpe3RbdC5jcmVhdGU9MF09ImNyZWF0ZSIsdFt0LmRldGVjdENoYW5nZXM9MV09ImRldGVjdENoYW5nZXMiLHRbdC5jaGVja05vQ2hhbmdlcz0yXT0iY2hlY2tOb0NoYW5nZXMiLHRbdC5kZXN0cm95PTNdPSJkZXN0cm95Iix0W3QuaGFuZGxlRXZlbnQ9NF09ImhhbmRsZUV2ZW50In0pKFFDfHwoUUM9e30pKSwKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCi8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KInVuZGVmaW5lZCIhPXR5cGVvZiBuZ0Rldk1vZGUmJm5nRGV2TW9kZSYmKFhuLiRsb2NhbGl6ZT1Ybi4kbG9jYWxpemV8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCJJdCBsb29rcyBsaWtlIHlvdXIgYXBwbGljYXRpb24gb3Igb25lIG9mIGl0cyBkZXBlbmRlbmNpZXMgaXMgdXNpbmcgaTE4bi5cbkFuZ3VsYXIgOSBpbnRyb2R1Y2VkIGEgZ2xvYmFsIGAkbG9jYWxpemUoKWAgZnVuY3Rpb24gdGhhdCBuZWVkcyB0byBiZSBsb2FkZWQuXG5QbGVhc2UgcnVuIGBuZyBhZGQgQGFuZ3VsYXIvbG9jYWxpemVgIGZyb20gdGhlIEFuZ3VsYXIgQ0xJLlxuKEZvciBub24tQ0xJIHByb2plY3RzLCBhZGQgYGltcG9ydCAnQGFuZ3VsYXIvbG9jYWxpemUvaW5pdCc7YCB0byB5b3VyIGBwb2x5ZmlsbHMudHNgIGZpbGUuXG5Gb3Igc2VydmVyLXNpZGUgcmVuZGVyaW5nIGFwcGxpY2F0aW9ucyBhZGQgdGhlIGltcG9ydCB0byB5b3VyIGBtYWluLnNlcnZlci50c2AgZmlsZS4pIil9KQovKioKICAgICAqIEBsaWNlbnNlIEFuZ3VsYXIgdjEyLjIuMQogICAgICogKGMpIDIwMTAtMjAyMSBHb29nbGUgTExDLiBodHRwczovL2FuZ3VsYXIuaW8vCiAgICAgKiBMaWNlbnNlOiBNSVQKICAgICAqLwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi87Y29uc3QgJEM9InVuZGVmaW5lZCIhPXR5cGVvZiBnbG9iYWxUaGlzJiZnbG9iYWxUaGlzLHRNPSJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93JiZ3aW5kb3csZU09InVuZGVmaW5lZCIhPXR5cGVvZiBzZWxmJiYidW5kZWZpbmVkIiE9dHlwZW9mIFdvcmtlckdsb2JhbFNjb3BlJiZzZWxmIGluc3RhbmNlb2YgV29ya2VyR2xvYmFsU2NvcGUmJnNlbGYsbk09InVuZGVmaW5lZCIhPXR5cGVvZiBnbG9iYWwmJmdsb2JhbCxvTT1mdW5jdGlvbih0LC4uLmUpe2lmKG9NLnRyYW5zbGF0ZSl7Y29uc3Qgbj1vTS50cmFuc2xhdGUodCxlKTt0PW5bMF0sZT1uWzFdfWxldCBuPWlNKHRbMF0sdC5yYXdbMF0pO2ZvcihsZXQgbz0xO288dC5sZW5ndGg7bysrKW4rPWVbby0xXStpTSh0W29dLHQucmF3W29dKTtyZXR1cm4gbn07ZnVuY3Rpb24gaU0odCxlKXtyZXR1cm4iOiI9PT1lLmNoYXJBdCgwKT90LnN1YnN0cmluZygoZnVuY3Rpb24gbih0LGUpe2ZvcihsZXQgbj0xLG89MTtuPHQubGVuZ3RoO24rKyxvKyspaWYoIlxcIj09PWVbb10pbysrO2Vsc2UgaWYoIjoiPT09dFtuXSlyZXR1cm4gbjt0aHJvdyBuZXcgRXJyb3IoYFVudGVybWluYXRlZCAkbG9jYWxpemUgbWV0YWRhdGEgYmxvY2sgaW4gIiR7ZX0iLmApfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovKSh0LGUpKzEpOnR9KCRDfHxuTXx8dE18fGVNKS4kbG9jYWxpemU9b007Ci8qKgogICAgICogQGxpY2Vuc2UgQW5ndWxhciB2MTIuMi4xCiAgICAgKiAoYykgMjAxMC0yMDIxIEdvb2dsZSBMTEMuIGh0dHBzOi8vYW5ndWxhci5pby8KICAgICAqIExpY2Vuc2U6IE1JVAogICAgICovCmxldCBhTT1udWxsO2Z1bmN0aW9uIHJNKCl7cmV0dXJuIGFNfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY29uc3Qgc009bmV3IGVyKCJEb2N1bWVudFRva2VuIik7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NsYXNzIGxNe2hpc3RvcnlHbyh0KXt0aHJvdyBuZXcgRXJyb3IoIk5vdCBpbXBsZW1lbnRlZCIpfX1mdW5jdGlvbiBjTSgpe3JldHVybiBUcihkTSl9bE0uybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGxNKX0sbE0uybVwcm92PVNuKHtmYWN0b3J5OmNNLHRva2VuOmxNLHByb3ZpZGVkSW46InBsYXRmb3JtIn0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIobE0sW3t0eXBlOlVtLGFyZ3M6W3twcm92aWRlZEluOiJwbGF0Zm9ybSIsdXNlRmFjdG9yeTpjTX1dfV0sbnVsbCxudWxsKSxuZXcgZXIoIkxvY2F0aW9uIEluaXRpYWxpemVkIik7Y2xhc3MgZE0gZXh0ZW5kcyBsTXtjb25zdHJ1Y3Rvcih0KXtzdXBlcigpLHRoaXMuX2RvYz10LHRoaXMuX2luaXQoKX1faW5pdCgpe3RoaXMubG9jYXRpb249d2luZG93LmxvY2F0aW9uLHRoaXMuX2hpc3Rvcnk9d2luZG93Lmhpc3Rvcnl9Z2V0QmFzZUhyZWZGcm9tRE9NKCl7cmV0dXJuIHJNKCkuZ2V0QmFzZUhyZWYodGhpcy5fZG9jKX1vblBvcFN0YXRlKHQpe2NvbnN0IGU9ck0oKS5nZXRHbG9iYWxFdmVudFRhcmdldCh0aGlzLl9kb2MsIndpbmRvdyIpO3JldHVybiBlLmFkZEV2ZW50TGlzdGVuZXIoInBvcHN0YXRlIix0LCExKSwoKT0+ZS5yZW1vdmVFdmVudExpc3RlbmVyKCJwb3BzdGF0ZSIsdCl9b25IYXNoQ2hhbmdlKHQpe2NvbnN0IGU9ck0oKS5nZXRHbG9iYWxFdmVudFRhcmdldCh0aGlzLl9kb2MsIndpbmRvdyIpO3JldHVybiBlLmFkZEV2ZW50TGlzdGVuZXIoImhhc2hjaGFuZ2UiLHQsITEpLCgpPT5lLnJlbW92ZUV2ZW50TGlzdGVuZXIoImhhc2hjaGFuZ2UiLHQpfWdldCBocmVmKCl7cmV0dXJuIHRoaXMubG9jYXRpb24uaHJlZn1nZXQgcHJvdG9jb2woKXtyZXR1cm4gdGhpcy5sb2NhdGlvbi5wcm90b2NvbH1nZXQgaG9zdG5hbWUoKXtyZXR1cm4gdGhpcy5sb2NhdGlvbi5ob3N0bmFtZX1nZXQgcG9ydCgpe3JldHVybiB0aGlzLmxvY2F0aW9uLnBvcnR9Z2V0IHBhdGhuYW1lKCl7cmV0dXJuIHRoaXMubG9jYXRpb24ucGF0aG5hbWV9Z2V0IHNlYXJjaCgpe3JldHVybiB0aGlzLmxvY2F0aW9uLnNlYXJjaH1nZXQgaGFzaCgpe3JldHVybiB0aGlzLmxvY2F0aW9uLmhhc2h9c2V0IHBhdGhuYW1lKHQpe3RoaXMubG9jYXRpb24ucGF0aG5hbWU9dH1wdXNoU3RhdGUodCxlLG4pe3BNKCk/dGhpcy5faGlzdG9yeS5wdXNoU3RhdGUodCxlLG4pOnRoaXMubG9jYXRpb24uaGFzaD1ufXJlcGxhY2VTdGF0ZSh0LGUsbil7cE0oKT90aGlzLl9oaXN0b3J5LnJlcGxhY2VTdGF0ZSh0LGUsbik6dGhpcy5sb2NhdGlvbi5oYXNoPW59Zm9yd2FyZCgpe3RoaXMuX2hpc3RvcnkuZm9yd2FyZCgpfWJhY2soKXt0aGlzLl9oaXN0b3J5LmJhY2soKX1oaXN0b3J5R28odD0wKXt0aGlzLl9oaXN0b3J5LmdvKHQpfWdldFN0YXRlKCl7cmV0dXJuIHRoaXMuX2hpc3Rvcnkuc3RhdGV9fWZ1bmN0aW9uIHBNKCl7cmV0dXJuISF3aW5kb3cuaGlzdG9yeS5wdXNoU3RhdGV9ZnVuY3Rpb24gbU0oKXtyZXR1cm4gbmV3IGRNKFRyKHNNKSl9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9mdW5jdGlvbiBmTSh0LGUpe2lmKDA9PXQubGVuZ3RoKXJldHVybiBlO2lmKDA9PWUubGVuZ3RoKXJldHVybiB0O2xldCBuPTA7cmV0dXJuIHQuZW5kc1dpdGgoIi8iKSYmbisrLGUuc3RhcnRzV2l0aCgiLyIpJiZuKyssMj09bj90K2Uuc3Vic3RyaW5nKDEpOjE9PW4/dCtlOnQrIi8iK2V9ZnVuY3Rpb24gdU0odCl7Y29uc3QgZT10Lm1hdGNoKC8jfFw/fCQvKSxuPWUmJmUuaW5kZXh8fHQubGVuZ3RoO3JldHVybiB0LnNsaWNlKDAsbi0oIi8iPT09dFtuLTFdPzE6MCkpK3Quc2xpY2Uobil9ZnVuY3Rpb24gZ00odCl7cmV0dXJuIHQmJiI/IiE9PXRbMF0/Ij8iK3Q6dH0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovZE0uybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGRNKShUcihzTSkpfSxkTS7JtXByb3Y9U24oe2ZhY3Rvcnk6bU0sdG9rZW46ZE0scHJvdmlkZWRJbjoicGxhdGZvcm0ifSksZE0uY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbc01dfV19XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKGRNLFt7dHlwZTpVbSxhcmdzOlt7cHJvdmlkZWRJbjoicGxhdGZvcm0iLHVzZUZhY3Rvcnk6bU19XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbc01dfV19XX0pLG51bGwpO2NsYXNzIGhNe2hpc3RvcnlHbyh0KXt0aHJvdyBuZXcgRXJyb3IoIk5vdCBpbXBsZW1lbnRlZCIpfX1mdW5jdGlvbiBiTSh0KXtjb25zdCBlPVRyKHNNKS5sb2NhdGlvbjtyZXR1cm4gbmV3IF9NKFRyKGxNKSxlJiZlLm9yaWdpbnx8IiIpfWhNLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxoTSl9LGhNLsm1cHJvdj1Tbih7ZmFjdG9yeTpiTSx0b2tlbjpoTSxwcm92aWRlZEluOiJyb290In0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoaE0sW3t0eXBlOlVtLGFyZ3M6W3twcm92aWRlZEluOiJyb290Iix1c2VGYWN0b3J5OmJNfV19XSxudWxsLG51bGwpO2NvbnN0IHlNPW5ldyBlcigiYXBwQmFzZUhyZWYiKTtjbGFzcyBfTSBleHRlbmRzIGhNe2NvbnN0cnVjdG9yKHQsZSl7aWYoc3VwZXIoKSx0aGlzLl9wbGF0Zm9ybUxvY2F0aW9uPXQsdGhpcy5fcmVtb3ZlTGlzdGVuZXJGbnM9W10sbnVsbD09ZSYmKGU9dGhpcy5fcGxhdGZvcm1Mb2NhdGlvbi5nZXRCYXNlSHJlZkZyb21ET00oKSksbnVsbD09ZSl0aHJvdyBuZXcgRXJyb3IoIk5vIGJhc2UgaHJlZiBzZXQuIFBsZWFzZSBwcm92aWRlIGEgdmFsdWUgZm9yIHRoZSBBUFBfQkFTRV9IUkVGIHRva2VuIG9yIGFkZCBhIGJhc2UgZWxlbWVudCB0byB0aGUgZG9jdW1lbnQuIik7dGhpcy5fYmFzZUhyZWY9ZX1uZ09uRGVzdHJveSgpe2Zvcig7dGhpcy5fcmVtb3ZlTGlzdGVuZXJGbnMubGVuZ3RoOyl0aGlzLl9yZW1vdmVMaXN0ZW5lckZucy5wb3AoKSgpfW9uUG9wU3RhdGUodCl7dGhpcy5fcmVtb3ZlTGlzdGVuZXJGbnMucHVzaCh0aGlzLl9wbGF0Zm9ybUxvY2F0aW9uLm9uUG9wU3RhdGUodCksdGhpcy5fcGxhdGZvcm1Mb2NhdGlvbi5vbkhhc2hDaGFuZ2UodCkpfWdldEJhc2VIcmVmKCl7cmV0dXJuIHRoaXMuX2Jhc2VIcmVmfXByZXBhcmVFeHRlcm5hbFVybCh0KXtyZXR1cm4gZk0odGhpcy5fYmFzZUhyZWYsdCl9cGF0aCh0PSExKXtjb25zdCBlPXRoaXMuX3BsYXRmb3JtTG9jYXRpb24ucGF0aG5hbWUrZ00odGhpcy5fcGxhdGZvcm1Mb2NhdGlvbi5zZWFyY2gpLG49dGhpcy5fcGxhdGZvcm1Mb2NhdGlvbi5oYXNoO3JldHVybiBuJiZ0P2Ake2V9JHtufWA6ZX1wdXNoU3RhdGUodCxlLG4sbyl7Y29uc3QgaT10aGlzLnByZXBhcmVFeHRlcm5hbFVybChuK2dNKG8pKTt0aGlzLl9wbGF0Zm9ybUxvY2F0aW9uLnB1c2hTdGF0ZSh0LGUsaSl9cmVwbGFjZVN0YXRlKHQsZSxuLG8pe2NvbnN0IGk9dGhpcy5wcmVwYXJlRXh0ZXJuYWxVcmwobitnTShvKSk7dGhpcy5fcGxhdGZvcm1Mb2NhdGlvbi5yZXBsYWNlU3RhdGUodCxlLGkpfWZvcndhcmQoKXt0aGlzLl9wbGF0Zm9ybUxvY2F0aW9uLmZvcndhcmQoKX1iYWNrKCl7dGhpcy5fcGxhdGZvcm1Mb2NhdGlvbi5iYWNrKCl9aGlzdG9yeUdvKHQ9MCl7dmFyIGUsbjtudWxsPT09KG49KGU9dGhpcy5fcGxhdGZvcm1Mb2NhdGlvbikuaGlzdG9yeUdvKXx8dm9pZCAwPT09bnx8bi5jYWxsKGUsdCl9fV9NLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxfTSkoVHIobE0pLFRyKHlNLDgpKX0sX00uybVwcm92PVNuKHt0b2tlbjpfTSxmYWN0b3J5Ol9NLsm1ZmFjfSksX00uY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpsTX0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOlt5TV19XX1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoX00sW3t0eXBlOlVtfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmxNfSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W3lNXX1dfV19KSxudWxsKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNsYXNzIENNIGV4dGVuZHMgaE17Y29uc3RydWN0b3IodCxlKXtzdXBlcigpLHRoaXMuX3BsYXRmb3JtTG9jYXRpb249dCx0aGlzLl9iYXNlSHJlZj0iIix0aGlzLl9yZW1vdmVMaXN0ZW5lckZucz1bXSxudWxsIT1lJiYodGhpcy5fYmFzZUhyZWY9ZSl9bmdPbkRlc3Ryb3koKXtmb3IoO3RoaXMuX3JlbW92ZUxpc3RlbmVyRm5zLmxlbmd0aDspdGhpcy5fcmVtb3ZlTGlzdGVuZXJGbnMucG9wKCkoKX1vblBvcFN0YXRlKHQpe3RoaXMuX3JlbW92ZUxpc3RlbmVyRm5zLnB1c2godGhpcy5fcGxhdGZvcm1Mb2NhdGlvbi5vblBvcFN0YXRlKHQpLHRoaXMuX3BsYXRmb3JtTG9jYXRpb24ub25IYXNoQ2hhbmdlKHQpKX1nZXRCYXNlSHJlZigpe3JldHVybiB0aGlzLl9iYXNlSHJlZn1wYXRoKHQ9ITEpe2xldCBlPXRoaXMuX3BsYXRmb3JtTG9jYXRpb24uaGFzaDtyZXR1cm4gbnVsbD09ZSYmKGU9IiMiKSxlLmxlbmd0aD4wP2Uuc3Vic3RyaW5nKDEpOmV9cHJlcGFyZUV4dGVybmFsVXJsKHQpe2NvbnN0IGU9Zk0odGhpcy5fYmFzZUhyZWYsdCk7cmV0dXJuIGUubGVuZ3RoPjA/IiMiK2U6ZX1wdXNoU3RhdGUodCxlLG4sbyl7bGV0IGk9dGhpcy5wcmVwYXJlRXh0ZXJuYWxVcmwobitnTShvKSk7MD09aS5sZW5ndGgmJihpPXRoaXMuX3BsYXRmb3JtTG9jYXRpb24ucGF0aG5hbWUpLHRoaXMuX3BsYXRmb3JtTG9jYXRpb24ucHVzaFN0YXRlKHQsZSxpKX1yZXBsYWNlU3RhdGUodCxlLG4sbyl7bGV0IGk9dGhpcy5wcmVwYXJlRXh0ZXJuYWxVcmwobitnTShvKSk7MD09aS5sZW5ndGgmJihpPXRoaXMuX3BsYXRmb3JtTG9jYXRpb24ucGF0aG5hbWUpLHRoaXMuX3BsYXRmb3JtTG9jYXRpb24ucmVwbGFjZVN0YXRlKHQsZSxpKX1mb3J3YXJkKCl7dGhpcy5fcGxhdGZvcm1Mb2NhdGlvbi5mb3J3YXJkKCl9YmFjaygpe3RoaXMuX3BsYXRmb3JtTG9jYXRpb24uYmFjaygpfWhpc3RvcnlHbyh0PTApe3ZhciBlLG47bnVsbD09PShuPShlPXRoaXMuX3BsYXRmb3JtTG9jYXRpb24pLmhpc3RvcnlHbyl8fHZvaWQgMD09PW58fG4uY2FsbChlLHQpfX1DTS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8Q00pKFRyKGxNKSxUcih5TSw4KSl9LENNLsm1cHJvdj1Tbih7dG9rZW46Q00sZmFjdG9yeTpDTS7JtWZhY30pLENNLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6bE19LHt0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpbeU1dfV19XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKENNLFt7dHlwZTpVbX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpsTX0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOlt5TV19XX1dfSksbnVsbCk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjbGFzcyBNTXtjb25zdHJ1Y3Rvcih0LGUpe3RoaXMuX3N1YmplY3Q9bmV3IFN5LHRoaXMuX3VybENoYW5nZUxpc3RlbmVycz1bXSx0aGlzLl9wbGF0Zm9ybVN0cmF0ZWd5PXQ7Y29uc3Qgbj10aGlzLl9wbGF0Zm9ybVN0cmF0ZWd5LmdldEJhc2VIcmVmKCk7dGhpcy5fcGxhdGZvcm1Mb2NhdGlvbj1lLHRoaXMuX2Jhc2VIcmVmPXVNKHhNKG4pKSx0aGlzLl9wbGF0Zm9ybVN0cmF0ZWd5Lm9uUG9wU3RhdGUoKHQ9Pnt0aGlzLl9zdWJqZWN0LmVtaXQoe3VybDp0aGlzLnBhdGgoITApLHBvcDohMCxzdGF0ZTp0LnN0YXRlLHR5cGU6dC50eXBlfSl9KSl9cGF0aCh0PSExKXtyZXR1cm4gdGhpcy5ub3JtYWxpemUodGhpcy5fcGxhdGZvcm1TdHJhdGVneS5wYXRoKHQpKX1nZXRTdGF0ZSgpe3JldHVybiB0aGlzLl9wbGF0Zm9ybUxvY2F0aW9uLmdldFN0YXRlKCl9aXNDdXJyZW50UGF0aEVxdWFsVG8odCxlPSIiKXtyZXR1cm4gdGhpcy5wYXRoKCk9PXRoaXMubm9ybWFsaXplKHQrZ00oZSkpfW5vcm1hbGl6ZSh0KXtyZXR1cm4gTU0uc3RyaXBUcmFpbGluZ1NsYXNoKChmdW5jdGlvbiBlKHQsbil7cmV0dXJuIHQmJm4uc3RhcnRzV2l0aCh0KT9uLnN1YnN0cmluZyh0Lmxlbmd0aCk6bn0pKHRoaXMuX2Jhc2VIcmVmLHhNKHQpKSl9cHJlcGFyZUV4dGVybmFsVXJsKHQpe3JldHVybiB0JiYiLyIhPT10WzBdJiYodD0iLyIrdCksdGhpcy5fcGxhdGZvcm1TdHJhdGVneS5wcmVwYXJlRXh0ZXJuYWxVcmwodCl9Z28odCxlPSIiLG49bnVsbCl7dGhpcy5fcGxhdGZvcm1TdHJhdGVneS5wdXNoU3RhdGUobiwiIix0LGUpLHRoaXMuX25vdGlmeVVybENoYW5nZUxpc3RlbmVycyh0aGlzLnByZXBhcmVFeHRlcm5hbFVybCh0K2dNKGUpKSxuKX1yZXBsYWNlU3RhdGUodCxlPSIiLG49bnVsbCl7dGhpcy5fcGxhdGZvcm1TdHJhdGVneS5yZXBsYWNlU3RhdGUobiwiIix0LGUpLHRoaXMuX25vdGlmeVVybENoYW5nZUxpc3RlbmVycyh0aGlzLnByZXBhcmVFeHRlcm5hbFVybCh0K2dNKGUpKSxuKX1mb3J3YXJkKCl7dGhpcy5fcGxhdGZvcm1TdHJhdGVneS5mb3J3YXJkKCl9YmFjaygpe3RoaXMuX3BsYXRmb3JtU3RyYXRlZ3kuYmFjaygpfWhpc3RvcnlHbyh0PTApe3ZhciBlLG47bnVsbD09PShuPShlPXRoaXMuX3BsYXRmb3JtU3RyYXRlZ3kpLmhpc3RvcnlHbyl8fHZvaWQgMD09PW58fG4uY2FsbChlLHQpfW9uVXJsQ2hhbmdlKHQpe3RoaXMuX3VybENoYW5nZUxpc3RlbmVycy5wdXNoKHQpLHRoaXMuX3VybENoYW5nZVN1YnNjcmlwdGlvbnx8KHRoaXMuX3VybENoYW5nZVN1YnNjcmlwdGlvbj10aGlzLnN1YnNjcmliZSgodD0+e3RoaXMuX25vdGlmeVVybENoYW5nZUxpc3RlbmVycyh0LnVybCx0LnN0YXRlKX0pKSl9X25vdGlmeVVybENoYW5nZUxpc3RlbmVycyh0PSIiLGUpe3RoaXMuX3VybENoYW5nZUxpc3RlbmVycy5mb3JFYWNoKChuPT5uKHQsZSkpKX1zdWJzY3JpYmUodCxlLG4pe3JldHVybiB0aGlzLl9zdWJqZWN0LnN1YnNjcmliZSh7bmV4dDp0LGVycm9yOmUsY29tcGxldGU6bn0pfX1mdW5jdGlvbiB2TSgpe3JldHVybiBuZXcgTU0oVHIoaE0pLFRyKGxNKSl9ZnVuY3Rpb24geE0odCl7cmV0dXJuIHQucmVwbGFjZSgvXC9pbmRleC5odG1sJC8sIiIpfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovTU0uybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fE1NKShUcihoTSksVHIobE0pKX0sTU0ubm9ybWFsaXplUXVlcnlQYXJhbXM9Z00sTU0uam9pbldpdGhTbGFzaD1mTSxNTS5zdHJpcFRyYWlsaW5nU2xhc2g9dU0sTU0uybVwcm92PVNuKHtmYWN0b3J5OnZNLHRva2VuOk1NLHByb3ZpZGVkSW46InJvb3QifSksTU0uY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpoTX0se3R5cGU6bE19XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKE1NLFt7dHlwZTpVbSxhcmdzOlt7cHJvdmlkZWRJbjoicm9vdCIsdXNlRmFjdG9yeTp2TX1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmhNfSx7dHlwZTpsTX1dfSksbnVsbCk7Y29uc3QgT009e0FEUDpbdm9pZCAwLHZvaWQgMCwwXSxBRk46W3ZvaWQgMCx2b2lkIDAsMF0sQUxMOlt2b2lkIDAsdm9pZCAwLDBdLEFNRDpbdm9pZCAwLHZvaWQgMCwyXSxBT0E6W3ZvaWQgMCwiS3oiXSxBUlM6W3ZvaWQgMCwiJCJdLEFVRDpbIkEkIiwiJCJdLEJBTTpbdm9pZCAwLCJLTSJdLEJCRDpbdm9pZCAwLCIkIl0sQkRUOlt2b2lkIDAsIuCnsyJdLEJIRDpbdm9pZCAwLHZvaWQgMCwzXSxCSUY6W3ZvaWQgMCx2b2lkIDAsMF0sQk1EOlt2b2lkIDAsIiQiXSxCTkQ6W3ZvaWQgMCwiJCJdLEJPQjpbdm9pZCAwLCJCcyJdLEJSTDpbIlIkIl0sQlNEOlt2b2lkIDAsIiQiXSxCV1A6W3ZvaWQgMCwiUCJdLEJZTjpbdm9pZCAwLCLRgC4iLDJdLEJZUjpbdm9pZCAwLHZvaWQgMCwwXSxCWkQ6W3ZvaWQgMCwiJCJdLENBRDpbIkNBJCIsIiQiLDJdLENIRjpbdm9pZCAwLHZvaWQgMCwyXSxDTEY6W3ZvaWQgMCx2b2lkIDAsNF0sQ0xQOlt2b2lkIDAsIiQiLDBdLENOWTpbIkNOwqUiLCLCpSJdLENPUDpbdm9pZCAwLCIkIiwyXSxDUkM6W3ZvaWQgMCwi4oKhIiwyXSxDVUM6W3ZvaWQgMCwiJCJdLENVUDpbdm9pZCAwLCIkIl0sQ1pLOlt2b2lkIDAsIkvEjSIsMl0sREpGOlt2b2lkIDAsdm9pZCAwLDBdLERLSzpbdm9pZCAwLCJrciIsMl0sRE9QOlt2b2lkIDAsIiQiXSxFR1A6W3ZvaWQgMCwiRcKjIl0sRVNQOlt2b2lkIDAsIuKCpyIsMF0sRVVSOlsi4oKsIl0sRkpEOlt2b2lkIDAsIiQiXSxGS1A6W3ZvaWQgMCwiwqMiXSxHQlA6WyLCoyJdLEdFTDpbdm9pZCAwLCLigr4iXSxHSVA6W3ZvaWQgMCwiwqMiXSxHTkY6W3ZvaWQgMCwiRkciLDBdLEdUUTpbdm9pZCAwLCJRIl0sR1lEOlt2b2lkIDAsIiQiLDJdLEhLRDpbIkhLJCIsIiQiXSxITkw6W3ZvaWQgMCwiTCJdLEhSSzpbdm9pZCAwLCJrbiJdLEhVRjpbdm9pZCAwLCJGdCIsMl0sSURSOlt2b2lkIDAsIlJwIiwyXSxJTFM6WyLigqoiXSxJTlI6WyLigrkiXSxJUUQ6W3ZvaWQgMCx2b2lkIDAsMF0sSVJSOlt2b2lkIDAsdm9pZCAwLDBdLElTSzpbdm9pZCAwLCJrciIsMF0sSVRMOlt2b2lkIDAsdm9pZCAwLDBdLEpNRDpbdm9pZCAwLCIkIl0sSk9EOlt2b2lkIDAsdm9pZCAwLDNdLEpQWTpbIsKlIix2b2lkIDAsMF0sS0hSOlt2b2lkIDAsIuGfmyJdLEtNRjpbdm9pZCAwLCJDRiIsMF0sS1BXOlt2b2lkIDAsIuKCqSIsMF0sS1JXOlsi4oKpIix2b2lkIDAsMF0sS1dEOlt2b2lkIDAsdm9pZCAwLDNdLEtZRDpbdm9pZCAwLCIkIl0sS1pUOlt2b2lkIDAsIuKCuCJdLExBSzpbdm9pZCAwLCLigq0iLDBdLExCUDpbdm9pZCAwLCJMwqMiLDBdLExLUjpbdm9pZCAwLCJScyJdLExSRDpbdm9pZCAwLCIkIl0sTFRMOlt2b2lkIDAsIkx0Il0sTFVGOlt2b2lkIDAsdm9pZCAwLDBdLExWTDpbdm9pZCAwLCJMcyJdLExZRDpbdm9pZCAwLHZvaWQgMCwzXSxNR0E6W3ZvaWQgMCwiQXIiLDBdLE1HRjpbdm9pZCAwLHZvaWQgMCwwXSxNTUs6W3ZvaWQgMCwiSyIsMF0sTU5UOlt2b2lkIDAsIuKCriIsMl0sTVJPOlt2b2lkIDAsdm9pZCAwLDBdLE1VUjpbdm9pZCAwLCJScyIsMl0sTVhOOlsiTVgkIiwiJCJdLE1ZUjpbdm9pZCAwLCJSTSJdLE5BRDpbdm9pZCAwLCIkIl0sTkdOOlt2b2lkIDAsIuKCpiJdLE5JTzpbdm9pZCAwLCJDJCJdLE5PSzpbdm9pZCAwLCJrciIsMl0sTlBSOlt2b2lkIDAsIlJzIl0sTlpEOlsiTlokIiwiJCJdLE9NUjpbdm9pZCAwLHZvaWQgMCwzXSxQSFA6W3ZvaWQgMCwi4oKxIl0sUEtSOlt2b2lkIDAsIlJzIiwyXSxQTE46W3ZvaWQgMCwiesWCIl0sUFlHOlt2b2lkIDAsIuKCsiIsMF0sUk9OOlt2b2lkIDAsImxlaSJdLFJTRDpbdm9pZCAwLHZvaWQgMCwwXSxSVUI6W3ZvaWQgMCwi4oK9Il0sUlVSOlt2b2lkIDAsItGALiJdLFJXRjpbdm9pZCAwLCJSRiIsMF0sU0JEOlt2b2lkIDAsIiQiXSxTRUs6W3ZvaWQgMCwia3IiLDJdLFNHRDpbdm9pZCAwLCIkIl0sU0hQOlt2b2lkIDAsIsKjIl0sU0xMOlt2b2lkIDAsdm9pZCAwLDBdLFNPUzpbdm9pZCAwLHZvaWQgMCwwXSxTUkQ6W3ZvaWQgMCwiJCJdLFNTUDpbdm9pZCAwLCLCoyJdLFNURDpbdm9pZCAwLHZvaWQgMCwwXSxTVE46W3ZvaWQgMCwiRGIiXSxTWVA6W3ZvaWQgMCwiwqMiLDBdLFRIQjpbdm9pZCAwLCLguL8iXSxUTU06W3ZvaWQgMCx2b2lkIDAsMF0sVE5EOlt2b2lkIDAsdm9pZCAwLDNdLFRPUDpbdm9pZCAwLCJUJCJdLFRSTDpbdm9pZCAwLHZvaWQgMCwwXSxUUlk6W3ZvaWQgMCwi4oK6Il0sVFREOlt2b2lkIDAsIiQiXSxUV0Q6WyJOVCQiLCIkIiwyXSxUWlM6W3ZvaWQgMCx2b2lkIDAsMl0sVUFIOlt2b2lkIDAsIuKCtCJdLFVHWDpbdm9pZCAwLHZvaWQgMCwwXSxVU0Q6WyIkIl0sVVlJOlt2b2lkIDAsdm9pZCAwLDBdLFVZVTpbdm9pZCAwLCIkIl0sVVlXOlt2b2lkIDAsdm9pZCAwLDRdLFVaUzpbdm9pZCAwLHZvaWQgMCwyXSxWRUY6W3ZvaWQgMCwiQnMiLDJdLFZORDpbIuKCqyIsdm9pZCAwLDBdLFZVVjpbdm9pZCAwLHZvaWQgMCwwXSxYQUY6WyJGQ0ZBIix2b2lkIDAsMF0sWENEOlsiRUMkIiwiJCJdLFhPRjpbIkNGQSIsdm9pZCAwLDBdLFhQRjpbIkNGUEYiLHZvaWQgMCwwXSxYWFg6WyLCpCJdLFlFUjpbdm9pZCAwLHZvaWQgMCwwXSxaQVI6W3ZvaWQgMCwiUiJdLFpNSzpbdm9pZCAwLHZvaWQgMCwwXSxaTVc6W3ZvaWQgMCwiWksiXSxaV0Q6W3ZvaWQgMCx2b2lkIDAsMF19OwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi92YXIgUE0sd00sa00sU00sRE0sUk0sRU07ZnVuY3Rpb24gQU0odCxlKXtyZXR1cm4gTE0oZ2codClbeWcuRGF0ZUZvcm1hdF0sZSl9ZnVuY3Rpb24gVE0odCxlKXtyZXR1cm4gTE0oZ2codClbeWcuVGltZUZvcm1hdF0sZSl9ZnVuY3Rpb24gTk0odCxlKXtyZXR1cm4gTE0oZ2codClbeWcuRGF0ZVRpbWVGb3JtYXRdLGUpfWZ1bmN0aW9uIHpNKHQsZSl7Y29uc3Qgbj1nZyh0KSxvPW5beWcuTnVtYmVyU3ltYm9sc11bZV07aWYodm9pZCAwPT09byl7aWYoZT09PVJNLkN1cnJlbmN5RGVjaW1hbClyZXR1cm4gblt5Zy5OdW1iZXJTeW1ib2xzXVtSTS5EZWNpbWFsXTtpZihlPT09Uk0uQ3VycmVuY3lHcm91cClyZXR1cm4gblt5Zy5OdW1iZXJTeW1ib2xzXVtSTS5Hcm91cF19cmV0dXJuIG99ZnVuY3Rpb24gSU0odCxlKXtyZXR1cm4gZ2codClbeWcuTnVtYmVyRm9ybWF0c11bZV19IShmdW5jdGlvbih0KXt0W3QuRGVjaW1hbD0wXT0iRGVjaW1hbCIsdFt0LlBlcmNlbnQ9MV09IlBlcmNlbnQiLHRbdC5DdXJyZW5jeT0yXT0iQ3VycmVuY3kiLHRbdC5TY2llbnRpZmljPTNdPSJTY2llbnRpZmljIn0pKFBNfHwoUE09e30pKSwoZnVuY3Rpb24odCl7dFt0Llplcm89MF09Ilplcm8iLHRbdC5PbmU9MV09Ik9uZSIsdFt0LlR3bz0yXT0iVHdvIix0W3QuRmV3PTNdPSJGZXciLHRbdC5NYW55PTRdPSJNYW55Iix0W3QuT3RoZXI9NV09Ik90aGVyIn0pKHdNfHwod009e30pKSwoZnVuY3Rpb24odCl7dFt0LkZvcm1hdD0wXT0iRm9ybWF0Iix0W3QuU3RhbmRhbG9uZT0xXT0iU3RhbmRhbG9uZSJ9KShrTXx8KGtNPXt9KSksKGZ1bmN0aW9uKHQpe3RbdC5OYXJyb3c9MF09Ik5hcnJvdyIsdFt0LkFiYnJldmlhdGVkPTFdPSJBYmJyZXZpYXRlZCIsdFt0LldpZGU9Ml09IldpZGUiLHRbdC5TaG9ydD0zXT0iU2hvcnQifSkoU018fChTTT17fSkpLChmdW5jdGlvbih0KXt0W3QuU2hvcnQ9MF09IlNob3J0Iix0W3QuTWVkaXVtPTFdPSJNZWRpdW0iLHRbdC5Mb25nPTJdPSJMb25nIix0W3QuRnVsbD0zXT0iRnVsbCJ9KShETXx8KERNPXt9KSksKGZ1bmN0aW9uKHQpe3RbdC5EZWNpbWFsPTBdPSJEZWNpbWFsIix0W3QuR3JvdXA9MV09Ikdyb3VwIix0W3QuTGlzdD0yXT0iTGlzdCIsdFt0LlBlcmNlbnRTaWduPTNdPSJQZXJjZW50U2lnbiIsdFt0LlBsdXNTaWduPTRdPSJQbHVzU2lnbiIsdFt0Lk1pbnVzU2lnbj01XT0iTWludXNTaWduIix0W3QuRXhwb25lbnRpYWw9Nl09IkV4cG9uZW50aWFsIix0W3QuU3VwZXJzY3JpcHRpbmdFeHBvbmVudD03XT0iU3VwZXJzY3JpcHRpbmdFeHBvbmVudCIsdFt0LlBlck1pbGxlPThdPSJQZXJNaWxsZSIsdFt0WzEvMF09OV09IkluZmluaXR5Iix0W3QuTmFOPTEwXT0iTmFOIix0W3QuVGltZVNlcGFyYXRvcj0xMV09IlRpbWVTZXBhcmF0b3IiLHRbdC5DdXJyZW5jeURlY2ltYWw9MTJdPSJDdXJyZW5jeURlY2ltYWwiLHRbdC5DdXJyZW5jeUdyb3VwPTEzXT0iQ3VycmVuY3lHcm91cCJ9KShSTXx8KFJNPXt9KSksKGZ1bmN0aW9uKHQpe3RbdC5TdW5kYXk9MF09IlN1bmRheSIsdFt0Lk1vbmRheT0xXT0iTW9uZGF5Iix0W3QuVHVlc2RheT0yXT0iVHVlc2RheSIsdFt0LldlZG5lc2RheT0zXT0iV2VkbmVzZGF5Iix0W3QuVGh1cnNkYXk9NF09IlRodXJzZGF5Iix0W3QuRnJpZGF5PTVdPSJGcmlkYXkiLHRbdC5TYXR1cmRheT02XT0iU2F0dXJkYXkifSkoRU18fChFTT17fSkpO2NvbnN0IEhNPWhnO2Z1bmN0aW9uIEZNKHQpe2lmKCF0W3lnLkV4dHJhRGF0YV0pdGhyb3cgbmV3IEVycm9yKGBNaXNzaW5nIGV4dHJhIGxvY2FsZSBkYXRhIGZvciB0aGUgbG9jYWxlICIke3RbeWcuTG9jYWxlSWRdfSIuIFVzZSAicmVnaXN0ZXJMb2NhbGVEYXRhIiB0byBsb2FkIG5ldyBkYXRhLiBTZWUgdGhlICJJMThuIGd1aWRlIiBvbiBhbmd1bGFyLmlvIHRvIGtub3cgbW9yZS5gKX1mdW5jdGlvbiBMTSh0LGUpe2ZvcihsZXQgbj1lO24+LTE7bi0tKWlmKHZvaWQgMCE9PXRbbl0pcmV0dXJuIHRbbl07dGhyb3cgbmV3IEVycm9yKCJMb2NhbGUgZGF0YSBBUEk6IGxvY2FsZSBkYXRhIHVuZGVmaW5lZCIpfWZ1bmN0aW9uIEJNKHQpe2NvbnN0W2Usbl09dC5zcGxpdCgiOiIpO3JldHVybntob3VyczorZSxtaW51dGVzOitufX1mdW5jdGlvbiBWTSh0LGUsbj0iZW4iKXtjb25zdCBvPShmdW5jdGlvbiBpKHQpe3JldHVybiBnZyh0KVt5Zy5DdXJyZW5jaWVzXX0pKG4pW3RdfHxPTVt0XXx8W10sYT1vWzFdO3JldHVybiJuYXJyb3ciPT09ZSYmInN0cmluZyI9PXR5cGVvZiBhP2E6b1swXXx8dH0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNvbnN0IGpNPS9eKFxkezR9KS0/KFxkXGQpLT8oXGRcZCkoPzpUKFxkXGQpKD86Oj8oXGRcZCkoPzo6PyhcZFxkKSg/OlwuKFxkKykpPyk/KT8oWnwoWystXSkoXGRcZCk6PyhcZFxkKSk/KT8kLyxVTT17fSxXTT0vKCg/OlteQkVHSExNT1NXWVphYmNkaG1zd3l6J10rKXwoPzonKD86W14nXXwnJykqJyl8KD86R3sxLDV9fHl7MSw0fXxZezEsNH18TXsxLDV9fEx7MSw1fXx3ezEsMn18V3sxfXxkezEsMn18RXsxLDZ9fGN7MSw2fXxhezEsNX18YnsxLDV9fEJ7MSw1fXxoezEsMn18SHsxLDJ9fG17MSwyfXxzezEsMn18U3sxLDN9fHp7MSw0fXxaezEsNX18T3sxLDR9KSkoW1xzXFNdKikvO3ZhciBHTSxZTSxxTTtmdW5jdGlvbiBaTSh0LGUsbixvKXtsZXQgaT0oZnVuY3Rpb24gYSh0KXtpZihzdih0KSlyZXR1cm4gdDtpZigibnVtYmVyIj09dHlwZW9mIHQmJiFpc05hTih0KSlyZXR1cm4gbmV3IERhdGUodCk7aWYoInN0cmluZyI9PXR5cGVvZiB0KXtpZih0PXQudHJpbSgpLC9eKFxkezR9KC1cZHsxLDJ9KC1cZHsxLDJ9KT8pPykkLy50ZXN0KHQpKXtjb25zdFtlLG49MSxvPTFdPXQuc3BsaXQoIi0iKS5tYXAoKHQ9Pit0KSk7cmV0dXJuIFhNKGUsbi0xLG8pfWNvbnN0IGU9cGFyc2VGbG9hdCh0KTtpZighaXNOYU4odC1lKSlyZXR1cm4gbmV3IERhdGUoZSk7bGV0IG47aWYobj10Lm1hdGNoKGpNKSlyZXR1cm4oZnVuY3Rpb24gZSh0KXtjb25zdCBlPW5ldyBEYXRlKDApO2xldCBuPTAsbz0wO2NvbnN0IGk9dFs4XT9lLnNldFVUQ0Z1bGxZZWFyOmUuc2V0RnVsbFllYXIsYT10WzhdP2Uuc2V0VVRDSG91cnM6ZS5zZXRIb3Vyczt0WzldJiYobj1OdW1iZXIodFs5XSt0WzEwXSksbz1OdW1iZXIodFs5XSt0WzExXSkpO2kuY2FsbChlLE51bWJlcih0WzFdKSxOdW1iZXIodFsyXSktMSxOdW1iZXIodFszXSkpO2NvbnN0IHI9TnVtYmVyKHRbNF18fDApLW4scz1OdW1iZXIodFs1XXx8MCktbyxsPU51bWJlcih0WzZdfHwwKSxjPU1hdGguZmxvb3IoMWUzKnBhcnNlRmxvYXQoIjAuIisodFs3XXx8MCkpKTtyZXR1cm4gYS5jYWxsKGUscixzLGwsYyksZX0pKG4pfWNvbnN0IG49bmV3IERhdGUodCk7aWYoIXN2KG4pKXRocm93IG5ldyBFcnJvcihgVW5hYmxlIHRvIGNvbnZlcnQgIiR7dH0iIGludG8gYSBkYXRlYCk7cmV0dXJuIG59KSh0KTtlPUtNKG4sZSl8fGU7bGV0IHIscz1bXTtmb3IoO2U7KXtpZihyPVdNLmV4ZWMoZSksIXIpe3MucHVzaChlKTticmVha317cz1zLmNvbmNhdChyLnNsaWNlKDEpKTtjb25zdCB0PXMucG9wKCk7aWYoIXQpYnJlYWs7ZT10fX1sZXQgbD1pLmdldFRpbWV6b25lT2Zmc2V0KCk7byYmKGw9cnYobyxsKSxpPShmdW5jdGlvbiBjKHQsZSxuKXtjb25zdCBvPW4/LTE6MSxpPXQuZ2V0VGltZXpvbmVPZmZzZXQoKSxhPXJ2KGUsaSk7cmV0dXJuKGZ1bmN0aW9uIHIodCxlKXtyZXR1cm4odD1uZXcgRGF0ZSh0LmdldFRpbWUoKSkpLnNldE1pbnV0ZXModC5nZXRNaW51dGVzKCkrZSksdH0pKHQsbyooYS1pKSl9KShpLG8sITApKTtsZXQgZD0iIjtyZXR1cm4gcy5mb3JFYWNoKCh0PT57Y29uc3QgZT0oZnVuY3Rpb24gbyh0KXtpZihhdlt0XSlyZXR1cm4gYXZbdF07bGV0IGU7c3dpdGNoKHQpe2Nhc2UiRyI6Y2FzZSJHRyI6Y2FzZSJHR0ciOmU9dHYocU0uRXJhcyxTTS5BYmJyZXZpYXRlZCk7YnJlYWs7Y2FzZSJHR0dHIjplPXR2KHFNLkVyYXMsU00uV2lkZSk7YnJlYWs7Y2FzZSJHR0dHRyI6ZT10dihxTS5FcmFzLFNNLk5hcnJvdyk7YnJlYWs7Y2FzZSJ5IjplPSRNKFlNLkZ1bGxZZWFyLDEsMCwhMSwhMCk7YnJlYWs7Y2FzZSJ5eSI6ZT0kTShZTS5GdWxsWWVhciwyLDAsITAsITApO2JyZWFrO2Nhc2UieXl5IjplPSRNKFlNLkZ1bGxZZWFyLDMsMCwhMSwhMCk7YnJlYWs7Y2FzZSJ5eXl5IjplPSRNKFlNLkZ1bGxZZWFyLDQsMCwhMSwhMCk7YnJlYWs7Y2FzZSJZIjplPWl2KDEpO2JyZWFrO2Nhc2UiWVkiOmU9aXYoMiwhMCk7YnJlYWs7Y2FzZSJZWVkiOmU9aXYoMyk7YnJlYWs7Y2FzZSJZWVlZIjplPWl2KDQpO2JyZWFrO2Nhc2UiTSI6Y2FzZSJMIjplPSRNKFlNLk1vbnRoLDEsMSk7YnJlYWs7Y2FzZSJNTSI6Y2FzZSJMTCI6ZT0kTShZTS5Nb250aCwyLDEpO2JyZWFrO2Nhc2UiTU1NIjplPXR2KHFNLk1vbnRocyxTTS5BYmJyZXZpYXRlZCk7YnJlYWs7Y2FzZSJNTU1NIjplPXR2KHFNLk1vbnRocyxTTS5XaWRlKTticmVhaztjYXNlIk1NTU1NIjplPXR2KHFNLk1vbnRocyxTTS5OYXJyb3cpO2JyZWFrO2Nhc2UiTExMIjplPXR2KHFNLk1vbnRocyxTTS5BYmJyZXZpYXRlZCxrTS5TdGFuZGFsb25lKTticmVhaztjYXNlIkxMTEwiOmU9dHYocU0uTW9udGhzLFNNLldpZGUsa00uU3RhbmRhbG9uZSk7YnJlYWs7Y2FzZSJMTExMTCI6ZT10dihxTS5Nb250aHMsU00uTmFycm93LGtNLlN0YW5kYWxvbmUpO2JyZWFrO2Nhc2UidyI6ZT1vdigxKTticmVhaztjYXNlInd3IjplPW92KDIpO2JyZWFrO2Nhc2UiVyI6ZT1vdigxLCEwKTticmVhaztjYXNlImQiOmU9JE0oWU0uRGF0ZSwxKTticmVhaztjYXNlImRkIjplPSRNKFlNLkRhdGUsMik7YnJlYWs7Y2FzZSJjIjpjYXNlImNjIjplPSRNKFlNLkRheSwxKTticmVhaztjYXNlImNjYyI6ZT10dihxTS5EYXlzLFNNLkFiYnJldmlhdGVkLGtNLlN0YW5kYWxvbmUpO2JyZWFrO2Nhc2UiY2NjYyI6ZT10dihxTS5EYXlzLFNNLldpZGUsa00uU3RhbmRhbG9uZSk7YnJlYWs7Y2FzZSJjY2NjYyI6ZT10dihxTS5EYXlzLFNNLk5hcnJvdyxrTS5TdGFuZGFsb25lKTticmVhaztjYXNlImNjY2NjYyI6ZT10dihxTS5EYXlzLFNNLlNob3J0LGtNLlN0YW5kYWxvbmUpO2JyZWFrO2Nhc2UiRSI6Y2FzZSJFRSI6Y2FzZSJFRUUiOmU9dHYocU0uRGF5cyxTTS5BYmJyZXZpYXRlZCk7YnJlYWs7Y2FzZSJFRUVFIjplPXR2KHFNLkRheXMsU00uV2lkZSk7YnJlYWs7Y2FzZSJFRUVFRSI6ZT10dihxTS5EYXlzLFNNLk5hcnJvdyk7YnJlYWs7Y2FzZSJFRUVFRUUiOmU9dHYocU0uRGF5cyxTTS5TaG9ydCk7YnJlYWs7Y2FzZSJhIjpjYXNlImFhIjpjYXNlImFhYSI6ZT10dihxTS5EYXlQZXJpb2RzLFNNLkFiYnJldmlhdGVkKTticmVhaztjYXNlImFhYWEiOmU9dHYocU0uRGF5UGVyaW9kcyxTTS5XaWRlKTticmVhaztjYXNlImFhYWFhIjplPXR2KHFNLkRheVBlcmlvZHMsU00uTmFycm93KTticmVhaztjYXNlImIiOmNhc2UiYmIiOmNhc2UiYmJiIjplPXR2KHFNLkRheVBlcmlvZHMsU00uQWJicmV2aWF0ZWQsa00uU3RhbmRhbG9uZSwhMCk7YnJlYWs7Y2FzZSJiYmJiIjplPXR2KHFNLkRheVBlcmlvZHMsU00uV2lkZSxrTS5TdGFuZGFsb25lLCEwKTticmVhaztjYXNlImJiYmJiIjplPXR2KHFNLkRheVBlcmlvZHMsU00uTmFycm93LGtNLlN0YW5kYWxvbmUsITApO2JyZWFrO2Nhc2UiQiI6Y2FzZSJCQiI6Y2FzZSJCQkIiOmU9dHYocU0uRGF5UGVyaW9kcyxTTS5BYmJyZXZpYXRlZCxrTS5Gb3JtYXQsITApO2JyZWFrO2Nhc2UiQkJCQiI6ZT10dihxTS5EYXlQZXJpb2RzLFNNLldpZGUsa00uRm9ybWF0LCEwKTticmVhaztjYXNlIkJCQkJCIjplPXR2KHFNLkRheVBlcmlvZHMsU00uTmFycm93LGtNLkZvcm1hdCwhMCk7YnJlYWs7Y2FzZSJoIjplPSRNKFlNLkhvdXJzLDEsLTEyKTticmVhaztjYXNlImhoIjplPSRNKFlNLkhvdXJzLDIsLTEyKTticmVhaztjYXNlIkgiOmU9JE0oWU0uSG91cnMsMSk7YnJlYWs7Y2FzZSJISCI6ZT0kTShZTS5Ib3VycywyKTticmVhaztjYXNlIm0iOmU9JE0oWU0uTWludXRlcywxKTticmVhaztjYXNlIm1tIjplPSRNKFlNLk1pbnV0ZXMsMik7YnJlYWs7Y2FzZSJzIjplPSRNKFlNLlNlY29uZHMsMSk7YnJlYWs7Y2FzZSJzcyI6ZT0kTShZTS5TZWNvbmRzLDIpO2JyZWFrO2Nhc2UiUyI6ZT0kTShZTS5GcmFjdGlvbmFsU2Vjb25kcywxKTticmVhaztjYXNlIlNTIjplPSRNKFlNLkZyYWN0aW9uYWxTZWNvbmRzLDIpO2JyZWFrO2Nhc2UiU1NTIjplPSRNKFlNLkZyYWN0aW9uYWxTZWNvbmRzLDMpO2JyZWFrO2Nhc2UiWiI6Y2FzZSJaWiI6Y2FzZSJaWloiOmU9ZXYoR00uU2hvcnQpO2JyZWFrO2Nhc2UiWlpaWloiOmU9ZXYoR00uRXh0ZW5kZWQpO2JyZWFrO2Nhc2UiTyI6Y2FzZSJPTyI6Y2FzZSJPT08iOmNhc2UieiI6Y2FzZSJ6eiI6Y2FzZSJ6enoiOmU9ZXYoR00uU2hvcnRHTVQpO2JyZWFrO2Nhc2UiT09PTyI6Y2FzZSJaWlpaIjpjYXNlInp6enoiOmU9ZXYoR00uTG9uZyk7YnJlYWs7ZGVmYXVsdDpyZXR1cm4gbnVsbH1yZXR1cm4gYXZbdF09ZSxlfSkodCk7ZCs9ZT9lKGksbixsKToiJyciPT09dD8iJyI6dC5yZXBsYWNlKC8oXid8JyQpL2csIiIpLnJlcGxhY2UoLycnL2csIiciKX0pKSxkfWZ1bmN0aW9uIFhNKHQsZSxuKXtjb25zdCBvPW5ldyBEYXRlKDApO3JldHVybiBvLnNldEZ1bGxZZWFyKHQsZSxuKSxvLnNldEhvdXJzKDAsMCwwKSxvfWZ1bmN0aW9uIEtNKHQsZSl7Y29uc3Qgbj0oZnVuY3Rpb24gbyh0KXtyZXR1cm4gZ2codClbeWcuTG9jYWxlSWRdfSkodCk7aWYoVU1bbl09VU1bbl18fHt9LFVNW25dW2VdKXJldHVybiBVTVtuXVtlXTtsZXQgaT0iIjtzd2l0Y2goZSl7Y2FzZSJzaG9ydERhdGUiOmk9QU0odCxETS5TaG9ydCk7YnJlYWs7Y2FzZSJtZWRpdW1EYXRlIjppPUFNKHQsRE0uTWVkaXVtKTticmVhaztjYXNlImxvbmdEYXRlIjppPUFNKHQsRE0uTG9uZyk7YnJlYWs7Y2FzZSJmdWxsRGF0ZSI6aT1BTSh0LERNLkZ1bGwpO2JyZWFrO2Nhc2Uic2hvcnRUaW1lIjppPVRNKHQsRE0uU2hvcnQpO2JyZWFrO2Nhc2UibWVkaXVtVGltZSI6aT1UTSh0LERNLk1lZGl1bSk7YnJlYWs7Y2FzZSJsb25nVGltZSI6aT1UTSh0LERNLkxvbmcpO2JyZWFrO2Nhc2UiZnVsbFRpbWUiOmk9VE0odCxETS5GdWxsKTticmVhaztjYXNlInNob3J0Ijpjb25zdCBlPUtNKHQsInNob3J0VGltZSIpLG49S00odCwic2hvcnREYXRlIik7aT1KTShOTSh0LERNLlNob3J0KSxbZSxuXSk7YnJlYWs7Y2FzZSJtZWRpdW0iOmNvbnN0IG89S00odCwibWVkaXVtVGltZSIpLGE9S00odCwibWVkaXVtRGF0ZSIpO2k9Sk0oTk0odCxETS5NZWRpdW0pLFtvLGFdKTticmVhaztjYXNlImxvbmciOmNvbnN0IHI9S00odCwibG9uZ1RpbWUiKSxzPUtNKHQsImxvbmdEYXRlIik7aT1KTShOTSh0LERNLkxvbmcpLFtyLHNdKTticmVhaztjYXNlImZ1bGwiOmNvbnN0IGw9S00odCwiZnVsbFRpbWUiKSxjPUtNKHQsImZ1bGxEYXRlIik7aT1KTShOTSh0LERNLkZ1bGwpLFtsLGNdKX1yZXR1cm4gaSYmKFVNW25dW2VdPWkpLGl9ZnVuY3Rpb24gSk0odCxlKXtyZXR1cm4gZSYmKHQ9dC5yZXBsYWNlKC9ceyhbXn1dKyl9L2csKGZ1bmN0aW9uKHQsbil7cmV0dXJuIG51bGwhPWUmJm4gaW4gZT9lW25dOnR9KSkpLHR9ZnVuY3Rpb24gUU0odCxlLG49Ii0iLG8saSl7bGV0IGE9IiI7KHQ8MHx8aSYmdDw9MCkmJihpP3Q9MS10Oih0PS10LGE9bikpO2xldCByPVN0cmluZyh0KTtmb3IoO3IubGVuZ3RoPGU7KXI9IjAiK3I7cmV0dXJuIG8mJihyPXIuc3Vic3RyKHIubGVuZ3RoLWUpKSxhK3J9ZnVuY3Rpb24gJE0odCxlLG49MCxvPSExLGk9ITEpe3JldHVybiBmdW5jdGlvbihhLHIpe2xldCBzPShmdW5jdGlvbiBsKHQsZSl7c3dpdGNoKHQpe2Nhc2UgWU0uRnVsbFllYXI6cmV0dXJuIGUuZ2V0RnVsbFllYXIoKTtjYXNlIFlNLk1vbnRoOnJldHVybiBlLmdldE1vbnRoKCk7Y2FzZSBZTS5EYXRlOnJldHVybiBlLmdldERhdGUoKTtjYXNlIFlNLkhvdXJzOnJldHVybiBlLmdldEhvdXJzKCk7Y2FzZSBZTS5NaW51dGVzOnJldHVybiBlLmdldE1pbnV0ZXMoKTtjYXNlIFlNLlNlY29uZHM6cmV0dXJuIGUuZ2V0U2Vjb25kcygpO2Nhc2UgWU0uRnJhY3Rpb25hbFNlY29uZHM6cmV0dXJuIGUuZ2V0TWlsbGlzZWNvbmRzKCk7Y2FzZSBZTS5EYXk6cmV0dXJuIGUuZ2V0RGF5KCk7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gRGF0ZVR5cGUgdmFsdWUgIiR7dH0iLmApfX0pKHQsYSk7aWYoKG4+MHx8cz4tbikmJihzKz1uKSx0PT09WU0uSG91cnMpMD09PXMmJi0xMj09PW4mJihzPTEyKTtlbHNlIGlmKHQ9PT1ZTS5GcmFjdGlvbmFsU2Vjb25kcylyZXR1cm4oZnVuY3Rpb24gYyh0LGUpe3JldHVybiBRTSh0LDMpLnN1YnN0cigwLGUpfSkocyxlKTtjb25zdCBkPXpNKHIsUk0uTWludXNTaWduKTtyZXR1cm4gUU0ocyxlLGQsbyxpKX19ZnVuY3Rpb24gdHYodCxlLG49a00uRm9ybWF0LG89ITEpe3JldHVybiBmdW5jdGlvbihpLGEpe3JldHVybihmdW5jdGlvbiByKHQsZSxuLG8saSxhKXtzd2l0Y2gobil7Y2FzZSBxTS5Nb250aHM6cmV0dXJuKGZ1bmN0aW9uIHIodCxlLG4pe2NvbnN0IG89Z2codCksaT1MTShbb1t5Zy5Nb250aHNGb3JtYXRdLG9beWcuTW9udGhzU3RhbmRhbG9uZV1dLGUpO3JldHVybiBMTShpLG4pfSkoZSxpLG8pW3QuZ2V0TW9udGgoKV07Y2FzZSBxTS5EYXlzOnJldHVybihmdW5jdGlvbiBzKHQsZSxuKXtjb25zdCBvPWdnKHQpLGk9TE0oW29beWcuRGF5c0Zvcm1hdF0sb1t5Zy5EYXlzU3RhbmRhbG9uZV1dLGUpO3JldHVybiBMTShpLG4pfSkoZSxpLG8pW3QuZ2V0RGF5KCldO2Nhc2UgcU0uRGF5UGVyaW9kczpjb25zdCByPXQuZ2V0SG91cnMoKSxzPXQuZ2V0TWludXRlcygpO2lmKGEpe2NvbnN0IHQ9KGZ1bmN0aW9uIGwodCl7Y29uc3QgZT1nZyh0KTtyZXR1cm4gRk0oZSksKGVbeWcuRXh0cmFEYXRhXVsyXXx8W10pLm1hcCgodD0+InN0cmluZyI9PXR5cGVvZiB0P0JNKHQpOltCTSh0WzBdKSxCTSh0WzFdKV0pKX0pKGUpLG49KGZ1bmN0aW9uIGModCxlLG4pe2NvbnN0IG89Z2codCk7Rk0obyk7Y29uc3QgaT1MTShbb1t5Zy5FeHRyYURhdGFdWzBdLG9beWcuRXh0cmFEYXRhXVsxXV0sZSl8fFtdO3JldHVybiBMTShpLG4pfHxbXX0pKGUsaSxvKSxhPXQuZmluZEluZGV4KCh0PT57aWYoQXJyYXkuaXNBcnJheSh0KSl7Y29uc3RbZSxuXT10LG89cj49ZS5ob3VycyYmcz49ZS5taW51dGVzLGk9cjxuLmhvdXJzfHxyPT09bi5ob3VycyYmczxuLm1pbnV0ZXM7aWYoZS5ob3VyczxuLmhvdXJzKXtpZihvJiZpKXJldHVybiEwfWVsc2UgaWYob3x8aSlyZXR1cm4hMH1lbHNlIGlmKHQuaG91cnM9PT1yJiZ0Lm1pbnV0ZXM9PT1zKXJldHVybiEwO3JldHVybiExfSkpO2lmKC0xIT09YSlyZXR1cm4gblthXX1yZXR1cm4oZnVuY3Rpb24gZCh0LGUsbil7Y29uc3Qgbz1nZyh0KSxpPUxNKFtvW3lnLkRheVBlcmlvZHNGb3JtYXRdLG9beWcuRGF5UGVyaW9kc1N0YW5kYWxvbmVdXSxlKTtyZXR1cm4gTE0oaSxuKX0pKGUsaSxvKVtyPDEyPzA6MV07Y2FzZSBxTS5FcmFzOnJldHVybihmdW5jdGlvbiBwKHQsZSl7cmV0dXJuIExNKGdnKHQpW3lnLkVyYXNdLGUpfSkoZSxvKVt0LmdldEZ1bGxZZWFyKCk8PTA/MDoxXTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcihgdW5leHBlY3RlZCB0cmFuc2xhdGlvbiB0eXBlICR7bn1gKX19KShpLGEsdCxlLG4sbyl9fWZ1bmN0aW9uIGV2KHQpe3JldHVybiBmdW5jdGlvbihlLG4sbyl7Y29uc3QgaT0tMSpvLGE9ek0obixSTS5NaW51c1NpZ24pLHI9aT4wP01hdGguZmxvb3IoaS82MCk6TWF0aC5jZWlsKGkvNjApO3N3aXRjaCh0KXtjYXNlIEdNLlNob3J0OnJldHVybihpPj0wPyIrIjoiIikrUU0ociwyLGEpK1FNKE1hdGguYWJzKGklNjApLDIsYSk7Y2FzZSBHTS5TaG9ydEdNVDpyZXR1cm4iR01UIisoaT49MD8iKyI6IiIpK1FNKHIsMSxhKTtjYXNlIEdNLkxvbmc6cmV0dXJuIkdNVCIrKGk+PTA/IisiOiIiKStRTShyLDIsYSkrIjoiK1FNKE1hdGguYWJzKGklNjApLDIsYSk7Y2FzZSBHTS5FeHRlbmRlZDpyZXR1cm4gMD09PW8/IloiOihpPj0wPyIrIjoiIikrUU0ociwyLGEpKyI6IitRTShNYXRoLmFicyhpJTYwKSwyLGEpO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKGBVbmtub3duIHpvbmUgd2lkdGggIiR7dH0iYCl9fX0hKGZ1bmN0aW9uKHQpe3RbdC5TaG9ydD0wXT0iU2hvcnQiLHRbdC5TaG9ydEdNVD0xXT0iU2hvcnRHTVQiLHRbdC5Mb25nPTJdPSJMb25nIix0W3QuRXh0ZW5kZWQ9M109IkV4dGVuZGVkIn0pKEdNfHwoR009e30pKSwoZnVuY3Rpb24odCl7dFt0LkZ1bGxZZWFyPTBdPSJGdWxsWWVhciIsdFt0Lk1vbnRoPTFdPSJNb250aCIsdFt0LkRhdGU9Ml09IkRhdGUiLHRbdC5Ib3Vycz0zXT0iSG91cnMiLHRbdC5NaW51dGVzPTRdPSJNaW51dGVzIix0W3QuU2Vjb25kcz01XT0iU2Vjb25kcyIsdFt0LkZyYWN0aW9uYWxTZWNvbmRzPTZdPSJGcmFjdGlvbmFsU2Vjb25kcyIsdFt0LkRheT03XT0iRGF5In0pKFlNfHwoWU09e30pKSwoZnVuY3Rpb24odCl7dFt0LkRheVBlcmlvZHM9MF09IkRheVBlcmlvZHMiLHRbdC5EYXlzPTFdPSJEYXlzIix0W3QuTW9udGhzPTJdPSJNb250aHMiLHRbdC5FcmFzPTNdPSJFcmFzIn0pKHFNfHwocU09e30pKTtmdW5jdGlvbiBudih0KXtyZXR1cm4gWE0odC5nZXRGdWxsWWVhcigpLHQuZ2V0TW9udGgoKSx0LmdldERhdGUoKSsoNC10LmdldERheSgpKSl9ZnVuY3Rpb24gb3YodCxlPSExKXtyZXR1cm4gZnVuY3Rpb24obixvKXtsZXQgaTtpZihlKXtjb25zdCB0PW5ldyBEYXRlKG4uZ2V0RnVsbFllYXIoKSxuLmdldE1vbnRoKCksMSkuZ2V0RGF5KCktMSxlPW4uZ2V0RGF0ZSgpO2k9MStNYXRoLmZsb29yKChlK3QpLzcpfWVsc2V7Y29uc3QgdD1udihuKSxlPShmdW5jdGlvbiBhKHQpe2NvbnN0IGU9WE0odCwwLDEpLmdldERheSgpO3JldHVybiBYTSh0LDAsMSsoZTw9ND80OjExKS1lKX0pKHQuZ2V0RnVsbFllYXIoKSksbz10LmdldFRpbWUoKS1lLmdldFRpbWUoKTtpPTErTWF0aC5yb3VuZChvLzYwNDhlNSl9cmV0dXJuIFFNKGksdCx6TShvLFJNLk1pbnVzU2lnbikpfX1mdW5jdGlvbiBpdih0LGU9ITEpe3JldHVybiBmdW5jdGlvbihuLG8pe3JldHVybiBRTShudihuKS5nZXRGdWxsWWVhcigpLHQsek0obyxSTS5NaW51c1NpZ24pLGUpfX1jb25zdCBhdj17fTtmdW5jdGlvbiBydih0LGUpe3Q9dC5yZXBsYWNlKC86L2csIiIpO2NvbnN0IG49RGF0ZS5wYXJzZSgiSmFuIDAxLCAxOTcwIDAwOjAwOjAwICIrdCkvNmU0O3JldHVybiBpc05hTihuKT9lOm59ZnVuY3Rpb24gc3YodCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBEYXRlJiYhaXNOYU4odC52YWx1ZU9mKCkpfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jb25zdCBsdj0vXihcZCspP1wuKChcZCspKC0oXGQrKSk/KT8kLyxjdj0iLiIsZHY9IjAiO2Z1bmN0aW9uIHB2KHQsZSxuLG8saSxhLHI9ITEpe2xldCBzPSIiLGw9ITE7aWYoaXNGaW5pdGUodCkpe2xldCBjPShmdW5jdGlvbiBjKHQpe2xldCBlLG4sbyxpLGEscj1NYXRoLmFicyh0KSsiIixzPTA7KG49ci5pbmRleE9mKGN2KSk+LTEmJihyPXIucmVwbGFjZShjdiwiIikpOyhvPXIuc2VhcmNoKC9lL2kpKT4wPyhuPDAmJihuPW8pLG4rPStyLnNsaWNlKG8rMSkscj1yLnN1YnN0cmluZygwLG8pKTpuPDAmJihuPXIubGVuZ3RoKTtmb3Iobz0wO3IuY2hhckF0KG8pPT09ZHY7bysrKTtpZihvPT09KGE9ci5sZW5ndGgpKWU9WzBdLG49MTtlbHNle2ZvcihhLS07ci5jaGFyQXQoYSk9PT1kdjspYS0tO2ZvcihuLT1vLGU9W10saT0wO288PWE7bysrLGkrKyllW2ldPU51bWJlcihyLmNoYXJBdChvKSl9bj4yMiYmKGU9ZS5zcGxpY2UoMCwyMSkscz1uLTEsbj0xKTtyZXR1cm57ZGlnaXRzOmUsZXhwb25lbnQ6cyxpbnRlZ2VyTGVuOm59fSkodCk7ciYmKGM9KGZ1bmN0aW9uIGQodCl7aWYoMD09PXQuZGlnaXRzWzBdKXJldHVybiB0O2NvbnN0IGU9dC5kaWdpdHMubGVuZ3RoLXQuaW50ZWdlckxlbjt0LmV4cG9uZW50P3QuZXhwb25lbnQrPTI6KDA9PT1lP3QuZGlnaXRzLnB1c2goMCwwKToxPT09ZSYmdC5kaWdpdHMucHVzaCgwKSx0LmludGVnZXJMZW4rPTIpO3JldHVybiB0fSkoYykpO2xldCBkPWUubWluSW50LHA9ZS5taW5GcmFjLG09ZS5tYXhGcmFjO2lmKGEpe2NvbnN0IHQ9YS5tYXRjaChsdik7aWYobnVsbD09PXQpdGhyb3cgbmV3IEVycm9yKGAke2F9IGlzIG5vdCBhIHZhbGlkIGRpZ2l0IGluZm9gKTtjb25zdCBlPXRbMV0sbj10WzNdLG89dFs1XTtudWxsIT1lJiYoZD1ndihlKSksbnVsbCE9biYmKHA9Z3YobikpLG51bGwhPW8/bT1ndihvKTpudWxsIT1uJiZwPm0mJihtPXApfSEoZnVuY3Rpb24gcCh0LGUsbil7aWYoZT5uKXRocm93IG5ldyBFcnJvcihgVGhlIG1pbmltdW0gbnVtYmVyIG9mIGRpZ2l0cyBhZnRlciBmcmFjdGlvbiAoJHtlfSkgaXMgaGlnaGVyIHRoYW4gdGhlIG1heGltdW0gKCR7bn0pLmApO2xldCBvPXQuZGlnaXRzLGk9by5sZW5ndGgtdC5pbnRlZ2VyTGVuO2NvbnN0IGE9TWF0aC5taW4oTWF0aC5tYXgoZSxpKSxuKTtsZXQgcj1hK3QuaW50ZWdlckxlbixzPW9bcl07aWYocj4wKXtvLnNwbGljZShNYXRoLm1heCh0LmludGVnZXJMZW4scikpO2ZvcihsZXQgdD1yO3Q8by5sZW5ndGg7dCsrKW9bdF09MH1lbHNle2k9TWF0aC5tYXgoMCxpKSx0LmludGVnZXJMZW49MSxvLmxlbmd0aD1NYXRoLm1heCgxLHI9YSsxKSxvWzBdPTA7Zm9yKGxldCB0PTE7dDxyO3QrKylvW3RdPTB9aWYocz49NSlpZihyLTE8MCl7Zm9yKGxldCBlPTA7ZT5yO2UtLSlvLnVuc2hpZnQoMCksdC5pbnRlZ2VyTGVuKys7by51bnNoaWZ0KDEpLHQuaW50ZWdlckxlbisrfWVsc2Ugb1tyLTFdKys7Zm9yKDtpPE1hdGgubWF4KDAsYSk7aSsrKW8ucHVzaCgwKTtsZXQgbD0wIT09YTtjb25zdCBjPWUrdC5pbnRlZ2VyTGVuLGQ9by5yZWR1Y2VSaWdodCgoZnVuY3Rpb24odCxlLG4sbyl7cmV0dXJuIG9bbl09KGUrPXQpPDEwP2U6ZS0xMCxsJiYoMD09PW9bbl0mJm4+PWM/by5wb3AoKTpsPSExKSxlPj0xMD8xOjB9KSwwKTtkJiYoby51bnNoaWZ0KGQpLHQuaW50ZWdlckxlbisrKX0pKGMscCxtKTtsZXQgZj1jLmRpZ2l0cyx1PWMuaW50ZWdlckxlbjtjb25zdCBnPWMuZXhwb25lbnQ7bGV0IGg9W107Zm9yKGw9Zi5ldmVyeSgodD0+IXQpKTt1PGQ7dSsrKWYudW5zaGlmdCgwKTtmb3IoO3U8MDt1KyspZi51bnNoaWZ0KDApO3U+MD9oPWYuc3BsaWNlKHUsZi5sZW5ndGgpOihoPWYsZj1bMF0pO2NvbnN0IGI9W107Zm9yKGYubGVuZ3RoPj1lLmxnU2l6ZSYmYi51bnNoaWZ0KGYuc3BsaWNlKC1lLmxnU2l6ZSxmLmxlbmd0aCkuam9pbigiIikpO2YubGVuZ3RoPmUuZ1NpemU7KWIudW5zaGlmdChmLnNwbGljZSgtZS5nU2l6ZSxmLmxlbmd0aCkuam9pbigiIikpO2YubGVuZ3RoJiZiLnVuc2hpZnQoZi5qb2luKCIiKSkscz1iLmpvaW4oek0obixvKSksaC5sZW5ndGgmJihzKz16TShuLGkpK2guam9pbigiIikpLGcmJihzKz16TShuLFJNLkV4cG9uZW50aWFsKSsiKyIrZyl9ZWxzZSBzPXpNKG4sUk0uSW5maW5pdHkpO3JldHVybiBzPXQ8MCYmIWw/ZS5uZWdQcmUrcytlLm5lZ1N1ZjplLnBvc1ByZStzK2UucG9zU3VmLHN9ZnVuY3Rpb24gbXYodCxlLG4sbyxpKXtjb25zdCBhPXV2KElNKGUsUE0uQ3VycmVuY3kpLHpNKGUsUk0uTWludXNTaWduKSk7YS5taW5GcmFjPShmdW5jdGlvbiByKHQpe2xldCBlO2NvbnN0IG49T01bdF07cmV0dXJuIG4mJihlPW5bMl0pLCJudW1iZXIiPT10eXBlb2YgZT9lOjJ9KShvKSxhLm1heEZyYWM9YS5taW5GcmFjO3JldHVybiBwdih0LGEsZSxSTS5DdXJyZW5jeUdyb3VwLFJNLkN1cnJlbmN5RGVjaW1hbCxpKS5yZXBsYWNlKCLCpCIsbikucmVwbGFjZSgiwqQiLCIiKS50cmltKCl9ZnVuY3Rpb24gZnYodCxlLG4pe3JldHVybiBwdih0LHV2KElNKGUsUE0uRGVjaW1hbCksek0oZSxSTS5NaW51c1NpZ24pKSxlLFJNLkdyb3VwLFJNLkRlY2ltYWwsbil9ZnVuY3Rpb24gdXYodCxlPSItIil7Y29uc3Qgbj17bWluSW50OjEsbWluRnJhYzowLG1heEZyYWM6MCxwb3NQcmU6IiIscG9zU3VmOiIiLG5lZ1ByZToiIixuZWdTdWY6IiIsZ1NpemU6MCxsZ1NpemU6MH0sbz10LnNwbGl0KCI7IiksaT1vWzBdLGE9b1sxXSxyPS0xIT09aS5pbmRleE9mKGN2KT9pLnNwbGl0KGN2KTpbaS5zdWJzdHJpbmcoMCxpLmxhc3RJbmRleE9mKGR2KSsxKSxpLnN1YnN0cmluZyhpLmxhc3RJbmRleE9mKGR2KSsxKV0scz1yWzBdLGw9clsxXXx8IiI7bi5wb3NQcmU9cy5zdWJzdHIoMCxzLmluZGV4T2YoIiMiKSk7Zm9yKGxldCB0PTA7dDxsLmxlbmd0aDt0Kyspe2NvbnN0IGU9bC5jaGFyQXQodCk7ZT09PWR2P24ubWluRnJhYz1uLm1heEZyYWM9dCsxOiIjIj09PWU/bi5tYXhGcmFjPXQrMTpuLnBvc1N1Zis9ZX1jb25zdCBjPXMuc3BsaXQoIiwiKTtpZihuLmdTaXplPWNbMV0/Y1sxXS5sZW5ndGg6MCxuLmxnU2l6ZT1jWzJdfHxjWzFdPyhjWzJdfHxjWzFdKS5sZW5ndGg6MCxhKXtjb25zdCB0PWkubGVuZ3RoLW4ucG9zUHJlLmxlbmd0aC1uLnBvc1N1Zi5sZW5ndGgsZT1hLmluZGV4T2YoIiMiKTtuLm5lZ1ByZT1hLnN1YnN0cigwLGUpLnJlcGxhY2UoLycvZywiIiksbi5uZWdTdWY9YS5zdWJzdHIoZSt0KS5yZXBsYWNlKC8nL2csIiIpfWVsc2Ugbi5uZWdQcmU9ZStuLnBvc1ByZSxuLm5lZ1N1Zj1uLnBvc1N1ZjtyZXR1cm4gbn1mdW5jdGlvbiBndih0KXtjb25zdCBlPXBhcnNlSW50KHQpO2lmKGlzTmFOKGUpKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBpbnRlZ2VyIGxpdGVyYWwgd2hlbiBwYXJzaW5nICIrdCk7cmV0dXJuIGV9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NsYXNzIGh2e31mdW5jdGlvbiBidih0LGUsbixvKXtsZXQgaT1gPSR7dH1gO2lmKGUuaW5kZXhPZihpKT4tMSlyZXR1cm4gaTtpZihpPW4uZ2V0UGx1cmFsQ2F0ZWdvcnkodCxvKSxlLmluZGV4T2YoaSk+LTEpcmV0dXJuIGk7aWYoZS5pbmRleE9mKCJvdGhlciIpPi0xKXJldHVybiJvdGhlciI7dGhyb3cgbmV3IEVycm9yKGBObyBwbHVyYWwgbWVzc2FnZSBmb3VuZCBmb3IgdmFsdWUgIiR7dH0iYCl9Y2xhc3MgeXYgZXh0ZW5kcyBodntjb25zdHJ1Y3Rvcih0KXtzdXBlcigpLHRoaXMubG9jYWxlPXR9Z2V0UGx1cmFsQ2F0ZWdvcnkodCxlKXtzd2l0Y2goSE0oZXx8dGhpcy5sb2NhbGUpKHQpKXtjYXNlIHdNLlplcm86cmV0dXJuInplcm8iO2Nhc2Ugd00uT25lOnJldHVybiJvbmUiO2Nhc2Ugd00uVHdvOnJldHVybiJ0d28iO2Nhc2Ugd00uRmV3OnJldHVybiJmZXciO2Nhc2Ugd00uTWFueTpyZXR1cm4ibWFueSI7ZGVmYXVsdDpyZXR1cm4ib3RoZXIifX19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpmdW5jdGlvbiBfdih0LGUpe2U9ZW5jb2RlVVJJQ29tcG9uZW50KGUpO2Zvcihjb25zdCBuIG9mIHQuc3BsaXQoIjsiKSl7Y29uc3QgdD1uLmluZGV4T2YoIj0iKSxbbyxpXT0tMT09dD9bbiwiIl06W24uc2xpY2UoMCx0KSxuLnNsaWNlKHQrMSldO2lmKG8udHJpbSgpPT09ZSlyZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KGkpfXJldHVybiBudWxsfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi95di7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8eXYpKFRyKFFfKSl9LHl2Lsm1cHJvdj1Tbih7dG9rZW46eXYsZmFjdG9yeTp5di7JtWZhY30pLHl2LmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W1FfXX1dfV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYih5dixbe3R5cGU6VW19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W1FfXX1dfV19KSxudWxsKTtjbGFzcyBDdntjb25zdHJ1Y3Rvcih0LGUsbixvKXt0aGlzLl9pdGVyYWJsZURpZmZlcnM9dCx0aGlzLl9rZXlWYWx1ZURpZmZlcnM9ZSx0aGlzLl9uZ0VsPW4sdGhpcy5fcmVuZGVyZXI9byx0aGlzLl9pdGVyYWJsZURpZmZlcj1udWxsLHRoaXMuX2tleVZhbHVlRGlmZmVyPW51bGwsdGhpcy5faW5pdGlhbENsYXNzZXM9W10sdGhpcy5fcmF3Q2xhc3M9bnVsbH1zZXQga2xhc3ModCl7dGhpcy5fcmVtb3ZlQ2xhc3Nlcyh0aGlzLl9pbml0aWFsQ2xhc3NlcyksdGhpcy5faW5pdGlhbENsYXNzZXM9InN0cmluZyI9PXR5cGVvZiB0P3Quc3BsaXQoL1xzKy8pOltdLHRoaXMuX2FwcGx5Q2xhc3Nlcyh0aGlzLl9pbml0aWFsQ2xhc3NlcyksdGhpcy5fYXBwbHlDbGFzc2VzKHRoaXMuX3Jhd0NsYXNzKX1zZXQgbmdDbGFzcyh0KXt0aGlzLl9yZW1vdmVDbGFzc2VzKHRoaXMuX3Jhd0NsYXNzKSx0aGlzLl9hcHBseUNsYXNzZXModGhpcy5faW5pdGlhbENsYXNzZXMpLHRoaXMuX2l0ZXJhYmxlRGlmZmVyPW51bGwsdGhpcy5fa2V5VmFsdWVEaWZmZXI9bnVsbCx0aGlzLl9yYXdDbGFzcz0ic3RyaW5nIj09dHlwZW9mIHQ/dC5zcGxpdCgvXHMrLyk6dCx0aGlzLl9yYXdDbGFzcyYmKGRtKHRoaXMuX3Jhd0NsYXNzKT90aGlzLl9pdGVyYWJsZURpZmZlcj10aGlzLl9pdGVyYWJsZURpZmZlcnMuZmluZCh0aGlzLl9yYXdDbGFzcykuY3JlYXRlKCk6dGhpcy5fa2V5VmFsdWVEaWZmZXI9dGhpcy5fa2V5VmFsdWVEaWZmZXJzLmZpbmQodGhpcy5fcmF3Q2xhc3MpLmNyZWF0ZSgpKX1uZ0RvQ2hlY2soKXtpZih0aGlzLl9pdGVyYWJsZURpZmZlcil7Y29uc3QgdD10aGlzLl9pdGVyYWJsZURpZmZlci5kaWZmKHRoaXMuX3Jhd0NsYXNzKTt0JiZ0aGlzLl9hcHBseUl0ZXJhYmxlQ2hhbmdlcyh0KX1lbHNlIGlmKHRoaXMuX2tleVZhbHVlRGlmZmVyKXtjb25zdCB0PXRoaXMuX2tleVZhbHVlRGlmZmVyLmRpZmYodGhpcy5fcmF3Q2xhc3MpO3QmJnRoaXMuX2FwcGx5S2V5VmFsdWVDaGFuZ2VzKHQpfX1fYXBwbHlLZXlWYWx1ZUNoYW5nZXModCl7dC5mb3JFYWNoQWRkZWRJdGVtKCh0PT50aGlzLl90b2dnbGVDbGFzcyh0LmtleSx0LmN1cnJlbnRWYWx1ZSkpKSx0LmZvckVhY2hDaGFuZ2VkSXRlbSgodD0+dGhpcy5fdG9nZ2xlQ2xhc3ModC5rZXksdC5jdXJyZW50VmFsdWUpKSksdC5mb3JFYWNoUmVtb3ZlZEl0ZW0oKHQ9Pnt0LnByZXZpb3VzVmFsdWUmJnRoaXMuX3RvZ2dsZUNsYXNzKHQua2V5LCExKX0pKX1fYXBwbHlJdGVyYWJsZUNoYW5nZXModCl7dC5mb3JFYWNoQWRkZWRJdGVtKCh0PT57aWYoInN0cmluZyIhPXR5cGVvZiB0Lml0ZW0pdGhyb3cgbmV3IEVycm9yKGBOZ0NsYXNzIGNhbiBvbmx5IHRvZ2dsZSBDU1MgY2xhc3NlcyBleHByZXNzZWQgYXMgc3RyaW5ncywgZ290ICR7S2UodC5pdGVtKX1gKTt0aGlzLl90b2dnbGVDbGFzcyh0Lml0ZW0sITApfSkpLHQuZm9yRWFjaFJlbW92ZWRJdGVtKCh0PT50aGlzLl90b2dnbGVDbGFzcyh0Lml0ZW0sITEpKSl9X2FwcGx5Q2xhc3Nlcyh0KXt0JiYoQXJyYXkuaXNBcnJheSh0KXx8dCBpbnN0YW5jZW9mIFNldD90LmZvckVhY2goKHQ9PnRoaXMuX3RvZ2dsZUNsYXNzKHQsITApKSk6T2JqZWN0LmtleXModCkuZm9yRWFjaCgoZT0+dGhpcy5fdG9nZ2xlQ2xhc3MoZSwhIXRbZV0pKSkpfV9yZW1vdmVDbGFzc2VzKHQpe3QmJihBcnJheS5pc0FycmF5KHQpfHx0IGluc3RhbmNlb2YgU2V0P3QuZm9yRWFjaCgodD0+dGhpcy5fdG9nZ2xlQ2xhc3ModCwhMSkpKTpPYmplY3Qua2V5cyh0KS5mb3JFYWNoKCh0PT50aGlzLl90b2dnbGVDbGFzcyh0LCExKSkpKX1fdG9nZ2xlQ2xhc3ModCxlKXsodD10LnRyaW0oKSkmJnQuc3BsaXQoL1xzKy9nKS5mb3JFYWNoKCh0PT57ZT90aGlzLl9yZW5kZXJlci5hZGRDbGFzcyh0aGlzLl9uZ0VsLm5hdGl2ZUVsZW1lbnQsdCk6dGhpcy5fcmVuZGVyZXIucmVtb3ZlQ2xhc3ModGhpcy5fbmdFbC5uYXRpdmVFbGVtZW50LHQpfSkpfX1Ddi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8Q3YpKGdmKGhiKSxnZih5YiksZ2YoS2gpLGdmKCRoKSl9LEN2Lsm1ZGlyPWhvKHt0eXBlOkN2LHNlbGVjdG9yczpbWyIiLCJuZ0NsYXNzIiwiIl1dLGlucHV0czp7a2xhc3M6WyJjbGFzcyIsImtsYXNzIl0sbmdDbGFzczoibmdDbGFzcyJ9fSksQ3YuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpoYn0se3R5cGU6eWJ9LHt0eXBlOktofSx7dHlwZTokaH1dLEN2LnByb3BEZWNvcmF0b3JzPXtrbGFzczpbe3R5cGU6Ul8sYXJnczpbImNsYXNzIl19XSxuZ0NsYXNzOlt7dHlwZTpSXyxhcmdzOlsibmdDbGFzcyJdfV19LCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoQ3YsW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3RvcjoiW25nQ2xhc3NdIn1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmhifSx7dHlwZTp5Yn0se3R5cGU6S2h9LHt0eXBlOiRofV19KSx7a2xhc3M6W3t0eXBlOlJfLGFyZ3M6WyJjbGFzcyJdfV0sbmdDbGFzczpbe3R5cGU6Ul8sYXJnczpbIm5nQ2xhc3MiXX1dfSk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjbGFzcyBNdntjb25zdHJ1Y3Rvcih0KXt0aGlzLl92aWV3Q29udGFpbmVyUmVmPXQsdGhpcy5fY29tcG9uZW50UmVmPW51bGwsdGhpcy5fbW9kdWxlUmVmPW51bGx9bmdPbkNoYW5nZXModCl7aWYodGhpcy5fdmlld0NvbnRhaW5lclJlZi5jbGVhcigpLHRoaXMuX2NvbXBvbmVudFJlZj1udWxsLHRoaXMubmdDb21wb25lbnRPdXRsZXQpe2NvbnN0IGU9dGhpcy5uZ0NvbXBvbmVudE91dGxldEluamVjdG9yfHx0aGlzLl92aWV3Q29udGFpbmVyUmVmLnBhcmVudEluamVjdG9yO2lmKHQubmdDb21wb25lbnRPdXRsZXROZ01vZHVsZUZhY3RvcnkpaWYodGhpcy5fbW9kdWxlUmVmJiZ0aGlzLl9tb2R1bGVSZWYuZGVzdHJveSgpLHRoaXMubmdDb21wb25lbnRPdXRsZXROZ01vZHVsZUZhY3Rvcnkpe2NvbnN0IHQ9ZS5nZXQoemIpO3RoaXMuX21vZHVsZVJlZj10aGlzLm5nQ29tcG9uZW50T3V0bGV0TmdNb2R1bGVGYWN0b3J5LmNyZWF0ZSh0LmluamVjdG9yKX1lbHNlIHRoaXMuX21vZHVsZVJlZj1udWxsO2NvbnN0IG49KHRoaXMuX21vZHVsZVJlZj90aGlzLl9tb2R1bGVSZWYuY29tcG9uZW50RmFjdG9yeVJlc29sdmVyOmUuZ2V0KEdoKSkucmVzb2x2ZUNvbXBvbmVudEZhY3RvcnkodGhpcy5uZ0NvbXBvbmVudE91dGxldCk7dGhpcy5fY29tcG9uZW50UmVmPXRoaXMuX3ZpZXdDb250YWluZXJSZWYuY3JlYXRlQ29tcG9uZW50KG4sdGhpcy5fdmlld0NvbnRhaW5lclJlZi5sZW5ndGgsZSx0aGlzLm5nQ29tcG9uZW50T3V0bGV0Q29udGVudCl9fW5nT25EZXN0cm95KCl7dGhpcy5fbW9kdWxlUmVmJiZ0aGlzLl9tb2R1bGVSZWYuZGVzdHJveSgpfX1Ndi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8TXYpKGdmKEZiKSl9LE12Lsm1ZGlyPWhvKHt0eXBlOk12LHNlbGVjdG9yczpbWyIiLCJuZ0NvbXBvbmVudE91dGxldCIsIiJdXSxpbnB1dHM6e25nQ29tcG9uZW50T3V0bGV0OiJuZ0NvbXBvbmVudE91dGxldCIsbmdDb21wb25lbnRPdXRsZXRJbmplY3RvcjoibmdDb21wb25lbnRPdXRsZXRJbmplY3RvciIsbmdDb21wb25lbnRPdXRsZXRDb250ZW50OiJuZ0NvbXBvbmVudE91dGxldENvbnRlbnQiLG5nQ29tcG9uZW50T3V0bGV0TmdNb2R1bGVGYWN0b3J5OiJuZ0NvbXBvbmVudE91dGxldE5nTW9kdWxlRmFjdG9yeSJ9LGZlYXR1cmVzOltxb119KSxNdi5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOkZifV0sTXYucHJvcERlY29yYXRvcnM9e25nQ29tcG9uZW50T3V0bGV0Olt7dHlwZTpSX31dLG5nQ29tcG9uZW50T3V0bGV0SW5qZWN0b3I6W3t0eXBlOlJffV0sbmdDb21wb25lbnRPdXRsZXRDb250ZW50Olt7dHlwZTpSX31dLG5nQ29tcG9uZW50T3V0bGV0TmdNb2R1bGVGYWN0b3J5Olt7dHlwZTpSX31dfSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKE12LFt7dHlwZTprXyxhcmdzOlt7c2VsZWN0b3I6IltuZ0NvbXBvbmVudE91dGxldF0ifV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6RmJ9XX0pLHtuZ0NvbXBvbmVudE91dGxldDpbe3R5cGU6Ul99XSxuZ0NvbXBvbmVudE91dGxldEluamVjdG9yOlt7dHlwZTpSX31dLG5nQ29tcG9uZW50T3V0bGV0Q29udGVudDpbe3R5cGU6Ul99XSxuZ0NvbXBvbmVudE91dGxldE5nTW9kdWxlRmFjdG9yeTpbe3R5cGU6Ul99XX0pOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3MgdnZ7Y29uc3RydWN0b3IodCxlLG4sbyl7dGhpcy4kaW1wbGljaXQ9dCx0aGlzLm5nRm9yT2Y9ZSx0aGlzLmluZGV4PW4sdGhpcy5jb3VudD1vfWdldCBmaXJzdCgpe3JldHVybiAwPT09dGhpcy5pbmRleH1nZXQgbGFzdCgpe3JldHVybiB0aGlzLmluZGV4PT09dGhpcy5jb3VudC0xfWdldCBldmVuKCl7cmV0dXJuIHRoaXMuaW5kZXglMj09MH1nZXQgb2RkKCl7cmV0dXJuIXRoaXMuZXZlbn19Y2xhc3MgeHZ7Y29uc3RydWN0b3IodCxlLG4pe3RoaXMuX3ZpZXdDb250YWluZXI9dCx0aGlzLl90ZW1wbGF0ZT1lLHRoaXMuX2RpZmZlcnM9bix0aGlzLl9uZ0Zvck9mPW51bGwsdGhpcy5fbmdGb3JPZkRpcnR5PSEwLHRoaXMuX2RpZmZlcj1udWxsfXNldCBuZ0Zvck9mKHQpe3RoaXMuX25nRm9yT2Y9dCx0aGlzLl9uZ0Zvck9mRGlydHk9ITB9c2V0IG5nRm9yVHJhY2tCeSh0KXsidW5kZWZpbmVkIiE9dHlwZW9mIG5nRGV2TW9kZSYmIW5nRGV2TW9kZXx8bnVsbD09dHx8ImZ1bmN0aW9uIj09dHlwZW9mIHR8fGNvbnNvbGUmJmNvbnNvbGUud2FybiYmY29uc29sZS53YXJuKGB0cmFja0J5IG11c3QgYmUgYSBmdW5jdGlvbiwgYnV0IHJlY2VpdmVkICR7SlNPTi5zdHJpbmdpZnkodCl9LiBTZWUgaHR0cHM6Ly9hbmd1bGFyLmlvL2FwaS9jb21tb24vTmdGb3JPZiNjaGFuZ2UtcHJvcGFnYXRpb24gZm9yIG1vcmUgaW5mb3JtYXRpb24uYCksdGhpcy5fdHJhY2tCeUZuPXR9Z2V0IG5nRm9yVHJhY2tCeSgpe3JldHVybiB0aGlzLl90cmFja0J5Rm59c2V0IG5nRm9yVGVtcGxhdGUodCl7dCYmKHRoaXMuX3RlbXBsYXRlPXQpfW5nRG9DaGVjaygpe2lmKHRoaXMuX25nRm9yT2ZEaXJ0eSl7dGhpcy5fbmdGb3JPZkRpcnR5PSExO2NvbnN0IHQ9dGhpcy5fbmdGb3JPZjtpZighdGhpcy5fZGlmZmVyJiZ0KXRyeXt0aGlzLl9kaWZmZXI9dGhpcy5fZGlmZmVycy5maW5kKHQpLmNyZWF0ZSh0aGlzLm5nRm9yVHJhY2tCeSl9Y2F0Y2goZSl7dGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgZmluZCBhIGRpZmZlciBzdXBwb3J0aW5nIG9iamVjdCAnJHt0fScgb2YgdHlwZSAnJHsoZnVuY3Rpb24gbih0KXtyZXR1cm4gdC5uYW1lfHx0eXBlb2YgdH0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovKSh0KX0nLiBOZ0ZvciBvbmx5IHN1cHBvcnRzIGJpbmRpbmcgdG8gSXRlcmFibGVzIHN1Y2ggYXMgQXJyYXlzLmApfX1pZih0aGlzLl9kaWZmZXIpe2NvbnN0IHQ9dGhpcy5fZGlmZmVyLmRpZmYodGhpcy5fbmdGb3JPZik7dCYmdGhpcy5fYXBwbHlDaGFuZ2VzKHQpfX1fYXBwbHlDaGFuZ2VzKHQpe2NvbnN0IGU9W107dC5mb3JFYWNoT3BlcmF0aW9uKCgodCxuLG8pPT57aWYobnVsbD09dC5wcmV2aW91c0luZGV4KXtjb25zdCBuPXRoaXMuX3ZpZXdDb250YWluZXIuY3JlYXRlRW1iZWRkZWRWaWV3KHRoaXMuX3RlbXBsYXRlLG5ldyB2dihudWxsLHRoaXMuX25nRm9yT2YsLTEsLTEpLG51bGw9PT1vP3ZvaWQgMDpvKSxpPW5ldyBPdih0LG4pO2UucHVzaChpKX1lbHNlIGlmKG51bGw9PW8pdGhpcy5fdmlld0NvbnRhaW5lci5yZW1vdmUobnVsbD09PW4/dm9pZCAwOm4pO2Vsc2UgaWYobnVsbCE9PW4pe2NvbnN0IGk9dGhpcy5fdmlld0NvbnRhaW5lci5nZXQobik7dGhpcy5fdmlld0NvbnRhaW5lci5tb3ZlKGksbyk7Y29uc3QgYT1uZXcgT3YodCxpKTtlLnB1c2goYSl9fSkpO2ZvcihsZXQgdD0wO3Q8ZS5sZW5ndGg7dCsrKXRoaXMuX3BlclZpZXdDaGFuZ2UoZVt0XS52aWV3LGVbdF0ucmVjb3JkKTtmb3IobGV0IHQ9MCxlPXRoaXMuX3ZpZXdDb250YWluZXIubGVuZ3RoO3Q8ZTt0Kyspe2NvbnN0IG49dGhpcy5fdmlld0NvbnRhaW5lci5nZXQodCk7bi5jb250ZXh0LmluZGV4PXQsbi5jb250ZXh0LmNvdW50PWUsbi5jb250ZXh0Lm5nRm9yT2Y9dGhpcy5fbmdGb3JPZn10LmZvckVhY2hJZGVudGl0eUNoYW5nZSgodD0+e3RoaXMuX3ZpZXdDb250YWluZXIuZ2V0KHQuY3VycmVudEluZGV4KS5jb250ZXh0LiRpbXBsaWNpdD10Lml0ZW19KSl9X3BlclZpZXdDaGFuZ2UodCxlKXt0LmNvbnRleHQuJGltcGxpY2l0PWUuaXRlbX1zdGF0aWMgbmdUZW1wbGF0ZUNvbnRleHRHdWFyZCh0LGUpe3JldHVybiEwfX14di7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8eHYpKGdmKEZiKSxnZihFYiksZ2YoaGIpKX0seHYuybVkaXI9aG8oe3R5cGU6eHYsc2VsZWN0b3JzOltbIiIsIm5nRm9yIiwiIiwibmdGb3JPZiIsIiJdXSxpbnB1dHM6e25nRm9yT2Y6Im5nRm9yT2YiLG5nRm9yVHJhY2tCeToibmdGb3JUcmFja0J5IixuZ0ZvclRlbXBsYXRlOiJuZ0ZvclRlbXBsYXRlIn19KSx4di5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOkZifSx7dHlwZTpFYn0se3R5cGU6aGJ9XSx4di5wcm9wRGVjb3JhdG9ycz17bmdGb3JPZjpbe3R5cGU6Ul99XSxuZ0ZvclRyYWNrQnk6W3t0eXBlOlJffV0sbmdGb3JUZW1wbGF0ZTpbe3R5cGU6Ul99XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYih4dixbe3R5cGU6a18sYXJnczpbe3NlbGVjdG9yOiJbbmdGb3JdW25nRm9yT2ZdIn1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOkZifSx7dHlwZTpFYn0se3R5cGU6aGJ9XX0pLHtuZ0Zvck9mOlt7dHlwZTpSX31dLG5nRm9yVHJhY2tCeTpbe3R5cGU6Ul99XSxuZ0ZvclRlbXBsYXRlOlt7dHlwZTpSX31dfSk7Y2xhc3MgT3Z7Y29uc3RydWN0b3IodCxlKXt0aGlzLnJlY29yZD10LHRoaXMudmlldz1lfX1jbGFzcyBQdntjb25zdHJ1Y3Rvcih0LGUpe3RoaXMuX3ZpZXdDb250YWluZXI9dCx0aGlzLl9jb250ZXh0PW5ldyB3dix0aGlzLl90aGVuVGVtcGxhdGVSZWY9bnVsbCx0aGlzLl9lbHNlVGVtcGxhdGVSZWY9bnVsbCx0aGlzLl90aGVuVmlld1JlZj1udWxsLHRoaXMuX2Vsc2VWaWV3UmVmPW51bGwsdGhpcy5fdGhlblRlbXBsYXRlUmVmPWV9c2V0IG5nSWYodCl7dGhpcy5fY29udGV4dC4kaW1wbGljaXQ9dGhpcy5fY29udGV4dC5uZ0lmPXQsdGhpcy5fdXBkYXRlVmlldygpfXNldCBuZ0lmVGhlbih0KXtrdigibmdJZlRoZW4iLHQpLHRoaXMuX3RoZW5UZW1wbGF0ZVJlZj10LHRoaXMuX3RoZW5WaWV3UmVmPW51bGwsdGhpcy5fdXBkYXRlVmlldygpfXNldCBuZ0lmRWxzZSh0KXtrdigibmdJZkVsc2UiLHQpLHRoaXMuX2Vsc2VUZW1wbGF0ZVJlZj10LHRoaXMuX2Vsc2VWaWV3UmVmPW51bGwsdGhpcy5fdXBkYXRlVmlldygpfV91cGRhdGVWaWV3KCl7dGhpcy5fY29udGV4dC4kaW1wbGljaXQ/dGhpcy5fdGhlblZpZXdSZWZ8fCh0aGlzLl92aWV3Q29udGFpbmVyLmNsZWFyKCksdGhpcy5fZWxzZVZpZXdSZWY9bnVsbCx0aGlzLl90aGVuVGVtcGxhdGVSZWYmJih0aGlzLl90aGVuVmlld1JlZj10aGlzLl92aWV3Q29udGFpbmVyLmNyZWF0ZUVtYmVkZGVkVmlldyh0aGlzLl90aGVuVGVtcGxhdGVSZWYsdGhpcy5fY29udGV4dCkpKTp0aGlzLl9lbHNlVmlld1JlZnx8KHRoaXMuX3ZpZXdDb250YWluZXIuY2xlYXIoKSx0aGlzLl90aGVuVmlld1JlZj1udWxsLHRoaXMuX2Vsc2VUZW1wbGF0ZVJlZiYmKHRoaXMuX2Vsc2VWaWV3UmVmPXRoaXMuX3ZpZXdDb250YWluZXIuY3JlYXRlRW1iZWRkZWRWaWV3KHRoaXMuX2Vsc2VUZW1wbGF0ZVJlZix0aGlzLl9jb250ZXh0KSkpfXN0YXRpYyBuZ1RlbXBsYXRlQ29udGV4dEd1YXJkKHQsZSl7cmV0dXJuITB9fVB2Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxQdikoZ2YoRmIpLGdmKEViKSl9LFB2Lsm1ZGlyPWhvKHt0eXBlOlB2LHNlbGVjdG9yczpbWyIiLCJuZ0lmIiwiIl1dLGlucHV0czp7bmdJZjoibmdJZiIsbmdJZlRoZW46Im5nSWZUaGVuIixuZ0lmRWxzZToibmdJZkVsc2UifX0pLFB2LmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6RmJ9LHt0eXBlOkVifV0sUHYucHJvcERlY29yYXRvcnM9e25nSWY6W3t0eXBlOlJffV0sbmdJZlRoZW46W3t0eXBlOlJffV0sbmdJZkVsc2U6W3t0eXBlOlJffV19LCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoUHYsW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3RvcjoiW25nSWZdIn1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOkZifSx7dHlwZTpFYn1dfSkse25nSWY6W3t0eXBlOlJffV0sbmdJZlRoZW46W3t0eXBlOlJffV0sbmdJZkVsc2U6W3t0eXBlOlJffV19KTtjbGFzcyB3dntjb25zdHJ1Y3Rvcigpe3RoaXMuJGltcGxpY2l0PW51bGwsdGhpcy5uZ0lmPW51bGx9fWZ1bmN0aW9uIGt2KHQsZSl7aWYoISEoZSYmIWUuY3JlYXRlRW1iZWRkZWRWaWV3KSl0aHJvdyBuZXcgRXJyb3IoYCR7dH0gbXVzdCBiZSBhIFRlbXBsYXRlUmVmLCBidXQgcmVjZWl2ZWQgJyR7S2UoZSl9Jy5gKX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY2xhc3MgU3Z7Y29uc3RydWN0b3IodCxlKXt0aGlzLl92aWV3Q29udGFpbmVyUmVmPXQsdGhpcy5fdGVtcGxhdGVSZWY9ZSx0aGlzLl9jcmVhdGVkPSExfWNyZWF0ZSgpe3RoaXMuX2NyZWF0ZWQ9ITAsdGhpcy5fdmlld0NvbnRhaW5lclJlZi5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy5fdGVtcGxhdGVSZWYpfWRlc3Ryb3koKXt0aGlzLl9jcmVhdGVkPSExLHRoaXMuX3ZpZXdDb250YWluZXJSZWYuY2xlYXIoKX1lbmZvcmNlU3RhdGUodCl7dCYmIXRoaXMuX2NyZWF0ZWQ/dGhpcy5jcmVhdGUoKTohdCYmdGhpcy5fY3JlYXRlZCYmdGhpcy5kZXN0cm95KCl9fWNsYXNzIER2e2NvbnN0cnVjdG9yKCl7dGhpcy5fZGVmYXVsdFVzZWQ9ITEsdGhpcy5fY2FzZUNvdW50PTAsdGhpcy5fbGFzdENhc2VDaGVja0luZGV4PTAsdGhpcy5fbGFzdENhc2VzTWF0Y2hlZD0hMX1zZXQgbmdTd2l0Y2godCl7dGhpcy5fbmdTd2l0Y2g9dCwwPT09dGhpcy5fY2FzZUNvdW50JiZ0aGlzLl91cGRhdGVEZWZhdWx0Q2FzZXMoITApfV9hZGRDYXNlKCl7cmV0dXJuIHRoaXMuX2Nhc2VDb3VudCsrfV9hZGREZWZhdWx0KHQpe3RoaXMuX2RlZmF1bHRWaWV3c3x8KHRoaXMuX2RlZmF1bHRWaWV3cz1bXSksdGhpcy5fZGVmYXVsdFZpZXdzLnB1c2godCl9X21hdGNoQ2FzZSh0KXtjb25zdCBlPXQ9PXRoaXMuX25nU3dpdGNoO3JldHVybiB0aGlzLl9sYXN0Q2FzZXNNYXRjaGVkPXRoaXMuX2xhc3RDYXNlc01hdGNoZWR8fGUsdGhpcy5fbGFzdENhc2VDaGVja0luZGV4KyssdGhpcy5fbGFzdENhc2VDaGVja0luZGV4PT09dGhpcy5fY2FzZUNvdW50JiYodGhpcy5fdXBkYXRlRGVmYXVsdENhc2VzKCF0aGlzLl9sYXN0Q2FzZXNNYXRjaGVkKSx0aGlzLl9sYXN0Q2FzZUNoZWNrSW5kZXg9MCx0aGlzLl9sYXN0Q2FzZXNNYXRjaGVkPSExKSxlfV91cGRhdGVEZWZhdWx0Q2FzZXModCl7aWYodGhpcy5fZGVmYXVsdFZpZXdzJiZ0IT09dGhpcy5fZGVmYXVsdFVzZWQpe3RoaXMuX2RlZmF1bHRVc2VkPXQ7Zm9yKGxldCBlPTA7ZTx0aGlzLl9kZWZhdWx0Vmlld3MubGVuZ3RoO2UrKyl7dGhpcy5fZGVmYXVsdFZpZXdzW2VdLmVuZm9yY2VTdGF0ZSh0KX19fX1Edi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8RHYpfSxEdi7JtWRpcj1obyh7dHlwZTpEdixzZWxlY3RvcnM6W1siIiwibmdTd2l0Y2giLCIiXV0saW5wdXRzOntuZ1N3aXRjaDoibmdTd2l0Y2gifX0pLER2LnByb3BEZWNvcmF0b3JzPXtuZ1N3aXRjaDpbe3R5cGU6Ul99XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihEdixbe3R5cGU6a18sYXJnczpbe3NlbGVjdG9yOiJbbmdTd2l0Y2hdIn1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW119KSx7bmdTd2l0Y2g6W3t0eXBlOlJffV19KTtjbGFzcyBSdntjb25zdHJ1Y3Rvcih0LGUsbil7dGhpcy5uZ1N3aXRjaD1uLCJ1bmRlZmluZWQiIT10eXBlb2YgbmdEZXZNb2RlJiYhbmdEZXZNb2RlfHxufHxBdigibmdTd2l0Y2hDYXNlIiwiTmdTd2l0Y2hDYXNlIiksbi5fYWRkQ2FzZSgpLHRoaXMuX3ZpZXc9bmV3IFN2KHQsZSl9bmdEb0NoZWNrKCl7dGhpcy5fdmlldy5lbmZvcmNlU3RhdGUodGhpcy5uZ1N3aXRjaC5fbWF0Y2hDYXNlKHRoaXMubmdTd2l0Y2hDYXNlKSl9fVJ2Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxSdikoZ2YoRmIpLGdmKEViKSxnZihEdiw5KSl9LFJ2Lsm1ZGlyPWhvKHt0eXBlOlJ2LHNlbGVjdG9yczpbWyIiLCJuZ1N3aXRjaENhc2UiLCIiXV0saW5wdXRzOntuZ1N3aXRjaENhc2U6Im5nU3dpdGNoQ2FzZSJ9fSksUnYuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpGYn0se3R5cGU6RWJ9LHt0eXBlOkR2LGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpVcn1dfV0sUnYucHJvcERlY29yYXRvcnM9e25nU3dpdGNoQ2FzZTpbe3R5cGU6Ul99XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihSdixbe3R5cGU6a18sYXJnczpbe3NlbGVjdG9yOiJbbmdTd2l0Y2hDYXNlXSJ9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpGYn0se3R5cGU6RWJ9LHt0eXBlOkR2LGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpVcn1dfV19KSx7bmdTd2l0Y2hDYXNlOlt7dHlwZTpSX31dfSk7Y2xhc3MgRXZ7Y29uc3RydWN0b3IodCxlLG4peyJ1bmRlZmluZWQiIT10eXBlb2YgbmdEZXZNb2RlJiYhbmdEZXZNb2RlfHxufHxBdigibmdTd2l0Y2hEZWZhdWx0IiwiTmdTd2l0Y2hEZWZhdWx0Iiksbi5fYWRkRGVmYXVsdChuZXcgU3YodCxlKSl9fWZ1bmN0aW9uIEF2KHQsZSl7dGhyb3cgbmV3IG5uKCIzMDUiLGBBbiBlbGVtZW50IHdpdGggdGhlICIke3R9IiBhdHRyaWJ1dGUgKG1hdGNoaW5nIHRoZSAiJHtlfSIgZGlyZWN0aXZlKSBtdXN0IGJlIGxvY2F0ZWQgaW5zaWRlIGFuIGVsZW1lbnQgd2l0aCB0aGUgIm5nU3dpdGNoIiBhdHRyaWJ1dGUgKG1hdGNoaW5nICJOZ1N3aXRjaCIgZGlyZWN0aXZlKWApfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9Fdi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8RXYpKGdmKEZiKSxnZihFYiksZ2YoRHYsOSkpfSxFdi7JtWRpcj1obyh7dHlwZTpFdixzZWxlY3RvcnM6W1siIiwibmdTd2l0Y2hEZWZhdWx0IiwiIl1dfSksRXYuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpGYn0se3R5cGU6RWJ9LHt0eXBlOkR2LGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpVcn1dfV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihFdixbe3R5cGU6a18sYXJnczpbe3NlbGVjdG9yOiJbbmdTd2l0Y2hEZWZhdWx0XSJ9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpGYn0se3R5cGU6RWJ9LHt0eXBlOkR2LGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpVcn1dfV19KSxudWxsKTtjbGFzcyBUdntjb25zdHJ1Y3Rvcih0KXt0aGlzLl9sb2NhbGl6YXRpb249dCx0aGlzLl9jYXNlVmlld3M9e319c2V0IG5nUGx1cmFsKHQpe3RoaXMuX3N3aXRjaFZhbHVlPXQsdGhpcy5fdXBkYXRlVmlldygpfWFkZENhc2UodCxlKXt0aGlzLl9jYXNlVmlld3NbdF09ZX1fdXBkYXRlVmlldygpe3RoaXMuX2NsZWFyVmlld3MoKTtjb25zdCB0PU9iamVjdC5rZXlzKHRoaXMuX2Nhc2VWaWV3cyksZT1idih0aGlzLl9zd2l0Y2hWYWx1ZSx0LHRoaXMuX2xvY2FsaXphdGlvbik7dGhpcy5fYWN0aXZhdGVWaWV3KHRoaXMuX2Nhc2VWaWV3c1tlXSl9X2NsZWFyVmlld3MoKXt0aGlzLl9hY3RpdmVWaWV3JiZ0aGlzLl9hY3RpdmVWaWV3LmRlc3Ryb3koKX1fYWN0aXZhdGVWaWV3KHQpe3QmJih0aGlzLl9hY3RpdmVWaWV3PXQsdGhpcy5fYWN0aXZlVmlldy5jcmVhdGUoKSl9fVR2Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxUdikoZ2YoaHYpKX0sVHYuybVkaXI9aG8oe3R5cGU6VHYsc2VsZWN0b3JzOltbIiIsIm5nUGx1cmFsIiwiIl1dLGlucHV0czp7bmdQbHVyYWw6Im5nUGx1cmFsIn19KSxUdi5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOmh2fV0sVHYucHJvcERlY29yYXRvcnM9e25nUGx1cmFsOlt7dHlwZTpSX31dfSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKFR2LFt7dHlwZTprXyxhcmdzOlt7c2VsZWN0b3I6IltuZ1BsdXJhbF0ifV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6aHZ9XX0pLHtuZ1BsdXJhbDpbe3R5cGU6Ul99XX0pO2NsYXNzIE52e2NvbnN0cnVjdG9yKHQsZSxuLG8pe3RoaXMudmFsdWU9dDtjb25zdCBpPSFpc05hTihOdW1iZXIodCkpO28uYWRkQ2FzZShpP2A9JHt0fWA6dCxuZXcgU3YobixlKSl9fU52Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxOdikoR2EoIm5nUGx1cmFsQ2FzZSIpLGdmKEViKSxnZihGYiksZ2YoVHYsMSkpfSxOdi7JtWRpcj1obyh7dHlwZTpOdixzZWxlY3RvcnM6W1siIiwibmdQbHVyYWxDYXNlIiwiIl1dfSksTnYuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6JGEsYXJnczpbIm5nUGx1cmFsQ2FzZSJdfV19LHt0eXBlOkVifSx7dHlwZTpGYn0se3R5cGU6VHYsZGVjb3JhdG9yczpbe3R5cGU6VXJ9XX1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoTnYsW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3RvcjoiW25nUGx1cmFsQ2FzZV0ifV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOiRhLGFyZ3M6WyJuZ1BsdXJhbENhc2UiXX1dfSx7dHlwZTpFYn0se3R5cGU6RmJ9LHt0eXBlOlR2LGRlY29yYXRvcnM6W3t0eXBlOlVyfV19XX0pLG51bGwpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3MgenZ7Y29uc3RydWN0b3IodCxlLG4pe3RoaXMuX25nRWw9dCx0aGlzLl9kaWZmZXJzPWUsdGhpcy5fcmVuZGVyZXI9bix0aGlzLl9uZ1N0eWxlPW51bGwsdGhpcy5fZGlmZmVyPW51bGx9c2V0IG5nU3R5bGUodCl7dGhpcy5fbmdTdHlsZT10LCF0aGlzLl9kaWZmZXImJnQmJih0aGlzLl9kaWZmZXI9dGhpcy5fZGlmZmVycy5maW5kKHQpLmNyZWF0ZSgpKX1uZ0RvQ2hlY2soKXtpZih0aGlzLl9kaWZmZXIpe2NvbnN0IHQ9dGhpcy5fZGlmZmVyLmRpZmYodGhpcy5fbmdTdHlsZSk7dCYmdGhpcy5fYXBwbHlDaGFuZ2VzKHQpfX1fc2V0U3R5bGUodCxlKXtjb25zdFtuLG9dPXQuc3BsaXQoIi4iKTtudWxsIT0oZT1udWxsIT1lJiZvP2Ake2V9JHtvfWA6ZSk/dGhpcy5fcmVuZGVyZXIuc2V0U3R5bGUodGhpcy5fbmdFbC5uYXRpdmVFbGVtZW50LG4sZSk6dGhpcy5fcmVuZGVyZXIucmVtb3ZlU3R5bGUodGhpcy5fbmdFbC5uYXRpdmVFbGVtZW50LG4pfV9hcHBseUNoYW5nZXModCl7dC5mb3JFYWNoUmVtb3ZlZEl0ZW0oKHQ9PnRoaXMuX3NldFN0eWxlKHQua2V5LG51bGwpKSksdC5mb3JFYWNoQWRkZWRJdGVtKCh0PT50aGlzLl9zZXRTdHlsZSh0LmtleSx0LmN1cnJlbnRWYWx1ZSkpKSx0LmZvckVhY2hDaGFuZ2VkSXRlbSgodD0+dGhpcy5fc2V0U3R5bGUodC5rZXksdC5jdXJyZW50VmFsdWUpKSl9fXp2Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHx6dikoZ2YoS2gpLGdmKHliKSxnZigkaCkpfSx6di7JtWRpcj1obyh7dHlwZTp6dixzZWxlY3RvcnM6W1siIiwibmdTdHlsZSIsIiJdXSxpbnB1dHM6e25nU3R5bGU6Im5nU3R5bGUifX0pLHp2LmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6S2h9LHt0eXBlOnlifSx7dHlwZTokaH1dLHp2LnByb3BEZWNvcmF0b3JzPXtuZ1N0eWxlOlt7dHlwZTpSXyxhcmdzOlsibmdTdHlsZSJdfV19LCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoenYsW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3RvcjoiW25nU3R5bGVdIn1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOktofSx7dHlwZTp5Yn0se3R5cGU6JGh9XX0pLHtuZ1N0eWxlOlt7dHlwZTpSXyxhcmdzOlsibmdTdHlsZSJdfV19KTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNsYXNzIEl2e2NvbnN0cnVjdG9yKHQpe3RoaXMuX3ZpZXdDb250YWluZXJSZWY9dCx0aGlzLl92aWV3UmVmPW51bGwsdGhpcy5uZ1RlbXBsYXRlT3V0bGV0Q29udGV4dD1udWxsLHRoaXMubmdUZW1wbGF0ZU91dGxldD1udWxsfW5nT25DaGFuZ2VzKHQpe2lmKHQubmdUZW1wbGF0ZU91dGxldCl7Y29uc3QgdD10aGlzLl92aWV3Q29udGFpbmVyUmVmO3RoaXMuX3ZpZXdSZWYmJnQucmVtb3ZlKHQuaW5kZXhPZih0aGlzLl92aWV3UmVmKSksdGhpcy5fdmlld1JlZj10aGlzLm5nVGVtcGxhdGVPdXRsZXQ/dC5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy5uZ1RlbXBsYXRlT3V0bGV0LHRoaXMubmdUZW1wbGF0ZU91dGxldENvbnRleHQpOm51bGx9ZWxzZSB0aGlzLl92aWV3UmVmJiZ0Lm5nVGVtcGxhdGVPdXRsZXRDb250ZXh0JiZ0aGlzLm5nVGVtcGxhdGVPdXRsZXRDb250ZXh0JiYodGhpcy5fdmlld1JlZi5jb250ZXh0PXRoaXMubmdUZW1wbGF0ZU91dGxldENvbnRleHQpfX1Jdi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8SXYpKGdmKEZiKSl9LEl2Lsm1ZGlyPWhvKHt0eXBlOkl2LHNlbGVjdG9yczpbWyIiLCJuZ1RlbXBsYXRlT3V0bGV0IiwiIl1dLGlucHV0czp7bmdUZW1wbGF0ZU91dGxldENvbnRleHQ6Im5nVGVtcGxhdGVPdXRsZXRDb250ZXh0IixuZ1RlbXBsYXRlT3V0bGV0OiJuZ1RlbXBsYXRlT3V0bGV0In0sZmVhdHVyZXM6W3FvXX0pLEl2LmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6RmJ9XSxJdi5wcm9wRGVjb3JhdG9ycz17bmdUZW1wbGF0ZU91dGxldENvbnRleHQ6W3t0eXBlOlJffV0sbmdUZW1wbGF0ZU91dGxldDpbe3R5cGU6Ul99XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihJdixbe3R5cGU6a18sYXJnczpbe3NlbGVjdG9yOiJbbmdUZW1wbGF0ZU91dGxldF0ifV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6RmJ9XX0pLHtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dDpbe3R5cGU6Ul99XSxuZ1RlbXBsYXRlT3V0bGV0Olt7dHlwZTpSX31dfSk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjb25zdCBIdj1bQ3YsTXYseHYsUHYsSXYsenYsRHYsUnYsRXYsVHYsTnZdOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9mdW5jdGlvbiBGdih0LGUpe3JldHVybiBFcnJvcihgSW52YWxpZFBpcGVBcmd1bWVudDogJyR7ZX0nIGZvciBwaXBlICcke0tlKHQpfSdgKX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY29uc3QgTHY9bmV3IGNsYXNze2NyZWF0ZVN1YnNjcmlwdGlvbih0LGUpe3JldHVybiB0LnRoZW4oZSwodD0+e3Rocm93IHR9KSl9ZGlzcG9zZSh0KXt9b25EZXN0cm95KHQpe319LEJ2PW5ldyBjbGFzc3tjcmVhdGVTdWJzY3JpcHRpb24odCxlKXtyZXR1cm4gdC5zdWJzY3JpYmUoe25leHQ6ZSxlcnJvcjp0PT57dGhyb3cgdH19KX1kaXNwb3NlKHQpe3QudW5zdWJzY3JpYmUoKX1vbkRlc3Ryb3kodCl7dC51bnN1YnNjcmliZSgpfX07Y2xhc3MgVnZ7Y29uc3RydWN0b3IodCl7dGhpcy5fcmVmPXQsdGhpcy5fbGF0ZXN0VmFsdWU9bnVsbCx0aGlzLl9zdWJzY3JpcHRpb249bnVsbCx0aGlzLl9vYmo9bnVsbCx0aGlzLl9zdHJhdGVneT1udWxsfW5nT25EZXN0cm95KCl7dGhpcy5fc3Vic2NyaXB0aW9uJiZ0aGlzLl9kaXNwb3NlKCl9dHJhbnNmb3JtKHQpe3JldHVybiB0aGlzLl9vYmo/dCE9PXRoaXMuX29iaj8odGhpcy5fZGlzcG9zZSgpLHRoaXMudHJhbnNmb3JtKHQpKTp0aGlzLl9sYXRlc3RWYWx1ZToodCYmdGhpcy5fc3Vic2NyaWJlKHQpLHRoaXMuX2xhdGVzdFZhbHVlKX1fc3Vic2NyaWJlKHQpe3RoaXMuX29iaj10LHRoaXMuX3N0cmF0ZWd5PXRoaXMuX3NlbGVjdFN0cmF0ZWd5KHQpLHRoaXMuX3N1YnNjcmlwdGlvbj10aGlzLl9zdHJhdGVneS5jcmVhdGVTdWJzY3JpcHRpb24odCwoZT0+dGhpcy5fdXBkYXRlTGF0ZXN0VmFsdWUodCxlKSkpfV9zZWxlY3RTdHJhdGVneSh0KXtpZihrZih0KSlyZXR1cm4gTHY7aWYoU2YodCkpcmV0dXJuIEJ2O3Rocm93IEZ2KFZ2LHQpfV9kaXNwb3NlKCl7dGhpcy5fc3RyYXRlZ3kuZGlzcG9zZSh0aGlzLl9zdWJzY3JpcHRpb24pLHRoaXMuX2xhdGVzdFZhbHVlPW51bGwsdGhpcy5fc3Vic2NyaXB0aW9uPW51bGwsdGhpcy5fb2JqPW51bGx9X3VwZGF0ZUxhdGVzdFZhbHVlKHQsZSl7dD09PXRoaXMuX29iaiYmKHRoaXMuX2xhdGVzdFZhbHVlPWUsdGhpcy5fcmVmLm1hcmtGb3JDaGVjaygpKX19VnYuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFZ2KShnZihPYiwxNikpfSxWdi7JtXBpcGU9Ym8oe25hbWU6ImFzeW5jIix0eXBlOlZ2LHB1cmU6ITF9KSxWdi5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOk9ifV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihWdixbe3R5cGU6RF8sYXJnczpbe25hbWU6ImFzeW5jIixwdXJlOiExfV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6T2J9XX0pLG51bGwpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3MganZ7dHJhbnNmb3JtKHQpe2lmKG51bGw9PXQpcmV0dXJuIG51bGw7aWYoInN0cmluZyIhPXR5cGVvZiB0KXRocm93IEZ2KGp2LHQpO3JldHVybiB0LnRvTG93ZXJDYXNlKCl9fWp2Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxqdil9LGp2Lsm1cGlwZT1ibyh7bmFtZToibG93ZXJjYXNlIix0eXBlOmp2LHB1cmU6ITB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKGp2LFt7dHlwZTpEXyxhcmdzOlt7bmFtZToibG93ZXJjYXNlIn1dfV0sbnVsbCxudWxsKTtjb25zdCBVdj0vKD86W0EtWmEtelx4QUFceEI1XHhCQVx4QzAtXHhENlx4RDgtXHhGNlx4RjgtXHUwMkMxXHUwMkM2LVx1MDJEMVx1MDJFMC1cdTAyRTRcdTAyRUNcdTAyRUVcdTAzNzAtXHUwMzc0XHUwMzc2XHUwMzc3XHUwMzdBLVx1MDM3RFx1MDM3Rlx1MDM4Nlx1MDM4OC1cdTAzOEFcdTAzOENcdTAzOEUtXHUwM0ExXHUwM0EzLVx1MDNGNVx1MDNGNy1cdTA0ODFcdTA0OEEtXHUwNTJGXHUwNTMxLVx1MDU1Nlx1MDU1OVx1MDU2MS1cdTA1ODdcdTA1RDAtXHUwNUVBXHUwNUYwLVx1MDVGMlx1MDYyMC1cdTA2NEFcdTA2NkVcdTA2NkZcdTA2NzEtXHUwNkQzXHUwNkQ1XHUwNkU1XHUwNkU2XHUwNkVFXHUwNkVGXHUwNkZBLVx1MDZGQ1x1MDZGRlx1MDcxMFx1MDcxMi1cdTA3MkZcdTA3NEQtXHUwN0E1XHUwN0IxXHUwN0NBLVx1MDdFQVx1MDdGNFx1MDdGNVx1MDdGQVx1MDgwMC1cdTA4MTVcdTA4MUFcdTA4MjRcdTA4MjhcdTA4NDAtXHUwODU4XHUwODYwLVx1MDg2QVx1MDhBMC1cdTA4QjRcdTA4QjYtXHUwOEJEXHUwOTA0LVx1MDkzOVx1MDkzRFx1MDk1MFx1MDk1OC1cdTA5NjFcdTA5NzEtXHUwOTgwXHUwOTg1LVx1MDk4Q1x1MDk4Rlx1MDk5MFx1MDk5My1cdTA5QThcdTA5QUEtXHUwOUIwXHUwOUIyXHUwOUI2LVx1MDlCOVx1MDlCRFx1MDlDRVx1MDlEQ1x1MDlERFx1MDlERi1cdTA5RTFcdTA5RjBcdTA5RjFcdTA5RkNcdTBBMDUtXHUwQTBBXHUwQTBGXHUwQTEwXHUwQTEzLVx1MEEyOFx1MEEyQS1cdTBBMzBcdTBBMzJcdTBBMzNcdTBBMzVcdTBBMzZcdTBBMzhcdTBBMzlcdTBBNTktXHUwQTVDXHUwQTVFXHUwQTcyLVx1MEE3NFx1MEE4NS1cdTBBOERcdTBBOEYtXHUwQTkxXHUwQTkzLVx1MEFBOFx1MEFBQS1cdTBBQjBcdTBBQjJcdTBBQjNcdTBBQjUtXHUwQUI5XHUwQUJEXHUwQUQwXHUwQUUwXHUwQUUxXHUwQUY5XHUwQjA1LVx1MEIwQ1x1MEIwRlx1MEIxMFx1MEIxMy1cdTBCMjhcdTBCMkEtXHUwQjMwXHUwQjMyXHUwQjMzXHUwQjM1LVx1MEIzOVx1MEIzRFx1MEI1Q1x1MEI1RFx1MEI1Ri1cdTBCNjFcdTBCNzFcdTBCODNcdTBCODUtXHUwQjhBXHUwQjhFLVx1MEI5MFx1MEI5Mi1cdTBCOTVcdTBCOTlcdTBCOUFcdTBCOUNcdTBCOUVcdTBCOUZcdTBCQTNcdTBCQTRcdTBCQTgtXHUwQkFBXHUwQkFFLVx1MEJCOVx1MEJEMFx1MEMwNS1cdTBDMENcdTBDMEUtXHUwQzEwXHUwQzEyLVx1MEMyOFx1MEMyQS1cdTBDMzlcdTBDM0RcdTBDNTgtXHUwQzVBXHUwQzYwXHUwQzYxXHUwQzgwXHUwQzg1LVx1MEM4Q1x1MEM4RS1cdTBDOTBcdTBDOTItXHUwQ0E4XHUwQ0FBLVx1MENCM1x1MENCNS1cdTBDQjlcdTBDQkRcdTBDREVcdTBDRTBcdTBDRTFcdTBDRjFcdTBDRjJcdTBEMDUtXHUwRDBDXHUwRDBFLVx1MEQxMFx1MEQxMi1cdTBEM0FcdTBEM0RcdTBENEVcdTBENTQtXHUwRDU2XHUwRDVGLVx1MEQ2MVx1MEQ3QS1cdTBEN0ZcdTBEODUtXHUwRDk2XHUwRDlBLVx1MERCMVx1MERCMy1cdTBEQkJcdTBEQkRcdTBEQzAtXHUwREM2XHUwRTAxLVx1MEUzMFx1MEUzMlx1MEUzM1x1MEU0MC1cdTBFNDZcdTBFODFcdTBFODJcdTBFODRcdTBFODdcdTBFODhcdTBFOEFcdTBFOERcdTBFOTQtXHUwRTk3XHUwRTk5LVx1MEU5Rlx1MEVBMS1cdTBFQTNcdTBFQTVcdTBFQTdcdTBFQUFcdTBFQUJcdTBFQUQtXHUwRUIwXHUwRUIyXHUwRUIzXHUwRUJEXHUwRUMwLVx1MEVDNFx1MEVDNlx1MEVEQy1cdTBFREZcdTBGMDBcdTBGNDAtXHUwRjQ3XHUwRjQ5LVx1MEY2Q1x1MEY4OC1cdTBGOENcdTEwMDAtXHUxMDJBXHUxMDNGXHUxMDUwLVx1MTA1NVx1MTA1QS1cdTEwNURcdTEwNjFcdTEwNjVcdTEwNjZcdTEwNkUtXHUxMDcwXHUxMDc1LVx1MTA4MVx1MTA4RVx1MTBBMC1cdTEwQzVcdTEwQzdcdTEwQ0RcdTEwRDAtXHUxMEZBXHUxMEZDLVx1MTI0OFx1MTI0QS1cdTEyNERcdTEyNTAtXHUxMjU2XHUxMjU4XHUxMjVBLVx1MTI1RFx1MTI2MC1cdTEyODhcdTEyOEEtXHUxMjhEXHUxMjkwLVx1MTJCMFx1MTJCMi1cdTEyQjVcdTEyQjgtXHUxMkJFXHUxMkMwXHUxMkMyLVx1MTJDNVx1MTJDOC1cdTEyRDZcdTEyRDgtXHUxMzEwXHUxMzEyLVx1MTMxNVx1MTMxOC1cdTEzNUFcdTEzODAtXHUxMzhGXHUxM0EwLVx1MTNGNVx1MTNGOC1cdTEzRkRcdTE0MDEtXHUxNjZDXHUxNjZGLVx1MTY3Rlx1MTY4MS1cdTE2OUFcdTE2QTAtXHUxNkVBXHUxNkYxLVx1MTZGOFx1MTcwMC1cdTE3MENcdTE3MEUtXHUxNzExXHUxNzIwLVx1MTczMVx1MTc0MC1cdTE3NTFcdTE3NjAtXHUxNzZDXHUxNzZFLVx1MTc3MFx1MTc4MC1cdTE3QjNcdTE3RDdcdTE3RENcdTE4MjAtXHUxODc3XHUxODgwLVx1MTg4NFx1MTg4Ny1cdTE4QThcdTE4QUFcdTE4QjAtXHUxOEY1XHUxOTAwLVx1MTkxRVx1MTk1MC1cdTE5NkRcdTE5NzAtXHUxOTc0XHUxOTgwLVx1MTlBQlx1MTlCMC1cdTE5QzlcdTFBMDAtXHUxQTE2XHUxQTIwLVx1MUE1NFx1MUFBN1x1MUIwNS1cdTFCMzNcdTFCNDUtXHUxQjRCXHUxQjgzLVx1MUJBMFx1MUJBRVx1MUJBRlx1MUJCQS1cdTFCRTVcdTFDMDAtXHUxQzIzXHUxQzRELVx1MUM0Rlx1MUM1QS1cdTFDN0RcdTFDODAtXHUxQzg4XHUxQ0U5LVx1MUNFQ1x1MUNFRS1cdTFDRjFcdTFDRjVcdTFDRjZcdTFEMDAtXHUxREJGXHUxRTAwLVx1MUYxNVx1MUYxOC1cdTFGMURcdTFGMjAtXHUxRjQ1XHUxRjQ4LVx1MUY0RFx1MUY1MC1cdTFGNTdcdTFGNTlcdTFGNUJcdTFGNURcdTFGNUYtXHUxRjdEXHUxRjgwLVx1MUZCNFx1MUZCNi1cdTFGQkNcdTFGQkVcdTFGQzItXHUxRkM0XHUxRkM2LVx1MUZDQ1x1MUZEMC1cdTFGRDNcdTFGRDYtXHUxRkRCXHUxRkUwLVx1MUZFQ1x1MUZGMi1cdTFGRjRcdTFGRjYtXHUxRkZDXHUyMDcxXHUyMDdGXHUyMDkwLVx1MjA5Q1x1MjEwMlx1MjEwN1x1MjEwQS1cdTIxMTNcdTIxMTVcdTIxMTktXHUyMTFEXHUyMTI0XHUyMTI2XHUyMTI4XHUyMTJBLVx1MjEyRFx1MjEyRi1cdTIxMzlcdTIxM0MtXHUyMTNGXHUyMTQ1LVx1MjE0OVx1MjE0RVx1MjE4M1x1MjE4NFx1MkMwMC1cdTJDMkVcdTJDMzAtXHUyQzVFXHUyQzYwLVx1MkNFNFx1MkNFQi1cdTJDRUVcdTJDRjJcdTJDRjNcdTJEMDAtXHUyRDI1XHUyRDI3XHUyRDJEXHUyRDMwLVx1MkQ2N1x1MkQ2Rlx1MkQ4MC1cdTJEOTZcdTJEQTAtXHUyREE2XHUyREE4LVx1MkRBRVx1MkRCMC1cdTJEQjZcdTJEQjgtXHUyREJFXHUyREMwLVx1MkRDNlx1MkRDOC1cdTJEQ0VcdTJERDAtXHUyREQ2XHUyREQ4LVx1MkRERVx1MkUyRlx1MzAwNVx1MzAwNlx1MzAzMS1cdTMwMzVcdTMwM0JcdTMwM0NcdTMwNDEtXHUzMDk2XHUzMDlELVx1MzA5Rlx1MzBBMS1cdTMwRkFcdTMwRkMtXHUzMEZGXHUzMTA1LVx1MzEyRVx1MzEzMS1cdTMxOEVcdTMxQTAtXHUzMUJBXHUzMUYwLVx1MzFGRlx1MzQwMC1cdTREQjVcdTRFMDAtXHU5RkVBXHVBMDAwLVx1QTQ4Q1x1QTREMC1cdUE0RkRcdUE1MDAtXHVBNjBDXHVBNjEwLVx1QTYxRlx1QTYyQVx1QTYyQlx1QTY0MC1cdUE2NkVcdUE2N0YtXHVBNjlEXHVBNkEwLVx1QTZFNVx1QTcxNy1cdUE3MUZcdUE3MjItXHVBNzg4XHVBNzhCLVx1QTdBRVx1QTdCMC1cdUE3QjdcdUE3RjctXHVBODAxXHVBODAzLVx1QTgwNVx1QTgwNy1cdUE4MEFcdUE4MEMtXHVBODIyXHVBODQwLVx1QTg3M1x1QTg4Mi1cdUE4QjNcdUE4RjItXHVBOEY3XHVBOEZCXHVBOEZEXHVBOTBBLVx1QTkyNVx1QTkzMC1cdUE5NDZcdUE5NjAtXHVBOTdDXHVBOTg0LVx1QTlCMlx1QTlDRlx1QTlFMC1cdUE5RTRcdUE5RTYtXHVBOUVGXHVBOUZBLVx1QTlGRVx1QUEwMC1cdUFBMjhcdUFBNDAtXHVBQTQyXHVBQTQ0LVx1QUE0Qlx1QUE2MC1cdUFBNzZcdUFBN0FcdUFBN0UtXHVBQUFGXHVBQUIxXHVBQUI1XHVBQUI2XHVBQUI5LVx1QUFCRFx1QUFDMFx1QUFDMlx1QUFEQi1cdUFBRERcdUFBRTAtXHVBQUVBXHVBQUYyLVx1QUFGNFx1QUIwMS1cdUFCMDZcdUFCMDktXHVBQjBFXHVBQjExLVx1QUIxNlx1QUIyMC1cdUFCMjZcdUFCMjgtXHVBQjJFXHVBQjMwLVx1QUI1QVx1QUI1Qy1cdUFCNjVcdUFCNzAtXHVBQkUyXHVBQzAwLVx1RDdBM1x1RDdCMC1cdUQ3QzZcdUQ3Q0ItXHVEN0ZCXHVGOTAwLVx1RkE2RFx1RkE3MC1cdUZBRDlcdUZCMDAtXHVGQjA2XHVGQjEzLVx1RkIxN1x1RkIxRFx1RkIxRi1cdUZCMjhcdUZCMkEtXHVGQjM2XHVGQjM4LVx1RkIzQ1x1RkIzRVx1RkI0MFx1RkI0MVx1RkI0M1x1RkI0NFx1RkI0Ni1cdUZCQjFcdUZCRDMtXHVGRDNEXHVGRDUwLVx1RkQ4Rlx1RkQ5Mi1cdUZEQzdcdUZERjAtXHVGREZCXHVGRTcwLVx1RkU3NFx1RkU3Ni1cdUZFRkNcdUZGMjEtXHVGRjNBXHVGRjQxLVx1RkY1QVx1RkY2Ni1cdUZGQkVcdUZGQzItXHVGRkM3XHVGRkNBLVx1RkZDRlx1RkZEMi1cdUZGRDdcdUZGREEtXHVGRkRDXXxcdUQ4MDBbXHVEQzAwLVx1REMwQlx1REMwRC1cdURDMjZcdURDMjgtXHVEQzNBXHVEQzNDXHVEQzNEXHVEQzNGLVx1REM0RFx1REM1MC1cdURDNURcdURDODAtXHVEQ0ZBXHVERTgwLVx1REU5Q1x1REVBMC1cdURFRDBcdURGMDAtXHVERjFGXHVERjJELVx1REY0MFx1REY0Mi1cdURGNDlcdURGNTAtXHVERjc1XHVERjgwLVx1REY5RFx1REZBMC1cdURGQzNcdURGQzgtXHVERkNGXXxcdUQ4MDFbXHVEQzAwLVx1REM5RFx1RENCMC1cdURDRDNcdURDRDgtXHVEQ0ZCXHVERDAwLVx1REQyN1x1REQzMC1cdURENjNcdURFMDAtXHVERjM2XHVERjQwLVx1REY1NVx1REY2MC1cdURGNjddfFx1RDgwMltcdURDMDAtXHVEQzA1XHVEQzA4XHVEQzBBLVx1REMzNVx1REMzN1x1REMzOFx1REMzQ1x1REMzRi1cdURDNTVcdURDNjAtXHVEQzc2XHVEQzgwLVx1REM5RVx1RENFMC1cdURDRjJcdURDRjRcdURDRjVcdUREMDAtXHVERDE1XHVERDIwLVx1REQzOVx1REQ4MC1cdUREQjdcdUREQkVcdUREQkZcdURFMDBcdURFMTAtXHVERTEzXHVERTE1LVx1REUxN1x1REUxOS1cdURFMzNcdURFNjAtXHVERTdDXHVERTgwLVx1REU5Q1x1REVDMC1cdURFQzdcdURFQzktXHVERUU0XHVERjAwLVx1REYzNVx1REY0MC1cdURGNTVcdURGNjAtXHVERjcyXHVERjgwLVx1REY5MV18XHVEODAzW1x1REMwMC1cdURDNDhcdURDODAtXHVEQ0IyXHVEQ0MwLVx1RENGMl18XHVEODA0W1x1REMwMy1cdURDMzdcdURDODMtXHVEQ0FGXHVEQ0QwLVx1RENFOFx1REQwMy1cdUREMjZcdURENTAtXHVERDcyXHVERDc2XHVERDgzLVx1RERCMlx1RERDMS1cdUREQzRcdUREREFcdURERENcdURFMDAtXHVERTExXHVERTEzLVx1REUyQlx1REU4MC1cdURFODZcdURFODhcdURFOEEtXHVERThEXHVERThGLVx1REU5RFx1REU5Ri1cdURFQThcdURFQjAtXHVERURFXHVERjA1LVx1REYwQ1x1REYwRlx1REYxMFx1REYxMy1cdURGMjhcdURGMkEtXHVERjMwXHVERjMyXHVERjMzXHVERjM1LVx1REYzOVx1REYzRFx1REY1MFx1REY1RC1cdURGNjFdfFx1RDgwNVtcdURDMDAtXHVEQzM0XHVEQzQ3LVx1REM0QVx1REM4MC1cdURDQUZcdURDQzRcdURDQzVcdURDQzdcdUREODAtXHVEREFFXHVEREQ4LVx1REREQlx1REUwMC1cdURFMkZcdURFNDRcdURFODAtXHVERUFBXHVERjAwLVx1REYxOV18XHVEODA2W1x1RENBMC1cdURDREZcdURDRkZcdURFMDBcdURFMEItXHVERTMyXHVERTNBXHVERTUwXHVERTVDLVx1REU4M1x1REU4Ni1cdURFODlcdURFQzAtXHVERUY4XXxcdUQ4MDdbXHVEQzAwLVx1REMwOFx1REMwQS1cdURDMkVcdURDNDBcdURDNzItXHVEQzhGXHVERDAwLVx1REQwNlx1REQwOFx1REQwOVx1REQwQi1cdUREMzBcdURENDZdfFx1RDgwOFtcdURDMDAtXHVERjk5XXxcdUQ4MDlbXHVEQzgwLVx1REQ0M118W1x1RDgwQ1x1RDgxQy1cdUQ4MjBcdUQ4NDAtXHVEODY4XHVEODZBLVx1RDg2Q1x1RDg2Ri1cdUQ4NzJcdUQ4NzQtXHVEODc5XVtcdURDMDAtXHVERkZGXXxcdUQ4MERbXHVEQzAwLVx1REMyRV18XHVEODExW1x1REMwMC1cdURFNDZdfFx1RDgxQVtcdURDMDAtXHVERTM4XHVERTQwLVx1REU1RVx1REVEMC1cdURFRURcdURGMDAtXHVERjJGXHVERjQwLVx1REY0M1x1REY2My1cdURGNzdcdURGN0QtXHVERjhGXXxcdUQ4MUJbXHVERjAwLVx1REY0NFx1REY1MFx1REY5My1cdURGOUZcdURGRTBcdURGRTFdfFx1RDgyMVtcdURDMDAtXHVERkVDXXxcdUQ4MjJbXHVEQzAwLVx1REVGMl18XHVEODJDW1x1REMwMC1cdUREMUVcdURENzAtXHVERUZCXXxcdUQ4MkZbXHVEQzAwLVx1REM2QVx1REM3MC1cdURDN0NcdURDODAtXHVEQzg4XHVEQzkwLVx1REM5OV18XHVEODM1W1x1REMwMC1cdURDNTRcdURDNTYtXHVEQzlDXHVEQzlFXHVEQzlGXHVEQ0EyXHVEQ0E1XHVEQ0E2XHVEQ0E5LVx1RENBQ1x1RENBRS1cdURDQjlcdURDQkJcdURDQkQtXHVEQ0MzXHVEQ0M1LVx1REQwNVx1REQwNy1cdUREMEFcdUREMEQtXHVERDE0XHVERDE2LVx1REQxQ1x1REQxRS1cdUREMzlcdUREM0ItXHVERDNFXHVERDQwLVx1REQ0NFx1REQ0Nlx1REQ0QS1cdURENTBcdURENTItXHVERUE1XHVERUE4LVx1REVDMFx1REVDMi1cdURFREFcdURFREMtXHVERUZBXHVERUZDLVx1REYxNFx1REYxNi1cdURGMzRcdURGMzYtXHVERjRFXHVERjUwLVx1REY2RVx1REY3MC1cdURGODhcdURGOEEtXHVERkE4XHVERkFBLVx1REZDMlx1REZDNC1cdURGQ0JdfFx1RDgzQVtcdURDMDAtXHVEQ0M0XHVERDAwLVx1REQ0M118XHVEODNCW1x1REUwMC1cdURFMDNcdURFMDUtXHVERTFGXHVERTIxXHVERTIyXHVERTI0XHVERTI3XHVERTI5LVx1REUzMlx1REUzNC1cdURFMzdcdURFMzlcdURFM0JcdURFNDJcdURFNDdcdURFNDlcdURFNEJcdURFNEQtXHVERTRGXHVERTUxXHVERTUyXHVERTU0XHVERTU3XHVERTU5XHVERTVCXHVERTVEXHVERTVGXHVERTYxXHVERTYyXHVERTY0XHVERTY3LVx1REU2QVx1REU2Qy1cdURFNzJcdURFNzQtXHVERTc3XHVERTc5LVx1REU3Q1x1REU3RVx1REU4MC1cdURFODlcdURFOEItXHVERTlCXHVERUExLVx1REVBM1x1REVBNS1cdURFQTlcdURFQUItXHVERUJCXXxcdUQ4NjlbXHVEQzAwLVx1REVENlx1REYwMC1cdURGRkZdfFx1RDg2RFtcdURDMDAtXHVERjM0XHVERjQwLVx1REZGRl18XHVEODZFW1x1REMwMC1cdURDMURcdURDMjAtXHVERkZGXXxcdUQ4NzNbXHVEQzAwLVx1REVBMVx1REVCMC1cdURGRkZdfFx1RDg3QVtcdURDMDAtXHVERkUwXXxcdUQ4N0VbXHVEQzAwLVx1REUxRF0pXFMqL2c7Y2xhc3MgV3Z7dHJhbnNmb3JtKHQpe2lmKG51bGw9PXQpcmV0dXJuIG51bGw7aWYoInN0cmluZyIhPXR5cGVvZiB0KXRocm93IEZ2KFd2LHQpO3JldHVybiB0LnJlcGxhY2UoVXYsKHQ9PnRbMF0udG9VcHBlckNhc2UoKSt0LnN1YnN0cigxKS50b0xvd2VyQ2FzZSgpKSl9fVd2Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxXdil9LFd2Lsm1cGlwZT1ibyh7bmFtZToidGl0bGVjYXNlIix0eXBlOld2LHB1cmU6ITB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKFd2LFt7dHlwZTpEXyxhcmdzOlt7bmFtZToidGl0bGVjYXNlIn1dfV0sbnVsbCxudWxsKTtjbGFzcyBHdnt0cmFuc2Zvcm0odCl7aWYobnVsbD09dClyZXR1cm4gbnVsbDtpZigic3RyaW5nIiE9dHlwZW9mIHQpdGhyb3cgRnYoR3YsdCk7cmV0dXJuIHQudG9VcHBlckNhc2UoKX19R3YuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEd2KX0sR3YuybVwaXBlPWJvKHtuYW1lOiJ1cHBlcmNhc2UiLHR5cGU6R3YscHVyZTohMH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoR3YsW3t0eXBlOkRfLGFyZ3M6W3tuYW1lOiJ1cHBlcmNhc2UifV19XSxudWxsLG51bGwpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3MgWXZ7Y29uc3RydWN0b3IodCl7dGhpcy5sb2NhbGU9dH10cmFuc2Zvcm0odCxlPSJtZWRpdW1EYXRlIixuLG8pe2lmKG51bGw9PXR8fCIiPT09dHx8dCE9dClyZXR1cm4gbnVsbDt0cnl7cmV0dXJuIFpNKHQsZSxvfHx0aGlzLmxvY2FsZSxuKX1jYXRjaCh0KXt0aHJvdyBGdihZdix0Lm1lc3NhZ2UpfX19WXYuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFl2KShnZihRXywxNikpfSxZdi7JtXBpcGU9Ym8oe25hbWU6ImRhdGUiLHR5cGU6WXYscHVyZTohMH0pLFl2LmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W1FfXX1dfV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihZdixbe3R5cGU6RF8sYXJnczpbe25hbWU6ImRhdGUiLHB1cmU6ITB9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbUV9dfV19XX0pLG51bGwpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY29uc3QgcXY9LyMvZztjbGFzcyBadntjb25zdHJ1Y3Rvcih0KXt0aGlzLl9sb2NhbGl6YXRpb249dH10cmFuc2Zvcm0odCxlLG4pe2lmKG51bGw9PXQpcmV0dXJuIiI7aWYoIm9iamVjdCIhPXR5cGVvZiBlfHxudWxsPT09ZSl0aHJvdyBGdihadixlKTtyZXR1cm4gZVtidih0LE9iamVjdC5rZXlzKGUpLHRoaXMuX2xvY2FsaXphdGlvbixuKV0ucmVwbGFjZShxdix0LnRvU3RyaW5nKCkpfX1adi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8WnYpKGdmKGh2LDE2KSl9LFp2Lsm1cGlwZT1ibyh7bmFtZToiaTE4blBsdXJhbCIsdHlwZTpadixwdXJlOiEwfSksWnYuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpodn1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoWnYsW3t0eXBlOkRfLGFyZ3M6W3tuYW1lOiJpMThuUGx1cmFsIixwdXJlOiEwfV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6aHZ9XX0pLG51bGwpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3MgWHZ7dHJhbnNmb3JtKHQsZSl7aWYobnVsbD09dClyZXR1cm4iIjtpZigib2JqZWN0IiE9dHlwZW9mIGV8fCJzdHJpbmciIT10eXBlb2YgdCl0aHJvdyBGdihYdixlKTtyZXR1cm4gZS5oYXNPd25Qcm9wZXJ0eSh0KT9lW3RdOmUuaGFzT3duUHJvcGVydHkoIm90aGVyIik/ZS5vdGhlcjoiIn19WHYuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFh2KX0sWHYuybVwaXBlPWJvKHtuYW1lOiJpMThuU2VsZWN0Iix0eXBlOlh2LHB1cmU6ITB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKFh2LFt7dHlwZTpEXyxhcmdzOlt7bmFtZToiaTE4blNlbGVjdCIscHVyZTohMH1dfV0sbnVsbCxudWxsKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNsYXNzIEt2e3RyYW5zZm9ybSh0KXtyZXR1cm4gSlNPTi5zdHJpbmdpZnkodCxudWxsLDIpfX1Ldi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8S3YpfSxLdi7JtXBpcGU9Ym8oe25hbWU6Impzb24iLHR5cGU6S3YscHVyZTohMX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoS3YsW3t0eXBlOkRfLGFyZ3M6W3tuYW1lOiJqc29uIixwdXJlOiExfV19XSxudWxsLG51bGwpO2NsYXNzIEp2e2NvbnN0cnVjdG9yKHQpe3RoaXMuZGlmZmVycz10LHRoaXMua2V5VmFsdWVzPVtdLHRoaXMuY29tcGFyZUZuPVF2fXRyYW5zZm9ybSh0LGU9UXYpe2lmKCF0fHwhKHQgaW5zdGFuY2VvZiBNYXApJiYib2JqZWN0IiE9dHlwZW9mIHQpcmV0dXJuIG51bGw7dGhpcy5kaWZmZXJ8fCh0aGlzLmRpZmZlcj10aGlzLmRpZmZlcnMuZmluZCh0KS5jcmVhdGUoKSk7Y29uc3Qgbj10aGlzLmRpZmZlci5kaWZmKHQpLG89ZSE9PXRoaXMuY29tcGFyZUZuO3JldHVybiBuJiYodGhpcy5rZXlWYWx1ZXM9W10sbi5mb3JFYWNoSXRlbSgodD0+e3RoaXMua2V5VmFsdWVzLnB1c2goKAovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KZnVuY3Rpb24gZSh0LG4pe3JldHVybntrZXk6dCx2YWx1ZTpufX0pKHQua2V5LHQuY3VycmVudFZhbHVlKSl9KSkpLChufHxvKSYmKHRoaXMua2V5VmFsdWVzLnNvcnQoZSksdGhpcy5jb21wYXJlRm49ZSksdGhpcy5rZXlWYWx1ZXN9fWZ1bmN0aW9uIFF2KHQsZSl7Y29uc3Qgbj10LmtleSxvPWUua2V5O2lmKG49PT1vKXJldHVybiAwO2lmKHZvaWQgMD09PW4pcmV0dXJuIDE7aWYodm9pZCAwPT09bylyZXR1cm4tMTtpZihudWxsPT09bilyZXR1cm4gMTtpZihudWxsPT09bylyZXR1cm4tMTtpZigic3RyaW5nIj09dHlwZW9mIG4mJiJzdHJpbmciPT10eXBlb2YgbylyZXR1cm4gbjxvPy0xOjE7aWYoIm51bWJlciI9PXR5cGVvZiBuJiYibnVtYmVyIj09dHlwZW9mIG8pcmV0dXJuIG4tbztpZigiYm9vbGVhbiI9PXR5cGVvZiBuJiYiYm9vbGVhbiI9PXR5cGVvZiBvKXJldHVybiBuPG8/LTE6MTtjb25zdCBpPVN0cmluZyhuKSxhPVN0cmluZyhvKTtyZXR1cm4gaT09YT8wOmk8YT8tMToxfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9Kdi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8SnYpKGdmKHliLDE2KSl9LEp2Lsm1cGlwZT1ibyh7bmFtZToia2V5dmFsdWUiLHR5cGU6SnYscHVyZTohMX0pLEp2LmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6eWJ9XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKEp2LFt7dHlwZTpEXyxhcmdzOlt7bmFtZToia2V5dmFsdWUiLHB1cmU6ITF9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTp5Yn1dfSksbnVsbCk7Y2xhc3MgJHZ7Y29uc3RydWN0b3IodCl7dGhpcy5fbG9jYWxlPXR9dHJhbnNmb3JtKHQsZSxuKXtpZighbngodCkpcmV0dXJuIG51bGw7bj1ufHx0aGlzLl9sb2NhbGU7dHJ5e3JldHVybiBmdihveCh0KSxuLGUpfWNhdGNoKHQpe3Rocm93IEZ2KCR2LHQubWVzc2FnZSl9fX0kdi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8JHYpKGdmKFFfLDE2KSl9LCR2Lsm1cGlwZT1ibyh7bmFtZToibnVtYmVyIix0eXBlOiR2LHB1cmU6ITB9KSwkdi5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltRX119XX1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoJHYsW3t0eXBlOkRfLGFyZ3M6W3tuYW1lOiJudW1iZXIifV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W1FfXX1dfV19KSxudWxsKTtjbGFzcyB0eHtjb25zdHJ1Y3Rvcih0KXt0aGlzLl9sb2NhbGU9dH10cmFuc2Zvcm0odCxlLG4pe2lmKCFueCh0KSlyZXR1cm4gbnVsbDtuPW58fHRoaXMuX2xvY2FsZTt0cnl7cmV0dXJuKGZ1bmN0aW9uIG8odCxlLG4pe3JldHVybiBwdih0LHV2KElNKGUsUE0uUGVyY2VudCksek0oZSxSTS5NaW51c1NpZ24pKSxlLFJNLkdyb3VwLFJNLkRlY2ltYWwsbiwhMCkucmVwbGFjZShuZXcgUmVnRXhwKCIlIiwiZyIpLHpNKGUsUk0uUGVyY2VudFNpZ24pKX0pKG94KHQpLG4sZSl9Y2F0Y2godCl7dGhyb3cgRnYodHgsdC5tZXNzYWdlKX19fXR4Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHx0eCkoZ2YoUV8sMTYpKX0sdHguybVwaXBlPWJvKHtuYW1lOiJwZXJjZW50Iix0eXBlOnR4LHB1cmU6ITB9KSx0eC5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltRX119XX1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIodHgsW3t0eXBlOkRfLGFyZ3M6W3tuYW1lOiJwZXJjZW50In1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltRX119XX1dfSksbnVsbCk7Y2xhc3MgZXh7Y29uc3RydWN0b3IodCxlPSJVU0QiKXt0aGlzLl9sb2NhbGU9dCx0aGlzLl9kZWZhdWx0Q3VycmVuY3lDb2RlPWV9dHJhbnNmb3JtKHQsZT10aGlzLl9kZWZhdWx0Q3VycmVuY3lDb2RlLG49InN5bWJvbCIsbyxpKXtpZighbngodCkpcmV0dXJuIG51bGw7aT1pfHx0aGlzLl9sb2NhbGUsImJvb2xlYW4iPT10eXBlb2YgbiYmKCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmY29uc29sZSYmY29uc29sZS53YXJuJiZjb25zb2xlLndhcm4oJ1dhcm5pbmc6IHRoZSBjdXJyZW5jeSBwaXBlIGhhcyBiZWVuIGNoYW5nZWQgaW4gQW5ndWxhciB2NS4gVGhlIHN5bWJvbERpc3BsYXkgb3B0aW9uICh0aGlyZCBwYXJhbWV0ZXIpIGlzIG5vdyBhIHN0cmluZyBpbnN0ZWFkIG9mIGEgYm9vbGVhbi4gVGhlIGFjY2VwdGVkIHZhbHVlcyBhcmUgImNvZGUiLCAic3ltYm9sIiBvciAic3ltYm9sLW5hcnJvdyIuJyksbj1uPyJzeW1ib2wiOiJjb2RlIik7bGV0IGE9ZXx8dGhpcy5fZGVmYXVsdEN1cnJlbmN5Q29kZTsiY29kZSIhPT1uJiYoYT0ic3ltYm9sIj09PW58fCJzeW1ib2wtbmFycm93Ij09PW4/Vk0oYSwic3ltYm9sIj09PW4/IndpZGUiOiJuYXJyb3ciLGkpOm4pO3RyeXtyZXR1cm4gbXYob3godCksaSxhLGUsbyl9Y2F0Y2godCl7dGhyb3cgRnYoZXgsdC5tZXNzYWdlKX19fWZ1bmN0aW9uIG54KHQpe3JldHVybiEobnVsbD09dHx8IiI9PT10fHx0IT10KX1mdW5jdGlvbiBveCh0KXtpZigic3RyaW5nIj09dHlwZW9mIHQmJiFpc05hTihOdW1iZXIodCktcGFyc2VGbG9hdCh0KSkpcmV0dXJuIE51bWJlcih0KTtpZigibnVtYmVyIiE9dHlwZW9mIHQpdGhyb3cgbmV3IEVycm9yKGAke3R9IGlzIG5vdCBhIG51bWJlcmApO3JldHVybiB0fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9leC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8ZXgpKGdmKFFfLDE2KSxnZigkXywxNikpfSxleC7JtXBpcGU9Ym8oe25hbWU6ImN1cnJlbmN5Iix0eXBlOmV4LHB1cmU6ITB9KSxleC5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltRX119XX0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6WyRfXX1dfV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihleCxbe3R5cGU6RF8sYXJnczpbe25hbWU6ImN1cnJlbmN5In1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltRX119XX0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6WyRfXX1dfV19KSxudWxsKTtjbGFzcyBpeHt0cmFuc2Zvcm0odCxlLG4pe2lmKG51bGw9PXQpcmV0dXJuIG51bGw7aWYoIXRoaXMuc3VwcG9ydHModCkpdGhyb3cgRnYoaXgsdCk7cmV0dXJuIHQuc2xpY2UoZSxuKX1zdXBwb3J0cyh0KXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHR8fEFycmF5LmlzQXJyYXkodCl9fWl4Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxpeCl9LGl4Lsm1cGlwZT1ibyh7bmFtZToic2xpY2UiLHR5cGU6aXgscHVyZTohMX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoaXgsW3t0eXBlOkRfLGFyZ3M6W3tuYW1lOiJzbGljZSIscHVyZTohMX1dfV0sbnVsbCxudWxsKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNvbnN0IGF4PVtWdixHdixqdixLdixpeCwkdix0eCxXdixleCxZdixadixYdixKdl07Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NsYXNzIHJ4e31yeC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8cngpfSxyeC7JtW1vZD1mbyh7dHlwZTpyeH0pLHJ4Lsm1aW5qPURuKHtwcm92aWRlcnM6W3twcm92aWRlOmh2LHVzZUNsYXNzOnl2fV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKHJ4LFt7dHlwZTpMXyxhcmdzOlt7ZGVjbGFyYXRpb25zOltIdixheF0sZXhwb3J0czpbSHYsYXhdLHByb3ZpZGVyczpbe3Byb3ZpZGU6aHYsdXNlQ2xhc3M6eXZ9XX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnVvKHJ4LHtkZWNsYXJhdGlvbnM6W0N2LE12LHh2LFB2LEl2LHp2LER2LFJ2LEV2LFR2LE52LFZ2LEd2LGp2LEt2LGl4LCR2LHR4LFd2LGV4LFl2LFp2LFh2LEp2XSxleHBvcnRzOltDdixNdix4dixQdixJdix6dixEdixSdixFdixUdixOdixWdixHdixqdixLdixpeCwkdix0eCxXdixleCxZdixadixYdixKdl19KTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNvbnN0IHN4PSJicm93c2VyIjsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCm5ldyBvYigiMTIuMi4xIik7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjbGFzcyBseHt9bHguybVwcm92PVNuKHt0b2tlbjpseCxwcm92aWRlZEluOiJyb290IixmYWN0b3J5OigpPT5uZXcgY3goVHIoc00pLHdpbmRvdyl9KTtjbGFzcyBjeHtjb25zdHJ1Y3Rvcih0LGUpe3RoaXMuZG9jdW1lbnQ9dCx0aGlzLndpbmRvdz1lLHRoaXMub2Zmc2V0PSgpPT5bMCwwXX1zZXRPZmZzZXQodCl7dGhpcy5vZmZzZXQ9QXJyYXkuaXNBcnJheSh0KT8oKT0+dDp0fWdldFNjcm9sbFBvc2l0aW9uKCl7cmV0dXJuIHRoaXMuc3VwcG9ydHNTY3JvbGxpbmcoKT9bdGhpcy53aW5kb3cucGFnZVhPZmZzZXQsdGhpcy53aW5kb3cucGFnZVlPZmZzZXRdOlswLDBdfXNjcm9sbFRvUG9zaXRpb24odCl7dGhpcy5zdXBwb3J0c1Njcm9sbGluZygpJiZ0aGlzLndpbmRvdy5zY3JvbGxUbyh0WzBdLHRbMV0pfXNjcm9sbFRvQW5jaG9yKHQpe2lmKCF0aGlzLnN1cHBvcnRzU2Nyb2xsaW5nKCkpcmV0dXJuO2NvbnN0IGU9KGZ1bmN0aW9uIG4odCxlKXtjb25zdCBuPXQuZ2V0RWxlbWVudEJ5SWQoZSl8fHQuZ2V0RWxlbWVudHNCeU5hbWUoZSlbMF07aWYobilyZXR1cm4gbjtpZigiZnVuY3Rpb24iPT10eXBlb2YgdC5jcmVhdGVUcmVlV2Fsa2VyJiZ0LmJvZHkmJih0LmJvZHkuY3JlYXRlU2hhZG93Um9vdHx8dC5ib2R5LmF0dGFjaFNoYWRvdykpe2NvbnN0IG49dC5jcmVhdGVUcmVlV2Fsa2VyKHQuYm9keSxOb2RlRmlsdGVyLlNIT1dfRUxFTUVOVCk7bGV0IG89bi5jdXJyZW50Tm9kZTtmb3IoO287KXtjb25zdCB0PW8uc2hhZG93Um9vdDtpZih0KXtjb25zdCBuPXQuZ2V0RWxlbWVudEJ5SWQoZSl8fHQucXVlcnlTZWxlY3RvcihgW25hbWU9IiR7ZX0iXWApO2lmKG4pcmV0dXJuIG59bz1uLm5leHROb2RlKCl9fXJldHVybiBudWxsfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8pKHRoaXMuZG9jdW1lbnQsdCk7ZSYmKHRoaXMuc2Nyb2xsVG9FbGVtZW50KGUpLHRoaXMuYXR0ZW1wdEZvY3VzKGUpKX1zZXRIaXN0b3J5U2Nyb2xsUmVzdG9yYXRpb24odCl7aWYodGhpcy5zdXBwb3J0U2Nyb2xsUmVzdG9yYXRpb24oKSl7Y29uc3QgZT10aGlzLndpbmRvdy5oaXN0b3J5O2UmJmUuc2Nyb2xsUmVzdG9yYXRpb24mJihlLnNjcm9sbFJlc3RvcmF0aW9uPXQpfX1zY3JvbGxUb0VsZW1lbnQodCl7Y29uc3QgZT10LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLG49ZS5sZWZ0K3RoaXMud2luZG93LnBhZ2VYT2Zmc2V0LG89ZS50b3ArdGhpcy53aW5kb3cucGFnZVlPZmZzZXQsaT10aGlzLm9mZnNldCgpO3RoaXMud2luZG93LnNjcm9sbFRvKG4taVswXSxvLWlbMV0pfWF0dGVtcHRGb2N1cyh0KXtyZXR1cm4gdC5mb2N1cygpLHRoaXMuZG9jdW1lbnQuYWN0aXZlRWxlbWVudD09PXR9c3VwcG9ydFNjcm9sbFJlc3RvcmF0aW9uKCl7dHJ5e2lmKCF0aGlzLnN1cHBvcnRzU2Nyb2xsaW5nKCkpcmV0dXJuITE7Y29uc3QgdD1keCh0aGlzLndpbmRvdy5oaXN0b3J5KXx8ZHgoT2JqZWN0LmdldFByb3RvdHlwZU9mKHRoaXMud2luZG93Lmhpc3RvcnkpKTtyZXR1cm4hKCF0fHwhdC53cml0YWJsZSYmIXQuc2V0KX1jYXRjaCh0KXtyZXR1cm4hMX19c3VwcG9ydHNTY3JvbGxpbmcoKXt0cnl7cmV0dXJuISF0aGlzLndpbmRvdyYmISF0aGlzLndpbmRvdy5zY3JvbGxUbyYmInBhZ2VYT2Zmc2V0ImluIHRoaXMud2luZG93fWNhdGNoKHQpe3JldHVybiExfX19ZnVuY3Rpb24gZHgodCl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCwic2Nyb2xsUmVzdG9yYXRpb24iKX1jbGFzcyBweHt9Ci8qKgogICAgICogQGxpY2Vuc2UgQW5ndWxhciB2MTIuMi4xCiAgICAgKiAoYykgMjAxMC0yMDIxIEdvb2dsZSBMTEMuIGh0dHBzOi8vYW5ndWxhci5pby8KICAgICAqIExpY2Vuc2U6IE1JVAogICAgICovCi8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3MgbXggZXh0ZW5kcyBjbGFzcyBleHRlbmRzIGNsYXNze317Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMuc3VwcG9ydHNET01FdmVudHM9ITB9fXtzdGF0aWMgbWFrZUN1cnJlbnQoKXshKGZ1bmN0aW9uIHQoZSl7YU18fChhTT1lKX0pKG5ldyBteCl9b25BbmRDYW5jZWwodCxlLG4pe3JldHVybiB0LmFkZEV2ZW50TGlzdGVuZXIoZSxuLCExKSwoKT0+e3QucmVtb3ZlRXZlbnRMaXN0ZW5lcihlLG4sITEpfX1kaXNwYXRjaEV2ZW50KHQsZSl7dC5kaXNwYXRjaEV2ZW50KGUpfXJlbW92ZSh0KXt0LnBhcmVudE5vZGUmJnQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0KX1jcmVhdGVFbGVtZW50KHQsZSl7cmV0dXJuKGU9ZXx8dGhpcy5nZXREZWZhdWx0RG9jdW1lbnQoKSkuY3JlYXRlRWxlbWVudCh0KX1jcmVhdGVIdG1sRG9jdW1lbnQoKXtyZXR1cm4gZG9jdW1lbnQuaW1wbGVtZW50YXRpb24uY3JlYXRlSFRNTERvY3VtZW50KCJmYWtlVGl0bGUiKX1nZXREZWZhdWx0RG9jdW1lbnQoKXtyZXR1cm4gZG9jdW1lbnR9aXNFbGVtZW50Tm9kZSh0KXtyZXR1cm4gdC5ub2RlVHlwZT09PU5vZGUuRUxFTUVOVF9OT0RFfWlzU2hhZG93Um9vdCh0KXtyZXR1cm4gdCBpbnN0YW5jZW9mIERvY3VtZW50RnJhZ21lbnR9Z2V0R2xvYmFsRXZlbnRUYXJnZXQodCxlKXtyZXR1cm4id2luZG93Ij09PWU/d2luZG93OiJkb2N1bWVudCI9PT1lP3Q6ImJvZHkiPT09ZT90LmJvZHk6bnVsbH1nZXRCYXNlSHJlZih0KXtjb25zdCBlPShmdW5jdGlvbiBuKCl7cmV0dXJuIHV4PXV4fHxkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJiYXNlIiksdXg/dXguZ2V0QXR0cmlidXRlKCJocmVmIik6bnVsbH0pKCk7cmV0dXJuIG51bGw9PWU/bnVsbDooZnVuY3Rpb24gbyh0KXtmeD1meHx8ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYSIpLGZ4LnNldEF0dHJpYnV0ZSgiaHJlZiIsdCk7Y29uc3QgZT1meC5wYXRobmFtZTtyZXR1cm4iLyI9PT1lLmNoYXJBdCgwKT9lOmAvJHtlfWB9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLykoZSl9cmVzZXRCYXNlRWxlbWVudCgpe3V4PW51bGx9Z2V0VXNlckFnZW50KCl7cmV0dXJuIHdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50fWdldENvb2tpZSh0KXtyZXR1cm4gX3YoZG9jdW1lbnQuY29va2llLHQpfX1sZXQgZngsdXg9bnVsbDtjb25zdCBneD1uZXcgZXIoIlRSQU5TSVRJT05fSUQiKTtjb25zdCBoeD1be3Byb3ZpZGU6al8sdXNlRmFjdG9yeTpmdW5jdGlvbiBieCh0LGUsbil7cmV0dXJuKCk9PntuLmdldChVXykuZG9uZVByb21pc2UudGhlbigoKCk9Pntjb25zdCBuPXJNKCk7QXJyYXkucHJvdG90eXBlLnNsaWNlLmFwcGx5KGUucXVlcnlTZWxlY3RvckFsbCgic3R5bGVbbmctdHJhbnNpdGlvbl0iKSkuZmlsdGVyKChlPT5lLmdldEF0dHJpYnV0ZSgibmctdHJhbnNpdGlvbiIpPT09dCkpLmZvckVhY2goKHQ9Pm4ucmVtb3ZlKHQpKSl9KSl9fSxkZXBzOltneCxzTSxOcF0sbXVsdGk6ITB9XTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY2xhc3MgeXh7c3RhdGljIGluaXQoKXshKGZ1bmN0aW9uIHQoZSl7dkM9ZX0pKG5ldyB5eCl9YWRkVG9XaW5kb3codCl7WG4uZ2V0QW5ndWxhclRlc3RhYmlsaXR5PShlLG49ITApPT57Y29uc3Qgbz10LmZpbmRUZXN0YWJpbGl0eUluVHJlZShlLG4pO2lmKG51bGw9PW8pdGhyb3cgbmV3IEVycm9yKCJDb3VsZCBub3QgZmluZCB0ZXN0YWJpbGl0eSBmb3IgZWxlbWVudC4iKTtyZXR1cm4gb30sWG4uZ2V0QWxsQW5ndWxhclRlc3RhYmlsaXRpZXM9KCk9PnQuZ2V0QWxsVGVzdGFiaWxpdGllcygpLFhuLmdldEFsbEFuZ3VsYXJSb290RWxlbWVudHM9KCk9PnQuZ2V0QWxsUm9vdEVsZW1lbnRzKCk7WG4uZnJhbWV3b3JrU3RhYmlsaXplcnN8fChYbi5mcmFtZXdvcmtTdGFiaWxpemVycz1bXSksWG4uZnJhbWV3b3JrU3RhYmlsaXplcnMucHVzaCgodD0+e2NvbnN0IGU9WG4uZ2V0QWxsQW5ndWxhclRlc3RhYmlsaXRpZXMoKTtsZXQgbj1lLmxlbmd0aCxvPSExO2NvbnN0IGk9ZnVuY3Rpb24oZSl7bz1vfHxlLG4tLSwwPT1uJiZ0KG8pfTtlLmZvckVhY2goKGZ1bmN0aW9uKHQpe3Qud2hlblN0YWJsZShpKX0pKX0pKX1maW5kVGVzdGFiaWxpdHlJblRyZWUodCxlLG4pe2lmKG51bGw9PWUpcmV0dXJuIG51bGw7Y29uc3Qgbz10LmdldFRlc3RhYmlsaXR5KGUpO3JldHVybiBudWxsIT1vP286bj9yTSgpLmlzU2hhZG93Um9vdChlKT90aGlzLmZpbmRUZXN0YWJpbGl0eUluVHJlZSh0LGUuaG9zdCwhMCk6dGhpcy5maW5kVGVzdGFiaWxpdHlJblRyZWUodCxlLnBhcmVudEVsZW1lbnQsITApOm51bGx9fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jbGFzcyBfeHtidWlsZCgpe3JldHVybiBuZXcgWE1MSHR0cFJlcXVlc3R9fV94Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxfeCl9LF94Lsm1cHJvdj1Tbih7dG9rZW46X3gsZmFjdG9yeTpfeC7JtWZhY30pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoX3gsW3t0eXBlOlVtfV0sbnVsbCxudWxsKTtuZXcgQnI7Y29uc3QgQ3g9W10sTXg9bmV3IGVyKCJFdmVudE1hbmFnZXJQbHVnaW5zIik7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NsYXNzIHZ4e2NvbnN0cnVjdG9yKHQsZSl7dGhpcy5fem9uZT1lLHRoaXMuX2V2ZW50TmFtZVRvUGx1Z2luPW5ldyBNYXAsdC5mb3JFYWNoKCh0PT50Lm1hbmFnZXI9dGhpcykpLHRoaXMuX3BsdWdpbnM9dC5zbGljZSgpLnJldmVyc2UoKX1hZGRFdmVudExpc3RlbmVyKHQsZSxuKXtyZXR1cm4gdGhpcy5fZmluZFBsdWdpbkZvcihlKS5hZGRFdmVudExpc3RlbmVyKHQsZSxuKX1hZGRHbG9iYWxFdmVudExpc3RlbmVyKHQsZSxuKXtyZXR1cm4gdGhpcy5fZmluZFBsdWdpbkZvcihlKS5hZGRHbG9iYWxFdmVudExpc3RlbmVyKHQsZSxuKX1nZXRab25lKCl7cmV0dXJuIHRoaXMuX3pvbmV9X2ZpbmRQbHVnaW5Gb3IodCl7Y29uc3QgZT10aGlzLl9ldmVudE5hbWVUb1BsdWdpbi5nZXQodCk7aWYoZSlyZXR1cm4gZTtjb25zdCBuPXRoaXMuX3BsdWdpbnM7Zm9yKGxldCBlPTA7ZTxuLmxlbmd0aDtlKyspe2NvbnN0IG89bltlXTtpZihvLnN1cHBvcnRzKHQpKXJldHVybiB0aGlzLl9ldmVudE5hbWVUb1BsdWdpbi5zZXQodCxvKSxvfXRocm93IG5ldyBFcnJvcihgTm8gZXZlbnQgbWFuYWdlciBwbHVnaW4gZm91bmQgZm9yIGV2ZW50ICR7dH1gKX19dnguybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHZ4KShUcihNeCksVHIobUMpKX0sdnguybVwcm92PVNuKHt0b2tlbjp2eCxmYWN0b3J5OnZ4Lsm1ZmFjfSksdnguY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpBcnJheSxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltNeF19XX0se3R5cGU6bUN9XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKHZ4LFt7dHlwZTpVbX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpBcnJheSxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltNeF19XX0se3R5cGU6bUN9XX0pLG51bGwpO2NsYXNzIHh4e2NvbnN0cnVjdG9yKHQpe3RoaXMuX2RvYz10fWFkZEdsb2JhbEV2ZW50TGlzdGVuZXIodCxlLG4pe2NvbnN0IG89ck0oKS5nZXRHbG9iYWxFdmVudFRhcmdldCh0aGlzLl9kb2MsdCk7aWYoIW8pdGhyb3cgbmV3IEVycm9yKGBVbnN1cHBvcnRlZCBldmVudCB0YXJnZXQgJHtvfSBmb3IgZXZlbnQgJHtlfWApO3JldHVybiB0aGlzLmFkZEV2ZW50TGlzdGVuZXIobyxlLG4pfX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY2xhc3MgT3h7Y29uc3RydWN0b3IoKXt0aGlzLl9zdHlsZXNTZXQ9bmV3IFNldH1hZGRTdHlsZXModCl7Y29uc3QgZT1uZXcgU2V0O3QuZm9yRWFjaCgodD0+e3RoaXMuX3N0eWxlc1NldC5oYXModCl8fCh0aGlzLl9zdHlsZXNTZXQuYWRkKHQpLGUuYWRkKHQpKX0pKSx0aGlzLm9uU3R5bGVzQWRkZWQoZSl9b25TdHlsZXNBZGRlZCh0KXt9Z2V0QWxsU3R5bGVzKCl7cmV0dXJuIEFycmF5LmZyb20odGhpcy5fc3R5bGVzU2V0KX19T3guybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fE94KX0sT3guybVwcm92PVNuKHt0b2tlbjpPeCxmYWN0b3J5Ok94Lsm1ZmFjfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihPeCxbe3R5cGU6VW19XSwoZnVuY3Rpb24oKXtyZXR1cm5bXX0pLG51bGwpO2NsYXNzIFB4IGV4dGVuZHMgT3h7Y29uc3RydWN0b3IodCl7c3VwZXIoKSx0aGlzLl9kb2M9dCx0aGlzLl9ob3N0Tm9kZXM9bmV3IE1hcCx0aGlzLl9ob3N0Tm9kZXMuc2V0KHQuaGVhZCxbXSl9X2FkZFN0eWxlc1RvSG9zdCh0LGUsbil7dC5mb3JFYWNoKCh0PT57Y29uc3Qgbz10aGlzLl9kb2MuY3JlYXRlRWxlbWVudCgic3R5bGUiKTtvLnRleHRDb250ZW50PXQsbi5wdXNoKGUuYXBwZW5kQ2hpbGQobykpfSkpfWFkZEhvc3QodCl7Y29uc3QgZT1bXTt0aGlzLl9hZGRTdHlsZXNUb0hvc3QodGhpcy5fc3R5bGVzU2V0LHQsZSksdGhpcy5faG9zdE5vZGVzLnNldCh0LGUpfXJlbW92ZUhvc3QodCl7Y29uc3QgZT10aGlzLl9ob3N0Tm9kZXMuZ2V0KHQpO2UmJmUuZm9yRWFjaCh3eCksdGhpcy5faG9zdE5vZGVzLmRlbGV0ZSh0KX1vblN0eWxlc0FkZGVkKHQpe3RoaXMuX2hvc3ROb2Rlcy5mb3JFYWNoKCgoZSxuKT0+e3RoaXMuX2FkZFN0eWxlc1RvSG9zdCh0LG4sZSl9KSl9bmdPbkRlc3Ryb3koKXt0aGlzLl9ob3N0Tm9kZXMuZm9yRWFjaCgodD0+dC5mb3JFYWNoKHd4KSkpfX1mdW5jdGlvbiB3eCh0KXtyTSgpLnJlbW92ZSh0KX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovUHguybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFB4KShUcihzTSkpfSxQeC7JtXByb3Y9U24oe3Rva2VuOlB4LGZhY3Rvcnk6UHguybVmYWN9KSxQeC5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltzTV19XX1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoUHgsW3t0eXBlOlVtfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltzTV19XX1dfSksbnVsbCk7Y29uc3Qga3g9e3N2ZzoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLHhodG1sOiJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIix4bGluazoiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIseG1sOiJodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2UiLHhtbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3htbG5zLyJ9LFN4PS8lQ09NUCUvZyxEeD0idW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8ISFuZ0Rldk1vZGUsUng9Il9uZ2hvc3QtJUNPTVAlIixFeD0iX25nY29udGVudC0lQ09NUCUiO2Z1bmN0aW9uIEF4KHQsZSxuKXtmb3IobGV0IG89MDtvPGUubGVuZ3RoO28rKyl7bGV0IGk9ZVtvXTtBcnJheS5pc0FycmF5KGkpP0F4KHQsaSxuKTooaT1pLnJlcGxhY2UoU3gsdCksbi5wdXNoKGkpKX1yZXR1cm4gbn1mdW5jdGlvbiBUeCh0KXtyZXR1cm4gZT0+e2lmKCJfX25nVW53cmFwX18iPT09ZSlyZXR1cm4gdDshMT09PXQoZSkmJihlLnByZXZlbnREZWZhdWx0KCksZS5yZXR1cm5WYWx1ZT0hMSl9fWxldCBOeD0hMTtjbGFzcyB6eHtjb25zdHJ1Y3Rvcih0LGUsbil7dGhpcy5ldmVudE1hbmFnZXI9dCx0aGlzLnNoYXJlZFN0eWxlc0hvc3Q9ZSx0aGlzLmFwcElkPW4sdGhpcy5yZW5kZXJlckJ5Q29tcElkPW5ldyBNYXAsdGhpcy5kZWZhdWx0UmVuZGVyZXI9bmV3IEl4KHQpfWNyZWF0ZVJlbmRlcmVyKHQsZSl7aWYoIXR8fCFlKXJldHVybiB0aGlzLmRlZmF1bHRSZW5kZXJlcjtzd2l0Y2goZS5lbmNhcHN1bGF0aW9uKXtjYXNlIFduLkVtdWxhdGVkOntsZXQgbj10aGlzLnJlbmRlcmVyQnlDb21wSWQuZ2V0KGUuaWQpO3JldHVybiBufHwobj1uZXcgTHgodGhpcy5ldmVudE1hbmFnZXIsdGhpcy5zaGFyZWRTdHlsZXNIb3N0LGUsdGhpcy5hcHBJZCksdGhpcy5yZW5kZXJlckJ5Q29tcElkLnNldChlLmlkLG4pKSxuLmFwcGx5VG9Ib3N0KHQpLG59Y2FzZSAxOmNhc2UgV24uU2hhZG93RG9tOnJldHVybiJ1bmRlZmluZWQiIT10eXBlb2YgbmdEZXZNb2RlJiYhbmdEZXZNb2RlfHxOeHx8MSE9PWUuZW5jYXBzdWxhdGlvbnx8KE54PSEwLGNvbnNvbGUud2FybigiVmlld0VuY2Fwc3VsYXRpb24uTmF0aXZlIGlzIG5vIGxvbmdlciBzdXBwb3J0ZWQuIEZhbGxpbmcgYmFjayB0byBWaWV3RW5jYXBzdWxhdGlvbi5TaGFkb3dEb20uIFRoZSBmYWxsYmFjayB3aWxsIGJlIHJlbW92ZWQgaW4gdjEyLiIpKSxuZXcgQngodGhpcy5ldmVudE1hbmFnZXIsdGhpcy5zaGFyZWRTdHlsZXNIb3N0LHQsZSk7ZGVmYXVsdDppZighdGhpcy5yZW5kZXJlckJ5Q29tcElkLmhhcyhlLmlkKSl7Y29uc3QgdD1BeChlLmlkLGUuc3R5bGVzLFtdKTt0aGlzLnNoYXJlZFN0eWxlc0hvc3QuYWRkU3R5bGVzKHQpLHRoaXMucmVuZGVyZXJCeUNvbXBJZC5zZXQoZS5pZCx0aGlzLmRlZmF1bHRSZW5kZXJlcil9cmV0dXJuIHRoaXMuZGVmYXVsdFJlbmRlcmVyfX1iZWdpbigpe31lbmQoKXt9fXp4Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHx6eCkoVHIodngpLFRyKFB4KSxUcihXXykpfSx6eC7JtXByb3Y9U24oe3Rva2VuOnp4LGZhY3Rvcnk6enguybVmYWN9KSx6eC5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOnZ4fSx7dHlwZTpQeH0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W1dfXX1dfV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYih6eCxbe3R5cGU6VW19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6dnh9LHt0eXBlOlB4fSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbV19dfV19XX0pLG51bGwpO2NsYXNzIEl4e2NvbnN0cnVjdG9yKHQpe3RoaXMuZXZlbnRNYW5hZ2VyPXQsdGhpcy5kYXRhPU9iamVjdC5jcmVhdGUobnVsbCl9ZGVzdHJveSgpe31jcmVhdGVFbGVtZW50KHQsZSl7cmV0dXJuIGU/ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKGt4W2VdfHxlLHQpOmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodCl9Y3JlYXRlQ29tbWVudCh0KXtyZXR1cm4gZG9jdW1lbnQuY3JlYXRlQ29tbWVudCh0KX1jcmVhdGVUZXh0KHQpe3JldHVybiBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSh0KX1hcHBlbmRDaGlsZCh0LGUpe3QuYXBwZW5kQ2hpbGQoZSl9aW5zZXJ0QmVmb3JlKHQsZSxuKXt0JiZ0Lmluc2VydEJlZm9yZShlLG4pfXJlbW92ZUNoaWxkKHQsZSl7dCYmdC5yZW1vdmVDaGlsZChlKX1zZWxlY3RSb290RWxlbWVudCh0LGUpe2xldCBuPSJzdHJpbmciPT10eXBlb2YgdD9kb2N1bWVudC5xdWVyeVNlbGVjdG9yKHQpOnQ7aWYoIW4pdGhyb3cgbmV3IEVycm9yKGBUaGUgc2VsZWN0b3IgIiR7dH0iIGRpZCBub3QgbWF0Y2ggYW55IGVsZW1lbnRzYCk7cmV0dXJuIGV8fChuLnRleHRDb250ZW50PSIiKSxufXBhcmVudE5vZGUodCl7cmV0dXJuIHQucGFyZW50Tm9kZX1uZXh0U2libGluZyh0KXtyZXR1cm4gdC5uZXh0U2libGluZ31zZXRBdHRyaWJ1dGUodCxlLG4sbyl7aWYobyl7ZT1vKyI6IitlO2NvbnN0IGk9a3hbb107aT90LnNldEF0dHJpYnV0ZU5TKGksZSxuKTp0LnNldEF0dHJpYnV0ZShlLG4pfWVsc2UgdC5zZXRBdHRyaWJ1dGUoZSxuKX1yZW1vdmVBdHRyaWJ1dGUodCxlLG4pe2lmKG4pe2NvbnN0IG89a3hbbl07bz90LnJlbW92ZUF0dHJpYnV0ZU5TKG8sZSk6dC5yZW1vdmVBdHRyaWJ1dGUoYCR7bn06JHtlfWApfWVsc2UgdC5yZW1vdmVBdHRyaWJ1dGUoZSl9YWRkQ2xhc3ModCxlKXt0LmNsYXNzTGlzdC5hZGQoZSl9cmVtb3ZlQ2xhc3ModCxlKXt0LmNsYXNzTGlzdC5yZW1vdmUoZSl9c2V0U3R5bGUodCxlLG4sbyl7byYoRWwuRGFzaENhc2V8RWwuSW1wb3J0YW50KT90LnN0eWxlLnNldFByb3BlcnR5KGUsbixvJkVsLkltcG9ydGFudD8iaW1wb3J0YW50IjoiIik6dC5zdHlsZVtlXT1ufXJlbW92ZVN0eWxlKHQsZSxuKXtuJkVsLkRhc2hDYXNlP3Quc3R5bGUucmVtb3ZlUHJvcGVydHkoZSk6dC5zdHlsZVtlXT0iIn1zZXRQcm9wZXJ0eSh0LGUsbil7RHgmJkZ4KGUsInByb3BlcnR5IiksdFtlXT1ufXNldFZhbHVlKHQsZSl7dC5ub2RlVmFsdWU9ZX1saXN0ZW4odCxlLG4pe3JldHVybiBEeCYmRngoZSwibGlzdGVuZXIiKSwic3RyaW5nIj09dHlwZW9mIHQ/dGhpcy5ldmVudE1hbmFnZXIuYWRkR2xvYmFsRXZlbnRMaXN0ZW5lcih0LGUsVHgobikpOnRoaXMuZXZlbnRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIodCxlLFR4KG4pKX19Y29uc3QgSHg9IkAiLmNoYXJDb2RlQXQoMCk7ZnVuY3Rpb24gRngodCxlKXtpZih0LmNoYXJDb2RlQXQoMCk9PT1IeCl0aHJvdyBuZXcgRXJyb3IoYEZvdW5kIHRoZSBzeW50aGV0aWMgJHtlfSAke3R9LiBQbGVhc2UgaW5jbHVkZSBlaXRoZXIgIkJyb3dzZXJBbmltYXRpb25zTW9kdWxlIiBvciAiTm9vcEFuaW1hdGlvbnNNb2R1bGUiIGluIHlvdXIgYXBwbGljYXRpb24uYCl9Y2xhc3MgTHggZXh0ZW5kcyBJeHtjb25zdHJ1Y3Rvcih0LGUsbixvKXtzdXBlcih0KSx0aGlzLmNvbXBvbmVudD1uO2NvbnN0IGk9QXgobysiLSIrbi5pZCxuLnN0eWxlcyxbXSk7ZS5hZGRTdHlsZXMoaSksdGhpcy5jb250ZW50QXR0cj0oZnVuY3Rpb24gYSh0KXtyZXR1cm4gRXgucmVwbGFjZShTeCx0KX0pKG8rIi0iK24uaWQpLHRoaXMuaG9zdEF0dHI9KGZ1bmN0aW9uIHIodCl7cmV0dXJuIFJ4LnJlcGxhY2UoU3gsdCl9KShvKyItIituLmlkKX1hcHBseVRvSG9zdCh0KXtzdXBlci5zZXRBdHRyaWJ1dGUodCx0aGlzLmhvc3RBdHRyLCIiKX1jcmVhdGVFbGVtZW50KHQsZSl7Y29uc3Qgbj1zdXBlci5jcmVhdGVFbGVtZW50KHQsZSk7cmV0dXJuIHN1cGVyLnNldEF0dHJpYnV0ZShuLHRoaXMuY29udGVudEF0dHIsIiIpLG59fWNsYXNzIEJ4IGV4dGVuZHMgSXh7Y29uc3RydWN0b3IodCxlLG4sbyl7c3VwZXIodCksdGhpcy5zaGFyZWRTdHlsZXNIb3N0PWUsdGhpcy5ob3N0RWw9bix0aGlzLnNoYWRvd1Jvb3Q9bi5hdHRhY2hTaGFkb3coe21vZGU6Im9wZW4ifSksdGhpcy5zaGFyZWRTdHlsZXNIb3N0LmFkZEhvc3QodGhpcy5zaGFkb3dSb290KTtjb25zdCBpPUF4KG8uaWQsby5zdHlsZXMsW10pO2ZvcihsZXQgdD0wO3Q8aS5sZW5ndGg7dCsrKXtjb25zdCBlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxlIik7ZS50ZXh0Q29udGVudD1pW3RdLHRoaXMuc2hhZG93Um9vdC5hcHBlbmRDaGlsZChlKX19bm9kZU9yU2hhZG93Um9vdCh0KXtyZXR1cm4gdD09PXRoaXMuaG9zdEVsP3RoaXMuc2hhZG93Um9vdDp0fWRlc3Ryb3koKXt0aGlzLnNoYXJlZFN0eWxlc0hvc3QucmVtb3ZlSG9zdCh0aGlzLnNoYWRvd1Jvb3QpfWFwcGVuZENoaWxkKHQsZSl7cmV0dXJuIHN1cGVyLmFwcGVuZENoaWxkKHRoaXMubm9kZU9yU2hhZG93Um9vdCh0KSxlKX1pbnNlcnRCZWZvcmUodCxlLG4pe3JldHVybiBzdXBlci5pbnNlcnRCZWZvcmUodGhpcy5ub2RlT3JTaGFkb3dSb290KHQpLGUsbil9cmVtb3ZlQ2hpbGQodCxlKXtyZXR1cm4gc3VwZXIucmVtb3ZlQ2hpbGQodGhpcy5ub2RlT3JTaGFkb3dSb290KHQpLGUpfXBhcmVudE5vZGUodCl7cmV0dXJuIHRoaXMubm9kZU9yU2hhZG93Um9vdChzdXBlci5wYXJlbnROb2RlKHRoaXMubm9kZU9yU2hhZG93Um9vdCh0KSkpfX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY2xhc3MgVnggZXh0ZW5kcyB4eHtjb25zdHJ1Y3Rvcih0KXtzdXBlcih0KX1zdXBwb3J0cyh0KXtyZXR1cm4hMH1hZGRFdmVudExpc3RlbmVyKHQsZSxuKXtyZXR1cm4gdC5hZGRFdmVudExpc3RlbmVyKGUsbiwhMSksKCk9PnRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcih0LGUsbil9cmVtb3ZlRXZlbnRMaXN0ZW5lcih0LGUsbil7cmV0dXJuIHQucmVtb3ZlRXZlbnRMaXN0ZW5lcihlLG4pfX1WeC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8VngpKFRyKHNNKSl9LFZ4Lsm1cHJvdj1Tbih7dG9rZW46VngsZmFjdG9yeTpWeC7JtWZhY30pLFZ4LmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W3NNXX1dfV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihWeCxbe3R5cGU6VW19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W3NNXX1dfV19KSxudWxsKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNvbnN0IGp4PXtwYW46ITAscGFuc3RhcnQ6ITAscGFubW92ZTohMCxwYW5lbmQ6ITAscGFuY2FuY2VsOiEwLHBhbmxlZnQ6ITAscGFucmlnaHQ6ITAscGFudXA6ITAscGFuZG93bjohMCxwaW5jaDohMCxwaW5jaHN0YXJ0OiEwLHBpbmNobW92ZTohMCxwaW5jaGVuZDohMCxwaW5jaGNhbmNlbDohMCxwaW5jaGluOiEwLHBpbmNob3V0OiEwLHByZXNzOiEwLHByZXNzdXA6ITAscm90YXRlOiEwLHJvdGF0ZXN0YXJ0OiEwLHJvdGF0ZW1vdmU6ITAscm90YXRlZW5kOiEwLHJvdGF0ZWNhbmNlbDohMCxzd2lwZTohMCxzd2lwZWxlZnQ6ITAsc3dpcGVyaWdodDohMCxzd2lwZXVwOiEwLHN3aXBlZG93bjohMCx0YXA6ITAsZG91YmxldGFwOiEwfSxVeD1uZXcgZXIoIkhhbW1lckdlc3R1cmVDb25maWciKSxXeD1uZXcgZXIoIkhhbW1lckxvYWRlciIpO2NsYXNzIEd4e2NvbnN0cnVjdG9yKCl7dGhpcy5ldmVudHM9W10sdGhpcy5vdmVycmlkZXM9e319YnVpbGRIYW1tZXIodCl7Y29uc3QgZT1uZXcgSGFtbWVyKHQsdGhpcy5vcHRpb25zKTtlLmdldCgicGluY2giKS5zZXQoe2VuYWJsZTohMH0pLGUuZ2V0KCJyb3RhdGUiKS5zZXQoe2VuYWJsZTohMH0pO2Zvcihjb25zdCB0IGluIHRoaXMub3ZlcnJpZGVzKWUuZ2V0KHQpLnNldCh0aGlzLm92ZXJyaWRlc1t0XSk7cmV0dXJuIGV9fUd4Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxHeCl9LEd4Lsm1cHJvdj1Tbih7dG9rZW46R3gsZmFjdG9yeTpHeC7JtWZhY30pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoR3gsW3t0eXBlOlVtfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW119KSxudWxsKTtjbGFzcyBZeCBleHRlbmRzIHh4e2NvbnN0cnVjdG9yKHQsZSxuLG8pe3N1cGVyKHQpLHRoaXMuX2NvbmZpZz1lLHRoaXMuY29uc29sZT1uLHRoaXMubG9hZGVyPW8sdGhpcy5fbG9hZGVyUHJvbWlzZT1udWxsfXN1cHBvcnRzKHQpe3JldHVybiEoIWp4Lmhhc093blByb3BlcnR5KHQudG9Mb3dlckNhc2UoKSkmJiF0aGlzLmlzQ3VzdG9tRXZlbnQodCkpJiYoISghd2luZG93LkhhbW1lciYmIXRoaXMubG9hZGVyKXx8KCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmdGhpcy5jb25zb2xlLndhcm4oYFRoZSAiJHt0fSIgZXZlbnQgY2Fubm90IGJlIGJvdW5kIGJlY2F1c2UgSGFtbWVyLkpTIGlzIG5vdCBsb2FkZWQgYW5kIG5vIGN1c3RvbSBsb2FkZXIgaGFzIGJlZW4gc3BlY2lmaWVkLmApLCExKSl9YWRkRXZlbnRMaXN0ZW5lcih0LGUsbil7Y29uc3Qgbz10aGlzLm1hbmFnZXIuZ2V0Wm9uZSgpO2lmKGU9ZS50b0xvd2VyQ2FzZSgpLCF3aW5kb3cuSGFtbWVyJiZ0aGlzLmxvYWRlcil7dGhpcy5fbG9hZGVyUHJvbWlzZT10aGlzLl9sb2FkZXJQcm9taXNlfHx0aGlzLmxvYWRlcigpO2xldCBvPSExLGk9KCk9PntvPSEwfTtyZXR1cm4gdGhpcy5fbG9hZGVyUHJvbWlzZS50aGVuKCgoKT0+e2lmKCF3aW5kb3cuSGFtbWVyKXJldHVybigidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmdGhpcy5jb25zb2xlLndhcm4oIlRoZSBjdXN0b20gSEFNTUVSX0xPQURFUiBjb21wbGV0ZWQsIGJ1dCBIYW1tZXIuSlMgaXMgbm90IHByZXNlbnQuIiksdm9pZChpPSgpPT57fSk7b3x8KGk9dGhpcy5hZGRFdmVudExpc3RlbmVyKHQsZSxuKSl9KSkuY2F0Y2goKCgpPT57KCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZ0aGlzLmNvbnNvbGUud2FybihgVGhlICIke2V9IiBldmVudCBjYW5ub3QgYmUgYm91bmQgYmVjYXVzZSB0aGUgY3VzdG9tIEhhbW1lci5KUyBsb2FkZXIgZmFpbGVkLmApLGk9KCk9Pnt9fSkpLCgpPT57aSgpfX1yZXR1cm4gby5ydW5PdXRzaWRlQW5ndWxhcigoKCk9Pntjb25zdCBpPXRoaXMuX2NvbmZpZy5idWlsZEhhbW1lcih0KSxhPWZ1bmN0aW9uKHQpe28ucnVuR3VhcmRlZCgoZnVuY3Rpb24oKXtuKHQpfSkpfTtyZXR1cm4gaS5vbihlLGEpLCgpPT57aS5vZmYoZSxhKSwiZnVuY3Rpb24iPT10eXBlb2YgaS5kZXN0cm95JiZpLmRlc3Ryb3koKX19KSl9aXNDdXN0b21FdmVudCh0KXtyZXR1cm4gdGhpcy5fY29uZmlnLmV2ZW50cy5pbmRleE9mKHQpPi0xfX1ZeC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8WXgpKFRyKHNNKSxUcihVeCksVHIoSl8pLFRyKFd4LDgpKX0sWXguybVwcm92PVNuKHt0b2tlbjpZeCxmYWN0b3J5Oll4Lsm1ZmFjfSksWXguY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbc01dfV19LHt0eXBlOkd4LGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W1V4XX1dfSx7dHlwZTpKX30se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltXeF19XX1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoWXgsW3t0eXBlOlVtfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltzTV19XX0se3R5cGU6R3gsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbVXhdfV19LHt0eXBlOkpffSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W1d4XX1dfV19KSxudWxsKTtjb25zdCBxeD1be3Byb3ZpZGU6TXgsdXNlQ2xhc3M6WXgsbXVsdGk6ITAsZGVwczpbc00sVXgsSl8sW25ldyBCcixXeF1dfSx7cHJvdmlkZTpVeCx1c2VDbGFzczpHeCxkZXBzOltdfV0sWng9W107Y2xhc3MgWHh7fVh4Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxYeCl9LFh4Lsm1bW9kPWZvKHt0eXBlOlh4fSksWHguybVpbmo9RG4oe3Byb3ZpZGVyczpxeH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoWHgsW3t0eXBlOkxfLGFyZ3M6W3twcm92aWRlcnM6cXh9XX1dLG51bGwsbnVsbCk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjb25zdCBLeD1bImFsdCIsImNvbnRyb2wiLCJtZXRhIiwic2hpZnQiXSxKeD17IlxiIjoiQmFja3NwYWNlIiwiXHQiOiJUYWIiLCJ/IjoiRGVsZXRlIiwiGyI6IkVzY2FwZSIsRGVsOiJEZWxldGUiLEVzYzoiRXNjYXBlIixMZWZ0OiJBcnJvd0xlZnQiLFJpZ2h0OiJBcnJvd1JpZ2h0IixVcDoiQXJyb3dVcCIsRG93bjoiQXJyb3dEb3duIixNZW51OiJDb250ZXh0TWVudSIsU2Nyb2xsOiJTY3JvbGxMb2NrIixXaW46Ik9TIn0sUXg9e0E6IjEiLEI6IjIiLEM6IjMiLEQ6IjQiLEU6IjUiLEY6IjYiLEc6IjciLEg6IjgiLEk6IjkiLEo6IioiLEs6IisiLE06Ii0iLE46Ii4iLE86Ii8iLCJgIjoiMCIsIsKQIjoiTnVtTG9jayJ9LCR4PXthbHQ6dD0+dC5hbHRLZXksY29udHJvbDp0PT50LmN0cmxLZXksbWV0YTp0PT50Lm1ldGFLZXksc2hpZnQ6dD0+dC5zaGlmdEtleX07Y2xhc3MgdE8gZXh0ZW5kcyB4eHtjb25zdHJ1Y3Rvcih0KXtzdXBlcih0KX1zdXBwb3J0cyh0KXtyZXR1cm4gbnVsbCE9dE8ucGFyc2VFdmVudE5hbWUodCl9YWRkRXZlbnRMaXN0ZW5lcih0LGUsbil7Y29uc3Qgbz10Ty5wYXJzZUV2ZW50TmFtZShlKSxpPXRPLmV2ZW50Q2FsbGJhY2soby5mdWxsS2V5LG4sdGhpcy5tYW5hZ2VyLmdldFpvbmUoKSk7cmV0dXJuIHRoaXMubWFuYWdlci5nZXRab25lKCkucnVuT3V0c2lkZUFuZ3VsYXIoKCgpPT5yTSgpLm9uQW5kQ2FuY2VsKHQsby5kb21FdmVudE5hbWUsaSkpKX1zdGF0aWMgcGFyc2VFdmVudE5hbWUodCl7Y29uc3QgZT10LnRvTG93ZXJDYXNlKCkuc3BsaXQoIi4iKSxuPWUuc2hpZnQoKTtpZigwPT09ZS5sZW5ndGh8fCJrZXlkb3duIiE9PW4mJiJrZXl1cCIhPT1uKXJldHVybiBudWxsO2NvbnN0IG89dE8uX25vcm1hbGl6ZUtleShlLnBvcCgpKTtsZXQgaT0iIjtpZihLeC5mb3JFYWNoKCh0PT57Y29uc3Qgbj1lLmluZGV4T2YodCk7bj4tMSYmKGUuc3BsaWNlKG4sMSksaSs9dCsiLiIpfSkpLGkrPW8sMCE9ZS5sZW5ndGh8fDA9PT1vLmxlbmd0aClyZXR1cm4gbnVsbDtjb25zdCBhPXt9O3JldHVybiBhLmRvbUV2ZW50TmFtZT1uLGEuZnVsbEtleT1pLGF9c3RhdGljIGdldEV2ZW50RnVsbEtleSh0KXtsZXQgZT0iIixuPShmdW5jdGlvbiBvKHQpe2xldCBlPXQua2V5O2lmKG51bGw9PWUpe2lmKGU9dC5rZXlJZGVudGlmaWVyLG51bGw9PWUpcmV0dXJuIlVuaWRlbnRpZmllZCI7ZS5zdGFydHNXaXRoKCJVKyIpJiYoZT1TdHJpbmcuZnJvbUNoYXJDb2RlKHBhcnNlSW50KGUuc3Vic3RyaW5nKDIpLDE2KSksMz09PXQubG9jYXRpb24mJlF4Lmhhc093blByb3BlcnR5KGUpJiYoZT1ReFtlXSkpfXJldHVybiBKeFtlXXx8ZX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovKSh0KTtyZXR1cm4gbj1uLnRvTG93ZXJDYXNlKCksIiAiPT09bj9uPSJzcGFjZSI6Ii4iPT09biYmKG49ImRvdCIpLEt4LmZvckVhY2goKG89PntpZihvIT1uKXsoMCwkeFtvXSkodCkmJihlKz1vKyIuIil9fSkpLGUrPW4sZX1zdGF0aWMgZXZlbnRDYWxsYmFjayh0LGUsbil7cmV0dXJuIG89Pnt0Ty5nZXRFdmVudEZ1bGxLZXkobyk9PT10JiZuLnJ1bkd1YXJkZWQoKCgpPT5lKG8pKSl9fXN0YXRpYyBfbm9ybWFsaXplS2V5KHQpe3N3aXRjaCh0KXtjYXNlImVzYyI6cmV0dXJuImVzY2FwZSI7ZGVmYXVsdDpyZXR1cm4gdH19fXRPLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHx0TykoVHIoc00pKX0sdE8uybVwcm92PVNuKHt0b2tlbjp0TyxmYWN0b3J5OnRPLsm1ZmFjfSksdE8uY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbc01dfV19XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKHRPLFt7dHlwZTpVbX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbc01dfV19XX0pLG51bGwpO2NsYXNzIGVPe31mdW5jdGlvbiBuTyh0KXtyZXR1cm4gbmV3IG9PKHQuZ2V0KHNNKSl9ZU8uybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGVPKX0sZU8uybVwcm92PVNuKHtmYWN0b3J5OmZ1bmN0aW9uIHQoKXtyZXR1cm4gVHIob08pfSx0b2tlbjplTyxwcm92aWRlZEluOiJyb290In0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoZU8sW3t0eXBlOlVtLGFyZ3M6W3twcm92aWRlZEluOiJyb290Iix1c2VFeGlzdGluZzokZSgoKCk9Pm9PKSl9XX1dLG51bGwsbnVsbCk7Y2xhc3Mgb08gZXh0ZW5kcyBlT3tjb25zdHJ1Y3Rvcih0KXtzdXBlcigpLHRoaXMuX2RvYz10fXNhbml0aXplKHQsZSl7aWYobnVsbD09ZSlyZXR1cm4gbnVsbDtzd2l0Y2godCl7Y2FzZSBZcy5OT05FOnJldHVybiBlO2Nhc2UgWXMuSFRNTDpyZXR1cm4gZ3MoZSwiSFRNTCIpP3VzKGUpOldzKHRoaXMuX2RvYyxTdHJpbmcoZSkpLnRvU3RyaW5nKCk7Y2FzZSBZcy5TVFlMRTpyZXR1cm4gZ3MoZSwiU3R5bGUiKT91cyhlKTplO2Nhc2UgWXMuU0NSSVBUOmlmKGdzKGUsIlNjcmlwdCIpKXJldHVybiB1cyhlKTt0aHJvdyBuZXcgRXJyb3IoInVuc2FmZSB2YWx1ZSB1c2VkIGluIGEgc2NyaXB0IGNvbnRleHQiKTtjYXNlIFlzLlVSTDpyZXR1cm4gaHMoZSksZ3MoZSwiVVJMIik/dXMoZSk6dnMoU3RyaW5nKGUpKTtjYXNlIFlzLlJFU09VUkNFX1VSTDppZihncyhlLCJSZXNvdXJjZVVSTCIpKXJldHVybiB1cyhlKTt0aHJvdyBuZXcgRXJyb3IoInVuc2FmZSB2YWx1ZSB1c2VkIGluIGEgcmVzb3VyY2UgVVJMIGNvbnRleHQgKHNlZSBodHRwczovL2cuY28vbmcvc2VjdXJpdHkjeHNzKSIpO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKGBVbmV4cGVjdGVkIFNlY3VyaXR5Q29udGV4dCAke3R9IChzZWUgaHR0cHM6Ly9nLmNvL25nL3NlY3VyaXR5I3hzcylgKX19YnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwodCl7cmV0dXJuKGZ1bmN0aW9uIGUodCl7cmV0dXJuIG5ldyBjcyh0KX0pKHQpfWJ5cGFzc1NlY3VyaXR5VHJ1c3RTdHlsZSh0KXtyZXR1cm4oZnVuY3Rpb24gZSh0KXtyZXR1cm4gbmV3IGRzKHQpfSkodCl9YnlwYXNzU2VjdXJpdHlUcnVzdFNjcmlwdCh0KXtyZXR1cm4oZnVuY3Rpb24gZSh0KXtyZXR1cm4gbmV3IHBzKHQpfSkodCl9YnlwYXNzU2VjdXJpdHlUcnVzdFVybCh0KXtyZXR1cm4oZnVuY3Rpb24gZSh0KXtyZXR1cm4gbmV3IG1zKHQpfSkodCl9YnlwYXNzU2VjdXJpdHlUcnVzdFJlc291cmNlVXJsKHQpe3JldHVybihmdW5jdGlvbiBlKHQpe3JldHVybiBuZXcgZnModCl9KSh0KX19b08uybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fG9PKShUcihzTSkpfSxvTy7JtXByb3Y9U24oe2ZhY3Rvcnk6ZnVuY3Rpb24gdCgpe3JldHVybiBuTyhUcih5cCkpfSx0b2tlbjpvTyxwcm92aWRlZEluOiJyb290In0pLG9PLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W3NNXX1dfV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihvTyxbe3R5cGU6VW0sYXJnczpbe3Byb3ZpZGVkSW46InJvb3QiLHVzZUZhY3Rvcnk6bk8sZGVwczpbTnBdfV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W3NNXX1dfV19KSxudWxsKTtjb25zdCBpTz1bXSxhTz1UQyhXQywiYnJvd3NlciIsW3twcm92aWRlOlhfLHVzZVZhbHVlOiJicm93c2VyIn0se3Byb3ZpZGU6Wl8sdXNlVmFsdWU6Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpmdW5jdGlvbiByTygpe214Lm1ha2VDdXJyZW50KCkseXguaW5pdCgpfSxtdWx0aTohMH0se3Byb3ZpZGU6c00sdXNlRmFjdG9yeTpmdW5jdGlvbiBzTygpe3JldHVybihmdW5jdGlvbiB0KGUpe29pPWV9KShkb2N1bWVudCksZG9jdW1lbnR9LGRlcHM6W119XSksbE89W2lPLHtwcm92aWRlOkNwLHVzZVZhbHVlOiJyb290In0se3Byb3ZpZGU6dWwsdXNlRmFjdG9yeTpmdW5jdGlvbiBjTygpe3JldHVybiBuZXcgdWx9LGRlcHM6W119LHtwcm92aWRlOk14LHVzZUNsYXNzOlZ4LG11bHRpOiEwLGRlcHM6W3NNLG1DLFhfXX0se3Byb3ZpZGU6TXgsdXNlQ2xhc3M6dE8sbXVsdGk6ITAsZGVwczpbc01dfSxaeCx7cHJvdmlkZTp6eCx1c2VDbGFzczp6eCxkZXBzOlt2eCxQeCxXX119LHtwcm92aWRlOlFoLHVzZUV4aXN0aW5nOnp4fSx7cHJvdmlkZTpPeCx1c2VFeGlzdGluZzpQeH0se3Byb3ZpZGU6UHgsdXNlQ2xhc3M6UHgsZGVwczpbc01dfSx7cHJvdmlkZTpfQyx1c2VDbGFzczpfQyxkZXBzOlttQ119LHtwcm92aWRlOnZ4LHVzZUNsYXNzOnZ4LGRlcHM6W014LG1DXX0se3Byb3ZpZGU6cHgsdXNlQ2xhc3M6X3gsZGVwczpbXX0sQ3hdO2NsYXNzIGRPe2NvbnN0cnVjdG9yKHQpe2lmKHQpdGhyb3cgbmV3IEVycm9yKCJCcm93c2VyTW9kdWxlIGhhcyBhbHJlYWR5IGJlZW4gbG9hZGVkLiBJZiB5b3UgbmVlZCBhY2Nlc3MgdG8gY29tbW9uIGRpcmVjdGl2ZXMgc3VjaCBhcyBOZ0lmIGFuZCBOZ0ZvciBmcm9tIGEgbGF6eSBsb2FkZWQgbW9kdWxlLCBpbXBvcnQgQ29tbW9uTW9kdWxlIGluc3RlYWQuIil9c3RhdGljIHdpdGhTZXJ2ZXJUcmFuc2l0aW9uKHQpe3JldHVybntuZ01vZHVsZTpkTyxwcm92aWRlcnM6W3twcm92aWRlOldfLHVzZVZhbHVlOnQuYXBwSWR9LHtwcm92aWRlOmd4LHVzZUV4aXN0aW5nOldffSxoeF19fX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmZ1bmN0aW9uIHBPKCl7cmV0dXJuIG5ldyBtTyhUcihzTSkpfWRPLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxkTykoVHIoZE8sMTIpKX0sZE8uybVtb2Q9Zm8oe3R5cGU6ZE99KSxkTy7JtWluaj1Ebih7cHJvdmlkZXJzOmxPLGltcG9ydHM6W3J4LEtDXX0pLGRPLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6ZE8sZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOmpyfSx7dHlwZTpMcixhcmdzOltkT119XX1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoZE8sW3t0eXBlOkxfLGFyZ3M6W3twcm92aWRlcnM6bE8sZXhwb3J0czpbcngsS0NdfV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6ZE8sZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOmpyfSx7dHlwZTpMcixhcmdzOltkT119XX1dfSksbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZ1byhkTyx7ZXhwb3J0czpmdW5jdGlvbigpe3JldHVybltyeCxLQ119fSk7Y2xhc3MgbU97Y29uc3RydWN0b3IodCl7dGhpcy5fZG9jPXQsdGhpcy5fZG9tPXJNKCl9YWRkVGFnKHQsZT0hMSl7cmV0dXJuIHQ/dGhpcy5fZ2V0T3JDcmVhdGVFbGVtZW50KHQsZSk6bnVsbH1hZGRUYWdzKHQsZT0hMSl7cmV0dXJuIHQ/dC5yZWR1Y2UoKCh0LG4pPT4obiYmdC5wdXNoKHRoaXMuX2dldE9yQ3JlYXRlRWxlbWVudChuLGUpKSx0KSksW10pOltdfWdldFRhZyh0KXtyZXR1cm4gdCYmdGhpcy5fZG9jLnF1ZXJ5U2VsZWN0b3IoYG1ldGFbJHt0fV1gKXx8bnVsbH1nZXRUYWdzKHQpe2lmKCF0KXJldHVybltdO2NvbnN0IGU9dGhpcy5fZG9jLnF1ZXJ5U2VsZWN0b3JBbGwoYG1ldGFbJHt0fV1gKTtyZXR1cm4gZT9bXS5zbGljZS5jYWxsKGUpOltdfXVwZGF0ZVRhZyh0LGUpe2lmKCF0KXJldHVybiBudWxsO2U9ZXx8dGhpcy5fcGFyc2VTZWxlY3Rvcih0KTtjb25zdCBuPXRoaXMuZ2V0VGFnKGUpO3JldHVybiBuP3RoaXMuX3NldE1ldGFFbGVtZW50QXR0cmlidXRlcyh0LG4pOnRoaXMuX2dldE9yQ3JlYXRlRWxlbWVudCh0LCEwKX1yZW1vdmVUYWcodCl7dGhpcy5yZW1vdmVUYWdFbGVtZW50KHRoaXMuZ2V0VGFnKHQpKX1yZW1vdmVUYWdFbGVtZW50KHQpe3QmJnRoaXMuX2RvbS5yZW1vdmUodCl9X2dldE9yQ3JlYXRlRWxlbWVudCh0LGU9ITEpe2lmKCFlKXtjb25zdCBlPXRoaXMuX3BhcnNlU2VsZWN0b3IodCksbj10aGlzLmdldFRhZ3MoZSkuZmlsdGVyKChlPT50aGlzLl9jb250YWluc0F0dHJpYnV0ZXModCxlKSkpWzBdO2lmKHZvaWQgMCE9PW4pcmV0dXJuIG59Y29uc3Qgbj10aGlzLl9kb20uY3JlYXRlRWxlbWVudCgibWV0YSIpO3RoaXMuX3NldE1ldGFFbGVtZW50QXR0cmlidXRlcyh0LG4pO3JldHVybiB0aGlzLl9kb2MuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImhlYWQiKVswXS5hcHBlbmRDaGlsZChuKSxufV9zZXRNZXRhRWxlbWVudEF0dHJpYnV0ZXModCxlKXtyZXR1cm4gT2JqZWN0LmtleXModCkuZm9yRWFjaCgobj0+ZS5zZXRBdHRyaWJ1dGUodGhpcy5fZ2V0TWV0YUtleU1hcChuKSx0W25dKSkpLGV9X3BhcnNlU2VsZWN0b3IodCl7Y29uc3QgZT10Lm5hbWU/Im5hbWUiOiJwcm9wZXJ0eSI7cmV0dXJuYCR7ZX09IiR7dFtlXX0iYH1fY29udGFpbnNBdHRyaWJ1dGVzKHQsZSl7cmV0dXJuIE9iamVjdC5rZXlzKHQpLmV2ZXJ5KChuPT5lLmdldEF0dHJpYnV0ZSh0aGlzLl9nZXRNZXRhS2V5TWFwKG4pKT09PXRbbl0pKX1fZ2V0TWV0YUtleU1hcCh0KXtyZXR1cm4gZk9bdF18fHR9fW1PLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxtTykoVHIoc00pKX0sbU8uybVwcm92PVNuKHtmYWN0b3J5OnBPLHRva2VuOm1PLHByb3ZpZGVkSW46InJvb3QifSksbU8uY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbc01dfV19XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKG1PLFt7dHlwZTpVbSxhcmdzOlt7cHJvdmlkZWRJbjoicm9vdCIsdXNlRmFjdG9yeTpwTyxkZXBzOltdfV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W3NNXX1dfV19KSxudWxsKTtjb25zdCBmTz17aHR0cEVxdWl2OiJodHRwLWVxdWl2In07Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2Z1bmN0aW9uIHVPKCl7cmV0dXJuIG5ldyBnTyhUcihzTSkpfWNsYXNzIGdPe2NvbnN0cnVjdG9yKHQpe3RoaXMuX2RvYz10fWdldFRpdGxlKCl7cmV0dXJuIHRoaXMuX2RvYy50aXRsZX1zZXRUaXRsZSh0KXt0aGlzLl9kb2MudGl0bGU9dHx8IiJ9fWdPLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxnTykoVHIoc00pKX0sZ08uybVwcm92PVNuKHtmYWN0b3J5OnVPLHRva2VuOmdPLHByb3ZpZGVkSW46InJvb3QifSksZ08uY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbc01dfV19XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKGdPLFt7dHlwZTpVbSxhcmdzOlt7cHJvdmlkZWRJbjoicm9vdCIsdXNlRmFjdG9yeTp1TyxkZXBzOltdfV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W3NNXX1dfV19KSxudWxsKTtjbGFzcyBoT3tjb25zdHJ1Y3Rvcigpe3RoaXMuc3RvcmU9e30sdGhpcy5vblNlcmlhbGl6ZUNhbGxiYWNrcz17fX1zdGF0aWMgaW5pdCh0KXtjb25zdCBlPW5ldyBoTztyZXR1cm4gZS5zdG9yZT10LGV9Z2V0KHQsZSl7cmV0dXJuIHZvaWQgMCE9PXRoaXMuc3RvcmVbdF0/dGhpcy5zdG9yZVt0XTplfXNldCh0LGUpe3RoaXMuc3RvcmVbdF09ZX1yZW1vdmUodCl7ZGVsZXRlIHRoaXMuc3RvcmVbdF19aGFzS2V5KHQpe3JldHVybiB0aGlzLnN0b3JlLmhhc093blByb3BlcnR5KHQpfW9uU2VyaWFsaXplKHQsZSl7dGhpcy5vblNlcmlhbGl6ZUNhbGxiYWNrc1t0XT1lfXRvSnNvbigpe2Zvcihjb25zdCB0IGluIHRoaXMub25TZXJpYWxpemVDYWxsYmFja3MpaWYodGhpcy5vblNlcmlhbGl6ZUNhbGxiYWNrcy5oYXNPd25Qcm9wZXJ0eSh0KSl0cnl7dGhpcy5zdG9yZVt0XT10aGlzLm9uU2VyaWFsaXplQ2FsbGJhY2tzW3RdKCl9Y2F0Y2godCl7Y29uc29sZS53YXJuKCJFeGNlcHRpb24gaW4gb25TZXJpYWxpemUgY2FsbGJhY2s6ICIsdCl9cmV0dXJuIEpTT04uc3RyaW5naWZ5KHRoaXMuc3RvcmUpfX1mdW5jdGlvbiBiTyh0LGUpe2NvbnN0IG49dC5nZXRFbGVtZW50QnlJZChlKyItc3RhdGUiKTtsZXQgbz17fTtpZihuJiZuLnRleHRDb250ZW50KXRyeXtvPUpTT04ucGFyc2UoKGZ1bmN0aW9uIGkodCl7Y29uc3QgZT17IiZhOyI6IiYiLCImcTsiOiciJywiJnM7IjoiJyIsIiZsOyI6IjwiLCImZzsiOiI+In07cmV0dXJuIHQucmVwbGFjZSgvJlteO10rOy9nLCh0PT5lW3RdKSl9KShuLnRleHRDb250ZW50KSl9Y2F0Y2godCl7Y29uc29sZS53YXJuKCJFeGNlcHRpb24gd2hpbGUgcmVzdG9yaW5nIFRyYW5zZmVyU3RhdGUgZm9yIGFwcCAiK2UsdCl9cmV0dXJuIGhPLmluaXQobyl9aE8uybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGhPKX0saE8uybVwcm92PVNuKHt0b2tlbjpoTyxmYWN0b3J5OmhPLsm1ZmFjfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihoTyxbe3R5cGU6VW19XSwoZnVuY3Rpb24oKXtyZXR1cm5bXX0pLG51bGwpO2NsYXNzIHlPe315Ty7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8eU8pfSx5Ty7JtW1vZD1mbyh7dHlwZTp5T30pLHlPLsm1aW5qPURuKHtwcm92aWRlcnM6W3twcm92aWRlOmhPLHVzZUZhY3Rvcnk6Yk8sZGVwczpbc00sV19dfV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKHlPLFt7dHlwZTpMXyxhcmdzOlt7cHJvdmlkZXJzOlt7cHJvdmlkZTpoTyx1c2VGYWN0b3J5OmJPLGRlcHM6W3NNLFdfXX1dfV19XSxudWxsLG51bGwpLAovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCm5ldyBvYigiMTIuMi4xIik7dmFyIF9PPSJ1bmRlZmluZWQiIT10eXBlb2YgZ2xvYmFsVGhpcz9nbG9iYWxUaGlzOiJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93P3dpbmRvdzoidW5kZWZpbmVkIiE9dHlwZW9mIGdsb2JhbD9nbG9iYWw6InVuZGVmaW5lZCIhPXR5cGVvZiBzZWxmP3NlbGY6e307ZnVuY3Rpb24gQ08odCl7aWYodC5fX2VzTW9kdWxlKXJldHVybiB0O3ZhciBlPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7cmV0dXJuIE9iamVjdC5rZXlzKHQpLmZvckVhY2goKGZ1bmN0aW9uKG4pe3ZhciBvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxuKTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxuLG8uZ2V0P286e2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRbbl19fSl9KSksZX0KLyoqCiAgICAgKiBAbGljZW5zZSBBbmd1bGFyIHYxMi4wLjAtbmV4dC4wCiAgICAgKiAoYykgMjAxMC0yMDIwIEdvb2dsZSBMTEMuIGh0dHBzOi8vYW5ndWxhci5pby8KICAgICAqIExpY2Vuc2U6IE1JVAogICAgICovIShmdW5jdGlvbigpewovKioKICAgICAgICAgKiBAbGljZW5zZQogICAgICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgICAgICoKICAgICAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAgICAgKi8KIShmdW5jdGlvbih0KXt2YXIgZT10LnBlcmZvcm1hbmNlO2Z1bmN0aW9uIG4odCl7ZSYmZS5tYXJrJiZlLm1hcmsodCl9ZnVuY3Rpb24gbyh0LG4pe2UmJmUubWVhc3VyZSYmZS5tZWFzdXJlKHQsbil9bigiWm9uZSIpO3ZhciBpPXQuX19ab25lX3N5bWJvbF9wcmVmaXh8fCJfX3pvbmVfc3ltYm9sX18iO2Z1bmN0aW9uIGEodCl7cmV0dXJuIGkrdH12YXIgcj0hMD09PXRbYSgiZm9yY2VEdXBsaWNhdGVab25lQ2hlY2siKV07aWYodC5ab25lKXtpZihyfHwiZnVuY3Rpb24iIT10eXBlb2YgdC5ab25lLl9fc3ltYm9sX18pdGhyb3cgbmV3IEVycm9yKCJab25lIGFscmVhZHkgbG9hZGVkLiIpO3JldHVybiB0LlpvbmV9dmFyIHM9KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSh0LGUpe3RoaXMuX3BhcmVudD10LHRoaXMuX25hbWU9ZT9lLm5hbWV8fCJ1bm5hbWVkIjoiPHJvb3Q+Iix0aGlzLl9wcm9wZXJ0aWVzPWUmJmUucHJvcGVydGllc3x8e30sdGhpcy5fem9uZURlbGVnYXRlPW5ldyBkKHRoaXMsdGhpcy5fcGFyZW50JiZ0aGlzLl9wYXJlbnQuX3pvbmVEZWxlZ2F0ZSxlKX1yZXR1cm4gZS5hc3NlcnRab25lUGF0Y2hlZD1mdW5jdGlvbigpe2lmKHQuUHJvbWlzZSE9PUQuWm9uZUF3YXJlUHJvbWlzZSl0aHJvdyBuZXcgRXJyb3IoIlpvbmUuanMgaGFzIGRldGVjdGVkIHRoYXQgWm9uZUF3YXJlUHJvbWlzZSBgKHdpbmRvd3xnbG9iYWwpLlByb21pc2VgIGhhcyBiZWVuIG92ZXJ3cml0dGVuLlxuTW9zdCBsaWtlbHkgY2F1c2UgaXMgdGhhdCBhIFByb21pc2UgcG9seWZpbGwgaGFzIGJlZW4gbG9hZGVkIGFmdGVyIFpvbmUuanMgKFBvbHlmaWxsaW5nIFByb21pc2UgYXBpIGlzIG5vdCBuZWNlc3Nhcnkgd2hlbiB6b25lLmpzIGlzIGxvYWRlZC4gSWYgeW91IG11c3QgbG9hZCBvbmUsIGRvIHNvIGJlZm9yZSBsb2FkaW5nIHpvbmUuanMuKSIpfSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwicm9vdCIse2dldDpmdW5jdGlvbigpe2Zvcih2YXIgdD1lLmN1cnJlbnQ7dC5wYXJlbnQ7KXQ9dC5wYXJlbnQ7cmV0dXJuIHR9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsImN1cnJlbnQiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gRS56b25lfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJjdXJyZW50VGFzayIse2dldDpmdW5jdGlvbigpe3JldHVybiBBfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLGUuX19sb2FkX3BhdGNoPWZ1bmN0aW9uKGksYSxzKXtpZih2b2lkIDA9PT1zJiYocz0hMSksRC5oYXNPd25Qcm9wZXJ0eShpKSl7aWYoIXMmJnIpdGhyb3cgRXJyb3IoIkFscmVhZHkgbG9hZGVkIHBhdGNoOiAiK2kpfWVsc2UgaWYoIXRbIl9fWm9uZV9kaXNhYmxlXyIraV0pe3ZhciBsPSJab25lOiIraTtuKGwpLERbaV09YSh0LGUsUiksbyhsLGwpfX0sT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJwYXJlbnQiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcGFyZW50fSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwibmFtZSIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9uYW1lfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLGUucHJvdG90eXBlLmdldD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmdldFpvbmVXaXRoKHQpO2lmKGUpcmV0dXJuIGUuX3Byb3BlcnRpZXNbdF19LGUucHJvdG90eXBlLmdldFpvbmVXaXRoPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10aGlzO2U7KXtpZihlLl9wcm9wZXJ0aWVzLmhhc093blByb3BlcnR5KHQpKXJldHVybiBlO2U9ZS5fcGFyZW50fXJldHVybiBudWxsfSxlLnByb3RvdHlwZS5mb3JrPWZ1bmN0aW9uKHQpe2lmKCF0KXRocm93IG5ldyBFcnJvcigiWm9uZVNwZWMgcmVxdWlyZWQhIik7cmV0dXJuIHRoaXMuX3pvbmVEZWxlZ2F0ZS5mb3JrKHRoaXMsdCl9LGUucHJvdG90eXBlLndyYXA9ZnVuY3Rpb24odCxlKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCl0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGluZyBmdW5jdGlvbiBnb3Q6ICIrdCk7dmFyIG49dGhpcy5fem9uZURlbGVnYXRlLmludGVyY2VwdCh0aGlzLHQsZSksbz10aGlzO3JldHVybiBmdW5jdGlvbigpe3JldHVybiBvLnJ1bkd1YXJkZWQobix0aGlzLGFyZ3VtZW50cyxlKX19LGUucHJvdG90eXBlLnJ1bj1mdW5jdGlvbih0LGUsbixvKXtFPXtwYXJlbnQ6RSx6b25lOnRoaXN9O3RyeXtyZXR1cm4gdGhpcy5fem9uZURlbGVnYXRlLmludm9rZSh0aGlzLHQsZSxuLG8pfWZpbmFsbHl7RT1FLnBhcmVudH19LGUucHJvdG90eXBlLnJ1bkd1YXJkZWQ9ZnVuY3Rpb24odCxlLG4sbyl7dm9pZCAwPT09ZSYmKGU9bnVsbCksRT17cGFyZW50OkUsem9uZTp0aGlzfTt0cnl7dHJ5e3JldHVybiB0aGlzLl96b25lRGVsZWdhdGUuaW52b2tlKHRoaXMsdCxlLG4sbyl9Y2F0Y2godCl7aWYodGhpcy5fem9uZURlbGVnYXRlLmhhbmRsZUVycm9yKHRoaXMsdCkpdGhyb3cgdH19ZmluYWxseXtFPUUucGFyZW50fX0sZS5wcm90b3R5cGUucnVuVGFzaz1mdW5jdGlvbih0LGUsbil7aWYodC56b25lIT10aGlzKXRocm93IG5ldyBFcnJvcigiQSB0YXNrIGNhbiBvbmx5IGJlIHJ1biBpbiB0aGUgem9uZSBvZiBjcmVhdGlvbiEgKENyZWF0aW9uOiAiKyh0LnpvbmV8fF8pLm5hbWUrIjsgRXhlY3V0aW9uOiAiK3RoaXMubmFtZSsiKSIpO2lmKHQuc3RhdGUhPT1DfHx0LnR5cGUhPT1TJiZ0LnR5cGUhPT1rKXt2YXIgbz10LnN0YXRlIT14O28mJnQuX3RyYW5zaXRpb25Ubyh4LHYpLHQucnVuQ291bnQrKzt2YXIgaT1BO0E9dCxFPXtwYXJlbnQ6RSx6b25lOnRoaXN9O3RyeXt0LnR5cGU9PWsmJnQuZGF0YSYmIXQuZGF0YS5pc1BlcmlvZGljJiYodC5jYW5jZWxGbj12b2lkIDApO3RyeXtyZXR1cm4gdGhpcy5fem9uZURlbGVnYXRlLmludm9rZVRhc2sodGhpcyx0LGUsbil9Y2F0Y2godCl7aWYodGhpcy5fem9uZURlbGVnYXRlLmhhbmRsZUVycm9yKHRoaXMsdCkpdGhyb3cgdH19ZmluYWxseXt0LnN0YXRlIT09QyYmdC5zdGF0ZSE9PVAmJih0LnR5cGU9PVN8fHQuZGF0YSYmdC5kYXRhLmlzUGVyaW9kaWM/byYmdC5fdHJhbnNpdGlvblRvKHYseCk6KHQucnVuQ291bnQ9MCx0aGlzLl91cGRhdGVUYXNrQ291bnQodCwtMSksbyYmdC5fdHJhbnNpdGlvblRvKEMseCxDKSkpLEU9RS5wYXJlbnQsQT1pfX19LGUucHJvdG90eXBlLnNjaGVkdWxlVGFzaz1mdW5jdGlvbih0KXtpZih0LnpvbmUmJnQuem9uZSE9PXRoaXMpZm9yKHZhciBlPXRoaXM7ZTspe2lmKGU9PT10LnpvbmUpdGhyb3cgRXJyb3IoImNhbiBub3QgcmVzY2hlZHVsZSB0YXNrIHRvICIrdGhpcy5uYW1lKyIgd2hpY2ggaXMgZGVzY2VuZGFudHMgb2YgdGhlIG9yaWdpbmFsIHpvbmUgIit0LnpvbmUubmFtZSk7ZT1lLnBhcmVudH10Ll90cmFuc2l0aW9uVG8oTSxDKTt2YXIgbj1bXTt0Ll96b25lRGVsZWdhdGVzPW4sdC5fem9uZT10aGlzO3RyeXt0PXRoaXMuX3pvbmVEZWxlZ2F0ZS5zY2hlZHVsZVRhc2sodGhpcyx0KX1jYXRjaChlKXt0aHJvdyB0Ll90cmFuc2l0aW9uVG8oUCxNLEMpLHRoaXMuX3pvbmVEZWxlZ2F0ZS5oYW5kbGVFcnJvcih0aGlzLGUpLGV9cmV0dXJuIHQuX3pvbmVEZWxlZ2F0ZXM9PT1uJiZ0aGlzLl91cGRhdGVUYXNrQ291bnQodCwxKSx0LnN0YXRlPT1NJiZ0Ll90cmFuc2l0aW9uVG8odixNKSx0fSxlLnByb3RvdHlwZS5zY2hlZHVsZU1pY3JvVGFzaz1mdW5jdGlvbih0LGUsbixvKXtyZXR1cm4gdGhpcy5zY2hlZHVsZVRhc2sobmV3IHAodyx0LGUsbixvLHZvaWQgMCkpfSxlLnByb3RvdHlwZS5zY2hlZHVsZU1hY3JvVGFzaz1mdW5jdGlvbih0LGUsbixvLGkpe3JldHVybiB0aGlzLnNjaGVkdWxlVGFzayhuZXcgcChrLHQsZSxuLG8saSkpfSxlLnByb3RvdHlwZS5zY2hlZHVsZUV2ZW50VGFzaz1mdW5jdGlvbih0LGUsbixvLGkpe3JldHVybiB0aGlzLnNjaGVkdWxlVGFzayhuZXcgcChTLHQsZSxuLG8saSkpfSxlLnByb3RvdHlwZS5jYW5jZWxUYXNrPWZ1bmN0aW9uKHQpe2lmKHQuem9uZSE9dGhpcyl0aHJvdyBuZXcgRXJyb3IoIkEgdGFzayBjYW4gb25seSBiZSBjYW5jZWxsZWQgaW4gdGhlIHpvbmUgb2YgY3JlYXRpb24hIChDcmVhdGlvbjogIisodC56b25lfHxfKS5uYW1lKyI7IEV4ZWN1dGlvbjogIit0aGlzLm5hbWUrIikiKTt0Ll90cmFuc2l0aW9uVG8oTyx2LHgpO3RyeXt0aGlzLl96b25lRGVsZWdhdGUuY2FuY2VsVGFzayh0aGlzLHQpfWNhdGNoKGUpe3Rocm93IHQuX3RyYW5zaXRpb25UbyhQLE8pLHRoaXMuX3pvbmVEZWxlZ2F0ZS5oYW5kbGVFcnJvcih0aGlzLGUpLGV9cmV0dXJuIHRoaXMuX3VwZGF0ZVRhc2tDb3VudCh0LC0xKSx0Ll90cmFuc2l0aW9uVG8oQyxPKSx0LnJ1bkNvdW50PTAsdH0sZS5wcm90b3R5cGUuX3VwZGF0ZVRhc2tDb3VudD1mdW5jdGlvbih0LGUpe3ZhciBuPXQuX3pvbmVEZWxlZ2F0ZXM7LTE9PWUmJih0Ll96b25lRGVsZWdhdGVzPW51bGwpO2Zvcih2YXIgbz0wO288bi5sZW5ndGg7bysrKW5bb10uX3VwZGF0ZVRhc2tDb3VudCh0LnR5cGUsZSl9LGV9KSgpO3MuX19zeW1ib2xfXz1hO3ZhciBsLGM9e25hbWU6IiIsb25IYXNUYXNrOmZ1bmN0aW9uKHQsZSxuLG8pe3JldHVybiB0Lmhhc1Rhc2sobixvKX0sb25TY2hlZHVsZVRhc2s6ZnVuY3Rpb24odCxlLG4sbyl7cmV0dXJuIHQuc2NoZWR1bGVUYXNrKG4sbyl9LG9uSW52b2tlVGFzazpmdW5jdGlvbih0LGUsbixvLGksYSl7cmV0dXJuIHQuaW52b2tlVGFzayhuLG8saSxhKX0sb25DYW5jZWxUYXNrOmZ1bmN0aW9uKHQsZSxuLG8pe3JldHVybiB0LmNhbmNlbFRhc2sobixvKX19LGQ9KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUsbil7dGhpcy5fdGFza0NvdW50cz17bWljcm9UYXNrOjAsbWFjcm9UYXNrOjAsZXZlbnRUYXNrOjB9LHRoaXMuem9uZT10LHRoaXMuX3BhcmVudERlbGVnYXRlPWUsdGhpcy5fZm9ya1pTPW4mJihuJiZuLm9uRm9yaz9uOmUuX2ZvcmtaUyksdGhpcy5fZm9ya0RsZ3Q9biYmKG4ub25Gb3JrP2U6ZS5fZm9ya0RsZ3QpLHRoaXMuX2ZvcmtDdXJyWm9uZT1uJiYobi5vbkZvcms/dGhpcy56b25lOmUuX2ZvcmtDdXJyWm9uZSksdGhpcy5faW50ZXJjZXB0WlM9biYmKG4ub25JbnRlcmNlcHQ/bjplLl9pbnRlcmNlcHRaUyksdGhpcy5faW50ZXJjZXB0RGxndD1uJiYobi5vbkludGVyY2VwdD9lOmUuX2ludGVyY2VwdERsZ3QpLHRoaXMuX2ludGVyY2VwdEN1cnJab25lPW4mJihuLm9uSW50ZXJjZXB0P3RoaXMuem9uZTplLl9pbnRlcmNlcHRDdXJyWm9uZSksdGhpcy5faW52b2tlWlM9biYmKG4ub25JbnZva2U/bjplLl9pbnZva2VaUyksdGhpcy5faW52b2tlRGxndD1uJiYobi5vbkludm9rZT9lOmUuX2ludm9rZURsZ3QpLHRoaXMuX2ludm9rZUN1cnJab25lPW4mJihuLm9uSW52b2tlP3RoaXMuem9uZTplLl9pbnZva2VDdXJyWm9uZSksdGhpcy5faGFuZGxlRXJyb3JaUz1uJiYobi5vbkhhbmRsZUVycm9yP246ZS5faGFuZGxlRXJyb3JaUyksdGhpcy5faGFuZGxlRXJyb3JEbGd0PW4mJihuLm9uSGFuZGxlRXJyb3I/ZTplLl9oYW5kbGVFcnJvckRsZ3QpLHRoaXMuX2hhbmRsZUVycm9yQ3VyclpvbmU9biYmKG4ub25IYW5kbGVFcnJvcj90aGlzLnpvbmU6ZS5faGFuZGxlRXJyb3JDdXJyWm9uZSksdGhpcy5fc2NoZWR1bGVUYXNrWlM9biYmKG4ub25TY2hlZHVsZVRhc2s/bjplLl9zY2hlZHVsZVRhc2taUyksdGhpcy5fc2NoZWR1bGVUYXNrRGxndD1uJiYobi5vblNjaGVkdWxlVGFzaz9lOmUuX3NjaGVkdWxlVGFza0RsZ3QpLHRoaXMuX3NjaGVkdWxlVGFza0N1cnJab25lPW4mJihuLm9uU2NoZWR1bGVUYXNrP3RoaXMuem9uZTplLl9zY2hlZHVsZVRhc2tDdXJyWm9uZSksdGhpcy5faW52b2tlVGFza1pTPW4mJihuLm9uSW52b2tlVGFzaz9uOmUuX2ludm9rZVRhc2taUyksdGhpcy5faW52b2tlVGFza0RsZ3Q9biYmKG4ub25JbnZva2VUYXNrP2U6ZS5faW52b2tlVGFza0RsZ3QpLHRoaXMuX2ludm9rZVRhc2tDdXJyWm9uZT1uJiYobi5vbkludm9rZVRhc2s/dGhpcy56b25lOmUuX2ludm9rZVRhc2tDdXJyWm9uZSksdGhpcy5fY2FuY2VsVGFza1pTPW4mJihuLm9uQ2FuY2VsVGFzaz9uOmUuX2NhbmNlbFRhc2taUyksdGhpcy5fY2FuY2VsVGFza0RsZ3Q9biYmKG4ub25DYW5jZWxUYXNrP2U6ZS5fY2FuY2VsVGFza0RsZ3QpLHRoaXMuX2NhbmNlbFRhc2tDdXJyWm9uZT1uJiYobi5vbkNhbmNlbFRhc2s/dGhpcy56b25lOmUuX2NhbmNlbFRhc2tDdXJyWm9uZSksdGhpcy5faGFzVGFza1pTPW51bGwsdGhpcy5faGFzVGFza0RsZ3Q9bnVsbCx0aGlzLl9oYXNUYXNrRGxndE93bmVyPW51bGwsdGhpcy5faGFzVGFza0N1cnJab25lPW51bGw7dmFyIG89biYmbi5vbkhhc1Rhc2s7KG98fGUmJmUuX2hhc1Rhc2taUykmJih0aGlzLl9oYXNUYXNrWlM9bz9uOmMsdGhpcy5faGFzVGFza0RsZ3Q9ZSx0aGlzLl9oYXNUYXNrRGxndE93bmVyPXRoaXMsdGhpcy5faGFzVGFza0N1cnJab25lPXQsbi5vblNjaGVkdWxlVGFza3x8KHRoaXMuX3NjaGVkdWxlVGFza1pTPWMsdGhpcy5fc2NoZWR1bGVUYXNrRGxndD1lLHRoaXMuX3NjaGVkdWxlVGFza0N1cnJab25lPXRoaXMuem9uZSksbi5vbkludm9rZVRhc2t8fCh0aGlzLl9pbnZva2VUYXNrWlM9Yyx0aGlzLl9pbnZva2VUYXNrRGxndD1lLHRoaXMuX2ludm9rZVRhc2tDdXJyWm9uZT10aGlzLnpvbmUpLG4ub25DYW5jZWxUYXNrfHwodGhpcy5fY2FuY2VsVGFza1pTPWMsdGhpcy5fY2FuY2VsVGFza0RsZ3Q9ZSx0aGlzLl9jYW5jZWxUYXNrQ3VyclpvbmU9dGhpcy56b25lKSl9cmV0dXJuIHQucHJvdG90eXBlLmZvcms9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5fZm9ya1pTP3RoaXMuX2ZvcmtaUy5vbkZvcmsodGhpcy5fZm9ya0RsZ3QsdGhpcy56b25lLHQsZSk6bmV3IHModCxlKX0sdC5wcm90b3R5cGUuaW50ZXJjZXB0PWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gdGhpcy5faW50ZXJjZXB0WlM/dGhpcy5faW50ZXJjZXB0WlMub25JbnRlcmNlcHQodGhpcy5faW50ZXJjZXB0RGxndCx0aGlzLl9pbnRlcmNlcHRDdXJyWm9uZSx0LGUsbik6ZX0sdC5wcm90b3R5cGUuaW52b2tlPWZ1bmN0aW9uKHQsZSxuLG8saSl7cmV0dXJuIHRoaXMuX2ludm9rZVpTP3RoaXMuX2ludm9rZVpTLm9uSW52b2tlKHRoaXMuX2ludm9rZURsZ3QsdGhpcy5faW52b2tlQ3VyclpvbmUsdCxlLG4sbyxpKTplLmFwcGx5KG4sbyl9LHQucHJvdG90eXBlLmhhbmRsZUVycm9yPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIXRoaXMuX2hhbmRsZUVycm9yWlN8fHRoaXMuX2hhbmRsZUVycm9yWlMub25IYW5kbGVFcnJvcih0aGlzLl9oYW5kbGVFcnJvckRsZ3QsdGhpcy5faGFuZGxlRXJyb3JDdXJyWm9uZSx0LGUpfSx0LnByb3RvdHlwZS5zY2hlZHVsZVRhc2s9ZnVuY3Rpb24odCxlKXt2YXIgbj1lO2lmKHRoaXMuX3NjaGVkdWxlVGFza1pTKXRoaXMuX2hhc1Rhc2taUyYmbi5fem9uZURlbGVnYXRlcy5wdXNoKHRoaXMuX2hhc1Rhc2tEbGd0T3duZXIpLChuPXRoaXMuX3NjaGVkdWxlVGFza1pTLm9uU2NoZWR1bGVUYXNrKHRoaXMuX3NjaGVkdWxlVGFza0RsZ3QsdGhpcy5fc2NoZWR1bGVUYXNrQ3VyclpvbmUsdCxlKSl8fChuPWUpO2Vsc2UgaWYoZS5zY2hlZHVsZUZuKWUuc2NoZWR1bGVGbihlKTtlbHNle2lmKGUudHlwZSE9dyl0aHJvdyBuZXcgRXJyb3IoIlRhc2sgaXMgbWlzc2luZyBzY2hlZHVsZUZuLiIpO2IoZSl9cmV0dXJuIG59LHQucHJvdG90eXBlLmludm9rZVRhc2s9ZnVuY3Rpb24odCxlLG4sbyl7cmV0dXJuIHRoaXMuX2ludm9rZVRhc2taUz90aGlzLl9pbnZva2VUYXNrWlMub25JbnZva2VUYXNrKHRoaXMuX2ludm9rZVRhc2tEbGd0LHRoaXMuX2ludm9rZVRhc2tDdXJyWm9uZSx0LGUsbixvKTplLmNhbGxiYWNrLmFwcGx5KG4sbyl9LHQucHJvdG90eXBlLmNhbmNlbFRhc2s9ZnVuY3Rpb24odCxlKXt2YXIgbjtpZih0aGlzLl9jYW5jZWxUYXNrWlMpbj10aGlzLl9jYW5jZWxUYXNrWlMub25DYW5jZWxUYXNrKHRoaXMuX2NhbmNlbFRhc2tEbGd0LHRoaXMuX2NhbmNlbFRhc2tDdXJyWm9uZSx0LGUpO2Vsc2V7aWYoIWUuY2FuY2VsRm4pdGhyb3cgRXJyb3IoIlRhc2sgaXMgbm90IGNhbmNlbGFibGUiKTtuPWUuY2FuY2VsRm4oZSl9cmV0dXJuIG59LHQucHJvdG90eXBlLmhhc1Rhc2s9ZnVuY3Rpb24odCxlKXt0cnl7dGhpcy5faGFzVGFza1pTJiZ0aGlzLl9oYXNUYXNrWlMub25IYXNUYXNrKHRoaXMuX2hhc1Rhc2tEbGd0LHRoaXMuX2hhc1Rhc2tDdXJyWm9uZSx0LGUpfWNhdGNoKGUpe3RoaXMuaGFuZGxlRXJyb3IodCxlKX19LHQucHJvdG90eXBlLl91cGRhdGVUYXNrQ291bnQ9ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzLl90YXNrQ291bnRzLG89blt0XSxpPW5bdF09bytlO2lmKGk8MCl0aHJvdyBuZXcgRXJyb3IoIk1vcmUgdGFza3MgZXhlY3V0ZWQgdGhlbiB3ZXJlIHNjaGVkdWxlZC4iKTswIT1vJiYwIT1pfHx0aGlzLmhhc1Rhc2sodGhpcy56b25lLHttaWNyb1Rhc2s6bi5taWNyb1Rhc2s+MCxtYWNyb1Rhc2s6bi5tYWNyb1Rhc2s+MCxldmVudFRhc2s6bi5ldmVudFRhc2s+MCxjaGFuZ2U6dH0pfSx0fSkoKSxwPShmdW5jdGlvbigpe2Z1bmN0aW9uIGUobixvLGksYSxyLHMpe2lmKHRoaXMuX3pvbmU9bnVsbCx0aGlzLnJ1bkNvdW50PTAsdGhpcy5fem9uZURlbGVnYXRlcz1udWxsLHRoaXMuX3N0YXRlPSJub3RTY2hlZHVsZWQiLHRoaXMudHlwZT1uLHRoaXMuc291cmNlPW8sdGhpcy5kYXRhPWEsdGhpcy5zY2hlZHVsZUZuPXIsdGhpcy5jYW5jZWxGbj1zLCFpKXRocm93IG5ldyBFcnJvcigiY2FsbGJhY2sgaXMgbm90IGRlZmluZWQiKTt0aGlzLmNhbGxiYWNrPWk7dmFyIGw9dGhpczt0aGlzLmludm9rZT1uPT09UyYmYSYmYS51c2VHP2UuaW52b2tlVGFzazpmdW5jdGlvbigpe3JldHVybiBlLmludm9rZVRhc2suY2FsbCh0LGwsdGhpcyxhcmd1bWVudHMpfX1yZXR1cm4gZS5pbnZva2VUYXNrPWZ1bmN0aW9uKHQsZSxuKXt0fHwodD10aGlzKSxUKys7dHJ5e3JldHVybiB0LnJ1bkNvdW50KyssdC56b25lLnJ1blRhc2sodCxlLG4pfWZpbmFsbHl7MT09VCYmeSgpLFQtLX19LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwiem9uZSIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl96b25lfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwic3RhdGUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc3RhdGV9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksZS5wcm90b3R5cGUuY2FuY2VsU2NoZWR1bGVSZXF1ZXN0PWZ1bmN0aW9uKCl7dGhpcy5fdHJhbnNpdGlvblRvKEMsTSl9LGUucHJvdG90eXBlLl90cmFuc2l0aW9uVG89ZnVuY3Rpb24odCxlLG4pe2lmKHRoaXMuX3N0YXRlIT09ZSYmdGhpcy5fc3RhdGUhPT1uKXRocm93IG5ldyBFcnJvcih0aGlzLnR5cGUrIiAnIit0aGlzLnNvdXJjZSsiJzogY2FuIG5vdCB0cmFuc2l0aW9uIHRvICciK3QrIicsIGV4cGVjdGluZyBzdGF0ZSAnIitlKyInIisobj8iIG9yICciK24rIiciOiIiKSsiLCB3YXMgJyIrdGhpcy5fc3RhdGUrIicuIik7dGhpcy5fc3RhdGU9dCx0PT1DJiYodGhpcy5fem9uZURlbGVnYXRlcz1udWxsKX0sZS5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kYXRhJiZ2b2lkIDAhPT10aGlzLmRhdGEuaGFuZGxlSWQ/dGhpcy5kYXRhLmhhbmRsZUlkLnRvU3RyaW5nKCk6T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHRoaXMpfSxlLnByb3RvdHlwZS50b0pTT049ZnVuY3Rpb24oKXtyZXR1cm57dHlwZTp0aGlzLnR5cGUsc3RhdGU6dGhpcy5zdGF0ZSxzb3VyY2U6dGhpcy5zb3VyY2Usem9uZTp0aGlzLnpvbmUubmFtZSxydW5Db3VudDp0aGlzLnJ1bkNvdW50fX0sZX0pKCksbT1hKCJzZXRUaW1lb3V0IiksZj1hKCJQcm9taXNlIiksdT1hKCJ0aGVuIiksZz1bXSxoPSExO2Z1bmN0aW9uIGIoZSl7aWYoMD09PVQmJjA9PT1nLmxlbmd0aClpZihsfHx0W2ZdJiYobD10W2ZdLnJlc29sdmUoMCkpLGwpe3ZhciBuPWxbdV07bnx8KG49bC50aGVuKSxuLmNhbGwobCx5KX1lbHNlIHRbbV0oeSwwKTtlJiZnLnB1c2goZSl9ZnVuY3Rpb24geSgpe2lmKCFoKXtmb3IoaD0hMDtnLmxlbmd0aDspe3ZhciB0PWc7Zz1bXTtmb3IodmFyIGU9MDtlPHQubGVuZ3RoO2UrKyl7dmFyIG49dFtlXTt0cnl7bi56b25lLnJ1blRhc2sobixudWxsLG51bGwpfWNhdGNoKHQpe1Iub25VbmhhbmRsZWRFcnJvcih0KX19fVIubWljcm90YXNrRHJhaW5Eb25lKCksaD0hMX19dmFyIF89e25hbWU6Ik5PIFpPTkUifSxDPSJub3RTY2hlZHVsZWQiLE09InNjaGVkdWxpbmciLHY9InNjaGVkdWxlZCIseD0icnVubmluZyIsTz0iY2FuY2VsaW5nIixQPSJ1bmtub3duIix3PSJtaWNyb1Rhc2siLGs9Im1hY3JvVGFzayIsUz0iZXZlbnRUYXNrIixEPXt9LFI9e3N5bWJvbDphLGN1cnJlbnRab25lRnJhbWU6ZnVuY3Rpb24oKXtyZXR1cm4gRX0sb25VbmhhbmRsZWRFcnJvcjpOLG1pY3JvdGFza0RyYWluRG9uZTpOLHNjaGVkdWxlTWljcm9UYXNrOmIsc2hvd1VuY2F1Z2h0RXJyb3I6ZnVuY3Rpb24oKXtyZXR1cm4hc1thKCJpZ25vcmVDb25zb2xlRXJyb3JVbmNhdWdodEVycm9yIildfSxwYXRjaEV2ZW50VGFyZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuW119LHBhdGNoT25Qcm9wZXJ0aWVzOk4scGF0Y2hNZXRob2Q6ZnVuY3Rpb24oKXtyZXR1cm4gTn0sYmluZEFyZ3VtZW50czpmdW5jdGlvbigpe3JldHVybltdfSxwYXRjaFRoZW46ZnVuY3Rpb24oKXtyZXR1cm4gTn0scGF0Y2hNYWNyb1Rhc2s6ZnVuY3Rpb24oKXtyZXR1cm4gTn0scGF0Y2hFdmVudFByb3RvdHlwZTpmdW5jdGlvbigpe3JldHVybiBOfSxpc0lFT3JFZGdlOmZ1bmN0aW9uKCl7cmV0dXJuITF9LGdldEdsb2JhbE9iamVjdHM6ZnVuY3Rpb24oKXt9LE9iamVjdERlZmluZVByb3BlcnR5OmZ1bmN0aW9uKCl7cmV0dXJuIE59LE9iamVjdEdldE93blByb3BlcnR5RGVzY3JpcHRvcjpmdW5jdGlvbigpe30sT2JqZWN0Q3JlYXRlOmZ1bmN0aW9uKCl7fSxBcnJheVNsaWNlOmZ1bmN0aW9uKCl7cmV0dXJuW119LHBhdGNoQ2xhc3M6ZnVuY3Rpb24oKXtyZXR1cm4gTn0sd3JhcFdpdGhDdXJyZW50Wm9uZTpmdW5jdGlvbigpe3JldHVybiBOfSxmaWx0ZXJQcm9wZXJ0aWVzOmZ1bmN0aW9uKCl7cmV0dXJuW119LGF0dGFjaE9yaWdpblRvUGF0Y2hlZDpmdW5jdGlvbigpe3JldHVybiBOfSxfcmVkZWZpbmVQcm9wZXJ0eTpmdW5jdGlvbigpe3JldHVybiBOfSxwYXRjaENhbGxiYWNrczpmdW5jdGlvbigpe3JldHVybiBOfX0sRT17cGFyZW50Om51bGwsem9uZTpuZXcgcyhudWxsLG51bGwpfSxBPW51bGwsVD0wO2Z1bmN0aW9uIE4oKXt9bygiWm9uZSIsIlpvbmUiKSx0LlpvbmU9c30pKCJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93JiZ3aW5kb3d8fCJ1bmRlZmluZWQiIT10eXBlb2Ygc2VsZiYmc2VsZnx8X08pOwovKioKICAgICAgICAgKiBAbGljZW5zZQogICAgICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgICAgICoKICAgICAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAgICAgKi8KdmFyIHQ9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcixlPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSxuPU9iamVjdC5nZXRQcm90b3R5cGVPZixvPU9iamVjdC5jcmVhdGUsaT1BcnJheS5wcm90b3R5cGUuc2xpY2UsYT0iYWRkRXZlbnRMaXN0ZW5lciIscj0icmVtb3ZlRXZlbnRMaXN0ZW5lciIscz1ab25lLl9fc3ltYm9sX18oYSksbD1ab25lLl9fc3ltYm9sX18ociksYz0idHJ1ZSIsZD0iZmFsc2UiLHA9Wm9uZS5fX3N5bWJvbF9fKCIiKTtmdW5jdGlvbiBtKHQsZSl7cmV0dXJuIFpvbmUuY3VycmVudC53cmFwKHQsZSl9ZnVuY3Rpb24gZih0LGUsbixvLGkpe3JldHVybiBab25lLmN1cnJlbnQuc2NoZWR1bGVNYWNyb1Rhc2sodCxlLG4sbyxpKX12YXIgdT1ab25lLl9fc3ltYm9sX18sZz0idW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdyxoPWc/d2luZG93OnZvaWQgMCxiPWcmJmh8fCJvYmplY3QiPT10eXBlb2Ygc2VsZiYmc2VsZnx8X08seT0icmVtb3ZlQXR0cmlidXRlIixfPVtudWxsXTtmdW5jdGlvbiBDKHQsZSl7Zm9yKHZhciBuPXQubGVuZ3RoLTE7bj49MDtuLS0pImZ1bmN0aW9uIj09dHlwZW9mIHRbbl0mJih0W25dPW0odFtuXSxlKyJfIituKSk7cmV0dXJuIHR9ZnVuY3Rpb24gTShlLG4pe2Zvcih2YXIgbz1lLmNvbnN0cnVjdG9yLm5hbWUsaT1mdW5jdGlvbihpKXt2YXIgYT1uW2ldLHI9ZVthXTtpZihyKXtpZighdih0KGUsYSkpKXJldHVybiJjb250aW51ZSI7ZVthXT0oZnVuY3Rpb24odCl7dmFyIGU9ZnVuY3Rpb24oKXtyZXR1cm4gdC5hcHBseSh0aGlzLEMoYXJndW1lbnRzLG8rIi4iK2EpKX07cmV0dXJuIHooZSx0KSxlfSkocil9fSxhPTA7YTxuLmxlbmd0aDthKyspaShhKX1mdW5jdGlvbiB2KHQpe3JldHVybiF0fHwhMSE9PXQud3JpdGFibGUmJiEoImZ1bmN0aW9uIj09dHlwZW9mIHQuZ2V0JiZ2b2lkIDA9PT10LnNldCl9dmFyIHg9InVuZGVmaW5lZCIhPXR5cGVvZiBXb3JrZXJHbG9iYWxTY29wZSYmc2VsZiBpbnN0YW5jZW9mIFdvcmtlckdsb2JhbFNjb3BlLE89ISgibnciaW4gYikmJnZvaWQgMCE9PWIucHJvY2VzcyYmIltvYmplY3QgcHJvY2Vzc10iPT09e30udG9TdHJpbmcuY2FsbChiLnByb2Nlc3MpLFA9IU8mJiF4JiYhKCFnfHwhaC5IVE1MRWxlbWVudCksdz12b2lkIDAhPT1iLnByb2Nlc3MmJiJbb2JqZWN0IHByb2Nlc3NdIj09PXt9LnRvU3RyaW5nLmNhbGwoYi5wcm9jZXNzKSYmIXgmJiEoIWd8fCFoLkhUTUxFbGVtZW50KSxrPXt9LFM9ZnVuY3Rpb24odCl7aWYodD10fHxiLmV2ZW50KXt2YXIgZT1rW3QudHlwZV07ZXx8KGU9a1t0LnR5cGVdPXUoIk9OX1BST1BFUlRZIit0LnR5cGUpKTt2YXIgbixvPXRoaXN8fHQudGFyZ2V0fHxiLGk9b1tlXTtyZXR1cm4gUCYmbz09PWgmJiJlcnJvciI9PT10LnR5cGU/ITA9PT0obj1pJiZpLmNhbGwodGhpcyx0Lm1lc3NhZ2UsdC5maWxlbmFtZSx0LmxpbmVubyx0LmNvbG5vLHQuZXJyb3IpKSYmdC5wcmV2ZW50RGVmYXVsdCgpOm51bGw9PShuPWkmJmkuYXBwbHkodGhpcyxhcmd1bWVudHMpKXx8bnx8dC5wcmV2ZW50RGVmYXVsdCgpLG59fTtmdW5jdGlvbiBEKG4sbyxpKXt2YXIgYT10KG4sbyk7aWYoIWEmJmkmJnQoaSxvKSYmKGE9e2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksYSYmYS5jb25maWd1cmFibGUpe3ZhciByPXUoIm9uIitvKyJwYXRjaGVkIik7aWYoIW4uaGFzT3duUHJvcGVydHkocil8fCFuW3JdKXtkZWxldGUgYS53cml0YWJsZSxkZWxldGUgYS52YWx1ZTt2YXIgcz1hLmdldCxsPWEuc2V0LGM9by5zdWJzdHIoMiksZD1rW2NdO2R8fChkPWtbY109dSgiT05fUFJPUEVSVFkiK2MpKSxhLnNldD1mdW5jdGlvbih0KXt2YXIgZT10aGlzO2V8fG4hPT1ifHwoZT1iKSxlJiYoZVtkXSYmZS5yZW1vdmVFdmVudExpc3RlbmVyKGMsUyksbCYmbC5hcHBseShlLF8pLCJmdW5jdGlvbiI9PXR5cGVvZiB0PyhlW2RdPXQsZS5hZGRFdmVudExpc3RlbmVyKGMsUywhMSkpOmVbZF09bnVsbCl9LGEuZ2V0PWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcztpZih0fHxuIT09Ynx8KHQ9YiksIXQpcmV0dXJuIG51bGw7dmFyIGU9dFtkXTtpZihlKXJldHVybiBlO2lmKHMpe3ZhciBpPXMmJnMuY2FsbCh0aGlzKTtpZihpKXJldHVybiBhLnNldC5jYWxsKHRoaXMsaSksImZ1bmN0aW9uIj09dHlwZW9mIHRbeV0mJnQucmVtb3ZlQXR0cmlidXRlKG8pLGl9cmV0dXJuIG51bGx9LGUobixvLGEpLG5bcl09ITB9fX1mdW5jdGlvbiBSKHQsZSxuKXtpZihlKWZvcih2YXIgbz0wO288ZS5sZW5ndGg7bysrKUQodCwib24iK2Vbb10sbik7ZWxzZXt2YXIgaT1bXTtmb3IodmFyIGEgaW4gdCkib24iPT1hLnN1YnN0cigwLDIpJiZpLnB1c2goYSk7Zm9yKHZhciByPTA7cjxpLmxlbmd0aDtyKyspRCh0LGlbcl0sbil9fXZhciBFPXUoIm9yaWdpbmFsSW5zdGFuY2UiKTtmdW5jdGlvbiBBKHQpe3ZhciBuPWJbdF07aWYobil7Ylt1KHQpXT1uLGJbdF09ZnVuY3Rpb24oKXt2YXIgZT1DKGFyZ3VtZW50cyx0KTtzd2l0Y2goZS5sZW5ndGgpe2Nhc2UgMDp0aGlzW0VdPW5ldyBuO2JyZWFrO2Nhc2UgMTp0aGlzW0VdPW5ldyBuKGVbMF0pO2JyZWFrO2Nhc2UgMjp0aGlzW0VdPW5ldyBuKGVbMF0sZVsxXSk7YnJlYWs7Y2FzZSAzOnRoaXNbRV09bmV3IG4oZVswXSxlWzFdLGVbMl0pO2JyZWFrO2Nhc2UgNDp0aGlzW0VdPW5ldyBuKGVbMF0sZVsxXSxlWzJdLGVbM10pO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJBcmcgbGlzdCB0b28gbG9uZy4iKX19LHooYlt0XSxuKTt2YXIgbyxpPW5ldyBuKChmdW5jdGlvbigpe30pKTtmb3IobyBpbiBpKSJYTUxIdHRwUmVxdWVzdCI9PT10JiYicmVzcG9uc2VCbG9iIj09PW98fChmdW5jdGlvbihuKXsiZnVuY3Rpb24iPT10eXBlb2YgaVtuXT9iW3RdLnByb3RvdHlwZVtuXT1mdW5jdGlvbigpe3JldHVybiB0aGlzW0VdW25dLmFwcGx5KHRoaXNbRV0sYXJndW1lbnRzKX06ZShiW3RdLnByb3RvdHlwZSxuLHtzZXQ6ZnVuY3Rpb24oZSl7ImZ1bmN0aW9uIj09dHlwZW9mIGU/KHRoaXNbRV1bbl09bShlLHQrIi4iK24pLHoodGhpc1tFXVtuXSxlKSk6dGhpc1tFXVtuXT1lfSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc1tFXVtuXX19KX0pKG8pO2ZvcihvIGluIG4pInByb3RvdHlwZSIhPT1vJiZuLmhhc093blByb3BlcnR5KG8pJiYoYlt0XVtvXT1uW29dKX19ZnVuY3Rpb24gVChlLG8saSl7Zm9yKHZhciBhPWU7YSYmIWEuaGFzT3duUHJvcGVydHkobyk7KWE9bihhKTshYSYmZVtvXSYmKGE9ZSk7dmFyIHI9dShvKSxzPW51bGw7aWYoYSYmKCEocz1hW3JdKXx8IWEuaGFzT3duUHJvcGVydHkocikpJiYocz1hW3JdPWFbb10sdihhJiZ0KGEsbykpKSl7dmFyIGw9aShzLHIsbyk7YVtvXT1mdW5jdGlvbigpe3JldHVybiBsKHRoaXMsYXJndW1lbnRzKX0seihhW29dLHMpfXJldHVybiBzfWZ1bmN0aW9uIE4odCxlLG4pe3ZhciBvPW51bGw7ZnVuY3Rpb24gaSh0KXt2YXIgZT10LmRhdGE7cmV0dXJuIGUuYXJnc1tlLmNiSWR4XT1mdW5jdGlvbigpe3QuaW52b2tlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sby5hcHBseShlLnRhcmdldCxlLmFyZ3MpLHR9bz1UKHQsZSwoZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKGUsbyl7dmFyIGE9bihlLG8pO3JldHVybiBhLmNiSWR4Pj0wJiYiZnVuY3Rpb24iPT10eXBlb2Ygb1thLmNiSWR4XT9mKGEubmFtZSxvW2EuY2JJZHhdLGEsaSk6dC5hcHBseShlLG8pfX0pKX1mdW5jdGlvbiB6KHQsZSl7dFt1KCJPcmlnaW5hbERlbGVnYXRlIildPWV9dmFyIEk9ITEsSD0hMTtmdW5jdGlvbiBGKCl7dHJ5e3ZhciB0PWgubmF2aWdhdG9yLnVzZXJBZ2VudDtpZigtMSE9PXQuaW5kZXhPZigiTVNJRSAiKXx8LTEhPT10LmluZGV4T2YoIlRyaWRlbnQvIikpcmV0dXJuITB9Y2F0Y2godCl7fXJldHVybiExfWZ1bmN0aW9uIEwoKXtpZihJKXJldHVybiBIO0k9ITA7dHJ5e3ZhciB0PWgubmF2aWdhdG9yLnVzZXJBZ2VudDstMT09PXQuaW5kZXhPZigiTVNJRSAiKSYmLTE9PT10LmluZGV4T2YoIlRyaWRlbnQvIikmJi0xPT09dC5pbmRleE9mKCJFZGdlLyIpfHwoSD0hMCl9Y2F0Y2godCl7fXJldHVybiBIfQovKioKICAgICAgICAgKiBAbGljZW5zZQogICAgICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgICAgICoKICAgICAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAgICAgKi9ab25lLl9fbG9hZF9wYXRjaCgiWm9uZUF3YXJlUHJvbWlzZSIsKGZ1bmN0aW9uKHQsZSxuKXt2YXIgbz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLGk9T2JqZWN0LmRlZmluZVByb3BlcnR5O2Z1bmN0aW9uIGEodCl7aWYodCYmdC50b1N0cmluZz09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcpe3ZhciBlPXQuY29uc3RydWN0b3ImJnQuY29uc3RydWN0b3IubmFtZTtyZXR1cm4oZXx8IiIpKyI6ICIrSlNPTi5zdHJpbmdpZnkodCl9cmV0dXJuIHQ/dC50b1N0cmluZygpOk9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KX12YXIgcj1uLnN5bWJvbCxzPVtdLGw9ITA9PT10W3IoIkRJU0FCTEVfV1JBUFBJTkdfVU5DQVVHSFRfUFJPTUlTRV9SRUpFQ1RJT04iKV0sYz1yKCJQcm9taXNlIiksZD1yKCJ0aGVuIikscD0iX19jcmVhdGlvblRyYWNlX18iO24ub25VbmhhbmRsZWRFcnJvcj1mdW5jdGlvbih0KXtpZihuLnNob3dVbmNhdWdodEVycm9yKCkpe3ZhciBlPXQmJnQucmVqZWN0aW9uO2U/Y29uc29sZS5lcnJvcigiVW5oYW5kbGVkIFByb21pc2UgcmVqZWN0aW9uOiIsZSBpbnN0YW5jZW9mIEVycm9yP2UubWVzc2FnZTplLCI7IFpvbmU6Iix0LnpvbmUubmFtZSwiOyBUYXNrOiIsdC50YXNrJiZ0LnRhc2suc291cmNlLCI7IFZhbHVlOiIsZSxlIGluc3RhbmNlb2YgRXJyb3I/ZS5zdGFjazp2b2lkIDApOmNvbnNvbGUuZXJyb3IodCl9fSxuLm1pY3JvdGFza0RyYWluRG9uZT1mdW5jdGlvbigpe2Zvcih2YXIgdD1mdW5jdGlvbigpe3ZhciB0PXMuc2hpZnQoKTt0cnl7dC56b25lLnJ1bkd1YXJkZWQoKGZ1bmN0aW9uKCl7aWYodC50aHJvd09yaWdpbmFsKXRocm93IHQucmVqZWN0aW9uO3Rocm93IHR9KSl9Y2F0Y2godCl7Zih0KX19O3MubGVuZ3RoOyl0KCl9O3ZhciBtPXIoInVuaGFuZGxlZFByb21pc2VSZWplY3Rpb25IYW5kbGVyIik7ZnVuY3Rpb24gZih0KXtuLm9uVW5oYW5kbGVkRXJyb3IodCk7dHJ5e3ZhciBvPWVbbV07ImZ1bmN0aW9uIj09dHlwZW9mIG8mJm8uY2FsbCh0aGlzLHQpfWNhdGNoKHQpe319ZnVuY3Rpb24gdSh0KXtyZXR1cm4gdCYmdC50aGVufWZ1bmN0aW9uIGcodCl7cmV0dXJuIHR9ZnVuY3Rpb24gaCh0KXtyZXR1cm4gRi5yZWplY3QodCl9dmFyIGI9cigic3RhdGUiKSx5PXIoInZhbHVlIiksXz1yKCJmaW5hbGx5IiksQz1yKCJwYXJlbnRQcm9taXNlVmFsdWUiKSxNPXIoInBhcmVudFByb21pc2VTdGF0ZSIpLHY9IlByb21pc2UudGhlbiIseD1udWxsLE89ITAsUD0hMSx3PTA7ZnVuY3Rpb24gayh0LGUpe3JldHVybiBmdW5jdGlvbihuKXt0cnl7RSh0LGUsbil9Y2F0Y2goZSl7RSh0LCExLGUpfX19dmFyIFM9ZnVuY3Rpb24oKXt2YXIgdD0hMTtyZXR1cm4gZnVuY3Rpb24gZShuKXtyZXR1cm4gZnVuY3Rpb24oKXt0fHwodD0hMCxuLmFwcGx5KG51bGwsYXJndW1lbnRzKSl9fX0sRD0iUHJvbWlzZSByZXNvbHZlZCB3aXRoIGl0c2VsZiIsUj1yKCJjdXJyZW50VGFza1RyYWNlIik7ZnVuY3Rpb24gRSh0LG8scil7dmFyIGM9UygpO2lmKHQ9PT1yKXRocm93IG5ldyBUeXBlRXJyb3IoRCk7aWYodFtiXT09PXgpe3ZhciBkPW51bGw7dHJ5eyJvYmplY3QiIT10eXBlb2YgciYmImZ1bmN0aW9uIiE9dHlwZW9mIHJ8fChkPXImJnIudGhlbil9Y2F0Y2goZSl7cmV0dXJuIGMoKGZ1bmN0aW9uKCl7RSh0LCExLGUpfSkpKCksdH1pZihvIT09UCYmciBpbnN0YW5jZW9mIEYmJnIuaGFzT3duUHJvcGVydHkoYikmJnIuaGFzT3duUHJvcGVydHkoeSkmJnJbYl0hPT14KU4ociksRSh0LHJbYl0sclt5XSk7ZWxzZSBpZihvIT09UCYmImZ1bmN0aW9uIj09dHlwZW9mIGQpdHJ5e2QuY2FsbChyLGMoayh0LG8pKSxjKGsodCwhMSkpKX1jYXRjaChlKXtjKChmdW5jdGlvbigpe0UodCwhMSxlKX0pKSgpfWVsc2V7dFtiXT1vO3ZhciBtPXRbeV07aWYodFt5XT1yLHRbX109PT1fJiZvPT09TyYmKHRbYl09dFtNXSx0W3ldPXRbQ10pLG89PT1QJiZyIGluc3RhbmNlb2YgRXJyb3Ipe3ZhciBmPWUuY3VycmVudFRhc2smJmUuY3VycmVudFRhc2suZGF0YSYmZS5jdXJyZW50VGFzay5kYXRhW3BdO2YmJmkocixSLHtjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMSx3cml0YWJsZTohMCx2YWx1ZTpmfSl9Zm9yKHZhciB1PTA7dTxtLmxlbmd0aDspeih0LG1bdSsrXSxtW3UrK10sbVt1KytdLG1bdSsrXSk7aWYoMD09bS5sZW5ndGgmJm89PVApe3RbYl09dzt2YXIgZz1yO3RyeXt0aHJvdyBuZXcgRXJyb3IoIlVuY2F1Z2h0IChpbiBwcm9taXNlKTogIithKHIpKyhyJiZyLnN0YWNrPyJcbiIrci5zdGFjazoiIikpfWNhdGNoKHQpe2c9dH1sJiYoZy50aHJvd09yaWdpbmFsPSEwKSxnLnJlamVjdGlvbj1yLGcucHJvbWlzZT10LGcuem9uZT1lLmN1cnJlbnQsZy50YXNrPWUuY3VycmVudFRhc2sscy5wdXNoKGcpLG4uc2NoZWR1bGVNaWNyb1Rhc2soKX19fXJldHVybiB0fXZhciBBPXIoInJlamVjdGlvbkhhbmRsZWRIYW5kbGVyIik7ZnVuY3Rpb24gTih0KXtpZih0W2JdPT09dyl7dHJ5e3ZhciBuPWVbQV07biYmImZ1bmN0aW9uIj09dHlwZW9mIG4mJm4uY2FsbCh0aGlzLHtyZWplY3Rpb246dFt5XSxwcm9taXNlOnR9KX1jYXRjaCh0KXt9dFtiXT1QO2Zvcih2YXIgbz0wO288cy5sZW5ndGg7bysrKXQ9PT1zW29dLnByb21pc2UmJnMuc3BsaWNlKG8sMSl9fWZ1bmN0aW9uIHoodCxlLG4sbyxpKXtOKHQpO3ZhciBhPXRbYl0scj1hPyJmdW5jdGlvbiI9PXR5cGVvZiBvP286ZzoiZnVuY3Rpb24iPT10eXBlb2YgaT9pOmg7ZS5zY2hlZHVsZU1pY3JvVGFzayh2LChmdW5jdGlvbigpe3RyeXt2YXIgbz10W3ldLGk9ISFuJiZfPT09bltfXTtpJiYobltDXT1vLG5bTV09YSk7dmFyIHM9ZS5ydW4ocix2b2lkIDAsaSYmciE9PWgmJnIhPT1nP1tdOltvXSk7RShuLCEwLHMpfWNhdGNoKHQpe0UobiwhMSx0KX19KSxuKX12YXIgST0iZnVuY3Rpb24gWm9uZUF3YXJlUHJvbWlzZSgpIHsgW25hdGl2ZSBjb2RlXSB9IixIPWZ1bmN0aW9uKCl7fSxGPShmdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7dmFyIG49dGhpcztpZighKG4gaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgRXJyb3IoIk11c3QgYmUgYW4gaW5zdGFuY2VvZiBQcm9taXNlLiIpO25bYl09eCxuW3ldPVtdO3RyeXtlJiZlKGsobixPKSxrKG4sUCkpfWNhdGNoKHQpe0UobiwhMSx0KX19cmV0dXJuIHQudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gSX0sdC5yZXNvbHZlPWZ1bmN0aW9uKHQpe3JldHVybiBFKG5ldyB0aGlzKG51bGwpLE8sdCl9LHQucmVqZWN0PWZ1bmN0aW9uKHQpe3JldHVybiBFKG5ldyB0aGlzKG51bGwpLFAsdCl9LHQucmFjZT1mdW5jdGlvbih0KXt2YXIgZSxuLG89bmV3IHRoaXMoKGZ1bmN0aW9uKHQsbyl7ZT10LG49b30pKTtmdW5jdGlvbiBpKHQpe2UodCl9ZnVuY3Rpb24gYSh0KXtuKHQpfWZvcih2YXIgcj0wLHM9dDtyPHMubGVuZ3RoO3IrKyl7dmFyIGw9c1tyXTt1KGwpfHwobD10aGlzLnJlc29sdmUobCkpLGwudGhlbihpLGEpfXJldHVybiBvfSx0LmFsbD1mdW5jdGlvbihlKXtyZXR1cm4gdC5hbGxXaXRoQ2FsbGJhY2soZSl9LHQuYWxsU2V0dGxlZD1mdW5jdGlvbihlKXtyZXR1cm4odGhpcyYmdGhpcy5wcm90b3R5cGUgaW5zdGFuY2VvZiB0P3RoaXM6dCkuYWxsV2l0aENhbGxiYWNrKGUse3RoZW5DYWxsYmFjazpmdW5jdGlvbih0KXtyZXR1cm57c3RhdHVzOiJmdWxmaWxsZWQiLHZhbHVlOnR9fSxlcnJvckNhbGxiYWNrOmZ1bmN0aW9uKHQpe3JldHVybntzdGF0dXM6InJlamVjdGVkIixyZWFzb246dH19fSl9LHQuYWxsV2l0aENhbGxiYWNrPWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuLG8saT1uZXcgdGhpcygoZnVuY3Rpb24odCxlKXtuPXQsbz1lfSkpLGE9MixyPTAscz1bXSxsPWZ1bmN0aW9uKHQpe3UodCl8fCh0PWMucmVzb2x2ZSh0KSk7dmFyIGk9cjt0cnl7dC50aGVuKChmdW5jdGlvbih0KXtzW2ldPWU/ZS50aGVuQ2FsbGJhY2sodCk6dCwwPT0tLWEmJm4ocyl9KSwoZnVuY3Rpb24odCl7ZT8oc1tpXT1lLmVycm9yQ2FsbGJhY2sodCksMD09LS1hJiZuKHMpKTpvKHQpfSkpfWNhdGNoKHQpe28odCl9YSsrLHIrK30sYz10aGlzLGQ9MCxwPXQ7ZDxwLmxlbmd0aDtkKyspbChwW2RdKTtyZXR1cm4gMD09KGEtPTIpJiZuKHMpLGl9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSxTeW1ib2wudG9TdHJpbmdUYWcse2dldDpmdW5jdGlvbigpe3JldHVybiJQcm9taXNlIn0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsU3ltYm9sLnNwZWNpZXMse2dldDpmdW5jdGlvbigpe3JldHVybiB0fSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLHQucHJvdG90eXBlLnRoZW49ZnVuY3Rpb24obixvKXt2YXIgaT10aGlzLmNvbnN0cnVjdG9yW1N5bWJvbC5zcGVjaWVzXTtpJiYiZnVuY3Rpb24iPT10eXBlb2YgaXx8KGk9dGhpcy5jb25zdHJ1Y3Rvcnx8dCk7dmFyIGE9bmV3IGkoSCkscj1lLmN1cnJlbnQ7cmV0dXJuIHRoaXNbYl09PXg/dGhpc1t5XS5wdXNoKHIsYSxuLG8pOnoodGhpcyxyLGEsbixvKSxhfSx0LnByb3RvdHlwZS5jYXRjaD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy50aGVuKG51bGwsdCl9LHQucHJvdG90eXBlLmZpbmFsbHk9ZnVuY3Rpb24obil7dmFyIG89dGhpcy5jb25zdHJ1Y3RvcltTeW1ib2wuc3BlY2llc107byYmImZ1bmN0aW9uIj09dHlwZW9mIG98fChvPXQpO3ZhciBpPW5ldyBvKEgpO2lbX109Xzt2YXIgYT1lLmN1cnJlbnQ7cmV0dXJuIHRoaXNbYl09PXg/dGhpc1t5XS5wdXNoKGEsaSxuLG4pOnoodGhpcyxhLGksbixuKSxpfSx0fSkoKTtGLnJlc29sdmU9Ri5yZXNvbHZlLEYucmVqZWN0PUYucmVqZWN0LEYucmFjZT1GLnJhY2UsRi5hbGw9Ri5hbGw7dmFyIEw9dFtjXT10LlByb21pc2U7dC5Qcm9taXNlPUY7dmFyIEI9cigidGhlblBhdGNoZWQiKTtmdW5jdGlvbiBWKHQpe3ZhciBlPXQucHJvdG90eXBlLG49byhlLCJ0aGVuIik7aWYoIW58fCExIT09bi53cml0YWJsZSYmbi5jb25maWd1cmFibGUpe3ZhciBpPWUudGhlbjtlW2RdPWksdC5wcm90b3R5cGUudGhlbj1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXM7cmV0dXJuIG5ldyBGKChmdW5jdGlvbih0LGUpe2kuY2FsbChuLHQsZSl9KSkudGhlbih0LGUpfSx0W0JdPSEwfX1mdW5jdGlvbiBqKHQpe3JldHVybiBmdW5jdGlvbihlLG4pe3ZhciBvPXQuYXBwbHkoZSxuKTtpZihvIGluc3RhbmNlb2YgRilyZXR1cm4gbzt2YXIgaT1vLmNvbnN0cnVjdG9yO3JldHVybiBpW0JdfHxWKGkpLG99fXJldHVybiBuLnBhdGNoVGhlbj1WLEwmJihWKEwpLFQodCwiZmV0Y2giLChmdW5jdGlvbih0KXtyZXR1cm4gaih0KX0pKSksUHJvbWlzZVtlLl9fc3ltYm9sX18oInVuY2F1Z2h0UHJvbWlzZUVycm9ycyIpXT1zLEZ9KSksCi8qKgogICAgICAgICAqIEBsaWNlbnNlCiAgICAgICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAgICAgKgogICAgICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICAgICAqLwpab25lLl9fbG9hZF9wYXRjaCgidG9TdHJpbmciLChmdW5jdGlvbih0KXt2YXIgZT1GdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmcsbj11KCJPcmlnaW5hbERlbGVnYXRlIiksbz11KCJQcm9taXNlIiksaT11KCJFcnJvciIpLGE9ZnVuY3Rpb24gYSgpe2lmKCJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzKXt2YXIgcj10aGlzW25dO2lmKHIpcmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHI/ZS5jYWxsKHIpOk9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChyKTtpZih0aGlzPT09UHJvbWlzZSl7dmFyIHM9dFtvXTtpZihzKXJldHVybiBlLmNhbGwocyl9aWYodGhpcz09PUVycm9yKXt2YXIgbD10W2ldO2lmKGwpcmV0dXJuIGUuY2FsbChsKX19cmV0dXJuIGUuY2FsbCh0aGlzKX07YVtuXT1lLEZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZz1hO3ZhciByPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcscz0iW29iamVjdCBQcm9taXNlXSI7T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBQcm9taXNlJiZ0aGlzIGluc3RhbmNlb2YgUHJvbWlzZT9zOnIuY2FsbCh0aGlzKX19KSk7Ci8qKgogICAgICAgICAqIEBsaWNlbnNlCiAgICAgICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAgICAgKgogICAgICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICAgICAqLwp2YXIgQj0hMTtpZigidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdyl0cnl7dmFyIFY9T2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LCJwYXNzaXZlIix7Z2V0OmZ1bmN0aW9uKCl7Qj0hMH19KTt3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigidGVzdCIsVixWKSx3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigidGVzdCIsVixWKX1jYXRjaCh0KXtCPSExfXZhciBqPXt1c2VHOiEwfSxVPXt9LFc9e30sRz1uZXcgUmVnRXhwKCJeIitwKyIoXFx3KykodHJ1ZXxmYWxzZSkkIiksWT11KCJwcm9wYWdhdGlvblN0b3BwZWQiKTtmdW5jdGlvbiBxKHQsZSl7dmFyIG49KGU/ZSh0KTp0KStkLG89KGU/ZSh0KTp0KStjLGk9cCtuLGE9cCtvO1VbdF09e30sVVt0XVtkXT1pLFVbdF1bY109YX1mdW5jdGlvbiBaKHQsZSxvKXt2YXIgaT1vJiZvLmFkZHx8YSxzPW8mJm8ucm18fHIsbD1vJiZvLmxpc3RlbmVyc3x8ImV2ZW50TGlzdGVuZXJzIixtPW8mJm8ucm1BbGx8fCJyZW1vdmVBbGxMaXN0ZW5lcnMiLGY9dShpKSxnPSIuIitpKyI6IixoPSJwcmVwZW5kTGlzdGVuZXIiLGI9Ii4iK2grIjoiLHk9ZnVuY3Rpb24odCxlLG4pe2lmKCF0LmlzUmVtb3ZlZCl7dmFyIG89dC5jYWxsYmFjazsib2JqZWN0Ij09dHlwZW9mIG8mJm8uaGFuZGxlRXZlbnQmJih0LmNhbGxiYWNrPWZ1bmN0aW9uKHQpe3JldHVybiBvLmhhbmRsZUV2ZW50KHQpfSx0Lm9yaWdpbmFsRGVsZWdhdGU9byksdC5pbnZva2UodCxlLFtuXSk7dmFyIGk9dC5vcHRpb25zO2kmJiJvYmplY3QiPT10eXBlb2YgaSYmaS5vbmNlJiZlW3NdLmNhbGwoZSxuLnR5cGUsdC5vcmlnaW5hbERlbGVnYXRlP3Qub3JpZ2luYWxEZWxlZ2F0ZTp0LmNhbGxiYWNrLGkpfX0sXz1mdW5jdGlvbihlKXtpZihlPWV8fHQuZXZlbnQpe3ZhciBuPXRoaXN8fGUudGFyZ2V0fHx0LG89bltVW2UudHlwZV1bZF1dO2lmKG8paWYoMT09PW8ubGVuZ3RoKXkob1swXSxuLGUpO2Vsc2UgZm9yKHZhciBpPW8uc2xpY2UoKSxhPTA7YTxpLmxlbmd0aCYmKCFlfHwhMCE9PWVbWV0pO2ErKyl5KGlbYV0sbixlKX19LEM9ZnVuY3Rpb24oZSl7aWYoZT1lfHx0LmV2ZW50KXt2YXIgbj10aGlzfHxlLnRhcmdldHx8dCxvPW5bVVtlLnR5cGVdW2NdXTtpZihvKWlmKDE9PT1vLmxlbmd0aCl5KG9bMF0sbixlKTtlbHNlIGZvcih2YXIgaT1vLnNsaWNlKCksYT0wO2E8aS5sZW5ndGgmJighZXx8ITAhPT1lW1ldKTthKyspeShpW2FdLG4sZSl9fTtmdW5jdGlvbiBNKGUsbyl7aWYoIWUpcmV0dXJuITE7dmFyIGE9ITA7byYmdm9pZCAwIT09by51c2VHJiYoYT1vLnVzZUcpO3ZhciByPW8mJm8udmgseT0hMDtvJiZ2b2lkIDAhPT1vLmNoa0R1cCYmKHk9by5jaGtEdXApO3ZhciBNPSExO28mJnZvaWQgMCE9PW8ucnQmJihNPW8ucnQpO2Zvcih2YXIgdj1lO3YmJiF2Lmhhc093blByb3BlcnR5KGkpOyl2PW4odik7aWYoIXYmJmVbaV0mJih2PWUpLCF2KXJldHVybiExO2lmKHZbZl0pcmV0dXJuITE7dmFyIHgsUD1vJiZvLmV2ZW50TmFtZVRvU3RyaW5nLHc9e30saz12W2ZdPXZbaV0sUz12W3UocyldPXZbc10sRD12W3UobCldPXZbbF0sUj12W3UobSldPXZbbV07ZnVuY3Rpb24gRSh0LGUpe3JldHVybiFCJiYib2JqZWN0Ij09dHlwZW9mIHQmJnQ/ISF0LmNhcHR1cmU6QiYmZT8iYm9vbGVhbiI9PXR5cGVvZiB0P3tjYXB0dXJlOnQscGFzc2l2ZTohMH06dD8ib2JqZWN0Ij09dHlwZW9mIHQmJiExIT09dC5wYXNzaXZlP09iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7cGFzc2l2ZTohMH0pOnQ6e3Bhc3NpdmU6ITB9OnR9byYmby5wcmVwZW5kJiYoeD12W3Uoby5wcmVwZW5kKV09dltvLnByZXBlbmRdKTt2YXIgQT1mdW5jdGlvbih0KXtyZXR1cm4geC5jYWxsKHcudGFyZ2V0LHcuZXZlbnROYW1lLHQuaW52b2tlLHcub3B0aW9ucyl9LFQ9YT9mdW5jdGlvbih0KXtpZighdy5pc0V4aXN0aW5nKXJldHVybiBrLmNhbGwody50YXJnZXQsdy5ldmVudE5hbWUsdy5jYXB0dXJlP0M6Xyx3Lm9wdGlvbnMpfTpmdW5jdGlvbih0KXtyZXR1cm4gay5jYWxsKHcudGFyZ2V0LHcuZXZlbnROYW1lLHQuaW52b2tlLHcub3B0aW9ucyl9LE49YT9mdW5jdGlvbih0KXtpZighdC5pc1JlbW92ZWQpe3ZhciBlPVVbdC5ldmVudE5hbWVdLG49dm9pZCAwO2UmJihuPWVbdC5jYXB0dXJlP2M6ZF0pO3ZhciBvPW4mJnQudGFyZ2V0W25dO2lmKG8pZm9yKHZhciBpPTA7aTxvLmxlbmd0aDtpKyspaWYob1tpXT09PXQpe28uc3BsaWNlKGksMSksdC5pc1JlbW92ZWQ9ITAsMD09PW8ubGVuZ3RoJiYodC5hbGxSZW1vdmVkPSEwLHQudGFyZ2V0W25dPW51bGwpO2JyZWFrfX1pZih0LmFsbFJlbW92ZWQpcmV0dXJuIFMuY2FsbCh0LnRhcmdldCx0LmV2ZW50TmFtZSx0LmNhcHR1cmU/QzpfLHQub3B0aW9ucyl9OmZ1bmN0aW9uKHQpe3JldHVybiBTLmNhbGwodC50YXJnZXQsdC5ldmVudE5hbWUsdC5pbnZva2UsdC5vcHRpb25zKX0sST1vJiZvLmRpZmY/by5kaWZmOmZ1bmN0aW9uKHQsZSl7dmFyIG49dHlwZW9mIGU7cmV0dXJuImZ1bmN0aW9uIj09PW4mJnQuY2FsbGJhY2s9PT1lfHwib2JqZWN0Ij09PW4mJnQub3JpZ2luYWxEZWxlZ2F0ZT09PWV9LEg9Wm9uZVt1KCJVTlBBVENIRURfRVZFTlRTIildLEY9dFt1KCJQQVNTSVZFX0VWRU5UUyIpXSxMPWZ1bmN0aW9uKGUsbixpLHMsbCxwKXtyZXR1cm4gdm9pZCAwPT09bCYmKGw9ITEpLHZvaWQgMD09PXAmJihwPSExKSxmdW5jdGlvbigpe3ZhciBtPXRoaXN8fHQsZj1hcmd1bWVudHNbMF07byYmby50cmFuc2ZlckV2ZW50TmFtZSYmKGY9by50cmFuc2ZlckV2ZW50TmFtZShmKSk7dmFyIHU9YXJndW1lbnRzWzFdO2lmKCF1KXJldHVybiBlLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtpZihPJiYidW5jYXVnaHRFeGNlcHRpb24iPT09ZilyZXR1cm4gZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7dmFyIGc9ITE7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHUpe2lmKCF1LmhhbmRsZUV2ZW50KXJldHVybiBlLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtnPSEwfWlmKCFyfHxyKGUsdSxtLGFyZ3VtZW50cykpe3ZhciBoPUImJiEhRiYmLTEhPT1GLmluZGV4T2YoZiksYj1FKGFyZ3VtZW50c1syXSxoKTtpZihIKWZvcih2YXIgXz0wO188SC5sZW5ndGg7XysrKWlmKGY9PT1IW19dKXJldHVybiBoP2UuY2FsbChtLGYsdSxiKTplLmFwcGx5KHRoaXMsYXJndW1lbnRzKTt2YXIgQz0hIWImJigiYm9vbGVhbiI9PXR5cGVvZiBifHxiLmNhcHR1cmUpLE09ISghYnx8Im9iamVjdCIhPXR5cGVvZiBiKSYmYi5vbmNlLHY9Wm9uZS5jdXJyZW50LHg9VVtmXTt4fHwocShmLFApLHg9VVtmXSk7dmFyIGssUz14W0M/YzpkXSxEPW1bU10sUj0hMTtpZihEKXtpZihSPSEwLHkpZm9yKF89MDtfPEQubGVuZ3RoO18rKylpZihJKERbX10sdSkpcmV0dXJufWVsc2UgRD1tW1NdPVtdO3ZhciBBPW0uY29uc3RydWN0b3IubmFtZSxUPVdbQV07VCYmKGs9VFtmXSksa3x8KGs9QStuKyhQP1AoZik6ZikpLHcub3B0aW9ucz1iLE0mJih3Lm9wdGlvbnMub25jZT0hMSksdy50YXJnZXQ9bSx3LmNhcHR1cmU9Qyx3LmV2ZW50TmFtZT1mLHcuaXNFeGlzdGluZz1SO3ZhciBOPWE/ajp2b2lkIDA7TiYmKE4udGFza0RhdGE9dyk7dmFyIHo9di5zY2hlZHVsZUV2ZW50VGFzayhrLHUsTixpLHMpO3JldHVybiB3LnRhcmdldD1udWxsLE4mJihOLnRhc2tEYXRhPW51bGwpLE0mJihiLm9uY2U9ITApLChCfHwiYm9vbGVhbiIhPXR5cGVvZiB6Lm9wdGlvbnMpJiYoei5vcHRpb25zPWIpLHoudGFyZ2V0PW0sei5jYXB0dXJlPUMsei5ldmVudE5hbWU9ZixnJiYoei5vcmlnaW5hbERlbGVnYXRlPXUpLHA/RC51bnNoaWZ0KHopOkQucHVzaCh6KSxsP206dm9pZCAwfX19O3JldHVybiB2W2ldPUwoayxnLFQsTixNKSx4JiYodltoXT1MKHgsYixBLE4sTSwhMCkpLHZbc109ZnVuY3Rpb24oKXt2YXIgZT10aGlzfHx0LG49YXJndW1lbnRzWzBdO28mJm8udHJhbnNmZXJFdmVudE5hbWUmJihuPW8udHJhbnNmZXJFdmVudE5hbWUobikpO3ZhciBpPWFyZ3VtZW50c1syXSxhPSEhaSYmKCJib29sZWFuIj09dHlwZW9mIGl8fGkuY2FwdHVyZSkscz1hcmd1bWVudHNbMV07aWYoIXMpcmV0dXJuIFMuYXBwbHkodGhpcyxhcmd1bWVudHMpO2lmKCFyfHxyKFMscyxlLGFyZ3VtZW50cykpe3ZhciBsLG09VVtuXTttJiYobD1tW2E/YzpkXSk7dmFyIGY9bCYmZVtsXTtpZihmKWZvcih2YXIgdT0wO3U8Zi5sZW5ndGg7dSsrKXt2YXIgZz1mW3VdO2lmKEkoZyxzKSlyZXR1cm4gZi5zcGxpY2UodSwxKSxnLmlzUmVtb3ZlZD0hMCwwPT09Zi5sZW5ndGgmJihnLmFsbFJlbW92ZWQ9ITAsZVtsXT1udWxsLCJzdHJpbmciPT10eXBlb2YgbiYmKGVbcCsiT05fUFJPUEVSVFkiK25dPW51bGwpKSxnLnpvbmUuY2FuY2VsVGFzayhnKSxNP2U6dm9pZCAwfXJldHVybiBTLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19LHZbbF09ZnVuY3Rpb24oKXt2YXIgZT10aGlzfHx0LG49YXJndW1lbnRzWzBdO28mJm8udHJhbnNmZXJFdmVudE5hbWUmJihuPW8udHJhbnNmZXJFdmVudE5hbWUobikpO2Zvcih2YXIgaT1bXSxhPVgoZSxQP1Aobik6bikscj0wO3I8YS5sZW5ndGg7cisrKXt2YXIgcz1hW3JdO2kucHVzaChzLm9yaWdpbmFsRGVsZWdhdGU/cy5vcmlnaW5hbERlbGVnYXRlOnMuY2FsbGJhY2spfXJldHVybiBpfSx2W21dPWZ1bmN0aW9uKCl7dmFyIGU9dGhpc3x8dCxuPWFyZ3VtZW50c1swXTtpZihuKXtvJiZvLnRyYW5zZmVyRXZlbnROYW1lJiYobj1vLnRyYW5zZmVyRXZlbnROYW1lKG4pKTt2YXIgaT1VW25dO2lmKGkpe3ZhciBhPWVbaVtkXV0scj1lW2lbY11dO2lmKGEpe3ZhciBsPWEuc2xpY2UoKTtmb3IodT0wO3U8bC5sZW5ndGg7dSsrKXRoaXNbc10uY2FsbCh0aGlzLG4sKHA9bFt1XSkub3JpZ2luYWxEZWxlZ2F0ZT9wLm9yaWdpbmFsRGVsZWdhdGU6cC5jYWxsYmFjayxwLm9wdGlvbnMpfWlmKHIpZm9yKGw9ci5zbGljZSgpLHU9MDt1PGwubGVuZ3RoO3UrKyl7dmFyIHA7dGhpc1tzXS5jYWxsKHRoaXMsbiwocD1sW3VdKS5vcmlnaW5hbERlbGVnYXRlP3Aub3JpZ2luYWxEZWxlZ2F0ZTpwLmNhbGxiYWNrLHAub3B0aW9ucyl9fX1lbHNle2Zvcih2YXIgZj1PYmplY3Qua2V5cyhlKSx1PTA7dTxmLmxlbmd0aDt1Kyspe3ZhciBnPUcuZXhlYyhmW3VdKSxoPWcmJmdbMV07aCYmInJlbW92ZUxpc3RlbmVyIiE9PWgmJnRoaXNbbV0uY2FsbCh0aGlzLGgpfXRoaXNbbV0uY2FsbCh0aGlzLCJyZW1vdmVMaXN0ZW5lciIpfWlmKE0pcmV0dXJuIHRoaXN9LHoodltpXSxrKSx6KHZbc10sUyksUiYmeih2W21dLFIpLEQmJnoodltsXSxEKSwhMH1mb3IodmFyIHY9W10seD0wO3g8ZS5sZW5ndGg7eCsrKXZbeF09TShlW3hdLG8pO3JldHVybiB2fWZ1bmN0aW9uIFgodCxlKXtpZighZSl7dmFyIG49W107Zm9yKHZhciBvIGluIHQpe3ZhciBpPUcuZXhlYyhvKSxhPWkmJmlbMV07aWYoYSYmKCFlfHxhPT09ZSkpe3ZhciByPXRbb107aWYocilmb3IodmFyIHM9MDtzPHIubGVuZ3RoO3MrKyluLnB1c2gocltzXSl9fXJldHVybiBufXZhciBsPVVbZV07bHx8KHEoZSksbD1VW2VdKTt2YXIgcD10W2xbZF1dLG09dFtsW2NdXTtyZXR1cm4gcD9tP3AuY29uY2F0KG0pOnAuc2xpY2UoKTptP20uc2xpY2UoKTpbXX1mdW5jdGlvbiBLKHQsZSl7dmFyIG49dC5FdmVudDtuJiZuLnByb3RvdHlwZSYmZS5wYXRjaE1ldGhvZChuLnByb3RvdHlwZSwic3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uIiwoZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKGUsbil7ZVtZXT0hMCx0JiZ0LmFwcGx5KGUsbil9fSkpfQovKioKICAgICAgICAgKiBAbGljZW5zZQogICAgICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgICAgICoKICAgICAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAgICAgKi9mdW5jdGlvbiBKKHQsZSxuLG8saSl7dmFyIGE9Wm9uZS5fX3N5bWJvbF9fKG8pO2lmKCFlW2FdKXt2YXIgcj1lW2FdPWVbb107ZVtvXT1mdW5jdGlvbihhLHMsbCl7cmV0dXJuIHMmJnMucHJvdG90eXBlJiZpLmZvckVhY2goKGZ1bmN0aW9uKGUpe3ZhciBpPW4rIi4iK28rIjo6IitlLGE9cy5wcm90b3R5cGU7aWYoYS5oYXNPd25Qcm9wZXJ0eShlKSl7dmFyIHI9dC5PYmplY3RHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoYSxlKTtyJiZyLnZhbHVlPyhyLnZhbHVlPXQud3JhcFdpdGhDdXJyZW50Wm9uZShyLnZhbHVlLGkpLHQuX3JlZGVmaW5lUHJvcGVydHkocy5wcm90b3R5cGUsZSxyKSk6YVtlXSYmKGFbZV09dC53cmFwV2l0aEN1cnJlbnRab25lKGFbZV0saSkpfWVsc2UgYVtlXSYmKGFbZV09dC53cmFwV2l0aEN1cnJlbnRab25lKGFbZV0saSkpfSkpLHIuY2FsbChlLGEscyxsKX0sdC5hdHRhY2hPcmlnaW5Ub1BhdGNoZWQoZVtvXSxyKX19Ci8qKgogICAgICAgICAqIEBsaWNlbnNlCiAgICAgICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAgICAgKgogICAgICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICAgICAqL3ZhciBRLCQsdHQsZXQsbnQsb3Q9WyJhYnNvbHV0ZWRldmljZW9yaWVudGF0aW9uIiwiYWZ0ZXJpbnB1dCIsImFmdGVycHJpbnQiLCJhcHBpbnN0YWxsZWQiLCJiZWZvcmVpbnN0YWxscHJvbXB0IiwiYmVmb3JlcHJpbnQiLCJiZWZvcmV1bmxvYWQiLCJkZXZpY2VsaWdodCIsImRldmljZW1vdGlvbiIsImRldmljZW9yaWVudGF0aW9uIiwiZGV2aWNlb3JpZW50YXRpb25hYnNvbHV0ZSIsImRldmljZXByb3hpbWl0eSIsImhhc2hjaGFuZ2UiLCJsYW5ndWFnZWNoYW5nZSIsIm1lc3NhZ2UiLCJtb3piZWZvcmVwYWludCIsIm9mZmxpbmUiLCJvbmxpbmUiLCJwYWludCIsInBhZ2VzaG93IiwicGFnZWhpZGUiLCJwb3BzdGF0ZSIsInJlamVjdGlvbmhhbmRsZWQiLCJzdG9yYWdlIiwidW5oYW5kbGVkcmVqZWN0aW9uIiwidW5sb2FkIiwidXNlcnByb3hpbWl0eSIsInZyZGlzcGxheWNvbm5lY3RlZCIsInZyZGlzcGxheWRpc2Nvbm5lY3RlZCIsInZyZGlzcGxheXByZXNlbnRjaGFuZ2UiXSxpdD1bImVuY3J5cHRlZCIsIndhaXRpbmdmb3JrZXkiLCJtc25lZWRrZXkiLCJtb3ppbnRlcnJ1cHRiZWdpbiIsIm1vemludGVycnVwdGVuZCJdLGF0PVsibG9hZCJdLHJ0PVsiYmx1ciIsImVycm9yIiwiZm9jdXMiLCJsb2FkIiwicmVzaXplIiwic2Nyb2xsIiwibWVzc2FnZWVycm9yIl0sc3Q9WyJib3VuY2UiLCJmaW5pc2giLCJzdGFydCJdLGx0PVsibG9hZHN0YXJ0IiwicHJvZ3Jlc3MiLCJhYm9ydCIsImVycm9yIiwibG9hZCIsInByb2dyZXNzIiwidGltZW91dCIsImxvYWRlbmQiLCJyZWFkeXN0YXRlY2hhbmdlIl0sY3Q9WyJ1cGdyYWRlbmVlZGVkIiwiY29tcGxldGUiLCJhYm9ydCIsInN1Y2Nlc3MiLCJlcnJvciIsImJsb2NrZWQiLCJ2ZXJzaW9uY2hhbmdlIiwiY2xvc2UiXSxkdD1bImNsb3NlIiwiZXJyb3IiLCJvcGVuIiwibWVzc2FnZSJdLHB0PVsiZXJyb3IiLCJtZXNzYWdlIl0sbXQ9WyJhYm9ydCIsImFuaW1hdGlvbmNhbmNlbCIsImFuaW1hdGlvbmVuZCIsImFuaW1hdGlvbml0ZXJhdGlvbiIsImF1eGNsaWNrIiwiYmVmb3JlaW5wdXQiLCJibHVyIiwiY2FuY2VsIiwiY2FucGxheSIsImNhbnBsYXl0aHJvdWdoIiwiY2hhbmdlIiwiY29tcG9zaXRpb25zdGFydCIsImNvbXBvc2l0aW9udXBkYXRlIiwiY29tcG9zaXRpb25lbmQiLCJjdWVjaGFuZ2UiLCJjbGljayIsImNsb3NlIiwiY29udGV4dG1lbnUiLCJjdXJlY2hhbmdlIiwiZGJsY2xpY2siLCJkcmFnIiwiZHJhZ2VuZCIsImRyYWdlbnRlciIsImRyYWdleGl0IiwiZHJhZ2xlYXZlIiwiZHJhZ292ZXIiLCJkcm9wIiwiZHVyYXRpb25jaGFuZ2UiLCJlbXB0aWVkIiwiZW5kZWQiLCJlcnJvciIsImZvY3VzIiwiZm9jdXNpbiIsImZvY3Vzb3V0IiwiZ290cG9pbnRlcmNhcHR1cmUiLCJpbnB1dCIsImludmFsaWQiLCJrZXlkb3duIiwia2V5cHJlc3MiLCJrZXl1cCIsImxvYWQiLCJsb2Fkc3RhcnQiLCJsb2FkZWRkYXRhIiwibG9hZGVkbWV0YWRhdGEiLCJsb3N0cG9pbnRlcmNhcHR1cmUiLCJtb3VzZWRvd24iLCJtb3VzZWVudGVyIiwibW91c2VsZWF2ZSIsIm1vdXNlbW92ZSIsIm1vdXNlb3V0IiwibW91c2VvdmVyIiwibW91c2V1cCIsIm1vdXNld2hlZWwiLCJvcmllbnRhdGlvbmNoYW5nZSIsInBhdXNlIiwicGxheSIsInBsYXlpbmciLCJwb2ludGVyY2FuY2VsIiwicG9pbnRlcmRvd24iLCJwb2ludGVyZW50ZXIiLCJwb2ludGVybGVhdmUiLCJwb2ludGVybG9ja2NoYW5nZSIsIm1venBvaW50ZXJsb2NrY2hhbmdlIiwid2Via2l0cG9pbnRlcmxvY2tlcmNoYW5nZSIsInBvaW50ZXJsb2NrZXJyb3IiLCJtb3pwb2ludGVybG9ja2Vycm9yIiwid2Via2l0cG9pbnRlcmxvY2tlcnJvciIsInBvaW50ZXJtb3ZlIiwicG9pbnRvdXQiLCJwb2ludGVyb3ZlciIsInBvaW50ZXJ1cCIsInByb2dyZXNzIiwicmF0ZWNoYW5nZSIsInJlc2V0IiwicmVzaXplIiwic2Nyb2xsIiwic2Vla2VkIiwic2Vla2luZyIsInNlbGVjdCIsInNlbGVjdGlvbmNoYW5nZSIsInNlbGVjdHN0YXJ0Iiwic2hvdyIsInNvcnQiLCJzdGFsbGVkIiwic3VibWl0Iiwic3VzcGVuZCIsInRpbWV1cGRhdGUiLCJ2b2x1bWVjaGFuZ2UiLCJ0b3VjaGNhbmNlbCIsInRvdWNobW92ZSIsInRvdWNoc3RhcnQiLCJ0b3VjaGVuZCIsInRyYW5zaXRpb25jYW5jZWwiLCJ0cmFuc2l0aW9uZW5kIiwid2FpdGluZyIsIndoZWVsIl0uY29uY2F0KFsid2ViZ2xjb250ZXh0cmVzdG9yZWQiLCJ3ZWJnbGNvbnRleHRsb3N0Iiwid2ViZ2xjb250ZXh0Y3JlYXRpb25lcnJvciJdLFsiYXV0b2NvbXBsZXRlIiwiYXV0b2NvbXBsZXRlZXJyb3IiXSxbInRvZ2dsZSJdLFsiYWZ0ZXJzY3JpcHRleGVjdXRlIiwiYmVmb3Jlc2NyaXB0ZXhlY3V0ZSIsIkRPTUNvbnRlbnRMb2FkZWQiLCJmcmVlemUiLCJmdWxsc2NyZWVuY2hhbmdlIiwibW96ZnVsbHNjcmVlbmNoYW5nZSIsIndlYmtpdGZ1bGxzY3JlZW5jaGFuZ2UiLCJtc2Z1bGxzY3JlZW5jaGFuZ2UiLCJmdWxsc2NyZWVuZXJyb3IiLCJtb3pmdWxsc2NyZWVuZXJyb3IiLCJ3ZWJraXRmdWxsc2NyZWVuZXJyb3IiLCJtc2Z1bGxzY3JlZW5lcnJvciIsInJlYWR5c3RhdGVjaGFuZ2UiLCJ2aXNpYmlsaXR5Y2hhbmdlIiwicmVzdW1lIl0sb3QsWyJiZWZvcmVjb3B5IiwiYmVmb3JlY3V0IiwiYmVmb3JlcGFzdGUiLCJjb3B5IiwiY3V0IiwicGFzdGUiLCJkcmFnc3RhcnQiLCJsb2FkZW5kIiwiYW5pbWF0aW9uc3RhcnQiLCJzZWFyY2giLCJ0cmFuc2l0aW9ucnVuIiwidHJhbnNpdGlvbnN0YXJ0Iiwid2Via2l0YW5pbWF0aW9uZW5kIiwid2Via2l0YW5pbWF0aW9uaXRlcmF0aW9uIiwid2Via2l0YW5pbWF0aW9uc3RhcnQiLCJ3ZWJraXR0cmFuc2l0aW9uZW5kIl0sWyJhY3RpdmF0ZSIsImFmdGVydXBkYXRlIiwiYXJpYXJlcXVlc3QiLCJiZWZvcmVhY3RpdmF0ZSIsImJlZm9yZWRlYWN0aXZhdGUiLCJiZWZvcmVlZGl0Zm9jdXMiLCJiZWZvcmV1cGRhdGUiLCJjZWxsY2hhbmdlIiwiY29udHJvbHNlbGVjdCIsImRhdGFhdmFpbGFibGUiLCJkYXRhc2V0Y2hhbmdlZCIsImRhdGFzZXRjb21wbGV0ZSIsImVycm9ydXBkYXRlIiwiZmlsdGVyY2hhbmdlIiwibGF5b3V0Y29tcGxldGUiLCJsb3NlY2FwdHVyZSIsIm1vdmUiLCJtb3ZlZW5kIiwibW92ZXN0YXJ0IiwicHJvcGVydHljaGFuZ2UiLCJyZXNpemVlbmQiLCJyZXNpemVzdGFydCIsInJvd2VudGVyIiwicm93ZXhpdCIsInJvd3NkZWxldGUiLCJyb3dzaW5zZXJ0ZWQiLCJjb21tYW5kIiwiY29tcGFzc25lZWRzY2FsaWJyYXRpb24iLCJkZWFjdGl2YXRlIiwiaGVscCIsIm1zY29udGVudHpvb20iLCJtc21hbmlwdWxhdGlvbnN0YXRlY2hhbmdlZCIsIm1zZ2VzdHVyZWNoYW5nZSIsIm1zZ2VzdHVyZWRvdWJsZXRhcCIsIm1zZ2VzdHVyZWVuZCIsIm1zZ2VzdHVyZWhvbGQiLCJtc2dlc3R1cmVzdGFydCIsIm1zZ2VzdHVyZXRhcCIsIm1zZ290cG9pbnRlcmNhcHR1cmUiLCJtc2luZXJ0aWFzdGFydCIsIm1zbG9zdHBvaW50ZXJjYXB0dXJlIiwibXNwb2ludGVyY2FuY2VsIiwibXNwb2ludGVyZG93biIsIm1zcG9pbnRlcmVudGVyIiwibXNwb2ludGVyaG92ZXIiLCJtc3BvaW50ZXJsZWF2ZSIsIm1zcG9pbnRlcm1vdmUiLCJtc3BvaW50ZXJvdXQiLCJtc3BvaW50ZXJvdmVyIiwibXNwb2ludGVydXAiLCJwb2ludGVyb3V0IiwibXNzaXRlbW9kZWp1bXBsaXN0aXRlbXJlbW92ZWQiLCJtc3RodW1ibmFpbGNsaWNrIiwic3RvcCIsInN0b3JhZ2Vjb21taXQiXSk7ZnVuY3Rpb24gZnQodCxlLG4pe2lmKCFufHwwPT09bi5sZW5ndGgpcmV0dXJuIGU7dmFyIG89bi5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybiBlLnRhcmdldD09PXR9KSk7aWYoIW98fDA9PT1vLmxlbmd0aClyZXR1cm4gZTt2YXIgaT1vWzBdLmlnbm9yZVByb3BlcnRpZXM7cmV0dXJuIGUuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4tMT09PWkuaW5kZXhPZih0KX0pKX1mdW5jdGlvbiB1dCh0LGUsbixvKXt0JiZSKHQsZnQodCxlLG4pLG8pfWZ1bmN0aW9uIGd0KHQsZSl7aWYoKCFPfHx3KSYmIVpvbmVbdC5zeW1ib2woInBhdGNoRXZlbnRzIildKXt2YXIgbz0idW5kZWZpbmVkIiE9dHlwZW9mIFdlYlNvY2tldCxpPWUuX19ab25lX2lnbm9yZV9vbl9wcm9wZXJ0aWVzO2lmKFApe3ZhciBhPXdpbmRvdyxyPUYoKT9be3RhcmdldDphLGlnbm9yZVByb3BlcnRpZXM6WyJlcnJvciJdfV06W107dXQoYSxtdC5jb25jYXQoWyJtZXNzYWdlZXJyb3IiXSksaT9pLmNvbmNhdChyKTppLG4oYSkpLHV0KERvY3VtZW50LnByb3RvdHlwZSxtdCxpKSx2b2lkIDAhPT1hLlNWR0VsZW1lbnQmJnV0KGEuU1ZHRWxlbWVudC5wcm90b3R5cGUsbXQsaSksdXQoRWxlbWVudC5wcm90b3R5cGUsbXQsaSksdXQoSFRNTEVsZW1lbnQucHJvdG90eXBlLG10LGkpLHV0KEhUTUxNZWRpYUVsZW1lbnQucHJvdG90eXBlLGl0LGkpLHV0KEhUTUxGcmFtZVNldEVsZW1lbnQucHJvdG90eXBlLG90LmNvbmNhdChydCksaSksdXQoSFRNTEJvZHlFbGVtZW50LnByb3RvdHlwZSxvdC5jb25jYXQocnQpLGkpLHV0KEhUTUxGcmFtZUVsZW1lbnQucHJvdG90eXBlLGF0LGkpLHV0KEhUTUxJRnJhbWVFbGVtZW50LnByb3RvdHlwZSxhdCxpKTt2YXIgcz1hLkhUTUxNYXJxdWVlRWxlbWVudDtzJiZ1dChzLnByb3RvdHlwZSxzdCxpKTt2YXIgbD1hLldvcmtlcjtsJiZ1dChsLnByb3RvdHlwZSxwdCxpKX12YXIgYz1lLlhNTEh0dHBSZXF1ZXN0O2MmJnV0KGMucHJvdG90eXBlLGx0LGkpO3ZhciBkPWUuWE1MSHR0cFJlcXVlc3RFdmVudFRhcmdldDtkJiZ1dChkJiZkLnByb3RvdHlwZSxsdCxpKSwidW5kZWZpbmVkIiE9dHlwZW9mIElEQkluZGV4JiYodXQoSURCSW5kZXgucHJvdG90eXBlLGN0LGkpLHV0KElEQlJlcXVlc3QucHJvdG90eXBlLGN0LGkpLHV0KElEQk9wZW5EQlJlcXVlc3QucHJvdG90eXBlLGN0LGkpLHV0KElEQkRhdGFiYXNlLnByb3RvdHlwZSxjdCxpKSx1dChJREJUcmFuc2FjdGlvbi5wcm90b3R5cGUsY3QsaSksdXQoSURCQ3Vyc29yLnByb3RvdHlwZSxjdCxpKSksbyYmdXQoV2ViU29ja2V0LnByb3RvdHlwZSxkdCxpKX19Ci8qKgogICAgICAgICAqIEBsaWNlbnNlCiAgICAgICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAgICAgKgogICAgICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICAgICAqL2Z1bmN0aW9uIGh0KCl7UT1ab25lLl9fc3ltYm9sX18sJD1PYmplY3RbUSgiZGVmaW5lUHJvcGVydHkiKV09T2JqZWN0LmRlZmluZVByb3BlcnR5LHR0PU9iamVjdFtRKCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiKV09T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcixldD1PYmplY3QuY3JlYXRlLG50PVEoInVuY29uZmlndXJhYmxlcyIpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eT1mdW5jdGlvbih0LGUsbil7aWYoeXQodCxlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgYXNzaWduIHRvIHJlYWQgb25seSBwcm9wZXJ0eSAnIitlKyInIG9mICIrdCk7dmFyIG89bi5jb25maWd1cmFibGU7cmV0dXJuInByb3RvdHlwZSIhPT1lJiYobj1fdCh0LGUsbikpLEN0KHQsZSxuLG8pfSxPYmplY3QuZGVmaW5lUHJvcGVydGllcz1mdW5jdGlvbih0LGUpe3JldHVybiBPYmplY3Qua2V5cyhlKS5mb3JFYWNoKChmdW5jdGlvbihuKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxuLGVbbl0pfSkpLHR9LE9iamVjdC5jcmVhdGU9ZnVuY3Rpb24odCxlKXtyZXR1cm4ib2JqZWN0IiE9dHlwZW9mIGV8fE9iamVjdC5pc0Zyb3plbihlKXx8T2JqZWN0LmtleXMoZSkuZm9yRWFjaCgoZnVuY3Rpb24obil7ZVtuXT1fdCh0LG4sZVtuXSl9KSksZXQodCxlKX0sT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcj1mdW5jdGlvbih0LGUpe3ZhciBuPXR0KHQsZSk7cmV0dXJuIG4mJnl0KHQsZSkmJihuLmNvbmZpZ3VyYWJsZT0hMSksbn19ZnVuY3Rpb24gYnQodCxlLG4pe3ZhciBvPW4uY29uZmlndXJhYmxlO3JldHVybiBDdCh0LGUsbj1fdCh0LGUsbiksbyl9ZnVuY3Rpb24geXQodCxlKXtyZXR1cm4gdCYmdFtudF0mJnRbbnRdW2VdfWZ1bmN0aW9uIF90KHQsZSxuKXtyZXR1cm4gT2JqZWN0LmlzRnJvemVuKG4pfHwobi5jb25maWd1cmFibGU9ITApLG4uY29uZmlndXJhYmxlfHwodFtudF18fE9iamVjdC5pc0Zyb3plbih0KXx8JCh0LG50LHt3cml0YWJsZTohMCx2YWx1ZTp7fX0pLHRbbnRdJiYodFtudF1bZV09ITApKSxufWZ1bmN0aW9uIEN0KHQsZSxuLG8pe3RyeXtyZXR1cm4gJCh0LGUsbil9Y2F0Y2gocil7aWYoIW4uY29uZmlndXJhYmxlKXRocm93IHI7dm9pZCAwPT09bz9kZWxldGUgbi5jb25maWd1cmFibGU6bi5jb25maWd1cmFibGU9bzt0cnl7cmV0dXJuICQodCxlLG4pfWNhdGNoKG8pe3ZhciBpPSExO2lmKCJjcmVhdGVkQ2FsbGJhY2siIT09ZSYmImF0dGFjaGVkQ2FsbGJhY2siIT09ZSYmImRldGFjaGVkQ2FsbGJhY2siIT09ZSYmImF0dHJpYnV0ZUNoYW5nZWRDYWxsYmFjayIhPT1lfHwoaT0hMCksIWkpdGhyb3cgbzt2YXIgYT1udWxsO3RyeXthPUpTT04uc3RyaW5naWZ5KG4pfWNhdGNoKHQpe2E9bi50b1N0cmluZygpfWNvbnNvbGUubG9nKCJBdHRlbXB0aW5nIHRvIGNvbmZpZ3VyZSAnIitlKyInIHdpdGggZGVzY3JpcHRvciAnIithKyInIG9uIG9iamVjdCAnIit0KyInIGFuZCBnb3QgZXJyb3IsIGdpdmluZyB1cDogIitvKX19fQovKioKICAgICAgICAgKiBAbGljZW5zZQogICAgICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgICAgICoKICAgICAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAgICAgKi9mdW5jdGlvbiBNdCh0LGUpe3ZhciBuPWUuZ2V0R2xvYmFsT2JqZWN0cygpLG89bi5ldmVudE5hbWVzLGk9bi5nbG9iYWxTb3VyY2VzLGE9bi56b25lU3ltYm9sRXZlbnROYW1lcyxyPW4uVFJVRV9TVFIscz1uLkZBTFNFX1NUUixsPW4uWk9ORV9TWU1CT0xfUFJFRklYLGM9IkFuY2hvcixBcmVhLEF1ZGlvLEJSLEJhc2UsQmFzZUZvbnQsQm9keSxCdXR0b24sQ2FudmFzLENvbnRlbnQsRExpc3QsRGlyZWN0b3J5LERpdixFbWJlZCxGaWVsZFNldCxGb250LEZvcm0sRnJhbWUsRnJhbWVTZXQsSFIsSGVhZCxIZWFkaW5nLEh0bWwsSUZyYW1lLEltYWdlLElucHV0LEtleWdlbixMSSxMYWJlbCxMZWdlbmQsTGluayxNYXAsTWFycXVlZSxNZWRpYSxNZW51LE1ldGEsTWV0ZXIsTW9kLE9MaXN0LE9iamVjdCxPcHRHcm91cCxPcHRpb24sT3V0cHV0LFBhcmFncmFwaCxQcmUsUHJvZ3Jlc3MsUXVvdGUsU2NyaXB0LFNlbGVjdCxTb3VyY2UsU3BhbixTdHlsZSxUYWJsZUNhcHRpb24sVGFibGVDZWxsLFRhYmxlQ29sLFRhYmxlLFRhYmxlUm93LFRhYmxlU2VjdGlvbixUZXh0QXJlYSxUaXRsZSxUcmFjayxVTGlzdCxVbmtub3duLFZpZGVvIixkPSJBcHBsaWNhdGlvbkNhY2hlLEV2ZW50U291cmNlLEZpbGVSZWFkZXIsSW5wdXRNZXRob2RDb250ZXh0LE1lZGlhQ29udHJvbGxlcixNZXNzYWdlUG9ydCxOb2RlLFBlcmZvcm1hbmNlLFNWR0VsZW1lbnRJbnN0YW5jZSxTaGFyZWRXb3JrZXIsVGV4dFRyYWNrLFRleHRUcmFja0N1ZSxUZXh0VHJhY2tMaXN0LFdlYktpdE5hbWVkRmxvdyxXaW5kb3csV29ya2VyLFdvcmtlckdsb2JhbFNjb3BlLFhNTEh0dHBSZXF1ZXN0LFhNTEh0dHBSZXF1ZXN0RXZlbnRUYXJnZXQsWE1MSHR0cFJlcXVlc3RVcGxvYWQsSURCUmVxdWVzdCxJREJPcGVuREJSZXF1ZXN0LElEQkRhdGFiYXNlLElEQlRyYW5zYWN0aW9uLElEQkN1cnNvcixEQkluZGV4LFdlYlNvY2tldCIuc3BsaXQoIiwiKSxwPSJFdmVudFRhcmdldCIsbT1bXSxmPXQud3RmLHU9Yy5zcGxpdCgiLCIpO2Y/bT11Lm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIkhUTUwiK3QrIkVsZW1lbnQifSkpLmNvbmNhdChkKTp0W3BdP20ucHVzaChwKTptPWQ7Zm9yKHZhciBnPXQuX19ab25lX2Rpc2FibGVfSUVfY2hlY2t8fCExLGg9dC5fX1pvbmVfZW5hYmxlX2Nyb3NzX2NvbnRleHRfY2hlY2t8fCExLGI9ZS5pc0lFT3JFZGdlKCkseT0iLmFkZEV2ZW50TGlzdGVuZXI6IixfPSJbb2JqZWN0IEZ1bmN0aW9uV3JhcHBlcl0iLEM9ImZ1bmN0aW9uIF9fQlJPV1NFUlRPT0xTX0NPTlNPTEVfU0FGRUZVTkMoKSB7IFtuYXRpdmUgY29kZV0gfSIsTT17TVNQb2ludGVyQ2FuY2VsOiJwb2ludGVyY2FuY2VsIixNU1BvaW50ZXJEb3duOiJwb2ludGVyZG93biIsTVNQb2ludGVyRW50ZXI6InBvaW50ZXJlbnRlciIsTVNQb2ludGVySG92ZXI6InBvaW50ZXJob3ZlciIsTVNQb2ludGVyTGVhdmU6InBvaW50ZXJsZWF2ZSIsTVNQb2ludGVyTW92ZToicG9pbnRlcm1vdmUiLE1TUG9pbnRlck91dDoicG9pbnRlcm91dCIsTVNQb2ludGVyT3ZlcjoicG9pbnRlcm92ZXIiLE1TUG9pbnRlclVwOiJwb2ludGVydXAifSx2PTA7djxvLmxlbmd0aDt2Kyspe3ZhciB4PWwrKChTPW9bdl0pK3MpLE89bCsoUytyKTthW1NdPXt9LGFbU11bc109eCxhW1NdW3JdPU99Zm9yKHY9MDt2PHUubGVuZ3RoO3YrKylmb3IodmFyIFA9dVt2XSx3PWlbUF09e30saz0wO2s8by5sZW5ndGg7aysrKXt2YXIgUzt3W1M9b1trXV09UCt5K1N9dmFyIEQ9ZnVuY3Rpb24odCxlLG4sbyl7aWYoIWcmJmIpe2lmKGgpdHJ5e3ZhciBpO2lmKChpPWUudG9TdHJpbmcoKSk9PT1ffHxpPT1DKXJldHVybiB0LmFwcGx5KG4sbyksITF9Y2F0Y2goZSl7cmV0dXJuIHQuYXBwbHkobixvKSwhMX1lbHNlIGlmKChpPWUudG9TdHJpbmcoKSk9PT1ffHxpPT1DKXJldHVybiB0LmFwcGx5KG4sbyksITF9ZWxzZSBpZihoKXRyeXtlLnRvU3RyaW5nKCl9Y2F0Y2goZSl7cmV0dXJuIHQuYXBwbHkobixvKSwhMX1yZXR1cm4hMH0sUj1bXTtmb3Iodj0wO3Y8bS5sZW5ndGg7disrKXt2YXIgRT10W21bdl1dO1IucHVzaChFJiZFLnByb3RvdHlwZSl9cmV0dXJuIGUucGF0Y2hFdmVudFRhcmdldCh0LFIse3ZoOkQsdHJhbnNmZXJFdmVudE5hbWU6ZnVuY3Rpb24odCl7cmV0dXJuIE1bdF18fHR9fSksWm9uZVtlLnN5bWJvbCgicGF0Y2hFdmVudFRhcmdldCIpXT0hIXRbcF0sITB9Ci8qKgogICAgICAgICAqIEBsaWNlbnNlCiAgICAgICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAgICAgKgogICAgICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICAgICAqL2Z1bmN0aW9uIHZ0KHQsZSl7dmFyIG49dC5nZXRHbG9iYWxPYmplY3RzKCksbz1uLkFERF9FVkVOVF9MSVNURU5FUl9TVFIsaT1uLlJFTU9WRV9FVkVOVF9MSVNURU5FUl9TVFIsYT1lLldlYlNvY2tldDtlLkV2ZW50VGFyZ2V0fHx0LnBhdGNoRXZlbnRUYXJnZXQoZSxbYS5wcm90b3R5cGVdKSxlLldlYlNvY2tldD1mdW5jdGlvbihlLG4pe3ZhciByLHMsbD1hcmd1bWVudHMubGVuZ3RoPjE/bmV3IGEoZSxuKTpuZXcgYShlKSxjPXQuT2JqZWN0R2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGwsIm9ubWVzc2FnZSIpO3JldHVybiBjJiYhMT09PWMuY29uZmlndXJhYmxlPyhyPXQuT2JqZWN0Q3JlYXRlKGwpLHM9bCxbbyxpLCJzZW5kIiwiY2xvc2UiXS5mb3JFYWNoKChmdW5jdGlvbihlKXtyW2VdPWZ1bmN0aW9uKCl7dmFyIG49dC5BcnJheVNsaWNlLmNhbGwoYXJndW1lbnRzKTtpZihlPT09b3x8ZT09PWkpe3ZhciBhPW4ubGVuZ3RoPjA/blswXTp2b2lkIDA7aWYoYSl7dmFyIHM9Wm9uZS5fX3N5bWJvbF9fKCJPTl9QUk9QRVJUWSIrYSk7bFtzXT1yW3NdfX1yZXR1cm4gbFtlXS5hcHBseShsLG4pfX0pKSk6cj1sLHQucGF0Y2hPblByb3BlcnRpZXMocixbImNsb3NlIiwiZXJyb3IiLCJtZXNzYWdlIiwib3BlbiJdLHMpLHJ9O3ZhciByPWUuV2ViU29ja2V0O2Zvcih2YXIgcyBpbiBhKXJbc109YVtzXX0KLyoqCiAgICAgICAgICogQGxpY2Vuc2UKICAgICAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICAgICAqCiAgICAgICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgICAgICovZnVuY3Rpb24geHQodCxlKXt2YXIgbj10LmdldEdsb2JhbE9iamVjdHMoKTtpZigoIW4uaXNOb2RlfHxuLmlzTWl4KSYmIU90KHQsZSkpe3ZhciBvPSJ1bmRlZmluZWQiIT10eXBlb2YgV2ViU29ja2V0O1B0KHQpLHQucGF0Y2hDbGFzcygiWE1MSHR0cFJlcXVlc3QiKSxvJiZ2dCh0LGUpLFpvbmVbdC5zeW1ib2woInBhdGNoRXZlbnRzIildPSEwfX1mdW5jdGlvbiBPdCh0LGUpe3ZhciBuPXQuZ2V0R2xvYmFsT2JqZWN0cygpO2lmKChuLmlzQnJvd3Nlcnx8bi5pc01peCkmJiF0Lk9iamVjdEdldE93blByb3BlcnR5RGVzY3JpcHRvcihIVE1MRWxlbWVudC5wcm90b3R5cGUsIm9uY2xpY2siKSYmInVuZGVmaW5lZCIhPXR5cGVvZiBFbGVtZW50KXt2YXIgbz10Lk9iamVjdEdldE93blByb3BlcnR5RGVzY3JpcHRvcihFbGVtZW50LnByb3RvdHlwZSwib25jbGljayIpO2lmKG8mJiFvLmNvbmZpZ3VyYWJsZSlyZXR1cm4hMTtpZihvKXt0Lk9iamVjdERlZmluZVByb3BlcnR5KEVsZW1lbnQucHJvdG90eXBlLCJvbmNsaWNrIix7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuITB9fSk7dmFyIGk9ISFkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKS5vbmNsaWNrO3JldHVybiB0Lk9iamVjdERlZmluZVByb3BlcnR5KEVsZW1lbnQucHJvdG90eXBlLCJvbmNsaWNrIixvKSxpfX12YXIgYT1lLlhNTEh0dHBSZXF1ZXN0O2lmKCFhKXJldHVybiExO3ZhciByPSJvbnJlYWR5c3RhdGVjaGFuZ2UiLHM9YS5wcm90b3R5cGUsbD10Lk9iamVjdEdldE93blByb3BlcnR5RGVzY3JpcHRvcihzLHIpO2lmKGwpcmV0dXJuIHQuT2JqZWN0RGVmaW5lUHJvcGVydHkocyxyLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4hMH19KSxpPSEhKGQ9bmV3IGEpLm9ucmVhZHlzdGF0ZWNoYW5nZSx0Lk9iamVjdERlZmluZVByb3BlcnR5KHMscixsfHx7fSksaTt2YXIgYz10LnN5bWJvbCgiZmFrZSIpO3QuT2JqZWN0RGVmaW5lUHJvcGVydHkocyxyLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc1tjXX0sc2V0OmZ1bmN0aW9uKHQpe3RoaXNbY109dH19KTt2YXIgZCxwPWZ1bmN0aW9uKCl7fTtyZXR1cm4oZD1uZXcgYSkub25yZWFkeXN0YXRlY2hhbmdlPXAsaT1kW2NdPT09cCxkLm9ucmVhZHlzdGF0ZWNoYW5nZT1udWxsLGl9ZnVuY3Rpb24gUHQodCl7Zm9yKHZhciBlPXQuZ2V0R2xvYmFsT2JqZWN0cygpLmV2ZW50TmFtZXMsbj10LnN5bWJvbCgidW5ib3VuZCIpLG89ZnVuY3Rpb24obyl7dmFyIGk9ZVtvXSxhPSJvbiIraTtzZWxmLmFkZEV2ZW50TGlzdGVuZXIoaSwoZnVuY3Rpb24oZSl7dmFyIG8saSxyPWUudGFyZ2V0O2ZvcihpPXI/ci5jb25zdHJ1Y3Rvci5uYW1lKyIuIithOiJ1bmtub3duLiIrYTtyOylyW2FdJiYhclthXVtuXSYmKChvPXQud3JhcFdpdGhDdXJyZW50Wm9uZShyW2FdLGkpKVtuXT1yW2FdLHJbYV09bykscj1yLnBhcmVudEVsZW1lbnR9KSwhMCl9LGk9MDtpPGUubGVuZ3RoO2krKylvKGkpfQovKioKICAgICAgICAgKiBAbGljZW5zZQogICAgICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgICAgICoKICAgICAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAgICAgKi9mdW5jdGlvbiB3dCh0LGUpe3ZhciBuPWUuZ2V0R2xvYmFsT2JqZWN0cygpOyhuLmlzQnJvd3Nlcnx8bi5pc01peCkmJiJyZWdpc3RlckVsZW1lbnQiaW4gdC5kb2N1bWVudCYmZS5wYXRjaENhbGxiYWNrcyhlLGRvY3VtZW50LCJEb2N1bWVudCIsInJlZ2lzdGVyRWxlbWVudCIsWyJjcmVhdGVkQ2FsbGJhY2siLCJhdHRhY2hlZENhbGxiYWNrIiwiZGV0YWNoZWRDYWxsYmFjayIsImF0dHJpYnV0ZUNoYW5nZWRDYWxsYmFjayJdKX0KLyoqCiAgICAgICAgICogQGxpY2Vuc2UKICAgICAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICAgICAqCiAgICAgICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgICAgICovWm9uZS5fX2xvYWRfcGF0Y2goInV0aWwiLChmdW5jdGlvbihuLHMsbCl7bC5wYXRjaE9uUHJvcGVydGllcz1SLGwucGF0Y2hNZXRob2Q9VCxsLmJpbmRBcmd1bWVudHM9QyxsLnBhdGNoTWFjcm9UYXNrPU47dmFyIGY9cy5fX3N5bWJvbF9fKCJCTEFDS19MSVNURURfRVZFTlRTIiksdT1zLl9fc3ltYm9sX18oIlVOUEFUQ0hFRF9FVkVOVFMiKTtuW3VdJiYobltmXT1uW3VdKSxuW2ZdJiYoc1tmXT1zW3VdPW5bZl0pLGwucGF0Y2hFdmVudFByb3RvdHlwZT1LLGwucGF0Y2hFdmVudFRhcmdldD1aLGwuaXNJRU9yRWRnZT1MLGwuT2JqZWN0RGVmaW5lUHJvcGVydHk9ZSxsLk9iamVjdEdldE93blByb3BlcnR5RGVzY3JpcHRvcj10LGwuT2JqZWN0Q3JlYXRlPW8sbC5BcnJheVNsaWNlPWksbC5wYXRjaENsYXNzPUEsbC53cmFwV2l0aEN1cnJlbnRab25lPW0sbC5maWx0ZXJQcm9wZXJ0aWVzPWZ0LGwuYXR0YWNoT3JpZ2luVG9QYXRjaGVkPXosbC5fcmVkZWZpbmVQcm9wZXJ0eT1PYmplY3QuZGVmaW5lUHJvcGVydHksbC5wYXRjaENhbGxiYWNrcz1KLGwuZ2V0R2xvYmFsT2JqZWN0cz1mdW5jdGlvbigpe3JldHVybntnbG9iYWxTb3VyY2VzOlcsem9uZVN5bWJvbEV2ZW50TmFtZXM6VSxldmVudE5hbWVzOm10LGlzQnJvd3NlcjpQLGlzTWl4OncsaXNOb2RlOk8sVFJVRV9TVFI6YyxGQUxTRV9TVFI6ZCxaT05FX1NZTUJPTF9QUkVGSVg6cCxBRERfRVZFTlRfTElTVEVORVJfU1RSOmEsUkVNT1ZFX0VWRU5UX0xJU1RFTkVSX1NUUjpyfX19KSksKGZ1bmN0aW9uKHQpe3ZhciBlPXQuX19ab25lX3N5bWJvbF9wcmVmaXh8fCJfX3pvbmVfc3ltYm9sX18iO2Z1bmN0aW9uIG4odCl7cmV0dXJuIGUrdH10W24oImxlZ2FjeVBhdGNoIildPWZ1bmN0aW9uKCl7dmFyIGU9dC5ab25lO2UuX19sb2FkX3BhdGNoKCJkZWZpbmVQcm9wZXJ0eSIsKGZ1bmN0aW9uKHQsZSxuKXtuLl9yZWRlZmluZVByb3BlcnR5PWJ0LGh0KCl9KSksZS5fX2xvYWRfcGF0Y2goInJlZ2lzdGVyRWxlbWVudCIsKGZ1bmN0aW9uKHQsZSxuKXt3dCh0LG4pfSkpLGUuX19sb2FkX3BhdGNoKCJFdmVudFRhcmdldExlZ2FjeSIsKGZ1bmN0aW9uKHQsZSxuKXtNdCh0LG4pLHh0KG4sdCl9KSl9fSkoInVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3c/d2luZG93OnZvaWQgMCE9PV9PP19POiJ1bmRlZmluZWQiIT10eXBlb2Ygc2VsZj9zZWxmOnt9KTsKLyoqCiAgICAgICAgICogQGxpY2Vuc2UKICAgICAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICAgICAqCiAgICAgICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgICAgICovCnZhciBrdD11KCJ6b25lVGFzayIpO2Z1bmN0aW9uIFN0KHQsZSxuLG8pe3ZhciBpPW51bGwsYT1udWxsO24rPW87dmFyIHI9e307ZnVuY3Rpb24gcyhlKXt2YXIgbj1lLmRhdGE7cmV0dXJuIG4uYXJnc1swXT1mdW5jdGlvbigpe3JldHVybiBlLmludm9rZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LG4uaGFuZGxlSWQ9aS5hcHBseSh0LG4uYXJncyksZX1mdW5jdGlvbiBsKGUpe3JldHVybiBhLmNhbGwodCxlLmRhdGEuaGFuZGxlSWQpfWk9VCh0LGUrPW8sKGZ1bmN0aW9uKG4pe3JldHVybiBmdW5jdGlvbihpLGEpe2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBhWzBdKXt2YXIgYz17aXNQZXJpb2RpYzoiSW50ZXJ2YWwiPT09byxkZWxheToiVGltZW91dCI9PT1vfHwiSW50ZXJ2YWwiPT09bz9hWzFdfHwwOnZvaWQgMCxhcmdzOmF9LGQ9YVswXTthWzBdPWZ1bmN0aW9uIHQoKXt0cnl7cmV0dXJuIGQuYXBwbHkodGhpcyxhcmd1bWVudHMpfWZpbmFsbHl7Yy5pc1BlcmlvZGljfHwoIm51bWJlciI9PXR5cGVvZiBjLmhhbmRsZUlkP2RlbGV0ZSByW2MuaGFuZGxlSWRdOmMuaGFuZGxlSWQmJihjLmhhbmRsZUlkW2t0XT1udWxsKSl9fTt2YXIgcD1mKGUsYVswXSxjLHMsbCk7aWYoIXApcmV0dXJuIHA7dmFyIG09cC5kYXRhLmhhbmRsZUlkO3JldHVybiJudW1iZXIiPT10eXBlb2YgbT9yW21dPXA6bSYmKG1ba3RdPXApLG0mJm0ucmVmJiZtLnVucmVmJiYiZnVuY3Rpb24iPT10eXBlb2YgbS5yZWYmJiJmdW5jdGlvbiI9PXR5cGVvZiBtLnVucmVmJiYocC5yZWY9bS5yZWYuYmluZChtKSxwLnVucmVmPW0udW5yZWYuYmluZChtKSksIm51bWJlciI9PXR5cGVvZiBtfHxtP206cH1yZXR1cm4gbi5hcHBseSh0LGEpfX0pKSxhPVQodCxuLChmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24obixvKXt2YXIgaSxhPW9bMF07Im51bWJlciI9PXR5cGVvZiBhP2k9clthXTooaT1hJiZhW2t0XSl8fChpPWEpLGkmJiJzdHJpbmciPT10eXBlb2YgaS50eXBlPyJub3RTY2hlZHVsZWQiIT09aS5zdGF0ZSYmKGkuY2FuY2VsRm4mJmkuZGF0YS5pc1BlcmlvZGljfHwwPT09aS5ydW5Db3VudCkmJigibnVtYmVyIj09dHlwZW9mIGE/ZGVsZXRlIHJbYV06YSYmKGFba3RdPW51bGwpLGkuem9uZS5jYW5jZWxUYXNrKGkpKTplLmFwcGx5KHQsbyl9fSkpfQovKioKICAgICAgICAgKiBAbGljZW5zZQogICAgICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgICAgICoKICAgICAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAgICAgKi9mdW5jdGlvbiBEdCh0LGUpe3ZhciBuPWUuZ2V0R2xvYmFsT2JqZWN0cygpOyhuLmlzQnJvd3Nlcnx8bi5pc01peCkmJnQuY3VzdG9tRWxlbWVudHMmJiJjdXN0b21FbGVtZW50cyJpbiB0JiZlLnBhdGNoQ2FsbGJhY2tzKGUsdC5jdXN0b21FbGVtZW50cywiY3VzdG9tRWxlbWVudHMiLCJkZWZpbmUiLFsiY29ubmVjdGVkQ2FsbGJhY2siLCJkaXNjb25uZWN0ZWRDYWxsYmFjayIsImFkb3B0ZWRDYWxsYmFjayIsImF0dHJpYnV0ZUNoYW5nZWRDYWxsYmFjayJdKX0KLyoqCiAgICAgICAgICogQGxpY2Vuc2UKICAgICAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICAgICAqCiAgICAgICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgICAgICovZnVuY3Rpb24gUnQodCxlKXtpZighWm9uZVtlLnN5bWJvbCgicGF0Y2hFdmVudFRhcmdldCIpXSl7Zm9yKHZhciBuPWUuZ2V0R2xvYmFsT2JqZWN0cygpLG89bi5ldmVudE5hbWVzLGk9bi56b25lU3ltYm9sRXZlbnROYW1lcyxhPW4uVFJVRV9TVFIscj1uLkZBTFNFX1NUUixzPW4uWk9ORV9TWU1CT0xfUFJFRklYLGw9MDtsPG8ubGVuZ3RoO2wrKyl7dmFyIGM9b1tsXSxkPXMrKGMrcikscD1zKyhjK2EpO2lbY109e30saVtjXVtyXT1kLGlbY11bYV09cH12YXIgbT10LkV2ZW50VGFyZ2V0O2lmKG0mJm0ucHJvdG90eXBlKXJldHVybiBlLnBhdGNoRXZlbnRUYXJnZXQodCxbbSYmbS5wcm90b3R5cGVdKSwhMH19ZnVuY3Rpb24gRXQodCxlKXtlLnBhdGNoRXZlbnRQcm90b3R5cGUodCxlKX0KLyoqCiAgICAgICAgICogQGxpY2Vuc2UKICAgICAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICAgICAqCiAgICAgICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgICAgICovWm9uZS5fX2xvYWRfcGF0Y2goImxlZ2FjeSIsKGZ1bmN0aW9uKHQpe3ZhciBlPXRbWm9uZS5fX3N5bWJvbF9fKCJsZWdhY3lQYXRjaCIpXTtlJiZlKCl9KSksWm9uZS5fX2xvYWRfcGF0Y2goInF1ZXVlTWljcm90YXNrIiwoZnVuY3Rpb24odCxlLG4pe24ucGF0Y2hNZXRob2QodCwicXVldWVNaWNyb3Rhc2siLChmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24odCxuKXtlLmN1cnJlbnQuc2NoZWR1bGVNaWNyb1Rhc2soInF1ZXVlTWljcm90YXNrIixuWzBdKX19KSl9KSksWm9uZS5fX2xvYWRfcGF0Y2goInRpbWVycyIsKGZ1bmN0aW9uKHQpe3ZhciBlPSJzZXQiLG49ImNsZWFyIjtTdCh0LGUsbiwiVGltZW91dCIpLFN0KHQsZSxuLCJJbnRlcnZhbCIpLFN0KHQsZSxuLCJJbW1lZGlhdGUiKX0pKSxab25lLl9fbG9hZF9wYXRjaCgicmVxdWVzdEFuaW1hdGlvbkZyYW1lIiwoZnVuY3Rpb24odCl7U3QodCwicmVxdWVzdCIsImNhbmNlbCIsIkFuaW1hdGlvbkZyYW1lIiksU3QodCwibW96UmVxdWVzdCIsIm1vekNhbmNlbCIsIkFuaW1hdGlvbkZyYW1lIiksU3QodCwid2Via2l0UmVxdWVzdCIsIndlYmtpdENhbmNlbCIsIkFuaW1hdGlvbkZyYW1lIil9KSksWm9uZS5fX2xvYWRfcGF0Y2goImJsb2NraW5nIiwoZnVuY3Rpb24odCxlKXtmb3IodmFyIG49WyJhbGVydCIsInByb21wdCIsImNvbmZpcm0iXSxvPTA7bzxuLmxlbmd0aDtvKyspVCh0LG5bb10sKGZ1bmN0aW9uKG4sbyxpKXtyZXR1cm4gZnVuY3Rpb24obyxhKXtyZXR1cm4gZS5jdXJyZW50LnJ1bihuLHQsYSxpKX19KSl9KSksWm9uZS5fX2xvYWRfcGF0Y2goIkV2ZW50VGFyZ2V0IiwoZnVuY3Rpb24odCxlLG4pe0V0KHQsbiksUnQodCxuKTt2YXIgbz10LlhNTEh0dHBSZXF1ZXN0RXZlbnRUYXJnZXQ7byYmby5wcm90b3R5cGUmJm4ucGF0Y2hFdmVudFRhcmdldCh0LFtvLnByb3RvdHlwZV0pfSkpLFpvbmUuX19sb2FkX3BhdGNoKCJNdXRhdGlvbk9ic2VydmVyIiwoZnVuY3Rpb24odCxlLG4pe0EoIk11dGF0aW9uT2JzZXJ2ZXIiKSxBKCJXZWJLaXRNdXRhdGlvbk9ic2VydmVyIil9KSksWm9uZS5fX2xvYWRfcGF0Y2goIkludGVyc2VjdGlvbk9ic2VydmVyIiwoZnVuY3Rpb24odCxlLG4pe0EoIkludGVyc2VjdGlvbk9ic2VydmVyIil9KSksWm9uZS5fX2xvYWRfcGF0Y2goIkZpbGVSZWFkZXIiLChmdW5jdGlvbih0LGUsbil7QSgiRmlsZVJlYWRlciIpfSkpLFpvbmUuX19sb2FkX3BhdGNoKCJvbl9wcm9wZXJ0eSIsKGZ1bmN0aW9uKHQsZSxuKXtndChuLHQpfSkpLFpvbmUuX19sb2FkX3BhdGNoKCJjdXN0b21FbGVtZW50cyIsKGZ1bmN0aW9uKHQsZSxuKXtEdCh0LG4pfSkpLFpvbmUuX19sb2FkX3BhdGNoKCJYSFIiLChmdW5jdGlvbih0LGUpe2QodCk7dmFyIG49dSgieGhyVGFzayIpLG89dSgieGhyU3luYyIpLGk9dSgieGhyTGlzdGVuZXIiKSxhPXUoInhoclNjaGVkdWxlZCIpLHI9dSgieGhyVVJMIiksYz11KCJ4aHJFcnJvckJlZm9yZVNjaGVkdWxlZCIpO2Z1bmN0aW9uIGQodCl7dmFyIGQ9dC5YTUxIdHRwUmVxdWVzdDtpZihkKXt2YXIgcD1kLnByb3RvdHlwZSxtPXBbc10sZz1wW2xdO2lmKCFtKXt2YXIgaD10LlhNTEh0dHBSZXF1ZXN0RXZlbnRUYXJnZXQ7aWYoaCl7dmFyIGI9aC5wcm90b3R5cGU7bT1iW3NdLGc9YltsXX19dmFyIHk9InJlYWR5c3RhdGVjaGFuZ2UiLF89InNjaGVkdWxlZCIsQz1UKHAsIm9wZW4iLChmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbih0LGUpe3JldHVybiB0W29dPTA9PWVbMl0sdFtyXT1lWzFdLEMuYXBwbHkodCxlKX19KSksTT0iWE1MSHR0cFJlcXVlc3Quc2VuZCIsdj11KCJmZXRjaFRhc2tBYm9ydGluZyIpLHg9dSgiZmV0Y2hUYXNrU2NoZWR1bGluZyIpLE89VChwLCJzZW5kIiwoZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24odCxuKXtpZighMD09PWUuY3VycmVudFt4XSlyZXR1cm4gTy5hcHBseSh0LG4pO2lmKHRbb10pcmV0dXJuIE8uYXBwbHkodCxuKTt2YXIgaT17dGFyZ2V0OnQsdXJsOnRbcl0saXNQZXJpb2RpYzohMSxhcmdzOm4sYWJvcnRlZDohMX0sYT1mKE0sUyxpLGssRCk7dCYmITA9PT10W2NdJiYhaS5hYm9ydGVkJiZhLnN0YXRlPT09XyYmYS5pbnZva2UoKX19KSksUD1UKHAsImFib3J0IiwoZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24odCxuKXt2YXIgbz13KHQpO2lmKG8mJiJzdHJpbmciPT10eXBlb2Ygby50eXBlKXtpZihudWxsPT1vLmNhbmNlbEZufHxvLmRhdGEmJm8uZGF0YS5hYm9ydGVkKXJldHVybjtvLnpvbmUuY2FuY2VsVGFzayhvKX1lbHNlIGlmKCEwPT09ZS5jdXJyZW50W3ZdKXJldHVybiBQLmFwcGx5KHQsbil9fSkpfWZ1bmN0aW9uIHcodCl7cmV0dXJuIHRbbl19ZnVuY3Rpb24gayh0KXt2YXIgbz10LmRhdGEscj1vLnRhcmdldDtyW2FdPSExLHJbY109ITE7dmFyIGQ9cltpXTttfHwobT1yW3NdLGc9cltsXSksZCYmZy5jYWxsKHIseSxkKTt2YXIgcD1yW2ldPWZ1bmN0aW9uKCl7aWYoci5yZWFkeVN0YXRlPT09ci5ET05FKWlmKCFvLmFib3J0ZWQmJnJbYV0mJnQuc3RhdGU9PT1fKXt2YXIgbj1yW2UuX19zeW1ib2xfXygibG9hZGZhbHNlIildO2lmKDAhPT1yLnN0YXR1cyYmbiYmbi5sZW5ndGg+MCl7dmFyIGk9dC5pbnZva2U7dC5pbnZva2U9ZnVuY3Rpb24oKXtmb3IodmFyIG49cltlLl9fc3ltYm9sX18oImxvYWRmYWxzZSIpXSxhPTA7YTxuLmxlbmd0aDthKyspblthXT09PXQmJm4uc3BsaWNlKGEsMSk7by5hYm9ydGVkfHx0LnN0YXRlIT09X3x8aS5jYWxsKHQpfSxuLnB1c2godCl9ZWxzZSB0Lmludm9rZSgpfWVsc2Ugby5hYm9ydGVkfHwhMSE9PXJbYV18fChyW2NdPSEwKX07cmV0dXJuIG0uY2FsbChyLHkscCkscltuXXx8KHJbbl09dCksTy5hcHBseShyLG8uYXJncyksclthXT0hMCx0fWZ1bmN0aW9uIFMoKXt9ZnVuY3Rpb24gRCh0KXt2YXIgZT10LmRhdGE7cmV0dXJuIGUuYWJvcnRlZD0hMCxQLmFwcGx5KGUudGFyZ2V0LGUuYXJncyl9fX0pKSxab25lLl9fbG9hZF9wYXRjaCgiZ2VvbG9jYXRpb24iLChmdW5jdGlvbih0KXt0Lm5hdmlnYXRvciYmdC5uYXZpZ2F0b3IuZ2VvbG9jYXRpb24mJk0odC5uYXZpZ2F0b3IuZ2VvbG9jYXRpb24sWyJnZXRDdXJyZW50UG9zaXRpb24iLCJ3YXRjaFBvc2l0aW9uIl0pfSkpLFpvbmUuX19sb2FkX3BhdGNoKCJQcm9taXNlUmVqZWN0aW9uRXZlbnQiLChmdW5jdGlvbih0LGUpe2Z1bmN0aW9uIG4oZSl7cmV0dXJuIGZ1bmN0aW9uKG4pe1godCxlKS5mb3JFYWNoKChmdW5jdGlvbihvKXt2YXIgaT10LlByb21pc2VSZWplY3Rpb25FdmVudDtpZihpKXt2YXIgYT1uZXcgaShlLHtwcm9taXNlOm4ucHJvbWlzZSxyZWFzb246bi5yZWplY3Rpb259KTtvLmludm9rZShhKX19KSl9fXQuUHJvbWlzZVJlamVjdGlvbkV2ZW50JiYoZVt1KCJ1bmhhbmRsZWRQcm9taXNlUmVqZWN0aW9uSGFuZGxlciIpXT1uKCJ1bmhhbmRsZWRyZWplY3Rpb24iKSxlW3UoInJlamVjdGlvbkhhbmRsZWRIYW5kbGVyIildPW4oInJlamVjdGlvbmhhbmRsZWQiKSl9KSl9KSgpOwovKioKICAgICAqIEBsaWNlbnNlIEFuZ3VsYXIgdjEyLjIuMQogICAgICogKGMpIDIwMTAtMjAyMSBHb29nbGUgTExDLiBodHRwczovL2FuZ3VsYXIuaW8vCiAgICAgKiBMaWNlbnNlOiBNSVQKICAgICAqLwpjbGFzcyBNT3t9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjb25zdCB2Tz0iKiI7ZnVuY3Rpb24geE8odCxlKXtyZXR1cm57dHlwZTo3LG5hbWU6dCxkZWZpbml0aW9uczplLG9wdGlvbnM6e319fWZ1bmN0aW9uIE9PKHQsZT1udWxsKXtyZXR1cm57dHlwZTo0LHN0eWxlczplLHRpbWluZ3M6dH19ZnVuY3Rpb24gUE8odCxlPW51bGwpe3JldHVybnt0eXBlOjIsc3RlcHM6dCxvcHRpb25zOmV9fWZ1bmN0aW9uIHdPKHQpe3JldHVybnt0eXBlOjYsc3R5bGVzOnQsb2Zmc2V0Om51bGx9fWZ1bmN0aW9uIGtPKHQsZSxuKXtyZXR1cm57dHlwZTowLG5hbWU6dCxzdHlsZXM6ZSxvcHRpb25zOm59fWZ1bmN0aW9uIFNPKHQpe3JldHVybnt0eXBlOjUsc3RlcHM6dH19ZnVuY3Rpb24gRE8odCxlLG49bnVsbCl7cmV0dXJue3R5cGU6MSxleHByOnQsYW5pbWF0aW9uOmUsb3B0aW9uczpufX1mdW5jdGlvbiBSTyh0PW51bGwpe3JldHVybnt0eXBlOjksb3B0aW9uczp0fX1mdW5jdGlvbiBFTyh0LGUsbj1udWxsKXtyZXR1cm57dHlwZToxMSxzZWxlY3Rvcjp0LGFuaW1hdGlvbjplLG9wdGlvbnM6bn19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2Z1bmN0aW9uIEFPKHQpe1Byb21pc2UucmVzb2x2ZShudWxsKS50aGVuKHQpfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jbGFzcyBUT3tjb25zdHJ1Y3Rvcih0PTAsZT0wKXt0aGlzLl9vbkRvbmVGbnM9W10sdGhpcy5fb25TdGFydEZucz1bXSx0aGlzLl9vbkRlc3Ryb3lGbnM9W10sdGhpcy5fc3RhcnRlZD0hMSx0aGlzLl9kZXN0cm95ZWQ9ITEsdGhpcy5fZmluaXNoZWQ9ITEsdGhpcy5fcG9zaXRpb249MCx0aGlzLnBhcmVudFBsYXllcj1udWxsLHRoaXMudG90YWxUaW1lPXQrZX1fb25GaW5pc2goKXt0aGlzLl9maW5pc2hlZHx8KHRoaXMuX2ZpbmlzaGVkPSEwLHRoaXMuX29uRG9uZUZucy5mb3JFYWNoKCh0PT50KCkpKSx0aGlzLl9vbkRvbmVGbnM9W10pfW9uU3RhcnQodCl7dGhpcy5fb25TdGFydEZucy5wdXNoKHQpfW9uRG9uZSh0KXt0aGlzLl9vbkRvbmVGbnMucHVzaCh0KX1vbkRlc3Ryb3kodCl7dGhpcy5fb25EZXN0cm95Rm5zLnB1c2godCl9aGFzU3RhcnRlZCgpe3JldHVybiB0aGlzLl9zdGFydGVkfWluaXQoKXt9cGxheSgpe3RoaXMuaGFzU3RhcnRlZCgpfHwodGhpcy5fb25TdGFydCgpLHRoaXMudHJpZ2dlck1pY3JvdGFzaygpKSx0aGlzLl9zdGFydGVkPSEwfXRyaWdnZXJNaWNyb3Rhc2soKXtBTygoKCk9PnRoaXMuX29uRmluaXNoKCkpKX1fb25TdGFydCgpe3RoaXMuX29uU3RhcnRGbnMuZm9yRWFjaCgodD0+dCgpKSksdGhpcy5fb25TdGFydEZucz1bXX1wYXVzZSgpe31yZXN0YXJ0KCl7fWZpbmlzaCgpe3RoaXMuX29uRmluaXNoKCl9ZGVzdHJveSgpe3RoaXMuX2Rlc3Ryb3llZHx8KHRoaXMuX2Rlc3Ryb3llZD0hMCx0aGlzLmhhc1N0YXJ0ZWQoKXx8dGhpcy5fb25TdGFydCgpLHRoaXMuZmluaXNoKCksdGhpcy5fb25EZXN0cm95Rm5zLmZvckVhY2goKHQ9PnQoKSkpLHRoaXMuX29uRGVzdHJveUZucz1bXSl9cmVzZXQoKXt0aGlzLl9zdGFydGVkPSExfXNldFBvc2l0aW9uKHQpe3RoaXMuX3Bvc2l0aW9uPXRoaXMudG90YWxUaW1lP3QqdGhpcy50b3RhbFRpbWU6MX1nZXRQb3NpdGlvbigpe3JldHVybiB0aGlzLnRvdGFsVGltZT90aGlzLl9wb3NpdGlvbi90aGlzLnRvdGFsVGltZToxfXRyaWdnZXJDYWxsYmFjayh0KXtjb25zdCBlPSJzdGFydCI9PXQ/dGhpcy5fb25TdGFydEZuczp0aGlzLl9vbkRvbmVGbnM7ZS5mb3JFYWNoKCh0PT50KCkpKSxlLmxlbmd0aD0wfX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY2xhc3MgTk97Y29uc3RydWN0b3IodCl7dGhpcy5fb25Eb25lRm5zPVtdLHRoaXMuX29uU3RhcnRGbnM9W10sdGhpcy5fZmluaXNoZWQ9ITEsdGhpcy5fc3RhcnRlZD0hMSx0aGlzLl9kZXN0cm95ZWQ9ITEsdGhpcy5fb25EZXN0cm95Rm5zPVtdLHRoaXMucGFyZW50UGxheWVyPW51bGwsdGhpcy50b3RhbFRpbWU9MCx0aGlzLnBsYXllcnM9dDtsZXQgZT0wLG49MCxvPTA7Y29uc3QgaT10aGlzLnBsYXllcnMubGVuZ3RoOzA9PWk/QU8oKCgpPT50aGlzLl9vbkZpbmlzaCgpKSk6dGhpcy5wbGF5ZXJzLmZvckVhY2goKHQ9Pnt0Lm9uRG9uZSgoKCk9PnsrK2U9PWkmJnRoaXMuX29uRmluaXNoKCl9KSksdC5vbkRlc3Ryb3koKCgpPT57KytuPT1pJiZ0aGlzLl9vbkRlc3Ryb3koKX0pKSx0Lm9uU3RhcnQoKCgpPT57KytvPT1pJiZ0aGlzLl9vblN0YXJ0KCl9KSl9KSksdGhpcy50b3RhbFRpbWU9dGhpcy5wbGF5ZXJzLnJlZHVjZSgoKHQsZSk9Pk1hdGgubWF4KHQsZS50b3RhbFRpbWUpKSwwKX1fb25GaW5pc2goKXt0aGlzLl9maW5pc2hlZHx8KHRoaXMuX2ZpbmlzaGVkPSEwLHRoaXMuX29uRG9uZUZucy5mb3JFYWNoKCh0PT50KCkpKSx0aGlzLl9vbkRvbmVGbnM9W10pfWluaXQoKXt0aGlzLnBsYXllcnMuZm9yRWFjaCgodD0+dC5pbml0KCkpKX1vblN0YXJ0KHQpe3RoaXMuX29uU3RhcnRGbnMucHVzaCh0KX1fb25TdGFydCgpe3RoaXMuaGFzU3RhcnRlZCgpfHwodGhpcy5fc3RhcnRlZD0hMCx0aGlzLl9vblN0YXJ0Rm5zLmZvckVhY2goKHQ9PnQoKSkpLHRoaXMuX29uU3RhcnRGbnM9W10pfW9uRG9uZSh0KXt0aGlzLl9vbkRvbmVGbnMucHVzaCh0KX1vbkRlc3Ryb3kodCl7dGhpcy5fb25EZXN0cm95Rm5zLnB1c2godCl9aGFzU3RhcnRlZCgpe3JldHVybiB0aGlzLl9zdGFydGVkfXBsYXkoKXt0aGlzLnBhcmVudFBsYXllcnx8dGhpcy5pbml0KCksdGhpcy5fb25TdGFydCgpLHRoaXMucGxheWVycy5mb3JFYWNoKCh0PT50LnBsYXkoKSkpfXBhdXNlKCl7dGhpcy5wbGF5ZXJzLmZvckVhY2goKHQ9PnQucGF1c2UoKSkpfXJlc3RhcnQoKXt0aGlzLnBsYXllcnMuZm9yRWFjaCgodD0+dC5yZXN0YXJ0KCkpKX1maW5pc2goKXt0aGlzLl9vbkZpbmlzaCgpLHRoaXMucGxheWVycy5mb3JFYWNoKCh0PT50LmZpbmlzaCgpKSl9ZGVzdHJveSgpe3RoaXMuX29uRGVzdHJveSgpfV9vbkRlc3Ryb3koKXt0aGlzLl9kZXN0cm95ZWR8fCh0aGlzLl9kZXN0cm95ZWQ9ITAsdGhpcy5fb25GaW5pc2goKSx0aGlzLnBsYXllcnMuZm9yRWFjaCgodD0+dC5kZXN0cm95KCkpKSx0aGlzLl9vbkRlc3Ryb3lGbnMuZm9yRWFjaCgodD0+dCgpKSksdGhpcy5fb25EZXN0cm95Rm5zPVtdKX1yZXNldCgpe3RoaXMucGxheWVycy5mb3JFYWNoKCh0PT50LnJlc2V0KCkpKSx0aGlzLl9kZXN0cm95ZWQ9ITEsdGhpcy5fZmluaXNoZWQ9ITEsdGhpcy5fc3RhcnRlZD0hMX1zZXRQb3NpdGlvbih0KXtjb25zdCBlPXQqdGhpcy50b3RhbFRpbWU7dGhpcy5wbGF5ZXJzLmZvckVhY2goKHQ9Pntjb25zdCBuPXQudG90YWxUaW1lP01hdGgubWluKDEsZS90LnRvdGFsVGltZSk6MTt0LnNldFBvc2l0aW9uKG4pfSkpfWdldFBvc2l0aW9uKCl7Y29uc3QgdD10aGlzLnBsYXllcnMucmVkdWNlKCgodCxlKT0+bnVsbD09PXR8fGUudG90YWxUaW1lPnQudG90YWxUaW1lP2U6dCksbnVsbCk7cmV0dXJuIG51bGwhPXQ/dC5nZXRQb3NpdGlvbigpOjB9YmVmb3JlRGVzdHJveSgpe3RoaXMucGxheWVycy5mb3JFYWNoKCh0PT57dC5iZWZvcmVEZXN0cm95JiZ0LmJlZm9yZURlc3Ryb3koKX0pKX10cmlnZ2VyQ2FsbGJhY2sodCl7Y29uc3QgZT0ic3RhcnQiPT10P3RoaXMuX29uU3RhcnRGbnM6dGhpcy5fb25Eb25lRm5zO2UuZm9yRWFjaCgodD0+dCgpKSksZS5sZW5ndGg9MH19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwovKioKICAgICAqIEBsaWNlbnNlIEFuZ3VsYXIgdjEyLjIuMQogICAgICogKGMpIDIwMTAtMjAyMSBHb29nbGUgTExDLiBodHRwczovL2FuZ3VsYXIuaW8vCiAgICAgKiBMaWNlbnNlOiBNSVQKICAgICAqLwpmdW5jdGlvbiB6Tygpe3JldHVybiJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93JiZ2b2lkIDAhPT13aW5kb3cuZG9jdW1lbnR9ZnVuY3Rpb24gSU8oKXtyZXR1cm4idW5kZWZpbmVkIiE9dHlwZW9mIHByb2Nlc3MmJiJbb2JqZWN0IHByb2Nlc3NdIj09PXt9LnRvU3RyaW5nLmNhbGwocHJvY2Vzcyl9ZnVuY3Rpb24gSE8odCl7c3dpdGNoKHQubGVuZ3RoKXtjYXNlIDA6cmV0dXJuIG5ldyBUTztjYXNlIDE6cmV0dXJuIHRbMF07ZGVmYXVsdDpyZXR1cm4gbmV3IE5PKHQpfX1mdW5jdGlvbiBGTyh0LGUsbixvLGk9e30sYT17fSl7Y29uc3Qgcj1bXSxzPVtdO2xldCBsPS0xLGM9bnVsbDtpZihvLmZvckVhY2goKHQ9Pntjb25zdCBuPXQub2Zmc2V0LG89bj09bCxkPW8mJmN8fHt9O09iamVjdC5rZXlzKHQpLmZvckVhY2goKG49PntsZXQgbz1uLHM9dFtuXTtpZigib2Zmc2V0IiE9PW4pc3dpdGNoKG89ZS5ub3JtYWxpemVQcm9wZXJ0eU5hbWUobyxyKSxzKXtjYXNlIiEiOnM9aVtuXTticmVhaztjYXNlIHZPOnM9YVtuXTticmVhaztkZWZhdWx0OnM9ZS5ub3JtYWxpemVTdHlsZVZhbHVlKG4sbyxzLHIpfWRbb109c30pKSxvfHxzLnB1c2goZCksYz1kLGw9bn0pKSxyLmxlbmd0aCl7Y29uc3QgdD0iXG4gLSAiO3Rocm93IG5ldyBFcnJvcihgVW5hYmxlIHRvIGFuaW1hdGUgZHVlIHRvIHRoZSBmb2xsb3dpbmcgZXJyb3JzOiR7dH0ke3Iuam9pbih0KX1gKX1yZXR1cm4gc31mdW5jdGlvbiBMTyh0LGUsbixvKXtzd2l0Y2goZSl7Y2FzZSJzdGFydCI6dC5vblN0YXJ0KCgoKT0+byhuJiZCTyhuLCJzdGFydCIsdCkpKSk7YnJlYWs7Y2FzZSJkb25lIjp0Lm9uRG9uZSgoKCk9Pm8obiYmQk8obiwiZG9uZSIsdCkpKSk7YnJlYWs7Y2FzZSJkZXN0cm95Ijp0Lm9uRGVzdHJveSgoKCk9Pm8obiYmQk8obiwiZGVzdHJveSIsdCkpKSl9fWZ1bmN0aW9uIEJPKHQsZSxuKXtjb25zdCBvPW4udG90YWxUaW1lLGk9Vk8odC5lbGVtZW50LHQudHJpZ2dlck5hbWUsdC5mcm9tU3RhdGUsdC50b1N0YXRlLGV8fHQucGhhc2VOYW1lLG51bGw9PW8/dC50b3RhbFRpbWU6bywhIW4uZGlzYWJsZWQpLGE9dC5fZGF0YTtyZXR1cm4gbnVsbCE9YSYmKGkuX2RhdGE9YSksaX1mdW5jdGlvbiBWTyh0LGUsbixvLGk9IiIsYT0wLHIpe3JldHVybntlbGVtZW50OnQsdHJpZ2dlck5hbWU6ZSxmcm9tU3RhdGU6bix0b1N0YXRlOm8scGhhc2VOYW1lOmksdG90YWxUaW1lOmEsZGlzYWJsZWQ6ISFyfX1mdW5jdGlvbiBqTyh0LGUsbil7bGV0IG87cmV0dXJuIHQgaW5zdGFuY2VvZiBNYXA/KG89dC5nZXQoZSksb3x8dC5zZXQoZSxvPW4pKToobz10W2VdLG98fChvPXRbZV09bikpLG99ZnVuY3Rpb24gVU8odCl7Y29uc3QgZT10LmluZGV4T2YoIjoiKTtyZXR1cm5bdC5zdWJzdHJpbmcoMSxlKSx0LnN1YnN0cihlKzEpXX1sZXQgV089KHQsZSk9PiExLEdPPSh0LGUpPT4hMSxZTz0odCxlLG4pPT5bXTtjb25zdCBxTz1JTygpOyhxT3x8InVuZGVmaW5lZCIhPXR5cGVvZiBFbGVtZW50KSYmKFdPPXpPKCk/KHQsZSk9Pntmb3IoO2UmJmUhPT1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7KXtpZihlPT09dClyZXR1cm4hMDtlPWUucGFyZW50Tm9kZXx8ZS5ob3N0fXJldHVybiExfToodCxlKT0+dC5jb250YWlucyhlKSxHTz0oKCk9PntpZihxT3x8RWxlbWVudC5wcm90b3R5cGUubWF0Y2hlcylyZXR1cm4odCxlKT0+dC5tYXRjaGVzKGUpO3tjb25zdCB0PUVsZW1lbnQucHJvdG90eXBlLGU9dC5tYXRjaGVzU2VsZWN0b3J8fHQubW96TWF0Y2hlc1NlbGVjdG9yfHx0Lm1zTWF0Y2hlc1NlbGVjdG9yfHx0Lm9NYXRjaGVzU2VsZWN0b3J8fHQud2Via2l0TWF0Y2hlc1NlbGVjdG9yO3JldHVybiBlPyh0LG4pPT5lLmFwcGx5KHQsW25dKTpHT319KSgpLFlPPSh0LGUsbik9PntsZXQgbz1bXTtpZihuKXtjb25zdCBuPXQucXVlcnlTZWxlY3RvckFsbChlKTtmb3IobGV0IHQ9MDt0PG4ubGVuZ3RoO3QrKylvLnB1c2goblt0XSl9ZWxzZXtjb25zdCBuPXQucXVlcnlTZWxlY3RvcihlKTtuJiZvLnB1c2gobil9cmV0dXJuIG99KTtsZXQgWk89bnVsbCxYTz0hMTtmdW5jdGlvbiBLTyh0KXtaT3x8KFpPPShmdW5jdGlvbiBlKCl7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBkb2N1bWVudClyZXR1cm4gZG9jdW1lbnQuYm9keTtyZXR1cm4gbnVsbH0pKCl8fHt9LFhPPSEhWk8uc3R5bGUmJiJXZWJraXRBcHBlYXJhbmNlImluIFpPLnN0eWxlKTtsZXQgbj0hMDtpZihaTy5zdHlsZSYmIShmdW5jdGlvbiBvKHQpe3JldHVybiJlYmtpdCI9PXQuc3Vic3RyaW5nKDEsNil9KSh0KSYmKG49dCBpbiBaTy5zdHlsZSwhbiYmWE8pKXtuPSJXZWJraXQiK3QuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkrdC5zdWJzdHIoMSlpbiBaTy5zdHlsZX1yZXR1cm4gbn1jb25zdCBKTz1HTyxRTz1XTywkTz1ZTztmdW5jdGlvbiB0UCh0KXtjb25zdCBlPXt9O3JldHVybiBPYmplY3Qua2V5cyh0KS5mb3JFYWNoKChuPT57Y29uc3Qgbz1uLnJlcGxhY2UoLyhbYS16XSkoW0EtWl0pL2csIiQxLSQyIik7ZVtvXT10W25dfSkpLGV9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NsYXNzIGVQe3ZhbGlkYXRlU3R5bGVQcm9wZXJ0eSh0KXtyZXR1cm4gS08odCl9bWF0Y2hlc0VsZW1lbnQodCxlKXtyZXR1cm4gSk8odCxlKX1jb250YWluc0VsZW1lbnQodCxlKXtyZXR1cm4gUU8odCxlKX1xdWVyeSh0LGUsbil7cmV0dXJuICRPKHQsZSxuKX1jb21wdXRlU3R5bGUodCxlLG4pe3JldHVybiBufHwiIn1hbmltYXRlKHQsZSxuLG8saSxhPVtdLHIpe3JldHVybiBuZXcgVE8obixvKX19ZVAuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGVQKX0sZVAuybVwcm92PVNuKHt0b2tlbjplUCxmYWN0b3J5OmVQLsm1ZmFjfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihlUCxbe3R5cGU6VW19XSxudWxsLG51bGwpO2NsYXNzIG5Qe31uUC5OT09QPW5ldyBlUDsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNvbnN0IG9QPSJuZy1lbnRlciIsaVA9Im5nLWxlYXZlIixhUD0ibmctdHJpZ2dlciIsclA9Ii5uZy10cmlnZ2VyIixzUD0ibmctYW5pbWF0aW5nIixsUD0iLm5nLWFuaW1hdGluZyI7ZnVuY3Rpb24gY1AodCl7aWYoIm51bWJlciI9PXR5cGVvZiB0KXJldHVybiB0O2NvbnN0IGU9dC5tYXRjaCgvXigtP1tcLlxkXSspKG0/cykvKTtyZXR1cm4hZXx8ZS5sZW5ndGg8Mj8wOmRQKHBhcnNlRmxvYXQoZVsxXSksZVsyXSl9ZnVuY3Rpb24gZFAodCxlKXtzd2l0Y2goZSl7Y2FzZSJzIjpyZXR1cm4gMWUzKnQ7ZGVmYXVsdDpyZXR1cm4gdH19ZnVuY3Rpb24gcFAodCxlLG4pe3JldHVybiB0Lmhhc093blByb3BlcnR5KCJkdXJhdGlvbiIpP3Q6KGZ1bmN0aW9uIG8odCxlLG4pe2NvbnN0IG89L14oLT9bXC5cZF0rKShtP3MpKD86XHMrKC0/W1wuXGRdKykobT9zKSk/KD86XHMrKFstYS16XSsoPzpcKC4rP1wpKT8pKT8kL2k7bGV0IGksYT0wLHI9IiI7aWYoInN0cmluZyI9PXR5cGVvZiB0KXtjb25zdCBuPXQubWF0Y2gobyk7aWYobnVsbD09PW4pcmV0dXJuIGUucHVzaChgVGhlIHByb3ZpZGVkIHRpbWluZyB2YWx1ZSAiJHt0fSIgaXMgaW52YWxpZC5gKSx7ZHVyYXRpb246MCxkZWxheTowLGVhc2luZzoiIn07aT1kUChwYXJzZUZsb2F0KG5bMV0pLG5bMl0pO2NvbnN0IHM9blszXTtudWxsIT1zJiYoYT1kUChwYXJzZUZsb2F0KHMpLG5bNF0pKTtjb25zdCBsPW5bNV07bCYmKHI9bCl9ZWxzZSBpPXQ7aWYoIW4pe2xldCBuPSExLG89ZS5sZW5ndGg7aTwwJiYoZS5wdXNoKCJEdXJhdGlvbiB2YWx1ZXMgYmVsb3cgMCBhcmUgbm90IGFsbG93ZWQgZm9yIHRoaXMgYW5pbWF0aW9uIHN0ZXAuIiksbj0hMCksYTwwJiYoZS5wdXNoKCJEZWxheSB2YWx1ZXMgYmVsb3cgMCBhcmUgbm90IGFsbG93ZWQgZm9yIHRoaXMgYW5pbWF0aW9uIHN0ZXAuIiksbj0hMCksbiYmZS5zcGxpY2UobywwLGBUaGUgcHJvdmlkZWQgdGltaW5nIHZhbHVlICIke3R9IiBpcyBpbnZhbGlkLmApfXJldHVybntkdXJhdGlvbjppLGRlbGF5OmEsZWFzaW5nOnJ9fSkodCxlLG4pfWZ1bmN0aW9uIG1QKHQsZT17fSl7cmV0dXJuIE9iamVjdC5rZXlzKHQpLmZvckVhY2goKG49PntlW25dPXRbbl19KSksZX1mdW5jdGlvbiBmUCh0LGUsbj17fSl7aWYoZSlmb3IobGV0IGUgaW4gdCluW2VdPXRbZV07ZWxzZSBtUCh0LG4pO3JldHVybiBufWZ1bmN0aW9uIHVQKHQsZSxuKXtyZXR1cm4gbj9lKyI6IituKyI7IjoiIn1mdW5jdGlvbiBnUCh0KXtsZXQgZT0iIjtmb3IobGV0IG49MDtuPHQuc3R5bGUubGVuZ3RoO24rKyl7Y29uc3Qgbz10LnN0eWxlLml0ZW0obik7ZSs9dVAoMCxvLHQuc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZShvKSl9Zm9yKGNvbnN0IG4gaW4gdC5zdHlsZSl7aWYoIXQuc3R5bGUuaGFzT3duUHJvcGVydHkobil8fG4uc3RhcnRzV2l0aCgiXyIpKWNvbnRpbnVlO2UrPXVQKDAsbi5yZXBsYWNlKC8oW2Etel0pKFtBLVpdKS9nLCIkMS0kMiIpLnRvTG93ZXJDYXNlKCksdC5zdHlsZVtuXSl9dC5zZXRBdHRyaWJ1dGUoInN0eWxlIixlKX1mdW5jdGlvbiBoUCh0LGUsbil7dC5zdHlsZSYmKE9iamVjdC5rZXlzKGUpLmZvckVhY2goKG89Pntjb25zdCBpPU9QKG8pO24mJiFuLmhhc093blByb3BlcnR5KG8pJiYobltvXT10LnN0eWxlW2ldKSx0LnN0eWxlW2ldPWVbb119KSksSU8oKSYmZ1AodCkpfWZ1bmN0aW9uIGJQKHQsZSl7dC5zdHlsZSYmKE9iamVjdC5rZXlzKGUpLmZvckVhY2goKGU9Pntjb25zdCBuPU9QKGUpO3Quc3R5bGVbbl09IiJ9KSksSU8oKSYmZ1AodCkpfWZ1bmN0aW9uIHlQKHQpe3JldHVybiBBcnJheS5pc0FycmF5KHQpPzE9PXQubGVuZ3RoP3RbMF06UE8odCk6dH1jb25zdCBfUD1uZXcgUmVnRXhwKCJ7e1xccyooLis/KVxccyp9fSIsImciKTtmdW5jdGlvbiBDUCh0KXtsZXQgZT1bXTtpZigic3RyaW5nIj09dHlwZW9mIHQpe2xldCBuO2Zvcig7bj1fUC5leGVjKHQpOyllLnB1c2goblsxXSk7X1AubGFzdEluZGV4PTB9cmV0dXJuIGV9ZnVuY3Rpb24gTVAodCxlLG4pe2NvbnN0IG89dC50b1N0cmluZygpLGk9by5yZXBsYWNlKF9QLCgodCxvKT0+e2xldCBpPWVbb107cmV0dXJuIGUuaGFzT3duUHJvcGVydHkobyl8fChuLnB1c2goYFBsZWFzZSBwcm92aWRlIGEgdmFsdWUgZm9yIHRoZSBhbmltYXRpb24gcGFyYW0gJHtvfWApLGk9IiIpLGkudG9TdHJpbmcoKX0pKTtyZXR1cm4gaT09bz90Oml9ZnVuY3Rpb24gdlAodCl7Y29uc3QgZT1bXTtsZXQgbj10Lm5leHQoKTtmb3IoOyFuLmRvbmU7KWUucHVzaChuLnZhbHVlKSxuPXQubmV4dCgpO3JldHVybiBlfWNvbnN0IHhQPS8tKyhbYS16MC05XSkvZztmdW5jdGlvbiBPUCh0KXtyZXR1cm4gdC5yZXBsYWNlKHhQLCgoLi4udCk9PnRbMV0udG9VcHBlckNhc2UoKSkpfWZ1bmN0aW9uIFBQKHQsZSl7cmV0dXJuIDA9PT10fHwwPT09ZX1mdW5jdGlvbiB3UCh0LGUsbil7Y29uc3Qgbz1PYmplY3Qua2V5cyhuKTtpZihvLmxlbmd0aCYmZS5sZW5ndGgpe2xldCBhPWVbMF0scj1bXTtpZihvLmZvckVhY2goKHQ9PnthLmhhc093blByb3BlcnR5KHQpfHxyLnB1c2godCksYVt0XT1uW3RdfSkpLHIubGVuZ3RoKWZvcih2YXIgaT0xO2k8ZS5sZW5ndGg7aSsrKXtsZXQgbj1lW2ldO3IuZm9yRWFjaCgoZnVuY3Rpb24oZSl7bltlXT1TUCh0LGUpfSkpfX1yZXR1cm4gZX1mdW5jdGlvbiBrUCh0LGUsbil7c3dpdGNoKGUudHlwZSl7Y2FzZSA3OnJldHVybiB0LnZpc2l0VHJpZ2dlcihlLG4pO2Nhc2UgMDpyZXR1cm4gdC52aXNpdFN0YXRlKGUsbik7Y2FzZSAxOnJldHVybiB0LnZpc2l0VHJhbnNpdGlvbihlLG4pO2Nhc2UgMjpyZXR1cm4gdC52aXNpdFNlcXVlbmNlKGUsbik7Y2FzZSAzOnJldHVybiB0LnZpc2l0R3JvdXAoZSxuKTtjYXNlIDQ6cmV0dXJuIHQudmlzaXRBbmltYXRlKGUsbik7Y2FzZSA1OnJldHVybiB0LnZpc2l0S2V5ZnJhbWVzKGUsbik7Y2FzZSA2OnJldHVybiB0LnZpc2l0U3R5bGUoZSxuKTtjYXNlIDg6cmV0dXJuIHQudmlzaXRSZWZlcmVuY2UoZSxuKTtjYXNlIDk6cmV0dXJuIHQudmlzaXRBbmltYXRlQ2hpbGQoZSxuKTtjYXNlIDEwOnJldHVybiB0LnZpc2l0QW5pbWF0ZVJlZihlLG4pO2Nhc2UgMTE6cmV0dXJuIHQudmlzaXRRdWVyeShlLG4pO2Nhc2UgMTI6cmV0dXJuIHQudmlzaXRTdGFnZ2VyKGUsbik7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoYFVuYWJsZSB0byByZXNvbHZlIGFuaW1hdGlvbiBtZXRhZGF0YSBub2RlICMke2UudHlwZX1gKX19ZnVuY3Rpb24gU1AodCxlKXtyZXR1cm4gd2luZG93LmdldENvbXB1dGVkU3R5bGUodClbZV19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NvbnN0IERQPSIqIjtmdW5jdGlvbiBSUCh0LGUpe2NvbnN0IG49W107cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0P3Quc3BsaXQoL1xzKixccyovKS5mb3JFYWNoKCh0PT4oZnVuY3Rpb24gbyh0LGUsbil7aWYoIjoiPT10WzBdKXtjb25zdCBvPShmdW5jdGlvbiBvKHQsZSl7c3dpdGNoKHQpe2Nhc2UiOmVudGVyIjpyZXR1cm4idm9pZCA9PiAqIjtjYXNlIjpsZWF2ZSI6cmV0dXJuIiogPT4gdm9pZCI7Y2FzZSI6aW5jcmVtZW50IjpyZXR1cm4odCxlKT0+cGFyc2VGbG9hdChlKT5wYXJzZUZsb2F0KHQpO2Nhc2UiOmRlY3JlbWVudCI6cmV0dXJuKHQsZSk9PnBhcnNlRmxvYXQoZSk8cGFyc2VGbG9hdCh0KTtkZWZhdWx0OnJldHVybiBlLnB1c2goYFRoZSB0cmFuc2l0aW9uIGFsaWFzIHZhbHVlICIke3R9IiBpcyBub3Qgc3VwcG9ydGVkYCksIiogPT4gKiJ9fSkodCxuKTtpZigiZnVuY3Rpb24iPT10eXBlb2YgbylyZXR1cm4gdm9pZCBlLnB1c2gobyk7dD1vfWNvbnN0IGk9dC5tYXRjaCgvXihcKnxbLVx3XSspXHMqKDw/Wz0tXT4pXHMqKFwqfFstXHddKykkLyk7aWYobnVsbD09aXx8aS5sZW5ndGg8NClyZXR1cm4gbi5wdXNoKGBUaGUgcHJvdmlkZWQgdHJhbnNpdGlvbiBleHByZXNzaW9uICIke3R9IiBpcyBub3Qgc3VwcG9ydGVkYCksZTtjb25zdCBhPWlbMV0scj1pWzJdLHM9aVszXTtlLnB1c2goVFAoYSxzKSk7Y29uc3QgbD1hPT1EUCYmcz09RFA7IjwiIT1yWzBdfHxsfHxlLnB1c2goVFAocyxhKSl9KSh0LG4sZSkpKTpuLnB1c2godCksbn1jb25zdCBFUD1uZXcgU2V0KFsidHJ1ZSIsIjEiXSksQVA9bmV3IFNldChbImZhbHNlIiwiMCJdKTtmdW5jdGlvbiBUUCh0LGUpe2NvbnN0IG49RVAuaGFzKHQpfHxBUC5oYXModCksbz1FUC5oYXMoZSl8fEFQLmhhcyhlKTtyZXR1cm4oaSxhKT0+e2xldCByPXQ9PURQfHx0PT1pLHM9ZT09RFB8fGU9PWE7cmV0dXJuIXImJm4mJiJib29sZWFuIj09dHlwZW9mIGkmJihyPWk/RVAuaGFzKHQpOkFQLmhhcyh0KSksIXMmJm8mJiJib29sZWFuIj09dHlwZW9mIGEmJihzPWE/RVAuaGFzKGUpOkFQLmhhcyhlKSksciYmc319Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NvbnN0IE5QPSI6c2VsZiIselA9bmV3IFJlZ0V4cCgicyo6c2VsZnMqLD8iLCJnIik7ZnVuY3Rpb24gSVAodCxlLG4pe3JldHVybiBuZXcgSFAodCkuYnVpbGQoZSxuKX1jbGFzcyBIUHtjb25zdHJ1Y3Rvcih0KXt0aGlzLl9kcml2ZXI9dH1idWlsZCh0LGUpe2NvbnN0IG49bmV3IEZQKGUpO3JldHVybiB0aGlzLl9yZXNldENvbnRleHRTdHlsZVRpbWluZ1N0YXRlKG4pLGtQKHRoaXMseVAodCksbil9X3Jlc2V0Q29udGV4dFN0eWxlVGltaW5nU3RhdGUodCl7dC5jdXJyZW50UXVlcnlTZWxlY3Rvcj0iIix0LmNvbGxlY3RlZFN0eWxlcz17fSx0LmNvbGxlY3RlZFN0eWxlc1siIl09e30sdC5jdXJyZW50VGltZT0wfXZpc2l0VHJpZ2dlcih0LGUpe2xldCBuPWUucXVlcnlDb3VudD0wLG89ZS5kZXBDb3VudD0wO2NvbnN0IGk9W10sYT1bXTtyZXR1cm4iQCI9PXQubmFtZS5jaGFyQXQoMCkmJmUuZXJyb3JzLnB1c2goImFuaW1hdGlvbiB0cmlnZ2VycyBjYW5ub3QgYmUgcHJlZml4ZWQgd2l0aCBhbiBgQGAgc2lnbiAoZS5nLiB0cmlnZ2VyKCdAZm9vJywgWy4uLl0pKSIpLHQuZGVmaW5pdGlvbnMuZm9yRWFjaCgodD0+e2lmKHRoaXMuX3Jlc2V0Q29udGV4dFN0eWxlVGltaW5nU3RhdGUoZSksMD09dC50eXBlKXtjb25zdCBuPXQsbz1uLm5hbWU7by50b1N0cmluZygpLnNwbGl0KC9ccyosXHMqLykuZm9yRWFjaCgodD0+e24ubmFtZT10LGkucHVzaCh0aGlzLnZpc2l0U3RhdGUobixlKSl9KSksbi5uYW1lPW99ZWxzZSBpZigxPT10LnR5cGUpe2NvbnN0IGk9dGhpcy52aXNpdFRyYW5zaXRpb24odCxlKTtuKz1pLnF1ZXJ5Q291bnQsbys9aS5kZXBDb3VudCxhLnB1c2goaSl9ZWxzZSBlLmVycm9ycy5wdXNoKCJvbmx5IHN0YXRlKCkgYW5kIHRyYW5zaXRpb24oKSBkZWZpbml0aW9ucyBjYW4gc2l0IGluc2lkZSBvZiBhIHRyaWdnZXIoKSIpfSkpLHt0eXBlOjcsbmFtZTp0Lm5hbWUsc3RhdGVzOmksdHJhbnNpdGlvbnM6YSxxdWVyeUNvdW50Om4sZGVwQ291bnQ6byxvcHRpb25zOm51bGx9fXZpc2l0U3RhdGUodCxlKXtjb25zdCBuPXRoaXMudmlzaXRTdHlsZSh0LnN0eWxlcyxlKSxvPXQub3B0aW9ucyYmdC5vcHRpb25zLnBhcmFtc3x8bnVsbDtpZihuLmNvbnRhaW5zRHluYW1pY1N0eWxlcyl7Y29uc3QgaT1uZXcgU2V0LGE9b3x8e307aWYobi5zdHlsZXMuZm9yRWFjaCgodD0+e2lmKExQKHQpKXtjb25zdCBlPXQ7T2JqZWN0LmtleXMoZSkuZm9yRWFjaCgodD0+e0NQKGVbdF0pLmZvckVhY2goKHQ9PnthLmhhc093blByb3BlcnR5KHQpfHxpLmFkZCh0KX0pKX0pKX19KSksaS5zaXplKXtjb25zdCBuPXZQKGkudmFsdWVzKCkpO2UuZXJyb3JzLnB1c2goYHN0YXRlKCIke3QubmFtZX0iLCAuLi4pIG11c3QgZGVmaW5lIGRlZmF1bHQgdmFsdWVzIGZvciBhbGwgdGhlIGZvbGxvd2luZyBzdHlsZSBzdWJzdGl0dXRpb25zOiAke24uam9pbigiLCAiKX1gKX19cmV0dXJue3R5cGU6MCxuYW1lOnQubmFtZSxzdHlsZTpuLG9wdGlvbnM6bz97cGFyYW1zOm99Om51bGx9fXZpc2l0VHJhbnNpdGlvbih0LGUpe2UucXVlcnlDb3VudD0wLGUuZGVwQ291bnQ9MDtjb25zdCBuPWtQKHRoaXMseVAodC5hbmltYXRpb24pLGUpO3JldHVybnt0eXBlOjEsbWF0Y2hlcnM6UlAodC5leHByLGUuZXJyb3JzKSxhbmltYXRpb246bixxdWVyeUNvdW50OmUucXVlcnlDb3VudCxkZXBDb3VudDplLmRlcENvdW50LG9wdGlvbnM6QlAodC5vcHRpb25zKX19dmlzaXRTZXF1ZW5jZSh0LGUpe3JldHVybnt0eXBlOjIsc3RlcHM6dC5zdGVwcy5tYXAoKHQ9PmtQKHRoaXMsdCxlKSkpLG9wdGlvbnM6QlAodC5vcHRpb25zKX19dmlzaXRHcm91cCh0LGUpe2NvbnN0IG49ZS5jdXJyZW50VGltZTtsZXQgbz0wO2NvbnN0IGk9dC5zdGVwcy5tYXAoKHQ9PntlLmN1cnJlbnRUaW1lPW47Y29uc3QgaT1rUCh0aGlzLHQsZSk7cmV0dXJuIG89TWF0aC5tYXgobyxlLmN1cnJlbnRUaW1lKSxpfSkpO3JldHVybiBlLmN1cnJlbnRUaW1lPW8se3R5cGU6MyxzdGVwczppLG9wdGlvbnM6QlAodC5vcHRpb25zKX19dmlzaXRBbmltYXRlKHQsZSl7Y29uc3Qgbj0oZnVuY3Rpb24gbyh0LGUpe2xldCBuPW51bGw7aWYodC5oYXNPd25Qcm9wZXJ0eSgiZHVyYXRpb24iKSluPXQ7ZWxzZSBpZigibnVtYmVyIj09dHlwZW9mIHQpe3JldHVybiBWUChwUCh0LGUpLmR1cmF0aW9uLDAsIiIpfWNvbnN0IG89dDtpZihvLnNwbGl0KC9ccysvKS5zb21lKCh0PT4ieyI9PXQuY2hhckF0KDApJiYieyI9PXQuY2hhckF0KDEpKSkpe2NvbnN0IHQ9VlAoMCwwLCIiKTtyZXR1cm4gdC5keW5hbWljPSEwLHQuc3RyVmFsdWU9byx0fXJldHVybiBuPW58fHBQKG8sZSksVlAobi5kdXJhdGlvbixuLmRlbGF5LG4uZWFzaW5nKX0pKHQudGltaW5ncyxlLmVycm9ycyk7bGV0IGk7ZS5jdXJyZW50QW5pbWF0ZVRpbWluZ3M9bjtsZXQgYT10LnN0eWxlcz90LnN0eWxlczp3Tyh7fSk7aWYoNT09YS50eXBlKWk9dGhpcy52aXNpdEtleWZyYW1lcyhhLGUpO2Vsc2V7bGV0IG89dC5zdHlsZXMsYT0hMTtpZighbyl7YT0hMDtjb25zdCB0PXt9O24uZWFzaW5nJiYodC5lYXNpbmc9bi5lYXNpbmcpLG89d08odCl9ZS5jdXJyZW50VGltZSs9bi5kdXJhdGlvbituLmRlbGF5O2NvbnN0IHI9dGhpcy52aXNpdFN0eWxlKG8sZSk7ci5pc0VtcHR5U3RlcD1hLGk9cn1yZXR1cm4gZS5jdXJyZW50QW5pbWF0ZVRpbWluZ3M9bnVsbCx7dHlwZTo0LHRpbWluZ3M6bixzdHlsZTppLG9wdGlvbnM6bnVsbH19dmlzaXRTdHlsZSh0LGUpe2NvbnN0IG49dGhpcy5fbWFrZVN0eWxlQXN0KHQsZSk7cmV0dXJuIHRoaXMuX3ZhbGlkYXRlU3R5bGVBc3QobixlKSxufV9tYWtlU3R5bGVBc3QodCxlKXtjb25zdCBuPVtdO0FycmF5LmlzQXJyYXkodC5zdHlsZXMpP3Quc3R5bGVzLmZvckVhY2goKHQ9Pnsic3RyaW5nIj09dHlwZW9mIHQ/dD09dk8/bi5wdXNoKHQpOmUuZXJyb3JzLnB1c2goYFRoZSBwcm92aWRlZCBzdHlsZSBzdHJpbmcgdmFsdWUgJHt0fSBpcyBub3QgYWxsb3dlZC5gKTpuLnB1c2godCl9KSk6bi5wdXNoKHQuc3R5bGVzKTtsZXQgbz0hMSxpPW51bGw7cmV0dXJuIG4uZm9yRWFjaCgodD0+e2lmKExQKHQpKXtjb25zdCBlPXQsbj1lLmVhc2luZztpZihuJiYoaT1uLGRlbGV0ZSBlLmVhc2luZyksIW8pZm9yKGxldCB0IGluIGUpe2lmKGVbdF0udG9TdHJpbmcoKS5pbmRleE9mKCJ7eyIpPj0wKXtvPSEwO2JyZWFrfX19fSkpLHt0eXBlOjYsc3R5bGVzOm4sZWFzaW5nOmksb2Zmc2V0OnQub2Zmc2V0LGNvbnRhaW5zRHluYW1pY1N0eWxlczpvLG9wdGlvbnM6bnVsbH19X3ZhbGlkYXRlU3R5bGVBc3QodCxlKXtjb25zdCBuPWUuY3VycmVudEFuaW1hdGVUaW1pbmdzO2xldCBvPWUuY3VycmVudFRpbWUsaT1lLmN1cnJlbnRUaW1lO24mJmk+MCYmKGktPW4uZHVyYXRpb24rbi5kZWxheSksdC5zdHlsZXMuZm9yRWFjaCgodD0+eyJzdHJpbmciIT10eXBlb2YgdCYmT2JqZWN0LmtleXModCkuZm9yRWFjaCgobj0+e2lmKCF0aGlzLl9kcml2ZXIudmFsaWRhdGVTdHlsZVByb3BlcnR5KG4pKXJldHVybiB2b2lkIGUuZXJyb3JzLnB1c2goYFRoZSBwcm92aWRlZCBhbmltYXRpb24gcHJvcGVydHkgIiR7bn0iIGlzIG5vdCBhIHN1cHBvcnRlZCBDU1MgcHJvcGVydHkgZm9yIGFuaW1hdGlvbnNgKTtjb25zdCBhPWUuY29sbGVjdGVkU3R5bGVzW2UuY3VycmVudFF1ZXJ5U2VsZWN0b3JdLHI9YVtuXTtsZXQgcz0hMDtyJiYoaSE9byYmaT49ci5zdGFydFRpbWUmJm88PXIuZW5kVGltZSYmKGUuZXJyb3JzLnB1c2goYFRoZSBDU1MgcHJvcGVydHkgIiR7bn0iIHRoYXQgZXhpc3RzIGJldHdlZW4gdGhlIHRpbWVzIG9mICIke3Iuc3RhcnRUaW1lfW1zIiBhbmQgIiR7ci5lbmRUaW1lfW1zIiBpcyBhbHNvIGJlaW5nIGFuaW1hdGVkIGluIGEgcGFyYWxsZWwgYW5pbWF0aW9uIGJldHdlZW4gdGhlIHRpbWVzIG9mICIke2l9bXMiIGFuZCAiJHtvfW1zImApLHM9ITEpLGk9ci5zdGFydFRpbWUpLHMmJihhW25dPXtzdGFydFRpbWU6aSxlbmRUaW1lOm99KSxlLm9wdGlvbnMmJihmdW5jdGlvbiBsKHQsZSxuKXtjb25zdCBvPWUucGFyYW1zfHx7fSxpPUNQKHQpO2kubGVuZ3RoJiZpLmZvckVhY2goKHQ9PntvLmhhc093blByb3BlcnR5KHQpfHxuLnB1c2goYFVuYWJsZSB0byByZXNvbHZlIHRoZSBsb2NhbCBhbmltYXRpb24gcGFyYW0gJHt0fSBpbiB0aGUgZ2l2ZW4gbGlzdCBvZiB2YWx1ZXNgKX0pKX0pKHRbbl0sZS5vcHRpb25zLGUuZXJyb3JzKX0pKX0pKX12aXNpdEtleWZyYW1lcyh0LGUpe2NvbnN0IG49e3R5cGU6NSxzdHlsZXM6W10sb3B0aW9uczpudWxsfTtpZighZS5jdXJyZW50QW5pbWF0ZVRpbWluZ3MpcmV0dXJuIGUuZXJyb3JzLnB1c2goImtleWZyYW1lcygpIG11c3QgYmUgcGxhY2VkIGluc2lkZSBvZiBhIGNhbGwgdG8gYW5pbWF0ZSgpIiksbjtsZXQgbz0wO2NvbnN0IGk9W107bGV0IGE9ITEscj0hMSxzPTA7Y29uc3QgbD10LnN0ZXBzLm1hcCgodD0+e2NvbnN0IG49dGhpcy5fbWFrZVN0eWxlQXN0KHQsZSk7bGV0IGw9bnVsbCE9bi5vZmZzZXQ/bi5vZmZzZXQ6KGZ1bmN0aW9uIGModCl7aWYoInN0cmluZyI9PXR5cGVvZiB0KXJldHVybiBudWxsO2xldCBlPW51bGw7aWYoQXJyYXkuaXNBcnJheSh0KSl0LmZvckVhY2goKHQ9PntpZihMUCh0KSYmdC5oYXNPd25Qcm9wZXJ0eSgib2Zmc2V0Iikpe2NvbnN0IG49dDtlPXBhcnNlRmxvYXQobi5vZmZzZXQpLGRlbGV0ZSBuLm9mZnNldH19KSk7ZWxzZSBpZihMUCh0KSYmdC5oYXNPd25Qcm9wZXJ0eSgib2Zmc2V0Iikpe2NvbnN0IG49dDtlPXBhcnNlRmxvYXQobi5vZmZzZXQpLGRlbGV0ZSBuLm9mZnNldH1yZXR1cm4gZX0pKG4uc3R5bGVzKSxkPTA7cmV0dXJuIG51bGwhPWwmJihvKyssZD1uLm9mZnNldD1sKSxyPXJ8fGQ8MHx8ZD4xLGE9YXx8ZDxzLHM9ZCxpLnB1c2goZCksbn0pKTtyJiZlLmVycm9ycy5wdXNoKCJQbGVhc2UgZW5zdXJlIHRoYXQgYWxsIGtleWZyYW1lIG9mZnNldHMgYXJlIGJldHdlZW4gMCBhbmQgMSIpLGEmJmUuZXJyb3JzLnB1c2goIlBsZWFzZSBlbnN1cmUgdGhhdCBhbGwga2V5ZnJhbWUgb2Zmc2V0cyBhcmUgaW4gb3JkZXIiKTtjb25zdCBjPXQuc3RlcHMubGVuZ3RoO2xldCBkPTA7bz4wJiZvPGM/ZS5lcnJvcnMucHVzaCgiTm90IGFsbCBzdHlsZSgpIHN0ZXBzIHdpdGhpbiB0aGUgZGVjbGFyZWQga2V5ZnJhbWVzKCkgY29udGFpbiBvZmZzZXRzIik6MD09byYmKGQ9MS8oYy0xKSk7Y29uc3QgcD1jLTEsbT1lLmN1cnJlbnRUaW1lLGY9ZS5jdXJyZW50QW5pbWF0ZVRpbWluZ3MsdT1mLmR1cmF0aW9uO3JldHVybiBsLmZvckVhY2goKCh0LG8pPT57Y29uc3QgYT1kPjA/bz09cD8xOmQqbzppW29dLHI9YSp1O2UuY3VycmVudFRpbWU9bStmLmRlbGF5K3IsZi5kdXJhdGlvbj1yLHRoaXMuX3ZhbGlkYXRlU3R5bGVBc3QodCxlKSx0Lm9mZnNldD1hLG4uc3R5bGVzLnB1c2godCl9KSksbn12aXNpdFJlZmVyZW5jZSh0LGUpe3JldHVybnt0eXBlOjgsYW5pbWF0aW9uOmtQKHRoaXMseVAodC5hbmltYXRpb24pLGUpLG9wdGlvbnM6QlAodC5vcHRpb25zKX19dmlzaXRBbmltYXRlQ2hpbGQodCxlKXtyZXR1cm4gZS5kZXBDb3VudCsrLHt0eXBlOjksb3B0aW9uczpCUCh0Lm9wdGlvbnMpfX12aXNpdEFuaW1hdGVSZWYodCxlKXtyZXR1cm57dHlwZToxMCxhbmltYXRpb246dGhpcy52aXNpdFJlZmVyZW5jZSh0LmFuaW1hdGlvbixlKSxvcHRpb25zOkJQKHQub3B0aW9ucyl9fXZpc2l0UXVlcnkodCxlKXtjb25zdCBuPWUuY3VycmVudFF1ZXJ5U2VsZWN0b3Isbz10Lm9wdGlvbnN8fHt9O2UucXVlcnlDb3VudCsrLGUuY3VycmVudFF1ZXJ5PXQ7Y29uc3RbaSxhXT0oZnVuY3Rpb24gcih0KXtjb25zdCBlPSEhdC5zcGxpdCgvXHMqLFxzKi8pLmZpbmQoKHQ9PnQ9PU5QKSk7ZSYmKHQ9dC5yZXBsYWNlKHpQLCIiKSk7cmV0dXJuW3Q9dC5yZXBsYWNlKC9AXCovZyxyUCkucmVwbGFjZSgvQFx3Ky9nLCh0PT4iLm5nLXRyaWdnZXItIit0LnN1YnN0cigxKSkpLnJlcGxhY2UoLzphbmltYXRpbmcvZyxsUCksZV19KSh0LnNlbGVjdG9yKTtlLmN1cnJlbnRRdWVyeVNlbGVjdG9yPW4ubGVuZ3RoP24rIiAiK2k6aSxqTyhlLmNvbGxlY3RlZFN0eWxlcyxlLmN1cnJlbnRRdWVyeVNlbGVjdG9yLHt9KTtjb25zdCBzPWtQKHRoaXMseVAodC5hbmltYXRpb24pLGUpO3JldHVybiBlLmN1cnJlbnRRdWVyeT1udWxsLGUuY3VycmVudFF1ZXJ5U2VsZWN0b3I9bix7dHlwZToxMSxzZWxlY3RvcjppLGxpbWl0Om8ubGltaXR8fDAsb3B0aW9uYWw6ISFvLm9wdGlvbmFsLGluY2x1ZGVTZWxmOmEsYW5pbWF0aW9uOnMsb3JpZ2luYWxTZWxlY3Rvcjp0LnNlbGVjdG9yLG9wdGlvbnM6QlAodC5vcHRpb25zKX19dmlzaXRTdGFnZ2VyKHQsZSl7ZS5jdXJyZW50UXVlcnl8fGUuZXJyb3JzLnB1c2goInN0YWdnZXIoKSBjYW4gb25seSBiZSB1c2VkIGluc2lkZSBvZiBxdWVyeSgpIik7Y29uc3Qgbj0iZnVsbCI9PT10LnRpbWluZ3M/e2R1cmF0aW9uOjAsZGVsYXk6MCxlYXNpbmc6ImZ1bGwifTpwUCh0LnRpbWluZ3MsZS5lcnJvcnMsITApO3JldHVybnt0eXBlOjEyLGFuaW1hdGlvbjprUCh0aGlzLHlQKHQuYW5pbWF0aW9uKSxlKSx0aW1pbmdzOm4sb3B0aW9uczpudWxsfX19Y2xhc3MgRlB7Y29uc3RydWN0b3IodCl7dGhpcy5lcnJvcnM9dCx0aGlzLnF1ZXJ5Q291bnQ9MCx0aGlzLmRlcENvdW50PTAsdGhpcy5jdXJyZW50VHJhbnNpdGlvbj1udWxsLHRoaXMuY3VycmVudFF1ZXJ5PW51bGwsdGhpcy5jdXJyZW50UXVlcnlTZWxlY3Rvcj1udWxsLHRoaXMuY3VycmVudEFuaW1hdGVUaW1pbmdzPW51bGwsdGhpcy5jdXJyZW50VGltZT0wLHRoaXMuY29sbGVjdGVkU3R5bGVzPXt9LHRoaXMub3B0aW9ucz1udWxsfX1mdW5jdGlvbiBMUCh0KXtyZXR1cm4hQXJyYXkuaXNBcnJheSh0KSYmIm9iamVjdCI9PXR5cGVvZiB0fWZ1bmN0aW9uIEJQKHQpe3JldHVybiB0Pyh0PW1QKHQpKS5wYXJhbXMmJih0LnBhcmFtcz0oZnVuY3Rpb24gZSh0KXtyZXR1cm4gdD9tUCh0KTpudWxsfSkodC5wYXJhbXMpKTp0PXt9LHR9ZnVuY3Rpb24gVlAodCxlLG4pe3JldHVybntkdXJhdGlvbjp0LGRlbGF5OmUsZWFzaW5nOm59fWZ1bmN0aW9uIGpQKHQsZSxuLG8saSxhLHI9bnVsbCxzPSExKXtyZXR1cm57dHlwZToxLGVsZW1lbnQ6dCxrZXlmcmFtZXM6ZSxwcmVTdHlsZVByb3BzOm4scG9zdFN0eWxlUHJvcHM6byxkdXJhdGlvbjppLGRlbGF5OmEsdG90YWxUaW1lOmkrYSxlYXNpbmc6cixzdWJUaW1lbGluZTpzfX1jbGFzcyBVUHtjb25zdHJ1Y3Rvcigpe3RoaXMuX21hcD1uZXcgTWFwfWNvbnN1bWUodCl7bGV0IGU9dGhpcy5fbWFwLmdldCh0KTtyZXR1cm4gZT90aGlzLl9tYXAuZGVsZXRlKHQpOmU9W10sZX1hcHBlbmQodCxlKXtsZXQgbj10aGlzLl9tYXAuZ2V0KHQpO258fHRoaXMuX21hcC5zZXQodCxuPVtdKSxuLnB1c2goLi4uZSl9aGFzKHQpe3JldHVybiB0aGlzLl9tYXAuaGFzKHQpfWNsZWFyKCl7dGhpcy5fbWFwLmNsZWFyKCl9fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jb25zdCBXUD1uZXcgUmVnRXhwKCI6ZW50ZXIiLCJnIiksR1A9bmV3IFJlZ0V4cCgiOmxlYXZlIiwiZyIpO2Z1bmN0aW9uIFlQKHQsZSxuLG8saSxhPXt9LHI9e30scyxsLGM9W10pe3JldHVybihuZXcgcVApLmJ1aWxkS2V5ZnJhbWVzKHQsZSxuLG8saSxhLHIscyxsLGMpfWNsYXNzIHFQe2J1aWxkS2V5ZnJhbWVzKHQsZSxuLG8saSxhLHIscyxsLGM9W10pe2w9bHx8bmV3IFVQO2NvbnN0IGQ9bmV3IFhQKHQsZSxsLG8saSxjLFtdKTtkLm9wdGlvbnM9cyxkLmN1cnJlbnRUaW1lbGluZS5zZXRTdHlsZXMoW2FdLG51bGwsZC5lcnJvcnMscyksa1AodGhpcyxuLGQpO2NvbnN0IHA9ZC50aW1lbGluZXMuZmlsdGVyKCh0PT50LmNvbnRhaW5zQW5pbWF0aW9uKCkpKTtpZihwLmxlbmd0aCYmT2JqZWN0LmtleXMocikubGVuZ3RoKXtjb25zdCB0PXBbcC5sZW5ndGgtMV07dC5hbGxvd09ubHlUaW1lbGluZVN0eWxlcygpfHx0LnNldFN0eWxlcyhbcl0sbnVsbCxkLmVycm9ycyxzKX1yZXR1cm4gcC5sZW5ndGg/cC5tYXAoKHQ9PnQuYnVpbGRLZXlmcmFtZXMoKSkpOltqUChlLFtdLFtdLFtdLDAsMCwiIiwhMSldfXZpc2l0VHJpZ2dlcih0LGUpe312aXNpdFN0YXRlKHQsZSl7fXZpc2l0VHJhbnNpdGlvbih0LGUpe312aXNpdEFuaW1hdGVDaGlsZCh0LGUpe2NvbnN0IG49ZS5zdWJJbnN0cnVjdGlvbnMuY29uc3VtZShlLmVsZW1lbnQpO2lmKG4pe2NvbnN0IG89ZS5jcmVhdGVTdWJDb250ZXh0KHQub3B0aW9ucyksaT1lLmN1cnJlbnRUaW1lbGluZS5jdXJyZW50VGltZSxhPXRoaXMuX3Zpc2l0U3ViSW5zdHJ1Y3Rpb25zKG4sbyxvLm9wdGlvbnMpO2khPWEmJmUudHJhbnNmb3JtSW50b05ld1RpbWVsaW5lKGEpfWUucHJldmlvdXNOb2RlPXR9dmlzaXRBbmltYXRlUmVmKHQsZSl7Y29uc3Qgbj1lLmNyZWF0ZVN1YkNvbnRleHQodC5vcHRpb25zKTtuLnRyYW5zZm9ybUludG9OZXdUaW1lbGluZSgpLHRoaXMudmlzaXRSZWZlcmVuY2UodC5hbmltYXRpb24sbiksZS50cmFuc2Zvcm1JbnRvTmV3VGltZWxpbmUobi5jdXJyZW50VGltZWxpbmUuY3VycmVudFRpbWUpLGUucHJldmlvdXNOb2RlPXR9X3Zpc2l0U3ViSW5zdHJ1Y3Rpb25zKHQsZSxuKXtsZXQgbz1lLmN1cnJlbnRUaW1lbGluZS5jdXJyZW50VGltZTtjb25zdCBpPW51bGwhPW4uZHVyYXRpb24/Y1Aobi5kdXJhdGlvbik6bnVsbCxhPW51bGwhPW4uZGVsYXk/Y1Aobi5kZWxheSk6bnVsbDtyZXR1cm4gMCE9PWkmJnQuZm9yRWFjaCgodD0+e2NvbnN0IG49ZS5hcHBlbmRJbnN0cnVjdGlvblRvVGltZWxpbmUodCxpLGEpO289TWF0aC5tYXgobyxuLmR1cmF0aW9uK24uZGVsYXkpfSkpLG99dmlzaXRSZWZlcmVuY2UodCxlKXtlLnVwZGF0ZU9wdGlvbnModC5vcHRpb25zLCEwKSxrUCh0aGlzLHQuYW5pbWF0aW9uLGUpLGUucHJldmlvdXNOb2RlPXR9dmlzaXRTZXF1ZW5jZSh0LGUpe2NvbnN0IG49ZS5zdWJDb250ZXh0Q291bnQ7bGV0IG89ZTtjb25zdCBpPXQub3B0aW9ucztpZihpJiYoaS5wYXJhbXN8fGkuZGVsYXkpJiYobz1lLmNyZWF0ZVN1YkNvbnRleHQoaSksby50cmFuc2Zvcm1JbnRvTmV3VGltZWxpbmUoKSxudWxsIT1pLmRlbGF5KSl7Nj09by5wcmV2aW91c05vZGUudHlwZSYmKG8uY3VycmVudFRpbWVsaW5lLnNuYXBzaG90Q3VycmVudFN0eWxlcygpLG8ucHJldmlvdXNOb2RlPVpQKTtjb25zdCB0PWNQKGkuZGVsYXkpO28uZGVsYXlOZXh0U3RlcCh0KX10LnN0ZXBzLmxlbmd0aCYmKHQuc3RlcHMuZm9yRWFjaCgodD0+a1AodGhpcyx0LG8pKSksby5jdXJyZW50VGltZWxpbmUuYXBwbHlTdHlsZXNUb0tleWZyYW1lKCksby5zdWJDb250ZXh0Q291bnQ+biYmby50cmFuc2Zvcm1JbnRvTmV3VGltZWxpbmUoKSksZS5wcmV2aW91c05vZGU9dH12aXNpdEdyb3VwKHQsZSl7Y29uc3Qgbj1bXTtsZXQgbz1lLmN1cnJlbnRUaW1lbGluZS5jdXJyZW50VGltZTtjb25zdCBpPXQub3B0aW9ucyYmdC5vcHRpb25zLmRlbGF5P2NQKHQub3B0aW9ucy5kZWxheSk6MDt0LnN0ZXBzLmZvckVhY2goKGE9Pntjb25zdCByPWUuY3JlYXRlU3ViQ29udGV4dCh0Lm9wdGlvbnMpO2kmJnIuZGVsYXlOZXh0U3RlcChpKSxrUCh0aGlzLGEsciksbz1NYXRoLm1heChvLHIuY3VycmVudFRpbWVsaW5lLmN1cnJlbnRUaW1lKSxuLnB1c2goci5jdXJyZW50VGltZWxpbmUpfSkpLG4uZm9yRWFjaCgodD0+ZS5jdXJyZW50VGltZWxpbmUubWVyZ2VUaW1lbGluZUNvbGxlY3RlZFN0eWxlcyh0KSkpLGUudHJhbnNmb3JtSW50b05ld1RpbWVsaW5lKG8pLGUucHJldmlvdXNOb2RlPXR9X3Zpc2l0VGltaW5nKHQsZSl7aWYodC5keW5hbWljKXtjb25zdCBuPXQuc3RyVmFsdWU7cmV0dXJuIHBQKGUucGFyYW1zP01QKG4sZS5wYXJhbXMsZS5lcnJvcnMpOm4sZS5lcnJvcnMpfXJldHVybntkdXJhdGlvbjp0LmR1cmF0aW9uLGRlbGF5OnQuZGVsYXksZWFzaW5nOnQuZWFzaW5nfX12aXNpdEFuaW1hdGUodCxlKXtjb25zdCBuPWUuY3VycmVudEFuaW1hdGVUaW1pbmdzPXRoaXMuX3Zpc2l0VGltaW5nKHQudGltaW5ncyxlKSxvPWUuY3VycmVudFRpbWVsaW5lO24uZGVsYXkmJihlLmluY3JlbWVudFRpbWUobi5kZWxheSksby5zbmFwc2hvdEN1cnJlbnRTdHlsZXMoKSk7Y29uc3QgaT10LnN0eWxlOzU9PWkudHlwZT90aGlzLnZpc2l0S2V5ZnJhbWVzKGksZSk6KGUuaW5jcmVtZW50VGltZShuLmR1cmF0aW9uKSx0aGlzLnZpc2l0U3R5bGUoaSxlKSxvLmFwcGx5U3R5bGVzVG9LZXlmcmFtZSgpKSxlLmN1cnJlbnRBbmltYXRlVGltaW5ncz1udWxsLGUucHJldmlvdXNOb2RlPXR9dmlzaXRTdHlsZSh0LGUpe2NvbnN0IG49ZS5jdXJyZW50VGltZWxpbmUsbz1lLmN1cnJlbnRBbmltYXRlVGltaW5nczshbyYmbi5nZXRDdXJyZW50U3R5bGVQcm9wZXJ0aWVzKCkubGVuZ3RoJiZuLmZvcndhcmRGcmFtZSgpO2NvbnN0IGk9byYmby5lYXNpbmd8fHQuZWFzaW5nO3QuaXNFbXB0eVN0ZXA/bi5hcHBseUVtcHR5U3RlcChpKTpuLnNldFN0eWxlcyh0LnN0eWxlcyxpLGUuZXJyb3JzLGUub3B0aW9ucyksZS5wcmV2aW91c05vZGU9dH12aXNpdEtleWZyYW1lcyh0LGUpe2NvbnN0IG49ZS5jdXJyZW50QW5pbWF0ZVRpbWluZ3Msbz1lLmN1cnJlbnRUaW1lbGluZS5kdXJhdGlvbixpPW4uZHVyYXRpb24sYT1lLmNyZWF0ZVN1YkNvbnRleHQoKS5jdXJyZW50VGltZWxpbmU7YS5lYXNpbmc9bi5lYXNpbmcsdC5zdHlsZXMuZm9yRWFjaCgodD0+e2EuZm9yd2FyZFRpbWUoKHQub2Zmc2V0fHwwKSppKSxhLnNldFN0eWxlcyh0LnN0eWxlcyx0LmVhc2luZyxlLmVycm9ycyxlLm9wdGlvbnMpLGEuYXBwbHlTdHlsZXNUb0tleWZyYW1lKCl9KSksZS5jdXJyZW50VGltZWxpbmUubWVyZ2VUaW1lbGluZUNvbGxlY3RlZFN0eWxlcyhhKSxlLnRyYW5zZm9ybUludG9OZXdUaW1lbGluZShvK2kpLGUucHJldmlvdXNOb2RlPXR9dmlzaXRRdWVyeSh0LGUpe2NvbnN0IG49ZS5jdXJyZW50VGltZWxpbmUuY3VycmVudFRpbWUsbz10Lm9wdGlvbnN8fHt9LGk9by5kZWxheT9jUChvLmRlbGF5KTowO2kmJig2PT09ZS5wcmV2aW91c05vZGUudHlwZXx8MD09biYmZS5jdXJyZW50VGltZWxpbmUuZ2V0Q3VycmVudFN0eWxlUHJvcGVydGllcygpLmxlbmd0aCkmJihlLmN1cnJlbnRUaW1lbGluZS5zbmFwc2hvdEN1cnJlbnRTdHlsZXMoKSxlLnByZXZpb3VzTm9kZT1aUCk7bGV0IGE9bjtjb25zdCByPWUuaW52b2tlUXVlcnkodC5zZWxlY3Rvcix0Lm9yaWdpbmFsU2VsZWN0b3IsdC5saW1pdCx0LmluY2x1ZGVTZWxmLCEhby5vcHRpb25hbCxlLmVycm9ycyk7ZS5jdXJyZW50UXVlcnlUb3RhbD1yLmxlbmd0aDtsZXQgcz1udWxsO3IuZm9yRWFjaCgoKG4sbyk9PntlLmN1cnJlbnRRdWVyeUluZGV4PW87Y29uc3Qgcj1lLmNyZWF0ZVN1YkNvbnRleHQodC5vcHRpb25zLG4pO2kmJnIuZGVsYXlOZXh0U3RlcChpKSxuPT09ZS5lbGVtZW50JiYocz1yLmN1cnJlbnRUaW1lbGluZSksa1AodGhpcyx0LmFuaW1hdGlvbixyKSxyLmN1cnJlbnRUaW1lbGluZS5hcHBseVN0eWxlc1RvS2V5ZnJhbWUoKTthPU1hdGgubWF4KGEsci5jdXJyZW50VGltZWxpbmUuY3VycmVudFRpbWUpfSkpLGUuY3VycmVudFF1ZXJ5SW5kZXg9MCxlLmN1cnJlbnRRdWVyeVRvdGFsPTAsZS50cmFuc2Zvcm1JbnRvTmV3VGltZWxpbmUoYSkscyYmKGUuY3VycmVudFRpbWVsaW5lLm1lcmdlVGltZWxpbmVDb2xsZWN0ZWRTdHlsZXMocyksZS5jdXJyZW50VGltZWxpbmUuc25hcHNob3RDdXJyZW50U3R5bGVzKCkpLGUucHJldmlvdXNOb2RlPXR9dmlzaXRTdGFnZ2VyKHQsZSl7Y29uc3Qgbj1lLnBhcmVudENvbnRleHQsbz1lLmN1cnJlbnRUaW1lbGluZSxpPXQudGltaW5ncyxhPU1hdGguYWJzKGkuZHVyYXRpb24pLHI9YSooZS5jdXJyZW50UXVlcnlUb3RhbC0xKTtsZXQgcz1hKmUuY3VycmVudFF1ZXJ5SW5kZXg7c3dpdGNoKGkuZHVyYXRpb248MD8icmV2ZXJzZSI6aS5lYXNpbmcpe2Nhc2UicmV2ZXJzZSI6cz1yLXM7YnJlYWs7Y2FzZSJmdWxsIjpzPW4uY3VycmVudFN0YWdnZXJUaW1lfWNvbnN0IGw9ZS5jdXJyZW50VGltZWxpbmU7cyYmbC5kZWxheU5leHRTdGVwKHMpO2NvbnN0IGM9bC5jdXJyZW50VGltZTtrUCh0aGlzLHQuYW5pbWF0aW9uLGUpLGUucHJldmlvdXNOb2RlPXQsbi5jdXJyZW50U3RhZ2dlclRpbWU9by5jdXJyZW50VGltZS1jKyhvLnN0YXJ0VGltZS1uLmN1cnJlbnRUaW1lbGluZS5zdGFydFRpbWUpfX1jb25zdCBaUD17fTtjbGFzcyBYUHtjb25zdHJ1Y3Rvcih0LGUsbixvLGksYSxyLHMpe3RoaXMuX2RyaXZlcj10LHRoaXMuZWxlbWVudD1lLHRoaXMuc3ViSW5zdHJ1Y3Rpb25zPW4sdGhpcy5fZW50ZXJDbGFzc05hbWU9byx0aGlzLl9sZWF2ZUNsYXNzTmFtZT1pLHRoaXMuZXJyb3JzPWEsdGhpcy50aW1lbGluZXM9cix0aGlzLnBhcmVudENvbnRleHQ9bnVsbCx0aGlzLmN1cnJlbnRBbmltYXRlVGltaW5ncz1udWxsLHRoaXMucHJldmlvdXNOb2RlPVpQLHRoaXMuc3ViQ29udGV4dENvdW50PTAsdGhpcy5vcHRpb25zPXt9LHRoaXMuY3VycmVudFF1ZXJ5SW5kZXg9MCx0aGlzLmN1cnJlbnRRdWVyeVRvdGFsPTAsdGhpcy5jdXJyZW50U3RhZ2dlclRpbWU9MCx0aGlzLmN1cnJlbnRUaW1lbGluZT1zfHxuZXcgS1AodGhpcy5fZHJpdmVyLGUsMCksci5wdXNoKHRoaXMuY3VycmVudFRpbWVsaW5lKX1nZXQgcGFyYW1zKCl7cmV0dXJuIHRoaXMub3B0aW9ucy5wYXJhbXN9dXBkYXRlT3B0aW9ucyh0LGUpe2lmKCF0KXJldHVybjtjb25zdCBuPXQ7bGV0IG89dGhpcy5vcHRpb25zO251bGwhPW4uZHVyYXRpb24mJihvLmR1cmF0aW9uPWNQKG4uZHVyYXRpb24pKSxudWxsIT1uLmRlbGF5JiYoby5kZWxheT1jUChuLmRlbGF5KSk7Y29uc3QgaT1uLnBhcmFtcztpZihpKXtsZXQgdD1vLnBhcmFtczt0fHwodD10aGlzLm9wdGlvbnMucGFyYW1zPXt9KSxPYmplY3Qua2V5cyhpKS5mb3JFYWNoKChuPT57ZSYmdC5oYXNPd25Qcm9wZXJ0eShuKXx8KHRbbl09TVAoaVtuXSx0LHRoaXMuZXJyb3JzKSl9KSl9fV9jb3B5T3B0aW9ucygpe2NvbnN0IHQ9e307aWYodGhpcy5vcHRpb25zKXtjb25zdCBlPXRoaXMub3B0aW9ucy5wYXJhbXM7aWYoZSl7Y29uc3Qgbj10LnBhcmFtcz17fTtPYmplY3Qua2V5cyhlKS5mb3JFYWNoKCh0PT57blt0XT1lW3RdfSkpfX1yZXR1cm4gdH1jcmVhdGVTdWJDb250ZXh0KHQ9bnVsbCxlLG4pe2NvbnN0IG89ZXx8dGhpcy5lbGVtZW50LGk9bmV3IFhQKHRoaXMuX2RyaXZlcixvLHRoaXMuc3ViSW5zdHJ1Y3Rpb25zLHRoaXMuX2VudGVyQ2xhc3NOYW1lLHRoaXMuX2xlYXZlQ2xhc3NOYW1lLHRoaXMuZXJyb3JzLHRoaXMudGltZWxpbmVzLHRoaXMuY3VycmVudFRpbWVsaW5lLmZvcmsobyxufHwwKSk7cmV0dXJuIGkucHJldmlvdXNOb2RlPXRoaXMucHJldmlvdXNOb2RlLGkuY3VycmVudEFuaW1hdGVUaW1pbmdzPXRoaXMuY3VycmVudEFuaW1hdGVUaW1pbmdzLGkub3B0aW9ucz10aGlzLl9jb3B5T3B0aW9ucygpLGkudXBkYXRlT3B0aW9ucyh0KSxpLmN1cnJlbnRRdWVyeUluZGV4PXRoaXMuY3VycmVudFF1ZXJ5SW5kZXgsaS5jdXJyZW50UXVlcnlUb3RhbD10aGlzLmN1cnJlbnRRdWVyeVRvdGFsLGkucGFyZW50Q29udGV4dD10aGlzLHRoaXMuc3ViQ29udGV4dENvdW50KyssaX10cmFuc2Zvcm1JbnRvTmV3VGltZWxpbmUodCl7cmV0dXJuIHRoaXMucHJldmlvdXNOb2RlPVpQLHRoaXMuY3VycmVudFRpbWVsaW5lPXRoaXMuY3VycmVudFRpbWVsaW5lLmZvcmsodGhpcy5lbGVtZW50LHQpLHRoaXMudGltZWxpbmVzLnB1c2godGhpcy5jdXJyZW50VGltZWxpbmUpLHRoaXMuY3VycmVudFRpbWVsaW5lfWFwcGVuZEluc3RydWN0aW9uVG9UaW1lbGluZSh0LGUsbil7Y29uc3Qgbz17ZHVyYXRpb246bnVsbCE9ZT9lOnQuZHVyYXRpb24sZGVsYXk6dGhpcy5jdXJyZW50VGltZWxpbmUuY3VycmVudFRpbWUrKG51bGwhPW4/bjowKSt0LmRlbGF5LGVhc2luZzoiIn0saT1uZXcgSlAodGhpcy5fZHJpdmVyLHQuZWxlbWVudCx0LmtleWZyYW1lcyx0LnByZVN0eWxlUHJvcHMsdC5wb3N0U3R5bGVQcm9wcyxvLHQuc3RyZXRjaFN0YXJ0aW5nS2V5ZnJhbWUpO3JldHVybiB0aGlzLnRpbWVsaW5lcy5wdXNoKGkpLG99aW5jcmVtZW50VGltZSh0KXt0aGlzLmN1cnJlbnRUaW1lbGluZS5mb3J3YXJkVGltZSh0aGlzLmN1cnJlbnRUaW1lbGluZS5kdXJhdGlvbit0KX1kZWxheU5leHRTdGVwKHQpe3Q+MCYmdGhpcy5jdXJyZW50VGltZWxpbmUuZGVsYXlOZXh0U3RlcCh0KX1pbnZva2VRdWVyeSh0LGUsbixvLGksYSl7bGV0IHI9W107aWYobyYmci5wdXNoKHRoaXMuZWxlbWVudCksdC5sZW5ndGg+MCl7dD0odD10LnJlcGxhY2UoV1AsIi4iK3RoaXMuX2VudGVyQ2xhc3NOYW1lKSkucmVwbGFjZShHUCwiLiIrdGhpcy5fbGVhdmVDbGFzc05hbWUpO2xldCBlPXRoaXMuX2RyaXZlci5xdWVyeSh0aGlzLmVsZW1lbnQsdCwxIT1uKTswIT09biYmKGU9bjwwP2Uuc2xpY2UoZS5sZW5ndGgrbixlLmxlbmd0aCk6ZS5zbGljZSgwLG4pKSxyLnB1c2goLi4uZSl9cmV0dXJuIGl8fDAhPXIubGVuZ3RofHxhLnB1c2goYFxgcXVlcnkoIiR7ZX0iKVxgIHJldHVybmVkIHplcm8gZWxlbWVudHMuIChVc2UgXGBxdWVyeSgiJHtlfSIsIHsgb3B0aW9uYWw6IHRydWUgfSlcYCBpZiB5b3Ugd2lzaCB0byBhbGxvdyB0aGlzLilgKSxyfX1jbGFzcyBLUHtjb25zdHJ1Y3Rvcih0LGUsbixvKXt0aGlzLl9kcml2ZXI9dCx0aGlzLmVsZW1lbnQ9ZSx0aGlzLnN0YXJ0VGltZT1uLHRoaXMuX2VsZW1lbnRUaW1lbGluZVN0eWxlc0xvb2t1cD1vLHRoaXMuZHVyYXRpb249MCx0aGlzLl9wcmV2aW91c0tleWZyYW1lPXt9LHRoaXMuX2N1cnJlbnRLZXlmcmFtZT17fSx0aGlzLl9rZXlmcmFtZXM9bmV3IE1hcCx0aGlzLl9zdHlsZVN1bW1hcnk9e30sdGhpcy5fcGVuZGluZ1N0eWxlcz17fSx0aGlzLl9iYWNrRmlsbD17fSx0aGlzLl9jdXJyZW50RW1wdHlTdGVwS2V5ZnJhbWU9bnVsbCx0aGlzLl9lbGVtZW50VGltZWxpbmVTdHlsZXNMb29rdXB8fCh0aGlzLl9lbGVtZW50VGltZWxpbmVTdHlsZXNMb29rdXA9bmV3IE1hcCksdGhpcy5fbG9jYWxUaW1lbGluZVN0eWxlcz1PYmplY3QuY3JlYXRlKHRoaXMuX2JhY2tGaWxsLHt9KSx0aGlzLl9nbG9iYWxUaW1lbGluZVN0eWxlcz10aGlzLl9lbGVtZW50VGltZWxpbmVTdHlsZXNMb29rdXAuZ2V0KGUpLHRoaXMuX2dsb2JhbFRpbWVsaW5lU3R5bGVzfHwodGhpcy5fZ2xvYmFsVGltZWxpbmVTdHlsZXM9dGhpcy5fbG9jYWxUaW1lbGluZVN0eWxlcyx0aGlzLl9lbGVtZW50VGltZWxpbmVTdHlsZXNMb29rdXAuc2V0KGUsdGhpcy5fbG9jYWxUaW1lbGluZVN0eWxlcykpLHRoaXMuX2xvYWRLZXlmcmFtZSgpfWNvbnRhaW5zQW5pbWF0aW9uKCl7c3dpdGNoKHRoaXMuX2tleWZyYW1lcy5zaXplKXtjYXNlIDA6cmV0dXJuITE7Y2FzZSAxOnJldHVybiB0aGlzLmdldEN1cnJlbnRTdHlsZVByb3BlcnRpZXMoKS5sZW5ndGg+MDtkZWZhdWx0OnJldHVybiEwfX1nZXRDdXJyZW50U3R5bGVQcm9wZXJ0aWVzKCl7cmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuX2N1cnJlbnRLZXlmcmFtZSl9Z2V0IGN1cnJlbnRUaW1lKCl7cmV0dXJuIHRoaXMuc3RhcnRUaW1lK3RoaXMuZHVyYXRpb259ZGVsYXlOZXh0U3RlcCh0KXtjb25zdCBlPTE9PXRoaXMuX2tleWZyYW1lcy5zaXplJiZPYmplY3Qua2V5cyh0aGlzLl9wZW5kaW5nU3R5bGVzKS5sZW5ndGg7dGhpcy5kdXJhdGlvbnx8ZT8odGhpcy5mb3J3YXJkVGltZSh0aGlzLmN1cnJlbnRUaW1lK3QpLGUmJnRoaXMuc25hcHNob3RDdXJyZW50U3R5bGVzKCkpOnRoaXMuc3RhcnRUaW1lKz10fWZvcmsodCxlKXtyZXR1cm4gdGhpcy5hcHBseVN0eWxlc1RvS2V5ZnJhbWUoKSxuZXcgS1AodGhpcy5fZHJpdmVyLHQsZXx8dGhpcy5jdXJyZW50VGltZSx0aGlzLl9lbGVtZW50VGltZWxpbmVTdHlsZXNMb29rdXApfV9sb2FkS2V5ZnJhbWUoKXt0aGlzLl9jdXJyZW50S2V5ZnJhbWUmJih0aGlzLl9wcmV2aW91c0tleWZyYW1lPXRoaXMuX2N1cnJlbnRLZXlmcmFtZSksdGhpcy5fY3VycmVudEtleWZyYW1lPXRoaXMuX2tleWZyYW1lcy5nZXQodGhpcy5kdXJhdGlvbiksdGhpcy5fY3VycmVudEtleWZyYW1lfHwodGhpcy5fY3VycmVudEtleWZyYW1lPU9iamVjdC5jcmVhdGUodGhpcy5fYmFja0ZpbGwse30pLHRoaXMuX2tleWZyYW1lcy5zZXQodGhpcy5kdXJhdGlvbix0aGlzLl9jdXJyZW50S2V5ZnJhbWUpKX1mb3J3YXJkRnJhbWUoKXt0aGlzLmR1cmF0aW9uKz0xLHRoaXMuX2xvYWRLZXlmcmFtZSgpfWZvcndhcmRUaW1lKHQpe3RoaXMuYXBwbHlTdHlsZXNUb0tleWZyYW1lKCksdGhpcy5kdXJhdGlvbj10LHRoaXMuX2xvYWRLZXlmcmFtZSgpfV91cGRhdGVTdHlsZSh0LGUpe3RoaXMuX2xvY2FsVGltZWxpbmVTdHlsZXNbdF09ZSx0aGlzLl9nbG9iYWxUaW1lbGluZVN0eWxlc1t0XT1lLHRoaXMuX3N0eWxlU3VtbWFyeVt0XT17dGltZTp0aGlzLmN1cnJlbnRUaW1lLHZhbHVlOmV9fWFsbG93T25seVRpbWVsaW5lU3R5bGVzKCl7cmV0dXJuIHRoaXMuX2N1cnJlbnRFbXB0eVN0ZXBLZXlmcmFtZSE9PXRoaXMuX2N1cnJlbnRLZXlmcmFtZX1hcHBseUVtcHR5U3RlcCh0KXt0JiYodGhpcy5fcHJldmlvdXNLZXlmcmFtZS5lYXNpbmc9dCksT2JqZWN0LmtleXModGhpcy5fZ2xvYmFsVGltZWxpbmVTdHlsZXMpLmZvckVhY2goKHQ9Pnt0aGlzLl9iYWNrRmlsbFt0XT10aGlzLl9nbG9iYWxUaW1lbGluZVN0eWxlc1t0XXx8dk8sdGhpcy5fY3VycmVudEtleWZyYW1lW3RdPXZPfSkpLHRoaXMuX2N1cnJlbnRFbXB0eVN0ZXBLZXlmcmFtZT10aGlzLl9jdXJyZW50S2V5ZnJhbWV9c2V0U3R5bGVzKHQsZSxuLG8pe2UmJih0aGlzLl9wcmV2aW91c0tleWZyYW1lLmVhc2luZz1lKTtjb25zdCBpPW8mJm8ucGFyYW1zfHx7fSxhPShmdW5jdGlvbiByKHQsZSl7Y29uc3Qgbj17fTtsZXQgbztyZXR1cm4gdC5mb3JFYWNoKCh0PT57IioiPT09dD8obz1vfHxPYmplY3Qua2V5cyhlKSxvLmZvckVhY2goKHQ9PntuW3RdPXZPfSkpKTpmUCh0LCExLG4pfSkpLG59Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLykodCx0aGlzLl9nbG9iYWxUaW1lbGluZVN0eWxlcyk7T2JqZWN0LmtleXMoYSkuZm9yRWFjaCgodD0+e2NvbnN0IGU9TVAoYVt0XSxpLG4pO3RoaXMuX3BlbmRpbmdTdHlsZXNbdF09ZSx0aGlzLl9sb2NhbFRpbWVsaW5lU3R5bGVzLmhhc093blByb3BlcnR5KHQpfHwodGhpcy5fYmFja0ZpbGxbdF09dGhpcy5fZ2xvYmFsVGltZWxpbmVTdHlsZXMuaGFzT3duUHJvcGVydHkodCk/dGhpcy5fZ2xvYmFsVGltZWxpbmVTdHlsZXNbdF06dk8pLHRoaXMuX3VwZGF0ZVN0eWxlKHQsZSl9KSl9YXBwbHlTdHlsZXNUb0tleWZyYW1lKCl7Y29uc3QgdD10aGlzLl9wZW5kaW5nU3R5bGVzLGU9T2JqZWN0LmtleXModCk7MCE9ZS5sZW5ndGgmJih0aGlzLl9wZW5kaW5nU3R5bGVzPXt9LGUuZm9yRWFjaCgoZT0+e3RoaXMuX2N1cnJlbnRLZXlmcmFtZVtlXT10W2VdfSkpLE9iamVjdC5rZXlzKHRoaXMuX2xvY2FsVGltZWxpbmVTdHlsZXMpLmZvckVhY2goKHQ9Pnt0aGlzLl9jdXJyZW50S2V5ZnJhbWUuaGFzT3duUHJvcGVydHkodCl8fCh0aGlzLl9jdXJyZW50S2V5ZnJhbWVbdF09dGhpcy5fbG9jYWxUaW1lbGluZVN0eWxlc1t0XSl9KSkpfXNuYXBzaG90Q3VycmVudFN0eWxlcygpe09iamVjdC5rZXlzKHRoaXMuX2xvY2FsVGltZWxpbmVTdHlsZXMpLmZvckVhY2goKHQ9Pntjb25zdCBlPXRoaXMuX2xvY2FsVGltZWxpbmVTdHlsZXNbdF07dGhpcy5fcGVuZGluZ1N0eWxlc1t0XT1lLHRoaXMuX3VwZGF0ZVN0eWxlKHQsZSl9KSl9Z2V0RmluYWxLZXlmcmFtZSgpe3JldHVybiB0aGlzLl9rZXlmcmFtZXMuZ2V0KHRoaXMuZHVyYXRpb24pfWdldCBwcm9wZXJ0aWVzKCl7Y29uc3QgdD1bXTtmb3IobGV0IGUgaW4gdGhpcy5fY3VycmVudEtleWZyYW1lKXQucHVzaChlKTtyZXR1cm4gdH1tZXJnZVRpbWVsaW5lQ29sbGVjdGVkU3R5bGVzKHQpe09iamVjdC5rZXlzKHQuX3N0eWxlU3VtbWFyeSkuZm9yRWFjaCgoZT0+e2NvbnN0IG49dGhpcy5fc3R5bGVTdW1tYXJ5W2VdLG89dC5fc3R5bGVTdW1tYXJ5W2VdOyghbnx8by50aW1lPm4udGltZSkmJnRoaXMuX3VwZGF0ZVN0eWxlKGUsby52YWx1ZSl9KSl9YnVpbGRLZXlmcmFtZXMoKXt0aGlzLmFwcGx5U3R5bGVzVG9LZXlmcmFtZSgpO2NvbnN0IHQ9bmV3IFNldCxlPW5ldyBTZXQsbj0xPT09dGhpcy5fa2V5ZnJhbWVzLnNpemUmJjA9PT10aGlzLmR1cmF0aW9uO2xldCBvPVtdO3RoaXMuX2tleWZyYW1lcy5mb3JFYWNoKCgoaSxhKT0+e2NvbnN0IHI9ZlAoaSwhMCk7T2JqZWN0LmtleXMocikuZm9yRWFjaCgobj0+e2NvbnN0IG89cltuXTsiISI9PW8/dC5hZGQobik6bz09dk8mJmUuYWRkKG4pfSkpLG58fChyLm9mZnNldD1hL3RoaXMuZHVyYXRpb24pLG8ucHVzaChyKX0pKTtjb25zdCBpPXQuc2l6ZT92UCh0LnZhbHVlcygpKTpbXSxhPWUuc2l6ZT92UChlLnZhbHVlcygpKTpbXTtpZihuKXtjb25zdCB0PW9bMF0sZT1tUCh0KTt0Lm9mZnNldD0wLGUub2Zmc2V0PTEsbz1bdCxlXX1yZXR1cm4galAodGhpcy5lbGVtZW50LG8saSxhLHRoaXMuZHVyYXRpb24sdGhpcy5zdGFydFRpbWUsdGhpcy5lYXNpbmcsITEpfX1jbGFzcyBKUCBleHRlbmRzIEtQe2NvbnN0cnVjdG9yKHQsZSxuLG8saSxhLHI9ITEpe3N1cGVyKHQsZSxhLmRlbGF5KSx0aGlzLmtleWZyYW1lcz1uLHRoaXMucHJlU3R5bGVQcm9wcz1vLHRoaXMucG9zdFN0eWxlUHJvcHM9aSx0aGlzLl9zdHJldGNoU3RhcnRpbmdLZXlmcmFtZT1yLHRoaXMudGltaW5ncz17ZHVyYXRpb246YS5kdXJhdGlvbixkZWxheTphLmRlbGF5LGVhc2luZzphLmVhc2luZ319Y29udGFpbnNBbmltYXRpb24oKXtyZXR1cm4gdGhpcy5rZXlmcmFtZXMubGVuZ3RoPjF9YnVpbGRLZXlmcmFtZXMoKXtsZXQgdD10aGlzLmtleWZyYW1lcyx7ZGVsYXk6ZSxkdXJhdGlvbjpuLGVhc2luZzpvfT10aGlzLnRpbWluZ3M7aWYodGhpcy5fc3RyZXRjaFN0YXJ0aW5nS2V5ZnJhbWUmJmUpe2NvbnN0IGk9W10sYT1uK2Uscj1lL2Escz1mUCh0WzBdLCExKTtzLm9mZnNldD0wLGkucHVzaChzKTtjb25zdCBsPWZQKHRbMF0sITEpO2wub2Zmc2V0PVFQKHIpLGkucHVzaChsKTtjb25zdCBjPXQubGVuZ3RoLTE7Zm9yKGxldCBvPTE7bzw9YztvKyspe2xldCByPWZQKHRbb10sITEpO3Iub2Zmc2V0PVFQKChlK3Iub2Zmc2V0Km4pL2EpLGkucHVzaChyKX1uPWEsZT0wLG89IiIsdD1pfXJldHVybiBqUCh0aGlzLmVsZW1lbnQsdCx0aGlzLnByZVN0eWxlUHJvcHMsdGhpcy5wb3N0U3R5bGVQcm9wcyxuLGUsbywhMCl9fWZ1bmN0aW9uIFFQKHQsZT0zKXtjb25zdCBuPU1hdGgucG93KDEwLGUtMSk7cmV0dXJuIE1hdGgucm91bmQodCpuKS9ufWNsYXNzICRQe30KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY2xhc3MgdHcgZXh0ZW5kcyAkUHtub3JtYWxpemVQcm9wZXJ0eU5hbWUodCxlKXtyZXR1cm4gT1AodCl9bm9ybWFsaXplU3R5bGVWYWx1ZSh0LGUsbixvKXtsZXQgaT0iIjtjb25zdCBhPW4udG9TdHJpbmcoKS50cmltKCk7aWYoZXdbZV0mJjAhPT1uJiYiMCIhPT1uKWlmKCJudW1iZXIiPT10eXBlb2YgbilpPSJweCI7ZWxzZXtjb25zdCBlPW4ubWF0Y2goL15bKy1dP1tcZFwuXSsoW2Etel0qKSQvKTtlJiYwPT1lWzFdLmxlbmd0aCYmby5wdXNoKGBQbGVhc2UgcHJvdmlkZSBhIENTUyB1bml0IHZhbHVlIGZvciAke3R9OiR7bn1gKX1yZXR1cm4gYStpfX1jb25zdCBldz0oZnVuY3Rpb24gbncodCl7Y29uc3QgZT17fTtyZXR1cm4gdC5mb3JFYWNoKCh0PT5lW3RdPSEwKSksZX0pKCJ3aWR0aCxoZWlnaHQsbWluV2lkdGgsbWluSGVpZ2h0LG1heFdpZHRoLG1heEhlaWdodCxsZWZ0LHRvcCxib3R0b20scmlnaHQsZm9udFNpemUsb3V0bGluZVdpZHRoLG91dGxpbmVPZmZzZXQscGFkZGluZ1RvcCxwYWRkaW5nTGVmdCxwYWRkaW5nQm90dG9tLHBhZGRpbmdSaWdodCxtYXJnaW5Ub3AsbWFyZ2luTGVmdCxtYXJnaW5Cb3R0b20sbWFyZ2luUmlnaHQsYm9yZGVyUmFkaXVzLGJvcmRlcldpZHRoLGJvcmRlclRvcFdpZHRoLGJvcmRlckxlZnRXaWR0aCxib3JkZXJSaWdodFdpZHRoLGJvcmRlckJvdHRvbVdpZHRoLHRleHRJbmRlbnQscGVyc3BlY3RpdmUiLnNwbGl0KCIsIikpO2Z1bmN0aW9uIG93KHQsZSxuLG8saSxhLHIscyxsLGMsZCxwLG0pe3JldHVybnt0eXBlOjAsZWxlbWVudDp0LHRyaWdnZXJOYW1lOmUsaXNSZW1vdmFsVHJhbnNpdGlvbjppLGZyb21TdGF0ZTpuLGZyb21TdHlsZXM6YSx0b1N0YXRlOm8sdG9TdHlsZXM6cix0aW1lbGluZXM6cyxxdWVyaWVkRWxlbWVudHM6bCxwcmVTdHlsZVByb3BzOmMscG9zdFN0eWxlUHJvcHM6ZCx0b3RhbFRpbWU6cCxlcnJvcnM6bX19Y29uc3QgaXc9e307Y2xhc3MgYXd7Y29uc3RydWN0b3IodCxlLG4pe3RoaXMuX3RyaWdnZXJOYW1lPXQsdGhpcy5hc3Q9ZSx0aGlzLl9zdGF0ZVN0eWxlcz1ufW1hdGNoKHQsZSxuLG8pe3JldHVybihmdW5jdGlvbiBpKHQsZSxuLG8sYSl7cmV0dXJuIHQuc29tZSgodD0+dChlLG4sbyxhKSkpfSkodGhpcy5hc3QubWF0Y2hlcnMsdCxlLG4sbyl9YnVpbGRTdHlsZXModCxlLG4pe2NvbnN0IG89dGhpcy5fc3RhdGVTdHlsZXNbIioiXSxpPXRoaXMuX3N0YXRlU3R5bGVzW3RdLGE9bz9vLmJ1aWxkU3R5bGVzKGUsbik6e307cmV0dXJuIGk/aS5idWlsZFN0eWxlcyhlLG4pOmF9YnVpbGQodCxlLG4sbyxpLGEscixzLGwsYyl7Y29uc3QgZD1bXSxwPXRoaXMuYXN0Lm9wdGlvbnMmJnRoaXMuYXN0Lm9wdGlvbnMucGFyYW1zfHxpdyxtPXRoaXMuYnVpbGRTdHlsZXMobixyJiZyLnBhcmFtc3x8aXcsZCksZj1zJiZzLnBhcmFtc3x8aXcsdT10aGlzLmJ1aWxkU3R5bGVzKG8sZixkKSxnPW5ldyBTZXQsaD1uZXcgTWFwLGI9bmV3IE1hcCx5PSJ2b2lkIj09PW8sXz17cGFyYW1zOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxwKSxmKX0sQz1jP1tdOllQKHQsZSx0aGlzLmFzdC5hbmltYXRpb24saSxhLG0sdSxfLGwsZCk7bGV0IE09MDtpZihDLmZvckVhY2goKHQ9PntNPU1hdGgubWF4KHQuZHVyYXRpb24rdC5kZWxheSxNKX0pKSxkLmxlbmd0aClyZXR1cm4gb3coZSx0aGlzLl90cmlnZ2VyTmFtZSxuLG8seSxtLHUsW10sW10saCxiLE0sZCk7Qy5mb3JFYWNoKCh0PT57Y29uc3Qgbj10LmVsZW1lbnQsbz1qTyhoLG4se30pO3QucHJlU3R5bGVQcm9wcy5mb3JFYWNoKCh0PT5vW3RdPSEwKSk7Y29uc3QgaT1qTyhiLG4se30pO3QucG9zdFN0eWxlUHJvcHMuZm9yRWFjaCgodD0+aVt0XT0hMCkpLG4hPT1lJiZnLmFkZChuKX0pKTtjb25zdCB2PXZQKGcudmFsdWVzKCkpO3JldHVybiBvdyhlLHRoaXMuX3RyaWdnZXJOYW1lLG4sbyx5LG0sdSxDLHYsaCxiLE0pfX1jbGFzcyByd3tjb25zdHJ1Y3Rvcih0LGUsbil7dGhpcy5zdHlsZXM9dCx0aGlzLmRlZmF1bHRQYXJhbXM9ZSx0aGlzLm5vcm1hbGl6ZXI9bn1idWlsZFN0eWxlcyh0LGUpe2NvbnN0IG49e30sbz1tUCh0aGlzLmRlZmF1bHRQYXJhbXMpO3JldHVybiBPYmplY3Qua2V5cyh0KS5mb3JFYWNoKChlPT57Y29uc3Qgbj10W2VdO251bGwhPW4mJihvW2VdPW4pfSkpLHRoaXMuc3R5bGVzLnN0eWxlcy5mb3JFYWNoKCh0PT57aWYoInN0cmluZyIhPXR5cGVvZiB0KXtjb25zdCBpPXQ7T2JqZWN0LmtleXMoaSkuZm9yRWFjaCgodD0+e2xldCBhPWlbdF07YS5sZW5ndGg+MSYmKGE9TVAoYSxvLGUpKTtjb25zdCByPXRoaXMubm9ybWFsaXplci5ub3JtYWxpemVQcm9wZXJ0eU5hbWUodCxlKTthPXRoaXMubm9ybWFsaXplci5ub3JtYWxpemVTdHlsZVZhbHVlKHQscixhLGUpLG5bcl09YX0pKX19KSksbn19Y2xhc3Mgc3d7Y29uc3RydWN0b3IodCxlLG4pe3RoaXMubmFtZT10LHRoaXMuYXN0PWUsdGhpcy5fbm9ybWFsaXplcj1uLHRoaXMudHJhbnNpdGlvbkZhY3Rvcmllcz1bXSx0aGlzLnN0YXRlcz17fSxlLnN0YXRlcy5mb3JFYWNoKCh0PT57dGhpcy5zdGF0ZXNbdC5uYW1lXT1uZXcgcncodC5zdHlsZSx0Lm9wdGlvbnMmJnQub3B0aW9ucy5wYXJhbXN8fHt9LG4pfSkpLGx3KHRoaXMuc3RhdGVzLCJ0cnVlIiwiMSIpLGx3KHRoaXMuc3RhdGVzLCJmYWxzZSIsIjAiKSxlLnRyYW5zaXRpb25zLmZvckVhY2goKGU9Pnt0aGlzLnRyYW5zaXRpb25GYWN0b3JpZXMucHVzaChuZXcgYXcodCxlLHRoaXMuc3RhdGVzKSl9KSksdGhpcy5mYWxsYmFja1RyYW5zaXRpb249KGZ1bmN0aW9uIG8odCxlLG4pe3JldHVybiBuZXcgYXcodCx7dHlwZToxLGFuaW1hdGlvbjp7dHlwZToyLHN0ZXBzOltdLG9wdGlvbnM6bnVsbH0sbWF0Y2hlcnM6Wyh0LGUpPT4hMF0sb3B0aW9uczpudWxsLHF1ZXJ5Q291bnQ6MCxkZXBDb3VudDowfSxlKX0pKHQsdGhpcy5zdGF0ZXMpfWdldCBjb250YWluc1F1ZXJpZXMoKXtyZXR1cm4gdGhpcy5hc3QucXVlcnlDb3VudD4wfW1hdGNoVHJhbnNpdGlvbih0LGUsbixvKXtyZXR1cm4gdGhpcy50cmFuc2l0aW9uRmFjdG9yaWVzLmZpbmQoKGk9PmkubWF0Y2godCxlLG4sbykpKXx8bnVsbH1tYXRjaFN0eWxlcyh0LGUsbil7cmV0dXJuIHRoaXMuZmFsbGJhY2tUcmFuc2l0aW9uLmJ1aWxkU3R5bGVzKHQsZSxuKX19ZnVuY3Rpb24gbHcodCxlLG4pe3QuaGFzT3duUHJvcGVydHkoZSk/dC5oYXNPd25Qcm9wZXJ0eShuKXx8KHRbbl09dFtlXSk6dC5oYXNPd25Qcm9wZXJ0eShuKSYmKHRbZV09dFtuXSl9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NvbnN0IGN3PW5ldyBVUDtjbGFzcyBkd3tjb25zdHJ1Y3Rvcih0LGUsbil7dGhpcy5ib2R5Tm9kZT10LHRoaXMuX2RyaXZlcj1lLHRoaXMuX25vcm1hbGl6ZXI9bix0aGlzLl9hbmltYXRpb25zPXt9LHRoaXMuX3BsYXllcnNCeUlkPXt9LHRoaXMucGxheWVycz1bXX1yZWdpc3Rlcih0LGUpe2NvbnN0IG49W10sbz1JUCh0aGlzLl9kcml2ZXIsZSxuKTtpZihuLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoYFVuYWJsZSB0byBidWlsZCB0aGUgYW5pbWF0aW9uIGR1ZSB0byB0aGUgZm9sbG93aW5nIGVycm9yczogJHtuLmpvaW4oIlxuIil9YCk7dGhpcy5fYW5pbWF0aW9uc1t0XT1vfV9idWlsZFBsYXllcih0LGUsbil7Y29uc3Qgbz10LmVsZW1lbnQsaT1GTygwLHRoaXMuX25vcm1hbGl6ZXIsMCx0LmtleWZyYW1lcyxlLG4pO3JldHVybiB0aGlzLl9kcml2ZXIuYW5pbWF0ZShvLGksdC5kdXJhdGlvbix0LmRlbGF5LHQuZWFzaW5nLFtdLCEwKX1jcmVhdGUodCxlLG49e30pe2NvbnN0IG89W10saT10aGlzLl9hbmltYXRpb25zW3RdO2xldCBhO2NvbnN0IHI9bmV3IE1hcDtpZihpPyhhPVlQKHRoaXMuX2RyaXZlcixlLGksb1AsaVAse30se30sbixjdyxvKSxhLmZvckVhY2goKHQ9Pntjb25zdCBlPWpPKHIsdC5lbGVtZW50LHt9KTt0LnBvc3RTdHlsZVByb3BzLmZvckVhY2goKHQ9PmVbdF09bnVsbCkpfSkpKTooby5wdXNoKCJUaGUgcmVxdWVzdGVkIGFuaW1hdGlvbiBkb2Vzbid0IGV4aXN0IG9yIGhhcyBhbHJlYWR5IGJlZW4gZGVzdHJveWVkIiksYT1bXSksby5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKGBVbmFibGUgdG8gY3JlYXRlIHRoZSBhbmltYXRpb24gZHVlIHRvIHRoZSBmb2xsb3dpbmcgZXJyb3JzOiAke28uam9pbigiXG4iKX1gKTtyLmZvckVhY2goKCh0LGUpPT57T2JqZWN0LmtleXModCkuZm9yRWFjaCgobj0+e3Rbbl09dGhpcy5fZHJpdmVyLmNvbXB1dGVTdHlsZShlLG4sdk8pfSkpfSkpO2NvbnN0IHM9SE8oYS5tYXAoKHQ9Pntjb25zdCBlPXIuZ2V0KHQuZWxlbWVudCk7cmV0dXJuIHRoaXMuX2J1aWxkUGxheWVyKHQse30sZSl9KSkpO3JldHVybiB0aGlzLl9wbGF5ZXJzQnlJZFt0XT1zLHMub25EZXN0cm95KCgoKT0+dGhpcy5kZXN0cm95KHQpKSksdGhpcy5wbGF5ZXJzLnB1c2gocyksc31kZXN0cm95KHQpe2NvbnN0IGU9dGhpcy5fZ2V0UGxheWVyKHQpO2UuZGVzdHJveSgpLGRlbGV0ZSB0aGlzLl9wbGF5ZXJzQnlJZFt0XTtjb25zdCBuPXRoaXMucGxheWVycy5pbmRleE9mKGUpO24+PTAmJnRoaXMucGxheWVycy5zcGxpY2UobiwxKX1fZ2V0UGxheWVyKHQpe2NvbnN0IGU9dGhpcy5fcGxheWVyc0J5SWRbdF07aWYoIWUpdGhyb3cgbmV3IEVycm9yKGBVbmFibGUgdG8gZmluZCB0aGUgdGltZWxpbmUgcGxheWVyIHJlZmVyZW5jZWQgYnkgJHt0fWApO3JldHVybiBlfWxpc3Rlbih0LGUsbixvKXtjb25zdCBpPVZPKGUsIiIsIiIsIiIpO3JldHVybiBMTyh0aGlzLl9nZXRQbGF5ZXIodCksbixpLG8pLCgpPT57fX1jb21tYW5kKHQsZSxuLG8pe2lmKCJyZWdpc3RlciI9PW4pcmV0dXJuIHZvaWQgdGhpcy5yZWdpc3Rlcih0LG9bMF0pO2lmKCJjcmVhdGUiPT1uKXtyZXR1cm4gdm9pZCB0aGlzLmNyZWF0ZSh0LGUsb1swXXx8e30pfWNvbnN0IGk9dGhpcy5fZ2V0UGxheWVyKHQpO3N3aXRjaChuKXtjYXNlInBsYXkiOmkucGxheSgpO2JyZWFrO2Nhc2UicGF1c2UiOmkucGF1c2UoKTticmVhaztjYXNlInJlc2V0IjppLnJlc2V0KCk7YnJlYWs7Y2FzZSJyZXN0YXJ0IjppLnJlc3RhcnQoKTticmVhaztjYXNlImZpbmlzaCI6aS5maW5pc2goKTticmVhaztjYXNlImluaXQiOmkuaW5pdCgpO2JyZWFrO2Nhc2Uic2V0UG9zaXRpb24iOmkuc2V0UG9zaXRpb24ocGFyc2VGbG9hdChvWzBdKSk7YnJlYWs7Y2FzZSJkZXN0cm95Ijp0aGlzLmRlc3Ryb3kodCl9fX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY29uc3QgcHc9Im5nLWFuaW1hdGUtcXVldWVkIixtdz0ibmctYW5pbWF0ZS1kaXNhYmxlZCIsZnc9Ii5uZy1hbmltYXRlLWRpc2FibGVkIix1dz1bXSxndz17bmFtZXNwYWNlSWQ6IiIsc2V0Rm9yUmVtb3ZhbDohMSxzZXRGb3JNb3ZlOiExLGhhc0FuaW1hdGlvbjohMSxyZW1vdmVkQmVmb3JlUXVlcmllZDohMX0saHc9e25hbWVzcGFjZUlkOiIiLHNldEZvck1vdmU6ITEsc2V0Rm9yUmVtb3ZhbDohMSxoYXNBbmltYXRpb246ITEscmVtb3ZlZEJlZm9yZVF1ZXJpZWQ6ITB9O2NsYXNzIGJ3e2NvbnN0cnVjdG9yKHQsZT0iIil7dGhpcy5uYW1lc3BhY2VJZD1lO2NvbnN0IG49dCYmdC5oYXNPd25Qcm9wZXJ0eSgidmFsdWUiKTtpZih0aGlzLnZhbHVlPShmdW5jdGlvbiBvKHQpe3JldHVybiBudWxsIT10P3Q6bnVsbH0pKG4/dC52YWx1ZTp0KSxuKXtjb25zdCBlPW1QKHQpO2RlbGV0ZSBlLnZhbHVlLHRoaXMub3B0aW9ucz1lfWVsc2UgdGhpcy5vcHRpb25zPXt9O3RoaXMub3B0aW9ucy5wYXJhbXN8fCh0aGlzLm9wdGlvbnMucGFyYW1zPXt9KX1nZXQgcGFyYW1zKCl7cmV0dXJuIHRoaXMub3B0aW9ucy5wYXJhbXN9YWJzb3JiT3B0aW9ucyh0KXtjb25zdCBlPXQucGFyYW1zO2lmKGUpe2NvbnN0IHQ9dGhpcy5vcHRpb25zLnBhcmFtcztPYmplY3Qua2V5cyhlKS5mb3JFYWNoKChuPT57bnVsbD09dFtuXSYmKHRbbl09ZVtuXSl9KSl9fX1jb25zdCB5dz0idm9pZCIsX3c9bmV3IGJ3KHl3KTtjbGFzcyBDd3tjb25zdHJ1Y3Rvcih0LGUsbil7dGhpcy5pZD10LHRoaXMuaG9zdEVsZW1lbnQ9ZSx0aGlzLl9lbmdpbmU9bix0aGlzLnBsYXllcnM9W10sdGhpcy5fdHJpZ2dlcnM9e30sdGhpcy5fcXVldWU9W10sdGhpcy5fZWxlbWVudExpc3RlbmVycz1uZXcgTWFwLHRoaXMuX2hvc3RDbGFzc05hbWU9Im5nLXRucy0iK3Qsa3coZSx0aGlzLl9ob3N0Q2xhc3NOYW1lKX1saXN0ZW4odCxlLG4sbyl7aWYoIXRoaXMuX3RyaWdnZXJzLmhhc093blByb3BlcnR5KGUpKXRocm93IG5ldyBFcnJvcihgVW5hYmxlIHRvIGxpc3RlbiBvbiB0aGUgYW5pbWF0aW9uIHRyaWdnZXIgZXZlbnQgIiR7bn0iIGJlY2F1c2UgdGhlIGFuaW1hdGlvbiB0cmlnZ2VyICIke2V9IiBkb2Vzbid0IGV4aXN0IWApO2lmKG51bGw9PW58fDA9PW4ubGVuZ3RoKXRocm93IG5ldyBFcnJvcihgVW5hYmxlIHRvIGxpc3RlbiBvbiB0aGUgYW5pbWF0aW9uIHRyaWdnZXIgIiR7ZX0iIGJlY2F1c2UgdGhlIHByb3ZpZGVkIGV2ZW50IGlzIHVuZGVmaW5lZCFgKTtpZighKGZ1bmN0aW9uIGkodCl7cmV0dXJuInN0YXJ0Ij09dHx8ImRvbmUiPT10fSkobikpdGhyb3cgbmV3IEVycm9yKGBUaGUgcHJvdmlkZWQgYW5pbWF0aW9uIHRyaWdnZXIgZXZlbnQgIiR7bn0iIGZvciB0aGUgYW5pbWF0aW9uIHRyaWdnZXIgIiR7ZX0iIGlzIG5vdCBzdXBwb3J0ZWQhYCk7Y29uc3QgYT1qTyh0aGlzLl9lbGVtZW50TGlzdGVuZXJzLHQsW10pLHI9e25hbWU6ZSxwaGFzZTpuLGNhbGxiYWNrOm99O2EucHVzaChyKTtjb25zdCBzPWpPKHRoaXMuX2VuZ2luZS5zdGF0ZXNCeUVsZW1lbnQsdCx7fSk7cmV0dXJuIHMuaGFzT3duUHJvcGVydHkoZSl8fChrdyh0LGFQKSxrdyh0LCJuZy10cmlnZ2VyLSIrZSksc1tlXT1fdyksKCk9Pnt0aGlzLl9lbmdpbmUuYWZ0ZXJGbHVzaCgoKCk9Pntjb25zdCB0PWEuaW5kZXhPZihyKTt0Pj0wJiZhLnNwbGljZSh0LDEpLHRoaXMuX3RyaWdnZXJzW2VdfHxkZWxldGUgc1tlXX0pKX19cmVnaXN0ZXIodCxlKXtyZXR1cm4hdGhpcy5fdHJpZ2dlcnNbdF0mJih0aGlzLl90cmlnZ2Vyc1t0XT1lLCEwKX1fZ2V0VHJpZ2dlcih0KXtjb25zdCBlPXRoaXMuX3RyaWdnZXJzW3RdO2lmKCFlKXRocm93IG5ldyBFcnJvcihgVGhlIHByb3ZpZGVkIGFuaW1hdGlvbiB0cmlnZ2VyICIke3R9IiBoYXMgbm90IGJlZW4gcmVnaXN0ZXJlZCFgKTtyZXR1cm4gZX10cmlnZ2VyKHQsZSxuLG89ITApe2NvbnN0IGk9dGhpcy5fZ2V0VHJpZ2dlcihlKSxhPW5ldyB2dyh0aGlzLmlkLGUsdCk7bGV0IHI9dGhpcy5fZW5naW5lLnN0YXRlc0J5RWxlbWVudC5nZXQodCk7cnx8KGt3KHQsYVApLGt3KHQsIm5nLXRyaWdnZXItIitlKSx0aGlzLl9lbmdpbmUuc3RhdGVzQnlFbGVtZW50LnNldCh0LHI9e30pKTtsZXQgcz1yW2VdO2NvbnN0IGw9bmV3IGJ3KG4sdGhpcy5pZCk7IShuJiZuLmhhc093blByb3BlcnR5KCJ2YWx1ZSIpKSYmcyYmbC5hYnNvcmJPcHRpb25zKHMub3B0aW9ucykscltlXT1sLHN8fChzPV93KTtpZighKGwudmFsdWU9PT15dykmJnMudmFsdWU9PT1sLnZhbHVlKXtpZighKGZ1bmN0aW9uIGUodCxuKXtjb25zdCBvPU9iamVjdC5rZXlzKHQpLGk9T2JqZWN0LmtleXMobik7aWYoby5sZW5ndGghPWkubGVuZ3RoKXJldHVybiExO2ZvcihsZXQgZT0wO2U8by5sZW5ndGg7ZSsrKXtjb25zdCBpPW9bZV07aWYoIW4uaGFzT3duUHJvcGVydHkoaSl8fHRbaV0hPT1uW2ldKXJldHVybiExfXJldHVybiEwfSkocy5wYXJhbXMsbC5wYXJhbXMpKXtjb25zdCBlPVtdLG49aS5tYXRjaFN0eWxlcyhzLnZhbHVlLHMucGFyYW1zLGUpLG89aS5tYXRjaFN0eWxlcyhsLnZhbHVlLGwucGFyYW1zLGUpO2UubGVuZ3RoP3RoaXMuX2VuZ2luZS5yZXBvcnRFcnJvcihlKTp0aGlzLl9lbmdpbmUuYWZ0ZXJGbHVzaCgoKCk9PntiUCh0LG4pLGhQKHQsbyl9KSl9cmV0dXJufWNvbnN0IGM9ak8odGhpcy5fZW5naW5lLnBsYXllcnNCeUVsZW1lbnQsdCxbXSk7Yy5mb3JFYWNoKCh0PT57dC5uYW1lc3BhY2VJZD09dGhpcy5pZCYmdC50cmlnZ2VyTmFtZT09ZSYmdC5xdWV1ZWQmJnQuZGVzdHJveSgpfSkpO2xldCBkPWkubWF0Y2hUcmFuc2l0aW9uKHMudmFsdWUsbC52YWx1ZSx0LGwucGFyYW1zKSxwPSExO2lmKCFkKXtpZighbylyZXR1cm47ZD1pLmZhbGxiYWNrVHJhbnNpdGlvbixwPSEwfXJldHVybiB0aGlzLl9lbmdpbmUudG90YWxRdWV1ZWRQbGF5ZXJzKyssdGhpcy5fcXVldWUucHVzaCh7ZWxlbWVudDp0LHRyaWdnZXJOYW1lOmUsdHJhbnNpdGlvbjpkLGZyb21TdGF0ZTpzLHRvU3RhdGU6bCxwbGF5ZXI6YSxpc0ZhbGxiYWNrVHJhbnNpdGlvbjpwfSkscHx8KGt3KHQscHcpLGEub25TdGFydCgoKCk9PntTdyh0LHB3KX0pKSksYS5vbkRvbmUoKCgpPT57bGV0IGU9dGhpcy5wbGF5ZXJzLmluZGV4T2YoYSk7ZT49MCYmdGhpcy5wbGF5ZXJzLnNwbGljZShlLDEpO2NvbnN0IG49dGhpcy5fZW5naW5lLnBsYXllcnNCeUVsZW1lbnQuZ2V0KHQpO2lmKG4pe2xldCB0PW4uaW5kZXhPZihhKTt0Pj0wJiZuLnNwbGljZSh0LDEpfX0pKSx0aGlzLnBsYXllcnMucHVzaChhKSxjLnB1c2goYSksYX1kZXJlZ2lzdGVyKHQpe2RlbGV0ZSB0aGlzLl90cmlnZ2Vyc1t0XSx0aGlzLl9lbmdpbmUuc3RhdGVzQnlFbGVtZW50LmZvckVhY2goKChlLG4pPT57ZGVsZXRlIGVbdF19KSksdGhpcy5fZWxlbWVudExpc3RlbmVycy5mb3JFYWNoKCgoZSxuKT0+e3RoaXMuX2VsZW1lbnRMaXN0ZW5lcnMuc2V0KG4sZS5maWx0ZXIoKGU9PmUubmFtZSE9dCkpKX0pKX1jbGVhckVsZW1lbnRDYWNoZSh0KXt0aGlzLl9lbmdpbmUuc3RhdGVzQnlFbGVtZW50LmRlbGV0ZSh0KSx0aGlzLl9lbGVtZW50TGlzdGVuZXJzLmRlbGV0ZSh0KTtjb25zdCBlPXRoaXMuX2VuZ2luZS5wbGF5ZXJzQnlFbGVtZW50LmdldCh0KTtlJiYoZS5mb3JFYWNoKCh0PT50LmRlc3Ryb3koKSkpLHRoaXMuX2VuZ2luZS5wbGF5ZXJzQnlFbGVtZW50LmRlbGV0ZSh0KSl9X3NpZ25hbFJlbW92YWxGb3JJbm5lclRyaWdnZXJzKHQsZSl7Y29uc3Qgbj10aGlzLl9lbmdpbmUuZHJpdmVyLnF1ZXJ5KHQsclAsITApO24uZm9yRWFjaCgodD0+e2lmKHQuX19uZ19yZW1vdmVkKXJldHVybjtjb25zdCBuPXRoaXMuX2VuZ2luZS5mZXRjaE5hbWVzcGFjZXNCeUVsZW1lbnQodCk7bi5zaXplP24uZm9yRWFjaCgobj0+bi50cmlnZ2VyTGVhdmVBbmltYXRpb24odCxlLCExLCEwKSkpOnRoaXMuY2xlYXJFbGVtZW50Q2FjaGUodCl9KSksdGhpcy5fZW5naW5lLmFmdGVyRmx1c2hBbmltYXRpb25zRG9uZSgoKCk9Pm4uZm9yRWFjaCgodD0+dGhpcy5jbGVhckVsZW1lbnRDYWNoZSh0KSkpKSl9dHJpZ2dlckxlYXZlQW5pbWF0aW9uKHQsZSxuLG8pe2NvbnN0IGk9dGhpcy5fZW5naW5lLnN0YXRlc0J5RWxlbWVudC5nZXQodCk7aWYoaSl7Y29uc3QgYT1bXTtpZihPYmplY3Qua2V5cyhpKS5mb3JFYWNoKChlPT57aWYodGhpcy5fdHJpZ2dlcnNbZV0pe2NvbnN0IG49dGhpcy50cmlnZ2VyKHQsZSx5dyxvKTtuJiZhLnB1c2gobil9fSkpLGEubGVuZ3RoKXJldHVybiB0aGlzLl9lbmdpbmUubWFya0VsZW1lbnRBc1JlbW92ZWQodGhpcy5pZCx0LCEwLGUpLG4mJkhPKGEpLm9uRG9uZSgoKCk9PnRoaXMuX2VuZ2luZS5wcm9jZXNzTGVhdmVOb2RlKHQpKSksITB9cmV0dXJuITF9cHJlcGFyZUxlYXZlQW5pbWF0aW9uTGlzdGVuZXJzKHQpe2NvbnN0IGU9dGhpcy5fZWxlbWVudExpc3RlbmVycy5nZXQodCksbj10aGlzLl9lbmdpbmUuc3RhdGVzQnlFbGVtZW50LmdldCh0KTtpZihlJiZuKXtjb25zdCBvPW5ldyBTZXQ7ZS5mb3JFYWNoKChlPT57Y29uc3QgaT1lLm5hbWU7aWYoby5oYXMoaSkpcmV0dXJuO28uYWRkKGkpO2NvbnN0IGE9dGhpcy5fdHJpZ2dlcnNbaV0uZmFsbGJhY2tUcmFuc2l0aW9uLHI9bltpXXx8X3cscz1uZXcgYncoeXcpLGw9bmV3IHZ3KHRoaXMuaWQsaSx0KTt0aGlzLl9lbmdpbmUudG90YWxRdWV1ZWRQbGF5ZXJzKyssdGhpcy5fcXVldWUucHVzaCh7ZWxlbWVudDp0LHRyaWdnZXJOYW1lOmksdHJhbnNpdGlvbjphLGZyb21TdGF0ZTpyLHRvU3RhdGU6cyxwbGF5ZXI6bCxpc0ZhbGxiYWNrVHJhbnNpdGlvbjohMH0pfSkpfX1yZW1vdmVOb2RlKHQsZSl7Y29uc3Qgbj10aGlzLl9lbmdpbmU7aWYodC5jaGlsZEVsZW1lbnRDb3VudCYmdGhpcy5fc2lnbmFsUmVtb3ZhbEZvcklubmVyVHJpZ2dlcnModCxlKSx0aGlzLnRyaWdnZXJMZWF2ZUFuaW1hdGlvbih0LGUsITApKXJldHVybjtsZXQgbz0hMTtpZihuLnRvdGFsQW5pbWF0aW9ucyl7Y29uc3QgZT1uLnBsYXllcnMubGVuZ3RoP24ucGxheWVyc0J5UXVlcmllZEVsZW1lbnQuZ2V0KHQpOltdO2lmKGUmJmUubGVuZ3RoKW89ITA7ZWxzZXtsZXQgZT10O2Zvcig7ZT1lLnBhcmVudE5vZGU7KXtpZihuLnN0YXRlc0J5RWxlbWVudC5nZXQoZSkpe289ITA7YnJlYWt9fX19aWYodGhpcy5wcmVwYXJlTGVhdmVBbmltYXRpb25MaXN0ZW5lcnModCksbyluLm1hcmtFbGVtZW50QXNSZW1vdmVkKHRoaXMuaWQsdCwhMSxlKTtlbHNle2NvbnN0IG89dC5fX25nX3JlbW92ZWQ7byYmbyE9PWd3fHwobi5hZnRlckZsdXNoKCgoKT0+dGhpcy5jbGVhckVsZW1lbnRDYWNoZSh0KSkpLG4uZGVzdHJveUlubmVyQW5pbWF0aW9ucyh0KSxuLl9vblJlbW92YWxDb21wbGV0ZSh0LGUpKX19aW5zZXJ0Tm9kZSh0LGUpe2t3KHQsdGhpcy5faG9zdENsYXNzTmFtZSl9ZHJhaW5RdWV1ZWRUcmFuc2l0aW9ucyh0KXtjb25zdCBlPVtdO3JldHVybiB0aGlzLl9xdWV1ZS5mb3JFYWNoKChuPT57Y29uc3Qgbz1uLnBsYXllcjtpZihvLmRlc3Ryb3llZClyZXR1cm47Y29uc3QgaT1uLmVsZW1lbnQsYT10aGlzLl9lbGVtZW50TGlzdGVuZXJzLmdldChpKTthJiZhLmZvckVhY2goKGU9PntpZihlLm5hbWU9PW4udHJpZ2dlck5hbWUpe2NvbnN0IG89Vk8oaSxuLnRyaWdnZXJOYW1lLG4uZnJvbVN0YXRlLnZhbHVlLG4udG9TdGF0ZS52YWx1ZSk7by5fZGF0YT10LExPKG4ucGxheWVyLGUucGhhc2UsbyxlLmNhbGxiYWNrKX19KSksby5tYXJrZWRGb3JEZXN0cm95P3RoaXMuX2VuZ2luZS5hZnRlckZsdXNoKCgoKT0+e28uZGVzdHJveSgpfSkpOmUucHVzaChuKX0pKSx0aGlzLl9xdWV1ZT1bXSxlLnNvcnQoKCh0LGUpPT57Y29uc3Qgbj10LnRyYW5zaXRpb24uYXN0LmRlcENvdW50LG89ZS50cmFuc2l0aW9uLmFzdC5kZXBDb3VudDtyZXR1cm4gMD09bnx8MD09bz9uLW86dGhpcy5fZW5naW5lLmRyaXZlci5jb250YWluc0VsZW1lbnQodC5lbGVtZW50LGUuZWxlbWVudCk/MTotMX0pKX1kZXN0cm95KHQpe3RoaXMucGxheWVycy5mb3JFYWNoKCh0PT50LmRlc3Ryb3koKSkpLHRoaXMuX3NpZ25hbFJlbW92YWxGb3JJbm5lclRyaWdnZXJzKHRoaXMuaG9zdEVsZW1lbnQsdCl9ZWxlbWVudENvbnRhaW5zRGF0YSh0KXtsZXQgZT0hMTtyZXR1cm4gdGhpcy5fZWxlbWVudExpc3RlbmVycy5oYXModCkmJihlPSEwKSxlPSEhdGhpcy5fcXVldWUuZmluZCgoZT0+ZS5lbGVtZW50PT09dCkpfHxlLGV9fWNsYXNzIE13e2NvbnN0cnVjdG9yKHQsZSxuKXt0aGlzLmJvZHlOb2RlPXQsdGhpcy5kcml2ZXI9ZSx0aGlzLl9ub3JtYWxpemVyPW4sdGhpcy5wbGF5ZXJzPVtdLHRoaXMubmV3SG9zdEVsZW1lbnRzPW5ldyBNYXAsdGhpcy5wbGF5ZXJzQnlFbGVtZW50PW5ldyBNYXAsdGhpcy5wbGF5ZXJzQnlRdWVyaWVkRWxlbWVudD1uZXcgTWFwLHRoaXMuc3RhdGVzQnlFbGVtZW50PW5ldyBNYXAsdGhpcy5kaXNhYmxlZE5vZGVzPW5ldyBTZXQsdGhpcy50b3RhbEFuaW1hdGlvbnM9MCx0aGlzLnRvdGFsUXVldWVkUGxheWVycz0wLHRoaXMuX25hbWVzcGFjZUxvb2t1cD17fSx0aGlzLl9uYW1lc3BhY2VMaXN0PVtdLHRoaXMuX2ZsdXNoRm5zPVtdLHRoaXMuX3doZW5RdWlldEZucz1bXSx0aGlzLm5hbWVzcGFjZXNCeUhvc3RFbGVtZW50PW5ldyBNYXAsdGhpcy5jb2xsZWN0ZWRFbnRlckVsZW1lbnRzPVtdLHRoaXMuY29sbGVjdGVkTGVhdmVFbGVtZW50cz1bXSx0aGlzLm9uUmVtb3ZhbENvbXBsZXRlPSh0LGUpPT57fX1fb25SZW1vdmFsQ29tcGxldGUodCxlKXt0aGlzLm9uUmVtb3ZhbENvbXBsZXRlKHQsZSl9Z2V0IHF1ZXVlZFBsYXllcnMoKXtjb25zdCB0PVtdO3JldHVybiB0aGlzLl9uYW1lc3BhY2VMaXN0LmZvckVhY2goKGU9PntlLnBsYXllcnMuZm9yRWFjaCgoZT0+e2UucXVldWVkJiZ0LnB1c2goZSl9KSl9KSksdH1jcmVhdGVOYW1lc3BhY2UodCxlKXtjb25zdCBuPW5ldyBDdyh0LGUsdGhpcyk7cmV0dXJuIHRoaXMuYm9keU5vZGUmJnRoaXMuZHJpdmVyLmNvbnRhaW5zRWxlbWVudCh0aGlzLmJvZHlOb2RlLGUpP3RoaXMuX2JhbGFuY2VOYW1lc3BhY2VMaXN0KG4sZSk6KHRoaXMubmV3SG9zdEVsZW1lbnRzLnNldChlLG4pLHRoaXMuY29sbGVjdEVudGVyRWxlbWVudChlKSksdGhpcy5fbmFtZXNwYWNlTG9va3VwW3RdPW59X2JhbGFuY2VOYW1lc3BhY2VMaXN0KHQsZSl7Y29uc3Qgbj10aGlzLl9uYW1lc3BhY2VMaXN0Lmxlbmd0aC0xO2lmKG4+PTApe2xldCBvPSExO2ZvcihsZXQgaT1uO2k+PTA7aS0tKXtpZih0aGlzLmRyaXZlci5jb250YWluc0VsZW1lbnQodGhpcy5fbmFtZXNwYWNlTGlzdFtpXS5ob3N0RWxlbWVudCxlKSl7dGhpcy5fbmFtZXNwYWNlTGlzdC5zcGxpY2UoaSsxLDAsdCksbz0hMDticmVha319b3x8dGhpcy5fbmFtZXNwYWNlTGlzdC5zcGxpY2UoMCwwLHQpfWVsc2UgdGhpcy5fbmFtZXNwYWNlTGlzdC5wdXNoKHQpO3JldHVybiB0aGlzLm5hbWVzcGFjZXNCeUhvc3RFbGVtZW50LnNldChlLHQpLHR9cmVnaXN0ZXIodCxlKXtsZXQgbj10aGlzLl9uYW1lc3BhY2VMb29rdXBbdF07cmV0dXJuIG58fChuPXRoaXMuY3JlYXRlTmFtZXNwYWNlKHQsZSkpLG59cmVnaXN0ZXJUcmlnZ2VyKHQsZSxuKXtsZXQgbz10aGlzLl9uYW1lc3BhY2VMb29rdXBbdF07byYmby5yZWdpc3RlcihlLG4pJiZ0aGlzLnRvdGFsQW5pbWF0aW9ucysrfWRlc3Ryb3kodCxlKXtpZighdClyZXR1cm47Y29uc3Qgbj10aGlzLl9mZXRjaE5hbWVzcGFjZSh0KTt0aGlzLmFmdGVyRmx1c2goKCgpPT57dGhpcy5uYW1lc3BhY2VzQnlIb3N0RWxlbWVudC5kZWxldGUobi5ob3N0RWxlbWVudCksZGVsZXRlIHRoaXMuX25hbWVzcGFjZUxvb2t1cFt0XTtjb25zdCBlPXRoaXMuX25hbWVzcGFjZUxpc3QuaW5kZXhPZihuKTtlPj0wJiZ0aGlzLl9uYW1lc3BhY2VMaXN0LnNwbGljZShlLDEpfSkpLHRoaXMuYWZ0ZXJGbHVzaEFuaW1hdGlvbnNEb25lKCgoKT0+bi5kZXN0cm95KGUpKSl9X2ZldGNoTmFtZXNwYWNlKHQpe3JldHVybiB0aGlzLl9uYW1lc3BhY2VMb29rdXBbdF19ZmV0Y2hOYW1lc3BhY2VzQnlFbGVtZW50KHQpe2NvbnN0IGU9bmV3IFNldCxuPXRoaXMuc3RhdGVzQnlFbGVtZW50LmdldCh0KTtpZihuKXtjb25zdCB0PU9iamVjdC5rZXlzKG4pO2ZvcihsZXQgbz0wO288dC5sZW5ndGg7bysrKXtjb25zdCBpPW5bdFtvXV0ubmFtZXNwYWNlSWQ7aWYoaSl7Y29uc3QgdD10aGlzLl9mZXRjaE5hbWVzcGFjZShpKTt0JiZlLmFkZCh0KX19fXJldHVybiBlfXRyaWdnZXIodCxlLG4sbyl7aWYoeHcoZSkpe2NvbnN0IGk9dGhpcy5fZmV0Y2hOYW1lc3BhY2UodCk7aWYoaSlyZXR1cm4gaS50cmlnZ2VyKGUsbixvKSwhMH1yZXR1cm4hMX1pbnNlcnROb2RlKHQsZSxuLG8pe2lmKCF4dyhlKSlyZXR1cm47Y29uc3QgaT1lLl9fbmdfcmVtb3ZlZDtpZihpJiZpLnNldEZvclJlbW92YWwpe2kuc2V0Rm9yUmVtb3ZhbD0hMSxpLnNldEZvck1vdmU9ITA7Y29uc3QgdD10aGlzLmNvbGxlY3RlZExlYXZlRWxlbWVudHMuaW5kZXhPZihlKTt0Pj0wJiZ0aGlzLmNvbGxlY3RlZExlYXZlRWxlbWVudHMuc3BsaWNlKHQsMSl9aWYodCl7Y29uc3Qgbz10aGlzLl9mZXRjaE5hbWVzcGFjZSh0KTtvJiZvLmluc2VydE5vZGUoZSxuKX1vJiZ0aGlzLmNvbGxlY3RFbnRlckVsZW1lbnQoZSl9Y29sbGVjdEVudGVyRWxlbWVudCh0KXt0aGlzLmNvbGxlY3RlZEVudGVyRWxlbWVudHMucHVzaCh0KX1tYXJrRWxlbWVudEFzRGlzYWJsZWQodCxlKXtlP3RoaXMuZGlzYWJsZWROb2Rlcy5oYXModCl8fCh0aGlzLmRpc2FibGVkTm9kZXMuYWRkKHQpLGt3KHQsbXcpKTp0aGlzLmRpc2FibGVkTm9kZXMuaGFzKHQpJiYodGhpcy5kaXNhYmxlZE5vZGVzLmRlbGV0ZSh0KSxTdyh0LG13KSl9cmVtb3ZlTm9kZSh0LGUsbixvKXtpZih4dyhlKSl7Y29uc3QgaT10P3RoaXMuX2ZldGNoTmFtZXNwYWNlKHQpOm51bGw7aWYoaT9pLnJlbW92ZU5vZGUoZSxvKTp0aGlzLm1hcmtFbGVtZW50QXNSZW1vdmVkKHQsZSwhMSxvKSxuKXtjb25zdCBuPXRoaXMubmFtZXNwYWNlc0J5SG9zdEVsZW1lbnQuZ2V0KGUpO24mJm4uaWQhPT10JiZuLnJlbW92ZU5vZGUoZSxvKX19ZWxzZSB0aGlzLl9vblJlbW92YWxDb21wbGV0ZShlLG8pfW1hcmtFbGVtZW50QXNSZW1vdmVkKHQsZSxuLG8pe3RoaXMuY29sbGVjdGVkTGVhdmVFbGVtZW50cy5wdXNoKGUpLGUuX19uZ19yZW1vdmVkPXtuYW1lc3BhY2VJZDp0LHNldEZvclJlbW92YWw6byxoYXNBbmltYXRpb246bixyZW1vdmVkQmVmb3JlUXVlcmllZDohMX19bGlzdGVuKHQsZSxuLG8saSl7cmV0dXJuIHh3KGUpP3RoaXMuX2ZldGNoTmFtZXNwYWNlKHQpLmxpc3RlbihlLG4sbyxpKTooKT0+e319X2J1aWxkSW5zdHJ1Y3Rpb24odCxlLG4sbyxpKXtyZXR1cm4gdC50cmFuc2l0aW9uLmJ1aWxkKHRoaXMuZHJpdmVyLHQuZWxlbWVudCx0LmZyb21TdGF0ZS52YWx1ZSx0LnRvU3RhdGUudmFsdWUsbixvLHQuZnJvbVN0YXRlLm9wdGlvbnMsdC50b1N0YXRlLm9wdGlvbnMsZSxpKX1kZXN0cm95SW5uZXJBbmltYXRpb25zKHQpe2xldCBlPXRoaXMuZHJpdmVyLnF1ZXJ5KHQsclAsITApO2UuZm9yRWFjaCgodD0+dGhpcy5kZXN0cm95QWN0aXZlQW5pbWF0aW9uc0ZvckVsZW1lbnQodCkpKSwwIT10aGlzLnBsYXllcnNCeVF1ZXJpZWRFbGVtZW50LnNpemUmJihlPXRoaXMuZHJpdmVyLnF1ZXJ5KHQsbFAsITApLGUuZm9yRWFjaCgodD0+dGhpcy5maW5pc2hBY3RpdmVRdWVyaWVkQW5pbWF0aW9uT25FbGVtZW50KHQpKSkpfWRlc3Ryb3lBY3RpdmVBbmltYXRpb25zRm9yRWxlbWVudCh0KXtjb25zdCBlPXRoaXMucGxheWVyc0J5RWxlbWVudC5nZXQodCk7ZSYmZS5mb3JFYWNoKCh0PT57dC5xdWV1ZWQ/dC5tYXJrZWRGb3JEZXN0cm95PSEwOnQuZGVzdHJveSgpfSkpfWZpbmlzaEFjdGl2ZVF1ZXJpZWRBbmltYXRpb25PbkVsZW1lbnQodCl7Y29uc3QgZT10aGlzLnBsYXllcnNCeVF1ZXJpZWRFbGVtZW50LmdldCh0KTtlJiZlLmZvckVhY2goKHQ9PnQuZmluaXNoKCkpKX13aGVuUmVuZGVyaW5nRG9uZSgpe3JldHVybiBuZXcgUHJvbWlzZSgodD0+e2lmKHRoaXMucGxheWVycy5sZW5ndGgpcmV0dXJuIEhPKHRoaXMucGxheWVycykub25Eb25lKCgoKT0+dCgpKSk7dCgpfSkpfXByb2Nlc3NMZWF2ZU5vZGUodCl7Y29uc3QgZT10Ll9fbmdfcmVtb3ZlZDtpZihlJiZlLnNldEZvclJlbW92YWwpe2lmKHQuX19uZ19yZW1vdmVkPWd3LGUubmFtZXNwYWNlSWQpe3RoaXMuZGVzdHJveUlubmVyQW5pbWF0aW9ucyh0KTtjb25zdCBuPXRoaXMuX2ZldGNoTmFtZXNwYWNlKGUubmFtZXNwYWNlSWQpO24mJm4uY2xlYXJFbGVtZW50Q2FjaGUodCl9dGhpcy5fb25SZW1vdmFsQ29tcGxldGUodCxlLnNldEZvclJlbW92YWwpfXRoaXMuZHJpdmVyLm1hdGNoZXNFbGVtZW50KHQsZncpJiZ0aGlzLm1hcmtFbGVtZW50QXNEaXNhYmxlZCh0LCExKSx0aGlzLmRyaXZlci5xdWVyeSh0LGZ3LCEwKS5mb3JFYWNoKCh0PT57dGhpcy5tYXJrRWxlbWVudEFzRGlzYWJsZWQodCwhMSl9KSl9Zmx1c2godD0tMSl7bGV0IGU9W107aWYodGhpcy5uZXdIb3N0RWxlbWVudHMuc2l6ZSYmKHRoaXMubmV3SG9zdEVsZW1lbnRzLmZvckVhY2goKCh0LGUpPT50aGlzLl9iYWxhbmNlTmFtZXNwYWNlTGlzdCh0LGUpKSksdGhpcy5uZXdIb3N0RWxlbWVudHMuY2xlYXIoKSksdGhpcy50b3RhbEFuaW1hdGlvbnMmJnRoaXMuY29sbGVjdGVkRW50ZXJFbGVtZW50cy5sZW5ndGgpZm9yKGxldCB0PTA7dDx0aGlzLmNvbGxlY3RlZEVudGVyRWxlbWVudHMubGVuZ3RoO3QrKyl7a3codGhpcy5jb2xsZWN0ZWRFbnRlckVsZW1lbnRzW3RdLCJuZy1zdGFyLWluc2VydGVkIil9aWYodGhpcy5fbmFtZXNwYWNlTGlzdC5sZW5ndGgmJih0aGlzLnRvdGFsUXVldWVkUGxheWVyc3x8dGhpcy5jb2xsZWN0ZWRMZWF2ZUVsZW1lbnRzLmxlbmd0aCkpe2NvbnN0IG49W107dHJ5e2U9dGhpcy5fZmx1c2hBbmltYXRpb25zKG4sdCl9ZmluYWxseXtmb3IobGV0IHQ9MDt0PG4ubGVuZ3RoO3QrKyluW3RdKCl9fWVsc2UgZm9yKGxldCB0PTA7dDx0aGlzLmNvbGxlY3RlZExlYXZlRWxlbWVudHMubGVuZ3RoO3QrKyl7dGhpcy5wcm9jZXNzTGVhdmVOb2RlKHRoaXMuY29sbGVjdGVkTGVhdmVFbGVtZW50c1t0XSl9aWYodGhpcy50b3RhbFF1ZXVlZFBsYXllcnM9MCx0aGlzLmNvbGxlY3RlZEVudGVyRWxlbWVudHMubGVuZ3RoPTAsdGhpcy5jb2xsZWN0ZWRMZWF2ZUVsZW1lbnRzLmxlbmd0aD0wLHRoaXMuX2ZsdXNoRm5zLmZvckVhY2goKHQ9PnQoKSkpLHRoaXMuX2ZsdXNoRm5zPVtdLHRoaXMuX3doZW5RdWlldEZucy5sZW5ndGgpe2NvbnN0IHQ9dGhpcy5fd2hlblF1aWV0Rm5zO3RoaXMuX3doZW5RdWlldEZucz1bXSxlLmxlbmd0aD9ITyhlKS5vbkRvbmUoKCgpPT57dC5mb3JFYWNoKCh0PT50KCkpKX0pKTp0LmZvckVhY2goKHQ9PnQoKSkpfX1yZXBvcnRFcnJvcih0KXt0aHJvdyBuZXcgRXJyb3IoYFVuYWJsZSB0byBwcm9jZXNzIGFuaW1hdGlvbnMgZHVlIHRvIHRoZSBmb2xsb3dpbmcgZmFpbGVkIHRyaWdnZXIgdHJhbnNpdGlvbnNcbiAke3Quam9pbigiXG4iKX1gKX1fZmx1c2hBbmltYXRpb25zKHQsZSl7Y29uc3Qgbj1uZXcgVVAsbz1bXSxpPW5ldyBNYXAsYT1bXSxyPW5ldyBNYXAscz1uZXcgTWFwLGw9bmV3IE1hcCxjPW5ldyBTZXQ7dGhpcy5kaXNhYmxlZE5vZGVzLmZvckVhY2goKHQ9PntjLmFkZCh0KTtjb25zdCBlPXRoaXMuZHJpdmVyLnF1ZXJ5KHQsIi5uZy1hbmltYXRlLXF1ZXVlZCIsITApO2ZvcihsZXQgdD0wO3Q8ZS5sZW5ndGg7dCsrKWMuYWRkKGVbdF0pfSkpO2NvbnN0IGQ9dGhpcy5ib2R5Tm9kZSxwPUFycmF5LmZyb20odGhpcy5zdGF0ZXNCeUVsZW1lbnQua2V5cygpKSxtPXd3KHAsdGhpcy5jb2xsZWN0ZWRFbnRlckVsZW1lbnRzKSxmPW5ldyBNYXA7bGV0IHU9MDttLmZvckVhY2goKCh0LGUpPT57Y29uc3Qgbj1vUCt1Kys7Zi5zZXQoZSxuKSx0LmZvckVhY2goKHQ9Pmt3KHQsbikpKX0pKTtjb25zdCBnPVtdLGg9bmV3IFNldCxiPW5ldyBTZXQ7Zm9yKGxldCB0PTA7dDx0aGlzLmNvbGxlY3RlZExlYXZlRWxlbWVudHMubGVuZ3RoO3QrKyl7Y29uc3QgZT10aGlzLmNvbGxlY3RlZExlYXZlRWxlbWVudHNbdF0sbj1lLl9fbmdfcmVtb3ZlZDtuJiZuLnNldEZvclJlbW92YWwmJihnLnB1c2goZSksaC5hZGQoZSksbi5oYXNBbmltYXRpb24/dGhpcy5kcml2ZXIucXVlcnkoZSwiLm5nLXN0YXItaW5zZXJ0ZWQiLCEwKS5mb3JFYWNoKCh0PT5oLmFkZCh0KSkpOmIuYWRkKGUpKX1jb25zdCB5PW5ldyBNYXAsXz13dyhwLEFycmF5LmZyb20oaCkpO18uZm9yRWFjaCgoKHQsZSk9Pntjb25zdCBuPWlQK3UrKzt5LnNldChlLG4pLHQuZm9yRWFjaCgodD0+a3codCxuKSkpfSkpLHQucHVzaCgoKCk9PnttLmZvckVhY2goKCh0LGUpPT57Y29uc3Qgbj1mLmdldChlKTt0LmZvckVhY2goKHQ9PlN3KHQsbikpKX0pKSxfLmZvckVhY2goKCh0LGUpPT57Y29uc3Qgbj15LmdldChlKTt0LmZvckVhY2goKHQ9PlN3KHQsbikpKX0pKSxnLmZvckVhY2goKHQ9Pnt0aGlzLnByb2Nlc3NMZWF2ZU5vZGUodCl9KSl9KSk7Y29uc3QgQz1bXSxNPVtdO2ZvcihsZXQgdD10aGlzLl9uYW1lc3BhY2VMaXN0Lmxlbmd0aC0xO3Q+PTA7dC0tKXt0aGlzLl9uYW1lc3BhY2VMaXN0W3RdLmRyYWluUXVldWVkVHJhbnNpdGlvbnMoZSkuZm9yRWFjaCgodD0+e2NvbnN0IGU9dC5wbGF5ZXIsaT10LmVsZW1lbnQ7aWYoQy5wdXNoKGUpLHRoaXMuY29sbGVjdGVkRW50ZXJFbGVtZW50cy5sZW5ndGgpe2NvbnN0IHQ9aS5fX25nX3JlbW92ZWQ7aWYodCYmdC5zZXRGb3JNb3ZlKXJldHVybiB2b2lkIGUuZGVzdHJveSgpfWNvbnN0IGM9IWR8fCF0aGlzLmRyaXZlci5jb250YWluc0VsZW1lbnQoZCxpKSxwPXkuZ2V0KGkpLG09Zi5nZXQoaSksdT10aGlzLl9idWlsZEluc3RydWN0aW9uKHQsbixtLHAsYyk7aWYodS5lcnJvcnMmJnUuZXJyb3JzLmxlbmd0aClyZXR1cm4gdm9pZCBNLnB1c2godSk7aWYoYylyZXR1cm4gZS5vblN0YXJ0KCgoKT0+YlAoaSx1LmZyb21TdHlsZXMpKSksZS5vbkRlc3Ryb3koKCgpPT5oUChpLHUudG9TdHlsZXMpKSksdm9pZCBvLnB1c2goZSk7aWYodC5pc0ZhbGxiYWNrVHJhbnNpdGlvbilyZXR1cm4gZS5vblN0YXJ0KCgoKT0+YlAoaSx1LmZyb21TdHlsZXMpKSksZS5vbkRlc3Ryb3koKCgpPT5oUChpLHUudG9TdHlsZXMpKSksdm9pZCBvLnB1c2goZSk7dS50aW1lbGluZXMuZm9yRWFjaCgodD0+dC5zdHJldGNoU3RhcnRpbmdLZXlmcmFtZT0hMCkpLG4uYXBwZW5kKGksdS50aW1lbGluZXMpO2EucHVzaCh7aW5zdHJ1Y3Rpb246dSxwbGF5ZXI6ZSxlbGVtZW50Oml9KSx1LnF1ZXJpZWRFbGVtZW50cy5mb3JFYWNoKCh0PT5qTyhyLHQsW10pLnB1c2goZSkpKSx1LnByZVN0eWxlUHJvcHMuZm9yRWFjaCgoKHQsZSk9Pntjb25zdCBuPU9iamVjdC5rZXlzKHQpO2lmKG4ubGVuZ3RoKXtsZXQgdD1zLmdldChlKTt0fHxzLnNldChlLHQ9bmV3IFNldCksbi5mb3JFYWNoKChlPT50LmFkZChlKSkpfX0pKSx1LnBvc3RTdHlsZVByb3BzLmZvckVhY2goKCh0LGUpPT57Y29uc3Qgbj1PYmplY3Qua2V5cyh0KTtsZXQgbz1sLmdldChlKTtvfHxsLnNldChlLG89bmV3IFNldCksbi5mb3JFYWNoKCh0PT5vLmFkZCh0KSkpfSkpfSkpfWlmKE0ubGVuZ3RoKXtjb25zdCB0PVtdO00uZm9yRWFjaCgoZT0+e3QucHVzaChgQCR7ZS50cmlnZ2VyTmFtZX0gaGFzIGZhaWxlZCBkdWUgdG86XG5gKSxlLmVycm9ycy5mb3JFYWNoKChlPT50LnB1c2goYC0gJHtlfVxuYCkpKX0pKSxDLmZvckVhY2goKHQ9PnQuZGVzdHJveSgpKSksdGhpcy5yZXBvcnRFcnJvcih0KX1jb25zdCB2PW5ldyBNYXAseD1uZXcgTWFwO2EuZm9yRWFjaCgodD0+e2NvbnN0IGU9dC5lbGVtZW50O24uaGFzKGUpJiYoeC5zZXQoZSxlKSx0aGlzLl9iZWZvcmVBbmltYXRpb25CdWlsZCh0LnBsYXllci5uYW1lc3BhY2VJZCx0Lmluc3RydWN0aW9uLHYpKX0pKSxvLmZvckVhY2goKHQ9Pntjb25zdCBlPXQuZWxlbWVudDt0aGlzLl9nZXRQcmV2aW91c1BsYXllcnMoZSwhMSx0Lm5hbWVzcGFjZUlkLHQudHJpZ2dlck5hbWUsbnVsbCkuZm9yRWFjaCgodD0+e2pPKHYsZSxbXSkucHVzaCh0KSx0LmRlc3Ryb3koKX0pKX0pKTtjb25zdCBPPWcuZmlsdGVyKCh0PT5Fdyh0LHMsbCkpKSxQPW5ldyBNYXA7UHcoUCx0aGlzLmRyaXZlcixiLGwsdk8pLmZvckVhY2goKHQ9PntFdyh0LHMsbCkmJk8ucHVzaCh0KX0pKTtjb25zdCB3PW5ldyBNYXA7bS5mb3JFYWNoKCgodCxlKT0+e1B3KHcsdGhpcy5kcml2ZXIsbmV3IFNldCh0KSxzLCIhIil9KSksTy5mb3JFYWNoKCh0PT57Y29uc3QgZT1QLmdldCh0KSxuPXcuZ2V0KHQpO1Auc2V0KHQsT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGUpLG4pKX0pKTtjb25zdCBrPVtdLFM9W10sRD17fTthLmZvckVhY2goKHQ9Pntjb25zdHtlbGVtZW50OmUscGxheWVyOmEsaW5zdHJ1Y3Rpb246cn09dDtpZihuLmhhcyhlKSl7aWYoYy5oYXMoZSkpcmV0dXJuIGEub25EZXN0cm95KCgoKT0+aFAoZSxyLnRvU3R5bGVzKSkpLGEuZGlzYWJsZWQ9ITAsYS5vdmVycmlkZVRvdGFsVGltZShyLnRvdGFsVGltZSksdm9pZCBvLnB1c2goYSk7bGV0IHQ9RDtpZih4LnNpemU+MSl7bGV0IG49ZTtjb25zdCBvPVtdO2Zvcig7bj1uLnBhcmVudE5vZGU7KXtjb25zdCBlPXguZ2V0KG4pO2lmKGUpe3Q9ZTticmVha31vLnB1c2gobil9by5mb3JFYWNoKChlPT54LnNldChlLHQpKSl9Y29uc3Qgbj10aGlzLl9idWlsZEFuaW1hdGlvbihhLm5hbWVzcGFjZUlkLHIsdixpLHcsUCk7aWYoYS5zZXRSZWFsUGxheWVyKG4pLHQ9PT1EKWsucHVzaChhKTtlbHNle2NvbnN0IGU9dGhpcy5wbGF5ZXJzQnlFbGVtZW50LmdldCh0KTtlJiZlLmxlbmd0aCYmKGEucGFyZW50UGxheWVyPUhPKGUpKSxvLnB1c2goYSl9fWVsc2UgYlAoZSxyLmZyb21TdHlsZXMpLGEub25EZXN0cm95KCgoKT0+aFAoZSxyLnRvU3R5bGVzKSkpLFMucHVzaChhKSxjLmhhcyhlKSYmby5wdXNoKGEpfSkpLFMuZm9yRWFjaCgodD0+e2NvbnN0IGU9aS5nZXQodC5lbGVtZW50KTtpZihlJiZlLmxlbmd0aCl7Y29uc3Qgbj1ITyhlKTt0LnNldFJlYWxQbGF5ZXIobil9fSkpLG8uZm9yRWFjaCgodD0+e3QucGFyZW50UGxheWVyP3Quc3luY1BsYXllckV2ZW50cyh0LnBhcmVudFBsYXllcik6dC5kZXN0cm95KCl9KSk7Zm9yKGxldCB0PTA7dDxnLmxlbmd0aDt0Kyspe2NvbnN0IGU9Z1t0XSxuPWUuX19uZ19yZW1vdmVkO2lmKFN3KGUsaVApLG4mJm4uaGFzQW5pbWF0aW9uKWNvbnRpbnVlO2xldCBvPVtdO2lmKHIuc2l6ZSl7bGV0IHQ9ci5nZXQoZSk7dCYmdC5sZW5ndGgmJm8ucHVzaCguLi50KTtsZXQgbj10aGlzLmRyaXZlci5xdWVyeShlLGxQLCEwKTtmb3IobGV0IHQ9MDt0PG4ubGVuZ3RoO3QrKyl7bGV0IGU9ci5nZXQoblt0XSk7ZSYmZS5sZW5ndGgmJm8ucHVzaCguLi5lKX19Y29uc3QgaT1vLmZpbHRlcigodD0+IXQuZGVzdHJveWVkKSk7aS5sZW5ndGg/RHcodGhpcyxlLGkpOnRoaXMucHJvY2Vzc0xlYXZlTm9kZShlKX1yZXR1cm4gZy5sZW5ndGg9MCxrLmZvckVhY2goKHQ9Pnt0aGlzLnBsYXllcnMucHVzaCh0KSx0Lm9uRG9uZSgoKCk9Pnt0LmRlc3Ryb3koKTtjb25zdCBlPXRoaXMucGxheWVycy5pbmRleE9mKHQpO3RoaXMucGxheWVycy5zcGxpY2UoZSwxKX0pKSx0LnBsYXkoKX0pKSxrfWVsZW1lbnRDb250YWluc0RhdGEodCxlKXtsZXQgbj0hMTtjb25zdCBvPWUuX19uZ19yZW1vdmVkO3JldHVybiBvJiZvLnNldEZvclJlbW92YWwmJihuPSEwKSx0aGlzLnBsYXllcnNCeUVsZW1lbnQuaGFzKGUpJiYobj0hMCksdGhpcy5wbGF5ZXJzQnlRdWVyaWVkRWxlbWVudC5oYXMoZSkmJihuPSEwKSx0aGlzLnN0YXRlc0J5RWxlbWVudC5oYXMoZSkmJihuPSEwKSx0aGlzLl9mZXRjaE5hbWVzcGFjZSh0KS5lbGVtZW50Q29udGFpbnNEYXRhKGUpfHxufWFmdGVyRmx1c2godCl7dGhpcy5fZmx1c2hGbnMucHVzaCh0KX1hZnRlckZsdXNoQW5pbWF0aW9uc0RvbmUodCl7dGhpcy5fd2hlblF1aWV0Rm5zLnB1c2godCl9X2dldFByZXZpb3VzUGxheWVycyh0LGUsbixvLGkpe2xldCBhPVtdO2lmKGUpe2NvbnN0IGU9dGhpcy5wbGF5ZXJzQnlRdWVyaWVkRWxlbWVudC5nZXQodCk7ZSYmKGE9ZSl9ZWxzZXtjb25zdCBlPXRoaXMucGxheWVyc0J5RWxlbWVudC5nZXQodCk7aWYoZSl7Y29uc3QgdD0haXx8aT09eXc7ZS5mb3JFYWNoKChlPT57ZS5xdWV1ZWR8fCh0fHxlLnRyaWdnZXJOYW1lPT1vKSYmYS5wdXNoKGUpfSkpfX1yZXR1cm4obnx8bykmJihhPWEuZmlsdGVyKCh0PT4oIW58fG49PXQubmFtZXNwYWNlSWQpJiYoIW98fG89PXQudHJpZ2dlck5hbWUpKSkpLGF9X2JlZm9yZUFuaW1hdGlvbkJ1aWxkKHQsZSxuKXtjb25zdCBvPWUuZWxlbWVudCxpPWUuaXNSZW1vdmFsVHJhbnNpdGlvbj92b2lkIDA6dCxhPWUuaXNSZW1vdmFsVHJhbnNpdGlvbj92b2lkIDA6ZS50cmlnZ2VyTmFtZTtmb3IoY29uc3QgdCBvZiBlLnRpbWVsaW5lcyl7Y29uc3Qgcj10LmVsZW1lbnQscz1yIT09byxsPWpPKG4scixbXSk7dGhpcy5fZ2V0UHJldmlvdXNQbGF5ZXJzKHIscyxpLGEsZS50b1N0YXRlKS5mb3JFYWNoKCh0PT57Y29uc3QgZT10LmdldFJlYWxQbGF5ZXIoKTtlLmJlZm9yZURlc3Ryb3kmJmUuYmVmb3JlRGVzdHJveSgpLHQuZGVzdHJveSgpLGwucHVzaCh0KX0pKX1iUChvLGUuZnJvbVN0eWxlcyl9X2J1aWxkQW5pbWF0aW9uKHQsZSxuLG8saSxhKXtjb25zdCByPWUudHJpZ2dlck5hbWUscz1lLmVsZW1lbnQsbD1bXSxjPW5ldyBTZXQsZD1uZXcgU2V0LHA9ZS50aW1lbGluZXMubWFwKChlPT57Y29uc3QgcD1lLmVsZW1lbnQ7Yy5hZGQocCk7Y29uc3QgbT1wLl9fbmdfcmVtb3ZlZDtpZihtJiZtLnJlbW92ZWRCZWZvcmVRdWVyaWVkKXJldHVybiBuZXcgVE8oZS5kdXJhdGlvbixlLmRlbGF5KTtjb25zdCBmPXAhPT1zLHU9KGZ1bmN0aW9uIGcodCl7Y29uc3QgZT1bXTtyZXR1cm4gUncodCxlKSxlfSkoKG4uZ2V0KHApfHx1dykubWFwKCh0PT50LmdldFJlYWxQbGF5ZXIoKSkpKS5maWx0ZXIoKHQ9PiEhdC5lbGVtZW50JiZ0LmVsZW1lbnQ9PT1wKSksaD1pLmdldChwKSxiPWEuZ2V0KHApLHk9Rk8oMCx0aGlzLl9ub3JtYWxpemVyLDAsZS5rZXlmcmFtZXMsaCxiKSxfPXRoaXMuX2J1aWxkUGxheWVyKGUseSx1KTtpZihlLnN1YlRpbWVsaW5lJiZvJiZkLmFkZChwKSxmKXtjb25zdCBlPW5ldyB2dyh0LHIscCk7ZS5zZXRSZWFsUGxheWVyKF8pLGwucHVzaChlKX1yZXR1cm4gX30pKTtsLmZvckVhY2goKHQ9PntqTyh0aGlzLnBsYXllcnNCeVF1ZXJpZWRFbGVtZW50LHQuZWxlbWVudCxbXSkucHVzaCh0KSx0Lm9uRG9uZSgoKCk9PihmdW5jdGlvbiBlKHQsbixvKXtsZXQgaTtpZih0IGluc3RhbmNlb2YgTWFwKXtpZihpPXQuZ2V0KG4pLGkpe2lmKGkubGVuZ3RoKXtjb25zdCB0PWkuaW5kZXhPZihvKTtpLnNwbGljZSh0LDEpfTA9PWkubGVuZ3RoJiZ0LmRlbGV0ZShuKX19ZWxzZSBpZihpPXRbbl0saSl7aWYoaS5sZW5ndGgpe2NvbnN0IHQ9aS5pbmRleE9mKG8pO2kuc3BsaWNlKHQsMSl9MD09aS5sZW5ndGgmJmRlbGV0ZSB0W25dfXJldHVybiBpfSkodGhpcy5wbGF5ZXJzQnlRdWVyaWVkRWxlbWVudCx0LmVsZW1lbnQsdCkpKX0pKSxjLmZvckVhY2goKHQ9Pmt3KHQsc1ApKSk7Y29uc3QgbT1ITyhwKTtyZXR1cm4gbS5vbkRlc3Ryb3koKCgpPT57Yy5mb3JFYWNoKCh0PT5Tdyh0LHNQKSkpLGhQKHMsZS50b1N0eWxlcyl9KSksZC5mb3JFYWNoKCh0PT57ak8obyx0LFtdKS5wdXNoKG0pfSkpLG19X2J1aWxkUGxheWVyKHQsZSxuKXtyZXR1cm4gZS5sZW5ndGg+MD90aGlzLmRyaXZlci5hbmltYXRlKHQuZWxlbWVudCxlLHQuZHVyYXRpb24sdC5kZWxheSx0LmVhc2luZyxuKTpuZXcgVE8odC5kdXJhdGlvbix0LmRlbGF5KX19Y2xhc3Mgdnd7Y29uc3RydWN0b3IodCxlLG4pe3RoaXMubmFtZXNwYWNlSWQ9dCx0aGlzLnRyaWdnZXJOYW1lPWUsdGhpcy5lbGVtZW50PW4sdGhpcy5fcGxheWVyPW5ldyBUTyx0aGlzLl9jb250YWluc1JlYWxQbGF5ZXI9ITEsdGhpcy5fcXVldWVkQ2FsbGJhY2tzPXt9LHRoaXMuZGVzdHJveWVkPSExLHRoaXMubWFya2VkRm9yRGVzdHJveT0hMSx0aGlzLmRpc2FibGVkPSExLHRoaXMucXVldWVkPSEwLHRoaXMudG90YWxUaW1lPTB9c2V0UmVhbFBsYXllcih0KXt0aGlzLl9jb250YWluc1JlYWxQbGF5ZXJ8fCh0aGlzLl9wbGF5ZXI9dCxPYmplY3Qua2V5cyh0aGlzLl9xdWV1ZWRDYWxsYmFja3MpLmZvckVhY2goKGU9Pnt0aGlzLl9xdWV1ZWRDYWxsYmFja3NbZV0uZm9yRWFjaCgobj0+TE8odCxlLHZvaWQgMCxuKSkpfSkpLHRoaXMuX3F1ZXVlZENhbGxiYWNrcz17fSx0aGlzLl9jb250YWluc1JlYWxQbGF5ZXI9ITAsdGhpcy5vdmVycmlkZVRvdGFsVGltZSh0LnRvdGFsVGltZSksdGhpcy5xdWV1ZWQ9ITEpfWdldFJlYWxQbGF5ZXIoKXtyZXR1cm4gdGhpcy5fcGxheWVyfW92ZXJyaWRlVG90YWxUaW1lKHQpe3RoaXMudG90YWxUaW1lPXR9c3luY1BsYXllckV2ZW50cyh0KXtjb25zdCBlPXRoaXMuX3BsYXllcjtlLnRyaWdnZXJDYWxsYmFjayYmdC5vblN0YXJ0KCgoKT0+ZS50cmlnZ2VyQ2FsbGJhY2soInN0YXJ0IikpKSx0Lm9uRG9uZSgoKCk9PnRoaXMuZmluaXNoKCkpKSx0Lm9uRGVzdHJveSgoKCk9PnRoaXMuZGVzdHJveSgpKSl9X3F1ZXVlRXZlbnQodCxlKXtqTyh0aGlzLl9xdWV1ZWRDYWxsYmFja3MsdCxbXSkucHVzaChlKX1vbkRvbmUodCl7dGhpcy5xdWV1ZWQmJnRoaXMuX3F1ZXVlRXZlbnQoImRvbmUiLHQpLHRoaXMuX3BsYXllci5vbkRvbmUodCl9b25TdGFydCh0KXt0aGlzLnF1ZXVlZCYmdGhpcy5fcXVldWVFdmVudCgic3RhcnQiLHQpLHRoaXMuX3BsYXllci5vblN0YXJ0KHQpfW9uRGVzdHJveSh0KXt0aGlzLnF1ZXVlZCYmdGhpcy5fcXVldWVFdmVudCgiZGVzdHJveSIsdCksdGhpcy5fcGxheWVyLm9uRGVzdHJveSh0KX1pbml0KCl7dGhpcy5fcGxheWVyLmluaXQoKX1oYXNTdGFydGVkKCl7cmV0dXJuIXRoaXMucXVldWVkJiZ0aGlzLl9wbGF5ZXIuaGFzU3RhcnRlZCgpfXBsYXkoKXshdGhpcy5xdWV1ZWQmJnRoaXMuX3BsYXllci5wbGF5KCl9cGF1c2UoKXshdGhpcy5xdWV1ZWQmJnRoaXMuX3BsYXllci5wYXVzZSgpfXJlc3RhcnQoKXshdGhpcy5xdWV1ZWQmJnRoaXMuX3BsYXllci5yZXN0YXJ0KCl9ZmluaXNoKCl7dGhpcy5fcGxheWVyLmZpbmlzaCgpfWRlc3Ryb3koKXt0aGlzLmRlc3Ryb3llZD0hMCx0aGlzLl9wbGF5ZXIuZGVzdHJveSgpfXJlc2V0KCl7IXRoaXMucXVldWVkJiZ0aGlzLl9wbGF5ZXIucmVzZXQoKX1zZXRQb3NpdGlvbih0KXt0aGlzLnF1ZXVlZHx8dGhpcy5fcGxheWVyLnNldFBvc2l0aW9uKHQpfWdldFBvc2l0aW9uKCl7cmV0dXJuIHRoaXMucXVldWVkPzA6dGhpcy5fcGxheWVyLmdldFBvc2l0aW9uKCl9dHJpZ2dlckNhbGxiYWNrKHQpe2NvbnN0IGU9dGhpcy5fcGxheWVyO2UudHJpZ2dlckNhbGxiYWNrJiZlLnRyaWdnZXJDYWxsYmFjayh0KX19ZnVuY3Rpb24geHcodCl7cmV0dXJuIHQmJjE9PT10Lm5vZGVUeXBlfWZ1bmN0aW9uIE93KHQsZSl7Y29uc3Qgbj10LnN0eWxlLmRpc3BsYXk7cmV0dXJuIHQuc3R5bGUuZGlzcGxheT1udWxsIT1lP2U6Im5vbmUiLG59ZnVuY3Rpb24gUHcodCxlLG4sbyxpKXtjb25zdCBhPVtdO24uZm9yRWFjaCgodD0+YS5wdXNoKE93KHQpKSkpO2NvbnN0IHI9W107by5mb3JFYWNoKCgobixvKT0+e2NvbnN0IGE9e307bi5mb3JFYWNoKCh0PT57Y29uc3Qgbj1hW3RdPWUuY29tcHV0ZVN0eWxlKG8sdCxpKTtuJiYwIT1uLmxlbmd0aHx8KG8uX19uZ19yZW1vdmVkPWh3LHIucHVzaChvKSl9KSksdC5zZXQobyxhKX0pKTtsZXQgcz0wO3JldHVybiBuLmZvckVhY2goKHQ9Pk93KHQsYVtzKytdKSkpLHJ9ZnVuY3Rpb24gd3codCxlKXtjb25zdCBuPW5ldyBNYXA7aWYodC5mb3JFYWNoKCh0PT5uLnNldCh0LFtdKSkpLDA9PWUubGVuZ3RoKXJldHVybiBuO2NvbnN0IG89bmV3IFNldChlKSxpPW5ldyBNYXA7ZnVuY3Rpb24gYSh0KXtpZighdClyZXR1cm4gMTtsZXQgZT1pLmdldCh0KTtpZihlKXJldHVybiBlO2NvbnN0IHI9dC5wYXJlbnROb2RlO3JldHVybiBlPW4uaGFzKHIpP3I6by5oYXMocik/MTphKHIpLGkuc2V0KHQsZSksZX1yZXR1cm4gZS5mb3JFYWNoKCh0PT57Y29uc3QgZT1hKHQpOzEhPT1lJiZuLmdldChlKS5wdXNoKHQpfSkpLG59ZnVuY3Rpb24ga3codCxlKXtpZih0LmNsYXNzTGlzdCl0LmNsYXNzTGlzdC5hZGQoZSk7ZWxzZXtsZXQgbj10LiQkY2xhc3NlcztufHwobj10LiQkY2xhc3Nlcz17fSksbltlXT0hMH19ZnVuY3Rpb24gU3codCxlKXtpZih0LmNsYXNzTGlzdCl0LmNsYXNzTGlzdC5yZW1vdmUoZSk7ZWxzZXtsZXQgbj10LiQkY2xhc3NlcztuJiZkZWxldGUgbltlXX19ZnVuY3Rpb24gRHcodCxlLG4pe0hPKG4pLm9uRG9uZSgoKCk9PnQucHJvY2Vzc0xlYXZlTm9kZShlKSkpfWZ1bmN0aW9uIFJ3KHQsZSl7Zm9yKGxldCBuPTA7bjx0Lmxlbmd0aDtuKyspe2NvbnN0IG89dFtuXTtvIGluc3RhbmNlb2YgTk8/Uncoby5wbGF5ZXJzLGUpOmUucHVzaChvKX19ZnVuY3Rpb24gRXcodCxlLG4pe2NvbnN0IG89bi5nZXQodCk7aWYoIW8pcmV0dXJuITE7bGV0IGk9ZS5nZXQodCk7cmV0dXJuIGk/by5mb3JFYWNoKCh0PT5pLmFkZCh0KSkpOmUuc2V0KHQsbyksbi5kZWxldGUodCksITB9Y2xhc3MgQXd7Y29uc3RydWN0b3IodCxlLG4pe3RoaXMuYm9keU5vZGU9dCx0aGlzLl9kcml2ZXI9ZSx0aGlzLl9ub3JtYWxpemVyPW4sdGhpcy5fdHJpZ2dlckNhY2hlPXt9LHRoaXMub25SZW1vdmFsQ29tcGxldGU9KHQsZSk9Pnt9LHRoaXMuX3RyYW5zaXRpb25FbmdpbmU9bmV3IE13KHQsZSxuKSx0aGlzLl90aW1lbGluZUVuZ2luZT1uZXcgZHcodCxlLG4pLHRoaXMuX3RyYW5zaXRpb25FbmdpbmUub25SZW1vdmFsQ29tcGxldGU9KHQsZSk9PnRoaXMub25SZW1vdmFsQ29tcGxldGUodCxlKX1yZWdpc3RlclRyaWdnZXIodCxlLG4sbyxpKXtjb25zdCBhPXQrIi0iK287bGV0IHI9dGhpcy5fdHJpZ2dlckNhY2hlW2FdO2lmKCFyKXtjb25zdCB0PVtdLGU9SVAodGhpcy5fZHJpdmVyLGksdCk7aWYodC5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKGBUaGUgYW5pbWF0aW9uIHRyaWdnZXIgIiR7b30iIGhhcyBmYWlsZWQgdG8gYnVpbGQgZHVlIHRvIHRoZSBmb2xsb3dpbmcgZXJyb3JzOlxuIC0gJHt0LmpvaW4oIlxuIC0gIil9YCk7cj0oZnVuY3Rpb24gbih0LGUsbyl7cmV0dXJuIG5ldyBzdyh0LGUsbyl9KShvLGUsdGhpcy5fbm9ybWFsaXplciksdGhpcy5fdHJpZ2dlckNhY2hlW2FdPXJ9dGhpcy5fdHJhbnNpdGlvbkVuZ2luZS5yZWdpc3RlclRyaWdnZXIoZSxvLHIpfXJlZ2lzdGVyKHQsZSl7dGhpcy5fdHJhbnNpdGlvbkVuZ2luZS5yZWdpc3Rlcih0LGUpfWRlc3Ryb3kodCxlKXt0aGlzLl90cmFuc2l0aW9uRW5naW5lLmRlc3Ryb3kodCxlKX1vbkluc2VydCh0LGUsbixvKXt0aGlzLl90cmFuc2l0aW9uRW5naW5lLmluc2VydE5vZGUodCxlLG4sbyl9b25SZW1vdmUodCxlLG4sbyl7dGhpcy5fdHJhbnNpdGlvbkVuZ2luZS5yZW1vdmVOb2RlKHQsZSxvfHwhMSxuKX1kaXNhYmxlQW5pbWF0aW9ucyh0LGUpe3RoaXMuX3RyYW5zaXRpb25FbmdpbmUubWFya0VsZW1lbnRBc0Rpc2FibGVkKHQsZSl9cHJvY2Vzcyh0LGUsbixvKXtpZigiQCI9PW4uY2hhckF0KDApKXtjb25zdFt0LGldPVVPKG4pO3RoaXMuX3RpbWVsaW5lRW5naW5lLmNvbW1hbmQodCxlLGksbyl9ZWxzZSB0aGlzLl90cmFuc2l0aW9uRW5naW5lLnRyaWdnZXIodCxlLG4sbyl9bGlzdGVuKHQsZSxuLG8saSl7aWYoIkAiPT1uLmNoYXJBdCgwKSl7Y29uc3RbdCxvXT1VTyhuKTtyZXR1cm4gdGhpcy5fdGltZWxpbmVFbmdpbmUubGlzdGVuKHQsZSxvLGkpfXJldHVybiB0aGlzLl90cmFuc2l0aW9uRW5naW5lLmxpc3Rlbih0LGUsbixvLGkpfWZsdXNoKHQ9LTEpe3RoaXMuX3RyYW5zaXRpb25FbmdpbmUuZmx1c2godCl9Z2V0IHBsYXllcnMoKXtyZXR1cm4gdGhpcy5fdHJhbnNpdGlvbkVuZ2luZS5wbGF5ZXJzLmNvbmNhdCh0aGlzLl90aW1lbGluZUVuZ2luZS5wbGF5ZXJzKX13aGVuUmVuZGVyaW5nRG9uZSgpe3JldHVybiB0aGlzLl90cmFuc2l0aW9uRW5naW5lLndoZW5SZW5kZXJpbmdEb25lKCl9fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9mdW5jdGlvbiBUdyh0LGUpe2xldCBuPW51bGwsbz1udWxsO3JldHVybiBBcnJheS5pc0FycmF5KGUpJiZlLmxlbmd0aD8obj16dyhlWzBdKSxlLmxlbmd0aD4xJiYobz16dyhlW2UubGVuZ3RoLTFdKSkpOmUmJihuPXp3KGUpKSxufHxvP25ldyBOdyh0LG4sbyk6bnVsbH1jbGFzcyBOd3tjb25zdHJ1Y3Rvcih0LGUsbil7dGhpcy5fZWxlbWVudD10LHRoaXMuX3N0YXJ0U3R5bGVzPWUsdGhpcy5fZW5kU3R5bGVzPW4sdGhpcy5fc3RhdGU9MDtsZXQgbz1Ody5pbml0aWFsU3R5bGVzQnlFbGVtZW50LmdldCh0KTtvfHxOdy5pbml0aWFsU3R5bGVzQnlFbGVtZW50LnNldCh0LG89e30pLHRoaXMuX2luaXRpYWxTdHlsZXM9b31zdGFydCgpe3RoaXMuX3N0YXRlPDEmJih0aGlzLl9zdGFydFN0eWxlcyYmaFAodGhpcy5fZWxlbWVudCx0aGlzLl9zdGFydFN0eWxlcyx0aGlzLl9pbml0aWFsU3R5bGVzKSx0aGlzLl9zdGF0ZT0xKX1maW5pc2goKXt0aGlzLnN0YXJ0KCksdGhpcy5fc3RhdGU8MiYmKGhQKHRoaXMuX2VsZW1lbnQsdGhpcy5faW5pdGlhbFN0eWxlcyksdGhpcy5fZW5kU3R5bGVzJiYoaFAodGhpcy5fZWxlbWVudCx0aGlzLl9lbmRTdHlsZXMpLHRoaXMuX2VuZFN0eWxlcz1udWxsKSx0aGlzLl9zdGF0ZT0xKX1kZXN0cm95KCl7dGhpcy5maW5pc2goKSx0aGlzLl9zdGF0ZTwzJiYoTncuaW5pdGlhbFN0eWxlc0J5RWxlbWVudC5kZWxldGUodGhpcy5fZWxlbWVudCksdGhpcy5fc3RhcnRTdHlsZXMmJihiUCh0aGlzLl9lbGVtZW50LHRoaXMuX3N0YXJ0U3R5bGVzKSx0aGlzLl9lbmRTdHlsZXM9bnVsbCksdGhpcy5fZW5kU3R5bGVzJiYoYlAodGhpcy5fZWxlbWVudCx0aGlzLl9lbmRTdHlsZXMpLHRoaXMuX2VuZFN0eWxlcz1udWxsKSxoUCh0aGlzLl9lbGVtZW50LHRoaXMuX2luaXRpYWxTdHlsZXMpLHRoaXMuX3N0YXRlPTMpfX1mdW5jdGlvbiB6dyh0KXtsZXQgZT1udWxsO2NvbnN0IG49T2JqZWN0LmtleXModCk7Zm9yKGxldCBvPTA7bzxuLmxlbmd0aDtvKyspe2NvbnN0IGk9bltvXTtJdyhpKSYmKGU9ZXx8e30sZVtpXT10W2ldKX1yZXR1cm4gZX1mdW5jdGlvbiBJdyh0KXtyZXR1cm4iZGlzcGxheSI9PT10fHwicG9zaXRpb24iPT09dH0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovTncuaW5pdGlhbFN0eWxlc0J5RWxlbWVudD1uZXcgV2Vha01hcDtjb25zdCBIdz0iYW5pbWF0aW9uIixGdz0iYW5pbWF0aW9uZW5kIjtjbGFzcyBMd3tjb25zdHJ1Y3Rvcih0LGUsbixvLGksYSxyKXt0aGlzLl9lbGVtZW50PXQsdGhpcy5fbmFtZT1lLHRoaXMuX2R1cmF0aW9uPW4sdGhpcy5fZGVsYXk9byx0aGlzLl9lYXNpbmc9aSx0aGlzLl9maWxsTW9kZT1hLHRoaXMuX29uRG9uZUZuPXIsdGhpcy5fZmluaXNoZWQ9ITEsdGhpcy5fZGVzdHJveWVkPSExLHRoaXMuX3N0YXJ0VGltZT0wLHRoaXMuX3Bvc2l0aW9uPTAsdGhpcy5fZXZlbnRGbj10PT50aGlzLl9oYW5kbGVDYWxsYmFjayh0KX1hcHBseSgpeyEoZnVuY3Rpb24gdChlLG4pe2NvbnN0IG89R3coZSwiIikudHJpbSgpO2xldCBpPTA7by5sZW5ndGgmJihpPShmdW5jdGlvbiBhKHQsZSl7bGV0IG49MDtmb3IobGV0IG89MDtvPHQubGVuZ3RoO28rKyl7dC5jaGFyQXQobyk9PT1lJiZuKyt9cmV0dXJuIG59KShvLCIsIikrMSxuPWAke299LCAke259YCk7cmV0dXJuIFd3KGUsIiIsbiksaX0pKHRoaXMuX2VsZW1lbnQsYCR7dGhpcy5fZHVyYXRpb259bXMgJHt0aGlzLl9lYXNpbmd9ICR7dGhpcy5fZGVsYXl9bXMgMSBub3JtYWwgJHt0aGlzLl9maWxsTW9kZX0gJHt0aGlzLl9uYW1lfWApLFV3KHRoaXMuX2VsZW1lbnQsdGhpcy5fZXZlbnRGbiwhMSksdGhpcy5fc3RhcnRUaW1lPURhdGUubm93KCl9cGF1c2UoKXtCdyh0aGlzLl9lbGVtZW50LHRoaXMuX25hbWUsInBhdXNlZCIpfXJlc3VtZSgpe0J3KHRoaXMuX2VsZW1lbnQsdGhpcy5fbmFtZSwicnVubmluZyIpfXNldFBvc2l0aW9uKHQpe2NvbnN0IGU9VncodGhpcy5fZWxlbWVudCx0aGlzLl9uYW1lKTt0aGlzLl9wb3NpdGlvbj10KnRoaXMuX2R1cmF0aW9uLFd3KHRoaXMuX2VsZW1lbnQsIkRlbGF5IixgLSR7dGhpcy5fcG9zaXRpb259bXNgLGUpfWdldFBvc2l0aW9uKCl7cmV0dXJuIHRoaXMuX3Bvc2l0aW9ufV9oYW5kbGVDYWxsYmFjayh0KXtjb25zdCBlPXQuX25nVGVzdE1hbnVhbFRpbWVzdGFtcHx8RGF0ZS5ub3coKSxuPTFlMypwYXJzZUZsb2F0KHQuZWxhcHNlZFRpbWUudG9GaXhlZCgzKSk7dC5hbmltYXRpb25OYW1lPT10aGlzLl9uYW1lJiZNYXRoLm1heChlLXRoaXMuX3N0YXJ0VGltZSwwKT49dGhpcy5fZGVsYXkmJm4+PXRoaXMuX2R1cmF0aW9uJiZ0aGlzLmZpbmlzaCgpfWZpbmlzaCgpe3RoaXMuX2ZpbmlzaGVkfHwodGhpcy5fZmluaXNoZWQ9ITAsdGhpcy5fb25Eb25lRm4oKSxVdyh0aGlzLl9lbGVtZW50LHRoaXMuX2V2ZW50Rm4sITApKX1kZXN0cm95KCl7dGhpcy5fZGVzdHJveWVkfHwodGhpcy5fZGVzdHJveWVkPSEwLHRoaXMuZmluaXNoKCksKGZ1bmN0aW9uIHQoZSxuKXtjb25zdCBvPUd3KGUsIiIpLnNwbGl0KCIsIiksaT1qdyhvLG4pO2lmKGk+PTApe28uc3BsaWNlKGksMSk7V3coZSwiIixvLmpvaW4oIiwiKSl9fSkodGhpcy5fZWxlbWVudCx0aGlzLl9uYW1lKSl9fWZ1bmN0aW9uIEJ3KHQsZSxuKXtXdyh0LCJQbGF5U3RhdGUiLG4sVncodCxlKSl9ZnVuY3Rpb24gVncodCxlKXtjb25zdCBuPUd3KHQsIiIpO2lmKG4uaW5kZXhPZigiLCIpPjApe3JldHVybiBqdyhuLnNwbGl0KCIsIiksZSl9cmV0dXJuIGp3KFtuXSxlKX1mdW5jdGlvbiBqdyh0LGUpe2ZvcihsZXQgbj0wO248dC5sZW5ndGg7bisrKWlmKHRbbl0uaW5kZXhPZihlKT49MClyZXR1cm4gbjtyZXR1cm4tMX1mdW5jdGlvbiBVdyh0LGUsbil7bj90LnJlbW92ZUV2ZW50TGlzdGVuZXIoRncsZSk6dC5hZGRFdmVudExpc3RlbmVyKEZ3LGUpfWZ1bmN0aW9uIFd3KHQsZSxuLG8pe2NvbnN0IGk9SHcrZTtpZihudWxsIT1vKXtjb25zdCBlPXQuc3R5bGVbaV07aWYoZS5sZW5ndGgpe2NvbnN0IHQ9ZS5zcGxpdCgiLCIpO3Rbb109bixuPXQuam9pbigiLCIpfX10LnN0eWxlW2ldPW59ZnVuY3Rpb24gR3codCxlKXtyZXR1cm4gdC5zdHlsZVtIdytlXXx8IiJ9Y2xhc3MgWXd7Y29uc3RydWN0b3IodCxlLG4sbyxpLGEscixzKXt0aGlzLmVsZW1lbnQ9dCx0aGlzLmtleWZyYW1lcz1lLHRoaXMuYW5pbWF0aW9uTmFtZT1uLHRoaXMuX2R1cmF0aW9uPW8sdGhpcy5fZGVsYXk9aSx0aGlzLl9maW5hbFN0eWxlcz1yLHRoaXMuX3NwZWNpYWxTdHlsZXM9cyx0aGlzLl9vbkRvbmVGbnM9W10sdGhpcy5fb25TdGFydEZucz1bXSx0aGlzLl9vbkRlc3Ryb3lGbnM9W10sdGhpcy5jdXJyZW50U25hcHNob3Q9e30sdGhpcy5fc3RhdGU9MCx0aGlzLmVhc2luZz1hfHwibGluZWFyIix0aGlzLnRvdGFsVGltZT1vK2ksdGhpcy5fYnVpbGRTdHlsZXIoKX1vblN0YXJ0KHQpe3RoaXMuX29uU3RhcnRGbnMucHVzaCh0KX1vbkRvbmUodCl7dGhpcy5fb25Eb25lRm5zLnB1c2godCl9b25EZXN0cm95KHQpe3RoaXMuX29uRGVzdHJveUZucy5wdXNoKHQpfWRlc3Ryb3koKXt0aGlzLmluaXQoKSx0aGlzLl9zdGF0ZT49NHx8KHRoaXMuX3N0YXRlPTQsdGhpcy5fc3R5bGVyLmRlc3Ryb3koKSx0aGlzLl9mbHVzaFN0YXJ0Rm5zKCksdGhpcy5fZmx1c2hEb25lRm5zKCksdGhpcy5fc3BlY2lhbFN0eWxlcyYmdGhpcy5fc3BlY2lhbFN0eWxlcy5kZXN0cm95KCksdGhpcy5fb25EZXN0cm95Rm5zLmZvckVhY2goKHQ9PnQoKSkpLHRoaXMuX29uRGVzdHJveUZucz1bXSl9X2ZsdXNoRG9uZUZucygpe3RoaXMuX29uRG9uZUZucy5mb3JFYWNoKCh0PT50KCkpKSx0aGlzLl9vbkRvbmVGbnM9W119X2ZsdXNoU3RhcnRGbnMoKXt0aGlzLl9vblN0YXJ0Rm5zLmZvckVhY2goKHQ9PnQoKSkpLHRoaXMuX29uU3RhcnRGbnM9W119ZmluaXNoKCl7dGhpcy5pbml0KCksdGhpcy5fc3RhdGU+PTN8fCh0aGlzLl9zdGF0ZT0zLHRoaXMuX3N0eWxlci5maW5pc2goKSx0aGlzLl9mbHVzaFN0YXJ0Rm5zKCksdGhpcy5fc3BlY2lhbFN0eWxlcyYmdGhpcy5fc3BlY2lhbFN0eWxlcy5maW5pc2goKSx0aGlzLl9mbHVzaERvbmVGbnMoKSl9c2V0UG9zaXRpb24odCl7dGhpcy5fc3R5bGVyLnNldFBvc2l0aW9uKHQpfWdldFBvc2l0aW9uKCl7cmV0dXJuIHRoaXMuX3N0eWxlci5nZXRQb3NpdGlvbigpfWhhc1N0YXJ0ZWQoKXtyZXR1cm4gdGhpcy5fc3RhdGU+PTJ9aW5pdCgpe3RoaXMuX3N0YXRlPj0xfHwodGhpcy5fc3RhdGU9MSx0aGlzLl9zdHlsZXIuYXBwbHkoKSx0aGlzLl9kZWxheSYmdGhpcy5fc3R5bGVyLnBhdXNlKCkpfXBsYXkoKXt0aGlzLmluaXQoKSx0aGlzLmhhc1N0YXJ0ZWQoKXx8KHRoaXMuX2ZsdXNoU3RhcnRGbnMoKSx0aGlzLl9zdGF0ZT0yLHRoaXMuX3NwZWNpYWxTdHlsZXMmJnRoaXMuX3NwZWNpYWxTdHlsZXMuc3RhcnQoKSksdGhpcy5fc3R5bGVyLnJlc3VtZSgpfXBhdXNlKCl7dGhpcy5pbml0KCksdGhpcy5fc3R5bGVyLnBhdXNlKCl9cmVzdGFydCgpe3RoaXMucmVzZXQoKSx0aGlzLnBsYXkoKX1yZXNldCgpe3RoaXMuX3N0YXRlPTAsdGhpcy5fc3R5bGVyLmRlc3Ryb3koKSx0aGlzLl9idWlsZFN0eWxlcigpLHRoaXMuX3N0eWxlci5hcHBseSgpfV9idWlsZFN0eWxlcigpe3RoaXMuX3N0eWxlcj1uZXcgTHcodGhpcy5lbGVtZW50LHRoaXMuYW5pbWF0aW9uTmFtZSx0aGlzLl9kdXJhdGlvbix0aGlzLl9kZWxheSx0aGlzLmVhc2luZywiZm9yd2FyZHMiLCgoKT0+dGhpcy5maW5pc2goKSkpfXRyaWdnZXJDYWxsYmFjayh0KXtjb25zdCBlPSJzdGFydCI9PXQ/dGhpcy5fb25TdGFydEZuczp0aGlzLl9vbkRvbmVGbnM7ZS5mb3JFYWNoKCh0PT50KCkpKSxlLmxlbmd0aD0wfWJlZm9yZURlc3Ryb3koKXt0aGlzLmluaXQoKTtjb25zdCB0PXt9O2lmKHRoaXMuaGFzU3RhcnRlZCgpKXtjb25zdCBlPXRoaXMuX3N0YXRlPj0zO09iamVjdC5rZXlzKHRoaXMuX2ZpbmFsU3R5bGVzKS5mb3JFYWNoKChuPT57Im9mZnNldCIhPW4mJih0W25dPWU/dGhpcy5fZmluYWxTdHlsZXNbbl06U1AodGhpcy5lbGVtZW50LG4pKX0pKX10aGlzLmN1cnJlbnRTbmFwc2hvdD10fX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY2xhc3MgcXcgZXh0ZW5kcyBUT3tjb25zdHJ1Y3Rvcih0LGUpe3N1cGVyKCksdGhpcy5lbGVtZW50PXQsdGhpcy5fc3RhcnRpbmdTdHlsZXM9e30sdGhpcy5fX2luaXRpYWxpemVkPSExLHRoaXMuX3N0eWxlcz10UChlKX1pbml0KCl7IXRoaXMuX19pbml0aWFsaXplZCYmdGhpcy5fc3RhcnRpbmdTdHlsZXMmJih0aGlzLl9faW5pdGlhbGl6ZWQ9ITAsT2JqZWN0LmtleXModGhpcy5fc3R5bGVzKS5mb3JFYWNoKCh0PT57dGhpcy5fc3RhcnRpbmdTdHlsZXNbdF09dGhpcy5lbGVtZW50LnN0eWxlW3RdfSkpLHN1cGVyLmluaXQoKSl9cGxheSgpe3RoaXMuX3N0YXJ0aW5nU3R5bGVzJiYodGhpcy5pbml0KCksT2JqZWN0LmtleXModGhpcy5fc3R5bGVzKS5mb3JFYWNoKCh0PT50aGlzLmVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkodCx0aGlzLl9zdHlsZXNbdF0pKSksc3VwZXIucGxheSgpKX1kZXN0cm95KCl7dGhpcy5fc3RhcnRpbmdTdHlsZXMmJihPYmplY3Qua2V5cyh0aGlzLl9zdGFydGluZ1N0eWxlcykuZm9yRWFjaCgodD0+e2NvbnN0IGU9dGhpcy5fc3RhcnRpbmdTdHlsZXNbdF07ZT90aGlzLmVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkodCxlKTp0aGlzLmVsZW1lbnQuc3R5bGUucmVtb3ZlUHJvcGVydHkodCl9KSksdGhpcy5fc3RhcnRpbmdTdHlsZXM9bnVsbCxzdXBlci5kZXN0cm95KCkpfX1jbGFzcyBad3tjb25zdHJ1Y3Rvcigpe3RoaXMuX2NvdW50PTB9dmFsaWRhdGVTdHlsZVByb3BlcnR5KHQpe3JldHVybiBLTyh0KX1tYXRjaGVzRWxlbWVudCh0LGUpe3JldHVybiBKTyh0LGUpfWNvbnRhaW5zRWxlbWVudCh0LGUpe3JldHVybiBRTyh0LGUpfXF1ZXJ5KHQsZSxuKXtyZXR1cm4gJE8odCxlLG4pfWNvbXB1dGVTdHlsZSh0LGUsbil7cmV0dXJuIHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHQpW2VdfWJ1aWxkS2V5ZnJhbWVFbGVtZW50KHQsZSxuKXtuPW4ubWFwKCh0PT50UCh0KSkpO2xldCBvPWBAa2V5ZnJhbWVzICR7ZX0ge1xuYCxpPSIiO24uZm9yRWFjaCgodD0+e2k9IiAiO2NvbnN0IGU9cGFyc2VGbG9hdCh0Lm9mZnNldCk7bys9YCR7aX0kezEwMCplfSUge1xuYCxpKz0iICIsT2JqZWN0LmtleXModCkuZm9yRWFjaCgoZT0+e2NvbnN0IG49dFtlXTtzd2l0Y2goZSl7Y2FzZSJvZmZzZXQiOnJldHVybjtjYXNlImVhc2luZyI6cmV0dXJuIHZvaWQobiYmKG8rPWAke2l9YW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogJHtufTtcbmApKTtkZWZhdWx0OnJldHVybiB2b2lkKG8rPWAke2l9JHtlfTogJHtufTtcbmApfX0pKSxvKz1gJHtpfX1cbmB9KSksbys9In1cbiI7Y29uc3QgYT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzdHlsZSIpO3JldHVybiBhLnRleHRDb250ZW50PW8sYX1hbmltYXRlKHQsZSxuLG8saSxhPVtdLHIpeygidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmciYmKGZ1bmN0aW9uIHMoKXtpZihYdylyZXR1cm47Y29uc29sZS53YXJuKCJAYW5ndWxhci9hbmltYXRpb25zOiBwbGVhc2UgbG9hZCB0aGUgd2ViLWFuaW1hdGlvbnMuanMgcG9seWZpbGwgdG8gYWxsb3cgcHJvZ3JhbW1hdGljIGFjY2Vzcy4uLlxuIiwiICB2aXNpdCBodHRwczovL2JpdC5seS9JV3VrYW0gdG8gbGVhcm4gbW9yZSBhYm91dCB1c2luZyB0aGUgd2ViLWFuaW1hdGlvbi1qcyBwb2x5ZmlsbC4iKSxYdz0hMH0pKCk7Y29uc3QgbD1hLmZpbHRlcigodD0+dCBpbnN0YW5jZW9mIFl3KSksYz17fTtQUChuLG8pJiZsLmZvckVhY2goKHQ9PntsZXQgZT10LmN1cnJlbnRTbmFwc2hvdDtPYmplY3Qua2V5cyhlKS5mb3JFYWNoKCh0PT5jW3RdPWVbdF0pKX0pKTtjb25zdCBkPShmdW5jdGlvbiBwKHQpe2xldCBlPXt9O2lmKHQpeyhBcnJheS5pc0FycmF5KHQpP3Q6W3RdKS5mb3JFYWNoKCh0PT57T2JqZWN0LmtleXModCkuZm9yRWFjaCgobj0+eyJvZmZzZXQiIT1uJiYiZWFzaW5nIiE9biYmKGVbbl09dFtuXSl9KSl9KSl9cmV0dXJuIGV9KShlPXdQKHQsZSxjKSk7aWYoMD09bilyZXR1cm4gbmV3IHF3KHQsZCk7Y29uc3QgbT0iZ2VuX2Nzc19rZl8iK3RoaXMuX2NvdW50KyssZj10aGlzLmJ1aWxkS2V5ZnJhbWVFbGVtZW50KHQsbSxlKTsoZnVuY3Rpb24gdSh0KXt2YXIgZTtjb25zdCBuPW51bGw9PT0oZT10LmdldFJvb3ROb2RlKXx8dm9pZCAwPT09ZT92b2lkIDA6ZS5jYWxsKHQpO2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgU2hhZG93Um9vdCYmbiBpbnN0YW5jZW9mIFNoYWRvd1Jvb3QpcmV0dXJuIG47cmV0dXJuIGRvY3VtZW50LmhlYWR9KSh0KS5hcHBlbmRDaGlsZChmKTtjb25zdCBnPVR3KHQsZSksaD1uZXcgWXcodCxlLG0sbixvLGksZCxnKTtyZXR1cm4gaC5vbkRlc3Ryb3koKCgpPT4oZnVuY3Rpb24gdChlKXtlLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZSl9KShmKSkpLGh9fWxldCBYdz0hMTtjbGFzcyBLd3tjb25zdHJ1Y3Rvcih0LGUsbixvKXt0aGlzLmVsZW1lbnQ9dCx0aGlzLmtleWZyYW1lcz1lLHRoaXMub3B0aW9ucz1uLHRoaXMuX3NwZWNpYWxTdHlsZXM9byx0aGlzLl9vbkRvbmVGbnM9W10sdGhpcy5fb25TdGFydEZucz1bXSx0aGlzLl9vbkRlc3Ryb3lGbnM9W10sdGhpcy5faW5pdGlhbGl6ZWQ9ITEsdGhpcy5fZmluaXNoZWQ9ITEsdGhpcy5fc3RhcnRlZD0hMSx0aGlzLl9kZXN0cm95ZWQ9ITEsdGhpcy50aW1lPTAsdGhpcy5wYXJlbnRQbGF5ZXI9bnVsbCx0aGlzLmN1cnJlbnRTbmFwc2hvdD17fSx0aGlzLl9kdXJhdGlvbj1uLmR1cmF0aW9uLHRoaXMuX2RlbGF5PW4uZGVsYXl8fDAsdGhpcy50aW1lPXRoaXMuX2R1cmF0aW9uK3RoaXMuX2RlbGF5fV9vbkZpbmlzaCgpe3RoaXMuX2ZpbmlzaGVkfHwodGhpcy5fZmluaXNoZWQ9ITAsdGhpcy5fb25Eb25lRm5zLmZvckVhY2goKHQ9PnQoKSkpLHRoaXMuX29uRG9uZUZucz1bXSl9aW5pdCgpe3RoaXMuX2J1aWxkUGxheWVyKCksdGhpcy5fcHJlcGFyZVBsYXllckJlZm9yZVN0YXJ0KCl9X2J1aWxkUGxheWVyKCl7aWYodGhpcy5faW5pdGlhbGl6ZWQpcmV0dXJuO3RoaXMuX2luaXRpYWxpemVkPSEwO2NvbnN0IHQ9dGhpcy5rZXlmcmFtZXM7dGhpcy5kb21QbGF5ZXI9dGhpcy5fdHJpZ2dlcldlYkFuaW1hdGlvbih0aGlzLmVsZW1lbnQsdCx0aGlzLm9wdGlvbnMpLHRoaXMuX2ZpbmFsS2V5ZnJhbWU9dC5sZW5ndGg/dFt0Lmxlbmd0aC0xXTp7fSx0aGlzLmRvbVBsYXllci5hZGRFdmVudExpc3RlbmVyKCJmaW5pc2giLCgoKT0+dGhpcy5fb25GaW5pc2goKSkpfV9wcmVwYXJlUGxheWVyQmVmb3JlU3RhcnQoKXt0aGlzLl9kZWxheT90aGlzLl9yZXNldERvbVBsYXllclN0YXRlKCk6dGhpcy5kb21QbGF5ZXIucGF1c2UoKX1fdHJpZ2dlcldlYkFuaW1hdGlvbih0LGUsbil7cmV0dXJuIHQuYW5pbWF0ZShlLG4pfW9uU3RhcnQodCl7dGhpcy5fb25TdGFydEZucy5wdXNoKHQpfW9uRG9uZSh0KXt0aGlzLl9vbkRvbmVGbnMucHVzaCh0KX1vbkRlc3Ryb3kodCl7dGhpcy5fb25EZXN0cm95Rm5zLnB1c2godCl9cGxheSgpe3RoaXMuX2J1aWxkUGxheWVyKCksdGhpcy5oYXNTdGFydGVkKCl8fCh0aGlzLl9vblN0YXJ0Rm5zLmZvckVhY2goKHQ9PnQoKSkpLHRoaXMuX29uU3RhcnRGbnM9W10sdGhpcy5fc3RhcnRlZD0hMCx0aGlzLl9zcGVjaWFsU3R5bGVzJiZ0aGlzLl9zcGVjaWFsU3R5bGVzLnN0YXJ0KCkpLHRoaXMuZG9tUGxheWVyLnBsYXkoKX1wYXVzZSgpe3RoaXMuaW5pdCgpLHRoaXMuZG9tUGxheWVyLnBhdXNlKCl9ZmluaXNoKCl7dGhpcy5pbml0KCksdGhpcy5fc3BlY2lhbFN0eWxlcyYmdGhpcy5fc3BlY2lhbFN0eWxlcy5maW5pc2goKSx0aGlzLl9vbkZpbmlzaCgpLHRoaXMuZG9tUGxheWVyLmZpbmlzaCgpfXJlc2V0KCl7dGhpcy5fcmVzZXREb21QbGF5ZXJTdGF0ZSgpLHRoaXMuX2Rlc3Ryb3llZD0hMSx0aGlzLl9maW5pc2hlZD0hMSx0aGlzLl9zdGFydGVkPSExfV9yZXNldERvbVBsYXllclN0YXRlKCl7dGhpcy5kb21QbGF5ZXImJnRoaXMuZG9tUGxheWVyLmNhbmNlbCgpfXJlc3RhcnQoKXt0aGlzLnJlc2V0KCksdGhpcy5wbGF5KCl9aGFzU3RhcnRlZCgpe3JldHVybiB0aGlzLl9zdGFydGVkfWRlc3Ryb3koKXt0aGlzLl9kZXN0cm95ZWR8fCh0aGlzLl9kZXN0cm95ZWQ9ITAsdGhpcy5fcmVzZXREb21QbGF5ZXJTdGF0ZSgpLHRoaXMuX29uRmluaXNoKCksdGhpcy5fc3BlY2lhbFN0eWxlcyYmdGhpcy5fc3BlY2lhbFN0eWxlcy5kZXN0cm95KCksdGhpcy5fb25EZXN0cm95Rm5zLmZvckVhY2goKHQ9PnQoKSkpLHRoaXMuX29uRGVzdHJveUZucz1bXSl9c2V0UG9zaXRpb24odCl7dm9pZCAwPT09dGhpcy5kb21QbGF5ZXImJnRoaXMuaW5pdCgpLHRoaXMuZG9tUGxheWVyLmN1cnJlbnRUaW1lPXQqdGhpcy50aW1lfWdldFBvc2l0aW9uKCl7cmV0dXJuIHRoaXMuZG9tUGxheWVyLmN1cnJlbnRUaW1lL3RoaXMudGltZX1nZXQgdG90YWxUaW1lKCl7cmV0dXJuIHRoaXMuX2RlbGF5K3RoaXMuX2R1cmF0aW9ufWJlZm9yZURlc3Ryb3koKXtjb25zdCB0PXt9O3RoaXMuaGFzU3RhcnRlZCgpJiZPYmplY3Qua2V5cyh0aGlzLl9maW5hbEtleWZyYW1lKS5mb3JFYWNoKChlPT57Im9mZnNldCIhPWUmJih0W2VdPXRoaXMuX2ZpbmlzaGVkP3RoaXMuX2ZpbmFsS2V5ZnJhbWVbZV06U1AodGhpcy5lbGVtZW50LGUpKX0pKSx0aGlzLmN1cnJlbnRTbmFwc2hvdD10fXRyaWdnZXJDYWxsYmFjayh0KXtjb25zdCBlPSJzdGFydCI9PXQ/dGhpcy5fb25TdGFydEZuczp0aGlzLl9vbkRvbmVGbnM7ZS5mb3JFYWNoKCh0PT50KCkpKSxlLmxlbmd0aD0wfX1jbGFzcyBKd3tjb25zdHJ1Y3Rvcigpe3RoaXMuX2lzTmF0aXZlSW1wbD0vXHtccypcW25hdGl2ZVxzK2NvZGVcXVxzKlx9Ly50ZXN0KFF3KCkudG9TdHJpbmcoKSksdGhpcy5fY3NzS2V5ZnJhbWVzRHJpdmVyPW5ldyBad312YWxpZGF0ZVN0eWxlUHJvcGVydHkodCl7cmV0dXJuIEtPKHQpfW1hdGNoZXNFbGVtZW50KHQsZSl7cmV0dXJuIEpPKHQsZSl9Y29udGFpbnNFbGVtZW50KHQsZSl7cmV0dXJuIFFPKHQsZSl9cXVlcnkodCxlLG4pe3JldHVybiAkTyh0LGUsbil9Y29tcHV0ZVN0eWxlKHQsZSxuKXtyZXR1cm4gd2luZG93LmdldENvbXB1dGVkU3R5bGUodClbZV19b3ZlcnJpZGVXZWJBbmltYXRpb25zU3VwcG9ydCh0KXt0aGlzLl9pc05hdGl2ZUltcGw9dH1hbmltYXRlKHQsZSxuLG8saSxhPVtdLHIpe2lmKCFyJiYhdGhpcy5faXNOYXRpdmVJbXBsKXJldHVybiB0aGlzLl9jc3NLZXlmcmFtZXNEcml2ZXIuYW5pbWF0ZSh0LGUsbixvLGksYSk7Y29uc3Qgcz17ZHVyYXRpb246bixkZWxheTpvLGZpbGw6MD09bz8iYm90aCI6ImZvcndhcmRzIn07aSYmKHMuZWFzaW5nPWkpO2NvbnN0IGw9e30sYz1hLmZpbHRlcigodD0+dCBpbnN0YW5jZW9mIEt3KSk7UFAobixvKSYmYy5mb3JFYWNoKCh0PT57bGV0IGU9dC5jdXJyZW50U25hcHNob3Q7T2JqZWN0LmtleXMoZSkuZm9yRWFjaCgodD0+bFt0XT1lW3RdKSl9KSk7Y29uc3QgZD1Udyh0LGU9d1AodCxlPWUubWFwKCh0PT5mUCh0LCExKSkpLGwpKTtyZXR1cm4gbmV3IEt3KHQsZSxzLGQpfX1mdW5jdGlvbiBRdygpe3JldHVybiB6TygpJiZFbGVtZW50LnByb3RvdHlwZS5hbmltYXRlfHx7fX0KLyoqCiAgICAgKiBAbGljZW5zZSBBbmd1bGFyIHYxMi4yLjEKICAgICAqIChjKSAyMDEwLTIwMjEgR29vZ2xlIExMQy4gaHR0cHM6Ly9hbmd1bGFyLmlvLwogICAgICogTGljZW5zZTogTUlUCiAgICAgKi9jbGFzcyAkdyBleHRlbmRzIE1Pe2NvbnN0cnVjdG9yKHQsZSl7c3VwZXIoKSx0aGlzLl9uZXh0QW5pbWF0aW9uSWQ9MDt0aGlzLl9yZW5kZXJlcj10LmNyZWF0ZVJlbmRlcmVyKGUuYm9keSx7aWQ6IjAiLGVuY2Fwc3VsYXRpb246V24uTm9uZSxzdHlsZXM6W10sZGF0YTp7YW5pbWF0aW9uOltdfX0pfWJ1aWxkKHQpe2NvbnN0IGU9dGhpcy5fbmV4dEFuaW1hdGlvbklkLnRvU3RyaW5nKCk7dGhpcy5fbmV4dEFuaW1hdGlvbklkKys7Y29uc3Qgbj1BcnJheS5pc0FycmF5KHQpP1BPKHQpOnQ7cmV0dXJuIG5rKHRoaXMuX3JlbmRlcmVyLG51bGwsZSwicmVnaXN0ZXIiLFtuXSksbmV3IHRrKGUsdGhpcy5fcmVuZGVyZXIpfX0kdy7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8JHcpKFRyKFFoKSxUcihzTSkpfSwkdy7JtXByb3Y9U24oe3Rva2VuOiR3LGZhY3Rvcnk6JHcuybVmYWN9KSwkdy5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOlFofSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbc01dfV19XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKCR3LFt7dHlwZTpVbX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpRaH0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W3NNXX1dfV19KSxudWxsKTtjbGFzcyB0ayBleHRlbmRzIGNsYXNze317Y29uc3RydWN0b3IodCxlKXtzdXBlcigpLHRoaXMuX2lkPXQsdGhpcy5fcmVuZGVyZXI9ZX1jcmVhdGUodCxlKXtyZXR1cm4gbmV3IGVrKHRoaXMuX2lkLHQsZXx8e30sdGhpcy5fcmVuZGVyZXIpfX1jbGFzcyBla3tjb25zdHJ1Y3Rvcih0LGUsbixvKXt0aGlzLmlkPXQsdGhpcy5lbGVtZW50PWUsdGhpcy5fcmVuZGVyZXI9byx0aGlzLnBhcmVudFBsYXllcj1udWxsLHRoaXMuX3N0YXJ0ZWQ9ITEsdGhpcy50b3RhbFRpbWU9MCx0aGlzLl9jb21tYW5kKCJjcmVhdGUiLG4pfV9saXN0ZW4odCxlKXtyZXR1cm4gdGhpcy5fcmVuZGVyZXIubGlzdGVuKHRoaXMuZWxlbWVudCxgQEAke3RoaXMuaWR9OiR7dH1gLGUpfV9jb21tYW5kKHQsLi4uZSl7cmV0dXJuIG5rKHRoaXMuX3JlbmRlcmVyLHRoaXMuZWxlbWVudCx0aGlzLmlkLHQsZSl9b25Eb25lKHQpe3RoaXMuX2xpc3RlbigiZG9uZSIsdCl9b25TdGFydCh0KXt0aGlzLl9saXN0ZW4oInN0YXJ0Iix0KX1vbkRlc3Ryb3kodCl7dGhpcy5fbGlzdGVuKCJkZXN0cm95Iix0KX1pbml0KCl7dGhpcy5fY29tbWFuZCgiaW5pdCIpfWhhc1N0YXJ0ZWQoKXtyZXR1cm4gdGhpcy5fc3RhcnRlZH1wbGF5KCl7dGhpcy5fY29tbWFuZCgicGxheSIpLHRoaXMuX3N0YXJ0ZWQ9ITB9cGF1c2UoKXt0aGlzLl9jb21tYW5kKCJwYXVzZSIpfXJlc3RhcnQoKXt0aGlzLl9jb21tYW5kKCJyZXN0YXJ0Iil9ZmluaXNoKCl7dGhpcy5fY29tbWFuZCgiZmluaXNoIil9ZGVzdHJveSgpe3RoaXMuX2NvbW1hbmQoImRlc3Ryb3kiKX1yZXNldCgpe3RoaXMuX2NvbW1hbmQoInJlc2V0IiksdGhpcy5fc3RhcnRlZD0hMX1zZXRQb3NpdGlvbih0KXt0aGlzLl9jb21tYW5kKCJzZXRQb3NpdGlvbiIsdCl9Z2V0UG9zaXRpb24oKXt2YXIgdCxlO3JldHVybiBudWxsIT09KGU9bnVsbD09PSh0PXRoaXMuX3JlbmRlcmVyLmVuZ2luZS5wbGF5ZXJzWyt0aGlzLmlkXSl8fHZvaWQgMD09PXQ/dm9pZCAwOnQuZ2V0UG9zaXRpb24oKSkmJnZvaWQgMCE9PWU/ZTowfX1mdW5jdGlvbiBuayh0LGUsbixvLGkpe3JldHVybiB0LnNldFByb3BlcnR5KGUsYEBAJHtufToke299YCxpKX1jb25zdCBvaz0iQCIsaWs9IkAuZGlzYWJsZWQiO2NsYXNzIGFre2NvbnN0cnVjdG9yKHQsZSxuKXt0aGlzLmRlbGVnYXRlPXQsdGhpcy5lbmdpbmU9ZSx0aGlzLl96b25lPW4sdGhpcy5fY3VycmVudElkPTAsdGhpcy5fbWljcm90YXNrSWQ9MSx0aGlzLl9hbmltYXRpb25DYWxsYmFja3NCdWZmZXI9W10sdGhpcy5fcmVuZGVyZXJDYWNoZT1uZXcgTWFwLHRoaXMuX2NkUmVjdXJEZXB0aD0wLHRoaXMucHJvbWlzZT1Qcm9taXNlLnJlc29sdmUoMCksZS5vblJlbW92YWxDb21wbGV0ZT0odCxlKT0+e2UmJmUucGFyZW50Tm9kZSh0KSYmZS5yZW1vdmVDaGlsZCh0LnBhcmVudE5vZGUsdCl9fWNyZWF0ZVJlbmRlcmVyKHQsZSl7Y29uc3Qgbj10aGlzLmRlbGVnYXRlLmNyZWF0ZVJlbmRlcmVyKHQsZSk7aWYoISh0JiZlJiZlLmRhdGEmJmUuZGF0YS5hbmltYXRpb24pKXtsZXQgdD10aGlzLl9yZW5kZXJlckNhY2hlLmdldChuKTtyZXR1cm4gdHx8KHQ9bmV3IHJrKCIiLG4sdGhpcy5lbmdpbmUpLHRoaXMuX3JlbmRlcmVyQ2FjaGUuc2V0KG4sdCkpLHR9Y29uc3Qgbz1lLmlkLGk9ZS5pZCsiLSIrdGhpcy5fY3VycmVudElkO3RoaXMuX2N1cnJlbnRJZCsrLHRoaXMuZW5naW5lLnJlZ2lzdGVyKGksdCk7Y29uc3QgYT1lPT57QXJyYXkuaXNBcnJheShlKT9lLmZvckVhY2goYSk6dGhpcy5lbmdpbmUucmVnaXN0ZXJUcmlnZ2VyKG8saSx0LGUubmFtZSxlKX07cmV0dXJuIGUuZGF0YS5hbmltYXRpb24uZm9yRWFjaChhKSxuZXcgc2sodGhpcyxpLG4sdGhpcy5lbmdpbmUpfWJlZ2luKCl7dGhpcy5fY2RSZWN1ckRlcHRoKyssdGhpcy5kZWxlZ2F0ZS5iZWdpbiYmdGhpcy5kZWxlZ2F0ZS5iZWdpbigpfV9zY2hlZHVsZUNvdW50VGFzaygpe3RoaXMucHJvbWlzZS50aGVuKCgoKT0+e3RoaXMuX21pY3JvdGFza0lkKyt9KSl9c2NoZWR1bGVMaXN0ZW5lckNhbGxiYWNrKHQsZSxuKXt0Pj0wJiZ0PHRoaXMuX21pY3JvdGFza0lkP3RoaXMuX3pvbmUucnVuKCgoKT0+ZShuKSkpOigwPT10aGlzLl9hbmltYXRpb25DYWxsYmFja3NCdWZmZXIubGVuZ3RoJiZQcm9taXNlLnJlc29sdmUobnVsbCkudGhlbigoKCk9Pnt0aGlzLl96b25lLnJ1bigoKCk9Pnt0aGlzLl9hbmltYXRpb25DYWxsYmFja3NCdWZmZXIuZm9yRWFjaCgodD0+e2NvbnN0W2Usbl09dDtlKG4pfSkpLHRoaXMuX2FuaW1hdGlvbkNhbGxiYWNrc0J1ZmZlcj1bXX0pKX0pKSx0aGlzLl9hbmltYXRpb25DYWxsYmFja3NCdWZmZXIucHVzaChbZSxuXSkpfWVuZCgpe3RoaXMuX2NkUmVjdXJEZXB0aC0tLDA9PXRoaXMuX2NkUmVjdXJEZXB0aCYmdGhpcy5fem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKCk9Pnt0aGlzLl9zY2hlZHVsZUNvdW50VGFzaygpLHRoaXMuZW5naW5lLmZsdXNoKHRoaXMuX21pY3JvdGFza0lkKX0pKSx0aGlzLmRlbGVnYXRlLmVuZCYmdGhpcy5kZWxlZ2F0ZS5lbmQoKX13aGVuUmVuZGVyaW5nRG9uZSgpe3JldHVybiB0aGlzLmVuZ2luZS53aGVuUmVuZGVyaW5nRG9uZSgpfX1hay7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8YWspKFRyKFFoKSxUcihBdyksVHIobUMpKX0sYWsuybVwcm92PVNuKHt0b2tlbjphayxmYWN0b3J5OmFrLsm1ZmFjfSksYWsuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpRaH0se3R5cGU6QXd9LHt0eXBlOm1DfV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihhayxbe3R5cGU6VW19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6UWh9LHt0eXBlOkF3fSx7dHlwZTptQ31dfSksbnVsbCk7Y2xhc3Mgcmt7Y29uc3RydWN0b3IodCxlLG4pe3RoaXMubmFtZXNwYWNlSWQ9dCx0aGlzLmRlbGVnYXRlPWUsdGhpcy5lbmdpbmU9bix0aGlzLmRlc3Ryb3lOb2RlPXRoaXMuZGVsZWdhdGUuZGVzdHJveU5vZGU/dD0+ZS5kZXN0cm95Tm9kZSh0KTpudWxsfWdldCBkYXRhKCl7cmV0dXJuIHRoaXMuZGVsZWdhdGUuZGF0YX1kZXN0cm95KCl7dGhpcy5lbmdpbmUuZGVzdHJveSh0aGlzLm5hbWVzcGFjZUlkLHRoaXMuZGVsZWdhdGUpLHRoaXMuZGVsZWdhdGUuZGVzdHJveSgpfWNyZWF0ZUVsZW1lbnQodCxlKXtyZXR1cm4gdGhpcy5kZWxlZ2F0ZS5jcmVhdGVFbGVtZW50KHQsZSl9Y3JlYXRlQ29tbWVudCh0KXtyZXR1cm4gdGhpcy5kZWxlZ2F0ZS5jcmVhdGVDb21tZW50KHQpfWNyZWF0ZVRleHQodCl7cmV0dXJuIHRoaXMuZGVsZWdhdGUuY3JlYXRlVGV4dCh0KX1hcHBlbmRDaGlsZCh0LGUpe3RoaXMuZGVsZWdhdGUuYXBwZW5kQ2hpbGQodCxlKSx0aGlzLmVuZ2luZS5vbkluc2VydCh0aGlzLm5hbWVzcGFjZUlkLGUsdCwhMSl9aW5zZXJ0QmVmb3JlKHQsZSxuLG89ITApe3RoaXMuZGVsZWdhdGUuaW5zZXJ0QmVmb3JlKHQsZSxuKSx0aGlzLmVuZ2luZS5vbkluc2VydCh0aGlzLm5hbWVzcGFjZUlkLGUsdCxvKX1yZW1vdmVDaGlsZCh0LGUsbil7dGhpcy5lbmdpbmUub25SZW1vdmUodGhpcy5uYW1lc3BhY2VJZCxlLHRoaXMuZGVsZWdhdGUsbil9c2VsZWN0Um9vdEVsZW1lbnQodCxlKXtyZXR1cm4gdGhpcy5kZWxlZ2F0ZS5zZWxlY3RSb290RWxlbWVudCh0LGUpfXBhcmVudE5vZGUodCl7cmV0dXJuIHRoaXMuZGVsZWdhdGUucGFyZW50Tm9kZSh0KX1uZXh0U2libGluZyh0KXtyZXR1cm4gdGhpcy5kZWxlZ2F0ZS5uZXh0U2libGluZyh0KX1zZXRBdHRyaWJ1dGUodCxlLG4sbyl7dGhpcy5kZWxlZ2F0ZS5zZXRBdHRyaWJ1dGUodCxlLG4sbyl9cmVtb3ZlQXR0cmlidXRlKHQsZSxuKXt0aGlzLmRlbGVnYXRlLnJlbW92ZUF0dHJpYnV0ZSh0LGUsbil9YWRkQ2xhc3ModCxlKXt0aGlzLmRlbGVnYXRlLmFkZENsYXNzKHQsZSl9cmVtb3ZlQ2xhc3ModCxlKXt0aGlzLmRlbGVnYXRlLnJlbW92ZUNsYXNzKHQsZSl9c2V0U3R5bGUodCxlLG4sbyl7dGhpcy5kZWxlZ2F0ZS5zZXRTdHlsZSh0LGUsbixvKX1yZW1vdmVTdHlsZSh0LGUsbil7dGhpcy5kZWxlZ2F0ZS5yZW1vdmVTdHlsZSh0LGUsbil9c2V0UHJvcGVydHkodCxlLG4pe2UuY2hhckF0KDApPT1vayYmZT09aWs/dGhpcy5kaXNhYmxlQW5pbWF0aW9ucyh0LCEhbik6dGhpcy5kZWxlZ2F0ZS5zZXRQcm9wZXJ0eSh0LGUsbil9c2V0VmFsdWUodCxlKXt0aGlzLmRlbGVnYXRlLnNldFZhbHVlKHQsZSl9bGlzdGVuKHQsZSxuKXtyZXR1cm4gdGhpcy5kZWxlZ2F0ZS5saXN0ZW4odCxlLG4pfWRpc2FibGVBbmltYXRpb25zKHQsZSl7dGhpcy5lbmdpbmUuZGlzYWJsZUFuaW1hdGlvbnModCxlKX19Y2xhc3Mgc2sgZXh0ZW5kcyBya3tjb25zdHJ1Y3Rvcih0LGUsbixvKXtzdXBlcihlLG4sbyksdGhpcy5mYWN0b3J5PXQsdGhpcy5uYW1lc3BhY2VJZD1lfXNldFByb3BlcnR5KHQsZSxuKXtlLmNoYXJBdCgwKT09b2s/Ii4iPT1lLmNoYXJBdCgxKSYmZT09aWs/dGhpcy5kaXNhYmxlQW5pbWF0aW9ucyh0LG49dm9pZCAwPT09bnx8ISFuKTp0aGlzLmVuZ2luZS5wcm9jZXNzKHRoaXMubmFtZXNwYWNlSWQsdCxlLnN1YnN0cigxKSxuKTp0aGlzLmRlbGVnYXRlLnNldFByb3BlcnR5KHQsZSxuKX1saXN0ZW4odCxlLG4pe2lmKGUuY2hhckF0KDApPT1vayl7Y29uc3Qgbz0oZnVuY3Rpb24gaSh0KXtzd2l0Y2godCl7Y2FzZSJib2R5IjpyZXR1cm4gZG9jdW1lbnQuYm9keTtjYXNlImRvY3VtZW50IjpyZXR1cm4gZG9jdW1lbnQ7Y2FzZSJ3aW5kb3ciOnJldHVybiB3aW5kb3c7ZGVmYXVsdDpyZXR1cm4gdH19KSh0KTtsZXQgYT1lLnN1YnN0cigxKSxyPSIiO3JldHVybiBhLmNoYXJBdCgwKSE9b2smJihbYSxyXT0oZnVuY3Rpb24gcyh0KXtjb25zdCBlPXQuaW5kZXhPZigiLiIpLG49dC5zdWJzdHJpbmcoMCxlKSxvPXQuc3Vic3RyKGUrMSk7cmV0dXJuW24sb119Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLykoYSkpLHRoaXMuZW5naW5lLmxpc3Rlbih0aGlzLm5hbWVzcGFjZUlkLG8sYSxyLCh0PT57dGhpcy5mYWN0b3J5LnNjaGVkdWxlTGlzdGVuZXJDYWxsYmFjayh0Ll9kYXRhfHwtMSxuLHQpfSkpfXJldHVybiB0aGlzLmRlbGVnYXRlLmxpc3Rlbih0LGUsbil9fWNsYXNzIGxrIGV4dGVuZHMgQXd7Y29uc3RydWN0b3IodCxlLG4pe3N1cGVyKHQuYm9keSxlLG4pfW5nT25EZXN0cm95KCl7dGhpcy5mbHVzaCgpfX1say7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8bGspKFRyKHNNKSxUcihuUCksVHIoJFApKX0sbGsuybVwcm92PVNuKHt0b2tlbjpsayxmYWN0b3J5OmxrLsm1ZmFjfSksbGsuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbc01dfV19LHt0eXBlOm5QfSx7dHlwZTokUH1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIobGssW3t0eXBlOlVtfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltzTV19XX0se3R5cGU6blB9LHt0eXBlOiRQfV19KSxudWxsKTtjb25zdCBjaz1uZXcgZXIoIkFuaW1hdGlvbk1vZHVsZVR5cGUiKSxkaz1be3Byb3ZpZGU6TU8sdXNlQ2xhc3M6JHd9LHtwcm92aWRlOiRQLHVzZUZhY3Rvcnk6ZnVuY3Rpb24gcGsoKXtyZXR1cm4gbmV3IHR3fX0se3Byb3ZpZGU6QXcsdXNlQ2xhc3M6bGt9LHtwcm92aWRlOlFoLHVzZUZhY3Rvcnk6ZnVuY3Rpb24gbWsodCxlLG4pe3JldHVybiBuZXcgYWsodCxlLG4pfSxkZXBzOlt6eCxBdyxtQ119XSxmaz1be3Byb3ZpZGU6blAsdXNlRmFjdG9yeTpmdW5jdGlvbiB1aygpe3JldHVybihmdW5jdGlvbiB0KCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIFF3KCl9KSgpP25ldyBKdzpuZXcgWnd9fSx7cHJvdmlkZTpjayx1c2VWYWx1ZToiQnJvd3NlckFuaW1hdGlvbnMifSwuLi5ka10sZ2s9W3twcm92aWRlOm5QLHVzZUNsYXNzOmVQfSx7cHJvdmlkZTpjayx1c2VWYWx1ZToiTm9vcEFuaW1hdGlvbnMifSwuLi5ka107Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjbGFzcyBoa3tzdGF0aWMgd2l0aENvbmZpZyh0KXtyZXR1cm57bmdNb2R1bGU6aGsscHJvdmlkZXJzOnQuZGlzYWJsZUFuaW1hdGlvbnM/Z2s6Zmt9fX1oay7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8aGspfSxoay7JtW1vZD1mbyh7dHlwZTpoa30pLGhrLsm1aW5qPURuKHtwcm92aWRlcnM6ZmssaW1wb3J0czpbZE9dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihoayxbe3R5cGU6TF8sYXJnczpbe2V4cG9ydHM6W2RPXSxwcm92aWRlcnM6Zmt9XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZ1byhoayx7ZXhwb3J0czpmdW5jdGlvbigpe3JldHVybltkT119fSk7Y2xhc3MgYmt7fWJrLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxiayl9LGJrLsm1bW9kPWZvKHt0eXBlOmJrfSksYmsuybVpbmo9RG4oe3Byb3ZpZGVyczpnayxpbXBvcnRzOltkT119KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKGJrLFt7dHlwZTpMXyxhcmdzOlt7ZXhwb3J0czpbZE9dLHByb3ZpZGVyczpna31dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnVvKGJrLHtleHBvcnRzOmZ1bmN0aW9uKCl7cmV0dXJuW2RPXX19KTtjb25zdCB5az17fTtmdW5jdGlvbiBfayh0LGUpe2lmKHlrW3RdPSh5a1t0XXx8MCkrMSwiZnVuY3Rpb24iPT10eXBlb2YgZSlyZXR1cm4gQ2sodCwoKC4uLm4pPT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sZSguLi5uKSkse3R5cGU6dH0pKSk7c3dpdGNoKGU/ZS5fYXM6ImVtcHR5Iil7Y2FzZSJlbXB0eSI6cmV0dXJuIENrKHQsKCgpPT4oe3R5cGU6dH0pKSk7Y2FzZSJwcm9wcyI6cmV0dXJuIENrKHQsKGU9Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxlKSx7dHlwZTp0fSkpKTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiVW5leHBlY3RlZCBjb25maWcuIil9fWZ1bmN0aW9uIENrKHQsZSl7cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJ0eXBlIix7dmFsdWU6dCx3cml0YWJsZTohMX0pfWNvbnN0IE1rPSJAbmdyeC9zdG9yZS9pbml0IjtjbGFzcyB2ayBleHRlbmRzIGp7Y29uc3RydWN0b3IoKXtzdXBlcih7dHlwZTpNa30pfW5leHQodCl7aWYoImZ1bmN0aW9uIj09dHlwZW9mIHQpdGhyb3cgbmV3IFR5cGVFcnJvcigiXG4gICAgICAgIERpc3BhdGNoIGV4cGVjdGVkIGFuIG9iamVjdCwgaW5zdGVhZCBpdCByZWNlaXZlZCBhIGZ1bmN0aW9uLlxuICAgICAgICBJZiB5b3UncmUgdXNpbmcgdGhlIGNyZWF0ZUFjdGlvbiBmdW5jdGlvbiwgbWFrZSBzdXJlIHRvIGludm9rZSB0aGUgZnVuY3Rpb25cbiAgICAgICAgYmVmb3JlIGRpc3BhdGNoaW5nIHRoZSBhY3Rpb24uIEZvciBleGFtcGxlLCBzb21lQWN0aW9uIHNob3VsZCBiZSBzb21lQWN0aW9uKCkuIik7aWYodm9pZCAwPT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKCJBY3Rpb25zIG11c3QgYmUgb2JqZWN0cyIpO2lmKHZvaWQgMD09PXQudHlwZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJBY3Rpb25zIG11c3QgaGF2ZSBhIHR5cGUgcHJvcGVydHkiKTtzdXBlci5uZXh0KHQpfWNvbXBsZXRlKCl7fW5nT25EZXN0cm95KCl7c3VwZXIuY29tcGxldGUoKX19dmsuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHZrKX0sdmsuybVwcm92PVNuKHt0b2tlbjp2ayxmYWN0b3J5OnZrLsm1ZmFjfSksdmsuY3RvclBhcmFtZXRlcnM9KCk9PltdLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIodmssW3t0eXBlOlVtfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW119KSxudWxsKTtjb25zdCB4az1bdmtdLE9rPW5ldyBlcigiQG5ncngvc3RvcmUgSW50ZXJuYWwgUm9vdCBHdWFyZCIpLFBrPW5ldyBlcigiQG5ncngvc3RvcmUgSW50ZXJuYWwgSW5pdGlhbCBTdGF0ZSIpLHdrPW5ldyBlcigiQG5ncngvc3RvcmUgSW5pdGlhbCBTdGF0ZSIpLGtrPW5ldyBlcigiQG5ncngvc3RvcmUgUmVkdWNlciBGYWN0b3J5IiksU2s9bmV3IGVyKCJAbmdyeC9zdG9yZSBJbnRlcm5hbCBSZWR1Y2VyIEZhY3RvcnkgUHJvdmlkZXIiKSxEaz1uZXcgZXIoIkBuZ3J4L3N0b3JlIEluaXRpYWwgUmVkdWNlcnMiKSxSaz1uZXcgZXIoIkBuZ3J4L3N0b3JlIEludGVybmFsIEluaXRpYWwgUmVkdWNlcnMiKSxFaz1uZXcgZXIoIkBuZ3J4L3N0b3JlIFN0b3JlIEZlYXR1cmVzIiksQWs9bmV3IGVyKCJAbmdyeC9zdG9yZSBJbnRlcm5hbCBTdG9yZSBSZWR1Y2VycyIpLFRrPW5ldyBlcigiQG5ncngvc3RvcmUgSW50ZXJuYWwgRmVhdHVyZSBSZWR1Y2VycyIpLE5rPW5ldyBlcigiQG5ncngvc3RvcmUgSW50ZXJuYWwgRmVhdHVyZSBDb25maWdzIiksems9bmV3IGVyKCJAbmdyeC9zdG9yZSBJbnRlcm5hbCBTdG9yZSBGZWF0dXJlcyIpLElrPW5ldyBlcigiQG5ncngvc3RvcmUgSW50ZXJuYWwgRmVhdHVyZSBSZWR1Y2VycyBUb2tlbiIpLEhrPW5ldyBlcigiQG5ncngvc3RvcmUgRmVhdHVyZSBSZWR1Y2VycyIpLEZrPW5ldyBlcigiQG5ncngvc3RvcmUgVXNlciBQcm92aWRlZCBNZXRhIFJlZHVjZXJzIiksTGs9bmV3IGVyKCJAbmdyeC9zdG9yZSBNZXRhIFJlZHVjZXJzIiksQms9bmV3IGVyKCJAbmdyeC9zdG9yZSBJbnRlcm5hbCBSZXNvbHZlZCBNZXRhIFJlZHVjZXJzIiksVms9bmV3IGVyKCJAbmdyeC9zdG9yZSBVc2VyIFJ1bnRpbWUgQ2hlY2tzIENvbmZpZyIpLGprPW5ldyBlcigiQG5ncngvc3RvcmUgSW50ZXJuYWwgVXNlciBSdW50aW1lIENoZWNrcyBDb25maWciKSxVaz1uZXcgZXIoIkBuZ3J4L3N0b3JlIEludGVybmFsIFJ1bnRpbWUgQ2hlY2tzIiksV2s9bmV3IGVyKCJAbmdyeC9zdG9yZSBDaGVjayBpZiBBY3Rpb24gdHlwZXMgYXJlIHVuaXF1ZSIpO2Z1bmN0aW9uIEdrKHQsZT17fSl7Y29uc3Qgbj1PYmplY3Qua2V5cyh0KSxvPXt9O2ZvcihsZXQgZT0wO2U8bi5sZW5ndGg7ZSsrKXtjb25zdCBpPW5bZV07ImZ1bmN0aW9uIj09dHlwZW9mIHRbaV0mJihvW2ldPXRbaV0pfWNvbnN0IGk9T2JqZWN0LmtleXMobyk7cmV0dXJuIGZ1bmN0aW9uIHQobixhKXtuPXZvaWQgMD09PW4/ZTpuO2xldCByPSExO2NvbnN0IHM9e307Zm9yKGxldCB0PTA7dDxpLmxlbmd0aDt0Kyspe2NvbnN0IGU9aVt0XSxsPW5bZV0sYz0oMCxvW2VdKShsLGEpO3NbZV09YyxyPXJ8fGMhPT1sfXJldHVybiByP3M6bn19ZnVuY3Rpb24gWWsoLi4udCl7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKDA9PT10Lmxlbmd0aClyZXR1cm4gZTtjb25zdCBuPXRbdC5sZW5ndGgtMV07cmV0dXJuIHQuc2xpY2UoMCwtMSkucmVkdWNlUmlnaHQoKCh0LGUpPT5lKHQpKSxuKGUpKX19ZnVuY3Rpb24gcWsodCxlKXtyZXR1cm4gQXJyYXkuaXNBcnJheShlKSYmZS5sZW5ndGg+MCYmKHQ9WWsuYXBwbHkobnVsbCxbLi4uZSx0XSkpLChlLG4pPT57Y29uc3Qgbz10KGUpO3JldHVybih0LGUpPT5vKHQ9dm9pZCAwPT09dD9uOnQsZSl9fWNsYXNzIFprIGV4dGVuZHMgVHt9Y2xhc3MgWGsgZXh0ZW5kcyB2a3t9Y2xhc3MgS2sgZXh0ZW5kcyBqe2NvbnN0cnVjdG9yKHQsZSxuLG8pe3N1cGVyKG8obixlKSksdGhpcy5kaXNwYXRjaGVyPXQsdGhpcy5pbml0aWFsU3RhdGU9ZSx0aGlzLnJlZHVjZXJzPW4sdGhpcy5yZWR1Y2VyRmFjdG9yeT1vfWdldCBjdXJyZW50UmVkdWNlcnMoKXtyZXR1cm4gdGhpcy5yZWR1Y2Vyc31hZGRGZWF0dXJlKHQpe3RoaXMuYWRkRmVhdHVyZXMoW3RdKX1hZGRGZWF0dXJlcyh0KXtjb25zdCBlPXQucmVkdWNlKCgodCx7cmVkdWNlcnM6ZSxyZWR1Y2VyRmFjdG9yeTpuLG1ldGFSZWR1Y2VyczpvLGluaXRpYWxTdGF0ZTppLGtleTphfSk9Pntjb25zdCByPSJmdW5jdGlvbiI9PXR5cGVvZiBlPyhmdW5jdGlvbiBzKHQpe2NvbnN0IGU9QXJyYXkuaXNBcnJheSh0KSYmdC5sZW5ndGg+MD9ZayguLi50KTp0PT50O3JldHVybih0LG4pPT4odD1lKHQpLChlLG8pPT50KGU9dm9pZCAwPT09ZT9uOmUsbykpfSkobykoZSxpKTpxayhuLG8pKGUsaSk7cmV0dXJuIHRbYV09cix0fSkse30pO3RoaXMuYWRkUmVkdWNlcnMoZSl9cmVtb3ZlRmVhdHVyZSh0KXt0aGlzLnJlbW92ZUZlYXR1cmVzKFt0XSl9cmVtb3ZlRmVhdHVyZXModCl7dGhpcy5yZW1vdmVSZWR1Y2Vycyh0Lm1hcCgodD0+dC5rZXkpKSl9YWRkUmVkdWNlcih0LGUpe3RoaXMuYWRkUmVkdWNlcnMoe1t0XTplfSl9YWRkUmVkdWNlcnModCl7dGhpcy5yZWR1Y2Vycz1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdGhpcy5yZWR1Y2VycyksdCksdGhpcy51cGRhdGVSZWR1Y2VycyhPYmplY3Qua2V5cyh0KSl9cmVtb3ZlUmVkdWNlcih0KXt0aGlzLnJlbW92ZVJlZHVjZXJzKFt0XSl9cmVtb3ZlUmVkdWNlcnModCl7dC5mb3JFYWNoKCh0PT57dGhpcy5yZWR1Y2Vycz0oZnVuY3Rpb24gZSh0LG4pe3JldHVybiBPYmplY3Qua2V5cyh0KS5maWx0ZXIoKHQ9PnQhPT1uKSkucmVkdWNlKCgoZSxuKT0+T2JqZWN0LmFzc2lnbihlLHtbbl06dFtuXX0pKSx7fSl9KSh0aGlzLnJlZHVjZXJzLHQpfSkpLHRoaXMudXBkYXRlUmVkdWNlcnModCl9dXBkYXRlUmVkdWNlcnModCl7dGhpcy5uZXh0KHRoaXMucmVkdWNlckZhY3RvcnkodGhpcy5yZWR1Y2Vycyx0aGlzLmluaXRpYWxTdGF0ZSkpLHRoaXMuZGlzcGF0Y2hlci5uZXh0KHt0eXBlOiJAbmdyeC9zdG9yZS91cGRhdGUtcmVkdWNlcnMiLGZlYXR1cmVzOnR9KX1uZ09uRGVzdHJveSgpe3RoaXMuY29tcGxldGUoKX19S2suybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEtrKShUcihYayksVHIod2spLFRyKERrKSxUcihraykpfSxLay7JtXByb3Y9U24oe3Rva2VuOktrLGZhY3Rvcnk6S2suybVmYWN9KSxLay5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOlhrfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbd2tdfV19LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltEa119XX0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W2trXX1dfV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihLayxbe3R5cGU6VW19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6WGt9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOlt3a119XX0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W0RrXX1dfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpba2tdfV19XX0pLG51bGwpO2NvbnN0IEprPVtLayx7cHJvdmlkZTpaayx1c2VFeGlzdGluZzpLa30se3Byb3ZpZGU6WGssdXNlRXhpc3Rpbmc6dmt9XTtjbGFzcyBRayBleHRlbmRzIEJ7bmdPbkRlc3Ryb3koKXt0aGlzLmNvbXBsZXRlKCl9fVFrLsm1ZmFjPShmdW5jdGlvbigpe2xldCB0O3JldHVybiBmdW5jdGlvbiBlKG4pe3JldHVybih0fHwodD1VYShRaykpKShufHxRayl9fSkoKSxRay7JtXByb3Y9U24oe3Rva2VuOlFrLGZhY3Rvcnk6UWsuybVmYWN9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKFFrLFt7dHlwZTpVbX1dLG51bGwsbnVsbCk7Y29uc3QgJGs9W1FrXTtjbGFzcyB0UyBleHRlbmRzIFR7fWNsYXNzIGVTIGV4dGVuZHMgantjb25zdHJ1Y3Rvcih0LGUsbixvKXtzdXBlcihvKTtjb25zdCBpPXQucGlwZSgoZnVuY3Rpb24gcih0LGUpe3JldHVybiB2b2lkIDA9PT1lJiYoZT0wKSx6KChmdW5jdGlvbihuLG8pe24uc3Vic2NyaWJlKG5ldyBIKG8sKGZ1bmN0aW9uKG4pe3JldHVybiBvLmFkZCh0LnNjaGVkdWxlKChmdW5jdGlvbigpe3JldHVybiBvLm5leHQobil9KSxlKSl9KSwoZnVuY3Rpb24oKXtyZXR1cm4gby5hZGQodC5zY2hlZHVsZSgoZnVuY3Rpb24oKXtyZXR1cm4gby5jb21wbGV0ZSgpfSksZSkpfSksKGZ1bmN0aW9uKG4pe3JldHVybiBvLmFkZCh0LnNjaGVkdWxlKChmdW5jdGlvbigpe3JldHVybiBvLmVycm9yKG4pfSksZSkpfSkpKX0pKX0pKHN0KSkucGlwZShxZShlKSkucGlwZSgoZnVuY3Rpb24gYSh0LGUpe3JldHVybiB6KGJlKHQsZSxhcmd1bWVudHMubGVuZ3RoPj0yLCEwKSl9KShuUyx7c3RhdGU6b30pKTt0aGlzLnN0YXRlU3Vic2NyaXB0aW9uPWkuc3Vic2NyaWJlKCgoe3N0YXRlOnQsYWN0aW9uOmV9KT0+e3RoaXMubmV4dCh0KSxuLm5leHQoZSl9KSl9bmdPbkRlc3Ryb3koKXt0aGlzLnN0YXRlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCksdGhpcy5jb21wbGV0ZSgpfX1mdW5jdGlvbiBuUyh0PXtzdGF0ZTp2b2lkIDB9LFtlLG5dKXtjb25zdHtzdGF0ZTpvfT10O3JldHVybntzdGF0ZTpuKG8sZSksYWN0aW9uOmV9fWVTLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxlUykoVHIodmspLFRyKFprKSxUcihRayksVHIod2spKX0sZVMuybVwcm92PVNuKHt0b2tlbjplUyxmYWN0b3J5OmVTLsm1ZmFjfSksZVMuSU5JVD1NayxlUy5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOnZrfSx7dHlwZTpaa30se3R5cGU6UWt9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOlt3a119XX1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoZVMsW3t0eXBlOlVtfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOnZrfSx7dHlwZTpaa30se3R5cGU6UWt9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOlt3a119XX1dfSksbnVsbCk7Y29uc3Qgb1M9W2VTLHtwcm92aWRlOnRTLHVzZUV4aXN0aW5nOmVTfV07Y2xhc3MgaVMgZXh0ZW5kcyBUe2NvbnN0cnVjdG9yKHQsZSxuKXtzdXBlcigpLHRoaXMuYWN0aW9uc09ic2VydmVyPWUsdGhpcy5yZWR1Y2VyTWFuYWdlcj1uLHRoaXMuc291cmNlPXR9c2VsZWN0KHQsLi4uZSl7cmV0dXJuIHJTLmNhbGwobnVsbCx0LC4uLmUpKHRoaXMpfWxpZnQodCl7Y29uc3QgZT1uZXcgaVModGhpcyx0aGlzLmFjdGlvbnNPYnNlcnZlcix0aGlzLnJlZHVjZXJNYW5hZ2VyKTtyZXR1cm4gZS5vcGVyYXRvcj10LGV9ZGlzcGF0Y2godCl7dGhpcy5hY3Rpb25zT2JzZXJ2ZXIubmV4dCh0KX1uZXh0KHQpe3RoaXMuYWN0aW9uc09ic2VydmVyLm5leHQodCl9ZXJyb3IodCl7dGhpcy5hY3Rpb25zT2JzZXJ2ZXIuZXJyb3IodCl9Y29tcGxldGUoKXt0aGlzLmFjdGlvbnNPYnNlcnZlci5jb21wbGV0ZSgpfWFkZFJlZHVjZXIodCxlKXt0aGlzLnJlZHVjZXJNYW5hZ2VyLmFkZFJlZHVjZXIodCxlKX1yZW1vdmVSZWR1Y2VyKHQpe3RoaXMucmVkdWNlck1hbmFnZXIucmVtb3ZlUmVkdWNlcih0KX19aVMuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGlTKShUcih0UyksVHIodmspLFRyKEtrKSl9LGlTLsm1cHJvdj1Tbih7dG9rZW46aVMsZmFjdG9yeTppUy7JtWZhY30pLGlTLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6dFN9LHt0eXBlOnZrfSx7dHlwZTpLa31dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoaVMsW3t0eXBlOlVtfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOnRTfSx7dHlwZTp2a30se3R5cGU6S2t9XX0pLG51bGwpO2NvbnN0IGFTPVtpU107ZnVuY3Rpb24gclModCxlLC4uLm4pe3JldHVybiBmdW5jdGlvbiBvKGkpe2xldCBhO2lmKCJzdHJpbmciPT10eXBlb2YgdCl7Y29uc3Qgbz1bZSwuLi5uXS5maWx0ZXIoQm9vbGVhbik7YT1pLnBpcGUoKGZ1bmN0aW9uIHIoKXtmb3IodmFyIHQ9W10sZT0wO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspdFtlXT1hcmd1bWVudHNbZV07dmFyIG49dC5sZW5ndGg7aWYoMD09PW4pdGhyb3cgbmV3IEVycm9yKCJsaXN0IG9mIHByb3BlcnRpZXMgY2Fubm90IGJlIGVtcHR5LiIpO3JldHVybiBWdCgoZnVuY3Rpb24oZSl7Zm9yKHZhciBvPWUsaT0wO2k8bjtpKyspe3ZhciBhPW51bGw9PW8/dm9pZCAwOm9bdFtpXV07aWYodm9pZCAwPT09YSlyZXR1cm47bz1hfXJldHVybiBvfSkpfSkodCwuLi5vKSl9ZWxzZXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCl0aHJvdyBuZXcgVHlwZUVycm9yKGBVbmV4cGVjdGVkIHR5cGUgJyR7dHlwZW9mIHR9JyBpbiBzZWxlY3Qgb3BlcmF0b3IsIGV4cGVjdGVkICdzdHJpbmcnIG9yICdmdW5jdGlvbidgKTthPWkucGlwZShWdCgobj0+dChuLGUpKSkpfXJldHVybiBhLnBpcGUod2UoKSl9fWNvbnN0IHNTPSJodHRwczovL25ncnguaW8vZ3VpZGUvc3RvcmUvY29uZmlndXJhdGlvbi9ydW50aW1lLWNoZWNrcyI7ZnVuY3Rpb24gbFModCl7cmV0dXJuIHZvaWQgMD09PXR9ZnVuY3Rpb24gY1ModCl7cmV0dXJuIG51bGw9PT10fWZ1bmN0aW9uIGRTKHQpe3JldHVybiBBcnJheS5pc0FycmF5KHQpfWZ1bmN0aW9uIHBTKHQpe3JldHVybiJvYmplY3QiPT10eXBlb2YgdCYmbnVsbCE9PXR9ZnVuY3Rpb24gbVModCl7aWYoIShmdW5jdGlvbiBlKHQpe3JldHVybiBwUyh0KSYmIWRTKHQpfSkodCkpcmV0dXJuITE7Y29uc3Qgbj1PYmplY3QuZ2V0UHJvdG90eXBlT2YodCk7cmV0dXJuIG49PT1PYmplY3QucHJvdG90eXBlfHxudWxsPT09bn1mdW5jdGlvbiBmUyh0KXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdH1mdW5jdGlvbiB1Uyh0LGUpe3JldHVybiB0PT09ZX1mdW5jdGlvbiBnUyh0LGUsbil7Zm9yKGxldCBvPTA7bzx0Lmxlbmd0aDtvKyspaWYoIW4odFtvXSxlW29dKSlyZXR1cm4hMDtyZXR1cm4hMX1mdW5jdGlvbiBoUyh0LGU9dVMsbj11Uyl7bGV0IG8saT1udWxsLGE9bnVsbDtyZXR1cm57bWVtb2l6ZWQ6ZnVuY3Rpb24gcigpe2lmKHZvaWQgMCE9PW8pcmV0dXJuIG8ucmVzdWx0O2lmKCFpKXJldHVybiBhPXQuYXBwbHkobnVsbCxhcmd1bWVudHMpLGk9YXJndW1lbnRzLGE7aWYoIWdTKGFyZ3VtZW50cyxpLGUpKXJldHVybiBhO2NvbnN0IHI9dC5hcHBseShudWxsLGFyZ3VtZW50cyk7cmV0dXJuIGk9YXJndW1lbnRzLG4oYSxyKT9hOihhPXIscil9LHJlc2V0OmZ1bmN0aW9uIHMoKXtpPW51bGwsYT1udWxsfSxzZXRSZXN1bHQ6ZnVuY3Rpb24gbCh0KXtvPXtyZXN1bHQ6dH19LGNsZWFyUmVzdWx0OmZ1bmN0aW9uIGMoKXtvPXZvaWQgMH19fWZ1bmN0aW9uIGJTKC4uLnQpe3JldHVybihmdW5jdGlvbiBlKHQsbj17c3RhdGVGbjp5U30pe3JldHVybiBmdW5jdGlvbiguLi5lKXtsZXQgbz1lO2lmKEFycmF5LmlzQXJyYXkob1swXSkpe2NvbnN0W3QsLi4uZV09bztvPVsuLi50LC4uLmVdfWNvbnN0IGk9by5zbGljZSgwLG8ubGVuZ3RoLTEpLGE9b1tvLmxlbmd0aC0xXSxyPWkuZmlsdGVyKCh0PT50LnJlbGVhc2UmJiJmdW5jdGlvbiI9PXR5cGVvZiB0LnJlbGVhc2UpKSxzPXQoKGZ1bmN0aW9uKC4uLnQpe3JldHVybiBhLmFwcGx5KG51bGwsdCl9KSksbD1oUygoZnVuY3Rpb24odCxlKXtyZXR1cm4gbi5zdGF0ZUZuLmFwcGx5KG51bGwsW3QsaSxlLHNdKX0pKTtmdW5jdGlvbiBjKCl7bC5yZXNldCgpLHMucmVzZXQoKSxyLmZvckVhY2goKHQ9PnQucmVsZWFzZSgpKSl9cmV0dXJuIE9iamVjdC5hc3NpZ24obC5tZW1vaXplZCx7cmVsZWFzZTpjLHByb2plY3RvcjpzLm1lbW9pemVkLHNldFJlc3VsdDpsLnNldFJlc3VsdCxjbGVhclJlc3VsdDpsLmNsZWFyUmVzdWx0fSl9fSkoaFMpKC4uLnQpfWZ1bmN0aW9uIHlTKHQsZSxuLG8pe2lmKHZvaWQgMD09PW4pe2NvbnN0IG49ZS5tYXAoKGU9PmUodCkpKTtyZXR1cm4gby5tZW1vaXplZC5hcHBseShudWxsLG4pfWNvbnN0IGk9ZS5tYXAoKGU9PmUodCxuKSkpO3JldHVybiBvLm1lbW9pemVkLmFwcGx5KG51bGwsWy4uLmksbl0pfWZ1bmN0aW9uIF9TKHQpe3JldHVybiBiUygoZT0+e2NvbnN0IG49ZVt0XTtyZXR1cm4gUEMoKSYmISh0IGluIGUpJiZjb25zb2xlLndhcm4oYEBuZ3J4L3N0b3JlOiBUaGUgZmVhdHVyZSBuYW1lICIke3R9IiBkb2VzIG5vdCBleGlzdCBpbiB0aGUgc3RhdGUsIHRoZXJlZm9yZSBjcmVhdGVGZWF0dXJlU2VsZWN0b3IgY2Fubm90IGFjY2VzcyBpdC4gIEJlIHN1cmUgaXQgaXMgaW1wb3J0ZWQgaW4gYSBsb2FkZWQgbW9kdWxlIHVzaW5nIFN0b3JlTW9kdWxlLmZvclJvb3QoJyR7dH0nLCAuLi4pIG9yIFN0b3JlTW9kdWxlLmZvckZlYXR1cmUoJyR7dH0nLCAuLi4pLiAgSWYgdGhlIGRlZmF1bHQgc3RhdGUgaXMgaW50ZW5kZWQgdG8gYmUgdW5kZWZpbmVkLCBhcyBpcyB0aGUgY2FzZSB3aXRoIHJvdXRlciBzdGF0ZSwgdGhpcyBkZXZlbG9wbWVudC1vbmx5IHdhcm5pbmcgbWVzc2FnZSBjYW4gYmUgaWdub3JlZC5gKSxufSksKHQ9PnQpKX1mdW5jdGlvbiBDUyh0KXtPYmplY3QuZnJlZXplKHQpO2NvbnN0IGU9ZlModCk7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHQpLmZvckVhY2goKG49PntpZighbi5zdGFydHNXaXRoKCLJtSIpJiYoZnVuY3Rpb24gbyh0LGUpe3JldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxlKX0pKHQsbikmJighZXx8ImNhbGxlciIhPT1uJiYiY2FsbGVlIiE9PW4mJiJhcmd1bWVudHMiIT09bikpe2NvbnN0IGU9dFtuXTshcFMoZSkmJiFmUyhlKXx8T2JqZWN0LmlzRnJvemVuKGUpfHxDUyhlKX19KSksdH1mdW5jdGlvbiBNUyh0LGU9W10pe2lmKChsUyh0KXx8Y1ModCkpJiYwPT09ZS5sZW5ndGgpcmV0dXJue3BhdGg6WyJyb290Il0sdmFsdWU6dH07cmV0dXJuIE9iamVjdC5rZXlzKHQpLnJlZHVjZSgoKG4sbyk9PntpZihuKXJldHVybiBuO2NvbnN0IGk9dFtvXTtyZXR1cm4oZnVuY3Rpb24gYSh0KXtyZXR1cm4gZlModCkmJnQuaGFzT3duUHJvcGVydHkoIsm1Y21wIil9KShpKT9uOiEobFMoaSl8fGNTKGkpfHwoZnVuY3Rpb24gcih0KXtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIHR9KShpKXx8KGZ1bmN0aW9uIHModCl7cmV0dXJuImJvb2xlYW4iPT10eXBlb2YgdH0pKGkpfHwoZnVuY3Rpb24gbCh0KXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHR9KShpKXx8ZFMoaSkpJiYobVMoaSk/TVMoaSxbLi4uZSxvXSk6e3BhdGg6Wy4uLmUsb10sdmFsdWU6aX0pfSksITEpfWZ1bmN0aW9uIHZTKHQsZSl7aWYoITE9PT10KXJldHVybjtjb25zdCBuPXQucGF0aC5qb2luKCIuIiksbz1uZXcgRXJyb3IoYERldGVjdGVkIHVuc2VyaWFsaXphYmxlICR7ZX0gYXQgIiR7bn0iLiAke3NTfSNzdHJpY3Qke2V9c2VyaWFsaXphYmlsaXR5YCk7dGhyb3cgby52YWx1ZT10LnZhbHVlLG8udW5zZXJpYWxpemFibGVQYXRoPW4sb31mdW5jdGlvbiB4Uyh0KXtyZXR1cm4gUEMoKT9PYmplY3QuYXNzaWduKHtzdHJpY3RTdGF0ZVNlcmlhbGl6YWJpbGl0eTohMSxzdHJpY3RBY3Rpb25TZXJpYWxpemFiaWxpdHk6ITEsc3RyaWN0U3RhdGVJbW11dGFiaWxpdHk6ITAsc3RyaWN0QWN0aW9uSW1tdXRhYmlsaXR5OiEwLHN0cmljdEFjdGlvbldpdGhpbk5nWm9uZTohMSxzdHJpY3RBY3Rpb25UeXBlVW5pcXVlbmVzczohMX0sdCk6e3N0cmljdFN0YXRlU2VyaWFsaXphYmlsaXR5OiExLHN0cmljdEFjdGlvblNlcmlhbGl6YWJpbGl0eTohMSxzdHJpY3RTdGF0ZUltbXV0YWJpbGl0eTohMSxzdHJpY3RBY3Rpb25JbW11dGFiaWxpdHk6ITEsc3RyaWN0QWN0aW9uV2l0aGluTmdab25lOiExLHN0cmljdEFjdGlvblR5cGVVbmlxdWVuZXNzOiExfX1mdW5jdGlvbiBPUyh7c3RyaWN0QWN0aW9uU2VyaWFsaXphYmlsaXR5OnQsc3RyaWN0U3RhdGVTZXJpYWxpemFiaWxpdHk6ZX0pe3JldHVybiBuPT50fHxlPyhmdW5jdGlvbiBvKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKG4sbyl7ZS5hY3Rpb24obykmJnZTKE1TKG8pLCJhY3Rpb24iKTtjb25zdCBpPXQobixvKTtyZXR1cm4gZS5zdGF0ZSgpJiZ2UyhNUyhpKSwic3RhdGUiKSxpfX0pKG4se2FjdGlvbjplPT50JiYhd1MoZSksc3RhdGU6KCk9PmV9KTpufWZ1bmN0aW9uIFBTKHtzdHJpY3RBY3Rpb25JbW11dGFiaWxpdHk6dCxzdHJpY3RTdGF0ZUltbXV0YWJpbGl0eTplfSl7cmV0dXJuIG49PnR8fGU/KGZ1bmN0aW9uIG8odCxlKXtyZXR1cm4gZnVuY3Rpb24obixvKXtjb25zdCBpPWUuYWN0aW9uKG8pP0NTKG8pOm8sYT10KG4saSk7cmV0dXJuIGUuc3RhdGUoKT9DUyhhKTphfX0pKG4se2FjdGlvbjplPT50JiYhd1MoZSksc3RhdGU6KCk9PmV9KTpufWZ1bmN0aW9uIHdTKHQpe3JldHVybiB0LnR5cGUuc3RhcnRzV2l0aCgiQG5ncngiKX1mdW5jdGlvbiBrUyh7c3RyaWN0QWN0aW9uV2l0aGluTmdab25lOnR9KXtyZXR1cm4gZT0+dD8oZnVuY3Rpb24gbih0LGUpe3JldHVybiBmdW5jdGlvbihuLG8pe2lmKGUuYWN0aW9uKG8pJiYhbUMuaXNJbkFuZ3VsYXJab25lKCkpdGhyb3cgbmV3IEVycm9yKGBBY3Rpb24gJyR7by50eXBlfScgcnVubmluZyBvdXRzaWRlIE5nWm9uZS4gJHtzU30jc3RyaWN0YWN0aW9ud2l0aGlubmd6b25lYCk7cmV0dXJuIHQobixvKX19KShlLHthY3Rpb246ZT0+dCYmIXdTKGUpfSk6ZX1mdW5jdGlvbiBTUygpe3JldHVyblt7cHJvdmlkZTpXayxtdWx0aTohMCxkZXBzOltVa10sdXNlRmFjdG9yeTpSU31dfWZ1bmN0aW9uIERTKHQpe3JldHVybiB0fWZ1bmN0aW9uIFJTKHQpe2lmKCF0LnN0cmljdEFjdGlvblR5cGVVbmlxdWVuZXNzKXJldHVybjtjb25zdCBlPU9iamVjdC5lbnRyaWVzKHlrKS5maWx0ZXIoKChbLHRdKT0+dD4xKSkubWFwKCgoW3RdKT0+dCkpO2lmKGUubGVuZ3RoKXRocm93IG5ldyBFcnJvcihgQWN0aW9uIHR5cGVzIGFyZSByZWdpc3RlcmVkIG1vcmUgdGhhbiBvbmNlLCAke2UubWFwKCh0PT5gIiR7dH0iYCkpLmpvaW4oIiwgIil9LiAke3NTfSNzdHJpY3RhY3Rpb250eXBldW5pcXVlbmVzc2ApfWNsYXNzIEVTe2NvbnN0cnVjdG9yKHQsZSxuLG8saSxhKXt9fUVTLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxFUykoVHIodmspLFRyKFprKSxUcihRayksVHIoaVMpLFRyKE9rLDgpLFRyKFdrLDgpKX0sRVMuybVtb2Q9Zm8oe3R5cGU6RVN9KSxFUy7JtWluaj1Ebih7fSksRVMuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTp2a30se3R5cGU6Wmt9LHt0eXBlOlFrfSx7dHlwZTppU30se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltPa119XX0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltXa119XX1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoRVMsW3t0eXBlOkxfLGFyZ3M6W3t9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTp2a30se3R5cGU6Wmt9LHt0eXBlOlFrfSx7dHlwZTppU30se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltPa119XX0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltXa119XX1dfSksbnVsbCk7Y2xhc3MgQVN7Y29uc3RydWN0b3IodCxlLG4sbyxpKXt0aGlzLmZlYXR1cmVzPXQsdGhpcy5mZWF0dXJlUmVkdWNlcnM9ZSx0aGlzLnJlZHVjZXJNYW5hZ2VyPW47Y29uc3QgYT10Lm1hcCgoKHQsbik9Pntjb25zdCBvPWUuc2hpZnQoKVtuXTtyZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtyZWR1Y2VyczpvLGluaXRpYWxTdGF0ZTpIUyh0LmluaXRpYWxTdGF0ZSl9KX0pKTtuLmFkZEZlYXR1cmVzKGEpfW5nT25EZXN0cm95KCl7dGhpcy5yZWR1Y2VyTWFuYWdlci5yZW1vdmVGZWF0dXJlcyh0aGlzLmZlYXR1cmVzKX19QVMuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEFTKShUcih6ayksVHIoSGspLFRyKEtrKSxUcihFUyksVHIoV2ssOCkpfSxBUy7JtW1vZD1mbyh7dHlwZTpBU30pLEFTLsm1aW5qPURuKHt9KSxBUy5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOkFycmF5LGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W3prXX1dfSx7dHlwZTpBcnJheSxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltIa119XX0se3R5cGU6S2t9LHt0eXBlOkVTfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W1drXX1dfV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihBUyxbe3R5cGU6TF8sYXJnczpbe31dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOkFycmF5LGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W3prXX1dfSx7dHlwZTpBcnJheSxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltIa119XX0se3R5cGU6S2t9LHt0eXBlOkVTfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W1drXX1dfV19KSxudWxsKTtjbGFzcyBUU3tzdGF0aWMgZm9yUm9vdCh0LGU9e30pe3JldHVybntuZ01vZHVsZTpFUyxwcm92aWRlcnM6W3twcm92aWRlOk9rLHVzZUZhY3Rvcnk6TFMsZGVwczpbW2lTLG5ldyBCcixuZXcganJdXX0se3Byb3ZpZGU6UGssdXNlVmFsdWU6ZS5pbml0aWFsU3RhdGV9LHtwcm92aWRlOndrLHVzZUZhY3Rvcnk6SFMsZGVwczpbUGtdfSx7cHJvdmlkZTpSayx1c2VWYWx1ZTp0fSx7cHJvdmlkZTpBayx1c2VFeGlzdGluZzp0IGluc3RhbmNlb2YgZXI/dDpSa30se3Byb3ZpZGU6RGssZGVwczpbTnAsUmssW25ldyBMcihBayldXSx1c2VGYWN0b3J5Ok5TfSx7cHJvdmlkZTpGayx1c2VWYWx1ZTplLm1ldGFSZWR1Y2Vycz9lLm1ldGFSZWR1Y2VyczpbXX0se3Byb3ZpZGU6QmssZGVwczpbTGssRmtdLHVzZUZhY3Rvcnk6RlN9LHtwcm92aWRlOlNrLHVzZVZhbHVlOmUucmVkdWNlckZhY3Rvcnk/ZS5yZWR1Y2VyRmFjdG9yeTpHa30se3Byb3ZpZGU6a2ssZGVwczpbU2ssQmtdLHVzZUZhY3Rvcnk6cWt9LHhrLEprLCRrLG9TLGFTLChuPWUucnVudGltZUNoZWNrcyxbe3Byb3ZpZGU6amssdXNlVmFsdWU6bn0se3Byb3ZpZGU6VmssdXNlRmFjdG9yeTpEUyxkZXBzOltqa119LHtwcm92aWRlOlVrLGRlcHM6W1ZrXSx1c2VGYWN0b3J5OnhTfSx7cHJvdmlkZTpMayxtdWx0aTohMCxkZXBzOltVa10sdXNlRmFjdG9yeTpQU30se3Byb3ZpZGU6TGssbXVsdGk6ITAsZGVwczpbVWtdLHVzZUZhY3Rvcnk6T1N9LHtwcm92aWRlOkxrLG11bHRpOiEwLGRlcHM6W1VrXSx1c2VGYWN0b3J5OmtTfV0pLFNTKCldfTt2YXIgbn1zdGF0aWMgZm9yRmVhdHVyZSh0LGUsbj17fSl7cmV0dXJue25nTW9kdWxlOkFTLHByb3ZpZGVyczpbe3Byb3ZpZGU6TmssbXVsdGk6ITAsdXNlVmFsdWU6dCBpbnN0YW5jZW9mIE9iamVjdD97fTpufSx7cHJvdmlkZTpFayxtdWx0aTohMCx1c2VWYWx1ZTp7a2V5OnQgaW5zdGFuY2VvZiBPYmplY3Q/dC5uYW1lOnQscmVkdWNlckZhY3Rvcnk6biBpbnN0YW5jZW9mIGVyfHwhbi5yZWR1Y2VyRmFjdG9yeT9HazpuLnJlZHVjZXJGYWN0b3J5LG1ldGFSZWR1Y2VyczpuIGluc3RhbmNlb2YgZXJ8fCFuLm1ldGFSZWR1Y2Vycz9bXTpuLm1ldGFSZWR1Y2Vycyxpbml0aWFsU3RhdGU6biBpbnN0YW5jZW9mIGVyfHwhbi5pbml0aWFsU3RhdGU/dm9pZCAwOm4uaW5pdGlhbFN0YXRlfX0se3Byb3ZpZGU6emssZGVwczpbTnAsTmssRWtdLHVzZUZhY3Rvcnk6elN9LHtwcm92aWRlOlRrLG11bHRpOiEwLHVzZVZhbHVlOnQgaW5zdGFuY2VvZiBPYmplY3Q/dC5yZWR1Y2VyOmV9LHtwcm92aWRlOklrLG11bHRpOiEwLHVzZUV4aXN0aW5nOmUgaW5zdGFuY2VvZiBlcj9lOlRrfSx7cHJvdmlkZTpIayxtdWx0aTohMCxkZXBzOltOcCxUayxbbmV3IExyKElrKV1dLHVzZUZhY3Rvcnk6SVN9LFNTKCldfX19ZnVuY3Rpb24gTlModCxlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIGVyP3QuZ2V0KGUpOmV9ZnVuY3Rpb24gelModCxlLG4pe3JldHVybiBuLm1hcCgoKG4sbyk9PntpZihlW29daW5zdGFuY2VvZiBlcil7Y29uc3QgaT10LmdldChlW29dKTtyZXR1cm57a2V5Om4ua2V5LHJlZHVjZXJGYWN0b3J5OmkucmVkdWNlckZhY3Rvcnk/aS5yZWR1Y2VyRmFjdG9yeTpHayxtZXRhUmVkdWNlcnM6aS5tZXRhUmVkdWNlcnM/aS5tZXRhUmVkdWNlcnM6W10saW5pdGlhbFN0YXRlOmkuaW5pdGlhbFN0YXRlfX1yZXR1cm4gbn0pKX1mdW5jdGlvbiBJUyh0LGUpe3JldHVybiBlLm1hcCgoZT0+ZSBpbnN0YW5jZW9mIGVyP3QuZ2V0KGUpOmUpKX1mdW5jdGlvbiBIUyh0KXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdD90KCk6dH1mdW5jdGlvbiBGUyh0LGUpe3JldHVybiB0LmNvbmNhdChlKX1mdW5jdGlvbiBMUyh0KXtpZih0KXRocm93IG5ldyBUeXBlRXJyb3IoIlN0b3JlTW9kdWxlLmZvclJvb3QoKSBjYWxsZWQgdHdpY2UuIEZlYXR1cmUgbW9kdWxlcyBzaG91bGQgdXNlIFN0b3JlTW9kdWxlLmZvckZlYXR1cmUoKSBpbnN0ZWFkLiIpO3JldHVybiJndWFyZGVkIn1mdW5jdGlvbiBCUyguLi50KXtyZXR1cm57cmVkdWNlcjp0LnBvcCgpLHR5cGVzOnQubWFwKCh0PT50LnR5cGUpKX19ZnVuY3Rpb24gVlModCwuLi5lKXtjb25zdCBuPW5ldyBNYXA7Zm9yKGNvbnN0IHQgb2YgZSlmb3IoY29uc3QgZSBvZiB0LnR5cGVzKXtjb25zdCBvPW4uZ2V0KGUpO2lmKG8pe24uc2V0KGUsKChlLG4pPT50LnJlZHVjZXIobyhlLG4pLG4pKSl9ZWxzZSBuLnNldChlLHQucmVkdWNlcil9cmV0dXJuIGZ1bmN0aW9uKGU9dCxvKXtjb25zdCBpPW4uZ2V0KG8udHlwZSk7cmV0dXJuIGk/aShlLG8pOmV9fVRTLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxUUyl9LFRTLsm1bW9kPWZvKHt0eXBlOlRTfSksVFMuybVpbmo9RG4oe30pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoVFMsW3t0eXBlOkxfLGFyZ3M6W3t9XX1dLG51bGwsbnVsbCk7Y29uc3QgalM9e2Rpc3BhdGNoOiEwLHVzZUVmZmVjdHNFcnJvckhhbmRsZXI6ITB9LFVTPSJfX0BuZ3J4L2VmZmVjdHNfY3JlYXRlX18iO2Z1bmN0aW9uIFdTKHQsZSl7Y29uc3Qgbj10KCksbz1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30salMpLGUpO3JldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkobixVUyx7dmFsdWU6b30pLG59ZnVuY3Rpb24gR1ModCl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHQpLmZpbHRlcigoZT0+e2lmKHRbZV0mJnRbZV0uaGFzT3duUHJvcGVydHkoVVMpKXtyZXR1cm4gdFtlXVtVU10uaGFzT3duUHJvcGVydHkoImRpc3BhdGNoIil9cmV0dXJuITF9KSkubWFwKChlPT5PYmplY3QuYXNzaWduKHtwcm9wZXJ0eU5hbWU6ZX0sdFtlXVtVU10pKSl9ZnVuY3Rpb24gWVModCl7cmV0dXJuIE9iamVjdC5nZXRQcm90b3R5cGVPZih0KX1jb25zdCBxUz0iX19AbmdyeC9lZmZlY3RzX18iO2Z1bmN0aW9uIFpTKHQpe3JldHVybiBZayhYUyxZUykodCl9ZnVuY3Rpb24gWFModCl7cmV0dXJuKGZ1bmN0aW9uIGUodCl7cmV0dXJuIHQuY29uc3RydWN0b3IuaGFzT3duUHJvcGVydHkocVMpfSkodCk/dC5jb25zdHJ1Y3RvcltxU106W119ZnVuY3Rpb24gS1ModCxlLG4pe2NvbnN0IG89WVModCkuY29uc3RydWN0b3IubmFtZTtyZXR1cm4gcGUoLi4uKGZ1bmN0aW9uIGkodCl7cmV0dXJuW1pTLEdTXS5yZWR1Y2UoKChlLG4pPT5lLmNvbmNhdChuKHQpKSksW10pfSkodCkubWFwKCgoe3Byb3BlcnR5TmFtZTppLGRpc3BhdGNoOmEsdXNlRWZmZWN0c0Vycm9ySGFuZGxlcjpyfSk9Pntjb25zdCBzPSJmdW5jdGlvbiI9PXR5cGVvZiB0W2ldP3RbaV0oKTp0W2ldLGw9cj9uKHMsZSk6cztpZighMT09PWEpcmV0dXJuIGwucGlwZSh4ZSgpKTtyZXR1cm4gbC5waXBlKChmdW5jdGlvbiBjKCl7cmV0dXJuIHooKGZ1bmN0aW9uKHQsZSl7dC5zdWJzY3JpYmUobmV3IEgoZSwoZnVuY3Rpb24odCl7ZS5uZXh0KEh0LmNyZWF0ZU5leHQodCkpfSksKGZ1bmN0aW9uKCl7ZS5uZXh0KEh0LmNyZWF0ZUNvbXBsZXRlKCkpLGUuY29tcGxldGUoKX0pLChmdW5jdGlvbih0KXtlLm5leHQoSHQuY3JlYXRlRXJyb3IodCkpLGUuY29tcGxldGUoKX0pKSl9KSl9KSgpKS5waXBlKFZ0KChlPT4oe2VmZmVjdDp0W2ldLG5vdGlmaWNhdGlvbjplLHByb3BlcnR5TmFtZTppLHNvdXJjZU5hbWU6byxzb3VyY2VJbnN0YW5jZTp0fSkpKSl9KSkpfWZ1bmN0aW9uIEpTKHQsZSxuPTEwKXtyZXR1cm4gdC5waXBlKGhlKChvPT4oZSYmZS5oYW5kbGVFcnJvcihvKSxuPD0xP3Q6SlModCxlLG4tMSkpKSkpfWNsYXNzIFFTIGV4dGVuZHMgVHtjb25zdHJ1Y3Rvcih0KXtzdXBlcigpLHQmJih0aGlzLnNvdXJjZT10KX1saWZ0KHQpe2NvbnN0IGU9bmV3IFFTO3JldHVybiBlLnNvdXJjZT10aGlzLGUub3BlcmF0b3I9dCxlfX1mdW5jdGlvbiAkUyguLi50KXtyZXR1cm4gdWUoKGU9PnQuc29tZSgodD0+InN0cmluZyI9PXR5cGVvZiB0P3Q9PT1lLnR5cGU6dC50eXBlPT09ZS50eXBlKSkpKX1mdW5jdGlvbiB0RCh0LGUpe2lmKCJOIj09PXQubm90aWZpY2F0aW9uLmtpbmQpe2NvbnN0IG49dC5ub3RpZmljYXRpb24udmFsdWU7IShmdW5jdGlvbiBuKHQpe3JldHVybiJmdW5jdGlvbiIhPXR5cGVvZiB0JiZ0JiZ0LnR5cGUmJiJzdHJpbmciPT10eXBlb2YgdC50eXBlfSkobikmJmUuaGFuZGxlRXJyb3IobmV3IEVycm9yKGBFZmZlY3QgJHsoZnVuY3Rpb24gbyh7cHJvcGVydHlOYW1lOnQsc291cmNlSW5zdGFuY2U6ZSxzb3VyY2VOYW1lOm59KXtjb25zdCBvPSJmdW5jdGlvbiI9PXR5cGVvZiBlW3RdO3JldHVybmAiJHtufS4ke1N0cmluZyh0KX0ke28/IigpIjoiIn0iYH0pKHQpfSBkaXNwYXRjaGVkIGFuIGludmFsaWQgYWN0aW9uOiAkeyhmdW5jdGlvbiBpKHQpe3RyeXtyZXR1cm4gSlNPTi5zdHJpbmdpZnkodCl9Y2F0Y2goZSl7cmV0dXJuIHR9fSkobil9YCkpfX1RUy7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8UVMpKFRyKFFrKSl9LFFTLsm1cHJvdj1Tbih7dG9rZW46UVMsZmFjdG9yeTpRUy7JtWZhY30pLFFTLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6VCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltRa119XX1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoUVMsW3t0eXBlOlVtfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOlQsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbUWtdfV19XX0pLG51bGwpO2Z1bmN0aW9uIGVEKHQpe3JldHVybiBuRCh0LCJuZ3J4T25Jbml0RWZmZWN0cyIpfWZ1bmN0aW9uIG5EKHQsZSl7cmV0dXJuIHQmJmUgaW4gdCYmImZ1bmN0aW9uIj09dHlwZW9mIHRbZV19Y29uc3Qgb0Q9bmV3IGVyKCJAbmdyeC9lZmZlY3RzIEludGVybmFsIFJvb3QgR3VhcmQiKSxpRD1uZXcgZXIoIkBuZ3J4L2VmZmVjdHMgVXNlciBQcm92aWRlZCBFZmZlY3RzIiksYUQ9bmV3IGVyKCJAbmdyeC9lZmZlY3RzIEludGVybmFsIFJvb3QgRWZmZWN0cyIpLHJEPW5ldyBlcigiQG5ncngvZWZmZWN0cyBSb290IEVmZmVjdHMiKSxzRD1uZXcgZXIoIkBuZ3J4L2VmZmVjdHMgSW50ZXJuYWwgRmVhdHVyZSBFZmZlY3RzIiksbEQ9bmV3IGVyKCJAbmdyeC9lZmZlY3RzIEZlYXR1cmUgRWZmZWN0cyIpLGNEPW5ldyBlcigiQG5ncngvZWZmZWN0cyBFZmZlY3RzIEVycm9yIEhhbmRsZXIiKTtjbGFzcyBkRCBleHRlbmRzIEJ7Y29uc3RydWN0b3IodCxlKXtzdXBlcigpLHRoaXMuZXJyb3JIYW5kbGVyPXQsdGhpcy5lZmZlY3RzRXJyb3JIYW5kbGVyPWV9YWRkRWZmZWN0cyh0KXt0aGlzLm5leHQodCl9dG9BY3Rpb25zKCl7cmV0dXJuIHRoaXMucGlwZShFZShZUyksJHQoKHQ9PnQucGlwZShFZShwRCkpKSksJHQoKHQ9PnBlKHQucGlwZShSZSgodD0+KGZ1bmN0aW9uIGUodCxuKXtyZXR1cm4gZT0+e2NvbnN0IG89S1MoZSx0LG4pO3JldHVybihmdW5jdGlvbiBpKHQpe3JldHVybiBuRCh0LCJuZ3J4T25SdW5FZmZlY3RzIil9KShlKT9lLm5ncnhPblJ1bkVmZmVjdHMobyk6b319KSh0aGlzLmVycm9ySGFuZGxlcix0aGlzLmVmZmVjdHNFcnJvckhhbmRsZXIpKHQpKSksVnQoKHQ9Pih0RCh0LHRoaXMuZXJyb3JIYW5kbGVyKSx0Lm5vdGlmaWNhdGlvbikpKSx1ZSgodD0+Ik4iPT09dC5raW5kJiZudWxsIT10LnZhbHVlKSksKGZ1bmN0aW9uIGUoKXtyZXR1cm4geigoZnVuY3Rpb24odCxlKXt0LnN1YnNjcmliZShuZXcgSChlLChmdW5jdGlvbih0KXtyZXR1cm4gRnQodCxlKX0pKSl9KSl9KSgpKSx0LnBpcGUodmUoMSksdWUoZUQpLFZ0KCh0PT50Lm5ncnhPbkluaXRFZmZlY3RzKCkpKSkpKSkpfX1mdW5jdGlvbiBwRCh0KXtyZXR1cm4oZnVuY3Rpb24gZSh0KXtyZXR1cm4gbkQodCwibmdyeE9uSWRlbnRpZnlFZmZlY3RzIil9KSh0KT90Lm5ncnhPbklkZW50aWZ5RWZmZWN0cygpOiIifWRELsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxkRCkoVHIodWwpLFRyKGNEKSl9LGRELsm1cHJvdj1Tbih7dG9rZW46ZEQsZmFjdG9yeTpkRC7JtWZhY30pLGRELmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6dWx9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltjRF19XX1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoZEQsW3t0eXBlOlVtfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOnVsfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbY0RdfV19XX0pLG51bGwpO2NsYXNzIG1Ee2NvbnN0cnVjdG9yKHQsZSl7dGhpcy5lZmZlY3RTb3VyY2VzPXQsdGhpcy5zdG9yZT1lLHRoaXMuZWZmZWN0c1N1YnNjcmlwdGlvbj1udWxsfXN0YXJ0KCl7dGhpcy5lZmZlY3RzU3Vic2NyaXB0aW9ufHwodGhpcy5lZmZlY3RzU3Vic2NyaXB0aW9uPXRoaXMuZWZmZWN0U291cmNlcy50b0FjdGlvbnMoKS5zdWJzY3JpYmUodGhpcy5zdG9yZSkpfW5nT25EZXN0cm95KCl7dGhpcy5lZmZlY3RzU3Vic2NyaXB0aW9uJiYodGhpcy5lZmZlY3RzU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCksdGhpcy5lZmZlY3RzU3Vic2NyaXB0aW9uPW51bGwpfX1tRC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8bUQpKFRyKGREKSxUcihpUykpfSxtRC7JtXByb3Y9U24oe3Rva2VuOm1ELGZhY3Rvcnk6bUQuybVmYWN9KSxtRC5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOmREfSx7dHlwZTppU31dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIobUQsW3t0eXBlOlVtfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmREfSx7dHlwZTppU31dfSksbnVsbCk7Y29uc3QgZkQ9IkBuZ3J4L2VmZmVjdHMvaW5pdCI7X2soZkQpO2NsYXNzIHVEe2NvbnN0cnVjdG9yKHQsZSxuLG8saSxhLHIpe3RoaXMuc291cmNlcz10LGUuc3RhcnQoKSxvLmZvckVhY2goKGU9PnQuYWRkRWZmZWN0cyhlKSkpLG4uZGlzcGF0Y2goe3R5cGU6ZkR9KX1hZGRFZmZlY3RzKHQpe3RoaXMuc291cmNlcy5hZGRFZmZlY3RzKHQpfX11RC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8dUQpKFRyKGREKSxUcihtRCksVHIoaVMpLFRyKHJEKSxUcihFUyw4KSxUcihBUyw4KSxUcihvRCw4KSl9LHVELsm1bW9kPWZvKHt0eXBlOnVEfSksdUQuybVpbmo9RG4oe30pLHVELmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6ZER9LHt0eXBlOm1EfSx7dHlwZTppU30se3R5cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbckRdfV19LHt0eXBlOkVTLGRlY29yYXRvcnM6W3t0eXBlOkJyfV19LHt0eXBlOkFTLGRlY29yYXRvcnM6W3t0eXBlOkJyfV19LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpbb0RdfV19XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKHVELFt7dHlwZTpMXyxhcmdzOlt7fV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6ZER9LHt0eXBlOm1EfSx7dHlwZTppU30se3R5cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbckRdfV19LHt0eXBlOkVTLGRlY29yYXRvcnM6W3t0eXBlOkJyfV19LHt0eXBlOkFTLGRlY29yYXRvcnM6W3t0eXBlOkJyfV19LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpbb0RdfV19XX0pLG51bGwpO2NsYXNzIGdEe2NvbnN0cnVjdG9yKHQsZSxuLG8pe2UuZm9yRWFjaCgoZT0+ZS5mb3JFYWNoKChlPT50LmFkZEVmZmVjdHMoZSkpKSkpfX1nRC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8Z0QpKFRyKHVEKSxUcihsRCksVHIoRVMsOCksVHIoQVMsOCkpfSxnRC7JtW1vZD1mbyh7dHlwZTpnRH0pLGdELsm1aW5qPURuKHt9KSxnRC5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOnVEfSx7dHlwZTpBcnJheSxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltsRF19XX0se3R5cGU6RVMsZGVjb3JhdG9yczpbe3R5cGU6QnJ9XX0se3R5cGU6QVMsZGVjb3JhdG9yczpbe3R5cGU6QnJ9XX1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoZ0QsW3t0eXBlOkxfLGFyZ3M6W3t9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTp1RH0se3R5cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbbERdfV19LHt0eXBlOkVTLGRlY29yYXRvcnM6W3t0eXBlOkJyfV19LHt0eXBlOkFTLGRlY29yYXRvcnM6W3t0eXBlOkJyfV19XX0pLG51bGwpO2NsYXNzIGhEe3N0YXRpYyBmb3JGZWF0dXJlKHQ9W10pe3JldHVybntuZ01vZHVsZTpnRCxwcm92aWRlcnM6W3Qse3Byb3ZpZGU6c0QsbXVsdGk6ITAsdXNlVmFsdWU6dH0se3Byb3ZpZGU6aUQsbXVsdGk6ITAsdXNlVmFsdWU6W119LHtwcm92aWRlOmxELG11bHRpOiEwLHVzZUZhY3Rvcnk6YkQsZGVwczpbTnAsc0QsaURdfV19fXN0YXRpYyBmb3JSb290KHQ9W10pe3JldHVybntuZ01vZHVsZTp1RCxwcm92aWRlcnM6W3twcm92aWRlOmNELHVzZVZhbHVlOkpTfSxtRCxkRCxRUyx0LHtwcm92aWRlOmFELHVzZVZhbHVlOlt0XX0se3Byb3ZpZGU6b0QsdXNlRmFjdG9yeTp5RCxkZXBzOltbbUQsbmV3IEJyLG5ldyBqcl0sW2FELG5ldyBWcl1dfSx7cHJvdmlkZTppRCxtdWx0aTohMCx1c2VWYWx1ZTpbXX0se3Byb3ZpZGU6ckQsdXNlRmFjdG9yeTpiRCxkZXBzOltOcCxhRCxpRF19XX19fWZ1bmN0aW9uIGJEKHQsZSxuKXtjb25zdCBvPVtdO2Zvcihjb25zdCB0IG9mIGUpby5wdXNoKC4uLnQpO2Zvcihjb25zdCB0IG9mIG4pby5wdXNoKC4uLnQpO3JldHVybihmdW5jdGlvbiBpKHQsZSl7cmV0dXJuIGUubWFwKChlPT50LmdldChlKSkpfSkodCxvKX1mdW5jdGlvbiB5RCh0LGUpe2lmKCEoMT09PWUubGVuZ3RoJiYwPT09ZVswXS5sZW5ndGgpJiZ0KXRocm93IG5ldyBUeXBlRXJyb3IoIkVmZmVjdHNNb2R1bGUuZm9yUm9vdCgpIGNhbGxlZCB0d2ljZS4gRmVhdHVyZSBtb2R1bGVzIHNob3VsZCB1c2UgRWZmZWN0c01vZHVsZS5mb3JGZWF0dXJlKCkgaW5zdGVhZC4iKTtyZXR1cm4iZ3VhcmRlZCJ9dmFyIF9EO2hELsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxoRCl9LGhELsm1bW9kPWZvKHt0eXBlOmhEfSksaEQuybVpbmo9RG4oe30pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoaEQsW3t0eXBlOkxfLGFyZ3M6W3t9XX1dLG51bGwsbnVsbCksKGZ1bmN0aW9uKHQpe3RbdC5VTktOT1dOPTBdPSJVTktOT1dOIix0W3QuRVhQRVJJTUVOVFM9MV09IkVYUEVSSU1FTlRTIix0W3QuRVhQRVJJTUVOVD0yXT0iRVhQRVJJTUVOVCIsdFt0LkNPTVBBUkVfRVhQRVJJTUVOVD0zXT0iQ09NUEFSRV9FWFBFUklNRU5UIix0W3QuTk9UX1NFVD00XT0iTk9UX1NFVCJ9KShfRHx8KF9EPXt9KSk7Y29uc3QgQ0Q9ImRlZmF1bHRFeHBlcmltZW50SWQiO2Z1bmN0aW9uIE1EKHQpe3JldHVybiB0LnNwbGl0KCIsIikubWFwKCh0PT57Y29uc3QgZT10LmluZGV4T2YoIjoiKTtpZihlPDApdGhyb3cgbmV3IEVycm9yKGBFeHBlY3QgY29sb24gZGVsaW1pdGluZyBuYW1lIGFuZCBJRDogJHt0fWApO2NvbnN0IG49dC5zbGljZSgwLGUpLG89dC5zbGljZShlKzEpO2lmKCFvKXRocm93IG5ldyBFcnJvcihgRXhwZWN0IGlkIHRvIGJlIG5vbi1mYWxzeTogJHt0fWApO3JldHVybntuYW1lOm4saWQ6b319KSl9ZnVuY3Rpb24gdkQodCxlKXtzd2l0Y2godCl7Y2FzZSBfRC5FWFBFUklNRU5UOnJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSwiZXhwZXJpbWVudElkIik/W2UuZXhwZXJpbWVudElkXTpbQ0RdO2Nhc2UgX0QuQ09NUEFSRV9FWFBFUklNRU5UOnJldHVybiBNRChlLmV4cGVyaW1lbnRJZHMpLm1hcCgoKHtpZDp0fSk9PnQpKTtjYXNlIF9ELkVYUEVSSU1FTlRTOmRlZmF1bHQ6cmV0dXJuIG51bGx9fWZ1bmN0aW9uIHhEKHQsZSl7aWYoIXR8fCFlKXJldHVybiB0PT09ZTtpZih0LnJvdXRlS2luZCE9PWUucm91dGVLaW5kKXJldHVybiExO2NvbnN0IG49dkQodC5yb3V0ZUtpbmQsdC5wYXJhbXMpLG89dkQoZS5yb3V0ZUtpbmQsZS5wYXJhbXMpO2lmKG51bGw9PT1ufHxudWxsPT09bylyZXR1cm4gbj09PW87aWYobi5sZW5ndGghPT1vLmxlbmd0aClyZXR1cm4hMTtjb25zdCBpPW8uc29ydCgpO3JldHVybiBuLnNvcnQoKS5ldmVyeSgoKHQsZSk9PmlbZV09PT10KSl9Y29uc3QgT0Q9e2dldEhyZWY6KCk9PndpbmRvdy5sb2NhdGlvbi5ocmVmfTtjbGFzcyBQRHtnZXRIcmVmKCl7cmV0dXJuIE9ELmdldEhyZWYoKX1nZXRTZWFyY2goKXtjb25zdCB0PW5ldyBVUkxTZWFyY2hQYXJhbXMod2luZG93LmxvY2F0aW9uLnNlYXJjaCksZT1bXTtyZXR1cm4gdC5mb3JFYWNoKCgodCxuKT0+e2UucHVzaCh7a2V5Om4sdmFsdWU6dH0pfSkpLGV9Z2V0SGFzaCgpe3JldHVybiB3aW5kb3cubG9jYXRpb24uaGFzaH1nZXRQYXRoKCl7cmV0dXJuIHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZX1nZXRIaXN0b3J5U3RhdGUoKXtyZXR1cm4gd2luZG93Lmhpc3Rvcnkuc3RhdGV9cmVwbGFjZVN0YXRlVXJsKHQpe3dpbmRvdy5oaXN0b3J5LnJlcGxhY2VTdGF0ZSh3aW5kb3cuaGlzdG9yeS5zdGF0ZSwiIix0KX1wdXNoU3RhdGVVcmwodCl7d2luZG93Lmhpc3RvcnkucHVzaFN0YXRlKG51bGwsIiIsdCl9cmVwbGFjZVN0YXRlRGF0YSh0KXt3aW5kb3cuaGlzdG9yeS5yZXBsYWNlU3RhdGUodCwiIil9b25Qb3BTdGF0ZSgpe3JldHVybiBsZSh3aW5kb3csInBvcHN0YXRlIikucGlwZShWdCgodD0+KHtwYXRobmFtZTp0aGlzLmdldFBhdGgoKSxzdGF0ZTp0LnN0YXRlfSkpKSl9Z2V0UmVzb2x2ZWRQYXRoKHQpe3JldHVybiBuZXcgVVJMKHQsT0QuZ2V0SHJlZigpKS5wYXRobmFtZX1nZXRGdWxsUGF0aEZyb21Sb3V0ZSh0LGUpe2NvbnN0IG49dGhpcy5nZXRSZXNvbHZlZFBhdGgodC5wYXRobmFtZSk7bGV0IG89IiI7dC5xdWVyeVBhcmFtcy5sZW5ndGgmJihvPSI/IisoZnVuY3Rpb24gaSh0KXtjb25zdCBlPW5ldyBVUkxTZWFyY2hQYXJhbXM7Zm9yKGNvbnN0e2tleTpuLHZhbHVlOm99b2YgdCllLmFwcGVuZChuLG8pO3JldHVybiBlfSkodC5xdWVyeVBhcmFtcykudG9TdHJpbmcoKSk7cmV0dXJuYCR7bn0ke299JHtlP3RoaXMuZ2V0SGFzaCgpOiIifWB9fVBELsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxQRCl9LFBELsm1cHJvdj1Tbih7dG9rZW46UEQsZmFjdG9yeTpQRC7JtWZhY30pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoUEQsW3t0eXBlOlVtfV0sbnVsbCxudWxsKTtjbGFzcyB3RHtjb25zdHJ1Y3Rvcih0KXt0aGlzLmFwcFJvb3Q9dGhpcy5nZXRBcHBSb290RnJvbU1ldGFFbGVtZW50KHQpfWdldEFwcFJvb3RGcm9tTWV0YUVsZW1lbnQodCl7Y29uc3QgZT1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdoZWFkIG1ldGFbbmFtZT0idGItcmVsYXRpdmUtcm9vdCJdJyk7aWYoIWUpcmV0dXJuIi8iO2NvbnN0e3BhdGhuYW1lOm59PW5ldyBVUkwoZS5jb250ZW50LHQuZ2V0SHJlZigpKTtyZXR1cm4gbi5yZXBsYWNlKC9cLyokLywiLyIpfWdldEFic1BhdGhuYW1lV2l0aEFwcFJvb3QodCl7cmV0dXJuIHRoaXMuYXBwUm9vdC5zbGljZSgwLC0xKSt0fWdldEFwcFJvb3RsZXNzUGF0aG5hbWUodCl7cmV0dXJuIHQuc3RhcnRzV2l0aCh0aGlzLmFwcFJvb3QpPyIvIit0LnNsaWNlKHRoaXMuYXBwUm9vdC5sZW5ndGgpOnR9fXdELsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHx3RCkoVHIoUEQpKX0sd0QuybVwcm92PVNuKHt0b2tlbjp3RCxmYWN0b3J5OndELsm1ZmFjfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYih3RCxbe3R5cGU6VW19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6UER9XX0pLG51bGwpO2NsYXNzIGtEIGV4dGVuZHMgd0R7Z2V0QXBwUm9vdCgpe3JldHVybiB0aGlzLmFwcFJvb3R9c2V0QXBwUm9vdCh0KXt0aGlzLmFwcFJvb3Q9dH19a0QuybVmYWM9KGZ1bmN0aW9uKCl7bGV0IHQ7cmV0dXJuIGZ1bmN0aW9uIGUobil7cmV0dXJuKHR8fCh0PVVhKGtEKSkpKG58fGtEKX19KSgpLGtELsm1cHJvdj1Tbih7dG9rZW46a0QsZmFjdG9yeTprRC7JtWZhY30pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoa0QsW3t0eXBlOlVtfV0sbnVsbCxudWxsKTtjbGFzcyBTRHt9U0QuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFNEKX0sU0QuybVtb2Q9Zm8oe3R5cGU6U0R9KSxTRC7JtWluaj1Ebih7cHJvdmlkZXJzOltQRF19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKFNELFt7dHlwZTpMXyxhcmdzOlt7cHJvdmlkZXJzOltQRF19XX1dLG51bGwsbnVsbCk7Y2xhc3MgRER7fURELsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxERCl9LERELsm1bW9kPWZvKHt0eXBlOkREfSksREQuybVpbmo9RG4oe3Byb3ZpZGVyczpbd0RdLGltcG9ydHM6W1tTRF1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihERCxbe3R5cGU6TF8sYXJnczpbe2ltcG9ydHM6W1NEXSxwcm92aWRlcnM6W3dEXX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnVvKERELHtpbXBvcnRzOltTRF19KTtjb25zdCBSRD1uZXcgZXIoIltBcHAgUm91dGluZ10gRGlydHkgVXBkYXRlcyIpO2NsYXNzIEVEe2NvbnN0cnVjdG9yKHQpe3RoaXMuZGlydHlVcGRhdGVzU2VsZWN0b3JGYWN0b3JpZXM9dH1nZXREaXJ0eVVwZGF0ZXNTZWxlY3RvcnMoKXt2YXIgdDtyZXR1cm4gbnVsbCE9PSh0PXRoaXMuZGlydHlVcGRhdGVzU2VsZWN0b3JGYWN0b3JpZXMpJiZ2b2lkIDAhPT10P3Q6W119c3RhdGljIHJlZ2lzdGVyRGlydHlVcGRhdGVzKHQpe3JldHVybntuZ01vZHVsZTpFRCxwcm92aWRlcnM6W3twcm92aWRlOlJELG11bHRpOiEwLHVzZUZhY3Rvcnk6dH1dfX19RUQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEVEKShUcihSRCw4KSl9LEVELsm1bW9kPWZvKHt0eXBlOkVEfSksRUQuybVpbmo9RG4oe30pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoRUQsW3t0eXBlOkxffV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOkFycmF5LGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltSRF19XX1dfSksbnVsbCk7Y29uc3QgQUQ9ImZlYXR1cmUiLFREPV9TKEFEKSxORD1iUyhURCwodD0+dC5pc0ZlYXR1cmVGbGFnc0xvYWRlZCkpLHpEPWJTKFRELCh0PT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5kZWZhdWx0RmxhZ3MpLHQuZmxhZ092ZXJyaWRlcykpKSxJRD1iUyhURCwodD0+dC5mbGFnT3ZlcnJpZGVzfHx7fSkpLEhEPWJTKHpELCh0PT50LmlzQXV0b0RhcmtNb2RlQWxsb3dlZCkpLEZEPWJTKHpELCh0PT5udWxsIT09dC5lbmFibGVEYXJrTW9kZU92ZXJyaWRlP3QuZW5hYmxlRGFya01vZGVPdmVycmlkZTp0LmRlZmF1bHRFbmFibGVEYXJrTW9kZSkpLExEPWJTKHpELCh0PT50LmVuYWJsZURhcmtNb2RlT3ZlcnJpZGUpKSxCRD1iUyh6RCwodD0+dC5lbmFibGVkRXhwZXJpbWVudGFsUGx1Z2lucykpLFZEPWJTKHpELCh0PT50LmluQ29sYWIpKSxqRD1iUyh6RCwodD0+dC5lbmFibGVkQ29sb3JHcm91cCkpLFVEPWJTKHpELCh0PT50LmVuYWJsZWRDb2xvckdyb3VwQnlSZWdleCkpLFdEPWJTKHpELCh0PT50Lm1ldHJpY3NJbWFnZVN1cHBvcnRFbmFibGVkKSksR0Q9YlMoekQsKHQ9PnQuZW5hYmxlZExpbmtlZFRpbWUpKSxZRD1iUyh6RCwodD0+dC5lbmFibGVUaW1lU2VyaWVzUHJvbW90aW9uKSkscUQ9YlMoekQsKHQ9PnQuZW5hYmxlZENhcmRXaWR0aFNldHRpbmcpKSxaRD1iUyh6RCwodD0+dC5lbmFibGVkVGltZU5hbWVzcGFjZWRTdGF0ZSkpLFhEPV9rKCJbQXBwIFJvdXRpbmddIERpc2NhcmRpbmcgVW5zYXZlZCBVcGRhdGVzIiksS0Q9X2soIltBcHAgUm91dGluZ10gU3RhdGUgUmVoeWRyYXRlZCBGcm9tIFVybCIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLEpEPV9rKCJbQXBwIFJvdXRpbmddIFJvdXRlIENvbmZpZyBMb2FkZWQiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSxRRD1faygiW0FwcCBSb3V0aW5nXSBJbiBBcHAgTmF2aWdhdGlvbiBSZXF1ZXN0ZWQiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSwkRD1faygiW0FwcCBSb3V0aW5nXSBJbiBBcHAgTmF2aWdhdGluZyIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLHRSPV9rKCJbQXBwIFJvdXRpbmddIEluIEFwcCBOYXZpZ2F0ZWQiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSxlUj1uZXcgZXIoIltBcHAgUm91dGluZ10gUHJvZ3JhbW1hdGljYWwgTmF2aWdhdGlvbiBQcm92aWRlciIpO2NsYXNzIG5Se2NvbnN0cnVjdG9yKHQpe3RoaXMucHJvdmlkZXJzPW5ldyBNYXA7Zm9yKGNvbnN0IGUgb2YgdHx8W10pe2lmKHRoaXMucHJvdmlkZXJzLmhhcyhlLmFjdGlvbkNyZWF0b3IudHlwZSkpdGhyb3cgbmV3IFJhbmdlRXJyb3IoYCIke2UuYWN0aW9uQ3JlYXRvci50eXBlfSIgaXMgYWxyZWFkeSByZWdpc3RlcmVkIGZvciBuYXYuIE11bHRpcGxlIG5hdmlnYXRpb25zIG9uIHNhbWUga2ljayBpcyBub3QgYWxsb3dlZC5gKTt0aGlzLnByb3ZpZGVycy5zZXQoZS5hY3Rpb25DcmVhdG9yLnR5cGUsZS5sYW1iZGEpfX1nZXROYXZpZ2F0aW9uKHQpe2NvbnN0IGU9dGhpcy5wcm92aWRlcnMuZ2V0KHQudHlwZSk7cmV0dXJuIGU/ZSh0KTpudWxsfXN0YXRpYyByZWdpc3RlclByb2dyYW1tYXRpY2FsTmF2aWdhdGlvbih0KXtyZXR1cm57bmdNb2R1bGU6blIscHJvdmlkZXJzOlt7cHJvdmlkZTplUixtdWx0aTohMCx1c2VGYWN0b3J5OnR9XX19fWZ1bmN0aW9uIG9SKHQpe3JldHVybiBudWxsIT10LnJvdXRlS2luZH1mdW5jdGlvbiBpUih0KXtyZXR1cm4gZFIodCkubWFwKCh0PT57Y29uc3QgZT10LnN0YXJ0c1dpdGgoIjoiKTtyZXR1cm4gZT97cGF0aFBhcnQ6dCxpc1BhcmFtOiEwLHBhcmFtTmFtZTp0LnNsaWNlKDEpfTp7cGF0aFBhcnQ6dCxpc1BhcmFtOmV9fSkpfW5SLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxuUikoVHIoZVIsOCkpfSxuUi7JtW1vZD1mbyh7dHlwZTpuUn0pLG5SLsm1aW5qPURuKHt9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKG5SLFt7dHlwZTpMXyxhcmdzOlt7fV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltlUl19XX1dfSksbnVsbCk7Y2xhc3MgYVJ7Y29uc3RydWN0b3IodCl7dGhpcy52YWxpZGF0ZUNvbmZpZyh0KSx0aGlzLnBhdGhGcmFnbWVudHM9aVIodC5wYXRoKSx0aGlzLnBhdGhNYXRjaGVycz10aGlzLmdldFBhdGhNYXRjaGVycyh0aGlzLnBhdGhGcmFnbWVudHMpfXN0YXRpYyBnZXRNYXRjaGVyKHQpe3JldHVybiBvUih0KT9uZXcgclIodCk6KGZ1bmN0aW9uIGUodCl7cmV0dXJuIHZvaWQgMCE9PXQucmVkaXJlY3Rpb25QYXRofSkodCk/bmV3IHNSKHQpOm5ldyBsUih0KX12YWxpZGF0ZUNvbmZpZyh7cGF0aDp0fSl7aWYoIXQuc3RhcnRzV2l0aCgiLyIpKXRocm93IG5ldyBSYW5nZUVycm9yKGBjb25maWcucGF0aCBzaG91bGQgc3RhcnQgd2l0aCAnLycuICR7dH1gKTtsZXQgZT0wO2Zvcig7KGU9dC5pbmRleE9mKCI6IixlKzEpKT49MDspe2lmKCIvIiE9PXRbZS0xXSl0aHJvdyBuZXcgUmFuZ2VFcnJvcihgY29uZmlnLnBhdGggcGFyYW1ldGVyIHNob3VsZCBjb21lIGFmdGVyICcvJy4gJHt0fWApO2lmKHZvaWQgMD09PXRbZSsxXXx8Ii8iPT09dFtlKzFdKXRocm93IG5ldyBSYW5nZUVycm9yKGBjb25maWcucGF0aCBwYXJhbWV0ZXIgc2hvdWxkIGhhdmUgbm9uLWVtcHR5IG5hbWUuICR7dH1gKX19Z2V0UGF0aE1hdGNoZXJzKHQpe3JldHVybiB0Lm1hcCgodD0+e2NvbnN0e3BhdGhQYXJ0OmV9PXQ7cmV0dXJuIHQuaXNQYXJhbT9lPT4oe2lzUGFyYW1QYXRoUGFydDohMCxwYXJ0TWF0Y2hlZDohMCxwYXJhbU5hbWU6dC5wYXJhbU5hbWUscGFyYW1WYWx1ZTplfSk6dD0+KHtpc1BhcmFtUGF0aFBhcnQ6ITEscGFydE1hdGNoZWQ6dD09PWV9KX0pKX1tYXRjaCh0KXtsZXQgZT17fTtpZih0aGlzLnBhdGhNYXRjaGVycy5sZW5ndGghPT10Lmxlbmd0aClyZXR1cm57cmVzdWx0OiExfTtsZXQgbj0wO2Zvcihjb25zdCBvIG9mIHRoaXMucGF0aE1hdGNoZXJzKXtjb25zdCBpPW8odFtuKytdKTtpZighaS5wYXJ0TWF0Y2hlZClyZXR1cm57cmVzdWx0OiExfTtpLmlzUGFyYW1QYXRoUGFydCYmKGU9T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGUpLHtbaS5wYXJhbU5hbWVdOmkucGFyYW1WYWx1ZX0pKX1yZXR1cm57cmVzdWx0OiEwLHBhcmFtczplLHBhdGhQYXJ0czp0LGlzUmVkaXJlY3Rpb246ITEscmVkaXJlY3Rpb25RdWVyeVBhcmFtczp2b2lkIDB9fW1hdGNoQnlQYXJhbXModCl7cmV0dXJue3Jlc3VsdDohMCxwYXJhbXM6dCxwYXRoUGFydHM6dGhpcy5yZXByb2plY3RQYXRoQnlQYXJhbXModGhpcy5wYXRoRnJhZ21lbnRzLHQpLGlzUmVkaXJlY3Rpb246ITEscmVkaXJlY3Rpb25RdWVyeVBhcmFtczp2b2lkIDB9fXJlcHJvamVjdFBhdGhCeVBhcmFtcyh0LGUpe2NvbnN0IG49W107Zm9yKGNvbnN0IG8gb2YgdClpZihvLmlzUGFyYW0pe2NvbnN0e3BhcmFtTmFtZTp0fT1vO2lmKCFlLmhhc093blByb3BlcnR5KHQpKXRocm93IG5ldyBSYW5nZUVycm9yKGBGYWlsZWQgdG8gcmVwcm9qZWN0IHBhcmFtZXRlci4gIiR7dH0iIHBhcmFtZXRlciBzaG91bGQgYmUgcHJlc2VudC5gKTtuLnB1c2goZVt0XSl9ZWxzZSBuLnB1c2goby5wYXRoUGFydCk7cmV0dXJuIG59fWNsYXNzIHJSIGV4dGVuZHMgYVJ7Y29uc3RydWN0b3IodCl7c3VwZXIodCksdGhpcy5kZWZpbml0aW9uPXR9fWNsYXNzIHNSIGV4dGVuZHMgYVJ7Y29uc3RydWN0b3IodCl7c3VwZXIodCksdGhpcy5kZWZpbml0aW9uPXQsdGhpcy5yZWRpcmVjdGlvbkZyYWdtZW50cz1pUih0LnJlZGlyZWN0aW9uUGF0aCl9bWF0Y2godCl7Y29uc3QgZT1zdXBlci5tYXRjaCh0KTtpZighZS5yZXN1bHQpcmV0dXJuIGU7Y29uc3Qgbj10aGlzLnJlcHJvamVjdFBhdGhCeVBhcmFtcyh0aGlzLnJlZGlyZWN0aW9uRnJhZ21lbnRzLGUucGFyYW1zKTtyZXR1cm57cmVzdWx0OiEwLHBhcmFtczplLnBhcmFtcyxwYXRoUGFydHM6bixpc1JlZGlyZWN0aW9uOiEwLHJlZGlyZWN0aW9uUXVlcnlQYXJhbXM6dm9pZCAwfX19Y2xhc3MgbFIgZXh0ZW5kcyBhUntjb25zdHJ1Y3Rvcih0KXtzdXBlcih0KSx0aGlzLmRlZmluaXRpb249dH1tYXRjaCh0KXtjb25zdCBlPXN1cGVyLm1hdGNoKHQpO2lmKCFlLnJlc3VsdClyZXR1cm4gZTtjb25zdHtwYXRoUGFydHM6bixxdWVyeVBhcmFtczpvfT10aGlzLmRlZmluaXRpb24ucmVkaXJlY3Rvcih0KTtyZXR1cm57cmVzdWx0OiEwLHBhcmFtczplLnBhcmFtcyxwYXRoUGFydHM6bixpc1JlZGlyZWN0aW9uOiEwLHJlZGlyZWN0aW9uUXVlcnlQYXJhbXM6b319fWNsYXNzIGNSe2NvbnN0cnVjdG9yKHQsZT0zKXtpZih0aGlzLm1heFJlZGlyZWN0aW9uPWUsZTwwKXRocm93IG5ldyBSYW5nZUVycm9yKCJtYXhSZWRpcmVjdGlvbiBoYXMgdG8gYmUgbm9uLW5lZ2F0aXZlIG51bWJlciIpO3RoaXMudmFsaWRhdGVSb3V0ZUNvbmZpZ3ModCksdGhpcy5kZWZhdWx0Um91dGVDb25maWc9bnVsbCx0aGlzLnJvdXRlS2luZFRvQ29uY3JldGVDb25maWdNYXRjaGVycz1uZXcgTWFwLHRoaXMuY29uZmlnTWF0Y2hlcnM9W107Zm9yKGNvbnN0IGUgb2YgdCl7Y29uc3QgdD1hUi5nZXRNYXRjaGVyKGUpO3RoaXMuY29uZmlnTWF0Y2hlcnMucHVzaCh0KSx0IGluc3RhbmNlb2YgclImJih0aGlzLnJvdXRlS2luZFRvQ29uY3JldGVDb25maWdNYXRjaGVycy5zZXQodC5kZWZpbml0aW9uLnJvdXRlS2luZCx0KSx0LmRlZmluaXRpb24uZGVmYXVsdFJvdXRlJiYodGhpcy5kZWZhdWx0Um91dGVDb25maWc9dCkpfX12YWxpZGF0ZVJvdXRlQ29uZmlncyh0KXtjb25zdCBlPXQuZmlsdGVyKG9SKSxuPWUuZmlsdGVyKCh0PT50LmRlZmF1bHRSb3V0ZSkpO2lmKG4ubGVuZ3RoPjEpe2NvbnN0IHQ9bi5tYXAoKCh7cGF0aDp0fSk9PnQpKS5qb2luKCIsICIpO3Rocm93IG5ldyBSYW5nZUVycm9yKGBUaGVyZSBhcmUgbW9yZSB0aGFuIG9uZSBkZWZhdWx0Um91dGVzLiAke3R9YCl9aWYoMT09PW4ubGVuZ3RoKXtjb25zdHtwYXRoOnR9PW5bMF07aWYoQm9vbGVhbihpUih0KS5maW5kKCgoe2lzUGFyYW06dH0pPT50KSkpKXRocm93IG5ldyBSYW5nZUVycm9yKGBBIGRlZmF1bHRSb3V0ZSBjYW5ub3QgaGF2ZSBhbnkgcGFyYW1zLiAke3R9YCl9Y29uc3Qgbz1uZXcgU2V0O2Zvcihjb25zdHtyb3V0ZUtpbmQ6dH1vZiBlKXtpZihvLmhhcyh0KSl0aHJvdyBuZXcgUmFuZ2VFcnJvcihgTXVsdGlwbGUgcm91dGUgY29uZmlndXJhdGlvbiBmb3Iga2luZDogJHt0fS4gQ29uZmlndXJhdGlvbnMgc2hvdWxkIGhhdmUgdW5pcXVlIHJvdXRlS2luZHNgKTtvLmFkZCh0KX19bWF0Y2godCl7dmFyIGU7aWYoIXQucGF0aG5hbWUuc3RhcnRzV2l0aCgiLyIpKXRocm93IG5ldyBSYW5nZUVycm9yKCdOYXZpZ2F0aW9uIGhhcyB0byBtYWRlIHdpdGggcGF0aG5hbWUgdGhhdCBzdGFydHMgd2l0aCAiLyInKTtsZXQgbixvPWRSKHQucGF0aG5hbWUpLGk9MCxhPSExO2Zvcig7Oyl7bGV0IHQ9ITE7Zm9yKGNvbnN0IGUgb2YgdGhpcy5jb25maWdNYXRjaGVycyl7Y29uc3QgaT1lLm1hdGNoKG8pO2lmKGkucmVzdWx0KXt0PSEwO2NvbnN0e3BhcmFtczpyLHBhdGhQYXJ0czpzLGlzUmVkaXJlY3Rpb246bH09aTtpZihsKXtvPXMsYT0hMCxuPWkucmVkaXJlY3Rpb25RdWVyeVBhcmFtczticmVha31pZighKGUgaW5zdGFuY2VvZiByUikpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIk5vIGNvbmNyZXRlIHJvdXRlIGRlZmluaXRpb24gYG1hdGNoYCByZXR1cm4gcmVkaXJlY3Rpb24iKTtjb25zdHtkZWZpbml0aW9uOmN9PWUsZD17cm91dGVLaW5kOmMucm91dGVLaW5kLHBhcmFtczpyLHBhdGhuYW1lOnBSKHMpLGRlZXBMaW5rUHJvdmlkZXI6Yy5kZWVwTGlua1Byb3ZpZGVyfHxudWxsfTtyZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGQpLGE/e29yaWdpbmF0ZUZyb21SZWRpcmVjdGlvbjohMCxyZWRpcmVjdGlvbk9ubHlRdWVyeVBhcmFtczpufTp7b3JpZ2luYXRlRnJvbVJlZGlyZWN0aW9uOiExfSl9fWlmKGEmJmkrKywhdHx8aT50aGlzLm1heFJlZGlyZWN0aW9uKWJyZWFrfWlmKGk+dGhpcy5tYXhSZWRpcmVjdGlvbil0aHJvdyBuZXcgRXJyb3IoYFBvdGVudGlhbCByZWRpcmVjdGlvbiBsb29wIChyZWRpcmVjdGluZyBtb3JlIHRoYW4gJHt0aGlzLm1heFJlZGlyZWN0aW9ufSB0aW1lcy4gUGxlYXNlIGRvIG5vdCBoYXZlIGN5Y2xlcyBpbiB0aGUgcm91dGVzLmApO2lmKHRoaXMuZGVmYXVsdFJvdXRlQ29uZmlnKXtjb25zdHtkZWZpbml0aW9uOnR9PXRoaXMuZGVmYXVsdFJvdXRlQ29uZmlnO3JldHVybntyb3V0ZUtpbmQ6dC5yb3V0ZUtpbmQsZGVlcExpbmtQcm92aWRlcjpudWxsIT09KGU9dC5kZWVwTGlua1Byb3ZpZGVyKSYmdm9pZCAwIT09ZT9lOm51bGwscGF0aG5hbWU6dC5wYXRoLHBhcmFtczp7fSxvcmlnaW5hdGVGcm9tUmVkaXJlY3Rpb246ITAscmVkaXJlY3Rpb25Pbmx5UXVlcnlQYXJhbXM6dm9pZCAwfX1yZXR1cm4gbnVsbH1tYXRjaEJ5Um91dGVLaW5kKHQsZSl7Y29uc3Qgbj10aGlzLnJvdXRlS2luZFRvQ29uY3JldGVDb25maWdNYXRjaGVycy5nZXQodCk7aWYoIW4pdGhyb3cgbmV3IFJhbmdlRXJyb3IoYFJlcXVpcmVzIGNvbmZpZ3VyYXRpb24gZm9yIHJvdXRlS2luZDogJHt0fWApO3JldHVybntyb3V0ZUtpbmQ6dCxwYXJhbXM6ZSxwYXRobmFtZTpwUihuLm1hdGNoQnlQYXJhbXMoZSkucGF0aFBhcnRzKSxkZWVwTGlua1Byb3ZpZGVyOm4uZGVmaW5pdGlvbi5kZWVwTGlua1Byb3ZpZGVyfHxudWxsLG9yaWdpbmF0ZUZyb21SZWRpcmVjdGlvbjohMX19fWZ1bmN0aW9uIGRSKHQpe3JldHVybiB0LnNwbGl0KCIvIikuc2xpY2UoMSl9ZnVuY3Rpb24gcFIodCl7cmV0dXJuIi8iK3Quam9pbigiLyIpfWNvbnN0IG1SPW5ldyBlcigiW0FwcCBSb3V0aW5nXSBSb3V0ZSBDb25maWciKTtjbGFzcyBmUntjb25zdHJ1Y3Rvcih0KXtpZih0aGlzLnJvdXRlS2luZFRvTmdDb21wb25lbnQ9bmV3IE1hcCwhdClyZXR1cm4gdm9pZCh0aGlzLnJvdXRlQ29uZmlncz1uZXcgY1IoW10pKTtjb25zdCBlPVtdO2Zvcihjb25zdCBuIG9mIHQpZm9yKGNvbnN0IHQgb2YgbillLnB1c2godCk7dGhpcy5yb3V0ZUNvbmZpZ3M9bmV3IGNSKGUpLGUuZm9yRWFjaCgodD0+e29SKHQpJiZ0aGlzLnJvdXRlS2luZFRvTmdDb21wb25lbnQuc2V0KHQucm91dGVLaW5kLHQubmdDb21wb25lbnQpfSkpfWdldFJlZ2lzdGVyZWRSb3V0ZUtpbmRzKCl7cmV0dXJuIHRoaXMucm91dGVLaW5kVG9OZ0NvbXBvbmVudC5rZXlzKCl9Z2V0Um91dGVDb25maWdzKCl7cmV0dXJuIHRoaXMucm91dGVDb25maWdzfWdldE5nQ29tcG9uZW50QnlSb3V0ZUtpbmQodCl7cmV0dXJuIHRoaXMucm91dGVLaW5kVG9OZ0NvbXBvbmVudC5nZXQodCl8fG51bGx9c3RhdGljIHJlZ2lzdGVyUm91dGVzKHQpe3JldHVybntuZ01vZHVsZTpmUixwcm92aWRlcnM6W3twcm92aWRlOm1SLG11bHRpOiEwLHVzZUZhY3Rvcnk6dH1dfX19ZlIuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGZSKShUcihtUiw4KSl9LGZSLsm1bW9kPWZvKHt0eXBlOmZSfSksZlIuybVpbmo9RG4oe30pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoZlIsW3t0eXBlOkxfLGFyZ3M6W3t9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W21SXX1dfV19KSxudWxsKTtjb25zdCB1Uj0iYXBwX3JvdXRpbmciLGdSPV9TKHVSKSxoUj1iUyhnUiwodD0+dC5hY3RpdmVSb3V0ZSkpLGJSPWJTKGdSLCh0PT50Lm5leHRSb3V0ZSkpLHlSPWJTKGdSLCh0PT50LmFjdGl2ZU5hbWVzcGFjZUlkKSksX1I9YlMoZ1IsKHQ9PnQua25vd25OYW1lc3BhY2VJZHMpKSxDUj1iUyhnUiwodD0+dC5yZWdpc3RlcmVkUm91dGVLZXlzKSksTVI9YlMoaFIsKHQ9PnQ/dC5yb3V0ZUtpbmQ6X0QuTk9UX1NFVCkpLHZSPWJTKGhSLCh0PT50P3QucGFyYW1zOnt9KSkseFI9YlMoTVIsdlIsKCh0LGUpPT52RCh0LGUpKSk7YlMoTVIsdlIsKCh0LGUpPT57aWYodCE9PV9ELkNPTVBBUkVfRVhQRVJJTUVOVClyZXR1cm57fTtjb25zdCBuPShmdW5jdGlvbiBvKHQpe2NvbnN0IGU9bmV3IE1hcCxuPU1EKHQuZXhwZXJpbWVudElkcyk7Zm9yKGNvbnN0e2lkOnQsbmFtZTpvfW9mIG4pbyYmZS5zZXQodCxvKTtyZXR1cm4gZX0pKGUpO3JldHVybiBPYmplY3QuZnJvbUVudHJpZXMobi5lbnRyaWVzKCkpfSkpO2NvbnN0IE9SPWJTKE1SLHZSLCgodCxlKT0+e2lmKHQhPT1fRC5DT01QQVJFX0VYUEVSSU1FTlQpcmV0dXJue307Y29uc3Qgbj0oZnVuY3Rpb24gbyh0KXtjb25zdCBlPW5ldyBNYXAsbj1NRCh0LmV4cGVyaW1lbnRJZHMpO2xldCBvPTA7Zm9yKGNvbnN0e2lkOnQsbmFtZTppfW9mIG4pbysrLCFlLmhhcyh0KSYmaSYmZS5zZXQodCx7YWxpYXNUZXh0OmksYWxpYXNOdW1iZXI6b30pO3JldHVybiBlfSkoZSk7cmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyhuLmVudHJpZXMoKSl9KSksUFI9X2soIltBcHAgUm91dGluZ10gRWZmZWN0cyBJbml0Iik7dmFyIHdSOyEoZnVuY3Rpb24odCl7dFt0LlVOQ0hBTkdFRD0wXT0iVU5DSEFOR0VEIix0W3QuTkVXPTFdPSJORVciLHRbdC5GUk9NX0hJU1RPUlk9Ml09IkZST01fSElTVE9SWSJ9KSh3Unx8KHdSPXt9KSk7Y2xhc3Mga1J7Y29uc3RydWN0b3IodCxlLG4sbyxpLGEscil7dGhpcy5hY3Rpb25zJD10LHRoaXMuc3RvcmU9ZSx0aGlzLmxvY2F0aW9uPW4sdGhpcy5kaXJ0eVVwZGF0ZXNSZWdpc3RyeT1vLHRoaXMucmVnaXN0cnk9aSx0aGlzLnByb2dyYW1tYXRpY2FsTmF2TW9kdWxlPWEsdGhpcy5hcHBSb290UHJvdmlkZXI9cix0aGlzLm9uTmF2aWdhdGlvblJlcXVlc3RlZCQ9dGhpcy5hY3Rpb25zJC5waXBlKCRTKFFEKSxWdCgodD0+e3ZhciBlO3JldHVybntwYXRobmFtZTp0LnBhdGhuYW1lLnN0YXJ0c1dpdGgoIi8iKT90aGlzLmFwcFJvb3RQcm92aWRlci5nZXRBYnNQYXRobmFtZVdpdGhBcHBSb290KHQucGF0aG5hbWUpOnRoaXMubG9jYXRpb24uZ2V0UmVzb2x2ZWRQYXRoKHQucGF0aG5hbWUpLG9wdGlvbnM6e2Jyb3dzZXJJbml0aWF0ZWQ6ITEscmVwbGFjZVN0YXRlOm51bGwhPT0oZT10LnJlcGxhY2VTdGF0ZSkmJnZvaWQgMCE9PWUmJmUsbmFtZXNwYWNlVXBkYXRlOntvcHRpb246dC5yZXNldE5hbWVzcGFjZWRTdGF0ZT93Ui5ORVc6d1IuVU5DSEFOR0VEfX19fSkpKSx0aGlzLmJvb3RzdHJhcFJlZHVjZXJzJD1XUygoKCk9PnRoaXMuYWN0aW9ucyQucGlwZSgkUyhQUiksVnQoKCgpPT5KRCh7cm91dGVLaW5kczpuZXcgU2V0KHRoaXMucmVnaXN0cnkuZ2V0UmVnaXN0ZXJlZFJvdXRlS2luZHMoKSl9KSkpKSkpLHRoaXMub25Jbml0JD10aGlzLmFjdGlvbnMkLnBpcGUoJFMoUFIpKS5waXBlKFBlKDApLFZ0KCgoKT0+e3ZhciB0O2NvbnN0IGU9bnVsbD09PSh0PXRoaXMubG9jYXRpb24uZ2V0SGlzdG9yeVN0YXRlKCkpfHx2b2lkIDA9PT10P3ZvaWQgMDp0Lm5hbWVzcGFjZUlkLG49dm9pZCAwPT09ZT97b3B0aW9uOndSLk5FV306e29wdGlvbjp3Ui5GUk9NX0hJU1RPUlksbmFtZXNwYWNlSWQ6ZX07cmV0dXJue3BhdGhuYW1lOnRoaXMubG9jYXRpb24uZ2V0UGF0aCgpLG9wdGlvbnM6e2Jyb3dzZXJJbml0aWF0ZWQ6ITAscmVwbGFjZVN0YXRlOiEwLG5hbWVzcGFjZVVwZGF0ZTpufX19KSkpLHRoaXMub25Qb3BTdGF0ZSQ9dGhpcy5sb2NhdGlvbi5vblBvcFN0YXRlKCkucGlwZShWdCgodD0+e3ZhciBlO3JldHVybntwYXRobmFtZTp0LnBhdGhuYW1lLG9wdGlvbnM6e2Jyb3dzZXJJbml0aWF0ZWQ6ITAscmVwbGFjZVN0YXRlOiEwLG5hbWVzcGFjZVVwZGF0ZTp7b3B0aW9uOndSLkZST01fSElTVE9SWSxuYW1lc3BhY2VJZDpudWxsPT09KGU9dC5zdGF0ZSl8fHZvaWQgMD09PWU/dm9pZCAwOmUubmFtZXNwYWNlSWR9fX19KSkpLHRoaXMudXNlckluaXROYXZSb3V0ZSQ9cGUodGhpcy5vbk5hdmlnYXRpb25SZXF1ZXN0ZWQkLHRoaXMub25Jbml0JCx0aGlzLm9uUG9wU3RhdGUkKS5waXBlKFZ0KCh0PT57aWYoIXQucGF0aG5hbWUuc3RhcnRzV2l0aCgiLyIpKXRocm93IG5ldyBFcnJvcihgW0FwcCByb3V0aW5nXSBwYXRobmFtZSBtdXN0IHN0YXJ0IHdpdGggJy8nLiBHb3Q6ICR7dC5wYXRobmFtZX1gKTtyZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtwYXRobmFtZTp0aGlzLmFwcFJvb3RQcm92aWRlci5nZXRBcHBSb290bGVzc1BhdGhuYW1lKHQucGF0aG5hbWUpfSl9KSksVnQoKHQ9Pih7cm91dGVNYXRjaDp0aGlzLnJvdXRlQ29uZmlncy5tYXRjaCh0KSxvcHRpb25zOnQub3B0aW9uc30pKSkpLHRoaXMucHJvZ3JhbW1hdGljYWxOYXZSb3V0ZSQ9dGhpcy5hY3Rpb25zJC5waXBlKFZ0KCh0PT50aGlzLnByb2dyYW1tYXRpY2FsTmF2TW9kdWxlLmdldE5hdmlnYXRpb24odCkpKSx1ZSgodD0+bnVsbCE9PXQpKSxWdCgodD0+e2NvbnN0IGU9dCxuPWUucm91dGVLaW5kO2xldCBvO3N3aXRjaChlLnJvdXRlS2luZCl7Y2FzZSBfRC5DT01QQVJFX0VYUEVSSU1FTlQ6bz17ZXhwZXJpbWVudElkczooaT1lLnJvdXRlUGFyYW1zLmFsaWFzQW5kRXhwZXJpbWVudElkcyxpLm1hcCgoKHthbGlhczp0LGlkOmV9KT0+YCR7dH06JHtlfWApKS5qb2luKCIsIikpfTticmVhaztkZWZhdWx0Om89ZS5yb3V0ZVBhcmFtc312YXIgaTtyZXR1cm57cm91dGVLaW5kOm4scm91dGVQYXJhbXM6b319KSksVnQoKCh7cm91dGVLaW5kOnQscm91dGVQYXJhbXM6ZX0pPT4oe3JvdXRlTWF0Y2g6dGhpcy5yb3V0ZUNvbmZpZ3M/dGhpcy5yb3V0ZUNvbmZpZ3MubWF0Y2hCeVJvdXRlS2luZCh0LGUpOm51bGwsb3B0aW9uczp7cmVwbGFjZVN0YXRlOiExLGJyb3dzZXJJbml0aWF0ZWQ6ITEsbmFtZXNwYWNlVXBkYXRlOntvcHRpb246d1IuVU5DSEFOR0VEfX19KSkpKSx0aGlzLnZhbGlkYXRlZFJvdXRlTWF0Y2gkPXBlKHRoaXMudXNlckluaXROYXZSb3V0ZSQsdGhpcy5wcm9ncmFtbWF0aWNhbE5hdlJvdXRlJCkucGlwZSh1ZSgoKHtyb3V0ZU1hdGNoOnR9KT0+Qm9vbGVhbih0KSkpLFZ0KCgoe3JvdXRlTWF0Y2g6dCxvcHRpb25zOmV9KT0+KHtyb3V0ZU1hdGNoOnQsb3B0aW9uczplfSkpKSksdGhpcy5uYXZpZ2F0ZSQ9V1MoKCgpPT50aGlzLnZhbGlkYXRlZFJvdXRlTWF0Y2gkLnBpcGUocWUodGhpcy5zdG9yZS5zZWxlY3QoaFIpKSwkdCgoKFt0LGVdKT0+e2NvbnN0IG49bnVsbCE9PWUmJnhEKGUsdC5yb3V0ZU1hdGNoKSxvPXRoaXMuZGlydHlVcGRhdGVzUmVnaXN0cnkuZ2V0RGlydHlVcGRhdGVzU2VsZWN0b3JzKCk7cmV0dXJuIG58fCFvLmxlbmd0aD96dCh0KTppZSh0aGlzLmRpcnR5VXBkYXRlc1JlZ2lzdHJ5LmdldERpcnR5VXBkYXRlc1NlbGVjdG9ycygpLm1hcCgodD0+dGhpcy5zdG9yZS5zZWxlY3QodCkucGlwZSh2ZSgxKSkpKSkucGlwZShWdCgodD0+dm9pZCAwIT09dFswXS5leHBlcmltZW50SWRzJiZ0WzBdLmV4cGVyaW1lbnRJZHMubGVuZ3RoPjApKSx1ZSgodD0+e2lmKHQpe2NvbnN0IHQ9d2luZG93LmNvbmZpcm0oIllvdSBoYXZlIHVuc2F2ZWQgZWRpdHMsIGFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBkaXNjYXJkIHRoZW0/Iik7cmV0dXJuIHQmJnRoaXMuc3RvcmUuZGlzcGF0Y2goWEQoKSksdH1yZXR1cm4hMH0pKSxWdCgoKCk9PnQpKSl9KSkscWUodGhpcy5zdG9yZS5zZWxlY3QoX1IpKSxXZSgoKFt7cm91dGVNYXRjaDp0LG9wdGlvbnM6ZX0sbl0pPT57Y29uc3Qgbz1lLm5hbWVzcGFjZVVwZGF0ZS5vcHRpb249PT13Ui5GUk9NX0hJU1RPUlkmJm4uaGFzKGUubmFtZXNwYWNlVXBkYXRlLm5hbWVzcGFjZUlkKTtpZighZS5icm93c2VySW5pdGlhdGVkfHxvfHwhdC5kZWVwTGlua1Byb3ZpZGVyKXJldHVybjtjb25zdCBpPXQub3JpZ2luYXRlRnJvbVJlZGlyZWN0aW9uJiZ0LnJlZGlyZWN0aW9uT25seVF1ZXJ5UGFyYW1zP3QucmVkaXJlY3Rpb25Pbmx5UXVlcnlQYXJhbXM6dGhpcy5sb2NhdGlvbi5nZXRTZWFyY2goKSxhPXQuZGVlcExpbmtQcm92aWRlci5kZXNlcmlhbGl6ZVF1ZXJ5UGFyYW1zKGkpO3RoaXMuc3RvcmUuZGlzcGF0Y2goS0Qoe3JvdXRlS2luZDp0LnJvdXRlS2luZCxwYXJ0aWFsU3RhdGU6YX0pKX0pKSxWZSgoKFt7cm91dGVNYXRjaDp0LG9wdGlvbnM6ZX1dKT0+bnVsbD09PXQuZGVlcExpbmtQcm92aWRlcj96dCh7cm91dGU6e3JvdXRlS2luZDp0LnJvdXRlS2luZCxwYXJhbXM6dC5wYXJhbXMscGF0aG5hbWU6dC5wYXRobmFtZSxxdWVyeVBhcmFtczpbXX0sb3B0aW9uczplfSk6dC5kZWVwTGlua1Byb3ZpZGVyLnNlcmlhbGl6ZVN0YXRlVG9RdWVyeVBhcmFtcyh0aGlzLnN0b3JlKS5waXBlKFZ0KCgobixvKT0+KHtyb3V0ZTp7cm91dGVLaW5kOnQucm91dGVLaW5kLHBhcmFtczp0LnBhcmFtcyxwYXRobmFtZTp0LnBhdGhuYW1lLHF1ZXJ5UGFyYW1zOm59LG9wdGlvbnM6MD09PW8/ZTpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sZSkse3JlcGxhY2VTdGF0ZTohMCxyZXNldE5hbWVzcGFjZWRTdGF0ZTohMX0pfSkpKSkpKSxXZSgoKHtyb3V0ZTp0fSk9Pnt0aGlzLnN0b3JlLmRpc3BhdGNoKCREKHthZnRlcjp0fSkpfSkpLENlKDApKS5waXBlKHFlKHRoaXMuc3RvcmUuc2VsZWN0KGhSKSksVnQoKChbe3JvdXRlOnQsb3B0aW9uczplfSxuXSk9Pih7cHJlc2VydmVIYXNoOm51bGw9PT1ufHxudWxsPT09dHx8eEQobix0KSxyb3V0ZTp0LG9wdGlvbnM6ZX0pKSksV2UoKCh7cHJlc2VydmVIYXNoOnQscm91dGU6ZSxvcHRpb25zOm59KT0+eyEoZnVuY3Rpb24gbyh0LGUpe3JldHVybiB0LnBhdGhuYW1lPT09ZS5wYXRobmFtZSYmdC5xdWVyeVBhcmFtcy5sZW5ndGg9PT1lLnF1ZXJ5UGFyYW1zLmxlbmd0aCYmdC5xdWVyeVBhcmFtcy5ldmVyeSgoKHQsbik9Pntjb25zdCBvPWUucXVlcnlQYXJhbXNbbl07cmV0dXJuIHQua2V5PT09by5rZXkmJnQudmFsdWU9PT1vLnZhbHVlfSkpfSkoZSx7cGF0aG5hbWU6dGhpcy5hcHBSb290UHJvdmlkZXIuZ2V0QXBwUm9vdGxlc3NQYXRobmFtZSh0aGlzLmxvY2F0aW9uLmdldFBhdGgoKSkscXVlcnlQYXJhbXM6dGhpcy5sb2NhdGlvbi5nZXRTZWFyY2goKX0pJiYobi5yZXBsYWNlU3RhdGU/dGhpcy5sb2NhdGlvbi5yZXBsYWNlU3RhdGVVcmwodGhpcy5hcHBSb290UHJvdmlkZXIuZ2V0QWJzUGF0aG5hbWVXaXRoQXBwUm9vdCh0aGlzLmxvY2F0aW9uLmdldEZ1bGxQYXRoRnJvbVJvdXRlKGUsdCkpKTp0aGlzLmxvY2F0aW9uLnB1c2hTdGF0ZVVybCh0aGlzLmFwcFJvb3RQcm92aWRlci5nZXRBYnNQYXRobmFtZVdpdGhBcHBSb290KHRoaXMubG9jYXRpb24uZ2V0RnVsbFBhdGhGcm9tUm91dGUoZSx0KSkpKX0pKSkucGlwZShxZSh0aGlzLnN0b3JlLnNlbGVjdChoUiksdGhpcy5zdG9yZS5zZWxlY3QoeVIpLHRoaXMuc3RvcmUuc2VsZWN0KFpEKSksVnQoKChbe3JvdXRlOnQsb3B0aW9uczplfSxuLG8saV0pPT57Y29uc3QgYT0oZnVuY3Rpb24gcih0LGUsbixvKXtyZXR1cm4gdD9uLm5hbWVzcGFjZVVwZGF0ZS5vcHRpb249PT13Ui5GUk9NX0hJU1RPUlk/bi5uYW1lc3BhY2VVcGRhdGUubmFtZXNwYWNlSWQ6bnVsbD09b3x8bi5uYW1lc3BhY2VVcGRhdGUub3B0aW9uPT09d1IuTkVXP0RhdGUubm93KCkudG9TdHJpbmcoKTpvOihmdW5jdGlvbiBpKHQsZSl7dmFyIG47c3dpdGNoKHQpe2Nhc2UgX0QuQ09NUEFSRV9FWFBFUklNRU5UOmNhc2UgX0QuRVhQRVJJTUVOVDp7Y29uc3Qgbz1udWxsIT09KG49dkQodCxlKSkmJnZvaWQgMCE9PW4/bjpbXTtyZXR1cm4gby5zb3J0KCksYCR7dH0vJHtvLmpvaW4oIiwiKX1gfWNhc2UgX0QuRVhQRVJJTUVOVFM6cmV0dXJuIFN0cmluZyh0KTtjYXNlIF9ELk5PVF9TRVQ6cmV0dXJuIl9fbm90X3NldCI7ZGVmYXVsdDpyZXR1cm4iIn19KShlLnJvdXRlS2luZCxlLnBhcmFtcyl9KShpLHQsZSxvKTtyZXR1cm4gdGhpcy5sb2NhdGlvbi5yZXBsYWNlU3RhdGVEYXRhKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0aGlzLmxvY2F0aW9uLmdldEhpc3RvcnlTdGF0ZSgpKSx7bmFtZXNwYWNlSWQ6YX0pKSx0Uih7YmVmb3JlOm4sYWZ0ZXI6dCxiZWZvcmVOYW1lc3BhY2VJZDpvLGFmdGVyTmFtZXNwYWNlSWQ6YX0pfSkpKSkpLHRoaXMucm91dGVDb25maWdzPWkuZ2V0Um91dGVDb25maWdzKCl9bmdyeE9uSW5pdEVmZmVjdHMoKXtyZXR1cm4gUFIoKX19a1IuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGtSKShUcihRUyksVHIoaVMpLFRyKFBEKSxUcihFRCksVHIoZlIpLFRyKG5SKSxUcih3RCkpfSxrUi7JtXByb3Y9U24oe3Rva2VuOmtSLGZhY3Rvcnk6a1IuybVmYWN9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKGtSLFt7dHlwZTpVbX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpRU30se3R5cGU6aVN9LHt0eXBlOlBEfSx7dHlwZTpFRH0se3R5cGU6ZlJ9LHt0eXBlOm5SfSx7dHlwZTp3RH1dfSksbnVsbCk7Y29uc3QgU1I9VlMoe2FjdGl2ZVJvdXRlOm51bGwsbmV4dFJvdXRlOm51bGwsYWN0aXZlTmFtZXNwYWNlSWQ6bnVsbCxrbm93bk5hbWVzcGFjZUlkczpuZXcgU2V0LHJlZ2lzdGVyZWRSb3V0ZUtleXM6bmV3IFNldH0sQlMoJEQsKCh0LHthZnRlcjplfSk9Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7bmV4dFJvdXRlOmV9KSkpLEJTKHRSLCgodCx7YWZ0ZXI6ZSxhZnRlck5hbWVzcGFjZUlkOm59KT0+e2xldCBvPXQua25vd25OYW1lc3BhY2VJZHM7cmV0dXJuIHQua25vd25OYW1lc3BhY2VJZHMuaGFzKG4pfHwobz1uZXcgU2V0KHQua25vd25OYW1lc3BhY2VJZHMpLG8uYWRkKG4pKSxPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse2FjdGl2ZVJvdXRlOmUsbmV4dFJvdXRlOm51bGwsYWN0aXZlTmFtZXNwYWNlSWQ6bixrbm93bk5hbWVzcGFjZUlkczpvfSl9KSksQlMoSkQsKCh0LHtyb3V0ZUtpbmRzOmV9KT0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtyZWdpc3RlcmVkUm91dGVLZXlzOmV9KSkpKTtmdW5jdGlvbiBEUih0LGUpe3JldHVybiBTUih0LGUpfWNsYXNzIFJSe31SUi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8UlIpfSxSUi7JtW1vZD1mbyh7dHlwZTpSUn0pLFJSLsm1aW5qPURuKHtwcm92aWRlcnM6W0VELG5SXSxpbXBvcnRzOltbZlIsVFMuZm9yRmVhdHVyZSh1UixEUiksaEQuZm9yRmVhdHVyZShba1JdKSxERCxTRF1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihSUixbe3R5cGU6TF8sYXJnczpbe2ltcG9ydHM6W2ZSLFRTLmZvckZlYXR1cmUodVIsRFIpLGhELmZvckZlYXR1cmUoW2tSXSksREQsU0RdLHByb3ZpZGVyczpbRUQsblJdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmdW8oUlIse2ltcG9ydHM6W2ZSLEFTLGdELERELFNEXX0pO2NvbnN0IEVSPSJfX3RhYl9fIjtjbGFzcyBBUntjb25zdHJ1Y3Rvcigpe3RoaXMudGZTdG9yYWdlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRmLXN0b3JhZ2UiKTtkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0Zi1nbG9iYWxzIikudGZfZ2xvYmFscy5zZXRVc2VIYXNoKCEwKSx0aGlzLnRmU3RvcmFnZS50Zl9zdG9yYWdlLm1pZ3JhdGVMZWdhY3lVUkxTY2hlbWUoKX1nZXRTdHJpbmcodCl7cmV0dXJuIHRoaXMudGZTdG9yYWdlLnRmX3N0b3JhZ2UuZ2V0U3RyaW5nKHQpfXNldFN0cmluZyh0LGUsbil7dGhpcy50ZlN0b3JhZ2UudGZfc3RvcmFnZS5zZXRTdHJpbmcodCxlLG4pfWdldFBsdWdpbklkKCl7cmV0dXJuIHRoaXMuZ2V0U3RyaW5nKEVSKX1zZXRQbHVnaW5JZCh0LGUpe3RoaXMuc2V0U3RyaW5nKEVSLHQsZSl9fUFSLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxBUil9LEFSLsm1cHJvdj1Tbih7dG9rZW46QVIsZmFjdG9yeTpBUi7JtWZhY30pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoQVIsW3t0eXBlOlVtfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW119KSxudWxsKTtjbGFzcyBUUnt9Y29uc3QgTlI9bmV3IGVyKCJbUGVyc2lzdGVudCBTZXR0aW5nc10gR2xvYmFsIFNldHRpbmdzIik7Y2xhc3MgelJ7Y29uc3RydWN0b3IodCl7dGhpcy5nbG9iYWxTZXR0aW5nU2VsZWN0b3JzPVtdLHQmJih0aGlzLmdsb2JhbFNldHRpbmdTZWxlY3RvcnM9dC5tYXAoKHQ9PnQoKSkpKX1nZXRHbG9iYWxTZXR0aW5nU2VsZWN0b3JzKCl7dmFyIHQ7cmV0dXJuIG51bGwhPT0odD10aGlzLmdsb2JhbFNldHRpbmdTZWxlY3RvcnMpJiZ2b2lkIDAhPT10P3Q6W119c3RhdGljIGRlZmluZUdsb2JhbFNldHRpbmcodCl7cmV0dXJue25nTW9kdWxlOnpSLHByb3ZpZGVyczpbe3Byb3ZpZGU6TlIsbXVsdGk6ITAsdXNlVmFsdWU6dH1dfX19elIuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHpSKShUcihOUiw4KSl9LHpSLsm1bW9kPWZvKHt0eXBlOnpSfSkselIuybVpbmo9RG4oe30pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoelIsW3t0eXBlOkxffV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOkFycmF5LGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltOUl19XX1dfSksbnVsbCk7Y2xhc3MgSVJ7c2V0SXRlbSh0LGUpe2xvY2FsU3RvcmFnZS5zZXRJdGVtKHQsZSl9Z2V0SXRlbSh0KXtyZXR1cm4gbG9jYWxTdG9yYWdlLmdldEl0ZW0odCl9cmVtb3ZlSXRlbSh0KXtsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSh0KX19SVIuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fElSKX0sSVIuybVwcm92PVNuKHt0b2tlbjpJUixmYWN0b3J5OklSLsm1ZmFjfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihJUixbe3R5cGU6VW19XSxudWxsLG51bGwpO2NsYXNzIEhSe312YXIgRlI7SFIuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEhSKX0sSFIuybVtb2Q9Zm8oe3R5cGU6SFJ9KSxIUi7JtWluaj1Ebih7cHJvdmlkZXJzOltJUl19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKEhSLFt7dHlwZTpMXyxhcmdzOlt7cHJvdmlkZXJzOltJUl19XX1dLG51bGwsbnVsbCksKGZ1bmN0aW9uKHQpe3QuQlJPV1NFUl9ERUZBVUxUPSJicm93c2VyX2RlZmF1bHQiLHQuTElHSFQ9ImxpZ2h0Iix0LkRBUks9ImRhcmsifSkoRlJ8fChGUj17fSkpO2NvbnN0IExSPSJfdGJfZ2xvYmFsX3NldHRpbmdzLnRpbWVzZXJpZXMiLEJSPSJfdGJfZ2xvYmFsX3NldHRpbmdzIixWUj0ibm90aWZpY2F0aW9uTGFzdFJlYWRUaW1lc3RhbXAiO2NsYXNzIGpSe31qUi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8alIpfSxqUi7JtXByb3Y9U24oe3Rva2VuOmpSLGZhY3Rvcnk6alIuybVmYWN9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKGpSLFt7dHlwZTpVbX1dLG51bGwsbnVsbCk7Y2xhc3MgVVJ7fVVSLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxVUil9LFVSLsm1cHJvdj1Tbih7dG9rZW46VVIsZmFjdG9yeTpVUi7JtWZhY30pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoVVIsW3t0eXBlOlVtfV0sbnVsbCxudWxsKTtjbGFzcyBXUiBleHRlbmRzIFVSe3VpVG9CYWNrZW5kKHQpe2NvbnN0IGU9e307cmV0dXJuIHZvaWQgMCE9PXQuaWdub3JlT3V0bGllcnMmJihlLmlnbm9yZU91dGxpZXJzPXQuaWdub3JlT3V0bGllcnMpLHZvaWQgMCE9PXQuc2NhbGFyU21vb3RoaW5nJiYoZS5zY2FsYXJTbW9vdGhpbmc9dC5zY2FsYXJTbW9vdGhpbmcpLHZvaWQgMCE9PXQudG9vbHRpcFNvcnRTdHJpbmcmJihlLnRvb2x0aXBTb3J0PXQudG9vbHRpcFNvcnRTdHJpbmcpLHZvaWQgMCE9PXQuYXV0b1JlbG9hZCYmKGUuYXV0b1JlbG9hZD10LmF1dG9SZWxvYWQpLHZvaWQgMCE9PXQuYXV0b1JlbG9hZFBlcmlvZEluTXMmJihlLmF1dG9SZWxvYWRQZXJpb2RJbk1zPXQuYXV0b1JlbG9hZFBlcmlvZEluTXMpLHZvaWQgMCE9PXQucGFnZVNpemUmJihlLnBhZ2luYXRpb25TaXplPXQucGFnZVNpemUpLHZvaWQgMCE9PXQudGhlbWVPdmVycmlkZSYmKGUudGhlbWU9dC50aGVtZU92ZXJyaWRlKSx2b2lkIDAhPT10Lm5vdGlmaWNhdGlvbkxhc3RSZWFkVGltZUluTXMmJihlLm5vdGlmaWNhdGlvbkxhc3RSZWFkVGltZUluTXM9dC5ub3RpZmljYXRpb25MYXN0UmVhZFRpbWVJbk1zKSx2b2lkIDAhPT10LnNpZGVCYXJXaWR0aEluUGVyY2VudCYmKGUuc2lkZUJhcldpZHRoSW5QZXJjZW50PXQuc2lkZUJhcldpZHRoSW5QZXJjZW50KSx2b2lkIDAhPT10LnRpbWVTZXJpZXNQcm9tb3Rpb25EaXNtaXNzZWQmJihlLnRpbWVTZXJpZXNQcm9tb3Rpb25EaXNtaXNzZWQ9dC50aW1lU2VyaWVzUHJvbW90aW9uRGlzbWlzc2VkKSx2b2lkIDAhPT10LnRpbWVTZXJpZXNTZXR0aW5nc1BhbmVPcGVuZWQmJihlLnRpbWVTZXJpZXNTZXR0aW5nc1BhbmVPcGVuZWQ9dC50aW1lU2VyaWVzU2V0dGluZ3NQYW5lT3BlbmVkKSx2b2lkIDAhPT10LnRpbWVTZXJpZXNDYXJkTWluV2lkdGgmJihlLnRpbWVTZXJpZXNDYXJkTWluV2lkdGg9dC50aW1lU2VyaWVzQ2FyZE1pbldpZHRoKSxlfWJhY2tlbmRUb1VpKHQpe2NvbnN0IGU9e307cmV0dXJuIHQuaGFzT3duUHJvcGVydHkoInNjYWxhclNtb290aGluZyIpJiYibnVtYmVyIj09dHlwZW9mIHQuc2NhbGFyU21vb3RoaW5nJiYoZS5zY2FsYXJTbW9vdGhpbmc9dC5zY2FsYXJTbW9vdGhpbmcpLHQuaGFzT3duUHJvcGVydHkoImlnbm9yZU91dGxpZXJzIikmJiJib29sZWFuIj09dHlwZW9mIHQuaWdub3JlT3V0bGllcnMmJihlLmlnbm9yZU91dGxpZXJzPXQuaWdub3JlT3V0bGllcnMpLHQuaGFzT3duUHJvcGVydHkoInRvb2x0aXBTb3J0IikmJiJzdHJpbmciPT10eXBlb2YgdC50b29sdGlwU29ydCYmKGUudG9vbHRpcFNvcnRTdHJpbmc9dC50b29sdGlwU29ydCksdC5oYXNPd25Qcm9wZXJ0eSgiYXV0b1JlbG9hZCIpJiYiYm9vbGVhbiI9PXR5cGVvZiB0LmF1dG9SZWxvYWQmJihlLmF1dG9SZWxvYWQ9dC5hdXRvUmVsb2FkKSx0Lmhhc093blByb3BlcnR5KCJhdXRvUmVsb2FkUGVyaW9kSW5NcyIpJiYibnVtYmVyIj09dHlwZW9mIHQuYXV0b1JlbG9hZFBlcmlvZEluTXMmJihlLmF1dG9SZWxvYWRQZXJpb2RJbk1zPXQuYXV0b1JlbG9hZFBlcmlvZEluTXMpLHQuaGFzT3duUHJvcGVydHkoInBhZ2luYXRpb25TaXplIikmJiJudW1iZXIiPT10eXBlb2YgdC5wYWdpbmF0aW9uU2l6ZSYmKGUucGFnZVNpemU9dC5wYWdpbmF0aW9uU2l6ZSksdC5oYXNPd25Qcm9wZXJ0eSgidGhlbWUiKSYmInN0cmluZyI9PXR5cGVvZiB0LnRoZW1lJiZuZXcgU2V0KE9iamVjdC52YWx1ZXMoRlIpKS5oYXModC50aGVtZSkmJihlLnRoZW1lT3ZlcnJpZGU9dC50aGVtZSksdC5oYXNPd25Qcm9wZXJ0eSgibm90aWZpY2F0aW9uTGFzdFJlYWRUaW1lSW5NcyIpJiYibnVtYmVyIj09dHlwZW9mIHQubm90aWZpY2F0aW9uTGFzdFJlYWRUaW1lSW5NcyYmKGUubm90aWZpY2F0aW9uTGFzdFJlYWRUaW1lSW5Ncz10Lm5vdGlmaWNhdGlvbkxhc3RSZWFkVGltZUluTXMpLHQuaGFzT3duUHJvcGVydHkoInNpZGVCYXJXaWR0aEluUGVyY2VudCIpJiYibnVtYmVyIj09dHlwZW9mIHQuc2lkZUJhcldpZHRoSW5QZXJjZW50JiYoZS5zaWRlQmFyV2lkdGhJblBlcmNlbnQ9dC5zaWRlQmFyV2lkdGhJblBlcmNlbnQpLHQuaGFzT3duUHJvcGVydHkoInRpbWVTZXJpZXNQcm9tb3Rpb25EaXNtaXNzZWQiKSYmImJvb2xlYW4iPT10eXBlb2YgdC50aW1lU2VyaWVzUHJvbW90aW9uRGlzbWlzc2VkJiYoZS50aW1lU2VyaWVzUHJvbW90aW9uRGlzbWlzc2VkPXQudGltZVNlcmllc1Byb21vdGlvbkRpc21pc3NlZCksdC5oYXNPd25Qcm9wZXJ0eSgidGltZVNlcmllc1NldHRpbmdzUGFuZU9wZW5lZCIpJiYiYm9vbGVhbiI9PXR5cGVvZiB0LnRpbWVTZXJpZXNTZXR0aW5nc1BhbmVPcGVuZWQmJihlLnRpbWVTZXJpZXNTZXR0aW5nc1BhbmVPcGVuZWQ9dC50aW1lU2VyaWVzU2V0dGluZ3NQYW5lT3BlbmVkKSx0Lmhhc093blByb3BlcnR5KCJ0aW1lU2VyaWVzQ2FyZE1pbldpZHRoIikmJiJudW1iZXIiPT10eXBlb2YgdC50aW1lU2VyaWVzQ2FyZE1pbldpZHRoJiYoZS50aW1lU2VyaWVzQ2FyZE1pbldpZHRoPXQudGltZVNlcmllc0NhcmRNaW5XaWR0aCksZX19V1IuybVmYWM9KGZ1bmN0aW9uKCl7bGV0IHQ7cmV0dXJuIGZ1bmN0aW9uIGUobil7cmV0dXJuKHR8fCh0PVVhKFdSKSkpKG58fFdSKX19KSgpLFdSLsm1cHJvdj1Tbih7dG9rZW46V1IsZmFjdG9yeTpXUi7JtWZhY30pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoV1IsW3t0eXBlOlVtfV0sbnVsbCxudWxsKTtjbGFzcyBHUntjb25zdHJ1Y3Rvcih0LGUpe3RoaXMubG9jYWxTdG9yYWdlPXQsdGhpcy5jb252ZXJ0ZXI9ZX1zZXRTZXR0aW5ncyh0KXtyZXR1cm4gT2JqZWN0LmtleXModCk/dGhpcy5nZXRTZXR0aW5ncygpLnBpcGUoV2UoKGU9Pnt0aGlzLmxvY2FsU3RvcmFnZS5zZXRJdGVtKEJSLEpTT04uc3RyaW5naWZ5KHRoaXMuY29udmVydGVyLnVpVG9CYWNrZW5kKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxlKSx0KSkpKSx0aGlzLmxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKExSKSx0aGlzLmxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKFZSKX0pKSxWdCgoKCk9Pnt9KSkpOmR0fWRlc2VyaWFsaXplKHQpe3RyeXtyZXR1cm4gSlNPTi5wYXJzZSh0KX1jYXRjaCh0KXtyZXR1cm57fX19Z2V0U2V0dGluZ3MoKXt2YXIgdCxlO2NvbnN0IG49dGhpcy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbShWUiksbz10aGlzLmNvbnZlcnRlci5iYWNrZW5kVG9VaSh0aGlzLmRlc2VyaWFsaXplKG4/SlNPTi5zdHJpbmdpZnkoe25vdGlmaWNhdGlvbkxhc3RSZWFkVGltZUluTXM6TnVtYmVyKG4pfSk6Int9IikpLGk9dGhpcy5jb252ZXJ0ZXIuYmFja2VuZFRvVWkodGhpcy5kZXNlcmlhbGl6ZShudWxsIT09KHQ9dGhpcy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbShMUikpJiZ2b2lkIDAhPT10P3Q6Int9IikpLGE9dGhpcy5jb252ZXJ0ZXIuYmFja2VuZFRvVWkodGhpcy5kZXNlcmlhbGl6ZShudWxsIT09KGU9dGhpcy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbShCUikpJiZ2b2lkIDAhPT1lP2U6Int9IikpO3JldHVybiB6dChPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxvKSxpKSxhKSl9fUdSLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxHUikoVHIoSVIpLFRyKFVSKSl9LEdSLsm1cHJvdj1Tbih7dG9rZW46R1IsZmFjdG9yeTpHUi7JtWZhY30pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoR1IsW3t0eXBlOlVtfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOklSfSx7dHlwZTpVUn1dfSksbnVsbCk7Y2xhc3MgWVJ7fVlSLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxZUil9LFlSLsm1bW9kPWZvKHt0eXBlOllSfSksWVIuybVpbmo9RG4oe3Byb3ZpZGVyczpbe3Byb3ZpZGU6alIsdXNlQ2xhc3M6R1J9LFdSLHtwcm92aWRlOlVSLHVzZUV4aXN0aW5nOldSfV0saW1wb3J0czpbW0hSXV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKFlSLFt7dHlwZTpMXyxhcmdzOlt7aW1wb3J0czpbSFJdLHByb3ZpZGVyczpbe3Byb3ZpZGU6alIsdXNlQ2xhc3M6R1J9LFdSLHtwcm92aWRlOlVSLHVzZUV4aXN0aW5nOldSfV19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZ1byhZUix7aW1wb3J0czpbSFJdfSk7Y29uc3QgcVI9X2soIltQZXJzaXN0ZW50IFNldHRpbmdzXSBHbG9iYWwgU2V0dGluZ3MgTG9hZGVkIix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSksWlI9X2soIltQZXJzaXN0ZW50IFNldHRpbmdzXSBFZmZlY3RzIEluaXQiKTtjbGFzcyBYUntjb25zdHJ1Y3Rvcih0LGUsbixvKXt0aGlzLmFjdGlvbnMkPXQsdGhpcy5zdG9yZT1lLHRoaXMuY29uZmlnTW9kdWxlPW4sdGhpcy5kYXRhU291cmNlPW8sdGhpcy5pbml0aWFsaXplQW5kVXBkYXRlU2V0dGluZ3MkPVdTKCgoKT0+e2NvbnN0IHQ9dGhpcy5hY3Rpb25zJC5waXBlKCRTKFpSKSwkdCgoKCk9PnRoaXMuZGF0YVNvdXJjZS5nZXRTZXR0aW5ncygpKSksV2UoKHQ9Pnt0aGlzLnN0b3JlLmRpc3BhdGNoKHFSKHtwYXJ0aWFsU2V0dGluZ3M6dH0pKX0pKSxQZSgwKSwkdCgoKCk9PnBlKC4uLnRoaXMuY29uZmlnTW9kdWxlLmdldEdsb2JhbFNldHRpbmdTZWxlY3RvcnMoKS5tYXAoKHQ9PnRoaXMuc3RvcmUuc2VsZWN0KHQpLnBpcGUod2UoKCh0LGUpPT57Y29uc3Qgbj1PYmplY3QudmFsdWVzKHQpLG89T2JqZWN0LnZhbHVlcyhlKTtyZXR1cm4gbi5sZW5ndGg9PT1vLmxlbmd0aCYmbi5ldmVyeSgoKHQsZSk9PnQ9PT1vW2VdKSl9KSksTGUoMSkpKSkpKSksSWUoKSk7cmV0dXJuIHQucGlwZSgoZnVuY3Rpb24gZSh0KXtyZXR1cm4geigoZnVuY3Rpb24oZSxuKXt2YXIgbz1bXTtyZXR1cm4gZS5zdWJzY3JpYmUobmV3IEgobiwoZnVuY3Rpb24odCl7cmV0dXJuIG8ucHVzaCh0KX0pLChmdW5jdGlvbigpe24ubmV4dChvKSxuLmNvbXBsZXRlKCl9KSkpLHQuc3Vic2NyaWJlKG5ldyBIKG4sKGZ1bmN0aW9uKCl7dmFyIHQ9bztvPVtdLG4ubmV4dCh0KX0pLE0pKSxmdW5jdGlvbigpe289bnVsbH19KSl9KSh0LnBpcGUoQ2UoNTAwKSkpLCR0KCh0PT57Y29uc3QgZT17fTtmb3IoY29uc3QgbiBvZiB0KU9iamVjdC5hc3NpZ24oZSxuKTtyZXR1cm4gdGhpcy5kYXRhU291cmNlLnNldFNldHRpbmdzKGUpfSkpKX0pLHtkaXNwYXRjaDohMX0pfW5ncnhPbkluaXRFZmZlY3RzKCl7cmV0dXJuIFpSKCl9fVhSLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxYUikoVHIoUVMpLFRyKGlTKSxUcih6UiksVHIoalIpKX0sWFIuybVwcm92PVNuKHt0b2tlbjpYUixmYWN0b3J5OlhSLsm1ZmFjfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihYUixbe3R5cGU6VW19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6UVN9LHt0eXBlOmlTfSx7dHlwZTp6Un0se3R5cGU6alJ9XX0pLG51bGwpO2NsYXNzIEtSe31LUi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8S1IpfSxLUi7JtW1vZD1mbyh7dHlwZTpLUn0pLEtSLsm1aW5qPURuKHtwcm92aWRlcnM6W3pSXSxpbXBvcnRzOltbaEQuZm9yRmVhdHVyZShbWFJdKSxZUl1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihLUixbe3R5cGU6TF8sYXJnczpbe2ltcG9ydHM6W2hELmZvckZlYXR1cmUoW1hSXSksWVJdLHByb3ZpZGVyczpbelJdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmdW8oS1Ise2ltcG9ydHM6W2dELFlSXX0pOwovKioKICAgICAqIEBsaWNlbnNlIEFuZ3VsYXIgdjEyLjIuMQogICAgICogKGMpIDIwMTAtMjAyMSBHb29nbGUgTExDLiBodHRwczovL2FuZ3VsYXIuaW8vCiAgICAgKiBMaWNlbnNlOiBNSVQKICAgICAqLwpjbGFzcyBKUnt9Y2xhc3MgUVJ7fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jbGFzcyAkUntjb25zdHJ1Y3Rvcih0KXt0aGlzLm5vcm1hbGl6ZWROYW1lcz1uZXcgTWFwLHRoaXMubGF6eVVwZGF0ZT1udWxsLHQ/dGhpcy5sYXp5SW5pdD0ic3RyaW5nIj09dHlwZW9mIHQ/KCk9Pnt0aGlzLmhlYWRlcnM9bmV3IE1hcCx0LnNwbGl0KCJcbiIpLmZvckVhY2goKHQ9Pntjb25zdCBlPXQuaW5kZXhPZigiOiIpO2lmKGU+MCl7Y29uc3Qgbj10LnNsaWNlKDAsZSksbz1uLnRvTG93ZXJDYXNlKCksaT10LnNsaWNlKGUrMSkudHJpbSgpO3RoaXMubWF5YmVTZXROb3JtYWxpemVkTmFtZShuLG8pLHRoaXMuaGVhZGVycy5oYXMobyk/dGhpcy5oZWFkZXJzLmdldChvKS5wdXNoKGkpOnRoaXMuaGVhZGVycy5zZXQobyxbaV0pfX0pKX06KCk9Pnt0aGlzLmhlYWRlcnM9bmV3IE1hcCxPYmplY3Qua2V5cyh0KS5mb3JFYWNoKChlPT57bGV0IG49dFtlXTtjb25zdCBvPWUudG9Mb3dlckNhc2UoKTsic3RyaW5nIj09dHlwZW9mIG4mJihuPVtuXSksbi5sZW5ndGg+MCYmKHRoaXMuaGVhZGVycy5zZXQobyxuKSx0aGlzLm1heWJlU2V0Tm9ybWFsaXplZE5hbWUoZSxvKSl9KSl9OnRoaXMuaGVhZGVycz1uZXcgTWFwfWhhcyh0KXtyZXR1cm4gdGhpcy5pbml0KCksdGhpcy5oZWFkZXJzLmhhcyh0LnRvTG93ZXJDYXNlKCkpfWdldCh0KXt0aGlzLmluaXQoKTtjb25zdCBlPXRoaXMuaGVhZGVycy5nZXQodC50b0xvd2VyQ2FzZSgpKTtyZXR1cm4gZSYmZS5sZW5ndGg+MD9lWzBdOm51bGx9a2V5cygpe3JldHVybiB0aGlzLmluaXQoKSxBcnJheS5mcm9tKHRoaXMubm9ybWFsaXplZE5hbWVzLnZhbHVlcygpKX1nZXRBbGwodCl7cmV0dXJuIHRoaXMuaW5pdCgpLHRoaXMuaGVhZGVycy5nZXQodC50b0xvd2VyQ2FzZSgpKXx8bnVsbH1hcHBlbmQodCxlKXtyZXR1cm4gdGhpcy5jbG9uZSh7bmFtZTp0LHZhbHVlOmUsb3A6ImEifSl9c2V0KHQsZSl7cmV0dXJuIHRoaXMuY2xvbmUoe25hbWU6dCx2YWx1ZTplLG9wOiJzIn0pfWRlbGV0ZSh0LGUpe3JldHVybiB0aGlzLmNsb25lKHtuYW1lOnQsdmFsdWU6ZSxvcDoiZCJ9KX1tYXliZVNldE5vcm1hbGl6ZWROYW1lKHQsZSl7dGhpcy5ub3JtYWxpemVkTmFtZXMuaGFzKGUpfHx0aGlzLm5vcm1hbGl6ZWROYW1lcy5zZXQoZSx0KX1pbml0KCl7dGhpcy5sYXp5SW5pdCYmKHRoaXMubGF6eUluaXQgaW5zdGFuY2VvZiAkUj90aGlzLmNvcHlGcm9tKHRoaXMubGF6eUluaXQpOnRoaXMubGF6eUluaXQoKSx0aGlzLmxhenlJbml0PW51bGwsdGhpcy5sYXp5VXBkYXRlJiYodGhpcy5sYXp5VXBkYXRlLmZvckVhY2goKHQ9PnRoaXMuYXBwbHlVcGRhdGUodCkpKSx0aGlzLmxhenlVcGRhdGU9bnVsbCkpfWNvcHlGcm9tKHQpe3QuaW5pdCgpLEFycmF5LmZyb20odC5oZWFkZXJzLmtleXMoKSkuZm9yRWFjaCgoZT0+e3RoaXMuaGVhZGVycy5zZXQoZSx0LmhlYWRlcnMuZ2V0KGUpKSx0aGlzLm5vcm1hbGl6ZWROYW1lcy5zZXQoZSx0Lm5vcm1hbGl6ZWROYW1lcy5nZXQoZSkpfSkpfWNsb25lKHQpe2NvbnN0IGU9bmV3ICRSO3JldHVybiBlLmxhenlJbml0PXRoaXMubGF6eUluaXQmJnRoaXMubGF6eUluaXQgaW5zdGFuY2VvZiAkUj90aGlzLmxhenlJbml0OnRoaXMsZS5sYXp5VXBkYXRlPSh0aGlzLmxhenlVcGRhdGV8fFtdKS5jb25jYXQoW3RdKSxlfWFwcGx5VXBkYXRlKHQpe2NvbnN0IGU9dC5uYW1lLnRvTG93ZXJDYXNlKCk7c3dpdGNoKHQub3Ape2Nhc2UiYSI6Y2FzZSJzIjpsZXQgbj10LnZhbHVlO2lmKCJzdHJpbmciPT10eXBlb2YgbiYmKG49W25dKSwwPT09bi5sZW5ndGgpcmV0dXJuO3RoaXMubWF5YmVTZXROb3JtYWxpemVkTmFtZSh0Lm5hbWUsZSk7Y29uc3Qgbz0oImEiPT09dC5vcD90aGlzLmhlYWRlcnMuZ2V0KGUpOnZvaWQgMCl8fFtdO28ucHVzaCguLi5uKSx0aGlzLmhlYWRlcnMuc2V0KGUsbyk7YnJlYWs7Y2FzZSJkIjpjb25zdCBpPXQudmFsdWU7aWYoaSl7bGV0IHQ9dGhpcy5oZWFkZXJzLmdldChlKTtpZighdClyZXR1cm47dD10LmZpbHRlcigodD0+LTE9PT1pLmluZGV4T2YodCkpKSwwPT09dC5sZW5ndGg/KHRoaXMuaGVhZGVycy5kZWxldGUoZSksdGhpcy5ub3JtYWxpemVkTmFtZXMuZGVsZXRlKGUpKTp0aGlzLmhlYWRlcnMuc2V0KGUsdCl9ZWxzZSB0aGlzLmhlYWRlcnMuZGVsZXRlKGUpLHRoaXMubm9ybWFsaXplZE5hbWVzLmRlbGV0ZShlKX19Zm9yRWFjaCh0KXt0aGlzLmluaXQoKSxBcnJheS5mcm9tKHRoaXMubm9ybWFsaXplZE5hbWVzLmtleXMoKSkuZm9yRWFjaCgoZT0+dCh0aGlzLm5vcm1hbGl6ZWROYW1lcy5nZXQoZSksdGhpcy5oZWFkZXJzLmdldChlKSkpKX19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NsYXNzIHRFe2VuY29kZUtleSh0KXtyZXR1cm4gZUUodCl9ZW5jb2RlVmFsdWUodCl7cmV0dXJuIGVFKHQpfWRlY29kZUtleSh0KXtyZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KHQpfWRlY29kZVZhbHVlKHQpe3JldHVybiBkZWNvZGVVUklDb21wb25lbnQodCl9fWZ1bmN0aW9uIGVFKHQpe3JldHVybiBlbmNvZGVVUklDb21wb25lbnQodCkucmVwbGFjZSgvJTQwL2dpLCJAIikucmVwbGFjZSgvJTNBL2dpLCI6IikucmVwbGFjZSgvJTI0L2dpLCIkIikucmVwbGFjZSgvJTJDL2dpLCIsIikucmVwbGFjZSgvJTNCL2dpLCI7IikucmVwbGFjZSgvJTJCL2dpLCIrIikucmVwbGFjZSgvJTNEL2dpLCI9IikucmVwbGFjZSgvJTNGL2dpLCI/IikucmVwbGFjZSgvJTJGL2dpLCIvIil9ZnVuY3Rpb24gbkUodCl7cmV0dXJuYCR7dH1gfWNsYXNzIG9Fe2NvbnN0cnVjdG9yKHQ9e30pe2lmKHRoaXMudXBkYXRlcz1udWxsLHRoaXMuY2xvbmVGcm9tPW51bGwsdGhpcy5lbmNvZGVyPXQuZW5jb2Rlcnx8bmV3IHRFLHQuZnJvbVN0cmluZyl7aWYodC5mcm9tT2JqZWN0KXRocm93IG5ldyBFcnJvcigiQ2Fubm90IHNwZWNpZnkgYm90aCBmcm9tU3RyaW5nIGFuZCBmcm9tT2JqZWN0LiIpO3RoaXMubWFwPShmdW5jdGlvbiBlKHQsbil7Y29uc3Qgbz1uZXcgTWFwO3QubGVuZ3RoPjAmJnQucmVwbGFjZSgvXlw/LywiIikuc3BsaXQoIiYiKS5mb3JFYWNoKCh0PT57Y29uc3QgZT10LmluZGV4T2YoIj0iKSxbaSxhXT0tMT09ZT9bbi5kZWNvZGVLZXkodCksIiJdOltuLmRlY29kZUtleSh0LnNsaWNlKDAsZSkpLG4uZGVjb2RlVmFsdWUodC5zbGljZShlKzEpKV0scj1vLmdldChpKXx8W107ci5wdXNoKGEpLG8uc2V0KGkscil9KSk7cmV0dXJuIG99KSh0LmZyb21TdHJpbmcsdGhpcy5lbmNvZGVyKX1lbHNlIHQuZnJvbU9iamVjdD8odGhpcy5tYXA9bmV3IE1hcCxPYmplY3Qua2V5cyh0LmZyb21PYmplY3QpLmZvckVhY2goKGU9Pntjb25zdCBuPXQuZnJvbU9iamVjdFtlXTt0aGlzLm1hcC5zZXQoZSxBcnJheS5pc0FycmF5KG4pP246W25dKX0pKSk6dGhpcy5tYXA9bnVsbH1oYXModCl7cmV0dXJuIHRoaXMuaW5pdCgpLHRoaXMubWFwLmhhcyh0KX1nZXQodCl7dGhpcy5pbml0KCk7Y29uc3QgZT10aGlzLm1hcC5nZXQodCk7cmV0dXJuIGU/ZVswXTpudWxsfWdldEFsbCh0KXtyZXR1cm4gdGhpcy5pbml0KCksdGhpcy5tYXAuZ2V0KHQpfHxudWxsfWtleXMoKXtyZXR1cm4gdGhpcy5pbml0KCksQXJyYXkuZnJvbSh0aGlzLm1hcC5rZXlzKCkpfWFwcGVuZCh0LGUpe3JldHVybiB0aGlzLmNsb25lKHtwYXJhbTp0LHZhbHVlOmUsb3A6ImEifSl9YXBwZW5kQWxsKHQpe2NvbnN0IGU9W107cmV0dXJuIE9iamVjdC5rZXlzKHQpLmZvckVhY2goKG49Pntjb25zdCBvPXRbbl07QXJyYXkuaXNBcnJheShvKT9vLmZvckVhY2goKHQ9PntlLnB1c2goe3BhcmFtOm4sdmFsdWU6dCxvcDoiYSJ9KX0pKTplLnB1c2goe3BhcmFtOm4sdmFsdWU6byxvcDoiYSJ9KX0pKSx0aGlzLmNsb25lKGUpfXNldCh0LGUpe3JldHVybiB0aGlzLmNsb25lKHtwYXJhbTp0LHZhbHVlOmUsb3A6InMifSl9ZGVsZXRlKHQsZSl7cmV0dXJuIHRoaXMuY2xvbmUoe3BhcmFtOnQsdmFsdWU6ZSxvcDoiZCJ9KX10b1N0cmluZygpe3JldHVybiB0aGlzLmluaXQoKSx0aGlzLmtleXMoKS5tYXAoKHQ9Pntjb25zdCBlPXRoaXMuZW5jb2Rlci5lbmNvZGVLZXkodCk7cmV0dXJuIHRoaXMubWFwLmdldCh0KS5tYXAoKHQ9PmUrIj0iK3RoaXMuZW5jb2Rlci5lbmNvZGVWYWx1ZSh0KSkpLmpvaW4oIiYiKX0pKS5maWx0ZXIoKHQ9PiIiIT09dCkpLmpvaW4oIiYiKX1jbG9uZSh0KXtjb25zdCBlPW5ldyBvRSh7ZW5jb2Rlcjp0aGlzLmVuY29kZXJ9KTtyZXR1cm4gZS5jbG9uZUZyb209dGhpcy5jbG9uZUZyb218fHRoaXMsZS51cGRhdGVzPSh0aGlzLnVwZGF0ZXN8fFtdKS5jb25jYXQodCksZX1pbml0KCl7bnVsbD09PXRoaXMubWFwJiYodGhpcy5tYXA9bmV3IE1hcCksbnVsbCE9PXRoaXMuY2xvbmVGcm9tJiYodGhpcy5jbG9uZUZyb20uaW5pdCgpLHRoaXMuY2xvbmVGcm9tLmtleXMoKS5mb3JFYWNoKCh0PT50aGlzLm1hcC5zZXQodCx0aGlzLmNsb25lRnJvbS5tYXAuZ2V0KHQpKSkpLHRoaXMudXBkYXRlcy5mb3JFYWNoKCh0PT57c3dpdGNoKHQub3Ape2Nhc2UiYSI6Y2FzZSJzIjpjb25zdCBlPSgiYSI9PT10Lm9wP3RoaXMubWFwLmdldCh0LnBhcmFtKTp2b2lkIDApfHxbXTtlLnB1c2gobkUodC52YWx1ZSkpLHRoaXMubWFwLnNldCh0LnBhcmFtLGUpO2JyZWFrO2Nhc2UiZCI6aWYodm9pZCAwPT09dC52YWx1ZSl7dGhpcy5tYXAuZGVsZXRlKHQucGFyYW0pO2JyZWFrfXtsZXQgZT10aGlzLm1hcC5nZXQodC5wYXJhbSl8fFtdO2NvbnN0IG49ZS5pbmRleE9mKG5FKHQudmFsdWUpKTstMSE9PW4mJmUuc3BsaWNlKG4sMSksZS5sZW5ndGg+MD90aGlzLm1hcC5zZXQodC5wYXJhbSxlKTp0aGlzLm1hcC5kZWxldGUodC5wYXJhbSl9fX0pKSx0aGlzLmNsb25lRnJvbT10aGlzLnVwZGF0ZXM9bnVsbCl9fWNsYXNzIGlFe2NvbnN0cnVjdG9yKCl7dGhpcy5tYXA9bmV3IE1hcH1zZXQodCxlKXtyZXR1cm4gdGhpcy5tYXAuc2V0KHQsZSksdGhpc31nZXQodCl7cmV0dXJuIHRoaXMubWFwLmhhcyh0KXx8dGhpcy5tYXAuc2V0KHQsdC5kZWZhdWx0VmFsdWUoKSksdGhpcy5tYXAuZ2V0KHQpfWRlbGV0ZSh0KXtyZXR1cm4gdGhpcy5tYXAuZGVsZXRlKHQpLHRoaXN9a2V5cygpe3JldHVybiB0aGlzLm1hcC5rZXlzKCl9fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9mdW5jdGlvbiBhRSh0KXtyZXR1cm4idW5kZWZpbmVkIiE9dHlwZW9mIEFycmF5QnVmZmVyJiZ0IGluc3RhbmNlb2YgQXJyYXlCdWZmZXJ9ZnVuY3Rpb24gckUodCl7cmV0dXJuInVuZGVmaW5lZCIhPXR5cGVvZiBCbG9iJiZ0IGluc3RhbmNlb2YgQmxvYn1mdW5jdGlvbiBzRSh0KXtyZXR1cm4idW5kZWZpbmVkIiE9dHlwZW9mIEZvcm1EYXRhJiZ0IGluc3RhbmNlb2YgRm9ybURhdGF9Y2xhc3MgbEV7Y29uc3RydWN0b3IodCxlLG4sbyl7bGV0IGk7aWYodGhpcy51cmw9ZSx0aGlzLmJvZHk9bnVsbCx0aGlzLnJlcG9ydFByb2dyZXNzPSExLHRoaXMud2l0aENyZWRlbnRpYWxzPSExLHRoaXMucmVzcG9uc2VUeXBlPSJqc29uIix0aGlzLm1ldGhvZD10LnRvVXBwZXJDYXNlKCksKGZ1bmN0aW9uIGEodCl7c3dpdGNoKHQpe2Nhc2UiREVMRVRFIjpjYXNlIkdFVCI6Y2FzZSJIRUFEIjpjYXNlIk9QVElPTlMiOmNhc2UiSlNPTlAiOnJldHVybiExO2RlZmF1bHQ6cmV0dXJuITB9fSkodGhpcy5tZXRob2QpfHxvPyh0aGlzLmJvZHk9dm9pZCAwIT09bj9uOm51bGwsaT1vKTppPW4saSYmKHRoaXMucmVwb3J0UHJvZ3Jlc3M9ISFpLnJlcG9ydFByb2dyZXNzLHRoaXMud2l0aENyZWRlbnRpYWxzPSEhaS53aXRoQ3JlZGVudGlhbHMsaS5yZXNwb25zZVR5cGUmJih0aGlzLnJlc3BvbnNlVHlwZT1pLnJlc3BvbnNlVHlwZSksaS5oZWFkZXJzJiYodGhpcy5oZWFkZXJzPWkuaGVhZGVycyksaS5jb250ZXh0JiYodGhpcy5jb250ZXh0PWkuY29udGV4dCksaS5wYXJhbXMmJih0aGlzLnBhcmFtcz1pLnBhcmFtcykpLHRoaXMuaGVhZGVyc3x8KHRoaXMuaGVhZGVycz1uZXcgJFIpLHRoaXMuY29udGV4dHx8KHRoaXMuY29udGV4dD1uZXcgaUUpLHRoaXMucGFyYW1zKXtjb25zdCB0PXRoaXMucGFyYW1zLnRvU3RyaW5nKCk7aWYoMD09PXQubGVuZ3RoKXRoaXMudXJsV2l0aFBhcmFtcz1lO2Vsc2V7Y29uc3Qgbj1lLmluZGV4T2YoIj8iKTt0aGlzLnVybFdpdGhQYXJhbXM9ZSsoLTE9PT1uPyI/IjpuPGUubGVuZ3RoLTE/IiYiOiIiKSt0fX1lbHNlIHRoaXMucGFyYW1zPW5ldyBvRSx0aGlzLnVybFdpdGhQYXJhbXM9ZX1zZXJpYWxpemVCb2R5KCl7cmV0dXJuIG51bGw9PT10aGlzLmJvZHk/bnVsbDphRSh0aGlzLmJvZHkpfHxyRSh0aGlzLmJvZHkpfHxzRSh0aGlzLmJvZHkpfHwoZnVuY3Rpb24gdChlKXtyZXR1cm4idW5kZWZpbmVkIiE9dHlwZW9mIFVSTFNlYXJjaFBhcmFtcyYmZSBpbnN0YW5jZW9mIFVSTFNlYXJjaFBhcmFtc30pKHRoaXMuYm9keSl8fCJzdHJpbmciPT10eXBlb2YgdGhpcy5ib2R5P3RoaXMuYm9keTp0aGlzLmJvZHkgaW5zdGFuY2VvZiBvRT90aGlzLmJvZHkudG9TdHJpbmcoKToib2JqZWN0Ij09dHlwZW9mIHRoaXMuYm9keXx8ImJvb2xlYW4iPT10eXBlb2YgdGhpcy5ib2R5fHxBcnJheS5pc0FycmF5KHRoaXMuYm9keSk/SlNPTi5zdHJpbmdpZnkodGhpcy5ib2R5KTp0aGlzLmJvZHkudG9TdHJpbmcoKX1kZXRlY3RDb250ZW50VHlwZUhlYWRlcigpe3JldHVybiBudWxsPT09dGhpcy5ib2R5fHxzRSh0aGlzLmJvZHkpP251bGw6ckUodGhpcy5ib2R5KT90aGlzLmJvZHkudHlwZXx8bnVsbDphRSh0aGlzLmJvZHkpP251bGw6InN0cmluZyI9PXR5cGVvZiB0aGlzLmJvZHk/InRleHQvcGxhaW4iOnRoaXMuYm9keSBpbnN0YW5jZW9mIG9FPyJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7Y2hhcnNldD1VVEYtOCI6Im9iamVjdCI9PXR5cGVvZiB0aGlzLmJvZHl8fCJudW1iZXIiPT10eXBlb2YgdGhpcy5ib2R5fHwiYm9vbGVhbiI9PXR5cGVvZiB0aGlzLmJvZHk/ImFwcGxpY2F0aW9uL2pzb24iOm51bGx9Y2xvbmUodD17fSl7dmFyIGU7Y29uc3Qgbj10Lm1ldGhvZHx8dGhpcy5tZXRob2Qsbz10LnVybHx8dGhpcy51cmwsaT10LnJlc3BvbnNlVHlwZXx8dGhpcy5yZXNwb25zZVR5cGUsYT12b2lkIDAhPT10LmJvZHk/dC5ib2R5OnRoaXMuYm9keSxyPXZvaWQgMCE9PXQud2l0aENyZWRlbnRpYWxzP3Qud2l0aENyZWRlbnRpYWxzOnRoaXMud2l0aENyZWRlbnRpYWxzLHM9dm9pZCAwIT09dC5yZXBvcnRQcm9ncmVzcz90LnJlcG9ydFByb2dyZXNzOnRoaXMucmVwb3J0UHJvZ3Jlc3M7bGV0IGw9dC5oZWFkZXJzfHx0aGlzLmhlYWRlcnMsYz10LnBhcmFtc3x8dGhpcy5wYXJhbXM7Y29uc3QgZD1udWxsIT09KGU9dC5jb250ZXh0KSYmdm9pZCAwIT09ZT9lOnRoaXMuY29udGV4dDtyZXR1cm4gdm9pZCAwIT09dC5zZXRIZWFkZXJzJiYobD1PYmplY3Qua2V5cyh0LnNldEhlYWRlcnMpLnJlZHVjZSgoKGUsbik9PmUuc2V0KG4sdC5zZXRIZWFkZXJzW25dKSksbCkpLHQuc2V0UGFyYW1zJiYoYz1PYmplY3Qua2V5cyh0LnNldFBhcmFtcykucmVkdWNlKCgoZSxuKT0+ZS5zZXQobix0LnNldFBhcmFtc1tuXSkpLGMpKSxuZXcgbEUobixvLGEse3BhcmFtczpjLGhlYWRlcnM6bCxjb250ZXh0OmQscmVwb3J0UHJvZ3Jlc3M6cyxyZXNwb25zZVR5cGU6aSx3aXRoQ3JlZGVudGlhbHM6cn0pfX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovdmFyIGNFOyEoZnVuY3Rpb24odCl7dFt0LlNlbnQ9MF09IlNlbnQiLHRbdC5VcGxvYWRQcm9ncmVzcz0xXT0iVXBsb2FkUHJvZ3Jlc3MiLHRbdC5SZXNwb25zZUhlYWRlcj0yXT0iUmVzcG9uc2VIZWFkZXIiLHRbdC5Eb3dubG9hZFByb2dyZXNzPTNdPSJEb3dubG9hZFByb2dyZXNzIix0W3QuUmVzcG9uc2U9NF09IlJlc3BvbnNlIix0W3QuVXNlcj01XT0iVXNlciJ9KShjRXx8KGNFPXt9KSk7Y2xhc3MgZEV7Y29uc3RydWN0b3IodCxlPTIwMCxuPSJPSyIpe3RoaXMuaGVhZGVycz10LmhlYWRlcnN8fG5ldyAkUix0aGlzLnN0YXR1cz12b2lkIDAhPT10LnN0YXR1cz90LnN0YXR1czplLHRoaXMuc3RhdHVzVGV4dD10LnN0YXR1c1RleHR8fG4sdGhpcy51cmw9dC51cmx8fG51bGwsdGhpcy5vaz10aGlzLnN0YXR1cz49MjAwJiZ0aGlzLnN0YXR1czwzMDB9fWNsYXNzIHBFIGV4dGVuZHMgZEV7Y29uc3RydWN0b3IodD17fSl7c3VwZXIodCksdGhpcy50eXBlPWNFLlJlc3BvbnNlSGVhZGVyfWNsb25lKHQ9e30pe3JldHVybiBuZXcgcEUoe2hlYWRlcnM6dC5oZWFkZXJzfHx0aGlzLmhlYWRlcnMsc3RhdHVzOnZvaWQgMCE9PXQuc3RhdHVzP3Quc3RhdHVzOnRoaXMuc3RhdHVzLHN0YXR1c1RleHQ6dC5zdGF0dXNUZXh0fHx0aGlzLnN0YXR1c1RleHQsdXJsOnQudXJsfHx0aGlzLnVybHx8dm9pZCAwfSl9fWNsYXNzIG1FIGV4dGVuZHMgZEV7Y29uc3RydWN0b3IodD17fSl7c3VwZXIodCksdGhpcy50eXBlPWNFLlJlc3BvbnNlLHRoaXMuYm9keT12b2lkIDAhPT10LmJvZHk/dC5ib2R5Om51bGx9Y2xvbmUodD17fSl7cmV0dXJuIG5ldyBtRSh7Ym9keTp2b2lkIDAhPT10LmJvZHk/dC5ib2R5OnRoaXMuYm9keSxoZWFkZXJzOnQuaGVhZGVyc3x8dGhpcy5oZWFkZXJzLHN0YXR1czp2b2lkIDAhPT10LnN0YXR1cz90LnN0YXR1czp0aGlzLnN0YXR1cyxzdGF0dXNUZXh0OnQuc3RhdHVzVGV4dHx8dGhpcy5zdGF0dXNUZXh0LHVybDp0LnVybHx8dGhpcy51cmx8fHZvaWQgMH0pfX1jbGFzcyBmRSBleHRlbmRzIGRFe2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQsMCwiVW5rbm93biBFcnJvciIpLHRoaXMubmFtZT0iSHR0cEVycm9yUmVzcG9uc2UiLHRoaXMub2s9ITEsdGhpcy5tZXNzYWdlPXRoaXMuc3RhdHVzPj0yMDAmJnRoaXMuc3RhdHVzPDMwMD9gSHR0cCBmYWlsdXJlIGR1cmluZyBwYXJzaW5nIGZvciAke3QudXJsfHwiKHVua25vd24gdXJsKSJ9YDpgSHR0cCBmYWlsdXJlIHJlc3BvbnNlIGZvciAke3QudXJsfHwiKHVua25vd24gdXJsKSJ9OiAke3Quc3RhdHVzfSAke3Quc3RhdHVzVGV4dH1gLHRoaXMuZXJyb3I9dC5lcnJvcnx8bnVsbH19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2Z1bmN0aW9uIHVFKHQsZSl7cmV0dXJue2JvZHk6ZSxoZWFkZXJzOnQuaGVhZGVycyxjb250ZXh0OnQuY29udGV4dCxvYnNlcnZlOnQub2JzZXJ2ZSxwYXJhbXM6dC5wYXJhbXMscmVwb3J0UHJvZ3Jlc3M6dC5yZXBvcnRQcm9ncmVzcyxyZXNwb25zZVR5cGU6dC5yZXNwb25zZVR5cGUsd2l0aENyZWRlbnRpYWxzOnQud2l0aENyZWRlbnRpYWxzfX1jbGFzcyBnRXtjb25zdHJ1Y3Rvcih0KXt0aGlzLmhhbmRsZXI9dH1yZXF1ZXN0KHQsZSxuPXt9KXtsZXQgbztpZih0IGluc3RhbmNlb2YgbEUpbz10O2Vsc2V7bGV0IGksYTtpPW4uaGVhZGVycyBpbnN0YW5jZW9mICRSP24uaGVhZGVyczpuZXcgJFIobi5oZWFkZXJzKSxuLnBhcmFtcyYmKGE9bi5wYXJhbXMgaW5zdGFuY2VvZiBvRT9uLnBhcmFtczpuZXcgb0Uoe2Zyb21PYmplY3Q6bi5wYXJhbXN9KSksbz1uZXcgbEUodCxlLHZvaWQgMCE9PW4uYm9keT9uLmJvZHk6bnVsbCx7aGVhZGVyczppLGNvbnRleHQ6bi5jb250ZXh0LHBhcmFtczphLHJlcG9ydFByb2dyZXNzOm4ucmVwb3J0UHJvZ3Jlc3MscmVzcG9uc2VUeXBlOm4ucmVzcG9uc2VUeXBlfHwianNvbiIsd2l0aENyZWRlbnRpYWxzOm4ud2l0aENyZWRlbnRpYWxzfSl9Y29uc3QgaT16dChvKS5waXBlKChmdW5jdGlvbiBhKHQsZSl7cmV0dXJuIGQoZSk/JHQodCxlLDEpOiR0KHQsMSl9KSgodD0+dGhpcy5oYW5kbGVyLmhhbmRsZSh0KSkpKTtpZih0IGluc3RhbmNlb2YgbEV8fCJldmVudHMiPT09bi5vYnNlcnZlKXJldHVybiBpO2NvbnN0IHI9aS5waXBlKHVlKCh0PT50IGluc3RhbmNlb2YgbUUpKSk7c3dpdGNoKG4ub2JzZXJ2ZXx8ImJvZHkiKXtjYXNlImJvZHkiOnN3aXRjaChvLnJlc3BvbnNlVHlwZSl7Y2FzZSJhcnJheWJ1ZmZlciI6cmV0dXJuIHIucGlwZShWdCgodD0+e2lmKG51bGwhPT10LmJvZHkmJiEodC5ib2R5IGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpKXRocm93IG5ldyBFcnJvcigiUmVzcG9uc2UgaXMgbm90IGFuIEFycmF5QnVmZmVyLiIpO3JldHVybiB0LmJvZHl9KSkpO2Nhc2UiYmxvYiI6cmV0dXJuIHIucGlwZShWdCgodD0+e2lmKG51bGwhPT10LmJvZHkmJiEodC5ib2R5IGluc3RhbmNlb2YgQmxvYikpdGhyb3cgbmV3IEVycm9yKCJSZXNwb25zZSBpcyBub3QgYSBCbG9iLiIpO3JldHVybiB0LmJvZHl9KSkpO2Nhc2UidGV4dCI6cmV0dXJuIHIucGlwZShWdCgodD0+e2lmKG51bGwhPT10LmJvZHkmJiJzdHJpbmciIT10eXBlb2YgdC5ib2R5KXRocm93IG5ldyBFcnJvcigiUmVzcG9uc2UgaXMgbm90IGEgc3RyaW5nLiIpO3JldHVybiB0LmJvZHl9KSkpO2Nhc2UianNvbiI6ZGVmYXVsdDpyZXR1cm4gci5waXBlKFZ0KCh0PT50LmJvZHkpKSl9Y2FzZSJyZXNwb25zZSI6cmV0dXJuIHI7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoYFVucmVhY2hhYmxlOiB1bmhhbmRsZWQgb2JzZXJ2ZSB0eXBlICR7bi5vYnNlcnZlfX1gKX19ZGVsZXRlKHQsZT17fSl7cmV0dXJuIHRoaXMucmVxdWVzdCgiREVMRVRFIix0LGUpfWdldCh0LGU9e30pe3JldHVybiB0aGlzLnJlcXVlc3QoIkdFVCIsdCxlKX1oZWFkKHQsZT17fSl7cmV0dXJuIHRoaXMucmVxdWVzdCgiSEVBRCIsdCxlKX1qc29ucCh0LGUpe3JldHVybiB0aGlzLnJlcXVlc3QoIkpTT05QIix0LHtwYXJhbXM6KG5ldyBvRSkuYXBwZW5kKGUsIkpTT05QX0NBTExCQUNLIiksb2JzZXJ2ZToiYm9keSIscmVzcG9uc2VUeXBlOiJqc29uIn0pfW9wdGlvbnModCxlPXt9KXtyZXR1cm4gdGhpcy5yZXF1ZXN0KCJPUFRJT05TIix0LGUpfXBhdGNoKHQsZSxuPXt9KXtyZXR1cm4gdGhpcy5yZXF1ZXN0KCJQQVRDSCIsdCx1RShuLGUpKX1wb3N0KHQsZSxuPXt9KXtyZXR1cm4gdGhpcy5yZXF1ZXN0KCJQT1NUIix0LHVFKG4sZSkpfXB1dCh0LGUsbj17fSl7cmV0dXJuIHRoaXMucmVxdWVzdCgiUFVUIix0LHVFKG4sZSkpfX1nRS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8Z0UpKFRyKEpSKSl9LGdFLsm1cHJvdj1Tbih7dG9rZW46Z0UsZmFjdG9yeTpnRS7JtWZhY30pLGdFLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6SlJ9XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKGdFLFt7dHlwZTpVbX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpKUn1dfSksbnVsbCk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjbGFzcyBoRXtjb25zdHJ1Y3Rvcih0LGUpe3RoaXMubmV4dD10LHRoaXMuaW50ZXJjZXB0b3I9ZX1oYW5kbGUodCl7cmV0dXJuIHRoaXMuaW50ZXJjZXB0b3IuaW50ZXJjZXB0KHQsdGhpcy5uZXh0KX19Y29uc3QgYkU9bmV3IGVyKCJIVFRQX0lOVEVSQ0VQVE9SUyIpO2NsYXNzIHlFe2ludGVyY2VwdCh0LGUpe3JldHVybiBlLmhhbmRsZSh0KX19eUUuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHlFKX0seUUuybVwcm92PVNuKHt0b2tlbjp5RSxmYWN0b3J5OnlFLsm1ZmFjfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYih5RSxbe3R5cGU6VW19XSxudWxsLG51bGwpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KbGV0IF9FPTA7Y2xhc3MgQ0V7fWNsYXNzIE1Fe2NvbnN0cnVjdG9yKHQsZSl7dGhpcy5jYWxsYmFja01hcD10LHRoaXMuZG9jdW1lbnQ9ZSx0aGlzLnJlc29sdmVkUHJvbWlzZT1Qcm9taXNlLnJlc29sdmUoKX1uZXh0Q2FsbGJhY2soKXtyZXR1cm4ibmdfanNvbnBfY2FsbGJhY2tfIitfRSsrfWhhbmRsZSh0KXtpZigiSlNPTlAiIT09dC5tZXRob2QpdGhyb3cgbmV3IEVycm9yKCJKU09OUCByZXF1ZXN0cyBtdXN0IHVzZSBKU09OUCByZXF1ZXN0IG1ldGhvZC4iKTtpZigianNvbiIhPT10LnJlc3BvbnNlVHlwZSl0aHJvdyBuZXcgRXJyb3IoIkpTT05QIHJlcXVlc3RzIG11c3QgdXNlIEpzb24gcmVzcG9uc2UgdHlwZS4iKTtyZXR1cm4gbmV3IFQoKGU9Pntjb25zdCBuPXRoaXMubmV4dENhbGxiYWNrKCksbz10LnVybFdpdGhQYXJhbXMucmVwbGFjZSgvPUpTT05QX0NBTExCQUNLKCZ8JCkvLGA9JHtufSQxYCksaT10aGlzLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpO2kuc3JjPW87bGV0IGE9bnVsbCxyPSExLHM9ITE7dGhpcy5jYWxsYmFja01hcFtuXT10PT57ZGVsZXRlIHRoaXMuY2FsbGJhY2tNYXBbbl0sc3x8KGE9dCxyPSEwKX07Y29uc3QgbD0oKT0+e2kucGFyZW50Tm9kZSYmaS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGkpLGRlbGV0ZSB0aGlzLmNhbGxiYWNrTWFwW25dfSxjPXQ9PntzfHx0aGlzLnJlc29sdmVkUHJvbWlzZS50aGVuKCgoKT0+e2woKSxyPyhlLm5leHQobmV3IG1FKHtib2R5OmEsc3RhdHVzOjIwMCxzdGF0dXNUZXh0OiJPSyIsdXJsOm99KSksZS5jb21wbGV0ZSgpKTplLmVycm9yKG5ldyBmRSh7dXJsOm8sc3RhdHVzOjAsc3RhdHVzVGV4dDoiSlNPTlAgRXJyb3IiLGVycm9yOm5ldyBFcnJvcigiSlNPTlAgaW5qZWN0ZWQgc2NyaXB0IGRpZCBub3QgaW52b2tlIGNhbGxiYWNrLiIpfSkpfSkpfSxkPXQ9PntzfHwobCgpLGUuZXJyb3IobmV3IGZFKHtlcnJvcjp0LHN0YXR1czowLHN0YXR1c1RleHQ6IkpTT05QIEVycm9yIix1cmw6b30pKSl9O3JldHVybiBpLmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLGMpLGkuYWRkRXZlbnRMaXN0ZW5lcigiZXJyb3IiLGQpLHRoaXMuZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChpKSxlLm5leHQoe3R5cGU6Y0UuU2VudH0pLCgpPT57cz0hMCxpLnJlbW92ZUV2ZW50TGlzdGVuZXIoImxvYWQiLGMpLGkucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZXJyb3IiLGQpLGwoKX19KSl9fU1FLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxNRSkoVHIoQ0UpLFRyKHNNKSl9LE1FLsm1cHJvdj1Tbih7dG9rZW46TUUsZmFjdG9yeTpNRS7JtWZhY30pLE1FLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6Q0V9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltzTV19XX1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoTUUsW3t0eXBlOlVtfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOkNFfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbc01dfV19XX0pLG51bGwpO2NsYXNzIHZFe2NvbnN0cnVjdG9yKHQpe3RoaXMuanNvbnA9dH1pbnRlcmNlcHQodCxlKXtyZXR1cm4iSlNPTlAiPT09dC5tZXRob2Q/dGhpcy5qc29ucC5oYW5kbGUodCk6ZS5oYW5kbGUodCl9fXZFLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHx2RSkoVHIoTUUpKX0sdkUuybVwcm92PVNuKHt0b2tlbjp2RSxmYWN0b3J5OnZFLsm1ZmFjfSksdkUuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpNRX1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIodkUsW3t0eXBlOlVtfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOk1FfV19KSxudWxsKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNvbnN0IHhFPS9eXClcXVx9Jyw/XG4vO2NsYXNzIE9Fe2NvbnN0cnVjdG9yKHQpe3RoaXMueGhyRmFjdG9yeT10fWhhbmRsZSh0KXtpZigiSlNPTlAiPT09dC5tZXRob2QpdGhyb3cgbmV3IEVycm9yKCJBdHRlbXB0ZWQgdG8gY29uc3RydWN0IEpzb25wIHJlcXVlc3Qgd2l0aG91dCBIdHRwQ2xpZW50SnNvbnBNb2R1bGUgaW5zdGFsbGVkLiIpO3JldHVybiBuZXcgVCgoZT0+e2NvbnN0IG49dGhpcy54aHJGYWN0b3J5LmJ1aWxkKCk7aWYobi5vcGVuKHQubWV0aG9kLHQudXJsV2l0aFBhcmFtcyksdC53aXRoQ3JlZGVudGlhbHMmJihuLndpdGhDcmVkZW50aWFscz0hMCksdC5oZWFkZXJzLmZvckVhY2goKCh0LGUpPT5uLnNldFJlcXVlc3RIZWFkZXIodCxlLmpvaW4oIiwiKSkpKSx0LmhlYWRlcnMuaGFzKCJBY2NlcHQiKXx8bi5zZXRSZXF1ZXN0SGVhZGVyKCJBY2NlcHQiLCJhcHBsaWNhdGlvbi9qc29uLCB0ZXh0L3BsYWluLCAqLyoiKSwhdC5oZWFkZXJzLmhhcygiQ29udGVudC1UeXBlIikpe2NvbnN0IGU9dC5kZXRlY3RDb250ZW50VHlwZUhlYWRlcigpO251bGwhPT1lJiZuLnNldFJlcXVlc3RIZWFkZXIoIkNvbnRlbnQtVHlwZSIsZSl9aWYodC5yZXNwb25zZVR5cGUpe2NvbnN0IGU9dC5yZXNwb25zZVR5cGUudG9Mb3dlckNhc2UoKTtuLnJlc3BvbnNlVHlwZT0ianNvbiIhPT1lP2U6InRleHQifWNvbnN0IG89dC5zZXJpYWxpemVCb2R5KCk7bGV0IGk9bnVsbDtjb25zdCBhPSgpPT57aWYobnVsbCE9PWkpcmV0dXJuIGk7Y29uc3QgZT0xMjIzPT09bi5zdGF0dXM/MjA0Om4uc3RhdHVzLG89bi5zdGF0dXNUZXh0fHwiT0siLGE9bmV3ICRSKG4uZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCkpLHI9KGZ1bmN0aW9uIHModCl7cmV0dXJuInJlc3BvbnNlVVJMImluIHQmJnQucmVzcG9uc2VVUkw/dC5yZXNwb25zZVVSTDovXlgtUmVxdWVzdC1VUkw6L20udGVzdCh0LmdldEFsbFJlc3BvbnNlSGVhZGVycygpKT90LmdldFJlc3BvbnNlSGVhZGVyKCJYLVJlcXVlc3QtVVJMIik6bnVsbH0pKG4pfHx0LnVybDtyZXR1cm4gaT1uZXcgcEUoe2hlYWRlcnM6YSxzdGF0dXM6ZSxzdGF0dXNUZXh0Om8sdXJsOnJ9KSxpfSxyPSgpPT57bGV0e2hlYWRlcnM6byxzdGF0dXM6aSxzdGF0dXNUZXh0OnIsdXJsOnN9PWEoKSxsPW51bGw7MjA0IT09aSYmKGw9dm9pZCAwPT09bi5yZXNwb25zZT9uLnJlc3BvbnNlVGV4dDpuLnJlc3BvbnNlKSwwPT09aSYmKGk9bD8yMDA6MCk7bGV0IGM9aT49MjAwJiZpPDMwMDtpZigianNvbiI9PT10LnJlc3BvbnNlVHlwZSYmInN0cmluZyI9PXR5cGVvZiBsKXtjb25zdCB0PWw7bD1sLnJlcGxhY2UoeEUsIiIpO3RyeXtsPSIiIT09bD9KU09OLnBhcnNlKGwpOm51bGx9Y2F0Y2goZSl7bD10LGMmJihjPSExLGw9e2Vycm9yOmUsdGV4dDpsfSl9fWM/KGUubmV4dChuZXcgbUUoe2JvZHk6bCxoZWFkZXJzOm8sc3RhdHVzOmksc3RhdHVzVGV4dDpyLHVybDpzfHx2b2lkIDB9KSksZS5jb21wbGV0ZSgpKTplLmVycm9yKG5ldyBmRSh7ZXJyb3I6bCxoZWFkZXJzOm8sc3RhdHVzOmksc3RhdHVzVGV4dDpyLHVybDpzfHx2b2lkIDB9KSl9LHM9dD0+e2NvbnN0e3VybDpvfT1hKCksaT1uZXcgZkUoe2Vycm9yOnQsc3RhdHVzOm4uc3RhdHVzfHwwLHN0YXR1c1RleHQ6bi5zdGF0dXNUZXh0fHwiVW5rbm93biBFcnJvciIsdXJsOm98fHZvaWQgMH0pO2UuZXJyb3IoaSl9O2xldCBsPSExO2NvbnN0IGM9bz0+e2x8fChlLm5leHQoYSgpKSxsPSEwKTtsZXQgaT17dHlwZTpjRS5Eb3dubG9hZFByb2dyZXNzLGxvYWRlZDpvLmxvYWRlZH07by5sZW5ndGhDb21wdXRhYmxlJiYoaS50b3RhbD1vLnRvdGFsKSwidGV4dCI9PT10LnJlc3BvbnNlVHlwZSYmbi5yZXNwb25zZVRleHQmJihpLnBhcnRpYWxUZXh0PW4ucmVzcG9uc2VUZXh0KSxlLm5leHQoaSl9LGQ9dD0+e2xldCBuPXt0eXBlOmNFLlVwbG9hZFByb2dyZXNzLGxvYWRlZDp0LmxvYWRlZH07dC5sZW5ndGhDb21wdXRhYmxlJiYobi50b3RhbD10LnRvdGFsKSxlLm5leHQobil9O3JldHVybiBuLmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLHIpLG4uYWRkRXZlbnRMaXN0ZW5lcigiZXJyb3IiLHMpLG4uYWRkRXZlbnRMaXN0ZW5lcigidGltZW91dCIscyksbi5hZGRFdmVudExpc3RlbmVyKCJhYm9ydCIscyksdC5yZXBvcnRQcm9ncmVzcyYmKG4uYWRkRXZlbnRMaXN0ZW5lcigicHJvZ3Jlc3MiLGMpLG51bGwhPT1vJiZuLnVwbG9hZCYmbi51cGxvYWQuYWRkRXZlbnRMaXN0ZW5lcigicHJvZ3Jlc3MiLGQpKSxuLnNlbmQobyksZS5uZXh0KHt0eXBlOmNFLlNlbnR9KSwoKT0+e24ucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZXJyb3IiLHMpLG4ucmVtb3ZlRXZlbnRMaXN0ZW5lcigiYWJvcnQiLHMpLG4ucmVtb3ZlRXZlbnRMaXN0ZW5lcigibG9hZCIsciksbi5yZW1vdmVFdmVudExpc3RlbmVyKCJ0aW1lb3V0IixzKSx0LnJlcG9ydFByb2dyZXNzJiYobi5yZW1vdmVFdmVudExpc3RlbmVyKCJwcm9ncmVzcyIsYyksbnVsbCE9PW8mJm4udXBsb2FkJiZuLnVwbG9hZC5yZW1vdmVFdmVudExpc3RlbmVyKCJwcm9ncmVzcyIsZCkpLG4ucmVhZHlTdGF0ZSE9PW4uRE9ORSYmbi5hYm9ydCgpfX0pKX19T0UuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fE9FKShUcihweCkpfSxPRS7JtXByb3Y9U24oe3Rva2VuOk9FLGZhY3Rvcnk6T0UuybVmYWN9KSxPRS5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOnB4fV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihPRSxbe3R5cGU6VW19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6cHh9XX0pLG51bGwpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY29uc3QgUEU9bmV3IGVyKCJYU1JGX0NPT0tJRV9OQU1FIiksd0U9bmV3IGVyKCJYU1JGX0hFQURFUl9OQU1FIik7Y2xhc3Mga0V7fWNsYXNzIFNFe2NvbnN0cnVjdG9yKHQsZSxuKXt0aGlzLmRvYz10LHRoaXMucGxhdGZvcm09ZSx0aGlzLmNvb2tpZU5hbWU9bix0aGlzLmxhc3RDb29raWVTdHJpbmc9IiIsdGhpcy5sYXN0VG9rZW49bnVsbCx0aGlzLnBhcnNlQ291bnQ9MH1nZXRUb2tlbigpe2lmKCJzZXJ2ZXIiPT09dGhpcy5wbGF0Zm9ybSlyZXR1cm4gbnVsbDtjb25zdCB0PXRoaXMuZG9jLmNvb2tpZXx8IiI7cmV0dXJuIHQhPT10aGlzLmxhc3RDb29raWVTdHJpbmcmJih0aGlzLnBhcnNlQ291bnQrKyx0aGlzLmxhc3RUb2tlbj1fdih0LHRoaXMuY29va2llTmFtZSksdGhpcy5sYXN0Q29va2llU3RyaW5nPXQpLHRoaXMubGFzdFRva2VufX1TRS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8U0UpKFRyKHNNKSxUcihYXyksVHIoUEUpKX0sU0UuybVwcm92PVNuKHt0b2tlbjpTRSxmYWN0b3J5OlNFLsm1ZmFjfSksU0UuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbc01dfV19LHt0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltYX119XX0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W1BFXX1dfV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihTRSxbe3R5cGU6VW19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W3NNXX1dfSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbWF9dfV19LHt0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltQRV19XX1dfSksbnVsbCk7Y2xhc3MgREV7Y29uc3RydWN0b3IodCxlKXt0aGlzLnRva2VuU2VydmljZT10LHRoaXMuaGVhZGVyTmFtZT1lfWludGVyY2VwdCh0LGUpe2NvbnN0IG49dC51cmwudG9Mb3dlckNhc2UoKTtpZigiR0VUIj09PXQubWV0aG9kfHwiSEVBRCI9PT10Lm1ldGhvZHx8bi5zdGFydHNXaXRoKCJodHRwOi8vIil8fG4uc3RhcnRzV2l0aCgiaHR0cHM6Ly8iKSlyZXR1cm4gZS5oYW5kbGUodCk7Y29uc3Qgbz10aGlzLnRva2VuU2VydmljZS5nZXRUb2tlbigpO3JldHVybiBudWxsPT09b3x8dC5oZWFkZXJzLmhhcyh0aGlzLmhlYWRlck5hbWUpfHwodD10LmNsb25lKHtoZWFkZXJzOnQuaGVhZGVycy5zZXQodGhpcy5oZWFkZXJOYW1lLG8pfSkpLGUuaGFuZGxlKHQpfX1ERS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8REUpKFRyKGtFKSxUcih3RSkpfSxERS7JtXByb3Y9U24oe3Rva2VuOkRFLGZhY3Rvcnk6REUuybVmYWN9KSxERS5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOmtFfSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbd0VdfV19XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKERFLFt7dHlwZTpVbX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTprRX0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W3dFXX1dfV19KSxudWxsKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNsYXNzIFJFe2NvbnN0cnVjdG9yKHQsZSl7dGhpcy5iYWNrZW5kPXQsdGhpcy5pbmplY3Rvcj1lLHRoaXMuY2hhaW49bnVsbH1oYW5kbGUodCl7aWYobnVsbD09PXRoaXMuY2hhaW4pe2NvbnN0IHQ9dGhpcy5pbmplY3Rvci5nZXQoYkUsW10pO3RoaXMuY2hhaW49dC5yZWR1Y2VSaWdodCgoKHQsZSk9Pm5ldyBoRSh0LGUpKSx0aGlzLmJhY2tlbmQpfXJldHVybiB0aGlzLmNoYWluLmhhbmRsZSh0KX19ZnVuY3Rpb24gRUUoKXtyZXR1cm4ib2JqZWN0Ij09dHlwZW9mIHdpbmRvdz93aW5kb3c6e319UkUuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFJFKShUcihRUiksVHIoTnApKX0sUkUuybVwcm92PVNuKHt0b2tlbjpSRSxmYWN0b3J5OlJFLsm1ZmFjfSksUkUuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpRUn0se3R5cGU6TnB9XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKFJFLFt7dHlwZTpVbX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpRUn0se3R5cGU6TnB9XX0pLG51bGwpO2NsYXNzIEFFe3N0YXRpYyBkaXNhYmxlKCl7cmV0dXJue25nTW9kdWxlOkFFLHByb3ZpZGVyczpbe3Byb3ZpZGU6REUsdXNlQ2xhc3M6eUV9XX19c3RhdGljIHdpdGhPcHRpb25zKHQ9e30pe3JldHVybntuZ01vZHVsZTpBRSxwcm92aWRlcnM6W3QuY29va2llTmFtZT97cHJvdmlkZTpQRSx1c2VWYWx1ZTp0LmNvb2tpZU5hbWV9OltdLHQuaGVhZGVyTmFtZT97cHJvdmlkZTp3RSx1c2VWYWx1ZTp0LmhlYWRlck5hbWV9OltdXX19fUFFLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxBRSl9LEFFLsm1bW9kPWZvKHt0eXBlOkFFfSksQUUuybVpbmo9RG4oe3Byb3ZpZGVyczpbREUse3Byb3ZpZGU6YkUsdXNlRXhpc3Rpbmc6REUsbXVsdGk6ITB9LHtwcm92aWRlOmtFLHVzZUNsYXNzOlNFfSx7cHJvdmlkZTpQRSx1c2VWYWx1ZToiWFNSRi1UT0tFTiJ9LHtwcm92aWRlOndFLHVzZVZhbHVlOiJYLVhTUkYtVE9LRU4ifV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKEFFLFt7dHlwZTpMXyxhcmdzOlt7cHJvdmlkZXJzOltERSx7cHJvdmlkZTpiRSx1c2VFeGlzdGluZzpERSxtdWx0aTohMH0se3Byb3ZpZGU6a0UsdXNlQ2xhc3M6U0V9LHtwcm92aWRlOlBFLHVzZVZhbHVlOiJYU1JGLVRPS0VOIn0se3Byb3ZpZGU6d0UsdXNlVmFsdWU6IlgtWFNSRi1UT0tFTiJ9XX1dfV0sbnVsbCxudWxsKTtjbGFzcyBURXt9VEUuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFRFKX0sVEUuybVtb2Q9Zm8oe3R5cGU6VEV9KSxURS7JtWluaj1Ebih7cHJvdmlkZXJzOltnRSx7cHJvdmlkZTpKUix1c2VDbGFzczpSRX0sT0Use3Byb3ZpZGU6UVIsdXNlRXhpc3Rpbmc6T0V9XSxpbXBvcnRzOltbQUUud2l0aE9wdGlvbnMoe2Nvb2tpZU5hbWU6IlhTUkYtVE9LRU4iLGhlYWRlck5hbWU6IlgtWFNSRi1UT0tFTiJ9KV1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihURSxbe3R5cGU6TF8sYXJnczpbe2ltcG9ydHM6W0FFLndpdGhPcHRpb25zKHtjb29raWVOYW1lOiJYU1JGLVRPS0VOIixoZWFkZXJOYW1lOiJYLVhTUkYtVE9LRU4ifSldLHByb3ZpZGVyczpbZ0Use3Byb3ZpZGU6SlIsdXNlQ2xhc3M6UkV9LE9FLHtwcm92aWRlOlFSLHVzZUV4aXN0aW5nOk9FfV19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZ1byhURSx7aW1wb3J0czpbQUVdfSk7Y2xhc3MgTkV7fWZ1bmN0aW9uIHpFKHQpe2NvbnN0IGU9e307Zm9yKGNvbnN0W24sb11vZiB0LmVudHJpZXMoKSllW25dPW87cmV0dXJuIGV9TkUuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fE5FKX0sTkUuybVtb2Q9Zm8oe3R5cGU6TkV9KSxORS7JtWluaj1Ebih7cHJvdmlkZXJzOltNRSx7cHJvdmlkZTpDRSx1c2VGYWN0b3J5OkVFfSx7cHJvdmlkZTpiRSx1c2VDbGFzczp2RSxtdWx0aTohMH1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihORSxbe3R5cGU6TF8sYXJnczpbe3Byb3ZpZGVyczpbTUUse3Byb3ZpZGU6Q0UsdXNlRmFjdG9yeTpFRX0se3Byb3ZpZGU6YkUsdXNlQ2xhc3M6dkUsbXVsdGk6ITB9XX1dfV0sbnVsbCxudWxsKTtmdW5jdGlvbiBJRSh0KXtsZXQgZT10LmhlYWRlcnN8fG5ldyAkUjtyZXR1cm4gZT1lLmFwcGVuZCgiWC1YU1JGLVByb3RlY3RlZCIsIjEiKSxPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse2hlYWRlcnM6ZX0pfWNsYXNzIEhFe2NvbnN0cnVjdG9yKHQsZSxuKXt0aGlzLmFwcFJvb3RQcm92aWRlcj10LHRoaXMuaHR0cD1lLHRoaXMuc3RvcmU9bn1yZXNvbHZlQXBwUm9vdCh0KXtyZXR1cm4gdC5zdGFydHNXaXRoKCIvIik/dGhpcy5hcHBSb290UHJvdmlkZXIuZ2V0QWJzUGF0aG5hbWVXaXRoQXBwUm9vdCh0KTp0fWdldCh0LGU9e30pe3JldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMucmVzb2x2ZUFwcFJvb3QodCksZSl9cG9zdCh0LGUsbj17fSl7cmV0dXJuIG49SUUobiksdGhpcy5zdG9yZS5zZWxlY3QoTkQpLnBpcGUodWUoKHQ9PkJvb2xlYW4odCkpKSx2ZSgxKSxxZSh0aGlzLnN0b3JlLnNlbGVjdChWRCkpLCR0KCgoWyxvXSk9Pnt2YXIgaTtjb25zdCBhPXRoaXMucmVzb2x2ZUFwcFJvb3QodCk7cmV0dXJuIG8/dGhpcy5odHRwLmdldChhLHtoZWFkZXJzOm51bGwhPT0oaT1uLmhlYWRlcnMpJiZ2b2lkIDAhPT1pP2k6e30scGFyYW1zOnpFKGUpfSk6dGhpcy5odHRwLnBvc3QoYSxlLG4pfSkpKX1wdXQodCxlLG49e30pe3JldHVybiB0aGlzLmh0dHAucHV0KHRoaXMucmVzb2x2ZUFwcFJvb3QodCksZSxJRShuKSl9ZGVsZXRlKHQsZT17fSl7cmV0dXJuIHRoaXMuaHR0cC5kZWxldGUodGhpcy5yZXNvbHZlQXBwUm9vdCh0KSxJRShlKSl9fUhFLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxIRSkoVHIod0QpLFRyKGdFKSxUcihpUykpfSxIRS7JtXByb3Y9U24oe3Rva2VuOkhFLGZhY3Rvcnk6SEUuybVmYWN9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKEhFLFt7dHlwZTpVbX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTp3RH0se3R5cGU6Z0V9LHt0eXBlOmlTfV19KSxudWxsKTtjbGFzcyBGRXt9dmFyIExFO0ZFLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxGRSl9LEZFLsm1bW9kPWZvKHt0eXBlOkZFfSksRkUuybVpbmo9RG4oe3Byb3ZpZGVyczpbSEVdLGltcG9ydHM6W1tURSxERF1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihGRSxbe3R5cGU6TF8sYXJnczpbe2ltcG9ydHM6W1RFLEREXSxwcm92aWRlcnM6W0hFXX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnVvKEZFLHtpbXBvcnRzOltURSxERF19KSwoZnVuY3Rpb24odCl7dC5VTktOT1dOPSJVTktOT1dOIix0Lk5PVF9GT1VORD0iTk9UX0ZPVU5EIn0pKExFfHwoTEU9e30pKTtjb25zdCBCRT1uZXcgZXIoIlRlbnNvckJvYXJkIGJyYW5kIG5hbWUiKTt2YXIgVkUsakUsVUU7ZnVuY3Rpb24gV0UodCl7bGV0IGU9TEUuVU5LTk9XTjtyZXR1cm4gdCBpbnN0YW5jZW9mIGZFJiY0MDQ9PT10LnN0YXR1cyYmKGU9TEUuTk9UX0ZPVU5EKSxJdChuZXcgR0UoZSkpfSEoZnVuY3Rpb24odCl7dC5TVEVQPSJzdGVwIix0LldBTExfVElNRT0id2FsbF90aW1lIix0LlJFTEFUSVZFPSJyZWxhdGl2ZSJ9KShWRXx8KFZFPXt9KSksKGZ1bmN0aW9uKHQpe3QuT0ZGU0VUPSJvZmZzZXQiLHQuT1ZFUkxBWT0ib3ZlcmxheSJ9KShqRXx8KGpFPXt9KSk7Y2xhc3MgR0V7Y29uc3RydWN0b3IodCl7dGhpcy5mYWlsdXJlQ29kZT10fX1jbGFzcyBZRXtjb25zdHJ1Y3Rvcih0KXt0aGlzLmh0dHA9dCx0aGlzLnRmQmFja2VuZD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0Zi1iYWNrZW5kIikudGZfYmFja2VuZH1mZXRjaFBsdWdpbnNMaXN0aW5nKHQpe2NvbnN0IGU9KGZ1bmN0aW9uIG4odCl7aWYoIXQubGVuZ3RoKXJldHVybiBudWxsO2NvbnN0IGU9bmV3IFVSTFNlYXJjaFBhcmFtcztmb3IoY29uc3QgbiBvZiB0KWUuYXBwZW5kKCJleHBlcmltZW50YWxQbHVnaW4iLG4pO3JldHVybiBlfSkodCksbz1lP2BkYXRhL3BsdWdpbnNfbGlzdGluZz8ke2UudG9TdHJpbmcoKX1gOiJkYXRhL3BsdWdpbnNfbGlzdGluZyI7cmV0dXJuIHRoaXMuaHR0cC5nZXQobykucGlwZShoZShXRSkpfWZldGNoRW52aXJvbm1lbnQoKXtyZXR1cm4gaWUoW3RoaXMuaHR0cC5nZXQoImRhdGEvZW52aXJvbm1lbnQiKSxQdCh0aGlzLnRmQmFja2VuZC5lbnZpcm9ubWVudFN0b3JlLnJlZnJlc2goKSldKS5waXBlKFZ0KCgoW3RdKT0+dCkpLGhlKFdFKSl9fVlFLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxZRSkoVHIoSEUpKX0sWUUuybVwcm92PVNuKHt0b2tlbjpZRSxmYWN0b3J5OllFLsm1ZmFjfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihZRSxbe3R5cGU6VW19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6SEV9XX0pLG51bGwpO2NsYXNzIHFFe31xRS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8cUUpfSxxRS7JtW1vZD1mbyh7dHlwZTpxRX0pLHFFLsm1aW5qPURuKHtwcm92aWRlcnM6W1lFXSxpbXBvcnRzOltbRkVdXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIocUUsW3t0eXBlOkxfLGFyZ3M6W3tpbXBvcnRzOltGRV0scHJvdmlkZXJzOltZRV19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZ1byhxRSx7aW1wb3J0czpbRkVdfSksKGZ1bmN0aW9uKHQpe3RbdC5OT1RfTE9BREVEPTBdPSJOT1RfTE9BREVEIix0W3QuTE9BREVEPTFdPSJMT0FERUQiLHRbdC5MT0FESU5HPTJdPSJMT0FESU5HIix0W3QuRkFJTEVEPTNdPSJGQUlMRUQifSkoVUV8fChVRT17fSkpO2NvbnN0IFpFPV9rKCJbQ29yZV0gUGx1Z2luIENoYW5nZWQiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSxYRT1faygiW0NvcmVdIFBsdWdpbiBVcmwgSGFzaCBDaGFuZ2VkIix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSksS0U9X2soIltDb3JlXSBMb2FkZWQiKSxKRT1faygiW0NvcmVdIFVzZXIgVHJpZ2dlcmVkIFJlbG9hZCIpLFFFPV9rKCJbQ29yZV0gQXV0byBSZWxvYWQiKSwkRT1faygiW0NvcmVdIFBsdWdpbkxpc3RpbmcgRmV0Y2ggUmVxdWVzdGVkIiksdEE9X2soIltDb3JlXSBQbHVnaW5MaXN0aW5nIEZldGNoIFN1Y2Nlc3NmdWwiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSxlQT1faygiW0NvcmVdIFBsdWdpbkxpc3RpbmcgRmV0Y2ggRmFpbGVkIix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSksbkE9X2soIltDb3JlXSBQb2x5bWVyIENvbXBvbmVudCBSdW5zIEZldGNoIFJlcXVlc3RlZCIpLG9BPV9rKCJbQ29yZV0gUG9seW1lciBDb21wb25lbnQgUnVucyBGZXRjaCBTdWNjZXNzZnVsIiksaUE9X2soIltDb3JlXSBQb2x5bWVyIENvbXBvbmVudCBSdW5zIEZldGNoIEZhaWxlZCIpLGFBPV9rKCJbQ29yZV0gRW52aXJvbm1lbnQgRmV0Y2ggU3VjY2Vzc2Z1bCIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLHJBPV9rKCJbQ29yZV0gUnVuIFNlbGVjdGlvbiBDaGFuZ2VkIix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSksc0E9X2soIltDb3JlXSBSdW4gRmV0Y2ggU3VjY2Vzc2Z1bCIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLGxBPV9rKCJbQ29yZV0gU2lkZSBCYXIgV2lkdGggQ2hhbmdlZCIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pO2Z1bmN0aW9uIGNBKHQsZSxuKXtjb25zdCBvPU9iamVjdC5rZXlzKHQpLGk9T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCksZSkse3ByaXZhdGVOYW1lc3BhY2VkU3RhdGU6e319KTtyZXR1cm57aW5pdGlhbFN0YXRlOmkscmVkdWNlcnM6VlMoaSxCUyh0UiwoKGUse2JlZm9yZTppLGFmdGVyOmEsYmVmb3JlTmFtZXNwYWNlSWQ6cixhZnRlck5hbWVzcGFjZUlkOnN9KT0+e2xldCBsPWU7cmV0dXJuIHIhPT1zJiYobD0oZnVuY3Rpb24gYyhlLG4saSl7dmFyIGE7bGV0IHI9T2JqZWN0LmFzc2lnbih7fSxlLnByaXZhdGVOYW1lc3BhY2VkU3RhdGUpO2lmKG4pe2NvbnN0IHQ9e307Zm9yKGNvbnN0IG4gb2Ygbyl0W25dPWVbbl07cj1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30scikse1tuXTp0fSl9bGV0IHM9e307cmV0dXJuKG51bGw9PT0oYT1lLnByaXZhdGVOYW1lc3BhY2VkU3RhdGUpfHx2b2lkIDA9PT1hP3ZvaWQgMDphW2ldKT9zPWUucHJpdmF0ZU5hbWVzcGFjZWRTdGF0ZVtpXTpuJiYocz10KSxPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxlKSxzKSx7cHJpdmF0ZU5hbWVzcGFjZWRTdGF0ZTpyfSl9KShlLHIscykpLCF4RChpLGEpJiZuJiYobD1uKGwsYSkpLGx9KSkpfX1jb25zdCBkQT1faygiW01ldHJpY3NdIE1ldHJpY3MgU2V0dGluZ3MgUGFuZSBDbG9zZWQiKSxwQT1faygiW01ldHJpY3NdIE1ldHJpY3MgU2V0dGluZ3MgUGFuZSBUb2dnbGVkIiksbUE9X2soIltNZXRyaWNzXSBNZXRyaWNzIFRhZyBNZXRhZGF0YSBSZXF1ZXN0ZWQiKSxmQT1faygiW01ldHJpY3NdIE1ldHJpY3MgVGFnIE1ldGFkYXRhIExvYWRlZCIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLHVBPV9rKCJbTWV0cmljc10gTWV0cmljcyBUYWcgTWV0YWRhdGEgRmFpbGVkIiksZ0E9X2soIltNZXRyaWNzXSBNZXRyaWNzIFNldHRpbmdzIENoYW5nZSBUb29sdGlwIix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSk7X2soIltNZXRyaWNzXSBNZXRyaWNzIFNldHRpbmdzIFRvZ2dsZSBTaG93IERhdGEgRG93bmxvYWQiKTtjb25zdCBoQT1faygiW01ldHJpY3NdIE1ldHJpY3MgU2V0dGluZyBUb2dnbGUgSWdub3JlIE91dGxpZXIiKSxiQT1faygiW01ldHJpY3NdIE1ldHJpY3MgU2V0dGluZyBDaGFuZ2UgWCBBeGlzIFR5cGUiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSx5QT1faygiW01ldHJpY3NdIE1ldHJpY3MgU2V0dGluZyBDaGFuZ2UgQ2FyZCBXaWR0aCIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLF9BPV9rKCJbTWV0cmljc10gTWV0cmljcyBTZXR0aW5nIFJlc2V0IENhcmQgV2lkdGgiKSxDQT1faygiW01ldHJpY3NdIE1ldHJpY3MgU2V0dGluZyBDaGFuZ2UgU2NhbGFyIFNtb290aGluZyIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLE1BPV9rKCJbTWV0cmljc10gTWV0cmljcyBTZXR0aW5nIFBhcnRpdGlvbiBOb24gTW9ub3RvbmljIFggVG9nZ2xlZCIpLHZBPV9rKCJbTWV0cmljc10gTWV0cmljcyBTZXR0aW5nIENoYW5nZSBJbWFnZSBCcmlnaHRuZXNzIix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSkseEE9X2soIltNZXRyaWNzXSBNZXRyaWNzIFNldHRpbmcgQ2hhbmdlIEltYWdlIENvbnRyYXN0Iix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSksT0E9X2soIltNZXRyaWNzXSBJbWFnZSBCcmlnaHRuZXNzIFNldHRpbmcgUmVzZXQiKSxQQT1faygiW01ldHJpY3NdIEltYWdlIENvbnRyYXN0IFNldHRpbmcgUmVzZXQiKSx3QT1faygiW01ldHJpY3NdIE1ldHJpY3MgU2V0dGluZyBUb2dnbGUgSW1hZ2UgU2hvdyBBY3R1YWwgU2l6ZSIpLGtBPV9rKCJbTWV0cmljc10gTWV0cmljcyBTZXR0aW5nIENoYW5nZSBIaXN0b2dyYW0gTW9kZSIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLFNBPV9rKCJbTWV0cmljc10gTXVsdGlwbGUgVGltZSBTZXJpZXMgUmVxdWVzdGVkIix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSksREE9X2soIltNZXRyaWNzXSBGZXRjaCBUaW1lIFNlcmllcyBSZXF1ZXN0IEZhaWxlZCIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLFJBPV9rKCJbTWV0cmljc10gRmV0Y2ggVGltZSBTZXJpZXMgUmVzcG9uc2UgTG9hZGVkIix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSksRUE9X2soIltNZXRyaWNzXSBDYXJkIFZpc2liaWxpdHkgQ2hhbmdlZCIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLEFBPV9rKCJbTWV0cmljc10gQ2FyZCBTdGVwIFNsaWRlciBDaGFuZ2VkIix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSksVEE9X2soIltNZXRyaWNzXSBUYWcgRmlsdGVyIENoYW5nZWQiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSxOQT1faygiW01ldHJpY3NdIE1ldHJpY3MgVGFnIEdyb3VwIEV4cGFuc2lvbiBDaGFuZ2VkIix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSksekE9X2soIltNZXRyaWNzXSBDYXJkIFBpbiBTdGF0ZSBUb2dnbGVkIix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSksSUE9X2soIltNZXRyaWNzXSBUb2dnbGUgVmlzaWJsZSBQbHVnaW4iLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSxIQT1faygiW01ldHJpY3NdIFRvZ2dsZSBTaG93IEFsbCBQbHVnaW5zIiksRkE9X2soIltNZXRyaWNzXSBMaW5rZWQgVGltZSBTZWxlY3Rpb24gQ2hhbmdlZCIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLExBPV9rKCJbTWV0cmljc10gTGlua2VkIFRpbWUgU2VsZWN0aW9uIENsZWFyZWQiKSxCQT1faygiW01ldHJpY3NdIFNlbGVjdCBUaW1lIEVuYWJsZSBUb2dnbGUiKSxWQT1faygiW01ldHJpY3NdIFVzZSBSYW5nZSBTZWxlY3QgVGltZSBUb2dnbGUiKSxqQT1faygiW01ldHJpY3NdIE1ldHJpY3MgUHJvbW8gRGlzbWlzc2VkIiksVUE9X2soIltNZXRyaWNzXSBNZXRyaWNzIFByb21vIEdvIFRvIFNjYWxhcnMiKTtmdW5jdGlvbiBXQSguLi50KXtyZXR1cm4oZSxuKT0+e2xldCBvPWU7Zm9yKGNvbnN0IGUgb2YgdClvPWUobyxuKTtyZXR1cm4gb319Y29uc3QgR0E9ImNvcmUiLFlBPXthY3RpdmVQbHVnaW46bnVsbCxwbHVnaW5zOnt9LGNvcmVEYXRhTG9hZFN0YXRlOntzdGF0ZTpVRS5OT1RfTE9BREVELGxhc3RMb2FkZWRUaW1lSW5NczpudWxsfSxwbHVnaW5zTGlzdExvYWRlZDp7c3RhdGU6VUUuTk9UX0xPQURFRCxsYXN0TG9hZGVkVGltZUluTXM6bnVsbCxmYWlsdXJlQ29kZTpudWxsfSxlbnZpcm9ubWVudDp7ZGF0YV9sb2NhdGlvbjoiIix3aW5kb3dfdGl0bGU6IiJ9LHBvbHltZXJSdW5zTG9hZFN0YXRlOntzdGF0ZTpVRS5OT1RfTE9BREVELGxhc3RMb2FkZWRUaW1lSW5NczpudWxsfSxwb2x5bWVySW50ZXJvcFJ1bnM6W10scG9seW1lckludGVyb3BSdW5TZWxlY3Rpb246bmV3IFNldCxzaWRlQmFyV2lkdGhJblBlcmNlbnQ6MjB9LHFBPVZTKFlBLEJTKFpFLFhFLCgodCx7cGx1Z2luOmV9KT0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHthY3RpdmVQbHVnaW46ZX0pKSksQlMoJEUsKHQ9Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7Y29yZURhdGFMb2FkU3RhdGU6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQuY29yZURhdGFMb2FkU3RhdGUpLHtzdGF0ZTpVRS5MT0FESU5HfSkscGx1Z2luc0xpc3RMb2FkZWQ6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQucGx1Z2luc0xpc3RMb2FkZWQpLHtzdGF0ZTpVRS5MT0FESU5HfSl9KSkpLEJTKGVBLCgodCx7ZmFpbHVyZUNvZGU6ZX0pPT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse2NvcmVEYXRhTG9hZFN0YXRlOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LmNvcmVEYXRhTG9hZFN0YXRlKSx7c3RhdGU6VUUuRkFJTEVEfSkscGx1Z2luc0xpc3RMb2FkZWQ6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQucGx1Z2luc0xpc3RMb2FkZWQpLHtzdGF0ZTpVRS5GQUlMRUQsZmFpbHVyZUNvZGU6ZX0pfSkpKSxCUyh0QSwoKHQse3BsdWdpbnM6ZX0pPT57Y29uc3Qgbj1PYmplY3Qua2V5cyhlKS5maW5kKCh0PT5lW3RdLmVuYWJsZWQpKXx8bnVsbCxvPXQuYWN0aXZlUGx1Z2lufHxuLGk9RGF0ZS5ub3coKTtsZXQgYT10LmNvcmVEYXRhTG9hZFN0YXRlO3JldHVybiB0LnBvbHltZXJSdW5zTG9hZFN0YXRlLnN0YXRlPT09VUUuTE9BREVEJiYoYT17c3RhdGU6VUUuTE9BREVELGxhc3RMb2FkZWRUaW1lSW5NczppfSksT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHthY3RpdmVQbHVnaW46byxjb3JlRGF0YUxvYWRTdGF0ZTphLHBsdWdpbnM6ZSxwbHVnaW5zTGlzdExvYWRlZDp7c3RhdGU6VUUuTE9BREVELGxhc3RMb2FkZWRUaW1lSW5NczppLGZhaWx1cmVDb2RlOm51bGx9fSl9KSksQlMobkEsKHQ9Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7Y29yZURhdGFMb2FkU3RhdGU6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQuY29yZURhdGFMb2FkU3RhdGUpLHtzdGF0ZTpVRS5MT0FESU5HfSkscG9seW1lclJ1bnNMb2FkU3RhdGU6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQucG9seW1lclJ1bnNMb2FkU3RhdGUpLHtzdGF0ZTpVRS5MT0FESU5HfSl9KSkpLEJTKG9BLCh0PT57Y29uc3QgZT1EYXRlLm5vdygpO2xldCBuPXQuY29yZURhdGFMb2FkU3RhdGU7cmV0dXJuIHQucGx1Z2luc0xpc3RMb2FkZWQuc3RhdGU9PT1VRS5MT0FERUQmJihuPXtzdGF0ZTpVRS5MT0FERUQsbGFzdExvYWRlZFRpbWVJbk1zOmV9KSxPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse2NvcmVEYXRhTG9hZFN0YXRlOm4scG9seW1lclJ1bnNMb2FkU3RhdGU6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQucG9seW1lclJ1bnNMb2FkU3RhdGUpLHtzdGF0ZTpVRS5MT0FERUQsbGFzdExvYWRlZFRpbWVJbk1zOmV9KX0pfSkpLEJTKGlBLCh0PT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse2NvcmVEYXRhTG9hZFN0YXRlOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LmNvcmVEYXRhTG9hZFN0YXRlKSx7c3RhdGU6VUUuRkFJTEVEfSkscG9seW1lclJ1bnNMb2FkU3RhdGU6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQucG9seW1lclJ1bnNMb2FkU3RhdGUpLHtzdGF0ZTpVRS5GQUlMRUR9KX0pKSksQlMoYUEsKCh0LHtlbnZpcm9ubWVudDplfSk9Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7ZW52aXJvbm1lbnQ6ZX0pKSksQlMoc0EsKCh0LHtydW5zOmV9KT0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtwb2x5bWVySW50ZXJvcFJ1bnM6ZX0pKSksQlMockEsKCh0LHtuZXh0U2VsZWN0aW9uOmV9KT0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtwb2x5bWVySW50ZXJvcFJ1blNlbGVjdGlvbjpuZXcgU2V0KGUpfSkpKSxCUyhsQSwoKHQse3dpZHRoSW5QZXJjZW50OmV9KT0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtzaWRlQmFyV2lkdGhJblBlcmNlbnQ6TWF0aC5taW4oTWF0aC5tYXgoMCxlKSwxMDApfSkpKSxCUyhxUiwoKHQse3BhcnRpYWxTZXR0aW5nczplfSk9Pntjb25zdCBuPU9iamVjdC5hc3NpZ24oe30sdCksbz1lLnNpZGVCYXJXaWR0aEluUGVyY2VudDtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIG8mJm8+PTAmJm88PTEwMCYmKG4uc2lkZUJhcldpZHRoSW5QZXJjZW50PW8pLG59KSksQlMoVUEsKHQ9Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7YWN0aXZlUGx1Z2luOiJzY2FsYXJzIn0pKSkpLHtyZWR1Y2VyczpaQX09Y0EoWUEse30pO2Z1bmN0aW9uIFhBKHQsZSl7cmV0dXJuIFdBKHFBLFpBKSh0LGUpfWNvbnN0IEtBPV9TKEdBKSxKQT1iUyhLQSwodD0+dC5wbHVnaW5zTGlzdExvYWRlZCkpLFFBPWJTKEtBLCh0PT50LnBvbHltZXJSdW5zTG9hZFN0YXRlKSksJEE9YlMoS0EsKHQ9PnQuY29yZURhdGFMb2FkU3RhdGUuc3RhdGUpKSx0VD1iUyhLQSwodD0+dC5jb3JlRGF0YUxvYWRTdGF0ZS5sYXN0TG9hZGVkVGltZUluTXMpKSxlVD1iUyhLQSwodD0+dC5hY3RpdmVQbHVnaW4pKSxuVD1iUyhLQSwodD0+dC5wbHVnaW5zKSksb1Q9YlMoS0EsKHQ9PnQuZW52aXJvbm1lbnQpKSxpVD1iUyhLQSwodD0+dC5zaWRlQmFyV2lkdGhJblBlcmNlbnQpKSxhVD1uZXcgU2V0KFtfRC5DT01QQVJFX0VYUEVSSU1FTlQsX0QuRVhQRVJJTUVOVCxfRC5OT1RfU0VUXSk7Y2xhc3MgclR7Y29uc3RydWN0b3IodCxlLG4pe3RoaXMuYWN0aW9ucyQ9dCx0aGlzLnN0b3JlPWUsdGhpcy53ZWJhcHBEYXRhU291cmNlPW4sdGhpcy50ZkJhY2tlbmQ9e3JlZjpkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0Zi1iYWNrZW5kIikudGZfYmFja2VuZH0sdGhpcy5vbkRhc2hib2FyZExvYWQkPXBlKHRoaXMuYWN0aW9ucyQucGlwZSgkUyhLRSx0UikscWUodGhpcy5zdG9yZS5zZWxlY3QoaFIpKSx3ZSgoKFssdF0sWyxlXSk9PnhEKHQsZSkpKSksdGhpcy5hY3Rpb25zJC5waXBlKCRTKFFFLEpFKSkpLnBpcGUocWUodGhpcy5zdG9yZS5zZWxlY3QoTVIpKSx1ZSgoKFssdF0pPT5hVC5oYXModCkpKSxZZSgxLHZvaWQgMCx7bGVhZGluZzohMH0pKSx0aGlzLmZldGNoV2ViQXBwRGF0YSQ9V1MoKCgpPT5wZSh0aGlzLm9uRGFzaGJvYXJkTG9hZCQucGlwZShxZSh0aGlzLnN0b3JlLnNlbGVjdChKQSksdGhpcy5zdG9yZS5zZWxlY3QoQkQpKSx1ZSgoKFsse3N0YXRlOnR9XSk9PnQhPT1VRS5MT0FESU5HKSksV2UoKCgpPT50aGlzLnN0b3JlLmRpc3BhdGNoKCRFKCkpKSksJHQoKChbLCx0XSk9PihmdW5jdGlvbiBlKCl7Zm9yKHZhciB0PVtdLGU9MDtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXRbZV09YXJndW1lbnRzW2VdO3ZhciBuPUF0KHQpLG89ZmUodCk7cmV0dXJuIG8ubGVuZ3RoP25ldyBUKChmdW5jdGlvbih0KXt2YXIgZT1vLm1hcCgoZnVuY3Rpb24oKXtyZXR1cm5bXX0pKSxpPW8ubWFwKChmdW5jdGlvbigpe3JldHVybiExfSkpO3QuYWRkKChmdW5jdGlvbigpe2U9aT1udWxsfSkpO2Zvcih2YXIgcz1mdW5jdGlvbihzKXt3dChvW3NdKS5zdWJzY3JpYmUobmV3IEgodCwoZnVuY3Rpb24obyl7aWYoZVtzXS5wdXNoKG8pLGUuZXZlcnkoKGZ1bmN0aW9uKHQpe3JldHVybiB0Lmxlbmd0aH0pKSl7dmFyIGw9ZS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0LnNoaWZ0KCl9KSk7dC5uZXh0KG4/bi5hcHBseSh2b2lkIDAscihbXSxhKGwpKSk6bCksZS5zb21lKChmdW5jdGlvbih0LGUpe3JldHVybiF0Lmxlbmd0aCYmaVtlXX0pKSYmdC5jb21wbGV0ZSgpfX0pLChmdW5jdGlvbigpe2lbc109ITAsIWVbc10ubGVuZ3RoJiZ0LmNvbXBsZXRlKCl9KSkpfSxsPTA7IXQuY2xvc2VkJiZsPG8ubGVuZ3RoO2wrKylzKGwpO3JldHVybiBmdW5jdGlvbigpe2U9aT1udWxsfX0pKTpkdH0pKHRoaXMud2ViYXBwRGF0YVNvdXJjZS5mZXRjaFBsdWdpbnNMaXN0aW5nKHQpLHRoaXMuZmV0Y2hFbnZpcm9ubWVudCgpKS5waXBlKFZ0KCgoW3RdKT0+e3RoaXMuc3RvcmUuZGlzcGF0Y2godEEoe3BsdWdpbnM6dH0pKX0pKSxoZSgodD0+KHRoaXMuc3RvcmUuZGlzcGF0Y2goZUEodCBpbnN0YW5jZW9mIEdFP3tmYWlsdXJlQ29kZTp0LmZhaWx1cmVDb2RlfTp7ZmFpbHVyZUNvZGU6TEUuVU5LTk9XTn0pKSxkdCkpKSkpKSksdGhpcy5vbkRhc2hib2FyZExvYWQkLnBpcGUoVnQoKChbLHRdKT0+dCkpLFZlKCh0PT50IT09X0QuQ09NUEFSRV9FWFBFUklNRU5UP3p0KFtdKTp0aGlzLnN0b3JlLnNlbGVjdChPUikucGlwZSh3ZSgoKHQsZSk9Pntjb25zdCBuPU9iamVjdC5lbnRyaWVzKHQpLG89bmV3IE1hcChPYmplY3QuZW50cmllcyhlKSk7aWYobi5sZW5ndGghPT1vLnNpemUpcmV0dXJuITE7Zm9yKGNvbnN0W3QsZV1vZiBuKXtpZighby5nZXQodCkpcmV0dXJuITE7aWYoby5nZXQodCkuYWxpYXNUZXh0IT09ZS5hbGlhc1RleHR8fG8uZ2V0KHQpLmFsaWFzTnVtYmVyIT09ZS5hbGlhc051bWJlcilyZXR1cm4hMX1yZXR1cm4hMH0pKSxQZSgwKSxZZSg1MDAsdm9pZCAwLHtsZWFkaW5nOiEwLHRyYWlsaW5nOiEwfSkpKSkscWUodGhpcy5zdG9yZS5zZWxlY3QoTVIpLHRoaXMuc3RvcmUuc2VsZWN0KFFBKSksdWUoKChbLHQsZV0pPT5hVC5oYXModCkmJmUuc3RhdGUhPT1VRS5MT0FESU5HKSksV2UoKCgpPT57dGhpcy5zdG9yZS5kaXNwYXRjaChuQSgpKX0pKSxWZSgoKCk9PnRoaXMucmVmcmVzaFBvbHltZXJSdW5zKCkpKSxXZSgoKCk9Pnt0aGlzLnN0b3JlLmRpc3BhdGNoKG9BKCkpfSkpLGhlKCgoKT0+KHRoaXMuc3RvcmUuZGlzcGF0Y2goaUEoKSksZHQpKSkpKSkse2Rpc3BhdGNoOiExfSksdGhpcy5kaXNwYXRjaENoYW5nZVBsdWdpbiQ9V1MoKCgpPT5wZSh0aGlzLm9uRGFzaGJvYXJkTG9hZCQsdGhpcy5hY3Rpb25zJC5waXBlKCRTKHRBKSkpLnBpcGUocWUodGhpcy5zdG9yZS5zZWxlY3QoZVQpKSxWdCgoKFssdF0pPT50KSksd2UoKSx1ZSgodD0+bnVsbCE9PXQpKSx2ZSgxKSxXZSgodD0+e3RoaXMuc3RvcmUuZGlzcGF0Y2goWkUoe3BsdWdpbjp0fSkpfSkpKSkse2Rpc3BhdGNoOiExfSl9cmVmcmVzaFBvbHltZXJSdW5zKCl7cmV0dXJuIFB0KHRoaXMudGZCYWNrZW5kLnJlZi5ydW5zU3RvcmUucmVmcmVzaCgpKX1mZXRjaEVudmlyb25tZW50KCl7cmV0dXJuIHRoaXMud2ViYXBwRGF0YVNvdXJjZS5mZXRjaEVudmlyb25tZW50KCkucGlwZShXZSgodD0+e3RoaXMuc3RvcmUuZGlzcGF0Y2goYUEoe2Vudmlyb25tZW50OnR9KSl9KSkpfX1yVC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8clQpKFRyKFFTKSxUcihpUyksVHIoWUUpKX0sclQuybVwcm92PVNuKHt0b2tlbjpyVCxmYWN0b3J5OnJULsm1ZmFjfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihyVCxbe3R5cGU6VW19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6UVN9LHt0eXBlOmlTfSx7dHlwZTpZRX1dfSksbnVsbCk7Y29uc3Qgc1Q9bmV3IGVyKCJDb3JlIEZlYXR1cmUgQ29uZmlnIik7ZnVuY3Rpb24gbFQodCl7cmV0dXJue2luaXRpYWxTdGF0ZTpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sWUEpLHthY3RpdmVQbHVnaW46dC5nZXRQbHVnaW5JZCgpfHxudWxsfSl9fWZ1bmN0aW9uIGNUKCl7cmV0dXJuIGJTKGlULCh0PT4oe3NpZGVCYXJXaWR0aEluUGVyY2VudDp0fSkpKX1jbGFzcyBkVHt9ZFQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGRUKX0sZFQuybVtb2Q9Zm8oe3R5cGU6ZFR9KSxkVC7JtWluaj1Ebih7cHJvdmlkZXJzOlt7cHJvdmlkZTpzVCxkZXBzOltUUl0sdXNlRmFjdG9yeTpsVH1dLGltcG9ydHM6W1toRC5mb3JGZWF0dXJlKFtyVF0pLFRTLmZvckZlYXR1cmUoR0EsWEEsc1QpLHFFLHpSLmRlZmluZUdsb2JhbFNldHRpbmcoY1QpXV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKGRULFt7dHlwZTpMXyxhcmdzOlt7aW1wb3J0czpbaEQuZm9yRmVhdHVyZShbclRdKSxUUy5mb3JGZWF0dXJlKEdBLFhBLHNUKSxxRSx6Ui5kZWZpbmVHbG9iYWxTZXR0aW5nKGNUKV0scHJvdmlkZXJzOlt7cHJvdmlkZTpzVCxkZXBzOltUUl0sdXNlRmFjdG9yeTpsVH1dfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmdW8oZFQse2ltcG9ydHM6W2dELEFTLHFFLHpSXX0pO2NvbnN0IHBUPW5ldyBlcigiW0FsZXJ0XSBBY3Rpb24tVG8tQWxlcnQgUHJvdmlkZXIiKTtjbGFzcyBtVHtjb25zdHJ1Y3Rvcih0KXt0aGlzLnByb3ZpZGVycz1uZXcgTWFwO2Zvcihjb25zdCBlIG9mIHR8fFtdKWZvcihjb25zdCB0IG9mIGUpe2lmKHRoaXMucHJvdmlkZXJzLmhhcyh0LmFjdGlvbkNyZWF0b3IudHlwZSkpdGhyb3cgbmV3IFJhbmdlRXJyb3IoYCIke3QuYWN0aW9uQ3JlYXRvci50eXBlfSIgaXMgYWxyZWFkeSByZWdpc3RlcmVkIGZvciBhbGVydHMuIE11bHRpcGxlIGFsZXJ0cyBmb3IgdGhlIHNhbWUgYWN0aW9uIGlzIG5vdCBhbGxvd2VkLmApO3RoaXMucHJvdmlkZXJzLnNldCh0LmFjdGlvbkNyZWF0b3IudHlwZSx0LmFsZXJ0RnJvbUFjdGlvbil9fWdldEFsZXJ0RnJvbUFjdGlvbih0KXtjb25zdCBlPXRoaXMucHJvdmlkZXJzLmdldCh0LnR5cGUpO3JldHVybiBlP2UodCk6bnVsbH1zdGF0aWMgcmVnaXN0ZXJBbGVydEFjdGlvbnModCl7cmV0dXJue25nTW9kdWxlOm1ULHByb3ZpZGVyczpbe3Byb3ZpZGU6cFQsbXVsdGk6ITAsdXNlRmFjdG9yeTp0fV19fX1tVC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8bVQpKFRyKHBULDgpKX0sbVQuybVtb2Q9Zm8oe3R5cGU6bVR9KSxtVC7JtWluaj1Ebih7fSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihtVCxbe3R5cGU6TF8sYXJnczpbe31dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpbcFRdfV19XX0pLG51bGwpO2NvbnN0IGZUPV9rKCJbUnVuc10gRmV0Y2ggUnVucyBSZXF1ZXN0ZWQiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSx1VD1faygiW1J1bnNdIEZldGNoIFJ1bnMgU3VjY2VlZGVkIix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSksZ1Q9X2soIltSdW5zXSBGZXRjaCBSdW5zIEZhaWxlZCIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLGhUPV9rKCJbUnVuc10gUnVuIFNlbGVjdGlvbiBUb2dnbGVkIix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSksYlQ9X2soIltSdW5zXSBSdW4gUGFnZSBTZWxlY3Rpb24gVG9nZ2xlZCIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLHlUPV9rKCJbUnVuc10gUnVuIFNlbGVjdG9yIFBhZ2luYXRpb24gT3B0aW9uIENoYW5nZWQiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSxfVD1faygiW1J1bnNdIFJ1biBTZWxlY3RvciBTb3J0IENoYW5nZWQiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSxDVD1faygiW1J1bnNdIFJ1biBTZWxlY3RvciBSZWdleCBGaWx0ZXIgQ2hhbmdlZCIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLE1UPV9rKCJbUnVuc10gUnVuIENvbG9yIENoYW5nZWQiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSx2VD1faygiW1J1bnNdIFJ1biBUYWJsZSBTaG93biIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLHhUPV9rKCJbUnVuc10gUnVuIEdyb3VwIEJ5IENoYW5nZWQiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KTt2YXIgT1QsUFQsd1Qsa1Q7IShmdW5jdGlvbih0KXt0LkRBVEFTRVRfVU5LTk9XTj0iREFUQVNFVF9VTktOT1dOIix0LkRBVEFTRVRfVFJBSU5JTkc9IkRBVEFTRVRfVFJBSU5JTkciLHQuREFUQVNFVF9WQUxJREFUSU9OPSJEQVRBU0VUX1ZBTElEQVRJT04ifSkoT1R8fChPVD17fSkpLChmdW5jdGlvbih0KXt0LlNUQVRVU19VTktOT1dOPSJTVEFUVVNfVU5LTk9XTiIsdC5TVEFUVVNfU1VDQ0VTUz0iU1RBVFVTX1NVQ0NFU1MiLHQuU1RBVFVTX0ZBSUxVUkU9IlNUQVRVU19GQUlMVVJFIix0LlNUQVRVU19SVU5OSU5HPSJTVEFUVVNfUlVOTklORyJ9KShQVHx8KFBUPXt9KSksKGZ1bmN0aW9uKHQpe3QuREFUQV9UWVBFX1VOU0VUPSJEQVRBX1RZUEVfVU5TRVQiLHQuREFUQV9UWVBFX1NUUklORz0iREFUQV9UWVBFX1NUUklORyIsdC5EQVRBX1RZUEVfQk9PTD0iREFUQV9UWVBFX0JPT0wiLHQuREFUQV9UWVBFX0ZMT0FUNjQ9IkRBVEFfVFlQRV9GTE9BVDY0In0pKHdUfHwod1Q9e30pKSwoZnVuY3Rpb24odCl7dFt0LkRJU0NSRVRFPTBdPSJESVNDUkVURSIsdFt0LklOVEVSVkFMPTFdPSJJTlRFUlZBTCJ9KShrVHx8KGtUPXt9KSk7Y2xhc3MgU1R7fVNULsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxTVCl9LFNULsm1cHJvdj1Tbih7dG9rZW46U1QsZmFjdG9yeTpTVC7JtWZhYyxwcm92aWRlZEluOiJyb290In0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoU1QsW3t0eXBlOlVtLGFyZ3M6W3twcm92aWRlZEluOiJyb290In1dfV0sbnVsbCxudWxsKTtjb25zdCBEVD1faygiW0hwYXJhbXNdIEhwYXJhbXMgRGlzY3JldGUgSHBhcmFtIEZpbHRlciBDaGFuZ2VkIix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSksUlQ9X2soIltIcGFyYW1zXSBIcGFyYW1zIEludGVydmFsIEhwYXJhbSBGaWx0ZXIgQ2hhbmdlZCIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLEVUPV9rKCJbSHBhcmFtc10gSHBhcmFtcyBNZXRyaWMgRmlsdGVyIENoYW5nZWQiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KTtmdW5jdGlvbiBBVCh0KXtyZXR1cm4gSlNPTi5zdHJpbmdpZnkoWy4uLnRdLnNvcnQoKSl9ZnVuY3Rpb24gVFQodCl7dmFyIGUsbixvLGk7Y29uc3QgYT1uZXcgTWFwLHI9bmV3IE1hcCxzPW5ldyBNYXA7Zm9yKGNvbnN0IGEgb2YgdClmb3IoY29uc3RbdCxsXW9mIGEpaWYobC50eXBlPT09a1QuRElTQ1JFVEUpe2NvbnN0e3Bvc3NpYmxlVmFsdWVzOmUsdmFsdWVzOm59PXIuZ2V0KHQpfHx7cG9zc2libGVWYWx1ZXM6bmV3IFNldCx2YWx1ZXM6bmV3IFNldH07Zm9yKGNvbnN0IHQgb2YgbC5maWx0ZXJWYWx1ZXMpbi5hZGQodCk7Zm9yKGNvbnN0IHQgb2YgbC5wb3NzaWJsZVZhbHVlcyllLmFkZCh0KTtyLnNldCh0LHtwb3NzaWJsZVZhbHVlczplLHZhbHVlczpufSl9ZWxzZXtjb25zdCBhPXMuZ2V0KHQpO3Muc2V0KHQse2ZpbHRlckxvd2VyVmFsdWU6TWF0aC5taW4obC5maWx0ZXJMb3dlclZhbHVlLG51bGwhPT0oZT1udWxsPT1hP3ZvaWQgMDphLmZpbHRlckxvd2VyVmFsdWUpJiZ2b2lkIDAhPT1lP2U6MS8wKSxmaWx0ZXJVcHBlclZhbHVlOk1hdGgubWF4KGwuZmlsdGVyVXBwZXJWYWx1ZSxudWxsIT09KG49bnVsbD09YT92b2lkIDA6YS5maWx0ZXJVcHBlclZhbHVlKSYmdm9pZCAwIT09bj9uOi0xLzApLG1pblZhbHVlOk1hdGgubWluKGwubWluVmFsdWUsbnVsbCE9PShvPW51bGw9PWE/dm9pZCAwOmEubWluVmFsdWUpJiZ2b2lkIDAhPT1vP286MS8wKSxtYXhWYWx1ZTpNYXRoLm1heChsLm1heFZhbHVlLG51bGwhPT0oaT1udWxsPT1hP3ZvaWQgMDphLm1heFZhbHVlKSYmdm9pZCAwIT09aT9pOi0xLzApfSl9Zm9yKGNvbnN0W3Qse3ZhbHVlczplLHBvc3NpYmxlVmFsdWVzOm59XW9mIHIpYS5zZXQodCx7dHlwZTprVC5ESVNDUkVURSxpbmNsdWRlVW5kZWZpbmVkOiEwLHBvc3NpYmxlVmFsdWVzOlsuLi5uXSxmaWx0ZXJWYWx1ZXM6Wy4uLmVdfSk7Zm9yKGNvbnN0W3Qse21pblZhbHVlOmUsbWF4VmFsdWU6bixmaWx0ZXJMb3dlclZhbHVlOm8sZmlsdGVyVXBwZXJWYWx1ZTppfV1vZiBzKXtpZihhLmhhcyh0KSl7Y29uc3QgZT1hLmdldCh0KTtpZihlLnR5cGU9PT1rVC5ESVNDUkVURSYmZS5wb3NzaWJsZVZhbHVlcy5zb21lKCh0PT50KSkpdGhyb3cgbmV3IFJhbmdlRXJyb3IoYENhbm5vdCBjb21iaW5lIGhwYXJhbSwgJHt0fSwgYXMgaXQgaXMgb2YgbWl4ZWQgdHlwZXMuYCl9YS5zZXQodCx7dHlwZTprVC5JTlRFUlZBTCxpbmNsdWRlVW5kZWZpbmVkOiEwLG1pblZhbHVlOmUsbWF4VmFsdWU6bixmaWx0ZXJMb3dlclZhbHVlOm8sZmlsdGVyVXBwZXJWYWx1ZTppfSl9cmV0dXJuIGF9ZnVuY3Rpb24gTlQodCl7dmFyIGUsbixvLGk7Y29uc3QgYT1uZXcgTWFwO2Zvcihjb25zdCByIG9mIHQpZm9yKGNvbnN0W3Qsc11vZiByKXtjb25zdCByPWEuZ2V0KHQpO2Euc2V0KHQsT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt0eXBlOmtULklOVEVSVkFMLGluY2x1ZGVVbmRlZmluZWQ6ITB9LHIpLHttaW5WYWx1ZTpNYXRoLm1pbihzLm1pblZhbHVlLG51bGwhPT0oZT1udWxsPT1yP3ZvaWQgMDpyLm1pblZhbHVlKSYmdm9pZCAwIT09ZT9lOjEvMCksbWF4VmFsdWU6TWF0aC5tYXgocy5tYXhWYWx1ZSxudWxsIT09KG49bnVsbD09cj92b2lkIDA6ci5tYXhWYWx1ZSkmJnZvaWQgMCE9PW4/bjotMS8wKSxmaWx0ZXJMb3dlclZhbHVlOk1hdGgubWluKHMuZmlsdGVyTG93ZXJWYWx1ZSxudWxsIT09KG89bnVsbD09cj92b2lkIDA6ci5maWx0ZXJMb3dlclZhbHVlKSYmdm9pZCAwIT09bz9vOjEvMCksZmlsdGVyVXBwZXJWYWx1ZTpNYXRoLm1heChzLmZpbHRlclVwcGVyVmFsdWUsbnVsbCE9PShpPW51bGw9PXI/dm9pZCAwOnIuZmlsdGVyVXBwZXJWYWx1ZSkmJnZvaWQgMCE9PWk/aTotMS8wKX0pKX1yZXR1cm4gYX1jb25zdCB6VD1WUyh7c3BlY3M6e30sZmlsdGVyczp7fX0sQlMoRFQsKCh0LGUpPT57dmFyIG47Y29uc3R7ZXhwZXJpbWVudElkczpvLGhwYXJhbU5hbWU6aSxmaWx0ZXJWYWx1ZXM6YSxpbmNsdWRlVW5kZWZpbmVkOnJ9PWUscz1BVChvKSxsPW51bGwhPT0obj10LmZpbHRlcnNbc10pJiZ2b2lkIDAhPT1uP246e2hwYXJhbXM6bmV3IE1hcH0sYz1sLmhwYXJhbXMuZ2V0KGkpO2lmKGMmJmMudHlwZSE9PWtULkRJU0NSRVRFKXRocm93IG5ldyBSYW5nZUVycm9yKGBOZXcgZGlzY3JldGUgZmlsdGVyIG9mICR7aX0gY29uZmxpY3RzIGV4aXN0aW5nIGZpbHRlciBvZiBgK2tUW2MudHlwZV0pO2NvbnN0IGQ9VFQoby5maWx0ZXIoKGU9PkJvb2xlYW4odC5zcGVjc1tlXSkpKS5tYXAoKGU9PnQuc3BlY3NbZV0uaHBhcmFtLmRlZmF1bHRGaWx0ZXJzKSkpLmdldChpKTtpZighZCl0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBzZXQgaHBhcmFtLCAke2l9LCB3aGVuIGl0IGlzIG5vdCBrbm93biBmb3IgZXhwZXJpbWVudElkczogJHtvLmpvaW4oIiwgIil9YCk7aWYoZC50eXBlIT09a1QuRElTQ1JFVEUpdGhyb3cgbmV3IEVycm9yKGBDYW5ub3Qgc2V0ICR7aX0gd2hlbiBkZWZhdWx0IGZpbHRlciBpcyBub3Qgb2YgZGlzY3JldGUgdHlwZS5gKTtjb25zdCBwPW5ldyBTZXQoZC5wb3NzaWJsZVZhbHVlcyksbT1bLi4uYV0uZmlsdGVyKCh0PT4hcC5oYXModCkpKTtpZihtLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoYE5ldyBmaWx0ZXIgZm9yICR7aX0gaGFzIG1vcmUgdGhhbiBvbmUgdmFsdWUgdGhhdCBpcyBub3QgcHJlc2VudCBpbiB0aGUgc3BlYy4gQmFkIHZhbHVlczogJHttLmpvaW4oIiwgIil9YCk7Y29uc3QgZj1uZXcgTWFwKGwuaHBhcmFtcyk7cmV0dXJuIGYuc2V0KGksT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGMpLHt0eXBlOmtULkRJU0NSRVRFLGluY2x1ZGVVbmRlZmluZWQ6cixwb3NzaWJsZVZhbHVlczpbLi4ucF0sZmlsdGVyVmFsdWVzOmF9KSksT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtmaWx0ZXJzOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LmZpbHRlcnMpLHtbc106T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGwpLHtocGFyYW1zOmZ9KX0pfSl9KSksQlMoUlQsKCh0LGUpPT57dmFyIG47Y29uc3R7ZXhwZXJpbWVudElkczpvLGhwYXJhbU5hbWU6aSxmaWx0ZXJMb3dlclZhbHVlOmEsZmlsdGVyVXBwZXJWYWx1ZTpyLGluY2x1ZGVVbmRlZmluZWQ6c309ZSxsPUFUKG8pLGM9bnVsbCE9PShuPXQuZmlsdGVyc1tsXSkmJnZvaWQgMCE9PW4/bjp7bWV0cmljczpuZXcgTWFwLGhwYXJhbXM6bmV3IE1hcH0sZD1jLmhwYXJhbXMuZ2V0KGkpO2lmKGQmJmQudHlwZSE9PWtULklOVEVSVkFMKXRocm93IG5ldyBSYW5nZUVycm9yKGBOZXcgaW50ZXJ2YWwgZmlsdGVyIG9mICR7aX0gY29uZmxpY3RzIGV4aXN0aW5nIGZpbHRlciBvZiBgK2tUW2QudHlwZV0pO2NvbnN0IHA9VFQoby5maWx0ZXIoKGU9PkJvb2xlYW4odC5zcGVjc1tlXSkpKS5tYXAoKGU9PnQuc3BlY3NbZV0uaHBhcmFtLmRlZmF1bHRGaWx0ZXJzKSkpLmdldChpKTtpZighcCl0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBzZXQgaHBhcmEsICR7aX0sIHdoZW4gaXQgaXMgbm90IGtub3duIGZvciBleHBlcmltZW50SWRzOiAke28uam9pbigiLCAiKX1gKTtpZihwLnR5cGUhPT1rVC5JTlRFUlZBTCl0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBzZXQgJHtpfSB3aGVuIGRlZmF1bHQgZmlsdGVyIGlzIG5vdCBvZiBpbnRlcnZhbCB0eXBlLmApO2NvbnN0IG09bmV3IE1hcChjLmhwYXJhbXMpO3JldHVybiBtLnNldChpLE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxkKSx7dHlwZTprVC5JTlRFUlZBTCxpbmNsdWRlVW5kZWZpbmVkOnMsbWluVmFsdWU6cC5taW5WYWx1ZSxtYXhWYWx1ZTpwLm1heFZhbHVlLGZpbHRlckxvd2VyVmFsdWU6YSxmaWx0ZXJVcHBlclZhbHVlOnJ9KSksT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtmaWx0ZXJzOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LmZpbHRlcnMpLHtbbF06T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGMpLHtocGFyYW1zOm19KX0pfSl9KSksQlMoRVQsKCh0LGUpPT57dmFyIG47Y29uc3R7ZXhwZXJpbWVudElkczpvLG1ldHJpY1RhZzppLGZpbHRlckxvd2VyVmFsdWU6YSxmaWx0ZXJVcHBlclZhbHVlOnIsaW5jbHVkZVVuZGVmaW5lZDpzfT1lLGw9QVQobyksYz1udWxsIT09KG49dC5maWx0ZXJzW2xdKSYmdm9pZCAwIT09bj9uOnttZXRyaWNzOm5ldyBNYXAsaHBhcmFtczpuZXcgTWFwfSxkPU5UKG8uZmlsdGVyKChlPT5Cb29sZWFuKHQuc3BlY3NbZV0pKSkubWFwKChlPT50LnNwZWNzW2VdLm1ldHJpYy5kZWZhdWx0RmlsdGVycykpKS5nZXQoaSk7aWYoIWQpdGhyb3cgbmV3IEVycm9yKGBDYW5ub3Qgc2V0IG1ldHJpYywgJHtpfSwgd2hlbiBpdCBpcyBub3Qga25vd24gZm9yIGV4cGVyaW1lbnRJZHM6ICR7by5qb2luKCIsICIpfWApO2NvbnN0IHA9Yy5tZXRyaWNzLmdldChpKSxtPW5ldyBNYXAoYy5tZXRyaWNzKTtyZXR1cm4gbS5zZXQoaSxPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30scCkse3R5cGU6a1QuSU5URVJWQUwsaW5jbHVkZVVuZGVmaW5lZDpzLG1pblZhbHVlOmQubWluVmFsdWUsbWF4VmFsdWU6ZC5tYXhWYWx1ZSxmaWx0ZXJMb3dlclZhbHVlOmEsZmlsdGVyVXBwZXJWYWx1ZTpyfSkpLE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7ZmlsdGVyczpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5maWx0ZXJzKSx7W2xdOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxjKSx7bWV0cmljczptfSl9KX0pfSkpLEJTKHVULCgodCxlKT0+e3ZhciBuLG8saSxhO2lmKDA9PT1PYmplY3Qua2V5cyhlLm5ld1J1bnNBbmRNZXRhZGF0YSkubGVuZ3RoKXJldHVybiB0O2NvbnN0IHI9T2JqZWN0LmFzc2lnbih7fSx0LnNwZWNzKSxzPW5ldyBNYXAsbD1uZXcgU2V0O2Zvcihjb25zdCB0IG9mIE9iamVjdC5rZXlzKGUubmV3UnVuc0FuZE1ldGFkYXRhKSl7Y29uc3QgYz1uZXcgTWFwLGQ9bmV3IE1hcCxwPW5ldyBNYXAsbT1uZXcgTWFwLHtydW5zOmYsbWV0YWRhdGE6dX09ZS5uZXdSdW5zQW5kTWV0YWRhdGFbdF07Zm9yKGNvbnN0IHQgb2YgZil7Y29uc3QgZT11LnJ1blRvSHBhcmFtc0FuZE1ldHJpY3NbdC5pZF07aWYoZSlmb3IoY29uc3QgdCBvZiBlLm1ldHJpY3Mpe2NvbnN0IGU9cy5nZXQodC50YWcpO3Muc2V0KHQudGFnLHttaW46ZT9NYXRoLm1pbihlLm1pbix0LnZhbHVlKTp0LnZhbHVlLG1heDplP01hdGgubWF4KGUubWF4LHQudmFsdWUpOnQudmFsdWV9KX19Zm9yKGNvbnN0e25hbWU6dCxkb21haW46ZX1vZiB1LmhwYXJhbVNwZWNzKWlmKGUudHlwZT09PWtULkRJU0NSRVRFKXtjb25zdCBuPXAuZ2V0KHQpfHxuZXcgU2V0O2Zvcihjb25zdCB0IG9mIGUudmFsdWVzKW4uYWRkKHQpO3Auc2V0KHQsbil9ZWxzZXtjb25zdCBuPW0uZ2V0KHQpO20uc2V0KHQse21pblZhbHVlOm4/TWF0aC5taW4oZS5taW5WYWx1ZSxuLm1pblZhbHVlKTplLm1pblZhbHVlLG1heFZhbHVlOm4/TWF0aC5tYXgoZS5tYXhWYWx1ZSxuLm1heFZhbHVlKTplLm1heFZhbHVlfSl9Zm9yKGNvbnN0IHQgb2YgdS5tZXRyaWNTcGVjcylsLmFkZCh0LnRhZyk7Zm9yKGNvbnN0W3QsZV1vZiBwKWMuc2V0KHQse3R5cGU6a1QuRElTQ1JFVEUsaW5jbHVkZVVuZGVmaW5lZDohMCxwb3NzaWJsZVZhbHVlczpbLi4uZV0sZmlsdGVyVmFsdWVzOlsuLi5lXX0pO2Zvcihjb25zdFt0LHttaW5WYWx1ZTplLG1heFZhbHVlOm59XW9mIG0pYy5zZXQodCx7dHlwZTprVC5JTlRFUlZBTCxpbmNsdWRlVW5kZWZpbmVkOiEwLG1pblZhbHVlOmUsbWF4VmFsdWU6bixmaWx0ZXJMb3dlclZhbHVlOmUsZmlsdGVyVXBwZXJWYWx1ZTpufSk7Zm9yKGNvbnN0IHQgb2YgbCl7Y29uc3QgZT1zLmdldCh0KSxpPW51bGwhPT0obj1udWxsPT1lP3ZvaWQgMDplLm1pbikmJnZvaWQgMCE9PW4/bjowLGE9bnVsbCE9PShvPW51bGw9PWU/dm9pZCAwOmUubWF4KSYmdm9pZCAwIT09bz9vOjA7ZC5zZXQodCx7dHlwZTprVC5JTlRFUlZBTCxpbmNsdWRlVW5kZWZpbmVkOiEwLG1pblZhbHVlOmksbWF4VmFsdWU6YSxmaWx0ZXJMb3dlclZhbHVlOmksZmlsdGVyVXBwZXJWYWx1ZTphfSl9clt0XT17aHBhcmFtOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxudWxsPT09KGk9clt0XSl8fHZvaWQgMD09PWk/dm9pZCAwOmkuaHBhcmFtKSx7c3BlY3M6dS5ocGFyYW1TcGVjcyxkZWZhdWx0RmlsdGVyczpjfSksbWV0cmljOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxudWxsPT09KGE9clt0XSl8fHZvaWQgMD09PWE/dm9pZCAwOmEubWV0cmljKSx7c3BlY3M6dS5tZXRyaWNTcGVjcyxkZWZhdWx0RmlsdGVyczpkfSl9fXJldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3NwZWNzOnJ9KX0pKSk7ZnVuY3Rpb24gSVQodCxlKXtyZXR1cm4gelQodCxlKX1jb25zdCBIVD0iaHBhcmFtcyI7Y2xhc3MgRlR7fUZULsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxGVCl9LEZULsm1bW9kPWZvKHt0eXBlOkZUfSksRlQuybVpbmo9RG4oe2ltcG9ydHM6W1tUUy5mb3JGZWF0dXJlKEhULElUKV1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihGVCxbe3R5cGU6TF8sYXJnczpbe2ltcG9ydHM6W1RTLmZvckZlYXR1cmUoSFQsSVQpXX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnVvKEZULHtpbXBvcnRzOltBU119KTtjbGFzcyBMVHt9ZnVuY3Rpb24gQlQodCxlKXtyZXR1cm5gJHtlfS8ke3R9YH1MVC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8TFQpfSxMVC7JtW1vZD1mbyh7dHlwZTpMVH0pLExULsm1aW5qPURuKHtpbXBvcnRzOltbRlRdXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoTFQsW3t0eXBlOkxfLGFyZ3M6W3tpbXBvcnRzOltGVF19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZ1byhMVCx7aW1wb3J0czpbRlRdfSk7Y2xhc3MgVlR7Y29uc3RydWN0b3IodCl7dGhpcy5odHRwPXR9ZmV0Y2hSdW5zKHQpe3JldHVybiB0aGlzLmh0dHAuZ2V0KCJkYXRhL3J1bnMiKS5waXBlKFZ0KChlPT5lLm1hcCgoZT0+KHtpZDpCVChlLHQpLG5hbWU6ZSxzdGFydFRpbWU6MH0pKSkpKSl9ZmV0Y2hIcGFyYW1zTWV0YWRhdGEodCl7cmV0dXJuIHp0KHtocGFyYW1TcGVjczpbXSxtZXRyaWNTcGVjczpbXSxydW5Ub0hwYXJhbXNBbmRNZXRyaWNzOnt9fSl9fVZULsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxWVCkoVHIoSEUpKX0sVlQuybVwcm92PVNuKHt0b2tlbjpWVCxmYWN0b3J5OlZULsm1ZmFjfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihWVCxbe3R5cGU6VW19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6SEV9XX0pLG51bGwpO2NsYXNzIGpUe31qVC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8alQpfSxqVC7JtW1vZD1mbyh7dHlwZTpqVH0pLGpULsm1aW5qPURuKHtwcm92aWRlcnM6W3twcm92aWRlOlNULHVzZUNsYXNzOlZUfV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKGpULFt7dHlwZTpMXyxhcmdzOlt7cHJvdmlkZXJzOlt7cHJvdmlkZTpTVCx1c2VDbGFzczpWVH1dfV19XSxudWxsLG51bGwpO2NvbnN0IFVUPSJhbGVydHMiLFdUPWJTKF9TKFVUKSwodD0+dC5sYXRlc3RBbGVydCkpLEdUPSJleHBlcmltZW50cyIsWVQ9YlMoX1MoR1QpLCh0PT50LmRhdGEpKSxxVD1iUyhZVCwoKHQsZSk9Pntjb25zdHtleHBlcmltZW50SWQ6bn09ZTtyZXR1cm4gdC5leHBlcmltZW50TWFwW25dfHxudWxsfSkpOwovKiEgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgIENvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLgoKICAgIFBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnksIGFuZC9vciBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUgZm9yIGFueQogICAgcHVycG9zZSB3aXRoIG9yIHdpdGhvdXQgZmVlIGlzIGhlcmVieSBncmFudGVkLgoKICAgIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiIEFORCBUSEUgQVVUSE9SIERJU0NMQUlNUyBBTEwgV0FSUkFOVElFUyBXSVRICiAgICBSRUdBUkQgVE8gVEhJUyBTT0ZUV0FSRSBJTkNMVURJTkcgQUxMIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkKICAgIEFORCBGSVRORVNTLiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFIExJQUJMRSBGT1IgQU5ZIFNQRUNJQUwsIERJUkVDVCwKICAgIElORElSRUNULCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgT1IgQU5ZIERBTUFHRVMgV0hBVFNPRVZFUiBSRVNVTFRJTkcgRlJPTQogICAgTE9TUyBPRiBVU0UsIERBVEEgT1IgUFJPRklUUywgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1IKICAgIE9USEVSIFRPUlRJT1VTIEFDVElPTiwgQVJJU0lORyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1IKICAgIFBFUkZPUk1BTkNFIE9GIFRISVMgU09GVFdBUkUuCiAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwpmdW5jdGlvbiBaVCh0LGUpe3ZhciBuPXt9O2Zvcih2YXIgbyBpbiB0KU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LG8pJiZlLmluZGV4T2Yobyk8MCYmKG5bb109dFtvXSk7aWYobnVsbCE9dCYmImZ1bmN0aW9uIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBpPTA7Zm9yKG89T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyh0KTtpPG8ubGVuZ3RoO2krKyllLmluZGV4T2Yob1tpXSk8MCYmT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHQsb1tpXSkmJihuW29baV1dPXRbb1tpXV0pfXJldHVybiBufWZ1bmN0aW9uIFhUKHQsZSxuLG8pe3JldHVybiBuZXcobnx8KG49UHJvbWlzZSkpKChmdW5jdGlvbihpLGEpe2Z1bmN0aW9uIHIodCl7dHJ5e2woby5uZXh0KHQpKX1jYXRjaCh0KXthKHQpfX1mdW5jdGlvbiBzKHQpe3RyeXtsKG8udGhyb3codCkpfWNhdGNoKHQpe2EodCl9fWZ1bmN0aW9uIGwodCl7dC5kb25lP2kodC52YWx1ZSk6KGZ1bmN0aW9uIGUodCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBuP3Q6bmV3IG4oKGZ1bmN0aW9uKGUpe2UodCl9KSl9KSh0LnZhbHVlKS50aGVuKHIscyl9bCgobz1vLmFwcGx5KHQsZXx8W10pKS5uZXh0KCkpfSkpfXZhciBLVCxKVCxRVDshKGZ1bmN0aW9uKHQpe3QuU0NBTEFSUz0ic2NhbGFycyIsdC5ISVNUT0dSQU1TPSJoaXN0b2dyYW1zIix0LklNQUdFUz0iaW1hZ2VzIn0pKEtUfHwoS1Q9e30pKSwoZnVuY3Rpb24odCl7dC5ERUZBVUxUPSJkZWZhdWx0Iix0LkFMUEhBQkVUSUNBTD0iYWxwaGFiZXRpY2FsIix0LkFTQ0VORElORz0iYXNjZW5kaW5nIix0LkRFU0NFTkRJTkc9ImRlc2NlbmRpbmciLHQuTkVBUkVTVD0ibmVhcmVzdCJ9KShKVHx8KEpUPXt9KSksKGZ1bmN0aW9uKHQpe3RbdC5TVEVQPTBdPSJTVEVQIix0W3QuUkVMQVRJVkU9MV09IlJFTEFUSVZFIix0W3QuV0FMTF9USU1FPTJdPSJXQUxMX1RJTUUifSkoUVR8fChRVD17fSkpO2NvbnN0ICRUPSJ0aW1lc2VyaWVzIjtjb25zdCB0Tj1bS1QuSU1BR0VTXTtmdW5jdGlvbiBlTih0KXtyZXR1cm4gdE4uaW5jbHVkZXModCl9Y29uc3Qgbk49W0tULkhJU1RPR1JBTVMsS1QuSU1BR0VTXTtmdW5jdGlvbiBvTih0KXtyZXR1cm4gbk4uaW5jbHVkZXModCl9ZnVuY3Rpb24gaU4odCl7cmV0dXJuIG9OKHQucGx1Z2luKX1jbGFzcyBhTnt9ZnVuY3Rpb24gck4odCl7cmV0dXJuIHQuaGFzT3duUHJvcGVydHkoImVycm9yIil9Y29uc3Qgc049ImRhdGEvcGx1Z2luL3RpbWVzZXJpZXMiO2Z1bmN0aW9uIGxOKHQpe2NvbnN0IGU9dC5pbmRleE9mKCIvIik7cmV0dXJue3J1bjp0LnN1YnN0cmluZyhlKzEpLGV4cGVyaW1lbnRJZDp0LnN1YnN0cmluZygwLGUpfX1mdW5jdGlvbiBjTih0LGUpe3JldHVybmAke2V9LyR7dH1gfWZ1bmN0aW9uIGROKHQsZSl7Y29uc3R7cnVuVG9TZXJpZXM6bixydW46b309dCxpPVpUKHQsWyJydW5Ub1NlcmllcyIsInJ1biJdKSxhPU9iamVjdC5hc3NpZ24oe30saSk7cmV0dXJuIG4mJihhLnJ1blRvU2VyaWVzPXBOKG4sZSkpLG8mJihhLnJ1bklkPWNOKG8sZSkpLGF9ZnVuY3Rpb24gcE4odCxlKXtjb25zdCBuPXt9O2Zvcihjb25zdCBvIGluIHQpaWYodC5oYXNPd25Qcm9wZXJ0eShvKSl7bltjTihvLGUpXT10W29dfXJldHVybiBufWNsYXNzIG1Oe2NvbnN0cnVjdG9yKHQsZSl7dGhpcy5odHRwPXQsdGhpcy5zdG9yZT1lfWZldGNoVGFnTWV0YWRhdGEodCl7Y29uc3QgZT10Lm1hcCgodD0+dGhpcy5odHRwLmdldChgL2V4cGVyaW1lbnQvJHt0fS8ke3NOfS90YWdzYCkucGlwZShWdCgoZT0+KGZ1bmN0aW9uIG4odCxlKXtjb25zdCBuPXt9O2Zvcihjb25zdCBvIG9mIE9iamVjdC5rZXlzKHQpKXtjb25zdCBpPW87aWYoZU4oaSkpe2NvbnN0IG89dFtpXSx7dGFnUnVuU2FtcGxlZEluZm86YX09byxyPVpUKG8sWyJ0YWdSdW5TYW1wbGVkSW5mbyJdKSxzPXt9O2Zvcihjb25zdCB0IGluIGEpYS5oYXNPd25Qcm9wZXJ0eSh0KSYmKHNbdF09cE4oYVt0XSxlKSk7bltpXT1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30scikse3RhZ1J1blNhbXBsZWRJbmZvOnN9KX1lbHNle2NvbnN0IG89dFtpXSx7cnVuVGFnSW5mbzphfT1vLHI9WlQobyxbInJ1blRhZ0luZm8iXSk7bltpXT1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30scikse3J1blRhZ0luZm86cE4oYSxlKX0pfX1yZXR1cm4gbn0pKGUsdCkpKSkpKSxuPXRoaXMuc3RvcmUuc2VsZWN0KE5EKS5waXBlKHVlKEJvb2xlYW4pLHZlKDEpLHFlKHRoaXMuc3RvcmUuc2VsZWN0KFdEKSksVnQoKChbLHRdKT0+dCkpKTtyZXR1cm4gaWUoZSkucGlwZShxZShuKSxWdCgoKFt0LGVdKT0+e2NvbnN0IG49KGZ1bmN0aW9uIG8odCl7Y29uc3QgZT17fTtmb3IoY29uc3QgbiBvZiB0KWZvcihjb25zdCB0IG9mIE9iamVjdC52YWx1ZXMoS1QpKWlmKGVOKHQpKXtlW3RdPWVbdF18fHt0YWdEZXNjcmlwdGlvbnM6e30sdGFnUnVuU2FtcGxlZEluZm86e319O2NvbnN0e3RhZ0Rlc2NyaXB0aW9uczpvLHRhZ1J1blNhbXBsZWRJbmZvOml9PW5bdF07ZVt0XS50YWdEZXNjcmlwdGlvbnM9T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGVbdF0udGFnRGVzY3JpcHRpb25zKSxvKTtjb25zdCBhPWVbdF0udGFnUnVuU2FtcGxlZEluZm87Zm9yKGNvbnN0IHQgb2YgT2JqZWN0LmtleXMoaSkpe2FbdF09YVt0XXx8e307Zm9yKGNvbnN0IGUgb2YgT2JqZWN0LmtleXMoaVt0XSkpYVt0XVtlXT1pW3RdW2VdfX1lbHNle2VbdF09ZVt0XXx8e3RhZ0Rlc2NyaXB0aW9uczp7fSxydW5UYWdJbmZvOnt9fTtjb25zdHt0YWdEZXNjcmlwdGlvbnM6byxydW5UYWdJbmZvOml9PW5bdF07ZVt0XS50YWdEZXNjcmlwdGlvbnM9T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGVbdF0udGFnRGVzY3JpcHRpb25zKSxvKSxlW3RdLnJ1blRhZ0luZm89T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGVbdF0ucnVuVGFnSW5mbyksaSl9cmV0dXJuIGV9KSh0KTtyZXR1cm4gZXx8KG5bS1QuSU1BR0VTXT17dGFnRGVzY3JpcHRpb25zOnt9LHRhZ1J1blNhbXBsZWRJbmZvOnt9fSksbn0pKSl9ZmV0Y2hUaW1lU2VyaWVzKHQpe2NvbnN0IGU9dC5tYXAoKHQ9PntpZihvTih0LnBsdWdpbikpe2NvbnN0IGU9dCx7cnVuSWQ6bn09ZSxvPVpUKGUsWyJydW5JZCJdKSx7cnVuOmksZXhwZXJpbWVudElkOmF9PWxOKG4pLHI9T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LG8pLHtydW46aX0pO3JldHVybiB0aGlzLmZldGNoVGltZVNlcmllc0JhY2tlbmRSZXF1ZXN0KHIsYSkucGlwZShWdCgoKHtyZXNwb25zZTp0LGV4cGVyaW1lbnRJZDplfSk9PmROKHQsZSkpKSl9Y29uc3QgZT10LHtleHBlcmltZW50SWRzOm59PWUsbz1aVChlLFsiZXhwZXJpbWVudElkcyJdKTtyZXR1cm4gaWUobi5tYXAoKHQ9PnRoaXMuZmV0Y2hUaW1lU2VyaWVzQmFja2VuZFJlcXVlc3Qobyx0KSkpKS5waXBlKFZ0KCh0PT57Y29uc3QgZT1aVCh0WzBdLnJlc3BvbnNlLFsicnVuVG9TZXJpZXMiLCJlcnJvciJdKTtmb3IoY29uc3R7cmVzcG9uc2U6bixleHBlcmltZW50SWQ6b31vZiB0KXtjb25zdCB0PWROKG4sbyk7aWYoZS5lcnJvciljb250aW51ZTtjb25zdHtydW5Ub1NlcmllczppLGVycm9yOmF9PXQ7aWYoYSllLmVycm9yPWEsZS5ydW5Ub1Nlcmllcz12b2lkIDA7ZWxzZXtlLnJ1blRvU2VyaWVzPWUucnVuVG9TZXJpZXN8fHt9O2Zvcihjb25zdCB0IG9mIE9iamVjdC5rZXlzKGkpKWUucnVuVG9TZXJpZXNbdF09aVt0XX19cmV0dXJuIGV9KSkpfSkpO3JldHVybiBpZShlKX1mZXRjaFRpbWVTZXJpZXNCYWNrZW5kUmVxdWVzdCh0LGUpe2NvbnN0IG49bmV3IEZvcm1EYXRhO3JldHVybiBuLmFwcGVuZCgicmVxdWVzdHMiLEpTT04uc3RyaW5naWZ5KFt0XSkpLHRoaXMuaHR0cC5wb3N0KGAvZXhwZXJpbWVudC8ke2V9LyR7c059L3RpbWVTZXJpZXNgLG4pLnBpcGUoVnQoKHQ9Pih7cmVzcG9uc2U6dFswXSxleHBlcmltZW50SWQ6ZX0pKSkpfWltYWdlVXJsKHQpe3JldHVybmAke3NOfS9pbWFnZURhdGE/aW1hZ2VJZD0ke3R9YH1kb3dubG9hZFVybCh0LGUsbixvKXtjb25zdHtydW46aSxleHBlcmltZW50SWQ6YX09bE4obik7bGV0IHI7c3dpdGNoKHQpe2Nhc2UgS1QuU0NBTEFSUzpyPSJzY2FsYXJzL3NjYWxhcnMiO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKGBOb3QgaW1wbGVtZW50ZWQ6IGRvd25sb2FkVXJsIGZvciAke3R9IGlzIG5vdCBpbXBsZW1lbnRlZCB5ZXRgKX1pZighYSl0aHJvdyBuZXcgRXJyb3IoImV4cGVyaW1lbnRJZCBpcyBlbXB0eTsgaXQgaXMgcmVxdWlyZWQgdG8gZm9ybSBkb3dubG9hZFVybC4iKTtyZXR1cm5gL2V4cGVyaW1lbnQvJHthfS9kYXRhL3BsdWdpbi8ke3J9PyR7bmV3IFVSTFNlYXJjaFBhcmFtcyh7dGFnOmUscnVuOmksZm9ybWF0Om99KX1gfX1tTi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8bU4pKFRyKEhFKSxUcihpUykpfSxtTi7JtXByb3Y9U24oe3Rva2VuOm1OLGZhY3Rvcnk6bU4uybVmYWN9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKG1OLFt7dHlwZTpVbX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpIRX0se3R5cGU6aVN9XX0pLG51bGwpO2NvbnN0IGZOPW5ldyBVUkxTZWFyY2hQYXJhbXMod2luZG93LmxvY2F0aW9uLnNlYXJjaCk7Y2xhc3MgdU57Z2V0UGFyYW1zKCl7cmV0dXJuIGZOfX11Ti7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8dU4pfSx1Ti7JtXByb3Y9U24oe3Rva2VuOnVOLGZhY3Rvcnk6dU4uybVmYWN9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKHVOLFt7dHlwZTpVbX1dLG51bGwsbnVsbCk7Y2xhc3MgZ057fWdOLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxnTil9LGdOLsm1cHJvdj1Tbih7dG9rZW46Z04sZmFjdG9yeTpnTi7JtWZhY30pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoZ04sW3t0eXBlOlVtfV0sbnVsbCxudWxsKTtjb25zdCBoTj0iZXhwZXJpbWVudGFsUGx1Z2luIixiTj0ic2NhbGFyc0JhdGNoU2l6ZSIseU49ImVuYWJsZUNhcmRXaWR0aFNldHRpbmciLF9OPSJlbmFibGVDb2xvckdyb3VwIixDTj0iZW5hYmxlQ29sb3JHcm91cEJ5UmVnZXgiLE1OPSJkYXJrTW9kZSIsdk49ImVuYWJsZUxpbmtUaW1lIix4Tj0iZW5hYmxlVGltZU5hbWVzcGFjZWRTdGF0ZSI7Y2xhc3MgT057Y29uc3RydWN0b3IodCl7dGhpcy5xdWVyeVBhcmFtcz10fWdldEZlYXR1cmVzKHQ9ITEpe2NvbnN0IGU9dGhpcy5xdWVyeVBhcmFtcy5nZXRQYXJhbXMoKSxuPXQ/dGhpcy5nZXRQYXJ0aWFsRmVhdHVyZXNGcm9tTWVkaWFRdWVyeSgpOnt9O3JldHVybiBlLmhhcyhoTikmJihuLmVuYWJsZWRFeHBlcmltZW50YWxQbHVnaW5zPWUuZ2V0QWxsKGhOKSksZS5oYXMoInRlbnNvcmJvYXJkQ29sYWIiKSYmKG4uaW5Db2xhYj0idHJ1ZSI9PT1lLmdldCgidGVuc29yYm9hcmRDb2xhYiIpKSxlLmhhcyhiTikmJihuLnNjYWxhcnNCYXRjaFNpemU9TnVtYmVyKGUuZ2V0KGJOKSkpLGUuaGFzKF9OKSYmKG4uZW5hYmxlZENvbG9yR3JvdXA9ImZhbHNlIiE9PWUuZ2V0KF9OKSksZS5oYXMoQ04pJiYobi5lbmFibGVkQ29sb3JHcm91cEJ5UmVnZXg9ImZhbHNlIiE9PWUuZ2V0KENOKSksZS5oYXMoTU4pJiYobi5kZWZhdWx0RW5hYmxlRGFya01vZGU9ImZhbHNlIiE9PWUuZ2V0KE1OKSksZS5oYXModk4pJiYobi5lbmFibGVkTGlua2VkVGltZT0iZmFsc2UiIT09ZS5nZXQodk4pKSxlLmhhcyh5TikmJihuLmVuYWJsZWRDYXJkV2lkdGhTZXR0aW5nPSJmYWxzZSIhPT1lLmdldCh5TikpLGUuaGFzKHhOKSYmKG4uZW5hYmxlZFRpbWVOYW1lc3BhY2VkU3RhdGU9ImZhbHNlIiE9PWUuZ2V0KHhOKSksbn1nZXRQYXJ0aWFsRmVhdHVyZXNGcm9tTWVkaWFRdWVyeSgpe2NvbnN0IHQ9e307cmV0dXJuIHdpbmRvdy5tYXRjaE1lZGlhKCIocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIikubWF0Y2hlcyYmKHQuZGVmYXVsdEVuYWJsZURhcmtNb2RlPSEwKSx0fX1PTi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8T04pKFRyKHVOKSl9LE9OLsm1cHJvdj1Tbih7dG9rZW46T04sZmFjdG9yeTpPTi7JtWZhY30pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoT04sW3t0eXBlOlVtfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOnVOfV19KSxudWxsKTtjbGFzcyBQTnt9UE4uybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFBOKX0sUE4uybVtb2Q9Zm8oe3R5cGU6UE59KSxQTi7JtWluaj1Ebih7cHJvdmlkZXJzOltPTix1Tix7cHJvdmlkZTpnTix1c2VDbGFzczpPTn1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihQTixbe3R5cGU6TF8sYXJnczpbe3Byb3ZpZGVyczpbT04sdU4se3Byb3ZpZGU6Z04sdXNlQ2xhc3M6T059XX1dfV0sbnVsbCxudWxsKTtjb25zdCB3Tj1faygiW0ZFQVRVUkUgRkxBR10gUGFydGlhbCBGZWF0dXJlIEZsYWdzIExvYWRlZCIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLGtOPV9rKCJbRkVBVFVSRSBGTEFHXSBFbmFibGUgRGFyayBNb2RlIE92ZXJyaWRlIENoYW5nZWQiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSxTTj1faygiW0ZFQVRVUkUgRkxBR10gRWZmZWN0cyBJbml0Iik7Y2xhc3MgRE57Y29uc3RydWN0b3IodCxlLG4pe3RoaXMuYWN0aW9ucyQ9dCx0aGlzLnN0b3JlPWUsdGhpcy5kYXRhU291cmNlPW4sdGhpcy5nZXRGZWF0dXJlRmxhZ3MkPVdTKCgoKT0+dGhpcy5hY3Rpb25zJC5waXBlKCRTKFNOKSxfZSh0aGlzLnN0b3JlLnNlbGVjdChIRCkpLFZ0KCgoWyx0XSk9Pntjb25zdCBlPXRoaXMuZGF0YVNvdXJjZS5nZXRGZWF0dXJlcyh0KTtyZXR1cm4gd04oe2ZlYXR1cmVzOmV9KX0pKSkpKX1uZ3J4T25Jbml0RWZmZWN0cygpe3JldHVybiBTTigpfX1ETi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8RE4pKFRyKFFTKSxUcihpUyksVHIoZ04pKX0sRE4uybVwcm92PVNuKHt0b2tlbjpETixmYWN0b3J5OkROLsm1ZmFjfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihETixbe3R5cGU6VW19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6UVN9LHt0eXBlOmlTfSx7dHlwZTpnTn1dfSksbnVsbCk7Y29uc3QgUk49e2lzRmVhdHVyZUZsYWdzTG9hZGVkOiExLGRlZmF1bHRGbGFnczp7aXNBdXRvRGFya01vZGVBbGxvd2VkOiEwLGRlZmF1bHRFbmFibGVEYXJrTW9kZTohMSxlbmFibGVEYXJrTW9kZU92ZXJyaWRlOm51bGwsZW5hYmxlZENvbG9yR3JvdXA6ITAsZW5hYmxlZENvbG9yR3JvdXBCeVJlZ2V4OiEwLGVuYWJsZWRFeHBlcmltZW50YWxQbHVnaW5zOltdLGluQ29sYWI6ITEsc2NhbGFyc0JhdGNoU2l6ZTp2b2lkIDAsbWV0cmljc0ltYWdlU3VwcG9ydEVuYWJsZWQ6ITAsZW5hYmxlZExpbmtlZFRpbWU6ITEsZW5hYmxlVGltZVNlcmllc1Byb21vdGlvbjohMSxlbmFibGVkQ2FyZFdpZHRoU2V0dGluZzohMCxlbmFibGVkVGltZU5hbWVzcGFjZWRTdGF0ZTohMX0sZmxhZ092ZXJyaWRlczp7fX0sRU49bmV3IGVyKCJbRmVhdHVyZSBGbGFnXSBTdG9yZSBDb25maWciKTtmdW5jdGlvbiBBTigpe3JldHVybntpbml0aWFsU3RhdGU6Uk59fWNvbnN0IFROPVZTKFJOLEJTKHdOLCgodCx7ZmVhdHVyZXM6ZX0pPT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse2lzRmVhdHVyZUZsYWdzTG9hZGVkOiEwLGZsYWdPdmVycmlkZXM6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQuZmxhZ092ZXJyaWRlcyksZSl9KSkpLEJTKGtOLCgodCx7ZW5hYmxlRGFya01vZGU6ZX0pPT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse2ZsYWdPdmVycmlkZXM6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQuZmxhZ092ZXJyaWRlcykse2VuYWJsZURhcmtNb2RlT3ZlcnJpZGU6ZX0pfSkpKSxCUyhxUiwoKHQse3BhcnRpYWxTZXR0aW5nczplfSk9PntpZighZS50aGVtZU92ZXJyaWRlKXJldHVybiB0O2xldCBuO3N3aXRjaChlLnRoZW1lT3ZlcnJpZGUpe2Nhc2UgRlIuQlJPV1NFUl9ERUZBVUxUOm49bnVsbDticmVhaztjYXNlIEZSLkRBUks6bj0hMDticmVhaztjYXNlIEZSLkxJR0hUOm49ITF9cmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7ZmxhZ092ZXJyaWRlczpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5mbGFnT3ZlcnJpZGVzKSx7ZW5hYmxlRGFya01vZGVPdmVycmlkZTpufSl9KX0pKSk7ZnVuY3Rpb24gTk4odCxlKXtyZXR1cm4gVE4odCxlKX1mdW5jdGlvbiB6Tigpe3JldHVybiBiUyhMRCwodD0+bnVsbD09PXQ/e3RoZW1lT3ZlcnJpZGU6RlIuQlJPV1NFUl9ERUZBVUxUfTp7dGhlbWVPdmVycmlkZTp0P0ZSLkRBUks6RlIuTElHSFR9KSl9Y2xhc3MgSU57fUlOLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxJTil9LElOLsm1bW9kPWZvKHt0eXBlOklOfSksSU4uybVpbmo9RG4oe3Byb3ZpZGVyczpbe3Byb3ZpZGU6RU4sdXNlRmFjdG9yeTpBTn1dLGltcG9ydHM6W1tQTixUUy5mb3JGZWF0dXJlKEFELE5OLEVOKSxoRC5mb3JGZWF0dXJlKFtETl0pLHpSLmRlZmluZUdsb2JhbFNldHRpbmcoek4pXV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKElOLFt7dHlwZTpMXyxhcmdzOlt7aW1wb3J0czpbUE4sVFMuZm9yRmVhdHVyZShBRCxOTixFTiksaEQuZm9yRmVhdHVyZShbRE5dKSx6Ui5kZWZpbmVHbG9iYWxTZXR0aW5nKHpOKV0scHJvdmlkZXJzOlt7cHJvdmlkZTpFTix1c2VGYWN0b3J5OkFOfV19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZ1byhJTix7aW1wb3J0czpbUE4sQVMsZ0QselJdfSk7Y2xhc3MgSE57fWZ1bmN0aW9uIEZOKHQsZSxuLG8pe3JldHVybiB0W2VdLmhhc093blByb3BlcnR5KG4pP2VOKGUpP3RbZV1bbl0uaGFzT3duUHJvcGVydHkobyk/dFtlXVtuXVtvXTpudWxsOnRbZV1bbl06bnVsbH1mdW5jdGlvbiBMTih0LGUsbixvKXtpZihlTihlKSl7Y29uc3QgaT1PYmplY3QuYXNzaWduKHt9LHRbZV0pLGE9KGZ1bmN0aW9uIGkodCxlLG4pe2NvbnN0IG89dC5oYXNPd25Qcm9wZXJ0eShlKT9PYmplY3QuYXNzaWduKHt9LHRbZV0pOnt9LGk9by5oYXNPd25Qcm9wZXJ0eShuKTtyZXR1cm4gb1tuXT1pP09iamVjdC5hc3NpZ24oe30sb1tuXSk6e3J1blRvU2VyaWVzOnt9LHJ1blRvTG9hZFN0YXRlOnt9fSxvfSkoaSxuLG8pO3JldHVybiBpW25dPWEsaX1jb25zdCBhPU9iamVjdC5hc3NpZ24oe30sdFtlXSkscj1hLmhhc093blByb3BlcnR5KG4pO3JldHVybiBhW25dPXI/T2JqZWN0LmFzc2lnbih7fSxhW25dKTp7cnVuVG9TZXJpZXM6e30scnVuVG9Mb2FkU3RhdGU6e319LGF9ZnVuY3Rpb24gQk4odCl7cmV0dXJuIEpTT04uc3RyaW5naWZ5KHQpfWZ1bmN0aW9uIFZOKHQsZSxuKXtjb25zdCBvPU9iamVjdC5hc3NpZ24oe30sbik7Zm9yKGNvbnN0IG4gb2YgZSlvW25dPXQ7cmV0dXJuIG99ZnVuY3Rpb24gak4odCxlLG4sbyl7aWYoZU4oZSkpe2NvbnN0IGk9dFtlXS50YWdSdW5TYW1wbGVkSW5mbztpZighaS5oYXNPd25Qcm9wZXJ0eShuKSlyZXR1cm5bXTtyZXR1cm4gT2JqZWN0LmtleXMoaVtuXSkuZmlsdGVyKCh0PT5vPGlbbl1bdF0ubWF4U2FtcGxlc1BlclN0ZXApKX1jb25zdCBpPXRbZV0udGFnVG9SdW5zO3JldHVybiBpLmhhc093blByb3BlcnR5KG4pP2lbbl06W119ZnVuY3Rpb24gVU4odCxlKXtyZXR1cm4gdC5wbHVnaW49PT1lLnBsdWdpbiYmdC50YWc9PT1lLnRhZyYmdC5zYW1wbGU9PT1lLnNhbXBsZSYmKHQucnVuSWQ9PT1lLnJ1bklkfHwhdC5ydW5JZCYmIWUucnVuSWQpfWZ1bmN0aW9uIFdOKHQsZSxuLG8saSxhKXtjb25zdCByPW5ldyBTZXQodCkscz1bXTtmb3IoY29uc3QgbyBvZiB0KWZvcihjb25zdCB0IG9mIGUpe2lmKFVOKG5bdF0sbykpe3MucHVzaCh0KSxyLmRlbGV0ZShvKTticmVha319aWYoIXMubGVuZ3RoKXJldHVybnt1bnJlc29sdmVkSW1wb3J0ZWRQaW5uZWRDYXJkczp0LGNhcmRNZXRhZGF0YU1hcDpuLGNhcmRUb1Bpbm5lZENvcHk6byxwaW5uZWRDYXJkVG9PcmlnaW5hbDppLGNhcmRTdGVwSW5kZXg6YX07bGV0IGw9e2NhcmRUb1Bpbm5lZENvcHk6byxwaW5uZWRDYXJkVG9PcmlnaW5hbDppLGNhcmRTdGVwSW5kZXg6YSxjYXJkTWV0YWRhdGFNYXA6bn07Zm9yKGNvbnN0IHQgb2YgcylsPUdOKHQsbC5jYXJkVG9QaW5uZWRDb3B5LGwucGlubmVkQ2FyZFRvT3JpZ2luYWwsbC5jYXJkU3RlcEluZGV4LGwuY2FyZE1ldGFkYXRhTWFwKTtyZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGwpLHt1bnJlc29sdmVkSW1wb3J0ZWRQaW5uZWRDYXJkczpbLi4ucl19KX1mdW5jdGlvbiBHTih0LGUsbixvLGkpe2lmKGUuaGFzKHQpKXJldHVybntjYXJkVG9QaW5uZWRDb3B5OmUscGlubmVkQ2FyZFRvT3JpZ2luYWw6bixjYXJkU3RlcEluZGV4Om8sY2FyZE1ldGFkYXRhTWFwOml9O2NvbnN0IGE9bmV3IE1hcChlKSxyPW5ldyBNYXAobikscz1PYmplY3QuYXNzaWduKHt9LG8pLGw9T2JqZWN0LmFzc2lnbih7fSxpKSxjPShmdW5jdGlvbiBkKHQpe3JldHVybiBKU09OLnN0cmluZ2lmeSh7YmFzZUNhcmRJZDp0fSl9KSh0KTthLnNldCh0LGMpLHIuc2V0KGMsdCksby5oYXNPd25Qcm9wZXJ0eSh0KSYmKHNbY109b1t0XSk7Y29uc3QgcD1pW3RdO2lmKCFwKXRocm93IG5ldyBFcnJvcigiQ2Fubm90IHBpbiBhIGNhcmQgd2l0aG91dCBtZXRhZGF0YSIpO3JldHVybiBsW2NdPXAse2NhcmRUb1Bpbm5lZENvcHk6YSxwaW5uZWRDYXJkVG9PcmlnaW5hbDpyLGNhcmRTdGVwSW5kZXg6cyxjYXJkTWV0YWRhdGFNYXA6bH19SE4uybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEhOKX0sSE4uybVtb2Q9Zm8oe3R5cGU6SE59KSxITi7JtWluaj1Ebih7cHJvdmlkZXJzOlt7cHJvdmlkZTphTix1c2VDbGFzczptTn1dLGltcG9ydHM6W1tJTixGRV1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihITixbe3R5cGU6TF8sYXJnczpbe2ltcG9ydHM6W0lOLEZFXSxwcm92aWRlcnM6W3twcm92aWRlOmFOLHVzZUNsYXNzOm1OfV19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZ1byhITix7aW1wb3J0czpbSU4sRkVdfSk7Y29uc3QgWU49MTA7ZnVuY3Rpb24gcU4odCl7cmV0dXJuIHQucGlubmVkQ2FyZFRvT3JpZ2luYWwuc2l6ZSt0LnVucmVzb2x2ZWRJbXBvcnRlZFBpbm5lZENhcmRzLmxlbmd0aDxZTn1jb25zdCBaTj0ibWV0cmljcyIsWE49e2NhcmRNaW5XaWR0aDpudWxsLHRvb2x0aXBTb3J0OkpULkFMUEhBQkVUSUNBTCxpZ25vcmVPdXRsaWVyczohMCx4QXhpc1R5cGU6UVQuU1RFUCxzY2FsYXJTbW9vdGhpbmc6LjYsc2NhbGFyUGFydGl0aW9uTm9uTW9ub3RvbmljWDohMSxpbWFnZUJyaWdodG5lc3NJbk1pbGxpOjFlMyxpbWFnZUNvbnRyYXN0SW5NaWxsaToxZTMsaW1hZ2VTaG93QWN0dWFsU2l6ZTohMSxoaXN0b2dyYW1Nb2RlOmpFLk9GRlNFVH0sS049X1MoWk4pLEpOPWJTKEtOLCh0PT50LnRhZ01ldGFkYXRhTG9hZFN0YXRlKSk7YlMoS04sKHQ9PnQudGFnTWV0YWRhdGEpKTtjb25zdCBRTj1iUyhLTiwodD0+dC5jYXJkTGlzdCkpLCROPWJTKEtOLCgodCxlKT0+e2lmKCF0LmNhcmRNZXRhZGF0YU1hcC5oYXNPd25Qcm9wZXJ0eShlKSlyZXR1cm4gVUUuTk9UX0xPQURFRDtjb25zdHtwbHVnaW46bix0YWc6byxydW5JZDppLHNhbXBsZTphfT10LmNhcmRNZXRhZGF0YU1hcFtlXSxyPUZOKHQudGltZVNlcmllc0RhdGEsbixvLGEpO2lmKCFyKXJldHVybiBVRS5OT1RfTE9BREVEO2NvbnN0IHM9ci5ydW5Ub0xvYWRTdGF0ZTtpZihpKXJldHVybiBzLmhhc093blByb3BlcnR5KGkpP3NbaV06VUUuTk9UX0xPQURFRDtjb25zdCBsPWpOKHQudGFnTWV0YWRhdGEsbixvLGEpO2lmKCFsLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBsb2FkIGEgY2FyZCB3aG9zZSB0YWcgaGFzIG5vIHJ1bnMiKTtyZXR1cm4gbC5ldmVyeSgodD0+c1t0XT09PVVFLkxPQURFRCkpP1VFLkxPQURFRDpsLnNvbWUoKHQ9PnNbdF09PT1VRS5MT0FESU5HKSk/VUUuTE9BRElORzpVRS5OT1RfTE9BREVEfSkpLHR6PWJTKEtOLCgodCxlKT0+e2lmKCF0LmNhcmRNZXRhZGF0YU1hcC5oYXNPd25Qcm9wZXJ0eShlKSlyZXR1cm4gbnVsbDtjb25zdHtwbHVnaW46bix0YWc6byxzYW1wbGU6aX09dC5jYXJkTWV0YWRhdGFNYXBbZV0sYT1GTih0LnRpbWVTZXJpZXNEYXRhLG4sbyxpKTtyZXR1cm4gYT9hLnJ1blRvU2VyaWVzOm51bGx9KSksZXo9YlMoS04sKHQ9PnQuY2FyZE1ldGFkYXRhTWFwKSksbno9YlMoZXosKCh0LGUpPT50Lmhhc093blByb3BlcnR5KGUpP3RbZV06bnVsbCkpLG96PWJTKEtOLCh0PT50LnZpc2libGVDYXJkTWFwKSksaXo9YlMob3osKHQ9Pm5ldyBTZXQodC52YWx1ZXMoKSkpKSxhej1iUyhRTixleiwoKHQsZSk9PnQuZmlsdGVyKCh0PT5lLmhhc093blByb3BlcnR5KHQpKSkubWFwKCh0PT5PYmplY3QuYXNzaWduKHtjYXJkSWQ6dH0sZVt0XSkpKSkpLHJ6PWJTKEtOLCgodCxlKT0+dC5jYXJkU3RlcEluZGV4Lmhhc093blByb3BlcnR5KGUpP3QuY2FyZFN0ZXBJbmRleFtlXTpudWxsKSksc3o9YlMoS04sKHQ9PnQuY2FyZFRvUGlubmVkQ29weSkpLGx6PWJTKEtOLCh0PT50LnBpbm5lZENhcmRUb09yaWdpbmFsKSksY3o9YlMoc3osZXosKCh0LGUpPT5bLi4udC52YWx1ZXMoKV0uZmlsdGVyKCh0PT5lLmhhc093blByb3BlcnR5KHQpKSkubWFwKCh0PT5PYmplY3QuYXNzaWduKHtjYXJkSWQ6dH0sZVt0XSkpKSkpLGR6PWJTKHN6LGx6LCgodCxlLG4pPT50LmhhcyhuKXx8ZS5oYXMobikpKSxwej1iUyhLTiwodD0+dC51bnJlc29sdmVkSW1wb3J0ZWRQaW5uZWRDYXJkcykpLG16PWJTKEtOLCh0PT5xTih0KSkpLGZ6PWJTKEtOLCh0PT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5zZXR0aW5ncyksdC5zZXR0aW5nT3ZlcnJpZGVzKSkpLHV6PWJTKEtOLCh0PT50LnNldHRpbmdPdmVycmlkZXMpKSxnej1iUyhmeiwodD0+dC5jYXJkTWluV2lkdGgpKSxoej1iUyhmeiwodD0+dC50b29sdGlwU29ydCkpLGJ6PWJTKGZ6LCh0PT50Lmlnbm9yZU91dGxpZXJzKSkseXo9YlMoZnosKHQ9PnQueEF4aXNUeXBlKSksX3o9YlMoZnosKHQ9PnQuaGlzdG9ncmFtTW9kZSkpLEN6PWJTKGZ6LCh0PT50LnNjYWxhclNtb290aGluZykpLE16PWJTKGZ6LCh0PT50LnNjYWxhclBhcnRpdGlvbk5vbk1vbm90b25pY1gpKSx2ej1iUyhmeiwodD0+dC5pbWFnZUJyaWdodG5lc3NJbk1pbGxpKSkseHo9YlMoZnosKHQ9PnQuaW1hZ2VDb250cmFzdEluTWlsbGkpKSxPej1iUyhmeiwodD0+dC5pbWFnZVNob3dBY3R1YWxTaXplKSksUHo9YlMoS04sKHQ9PnQudGFnRmlsdGVyKSksd3o9YlMoS04sKCh0LGUpPT5Cb29sZWFuKHQudGFnR3JvdXBFeHBhbmRlZC5nZXQoZSkpKSksa3o9YlMoS04sKHQ9PnQuc2VsZWN0VGltZUVuYWJsZWQpKSxTej1iUyhLTiwodD0+dC51c2VSYW5nZVNlbGVjdFRpbWUpKSxEej1iUyhLTiwodD0+e2NvbnN0e21pbjplLG1heDpufT10LnN0ZXBNaW5NYXg7cmV0dXJue21pbjplPT09MS8wPzA6ZSxtYXg6bj09PS0xLzA/MWUzOm59fSkpLFJ6PWJTKEtOLER6LCgodCxlKT0+e3ZhciBuO3JldHVybiB0LnNlbGVjdGVkVGltZT9PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5zZWxlY3RlZFRpbWUpLHtlbmQ6bnVsbCE9PShuPXQuc2VsZWN0ZWRUaW1lLmVuZCkmJnZvaWQgMCE9PW4/bjp7c3RlcDplLm1heH19KTp7c3RhcnQ6e3N0ZXA6ZS5taW59LGVuZDp7c3RlcDplLm1heH19fSkpLEV6PWJTKEtOLFJ6LCgodCxlKT0+dC5zZWxlY3RUaW1lRW5hYmxlZD90LnVzZVJhbmdlU2VsZWN0VGltZT9lOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxlKSx7ZW5kOm51bGx9KTpudWxsKSksQXo9YlMoS04sKHQ9PnQuZmlsdGVyZWRQbHVnaW5UeXBlcykpLFR6PWJTKEtOLCh0PT50LnByb21vdGVUaW1lU2VyaWVzKSksTno9YlMoS04sKHQ9PnQuaXNTZXR0aW5nc1BhbmVPcGVuKSk7dmFyIHp6OyEoZnVuY3Rpb24odCl7dFt0Lk5PTkU9MF09Ik5PTkUiLHRbdC5XSEFUU19ORVc9MV09IldIQVRTX05FVyJ9KSh6enx8KHp6PXt9KSk7Y29uc3QgSXo9X1MoIm5vdGlmaWNhdGlvbiIpO2JTKEl6LCh0PT50Lm5vdGlmaWNhdGlvbnMpKSxiUyhJeiwodD0+e3ZhciBlO3JldHVybiBudWxsIT09KGU9dC5sYXN0UmVhZFRpbWVzdGFtcEluTXMpJiZ2b2lkIDAhPT1lP2U6LTF9KSk7Y29uc3QgSHo9InJ1bnMiO3ZhciBGeixMejtmdW5jdGlvbiBCeih0KXtyZXR1cm4gSlNPTi5zdHJpbmdpZnkodC5zbGljZSgpLnNvcnQoKSl9ZnVuY3Rpb24gVnoodCxlLG4pe2NvbnN0IG89e30saT1bXSxhPXttYXRjaGVzOm8sbm9uTWF0Y2hlczppfTtzd2l0Y2godC5rZXkpe2Nhc2UgTHouUlVOOmZvcihjb25zdCB0IG9mIGUpb1t0LmlkXT1bdF07YnJlYWs7Y2FzZSBMei5FWFBFUklNRU5UOmZvcihjb25zdCB0IG9mIGUpe2NvbnN0IGU9blt0LmlkXSxpPW9bZV18fFtdO2kucHVzaCh0KSxvW2VdPWl9YnJlYWs7Y2FzZSBMei5SRUdFWDppZighdC5yZWdleFN0cmluZylicmVhaztsZXQgYTt0cnl7YT1uZXcgUmVnRXhwKHQucmVnZXhTdHJpbmcpfWNhdGNoKHQpe2JyZWFrfWZvcihjb25zdCB0IG9mIGUpe2NvbnN0IGU9dC5uYW1lLm1hdGNoKGEpO2lmKGUpe2NvbnN0IG49ZS5sZW5ndGg+MT9KU09OLnN0cmluZ2lmeShlLnNsaWNlKDEpKToicHNldWRvX2dyb3VwIixpPW9bbl18fFtdO2kucHVzaCh0KSxvW25dPWl9ZWxzZSBpLnB1c2godCl9fXJldHVybiBhfWZ1bmN0aW9uIGp6KHQsZSl7c3dpdGNoKHQpe2Nhc2UgTHouUkVHRVg6cmV0dXJue2tleTp0LHJlZ2V4U3RyaW5nOm51bGwhPWU/ZToiIn07Y2FzZSBMei5SVU46Y2FzZSBMei5FWFBFUklNRU5UOmRlZmF1bHQ6cmV0dXJue2tleTp0fX19IShmdW5jdGlvbih0KXt0W3QuRVhQRVJJTUVOVF9OQU1FPTBdPSJFWFBFUklNRU5UX05BTUUiLHRbdC5IUEFSQU09MV09IkhQQVJBTSIsdFt0Lk1FVFJJQz0yXT0iTUVUUklDIix0W3QuUlVOX05BTUU9M109IlJVTl9OQU1FIn0pKEZ6fHwoRno9e30pKSwoZnVuY3Rpb24odCl7dFt0LlJVTj0wXT0iUlVOIix0W3QuRVhQRVJJTUVOVD0xXT0iRVhQRVJJTUVOVCIsdFt0LlJFR0VYPTJdPSJSRUdFWCJ9KShMenx8KEx6PXt9KSk7Y29uc3QgVXo9X1MoSHopLFd6PWJTKFV6LCh0PT50LmRhdGEpKSxHej1iUyhXeiwoKHQsZSk9Pnt2YXIgbjtyZXR1cm4gbnVsbCE9PShuPXQucnVuSWRUb0V4cElkW2UucnVuSWRdKSYmdm9pZCAwIT09bj9uOm51bGx9KSksWXo9YlMoV3osKCh0LGUpPT57dmFyIG47cmV0dXJuIG51bGwhPT0obj10LnJ1bk1ldGFkYXRhW2UucnVuSWRdKSYmdm9pZCAwIT09bj9uOm51bGx9KSkscXo9YlMoV3osKCh0LGUpPT4odC5ydW5JZHNbZS5leHBlcmltZW50SWRdfHxbXSkuZmlsdGVyKChlPT5Cb29sZWFuKHQucnVuTWV0YWRhdGFbZV0pKSkubWFwKChlPT50LnJ1bk1ldGFkYXRhW2VdKSkpKSxaej1iUyhXeiwoKHQsZSk9Pnt2YXIgbjtyZXR1cm4gbnVsbCE9PShuPXQucnVuSWRzW2UuZXhwZXJpbWVudElkXSkmJnZvaWQgMCE9PW4/bjpbXX0pKSxYej1iUyhXeiwodD0+bmV3IE1hcChPYmplY3QuZW50cmllcyh0LnJ1bk1ldGFkYXRhKSkpKSxLej1iUyhXeiwoKHQsZSk9PnQucnVuc0xvYWRTdGF0ZVtlLmV4cGVyaW1lbnRJZF18fHtsYXN0TG9hZGVkVGltZUluTXM6bnVsbCxzdGF0ZTpVRS5OT1RfTE9BREVEfSkpLEp6PWJTKFd6LCgodCxlKT0+e2NvbnN0IG49QnooZS5leHBlcmltZW50SWRzKTtyZXR1cm4gdC5zZWxlY3Rpb25TdGF0ZS5nZXQobil8fG5ldyBNYXB9KSksUXo9YlMoV3osKHQ9Pm51bGwhPT10LnVzZXJTZXRHcm91cEJ5S2V5P2p6KHQudXNlclNldEdyb3VwQnlLZXksdC5jb2xvckdyb3VwUmVnZXhTdHJpbmcpOm51bGwpKSwkej1iUyhReixXeiwoKHQsZSk9Pm51bGwhPXQ/dDplLmluaXRpYWxHcm91cEJ5KSksdEk9YlMoV3osKHQ9PnQucmVnZXhGaWx0ZXIpKSxlST1iUyhVeiwodD0+dC51aSkpLG5JPWJTKGVJLCh0PT50LnBhZ2luYXRpb25PcHRpb24pKSxvST1iUyhlSSwodD0+dC5zb3J0KSksaUk9YlMoV3osKHQ9PnQucnVuQ29sb3JPdmVycmlkZUZvckdyb3VwQnkpKSxhST1iUyhXeiwodD0+dC5kZWZhdWx0UnVuQ29sb3JJZEZvckdyb3VwQnkpKSxyST1iUyhXeiwodD0+dC5jb2xvckdyb3VwUmVnZXhTdHJpbmcpKSxzST1faygiW1NldHRpbmdzXSBSZWxvYWQgRW5hYmxlIFRvZ2dsZWQiKSxsST1faygiW1NldHRpbmdzXSBSZWxvYWQgUGVyaW9kIENoYW5nZSIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLGNJPV9rKCJbU2V0dGluZ3NdIFBhZ2UgU2l6ZSBDaGFuZ2UiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSxkST0ic2V0dGluZ3MiLHBJPXtzdGF0ZTpVRS5MT0FERUQsbGFzdExvYWRlZFRpbWVJbk1zOkRhdGUubm93KCksc2V0dGluZ3M6e3JlbG9hZFBlcmlvZEluTXM6M2U0LHJlbG9hZEVuYWJsZWQ6ITEscGFnZVNpemU6MTIsY29sb3JQYWxldHRlOntpZDoiZGVmYXVsdCIsbmFtZToiRGVmYWx0Iixjb2xvcnM6W3tuYW1lOiJTbGF0ZSIsbGlnaHRIZXg6IiM0MjUwNjYiLGRhcmtIZXg6IiM4ZTk4YTMifSx7bmFtZToiQ3lhbiIsbGlnaHRIZXg6IiMxMmI1Y2IiLGRhcmtIZXg6IiMxMmI1Y2IifSx7bmFtZToiUGluayIsbGlnaHRIZXg6IiNlNTI1OTIiLGRhcmtIZXg6IiNlNTI1OTIifSx7bmFtZToiWWVsbG93IixsaWdodEhleDoiI2Y5YWIwMCIsZGFya0hleDoiI2Y5YWIwMCJ9LHtuYW1lOiJQdXJwbGUiLGxpZ2h0SGV4OiIjOTMzNGU2IixkYXJrSGV4OiIjOTMzNGU2In0se25hbWU6IkxpZ2h0IEdyZWVuIixsaWdodEhleDoiIzdjYjM0MiIsZGFya0hleDoiIzdjYjM0MiJ9LHtuYW1lOiJPcmFuZ2UiLGxpZ2h0SGV4OiIjZTg3MTBhIixkYXJrSGV4OiIjZTg3MTBhIn1dLGluYWN0aXZlOntuYW1lOiJHcmF5IixsaWdodEhleDoiI2UwZTBlMCIsZGFya0hleDoiIzNiM2IzYiJ9fX19LG1JPV9TKGRJKSxmST1iUyhtSSwodD0+dC5zdGF0ZSkpLHVJPWJTKG1JLCh0PT50LnNldHRpbmdzLnJlbG9hZEVuYWJsZWQpKSxnST1iUyhtSSwodD0+dC5zZXR0aW5ncy5yZWxvYWRQZXJpb2RJbk1zKSksaEk9YlMobUksKHQ9PnQuc2V0dGluZ3MucGFnZVNpemUpKSxiST1iUyhtSSwodD0+dC5zZXR0aW5ncy5jb2xvclBhbGV0dGUpKTtmdW5jdGlvbiB5SSh0LGUsbil7aWYoIWUpcmV0dXJuITA7bGV0IG87dHJ5e289bmV3IFJlZ0V4cChlLCJpIil9Y2F0Y2godCl7cmV0dXJuITF9Y29uc3QgaT1bdC5ydW5OYW1lXTtyZXR1cm4gbiYmaS5wdXNoKHQuZXhwZXJpbWVudEFsaWFzLmFsaWFzVGV4dCxgJHt0LmV4cGVyaW1lbnRBbGlhcy5hbGlhc1RleHR9LyR7dC5ydW5OYW1lfWApLGkuc29tZSgodD0+by50ZXN0KHQpKSl9Y29uc3QgX0k9YlMoKHQ9Pntjb25zdCBlPXhSKHQpO3JldHVybiBlP0p6KHQse2V4cGVyaW1lbnRJZHM6ZX0pOm51bGx9KSx0SSwodD0+e3ZhciBlO2NvbnN0IG49bnVsbCE9PShlPXhSKHQpKSYmdm9pZCAwIT09ZT9lOltdLG89T1IodCksaT1uZXcgTWFwO2Zvcihjb25zdCBlIG9mIG4pe2NvbnN0IG49cXoodCx7ZXhwZXJpbWVudElkOmV9KTtmb3IoY29uc3QgdCBvZiBuKWkuc2V0KHQuaWQse3J1bk5hbWU6dC5uYW1lLGV4cGVyaW1lbnRBbGlhczpvW2VdfSl9cmV0dXJuIGl9KSxNUiwoKHQsZSxuLG8pPT57aWYoIXQpcmV0dXJuIG51bGw7Y29uc3QgaT1vPT09X0QuQ09NUEFSRV9FWFBFUklNRU5ULGE9bmV3IE1hcDtmb3IoY29uc3RbbyxyXW9mIHQuZW50cmllcygpKXtjb25zdCB0PW4uZ2V0KG8pO2Euc2V0KG8seUkodCxlLGkpJiZyKX1yZXR1cm4gYX0pKSxDST1iUyhiSSxhSSxpSSxGRCwoKHQsZSxuLG8pPT57Y29uc3QgaT17fTtyZXR1cm4gZS5mb3JFYWNoKCgoZSxhKT0+e2xldCByPW8/dC5pbmFjdGl2ZS5kYXJrSGV4OnQuaW5hY3RpdmUubGlnaHRIZXg7aWYobi5oYXMoYSkpcj1uLmdldChhKTtlbHNlIGlmKGU+PTApe2NvbnN0IG49dC5jb2xvcnNbZSV0LmNvbG9ycy5sZW5ndGhdO3I9bz9uLmRhcmtIZXg6bi5saWdodEhleH1pW2FdPXJ9KSksaX0pKTtjbGFzcyBNSXtjb25zdHJ1Y3Rvcih0LGUsbil7dGhpcy5hY3Rpb25zJD10LHRoaXMuc3RvcmU9ZSx0aGlzLnJ1bnNEYXRhU291cmNlPW4sdGhpcy5sb2FkUnVuc09uUnVuVGFibGVTaG93biQ9V1MoKCgpPT50aGlzLmFjdGlvbnMkLnBpcGUoJFModlQpLCR0KCgoe2V4cGVyaW1lbnRJZHM6dH0pPT50aGlzLmdldEV4cGVyaW1lbnRzV2l0aExvYWRTdGF0ZSh0LCh0PT50PT09VUUuRkFJTEVEfHx0PT09VUUuTk9UX0xPQURFRCkpLnBpcGUodWUoKHQ9PiEhdC5sZW5ndGgpKSwkdCgoZT0+dGhpcy5mZXRjaEFsbFJ1bnNMaXN0KHQsZSkpKSkpKSkpLHtkaXNwYXRjaDohMX0pLHRoaXMuZXhwZXJpbWVudHNXaXRoU3RhbGVSdW5zT25Sb3V0ZUNoYW5nZSQ9dGhpcy5hY3Rpb25zJC5waXBlKCRTKHRSKSxxZSh0aGlzLnN0b3JlLnNlbGVjdChoUikpLHdlKCgoWyx0XSxbLGVdKT0+eEQodCxlKSkpLHFlKHRoaXMuc3RvcmUuc2VsZWN0KHhSKSksdWUoKChbLHRdKT0+ISF0KSksVnQoKChbLHRdKT0+dCkpLCR0KCh0PT50aGlzLmdldEV4cGVyaW1lbnRzV2l0aExvYWRTdGF0ZSh0LCh0PT50PT09VUUuRkFJTEVEfHx0PT09VUUuTk9UX0xPQURFRCkpLnBpcGUoVnQoKGU9Pih7ZXhwZXJpbWVudElkczp0LGV4cGVyaW1lbnRJZHNUb0JlRmV0Y2hlZDplfSkpKSkpKSksdGhpcy5leHBlcmltZW50c1dpdGhTdGFsZVJ1bnNPblJlbG9hZCQ9dGhpcy5hY3Rpb25zJC5waXBlKCRTKFFFLEpFKSxxZSh0aGlzLnN0b3JlLnNlbGVjdCh4UikpLHVlKCgoWyx0XSk9PiEhdCkpLFZ0KCgoWyx0XSk9PnQpKSwkdCgodD0+dGhpcy5nZXRFeHBlcmltZW50c1dpdGhMb2FkU3RhdGUodCwodD0+dCE9PVVFLkxPQURJTkcpKS5waXBlKFZ0KChlPT4oe2V4cGVyaW1lbnRJZHM6dCxleHBlcmltZW50SWRzVG9CZUZldGNoZWQ6ZX0pKSkpKSkpLHRoaXMubG9hZFJ1bnNPbk5hdmlnYXRpb25PclJlbG9hZCQ9V1MoKCgpPT5wZSh0aGlzLmV4cGVyaW1lbnRzV2l0aFN0YWxlUnVuc09uUm91dGVDaGFuZ2UkLHRoaXMuZXhwZXJpbWVudHNXaXRoU3RhbGVSdW5zT25SZWxvYWQkKS5waXBlKCR0KCgoe2V4cGVyaW1lbnRJZHM6dCxleHBlcmltZW50SWRzVG9CZUZldGNoZWQ6ZX0pPT50aGlzLmZldGNoQWxsUnVuc0xpc3QodCxlKSkpKSkse2Rpc3BhdGNoOiExfSl9Z2V0UnVuc0xpc3RMb2FkU3RhdGUodCl7cmV0dXJuIHRoaXMuc3RvcmUuc2VsZWN0KEt6LHtleHBlcmltZW50SWQ6dH0pLnBpcGUodmUoMSkpfWdldEV4cGVyaW1lbnRzV2l0aExvYWRTdGF0ZSh0LGUpe3JldHVybiBpZSh0Lm1hcCgodD0+dGhpcy5nZXRSdW5zTGlzdExvYWRTdGF0ZSh0KSkpKS5waXBlKFZ0KChuPT50LmZpbHRlcigoKHQsbyk9PmUobltvXS5zdGF0ZSkpKSkpKX1mZXRjaEFsbFJ1bnNMaXN0KHQsZSl7cmV0dXJuIHp0KHtleHBlcmltZW50SWRzOnQsZXhwZXJpbWVudElkc1RvQmVGZXRjaGVkOmV9KS5waXBlKFdlKCgoKT0+e3RoaXMuc3RvcmUuZGlzcGF0Y2goZlQoe2V4cGVyaW1lbnRJZHM6dCxyZXF1ZXN0ZWRFeHBlcmltZW50SWRzOmV9KSl9KSksJHQoKCgpPT57Y29uc3Qgbj1uZXcgU2V0KGUpO3JldHVybiBpZSh0Lm1hcCgodD0+bi5oYXModCk/dGhpcy5mZXRjaFJ1bnNGb3JFeHBlcmltZW50KHQpOnRoaXMubWF5YmVXYWl0Rm9yUnVuc0FuZEdldFJ1bnModCkpKSl9KSksVnQoKHQ9Pntjb25zdCBlPXt9LG49W107Zm9yKGNvbnN0IG8gb2YgdCluLnB1c2goLi4uby5ydW5zKSxvLmZyb21SZW1vdGUmJihlW28uZXhwZXJpbWVudElkXT17cnVuczpvLnJ1bnMsbWV0YWRhdGE6by5tZXRhZGF0YX0pO3JldHVybntuZXdSdW5zQW5kTWV0YWRhdGE6ZSxydW5zRm9yQWxsRXhwZXJpbWVudHM6bn19KSksV2UoKCh7bmV3UnVuc0FuZE1ldGFkYXRhOmUscnVuc0ZvckFsbEV4cGVyaW1lbnRzOm59KT0+e3RoaXMuc3RvcmUuZGlzcGF0Y2godVQoe2V4cGVyaW1lbnRJZHM6dCxuZXdSdW5zQW5kTWV0YWRhdGE6ZSxydW5zRm9yQWxsRXhwZXJpbWVudHM6bn0pKX0pKSxoZSgobj0+KHRoaXMuc3RvcmUuZGlzcGF0Y2goZ1Qoe2V4cGVyaW1lbnRJZHM6dCxyZXF1ZXN0ZWRFeHBlcmltZW50SWRzOmV9KSksenQobnVsbCkpKSksVnQoKCgpPT5udWxsKSkpfW1heWJlV2FpdEZvclJ1bnNBbmRHZXRSdW5zKHQpe3JldHVybiB0aGlzLnN0b3JlLnNlbGVjdChLeix7ZXhwZXJpbWVudElkOnR9KS5waXBlKHVlKCh0PT50LnN0YXRlIT09VUUuTE9BRElORykpLHZlKDEpLCR0KCh0PT50LnN0YXRlPT09VUUuRkFJTEVEP0l0KG5ldyBFcnJvcigiUGVuZGluZyByZXF1ZXN0IGZhaWxlZCIpKTp6dCh0KSkpLHFlKHRoaXMuc3RvcmUuc2VsZWN0KHF6LHtleHBlcmltZW50SWQ6dH0pKSxWdCgoKFssZV0pPT4oe2Zyb21SZW1vdGU6ITEsZXhwZXJpbWVudElkOnQscnVuczplfSkpKSl9ZmV0Y2hSdW5zRm9yRXhwZXJpbWVudCh0KXtyZXR1cm4gaWUoW3RoaXMucnVuc0RhdGFTb3VyY2UuZmV0Y2hSdW5zKHQpLHRoaXMucnVuc0RhdGFTb3VyY2UuZmV0Y2hIcGFyYW1zTWV0YWRhdGEodCldKS5waXBlKFZ0KCgoW2Usbl0pPT4oe2Zyb21SZW1vdGU6ITAsZXhwZXJpbWVudElkOnQscnVuczplLG1ldGFkYXRhOm59KSkpKX19dmFyIHZJLHhJO01JLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxNSSkoVHIoUVMpLFRyKGlTKSxUcihTVCkpfSxNSS7JtXByb3Y9U24oe3Rva2VuOk1JLGZhY3Rvcnk6TUkuybVmYWN9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKE1JLFt7dHlwZTpVbX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpRU30se3R5cGU6aVN9LHt0eXBlOlNUfV19KSxudWxsKSwoZnVuY3Rpb24odCl7dC5BU0M9ImFzYyIsdC5ERVNDPSJkZXNjIix0LlVOU0VUPSIifSkodkl8fCh2ST17fSkpLChmdW5jdGlvbih0KXt0LkVYUEVSSU1FTlRfSUQ9ImlkIix0LlVTRVI9InVzZXIiLHQuQkVGT1JFPSJiZWZvcmUiLHQuQUZURVI9ImFmdGVyIix0LlJFR0VYPSJyZWdleCJ9KSh4SXx8KHhJPXt9KSk7Y29uc3R7aW5pdGlhbFN0YXRlOk9JLHJlZHVjZXJzOlBJfT1jQSh7cnVuQ29sb3JPdmVycmlkZUZvckdyb3VwQnk6bmV3IE1hcCxkZWZhdWx0UnVuQ29sb3JJZEZvckdyb3VwQnk6bmV3IE1hcCxncm91cEtleVRvQ29sb3JJZDpuZXcgTWFwLGluaXRpYWxHcm91cEJ5OntrZXk6THouUlVOfSx1c2VyU2V0R3JvdXBCeUtleTpudWxsLGNvbG9yR3JvdXBSZWdleFN0cmluZzoiIixyZWdleEZpbHRlcjoiIn0se3J1bklkczp7fSxydW5JZFRvRXhwSWQ6e30scnVuTWV0YWRhdGE6e30scnVuc0xvYWRTdGF0ZTp7fSxzZWxlY3Rpb25TdGF0ZTpuZXcgTWFwfSwoKHQsZSk9Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7aW5pdGlhbEdyb3VwQnk6e2tleTplLnJvdXRlS2luZD09PV9ELkNPTVBBUkVfRVhQRVJJTUVOVD9Mei5FWFBFUklNRU5UOkx6LlJVTn19KSkpLHdJPVdBKFZTKE9JLEJTKEtELCgodCx7cm91dGVLaW5kOmUscGFydGlhbFN0YXRlOm59KT0+e3ZhciBvLGk7aWYoZSE9PV9ELkNPTVBBUkVfRVhQRVJJTUVOVCYmZSE9PV9ELkVYUEVSSU1FTlQpcmV0dXJuIHQ7Y29uc3QgYT1uLnJ1bnMuZ3JvdXBCeSxyPW51bGwhPT0obz1uLnJ1bnMucmVnZXhGaWx0ZXIpJiZ2b2lkIDAhPT1vP286IiI7aWYoIWEmJiFyKXJldHVybiB0O2xldHtjb2xvckdyb3VwUmVnZXhTdHJpbmc6cyx1c2VyU2V0R3JvdXBCeUtleTpsfT10O2lmKGEpe3M9YS5rZXk9PT1Mei5SRUdFWD9hLnJlZ2V4U3RyaW5nOnQuY29sb3JHcm91cFJlZ2V4U3RyaW5nLGw9bnVsbCE9PShpPWEua2V5KSYmdm9pZCAwIT09aT9pOm51bGx9cmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7Y29sb3JHcm91cFJlZ2V4U3RyaW5nOnMscmVnZXhGaWx0ZXI6cix1c2VyU2V0R3JvdXBCeUtleTpsfSl9KSksQlMoZlQsKCh0LGUpPT57Y29uc3Qgbj1PYmplY3QuYXNzaWduKHt9LHQucnVuc0xvYWRTdGF0ZSk7Zm9yKGNvbnN0IHQgb2YgZS5yZXF1ZXN0ZWRFeHBlcmltZW50SWRzKW5bdF09blt0XT9PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sblt0XSkse3N0YXRlOlVFLkxPQURJTkd9KTp7bGFzdExvYWRlZFRpbWVJbk1zOm51bGwsc3RhdGU6VUUuTE9BRElOR307cmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7cnVuc0xvYWRTdGF0ZTpufSl9KSksQlModVQsKCh0LGUpPT57dmFyIG47Y29uc3Qgbz1PYmplY3QuYXNzaWduKHt9LHQucnVuSWRzKSxpPU9iamVjdC5hc3NpZ24oe30sdC5ydW5NZXRhZGF0YSksYT1PYmplY3QuYXNzaWduKHt9LHQucnVuSWRUb0V4cElkKSxyPU9iamVjdC5hc3NpZ24oe30sdC5ydW5zTG9hZFN0YXRlKSxzPW5ldyBNYXAodC5zZWxlY3Rpb25TdGF0ZSk7Zm9yKGNvbnN0IHQgb2YgT2JqZWN0LmtleXMoZS5uZXdSdW5zQW5kTWV0YWRhdGEpKXtjb25zdHtydW5zOm4sbWV0YWRhdGE6c309ZS5uZXdSdW5zQW5kTWV0YWRhdGFbdF07b1t0XT1uLm1hcCgoKHtpZDp0fSk9PnQpKSxyW3RdPU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxyW3RdKSx7bGFzdExvYWRlZFRpbWVJbk1zOkRhdGUubm93KCksc3RhdGU6VUUuTE9BREVEfSk7Zm9yKGNvbnN0IGUgb2Ygbil7Y29uc3Qgbj1zLnJ1blRvSHBhcmFtc0FuZE1ldHJpY3NbZS5pZF07aVtlLmlkXT1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sZSkse2hwYXJhbXM6bj9uLmhwYXJhbXM6bnVsbCxtZXRyaWNzOm4/bi5tZXRyaWNzOm51bGx9KSxhW2UuaWRdPXR9fWNvbnN0IGw9QnooZS5leHBlcmltZW50SWRzKSxjPW5ldyBNYXAobnVsbCE9PShuPXMuZ2V0KGwpKSYmdm9pZCAwIT09bj9uOltdKSxkPWUucnVuc0ZvckFsbEV4cGVyaW1lbnRzLmxlbmd0aDw9NTAwO2Zvcihjb25zdCB0IG9mIGUucnVuc0ZvckFsbEV4cGVyaW1lbnRzKWMuaGFzKHQuaWQpfHxjLnNldCh0LmlkLGQpO3JldHVybiBzLnNldChsLGMpLE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7cnVuSWRzOm8scnVuSWRUb0V4cElkOmEscnVuTWV0YWRhdGE6aSxydW5zTG9hZFN0YXRlOnIsc2VsZWN0aW9uU3RhdGU6c30pfSkpLEJTKGdULCgodCxlKT0+e2NvbnN0IG49T2JqZWN0LmFzc2lnbih7fSx0LnJ1bnNMb2FkU3RhdGUpO2Zvcihjb25zdCB0IG9mIGUucmVxdWVzdGVkRXhwZXJpbWVudElkcyluW3RdPW5bdF0/T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LG5bdF0pLHtzdGF0ZTpVRS5GQUlMRUR9KTp7bGFzdExvYWRlZFRpbWVJbk1zOm51bGwsc3RhdGU6VUUuRkFJTEVEfTtyZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtydW5zTG9hZFN0YXRlOm59KX0pKSxCUyhoVCwoKHQse2V4cGVyaW1lbnRJZHM6ZSxydW5JZDpufSk9Pnt2YXIgbztjb25zdCBpPUJ6KGUpLGE9bmV3IE1hcCh0LnNlbGVjdGlvblN0YXRlKSxyPW5ldyBNYXAobnVsbCE9PShvPWEuZ2V0KGkpKSYmdm9pZCAwIT09bz9vOltdKTtyZXR1cm4gci5zZXQobiwhQm9vbGVhbihyLmdldChuKSkpLGEuc2V0KGksciksT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtzZWxlY3Rpb25TdGF0ZTphfSl9KSksQlMoYlQsKCh0LHtleHBlcmltZW50SWRzOmUscnVuSWRzOm59KT0+e3ZhciBvO2NvbnN0IGk9QnooZSksYT1uZXcgTWFwKHQuc2VsZWN0aW9uU3RhdGUpLHI9bmV3IE1hcChudWxsIT09KG89YS5nZXQoaSkpJiZ2b2lkIDAhPT1vP286W10pLHM9IW4uZXZlcnkoKHQ9PkJvb2xlYW4oci5nZXQodCkpKSk7Zm9yKGNvbnN0IHQgb2YgbilyLnNldCh0LHMpO3JldHVybiBhLnNldChpLHIpLE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7c2VsZWN0aW9uU3RhdGU6YX0pfSkpLEJTKHVULCgodCx7cnVuc0ZvckFsbEV4cGVyaW1lbnRzOmV9KT0+e2NvbnN0IG49bmV3IE1hcCh0Lmdyb3VwS2V5VG9Db2xvcklkKSxvPW5ldyBNYXAodC5kZWZhdWx0UnVuQ29sb3JJZEZvckdyb3VwQnkpO2xldCBpPXQuaW5pdGlhbEdyb3VwQnk7bnVsbCE9PXQudXNlclNldEdyb3VwQnlLZXkmJihpPWp6KHQudXNlclNldEdyb3VwQnlLZXksdC5jb2xvckdyb3VwUmVnZXhTdHJpbmcpKTtjb25zdCBhPVZ6KGksZSx0LnJ1bklkVG9FeHBJZCk7T2JqZWN0LmVudHJpZXMoYS5tYXRjaGVzKS5mb3JFYWNoKCgoW3QsZV0pPT57dmFyIGk7Y29uc3QgYT1udWxsIT09KGk9bi5nZXQodCkpJiZ2b2lkIDAhPT1pP2k6bi5zaXplO24uc2V0KHQsYSk7Zm9yKGNvbnN0IHQgb2YgZSlvLnNldCh0LmlkLGEpfSkpO2Zvcihjb25zdCB0IG9mIGEubm9uTWF0Y2hlcylvLnNldCh0LmlkLC0xKTtyZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtkZWZhdWx0UnVuQ29sb3JJZEZvckdyb3VwQnk6byxncm91cEtleVRvQ29sb3JJZDpufSl9KSksQlMoeFQsKCh0LHtleHBlcmltZW50SWRzOmUsZ3JvdXBCeTpufSk9Pntjb25zdCBvPW5ldyBNYXAsaT1uZXcgTWFwKHQuZGVmYXVsdFJ1bkNvbG9ySWRGb3JHcm91cEJ5KSxhPVZ6KG4sZS5mbGF0TWFwKChlPT50LnJ1bklkc1tlXSkpLm1hcCgoZT0+dC5ydW5NZXRhZGF0YVtlXSkpLHQucnVuSWRUb0V4cElkKTtPYmplY3QuZW50cmllcyhhLm1hdGNoZXMpLmZvckVhY2goKChbdCxlXSk9Pnt2YXIgbjtjb25zdCBhPW51bGwhPT0obj1vLmdldCh0KSkmJnZvaWQgMCE9PW4/bjpvLnNpemU7by5zZXQodCxhKTtmb3IoY29uc3QgdCBvZiBlKWkuc2V0KHQuaWQsYSl9KSk7Zm9yKGNvbnN0IHQgb2YgYS5ub25NYXRjaGVzKWkuc2V0KHQuaWQsLTEpO2NvbnN0IHI9bi5rZXk9PT1Mei5SRUdFWD9uLnJlZ2V4U3RyaW5nOnQuY29sb3JHcm91cFJlZ2V4U3RyaW5nO3JldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse2NvbG9yR3JvdXBSZWdleFN0cmluZzpyLHVzZXJTZXRHcm91cEJ5S2V5Om4ua2V5LGRlZmF1bHRSdW5Db2xvcklkRm9yR3JvdXBCeTppLGdyb3VwS2V5VG9Db2xvcklkOm8scnVuQ29sb3JPdmVycmlkZUZvckdyb3VwQnk6bmV3IE1hcH0pfSkpLEJTKE1ULCgodCx7cnVuSWQ6ZSxuZXdDb2xvcjpufSk9Pntjb25zdCBvPW5ldyBNYXAodC5ydW5Db2xvck92ZXJyaWRlRm9yR3JvdXBCeSk7cmV0dXJuIG8uc2V0KGUsbiksT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtydW5Db2xvck92ZXJyaWRlRm9yR3JvdXBCeTpvfSl9KSksQlMoQ1QsKCh0LGUpPT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3JlZ2V4RmlsdGVyOmUucmVnZXhTdHJpbmd9KSkpKSxQSSksa0k9e2tleTpudWxsLGRpcmVjdGlvbjp2SS5VTlNFVH0se2luaXRpYWxTdGF0ZTpTSSxyZWR1Y2VyczpESX09Y0Eoe3BhZ2luYXRpb25PcHRpb246e3BhZ2VJbmRleDowLHBhZ2VTaXplOjEwfSxzb3J0OmtJfSx7fSksUkk9V0EoVlMoU0ksQlMoeVQsKCh0LHtwYWdlU2l6ZTplLHBhZ2VJbmRleDpufSk9Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7cGFnaW5hdGlvbk9wdGlvbjp7cGFnZVNpemU6ZSxwYWdlSW5kZXg6bn19KSkpLEJTKENULCgodCxlKT0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtwYWdpbmF0aW9uT3B0aW9uOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LnBhZ2luYXRpb25PcHRpb24pLHtwYWdlSW5kZXg6MH0pfSkpKSxCUyhfVCwoKHQsZSk9Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7c29ydDp7a2V5OmUua2V5LGRpcmVjdGlvbjplLmRpcmVjdGlvbn19KSkpKSxESSk7ZnVuY3Rpb24gRUkodCxlKXtyZXR1cm4gR2soe2RhdGE6d0ksdWk6Ukl9KSh0LGUpfWZ1bmN0aW9uIEFJKCl7cmV0dXJuW3thY3Rpb25DcmVhdG9yOmdULGFsZXJ0RnJvbUFjdGlvbjooKT0+KHtsb2NhbGl6ZWRNZXNzYWdlOiJGYWlsZWQgdG8gZmV0Y2ggcnVucyJ9KX1dfWNsYXNzIFRJe312YXIgTkk7VEkuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFRJKX0sVEkuybVtb2Q9Zm8oe3R5cGU6VEl9KSxUSS7JtWluaj1Ebih7aW1wb3J0czpbW1RTLmZvckZlYXR1cmUoSHosRUkpLGhELmZvckZlYXR1cmUoW01JXSksalQsbVQucmVnaXN0ZXJBbGVydEFjdGlvbnMoQUkpLExUXV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKFRJLFt7dHlwZTpMXyxhcmdzOlt7aW1wb3J0czpbVFMuZm9yRmVhdHVyZShIeixFSSksaEQuZm9yRmVhdHVyZShbTUldKSxqVCxtVC5yZWdpc3RlckFsZXJ0QWN0aW9ucyhBSSksTFRdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmdW8oVEkse2ltcG9ydHM6W0FTLGdELGpULG1ULExUXX0pLChmdW5jdGlvbih0KXt0LlJVTlNfQ0hBTkdFRD0iZXhwZXJpbWVudGFsLlJ1bnNDaGFuZ2VkIix0LkdFVF9SVU5TPSJleHBlcmltZW50YWwuR2V0UnVucyIsdC5HRVRfVVJMX0RBVEE9ImV4cGVyaW1lbnRhbC5HZXRVUkxQbHVnaW5EYXRhIix0LkRBVEFfUkVMT0FERUQ9ImV4cGVyaW1lbnRhbC5EYXRhUmVsb2FkZWQifSkoTkl8fChOST17fSkpO2NsYXNzIHpJe2NvbnN0cnVjdG9yKHQpe3RoaXMucG9ydD10LHRoaXMuaWQ9MCx0aGlzLnJlc3BvbnNlV2FpdHM9bmV3IE1hcCx0aGlzLmxpc3RlbmVycz1uZXcgTWFwLHRoaXMucG9ydC5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwodD0+dGhpcy5vbk1lc3NhZ2UodCkpKX1saXN0ZW4odCxlKXt0aGlzLmxpc3RlbmVycy5zZXQodCxlKX11bmxpc3Rlbih0KXt0aGlzLmxpc3RlbmVycy5kZWxldGUodCl9b25NZXNzYWdlKHQpe3JldHVybiBYVCh0aGlzLHZvaWQgMCx2b2lkIDAsKGZ1bmN0aW9uKigpe2NvbnN0IGU9SlNPTi5wYXJzZSh0LmRhdGEpLG49ZS50eXBlLG89ZS5pZCxpPWUucGF5bG9hZCxhPWUuZXJyb3I7aWYoZS5pc1JlcGx5KXtpZighdGhpcy5yZXNwb25zZVdhaXRzLmhhcyhvKSlyZXR1cm47Y29uc3R7cmVzb2x2ZTp0LHJlamVjdDplfT10aGlzLnJlc3BvbnNlV2FpdHMuZ2V0KG8pO3JldHVybiB0aGlzLnJlc3BvbnNlV2FpdHMuZGVsZXRlKG8pLHZvaWQoYT9lKG5ldyBFcnJvcihhKSk6dChpKSl9bGV0IHI9bnVsbCxzPW51bGw7aWYodGhpcy5saXN0ZW5lcnMuaGFzKG4pKXtjb25zdCB0PXRoaXMubGlzdGVuZXJzLmdldChuKTt0cnl7cj15aWVsZCB0KGkpfWNhdGNoKHQpe3M9dH19dGhpcy5wb3N0TWVzc2FnZSh7dHlwZTpuLGlkOm8scGF5bG9hZDpyLGVycm9yOnMsaXNSZXBseTohMH0pfSkpfXBvc3RNZXNzYWdlKHQpe3RoaXMucG9ydC5wb3N0TWVzc2FnZShKU09OLnN0cmluZ2lmeSh0KSl9c2VuZE1lc3NhZ2UodCxlKXtjb25zdCBuPXRoaXMuaWQrKztyZXR1cm4gdGhpcy5wb3N0TWVzc2FnZSh7dHlwZTp0LGlkOm4scGF5bG9hZDplLGVycm9yOm51bGwsaXNSZXBseTohMX0pLG5ldyBQcm9taXNlKCgodCxlKT0+e3RoaXMucmVzcG9uc2VXYWl0cy5zZXQobix7cmVzb2x2ZTp0LHJlamVjdDplfSl9KSl9fWNvbnN0IElJPW5ldyBXZWFrTWFwLEhJPW5ldyBTZXQsRkk9bmV3IE1hcCxMST1uZXcgTWFwO2Z1bmN0aW9uIEJJKHQsZSl7cmV0dXJuIG49Pntjb25zdCBvPUxJLmdldChlKSxpPUlJLmdldChvKXx8bnVsbDtyZXR1cm4gdChpLG4pfX13aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsKHQ9PntpZigiZXhwZXJpbWVudGFsLmJvb3RzdHJhcCIhPT10LmRhdGEpcmV0dXJuO2NvbnN0IGU9dC5wb3J0c1swXTtpZighZSlyZXR1cm47Y29uc3Qgbj10LnNvdXJjZT90LnNvdXJjZS5mcmFtZUVsZW1lbnQ6bnVsbDtuJiYoZnVuY3Rpb24gbyh0LGUpe2NvbnN0IG49bmV3IHpJKHQpO0hJLmFkZChuKSxMSS5zZXQobixlKSx0LnN0YXJ0KCk7Zm9yKGNvbnN0W3QsZV1vZiBGSSl7Y29uc3Qgbz1CSShlLG4pO24ubGlzdGVuKHQsbyl9fSkoZSxuKX0pKTtjbGFzcyBWSXticm9hZGNhc3QodCxlKXtyZXR1cm4oZnVuY3Rpb24gbih0LGUpe2Zvcihjb25zdCB0IG9mIEhJKUxJLmdldCh0KS5pc0Nvbm5lY3RlZHx8KEhJLmRlbGV0ZSh0KSxMSS5kZWxldGUodCkpO2NvbnN0IG49Wy4uLkhJXS5tYXAoKG49Pm4uc2VuZE1lc3NhZ2UodCxlKSkpO3JldHVybiBQcm9taXNlLmFsbChuKX0pKHQsZSl9bGlzdGVuKHQsZSl7IShmdW5jdGlvbiBuKHQsZSl7Rkkuc2V0KHQsZSk7Zm9yKGNvbnN0IG4gb2YgSEkpe2NvbnN0IG89QkkoZSxuKTtuLmxpc3Rlbih0LG8pfX0pKHQsZSl9dW5saXN0ZW4odCl7IShmdW5jdGlvbiBlKHQpe0ZJLmRlbGV0ZSh0KTtmb3IoY29uc3QgZSBvZiBISSllLnVubGlzdGVuKHQpfSkodCl9fVZJLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxWSSl9LFZJLsm1cHJvdj1Tbih7dG9rZW46VkksZmFjdG9yeTpWSS7JtWZhY30pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoVkksW3t0eXBlOlVtfV0sbnVsbCxudWxsKTtjbGFzcyBqSXtjb25zdHJ1Y3Rvcih0LGUpe3RoaXMuaXBjPXQsdGhpcy5zdG9yZT1lfWluaXQoKXtjb25zdCB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRmLXN0b3JhZ2UiKTt0aGlzLmlwYy5saXN0ZW4oTkkuR0VUX1VSTF9EQVRBLChlPT57aWYoIWUpcmV0dXJuO2NvbnN0IG49YHAuJHtlLnBsdWdpbk5hbWV9LmAsbz17fSxpPXQudGZfc3RvcmFnZS5nZXRVcmxIYXNoRGljdCgpO2ZvcihsZXQgdCBpbiBpKWlmKHQuc3RhcnRzV2l0aChuKSl7b1t0LnN1YnN0cmluZyhuLmxlbmd0aCldPWlbdF19cmV0dXJuIG99KSksdGhpcy5zdG9yZS5zZWxlY3QodFQpLnBpcGUodWUoKHQ9Pm51bGwhPT10KSksd2UoKSkuc3Vic2NyaWJlKCgoKT0+e3RoaXMuaXBjLmJyb2FkY2FzdChOSS5EQVRBX1JFTE9BREVELHZvaWQgMCl9KSl9fWpJLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxqSSkoVHIoVkkpLFRyKGlTKSl9LGpJLsm1cHJvdj1Tbih7dG9rZW46akksZmFjdG9yeTpqSS7JtWZhYyxwcm92aWRlZEluOiJyb290In0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoakksW3t0eXBlOlVtLGFyZ3M6W3twcm92aWRlZEluOiJyb290In1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOlZJfSx7dHlwZTppU31dfSksbnVsbCk7Y2xhc3MgVUl7Y29uc3RydWN0b3IodCxlKXt0aGlzLmlwYz10LHRoaXMuc3RvcmU9ZX1pbml0KCl7Y29uc3QgdD10aGlzLnN0b3JlLnNlbGVjdCh4UikucGlwZSgkdCgodD0+e2lmKCF0KXJldHVybiB6dChbXSk7cmV0dXJuIEt0KHQubWFwKCh0PT50aGlzLnN0b3JlLnNlbGVjdChxeix7ZXhwZXJpbWVudElkOnR9KSkpKS5waXBlKFZ0KCh0PT50LmZsYXQoKSkpLHdlKCgodCxlKT0+dC5sZW5ndGg9PT1lLmxlbmd0aCYmdC5ldmVyeSgoKHQsbik9PmVbbl0uaWQ9PT10LmlkKSkpKSxWdCgodD0+dC5tYXAoKCh7bmFtZTp0fSk9PnQpKSkpKX0pKSk7dC5zdWJzY3JpYmUoKHQ9Pnt0aGlzLmlwYy5icm9hZGNhc3QoTkkuUlVOU19DSEFOR0VELHQpfSkpLHRoaXMuaXBjLmxpc3RlbihOSS5HRVRfUlVOUywoKCk9PnQucGlwZSh2ZSgxKSkudG9Qcm9taXNlKCkpKX19VUkuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFVJKShUcihWSSksVHIoaVMpKX0sVUkuybVwcm92PVNuKHt0b2tlbjpVSSxmYWN0b3J5OlVJLsm1ZmFjLHByb3ZpZGVkSW46InJvb3QifSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihVSSxbe3R5cGU6VW0sYXJnczpbe3Byb3ZpZGVkSW46InJvb3QifV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6Vkl9LHt0eXBlOmlTfV19KSxudWxsKTtjbGFzcyBXSXtjb25zdHJ1Y3Rvcih0LGUpe2UuaW5pdCgpLHQuaW5pdCgpfXJlZ2lzdGVyUGx1Z2luSWZyYW1lKHQsZSl7IShmdW5jdGlvbiBuKHQsZSl7SUkuc2V0KHQse3BsdWdpbk5hbWU6ZX0pfSkodCxlKX19V0kuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFdJKShUcihVSSksVHIoakkpKX0sV0kuybVtb2Q9Zm8oe3R5cGU6V0l9KSxXSS7JtWluaj1Ebih7cHJvdmlkZXJzOltWSSxqSSxVSV0saW1wb3J0czpbW1JSLGRULFRJXV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKFdJLFt7dHlwZTpMXyxhcmdzOlt7cHJvdmlkZXJzOltWSSxqSSxVSV0saW1wb3J0czpbUlIsZFQsVEldfV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6VUl9LHt0eXBlOmpJfV19KSxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnVvKFdJLHtpbXBvcnRzOltSUixkVCxUSV19KTtjb25zdCBHST1faygiW0FsZXJ0XSBBbGVydCBSZXBvcnRlZCIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pO2NsYXNzIFlJe2NvbnN0cnVjdG9yKHQsZSxuKXt0aGlzLmFjdGlvbnMkPXQsdGhpcy5zdG9yZT1lLHRoaXMuYWxlcnRBY3Rpb25Nb2R1bGU9bix0aGlzLnJlcG9ydFJlZ2lzdGVyZWRBY3Rpb25BbGVydHMkPVdTKCgoKT0+dGhpcy5hY3Rpb25zJC5waXBlKFdlKCh0PT57Y29uc3QgZT10aGlzLmFsZXJ0QWN0aW9uTW9kdWxlLmdldEFsZXJ0RnJvbUFjdGlvbih0KTtlJiZ0aGlzLnN0b3JlLmRpc3BhdGNoKEdJKGUpKX0pKSkpLHtkaXNwYXRjaDohMX0pfX1ZSS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8WUkpKFRyKFFTKSxUcihpUyksVHIobVQpKX0sWUkuybVwcm92PVNuKHt0b2tlbjpZSSxmYWN0b3J5OllJLsm1ZmFjfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihZSSxbe3R5cGU6VW19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6UVN9LHt0eXBlOmlTfSx7dHlwZTptVH1dfSksbnVsbCk7Y29uc3QgcUk9VlMoe2xhdGVzdEFsZXJ0Om51bGx9LEJTKEdJLCgodCx7bG9jYWxpemVkTWVzc2FnZTplLGZvbGxvd3VwQWN0aW9uOm59KT0+e2NvbnN0IG89e2xvY2FsaXplZE1lc3NhZ2U6ZSxjcmVhdGVkOkRhdGUubm93KCl9O3JldHVybiBuJiYoby5mb2xsb3d1cEFjdGlvbj1uKSxPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse2xhdGVzdEFsZXJ0Om99KX0pKSk7ZnVuY3Rpb24gWkkodCxlKXtyZXR1cm4gcUkodCxlKX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY29uc3QgWEk9MTMsS0k9MjcsSkk9MzIsUUk9MzgsJEk9NDA7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpmdW5jdGlvbiB0SCh0LC4uLmUpe3JldHVybiBlLmxlbmd0aD9lLnNvbWUoKGU9PnRbZV0pKTp0LmFsdEtleXx8dC5zaGlmdEtleXx8dC5jdHJsS2V5fHx0Lm1ldGFLZXl9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2Z1bmN0aW9uIGVIKHQpe3JldHVybiBudWxsIT10JiYiZmFsc2UiIT1gJHt0fWB9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2Z1bmN0aW9uIG5IKHQsZT0wKXtyZXR1cm4gb0godCk/TnVtYmVyKHQpOmV9ZnVuY3Rpb24gb0godCl7cmV0dXJuIWlzTmFOKHBhcnNlRmxvYXQodCkpJiYhaXNOYU4oTnVtYmVyKHQpKX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovZnVuY3Rpb24gaUgodCl7cmV0dXJuIEFycmF5LmlzQXJyYXkodCk/dDpbdF19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2Z1bmN0aW9uIGFIKHQpe3JldHVybiBudWxsPT10PyIiOiJzdHJpbmciPT10eXBlb2YgdD90OmAke3R9cHhgfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9mdW5jdGlvbiBySCh0KXtyZXR1cm4gdCBpbnN0YW5jZW9mIEtoP3QubmF0aXZlRWxlbWVudDp0fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9sZXQgc0gsbEg7dHJ5e3NIPSJ1bmRlZmluZWQiIT10eXBlb2YgSW50bCYmSW50bC52OEJyZWFrSXRlcmF0b3J9Y2F0Y2gobUN0KXtzSD0hMX1jbGFzcyBjSHtjb25zdHJ1Y3Rvcih0KXt0aGlzLl9wbGF0Zm9ybUlkPXQsdGhpcy5pc0Jyb3dzZXI9dGhpcy5fcGxhdGZvcm1JZD8oZnVuY3Rpb24gZSh0KXtyZXR1cm4gdD09PXN4fSkodGhpcy5fcGxhdGZvcm1JZCk6Im9iamVjdCI9PXR5cGVvZiBkb2N1bWVudCYmISFkb2N1bWVudCx0aGlzLkVER0U9dGhpcy5pc0Jyb3dzZXImJi8oZWRnZSkvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpLHRoaXMuVFJJREVOVD10aGlzLmlzQnJvd3NlciYmLyhtc2llfHRyaWRlbnQpL2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSx0aGlzLkJMSU5LPXRoaXMuaXNCcm93c2VyJiYhKCF3aW5kb3cuY2hyb21lJiYhc0gpJiYidW5kZWZpbmVkIiE9dHlwZW9mIENTUyYmIXRoaXMuRURHRSYmIXRoaXMuVFJJREVOVCx0aGlzLldFQktJVD10aGlzLmlzQnJvd3NlciYmL0FwcGxlV2ViS2l0L2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSYmIXRoaXMuQkxJTksmJiF0aGlzLkVER0UmJiF0aGlzLlRSSURFTlQsdGhpcy5JT1M9dGhpcy5pc0Jyb3dzZXImJi9pUGFkfGlQaG9uZXxpUG9kLy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpJiYhKCJNU1N0cmVhbSJpbiB3aW5kb3cpLHRoaXMuRklSRUZPWD10aGlzLmlzQnJvd3NlciYmLyhmaXJlZm94fG1pbmVmaWVsZCkvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpLHRoaXMuQU5EUk9JRD10aGlzLmlzQnJvd3NlciYmL2FuZHJvaWQvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpJiYhdGhpcy5UUklERU5ULHRoaXMuU0FGQVJJPXRoaXMuaXNCcm93c2VyJiYvc2FmYXJpL2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSYmdGhpcy5XRUJLSVR9fWNILsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxjSCkoVHIoWF8pKX0sY0guybVwcm92PVNuKHtmYWN0b3J5OmZ1bmN0aW9uIHQoKXtyZXR1cm4gbmV3IGNIKFRyKFhfKSl9LHRva2VuOmNILHByb3ZpZGVkSW46InJvb3QifSksY0guY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpPYmplY3QsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbWF9dfV19XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKGNILFt7dHlwZTpVbSxhcmdzOlt7cHJvdmlkZWRJbjoicm9vdCJ9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpPYmplY3QsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbWF9dfV19XX0pLG51bGwpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3MgZEh7fWRILsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxkSCl9LGRILsm1bW9kPWZvKHt0eXBlOmRIfSksZEguybVpbmo9RG4oe30pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoZEgsW3t0eXBlOkxfLGFyZ3M6W3t9XX1dLG51bGwsbnVsbCk7Y29uc3QgcEg9WyJjb2xvciIsImJ1dHRvbiIsImNoZWNrYm94IiwiZGF0ZSIsImRhdGV0aW1lLWxvY2FsIiwiZW1haWwiLCJmaWxlIiwiaGlkZGVuIiwiaW1hZ2UiLCJtb250aCIsIm51bWJlciIsInBhc3N3b3JkIiwicmFkaW8iLCJyYW5nZSIsInJlc2V0Iiwic2VhcmNoIiwic3VibWl0IiwidGVsIiwidGV4dCIsInRpbWUiLCJ1cmwiLCJ3ZWVrIl07ZnVuY3Rpb24gbUgoKXtpZihsSClyZXR1cm4gbEg7aWYoIm9iamVjdCIhPXR5cGVvZiBkb2N1bWVudHx8IWRvY3VtZW50KXJldHVybiBsSD1uZXcgU2V0KHBIKSxsSDtsZXQgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpO3JldHVybiBsSD1uZXcgU2V0KHBILmZpbHRlcigoZT0+KHQuc2V0QXR0cmlidXRlKCJ0eXBlIixlKSx0LnR5cGU9PT1lKSkpKSxsSH0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovbGV0IGZILHVILGdILGhIO2Z1bmN0aW9uIGJIKHQpe3JldHVybihmdW5jdGlvbiBlKCl7aWYobnVsbD09ZkgmJiJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93KXRyeXt3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigidGVzdCIsbnVsbCxPYmplY3QuZGVmaW5lUHJvcGVydHkoe30sInBhc3NpdmUiLHtnZXQ6KCk9PmZIPSEwfSkpfWZpbmFsbHl7Zkg9Zkh8fCExfXJldHVybiBmSH0pKCk/dDohIXQuY2FwdHVyZX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovZnVuY3Rpb24geUgoKXtpZihudWxsPT1nSCl7aWYoIm9iamVjdCIhPXR5cGVvZiBkb2N1bWVudHx8IWRvY3VtZW50fHwiZnVuY3Rpb24iIT10eXBlb2YgRWxlbWVudHx8IUVsZW1lbnQpcmV0dXJuIGdIPSExLGdIO2lmKCJzY3JvbGxCZWhhdmlvciJpbiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUpZ0g9ITA7ZWxzZXtjb25zdCB0PUVsZW1lbnQucHJvdG90eXBlLnNjcm9sbFRvO2dIPSEhdCYmIS9ce1xzKlxbbmF0aXZlIGNvZGVcXVxzKlx9Ly50ZXN0KHQudG9TdHJpbmcoKSl9fXJldHVybiBnSH1mdW5jdGlvbiBfSCgpe2lmKCJvYmplY3QiIT10eXBlb2YgZG9jdW1lbnR8fCFkb2N1bWVudClyZXR1cm4gMDtpZihudWxsPT11SCl7Y29uc3QgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSxlPXQuc3R5bGU7dC5kaXI9InJ0bCIsZS53aWR0aD0iMXB4IixlLm92ZXJmbG93PSJhdXRvIixlLnZpc2liaWxpdHk9ImhpZGRlbiIsZS5wb2ludGVyRXZlbnRzPSJub25lIixlLnBvc2l0aW9uPSJhYnNvbHV0ZSI7Y29uc3Qgbj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSxvPW4uc3R5bGU7by53aWR0aD0iMnB4IixvLmhlaWdodD0iMXB4Iix0LmFwcGVuZENoaWxkKG4pLGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodCksdUg9MCwwPT09dC5zY3JvbGxMZWZ0JiYodC5zY3JvbGxMZWZ0PTEsdUg9MD09PXQuc2Nyb2xsTGVmdD8xOjIpLHQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0KX1yZXR1cm4gdUh9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2Z1bmN0aW9uIENIKHQpe2lmKChmdW5jdGlvbiBlKCl7aWYobnVsbD09aEgpe2NvbnN0IHQ9InVuZGVmaW5lZCIhPXR5cGVvZiBkb2N1bWVudD9kb2N1bWVudC5oZWFkOm51bGw7aEg9ISghdHx8IXQuY3JlYXRlU2hhZG93Um9vdCYmIXQuYXR0YWNoU2hhZG93KX1yZXR1cm4gaEh9KSgpKXtjb25zdCBlPXQuZ2V0Um9vdE5vZGU/dC5nZXRSb290Tm9kZSgpOm51bGw7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBTaGFkb3dSb290JiZTaGFkb3dSb290JiZlIGluc3RhbmNlb2YgU2hhZG93Um9vdClyZXR1cm4gZX1yZXR1cm4gbnVsbH1mdW5jdGlvbiBNSCgpe2xldCB0PSJ1bmRlZmluZWQiIT10eXBlb2YgZG9jdW1lbnQmJmRvY3VtZW50P2RvY3VtZW50LmFjdGl2ZUVsZW1lbnQ6bnVsbDtmb3IoO3QmJnQuc2hhZG93Um9vdDspe2NvbnN0IGU9dC5zaGFkb3dSb290LmFjdGl2ZUVsZW1lbnQ7aWYoZT09PXQpYnJlYWs7dD1lfXJldHVybiB0fWZ1bmN0aW9uIHZIKHQpe3JldHVybiB0LmNvbXBvc2VkUGF0aD90LmNvbXBvc2VkUGF0aCgpWzBdOnQudGFyZ2V0fWNsYXNzIHhIe2NyZWF0ZSh0KXtyZXR1cm4idW5kZWZpbmVkIj09dHlwZW9mIE11dGF0aW9uT2JzZXJ2ZXI/bnVsbDpuZXcgTXV0YXRpb25PYnNlcnZlcih0KX19eEguybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHhIKX0seEguybVwcm92PVNuKHtmYWN0b3J5OmZ1bmN0aW9uIHQoKXtyZXR1cm4gbmV3IHhIfSx0b2tlbjp4SCxwcm92aWRlZEluOiJyb290In0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoeEgsW3t0eXBlOlVtLGFyZ3M6W3twcm92aWRlZEluOiJyb290In1dfV0sbnVsbCxudWxsKTtjbGFzcyBPSHtjb25zdHJ1Y3Rvcih0KXt0aGlzLl9tdXRhdGlvbk9ic2VydmVyRmFjdG9yeT10LHRoaXMuX29ic2VydmVkRWxlbWVudHM9bmV3IE1hcH1uZ09uRGVzdHJveSgpe3RoaXMuX29ic2VydmVkRWxlbWVudHMuZm9yRWFjaCgoKHQsZSk9PnRoaXMuX2NsZWFudXBPYnNlcnZlcihlKSkpfW9ic2VydmUodCl7Y29uc3QgZT1ySCh0KTtyZXR1cm4gbmV3IFQoKHQ9Pntjb25zdCBuPXRoaXMuX29ic2VydmVFbGVtZW50KGUpLnN1YnNjcmliZSh0KTtyZXR1cm4oKT0+e24udW5zdWJzY3JpYmUoKSx0aGlzLl91bm9ic2VydmVFbGVtZW50KGUpfX0pKX1fb2JzZXJ2ZUVsZW1lbnQodCl7aWYodGhpcy5fb2JzZXJ2ZWRFbGVtZW50cy5oYXModCkpdGhpcy5fb2JzZXJ2ZWRFbGVtZW50cy5nZXQodCkuY291bnQrKztlbHNle2NvbnN0IGU9bmV3IEIsbj10aGlzLl9tdXRhdGlvbk9ic2VydmVyRmFjdG9yeS5jcmVhdGUoKHQ9PmUubmV4dCh0KSkpO24mJm4ub2JzZXJ2ZSh0LHtjaGFyYWN0ZXJEYXRhOiEwLGNoaWxkTGlzdDohMCxzdWJ0cmVlOiEwfSksdGhpcy5fb2JzZXJ2ZWRFbGVtZW50cy5zZXQodCx7b2JzZXJ2ZXI6bixzdHJlYW06ZSxjb3VudDoxfSl9cmV0dXJuIHRoaXMuX29ic2VydmVkRWxlbWVudHMuZ2V0KHQpLnN0cmVhbX1fdW5vYnNlcnZlRWxlbWVudCh0KXt0aGlzLl9vYnNlcnZlZEVsZW1lbnRzLmhhcyh0KSYmKHRoaXMuX29ic2VydmVkRWxlbWVudHMuZ2V0KHQpLmNvdW50LS0sdGhpcy5fb2JzZXJ2ZWRFbGVtZW50cy5nZXQodCkuY291bnR8fHRoaXMuX2NsZWFudXBPYnNlcnZlcih0KSl9X2NsZWFudXBPYnNlcnZlcih0KXtpZih0aGlzLl9vYnNlcnZlZEVsZW1lbnRzLmhhcyh0KSl7Y29uc3R7b2JzZXJ2ZXI6ZSxzdHJlYW06bn09dGhpcy5fb2JzZXJ2ZWRFbGVtZW50cy5nZXQodCk7ZSYmZS5kaXNjb25uZWN0KCksbi5jb21wbGV0ZSgpLHRoaXMuX29ic2VydmVkRWxlbWVudHMuZGVsZXRlKHQpfX19T0guybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fE9IKShUcih4SCkpfSxPSC7JtXByb3Y9U24oe2ZhY3Rvcnk6ZnVuY3Rpb24gdCgpe3JldHVybiBuZXcgT0goVHIoeEgpKX0sdG9rZW46T0gscHJvdmlkZWRJbjoicm9vdCJ9KSxPSC5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOnhIfV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihPSCxbe3R5cGU6VW0sYXJnczpbe3Byb3ZpZGVkSW46InJvb3QifV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6eEh9XX0pLG51bGwpO2NsYXNzIFBIe2NvbnN0cnVjdG9yKHQsZSxuKXt0aGlzLl9jb250ZW50T2JzZXJ2ZXI9dCx0aGlzLl9lbGVtZW50UmVmPWUsdGhpcy5fbmdab25lPW4sdGhpcy5ldmVudD1uZXcgU3ksdGhpcy5fZGlzYWJsZWQ9ITEsdGhpcy5fY3VycmVudFN1YnNjcmlwdGlvbj1udWxsfWdldCBkaXNhYmxlZCgpe3JldHVybiB0aGlzLl9kaXNhYmxlZH1zZXQgZGlzYWJsZWQodCl7dGhpcy5fZGlzYWJsZWQ9ZUgodCksdGhpcy5fZGlzYWJsZWQ/dGhpcy5fdW5zdWJzY3JpYmUoKTp0aGlzLl9zdWJzY3JpYmUoKX1nZXQgZGVib3VuY2UoKXtyZXR1cm4gdGhpcy5fZGVib3VuY2V9c2V0IGRlYm91bmNlKHQpe3RoaXMuX2RlYm91bmNlPW5IKHQpLHRoaXMuX3N1YnNjcmliZSgpfW5nQWZ0ZXJDb250ZW50SW5pdCgpe3RoaXMuX2N1cnJlbnRTdWJzY3JpcHRpb258fHRoaXMuZGlzYWJsZWR8fHRoaXMuX3N1YnNjcmliZSgpfW5nT25EZXN0cm95KCl7dGhpcy5fdW5zdWJzY3JpYmUoKX1fc3Vic2NyaWJlKCl7dGhpcy5fdW5zdWJzY3JpYmUoKTtjb25zdCB0PXRoaXMuX2NvbnRlbnRPYnNlcnZlci5vYnNlcnZlKHRoaXMuX2VsZW1lbnRSZWYpO3RoaXMuX25nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKCk9Pnt0aGlzLl9jdXJyZW50U3Vic2NyaXB0aW9uPSh0aGlzLmRlYm91bmNlP3QucGlwZShDZSh0aGlzLmRlYm91bmNlKSk6dCkuc3Vic2NyaWJlKHRoaXMuZXZlbnQpfSkpfV91bnN1YnNjcmliZSgpe3ZhciB0O251bGw9PT0odD10aGlzLl9jdXJyZW50U3Vic2NyaXB0aW9uKXx8dm9pZCAwPT09dHx8dC51bnN1YnNjcmliZSgpfX1QSC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8UEgpKGdmKE9IKSxnZihLaCksZ2YobUMpKX0sUEguybVkaXI9aG8oe3R5cGU6UEgsc2VsZWN0b3JzOltbIiIsImNka09ic2VydmVDb250ZW50IiwiIl1dLGlucHV0czp7ZGlzYWJsZWQ6WyJjZGtPYnNlcnZlQ29udGVudERpc2FibGVkIiwiZGlzYWJsZWQiXSxkZWJvdW5jZToiZGVib3VuY2UifSxvdXRwdXRzOntldmVudDoiY2RrT2JzZXJ2ZUNvbnRlbnQifSxleHBvcnRBczpbImNka09ic2VydmVDb250ZW50Il19KSxQSC5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOk9IfSx7dHlwZTpLaH0se3R5cGU6bUN9XSxQSC5wcm9wRGVjb3JhdG9ycz17ZXZlbnQ6W3t0eXBlOkVfLGFyZ3M6WyJjZGtPYnNlcnZlQ29udGVudCJdfV0sZGlzYWJsZWQ6W3t0eXBlOlJfLGFyZ3M6WyJjZGtPYnNlcnZlQ29udGVudERpc2FibGVkIl19XSxkZWJvdW5jZTpbe3R5cGU6Ul99XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihQSCxbe3R5cGU6a18sYXJnczpbe3NlbGVjdG9yOiJbY2RrT2JzZXJ2ZUNvbnRlbnRdIixleHBvcnRBczoiY2RrT2JzZXJ2ZUNvbnRlbnQifV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6T0h9LHt0eXBlOktofSx7dHlwZTptQ31dfSkse2V2ZW50Olt7dHlwZTpFXyxhcmdzOlsiY2RrT2JzZXJ2ZUNvbnRlbnQiXX1dLGRpc2FibGVkOlt7dHlwZTpSXyxhcmdzOlsiY2RrT2JzZXJ2ZUNvbnRlbnREaXNhYmxlZCJdfV0sZGVib3VuY2U6W3t0eXBlOlJffV19KTtjbGFzcyB3SHt9d0guybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHdIKX0sd0guybVtb2Q9Zm8oe3R5cGU6d0h9KSx3SC7JtWluaj1Ebih7cHJvdmlkZXJzOlt4SF19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKHdILFt7dHlwZTpMXyxhcmdzOlt7ZXhwb3J0czpbUEhdLGRlY2xhcmF0aW9uczpbUEhdLHByb3ZpZGVyczpbeEhdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmdW8od0gse2RlY2xhcmF0aW9uczpbUEhdLGV4cG9ydHM6W1BIXX0pO2Z1bmN0aW9uIGtIKHQsZSl7cmV0dXJuKHQuZ2V0QXR0cmlidXRlKGUpfHwiIikubWF0Y2goL1xTKy9nKXx8W119Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NvbnN0IFNIPSJjZGstZGVzY3JpYmVkYnktbWVzc2FnZS1jb250YWluZXIiLERIPSJjZGstZGVzY3JpYmVkYnktbWVzc2FnZSIsUkg9ImNkay1kZXNjcmliZWRieS1ob3N0IjtsZXQgRUg9MDtjb25zdCBBSD1uZXcgTWFwO2xldCBUSD1udWxsO2NsYXNzIE5Ie2NvbnN0cnVjdG9yKHQpe3RoaXMuX2RvY3VtZW50PXR9ZGVzY3JpYmUodCxlLG4pe2lmKCF0aGlzLl9jYW5CZURlc2NyaWJlZCh0LGUpKXJldHVybjtjb25zdCBvPXpIKGUsbik7InN0cmluZyIhPXR5cGVvZiBlPyhJSChlKSxBSC5zZXQobyx7bWVzc2FnZUVsZW1lbnQ6ZSxyZWZlcmVuY2VDb3VudDowfSkpOkFILmhhcyhvKXx8dGhpcy5fY3JlYXRlTWVzc2FnZUVsZW1lbnQoZSxuKSx0aGlzLl9pc0VsZW1lbnREZXNjcmliZWRCeU1lc3NhZ2UodCxvKXx8dGhpcy5fYWRkTWVzc2FnZVJlZmVyZW5jZSh0LG8pfXJlbW92ZURlc2NyaXB0aW9uKHQsZSxuKXtpZighZXx8IXRoaXMuX2lzRWxlbWVudE5vZGUodCkpcmV0dXJuO2NvbnN0IG89ekgoZSxuKTtpZih0aGlzLl9pc0VsZW1lbnREZXNjcmliZWRCeU1lc3NhZ2UodCxvKSYmdGhpcy5fcmVtb3ZlTWVzc2FnZVJlZmVyZW5jZSh0LG8pLCJzdHJpbmciPT10eXBlb2YgZSl7Y29uc3QgdD1BSC5nZXQobyk7dCYmMD09PXQucmVmZXJlbmNlQ291bnQmJnRoaXMuX2RlbGV0ZU1lc3NhZ2VFbGVtZW50KG8pfVRIJiYwPT09VEguY2hpbGROb2Rlcy5sZW5ndGgmJnRoaXMuX2RlbGV0ZU1lc3NhZ2VzQ29udGFpbmVyKCl9bmdPbkRlc3Ryb3koKXtjb25zdCB0PXRoaXMuX2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIltjZGstZGVzY3JpYmVkYnktaG9zdF0iKTtmb3IobGV0IGU9MDtlPHQubGVuZ3RoO2UrKyl0aGlzLl9yZW1vdmVDZGtEZXNjcmliZWRCeVJlZmVyZW5jZUlkcyh0W2VdKSx0W2VdLnJlbW92ZUF0dHJpYnV0ZShSSCk7VEgmJnRoaXMuX2RlbGV0ZU1lc3NhZ2VzQ29udGFpbmVyKCksQUguY2xlYXIoKX1fY3JlYXRlTWVzc2FnZUVsZW1lbnQodCxlKXtjb25zdCBuPXRoaXMuX2RvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO0lIKG4pLG4udGV4dENvbnRlbnQ9dCxlJiZuLnNldEF0dHJpYnV0ZSgicm9sZSIsZSksdGhpcy5fY3JlYXRlTWVzc2FnZXNDb250YWluZXIoKSxUSC5hcHBlbmRDaGlsZChuKSxBSC5zZXQoekgodCxlKSx7bWVzc2FnZUVsZW1lbnQ6bixyZWZlcmVuY2VDb3VudDowfSl9X2RlbGV0ZU1lc3NhZ2VFbGVtZW50KHQpe2NvbnN0IGU9QUguZ2V0KHQpLG49ZSYmZS5tZXNzYWdlRWxlbWVudDtUSCYmbiYmVEgucmVtb3ZlQ2hpbGQobiksQUguZGVsZXRlKHQpfV9jcmVhdGVNZXNzYWdlc0NvbnRhaW5lcigpe2lmKCFUSCl7Y29uc3QgdD10aGlzLl9kb2N1bWVudC5nZXRFbGVtZW50QnlJZChTSCk7dCYmdC5wYXJlbnROb2RlJiZ0LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodCksVEg9dGhpcy5fZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksVEguaWQ9U0gsVEguc3R5bGUudmlzaWJpbGl0eT0iaGlkZGVuIixUSC5jbGFzc0xpc3QuYWRkKCJjZGstdmlzdWFsbHktaGlkZGVuIiksdGhpcy5fZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChUSCl9fV9kZWxldGVNZXNzYWdlc0NvbnRhaW5lcigpe1RIJiZUSC5wYXJlbnROb2RlJiYoVEgucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChUSCksVEg9bnVsbCl9X3JlbW92ZUNka0Rlc2NyaWJlZEJ5UmVmZXJlbmNlSWRzKHQpe2NvbnN0IGU9a0godCwiYXJpYS1kZXNjcmliZWRieSIpLmZpbHRlcigodD0+MCE9dC5pbmRleE9mKERIKSkpO3Quc2V0QXR0cmlidXRlKCJhcmlhLWRlc2NyaWJlZGJ5IixlLmpvaW4oIiAiKSl9X2FkZE1lc3NhZ2VSZWZlcmVuY2UodCxlKXtjb25zdCBuPUFILmdldChlKTshKGZ1bmN0aW9uIG8odCxlLG4pe2NvbnN0IG89a0godCxlKTtvLnNvbWUoKHQ9PnQudHJpbSgpPT1uLnRyaW0oKSkpfHwoby5wdXNoKG4udHJpbSgpKSx0LnNldEF0dHJpYnV0ZShlLG8uam9pbigiICIpKSl9KSh0LCJhcmlhLWRlc2NyaWJlZGJ5IixuLm1lc3NhZ2VFbGVtZW50LmlkKSx0LnNldEF0dHJpYnV0ZShSSCwiIiksbi5yZWZlcmVuY2VDb3VudCsrfV9yZW1vdmVNZXNzYWdlUmVmZXJlbmNlKHQsZSl7Y29uc3Qgbj1BSC5nZXQoZSk7bi5yZWZlcmVuY2VDb3VudC0tLChmdW5jdGlvbiBvKHQsZSxuKXtjb25zdCBvPWtIKHQsZSkuZmlsdGVyKCh0PT50IT1uLnRyaW0oKSkpO28ubGVuZ3RoP3Quc2V0QXR0cmlidXRlKGUsby5qb2luKCIgIikpOnQucmVtb3ZlQXR0cmlidXRlKGUpfSkodCwiYXJpYS1kZXNjcmliZWRieSIsbi5tZXNzYWdlRWxlbWVudC5pZCksdC5yZW1vdmVBdHRyaWJ1dGUoUkgpfV9pc0VsZW1lbnREZXNjcmliZWRCeU1lc3NhZ2UodCxlKXtjb25zdCBuPWtIKHQsImFyaWEtZGVzY3JpYmVkYnkiKSxvPUFILmdldChlKSxpPW8mJm8ubWVzc2FnZUVsZW1lbnQuaWQ7cmV0dXJuISFpJiYtMSE9bi5pbmRleE9mKGkpfV9jYW5CZURlc2NyaWJlZCh0LGUpe2lmKCF0aGlzLl9pc0VsZW1lbnROb2RlKHQpKXJldHVybiExO2lmKGUmJiJvYmplY3QiPT10eXBlb2YgZSlyZXR1cm4hMDtjb25zdCBuPW51bGw9PWU/IiI6YCR7ZX1gLnRyaW0oKSxvPXQuZ2V0QXR0cmlidXRlKCJhcmlhLWxhYmVsIik7cmV0dXJuISFuJiYoIW98fG8udHJpbSgpIT09bil9X2lzRWxlbWVudE5vZGUodCl7cmV0dXJuIHQubm9kZVR5cGU9PT10aGlzLl9kb2N1bWVudC5FTEVNRU5UX05PREV9fWZ1bmN0aW9uIHpIKHQsZSl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0P2Ake2V8fCIifS8ke3R9YDp0fWZ1bmN0aW9uIElIKHQpe3QuaWR8fCh0LmlkPSJjZGstZGVzY3JpYmVkYnktbWVzc2FnZS0iK0VIKyspfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9OSC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8TkgpKFRyKHNNKSl9LE5ILsm1cHJvdj1Tbih7ZmFjdG9yeTpmdW5jdGlvbiB0KCl7cmV0dXJuIG5ldyBOSChUcihzTSkpfSx0b2tlbjpOSCxwcm92aWRlZEluOiJyb290In0pLE5ILmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W3NNXX1dfV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihOSCxbe3R5cGU6VW0sYXJnczpbe3Byb3ZpZGVkSW46InJvb3QifV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W3NNXX1dfV19KSxudWxsKTtjbGFzcyBISHtjb25zdHJ1Y3Rvcih0KXt0aGlzLl9pdGVtcz10LHRoaXMuX2FjdGl2ZUl0ZW1JbmRleD0tMSx0aGlzLl9hY3RpdmVJdGVtPW51bGwsdGhpcy5fd3JhcD0hMSx0aGlzLl9sZXR0ZXJLZXlTdHJlYW09bmV3IEIsdGhpcy5fdHlwZWFoZWFkU3Vic2NyaXB0aW9uPXUuRU1QVFksdGhpcy5fdmVydGljYWw9ITAsdGhpcy5fYWxsb3dlZE1vZGlmaWVyS2V5cz1bXSx0aGlzLl9ob21lQW5kRW5kPSExLHRoaXMuX3NraXBQcmVkaWNhdGVGbj10PT50LmRpc2FibGVkLHRoaXMuX3ByZXNzZWRMZXR0ZXJzPVtdLHRoaXMudGFiT3V0PW5ldyBCLHRoaXMuY2hhbmdlPW5ldyBCLHQgaW5zdGFuY2VvZiBSeSYmdC5jaGFuZ2VzLnN1YnNjcmliZSgodD0+e2lmKHRoaXMuX2FjdGl2ZUl0ZW0pe2NvbnN0IGU9dC50b0FycmF5KCkuaW5kZXhPZih0aGlzLl9hY3RpdmVJdGVtKTtlPi0xJiZlIT09dGhpcy5fYWN0aXZlSXRlbUluZGV4JiYodGhpcy5fYWN0aXZlSXRlbUluZGV4PWUpfX0pKX1za2lwUHJlZGljYXRlKHQpe3JldHVybiB0aGlzLl9za2lwUHJlZGljYXRlRm49dCx0aGlzfXdpdGhXcmFwKHQ9ITApe3JldHVybiB0aGlzLl93cmFwPXQsdGhpc313aXRoVmVydGljYWxPcmllbnRhdGlvbih0PSEwKXtyZXR1cm4gdGhpcy5fdmVydGljYWw9dCx0aGlzfXdpdGhIb3Jpem9udGFsT3JpZW50YXRpb24odCl7cmV0dXJuIHRoaXMuX2hvcml6b250YWw9dCx0aGlzfXdpdGhBbGxvd2VkTW9kaWZpZXJLZXlzKHQpe3JldHVybiB0aGlzLl9hbGxvd2VkTW9kaWZpZXJLZXlzPXQsdGhpc313aXRoVHlwZUFoZWFkKHQ9MjAwKXtpZigoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJnRoaXMuX2l0ZW1zLmxlbmd0aCYmdGhpcy5faXRlbXMuc29tZSgodD0+ImZ1bmN0aW9uIiE9dHlwZW9mIHQuZ2V0TGFiZWwpKSl0aHJvdyBFcnJvcigiTGlzdEtleU1hbmFnZXIgaXRlbXMgaW4gdHlwZWFoZWFkIG1vZGUgbXVzdCBpbXBsZW1lbnQgdGhlIGBnZXRMYWJlbGAgbWV0aG9kLiIpO3JldHVybiB0aGlzLl90eXBlYWhlYWRTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSx0aGlzLl90eXBlYWhlYWRTdWJzY3JpcHRpb249dGhpcy5fbGV0dGVyS2V5U3RyZWFtLnBpcGUoV2UoKHQ9PnRoaXMuX3ByZXNzZWRMZXR0ZXJzLnB1c2godCkpKSxDZSh0KSx1ZSgoKCk9PnRoaXMuX3ByZXNzZWRMZXR0ZXJzLmxlbmd0aD4wKSksVnQoKCgpPT50aGlzLl9wcmVzc2VkTGV0dGVycy5qb2luKCIiKSkpKS5zdWJzY3JpYmUoKHQ9Pntjb25zdCBlPXRoaXMuX2dldEl0ZW1zQXJyYXkoKTtmb3IobGV0IG49MTtuPGUubGVuZ3RoKzE7bisrKXtjb25zdCBvPSh0aGlzLl9hY3RpdmVJdGVtSW5kZXgrbiklZS5sZW5ndGgsaT1lW29dO2lmKCF0aGlzLl9za2lwUHJlZGljYXRlRm4oaSkmJjA9PT1pLmdldExhYmVsKCkudG9VcHBlckNhc2UoKS50cmltKCkuaW5kZXhPZih0KSl7dGhpcy5zZXRBY3RpdmVJdGVtKG8pO2JyZWFrfX10aGlzLl9wcmVzc2VkTGV0dGVycz1bXX0pKSx0aGlzfXdpdGhIb21lQW5kRW5kKHQ9ITApe3JldHVybiB0aGlzLl9ob21lQW5kRW5kPXQsdGhpc31zZXRBY3RpdmVJdGVtKHQpe2NvbnN0IGU9dGhpcy5fYWN0aXZlSXRlbTt0aGlzLnVwZGF0ZUFjdGl2ZUl0ZW0odCksdGhpcy5fYWN0aXZlSXRlbSE9PWUmJnRoaXMuY2hhbmdlLm5leHQodGhpcy5fYWN0aXZlSXRlbUluZGV4KX1vbktleWRvd24odCl7Y29uc3QgZT10LmtleUNvZGUsbj1bImFsdEtleSIsImN0cmxLZXkiLCJtZXRhS2V5Iiwic2hpZnRLZXkiXS5ldmVyeSgoZT0+IXRbZV18fHRoaXMuX2FsbG93ZWRNb2RpZmllcktleXMuaW5kZXhPZihlKT4tMSkpO3N3aXRjaChlKXtjYXNlIDk6cmV0dXJuIHZvaWQgdGhpcy50YWJPdXQubmV4dCgpO2Nhc2UgJEk6aWYodGhpcy5fdmVydGljYWwmJm4pe3RoaXMuc2V0TmV4dEl0ZW1BY3RpdmUoKTticmVha31yZXR1cm47Y2FzZSBRSTppZih0aGlzLl92ZXJ0aWNhbCYmbil7dGhpcy5zZXRQcmV2aW91c0l0ZW1BY3RpdmUoKTticmVha31yZXR1cm47Y2FzZSAzOTppZih0aGlzLl9ob3Jpem9udGFsJiZuKXsicnRsIj09PXRoaXMuX2hvcml6b250YWw/dGhpcy5zZXRQcmV2aW91c0l0ZW1BY3RpdmUoKTp0aGlzLnNldE5leHRJdGVtQWN0aXZlKCk7YnJlYWt9cmV0dXJuO2Nhc2UgMzc6aWYodGhpcy5faG9yaXpvbnRhbCYmbil7InJ0bCI9PT10aGlzLl9ob3Jpem9udGFsP3RoaXMuc2V0TmV4dEl0ZW1BY3RpdmUoKTp0aGlzLnNldFByZXZpb3VzSXRlbUFjdGl2ZSgpO2JyZWFrfXJldHVybjtjYXNlIDM2OmlmKHRoaXMuX2hvbWVBbmRFbmQmJm4pe3RoaXMuc2V0Rmlyc3RJdGVtQWN0aXZlKCk7YnJlYWt9cmV0dXJuO2Nhc2UgMzU6aWYodGhpcy5faG9tZUFuZEVuZCYmbil7dGhpcy5zZXRMYXN0SXRlbUFjdGl2ZSgpO2JyZWFrfXJldHVybjtkZWZhdWx0OnJldHVybiB2b2lkKChufHx0SCh0LCJzaGlmdEtleSIpKSYmKHQua2V5JiYxPT09dC5rZXkubGVuZ3RoP3RoaXMuX2xldHRlcktleVN0cmVhbS5uZXh0KHQua2V5LnRvTG9jYWxlVXBwZXJDYXNlKCkpOihlPj02NSYmZTw9OTB8fGU+PTQ4JiZlPD01NykmJnRoaXMuX2xldHRlcktleVN0cmVhbS5uZXh0KFN0cmluZy5mcm9tQ2hhckNvZGUoZSkpKSl9dGhpcy5fcHJlc3NlZExldHRlcnM9W10sdC5wcmV2ZW50RGVmYXVsdCgpfWdldCBhY3RpdmVJdGVtSW5kZXgoKXtyZXR1cm4gdGhpcy5fYWN0aXZlSXRlbUluZGV4fWdldCBhY3RpdmVJdGVtKCl7cmV0dXJuIHRoaXMuX2FjdGl2ZUl0ZW19aXNUeXBpbmcoKXtyZXR1cm4gdGhpcy5fcHJlc3NlZExldHRlcnMubGVuZ3RoPjB9c2V0Rmlyc3RJdGVtQWN0aXZlKCl7dGhpcy5fc2V0QWN0aXZlSXRlbUJ5SW5kZXgoMCwxKX1zZXRMYXN0SXRlbUFjdGl2ZSgpe3RoaXMuX3NldEFjdGl2ZUl0ZW1CeUluZGV4KHRoaXMuX2l0ZW1zLmxlbmd0aC0xLC0xKX1zZXROZXh0SXRlbUFjdGl2ZSgpe3RoaXMuX2FjdGl2ZUl0ZW1JbmRleDwwP3RoaXMuc2V0Rmlyc3RJdGVtQWN0aXZlKCk6dGhpcy5fc2V0QWN0aXZlSXRlbUJ5RGVsdGEoMSl9c2V0UHJldmlvdXNJdGVtQWN0aXZlKCl7dGhpcy5fYWN0aXZlSXRlbUluZGV4PDAmJnRoaXMuX3dyYXA/dGhpcy5zZXRMYXN0SXRlbUFjdGl2ZSgpOnRoaXMuX3NldEFjdGl2ZUl0ZW1CeURlbHRhKC0xKX11cGRhdGVBY3RpdmVJdGVtKHQpe2NvbnN0IGU9dGhpcy5fZ2V0SXRlbXNBcnJheSgpLG49Im51bWJlciI9PXR5cGVvZiB0P3Q6ZS5pbmRleE9mKHQpLG89ZVtuXTt0aGlzLl9hY3RpdmVJdGVtPW51bGw9PW8/bnVsbDpvLHRoaXMuX2FjdGl2ZUl0ZW1JbmRleD1ufV9zZXRBY3RpdmVJdGVtQnlEZWx0YSh0KXt0aGlzLl93cmFwP3RoaXMuX3NldEFjdGl2ZUluV3JhcE1vZGUodCk6dGhpcy5fc2V0QWN0aXZlSW5EZWZhdWx0TW9kZSh0KX1fc2V0QWN0aXZlSW5XcmFwTW9kZSh0KXtjb25zdCBlPXRoaXMuX2dldEl0ZW1zQXJyYXkoKTtmb3IobGV0IG49MTtuPD1lLmxlbmd0aDtuKyspe2NvbnN0IG89KHRoaXMuX2FjdGl2ZUl0ZW1JbmRleCt0Km4rZS5sZW5ndGgpJWUubGVuZ3RoO2lmKCF0aGlzLl9za2lwUHJlZGljYXRlRm4oZVtvXSkpcmV0dXJuIHZvaWQgdGhpcy5zZXRBY3RpdmVJdGVtKG8pfX1fc2V0QWN0aXZlSW5EZWZhdWx0TW9kZSh0KXt0aGlzLl9zZXRBY3RpdmVJdGVtQnlJbmRleCh0aGlzLl9hY3RpdmVJdGVtSW5kZXgrdCx0KX1fc2V0QWN0aXZlSXRlbUJ5SW5kZXgodCxlKXtjb25zdCBuPXRoaXMuX2dldEl0ZW1zQXJyYXkoKTtpZihuW3RdKXtmb3IoO3RoaXMuX3NraXBQcmVkaWNhdGVGbihuW3RdKTspaWYoIW5bdCs9ZV0pcmV0dXJuO3RoaXMuc2V0QWN0aXZlSXRlbSh0KX19X2dldEl0ZW1zQXJyYXkoKXtyZXR1cm4gdGhpcy5faXRlbXMgaW5zdGFuY2VvZiBSeT90aGlzLl9pdGVtcy50b0FycmF5KCk6dGhpcy5faXRlbXN9fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jbGFzcyBGSCBleHRlbmRzIEhIe3NldEFjdGl2ZUl0ZW0odCl7dGhpcy5hY3RpdmVJdGVtJiZ0aGlzLmFjdGl2ZUl0ZW0uc2V0SW5hY3RpdmVTdHlsZXMoKSxzdXBlci5zZXRBY3RpdmVJdGVtKHQpLHRoaXMuYWN0aXZlSXRlbSYmdGhpcy5hY3RpdmVJdGVtLnNldEFjdGl2ZVN0eWxlcygpfX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY2xhc3MgTEggZXh0ZW5kcyBISHtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5fb3JpZ2luPSJwcm9ncmFtIn1zZXRGb2N1c09yaWdpbih0KXtyZXR1cm4gdGhpcy5fb3JpZ2luPXQsdGhpc31zZXRBY3RpdmVJdGVtKHQpe3N1cGVyLnNldEFjdGl2ZUl0ZW0odCksdGhpcy5hY3RpdmVJdGVtJiZ0aGlzLmFjdGl2ZUl0ZW0uZm9jdXModGhpcy5fb3JpZ2luKX19Y2xhc3MgQkh7Y29uc3RydWN0b3IodCl7dGhpcy5fcGxhdGZvcm09dH1pc0Rpc2FibGVkKHQpe3JldHVybiB0Lmhhc0F0dHJpYnV0ZSgiZGlzYWJsZWQiKX1pc1Zpc2libGUodCl7cmV0dXJuKGZ1bmN0aW9uIGUodCl7cmV0dXJuISEodC5vZmZzZXRXaWR0aHx8dC5vZmZzZXRIZWlnaHR8fCJmdW5jdGlvbiI9PXR5cGVvZiB0LmdldENsaWVudFJlY3RzJiZ0LmdldENsaWVudFJlY3RzKCkubGVuZ3RoKX0pKHQpJiYidmlzaWJsZSI9PT1nZXRDb21wdXRlZFN0eWxlKHQpLnZpc2liaWxpdHl9aXNUYWJiYWJsZSh0KXtpZighdGhpcy5fcGxhdGZvcm0uaXNCcm93c2VyKXJldHVybiExO2NvbnN0IGU9KGZ1bmN0aW9uIG8odCl7dHJ5e3JldHVybiB0LmZyYW1lRWxlbWVudH1jYXRjaCh0KXtyZXR1cm4gbnVsbH19KSgoZnVuY3Rpb24gbih0KXtyZXR1cm4gdC5vd25lckRvY3VtZW50JiZ0Lm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXd8fHdpbmRvd30KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovKSh0KSk7aWYoZSl7aWYoLTE9PT1qSChlKSlyZXR1cm4hMTtpZighdGhpcy5pc1Zpc2libGUoZSkpcmV0dXJuITF9bGV0IGk9dC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpLGE9akgodCk7cmV0dXJuIHQuaGFzQXR0cmlidXRlKCJjb250ZW50ZWRpdGFibGUiKT8tMSE9PWE6ImlmcmFtZSIhPT1pJiYib2JqZWN0IiE9PWkmJighKHRoaXMuX3BsYXRmb3JtLldFQktJVCYmdGhpcy5fcGxhdGZvcm0uSU9TJiYhKGZ1bmN0aW9uIHIodCl7bGV0IGU9dC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpLG49ImlucHV0Ij09PWUmJnQudHlwZTtyZXR1cm4idGV4dCI9PT1ufHwicGFzc3dvcmQiPT09bnx8InNlbGVjdCI9PT1lfHwidGV4dGFyZWEiPT09ZX0pKHQpKSYmKCJhdWRpbyI9PT1pPyEhdC5oYXNBdHRyaWJ1dGUoImNvbnRyb2xzIikmJi0xIT09YToidmlkZW8iPT09aT8tMSE9PWEmJihudWxsIT09YXx8KHRoaXMuX3BsYXRmb3JtLkZJUkVGT1h8fHQuaGFzQXR0cmlidXRlKCJjb250cm9scyIpKSk6dC50YWJJbmRleD49MCkpfWlzRm9jdXNhYmxlKHQsZSl7cmV0dXJuKGZ1bmN0aW9uIG4odCl7aWYoKGZ1bmN0aW9uIGUodCl7cmV0dXJuKGZ1bmN0aW9uIGUodCl7cmV0dXJuImlucHV0Ij09dC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpfSkodCkmJiJoaWRkZW4iPT10LnR5cGV9KSh0KSlyZXR1cm4hMTtyZXR1cm4oZnVuY3Rpb24gbih0KXtsZXQgZT10Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuImlucHV0Ij09PWV8fCJzZWxlY3QiPT09ZXx8ImJ1dHRvbiI9PT1lfHwidGV4dGFyZWEiPT09ZX0pKHQpfHwoZnVuY3Rpb24gbyh0KXtyZXR1cm4oZnVuY3Rpb24gZSh0KXtyZXR1cm4iYSI9PXQubm9kZU5hbWUudG9Mb3dlckNhc2UoKX0pKHQpJiZ0Lmhhc0F0dHJpYnV0ZSgiaHJlZiIpfSkodCl8fHQuaGFzQXR0cmlidXRlKCJjb250ZW50ZWRpdGFibGUiKXx8VkgodCl9KSh0KSYmIXRoaXMuaXNEaXNhYmxlZCh0KSYmKChudWxsPT1lP3ZvaWQgMDplLmlnbm9yZVZpc2liaWxpdHkpfHx0aGlzLmlzVmlzaWJsZSh0KSl9fWZ1bmN0aW9uIFZIKHQpe2lmKCF0Lmhhc0F0dHJpYnV0ZSgidGFiaW5kZXgiKXx8dm9pZCAwPT09dC50YWJJbmRleClyZXR1cm4hMTtsZXQgZT10LmdldEF0dHJpYnV0ZSgidGFiaW5kZXgiKTtyZXR1cm4iLTMyNzY4IiE9ZSYmISghZXx8aXNOYU4ocGFyc2VJbnQoZSwxMCkpKX1mdW5jdGlvbiBqSCh0KXtpZighVkgodCkpcmV0dXJuIG51bGw7Y29uc3QgZT1wYXJzZUludCh0LmdldEF0dHJpYnV0ZSgidGFiaW5kZXgiKXx8IiIsMTApO3JldHVybiBpc05hTihlKT8tMTplfUJILsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxCSCkoVHIoY0gpKX0sQkguybVwcm92PVNuKHtmYWN0b3J5OmZ1bmN0aW9uIHQoKXtyZXR1cm4gbmV3IEJIKFRyKGNIKSl9LHRva2VuOkJILHByb3ZpZGVkSW46InJvb3QifSksQkguY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpjSH1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoQkgsW3t0eXBlOlVtLGFyZ3M6W3twcm92aWRlZEluOiJyb290In1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmNIfV19KSxudWxsKTtjbGFzcyBVSHtjb25zdHJ1Y3Rvcih0LGUsbixvLGk9ITEpe3RoaXMuX2VsZW1lbnQ9dCx0aGlzLl9jaGVja2VyPWUsdGhpcy5fbmdab25lPW4sdGhpcy5fZG9jdW1lbnQ9byx0aGlzLl9oYXNBdHRhY2hlZD0hMSx0aGlzLnN0YXJ0QW5jaG9yTGlzdGVuZXI9KCk9PnRoaXMuZm9jdXNMYXN0VGFiYmFibGVFbGVtZW50KCksdGhpcy5lbmRBbmNob3JMaXN0ZW5lcj0oKT0+dGhpcy5mb2N1c0ZpcnN0VGFiYmFibGVFbGVtZW50KCksdGhpcy5fZW5hYmxlZD0hMCxpfHx0aGlzLmF0dGFjaEFuY2hvcnMoKX1nZXQgZW5hYmxlZCgpe3JldHVybiB0aGlzLl9lbmFibGVkfXNldCBlbmFibGVkKHQpe3RoaXMuX2VuYWJsZWQ9dCx0aGlzLl9zdGFydEFuY2hvciYmdGhpcy5fZW5kQW5jaG9yJiYodGhpcy5fdG9nZ2xlQW5jaG9yVGFiSW5kZXgodCx0aGlzLl9zdGFydEFuY2hvciksdGhpcy5fdG9nZ2xlQW5jaG9yVGFiSW5kZXgodCx0aGlzLl9lbmRBbmNob3IpKX1kZXN0cm95KCl7Y29uc3QgdD10aGlzLl9zdGFydEFuY2hvcixlPXRoaXMuX2VuZEFuY2hvcjt0JiYodC5yZW1vdmVFdmVudExpc3RlbmVyKCJmb2N1cyIsdGhpcy5zdGFydEFuY2hvckxpc3RlbmVyKSx0LnBhcmVudE5vZGUmJnQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0KSksZSYmKGUucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZm9jdXMiLHRoaXMuZW5kQW5jaG9yTGlzdGVuZXIpLGUucGFyZW50Tm9kZSYmZS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGUpKSx0aGlzLl9zdGFydEFuY2hvcj10aGlzLl9lbmRBbmNob3I9bnVsbCx0aGlzLl9oYXNBdHRhY2hlZD0hMX1hdHRhY2hBbmNob3JzKCl7cmV0dXJuISF0aGlzLl9oYXNBdHRhY2hlZHx8KHRoaXMuX25nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKCk9Pnt0aGlzLl9zdGFydEFuY2hvcnx8KHRoaXMuX3N0YXJ0QW5jaG9yPXRoaXMuX2NyZWF0ZUFuY2hvcigpLHRoaXMuX3N0YXJ0QW5jaG9yLmFkZEV2ZW50TGlzdGVuZXIoImZvY3VzIix0aGlzLnN0YXJ0QW5jaG9yTGlzdGVuZXIpKSx0aGlzLl9lbmRBbmNob3J8fCh0aGlzLl9lbmRBbmNob3I9dGhpcy5fY3JlYXRlQW5jaG9yKCksdGhpcy5fZW5kQW5jaG9yLmFkZEV2ZW50TGlzdGVuZXIoImZvY3VzIix0aGlzLmVuZEFuY2hvckxpc3RlbmVyKSl9KSksdGhpcy5fZWxlbWVudC5wYXJlbnROb2RlJiYodGhpcy5fZWxlbWVudC5wYXJlbnROb2RlLmluc2VydEJlZm9yZSh0aGlzLl9zdGFydEFuY2hvcix0aGlzLl9lbGVtZW50KSx0aGlzLl9lbGVtZW50LnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHRoaXMuX2VuZEFuY2hvcix0aGlzLl9lbGVtZW50Lm5leHRTaWJsaW5nKSx0aGlzLl9oYXNBdHRhY2hlZD0hMCksdGhpcy5faGFzQXR0YWNoZWQpfWZvY3VzSW5pdGlhbEVsZW1lbnRXaGVuUmVhZHkodCl7cmV0dXJuIG5ldyBQcm9taXNlKChlPT57dGhpcy5fZXhlY3V0ZU9uU3RhYmxlKCgoKT0+ZSh0aGlzLmZvY3VzSW5pdGlhbEVsZW1lbnQodCkpKSl9KSl9Zm9jdXNGaXJzdFRhYmJhYmxlRWxlbWVudFdoZW5SZWFkeSh0KXtyZXR1cm4gbmV3IFByb21pc2UoKGU9Pnt0aGlzLl9leGVjdXRlT25TdGFibGUoKCgpPT5lKHRoaXMuZm9jdXNGaXJzdFRhYmJhYmxlRWxlbWVudCh0KSkpKX0pKX1mb2N1c0xhc3RUYWJiYWJsZUVsZW1lbnRXaGVuUmVhZHkodCl7cmV0dXJuIG5ldyBQcm9taXNlKChlPT57dGhpcy5fZXhlY3V0ZU9uU3RhYmxlKCgoKT0+ZSh0aGlzLmZvY3VzTGFzdFRhYmJhYmxlRWxlbWVudCh0KSkpKX0pKX1fZ2V0UmVnaW9uQm91bmRhcnkodCl7bGV0IGU9dGhpcy5fZWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKGBbY2RrLWZvY3VzLXJlZ2lvbi0ke3R9XSwgW2Nka0ZvY3VzUmVnaW9uJHt0fV0sIFtjZGstZm9jdXMtJHt0fV1gKTtmb3IobGV0IG49MDtuPGUubGVuZ3RoO24rKyllW25dLmhhc0F0dHJpYnV0ZShgY2RrLWZvY3VzLSR7dH1gKT9jb25zb2xlLndhcm4oYEZvdW5kIHVzZSBvZiBkZXByZWNhdGVkIGF0dHJpYnV0ZSAnY2RrLWZvY3VzLSR7dH0nLCB1c2UgJ2Nka0ZvY3VzUmVnaW9uJHt0fScgaW5zdGVhZC4gVGhlIGRlcHJlY2F0ZWQgYXR0cmlidXRlIHdpbGwgYmUgcmVtb3ZlZCBpbiA4LjAuMC5gLGVbbl0pOmVbbl0uaGFzQXR0cmlidXRlKGBjZGstZm9jdXMtcmVnaW9uLSR7dH1gKSYmY29uc29sZS53YXJuKGBGb3VuZCB1c2Ugb2YgZGVwcmVjYXRlZCBhdHRyaWJ1dGUgJ2Nkay1mb2N1cy1yZWdpb24tJHt0fScsIHVzZSAnY2RrRm9jdXNSZWdpb24ke3R9JyBpbnN0ZWFkLiBUaGUgZGVwcmVjYXRlZCBhdHRyaWJ1dGUgd2lsbCBiZSByZW1vdmVkIGluIDguMC4wLmAsZVtuXSk7cmV0dXJuInN0YXJ0Ij09dD9lLmxlbmd0aD9lWzBdOnRoaXMuX2dldEZpcnN0VGFiYmFibGVFbGVtZW50KHRoaXMuX2VsZW1lbnQpOmUubGVuZ3RoP2VbZS5sZW5ndGgtMV06dGhpcy5fZ2V0TGFzdFRhYmJhYmxlRWxlbWVudCh0aGlzLl9lbGVtZW50KX1mb2N1c0luaXRpYWxFbGVtZW50KHQpe2NvbnN0IGU9dGhpcy5fZWxlbWVudC5xdWVyeVNlbGVjdG9yKCJbY2RrLWZvY3VzLWluaXRpYWxdLCBbY2RrRm9jdXNJbml0aWFsXSIpO2lmKGUpe2lmKGUuaGFzQXR0cmlidXRlKCJjZGstZm9jdXMtaW5pdGlhbCIpJiZjb25zb2xlLndhcm4oIkZvdW5kIHVzZSBvZiBkZXByZWNhdGVkIGF0dHJpYnV0ZSAnY2RrLWZvY3VzLWluaXRpYWwnLCB1c2UgJ2Nka0ZvY3VzSW5pdGlhbCcgaW5zdGVhZC4gVGhlIGRlcHJlY2F0ZWQgYXR0cmlidXRlIHdpbGwgYmUgcmVtb3ZlZCBpbiA4LjAuMCIsZSksInVuZGVmaW5lZCIhPXR5cGVvZiBuZ0Rldk1vZGUmJiFuZ0Rldk1vZGV8fHRoaXMuX2NoZWNrZXIuaXNGb2N1c2FibGUoZSl8fGNvbnNvbGUud2FybigiRWxlbWVudCBtYXRjaGluZyAnW2Nka0ZvY3VzSW5pdGlhbF0nIGlzIG5vdCBmb2N1c2FibGUuIixlKSwhdGhpcy5fY2hlY2tlci5pc0ZvY3VzYWJsZShlKSl7Y29uc3Qgbj10aGlzLl9nZXRGaXJzdFRhYmJhYmxlRWxlbWVudChlKTtyZXR1cm4gbnVsbD09bnx8bi5mb2N1cyh0KSwhIW59cmV0dXJuIGUuZm9jdXModCksITB9cmV0dXJuIHRoaXMuZm9jdXNGaXJzdFRhYmJhYmxlRWxlbWVudCh0KX1mb2N1c0ZpcnN0VGFiYmFibGVFbGVtZW50KHQpe2NvbnN0IGU9dGhpcy5fZ2V0UmVnaW9uQm91bmRhcnkoInN0YXJ0Iik7cmV0dXJuIGUmJmUuZm9jdXModCksISFlfWZvY3VzTGFzdFRhYmJhYmxlRWxlbWVudCh0KXtjb25zdCBlPXRoaXMuX2dldFJlZ2lvbkJvdW5kYXJ5KCJlbmQiKTtyZXR1cm4gZSYmZS5mb2N1cyh0KSwhIWV9aGFzQXR0YWNoZWQoKXtyZXR1cm4gdGhpcy5faGFzQXR0YWNoZWR9X2dldEZpcnN0VGFiYmFibGVFbGVtZW50KHQpe2lmKHRoaXMuX2NoZWNrZXIuaXNGb2N1c2FibGUodCkmJnRoaXMuX2NoZWNrZXIuaXNUYWJiYWJsZSh0KSlyZXR1cm4gdDtsZXQgZT10LmNoaWxkcmVufHx0LmNoaWxkTm9kZXM7Zm9yKGxldCB0PTA7dDxlLmxlbmd0aDt0Kyspe2xldCBuPWVbdF0ubm9kZVR5cGU9PT10aGlzLl9kb2N1bWVudC5FTEVNRU5UX05PREU/dGhpcy5fZ2V0Rmlyc3RUYWJiYWJsZUVsZW1lbnQoZVt0XSk6bnVsbDtpZihuKXJldHVybiBufXJldHVybiBudWxsfV9nZXRMYXN0VGFiYmFibGVFbGVtZW50KHQpe2lmKHRoaXMuX2NoZWNrZXIuaXNGb2N1c2FibGUodCkmJnRoaXMuX2NoZWNrZXIuaXNUYWJiYWJsZSh0KSlyZXR1cm4gdDtsZXQgZT10LmNoaWxkcmVufHx0LmNoaWxkTm9kZXM7Zm9yKGxldCB0PWUubGVuZ3RoLTE7dD49MDt0LS0pe2xldCBuPWVbdF0ubm9kZVR5cGU9PT10aGlzLl9kb2N1bWVudC5FTEVNRU5UX05PREU/dGhpcy5fZ2V0TGFzdFRhYmJhYmxlRWxlbWVudChlW3RdKTpudWxsO2lmKG4pcmV0dXJuIG59cmV0dXJuIG51bGx9X2NyZWF0ZUFuY2hvcigpe2NvbnN0IHQ9dGhpcy5fZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7cmV0dXJuIHRoaXMuX3RvZ2dsZUFuY2hvclRhYkluZGV4KHRoaXMuX2VuYWJsZWQsdCksdC5jbGFzc0xpc3QuYWRkKCJjZGstdmlzdWFsbHktaGlkZGVuIiksdC5jbGFzc0xpc3QuYWRkKCJjZGstZm9jdXMtdHJhcC1hbmNob3IiKSx0LnNldEF0dHJpYnV0ZSgiYXJpYS1oaWRkZW4iLCJ0cnVlIiksdH1fdG9nZ2xlQW5jaG9yVGFiSW5kZXgodCxlKXt0P2Uuc2V0QXR0cmlidXRlKCJ0YWJpbmRleCIsIjAiKTplLnJlbW92ZUF0dHJpYnV0ZSgidGFiaW5kZXgiKX10b2dnbGVBbmNob3JzKHQpe3RoaXMuX3N0YXJ0QW5jaG9yJiZ0aGlzLl9lbmRBbmNob3ImJih0aGlzLl90b2dnbGVBbmNob3JUYWJJbmRleCh0LHRoaXMuX3N0YXJ0QW5jaG9yKSx0aGlzLl90b2dnbGVBbmNob3JUYWJJbmRleCh0LHRoaXMuX2VuZEFuY2hvcikpfV9leGVjdXRlT25TdGFibGUodCl7dGhpcy5fbmdab25lLmlzU3RhYmxlP3QoKTp0aGlzLl9uZ1pvbmUub25TdGFibGUucGlwZSh2ZSgxKSkuc3Vic2NyaWJlKHQpfX1jbGFzcyBXSHtjb25zdHJ1Y3Rvcih0LGUsbil7dGhpcy5fY2hlY2tlcj10LHRoaXMuX25nWm9uZT1lLHRoaXMuX2RvY3VtZW50PW59Y3JlYXRlKHQsZT0hMSl7cmV0dXJuIG5ldyBVSCh0LHRoaXMuX2NoZWNrZXIsdGhpcy5fbmdab25lLHRoaXMuX2RvY3VtZW50LGUpfX1XSC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8V0gpKFRyKEJIKSxUcihtQyksVHIoc00pKX0sV0guybVwcm92PVNuKHtmYWN0b3J5OmZ1bmN0aW9uIHQoKXtyZXR1cm4gbmV3IFdIKFRyKEJIKSxUcihtQyksVHIoc00pKX0sdG9rZW46V0gscHJvdmlkZWRJbjoicm9vdCJ9KSxXSC5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOkJIfSx7dHlwZTptQ30se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W3NNXX1dfV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihXSCxbe3R5cGU6VW0sYXJnczpbe3Byb3ZpZGVkSW46InJvb3QifV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6Qkh9LHt0eXBlOm1DfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbc01dfV19XX0pLG51bGwpO2NsYXNzIEdIe2NvbnN0cnVjdG9yKHQsZSxuKXt0aGlzLl9lbGVtZW50UmVmPXQsdGhpcy5fZm9jdXNUcmFwRmFjdG9yeT1lLHRoaXMuX3ByZXZpb3VzbHlGb2N1c2VkRWxlbWVudD1udWxsLHRoaXMuZm9jdXNUcmFwPXRoaXMuX2ZvY3VzVHJhcEZhY3RvcnkuY3JlYXRlKHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwhMCl9Z2V0IGVuYWJsZWQoKXtyZXR1cm4gdGhpcy5mb2N1c1RyYXAuZW5hYmxlZH1zZXQgZW5hYmxlZCh0KXt0aGlzLmZvY3VzVHJhcC5lbmFibGVkPWVIKHQpfWdldCBhdXRvQ2FwdHVyZSgpe3JldHVybiB0aGlzLl9hdXRvQ2FwdHVyZX1zZXQgYXV0b0NhcHR1cmUodCl7dGhpcy5fYXV0b0NhcHR1cmU9ZUgodCl9bmdPbkRlc3Ryb3koKXt0aGlzLmZvY3VzVHJhcC5kZXN0cm95KCksdGhpcy5fcHJldmlvdXNseUZvY3VzZWRFbGVtZW50JiYodGhpcy5fcHJldmlvdXNseUZvY3VzZWRFbGVtZW50LmZvY3VzKCksdGhpcy5fcHJldmlvdXNseUZvY3VzZWRFbGVtZW50PW51bGwpfW5nQWZ0ZXJDb250ZW50SW5pdCgpe3RoaXMuZm9jdXNUcmFwLmF0dGFjaEFuY2hvcnMoKSx0aGlzLmF1dG9DYXB0dXJlJiZ0aGlzLl9jYXB0dXJlRm9jdXMoKX1uZ0RvQ2hlY2soKXt0aGlzLmZvY3VzVHJhcC5oYXNBdHRhY2hlZCgpfHx0aGlzLmZvY3VzVHJhcC5hdHRhY2hBbmNob3JzKCl9bmdPbkNoYW5nZXModCl7Y29uc3QgZT10LmF1dG9DYXB0dXJlO2UmJiFlLmZpcnN0Q2hhbmdlJiZ0aGlzLmF1dG9DYXB0dXJlJiZ0aGlzLmZvY3VzVHJhcC5oYXNBdHRhY2hlZCgpJiZ0aGlzLl9jYXB0dXJlRm9jdXMoKX1fY2FwdHVyZUZvY3VzKCl7dGhpcy5fcHJldmlvdXNseUZvY3VzZWRFbGVtZW50PU1IKCksdGhpcy5mb2N1c1RyYXAuZm9jdXNJbml0aWFsRWxlbWVudFdoZW5SZWFkeSgpfX1HSC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8R0gpKGdmKEtoKSxnZihXSCksZ2Yoc00pKX0sR0guybVkaXI9aG8oe3R5cGU6R0gsc2VsZWN0b3JzOltbIiIsImNka1RyYXBGb2N1cyIsIiJdXSxpbnB1dHM6e2VuYWJsZWQ6WyJjZGtUcmFwRm9jdXMiLCJlbmFibGVkIl0sYXV0b0NhcHR1cmU6WyJjZGtUcmFwRm9jdXNBdXRvQ2FwdHVyZSIsImF1dG9DYXB0dXJlIl19LGV4cG9ydEFzOlsiY2RrVHJhcEZvY3VzIl0sZmVhdHVyZXM6W3FvXX0pLEdILmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6S2h9LHt0eXBlOldIfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbc01dfV19XSxHSC5wcm9wRGVjb3JhdG9ycz17ZW5hYmxlZDpbe3R5cGU6Ul8sYXJnczpbImNka1RyYXBGb2N1cyJdfV0sYXV0b0NhcHR1cmU6W3t0eXBlOlJfLGFyZ3M6WyJjZGtUcmFwRm9jdXNBdXRvQ2FwdHVyZSJdfV19LCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoR0gsW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3RvcjoiW2Nka1RyYXBGb2N1c10iLGV4cG9ydEFzOiJjZGtUcmFwRm9jdXMifV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6S2h9LHt0eXBlOldIfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbc01dfV19XX0pLHtlbmFibGVkOlt7dHlwZTpSXyxhcmdzOlsiY2RrVHJhcEZvY3VzIl19XSxhdXRvQ2FwdHVyZTpbe3R5cGU6Ul8sYXJnczpbImNka1RyYXBGb2N1c0F1dG9DYXB0dXJlIl19XX0pOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3MgWUggZXh0ZW5kcyBVSHtjb25zdHJ1Y3Rvcih0LGUsbixvLGksYSxyKXtzdXBlcih0LGUsbixvLHIuZGVmZXIpLHRoaXMuX2ZvY3VzVHJhcE1hbmFnZXI9aSx0aGlzLl9pbmVydFN0cmF0ZWd5PWEsdGhpcy5fZm9jdXNUcmFwTWFuYWdlci5yZWdpc3Rlcih0aGlzKX1nZXQgZW5hYmxlZCgpe3JldHVybiB0aGlzLl9lbmFibGVkfXNldCBlbmFibGVkKHQpe3RoaXMuX2VuYWJsZWQ9dCx0aGlzLl9lbmFibGVkP3RoaXMuX2ZvY3VzVHJhcE1hbmFnZXIucmVnaXN0ZXIodGhpcyk6dGhpcy5fZm9jdXNUcmFwTWFuYWdlci5kZXJlZ2lzdGVyKHRoaXMpfWRlc3Ryb3koKXt0aGlzLl9mb2N1c1RyYXBNYW5hZ2VyLmRlcmVnaXN0ZXIodGhpcyksc3VwZXIuZGVzdHJveSgpfV9lbmFibGUoKXt0aGlzLl9pbmVydFN0cmF0ZWd5LnByZXZlbnRGb2N1cyh0aGlzKSx0aGlzLnRvZ2dsZUFuY2hvcnMoITApfV9kaXNhYmxlKCl7dGhpcy5faW5lcnRTdHJhdGVneS5hbGxvd0ZvY3VzKHRoaXMpLHRoaXMudG9nZ2xlQW5jaG9ycyghMSl9fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY29uc3QgcUg9bmV3IGVyKCJGT0NVU19UUkFQX0lORVJUX1NUUkFURUdZIik7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2Z1bmN0aW9uIFpIKHQsZSl7aWYoISh0IGluc3RhbmNlb2YgTm9kZSkpcmV0dXJuIG51bGw7bGV0IG49dDtmb3IoO251bGwhPW4mJiEobiBpbnN0YW5jZW9mIEVsZW1lbnQpOyluPW4ucGFyZW50Tm9kZTtyZXR1cm4gbiYmKFhIP24uY2xvc2VzdChlKTooZnVuY3Rpb24gbyh0LGUpe2xldCBuPXQ7Zm9yKDtudWxsIT1uJiYhKG4gaW5zdGFuY2VvZiBFbGVtZW50JiZLSChuLGUpKTspbj1uLnBhcmVudE5vZGU7cmV0dXJuIG58fG51bGx9KShuLGUpKX1jb25zdCBYSD0idW5kZWZpbmVkIiE9dHlwZW9mIEVsZW1lbnQmJiEhRWxlbWVudC5wcm90b3R5cGUuY2xvc2VzdDtmdW5jdGlvbiBLSCh0LGUpe3JldHVybiB0Lm1hdGNoZXM/dC5tYXRjaGVzKGUpOnQubXNNYXRjaGVzU2VsZWN0b3IoZSl9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NsYXNzIEpIe2NvbnN0cnVjdG9yKCl7dGhpcy5fbGlzdGVuZXI9bnVsbH1wcmV2ZW50Rm9jdXModCl7dGhpcy5fbGlzdGVuZXImJnQuX2RvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoImZvY3VzIix0aGlzLl9saXN0ZW5lciwhMCksdGhpcy5fbGlzdGVuZXI9ZT0+dGhpcy5fdHJhcEZvY3VzKHQsZSksdC5fbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgoKT0+e3QuX2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoImZvY3VzIix0aGlzLl9saXN0ZW5lciwhMCl9KSl9YWxsb3dGb2N1cyh0KXt0aGlzLl9saXN0ZW5lciYmKHQuX2RvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoImZvY3VzIix0aGlzLl9saXN0ZW5lciwhMCksdGhpcy5fbGlzdGVuZXI9bnVsbCl9X3RyYXBGb2N1cyh0LGUpe2NvbnN0IG49ZS50YXJnZXQsbz10Ll9lbGVtZW50O28uY29udGFpbnMobil8fG51bGwhPT1aSChuLCJkaXYuY2RrLW92ZXJsYXktcGFuZSIpfHxzZXRUaW1lb3V0KCgoKT0+e3QuZW5hYmxlZCYmIW8uY29udGFpbnModC5fZG9jdW1lbnQuYWN0aXZlRWxlbWVudCkmJnQuZm9jdXNGaXJzdFRhYmJhYmxlRWxlbWVudCgpfSkpfX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY2xhc3MgUUh7Y29uc3RydWN0b3IoKXt0aGlzLl9mb2N1c1RyYXBTdGFjaz1bXX1yZWdpc3Rlcih0KXt0aGlzLl9mb2N1c1RyYXBTdGFjaz10aGlzLl9mb2N1c1RyYXBTdGFjay5maWx0ZXIoKGU9PmUhPT10KSk7bGV0IGU9dGhpcy5fZm9jdXNUcmFwU3RhY2s7ZS5sZW5ndGgmJmVbZS5sZW5ndGgtMV0uX2Rpc2FibGUoKSxlLnB1c2godCksdC5fZW5hYmxlKCl9ZGVyZWdpc3Rlcih0KXt0Ll9kaXNhYmxlKCk7Y29uc3QgZT10aGlzLl9mb2N1c1RyYXBTdGFjayxuPWUuaW5kZXhPZih0KTstMSE9PW4mJihlLnNwbGljZShuLDEpLGUubGVuZ3RoJiZlW2UubGVuZ3RoLTFdLl9lbmFibGUoKSl9fVFILsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxRSCl9LFFILsm1cHJvdj1Tbih7ZmFjdG9yeTpmdW5jdGlvbiB0KCl7cmV0dXJuIG5ldyBRSH0sdG9rZW46UUgscHJvdmlkZWRJbjoicm9vdCJ9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKFFILFt7dHlwZTpVbSxhcmdzOlt7cHJvdmlkZWRJbjoicm9vdCJ9XX1dLChmdW5jdGlvbigpe3JldHVybltdfSksbnVsbCk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjbGFzcyAkSHtjb25zdHJ1Y3Rvcih0LGUsbixvLGkpe3RoaXMuX2NoZWNrZXI9dCx0aGlzLl9uZ1pvbmU9ZSx0aGlzLl9mb2N1c1RyYXBNYW5hZ2VyPW4sdGhpcy5fZG9jdW1lbnQ9byx0aGlzLl9pbmVydFN0cmF0ZWd5PWl8fG5ldyBKSH1jcmVhdGUodCxlPXtkZWZlcjohMX0pe2xldCBuO3JldHVybiBuPSJib29sZWFuIj09dHlwZW9mIGU/e2RlZmVyOmV9OmUsbmV3IFlIKHQsdGhpcy5fY2hlY2tlcix0aGlzLl9uZ1pvbmUsdGhpcy5fZG9jdW1lbnQsdGhpcy5fZm9jdXNUcmFwTWFuYWdlcix0aGlzLl9pbmVydFN0cmF0ZWd5LG4pfX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmZ1bmN0aW9uIHRGKHQpe3JldHVybiAwPT09dC5vZmZzZXRYJiYwPT09dC5vZmZzZXRZfWZ1bmN0aW9uIGVGKHQpe2NvbnN0IGU9dC50b3VjaGVzJiZ0LnRvdWNoZXNbMF18fHQuY2hhbmdlZFRvdWNoZXMmJnQuY2hhbmdlZFRvdWNoZXNbMF07cmV0dXJuISghZXx8LTEhPT1lLmlkZW50aWZpZXJ8fG51bGwhPWUucmFkaXVzWCYmMSE9PWUucmFkaXVzWHx8bnVsbCE9ZS5yYWRpdXNZJiYxIT09ZS5yYWRpdXNZKX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovJEguybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fCRIKShUcihCSCksVHIobUMpLFRyKFFIKSxUcihzTSksVHIocUgsOCkpfSwkSC7JtXByb3Y9U24oe2ZhY3Rvcnk6ZnVuY3Rpb24gdCgpe3JldHVybiBuZXcgJEgoVHIoQkgpLFRyKG1DKSxUcihRSCksVHIoc00pLFRyKHFILDgpKX0sdG9rZW46JEgscHJvdmlkZWRJbjoicm9vdCJ9KSwkSC5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOkJIfSx7dHlwZTptQ30se3R5cGU6UUh9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltzTV19XX0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltxSF19XX1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoJEgsW3t0eXBlOlVtLGFyZ3M6W3twcm92aWRlZEluOiJyb290In1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOkJIfSx7dHlwZTptQ30se3R5cGU6UUh9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltzTV19XX0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltxSF19XX1dfSksbnVsbCk7Y29uc3QgbkY9bmV3IGVyKCJjZGstaW5wdXQtbW9kYWxpdHktZGV0ZWN0b3Itb3B0aW9ucyIpLG9GPXtpZ25vcmVLZXlzOlsxOCwxNywyMjQsOTEsMTZdfSxpRj1iSCh7cGFzc2l2ZTohMCxjYXB0dXJlOiEwfSk7Y2xhc3MgYUZ7Y29uc3RydWN0b3IodCxlLG4sbyl7dGhpcy5fcGxhdGZvcm09dCx0aGlzLl9tb3N0UmVjZW50VGFyZ2V0PW51bGwsdGhpcy5fbW9kYWxpdHk9bmV3IGoobnVsbCksdGhpcy5fbGFzdFRvdWNoTXM9MCx0aGlzLl9vbktleWRvd249dD0+e3ZhciBlLG47KG51bGw9PT0obj1udWxsPT09KGU9dGhpcy5fb3B0aW9ucyl8fHZvaWQgMD09PWU/dm9pZCAwOmUuaWdub3JlS2V5cyl8fHZvaWQgMD09PW4/dm9pZCAwOm4uc29tZSgoZT0+ZT09PXQua2V5Q29kZSkpKXx8KHRoaXMuX21vZGFsaXR5Lm5leHQoImtleWJvYXJkIiksdGhpcy5fbW9zdFJlY2VudFRhcmdldD12SCh0KSl9LHRoaXMuX29uTW91c2Vkb3duPXQ9PntEYXRlLm5vdygpLXRoaXMuX2xhc3RUb3VjaE1zPDY1MHx8KHRoaXMuX21vZGFsaXR5Lm5leHQodEYodCk/ImtleWJvYXJkIjoibW91c2UiKSx0aGlzLl9tb3N0UmVjZW50VGFyZ2V0PXZIKHQpKX0sdGhpcy5fb25Ub3VjaHN0YXJ0PXQ9PntlRih0KT90aGlzLl9tb2RhbGl0eS5uZXh0KCJrZXlib2FyZCIpOih0aGlzLl9sYXN0VG91Y2hNcz1EYXRlLm5vdygpLHRoaXMuX21vZGFsaXR5Lm5leHQoInRvdWNoIiksdGhpcy5fbW9zdFJlY2VudFRhcmdldD12SCh0KSl9LHRoaXMuX29wdGlvbnM9T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LG9GKSxvKSx0aGlzLm1vZGFsaXR5RGV0ZWN0ZWQ9dGhpcy5fbW9kYWxpdHkucGlwZShMZSgxKSksdGhpcy5tb2RhbGl0eUNoYW5nZWQ9dGhpcy5tb2RhbGl0eURldGVjdGVkLnBpcGUod2UoKSksdC5pc0Jyb3dzZXImJmUucnVuT3V0c2lkZUFuZ3VsYXIoKCgpPT57bi5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIix0aGlzLl9vbktleWRvd24saUYpLG4uYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIix0aGlzLl9vbk1vdXNlZG93bixpRiksbi5hZGRFdmVudExpc3RlbmVyKCJ0b3VjaHN0YXJ0Iix0aGlzLl9vblRvdWNoc3RhcnQsaUYpfSkpfWdldCBtb3N0UmVjZW50TW9kYWxpdHkoKXtyZXR1cm4gdGhpcy5fbW9kYWxpdHkudmFsdWV9bmdPbkRlc3Ryb3koKXt0aGlzLl9wbGF0Zm9ybS5pc0Jyb3dzZXImJihkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJrZXlkb3duIix0aGlzLl9vbktleWRvd24saUYpLGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsdGhpcy5fb25Nb3VzZWRvd24saUYpLGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoInRvdWNoc3RhcnQiLHRoaXMuX29uVG91Y2hzdGFydCxpRikpfX1hRi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8YUYpKFRyKGNIKSxUcihtQyksVHIoc00pLFRyKG5GLDgpKX0sYUYuybVwcm92PVNuKHtmYWN0b3J5OmZ1bmN0aW9uIHQoKXtyZXR1cm4gbmV3IGFGKFRyKGNIKSxUcihtQyksVHIoc00pLFRyKG5GLDgpKX0sdG9rZW46YUYscHJvdmlkZWRJbjoicm9vdCJ9KSxhRi5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOmNIfSx7dHlwZTptQ30se3R5cGU6RG9jdW1lbnQsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbc01dfV19LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpbbkZdfV19XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKGFGLFt7dHlwZTpVbSxhcmdzOlt7cHJvdmlkZWRJbjoicm9vdCJ9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpjSH0se3R5cGU6bUN9LHt0eXBlOkRvY3VtZW50LGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W3NNXX1dfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W25GXX1dfV19KSxudWxsKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNvbnN0IHJGPW5ldyBlcigibGl2ZUFubm91bmNlckVsZW1lbnQiLHtwcm92aWRlZEluOiJyb290IixmYWN0b3J5OmZ1bmN0aW9uIHNGKCl7cmV0dXJuIG51bGx9fSk7Y29uc3QgbEY9bmV3IGVyKCJMSVZFX0FOTk9VTkNFUl9ERUZBVUxUX09QVElPTlMiKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY2xhc3MgY0Z7Y29uc3RydWN0b3IodCxlLG4sbyl7dGhpcy5fbmdab25lPWUsdGhpcy5fZGVmYXVsdE9wdGlvbnM9byx0aGlzLl9kb2N1bWVudD1uLHRoaXMuX2xpdmVFbGVtZW50PXR8fHRoaXMuX2NyZWF0ZUxpdmVFbGVtZW50KCl9YW5ub3VuY2UodCwuLi5lKXtjb25zdCBuPXRoaXMuX2RlZmF1bHRPcHRpb25zO2xldCBvLGk7cmV0dXJuIDE9PT1lLmxlbmd0aCYmIm51bWJlciI9PXR5cGVvZiBlWzBdP2k9ZVswXTpbbyxpXT1lLHRoaXMuY2xlYXIoKSxjbGVhclRpbWVvdXQodGhpcy5fcHJldmlvdXNUaW1lb3V0KSxvfHwobz1uJiZuLnBvbGl0ZW5lc3M/bi5wb2xpdGVuZXNzOiJwb2xpdGUiKSxudWxsPT1pJiZuJiYoaT1uLmR1cmF0aW9uKSx0aGlzLl9saXZlRWxlbWVudC5zZXRBdHRyaWJ1dGUoImFyaWEtbGl2ZSIsbyksdGhpcy5fbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgoKT0+bmV3IFByb21pc2UoKGU9PntjbGVhclRpbWVvdXQodGhpcy5fcHJldmlvdXNUaW1lb3V0KSx0aGlzLl9wcmV2aW91c1RpbWVvdXQ9c2V0VGltZW91dCgoKCk9Pnt0aGlzLl9saXZlRWxlbWVudC50ZXh0Q29udGVudD10LGUoKSwibnVtYmVyIj09dHlwZW9mIGkmJih0aGlzLl9wcmV2aW91c1RpbWVvdXQ9c2V0VGltZW91dCgoKCk9PnRoaXMuY2xlYXIoKSksaSkpfSksMTAwKX0pKSkpfWNsZWFyKCl7dGhpcy5fbGl2ZUVsZW1lbnQmJih0aGlzLl9saXZlRWxlbWVudC50ZXh0Q29udGVudD0iIil9bmdPbkRlc3Ryb3koKXtjbGVhclRpbWVvdXQodGhpcy5fcHJldmlvdXNUaW1lb3V0KSx0aGlzLl9saXZlRWxlbWVudCYmdGhpcy5fbGl2ZUVsZW1lbnQucGFyZW50Tm9kZSYmKHRoaXMuX2xpdmVFbGVtZW50LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGhpcy5fbGl2ZUVsZW1lbnQpLHRoaXMuX2xpdmVFbGVtZW50PW51bGwpfV9jcmVhdGVMaXZlRWxlbWVudCgpe2NvbnN0IHQ9ImNkay1saXZlLWFubm91bmNlci1lbGVtZW50IixlPXRoaXMuX2RvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUodCksbj10aGlzLl9kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtmb3IobGV0IHQ9MDt0PGUubGVuZ3RoO3QrKyllW3RdLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZVt0XSk7cmV0dXJuIG4uY2xhc3NMaXN0LmFkZCh0KSxuLmNsYXNzTGlzdC5hZGQoImNkay12aXN1YWxseS1oaWRkZW4iKSxuLnNldEF0dHJpYnV0ZSgiYXJpYS1hdG9taWMiLCJ0cnVlIiksbi5zZXRBdHRyaWJ1dGUoImFyaWEtbGl2ZSIsInBvbGl0ZSIpLHRoaXMuX2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobiksbn19Y0YuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGNGKShUcihyRiw4KSxUcihtQyksVHIoc00pLFRyKGxGLDgpKX0sY0YuybVwcm92PVNuKHtmYWN0b3J5OmZ1bmN0aW9uIHQoKXtyZXR1cm4gbmV3IGNGKFRyKHJGLDgpLFRyKG1DKSxUcihzTSksVHIobEYsOCkpfSx0b2tlbjpjRixwcm92aWRlZEluOiJyb290In0pLGNGLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltyRl19XX0se3R5cGU6bUN9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltzTV19XX0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltsRl19XX1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoY0YsW3t0eXBlOlVtLGFyZ3M6W3twcm92aWRlZEluOiJyb290In1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpbckZdfV19LHt0eXBlOm1DfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbc01dfV19LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpbbEZdfV19XX0pLG51bGwpO2NsYXNzIGRGe2NvbnN0cnVjdG9yKHQsZSxuLG8pe3RoaXMuX2VsZW1lbnRSZWY9dCx0aGlzLl9saXZlQW5ub3VuY2VyPWUsdGhpcy5fY29udGVudE9ic2VydmVyPW4sdGhpcy5fbmdab25lPW8sdGhpcy5fcG9saXRlbmVzcz0icG9saXRlIn1nZXQgcG9saXRlbmVzcygpe3JldHVybiB0aGlzLl9wb2xpdGVuZXNzfXNldCBwb2xpdGVuZXNzKHQpe3RoaXMuX3BvbGl0ZW5lc3M9Im9mZiI9PT10fHwiYXNzZXJ0aXZlIj09PXQ/dDoicG9saXRlIiwib2ZmIj09PXRoaXMuX3BvbGl0ZW5lc3M/dGhpcy5fc3Vic2NyaXB0aW9uJiYodGhpcy5fc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCksdGhpcy5fc3Vic2NyaXB0aW9uPW51bGwpOnRoaXMuX3N1YnNjcmlwdGlvbnx8KHRoaXMuX3N1YnNjcmlwdGlvbj10aGlzLl9uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCgpPT50aGlzLl9jb250ZW50T2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLl9lbGVtZW50UmVmKS5zdWJzY3JpYmUoKCgpPT57Y29uc3QgdD10aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQudGV4dENvbnRlbnQ7dCE9PXRoaXMuX3ByZXZpb3VzQW5ub3VuY2VkVGV4dCYmKHRoaXMuX2xpdmVBbm5vdW5jZXIuYW5ub3VuY2UodCx0aGlzLl9wb2xpdGVuZXNzKSx0aGlzLl9wcmV2aW91c0Fubm91bmNlZFRleHQ9dCl9KSkpKSl9bmdPbkRlc3Ryb3koKXt0aGlzLl9zdWJzY3JpcHRpb24mJnRoaXMuX3N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpfX1kRi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8ZEYpKGdmKEtoKSxnZihjRiksZ2YoT0gpLGdmKG1DKSl9LGRGLsm1ZGlyPWhvKHt0eXBlOmRGLHNlbGVjdG9yczpbWyIiLCJjZGtBcmlhTGl2ZSIsIiJdXSxpbnB1dHM6e3BvbGl0ZW5lc3M6WyJjZGtBcmlhTGl2ZSIsInBvbGl0ZW5lc3MiXX0sZXhwb3J0QXM6WyJjZGtBcmlhTGl2ZSJdfSksZEYuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpLaH0se3R5cGU6Y0Z9LHt0eXBlOk9IfSx7dHlwZTptQ31dLGRGLnByb3BEZWNvcmF0b3JzPXtwb2xpdGVuZXNzOlt7dHlwZTpSXyxhcmdzOlsiY2RrQXJpYUxpdmUiXX1dfSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKGRGLFt7dHlwZTprXyxhcmdzOlt7c2VsZWN0b3I6IltjZGtBcmlhTGl2ZV0iLGV4cG9ydEFzOiJjZGtBcmlhTGl2ZSJ9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpLaH0se3R5cGU6Y0Z9LHt0eXBlOk9IfSx7dHlwZTptQ31dfSkse3BvbGl0ZW5lc3M6W3t0eXBlOlJfLGFyZ3M6WyJjZGtBcmlhTGl2ZSJdfV19KTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNvbnN0IHBGPW5ldyBlcigiY2RrLWZvY3VzLW1vbml0b3ItZGVmYXVsdC1vcHRpb25zIiksbUY9Ykgoe3Bhc3NpdmU6ITAsY2FwdHVyZTohMH0pO2NsYXNzIGZGe2NvbnN0cnVjdG9yKHQsZSxuLG8saSl7dGhpcy5fbmdab25lPXQsdGhpcy5fcGxhdGZvcm09ZSx0aGlzLl9pbnB1dE1vZGFsaXR5RGV0ZWN0b3I9bix0aGlzLl9vcmlnaW49bnVsbCx0aGlzLl93aW5kb3dGb2N1c2VkPSExLHRoaXMuX29yaWdpbkZyb21Ub3VjaEludGVyYWN0aW9uPSExLHRoaXMuX2VsZW1lbnRJbmZvPW5ldyBNYXAsdGhpcy5fbW9uaXRvcmVkRWxlbWVudENvdW50PTAsdGhpcy5fcm9vdE5vZGVGb2N1c0xpc3RlbmVyQ291bnQ9bmV3IE1hcCx0aGlzLl93aW5kb3dGb2N1c0xpc3RlbmVyPSgpPT57dGhpcy5fd2luZG93Rm9jdXNlZD0hMCx0aGlzLl93aW5kb3dGb2N1c1RpbWVvdXRJZD1zZXRUaW1lb3V0KCgoKT0+dGhpcy5fd2luZG93Rm9jdXNlZD0hMSkpfSx0aGlzLl9zdG9wSW5wdXRNb2RhbGl0eURldGVjdG9yPW5ldyBCLHRoaXMuX3Jvb3ROb2RlRm9jdXNBbmRCbHVyTGlzdGVuZXI9dD0+e2NvbnN0IGU9dkgodCksbj0iZm9jdXMiPT09dC50eXBlP3RoaXMuX29uRm9jdXM6dGhpcy5fb25CbHVyO2ZvcihsZXQgbz1lO287bz1vLnBhcmVudEVsZW1lbnQpbi5jYWxsKHRoaXMsdCxvKX0sdGhpcy5fZG9jdW1lbnQ9byx0aGlzLl9kZXRlY3Rpb25Nb2RlPShudWxsPT1pP3ZvaWQgMDppLmRldGVjdGlvbk1vZGUpfHwwfW1vbml0b3IodCxlPSExKXtjb25zdCBuPXJIKHQpO2lmKCF0aGlzLl9wbGF0Zm9ybS5pc0Jyb3dzZXJ8fDEhPT1uLm5vZGVUeXBlKXJldHVybiB6dChudWxsKTtjb25zdCBvPUNIKG4pfHx0aGlzLl9nZXREb2N1bWVudCgpLGk9dGhpcy5fZWxlbWVudEluZm8uZ2V0KG4pO2lmKGkpcmV0dXJuIGUmJihpLmNoZWNrQ2hpbGRyZW49ITApLGkuc3ViamVjdDtjb25zdCBhPXtjaGVja0NoaWxkcmVuOmUsc3ViamVjdDpuZXcgQixyb290Tm9kZTpvfTtyZXR1cm4gdGhpcy5fZWxlbWVudEluZm8uc2V0KG4sYSksdGhpcy5fcmVnaXN0ZXJHbG9iYWxMaXN0ZW5lcnMoYSksYS5zdWJqZWN0fXN0b3BNb25pdG9yaW5nKHQpe2NvbnN0IGU9ckgodCksbj10aGlzLl9lbGVtZW50SW5mby5nZXQoZSk7biYmKG4uc3ViamVjdC5jb21wbGV0ZSgpLHRoaXMuX3NldENsYXNzZXMoZSksdGhpcy5fZWxlbWVudEluZm8uZGVsZXRlKGUpLHRoaXMuX3JlbW92ZUdsb2JhbExpc3RlbmVycyhuKSl9Zm9jdXNWaWEodCxlLG4pe2NvbnN0IG89ckgodCk7bz09PXRoaXMuX2dldERvY3VtZW50KCkuYWN0aXZlRWxlbWVudD90aGlzLl9nZXRDbG9zZXN0RWxlbWVudHNJbmZvKG8pLmZvckVhY2goKChbdCxuXSk9PnRoaXMuX29yaWdpbkNoYW5nZWQodCxlLG4pKSk6KHRoaXMuX3NldE9yaWdpbihlKSwiZnVuY3Rpb24iPT10eXBlb2Ygby5mb2N1cyYmby5mb2N1cyhuKSl9bmdPbkRlc3Ryb3koKXt0aGlzLl9lbGVtZW50SW5mby5mb3JFYWNoKCgodCxlKT0+dGhpcy5zdG9wTW9uaXRvcmluZyhlKSkpfV9nZXREb2N1bWVudCgpe3JldHVybiB0aGlzLl9kb2N1bWVudHx8ZG9jdW1lbnR9X2dldFdpbmRvdygpe3JldHVybiB0aGlzLl9nZXREb2N1bWVudCgpLmRlZmF1bHRWaWV3fHx3aW5kb3d9X3RvZ2dsZUNsYXNzKHQsZSxuKXtuP3QuY2xhc3NMaXN0LmFkZChlKTp0LmNsYXNzTGlzdC5yZW1vdmUoZSl9X2dldEZvY3VzT3JpZ2luKHQpe3JldHVybiB0aGlzLl9vcmlnaW4/dGhpcy5fb3JpZ2luRnJvbVRvdWNoSW50ZXJhY3Rpb24/dGhpcy5fc2hvdWxkQmVBdHRyaWJ1dGVkVG9Ub3VjaCh0KT8idG91Y2giOiJwcm9ncmFtIjp0aGlzLl9vcmlnaW46dGhpcy5fd2luZG93Rm9jdXNlZCYmdGhpcy5fbGFzdEZvY3VzT3JpZ2luP3RoaXMuX2xhc3RGb2N1c09yaWdpbjoicHJvZ3JhbSJ9X3Nob3VsZEJlQXR0cmlidXRlZFRvVG91Y2godCl7cmV0dXJuIDE9PT10aGlzLl9kZXRlY3Rpb25Nb2RlfHwhIShudWxsPT10P3ZvaWQgMDp0LmNvbnRhaW5zKHRoaXMuX2lucHV0TW9kYWxpdHlEZXRlY3Rvci5fbW9zdFJlY2VudFRhcmdldCkpfV9zZXRDbGFzc2VzKHQsZSl7dGhpcy5fdG9nZ2xlQ2xhc3ModCwiY2RrLWZvY3VzZWQiLCEhZSksdGhpcy5fdG9nZ2xlQ2xhc3ModCwiY2RrLXRvdWNoLWZvY3VzZWQiLCJ0b3VjaCI9PT1lKSx0aGlzLl90b2dnbGVDbGFzcyh0LCJjZGsta2V5Ym9hcmQtZm9jdXNlZCIsImtleWJvYXJkIj09PWUpLHRoaXMuX3RvZ2dsZUNsYXNzKHQsImNkay1tb3VzZS1mb2N1c2VkIiwibW91c2UiPT09ZSksdGhpcy5fdG9nZ2xlQ2xhc3ModCwiY2RrLXByb2dyYW0tZm9jdXNlZCIsInByb2dyYW0iPT09ZSl9X3NldE9yaWdpbih0LGU9ITEpe3RoaXMuX25nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKCk9PntpZih0aGlzLl9vcmlnaW49dCx0aGlzLl9vcmlnaW5Gcm9tVG91Y2hJbnRlcmFjdGlvbj0idG91Y2giPT09dCYmZSwwPT09dGhpcy5fZGV0ZWN0aW9uTW9kZSl7Y2xlYXJUaW1lb3V0KHRoaXMuX29yaWdpblRpbWVvdXRJZCk7dGhpcy5fb3JpZ2luVGltZW91dElkPXNldFRpbWVvdXQoKCgpPT50aGlzLl9vcmlnaW49bnVsbCksdGhpcy5fb3JpZ2luRnJvbVRvdWNoSW50ZXJhY3Rpb24/NjUwOjEpfX0pKX1fb25Gb2N1cyh0LGUpe2NvbnN0IG49dGhpcy5fZWxlbWVudEluZm8uZ2V0KGUpLG89dkgodCk7biYmKG4uY2hlY2tDaGlsZHJlbnx8ZT09PW8pJiZ0aGlzLl9vcmlnaW5DaGFuZ2VkKGUsdGhpcy5fZ2V0Rm9jdXNPcmlnaW4obyksbil9X29uQmx1cih0LGUpe2NvbnN0IG49dGhpcy5fZWxlbWVudEluZm8uZ2V0KGUpOyFufHxuLmNoZWNrQ2hpbGRyZW4mJnQucmVsYXRlZFRhcmdldCBpbnN0YW5jZW9mIE5vZGUmJmUuY29udGFpbnModC5yZWxhdGVkVGFyZ2V0KXx8KHRoaXMuX3NldENsYXNzZXMoZSksdGhpcy5fZW1pdE9yaWdpbihuLnN1YmplY3QsbnVsbCkpfV9lbWl0T3JpZ2luKHQsZSl7dGhpcy5fbmdab25lLnJ1bigoKCk9PnQubmV4dChlKSkpfV9yZWdpc3Rlckdsb2JhbExpc3RlbmVycyh0KXtpZighdGhpcy5fcGxhdGZvcm0uaXNCcm93c2VyKXJldHVybjtjb25zdCBlPXQucm9vdE5vZGUsbj10aGlzLl9yb290Tm9kZUZvY3VzTGlzdGVuZXJDb3VudC5nZXQoZSl8fDA7bnx8dGhpcy5fbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgoKT0+e2UuYWRkRXZlbnRMaXN0ZW5lcigiZm9jdXMiLHRoaXMuX3Jvb3ROb2RlRm9jdXNBbmRCbHVyTGlzdGVuZXIsbUYpLGUuYWRkRXZlbnRMaXN0ZW5lcigiYmx1ciIsdGhpcy5fcm9vdE5vZGVGb2N1c0FuZEJsdXJMaXN0ZW5lcixtRil9KSksdGhpcy5fcm9vdE5vZGVGb2N1c0xpc3RlbmVyQ291bnQuc2V0KGUsbisxKSwxPT0rK3RoaXMuX21vbml0b3JlZEVsZW1lbnRDb3VudCYmKHRoaXMuX25nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKCk9Pnt0aGlzLl9nZXRXaW5kb3coKS5hZGRFdmVudExpc3RlbmVyKCJmb2N1cyIsdGhpcy5fd2luZG93Rm9jdXNMaXN0ZW5lcil9KSksdGhpcy5faW5wdXRNb2RhbGl0eURldGVjdG9yLm1vZGFsaXR5RGV0ZWN0ZWQucGlwZShqZSh0aGlzLl9zdG9wSW5wdXRNb2RhbGl0eURldGVjdG9yKSkuc3Vic2NyaWJlKCh0PT57dGhpcy5fc2V0T3JpZ2luKHQsITApfSkpKX1fcmVtb3ZlR2xvYmFsTGlzdGVuZXJzKHQpe2NvbnN0IGU9dC5yb290Tm9kZTtpZih0aGlzLl9yb290Tm9kZUZvY3VzTGlzdGVuZXJDb3VudC5oYXMoZSkpe2NvbnN0IHQ9dGhpcy5fcm9vdE5vZGVGb2N1c0xpc3RlbmVyQ291bnQuZ2V0KGUpO3Q+MT90aGlzLl9yb290Tm9kZUZvY3VzTGlzdGVuZXJDb3VudC5zZXQoZSx0LTEpOihlLnJlbW92ZUV2ZW50TGlzdGVuZXIoImZvY3VzIix0aGlzLl9yb290Tm9kZUZvY3VzQW5kQmx1ckxpc3RlbmVyLG1GKSxlLnJlbW92ZUV2ZW50TGlzdGVuZXIoImJsdXIiLHRoaXMuX3Jvb3ROb2RlRm9jdXNBbmRCbHVyTGlzdGVuZXIsbUYpLHRoaXMuX3Jvb3ROb2RlRm9jdXNMaXN0ZW5lckNvdW50LmRlbGV0ZShlKSl9aWYoIS0tdGhpcy5fbW9uaXRvcmVkRWxlbWVudENvdW50KXt0aGlzLl9nZXRXaW5kb3coKS5yZW1vdmVFdmVudExpc3RlbmVyKCJmb2N1cyIsdGhpcy5fd2luZG93Rm9jdXNMaXN0ZW5lciksdGhpcy5fc3RvcElucHV0TW9kYWxpdHlEZXRlY3Rvci5uZXh0KCksY2xlYXJUaW1lb3V0KHRoaXMuX3dpbmRvd0ZvY3VzVGltZW91dElkKSxjbGVhclRpbWVvdXQodGhpcy5fb3JpZ2luVGltZW91dElkKX19X29yaWdpbkNoYW5nZWQodCxlLG4pe3RoaXMuX3NldENsYXNzZXModCxlKSx0aGlzLl9lbWl0T3JpZ2luKG4uc3ViamVjdCxlKSx0aGlzLl9sYXN0Rm9jdXNPcmlnaW49ZX1fZ2V0Q2xvc2VzdEVsZW1lbnRzSW5mbyh0KXtjb25zdCBlPVtdO3JldHVybiB0aGlzLl9lbGVtZW50SW5mby5mb3JFYWNoKCgobixvKT0+eyhvPT09dHx8bi5jaGVja0NoaWxkcmVuJiZvLmNvbnRhaW5zKHQpKSYmZS5wdXNoKFtvLG5dKX0pKSxlfX1mRi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8ZkYpKFRyKG1DKSxUcihjSCksVHIoYUYpLFRyKHNNLDgpLFRyKHBGLDgpKX0sZkYuybVwcm92PVNuKHtmYWN0b3J5OmZ1bmN0aW9uIHQoKXtyZXR1cm4gbmV3IGZGKFRyKG1DKSxUcihjSCksVHIoYUYpLFRyKHNNLDgpLFRyKHBGLDgpKX0sdG9rZW46ZkYscHJvdmlkZWRJbjoicm9vdCJ9KSxmRi5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOm1DfSx7dHlwZTpjSH0se3R5cGU6YUZ9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpbc01dfV19LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpbcEZdfV19XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKGZGLFt7dHlwZTpVbSxhcmdzOlt7cHJvdmlkZWRJbjoicm9vdCJ9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTptQ30se3R5cGU6Y0h9LHt0eXBlOmFGfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W3NNXX1dfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W3BGXX1dfV19KSxudWxsKTtjbGFzcyB1Rntjb25zdHJ1Y3Rvcih0LGUpe3RoaXMuX2VsZW1lbnRSZWY9dCx0aGlzLl9mb2N1c01vbml0b3I9ZSx0aGlzLmNka0ZvY3VzQ2hhbmdlPW5ldyBTeX1uZ0FmdGVyVmlld0luaXQoKXtjb25zdCB0PXRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudDt0aGlzLl9tb25pdG9yU3Vic2NyaXB0aW9uPXRoaXMuX2ZvY3VzTW9uaXRvci5tb25pdG9yKHQsMT09PXQubm9kZVR5cGUmJnQuaGFzQXR0cmlidXRlKCJjZGtNb25pdG9yU3VidHJlZUZvY3VzIikpLnN1YnNjcmliZSgodD0+dGhpcy5jZGtGb2N1c0NoYW5nZS5lbWl0KHQpKSl9bmdPbkRlc3Ryb3koKXt0aGlzLl9mb2N1c01vbml0b3Iuc3RvcE1vbml0b3JpbmcodGhpcy5fZWxlbWVudFJlZiksdGhpcy5fbW9uaXRvclN1YnNjcmlwdGlvbiYmdGhpcy5fbW9uaXRvclN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpfX11Ri7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8dUYpKGdmKEtoKSxnZihmRikpfSx1Ri7JtWRpcj1obyh7dHlwZTp1RixzZWxlY3RvcnM6W1siIiwiY2RrTW9uaXRvckVsZW1lbnRGb2N1cyIsIiJdLFsiIiwiY2RrTW9uaXRvclN1YnRyZWVGb2N1cyIsIiJdXSxvdXRwdXRzOntjZGtGb2N1c0NoYW5nZToiY2RrRm9jdXNDaGFuZ2UifX0pLHVGLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6S2h9LHt0eXBlOmZGfV0sdUYucHJvcERlY29yYXRvcnM9e2Nka0ZvY3VzQ2hhbmdlOlt7dHlwZTpFX31dfSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKHVGLFt7dHlwZTprXyxhcmdzOlt7c2VsZWN0b3I6IltjZGtNb25pdG9yRWxlbWVudEZvY3VzXSwgW2Nka01vbml0b3JTdWJ0cmVlRm9jdXNdIn1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOktofSx7dHlwZTpmRn1dfSkse2Nka0ZvY3VzQ2hhbmdlOlt7dHlwZTpFX31dfSk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjb25zdCBnRj0iY2RrLWhpZ2gtY29udHJhc3QtYmxhY2stb24td2hpdGUiLGhGPSJjZGstaGlnaC1jb250cmFzdC13aGl0ZS1vbi1ibGFjayIsYkY9ImNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSI7Y2xhc3MgeUZ7Y29uc3RydWN0b3IodCxlKXt0aGlzLl9wbGF0Zm9ybT10LHRoaXMuX2RvY3VtZW50PWV9Z2V0SGlnaENvbnRyYXN0TW9kZSgpe2lmKCF0aGlzLl9wbGF0Zm9ybS5pc0Jyb3dzZXIpcmV0dXJuIDA7Y29uc3QgdD10aGlzLl9kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTt0LnN0eWxlLmJhY2tncm91bmRDb2xvcj0icmdiKDEsMiwzKSIsdC5zdHlsZS5wb3NpdGlvbj0iYWJzb2x1dGUiLHRoaXMuX2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodCk7Y29uc3QgZT10aGlzLl9kb2N1bWVudC5kZWZhdWx0Vmlld3x8d2luZG93LG49ZSYmZS5nZXRDb21wdXRlZFN0eWxlP2UuZ2V0Q29tcHV0ZWRTdHlsZSh0KTpudWxsLG89KG4mJm4uYmFja2dyb3VuZENvbG9yfHwiIikucmVwbGFjZSgvIC9nLCIiKTtzd2l0Y2godGhpcy5fZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZCh0KSxvKXtjYXNlInJnYigwLDAsMCkiOnJldHVybiAyO2Nhc2UicmdiKDI1NSwyNTUsMjU1KSI6cmV0dXJuIDF9cmV0dXJuIDB9X2FwcGx5Qm9keUhpZ2hDb250cmFzdE1vZGVDc3NDbGFzc2VzKCl7aWYoIXRoaXMuX2hhc0NoZWNrZWRIaWdoQ29udHJhc3RNb2RlJiZ0aGlzLl9wbGF0Zm9ybS5pc0Jyb3dzZXImJnRoaXMuX2RvY3VtZW50LmJvZHkpe2NvbnN0IHQ9dGhpcy5fZG9jdW1lbnQuYm9keS5jbGFzc0xpc3Q7dC5yZW1vdmUoYkYpLHQucmVtb3ZlKGdGKSx0LnJlbW92ZShoRiksdGhpcy5faGFzQ2hlY2tlZEhpZ2hDb250cmFzdE1vZGU9ITA7Y29uc3QgZT10aGlzLmdldEhpZ2hDb250cmFzdE1vZGUoKTsxPT09ZT8odC5hZGQoYkYpLHQuYWRkKGdGKSk6Mj09PWUmJih0LmFkZChiRiksdC5hZGQoaEYpKX19fXlGLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHx5RikoVHIoY0gpLFRyKHNNKSl9LHlGLsm1cHJvdj1Tbih7ZmFjdG9yeTpmdW5jdGlvbiB0KCl7cmV0dXJuIG5ldyB5RihUcihjSCksVHIoc00pKX0sdG9rZW46eUYscHJvdmlkZWRJbjoicm9vdCJ9KSx5Ri5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOmNIfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbc01dfV19XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKHlGLFt7dHlwZTpVbSxhcmdzOlt7cHJvdmlkZWRJbjoicm9vdCJ9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpjSH0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W3NNXX1dfV19KSxudWxsKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNsYXNzIF9Ge2NvbnN0cnVjdG9yKHQpe3QuX2FwcGx5Qm9keUhpZ2hDb250cmFzdE1vZGVDc3NDbGFzc2VzKCl9fV9GLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxfRikoVHIoeUYpKX0sX0YuybVtb2Q9Zm8oe3R5cGU6X0Z9KSxfRi7JtWluaj1Ebih7aW1wb3J0czpbW2RILHdIXV19KSxfRi5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOnlGfV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihfRixbe3R5cGU6TF8sYXJnczpbe2ltcG9ydHM6W2RILHdIXSxkZWNsYXJhdGlvbnM6W2RGLEdILHVGXSxleHBvcnRzOltkRixHSCx1Rl19XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTp5Rn1dfSksbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZ1byhfRix7ZGVjbGFyYXRpb25zOmZ1bmN0aW9uKCl7cmV0dXJuW2RGLEdILHVGXX0saW1wb3J0czpmdW5jdGlvbigpe3JldHVybltkSCx3SF19LGV4cG9ydHM6ZnVuY3Rpb24oKXtyZXR1cm5bZEYsR0gsdUZdfX0pO2NvbnN0IENGPW5ldyBlcigiY2RrLWRpci1kb2MiLHtwcm92aWRlZEluOiJyb290IixmYWN0b3J5OmZ1bmN0aW9uIE1GKCl7cmV0dXJuIHpyKHNNKX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovfSk7Y2xhc3MgdkZ7Y29uc3RydWN0b3IodCl7aWYodGhpcy52YWx1ZT0ibHRyIix0aGlzLmNoYW5nZT1uZXcgU3ksdCl7Y29uc3QgZT10LmRvY3VtZW50RWxlbWVudD90LmRvY3VtZW50RWxlbWVudC5kaXI6bnVsbCxuPSh0LmJvZHk/dC5ib2R5LmRpcjpudWxsKXx8ZTt0aGlzLnZhbHVlPSJsdHIiPT09bnx8InJ0bCI9PT1uP246Imx0ciJ9fW5nT25EZXN0cm95KCl7dGhpcy5jaGFuZ2UuY29tcGxldGUoKX19dkYuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHZGKShUcihDRiw4KSl9LHZGLsm1cHJvdj1Tbih7ZmFjdG9yeTpmdW5jdGlvbiB0KCl7cmV0dXJuIG5ldyB2RihUcihDRiw4KSl9LHRva2VuOnZGLHByb3ZpZGVkSW46InJvb3QifSksdkYuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W0NGXX1dfV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYih2Rixbe3R5cGU6VW0sYXJnczpbe3Byb3ZpZGVkSW46InJvb3QifV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltDRl19XX1dfSksbnVsbCk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjbGFzcyB4Rntjb25zdHJ1Y3Rvcigpe3RoaXMuX2Rpcj0ibHRyIix0aGlzLl9pc0luaXRpYWxpemVkPSExLHRoaXMuY2hhbmdlPW5ldyBTeX1nZXQgZGlyKCl7cmV0dXJuIHRoaXMuX2Rpcn1zZXQgZGlyKHQpe2NvbnN0IGU9dGhpcy5fZGlyLG49dD90LnRvTG93ZXJDYXNlKCk6dDt0aGlzLl9yYXdEaXI9dCx0aGlzLl9kaXI9Imx0ciI9PT1ufHwicnRsIj09PW4/bjoibHRyIixlIT09dGhpcy5fZGlyJiZ0aGlzLl9pc0luaXRpYWxpemVkJiZ0aGlzLmNoYW5nZS5lbWl0KHRoaXMuX2Rpcil9Z2V0IHZhbHVlKCl7cmV0dXJuIHRoaXMuZGlyfW5nQWZ0ZXJDb250ZW50SW5pdCgpe3RoaXMuX2lzSW5pdGlhbGl6ZWQ9ITB9bmdPbkRlc3Ryb3koKXt0aGlzLmNoYW5nZS5jb21wbGV0ZSgpfX14Ri7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8eEYpfSx4Ri7JtWRpcj1obyh7dHlwZTp4RixzZWxlY3RvcnM6W1siIiwiZGlyIiwiIl1dLGhvc3RWYXJzOjEsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQoZSxuKXsyJmUmJnltKCJkaXIiLG4uX3Jhd0Rpcil9LGlucHV0czp7ZGlyOiJkaXIifSxvdXRwdXRzOntjaGFuZ2U6ImRpckNoYW5nZSJ9LGV4cG9ydEFzOlsiZGlyIl0sZmVhdHVyZXM6W2poKFt7cHJvdmlkZTp2Rix1c2VFeGlzdGluZzp4Rn1dKV19KSx4Ri5wcm9wRGVjb3JhdG9ycz17Y2hhbmdlOlt7dHlwZTpFXyxhcmdzOlsiZGlyQ2hhbmdlIl19XSxkaXI6W3t0eXBlOlJffV19LCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoeEYsW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3RvcjoiW2Rpcl0iLHByb3ZpZGVyczpbe3Byb3ZpZGU6dkYsdXNlRXhpc3Rpbmc6eEZ9XSxob3N0OnsiW2F0dHIuZGlyXSI6Il9yYXdEaXIifSxleHBvcnRBczoiZGlyIn1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW119KSx7Y2hhbmdlOlt7dHlwZTpFXyxhcmdzOlsiZGlyQ2hhbmdlIl19XSxkaXI6W3t0eXBlOlJffV19KTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNsYXNzIE9Ge31PRi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8T0YpfSxPRi7JtW1vZD1mbyh7dHlwZTpPRn0pLE9GLsm1aW5qPURuKHt9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKE9GLFt7dHlwZTpMXyxhcmdzOlt7ZXhwb3J0czpbeEZdLGRlY2xhcmF0aW9uczpbeEZdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmdW8oT0Yse2RlY2xhcmF0aW9uczpbeEZdLGV4cG9ydHM6W3hGXX0pOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY29uc3QgUEY9bmV3IG9iKCIxMi4yLjEiKSx3Rj1bIioiLFtbIm1hdC1vcHRpb24iXSxbIm5nLWNvbnRhaW5lciJdXV07ZnVuY3Rpb24ga0YodCxlKXtpZigxJnQmJnZmKDAsIm1hdC1wc2V1ZG8tY2hlY2tib3giLDQpLDImdCl7Y29uc3QgdD16ZigpO2JmKCJzdGF0ZSIsdC5zZWxlY3RlZD8iY2hlY2tlZCI6InVuY2hlY2tlZCIpKCJkaXNhYmxlZCIsdC5kaXNhYmxlZCl9fWZ1bmN0aW9uIFNGKHQsZSl7aWYoMSZ0JiYoQ2YoMCwic3BhbiIsNSksUHUoMSksTWYoKSksMiZ0KXtjb25zdCB0PXpmKCk7RGMoMSksa3UoIigiLHQuZ3JvdXAubGFiZWwsIikiKX19bmV3IG9iKCIxMi4yLjMiKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNsYXNzIERGe31ERi5TVEFOREFSRF9DVVJWRT0iY3ViaWMtYmV6aWVyKDAuNCwwLjAsMC4yLDEpIixERi5ERUNFTEVSQVRJT05fQ1VSVkU9ImN1YmljLWJlemllcigwLjAsMC4wLDAuMiwxKSIsREYuQUNDRUxFUkFUSU9OX0NVUlZFPSJjdWJpYy1iZXppZXIoMC40LDAuMCwxLDEpIixERi5TSEFSUF9DVVJWRT0iY3ViaWMtYmV6aWVyKDAuNCwwLjAsMC42LDEpIjtjbGFzcyBSRnt9UkYuQ09NUExFWD0iMzc1bXMiLFJGLkVOVEVSSU5HPSIyMjVtcyIsUkYuRVhJVElORz0iMTk1bXMiOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY29uc3QgRUY9bmV3IG9iKCIxMi4yLjMiKTtjb25zdCBBRj1uZXcgZXIoIm1hdC1zYW5pdHktY2hlY2tzIix7cHJvdmlkZWRJbjoicm9vdCIsZmFjdG9yeTpmdW5jdGlvbiBURigpe3JldHVybiEwfX0pO2NsYXNzIE5Ge2NvbnN0cnVjdG9yKHQsZSxuKXt0aGlzLl9oYXNEb25lR2xvYmFsQ2hlY2tzPSExLHRoaXMuX2RvY3VtZW50PW4sdC5fYXBwbHlCb2R5SGlnaENvbnRyYXN0TW9kZUNzc0NsYXNzZXMoKSx0aGlzLl9zYW5pdHlDaGVja3M9ZSx0aGlzLl9oYXNEb25lR2xvYmFsQ2hlY2tzfHwodGhpcy5fY2hlY2tEb2N0eXBlSXNEZWZpbmVkKCksdGhpcy5fY2hlY2tUaGVtZUlzUHJlc2VudCgpLHRoaXMuX2NoZWNrQ2RrVmVyc2lvbk1hdGNoKCksdGhpcy5faGFzRG9uZUdsb2JhbENoZWNrcz0hMCl9X2dldFdpbmRvdygpe2NvbnN0IHQ9dGhpcy5fZG9jdW1lbnQuZGVmYXVsdFZpZXd8fHdpbmRvdztyZXR1cm4ib2JqZWN0Ij09dHlwZW9mIHQmJnQ/dDpudWxsfV9jaGVja0lzRW5hYmxlZCh0KXtyZXR1cm4hKCFQQygpfHx0aGlzLl9pc1Rlc3RFbnYoKSkmJigiYm9vbGVhbiI9PXR5cGVvZiB0aGlzLl9zYW5pdHlDaGVja3M/dGhpcy5fc2FuaXR5Q2hlY2tzOiEhdGhpcy5fc2FuaXR5Q2hlY2tzW3RdKX1faXNUZXN0RW52KCl7Y29uc3QgdD10aGlzLl9nZXRXaW5kb3coKTtyZXR1cm4gdCYmKHQuX19rYXJtYV9ffHx0Lmphc21pbmUpfV9jaGVja0RvY3R5cGVJc0RlZmluZWQoKXt0aGlzLl9jaGVja0lzRW5hYmxlZCgiZG9jdHlwZSIpJiYhdGhpcy5fZG9jdW1lbnQuZG9jdHlwZSYmY29uc29sZS53YXJuKCJDdXJyZW50IGRvY3VtZW50IGRvZXMgbm90IGhhdmUgYSBkb2N0eXBlLiBUaGlzIG1heSBjYXVzZSBzb21lIEFuZ3VsYXIgTWF0ZXJpYWwgY29tcG9uZW50cyBub3QgdG8gYmVoYXZlIGFzIGV4cGVjdGVkLiIpfV9jaGVja1RoZW1lSXNQcmVzZW50KCl7aWYoIXRoaXMuX2NoZWNrSXNFbmFibGVkKCJ0aGVtZSIpfHwhdGhpcy5fZG9jdW1lbnQuYm9keXx8ImZ1bmN0aW9uIiE9dHlwZW9mIGdldENvbXB1dGVkU3R5bGUpcmV0dXJuO2NvbnN0IHQ9dGhpcy5fZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7dC5jbGFzc0xpc3QuYWRkKCJtYXQtdGhlbWUtbG9hZGVkLW1hcmtlciIpLHRoaXMuX2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodCk7Y29uc3QgZT1nZXRDb21wdXRlZFN0eWxlKHQpO2UmJiJub25lIiE9PWUuZGlzcGxheSYmY29uc29sZS53YXJuKCJDb3VsZCBub3QgZmluZCBBbmd1bGFyIE1hdGVyaWFsIGNvcmUgdGhlbWUuIE1vc3QgTWF0ZXJpYWwgY29tcG9uZW50cyBtYXkgbm90IHdvcmsgYXMgZXhwZWN0ZWQuIEZvciBtb3JlIGluZm8gcmVmZXIgdG8gdGhlIHRoZW1pbmcgZ3VpZGU6IGh0dHBzOi8vbWF0ZXJpYWwuYW5ndWxhci5pby9ndWlkZS90aGVtaW5nIiksdGhpcy5fZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZCh0KX1fY2hlY2tDZGtWZXJzaW9uTWF0Y2goKXt0aGlzLl9jaGVja0lzRW5hYmxlZCgidmVyc2lvbiIpJiZFRi5mdWxsIT09UEYuZnVsbCYmY29uc29sZS53YXJuKCJUaGUgQW5ndWxhciBNYXRlcmlhbCB2ZXJzaW9uICgiK0VGLmZ1bGwrIikgZG9lcyBub3QgbWF0Y2ggdGhlIEFuZ3VsYXIgQ0RLIHZlcnNpb24gKCIrUEYuZnVsbCsiKS5cblBsZWFzZSBlbnN1cmUgdGhlIHZlcnNpb25zIG9mIHRoZXNlIHR3byBwYWNrYWdlcyBleGFjdGx5IG1hdGNoLiIpfX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmZ1bmN0aW9uIHpGKHQpe3JldHVybiBjbGFzcyBleHRlbmRzIHR7Y29uc3RydWN0b3IoLi4udCl7c3VwZXIoLi4udCksdGhpcy5fZGlzYWJsZWQ9ITF9Z2V0IGRpc2FibGVkKCl7cmV0dXJuIHRoaXMuX2Rpc2FibGVkfXNldCBkaXNhYmxlZCh0KXt0aGlzLl9kaXNhYmxlZD1lSCh0KX19fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9mdW5jdGlvbiBJRih0LGUpe3JldHVybiBjbGFzcyBleHRlbmRzIHR7Y29uc3RydWN0b3IoLi4udCl7c3VwZXIoLi4udCksdGhpcy5kZWZhdWx0Q29sb3I9ZSx0aGlzLmNvbG9yPWV9Z2V0IGNvbG9yKCl7cmV0dXJuIHRoaXMuX2NvbG9yfXNldCBjb2xvcih0KXtjb25zdCBlPXR8fHRoaXMuZGVmYXVsdENvbG9yO2UhPT10aGlzLl9jb2xvciYmKHRoaXMuX2NvbG9yJiZ0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShgbWF0LSR7dGhpcy5fY29sb3J9YCksZSYmdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5hZGQoYG1hdC0ke2V9YCksdGhpcy5fY29sb3I9ZSl9fX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovZnVuY3Rpb24gSEYodCl7cmV0dXJuIGNsYXNzIGV4dGVuZHMgdHtjb25zdHJ1Y3RvciguLi50KXtzdXBlciguLi50KSx0aGlzLl9kaXNhYmxlUmlwcGxlPSExfWdldCBkaXNhYmxlUmlwcGxlKCl7cmV0dXJuIHRoaXMuX2Rpc2FibGVSaXBwbGV9c2V0IGRpc2FibGVSaXBwbGUodCl7dGhpcy5fZGlzYWJsZVJpcHBsZT1lSCh0KX19fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9mdW5jdGlvbiBGRih0LGU9MCl7cmV0dXJuIGNsYXNzIGV4dGVuZHMgdHtjb25zdHJ1Y3RvciguLi50KXtzdXBlciguLi50KSx0aGlzLl90YWJJbmRleD1lLHRoaXMuZGVmYXVsdFRhYkluZGV4PWV9Z2V0IHRhYkluZGV4KCl7cmV0dXJuIHRoaXMuZGlzYWJsZWQ/LTE6dGhpcy5fdGFiSW5kZXh9c2V0IHRhYkluZGV4KHQpe3RoaXMuX3RhYkluZGV4PW51bGwhPXQ/bkgodCk6dGhpcy5kZWZhdWx0VGFiSW5kZXh9fX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovZnVuY3Rpb24gTEYodCl7cmV0dXJuIGNsYXNzIGV4dGVuZHMgdHtjb25zdHJ1Y3RvciguLi50KXtzdXBlciguLi50KSx0aGlzLnN0YXRlQ2hhbmdlcz1uZXcgQix0aGlzLmVycm9yU3RhdGU9ITF9dXBkYXRlRXJyb3JTdGF0ZSgpe2NvbnN0IHQ9dGhpcy5lcnJvclN0YXRlLGU9KHRoaXMuZXJyb3JTdGF0ZU1hdGNoZXJ8fHRoaXMuX2RlZmF1bHRFcnJvclN0YXRlTWF0Y2hlcikuaXNFcnJvclN0YXRlKHRoaXMubmdDb250cm9sP3RoaXMubmdDb250cm9sLmNvbnRyb2w6bnVsbCx0aGlzLl9wYXJlbnRGb3JtR3JvdXB8fHRoaXMuX3BhcmVudEZvcm0pO2UhPT10JiYodGhpcy5lcnJvclN0YXRlPWUsdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpKX19fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9mdW5jdGlvbiBCRih0KXtyZXR1cm4gY2xhc3MgZXh0ZW5kcyB0e2NvbnN0cnVjdG9yKC4uLnQpe3N1cGVyKC4uLnQpLHRoaXMuX2lzSW5pdGlhbGl6ZWQ9ITEsdGhpcy5fcGVuZGluZ1N1YnNjcmliZXJzPVtdLHRoaXMuaW5pdGlhbGl6ZWQ9bmV3IFQoKHQ9Pnt0aGlzLl9pc0luaXRpYWxpemVkP3RoaXMuX25vdGlmeVN1YnNjcmliZXIodCk6dGhpcy5fcGVuZGluZ1N1YnNjcmliZXJzLnB1c2godCl9KSl9X21hcmtJbml0aWFsaXplZCgpe2lmKHRoaXMuX2lzSW5pdGlhbGl6ZWQmJigidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSl0aHJvdyBFcnJvcigiVGhpcyBkaXJlY3RpdmUgaGFzIGFscmVhZHkgYmVlbiBtYXJrZWQgYXMgaW5pdGlhbGl6ZWQgYW5kIHNob3VsZCBub3QgYmUgY2FsbGVkIHR3aWNlLiIpO3RoaXMuX2lzSW5pdGlhbGl6ZWQ9ITAsdGhpcy5fcGVuZGluZ1N1YnNjcmliZXJzLmZvckVhY2godGhpcy5fbm90aWZ5U3Vic2NyaWJlciksdGhpcy5fcGVuZGluZ1N1YnNjcmliZXJzPW51bGx9X25vdGlmeVN1YnNjcmliZXIodCl7dC5uZXh0KCksdC5jb21wbGV0ZSgpfX19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9ORi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8TkYpKFRyKHlGKSxUcihBRiw4KSxUcihzTSkpfSxORi7JtW1vZD1mbyh7dHlwZTpORn0pLE5GLsm1aW5qPURuKHtpbXBvcnRzOltbT0ZdLE9GXX0pLE5GLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6eUZ9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpbQUZdfV19LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltzTV19XX1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoTkYsW3t0eXBlOkxfLGFyZ3M6W3tpbXBvcnRzOltPRl0sZXhwb3J0czpbT0ZdfV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6eUZ9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpbQUZdfV19LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltzTV19XX1dfSksbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZ1byhORix7aW1wb3J0czpmdW5jdGlvbigpe3JldHVybltPRl19LGV4cG9ydHM6ZnVuY3Rpb24oKXtyZXR1cm5bT0ZdfX0pO2NvbnN0IFZGPW5ldyBlcigiTUFUX0RBVEVfTE9DQUxFIix7cHJvdmlkZWRJbjoicm9vdCIsZmFjdG9yeTpmdW5jdGlvbiBqRigpe3JldHVybiB6cihRXyl9fSk7Y2xhc3MgVUZ7Y29uc3RydWN0b3IoKXt0aGlzLl9sb2NhbGVDaGFuZ2VzPW5ldyBCLHRoaXMubG9jYWxlQ2hhbmdlcz10aGlzLl9sb2NhbGVDaGFuZ2VzfWdldFZhbGlkRGF0ZU9yTnVsbCh0KXtyZXR1cm4gdGhpcy5pc0RhdGVJbnN0YW5jZSh0KSYmdGhpcy5pc1ZhbGlkKHQpP3Q6bnVsbH1kZXNlcmlhbGl6ZSh0KXtyZXR1cm4gbnVsbD09dHx8dGhpcy5pc0RhdGVJbnN0YW5jZSh0KSYmdGhpcy5pc1ZhbGlkKHQpP3Q6dGhpcy5pbnZhbGlkKCl9c2V0TG9jYWxlKHQpe3RoaXMubG9jYWxlPXQsdGhpcy5fbG9jYWxlQ2hhbmdlcy5uZXh0KCl9Y29tcGFyZURhdGUodCxlKXtyZXR1cm4gdGhpcy5nZXRZZWFyKHQpLXRoaXMuZ2V0WWVhcihlKXx8dGhpcy5nZXRNb250aCh0KS10aGlzLmdldE1vbnRoKGUpfHx0aGlzLmdldERhdGUodCktdGhpcy5nZXREYXRlKGUpfXNhbWVEYXRlKHQsZSl7aWYodCYmZSl7bGV0IG49dGhpcy5pc1ZhbGlkKHQpLG89dGhpcy5pc1ZhbGlkKGUpO3JldHVybiBuJiZvPyF0aGlzLmNvbXBhcmVEYXRlKHQsZSk6bj09b31yZXR1cm4gdD09ZX1jbGFtcERhdGUodCxlLG4pe3JldHVybiBlJiZ0aGlzLmNvbXBhcmVEYXRlKHQsZSk8MD9lOm4mJnRoaXMuY29tcGFyZURhdGUodCxuKT4wP246dH19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NvbnN0IFdGPW5ldyBlcigibWF0LWRhdGUtZm9ybWF0cyIpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9sZXQgR0Y7dHJ5e0dGPSJ1bmRlZmluZWQiIT10eXBlb2YgSW50bH1jYXRjaChtQ3Qpe0dGPSExfWNvbnN0IFlGPXtsb25nOlsiSmFudWFyeSIsIkZlYnJ1YXJ5IiwiTWFyY2giLCJBcHJpbCIsIk1heSIsIkp1bmUiLCJKdWx5IiwiQXVndXN0IiwiU2VwdGVtYmVyIiwiT2N0b2JlciIsIk5vdmVtYmVyIiwiRGVjZW1iZXIiXSxzaG9ydDpbIkphbiIsIkZlYiIsIk1hciIsIkFwciIsIk1heSIsIkp1biIsIkp1bCIsIkF1ZyIsIlNlcCIsIk9jdCIsIk5vdiIsIkRlYyJdLG5hcnJvdzpbIkoiLCJGIiwiTSIsIkEiLCJNIiwiSiIsIkoiLCJBIiwiUyIsIk8iLCJOIiwiRCJdfSxxRj1LRigzMSwodD0+U3RyaW5nKHQrMSkpKSxaRj17bG9uZzpbIlN1bmRheSIsIk1vbmRheSIsIlR1ZXNkYXkiLCJXZWRuZXNkYXkiLCJUaHVyc2RheSIsIkZyaWRheSIsIlNhdHVyZGF5Il0sc2hvcnQ6WyJTdW4iLCJNb24iLCJUdWUiLCJXZWQiLCJUaHUiLCJGcmkiLCJTYXQiXSxuYXJyb3c6WyJTIiwiTSIsIlQiLCJXIiwiVCIsIkYiLCJTIl19LFhGPS9eXGR7NH0tXGR7Mn0tXGR7Mn0oPzpUXGR7Mn06XGR7Mn06XGR7Mn0oPzpcLlxkKyk/KD86WnwoPzooPzpcK3wtKVxkezJ9OlxkezJ9KSk/KT8kLztmdW5jdGlvbiBLRih0LGUpe2NvbnN0IG49QXJyYXkodCk7Zm9yKGxldCBvPTA7bzx0O28rKyluW29dPWUobyk7cmV0dXJuIG59Y2xhc3MgSkYgZXh0ZW5kcyBVRntjb25zdHJ1Y3Rvcih0LGUpe3N1cGVyKCksdGhpcy51c2VVdGNGb3JEaXNwbGF5PSEwLHN1cGVyLnNldExvY2FsZSh0KSx0aGlzLnVzZVV0Y0ZvckRpc3BsYXk9IWUuVFJJREVOVCx0aGlzLl9jbGFtcERhdGU9ZS5UUklERU5UfHxlLkVER0V9Z2V0WWVhcih0KXtyZXR1cm4gdC5nZXRGdWxsWWVhcigpfWdldE1vbnRoKHQpe3JldHVybiB0LmdldE1vbnRoKCl9Z2V0RGF0ZSh0KXtyZXR1cm4gdC5nZXREYXRlKCl9Z2V0RGF5T2ZXZWVrKHQpe3JldHVybiB0LmdldERheSgpfWdldE1vbnRoTmFtZXModCl7aWYoR0Ype2NvbnN0IGU9bmV3IEludGwuRGF0ZVRpbWVGb3JtYXQodGhpcy5sb2NhbGUse21vbnRoOnQsdGltZVpvbmU6InV0YyJ9KTtyZXR1cm4gS0YoMTIsKHQ9PnRoaXMuX3N0cmlwRGlyZWN0aW9uYWxpdHlDaGFyYWN0ZXJzKHRoaXMuX2Zvcm1hdChlLG5ldyBEYXRlKDIwMTcsdCwxKSkpKSl9cmV0dXJuIFlGW3RdfWdldERhdGVOYW1lcygpe2lmKEdGKXtjb25zdCB0PW5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KHRoaXMubG9jYWxlLHtkYXk6Im51bWVyaWMiLHRpbWVab25lOiJ1dGMifSk7cmV0dXJuIEtGKDMxLChlPT50aGlzLl9zdHJpcERpcmVjdGlvbmFsaXR5Q2hhcmFjdGVycyh0aGlzLl9mb3JtYXQodCxuZXcgRGF0ZSgyMDE3LDAsZSsxKSkpKSl9cmV0dXJuIHFGfWdldERheU9mV2Vla05hbWVzKHQpe2lmKEdGKXtjb25zdCBlPW5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KHRoaXMubG9jYWxlLHt3ZWVrZGF5OnQsdGltZVpvbmU6InV0YyJ9KTtyZXR1cm4gS0YoNywodD0+dGhpcy5fc3RyaXBEaXJlY3Rpb25hbGl0eUNoYXJhY3RlcnModGhpcy5fZm9ybWF0KGUsbmV3IERhdGUoMjAxNywwLHQrMSkpKSkpfXJldHVybiBaRlt0XX1nZXRZZWFyTmFtZSh0KXtpZihHRil7Y29uc3QgZT1uZXcgSW50bC5EYXRlVGltZUZvcm1hdCh0aGlzLmxvY2FsZSx7eWVhcjoibnVtZXJpYyIsdGltZVpvbmU6InV0YyJ9KTtyZXR1cm4gdGhpcy5fc3RyaXBEaXJlY3Rpb25hbGl0eUNoYXJhY3RlcnModGhpcy5fZm9ybWF0KGUsdCkpfXJldHVybiBTdHJpbmcodGhpcy5nZXRZZWFyKHQpKX1nZXRGaXJzdERheU9mV2Vlaygpe3JldHVybiAwfWdldE51bURheXNJbk1vbnRoKHQpe3JldHVybiB0aGlzLmdldERhdGUodGhpcy5fY3JlYXRlRGF0ZVdpdGhPdmVyZmxvdyh0aGlzLmdldFllYXIodCksdGhpcy5nZXRNb250aCh0KSsxLDApKX1jbG9uZSh0KXtyZXR1cm4gbmV3IERhdGUodC5nZXRUaW1lKCkpfWNyZWF0ZURhdGUodCxlLG4pe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpe2lmKGU8MHx8ZT4xMSl0aHJvdyBFcnJvcihgSW52YWxpZCBtb250aCBpbmRleCAiJHtlfSIuIE1vbnRoIGluZGV4IGhhcyB0byBiZSBiZXR3ZWVuIDAgYW5kIDExLmApO2lmKG48MSl0aHJvdyBFcnJvcihgSW52YWxpZCBkYXRlICIke259Ii4gRGF0ZSBoYXMgdG8gYmUgZ3JlYXRlciB0aGFuIDAuYCl9bGV0IG89dGhpcy5fY3JlYXRlRGF0ZVdpdGhPdmVyZmxvdyh0LGUsbik7aWYoby5nZXRNb250aCgpIT1lJiYoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkpdGhyb3cgRXJyb3IoYEludmFsaWQgZGF0ZSAiJHtufSIgZm9yIG1vbnRoIHdpdGggaW5kZXggIiR7ZX0iLmApO3JldHVybiBvfXRvZGF5KCl7cmV0dXJuIG5ldyBEYXRlfXBhcnNlKHQpe3JldHVybiJudW1iZXIiPT10eXBlb2YgdD9uZXcgRGF0ZSh0KTp0P25ldyBEYXRlKERhdGUucGFyc2UodCkpOm51bGx9Zm9ybWF0KHQsZSl7aWYoIXRoaXMuaXNWYWxpZCh0KSl0aHJvdyBFcnJvcigiTmF0aXZlRGF0ZUFkYXB0ZXI6IENhbm5vdCBmb3JtYXQgaW52YWxpZCBkYXRlLiIpO2lmKEdGKXt0aGlzLl9jbGFtcERhdGUmJih0LmdldEZ1bGxZZWFyKCk8MXx8dC5nZXRGdWxsWWVhcigpPjk5OTkpJiYodD10aGlzLmNsb25lKHQpKS5zZXRGdWxsWWVhcihNYXRoLm1heCgxLE1hdGgubWluKDk5OTksdC5nZXRGdWxsWWVhcigpKSkpLGU9T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGUpLHt0aW1lWm9uZToidXRjIn0pO2NvbnN0IG49bmV3IEludGwuRGF0ZVRpbWVGb3JtYXQodGhpcy5sb2NhbGUsZSk7cmV0dXJuIHRoaXMuX3N0cmlwRGlyZWN0aW9uYWxpdHlDaGFyYWN0ZXJzKHRoaXMuX2Zvcm1hdChuLHQpKX1yZXR1cm4gdGhpcy5fc3RyaXBEaXJlY3Rpb25hbGl0eUNoYXJhY3RlcnModC50b0RhdGVTdHJpbmcoKSl9YWRkQ2FsZW5kYXJZZWFycyh0LGUpe3JldHVybiB0aGlzLmFkZENhbGVuZGFyTW9udGhzKHQsMTIqZSl9YWRkQ2FsZW5kYXJNb250aHModCxlKXtsZXQgbj10aGlzLl9jcmVhdGVEYXRlV2l0aE92ZXJmbG93KHRoaXMuZ2V0WWVhcih0KSx0aGlzLmdldE1vbnRoKHQpK2UsdGhpcy5nZXREYXRlKHQpKTtyZXR1cm4gdGhpcy5nZXRNb250aChuKSE9KCh0aGlzLmdldE1vbnRoKHQpK2UpJTEyKzEyKSUxMiYmKG49dGhpcy5fY3JlYXRlRGF0ZVdpdGhPdmVyZmxvdyh0aGlzLmdldFllYXIobiksdGhpcy5nZXRNb250aChuKSwwKSksbn1hZGRDYWxlbmRhckRheXModCxlKXtyZXR1cm4gdGhpcy5fY3JlYXRlRGF0ZVdpdGhPdmVyZmxvdyh0aGlzLmdldFllYXIodCksdGhpcy5nZXRNb250aCh0KSx0aGlzLmdldERhdGUodCkrZSl9dG9Jc284NjAxKHQpe3JldHVyblt0LmdldFVUQ0Z1bGxZZWFyKCksdGhpcy5fMmRpZ2l0KHQuZ2V0VVRDTW9udGgoKSsxKSx0aGlzLl8yZGlnaXQodC5nZXRVVENEYXRlKCkpXS5qb2luKCItIil9ZGVzZXJpYWxpemUodCl7aWYoInN0cmluZyI9PXR5cGVvZiB0KXtpZighdClyZXR1cm4gbnVsbDtpZihYRi50ZXN0KHQpKXtsZXQgZT1uZXcgRGF0ZSh0KTtpZih0aGlzLmlzVmFsaWQoZSkpcmV0dXJuIGV9fXJldHVybiBzdXBlci5kZXNlcmlhbGl6ZSh0KX1pc0RhdGVJbnN0YW5jZSh0KXtyZXR1cm4gdCBpbnN0YW5jZW9mIERhdGV9aXNWYWxpZCh0KXtyZXR1cm4haXNOYU4odC5nZXRUaW1lKCkpfWludmFsaWQoKXtyZXR1cm4gbmV3IERhdGUoTmFOKX1fY3JlYXRlRGF0ZVdpdGhPdmVyZmxvdyh0LGUsbil7Y29uc3Qgbz1uZXcgRGF0ZTtyZXR1cm4gby5zZXRGdWxsWWVhcih0LGUsbiksby5zZXRIb3VycygwLDAsMCwwKSxvfV8yZGlnaXQodCl7cmV0dXJuKCIwMCIrdCkuc2xpY2UoLTIpfV9zdHJpcERpcmVjdGlvbmFsaXR5Q2hhcmFjdGVycyh0KXtyZXR1cm4gdC5yZXBsYWNlKC9bXHUyMDBlXHUyMDBmXS9nLCIiKX1fZm9ybWF0KHQsZSl7Y29uc3Qgbj1uZXcgRGF0ZTtyZXR1cm4gbi5zZXRVVENGdWxsWWVhcihlLmdldEZ1bGxZZWFyKCksZS5nZXRNb250aCgpLGUuZ2V0RGF0ZSgpKSxuLnNldFVUQ0hvdXJzKGUuZ2V0SG91cnMoKSxlLmdldE1pbnV0ZXMoKSxlLmdldFNlY29uZHMoKSxlLmdldE1pbGxpc2Vjb25kcygpKSx0LmZvcm1hdChuKX19SkYuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEpGKShUcihWRiw4KSxUcihjSCkpfSxKRi7JtXByb3Y9U24oe3Rva2VuOkpGLGZhY3Rvcnk6SkYuybVmYWN9KSxKRi5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpbVkZdfV19LHt0eXBlOmNIfV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihKRixbe3R5cGU6VW19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltWRl19XX0se3R5cGU6Y0h9XX0pLG51bGwpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3MgUUZ7fVFGLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxRRil9LFFGLsm1bW9kPWZvKHt0eXBlOlFGfSksUUYuybVpbmo9RG4oe3Byb3ZpZGVyczpbe3Byb3ZpZGU6VUYsdXNlQ2xhc3M6SkZ9XSxpbXBvcnRzOltbZEhdXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoUUYsW3t0eXBlOkxfLGFyZ3M6W3tpbXBvcnRzOltkSF0scHJvdmlkZXJzOlt7cHJvdmlkZTpVRix1c2VDbGFzczpKRn1dfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmdW8oUUYse2ltcG9ydHM6ZnVuY3Rpb24oKXtyZXR1cm5bZEhdfX0pO2NvbnN0ICRGPXtwYXJzZTp7ZGF0ZUlucHV0Om51bGx9LGRpc3BsYXk6e2RhdGVJbnB1dDp7eWVhcjoibnVtZXJpYyIsbW9udGg6Im51bWVyaWMiLGRheToibnVtZXJpYyJ9LG1vbnRoWWVhckxhYmVsOnt5ZWFyOiJudW1lcmljIixtb250aDoic2hvcnQifSxkYXRlQTExeUxhYmVsOnt5ZWFyOiJudW1lcmljIixtb250aDoibG9uZyIsZGF5OiJudW1lcmljIn0sbW9udGhZZWFyQTExeUxhYmVsOnt5ZWFyOiJudW1lcmljIixtb250aDoibG9uZyJ9fX07Y2xhc3MgdEx7fXRMLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHx0TCl9LHRMLsm1bW9kPWZvKHt0eXBlOnRMfSksdEwuybVpbmo9RG4oe3Byb3ZpZGVyczpbe3Byb3ZpZGU6V0YsdXNlVmFsdWU6JEZ9XSxpbXBvcnRzOltbUUZdXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIodEwsW3t0eXBlOkxfLGFyZ3M6W3tpbXBvcnRzOltRRl0scHJvdmlkZXJzOlt7cHJvdmlkZTpXRix1c2VWYWx1ZTokRn1dfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmdW8odEwse2ltcG9ydHM6W1FGXX0pOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3MgZUx7aXNFcnJvclN0YXRlKHQsZSl7cmV0dXJuISEodCYmdC5pbnZhbGlkJiYodC5kaXJ0eXx8ZSYmZS5zdWJtaXR0ZWQpKX19ZUwuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGVMKX0sZUwuybVwcm92PVNuKHt0b2tlbjplTCxmYWN0b3J5OmVMLsm1ZmFjfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihlTCxbe3R5cGU6VW19XSxudWxsLG51bGwpO2NsYXNzIG5Me2lzRXJyb3JTdGF0ZSh0LGUpe3JldHVybiEhKHQmJnQuaW52YWxpZCYmKHQudG91Y2hlZHx8ZSYmZS5zdWJtaXR0ZWQpKX19bkwuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fG5MKX0sbkwuybVwcm92PVNuKHtmYWN0b3J5OmZ1bmN0aW9uIHQoKXtyZXR1cm4gbmV3IG5MfSx0b2tlbjpuTCxwcm92aWRlZEluOiJyb290In0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIobkwsW3t0eXBlOlVtLGFyZ3M6W3twcm92aWRlZEluOiJyb290In1dfV0sbnVsbCxudWxsKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNsYXNzIG9Me31vTC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8b0wpfSxvTC7JtWRpcj1obyh7dHlwZTpvTCxzZWxlY3RvcnM6W1siIiwibWF0LWxpbmUiLCIiXSxbIiIsIm1hdExpbmUiLCIiXV0saG9zdEF0dHJzOlsxLCJtYXQtbGluZSJdfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihvTCxbe3R5cGU6a18sYXJnczpbe3NlbGVjdG9yOiJbbWF0LWxpbmVdLCBbbWF0TGluZV0iLGhvc3Q6e2NsYXNzOiJtYXQtbGluZSJ9fV19XSxudWxsLG51bGwpO2NsYXNzIGlMe31pTC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8aUwpfSxpTC7JtW1vZD1mbyh7dHlwZTppTH0pLGlMLsm1aW5qPURuKHtpbXBvcnRzOltbTkZdLE5GXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoaUwsW3t0eXBlOkxfLGFyZ3M6W3tpbXBvcnRzOltORl0sZXhwb3J0czpbb0wsTkZdLGRlY2xhcmF0aW9uczpbb0xdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmdW8oaUwse2RlY2xhcmF0aW9uczpbb0xdLGltcG9ydHM6W05GXSxleHBvcnRzOltvTCxORl19KTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNsYXNzIGFMe2NvbnN0cnVjdG9yKHQsZSxuKXt0aGlzLl9yZW5kZXJlcj10LHRoaXMuZWxlbWVudD1lLHRoaXMuY29uZmlnPW4sdGhpcy5zdGF0ZT0zfWZhZGVPdXQoKXt0aGlzLl9yZW5kZXJlci5mYWRlT3V0UmlwcGxlKHRoaXMpfX1jb25zdCByTD17ZW50ZXJEdXJhdGlvbjoyMjUsZXhpdER1cmF0aW9uOjE1MH0sc0w9Ykgoe3Bhc3NpdmU6ITB9KSxsTD1bIm1vdXNlZG93biIsInRvdWNoc3RhcnQiXSxjTD1bIm1vdXNldXAiLCJtb3VzZWxlYXZlIiwidG91Y2hlbmQiLCJ0b3VjaGNhbmNlbCJdO2NsYXNzIGRMe2NvbnN0cnVjdG9yKHQsZSxuLG8pe3RoaXMuX3RhcmdldD10LHRoaXMuX25nWm9uZT1lLHRoaXMuX2lzUG9pbnRlckRvd249ITEsdGhpcy5fYWN0aXZlUmlwcGxlcz1uZXcgU2V0LHRoaXMuX3BvaW50ZXJVcEV2ZW50c1JlZ2lzdGVyZWQ9ITEsby5pc0Jyb3dzZXImJih0aGlzLl9jb250YWluZXJFbGVtZW50PXJIKG4pKX1mYWRlSW5SaXBwbGUodCxlLG49e30pe2NvbnN0IG89dGhpcy5fY29udGFpbmVyUmVjdD10aGlzLl9jb250YWluZXJSZWN0fHx0aGlzLl9jb250YWluZXJFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGk9T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHJMKSxuLmFuaW1hdGlvbik7bi5jZW50ZXJlZCYmKHQ9by5sZWZ0K28ud2lkdGgvMixlPW8udG9wK28uaGVpZ2h0LzIpO2NvbnN0IGE9bi5yYWRpdXN8fChmdW5jdGlvbiByKHQsZSxuKXtjb25zdCBvPU1hdGgubWF4KE1hdGguYWJzKHQtbi5sZWZ0KSxNYXRoLmFicyh0LW4ucmlnaHQpKSxpPU1hdGgubWF4KE1hdGguYWJzKGUtbi50b3ApLE1hdGguYWJzKGUtbi5ib3R0b20pKTtyZXR1cm4gTWF0aC5zcXJ0KG8qbytpKmkpfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8pKHQsZSxvKSxzPXQtby5sZWZ0LGw9ZS1vLnRvcCxjPWkuZW50ZXJEdXJhdGlvbixkPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO2QuY2xhc3NMaXN0LmFkZCgibWF0LXJpcHBsZS1lbGVtZW50IiksZC5zdHlsZS5sZWZ0PXMtYSsicHgiLGQuc3R5bGUudG9wPWwtYSsicHgiLGQuc3R5bGUuaGVpZ2h0PTIqYSsicHgiLGQuc3R5bGUud2lkdGg9MiphKyJweCIsbnVsbCE9bi5jb2xvciYmKGQuc3R5bGUuYmFja2dyb3VuZENvbG9yPW4uY29sb3IpLGQuc3R5bGUudHJhbnNpdGlvbkR1cmF0aW9uPWAke2N9bXNgLHRoaXMuX2NvbnRhaW5lckVsZW1lbnQuYXBwZW5kQ2hpbGQoZCksKGZ1bmN0aW9uIHAodCl7d2luZG93LmdldENvbXB1dGVkU3R5bGUodCkuZ2V0UHJvcGVydHlWYWx1ZSgib3BhY2l0eSIpfSkoZCksZC5zdHlsZS50cmFuc2Zvcm09InNjYWxlKDEpIjtjb25zdCBtPW5ldyBhTCh0aGlzLGQsbik7cmV0dXJuIG0uc3RhdGU9MCx0aGlzLl9hY3RpdmVSaXBwbGVzLmFkZChtKSxuLnBlcnNpc3RlbnR8fCh0aGlzLl9tb3N0UmVjZW50VHJhbnNpZW50UmlwcGxlPW0pLHRoaXMuX3J1blRpbWVvdXRPdXRzaWRlWm9uZSgoKCk9Pntjb25zdCB0PW09PT10aGlzLl9tb3N0UmVjZW50VHJhbnNpZW50UmlwcGxlO20uc3RhdGU9MSxuLnBlcnNpc3RlbnR8fHQmJnRoaXMuX2lzUG9pbnRlckRvd258fG0uZmFkZU91dCgpfSksYyksbX1mYWRlT3V0UmlwcGxlKHQpe2NvbnN0IGU9dGhpcy5fYWN0aXZlUmlwcGxlcy5kZWxldGUodCk7aWYodD09PXRoaXMuX21vc3RSZWNlbnRUcmFuc2llbnRSaXBwbGUmJih0aGlzLl9tb3N0UmVjZW50VHJhbnNpZW50UmlwcGxlPW51bGwpLHRoaXMuX2FjdGl2ZVJpcHBsZXMuc2l6ZXx8KHRoaXMuX2NvbnRhaW5lclJlY3Q9bnVsbCksIWUpcmV0dXJuO2NvbnN0IG49dC5lbGVtZW50LG89T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHJMKSx0LmNvbmZpZy5hbmltYXRpb24pO24uc3R5bGUudHJhbnNpdGlvbkR1cmF0aW9uPWAke28uZXhpdER1cmF0aW9ufW1zYCxuLnN0eWxlLm9wYWNpdHk9IjAiLHQuc3RhdGU9Mix0aGlzLl9ydW5UaW1lb3V0T3V0c2lkZVpvbmUoKCgpPT57dC5zdGF0ZT0zLG4ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChuKX0pLG8uZXhpdER1cmF0aW9uKX1mYWRlT3V0QWxsKCl7dGhpcy5fYWN0aXZlUmlwcGxlcy5mb3JFYWNoKCh0PT50LmZhZGVPdXQoKSkpfWZhZGVPdXRBbGxOb25QZXJzaXN0ZW50KCl7dGhpcy5fYWN0aXZlUmlwcGxlcy5mb3JFYWNoKCh0PT57dC5jb25maWcucGVyc2lzdGVudHx8dC5mYWRlT3V0KCl9KSl9c2V0dXBUcmlnZ2VyRXZlbnRzKHQpe2NvbnN0IGU9ckgodCk7ZSYmZSE9PXRoaXMuX3RyaWdnZXJFbGVtZW50JiYodGhpcy5fcmVtb3ZlVHJpZ2dlckV2ZW50cygpLHRoaXMuX3RyaWdnZXJFbGVtZW50PWUsdGhpcy5fcmVnaXN0ZXJFdmVudHMobEwpKX1oYW5kbGVFdmVudCh0KXsibW91c2Vkb3duIj09PXQudHlwZT90aGlzLl9vbk1vdXNlZG93bih0KToidG91Y2hzdGFydCI9PT10LnR5cGU/dGhpcy5fb25Ub3VjaFN0YXJ0KHQpOnRoaXMuX29uUG9pbnRlclVwKCksdGhpcy5fcG9pbnRlclVwRXZlbnRzUmVnaXN0ZXJlZHx8KHRoaXMuX3JlZ2lzdGVyRXZlbnRzKGNMKSx0aGlzLl9wb2ludGVyVXBFdmVudHNSZWdpc3RlcmVkPSEwKX1fb25Nb3VzZWRvd24odCl7Y29uc3QgZT10Rih0KSxuPXRoaXMuX2xhc3RUb3VjaFN0YXJ0RXZlbnQmJkRhdGUubm93KCk8dGhpcy5fbGFzdFRvdWNoU3RhcnRFdmVudCs4MDA7dGhpcy5fdGFyZ2V0LnJpcHBsZURpc2FibGVkfHxlfHxufHwodGhpcy5faXNQb2ludGVyRG93bj0hMCx0aGlzLmZhZGVJblJpcHBsZSh0LmNsaWVudFgsdC5jbGllbnRZLHRoaXMuX3RhcmdldC5yaXBwbGVDb25maWcpKX1fb25Ub3VjaFN0YXJ0KHQpe2lmKCF0aGlzLl90YXJnZXQucmlwcGxlRGlzYWJsZWQmJiFlRih0KSl7dGhpcy5fbGFzdFRvdWNoU3RhcnRFdmVudD1EYXRlLm5vdygpLHRoaXMuX2lzUG9pbnRlckRvd249ITA7Y29uc3QgZT10LmNoYW5nZWRUb3VjaGVzO2ZvcihsZXQgdD0wO3Q8ZS5sZW5ndGg7dCsrKXRoaXMuZmFkZUluUmlwcGxlKGVbdF0uY2xpZW50WCxlW3RdLmNsaWVudFksdGhpcy5fdGFyZ2V0LnJpcHBsZUNvbmZpZyl9fV9vblBvaW50ZXJVcCgpe3RoaXMuX2lzUG9pbnRlckRvd24mJih0aGlzLl9pc1BvaW50ZXJEb3duPSExLHRoaXMuX2FjdGl2ZVJpcHBsZXMuZm9yRWFjaCgodD0+eyF0LmNvbmZpZy5wZXJzaXN0ZW50JiYoMT09PXQuc3RhdGV8fHQuY29uZmlnLnRlcm1pbmF0ZU9uUG9pbnRlclVwJiYwPT09dC5zdGF0ZSkmJnQuZmFkZU91dCgpfSkpKX1fcnVuVGltZW91dE91dHNpZGVab25lKHQsZT0wKXt0aGlzLl9uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCgpPT5zZXRUaW1lb3V0KHQsZSkpKX1fcmVnaXN0ZXJFdmVudHModCl7dGhpcy5fbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgoKT0+e3QuZm9yRWFjaCgodD0+e3RoaXMuX3RyaWdnZXJFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIodCx0aGlzLHNMKX0pKX0pKX1fcmVtb3ZlVHJpZ2dlckV2ZW50cygpe3RoaXMuX3RyaWdnZXJFbGVtZW50JiYobEwuZm9yRWFjaCgodD0+e3RoaXMuX3RyaWdnZXJFbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIodCx0aGlzLHNMKX0pKSx0aGlzLl9wb2ludGVyVXBFdmVudHNSZWdpc3RlcmVkJiZjTC5mb3JFYWNoKCh0PT57dGhpcy5fdHJpZ2dlckVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcih0LHRoaXMsc0wpfSkpKX19Y29uc3QgcEw9bmV3IGVyKCJtYXQtcmlwcGxlLWdsb2JhbC1vcHRpb25zIik7Y2xhc3MgbUx7Y29uc3RydWN0b3IodCxlLG4sbyxpKXt0aGlzLl9lbGVtZW50UmVmPXQsdGhpcy5fYW5pbWF0aW9uTW9kZT1pLHRoaXMucmFkaXVzPTAsdGhpcy5fZGlzYWJsZWQ9ITEsdGhpcy5faXNJbml0aWFsaXplZD0hMSx0aGlzLl9nbG9iYWxPcHRpb25zPW98fHt9LHRoaXMuX3JpcHBsZVJlbmRlcmVyPW5ldyBkTCh0aGlzLGUsdCxuKX1nZXQgZGlzYWJsZWQoKXtyZXR1cm4gdGhpcy5fZGlzYWJsZWR9c2V0IGRpc2FibGVkKHQpe3QmJnRoaXMuZmFkZU91dEFsbE5vblBlcnNpc3RlbnQoKSx0aGlzLl9kaXNhYmxlZD10LHRoaXMuX3NldHVwVHJpZ2dlckV2ZW50c0lmRW5hYmxlZCgpfWdldCB0cmlnZ2VyKCl7cmV0dXJuIHRoaXMuX3RyaWdnZXJ8fHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudH1zZXQgdHJpZ2dlcih0KXt0aGlzLl90cmlnZ2VyPXQsdGhpcy5fc2V0dXBUcmlnZ2VyRXZlbnRzSWZFbmFibGVkKCl9bmdPbkluaXQoKXt0aGlzLl9pc0luaXRpYWxpemVkPSEwLHRoaXMuX3NldHVwVHJpZ2dlckV2ZW50c0lmRW5hYmxlZCgpfW5nT25EZXN0cm95KCl7dGhpcy5fcmlwcGxlUmVuZGVyZXIuX3JlbW92ZVRyaWdnZXJFdmVudHMoKX1mYWRlT3V0QWxsKCl7dGhpcy5fcmlwcGxlUmVuZGVyZXIuZmFkZU91dEFsbCgpfWZhZGVPdXRBbGxOb25QZXJzaXN0ZW50KCl7dGhpcy5fcmlwcGxlUmVuZGVyZXIuZmFkZU91dEFsbE5vblBlcnNpc3RlbnQoKX1nZXQgcmlwcGxlQ29uZmlnKCl7cmV0dXJue2NlbnRlcmVkOnRoaXMuY2VudGVyZWQscmFkaXVzOnRoaXMucmFkaXVzLGNvbG9yOnRoaXMuY29sb3IsYW5pbWF0aW9uOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHRoaXMuX2dsb2JhbE9wdGlvbnMuYW5pbWF0aW9uKSwiTm9vcEFuaW1hdGlvbnMiPT09dGhpcy5fYW5pbWF0aW9uTW9kZT97ZW50ZXJEdXJhdGlvbjowLGV4aXREdXJhdGlvbjowfTp7fSksdGhpcy5hbmltYXRpb24pLHRlcm1pbmF0ZU9uUG9pbnRlclVwOnRoaXMuX2dsb2JhbE9wdGlvbnMudGVybWluYXRlT25Qb2ludGVyVXB9fWdldCByaXBwbGVEaXNhYmxlZCgpe3JldHVybiB0aGlzLmRpc2FibGVkfHwhIXRoaXMuX2dsb2JhbE9wdGlvbnMuZGlzYWJsZWR9X3NldHVwVHJpZ2dlckV2ZW50c0lmRW5hYmxlZCgpeyF0aGlzLmRpc2FibGVkJiZ0aGlzLl9pc0luaXRpYWxpemVkJiZ0aGlzLl9yaXBwbGVSZW5kZXJlci5zZXR1cFRyaWdnZXJFdmVudHModGhpcy50cmlnZ2VyKX1sYXVuY2godCxlPTAsbil7cmV0dXJuIm51bWJlciI9PXR5cGVvZiB0P3RoaXMuX3JpcHBsZVJlbmRlcmVyLmZhZGVJblJpcHBsZSh0LGUsT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHRoaXMucmlwcGxlQ29uZmlnKSxuKSk6dGhpcy5fcmlwcGxlUmVuZGVyZXIuZmFkZUluUmlwcGxlKDAsMCxPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdGhpcy5yaXBwbGVDb25maWcpLHQpKX19bUwuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fG1MKShnZihLaCksZ2YobUMpLGdmKGNIKSxnZihwTCw4KSxnZihjayw4KSl9LG1MLsm1ZGlyPWhvKHt0eXBlOm1MLHNlbGVjdG9yczpbWyIiLCJtYXQtcmlwcGxlIiwiIl0sWyIiLCJtYXRSaXBwbGUiLCIiXV0saG9zdEF0dHJzOlsxLCJtYXQtcmlwcGxlIl0saG9zdFZhcnM6Mixob3N0QmluZGluZ3M6ZnVuY3Rpb24gdChlLG4pezImZSYmY3UoIm1hdC1yaXBwbGUtdW5ib3VuZGVkIixuLnVuYm91bmRlZCl9LGlucHV0czp7cmFkaXVzOlsibWF0UmlwcGxlUmFkaXVzIiwicmFkaXVzIl0sZGlzYWJsZWQ6WyJtYXRSaXBwbGVEaXNhYmxlZCIsImRpc2FibGVkIl0sdHJpZ2dlcjpbIm1hdFJpcHBsZVRyaWdnZXIiLCJ0cmlnZ2VyIl0sY29sb3I6WyJtYXRSaXBwbGVDb2xvciIsImNvbG9yIl0sdW5ib3VuZGVkOlsibWF0UmlwcGxlVW5ib3VuZGVkIiwidW5ib3VuZGVkIl0sY2VudGVyZWQ6WyJtYXRSaXBwbGVDZW50ZXJlZCIsImNlbnRlcmVkIl0sYW5pbWF0aW9uOlsibWF0UmlwcGxlQW5pbWF0aW9uIiwiYW5pbWF0aW9uIl19LGV4cG9ydEFzOlsibWF0UmlwcGxlIl19KSxtTC5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOktofSx7dHlwZTptQ30se3R5cGU6Y0h9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpbcExdfV19LHt0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpbY2tdfV19XSxtTC5wcm9wRGVjb3JhdG9ycz17Y29sb3I6W3t0eXBlOlJfLGFyZ3M6WyJtYXRSaXBwbGVDb2xvciJdfV0sdW5ib3VuZGVkOlt7dHlwZTpSXyxhcmdzOlsibWF0UmlwcGxlVW5ib3VuZGVkIl19XSxjZW50ZXJlZDpbe3R5cGU6Ul8sYXJnczpbIm1hdFJpcHBsZUNlbnRlcmVkIl19XSxyYWRpdXM6W3t0eXBlOlJfLGFyZ3M6WyJtYXRSaXBwbGVSYWRpdXMiXX1dLGFuaW1hdGlvbjpbe3R5cGU6Ul8sYXJnczpbIm1hdFJpcHBsZUFuaW1hdGlvbiJdfV0sZGlzYWJsZWQ6W3t0eXBlOlJfLGFyZ3M6WyJtYXRSaXBwbGVEaXNhYmxlZCJdfV0sdHJpZ2dlcjpbe3R5cGU6Ul8sYXJnczpbIm1hdFJpcHBsZVRyaWdnZXIiXX1dfSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKG1MLFt7dHlwZTprXyxhcmdzOlt7c2VsZWN0b3I6IlttYXQtcmlwcGxlXSwgW21hdFJpcHBsZV0iLGV4cG9ydEFzOiJtYXRSaXBwbGUiLGhvc3Q6e2NsYXNzOiJtYXQtcmlwcGxlIiwiW2NsYXNzLm1hdC1yaXBwbGUtdW5ib3VuZGVkXSI6InVuYm91bmRlZCJ9fV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6S2h9LHt0eXBlOm1DfSx7dHlwZTpjSH0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltwTF19XX0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltja119XX1dfSkse3JhZGl1czpbe3R5cGU6Ul8sYXJnczpbIm1hdFJpcHBsZVJhZGl1cyJdfV0sZGlzYWJsZWQ6W3t0eXBlOlJfLGFyZ3M6WyJtYXRSaXBwbGVEaXNhYmxlZCJdfV0sdHJpZ2dlcjpbe3R5cGU6Ul8sYXJnczpbIm1hdFJpcHBsZVRyaWdnZXIiXX1dLGNvbG9yOlt7dHlwZTpSXyxhcmdzOlsibWF0UmlwcGxlQ29sb3IiXX1dLHVuYm91bmRlZDpbe3R5cGU6Ul8sYXJnczpbIm1hdFJpcHBsZVVuYm91bmRlZCJdfV0sY2VudGVyZWQ6W3t0eXBlOlJfLGFyZ3M6WyJtYXRSaXBwbGVDZW50ZXJlZCJdfV0sYW5pbWF0aW9uOlt7dHlwZTpSXyxhcmdzOlsibWF0UmlwcGxlQW5pbWF0aW9uIl19XX0pOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3MgZkx7fWZMLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxmTCl9LGZMLsm1bW9kPWZvKHt0eXBlOmZMfSksZkwuybVpbmo9RG4oe2ltcG9ydHM6W1tORixkSF0sTkZdfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihmTCxbe3R5cGU6TF8sYXJnczpbe2ltcG9ydHM6W05GLGRIXSxleHBvcnRzOlttTCxORl0sZGVjbGFyYXRpb25zOlttTF19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZ1byhmTCx7ZGVjbGFyYXRpb25zOmZ1bmN0aW9uKCl7cmV0dXJuW21MXX0saW1wb3J0czpmdW5jdGlvbigpe3JldHVybltORixkSF19LGV4cG9ydHM6ZnVuY3Rpb24oKXtyZXR1cm5bbUwsTkZdfX0pOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3MgdUx7Y29uc3RydWN0b3IodCl7dGhpcy5fYW5pbWF0aW9uTW9kZT10LHRoaXMuc3RhdGU9InVuY2hlY2tlZCIsdGhpcy5kaXNhYmxlZD0hMX19dUwuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHVMKShnZihjayw4KSl9LHVMLsm1Y21wPXNvKHt0eXBlOnVMLHNlbGVjdG9yczpbWyJtYXQtcHNldWRvLWNoZWNrYm94Il1dLGhvc3RBdHRyczpbMSwibWF0LXBzZXVkby1jaGVja2JveCJdLGhvc3RWYXJzOjgsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQoZSxuKXsyJmUmJmN1KCJtYXQtcHNldWRvLWNoZWNrYm94LWluZGV0ZXJtaW5hdGUiLCJpbmRldGVybWluYXRlIj09PW4uc3RhdGUpKCJtYXQtcHNldWRvLWNoZWNrYm94LWNoZWNrZWQiLCJjaGVja2VkIj09PW4uc3RhdGUpKCJtYXQtcHNldWRvLWNoZWNrYm94LWRpc2FibGVkIixuLmRpc2FibGVkKSgiX21hdC1hbmltYXRpb24tbm9vcGFibGUiLCJOb29wQW5pbWF0aW9ucyI9PT1uLl9hbmltYXRpb25Nb2RlKX0saW5wdXRzOntzdGF0ZToic3RhdGUiLGRpc2FibGVkOiJkaXNhYmxlZCJ9LGRlY2xzOjAsdmFyczowLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXt9LHN0eWxlczpbJy5tYXQtcHNldWRvLWNoZWNrYm94e3dpZHRoOjE2cHg7aGVpZ2h0OjE2cHg7Ym9yZGVyOjJweCBzb2xpZDtib3JkZXItcmFkaXVzOjJweDtjdXJzb3I6cG9pbnRlcjtkaXNwbGF5OmlubGluZS1ibG9jazt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7Ym94LXNpemluZzpib3JkZXItYm94O3Bvc2l0aW9uOnJlbGF0aXZlO2ZsZXgtc2hyaW5rOjA7dHJhbnNpdGlvbjpib3JkZXItY29sb3IgOTBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAwLjEpLGJhY2tncm91bmQtY29sb3IgOTBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAwLjEpfS5tYXQtcHNldWRvLWNoZWNrYm94OjphZnRlcntwb3NpdGlvbjphYnNvbHV0ZTtvcGFjaXR5OjA7Y29udGVudDoiIjtib3JkZXItYm90dG9tOjJweCBzb2xpZCBjdXJyZW50Q29sb3I7dHJhbnNpdGlvbjpvcGFjaXR5IDkwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMC4xKX0ubWF0LXBzZXVkby1jaGVja2JveC5tYXQtcHNldWRvLWNoZWNrYm94LWNoZWNrZWQsLm1hdC1wc2V1ZG8tY2hlY2tib3gubWF0LXBzZXVkby1jaGVja2JveC1pbmRldGVybWluYXRle2JvcmRlci1jb2xvcjp0cmFuc3BhcmVudH0uX21hdC1hbmltYXRpb24tbm9vcGFibGUubWF0LXBzZXVkby1jaGVja2JveHt0cmFuc2l0aW9uOm5vbmU7YW5pbWF0aW9uOm5vbmV9Ll9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlLm1hdC1wc2V1ZG8tY2hlY2tib3g6OmFmdGVye3RyYW5zaXRpb246bm9uZX0ubWF0LXBzZXVkby1jaGVja2JveC1kaXNhYmxlZHtjdXJzb3I6ZGVmYXVsdH0ubWF0LXBzZXVkby1jaGVja2JveC1pbmRldGVybWluYXRlOjphZnRlcnt0b3A6NXB4O2xlZnQ6MXB4O3dpZHRoOjEwcHg7b3BhY2l0eToxO2JvcmRlci1yYWRpdXM6MnB4fS5tYXQtcHNldWRvLWNoZWNrYm94LWNoZWNrZWQ6OmFmdGVye3RvcDoyLjRweDtsZWZ0OjFweDt3aWR0aDo4cHg7aGVpZ2h0OjNweDtib3JkZXItbGVmdDoycHggc29saWQgY3VycmVudENvbG9yO3RyYW5zZm9ybTpyb3RhdGUoLTQ1ZGVnKTtvcGFjaXR5OjE7Ym94LXNpemluZzpjb250ZW50LWJveH1cbiddLGVuY2Fwc3VsYXRpb246MixjaGFuZ2VEZXRlY3Rpb246MH0pLHVMLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltja119XX1dLHVMLnByb3BEZWNvcmF0b3JzPXtzdGF0ZTpbe3R5cGU6Ul99XSxkaXNhYmxlZDpbe3R5cGU6Ul99XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYih1TCxbe3R5cGU6U18sYXJnczpbe2VuY2Fwc3VsYXRpb246V24uTm9uZSxjaGFuZ2VEZXRlY3Rpb246am4uT25QdXNoLHNlbGVjdG9yOiJtYXQtcHNldWRvLWNoZWNrYm94Iix0ZW1wbGF0ZToiIixob3N0OntjbGFzczoibWF0LXBzZXVkby1jaGVja2JveCIsIltjbGFzcy5tYXQtcHNldWRvLWNoZWNrYm94LWluZGV0ZXJtaW5hdGVdIjonc3RhdGUgPT09ICJpbmRldGVybWluYXRlIicsIltjbGFzcy5tYXQtcHNldWRvLWNoZWNrYm94LWNoZWNrZWRdIjonc3RhdGUgPT09ICJjaGVja2VkIicsIltjbGFzcy5tYXQtcHNldWRvLWNoZWNrYm94LWRpc2FibGVkXSI6ImRpc2FibGVkIiwiW2NsYXNzLl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlXSI6J19hbmltYXRpb25Nb2RlID09PSAiTm9vcEFuaW1hdGlvbnMiJ30sc3R5bGVzOlsnLm1hdC1wc2V1ZG8tY2hlY2tib3h7d2lkdGg6MTZweDtoZWlnaHQ6MTZweDtib3JkZXI6MnB4IHNvbGlkO2JvcmRlci1yYWRpdXM6MnB4O2N1cnNvcjpwb2ludGVyO2Rpc3BsYXk6aW5saW5lLWJsb2NrO3ZlcnRpY2FsLWFsaWduOm1pZGRsZTtib3gtc2l6aW5nOmJvcmRlci1ib3g7cG9zaXRpb246cmVsYXRpdmU7ZmxleC1zaHJpbms6MDt0cmFuc2l0aW9uOmJvcmRlci1jb2xvciA5MG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDAuMSksYmFja2dyb3VuZC1jb2xvciA5MG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDAuMSl9Lm1hdC1wc2V1ZG8tY2hlY2tib3g6OmFmdGVye3Bvc2l0aW9uOmFic29sdXRlO29wYWNpdHk6MDtjb250ZW50OiIiO2JvcmRlci1ib3R0b206MnB4IHNvbGlkIGN1cnJlbnRDb2xvcjt0cmFuc2l0aW9uOm9wYWNpdHkgOTBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAwLjEpfS5tYXQtcHNldWRvLWNoZWNrYm94Lm1hdC1wc2V1ZG8tY2hlY2tib3gtY2hlY2tlZCwubWF0LXBzZXVkby1jaGVja2JveC5tYXQtcHNldWRvLWNoZWNrYm94LWluZGV0ZXJtaW5hdGV7Ym9yZGVyLWNvbG9yOnRyYW5zcGFyZW50fS5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZS5tYXQtcHNldWRvLWNoZWNrYm94e3RyYW5zaXRpb246bm9uZTthbmltYXRpb246bm9uZX0uX21hdC1hbmltYXRpb24tbm9vcGFibGUubWF0LXBzZXVkby1jaGVja2JveDo6YWZ0ZXJ7dHJhbnNpdGlvbjpub25lfS5tYXQtcHNldWRvLWNoZWNrYm94LWRpc2FibGVke2N1cnNvcjpkZWZhdWx0fS5tYXQtcHNldWRvLWNoZWNrYm94LWluZGV0ZXJtaW5hdGU6OmFmdGVye3RvcDo1cHg7bGVmdDoxcHg7d2lkdGg6MTBweDtvcGFjaXR5OjE7Ym9yZGVyLXJhZGl1czoycHh9Lm1hdC1wc2V1ZG8tY2hlY2tib3gtY2hlY2tlZDo6YWZ0ZXJ7dG9wOjIuNHB4O2xlZnQ6MXB4O3dpZHRoOjhweDtoZWlnaHQ6M3B4O2JvcmRlci1sZWZ0OjJweCBzb2xpZCBjdXJyZW50Q29sb3I7dHJhbnNmb3JtOnJvdGF0ZSgtNDVkZWcpO29wYWNpdHk6MTtib3gtc2l6aW5nOmNvbnRlbnQtYm94fVxuJ119XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W2NrXX1dfV19KSx7c3RhdGU6W3t0eXBlOlJffV0sZGlzYWJsZWQ6W3t0eXBlOlJffV19KTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNsYXNzIGdMe31nTC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8Z0wpfSxnTC7JtW1vZD1mbyh7dHlwZTpnTH0pLGdMLsm1aW5qPURuKHtpbXBvcnRzOltbTkZdXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoZ0wsW3t0eXBlOkxfLGFyZ3M6W3tpbXBvcnRzOltORl0sZXhwb3J0czpbdUxdLGRlY2xhcmF0aW9uczpbdUxdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmdW8oZ0wse2RlY2xhcmF0aW9uczpbdUxdLGltcG9ydHM6W05GXSxleHBvcnRzOlt1TF19KTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNvbnN0IGhMPW5ldyBlcigiTUFUX09QVElPTl9QQVJFTlRfQ09NUE9ORU5UIiksYkw9ekYoY2xhc3N7fSk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2xldCB5TD0wO2NsYXNzIF9MIGV4dGVuZHMgYkx7Y29uc3RydWN0b3IodCl7dmFyIGU7c3VwZXIoKSx0aGlzLl9sYWJlbElkPSJtYXQtb3B0Z3JvdXAtbGFiZWwtIit5TCsrLHRoaXMuX2luZXJ0PW51bGwhPT0oZT1udWxsPT10P3ZvaWQgMDp0LmluZXJ0R3JvdXBzKSYmdm9pZCAwIT09ZSYmZX19X0wuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fF9MKShnZihoTCw4KSl9LF9MLsm1ZGlyPWhvKHt0eXBlOl9MLGlucHV0czp7bGFiZWw6ImxhYmVsIn0sZmVhdHVyZXM6W1FwXX0pLF9MLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W2hMXX0se3R5cGU6QnJ9XX1dLF9MLnByb3BEZWNvcmF0b3JzPXtsYWJlbDpbe3R5cGU6Ul99XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihfTCxbe3R5cGU6a199XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W2hMXX0se3R5cGU6QnJ9XX1dfSkse2xhYmVsOlt7dHlwZTpSX31dfSk7Y29uc3QgQ0w9bmV3IGVyKCJNYXRPcHRncm91cCIpO2NsYXNzIE1MIGV4dGVuZHMgX0x7fU1MLsm1ZmFjPShmdW5jdGlvbigpe2xldCB0O3JldHVybiBmdW5jdGlvbiBlKG4pe3JldHVybih0fHwodD1VYShNTCkpKShufHxNTCl9fSkoKSxNTC7JtWNtcD1zbyh7dHlwZTpNTCxzZWxlY3RvcnM6W1sibWF0LW9wdGdyb3VwIl1dLGhvc3RBdHRyczpbMSwibWF0LW9wdGdyb3VwIl0saG9zdFZhcnM6NSxob3N0QmluZGluZ3M6ZnVuY3Rpb24gdChlLG4pezImZSYmKHltKCJyb2xlIixuLl9pbmVydD9udWxsOiJncm91cCIpKCJhcmlhLWRpc2FibGVkIixuLl9pbmVydD9udWxsOm4uZGlzYWJsZWQudG9TdHJpbmcoKSkoImFyaWEtbGFiZWxsZWRieSIsbi5faW5lcnQ/bnVsbDpuLl9sYWJlbElkKSxjdSgibWF0LW9wdGdyb3VwLWRpc2FibGVkIixuLmRpc2FibGVkKSl9LGlucHV0czp7ZGlzYWJsZWQ6ImRpc2FibGVkIn0sZXhwb3J0QXM6WyJtYXRPcHRncm91cCJdLGZlYXR1cmVzOltqaChbe3Byb3ZpZGU6Q0wsdXNlRXhpc3Rpbmc6TUx9XSksUXBdLG5nQ29udGVudFNlbGVjdG9yczpbIioiLCJtYXQtb3B0aW9uLCBuZy1jb250YWluZXIiXSxkZWNsczo0LHZhcnM6Mixjb25zdHM6W1siYXJpYS1oaWRkZW4iLCJ0cnVlIiwxLCJtYXQtb3B0Z3JvdXAtbGFiZWwiLDMsImlkIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihIZih3RiksQ2YoMCwic3BhbiIsMCksUHUoMSksRmYoMiksTWYoKSxGZigzLDEpKSwyJmUmJihiZigiaWQiLG4uX2xhYmVsSWQpLERjKDEpLGt1KCIiLG4ubGFiZWwsIiAiKSl9LHN0eWxlczpbIi5tYXQtb3B0Z3JvdXAtbGFiZWx7d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7bGluZS1oZWlnaHQ6NDhweDtoZWlnaHQ6NDhweDtwYWRkaW5nOjAgMTZweDt0ZXh0LWFsaWduOmxlZnQ7dGV4dC1kZWNvcmF0aW9uOm5vbmU7bWF4LXdpZHRoOjEwMCU7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTstbXMtdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lO2N1cnNvcjpkZWZhdWx0fS5tYXQtb3B0Z3JvdXAtbGFiZWxbZGlzYWJsZWRde2N1cnNvcjpkZWZhdWx0fVtkaXI9cnRsXSAubWF0LW9wdGdyb3VwLWxhYmVse3RleHQtYWxpZ246cmlnaHR9Lm1hdC1vcHRncm91cC1sYWJlbCAubWF0LWljb257bWFyZ2luLXJpZ2h0OjE2cHg7dmVydGljYWwtYWxpZ246bWlkZGxlfS5tYXQtb3B0Z3JvdXAtbGFiZWwgLm1hdC1pY29uIHN2Z3t2ZXJ0aWNhbC1hbGlnbjp0b3B9W2Rpcj1ydGxdIC5tYXQtb3B0Z3JvdXAtbGFiZWwgLm1hdC1pY29ue21hcmdpbi1sZWZ0OjE2cHg7bWFyZ2luLXJpZ2h0OjB9XG4iXSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKE1MLFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6Im1hdC1vcHRncm91cCIsZXhwb3J0QXM6Im1hdE9wdGdyb3VwIix0ZW1wbGF0ZTonPHNwYW4gY2xhc3M9Im1hdC1vcHRncm91cC1sYWJlbCIgYXJpYS1oaWRkZW49InRydWUiIFtpZF09Il9sYWJlbElkIj57eyBsYWJlbCB9fSA8bmctY29udGVudD48L25nLWNvbnRlbnQ+PC9zcGFuPlxuPG5nLWNvbnRlbnQgc2VsZWN0PSJtYXQtb3B0aW9uLCBuZy1jb250YWluZXIiPjwvbmctY29udGVudD5cbicsZW5jYXBzdWxhdGlvbjpXbi5Ob25lLGNoYW5nZURldGVjdGlvbjpqbi5PblB1c2gsaW5wdXRzOlsiZGlzYWJsZWQiXSxob3N0OntjbGFzczoibWF0LW9wdGdyb3VwIiwiW2F0dHIucm9sZV0iOidfaW5lcnQgPyBudWxsIDogImdyb3VwIicsIlthdHRyLmFyaWEtZGlzYWJsZWRdIjoiX2luZXJ0ID8gbnVsbCA6IGRpc2FibGVkLnRvU3RyaW5nKCkiLCJbYXR0ci5hcmlhLWxhYmVsbGVkYnldIjoiX2luZXJ0ID8gbnVsbCA6IF9sYWJlbElkIiwiW2NsYXNzLm1hdC1vcHRncm91cC1kaXNhYmxlZF0iOiJkaXNhYmxlZCJ9LHByb3ZpZGVyczpbe3Byb3ZpZGU6Q0wsdXNlRXhpc3Rpbmc6TUx9XSxzdHlsZXM6WyIubWF0LW9wdGdyb3VwLWxhYmVse3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2xpbmUtaGVpZ2h0OjQ4cHg7aGVpZ2h0OjQ4cHg7cGFkZGluZzowIDE2cHg7dGV4dC1hbGlnbjpsZWZ0O3RleHQtZGVjb3JhdGlvbjpub25lO21heC13aWR0aDoxMDAlOy13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTstbW96LXVzZXItc2VsZWN0Om5vbmU7LW1zLXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZTtjdXJzb3I6ZGVmYXVsdH0ubWF0LW9wdGdyb3VwLWxhYmVsW2Rpc2FibGVkXXtjdXJzb3I6ZGVmYXVsdH1bZGlyPXJ0bF0gLm1hdC1vcHRncm91cC1sYWJlbHt0ZXh0LWFsaWduOnJpZ2h0fS5tYXQtb3B0Z3JvdXAtbGFiZWwgLm1hdC1pY29ue21hcmdpbi1yaWdodDoxNnB4O3ZlcnRpY2FsLWFsaWduOm1pZGRsZX0ubWF0LW9wdGdyb3VwLWxhYmVsIC5tYXQtaWNvbiBzdmd7dmVydGljYWwtYWxpZ246dG9wfVtkaXI9cnRsXSAubWF0LW9wdGdyb3VwLWxhYmVsIC5tYXQtaWNvbnttYXJnaW4tbGVmdDoxNnB4O21hcmdpbi1yaWdodDowfVxuIl19XX1dLG51bGwsbnVsbCk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpsZXQgdkw9MDtjbGFzcyB4THtjb25zdHJ1Y3Rvcih0LGU9ITEpe3RoaXMuc291cmNlPXQsdGhpcy5pc1VzZXJJbnB1dD1lfX1jbGFzcyBPTHtjb25zdHJ1Y3Rvcih0LGUsbixvKXt0aGlzLl9lbGVtZW50PXQsdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWY9ZSx0aGlzLl9wYXJlbnQ9bix0aGlzLmdyb3VwPW8sdGhpcy5fc2VsZWN0ZWQ9ITEsdGhpcy5fYWN0aXZlPSExLHRoaXMuX2Rpc2FibGVkPSExLHRoaXMuX21vc3RSZWNlbnRWaWV3VmFsdWU9IiIsdGhpcy5pZD0ibWF0LW9wdGlvbi0iK3ZMKyssdGhpcy5vblNlbGVjdGlvbkNoYW5nZT1uZXcgU3ksdGhpcy5fc3RhdGVDaGFuZ2VzPW5ldyBCfWdldCBtdWx0aXBsZSgpe3JldHVybiB0aGlzLl9wYXJlbnQmJnRoaXMuX3BhcmVudC5tdWx0aXBsZX1nZXQgc2VsZWN0ZWQoKXtyZXR1cm4gdGhpcy5fc2VsZWN0ZWR9Z2V0IGRpc2FibGVkKCl7cmV0dXJuIHRoaXMuZ3JvdXAmJnRoaXMuZ3JvdXAuZGlzYWJsZWR8fHRoaXMuX2Rpc2FibGVkfXNldCBkaXNhYmxlZCh0KXt0aGlzLl9kaXNhYmxlZD1lSCh0KX1nZXQgZGlzYWJsZVJpcHBsZSgpe3JldHVybiB0aGlzLl9wYXJlbnQmJnRoaXMuX3BhcmVudC5kaXNhYmxlUmlwcGxlfWdldCBhY3RpdmUoKXtyZXR1cm4gdGhpcy5fYWN0aXZlfWdldCB2aWV3VmFsdWUoKXtyZXR1cm4odGhpcy5fZ2V0SG9zdEVsZW1lbnQoKS50ZXh0Q29udGVudHx8IiIpLnRyaW0oKX1zZWxlY3QoKXt0aGlzLl9zZWxlY3RlZHx8KHRoaXMuX3NlbGVjdGVkPSEwLHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpLHRoaXMuX2VtaXRTZWxlY3Rpb25DaGFuZ2VFdmVudCgpKX1kZXNlbGVjdCgpe3RoaXMuX3NlbGVjdGVkJiYodGhpcy5fc2VsZWN0ZWQ9ITEsdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCksdGhpcy5fZW1pdFNlbGVjdGlvbkNoYW5nZUV2ZW50KCkpfWZvY3VzKHQsZSl7Y29uc3Qgbj10aGlzLl9nZXRIb3N0RWxlbWVudCgpOyJmdW5jdGlvbiI9PXR5cGVvZiBuLmZvY3VzJiZuLmZvY3VzKGUpfXNldEFjdGl2ZVN0eWxlcygpe3RoaXMuX2FjdGl2ZXx8KHRoaXMuX2FjdGl2ZT0hMCx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKSl9c2V0SW5hY3RpdmVTdHlsZXMoKXt0aGlzLl9hY3RpdmUmJih0aGlzLl9hY3RpdmU9ITEsdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCkpfWdldExhYmVsKCl7cmV0dXJuIHRoaXMudmlld1ZhbHVlfV9oYW5kbGVLZXlkb3duKHQpe3Qua2V5Q29kZSE9PVhJJiZ0LmtleUNvZGUhPT1KSXx8dEgodCl8fCh0aGlzLl9zZWxlY3RWaWFJbnRlcmFjdGlvbigpLHQucHJldmVudERlZmF1bHQoKSl9X3NlbGVjdFZpYUludGVyYWN0aW9uKCl7dGhpcy5kaXNhYmxlZHx8KHRoaXMuX3NlbGVjdGVkPSF0aGlzLm11bHRpcGxlfHwhdGhpcy5fc2VsZWN0ZWQsdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCksdGhpcy5fZW1pdFNlbGVjdGlvbkNoYW5nZUV2ZW50KCEwKSl9X2dldEFyaWFTZWxlY3RlZCgpe3JldHVybiB0aGlzLnNlbGVjdGVkfHwhdGhpcy5tdWx0aXBsZSYmbnVsbH1fZ2V0VGFiSW5kZXgoKXtyZXR1cm4gdGhpcy5kaXNhYmxlZD8iLTEiOiIwIn1fZ2V0SG9zdEVsZW1lbnQoKXtyZXR1cm4gdGhpcy5fZWxlbWVudC5uYXRpdmVFbGVtZW50fW5nQWZ0ZXJWaWV3Q2hlY2tlZCgpe2lmKHRoaXMuX3NlbGVjdGVkKXtjb25zdCB0PXRoaXMudmlld1ZhbHVlO3QhPT10aGlzLl9tb3N0UmVjZW50Vmlld1ZhbHVlJiYodGhpcy5fbW9zdFJlY2VudFZpZXdWYWx1ZT10LHRoaXMuX3N0YXRlQ2hhbmdlcy5uZXh0KCkpfX1uZ09uRGVzdHJveSgpe3RoaXMuX3N0YXRlQ2hhbmdlcy5jb21wbGV0ZSgpfV9lbWl0U2VsZWN0aW9uQ2hhbmdlRXZlbnQodD0hMSl7dGhpcy5vblNlbGVjdGlvbkNoYW5nZS5lbWl0KG5ldyB4TCh0aGlzLHQpKX19T0wuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fE9MKShnZihLaCksZ2YoT2IpLGdmKHZvaWQgMCksZ2YoX0wpKX0sT0wuybVkaXI9aG8oe3R5cGU6T0wsaW5wdXRzOntpZDoiaWQiLGRpc2FibGVkOiJkaXNhYmxlZCIsdmFsdWU6InZhbHVlIn0sb3V0cHV0czp7b25TZWxlY3Rpb25DaGFuZ2U6Im9uU2VsZWN0aW9uQ2hhbmdlIn19KSxPTC5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOktofSx7dHlwZTpPYn0se3R5cGU6dm9pZCAwfSx7dHlwZTpfTH1dLE9MLnByb3BEZWNvcmF0b3JzPXt2YWx1ZTpbe3R5cGU6Ul99XSxpZDpbe3R5cGU6Ul99XSxkaXNhYmxlZDpbe3R5cGU6Ul99XSxvblNlbGVjdGlvbkNoYW5nZTpbe3R5cGU6RV99XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihPTCxbe3R5cGU6a199XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6S2h9LHt0eXBlOk9ifSx7dHlwZTp2b2lkIDB9LHt0eXBlOl9MfV19KSx7aWQ6W3t0eXBlOlJffV0sb25TZWxlY3Rpb25DaGFuZ2U6W3t0eXBlOkVffV0sZGlzYWJsZWQ6W3t0eXBlOlJffV0sdmFsdWU6W3t0eXBlOlJffV19KTtjbGFzcyBQTCBleHRlbmRzIE9Me2NvbnN0cnVjdG9yKHQsZSxuLG8pe3N1cGVyKHQsZSxuLG8pfX1mdW5jdGlvbiB3TCh0LGUsbil7aWYobi5sZW5ndGgpe2xldCBvPWUudG9BcnJheSgpLGk9bi50b0FycmF5KCksYT0wO2ZvcihsZXQgZT0wO2U8dCsxO2UrKylvW2VdLmdyb3VwJiZvW2VdLmdyb3VwPT09aVthXSYmYSsrO3JldHVybiBhfXJldHVybiAwfWZ1bmN0aW9uIGtMKHQsZSxuLG8pe3JldHVybiB0PG4/dDp0K2U+bitvP01hdGgubWF4KDAsdC1vK2UpOm59Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL1BMLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxQTCkoZ2YoS2gpLGdmKE9iKSxnZihoTCw4KSxnZihDTCw4KSl9LFBMLsm1Y21wPXNvKHt0eXBlOlBMLHNlbGVjdG9yczpbWyJtYXQtb3B0aW9uIl1dLGhvc3RBdHRyczpbInJvbGUiLCJvcHRpb24iLDEsIm1hdC1vcHRpb24iLCJtYXQtZm9jdXMtaW5kaWNhdG9yIl0saG9zdFZhcnM6MTIsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJlJmKCJjbGljayIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5fc2VsZWN0VmlhSW50ZXJhY3Rpb24oKX0pKSgia2V5ZG93biIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4uX2hhbmRsZUtleWRvd24oZSl9KSksMiZlJiYoY2coImlkIixuLmlkKSx5bSgidGFiaW5kZXgiLG4uX2dldFRhYkluZGV4KCkpKCJhcmlhLXNlbGVjdGVkIixuLl9nZXRBcmlhU2VsZWN0ZWQoKSkoImFyaWEtZGlzYWJsZWQiLG4uZGlzYWJsZWQudG9TdHJpbmcoKSksY3UoIm1hdC1zZWxlY3RlZCIsbi5zZWxlY3RlZCkoIm1hdC1vcHRpb24tbXVsdGlwbGUiLG4ubXVsdGlwbGUpKCJtYXQtYWN0aXZlIixuLmFjdGl2ZSkoIm1hdC1vcHRpb24tZGlzYWJsZWQiLG4uZGlzYWJsZWQpKX0sZXhwb3J0QXM6WyJtYXRPcHRpb24iXSxmZWF0dXJlczpbUXBdLG5nQ29udGVudFNlbGVjdG9yczpbIioiXSxkZWNsczo1LHZhcnM6NCxjb25zdHM6W1siY2xhc3MiLCJtYXQtb3B0aW9uLXBzZXVkby1jaGVja2JveCIsMywic3RhdGUiLCJkaXNhYmxlZCIsNCwibmdJZiJdLFsxLCJtYXQtb3B0aW9uLXRleHQiXSxbImNsYXNzIiwiY2RrLXZpc3VhbGx5LWhpZGRlbiIsNCwibmdJZiJdLFsibWF0LXJpcHBsZSIsIiIsMSwibWF0LW9wdGlvbi1yaXBwbGUiLDMsIm1hdFJpcHBsZVRyaWdnZXIiLCJtYXRSaXBwbGVEaXNhYmxlZCJdLFsxLCJtYXQtb3B0aW9uLXBzZXVkby1jaGVja2JveCIsMywic3RhdGUiLCJkaXNhYmxlZCJdLFsxLCJjZGstdmlzdWFsbHktaGlkZGVuIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihIZigpLEhtKDAsa0YsMSwyLCJtYXQtcHNldWRvLWNoZWNrYm94IiwwKSxDZigxLCJzcGFuIiwxKSxGZigyKSxNZigpLEhtKDMsU0YsMiwxLCJzcGFuIiwyKSx2Zig0LCJkaXYiLDMpKSwyJmUmJihiZigibmdJZiIsbi5tdWx0aXBsZSksRGMoMyksYmYoIm5nSWYiLG4uZ3JvdXAmJm4uZ3JvdXAuX2luZXJ0KSxEYygxKSxiZigibWF0UmlwcGxlVHJpZ2dlciIsbi5fZ2V0SG9zdEVsZW1lbnQoKSkoIm1hdFJpcHBsZURpc2FibGVkIixuLmRpc2FibGVkfHxuLmRpc2FibGVSaXBwbGUpKX0sZGlyZWN0aXZlczpbUHYsbUwsdUxdLHN0eWxlczpbIi5tYXQtb3B0aW9ue3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2xpbmUtaGVpZ2h0OjQ4cHg7aGVpZ2h0OjQ4cHg7cGFkZGluZzowIDE2cHg7dGV4dC1hbGlnbjpsZWZ0O3RleHQtZGVjb3JhdGlvbjpub25lO21heC13aWR0aDoxMDAlO3Bvc2l0aW9uOnJlbGF0aXZlO2N1cnNvcjpwb2ludGVyO291dGxpbmU6bm9uZTtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246cm93O21heC13aWR0aDoxMDAlO2JveC1zaXppbmc6Ym9yZGVyLWJveDthbGlnbi1pdGVtczpjZW50ZXI7LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50fS5tYXQtb3B0aW9uW2Rpc2FibGVkXXtjdXJzb3I6ZGVmYXVsdH1bZGlyPXJ0bF0gLm1hdC1vcHRpb257dGV4dC1hbGlnbjpyaWdodH0ubWF0LW9wdGlvbiAubWF0LWljb257bWFyZ2luLXJpZ2h0OjE2cHg7dmVydGljYWwtYWxpZ246bWlkZGxlfS5tYXQtb3B0aW9uIC5tYXQtaWNvbiBzdmd7dmVydGljYWwtYWxpZ246dG9wfVtkaXI9cnRsXSAubWF0LW9wdGlvbiAubWF0LWljb257bWFyZ2luLWxlZnQ6MTZweDttYXJnaW4tcmlnaHQ6MH0ubWF0LW9wdGlvblthcmlhLWRpc2FibGVkPXRydWVdey13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTstbW96LXVzZXItc2VsZWN0Om5vbmU7LW1zLXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZTtjdXJzb3I6ZGVmYXVsdH0ubWF0LW9wdGdyb3VwIC5tYXQtb3B0aW9uOm5vdCgubWF0LW9wdGlvbi1tdWx0aXBsZSl7cGFkZGluZy1sZWZ0OjMycHh9W2Rpcj1ydGxdIC5tYXQtb3B0Z3JvdXAgLm1hdC1vcHRpb246bm90KC5tYXQtb3B0aW9uLW11bHRpcGxlKXtwYWRkaW5nLWxlZnQ6MTZweDtwYWRkaW5nLXJpZ2h0OjMycHh9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LW9wdGlvbnttYXJnaW46MCAxcHh9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LW9wdGlvbi5tYXQtYWN0aXZle2JvcmRlcjpzb2xpZCAxcHggY3VycmVudENvbG9yO21hcmdpbjowfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1vcHRpb25bYXJpYS1kaXNhYmxlZD10cnVlXXtvcGFjaXR5Oi41fS5tYXQtb3B0aW9uLXRleHR7ZGlzcGxheTppbmxpbmUtYmxvY2s7ZmxleC1ncm93OjE7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXN9Lm1hdC1vcHRpb24gLm1hdC1vcHRpb24tcmlwcGxle3RvcDowO2xlZnQ6MDtyaWdodDowO2JvdHRvbTowO3Bvc2l0aW9uOmFic29sdXRlO3BvaW50ZXItZXZlbnRzOm5vbmV9Lm1hdC1vcHRpb24tcHNldWRvLWNoZWNrYm94e21hcmdpbi1yaWdodDo4cHh9W2Rpcj1ydGxdIC5tYXQtb3B0aW9uLXBzZXVkby1jaGVja2JveHttYXJnaW4tbGVmdDo4cHg7bWFyZ2luLXJpZ2h0OjB9XG4iXSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KSxQTC5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOktofSx7dHlwZTpPYn0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltoTF19XX0se3R5cGU6TUwsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W0NMXX1dfV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihQTCxbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJtYXQtb3B0aW9uIixleHBvcnRBczoibWF0T3B0aW9uIixob3N0Ontyb2xlOiJvcHRpb24iLCJbYXR0ci50YWJpbmRleF0iOiJfZ2V0VGFiSW5kZXgoKSIsIltjbGFzcy5tYXQtc2VsZWN0ZWRdIjoic2VsZWN0ZWQiLCJbY2xhc3MubWF0LW9wdGlvbi1tdWx0aXBsZV0iOiJtdWx0aXBsZSIsIltjbGFzcy5tYXQtYWN0aXZlXSI6ImFjdGl2ZSIsIltpZF0iOiJpZCIsIlthdHRyLmFyaWEtc2VsZWN0ZWRdIjoiX2dldEFyaWFTZWxlY3RlZCgpIiwiW2F0dHIuYXJpYS1kaXNhYmxlZF0iOiJkaXNhYmxlZC50b1N0cmluZygpIiwiW2NsYXNzLm1hdC1vcHRpb24tZGlzYWJsZWRdIjoiZGlzYWJsZWQiLCIoY2xpY2spIjoiX3NlbGVjdFZpYUludGVyYWN0aW9uKCkiLCIoa2V5ZG93bikiOiJfaGFuZGxlS2V5ZG93bigkZXZlbnQpIixjbGFzczoibWF0LW9wdGlvbiBtYXQtZm9jdXMtaW5kaWNhdG9yIn0sdGVtcGxhdGU6JzxtYXQtcHNldWRvLWNoZWNrYm94ICpuZ0lmPSJtdWx0aXBsZSIgY2xhc3M9Im1hdC1vcHRpb24tcHNldWRvLWNoZWNrYm94IlxuICAgIFtzdGF0ZV09InNlbGVjdGVkID8gXCdjaGVja2VkXCcgOiBcJ3VuY2hlY2tlZFwnIiBbZGlzYWJsZWRdPSJkaXNhYmxlZCI+PC9tYXQtcHNldWRvLWNoZWNrYm94PlxuXG48c3BhbiBjbGFzcz0ibWF0LW9wdGlvbi10ZXh0Ij48bmctY29udGVudD48L25nLWNvbnRlbnQ+PC9zcGFuPlxuXG5ceDNjIS0tIFNlZSBhMTF5IG5vdGVzIGluc2lkZSBvcHRncm91cC50cyBmb3IgY29udGV4dCBiZWhpbmQgdGhpcyBlbGVtZW50LiAtLVx4M2VcbjxzcGFuIGNsYXNzPSJjZGstdmlzdWFsbHktaGlkZGVuIiAqbmdJZj0iZ3JvdXAgJiYgZ3JvdXAuX2luZXJ0Ij4oe3sgZ3JvdXAubGFiZWwgfX0pPC9zcGFuPlxuXG48ZGl2IGNsYXNzPSJtYXQtb3B0aW9uLXJpcHBsZSIgbWF0LXJpcHBsZVxuICAgICBbbWF0UmlwcGxlVHJpZ2dlcl09Il9nZXRIb3N0RWxlbWVudCgpIlxuICAgICBbbWF0UmlwcGxlRGlzYWJsZWRdPSJkaXNhYmxlZCB8fCBkaXNhYmxlUmlwcGxlIj5cbjwvZGl2PlxuJyxlbmNhcHN1bGF0aW9uOlduLk5vbmUsY2hhbmdlRGV0ZWN0aW9uOmpuLk9uUHVzaCxzdHlsZXM6WyIubWF0LW9wdGlvbnt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztsaW5lLWhlaWdodDo0OHB4O2hlaWdodDo0OHB4O3BhZGRpbmc6MCAxNnB4O3RleHQtYWxpZ246bGVmdDt0ZXh0LWRlY29yYXRpb246bm9uZTttYXgtd2lkdGg6MTAwJTtwb3NpdGlvbjpyZWxhdGl2ZTtjdXJzb3I6cG9pbnRlcjtvdXRsaW5lOm5vbmU7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOnJvdzttYXgtd2lkdGg6MTAwJTtib3gtc2l6aW5nOmJvcmRlci1ib3g7YWxpZ24taXRlbXM6Y2VudGVyOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudH0ubWF0LW9wdGlvbltkaXNhYmxlZF17Y3Vyc29yOmRlZmF1bHR9W2Rpcj1ydGxdIC5tYXQtb3B0aW9ue3RleHQtYWxpZ246cmlnaHR9Lm1hdC1vcHRpb24gLm1hdC1pY29ue21hcmdpbi1yaWdodDoxNnB4O3ZlcnRpY2FsLWFsaWduOm1pZGRsZX0ubWF0LW9wdGlvbiAubWF0LWljb24gc3Zne3ZlcnRpY2FsLWFsaWduOnRvcH1bZGlyPXJ0bF0gLm1hdC1vcHRpb24gLm1hdC1pY29ue21hcmdpbi1sZWZ0OjE2cHg7bWFyZ2luLXJpZ2h0OjB9Lm1hdC1vcHRpb25bYXJpYS1kaXNhYmxlZD10cnVlXXstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7LW1vei11c2VyLXNlbGVjdDpub25lOy1tcy11c2VyLXNlbGVjdDpub25lO3VzZXItc2VsZWN0Om5vbmU7Y3Vyc29yOmRlZmF1bHR9Lm1hdC1vcHRncm91cCAubWF0LW9wdGlvbjpub3QoLm1hdC1vcHRpb24tbXVsdGlwbGUpe3BhZGRpbmctbGVmdDozMnB4fVtkaXI9cnRsXSAubWF0LW9wdGdyb3VwIC5tYXQtb3B0aW9uOm5vdCgubWF0LW9wdGlvbi1tdWx0aXBsZSl7cGFkZGluZy1sZWZ0OjE2cHg7cGFkZGluZy1yaWdodDozMnB4fS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1vcHRpb257bWFyZ2luOjAgMXB4fS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1vcHRpb24ubWF0LWFjdGl2ZXtib3JkZXI6c29saWQgMXB4IGN1cnJlbnRDb2xvcjttYXJnaW46MH0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtb3B0aW9uW2FyaWEtZGlzYWJsZWQ9dHJ1ZV17b3BhY2l0eTouNX0ubWF0LW9wdGlvbi10ZXh0e2Rpc3BsYXk6aW5saW5lLWJsb2NrO2ZsZXgtZ3JvdzoxO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzfS5tYXQtb3B0aW9uIC5tYXQtb3B0aW9uLXJpcHBsZXt0b3A6MDtsZWZ0OjA7cmlnaHQ6MDtib3R0b206MDtwb3NpdGlvbjphYnNvbHV0ZTtwb2ludGVyLWV2ZW50czpub25lfS5tYXQtb3B0aW9uLXBzZXVkby1jaGVja2JveHttYXJnaW4tcmlnaHQ6OHB4fVtkaXI9cnRsXSAubWF0LW9wdGlvbi1wc2V1ZG8tY2hlY2tib3h7bWFyZ2luLWxlZnQ6OHB4O21hcmdpbi1yaWdodDowfVxuIl19XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpLaH0se3R5cGU6T2J9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpbaExdfV19LHt0eXBlOk1MLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltDTF19XX1dfSksbnVsbCk7Y2xhc3MgU0x7fVNMLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxTTCl9LFNMLsm1bW9kPWZvKHt0eXBlOlNMfSksU0wuybVpbmo9RG4oe2ltcG9ydHM6W1tmTCxyeCxORixnTF1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihTTCxbe3R5cGU6TF8sYXJnczpbe2ltcG9ydHM6W2ZMLHJ4LE5GLGdMXSxleHBvcnRzOltQTCxNTF0sZGVjbGFyYXRpb25zOltQTCxNTF19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZ1byhTTCx7ZGVjbGFyYXRpb25zOmZ1bmN0aW9uKCl7cmV0dXJuW1BMLE1MXX0saW1wb3J0czpmdW5jdGlvbigpe3JldHVybltmTCxyeCxORixnTF19LGV4cG9ydHM6ZnVuY3Rpb24oKXtyZXR1cm5bUEwsTUxdfX0pO2NvbnN0IERMPVsibWF0LWJ1dHRvbiIsIiJdLFJMPVsiKiJdLEVMPSIubWF0LWJ1dHRvbiAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5LC5tYXQtaWNvbi1idXR0b24gLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheXtvcGFjaXR5OjB9Lm1hdC1idXR0b246aG92ZXI6bm90KC5tYXQtYnV0dG9uLWRpc2FibGVkKSAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5LC5tYXQtc3Ryb2tlZC1idXR0b246aG92ZXI6bm90KC5tYXQtYnV0dG9uLWRpc2FibGVkKSAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5e29wYWNpdHk6LjA0fUBtZWRpYShob3Zlcjogbm9uZSl7Lm1hdC1idXR0b246aG92ZXI6bm90KC5tYXQtYnV0dG9uLWRpc2FibGVkKSAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5LC5tYXQtc3Ryb2tlZC1idXR0b246aG92ZXI6bm90KC5tYXQtYnV0dG9uLWRpc2FibGVkKSAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5e29wYWNpdHk6MH19Lm1hdC1idXR0b24sLm1hdC1pY29uLWJ1dHRvbiwubWF0LXN0cm9rZWQtYnV0dG9uLC5tYXQtZmxhdC1idXR0b257Ym94LXNpemluZzpib3JkZXItYm94O3Bvc2l0aW9uOnJlbGF0aXZlOy13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTstbW96LXVzZXItc2VsZWN0Om5vbmU7LW1zLXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZTtjdXJzb3I6cG9pbnRlcjtvdXRsaW5lOm5vbmU7Ym9yZGVyOm5vbmU7LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50O2Rpc3BsYXk6aW5saW5lLWJsb2NrO3doaXRlLXNwYWNlOm5vd3JhcDt0ZXh0LWRlY29yYXRpb246bm9uZTt2ZXJ0aWNhbC1hbGlnbjpiYXNlbGluZTt0ZXh0LWFsaWduOmNlbnRlcjttYXJnaW46MDttaW4td2lkdGg6NjRweDtsaW5lLWhlaWdodDozNnB4O3BhZGRpbmc6MCAxNnB4O2JvcmRlci1yYWRpdXM6NHB4O292ZXJmbG93OnZpc2libGV9Lm1hdC1idXR0b246Oi1tb3otZm9jdXMtaW5uZXIsLm1hdC1pY29uLWJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lciwubWF0LXN0cm9rZWQtYnV0dG9uOjotbW96LWZvY3VzLWlubmVyLC5tYXQtZmxhdC1idXR0b246Oi1tb3otZm9jdXMtaW5uZXJ7Ym9yZGVyOjB9Lm1hdC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZCwubWF0LWljb24tYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWQsLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkLC5tYXQtZmxhdC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZHtjdXJzb3I6ZGVmYXVsdH0ubWF0LWJ1dHRvbi5jZGsta2V5Ym9hcmQtZm9jdXNlZCAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5LC5tYXQtYnV0dG9uLmNkay1wcm9ncmFtLWZvY3VzZWQgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheSwubWF0LWljb24tYnV0dG9uLmNkay1rZXlib2FyZC1mb2N1c2VkIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXksLm1hdC1pY29uLWJ1dHRvbi5jZGstcHJvZ3JhbS1mb2N1c2VkIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXksLm1hdC1zdHJva2VkLWJ1dHRvbi5jZGsta2V5Ym9hcmQtZm9jdXNlZCAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5LC5tYXQtc3Ryb2tlZC1idXR0b24uY2RrLXByb2dyYW0tZm9jdXNlZCAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5LC5tYXQtZmxhdC1idXR0b24uY2RrLWtleWJvYXJkLWZvY3VzZWQgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheSwubWF0LWZsYXQtYnV0dG9uLmNkay1wcm9ncmFtLWZvY3VzZWQgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheXtvcGFjaXR5Oi4xMn0ubWF0LWJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lciwubWF0LWljb24tYnV0dG9uOjotbW96LWZvY3VzLWlubmVyLC5tYXQtc3Ryb2tlZC1idXR0b246Oi1tb3otZm9jdXMtaW5uZXIsLm1hdC1mbGF0LWJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lcntib3JkZXI6MH0ubWF0LXJhaXNlZC1idXR0b257Ym94LXNpemluZzpib3JkZXItYm94O3Bvc2l0aW9uOnJlbGF0aXZlOy13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTstbW96LXVzZXItc2VsZWN0Om5vbmU7LW1zLXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZTtjdXJzb3I6cG9pbnRlcjtvdXRsaW5lOm5vbmU7Ym9yZGVyOm5vbmU7LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50O2Rpc3BsYXk6aW5saW5lLWJsb2NrO3doaXRlLXNwYWNlOm5vd3JhcDt0ZXh0LWRlY29yYXRpb246bm9uZTt2ZXJ0aWNhbC1hbGlnbjpiYXNlbGluZTt0ZXh0LWFsaWduOmNlbnRlcjttYXJnaW46MDttaW4td2lkdGg6NjRweDtsaW5lLWhlaWdodDozNnB4O3BhZGRpbmc6MCAxNnB4O2JvcmRlci1yYWRpdXM6NHB4O292ZXJmbG93OnZpc2libGU7dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsIDAsIDApO3RyYW5zaXRpb246YmFja2dyb3VuZCA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKSxib3gtc2hhZG93IDI4MG1zIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSl9Lm1hdC1yYWlzZWQtYnV0dG9uOjotbW96LWZvY3VzLWlubmVye2JvcmRlcjowfS5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVke2N1cnNvcjpkZWZhdWx0fS5tYXQtcmFpc2VkLWJ1dHRvbi5jZGsta2V5Ym9hcmQtZm9jdXNlZCAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5LC5tYXQtcmFpc2VkLWJ1dHRvbi5jZGstcHJvZ3JhbS1mb2N1c2VkIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXl7b3BhY2l0eTouMTJ9Lm1hdC1yYWlzZWQtYnV0dG9uOjotbW96LWZvY3VzLWlubmVye2JvcmRlcjowfS5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZS5tYXQtcmFpc2VkLWJ1dHRvbnt0cmFuc2l0aW9uOm5vbmU7YW5pbWF0aW9uOm5vbmV9Lm1hdC1zdHJva2VkLWJ1dHRvbntib3JkZXI6MXB4IHNvbGlkIGN1cnJlbnRDb2xvcjtwYWRkaW5nOjAgMTVweDtsaW5lLWhlaWdodDozNHB4fS5tYXQtc3Ryb2tlZC1idXR0b24gLm1hdC1idXR0b24tcmlwcGxlLm1hdC1yaXBwbGUsLm1hdC1zdHJva2VkLWJ1dHRvbiAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5e3RvcDotMXB4O2xlZnQ6LTFweDtyaWdodDotMXB4O2JvdHRvbTotMXB4fS5tYXQtZmFie2JveC1zaXppbmc6Ym9yZGVyLWJveDtwb3NpdGlvbjpyZWxhdGl2ZTstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7LW1vei11c2VyLXNlbGVjdDpub25lOy1tcy11c2VyLXNlbGVjdDpub25lO3VzZXItc2VsZWN0Om5vbmU7Y3Vyc29yOnBvaW50ZXI7b3V0bGluZTpub25lO2JvcmRlcjpub25lOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudDtkaXNwbGF5OmlubGluZS1ibG9jazt3aGl0ZS1zcGFjZTpub3dyYXA7dGV4dC1kZWNvcmF0aW9uOm5vbmU7dmVydGljYWwtYWxpZ246YmFzZWxpbmU7dGV4dC1hbGlnbjpjZW50ZXI7bWFyZ2luOjA7bWluLXdpZHRoOjY0cHg7bGluZS1oZWlnaHQ6MzZweDtwYWRkaW5nOjAgMTZweDtib3JkZXItcmFkaXVzOjRweDtvdmVyZmxvdzp2aXNpYmxlO3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLCAwLCAwKTt0cmFuc2l0aW9uOmJhY2tncm91bmQgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSksYm94LXNoYWRvdyAyODBtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpO21pbi13aWR0aDowO2JvcmRlci1yYWRpdXM6NTAlO3dpZHRoOjU2cHg7aGVpZ2h0OjU2cHg7cGFkZGluZzowO2ZsZXgtc2hyaW5rOjB9Lm1hdC1mYWI6Oi1tb3otZm9jdXMtaW5uZXJ7Ym9yZGVyOjB9Lm1hdC1mYWIubWF0LWJ1dHRvbi1kaXNhYmxlZHtjdXJzb3I6ZGVmYXVsdH0ubWF0LWZhYi5jZGsta2V5Ym9hcmQtZm9jdXNlZCAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5LC5tYXQtZmFiLmNkay1wcm9ncmFtLWZvY3VzZWQgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheXtvcGFjaXR5Oi4xMn0ubWF0LWZhYjo6LW1vei1mb2N1cy1pbm5lcntib3JkZXI6MH0uX21hdC1hbmltYXRpb24tbm9vcGFibGUubWF0LWZhYnt0cmFuc2l0aW9uOm5vbmU7YW5pbWF0aW9uOm5vbmV9Lm1hdC1mYWIgLm1hdC1idXR0b24td3JhcHBlcntwYWRkaW5nOjE2cHggMDtkaXNwbGF5OmlubGluZS1ibG9jaztsaW5lLWhlaWdodDoyNHB4fS5tYXQtbWluaS1mYWJ7Ym94LXNpemluZzpib3JkZXItYm94O3Bvc2l0aW9uOnJlbGF0aXZlOy13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTstbW96LXVzZXItc2VsZWN0Om5vbmU7LW1zLXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZTtjdXJzb3I6cG9pbnRlcjtvdXRsaW5lOm5vbmU7Ym9yZGVyOm5vbmU7LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50O2Rpc3BsYXk6aW5saW5lLWJsb2NrO3doaXRlLXNwYWNlOm5vd3JhcDt0ZXh0LWRlY29yYXRpb246bm9uZTt2ZXJ0aWNhbC1hbGlnbjpiYXNlbGluZTt0ZXh0LWFsaWduOmNlbnRlcjttYXJnaW46MDttaW4td2lkdGg6NjRweDtsaW5lLWhlaWdodDozNnB4O3BhZGRpbmc6MCAxNnB4O2JvcmRlci1yYWRpdXM6NHB4O292ZXJmbG93OnZpc2libGU7dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsIDAsIDApO3RyYW5zaXRpb246YmFja2dyb3VuZCA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKSxib3gtc2hhZG93IDI4MG1zIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSk7bWluLXdpZHRoOjA7Ym9yZGVyLXJhZGl1czo1MCU7d2lkdGg6NDBweDtoZWlnaHQ6NDBweDtwYWRkaW5nOjA7ZmxleC1zaHJpbms6MH0ubWF0LW1pbmktZmFiOjotbW96LWZvY3VzLWlubmVye2JvcmRlcjowfS5tYXQtbWluaS1mYWIubWF0LWJ1dHRvbi1kaXNhYmxlZHtjdXJzb3I6ZGVmYXVsdH0ubWF0LW1pbmktZmFiLmNkay1rZXlib2FyZC1mb2N1c2VkIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXksLm1hdC1taW5pLWZhYi5jZGstcHJvZ3JhbS1mb2N1c2VkIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXl7b3BhY2l0eTouMTJ9Lm1hdC1taW5pLWZhYjo6LW1vei1mb2N1cy1pbm5lcntib3JkZXI6MH0uX21hdC1hbmltYXRpb24tbm9vcGFibGUubWF0LW1pbmktZmFie3RyYW5zaXRpb246bm9uZTthbmltYXRpb246bm9uZX0ubWF0LW1pbmktZmFiIC5tYXQtYnV0dG9uLXdyYXBwZXJ7cGFkZGluZzo4cHggMDtkaXNwbGF5OmlubGluZS1ibG9jaztsaW5lLWhlaWdodDoyNHB4fS5tYXQtaWNvbi1idXR0b257cGFkZGluZzowO21pbi13aWR0aDowO3dpZHRoOjQwcHg7aGVpZ2h0OjQwcHg7ZmxleC1zaHJpbms6MDtsaW5lLWhlaWdodDo0MHB4O2JvcmRlci1yYWRpdXM6NTAlfS5tYXQtaWNvbi1idXR0b24gaSwubWF0LWljb24tYnV0dG9uIC5tYXQtaWNvbntsaW5lLWhlaWdodDoyNHB4fS5tYXQtYnV0dG9uLXJpcHBsZS5tYXQtcmlwcGxlLC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXl7dG9wOjA7bGVmdDowO3JpZ2h0OjA7Ym90dG9tOjA7cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6bm9uZTtib3JkZXItcmFkaXVzOmluaGVyaXR9Lm1hdC1idXR0b24tcmlwcGxlLm1hdC1yaXBwbGU6bm90KDplbXB0eSl7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9Lm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheXtvcGFjaXR5OjA7dHJhbnNpdGlvbjpvcGFjaXR5IDIwMG1zIGN1YmljLWJlemllcigwLjM1LCAwLCAwLjI1LCAxKSxiYWNrZ3JvdW5kLWNvbG9yIDIwMG1zIGN1YmljLWJlemllcigwLjM1LCAwLCAwLjI1LCAxKX0uX21hdC1hbmltYXRpb24tbm9vcGFibGUgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheXt0cmFuc2l0aW9uOm5vbmV9Lm1hdC1idXR0b24tcmlwcGxlLXJvdW5ke2JvcmRlci1yYWRpdXM6NTAlO3otaW5kZXg6MX0ubWF0LWJ1dHRvbiAubWF0LWJ1dHRvbi13cmFwcGVyPiosLm1hdC1mbGF0LWJ1dHRvbiAubWF0LWJ1dHRvbi13cmFwcGVyPiosLm1hdC1zdHJva2VkLWJ1dHRvbiAubWF0LWJ1dHRvbi13cmFwcGVyPiosLm1hdC1yYWlzZWQtYnV0dG9uIC5tYXQtYnV0dG9uLXdyYXBwZXI+KiwubWF0LWljb24tYnV0dG9uIC5tYXQtYnV0dG9uLXdyYXBwZXI+KiwubWF0LWZhYiAubWF0LWJ1dHRvbi13cmFwcGVyPiosLm1hdC1taW5pLWZhYiAubWF0LWJ1dHRvbi13cmFwcGVyPip7dmVydGljYWwtYWxpZ246bWlkZGxlfS5tYXQtZm9ybS1maWVsZDpub3QoLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5KSAubWF0LWZvcm0tZmllbGQtcHJlZml4IC5tYXQtaWNvbi1idXR0b24sLm1hdC1mb3JtLWZpZWxkOm5vdCgubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kpIC5tYXQtZm9ybS1maWVsZC1zdWZmaXggLm1hdC1pY29uLWJ1dHRvbntkaXNwbGF5OmlubGluZS1mbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyO2ZvbnQtc2l6ZTppbmhlcml0O3dpZHRoOjIuNWVtO2hlaWdodDoyLjVlbX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtYnV0dG9uLC5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1mbGF0LWJ1dHRvbiwuY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtcmFpc2VkLWJ1dHRvbiwuY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtaWNvbi1idXR0b24sLmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWZhYiwuY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtbWluaS1mYWJ7b3V0bGluZTpzb2xpZCAxcHh9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWJ1dHRvbi1iYXNlLmNkay1rZXlib2FyZC1mb2N1c2VkLC5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1idXR0b24tYmFzZS5jZGstcHJvZ3JhbS1mb2N1c2Vke291dGxpbmU6c29saWQgM3B4fVxuIixBTD1bIm1hdC1idXR0b24iLCJtYXQtZmxhdC1idXR0b24iLCJtYXQtaWNvbi1idXR0b24iLCJtYXQtcmFpc2VkLWJ1dHRvbiIsIm1hdC1zdHJva2VkLWJ1dHRvbiIsIm1hdC1taW5pLWZhYiIsIm1hdC1mYWIiXSxUTD1JRih6RihIRihjbGFzc3tjb25zdHJ1Y3Rvcih0KXt0aGlzLl9lbGVtZW50UmVmPXR9fSkpKTtjbGFzcyBOTCBleHRlbmRzIFRMe2NvbnN0cnVjdG9yKHQsZSxuKXtzdXBlcih0KSx0aGlzLl9mb2N1c01vbml0b3I9ZSx0aGlzLl9hbmltYXRpb25Nb2RlPW4sdGhpcy5pc1JvdW5kQnV0dG9uPXRoaXMuX2hhc0hvc3RBdHRyaWJ1dGVzKCJtYXQtZmFiIiwibWF0LW1pbmktZmFiIiksdGhpcy5pc0ljb25CdXR0b249dGhpcy5faGFzSG9zdEF0dHJpYnV0ZXMoIm1hdC1pY29uLWJ1dHRvbiIpO2Zvcihjb25zdCB0IG9mIEFMKXRoaXMuX2hhc0hvc3RBdHRyaWJ1dGVzKHQpJiZ0aGlzLl9nZXRIb3N0RWxlbWVudCgpLmNsYXNzTGlzdC5hZGQodCk7dC5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5hZGQoIm1hdC1idXR0b24tYmFzZSIpLHRoaXMuaXNSb3VuZEJ1dHRvbiYmKHRoaXMuY29sb3I9ImFjY2VudCIpfW5nQWZ0ZXJWaWV3SW5pdCgpe3RoaXMuX2ZvY3VzTW9uaXRvci5tb25pdG9yKHRoaXMuX2VsZW1lbnRSZWYsITApfW5nT25EZXN0cm95KCl7dGhpcy5fZm9jdXNNb25pdG9yLnN0b3BNb25pdG9yaW5nKHRoaXMuX2VsZW1lbnRSZWYpfWZvY3VzKHQsZSl7dD90aGlzLl9mb2N1c01vbml0b3IuZm9jdXNWaWEodGhpcy5fZ2V0SG9zdEVsZW1lbnQoKSx0LGUpOnRoaXMuX2dldEhvc3RFbGVtZW50KCkuZm9jdXMoZSl9X2dldEhvc3RFbGVtZW50KCl7cmV0dXJuIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudH1faXNSaXBwbGVEaXNhYmxlZCgpe3JldHVybiB0aGlzLmRpc2FibGVSaXBwbGV8fHRoaXMuZGlzYWJsZWR9X2hhc0hvc3RBdHRyaWJ1dGVzKC4uLnQpe3JldHVybiB0LnNvbWUoKHQ9PnRoaXMuX2dldEhvc3RFbGVtZW50KCkuaGFzQXR0cmlidXRlKHQpKSl9fU5MLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxOTCkoZ2YoS2gpLGdmKGZGKSxnZihjayw4KSl9LE5MLsm1Y21wPXNvKHt0eXBlOk5MLHNlbGVjdG9yczpbWyJidXR0b24iLCJtYXQtYnV0dG9uIiwiIl0sWyJidXR0b24iLCJtYXQtcmFpc2VkLWJ1dHRvbiIsIiJdLFsiYnV0dG9uIiwibWF0LWljb24tYnV0dG9uIiwiIl0sWyJidXR0b24iLCJtYXQtZmFiIiwiIl0sWyJidXR0b24iLCJtYXQtbWluaS1mYWIiLCIiXSxbImJ1dHRvbiIsIm1hdC1zdHJva2VkLWJ1dHRvbiIsIiJdLFsiYnV0dG9uIiwibWF0LWZsYXQtYnV0dG9uIiwiIl1dLHZpZXdRdWVyeTpmdW5jdGlvbiB0KGUsbil7aWYoMSZlJiZWeShtTCw1KSwyJmUpe2xldCB0O0J5KHQ9VXkoKSkmJihuLnJpcHBsZT10LmZpcnN0KX19LGhvc3RBdHRyczpbMSwibWF0LWZvY3VzLWluZGljYXRvciJdLGhvc3RWYXJzOjUsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQoZSxuKXsyJmUmJih5bSgiZGlzYWJsZWQiLG4uZGlzYWJsZWR8fG51bGwpLGN1KCJfbWF0LWFuaW1hdGlvbi1ub29wYWJsZSIsIk5vb3BBbmltYXRpb25zIj09PW4uX2FuaW1hdGlvbk1vZGUpKCJtYXQtYnV0dG9uLWRpc2FibGVkIixuLmRpc2FibGVkKSl9LGlucHV0czp7ZGlzYWJsZWQ6ImRpc2FibGVkIixkaXNhYmxlUmlwcGxlOiJkaXNhYmxlUmlwcGxlIixjb2xvcjoiY29sb3IifSxleHBvcnRBczpbIm1hdEJ1dHRvbiJdLGZlYXR1cmVzOltRcF0sYXR0cnM6REwsbmdDb250ZW50U2VsZWN0b3JzOlJMLGRlY2xzOjQsdmFyczo1LGNvbnN0czpbWzEsIm1hdC1idXR0b24td3JhcHBlciJdLFsibWF0UmlwcGxlIiwiIiwxLCJtYXQtYnV0dG9uLXJpcHBsZSIsMywibWF0UmlwcGxlRGlzYWJsZWQiLCJtYXRSaXBwbGVDZW50ZXJlZCIsIm1hdFJpcHBsZVRyaWdnZXIiXSxbMSwibWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5Il1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihIZigpLENmKDAsInNwYW4iLDApLEZmKDEpLE1mKCksdmYoMiwic3BhbiIsMSksdmYoMywic3BhbiIsMikpLDImZSYmKERjKDIpLGN1KCJtYXQtYnV0dG9uLXJpcHBsZS1yb3VuZCIsbi5pc1JvdW5kQnV0dG9ufHxuLmlzSWNvbkJ1dHRvbiksYmYoIm1hdFJpcHBsZURpc2FibGVkIixuLl9pc1JpcHBsZURpc2FibGVkKCkpKCJtYXRSaXBwbGVDZW50ZXJlZCIsbi5pc0ljb25CdXR0b24pKCJtYXRSaXBwbGVUcmlnZ2VyIixuLl9nZXRIb3N0RWxlbWVudCgpKSl9LGRpcmVjdGl2ZXM6W21MXSxzdHlsZXM6W0VMXSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KSxOTC5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOktofSx7dHlwZTpmRn0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltja119XX1dLE5MLnByb3BEZWNvcmF0b3JzPXtyaXBwbGU6W3t0eXBlOmFyLGFyZ3M6W21MXX1dfSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKE5MLFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6ImJ1dHRvblttYXQtYnV0dG9uXSwgYnV0dG9uW21hdC1yYWlzZWQtYnV0dG9uXSwgYnV0dG9uW21hdC1pY29uLWJ1dHRvbl0sXG4gICAgICAgICAgICAgYnV0dG9uW21hdC1mYWJdLCBidXR0b25bbWF0LW1pbmktZmFiXSwgYnV0dG9uW21hdC1zdHJva2VkLWJ1dHRvbl0sXG4gICAgICAgICAgICAgYnV0dG9uW21hdC1mbGF0LWJ1dHRvbl0iLGV4cG9ydEFzOiJtYXRCdXR0b24iLGhvc3Q6eyJbYXR0ci5kaXNhYmxlZF0iOiJkaXNhYmxlZCB8fCBudWxsIiwiW2NsYXNzLl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlXSI6J19hbmltYXRpb25Nb2RlID09PSAiTm9vcEFuaW1hdGlvbnMiJywiW2NsYXNzLm1hdC1idXR0b24tZGlzYWJsZWRdIjoiZGlzYWJsZWQiLGNsYXNzOiJtYXQtZm9jdXMtaW5kaWNhdG9yIn0sdGVtcGxhdGU6JzxzcGFuIGNsYXNzPSJtYXQtYnV0dG9uLXdyYXBwZXIiPjxuZy1jb250ZW50PjwvbmctY29udGVudD48L3NwYW4+XG48c3BhbiBtYXRSaXBwbGUgY2xhc3M9Im1hdC1idXR0b24tcmlwcGxlIlxuICAgICAgW2NsYXNzLm1hdC1idXR0b24tcmlwcGxlLXJvdW5kXT0iaXNSb3VuZEJ1dHRvbiB8fCBpc0ljb25CdXR0b24iXG4gICAgICBbbWF0UmlwcGxlRGlzYWJsZWRdPSJfaXNSaXBwbGVEaXNhYmxlZCgpIlxuICAgICAgW21hdFJpcHBsZUNlbnRlcmVkXT0iaXNJY29uQnV0dG9uIlxuICAgICAgW21hdFJpcHBsZVRyaWdnZXJdPSJfZ2V0SG9zdEVsZW1lbnQoKSI+PC9zcGFuPlxuPHNwYW4gY2xhc3M9Im1hdC1idXR0b24tZm9jdXMtb3ZlcmxheSI+PC9zcGFuPlxuJyxpbnB1dHM6WyJkaXNhYmxlZCIsImRpc2FibGVSaXBwbGUiLCJjb2xvciJdLGVuY2Fwc3VsYXRpb246V24uTm9uZSxjaGFuZ2VEZXRlY3Rpb246am4uT25QdXNoLHN0eWxlczpbIi5tYXQtYnV0dG9uIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXksLm1hdC1pY29uLWJ1dHRvbiAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5e29wYWNpdHk6MH0ubWF0LWJ1dHRvbjpob3Zlcjpub3QoLm1hdC1idXR0b24tZGlzYWJsZWQpIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXksLm1hdC1zdHJva2VkLWJ1dHRvbjpob3Zlcjpub3QoLm1hdC1idXR0b24tZGlzYWJsZWQpIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXl7b3BhY2l0eTouMDR9QG1lZGlhKGhvdmVyOiBub25lKXsubWF0LWJ1dHRvbjpob3Zlcjpub3QoLm1hdC1idXR0b24tZGlzYWJsZWQpIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXksLm1hdC1zdHJva2VkLWJ1dHRvbjpob3Zlcjpub3QoLm1hdC1idXR0b24tZGlzYWJsZWQpIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXl7b3BhY2l0eTowfX0ubWF0LWJ1dHRvbiwubWF0LWljb24tYnV0dG9uLC5tYXQtc3Ryb2tlZC1idXR0b24sLm1hdC1mbGF0LWJ1dHRvbntib3gtc2l6aW5nOmJvcmRlci1ib3g7cG9zaXRpb246cmVsYXRpdmU7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTstbXMtdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lO2N1cnNvcjpwb2ludGVyO291dGxpbmU6bm9uZTtib3JkZXI6bm9uZTstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnQ7ZGlzcGxheTppbmxpbmUtYmxvY2s7d2hpdGUtc3BhY2U6bm93cmFwO3RleHQtZGVjb3JhdGlvbjpub25lO3ZlcnRpY2FsLWFsaWduOmJhc2VsaW5lO3RleHQtYWxpZ246Y2VudGVyO21hcmdpbjowO21pbi13aWR0aDo2NHB4O2xpbmUtaGVpZ2h0OjM2cHg7cGFkZGluZzowIDE2cHg7Ym9yZGVyLXJhZGl1czo0cHg7b3ZlcmZsb3c6dmlzaWJsZX0ubWF0LWJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lciwubWF0LWljb24tYnV0dG9uOjotbW96LWZvY3VzLWlubmVyLC5tYXQtc3Ryb2tlZC1idXR0b246Oi1tb3otZm9jdXMtaW5uZXIsLm1hdC1mbGF0LWJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lcntib3JkZXI6MH0ubWF0LWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkLC5tYXQtaWNvbi1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZCwubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWQsLm1hdC1mbGF0LWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVke2N1cnNvcjpkZWZhdWx0fS5tYXQtYnV0dG9uLmNkay1rZXlib2FyZC1mb2N1c2VkIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXksLm1hdC1idXR0b24uY2RrLXByb2dyYW0tZm9jdXNlZCAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5LC5tYXQtaWNvbi1idXR0b24uY2RrLWtleWJvYXJkLWZvY3VzZWQgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheSwubWF0LWljb24tYnV0dG9uLmNkay1wcm9ncmFtLWZvY3VzZWQgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheSwubWF0LXN0cm9rZWQtYnV0dG9uLmNkay1rZXlib2FyZC1mb2N1c2VkIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXksLm1hdC1zdHJva2VkLWJ1dHRvbi5jZGstcHJvZ3JhbS1mb2N1c2VkIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXksLm1hdC1mbGF0LWJ1dHRvbi5jZGsta2V5Ym9hcmQtZm9jdXNlZCAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5LC5tYXQtZmxhdC1idXR0b24uY2RrLXByb2dyYW0tZm9jdXNlZCAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5e29wYWNpdHk6LjEyfS5tYXQtYnV0dG9uOjotbW96LWZvY3VzLWlubmVyLC5tYXQtaWNvbi1idXR0b246Oi1tb3otZm9jdXMtaW5uZXIsLm1hdC1zdHJva2VkLWJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lciwubWF0LWZsYXQtYnV0dG9uOjotbW96LWZvY3VzLWlubmVye2JvcmRlcjowfS5tYXQtcmFpc2VkLWJ1dHRvbntib3gtc2l6aW5nOmJvcmRlci1ib3g7cG9zaXRpb246cmVsYXRpdmU7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTstbXMtdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lO2N1cnNvcjpwb2ludGVyO291dGxpbmU6bm9uZTtib3JkZXI6bm9uZTstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnQ7ZGlzcGxheTppbmxpbmUtYmxvY2s7d2hpdGUtc3BhY2U6bm93cmFwO3RleHQtZGVjb3JhdGlvbjpub25lO3ZlcnRpY2FsLWFsaWduOmJhc2VsaW5lO3RleHQtYWxpZ246Y2VudGVyO21hcmdpbjowO21pbi13aWR0aDo2NHB4O2xpbmUtaGVpZ2h0OjM2cHg7cGFkZGluZzowIDE2cHg7Ym9yZGVyLXJhZGl1czo0cHg7b3ZlcmZsb3c6dmlzaWJsZTt0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwgMCwgMCk7dHJhbnNpdGlvbjpiYWNrZ3JvdW5kIDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpLGJveC1zaGFkb3cgMjgwbXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKX0ubWF0LXJhaXNlZC1idXR0b246Oi1tb3otZm9jdXMtaW5uZXJ7Ym9yZGVyOjB9Lm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWR7Y3Vyc29yOmRlZmF1bHR9Lm1hdC1yYWlzZWQtYnV0dG9uLmNkay1rZXlib2FyZC1mb2N1c2VkIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXksLm1hdC1yYWlzZWQtYnV0dG9uLmNkay1wcm9ncmFtLWZvY3VzZWQgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheXtvcGFjaXR5Oi4xMn0ubWF0LXJhaXNlZC1idXR0b246Oi1tb3otZm9jdXMtaW5uZXJ7Ym9yZGVyOjB9Ll9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlLm1hdC1yYWlzZWQtYnV0dG9ue3RyYW5zaXRpb246bm9uZTthbmltYXRpb246bm9uZX0ubWF0LXN0cm9rZWQtYnV0dG9ue2JvcmRlcjoxcHggc29saWQgY3VycmVudENvbG9yO3BhZGRpbmc6MCAxNXB4O2xpbmUtaGVpZ2h0OjM0cHh9Lm1hdC1zdHJva2VkLWJ1dHRvbiAubWF0LWJ1dHRvbi1yaXBwbGUubWF0LXJpcHBsZSwubWF0LXN0cm9rZWQtYnV0dG9uIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXl7dG9wOi0xcHg7bGVmdDotMXB4O3JpZ2h0Oi0xcHg7Ym90dG9tOi0xcHh9Lm1hdC1mYWJ7Ym94LXNpemluZzpib3JkZXItYm94O3Bvc2l0aW9uOnJlbGF0aXZlOy13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTstbW96LXVzZXItc2VsZWN0Om5vbmU7LW1zLXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZTtjdXJzb3I6cG9pbnRlcjtvdXRsaW5lOm5vbmU7Ym9yZGVyOm5vbmU7LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50O2Rpc3BsYXk6aW5saW5lLWJsb2NrO3doaXRlLXNwYWNlOm5vd3JhcDt0ZXh0LWRlY29yYXRpb246bm9uZTt2ZXJ0aWNhbC1hbGlnbjpiYXNlbGluZTt0ZXh0LWFsaWduOmNlbnRlcjttYXJnaW46MDttaW4td2lkdGg6NjRweDtsaW5lLWhlaWdodDozNnB4O3BhZGRpbmc6MCAxNnB4O2JvcmRlci1yYWRpdXM6NHB4O292ZXJmbG93OnZpc2libGU7dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsIDAsIDApO3RyYW5zaXRpb246YmFja2dyb3VuZCA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKSxib3gtc2hhZG93IDI4MG1zIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSk7bWluLXdpZHRoOjA7Ym9yZGVyLXJhZGl1czo1MCU7d2lkdGg6NTZweDtoZWlnaHQ6NTZweDtwYWRkaW5nOjA7ZmxleC1zaHJpbms6MH0ubWF0LWZhYjo6LW1vei1mb2N1cy1pbm5lcntib3JkZXI6MH0ubWF0LWZhYi5tYXQtYnV0dG9uLWRpc2FibGVke2N1cnNvcjpkZWZhdWx0fS5tYXQtZmFiLmNkay1rZXlib2FyZC1mb2N1c2VkIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXksLm1hdC1mYWIuY2RrLXByb2dyYW0tZm9jdXNlZCAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5e29wYWNpdHk6LjEyfS5tYXQtZmFiOjotbW96LWZvY3VzLWlubmVye2JvcmRlcjowfS5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZS5tYXQtZmFie3RyYW5zaXRpb246bm9uZTthbmltYXRpb246bm9uZX0ubWF0LWZhYiAubWF0LWJ1dHRvbi13cmFwcGVye3BhZGRpbmc6MTZweCAwO2Rpc3BsYXk6aW5saW5lLWJsb2NrO2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1taW5pLWZhYntib3gtc2l6aW5nOmJvcmRlci1ib3g7cG9zaXRpb246cmVsYXRpdmU7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTstbXMtdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lO2N1cnNvcjpwb2ludGVyO291dGxpbmU6bm9uZTtib3JkZXI6bm9uZTstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnQ7ZGlzcGxheTppbmxpbmUtYmxvY2s7d2hpdGUtc3BhY2U6bm93cmFwO3RleHQtZGVjb3JhdGlvbjpub25lO3ZlcnRpY2FsLWFsaWduOmJhc2VsaW5lO3RleHQtYWxpZ246Y2VudGVyO21hcmdpbjowO21pbi13aWR0aDo2NHB4O2xpbmUtaGVpZ2h0OjM2cHg7cGFkZGluZzowIDE2cHg7Ym9yZGVyLXJhZGl1czo0cHg7b3ZlcmZsb3c6dmlzaWJsZTt0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwgMCwgMCk7dHJhbnNpdGlvbjpiYWNrZ3JvdW5kIDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpLGJveC1zaGFkb3cgMjgwbXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKTttaW4td2lkdGg6MDtib3JkZXItcmFkaXVzOjUwJTt3aWR0aDo0MHB4O2hlaWdodDo0MHB4O3BhZGRpbmc6MDtmbGV4LXNocmluazowfS5tYXQtbWluaS1mYWI6Oi1tb3otZm9jdXMtaW5uZXJ7Ym9yZGVyOjB9Lm1hdC1taW5pLWZhYi5tYXQtYnV0dG9uLWRpc2FibGVke2N1cnNvcjpkZWZhdWx0fS5tYXQtbWluaS1mYWIuY2RrLWtleWJvYXJkLWZvY3VzZWQgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheSwubWF0LW1pbmktZmFiLmNkay1wcm9ncmFtLWZvY3VzZWQgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheXtvcGFjaXR5Oi4xMn0ubWF0LW1pbmktZmFiOjotbW96LWZvY3VzLWlubmVye2JvcmRlcjowfS5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZS5tYXQtbWluaS1mYWJ7dHJhbnNpdGlvbjpub25lO2FuaW1hdGlvbjpub25lfS5tYXQtbWluaS1mYWIgLm1hdC1idXR0b24td3JhcHBlcntwYWRkaW5nOjhweCAwO2Rpc3BsYXk6aW5saW5lLWJsb2NrO2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1pY29uLWJ1dHRvbntwYWRkaW5nOjA7bWluLXdpZHRoOjA7d2lkdGg6NDBweDtoZWlnaHQ6NDBweDtmbGV4LXNocmluazowO2xpbmUtaGVpZ2h0OjQwcHg7Ym9yZGVyLXJhZGl1czo1MCV9Lm1hdC1pY29uLWJ1dHRvbiBpLC5tYXQtaWNvbi1idXR0b24gLm1hdC1pY29ue2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1idXR0b24tcmlwcGxlLm1hdC1yaXBwbGUsLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheXt0b3A6MDtsZWZ0OjA7cmlnaHQ6MDtib3R0b206MDtwb3NpdGlvbjphYnNvbHV0ZTtwb2ludGVyLWV2ZW50czpub25lO2JvcmRlci1yYWRpdXM6aW5oZXJpdH0ubWF0LWJ1dHRvbi1yaXBwbGUubWF0LXJpcHBsZTpub3QoOmVtcHR5KXt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKX0ubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5e29wYWNpdHk6MDt0cmFuc2l0aW9uOm9wYWNpdHkgMjAwbXMgY3ViaWMtYmV6aWVyKDAuMzUsIDAsIDAuMjUsIDEpLGJhY2tncm91bmQtY29sb3IgMjAwbXMgY3ViaWMtYmV6aWVyKDAuMzUsIDAsIDAuMjUsIDEpfS5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZSAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5e3RyYW5zaXRpb246bm9uZX0ubWF0LWJ1dHRvbi1yaXBwbGUtcm91bmR7Ym9yZGVyLXJhZGl1czo1MCU7ei1pbmRleDoxfS5tYXQtYnV0dG9uIC5tYXQtYnV0dG9uLXdyYXBwZXI+KiwubWF0LWZsYXQtYnV0dG9uIC5tYXQtYnV0dG9uLXdyYXBwZXI+KiwubWF0LXN0cm9rZWQtYnV0dG9uIC5tYXQtYnV0dG9uLXdyYXBwZXI+KiwubWF0LXJhaXNlZC1idXR0b24gLm1hdC1idXR0b24td3JhcHBlcj4qLC5tYXQtaWNvbi1idXR0b24gLm1hdC1idXR0b24td3JhcHBlcj4qLC5tYXQtZmFiIC5tYXQtYnV0dG9uLXdyYXBwZXI+KiwubWF0LW1pbmktZmFiIC5tYXQtYnV0dG9uLXdyYXBwZXI+Knt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9Lm1hdC1mb3JtLWZpZWxkOm5vdCgubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kpIC5tYXQtZm9ybS1maWVsZC1wcmVmaXggLm1hdC1pY29uLWJ1dHRvbiwubWF0LWZvcm0tZmllbGQ6bm90KC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeSkgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeCAubWF0LWljb24tYnV0dG9ue2Rpc3BsYXk6aW5saW5lLWZsZXg7anVzdGlmeS1jb250ZW50OmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7Zm9udC1zaXplOmluaGVyaXQ7d2lkdGg6Mi41ZW07aGVpZ2h0OjIuNWVtfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1idXR0b24sLmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWZsYXQtYnV0dG9uLC5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1yYWlzZWQtYnV0dG9uLC5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1pY29uLWJ1dHRvbiwuY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtZmFiLC5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1taW5pLWZhYntvdXRsaW5lOnNvbGlkIDFweH0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtYnV0dG9uLWJhc2UuY2RrLWtleWJvYXJkLWZvY3VzZWQsLmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWJ1dHRvbi1iYXNlLmNkay1wcm9ncmFtLWZvY3VzZWR7b3V0bGluZTpzb2xpZCAzcHh9XG4iXX1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOktofSx7dHlwZTpmRn0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltja119XX1dfSkse3JpcHBsZTpbe3R5cGU6YXIsYXJnczpbbUxdfV19KTtjbGFzcyB6TCBleHRlbmRzIE5Me2NvbnN0cnVjdG9yKHQsZSxuKXtzdXBlcihlLHQsbil9X2hhbHREaXNhYmxlZEV2ZW50cyh0KXt0aGlzLmRpc2FibGVkJiYodC5wcmV2ZW50RGVmYXVsdCgpLHQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCkpfX16TC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8ekwpKGdmKGZGKSxnZihLaCksZ2YoY2ssOCkpfSx6TC7JtWNtcD1zbyh7dHlwZTp6TCxzZWxlY3RvcnM6W1siYSIsIm1hdC1idXR0b24iLCIiXSxbImEiLCJtYXQtcmFpc2VkLWJ1dHRvbiIsIiJdLFsiYSIsIm1hdC1pY29uLWJ1dHRvbiIsIiJdLFsiYSIsIm1hdC1mYWIiLCIiXSxbImEiLCJtYXQtbWluaS1mYWIiLCIiXSxbImEiLCJtYXQtc3Ryb2tlZC1idXR0b24iLCIiXSxbImEiLCJtYXQtZmxhdC1idXR0b24iLCIiXV0saG9zdEF0dHJzOlsxLCJtYXQtZm9jdXMtaW5kaWNhdG9yIl0saG9zdFZhcnM6Nyxob3N0QmluZGluZ3M6ZnVuY3Rpb24gdChlLG4pezEmZSYmUmYoImNsaWNrIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5faGFsdERpc2FibGVkRXZlbnRzKGUpfSkpLDImZSYmKHltKCJ0YWJpbmRleCIsbi5kaXNhYmxlZD8tMTpuLnRhYkluZGV4fHwwKSgiZGlzYWJsZWQiLG4uZGlzYWJsZWR8fG51bGwpKCJhcmlhLWRpc2FibGVkIixuLmRpc2FibGVkLnRvU3RyaW5nKCkpLGN1KCJfbWF0LWFuaW1hdGlvbi1ub29wYWJsZSIsIk5vb3BBbmltYXRpb25zIj09PW4uX2FuaW1hdGlvbk1vZGUpKCJtYXQtYnV0dG9uLWRpc2FibGVkIixuLmRpc2FibGVkKSl9LGlucHV0czp7ZGlzYWJsZWQ6ImRpc2FibGVkIixkaXNhYmxlUmlwcGxlOiJkaXNhYmxlUmlwcGxlIixjb2xvcjoiY29sb3IiLHRhYkluZGV4OiJ0YWJJbmRleCJ9LGV4cG9ydEFzOlsibWF0QnV0dG9uIiwibWF0QW5jaG9yIl0sZmVhdHVyZXM6W1FwXSxhdHRyczpETCxuZ0NvbnRlbnRTZWxlY3RvcnM6UkwsZGVjbHM6NCx2YXJzOjUsY29uc3RzOltbMSwibWF0LWJ1dHRvbi13cmFwcGVyIl0sWyJtYXRSaXBwbGUiLCIiLDEsIm1hdC1idXR0b24tcmlwcGxlIiwzLCJtYXRSaXBwbGVEaXNhYmxlZCIsIm1hdFJpcHBsZUNlbnRlcmVkIiwibWF0UmlwcGxlVHJpZ2dlciJdLFsxLCJtYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXkiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKEhmKCksQ2YoMCwic3BhbiIsMCksRmYoMSksTWYoKSx2ZigyLCJzcGFuIiwxKSx2ZigzLCJzcGFuIiwyKSksMiZlJiYoRGMoMiksY3UoIm1hdC1idXR0b24tcmlwcGxlLXJvdW5kIixuLmlzUm91bmRCdXR0b258fG4uaXNJY29uQnV0dG9uKSxiZigibWF0UmlwcGxlRGlzYWJsZWQiLG4uX2lzUmlwcGxlRGlzYWJsZWQoKSkoIm1hdFJpcHBsZUNlbnRlcmVkIixuLmlzSWNvbkJ1dHRvbikoIm1hdFJpcHBsZVRyaWdnZXIiLG4uX2dldEhvc3RFbGVtZW50KCkpKX0sZGlyZWN0aXZlczpbbUxdLHN0eWxlczpbRUxdLGVuY2Fwc3VsYXRpb246MixjaGFuZ2VEZXRlY3Rpb246MH0pLHpMLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6ZkZ9LHt0eXBlOktofSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W2NrXX1dfV0sekwucHJvcERlY29yYXRvcnM9e3RhYkluZGV4Olt7dHlwZTpSX31dfSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKHpMLFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6ImFbbWF0LWJ1dHRvbl0sIGFbbWF0LXJhaXNlZC1idXR0b25dLCBhW21hdC1pY29uLWJ1dHRvbl0sIGFbbWF0LWZhYl0sXG4gICAgICAgICAgICAgYVttYXQtbWluaS1mYWJdLCBhW21hdC1zdHJva2VkLWJ1dHRvbl0sIGFbbWF0LWZsYXQtYnV0dG9uXSIsZXhwb3J0QXM6Im1hdEJ1dHRvbiwgbWF0QW5jaG9yIixob3N0OnsiW2F0dHIudGFiaW5kZXhdIjoiZGlzYWJsZWQgPyAtMSA6ICh0YWJJbmRleCB8fCAwKSIsIlthdHRyLmRpc2FibGVkXSI6ImRpc2FibGVkIHx8IG51bGwiLCJbYXR0ci5hcmlhLWRpc2FibGVkXSI6ImRpc2FibGVkLnRvU3RyaW5nKCkiLCIoY2xpY2spIjoiX2hhbHREaXNhYmxlZEV2ZW50cygkZXZlbnQpIiwiW2NsYXNzLl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlXSI6J19hbmltYXRpb25Nb2RlID09PSAiTm9vcEFuaW1hdGlvbnMiJywiW2NsYXNzLm1hdC1idXR0b24tZGlzYWJsZWRdIjoiZGlzYWJsZWQiLGNsYXNzOiJtYXQtZm9jdXMtaW5kaWNhdG9yIn0saW5wdXRzOlsiZGlzYWJsZWQiLCJkaXNhYmxlUmlwcGxlIiwiY29sb3IiXSx0ZW1wbGF0ZTonPHNwYW4gY2xhc3M9Im1hdC1idXR0b24td3JhcHBlciI+PG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50Pjwvc3Bhbj5cbjxzcGFuIG1hdFJpcHBsZSBjbGFzcz0ibWF0LWJ1dHRvbi1yaXBwbGUiXG4gICAgICBbY2xhc3MubWF0LWJ1dHRvbi1yaXBwbGUtcm91bmRdPSJpc1JvdW5kQnV0dG9uIHx8IGlzSWNvbkJ1dHRvbiJcbiAgICAgIFttYXRSaXBwbGVEaXNhYmxlZF09Il9pc1JpcHBsZURpc2FibGVkKCkiXG4gICAgICBbbWF0UmlwcGxlQ2VudGVyZWRdPSJpc0ljb25CdXR0b24iXG4gICAgICBbbWF0UmlwcGxlVHJpZ2dlcl09Il9nZXRIb3N0RWxlbWVudCgpIj48L3NwYW4+XG48c3BhbiBjbGFzcz0ibWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5Ij48L3NwYW4+XG4nLGVuY2Fwc3VsYXRpb246V24uTm9uZSxjaGFuZ2VEZXRlY3Rpb246am4uT25QdXNoLHN0eWxlczpbIi5tYXQtYnV0dG9uIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXksLm1hdC1pY29uLWJ1dHRvbiAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5e29wYWNpdHk6MH0ubWF0LWJ1dHRvbjpob3Zlcjpub3QoLm1hdC1idXR0b24tZGlzYWJsZWQpIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXksLm1hdC1zdHJva2VkLWJ1dHRvbjpob3Zlcjpub3QoLm1hdC1idXR0b24tZGlzYWJsZWQpIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXl7b3BhY2l0eTouMDR9QG1lZGlhKGhvdmVyOiBub25lKXsubWF0LWJ1dHRvbjpob3Zlcjpub3QoLm1hdC1idXR0b24tZGlzYWJsZWQpIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXksLm1hdC1zdHJva2VkLWJ1dHRvbjpob3Zlcjpub3QoLm1hdC1idXR0b24tZGlzYWJsZWQpIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXl7b3BhY2l0eTowfX0ubWF0LWJ1dHRvbiwubWF0LWljb24tYnV0dG9uLC5tYXQtc3Ryb2tlZC1idXR0b24sLm1hdC1mbGF0LWJ1dHRvbntib3gtc2l6aW5nOmJvcmRlci1ib3g7cG9zaXRpb246cmVsYXRpdmU7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTstbXMtdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lO2N1cnNvcjpwb2ludGVyO291dGxpbmU6bm9uZTtib3JkZXI6bm9uZTstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnQ7ZGlzcGxheTppbmxpbmUtYmxvY2s7d2hpdGUtc3BhY2U6bm93cmFwO3RleHQtZGVjb3JhdGlvbjpub25lO3ZlcnRpY2FsLWFsaWduOmJhc2VsaW5lO3RleHQtYWxpZ246Y2VudGVyO21hcmdpbjowO21pbi13aWR0aDo2NHB4O2xpbmUtaGVpZ2h0OjM2cHg7cGFkZGluZzowIDE2cHg7Ym9yZGVyLXJhZGl1czo0cHg7b3ZlcmZsb3c6dmlzaWJsZX0ubWF0LWJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lciwubWF0LWljb24tYnV0dG9uOjotbW96LWZvY3VzLWlubmVyLC5tYXQtc3Ryb2tlZC1idXR0b246Oi1tb3otZm9jdXMtaW5uZXIsLm1hdC1mbGF0LWJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lcntib3JkZXI6MH0ubWF0LWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkLC5tYXQtaWNvbi1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZCwubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWQsLm1hdC1mbGF0LWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVke2N1cnNvcjpkZWZhdWx0fS5tYXQtYnV0dG9uLmNkay1rZXlib2FyZC1mb2N1c2VkIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXksLm1hdC1idXR0b24uY2RrLXByb2dyYW0tZm9jdXNlZCAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5LC5tYXQtaWNvbi1idXR0b24uY2RrLWtleWJvYXJkLWZvY3VzZWQgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheSwubWF0LWljb24tYnV0dG9uLmNkay1wcm9ncmFtLWZvY3VzZWQgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheSwubWF0LXN0cm9rZWQtYnV0dG9uLmNkay1rZXlib2FyZC1mb2N1c2VkIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXksLm1hdC1zdHJva2VkLWJ1dHRvbi5jZGstcHJvZ3JhbS1mb2N1c2VkIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXksLm1hdC1mbGF0LWJ1dHRvbi5jZGsta2V5Ym9hcmQtZm9jdXNlZCAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5LC5tYXQtZmxhdC1idXR0b24uY2RrLXByb2dyYW0tZm9jdXNlZCAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5e29wYWNpdHk6LjEyfS5tYXQtYnV0dG9uOjotbW96LWZvY3VzLWlubmVyLC5tYXQtaWNvbi1idXR0b246Oi1tb3otZm9jdXMtaW5uZXIsLm1hdC1zdHJva2VkLWJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lciwubWF0LWZsYXQtYnV0dG9uOjotbW96LWZvY3VzLWlubmVye2JvcmRlcjowfS5tYXQtcmFpc2VkLWJ1dHRvbntib3gtc2l6aW5nOmJvcmRlci1ib3g7cG9zaXRpb246cmVsYXRpdmU7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTstbXMtdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lO2N1cnNvcjpwb2ludGVyO291dGxpbmU6bm9uZTtib3JkZXI6bm9uZTstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnQ7ZGlzcGxheTppbmxpbmUtYmxvY2s7d2hpdGUtc3BhY2U6bm93cmFwO3RleHQtZGVjb3JhdGlvbjpub25lO3ZlcnRpY2FsLWFsaWduOmJhc2VsaW5lO3RleHQtYWxpZ246Y2VudGVyO21hcmdpbjowO21pbi13aWR0aDo2NHB4O2xpbmUtaGVpZ2h0OjM2cHg7cGFkZGluZzowIDE2cHg7Ym9yZGVyLXJhZGl1czo0cHg7b3ZlcmZsb3c6dmlzaWJsZTt0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwgMCwgMCk7dHJhbnNpdGlvbjpiYWNrZ3JvdW5kIDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpLGJveC1zaGFkb3cgMjgwbXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKX0ubWF0LXJhaXNlZC1idXR0b246Oi1tb3otZm9jdXMtaW5uZXJ7Ym9yZGVyOjB9Lm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWR7Y3Vyc29yOmRlZmF1bHR9Lm1hdC1yYWlzZWQtYnV0dG9uLmNkay1rZXlib2FyZC1mb2N1c2VkIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXksLm1hdC1yYWlzZWQtYnV0dG9uLmNkay1wcm9ncmFtLWZvY3VzZWQgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheXtvcGFjaXR5Oi4xMn0ubWF0LXJhaXNlZC1idXR0b246Oi1tb3otZm9jdXMtaW5uZXJ7Ym9yZGVyOjB9Ll9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlLm1hdC1yYWlzZWQtYnV0dG9ue3RyYW5zaXRpb246bm9uZTthbmltYXRpb246bm9uZX0ubWF0LXN0cm9rZWQtYnV0dG9ue2JvcmRlcjoxcHggc29saWQgY3VycmVudENvbG9yO3BhZGRpbmc6MCAxNXB4O2xpbmUtaGVpZ2h0OjM0cHh9Lm1hdC1zdHJva2VkLWJ1dHRvbiAubWF0LWJ1dHRvbi1yaXBwbGUubWF0LXJpcHBsZSwubWF0LXN0cm9rZWQtYnV0dG9uIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXl7dG9wOi0xcHg7bGVmdDotMXB4O3JpZ2h0Oi0xcHg7Ym90dG9tOi0xcHh9Lm1hdC1mYWJ7Ym94LXNpemluZzpib3JkZXItYm94O3Bvc2l0aW9uOnJlbGF0aXZlOy13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTstbW96LXVzZXItc2VsZWN0Om5vbmU7LW1zLXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZTtjdXJzb3I6cG9pbnRlcjtvdXRsaW5lOm5vbmU7Ym9yZGVyOm5vbmU7LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50O2Rpc3BsYXk6aW5saW5lLWJsb2NrO3doaXRlLXNwYWNlOm5vd3JhcDt0ZXh0LWRlY29yYXRpb246bm9uZTt2ZXJ0aWNhbC1hbGlnbjpiYXNlbGluZTt0ZXh0LWFsaWduOmNlbnRlcjttYXJnaW46MDttaW4td2lkdGg6NjRweDtsaW5lLWhlaWdodDozNnB4O3BhZGRpbmc6MCAxNnB4O2JvcmRlci1yYWRpdXM6NHB4O292ZXJmbG93OnZpc2libGU7dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsIDAsIDApO3RyYW5zaXRpb246YmFja2dyb3VuZCA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKSxib3gtc2hhZG93IDI4MG1zIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSk7bWluLXdpZHRoOjA7Ym9yZGVyLXJhZGl1czo1MCU7d2lkdGg6NTZweDtoZWlnaHQ6NTZweDtwYWRkaW5nOjA7ZmxleC1zaHJpbms6MH0ubWF0LWZhYjo6LW1vei1mb2N1cy1pbm5lcntib3JkZXI6MH0ubWF0LWZhYi5tYXQtYnV0dG9uLWRpc2FibGVke2N1cnNvcjpkZWZhdWx0fS5tYXQtZmFiLmNkay1rZXlib2FyZC1mb2N1c2VkIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXksLm1hdC1mYWIuY2RrLXByb2dyYW0tZm9jdXNlZCAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5e29wYWNpdHk6LjEyfS5tYXQtZmFiOjotbW96LWZvY3VzLWlubmVye2JvcmRlcjowfS5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZS5tYXQtZmFie3RyYW5zaXRpb246bm9uZTthbmltYXRpb246bm9uZX0ubWF0LWZhYiAubWF0LWJ1dHRvbi13cmFwcGVye3BhZGRpbmc6MTZweCAwO2Rpc3BsYXk6aW5saW5lLWJsb2NrO2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1taW5pLWZhYntib3gtc2l6aW5nOmJvcmRlci1ib3g7cG9zaXRpb246cmVsYXRpdmU7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTstbXMtdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lO2N1cnNvcjpwb2ludGVyO291dGxpbmU6bm9uZTtib3JkZXI6bm9uZTstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnQ7ZGlzcGxheTppbmxpbmUtYmxvY2s7d2hpdGUtc3BhY2U6bm93cmFwO3RleHQtZGVjb3JhdGlvbjpub25lO3ZlcnRpY2FsLWFsaWduOmJhc2VsaW5lO3RleHQtYWxpZ246Y2VudGVyO21hcmdpbjowO21pbi13aWR0aDo2NHB4O2xpbmUtaGVpZ2h0OjM2cHg7cGFkZGluZzowIDE2cHg7Ym9yZGVyLXJhZGl1czo0cHg7b3ZlcmZsb3c6dmlzaWJsZTt0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwgMCwgMCk7dHJhbnNpdGlvbjpiYWNrZ3JvdW5kIDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpLGJveC1zaGFkb3cgMjgwbXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKTttaW4td2lkdGg6MDtib3JkZXItcmFkaXVzOjUwJTt3aWR0aDo0MHB4O2hlaWdodDo0MHB4O3BhZGRpbmc6MDtmbGV4LXNocmluazowfS5tYXQtbWluaS1mYWI6Oi1tb3otZm9jdXMtaW5uZXJ7Ym9yZGVyOjB9Lm1hdC1taW5pLWZhYi5tYXQtYnV0dG9uLWRpc2FibGVke2N1cnNvcjpkZWZhdWx0fS5tYXQtbWluaS1mYWIuY2RrLWtleWJvYXJkLWZvY3VzZWQgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheSwubWF0LW1pbmktZmFiLmNkay1wcm9ncmFtLWZvY3VzZWQgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheXtvcGFjaXR5Oi4xMn0ubWF0LW1pbmktZmFiOjotbW96LWZvY3VzLWlubmVye2JvcmRlcjowfS5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZS5tYXQtbWluaS1mYWJ7dHJhbnNpdGlvbjpub25lO2FuaW1hdGlvbjpub25lfS5tYXQtbWluaS1mYWIgLm1hdC1idXR0b24td3JhcHBlcntwYWRkaW5nOjhweCAwO2Rpc3BsYXk6aW5saW5lLWJsb2NrO2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1pY29uLWJ1dHRvbntwYWRkaW5nOjA7bWluLXdpZHRoOjA7d2lkdGg6NDBweDtoZWlnaHQ6NDBweDtmbGV4LXNocmluazowO2xpbmUtaGVpZ2h0OjQwcHg7Ym9yZGVyLXJhZGl1czo1MCV9Lm1hdC1pY29uLWJ1dHRvbiBpLC5tYXQtaWNvbi1idXR0b24gLm1hdC1pY29ue2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1idXR0b24tcmlwcGxlLm1hdC1yaXBwbGUsLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheXt0b3A6MDtsZWZ0OjA7cmlnaHQ6MDtib3R0b206MDtwb3NpdGlvbjphYnNvbHV0ZTtwb2ludGVyLWV2ZW50czpub25lO2JvcmRlci1yYWRpdXM6aW5oZXJpdH0ubWF0LWJ1dHRvbi1yaXBwbGUubWF0LXJpcHBsZTpub3QoOmVtcHR5KXt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKX0ubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5e29wYWNpdHk6MDt0cmFuc2l0aW9uOm9wYWNpdHkgMjAwbXMgY3ViaWMtYmV6aWVyKDAuMzUsIDAsIDAuMjUsIDEpLGJhY2tncm91bmQtY29sb3IgMjAwbXMgY3ViaWMtYmV6aWVyKDAuMzUsIDAsIDAuMjUsIDEpfS5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZSAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5e3RyYW5zaXRpb246bm9uZX0ubWF0LWJ1dHRvbi1yaXBwbGUtcm91bmR7Ym9yZGVyLXJhZGl1czo1MCU7ei1pbmRleDoxfS5tYXQtYnV0dG9uIC5tYXQtYnV0dG9uLXdyYXBwZXI+KiwubWF0LWZsYXQtYnV0dG9uIC5tYXQtYnV0dG9uLXdyYXBwZXI+KiwubWF0LXN0cm9rZWQtYnV0dG9uIC5tYXQtYnV0dG9uLXdyYXBwZXI+KiwubWF0LXJhaXNlZC1idXR0b24gLm1hdC1idXR0b24td3JhcHBlcj4qLC5tYXQtaWNvbi1idXR0b24gLm1hdC1idXR0b24td3JhcHBlcj4qLC5tYXQtZmFiIC5tYXQtYnV0dG9uLXdyYXBwZXI+KiwubWF0LW1pbmktZmFiIC5tYXQtYnV0dG9uLXdyYXBwZXI+Knt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9Lm1hdC1mb3JtLWZpZWxkOm5vdCgubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kpIC5tYXQtZm9ybS1maWVsZC1wcmVmaXggLm1hdC1pY29uLWJ1dHRvbiwubWF0LWZvcm0tZmllbGQ6bm90KC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeSkgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeCAubWF0LWljb24tYnV0dG9ue2Rpc3BsYXk6aW5saW5lLWZsZXg7anVzdGlmeS1jb250ZW50OmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7Zm9udC1zaXplOmluaGVyaXQ7d2lkdGg6Mi41ZW07aGVpZ2h0OjIuNWVtfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1idXR0b24sLmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWZsYXQtYnV0dG9uLC5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1yYWlzZWQtYnV0dG9uLC5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1pY29uLWJ1dHRvbiwuY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtZmFiLC5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1taW5pLWZhYntvdXRsaW5lOnNvbGlkIDFweH0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtYnV0dG9uLWJhc2UuY2RrLWtleWJvYXJkLWZvY3VzZWQsLmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWJ1dHRvbi1iYXNlLmNkay1wcm9ncmFtLWZvY3VzZWR7b3V0bGluZTpzb2xpZCAzcHh9XG4iXX1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmZGfSx7dHlwZTpLaH0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltja119XX1dfSkse3RhYkluZGV4Olt7dHlwZTpSX31dfSk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjbGFzcyBJTHt9SUwuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fElMKX0sSUwuybVtb2Q9Zm8oe3R5cGU6SUx9KSxJTC7JtWluaj1Ebih7aW1wb3J0czpbW2ZMLE5GXSxORl19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKElMLFt7dHlwZTpMXyxhcmdzOlt7aW1wb3J0czpbZkwsTkZdLGV4cG9ydHM6W05MLHpMLE5GXSxkZWNsYXJhdGlvbnM6W05MLHpMXX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnVvKElMLHtkZWNsYXJhdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm5bTkwsekxdfSxpbXBvcnRzOmZ1bmN0aW9uKCl7cmV0dXJuW2ZMLE5GXX0sZXhwb3J0czpmdW5jdGlvbigpe3JldHVybltOTCx6TCxORl19fSk7Y2xhc3MgSEx7fWZ1bmN0aW9uIEZMKHQpe3JldHVybiB0JiYiZnVuY3Rpb24iPT10eXBlb2YgdC5jb25uZWN0fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jbGFzcyBMTCBleHRlbmRzIEhMe2NvbnN0cnVjdG9yKHQpe3N1cGVyKCksdGhpcy5fZGF0YT10fWNvbm5lY3QoKXtyZXR1cm4gTHQodGhpcy5fZGF0YSk/dGhpcy5fZGF0YTp6dCh0aGlzLl9kYXRhKX1kaXNjb25uZWN0KCl7fX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCi8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NsYXNzIEJMe2FwcGx5Q2hhbmdlcyh0LGUsbixvLGkpe3QuZm9yRWFjaE9wZXJhdGlvbigoKHQsbyxhKT0+e2xldCByLHM7aWYobnVsbD09dC5wcmV2aW91c0luZGV4KXtjb25zdCBpPW4odCxvLGEpO3I9ZS5jcmVhdGVFbWJlZGRlZFZpZXcoaS50ZW1wbGF0ZVJlZixpLmNvbnRleHQsaS5pbmRleCkscz0xfWVsc2UgbnVsbD09YT8oZS5yZW1vdmUobykscz0zKToocj1lLmdldChvKSxlLm1vdmUocixhKSxzPTIpO2kmJmkoe2NvbnRleHQ6bnVsbD09cj92b2lkIDA6ci5jb250ZXh0LG9wZXJhdGlvbjpzLHJlY29yZDp0fSl9KSl9ZGV0YWNoKCl7fX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY2xhc3MgVkx7Y29uc3RydWN0b3IoKXt0aGlzLnZpZXdDYWNoZVNpemU9MjAsdGhpcy5fdmlld0NhY2hlPVtdfWFwcGx5Q2hhbmdlcyh0LGUsbixvLGkpe3QuZm9yRWFjaE9wZXJhdGlvbigoKHQsYSxyKT0+e2xldCBzLGw7aWYobnVsbD09dC5wcmV2aW91c0luZGV4KXtzPXRoaXMuX2luc2VydFZpZXcoKCgpPT5uKHQsYSxyKSkscixlLG8odCkpLGw9cz8xOjB9ZWxzZSBudWxsPT1yPyh0aGlzLl9kZXRhY2hBbmRDYWNoZVZpZXcoYSxlKSxsPTMpOihzPXRoaXMuX21vdmVWaWV3KGEscixlLG8odCkpLGw9Mik7aSYmaSh7Y29udGV4dDpudWxsPT1zP3ZvaWQgMDpzLmNvbnRleHQsb3BlcmF0aW9uOmwscmVjb3JkOnR9KX0pKX1kZXRhY2goKXtmb3IoY29uc3QgdCBvZiB0aGlzLl92aWV3Q2FjaGUpdC5kZXN0cm95KCk7dGhpcy5fdmlld0NhY2hlPVtdfV9pbnNlcnRWaWV3KHQsZSxuLG8pe2NvbnN0IGk9dGhpcy5faW5zZXJ0Vmlld0Zyb21DYWNoZShlLG4pO2lmKGkpcmV0dXJuIHZvaWQoaS5jb250ZXh0LiRpbXBsaWNpdD1vKTtjb25zdCBhPXQoKTtyZXR1cm4gbi5jcmVhdGVFbWJlZGRlZFZpZXcoYS50ZW1wbGF0ZVJlZixhLmNvbnRleHQsYS5pbmRleCl9X2RldGFjaEFuZENhY2hlVmlldyh0LGUpe2NvbnN0IG49ZS5kZXRhY2godCk7dGhpcy5fbWF5YmVDYWNoZVZpZXcobixlKX1fbW92ZVZpZXcodCxlLG4sbyl7Y29uc3QgaT1uLmdldCh0KTtyZXR1cm4gbi5tb3ZlKGksZSksaS5jb250ZXh0LiRpbXBsaWNpdD1vLGl9X21heWJlQ2FjaGVWaWV3KHQsZSl7aWYodGhpcy5fdmlld0NhY2hlLmxlbmd0aDx0aGlzLnZpZXdDYWNoZVNpemUpdGhpcy5fdmlld0NhY2hlLnB1c2godCk7ZWxzZXtjb25zdCBuPWUuaW5kZXhPZih0KTstMT09PW4/dC5kZXN0cm95KCk6ZS5yZW1vdmUobil9fV9pbnNlcnRWaWV3RnJvbUNhY2hlKHQsZSl7Y29uc3Qgbj10aGlzLl92aWV3Q2FjaGUucG9wKCk7cmV0dXJuIG4mJmUuaW5zZXJ0KG4sdCksbnx8bnVsbH19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NsYXNzIGpMe2NvbnN0cnVjdG9yKHQ9ITEsZSxuPSEwKXt0aGlzLl9tdWx0aXBsZT10LHRoaXMuX2VtaXRDaGFuZ2VzPW4sdGhpcy5fc2VsZWN0aW9uPW5ldyBTZXQsdGhpcy5fZGVzZWxlY3RlZFRvRW1pdD1bXSx0aGlzLl9zZWxlY3RlZFRvRW1pdD1bXSx0aGlzLmNoYW5nZWQ9bmV3IEIsZSYmZS5sZW5ndGgmJih0P2UuZm9yRWFjaCgodD0+dGhpcy5fbWFya1NlbGVjdGVkKHQpKSk6dGhpcy5fbWFya1NlbGVjdGVkKGVbMF0pLHRoaXMuX3NlbGVjdGVkVG9FbWl0Lmxlbmd0aD0wKX1nZXQgc2VsZWN0ZWQoKXtyZXR1cm4gdGhpcy5fc2VsZWN0ZWR8fCh0aGlzLl9zZWxlY3RlZD1BcnJheS5mcm9tKHRoaXMuX3NlbGVjdGlvbi52YWx1ZXMoKSkpLHRoaXMuX3NlbGVjdGVkfXNlbGVjdCguLi50KXt0aGlzLl92ZXJpZnlWYWx1ZUFzc2lnbm1lbnQodCksdC5mb3JFYWNoKCh0PT50aGlzLl9tYXJrU2VsZWN0ZWQodCkpKSx0aGlzLl9lbWl0Q2hhbmdlRXZlbnQoKX1kZXNlbGVjdCguLi50KXt0aGlzLl92ZXJpZnlWYWx1ZUFzc2lnbm1lbnQodCksdC5mb3JFYWNoKCh0PT50aGlzLl91bm1hcmtTZWxlY3RlZCh0KSkpLHRoaXMuX2VtaXRDaGFuZ2VFdmVudCgpfXRvZ2dsZSh0KXt0aGlzLmlzU2VsZWN0ZWQodCk/dGhpcy5kZXNlbGVjdCh0KTp0aGlzLnNlbGVjdCh0KX1jbGVhcigpe3RoaXMuX3VubWFya0FsbCgpLHRoaXMuX2VtaXRDaGFuZ2VFdmVudCgpfWlzU2VsZWN0ZWQodCl7cmV0dXJuIHRoaXMuX3NlbGVjdGlvbi5oYXModCl9aXNFbXB0eSgpe3JldHVybiAwPT09dGhpcy5fc2VsZWN0aW9uLnNpemV9aGFzVmFsdWUoKXtyZXR1cm4hdGhpcy5pc0VtcHR5KCl9c29ydCh0KXt0aGlzLl9tdWx0aXBsZSYmdGhpcy5zZWxlY3RlZCYmdGhpcy5fc2VsZWN0ZWQuc29ydCh0KX1pc011bHRpcGxlU2VsZWN0aW9uKCl7cmV0dXJuIHRoaXMuX211bHRpcGxlfV9lbWl0Q2hhbmdlRXZlbnQoKXt0aGlzLl9zZWxlY3RlZD1udWxsLCh0aGlzLl9zZWxlY3RlZFRvRW1pdC5sZW5ndGh8fHRoaXMuX2Rlc2VsZWN0ZWRUb0VtaXQubGVuZ3RoKSYmKHRoaXMuY2hhbmdlZC5uZXh0KHtzb3VyY2U6dGhpcyxhZGRlZDp0aGlzLl9zZWxlY3RlZFRvRW1pdCxyZW1vdmVkOnRoaXMuX2Rlc2VsZWN0ZWRUb0VtaXR9KSx0aGlzLl9kZXNlbGVjdGVkVG9FbWl0PVtdLHRoaXMuX3NlbGVjdGVkVG9FbWl0PVtdKX1fbWFya1NlbGVjdGVkKHQpe3RoaXMuaXNTZWxlY3RlZCh0KXx8KHRoaXMuX211bHRpcGxlfHx0aGlzLl91bm1hcmtBbGwoKSx0aGlzLl9zZWxlY3Rpb24uYWRkKHQpLHRoaXMuX2VtaXRDaGFuZ2VzJiZ0aGlzLl9zZWxlY3RlZFRvRW1pdC5wdXNoKHQpKX1fdW5tYXJrU2VsZWN0ZWQodCl7dGhpcy5pc1NlbGVjdGVkKHQpJiYodGhpcy5fc2VsZWN0aW9uLmRlbGV0ZSh0KSx0aGlzLl9lbWl0Q2hhbmdlcyYmdGhpcy5fZGVzZWxlY3RlZFRvRW1pdC5wdXNoKHQpKX1fdW5tYXJrQWxsKCl7dGhpcy5pc0VtcHR5KCl8fHRoaXMuX3NlbGVjdGlvbi5mb3JFYWNoKCh0PT50aGlzLl91bm1hcmtTZWxlY3RlZCh0KSkpfV92ZXJpZnlWYWx1ZUFzc2lnbm1lbnQodCl7aWYodC5sZW5ndGg+MSYmIXRoaXMuX211bHRpcGxlJiYoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkpdGhyb3coZnVuY3Rpb24gZSgpe3JldHVybiBFcnJvcigiQ2Fubm90IHBhc3MgbXVsdGlwbGUgdmFsdWVzIGludG8gU2VsZWN0aW9uTW9kZWwgd2l0aCBzaW5nbGUtdmFsdWUgbW9kZS4iKX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovKSgpfX1jbGFzcyBVTHtjb25zdHJ1Y3Rvcigpe3RoaXMuX2xpc3RlbmVycz1bXX1ub3RpZnkodCxlKXtmb3IobGV0IG4gb2YgdGhpcy5fbGlzdGVuZXJzKW4odCxlKX1saXN0ZW4odCl7cmV0dXJuIHRoaXMuX2xpc3RlbmVycy5wdXNoKHQpLCgpPT57dGhpcy5fbGlzdGVuZXJzPXRoaXMuX2xpc3RlbmVycy5maWx0ZXIoKGU9PnQhPT1lKSl9fW5nT25EZXN0cm95KCl7dGhpcy5fbGlzdGVuZXJzPVtdfX1VTC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8VUwpfSxVTC7JtXByb3Y9U24oe2ZhY3Rvcnk6ZnVuY3Rpb24gdCgpe3JldHVybiBuZXcgVUx9LHRva2VuOlVMLHByb3ZpZGVkSW46InJvb3QifSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihVTCxbe3R5cGU6VW0sYXJnczpbe3Byb3ZpZGVkSW46InJvb3QifV19XSwoZnVuY3Rpb24oKXtyZXR1cm5bXX0pLG51bGwpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNvbnN0IFdMPW5ldyBlcigiX1ZpZXdSZXBlYXRlciIpLEdMPVsiY29udGVudFdyYXBwZXIiXSxZTD1uZXcgZXIoIlZJUlRVQUxfU0NST0xMX1NUUkFURUdZIik7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjbGFzcyBxTHtjb25zdHJ1Y3Rvcih0LGUsbil7dGhpcy5fc2Nyb2xsZWRJbmRleENoYW5nZT1uZXcgQix0aGlzLnNjcm9sbGVkSW5kZXhDaGFuZ2U9dGhpcy5fc2Nyb2xsZWRJbmRleENoYW5nZS5waXBlKHdlKCkpLHRoaXMuX3ZpZXdwb3J0PW51bGwsdGhpcy5faXRlbVNpemU9dCx0aGlzLl9taW5CdWZmZXJQeD1lLHRoaXMuX21heEJ1ZmZlclB4PW59YXR0YWNoKHQpe3RoaXMuX3ZpZXdwb3J0PXQsdGhpcy5fdXBkYXRlVG90YWxDb250ZW50U2l6ZSgpLHRoaXMuX3VwZGF0ZVJlbmRlcmVkUmFuZ2UoKX1kZXRhY2goKXt0aGlzLl9zY3JvbGxlZEluZGV4Q2hhbmdlLmNvbXBsZXRlKCksdGhpcy5fdmlld3BvcnQ9bnVsbH11cGRhdGVJdGVtQW5kQnVmZmVyU2l6ZSh0LGUsbil7aWYobjxlJiYoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkpdGhyb3cgRXJyb3IoIkNESyB2aXJ0dWFsIHNjcm9sbDogbWF4QnVmZmVyUHggbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gbWluQnVmZmVyUHgiKTt0aGlzLl9pdGVtU2l6ZT10LHRoaXMuX21pbkJ1ZmZlclB4PWUsdGhpcy5fbWF4QnVmZmVyUHg9bix0aGlzLl91cGRhdGVUb3RhbENvbnRlbnRTaXplKCksdGhpcy5fdXBkYXRlUmVuZGVyZWRSYW5nZSgpfW9uQ29udGVudFNjcm9sbGVkKCl7dGhpcy5fdXBkYXRlUmVuZGVyZWRSYW5nZSgpfW9uRGF0YUxlbmd0aENoYW5nZWQoKXt0aGlzLl91cGRhdGVUb3RhbENvbnRlbnRTaXplKCksdGhpcy5fdXBkYXRlUmVuZGVyZWRSYW5nZSgpfW9uQ29udGVudFJlbmRlcmVkKCl7fW9uUmVuZGVyZWRPZmZzZXRDaGFuZ2VkKCl7fXNjcm9sbFRvSW5kZXgodCxlKXt0aGlzLl92aWV3cG9ydCYmdGhpcy5fdmlld3BvcnQuc2Nyb2xsVG9PZmZzZXQodCp0aGlzLl9pdGVtU2l6ZSxlKX1fdXBkYXRlVG90YWxDb250ZW50U2l6ZSgpe3RoaXMuX3ZpZXdwb3J0JiZ0aGlzLl92aWV3cG9ydC5zZXRUb3RhbENvbnRlbnRTaXplKHRoaXMuX3ZpZXdwb3J0LmdldERhdGFMZW5ndGgoKSp0aGlzLl9pdGVtU2l6ZSl9X3VwZGF0ZVJlbmRlcmVkUmFuZ2UoKXtpZighdGhpcy5fdmlld3BvcnQpcmV0dXJuO2NvbnN0IHQ9dGhpcy5fdmlld3BvcnQuZ2V0UmVuZGVyZWRSYW5nZSgpLGU9e3N0YXJ0OnQuc3RhcnQsZW5kOnQuZW5kfSxuPXRoaXMuX3ZpZXdwb3J0LmdldFZpZXdwb3J0U2l6ZSgpLG89dGhpcy5fdmlld3BvcnQuZ2V0RGF0YUxlbmd0aCgpO2xldCBpPXRoaXMuX3ZpZXdwb3J0Lm1lYXN1cmVTY3JvbGxPZmZzZXQoKSxhPXRoaXMuX2l0ZW1TaXplPjA/aS90aGlzLl9pdGVtU2l6ZTowO2lmKGUuZW5kPm8pe2NvbnN0IHQ9TWF0aC5jZWlsKG4vdGhpcy5faXRlbVNpemUpLHI9TWF0aC5tYXgoMCxNYXRoLm1pbihhLG8tdCkpO2EhPXImJihhPXIsaT1yKnRoaXMuX2l0ZW1TaXplLGUuc3RhcnQ9TWF0aC5mbG9vcihhKSksZS5lbmQ9TWF0aC5tYXgoMCxNYXRoLm1pbihvLGUuc3RhcnQrdCkpfWNvbnN0IHI9aS1lLnN0YXJ0KnRoaXMuX2l0ZW1TaXplO2lmKHI8dGhpcy5fbWluQnVmZmVyUHgmJjAhPWUuc3RhcnQpe2NvbnN0IHQ9TWF0aC5jZWlsKCh0aGlzLl9tYXhCdWZmZXJQeC1yKS90aGlzLl9pdGVtU2l6ZSk7ZS5zdGFydD1NYXRoLm1heCgwLGUuc3RhcnQtdCksZS5lbmQ9TWF0aC5taW4obyxNYXRoLmNlaWwoYSsobit0aGlzLl9taW5CdWZmZXJQeCkvdGhpcy5faXRlbVNpemUpKX1lbHNle2NvbnN0IHQ9ZS5lbmQqdGhpcy5faXRlbVNpemUtKGkrbik7aWYodDx0aGlzLl9taW5CdWZmZXJQeCYmZS5lbmQhPW8pe2NvbnN0IG49TWF0aC5jZWlsKCh0aGlzLl9tYXhCdWZmZXJQeC10KS90aGlzLl9pdGVtU2l6ZSk7bj4wJiYoZS5lbmQ9TWF0aC5taW4obyxlLmVuZCtuKSxlLnN0YXJ0PU1hdGgubWF4KDAsTWF0aC5mbG9vcihhLXRoaXMuX21pbkJ1ZmZlclB4L3RoaXMuX2l0ZW1TaXplKSkpfX10aGlzLl92aWV3cG9ydC5zZXRSZW5kZXJlZFJhbmdlKGUpLHRoaXMuX3ZpZXdwb3J0LnNldFJlbmRlcmVkQ29udGVudE9mZnNldCh0aGlzLl9pdGVtU2l6ZSplLnN0YXJ0KSx0aGlzLl9zY3JvbGxlZEluZGV4Q2hhbmdlLm5leHQoTWF0aC5mbG9vcihhKSl9fWZ1bmN0aW9uIFpMKHQpe3JldHVybiB0Ll9zY3JvbGxTdHJhdGVneX1jbGFzcyBYTHtjb25zdHJ1Y3Rvcigpe3RoaXMuX2l0ZW1TaXplPTIwLHRoaXMuX21pbkJ1ZmZlclB4PTEwMCx0aGlzLl9tYXhCdWZmZXJQeD0yMDAsdGhpcy5fc2Nyb2xsU3RyYXRlZ3k9bmV3IHFMKHRoaXMuaXRlbVNpemUsdGhpcy5taW5CdWZmZXJQeCx0aGlzLm1heEJ1ZmZlclB4KX1nZXQgaXRlbVNpemUoKXtyZXR1cm4gdGhpcy5faXRlbVNpemV9c2V0IGl0ZW1TaXplKHQpe3RoaXMuX2l0ZW1TaXplPW5IKHQpfWdldCBtaW5CdWZmZXJQeCgpe3JldHVybiB0aGlzLl9taW5CdWZmZXJQeH1zZXQgbWluQnVmZmVyUHgodCl7dGhpcy5fbWluQnVmZmVyUHg9bkgodCl9Z2V0IG1heEJ1ZmZlclB4KCl7cmV0dXJuIHRoaXMuX21heEJ1ZmZlclB4fXNldCBtYXhCdWZmZXJQeCh0KXt0aGlzLl9tYXhCdWZmZXJQeD1uSCh0KX1uZ09uQ2hhbmdlcygpe3RoaXMuX3Njcm9sbFN0cmF0ZWd5LnVwZGF0ZUl0ZW1BbmRCdWZmZXJTaXplKHRoaXMuaXRlbVNpemUsdGhpcy5taW5CdWZmZXJQeCx0aGlzLm1heEJ1ZmZlclB4KX19WEwuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFhMKX0sWEwuybVkaXI9aG8oe3R5cGU6WEwsc2VsZWN0b3JzOltbImNkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydCIsIml0ZW1TaXplIiwiIl1dLGlucHV0czp7aXRlbVNpemU6Iml0ZW1TaXplIixtaW5CdWZmZXJQeDoibWluQnVmZmVyUHgiLG1heEJ1ZmZlclB4OiJtYXhCdWZmZXJQeCJ9LGZlYXR1cmVzOltqaChbe3Byb3ZpZGU6WUwsdXNlRmFjdG9yeTpaTCxkZXBzOlskZSgoKCk9PlhMKSldfV0pLHFvXX0pLFhMLnByb3BEZWNvcmF0b3JzPXtpdGVtU2l6ZTpbe3R5cGU6Ul99XSxtaW5CdWZmZXJQeDpbe3R5cGU6Ul99XSxtYXhCdWZmZXJQeDpbe3R5cGU6Ul99XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihYTCxbe3R5cGU6a18sYXJnczpbe3NlbGVjdG9yOiJjZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnRbaXRlbVNpemVdIixwcm92aWRlcnM6W3twcm92aWRlOllMLHVzZUZhY3Rvcnk6WkwsZGVwczpbJGUoKCgpPT5YTCkpXX1dfV19XSwoZnVuY3Rpb24oKXtyZXR1cm5bXX0pLHtpdGVtU2l6ZTpbe3R5cGU6Ul99XSxtaW5CdWZmZXJQeDpbe3R5cGU6Ul99XSxtYXhCdWZmZXJQeDpbe3R5cGU6Ul99XX0pO2NsYXNzIEtMe2NvbnN0cnVjdG9yKHQsZSxuKXt0aGlzLl9uZ1pvbmU9dCx0aGlzLl9wbGF0Zm9ybT1lLHRoaXMuX3Njcm9sbGVkPW5ldyBCLHRoaXMuX2dsb2JhbFN1YnNjcmlwdGlvbj1udWxsLHRoaXMuX3Njcm9sbGVkQ291bnQ9MCx0aGlzLnNjcm9sbENvbnRhaW5lcnM9bmV3IE1hcCx0aGlzLl9kb2N1bWVudD1ufXJlZ2lzdGVyKHQpe3RoaXMuc2Nyb2xsQ29udGFpbmVycy5oYXModCl8fHRoaXMuc2Nyb2xsQ29udGFpbmVycy5zZXQodCx0LmVsZW1lbnRTY3JvbGxlZCgpLnN1YnNjcmliZSgoKCk9PnRoaXMuX3Njcm9sbGVkLm5leHQodCkpKSl9ZGVyZWdpc3Rlcih0KXtjb25zdCBlPXRoaXMuc2Nyb2xsQ29udGFpbmVycy5nZXQodCk7ZSYmKGUudW5zdWJzY3JpYmUoKSx0aGlzLnNjcm9sbENvbnRhaW5lcnMuZGVsZXRlKHQpKX1zY3JvbGxlZCh0PTIwKXtyZXR1cm4gdGhpcy5fcGxhdGZvcm0uaXNCcm93c2VyP25ldyBUKChlPT57dGhpcy5fZ2xvYmFsU3Vic2NyaXB0aW9ufHx0aGlzLl9hZGRHbG9iYWxMaXN0ZW5lcigpO2NvbnN0IG49dD4wP3RoaXMuX3Njcm9sbGVkLnBpcGUoZ2UodCkpLnN1YnNjcmliZShlKTp0aGlzLl9zY3JvbGxlZC5zdWJzY3JpYmUoZSk7cmV0dXJuIHRoaXMuX3Njcm9sbGVkQ291bnQrKywoKT0+e24udW5zdWJzY3JpYmUoKSx0aGlzLl9zY3JvbGxlZENvdW50LS0sdGhpcy5fc2Nyb2xsZWRDb3VudHx8dGhpcy5fcmVtb3ZlR2xvYmFsTGlzdGVuZXIoKX19KSk6enQoKX1uZ09uRGVzdHJveSgpe3RoaXMuX3JlbW92ZUdsb2JhbExpc3RlbmVyKCksdGhpcy5zY3JvbGxDb250YWluZXJzLmZvckVhY2goKCh0LGUpPT50aGlzLmRlcmVnaXN0ZXIoZSkpKSx0aGlzLl9zY3JvbGxlZC5jb21wbGV0ZSgpfWFuY2VzdG9yU2Nyb2xsZWQodCxlKXtjb25zdCBuPXRoaXMuZ2V0QW5jZXN0b3JTY3JvbGxDb250YWluZXJzKHQpO3JldHVybiB0aGlzLnNjcm9sbGVkKGUpLnBpcGUodWUoKHQ9PiF0fHxuLmluZGV4T2YodCk+LTEpKSl9Z2V0QW5jZXN0b3JTY3JvbGxDb250YWluZXJzKHQpe2NvbnN0IGU9W107cmV0dXJuIHRoaXMuc2Nyb2xsQ29udGFpbmVycy5mb3JFYWNoKCgobixvKT0+e3RoaXMuX3Njcm9sbGFibGVDb250YWluc0VsZW1lbnQobyx0KSYmZS5wdXNoKG8pfSkpLGV9X2dldFdpbmRvdygpe3JldHVybiB0aGlzLl9kb2N1bWVudC5kZWZhdWx0Vmlld3x8d2luZG93fV9zY3JvbGxhYmxlQ29udGFpbnNFbGVtZW50KHQsZSl7bGV0IG49ckgoZSksbz10LmdldEVsZW1lbnRSZWYoKS5uYXRpdmVFbGVtZW50O2Rve2lmKG49PW8pcmV0dXJuITB9d2hpbGUobj1uLnBhcmVudEVsZW1lbnQpO3JldHVybiExfV9hZGRHbG9iYWxMaXN0ZW5lcigpe3RoaXMuX2dsb2JhbFN1YnNjcmlwdGlvbj10aGlzLl9uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCgpPT5sZSh0aGlzLl9nZXRXaW5kb3coKS5kb2N1bWVudCwic2Nyb2xsIikuc3Vic2NyaWJlKCgoKT0+dGhpcy5fc2Nyb2xsZWQubmV4dCgpKSkpKX1fcmVtb3ZlR2xvYmFsTGlzdGVuZXIoKXt0aGlzLl9nbG9iYWxTdWJzY3JpcHRpb24mJih0aGlzLl9nbG9iYWxTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSx0aGlzLl9nbG9iYWxTdWJzY3JpcHRpb249bnVsbCl9fUtMLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxLTCkoVHIobUMpLFRyKGNIKSxUcihzTSw4KSl9LEtMLsm1cHJvdj1Tbih7ZmFjdG9yeTpmdW5jdGlvbiB0KCl7cmV0dXJuIG5ldyBLTChUcihtQyksVHIoY0gpLFRyKHNNLDgpKX0sdG9rZW46S0wscHJvdmlkZWRJbjoicm9vdCJ9KSxLTC5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOm1DfSx7dHlwZTpjSH0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltzTV19XX1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoS0wsW3t0eXBlOlVtLGFyZ3M6W3twcm92aWRlZEluOiJyb290In1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOm1DfSx7dHlwZTpjSH0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltzTV19XX1dfSksbnVsbCk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjbGFzcyBKTHtjb25zdHJ1Y3Rvcih0LGUsbixvKXt0aGlzLmVsZW1lbnRSZWY9dCx0aGlzLnNjcm9sbERpc3BhdGNoZXI9ZSx0aGlzLm5nWm9uZT1uLHRoaXMuZGlyPW8sdGhpcy5fZGVzdHJveWVkPW5ldyBCLHRoaXMuX2VsZW1lbnRTY3JvbGxlZD1uZXcgVCgodD0+dGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCgpPT5sZSh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwic2Nyb2xsIikucGlwZShqZSh0aGlzLl9kZXN0cm95ZWQpKS5zdWJzY3JpYmUodCkpKSkpfW5nT25Jbml0KCl7dGhpcy5zY3JvbGxEaXNwYXRjaGVyLnJlZ2lzdGVyKHRoaXMpfW5nT25EZXN0cm95KCl7dGhpcy5zY3JvbGxEaXNwYXRjaGVyLmRlcmVnaXN0ZXIodGhpcyksdGhpcy5fZGVzdHJveWVkLm5leHQoKSx0aGlzLl9kZXN0cm95ZWQuY29tcGxldGUoKX1lbGVtZW50U2Nyb2xsZWQoKXtyZXR1cm4gdGhpcy5fZWxlbWVudFNjcm9sbGVkfWdldEVsZW1lbnRSZWYoKXtyZXR1cm4gdGhpcy5lbGVtZW50UmVmfXNjcm9sbFRvKHQpe2NvbnN0IGU9dGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsbj10aGlzLmRpciYmInJ0bCI9PXRoaXMuZGlyLnZhbHVlO251bGw9PXQubGVmdCYmKHQubGVmdD1uP3QuZW5kOnQuc3RhcnQpLG51bGw9PXQucmlnaHQmJih0LnJpZ2h0PW4/dC5zdGFydDp0LmVuZCksbnVsbCE9dC5ib3R0b20mJih0LnRvcD1lLnNjcm9sbEhlaWdodC1lLmNsaWVudEhlaWdodC10LmJvdHRvbSksbiYmMCE9X0goKT8obnVsbCE9dC5sZWZ0JiYodC5yaWdodD1lLnNjcm9sbFdpZHRoLWUuY2xpZW50V2lkdGgtdC5sZWZ0KSwyPT1fSCgpP3QubGVmdD10LnJpZ2h0OjE9PV9IKCkmJih0LmxlZnQ9dC5yaWdodD8tdC5yaWdodDp0LnJpZ2h0KSk6bnVsbCE9dC5yaWdodCYmKHQubGVmdD1lLnNjcm9sbFdpZHRoLWUuY2xpZW50V2lkdGgtdC5yaWdodCksdGhpcy5fYXBwbHlTY3JvbGxUb09wdGlvbnModCl9X2FwcGx5U2Nyb2xsVG9PcHRpb25zKHQpe2NvbnN0IGU9dGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7eUgoKT9lLnNjcm9sbFRvKHQpOihudWxsIT10LnRvcCYmKGUuc2Nyb2xsVG9wPXQudG9wKSxudWxsIT10LmxlZnQmJihlLnNjcm9sbExlZnQ9dC5sZWZ0KSl9bWVhc3VyZVNjcm9sbE9mZnNldCh0KXtjb25zdCBlPSJsZWZ0IixuPSJyaWdodCIsbz10aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtpZigidG9wIj09dClyZXR1cm4gby5zY3JvbGxUb3A7aWYoImJvdHRvbSI9PXQpcmV0dXJuIG8uc2Nyb2xsSGVpZ2h0LW8uY2xpZW50SGVpZ2h0LW8uc2Nyb2xsVG9wO2NvbnN0IGk9dGhpcy5kaXImJiJydGwiPT10aGlzLmRpci52YWx1ZTtyZXR1cm4ic3RhcnQiPT10P3Q9aT9uOmU6ImVuZCI9PXQmJih0PWk/ZTpuKSxpJiYyPT1fSCgpP3Q9PWU/by5zY3JvbGxXaWR0aC1vLmNsaWVudFdpZHRoLW8uc2Nyb2xsTGVmdDpvLnNjcm9sbExlZnQ6aSYmMT09X0goKT90PT1lP28uc2Nyb2xsTGVmdCtvLnNjcm9sbFdpZHRoLW8uY2xpZW50V2lkdGg6LW8uc2Nyb2xsTGVmdDp0PT1lP28uc2Nyb2xsTGVmdDpvLnNjcm9sbFdpZHRoLW8uY2xpZW50V2lkdGgtby5zY3JvbGxMZWZ0fX1KTC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8SkwpKGdmKEtoKSxnZihLTCksZ2YobUMpLGdmKHZGLDgpKX0sSkwuybVkaXI9aG8oe3R5cGU6Skwsc2VsZWN0b3JzOltbIiIsImNkay1zY3JvbGxhYmxlIiwiIl0sWyIiLCJjZGtTY3JvbGxhYmxlIiwiIl1dfSksSkwuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpLaH0se3R5cGU6S0x9LHt0eXBlOm1DfSx7dHlwZTp2RixkZWNvcmF0b3JzOlt7dHlwZTpCcn1dfV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihKTCxbe3R5cGU6a18sYXJnczpbe3NlbGVjdG9yOiJbY2RrLXNjcm9sbGFibGVdLCBbY2RrU2Nyb2xsYWJsZV0ifV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6S2h9LHt0eXBlOktMfSx7dHlwZTptQ30se3R5cGU6dkYsZGVjb3JhdG9yczpbe3R5cGU6QnJ9XX1dfSksbnVsbCk7Y2xhc3MgUUx7Y29uc3RydWN0b3IodCxlLG4pe3RoaXMuX3BsYXRmb3JtPXQsdGhpcy5fY2hhbmdlPW5ldyBCLHRoaXMuX2NoYW5nZUxpc3RlbmVyPXQ9Pnt0aGlzLl9jaGFuZ2UubmV4dCh0KX0sdGhpcy5fZG9jdW1lbnQ9bixlLnJ1bk91dHNpZGVBbmd1bGFyKCgoKT0+e2lmKHQuaXNCcm93c2VyKXtjb25zdCB0PXRoaXMuX2dldFdpbmRvdygpO3QuYWRkRXZlbnRMaXN0ZW5lcigicmVzaXplIix0aGlzLl9jaGFuZ2VMaXN0ZW5lciksdC5hZGRFdmVudExpc3RlbmVyKCJvcmllbnRhdGlvbmNoYW5nZSIsdGhpcy5fY2hhbmdlTGlzdGVuZXIpfXRoaXMuY2hhbmdlKCkuc3Vic2NyaWJlKCgoKT0+dGhpcy5fdmlld3BvcnRTaXplPW51bGwpKX0pKX1uZ09uRGVzdHJveSgpe2lmKHRoaXMuX3BsYXRmb3JtLmlzQnJvd3Nlcil7Y29uc3QgdD10aGlzLl9nZXRXaW5kb3coKTt0LnJlbW92ZUV2ZW50TGlzdGVuZXIoInJlc2l6ZSIsdGhpcy5fY2hhbmdlTGlzdGVuZXIpLHQucmVtb3ZlRXZlbnRMaXN0ZW5lcigib3JpZW50YXRpb25jaGFuZ2UiLHRoaXMuX2NoYW5nZUxpc3RlbmVyKX10aGlzLl9jaGFuZ2UuY29tcGxldGUoKX1nZXRWaWV3cG9ydFNpemUoKXt0aGlzLl92aWV3cG9ydFNpemV8fHRoaXMuX3VwZGF0ZVZpZXdwb3J0U2l6ZSgpO2NvbnN0IHQ9e3dpZHRoOnRoaXMuX3ZpZXdwb3J0U2l6ZS53aWR0aCxoZWlnaHQ6dGhpcy5fdmlld3BvcnRTaXplLmhlaWdodH07cmV0dXJuIHRoaXMuX3BsYXRmb3JtLmlzQnJvd3Nlcnx8KHRoaXMuX3ZpZXdwb3J0U2l6ZT1udWxsKSx0fWdldFZpZXdwb3J0UmVjdCgpe2NvbnN0IHQ9dGhpcy5nZXRWaWV3cG9ydFNjcm9sbFBvc2l0aW9uKCkse3dpZHRoOmUsaGVpZ2h0Om59PXRoaXMuZ2V0Vmlld3BvcnRTaXplKCk7cmV0dXJue3RvcDp0LnRvcCxsZWZ0OnQubGVmdCxib3R0b206dC50b3ArbixyaWdodDp0LmxlZnQrZSxoZWlnaHQ6bix3aWR0aDplfX1nZXRWaWV3cG9ydFNjcm9sbFBvc2l0aW9uKCl7aWYoIXRoaXMuX3BsYXRmb3JtLmlzQnJvd3NlcilyZXR1cm57dG9wOjAsbGVmdDowfTtjb25zdCB0PXRoaXMuX2RvY3VtZW50LGU9dGhpcy5fZ2V0V2luZG93KCksbj10LmRvY3VtZW50RWxlbWVudCxvPW4uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7cmV0dXJue3RvcDotby50b3B8fHQuYm9keS5zY3JvbGxUb3B8fGUuc2Nyb2xsWXx8bi5zY3JvbGxUb3B8fDAsbGVmdDotby5sZWZ0fHx0LmJvZHkuc2Nyb2xsTGVmdHx8ZS5zY3JvbGxYfHxuLnNjcm9sbExlZnR8fDB9fWNoYW5nZSh0PTIwKXtyZXR1cm4gdD4wP3RoaXMuX2NoYW5nZS5waXBlKGdlKHQpKTp0aGlzLl9jaGFuZ2V9X2dldFdpbmRvdygpe3JldHVybiB0aGlzLl9kb2N1bWVudC5kZWZhdWx0Vmlld3x8d2luZG93fV91cGRhdGVWaWV3cG9ydFNpemUoKXtjb25zdCB0PXRoaXMuX2dldFdpbmRvdygpO3RoaXMuX3ZpZXdwb3J0U2l6ZT10aGlzLl9wbGF0Zm9ybS5pc0Jyb3dzZXI/e3dpZHRoOnQuaW5uZXJXaWR0aCxoZWlnaHQ6dC5pbm5lckhlaWdodH06e3dpZHRoOjAsaGVpZ2h0OjB9fX1RTC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8UUwpKFRyKGNIKSxUcihtQyksVHIoc00sOCkpfSxRTC7JtXByb3Y9U24oe2ZhY3Rvcnk6ZnVuY3Rpb24gdCgpe3JldHVybiBuZXcgUUwoVHIoY0gpLFRyKG1DKSxUcihzTSw4KSl9LHRva2VuOlFMLHByb3ZpZGVkSW46InJvb3QifSksUUwuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpjSH0se3R5cGU6bUN9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpbc01dfV19XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKFFMLFt7dHlwZTpVbSxhcmdzOlt7cHJvdmlkZWRJbjoicm9vdCJ9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpjSH0se3R5cGU6bUN9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpbc01dfV19XX0pLG51bGwpO2NvbnN0ICRMPSJ1bmRlZmluZWQiIT10eXBlb2YgcmVxdWVzdEFuaW1hdGlvbkZyYW1lP2N0Om90O2NsYXNzIHRCIGV4dGVuZHMgSkx7Y29uc3RydWN0b3IodCxlLG4sbyxpLGEscil7aWYoc3VwZXIodCxhLG4saSksdGhpcy5lbGVtZW50UmVmPXQsdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWY9ZSx0aGlzLl9zY3JvbGxTdHJhdGVneT1vLHRoaXMuX2RldGFjaGVkU3ViamVjdD1uZXcgQix0aGlzLl9yZW5kZXJlZFJhbmdlU3ViamVjdD1uZXcgQix0aGlzLl9vcmllbnRhdGlvbj0idmVydGljYWwiLHRoaXMuX2FwcGVuZE9ubHk9ITEsdGhpcy5zY3JvbGxlZEluZGV4Q2hhbmdlPW5ldyBUKCh0PT50aGlzLl9zY3JvbGxTdHJhdGVneS5zY3JvbGxlZEluZGV4Q2hhbmdlLnN1YnNjcmliZSgoZT0+UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKCk9PnRoaXMubmdab25lLnJ1bigoKCk9PnQubmV4dChlKSkpKSkpKSkpLHRoaXMucmVuZGVyZWRSYW5nZVN0cmVhbT10aGlzLl9yZW5kZXJlZFJhbmdlU3ViamVjdCx0aGlzLl90b3RhbENvbnRlbnRTaXplPTAsdGhpcy5fdG90YWxDb250ZW50V2lkdGg9IiIsdGhpcy5fdG90YWxDb250ZW50SGVpZ2h0PSIiLHRoaXMuX3JlbmRlcmVkUmFuZ2U9e3N0YXJ0OjAsZW5kOjB9LHRoaXMuX2RhdGFMZW5ndGg9MCx0aGlzLl92aWV3cG9ydFNpemU9MCx0aGlzLl9yZW5kZXJlZENvbnRlbnRPZmZzZXQ9MCx0aGlzLl9yZW5kZXJlZENvbnRlbnRPZmZzZXROZWVkc1Jld3JpdGU9ITEsdGhpcy5faXNDaGFuZ2VEZXRlY3Rpb25QZW5kaW5nPSExLHRoaXMuX3J1bkFmdGVyQ2hhbmdlRGV0ZWN0aW9uPVtdLHRoaXMuX3ZpZXdwb3J0Q2hhbmdlcz11LkVNUFRZLCFvJiYoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkpdGhyb3cgRXJyb3IoJ0Vycm9yOiBjZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnQgcmVxdWlyZXMgdGhlICJpdGVtU2l6ZSIgcHJvcGVydHkgdG8gYmUgc2V0LicpO3RoaXMuX3ZpZXdwb3J0Q2hhbmdlcz1yLmNoYW5nZSgpLnN1YnNjcmliZSgoKCk9Pnt0aGlzLmNoZWNrVmlld3BvcnRTaXplKCl9KSl9Z2V0IG9yaWVudGF0aW9uKCl7cmV0dXJuIHRoaXMuX29yaWVudGF0aW9ufXNldCBvcmllbnRhdGlvbih0KXt0aGlzLl9vcmllbnRhdGlvbiE9PXQmJih0aGlzLl9vcmllbnRhdGlvbj10LHRoaXMuX2NhbGN1bGF0ZVNwYWNlclNpemUoKSl9Z2V0IGFwcGVuZE9ubHkoKXtyZXR1cm4gdGhpcy5fYXBwZW5kT25seX1zZXQgYXBwZW5kT25seSh0KXt0aGlzLl9hcHBlbmRPbmx5PWVIKHQpfW5nT25Jbml0KCl7c3VwZXIubmdPbkluaXQoKSx0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKCk9PlByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCgpPT57dGhpcy5fbWVhc3VyZVZpZXdwb3J0U2l6ZSgpLHRoaXMuX3Njcm9sbFN0cmF0ZWd5LmF0dGFjaCh0aGlzKSx0aGlzLmVsZW1lbnRTY3JvbGxlZCgpLnBpcGUoQmUobnVsbCksZ2UoMCwkTCkpLnN1YnNjcmliZSgoKCk9PnRoaXMuX3Njcm9sbFN0cmF0ZWd5Lm9uQ29udGVudFNjcm9sbGVkKCkpKSx0aGlzLl9tYXJrQ2hhbmdlRGV0ZWN0aW9uTmVlZGVkKCl9KSkpKX1uZ09uRGVzdHJveSgpe3RoaXMuZGV0YWNoKCksdGhpcy5fc2Nyb2xsU3RyYXRlZ3kuZGV0YWNoKCksdGhpcy5fcmVuZGVyZWRSYW5nZVN1YmplY3QuY29tcGxldGUoKSx0aGlzLl9kZXRhY2hlZFN1YmplY3QuY29tcGxldGUoKSx0aGlzLl92aWV3cG9ydENoYW5nZXMudW5zdWJzY3JpYmUoKSxzdXBlci5uZ09uRGVzdHJveSgpfWF0dGFjaCh0KXtpZih0aGlzLl9mb3JPZiYmKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpKXRocm93IEVycm9yKCJDZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnQgaXMgYWxyZWFkeSBhdHRhY2hlZC4iKTt0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKCk9Pnt0aGlzLl9mb3JPZj10LHRoaXMuX2Zvck9mLmRhdGFTdHJlYW0ucGlwZShqZSh0aGlzLl9kZXRhY2hlZFN1YmplY3QpKS5zdWJzY3JpYmUoKHQ9Pntjb25zdCBlPXQubGVuZ3RoO2UhPT10aGlzLl9kYXRhTGVuZ3RoJiYodGhpcy5fZGF0YUxlbmd0aD1lLHRoaXMuX3Njcm9sbFN0cmF0ZWd5Lm9uRGF0YUxlbmd0aENoYW5nZWQoKSksdGhpcy5fZG9DaGFuZ2VEZXRlY3Rpb24oKX0pKX0pKX1kZXRhY2goKXt0aGlzLl9mb3JPZj1udWxsLHRoaXMuX2RldGFjaGVkU3ViamVjdC5uZXh0KCl9Z2V0RGF0YUxlbmd0aCgpe3JldHVybiB0aGlzLl9kYXRhTGVuZ3RofWdldFZpZXdwb3J0U2l6ZSgpe3JldHVybiB0aGlzLl92aWV3cG9ydFNpemV9Z2V0UmVuZGVyZWRSYW5nZSgpe3JldHVybiB0aGlzLl9yZW5kZXJlZFJhbmdlfXNldFRvdGFsQ29udGVudFNpemUodCl7dGhpcy5fdG90YWxDb250ZW50U2l6ZSE9PXQmJih0aGlzLl90b3RhbENvbnRlbnRTaXplPXQsdGhpcy5fY2FsY3VsYXRlU3BhY2VyU2l6ZSgpLHRoaXMuX21hcmtDaGFuZ2VEZXRlY3Rpb25OZWVkZWQoKSl9c2V0UmVuZGVyZWRSYW5nZSh0KXsoCi8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpmdW5jdGlvbiBlKHQsbil7cmV0dXJuIHQuc3RhcnQ9PW4uc3RhcnQmJnQuZW5kPT1uLmVuZH0pKHRoaXMuX3JlbmRlcmVkUmFuZ2UsdCl8fCh0aGlzLmFwcGVuZE9ubHkmJih0PXtzdGFydDowLGVuZDpNYXRoLm1heCh0aGlzLl9yZW5kZXJlZFJhbmdlLmVuZCx0LmVuZCl9KSx0aGlzLl9yZW5kZXJlZFJhbmdlU3ViamVjdC5uZXh0KHRoaXMuX3JlbmRlcmVkUmFuZ2U9dCksdGhpcy5fbWFya0NoYW5nZURldGVjdGlvbk5lZWRlZCgoKCk9PnRoaXMuX3Njcm9sbFN0cmF0ZWd5Lm9uQ29udGVudFJlbmRlcmVkKCkpKSl9Z2V0T2Zmc2V0VG9SZW5kZXJlZENvbnRlbnRTdGFydCgpe3JldHVybiB0aGlzLl9yZW5kZXJlZENvbnRlbnRPZmZzZXROZWVkc1Jld3JpdGU/bnVsbDp0aGlzLl9yZW5kZXJlZENvbnRlbnRPZmZzZXR9c2V0UmVuZGVyZWRDb250ZW50T2Zmc2V0KHQsZT0idG8tc3RhcnQiKXtjb25zdCBuPSJob3Jpem9udGFsIj09dGhpcy5vcmllbnRhdGlvbixvPW4/IlgiOiJZIjtsZXQgaT1gdHJhbnNsYXRlJHtvfSgke051bWJlcigobiYmKHRoaXMuZGlyJiYicnRsIj09dGhpcy5kaXIudmFsdWUpPy0xOjEpKnQpfXB4KWA7dGhpcy5fcmVuZGVyZWRDb250ZW50T2Zmc2V0PXQsInRvLWVuZCI9PT1lJiYoaSs9YCB0cmFuc2xhdGUke299KC0xMDAlKWAsdGhpcy5fcmVuZGVyZWRDb250ZW50T2Zmc2V0TmVlZHNSZXdyaXRlPSEwKSx0aGlzLl9yZW5kZXJlZENvbnRlbnRUcmFuc2Zvcm0hPWkmJih0aGlzLl9yZW5kZXJlZENvbnRlbnRUcmFuc2Zvcm09aSx0aGlzLl9tYXJrQ2hhbmdlRGV0ZWN0aW9uTmVlZGVkKCgoKT0+e3RoaXMuX3JlbmRlcmVkQ29udGVudE9mZnNldE5lZWRzUmV3cml0ZT8odGhpcy5fcmVuZGVyZWRDb250ZW50T2Zmc2V0LT10aGlzLm1lYXN1cmVSZW5kZXJlZENvbnRlbnRTaXplKCksdGhpcy5fcmVuZGVyZWRDb250ZW50T2Zmc2V0TmVlZHNSZXdyaXRlPSExLHRoaXMuc2V0UmVuZGVyZWRDb250ZW50T2Zmc2V0KHRoaXMuX3JlbmRlcmVkQ29udGVudE9mZnNldCkpOnRoaXMuX3Njcm9sbFN0cmF0ZWd5Lm9uUmVuZGVyZWRPZmZzZXRDaGFuZ2VkKCl9KSkpfXNjcm9sbFRvT2Zmc2V0KHQsZT0iYXV0byIpe2NvbnN0IG49e2JlaGF2aW9yOmV9OyJob3Jpem9udGFsIj09PXRoaXMub3JpZW50YXRpb24/bi5zdGFydD10Om4udG9wPXQsdGhpcy5zY3JvbGxUbyhuKX1zY3JvbGxUb0luZGV4KHQsZT0iYXV0byIpe3RoaXMuX3Njcm9sbFN0cmF0ZWd5LnNjcm9sbFRvSW5kZXgodCxlKX1tZWFzdXJlU2Nyb2xsT2Zmc2V0KHQpe3JldHVybiBzdXBlci5tZWFzdXJlU2Nyb2xsT2Zmc2V0KHR8fCgiaG9yaXpvbnRhbCI9PT10aGlzLm9yaWVudGF0aW9uPyJzdGFydCI6InRvcCIpKX1tZWFzdXJlUmVuZGVyZWRDb250ZW50U2l6ZSgpe2NvbnN0IHQ9dGhpcy5fY29udGVudFdyYXBwZXIubmF0aXZlRWxlbWVudDtyZXR1cm4iaG9yaXpvbnRhbCI9PT10aGlzLm9yaWVudGF0aW9uP3Qub2Zmc2V0V2lkdGg6dC5vZmZzZXRIZWlnaHR9bWVhc3VyZVJhbmdlU2l6ZSh0KXtyZXR1cm4gdGhpcy5fZm9yT2Y/dGhpcy5fZm9yT2YubWVhc3VyZVJhbmdlU2l6ZSh0LHRoaXMub3JpZW50YXRpb24pOjB9Y2hlY2tWaWV3cG9ydFNpemUoKXt0aGlzLl9tZWFzdXJlVmlld3BvcnRTaXplKCksdGhpcy5fc2Nyb2xsU3RyYXRlZ3kub25EYXRhTGVuZ3RoQ2hhbmdlZCgpfV9tZWFzdXJlVmlld3BvcnRTaXplKCl7Y29uc3QgdD10aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDt0aGlzLl92aWV3cG9ydFNpemU9Imhvcml6b250YWwiPT09dGhpcy5vcmllbnRhdGlvbj90LmNsaWVudFdpZHRoOnQuY2xpZW50SGVpZ2h0fV9tYXJrQ2hhbmdlRGV0ZWN0aW9uTmVlZGVkKHQpe3QmJnRoaXMuX3J1bkFmdGVyQ2hhbmdlRGV0ZWN0aW9uLnB1c2godCksdGhpcy5faXNDaGFuZ2VEZXRlY3Rpb25QZW5kaW5nfHwodGhpcy5faXNDaGFuZ2VEZXRlY3Rpb25QZW5kaW5nPSEwLHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgoKT0+UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKCk9Pnt0aGlzLl9kb0NoYW5nZURldGVjdGlvbigpfSkpKSkpfV9kb0NoYW5nZURldGVjdGlvbigpe3RoaXMuX2lzQ2hhbmdlRGV0ZWN0aW9uUGVuZGluZz0hMSx0aGlzLl9jb250ZW50V3JhcHBlci5uYXRpdmVFbGVtZW50LnN0eWxlLnRyYW5zZm9ybT10aGlzLl9yZW5kZXJlZENvbnRlbnRUcmFuc2Zvcm0sdGhpcy5uZ1pvbmUucnVuKCgoKT0+dGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCkpKTtjb25zdCB0PXRoaXMuX3J1bkFmdGVyQ2hhbmdlRGV0ZWN0aW9uO3RoaXMuX3J1bkFmdGVyQ2hhbmdlRGV0ZWN0aW9uPVtdO2Zvcihjb25zdCBlIG9mIHQpZSgpfV9jYWxjdWxhdGVTcGFjZXJTaXplKCl7dGhpcy5fdG90YWxDb250ZW50SGVpZ2h0PSJob3Jpem9udGFsIj09PXRoaXMub3JpZW50YXRpb24/IiI6YCR7dGhpcy5fdG90YWxDb250ZW50U2l6ZX1weGAsdGhpcy5fdG90YWxDb250ZW50V2lkdGg9Imhvcml6b250YWwiPT09dGhpcy5vcmllbnRhdGlvbj9gJHt0aGlzLl90b3RhbENvbnRlbnRTaXplfXB4YDoiIn19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpmdW5jdGlvbiBlQih0LGUsbil7aWYoIW4uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KXJldHVybiAwO2NvbnN0IG89bi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtyZXR1cm4iaG9yaXpvbnRhbCI9PT10PyJzdGFydCI9PT1lP28ubGVmdDpvLnJpZ2h0OiJzdGFydCI9PT1lP28udG9wOm8uYm90dG9tfXRCLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHx0QikoZ2YoS2gpLGdmKE9iKSxnZihtQyksZ2YoWUwsOCksZ2YodkYsOCksZ2YoS0wpLGdmKFFMKSl9LHRCLsm1Y21wPXNvKHt0eXBlOnRCLHNlbGVjdG9yczpbWyJjZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnQiXV0sdmlld1F1ZXJ5OmZ1bmN0aW9uIHQoZSxuKXtpZigxJmUmJlZ5KEdMLDcpLDImZSl7bGV0IHQ7QnkodD1VeSgpKSYmKG4uX2NvbnRlbnRXcmFwcGVyPXQuZmlyc3QpfX0saG9zdEF0dHJzOlsxLCJjZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnQiXSxob3N0VmFyczo0LGhvc3RCaW5kaW5nczpmdW5jdGlvbiB0KGUsbil7MiZlJiZjdSgiY2RrLXZpcnR1YWwtc2Nyb2xsLW9yaWVudGF0aW9uLWhvcml6b250YWwiLCJob3Jpem9udGFsIj09PW4ub3JpZW50YXRpb24pKCJjZGstdmlydHVhbC1zY3JvbGwtb3JpZW50YXRpb24tdmVydGljYWwiLCJob3Jpem9udGFsIiE9PW4ub3JpZW50YXRpb24pfSxpbnB1dHM6e29yaWVudGF0aW9uOiJvcmllbnRhdGlvbiIsYXBwZW5kT25seToiYXBwZW5kT25seSJ9LG91dHB1dHM6e3Njcm9sbGVkSW5kZXhDaGFuZ2U6InNjcm9sbGVkSW5kZXhDaGFuZ2UifSxmZWF0dXJlczpbamgoW3twcm92aWRlOkpMLHVzZUV4aXN0aW5nOnRCfV0pLFFwXSxuZ0NvbnRlbnRTZWxlY3RvcnM6WyIqIl0sZGVjbHM6NCx2YXJzOjQsY29uc3RzOltbMSwiY2RrLXZpcnR1YWwtc2Nyb2xsLWNvbnRlbnQtd3JhcHBlciJdLFsiY29udGVudFdyYXBwZXIiLCIiXSxbMSwiY2RrLXZpcnR1YWwtc2Nyb2xsLXNwYWNlciJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoSGYoKSxDZigwLCJkaXYiLDAsMSksRmYoMiksTWYoKSx2ZigzLCJkaXYiLDIpKSwyJmUmJihEYygzKSxsdSgid2lkdGgiLG4uX3RvdGFsQ29udGVudFdpZHRoKSgiaGVpZ2h0IixuLl90b3RhbENvbnRlbnRIZWlnaHQpKX0sc3R5bGVzOlsiY2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0e2Rpc3BsYXk6YmxvY2s7cG9zaXRpb246cmVsYXRpdmU7b3ZlcmZsb3c6YXV0bztjb250YWluOnN0cmljdDt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKTt3aWxsLWNoYW5nZTpzY3JvbGwtcG9zaXRpb247LXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6dG91Y2h9LmNkay12aXJ0dWFsLXNjcm9sbC1jb250ZW50LXdyYXBwZXJ7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7bGVmdDowO2NvbnRhaW46Y29udGVudH1bZGlyPXJ0bF0gLmNkay12aXJ0dWFsLXNjcm9sbC1jb250ZW50LXdyYXBwZXJ7cmlnaHQ6MDtsZWZ0OmF1dG99LmNkay12aXJ0dWFsLXNjcm9sbC1vcmllbnRhdGlvbi1ob3Jpem9udGFsIC5jZGstdmlydHVhbC1zY3JvbGwtY29udGVudC13cmFwcGVye21pbi1oZWlnaHQ6MTAwJX0uY2RrLXZpcnR1YWwtc2Nyb2xsLW9yaWVudGF0aW9uLWhvcml6b250YWwgLmNkay12aXJ0dWFsLXNjcm9sbC1jb250ZW50LXdyYXBwZXI+ZGw6bm90KFtjZGtWaXJ0dWFsRm9yXSksLmNkay12aXJ0dWFsLXNjcm9sbC1vcmllbnRhdGlvbi1ob3Jpem9udGFsIC5jZGstdmlydHVhbC1zY3JvbGwtY29udGVudC13cmFwcGVyPm9sOm5vdChbY2RrVmlydHVhbEZvcl0pLC5jZGstdmlydHVhbC1zY3JvbGwtb3JpZW50YXRpb24taG9yaXpvbnRhbCAuY2RrLXZpcnR1YWwtc2Nyb2xsLWNvbnRlbnQtd3JhcHBlcj50YWJsZTpub3QoW2Nka1ZpcnR1YWxGb3JdKSwuY2RrLXZpcnR1YWwtc2Nyb2xsLW9yaWVudGF0aW9uLWhvcml6b250YWwgLmNkay12aXJ0dWFsLXNjcm9sbC1jb250ZW50LXdyYXBwZXI+dWw6bm90KFtjZGtWaXJ0dWFsRm9yXSl7cGFkZGluZy1sZWZ0OjA7cGFkZGluZy1yaWdodDowO21hcmdpbi1sZWZ0OjA7bWFyZ2luLXJpZ2h0OjA7Ym9yZGVyLWxlZnQtd2lkdGg6MDtib3JkZXItcmlnaHQtd2lkdGg6MDtvdXRsaW5lOm5vbmV9LmNkay12aXJ0dWFsLXNjcm9sbC1vcmllbnRhdGlvbi12ZXJ0aWNhbCAuY2RrLXZpcnR1YWwtc2Nyb2xsLWNvbnRlbnQtd3JhcHBlcnttaW4td2lkdGg6MTAwJX0uY2RrLXZpcnR1YWwtc2Nyb2xsLW9yaWVudGF0aW9uLXZlcnRpY2FsIC5jZGstdmlydHVhbC1zY3JvbGwtY29udGVudC13cmFwcGVyPmRsOm5vdChbY2RrVmlydHVhbEZvcl0pLC5jZGstdmlydHVhbC1zY3JvbGwtb3JpZW50YXRpb24tdmVydGljYWwgLmNkay12aXJ0dWFsLXNjcm9sbC1jb250ZW50LXdyYXBwZXI+b2w6bm90KFtjZGtWaXJ0dWFsRm9yXSksLmNkay12aXJ0dWFsLXNjcm9sbC1vcmllbnRhdGlvbi12ZXJ0aWNhbCAuY2RrLXZpcnR1YWwtc2Nyb2xsLWNvbnRlbnQtd3JhcHBlcj50YWJsZTpub3QoW2Nka1ZpcnR1YWxGb3JdKSwuY2RrLXZpcnR1YWwtc2Nyb2xsLW9yaWVudGF0aW9uLXZlcnRpY2FsIC5jZGstdmlydHVhbC1zY3JvbGwtY29udGVudC13cmFwcGVyPnVsOm5vdChbY2RrVmlydHVhbEZvcl0pe3BhZGRpbmctdG9wOjA7cGFkZGluZy1ib3R0b206MDttYXJnaW4tdG9wOjA7bWFyZ2luLWJvdHRvbTowO2JvcmRlci10b3Atd2lkdGg6MDtib3JkZXItYm90dG9tLXdpZHRoOjA7b3V0bGluZTpub25lfS5jZGstdmlydHVhbC1zY3JvbGwtc3BhY2Vye3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2xlZnQ6MDtoZWlnaHQ6MXB4O3dpZHRoOjFweDt0cmFuc2Zvcm0tb3JpZ2luOjAgMH1bZGlyPXJ0bF0gLmNkay12aXJ0dWFsLXNjcm9sbC1zcGFjZXJ7cmlnaHQ6MDtsZWZ0OmF1dG87dHJhbnNmb3JtLW9yaWdpbjoxMDAlIDB9XG4iXSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KSx0Qi5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOktofSx7dHlwZTpPYn0se3R5cGU6bUN9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpbWUxdfV19LHt0eXBlOnZGLGRlY29yYXRvcnM6W3t0eXBlOkJyfV19LHt0eXBlOktMfSx7dHlwZTpRTH1dLHRCLnByb3BEZWNvcmF0b3JzPXtvcmllbnRhdGlvbjpbe3R5cGU6Ul99XSxhcHBlbmRPbmx5Olt7dHlwZTpSX31dLHNjcm9sbGVkSW5kZXhDaGFuZ2U6W3t0eXBlOkVffV0sX2NvbnRlbnRXcmFwcGVyOlt7dHlwZTphcixhcmdzOlsiY29udGVudFdyYXBwZXIiLHtzdGF0aWM6ITB9XX1dfSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKHRCLFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6ImNkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydCIsdGVtcGxhdGU6J1x4M2MhLS1cbiAgV3JhcCB0aGUgcmVuZGVyZWQgY29udGVudCBpbiBhbiBlbGVtZW50IHRoYXQgd2lsbCBiZSB1c2VkIHRvIG9mZnNldCBpdCBiYXNlZCBvbiB0aGUgc2Nyb2xsXG4gIHBvc2l0aW9uLlxuLS1ceDNlXG48ZGl2ICNjb250ZW50V3JhcHBlciBjbGFzcz0iY2RrLXZpcnR1YWwtc2Nyb2xsLWNvbnRlbnQtd3JhcHBlciI+XG4gIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbjwvZGl2PlxuXHgzYyEtLVxuICBTcGFjZXIgdXNlZCB0byBmb3JjZSB0aGUgc2Nyb2xsaW5nIGNvbnRhaW5lciB0byB0aGUgY29ycmVjdCBzaXplIGZvciB0aGUgKnRvdGFsKiBudW1iZXIgb2YgaXRlbXNcbiAgc28gdGhhdCB0aGUgc2Nyb2xsYmFyIGNhcHR1cmVzIHRoZSBzaXplIG9mIHRoZSBlbnRpcmUgZGF0YSBzZXQuXG4tLVx4M2VcbjxkaXYgY2xhc3M9ImNkay12aXJ0dWFsLXNjcm9sbC1zcGFjZXIiXG4gICAgIFtzdHlsZS53aWR0aF09Il90b3RhbENvbnRlbnRXaWR0aCIgW3N0eWxlLmhlaWdodF09Il90b3RhbENvbnRlbnRIZWlnaHQiPjwvZGl2PlxuJyxob3N0OntjbGFzczoiY2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0IiwiW2NsYXNzLmNkay12aXJ0dWFsLXNjcm9sbC1vcmllbnRhdGlvbi1ob3Jpem9udGFsXSI6J29yaWVudGF0aW9uID09PSAiaG9yaXpvbnRhbCInLCJbY2xhc3MuY2RrLXZpcnR1YWwtc2Nyb2xsLW9yaWVudGF0aW9uLXZlcnRpY2FsXSI6J29yaWVudGF0aW9uICE9PSAiaG9yaXpvbnRhbCInfSxlbmNhcHN1bGF0aW9uOlduLk5vbmUsY2hhbmdlRGV0ZWN0aW9uOmpuLk9uUHVzaCxwcm92aWRlcnM6W3twcm92aWRlOkpMLHVzZUV4aXN0aW5nOnRCfV0sc3R5bGVzOlsiY2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0e2Rpc3BsYXk6YmxvY2s7cG9zaXRpb246cmVsYXRpdmU7b3ZlcmZsb3c6YXV0bztjb250YWluOnN0cmljdDt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKTt3aWxsLWNoYW5nZTpzY3JvbGwtcG9zaXRpb247LXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6dG91Y2h9LmNkay12aXJ0dWFsLXNjcm9sbC1jb250ZW50LXdyYXBwZXJ7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7bGVmdDowO2NvbnRhaW46Y29udGVudH1bZGlyPXJ0bF0gLmNkay12aXJ0dWFsLXNjcm9sbC1jb250ZW50LXdyYXBwZXJ7cmlnaHQ6MDtsZWZ0OmF1dG99LmNkay12aXJ0dWFsLXNjcm9sbC1vcmllbnRhdGlvbi1ob3Jpem9udGFsIC5jZGstdmlydHVhbC1zY3JvbGwtY29udGVudC13cmFwcGVye21pbi1oZWlnaHQ6MTAwJX0uY2RrLXZpcnR1YWwtc2Nyb2xsLW9yaWVudGF0aW9uLWhvcml6b250YWwgLmNkay12aXJ0dWFsLXNjcm9sbC1jb250ZW50LXdyYXBwZXI+ZGw6bm90KFtjZGtWaXJ0dWFsRm9yXSksLmNkay12aXJ0dWFsLXNjcm9sbC1vcmllbnRhdGlvbi1ob3Jpem9udGFsIC5jZGstdmlydHVhbC1zY3JvbGwtY29udGVudC13cmFwcGVyPm9sOm5vdChbY2RrVmlydHVhbEZvcl0pLC5jZGstdmlydHVhbC1zY3JvbGwtb3JpZW50YXRpb24taG9yaXpvbnRhbCAuY2RrLXZpcnR1YWwtc2Nyb2xsLWNvbnRlbnQtd3JhcHBlcj50YWJsZTpub3QoW2Nka1ZpcnR1YWxGb3JdKSwuY2RrLXZpcnR1YWwtc2Nyb2xsLW9yaWVudGF0aW9uLWhvcml6b250YWwgLmNkay12aXJ0dWFsLXNjcm9sbC1jb250ZW50LXdyYXBwZXI+dWw6bm90KFtjZGtWaXJ0dWFsRm9yXSl7cGFkZGluZy1sZWZ0OjA7cGFkZGluZy1yaWdodDowO21hcmdpbi1sZWZ0OjA7bWFyZ2luLXJpZ2h0OjA7Ym9yZGVyLWxlZnQtd2lkdGg6MDtib3JkZXItcmlnaHQtd2lkdGg6MDtvdXRsaW5lOm5vbmV9LmNkay12aXJ0dWFsLXNjcm9sbC1vcmllbnRhdGlvbi12ZXJ0aWNhbCAuY2RrLXZpcnR1YWwtc2Nyb2xsLWNvbnRlbnQtd3JhcHBlcnttaW4td2lkdGg6MTAwJX0uY2RrLXZpcnR1YWwtc2Nyb2xsLW9yaWVudGF0aW9uLXZlcnRpY2FsIC5jZGstdmlydHVhbC1zY3JvbGwtY29udGVudC13cmFwcGVyPmRsOm5vdChbY2RrVmlydHVhbEZvcl0pLC5jZGstdmlydHVhbC1zY3JvbGwtb3JpZW50YXRpb24tdmVydGljYWwgLmNkay12aXJ0dWFsLXNjcm9sbC1jb250ZW50LXdyYXBwZXI+b2w6bm90KFtjZGtWaXJ0dWFsRm9yXSksLmNkay12aXJ0dWFsLXNjcm9sbC1vcmllbnRhdGlvbi12ZXJ0aWNhbCAuY2RrLXZpcnR1YWwtc2Nyb2xsLWNvbnRlbnQtd3JhcHBlcj50YWJsZTpub3QoW2Nka1ZpcnR1YWxGb3JdKSwuY2RrLXZpcnR1YWwtc2Nyb2xsLW9yaWVudGF0aW9uLXZlcnRpY2FsIC5jZGstdmlydHVhbC1zY3JvbGwtY29udGVudC13cmFwcGVyPnVsOm5vdChbY2RrVmlydHVhbEZvcl0pe3BhZGRpbmctdG9wOjA7cGFkZGluZy1ib3R0b206MDttYXJnaW4tdG9wOjA7bWFyZ2luLWJvdHRvbTowO2JvcmRlci10b3Atd2lkdGg6MDtib3JkZXItYm90dG9tLXdpZHRoOjA7b3V0bGluZTpub25lfS5jZGstdmlydHVhbC1zY3JvbGwtc3BhY2Vye3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2xlZnQ6MDtoZWlnaHQ6MXB4O3dpZHRoOjFweDt0cmFuc2Zvcm0tb3JpZ2luOjAgMH1bZGlyPXJ0bF0gLmNkay12aXJ0dWFsLXNjcm9sbC1zcGFjZXJ7cmlnaHQ6MDtsZWZ0OmF1dG87dHJhbnNmb3JtLW9yaWdpbjoxMDAlIDB9XG4iXX1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOktofSx7dHlwZTpPYn0se3R5cGU6bUN9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpbWUxdfV19LHt0eXBlOnZGLGRlY29yYXRvcnM6W3t0eXBlOkJyfV19LHt0eXBlOktMfSx7dHlwZTpRTH1dfSkse3Njcm9sbGVkSW5kZXhDaGFuZ2U6W3t0eXBlOkVffV0sb3JpZW50YXRpb246W3t0eXBlOlJffV0sYXBwZW5kT25seTpbe3R5cGU6Ul99XSxfY29udGVudFdyYXBwZXI6W3t0eXBlOmFyLGFyZ3M6WyJjb250ZW50V3JhcHBlciIse3N0YXRpYzohMH1dfV19KTtjbGFzcyBuQntjb25zdHJ1Y3Rvcih0LGUsbixvLGksYSl7dGhpcy5fdmlld0NvbnRhaW5lclJlZj10LHRoaXMuX3RlbXBsYXRlPWUsdGhpcy5fZGlmZmVycz1uLHRoaXMuX3ZpZXdSZXBlYXRlcj1vLHRoaXMuX3ZpZXdwb3J0PWksdGhpcy52aWV3Q2hhbmdlPW5ldyBCLHRoaXMuX2RhdGFTb3VyY2VDaGFuZ2VzPW5ldyBCLHRoaXMuZGF0YVN0cmVhbT10aGlzLl9kYXRhU291cmNlQ2hhbmdlcy5waXBlKEJlKG51bGwpLE5lKCksVmUoKChbdCxlXSk9PnRoaXMuX2NoYW5nZURhdGFTb3VyY2UodCxlKSkpLEZlKDEpKSx0aGlzLl9kaWZmZXI9bnVsbCx0aGlzLl9uZWVkc1VwZGF0ZT0hMSx0aGlzLl9kZXN0cm95ZWQ9bmV3IEIsdGhpcy5kYXRhU3RyZWFtLnN1YnNjcmliZSgodD0+e3RoaXMuX2RhdGE9dCx0aGlzLl9vblJlbmRlcmVkRGF0YUNoYW5nZSgpfSkpLHRoaXMuX3ZpZXdwb3J0LnJlbmRlcmVkUmFuZ2VTdHJlYW0ucGlwZShqZSh0aGlzLl9kZXN0cm95ZWQpKS5zdWJzY3JpYmUoKHQ9Pnt0aGlzLl9yZW5kZXJlZFJhbmdlPXQsYS5ydW4oKCgpPT50aGlzLnZpZXdDaGFuZ2UubmV4dCh0aGlzLl9yZW5kZXJlZFJhbmdlKSkpLHRoaXMuX29uUmVuZGVyZWREYXRhQ2hhbmdlKCl9KSksdGhpcy5fdmlld3BvcnQuYXR0YWNoKHRoaXMpfWdldCBjZGtWaXJ0dWFsRm9yT2YoKXtyZXR1cm4gdGhpcy5fY2RrVmlydHVhbEZvck9mfXNldCBjZGtWaXJ0dWFsRm9yT2YodCl7dGhpcy5fY2RrVmlydHVhbEZvck9mPXQsRkwodCk/dGhpcy5fZGF0YVNvdXJjZUNoYW5nZXMubmV4dCh0KTp0aGlzLl9kYXRhU291cmNlQ2hhbmdlcy5uZXh0KG5ldyBMTChMdCh0KT90OkFycmF5LmZyb20odHx8W10pKSl9Z2V0IGNka1ZpcnR1YWxGb3JUcmFja0J5KCl7cmV0dXJuIHRoaXMuX2Nka1ZpcnR1YWxGb3JUcmFja0J5fXNldCBjZGtWaXJ0dWFsRm9yVHJhY2tCeSh0KXt0aGlzLl9uZWVkc1VwZGF0ZT0hMCx0aGlzLl9jZGtWaXJ0dWFsRm9yVHJhY2tCeT10PyhlLG4pPT50KGUrKHRoaXMuX3JlbmRlcmVkUmFuZ2U/dGhpcy5fcmVuZGVyZWRSYW5nZS5zdGFydDowKSxuKTp2b2lkIDB9c2V0IGNka1ZpcnR1YWxGb3JUZW1wbGF0ZSh0KXt0JiYodGhpcy5fbmVlZHNVcGRhdGU9ITAsdGhpcy5fdGVtcGxhdGU9dCl9Z2V0IGNka1ZpcnR1YWxGb3JUZW1wbGF0ZUNhY2hlU2l6ZSgpe3JldHVybiB0aGlzLl92aWV3UmVwZWF0ZXIudmlld0NhY2hlU2l6ZX1zZXQgY2RrVmlydHVhbEZvclRlbXBsYXRlQ2FjaGVTaXplKHQpe3RoaXMuX3ZpZXdSZXBlYXRlci52aWV3Q2FjaGVTaXplPW5IKHQpfW1lYXN1cmVSYW5nZVNpemUodCxlKXtpZih0LnN0YXJ0Pj10LmVuZClyZXR1cm4gMDtpZigodC5zdGFydDx0aGlzLl9yZW5kZXJlZFJhbmdlLnN0YXJ0fHx0LmVuZD50aGlzLl9yZW5kZXJlZFJhbmdlLmVuZCkmJigidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSl0aHJvdyBFcnJvcigiRXJyb3I6IGF0dGVtcHRlZCB0byBtZWFzdXJlIGFuIGl0ZW0gdGhhdCBpc24ndCByZW5kZXJlZC4iKTtjb25zdCBuPXQuc3RhcnQtdGhpcy5fcmVuZGVyZWRSYW5nZS5zdGFydCxvPXQuZW5kLXQuc3RhcnQ7bGV0IGksYTtmb3IobGV0IHQ9MDt0PG87dCsrKXtjb25zdCBlPXRoaXMuX3ZpZXdDb250YWluZXJSZWYuZ2V0KHQrbik7aWYoZSYmZS5yb290Tm9kZXMubGVuZ3RoKXtpPWE9ZS5yb290Tm9kZXNbMF07YnJlYWt9fWZvcihsZXQgdD1vLTE7dD4tMTt0LS0pe2NvbnN0IGU9dGhpcy5fdmlld0NvbnRhaW5lclJlZi5nZXQodCtuKTtpZihlJiZlLnJvb3ROb2Rlcy5sZW5ndGgpe2E9ZS5yb290Tm9kZXNbZS5yb290Tm9kZXMubGVuZ3RoLTFdO2JyZWFrfX1yZXR1cm4gaSYmYT9lQihlLCJlbmQiLGEpLWVCKGUsInN0YXJ0IixpKTowfW5nRG9DaGVjaygpe2lmKHRoaXMuX2RpZmZlciYmdGhpcy5fbmVlZHNVcGRhdGUpe2NvbnN0IHQ9dGhpcy5fZGlmZmVyLmRpZmYodGhpcy5fcmVuZGVyZWRJdGVtcyk7dD90aGlzLl9hcHBseUNoYW5nZXModCk6dGhpcy5fdXBkYXRlQ29udGV4dCgpLHRoaXMuX25lZWRzVXBkYXRlPSExfX1uZ09uRGVzdHJveSgpe3RoaXMuX3ZpZXdwb3J0LmRldGFjaCgpLHRoaXMuX2RhdGFTb3VyY2VDaGFuZ2VzLm5leHQodm9pZCAwKSx0aGlzLl9kYXRhU291cmNlQ2hhbmdlcy5jb21wbGV0ZSgpLHRoaXMudmlld0NoYW5nZS5jb21wbGV0ZSgpLHRoaXMuX2Rlc3Ryb3llZC5uZXh0KCksdGhpcy5fZGVzdHJveWVkLmNvbXBsZXRlKCksdGhpcy5fdmlld1JlcGVhdGVyLmRldGFjaCgpfV9vblJlbmRlcmVkRGF0YUNoYW5nZSgpe3RoaXMuX3JlbmRlcmVkUmFuZ2UmJih0aGlzLl9yZW5kZXJlZEl0ZW1zPXRoaXMuX2RhdGEuc2xpY2UodGhpcy5fcmVuZGVyZWRSYW5nZS5zdGFydCx0aGlzLl9yZW5kZXJlZFJhbmdlLmVuZCksdGhpcy5fZGlmZmVyfHwodGhpcy5fZGlmZmVyPXRoaXMuX2RpZmZlcnMuZmluZCh0aGlzLl9yZW5kZXJlZEl0ZW1zKS5jcmVhdGUoKCh0LGUpPT50aGlzLmNka1ZpcnR1YWxGb3JUcmFja0J5P3RoaXMuY2RrVmlydHVhbEZvclRyYWNrQnkodCxlKTplKSkpLHRoaXMuX25lZWRzVXBkYXRlPSEwKX1fY2hhbmdlRGF0YVNvdXJjZSh0LGUpe3JldHVybiB0JiZ0LmRpc2Nvbm5lY3QodGhpcyksdGhpcy5fbmVlZHNVcGRhdGU9ITAsZT9lLmNvbm5lY3QodGhpcyk6enQoKX1fdXBkYXRlQ29udGV4dCgpe2NvbnN0IHQ9dGhpcy5fZGF0YS5sZW5ndGg7bGV0IGU9dGhpcy5fdmlld0NvbnRhaW5lclJlZi5sZW5ndGg7Zm9yKDtlLS07KXtjb25zdCBuPXRoaXMuX3ZpZXdDb250YWluZXJSZWYuZ2V0KGUpO24uY29udGV4dC5pbmRleD10aGlzLl9yZW5kZXJlZFJhbmdlLnN0YXJ0K2Usbi5jb250ZXh0LmNvdW50PXQsdGhpcy5fdXBkYXRlQ29tcHV0ZWRDb250ZXh0UHJvcGVydGllcyhuLmNvbnRleHQpLG4uZGV0ZWN0Q2hhbmdlcygpfX1fYXBwbHlDaGFuZ2VzKHQpe3RoaXMuX3ZpZXdSZXBlYXRlci5hcHBseUNoYW5nZXModCx0aGlzLl92aWV3Q29udGFpbmVyUmVmLCgodCxlLG4pPT50aGlzLl9nZXRFbWJlZGRlZFZpZXdBcmdzKHQsbikpLCh0PT50Lml0ZW0pKSx0LmZvckVhY2hJZGVudGl0eUNoYW5nZSgodD0+e3RoaXMuX3ZpZXdDb250YWluZXJSZWYuZ2V0KHQuY3VycmVudEluZGV4KS5jb250ZXh0LiRpbXBsaWNpdD10Lml0ZW19KSk7Y29uc3QgZT10aGlzLl9kYXRhLmxlbmd0aDtsZXQgbj10aGlzLl92aWV3Q29udGFpbmVyUmVmLmxlbmd0aDtmb3IoO24tLTspe2NvbnN0IHQ9dGhpcy5fdmlld0NvbnRhaW5lclJlZi5nZXQobik7dC5jb250ZXh0LmluZGV4PXRoaXMuX3JlbmRlcmVkUmFuZ2Uuc3RhcnQrbix0LmNvbnRleHQuY291bnQ9ZSx0aGlzLl91cGRhdGVDb21wdXRlZENvbnRleHRQcm9wZXJ0aWVzKHQuY29udGV4dCl9fV91cGRhdGVDb21wdXRlZENvbnRleHRQcm9wZXJ0aWVzKHQpe3QuZmlyc3Q9MD09PXQuaW5kZXgsdC5sYXN0PXQuaW5kZXg9PT10LmNvdW50LTEsdC5ldmVuPXQuaW5kZXglMj09MCx0Lm9kZD0hdC5ldmVufV9nZXRFbWJlZGRlZFZpZXdBcmdzKHQsZSl7cmV0dXJue3RlbXBsYXRlUmVmOnRoaXMuX3RlbXBsYXRlLGNvbnRleHQ6eyRpbXBsaWNpdDp0Lml0ZW0sY2RrVmlydHVhbEZvck9mOnRoaXMuX2Nka1ZpcnR1YWxGb3JPZixpbmRleDotMSxjb3VudDotMSxmaXJzdDohMSxsYXN0OiExLG9kZDohMSxldmVuOiExfSxpbmRleDplfX19bkIuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fG5CKShnZihGYiksZ2YoRWIpLGdmKGhiKSxnZihXTCksZ2YodEIsNCksZ2YobUMpKX0sbkIuybVkaXI9aG8oe3R5cGU6bkIsc2VsZWN0b3JzOltbIiIsImNka1ZpcnR1YWxGb3IiLCIiLCJjZGtWaXJ0dWFsRm9yT2YiLCIiXV0saW5wdXRzOntjZGtWaXJ0dWFsRm9yT2Y6ImNka1ZpcnR1YWxGb3JPZiIsY2RrVmlydHVhbEZvclRyYWNrQnk6ImNka1ZpcnR1YWxGb3JUcmFja0J5IixjZGtWaXJ0dWFsRm9yVGVtcGxhdGU6ImNka1ZpcnR1YWxGb3JUZW1wbGF0ZSIsY2RrVmlydHVhbEZvclRlbXBsYXRlQ2FjaGVTaXplOiJjZGtWaXJ0dWFsRm9yVGVtcGxhdGVDYWNoZVNpemUifSxmZWF0dXJlczpbamgoW3twcm92aWRlOldMLHVzZUNsYXNzOlZMfV0pXX0pLG5CLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6RmJ9LHt0eXBlOkVifSx7dHlwZTpoYn0se3R5cGU6VkwsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbV0xdfV19LHt0eXBlOnRCLGRlY29yYXRvcnM6W3t0eXBlOmpyfV19LHt0eXBlOm1DfV0sbkIucHJvcERlY29yYXRvcnM9e2Nka1ZpcnR1YWxGb3JPZjpbe3R5cGU6Ul99XSxjZGtWaXJ0dWFsRm9yVHJhY2tCeTpbe3R5cGU6Ul99XSxjZGtWaXJ0dWFsRm9yVGVtcGxhdGU6W3t0eXBlOlJffV0sY2RrVmlydHVhbEZvclRlbXBsYXRlQ2FjaGVTaXplOlt7dHlwZTpSX31dfSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKG5CLFt7dHlwZTprXyxhcmdzOlt7c2VsZWN0b3I6IltjZGtWaXJ0dWFsRm9yXVtjZGtWaXJ0dWFsRm9yT2ZdIixwcm92aWRlcnM6W3twcm92aWRlOldMLHVzZUNsYXNzOlZMfV19XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpGYn0se3R5cGU6RWJ9LHt0eXBlOmhifSx7dHlwZTpWTCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltXTF19XX0se3R5cGU6dEIsZGVjb3JhdG9yczpbe3R5cGU6anJ9XX0se3R5cGU6bUN9XX0pLHtjZGtWaXJ0dWFsRm9yT2Y6W3t0eXBlOlJffV0sY2RrVmlydHVhbEZvclRyYWNrQnk6W3t0eXBlOlJffV0sY2RrVmlydHVhbEZvclRlbXBsYXRlOlt7dHlwZTpSX31dLGNka1ZpcnR1YWxGb3JUZW1wbGF0ZUNhY2hlU2l6ZTpbe3R5cGU6Ul99XX0pOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3Mgb0J7fW9CLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxvQil9LG9CLsm1bW9kPWZvKHt0eXBlOm9CfSksb0IuybVpbmo9RG4oe30pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIob0IsW3t0eXBlOkxfLGFyZ3M6W3tleHBvcnRzOltKTF0sZGVjbGFyYXRpb25zOltKTF19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZ1byhvQix7ZGVjbGFyYXRpb25zOltKTF0sZXhwb3J0czpbSkxdfSk7Y2xhc3MgaUJ7fWZ1bmN0aW9uIGFCKCl7dGhyb3cgRXJyb3IoIkhvc3QgYWxyZWFkeSBoYXMgYSBwb3J0YWwgYXR0YWNoZWQiKX1pQi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8aUIpfSxpQi7JtW1vZD1mbyh7dHlwZTppQn0pLGlCLsm1aW5qPURuKHtpbXBvcnRzOltbT0YsZEgsb0JdLE9GLG9CXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoaUIsW3t0eXBlOkxfLGFyZ3M6W3tpbXBvcnRzOltPRixkSCxvQl0sZXhwb3J0czpbT0Ysb0IsWEwsbkIsdEJdLGRlY2xhcmF0aW9uczpbWEwsbkIsdEJdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmdW8oaUIse2RlY2xhcmF0aW9uczpmdW5jdGlvbigpe3JldHVybltYTCxuQix0Ql19LGltcG9ydHM6ZnVuY3Rpb24oKXtyZXR1cm5bT0YsZEgsb0JdfSxleHBvcnRzOmZ1bmN0aW9uKCl7cmV0dXJuW09GLG9CLFhMLG5CLHRCXX19KTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNsYXNzIHJCe2F0dGFjaCh0KXtyZXR1cm4oInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJihudWxsPT10JiYoZnVuY3Rpb24gZSgpe3Rocm93IEVycm9yKCJBdHRlbXB0aW5nIHRvIGF0dGFjaCBhIHBvcnRhbCB0byBhIG51bGwgUG9ydGFsT3V0bGV0Iil9KSgpLHQuaGFzQXR0YWNoZWQoKSYmYUIoKSksdGhpcy5fYXR0YWNoZWRIb3N0PXQsdC5hdHRhY2godGhpcyl9ZGV0YWNoKCl7bGV0IHQ9dGhpcy5fYXR0YWNoZWRIb3N0O251bGwhPXQ/KHRoaXMuX2F0dGFjaGVkSG9zdD1udWxsLHQuZGV0YWNoKCkpOigidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmKGZ1bmN0aW9uIGUoKXt0aHJvdyBFcnJvcigiQXR0ZW1wdGluZyB0byBkZXRhY2ggYSBwb3J0YWwgdGhhdCBpcyBub3QgYXR0YWNoZWQgdG8gYSBob3N0Iil9KSgpfWdldCBpc0F0dGFjaGVkKCl7cmV0dXJuIG51bGwhPXRoaXMuX2F0dGFjaGVkSG9zdH1zZXRBdHRhY2hlZEhvc3QodCl7dGhpcy5fYXR0YWNoZWRIb3N0PXR9fWNsYXNzIHNCIGV4dGVuZHMgckJ7Y29uc3RydWN0b3IodCxlLG4sbyl7c3VwZXIoKSx0aGlzLmNvbXBvbmVudD10LHRoaXMudmlld0NvbnRhaW5lclJlZj1lLHRoaXMuaW5qZWN0b3I9bix0aGlzLmNvbXBvbmVudEZhY3RvcnlSZXNvbHZlcj1vfX1jbGFzcyBsQiBleHRlbmRzIHJCe2NvbnN0cnVjdG9yKHQsZSxuKXtzdXBlcigpLHRoaXMudGVtcGxhdGVSZWY9dCx0aGlzLnZpZXdDb250YWluZXJSZWY9ZSx0aGlzLmNvbnRleHQ9bn1nZXQgb3JpZ2luKCl7cmV0dXJuIHRoaXMudGVtcGxhdGVSZWYuZWxlbWVudFJlZn1hdHRhY2godCxlPXRoaXMuY29udGV4dCl7cmV0dXJuIHRoaXMuY29udGV4dD1lLHN1cGVyLmF0dGFjaCh0KX1kZXRhY2goKXtyZXR1cm4gdGhpcy5jb250ZXh0PXZvaWQgMCxzdXBlci5kZXRhY2goKX19Y2xhc3MgY0IgZXh0ZW5kcyByQntjb25zdHJ1Y3Rvcih0KXtzdXBlcigpLHRoaXMuZWxlbWVudD10IGluc3RhbmNlb2YgS2g/dC5uYXRpdmVFbGVtZW50OnR9fWNsYXNzIGRCe2NvbnN0cnVjdG9yKCl7dGhpcy5faXNEaXNwb3NlZD0hMSx0aGlzLmF0dGFjaERvbVBvcnRhbD1udWxsfWhhc0F0dGFjaGVkKCl7cmV0dXJuISF0aGlzLl9hdHRhY2hlZFBvcnRhbH1hdHRhY2godCl7cmV0dXJuKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiYodHx8KGZ1bmN0aW9uIGUoKXt0aHJvdyBFcnJvcigiTXVzdCBwcm92aWRlIGEgcG9ydGFsIHRvIGF0dGFjaCIpfSkoKSx0aGlzLmhhc0F0dGFjaGVkKCkmJmFCKCksdGhpcy5faXNEaXNwb3NlZCYmKGZ1bmN0aW9uIG4oKXt0aHJvdyBFcnJvcigiVGhpcyBQb3J0YWxPdXRsZXQgaGFzIGFscmVhZHkgYmVlbiBkaXNwb3NlZCIpfSkoKSksdCBpbnN0YW5jZW9mIHNCPyh0aGlzLl9hdHRhY2hlZFBvcnRhbD10LHRoaXMuYXR0YWNoQ29tcG9uZW50UG9ydGFsKHQpKTp0IGluc3RhbmNlb2YgbEI/KHRoaXMuX2F0dGFjaGVkUG9ydGFsPXQsdGhpcy5hdHRhY2hUZW1wbGF0ZVBvcnRhbCh0KSk6dGhpcy5hdHRhY2hEb21Qb3J0YWwmJnQgaW5zdGFuY2VvZiBjQj8odGhpcy5fYXR0YWNoZWRQb3J0YWw9dCx0aGlzLmF0dGFjaERvbVBvcnRhbCh0KSk6dm9pZCgoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJihmdW5jdGlvbiBvKCl7dGhyb3cgRXJyb3IoIkF0dGVtcHRpbmcgdG8gYXR0YWNoIGFuIHVua25vd24gUG9ydGFsIHR5cGUuIEJhc2VQb3J0YWxPdXRsZXQgYWNjZXB0cyBlaXRoZXIgYSBDb21wb25lbnRQb3J0YWwgb3IgYSBUZW1wbGF0ZVBvcnRhbC4iKX0pKCkpfWRldGFjaCgpe3RoaXMuX2F0dGFjaGVkUG9ydGFsJiYodGhpcy5fYXR0YWNoZWRQb3J0YWwuc2V0QXR0YWNoZWRIb3N0KG51bGwpLHRoaXMuX2F0dGFjaGVkUG9ydGFsPW51bGwpLHRoaXMuX2ludm9rZURpc3Bvc2VGbigpfWRpc3Bvc2UoKXt0aGlzLmhhc0F0dGFjaGVkKCkmJnRoaXMuZGV0YWNoKCksdGhpcy5faW52b2tlRGlzcG9zZUZuKCksdGhpcy5faXNEaXNwb3NlZD0hMH1zZXREaXNwb3NlRm4odCl7dGhpcy5fZGlzcG9zZUZuPXR9X2ludm9rZURpc3Bvc2VGbigpe3RoaXMuX2Rpc3Bvc2VGbiYmKHRoaXMuX2Rpc3Bvc2VGbigpLHRoaXMuX2Rpc3Bvc2VGbj1udWxsKX19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NsYXNzIHBCIGV4dGVuZHMgZEJ7Y29uc3RydWN0b3IodCxlLG4sbyxpKXtzdXBlcigpLHRoaXMub3V0bGV0RWxlbWVudD10LHRoaXMuX2NvbXBvbmVudEZhY3RvcnlSZXNvbHZlcj1lLHRoaXMuX2FwcFJlZj1uLHRoaXMuX2RlZmF1bHRJbmplY3Rvcj1vLHRoaXMuYXR0YWNoRG9tUG9ydGFsPXQ9PntpZighdGhpcy5fZG9jdW1lbnQmJigidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSl0aHJvdyBFcnJvcigiQ2Fubm90IGF0dGFjaCBET00gcG9ydGFsIHdpdGhvdXQgX2RvY3VtZW50IGNvbnN0cnVjdG9yIHBhcmFtZXRlciIpO2NvbnN0IGU9dC5lbGVtZW50O2lmKCFlLnBhcmVudE5vZGUmJigidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSl0aHJvdyBFcnJvcigiRE9NIHBvcnRhbCBjb250ZW50IG11c3QgYmUgYXR0YWNoZWQgdG8gYSBwYXJlbnQgbm9kZS4iKTtjb25zdCBuPXRoaXMuX2RvY3VtZW50LmNyZWF0ZUNvbW1lbnQoImRvbS1wb3J0YWwiKTtlLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKG4sZSksdGhpcy5vdXRsZXRFbGVtZW50LmFwcGVuZENoaWxkKGUpLHRoaXMuX2F0dGFjaGVkUG9ydGFsPXQsc3VwZXIuc2V0RGlzcG9zZUZuKCgoKT0+e24ucGFyZW50Tm9kZSYmbi5wYXJlbnROb2RlLnJlcGxhY2VDaGlsZChlLG4pfSkpfSx0aGlzLl9kb2N1bWVudD1pfWF0dGFjaENvbXBvbmVudFBvcnRhbCh0KXtjb25zdCBlPSh0LmNvbXBvbmVudEZhY3RvcnlSZXNvbHZlcnx8dGhpcy5fY29tcG9uZW50RmFjdG9yeVJlc29sdmVyKS5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeSh0LmNvbXBvbmVudCk7bGV0IG47cmV0dXJuIHQudmlld0NvbnRhaW5lclJlZj8obj10LnZpZXdDb250YWluZXJSZWYuY3JlYXRlQ29tcG9uZW50KGUsdC52aWV3Q29udGFpbmVyUmVmLmxlbmd0aCx0LmluamVjdG9yfHx0LnZpZXdDb250YWluZXJSZWYuaW5qZWN0b3IpLHRoaXMuc2V0RGlzcG9zZUZuKCgoKT0+bi5kZXN0cm95KCkpKSk6KG49ZS5jcmVhdGUodC5pbmplY3Rvcnx8dGhpcy5fZGVmYXVsdEluamVjdG9yKSx0aGlzLl9hcHBSZWYuYXR0YWNoVmlldyhuLmhvc3RWaWV3KSx0aGlzLnNldERpc3Bvc2VGbigoKCk9Pnt0aGlzLl9hcHBSZWYuZGV0YWNoVmlldyhuLmhvc3RWaWV3KSxuLmRlc3Ryb3koKX0pKSksdGhpcy5vdXRsZXRFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2dldENvbXBvbmVudFJvb3ROb2RlKG4pKSx0aGlzLl9hdHRhY2hlZFBvcnRhbD10LG59YXR0YWNoVGVtcGxhdGVQb3J0YWwodCl7bGV0IGU9dC52aWV3Q29udGFpbmVyUmVmLG49ZS5jcmVhdGVFbWJlZGRlZFZpZXcodC50ZW1wbGF0ZVJlZix0LmNvbnRleHQpO3JldHVybiBuLnJvb3ROb2Rlcy5mb3JFYWNoKCh0PT50aGlzLm91dGxldEVsZW1lbnQuYXBwZW5kQ2hpbGQodCkpKSxuLmRldGVjdENoYW5nZXMoKSx0aGlzLnNldERpc3Bvc2VGbigoKCk9PntsZXQgdD1lLmluZGV4T2Yobik7LTEhPT10JiZlLnJlbW92ZSh0KX0pKSx0aGlzLl9hdHRhY2hlZFBvcnRhbD10LG59ZGlzcG9zZSgpe3N1cGVyLmRpc3Bvc2UoKSxudWxsIT10aGlzLm91dGxldEVsZW1lbnQucGFyZW50Tm9kZSYmdGhpcy5vdXRsZXRFbGVtZW50LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGhpcy5vdXRsZXRFbGVtZW50KX1fZ2V0Q29tcG9uZW50Um9vdE5vZGUodCl7cmV0dXJuIHQuaG9zdFZpZXcucm9vdE5vZGVzWzBdfX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY2xhc3MgbUIgZXh0ZW5kcyBsQntjb25zdHJ1Y3Rvcih0LGUpe3N1cGVyKHQsZSl9fW1CLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxtQikoZ2YoRWIpLGdmKEZiKSl9LG1CLsm1ZGlyPWhvKHt0eXBlOm1CLHNlbGVjdG9yczpbWyIiLCJjZGtQb3J0YWwiLCIiXV0sZXhwb3J0QXM6WyJjZGtQb3J0YWwiXSxmZWF0dXJlczpbUXBdfSksbUIuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpFYn0se3R5cGU6RmJ9XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKG1CLFt7dHlwZTprXyxhcmdzOlt7c2VsZWN0b3I6IltjZGtQb3J0YWxdIixleHBvcnRBczoiY2RrUG9ydGFsIn1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOkVifSx7dHlwZTpGYn1dfSksbnVsbCk7Y2xhc3MgZkIgZXh0ZW5kcyBtQnt9ZkIuybVmYWM9KGZ1bmN0aW9uKCl7bGV0IHQ7cmV0dXJuIGZ1bmN0aW9uIGUobil7cmV0dXJuKHR8fCh0PVVhKGZCKSkpKG58fGZCKX19KSgpLGZCLsm1ZGlyPWhvKHt0eXBlOmZCLHNlbGVjdG9yczpbWyIiLCJjZGstcG9ydGFsIiwiIl0sWyIiLCJwb3J0YWwiLCIiXV0sZXhwb3J0QXM6WyJjZGtQb3J0YWwiXSxmZWF0dXJlczpbamgoW3twcm92aWRlOm1CLHVzZUV4aXN0aW5nOmZCfV0pLFFwXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoZkIsW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3RvcjoiW2Nkay1wb3J0YWxdLCBbcG9ydGFsXSIsZXhwb3J0QXM6ImNka1BvcnRhbCIscHJvdmlkZXJzOlt7cHJvdmlkZTptQix1c2VFeGlzdGluZzpmQn1dfV19XSxudWxsLG51bGwpO2NsYXNzIHVCIGV4dGVuZHMgZEJ7Y29uc3RydWN0b3IodCxlLG4pe3N1cGVyKCksdGhpcy5fY29tcG9uZW50RmFjdG9yeVJlc29sdmVyPXQsdGhpcy5fdmlld0NvbnRhaW5lclJlZj1lLHRoaXMuX2lzSW5pdGlhbGl6ZWQ9ITEsdGhpcy5hdHRhY2hlZD1uZXcgU3ksdGhpcy5hdHRhY2hEb21Qb3J0YWw9dD0+e2lmKCF0aGlzLl9kb2N1bWVudCYmKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpKXRocm93IEVycm9yKCJDYW5ub3QgYXR0YWNoIERPTSBwb3J0YWwgd2l0aG91dCBfZG9jdW1lbnQgY29uc3RydWN0b3IgcGFyYW1ldGVyIik7Y29uc3QgZT10LmVsZW1lbnQ7aWYoIWUucGFyZW50Tm9kZSYmKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpKXRocm93IEVycm9yKCJET00gcG9ydGFsIGNvbnRlbnQgbXVzdCBiZSBhdHRhY2hlZCB0byBhIHBhcmVudCBub2RlLiIpO2NvbnN0IG49dGhpcy5fZG9jdW1lbnQuY3JlYXRlQ29tbWVudCgiZG9tLXBvcnRhbCIpO3Quc2V0QXR0YWNoZWRIb3N0KHRoaXMpLGUucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUobixlKSx0aGlzLl9nZXRSb290Tm9kZSgpLmFwcGVuZENoaWxkKGUpLHRoaXMuX2F0dGFjaGVkUG9ydGFsPXQsc3VwZXIuc2V0RGlzcG9zZUZuKCgoKT0+e24ucGFyZW50Tm9kZSYmbi5wYXJlbnROb2RlLnJlcGxhY2VDaGlsZChlLG4pfSkpfSx0aGlzLl9kb2N1bWVudD1ufWdldCBwb3J0YWwoKXtyZXR1cm4gdGhpcy5fYXR0YWNoZWRQb3J0YWx9c2V0IHBvcnRhbCh0KXsoIXRoaXMuaGFzQXR0YWNoZWQoKXx8dHx8dGhpcy5faXNJbml0aWFsaXplZCkmJih0aGlzLmhhc0F0dGFjaGVkKCkmJnN1cGVyLmRldGFjaCgpLHQmJnN1cGVyLmF0dGFjaCh0KSx0aGlzLl9hdHRhY2hlZFBvcnRhbD10KX1nZXQgYXR0YWNoZWRSZWYoKXtyZXR1cm4gdGhpcy5fYXR0YWNoZWRSZWZ9bmdPbkluaXQoKXt0aGlzLl9pc0luaXRpYWxpemVkPSEwfW5nT25EZXN0cm95KCl7c3VwZXIuZGlzcG9zZSgpLHRoaXMuX2F0dGFjaGVkUG9ydGFsPW51bGwsdGhpcy5fYXR0YWNoZWRSZWY9bnVsbH1hdHRhY2hDb21wb25lbnRQb3J0YWwodCl7dC5zZXRBdHRhY2hlZEhvc3QodGhpcyk7Y29uc3QgZT1udWxsIT10LnZpZXdDb250YWluZXJSZWY/dC52aWV3Q29udGFpbmVyUmVmOnRoaXMuX3ZpZXdDb250YWluZXJSZWYsbj0odC5jb21wb25lbnRGYWN0b3J5UmVzb2x2ZXJ8fHRoaXMuX2NvbXBvbmVudEZhY3RvcnlSZXNvbHZlcikucmVzb2x2ZUNvbXBvbmVudEZhY3RvcnkodC5jb21wb25lbnQpLG89ZS5jcmVhdGVDb21wb25lbnQobixlLmxlbmd0aCx0LmluamVjdG9yfHxlLmluamVjdG9yKTtyZXR1cm4gZSE9PXRoaXMuX3ZpZXdDb250YWluZXJSZWYmJnRoaXMuX2dldFJvb3ROb2RlKCkuYXBwZW5kQ2hpbGQoby5ob3N0Vmlldy5yb290Tm9kZXNbMF0pLHN1cGVyLnNldERpc3Bvc2VGbigoKCk9Pm8uZGVzdHJveSgpKSksdGhpcy5fYXR0YWNoZWRQb3J0YWw9dCx0aGlzLl9hdHRhY2hlZFJlZj1vLHRoaXMuYXR0YWNoZWQuZW1pdChvKSxvfWF0dGFjaFRlbXBsYXRlUG9ydGFsKHQpe3Quc2V0QXR0YWNoZWRIb3N0KHRoaXMpO2NvbnN0IGU9dGhpcy5fdmlld0NvbnRhaW5lclJlZi5jcmVhdGVFbWJlZGRlZFZpZXcodC50ZW1wbGF0ZVJlZix0LmNvbnRleHQpO3JldHVybiBzdXBlci5zZXREaXNwb3NlRm4oKCgpPT50aGlzLl92aWV3Q29udGFpbmVyUmVmLmNsZWFyKCkpKSx0aGlzLl9hdHRhY2hlZFBvcnRhbD10LHRoaXMuX2F0dGFjaGVkUmVmPWUsdGhpcy5hdHRhY2hlZC5lbWl0KGUpLGV9X2dldFJvb3ROb2RlKCl7Y29uc3QgdD10aGlzLl92aWV3Q29udGFpbmVyUmVmLmVsZW1lbnQubmF0aXZlRWxlbWVudDtyZXR1cm4gdC5ub2RlVHlwZT09PXQuRUxFTUVOVF9OT0RFP3Q6dC5wYXJlbnROb2RlfX11Qi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8dUIpKGdmKEdoKSxnZihGYiksZ2Yoc00pKX0sdUIuybVkaXI9aG8oe3R5cGU6dUIsc2VsZWN0b3JzOltbIiIsImNka1BvcnRhbE91dGxldCIsIiJdXSxpbnB1dHM6e3BvcnRhbDpbImNka1BvcnRhbE91dGxldCIsInBvcnRhbCJdfSxvdXRwdXRzOnthdHRhY2hlZDoiYXR0YWNoZWQifSxleHBvcnRBczpbImNka1BvcnRhbE91dGxldCJdLGZlYXR1cmVzOltRcF19KSx1Qi5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOkdofSx7dHlwZTpGYn0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W3NNXX1dfV0sdUIucHJvcERlY29yYXRvcnM9e2F0dGFjaGVkOlt7dHlwZTpFX31dfSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKHVCLFt7dHlwZTprXyxhcmdzOlt7c2VsZWN0b3I6IltjZGtQb3J0YWxPdXRsZXRdIixleHBvcnRBczoiY2RrUG9ydGFsT3V0bGV0IixpbnB1dHM6WyJwb3J0YWw6IGNka1BvcnRhbE91dGxldCJdfV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6R2h9LHt0eXBlOkZifSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbc01dfV19XX0pLHthdHRhY2hlZDpbe3R5cGU6RV99XX0pO2NsYXNzIGdCIGV4dGVuZHMgdUJ7fWdCLsm1ZmFjPShmdW5jdGlvbigpe2xldCB0O3JldHVybiBmdW5jdGlvbiBlKG4pe3JldHVybih0fHwodD1VYShnQikpKShufHxnQil9fSkoKSxnQi7JtWRpcj1obyh7dHlwZTpnQixzZWxlY3RvcnM6W1siIiwiY2RrUG9ydGFsSG9zdCIsIiJdLFsiIiwicG9ydGFsSG9zdCIsIiJdXSxpbnB1dHM6e3BvcnRhbDpbImNka1BvcnRhbEhvc3QiLCJwb3J0YWwiXX0sZXhwb3J0QXM6WyJjZGtQb3J0YWxIb3N0Il0sZmVhdHVyZXM6W2poKFt7cHJvdmlkZTp1Qix1c2VFeGlzdGluZzpnQn1dKSxRcF19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKGdCLFt7dHlwZTprXyxhcmdzOlt7c2VsZWN0b3I6IltjZGtQb3J0YWxIb3N0XSwgW3BvcnRhbEhvc3RdIixleHBvcnRBczoiY2RrUG9ydGFsSG9zdCIsaW5wdXRzOlsicG9ydGFsOiBjZGtQb3J0YWxIb3N0Il0scHJvdmlkZXJzOlt7cHJvdmlkZTp1Qix1c2VFeGlzdGluZzpnQn1dfV19XSxudWxsLG51bGwpO2NsYXNzIGhCe31oQi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8aEIpfSxoQi7JtW1vZD1mbyh7dHlwZTpoQn0pLGhCLsm1aW5qPURuKHt9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKGhCLFt7dHlwZTpMXyxhcmdzOlt7ZXhwb3J0czpbbUIsdUIsZkIsZ0JdLGRlY2xhcmF0aW9uczpbbUIsdUIsZkIsZ0JdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmdW8oaEIse2RlY2xhcmF0aW9uczpbbUIsdUIsZkIsZ0JdLGV4cG9ydHM6W21CLHVCLGZCLGdCXX0pOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY29uc3QgYkI9eUgoKTtjbGFzcyB5Qntjb25zdHJ1Y3Rvcih0LGUpe3RoaXMuX3ZpZXdwb3J0UnVsZXI9dCx0aGlzLl9wcmV2aW91c0hUTUxTdHlsZXM9e3RvcDoiIixsZWZ0OiIifSx0aGlzLl9pc0VuYWJsZWQ9ITEsdGhpcy5fZG9jdW1lbnQ9ZX1hdHRhY2goKXt9ZW5hYmxlKCl7aWYodGhpcy5fY2FuQmVFbmFibGVkKCkpe2NvbnN0IHQ9dGhpcy5fZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O3RoaXMuX3ByZXZpb3VzU2Nyb2xsUG9zaXRpb249dGhpcy5fdmlld3BvcnRSdWxlci5nZXRWaWV3cG9ydFNjcm9sbFBvc2l0aW9uKCksdGhpcy5fcHJldmlvdXNIVE1MU3R5bGVzLmxlZnQ9dC5zdHlsZS5sZWZ0fHwiIix0aGlzLl9wcmV2aW91c0hUTUxTdHlsZXMudG9wPXQuc3R5bGUudG9wfHwiIix0LnN0eWxlLmxlZnQ9YUgoLXRoaXMuX3ByZXZpb3VzU2Nyb2xsUG9zaXRpb24ubGVmdCksdC5zdHlsZS50b3A9YUgoLXRoaXMuX3ByZXZpb3VzU2Nyb2xsUG9zaXRpb24udG9wKSx0LmNsYXNzTGlzdC5hZGQoImNkay1nbG9iYWwtc2Nyb2xsYmxvY2siKSx0aGlzLl9pc0VuYWJsZWQ9ITB9fWRpc2FibGUoKXtpZih0aGlzLl9pc0VuYWJsZWQpe2NvbnN0IHQ9dGhpcy5fZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LGU9dC5zdHlsZSxuPXRoaXMuX2RvY3VtZW50LmJvZHkuc3R5bGUsbz1lLnNjcm9sbEJlaGF2aW9yfHwiIixpPW4uc2Nyb2xsQmVoYXZpb3J8fCIiO3RoaXMuX2lzRW5hYmxlZD0hMSxlLmxlZnQ9dGhpcy5fcHJldmlvdXNIVE1MU3R5bGVzLmxlZnQsZS50b3A9dGhpcy5fcHJldmlvdXNIVE1MU3R5bGVzLnRvcCx0LmNsYXNzTGlzdC5yZW1vdmUoImNkay1nbG9iYWwtc2Nyb2xsYmxvY2siKSxiQiYmKGUuc2Nyb2xsQmVoYXZpb3I9bi5zY3JvbGxCZWhhdmlvcj0iYXV0byIpLHdpbmRvdy5zY3JvbGwodGhpcy5fcHJldmlvdXNTY3JvbGxQb3NpdGlvbi5sZWZ0LHRoaXMuX3ByZXZpb3VzU2Nyb2xsUG9zaXRpb24udG9wKSxiQiYmKGUuc2Nyb2xsQmVoYXZpb3I9byxuLnNjcm9sbEJlaGF2aW9yPWkpfX1fY2FuQmVFbmFibGVkKCl7aWYodGhpcy5fZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygiY2RrLWdsb2JhbC1zY3JvbGxibG9jayIpfHx0aGlzLl9pc0VuYWJsZWQpcmV0dXJuITE7Y29uc3QgdD10aGlzLl9kb2N1bWVudC5ib2R5LGU9dGhpcy5fdmlld3BvcnRSdWxlci5nZXRWaWV3cG9ydFNpemUoKTtyZXR1cm4gdC5zY3JvbGxIZWlnaHQ+ZS5oZWlnaHR8fHQuc2Nyb2xsV2lkdGg+ZS53aWR0aH19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2Z1bmN0aW9uIF9CKCl7cmV0dXJuIEVycm9yKCJTY3JvbGwgc3RyYXRlZ3kgaGFzIGFscmVhZHkgYmVlbiBhdHRhY2hlZC4iKX1jbGFzcyBDQntjb25zdHJ1Y3Rvcih0LGUsbixvKXt0aGlzLl9zY3JvbGxEaXNwYXRjaGVyPXQsdGhpcy5fbmdab25lPWUsdGhpcy5fdmlld3BvcnRSdWxlcj1uLHRoaXMuX2NvbmZpZz1vLHRoaXMuX3Njcm9sbFN1YnNjcmlwdGlvbj1udWxsLHRoaXMuX2RldGFjaD0oKT0+e3RoaXMuZGlzYWJsZSgpLHRoaXMuX292ZXJsYXlSZWYuaGFzQXR0YWNoZWQoKSYmdGhpcy5fbmdab25lLnJ1bigoKCk9PnRoaXMuX292ZXJsYXlSZWYuZGV0YWNoKCkpKX19YXR0YWNoKHQpe2lmKHRoaXMuX292ZXJsYXlSZWYmJigidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSl0aHJvdyBfQigpO3RoaXMuX292ZXJsYXlSZWY9dH1lbmFibGUoKXtpZih0aGlzLl9zY3JvbGxTdWJzY3JpcHRpb24pcmV0dXJuO2NvbnN0IHQ9dGhpcy5fc2Nyb2xsRGlzcGF0Y2hlci5zY3JvbGxlZCgwKTt0aGlzLl9jb25maWcmJnRoaXMuX2NvbmZpZy50aHJlc2hvbGQmJnRoaXMuX2NvbmZpZy50aHJlc2hvbGQ+MT8odGhpcy5faW5pdGlhbFNjcm9sbFBvc2l0aW9uPXRoaXMuX3ZpZXdwb3J0UnVsZXIuZ2V0Vmlld3BvcnRTY3JvbGxQb3NpdGlvbigpLnRvcCx0aGlzLl9zY3JvbGxTdWJzY3JpcHRpb249dC5zdWJzY3JpYmUoKCgpPT57Y29uc3QgdD10aGlzLl92aWV3cG9ydFJ1bGVyLmdldFZpZXdwb3J0U2Nyb2xsUG9zaXRpb24oKS50b3A7TWF0aC5hYnModC10aGlzLl9pbml0aWFsU2Nyb2xsUG9zaXRpb24pPnRoaXMuX2NvbmZpZy50aHJlc2hvbGQ/dGhpcy5fZGV0YWNoKCk6dGhpcy5fb3ZlcmxheVJlZi51cGRhdGVQb3NpdGlvbigpfSkpKTp0aGlzLl9zY3JvbGxTdWJzY3JpcHRpb249dC5zdWJzY3JpYmUodGhpcy5fZGV0YWNoKX1kaXNhYmxlKCl7dGhpcy5fc2Nyb2xsU3Vic2NyaXB0aW9uJiYodGhpcy5fc2Nyb2xsU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCksdGhpcy5fc2Nyb2xsU3Vic2NyaXB0aW9uPW51bGwpfWRldGFjaCgpe3RoaXMuZGlzYWJsZSgpLHRoaXMuX292ZXJsYXlSZWY9bnVsbH19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NsYXNzIE1Ce2VuYWJsZSgpe31kaXNhYmxlKCl7fWF0dGFjaCgpe319Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2Z1bmN0aW9uIHZCKHQsZSl7cmV0dXJuIGUuc29tZSgoZT0+dC5ib3R0b208ZS50b3B8fHQudG9wPmUuYm90dG9tfHx0LnJpZ2h0PGUubGVmdHx8dC5sZWZ0PmUucmlnaHQpKX1mdW5jdGlvbiB4Qih0LGUpe3JldHVybiBlLnNvbWUoKGU9PnQudG9wPGUudG9wfHx0LmJvdHRvbT5lLmJvdHRvbXx8dC5sZWZ0PGUubGVmdHx8dC5yaWdodD5lLnJpZ2h0KSl9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NsYXNzIE9Ce2NvbnN0cnVjdG9yKHQsZSxuLG8pe3RoaXMuX3Njcm9sbERpc3BhdGNoZXI9dCx0aGlzLl92aWV3cG9ydFJ1bGVyPWUsdGhpcy5fbmdab25lPW4sdGhpcy5fY29uZmlnPW8sdGhpcy5fc2Nyb2xsU3Vic2NyaXB0aW9uPW51bGx9YXR0YWNoKHQpe2lmKHRoaXMuX292ZXJsYXlSZWYmJigidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSl0aHJvdyBfQigpO3RoaXMuX292ZXJsYXlSZWY9dH1lbmFibGUoKXtpZighdGhpcy5fc2Nyb2xsU3Vic2NyaXB0aW9uKXt0aGlzLl9zY3JvbGxTdWJzY3JpcHRpb249dGhpcy5fc2Nyb2xsRGlzcGF0Y2hlci5zY3JvbGxlZCh0aGlzLl9jb25maWc/dGhpcy5fY29uZmlnLnNjcm9sbFRocm90dGxlOjApLnN1YnNjcmliZSgoKCk9PntpZih0aGlzLl9vdmVybGF5UmVmLnVwZGF0ZVBvc2l0aW9uKCksdGhpcy5fY29uZmlnJiZ0aGlzLl9jb25maWcuYXV0b0Nsb3NlKXtjb25zdCB0PXRoaXMuX292ZXJsYXlSZWYub3ZlcmxheUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkse3dpZHRoOmUsaGVpZ2h0Om59PXRoaXMuX3ZpZXdwb3J0UnVsZXIuZ2V0Vmlld3BvcnRTaXplKCk7dkIodCxbe3dpZHRoOmUsaGVpZ2h0Om4sYm90dG9tOm4scmlnaHQ6ZSx0b3A6MCxsZWZ0OjB9XSkmJih0aGlzLmRpc2FibGUoKSx0aGlzLl9uZ1pvbmUucnVuKCgoKT0+dGhpcy5fb3ZlcmxheVJlZi5kZXRhY2goKSkpKX19KSl9fWRpc2FibGUoKXt0aGlzLl9zY3JvbGxTdWJzY3JpcHRpb24mJih0aGlzLl9zY3JvbGxTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSx0aGlzLl9zY3JvbGxTdWJzY3JpcHRpb249bnVsbCl9ZGV0YWNoKCl7dGhpcy5kaXNhYmxlKCksdGhpcy5fb3ZlcmxheVJlZj1udWxsfX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY2xhc3MgUEJ7Y29uc3RydWN0b3IodCxlLG4sbyl7dGhpcy5fc2Nyb2xsRGlzcGF0Y2hlcj10LHRoaXMuX3ZpZXdwb3J0UnVsZXI9ZSx0aGlzLl9uZ1pvbmU9bix0aGlzLm5vb3A9KCk9Pm5ldyBNQix0aGlzLmNsb3NlPXQ9Pm5ldyBDQih0aGlzLl9zY3JvbGxEaXNwYXRjaGVyLHRoaXMuX25nWm9uZSx0aGlzLl92aWV3cG9ydFJ1bGVyLHQpLHRoaXMuYmxvY2s9KCk9Pm5ldyB5Qih0aGlzLl92aWV3cG9ydFJ1bGVyLHRoaXMuX2RvY3VtZW50KSx0aGlzLnJlcG9zaXRpb249dD0+bmV3IE9CKHRoaXMuX3Njcm9sbERpc3BhdGNoZXIsdGhpcy5fdmlld3BvcnRSdWxlcix0aGlzLl9uZ1pvbmUsdCksdGhpcy5fZG9jdW1lbnQ9b319UEIuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFBCKShUcihLTCksVHIoUUwpLFRyKG1DKSxUcihzTSkpfSxQQi7JtXByb3Y9U24oe2ZhY3Rvcnk6ZnVuY3Rpb24gdCgpe3JldHVybiBuZXcgUEIoVHIoS0wpLFRyKFFMKSxUcihtQyksVHIoc00pKX0sdG9rZW46UEIscHJvdmlkZWRJbjoicm9vdCJ9KSxQQi5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOktMfSx7dHlwZTpRTH0se3R5cGU6bUN9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltzTV19XX1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoUEIsW3t0eXBlOlVtLGFyZ3M6W3twcm92aWRlZEluOiJyb290In1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOktMfSx7dHlwZTpRTH0se3R5cGU6bUN9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltzTV19XX1dfSksbnVsbCk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3Mgd0J7Y29uc3RydWN0b3IodCl7aWYodGhpcy5zY3JvbGxTdHJhdGVneT1uZXcgTUIsdGhpcy5wYW5lbENsYXNzPSIiLHRoaXMuaGFzQmFja2Ryb3A9ITEsdGhpcy5iYWNrZHJvcENsYXNzPSJjZGstb3ZlcmxheS1kYXJrLWJhY2tkcm9wIix0aGlzLmRpc3Bvc2VPbk5hdmlnYXRpb249ITEsdCl7Y29uc3QgZT1PYmplY3Qua2V5cyh0KTtmb3IoY29uc3QgbiBvZiBlKXZvaWQgMCE9PXRbbl0mJih0aGlzW25dPXRbbl0pfX19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NsYXNzIGtCe2NvbnN0cnVjdG9yKHQsZSxuLG8saSl7dGhpcy5vZmZzZXRYPW4sdGhpcy5vZmZzZXRZPW8sdGhpcy5wYW5lbENsYXNzPWksdGhpcy5vcmlnaW5YPXQub3JpZ2luWCx0aGlzLm9yaWdpblk9dC5vcmlnaW5ZLHRoaXMub3ZlcmxheVg9ZS5vdmVybGF5WCx0aGlzLm92ZXJsYXlZPWUub3ZlcmxheVl9fWNsYXNzIFNCe31jbGFzcyBEQntjb25zdHJ1Y3Rvcih0LGUpe3RoaXMuY29ubmVjdGlvblBhaXI9dCx0aGlzLnNjcm9sbGFibGVWaWV3UHJvcGVydGllcz1lfX1mdW5jdGlvbiBSQih0LGUpe2lmKCJ0b3AiIT09ZSYmImJvdHRvbSIhPT1lJiYiY2VudGVyIiE9PWUpdGhyb3cgRXJyb3IoYENvbm5lY3RlZFBvc2l0aW9uOiBJbnZhbGlkICR7dH0gIiR7ZX0iLiBFeHBlY3RlZCAidG9wIiwgImJvdHRvbSIgb3IgImNlbnRlciIuYCl9ZnVuY3Rpb24gRUIodCxlKXtpZigic3RhcnQiIT09ZSYmImVuZCIhPT1lJiYiY2VudGVyIiE9PWUpdGhyb3cgRXJyb3IoYENvbm5lY3RlZFBvc2l0aW9uOiBJbnZhbGlkICR7dH0gIiR7ZX0iLiBFeHBlY3RlZCAic3RhcnQiLCAiZW5kIiBvciAiY2VudGVyIi5gKX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovREIuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTprQn0se3R5cGU6U0IsZGVjb3JhdG9yczpbe3R5cGU6QnJ9XX1dO2NsYXNzIEFCe2NvbnN0cnVjdG9yKHQpe3RoaXMuX2F0dGFjaGVkT3ZlcmxheXM9W10sdGhpcy5fZG9jdW1lbnQ9dH1uZ09uRGVzdHJveSgpe3RoaXMuZGV0YWNoKCl9YWRkKHQpe3RoaXMucmVtb3ZlKHQpLHRoaXMuX2F0dGFjaGVkT3ZlcmxheXMucHVzaCh0KX1yZW1vdmUodCl7Y29uc3QgZT10aGlzLl9hdHRhY2hlZE92ZXJsYXlzLmluZGV4T2YodCk7ZT4tMSYmdGhpcy5fYXR0YWNoZWRPdmVybGF5cy5zcGxpY2UoZSwxKSwwPT09dGhpcy5fYXR0YWNoZWRPdmVybGF5cy5sZW5ndGgmJnRoaXMuZGV0YWNoKCl9fUFCLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxBQikoVHIoc00pKX0sQUIuybVwcm92PVNuKHtmYWN0b3J5OmZ1bmN0aW9uIHQoKXtyZXR1cm4gbmV3IEFCKFRyKHNNKSl9LHRva2VuOkFCLHByb3ZpZGVkSW46InJvb3QifSksQUIuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbc01dfV19XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKEFCLFt7dHlwZTpVbSxhcmdzOlt7cHJvdmlkZWRJbjoicm9vdCJ9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbc01dfV19XX0pLG51bGwpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3MgVEIgZXh0ZW5kcyBBQntjb25zdHJ1Y3Rvcih0KXtzdXBlcih0KSx0aGlzLl9rZXlkb3duTGlzdGVuZXI9dD0+e2NvbnN0IGU9dGhpcy5fYXR0YWNoZWRPdmVybGF5cztmb3IobGV0IG49ZS5sZW5ndGgtMTtuPi0xO24tLSlpZihlW25dLl9rZXlkb3duRXZlbnRzLm9ic2VydmVycy5sZW5ndGg+MCl7ZVtuXS5fa2V5ZG93bkV2ZW50cy5uZXh0KHQpO2JyZWFrfX19YWRkKHQpe3N1cGVyLmFkZCh0KSx0aGlzLl9pc0F0dGFjaGVkfHwodGhpcy5fZG9jdW1lbnQuYm9keS5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIix0aGlzLl9rZXlkb3duTGlzdGVuZXIpLHRoaXMuX2lzQXR0YWNoZWQ9ITApfWRldGFjaCgpe3RoaXMuX2lzQXR0YWNoZWQmJih0aGlzLl9kb2N1bWVudC5ib2R5LnJlbW92ZUV2ZW50TGlzdGVuZXIoImtleWRvd24iLHRoaXMuX2tleWRvd25MaXN0ZW5lciksdGhpcy5faXNBdHRhY2hlZD0hMSl9fVRCLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxUQikoVHIoc00pKX0sVEIuybVwcm92PVNuKHtmYWN0b3J5OmZ1bmN0aW9uIHQoKXtyZXR1cm4gbmV3IFRCKFRyKHNNKSl9LHRva2VuOlRCLHByb3ZpZGVkSW46InJvb3QifSksVEIuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbc01dfV19XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKFRCLFt7dHlwZTpVbSxhcmdzOlt7cHJvdmlkZWRJbjoicm9vdCJ9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbc01dfV19XX0pLG51bGwpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3MgTkIgZXh0ZW5kcyBBQntjb25zdHJ1Y3Rvcih0LGUpe3N1cGVyKHQpLHRoaXMuX3BsYXRmb3JtPWUsdGhpcy5fY3Vyc29yU3R5bGVJc1NldD0hMSx0aGlzLl9jbGlja0xpc3RlbmVyPXQ9Pntjb25zdCBlPXZIKHQpLG49dGhpcy5fYXR0YWNoZWRPdmVybGF5cy5zbGljZSgpO2ZvcihsZXQgbz1uLmxlbmd0aC0xO28+LTE7by0tKXtjb25zdCBpPW5bb107aWYoIShpLl9vdXRzaWRlUG9pbnRlckV2ZW50cy5vYnNlcnZlcnMubGVuZ3RoPDEpJiZpLmhhc0F0dGFjaGVkKCkpe2lmKGkub3ZlcmxheUVsZW1lbnQuY29udGFpbnMoZSkpYnJlYWs7aS5fb3V0c2lkZVBvaW50ZXJFdmVudHMubmV4dCh0KX19fX1hZGQodCl7aWYoc3VwZXIuYWRkKHQpLCF0aGlzLl9pc0F0dGFjaGVkKXtjb25zdCB0PXRoaXMuX2RvY3VtZW50LmJvZHk7dC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsdGhpcy5fY2xpY2tMaXN0ZW5lciwhMCksdC5hZGRFdmVudExpc3RlbmVyKCJhdXhjbGljayIsdGhpcy5fY2xpY2tMaXN0ZW5lciwhMCksdC5hZGRFdmVudExpc3RlbmVyKCJjb250ZXh0bWVudSIsdGhpcy5fY2xpY2tMaXN0ZW5lciwhMCksdGhpcy5fcGxhdGZvcm0uSU9TJiYhdGhpcy5fY3Vyc29yU3R5bGVJc1NldCYmKHRoaXMuX2N1cnNvck9yaWdpbmFsVmFsdWU9dC5zdHlsZS5jdXJzb3IsdC5zdHlsZS5jdXJzb3I9InBvaW50ZXIiLHRoaXMuX2N1cnNvclN0eWxlSXNTZXQ9ITApLHRoaXMuX2lzQXR0YWNoZWQ9ITB9fWRldGFjaCgpe2lmKHRoaXMuX2lzQXR0YWNoZWQpe2NvbnN0IHQ9dGhpcy5fZG9jdW1lbnQuYm9keTt0LnJlbW92ZUV2ZW50TGlzdGVuZXIoImNsaWNrIix0aGlzLl9jbGlja0xpc3RlbmVyLCEwKSx0LnJlbW92ZUV2ZW50TGlzdGVuZXIoImF1eGNsaWNrIix0aGlzLl9jbGlja0xpc3RlbmVyLCEwKSx0LnJlbW92ZUV2ZW50TGlzdGVuZXIoImNvbnRleHRtZW51Iix0aGlzLl9jbGlja0xpc3RlbmVyLCEwKSx0aGlzLl9wbGF0Zm9ybS5JT1MmJnRoaXMuX2N1cnNvclN0eWxlSXNTZXQmJih0LnN0eWxlLmN1cnNvcj10aGlzLl9jdXJzb3JPcmlnaW5hbFZhbHVlLHRoaXMuX2N1cnNvclN0eWxlSXNTZXQ9ITEpLHRoaXMuX2lzQXR0YWNoZWQ9ITF9fX1OQi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8TkIpKFRyKHNNKSxUcihjSCkpfSxOQi7JtXByb3Y9U24oe2ZhY3Rvcnk6ZnVuY3Rpb24gdCgpe3JldHVybiBuZXcgTkIoVHIoc00pLFRyKGNIKSl9LHRva2VuOk5CLHByb3ZpZGVkSW46InJvb3QifSksTkIuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbc01dfV19LHt0eXBlOmNIfV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihOQixbe3R5cGU6VW0sYXJnczpbe3Byb3ZpZGVkSW46InJvb3QifV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W3NNXX1dfSx7dHlwZTpjSH1dfSksbnVsbCk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjb25zdCB6Qj0idW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdz93aW5kb3c6e30sSUI9dm9pZCAwIT09ekIuX19rYXJtYV9fJiYhIXpCLl9fa2FybWFfX3x8dm9pZCAwIT09ekIuamFzbWluZSYmISF6Qi5qYXNtaW5lfHx2b2lkIDAhPT16Qi5qZXN0JiYhIXpCLmplc3R8fHZvaWQgMCE9PXpCLk1vY2hhJiYhIXpCLk1vY2hhO2NsYXNzIEhCe2NvbnN0cnVjdG9yKHQsZSl7dGhpcy5fcGxhdGZvcm09ZSx0aGlzLl9kb2N1bWVudD10fW5nT25EZXN0cm95KCl7Y29uc3QgdD10aGlzLl9jb250YWluZXJFbGVtZW50O3QmJnQucGFyZW50Tm9kZSYmdC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHQpfWdldENvbnRhaW5lckVsZW1lbnQoKXtyZXR1cm4gdGhpcy5fY29udGFpbmVyRWxlbWVudHx8dGhpcy5fY3JlYXRlQ29udGFpbmVyKCksdGhpcy5fY29udGFpbmVyRWxlbWVudH1fY3JlYXRlQ29udGFpbmVyKCl7Y29uc3QgdD0iY2RrLW92ZXJsYXktY29udGFpbmVyIjtpZih0aGlzLl9wbGF0Zm9ybS5pc0Jyb3dzZXJ8fElCKXtjb25zdCBlPXRoaXMuX2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoYC4ke3R9W3BsYXRmb3JtPSJzZXJ2ZXIiXSwgLiR7dH1bcGxhdGZvcm09InRlc3QiXWApO2ZvcihsZXQgdD0wO3Q8ZS5sZW5ndGg7dCsrKWVbdF0ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChlW3RdKX1jb25zdCBlPXRoaXMuX2RvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO2UuY2xhc3NMaXN0LmFkZCh0KSxJQj9lLnNldEF0dHJpYnV0ZSgicGxhdGZvcm0iLCJ0ZXN0Iik6dGhpcy5fcGxhdGZvcm0uaXNCcm93c2VyfHxlLnNldEF0dHJpYnV0ZSgicGxhdGZvcm0iLCJzZXJ2ZXIiKSx0aGlzLl9kb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGUpLHRoaXMuX2NvbnRhaW5lckVsZW1lbnQ9ZX19SEIuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEhCKShUcihzTSksVHIoY0gpKX0sSEIuybVwcm92PVNuKHtmYWN0b3J5OmZ1bmN0aW9uIHQoKXtyZXR1cm4gbmV3IEhCKFRyKHNNKSxUcihjSCkpfSx0b2tlbjpIQixwcm92aWRlZEluOiJyb290In0pLEhCLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W3NNXX1dfSx7dHlwZTpjSH1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoSEIsW3t0eXBlOlVtLGFyZ3M6W3twcm92aWRlZEluOiJyb290In1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltzTV19XX0se3R5cGU6Y0h9XX0pLG51bGwpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3MgRkJ7Y29uc3RydWN0b3IodCxlLG4sbyxpLGEscixzLGwpe3RoaXMuX3BvcnRhbE91dGxldD10LHRoaXMuX2hvc3Q9ZSx0aGlzLl9wYW5lPW4sdGhpcy5fY29uZmlnPW8sdGhpcy5fbmdab25lPWksdGhpcy5fa2V5Ym9hcmREaXNwYXRjaGVyPWEsdGhpcy5fZG9jdW1lbnQ9cix0aGlzLl9sb2NhdGlvbj1zLHRoaXMuX291dHNpZGVDbGlja0Rpc3BhdGNoZXI9bCx0aGlzLl9iYWNrZHJvcEVsZW1lbnQ9bnVsbCx0aGlzLl9iYWNrZHJvcENsaWNrPW5ldyBCLHRoaXMuX2F0dGFjaG1lbnRzPW5ldyBCLHRoaXMuX2RldGFjaG1lbnRzPW5ldyBCLHRoaXMuX2xvY2F0aW9uQ2hhbmdlcz11LkVNUFRZLHRoaXMuX2JhY2tkcm9wQ2xpY2tIYW5kbGVyPXQ9PnRoaXMuX2JhY2tkcm9wQ2xpY2submV4dCh0KSx0aGlzLl9rZXlkb3duRXZlbnRzPW5ldyBCLHRoaXMuX291dHNpZGVQb2ludGVyRXZlbnRzPW5ldyBCLG8uc2Nyb2xsU3RyYXRlZ3kmJih0aGlzLl9zY3JvbGxTdHJhdGVneT1vLnNjcm9sbFN0cmF0ZWd5LHRoaXMuX3Njcm9sbFN0cmF0ZWd5LmF0dGFjaCh0aGlzKSksdGhpcy5fcG9zaXRpb25TdHJhdGVneT1vLnBvc2l0aW9uU3RyYXRlZ3l9Z2V0IG92ZXJsYXlFbGVtZW50KCl7cmV0dXJuIHRoaXMuX3BhbmV9Z2V0IGJhY2tkcm9wRWxlbWVudCgpe3JldHVybiB0aGlzLl9iYWNrZHJvcEVsZW1lbnR9Z2V0IGhvc3RFbGVtZW50KCl7cmV0dXJuIHRoaXMuX2hvc3R9YXR0YWNoKHQpe2xldCBlPXRoaXMuX3BvcnRhbE91dGxldC5hdHRhY2godCk7cmV0dXJuIXRoaXMuX2hvc3QucGFyZW50RWxlbWVudCYmdGhpcy5fcHJldmlvdXNIb3N0UGFyZW50JiZ0aGlzLl9wcmV2aW91c0hvc3RQYXJlbnQuYXBwZW5kQ2hpbGQodGhpcy5faG9zdCksdGhpcy5fcG9zaXRpb25TdHJhdGVneSYmdGhpcy5fcG9zaXRpb25TdHJhdGVneS5hdHRhY2godGhpcyksdGhpcy5fdXBkYXRlU3RhY2tpbmdPcmRlcigpLHRoaXMuX3VwZGF0ZUVsZW1lbnRTaXplKCksdGhpcy5fdXBkYXRlRWxlbWVudERpcmVjdGlvbigpLHRoaXMuX3Njcm9sbFN0cmF0ZWd5JiZ0aGlzLl9zY3JvbGxTdHJhdGVneS5lbmFibGUoKSx0aGlzLl9uZ1pvbmUub25TdGFibGUucGlwZSh2ZSgxKSkuc3Vic2NyaWJlKCgoKT0+e3RoaXMuaGFzQXR0YWNoZWQoKSYmdGhpcy51cGRhdGVQb3NpdGlvbigpfSkpLHRoaXMuX3RvZ2dsZVBvaW50ZXJFdmVudHMoITApLHRoaXMuX2NvbmZpZy5oYXNCYWNrZHJvcCYmdGhpcy5fYXR0YWNoQmFja2Ryb3AoKSx0aGlzLl9jb25maWcucGFuZWxDbGFzcyYmdGhpcy5fdG9nZ2xlQ2xhc3Nlcyh0aGlzLl9wYW5lLHRoaXMuX2NvbmZpZy5wYW5lbENsYXNzLCEwKSx0aGlzLl9hdHRhY2htZW50cy5uZXh0KCksdGhpcy5fa2V5Ym9hcmREaXNwYXRjaGVyLmFkZCh0aGlzKSx0aGlzLl9jb25maWcuZGlzcG9zZU9uTmF2aWdhdGlvbiYmKHRoaXMuX2xvY2F0aW9uQ2hhbmdlcz10aGlzLl9sb2NhdGlvbi5zdWJzY3JpYmUoKCgpPT50aGlzLmRpc3Bvc2UoKSkpKSx0aGlzLl9vdXRzaWRlQ2xpY2tEaXNwYXRjaGVyLmFkZCh0aGlzKSxlfWRldGFjaCgpe2lmKCF0aGlzLmhhc0F0dGFjaGVkKCkpcmV0dXJuO3RoaXMuZGV0YWNoQmFja2Ryb3AoKSx0aGlzLl90b2dnbGVQb2ludGVyRXZlbnRzKCExKSx0aGlzLl9wb3NpdGlvblN0cmF0ZWd5JiZ0aGlzLl9wb3NpdGlvblN0cmF0ZWd5LmRldGFjaCYmdGhpcy5fcG9zaXRpb25TdHJhdGVneS5kZXRhY2goKSx0aGlzLl9zY3JvbGxTdHJhdGVneSYmdGhpcy5fc2Nyb2xsU3RyYXRlZ3kuZGlzYWJsZSgpO2NvbnN0IHQ9dGhpcy5fcG9ydGFsT3V0bGV0LmRldGFjaCgpO3JldHVybiB0aGlzLl9kZXRhY2htZW50cy5uZXh0KCksdGhpcy5fa2V5Ym9hcmREaXNwYXRjaGVyLnJlbW92ZSh0aGlzKSx0aGlzLl9kZXRhY2hDb250ZW50V2hlblN0YWJsZSgpLHRoaXMuX2xvY2F0aW9uQ2hhbmdlcy51bnN1YnNjcmliZSgpLHRoaXMuX291dHNpZGVDbGlja0Rpc3BhdGNoZXIucmVtb3ZlKHRoaXMpLHR9ZGlzcG9zZSgpe2NvbnN0IHQ9dGhpcy5oYXNBdHRhY2hlZCgpO3RoaXMuX3Bvc2l0aW9uU3RyYXRlZ3kmJnRoaXMuX3Bvc2l0aW9uU3RyYXRlZ3kuZGlzcG9zZSgpLHRoaXMuX2Rpc3Bvc2VTY3JvbGxTdHJhdGVneSgpLHRoaXMuZGV0YWNoQmFja2Ryb3AoKSx0aGlzLl9sb2NhdGlvbkNoYW5nZXMudW5zdWJzY3JpYmUoKSx0aGlzLl9rZXlib2FyZERpc3BhdGNoZXIucmVtb3ZlKHRoaXMpLHRoaXMuX3BvcnRhbE91dGxldC5kaXNwb3NlKCksdGhpcy5fYXR0YWNobWVudHMuY29tcGxldGUoKSx0aGlzLl9iYWNrZHJvcENsaWNrLmNvbXBsZXRlKCksdGhpcy5fa2V5ZG93bkV2ZW50cy5jb21wbGV0ZSgpLHRoaXMuX291dHNpZGVQb2ludGVyRXZlbnRzLmNvbXBsZXRlKCksdGhpcy5fb3V0c2lkZUNsaWNrRGlzcGF0Y2hlci5yZW1vdmUodGhpcyksdGhpcy5faG9zdCYmdGhpcy5faG9zdC5wYXJlbnROb2RlJiYodGhpcy5faG9zdC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRoaXMuX2hvc3QpLHRoaXMuX2hvc3Q9bnVsbCksdGhpcy5fcHJldmlvdXNIb3N0UGFyZW50PXRoaXMuX3BhbmU9bnVsbCx0JiZ0aGlzLl9kZXRhY2htZW50cy5uZXh0KCksdGhpcy5fZGV0YWNobWVudHMuY29tcGxldGUoKX1oYXNBdHRhY2hlZCgpe3JldHVybiB0aGlzLl9wb3J0YWxPdXRsZXQuaGFzQXR0YWNoZWQoKX1iYWNrZHJvcENsaWNrKCl7cmV0dXJuIHRoaXMuX2JhY2tkcm9wQ2xpY2t9YXR0YWNobWVudHMoKXtyZXR1cm4gdGhpcy5fYXR0YWNobWVudHN9ZGV0YWNobWVudHMoKXtyZXR1cm4gdGhpcy5fZGV0YWNobWVudHN9a2V5ZG93bkV2ZW50cygpe3JldHVybiB0aGlzLl9rZXlkb3duRXZlbnRzfW91dHNpZGVQb2ludGVyRXZlbnRzKCl7cmV0dXJuIHRoaXMuX291dHNpZGVQb2ludGVyRXZlbnRzfWdldENvbmZpZygpe3JldHVybiB0aGlzLl9jb25maWd9dXBkYXRlUG9zaXRpb24oKXt0aGlzLl9wb3NpdGlvblN0cmF0ZWd5JiZ0aGlzLl9wb3NpdGlvblN0cmF0ZWd5LmFwcGx5KCl9dXBkYXRlUG9zaXRpb25TdHJhdGVneSh0KXt0IT09dGhpcy5fcG9zaXRpb25TdHJhdGVneSYmKHRoaXMuX3Bvc2l0aW9uU3RyYXRlZ3kmJnRoaXMuX3Bvc2l0aW9uU3RyYXRlZ3kuZGlzcG9zZSgpLHRoaXMuX3Bvc2l0aW9uU3RyYXRlZ3k9dCx0aGlzLmhhc0F0dGFjaGVkKCkmJih0LmF0dGFjaCh0aGlzKSx0aGlzLnVwZGF0ZVBvc2l0aW9uKCkpKX11cGRhdGVTaXplKHQpe3RoaXMuX2NvbmZpZz1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdGhpcy5fY29uZmlnKSx0KSx0aGlzLl91cGRhdGVFbGVtZW50U2l6ZSgpfXNldERpcmVjdGlvbih0KXt0aGlzLl9jb25maWc9T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHRoaXMuX2NvbmZpZykse2RpcmVjdGlvbjp0fSksdGhpcy5fdXBkYXRlRWxlbWVudERpcmVjdGlvbigpfWFkZFBhbmVsQ2xhc3ModCl7dGhpcy5fcGFuZSYmdGhpcy5fdG9nZ2xlQ2xhc3Nlcyh0aGlzLl9wYW5lLHQsITApfXJlbW92ZVBhbmVsQ2xhc3ModCl7dGhpcy5fcGFuZSYmdGhpcy5fdG9nZ2xlQ2xhc3Nlcyh0aGlzLl9wYW5lLHQsITEpfWdldERpcmVjdGlvbigpe2NvbnN0IHQ9dGhpcy5fY29uZmlnLmRpcmVjdGlvbjtyZXR1cm4gdD8ic3RyaW5nIj09dHlwZW9mIHQ/dDp0LnZhbHVlOiJsdHIifXVwZGF0ZVNjcm9sbFN0cmF0ZWd5KHQpe3QhPT10aGlzLl9zY3JvbGxTdHJhdGVneSYmKHRoaXMuX2Rpc3Bvc2VTY3JvbGxTdHJhdGVneSgpLHRoaXMuX3Njcm9sbFN0cmF0ZWd5PXQsdGhpcy5oYXNBdHRhY2hlZCgpJiYodC5hdHRhY2godGhpcyksdC5lbmFibGUoKSkpfV91cGRhdGVFbGVtZW50RGlyZWN0aW9uKCl7dGhpcy5faG9zdC5zZXRBdHRyaWJ1dGUoImRpciIsdGhpcy5nZXREaXJlY3Rpb24oKSl9X3VwZGF0ZUVsZW1lbnRTaXplKCl7aWYoIXRoaXMuX3BhbmUpcmV0dXJuO2NvbnN0IHQ9dGhpcy5fcGFuZS5zdHlsZTt0LndpZHRoPWFIKHRoaXMuX2NvbmZpZy53aWR0aCksdC5oZWlnaHQ9YUgodGhpcy5fY29uZmlnLmhlaWdodCksdC5taW5XaWR0aD1hSCh0aGlzLl9jb25maWcubWluV2lkdGgpLHQubWluSGVpZ2h0PWFIKHRoaXMuX2NvbmZpZy5taW5IZWlnaHQpLHQubWF4V2lkdGg9YUgodGhpcy5fY29uZmlnLm1heFdpZHRoKSx0Lm1heEhlaWdodD1hSCh0aGlzLl9jb25maWcubWF4SGVpZ2h0KX1fdG9nZ2xlUG9pbnRlckV2ZW50cyh0KXt0aGlzLl9wYW5lLnN0eWxlLnBvaW50ZXJFdmVudHM9dD8iIjoibm9uZSJ9X2F0dGFjaEJhY2tkcm9wKCl7Y29uc3QgdD0iY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZyI7dGhpcy5fYmFja2Ryb3BFbGVtZW50PXRoaXMuX2RvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLHRoaXMuX2JhY2tkcm9wRWxlbWVudC5jbGFzc0xpc3QuYWRkKCJjZGstb3ZlcmxheS1iYWNrZHJvcCIpLHRoaXMuX2NvbmZpZy5iYWNrZHJvcENsYXNzJiZ0aGlzLl90b2dnbGVDbGFzc2VzKHRoaXMuX2JhY2tkcm9wRWxlbWVudCx0aGlzLl9jb25maWcuYmFja2Ryb3BDbGFzcywhMCksdGhpcy5faG9zdC5wYXJlbnRFbGVtZW50Lmluc2VydEJlZm9yZSh0aGlzLl9iYWNrZHJvcEVsZW1lbnQsdGhpcy5faG9zdCksdGhpcy5fYmFja2Ryb3BFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIix0aGlzLl9iYWNrZHJvcENsaWNrSGFuZGxlciksInVuZGVmaW5lZCIhPXR5cGVvZiByZXF1ZXN0QW5pbWF0aW9uRnJhbWU/dGhpcy5fbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgoKT0+e3JlcXVlc3RBbmltYXRpb25GcmFtZSgoKCk9Pnt0aGlzLl9iYWNrZHJvcEVsZW1lbnQmJnRoaXMuX2JhY2tkcm9wRWxlbWVudC5jbGFzc0xpc3QuYWRkKHQpfSkpfSkpOnRoaXMuX2JhY2tkcm9wRWxlbWVudC5jbGFzc0xpc3QuYWRkKHQpfV91cGRhdGVTdGFja2luZ09yZGVyKCl7dGhpcy5faG9zdC5uZXh0U2libGluZyYmdGhpcy5faG9zdC5wYXJlbnROb2RlLmFwcGVuZENoaWxkKHRoaXMuX2hvc3QpfWRldGFjaEJhY2tkcm9wKCl7bGV0IHQsZT10aGlzLl9iYWNrZHJvcEVsZW1lbnQ7aWYoIWUpcmV0dXJuO2xldCBuPSgpPT57ZSYmKGUucmVtb3ZlRXZlbnRMaXN0ZW5lcigiY2xpY2siLHRoaXMuX2JhY2tkcm9wQ2xpY2tIYW5kbGVyKSxlLnJlbW92ZUV2ZW50TGlzdGVuZXIoInRyYW5zaXRpb25lbmQiLG4pLGUucGFyZW50Tm9kZSYmZS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGUpKSx0aGlzLl9iYWNrZHJvcEVsZW1lbnQ9PWUmJih0aGlzLl9iYWNrZHJvcEVsZW1lbnQ9bnVsbCksdGhpcy5fY29uZmlnLmJhY2tkcm9wQ2xhc3MmJnRoaXMuX3RvZ2dsZUNsYXNzZXMoZSx0aGlzLl9jb25maWcuYmFja2Ryb3BDbGFzcywhMSksY2xlYXJUaW1lb3V0KHQpfTtlLmNsYXNzTGlzdC5yZW1vdmUoImNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmciKSx0aGlzLl9uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCgpPT57ZS5hZGRFdmVudExpc3RlbmVyKCJ0cmFuc2l0aW9uZW5kIixuKX0pKSxlLnN0eWxlLnBvaW50ZXJFdmVudHM9Im5vbmUiLHQ9dGhpcy5fbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgoKT0+c2V0VGltZW91dChuLDUwMCkpKX1fdG9nZ2xlQ2xhc3Nlcyh0LGUsbil7Y29uc3Qgbz10LmNsYXNzTGlzdDtpSChlKS5mb3JFYWNoKCh0PT57dCYmKG4/by5hZGQodCk6by5yZW1vdmUodCkpfSkpfV9kZXRhY2hDb250ZW50V2hlblN0YWJsZSgpe3RoaXMuX25nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKCk9Pntjb25zdCB0PXRoaXMuX25nWm9uZS5vblN0YWJsZS5waXBlKGplKHBlKHRoaXMuX2F0dGFjaG1lbnRzLHRoaXMuX2RldGFjaG1lbnRzKSkpLnN1YnNjcmliZSgoKCk9Pnt0aGlzLl9wYW5lJiZ0aGlzLl9ob3N0JiYwIT09dGhpcy5fcGFuZS5jaGlsZHJlbi5sZW5ndGh8fCh0aGlzLl9wYW5lJiZ0aGlzLl9jb25maWcucGFuZWxDbGFzcyYmdGhpcy5fdG9nZ2xlQ2xhc3Nlcyh0aGlzLl9wYW5lLHRoaXMuX2NvbmZpZy5wYW5lbENsYXNzLCExKSx0aGlzLl9ob3N0JiZ0aGlzLl9ob3N0LnBhcmVudEVsZW1lbnQmJih0aGlzLl9wcmV2aW91c0hvc3RQYXJlbnQ9dGhpcy5faG9zdC5wYXJlbnRFbGVtZW50LHRoaXMuX3ByZXZpb3VzSG9zdFBhcmVudC5yZW1vdmVDaGlsZCh0aGlzLl9ob3N0KSksdC51bnN1YnNjcmliZSgpKX0pKX0pKX1fZGlzcG9zZVNjcm9sbFN0cmF0ZWd5KCl7Y29uc3QgdD10aGlzLl9zY3JvbGxTdHJhdGVneTt0JiYodC5kaXNhYmxlKCksdC5kZXRhY2gmJnQuZGV0YWNoKCkpfX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY29uc3QgTEI9ImNkay1vdmVybGF5LWNvbm5lY3RlZC1wb3NpdGlvbi1ib3VuZGluZy1ib3giLEJCPS8oW0EtWmEteiVdKykkLztjbGFzcyBWQntjb25zdHJ1Y3Rvcih0LGUsbixvLGkpe3RoaXMuX3ZpZXdwb3J0UnVsZXI9ZSx0aGlzLl9kb2N1bWVudD1uLHRoaXMuX3BsYXRmb3JtPW8sdGhpcy5fb3ZlcmxheUNvbnRhaW5lcj1pLHRoaXMuX2xhc3RCb3VuZGluZ0JveFNpemU9e3dpZHRoOjAsaGVpZ2h0OjB9LHRoaXMuX2lzUHVzaGVkPSExLHRoaXMuX2NhblB1c2g9ITAsdGhpcy5fZ3Jvd0FmdGVyT3Blbj0hMSx0aGlzLl9oYXNGbGV4aWJsZURpbWVuc2lvbnM9ITAsdGhpcy5fcG9zaXRpb25Mb2NrZWQ9ITEsdGhpcy5fdmlld3BvcnRNYXJnaW49MCx0aGlzLl9zY3JvbGxhYmxlcz1bXSx0aGlzLl9wcmVmZXJyZWRQb3NpdGlvbnM9W10sdGhpcy5fcG9zaXRpb25DaGFuZ2VzPW5ldyBCLHRoaXMuX3Jlc2l6ZVN1YnNjcmlwdGlvbj11LkVNUFRZLHRoaXMuX29mZnNldFg9MCx0aGlzLl9vZmZzZXRZPTAsdGhpcy5fYXBwbGllZFBhbmVsQ2xhc3Nlcz1bXSx0aGlzLnBvc2l0aW9uQ2hhbmdlcz10aGlzLl9wb3NpdGlvbkNoYW5nZXMsdGhpcy5zZXRPcmlnaW4odCl9Z2V0IHBvc2l0aW9ucygpe3JldHVybiB0aGlzLl9wcmVmZXJyZWRQb3NpdGlvbnN9YXR0YWNoKHQpe2lmKHRoaXMuX292ZXJsYXlSZWYmJnQhPT10aGlzLl9vdmVybGF5UmVmJiYoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkpdGhyb3cgRXJyb3IoIlRoaXMgcG9zaXRpb24gc3RyYXRlZ3kgaXMgYWxyZWFkeSBhdHRhY2hlZCB0byBhbiBvdmVybGF5Iik7dGhpcy5fdmFsaWRhdGVQb3NpdGlvbnMoKSx0Lmhvc3RFbGVtZW50LmNsYXNzTGlzdC5hZGQoTEIpLHRoaXMuX292ZXJsYXlSZWY9dCx0aGlzLl9ib3VuZGluZ0JveD10Lmhvc3RFbGVtZW50LHRoaXMuX3BhbmU9dC5vdmVybGF5RWxlbWVudCx0aGlzLl9pc0Rpc3Bvc2VkPSExLHRoaXMuX2lzSW5pdGlhbFJlbmRlcj0hMCx0aGlzLl9sYXN0UG9zaXRpb249bnVsbCx0aGlzLl9yZXNpemVTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSx0aGlzLl9yZXNpemVTdWJzY3JpcHRpb249dGhpcy5fdmlld3BvcnRSdWxlci5jaGFuZ2UoKS5zdWJzY3JpYmUoKCgpPT57dGhpcy5faXNJbml0aWFsUmVuZGVyPSEwLHRoaXMuYXBwbHkoKX0pKX1hcHBseSgpe2lmKHRoaXMuX2lzRGlzcG9zZWR8fCF0aGlzLl9wbGF0Zm9ybS5pc0Jyb3dzZXIpcmV0dXJuO2lmKCF0aGlzLl9pc0luaXRpYWxSZW5kZXImJnRoaXMuX3Bvc2l0aW9uTG9ja2VkJiZ0aGlzLl9sYXN0UG9zaXRpb24pcmV0dXJuIHZvaWQgdGhpcy5yZWFwcGx5TGFzdFBvc2l0aW9uKCk7dGhpcy5fY2xlYXJQYW5lbENsYXNzZXMoKSx0aGlzLl9yZXNldE92ZXJsYXlFbGVtZW50U3R5bGVzKCksdGhpcy5fcmVzZXRCb3VuZGluZ0JveFN0eWxlcygpLHRoaXMuX3ZpZXdwb3J0UmVjdD10aGlzLl9nZXROYXJyb3dlZFZpZXdwb3J0UmVjdCgpLHRoaXMuX29yaWdpblJlY3Q9dGhpcy5fZ2V0T3JpZ2luUmVjdCgpLHRoaXMuX292ZXJsYXlSZWN0PXRoaXMuX3BhbmUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7Y29uc3QgdD10aGlzLl9vcmlnaW5SZWN0LGU9dGhpcy5fb3ZlcmxheVJlY3Qsbj10aGlzLl92aWV3cG9ydFJlY3Qsbz1bXTtsZXQgaTtmb3IobGV0IGEgb2YgdGhpcy5fcHJlZmVycmVkUG9zaXRpb25zKXtsZXQgcj10aGlzLl9nZXRPcmlnaW5Qb2ludCh0LGEpLHM9dGhpcy5fZ2V0T3ZlcmxheVBvaW50KHIsZSxhKSxsPXRoaXMuX2dldE92ZXJsYXlGaXQocyxlLG4sYSk7aWYobC5pc0NvbXBsZXRlbHlXaXRoaW5WaWV3cG9ydClyZXR1cm4gdGhpcy5faXNQdXNoZWQ9ITEsdm9pZCB0aGlzLl9hcHBseVBvc2l0aW9uKGEscik7dGhpcy5fY2FuRml0V2l0aEZsZXhpYmxlRGltZW5zaW9ucyhsLHMsbik/by5wdXNoKHtwb3NpdGlvbjphLG9yaWdpbjpyLG92ZXJsYXlSZWN0OmUsYm91bmRpbmdCb3hSZWN0OnRoaXMuX2NhbGN1bGF0ZUJvdW5kaW5nQm94UmVjdChyLGEpfSk6KCFpfHxpLm92ZXJsYXlGaXQudmlzaWJsZUFyZWE8bC52aXNpYmxlQXJlYSkmJihpPXtvdmVybGF5Rml0Omwsb3ZlcmxheVBvaW50OnMsb3JpZ2luUG9pbnQ6cixwb3NpdGlvbjphLG92ZXJsYXlSZWN0OmV9KX1pZihvLmxlbmd0aCl7bGV0IHQ9bnVsbCxlPS0xO2Zvcihjb25zdCBuIG9mIG8pe2NvbnN0IG89bi5ib3VuZGluZ0JveFJlY3Qud2lkdGgqbi5ib3VuZGluZ0JveFJlY3QuaGVpZ2h0KihuLnBvc2l0aW9uLndlaWdodHx8MSk7bz5lJiYoZT1vLHQ9bil9cmV0dXJuIHRoaXMuX2lzUHVzaGVkPSExLHZvaWQgdGhpcy5fYXBwbHlQb3NpdGlvbih0LnBvc2l0aW9uLHQub3JpZ2luKX1pZih0aGlzLl9jYW5QdXNoKXJldHVybiB0aGlzLl9pc1B1c2hlZD0hMCx2b2lkIHRoaXMuX2FwcGx5UG9zaXRpb24oaS5wb3NpdGlvbixpLm9yaWdpblBvaW50KTt0aGlzLl9hcHBseVBvc2l0aW9uKGkucG9zaXRpb24saS5vcmlnaW5Qb2ludCl9ZGV0YWNoKCl7dGhpcy5fY2xlYXJQYW5lbENsYXNzZXMoKSx0aGlzLl9sYXN0UG9zaXRpb249bnVsbCx0aGlzLl9wcmV2aW91c1B1c2hBbW91bnQ9bnVsbCx0aGlzLl9yZXNpemVTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKX1kaXNwb3NlKCl7dGhpcy5faXNEaXNwb3NlZHx8KHRoaXMuX2JvdW5kaW5nQm94JiZqQih0aGlzLl9ib3VuZGluZ0JveC5zdHlsZSx7dG9wOiIiLGxlZnQ6IiIscmlnaHQ6IiIsYm90dG9tOiIiLGhlaWdodDoiIix3aWR0aDoiIixhbGlnbkl0ZW1zOiIiLGp1c3RpZnlDb250ZW50OiIifSksdGhpcy5fcGFuZSYmdGhpcy5fcmVzZXRPdmVybGF5RWxlbWVudFN0eWxlcygpLHRoaXMuX292ZXJsYXlSZWYmJnRoaXMuX292ZXJsYXlSZWYuaG9zdEVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShMQiksdGhpcy5kZXRhY2goKSx0aGlzLl9wb3NpdGlvbkNoYW5nZXMuY29tcGxldGUoKSx0aGlzLl9vdmVybGF5UmVmPXRoaXMuX2JvdW5kaW5nQm94PW51bGwsdGhpcy5faXNEaXNwb3NlZD0hMCl9cmVhcHBseUxhc3RQb3NpdGlvbigpe2lmKCF0aGlzLl9pc0Rpc3Bvc2VkJiYoIXRoaXMuX3BsYXRmb3JtfHx0aGlzLl9wbGF0Zm9ybS5pc0Jyb3dzZXIpKXt0aGlzLl9vcmlnaW5SZWN0PXRoaXMuX2dldE9yaWdpblJlY3QoKSx0aGlzLl9vdmVybGF5UmVjdD10aGlzLl9wYW5lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHRoaXMuX3ZpZXdwb3J0UmVjdD10aGlzLl9nZXROYXJyb3dlZFZpZXdwb3J0UmVjdCgpO2NvbnN0IHQ9dGhpcy5fbGFzdFBvc2l0aW9ufHx0aGlzLl9wcmVmZXJyZWRQb3NpdGlvbnNbMF0sZT10aGlzLl9nZXRPcmlnaW5Qb2ludCh0aGlzLl9vcmlnaW5SZWN0LHQpO3RoaXMuX2FwcGx5UG9zaXRpb24odCxlKX19d2l0aFNjcm9sbGFibGVDb250YWluZXJzKHQpe3JldHVybiB0aGlzLl9zY3JvbGxhYmxlcz10LHRoaXN9d2l0aFBvc2l0aW9ucyh0KXtyZXR1cm4gdGhpcy5fcHJlZmVycmVkUG9zaXRpb25zPXQsLTE9PT10LmluZGV4T2YodGhpcy5fbGFzdFBvc2l0aW9uKSYmKHRoaXMuX2xhc3RQb3NpdGlvbj1udWxsKSx0aGlzLl92YWxpZGF0ZVBvc2l0aW9ucygpLHRoaXN9d2l0aFZpZXdwb3J0TWFyZ2luKHQpe3JldHVybiB0aGlzLl92aWV3cG9ydE1hcmdpbj10LHRoaXN9d2l0aEZsZXhpYmxlRGltZW5zaW9ucyh0PSEwKXtyZXR1cm4gdGhpcy5faGFzRmxleGlibGVEaW1lbnNpb25zPXQsdGhpc313aXRoR3Jvd0FmdGVyT3Blbih0PSEwKXtyZXR1cm4gdGhpcy5fZ3Jvd0FmdGVyT3Blbj10LHRoaXN9d2l0aFB1c2godD0hMCl7cmV0dXJuIHRoaXMuX2NhblB1c2g9dCx0aGlzfXdpdGhMb2NrZWRQb3NpdGlvbih0PSEwKXtyZXR1cm4gdGhpcy5fcG9zaXRpb25Mb2NrZWQ9dCx0aGlzfXNldE9yaWdpbih0KXtyZXR1cm4gdGhpcy5fb3JpZ2luPXQsdGhpc313aXRoRGVmYXVsdE9mZnNldFgodCl7cmV0dXJuIHRoaXMuX29mZnNldFg9dCx0aGlzfXdpdGhEZWZhdWx0T2Zmc2V0WSh0KXtyZXR1cm4gdGhpcy5fb2Zmc2V0WT10LHRoaXN9d2l0aFRyYW5zZm9ybU9yaWdpbk9uKHQpe3JldHVybiB0aGlzLl90cmFuc2Zvcm1PcmlnaW5TZWxlY3Rvcj10LHRoaXN9X2dldE9yaWdpblBvaW50KHQsZSl7bGV0IG4sbztpZigiY2VudGVyIj09ZS5vcmlnaW5YKW49dC5sZWZ0K3Qud2lkdGgvMjtlbHNle2NvbnN0IG89dGhpcy5faXNSdGwoKT90LnJpZ2h0OnQubGVmdCxpPXRoaXMuX2lzUnRsKCk/dC5sZWZ0OnQucmlnaHQ7bj0ic3RhcnQiPT1lLm9yaWdpblg/bzppfXJldHVybiBvPSJjZW50ZXIiPT1lLm9yaWdpblk/dC50b3ArdC5oZWlnaHQvMjoidG9wIj09ZS5vcmlnaW5ZP3QudG9wOnQuYm90dG9tLHt4Om4seTpvfX1fZ2V0T3ZlcmxheVBvaW50KHQsZSxuKXtsZXQgbyxpO3JldHVybiBvPSJjZW50ZXIiPT1uLm92ZXJsYXlYPy1lLndpZHRoLzI6InN0YXJ0Ij09PW4ub3ZlcmxheVg/dGhpcy5faXNSdGwoKT8tZS53aWR0aDowOnRoaXMuX2lzUnRsKCk/MDotZS53aWR0aCxpPSJjZW50ZXIiPT1uLm92ZXJsYXlZPy1lLmhlaWdodC8yOiJ0b3AiPT1uLm92ZXJsYXlZPzA6LWUuaGVpZ2h0LHt4OnQueCtvLHk6dC55K2l9fV9nZXRPdmVybGF5Rml0KHQsZSxuLG8pe2NvbnN0IGk9V0IoZSk7bGV0e3g6YSx5OnJ9PXQscz10aGlzLl9nZXRPZmZzZXQobywieCIpLGw9dGhpcy5fZ2V0T2Zmc2V0KG8sInkiKTtzJiYoYSs9cyksbCYmKHIrPWwpO2xldCBjPTAtcixkPXIraS5oZWlnaHQtbi5oZWlnaHQscD10aGlzLl9zdWJ0cmFjdE92ZXJmbG93cyhpLndpZHRoLDAtYSxhK2kud2lkdGgtbi53aWR0aCksbT10aGlzLl9zdWJ0cmFjdE92ZXJmbG93cyhpLmhlaWdodCxjLGQpLGY9cCptO3JldHVybnt2aXNpYmxlQXJlYTpmLGlzQ29tcGxldGVseVdpdGhpblZpZXdwb3J0Omkud2lkdGgqaS5oZWlnaHQ9PT1mLGZpdHNJblZpZXdwb3J0VmVydGljYWxseTptPT09aS5oZWlnaHQsZml0c0luVmlld3BvcnRIb3Jpem9udGFsbHk6cD09aS53aWR0aH19X2NhbkZpdFdpdGhGbGV4aWJsZURpbWVuc2lvbnModCxlLG4pe2lmKHRoaXMuX2hhc0ZsZXhpYmxlRGltZW5zaW9ucyl7Y29uc3Qgbz1uLmJvdHRvbS1lLnksaT1uLnJpZ2h0LWUueCxhPVVCKHRoaXMuX292ZXJsYXlSZWYuZ2V0Q29uZmlnKCkubWluSGVpZ2h0KSxyPVVCKHRoaXMuX292ZXJsYXlSZWYuZ2V0Q29uZmlnKCkubWluV2lkdGgpLHM9dC5maXRzSW5WaWV3cG9ydEhvcml6b250YWxseXx8bnVsbCE9ciYmcjw9aTtyZXR1cm4odC5maXRzSW5WaWV3cG9ydFZlcnRpY2FsbHl8fG51bGwhPWEmJmE8PW8pJiZzfXJldHVybiExfV9wdXNoT3ZlcmxheU9uU2NyZWVuKHQsZSxuKXtpZih0aGlzLl9wcmV2aW91c1B1c2hBbW91bnQmJnRoaXMuX3Bvc2l0aW9uTG9ja2VkKXJldHVybnt4OnQueCt0aGlzLl9wcmV2aW91c1B1c2hBbW91bnQueCx5OnQueSt0aGlzLl9wcmV2aW91c1B1c2hBbW91bnQueX07Y29uc3Qgbz1XQihlKSxpPXRoaXMuX3ZpZXdwb3J0UmVjdCxhPU1hdGgubWF4KHQueCtvLndpZHRoLWkud2lkdGgsMCkscj1NYXRoLm1heCh0Lnkrby5oZWlnaHQtaS5oZWlnaHQsMCkscz1NYXRoLm1heChpLnRvcC1uLnRvcC10LnksMCksbD1NYXRoLm1heChpLmxlZnQtbi5sZWZ0LXQueCwwKTtsZXQgYz0wLGQ9MDtyZXR1cm4gYz1vLndpZHRoPD1pLndpZHRoP2x8fC1hOnQueDx0aGlzLl92aWV3cG9ydE1hcmdpbj9pLmxlZnQtbi5sZWZ0LXQueDowLGQ9by5oZWlnaHQ8PWkuaGVpZ2h0P3N8fC1yOnQueTx0aGlzLl92aWV3cG9ydE1hcmdpbj9pLnRvcC1uLnRvcC10Lnk6MCx0aGlzLl9wcmV2aW91c1B1c2hBbW91bnQ9e3g6Yyx5OmR9LHt4OnQueCtjLHk6dC55K2R9fV9hcHBseVBvc2l0aW9uKHQsZSl7aWYodGhpcy5fc2V0VHJhbnNmb3JtT3JpZ2luKHQpLHRoaXMuX3NldE92ZXJsYXlFbGVtZW50U3R5bGVzKGUsdCksdGhpcy5fc2V0Qm91bmRpbmdCb3hTdHlsZXMoZSx0KSx0LnBhbmVsQ2xhc3MmJnRoaXMuX2FkZFBhbmVsQ2xhc3Nlcyh0LnBhbmVsQ2xhc3MpLHRoaXMuX2xhc3RQb3NpdGlvbj10LHRoaXMuX3Bvc2l0aW9uQ2hhbmdlcy5vYnNlcnZlcnMubGVuZ3RoKXtjb25zdCBlPXRoaXMuX2dldFNjcm9sbFZpc2liaWxpdHkoKSxuPW5ldyBEQih0LGUpO3RoaXMuX3Bvc2l0aW9uQ2hhbmdlcy5uZXh0KG4pfXRoaXMuX2lzSW5pdGlhbFJlbmRlcj0hMX1fc2V0VHJhbnNmb3JtT3JpZ2luKHQpe2lmKCF0aGlzLl90cmFuc2Zvcm1PcmlnaW5TZWxlY3RvcilyZXR1cm47Y29uc3QgZT10aGlzLl9ib3VuZGluZ0JveC5xdWVyeVNlbGVjdG9yQWxsKHRoaXMuX3RyYW5zZm9ybU9yaWdpblNlbGVjdG9yKTtsZXQgbixvPXQub3ZlcmxheVk7bj0iY2VudGVyIj09PXQub3ZlcmxheVg/ImNlbnRlciI6dGhpcy5faXNSdGwoKT8ic3RhcnQiPT09dC5vdmVybGF5WD8icmlnaHQiOiJsZWZ0Ijoic3RhcnQiPT09dC5vdmVybGF5WD8ibGVmdCI6InJpZ2h0Ijtmb3IobGV0IHQ9MDt0PGUubGVuZ3RoO3QrKyllW3RdLnN0eWxlLnRyYW5zZm9ybU9yaWdpbj1gJHtufSAke299YH1fY2FsY3VsYXRlQm91bmRpbmdCb3hSZWN0KHQsZSl7Y29uc3Qgbj10aGlzLl92aWV3cG9ydFJlY3Qsbz10aGlzLl9pc1J0bCgpO2xldCBpLGEscjtpZigidG9wIj09PWUub3ZlcmxheVkpYT10LnksaT1uLmhlaWdodC1hK3RoaXMuX3ZpZXdwb3J0TWFyZ2luO2Vsc2UgaWYoImJvdHRvbSI9PT1lLm92ZXJsYXlZKXI9bi5oZWlnaHQtdC55KzIqdGhpcy5fdmlld3BvcnRNYXJnaW4saT1uLmhlaWdodC1yK3RoaXMuX3ZpZXdwb3J0TWFyZ2luO2Vsc2V7Y29uc3QgZT1NYXRoLm1pbihuLmJvdHRvbS10Lnkrbi50b3AsdC55KSxvPXRoaXMuX2xhc3RCb3VuZGluZ0JveFNpemUuaGVpZ2h0O2k9MiplLGE9dC55LWUsaT5vJiYhdGhpcy5faXNJbml0aWFsUmVuZGVyJiYhdGhpcy5fZ3Jvd0FmdGVyT3BlbiYmKGE9dC55LW8vMil9bGV0IHMsbCxjO2lmKCJlbmQiPT09ZS5vdmVybGF5WCYmIW98fCJzdGFydCI9PT1lLm92ZXJsYXlYJiZvKWM9bi53aWR0aC10LngrdGhpcy5fdmlld3BvcnRNYXJnaW4scz10LngtdGhpcy5fdmlld3BvcnRNYXJnaW47ZWxzZSBpZigic3RhcnQiPT09ZS5vdmVybGF5WCYmIW98fCJlbmQiPT09ZS5vdmVybGF5WCYmbylsPXQueCxzPW4ucmlnaHQtdC54O2Vsc2V7Y29uc3QgZT1NYXRoLm1pbihuLnJpZ2h0LXQueCtuLmxlZnQsdC54KSxvPXRoaXMuX2xhc3RCb3VuZGluZ0JveFNpemUud2lkdGg7cz0yKmUsbD10LngtZSxzPm8mJiF0aGlzLl9pc0luaXRpYWxSZW5kZXImJiF0aGlzLl9ncm93QWZ0ZXJPcGVuJiYobD10Lngtby8yKX1yZXR1cm57dG9wOmEsbGVmdDpsLGJvdHRvbTpyLHJpZ2h0OmMsd2lkdGg6cyxoZWlnaHQ6aX19X3NldEJvdW5kaW5nQm94U3R5bGVzKHQsZSl7Y29uc3Qgbj10aGlzLl9jYWxjdWxhdGVCb3VuZGluZ0JveFJlY3QodCxlKTt0aGlzLl9pc0luaXRpYWxSZW5kZXJ8fHRoaXMuX2dyb3dBZnRlck9wZW58fChuLmhlaWdodD1NYXRoLm1pbihuLmhlaWdodCx0aGlzLl9sYXN0Qm91bmRpbmdCb3hTaXplLmhlaWdodCksbi53aWR0aD1NYXRoLm1pbihuLndpZHRoLHRoaXMuX2xhc3RCb3VuZGluZ0JveFNpemUud2lkdGgpKTtjb25zdCBvPXt9O2lmKHRoaXMuX2hhc0V4YWN0UG9zaXRpb24oKSlvLnRvcD1vLmxlZnQ9IjAiLG8uYm90dG9tPW8ucmlnaHQ9by5tYXhIZWlnaHQ9by5tYXhXaWR0aD0iIixvLndpZHRoPW8uaGVpZ2h0PSIxMDAlIjtlbHNle2NvbnN0IHQ9dGhpcy5fb3ZlcmxheVJlZi5nZXRDb25maWcoKS5tYXhIZWlnaHQsaT10aGlzLl9vdmVybGF5UmVmLmdldENvbmZpZygpLm1heFdpZHRoO28uaGVpZ2h0PWFIKG4uaGVpZ2h0KSxvLnRvcD1hSChuLnRvcCksby5ib3R0b209YUgobi5ib3R0b20pLG8ud2lkdGg9YUgobi53aWR0aCksby5sZWZ0PWFIKG4ubGVmdCksby5yaWdodD1hSChuLnJpZ2h0KSxvLmFsaWduSXRlbXM9ImNlbnRlciI9PT1lLm92ZXJsYXlYPyJjZW50ZXIiOiJlbmQiPT09ZS5vdmVybGF5WD8iZmxleC1lbmQiOiJmbGV4LXN0YXJ0IixvLmp1c3RpZnlDb250ZW50PSJjZW50ZXIiPT09ZS5vdmVybGF5WT8iY2VudGVyIjoiYm90dG9tIj09PWUub3ZlcmxheVk/ImZsZXgtZW5kIjoiZmxleC1zdGFydCIsdCYmKG8ubWF4SGVpZ2h0PWFIKHQpKSxpJiYoby5tYXhXaWR0aD1hSChpKSl9dGhpcy5fbGFzdEJvdW5kaW5nQm94U2l6ZT1uLGpCKHRoaXMuX2JvdW5kaW5nQm94LnN0eWxlLG8pfV9yZXNldEJvdW5kaW5nQm94U3R5bGVzKCl7akIodGhpcy5fYm91bmRpbmdCb3guc3R5bGUse3RvcDoiMCIsbGVmdDoiMCIscmlnaHQ6IjAiLGJvdHRvbToiMCIsaGVpZ2h0OiIiLHdpZHRoOiIiLGFsaWduSXRlbXM6IiIsanVzdGlmeUNvbnRlbnQ6IiJ9KX1fcmVzZXRPdmVybGF5RWxlbWVudFN0eWxlcygpe2pCKHRoaXMuX3BhbmUuc3R5bGUse3RvcDoiIixsZWZ0OiIiLGJvdHRvbToiIixyaWdodDoiIixwb3NpdGlvbjoiIix0cmFuc2Zvcm06IiJ9KX1fc2V0T3ZlcmxheUVsZW1lbnRTdHlsZXModCxlKXtjb25zdCBuPXt9LG89dGhpcy5faGFzRXhhY3RQb3NpdGlvbigpLGk9dGhpcy5faGFzRmxleGlibGVEaW1lbnNpb25zLGE9dGhpcy5fb3ZlcmxheVJlZi5nZXRDb25maWcoKTtpZihvKXtjb25zdCBvPXRoaXMuX3ZpZXdwb3J0UnVsZXIuZ2V0Vmlld3BvcnRTY3JvbGxQb3NpdGlvbigpO2pCKG4sdGhpcy5fZ2V0RXhhY3RPdmVybGF5WShlLHQsbykpLGpCKG4sdGhpcy5fZ2V0RXhhY3RPdmVybGF5WChlLHQsbykpfWVsc2Ugbi5wb3NpdGlvbj0ic3RhdGljIjtsZXQgcj0iIixzPXRoaXMuX2dldE9mZnNldChlLCJ4IiksbD10aGlzLl9nZXRPZmZzZXQoZSwieSIpO3MmJihyKz1gdHJhbnNsYXRlWCgke3N9cHgpIGApLGwmJihyKz1gdHJhbnNsYXRlWSgke2x9cHgpYCksbi50cmFuc2Zvcm09ci50cmltKCksYS5tYXhIZWlnaHQmJihvP24ubWF4SGVpZ2h0PWFIKGEubWF4SGVpZ2h0KTppJiYobi5tYXhIZWlnaHQ9IiIpKSxhLm1heFdpZHRoJiYobz9uLm1heFdpZHRoPWFIKGEubWF4V2lkdGgpOmkmJihuLm1heFdpZHRoPSIiKSksakIodGhpcy5fcGFuZS5zdHlsZSxuKX1fZ2V0RXhhY3RPdmVybGF5WSh0LGUsbil7bGV0IG89e3RvcDoiIixib3R0b206IiJ9LGk9dGhpcy5fZ2V0T3ZlcmxheVBvaW50KGUsdGhpcy5fb3ZlcmxheVJlY3QsdCk7dGhpcy5faXNQdXNoZWQmJihpPXRoaXMuX3B1c2hPdmVybGF5T25TY3JlZW4oaSx0aGlzLl9vdmVybGF5UmVjdCxuKSk7bGV0IGE9dGhpcy5fb3ZlcmxheUNvbnRhaW5lci5nZXRDb250YWluZXJFbGVtZW50KCkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wO2lmKGkueS09YSwiYm90dG9tIj09PXQub3ZlcmxheVkpe28uYm90dG9tPXRoaXMuX2RvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQtKGkueSt0aGlzLl9vdmVybGF5UmVjdC5oZWlnaHQpKyJweCJ9ZWxzZSBvLnRvcD1hSChpLnkpO3JldHVybiBvfV9nZXRFeGFjdE92ZXJsYXlYKHQsZSxuKXtsZXQgbyxpPXtsZWZ0OiIiLHJpZ2h0OiIifSxhPXRoaXMuX2dldE92ZXJsYXlQb2ludChlLHRoaXMuX292ZXJsYXlSZWN0LHQpO2lmKHRoaXMuX2lzUHVzaGVkJiYoYT10aGlzLl9wdXNoT3ZlcmxheU9uU2NyZWVuKGEsdGhpcy5fb3ZlcmxheVJlY3QsbikpLG89dGhpcy5faXNSdGwoKT8iZW5kIj09PXQub3ZlcmxheVg/ImxlZnQiOiJyaWdodCI6ImVuZCI9PT10Lm92ZXJsYXlYPyJyaWdodCI6ImxlZnQiLCJyaWdodCI9PT1vKXtpLnJpZ2h0PXRoaXMuX2RvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aC0oYS54K3RoaXMuX292ZXJsYXlSZWN0LndpZHRoKSsicHgifWVsc2UgaS5sZWZ0PWFIKGEueCk7cmV0dXJuIGl9X2dldFNjcm9sbFZpc2liaWxpdHkoKXtjb25zdCB0PXRoaXMuX2dldE9yaWdpblJlY3QoKSxlPXRoaXMuX3BhbmUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksbj10aGlzLl9zY3JvbGxhYmxlcy5tYXAoKHQ9PnQuZ2V0RWxlbWVudFJlZigpLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpKTtyZXR1cm57aXNPcmlnaW5DbGlwcGVkOnhCKHQsbiksaXNPcmlnaW5PdXRzaWRlVmlldzp2Qih0LG4pLGlzT3ZlcmxheUNsaXBwZWQ6eEIoZSxuKSxpc092ZXJsYXlPdXRzaWRlVmlldzp2QihlLG4pfX1fc3VidHJhY3RPdmVyZmxvd3ModCwuLi5lKXtyZXR1cm4gZS5yZWR1Y2UoKCh0LGUpPT50LU1hdGgubWF4KGUsMCkpLHQpfV9nZXROYXJyb3dlZFZpZXdwb3J0UmVjdCgpe2NvbnN0IHQ9dGhpcy5fZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoLGU9dGhpcy5fZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodCxuPXRoaXMuX3ZpZXdwb3J0UnVsZXIuZ2V0Vmlld3BvcnRTY3JvbGxQb3NpdGlvbigpO3JldHVybnt0b3A6bi50b3ArdGhpcy5fdmlld3BvcnRNYXJnaW4sbGVmdDpuLmxlZnQrdGhpcy5fdmlld3BvcnRNYXJnaW4scmlnaHQ6bi5sZWZ0K3QtdGhpcy5fdmlld3BvcnRNYXJnaW4sYm90dG9tOm4udG9wK2UtdGhpcy5fdmlld3BvcnRNYXJnaW4sd2lkdGg6dC0yKnRoaXMuX3ZpZXdwb3J0TWFyZ2luLGhlaWdodDplLTIqdGhpcy5fdmlld3BvcnRNYXJnaW59fV9pc1J0bCgpe3JldHVybiJydGwiPT09dGhpcy5fb3ZlcmxheVJlZi5nZXREaXJlY3Rpb24oKX1faGFzRXhhY3RQb3NpdGlvbigpe3JldHVybiF0aGlzLl9oYXNGbGV4aWJsZURpbWVuc2lvbnN8fHRoaXMuX2lzUHVzaGVkfV9nZXRPZmZzZXQodCxlKXtyZXR1cm4ieCI9PT1lP251bGw9PXQub2Zmc2V0WD90aGlzLl9vZmZzZXRYOnQub2Zmc2V0WDpudWxsPT10Lm9mZnNldFk/dGhpcy5fb2Zmc2V0WTp0Lm9mZnNldFl9X3ZhbGlkYXRlUG9zaXRpb25zKCl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSl7aWYoIXRoaXMuX3ByZWZlcnJlZFBvc2l0aW9ucy5sZW5ndGgpdGhyb3cgRXJyb3IoIkZsZXhpYmxlQ29ubmVjdGVkUG9zaXRpb25TdHJhdGVneTogQXQgbGVhc3Qgb25lIHBvc2l0aW9uIGlzIHJlcXVpcmVkLiIpO3RoaXMuX3ByZWZlcnJlZFBvc2l0aW9ucy5mb3JFYWNoKCh0PT57RUIoIm9yaWdpblgiLHQub3JpZ2luWCksUkIoIm9yaWdpblkiLHQub3JpZ2luWSksRUIoIm92ZXJsYXlYIix0Lm92ZXJsYXlYKSxSQigib3ZlcmxheVkiLHQub3ZlcmxheVkpfSkpfX1fYWRkUGFuZWxDbGFzc2VzKHQpe3RoaXMuX3BhbmUmJmlIKHQpLmZvckVhY2goKHQ9PnsiIiE9PXQmJi0xPT09dGhpcy5fYXBwbGllZFBhbmVsQ2xhc3Nlcy5pbmRleE9mKHQpJiYodGhpcy5fYXBwbGllZFBhbmVsQ2xhc3Nlcy5wdXNoKHQpLHRoaXMuX3BhbmUuY2xhc3NMaXN0LmFkZCh0KSl9KSl9X2NsZWFyUGFuZWxDbGFzc2VzKCl7dGhpcy5fcGFuZSYmKHRoaXMuX2FwcGxpZWRQYW5lbENsYXNzZXMuZm9yRWFjaCgodD0+e3RoaXMuX3BhbmUuY2xhc3NMaXN0LnJlbW92ZSh0KX0pKSx0aGlzLl9hcHBsaWVkUGFuZWxDbGFzc2VzPVtdKX1fZ2V0T3JpZ2luUmVjdCgpe2NvbnN0IHQ9dGhpcy5fb3JpZ2luO2lmKHQgaW5zdGFuY2VvZiBLaClyZXR1cm4gdC5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO2lmKHQgaW5zdGFuY2VvZiBFbGVtZW50KXJldHVybiB0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO2NvbnN0IGU9dC53aWR0aHx8MCxuPXQuaGVpZ2h0fHwwO3JldHVybnt0b3A6dC55LGJvdHRvbTp0LnkrbixsZWZ0OnQueCxyaWdodDp0LngrZSxoZWlnaHQ6bix3aWR0aDplfX19ZnVuY3Rpb24gakIodCxlKXtmb3IobGV0IG4gaW4gZSllLmhhc093blByb3BlcnR5KG4pJiYodFtuXT1lW25dKTtyZXR1cm4gdH1mdW5jdGlvbiBVQih0KXtpZigibnVtYmVyIiE9dHlwZW9mIHQmJm51bGwhPXQpe2NvbnN0W2Usbl09dC5zcGxpdChCQik7cmV0dXJuIG4mJiJweCIhPT1uP251bGw6cGFyc2VGbG9hdChlKX1yZXR1cm4gdHx8bnVsbH1mdW5jdGlvbiBXQih0KXtyZXR1cm57dG9wOk1hdGguZmxvb3IodC50b3ApLHJpZ2h0Ok1hdGguZmxvb3IodC5yaWdodCksYm90dG9tOk1hdGguZmxvb3IodC5ib3R0b20pLGxlZnQ6TWF0aC5mbG9vcih0LmxlZnQpLHdpZHRoOk1hdGguZmxvb3IodC53aWR0aCksaGVpZ2h0Ok1hdGguZmxvb3IodC5oZWlnaHQpfX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY2xhc3MgR0J7Y29uc3RydWN0b3IodCxlLG4sbyxpLGEscil7dGhpcy5fcHJlZmVycmVkUG9zaXRpb25zPVtdLHRoaXMuX3Bvc2l0aW9uU3RyYXRlZ3k9bmV3IFZCKG4sbyxpLGEscikud2l0aEZsZXhpYmxlRGltZW5zaW9ucyghMSkud2l0aFB1c2goITEpLndpdGhWaWV3cG9ydE1hcmdpbigwKSx0aGlzLndpdGhGYWxsYmFja1Bvc2l0aW9uKHQsZSksdGhpcy5vblBvc2l0aW9uQ2hhbmdlPXRoaXMuX3Bvc2l0aW9uU3RyYXRlZ3kucG9zaXRpb25DaGFuZ2VzfWdldCBwb3NpdGlvbnMoKXtyZXR1cm4gdGhpcy5fcHJlZmVycmVkUG9zaXRpb25zfWF0dGFjaCh0KXt0aGlzLl9vdmVybGF5UmVmPXQsdGhpcy5fcG9zaXRpb25TdHJhdGVneS5hdHRhY2godCksdGhpcy5fZGlyZWN0aW9uJiYodC5zZXREaXJlY3Rpb24odGhpcy5fZGlyZWN0aW9uKSx0aGlzLl9kaXJlY3Rpb249bnVsbCl9ZGlzcG9zZSgpe3RoaXMuX3Bvc2l0aW9uU3RyYXRlZ3kuZGlzcG9zZSgpfWRldGFjaCgpe3RoaXMuX3Bvc2l0aW9uU3RyYXRlZ3kuZGV0YWNoKCl9YXBwbHkoKXt0aGlzLl9wb3NpdGlvblN0cmF0ZWd5LmFwcGx5KCl9cmVjYWxjdWxhdGVMYXN0UG9zaXRpb24oKXt0aGlzLl9wb3NpdGlvblN0cmF0ZWd5LnJlYXBwbHlMYXN0UG9zaXRpb24oKX13aXRoU2Nyb2xsYWJsZUNvbnRhaW5lcnModCl7dGhpcy5fcG9zaXRpb25TdHJhdGVneS53aXRoU2Nyb2xsYWJsZUNvbnRhaW5lcnModCl9d2l0aEZhbGxiYWNrUG9zaXRpb24odCxlLG4sbyl7Y29uc3QgaT1uZXcga0IodCxlLG4sbyk7cmV0dXJuIHRoaXMuX3ByZWZlcnJlZFBvc2l0aW9ucy5wdXNoKGkpLHRoaXMuX3Bvc2l0aW9uU3RyYXRlZ3kud2l0aFBvc2l0aW9ucyh0aGlzLl9wcmVmZXJyZWRQb3NpdGlvbnMpLHRoaXN9d2l0aERpcmVjdGlvbih0KXtyZXR1cm4gdGhpcy5fb3ZlcmxheVJlZj90aGlzLl9vdmVybGF5UmVmLnNldERpcmVjdGlvbih0KTp0aGlzLl9kaXJlY3Rpb249dCx0aGlzfXdpdGhPZmZzZXRYKHQpe3JldHVybiB0aGlzLl9wb3NpdGlvblN0cmF0ZWd5LndpdGhEZWZhdWx0T2Zmc2V0WCh0KSx0aGlzfXdpdGhPZmZzZXRZKHQpe3JldHVybiB0aGlzLl9wb3NpdGlvblN0cmF0ZWd5LndpdGhEZWZhdWx0T2Zmc2V0WSh0KSx0aGlzfXdpdGhMb2NrZWRQb3NpdGlvbih0KXtyZXR1cm4gdGhpcy5fcG9zaXRpb25TdHJhdGVneS53aXRoTG9ja2VkUG9zaXRpb24odCksdGhpc313aXRoUG9zaXRpb25zKHQpe3JldHVybiB0aGlzLl9wcmVmZXJyZWRQb3NpdGlvbnM9dC5zbGljZSgpLHRoaXMuX3Bvc2l0aW9uU3RyYXRlZ3kud2l0aFBvc2l0aW9ucyh0aGlzLl9wcmVmZXJyZWRQb3NpdGlvbnMpLHRoaXN9c2V0T3JpZ2luKHQpe3JldHVybiB0aGlzLl9wb3NpdGlvblN0cmF0ZWd5LnNldE9yaWdpbih0KSx0aGlzfX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY29uc3QgWUI9ImNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyIjtjbGFzcyBxQntjb25zdHJ1Y3Rvcigpe3RoaXMuX2Nzc1Bvc2l0aW9uPSJzdGF0aWMiLHRoaXMuX3RvcE9mZnNldD0iIix0aGlzLl9ib3R0b21PZmZzZXQ9IiIsdGhpcy5fbGVmdE9mZnNldD0iIix0aGlzLl9yaWdodE9mZnNldD0iIix0aGlzLl9hbGlnbkl0ZW1zPSIiLHRoaXMuX2p1c3RpZnlDb250ZW50PSIiLHRoaXMuX3dpZHRoPSIiLHRoaXMuX2hlaWdodD0iIn1hdHRhY2godCl7Y29uc3QgZT10LmdldENvbmZpZygpO3RoaXMuX292ZXJsYXlSZWY9dCx0aGlzLl93aWR0aCYmIWUud2lkdGgmJnQudXBkYXRlU2l6ZSh7d2lkdGg6dGhpcy5fd2lkdGh9KSx0aGlzLl9oZWlnaHQmJiFlLmhlaWdodCYmdC51cGRhdGVTaXplKHtoZWlnaHQ6dGhpcy5faGVpZ2h0fSksdC5ob3N0RWxlbWVudC5jbGFzc0xpc3QuYWRkKFlCKSx0aGlzLl9pc0Rpc3Bvc2VkPSExfXRvcCh0PSIiKXtyZXR1cm4gdGhpcy5fYm90dG9tT2Zmc2V0PSIiLHRoaXMuX3RvcE9mZnNldD10LHRoaXMuX2FsaWduSXRlbXM9ImZsZXgtc3RhcnQiLHRoaXN9bGVmdCh0PSIiKXtyZXR1cm4gdGhpcy5fcmlnaHRPZmZzZXQ9IiIsdGhpcy5fbGVmdE9mZnNldD10LHRoaXMuX2p1c3RpZnlDb250ZW50PSJmbGV4LXN0YXJ0Iix0aGlzfWJvdHRvbSh0PSIiKXtyZXR1cm4gdGhpcy5fdG9wT2Zmc2V0PSIiLHRoaXMuX2JvdHRvbU9mZnNldD10LHRoaXMuX2FsaWduSXRlbXM9ImZsZXgtZW5kIix0aGlzfXJpZ2h0KHQ9IiIpe3JldHVybiB0aGlzLl9sZWZ0T2Zmc2V0PSIiLHRoaXMuX3JpZ2h0T2Zmc2V0PXQsdGhpcy5fanVzdGlmeUNvbnRlbnQ9ImZsZXgtZW5kIix0aGlzfXdpZHRoKHQ9IiIpe3JldHVybiB0aGlzLl9vdmVybGF5UmVmP3RoaXMuX292ZXJsYXlSZWYudXBkYXRlU2l6ZSh7d2lkdGg6dH0pOnRoaXMuX3dpZHRoPXQsdGhpc31oZWlnaHQodD0iIil7cmV0dXJuIHRoaXMuX292ZXJsYXlSZWY/dGhpcy5fb3ZlcmxheVJlZi51cGRhdGVTaXplKHtoZWlnaHQ6dH0pOnRoaXMuX2hlaWdodD10LHRoaXN9Y2VudGVySG9yaXpvbnRhbGx5KHQ9IiIpe3JldHVybiB0aGlzLmxlZnQodCksdGhpcy5fanVzdGlmeUNvbnRlbnQ9ImNlbnRlciIsdGhpc31jZW50ZXJWZXJ0aWNhbGx5KHQ9IiIpe3JldHVybiB0aGlzLnRvcCh0KSx0aGlzLl9hbGlnbkl0ZW1zPSJjZW50ZXIiLHRoaXN9YXBwbHkoKXtpZighdGhpcy5fb3ZlcmxheVJlZnx8IXRoaXMuX292ZXJsYXlSZWYuaGFzQXR0YWNoZWQoKSlyZXR1cm47Y29uc3QgdD10aGlzLl9vdmVybGF5UmVmLm92ZXJsYXlFbGVtZW50LnN0eWxlLGU9dGhpcy5fb3ZlcmxheVJlZi5ob3N0RWxlbWVudC5zdHlsZSxuPXRoaXMuX292ZXJsYXlSZWYuZ2V0Q29uZmlnKCkse3dpZHRoOm8saGVpZ2h0OmksbWF4V2lkdGg6YSxtYXhIZWlnaHQ6cn09bixzPSEoIjEwMCUiIT09byYmIjEwMHZ3IiE9PW98fGEmJiIxMDAlIiE9PWEmJiIxMDB2dyIhPT1hKSxsPSEoIjEwMCUiIT09aSYmIjEwMHZoIiE9PWl8fHImJiIxMDAlIiE9PXImJiIxMDB2aCIhPT1yKTt0LnBvc2l0aW9uPXRoaXMuX2Nzc1Bvc2l0aW9uLHQubWFyZ2luTGVmdD1zPyIwIjp0aGlzLl9sZWZ0T2Zmc2V0LHQubWFyZ2luVG9wPWw/IjAiOnRoaXMuX3RvcE9mZnNldCx0Lm1hcmdpbkJvdHRvbT10aGlzLl9ib3R0b21PZmZzZXQsdC5tYXJnaW5SaWdodD10aGlzLl9yaWdodE9mZnNldCxzP2UuanVzdGlmeUNvbnRlbnQ9ImZsZXgtc3RhcnQiOiJjZW50ZXIiPT09dGhpcy5fanVzdGlmeUNvbnRlbnQ/ZS5qdXN0aWZ5Q29udGVudD0iY2VudGVyIjoicnRsIj09PXRoaXMuX292ZXJsYXlSZWYuZ2V0Q29uZmlnKCkuZGlyZWN0aW9uPyJmbGV4LXN0YXJ0Ij09PXRoaXMuX2p1c3RpZnlDb250ZW50P2UuanVzdGlmeUNvbnRlbnQ9ImZsZXgtZW5kIjoiZmxleC1lbmQiPT09dGhpcy5fanVzdGlmeUNvbnRlbnQmJihlLmp1c3RpZnlDb250ZW50PSJmbGV4LXN0YXJ0Iik6ZS5qdXN0aWZ5Q29udGVudD10aGlzLl9qdXN0aWZ5Q29udGVudCxlLmFsaWduSXRlbXM9bD8iZmxleC1zdGFydCI6dGhpcy5fYWxpZ25JdGVtc31kaXNwb3NlKCl7aWYodGhpcy5faXNEaXNwb3NlZHx8IXRoaXMuX292ZXJsYXlSZWYpcmV0dXJuO2NvbnN0IHQ9dGhpcy5fb3ZlcmxheVJlZi5vdmVybGF5RWxlbWVudC5zdHlsZSxlPXRoaXMuX292ZXJsYXlSZWYuaG9zdEVsZW1lbnQsbj1lLnN0eWxlO2UuY2xhc3NMaXN0LnJlbW92ZShZQiksbi5qdXN0aWZ5Q29udGVudD1uLmFsaWduSXRlbXM9dC5tYXJnaW5Ub3A9dC5tYXJnaW5Cb3R0b209dC5tYXJnaW5MZWZ0PXQubWFyZ2luUmlnaHQ9dC5wb3NpdGlvbj0iIix0aGlzLl9vdmVybGF5UmVmPW51bGwsdGhpcy5faXNEaXNwb3NlZD0hMH19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NsYXNzIFpCe2NvbnN0cnVjdG9yKHQsZSxuLG8pe3RoaXMuX3ZpZXdwb3J0UnVsZXI9dCx0aGlzLl9kb2N1bWVudD1lLHRoaXMuX3BsYXRmb3JtPW4sdGhpcy5fb3ZlcmxheUNvbnRhaW5lcj1vfWdsb2JhbCgpe3JldHVybiBuZXcgcUJ9Y29ubmVjdGVkVG8odCxlLG4pe3JldHVybiBuZXcgR0IoZSxuLHQsdGhpcy5fdmlld3BvcnRSdWxlcix0aGlzLl9kb2N1bWVudCx0aGlzLl9wbGF0Zm9ybSx0aGlzLl9vdmVybGF5Q29udGFpbmVyKX1mbGV4aWJsZUNvbm5lY3RlZFRvKHQpe3JldHVybiBuZXcgVkIodCx0aGlzLl92aWV3cG9ydFJ1bGVyLHRoaXMuX2RvY3VtZW50LHRoaXMuX3BsYXRmb3JtLHRoaXMuX292ZXJsYXlDb250YWluZXIpfX1aQi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8WkIpKFRyKFFMKSxUcihzTSksVHIoY0gpLFRyKEhCKSl9LFpCLsm1cHJvdj1Tbih7ZmFjdG9yeTpmdW5jdGlvbiB0KCl7cmV0dXJuIG5ldyBaQihUcihRTCksVHIoc00pLFRyKGNIKSxUcihIQikpfSx0b2tlbjpaQixwcm92aWRlZEluOiJyb290In0pLFpCLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6UUx9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltzTV19XX0se3R5cGU6Y0h9LHt0eXBlOkhCfV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihaQixbe3R5cGU6VW0sYXJnczpbe3Byb3ZpZGVkSW46InJvb3QifV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6UUx9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltzTV19XX0se3R5cGU6Y0h9LHt0eXBlOkhCfV19KSxudWxsKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmxldCBYQj0wO2NsYXNzIEtCe2NvbnN0cnVjdG9yKHQsZSxuLG8saSxhLHIscyxsLGMsZCl7dGhpcy5zY3JvbGxTdHJhdGVnaWVzPXQsdGhpcy5fb3ZlcmxheUNvbnRhaW5lcj1lLHRoaXMuX2NvbXBvbmVudEZhY3RvcnlSZXNvbHZlcj1uLHRoaXMuX3Bvc2l0aW9uQnVpbGRlcj1vLHRoaXMuX2tleWJvYXJkRGlzcGF0Y2hlcj1pLHRoaXMuX2luamVjdG9yPWEsdGhpcy5fbmdab25lPXIsdGhpcy5fZG9jdW1lbnQ9cyx0aGlzLl9kaXJlY3Rpb25hbGl0eT1sLHRoaXMuX2xvY2F0aW9uPWMsdGhpcy5fb3V0c2lkZUNsaWNrRGlzcGF0Y2hlcj1kfWNyZWF0ZSh0KXtjb25zdCBlPXRoaXMuX2NyZWF0ZUhvc3RFbGVtZW50KCksbj10aGlzLl9jcmVhdGVQYW5lRWxlbWVudChlKSxvPXRoaXMuX2NyZWF0ZVBvcnRhbE91dGxldChuKSxpPW5ldyB3Qih0KTtyZXR1cm4gaS5kaXJlY3Rpb249aS5kaXJlY3Rpb258fHRoaXMuX2RpcmVjdGlvbmFsaXR5LnZhbHVlLG5ldyBGQihvLGUsbixpLHRoaXMuX25nWm9uZSx0aGlzLl9rZXlib2FyZERpc3BhdGNoZXIsdGhpcy5fZG9jdW1lbnQsdGhpcy5fbG9jYXRpb24sdGhpcy5fb3V0c2lkZUNsaWNrRGlzcGF0Y2hlcil9cG9zaXRpb24oKXtyZXR1cm4gdGhpcy5fcG9zaXRpb25CdWlsZGVyfV9jcmVhdGVQYW5lRWxlbWVudCh0KXtjb25zdCBlPXRoaXMuX2RvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3JldHVybiBlLmlkPSJjZGstb3ZlcmxheS0iK1hCKyssZS5jbGFzc0xpc3QuYWRkKCJjZGstb3ZlcmxheS1wYW5lIiksdC5hcHBlbmRDaGlsZChlKSxlfV9jcmVhdGVIb3N0RWxlbWVudCgpe2NvbnN0IHQ9dGhpcy5fZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7cmV0dXJuIHRoaXMuX292ZXJsYXlDb250YWluZXIuZ2V0Q29udGFpbmVyRWxlbWVudCgpLmFwcGVuZENoaWxkKHQpLHR9X2NyZWF0ZVBvcnRhbE91dGxldCh0KXtyZXR1cm4gdGhpcy5fYXBwUmVmfHwodGhpcy5fYXBwUmVmPXRoaXMuX2luamVjdG9yLmdldChIQykpLG5ldyBwQih0LHRoaXMuX2NvbXBvbmVudEZhY3RvcnlSZXNvbHZlcix0aGlzLl9hcHBSZWYsdGhpcy5faW5qZWN0b3IsdGhpcy5fZG9jdW1lbnQpfX1LQi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8S0IpKFRyKFBCKSxUcihIQiksVHIoR2gpLFRyKFpCKSxUcihUQiksVHIoTnApLFRyKG1DKSxUcihzTSksVHIodkYpLFRyKE1NKSxUcihOQikpfSxLQi7JtXByb3Y9U24oe3Rva2VuOktCLGZhY3Rvcnk6S0IuybVmYWN9KSxLQi5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOlBCfSx7dHlwZTpIQn0se3R5cGU6R2h9LHt0eXBlOlpCfSx7dHlwZTpUQn0se3R5cGU6TnB9LHt0eXBlOm1DfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbc01dfV19LHt0eXBlOnZGfSx7dHlwZTpNTX0se3R5cGU6TkJ9XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKEtCLFt7dHlwZTpVbX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpQQn0se3R5cGU6SEJ9LHt0eXBlOkdofSx7dHlwZTpaQn0se3R5cGU6VEJ9LHt0eXBlOk5wfSx7dHlwZTptQ30se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W3NNXX1dfSx7dHlwZTp2Rn0se3R5cGU6TU19LHt0eXBlOk5CfV19KSxudWxsKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNvbnN0IEpCPVt7b3JpZ2luWDoic3RhcnQiLG9yaWdpblk6ImJvdHRvbSIsb3ZlcmxheVg6InN0YXJ0IixvdmVybGF5WToidG9wIn0se29yaWdpblg6InN0YXJ0IixvcmlnaW5ZOiJ0b3AiLG92ZXJsYXlYOiJzdGFydCIsb3ZlcmxheVk6ImJvdHRvbSJ9LHtvcmlnaW5YOiJlbmQiLG9yaWdpblk6InRvcCIsb3ZlcmxheVg6ImVuZCIsb3ZlcmxheVk6ImJvdHRvbSJ9LHtvcmlnaW5YOiJlbmQiLG9yaWdpblk6ImJvdHRvbSIsb3ZlcmxheVg6ImVuZCIsb3ZlcmxheVk6InRvcCJ9XSxRQj1uZXcgZXIoImNkay1jb25uZWN0ZWQtb3ZlcmxheS1zY3JvbGwtc3RyYXRlZ3kiKTtjbGFzcyAkQntjb25zdHJ1Y3Rvcih0KXt0aGlzLmVsZW1lbnRSZWY9dH19JEIuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fCRCKShnZihLaCkpfSwkQi7JtWRpcj1obyh7dHlwZTokQixzZWxlY3RvcnM6W1siIiwiY2RrLW92ZXJsYXktb3JpZ2luIiwiIl0sWyIiLCJvdmVybGF5LW9yaWdpbiIsIiJdLFsiIiwiY2RrT3ZlcmxheU9yaWdpbiIsIiJdXSxleHBvcnRBczpbImNka092ZXJsYXlPcmlnaW4iXX0pLCRCLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6S2h9XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKCRCLFt7dHlwZTprXyxhcmdzOlt7c2VsZWN0b3I6IltjZGstb3ZlcmxheS1vcmlnaW5dLCBbb3ZlcmxheS1vcmlnaW5dLCBbY2RrT3ZlcmxheU9yaWdpbl0iLGV4cG9ydEFzOiJjZGtPdmVybGF5T3JpZ2luIn1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOktofV19KSxudWxsKTtjbGFzcyB0Vntjb25zdHJ1Y3Rvcih0LGUsbixvLGkpe3RoaXMuX292ZXJsYXk9dCx0aGlzLl9kaXI9aSx0aGlzLl9oYXNCYWNrZHJvcD0hMSx0aGlzLl9sb2NrUG9zaXRpb249ITEsdGhpcy5fZ3Jvd0FmdGVyT3Blbj0hMSx0aGlzLl9mbGV4aWJsZURpbWVuc2lvbnM9ITEsdGhpcy5fcHVzaD0hMSx0aGlzLl9iYWNrZHJvcFN1YnNjcmlwdGlvbj11LkVNUFRZLHRoaXMuX2F0dGFjaFN1YnNjcmlwdGlvbj11LkVNUFRZLHRoaXMuX2RldGFjaFN1YnNjcmlwdGlvbj11LkVNUFRZLHRoaXMuX3Bvc2l0aW9uU3Vic2NyaXB0aW9uPXUuRU1QVFksdGhpcy52aWV3cG9ydE1hcmdpbj0wLHRoaXMub3Blbj0hMSx0aGlzLmRpc2FibGVDbG9zZT0hMSx0aGlzLmJhY2tkcm9wQ2xpY2s9bmV3IFN5LHRoaXMucG9zaXRpb25DaGFuZ2U9bmV3IFN5LHRoaXMuYXR0YWNoPW5ldyBTeSx0aGlzLmRldGFjaD1uZXcgU3ksdGhpcy5vdmVybGF5S2V5ZG93bj1uZXcgU3ksdGhpcy5vdmVybGF5T3V0c2lkZUNsaWNrPW5ldyBTeSx0aGlzLl90ZW1wbGF0ZVBvcnRhbD1uZXcgbEIoZSxuKSx0aGlzLl9zY3JvbGxTdHJhdGVneUZhY3Rvcnk9byx0aGlzLnNjcm9sbFN0cmF0ZWd5PXRoaXMuX3Njcm9sbFN0cmF0ZWd5RmFjdG9yeSgpfWdldCBvZmZzZXRYKCl7cmV0dXJuIHRoaXMuX29mZnNldFh9c2V0IG9mZnNldFgodCl7dGhpcy5fb2Zmc2V0WD10LHRoaXMuX3Bvc2l0aW9uJiZ0aGlzLl91cGRhdGVQb3NpdGlvblN0cmF0ZWd5KHRoaXMuX3Bvc2l0aW9uKX1nZXQgb2Zmc2V0WSgpe3JldHVybiB0aGlzLl9vZmZzZXRZfXNldCBvZmZzZXRZKHQpe3RoaXMuX29mZnNldFk9dCx0aGlzLl9wb3NpdGlvbiYmdGhpcy5fdXBkYXRlUG9zaXRpb25TdHJhdGVneSh0aGlzLl9wb3NpdGlvbil9Z2V0IGhhc0JhY2tkcm9wKCl7cmV0dXJuIHRoaXMuX2hhc0JhY2tkcm9wfXNldCBoYXNCYWNrZHJvcCh0KXt0aGlzLl9oYXNCYWNrZHJvcD1lSCh0KX1nZXQgbG9ja1Bvc2l0aW9uKCl7cmV0dXJuIHRoaXMuX2xvY2tQb3NpdGlvbn1zZXQgbG9ja1Bvc2l0aW9uKHQpe3RoaXMuX2xvY2tQb3NpdGlvbj1lSCh0KX1nZXQgZmxleGlibGVEaW1lbnNpb25zKCl7cmV0dXJuIHRoaXMuX2ZsZXhpYmxlRGltZW5zaW9uc31zZXQgZmxleGlibGVEaW1lbnNpb25zKHQpe3RoaXMuX2ZsZXhpYmxlRGltZW5zaW9ucz1lSCh0KX1nZXQgZ3Jvd0FmdGVyT3Blbigpe3JldHVybiB0aGlzLl9ncm93QWZ0ZXJPcGVufXNldCBncm93QWZ0ZXJPcGVuKHQpe3RoaXMuX2dyb3dBZnRlck9wZW49ZUgodCl9Z2V0IHB1c2goKXtyZXR1cm4gdGhpcy5fcHVzaH1zZXQgcHVzaCh0KXt0aGlzLl9wdXNoPWVIKHQpfWdldCBvdmVybGF5UmVmKCl7cmV0dXJuIHRoaXMuX292ZXJsYXlSZWZ9Z2V0IGRpcigpe3JldHVybiB0aGlzLl9kaXI/dGhpcy5fZGlyLnZhbHVlOiJsdHIifW5nT25EZXN0cm95KCl7dGhpcy5fYXR0YWNoU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCksdGhpcy5fZGV0YWNoU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCksdGhpcy5fYmFja2Ryb3BTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSx0aGlzLl9wb3NpdGlvblN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpLHRoaXMuX292ZXJsYXlSZWYmJnRoaXMuX292ZXJsYXlSZWYuZGlzcG9zZSgpfW5nT25DaGFuZ2VzKHQpe3RoaXMuX3Bvc2l0aW9uJiYodGhpcy5fdXBkYXRlUG9zaXRpb25TdHJhdGVneSh0aGlzLl9wb3NpdGlvbiksdGhpcy5fb3ZlcmxheVJlZi51cGRhdGVTaXplKHt3aWR0aDp0aGlzLndpZHRoLG1pbldpZHRoOnRoaXMubWluV2lkdGgsaGVpZ2h0OnRoaXMuaGVpZ2h0LG1pbkhlaWdodDp0aGlzLm1pbkhlaWdodH0pLHQub3JpZ2luJiZ0aGlzLm9wZW4mJnRoaXMuX3Bvc2l0aW9uLmFwcGx5KCkpLHQub3BlbiYmKHRoaXMub3Blbj90aGlzLl9hdHRhY2hPdmVybGF5KCk6dGhpcy5fZGV0YWNoT3ZlcmxheSgpKX1fY3JlYXRlT3ZlcmxheSgpe3RoaXMucG9zaXRpb25zJiZ0aGlzLnBvc2l0aW9ucy5sZW5ndGh8fCh0aGlzLnBvc2l0aW9ucz1KQik7Y29uc3QgdD10aGlzLl9vdmVybGF5UmVmPXRoaXMuX292ZXJsYXkuY3JlYXRlKHRoaXMuX2J1aWxkQ29uZmlnKCkpO3RoaXMuX2F0dGFjaFN1YnNjcmlwdGlvbj10LmF0dGFjaG1lbnRzKCkuc3Vic2NyaWJlKCgoKT0+dGhpcy5hdHRhY2guZW1pdCgpKSksdGhpcy5fZGV0YWNoU3Vic2NyaXB0aW9uPXQuZGV0YWNobWVudHMoKS5zdWJzY3JpYmUoKCgpPT50aGlzLmRldGFjaC5lbWl0KCkpKSx0LmtleWRvd25FdmVudHMoKS5zdWJzY3JpYmUoKHQ9Pnt0aGlzLm92ZXJsYXlLZXlkb3duLm5leHQodCksdC5rZXlDb2RlIT09S0l8fHRoaXMuZGlzYWJsZUNsb3NlfHx0SCh0KXx8KHQucHJldmVudERlZmF1bHQoKSx0aGlzLl9kZXRhY2hPdmVybGF5KCkpfSkpLHRoaXMuX292ZXJsYXlSZWYub3V0c2lkZVBvaW50ZXJFdmVudHMoKS5zdWJzY3JpYmUoKHQ9Pnt0aGlzLm92ZXJsYXlPdXRzaWRlQ2xpY2submV4dCh0KX0pKX1fYnVpbGRDb25maWcoKXtjb25zdCB0PXRoaXMuX3Bvc2l0aW9uPXRoaXMucG9zaXRpb25TdHJhdGVneXx8dGhpcy5fY3JlYXRlUG9zaXRpb25TdHJhdGVneSgpLGU9bmV3IHdCKHtkaXJlY3Rpb246dGhpcy5fZGlyLHBvc2l0aW9uU3RyYXRlZ3k6dCxzY3JvbGxTdHJhdGVneTp0aGlzLnNjcm9sbFN0cmF0ZWd5LGhhc0JhY2tkcm9wOnRoaXMuaGFzQmFja2Ryb3B9KTtyZXR1cm4odGhpcy53aWR0aHx8MD09PXRoaXMud2lkdGgpJiYoZS53aWR0aD10aGlzLndpZHRoKSwodGhpcy5oZWlnaHR8fDA9PT10aGlzLmhlaWdodCkmJihlLmhlaWdodD10aGlzLmhlaWdodCksKHRoaXMubWluV2lkdGh8fDA9PT10aGlzLm1pbldpZHRoKSYmKGUubWluV2lkdGg9dGhpcy5taW5XaWR0aCksKHRoaXMubWluSGVpZ2h0fHwwPT09dGhpcy5taW5IZWlnaHQpJiYoZS5taW5IZWlnaHQ9dGhpcy5taW5IZWlnaHQpLHRoaXMuYmFja2Ryb3BDbGFzcyYmKGUuYmFja2Ryb3BDbGFzcz10aGlzLmJhY2tkcm9wQ2xhc3MpLHRoaXMucGFuZWxDbGFzcyYmKGUucGFuZWxDbGFzcz10aGlzLnBhbmVsQ2xhc3MpLGV9X3VwZGF0ZVBvc2l0aW9uU3RyYXRlZ3kodCl7Y29uc3QgZT10aGlzLnBvc2l0aW9ucy5tYXAoKHQ9Pih7b3JpZ2luWDp0Lm9yaWdpblgsb3JpZ2luWTp0Lm9yaWdpblksb3ZlcmxheVg6dC5vdmVybGF5WCxvdmVybGF5WTp0Lm92ZXJsYXlZLG9mZnNldFg6dC5vZmZzZXRYfHx0aGlzLm9mZnNldFgsb2Zmc2V0WTp0Lm9mZnNldFl8fHRoaXMub2Zmc2V0WSxwYW5lbENsYXNzOnQucGFuZWxDbGFzc3x8dm9pZCAwfSkpKTtyZXR1cm4gdC5zZXRPcmlnaW4odGhpcy5vcmlnaW4uZWxlbWVudFJlZikud2l0aFBvc2l0aW9ucyhlKS53aXRoRmxleGlibGVEaW1lbnNpb25zKHRoaXMuZmxleGlibGVEaW1lbnNpb25zKS53aXRoUHVzaCh0aGlzLnB1c2gpLndpdGhHcm93QWZ0ZXJPcGVuKHRoaXMuZ3Jvd0FmdGVyT3Blbikud2l0aFZpZXdwb3J0TWFyZ2luKHRoaXMudmlld3BvcnRNYXJnaW4pLndpdGhMb2NrZWRQb3NpdGlvbih0aGlzLmxvY2tQb3NpdGlvbikud2l0aFRyYW5zZm9ybU9yaWdpbk9uKHRoaXMudHJhbnNmb3JtT3JpZ2luU2VsZWN0b3IpfV9jcmVhdGVQb3NpdGlvblN0cmF0ZWd5KCl7Y29uc3QgdD10aGlzLl9vdmVybGF5LnBvc2l0aW9uKCkuZmxleGlibGVDb25uZWN0ZWRUbyh0aGlzLm9yaWdpbi5lbGVtZW50UmVmKTtyZXR1cm4gdGhpcy5fdXBkYXRlUG9zaXRpb25TdHJhdGVneSh0KSx0fV9hdHRhY2hPdmVybGF5KCl7dGhpcy5fb3ZlcmxheVJlZj90aGlzLl9vdmVybGF5UmVmLmdldENvbmZpZygpLmhhc0JhY2tkcm9wPXRoaXMuaGFzQmFja2Ryb3A6dGhpcy5fY3JlYXRlT3ZlcmxheSgpLHRoaXMuX292ZXJsYXlSZWYuaGFzQXR0YWNoZWQoKXx8dGhpcy5fb3ZlcmxheVJlZi5hdHRhY2godGhpcy5fdGVtcGxhdGVQb3J0YWwpLHRoaXMuaGFzQmFja2Ryb3A/dGhpcy5fYmFja2Ryb3BTdWJzY3JpcHRpb249dGhpcy5fb3ZlcmxheVJlZi5iYWNrZHJvcENsaWNrKCkuc3Vic2NyaWJlKCh0PT57dGhpcy5iYWNrZHJvcENsaWNrLmVtaXQodCl9KSk6dGhpcy5fYmFja2Ryb3BTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSx0aGlzLl9wb3NpdGlvblN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpLHRoaXMucG9zaXRpb25DaGFuZ2Uub2JzZXJ2ZXJzLmxlbmd0aD4wJiYodGhpcy5fcG9zaXRpb25TdWJzY3JpcHRpb249dGhpcy5fcG9zaXRpb24ucG9zaXRpb25DaGFuZ2VzLnBpcGUoVWUoKCgpPT50aGlzLnBvc2l0aW9uQ2hhbmdlLm9ic2VydmVycy5sZW5ndGg+MCkpKS5zdWJzY3JpYmUoKHQ9Pnt0aGlzLnBvc2l0aW9uQ2hhbmdlLmVtaXQodCksMD09PXRoaXMucG9zaXRpb25DaGFuZ2Uub2JzZXJ2ZXJzLmxlbmd0aCYmdGhpcy5fcG9zaXRpb25TdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKX0pKSl9X2RldGFjaE92ZXJsYXkoKXt0aGlzLl9vdmVybGF5UmVmJiZ0aGlzLl9vdmVybGF5UmVmLmRldGFjaCgpLHRoaXMuX2JhY2tkcm9wU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCksdGhpcy5fcG9zaXRpb25TdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKX19dFYuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHRWKShnZihLQiksZ2YoRWIpLGdmKEZiKSxnZihRQiksZ2YodkYsOCkpfSx0Vi7JtWRpcj1obyh7dHlwZTp0VixzZWxlY3RvcnM6W1siIiwiY2RrLWNvbm5lY3RlZC1vdmVybGF5IiwiIl0sWyIiLCJjb25uZWN0ZWQtb3ZlcmxheSIsIiJdLFsiIiwiY2RrQ29ubmVjdGVkT3ZlcmxheSIsIiJdXSxpbnB1dHM6e3ZpZXdwb3J0TWFyZ2luOlsiY2RrQ29ubmVjdGVkT3ZlcmxheVZpZXdwb3J0TWFyZ2luIiwidmlld3BvcnRNYXJnaW4iXSxvcGVuOlsiY2RrQ29ubmVjdGVkT3ZlcmxheU9wZW4iLCJvcGVuIl0sZGlzYWJsZUNsb3NlOlsiY2RrQ29ubmVjdGVkT3ZlcmxheURpc2FibGVDbG9zZSIsImRpc2FibGVDbG9zZSJdLHNjcm9sbFN0cmF0ZWd5OlsiY2RrQ29ubmVjdGVkT3ZlcmxheVNjcm9sbFN0cmF0ZWd5Iiwic2Nyb2xsU3RyYXRlZ3kiXSxvZmZzZXRYOlsiY2RrQ29ubmVjdGVkT3ZlcmxheU9mZnNldFgiLCJvZmZzZXRYIl0sb2Zmc2V0WTpbImNka0Nvbm5lY3RlZE92ZXJsYXlPZmZzZXRZIiwib2Zmc2V0WSJdLGhhc0JhY2tkcm9wOlsiY2RrQ29ubmVjdGVkT3ZlcmxheUhhc0JhY2tkcm9wIiwiaGFzQmFja2Ryb3AiXSxsb2NrUG9zaXRpb246WyJjZGtDb25uZWN0ZWRPdmVybGF5TG9ja1Bvc2l0aW9uIiwibG9ja1Bvc2l0aW9uIl0sZmxleGlibGVEaW1lbnNpb25zOlsiY2RrQ29ubmVjdGVkT3ZlcmxheUZsZXhpYmxlRGltZW5zaW9ucyIsImZsZXhpYmxlRGltZW5zaW9ucyJdLGdyb3dBZnRlck9wZW46WyJjZGtDb25uZWN0ZWRPdmVybGF5R3Jvd0FmdGVyT3BlbiIsImdyb3dBZnRlck9wZW4iXSxwdXNoOlsiY2RrQ29ubmVjdGVkT3ZlcmxheVB1c2giLCJwdXNoIl0scG9zaXRpb25zOlsiY2RrQ29ubmVjdGVkT3ZlcmxheVBvc2l0aW9ucyIsInBvc2l0aW9ucyJdLG9yaWdpbjpbImNka0Nvbm5lY3RlZE92ZXJsYXlPcmlnaW4iLCJvcmlnaW4iXSxwb3NpdGlvblN0cmF0ZWd5OlsiY2RrQ29ubmVjdGVkT3ZlcmxheVBvc2l0aW9uU3RyYXRlZ3kiLCJwb3NpdGlvblN0cmF0ZWd5Il0sd2lkdGg6WyJjZGtDb25uZWN0ZWRPdmVybGF5V2lkdGgiLCJ3aWR0aCJdLGhlaWdodDpbImNka0Nvbm5lY3RlZE92ZXJsYXlIZWlnaHQiLCJoZWlnaHQiXSxtaW5XaWR0aDpbImNka0Nvbm5lY3RlZE92ZXJsYXlNaW5XaWR0aCIsIm1pbldpZHRoIl0sbWluSGVpZ2h0OlsiY2RrQ29ubmVjdGVkT3ZlcmxheU1pbkhlaWdodCIsIm1pbkhlaWdodCJdLGJhY2tkcm9wQ2xhc3M6WyJjZGtDb25uZWN0ZWRPdmVybGF5QmFja2Ryb3BDbGFzcyIsImJhY2tkcm9wQ2xhc3MiXSxwYW5lbENsYXNzOlsiY2RrQ29ubmVjdGVkT3ZlcmxheVBhbmVsQ2xhc3MiLCJwYW5lbENsYXNzIl0sdHJhbnNmb3JtT3JpZ2luU2VsZWN0b3I6WyJjZGtDb25uZWN0ZWRPdmVybGF5VHJhbnNmb3JtT3JpZ2luT24iLCJ0cmFuc2Zvcm1PcmlnaW5TZWxlY3RvciJdfSxvdXRwdXRzOntiYWNrZHJvcENsaWNrOiJiYWNrZHJvcENsaWNrIixwb3NpdGlvbkNoYW5nZToicG9zaXRpb25DaGFuZ2UiLGF0dGFjaDoiYXR0YWNoIixkZXRhY2g6ImRldGFjaCIsb3ZlcmxheUtleWRvd246Im92ZXJsYXlLZXlkb3duIixvdmVybGF5T3V0c2lkZUNsaWNrOiJvdmVybGF5T3V0c2lkZUNsaWNrIn0sZXhwb3J0QXM6WyJjZGtDb25uZWN0ZWRPdmVybGF5Il0sZmVhdHVyZXM6W3FvXX0pLHRWLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6S0J9LHt0eXBlOkVifSx7dHlwZTpGYn0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W1FCXX1dfSx7dHlwZTp2RixkZWNvcmF0b3JzOlt7dHlwZTpCcn1dfV0sdFYucHJvcERlY29yYXRvcnM9e29yaWdpbjpbe3R5cGU6Ul8sYXJnczpbImNka0Nvbm5lY3RlZE92ZXJsYXlPcmlnaW4iXX1dLHBvc2l0aW9uczpbe3R5cGU6Ul8sYXJnczpbImNka0Nvbm5lY3RlZE92ZXJsYXlQb3NpdGlvbnMiXX1dLHBvc2l0aW9uU3RyYXRlZ3k6W3t0eXBlOlJfLGFyZ3M6WyJjZGtDb25uZWN0ZWRPdmVybGF5UG9zaXRpb25TdHJhdGVneSJdfV0sb2Zmc2V0WDpbe3R5cGU6Ul8sYXJnczpbImNka0Nvbm5lY3RlZE92ZXJsYXlPZmZzZXRYIl19XSxvZmZzZXRZOlt7dHlwZTpSXyxhcmdzOlsiY2RrQ29ubmVjdGVkT3ZlcmxheU9mZnNldFkiXX1dLHdpZHRoOlt7dHlwZTpSXyxhcmdzOlsiY2RrQ29ubmVjdGVkT3ZlcmxheVdpZHRoIl19XSxoZWlnaHQ6W3t0eXBlOlJfLGFyZ3M6WyJjZGtDb25uZWN0ZWRPdmVybGF5SGVpZ2h0Il19XSxtaW5XaWR0aDpbe3R5cGU6Ul8sYXJnczpbImNka0Nvbm5lY3RlZE92ZXJsYXlNaW5XaWR0aCJdfV0sbWluSGVpZ2h0Olt7dHlwZTpSXyxhcmdzOlsiY2RrQ29ubmVjdGVkT3ZlcmxheU1pbkhlaWdodCJdfV0sYmFja2Ryb3BDbGFzczpbe3R5cGU6Ul8sYXJnczpbImNka0Nvbm5lY3RlZE92ZXJsYXlCYWNrZHJvcENsYXNzIl19XSxwYW5lbENsYXNzOlt7dHlwZTpSXyxhcmdzOlsiY2RrQ29ubmVjdGVkT3ZlcmxheVBhbmVsQ2xhc3MiXX1dLHZpZXdwb3J0TWFyZ2luOlt7dHlwZTpSXyxhcmdzOlsiY2RrQ29ubmVjdGVkT3ZlcmxheVZpZXdwb3J0TWFyZ2luIl19XSxzY3JvbGxTdHJhdGVneTpbe3R5cGU6Ul8sYXJnczpbImNka0Nvbm5lY3RlZE92ZXJsYXlTY3JvbGxTdHJhdGVneSJdfV0sb3Blbjpbe3R5cGU6Ul8sYXJnczpbImNka0Nvbm5lY3RlZE92ZXJsYXlPcGVuIl19XSxkaXNhYmxlQ2xvc2U6W3t0eXBlOlJfLGFyZ3M6WyJjZGtDb25uZWN0ZWRPdmVybGF5RGlzYWJsZUNsb3NlIl19XSx0cmFuc2Zvcm1PcmlnaW5TZWxlY3Rvcjpbe3R5cGU6Ul8sYXJnczpbImNka0Nvbm5lY3RlZE92ZXJsYXlUcmFuc2Zvcm1PcmlnaW5PbiJdfV0saGFzQmFja2Ryb3A6W3t0eXBlOlJfLGFyZ3M6WyJjZGtDb25uZWN0ZWRPdmVybGF5SGFzQmFja2Ryb3AiXX1dLGxvY2tQb3NpdGlvbjpbe3R5cGU6Ul8sYXJnczpbImNka0Nvbm5lY3RlZE92ZXJsYXlMb2NrUG9zaXRpb24iXX1dLGZsZXhpYmxlRGltZW5zaW9uczpbe3R5cGU6Ul8sYXJnczpbImNka0Nvbm5lY3RlZE92ZXJsYXlGbGV4aWJsZURpbWVuc2lvbnMiXX1dLGdyb3dBZnRlck9wZW46W3t0eXBlOlJfLGFyZ3M6WyJjZGtDb25uZWN0ZWRPdmVybGF5R3Jvd0FmdGVyT3BlbiJdfV0scHVzaDpbe3R5cGU6Ul8sYXJnczpbImNka0Nvbm5lY3RlZE92ZXJsYXlQdXNoIl19XSxiYWNrZHJvcENsaWNrOlt7dHlwZTpFX31dLHBvc2l0aW9uQ2hhbmdlOlt7dHlwZTpFX31dLGF0dGFjaDpbe3R5cGU6RV99XSxkZXRhY2g6W3t0eXBlOkVffV0sb3ZlcmxheUtleWRvd246W3t0eXBlOkVffV0sb3ZlcmxheU91dHNpZGVDbGljazpbe3R5cGU6RV99XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYih0Vixbe3R5cGU6a18sYXJnczpbe3NlbGVjdG9yOiJbY2RrLWNvbm5lY3RlZC1vdmVybGF5XSwgW2Nvbm5lY3RlZC1vdmVybGF5XSwgW2Nka0Nvbm5lY3RlZE92ZXJsYXldIixleHBvcnRBczoiY2RrQ29ubmVjdGVkT3ZlcmxheSJ9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpLQn0se3R5cGU6RWJ9LHt0eXBlOkZifSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbUUJdfV19LHt0eXBlOnZGLGRlY29yYXRvcnM6W3t0eXBlOkJyfV19XX0pLHt2aWV3cG9ydE1hcmdpbjpbe3R5cGU6Ul8sYXJnczpbImNka0Nvbm5lY3RlZE92ZXJsYXlWaWV3cG9ydE1hcmdpbiJdfV0sb3Blbjpbe3R5cGU6Ul8sYXJnczpbImNka0Nvbm5lY3RlZE92ZXJsYXlPcGVuIl19XSxkaXNhYmxlQ2xvc2U6W3t0eXBlOlJfLGFyZ3M6WyJjZGtDb25uZWN0ZWRPdmVybGF5RGlzYWJsZUNsb3NlIl19XSxiYWNrZHJvcENsaWNrOlt7dHlwZTpFX31dLHBvc2l0aW9uQ2hhbmdlOlt7dHlwZTpFX31dLGF0dGFjaDpbe3R5cGU6RV99XSxkZXRhY2g6W3t0eXBlOkVffV0sb3ZlcmxheUtleWRvd246W3t0eXBlOkVffV0sb3ZlcmxheU91dHNpZGVDbGljazpbe3R5cGU6RV99XSxzY3JvbGxTdHJhdGVneTpbe3R5cGU6Ul8sYXJnczpbImNka0Nvbm5lY3RlZE92ZXJsYXlTY3JvbGxTdHJhdGVneSJdfV0sb2Zmc2V0WDpbe3R5cGU6Ul8sYXJnczpbImNka0Nvbm5lY3RlZE92ZXJsYXlPZmZzZXRYIl19XSxvZmZzZXRZOlt7dHlwZTpSXyxhcmdzOlsiY2RrQ29ubmVjdGVkT3ZlcmxheU9mZnNldFkiXX1dLGhhc0JhY2tkcm9wOlt7dHlwZTpSXyxhcmdzOlsiY2RrQ29ubmVjdGVkT3ZlcmxheUhhc0JhY2tkcm9wIl19XSxsb2NrUG9zaXRpb246W3t0eXBlOlJfLGFyZ3M6WyJjZGtDb25uZWN0ZWRPdmVybGF5TG9ja1Bvc2l0aW9uIl19XSxmbGV4aWJsZURpbWVuc2lvbnM6W3t0eXBlOlJfLGFyZ3M6WyJjZGtDb25uZWN0ZWRPdmVybGF5RmxleGlibGVEaW1lbnNpb25zIl19XSxncm93QWZ0ZXJPcGVuOlt7dHlwZTpSXyxhcmdzOlsiY2RrQ29ubmVjdGVkT3ZlcmxheUdyb3dBZnRlck9wZW4iXX1dLHB1c2g6W3t0eXBlOlJfLGFyZ3M6WyJjZGtDb25uZWN0ZWRPdmVybGF5UHVzaCJdfV0scG9zaXRpb25zOlt7dHlwZTpSXyxhcmdzOlsiY2RrQ29ubmVjdGVkT3ZlcmxheVBvc2l0aW9ucyJdfV0sb3JpZ2luOlt7dHlwZTpSXyxhcmdzOlsiY2RrQ29ubmVjdGVkT3ZlcmxheU9yaWdpbiJdfV0scG9zaXRpb25TdHJhdGVneTpbe3R5cGU6Ul8sYXJnczpbImNka0Nvbm5lY3RlZE92ZXJsYXlQb3NpdGlvblN0cmF0ZWd5Il19XSx3aWR0aDpbe3R5cGU6Ul8sYXJnczpbImNka0Nvbm5lY3RlZE92ZXJsYXlXaWR0aCJdfV0saGVpZ2h0Olt7dHlwZTpSXyxhcmdzOlsiY2RrQ29ubmVjdGVkT3ZlcmxheUhlaWdodCJdfV0sbWluV2lkdGg6W3t0eXBlOlJfLGFyZ3M6WyJjZGtDb25uZWN0ZWRPdmVybGF5TWluV2lkdGgiXX1dLG1pbkhlaWdodDpbe3R5cGU6Ul8sYXJnczpbImNka0Nvbm5lY3RlZE92ZXJsYXlNaW5IZWlnaHQiXX1dLGJhY2tkcm9wQ2xhc3M6W3t0eXBlOlJfLGFyZ3M6WyJjZGtDb25uZWN0ZWRPdmVybGF5QmFja2Ryb3BDbGFzcyJdfV0scGFuZWxDbGFzczpbe3R5cGU6Ul8sYXJnczpbImNka0Nvbm5lY3RlZE92ZXJsYXlQYW5lbENsYXNzIl19XSx0cmFuc2Zvcm1PcmlnaW5TZWxlY3Rvcjpbe3R5cGU6Ul8sYXJnczpbImNka0Nvbm5lY3RlZE92ZXJsYXlUcmFuc2Zvcm1PcmlnaW5PbiJdfV19KTtjb25zdCBlVj17cHJvdmlkZTpRQixkZXBzOltLQl0sdXNlRmFjdG9yeTpmdW5jdGlvbiBuVih0KXtyZXR1cm4oKT0+dC5zY3JvbGxTdHJhdGVnaWVzLnJlcG9zaXRpb24oKX19OwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jbGFzcyBvVnt9b1YuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fG9WKX0sb1YuybVtb2Q9Zm8oe3R5cGU6b1Z9KSxvVi7JtWluaj1Ebih7cHJvdmlkZXJzOltLQixlVl0saW1wb3J0czpbW09GLGhCLGlCXSxpQl19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKG9WLFt7dHlwZTpMXyxhcmdzOlt7aW1wb3J0czpbT0YsaEIsaUJdLGV4cG9ydHM6W3RWLCRCLGlCXSxkZWNsYXJhdGlvbnM6W3RWLCRCXSxwcm92aWRlcnM6W0tCLGVWXX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnVvKG9WLHtkZWNsYXJhdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm5bdFYsJEJdfSxpbXBvcnRzOmZ1bmN0aW9uKCl7cmV0dXJuW09GLGhCLGlCXX0sZXhwb3J0czpmdW5jdGlvbigpe3JldHVyblt0ViwkQixpQl19fSk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3MgaVYgZXh0ZW5kcyBIQntjb25zdHJ1Y3Rvcih0LGUpe3N1cGVyKHQsZSl9bmdPbkRlc3Ryb3koKXtzdXBlci5uZ09uRGVzdHJveSgpLHRoaXMuX2Z1bGxTY3JlZW5FdmVudE5hbWUmJnRoaXMuX2Z1bGxTY3JlZW5MaXN0ZW5lciYmdGhpcy5fZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcih0aGlzLl9mdWxsU2NyZWVuRXZlbnROYW1lLHRoaXMuX2Z1bGxTY3JlZW5MaXN0ZW5lcil9X2NyZWF0ZUNvbnRhaW5lcigpe3N1cGVyLl9jcmVhdGVDb250YWluZXIoKSx0aGlzLl9hZGp1c3RQYXJlbnRGb3JGdWxsc2NyZWVuQ2hhbmdlKCksdGhpcy5fYWRkRnVsbHNjcmVlbkNoYW5nZUxpc3RlbmVyKCgoKT0+dGhpcy5fYWRqdXN0UGFyZW50Rm9yRnVsbHNjcmVlbkNoYW5nZSgpKSl9X2FkanVzdFBhcmVudEZvckZ1bGxzY3JlZW5DaGFuZ2UoKXtpZighdGhpcy5fY29udGFpbmVyRWxlbWVudClyZXR1cm47KHRoaXMuZ2V0RnVsbHNjcmVlbkVsZW1lbnQoKXx8dGhpcy5fZG9jdW1lbnQuYm9keSkuYXBwZW5kQ2hpbGQodGhpcy5fY29udGFpbmVyRWxlbWVudCl9X2FkZEZ1bGxzY3JlZW5DaGFuZ2VMaXN0ZW5lcih0KXtjb25zdCBlPXRoaXMuX2dldEV2ZW50TmFtZSgpO2UmJih0aGlzLl9mdWxsU2NyZWVuTGlzdGVuZXImJnRoaXMuX2RvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoZSx0aGlzLl9mdWxsU2NyZWVuTGlzdGVuZXIpLHRoaXMuX2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoZSx0KSx0aGlzLl9mdWxsU2NyZWVuTGlzdGVuZXI9dCl9X2dldEV2ZW50TmFtZSgpe2lmKCF0aGlzLl9mdWxsU2NyZWVuRXZlbnROYW1lKXtjb25zdCB0PXRoaXMuX2RvY3VtZW50O3QuZnVsbHNjcmVlbkVuYWJsZWQ/dGhpcy5fZnVsbFNjcmVlbkV2ZW50TmFtZT0iZnVsbHNjcmVlbmNoYW5nZSI6dC53ZWJraXRGdWxsc2NyZWVuRW5hYmxlZD90aGlzLl9mdWxsU2NyZWVuRXZlbnROYW1lPSJ3ZWJraXRmdWxsc2NyZWVuY2hhbmdlIjp0Lm1vekZ1bGxTY3JlZW5FbmFibGVkP3RoaXMuX2Z1bGxTY3JlZW5FdmVudE5hbWU9Im1vemZ1bGxzY3JlZW5jaGFuZ2UiOnQubXNGdWxsc2NyZWVuRW5hYmxlZCYmKHRoaXMuX2Z1bGxTY3JlZW5FdmVudE5hbWU9Ik1TRnVsbHNjcmVlbkNoYW5nZSIpfXJldHVybiB0aGlzLl9mdWxsU2NyZWVuRXZlbnROYW1lfWdldEZ1bGxzY3JlZW5FbGVtZW50KCl7Y29uc3QgdD10aGlzLl9kb2N1bWVudDtyZXR1cm4gdC5mdWxsc2NyZWVuRWxlbWVudHx8dC53ZWJraXRGdWxsc2NyZWVuRWxlbWVudHx8dC5tb3pGdWxsU2NyZWVuRWxlbWVudHx8dC5tc0Z1bGxzY3JlZW5FbGVtZW50fHxudWxsfX1pVi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8aVYpKFRyKHNNKSxUcihjSCkpfSxpVi7JtXByb3Y9U24oe2ZhY3Rvcnk6ZnVuY3Rpb24gdCgpe3JldHVybiBuZXcgaVYoVHIoc00pLFRyKGNIKSl9LHRva2VuOmlWLHByb3ZpZGVkSW46InJvb3QifSksaVYuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbc01dfV19LHt0eXBlOmNIfV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihpVixbe3R5cGU6VW0sYXJnczpbe3Byb3ZpZGVkSW46InJvb3QifV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W3NNXX1dfSx7dHlwZTpjSH1dfSksbnVsbCk7Y2xhc3MgYVZ7fWFWLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxhVil9LGFWLsm1bW9kPWZvKHt0eXBlOmFWfSksYVYuybVpbmo9RG4oe30pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoYVYsW3t0eXBlOkxfLGFyZ3M6W3t9XX1dLG51bGwsbnVsbCk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjb25zdCByVj1uZXcgU2V0O2xldCBzVjtjbGFzcyBsVntjb25zdHJ1Y3Rvcih0KXt0aGlzLl9wbGF0Zm9ybT10LHRoaXMuX21hdGNoTWVkaWE9dGhpcy5fcGxhdGZvcm0uaXNCcm93c2VyJiZ3aW5kb3cubWF0Y2hNZWRpYT93aW5kb3cubWF0Y2hNZWRpYS5iaW5kKHdpbmRvdyk6Y1Z9bWF0Y2hNZWRpYSh0KXtyZXR1cm4gdGhpcy5fcGxhdGZvcm0uV0VCS0lUJiYoZnVuY3Rpb24gZSh0KXtpZihyVi5oYXModCkpcmV0dXJuO3RyeXtzVnx8KHNWPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxlIiksc1Yuc2V0QXR0cmlidXRlKCJ0eXBlIiwidGV4dC9jc3MiKSxkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHNWKSksc1Yuc2hlZXQmJihzVi5zaGVldC5pbnNlcnRSdWxlKGBAbWVkaWEgJHt0fSB7LmZ4LXF1ZXJ5LXRlc3R7IH19YCwwKSxyVi5hZGQodCkpfWNhdGNoKHQpe2NvbnNvbGUuZXJyb3IodCl9fSkodCksdGhpcy5fbWF0Y2hNZWRpYSh0KX19ZnVuY3Rpb24gY1YodCl7cmV0dXJue21hdGNoZXM6ImFsbCI9PT10fHwiIj09PXQsbWVkaWE6dCxhZGRMaXN0ZW5lcjooKT0+e30scmVtb3ZlTGlzdGVuZXI6KCk9Pnt9fX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovbFYuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGxWKShUcihjSCkpfSxsVi7JtXByb3Y9U24oe2ZhY3Rvcnk6ZnVuY3Rpb24gdCgpe3JldHVybiBuZXcgbFYoVHIoY0gpKX0sdG9rZW46bFYscHJvdmlkZWRJbjoicm9vdCJ9KSxsVi5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOmNIfV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihsVixbe3R5cGU6VW0sYXJnczpbe3Byb3ZpZGVkSW46InJvb3QifV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6Y0h9XX0pLG51bGwpO2NsYXNzIGRWe2NvbnN0cnVjdG9yKHQsZSl7dGhpcy5fbWVkaWFNYXRjaGVyPXQsdGhpcy5fem9uZT1lLHRoaXMuX3F1ZXJpZXM9bmV3IE1hcCx0aGlzLl9kZXN0cm95U3ViamVjdD1uZXcgQn1uZ09uRGVzdHJveSgpe3RoaXMuX2Rlc3Ryb3lTdWJqZWN0Lm5leHQoKSx0aGlzLl9kZXN0cm95U3ViamVjdC5jb21wbGV0ZSgpfWlzTWF0Y2hlZCh0KXtyZXR1cm4gcFYoaUgodCkpLnNvbWUoKHQ9PnRoaXMuX3JlZ2lzdGVyUXVlcnkodCkubXFsLm1hdGNoZXMpKX1vYnNlcnZlKHQpe2xldCBlPUt0KHBWKGlIKHQpKS5tYXAoKHQ9PnRoaXMuX3JlZ2lzdGVyUXVlcnkodCkub2JzZXJ2YWJsZSkpKTtyZXR1cm4gZT1uZShlLnBpcGUodmUoMSkpLGUucGlwZShMZSgxKSxDZSgwKSkpLGUucGlwZShWdCgodD0+e2NvbnN0IGU9e21hdGNoZXM6ITEsYnJlYWtwb2ludHM6e319O3JldHVybiB0LmZvckVhY2goKCh7bWF0Y2hlczp0LHF1ZXJ5Om59KT0+e2UubWF0Y2hlcz1lLm1hdGNoZXN8fHQsZS5icmVha3BvaW50c1tuXT10fSkpLGV9KSkpfV9yZWdpc3RlclF1ZXJ5KHQpe2lmKHRoaXMuX3F1ZXJpZXMuaGFzKHQpKXJldHVybiB0aGlzLl9xdWVyaWVzLmdldCh0KTtjb25zdCBlPXRoaXMuX21lZGlhTWF0Y2hlci5tYXRjaE1lZGlhKHQpLG49e29ic2VydmFibGU6bmV3IFQoKHQ9Pntjb25zdCBuPWU9PnRoaXMuX3pvbmUucnVuKCgoKT0+dC5uZXh0KGUpKSk7cmV0dXJuIGUuYWRkTGlzdGVuZXIobiksKCk9PntlLnJlbW92ZUxpc3RlbmVyKG4pfX0pKS5waXBlKEJlKGUpLFZ0KCgoe21hdGNoZXM6ZX0pPT4oe3F1ZXJ5OnQsbWF0Y2hlczplfSkpKSxqZSh0aGlzLl9kZXN0cm95U3ViamVjdCkpLG1xbDplfTtyZXR1cm4gdGhpcy5fcXVlcmllcy5zZXQodCxuKSxufX1mdW5jdGlvbiBwVih0KXtyZXR1cm4gdC5tYXAoKHQ9PnQuc3BsaXQoIiwiKSkpLnJlZHVjZSgoKHQsZSk9PnQuY29uY2F0KGUpKSkubWFwKCh0PT50LnRyaW0oKSkpfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9kVi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8ZFYpKFRyKGxWKSxUcihtQykpfSxkVi7JtXByb3Y9U24oe2ZhY3Rvcnk6ZnVuY3Rpb24gdCgpe3JldHVybiBuZXcgZFYoVHIobFYpLFRyKG1DKSl9LHRva2VuOmRWLHByb3ZpZGVkSW46InJvb3QifSksZFYuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpsVn0se3R5cGU6bUN9XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKGRWLFt7dHlwZTpVbSxhcmdzOlt7cHJvdmlkZWRJbjoicm9vdCJ9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpsVn0se3R5cGU6bUN9XX0pLG51bGwpO2NvbnN0IG1WPSIobWF4LXdpZHRoOiA1OTkuOThweCkgYW5kIChvcmllbnRhdGlvbjogcG9ydHJhaXQpLCAobWF4LXdpZHRoOiA5NTkuOThweCkgYW5kIChvcmllbnRhdGlvbjogbGFuZHNjYXBlKSIsZlY9IihtYXgtd2lkdGg6IDU5OS45OHB4KSBhbmQgKG9yaWVudGF0aW9uOiBwb3J0cmFpdCkiO2Z1bmN0aW9uIHVWKHQsZSl7aWYoMSZ0KXtjb25zdCB0PXdmKCk7Q2YoMCwiZGl2IiwxKSxDZigxLCJidXR0b24iLDIpLFJmKCJjbGljayIsKGZ1bmN0aW9uIGUoKXtQaSh0KTtyZXR1cm4gemYoKS5hY3Rpb24oKX0pKSxQdSgyKSxNZigpLE1mKCl9aWYoMiZ0KXtjb25zdCB0PXpmKCk7RGMoMiksd3UodC5kYXRhLmFjdGlvbil9fWZ1bmN0aW9uIGdWKHQsZSl7fWNvbnN0IGhWPW5ldyBlcigiTWF0U25hY2tCYXJEYXRhIik7Y2xhc3MgYlZ7Y29uc3RydWN0b3IoKXt0aGlzLnBvbGl0ZW5lc3M9ImFzc2VydGl2ZSIsdGhpcy5hbm5vdW5jZW1lbnRNZXNzYWdlPSIiLHRoaXMuZHVyYXRpb249MCx0aGlzLmRhdGE9bnVsbCx0aGlzLmhvcml6b250YWxQb3NpdGlvbj0iY2VudGVyIix0aGlzLnZlcnRpY2FsUG9zaXRpb249ImJvdHRvbSJ9fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jb25zdCB5Vj1NYXRoLnBvdygyLDMxKS0xO2NsYXNzIF9We2NvbnN0cnVjdG9yKHQsZSl7dGhpcy5fb3ZlcmxheVJlZj1lLHRoaXMuX2FmdGVyRGlzbWlzc2VkPW5ldyBCLHRoaXMuX2FmdGVyT3BlbmVkPW5ldyBCLHRoaXMuX29uQWN0aW9uPW5ldyBCLHRoaXMuX2Rpc21pc3NlZEJ5QWN0aW9uPSExLHRoaXMuY29udGFpbmVySW5zdGFuY2U9dCx0aGlzLm9uQWN0aW9uKCkuc3Vic2NyaWJlKCgoKT0+dGhpcy5kaXNtaXNzKCkpKSx0Ll9vbkV4aXQuc3Vic2NyaWJlKCgoKT0+dGhpcy5fZmluaXNoRGlzbWlzcygpKSl9ZGlzbWlzcygpe3RoaXMuX2FmdGVyRGlzbWlzc2VkLmNsb3NlZHx8dGhpcy5jb250YWluZXJJbnN0YW5jZS5leGl0KCksY2xlYXJUaW1lb3V0KHRoaXMuX2R1cmF0aW9uVGltZW91dElkKX1kaXNtaXNzV2l0aEFjdGlvbigpe3RoaXMuX29uQWN0aW9uLmNsb3NlZHx8KHRoaXMuX2Rpc21pc3NlZEJ5QWN0aW9uPSEwLHRoaXMuX29uQWN0aW9uLm5leHQoKSx0aGlzLl9vbkFjdGlvbi5jb21wbGV0ZSgpKSxjbGVhclRpbWVvdXQodGhpcy5fZHVyYXRpb25UaW1lb3V0SWQpfWNsb3NlV2l0aEFjdGlvbigpe3RoaXMuZGlzbWlzc1dpdGhBY3Rpb24oKX1fZGlzbWlzc0FmdGVyKHQpe3RoaXMuX2R1cmF0aW9uVGltZW91dElkPXNldFRpbWVvdXQoKCgpPT50aGlzLmRpc21pc3MoKSksTWF0aC5taW4odCx5VikpfV9vcGVuKCl7dGhpcy5fYWZ0ZXJPcGVuZWQuY2xvc2VkfHwodGhpcy5fYWZ0ZXJPcGVuZWQubmV4dCgpLHRoaXMuX2FmdGVyT3BlbmVkLmNvbXBsZXRlKCkpfV9maW5pc2hEaXNtaXNzKCl7dGhpcy5fb3ZlcmxheVJlZi5kaXNwb3NlKCksdGhpcy5fb25BY3Rpb24uY2xvc2VkfHx0aGlzLl9vbkFjdGlvbi5jb21wbGV0ZSgpLHRoaXMuX2FmdGVyRGlzbWlzc2VkLm5leHQoe2Rpc21pc3NlZEJ5QWN0aW9uOnRoaXMuX2Rpc21pc3NlZEJ5QWN0aW9ufSksdGhpcy5fYWZ0ZXJEaXNtaXNzZWQuY29tcGxldGUoKSx0aGlzLl9kaXNtaXNzZWRCeUFjdGlvbj0hMX1hZnRlckRpc21pc3NlZCgpe3JldHVybiB0aGlzLl9hZnRlckRpc21pc3NlZH1hZnRlck9wZW5lZCgpe3JldHVybiB0aGlzLmNvbnRhaW5lckluc3RhbmNlLl9vbkVudGVyfW9uQWN0aW9uKCl7cmV0dXJuIHRoaXMuX29uQWN0aW9ufX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY2xhc3MgQ1Z7Y29uc3RydWN0b3IodCxlKXt0aGlzLnNuYWNrQmFyUmVmPXQsdGhpcy5kYXRhPWV9YWN0aW9uKCl7dGhpcy5zbmFja0JhclJlZi5kaXNtaXNzV2l0aEFjdGlvbigpfWdldCBoYXNBY3Rpb24oKXtyZXR1cm4hIXRoaXMuZGF0YS5hY3Rpb259fUNWLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxDVikoZ2YoX1YpLGdmKGhWKSl9LENWLsm1Y21wPXNvKHt0eXBlOkNWLHNlbGVjdG9yczpbWyJzaW1wbGUtc25hY2stYmFyIl1dLGhvc3RBdHRyczpbMSwibWF0LXNpbXBsZS1zbmFja2JhciJdLGRlY2xzOjMsdmFyczoyLGNvbnN0czpbWyJjbGFzcyIsIm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uIiw0LCJuZ0lmIl0sWzEsIm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uIl0sWyJtYXQtYnV0dG9uIiwiIiwzLCJjbGljayJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoQ2YoMCwic3BhbiIpLFB1KDEpLE1mKCksSG0oMix1ViwzLDEsImRpdiIsMCkpLDImZSYmKERjKDEpLHd1KG4uZGF0YS5tZXNzYWdlKSxEYygxKSxiZigibmdJZiIsbi5oYXNBY3Rpb24pKX0sZGlyZWN0aXZlczpbUHYsTkxdLHN0eWxlczpbIi5tYXQtc2ltcGxlLXNuYWNrYmFye2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjthbGlnbi1pdGVtczpjZW50ZXI7bGluZS1oZWlnaHQ6MjBweDtvcGFjaXR5OjF9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9ue2ZsZXgtc2hyaW5rOjA7bWFyZ2luOi04cHggLThweCAtOHB4IDhweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb24gYnV0dG9ue21heC1oZWlnaHQ6MzZweDttaW4td2lkdGg6MH1bZGlyPXJ0bF0gLm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9ue21hcmdpbi1sZWZ0Oi04cHg7bWFyZ2luLXJpZ2h0OjhweH1cbiJdLGVuY2Fwc3VsYXRpb246MixjaGFuZ2VEZXRlY3Rpb246MH0pLENWLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6X1Z9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltoVl19XX1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoQ1YsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3Rvcjoic2ltcGxlLXNuYWNrLWJhciIsdGVtcGxhdGU6JzxzcGFuPnt7ZGF0YS5tZXNzYWdlfX08L3NwYW4+XG48ZGl2IGNsYXNzPSJtYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbiIgICpuZ0lmPSJoYXNBY3Rpb24iPlxuICA8YnV0dG9uIG1hdC1idXR0b24gKGNsaWNrKT0iYWN0aW9uKCkiPnt7ZGF0YS5hY3Rpb259fTwvYnV0dG9uPlxuPC9kaXY+XG4nLGVuY2Fwc3VsYXRpb246V24uTm9uZSxjaGFuZ2VEZXRlY3Rpb246am4uT25QdXNoLGhvc3Q6e2NsYXNzOiJtYXQtc2ltcGxlLXNuYWNrYmFyIn0sc3R5bGVzOlsiLm1hdC1zaW1wbGUtc25hY2tiYXJ7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO2FsaWduLWl0ZW1zOmNlbnRlcjtsaW5lLWhlaWdodDoyMHB4O29wYWNpdHk6MX0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb257ZmxleC1zaHJpbms6MDttYXJnaW46LThweCAtOHB4IC04cHggOHB4fS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbiBidXR0b257bWF4LWhlaWdodDozNnB4O21pbi13aWR0aDowfVtkaXI9cnRsXSAubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb257bWFyZ2luLWxlZnQ6LThweDttYXJnaW4tcmlnaHQ6OHB4fVxuIl19XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpfVn0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W2hWXX1dfV19KSxudWxsKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNvbnN0IE1WPXtzbmFja0JhclN0YXRlOnhPKCJzdGF0ZSIsW2tPKCJ2b2lkLCBoaWRkZW4iLHdPKHt0cmFuc2Zvcm06InNjYWxlKDAuOCkiLG9wYWNpdHk6MH0pKSxrTygidmlzaWJsZSIsd08oe3RyYW5zZm9ybToic2NhbGUoMSkiLG9wYWNpdHk6MX0pKSxETygiKiA9PiB2aXNpYmxlIixPTygiMTUwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSkiKSksRE8oIiogPT4gdm9pZCwgKiA9PiBoaWRkZW4iLE9PKCI3NW1zIGN1YmljLWJlemllcigwLjQsIDAuMCwgMSwgMSkiLHdPKHtvcGFjaXR5OjB9KSkpXSl9OwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jbGFzcyB2ViBleHRlbmRzIGRCe2NvbnN0cnVjdG9yKHQsZSxuLG8saSl7c3VwZXIoKSx0aGlzLl9uZ1pvbmU9dCx0aGlzLl9lbGVtZW50UmVmPWUsdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWY9bix0aGlzLl9wbGF0Zm9ybT1vLHRoaXMuc25hY2tCYXJDb25maWc9aSx0aGlzLl9hbm5vdW5jZURlbGF5PTE1MCx0aGlzLl9kZXN0cm95ZWQ9ITEsdGhpcy5fb25Bbm5vdW5jZT1uZXcgQix0aGlzLl9vbkV4aXQ9bmV3IEIsdGhpcy5fb25FbnRlcj1uZXcgQix0aGlzLl9hbmltYXRpb25TdGF0ZT0idm9pZCIsdGhpcy5hdHRhY2hEb21Qb3J0YWw9dD0+KHRoaXMuX2Fzc2VydE5vdEF0dGFjaGVkKCksdGhpcy5fYXBwbHlTbmFja0JhckNsYXNzZXMoKSx0aGlzLl9wb3J0YWxPdXRsZXQuYXR0YWNoRG9tUG9ydGFsKHQpKSx0aGlzLl9saXZlPSJhc3NlcnRpdmUiIT09aS5wb2xpdGVuZXNzfHxpLmFubm91bmNlbWVudE1lc3NhZ2U/Im9mZiI9PT1pLnBvbGl0ZW5lc3M/Im9mZiI6InBvbGl0ZSI6ImFzc2VydGl2ZSIsdGhpcy5fcGxhdGZvcm0uRklSRUZPWCYmKCJwb2xpdGUiPT09dGhpcy5fbGl2ZSYmKHRoaXMuX3JvbGU9InN0YXR1cyIpLCJhc3NlcnRpdmUiPT09dGhpcy5fbGl2ZSYmKHRoaXMuX3JvbGU9ImFsZXJ0IikpfWF0dGFjaENvbXBvbmVudFBvcnRhbCh0KXtyZXR1cm4gdGhpcy5fYXNzZXJ0Tm90QXR0YWNoZWQoKSx0aGlzLl9hcHBseVNuYWNrQmFyQ2xhc3NlcygpLHRoaXMuX3BvcnRhbE91dGxldC5hdHRhY2hDb21wb25lbnRQb3J0YWwodCl9YXR0YWNoVGVtcGxhdGVQb3J0YWwodCl7cmV0dXJuIHRoaXMuX2Fzc2VydE5vdEF0dGFjaGVkKCksdGhpcy5fYXBwbHlTbmFja0JhckNsYXNzZXMoKSx0aGlzLl9wb3J0YWxPdXRsZXQuYXR0YWNoVGVtcGxhdGVQb3J0YWwodCl9b25BbmltYXRpb25FbmQodCl7Y29uc3R7ZnJvbVN0YXRlOmUsdG9TdGF0ZTpufT10O2lmKCgidm9pZCI9PT1uJiYidm9pZCIhPT1lfHwiaGlkZGVuIj09PW4pJiZ0aGlzLl9jb21wbGV0ZUV4aXQoKSwidmlzaWJsZSI9PT1uKXtjb25zdCB0PXRoaXMuX29uRW50ZXI7dGhpcy5fbmdab25lLnJ1bigoKCk9Pnt0Lm5leHQoKSx0LmNvbXBsZXRlKCl9KSl9fWVudGVyKCl7dGhpcy5fZGVzdHJveWVkfHwodGhpcy5fYW5pbWF0aW9uU3RhdGU9InZpc2libGUiLHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKSx0aGlzLl9zY3JlZW5SZWFkZXJBbm5vdW5jZSgpKX1leGl0KCl7cmV0dXJuIHRoaXMuX2FuaW1hdGlvblN0YXRlPSJoaWRkZW4iLHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5zZXRBdHRyaWJ1dGUoIm1hdC1leGl0IiwiIiksY2xlYXJUaW1lb3V0KHRoaXMuX2Fubm91bmNlVGltZW91dElkKSx0aGlzLl9vbkV4aXR9bmdPbkRlc3Ryb3koKXt0aGlzLl9kZXN0cm95ZWQ9ITAsdGhpcy5fY29tcGxldGVFeGl0KCl9X2NvbXBsZXRlRXhpdCgpe3RoaXMuX25nWm9uZS5vbk1pY3JvdGFza0VtcHR5LnBpcGUodmUoMSkpLnN1YnNjcmliZSgoKCk9Pnt0aGlzLl9vbkV4aXQubmV4dCgpLHRoaXMuX29uRXhpdC5jb21wbGV0ZSgpfSkpfV9hcHBseVNuYWNrQmFyQ2xhc3Nlcygpe2NvbnN0IHQ9dGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LGU9dGhpcy5zbmFja0JhckNvbmZpZy5wYW5lbENsYXNzO2UmJihBcnJheS5pc0FycmF5KGUpP2UuZm9yRWFjaCgoZT0+dC5jbGFzc0xpc3QuYWRkKGUpKSk6dC5jbGFzc0xpc3QuYWRkKGUpKSwiY2VudGVyIj09PXRoaXMuc25hY2tCYXJDb25maWcuaG9yaXpvbnRhbFBvc2l0aW9uJiZ0LmNsYXNzTGlzdC5hZGQoIm1hdC1zbmFjay1iYXItY2VudGVyIiksInRvcCI9PT10aGlzLnNuYWNrQmFyQ29uZmlnLnZlcnRpY2FsUG9zaXRpb24mJnQuY2xhc3NMaXN0LmFkZCgibWF0LXNuYWNrLWJhci10b3AiKX1fYXNzZXJ0Tm90QXR0YWNoZWQoKXtpZih0aGlzLl9wb3J0YWxPdXRsZXQuaGFzQXR0YWNoZWQoKSYmKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpKXRocm93IEVycm9yKCJBdHRlbXB0aW5nIHRvIGF0dGFjaCBzbmFjayBiYXIgY29udGVudCBhZnRlciBjb250ZW50IGlzIGFscmVhZHkgYXR0YWNoZWQiKX1fc2NyZWVuUmVhZGVyQW5ub3VuY2UoKXt0aGlzLl9hbm5vdW5jZVRpbWVvdXRJZHx8dGhpcy5fbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgoKT0+e3RoaXMuX2Fubm91bmNlVGltZW91dElkPXNldFRpbWVvdXQoKCgpPT57Y29uc3QgdD10aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcigiW2FyaWEtaGlkZGVuXSIpLGU9dGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoIlthcmlhLWxpdmVdIik7aWYodCYmZSl7bGV0IG49bnVsbDt0aGlzLl9wbGF0Zm9ybS5pc0Jyb3dzZXImJmRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCYmdC5jb250YWlucyhkb2N1bWVudC5hY3RpdmVFbGVtZW50KSYmKG49ZG9jdW1lbnQuYWN0aXZlRWxlbWVudCksdC5yZW1vdmVBdHRyaWJ1dGUoImFyaWEtaGlkZGVuIiksZS5hcHBlbmRDaGlsZCh0KSxudWxsPT1ufHxuLmZvY3VzKCksdGhpcy5fb25Bbm5vdW5jZS5uZXh0KCksdGhpcy5fb25Bbm5vdW5jZS5jb21wbGV0ZSgpfX0pLHRoaXMuX2Fubm91bmNlRGVsYXkpfSkpfX12Vi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8dlYpKGdmKG1DKSxnZihLaCksZ2YoT2IpLGdmKGNIKSxnZihiVikpfSx2Vi7JtWNtcD1zbyh7dHlwZTp2VixzZWxlY3RvcnM6W1sic25hY2stYmFyLWNvbnRhaW5lciJdXSx2aWV3UXVlcnk6ZnVuY3Rpb24gdChlLG4pe2lmKDEmZSYmVnkodUIsNyksMiZlKXtsZXQgdDtCeSh0PVV5KCkpJiYobi5fcG9ydGFsT3V0bGV0PXQuZmlyc3QpfX0saG9zdEF0dHJzOlsxLCJtYXQtc25hY2stYmFyLWNvbnRhaW5lciJdLGhvc3RWYXJzOjEsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJkVmKCJAc3RhdGUuZG9uZSIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4ub25BbmltYXRpb25FbmQoZSl9KSksMiZlJiZkZygiQHN0YXRlIixuLl9hbmltYXRpb25TdGF0ZSl9LGZlYXR1cmVzOltRcF0sZGVjbHM6Myx2YXJzOjIsY29uc3RzOltbImFyaWEtaGlkZGVuIiwidHJ1ZSJdLFsiY2RrUG9ydGFsT3V0bGV0IiwiIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihDZigwLCJkaXYiLDApLEhtKDEsZ1YsMCwwLCJuZy10ZW1wbGF0ZSIsMSksTWYoKSx2ZigyLCJkaXYiKSksMiZlJiYoRGMoMikseW0oImFyaWEtbGl2ZSIsbi5fbGl2ZSkoInJvbGUiLG4uX3JvbGUpKX0sZGlyZWN0aXZlczpbdUJdLHN0eWxlczpbIi5tYXQtc25hY2stYmFyLWNvbnRhaW5lcntib3JkZXItcmFkaXVzOjRweDtib3gtc2l6aW5nOmJvcmRlci1ib3g7ZGlzcGxheTpibG9jazttYXJnaW46MjRweDttYXgtd2lkdGg6MzN2dzttaW4td2lkdGg6MzQ0cHg7cGFkZGluZzoxNHB4IDE2cHg7bWluLWhlaWdodDo0OHB4O3RyYW5zZm9ybS1vcmlnaW46Y2VudGVyfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1zbmFjay1iYXItY29udGFpbmVye2JvcmRlcjpzb2xpZCAxcHh9Lm1hdC1zbmFjay1iYXItaGFuZHNldHt3aWR0aDoxMDAlfS5tYXQtc25hY2stYmFyLWhhbmRzZXQgLm1hdC1zbmFjay1iYXItY29udGFpbmVye21hcmdpbjo4cHg7bWF4LXdpZHRoOjEwMCU7bWluLXdpZHRoOjA7d2lkdGg6MTAwJX1cbiJdLGVuY2Fwc3VsYXRpb246MixkYXRhOnthbmltYXRpb246W01WLnNuYWNrQmFyU3RhdGVdfX0pLHZWLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6bUN9LHt0eXBlOktofSx7dHlwZTpPYn0se3R5cGU6Y0h9LHt0eXBlOmJWfV0sdlYucHJvcERlY29yYXRvcnM9e19wb3J0YWxPdXRsZXQ6W3t0eXBlOmFyLGFyZ3M6W3VCLHtzdGF0aWM6ITB9XX1dfSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKHZWLFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6InNuYWNrLWJhci1jb250YWluZXIiLHRlbXBsYXRlOidceDNjIS0tIEluaXRpYWxseSBob2xkcyB0aGUgc25hY2sgYmFyIGNvbnRlbnQsIHdpbGwgYmUgZW1wdHkgYWZ0ZXIgYW5ub3VuY2luZyB0byBzY3JlZW4gcmVhZGVycy4gLS1ceDNlXG48ZGl2IGFyaWEtaGlkZGVuPSJ0cnVlIj5cbiAgPG5nLXRlbXBsYXRlIGNka1BvcnRhbE91dGxldD48L25nLXRlbXBsYXRlPlxuPC9kaXY+XG5cblx4M2MhLS0gV2lsbCByZWNlaXZlIHRoZSBzbmFjayBiYXIgY29udGVudCBmcm9tIHRoZSBub24tbGl2ZSBkaXYsIG1vdmUgd2lsbCBoYXBwZW4gYSBzaG9ydCBkZWxheSBhZnRlciBvcGVuaW5nIC0tXHgzZVxuPGRpdiBbYXR0ci5hcmlhLWxpdmVdPSJfbGl2ZSIgW2F0dHIucm9sZV09Il9yb2xlIj48L2Rpdj5cbicsY2hhbmdlRGV0ZWN0aW9uOmpuLkRlZmF1bHQsZW5jYXBzdWxhdGlvbjpXbi5Ob25lLGFuaW1hdGlvbnM6W01WLnNuYWNrQmFyU3RhdGVdLGhvc3Q6e2NsYXNzOiJtYXQtc25hY2stYmFyLWNvbnRhaW5lciIsIltAc3RhdGVdIjoiX2FuaW1hdGlvblN0YXRlIiwiKEBzdGF0ZS5kb25lKSI6Im9uQW5pbWF0aW9uRW5kKCRldmVudCkifSxzdHlsZXM6WyIubWF0LXNuYWNrLWJhci1jb250YWluZXJ7Ym9yZGVyLXJhZGl1czo0cHg7Ym94LXNpemluZzpib3JkZXItYm94O2Rpc3BsYXk6YmxvY2s7bWFyZ2luOjI0cHg7bWF4LXdpZHRoOjMzdnc7bWluLXdpZHRoOjM0NHB4O3BhZGRpbmc6MTRweCAxNnB4O21pbi1oZWlnaHQ6NDhweDt0cmFuc2Zvcm0tb3JpZ2luOmNlbnRlcn0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtc25hY2stYmFyLWNvbnRhaW5lcntib3JkZXI6c29saWQgMXB4fS5tYXQtc25hY2stYmFyLWhhbmRzZXR7d2lkdGg6MTAwJX0ubWF0LXNuYWNrLWJhci1oYW5kc2V0IC5tYXQtc25hY2stYmFyLWNvbnRhaW5lcnttYXJnaW46OHB4O21heC13aWR0aDoxMDAlO21pbi13aWR0aDowO3dpZHRoOjEwMCV9XG4iXX1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOm1DfSx7dHlwZTpLaH0se3R5cGU6T2J9LHt0eXBlOmNIfSx7dHlwZTpiVn1dfSkse19wb3J0YWxPdXRsZXQ6W3t0eXBlOmFyLGFyZ3M6W3VCLHtzdGF0aWM6ITB9XX1dfSk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjbGFzcyB4Vnt9eFYuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHhWKX0seFYuybVtb2Q9Zm8oe3R5cGU6eFZ9KSx4Vi7JtWluaj1Ebih7aW1wb3J0czpbW29WLGhCLHJ4LElMLE5GXSxORl19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKHhWLFt7dHlwZTpMXyxhcmdzOlt7aW1wb3J0czpbb1YsaEIscngsSUwsTkZdLGV4cG9ydHM6W3ZWLE5GXSxkZWNsYXJhdGlvbnM6W3ZWLENWXSxlbnRyeUNvbXBvbmVudHM6W3ZWLENWXX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnVvKHhWLHtkZWNsYXJhdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm5bdlYsQ1ZdfSxpbXBvcnRzOmZ1bmN0aW9uKCl7cmV0dXJuW29WLGhCLHJ4LElMLE5GXX0sZXhwb3J0czpmdW5jdGlvbigpe3JldHVyblt2VixORl19fSk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjb25zdCBPVj1uZXcgZXIoIm1hdC1zbmFjay1iYXItZGVmYXVsdC1vcHRpb25zIix7cHJvdmlkZWRJbjoicm9vdCIsZmFjdG9yeTpmdW5jdGlvbiBQVigpe3JldHVybiBuZXcgYlZ9fSk7Y2xhc3Mgd1Z7Y29uc3RydWN0b3IodCxlLG4sbyxpLGEpe3RoaXMuX292ZXJsYXk9dCx0aGlzLl9saXZlPWUsdGhpcy5faW5qZWN0b3I9bix0aGlzLl9icmVha3BvaW50T2JzZXJ2ZXI9byx0aGlzLl9wYXJlbnRTbmFja0Jhcj1pLHRoaXMuX2RlZmF1bHRDb25maWc9YSx0aGlzLl9zbmFja0JhclJlZkF0VGhpc0xldmVsPW51bGwsdGhpcy5zaW1wbGVTbmFja0JhckNvbXBvbmVudD1DVix0aGlzLnNuYWNrQmFyQ29udGFpbmVyQ29tcG9uZW50PXZWLHRoaXMuaGFuZHNldENzc0NsYXNzPSJtYXQtc25hY2stYmFyLWhhbmRzZXQifWdldCBfb3BlbmVkU25hY2tCYXJSZWYoKXtjb25zdCB0PXRoaXMuX3BhcmVudFNuYWNrQmFyO3JldHVybiB0P3QuX29wZW5lZFNuYWNrQmFyUmVmOnRoaXMuX3NuYWNrQmFyUmVmQXRUaGlzTGV2ZWx9c2V0IF9vcGVuZWRTbmFja0JhclJlZih0KXt0aGlzLl9wYXJlbnRTbmFja0Jhcj90aGlzLl9wYXJlbnRTbmFja0Jhci5fb3BlbmVkU25hY2tCYXJSZWY9dDp0aGlzLl9zbmFja0JhclJlZkF0VGhpc0xldmVsPXR9b3BlbkZyb21Db21wb25lbnQodCxlKXtyZXR1cm4gdGhpcy5fYXR0YWNoKHQsZSl9b3BlbkZyb21UZW1wbGF0ZSh0LGUpe3JldHVybiB0aGlzLl9hdHRhY2godCxlKX1vcGVuKHQsZT0iIixuKXtjb25zdCBvPU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0aGlzLl9kZWZhdWx0Q29uZmlnKSxuKTtyZXR1cm4gby5kYXRhPXttZXNzYWdlOnQsYWN0aW9uOmV9LG8uYW5ub3VuY2VtZW50TWVzc2FnZT09PXQmJihvLmFubm91bmNlbWVudE1lc3NhZ2U9dm9pZCAwKSx0aGlzLm9wZW5Gcm9tQ29tcG9uZW50KHRoaXMuc2ltcGxlU25hY2tCYXJDb21wb25lbnQsbyl9ZGlzbWlzcygpe3RoaXMuX29wZW5lZFNuYWNrQmFyUmVmJiZ0aGlzLl9vcGVuZWRTbmFja0JhclJlZi5kaXNtaXNzKCl9bmdPbkRlc3Ryb3koKXt0aGlzLl9zbmFja0JhclJlZkF0VGhpc0xldmVsJiZ0aGlzLl9zbmFja0JhclJlZkF0VGhpc0xldmVsLmRpc21pc3MoKX1fYXR0YWNoU25hY2tCYXJDb250YWluZXIodCxlKXtjb25zdCBuPU5wLmNyZWF0ZSh7cGFyZW50OmUmJmUudmlld0NvbnRhaW5lclJlZiYmZS52aWV3Q29udGFpbmVyUmVmLmluamVjdG9yfHx0aGlzLl9pbmplY3Rvcixwcm92aWRlcnM6W3twcm92aWRlOmJWLHVzZVZhbHVlOmV9XX0pLG89bmV3IHNCKHRoaXMuc25hY2tCYXJDb250YWluZXJDb21wb25lbnQsZS52aWV3Q29udGFpbmVyUmVmLG4pLGk9dC5hdHRhY2gobyk7cmV0dXJuIGkuaW5zdGFuY2Uuc25hY2tCYXJDb25maWc9ZSxpLmluc3RhbmNlfV9hdHRhY2godCxlKXtjb25zdCBuPU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LG5ldyBiViksdGhpcy5fZGVmYXVsdENvbmZpZyksZSksbz10aGlzLl9jcmVhdGVPdmVybGF5KG4pLGk9dGhpcy5fYXR0YWNoU25hY2tCYXJDb250YWluZXIobyxuKSxhPW5ldyBfVihpLG8pO2lmKHQgaW5zdGFuY2VvZiBFYil7Y29uc3QgZT1uZXcgbEIodCxudWxsLHskaW1wbGljaXQ6bi5kYXRhLHNuYWNrQmFyUmVmOmF9KTthLmluc3RhbmNlPWkuYXR0YWNoVGVtcGxhdGVQb3J0YWwoZSl9ZWxzZXtjb25zdCBlPXRoaXMuX2NyZWF0ZUluamVjdG9yKG4sYSksbz1uZXcgc0IodCx2b2lkIDAsZSkscj1pLmF0dGFjaENvbXBvbmVudFBvcnRhbChvKTthLmluc3RhbmNlPXIuaW5zdGFuY2V9cmV0dXJuIHRoaXMuX2JyZWFrcG9pbnRPYnNlcnZlci5vYnNlcnZlKGZWKS5waXBlKGplKG8uZGV0YWNobWVudHMoKSkpLnN1YnNjcmliZSgodD0+e2NvbnN0IGU9by5vdmVybGF5RWxlbWVudC5jbGFzc0xpc3Q7dC5tYXRjaGVzP2UuYWRkKHRoaXMuaGFuZHNldENzc0NsYXNzKTplLnJlbW92ZSh0aGlzLmhhbmRzZXRDc3NDbGFzcyl9KSksbi5hbm5vdW5jZW1lbnRNZXNzYWdlJiZpLl9vbkFubm91bmNlLnN1YnNjcmliZSgoKCk9Pnt0aGlzLl9saXZlLmFubm91bmNlKG4uYW5ub3VuY2VtZW50TWVzc2FnZSxuLnBvbGl0ZW5lc3MpfSkpLHRoaXMuX2FuaW1hdGVTbmFja0JhcihhLG4pLHRoaXMuX29wZW5lZFNuYWNrQmFyUmVmPWEsdGhpcy5fb3BlbmVkU25hY2tCYXJSZWZ9X2FuaW1hdGVTbmFja0Jhcih0LGUpe3QuYWZ0ZXJEaXNtaXNzZWQoKS5zdWJzY3JpYmUoKCgpPT57dGhpcy5fb3BlbmVkU25hY2tCYXJSZWY9PXQmJih0aGlzLl9vcGVuZWRTbmFja0JhclJlZj1udWxsKSxlLmFubm91bmNlbWVudE1lc3NhZ2UmJnRoaXMuX2xpdmUuY2xlYXIoKX0pKSx0aGlzLl9vcGVuZWRTbmFja0JhclJlZj8odGhpcy5fb3BlbmVkU25hY2tCYXJSZWYuYWZ0ZXJEaXNtaXNzZWQoKS5zdWJzY3JpYmUoKCgpPT57dC5jb250YWluZXJJbnN0YW5jZS5lbnRlcigpfSkpLHRoaXMuX29wZW5lZFNuYWNrQmFyUmVmLmRpc21pc3MoKSk6dC5jb250YWluZXJJbnN0YW5jZS5lbnRlcigpLGUuZHVyYXRpb24mJmUuZHVyYXRpb24+MCYmdC5hZnRlck9wZW5lZCgpLnN1YnNjcmliZSgoKCk9PnQuX2Rpc21pc3NBZnRlcihlLmR1cmF0aW9uKSkpfV9jcmVhdGVPdmVybGF5KHQpe2NvbnN0IGU9bmV3IHdCO2UuZGlyZWN0aW9uPXQuZGlyZWN0aW9uO2xldCBuPXRoaXMuX292ZXJsYXkucG9zaXRpb24oKS5nbG9iYWwoKTtjb25zdCBvPSJydGwiPT09dC5kaXJlY3Rpb24saT0ibGVmdCI9PT10Lmhvcml6b250YWxQb3NpdGlvbnx8InN0YXJ0Ij09PXQuaG9yaXpvbnRhbFBvc2l0aW9uJiYhb3x8ImVuZCI9PT10Lmhvcml6b250YWxQb3NpdGlvbiYmbyxhPSFpJiYiY2VudGVyIiE9PXQuaG9yaXpvbnRhbFBvc2l0aW9uO3JldHVybiBpP24ubGVmdCgiMCIpOmE/bi5yaWdodCgiMCIpOm4uY2VudGVySG9yaXpvbnRhbGx5KCksInRvcCI9PT10LnZlcnRpY2FsUG9zaXRpb24/bi50b3AoIjAiKTpuLmJvdHRvbSgiMCIpLGUucG9zaXRpb25TdHJhdGVneT1uLHRoaXMuX292ZXJsYXkuY3JlYXRlKGUpfV9jcmVhdGVJbmplY3Rvcih0LGUpe3JldHVybiBOcC5jcmVhdGUoe3BhcmVudDp0JiZ0LnZpZXdDb250YWluZXJSZWYmJnQudmlld0NvbnRhaW5lclJlZi5pbmplY3Rvcnx8dGhpcy5faW5qZWN0b3IscHJvdmlkZXJzOlt7cHJvdmlkZTpfVix1c2VWYWx1ZTplfSx7cHJvdmlkZTpoVix1c2VWYWx1ZTp0LmRhdGF9XX0pfX13Vi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8d1YpKFRyKEtCKSxUcihjRiksVHIoTnApLFRyKGRWKSxUcih3ViwxMiksVHIoT1YpKX0sd1YuybVwcm92PVNuKHtmYWN0b3J5OmZ1bmN0aW9uIHQoKXtyZXR1cm4gbmV3IHdWKFRyKEtCKSxUcihjRiksVHIoeXApLFRyKGRWKSxUcih3ViwxMiksVHIoT1YpKX0sdG9rZW46d1YscHJvdmlkZWRJbjp4Vn0pLHdWLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6S0J9LHt0eXBlOmNGfSx7dHlwZTpOcH0se3R5cGU6ZFZ9LHt0eXBlOndWLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpqcn1dfSx7dHlwZTpiVixkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltPVl19XX1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIod1YsW3t0eXBlOlVtLGFyZ3M6W3twcm92aWRlZEluOnhWfV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6S0J9LHt0eXBlOmNGfSx7dHlwZTpOcH0se3R5cGU6ZFZ9LHt0eXBlOndWLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpqcn1dfSx7dHlwZTpiVixkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltPVl19XX1dfSksbnVsbCk7Y29uc3Qga1Y9L1tcXF4kLiorPygpW1xde318XS9nO2NvbnN0IFNWPSJcXHUwMDAwLVxcdTAwMjBcXHUwMDdmLVxcdTAwOWYiLERWPW5ldyBSZWdFeHAoIig/OlthLXpBLVpdW2EtekEtWjAtOSsuLV17Mix9OlxcL1xcL3xkYXRhOnx3d3dcXC4pW15cXHMiK1NWKyciXXsyLH1bXlxccycrU1YrIlwiJyl9XFxdLDo7LiE/XSIsImd1Iik7ZnVuY3Rpb24gUlYodCl7cmV0dXJuKGZ1bmN0aW9uIGUodCxuKXtuLmZsYWdzLmluY2x1ZGVzKCJnIil8fChuPW5ldyBSZWdFeHAobixuLmZsYWdzKyJnIikpO2NvbnN0IG89W107bGV0IGk9MDtmb3IoY29uc3QgZSBvZiB0Lm1hdGNoQWxsKG4pKXtjb25zdCBuPWUuaW5kZXgsYT1lWzBdO24+aSYmby5wdXNoKHtpbmRleDppLHRleHQ6dC5zdWJzdHJpbmcoaSxuKSxtYXRjaGVzUmVnZXg6ITF9KSxvLnB1c2goe2luZGV4Om4sdGV4dDphLG1hdGNoZXNSZWdleDohMH0pLGk9bithLmxlbmd0aH1yZXR1cm4gdC5sZW5ndGg+aSYmby5wdXNoKHtpbmRleDppLHRleHQ6dC5zdWJzdHJpbmcoaSx0Lmxlbmd0aCksbWF0Y2hlc1JlZ2V4OiExfSksb30pKHQsRFYpLm1hcCgoKHttYXRjaGVzUmVnZXg6dCx0ZXh0OmV9KT0+KHtpc1VSTDp0LHRleHQ6ZX0pKSl9ZnVuY3Rpb24gRVYodCxlKXtpZigxJnQmJih4ZigwKSxQdSgxKSxPZigpKSwyJnQpe2NvbnN0IHQ9emYoKS4kaW1wbGljaXQ7RGMoMSksa3UoIiAiLHQudGV4dCwiICIpfX1mdW5jdGlvbiBBVih0LGUpe2lmKDEmdCYmKENmKDAsImEiLDcpLFB1KDEpLE1mKCkpLDImdCl7Y29uc3QgdD16ZigpLiRpbXBsaWNpdDtMZigiaHJlZiIsdC50ZXh0LFhzKSxEYygxKSx3dSh0LnRleHQpfX1mdW5jdGlvbiBUVih0LGUpe2lmKDEmdCYmKHhmKDApLEhtKDEsRVYsMiwxLCJuZy1jb250YWluZXIiLDUpLEhtKDIsQVYsMiwyLCJuZy10ZW1wbGF0ZSIsbnVsbCw2LHF5KSxPZigpKSwyJnQpe2NvbnN0IHQ9ZS4kaW1wbGljaXQsbj1GbSgzKTtEYygxKSxiZigibmdJZiIsIXQuaXNVUkwpKCJuZ0lmRWxzZSIsbil9fWZ1bmN0aW9uIE5WKHQsZSl7aWYoMSZ0KXtjb25zdCB0PXdmKCk7Q2YoMCwiYnV0dG9uIiw4KSxSZigiY2xpY2siLChmdW5jdGlvbiBlKCl7UGkodCk7cmV0dXJuIHpmKCkub25BY3Rpb25CdXR0b25DbGlja2VkKCl9KSksUHUoMSksTWYoKX1pZigyJnQpe2NvbnN0IHQ9emYoKTtEYygxKSxrdSgiICIsdC5hbGVydC5mb2xsb3d1cEFjdGlvbi5sb2NhbGl6ZWRMYWJlbCwiICIpfX1jbGFzcyB6Vntjb25zdHJ1Y3Rvcih0LGUsbil7dGhpcy5zbmFja0JhclJlZj10LHRoaXMudW5rbm93bkRhdGE9ZSx0aGlzLnN0b3JlPW4sdGhpcy5zcGxpdEJ5VVJMPVJWLHRoaXMuYWxlcnQ9ZX1vbkFjdGlvbkJ1dHRvbkNsaWNrZWQoKXtyZXR1cm4gWFQodGhpcyx2b2lkIDAsdm9pZCAwLChmdW5jdGlvbiooKXt0aGlzLnNuYWNrQmFyUmVmLmRpc21pc3MoKTtjb25zdCB0PXlpZWxkIHRoaXMuYWxlcnQuZm9sbG93dXBBY3Rpb24uZ2V0Rm9sbG93dXBBY3Rpb24odGhpcy5zdG9yZSk7dGhpcy5zdG9yZS5kaXNwYXRjaCh0KX0pKX1vbkNsb3NlQnV0dG9uQ2xpY2tlZCgpe3RoaXMuc25hY2tCYXJSZWYuZGlzbWlzcygpfX16Vi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8elYpKGdmKF9WKSxnZihoViksZ2YoaVMpKX0selYuybVjbXA9c28oe3R5cGU6elYsc2VsZWN0b3JzOltbImFsZXJ0LWRpc3BsYXktc25hY2tiYXIiXV0sZGVjbHM6Nix2YXJzOjIsY29uc3RzOmZ1bmN0aW9uKCl7bGV0IHQ7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBuZ0kxOG5DbG9zdXJlTW9kZSYmbmdJMThuQ2xvc3VyZU1vZGUpe3Q9Z29vZy5nZXRNc2coIkRpc21pc3MiKX1lbHNlIHQ9JGxvY2FsaXplYDpBIGJ1dHRvbiB0byBjbG9zZSB0aGUgc25hY2tiYXIgbWVzc2FnZeKQn2VhNGQ5ZmU2MTQyMGEzZmNlODFjZjU0YzRjNjE1ZTNjMTljNjQ2YTbikJ8xNTM2MDg3NTE5NzQzNzA3MzYyOkRpc21pc3NgO3JldHVybltbMSwibWVzc2FnZSJdLFs0LCJuZ0ZvciIsIm5nRm9yT2YiXSxbMSwiY29udHJvbHMiXSxbIm1hdC1idXR0b24iLCIiLCJjbGFzcyIsImZvbGxvd3VwLWJ1dHRvbiIsMywiY2xpY2siLDQsIm5nSWYiXSxbIm1hdC1idXR0b24iLCIiLCJhcmlhLWxhYmVsIix0LDEsImRpc21pc3MtYnV0dG9uIiwzLCJjbGljayJdLFs0LCJuZ0lmIiwibmdJZkVsc2UiXSxbImxpbmtQaWVjZSIsIiJdLFsicmVsIiwibm9yZWZlcnJlciBub29wZW5lciIsInRhcmdldCIsIl9ibGFuayIsMywiaHJlZiJdLFsibWF0LWJ1dHRvbiIsIiIsMSwiZm9sbG93dXAtYnV0dG9uIiwzLCJjbGljayJdXX0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKENmKDAsImRpdiIsMCksSG0oMSxUViw0LDIsIm5nLWNvbnRhaW5lciIsMSksTWYoKSxDZigyLCJkaXYiLDIpLEhtKDMsTlYsMiwxLCJidXR0b24iLDMpLENmKDQsImJ1dHRvbiIsNCksUmYoImNsaWNrIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLm9uQ2xvc2VCdXR0b25DbGlja2VkKCl9KSksUHUoNSwiIERpc21pc3MgIiksTWYoKSxNZigpKSwyJmUmJihEYygxKSxiZigibmdGb3JPZiIsbi5zcGxpdEJ5VVJMKG4uYWxlcnQubG9jYWxpemVkTWVzc2FnZSkpLERjKDIpLGJmKCJuZ0lmIixuLmFsZXJ0LmZvbGxvd3VwQWN0aW9uKSl9LGRpcmVjdGl2ZXM6W3h2LFB2LE5MXSxzdHlsZXM6WyJbX25naG9zdC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtmbGV4LXdyYXA6d3JhcH0ubWVzc2FnZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7YWxpZ24tc2VsZjpjZW50ZXI7bWFyZ2luOjVweCAwO3dvcmQtYnJlYWs6YnJlYWstd29yZH0ubWVzc2FnZVtfbmdjb250ZW50LSVDT01QJV0gICBhW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjppbmhlcml0fS5jb250cm9sc1tfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO21hcmdpbi1sZWZ0OmF1dG99YnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2V9Il0sY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKHpWLFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6ImFsZXJ0LWRpc3BsYXktc25hY2tiYXIiLHRlbXBsYXRlVXJsOiIuL2FsZXJ0X2Rpc3BsYXlfc25hY2tiYXJfY29udGFpbmVyLm5nLmh0bWwiLHN0eWxlVXJsczpbIi4vYWxlcnRfZGlzcGxheV9zbmFja2Jhcl9jb250YWluZXIuY3NzIl0sY2hhbmdlRGV0ZWN0aW9uOmpuLk9uUHVzaH1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOl9WfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbaFZdfV19LHt0eXBlOmlTfV19KSxudWxsKTtjbGFzcyBJVntjb25zdHJ1Y3Rvcih0LGUpe3RoaXMuc3RvcmU9dCx0aGlzLnNuYWNrQmFyPWUsdGhpcy5uZ1Vuc3Vic2NyaWJlPW5ldyBCfW5nT25Jbml0KCl7dGhpcy5zdG9yZS5zZWxlY3QoV1QpLnBpcGUoamUodGhpcy5uZ1Vuc3Vic2NyaWJlKSx1ZSgodD0+Qm9vbGVhbih0KSkpKS5zdWJzY3JpYmUoKHQ9Pnt0aGlzLnNob3dBbGVydCh0KX0pKX1uZ09uRGVzdHJveSgpe3RoaXMubmdVbnN1YnNjcmliZS5uZXh0KCksdGhpcy5uZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCl9c2hvd0FsZXJ0KHQpe3RoaXMuc25hY2tCYXIub3BlbkZyb21Db21wb25lbnQoelYse2R1cmF0aW9uOjVlMyxob3Jpem9udGFsUG9zaXRpb246InN0YXJ0Iix2ZXJ0aWNhbFBvc2l0aW9uOiJib3R0b20iLGRhdGE6dH0pfX1JVi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8SVYpKGdmKGlTKSxnZih3VikpfSxJVi7JtWNtcD1zbyh7dHlwZTpJVixzZWxlY3RvcnM6W1siYWxlcnQtc25hY2tiYXIiXV0sZGVjbHM6MCx2YXJzOjAsdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pe30sZW5jYXBzdWxhdGlvbjoyLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihJVixbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJhbGVydC1zbmFja2JhciIsdGVtcGxhdGU6IiIsY2hhbmdlRGV0ZWN0aW9uOmpuLk9uUHVzaH1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmlTfSx7dHlwZTp3Vn1dfSksbnVsbCk7Y2xhc3MgSFZ7fUhWLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxIVil9LEhWLsm1bW9kPWZvKHt0eXBlOkhWfSksSFYuybVpbmo9RG4oe2ltcG9ydHM6W1tyeCxJTCx4Vl1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihIVixbe3R5cGU6TF8sYXJnczpbe2RlY2xhcmF0aW9uczpbSVYselZdLGV4cG9ydHM6W0lWXSxpbXBvcnRzOltyeCxJTCx4Vl0sZW50cnlDb21wb25lbnRzOlt6Vl19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZ1byhIVix7ZGVjbGFyYXRpb25zOltJVix6Vl0saW1wb3J0czpbcngsSUwseFZdLGV4cG9ydHM6W0lWXX0pO2NsYXNzIEZWe31GVi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8RlYpfSxGVi7JtW1vZD1mbyh7dHlwZTpGVn0pLEZWLsm1aW5qPURuKHtpbXBvcnRzOltbbVQsSFYsVFMuZm9yRmVhdHVyZShVVCxaSSksaEQuZm9yRmVhdHVyZShbWUldKV1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihGVixbe3R5cGU6TF8sYXJnczpbe2ltcG9ydHM6W21ULEhWLFRTLmZvckZlYXR1cmUoVVQsWkkpLGhELmZvckZlYXR1cmUoW1lJXSldfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmdW8oRlYse2ltcG9ydHM6W21ULEhWLEFTLGdEXX0pO2NvbnN0IExWPVsiKiIsW1sibWF0LXRvb2xiYXItcm93Il1dXSxCVj1JRihjbGFzc3tjb25zdHJ1Y3Rvcih0KXt0aGlzLl9lbGVtZW50UmVmPXR9fSk7Y2xhc3MgVlZ7fVZWLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxWVil9LFZWLsm1ZGlyPWhvKHt0eXBlOlZWLHNlbGVjdG9yczpbWyJtYXQtdG9vbGJhci1yb3ciXV0saG9zdEF0dHJzOlsxLCJtYXQtdG9vbGJhci1yb3ciXSxleHBvcnRBczpbIm1hdFRvb2xiYXJSb3ciXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoVlYsW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3RvcjoibWF0LXRvb2xiYXItcm93IixleHBvcnRBczoibWF0VG9vbGJhclJvdyIsaG9zdDp7Y2xhc3M6Im1hdC10b29sYmFyLXJvdyJ9fV19XSxudWxsLG51bGwpO2NsYXNzIGpWIGV4dGVuZHMgQlZ7Y29uc3RydWN0b3IodCxlLG4pe3N1cGVyKHQpLHRoaXMuX3BsYXRmb3JtPWUsdGhpcy5fZG9jdW1lbnQ9bn1uZ0FmdGVyVmlld0luaXQoKXt0aGlzLl9wbGF0Zm9ybS5pc0Jyb3dzZXImJih0aGlzLl9jaGVja1Rvb2xiYXJNaXhlZE1vZGVzKCksdGhpcy5fdG9vbGJhclJvd3MuY2hhbmdlcy5zdWJzY3JpYmUoKCgpPT50aGlzLl9jaGVja1Rvb2xiYXJNaXhlZE1vZGVzKCkpKSl9X2NoZWNrVG9vbGJhck1peGVkTW9kZXMoKXtpZih0aGlzLl90b29sYmFyUm93cy5sZW5ndGgmJigidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSl7QXJyYXkuZnJvbSh0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY2hpbGROb2RlcykuZmlsdGVyKCh0PT4hKHQuY2xhc3NMaXN0JiZ0LmNsYXNzTGlzdC5jb250YWlucygibWF0LXRvb2xiYXItcm93IikpKSkuZmlsdGVyKCh0PT50Lm5vZGVUeXBlIT09KHRoaXMuX2RvY3VtZW50P3RoaXMuX2RvY3VtZW50LkNPTU1FTlRfTk9ERTo4KSkpLnNvbWUoKHQ9PiEoIXQudGV4dENvbnRlbnR8fCF0LnRleHRDb250ZW50LnRyaW0oKSkpKSYmKGZ1bmN0aW9uIHQoKXt0aHJvdyBFcnJvcigiTWF0VG9vbGJhcjogQXR0ZW1wdGluZyB0byBjb21iaW5lIGRpZmZlcmVudCB0b29sYmFyIG1vZGVzLiBFaXRoZXIgc3BlY2lmeSBtdWx0aXBsZSBgPG1hdC10b29sYmFyLXJvdz5gIGVsZW1lbnRzIGV4cGxpY2l0bHkgb3IganVzdCBwbGFjZSBjb250ZW50IGluc2lkZSBvZiBhIGA8bWF0LXRvb2xiYXI+YCBmb3IgYSBzaW5nbGUgcm93LiIpfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8pKCl9fX1qVi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8alYpKGdmKEtoKSxnZihjSCksZ2Yoc00pKX0salYuybVjbXA9c28oe3R5cGU6alYsc2VsZWN0b3JzOltbIm1hdC10b29sYmFyIl1dLGNvbnRlbnRRdWVyaWVzOmZ1bmN0aW9uIHQoZSxuLG8pe2lmKDEmZSYmankobyxWViw1KSwyJmUpe2xldCB0O0J5KHQ9VXkoKSkmJihuLl90b29sYmFyUm93cz10KX19LGhvc3RBdHRyczpbMSwibWF0LXRvb2xiYXIiXSxob3N0VmFyczo0LGhvc3RCaW5kaW5nczpmdW5jdGlvbiB0KGUsbil7MiZlJiZjdSgibWF0LXRvb2xiYXItbXVsdGlwbGUtcm93cyIsbi5fdG9vbGJhclJvd3MubGVuZ3RoPjApKCJtYXQtdG9vbGJhci1zaW5nbGUtcm93IiwwPT09bi5fdG9vbGJhclJvd3MubGVuZ3RoKX0saW5wdXRzOntjb2xvcjoiY29sb3IifSxleHBvcnRBczpbIm1hdFRvb2xiYXIiXSxmZWF0dXJlczpbUXBdLG5nQ29udGVudFNlbGVjdG9yczpbIioiLCJtYXQtdG9vbGJhci1yb3ciXSxkZWNsczoyLHZhcnM6MCx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoSGYoTFYpLEZmKDApLEZmKDEsMSkpfSxzdHlsZXM6WyIuY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtdG9vbGJhcntvdXRsaW5lOnNvbGlkIDFweH0ubWF0LXRvb2xiYXItcm93LC5tYXQtdG9vbGJhci1zaW5nbGUtcm93e2Rpc3BsYXk6ZmxleDtib3gtc2l6aW5nOmJvcmRlci1ib3g7cGFkZGluZzowIDE2cHg7d2lkdGg6MTAwJTtmbGV4LWRpcmVjdGlvbjpyb3c7YWxpZ24taXRlbXM6Y2VudGVyO3doaXRlLXNwYWNlOm5vd3JhcH0ubWF0LXRvb2xiYXItbXVsdGlwbGUtcm93c3tkaXNwbGF5OmZsZXg7Ym94LXNpemluZzpib3JkZXItYm94O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjt3aWR0aDoxMDAlfVxuIl0sZW5jYXBzdWxhdGlvbjoyLGNoYW5nZURldGVjdGlvbjowfSksalYuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpLaH0se3R5cGU6Y0h9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltzTV19XX1dLGpWLnByb3BEZWNvcmF0b3JzPXtfdG9vbGJhclJvd3M6W3t0eXBlOm9yLGFyZ3M6W1ZWLHtkZXNjZW5kYW50czohMH1dfV19LCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoalYsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoibWF0LXRvb2xiYXIiLGV4cG9ydEFzOiJtYXRUb29sYmFyIix0ZW1wbGF0ZTonPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuPG5nLWNvbnRlbnQgc2VsZWN0PSJtYXQtdG9vbGJhci1yb3ciPjwvbmctY29udGVudD5cbicsaW5wdXRzOlsiY29sb3IiXSxob3N0OntjbGFzczoibWF0LXRvb2xiYXIiLCJbY2xhc3MubWF0LXRvb2xiYXItbXVsdGlwbGUtcm93c10iOiJfdG9vbGJhclJvd3MubGVuZ3RoID4gMCIsIltjbGFzcy5tYXQtdG9vbGJhci1zaW5nbGUtcm93XSI6Il90b29sYmFyUm93cy5sZW5ndGggPT09IDAifSxjaGFuZ2VEZXRlY3Rpb246am4uT25QdXNoLGVuY2Fwc3VsYXRpb246V24uTm9uZSxzdHlsZXM6WyIuY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtdG9vbGJhcntvdXRsaW5lOnNvbGlkIDFweH0ubWF0LXRvb2xiYXItcm93LC5tYXQtdG9vbGJhci1zaW5nbGUtcm93e2Rpc3BsYXk6ZmxleDtib3gtc2l6aW5nOmJvcmRlci1ib3g7cGFkZGluZzowIDE2cHg7d2lkdGg6MTAwJTtmbGV4LWRpcmVjdGlvbjpyb3c7YWxpZ24taXRlbXM6Y2VudGVyO3doaXRlLXNwYWNlOm5vd3JhcH0ubWF0LXRvb2xiYXItbXVsdGlwbGUtcm93c3tkaXNwbGF5OmZsZXg7Ym94LXNpemluZzpib3JkZXItYm94O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjt3aWR0aDoxMDAlfVxuIl19XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpLaH0se3R5cGU6Y0h9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltzTV19XX1dfSkse190b29sYmFyUm93czpbe3R5cGU6b3IsYXJnczpbVlYse2Rlc2NlbmRhbnRzOiEwfV19XX0pO2NsYXNzIFVWe31mdW5jdGlvbiBXVih0LGUpezEmdCYmRmYoMCl9VVYuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFVWKX0sVVYuybVtb2Q9Zm8oe3R5cGU6VVZ9KSxVVi7JtWluaj1Ebih7aW1wb3J0czpbW05GXSxORl19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKFVWLFt7dHlwZTpMXyxhcmdzOlt7aW1wb3J0czpbTkZdLGV4cG9ydHM6W2pWLFZWLE5GXSxkZWNsYXJhdGlvbnM6W2pWLFZWXX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnVvKFVWLHtkZWNsYXJhdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm5balYsVlZdfSxpbXBvcnRzOmZ1bmN0aW9uKCl7cmV0dXJuW05GXX0sZXhwb3J0czpmdW5jdGlvbigpe3JldHVybltqVixWVixORl19fSk7Y29uc3QgR1Y9WyIqIl07ZnVuY3Rpb24gWVYodCxlKXt9Y29uc3QgcVY9ZnVuY3Rpb24odCl7cmV0dXJue2FuaW1hdGlvbkR1cmF0aW9uOnR9fSxaVj1mdW5jdGlvbih0LGUpe3JldHVybnt2YWx1ZTp0LHBhcmFtczplfX0sWFY9WyJ0YWJCb2R5V3JhcHBlciJdLEtWPVsidGFiSGVhZGVyIl07ZnVuY3Rpb24gSlYodCxlKXt9ZnVuY3Rpb24gUVYodCxlKXtpZigxJnQmJkhtKDAsSlYsMCwwLCJuZy10ZW1wbGF0ZSIsOSksMiZ0KXtiZigiY2RrUG9ydGFsT3V0bGV0Iix6ZigpLiRpbXBsaWNpdC50ZW1wbGF0ZUxhYmVsKX19ZnVuY3Rpb24gJFYodCxlKXtpZigxJnQmJlB1KDApLDImdCl7d3UoemYoKS4kaW1wbGljaXQudGV4dExhYmVsKX19ZnVuY3Rpb24gdGoodCxlKXtpZigxJnQpe2NvbnN0IHQ9d2YoKTtDZigwLCJkaXYiLDYpLFJmKCJjbGljayIsKGZ1bmN0aW9uIGUoKXtjb25zdCBuPVBpKHQpLG89bi4kaW1wbGljaXQsaT1uLmluZGV4LGE9emYoKSxyPUZtKDEpO3JldHVybiBhLl9oYW5kbGVDbGljayhvLHIsaSl9KSkoImNka0ZvY3VzQ2hhbmdlIiwoZnVuY3Rpb24gZShuKXtjb25zdCBvPVBpKHQpLmluZGV4O3JldHVybiB6ZigpLl90YWJGb2N1c0NoYW5nZWQobixvKX0pKSxDZigxLCJkaXYiLDcpLEhtKDIsUVYsMSwxLCJuZy10ZW1wbGF0ZSIsOCksSG0oMywkViwxLDEsIm5nLXRlbXBsYXRlIiw4KSxNZigpLE1mKCl9aWYoMiZ0KXtjb25zdCB0PWUuJGltcGxpY2l0LG49ZS5pbmRleCxvPXpmKCk7Y3UoIm1hdC10YWItbGFiZWwtYWN0aXZlIixvLnNlbGVjdGVkSW5kZXg9PW4pLGJmKCJpZCIsby5fZ2V0VGFiTGFiZWxJZChuKSkoImRpc2FibGVkIix0LmRpc2FibGVkKSgibWF0UmlwcGxlRGlzYWJsZWQiLHQuZGlzYWJsZWR8fG8uZGlzYWJsZVJpcHBsZSkseW0oInRhYkluZGV4IixvLl9nZXRUYWJJbmRleCh0LG4pKSgiYXJpYS1wb3NpbnNldCIsbisxKSgiYXJpYS1zZXRzaXplIixvLl90YWJzLmxlbmd0aCkoImFyaWEtY29udHJvbHMiLG8uX2dldFRhYkNvbnRlbnRJZChuKSkoImFyaWEtc2VsZWN0ZWQiLG8uc2VsZWN0ZWRJbmRleD09bikoImFyaWEtbGFiZWwiLHQuYXJpYUxhYmVsfHxudWxsKSgiYXJpYS1sYWJlbGxlZGJ5IiwhdC5hcmlhTGFiZWwmJnQuYXJpYUxhYmVsbGVkYnk/dC5hcmlhTGFiZWxsZWRieTpudWxsKSxEYygyKSxiZigibmdJZiIsdC50ZW1wbGF0ZUxhYmVsKSxEYygxKSxiZigibmdJZiIsIXQudGVtcGxhdGVMYWJlbCl9fWZ1bmN0aW9uIGVqKHQsZSl7aWYoMSZ0KXtjb25zdCB0PXdmKCk7Q2YoMCwibWF0LXRhYi1ib2R5IiwxMCksUmYoIl9vbkNlbnRlcmVkIiwoZnVuY3Rpb24gZSgpe1BpKHQpO3JldHVybiB6ZigpLl9yZW1vdmVUYWJCb2R5V3JhcHBlckhlaWdodCgpfSkpKCJfb25DZW50ZXJpbmciLChmdW5jdGlvbiBlKG4pe1BpKHQpO3JldHVybiB6ZigpLl9zZXRUYWJCb2R5V3JhcHBlckhlaWdodChuKX0pKSxNZigpfWlmKDImdCl7Y29uc3QgdD1lLiRpbXBsaWNpdCxuPWUuaW5kZXgsbz16ZigpO2N1KCJtYXQtdGFiLWJvZHktYWN0aXZlIixvLnNlbGVjdGVkSW5kZXg9PT1uKSxiZigiaWQiLG8uX2dldFRhYkNvbnRlbnRJZChuKSkoImNvbnRlbnQiLHQuY29udGVudCkoInBvc2l0aW9uIix0LnBvc2l0aW9uKSgib3JpZ2luIix0Lm9yaWdpbikoImFuaW1hdGlvbkR1cmF0aW9uIixvLmFuaW1hdGlvbkR1cmF0aW9uKSx5bSgidGFiaW5kZXgiLG51bGwhPW8uY29udGVudFRhYkluZGV4JiZvLnNlbGVjdGVkSW5kZXg9PT1uP28uY29udGVudFRhYkluZGV4Om51bGwpKCJhcmlhLWxhYmVsbGVkYnkiLG8uX2dldFRhYkxhYmVsSWQobikpfX1jb25zdCBuaj1bInRhYkxpc3RDb250YWluZXIiXSxvaj1bInRhYkxpc3QiXSxpaj1bIm5leHRQYWdpbmF0b3IiXSxhaj1bInByZXZpb3VzUGFnaW5hdG9yIl0scmo9bmV3IGVyKCJNYXRJbmtCYXJQb3NpdGlvbmVyIix7cHJvdmlkZWRJbjoicm9vdCIsZmFjdG9yeTpmdW5jdGlvbiBzaigpe3JldHVybiB0PT4oe2xlZnQ6dD8odC5vZmZzZXRMZWZ0fHwwKSsicHgiOiIwIix3aWR0aDp0Pyh0Lm9mZnNldFdpZHRofHwwKSsicHgiOiIwIn0pfX0pO2NsYXNzIGxqe2NvbnN0cnVjdG9yKHQsZSxuLG8pe3RoaXMuX2VsZW1lbnRSZWY9dCx0aGlzLl9uZ1pvbmU9ZSx0aGlzLl9pbmtCYXJQb3NpdGlvbmVyPW4sdGhpcy5fYW5pbWF0aW9uTW9kZT1vfWFsaWduVG9FbGVtZW50KHQpe3RoaXMuc2hvdygpLCJ1bmRlZmluZWQiIT10eXBlb2YgcmVxdWVzdEFuaW1hdGlvbkZyYW1lP3RoaXMuX25nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKCk9PntyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCgpPT50aGlzLl9zZXRTdHlsZXModCkpKX0pKTp0aGlzLl9zZXRTdHlsZXModCl9c2hvdygpe3RoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5zdHlsZS52aXNpYmlsaXR5PSJ2aXNpYmxlIn1oaWRlKCl7dGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnN0eWxlLnZpc2liaWxpdHk9ImhpZGRlbiJ9X3NldFN0eWxlcyh0KXtjb25zdCBlPXRoaXMuX2lua0JhclBvc2l0aW9uZXIodCksbj10aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7bi5zdHlsZS5sZWZ0PWUubGVmdCxuLnN0eWxlLndpZHRoPWUud2lkdGh9fWxqLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxsaikoZ2YoS2gpLGdmKG1DKSxnZihyaiksZ2YoY2ssOCkpfSxsai7JtWRpcj1obyh7dHlwZTpsaixzZWxlY3RvcnM6W1sibWF0LWluay1iYXIiXV0saG9zdEF0dHJzOlsxLCJtYXQtaW5rLWJhciJdLGhvc3RWYXJzOjIsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQoZSxuKXsyJmUmJmN1KCJfbWF0LWFuaW1hdGlvbi1ub29wYWJsZSIsIk5vb3BBbmltYXRpb25zIj09PW4uX2FuaW1hdGlvbk1vZGUpfX0pLGxqLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6S2h9LHt0eXBlOm1DfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbcmpdfV19LHt0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpbY2tdfV19XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKGxqLFt7dHlwZTprXyxhcmdzOlt7c2VsZWN0b3I6Im1hdC1pbmstYmFyIixob3N0OntjbGFzczoibWF0LWluay1iYXIiLCJbY2xhc3MuX21hdC1hbmltYXRpb24tbm9vcGFibGVdIjoiX2FuaW1hdGlvbk1vZGUgPT09ICdOb29wQW5pbWF0aW9ucycifX1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOktofSx7dHlwZTptQ30se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W3JqXX1dfSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W2NrXX1dfV19KSxudWxsKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNvbnN0IGNqPW5ldyBlcigiTWF0VGFiQ29udGVudCIpO2NsYXNzIGRqe2NvbnN0cnVjdG9yKHQpe3RoaXMudGVtcGxhdGU9dH19ZGouybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGRqKShnZihFYikpfSxkai7JtWRpcj1obyh7dHlwZTpkaixzZWxlY3RvcnM6W1siIiwibWF0VGFiQ29udGVudCIsIiJdXSxmZWF0dXJlczpbamgoW3twcm92aWRlOmNqLHVzZUV4aXN0aW5nOmRqfV0pXX0pLGRqLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6RWJ9XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKGRqLFt7dHlwZTprXyxhcmdzOlt7c2VsZWN0b3I6IlttYXRUYWJDb250ZW50XSIscHJvdmlkZXJzOlt7cHJvdmlkZTpjaix1c2VFeGlzdGluZzpkan1dfV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6RWJ9XX0pLG51bGwpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY29uc3QgcGo9bmV3IGVyKCJNYXRUYWJMYWJlbCIpO2NsYXNzIG1qIGV4dGVuZHMgbUJ7fW1qLsm1ZmFjPShmdW5jdGlvbigpe2xldCB0O3JldHVybiBmdW5jdGlvbiBlKG4pe3JldHVybih0fHwodD1VYShtaikpKShufHxtail9fSkoKSxtai7JtWRpcj1obyh7dHlwZTptaixzZWxlY3RvcnM6W1siIiwibWF0LXRhYi1sYWJlbCIsIiJdLFsiIiwibWF0VGFiTGFiZWwiLCIiXV0sZmVhdHVyZXM6W2poKFt7cHJvdmlkZTpwaix1c2VFeGlzdGluZzptan1dKSxRcF19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKG1qLFt7dHlwZTprXyxhcmdzOlt7c2VsZWN0b3I6IlttYXQtdGFiLWxhYmVsXSwgW21hdFRhYkxhYmVsXSIscHJvdmlkZXJzOlt7cHJvdmlkZTpwaix1c2VFeGlzdGluZzptan1dfV19XSxudWxsLG51bGwpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY29uc3QgZmo9ekYoY2xhc3N7fSksdWo9bmV3IGVyKCJNQVRfVEFCX0dST1VQIik7Y2xhc3MgZ2ogZXh0ZW5kcyBmantjb25zdHJ1Y3Rvcih0LGUpe3N1cGVyKCksdGhpcy5fdmlld0NvbnRhaW5lclJlZj10LHRoaXMuX2Nsb3Nlc3RUYWJHcm91cD1lLHRoaXMudGV4dExhYmVsPSIiLHRoaXMuX2NvbnRlbnRQb3J0YWw9bnVsbCx0aGlzLl9zdGF0ZUNoYW5nZXM9bmV3IEIsdGhpcy5wb3NpdGlvbj1udWxsLHRoaXMub3JpZ2luPW51bGwsdGhpcy5pc0FjdGl2ZT0hMX1nZXQgdGVtcGxhdGVMYWJlbCgpe3JldHVybiB0aGlzLl90ZW1wbGF0ZUxhYmVsfXNldCB0ZW1wbGF0ZUxhYmVsKHQpe3RoaXMuX3NldFRlbXBsYXRlTGFiZWxJbnB1dCh0KX1nZXQgY29udGVudCgpe3JldHVybiB0aGlzLl9jb250ZW50UG9ydGFsfW5nT25DaGFuZ2VzKHQpeyh0Lmhhc093blByb3BlcnR5KCJ0ZXh0TGFiZWwiKXx8dC5oYXNPd25Qcm9wZXJ0eSgiZGlzYWJsZWQiKSkmJnRoaXMuX3N0YXRlQ2hhbmdlcy5uZXh0KCl9bmdPbkRlc3Ryb3koKXt0aGlzLl9zdGF0ZUNoYW5nZXMuY29tcGxldGUoKX1uZ09uSW5pdCgpe3RoaXMuX2NvbnRlbnRQb3J0YWw9bmV3IGxCKHRoaXMuX2V4cGxpY2l0Q29udGVudHx8dGhpcy5faW1wbGljaXRDb250ZW50LHRoaXMuX3ZpZXdDb250YWluZXJSZWYpfV9zZXRUZW1wbGF0ZUxhYmVsSW5wdXQodCl7dCYmKHRoaXMuX3RlbXBsYXRlTGFiZWw9dCl9fWdqLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxnaikoZ2YoRmIpLGdmKHVqLDgpKX0sZ2ouybVjbXA9c28oe3R5cGU6Z2osc2VsZWN0b3JzOltbIm1hdC10YWIiXV0sY29udGVudFF1ZXJpZXM6ZnVuY3Rpb24gdChlLG4sbyl7aWYoMSZlJiYoankobyxwaiw1KSxqeShvLGNqLDcsRWIpKSwyJmUpe2xldCB0O0J5KHQ9VXkoKSkmJihuLnRlbXBsYXRlTGFiZWw9dC5maXJzdCksQnkodD1VeSgpKSYmKG4uX2V4cGxpY2l0Q29udGVudD10LmZpcnN0KX19LHZpZXdRdWVyeTpmdW5jdGlvbiB0KGUsbil7aWYoMSZlJiZWeShFYiw3KSwyJmUpe2xldCB0O0J5KHQ9VXkoKSkmJihuLl9pbXBsaWNpdENvbnRlbnQ9dC5maXJzdCl9fSxpbnB1dHM6e2Rpc2FibGVkOiJkaXNhYmxlZCIsdGV4dExhYmVsOlsibGFiZWwiLCJ0ZXh0TGFiZWwiXSxhcmlhTGFiZWw6WyJhcmlhLWxhYmVsIiwiYXJpYUxhYmVsIl0sYXJpYUxhYmVsbGVkYnk6WyJhcmlhLWxhYmVsbGVkYnkiLCJhcmlhTGFiZWxsZWRieSJdfSxleHBvcnRBczpbIm1hdFRhYiJdLGZlYXR1cmVzOltRcCxxb10sbmdDb250ZW50U2VsZWN0b3JzOkdWLGRlY2xzOjEsdmFyczowLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihIZigpLEhtKDAsV1YsMSwwLCJuZy10ZW1wbGF0ZSIpKX0sZW5jYXBzdWxhdGlvbjoyfSksZ2ouY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpGYn0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W3VqXX0se3R5cGU6QnJ9XX1dLGdqLnByb3BEZWNvcmF0b3JzPXt0ZW1wbGF0ZUxhYmVsOlt7dHlwZTppcixhcmdzOltwal19XSxfZXhwbGljaXRDb250ZW50Olt7dHlwZTppcixhcmdzOltjaix7cmVhZDpFYixzdGF0aWM6ITB9XX1dLF9pbXBsaWNpdENvbnRlbnQ6W3t0eXBlOmFyLGFyZ3M6W0ViLHtzdGF0aWM6ITB9XX1dLHRleHRMYWJlbDpbe3R5cGU6Ul8sYXJnczpbImxhYmVsIl19XSxhcmlhTGFiZWw6W3t0eXBlOlJfLGFyZ3M6WyJhcmlhLWxhYmVsIl19XSxhcmlhTGFiZWxsZWRieTpbe3R5cGU6Ul8sYXJnczpbImFyaWEtbGFiZWxsZWRieSJdfV19LCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoZ2osW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoibWF0LXRhYiIsdGVtcGxhdGU6Ilx4M2MhLS0gQ3JlYXRlIGEgdGVtcGxhdGUgZm9yIHRoZSBjb250ZW50IG9mIHRoZSA8bWF0LXRhYj4gc28gdGhhdCB3ZSBjYW4gZ3JhYiBhIHJlZmVyZW5jZSB0byB0aGlzXG4gICAgVGVtcGxhdGVSZWYgYW5kIHVzZSBpdCBpbiBhIFBvcnRhbCB0byByZW5kZXIgdGhlIHRhYiBjb250ZW50IGluIHRoZSBhcHByb3ByaWF0ZSBwbGFjZSBpbiB0aGVcbiAgICB0YWItZ3JvdXAuIC0tXHgzZVxuPG5nLXRlbXBsYXRlPjxuZy1jb250ZW50PjwvbmctY29udGVudD48L25nLXRlbXBsYXRlPlxuIixpbnB1dHM6WyJkaXNhYmxlZCJdLGNoYW5nZURldGVjdGlvbjpqbi5EZWZhdWx0LGVuY2Fwc3VsYXRpb246V24uTm9uZSxleHBvcnRBczoibWF0VGFiIn1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOkZifSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbdWpdfSx7dHlwZTpCcn1dfV19KSx7dGV4dExhYmVsOlt7dHlwZTpSXyxhcmdzOlsibGFiZWwiXX1dLHRlbXBsYXRlTGFiZWw6W3t0eXBlOmlyLGFyZ3M6W3BqXX1dLF9leHBsaWNpdENvbnRlbnQ6W3t0eXBlOmlyLGFyZ3M6W2NqLHtyZWFkOkViLHN0YXRpYzohMH1dfV0sX2ltcGxpY2l0Q29udGVudDpbe3R5cGU6YXIsYXJnczpbRWIse3N0YXRpYzohMH1dfV0sYXJpYUxhYmVsOlt7dHlwZTpSXyxhcmdzOlsiYXJpYS1sYWJlbCJdfV0sYXJpYUxhYmVsbGVkYnk6W3t0eXBlOlJfLGFyZ3M6WyJhcmlhLWxhYmVsbGVkYnkiXX1dfSk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjb25zdCBoaj17dHJhbnNsYXRlVGFiOnhPKCJ0cmFuc2xhdGVUYWIiLFtrTygiY2VudGVyLCB2b2lkLCBsZWZ0LW9yaWdpbi1jZW50ZXIsIHJpZ2h0LW9yaWdpbi1jZW50ZXIiLHdPKHt0cmFuc2Zvcm06Im5vbmUifSkpLGtPKCJsZWZ0Iix3Tyh7dHJhbnNmb3JtOiJ0cmFuc2xhdGUzZCgtMTAwJSwgMCwgMCkiLG1pbkhlaWdodDoiMXB4In0pKSxrTygicmlnaHQiLHdPKHt0cmFuc2Zvcm06InRyYW5zbGF0ZTNkKDEwMCUsIDAsIDApIixtaW5IZWlnaHQ6IjFweCJ9KSksRE8oIiogPT4gbGVmdCwgKiA9PiByaWdodCwgbGVmdCA9PiBjZW50ZXIsIHJpZ2h0ID0+IGNlbnRlciIsT08oInt7YW5pbWF0aW9uRHVyYXRpb259fSBjdWJpYy1iZXppZXIoMC4zNSwgMCwgMC4yNSwgMSkiKSksRE8oInZvaWQgPT4gbGVmdC1vcmlnaW4tY2VudGVyIixbd08oe3RyYW5zZm9ybToidHJhbnNsYXRlM2QoLTEwMCUsIDAsIDApIn0pLE9PKCJ7e2FuaW1hdGlvbkR1cmF0aW9ufX0gY3ViaWMtYmV6aWVyKDAuMzUsIDAsIDAuMjUsIDEpIildKSxETygidm9pZCA9PiByaWdodC1vcmlnaW4tY2VudGVyIixbd08oe3RyYW5zZm9ybToidHJhbnNsYXRlM2QoMTAwJSwgMCwgMCkifSksT08oInt7YW5pbWF0aW9uRHVyYXRpb259fSBjdWJpYy1iZXppZXIoMC4zNSwgMCwgMC4yNSwgMSkiKV0pXSl9OwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jbGFzcyBiaiBleHRlbmRzIHVCe2NvbnN0cnVjdG9yKHQsZSxuLG8pe3N1cGVyKHQsZSxvKSx0aGlzLl9ob3N0PW4sdGhpcy5fY2VudGVyaW5nU3ViPXUuRU1QVFksdGhpcy5fbGVhdmluZ1N1Yj11LkVNUFRZfW5nT25Jbml0KCl7c3VwZXIubmdPbkluaXQoKSx0aGlzLl9jZW50ZXJpbmdTdWI9dGhpcy5faG9zdC5fYmVmb3JlQ2VudGVyaW5nLnBpcGUoQmUodGhpcy5faG9zdC5faXNDZW50ZXJQb3NpdGlvbih0aGlzLl9ob3N0Ll9wb3NpdGlvbikpKS5zdWJzY3JpYmUoKHQ9Pnt0JiYhdGhpcy5oYXNBdHRhY2hlZCgpJiZ0aGlzLmF0dGFjaCh0aGlzLl9ob3N0Ll9jb250ZW50KX0pKSx0aGlzLl9sZWF2aW5nU3ViPXRoaXMuX2hvc3QuX2FmdGVyTGVhdmluZ0NlbnRlci5zdWJzY3JpYmUoKCgpPT57dGhpcy5kZXRhY2goKX0pKX1uZ09uRGVzdHJveSgpe3N1cGVyLm5nT25EZXN0cm95KCksdGhpcy5fY2VudGVyaW5nU3ViLnVuc3Vic2NyaWJlKCksdGhpcy5fbGVhdmluZ1N1Yi51bnN1YnNjcmliZSgpfX1iai7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8YmopKGdmKEdoKSxnZihGYiksZ2YoJGUoKCgpPT5faikpKSxnZihzTSkpfSxiai7JtWRpcj1obyh7dHlwZTpiaixzZWxlY3RvcnM6W1siIiwibWF0VGFiQm9keUhvc3QiLCIiXV0sZmVhdHVyZXM6W1FwXX0pLGJqLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6R2h9LHt0eXBlOkZifSx7dHlwZTpfaixkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOlskZSgoKCk9Pl9qKSldfV19LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltzTV19XX1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoYmosW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3RvcjoiW21hdFRhYkJvZHlIb3N0XSJ9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpHaH0se3R5cGU6RmJ9LHt0eXBlOl9qLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6WyRlKCgoKT0+X2opKV19XX0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W3NNXX1dfV19KSxudWxsKTtjbGFzcyB5antjb25zdHJ1Y3Rvcih0LGUsbil7dGhpcy5fZWxlbWVudFJlZj10LHRoaXMuX2Rpcj1lLHRoaXMuX2RpckNoYW5nZVN1YnNjcmlwdGlvbj11LkVNUFRZLHRoaXMuX3RyYW5zbGF0ZVRhYkNvbXBsZXRlPW5ldyBCLHRoaXMuX29uQ2VudGVyaW5nPW5ldyBTeSx0aGlzLl9iZWZvcmVDZW50ZXJpbmc9bmV3IFN5LHRoaXMuX2FmdGVyTGVhdmluZ0NlbnRlcj1uZXcgU3ksdGhpcy5fb25DZW50ZXJlZD1uZXcgU3koITApLHRoaXMuYW5pbWF0aW9uRHVyYXRpb249IjUwMG1zIixlJiYodGhpcy5fZGlyQ2hhbmdlU3Vic2NyaXB0aW9uPWUuY2hhbmdlLnN1YnNjcmliZSgodD0+e3RoaXMuX2NvbXB1dGVQb3NpdGlvbkFuaW1hdGlvblN0YXRlKHQpLG4ubWFya0ZvckNoZWNrKCl9KSkpLHRoaXMuX3RyYW5zbGF0ZVRhYkNvbXBsZXRlLnBpcGUod2UoKCh0LGUpPT50LmZyb21TdGF0ZT09PWUuZnJvbVN0YXRlJiZ0LnRvU3RhdGU9PT1lLnRvU3RhdGUpKSkuc3Vic2NyaWJlKCh0PT57dGhpcy5faXNDZW50ZXJQb3NpdGlvbih0LnRvU3RhdGUpJiZ0aGlzLl9pc0NlbnRlclBvc2l0aW9uKHRoaXMuX3Bvc2l0aW9uKSYmdGhpcy5fb25DZW50ZXJlZC5lbWl0KCksdGhpcy5faXNDZW50ZXJQb3NpdGlvbih0LmZyb21TdGF0ZSkmJiF0aGlzLl9pc0NlbnRlclBvc2l0aW9uKHRoaXMuX3Bvc2l0aW9uKSYmdGhpcy5fYWZ0ZXJMZWF2aW5nQ2VudGVyLmVtaXQoKX0pKX1zZXQgcG9zaXRpb24odCl7dGhpcy5fcG9zaXRpb25JbmRleD10LHRoaXMuX2NvbXB1dGVQb3NpdGlvbkFuaW1hdGlvblN0YXRlKCl9bmdPbkluaXQoKXsiY2VudGVyIj09dGhpcy5fcG9zaXRpb24mJm51bGwhPXRoaXMub3JpZ2luJiYodGhpcy5fcG9zaXRpb249dGhpcy5fY29tcHV0ZVBvc2l0aW9uRnJvbU9yaWdpbih0aGlzLm9yaWdpbikpfW5nT25EZXN0cm95KCl7dGhpcy5fZGlyQ2hhbmdlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCksdGhpcy5fdHJhbnNsYXRlVGFiQ29tcGxldGUuY29tcGxldGUoKX1fb25UcmFuc2xhdGVUYWJTdGFydGVkKHQpe2NvbnN0IGU9dGhpcy5faXNDZW50ZXJQb3NpdGlvbih0LnRvU3RhdGUpO3RoaXMuX2JlZm9yZUNlbnRlcmluZy5lbWl0KGUpLGUmJnRoaXMuX29uQ2VudGVyaW5nLmVtaXQodGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNsaWVudEhlaWdodCl9X2dldExheW91dERpcmVjdGlvbigpe3JldHVybiB0aGlzLl9kaXImJiJydGwiPT09dGhpcy5fZGlyLnZhbHVlPyJydGwiOiJsdHIifV9pc0NlbnRlclBvc2l0aW9uKHQpe3JldHVybiJjZW50ZXIiPT10fHwibGVmdC1vcmlnaW4tY2VudGVyIj09dHx8InJpZ2h0LW9yaWdpbi1jZW50ZXIiPT10fV9jb21wdXRlUG9zaXRpb25BbmltYXRpb25TdGF0ZSh0PXRoaXMuX2dldExheW91dERpcmVjdGlvbigpKXt0aGlzLl9wb3NpdGlvbj10aGlzLl9wb3NpdGlvbkluZGV4PDA/Imx0ciI9PXQ/ImxlZnQiOiJyaWdodCI6dGhpcy5fcG9zaXRpb25JbmRleD4wPyJsdHIiPT10PyJyaWdodCI6ImxlZnQiOiJjZW50ZXIifV9jb21wdXRlUG9zaXRpb25Gcm9tT3JpZ2luKHQpe2NvbnN0IGU9dGhpcy5fZ2V0TGF5b3V0RGlyZWN0aW9uKCk7cmV0dXJuImx0ciI9PWUmJnQ8PTB8fCJydGwiPT1lJiZ0PjA/ImxlZnQtb3JpZ2luLWNlbnRlciI6InJpZ2h0LW9yaWdpbi1jZW50ZXIifX15ai7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8eWopKGdmKEtoKSxnZih2Riw4KSxnZihPYikpfSx5ai7JtWRpcj1obyh7dHlwZTp5aixpbnB1dHM6e2FuaW1hdGlvbkR1cmF0aW9uOiJhbmltYXRpb25EdXJhdGlvbiIscG9zaXRpb246InBvc2l0aW9uIixfY29udGVudDpbImNvbnRlbnQiLCJfY29udGVudCJdLG9yaWdpbjoib3JpZ2luIn0sb3V0cHV0czp7X29uQ2VudGVyaW5nOiJfb25DZW50ZXJpbmciLF9iZWZvcmVDZW50ZXJpbmc6Il9iZWZvcmVDZW50ZXJpbmciLF9hZnRlckxlYXZpbmdDZW50ZXI6Il9hZnRlckxlYXZpbmdDZW50ZXIiLF9vbkNlbnRlcmVkOiJfb25DZW50ZXJlZCJ9fSkseWouY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpLaH0se3R5cGU6dkYsZGVjb3JhdG9yczpbe3R5cGU6QnJ9XX0se3R5cGU6T2J9XSx5ai5wcm9wRGVjb3JhdG9ycz17X29uQ2VudGVyaW5nOlt7dHlwZTpFX31dLF9iZWZvcmVDZW50ZXJpbmc6W3t0eXBlOkVffV0sX2FmdGVyTGVhdmluZ0NlbnRlcjpbe3R5cGU6RV99XSxfb25DZW50ZXJlZDpbe3R5cGU6RV99XSxfY29udGVudDpbe3R5cGU6Ul8sYXJnczpbImNvbnRlbnQiXX1dLG9yaWdpbjpbe3R5cGU6Ul99XSxhbmltYXRpb25EdXJhdGlvbjpbe3R5cGU6Ul99XSxwb3NpdGlvbjpbe3R5cGU6Ul99XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYih5aixbe3R5cGU6a199XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6S2h9LHt0eXBlOnZGLGRlY29yYXRvcnM6W3t0eXBlOkJyfV19LHt0eXBlOk9ifV19KSx7X29uQ2VudGVyaW5nOlt7dHlwZTpFX31dLF9iZWZvcmVDZW50ZXJpbmc6W3t0eXBlOkVffV0sX2FmdGVyTGVhdmluZ0NlbnRlcjpbe3R5cGU6RV99XSxfb25DZW50ZXJlZDpbe3R5cGU6RV99XSxhbmltYXRpb25EdXJhdGlvbjpbe3R5cGU6Ul99XSxwb3NpdGlvbjpbe3R5cGU6Ul99XSxfY29udGVudDpbe3R5cGU6Ul8sYXJnczpbImNvbnRlbnQiXX1dLG9yaWdpbjpbe3R5cGU6Ul99XX0pO2NsYXNzIF9qIGV4dGVuZHMgeWp7Y29uc3RydWN0b3IodCxlLG4pe3N1cGVyKHQsZSxuKX19X2ouybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fF9qKShnZihLaCksZ2YodkYsOCksZ2YoT2IpKX0sX2ouybVjbXA9c28oe3R5cGU6X2osc2VsZWN0b3JzOltbIm1hdC10YWItYm9keSJdXSx2aWV3UXVlcnk6ZnVuY3Rpb24gdChlLG4pe2lmKDEmZSYmVnkodUIsNSksMiZlKXtsZXQgdDtCeSh0PVV5KCkpJiYobi5fcG9ydGFsSG9zdD10LmZpcnN0KX19LGhvc3RBdHRyczpbMSwibWF0LXRhYi1ib2R5Il0sZmVhdHVyZXM6W1FwXSxkZWNsczozLHZhcnM6Nixjb25zdHM6W1siY2RrU2Nyb2xsYWJsZSIsIiIsMSwibWF0LXRhYi1ib2R5LWNvbnRlbnQiXSxbImNvbnRlbnQiLCIiXSxbIm1hdFRhYkJvZHlIb3N0IiwiIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihDZigwLCJkaXYiLDAsMSksUmYoIkB0cmFuc2xhdGVUYWIuc3RhcnQiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLl9vblRyYW5zbGF0ZVRhYlN0YXJ0ZWQoZSl9KSkoIkB0cmFuc2xhdGVUYWIuZG9uZSIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4uX3RyYW5zbGF0ZVRhYkNvbXBsZXRlLm5leHQoZSl9KSksSG0oMixZViwwLDAsIm5nLXRlbXBsYXRlIiwyKSxNZigpKSwyJmUmJmJmKCJAdHJhbnNsYXRlVGFiIixheSgzLFpWLG4uX3Bvc2l0aW9uLGl5KDEscVYsbi5hbmltYXRpb25EdXJhdGlvbikpKX0sZGlyZWN0aXZlczpbYmpdLHN0eWxlczpbIi5tYXQtdGFiLWJvZHktY29udGVudHtoZWlnaHQ6MTAwJTtvdmVyZmxvdzphdXRvfS5tYXQtdGFiLWdyb3VwLWR5bmFtaWMtaGVpZ2h0IC5tYXQtdGFiLWJvZHktY29udGVudHtvdmVyZmxvdzpoaWRkZW59XG4iXSxlbmNhcHN1bGF0aW9uOjIsZGF0YTp7YW5pbWF0aW9uOltoai50cmFuc2xhdGVUYWJdfX0pLF9qLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6S2h9LHt0eXBlOnZGLGRlY29yYXRvcnM6W3t0eXBlOkJyfV19LHt0eXBlOk9ifV0sX2oucHJvcERlY29yYXRvcnM9e19wb3J0YWxIb3N0Olt7dHlwZTphcixhcmdzOlt1Ql19XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihfaixbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJtYXQtdGFiLWJvZHkiLHRlbXBsYXRlOic8ZGl2IGNsYXNzPSJtYXQtdGFiLWJvZHktY29udGVudCIgI2NvbnRlbnRcbiAgICAgW0B0cmFuc2xhdGVUYWJdPSJ7XG4gICAgICAgIHZhbHVlOiBfcG9zaXRpb24sXG4gICAgICAgIHBhcmFtczoge2FuaW1hdGlvbkR1cmF0aW9uOiBhbmltYXRpb25EdXJhdGlvbn1cbiAgICAgfSJcbiAgICAgKEB0cmFuc2xhdGVUYWIuc3RhcnQpPSJfb25UcmFuc2xhdGVUYWJTdGFydGVkKCRldmVudCkiXG4gICAgIChAdHJhbnNsYXRlVGFiLmRvbmUpPSJfdHJhbnNsYXRlVGFiQ29tcGxldGUubmV4dCgkZXZlbnQpIlxuICAgICBjZGtTY3JvbGxhYmxlPlxuICA8bmctdGVtcGxhdGUgbWF0VGFiQm9keUhvc3Q+PC9uZy10ZW1wbGF0ZT5cbjwvZGl2PlxuJyxlbmNhcHN1bGF0aW9uOlduLk5vbmUsY2hhbmdlRGV0ZWN0aW9uOmpuLkRlZmF1bHQsYW5pbWF0aW9uczpbaGoudHJhbnNsYXRlVGFiXSxob3N0OntjbGFzczoibWF0LXRhYi1ib2R5In0sc3R5bGVzOlsiLm1hdC10YWItYm9keS1jb250ZW50e2hlaWdodDoxMDAlO292ZXJmbG93OmF1dG99Lm1hdC10YWItZ3JvdXAtZHluYW1pYy1oZWlnaHQgLm1hdC10YWItYm9keS1jb250ZW50e292ZXJmbG93OmhpZGRlbn1cbiJdfV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6S2h9LHt0eXBlOnZGLGRlY29yYXRvcnM6W3t0eXBlOkJyfV19LHt0eXBlOk9ifV19KSx7X3BvcnRhbEhvc3Q6W3t0eXBlOmFyLGFyZ3M6W3VCXX1dfSk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjb25zdCBDaj1uZXcgZXIoIk1BVF9UQUJTX0NPTkZJRyIpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9sZXQgTWo9MDtjbGFzcyB2ant9Y29uc3QgeGo9SUYoSEYoY2xhc3N7Y29uc3RydWN0b3IodCl7dGhpcy5fZWxlbWVudFJlZj10fX0pLCJwcmltYXJ5Iik7Y2xhc3MgT2ogZXh0ZW5kcyB4antjb25zdHJ1Y3Rvcih0LGUsbixvKXt2YXIgaTtzdXBlcih0KSx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZj1lLHRoaXMuX2FuaW1hdGlvbk1vZGU9byx0aGlzLl90YWJzPW5ldyBSeSx0aGlzLl9pbmRleFRvU2VsZWN0PTAsdGhpcy5fdGFiQm9keVdyYXBwZXJIZWlnaHQ9MCx0aGlzLl90YWJzU3Vic2NyaXB0aW9uPXUuRU1QVFksdGhpcy5fdGFiTGFiZWxTdWJzY3JpcHRpb249dS5FTVBUWSx0aGlzLl9zZWxlY3RlZEluZGV4PW51bGwsdGhpcy5oZWFkZXJQb3NpdGlvbj0iYWJvdmUiLHRoaXMuc2VsZWN0ZWRJbmRleENoYW5nZT1uZXcgU3ksdGhpcy5mb2N1c0NoYW5nZT1uZXcgU3ksdGhpcy5hbmltYXRpb25Eb25lPW5ldyBTeSx0aGlzLnNlbGVjdGVkVGFiQ2hhbmdlPW5ldyBTeSghMCksdGhpcy5fZ3JvdXBJZD1NaisrLHRoaXMuYW5pbWF0aW9uRHVyYXRpb249biYmbi5hbmltYXRpb25EdXJhdGlvbj9uLmFuaW1hdGlvbkR1cmF0aW9uOiI1MDBtcyIsdGhpcy5kaXNhYmxlUGFnaW5hdGlvbj0hKCFufHxudWxsPT1uLmRpc2FibGVQYWdpbmF0aW9uKSYmbi5kaXNhYmxlUGFnaW5hdGlvbix0aGlzLmR5bmFtaWNIZWlnaHQ9ISghbnx8bnVsbD09bi5keW5hbWljSGVpZ2h0KSYmbi5keW5hbWljSGVpZ2h0LHRoaXMuY29udGVudFRhYkluZGV4PW51bGwhPT0oaT1udWxsPT1uP3ZvaWQgMDpuLmNvbnRlbnRUYWJJbmRleCkmJnZvaWQgMCE9PWk/aTpudWxsfWdldCBkeW5hbWljSGVpZ2h0KCl7cmV0dXJuIHRoaXMuX2R5bmFtaWNIZWlnaHR9c2V0IGR5bmFtaWNIZWlnaHQodCl7dGhpcy5fZHluYW1pY0hlaWdodD1lSCh0KX1nZXQgc2VsZWN0ZWRJbmRleCgpe3JldHVybiB0aGlzLl9zZWxlY3RlZEluZGV4fXNldCBzZWxlY3RlZEluZGV4KHQpe3RoaXMuX2luZGV4VG9TZWxlY3Q9bkgodCxudWxsKX1nZXQgYW5pbWF0aW9uRHVyYXRpb24oKXtyZXR1cm4gdGhpcy5fYW5pbWF0aW9uRHVyYXRpb259c2V0IGFuaW1hdGlvbkR1cmF0aW9uKHQpe3RoaXMuX2FuaW1hdGlvbkR1cmF0aW9uPS9eXGQrJC8udGVzdCh0KT90KyJtcyI6dH1nZXQgY29udGVudFRhYkluZGV4KCl7cmV0dXJuIHRoaXMuX2NvbnRlbnRUYWJJbmRleH1zZXQgY29udGVudFRhYkluZGV4KHQpe3RoaXMuX2NvbnRlbnRUYWJJbmRleD1uSCh0LG51bGwpfWdldCBiYWNrZ3JvdW5kQ29sb3IoKXtyZXR1cm4gdGhpcy5fYmFja2dyb3VuZENvbG9yfXNldCBiYWNrZ3JvdW5kQ29sb3IodCl7Y29uc3QgZT10aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7ZS5jbGFzc0xpc3QucmVtb3ZlKGBtYXQtYmFja2dyb3VuZC0ke3RoaXMuYmFja2dyb3VuZENvbG9yfWApLHQmJmUuY2xhc3NMaXN0LmFkZChgbWF0LWJhY2tncm91bmQtJHt0fWApLHRoaXMuX2JhY2tncm91bmRDb2xvcj10fW5nQWZ0ZXJDb250ZW50Q2hlY2tlZCgpe2NvbnN0IHQ9dGhpcy5faW5kZXhUb1NlbGVjdD10aGlzLl9jbGFtcFRhYkluZGV4KHRoaXMuX2luZGV4VG9TZWxlY3QpO2lmKHRoaXMuX3NlbGVjdGVkSW5kZXghPXQpe2NvbnN0IGU9bnVsbD09dGhpcy5fc2VsZWN0ZWRJbmRleDtpZighZSl7dGhpcy5zZWxlY3RlZFRhYkNoYW5nZS5lbWl0KHRoaXMuX2NyZWF0ZUNoYW5nZUV2ZW50KHQpKTtjb25zdCBlPXRoaXMuX3RhYkJvZHlXcmFwcGVyLm5hdGl2ZUVsZW1lbnQ7ZS5zdHlsZS5taW5IZWlnaHQ9ZS5jbGllbnRIZWlnaHQrInB4In1Qcm9taXNlLnJlc29sdmUoKS50aGVuKCgoKT0+e3RoaXMuX3RhYnMuZm9yRWFjaCgoKGUsbik9PmUuaXNBY3RpdmU9bj09PXQpKSxlfHwodGhpcy5zZWxlY3RlZEluZGV4Q2hhbmdlLmVtaXQodCksdGhpcy5fdGFiQm9keVdyYXBwZXIubmF0aXZlRWxlbWVudC5zdHlsZS5taW5IZWlnaHQ9IiIpfSkpfXRoaXMuX3RhYnMuZm9yRWFjaCgoKGUsbik9PntlLnBvc2l0aW9uPW4tdCxudWxsPT10aGlzLl9zZWxlY3RlZEluZGV4fHwwIT1lLnBvc2l0aW9ufHxlLm9yaWdpbnx8KGUub3JpZ2luPXQtdGhpcy5fc2VsZWN0ZWRJbmRleCl9KSksdGhpcy5fc2VsZWN0ZWRJbmRleCE9PXQmJih0aGlzLl9zZWxlY3RlZEluZGV4PXQsdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCkpfW5nQWZ0ZXJDb250ZW50SW5pdCgpe3RoaXMuX3N1YnNjcmliZVRvQWxsVGFiQ2hhbmdlcygpLHRoaXMuX3N1YnNjcmliZVRvVGFiTGFiZWxzKCksdGhpcy5fdGFic1N1YnNjcmlwdGlvbj10aGlzLl90YWJzLmNoYW5nZXMuc3Vic2NyaWJlKCgoKT0+e2lmKHRoaXMuX2NsYW1wVGFiSW5kZXgodGhpcy5faW5kZXhUb1NlbGVjdCk9PT10aGlzLl9zZWxlY3RlZEluZGV4KXtjb25zdCB0PXRoaXMuX3RhYnMudG9BcnJheSgpO2ZvcihsZXQgZT0wO2U8dC5sZW5ndGg7ZSsrKWlmKHRbZV0uaXNBY3RpdmUpe3RoaXMuX2luZGV4VG9TZWxlY3Q9dGhpcy5fc2VsZWN0ZWRJbmRleD1lO2JyZWFrfX10aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKX0pKX1fc3Vic2NyaWJlVG9BbGxUYWJDaGFuZ2VzKCl7dGhpcy5fYWxsVGFicy5jaGFuZ2VzLnBpcGUoQmUodGhpcy5fYWxsVGFicykpLnN1YnNjcmliZSgodD0+e3RoaXMuX3RhYnMucmVzZXQodC5maWx0ZXIoKHQ9PnQuX2Nsb3Nlc3RUYWJHcm91cD09PXRoaXN8fCF0Ll9jbG9zZXN0VGFiR3JvdXApKSksdGhpcy5fdGFicy5ub3RpZnlPbkNoYW5nZXMoKX0pKX1uZ09uRGVzdHJveSgpe3RoaXMuX3RhYnMuZGVzdHJveSgpLHRoaXMuX3RhYnNTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSx0aGlzLl90YWJMYWJlbFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpfXJlYWxpZ25JbmtCYXIoKXt0aGlzLl90YWJIZWFkZXImJnRoaXMuX3RhYkhlYWRlci5fYWxpZ25JbmtCYXJUb1NlbGVjdGVkVGFiKCl9Zm9jdXNUYWIodCl7Y29uc3QgZT10aGlzLl90YWJIZWFkZXI7ZSYmKGUuZm9jdXNJbmRleD10KX1fZm9jdXNDaGFuZ2VkKHQpe3RoaXMuZm9jdXNDaGFuZ2UuZW1pdCh0aGlzLl9jcmVhdGVDaGFuZ2VFdmVudCh0KSl9X2NyZWF0ZUNoYW5nZUV2ZW50KHQpe2NvbnN0IGU9bmV3IHZqO3JldHVybiBlLmluZGV4PXQsdGhpcy5fdGFicyYmdGhpcy5fdGFicy5sZW5ndGgmJihlLnRhYj10aGlzLl90YWJzLnRvQXJyYXkoKVt0XSksZX1fc3Vic2NyaWJlVG9UYWJMYWJlbHMoKXt0aGlzLl90YWJMYWJlbFN1YnNjcmlwdGlvbiYmdGhpcy5fdGFiTGFiZWxTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSx0aGlzLl90YWJMYWJlbFN1YnNjcmlwdGlvbj1wZSguLi50aGlzLl90YWJzLm1hcCgodD0+dC5fc3RhdGVDaGFuZ2VzKSkpLnN1YnNjcmliZSgoKCk9PnRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpKSl9X2NsYW1wVGFiSW5kZXgodCl7cmV0dXJuIE1hdGgubWluKHRoaXMuX3RhYnMubGVuZ3RoLTEsTWF0aC5tYXgodHx8MCwwKSl9X2dldFRhYkxhYmVsSWQodCl7cmV0dXJuYG1hdC10YWItbGFiZWwtJHt0aGlzLl9ncm91cElkfS0ke3R9YH1fZ2V0VGFiQ29udGVudElkKHQpe3JldHVybmBtYXQtdGFiLWNvbnRlbnQtJHt0aGlzLl9ncm91cElkfS0ke3R9YH1fc2V0VGFiQm9keVdyYXBwZXJIZWlnaHQodCl7aWYoIXRoaXMuX2R5bmFtaWNIZWlnaHR8fCF0aGlzLl90YWJCb2R5V3JhcHBlckhlaWdodClyZXR1cm47Y29uc3QgZT10aGlzLl90YWJCb2R5V3JhcHBlci5uYXRpdmVFbGVtZW50O2Uuc3R5bGUuaGVpZ2h0PXRoaXMuX3RhYkJvZHlXcmFwcGVySGVpZ2h0KyJweCIsdGhpcy5fdGFiQm9keVdyYXBwZXIubmF0aXZlRWxlbWVudC5vZmZzZXRIZWlnaHQmJihlLnN0eWxlLmhlaWdodD10KyJweCIpfV9yZW1vdmVUYWJCb2R5V3JhcHBlckhlaWdodCgpe2NvbnN0IHQ9dGhpcy5fdGFiQm9keVdyYXBwZXIubmF0aXZlRWxlbWVudDt0aGlzLl90YWJCb2R5V3JhcHBlckhlaWdodD10LmNsaWVudEhlaWdodCx0LnN0eWxlLmhlaWdodD0iIix0aGlzLmFuaW1hdGlvbkRvbmUuZW1pdCgpfV9oYW5kbGVDbGljayh0LGUsbil7dC5kaXNhYmxlZHx8KHRoaXMuc2VsZWN0ZWRJbmRleD1lLmZvY3VzSW5kZXg9bil9X2dldFRhYkluZGV4KHQsZSl7cmV0dXJuIHQuZGlzYWJsZWQ/bnVsbDp0aGlzLnNlbGVjdGVkSW5kZXg9PT1lPzA6LTF9X3RhYkZvY3VzQ2hhbmdlZCh0LGUpe3QmJiJtb3VzZSIhPT10JiYidG91Y2giIT09dCYmKHRoaXMuX3RhYkhlYWRlci5mb2N1c0luZGV4PWUpfX1Pai7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8T2opKGdmKEtoKSxnZihPYiksZ2YoQ2osOCksZ2YoY2ssOCkpfSxPai7JtWRpcj1obyh7dHlwZTpPaixpbnB1dHM6e2hlYWRlclBvc2l0aW9uOiJoZWFkZXJQb3NpdGlvbiIsYW5pbWF0aW9uRHVyYXRpb246ImFuaW1hdGlvbkR1cmF0aW9uIixkaXNhYmxlUGFnaW5hdGlvbjoiZGlzYWJsZVBhZ2luYXRpb24iLGR5bmFtaWNIZWlnaHQ6ImR5bmFtaWNIZWlnaHQiLGNvbnRlbnRUYWJJbmRleDoiY29udGVudFRhYkluZGV4IixzZWxlY3RlZEluZGV4OiJzZWxlY3RlZEluZGV4IixiYWNrZ3JvdW5kQ29sb3I6ImJhY2tncm91bmRDb2xvciJ9LG91dHB1dHM6e3NlbGVjdGVkSW5kZXhDaGFuZ2U6InNlbGVjdGVkSW5kZXhDaGFuZ2UiLGZvY3VzQ2hhbmdlOiJmb2N1c0NoYW5nZSIsYW5pbWF0aW9uRG9uZToiYW5pbWF0aW9uRG9uZSIsc2VsZWN0ZWRUYWJDaGFuZ2U6InNlbGVjdGVkVGFiQ2hhbmdlIn0sZmVhdHVyZXM6W1FwXX0pLE9qLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6S2h9LHt0eXBlOk9ifSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbQ2pdfSx7dHlwZTpCcn1dfSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W2NrXX1dfV0sT2oucHJvcERlY29yYXRvcnM9e2R5bmFtaWNIZWlnaHQ6W3t0eXBlOlJffV0sc2VsZWN0ZWRJbmRleDpbe3R5cGU6Ul99XSxoZWFkZXJQb3NpdGlvbjpbe3R5cGU6Ul99XSxhbmltYXRpb25EdXJhdGlvbjpbe3R5cGU6Ul99XSxjb250ZW50VGFiSW5kZXg6W3t0eXBlOlJffV0sZGlzYWJsZVBhZ2luYXRpb246W3t0eXBlOlJffV0sYmFja2dyb3VuZENvbG9yOlt7dHlwZTpSX31dLHNlbGVjdGVkSW5kZXhDaGFuZ2U6W3t0eXBlOkVffV0sZm9jdXNDaGFuZ2U6W3t0eXBlOkVffV0sYW5pbWF0aW9uRG9uZTpbe3R5cGU6RV99XSxzZWxlY3RlZFRhYkNoYW5nZTpbe3R5cGU6RV99XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihPaixbe3R5cGU6a199XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6S2h9LHt0eXBlOk9ifSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbQ2pdfSx7dHlwZTpCcn1dfSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W2NrXX1dfV19KSx7aGVhZGVyUG9zaXRpb246W3t0eXBlOlJffV0sc2VsZWN0ZWRJbmRleENoYW5nZTpbe3R5cGU6RV99XSxmb2N1c0NoYW5nZTpbe3R5cGU6RV99XSxhbmltYXRpb25Eb25lOlt7dHlwZTpFX31dLHNlbGVjdGVkVGFiQ2hhbmdlOlt7dHlwZTpFX31dLGFuaW1hdGlvbkR1cmF0aW9uOlt7dHlwZTpSX31dLGRpc2FibGVQYWdpbmF0aW9uOlt7dHlwZTpSX31dLGR5bmFtaWNIZWlnaHQ6W3t0eXBlOlJffV0sY29udGVudFRhYkluZGV4Olt7dHlwZTpSX31dLHNlbGVjdGVkSW5kZXg6W3t0eXBlOlJffV0sYmFja2dyb3VuZENvbG9yOlt7dHlwZTpSX31dfSk7Y2xhc3MgUGogZXh0ZW5kcyBPantjb25zdHJ1Y3Rvcih0LGUsbixvKXtzdXBlcih0LGUsbixvKX19UGouybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFBqKShnZihLaCksZ2YoT2IpLGdmKENqLDgpLGdmKGNrLDgpKX0sUGouybVjbXA9c28oe3R5cGU6UGosc2VsZWN0b3JzOltbIm1hdC10YWItZ3JvdXAiXV0sY29udGVudFF1ZXJpZXM6ZnVuY3Rpb24gdChlLG4sbyl7aWYoMSZlJiZqeShvLGdqLDUpLDImZSl7bGV0IHQ7QnkodD1VeSgpKSYmKG4uX2FsbFRhYnM9dCl9fSx2aWV3UXVlcnk6ZnVuY3Rpb24gdChlLG4pe2lmKDEmZSYmKFZ5KFhWLDUpLFZ5KEtWLDUpKSwyJmUpe2xldCB0O0J5KHQ9VXkoKSkmJihuLl90YWJCb2R5V3JhcHBlcj10LmZpcnN0KSxCeSh0PVV5KCkpJiYobi5fdGFiSGVhZGVyPXQuZmlyc3QpfX0saG9zdEF0dHJzOlsxLCJtYXQtdGFiLWdyb3VwIl0saG9zdFZhcnM6NCxob3N0QmluZGluZ3M6ZnVuY3Rpb24gdChlLG4pezImZSYmY3UoIm1hdC10YWItZ3JvdXAtZHluYW1pYy1oZWlnaHQiLG4uZHluYW1pY0hlaWdodCkoIm1hdC10YWItZ3JvdXAtaW52ZXJ0ZWQtaGVhZGVyIiwiYmVsb3ciPT09bi5oZWFkZXJQb3NpdGlvbil9LGlucHV0czp7Y29sb3I6ImNvbG9yIixkaXNhYmxlUmlwcGxlOiJkaXNhYmxlUmlwcGxlIn0sZXhwb3J0QXM6WyJtYXRUYWJHcm91cCJdLGZlYXR1cmVzOltqaChbe3Byb3ZpZGU6dWosdXNlRXhpc3Rpbmc6UGp9XSksUXBdLGRlY2xzOjYsdmFyczo3LGNvbnN0czpbWzMsInNlbGVjdGVkSW5kZXgiLCJkaXNhYmxlUmlwcGxlIiwiZGlzYWJsZVBhZ2luYXRpb24iLCJpbmRleEZvY3VzZWQiLCJzZWxlY3RGb2N1c2VkSW5kZXgiXSxbInRhYkhlYWRlciIsIiJdLFsiY2xhc3MiLCJtYXQtdGFiLWxhYmVsIG1hdC1mb2N1cy1pbmRpY2F0b3IiLCJyb2xlIiwidGFiIiwibWF0VGFiTGFiZWxXcmFwcGVyIiwiIiwibWF0LXJpcHBsZSIsIiIsImNka01vbml0b3JFbGVtZW50Rm9jdXMiLCIiLDMsImlkIiwibWF0LXRhYi1sYWJlbC1hY3RpdmUiLCJkaXNhYmxlZCIsIm1hdFJpcHBsZURpc2FibGVkIiwiY2xpY2siLCJjZGtGb2N1c0NoYW5nZSIsNCwibmdGb3IiLCJuZ0Zvck9mIl0sWzEsIm1hdC10YWItYm9keS13cmFwcGVyIl0sWyJ0YWJCb2R5V3JhcHBlciIsIiJdLFsicm9sZSIsInRhYnBhbmVsIiwzLCJpZCIsIm1hdC10YWItYm9keS1hY3RpdmUiLCJjb250ZW50IiwicG9zaXRpb24iLCJvcmlnaW4iLCJhbmltYXRpb25EdXJhdGlvbiIsIl9vbkNlbnRlcmVkIiwiX29uQ2VudGVyaW5nIiw0LCJuZ0ZvciIsIm5nRm9yT2YiXSxbInJvbGUiLCJ0YWIiLCJtYXRUYWJMYWJlbFdyYXBwZXIiLCIiLCJtYXQtcmlwcGxlIiwiIiwiY2RrTW9uaXRvckVsZW1lbnRGb2N1cyIsIiIsMSwibWF0LXRhYi1sYWJlbCIsIm1hdC1mb2N1cy1pbmRpY2F0b3IiLDMsImlkIiwiZGlzYWJsZWQiLCJtYXRSaXBwbGVEaXNhYmxlZCIsImNsaWNrIiwiY2RrRm9jdXNDaGFuZ2UiXSxbMSwibWF0LXRhYi1sYWJlbC1jb250ZW50Il0sWzMsIm5nSWYiXSxbMywiY2RrUG9ydGFsT3V0bGV0Il0sWyJyb2xlIiwidGFicGFuZWwiLDMsImlkIiwiY29udGVudCIsInBvc2l0aW9uIiwib3JpZ2luIiwiYW5pbWF0aW9uRHVyYXRpb24iLCJfb25DZW50ZXJlZCIsIl9vbkNlbnRlcmluZyJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoQ2YoMCwibWF0LXRhYi1oZWFkZXIiLDAsMSksUmYoImluZGV4Rm9jdXNlZCIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4uX2ZvY3VzQ2hhbmdlZChlKX0pKSgic2VsZWN0Rm9jdXNlZEluZGV4IiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5zZWxlY3RlZEluZGV4PWV9KSksSG0oMix0aiw0LDE0LCJkaXYiLDIpLE1mKCksQ2YoMywiZGl2IiwzLDQpLEhtKDUsZWosMSw5LCJtYXQtdGFiLWJvZHkiLDUpLE1mKCkpLDImZSYmKGJmKCJzZWxlY3RlZEluZGV4IixuLnNlbGVjdGVkSW5kZXh8fDApKCJkaXNhYmxlUmlwcGxlIixuLmRpc2FibGVSaXBwbGUpKCJkaXNhYmxlUGFnaW5hdGlvbiIsbi5kaXNhYmxlUGFnaW5hdGlvbiksRGMoMiksYmYoIm5nRm9yT2YiLG4uX3RhYnMpLERjKDEpLGN1KCJfbWF0LWFuaW1hdGlvbi1ub29wYWJsZSIsIk5vb3BBbmltYXRpb25zIj09PW4uX2FuaW1hdGlvbk1vZGUpLERjKDIpLGJmKCJuZ0Zvck9mIixuLl90YWJzKSl9LGRpcmVjdGl2ZXM6ZnVuY3Rpb24oKXtyZXR1cm5bRWoseHYsa2osbUwsdUYsUHYsdUIsX2pdfSxzdHlsZXM6WyIubWF0LXRhYi1ncm91cHtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO21heC13aWR0aDoxMDAlfS5tYXQtdGFiLWdyb3VwLm1hdC10YWItZ3JvdXAtaW52ZXJ0ZWQtaGVhZGVye2ZsZXgtZGlyZWN0aW9uOmNvbHVtbi1yZXZlcnNlfS5tYXQtdGFiLWxhYmVse2hlaWdodDo0OHB4O3BhZGRpbmc6MCAyNHB4O2N1cnNvcjpwb2ludGVyO2JveC1zaXppbmc6Ym9yZGVyLWJveDtvcGFjaXR5Oi42O21pbi13aWR0aDoxNjBweDt0ZXh0LWFsaWduOmNlbnRlcjtkaXNwbGF5OmlubGluZS1mbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyO3doaXRlLXNwYWNlOm5vd3JhcDtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXRhYi1sYWJlbDpmb2N1c3tvdXRsaW5lOm5vbmV9Lm1hdC10YWItbGFiZWw6Zm9jdXM6bm90KC5tYXQtdGFiLWRpc2FibGVkKXtvcGFjaXR5OjF9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LXRhYi1sYWJlbDpmb2N1c3tvdXRsaW5lOmRvdHRlZCAycHg7b3V0bGluZS1vZmZzZXQ6LTJweH0ubWF0LXRhYi1sYWJlbC5tYXQtdGFiLWRpc2FibGVke2N1cnNvcjpkZWZhdWx0fS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC10YWItbGFiZWwubWF0LXRhYi1kaXNhYmxlZHtvcGFjaXR5Oi41fS5tYXQtdGFiLWxhYmVsIC5tYXQtdGFiLWxhYmVsLWNvbnRlbnR7ZGlzcGxheTppbmxpbmUtZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjt3aGl0ZS1zcGFjZTpub3dyYXB9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LXRhYi1sYWJlbHtvcGFjaXR5OjF9QG1lZGlhKG1heC13aWR0aDogNTk5cHgpey5tYXQtdGFiLWxhYmVse3BhZGRpbmc6MCAxMnB4fX1AbWVkaWEobWF4LXdpZHRoOiA5NTlweCl7Lm1hdC10YWItbGFiZWx7cGFkZGluZzowIDEycHh9fS5tYXQtdGFiLWdyb3VwW21hdC1zdHJldGNoLXRhYnNdPi5tYXQtdGFiLWhlYWRlciAubWF0LXRhYi1sYWJlbHtmbGV4LWJhc2lzOjA7ZmxleC1ncm93OjF9Lm1hdC10YWItYm9keS13cmFwcGVye3Bvc2l0aW9uOnJlbGF0aXZlO292ZXJmbG93OmhpZGRlbjtkaXNwbGF5OmZsZXg7dHJhbnNpdGlvbjpoZWlnaHQgNTAwbXMgY3ViaWMtYmV6aWVyKDAuMzUsIDAsIDAuMjUsIDEpfS5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZS5tYXQtdGFiLWJvZHktd3JhcHBlcnt0cmFuc2l0aW9uOm5vbmU7YW5pbWF0aW9uOm5vbmV9Lm1hdC10YWItYm9keXt0b3A6MDtsZWZ0OjA7cmlnaHQ6MDtib3R0b206MDtwb3NpdGlvbjphYnNvbHV0ZTtkaXNwbGF5OmJsb2NrO292ZXJmbG93OmhpZGRlbjtvdXRsaW5lOjA7ZmxleC1iYXNpczoxMDAlfS5tYXQtdGFiLWJvZHkubWF0LXRhYi1ib2R5LWFjdGl2ZXtwb3NpdGlvbjpyZWxhdGl2ZTtvdmVyZmxvdy14OmhpZGRlbjtvdmVyZmxvdy15OmF1dG87ei1pbmRleDoxO2ZsZXgtZ3JvdzoxfS5tYXQtdGFiLWdyb3VwLm1hdC10YWItZ3JvdXAtZHluYW1pYy1oZWlnaHQgLm1hdC10YWItYm9keS5tYXQtdGFiLWJvZHktYWN0aXZle292ZXJmbG93LXk6aGlkZGVufVxuIl0sZW5jYXBzdWxhdGlvbjoyfSksUGouY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpLaH0se3R5cGU6T2J9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltDal19LHt0eXBlOkJyfV19LHt0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpbY2tdfV19XSxQai5wcm9wRGVjb3JhdG9ycz17X2FsbFRhYnM6W3t0eXBlOm9yLGFyZ3M6W2dqLHtkZXNjZW5kYW50czohMH1dfV0sX3RhYkJvZHlXcmFwcGVyOlt7dHlwZTphcixhcmdzOlsidGFiQm9keVdyYXBwZXIiXX1dLF90YWJIZWFkZXI6W3t0eXBlOmFyLGFyZ3M6WyJ0YWJIZWFkZXIiXX1dfSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKFBqLFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6Im1hdC10YWItZ3JvdXAiLGV4cG9ydEFzOiJtYXRUYWJHcm91cCIsdGVtcGxhdGU6JzxtYXQtdGFiLWhlYWRlciAjdGFiSGVhZGVyXG4gICAgICAgICAgICAgICBbc2VsZWN0ZWRJbmRleF09InNlbGVjdGVkSW5kZXggfHwgMCJcbiAgICAgICAgICAgICAgIFtkaXNhYmxlUmlwcGxlXT0iZGlzYWJsZVJpcHBsZSJcbiAgICAgICAgICAgICAgIFtkaXNhYmxlUGFnaW5hdGlvbl09ImRpc2FibGVQYWdpbmF0aW9uIlxuICAgICAgICAgICAgICAgKGluZGV4Rm9jdXNlZCk9Il9mb2N1c0NoYW5nZWQoJGV2ZW50KSJcbiAgICAgICAgICAgICAgIChzZWxlY3RGb2N1c2VkSW5kZXgpPSJzZWxlY3RlZEluZGV4ID0gJGV2ZW50Ij5cbiAgPGRpdiBjbGFzcz0ibWF0LXRhYi1sYWJlbCBtYXQtZm9jdXMtaW5kaWNhdG9yIiByb2xlPSJ0YWIiIG1hdFRhYkxhYmVsV3JhcHBlciBtYXQtcmlwcGxlIGNka01vbml0b3JFbGVtZW50Rm9jdXNcbiAgICAgICAqbmdGb3I9ImxldCB0YWIgb2YgX3RhYnM7IGxldCBpID0gaW5kZXgiXG4gICAgICAgW2lkXT0iX2dldFRhYkxhYmVsSWQoaSkiXG4gICAgICAgW2F0dHIudGFiSW5kZXhdPSJfZ2V0VGFiSW5kZXgodGFiLCBpKSJcbiAgICAgICBbYXR0ci5hcmlhLXBvc2luc2V0XT0iaSArIDEiXG4gICAgICAgW2F0dHIuYXJpYS1zZXRzaXplXT0iX3RhYnMubGVuZ3RoIlxuICAgICAgIFthdHRyLmFyaWEtY29udHJvbHNdPSJfZ2V0VGFiQ29udGVudElkKGkpIlxuICAgICAgIFthdHRyLmFyaWEtc2VsZWN0ZWRdPSJzZWxlY3RlZEluZGV4ID09IGkiXG4gICAgICAgW2F0dHIuYXJpYS1sYWJlbF09InRhYi5hcmlhTGFiZWwgfHwgbnVsbCJcbiAgICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPSIoIXRhYi5hcmlhTGFiZWwgJiYgdGFiLmFyaWFMYWJlbGxlZGJ5KSA/IHRhYi5hcmlhTGFiZWxsZWRieSA6IG51bGwiXG4gICAgICAgW2NsYXNzLm1hdC10YWItbGFiZWwtYWN0aXZlXT0ic2VsZWN0ZWRJbmRleCA9PSBpIlxuICAgICAgIFtkaXNhYmxlZF09InRhYi5kaXNhYmxlZCJcbiAgICAgICBbbWF0UmlwcGxlRGlzYWJsZWRdPSJ0YWIuZGlzYWJsZWQgfHwgZGlzYWJsZVJpcHBsZSJcbiAgICAgICAoY2xpY2spPSJfaGFuZGxlQ2xpY2sodGFiLCB0YWJIZWFkZXIsIGkpIlxuICAgICAgIChjZGtGb2N1c0NoYW5nZSk9Il90YWJGb2N1c0NoYW5nZWQoJGV2ZW50LCBpKSI+XG5cblxuICAgIDxkaXYgY2xhc3M9Im1hdC10YWItbGFiZWwtY29udGVudCI+XG4gICAgICBceDNjIS0tIElmIHRoZXJlIGlzIGEgbGFiZWwgdGVtcGxhdGUsIHVzZSBpdC4gLS1ceDNlXG4gICAgICA8bmctdGVtcGxhdGUgW25nSWZdPSJ0YWIudGVtcGxhdGVMYWJlbCI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBbY2RrUG9ydGFsT3V0bGV0XT0idGFiLnRlbXBsYXRlTGFiZWwiPjwvbmctdGVtcGxhdGU+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICBceDNjIS0tIElmIHRoZXJlIGlzIG5vdCBhIGxhYmVsIHRlbXBsYXRlLCBmYWxsIGJhY2sgdG8gdGhlIHRleHQgbGFiZWwuIC0tXHgzZVxuICAgICAgPG5nLXRlbXBsYXRlIFtuZ0lmXT0iIXRhYi50ZW1wbGF0ZUxhYmVsIj57e3RhYi50ZXh0TGFiZWx9fTwvbmctdGVtcGxhdGU+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9tYXQtdGFiLWhlYWRlcj5cblxuPGRpdlxuICBjbGFzcz0ibWF0LXRhYi1ib2R5LXdyYXBwZXIiXG4gIFtjbGFzcy5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZV09Il9hbmltYXRpb25Nb2RlID09PSBcJ05vb3BBbmltYXRpb25zXCciXG4gICN0YWJCb2R5V3JhcHBlcj5cbiAgPG1hdC10YWItYm9keSByb2xlPSJ0YWJwYW5lbCJcbiAgICAgICAgICAgICAgICpuZ0Zvcj0ibGV0IHRhYiBvZiBfdGFiczsgbGV0IGkgPSBpbmRleCJcbiAgICAgICAgICAgICAgIFtpZF09Il9nZXRUYWJDb250ZW50SWQoaSkiXG4gICAgICAgICAgICAgICBbYXR0ci50YWJpbmRleF09Iihjb250ZW50VGFiSW5kZXggIT0gbnVsbCAmJiBzZWxlY3RlZEluZGV4ID09PSBpKSA/IGNvbnRlbnRUYWJJbmRleCA6IG51bGwiXG4gICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPSJfZ2V0VGFiTGFiZWxJZChpKSJcbiAgICAgICAgICAgICAgIFtjbGFzcy5tYXQtdGFiLWJvZHktYWN0aXZlXT0ic2VsZWN0ZWRJbmRleCA9PT0gaSJcbiAgICAgICAgICAgICAgIFtjb250ZW50XT0idGFiLmNvbnRlbnQhIlxuICAgICAgICAgICAgICAgW3Bvc2l0aW9uXT0idGFiLnBvc2l0aW9uISJcbiAgICAgICAgICAgICAgIFtvcmlnaW5dPSJ0YWIub3JpZ2luIlxuICAgICAgICAgICAgICAgW2FuaW1hdGlvbkR1cmF0aW9uXT0iYW5pbWF0aW9uRHVyYXRpb24iXG4gICAgICAgICAgICAgICAoX29uQ2VudGVyZWQpPSJfcmVtb3ZlVGFiQm9keVdyYXBwZXJIZWlnaHQoKSJcbiAgICAgICAgICAgICAgIChfb25DZW50ZXJpbmcpPSJfc2V0VGFiQm9keVdyYXBwZXJIZWlnaHQoJGV2ZW50KSI+XG4gIDwvbWF0LXRhYi1ib2R5PlxuPC9kaXY+XG4nLGVuY2Fwc3VsYXRpb246V24uTm9uZSxjaGFuZ2VEZXRlY3Rpb246am4uRGVmYXVsdCxpbnB1dHM6WyJjb2xvciIsImRpc2FibGVSaXBwbGUiXSxwcm92aWRlcnM6W3twcm92aWRlOnVqLHVzZUV4aXN0aW5nOlBqfV0saG9zdDp7Y2xhc3M6Im1hdC10YWItZ3JvdXAiLCJbY2xhc3MubWF0LXRhYi1ncm91cC1keW5hbWljLWhlaWdodF0iOiJkeW5hbWljSGVpZ2h0IiwiW2NsYXNzLm1hdC10YWItZ3JvdXAtaW52ZXJ0ZWQtaGVhZGVyXSI6J2hlYWRlclBvc2l0aW9uID09PSAiYmVsb3ciJ30sc3R5bGVzOlsiLm1hdC10YWItZ3JvdXB7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjttYXgtd2lkdGg6MTAwJX0ubWF0LXRhYi1ncm91cC5tYXQtdGFiLWdyb3VwLWludmVydGVkLWhlYWRlcntmbGV4LWRpcmVjdGlvbjpjb2x1bW4tcmV2ZXJzZX0ubWF0LXRhYi1sYWJlbHtoZWlnaHQ6NDhweDtwYWRkaW5nOjAgMjRweDtjdXJzb3I6cG9pbnRlcjtib3gtc2l6aW5nOmJvcmRlci1ib3g7b3BhY2l0eTouNjttaW4td2lkdGg6MTYwcHg7dGV4dC1hbGlnbjpjZW50ZXI7ZGlzcGxheTppbmxpbmUtZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjt3aGl0ZS1zcGFjZTpub3dyYXA7cG9zaXRpb246cmVsYXRpdmV9Lm1hdC10YWItbGFiZWw6Zm9jdXN7b3V0bGluZTpub25lfS5tYXQtdGFiLWxhYmVsOmZvY3VzOm5vdCgubWF0LXRhYi1kaXNhYmxlZCl7b3BhY2l0eToxfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC10YWItbGFiZWw6Zm9jdXN7b3V0bGluZTpkb3R0ZWQgMnB4O291dGxpbmUtb2Zmc2V0Oi0ycHh9Lm1hdC10YWItbGFiZWwubWF0LXRhYi1kaXNhYmxlZHtjdXJzb3I6ZGVmYXVsdH0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtdGFiLWxhYmVsLm1hdC10YWItZGlzYWJsZWR7b3BhY2l0eTouNX0ubWF0LXRhYi1sYWJlbCAubWF0LXRhYi1sYWJlbC1jb250ZW50e2Rpc3BsYXk6aW5saW5lLWZsZXg7anVzdGlmeS1jb250ZW50OmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7d2hpdGUtc3BhY2U6bm93cmFwfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC10YWItbGFiZWx7b3BhY2l0eToxfUBtZWRpYShtYXgtd2lkdGg6IDU5OXB4KXsubWF0LXRhYi1sYWJlbHtwYWRkaW5nOjAgMTJweH19QG1lZGlhKG1heC13aWR0aDogOTU5cHgpey5tYXQtdGFiLWxhYmVse3BhZGRpbmc6MCAxMnB4fX0ubWF0LXRhYi1ncm91cFttYXQtc3RyZXRjaC10YWJzXT4ubWF0LXRhYi1oZWFkZXIgLm1hdC10YWItbGFiZWx7ZmxleC1iYXNpczowO2ZsZXgtZ3JvdzoxfS5tYXQtdGFiLWJvZHktd3JhcHBlcntwb3NpdGlvbjpyZWxhdGl2ZTtvdmVyZmxvdzpoaWRkZW47ZGlzcGxheTpmbGV4O3RyYW5zaXRpb246aGVpZ2h0IDUwMG1zIGN1YmljLWJlemllcigwLjM1LCAwLCAwLjI1LCAxKX0uX21hdC1hbmltYXRpb24tbm9vcGFibGUubWF0LXRhYi1ib2R5LXdyYXBwZXJ7dHJhbnNpdGlvbjpub25lO2FuaW1hdGlvbjpub25lfS5tYXQtdGFiLWJvZHl7dG9wOjA7bGVmdDowO3JpZ2h0OjA7Ym90dG9tOjA7cG9zaXRpb246YWJzb2x1dGU7ZGlzcGxheTpibG9jaztvdmVyZmxvdzpoaWRkZW47b3V0bGluZTowO2ZsZXgtYmFzaXM6MTAwJX0ubWF0LXRhYi1ib2R5Lm1hdC10YWItYm9keS1hY3RpdmV7cG9zaXRpb246cmVsYXRpdmU7b3ZlcmZsb3cteDpoaWRkZW47b3ZlcmZsb3cteTphdXRvO3otaW5kZXg6MTtmbGV4LWdyb3c6MX0ubWF0LXRhYi1ncm91cC5tYXQtdGFiLWdyb3VwLWR5bmFtaWMtaGVpZ2h0IC5tYXQtdGFiLWJvZHkubWF0LXRhYi1ib2R5LWFjdGl2ZXtvdmVyZmxvdy15OmhpZGRlbn1cbiJdfV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6S2h9LHt0eXBlOk9ifSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbQ2pdfSx7dHlwZTpCcn1dfSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W2NrXX1dfV19KSx7X2FsbFRhYnM6W3t0eXBlOm9yLGFyZ3M6W2dqLHtkZXNjZW5kYW50czohMH1dfV0sX3RhYkJvZHlXcmFwcGVyOlt7dHlwZTphcixhcmdzOlsidGFiQm9keVdyYXBwZXIiXX1dLF90YWJIZWFkZXI6W3t0eXBlOmFyLGFyZ3M6WyJ0YWJIZWFkZXIiXX1dfSk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjb25zdCB3aj16RihjbGFzc3t9KTtjbGFzcyBraiBleHRlbmRzIHdqe2NvbnN0cnVjdG9yKHQpe3N1cGVyKCksdGhpcy5lbGVtZW50UmVmPXR9Zm9jdXMoKXt0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5mb2N1cygpfWdldE9mZnNldExlZnQoKXtyZXR1cm4gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQub2Zmc2V0TGVmdH1nZXRPZmZzZXRXaWR0aCgpe3JldHVybiB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aH19a2ouybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGtqKShnZihLaCkpfSxrai7JtWRpcj1obyh7dHlwZTpraixzZWxlY3RvcnM6W1siIiwibWF0VGFiTGFiZWxXcmFwcGVyIiwiIl1dLGhvc3RWYXJzOjMsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQoZSxuKXsyJmUmJih5bSgiYXJpYS1kaXNhYmxlZCIsISFuLmRpc2FibGVkKSxjdSgibWF0LXRhYi1kaXNhYmxlZCIsbi5kaXNhYmxlZCkpfSxpbnB1dHM6e2Rpc2FibGVkOiJkaXNhYmxlZCJ9LGZlYXR1cmVzOltRcF19KSxrai5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOktofV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihraixbe3R5cGU6a18sYXJnczpbe3NlbGVjdG9yOiJbbWF0VGFiTGFiZWxXcmFwcGVyXSIsaW5wdXRzOlsiZGlzYWJsZWQiXSxob3N0OnsiW2NsYXNzLm1hdC10YWItZGlzYWJsZWRdIjoiZGlzYWJsZWQiLCJbYXR0ci5hcmlhLWRpc2FibGVkXSI6IiEhZGlzYWJsZWQifX1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOktofV19KSxudWxsKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNvbnN0IFNqPWJIKHtwYXNzaXZlOiEwfSk7Y2xhc3MgRGp7Y29uc3RydWN0b3IodCxlLG4sbyxpLGEscil7dGhpcy5fZWxlbWVudFJlZj10LHRoaXMuX2NoYW5nZURldGVjdG9yUmVmPWUsdGhpcy5fdmlld3BvcnRSdWxlcj1uLHRoaXMuX2Rpcj1vLHRoaXMuX25nWm9uZT1pLHRoaXMuX3BsYXRmb3JtPWEsdGhpcy5fYW5pbWF0aW9uTW9kZT1yLHRoaXMuX3Njcm9sbERpc3RhbmNlPTAsdGhpcy5fc2VsZWN0ZWRJbmRleENoYW5nZWQ9ITEsdGhpcy5fZGVzdHJveWVkPW5ldyBCLHRoaXMuX3Nob3dQYWdpbmF0aW9uQ29udHJvbHM9ITEsdGhpcy5fZGlzYWJsZVNjcm9sbEFmdGVyPSEwLHRoaXMuX2Rpc2FibGVTY3JvbGxCZWZvcmU9ITAsdGhpcy5fc3RvcFNjcm9sbGluZz1uZXcgQix0aGlzLmRpc2FibGVQYWdpbmF0aW9uPSExLHRoaXMuX3NlbGVjdGVkSW5kZXg9MCx0aGlzLnNlbGVjdEZvY3VzZWRJbmRleD1uZXcgU3ksdGhpcy5pbmRleEZvY3VzZWQ9bmV3IFN5LGkucnVuT3V0c2lkZUFuZ3VsYXIoKCgpPT57bGUodC5uYXRpdmVFbGVtZW50LCJtb3VzZWxlYXZlIikucGlwZShqZSh0aGlzLl9kZXN0cm95ZWQpKS5zdWJzY3JpYmUoKCgpPT57dGhpcy5fc3RvcEludGVydmFsKCl9KSl9KSl9Z2V0IHNlbGVjdGVkSW5kZXgoKXtyZXR1cm4gdGhpcy5fc2VsZWN0ZWRJbmRleH1zZXQgc2VsZWN0ZWRJbmRleCh0KXt0PW5IKHQpLHRoaXMuX3NlbGVjdGVkSW5kZXghPXQmJih0aGlzLl9zZWxlY3RlZEluZGV4Q2hhbmdlZD0hMCx0aGlzLl9zZWxlY3RlZEluZGV4PXQsdGhpcy5fa2V5TWFuYWdlciYmdGhpcy5fa2V5TWFuYWdlci51cGRhdGVBY3RpdmVJdGVtKHQpKX1uZ0FmdGVyVmlld0luaXQoKXtsZSh0aGlzLl9wcmV2aW91c1BhZ2luYXRvci5uYXRpdmVFbGVtZW50LCJ0b3VjaHN0YXJ0IixTaikucGlwZShqZSh0aGlzLl9kZXN0cm95ZWQpKS5zdWJzY3JpYmUoKCgpPT57dGhpcy5faGFuZGxlUGFnaW5hdG9yUHJlc3MoImJlZm9yZSIpfSkpLGxlKHRoaXMuX25leHRQYWdpbmF0b3IubmF0aXZlRWxlbWVudCwidG91Y2hzdGFydCIsU2opLnBpcGUoamUodGhpcy5fZGVzdHJveWVkKSkuc3Vic2NyaWJlKCgoKT0+e3RoaXMuX2hhbmRsZVBhZ2luYXRvclByZXNzKCJhZnRlciIpfSkpfW5nQWZ0ZXJDb250ZW50SW5pdCgpe2NvbnN0IHQ9dGhpcy5fZGlyP3RoaXMuX2Rpci5jaGFuZ2U6enQoImx0ciIpLGU9dGhpcy5fdmlld3BvcnRSdWxlci5jaGFuZ2UoMTUwKSxuPSgpPT57dGhpcy51cGRhdGVQYWdpbmF0aW9uKCksdGhpcy5fYWxpZ25JbmtCYXJUb1NlbGVjdGVkVGFiKCl9O3RoaXMuX2tleU1hbmFnZXI9bmV3IExIKHRoaXMuX2l0ZW1zKS53aXRoSG9yaXpvbnRhbE9yaWVudGF0aW9uKHRoaXMuX2dldExheW91dERpcmVjdGlvbigpKS53aXRoSG9tZUFuZEVuZCgpLndpdGhXcmFwKCksdGhpcy5fa2V5TWFuYWdlci51cGRhdGVBY3RpdmVJdGVtKHRoaXMuX3NlbGVjdGVkSW5kZXgpLCJ1bmRlZmluZWQiIT10eXBlb2YgcmVxdWVzdEFuaW1hdGlvbkZyYW1lP3JlcXVlc3RBbmltYXRpb25GcmFtZShuKTpuKCkscGUodCxlLHRoaXMuX2l0ZW1zLmNoYW5nZXMpLnBpcGUoamUodGhpcy5fZGVzdHJveWVkKSkuc3Vic2NyaWJlKCgoKT0+e3RoaXMuX25nWm9uZS5ydW4oKCgpPT5Qcm9taXNlLnJlc29sdmUoKS50aGVuKG4pKSksdGhpcy5fa2V5TWFuYWdlci53aXRoSG9yaXpvbnRhbE9yaWVudGF0aW9uKHRoaXMuX2dldExheW91dERpcmVjdGlvbigpKX0pKSx0aGlzLl9rZXlNYW5hZ2VyLmNoYW5nZS5waXBlKGplKHRoaXMuX2Rlc3Ryb3llZCkpLnN1YnNjcmliZSgodD0+e3RoaXMuaW5kZXhGb2N1c2VkLmVtaXQodCksdGhpcy5fc2V0VGFiRm9jdXModCl9KSl9bmdBZnRlckNvbnRlbnRDaGVja2VkKCl7dGhpcy5fdGFiTGFiZWxDb3VudCE9dGhpcy5faXRlbXMubGVuZ3RoJiYodGhpcy51cGRhdGVQYWdpbmF0aW9uKCksdGhpcy5fdGFiTGFiZWxDb3VudD10aGlzLl9pdGVtcy5sZW5ndGgsdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCkpLHRoaXMuX3NlbGVjdGVkSW5kZXhDaGFuZ2VkJiYodGhpcy5fc2Nyb2xsVG9MYWJlbCh0aGlzLl9zZWxlY3RlZEluZGV4KSx0aGlzLl9jaGVja1Njcm9sbGluZ0NvbnRyb2xzKCksdGhpcy5fYWxpZ25JbmtCYXJUb1NlbGVjdGVkVGFiKCksdGhpcy5fc2VsZWN0ZWRJbmRleENoYW5nZWQ9ITEsdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCkpLHRoaXMuX3Njcm9sbERpc3RhbmNlQ2hhbmdlZCYmKHRoaXMuX3VwZGF0ZVRhYlNjcm9sbFBvc2l0aW9uKCksdGhpcy5fc2Nyb2xsRGlzdGFuY2VDaGFuZ2VkPSExLHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpKX1uZ09uRGVzdHJveSgpe3RoaXMuX2Rlc3Ryb3llZC5uZXh0KCksdGhpcy5fZGVzdHJveWVkLmNvbXBsZXRlKCksdGhpcy5fc3RvcFNjcm9sbGluZy5jb21wbGV0ZSgpfV9oYW5kbGVLZXlkb3duKHQpe2lmKCF0SCh0KSlzd2l0Y2godC5rZXlDb2RlKXtjYXNlIFhJOmNhc2UgSkk6dGhpcy5mb2N1c0luZGV4IT09dGhpcy5zZWxlY3RlZEluZGV4JiYodGhpcy5zZWxlY3RGb2N1c2VkSW5kZXguZW1pdCh0aGlzLmZvY3VzSW5kZXgpLHRoaXMuX2l0ZW1TZWxlY3RlZCh0KSk7YnJlYWs7ZGVmYXVsdDp0aGlzLl9rZXlNYW5hZ2VyLm9uS2V5ZG93bih0KX19X29uQ29udGVudENoYW5nZXMoKXtjb25zdCB0PXRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC50ZXh0Q29udGVudDt0IT09dGhpcy5fY3VycmVudFRleHRDb250ZW50JiYodGhpcy5fY3VycmVudFRleHRDb250ZW50PXR8fCIiLHRoaXMuX25nWm9uZS5ydW4oKCgpPT57dGhpcy51cGRhdGVQYWdpbmF0aW9uKCksdGhpcy5fYWxpZ25JbmtCYXJUb1NlbGVjdGVkVGFiKCksdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCl9KSkpfXVwZGF0ZVBhZ2luYXRpb24oKXt0aGlzLl9jaGVja1BhZ2luYXRpb25FbmFibGVkKCksdGhpcy5fY2hlY2tTY3JvbGxpbmdDb250cm9scygpLHRoaXMuX3VwZGF0ZVRhYlNjcm9sbFBvc2l0aW9uKCl9Z2V0IGZvY3VzSW5kZXgoKXtyZXR1cm4gdGhpcy5fa2V5TWFuYWdlcj90aGlzLl9rZXlNYW5hZ2VyLmFjdGl2ZUl0ZW1JbmRleDowfXNldCBmb2N1c0luZGV4KHQpe3RoaXMuX2lzVmFsaWRJbmRleCh0KSYmdGhpcy5mb2N1c0luZGV4IT09dCYmdGhpcy5fa2V5TWFuYWdlciYmdGhpcy5fa2V5TWFuYWdlci5zZXRBY3RpdmVJdGVtKHQpfV9pc1ZhbGlkSW5kZXgodCl7aWYoIXRoaXMuX2l0ZW1zKXJldHVybiEwO2NvbnN0IGU9dGhpcy5faXRlbXM/dGhpcy5faXRlbXMudG9BcnJheSgpW3RdOm51bGw7cmV0dXJuISFlJiYhZS5kaXNhYmxlZH1fc2V0VGFiRm9jdXModCl7aWYodGhpcy5fc2hvd1BhZ2luYXRpb25Db250cm9scyYmdGhpcy5fc2Nyb2xsVG9MYWJlbCh0KSx0aGlzLl9pdGVtcyYmdGhpcy5faXRlbXMubGVuZ3RoKXt0aGlzLl9pdGVtcy50b0FycmF5KClbdF0uZm9jdXMoKTtjb25zdCBlPXRoaXMuX3RhYkxpc3RDb250YWluZXIubmF0aXZlRWxlbWVudCxuPXRoaXMuX2dldExheW91dERpcmVjdGlvbigpO2Uuc2Nyb2xsTGVmdD0ibHRyIj09bj8wOmUuc2Nyb2xsV2lkdGgtZS5vZmZzZXRXaWR0aH19X2dldExheW91dERpcmVjdGlvbigpe3JldHVybiB0aGlzLl9kaXImJiJydGwiPT09dGhpcy5fZGlyLnZhbHVlPyJydGwiOiJsdHIifV91cGRhdGVUYWJTY3JvbGxQb3NpdGlvbigpe2lmKHRoaXMuZGlzYWJsZVBhZ2luYXRpb24pcmV0dXJuO2NvbnN0IHQ9dGhpcy5zY3JvbGxEaXN0YW5jZSxlPSJsdHIiPT09dGhpcy5fZ2V0TGF5b3V0RGlyZWN0aW9uKCk/LXQ6dDt0aGlzLl90YWJMaXN0Lm5hdGl2ZUVsZW1lbnQuc3R5bGUudHJhbnNmb3JtPWB0cmFuc2xhdGVYKCR7TWF0aC5yb3VuZChlKX1weClgLCh0aGlzLl9wbGF0Zm9ybS5UUklERU5UfHx0aGlzLl9wbGF0Zm9ybS5FREdFKSYmKHRoaXMuX3RhYkxpc3RDb250YWluZXIubmF0aXZlRWxlbWVudC5zY3JvbGxMZWZ0PTApfWdldCBzY3JvbGxEaXN0YW5jZSgpe3JldHVybiB0aGlzLl9zY3JvbGxEaXN0YW5jZX1zZXQgc2Nyb2xsRGlzdGFuY2UodCl7dGhpcy5fc2Nyb2xsVG8odCl9X3Njcm9sbEhlYWRlcih0KXtyZXR1cm4gdGhpcy5fc2Nyb2xsVG8odGhpcy5fc2Nyb2xsRGlzdGFuY2UrKCJiZWZvcmUiPT10Py0xOjEpKnRoaXMuX3RhYkxpc3RDb250YWluZXIubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aC8zKX1faGFuZGxlUGFnaW5hdG9yQ2xpY2sodCl7dGhpcy5fc3RvcEludGVydmFsKCksdGhpcy5fc2Nyb2xsSGVhZGVyKHQpfV9zY3JvbGxUb0xhYmVsKHQpe2lmKHRoaXMuZGlzYWJsZVBhZ2luYXRpb24pcmV0dXJuO2NvbnN0IGU9dGhpcy5faXRlbXM/dGhpcy5faXRlbXMudG9BcnJheSgpW3RdOm51bGw7aWYoIWUpcmV0dXJuO2NvbnN0IG49dGhpcy5fdGFiTGlzdENvbnRhaW5lci5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoLHtvZmZzZXRMZWZ0Om8sb2Zmc2V0V2lkdGg6aX09ZS5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7bGV0IGEscjsibHRyIj09dGhpcy5fZ2V0TGF5b3V0RGlyZWN0aW9uKCk/KGE9byxyPWEraSk6KHI9dGhpcy5fdGFiTGlzdC5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoLW8sYT1yLWkpO2NvbnN0IHM9dGhpcy5zY3JvbGxEaXN0YW5jZSxsPXRoaXMuc2Nyb2xsRGlzdGFuY2UrbjthPHM/dGhpcy5zY3JvbGxEaXN0YW5jZS09cy1hKzYwOnI+bCYmKHRoaXMuc2Nyb2xsRGlzdGFuY2UrPXItbCs2MCl9X2NoZWNrUGFnaW5hdGlvbkVuYWJsZWQoKXtpZih0aGlzLmRpc2FibGVQYWdpbmF0aW9uKXRoaXMuX3Nob3dQYWdpbmF0aW9uQ29udHJvbHM9ITE7ZWxzZXtjb25zdCB0PXRoaXMuX3RhYkxpc3QubmF0aXZlRWxlbWVudC5zY3JvbGxXaWR0aD50aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGg7dHx8KHRoaXMuc2Nyb2xsRGlzdGFuY2U9MCksdCE9PXRoaXMuX3Nob3dQYWdpbmF0aW9uQ29udHJvbHMmJnRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpLHRoaXMuX3Nob3dQYWdpbmF0aW9uQ29udHJvbHM9dH19X2NoZWNrU2Nyb2xsaW5nQ29udHJvbHMoKXt0aGlzLmRpc2FibGVQYWdpbmF0aW9uP3RoaXMuX2Rpc2FibGVTY3JvbGxBZnRlcj10aGlzLl9kaXNhYmxlU2Nyb2xsQmVmb3JlPSEwOih0aGlzLl9kaXNhYmxlU2Nyb2xsQmVmb3JlPTA9PXRoaXMuc2Nyb2xsRGlzdGFuY2UsdGhpcy5fZGlzYWJsZVNjcm9sbEFmdGVyPXRoaXMuc2Nyb2xsRGlzdGFuY2U9PXRoaXMuX2dldE1heFNjcm9sbERpc3RhbmNlKCksdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCkpfV9nZXRNYXhTY3JvbGxEaXN0YW5jZSgpe3JldHVybiB0aGlzLl90YWJMaXN0Lm5hdGl2ZUVsZW1lbnQuc2Nyb2xsV2lkdGgtdGhpcy5fdGFiTGlzdENvbnRhaW5lci5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRofHwwfV9hbGlnbklua0JhclRvU2VsZWN0ZWRUYWIoKXtjb25zdCB0PXRoaXMuX2l0ZW1zJiZ0aGlzLl9pdGVtcy5sZW5ndGg/dGhpcy5faXRlbXMudG9BcnJheSgpW3RoaXMuc2VsZWN0ZWRJbmRleF06bnVsbCxlPXQ/dC5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ6bnVsbDtlP3RoaXMuX2lua0Jhci5hbGlnblRvRWxlbWVudChlKTp0aGlzLl9pbmtCYXIuaGlkZSgpfV9zdG9wSW50ZXJ2YWwoKXt0aGlzLl9zdG9wU2Nyb2xsaW5nLm5leHQoKX1faGFuZGxlUGFnaW5hdG9yUHJlc3ModCxlKXtlJiZudWxsIT1lLmJ1dHRvbiYmMCE9PWUuYnV0dG9ufHwodGhpcy5fc3RvcEludGVydmFsKCksZGUoNjUwLDEwMCkucGlwZShqZShwZSh0aGlzLl9zdG9wU2Nyb2xsaW5nLHRoaXMuX2Rlc3Ryb3llZCkpKS5zdWJzY3JpYmUoKCgpPT57Y29uc3R7bWF4U2Nyb2xsRGlzdGFuY2U6ZSxkaXN0YW5jZTpufT10aGlzLl9zY3JvbGxIZWFkZXIodCk7KDA9PT1ufHxuPj1lKSYmdGhpcy5fc3RvcEludGVydmFsKCl9KSkpfV9zY3JvbGxUbyh0KXtpZih0aGlzLmRpc2FibGVQYWdpbmF0aW9uKXJldHVybnttYXhTY3JvbGxEaXN0YW5jZTowLGRpc3RhbmNlOjB9O2NvbnN0IGU9dGhpcy5fZ2V0TWF4U2Nyb2xsRGlzdGFuY2UoKTtyZXR1cm4gdGhpcy5fc2Nyb2xsRGlzdGFuY2U9TWF0aC5tYXgoMCxNYXRoLm1pbihlLHQpKSx0aGlzLl9zY3JvbGxEaXN0YW5jZUNoYW5nZWQ9ITAsdGhpcy5fY2hlY2tTY3JvbGxpbmdDb250cm9scygpLHttYXhTY3JvbGxEaXN0YW5jZTplLGRpc3RhbmNlOnRoaXMuX3Njcm9sbERpc3RhbmNlfX19RGouybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fERqKShnZihLaCksZ2YoT2IpLGdmKFFMKSxnZih2Riw4KSxnZihtQyksZ2YoY0gpLGdmKGNrLDgpKX0sRGouybVkaXI9aG8oe3R5cGU6RGosaW5wdXRzOntkaXNhYmxlUGFnaW5hdGlvbjoiZGlzYWJsZVBhZ2luYXRpb24ifX0pLERqLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6S2h9LHt0eXBlOk9ifSx7dHlwZTpRTH0se3R5cGU6dkYsZGVjb3JhdG9yczpbe3R5cGU6QnJ9XX0se3R5cGU6bUN9LHt0eXBlOmNIfSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W2NrXX1dfV0sRGoucHJvcERlY29yYXRvcnM9e2Rpc2FibGVQYWdpbmF0aW9uOlt7dHlwZTpSX31dfSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKERqLFt7dHlwZTprX31dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpLaH0se3R5cGU6T2J9LHt0eXBlOlFMfSx7dHlwZTp2RixkZWNvcmF0b3JzOlt7dHlwZTpCcn1dfSx7dHlwZTptQ30se3R5cGU6Y0h9LHt0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpbY2tdfV19XX0pLHtkaXNhYmxlUGFnaW5hdGlvbjpbe3R5cGU6Ul99XX0pOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3MgUmogZXh0ZW5kcyBEantjb25zdHJ1Y3Rvcih0LGUsbixvLGksYSxyKXtzdXBlcih0LGUsbixvLGksYSxyKSx0aGlzLl9kaXNhYmxlUmlwcGxlPSExfWdldCBkaXNhYmxlUmlwcGxlKCl7cmV0dXJuIHRoaXMuX2Rpc2FibGVSaXBwbGV9c2V0IGRpc2FibGVSaXBwbGUodCl7dGhpcy5fZGlzYWJsZVJpcHBsZT1lSCh0KX1faXRlbVNlbGVjdGVkKHQpe3QucHJldmVudERlZmF1bHQoKX19UmouybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFJqKShnZihLaCksZ2YoT2IpLGdmKFFMKSxnZih2Riw4KSxnZihtQyksZ2YoY0gpLGdmKGNrLDgpKX0sUmouybVkaXI9aG8oe3R5cGU6UmosaW5wdXRzOntkaXNhYmxlUmlwcGxlOiJkaXNhYmxlUmlwcGxlIn0sZmVhdHVyZXM6W1FwXX0pLFJqLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6S2h9LHt0eXBlOk9ifSx7dHlwZTpRTH0se3R5cGU6dkYsZGVjb3JhdG9yczpbe3R5cGU6QnJ9XX0se3R5cGU6bUN9LHt0eXBlOmNIfSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W2NrXX1dfV0sUmoucHJvcERlY29yYXRvcnM9e2Rpc2FibGVSaXBwbGU6W3t0eXBlOlJffV19LCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoUmosW3t0eXBlOmtffV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOktofSx7dHlwZTpPYn0se3R5cGU6UUx9LHt0eXBlOnZGLGRlY29yYXRvcnM6W3t0eXBlOkJyfV19LHt0eXBlOm1DfSx7dHlwZTpjSH0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltja119XX1dfSkse2Rpc2FibGVSaXBwbGU6W3t0eXBlOlJffV19KTtjbGFzcyBFaiBleHRlbmRzIFJqe2NvbnN0cnVjdG9yKHQsZSxuLG8saSxhLHIpe3N1cGVyKHQsZSxuLG8saSxhLHIpfX1Fai7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8RWopKGdmKEtoKSxnZihPYiksZ2YoUUwpLGdmKHZGLDgpLGdmKG1DKSxnZihjSCksZ2YoY2ssOCkpfSxFai7JtWNtcD1zbyh7dHlwZTpFaixzZWxlY3RvcnM6W1sibWF0LXRhYi1oZWFkZXIiXV0sY29udGVudFF1ZXJpZXM6ZnVuY3Rpb24gdChlLG4sbyl7aWYoMSZlJiZqeShvLGtqLDQpLDImZSl7bGV0IHQ7QnkodD1VeSgpKSYmKG4uX2l0ZW1zPXQpfX0sdmlld1F1ZXJ5OmZ1bmN0aW9uIHQoZSxuKXtpZigxJmUmJihWeShsaiw3KSxWeShuaiw3KSxWeShvaiw3KSxWeShpaiw1KSxWeShhaiw1KSksMiZlKXtsZXQgdDtCeSh0PVV5KCkpJiYobi5faW5rQmFyPXQuZmlyc3QpLEJ5KHQ9VXkoKSkmJihuLl90YWJMaXN0Q29udGFpbmVyPXQuZmlyc3QpLEJ5KHQ9VXkoKSkmJihuLl90YWJMaXN0PXQuZmlyc3QpLEJ5KHQ9VXkoKSkmJihuLl9uZXh0UGFnaW5hdG9yPXQuZmlyc3QpLEJ5KHQ9VXkoKSkmJihuLl9wcmV2aW91c1BhZ2luYXRvcj10LmZpcnN0KX19LGhvc3RBdHRyczpbMSwibWF0LXRhYi1oZWFkZXIiXSxob3N0VmFyczo0LGhvc3RCaW5kaW5nczpmdW5jdGlvbiB0KGUsbil7MiZlJiZjdSgibWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jb250cm9scy1lbmFibGVkIixuLl9zaG93UGFnaW5hdGlvbkNvbnRyb2xzKSgibWF0LXRhYi1oZWFkZXItcnRsIiwicnRsIj09bi5fZ2V0TGF5b3V0RGlyZWN0aW9uKCkpfSxpbnB1dHM6e3NlbGVjdGVkSW5kZXg6InNlbGVjdGVkSW5kZXgifSxvdXRwdXRzOntzZWxlY3RGb2N1c2VkSW5kZXg6InNlbGVjdEZvY3VzZWRJbmRleCIsaW5kZXhGb2N1c2VkOiJpbmRleEZvY3VzZWQifSxmZWF0dXJlczpbUXBdLG5nQ29udGVudFNlbGVjdG9yczpHVixkZWNsczoxMyx2YXJzOjgsY29uc3RzOltbImFyaWEtaGlkZGVuIiwidHJ1ZSIsIm1hdC1yaXBwbGUiLCIiLDEsIm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24iLCJtYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWJlZm9yZSIsIm1hdC1lbGV2YXRpb24tejQiLDMsIm1hdFJpcHBsZURpc2FibGVkIiwiY2xpY2siLCJtb3VzZWRvd24iLCJ0b3VjaGVuZCJdLFsicHJldmlvdXNQYWdpbmF0b3IiLCIiXSxbMSwibWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uIl0sWzEsIm1hdC10YWItbGFiZWwtY29udGFpbmVyIiwzLCJrZXlkb3duIl0sWyJ0YWJMaXN0Q29udGFpbmVyIiwiIl0sWyJyb2xlIiwidGFibGlzdCIsMSwibWF0LXRhYi1saXN0IiwzLCJjZGtPYnNlcnZlQ29udGVudCJdLFsidGFiTGlzdCIsIiJdLFsxLCJtYXQtdGFiLWxhYmVscyJdLFsiYXJpYS1oaWRkZW4iLCJ0cnVlIiwibWF0LXJpcHBsZSIsIiIsMSwibWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbiIsIm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tYWZ0ZXIiLCJtYXQtZWxldmF0aW9uLXo0IiwzLCJtYXRSaXBwbGVEaXNhYmxlZCIsIm1vdXNlZG93biIsImNsaWNrIiwidG91Y2hlbmQiXSxbIm5leHRQYWdpbmF0b3IiLCIiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKEhmKCksQ2YoMCwiZGl2IiwwLDEpLFJmKCJjbGljayIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5faGFuZGxlUGFnaW5hdG9yQ2xpY2soImJlZm9yZSIpfSkpKCJtb3VzZWRvd24iLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLl9oYW5kbGVQYWdpbmF0b3JQcmVzcygiYmVmb3JlIixlKX0pKSgidG91Y2hlbmQiLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4uX3N0b3BJbnRlcnZhbCgpfSkpLHZmKDIsImRpdiIsMiksTWYoKSxDZigzLCJkaXYiLDMsNCksUmYoImtleWRvd24iLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLl9oYW5kbGVLZXlkb3duKGUpfSkpLENmKDUsImRpdiIsNSw2KSxSZigiY2RrT2JzZXJ2ZUNvbnRlbnQiLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4uX29uQ29udGVudENoYW5nZXMoKX0pKSxDZig3LCJkaXYiLDcpLEZmKDgpLE1mKCksdmYoOSwibWF0LWluay1iYXIiKSxNZigpLE1mKCksQ2YoMTAsImRpdiIsOCw5KSxSZigibW91c2Vkb3duIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5faGFuZGxlUGFnaW5hdG9yUHJlc3MoImFmdGVyIixlKX0pKSgiY2xpY2siLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4uX2hhbmRsZVBhZ2luYXRvckNsaWNrKCJhZnRlciIpfSkpKCJ0b3VjaGVuZCIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5fc3RvcEludGVydmFsKCl9KSksdmYoMTIsImRpdiIsMiksTWYoKSksMiZlJiYoY3UoIm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWQiLG4uX2Rpc2FibGVTY3JvbGxCZWZvcmUpLGJmKCJtYXRSaXBwbGVEaXNhYmxlZCIsbi5fZGlzYWJsZVNjcm9sbEJlZm9yZXx8bi5kaXNhYmxlUmlwcGxlKSxEYyg1KSxjdSgiX21hdC1hbmltYXRpb24tbm9vcGFibGUiLCJOb29wQW5pbWF0aW9ucyI9PT1uLl9hbmltYXRpb25Nb2RlKSxEYyg1KSxjdSgibWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZCIsbi5fZGlzYWJsZVNjcm9sbEFmdGVyKSxiZigibWF0UmlwcGxlRGlzYWJsZWQiLG4uX2Rpc2FibGVTY3JvbGxBZnRlcnx8bi5kaXNhYmxlUmlwcGxlKSl9LGRpcmVjdGl2ZXM6W21MLFBILGxqXSxzdHlsZXM6WycubWF0LXRhYi1oZWFkZXJ7ZGlzcGxheTpmbGV4O292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZTtmbGV4LXNocmluazowfS5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uey13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTstbW96LXVzZXItc2VsZWN0Om5vbmU7LW1zLXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZTtwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5Om5vbmU7anVzdGlmeS1jb250ZW50OmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7bWluLXdpZHRoOjMycHg7Y3Vyc29yOnBvaW50ZXI7ei1pbmRleDoyOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudDt0b3VjaC1hY3Rpb246bm9uZX0ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jb250cm9scy1lbmFibGVkIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9ue2Rpc3BsYXk6ZmxleH0ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1iZWZvcmUsLm1hdC10YWItaGVhZGVyLXJ0bCAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1hZnRlcntwYWRkaW5nLWxlZnQ6NHB4fS5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWJlZm9yZSAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uLC5tYXQtdGFiLWhlYWRlci1ydGwgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tYWZ0ZXIgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbnt0cmFuc2Zvcm06cm90YXRlKC0xMzVkZWcpfS5tYXQtdGFiLWhlYWRlci1ydGwgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tYmVmb3JlLC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWFmdGVye3BhZGRpbmctcmlnaHQ6NHB4fS5tYXQtdGFiLWhlYWRlci1ydGwgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tYmVmb3JlIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb24sLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tYWZ0ZXIgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbnt0cmFuc2Zvcm06cm90YXRlKDQ1ZGVnKX0ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9ue2JvcmRlci1zdHlsZTpzb2xpZDtib3JkZXItd2lkdGg6MnB4IDJweCAwIDA7Y29udGVudDoiIjtoZWlnaHQ6OHB4O3dpZHRoOjhweH0ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZHtib3gtc2hhZG93Om5vbmU7Y3Vyc29yOmRlZmF1bHR9Lm1hdC10YWItbGlzdHtmbGV4LWdyb3c6MTtwb3NpdGlvbjpyZWxhdGl2ZTt0cmFuc2l0aW9uOnRyYW5zZm9ybSA1MDBtcyBjdWJpYy1iZXppZXIoMC4zNSwgMCwgMC4yNSwgMSl9Lm1hdC1pbmstYmFye3Bvc2l0aW9uOmFic29sdXRlO2JvdHRvbTowO2hlaWdodDoycHg7dHJhbnNpdGlvbjo1MDBtcyBjdWJpYy1iZXppZXIoMC4zNSwgMCwgMC4yNSwgMSl9Ll9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlLm1hdC1pbmstYmFye3RyYW5zaXRpb246bm9uZTthbmltYXRpb246bm9uZX0ubWF0LXRhYi1ncm91cC1pbnZlcnRlZC1oZWFkZXIgLm1hdC1pbmstYmFye2JvdHRvbTphdXRvO3RvcDowfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1pbmstYmFye291dGxpbmU6c29saWQgMnB4O2hlaWdodDowfS5tYXQtdGFiLWxhYmVsc3tkaXNwbGF5OmZsZXh9W21hdC1hbGlnbi10YWJzPWNlbnRlcl0+Lm1hdC10YWItaGVhZGVyIC5tYXQtdGFiLWxhYmVsc3tqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyfVttYXQtYWxpZ24tdGFicz1lbmRdPi5tYXQtdGFiLWhlYWRlciAubWF0LXRhYi1sYWJlbHN7anVzdGlmeS1jb250ZW50OmZsZXgtZW5kfS5tYXQtdGFiLWxhYmVsLWNvbnRhaW5lcntkaXNwbGF5OmZsZXg7ZmxleC1ncm93OjE7b3ZlcmZsb3c6aGlkZGVuO3otaW5kZXg6MX0uX21hdC1hbmltYXRpb24tbm9vcGFibGUubWF0LXRhYi1saXN0e3RyYW5zaXRpb246bm9uZTthbmltYXRpb246bm9uZX0ubWF0LXRhYi1sYWJlbHtoZWlnaHQ6NDhweDtwYWRkaW5nOjAgMjRweDtjdXJzb3I6cG9pbnRlcjtib3gtc2l6aW5nOmJvcmRlci1ib3g7b3BhY2l0eTouNjttaW4td2lkdGg6MTYwcHg7dGV4dC1hbGlnbjpjZW50ZXI7ZGlzcGxheTppbmxpbmUtZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjt3aGl0ZS1zcGFjZTpub3dyYXA7cG9zaXRpb246cmVsYXRpdmV9Lm1hdC10YWItbGFiZWw6Zm9jdXN7b3V0bGluZTpub25lfS5tYXQtdGFiLWxhYmVsOmZvY3VzOm5vdCgubWF0LXRhYi1kaXNhYmxlZCl7b3BhY2l0eToxfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC10YWItbGFiZWw6Zm9jdXN7b3V0bGluZTpkb3R0ZWQgMnB4O291dGxpbmUtb2Zmc2V0Oi0ycHh9Lm1hdC10YWItbGFiZWwubWF0LXRhYi1kaXNhYmxlZHtjdXJzb3I6ZGVmYXVsdH0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtdGFiLWxhYmVsLm1hdC10YWItZGlzYWJsZWR7b3BhY2l0eTouNX0ubWF0LXRhYi1sYWJlbCAubWF0LXRhYi1sYWJlbC1jb250ZW50e2Rpc3BsYXk6aW5saW5lLWZsZXg7anVzdGlmeS1jb250ZW50OmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7d2hpdGUtc3BhY2U6bm93cmFwfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC10YWItbGFiZWx7b3BhY2l0eToxfUBtZWRpYShtYXgtd2lkdGg6IDU5OXB4KXsubWF0LXRhYi1sYWJlbHttaW4td2lkdGg6NzJweH19XG4nXSxlbmNhcHN1bGF0aW9uOjJ9KSxFai5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOktofSx7dHlwZTpPYn0se3R5cGU6UUx9LHt0eXBlOnZGLGRlY29yYXRvcnM6W3t0eXBlOkJyfV19LHt0eXBlOm1DfSx7dHlwZTpjSH0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltja119XX1dLEVqLnByb3BEZWNvcmF0b3JzPXtfaXRlbXM6W3t0eXBlOm9yLGFyZ3M6W2tqLHtkZXNjZW5kYW50czohMX1dfV0sX2lua0Jhcjpbe3R5cGU6YXIsYXJnczpbbGose3N0YXRpYzohMH1dfV0sX3RhYkxpc3RDb250YWluZXI6W3t0eXBlOmFyLGFyZ3M6WyJ0YWJMaXN0Q29udGFpbmVyIix7c3RhdGljOiEwfV19XSxfdGFiTGlzdDpbe3R5cGU6YXIsYXJnczpbInRhYkxpc3QiLHtzdGF0aWM6ITB9XX1dLF9uZXh0UGFnaW5hdG9yOlt7dHlwZTphcixhcmdzOlsibmV4dFBhZ2luYXRvciJdfV0sX3ByZXZpb3VzUGFnaW5hdG9yOlt7dHlwZTphcixhcmdzOlsicHJldmlvdXNQYWdpbmF0b3IiXX1dfSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKEVqLFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6Im1hdC10YWItaGVhZGVyIix0ZW1wbGF0ZTonPGRpdiBjbGFzcz0ibWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbiBtYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWJlZm9yZSBtYXQtZWxldmF0aW9uLXo0IlxuICAgICAjcHJldmlvdXNQYWdpbmF0b3JcbiAgICAgYXJpYS1oaWRkZW49InRydWUiXG4gICAgIG1hdC1yaXBwbGUgW21hdFJpcHBsZURpc2FibGVkXT0iX2Rpc2FibGVTY3JvbGxCZWZvcmUgfHwgZGlzYWJsZVJpcHBsZSJcbiAgICAgW2NsYXNzLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWRdPSJfZGlzYWJsZVNjcm9sbEJlZm9yZSJcbiAgICAgKGNsaWNrKT0iX2hhbmRsZVBhZ2luYXRvckNsaWNrKFwnYmVmb3JlXCcpIlxuICAgICAobW91c2Vkb3duKT0iX2hhbmRsZVBhZ2luYXRvclByZXNzKFwnYmVmb3JlXCcsICRldmVudCkiXG4gICAgICh0b3VjaGVuZCk9Il9zdG9wSW50ZXJ2YWwoKSI+XG4gIDxkaXYgY2xhc3M9Im1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbiI+PC9kaXY+XG48L2Rpdj5cblxuPGRpdiBjbGFzcz0ibWF0LXRhYi1sYWJlbC1jb250YWluZXIiICN0YWJMaXN0Q29udGFpbmVyIChrZXlkb3duKT0iX2hhbmRsZUtleWRvd24oJGV2ZW50KSI+XG4gIDxkaXZcbiAgICAjdGFiTGlzdFxuICAgIGNsYXNzPSJtYXQtdGFiLWxpc3QiXG4gICAgW2NsYXNzLl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlXT0iX2FuaW1hdGlvbk1vZGUgPT09IFwnTm9vcEFuaW1hdGlvbnNcJyJcbiAgICByb2xlPSJ0YWJsaXN0IlxuICAgIChjZGtPYnNlcnZlQ29udGVudCk9Il9vbkNvbnRlbnRDaGFuZ2VzKCkiPlxuICAgIDxkaXYgY2xhc3M9Im1hdC10YWItbGFiZWxzIj5cbiAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cbiAgICA8bWF0LWluay1iYXI+PC9tYXQtaW5rLWJhcj5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPGRpdiBjbGFzcz0ibWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbiBtYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWFmdGVyIG1hdC1lbGV2YXRpb24tejQiXG4gICAgICNuZXh0UGFnaW5hdG9yXG4gICAgIGFyaWEtaGlkZGVuPSJ0cnVlIlxuICAgICBtYXQtcmlwcGxlIFttYXRSaXBwbGVEaXNhYmxlZF09Il9kaXNhYmxlU2Nyb2xsQWZ0ZXIgfHwgZGlzYWJsZVJpcHBsZSJcbiAgICAgW2NsYXNzLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWRdPSJfZGlzYWJsZVNjcm9sbEFmdGVyIlxuICAgICAobW91c2Vkb3duKT0iX2hhbmRsZVBhZ2luYXRvclByZXNzKFwnYWZ0ZXJcJywgJGV2ZW50KSJcbiAgICAgKGNsaWNrKT0iX2hhbmRsZVBhZ2luYXRvckNsaWNrKFwnYWZ0ZXJcJykiXG4gICAgICh0b3VjaGVuZCk9Il9zdG9wSW50ZXJ2YWwoKSI+XG4gIDxkaXYgY2xhc3M9Im1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbiI+PC9kaXY+XG48L2Rpdj5cbicsaW5wdXRzOlsic2VsZWN0ZWRJbmRleCJdLG91dHB1dHM6WyJzZWxlY3RGb2N1c2VkSW5kZXgiLCJpbmRleEZvY3VzZWQiXSxlbmNhcHN1bGF0aW9uOlduLk5vbmUsY2hhbmdlRGV0ZWN0aW9uOmpuLkRlZmF1bHQsaG9zdDp7Y2xhc3M6Im1hdC10YWItaGVhZGVyIiwiW2NsYXNzLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY29udHJvbHMtZW5hYmxlZF0iOiJfc2hvd1BhZ2luYXRpb25Db250cm9scyIsIltjbGFzcy5tYXQtdGFiLWhlYWRlci1ydGxdIjoiX2dldExheW91dERpcmVjdGlvbigpID09ICdydGwnIn0sc3R5bGVzOlsnLm1hdC10YWItaGVhZGVye2Rpc3BsYXk6ZmxleDtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246cmVsYXRpdmU7ZmxleC1zaHJpbms6MH0ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbnstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7LW1vei11c2VyLXNlbGVjdDpub25lOy1tcy11c2VyLXNlbGVjdDpub25lO3VzZXItc2VsZWN0Om5vbmU7cG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTpub25lO2p1c3RpZnktY29udGVudDpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyO21pbi13aWR0aDozMnB4O2N1cnNvcjpwb2ludGVyO3otaW5kZXg6Mjstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnQ7dG91Y2gtYWN0aW9uOm5vbmV9Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY29udHJvbHMtZW5hYmxlZCAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbntkaXNwbGF5OmZsZXh9Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tYmVmb3JlLC5tYXQtdGFiLWhlYWRlci1ydGwgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tYWZ0ZXJ7cGFkZGluZy1sZWZ0OjRweH0ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1iZWZvcmUgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbiwubWF0LXRhYi1oZWFkZXItcnRsIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWFmdGVyIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb257dHJhbnNmb3JtOnJvdGF0ZSgtMTM1ZGVnKX0ubWF0LXRhYi1oZWFkZXItcnRsIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWJlZm9yZSwubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1hZnRlcntwYWRkaW5nLXJpZ2h0OjRweH0ubWF0LXRhYi1oZWFkZXItcnRsIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWJlZm9yZSAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uLC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWFmdGVyIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb257dHJhbnNmb3JtOnJvdGF0ZSg0NWRlZyl9Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbntib3JkZXItc3R5bGU6c29saWQ7Ym9yZGVyLXdpZHRoOjJweCAycHggMCAwO2NvbnRlbnQ6IiI7aGVpZ2h0OjhweDt3aWR0aDo4cHh9Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWR7Ym94LXNoYWRvdzpub25lO2N1cnNvcjpkZWZhdWx0fS5tYXQtdGFiLWxpc3R7ZmxleC1ncm93OjE7cG9zaXRpb246cmVsYXRpdmU7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gNTAwbXMgY3ViaWMtYmV6aWVyKDAuMzUsIDAsIDAuMjUsIDEpfS5tYXQtaW5rLWJhcntwb3NpdGlvbjphYnNvbHV0ZTtib3R0b206MDtoZWlnaHQ6MnB4O3RyYW5zaXRpb246NTAwbXMgY3ViaWMtYmV6aWVyKDAuMzUsIDAsIDAuMjUsIDEpfS5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZS5tYXQtaW5rLWJhcnt0cmFuc2l0aW9uOm5vbmU7YW5pbWF0aW9uOm5vbmV9Lm1hdC10YWItZ3JvdXAtaW52ZXJ0ZWQtaGVhZGVyIC5tYXQtaW5rLWJhcntib3R0b206YXV0bzt0b3A6MH0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtaW5rLWJhcntvdXRsaW5lOnNvbGlkIDJweDtoZWlnaHQ6MH0ubWF0LXRhYi1sYWJlbHN7ZGlzcGxheTpmbGV4fVttYXQtYWxpZ24tdGFicz1jZW50ZXJdPi5tYXQtdGFiLWhlYWRlciAubWF0LXRhYi1sYWJlbHN7anVzdGlmeS1jb250ZW50OmNlbnRlcn1bbWF0LWFsaWduLXRhYnM9ZW5kXT4ubWF0LXRhYi1oZWFkZXIgLm1hdC10YWItbGFiZWxze2p1c3RpZnktY29udGVudDpmbGV4LWVuZH0ubWF0LXRhYi1sYWJlbC1jb250YWluZXJ7ZGlzcGxheTpmbGV4O2ZsZXgtZ3JvdzoxO292ZXJmbG93OmhpZGRlbjt6LWluZGV4OjF9Ll9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlLm1hdC10YWItbGlzdHt0cmFuc2l0aW9uOm5vbmU7YW5pbWF0aW9uOm5vbmV9Lm1hdC10YWItbGFiZWx7aGVpZ2h0OjQ4cHg7cGFkZGluZzowIDI0cHg7Y3Vyc29yOnBvaW50ZXI7Ym94LXNpemluZzpib3JkZXItYm94O29wYWNpdHk6LjY7bWluLXdpZHRoOjE2MHB4O3RleHQtYWxpZ246Y2VudGVyO2Rpc3BsYXk6aW5saW5lLWZsZXg7anVzdGlmeS1jb250ZW50OmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7d2hpdGUtc3BhY2U6bm93cmFwO3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtdGFiLWxhYmVsOmZvY3Vze291dGxpbmU6bm9uZX0ubWF0LXRhYi1sYWJlbDpmb2N1czpub3QoLm1hdC10YWItZGlzYWJsZWQpe29wYWNpdHk6MX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtdGFiLWxhYmVsOmZvY3Vze291dGxpbmU6ZG90dGVkIDJweDtvdXRsaW5lLW9mZnNldDotMnB4fS5tYXQtdGFiLWxhYmVsLm1hdC10YWItZGlzYWJsZWR7Y3Vyc29yOmRlZmF1bHR9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LXRhYi1sYWJlbC5tYXQtdGFiLWRpc2FibGVke29wYWNpdHk6LjV9Lm1hdC10YWItbGFiZWwgLm1hdC10YWItbGFiZWwtY29udGVudHtkaXNwbGF5OmlubGluZS1mbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyO3doaXRlLXNwYWNlOm5vd3JhcH0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtdGFiLWxhYmVse29wYWNpdHk6MX1AbWVkaWEobWF4LXdpZHRoOiA1OTlweCl7Lm1hdC10YWItbGFiZWx7bWluLXdpZHRoOjcycHh9fVxuJ119XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpLaH0se3R5cGU6T2J9LHt0eXBlOlFMfSx7dHlwZTp2RixkZWNvcmF0b3JzOlt7dHlwZTpCcn1dfSx7dHlwZTptQ30se3R5cGU6Y0h9LHt0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpbY2tdfV19XX0pLHtfaXRlbXM6W3t0eXBlOm9yLGFyZ3M6W2tqLHtkZXNjZW5kYW50czohMX1dfV0sX2lua0Jhcjpbe3R5cGU6YXIsYXJnczpbbGose3N0YXRpYzohMH1dfV0sX3RhYkxpc3RDb250YWluZXI6W3t0eXBlOmFyLGFyZ3M6WyJ0YWJMaXN0Q29udGFpbmVyIix7c3RhdGljOiEwfV19XSxfdGFiTGlzdDpbe3R5cGU6YXIsYXJnczpbInRhYkxpc3QiLHtzdGF0aWM6ITB9XX1dLF9uZXh0UGFnaW5hdG9yOlt7dHlwZTphcixhcmdzOlsibmV4dFBhZ2luYXRvciJdfV0sX3ByZXZpb3VzUGFnaW5hdG9yOlt7dHlwZTphcixhcmdzOlsicHJldmlvdXNQYWdpbmF0b3IiXX1dfSk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjbGFzcyBBaiBleHRlbmRzIERqe2NvbnN0cnVjdG9yKHQsZSxuLG8saSxhLHIpe3N1cGVyKHQsbyxpLGUsbixhLHIpLHRoaXMuX2Rpc2FibGVSaXBwbGU9ITEsdGhpcy5jb2xvcj0icHJpbWFyeSJ9Z2V0IGJhY2tncm91bmRDb2xvcigpe3JldHVybiB0aGlzLl9iYWNrZ3JvdW5kQ29sb3J9c2V0IGJhY2tncm91bmRDb2xvcih0KXtjb25zdCBlPXRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jbGFzc0xpc3Q7ZS5yZW1vdmUoYG1hdC1iYWNrZ3JvdW5kLSR7dGhpcy5iYWNrZ3JvdW5kQ29sb3J9YCksdCYmZS5hZGQoYG1hdC1iYWNrZ3JvdW5kLSR7dH1gKSx0aGlzLl9iYWNrZ3JvdW5kQ29sb3I9dH1nZXQgZGlzYWJsZVJpcHBsZSgpe3JldHVybiB0aGlzLl9kaXNhYmxlUmlwcGxlfXNldCBkaXNhYmxlUmlwcGxlKHQpe3RoaXMuX2Rpc2FibGVSaXBwbGU9ZUgodCl9X2l0ZW1TZWxlY3RlZCgpe31uZ0FmdGVyQ29udGVudEluaXQoKXt0aGlzLl9pdGVtcy5jaGFuZ2VzLnBpcGUoQmUobnVsbCksamUodGhpcy5fZGVzdHJveWVkKSkuc3Vic2NyaWJlKCgoKT0+e3RoaXMudXBkYXRlQWN0aXZlTGluaygpfSkpLHN1cGVyLm5nQWZ0ZXJDb250ZW50SW5pdCgpfXVwZGF0ZUFjdGl2ZUxpbmsoKXtpZighdGhpcy5faXRlbXMpcmV0dXJuO2NvbnN0IHQ9dGhpcy5faXRlbXMudG9BcnJheSgpO2ZvcihsZXQgZT0wO2U8dC5sZW5ndGg7ZSsrKWlmKHRbZV0uYWN0aXZlKXJldHVybiB0aGlzLnNlbGVjdGVkSW5kZXg9ZSx2b2lkIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO3RoaXMuc2VsZWN0ZWRJbmRleD0tMSx0aGlzLl9pbmtCYXIuaGlkZSgpfX1Bai7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8QWopKGdmKEtoKSxnZih2Riw4KSxnZihtQyksZ2YoT2IpLGdmKFFMKSxnZihjSCksZ2YoY2ssOCkpfSxBai7JtWRpcj1obyh7dHlwZTpBaixpbnB1dHM6e2NvbG9yOiJjb2xvciIsYmFja2dyb3VuZENvbG9yOiJiYWNrZ3JvdW5kQ29sb3IiLGRpc2FibGVSaXBwbGU6ImRpc2FibGVSaXBwbGUifSxmZWF0dXJlczpbUXBdfSksQWouY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpLaH0se3R5cGU6dkYsZGVjb3JhdG9yczpbe3R5cGU6QnJ9XX0se3R5cGU6bUN9LHt0eXBlOk9ifSx7dHlwZTpRTH0se3R5cGU6Y0h9LHt0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpbY2tdfV19XSxBai5wcm9wRGVjb3JhdG9ycz17YmFja2dyb3VuZENvbG9yOlt7dHlwZTpSX31dLGRpc2FibGVSaXBwbGU6W3t0eXBlOlJffV0sY29sb3I6W3t0eXBlOlJffV19LCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoQWosW3t0eXBlOmtffV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOktofSx7dHlwZTp2RixkZWNvcmF0b3JzOlt7dHlwZTpCcn1dfSx7dHlwZTptQ30se3R5cGU6T2J9LHt0eXBlOlFMfSx7dHlwZTpjSH0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltja119XX1dfSkse2NvbG9yOlt7dHlwZTpSX31dLGJhY2tncm91bmRDb2xvcjpbe3R5cGU6Ul99XSxkaXNhYmxlUmlwcGxlOlt7dHlwZTpSX31dfSk7Y2xhc3MgVGogZXh0ZW5kcyBBantjb25zdHJ1Y3Rvcih0LGUsbixvLGksYSxyKXtzdXBlcih0LGUsbixvLGksYSxyKX19VGouybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFRqKShnZihLaCksZ2YodkYsOCksZ2YobUMpLGdmKE9iKSxnZihRTCksZ2YoY0gpLGdmKGNrLDgpKX0sVGouybVjbXA9c28oe3R5cGU6VGosc2VsZWN0b3JzOltbIiIsIm1hdC10YWItbmF2LWJhciIsIiJdXSxjb250ZW50UXVlcmllczpmdW5jdGlvbiB0KGUsbixvKXtpZigxJmUmJmp5KG8sSWosNSksMiZlKXtsZXQgdDtCeSh0PVV5KCkpJiYobi5faXRlbXM9dCl9fSx2aWV3UXVlcnk6ZnVuY3Rpb24gdChlLG4pe2lmKDEmZSYmKFZ5KGxqLDcpLFZ5KG5qLDcpLFZ5KG9qLDcpLFZ5KGlqLDUpLFZ5KGFqLDUpKSwyJmUpe2xldCB0O0J5KHQ9VXkoKSkmJihuLl9pbmtCYXI9dC5maXJzdCksQnkodD1VeSgpKSYmKG4uX3RhYkxpc3RDb250YWluZXI9dC5maXJzdCksQnkodD1VeSgpKSYmKG4uX3RhYkxpc3Q9dC5maXJzdCksQnkodD1VeSgpKSYmKG4uX25leHRQYWdpbmF0b3I9dC5maXJzdCksQnkodD1VeSgpKSYmKG4uX3ByZXZpb3VzUGFnaW5hdG9yPXQuZmlyc3QpfX0saG9zdEF0dHJzOlsxLCJtYXQtdGFiLW5hdi1iYXIiLCJtYXQtdGFiLWhlYWRlciJdLGhvc3RWYXJzOjEwLGhvc3RCaW5kaW5nczpmdW5jdGlvbiB0KGUsbil7MiZlJiZjdSgibWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jb250cm9scy1lbmFibGVkIixuLl9zaG93UGFnaW5hdGlvbkNvbnRyb2xzKSgibWF0LXRhYi1oZWFkZXItcnRsIiwicnRsIj09bi5fZ2V0TGF5b3V0RGlyZWN0aW9uKCkpKCJtYXQtcHJpbWFyeSIsIndhcm4iIT09bi5jb2xvciYmImFjY2VudCIhPT1uLmNvbG9yKSgibWF0LWFjY2VudCIsImFjY2VudCI9PT1uLmNvbG9yKSgibWF0LXdhcm4iLCJ3YXJuIj09PW4uY29sb3IpfSxpbnB1dHM6e2NvbG9yOiJjb2xvciJ9LGV4cG9ydEFzOlsibWF0VGFiTmF2QmFyIiwibWF0VGFiTmF2Il0sZmVhdHVyZXM6W1FwXSxhdHRyczpbIm1hdC10YWItbmF2LWJhciIsIiJdLG5nQ29udGVudFNlbGVjdG9yczpHVixkZWNsczoxMyx2YXJzOjgsY29uc3RzOltbImFyaWEtaGlkZGVuIiwidHJ1ZSIsIm1hdC1yaXBwbGUiLCIiLDEsIm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24iLCJtYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWJlZm9yZSIsIm1hdC1lbGV2YXRpb24tejQiLDMsIm1hdFJpcHBsZURpc2FibGVkIiwiY2xpY2siLCJtb3VzZWRvd24iLCJ0b3VjaGVuZCJdLFsicHJldmlvdXNQYWdpbmF0b3IiLCIiXSxbMSwibWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uIl0sWzEsIm1hdC10YWItbGluay1jb250YWluZXIiLDMsImtleWRvd24iXSxbInRhYkxpc3RDb250YWluZXIiLCIiXSxbMSwibWF0LXRhYi1saXN0IiwzLCJjZGtPYnNlcnZlQ29udGVudCJdLFsidGFiTGlzdCIsIiJdLFsxLCJtYXQtdGFiLWxpbmtzIl0sWyJhcmlhLWhpZGRlbiIsInRydWUiLCJtYXQtcmlwcGxlIiwiIiwxLCJtYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uIiwibWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1hZnRlciIsIm1hdC1lbGV2YXRpb24tejQiLDMsIm1hdFJpcHBsZURpc2FibGVkIiwibW91c2Vkb3duIiwiY2xpY2siLCJ0b3VjaGVuZCJdLFsibmV4dFBhZ2luYXRvciIsIiJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoSGYoKSxDZigwLCJkaXYiLDAsMSksUmYoImNsaWNrIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLl9oYW5kbGVQYWdpbmF0b3JDbGljaygiYmVmb3JlIil9KSkoIm1vdXNlZG93biIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4uX2hhbmRsZVBhZ2luYXRvclByZXNzKCJiZWZvcmUiLGUpfSkpKCJ0b3VjaGVuZCIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5fc3RvcEludGVydmFsKCl9KSksdmYoMiwiZGl2IiwyKSxNZigpLENmKDMsImRpdiIsMyw0KSxSZigia2V5ZG93biIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4uX2hhbmRsZUtleWRvd24oZSl9KSksQ2YoNSwiZGl2Iiw1LDYpLFJmKCJjZGtPYnNlcnZlQ29udGVudCIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5fb25Db250ZW50Q2hhbmdlcygpfSkpLENmKDcsImRpdiIsNyksRmYoOCksTWYoKSx2Zig5LCJtYXQtaW5rLWJhciIpLE1mKCksTWYoKSxDZigxMCwiZGl2Iiw4LDkpLFJmKCJtb3VzZWRvd24iLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLl9oYW5kbGVQYWdpbmF0b3JQcmVzcygiYWZ0ZXIiLGUpfSkpKCJjbGljayIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5faGFuZGxlUGFnaW5hdG9yQ2xpY2soImFmdGVyIil9KSkoInRvdWNoZW5kIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLl9zdG9wSW50ZXJ2YWwoKX0pKSx2ZigxMiwiZGl2IiwyKSxNZigpKSwyJmUmJihjdSgibWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZCIsbi5fZGlzYWJsZVNjcm9sbEJlZm9yZSksYmYoIm1hdFJpcHBsZURpc2FibGVkIixuLl9kaXNhYmxlU2Nyb2xsQmVmb3JlfHxuLmRpc2FibGVSaXBwbGUpLERjKDUpLGN1KCJfbWF0LWFuaW1hdGlvbi1ub29wYWJsZSIsIk5vb3BBbmltYXRpb25zIj09PW4uX2FuaW1hdGlvbk1vZGUpLERjKDUpLGN1KCJtYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkIixuLl9kaXNhYmxlU2Nyb2xsQWZ0ZXIpLGJmKCJtYXRSaXBwbGVEaXNhYmxlZCIsbi5fZGlzYWJsZVNjcm9sbEFmdGVyfHxuLmRpc2FibGVSaXBwbGUpKX0sZGlyZWN0aXZlczpbbUwsUEgsbGpdLHN0eWxlczpbJy5tYXQtdGFiLWhlYWRlcntkaXNwbGF5OmZsZXg7b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlO2ZsZXgtc2hyaW5rOjB9Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb257LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTstbXMtdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lO3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6bm9uZTtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjttaW4td2lkdGg6MzJweDtjdXJzb3I6cG9pbnRlcjt6LWluZGV4OjI7LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50O3RvdWNoLWFjdGlvbjpub25lfS5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNvbnRyb2xzLWVuYWJsZWQgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb257ZGlzcGxheTpmbGV4fS5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWJlZm9yZSwubWF0LXRhYi1oZWFkZXItcnRsIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWFmdGVye3BhZGRpbmctbGVmdDo0cHh9Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tYmVmb3JlIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb24sLm1hdC10YWItaGVhZGVyLXJ0bCAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1hZnRlciAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9ue3RyYW5zZm9ybTpyb3RhdGUoLTEzNWRlZyl9Lm1hdC10YWItaGVhZGVyLXJ0bCAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1iZWZvcmUsLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tYWZ0ZXJ7cGFkZGluZy1yaWdodDo0cHh9Lm1hdC10YWItaGVhZGVyLXJ0bCAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1iZWZvcmUgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbiwubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1hZnRlciAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9ue3RyYW5zZm9ybTpyb3RhdGUoNDVkZWcpfS5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb257Ym9yZGVyLXN0eWxlOnNvbGlkO2JvcmRlci13aWR0aDoycHggMnB4IDAgMDtjb250ZW50OiIiO2hlaWdodDo4cHg7d2lkdGg6OHB4fS5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVke2JveC1zaGFkb3c6bm9uZTtjdXJzb3I6ZGVmYXVsdH0ubWF0LXRhYi1saXN0e2ZsZXgtZ3JvdzoxO3Bvc2l0aW9uOnJlbGF0aXZlO3RyYW5zaXRpb246dHJhbnNmb3JtIDUwMG1zIGN1YmljLWJlemllcigwLjM1LCAwLCAwLjI1LCAxKX0ubWF0LXRhYi1saW5rc3tkaXNwbGF5OmZsZXh9W21hdC1hbGlnbi10YWJzPWNlbnRlcl0+Lm1hdC10YWItbGluay1jb250YWluZXIgLm1hdC10YWItbGlua3N7anVzdGlmeS1jb250ZW50OmNlbnRlcn1bbWF0LWFsaWduLXRhYnM9ZW5kXT4ubWF0LXRhYi1saW5rLWNvbnRhaW5lciAubWF0LXRhYi1saW5rc3tqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1lbmR9Lm1hdC1pbmstYmFye3Bvc2l0aW9uOmFic29sdXRlO2JvdHRvbTowO2hlaWdodDoycHg7dHJhbnNpdGlvbjo1MDBtcyBjdWJpYy1iZXppZXIoMC4zNSwgMCwgMC4yNSwgMSl9Ll9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlLm1hdC1pbmstYmFye3RyYW5zaXRpb246bm9uZTthbmltYXRpb246bm9uZX0ubWF0LXRhYi1ncm91cC1pbnZlcnRlZC1oZWFkZXIgLm1hdC1pbmstYmFye2JvdHRvbTphdXRvO3RvcDowfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1pbmstYmFye291dGxpbmU6c29saWQgMnB4O2hlaWdodDowfS5tYXQtdGFiLWxpbmstY29udGFpbmVye2Rpc3BsYXk6ZmxleDtmbGV4LWdyb3c6MTtvdmVyZmxvdzpoaWRkZW47ei1pbmRleDoxfS5tYXQtdGFiLWxpbmt7aGVpZ2h0OjQ4cHg7cGFkZGluZzowIDI0cHg7Y3Vyc29yOnBvaW50ZXI7Ym94LXNpemluZzpib3JkZXItYm94O29wYWNpdHk6LjY7bWluLXdpZHRoOjE2MHB4O3RleHQtYWxpZ246Y2VudGVyO2Rpc3BsYXk6aW5saW5lLWZsZXg7anVzdGlmeS1jb250ZW50OmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7d2hpdGUtc3BhY2U6bm93cmFwO3ZlcnRpY2FsLWFsaWduOnRvcDt0ZXh0LWRlY29yYXRpb246bm9uZTtwb3NpdGlvbjpyZWxhdGl2ZTtvdmVyZmxvdzpoaWRkZW47LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50fS5tYXQtdGFiLWxpbms6Zm9jdXN7b3V0bGluZTpub25lfS5tYXQtdGFiLWxpbms6Zm9jdXM6bm90KC5tYXQtdGFiLWRpc2FibGVkKXtvcGFjaXR5OjF9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LXRhYi1saW5rOmZvY3Vze291dGxpbmU6ZG90dGVkIDJweDtvdXRsaW5lLW9mZnNldDotMnB4fS5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZHtjdXJzb3I6ZGVmYXVsdH0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZHtvcGFjaXR5Oi41fS5tYXQtdGFiLWxpbmsgLm1hdC10YWItbGFiZWwtY29udGVudHtkaXNwbGF5OmlubGluZS1mbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyO3doaXRlLXNwYWNlOm5vd3JhcH0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtdGFiLWxpbmt7b3BhY2l0eToxfVttYXQtc3RyZXRjaC10YWJzXSAubWF0LXRhYi1saW5re2ZsZXgtYmFzaXM6MDtmbGV4LWdyb3c6MX0ubWF0LXRhYi1saW5rLm1hdC10YWItZGlzYWJsZWR7cG9pbnRlci1ldmVudHM6bm9uZX1AbWVkaWEobWF4LXdpZHRoOiA1OTlweCl7Lm1hdC10YWItbGlua3ttaW4td2lkdGg6NzJweH19XG4nXSxlbmNhcHN1bGF0aW9uOjJ9KSxUai5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOktofSx7dHlwZTp2RixkZWNvcmF0b3JzOlt7dHlwZTpCcn1dfSx7dHlwZTptQ30se3R5cGU6T2J9LHt0eXBlOlFMfSx7dHlwZTpjSH0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltja119XX1dLFRqLnByb3BEZWNvcmF0b3JzPXtfaXRlbXM6W3t0eXBlOm9yLGFyZ3M6WyRlKCgoKT0+SWopKSx7ZGVzY2VuZGFudHM6ITB9XX1dLF9pbmtCYXI6W3t0eXBlOmFyLGFyZ3M6W2xqLHtzdGF0aWM6ITB9XX1dLF90YWJMaXN0Q29udGFpbmVyOlt7dHlwZTphcixhcmdzOlsidGFiTGlzdENvbnRhaW5lciIse3N0YXRpYzohMH1dfV0sX3RhYkxpc3Q6W3t0eXBlOmFyLGFyZ3M6WyJ0YWJMaXN0Iix7c3RhdGljOiEwfV19XSxfbmV4dFBhZ2luYXRvcjpbe3R5cGU6YXIsYXJnczpbIm5leHRQYWdpbmF0b3IiXX1dLF9wcmV2aW91c1BhZ2luYXRvcjpbe3R5cGU6YXIsYXJnczpbInByZXZpb3VzUGFnaW5hdG9yIl19XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihUaixbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJbbWF0LXRhYi1uYXYtYmFyXSIsZXhwb3J0QXM6Im1hdFRhYk5hdkJhciwgbWF0VGFiTmF2IixpbnB1dHM6WyJjb2xvciJdLHRlbXBsYXRlOic8ZGl2IGNsYXNzPSJtYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uIG1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tYmVmb3JlIG1hdC1lbGV2YXRpb24tejQiXG4gICAgICNwcmV2aW91c1BhZ2luYXRvclxuICAgICBhcmlhLWhpZGRlbj0idHJ1ZSJcbiAgICAgbWF0LXJpcHBsZSBbbWF0UmlwcGxlRGlzYWJsZWRdPSJfZGlzYWJsZVNjcm9sbEJlZm9yZSB8fCBkaXNhYmxlUmlwcGxlIlxuICAgICBbY2xhc3MubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZF09Il9kaXNhYmxlU2Nyb2xsQmVmb3JlIlxuICAgICAoY2xpY2spPSJfaGFuZGxlUGFnaW5hdG9yQ2xpY2soXCdiZWZvcmVcJykiXG4gICAgIChtb3VzZWRvd24pPSJfaGFuZGxlUGFnaW5hdG9yUHJlc3MoXCdiZWZvcmVcJywgJGV2ZW50KSJcbiAgICAgKHRvdWNoZW5kKT0iX3N0b3BJbnRlcnZhbCgpIj5cbiAgPGRpdiBjbGFzcz0ibWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uIj48L2Rpdj5cbjwvZGl2PlxuXG48ZGl2IGNsYXNzPSJtYXQtdGFiLWxpbmstY29udGFpbmVyIiAjdGFiTGlzdENvbnRhaW5lciAoa2V5ZG93bik9Il9oYW5kbGVLZXlkb3duKCRldmVudCkiPlxuICA8ZGl2XG4gICAgY2xhc3M9Im1hdC10YWItbGlzdCJcbiAgICBbY2xhc3MuX21hdC1hbmltYXRpb24tbm9vcGFibGVdPSJfYW5pbWF0aW9uTW9kZSA9PT0gXCdOb29wQW5pbWF0aW9uc1wnIlxuICAgICN0YWJMaXN0XG4gICAgKGNka09ic2VydmVDb250ZW50KT0iX29uQ29udGVudENoYW5nZXMoKSI+XG4gICAgPGRpdiBjbGFzcz0ibWF0LXRhYi1saW5rcyI+XG4gICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgPC9kaXY+XG4gICAgPG1hdC1pbmstYmFyPjwvbWF0LWluay1iYXI+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxkaXYgY2xhc3M9Im1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24gbWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1hZnRlciBtYXQtZWxldmF0aW9uLXo0IlxuICAgICAjbmV4dFBhZ2luYXRvclxuICAgICBhcmlhLWhpZGRlbj0idHJ1ZSJcbiAgICAgbWF0LXJpcHBsZSBbbWF0UmlwcGxlRGlzYWJsZWRdPSJfZGlzYWJsZVNjcm9sbEFmdGVyIHx8IGRpc2FibGVSaXBwbGUiXG4gICAgIFtjbGFzcy5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkXT0iX2Rpc2FibGVTY3JvbGxBZnRlciJcbiAgICAgKG1vdXNlZG93bik9Il9oYW5kbGVQYWdpbmF0b3JQcmVzcyhcJ2FmdGVyXCcsICRldmVudCkiXG4gICAgIChjbGljayk9Il9oYW5kbGVQYWdpbmF0b3JDbGljayhcJ2FmdGVyXCcpIlxuICAgICAodG91Y2hlbmQpPSJfc3RvcEludGVydmFsKCkiPlxuICA8ZGl2IGNsYXNzPSJtYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb24iPjwvZGl2PlxuPC9kaXY+XG4nLGhvc3Q6e2NsYXNzOiJtYXQtdGFiLW5hdi1iYXIgbWF0LXRhYi1oZWFkZXIiLCJbY2xhc3MubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jb250cm9scy1lbmFibGVkXSI6Il9zaG93UGFnaW5hdGlvbkNvbnRyb2xzIiwiW2NsYXNzLm1hdC10YWItaGVhZGVyLXJ0bF0iOiJfZ2V0TGF5b3V0RGlyZWN0aW9uKCkgPT0gJ3J0bCciLCJbY2xhc3MubWF0LXByaW1hcnldIjonY29sb3IgIT09ICJ3YXJuIiAmJiBjb2xvciAhPT0gImFjY2VudCInLCJbY2xhc3MubWF0LWFjY2VudF0iOidjb2xvciA9PT0gImFjY2VudCInLCJbY2xhc3MubWF0LXdhcm5dIjonY29sb3IgPT09ICJ3YXJuIid9LGVuY2Fwc3VsYXRpb246V24uTm9uZSxjaGFuZ2VEZXRlY3Rpb246am4uRGVmYXVsdCxzdHlsZXM6WycubWF0LXRhYi1oZWFkZXJ7ZGlzcGxheTpmbGV4O292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZTtmbGV4LXNocmluazowfS5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uey13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTstbW96LXVzZXItc2VsZWN0Om5vbmU7LW1zLXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZTtwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5Om5vbmU7anVzdGlmeS1jb250ZW50OmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7bWluLXdpZHRoOjMycHg7Y3Vyc29yOnBvaW50ZXI7ei1pbmRleDoyOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudDt0b3VjaC1hY3Rpb246bm9uZX0ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jb250cm9scy1lbmFibGVkIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9ue2Rpc3BsYXk6ZmxleH0ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1iZWZvcmUsLm1hdC10YWItaGVhZGVyLXJ0bCAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1hZnRlcntwYWRkaW5nLWxlZnQ6NHB4fS5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWJlZm9yZSAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uLC5tYXQtdGFiLWhlYWRlci1ydGwgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tYWZ0ZXIgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbnt0cmFuc2Zvcm06cm90YXRlKC0xMzVkZWcpfS5tYXQtdGFiLWhlYWRlci1ydGwgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tYmVmb3JlLC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWFmdGVye3BhZGRpbmctcmlnaHQ6NHB4fS5tYXQtdGFiLWhlYWRlci1ydGwgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tYmVmb3JlIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb24sLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tYWZ0ZXIgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbnt0cmFuc2Zvcm06cm90YXRlKDQ1ZGVnKX0ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9ue2JvcmRlci1zdHlsZTpzb2xpZDtib3JkZXItd2lkdGg6MnB4IDJweCAwIDA7Y29udGVudDoiIjtoZWlnaHQ6OHB4O3dpZHRoOjhweH0ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZHtib3gtc2hhZG93Om5vbmU7Y3Vyc29yOmRlZmF1bHR9Lm1hdC10YWItbGlzdHtmbGV4LWdyb3c6MTtwb3NpdGlvbjpyZWxhdGl2ZTt0cmFuc2l0aW9uOnRyYW5zZm9ybSA1MDBtcyBjdWJpYy1iZXppZXIoMC4zNSwgMCwgMC4yNSwgMSl9Lm1hdC10YWItbGlua3N7ZGlzcGxheTpmbGV4fVttYXQtYWxpZ24tdGFicz1jZW50ZXJdPi5tYXQtdGFiLWxpbmstY29udGFpbmVyIC5tYXQtdGFiLWxpbmtze2p1c3RpZnktY29udGVudDpjZW50ZXJ9W21hdC1hbGlnbi10YWJzPWVuZF0+Lm1hdC10YWItbGluay1jb250YWluZXIgLm1hdC10YWItbGlua3N7anVzdGlmeS1jb250ZW50OmZsZXgtZW5kfS5tYXQtaW5rLWJhcntwb3NpdGlvbjphYnNvbHV0ZTtib3R0b206MDtoZWlnaHQ6MnB4O3RyYW5zaXRpb246NTAwbXMgY3ViaWMtYmV6aWVyKDAuMzUsIDAsIDAuMjUsIDEpfS5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZS5tYXQtaW5rLWJhcnt0cmFuc2l0aW9uOm5vbmU7YW5pbWF0aW9uOm5vbmV9Lm1hdC10YWItZ3JvdXAtaW52ZXJ0ZWQtaGVhZGVyIC5tYXQtaW5rLWJhcntib3R0b206YXV0bzt0b3A6MH0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtaW5rLWJhcntvdXRsaW5lOnNvbGlkIDJweDtoZWlnaHQ6MH0ubWF0LXRhYi1saW5rLWNvbnRhaW5lcntkaXNwbGF5OmZsZXg7ZmxleC1ncm93OjE7b3ZlcmZsb3c6aGlkZGVuO3otaW5kZXg6MX0ubWF0LXRhYi1saW5re2hlaWdodDo0OHB4O3BhZGRpbmc6MCAyNHB4O2N1cnNvcjpwb2ludGVyO2JveC1zaXppbmc6Ym9yZGVyLWJveDtvcGFjaXR5Oi42O21pbi13aWR0aDoxNjBweDt0ZXh0LWFsaWduOmNlbnRlcjtkaXNwbGF5OmlubGluZS1mbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyO3doaXRlLXNwYWNlOm5vd3JhcDt2ZXJ0aWNhbC1hbGlnbjp0b3A7dGV4dC1kZWNvcmF0aW9uOm5vbmU7cG9zaXRpb246cmVsYXRpdmU7b3ZlcmZsb3c6aGlkZGVuOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudH0ubWF0LXRhYi1saW5rOmZvY3Vze291dGxpbmU6bm9uZX0ubWF0LXRhYi1saW5rOmZvY3VzOm5vdCgubWF0LXRhYi1kaXNhYmxlZCl7b3BhY2l0eToxfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC10YWItbGluazpmb2N1c3tvdXRsaW5lOmRvdHRlZCAycHg7b3V0bGluZS1vZmZzZXQ6LTJweH0ubWF0LXRhYi1saW5rLm1hdC10YWItZGlzYWJsZWR7Y3Vyc29yOmRlZmF1bHR9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LXRhYi1saW5rLm1hdC10YWItZGlzYWJsZWR7b3BhY2l0eTouNX0ubWF0LXRhYi1saW5rIC5tYXQtdGFiLWxhYmVsLWNvbnRlbnR7ZGlzcGxheTppbmxpbmUtZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjt3aGl0ZS1zcGFjZTpub3dyYXB9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LXRhYi1saW5re29wYWNpdHk6MX1bbWF0LXN0cmV0Y2gtdGFic10gLm1hdC10YWItbGlua3tmbGV4LWJhc2lzOjA7ZmxleC1ncm93OjF9Lm1hdC10YWItbGluay5tYXQtdGFiLWRpc2FibGVke3BvaW50ZXItZXZlbnRzOm5vbmV9QG1lZGlhKG1heC13aWR0aDogNTk5cHgpey5tYXQtdGFiLWxpbmt7bWluLXdpZHRoOjcycHh9fVxuJ119XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpLaH0se3R5cGU6dkYsZGVjb3JhdG9yczpbe3R5cGU6QnJ9XX0se3R5cGU6bUN9LHt0eXBlOk9ifSx7dHlwZTpRTH0se3R5cGU6Y0h9LHt0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpbY2tdfV19XX0pLHtfaXRlbXM6W3t0eXBlOm9yLGFyZ3M6WyRlKCgoKT0+SWopKSx7ZGVzY2VuZGFudHM6ITB9XX1dLF9pbmtCYXI6W3t0eXBlOmFyLGFyZ3M6W2xqLHtzdGF0aWM6ITB9XX1dLF90YWJMaXN0Q29udGFpbmVyOlt7dHlwZTphcixhcmdzOlsidGFiTGlzdENvbnRhaW5lciIse3N0YXRpYzohMH1dfV0sX3RhYkxpc3Q6W3t0eXBlOmFyLGFyZ3M6WyJ0YWJMaXN0Iix7c3RhdGljOiEwfV19XSxfbmV4dFBhZ2luYXRvcjpbe3R5cGU6YXIsYXJnczpbIm5leHRQYWdpbmF0b3IiXX1dLF9wcmV2aW91c1BhZ2luYXRvcjpbe3R5cGU6YXIsYXJnczpbInByZXZpb3VzUGFnaW5hdG9yIl19XX0pO2NvbnN0IE5qPUZGKEhGKHpGKGNsYXNze30pKSk7Y2xhc3MgemogZXh0ZW5kcyBOantjb25zdHJ1Y3Rvcih0LGUsbixvLGksYSl7c3VwZXIoKSx0aGlzLl90YWJOYXZCYXI9dCx0aGlzLmVsZW1lbnRSZWY9ZSx0aGlzLl9mb2N1c01vbml0b3I9aSx0aGlzLl9pc0FjdGl2ZT0hMSx0aGlzLnJpcHBsZUNvbmZpZz1ufHx7fSx0aGlzLnRhYkluZGV4PXBhcnNlSW50KG8pfHwwLCJOb29wQW5pbWF0aW9ucyI9PT1hJiYodGhpcy5yaXBwbGVDb25maWcuYW5pbWF0aW9uPXtlbnRlckR1cmF0aW9uOjAsZXhpdER1cmF0aW9uOjB9KX1nZXQgYWN0aXZlKCl7cmV0dXJuIHRoaXMuX2lzQWN0aXZlfXNldCBhY3RpdmUodCl7ZUgodCkhPT10aGlzLl9pc0FjdGl2ZSYmKHRoaXMuX2lzQWN0aXZlPXQsdGhpcy5fdGFiTmF2QmFyLnVwZGF0ZUFjdGl2ZUxpbmsoKSl9Z2V0IHJpcHBsZURpc2FibGVkKCl7cmV0dXJuIHRoaXMuZGlzYWJsZWR8fHRoaXMuZGlzYWJsZVJpcHBsZXx8dGhpcy5fdGFiTmF2QmFyLmRpc2FibGVSaXBwbGV8fCEhdGhpcy5yaXBwbGVDb25maWcuZGlzYWJsZWR9Zm9jdXMoKXt0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5mb2N1cygpfW5nQWZ0ZXJWaWV3SW5pdCgpe3RoaXMuX2ZvY3VzTW9uaXRvci5tb25pdG9yKHRoaXMuZWxlbWVudFJlZil9bmdPbkRlc3Ryb3koKXt0aGlzLl9mb2N1c01vbml0b3Iuc3RvcE1vbml0b3JpbmcodGhpcy5lbGVtZW50UmVmKX1faGFuZGxlRm9jdXMoKXt0aGlzLl90YWJOYXZCYXIuZm9jdXNJbmRleD10aGlzLl90YWJOYXZCYXIuX2l0ZW1zLnRvQXJyYXkoKS5pbmRleE9mKHRoaXMpfX16ai7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8emopKGdmKEFqKSxnZihLaCksZ2YocEwsOCksR2EoInRhYmluZGV4IiksZ2YoZkYpLGdmKGNrLDgpKX0semouybVkaXI9aG8oe3R5cGU6emosaW5wdXRzOnthY3RpdmU6ImFjdGl2ZSJ9LGZlYXR1cmVzOltRcF19KSx6ai5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOkFqfSx7dHlwZTpLaH0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltwTF19XX0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOiRhLGFyZ3M6WyJ0YWJpbmRleCJdfV19LHt0eXBlOmZGfSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W2NrXX1dfV0semoucHJvcERlY29yYXRvcnM9e2FjdGl2ZTpbe3R5cGU6Ul99XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYih6aixbe3R5cGU6a199XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6QWp9LHt0eXBlOktofSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W3BMXX1dfSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6JGEsYXJnczpbInRhYmluZGV4Il19XX0se3R5cGU6ZkZ9LHt0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpbY2tdfV19XX0pLHthY3RpdmU6W3t0eXBlOlJffV19KTtjbGFzcyBJaiBleHRlbmRzIHpqe2NvbnN0cnVjdG9yKHQsZSxuLG8saSxhLHIscyl7c3VwZXIodCxlLGksYSxyLHMpLHRoaXMuX3RhYkxpbmtSaXBwbGU9bmV3IGRMKHRoaXMsbixlLG8pLHRoaXMuX3RhYkxpbmtSaXBwbGUuc2V0dXBUcmlnZ2VyRXZlbnRzKGUubmF0aXZlRWxlbWVudCl9bmdPbkRlc3Ryb3koKXtzdXBlci5uZ09uRGVzdHJveSgpLHRoaXMuX3RhYkxpbmtSaXBwbGUuX3JlbW92ZVRyaWdnZXJFdmVudHMoKX19SWouybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fElqKShnZihUaiksZ2YoS2gpLGdmKG1DKSxnZihjSCksZ2YocEwsOCksR2EoInRhYmluZGV4IiksZ2YoZkYpLGdmKGNrLDgpKX0sSWouybVkaXI9aG8oe3R5cGU6SWosc2VsZWN0b3JzOltbIiIsIm1hdC10YWItbGluayIsIiJdLFsiIiwibWF0VGFiTGluayIsIiJdXSxob3N0QXR0cnM6WzEsIm1hdC10YWItbGluayIsIm1hdC1mb2N1cy1pbmRpY2F0b3IiXSxob3N0VmFyczo3LGhvc3RCaW5kaW5nczpmdW5jdGlvbiB0KGUsbil7MSZlJiZSZigiZm9jdXMiLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4uX2hhbmRsZUZvY3VzKCl9KSksMiZlJiYoeW0oImFyaWEtY3VycmVudCIsbi5hY3RpdmU/InBhZ2UiOm51bGwpKCJhcmlhLWRpc2FibGVkIixuLmRpc2FibGVkKSgidGFiSW5kZXgiLG4udGFiSW5kZXgpLGN1KCJtYXQtdGFiLWRpc2FibGVkIixuLmRpc2FibGVkKSgibWF0LXRhYi1sYWJlbC1hY3RpdmUiLG4uYWN0aXZlKSl9LGlucHV0czp7ZGlzYWJsZWQ6ImRpc2FibGVkIixkaXNhYmxlUmlwcGxlOiJkaXNhYmxlUmlwcGxlIix0YWJJbmRleDoidGFiSW5kZXgifSxleHBvcnRBczpbIm1hdFRhYkxpbmsiXSxmZWF0dXJlczpbUXBdfSksSWouY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpUan0se3R5cGU6S2h9LHt0eXBlOm1DfSx7dHlwZTpjSH0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltwTF19XX0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOiRhLGFyZ3M6WyJ0YWJpbmRleCJdfV19LHt0eXBlOmZGfSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W2NrXX1dfV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihJaixbe3R5cGU6a18sYXJnczpbe3NlbGVjdG9yOiJbbWF0LXRhYi1saW5rXSwgW21hdFRhYkxpbmtdIixleHBvcnRBczoibWF0VGFiTGluayIsaW5wdXRzOlsiZGlzYWJsZWQiLCJkaXNhYmxlUmlwcGxlIiwidGFiSW5kZXgiXSxob3N0OntjbGFzczoibWF0LXRhYi1saW5rIG1hdC1mb2N1cy1pbmRpY2F0b3IiLCJbYXR0ci5hcmlhLWN1cnJlbnRdIjonYWN0aXZlID8gInBhZ2UiIDogbnVsbCcsIlthdHRyLmFyaWEtZGlzYWJsZWRdIjoiZGlzYWJsZWQiLCJbYXR0ci50YWJJbmRleF0iOiJ0YWJJbmRleCIsIltjbGFzcy5tYXQtdGFiLWRpc2FibGVkXSI6ImRpc2FibGVkIiwiW2NsYXNzLm1hdC10YWItbGFiZWwtYWN0aXZlXSI6ImFjdGl2ZSIsIihmb2N1cykiOiJfaGFuZGxlRm9jdXMoKSJ9fV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6VGp9LHt0eXBlOktofSx7dHlwZTptQ30se3R5cGU6Y0h9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpbcExdfV19LHt0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTokYSxhcmdzOlsidGFiaW5kZXgiXX1dfSx7dHlwZTpmRn0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltja119XX1dfSksbnVsbCk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjbGFzcyBIant9SGouybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEhqKX0sSGouybVtb2Q9Zm8oe3R5cGU6SGp9KSxIai7JtWluaj1Ebih7aW1wb3J0czpbW3J4LE5GLGhCLGZMLHdILF9GXSxORl19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKEhqLFt7dHlwZTpMXyxhcmdzOlt7aW1wb3J0czpbcngsTkYsaEIsZkwsd0gsX0ZdLGV4cG9ydHM6W05GLFBqLG1qLGdqLFRqLElqLGRqXSxkZWNsYXJhdGlvbnM6W1BqLG1qLGdqLGxqLGtqLFRqLElqLF9qLGJqLEVqLGRqXX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnVvKEhqLHtkZWNsYXJhdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm5bUGosbWosZ2osbGosa2osVGosSWosX2osYmosRWosZGpdfSxpbXBvcnRzOmZ1bmN0aW9uKCl7cmV0dXJuW3J4LE5GLGhCLGZMLHdILF9GXX0sZXhwb3J0czpmdW5jdGlvbigpe3JldHVybltORixQaixtaixnaixUaixJaixkal19fSk7Y29uc3QgRmo9WyJ1bmRlcmxpbmUiXSxMaj1bImNvbm5lY3Rpb25Db250YWluZXIiXSxCaj1bImlucHV0Q29udGFpbmVyIl0sVmo9WyJsYWJlbCJdO2Z1bmN0aW9uIGpqKHQsZSl7MSZ0JiYoeGYoMCksQ2YoMSwiZGl2IiwxNCksdmYoMiwiZGl2IiwxNSksdmYoMywiZGl2IiwxNiksdmYoNCwiZGl2IiwxNyksTWYoKSxDZig1LCJkaXYiLDE4KSx2Zig2LCJkaXYiLDE1KSx2Zig3LCJkaXYiLDE2KSx2Zig4LCJkaXYiLDE3KSxNZigpLE9mKCkpfWZ1bmN0aW9uIFVqKHQsZSl7MSZ0JiYoQ2YoMCwiZGl2IiwxOSksRmYoMSwxKSxNZigpKX1mdW5jdGlvbiBXaih0LGUpe2lmKDEmdCYmKHhmKDApLEZmKDEsMiksQ2YoMiwic3BhbiIpLFB1KDMpLE1mKCksT2YoKSksMiZ0KXtjb25zdCB0PXpmKDIpO0RjKDMpLHd1KHQuX2NvbnRyb2wucGxhY2Vob2xkZXIpfX1mdW5jdGlvbiBHaih0LGUpezEmdCYmRmYoMCwzLFsiKm5nU3dpdGNoQ2FzZSIsInRydWUiXSl9ZnVuY3Rpb24gWWoodCxlKXsxJnQmJihDZigwLCJzcGFuIiwyMyksUHUoMSwiICoiKSxNZigpKX1mdW5jdGlvbiBxaih0LGUpe2lmKDEmdCl7Y29uc3QgdD13ZigpO0NmKDAsImxhYmVsIiwyMCwyMSksUmYoImNka09ic2VydmVDb250ZW50IiwoZnVuY3Rpb24gZSgpe1BpKHQpO3JldHVybiB6ZigpLnVwZGF0ZU91dGxpbmVHYXAoKX0pKSxIbSgyLFdqLDQsMSwibmctY29udGFpbmVyIiwxMiksSG0oMyxHaiwxLDAsIm5nLWNvbnRlbnQiLDEyKSxIbSg0LFlqLDIsMCwic3BhbiIsMjIpLE1mKCl9aWYoMiZ0KXtjb25zdCB0PXpmKCk7Y3UoIm1hdC1lbXB0eSIsdC5fY29udHJvbC5lbXB0eSYmIXQuX3Nob3VsZEFsd2F5c0Zsb2F0KCkpKCJtYXQtZm9ybS1maWVsZC1lbXB0eSIsdC5fY29udHJvbC5lbXB0eSYmIXQuX3Nob3VsZEFsd2F5c0Zsb2F0KCkpKCJtYXQtYWNjZW50IiwiYWNjZW50Ij09dC5jb2xvcikoIm1hdC13YXJuIiwid2FybiI9PXQuY29sb3IpLGJmKCJjZGtPYnNlcnZlQ29udGVudERpc2FibGVkIiwib3V0bGluZSIhPXQuYXBwZWFyYW5jZSkoImlkIix0Ll9sYWJlbElkKSgibmdTd2l0Y2giLHQuX2hhc0xhYmVsKCkpLHltKCJmb3IiLHQuX2NvbnRyb2wuaWQpKCJhcmlhLW93bnMiLHQuX2NvbnRyb2wuaWQpLERjKDIpLGJmKCJuZ1N3aXRjaENhc2UiLCExKSxEYygxKSxiZigibmdTd2l0Y2hDYXNlIiwhMCksRGMoMSksYmYoIm5nSWYiLCF0LmhpZGVSZXF1aXJlZE1hcmtlciYmdC5fY29udHJvbC5yZXF1aXJlZCYmIXQuX2NvbnRyb2wuZGlzYWJsZWQpfX1mdW5jdGlvbiBaaih0LGUpezEmdCYmKENmKDAsImRpdiIsMjQpLEZmKDEsNCksTWYoKSl9ZnVuY3Rpb24gWGoodCxlKXtpZigxJnQmJihDZigwLCJkaXYiLDI1LDI2KSx2ZigyLCJzcGFuIiwyNyksTWYoKSksMiZ0KXtjb25zdCB0PXpmKCk7RGMoMiksY3UoIm1hdC1hY2NlbnQiLCJhY2NlbnQiPT10LmNvbG9yKSgibWF0LXdhcm4iLCJ3YXJuIj09dC5jb2xvcil9fWZ1bmN0aW9uIEtqKHQsZSl7aWYoMSZ0JiYoQ2YoMCwiZGl2IiksRmYoMSw1KSxNZigpKSwyJnQpe2JmKCJAdHJhbnNpdGlvbk1lc3NhZ2VzIix6ZigpLl9zdWJzY3JpcHRBbmltYXRpb25TdGF0ZSl9fWZ1bmN0aW9uIEpqKHQsZSl7aWYoMSZ0JiYoQ2YoMCwiZGl2IiwzMSksUHUoMSksTWYoKSksMiZ0KXtjb25zdCB0PXpmKDIpO2JmKCJpZCIsdC5faGludExhYmVsSWQpLERjKDEpLHd1KHQuaGludExhYmVsKX19ZnVuY3Rpb24gUWoodCxlKXtpZigxJnQmJihDZigwLCJkaXYiLDI4KSxIbSgxLEpqLDIsMiwiZGl2IiwyOSksRmYoMiw2KSx2ZigzLCJkaXYiLDMwKSxGZig0LDcpLE1mKCkpLDImdCl7Y29uc3QgdD16ZigpO2JmKCJAdHJhbnNpdGlvbk1lc3NhZ2VzIix0Ll9zdWJzY3JpcHRBbmltYXRpb25TdGF0ZSksRGMoMSksYmYoIm5nSWYiLHQuaGludExhYmVsKX19Y29uc3QgJGo9WyIqIixbWyIiLCJtYXRQcmVmaXgiLCIiXV0sW1sibWF0LXBsYWNlaG9sZGVyIl1dLFtbIm1hdC1sYWJlbCJdXSxbWyIiLCJtYXRTdWZmaXgiLCIiXV0sW1sibWF0LWVycm9yIl1dLFtbIm1hdC1oaW50IiwzLCJhbGlnbiIsImVuZCJdXSxbWyJtYXQtaGludCIsImFsaWduIiwiZW5kIl1dXTtsZXQgdFU9MDtjb25zdCBlVT1uZXcgZXIoIk1hdEVycm9yIik7Y2xhc3MgblV7Y29uc3RydWN0b3IodCxlKXt0aGlzLmlkPSJtYXQtZXJyb3ItIit0VSsrLHR8fGUubmF0aXZlRWxlbWVudC5zZXRBdHRyaWJ1dGUoImFyaWEtbGl2ZSIsInBvbGl0ZSIpfX1uVS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8blUpKEdhKCJhcmlhLWxpdmUiKSxnZihLaCkpfSxuVS7JtWRpcj1obyh7dHlwZTpuVSxzZWxlY3RvcnM6W1sibWF0LWVycm9yIl1dLGhvc3RBdHRyczpbImFyaWEtYXRvbWljIiwidHJ1ZSIsMSwibWF0LWVycm9yIl0saG9zdFZhcnM6MSxob3N0QmluZGluZ3M6ZnVuY3Rpb24gdChlLG4pezImZSYmeW0oImlkIixuLmlkKX0saW5wdXRzOntpZDoiaWQifSxmZWF0dXJlczpbamgoW3twcm92aWRlOmVVLHVzZUV4aXN0aW5nOm5VfV0pXX0pLG5VLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOiRhLGFyZ3M6WyJhcmlhLWxpdmUiXX1dfSx7dHlwZTpLaH1dLG5VLnByb3BEZWNvcmF0b3JzPXtpZDpbe3R5cGU6Ul99XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihuVSxbe3R5cGU6a18sYXJnczpbe3NlbGVjdG9yOiJtYXQtZXJyb3IiLGhvc3Q6e2NsYXNzOiJtYXQtZXJyb3IiLCJbYXR0ci5pZF0iOiJpZCIsImFyaWEtYXRvbWljIjoidHJ1ZSJ9LHByb3ZpZGVyczpbe3Byb3ZpZGU6ZVUsdXNlRXhpc3Rpbmc6blV9XX1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTokYSxhcmdzOlsiYXJpYS1saXZlIl19XX0se3R5cGU6S2h9XX0pLHtpZDpbe3R5cGU6Ul99XX0pOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY29uc3Qgb1U9e3RyYW5zaXRpb25NZXNzYWdlczp4TygidHJhbnNpdGlvbk1lc3NhZ2VzIixba08oImVudGVyIix3Tyh7b3BhY2l0eToxLHRyYW5zZm9ybToidHJhbnNsYXRlWSgwJSkifSkpLERPKCJ2b2lkID0+IGVudGVyIixbd08oe29wYWNpdHk6MCx0cmFuc2Zvcm06InRyYW5zbGF0ZVkoLTVweCkifSksT08oIjMwMG1zIGN1YmljLWJlemllcigwLjU1LCAwLCAwLjU1LCAwLjIpIildKV0pfTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY2xhc3MgaVV7fWZ1bmN0aW9uIGFVKHQpe3JldHVybiBFcnJvcihgQSBoaW50IHdhcyBhbHJlYWR5IGRlY2xhcmVkIGZvciAnYWxpZ249IiR7dH0iJy5gKX1pVS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8aVUpfSxpVS7JtWRpcj1obyh7dHlwZTppVX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoaVUsW3t0eXBlOmtffV0sbnVsbCxudWxsKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmxldCByVT0wO2NvbnN0IHNVPW5ldyBlcigiTWF0SGludCIpO2NsYXNzIGxVe2NvbnN0cnVjdG9yKCl7dGhpcy5hbGlnbj0ic3RhcnQiLHRoaXMuaWQ9Im1hdC1oaW50LSIrclUrK319bFUuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGxVKX0sbFUuybVkaXI9aG8oe3R5cGU6bFUsc2VsZWN0b3JzOltbIm1hdC1oaW50Il1dLGhvc3RBdHRyczpbMSwibWF0LWhpbnQiXSxob3N0VmFyczo0LGhvc3RCaW5kaW5nczpmdW5jdGlvbiB0KGUsbil7MiZlJiYoeW0oImlkIixuLmlkKSgiYWxpZ24iLG51bGwpLGN1KCJtYXQtZm9ybS1maWVsZC1oaW50LWVuZCIsImVuZCI9PT1uLmFsaWduKSl9LGlucHV0czp7YWxpZ246ImFsaWduIixpZDoiaWQifSxmZWF0dXJlczpbamgoW3twcm92aWRlOnNVLHVzZUV4aXN0aW5nOmxVfV0pXX0pLGxVLnByb3BEZWNvcmF0b3JzPXthbGlnbjpbe3R5cGU6Ul99XSxpZDpbe3R5cGU6Ul99XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihsVSxbe3R5cGU6a18sYXJnczpbe3NlbGVjdG9yOiJtYXQtaGludCIsaG9zdDp7Y2xhc3M6Im1hdC1oaW50IiwiW2NsYXNzLm1hdC1mb3JtLWZpZWxkLWhpbnQtZW5kXSI6J2FsaWduID09PSAiZW5kIicsIlthdHRyLmlkXSI6ImlkIiwiW2F0dHIuYWxpZ25dIjoibnVsbCJ9LHByb3ZpZGVyczpbe3Byb3ZpZGU6c1UsdXNlRXhpc3Rpbmc6bFV9XX1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW119KSx7YWxpZ246W3t0eXBlOlJffV0saWQ6W3t0eXBlOlJffV19KTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNsYXNzIGNVe31jVS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8Y1UpfSxjVS7JtWRpcj1obyh7dHlwZTpjVSxzZWxlY3RvcnM6W1sibWF0LWxhYmVsIl1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihjVSxbe3R5cGU6a18sYXJnczpbe3NlbGVjdG9yOiJtYXQtbGFiZWwifV19XSxudWxsLG51bGwpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3MgZFV7fWRVLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxkVSl9LGRVLsm1ZGlyPWhvKHt0eXBlOmRVLHNlbGVjdG9yczpbWyJtYXQtcGxhY2Vob2xkZXIiXV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKGRVLFt7dHlwZTprXyxhcmdzOlt7c2VsZWN0b3I6Im1hdC1wbGFjZWhvbGRlciJ9XX1dLG51bGwsbnVsbCk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjb25zdCBwVT1uZXcgZXIoIk1hdFByZWZpeCIpO2NsYXNzIG1Ve31tVS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8bVUpfSxtVS7JtWRpcj1obyh7dHlwZTptVSxzZWxlY3RvcnM6W1siIiwibWF0UHJlZml4IiwiIl1dLGZlYXR1cmVzOltqaChbe3Byb3ZpZGU6cFUsdXNlRXhpc3Rpbmc6bVV9XSldfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihtVSxbe3R5cGU6a18sYXJnczpbe3NlbGVjdG9yOiJbbWF0UHJlZml4XSIscHJvdmlkZXJzOlt7cHJvdmlkZTpwVSx1c2VFeGlzdGluZzptVX1dfV19XSxudWxsLG51bGwpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY29uc3QgZlU9bmV3IGVyKCJNYXRTdWZmaXgiKTtjbGFzcyB1VXt9dVUuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHVVKX0sdVUuybVkaXI9aG8oe3R5cGU6dVUsc2VsZWN0b3JzOltbIiIsIm1hdFN1ZmZpeCIsIiJdXSxmZWF0dXJlczpbamgoW3twcm92aWRlOmZVLHVzZUV4aXN0aW5nOnVVfV0pXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIodVUsW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3RvcjoiW21hdFN1ZmZpeF0iLHByb3ZpZGVyczpbe3Byb3ZpZGU6ZlUsdXNlRXhpc3Rpbmc6dVV9XX1dfV0sbnVsbCxudWxsKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmxldCBnVT0wO2NvbnN0IGhVPUlGKGNsYXNze2NvbnN0cnVjdG9yKHQpe3RoaXMuX2VsZW1lbnRSZWY9dH19LCJwcmltYXJ5IiksYlU9bmV3IGVyKCJNQVRfRk9STV9GSUVMRF9ERUZBVUxUX09QVElPTlMiKSx5VT1uZXcgZXIoIk1hdEZvcm1GaWVsZCIpO2NsYXNzIF9VIGV4dGVuZHMgaFV7Y29uc3RydWN0b3IodCxlLG4sbyxpLGEscixzKXtzdXBlcih0KSx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZj1lLHRoaXMuX2Rpcj1vLHRoaXMuX2RlZmF1bHRzPWksdGhpcy5fcGxhdGZvcm09YSx0aGlzLl9uZ1pvbmU9cix0aGlzLl9vdXRsaW5lR2FwQ2FsY3VsYXRpb25OZWVkZWRJbW1lZGlhdGVseT0hMSx0aGlzLl9vdXRsaW5lR2FwQ2FsY3VsYXRpb25OZWVkZWRPblN0YWJsZT0hMSx0aGlzLl9kZXN0cm95ZWQ9bmV3IEIsdGhpcy5fc2hvd0Fsd2F5c0FuaW1hdGU9ITEsdGhpcy5fc3Vic2NyaXB0QW5pbWF0aW9uU3RhdGU9IiIsdGhpcy5faGludExhYmVsPSIiLHRoaXMuX2hpbnRMYWJlbElkPSJtYXQtaGludC0iK2dVKyssdGhpcy5fbGFiZWxJZD0ibWF0LWZvcm0tZmllbGQtbGFiZWwtIitnVSsrLHRoaXMuZmxvYXRMYWJlbD10aGlzLl9nZXREZWZhdWx0RmxvYXRMYWJlbFN0YXRlKCksdGhpcy5fYW5pbWF0aW9uc0VuYWJsZWQ9Ik5vb3BBbmltYXRpb25zIiE9PXMsdGhpcy5hcHBlYXJhbmNlPWkmJmkuYXBwZWFyYW5jZT9pLmFwcGVhcmFuY2U6ImxlZ2FjeSIsdGhpcy5faGlkZVJlcXVpcmVkTWFya2VyPSEoIWl8fG51bGw9PWkuaGlkZVJlcXVpcmVkTWFya2VyKSYmaS5oaWRlUmVxdWlyZWRNYXJrZXJ9Z2V0IGFwcGVhcmFuY2UoKXtyZXR1cm4gdGhpcy5fYXBwZWFyYW5jZX1zZXQgYXBwZWFyYW5jZSh0KXtjb25zdCBlPXRoaXMuX2FwcGVhcmFuY2U7dGhpcy5fYXBwZWFyYW5jZT10fHx0aGlzLl9kZWZhdWx0cyYmdGhpcy5fZGVmYXVsdHMuYXBwZWFyYW5jZXx8ImxlZ2FjeSIsIm91dGxpbmUiPT09dGhpcy5fYXBwZWFyYW5jZSYmZSE9PXQmJih0aGlzLl9vdXRsaW5lR2FwQ2FsY3VsYXRpb25OZWVkZWRPblN0YWJsZT0hMCl9Z2V0IGhpZGVSZXF1aXJlZE1hcmtlcigpe3JldHVybiB0aGlzLl9oaWRlUmVxdWlyZWRNYXJrZXJ9c2V0IGhpZGVSZXF1aXJlZE1hcmtlcih0KXt0aGlzLl9oaWRlUmVxdWlyZWRNYXJrZXI9ZUgodCl9X3Nob3VsZEFsd2F5c0Zsb2F0KCl7cmV0dXJuImFsd2F5cyI9PT10aGlzLmZsb2F0TGFiZWwmJiF0aGlzLl9zaG93QWx3YXlzQW5pbWF0ZX1fY2FuTGFiZWxGbG9hdCgpe3JldHVybiJuZXZlciIhPT10aGlzLmZsb2F0TGFiZWx9Z2V0IGhpbnRMYWJlbCgpe3JldHVybiB0aGlzLl9oaW50TGFiZWx9c2V0IGhpbnRMYWJlbCh0KXt0aGlzLl9oaW50TGFiZWw9dCx0aGlzLl9wcm9jZXNzSGludHMoKX1nZXQgZmxvYXRMYWJlbCgpe3JldHVybiJsZWdhY3kiIT09dGhpcy5hcHBlYXJhbmNlJiYibmV2ZXIiPT09dGhpcy5fZmxvYXRMYWJlbD8iYXV0byI6dGhpcy5fZmxvYXRMYWJlbH1zZXQgZmxvYXRMYWJlbCh0KXt0IT09dGhpcy5fZmxvYXRMYWJlbCYmKHRoaXMuX2Zsb2F0TGFiZWw9dHx8dGhpcy5fZ2V0RGVmYXVsdEZsb2F0TGFiZWxTdGF0ZSgpLHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpKX1nZXQgX2NvbnRyb2woKXtyZXR1cm4gdGhpcy5fZXhwbGljaXRGb3JtRmllbGRDb250cm9sfHx0aGlzLl9jb250cm9sTm9uU3RhdGljfHx0aGlzLl9jb250cm9sU3RhdGljfXNldCBfY29udHJvbCh0KXt0aGlzLl9leHBsaWNpdEZvcm1GaWVsZENvbnRyb2w9dH1nZXRMYWJlbElkKCl7cmV0dXJuIHRoaXMuX2hhc0Zsb2F0aW5nTGFiZWwoKT90aGlzLl9sYWJlbElkOm51bGx9Z2V0Q29ubmVjdGVkT3ZlcmxheU9yaWdpbigpe3JldHVybiB0aGlzLl9jb25uZWN0aW9uQ29udGFpbmVyUmVmfHx0aGlzLl9lbGVtZW50UmVmfW5nQWZ0ZXJDb250ZW50SW5pdCgpe3RoaXMuX3ZhbGlkYXRlQ29udHJvbENoaWxkKCk7Y29uc3QgdD10aGlzLl9jb250cm9sO3QuY29udHJvbFR5cGUmJnRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QuYWRkKGBtYXQtZm9ybS1maWVsZC10eXBlLSR7dC5jb250cm9sVHlwZX1gKSx0LnN0YXRlQ2hhbmdlcy5waXBlKEJlKG51bGwpKS5zdWJzY3JpYmUoKCgpPT57dGhpcy5fdmFsaWRhdGVQbGFjZWhvbGRlcnMoKSx0aGlzLl9zeW5jRGVzY3JpYmVkQnlJZHMoKSx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKX0pKSx0Lm5nQ29udHJvbCYmdC5uZ0NvbnRyb2wudmFsdWVDaGFuZ2VzJiZ0Lm5nQ29udHJvbC52YWx1ZUNoYW5nZXMucGlwZShqZSh0aGlzLl9kZXN0cm95ZWQpKS5zdWJzY3JpYmUoKCgpPT50aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKSkpLHRoaXMuX25nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKCk9Pnt0aGlzLl9uZ1pvbmUub25TdGFibGUucGlwZShqZSh0aGlzLl9kZXN0cm95ZWQpKS5zdWJzY3JpYmUoKCgpPT57dGhpcy5fb3V0bGluZUdhcENhbGN1bGF0aW9uTmVlZGVkT25TdGFibGUmJnRoaXMudXBkYXRlT3V0bGluZUdhcCgpfSkpfSkpLHBlKHRoaXMuX3ByZWZpeENoaWxkcmVuLmNoYW5nZXMsdGhpcy5fc3VmZml4Q2hpbGRyZW4uY2hhbmdlcykuc3Vic2NyaWJlKCgoKT0+e3RoaXMuX291dGxpbmVHYXBDYWxjdWxhdGlvbk5lZWRlZE9uU3RhYmxlPSEwLHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpfSkpLHRoaXMuX2hpbnRDaGlsZHJlbi5jaGFuZ2VzLnBpcGUoQmUobnVsbCkpLnN1YnNjcmliZSgoKCk9Pnt0aGlzLl9wcm9jZXNzSGludHMoKSx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKX0pKSx0aGlzLl9lcnJvckNoaWxkcmVuLmNoYW5nZXMucGlwZShCZShudWxsKSkuc3Vic2NyaWJlKCgoKT0+e3RoaXMuX3N5bmNEZXNjcmliZWRCeUlkcygpLHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpfSkpLHRoaXMuX2RpciYmdGhpcy5fZGlyLmNoYW5nZS5waXBlKGplKHRoaXMuX2Rlc3Ryb3llZCkpLnN1YnNjcmliZSgoKCk9PnsiZnVuY3Rpb24iPT10eXBlb2YgcmVxdWVzdEFuaW1hdGlvbkZyYW1lP3RoaXMuX25nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKCk9PntyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCgpPT50aGlzLnVwZGF0ZU91dGxpbmVHYXAoKSkpfSkpOnRoaXMudXBkYXRlT3V0bGluZUdhcCgpfSkpfW5nQWZ0ZXJDb250ZW50Q2hlY2tlZCgpe3RoaXMuX3ZhbGlkYXRlQ29udHJvbENoaWxkKCksdGhpcy5fb3V0bGluZUdhcENhbGN1bGF0aW9uTmVlZGVkSW1tZWRpYXRlbHkmJnRoaXMudXBkYXRlT3V0bGluZUdhcCgpfW5nQWZ0ZXJWaWV3SW5pdCgpe3RoaXMuX3N1YnNjcmlwdEFuaW1hdGlvblN0YXRlPSJlbnRlciIsdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpfW5nT25EZXN0cm95KCl7dGhpcy5fZGVzdHJveWVkLm5leHQoKSx0aGlzLl9kZXN0cm95ZWQuY29tcGxldGUoKX1fc2hvdWxkRm9yd2FyZCh0KXtjb25zdCBlPXRoaXMuX2NvbnRyb2w/dGhpcy5fY29udHJvbC5uZ0NvbnRyb2w6bnVsbDtyZXR1cm4gZSYmZVt0XX1faGFzUGxhY2Vob2xkZXIoKXtyZXR1cm4hISh0aGlzLl9jb250cm9sJiZ0aGlzLl9jb250cm9sLnBsYWNlaG9sZGVyfHx0aGlzLl9wbGFjZWhvbGRlckNoaWxkKX1faGFzTGFiZWwoKXtyZXR1cm4hKCF0aGlzLl9sYWJlbENoaWxkTm9uU3RhdGljJiYhdGhpcy5fbGFiZWxDaGlsZFN0YXRpYyl9X3Nob3VsZExhYmVsRmxvYXQoKXtyZXR1cm4gdGhpcy5fY2FuTGFiZWxGbG9hdCgpJiYodGhpcy5fY29udHJvbCYmdGhpcy5fY29udHJvbC5zaG91bGRMYWJlbEZsb2F0fHx0aGlzLl9zaG91bGRBbHdheXNGbG9hdCgpKX1faGlkZUNvbnRyb2xQbGFjZWhvbGRlcigpe3JldHVybiJsZWdhY3kiPT09dGhpcy5hcHBlYXJhbmNlJiYhdGhpcy5faGFzTGFiZWwoKXx8dGhpcy5faGFzTGFiZWwoKSYmIXRoaXMuX3Nob3VsZExhYmVsRmxvYXQoKX1faGFzRmxvYXRpbmdMYWJlbCgpe3JldHVybiB0aGlzLl9oYXNMYWJlbCgpfHwibGVnYWN5Ij09PXRoaXMuYXBwZWFyYW5jZSYmdGhpcy5faGFzUGxhY2Vob2xkZXIoKX1fZ2V0RGlzcGxheWVkTWVzc2FnZXMoKXtyZXR1cm4gdGhpcy5fZXJyb3JDaGlsZHJlbiYmdGhpcy5fZXJyb3JDaGlsZHJlbi5sZW5ndGg+MCYmdGhpcy5fY29udHJvbC5lcnJvclN0YXRlPyJlcnJvciI6ImhpbnQifV9hbmltYXRlQW5kTG9ja0xhYmVsKCl7dGhpcy5faGFzRmxvYXRpbmdMYWJlbCgpJiZ0aGlzLl9jYW5MYWJlbEZsb2F0KCkmJih0aGlzLl9hbmltYXRpb25zRW5hYmxlZCYmdGhpcy5fbGFiZWwmJih0aGlzLl9zaG93QWx3YXlzQW5pbWF0ZT0hMCxsZSh0aGlzLl9sYWJlbC5uYXRpdmVFbGVtZW50LCJ0cmFuc2l0aW9uZW5kIikucGlwZSh2ZSgxKSkuc3Vic2NyaWJlKCgoKT0+e3RoaXMuX3Nob3dBbHdheXNBbmltYXRlPSExfSkpKSx0aGlzLmZsb2F0TGFiZWw9ImFsd2F5cyIsdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCkpfV92YWxpZGF0ZVBsYWNlaG9sZGVycygpe2lmKHRoaXMuX2NvbnRyb2wucGxhY2Vob2xkZXImJnRoaXMuX3BsYWNlaG9sZGVyQ2hpbGQmJigidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSkKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCnRocm93KGZ1bmN0aW9uIHQoKXtyZXR1cm4gRXJyb3IoIlBsYWNlaG9sZGVyIGF0dHJpYnV0ZSBhbmQgY2hpbGQgZWxlbWVudCB3ZXJlIGJvdGggc3BlY2lmaWVkLiIpfSkoKX1fcHJvY2Vzc0hpbnRzKCl7dGhpcy5fdmFsaWRhdGVIaW50cygpLHRoaXMuX3N5bmNEZXNjcmliZWRCeUlkcygpfV92YWxpZGF0ZUhpbnRzKCl7aWYodGhpcy5faGludENoaWxkcmVuJiYoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkpe2xldCB0LGU7dGhpcy5faGludENoaWxkcmVuLmZvckVhY2goKG49PntpZigic3RhcnQiPT09bi5hbGlnbil7aWYodHx8dGhpcy5oaW50TGFiZWwpdGhyb3cgYVUoInN0YXJ0Iik7dD1ufWVsc2UgaWYoImVuZCI9PT1uLmFsaWduKXtpZihlKXRocm93IGFVKCJlbmQiKTtlPW59fSkpfX1fZ2V0RGVmYXVsdEZsb2F0TGFiZWxTdGF0ZSgpe3JldHVybiB0aGlzLl9kZWZhdWx0cyYmdGhpcy5fZGVmYXVsdHMuZmxvYXRMYWJlbHx8ImF1dG8ifV9zeW5jRGVzY3JpYmVkQnlJZHMoKXtpZih0aGlzLl9jb250cm9sKXtsZXQgdD1bXTtpZih0aGlzLl9jb250cm9sLnVzZXJBcmlhRGVzY3JpYmVkQnkmJiJzdHJpbmciPT10eXBlb2YgdGhpcy5fY29udHJvbC51c2VyQXJpYURlc2NyaWJlZEJ5JiZ0LnB1c2goLi4udGhpcy5fY29udHJvbC51c2VyQXJpYURlc2NyaWJlZEJ5LnNwbGl0KCIgIikpLCJoaW50Ij09PXRoaXMuX2dldERpc3BsYXllZE1lc3NhZ2VzKCkpe2NvbnN0IGU9dGhpcy5faGludENoaWxkcmVuP3RoaXMuX2hpbnRDaGlsZHJlbi5maW5kKCh0PT4ic3RhcnQiPT09dC5hbGlnbikpOm51bGwsbj10aGlzLl9oaW50Q2hpbGRyZW4/dGhpcy5faGludENoaWxkcmVuLmZpbmQoKHQ9PiJlbmQiPT09dC5hbGlnbikpOm51bGw7ZT90LnB1c2goZS5pZCk6dGhpcy5faGludExhYmVsJiZ0LnB1c2godGhpcy5faGludExhYmVsSWQpLG4mJnQucHVzaChuLmlkKX1lbHNlIHRoaXMuX2Vycm9yQ2hpbGRyZW4mJnQucHVzaCguLi50aGlzLl9lcnJvckNoaWxkcmVuLm1hcCgodD0+dC5pZCkpKTt0aGlzLl9jb250cm9sLnNldERlc2NyaWJlZEJ5SWRzKHQpfX1fdmFsaWRhdGVDb250cm9sQ2hpbGQoKXtpZighdGhpcy5fY29udHJvbCYmKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpKXRocm93KGZ1bmN0aW9uIHQoKXtyZXR1cm4gRXJyb3IoIm1hdC1mb3JtLWZpZWxkIG11c3QgY29udGFpbiBhIE1hdEZvcm1GaWVsZENvbnRyb2wuIil9KSgpfXVwZGF0ZU91dGxpbmVHYXAoKXtjb25zdCB0PXRoaXMuX2xhYmVsP3RoaXMuX2xhYmVsLm5hdGl2ZUVsZW1lbnQ6bnVsbDtpZigib3V0bGluZSIhPT10aGlzLmFwcGVhcmFuY2V8fCF0fHwhdC5jaGlsZHJlbi5sZW5ndGh8fCF0LnRleHRDb250ZW50LnRyaW0oKSlyZXR1cm47aWYoIXRoaXMuX3BsYXRmb3JtLmlzQnJvd3NlcilyZXR1cm47aWYoIXRoaXMuX2lzQXR0YWNoZWRUb0RPTSgpKXJldHVybiB2b2lkKHRoaXMuX291dGxpbmVHYXBDYWxjdWxhdGlvbk5lZWRlZEltbWVkaWF0ZWx5PSEwKTtsZXQgZT0wLG49MDtjb25zdCBvPXRoaXMuX2Nvbm5lY3Rpb25Db250YWluZXJSZWYubmF0aXZlRWxlbWVudCxpPW8ucXVlcnlTZWxlY3RvckFsbCgiLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtc3RhcnQiKSxhPW8ucXVlcnlTZWxlY3RvckFsbCgiLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtZ2FwIik7aWYodGhpcy5fbGFiZWwmJnRoaXMuX2xhYmVsLm5hdGl2ZUVsZW1lbnQuY2hpbGRyZW4ubGVuZ3RoKXtjb25zdCBpPW8uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7aWYoMD09PWkud2lkdGgmJjA9PT1pLmhlaWdodClyZXR1cm4gdGhpcy5fb3V0bGluZUdhcENhbGN1bGF0aW9uTmVlZGVkT25TdGFibGU9ITAsdm9pZCh0aGlzLl9vdXRsaW5lR2FwQ2FsY3VsYXRpb25OZWVkZWRJbW1lZGlhdGVseT0hMSk7Y29uc3QgYT10aGlzLl9nZXRTdGFydEVuZChpKSxyPXQuY2hpbGRyZW4scz10aGlzLl9nZXRTdGFydEVuZChyWzBdLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKTtsZXQgbD0wO2ZvcihsZXQgdD0wO3Q8ci5sZW5ndGg7dCsrKWwrPXJbdF0ub2Zmc2V0V2lkdGg7ZT1NYXRoLmFicyhzLWEpLTUsbj1sPjA/Ljc1KmwrMTA6MH1mb3IobGV0IHQ9MDt0PGkubGVuZ3RoO3QrKylpW3RdLnN0eWxlLndpZHRoPWAke2V9cHhgO2ZvcihsZXQgdD0wO3Q8YS5sZW5ndGg7dCsrKWFbdF0uc3R5bGUud2lkdGg9YCR7bn1weGA7dGhpcy5fb3V0bGluZUdhcENhbGN1bGF0aW9uTmVlZGVkT25TdGFibGU9dGhpcy5fb3V0bGluZUdhcENhbGN1bGF0aW9uTmVlZGVkSW1tZWRpYXRlbHk9ITF9X2dldFN0YXJ0RW5kKHQpe3JldHVybiB0aGlzLl9kaXImJiJydGwiPT09dGhpcy5fZGlyLnZhbHVlP3QucmlnaHQ6dC5sZWZ0fV9pc0F0dGFjaGVkVG9ET00oKXtjb25zdCB0PXRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtpZih0LmdldFJvb3ROb2RlKXtjb25zdCBlPXQuZ2V0Um9vdE5vZGUoKTtyZXR1cm4gZSYmZSE9PXR9cmV0dXJuIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jb250YWlucyh0KX19X1UuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fF9VKShnZihLaCksZ2YoT2IpLGdmKEtoKSxnZih2Riw4KSxnZihiVSw4KSxnZihjSCksZ2YobUMpLGdmKGNrLDgpKX0sX1UuybVjbXA9c28oe3R5cGU6X1Usc2VsZWN0b3JzOltbIm1hdC1mb3JtLWZpZWxkIl1dLGNvbnRlbnRRdWVyaWVzOmZ1bmN0aW9uIHQoZSxuLG8pe2lmKDEmZSYmKGp5KG8saVUsNSksankobyxpVSw3KSxqeShvLGNVLDUpLGp5KG8sY1UsNyksankobyxkVSw1KSxqeShvLGVVLDUpLGp5KG8sc1UsNSksankobyxwVSw1KSxqeShvLGZVLDUpKSwyJmUpe2xldCB0O0J5KHQ9VXkoKSkmJihuLl9jb250cm9sTm9uU3RhdGljPXQuZmlyc3QpLEJ5KHQ9VXkoKSkmJihuLl9jb250cm9sU3RhdGljPXQuZmlyc3QpLEJ5KHQ9VXkoKSkmJihuLl9sYWJlbENoaWxkTm9uU3RhdGljPXQuZmlyc3QpLEJ5KHQ9VXkoKSkmJihuLl9sYWJlbENoaWxkU3RhdGljPXQuZmlyc3QpLEJ5KHQ9VXkoKSkmJihuLl9wbGFjZWhvbGRlckNoaWxkPXQuZmlyc3QpLEJ5KHQ9VXkoKSkmJihuLl9lcnJvckNoaWxkcmVuPXQpLEJ5KHQ9VXkoKSkmJihuLl9oaW50Q2hpbGRyZW49dCksQnkodD1VeSgpKSYmKG4uX3ByZWZpeENoaWxkcmVuPXQpLEJ5KHQ9VXkoKSkmJihuLl9zdWZmaXhDaGlsZHJlbj10KX19LHZpZXdRdWVyeTpmdW5jdGlvbiB0KGUsbil7aWYoMSZlJiYoVnkoRmosNSksVnkoTGosNyksVnkoQmosNSksVnkoVmosNSkpLDImZSl7bGV0IHQ7QnkodD1VeSgpKSYmKG4udW5kZXJsaW5lUmVmPXQuZmlyc3QpLEJ5KHQ9VXkoKSkmJihuLl9jb25uZWN0aW9uQ29udGFpbmVyUmVmPXQuZmlyc3QpLEJ5KHQ9VXkoKSkmJihuLl9pbnB1dENvbnRhaW5lclJlZj10LmZpcnN0KSxCeSh0PVV5KCkpJiYobi5fbGFiZWw9dC5maXJzdCl9fSxob3N0QXR0cnM6WzEsIm1hdC1mb3JtLWZpZWxkIl0saG9zdFZhcnM6NDAsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQoZSxuKXsyJmUmJmN1KCJtYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLXN0YW5kYXJkIiwic3RhbmRhcmQiPT1uLmFwcGVhcmFuY2UpKCJtYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwiLCJmaWxsIj09bi5hcHBlYXJhbmNlKSgibWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lIiwib3V0bGluZSI9PW4uYXBwZWFyYW5jZSkoIm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5IiwibGVnYWN5Ij09bi5hcHBlYXJhbmNlKSgibWF0LWZvcm0tZmllbGQtaW52YWxpZCIsbi5fY29udHJvbC5lcnJvclN0YXRlKSgibWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0IixuLl9jYW5MYWJlbEZsb2F0KCkpKCJtYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXQiLG4uX3Nob3VsZExhYmVsRmxvYXQoKSkoIm1hdC1mb3JtLWZpZWxkLWhhcy1sYWJlbCIsbi5faGFzRmxvYXRpbmdMYWJlbCgpKSgibWF0LWZvcm0tZmllbGQtaGlkZS1wbGFjZWhvbGRlciIsbi5faGlkZUNvbnRyb2xQbGFjZWhvbGRlcigpKSgibWF0LWZvcm0tZmllbGQtZGlzYWJsZWQiLG4uX2NvbnRyb2wuZGlzYWJsZWQpKCJtYXQtZm9ybS1maWVsZC1hdXRvZmlsbGVkIixuLl9jb250cm9sLmF1dG9maWxsZWQpKCJtYXQtZm9jdXNlZCIsbi5fY29udHJvbC5mb2N1c2VkKSgibmctdW50b3VjaGVkIixuLl9zaG91bGRGb3J3YXJkKCJ1bnRvdWNoZWQiKSkoIm5nLXRvdWNoZWQiLG4uX3Nob3VsZEZvcndhcmQoInRvdWNoZWQiKSkoIm5nLXByaXN0aW5lIixuLl9zaG91bGRGb3J3YXJkKCJwcmlzdGluZSIpKSgibmctZGlydHkiLG4uX3Nob3VsZEZvcndhcmQoImRpcnR5IikpKCJuZy12YWxpZCIsbi5fc2hvdWxkRm9yd2FyZCgidmFsaWQiKSkoIm5nLWludmFsaWQiLG4uX3Nob3VsZEZvcndhcmQoImludmFsaWQiKSkoIm5nLXBlbmRpbmciLG4uX3Nob3VsZEZvcndhcmQoInBlbmRpbmciKSkoIl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlIiwhbi5fYW5pbWF0aW9uc0VuYWJsZWQpfSxpbnB1dHM6e2NvbG9yOiJjb2xvciIsZmxvYXRMYWJlbDoiZmxvYXRMYWJlbCIsYXBwZWFyYW5jZToiYXBwZWFyYW5jZSIsaGlkZVJlcXVpcmVkTWFya2VyOiJoaWRlUmVxdWlyZWRNYXJrZXIiLGhpbnRMYWJlbDoiaGludExhYmVsIn0sZXhwb3J0QXM6WyJtYXRGb3JtRmllbGQiXSxmZWF0dXJlczpbamgoW3twcm92aWRlOnlVLHVzZUV4aXN0aW5nOl9VfV0pLFFwXSxuZ0NvbnRlbnRTZWxlY3RvcnM6WyIqIiwiW21hdFByZWZpeF0iLCJtYXQtcGxhY2Vob2xkZXIiLCJtYXQtbGFiZWwiLCJbbWF0U3VmZml4XSIsIm1hdC1lcnJvciIsIm1hdC1oaW50Om5vdChbYWxpZ249J2VuZCddKSIsIm1hdC1oaW50W2FsaWduPSdlbmQnXSJdLGRlY2xzOjE1LHZhcnM6OCxjb25zdHM6W1sxLCJtYXQtZm9ybS1maWVsZC13cmFwcGVyIl0sWzEsIm1hdC1mb3JtLWZpZWxkLWZsZXgiLDMsImNsaWNrIl0sWyJjb25uZWN0aW9uQ29udGFpbmVyIiwiIl0sWzQsIm5nSWYiXSxbImNsYXNzIiwibWF0LWZvcm0tZmllbGQtcHJlZml4Iiw0LCJuZ0lmIl0sWzEsIm1hdC1mb3JtLWZpZWxkLWluZml4Il0sWyJpbnB1dENvbnRhaW5lciIsIiJdLFsxLCJtYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyIl0sWyJjbGFzcyIsIm1hdC1mb3JtLWZpZWxkLWxhYmVsIiwzLCJjZGtPYnNlcnZlQ29udGVudERpc2FibGVkIiwiaWQiLCJtYXQtZW1wdHkiLCJtYXQtZm9ybS1maWVsZC1lbXB0eSIsIm1hdC1hY2NlbnQiLCJtYXQtd2FybiIsIm5nU3dpdGNoIiwiY2RrT2JzZXJ2ZUNvbnRlbnQiLDQsIm5nSWYiXSxbImNsYXNzIiwibWF0LWZvcm0tZmllbGQtc3VmZml4Iiw0LCJuZ0lmIl0sWyJjbGFzcyIsIm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZSIsNCwibmdJZiJdLFsxLCJtYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlciIsMywibmdTd2l0Y2giXSxbNCwibmdTd2l0Y2hDYXNlIl0sWyJjbGFzcyIsIm1hdC1mb3JtLWZpZWxkLWhpbnQtd3JhcHBlciIsNCwibmdTd2l0Y2hDYXNlIl0sWzEsIm1hdC1mb3JtLWZpZWxkLW91dGxpbmUiXSxbMSwibWF0LWZvcm0tZmllbGQtb3V0bGluZS1zdGFydCJdLFsxLCJtYXQtZm9ybS1maWVsZC1vdXRsaW5lLWdhcCJdLFsxLCJtYXQtZm9ybS1maWVsZC1vdXRsaW5lLWVuZCJdLFsxLCJtYXQtZm9ybS1maWVsZC1vdXRsaW5lIiwibWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGljayJdLFsxLCJtYXQtZm9ybS1maWVsZC1wcmVmaXgiXSxbMSwibWF0LWZvcm0tZmllbGQtbGFiZWwiLDMsImNka09ic2VydmVDb250ZW50RGlzYWJsZWQiLCJpZCIsIm5nU3dpdGNoIiwiY2RrT2JzZXJ2ZUNvbnRlbnQiXSxbImxhYmVsIiwiIl0sWyJjbGFzcyIsIm1hdC1wbGFjZWhvbGRlci1yZXF1aXJlZCBtYXQtZm9ybS1maWVsZC1yZXF1aXJlZC1tYXJrZXIiLCJhcmlhLWhpZGRlbiIsInRydWUiLDQsIm5nSWYiXSxbImFyaWEtaGlkZGVuIiwidHJ1ZSIsMSwibWF0LXBsYWNlaG9sZGVyLXJlcXVpcmVkIiwibWF0LWZvcm0tZmllbGQtcmVxdWlyZWQtbWFya2VyIl0sWzEsIm1hdC1mb3JtLWZpZWxkLXN1ZmZpeCJdLFsxLCJtYXQtZm9ybS1maWVsZC11bmRlcmxpbmUiXSxbInVuZGVybGluZSIsIiJdLFsxLCJtYXQtZm9ybS1maWVsZC1yaXBwbGUiXSxbMSwibWF0LWZvcm0tZmllbGQtaGludC13cmFwcGVyIl0sWyJjbGFzcyIsIm1hdC1oaW50IiwzLCJpZCIsNCwibmdJZiJdLFsxLCJtYXQtZm9ybS1maWVsZC1oaW50LXNwYWNlciJdLFsxLCJtYXQtaGludCIsMywiaWQiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKEhmKCRqKSxDZigwLCJkaXYiLDApLENmKDEsImRpdiIsMSwyKSxSZigiY2xpY2siLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLl9jb250cm9sLm9uQ29udGFpbmVyQ2xpY2smJm4uX2NvbnRyb2wub25Db250YWluZXJDbGljayhlKX0pKSxIbSgzLGpqLDksMCwibmctY29udGFpbmVyIiwzKSxIbSg0LFVqLDIsMCwiZGl2Iiw0KSxDZig1LCJkaXYiLDUsNiksRmYoNyksQ2YoOCwic3BhbiIsNyksSG0oOSxxaiw1LDE2LCJsYWJlbCIsOCksTWYoKSxNZigpLEhtKDEwLFpqLDIsMCwiZGl2Iiw5KSxNZigpLEhtKDExLFhqLDMsNCwiZGl2IiwxMCksQ2YoMTIsImRpdiIsMTEpLEhtKDEzLEtqLDIsMSwiZGl2IiwxMiksSG0oMTQsUWosNSwyLCJkaXYiLDEzKSxNZigpLE1mKCkpLDImZSYmKERjKDMpLGJmKCJuZ0lmIiwib3V0bGluZSI9PW4uYXBwZWFyYW5jZSksRGMoMSksYmYoIm5nSWYiLG4uX3ByZWZpeENoaWxkcmVuLmxlbmd0aCksRGMoNSksYmYoIm5nSWYiLG4uX2hhc0Zsb2F0aW5nTGFiZWwoKSksRGMoMSksYmYoIm5nSWYiLG4uX3N1ZmZpeENoaWxkcmVuLmxlbmd0aCksRGMoMSksYmYoIm5nSWYiLCJvdXRsaW5lIiE9bi5hcHBlYXJhbmNlKSxEYygxKSxiZigibmdTd2l0Y2giLG4uX2dldERpc3BsYXllZE1lc3NhZ2VzKCkpLERjKDEpLGJmKCJuZ1N3aXRjaENhc2UiLCJlcnJvciIpLERjKDEpLGJmKCJuZ1N3aXRjaENhc2UiLCJoaW50IikpfSxkaXJlY3RpdmVzOltQdixEdixSdixQSF0sc3R5bGVzOlsiLm1hdC1mb3JtLWZpZWxke2Rpc3BsYXk6aW5saW5lLWJsb2NrO3Bvc2l0aW9uOnJlbGF0aXZlO3RleHQtYWxpZ246bGVmdH1bZGlyPXJ0bF0gLm1hdC1mb3JtLWZpZWxke3RleHQtYWxpZ246cmlnaHR9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJ7cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1mb3JtLWZpZWxkLWZsZXh7ZGlzcGxheTppbmxpbmUtZmxleDthbGlnbi1pdGVtczpiYXNlbGluZTtib3gtc2l6aW5nOmJvcmRlci1ib3g7d2lkdGg6MTAwJX0ubWF0LWZvcm0tZmllbGQtcHJlZml4LC5tYXQtZm9ybS1maWVsZC1zdWZmaXh7d2hpdGUtc3BhY2U6bm93cmFwO2ZsZXg6bm9uZTtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LWZvcm0tZmllbGQtaW5maXh7ZGlzcGxheTpibG9jaztwb3NpdGlvbjpyZWxhdGl2ZTtmbGV4OmF1dG87bWluLXdpZHRoOjA7d2lkdGg6MTgwcHh9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWZvcm0tZmllbGQtaW5maXh7Ym9yZGVyLWltYWdlOmxpbmVhci1ncmFkaWVudCh0cmFuc3BhcmVudCwgdHJhbnNwYXJlbnQpfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVye3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6MDtib3gtc2l6aW5nOmNvbnRlbnQtYm94O3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7b3ZlcmZsb3c6aGlkZGVuO3BvaW50ZXItZXZlbnRzOm5vbmV9W2Rpcj1ydGxdIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVye2xlZnQ6YXV0bztyaWdodDowfS5tYXQtZm9ybS1maWVsZC1sYWJlbHtwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjA7Zm9udDppbmhlcml0O3BvaW50ZXItZXZlbnRzOm5vbmU7d2lkdGg6MTAwJTt3aGl0ZS1zcGFjZTpub3dyYXA7dGV4dC1vdmVyZmxvdzplbGxpcHNpcztvdmVyZmxvdzpoaWRkZW47dHJhbnNmb3JtLW9yaWdpbjowIDA7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSksY29sb3IgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSksd2lkdGggNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSk7ZGlzcGxheTpub25lfVtkaXI9cnRsXSAubWF0LWZvcm0tZmllbGQtbGFiZWx7dHJhbnNmb3JtLW9yaWdpbjoxMDAlIDA7bGVmdDphdXRvO3JpZ2h0OjB9Lm1hdC1mb3JtLWZpZWxkLWVtcHR5Lm1hdC1mb3JtLWZpZWxkLWxhYmVsLC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0IC5tYXQtZm9ybS1maWVsZC1sYWJlbHtkaXNwbGF5OmJsb2NrfS5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sOi13ZWJraXQtYXV0b2ZpbGwrLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXIgLm1hdC1mb3JtLWZpZWxkLWxhYmVse2Rpc3BsYXk6bm9uZX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0IC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sOi13ZWJraXQtYXV0b2ZpbGwrLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXIgLm1hdC1mb3JtLWZpZWxkLWxhYmVse2Rpc3BsYXk6YmxvY2s7dHJhbnNpdGlvbjpub25lfS5tYXQtaW5wdXQtc2VydmVyOmZvY3VzKy5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyIC5tYXQtZm9ybS1maWVsZC1sYWJlbCwubWF0LWlucHV0LXNlcnZlcltwbGFjZWhvbGRlcl06bm90KDpwbGFjZWhvbGRlci1zaG93bikrLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXIgLm1hdC1mb3JtLWZpZWxkLWxhYmVse2Rpc3BsYXk6bm9uZX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0IC5tYXQtaW5wdXQtc2VydmVyOmZvY3VzKy5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyIC5tYXQtZm9ybS1maWVsZC1sYWJlbCwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0IC5tYXQtaW5wdXQtc2VydmVyW3BsYWNlaG9sZGVyXTpub3QoOnBsYWNlaG9sZGVyLXNob3duKSsubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlciAubWF0LWZvcm0tZmllbGQtbGFiZWx7ZGlzcGxheTpibG9ja30ubWF0LWZvcm0tZmllbGQtbGFiZWw6bm90KC5tYXQtZm9ybS1maWVsZC1lbXB0eSl7dHJhbnNpdGlvbjpub25lfS5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmV7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MTAwJTtwb2ludGVyLWV2ZW50czpub25lO3RyYW5zZm9ybTpzY2FsZTNkKDEsIDEuMDAwMSwgMSl9Lm1hdC1mb3JtLWZpZWxkLXJpcHBsZXtwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjA7d2lkdGg6MTAwJTt0cmFuc2Zvcm0tb3JpZ2luOjUwJTt0cmFuc2Zvcm06c2NhbGVYKDAuNSk7b3BhY2l0eTowO3RyYW5zaXRpb246YmFja2dyb3VuZC1jb2xvciAzMDBtcyBjdWJpYy1iZXppZXIoMC41NSwgMCwgMC41NSwgMC4yKX0ubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWQgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZSwubWF0LWZvcm0tZmllbGQubWF0LWZvcm0tZmllbGQtaW52YWxpZCAubWF0LWZvcm0tZmllbGQtcmlwcGxle29wYWNpdHk6MTt0cmFuc2Zvcm06bm9uZTt0cmFuc2l0aW9uOnRyYW5zZm9ybSAzMDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKSxvcGFjaXR5IDEwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpLGJhY2tncm91bmQtY29sb3IgMzAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSl9Lm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVye3Bvc2l0aW9uOmFic29sdXRlO2JveC1zaXppbmc6Ym9yZGVyLWJveDt3aWR0aDoxMDAlO292ZXJmbG93OmhpZGRlbn0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXIgLm1hdC1pY29uLC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyIC5tYXQtaWNvbnt3aWR0aDoxZW07aGVpZ2h0OjFlbTtmb250LXNpemU6aW5oZXJpdDt2ZXJ0aWNhbC1hbGlnbjpiYXNlbGluZX0ubWF0LWZvcm0tZmllbGQtaGludC13cmFwcGVye2Rpc3BsYXk6ZmxleH0ubWF0LWZvcm0tZmllbGQtaGludC1zcGFjZXJ7ZmxleDoxIDAgMWVtfS5tYXQtZXJyb3J7ZGlzcGxheTpibG9ja30ubWF0LWZvcm0tZmllbGQtY29udHJvbC13cmFwcGVye3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtZm9ybS1maWVsZC1oaW50LWVuZHtvcmRlcjoxfS5tYXQtZm9ybS1maWVsZC5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZSAubWF0LWZvcm0tZmllbGQtbGFiZWwsLm1hdC1mb3JtLWZpZWxkLl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlIC5tYXQtZm9ybS1maWVsZC1yaXBwbGV7dHJhbnNpdGlvbjpub25lfVxuIiwnLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbCAubWF0LWZvcm0tZmllbGQtZmxleHtib3JkZXItcmFkaXVzOjRweCA0cHggMCAwO3BhZGRpbmc6Ljc1ZW0gLjc1ZW0gMCAuNzVlbX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwgLm1hdC1mb3JtLWZpZWxkLWZsZXh7b3V0bGluZTpzb2xpZCAxcHh9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb2N1c2VkIC5tYXQtZm9ybS1maWVsZC1mbGV4e291dGxpbmU6ZGFzaGVkIDNweH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmU6OmJlZm9yZXtjb250ZW50OiIiO2Rpc3BsYXk6YmxvY2s7cG9zaXRpb246YWJzb2x1dGU7Ym90dG9tOjA7aGVpZ2h0OjFweDt3aWR0aDoxMDAlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZXtib3R0b206MDtoZWlnaHQ6MnB4fS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbCAubWF0LWZvcm0tZmllbGQtcmlwcGxle2hlaWdodDowfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGw6bm90KC5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZCkgLm1hdC1mb3JtLWZpZWxkLWZsZXg6aG92ZXJ+Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZSAubWF0LWZvcm0tZmllbGQtcmlwcGxle29wYWNpdHk6MTt0cmFuc2Zvcm06bm9uZTt0cmFuc2l0aW9uOm9wYWNpdHkgNjAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZTpub3QoLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkKSAubWF0LWZvcm0tZmllbGQtZmxleDpob3Zlcn4ubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lIC5tYXQtZm9ybS1maWVsZC1yaXBwbGV7dHJhbnNpdGlvbjpub25lfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVye3BhZGRpbmc6MCAxZW19XG4nLCcubWF0LWlucHV0LWVsZW1lbnR7Zm9udDppbmhlcml0O2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7Y29sb3I6Y3VycmVudENvbG9yO2JvcmRlcjpub25lO291dGxpbmU6bm9uZTtwYWRkaW5nOjA7bWFyZ2luOjA7d2lkdGg6MTAwJTttYXgtd2lkdGg6MTAwJTt2ZXJ0aWNhbC1hbGlnbjpib3R0b207dGV4dC1hbGlnbjppbmhlcml0O2JveC1zaXppbmc6Y29udGVudC1ib3h9Lm1hdC1pbnB1dC1lbGVtZW50Oi1tb3otdWktaW52YWxpZHtib3gtc2hhZG93Om5vbmV9Lm1hdC1pbnB1dC1lbGVtZW50OjotbXMtY2xlYXIsLm1hdC1pbnB1dC1lbGVtZW50OjotbXMtcmV2ZWFse2Rpc3BsYXk6bm9uZX0ubWF0LWlucHV0LWVsZW1lbnQsLm1hdC1pbnB1dC1lbGVtZW50Ojotd2Via2l0LXNlYXJjaC1jYW5jZWwtYnV0dG9uLC5tYXQtaW5wdXQtZWxlbWVudDo6LXdlYmtpdC1zZWFyY2gtZGVjb3JhdGlvbiwubWF0LWlucHV0LWVsZW1lbnQ6Oi13ZWJraXQtc2VhcmNoLXJlc3VsdHMtYnV0dG9uLC5tYXQtaW5wdXQtZWxlbWVudDo6LXdlYmtpdC1zZWFyY2gtcmVzdWx0cy1kZWNvcmF0aW9uey13ZWJraXQtYXBwZWFyYW5jZTpub25lfS5tYXQtaW5wdXQtZWxlbWVudDo6LXdlYmtpdC1jb250YWN0cy1hdXRvLWZpbGwtYnV0dG9uLC5tYXQtaW5wdXQtZWxlbWVudDo6LXdlYmtpdC1jYXBzLWxvY2staW5kaWNhdG9yLC5tYXQtaW5wdXQtZWxlbWVudDo6LXdlYmtpdC1jcmVkZW50aWFscy1hdXRvLWZpbGwtYnV0dG9ue3Zpc2liaWxpdHk6aGlkZGVufS5tYXQtaW5wdXQtZWxlbWVudFt0eXBlPWRhdGVdLC5tYXQtaW5wdXQtZWxlbWVudFt0eXBlPWRhdGV0aW1lXSwubWF0LWlucHV0LWVsZW1lbnRbdHlwZT1kYXRldGltZS1sb2NhbF0sLm1hdC1pbnB1dC1lbGVtZW50W3R5cGU9bW9udGhdLC5tYXQtaW5wdXQtZWxlbWVudFt0eXBlPXdlZWtdLC5tYXQtaW5wdXQtZWxlbWVudFt0eXBlPXRpbWVde2xpbmUtaGVpZ2h0OjF9Lm1hdC1pbnB1dC1lbGVtZW50W3R5cGU9ZGF0ZV06OmFmdGVyLC5tYXQtaW5wdXQtZWxlbWVudFt0eXBlPWRhdGV0aW1lXTo6YWZ0ZXIsLm1hdC1pbnB1dC1lbGVtZW50W3R5cGU9ZGF0ZXRpbWUtbG9jYWxdOjphZnRlciwubWF0LWlucHV0LWVsZW1lbnRbdHlwZT1tb250aF06OmFmdGVyLC5tYXQtaW5wdXQtZWxlbWVudFt0eXBlPXdlZWtdOjphZnRlciwubWF0LWlucHV0LWVsZW1lbnRbdHlwZT10aW1lXTo6YWZ0ZXJ7Y29udGVudDoiICI7d2hpdGUtc3BhY2U6cHJlO3dpZHRoOjFweH0ubWF0LWlucHV0LWVsZW1lbnQ6Oi13ZWJraXQtaW5uZXItc3Bpbi1idXR0b24sLm1hdC1pbnB1dC1lbGVtZW50Ojotd2Via2l0LWNhbGVuZGFyLXBpY2tlci1pbmRpY2F0b3IsLm1hdC1pbnB1dC1lbGVtZW50Ojotd2Via2l0LWNsZWFyLWJ1dHRvbntmb250LXNpemU6Ljc1ZW19Lm1hdC1pbnB1dC1lbGVtZW50OjpwbGFjZWhvbGRlcnstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7LW1vei11c2VyLXNlbGVjdDpub25lOy1tcy11c2VyLXNlbGVjdDpub25lO3VzZXItc2VsZWN0Om5vbmU7dHJhbnNpdGlvbjpjb2xvciA0MDBtcyAxMzMuMzMzMzMzMzMzM21zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpfS5tYXQtaW5wdXQtZWxlbWVudDo6cGxhY2Vob2xkZXI6LW1zLWlucHV0LXBsYWNlaG9sZGVyey1tcy11c2VyLXNlbGVjdDp0ZXh0fS5tYXQtaW5wdXQtZWxlbWVudDo6LW1vei1wbGFjZWhvbGRlcnstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7LW1vei11c2VyLXNlbGVjdDpub25lOy1tcy11c2VyLXNlbGVjdDpub25lO3VzZXItc2VsZWN0Om5vbmU7dHJhbnNpdGlvbjpjb2xvciA0MDBtcyAxMzMuMzMzMzMzMzMzM21zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpfS5tYXQtaW5wdXQtZWxlbWVudDo6LW1vei1wbGFjZWhvbGRlcjotbXMtaW5wdXQtcGxhY2Vob2xkZXJ7LW1zLXVzZXItc2VsZWN0OnRleHR9Lm1hdC1pbnB1dC1lbGVtZW50Ojotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyey13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTstbW96LXVzZXItc2VsZWN0Om5vbmU7LW1zLXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZTt0cmFuc2l0aW9uOmNvbG9yIDQwMG1zIDEzMy4zMzMzMzMzMzMzbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSl9Lm1hdC1pbnB1dC1lbGVtZW50Ojotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyOi1tcy1pbnB1dC1wbGFjZWhvbGRlcnstbXMtdXNlci1zZWxlY3Q6dGV4dH0ubWF0LWlucHV0LWVsZW1lbnQ6LW1zLWlucHV0LXBsYWNlaG9sZGVyey13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTstbW96LXVzZXItc2VsZWN0Om5vbmU7LW1zLXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZTt0cmFuc2l0aW9uOmNvbG9yIDQwMG1zIDEzMy4zMzMzMzMzMzMzbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSl9Lm1hdC1pbnB1dC1lbGVtZW50Oi1tcy1pbnB1dC1wbGFjZWhvbGRlcjotbXMtaW5wdXQtcGxhY2Vob2xkZXJ7LW1zLXVzZXItc2VsZWN0OnRleHR9Lm1hdC1mb3JtLWZpZWxkLWhpZGUtcGxhY2Vob2xkZXIgLm1hdC1pbnB1dC1lbGVtZW50OjpwbGFjZWhvbGRlcntjb2xvcjp0cmFuc3BhcmVudCAhaW1wb3J0YW50Oy13ZWJraXQtdGV4dC1maWxsLWNvbG9yOnRyYW5zcGFyZW50O3RyYW5zaXRpb246bm9uZX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtZm9ybS1maWVsZC1oaWRlLXBsYWNlaG9sZGVyIC5tYXQtaW5wdXQtZWxlbWVudDo6cGxhY2Vob2xkZXJ7b3BhY2l0eTowfS5tYXQtZm9ybS1maWVsZC1oaWRlLXBsYWNlaG9sZGVyIC5tYXQtaW5wdXQtZWxlbWVudDo6LW1vei1wbGFjZWhvbGRlcntjb2xvcjp0cmFuc3BhcmVudCAhaW1wb3J0YW50Oy13ZWJraXQtdGV4dC1maWxsLWNvbG9yOnRyYW5zcGFyZW50O3RyYW5zaXRpb246bm9uZX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtZm9ybS1maWVsZC1oaWRlLXBsYWNlaG9sZGVyIC5tYXQtaW5wdXQtZWxlbWVudDo6LW1vei1wbGFjZWhvbGRlcntvcGFjaXR5OjB9Lm1hdC1mb3JtLWZpZWxkLWhpZGUtcGxhY2Vob2xkZXIgLm1hdC1pbnB1dC1lbGVtZW50Ojotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVye2NvbG9yOnRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7LXdlYmtpdC10ZXh0LWZpbGwtY29sb3I6dHJhbnNwYXJlbnQ7dHJhbnNpdGlvbjpub25lfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1mb3JtLWZpZWxkLWhpZGUtcGxhY2Vob2xkZXIgLm1hdC1pbnB1dC1lbGVtZW50Ojotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVye29wYWNpdHk6MH0ubWF0LWZvcm0tZmllbGQtaGlkZS1wbGFjZWhvbGRlciAubWF0LWlucHV0LWVsZW1lbnQ6LW1zLWlucHV0LXBsYWNlaG9sZGVye2NvbG9yOnRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7LXdlYmtpdC10ZXh0LWZpbGwtY29sb3I6dHJhbnNwYXJlbnQ7dHJhbnNpdGlvbjpub25lfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1mb3JtLWZpZWxkLWhpZGUtcGxhY2Vob2xkZXIgLm1hdC1pbnB1dC1lbGVtZW50Oi1tcy1pbnB1dC1wbGFjZWhvbGRlcntvcGFjaXR5OjB9dGV4dGFyZWEubWF0LWlucHV0LWVsZW1lbnR7cmVzaXplOnZlcnRpY2FsO292ZXJmbG93OmF1dG99dGV4dGFyZWEubWF0LWlucHV0LWVsZW1lbnQuY2RrLXRleHRhcmVhLWF1dG9zaXple3Jlc2l6ZTpub25lfXRleHRhcmVhLm1hdC1pbnB1dC1lbGVtZW50e3BhZGRpbmc6MnB4IDA7bWFyZ2luOi0ycHggMH1zZWxlY3QubWF0LWlucHV0LWVsZW1lbnR7LW1vei1hcHBlYXJhbmNlOm5vbmU7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7cG9zaXRpb246cmVsYXRpdmU7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtkaXNwbGF5OmlubGluZS1mbGV4O2JveC1zaXppbmc6Ym9yZGVyLWJveDtwYWRkaW5nLXRvcDoxZW07dG9wOi0xZW07bWFyZ2luLWJvdHRvbTotMWVtfXNlbGVjdC5tYXQtaW5wdXQtZWxlbWVudDo6LW1zLWV4cGFuZHtkaXNwbGF5Om5vbmV9c2VsZWN0Lm1hdC1pbnB1dC1lbGVtZW50OjotbW96LWZvY3VzLWlubmVye2JvcmRlcjowfXNlbGVjdC5tYXQtaW5wdXQtZWxlbWVudDpub3QoOmRpc2FibGVkKXtjdXJzb3I6cG9pbnRlcn1zZWxlY3QubWF0LWlucHV0LWVsZW1lbnQ6Oi1tcy12YWx1ZXtjb2xvcjppbmhlcml0O2JhY2tncm91bmQ6bm9uZX0ubWF0LWZvY3VzZWQgLmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSBzZWxlY3QubWF0LWlucHV0LWVsZW1lbnQ6Oi1tcy12YWx1ZXtjb2xvcjppbmhlcml0fS5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0IC5tYXQtZm9ybS1maWVsZC1pbmZpeDo6YWZ0ZXJ7Y29udGVudDoiIjt3aWR0aDowO2hlaWdodDowO2JvcmRlci1sZWZ0OjVweCBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItcmlnaHQ6NXB4IHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci10b3A6NXB4IHNvbGlkO3Bvc2l0aW9uOmFic29sdXRlO3RvcDo1MCU7cmlnaHQ6MDttYXJnaW4tdG9wOi0yLjVweDtwb2ludGVyLWV2ZW50czpub25lfVtkaXI9cnRsXSAubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtbmF0aXZlLXNlbGVjdCAubWF0LWZvcm0tZmllbGQtaW5maXg6OmFmdGVye3JpZ2h0OmF1dG87bGVmdDowfS5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0IC5tYXQtaW5wdXQtZWxlbWVudHtwYWRkaW5nLXJpZ2h0OjE1cHh9W2Rpcj1ydGxdIC5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0IC5tYXQtaW5wdXQtZWxlbWVudHtwYWRkaW5nLXJpZ2h0OjA7cGFkZGluZy1sZWZ0OjE1cHh9Lm1hdC1mb3JtLWZpZWxkLXR5cGUtbWF0LW5hdGl2ZS1zZWxlY3QgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJ7bWF4LXdpZHRoOmNhbGMoMTAwJSAtIDEwcHgpfS5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZSAubWF0LWZvcm0tZmllbGQtaW5maXg6OmFmdGVye21hcmdpbi10b3A6LTVweH0ubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtbmF0aXZlLXNlbGVjdC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwgLm1hdC1mb3JtLWZpZWxkLWluZml4OjphZnRlcnttYXJnaW4tdG9wOi0xMHB4fVxuJywiLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5IC5tYXQtZm9ybS1maWVsZC1sYWJlbHt0cmFuc2Zvcm06cGVyc3BlY3RpdmUoMTAwcHgpOy1tcy10cmFuc2Zvcm06bm9uZX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kgLm1hdC1mb3JtLWZpZWxkLXByZWZpeCAubWF0LWljb24sLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5IC5tYXQtZm9ybS1maWVsZC1zdWZmaXggLm1hdC1pY29ue3dpZHRoOjFlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kgLm1hdC1mb3JtLWZpZWxkLXByZWZpeCAubWF0LWljb24tYnV0dG9uLC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeSAubWF0LWZvcm0tZmllbGQtc3VmZml4IC5tYXQtaWNvbi1idXR0b257Zm9udDppbmhlcml0O3ZlcnRpY2FsLWFsaWduOmJhc2VsaW5lfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeSAubWF0LWZvcm0tZmllbGQtcHJlZml4IC5tYXQtaWNvbi1idXR0b24gLm1hdC1pY29uLC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeSAubWF0LWZvcm0tZmllbGQtc3VmZml4IC5tYXQtaWNvbi1idXR0b24gLm1hdC1pY29ue2ZvbnQtc2l6ZTppbmhlcml0fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeSAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5le2hlaWdodDoxcHh9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZXtoZWlnaHQ6MDtib3JkZXItdG9wOnNvbGlkIDFweH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZXt0b3A6MDtoZWlnaHQ6MnB4O292ZXJmbG93OmhpZGRlbn0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeSAubWF0LWZvcm0tZmllbGQtcmlwcGxle2hlaWdodDowO2JvcmRlci10b3A6c29saWQgMnB4fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZCAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5le2JhY2tncm91bmQtcG9zaXRpb246MDtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50fS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmV7Ym9yZGVyLXRvcC1zdHlsZTpkb3R0ZWQ7Ym9yZGVyLXRvcC13aWR0aDoycHh9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWludmFsaWQ6bm90KC5tYXQtZm9jdXNlZCkgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZXtoZWlnaHQ6MXB4fVxuIiwiLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZSAubWF0LWZvcm0tZmllbGQtd3JhcHBlcnttYXJnaW46LjI1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lIC5tYXQtZm9ybS1maWVsZC1mbGV4e3BhZGRpbmc6MCAuNzVlbSAwIC43NWVtO21hcmdpbi10b3A6LTAuMjVlbTtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lIC5tYXQtZm9ybS1maWVsZC1wcmVmaXgsLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZSAubWF0LWZvcm0tZmllbGQtc3VmZml4e3RvcDouMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5le2Rpc3BsYXk6ZmxleDtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6LjI1ZW07bGVmdDowO3JpZ2h0OjA7Ym90dG9tOjA7cG9pbnRlci1ldmVudHM6bm9uZX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLXN0YXJ0LC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtZW5ke2JvcmRlcjoxcHggc29saWQgY3VycmVudENvbG9yO21pbi13aWR0aDo1cHh9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZSAubWF0LWZvcm0tZmllbGQtb3V0bGluZS1zdGFydHtib3JkZXItcmFkaXVzOjVweCAwIDAgNXB4O2JvcmRlci1yaWdodC1zdHlsZTpub25lfVtkaXI9cnRsXSAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLXN0YXJ0e2JvcmRlci1yaWdodC1zdHlsZTpzb2xpZDtib3JkZXItbGVmdC1zdHlsZTpub25lO2JvcmRlci1yYWRpdXM6MCA1cHggNXB4IDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZSAubWF0LWZvcm0tZmllbGQtb3V0bGluZS1lbmR7Ym9yZGVyLXJhZGl1czowIDVweCA1cHggMDtib3JkZXItbGVmdC1zdHlsZTpub25lO2ZsZXgtZ3JvdzoxfVtkaXI9cnRsXSAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLWVuZHtib3JkZXItbGVmdC1zdHlsZTpzb2xpZDtib3JkZXItcmlnaHQtc3R5bGU6bm9uZTtib3JkZXItcmFkaXVzOjVweCAwIDAgNXB4fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtZ2Fwe2JvcmRlci1yYWRpdXM6LjAwMDAwMXB4O2JvcmRlcjoxcHggc29saWQgY3VycmVudENvbG9yO2JvcmRlci1sZWZ0LXN0eWxlOm5vbmU7Ym9yZGVyLXJpZ2h0LXN0eWxlOm5vbmV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0IC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLWdhcHtib3JkZXItdG9wLWNvbG9yOnRyYW5zcGFyZW50fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtdGhpY2t7b3BhY2l0eTowfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtdGhpY2sgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtc3RhcnQsLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZSAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGljayAubWF0LWZvcm0tZmllbGQtb3V0bGluZS1lbmQsLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZSAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGljayAubWF0LWZvcm0tZmllbGQtb3V0bGluZS1nYXB7Ym9yZGVyLXdpZHRoOjJweH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb2N1c2VkIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtaW52YWxpZCAubWF0LWZvcm0tZmllbGQtb3V0bGluZXtvcGFjaXR5OjA7dHJhbnNpdGlvbjpvcGFjaXR5IDEwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvY3VzZWQgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtdGhpY2ssLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1pbnZhbGlkIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLXRoaWNre29wYWNpdHk6MX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvY3VzZWQgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtdGhpY2t7Ym9yZGVyOjNweCBkYXNoZWR9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZTpub3QoLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkKSAubWF0LWZvcm0tZmllbGQtZmxleDpob3ZlciAubWF0LWZvcm0tZmllbGQtb3V0bGluZXtvcGFjaXR5OjA7dHJhbnNpdGlvbjpvcGFjaXR5IDYwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmU6bm90KC5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZCkgLm1hdC1mb3JtLWZpZWxkLWZsZXg6aG92ZXIgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtdGhpY2t7b3BhY2l0eToxfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVye3BhZGRpbmc6MCAxZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZTpub3QoLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkKSAubWF0LWZvcm0tZmllbGQtZmxleDpob3Zlcn4ubWF0LWZvcm0tZmllbGQtb3V0bGluZSwubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUuX21hdC1hbmltYXRpb24tbm9vcGFibGUgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtc3RhcnQsLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZSAubWF0LWZvcm0tZmllbGQtb3V0bGluZS1lbmQsLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZSAubWF0LWZvcm0tZmllbGQtb3V0bGluZS1nYXB7dHJhbnNpdGlvbjpub25lfVxuIiwiLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utc3RhbmRhcmQgLm1hdC1mb3JtLWZpZWxkLWZsZXh7cGFkZGluZy10b3A6Ljc1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utc3RhbmRhcmQgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZXtoZWlnaHQ6MXB4fS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utc3RhbmRhcmQgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZXtoZWlnaHQ6MDtib3JkZXItdG9wOnNvbGlkIDFweH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1zdGFuZGFyZCAubWF0LWZvcm0tZmllbGQtcmlwcGxle2JvdHRvbTowO2hlaWdodDoycHh9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1zdGFuZGFyZCAubWF0LWZvcm0tZmllbGQtcmlwcGxle2hlaWdodDowO2JvcmRlci10b3A6c29saWQgMnB4fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLXN0YW5kYXJkLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmV7YmFja2dyb3VuZC1wb3NpdGlvbjowO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnR9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1zdGFuZGFyZC5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZCAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5le2JvcmRlci10b3Atc3R5bGU6ZG90dGVkO2JvcmRlci10b3Atd2lkdGg6MnB4fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLXN0YW5kYXJkOm5vdCgubWF0LWZvcm0tZmllbGQtZGlzYWJsZWQpIC5tYXQtZm9ybS1maWVsZC1mbGV4OmhvdmVyfi5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmUgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZXtvcGFjaXR5OjE7dHJhbnNmb3JtOm5vbmU7dHJhbnNpdGlvbjpvcGFjaXR5IDYwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLXN0YW5kYXJkLl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlOm5vdCgubWF0LWZvcm0tZmllbGQtZGlzYWJsZWQpIC5tYXQtZm9ybS1maWVsZC1mbGV4OmhvdmVyfi5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmUgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZXt0cmFuc2l0aW9uOm5vbmV9XG4iXSxlbmNhcHN1bGF0aW9uOjIsZGF0YTp7YW5pbWF0aW9uOltvVS50cmFuc2l0aW9uTWVzc2FnZXNdfSxjaGFuZ2VEZXRlY3Rpb246MH0pLF9VLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6S2h9LHt0eXBlOk9ifSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbS2hdfV19LHt0eXBlOnZGLGRlY29yYXRvcnM6W3t0eXBlOkJyfV19LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpbYlVdfV19LHt0eXBlOmNIfSx7dHlwZTptQ30se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltja119XX1dLF9VLnByb3BEZWNvcmF0b3JzPXthcHBlYXJhbmNlOlt7dHlwZTpSX31dLGhpZGVSZXF1aXJlZE1hcmtlcjpbe3R5cGU6Ul99XSxoaW50TGFiZWw6W3t0eXBlOlJffV0sZmxvYXRMYWJlbDpbe3R5cGU6Ul99XSx1bmRlcmxpbmVSZWY6W3t0eXBlOmFyLGFyZ3M6WyJ1bmRlcmxpbmUiXX1dLF9jb25uZWN0aW9uQ29udGFpbmVyUmVmOlt7dHlwZTphcixhcmdzOlsiY29ubmVjdGlvbkNvbnRhaW5lciIse3N0YXRpYzohMH1dfV0sX2lucHV0Q29udGFpbmVyUmVmOlt7dHlwZTphcixhcmdzOlsiaW5wdXRDb250YWluZXIiXX1dLF9sYWJlbDpbe3R5cGU6YXIsYXJnczpbImxhYmVsIl19XSxfY29udHJvbE5vblN0YXRpYzpbe3R5cGU6aXIsYXJnczpbaVVdfV0sX2NvbnRyb2xTdGF0aWM6W3t0eXBlOmlyLGFyZ3M6W2lVLHtzdGF0aWM6ITB9XX1dLF9sYWJlbENoaWxkTm9uU3RhdGljOlt7dHlwZTppcixhcmdzOltjVV19XSxfbGFiZWxDaGlsZFN0YXRpYzpbe3R5cGU6aXIsYXJnczpbY1Use3N0YXRpYzohMH1dfV0sX3BsYWNlaG9sZGVyQ2hpbGQ6W3t0eXBlOmlyLGFyZ3M6W2RVXX1dLF9lcnJvckNoaWxkcmVuOlt7dHlwZTpvcixhcmdzOltlVSx7ZGVzY2VuZGFudHM6ITB9XX1dLF9oaW50Q2hpbGRyZW46W3t0eXBlOm9yLGFyZ3M6W3NVLHtkZXNjZW5kYW50czohMH1dfV0sX3ByZWZpeENoaWxkcmVuOlt7dHlwZTpvcixhcmdzOltwVSx7ZGVzY2VuZGFudHM6ITB9XX1dLF9zdWZmaXhDaGlsZHJlbjpbe3R5cGU6b3IsYXJnczpbZlUse2Rlc2NlbmRhbnRzOiEwfV19XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihfVSxbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJtYXQtZm9ybS1maWVsZCIsZXhwb3J0QXM6Im1hdEZvcm1GaWVsZCIsdGVtcGxhdGU6JzxkaXYgY2xhc3M9Im1hdC1mb3JtLWZpZWxkLXdyYXBwZXIiPlxuICA8ZGl2IGNsYXNzPSJtYXQtZm9ybS1maWVsZC1mbGV4IiAjY29ubmVjdGlvbkNvbnRhaW5lclxuICAgICAgIChjbGljayk9Il9jb250cm9sLm9uQ29udGFpbmVyQ2xpY2sgJiYgX2NvbnRyb2wub25Db250YWluZXJDbGljaygkZXZlbnQpIj5cblxuICAgIFx4M2MhLS0gT3V0bGluZSB1c2VkIGZvciBvdXRsaW5lIGFwcGVhcmFuY2UuIC0tXHgzZVxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9ImFwcGVhcmFuY2UgPT0gXCdvdXRsaW5lXCciPlxuICAgICAgPGRpdiBjbGFzcz0ibWF0LWZvcm0tZmllbGQtb3V0bGluZSI+XG4gICAgICAgIDxkaXYgY2xhc3M9Im1hdC1mb3JtLWZpZWxkLW91dGxpbmUtc3RhcnQiPjwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPSJtYXQtZm9ybS1maWVsZC1vdXRsaW5lLWdhcCI+PC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9Im1hdC1mb3JtLWZpZWxkLW91dGxpbmUtZW5kIj48L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz0ibWF0LWZvcm0tZmllbGQtb3V0bGluZSBtYXQtZm9ybS1maWVsZC1vdXRsaW5lLXRoaWNrIj5cbiAgICAgICAgPGRpdiBjbGFzcz0ibWF0LWZvcm0tZmllbGQtb3V0bGluZS1zdGFydCI+PC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9Im1hdC1mb3JtLWZpZWxkLW91dGxpbmUtZ2FwIj48L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz0ibWF0LWZvcm0tZmllbGQtb3V0bGluZS1lbmQiPjwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8ZGl2IGNsYXNzPSJtYXQtZm9ybS1maWVsZC1wcmVmaXgiICpuZ0lmPSJfcHJlZml4Q2hpbGRyZW4ubGVuZ3RoIj5cbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD0iW21hdFByZWZpeF0iPjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9Im1hdC1mb3JtLWZpZWxkLWluZml4IiAjaW5wdXRDb250YWluZXI+XG4gICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG5cbiAgICAgIDxzcGFuIGNsYXNzPSJtYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyIj5cbiAgICAgICAgXHgzYyEtLSBXZSBhZGQgYXJpYS1vd25zIGFzIGEgd29ya2Fyb3VuZCBmb3IgYW4gaXNzdWUgaW4gSkFXUyAmIE5WREEgd2hlcmUgdGhlIGxhYmVsIGlzblwndFxuICAgICAgICAgICAgIHJlYWQgaWYgaXQgY29tZXMgYmVmb3JlIHRoZSBjb250cm9sIGluIHRoZSBET00uIC0tXHgzZVxuICAgICAgICA8bGFiZWwgY2xhc3M9Im1hdC1mb3JtLWZpZWxkLWxhYmVsIlxuICAgICAgICAgICAgICAgKGNka09ic2VydmVDb250ZW50KT0idXBkYXRlT3V0bGluZUdhcCgpIlxuICAgICAgICAgICAgICAgW2Nka09ic2VydmVDb250ZW50RGlzYWJsZWRdPSJhcHBlYXJhbmNlICE9IFwnb3V0bGluZVwnIlxuICAgICAgICAgICAgICAgW2lkXT0iX2xhYmVsSWQiXG4gICAgICAgICAgICAgICBbYXR0ci5mb3JdPSJfY29udHJvbC5pZCJcbiAgICAgICAgICAgICAgIFthdHRyLmFyaWEtb3duc109Il9jb250cm9sLmlkIlxuICAgICAgICAgICAgICAgW2NsYXNzLm1hdC1lbXB0eV09Il9jb250cm9sLmVtcHR5ICYmICFfc2hvdWxkQWx3YXlzRmxvYXQoKSJcbiAgICAgICAgICAgICAgIFtjbGFzcy5tYXQtZm9ybS1maWVsZC1lbXB0eV09Il9jb250cm9sLmVtcHR5ICYmICFfc2hvdWxkQWx3YXlzRmxvYXQoKSJcbiAgICAgICAgICAgICAgIFtjbGFzcy5tYXQtYWNjZW50XT0iY29sb3IgPT0gXCdhY2NlbnRcJyJcbiAgICAgICAgICAgICAgIFtjbGFzcy5tYXQtd2Fybl09ImNvbG9yID09IFwnd2FyblwnIlxuICAgICAgICAgICAgICAgI2xhYmVsXG4gICAgICAgICAgICAgICAqbmdJZj0iX2hhc0Zsb2F0aW5nTGFiZWwoKSJcbiAgICAgICAgICAgICAgIFtuZ1N3aXRjaF09Il9oYXNMYWJlbCgpIj5cblxuICAgICAgICAgIFx4M2MhLS0gQGJyZWFraW5nLWNoYW5nZSA4LjAuMCByZW1vdmUgaW4gZmF2b3Igb2YgbWF0LWxhYmVsIGVsZW1lbnQgYW4gcGxhY2Vob2xkZXIgYXR0ci4gLS1ceDNlXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPSJmYWxzZSI+XG4gICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9Im1hdC1wbGFjZWhvbGRlciI+PC9uZy1jb250ZW50PlxuICAgICAgICAgICAgPHNwYW4+e3tfY29udHJvbC5wbGFjZWhvbGRlcn19PC9zcGFuPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PSJtYXQtbGFiZWwiICpuZ1N3aXRjaENhc2U9InRydWUiPjwvbmctY29udGVudD5cblxuICAgICAgICAgIFx4M2MhLS0gQGJyZWFraW5nLWNoYW5nZSA4LjAuMCByZW1vdmUgYG1hdC1wbGFjZWhvbGRlci1yZXF1aXJlZGAgY2xhc3MgLS1ceDNlXG4gICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgIGNsYXNzPSJtYXQtcGxhY2Vob2xkZXItcmVxdWlyZWQgbWF0LWZvcm0tZmllbGQtcmVxdWlyZWQtbWFya2VyIlxuICAgICAgICAgICAgYXJpYS1oaWRkZW49InRydWUiXG4gICAgICAgICAgICAqbmdJZj0iIWhpZGVSZXF1aXJlZE1hcmtlciAmJiBfY29udHJvbC5yZXF1aXJlZCAmJiAhX2NvbnRyb2wuZGlzYWJsZWQiPiYjMzI7Kjwvc3Bhbj5cbiAgICAgICAgPC9sYWJlbD5cbiAgICAgIDwvc3Bhbj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9Im1hdC1mb3JtLWZpZWxkLXN1ZmZpeCIgKm5nSWY9Il9zdWZmaXhDaGlsZHJlbi5sZW5ndGgiPlxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PSJbbWF0U3VmZml4XSI+PC9uZy1jb250ZW50PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICBceDNjIS0tIFVuZGVybGluZSB1c2VkIGZvciBsZWdhY3ksIHN0YW5kYXJkLCBhbmQgYm94IGFwcGVhcmFuY2VzLiAtLVx4M2VcbiAgPGRpdiBjbGFzcz0ibWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lIiAjdW5kZXJsaW5lXG4gICAgICAgKm5nSWY9ImFwcGVhcmFuY2UgIT0gXCdvdXRsaW5lXCciPlxuICAgIDxzcGFuIGNsYXNzPSJtYXQtZm9ybS1maWVsZC1yaXBwbGUiXG4gICAgICAgICAgW2NsYXNzLm1hdC1hY2NlbnRdPSJjb2xvciA9PSBcJ2FjY2VudFwnIlxuICAgICAgICAgIFtjbGFzcy5tYXQtd2Fybl09ImNvbG9yID09IFwnd2FyblwnIj48L3NwYW4+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9Im1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyIlxuICAgICAgIFtuZ1N3aXRjaF09Il9nZXREaXNwbGF5ZWRNZXNzYWdlcygpIj5cbiAgICA8ZGl2ICpuZ1N3aXRjaENhc2U9IlwnZXJyb3JcJyIgW0B0cmFuc2l0aW9uTWVzc2FnZXNdPSJfc3Vic2NyaXB0QW5pbWF0aW9uU3RhdGUiPlxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PSJtYXQtZXJyb3IiPjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9Im1hdC1mb3JtLWZpZWxkLWhpbnQtd3JhcHBlciIgKm5nU3dpdGNoQ2FzZT0iXCdoaW50XCciXG4gICAgICBbQHRyYW5zaXRpb25NZXNzYWdlc109Il9zdWJzY3JpcHRBbmltYXRpb25TdGF0ZSI+XG4gICAgICBceDNjIS0tIFRPRE8obW1hbGVyYmEpOiB1c2UgYW4gYWN0dWFsIDxtYXQtaGludD4gb25jZSBhbGwgc2VsZWN0b3JzIGFyZSBzd2l0Y2hlZCB0byBtYXQtKiAtLVx4M2VcbiAgICAgIDxkaXYgKm5nSWY9ImhpbnRMYWJlbCIgW2lkXT0iX2hpbnRMYWJlbElkIiBjbGFzcz0ibWF0LWhpbnQiPnt7aGludExhYmVsfX08L2Rpdj5cbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD0ibWF0LWhpbnQ6bm90KFthbGlnbj1cJ2VuZFwnXSkiPjwvbmctY29udGVudD5cbiAgICAgIDxkaXYgY2xhc3M9Im1hdC1mb3JtLWZpZWxkLWhpbnQtc3BhY2VyIj48L2Rpdj5cbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD0ibWF0LWhpbnRbYWxpZ249XCdlbmRcJ10iPjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbicsYW5pbWF0aW9uczpbb1UudHJhbnNpdGlvbk1lc3NhZ2VzXSxob3N0OntjbGFzczoibWF0LWZvcm0tZmllbGQiLCJbY2xhc3MubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1zdGFuZGFyZF0iOidhcHBlYXJhbmNlID09ICJzdGFuZGFyZCInLCJbY2xhc3MubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsXSI6J2FwcGVhcmFuY2UgPT0gImZpbGwiJywiW2NsYXNzLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZV0iOidhcHBlYXJhbmNlID09ICJvdXRsaW5lIicsIltjbGFzcy5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeV0iOidhcHBlYXJhbmNlID09ICJsZWdhY3kiJywiW2NsYXNzLm1hdC1mb3JtLWZpZWxkLWludmFsaWRdIjoiX2NvbnRyb2wuZXJyb3JTdGF0ZSIsIltjbGFzcy5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRdIjoiX2NhbkxhYmVsRmxvYXQoKSIsIltjbGFzcy5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRdIjoiX3Nob3VsZExhYmVsRmxvYXQoKSIsIltjbGFzcy5tYXQtZm9ybS1maWVsZC1oYXMtbGFiZWxdIjoiX2hhc0Zsb2F0aW5nTGFiZWwoKSIsIltjbGFzcy5tYXQtZm9ybS1maWVsZC1oaWRlLXBsYWNlaG9sZGVyXSI6Il9oaWRlQ29udHJvbFBsYWNlaG9sZGVyKCkiLCJbY2xhc3MubWF0LWZvcm0tZmllbGQtZGlzYWJsZWRdIjoiX2NvbnRyb2wuZGlzYWJsZWQiLCJbY2xhc3MubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGxlZF0iOiJfY29udHJvbC5hdXRvZmlsbGVkIiwiW2NsYXNzLm1hdC1mb2N1c2VkXSI6Il9jb250cm9sLmZvY3VzZWQiLCJbY2xhc3MubmctdW50b3VjaGVkXSI6J19zaG91bGRGb3J3YXJkKCJ1bnRvdWNoZWQiKScsIltjbGFzcy5uZy10b3VjaGVkXSI6J19zaG91bGRGb3J3YXJkKCJ0b3VjaGVkIiknLCJbY2xhc3MubmctcHJpc3RpbmVdIjonX3Nob3VsZEZvcndhcmQoInByaXN0aW5lIiknLCJbY2xhc3MubmctZGlydHldIjonX3Nob3VsZEZvcndhcmQoImRpcnR5IiknLCJbY2xhc3MubmctdmFsaWRdIjonX3Nob3VsZEZvcndhcmQoInZhbGlkIiknLCJbY2xhc3MubmctaW52YWxpZF0iOidfc2hvdWxkRm9yd2FyZCgiaW52YWxpZCIpJywiW2NsYXNzLm5nLXBlbmRpbmddIjonX3Nob3VsZEZvcndhcmQoInBlbmRpbmciKScsIltjbGFzcy5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZV0iOiIhX2FuaW1hdGlvbnNFbmFibGVkIn0saW5wdXRzOlsiY29sb3IiXSxlbmNhcHN1bGF0aW9uOlduLk5vbmUsY2hhbmdlRGV0ZWN0aW9uOmpuLk9uUHVzaCxwcm92aWRlcnM6W3twcm92aWRlOnlVLHVzZUV4aXN0aW5nOl9VfV0sc3R5bGVzOlsiLm1hdC1mb3JtLWZpZWxke2Rpc3BsYXk6aW5saW5lLWJsb2NrO3Bvc2l0aW9uOnJlbGF0aXZlO3RleHQtYWxpZ246bGVmdH1bZGlyPXJ0bF0gLm1hdC1mb3JtLWZpZWxke3RleHQtYWxpZ246cmlnaHR9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJ7cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1mb3JtLWZpZWxkLWZsZXh7ZGlzcGxheTppbmxpbmUtZmxleDthbGlnbi1pdGVtczpiYXNlbGluZTtib3gtc2l6aW5nOmJvcmRlci1ib3g7d2lkdGg6MTAwJX0ubWF0LWZvcm0tZmllbGQtcHJlZml4LC5tYXQtZm9ybS1maWVsZC1zdWZmaXh7d2hpdGUtc3BhY2U6bm93cmFwO2ZsZXg6bm9uZTtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LWZvcm0tZmllbGQtaW5maXh7ZGlzcGxheTpibG9jaztwb3NpdGlvbjpyZWxhdGl2ZTtmbGV4OmF1dG87bWluLXdpZHRoOjA7d2lkdGg6MTgwcHh9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWZvcm0tZmllbGQtaW5maXh7Ym9yZGVyLWltYWdlOmxpbmVhci1ncmFkaWVudCh0cmFuc3BhcmVudCwgdHJhbnNwYXJlbnQpfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVye3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6MDtib3gtc2l6aW5nOmNvbnRlbnQtYm94O3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7b3ZlcmZsb3c6aGlkZGVuO3BvaW50ZXItZXZlbnRzOm5vbmV9W2Rpcj1ydGxdIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVye2xlZnQ6YXV0bztyaWdodDowfS5tYXQtZm9ybS1maWVsZC1sYWJlbHtwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjA7Zm9udDppbmhlcml0O3BvaW50ZXItZXZlbnRzOm5vbmU7d2lkdGg6MTAwJTt3aGl0ZS1zcGFjZTpub3dyYXA7dGV4dC1vdmVyZmxvdzplbGxpcHNpcztvdmVyZmxvdzpoaWRkZW47dHJhbnNmb3JtLW9yaWdpbjowIDA7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSksY29sb3IgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSksd2lkdGggNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSk7ZGlzcGxheTpub25lfVtkaXI9cnRsXSAubWF0LWZvcm0tZmllbGQtbGFiZWx7dHJhbnNmb3JtLW9yaWdpbjoxMDAlIDA7bGVmdDphdXRvO3JpZ2h0OjB9Lm1hdC1mb3JtLWZpZWxkLWVtcHR5Lm1hdC1mb3JtLWZpZWxkLWxhYmVsLC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0IC5tYXQtZm9ybS1maWVsZC1sYWJlbHtkaXNwbGF5OmJsb2NrfS5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sOi13ZWJraXQtYXV0b2ZpbGwrLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXIgLm1hdC1mb3JtLWZpZWxkLWxhYmVse2Rpc3BsYXk6bm9uZX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0IC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sOi13ZWJraXQtYXV0b2ZpbGwrLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXIgLm1hdC1mb3JtLWZpZWxkLWxhYmVse2Rpc3BsYXk6YmxvY2s7dHJhbnNpdGlvbjpub25lfS5tYXQtaW5wdXQtc2VydmVyOmZvY3VzKy5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyIC5tYXQtZm9ybS1maWVsZC1sYWJlbCwubWF0LWlucHV0LXNlcnZlcltwbGFjZWhvbGRlcl06bm90KDpwbGFjZWhvbGRlci1zaG93bikrLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXIgLm1hdC1mb3JtLWZpZWxkLWxhYmVse2Rpc3BsYXk6bm9uZX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0IC5tYXQtaW5wdXQtc2VydmVyOmZvY3VzKy5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyIC5tYXQtZm9ybS1maWVsZC1sYWJlbCwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0IC5tYXQtaW5wdXQtc2VydmVyW3BsYWNlaG9sZGVyXTpub3QoOnBsYWNlaG9sZGVyLXNob3duKSsubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlciAubWF0LWZvcm0tZmllbGQtbGFiZWx7ZGlzcGxheTpibG9ja30ubWF0LWZvcm0tZmllbGQtbGFiZWw6bm90KC5tYXQtZm9ybS1maWVsZC1lbXB0eSl7dHJhbnNpdGlvbjpub25lfS5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmV7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MTAwJTtwb2ludGVyLWV2ZW50czpub25lO3RyYW5zZm9ybTpzY2FsZTNkKDEsIDEuMDAwMSwgMSl9Lm1hdC1mb3JtLWZpZWxkLXJpcHBsZXtwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjA7d2lkdGg6MTAwJTt0cmFuc2Zvcm0tb3JpZ2luOjUwJTt0cmFuc2Zvcm06c2NhbGVYKDAuNSk7b3BhY2l0eTowO3RyYW5zaXRpb246YmFja2dyb3VuZC1jb2xvciAzMDBtcyBjdWJpYy1iZXppZXIoMC41NSwgMCwgMC41NSwgMC4yKX0ubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWQgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZSwubWF0LWZvcm0tZmllbGQubWF0LWZvcm0tZmllbGQtaW52YWxpZCAubWF0LWZvcm0tZmllbGQtcmlwcGxle29wYWNpdHk6MTt0cmFuc2Zvcm06bm9uZTt0cmFuc2l0aW9uOnRyYW5zZm9ybSAzMDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKSxvcGFjaXR5IDEwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpLGJhY2tncm91bmQtY29sb3IgMzAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSl9Lm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVye3Bvc2l0aW9uOmFic29sdXRlO2JveC1zaXppbmc6Ym9yZGVyLWJveDt3aWR0aDoxMDAlO292ZXJmbG93OmhpZGRlbn0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXIgLm1hdC1pY29uLC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyIC5tYXQtaWNvbnt3aWR0aDoxZW07aGVpZ2h0OjFlbTtmb250LXNpemU6aW5oZXJpdDt2ZXJ0aWNhbC1hbGlnbjpiYXNlbGluZX0ubWF0LWZvcm0tZmllbGQtaGludC13cmFwcGVye2Rpc3BsYXk6ZmxleH0ubWF0LWZvcm0tZmllbGQtaGludC1zcGFjZXJ7ZmxleDoxIDAgMWVtfS5tYXQtZXJyb3J7ZGlzcGxheTpibG9ja30ubWF0LWZvcm0tZmllbGQtY29udHJvbC13cmFwcGVye3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtZm9ybS1maWVsZC1oaW50LWVuZHtvcmRlcjoxfS5tYXQtZm9ybS1maWVsZC5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZSAubWF0LWZvcm0tZmllbGQtbGFiZWwsLm1hdC1mb3JtLWZpZWxkLl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlIC5tYXQtZm9ybS1maWVsZC1yaXBwbGV7dHJhbnNpdGlvbjpub25lfVxuIiwnLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbCAubWF0LWZvcm0tZmllbGQtZmxleHtib3JkZXItcmFkaXVzOjRweCA0cHggMCAwO3BhZGRpbmc6Ljc1ZW0gLjc1ZW0gMCAuNzVlbX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwgLm1hdC1mb3JtLWZpZWxkLWZsZXh7b3V0bGluZTpzb2xpZCAxcHh9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb2N1c2VkIC5tYXQtZm9ybS1maWVsZC1mbGV4e291dGxpbmU6ZGFzaGVkIDNweH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmU6OmJlZm9yZXtjb250ZW50OiIiO2Rpc3BsYXk6YmxvY2s7cG9zaXRpb246YWJzb2x1dGU7Ym90dG9tOjA7aGVpZ2h0OjFweDt3aWR0aDoxMDAlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZXtib3R0b206MDtoZWlnaHQ6MnB4fS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbCAubWF0LWZvcm0tZmllbGQtcmlwcGxle2hlaWdodDowfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGw6bm90KC5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZCkgLm1hdC1mb3JtLWZpZWxkLWZsZXg6aG92ZXJ+Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZSAubWF0LWZvcm0tZmllbGQtcmlwcGxle29wYWNpdHk6MTt0cmFuc2Zvcm06bm9uZTt0cmFuc2l0aW9uOm9wYWNpdHkgNjAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZTpub3QoLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkKSAubWF0LWZvcm0tZmllbGQtZmxleDpob3Zlcn4ubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lIC5tYXQtZm9ybS1maWVsZC1yaXBwbGV7dHJhbnNpdGlvbjpub25lfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVye3BhZGRpbmc6MCAxZW19XG4nLCcubWF0LWlucHV0LWVsZW1lbnR7Zm9udDppbmhlcml0O2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7Y29sb3I6Y3VycmVudENvbG9yO2JvcmRlcjpub25lO291dGxpbmU6bm9uZTtwYWRkaW5nOjA7bWFyZ2luOjA7d2lkdGg6MTAwJTttYXgtd2lkdGg6MTAwJTt2ZXJ0aWNhbC1hbGlnbjpib3R0b207dGV4dC1hbGlnbjppbmhlcml0O2JveC1zaXppbmc6Y29udGVudC1ib3h9Lm1hdC1pbnB1dC1lbGVtZW50Oi1tb3otdWktaW52YWxpZHtib3gtc2hhZG93Om5vbmV9Lm1hdC1pbnB1dC1lbGVtZW50OjotbXMtY2xlYXIsLm1hdC1pbnB1dC1lbGVtZW50OjotbXMtcmV2ZWFse2Rpc3BsYXk6bm9uZX0ubWF0LWlucHV0LWVsZW1lbnQsLm1hdC1pbnB1dC1lbGVtZW50Ojotd2Via2l0LXNlYXJjaC1jYW5jZWwtYnV0dG9uLC5tYXQtaW5wdXQtZWxlbWVudDo6LXdlYmtpdC1zZWFyY2gtZGVjb3JhdGlvbiwubWF0LWlucHV0LWVsZW1lbnQ6Oi13ZWJraXQtc2VhcmNoLXJlc3VsdHMtYnV0dG9uLC5tYXQtaW5wdXQtZWxlbWVudDo6LXdlYmtpdC1zZWFyY2gtcmVzdWx0cy1kZWNvcmF0aW9uey13ZWJraXQtYXBwZWFyYW5jZTpub25lfS5tYXQtaW5wdXQtZWxlbWVudDo6LXdlYmtpdC1jb250YWN0cy1hdXRvLWZpbGwtYnV0dG9uLC5tYXQtaW5wdXQtZWxlbWVudDo6LXdlYmtpdC1jYXBzLWxvY2staW5kaWNhdG9yLC5tYXQtaW5wdXQtZWxlbWVudDo6LXdlYmtpdC1jcmVkZW50aWFscy1hdXRvLWZpbGwtYnV0dG9ue3Zpc2liaWxpdHk6aGlkZGVufS5tYXQtaW5wdXQtZWxlbWVudFt0eXBlPWRhdGVdLC5tYXQtaW5wdXQtZWxlbWVudFt0eXBlPWRhdGV0aW1lXSwubWF0LWlucHV0LWVsZW1lbnRbdHlwZT1kYXRldGltZS1sb2NhbF0sLm1hdC1pbnB1dC1lbGVtZW50W3R5cGU9bW9udGhdLC5tYXQtaW5wdXQtZWxlbWVudFt0eXBlPXdlZWtdLC5tYXQtaW5wdXQtZWxlbWVudFt0eXBlPXRpbWVde2xpbmUtaGVpZ2h0OjF9Lm1hdC1pbnB1dC1lbGVtZW50W3R5cGU9ZGF0ZV06OmFmdGVyLC5tYXQtaW5wdXQtZWxlbWVudFt0eXBlPWRhdGV0aW1lXTo6YWZ0ZXIsLm1hdC1pbnB1dC1lbGVtZW50W3R5cGU9ZGF0ZXRpbWUtbG9jYWxdOjphZnRlciwubWF0LWlucHV0LWVsZW1lbnRbdHlwZT1tb250aF06OmFmdGVyLC5tYXQtaW5wdXQtZWxlbWVudFt0eXBlPXdlZWtdOjphZnRlciwubWF0LWlucHV0LWVsZW1lbnRbdHlwZT10aW1lXTo6YWZ0ZXJ7Y29udGVudDoiICI7d2hpdGUtc3BhY2U6cHJlO3dpZHRoOjFweH0ubWF0LWlucHV0LWVsZW1lbnQ6Oi13ZWJraXQtaW5uZXItc3Bpbi1idXR0b24sLm1hdC1pbnB1dC1lbGVtZW50Ojotd2Via2l0LWNhbGVuZGFyLXBpY2tlci1pbmRpY2F0b3IsLm1hdC1pbnB1dC1lbGVtZW50Ojotd2Via2l0LWNsZWFyLWJ1dHRvbntmb250LXNpemU6Ljc1ZW19Lm1hdC1pbnB1dC1lbGVtZW50OjpwbGFjZWhvbGRlcnstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7LW1vei11c2VyLXNlbGVjdDpub25lOy1tcy11c2VyLXNlbGVjdDpub25lO3VzZXItc2VsZWN0Om5vbmU7dHJhbnNpdGlvbjpjb2xvciA0MDBtcyAxMzMuMzMzMzMzMzMzM21zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpfS5tYXQtaW5wdXQtZWxlbWVudDo6cGxhY2Vob2xkZXI6LW1zLWlucHV0LXBsYWNlaG9sZGVyey1tcy11c2VyLXNlbGVjdDp0ZXh0fS5tYXQtaW5wdXQtZWxlbWVudDo6LW1vei1wbGFjZWhvbGRlcnstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7LW1vei11c2VyLXNlbGVjdDpub25lOy1tcy11c2VyLXNlbGVjdDpub25lO3VzZXItc2VsZWN0Om5vbmU7dHJhbnNpdGlvbjpjb2xvciA0MDBtcyAxMzMuMzMzMzMzMzMzM21zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpfS5tYXQtaW5wdXQtZWxlbWVudDo6LW1vei1wbGFjZWhvbGRlcjotbXMtaW5wdXQtcGxhY2Vob2xkZXJ7LW1zLXVzZXItc2VsZWN0OnRleHR9Lm1hdC1pbnB1dC1lbGVtZW50Ojotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyey13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTstbW96LXVzZXItc2VsZWN0Om5vbmU7LW1zLXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZTt0cmFuc2l0aW9uOmNvbG9yIDQwMG1zIDEzMy4zMzMzMzMzMzMzbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSl9Lm1hdC1pbnB1dC1lbGVtZW50Ojotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyOi1tcy1pbnB1dC1wbGFjZWhvbGRlcnstbXMtdXNlci1zZWxlY3Q6dGV4dH0ubWF0LWlucHV0LWVsZW1lbnQ6LW1zLWlucHV0LXBsYWNlaG9sZGVyey13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTstbW96LXVzZXItc2VsZWN0Om5vbmU7LW1zLXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZTt0cmFuc2l0aW9uOmNvbG9yIDQwMG1zIDEzMy4zMzMzMzMzMzMzbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSl9Lm1hdC1pbnB1dC1lbGVtZW50Oi1tcy1pbnB1dC1wbGFjZWhvbGRlcjotbXMtaW5wdXQtcGxhY2Vob2xkZXJ7LW1zLXVzZXItc2VsZWN0OnRleHR9Lm1hdC1mb3JtLWZpZWxkLWhpZGUtcGxhY2Vob2xkZXIgLm1hdC1pbnB1dC1lbGVtZW50OjpwbGFjZWhvbGRlcntjb2xvcjp0cmFuc3BhcmVudCAhaW1wb3J0YW50Oy13ZWJraXQtdGV4dC1maWxsLWNvbG9yOnRyYW5zcGFyZW50O3RyYW5zaXRpb246bm9uZX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtZm9ybS1maWVsZC1oaWRlLXBsYWNlaG9sZGVyIC5tYXQtaW5wdXQtZWxlbWVudDo6cGxhY2Vob2xkZXJ7b3BhY2l0eTowfS5tYXQtZm9ybS1maWVsZC1oaWRlLXBsYWNlaG9sZGVyIC5tYXQtaW5wdXQtZWxlbWVudDo6LW1vei1wbGFjZWhvbGRlcntjb2xvcjp0cmFuc3BhcmVudCAhaW1wb3J0YW50Oy13ZWJraXQtdGV4dC1maWxsLWNvbG9yOnRyYW5zcGFyZW50O3RyYW5zaXRpb246bm9uZX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtZm9ybS1maWVsZC1oaWRlLXBsYWNlaG9sZGVyIC5tYXQtaW5wdXQtZWxlbWVudDo6LW1vei1wbGFjZWhvbGRlcntvcGFjaXR5OjB9Lm1hdC1mb3JtLWZpZWxkLWhpZGUtcGxhY2Vob2xkZXIgLm1hdC1pbnB1dC1lbGVtZW50Ojotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVye2NvbG9yOnRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7LXdlYmtpdC10ZXh0LWZpbGwtY29sb3I6dHJhbnNwYXJlbnQ7dHJhbnNpdGlvbjpub25lfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1mb3JtLWZpZWxkLWhpZGUtcGxhY2Vob2xkZXIgLm1hdC1pbnB1dC1lbGVtZW50Ojotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVye29wYWNpdHk6MH0ubWF0LWZvcm0tZmllbGQtaGlkZS1wbGFjZWhvbGRlciAubWF0LWlucHV0LWVsZW1lbnQ6LW1zLWlucHV0LXBsYWNlaG9sZGVye2NvbG9yOnRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7LXdlYmtpdC10ZXh0LWZpbGwtY29sb3I6dHJhbnNwYXJlbnQ7dHJhbnNpdGlvbjpub25lfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1mb3JtLWZpZWxkLWhpZGUtcGxhY2Vob2xkZXIgLm1hdC1pbnB1dC1lbGVtZW50Oi1tcy1pbnB1dC1wbGFjZWhvbGRlcntvcGFjaXR5OjB9dGV4dGFyZWEubWF0LWlucHV0LWVsZW1lbnR7cmVzaXplOnZlcnRpY2FsO292ZXJmbG93OmF1dG99dGV4dGFyZWEubWF0LWlucHV0LWVsZW1lbnQuY2RrLXRleHRhcmVhLWF1dG9zaXple3Jlc2l6ZTpub25lfXRleHRhcmVhLm1hdC1pbnB1dC1lbGVtZW50e3BhZGRpbmc6MnB4IDA7bWFyZ2luOi0ycHggMH1zZWxlY3QubWF0LWlucHV0LWVsZW1lbnR7LW1vei1hcHBlYXJhbmNlOm5vbmU7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7cG9zaXRpb246cmVsYXRpdmU7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtkaXNwbGF5OmlubGluZS1mbGV4O2JveC1zaXppbmc6Ym9yZGVyLWJveDtwYWRkaW5nLXRvcDoxZW07dG9wOi0xZW07bWFyZ2luLWJvdHRvbTotMWVtfXNlbGVjdC5tYXQtaW5wdXQtZWxlbWVudDo6LW1zLWV4cGFuZHtkaXNwbGF5Om5vbmV9c2VsZWN0Lm1hdC1pbnB1dC1lbGVtZW50OjotbW96LWZvY3VzLWlubmVye2JvcmRlcjowfXNlbGVjdC5tYXQtaW5wdXQtZWxlbWVudDpub3QoOmRpc2FibGVkKXtjdXJzb3I6cG9pbnRlcn1zZWxlY3QubWF0LWlucHV0LWVsZW1lbnQ6Oi1tcy12YWx1ZXtjb2xvcjppbmhlcml0O2JhY2tncm91bmQ6bm9uZX0ubWF0LWZvY3VzZWQgLmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSBzZWxlY3QubWF0LWlucHV0LWVsZW1lbnQ6Oi1tcy12YWx1ZXtjb2xvcjppbmhlcml0fS5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0IC5tYXQtZm9ybS1maWVsZC1pbmZpeDo6YWZ0ZXJ7Y29udGVudDoiIjt3aWR0aDowO2hlaWdodDowO2JvcmRlci1sZWZ0OjVweCBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItcmlnaHQ6NXB4IHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci10b3A6NXB4IHNvbGlkO3Bvc2l0aW9uOmFic29sdXRlO3RvcDo1MCU7cmlnaHQ6MDttYXJnaW4tdG9wOi0yLjVweDtwb2ludGVyLWV2ZW50czpub25lfVtkaXI9cnRsXSAubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtbmF0aXZlLXNlbGVjdCAubWF0LWZvcm0tZmllbGQtaW5maXg6OmFmdGVye3JpZ2h0OmF1dG87bGVmdDowfS5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0IC5tYXQtaW5wdXQtZWxlbWVudHtwYWRkaW5nLXJpZ2h0OjE1cHh9W2Rpcj1ydGxdIC5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0IC5tYXQtaW5wdXQtZWxlbWVudHtwYWRkaW5nLXJpZ2h0OjA7cGFkZGluZy1sZWZ0OjE1cHh9Lm1hdC1mb3JtLWZpZWxkLXR5cGUtbWF0LW5hdGl2ZS1zZWxlY3QgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJ7bWF4LXdpZHRoOmNhbGMoMTAwJSAtIDEwcHgpfS5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZSAubWF0LWZvcm0tZmllbGQtaW5maXg6OmFmdGVye21hcmdpbi10b3A6LTVweH0ubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtbmF0aXZlLXNlbGVjdC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwgLm1hdC1mb3JtLWZpZWxkLWluZml4OjphZnRlcnttYXJnaW4tdG9wOi0xMHB4fVxuJywiLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5IC5tYXQtZm9ybS1maWVsZC1sYWJlbHt0cmFuc2Zvcm06cGVyc3BlY3RpdmUoMTAwcHgpOy1tcy10cmFuc2Zvcm06bm9uZX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kgLm1hdC1mb3JtLWZpZWxkLXByZWZpeCAubWF0LWljb24sLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5IC5tYXQtZm9ybS1maWVsZC1zdWZmaXggLm1hdC1pY29ue3dpZHRoOjFlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kgLm1hdC1mb3JtLWZpZWxkLXByZWZpeCAubWF0LWljb24tYnV0dG9uLC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeSAubWF0LWZvcm0tZmllbGQtc3VmZml4IC5tYXQtaWNvbi1idXR0b257Zm9udDppbmhlcml0O3ZlcnRpY2FsLWFsaWduOmJhc2VsaW5lfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeSAubWF0LWZvcm0tZmllbGQtcHJlZml4IC5tYXQtaWNvbi1idXR0b24gLm1hdC1pY29uLC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeSAubWF0LWZvcm0tZmllbGQtc3VmZml4IC5tYXQtaWNvbi1idXR0b24gLm1hdC1pY29ue2ZvbnQtc2l6ZTppbmhlcml0fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeSAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5le2hlaWdodDoxcHh9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZXtoZWlnaHQ6MDtib3JkZXItdG9wOnNvbGlkIDFweH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZXt0b3A6MDtoZWlnaHQ6MnB4O292ZXJmbG93OmhpZGRlbn0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeSAubWF0LWZvcm0tZmllbGQtcmlwcGxle2hlaWdodDowO2JvcmRlci10b3A6c29saWQgMnB4fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZCAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5le2JhY2tncm91bmQtcG9zaXRpb246MDtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50fS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmV7Ym9yZGVyLXRvcC1zdHlsZTpkb3R0ZWQ7Ym9yZGVyLXRvcC13aWR0aDoycHh9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWludmFsaWQ6bm90KC5tYXQtZm9jdXNlZCkgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZXtoZWlnaHQ6MXB4fVxuIiwiLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZSAubWF0LWZvcm0tZmllbGQtd3JhcHBlcnttYXJnaW46LjI1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lIC5tYXQtZm9ybS1maWVsZC1mbGV4e3BhZGRpbmc6MCAuNzVlbSAwIC43NWVtO21hcmdpbi10b3A6LTAuMjVlbTtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lIC5tYXQtZm9ybS1maWVsZC1wcmVmaXgsLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZSAubWF0LWZvcm0tZmllbGQtc3VmZml4e3RvcDouMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5le2Rpc3BsYXk6ZmxleDtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6LjI1ZW07bGVmdDowO3JpZ2h0OjA7Ym90dG9tOjA7cG9pbnRlci1ldmVudHM6bm9uZX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLXN0YXJ0LC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtZW5ke2JvcmRlcjoxcHggc29saWQgY3VycmVudENvbG9yO21pbi13aWR0aDo1cHh9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZSAubWF0LWZvcm0tZmllbGQtb3V0bGluZS1zdGFydHtib3JkZXItcmFkaXVzOjVweCAwIDAgNXB4O2JvcmRlci1yaWdodC1zdHlsZTpub25lfVtkaXI9cnRsXSAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLXN0YXJ0e2JvcmRlci1yaWdodC1zdHlsZTpzb2xpZDtib3JkZXItbGVmdC1zdHlsZTpub25lO2JvcmRlci1yYWRpdXM6MCA1cHggNXB4IDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZSAubWF0LWZvcm0tZmllbGQtb3V0bGluZS1lbmR7Ym9yZGVyLXJhZGl1czowIDVweCA1cHggMDtib3JkZXItbGVmdC1zdHlsZTpub25lO2ZsZXgtZ3JvdzoxfVtkaXI9cnRsXSAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLWVuZHtib3JkZXItbGVmdC1zdHlsZTpzb2xpZDtib3JkZXItcmlnaHQtc3R5bGU6bm9uZTtib3JkZXItcmFkaXVzOjVweCAwIDAgNXB4fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtZ2Fwe2JvcmRlci1yYWRpdXM6LjAwMDAwMXB4O2JvcmRlcjoxcHggc29saWQgY3VycmVudENvbG9yO2JvcmRlci1sZWZ0LXN0eWxlOm5vbmU7Ym9yZGVyLXJpZ2h0LXN0eWxlOm5vbmV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0IC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLWdhcHtib3JkZXItdG9wLWNvbG9yOnRyYW5zcGFyZW50fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtdGhpY2t7b3BhY2l0eTowfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtdGhpY2sgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtc3RhcnQsLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZSAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGljayAubWF0LWZvcm0tZmllbGQtb3V0bGluZS1lbmQsLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZSAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGljayAubWF0LWZvcm0tZmllbGQtb3V0bGluZS1nYXB7Ym9yZGVyLXdpZHRoOjJweH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb2N1c2VkIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtaW52YWxpZCAubWF0LWZvcm0tZmllbGQtb3V0bGluZXtvcGFjaXR5OjA7dHJhbnNpdGlvbjpvcGFjaXR5IDEwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvY3VzZWQgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtdGhpY2ssLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1pbnZhbGlkIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLXRoaWNre29wYWNpdHk6MX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvY3VzZWQgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtdGhpY2t7Ym9yZGVyOjNweCBkYXNoZWR9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZTpub3QoLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkKSAubWF0LWZvcm0tZmllbGQtZmxleDpob3ZlciAubWF0LWZvcm0tZmllbGQtb3V0bGluZXtvcGFjaXR5OjA7dHJhbnNpdGlvbjpvcGFjaXR5IDYwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmU6bm90KC5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZCkgLm1hdC1mb3JtLWZpZWxkLWZsZXg6aG92ZXIgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtdGhpY2t7b3BhY2l0eToxfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVye3BhZGRpbmc6MCAxZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZTpub3QoLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkKSAubWF0LWZvcm0tZmllbGQtZmxleDpob3Zlcn4ubWF0LWZvcm0tZmllbGQtb3V0bGluZSwubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUuX21hdC1hbmltYXRpb24tbm9vcGFibGUgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtc3RhcnQsLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZSAubWF0LWZvcm0tZmllbGQtb3V0bGluZS1lbmQsLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZSAubWF0LWZvcm0tZmllbGQtb3V0bGluZS1nYXB7dHJhbnNpdGlvbjpub25lfVxuIiwiLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utc3RhbmRhcmQgLm1hdC1mb3JtLWZpZWxkLWZsZXh7cGFkZGluZy10b3A6Ljc1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utc3RhbmRhcmQgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZXtoZWlnaHQ6MXB4fS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utc3RhbmRhcmQgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZXtoZWlnaHQ6MDtib3JkZXItdG9wOnNvbGlkIDFweH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1zdGFuZGFyZCAubWF0LWZvcm0tZmllbGQtcmlwcGxle2JvdHRvbTowO2hlaWdodDoycHh9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1zdGFuZGFyZCAubWF0LWZvcm0tZmllbGQtcmlwcGxle2hlaWdodDowO2JvcmRlci10b3A6c29saWQgMnB4fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLXN0YW5kYXJkLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmV7YmFja2dyb3VuZC1wb3NpdGlvbjowO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnR9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1zdGFuZGFyZC5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZCAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5le2JvcmRlci10b3Atc3R5bGU6ZG90dGVkO2JvcmRlci10b3Atd2lkdGg6MnB4fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLXN0YW5kYXJkOm5vdCgubWF0LWZvcm0tZmllbGQtZGlzYWJsZWQpIC5tYXQtZm9ybS1maWVsZC1mbGV4OmhvdmVyfi5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmUgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZXtvcGFjaXR5OjE7dHJhbnNmb3JtOm5vbmU7dHJhbnNpdGlvbjpvcGFjaXR5IDYwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLXN0YW5kYXJkLl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlOm5vdCgubWF0LWZvcm0tZmllbGQtZGlzYWJsZWQpIC5tYXQtZm9ybS1maWVsZC1mbGV4OmhvdmVyfi5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmUgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZXt0cmFuc2l0aW9uOm5vbmV9XG4iXX1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOktofSx7dHlwZTpPYn0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W0toXX1dfSx7dHlwZTp2RixkZWNvcmF0b3JzOlt7dHlwZTpCcn1dfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W2JVXX1dfSx7dHlwZTpjSH0se3R5cGU6bUN9LHt0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpbY2tdfV19XX0pLHtmbG9hdExhYmVsOlt7dHlwZTpSX31dLGFwcGVhcmFuY2U6W3t0eXBlOlJffV0saGlkZVJlcXVpcmVkTWFya2VyOlt7dHlwZTpSX31dLGhpbnRMYWJlbDpbe3R5cGU6Ul99XSx1bmRlcmxpbmVSZWY6W3t0eXBlOmFyLGFyZ3M6WyJ1bmRlcmxpbmUiXX1dLF9jb25uZWN0aW9uQ29udGFpbmVyUmVmOlt7dHlwZTphcixhcmdzOlsiY29ubmVjdGlvbkNvbnRhaW5lciIse3N0YXRpYzohMH1dfV0sX2lucHV0Q29udGFpbmVyUmVmOlt7dHlwZTphcixhcmdzOlsiaW5wdXRDb250YWluZXIiXX1dLF9sYWJlbDpbe3R5cGU6YXIsYXJnczpbImxhYmVsIl19XSxfY29udHJvbE5vblN0YXRpYzpbe3R5cGU6aXIsYXJnczpbaVVdfV0sX2NvbnRyb2xTdGF0aWM6W3t0eXBlOmlyLGFyZ3M6W2lVLHtzdGF0aWM6ITB9XX1dLF9sYWJlbENoaWxkTm9uU3RhdGljOlt7dHlwZTppcixhcmdzOltjVV19XSxfbGFiZWxDaGlsZFN0YXRpYzpbe3R5cGU6aXIsYXJnczpbY1Use3N0YXRpYzohMH1dfV0sX3BsYWNlaG9sZGVyQ2hpbGQ6W3t0eXBlOmlyLGFyZ3M6W2RVXX1dLF9lcnJvckNoaWxkcmVuOlt7dHlwZTpvcixhcmdzOltlVSx7ZGVzY2VuZGFudHM6ITB9XX1dLF9oaW50Q2hpbGRyZW46W3t0eXBlOm9yLGFyZ3M6W3NVLHtkZXNjZW5kYW50czohMH1dfV0sX3ByZWZpeENoaWxkcmVuOlt7dHlwZTpvcixhcmdzOltwVSx7ZGVzY2VuZGFudHM6ITB9XX1dLF9zdWZmaXhDaGlsZHJlbjpbe3R5cGU6b3IsYXJnczpbZlUse2Rlc2NlbmRhbnRzOiEwfV19XX0pOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3MgQ1V7fUNVLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxDVSl9LENVLsm1bW9kPWZvKHt0eXBlOkNVfSksQ1UuybVpbmo9RG4oe2ltcG9ydHM6W1tyeCxORix3SF0sTkZdfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihDVSxbe3R5cGU6TF8sYXJnczpbe2RlY2xhcmF0aW9uczpbblUsX1UsbFUsY1UsZFUsbVUsdVVdLGltcG9ydHM6W3J4LE5GLHdIXSxleHBvcnRzOltORixuVSxfVSxsVSxjVSxkVSxtVSx1VV19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZ1byhDVSx7ZGVjbGFyYXRpb25zOmZ1bmN0aW9uKCl7cmV0dXJuW25VLF9VLGxVLGNVLGRVLG1VLHVVXX0saW1wb3J0czpmdW5jdGlvbigpe3JldHVybltyeCxORix3SF19LGV4cG9ydHM6ZnVuY3Rpb24oKXtyZXR1cm5bTkYsblUsX1UsbFUsY1UsZFUsbVUsdVVdfX0pOwovKioKICAgICAqIEBsaWNlbnNlIEFuZ3VsYXIgdjEyLjIuMQogICAgICogKGMpIDIwMTAtMjAyMSBHb29nbGUgTExDLiBodHRwczovL2FuZ3VsYXIuaW8vCiAgICAgKiBMaWNlbnNlOiBNSVQKICAgICAqLwpjbGFzcyBNVXtjb25zdHJ1Y3Rvcih0LGUpe3RoaXMuX3JlbmRlcmVyPXQsdGhpcy5fZWxlbWVudFJlZj1lLHRoaXMub25DaGFuZ2U9dD0+e30sdGhpcy5vblRvdWNoZWQ9KCk9Pnt9fXNldFByb3BlcnR5KHQsZSl7dGhpcy5fcmVuZGVyZXIuc2V0UHJvcGVydHkodGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LHQsZSl9cmVnaXN0ZXJPblRvdWNoZWQodCl7dGhpcy5vblRvdWNoZWQ9dH1yZWdpc3Rlck9uQ2hhbmdlKHQpe3RoaXMub25DaGFuZ2U9dH1zZXREaXNhYmxlZFN0YXRlKHQpe3RoaXMuc2V0UHJvcGVydHkoImRpc2FibGVkIix0KX19TVUuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fE1VKShnZigkaCksZ2YoS2gpKX0sTVUuybVkaXI9aG8oe3R5cGU6TVV9KSxNVS5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOiRofSx7dHlwZTpLaH1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoTVUsW3t0eXBlOmtffV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOiRofSx7dHlwZTpLaH1dfSksbnVsbCk7Y2xhc3MgdlUgZXh0ZW5kcyBNVXt9dlUuybVmYWM9KGZ1bmN0aW9uKCl7bGV0IHQ7cmV0dXJuIGZ1bmN0aW9uIGUobil7cmV0dXJuKHR8fCh0PVVhKHZVKSkpKG58fHZVKX19KSgpLHZVLsm1ZGlyPWhvKHt0eXBlOnZVLGZlYXR1cmVzOltRcF19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKHZVLFt7dHlwZTprX31dLG51bGwsbnVsbCk7Y29uc3QgeFU9bmV3IGVyKCJOZ1ZhbHVlQWNjZXNzb3IiKSxPVT17cHJvdmlkZTp4VSx1c2VFeGlzdGluZzokZSgoKCk9PlBVKSksbXVsdGk6ITB9OwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jbGFzcyBQVSBleHRlbmRzIHZVe3dyaXRlVmFsdWUodCl7dGhpcy5zZXRQcm9wZXJ0eSgiY2hlY2tlZCIsdCl9fVBVLsm1ZmFjPShmdW5jdGlvbigpe2xldCB0O3JldHVybiBmdW5jdGlvbiBlKG4pe3JldHVybih0fHwodD1VYShQVSkpKShufHxQVSl9fSkoKSxQVS7JtWRpcj1obyh7dHlwZTpQVSxzZWxlY3RvcnM6W1siaW5wdXQiLCJ0eXBlIiwiY2hlY2tib3giLCJmb3JtQ29udHJvbE5hbWUiLCIiXSxbImlucHV0IiwidHlwZSIsImNoZWNrYm94IiwiZm9ybUNvbnRyb2wiLCIiXSxbImlucHV0IiwidHlwZSIsImNoZWNrYm94IiwibmdNb2RlbCIsIiJdXSxob3N0QmluZGluZ3M6ZnVuY3Rpb24gdChlLG4pezEmZSYmUmYoImNoYW5nZSIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4ub25DaGFuZ2UoZS50YXJnZXQuY2hlY2tlZCl9KSkoImJsdXIiLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4ub25Ub3VjaGVkKCl9KSl9LGZlYXR1cmVzOltqaChbT1VdKSxRcF19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKFBVLFt7dHlwZTprXyxhcmdzOlt7c2VsZWN0b3I6ImlucHV0W3R5cGU9Y2hlY2tib3hdW2Zvcm1Db250cm9sTmFtZV0saW5wdXRbdHlwZT1jaGVja2JveF1bZm9ybUNvbnRyb2xdLGlucHV0W3R5cGU9Y2hlY2tib3hdW25nTW9kZWxdIixob3N0OnsiKGNoYW5nZSkiOiJvbkNoYW5nZSgkZXZlbnQudGFyZ2V0LmNoZWNrZWQpIiwiKGJsdXIpIjoib25Ub3VjaGVkKCkifSxwcm92aWRlcnM6W09VXX1dfV0sbnVsbCxudWxsKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNvbnN0IHdVPXtwcm92aWRlOnhVLHVzZUV4aXN0aW5nOiRlKCgoKT0+U1UpKSxtdWx0aTohMH07Y29uc3Qga1U9bmV3IGVyKCJDb21wb3NpdGlvbkV2ZW50TW9kZSIpO2NsYXNzIFNVIGV4dGVuZHMgTVV7Y29uc3RydWN0b3IodCxlLG4pe3N1cGVyKHQsZSksdGhpcy5fY29tcG9zaXRpb25Nb2RlPW4sdGhpcy5fY29tcG9zaW5nPSExLG51bGw9PXRoaXMuX2NvbXBvc2l0aW9uTW9kZSYmKHRoaXMuX2NvbXBvc2l0aW9uTW9kZT0hKGZ1bmN0aW9uIG8oKXtjb25zdCB0PXJNKCk/ck0oKS5nZXRVc2VyQWdlbnQoKToiIjtyZXR1cm4vYW5kcm9pZCAoXGQrKS8udGVzdCh0LnRvTG93ZXJDYXNlKCkpfSkoKSl9d3JpdGVWYWx1ZSh0KXt0aGlzLnNldFByb3BlcnR5KCJ2YWx1ZSIsbnVsbD09dD8iIjp0KX1faGFuZGxlSW5wdXQodCl7KCF0aGlzLl9jb21wb3NpdGlvbk1vZGV8fHRoaXMuX2NvbXBvc2l0aW9uTW9kZSYmIXRoaXMuX2NvbXBvc2luZykmJnRoaXMub25DaGFuZ2UodCl9X2NvbXBvc2l0aW9uU3RhcnQoKXt0aGlzLl9jb21wb3Npbmc9ITB9X2NvbXBvc2l0aW9uRW5kKHQpe3RoaXMuX2NvbXBvc2luZz0hMSx0aGlzLl9jb21wb3NpdGlvbk1vZGUmJnRoaXMub25DaGFuZ2UodCl9fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KZnVuY3Rpb24gRFUodCl7cmV0dXJuIG51bGw9PXR8fDA9PT10Lmxlbmd0aH1mdW5jdGlvbiBSVSh0KXtyZXR1cm4gbnVsbCE9dCYmIm51bWJlciI9PXR5cGVvZiB0Lmxlbmd0aH1TVS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8U1UpKGdmKCRoKSxnZihLaCksZ2Yoa1UsOCkpfSxTVS7JtWRpcj1obyh7dHlwZTpTVSxzZWxlY3RvcnM6W1siaW5wdXQiLCJmb3JtQ29udHJvbE5hbWUiLCIiLDMsInR5cGUiLCJjaGVja2JveCJdLFsidGV4dGFyZWEiLCJmb3JtQ29udHJvbE5hbWUiLCIiXSxbImlucHV0IiwiZm9ybUNvbnRyb2wiLCIiLDMsInR5cGUiLCJjaGVja2JveCJdLFsidGV4dGFyZWEiLCJmb3JtQ29udHJvbCIsIiJdLFsiaW5wdXQiLCJuZ01vZGVsIiwiIiwzLCJ0eXBlIiwiY2hlY2tib3giXSxbInRleHRhcmVhIiwibmdNb2RlbCIsIiJdLFsiIiwibmdEZWZhdWx0Q29udHJvbCIsIiJdXSxob3N0QmluZGluZ3M6ZnVuY3Rpb24gdChlLG4pezEmZSYmUmYoImlucHV0IiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5faGFuZGxlSW5wdXQoZS50YXJnZXQudmFsdWUpfSkpKCJibHVyIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLm9uVG91Y2hlZCgpfSkpKCJjb21wb3NpdGlvbnN0YXJ0IiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLl9jb21wb3NpdGlvblN0YXJ0KCl9KSkoImNvbXBvc2l0aW9uZW5kIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5fY29tcG9zaXRpb25FbmQoZS50YXJnZXQudmFsdWUpfSkpfSxmZWF0dXJlczpbamgoW3dVXSksUXBdfSksU1UuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTokaH0se3R5cGU6S2h9LHt0eXBlOkJvb2xlYW4sZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W2tVXX1dfV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihTVSxbe3R5cGU6a18sYXJnczpbe3NlbGVjdG9yOiJpbnB1dDpub3QoW3R5cGU9Y2hlY2tib3hdKVtmb3JtQ29udHJvbE5hbWVdLHRleHRhcmVhW2Zvcm1Db250cm9sTmFtZV0saW5wdXQ6bm90KFt0eXBlPWNoZWNrYm94XSlbZm9ybUNvbnRyb2xdLHRleHRhcmVhW2Zvcm1Db250cm9sXSxpbnB1dDpub3QoW3R5cGU9Y2hlY2tib3hdKVtuZ01vZGVsXSx0ZXh0YXJlYVtuZ01vZGVsXSxbbmdEZWZhdWx0Q29udHJvbF0iLGhvc3Q6eyIoaW5wdXQpIjoiJGFueSh0aGlzKS5faGFuZGxlSW5wdXQoJGV2ZW50LnRhcmdldC52YWx1ZSkiLCIoYmx1cikiOiJvblRvdWNoZWQoKSIsIihjb21wb3NpdGlvbnN0YXJ0KSI6IiRhbnkodGhpcykuX2NvbXBvc2l0aW9uU3RhcnQoKSIsIihjb21wb3NpdGlvbmVuZCkiOiIkYW55KHRoaXMpLl9jb21wb3NpdGlvbkVuZCgkZXZlbnQudGFyZ2V0LnZhbHVlKSJ9LHByb3ZpZGVyczpbd1VdfV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6JGh9LHt0eXBlOktofSx7dHlwZTpCb29sZWFuLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltrVV19XX1dfSksbnVsbCk7Y29uc3QgRVU9bmV3IGVyKCJOZ1ZhbGlkYXRvcnMiKSxBVT1uZXcgZXIoIk5nQXN5bmNWYWxpZGF0b3JzIiksVFU9L14oPz0uezEsMjU0fSQpKD89LnsxLDY0fUApW2EtekEtWjAtOSEjJCUmJyorLz0/Xl9ge3x9fi1dKyg/OlwuW2EtekEtWjAtOSEjJCUmJyorLz0/Xl9ge3x9fi1dKykqQFthLXpBLVowLTldKD86W2EtekEtWjAtOS1dezAsNjF9W2EtekEtWjAtOV0pPyg/OlwuW2EtekEtWjAtOV0oPzpbYS16QS1aMC05LV17MCw2MX1bYS16QS1aMC05XSk/KSokLztjbGFzcyBOVXtzdGF0aWMgbWluKHQpe3JldHVybiB6VSh0KX1zdGF0aWMgbWF4KHQpe3JldHVybiBJVSh0KX1zdGF0aWMgcmVxdWlyZWQodCl7cmV0dXJuIEhVKHQpfXN0YXRpYyByZXF1aXJlZFRydWUodCl7cmV0dXJuIEZVKHQpfXN0YXRpYyBlbWFpbCh0KXtyZXR1cm4gTFUodCl9c3RhdGljIG1pbkxlbmd0aCh0KXtyZXR1cm4gQlUodCl9c3RhdGljIG1heExlbmd0aCh0KXtyZXR1cm4gVlUodCl9c3RhdGljIHBhdHRlcm4odCl7cmV0dXJuIGpVKHQpfXN0YXRpYyBudWxsVmFsaWRhdG9yKHQpe3JldHVybiBudWxsfXN0YXRpYyBjb21wb3NlKHQpe3JldHVybiBYVSh0KX1zdGF0aWMgY29tcG9zZUFzeW5jKHQpe3JldHVybiBKVSh0KX19ZnVuY3Rpb24gelUodCl7cmV0dXJuIGU9PntpZihEVShlLnZhbHVlKXx8RFUodCkpcmV0dXJuIG51bGw7Y29uc3Qgbj1wYXJzZUZsb2F0KGUudmFsdWUpO3JldHVybiFpc05hTihuKSYmbjx0P3ttaW46e21pbjp0LGFjdHVhbDplLnZhbHVlfX06bnVsbH19ZnVuY3Rpb24gSVUodCl7cmV0dXJuIGU9PntpZihEVShlLnZhbHVlKXx8RFUodCkpcmV0dXJuIG51bGw7Y29uc3Qgbj1wYXJzZUZsb2F0KGUudmFsdWUpO3JldHVybiFpc05hTihuKSYmbj50P3ttYXg6e21heDp0LGFjdHVhbDplLnZhbHVlfX06bnVsbH19ZnVuY3Rpb24gSFUodCl7cmV0dXJuIERVKHQudmFsdWUpP3tyZXF1aXJlZDohMH06bnVsbH1mdW5jdGlvbiBGVSh0KXtyZXR1cm4hMD09PXQudmFsdWU/bnVsbDp7cmVxdWlyZWQ6ITB9fWZ1bmN0aW9uIExVKHQpe3JldHVybiBEVSh0LnZhbHVlKXx8VFUudGVzdCh0LnZhbHVlKT9udWxsOntlbWFpbDohMH19ZnVuY3Rpb24gQlUodCl7cmV0dXJuIGU9PkRVKGUudmFsdWUpfHwhUlUoZS52YWx1ZSk/bnVsbDplLnZhbHVlLmxlbmd0aDx0P3ttaW5sZW5ndGg6e3JlcXVpcmVkTGVuZ3RoOnQsYWN0dWFsTGVuZ3RoOmUudmFsdWUubGVuZ3RofX06bnVsbH1mdW5jdGlvbiBWVSh0KXtyZXR1cm4gZT0+UlUoZS52YWx1ZSkmJmUudmFsdWUubGVuZ3RoPnQ/e21heGxlbmd0aDp7cmVxdWlyZWRMZW5ndGg6dCxhY3R1YWxMZW5ndGg6ZS52YWx1ZS5sZW5ndGh9fTpudWxsfWZ1bmN0aW9uIGpVKHQpe2lmKCF0KXJldHVybiBVVTtsZXQgZSxuO3JldHVybiJzdHJpbmciPT10eXBlb2YgdD8obj0iIiwiXiIhPT10LmNoYXJBdCgwKSYmKG4rPSJeIiksbis9dCwiJCIhPT10LmNoYXJBdCh0Lmxlbmd0aC0xKSYmKG4rPSIkIiksZT1uZXcgUmVnRXhwKG4pKToobj10LnRvU3RyaW5nKCksZT10KSx0PT57aWYoRFUodC52YWx1ZSkpcmV0dXJuIG51bGw7Y29uc3Qgbz10LnZhbHVlO3JldHVybiBlLnRlc3Qobyk/bnVsbDp7cGF0dGVybjp7cmVxdWlyZWRQYXR0ZXJuOm4sYWN0dWFsVmFsdWU6b319fX1mdW5jdGlvbiBVVSh0KXtyZXR1cm4gbnVsbH1mdW5jdGlvbiBXVSh0KXtyZXR1cm4gbnVsbCE9dH1mdW5jdGlvbiBHVSh0KXtjb25zdCBlPWtmKHQpP1B0KHQpOnQ7aWYoIURmKGUpJiYoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkpdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCB2YWxpZGF0b3IgdG8gcmV0dXJuIFByb21pc2Ugb3IgT2JzZXJ2YWJsZS4iKTtyZXR1cm4gZX1mdW5jdGlvbiBZVSh0KXtsZXQgZT17fTtyZXR1cm4gdC5mb3JFYWNoKCh0PT57ZT1udWxsIT10P09iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxlKSx0KTplfSkpLDA9PT1PYmplY3Qua2V5cyhlKS5sZW5ndGg/bnVsbDplfWZ1bmN0aW9uIHFVKHQsZSl7cmV0dXJuIGUubWFwKChlPT5lKHQpKSl9ZnVuY3Rpb24gWlUodCl7cmV0dXJuIHQubWFwKCh0PT4oZnVuY3Rpb24gZSh0KXtyZXR1cm4hdC52YWxpZGF0ZX0pKHQpP3Q6ZT0+dC52YWxpZGF0ZShlKSkpfWZ1bmN0aW9uIFhVKHQpe2lmKCF0KXJldHVybiBudWxsO2NvbnN0IGU9dC5maWx0ZXIoV1UpO3JldHVybiAwPT1lLmxlbmd0aD9udWxsOmZ1bmN0aW9uKHQpe3JldHVybiBZVShxVSh0LGUpKX19ZnVuY3Rpb24gS1UodCl7cmV0dXJuIG51bGwhPXQ/WFUoWlUodCkpOm51bGx9ZnVuY3Rpb24gSlUodCl7aWYoIXQpcmV0dXJuIG51bGw7Y29uc3QgZT10LmZpbHRlcihXVSk7cmV0dXJuIDA9PWUubGVuZ3RoP251bGw6ZnVuY3Rpb24odCl7cmV0dXJuIGllKHFVKHQsZSkubWFwKEdVKSkucGlwZShWdChZVSkpfX1mdW5jdGlvbiBRVSh0KXtyZXR1cm4gbnVsbCE9dD9KVShaVSh0KSk6bnVsbH1mdW5jdGlvbiAkVSh0LGUpe3JldHVybiBudWxsPT09dD9bZV06QXJyYXkuaXNBcnJheSh0KT9bLi4udCxlXTpbdCxlXX1mdW5jdGlvbiB0Vyh0KXtyZXR1cm4gdC5fcmF3VmFsaWRhdG9yc31mdW5jdGlvbiBlVyh0KXtyZXR1cm4gdC5fcmF3QXN5bmNWYWxpZGF0b3JzfWZ1bmN0aW9uIG5XKHQpe3JldHVybiB0P0FycmF5LmlzQXJyYXkodCk/dDpbdF06W119ZnVuY3Rpb24gb1codCxlKXtyZXR1cm4gQXJyYXkuaXNBcnJheSh0KT90LmluY2x1ZGVzKGUpOnQ9PT1lfWZ1bmN0aW9uIGlXKHQsZSl7Y29uc3Qgbj1uVyhlKTtyZXR1cm4gblcodCkuZm9yRWFjaCgodD0+e29XKG4sdCl8fG4ucHVzaCh0KX0pKSxufWZ1bmN0aW9uIGFXKHQsZSl7cmV0dXJuIG5XKGUpLmZpbHRlcigoZT0+IW9XKHQsZSkpKX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY2xhc3Mgcld7Y29uc3RydWN0b3IoKXt0aGlzLl9yYXdWYWxpZGF0b3JzPVtdLHRoaXMuX3Jhd0FzeW5jVmFsaWRhdG9ycz1bXSx0aGlzLl9vbkRlc3Ryb3lDYWxsYmFja3M9W119Z2V0IHZhbHVlKCl7cmV0dXJuIHRoaXMuY29udHJvbD90aGlzLmNvbnRyb2wudmFsdWU6bnVsbH1nZXQgdmFsaWQoKXtyZXR1cm4gdGhpcy5jb250cm9sP3RoaXMuY29udHJvbC52YWxpZDpudWxsfWdldCBpbnZhbGlkKCl7cmV0dXJuIHRoaXMuY29udHJvbD90aGlzLmNvbnRyb2wuaW52YWxpZDpudWxsfWdldCBwZW5kaW5nKCl7cmV0dXJuIHRoaXMuY29udHJvbD90aGlzLmNvbnRyb2wucGVuZGluZzpudWxsfWdldCBkaXNhYmxlZCgpe3JldHVybiB0aGlzLmNvbnRyb2w/dGhpcy5jb250cm9sLmRpc2FibGVkOm51bGx9Z2V0IGVuYWJsZWQoKXtyZXR1cm4gdGhpcy5jb250cm9sP3RoaXMuY29udHJvbC5lbmFibGVkOm51bGx9Z2V0IGVycm9ycygpe3JldHVybiB0aGlzLmNvbnRyb2w/dGhpcy5jb250cm9sLmVycm9yczpudWxsfWdldCBwcmlzdGluZSgpe3JldHVybiB0aGlzLmNvbnRyb2w/dGhpcy5jb250cm9sLnByaXN0aW5lOm51bGx9Z2V0IGRpcnR5KCl7cmV0dXJuIHRoaXMuY29udHJvbD90aGlzLmNvbnRyb2wuZGlydHk6bnVsbH1nZXQgdG91Y2hlZCgpe3JldHVybiB0aGlzLmNvbnRyb2w/dGhpcy5jb250cm9sLnRvdWNoZWQ6bnVsbH1nZXQgc3RhdHVzKCl7cmV0dXJuIHRoaXMuY29udHJvbD90aGlzLmNvbnRyb2wuc3RhdHVzOm51bGx9Z2V0IHVudG91Y2hlZCgpe3JldHVybiB0aGlzLmNvbnRyb2w/dGhpcy5jb250cm9sLnVudG91Y2hlZDpudWxsfWdldCBzdGF0dXNDaGFuZ2VzKCl7cmV0dXJuIHRoaXMuY29udHJvbD90aGlzLmNvbnRyb2wuc3RhdHVzQ2hhbmdlczpudWxsfWdldCB2YWx1ZUNoYW5nZXMoKXtyZXR1cm4gdGhpcy5jb250cm9sP3RoaXMuY29udHJvbC52YWx1ZUNoYW5nZXM6bnVsbH1nZXQgcGF0aCgpe3JldHVybiBudWxsfV9zZXRWYWxpZGF0b3JzKHQpe3RoaXMuX3Jhd1ZhbGlkYXRvcnM9dHx8W10sdGhpcy5fY29tcG9zZWRWYWxpZGF0b3JGbj1LVSh0aGlzLl9yYXdWYWxpZGF0b3JzKX1fc2V0QXN5bmNWYWxpZGF0b3JzKHQpe3RoaXMuX3Jhd0FzeW5jVmFsaWRhdG9ycz10fHxbXSx0aGlzLl9jb21wb3NlZEFzeW5jVmFsaWRhdG9yRm49UVUodGhpcy5fcmF3QXN5bmNWYWxpZGF0b3JzKX1nZXQgdmFsaWRhdG9yKCl7cmV0dXJuIHRoaXMuX2NvbXBvc2VkVmFsaWRhdG9yRm58fG51bGx9Z2V0IGFzeW5jVmFsaWRhdG9yKCl7cmV0dXJuIHRoaXMuX2NvbXBvc2VkQXN5bmNWYWxpZGF0b3JGbnx8bnVsbH1fcmVnaXN0ZXJPbkRlc3Ryb3kodCl7dGhpcy5fb25EZXN0cm95Q2FsbGJhY2tzLnB1c2godCl9X2ludm9rZU9uRGVzdHJveUNhbGxiYWNrcygpe3RoaXMuX29uRGVzdHJveUNhbGxiYWNrcy5mb3JFYWNoKCh0PT50KCkpKSx0aGlzLl9vbkRlc3Ryb3lDYWxsYmFja3M9W119cmVzZXQodCl7dGhpcy5jb250cm9sJiZ0aGlzLmNvbnRyb2wucmVzZXQodCl9aGFzRXJyb3IodCxlKXtyZXR1cm4hIXRoaXMuY29udHJvbCYmdGhpcy5jb250cm9sLmhhc0Vycm9yKHQsZSl9Z2V0RXJyb3IodCxlKXtyZXR1cm4gdGhpcy5jb250cm9sP3RoaXMuY29udHJvbC5nZXRFcnJvcih0LGUpOm51bGx9fXJXLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxyVyl9LHJXLsm1ZGlyPWhvKHt0eXBlOnJXfSk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjbGFzcyBzVyBleHRlbmRzIHJXe2dldCBmb3JtRGlyZWN0aXZlKCl7cmV0dXJuIG51bGx9Z2V0IHBhdGgoKXtyZXR1cm4gbnVsbH19c1cuybVmYWM9KGZ1bmN0aW9uKCl7bGV0IHQ7cmV0dXJuIGZ1bmN0aW9uIGUobil7cmV0dXJuKHR8fCh0PVVhKHNXKSkpKG58fHNXKX19KSgpLHNXLsm1ZGlyPWhvKHt0eXBlOnNXLGZlYXR1cmVzOltRcF19KTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNsYXNzIGxXIGV4dGVuZHMgcld7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMuX3BhcmVudD1udWxsLHRoaXMubmFtZT1udWxsLHRoaXMudmFsdWVBY2Nlc3Nvcj1udWxsfX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY2xhc3MgY1d7Y29uc3RydWN0b3IodCl7dGhpcy5fY2Q9dH1pcyh0KXt2YXIgZSxuLG87cmV0dXJuInN1Ym1pdHRlZCI9PT10PyEhKG51bGw9PT0oZT10aGlzLl9jZCl8fHZvaWQgMD09PWU/dm9pZCAwOmUuc3VibWl0dGVkKTohIShudWxsPT09KG89bnVsbD09PShuPXRoaXMuX2NkKXx8dm9pZCAwPT09bj92b2lkIDA6bi5jb250cm9sKXx8dm9pZCAwPT09bz92b2lkIDA6b1t0XSl9fWNvbnN0IGRXPXsiW2NsYXNzLm5nLXVudG91Y2hlZF0iOidpcygidW50b3VjaGVkIiknLCJbY2xhc3MubmctdG91Y2hlZF0iOidpcygidG91Y2hlZCIpJywiW2NsYXNzLm5nLXByaXN0aW5lXSI6J2lzKCJwcmlzdGluZSIpJywiW2NsYXNzLm5nLWRpcnR5XSI6J2lzKCJkaXJ0eSIpJywiW2NsYXNzLm5nLXZhbGlkXSI6J2lzKCJ2YWxpZCIpJywiW2NsYXNzLm5nLWludmFsaWRdIjonaXMoImludmFsaWQiKScsIltjbGFzcy5uZy1wZW5kaW5nXSI6J2lzKCJwZW5kaW5nIiknfSxwVz17IltjbGFzcy5uZy11bnRvdWNoZWRdIjonaXMoInVudG91Y2hlZCIpJywiW2NsYXNzLm5nLXRvdWNoZWRdIjonaXMoInRvdWNoZWQiKScsIltjbGFzcy5uZy1wcmlzdGluZV0iOidpcygicHJpc3RpbmUiKScsIltjbGFzcy5uZy1kaXJ0eV0iOidpcygiZGlydHkiKScsIltjbGFzcy5uZy12YWxpZF0iOidpcygidmFsaWQiKScsIltjbGFzcy5uZy1pbnZhbGlkXSI6J2lzKCJpbnZhbGlkIiknLCJbY2xhc3MubmctcGVuZGluZ10iOidpcygicGVuZGluZyIpJywiW2NsYXNzLm5nLXN1Ym1pdHRlZF0iOidpcygic3VibWl0dGVkIiknfTtjbGFzcyBtVyBleHRlbmRzIGNXe2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQpfX1tVy7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8bVcpKGdmKGxXLDIpKX0sbVcuybVkaXI9aG8oe3R5cGU6bVcsc2VsZWN0b3JzOltbIiIsImZvcm1Db250cm9sTmFtZSIsIiJdLFsiIiwibmdNb2RlbCIsIiJdLFsiIiwiZm9ybUNvbnRyb2wiLCIiXV0saG9zdFZhcnM6MTQsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQoZSxuKXsyJmUmJmN1KCJuZy11bnRvdWNoZWQiLG4uaXMoInVudG91Y2hlZCIpKSgibmctdG91Y2hlZCIsbi5pcygidG91Y2hlZCIpKSgibmctcHJpc3RpbmUiLG4uaXMoInByaXN0aW5lIikpKCJuZy1kaXJ0eSIsbi5pcygiZGlydHkiKSkoIm5nLXZhbGlkIixuLmlzKCJ2YWxpZCIpKSgibmctaW52YWxpZCIsbi5pcygiaW52YWxpZCIpKSgibmctcGVuZGluZyIsbi5pcygicGVuZGluZyIpKX0sZmVhdHVyZXM6W1FwXX0pLG1XLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6bFcsZGVjb3JhdG9yczpbe3R5cGU6VnJ9XX1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIobVcsW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3RvcjoiW2Zvcm1Db250cm9sTmFtZV0sW25nTW9kZWxdLFtmb3JtQ29udHJvbF0iLGhvc3Q6ZFd9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpsVyxkZWNvcmF0b3JzOlt7dHlwZTpWcn1dfV19KSxudWxsKTtjbGFzcyBmVyBleHRlbmRzIGNXe2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQpfX1mVy7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8ZlcpKGdmKHNXLDEwKSl9LGZXLsm1ZGlyPWhvKHt0eXBlOmZXLHNlbGVjdG9yczpbWyIiLCJmb3JtR3JvdXBOYW1lIiwiIl0sWyIiLCJmb3JtQXJyYXlOYW1lIiwiIl0sWyIiLCJuZ01vZGVsR3JvdXAiLCIiXSxbIiIsImZvcm1Hcm91cCIsIiJdLFsiZm9ybSIsMywibmdOb0Zvcm0iLCIiXSxbIiIsIm5nRm9ybSIsIiJdXSxob3N0VmFyczoxNixob3N0QmluZGluZ3M6ZnVuY3Rpb24gdChlLG4pezImZSYmY3UoIm5nLXVudG91Y2hlZCIsbi5pcygidW50b3VjaGVkIikpKCJuZy10b3VjaGVkIixuLmlzKCJ0b3VjaGVkIikpKCJuZy1wcmlzdGluZSIsbi5pcygicHJpc3RpbmUiKSkoIm5nLWRpcnR5IixuLmlzKCJkaXJ0eSIpKSgibmctdmFsaWQiLG4uaXMoInZhbGlkIikpKCJuZy1pbnZhbGlkIixuLmlzKCJpbnZhbGlkIikpKCJuZy1wZW5kaW5nIixuLmlzKCJwZW5kaW5nIikpKCJuZy1zdWJtaXR0ZWQiLG4uaXMoInN1Ym1pdHRlZCIpKX0sZmVhdHVyZXM6W1FwXX0pLGZXLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6c1csZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOlZyfV19XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKGZXLFt7dHlwZTprXyxhcmdzOlt7c2VsZWN0b3I6Iltmb3JtR3JvdXBOYW1lXSxbZm9ybUFycmF5TmFtZV0sW25nTW9kZWxHcm91cF0sW2Zvcm1Hcm91cF0sZm9ybTpub3QoW25nTm9Gb3JtXSksW25nRm9ybV0iLGhvc3Q6cFd9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpzVyxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6VnJ9XX1dfSksbnVsbCk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjb25zdCB1Vz0nXG4gICAgPGRpdiBbZm9ybUdyb3VwXT0ibXlHcm91cCI+XG4gICAgICA8aW5wdXQgZm9ybUNvbnRyb2xOYW1lPSJmaXJzdE5hbWUiPlxuICAgIDwvZGl2PlxuXG4gICAgSW4geW91ciBjbGFzczpcblxuICAgIHRoaXMubXlHcm91cCA9IG5ldyBGb3JtR3JvdXAoe1xuICAgICAgIGZpcnN0TmFtZTogbmV3IEZvcm1Db250cm9sKClcbiAgICB9KTsnLGdXPSdcbiAgICA8ZGl2IFtmb3JtR3JvdXBdPSJteUdyb3VwIj5cbiAgICAgICA8ZGl2IGZvcm1Hcm91cE5hbWU9InBlcnNvbiI+XG4gICAgICAgICAgPGlucHV0IGZvcm1Db250cm9sTmFtZT0iZmlyc3ROYW1lIj5cbiAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIEluIHlvdXIgY2xhc3M6XG5cbiAgICB0aGlzLm15R3JvdXAgPSBuZXcgRm9ybUdyb3VwKHtcbiAgICAgICBwZXJzb246IG5ldyBGb3JtR3JvdXAoeyBmaXJzdE5hbWU6IG5ldyBGb3JtQ29udHJvbCgpIH0pXG4gICAgfSk7JyxoVz0nXG4gICAgPGRpdiBbZm9ybUdyb3VwXT0ibXlHcm91cCI+XG4gICAgICA8ZGl2IGZvcm1BcnJheU5hbWU9ImNpdGllcyI+XG4gICAgICAgIDxkaXYgKm5nRm9yPSJsZXQgY2l0eSBvZiBjaXR5QXJyYXkuY29udHJvbHM7IGluZGV4IGFzIGkiPlxuICAgICAgICAgIDxpbnB1dCBbZm9ybUNvbnRyb2xOYW1lXT0iaSI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICBJbiB5b3VyIGNsYXNzOlxuXG4gICAgdGhpcy5jaXR5QXJyYXkgPSBuZXcgRm9ybUFycmF5KFtuZXcgRm9ybUNvbnRyb2woXCdTRlwnKV0pO1xuICAgIHRoaXMubXlHcm91cCA9IG5ldyBGb3JtR3JvdXAoe1xuICAgICAgY2l0aWVzOiB0aGlzLmNpdHlBcnJheVxuICAgIH0pOycsYlc9J1xuICAgIDxmb3JtPlxuICAgICAgIDxkaXYgbmdNb2RlbEdyb3VwPSJwZXJzb24iPlxuICAgICAgICAgIDxpbnB1dCBbKG5nTW9kZWwpXT0icGVyc29uLm5hbWUiIG5hbWU9ImZpcnN0TmFtZSI+XG4gICAgICAgPC9kaXY+XG4gICAgPC9mb3JtPicseVc9J1xuICAgIDxkaXYgW2Zvcm1Hcm91cF09Im15R3JvdXAiPlxuICAgICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9ImZpcnN0TmFtZSI+XG4gICAgICAgPGlucHV0IFsobmdNb2RlbCldPSJzaG93TW9yZUNvbnRyb2xzIiBbbmdNb2RlbE9wdGlvbnNdPSJ7c3RhbmRhbG9uZTogdHJ1ZX0iPlxuICAgIDwvZGl2PlxuICAnOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jbGFzcyBfV3tzdGF0aWMgY29udHJvbFBhcmVudEV4Y2VwdGlvbigpe3Rocm93IG5ldyBFcnJvcihgZm9ybUNvbnRyb2xOYW1lIG11c3QgYmUgdXNlZCB3aXRoIGEgcGFyZW50IGZvcm1Hcm91cCBkaXJlY3RpdmUuICBZb3UnbGwgd2FudCB0byBhZGQgYSBmb3JtR3JvdXBcbiAgICAgICBkaXJlY3RpdmUgYW5kIHBhc3MgaXQgYW4gZXhpc3RpbmcgRm9ybUdyb3VwIGluc3RhbmNlICh5b3UgY2FuIGNyZWF0ZSBvbmUgaW4geW91ciBjbGFzcykuXG5cbiAgICAgIEV4YW1wbGU6XG5cbiAgICAgICR7dVd9YCl9c3RhdGljIG5nTW9kZWxHcm91cEV4Y2VwdGlvbigpe3Rocm93IG5ldyBFcnJvcihgZm9ybUNvbnRyb2xOYW1lIGNhbm5vdCBiZSB1c2VkIHdpdGggYW4gbmdNb2RlbEdyb3VwIHBhcmVudC4gSXQgaXMgb25seSBjb21wYXRpYmxlIHdpdGggcGFyZW50c1xuICAgICAgIHRoYXQgYWxzbyBoYXZlIGEgImZvcm0iIHByZWZpeDogZm9ybUdyb3VwTmFtZSwgZm9ybUFycmF5TmFtZSwgb3IgZm9ybUdyb3VwLlxuXG4gICAgICAgT3B0aW9uIDE6ICBVcGRhdGUgdGhlIHBhcmVudCB0byBiZSBmb3JtR3JvdXBOYW1lIChyZWFjdGl2ZSBmb3JtIHN0cmF0ZWd5KVxuXG4gICAgICAgICR7Z1d9XG5cbiAgICAgICAgT3B0aW9uIDI6IFVzZSBuZ01vZGVsIGluc3RlYWQgb2YgZm9ybUNvbnRyb2xOYW1lICh0ZW1wbGF0ZS1kcml2ZW4gc3RyYXRlZ3kpXG5cbiAgICAgICAgJHtiV31gKX1zdGF0aWMgbWlzc2luZ0Zvcm1FeGNlcHRpb24oKXt0aHJvdyBuZXcgRXJyb3IoYGZvcm1Hcm91cCBleHBlY3RzIGEgRm9ybUdyb3VwIGluc3RhbmNlLiBQbGVhc2UgcGFzcyBvbmUgaW4uXG5cbiAgICAgICBFeGFtcGxlOlxuXG4gICAgICAgJHt1V31gKX1zdGF0aWMgZ3JvdXBQYXJlbnRFeGNlcHRpb24oKXt0aHJvdyBuZXcgRXJyb3IoYGZvcm1Hcm91cE5hbWUgbXVzdCBiZSB1c2VkIHdpdGggYSBwYXJlbnQgZm9ybUdyb3VwIGRpcmVjdGl2ZS4gIFlvdSdsbCB3YW50IHRvIGFkZCBhIGZvcm1Hcm91cFxuICAgICAgZGlyZWN0aXZlIGFuZCBwYXNzIGl0IGFuIGV4aXN0aW5nIEZvcm1Hcm91cCBpbnN0YW5jZSAoeW91IGNhbiBjcmVhdGUgb25lIGluIHlvdXIgY2xhc3MpLlxuXG4gICAgICBFeGFtcGxlOlxuXG4gICAgICAke2dXfWApfXN0YXRpYyBhcnJheVBhcmVudEV4Y2VwdGlvbigpe3Rocm93IG5ldyBFcnJvcihgZm9ybUFycmF5TmFtZSBtdXN0IGJlIHVzZWQgd2l0aCBhIHBhcmVudCBmb3JtR3JvdXAgZGlyZWN0aXZlLiAgWW91J2xsIHdhbnQgdG8gYWRkIGEgZm9ybUdyb3VwXG4gICAgICAgZGlyZWN0aXZlIGFuZCBwYXNzIGl0IGFuIGV4aXN0aW5nIEZvcm1Hcm91cCBpbnN0YW5jZSAoeW91IGNhbiBjcmVhdGUgb25lIGluIHlvdXIgY2xhc3MpLlxuXG4gICAgICAgIEV4YW1wbGU6XG5cbiAgICAgICAgJHtoV31gKX1zdGF0aWMgZGlzYWJsZWRBdHRyV2FybmluZygpe2NvbnNvbGUud2FybigiXG4gICAgICBJdCBsb29rcyBsaWtlIHlvdSdyZSB1c2luZyB0aGUgZGlzYWJsZWQgYXR0cmlidXRlIHdpdGggYSByZWFjdGl2ZSBmb3JtIGRpcmVjdGl2ZS4gSWYgeW91IHNldCBkaXNhYmxlZCB0byB0cnVlXG4gICAgICB3aGVuIHlvdSBzZXQgdXAgdGhpcyBjb250cm9sIGluIHlvdXIgY29tcG9uZW50IGNsYXNzLCB0aGUgZGlzYWJsZWQgYXR0cmlidXRlIHdpbGwgYWN0dWFsbHkgYmUgc2V0IGluIHRoZSBET00gZm9yXG4gICAgICB5b3UuIFdlIHJlY29tbWVuZCB1c2luZyB0aGlzIGFwcHJvYWNoIHRvIGF2b2lkICdjaGFuZ2VkIGFmdGVyIGNoZWNrZWQnIGVycm9ycy5cblxuICAgICAgRXhhbXBsZTpcbiAgICAgIGZvcm0gPSBuZXcgRm9ybUdyb3VwKHtcbiAgICAgICAgZmlyc3Q6IG5ldyBGb3JtQ29udHJvbCh7dmFsdWU6ICdOYW5jeScsIGRpc2FibGVkOiB0cnVlfSwgVmFsaWRhdG9ycy5yZXF1aXJlZCksXG4gICAgICAgIGxhc3Q6IG5ldyBGb3JtQ29udHJvbCgnRHJldycsIFZhbGlkYXRvcnMucmVxdWlyZWQpXG4gICAgICB9KTtcbiAgICAiKX1zdGF0aWMgbmdNb2RlbFdhcm5pbmcodCl7Y29uc29sZS53YXJuKGBcbiAgICBJdCBsb29rcyBsaWtlIHlvdSdyZSB1c2luZyBuZ01vZGVsIG9uIHRoZSBzYW1lIGZvcm0gZmllbGQgYXMgJHt0fS5cbiAgICBTdXBwb3J0IGZvciB1c2luZyB0aGUgbmdNb2RlbCBpbnB1dCBwcm9wZXJ0eSBhbmQgbmdNb2RlbENoYW5nZSBldmVudCB3aXRoXG4gICAgcmVhY3RpdmUgZm9ybSBkaXJlY3RpdmVzIGhhcyBiZWVuIGRlcHJlY2F0ZWQgaW4gQW5ndWxhciB2NiBhbmQgd2lsbCBiZSByZW1vdmVkXG4gICAgaW4gYSBmdXR1cmUgdmVyc2lvbiBvZiBBbmd1bGFyLlxuXG4gICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhpcywgc2VlIG91ciBBUEkgZG9jcyBoZXJlOlxuICAgIGh0dHBzOi8vYW5ndWxhci5pby9hcGkvZm9ybXMvJHsiZm9ybUNvbnRyb2wiPT09dD8iRm9ybUNvbnRyb2xEaXJlY3RpdmUiOiJGb3JtQ29udHJvbE5hbWUifSN1c2Utd2l0aC1uZ21vZGVsXG4gICAgYCl9fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9mdW5jdGlvbiBDVyh0LGUpe3JldHVyblsuLi5lLnBhdGgsdF19ZnVuY3Rpb24gTVcodCxlKXsoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJih0fHxTVyhlLCJDYW5ub3QgZmluZCBjb250cm9sIHdpdGgiKSxlLnZhbHVlQWNjZXNzb3J8fFNXKGUsIk5vIHZhbHVlIGFjY2Vzc29yIGZvciBmb3JtIGNvbnRyb2wgd2l0aCIpKSxPVyh0LGUpLGUudmFsdWVBY2Nlc3Nvci53cml0ZVZhbHVlKHQudmFsdWUpLChmdW5jdGlvbiBuKHQsZSl7ZS52YWx1ZUFjY2Vzc29yLnJlZ2lzdGVyT25DaGFuZ2UoKG49Pnt0Ll9wZW5kaW5nVmFsdWU9bix0Ll9wZW5kaW5nQ2hhbmdlPSEwLHQuX3BlbmRpbmdEaXJ0eT0hMCwiY2hhbmdlIj09PXQudXBkYXRlT24mJndXKHQsZSl9KSl9KSh0LGUpLChmdW5jdGlvbiBvKHQsZSl7Y29uc3Qgbj0odCxuKT0+e2UudmFsdWVBY2Nlc3Nvci53cml0ZVZhbHVlKHQpLG4mJmUudmlld1RvTW9kZWxVcGRhdGUodCl9O3QucmVnaXN0ZXJPbkNoYW5nZShuKSxlLl9yZWdpc3Rlck9uRGVzdHJveSgoKCk9Pnt0Ll91bnJlZ2lzdGVyT25DaGFuZ2Uobil9KSl9KSh0LGUpLChmdW5jdGlvbiBpKHQsZSl7ZS52YWx1ZUFjY2Vzc29yLnJlZ2lzdGVyT25Ub3VjaGVkKCgoKT0+e3QuX3BlbmRpbmdUb3VjaGVkPSEwLCJibHVyIj09PXQudXBkYXRlT24mJnQuX3BlbmRpbmdDaGFuZ2UmJndXKHQsZSksInN1Ym1pdCIhPT10LnVwZGF0ZU9uJiZ0Lm1hcmtBc1RvdWNoZWQoKX0pKX0pKHQsZSksKGZ1bmN0aW9uIGEodCxlKXtpZihlLnZhbHVlQWNjZXNzb3Iuc2V0RGlzYWJsZWRTdGF0ZSl7Y29uc3Qgbj10PT57ZS52YWx1ZUFjY2Vzc29yLnNldERpc2FibGVkU3RhdGUodCl9O3QucmVnaXN0ZXJPbkRpc2FibGVkQ2hhbmdlKG4pLGUuX3JlZ2lzdGVyT25EZXN0cm95KCgoKT0+e3QuX3VucmVnaXN0ZXJPbkRpc2FibGVkQ2hhbmdlKG4pfSkpfX0pKHQsZSl9ZnVuY3Rpb24gdlcodCxlLG49ITApe2NvbnN0IG89KCk9PntuJiYoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJihmdW5jdGlvbiB0KGUpe3JldHVybiBTVyhlLCJUaGVyZSBpcyBubyBGb3JtQ29udHJvbCBpbnN0YW5jZSBhdHRhY2hlZCB0byBmb3JtIGNvbnRyb2wgZWxlbWVudCB3aXRoIil9KShlKX07ZS52YWx1ZUFjY2Vzc29yJiYoZS52YWx1ZUFjY2Vzc29yLnJlZ2lzdGVyT25DaGFuZ2UobyksZS52YWx1ZUFjY2Vzc29yLnJlZ2lzdGVyT25Ub3VjaGVkKG8pKSxQVyh0LGUpLHQmJihlLl9pbnZva2VPbkRlc3Ryb3lDYWxsYmFja3MoKSx0Ll9yZWdpc3Rlck9uQ29sbGVjdGlvbkNoYW5nZSgoKCk9Pnt9KSkpfWZ1bmN0aW9uIHhXKHQsZSl7dC5mb3JFYWNoKCh0PT57dC5yZWdpc3Rlck9uVmFsaWRhdG9yQ2hhbmdlJiZ0LnJlZ2lzdGVyT25WYWxpZGF0b3JDaGFuZ2UoZSl9KSl9ZnVuY3Rpb24gT1codCxlKXtjb25zdCBuPXRXKHQpO251bGwhPT1lLnZhbGlkYXRvcj90LnNldFZhbGlkYXRvcnMoJFUobixlLnZhbGlkYXRvcikpOiJmdW5jdGlvbiI9PXR5cGVvZiBuJiZ0LnNldFZhbGlkYXRvcnMoW25dKTtjb25zdCBvPWVXKHQpO251bGwhPT1lLmFzeW5jVmFsaWRhdG9yP3Quc2V0QXN5bmNWYWxpZGF0b3JzKCRVKG8sZS5hc3luY1ZhbGlkYXRvcikpOiJmdW5jdGlvbiI9PXR5cGVvZiBvJiZ0LnNldEFzeW5jVmFsaWRhdG9ycyhbb10pO2NvbnN0IGk9KCk9PnQudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO3hXKGUuX3Jhd1ZhbGlkYXRvcnMsaSkseFcoZS5fcmF3QXN5bmNWYWxpZGF0b3JzLGkpfWZ1bmN0aW9uIFBXKHQsZSl7bGV0IG49ITE7aWYobnVsbCE9PXQpe2lmKG51bGwhPT1lLnZhbGlkYXRvcil7Y29uc3Qgbz10Vyh0KTtpZihBcnJheS5pc0FycmF5KG8pJiZvLmxlbmd0aD4wKXtjb25zdCBpPW8uZmlsdGVyKCh0PT50IT09ZS52YWxpZGF0b3IpKTtpLmxlbmd0aCE9PW8ubGVuZ3RoJiYobj0hMCx0LnNldFZhbGlkYXRvcnMoaSkpfX1pZihudWxsIT09ZS5hc3luY1ZhbGlkYXRvcil7Y29uc3Qgbz1lVyh0KTtpZihBcnJheS5pc0FycmF5KG8pJiZvLmxlbmd0aD4wKXtjb25zdCBpPW8uZmlsdGVyKCh0PT50IT09ZS5hc3luY1ZhbGlkYXRvcikpO2kubGVuZ3RoIT09by5sZW5ndGgmJihuPSEwLHQuc2V0QXN5bmNWYWxpZGF0b3JzKGkpKX19fWNvbnN0IG89KCk9Pnt9O3JldHVybiB4VyhlLl9yYXdWYWxpZGF0b3JzLG8pLHhXKGUuX3Jhd0FzeW5jVmFsaWRhdG9ycyxvKSxufWZ1bmN0aW9uIHdXKHQsZSl7dC5fcGVuZGluZ0RpcnR5JiZ0Lm1hcmtBc0RpcnR5KCksdC5zZXRWYWx1ZSh0Ll9wZW5kaW5nVmFsdWUse2VtaXRNb2RlbFRvVmlld0NoYW5nZTohMX0pLGUudmlld1RvTW9kZWxVcGRhdGUodC5fcGVuZGluZ1ZhbHVlKSx0Ll9wZW5kaW5nQ2hhbmdlPSExfWZ1bmN0aW9uIGtXKHQsZSl7bnVsbCE9dHx8InVuZGVmaW5lZCIhPXR5cGVvZiBuZ0Rldk1vZGUmJiFuZ0Rldk1vZGV8fFNXKGUsIkNhbm5vdCBmaW5kIGNvbnRyb2wgd2l0aCIpLE9XKHQsZSl9ZnVuY3Rpb24gU1codCxlKXtsZXQgbjt0aHJvdyBuPXQucGF0aC5sZW5ndGg+MT9gcGF0aDogJyR7dC5wYXRoLmpvaW4oIiAtPiAiKX0nYDp0LnBhdGhbMF0/YG5hbWU6ICcke3QucGF0aH0nYDoidW5zcGVjaWZpZWQgbmFtZSBhdHRyaWJ1dGUiLG5ldyBFcnJvcihgJHtlfSAke259YCl9ZnVuY3Rpb24gRFcodCxlKXtpZighdC5oYXNPd25Qcm9wZXJ0eSgibW9kZWwiKSlyZXR1cm4hMTtjb25zdCBuPXQubW9kZWw7cmV0dXJuISFuLmlzRmlyc3RDaGFuZ2UoKXx8IU9iamVjdC5pcyhlLG4uY3VycmVudFZhbHVlKX1mdW5jdGlvbiBSVyh0LGUpe3QuX3N5bmNQZW5kaW5nQ29udHJvbHMoKSxlLmZvckVhY2goKHQ9Pntjb25zdCBlPXQuY29udHJvbDsic3VibWl0Ij09PWUudXBkYXRlT24mJmUuX3BlbmRpbmdDaGFuZ2UmJih0LnZpZXdUb01vZGVsVXBkYXRlKGUuX3BlbmRpbmdWYWx1ZSksZS5fcGVuZGluZ0NoYW5nZT0hMSl9KSl9ZnVuY3Rpb24gRVcodCxlKXtpZighZSlyZXR1cm4gbnVsbDtsZXQgbixvLGk7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSl8fCJ1bmRlZmluZWQiIT10eXBlb2YgbmdEZXZNb2RlJiYhbmdEZXZNb2RlfHxTVyh0LCJWYWx1ZSBhY2Nlc3NvciB3YXMgbm90IHByb3ZpZGVkIGFzIGFuIGFycmF5IGZvciBmb3JtIGNvbnRyb2wgd2l0aCIpLGUuZm9yRWFjaCgoZT0+e2UuY29uc3RydWN0b3I9PT1TVT9uPWU6IShmdW5jdGlvbiBhKHQpe3JldHVybiBPYmplY3QuZ2V0UHJvdG90eXBlT2YodC5jb25zdHJ1Y3Rvcik9PT12VX0pKGUpPyhpJiYoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlNXKHQsIk1vcmUgdGhhbiBvbmUgY3VzdG9tIHZhbHVlIGFjY2Vzc29yIG1hdGNoZXMgZm9ybSBjb250cm9sIHdpdGgiKSxpPWUpOihvJiYoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlNXKHQsIk1vcmUgdGhhbiBvbmUgYnVpbHQtaW4gdmFsdWUgYWNjZXNzb3IgbWF0Y2hlcyBmb3JtIGNvbnRyb2wgd2l0aCIpLG89ZSl9KSksaXx8KG98fChufHwoKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZTVyh0LCJObyB2YWxpZCB2YWx1ZSBhY2Nlc3NvciBmb3IgZm9ybSBjb250cm9sIHdpdGgiKSxudWxsKSkpfWZ1bmN0aW9uIEFXKHQsZSl7Y29uc3Qgbj10LmluZGV4T2YoZSk7bj4tMSYmdC5zcGxpY2UobiwxKX1mdW5jdGlvbiBUVyh0LGUsbixvKXsibmV2ZXIiIT09byYmKChudWxsIT09byYmIm9uY2UiIT09b3x8ZS5fbmdNb2RlbFdhcm5pbmdTZW50T25jZSkmJigiYWx3YXlzIiE9PW98fG4uX25nTW9kZWxXYXJuaW5nU2VudCl8fChfVy5uZ01vZGVsV2FybmluZyh0KSxlLl9uZ01vZGVsV2FybmluZ1NlbnRPbmNlPSEwLG4uX25nTW9kZWxXYXJuaW5nU2VudD0hMCkpfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jb25zdCBOVz0iVkFMSUQiLHpXPSJJTlZBTElEIixJVz0iUEVORElORyIsSFc9IkRJU0FCTEVEIjtmdW5jdGlvbiBGVyh0KXtyZXR1cm4oalcodCk/dC52YWxpZGF0b3JzOnQpfHxudWxsfWZ1bmN0aW9uIExXKHQpe3JldHVybiBBcnJheS5pc0FycmF5KHQpP0tVKHQpOnR8fG51bGx9ZnVuY3Rpb24gQlcodCxlKXtyZXR1cm4oalcoZSk/ZS5hc3luY1ZhbGlkYXRvcnM6dCl8fG51bGx9ZnVuY3Rpb24gVlcodCl7cmV0dXJuIEFycmF5LmlzQXJyYXkodCk/UVUodCk6dHx8bnVsbH1mdW5jdGlvbiBqVyh0KXtyZXR1cm4gbnVsbCE9dCYmIUFycmF5LmlzQXJyYXkodCkmJiJvYmplY3QiPT10eXBlb2YgdH1jbGFzcyBVV3tjb25zdHJ1Y3Rvcih0LGUpe3RoaXMuX2hhc093blBlbmRpbmdBc3luY1ZhbGlkYXRvcj0hMSx0aGlzLl9vbkNvbGxlY3Rpb25DaGFuZ2U9KCk9Pnt9LHRoaXMuX3BhcmVudD1udWxsLHRoaXMucHJpc3RpbmU9ITAsdGhpcy50b3VjaGVkPSExLHRoaXMuX29uRGlzYWJsZWRDaGFuZ2U9W10sdGhpcy5fcmF3VmFsaWRhdG9ycz10LHRoaXMuX3Jhd0FzeW5jVmFsaWRhdG9ycz1lLHRoaXMuX2NvbXBvc2VkVmFsaWRhdG9yRm49TFcodGhpcy5fcmF3VmFsaWRhdG9ycyksdGhpcy5fY29tcG9zZWRBc3luY1ZhbGlkYXRvckZuPVZXKHRoaXMuX3Jhd0FzeW5jVmFsaWRhdG9ycyl9Z2V0IHZhbGlkYXRvcigpe3JldHVybiB0aGlzLl9jb21wb3NlZFZhbGlkYXRvckZufXNldCB2YWxpZGF0b3IodCl7dGhpcy5fcmF3VmFsaWRhdG9ycz10aGlzLl9jb21wb3NlZFZhbGlkYXRvckZuPXR9Z2V0IGFzeW5jVmFsaWRhdG9yKCl7cmV0dXJuIHRoaXMuX2NvbXBvc2VkQXN5bmNWYWxpZGF0b3JGbn1zZXQgYXN5bmNWYWxpZGF0b3IodCl7dGhpcy5fcmF3QXN5bmNWYWxpZGF0b3JzPXRoaXMuX2NvbXBvc2VkQXN5bmNWYWxpZGF0b3JGbj10fWdldCBwYXJlbnQoKXtyZXR1cm4gdGhpcy5fcGFyZW50fWdldCB2YWxpZCgpe3JldHVybiB0aGlzLnN0YXR1cz09PU5XfWdldCBpbnZhbGlkKCl7cmV0dXJuIHRoaXMuc3RhdHVzPT09eld9Z2V0IHBlbmRpbmcoKXtyZXR1cm4gdGhpcy5zdGF0dXM9PUlXfWdldCBkaXNhYmxlZCgpe3JldHVybiB0aGlzLnN0YXR1cz09PUhXfWdldCBlbmFibGVkKCl7cmV0dXJuIHRoaXMuc3RhdHVzIT09SFd9Z2V0IGRpcnR5KCl7cmV0dXJuIXRoaXMucHJpc3RpbmV9Z2V0IHVudG91Y2hlZCgpe3JldHVybiF0aGlzLnRvdWNoZWR9Z2V0IHVwZGF0ZU9uKCl7cmV0dXJuIHRoaXMuX3VwZGF0ZU9uP3RoaXMuX3VwZGF0ZU9uOnRoaXMucGFyZW50P3RoaXMucGFyZW50LnVwZGF0ZU9uOiJjaGFuZ2UifXNldFZhbGlkYXRvcnModCl7dGhpcy5fcmF3VmFsaWRhdG9ycz10LHRoaXMuX2NvbXBvc2VkVmFsaWRhdG9yRm49TFcodCl9c2V0QXN5bmNWYWxpZGF0b3JzKHQpe3RoaXMuX3Jhd0FzeW5jVmFsaWRhdG9ycz10LHRoaXMuX2NvbXBvc2VkQXN5bmNWYWxpZGF0b3JGbj1WVyh0KX1hZGRWYWxpZGF0b3JzKHQpe3RoaXMuc2V0VmFsaWRhdG9ycyhpVyh0LHRoaXMuX3Jhd1ZhbGlkYXRvcnMpKX1hZGRBc3luY1ZhbGlkYXRvcnModCl7dGhpcy5zZXRBc3luY1ZhbGlkYXRvcnMoaVcodCx0aGlzLl9yYXdBc3luY1ZhbGlkYXRvcnMpKX1yZW1vdmVWYWxpZGF0b3JzKHQpe3RoaXMuc2V0VmFsaWRhdG9ycyhhVyh0LHRoaXMuX3Jhd1ZhbGlkYXRvcnMpKX1yZW1vdmVBc3luY1ZhbGlkYXRvcnModCl7dGhpcy5zZXRBc3luY1ZhbGlkYXRvcnMoYVcodCx0aGlzLl9yYXdBc3luY1ZhbGlkYXRvcnMpKX1oYXNWYWxpZGF0b3IodCl7cmV0dXJuIG9XKHRoaXMuX3Jhd1ZhbGlkYXRvcnMsdCl9aGFzQXN5bmNWYWxpZGF0b3IodCl7cmV0dXJuIG9XKHRoaXMuX3Jhd0FzeW5jVmFsaWRhdG9ycyx0KX1jbGVhclZhbGlkYXRvcnMoKXt0aGlzLnZhbGlkYXRvcj1udWxsfWNsZWFyQXN5bmNWYWxpZGF0b3JzKCl7dGhpcy5hc3luY1ZhbGlkYXRvcj1udWxsfW1hcmtBc1RvdWNoZWQodD17fSl7dGhpcy50b3VjaGVkPSEwLHRoaXMuX3BhcmVudCYmIXQub25seVNlbGYmJnRoaXMuX3BhcmVudC5tYXJrQXNUb3VjaGVkKHQpfW1hcmtBbGxBc1RvdWNoZWQoKXt0aGlzLm1hcmtBc1RvdWNoZWQoe29ubHlTZWxmOiEwfSksdGhpcy5fZm9yRWFjaENoaWxkKCh0PT50Lm1hcmtBbGxBc1RvdWNoZWQoKSkpfW1hcmtBc1VudG91Y2hlZCh0PXt9KXt0aGlzLnRvdWNoZWQ9ITEsdGhpcy5fcGVuZGluZ1RvdWNoZWQ9ITEsdGhpcy5fZm9yRWFjaENoaWxkKCh0PT57dC5tYXJrQXNVbnRvdWNoZWQoe29ubHlTZWxmOiEwfSl9KSksdGhpcy5fcGFyZW50JiYhdC5vbmx5U2VsZiYmdGhpcy5fcGFyZW50Ll91cGRhdGVUb3VjaGVkKHQpfW1hcmtBc0RpcnR5KHQ9e30pe3RoaXMucHJpc3RpbmU9ITEsdGhpcy5fcGFyZW50JiYhdC5vbmx5U2VsZiYmdGhpcy5fcGFyZW50Lm1hcmtBc0RpcnR5KHQpfW1hcmtBc1ByaXN0aW5lKHQ9e30pe3RoaXMucHJpc3RpbmU9ITAsdGhpcy5fcGVuZGluZ0RpcnR5PSExLHRoaXMuX2ZvckVhY2hDaGlsZCgodD0+e3QubWFya0FzUHJpc3RpbmUoe29ubHlTZWxmOiEwfSl9KSksdGhpcy5fcGFyZW50JiYhdC5vbmx5U2VsZiYmdGhpcy5fcGFyZW50Ll91cGRhdGVQcmlzdGluZSh0KX1tYXJrQXNQZW5kaW5nKHQ9e30pe3RoaXMuc3RhdHVzPUlXLCExIT09dC5lbWl0RXZlbnQmJnRoaXMuc3RhdHVzQ2hhbmdlcy5lbWl0KHRoaXMuc3RhdHVzKSx0aGlzLl9wYXJlbnQmJiF0Lm9ubHlTZWxmJiZ0aGlzLl9wYXJlbnQubWFya0FzUGVuZGluZyh0KX1kaXNhYmxlKHQ9e30pe2NvbnN0IGU9dGhpcy5fcGFyZW50TWFya2VkRGlydHkodC5vbmx5U2VsZik7dGhpcy5zdGF0dXM9SFcsdGhpcy5lcnJvcnM9bnVsbCx0aGlzLl9mb3JFYWNoQ2hpbGQoKGU9PntlLmRpc2FibGUoT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtvbmx5U2VsZjohMH0pKX0pKSx0aGlzLl91cGRhdGVWYWx1ZSgpLCExIT09dC5lbWl0RXZlbnQmJih0aGlzLnZhbHVlQ2hhbmdlcy5lbWl0KHRoaXMudmFsdWUpLHRoaXMuc3RhdHVzQ2hhbmdlcy5lbWl0KHRoaXMuc3RhdHVzKSksdGhpcy5fdXBkYXRlQW5jZXN0b3JzKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7c2tpcFByaXN0aW5lQ2hlY2s6ZX0pKSx0aGlzLl9vbkRpc2FibGVkQ2hhbmdlLmZvckVhY2goKHQ9PnQoITApKSl9ZW5hYmxlKHQ9e30pe2NvbnN0IGU9dGhpcy5fcGFyZW50TWFya2VkRGlydHkodC5vbmx5U2VsZik7dGhpcy5zdGF0dXM9TlcsdGhpcy5fZm9yRWFjaENoaWxkKChlPT57ZS5lbmFibGUoT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtvbmx5U2VsZjohMH0pKX0pKSx0aGlzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe29ubHlTZWxmOiEwLGVtaXRFdmVudDp0LmVtaXRFdmVudH0pLHRoaXMuX3VwZGF0ZUFuY2VzdG9ycyhPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3NraXBQcmlzdGluZUNoZWNrOmV9KSksdGhpcy5fb25EaXNhYmxlZENoYW5nZS5mb3JFYWNoKCh0PT50KCExKSkpfV91cGRhdGVBbmNlc3RvcnModCl7dGhpcy5fcGFyZW50JiYhdC5vbmx5U2VsZiYmKHRoaXMuX3BhcmVudC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHQpLHQuc2tpcFByaXN0aW5lQ2hlY2t8fHRoaXMuX3BhcmVudC5fdXBkYXRlUHJpc3RpbmUoKSx0aGlzLl9wYXJlbnQuX3VwZGF0ZVRvdWNoZWQoKSl9c2V0UGFyZW50KHQpe3RoaXMuX3BhcmVudD10fXVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkodD17fSl7dGhpcy5fc2V0SW5pdGlhbFN0YXR1cygpLHRoaXMuX3VwZGF0ZVZhbHVlKCksdGhpcy5lbmFibGVkJiYodGhpcy5fY2FuY2VsRXhpc3RpbmdTdWJzY3JpcHRpb24oKSx0aGlzLmVycm9ycz10aGlzLl9ydW5WYWxpZGF0b3IoKSx0aGlzLnN0YXR1cz10aGlzLl9jYWxjdWxhdGVTdGF0dXMoKSx0aGlzLnN0YXR1cyE9PU5XJiZ0aGlzLnN0YXR1cyE9PUlXfHx0aGlzLl9ydW5Bc3luY1ZhbGlkYXRvcih0LmVtaXRFdmVudCkpLCExIT09dC5lbWl0RXZlbnQmJih0aGlzLnZhbHVlQ2hhbmdlcy5lbWl0KHRoaXMudmFsdWUpLHRoaXMuc3RhdHVzQ2hhbmdlcy5lbWl0KHRoaXMuc3RhdHVzKSksdGhpcy5fcGFyZW50JiYhdC5vbmx5U2VsZiYmdGhpcy5fcGFyZW50LnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkodCl9X3VwZGF0ZVRyZWVWYWxpZGl0eSh0PXtlbWl0RXZlbnQ6ITB9KXt0aGlzLl9mb3JFYWNoQ2hpbGQoKGU9PmUuX3VwZGF0ZVRyZWVWYWxpZGl0eSh0KSkpLHRoaXMudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7b25seVNlbGY6ITAsZW1pdEV2ZW50OnQuZW1pdEV2ZW50fSl9X3NldEluaXRpYWxTdGF0dXMoKXt0aGlzLnN0YXR1cz10aGlzLl9hbGxDb250cm9sc0Rpc2FibGVkKCk/SFc6Tld9X3J1blZhbGlkYXRvcigpe3JldHVybiB0aGlzLnZhbGlkYXRvcj90aGlzLnZhbGlkYXRvcih0aGlzKTpudWxsfV9ydW5Bc3luY1ZhbGlkYXRvcih0KXtpZih0aGlzLmFzeW5jVmFsaWRhdG9yKXt0aGlzLnN0YXR1cz1JVyx0aGlzLl9oYXNPd25QZW5kaW5nQXN5bmNWYWxpZGF0b3I9ITA7Y29uc3QgZT1HVSh0aGlzLmFzeW5jVmFsaWRhdG9yKHRoaXMpKTt0aGlzLl9hc3luY1ZhbGlkYXRpb25TdWJzY3JpcHRpb249ZS5zdWJzY3JpYmUoKGU9Pnt0aGlzLl9oYXNPd25QZW5kaW5nQXN5bmNWYWxpZGF0b3I9ITEsdGhpcy5zZXRFcnJvcnMoZSx7ZW1pdEV2ZW50OnR9KX0pKX19X2NhbmNlbEV4aXN0aW5nU3Vic2NyaXB0aW9uKCl7dGhpcy5fYXN5bmNWYWxpZGF0aW9uU3Vic2NyaXB0aW9uJiYodGhpcy5fYXN5bmNWYWxpZGF0aW9uU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCksdGhpcy5faGFzT3duUGVuZGluZ0FzeW5jVmFsaWRhdG9yPSExKX1zZXRFcnJvcnModCxlPXt9KXt0aGlzLmVycm9ycz10LHRoaXMuX3VwZGF0ZUNvbnRyb2xzRXJyb3JzKCExIT09ZS5lbWl0RXZlbnQpfWdldCh0KXtyZXR1cm4oZnVuY3Rpb24gZSh0LG4sbyl7aWYobnVsbD09bilyZXR1cm4gbnVsbDtpZihBcnJheS5pc0FycmF5KG4pfHwobj1uLnNwbGl0KG8pKSxBcnJheS5pc0FycmF5KG4pJiYwPT09bi5sZW5ndGgpcmV0dXJuIG51bGw7bGV0IGk9dDtyZXR1cm4gbi5mb3JFYWNoKCh0PT57aT1pIGluc3RhbmNlb2YgR1c/aS5jb250cm9scy5oYXNPd25Qcm9wZXJ0eSh0KT9pLmNvbnRyb2xzW3RdOm51bGw6aSBpbnN0YW5jZW9mIFlXJiZpLmF0KHQpfHxudWxsfSkpLGl9KSh0aGlzLHQsIi4iKX1nZXRFcnJvcih0LGUpe2NvbnN0IG49ZT90aGlzLmdldChlKTp0aGlzO3JldHVybiBuJiZuLmVycm9ycz9uLmVycm9yc1t0XTpudWxsfWhhc0Vycm9yKHQsZSl7cmV0dXJuISF0aGlzLmdldEVycm9yKHQsZSl9Z2V0IHJvb3QoKXtsZXQgdD10aGlzO2Zvcig7dC5fcGFyZW50Oyl0PXQuX3BhcmVudDtyZXR1cm4gdH1fdXBkYXRlQ29udHJvbHNFcnJvcnModCl7dGhpcy5zdGF0dXM9dGhpcy5fY2FsY3VsYXRlU3RhdHVzKCksdCYmdGhpcy5zdGF0dXNDaGFuZ2VzLmVtaXQodGhpcy5zdGF0dXMpLHRoaXMuX3BhcmVudCYmdGhpcy5fcGFyZW50Ll91cGRhdGVDb250cm9sc0Vycm9ycyh0KX1faW5pdE9ic2VydmFibGVzKCl7dGhpcy52YWx1ZUNoYW5nZXM9bmV3IFN5LHRoaXMuc3RhdHVzQ2hhbmdlcz1uZXcgU3l9X2NhbGN1bGF0ZVN0YXR1cygpe3JldHVybiB0aGlzLl9hbGxDb250cm9sc0Rpc2FibGVkKCk/SFc6dGhpcy5lcnJvcnM/elc6dGhpcy5faGFzT3duUGVuZGluZ0FzeW5jVmFsaWRhdG9yfHx0aGlzLl9hbnlDb250cm9sc0hhdmVTdGF0dXMoSVcpP0lXOnRoaXMuX2FueUNvbnRyb2xzSGF2ZVN0YXR1cyh6Vyk/elc6Tld9X2FueUNvbnRyb2xzSGF2ZVN0YXR1cyh0KXtyZXR1cm4gdGhpcy5fYW55Q29udHJvbHMoKGU9PmUuc3RhdHVzPT09dCkpfV9hbnlDb250cm9sc0RpcnR5KCl7cmV0dXJuIHRoaXMuX2FueUNvbnRyb2xzKCh0PT50LmRpcnR5KSl9X2FueUNvbnRyb2xzVG91Y2hlZCgpe3JldHVybiB0aGlzLl9hbnlDb250cm9scygodD0+dC50b3VjaGVkKSl9X3VwZGF0ZVByaXN0aW5lKHQ9e30pe3RoaXMucHJpc3RpbmU9IXRoaXMuX2FueUNvbnRyb2xzRGlydHkoKSx0aGlzLl9wYXJlbnQmJiF0Lm9ubHlTZWxmJiZ0aGlzLl9wYXJlbnQuX3VwZGF0ZVByaXN0aW5lKHQpfV91cGRhdGVUb3VjaGVkKHQ9e30pe3RoaXMudG91Y2hlZD10aGlzLl9hbnlDb250cm9sc1RvdWNoZWQoKSx0aGlzLl9wYXJlbnQmJiF0Lm9ubHlTZWxmJiZ0aGlzLl9wYXJlbnQuX3VwZGF0ZVRvdWNoZWQodCl9X2lzQm94ZWRWYWx1ZSh0KXtyZXR1cm4ib2JqZWN0Ij09dHlwZW9mIHQmJm51bGwhPT10JiYyPT09T2JqZWN0LmtleXModCkubGVuZ3RoJiYidmFsdWUiaW4gdCYmImRpc2FibGVkImluIHR9X3JlZ2lzdGVyT25Db2xsZWN0aW9uQ2hhbmdlKHQpe3RoaXMuX29uQ29sbGVjdGlvbkNoYW5nZT10fV9zZXRVcGRhdGVTdHJhdGVneSh0KXtqVyh0KSYmbnVsbCE9dC51cGRhdGVPbiYmKHRoaXMuX3VwZGF0ZU9uPXQudXBkYXRlT24pfV9wYXJlbnRNYXJrZWREaXJ0eSh0KXtyZXR1cm4hdCYmISEodGhpcy5fcGFyZW50JiZ0aGlzLl9wYXJlbnQuZGlydHkpJiYhdGhpcy5fcGFyZW50Ll9hbnlDb250cm9sc0RpcnR5KCl9fWNsYXNzIFdXIGV4dGVuZHMgVVd7Y29uc3RydWN0b3IodD1udWxsLGUsbil7c3VwZXIoRlcoZSksQlcobixlKSksdGhpcy5fb25DaGFuZ2U9W10sdGhpcy5fYXBwbHlGb3JtU3RhdGUodCksdGhpcy5fc2V0VXBkYXRlU3RyYXRlZ3koZSksdGhpcy5faW5pdE9ic2VydmFibGVzKCksdGhpcy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtvbmx5U2VsZjohMCxlbWl0RXZlbnQ6ISF0aGlzLmFzeW5jVmFsaWRhdG9yfSl9c2V0VmFsdWUodCxlPXt9KXt0aGlzLnZhbHVlPXRoaXMuX3BlbmRpbmdWYWx1ZT10LHRoaXMuX29uQ2hhbmdlLmxlbmd0aCYmITEhPT1lLmVtaXRNb2RlbFRvVmlld0NoYW5nZSYmdGhpcy5fb25DaGFuZ2UuZm9yRWFjaCgodD0+dCh0aGlzLnZhbHVlLCExIT09ZS5lbWl0Vmlld1RvTW9kZWxDaGFuZ2UpKSksdGhpcy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KGUpfXBhdGNoVmFsdWUodCxlPXt9KXt0aGlzLnNldFZhbHVlKHQsZSl9cmVzZXQodD1udWxsLGU9e30pe3RoaXMuX2FwcGx5Rm9ybVN0YXRlKHQpLHRoaXMubWFya0FzUHJpc3RpbmUoZSksdGhpcy5tYXJrQXNVbnRvdWNoZWQoZSksdGhpcy5zZXRWYWx1ZSh0aGlzLnZhbHVlLGUpLHRoaXMuX3BlbmRpbmdDaGFuZ2U9ITF9X3VwZGF0ZVZhbHVlKCl7fV9hbnlDb250cm9scyh0KXtyZXR1cm4hMX1fYWxsQ29udHJvbHNEaXNhYmxlZCgpe3JldHVybiB0aGlzLmRpc2FibGVkfXJlZ2lzdGVyT25DaGFuZ2UodCl7dGhpcy5fb25DaGFuZ2UucHVzaCh0KX1fdW5yZWdpc3Rlck9uQ2hhbmdlKHQpe0FXKHRoaXMuX29uQ2hhbmdlLHQpfXJlZ2lzdGVyT25EaXNhYmxlZENoYW5nZSh0KXt0aGlzLl9vbkRpc2FibGVkQ2hhbmdlLnB1c2godCl9X3VucmVnaXN0ZXJPbkRpc2FibGVkQ2hhbmdlKHQpe0FXKHRoaXMuX29uRGlzYWJsZWRDaGFuZ2UsdCl9X2ZvckVhY2hDaGlsZCh0KXt9X3N5bmNQZW5kaW5nQ29udHJvbHMoKXtyZXR1cm4hKCJzdWJtaXQiIT09dGhpcy51cGRhdGVPbnx8KHRoaXMuX3BlbmRpbmdEaXJ0eSYmdGhpcy5tYXJrQXNEaXJ0eSgpLHRoaXMuX3BlbmRpbmdUb3VjaGVkJiZ0aGlzLm1hcmtBc1RvdWNoZWQoKSwhdGhpcy5fcGVuZGluZ0NoYW5nZSkpJiYodGhpcy5zZXRWYWx1ZSh0aGlzLl9wZW5kaW5nVmFsdWUse29ubHlTZWxmOiEwLGVtaXRNb2RlbFRvVmlld0NoYW5nZTohMX0pLCEwKX1fYXBwbHlGb3JtU3RhdGUodCl7dGhpcy5faXNCb3hlZFZhbHVlKHQpPyh0aGlzLnZhbHVlPXRoaXMuX3BlbmRpbmdWYWx1ZT10LnZhbHVlLHQuZGlzYWJsZWQ/dGhpcy5kaXNhYmxlKHtvbmx5U2VsZjohMCxlbWl0RXZlbnQ6ITF9KTp0aGlzLmVuYWJsZSh7b25seVNlbGY6ITAsZW1pdEV2ZW50OiExfSkpOnRoaXMudmFsdWU9dGhpcy5fcGVuZGluZ1ZhbHVlPXR9fWNsYXNzIEdXIGV4dGVuZHMgVVd7Y29uc3RydWN0b3IodCxlLG4pe3N1cGVyKEZXKGUpLEJXKG4sZSkpLHRoaXMuY29udHJvbHM9dCx0aGlzLl9pbml0T2JzZXJ2YWJsZXMoKSx0aGlzLl9zZXRVcGRhdGVTdHJhdGVneShlKSx0aGlzLl9zZXRVcENvbnRyb2xzKCksdGhpcy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtvbmx5U2VsZjohMCxlbWl0RXZlbnQ6ISF0aGlzLmFzeW5jVmFsaWRhdG9yfSl9cmVnaXN0ZXJDb250cm9sKHQsZSl7cmV0dXJuIHRoaXMuY29udHJvbHNbdF0/dGhpcy5jb250cm9sc1t0XToodGhpcy5jb250cm9sc1t0XT1lLGUuc2V0UGFyZW50KHRoaXMpLGUuX3JlZ2lzdGVyT25Db2xsZWN0aW9uQ2hhbmdlKHRoaXMuX29uQ29sbGVjdGlvbkNoYW5nZSksZSl9YWRkQ29udHJvbCh0LGUsbj17fSl7dGhpcy5yZWdpc3RlckNvbnRyb2wodCxlKSx0aGlzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe2VtaXRFdmVudDpuLmVtaXRFdmVudH0pLHRoaXMuX29uQ29sbGVjdGlvbkNoYW5nZSgpfXJlbW92ZUNvbnRyb2wodCxlPXt9KXt0aGlzLmNvbnRyb2xzW3RdJiZ0aGlzLmNvbnRyb2xzW3RdLl9yZWdpc3Rlck9uQ29sbGVjdGlvbkNoYW5nZSgoKCk9Pnt9KSksZGVsZXRlIHRoaXMuY29udHJvbHNbdF0sdGhpcy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtlbWl0RXZlbnQ6ZS5lbWl0RXZlbnR9KSx0aGlzLl9vbkNvbGxlY3Rpb25DaGFuZ2UoKX1zZXRDb250cm9sKHQsZSxuPXt9KXt0aGlzLmNvbnRyb2xzW3RdJiZ0aGlzLmNvbnRyb2xzW3RdLl9yZWdpc3Rlck9uQ29sbGVjdGlvbkNoYW5nZSgoKCk9Pnt9KSksZGVsZXRlIHRoaXMuY29udHJvbHNbdF0sZSYmdGhpcy5yZWdpc3RlckNvbnRyb2wodCxlKSx0aGlzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe2VtaXRFdmVudDpuLmVtaXRFdmVudH0pLHRoaXMuX29uQ29sbGVjdGlvbkNoYW5nZSgpfWNvbnRhaW5zKHQpe3JldHVybiB0aGlzLmNvbnRyb2xzLmhhc093blByb3BlcnR5KHQpJiZ0aGlzLmNvbnRyb2xzW3RdLmVuYWJsZWR9c2V0VmFsdWUodCxlPXt9KXt0aGlzLl9jaGVja0FsbFZhbHVlc1ByZXNlbnQodCksT2JqZWN0LmtleXModCkuZm9yRWFjaCgobj0+e3RoaXMuX3Rocm93SWZDb250cm9sTWlzc2luZyhuKSx0aGlzLmNvbnRyb2xzW25dLnNldFZhbHVlKHRbbl0se29ubHlTZWxmOiEwLGVtaXRFdmVudDplLmVtaXRFdmVudH0pfSkpLHRoaXMudXBkYXRlVmFsdWVBbmRWYWxpZGl0eShlKX1wYXRjaFZhbHVlKHQsZT17fSl7bnVsbCE9dCYmKE9iamVjdC5rZXlzKHQpLmZvckVhY2goKG49Pnt0aGlzLmNvbnRyb2xzW25dJiZ0aGlzLmNvbnRyb2xzW25dLnBhdGNoVmFsdWUodFtuXSx7b25seVNlbGY6ITAsZW1pdEV2ZW50OmUuZW1pdEV2ZW50fSl9KSksdGhpcy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KGUpKX1yZXNldCh0PXt9LGU9e30pe3RoaXMuX2ZvckVhY2hDaGlsZCgoKG4sbyk9PntuLnJlc2V0KHRbb10se29ubHlTZWxmOiEwLGVtaXRFdmVudDplLmVtaXRFdmVudH0pfSkpLHRoaXMuX3VwZGF0ZVByaXN0aW5lKGUpLHRoaXMuX3VwZGF0ZVRvdWNoZWQoZSksdGhpcy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KGUpfWdldFJhd1ZhbHVlKCl7cmV0dXJuIHRoaXMuX3JlZHVjZUNoaWxkcmVuKHt9LCgodCxlLG4pPT4odFtuXT1lIGluc3RhbmNlb2YgV1c/ZS52YWx1ZTplLmdldFJhd1ZhbHVlKCksdCkpKX1fc3luY1BlbmRpbmdDb250cm9scygpe2xldCB0PXRoaXMuX3JlZHVjZUNoaWxkcmVuKCExLCgodCxlKT0+ISFlLl9zeW5jUGVuZGluZ0NvbnRyb2xzKCl8fHQpKTtyZXR1cm4gdCYmdGhpcy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtvbmx5U2VsZjohMH0pLHR9X3Rocm93SWZDb250cm9sTWlzc2luZyh0KXtpZighT2JqZWN0LmtleXModGhpcy5jb250cm9scykubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiXG4gICAgICAgIFRoZXJlIGFyZSBubyBmb3JtIGNvbnRyb2xzIHJlZ2lzdGVyZWQgd2l0aCB0aGlzIGdyb3VwIHlldC4gSWYgeW91J3JlIHVzaW5nIG5nTW9kZWwsXG4gICAgICAgIHlvdSBtYXkgd2FudCB0byBjaGVjayBuZXh0IHRpY2sgKGUuZy4gdXNlIHNldFRpbWVvdXQpLlxuICAgICAgIik7aWYoIXRoaXMuY29udHJvbHNbdF0pdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgZmluZCBmb3JtIGNvbnRyb2wgd2l0aCBuYW1lOiAke3R9LmApfV9mb3JFYWNoQ2hpbGQodCl7T2JqZWN0LmtleXModGhpcy5jb250cm9scykuZm9yRWFjaCgoZT0+e2NvbnN0IG49dGhpcy5jb250cm9sc1tlXTtuJiZ0KG4sZSl9KSl9X3NldFVwQ29udHJvbHMoKXt0aGlzLl9mb3JFYWNoQ2hpbGQoKHQ9Pnt0LnNldFBhcmVudCh0aGlzKSx0Ll9yZWdpc3Rlck9uQ29sbGVjdGlvbkNoYW5nZSh0aGlzLl9vbkNvbGxlY3Rpb25DaGFuZ2UpfSkpfV91cGRhdGVWYWx1ZSgpe3RoaXMudmFsdWU9dGhpcy5fcmVkdWNlVmFsdWUoKX1fYW55Q29udHJvbHModCl7Zm9yKGNvbnN0IGUgb2YgT2JqZWN0LmtleXModGhpcy5jb250cm9scykpe2NvbnN0IG49dGhpcy5jb250cm9sc1tlXTtpZih0aGlzLmNvbnRhaW5zKGUpJiZ0KG4pKXJldHVybiEwfXJldHVybiExfV9yZWR1Y2VWYWx1ZSgpe3JldHVybiB0aGlzLl9yZWR1Y2VDaGlsZHJlbih7fSwoKHQsZSxuKT0+KChlLmVuYWJsZWR8fHRoaXMuZGlzYWJsZWQpJiYodFtuXT1lLnZhbHVlKSx0KSkpfV9yZWR1Y2VDaGlsZHJlbih0LGUpe2xldCBuPXQ7cmV0dXJuIHRoaXMuX2ZvckVhY2hDaGlsZCgoKHQsbyk9PntuPWUobix0LG8pfSkpLG59X2FsbENvbnRyb2xzRGlzYWJsZWQoKXtmb3IoY29uc3QgdCBvZiBPYmplY3Qua2V5cyh0aGlzLmNvbnRyb2xzKSlpZih0aGlzLmNvbnRyb2xzW3RdLmVuYWJsZWQpcmV0dXJuITE7cmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuY29udHJvbHMpLmxlbmd0aD4wfHx0aGlzLmRpc2FibGVkfV9jaGVja0FsbFZhbHVlc1ByZXNlbnQodCl7dGhpcy5fZm9yRWFjaENoaWxkKCgoZSxuKT0+e2lmKHZvaWQgMD09PXRbbl0pdGhyb3cgbmV3IEVycm9yKGBNdXN0IHN1cHBseSBhIHZhbHVlIGZvciBmb3JtIGNvbnRyb2wgd2l0aCBuYW1lOiAnJHtufScuYCl9KSl9fWNsYXNzIFlXIGV4dGVuZHMgVVd7Y29uc3RydWN0b3IodCxlLG4pe3N1cGVyKEZXKGUpLEJXKG4sZSkpLHRoaXMuY29udHJvbHM9dCx0aGlzLl9pbml0T2JzZXJ2YWJsZXMoKSx0aGlzLl9zZXRVcGRhdGVTdHJhdGVneShlKSx0aGlzLl9zZXRVcENvbnRyb2xzKCksdGhpcy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtvbmx5U2VsZjohMCxlbWl0RXZlbnQ6ISF0aGlzLmFzeW5jVmFsaWRhdG9yfSl9YXQodCl7cmV0dXJuIHRoaXMuY29udHJvbHNbdF19cHVzaCh0LGU9e30pe3RoaXMuY29udHJvbHMucHVzaCh0KSx0aGlzLl9yZWdpc3RlckNvbnRyb2wodCksdGhpcy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtlbWl0RXZlbnQ6ZS5lbWl0RXZlbnR9KSx0aGlzLl9vbkNvbGxlY3Rpb25DaGFuZ2UoKX1pbnNlcnQodCxlLG49e30pe3RoaXMuY29udHJvbHMuc3BsaWNlKHQsMCxlKSx0aGlzLl9yZWdpc3RlckNvbnRyb2woZSksdGhpcy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtlbWl0RXZlbnQ6bi5lbWl0RXZlbnR9KX1yZW1vdmVBdCh0LGU9e30pe3RoaXMuY29udHJvbHNbdF0mJnRoaXMuY29udHJvbHNbdF0uX3JlZ2lzdGVyT25Db2xsZWN0aW9uQ2hhbmdlKCgoKT0+e30pKSx0aGlzLmNvbnRyb2xzLnNwbGljZSh0LDEpLHRoaXMudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7ZW1pdEV2ZW50OmUuZW1pdEV2ZW50fSl9c2V0Q29udHJvbCh0LGUsbj17fSl7dGhpcy5jb250cm9sc1t0XSYmdGhpcy5jb250cm9sc1t0XS5fcmVnaXN0ZXJPbkNvbGxlY3Rpb25DaGFuZ2UoKCgpPT57fSkpLHRoaXMuY29udHJvbHMuc3BsaWNlKHQsMSksZSYmKHRoaXMuY29udHJvbHMuc3BsaWNlKHQsMCxlKSx0aGlzLl9yZWdpc3RlckNvbnRyb2woZSkpLHRoaXMudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7ZW1pdEV2ZW50Om4uZW1pdEV2ZW50fSksdGhpcy5fb25Db2xsZWN0aW9uQ2hhbmdlKCl9Z2V0IGxlbmd0aCgpe3JldHVybiB0aGlzLmNvbnRyb2xzLmxlbmd0aH1zZXRWYWx1ZSh0LGU9e30pe3RoaXMuX2NoZWNrQWxsVmFsdWVzUHJlc2VudCh0KSx0LmZvckVhY2goKCh0LG4pPT57dGhpcy5fdGhyb3dJZkNvbnRyb2xNaXNzaW5nKG4pLHRoaXMuYXQobikuc2V0VmFsdWUodCx7b25seVNlbGY6ITAsZW1pdEV2ZW50OmUuZW1pdEV2ZW50fSl9KSksdGhpcy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KGUpfXBhdGNoVmFsdWUodCxlPXt9KXtudWxsIT10JiYodC5mb3JFYWNoKCgodCxuKT0+e3RoaXMuYXQobikmJnRoaXMuYXQobikucGF0Y2hWYWx1ZSh0LHtvbmx5U2VsZjohMCxlbWl0RXZlbnQ6ZS5lbWl0RXZlbnR9KX0pKSx0aGlzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoZSkpfXJlc2V0KHQ9W10sZT17fSl7dGhpcy5fZm9yRWFjaENoaWxkKCgobixvKT0+e24ucmVzZXQodFtvXSx7b25seVNlbGY6ITAsZW1pdEV2ZW50OmUuZW1pdEV2ZW50fSl9KSksdGhpcy5fdXBkYXRlUHJpc3RpbmUoZSksdGhpcy5fdXBkYXRlVG91Y2hlZChlKSx0aGlzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoZSl9Z2V0UmF3VmFsdWUoKXtyZXR1cm4gdGhpcy5jb250cm9scy5tYXAoKHQ9PnQgaW5zdGFuY2VvZiBXVz90LnZhbHVlOnQuZ2V0UmF3VmFsdWUoKSkpfWNsZWFyKHQ9e30pe3RoaXMuY29udHJvbHMubGVuZ3RoPDF8fCh0aGlzLl9mb3JFYWNoQ2hpbGQoKHQ9PnQuX3JlZ2lzdGVyT25Db2xsZWN0aW9uQ2hhbmdlKCgoKT0+e30pKSkpLHRoaXMuY29udHJvbHMuc3BsaWNlKDApLHRoaXMudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7ZW1pdEV2ZW50OnQuZW1pdEV2ZW50fSkpfV9zeW5jUGVuZGluZ0NvbnRyb2xzKCl7bGV0IHQ9dGhpcy5jb250cm9scy5yZWR1Y2UoKCh0LGUpPT4hIWUuX3N5bmNQZW5kaW5nQ29udHJvbHMoKXx8dCksITEpO3JldHVybiB0JiZ0aGlzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe29ubHlTZWxmOiEwfSksdH1fdGhyb3dJZkNvbnRyb2xNaXNzaW5nKHQpe2lmKCF0aGlzLmNvbnRyb2xzLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoIlxuICAgICAgICBUaGVyZSBhcmUgbm8gZm9ybSBjb250cm9scyByZWdpc3RlcmVkIHdpdGggdGhpcyBhcnJheSB5ZXQuIElmIHlvdSdyZSB1c2luZyBuZ01vZGVsLFxuICAgICAgICB5b3UgbWF5IHdhbnQgdG8gY2hlY2sgbmV4dCB0aWNrIChlLmcuIHVzZSBzZXRUaW1lb3V0KS5cbiAgICAgICIpO2lmKCF0aGlzLmF0KHQpKXRocm93IG5ldyBFcnJvcihgQ2Fubm90IGZpbmQgZm9ybSBjb250cm9sIGF0IGluZGV4ICR7dH1gKX1fZm9yRWFjaENoaWxkKHQpe3RoaXMuY29udHJvbHMuZm9yRWFjaCgoKGUsbik9Pnt0KGUsbil9KSl9X3VwZGF0ZVZhbHVlKCl7dGhpcy52YWx1ZT10aGlzLmNvbnRyb2xzLmZpbHRlcigodD0+dC5lbmFibGVkfHx0aGlzLmRpc2FibGVkKSkubWFwKCh0PT50LnZhbHVlKSl9X2FueUNvbnRyb2xzKHQpe3JldHVybiB0aGlzLmNvbnRyb2xzLnNvbWUoKGU9PmUuZW5hYmxlZCYmdChlKSkpfV9zZXRVcENvbnRyb2xzKCl7dGhpcy5fZm9yRWFjaENoaWxkKCh0PT50aGlzLl9yZWdpc3RlckNvbnRyb2wodCkpKX1fY2hlY2tBbGxWYWx1ZXNQcmVzZW50KHQpe3RoaXMuX2ZvckVhY2hDaGlsZCgoKGUsbik9PntpZih2b2lkIDA9PT10W25dKXRocm93IG5ldyBFcnJvcihgTXVzdCBzdXBwbHkgYSB2YWx1ZSBmb3IgZm9ybSBjb250cm9sIGF0IGluZGV4OiAke259LmApfSkpfV9hbGxDb250cm9sc0Rpc2FibGVkKCl7Zm9yKGNvbnN0IHQgb2YgdGhpcy5jb250cm9scylpZih0LmVuYWJsZWQpcmV0dXJuITE7cmV0dXJuIHRoaXMuY29udHJvbHMubGVuZ3RoPjB8fHRoaXMuZGlzYWJsZWR9X3JlZ2lzdGVyQ29udHJvbCh0KXt0LnNldFBhcmVudCh0aGlzKSx0Ll9yZWdpc3Rlck9uQ29sbGVjdGlvbkNoYW5nZSh0aGlzLl9vbkNvbGxlY3Rpb25DaGFuZ2UpfX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY29uc3QgcVc9e3Byb3ZpZGU6c1csdXNlRXhpc3Rpbmc6JGUoKCgpPT5YVykpfSxaVz1Qcm9taXNlLnJlc29sdmUobnVsbCk7Y2xhc3MgWFcgZXh0ZW5kcyBzV3tjb25zdHJ1Y3Rvcih0LGUpe3N1cGVyKCksdGhpcy5zdWJtaXR0ZWQ9ITEsdGhpcy5fZGlyZWN0aXZlcz1bXSx0aGlzLm5nU3VibWl0PW5ldyBTeSx0aGlzLmZvcm09bmV3IEdXKHt9LEtVKHQpLFFVKGUpKX1uZ0FmdGVyVmlld0luaXQoKXt0aGlzLl9zZXRVcGRhdGVTdHJhdGVneSgpfWdldCBmb3JtRGlyZWN0aXZlKCl7cmV0dXJuIHRoaXN9Z2V0IGNvbnRyb2woKXtyZXR1cm4gdGhpcy5mb3JtfWdldCBwYXRoKCl7cmV0dXJuW119Z2V0IGNvbnRyb2xzKCl7cmV0dXJuIHRoaXMuZm9ybS5jb250cm9sc31hZGRDb250cm9sKHQpe1pXLnRoZW4oKCgpPT57Y29uc3QgZT10aGlzLl9maW5kQ29udGFpbmVyKHQucGF0aCk7dC5jb250cm9sPWUucmVnaXN0ZXJDb250cm9sKHQubmFtZSx0LmNvbnRyb2wpLE1XKHQuY29udHJvbCx0KSx0LmNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7ZW1pdEV2ZW50OiExfSksdGhpcy5fZGlyZWN0aXZlcy5wdXNoKHQpfSkpfWdldENvbnRyb2wodCl7cmV0dXJuIHRoaXMuZm9ybS5nZXQodC5wYXRoKX1yZW1vdmVDb250cm9sKHQpe1pXLnRoZW4oKCgpPT57Y29uc3QgZT10aGlzLl9maW5kQ29udGFpbmVyKHQucGF0aCk7ZSYmZS5yZW1vdmVDb250cm9sKHQubmFtZSksQVcodGhpcy5fZGlyZWN0aXZlcyx0KX0pKX1hZGRGb3JtR3JvdXAodCl7WlcudGhlbigoKCk9Pntjb25zdCBlPXRoaXMuX2ZpbmRDb250YWluZXIodC5wYXRoKSxuPW5ldyBHVyh7fSk7a1cobix0KSxlLnJlZ2lzdGVyQ29udHJvbCh0Lm5hbWUsbiksbi51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtlbWl0RXZlbnQ6ITF9KX0pKX1yZW1vdmVGb3JtR3JvdXAodCl7WlcudGhlbigoKCk9Pntjb25zdCBlPXRoaXMuX2ZpbmRDb250YWluZXIodC5wYXRoKTtlJiZlLnJlbW92ZUNvbnRyb2wodC5uYW1lKX0pKX1nZXRGb3JtR3JvdXAodCl7cmV0dXJuIHRoaXMuZm9ybS5nZXQodC5wYXRoKX11cGRhdGVNb2RlbCh0LGUpe1pXLnRoZW4oKCgpPT57dGhpcy5mb3JtLmdldCh0LnBhdGgpLnNldFZhbHVlKGUpfSkpfXNldFZhbHVlKHQpe3RoaXMuY29udHJvbC5zZXRWYWx1ZSh0KX1vblN1Ym1pdCh0KXtyZXR1cm4gdGhpcy5zdWJtaXR0ZWQ9ITAsUlcodGhpcy5mb3JtLHRoaXMuX2RpcmVjdGl2ZXMpLHRoaXMubmdTdWJtaXQuZW1pdCh0KSwhMX1vblJlc2V0KCl7dGhpcy5yZXNldEZvcm0oKX1yZXNldEZvcm0odCl7dGhpcy5mb3JtLnJlc2V0KHQpLHRoaXMuc3VibWl0dGVkPSExfV9zZXRVcGRhdGVTdHJhdGVneSgpe3RoaXMub3B0aW9ucyYmbnVsbCE9dGhpcy5vcHRpb25zLnVwZGF0ZU9uJiYodGhpcy5mb3JtLl91cGRhdGVPbj10aGlzLm9wdGlvbnMudXBkYXRlT24pfV9maW5kQ29udGFpbmVyKHQpe3JldHVybiB0LnBvcCgpLHQubGVuZ3RoP3RoaXMuZm9ybS5nZXQodCk6dGhpcy5mb3JtfX1YVy7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8WFcpKGdmKEVVLDEwKSxnZihBVSwxMCkpfSxYVy7JtWRpcj1obyh7dHlwZTpYVyxzZWxlY3RvcnM6W1siZm9ybSIsMywibmdOb0Zvcm0iLCIiLDMsImZvcm1Hcm91cCIsIiJdLFsibmctZm9ybSJdLFsiIiwibmdGb3JtIiwiIl1dLGhvc3RCaW5kaW5nczpmdW5jdGlvbiB0KGUsbil7MSZlJiZSZigic3VibWl0IiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5vblN1Ym1pdChlKX0pKSgicmVzZXQiLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4ub25SZXNldCgpfSkpfSxpbnB1dHM6e29wdGlvbnM6WyJuZ0Zvcm1PcHRpb25zIiwib3B0aW9ucyJdfSxvdXRwdXRzOntuZ1N1Ym1pdDoibmdTdWJtaXQifSxleHBvcnRBczpbIm5nRm9ybSJdLGZlYXR1cmVzOltqaChbcVddKSxRcF19KSxYVy5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOkFycmF5LGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpWcn0se3R5cGU6THIsYXJnczpbRVVdfV19LHt0eXBlOkFycmF5LGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpWcn0se3R5cGU6THIsYXJnczpbQVVdfV19XSxYVy5wcm9wRGVjb3JhdG9ycz17b3B0aW9uczpbe3R5cGU6Ul8sYXJnczpbIm5nRm9ybU9wdGlvbnMiXX1dfSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKFhXLFt7dHlwZTprXyxhcmdzOlt7c2VsZWN0b3I6ImZvcm06bm90KFtuZ05vRm9ybV0pOm5vdChbZm9ybUdyb3VwXSksbmctZm9ybSxbbmdGb3JtXSIscHJvdmlkZXJzOltxV10saG9zdDp7IihzdWJtaXQpIjoib25TdWJtaXQoJGV2ZW50KSIsIihyZXNldCkiOiJvblJlc2V0KCkifSxvdXRwdXRzOlsibmdTdWJtaXQiXSxleHBvcnRBczoibmdGb3JtIn1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOkFycmF5LGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpWcn0se3R5cGU6THIsYXJnczpbRVVdfV19LHt0eXBlOkFycmF5LGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpWcn0se3R5cGU6THIsYXJnczpbQVVdfV19XX0pLHtvcHRpb25zOlt7dHlwZTpSXyxhcmdzOlsibmdGb3JtT3B0aW9ucyJdfV19KTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNsYXNzIEtXIGV4dGVuZHMgc1d7bmdPbkluaXQoKXt0aGlzLl9jaGVja1BhcmVudFR5cGUoKSx0aGlzLmZvcm1EaXJlY3RpdmUuYWRkRm9ybUdyb3VwKHRoaXMpfW5nT25EZXN0cm95KCl7dGhpcy5mb3JtRGlyZWN0aXZlJiZ0aGlzLmZvcm1EaXJlY3RpdmUucmVtb3ZlRm9ybUdyb3VwKHRoaXMpfWdldCBjb250cm9sKCl7cmV0dXJuIHRoaXMuZm9ybURpcmVjdGl2ZS5nZXRGb3JtR3JvdXAodGhpcyl9Z2V0IHBhdGgoKXtyZXR1cm4gQ1cobnVsbD09dGhpcy5uYW1lP3RoaXMubmFtZTp0aGlzLm5hbWUudG9TdHJpbmcoKSx0aGlzLl9wYXJlbnQpfWdldCBmb3JtRGlyZWN0aXZlKCl7cmV0dXJuIHRoaXMuX3BhcmVudD90aGlzLl9wYXJlbnQuZm9ybURpcmVjdGl2ZTpudWxsfV9jaGVja1BhcmVudFR5cGUoKXt9fUtXLsm1ZmFjPShmdW5jdGlvbigpe2xldCB0O3JldHVybiBmdW5jdGlvbiBlKG4pe3JldHVybih0fHwodD1VYShLVykpKShufHxLVyl9fSkoKSxLVy7JtWRpcj1obyh7dHlwZTpLVyxmZWF0dXJlczpbUXBdfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihLVyxbe3R5cGU6a199XSxudWxsLG51bGwpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3MgSld7c3RhdGljIG1vZGVsUGFyZW50RXhjZXB0aW9uKCl7dGhyb3cgbmV3IEVycm9yKGBcbiAgICAgIG5nTW9kZWwgY2Fubm90IGJlIHVzZWQgdG8gcmVnaXN0ZXIgZm9ybSBjb250cm9scyB3aXRoIGEgcGFyZW50IGZvcm1Hcm91cCBkaXJlY3RpdmUuICBUcnkgdXNpbmdcbiAgICAgIGZvcm1Hcm91cCdzIHBhcnRuZXIgZGlyZWN0aXZlICJmb3JtQ29udHJvbE5hbWUiIGluc3RlYWQuICBFeGFtcGxlOlxuXG4gICAgICAke3VXfVxuXG4gICAgICBPciwgaWYgeW91J2QgbGlrZSB0byBhdm9pZCByZWdpc3RlcmluZyB0aGlzIGZvcm0gY29udHJvbCwgaW5kaWNhdGUgdGhhdCBpdCdzIHN0YW5kYWxvbmUgaW4gbmdNb2RlbE9wdGlvbnM6XG5cbiAgICAgIEV4YW1wbGU6XG5cbiAgICAgICR7eVd9YCl9c3RhdGljIGZvcm1Hcm91cE5hbWVFeGNlcHRpb24oKXt0aHJvdyBuZXcgRXJyb3IoYFxuICAgICAgbmdNb2RlbCBjYW5ub3QgYmUgdXNlZCB0byByZWdpc3RlciBmb3JtIGNvbnRyb2xzIHdpdGggYSBwYXJlbnQgZm9ybUdyb3VwTmFtZSBvciBmb3JtQXJyYXlOYW1lIGRpcmVjdGl2ZS5cblxuICAgICAgT3B0aW9uIDE6IFVzZSBmb3JtQ29udHJvbE5hbWUgaW5zdGVhZCBvZiBuZ01vZGVsIChyZWFjdGl2ZSBzdHJhdGVneSk6XG5cbiAgICAgICR7Z1d9XG5cbiAgICAgIE9wdGlvbiAyOiAgVXBkYXRlIG5nTW9kZWwncyBwYXJlbnQgYmUgbmdNb2RlbEdyb3VwICh0ZW1wbGF0ZS1kcml2ZW4gc3RyYXRlZ3kpOlxuXG4gICAgICAke2JXfWApfXN0YXRpYyBtaXNzaW5nTmFtZUV4Y2VwdGlvbigpe3Rocm93IG5ldyBFcnJvcignSWYgbmdNb2RlbCBpcyB1c2VkIHdpdGhpbiBhIGZvcm0gdGFnLCBlaXRoZXIgdGhlIG5hbWUgYXR0cmlidXRlIG11c3QgYmUgc2V0IG9yIHRoZSBmb3JtXG4gICAgICBjb250cm9sIG11c3QgYmUgZGVmaW5lZCBhcyBcJ3N0YW5kYWxvbmVcJyBpbiBuZ01vZGVsT3B0aW9ucy5cblxuICAgICAgRXhhbXBsZSAxOiA8aW5wdXQgWyhuZ01vZGVsKV09InBlcnNvbi5maXJzdE5hbWUiIG5hbWU9ImZpcnN0Ij5cbiAgICAgIEV4YW1wbGUgMjogPGlucHV0IFsobmdNb2RlbCldPSJwZXJzb24uZmlyc3ROYW1lIiBbbmdNb2RlbE9wdGlvbnNdPSJ7c3RhbmRhbG9uZTogdHJ1ZX0iPicpfXN0YXRpYyBtb2RlbEdyb3VwUGFyZW50RXhjZXB0aW9uKCl7dGhyb3cgbmV3IEVycm9yKGBcbiAgICAgIG5nTW9kZWxHcm91cCBjYW5ub3QgYmUgdXNlZCB3aXRoIGEgcGFyZW50IGZvcm1Hcm91cCBkaXJlY3RpdmUuXG5cbiAgICAgIE9wdGlvbiAxOiBVc2UgZm9ybUdyb3VwTmFtZSBpbnN0ZWFkIG9mIG5nTW9kZWxHcm91cCAocmVhY3RpdmUgc3RyYXRlZ3kpOlxuXG4gICAgICAke2dXfVxuXG4gICAgICBPcHRpb24gMjogIFVzZSBhIHJlZ3VsYXIgZm9ybSB0YWcgaW5zdGVhZCBvZiB0aGUgZm9ybUdyb3VwIGRpcmVjdGl2ZSAodGVtcGxhdGUtZHJpdmVuIHN0cmF0ZWd5KTpcblxuICAgICAgJHtiV31gKX19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NvbnN0IFFXPXtwcm92aWRlOnNXLHVzZUV4aXN0aW5nOiRlKCgoKT0+JFcpKX07Y2xhc3MgJFcgZXh0ZW5kcyBLV3tjb25zdHJ1Y3Rvcih0LGUsbil7c3VwZXIoKSx0aGlzLl9wYXJlbnQ9dCx0aGlzLl9zZXRWYWxpZGF0b3JzKGUpLHRoaXMuX3NldEFzeW5jVmFsaWRhdG9ycyhuKX1fY2hlY2tQYXJlbnRUeXBlKCl7dGhpcy5fcGFyZW50IGluc3RhbmNlb2YgJFd8fHRoaXMuX3BhcmVudCBpbnN0YW5jZW9mIFhXfHwidW5kZWZpbmVkIiE9dHlwZW9mIG5nRGV2TW9kZSYmIW5nRGV2TW9kZXx8SlcubW9kZWxHcm91cFBhcmVudEV4Y2VwdGlvbigpfX0kVy7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8JFcpKGdmKHNXLDUpLGdmKEVVLDEwKSxnZihBVSwxMCkpfSwkVy7JtWRpcj1obyh7dHlwZTokVyxzZWxlY3RvcnM6W1siIiwibmdNb2RlbEdyb3VwIiwiIl1dLGlucHV0czp7bmFtZTpbIm5nTW9kZWxHcm91cCIsIm5hbWUiXX0sZXhwb3J0QXM6WyJuZ01vZGVsR3JvdXAiXSxmZWF0dXJlczpbamgoW1FXXSksUXBdfSksJFcuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpzVyxkZWNvcmF0b3JzOlt7dHlwZTpVcn0se3R5cGU6anJ9XX0se3R5cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOlZyfSx7dHlwZTpMcixhcmdzOltFVV19XX0se3R5cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOlZyfSx7dHlwZTpMcixhcmdzOltBVV19XX1dLCRXLnByb3BEZWNvcmF0b3JzPXtuYW1lOlt7dHlwZTpSXyxhcmdzOlsibmdNb2RlbEdyb3VwIl19XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYigkVyxbe3R5cGU6a18sYXJnczpbe3NlbGVjdG9yOiJbbmdNb2RlbEdyb3VwXSIscHJvdmlkZXJzOltRV10sZXhwb3J0QXM6Im5nTW9kZWxHcm91cCJ9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpzVyxkZWNvcmF0b3JzOlt7dHlwZTpVcn0se3R5cGU6anJ9XX0se3R5cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOlZyfSx7dHlwZTpMcixhcmdzOltFVV19XX0se3R5cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOlZyfSx7dHlwZTpMcixhcmdzOltBVV19XX1dfSkse25hbWU6W3t0eXBlOlJfLGFyZ3M6WyJuZ01vZGVsR3JvdXAiXX1dfSk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjb25zdCB0Rz17cHJvdmlkZTpsVyx1c2VFeGlzdGluZzokZSgoKCk9Pm5HKSl9LGVHPVByb21pc2UucmVzb2x2ZShudWxsKTtjbGFzcyBuRyBleHRlbmRzIGxXe2NvbnN0cnVjdG9yKHQsZSxuLG8pe3N1cGVyKCksdGhpcy5jb250cm9sPW5ldyBXVyx0aGlzLl9yZWdpc3RlcmVkPSExLHRoaXMudXBkYXRlPW5ldyBTeSx0aGlzLl9wYXJlbnQ9dCx0aGlzLl9zZXRWYWxpZGF0b3JzKGUpLHRoaXMuX3NldEFzeW5jVmFsaWRhdG9ycyhuKSx0aGlzLnZhbHVlQWNjZXNzb3I9RVcodGhpcyxvKX1uZ09uQ2hhbmdlcyh0KXt0aGlzLl9jaGVja0ZvckVycm9ycygpLHRoaXMuX3JlZ2lzdGVyZWR8fHRoaXMuX3NldFVwQ29udHJvbCgpLCJpc0Rpc2FibGVkImluIHQmJnRoaXMuX3VwZGF0ZURpc2FibGVkKHQpLERXKHQsdGhpcy52aWV3TW9kZWwpJiYodGhpcy5fdXBkYXRlVmFsdWUodGhpcy5tb2RlbCksdGhpcy52aWV3TW9kZWw9dGhpcy5tb2RlbCl9bmdPbkRlc3Ryb3koKXt0aGlzLmZvcm1EaXJlY3RpdmUmJnRoaXMuZm9ybURpcmVjdGl2ZS5yZW1vdmVDb250cm9sKHRoaXMpfWdldCBwYXRoKCl7cmV0dXJuIHRoaXMuX3BhcmVudD9DVyh0aGlzLm5hbWUsdGhpcy5fcGFyZW50KTpbdGhpcy5uYW1lXX1nZXQgZm9ybURpcmVjdGl2ZSgpe3JldHVybiB0aGlzLl9wYXJlbnQ/dGhpcy5fcGFyZW50LmZvcm1EaXJlY3RpdmU6bnVsbH12aWV3VG9Nb2RlbFVwZGF0ZSh0KXt0aGlzLnZpZXdNb2RlbD10LHRoaXMudXBkYXRlLmVtaXQodCl9X3NldFVwQ29udHJvbCgpe3RoaXMuX3NldFVwZGF0ZVN0cmF0ZWd5KCksdGhpcy5faXNTdGFuZGFsb25lKCk/dGhpcy5fc2V0VXBTdGFuZGFsb25lKCk6dGhpcy5mb3JtRGlyZWN0aXZlLmFkZENvbnRyb2wodGhpcyksdGhpcy5fcmVnaXN0ZXJlZD0hMH1fc2V0VXBkYXRlU3RyYXRlZ3koKXt0aGlzLm9wdGlvbnMmJm51bGwhPXRoaXMub3B0aW9ucy51cGRhdGVPbiYmKHRoaXMuY29udHJvbC5fdXBkYXRlT249dGhpcy5vcHRpb25zLnVwZGF0ZU9uKX1faXNTdGFuZGFsb25lKCl7cmV0dXJuIXRoaXMuX3BhcmVudHx8ISghdGhpcy5vcHRpb25zfHwhdGhpcy5vcHRpb25zLnN0YW5kYWxvbmUpfV9zZXRVcFN0YW5kYWxvbmUoKXtNVyh0aGlzLmNvbnRyb2wsdGhpcyksdGhpcy5jb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe2VtaXRFdmVudDohMX0pfV9jaGVja0ZvckVycm9ycygpe3RoaXMuX2lzU3RhbmRhbG9uZSgpfHx0aGlzLl9jaGVja1BhcmVudFR5cGUoKSx0aGlzLl9jaGVja05hbWUoKX1fY2hlY2tQYXJlbnRUeXBlKCl7KCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiYoISh0aGlzLl9wYXJlbnQgaW5zdGFuY2VvZiAkVykmJnRoaXMuX3BhcmVudCBpbnN0YW5jZW9mIEtXP0pXLmZvcm1Hcm91cE5hbWVFeGNlcHRpb24oKTp0aGlzLl9wYXJlbnQgaW5zdGFuY2VvZiAkV3x8dGhpcy5fcGFyZW50IGluc3RhbmNlb2YgWFd8fEpXLm1vZGVsUGFyZW50RXhjZXB0aW9uKCkpfV9jaGVja05hbWUoKXt0aGlzLm9wdGlvbnMmJnRoaXMub3B0aW9ucy5uYW1lJiYodGhpcy5uYW1lPXRoaXMub3B0aW9ucy5uYW1lKSx0aGlzLl9pc1N0YW5kYWxvbmUoKXx8dGhpcy5uYW1lfHwidW5kZWZpbmVkIiE9dHlwZW9mIG5nRGV2TW9kZSYmIW5nRGV2TW9kZXx8SlcubWlzc2luZ05hbWVFeGNlcHRpb24oKX1fdXBkYXRlVmFsdWUodCl7ZUcudGhlbigoKCk9Pnt0aGlzLmNvbnRyb2wuc2V0VmFsdWUodCx7ZW1pdFZpZXdUb01vZGVsQ2hhbmdlOiExfSl9KSl9X3VwZGF0ZURpc2FibGVkKHQpe2NvbnN0IGU9dC5pc0Rpc2FibGVkLmN1cnJlbnRWYWx1ZSxuPSIiPT09ZXx8ZSYmImZhbHNlIiE9PWU7ZUcudGhlbigoKCk9PntuJiYhdGhpcy5jb250cm9sLmRpc2FibGVkP3RoaXMuY29udHJvbC5kaXNhYmxlKCk6IW4mJnRoaXMuY29udHJvbC5kaXNhYmxlZCYmdGhpcy5jb250cm9sLmVuYWJsZSgpfSkpfX1uRy7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8bkcpKGdmKHNXLDkpLGdmKEVVLDEwKSxnZihBVSwxMCksZ2YoeFUsMTApKX0sbkcuybVkaXI9aG8oe3R5cGU6bkcsc2VsZWN0b3JzOltbIiIsIm5nTW9kZWwiLCIiLDMsImZvcm1Db250cm9sTmFtZSIsIiIsMywiZm9ybUNvbnRyb2wiLCIiXV0saW5wdXRzOntuYW1lOiJuYW1lIixpc0Rpc2FibGVkOlsiZGlzYWJsZWQiLCJpc0Rpc2FibGVkIl0sbW9kZWw6WyJuZ01vZGVsIiwibW9kZWwiXSxvcHRpb25zOlsibmdNb2RlbE9wdGlvbnMiLCJvcHRpb25zIl19LG91dHB1dHM6e3VwZGF0ZToibmdNb2RlbENoYW5nZSJ9LGV4cG9ydEFzOlsibmdNb2RlbCJdLGZlYXR1cmVzOltqaChbdEddKSxRcCxxb119KSxuRy5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOnNXLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpVcn1dfSx7dHlwZTpBcnJheSxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6VnJ9LHt0eXBlOkxyLGFyZ3M6W0VVXX1dfSx7dHlwZTpBcnJheSxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6VnJ9LHt0eXBlOkxyLGFyZ3M6W0FVXX1dfSx7dHlwZTpBcnJheSxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6VnJ9LHt0eXBlOkxyLGFyZ3M6W3hVXX1dfV0sbkcucHJvcERlY29yYXRvcnM9e25hbWU6W3t0eXBlOlJffV0saXNEaXNhYmxlZDpbe3R5cGU6Ul8sYXJnczpbImRpc2FibGVkIl19XSxtb2RlbDpbe3R5cGU6Ul8sYXJnczpbIm5nTW9kZWwiXX1dLG9wdGlvbnM6W3t0eXBlOlJfLGFyZ3M6WyJuZ01vZGVsT3B0aW9ucyJdfV0sdXBkYXRlOlt7dHlwZTpFXyxhcmdzOlsibmdNb2RlbENoYW5nZSJdfV19LCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIobkcsW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3RvcjoiW25nTW9kZWxdOm5vdChbZm9ybUNvbnRyb2xOYW1lXSk6bm90KFtmb3JtQ29udHJvbF0pIixwcm92aWRlcnM6W3RHXSxleHBvcnRBczoibmdNb2RlbCJ9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpzVyxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6VXJ9XX0se3R5cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOlZyfSx7dHlwZTpMcixhcmdzOltFVV19XX0se3R5cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOlZyfSx7dHlwZTpMcixhcmdzOltBVV19XX0se3R5cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOlZyfSx7dHlwZTpMcixhcmdzOlt4VV19XX1dfSkse3VwZGF0ZTpbe3R5cGU6RV8sYXJnczpbIm5nTW9kZWxDaGFuZ2UiXX1dLG5hbWU6W3t0eXBlOlJffV0saXNEaXNhYmxlZDpbe3R5cGU6Ul8sYXJnczpbImRpc2FibGVkIl19XSxtb2RlbDpbe3R5cGU6Ul8sYXJnczpbIm5nTW9kZWwiXX1dLG9wdGlvbnM6W3t0eXBlOlJfLGFyZ3M6WyJuZ01vZGVsT3B0aW9ucyJdfV19KTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNsYXNzIG9He31vRy7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8b0cpfSxvRy7JtWRpcj1obyh7dHlwZTpvRyxzZWxlY3RvcnM6W1siZm9ybSIsMywibmdOb0Zvcm0iLCIiLDMsIm5nTmF0aXZlVmFsaWRhdGUiLCIiXV0saG9zdEF0dHJzOlsibm92YWxpZGF0ZSIsIiJdfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihvRyxbe3R5cGU6a18sYXJnczpbe3NlbGVjdG9yOiJmb3JtOm5vdChbbmdOb0Zvcm1dKTpub3QoW25nTmF0aXZlVmFsaWRhdGVdKSIsaG9zdDp7bm92YWxpZGF0ZToiIn19XX1dLG51bGwsbnVsbCk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjb25zdCBpRz17cHJvdmlkZTp4VSx1c2VFeGlzdGluZzokZSgoKCk9PmFHKSksbXVsdGk6ITB9O2NsYXNzIGFHIGV4dGVuZHMgdlV7d3JpdGVWYWx1ZSh0KXt0aGlzLnNldFByb3BlcnR5KCJ2YWx1ZSIsbnVsbD09dD8iIjp0KX1yZWdpc3Rlck9uQ2hhbmdlKHQpe3RoaXMub25DaGFuZ2U9ZT0+e3QoIiI9PWU/bnVsbDpwYXJzZUZsb2F0KGUpKX19fWFHLsm1ZmFjPShmdW5jdGlvbigpe2xldCB0O3JldHVybiBmdW5jdGlvbiBlKG4pe3JldHVybih0fHwodD1VYShhRykpKShufHxhRyl9fSkoKSxhRy7JtWRpcj1obyh7dHlwZTphRyxzZWxlY3RvcnM6W1siaW5wdXQiLCJ0eXBlIiwibnVtYmVyIiwiZm9ybUNvbnRyb2xOYW1lIiwiIl0sWyJpbnB1dCIsInR5cGUiLCJudW1iZXIiLCJmb3JtQ29udHJvbCIsIiJdLFsiaW5wdXQiLCJ0eXBlIiwibnVtYmVyIiwibmdNb2RlbCIsIiJdXSxob3N0QmluZGluZ3M6ZnVuY3Rpb24gdChlLG4pezEmZSYmUmYoImlucHV0IiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5vbkNoYW5nZShlLnRhcmdldC52YWx1ZSl9KSkoImJsdXIiLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4ub25Ub3VjaGVkKCl9KSl9LGZlYXR1cmVzOltqaChbaUddKSxRcF19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKGFHLFt7dHlwZTprXyxhcmdzOlt7c2VsZWN0b3I6ImlucHV0W3R5cGU9bnVtYmVyXVtmb3JtQ29udHJvbE5hbWVdLGlucHV0W3R5cGU9bnVtYmVyXVtmb3JtQ29udHJvbF0saW5wdXRbdHlwZT1udW1iZXJdW25nTW9kZWxdIixob3N0OnsiKGlucHV0KSI6Im9uQ2hhbmdlKCRldmVudC50YXJnZXQudmFsdWUpIiwiKGJsdXIpIjoib25Ub3VjaGVkKCkifSxwcm92aWRlcnM6W2lHXX1dfV0sbnVsbCxudWxsKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNvbnN0IHJHPXtwcm92aWRlOnhVLHVzZUV4aXN0aW5nOiRlKCgoKT0+Y0cpKSxtdWx0aTohMH07Y2xhc3Mgc0d7fXNHLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxzRyl9LHNHLsm1bW9kPWZvKHt0eXBlOnNHfSksc0cuybVpbmo9RG4oe30pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoc0csW3t0eXBlOkxffV0sbnVsbCxudWxsKTtjbGFzcyBsR3tjb25zdHJ1Y3Rvcigpe3RoaXMuX2FjY2Vzc29ycz1bXX1hZGQodCxlKXt0aGlzLl9hY2Nlc3NvcnMucHVzaChbdCxlXSl9cmVtb3ZlKHQpe2ZvcihsZXQgZT10aGlzLl9hY2Nlc3NvcnMubGVuZ3RoLTE7ZT49MDstLWUpaWYodGhpcy5fYWNjZXNzb3JzW2VdWzFdPT09dClyZXR1cm4gdm9pZCB0aGlzLl9hY2Nlc3NvcnMuc3BsaWNlKGUsMSl9c2VsZWN0KHQpe3RoaXMuX2FjY2Vzc29ycy5mb3JFYWNoKChlPT57dGhpcy5faXNTYW1lR3JvdXAoZSx0KSYmZVsxXSE9PXQmJmVbMV0uZmlyZVVuY2hlY2sodC52YWx1ZSl9KSl9X2lzU2FtZUdyb3VwKHQsZSl7cmV0dXJuISF0WzBdLmNvbnRyb2wmJih0WzBdLl9wYXJlbnQ9PT1lLl9jb250cm9sLl9wYXJlbnQmJnRbMV0ubmFtZT09PWUubmFtZSl9fWxHLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxsRyl9LGxHLsm1cHJvdj1Tbih7ZmFjdG9yeTpmdW5jdGlvbiB0KCl7cmV0dXJuIG5ldyBsR30sdG9rZW46bEcscHJvdmlkZWRJbjpzR30pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIobEcsW3t0eXBlOlVtLGFyZ3M6W3twcm92aWRlZEluOnNHfV19XSwoZnVuY3Rpb24oKXtyZXR1cm5bXX0pLG51bGwpO2NsYXNzIGNHIGV4dGVuZHMgdlV7Y29uc3RydWN0b3IodCxlLG4sbyl7c3VwZXIodCxlKSx0aGlzLl9yZWdpc3RyeT1uLHRoaXMuX2luamVjdG9yPW8sdGhpcy5vbkNoYW5nZT0oKT0+e319bmdPbkluaXQoKXt0aGlzLl9jb250cm9sPXRoaXMuX2luamVjdG9yLmdldChsVyksdGhpcy5fY2hlY2tOYW1lKCksdGhpcy5fcmVnaXN0cnkuYWRkKHRoaXMuX2NvbnRyb2wsdGhpcyl9bmdPbkRlc3Ryb3koKXt0aGlzLl9yZWdpc3RyeS5yZW1vdmUodGhpcyl9d3JpdGVWYWx1ZSh0KXt0aGlzLl9zdGF0ZT10PT09dGhpcy52YWx1ZSx0aGlzLnNldFByb3BlcnR5KCJjaGVja2VkIix0aGlzLl9zdGF0ZSl9cmVnaXN0ZXJPbkNoYW5nZSh0KXt0aGlzLl9mbj10LHRoaXMub25DaGFuZ2U9KCk9Pnt0KHRoaXMudmFsdWUpLHRoaXMuX3JlZ2lzdHJ5LnNlbGVjdCh0aGlzKX19ZmlyZVVuY2hlY2sodCl7dGhpcy53cml0ZVZhbHVlKHQpfV9jaGVja05hbWUoKXt0aGlzLm5hbWUmJnRoaXMuZm9ybUNvbnRyb2xOYW1lJiZ0aGlzLm5hbWUhPT10aGlzLmZvcm1Db250cm9sTmFtZSYmKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiYoZnVuY3Rpb24gdCgpe3Rocm93IG5ldyBFcnJvcignXG4gICAgICBJZiB5b3UgZGVmaW5lIGJvdGggYSBuYW1lIGFuZCBhIGZvcm1Db250cm9sTmFtZSBhdHRyaWJ1dGUgb24geW91ciByYWRpbyBidXR0b24sIHRoZWlyIHZhbHVlc1xuICAgICAgbXVzdCBtYXRjaC4gRXg6IDxpbnB1dCB0eXBlPSJyYWRpbyIgZm9ybUNvbnRyb2xOYW1lPSJmb29kIiBuYW1lPSJmb29kIj5cbiAgICAnKX0pKCksIXRoaXMubmFtZSYmdGhpcy5mb3JtQ29udHJvbE5hbWUmJih0aGlzLm5hbWU9dGhpcy5mb3JtQ29udHJvbE5hbWUpfX1jRy7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8Y0cpKGdmKCRoKSxnZihLaCksZ2YobEcpLGdmKE5wKSl9LGNHLsm1ZGlyPWhvKHt0eXBlOmNHLHNlbGVjdG9yczpbWyJpbnB1dCIsInR5cGUiLCJyYWRpbyIsImZvcm1Db250cm9sTmFtZSIsIiJdLFsiaW5wdXQiLCJ0eXBlIiwicmFkaW8iLCJmb3JtQ29udHJvbCIsIiJdLFsiaW5wdXQiLCJ0eXBlIiwicmFkaW8iLCJuZ01vZGVsIiwiIl1dLGhvc3RCaW5kaW5nczpmdW5jdGlvbiB0KGUsbil7MSZlJiZSZigiY2hhbmdlIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLm9uQ2hhbmdlKCl9KSkoImJsdXIiLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4ub25Ub3VjaGVkKCl9KSl9LGlucHV0czp7bmFtZToibmFtZSIsZm9ybUNvbnRyb2xOYW1lOiJmb3JtQ29udHJvbE5hbWUiLHZhbHVlOiJ2YWx1ZSJ9LGZlYXR1cmVzOltqaChbckddKSxRcF19KSxjRy5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOiRofSx7dHlwZTpLaH0se3R5cGU6bEd9LHt0eXBlOk5wfV0sY0cucHJvcERlY29yYXRvcnM9e25hbWU6W3t0eXBlOlJffV0sZm9ybUNvbnRyb2xOYW1lOlt7dHlwZTpSX31dLHZhbHVlOlt7dHlwZTpSX31dfSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKGNHLFt7dHlwZTprXyxhcmdzOlt7c2VsZWN0b3I6ImlucHV0W3R5cGU9cmFkaW9dW2Zvcm1Db250cm9sTmFtZV0saW5wdXRbdHlwZT1yYWRpb11bZm9ybUNvbnRyb2xdLGlucHV0W3R5cGU9cmFkaW9dW25nTW9kZWxdIixob3N0OnsiKGNoYW5nZSkiOiJvbkNoYW5nZSgpIiwiKGJsdXIpIjoib25Ub3VjaGVkKCkifSxwcm92aWRlcnM6W3JHXX1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOiRofSx7dHlwZTpLaH0se3R5cGU6bEd9LHt0eXBlOk5wfV19KSx7bmFtZTpbe3R5cGU6Ul99XSxmb3JtQ29udHJvbE5hbWU6W3t0eXBlOlJffV0sdmFsdWU6W3t0eXBlOlJffV19KTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNvbnN0IGRHPXtwcm92aWRlOnhVLHVzZUV4aXN0aW5nOiRlKCgoKT0+cEcpKSxtdWx0aTohMH07Y2xhc3MgcEcgZXh0ZW5kcyB2VXt3cml0ZVZhbHVlKHQpe3RoaXMuc2V0UHJvcGVydHkoInZhbHVlIixwYXJzZUZsb2F0KHQpKX1yZWdpc3Rlck9uQ2hhbmdlKHQpe3RoaXMub25DaGFuZ2U9ZT0+e3QoIiI9PWU/bnVsbDpwYXJzZUZsb2F0KGUpKX19fXBHLsm1ZmFjPShmdW5jdGlvbigpe2xldCB0O3JldHVybiBmdW5jdGlvbiBlKG4pe3JldHVybih0fHwodD1VYShwRykpKShufHxwRyl9fSkoKSxwRy7JtWRpcj1obyh7dHlwZTpwRyxzZWxlY3RvcnM6W1siaW5wdXQiLCJ0eXBlIiwicmFuZ2UiLCJmb3JtQ29udHJvbE5hbWUiLCIiXSxbImlucHV0IiwidHlwZSIsInJhbmdlIiwiZm9ybUNvbnRyb2wiLCIiXSxbImlucHV0IiwidHlwZSIsInJhbmdlIiwibmdNb2RlbCIsIiJdXSxob3N0QmluZGluZ3M6ZnVuY3Rpb24gdChlLG4pezEmZSYmUmYoImNoYW5nZSIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4ub25DaGFuZ2UoZS50YXJnZXQudmFsdWUpfSkpKCJpbnB1dCIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4ub25DaGFuZ2UoZS50YXJnZXQudmFsdWUpfSkpKCJibHVyIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLm9uVG91Y2hlZCgpfSkpfSxmZWF0dXJlczpbamgoW2RHXSksUXBdfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihwRyxbe3R5cGU6a18sYXJnczpbe3NlbGVjdG9yOiJpbnB1dFt0eXBlPXJhbmdlXVtmb3JtQ29udHJvbE5hbWVdLGlucHV0W3R5cGU9cmFuZ2VdW2Zvcm1Db250cm9sXSxpbnB1dFt0eXBlPXJhbmdlXVtuZ01vZGVsXSIsaG9zdDp7IihjaGFuZ2UpIjoib25DaGFuZ2UoJGV2ZW50LnRhcmdldC52YWx1ZSkiLCIoaW5wdXQpIjoib25DaGFuZ2UoJGV2ZW50LnRhcmdldC52YWx1ZSkiLCIoYmx1cikiOiJvblRvdWNoZWQoKSJ9LHByb3ZpZGVyczpbZEddfV19XSxudWxsLG51bGwpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY29uc3QgbUc9bmV3IGVyKCJOZ01vZGVsV2l0aEZvcm1Db250cm9sV2FybmluZyIpLGZHPXtwcm92aWRlOmxXLHVzZUV4aXN0aW5nOiRlKCgoKT0+dUcpKX07Y2xhc3MgdUcgZXh0ZW5kcyBsV3tjb25zdHJ1Y3Rvcih0LGUsbixvKXtzdXBlcigpLHRoaXMuX25nTW9kZWxXYXJuaW5nQ29uZmlnPW8sdGhpcy51cGRhdGU9bmV3IFN5LHRoaXMuX25nTW9kZWxXYXJuaW5nU2VudD0hMSx0aGlzLl9zZXRWYWxpZGF0b3JzKHQpLHRoaXMuX3NldEFzeW5jVmFsaWRhdG9ycyhlKSx0aGlzLnZhbHVlQWNjZXNzb3I9RVcodGhpcyxuKX1zZXQgaXNEaXNhYmxlZCh0KXsoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJl9XLmRpc2FibGVkQXR0cldhcm5pbmcoKX1uZ09uQ2hhbmdlcyh0KXtpZih0aGlzLl9pc0NvbnRyb2xDaGFuZ2VkKHQpKXtjb25zdCBlPXQuZm9ybS5wcmV2aW91c1ZhbHVlO2UmJnZXKGUsdGhpcywhMSksTVcodGhpcy5mb3JtLHRoaXMpLHRoaXMuY29udHJvbC5kaXNhYmxlZCYmdGhpcy52YWx1ZUFjY2Vzc29yLnNldERpc2FibGVkU3RhdGUmJnRoaXMudmFsdWVBY2Nlc3Nvci5zZXREaXNhYmxlZFN0YXRlKCEwKSx0aGlzLmZvcm0udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7ZW1pdEV2ZW50OiExfSl9RFcodCx0aGlzLnZpZXdNb2RlbCkmJigoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlRXKCJmb3JtQ29udHJvbCIsdUcsdGhpcyx0aGlzLl9uZ01vZGVsV2FybmluZ0NvbmZpZyksdGhpcy5mb3JtLnNldFZhbHVlKHRoaXMubW9kZWwpLHRoaXMudmlld01vZGVsPXRoaXMubW9kZWwpfW5nT25EZXN0cm95KCl7dGhpcy5mb3JtJiZ2Vyh0aGlzLmZvcm0sdGhpcywhMSl9Z2V0IHBhdGgoKXtyZXR1cm5bXX1nZXQgY29udHJvbCgpe3JldHVybiB0aGlzLmZvcm19dmlld1RvTW9kZWxVcGRhdGUodCl7dGhpcy52aWV3TW9kZWw9dCx0aGlzLnVwZGF0ZS5lbWl0KHQpfV9pc0NvbnRyb2xDaGFuZ2VkKHQpe3JldHVybiB0Lmhhc093blByb3BlcnR5KCJmb3JtIil9fXVHLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHx1RykoZ2YoRVUsMTApLGdmKEFVLDEwKSxnZih4VSwxMCksZ2YobUcsOCkpfSx1Ry7JtWRpcj1obyh7dHlwZTp1RyxzZWxlY3RvcnM6W1siIiwiZm9ybUNvbnRyb2wiLCIiXV0saW5wdXRzOntpc0Rpc2FibGVkOlsiZGlzYWJsZWQiLCJpc0Rpc2FibGVkIl0sZm9ybTpbImZvcm1Db250cm9sIiwiZm9ybSJdLG1vZGVsOlsibmdNb2RlbCIsIm1vZGVsIl19LG91dHB1dHM6e3VwZGF0ZToibmdNb2RlbENoYW5nZSJ9LGV4cG9ydEFzOlsibmdGb3JtIl0sZmVhdHVyZXM6W2poKFtmR10pLFFwLHFvXX0pLHVHLl9uZ01vZGVsV2FybmluZ1NlbnRPbmNlPSExLHVHLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOlZyfSx7dHlwZTpMcixhcmdzOltFVV19XX0se3R5cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOlZyfSx7dHlwZTpMcixhcmdzOltBVV19XX0se3R5cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOlZyfSx7dHlwZTpMcixhcmdzOlt4VV19XX0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOlttR119XX1dLHVHLnByb3BEZWNvcmF0b3JzPXtmb3JtOlt7dHlwZTpSXyxhcmdzOlsiZm9ybUNvbnRyb2wiXX1dLGlzRGlzYWJsZWQ6W3t0eXBlOlJfLGFyZ3M6WyJkaXNhYmxlZCJdfV0sbW9kZWw6W3t0eXBlOlJfLGFyZ3M6WyJuZ01vZGVsIl19XSx1cGRhdGU6W3t0eXBlOkVfLGFyZ3M6WyJuZ01vZGVsQ2hhbmdlIl19XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYih1Ryxbe3R5cGU6a18sYXJnczpbe3NlbGVjdG9yOiJbZm9ybUNvbnRyb2xdIixwcm92aWRlcnM6W2ZHXSxleHBvcnRBczoibmdGb3JtIn1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOkFycmF5LGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpWcn0se3R5cGU6THIsYXJnczpbRVVdfV19LHt0eXBlOkFycmF5LGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpWcn0se3R5cGU6THIsYXJnczpbQVVdfV19LHt0eXBlOkFycmF5LGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpWcn0se3R5cGU6THIsYXJnczpbeFVdfV19LHt0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpbbUddfV19XX0pLHt1cGRhdGU6W3t0eXBlOkVfLGFyZ3M6WyJuZ01vZGVsQ2hhbmdlIl19XSxpc0Rpc2FibGVkOlt7dHlwZTpSXyxhcmdzOlsiZGlzYWJsZWQiXX1dLGZvcm06W3t0eXBlOlJfLGFyZ3M6WyJmb3JtQ29udHJvbCJdfV0sbW9kZWw6W3t0eXBlOlJfLGFyZ3M6WyJuZ01vZGVsIl19XX0pOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY29uc3QgZ0c9e3Byb3ZpZGU6c1csdXNlRXhpc3Rpbmc6JGUoKCgpPT5oRykpfTtjbGFzcyBoRyBleHRlbmRzIHNXe2NvbnN0cnVjdG9yKHQsZSl7c3VwZXIoKSx0aGlzLnZhbGlkYXRvcnM9dCx0aGlzLmFzeW5jVmFsaWRhdG9ycz1lLHRoaXMuc3VibWl0dGVkPSExLHRoaXMuX29uQ29sbGVjdGlvbkNoYW5nZT0oKT0+dGhpcy5fdXBkYXRlRG9tVmFsdWUoKSx0aGlzLmRpcmVjdGl2ZXM9W10sdGhpcy5mb3JtPW51bGwsdGhpcy5uZ1N1Ym1pdD1uZXcgU3ksdGhpcy5fc2V0VmFsaWRhdG9ycyh0KSx0aGlzLl9zZXRBc3luY1ZhbGlkYXRvcnMoZSl9bmdPbkNoYW5nZXModCl7dGhpcy5fY2hlY2tGb3JtUHJlc2VudCgpLHQuaGFzT3duUHJvcGVydHkoImZvcm0iKSYmKHRoaXMuX3VwZGF0ZVZhbGlkYXRvcnMoKSx0aGlzLl91cGRhdGVEb21WYWx1ZSgpLHRoaXMuX3VwZGF0ZVJlZ2lzdHJhdGlvbnMoKSx0aGlzLl9vbGRGb3JtPXRoaXMuZm9ybSl9bmdPbkRlc3Ryb3koKXt0aGlzLmZvcm0mJihQVyh0aGlzLmZvcm0sdGhpcyksdGhpcy5mb3JtLl9vbkNvbGxlY3Rpb25DaGFuZ2U9PT10aGlzLl9vbkNvbGxlY3Rpb25DaGFuZ2UmJnRoaXMuZm9ybS5fcmVnaXN0ZXJPbkNvbGxlY3Rpb25DaGFuZ2UoKCgpPT57fSkpKX1nZXQgZm9ybURpcmVjdGl2ZSgpe3JldHVybiB0aGlzfWdldCBjb250cm9sKCl7cmV0dXJuIHRoaXMuZm9ybX1nZXQgcGF0aCgpe3JldHVybltdfWFkZENvbnRyb2wodCl7Y29uc3QgZT10aGlzLmZvcm0uZ2V0KHQucGF0aCk7cmV0dXJuIE1XKGUsdCksZS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtlbWl0RXZlbnQ6ITF9KSx0aGlzLmRpcmVjdGl2ZXMucHVzaCh0KSxlfWdldENvbnRyb2wodCl7cmV0dXJuIHRoaXMuZm9ybS5nZXQodC5wYXRoKX1yZW1vdmVDb250cm9sKHQpe3ZXKHQuY29udHJvbHx8bnVsbCx0LCExKSxBVyh0aGlzLmRpcmVjdGl2ZXMsdCl9YWRkRm9ybUdyb3VwKHQpe3RoaXMuX3NldFVwRm9ybUNvbnRhaW5lcih0KX1yZW1vdmVGb3JtR3JvdXAodCl7dGhpcy5fY2xlYW5VcEZvcm1Db250YWluZXIodCl9Z2V0Rm9ybUdyb3VwKHQpe3JldHVybiB0aGlzLmZvcm0uZ2V0KHQucGF0aCl9YWRkRm9ybUFycmF5KHQpe3RoaXMuX3NldFVwRm9ybUNvbnRhaW5lcih0KX1yZW1vdmVGb3JtQXJyYXkodCl7dGhpcy5fY2xlYW5VcEZvcm1Db250YWluZXIodCl9Z2V0Rm9ybUFycmF5KHQpe3JldHVybiB0aGlzLmZvcm0uZ2V0KHQucGF0aCl9dXBkYXRlTW9kZWwodCxlKXt0aGlzLmZvcm0uZ2V0KHQucGF0aCkuc2V0VmFsdWUoZSl9b25TdWJtaXQodCl7cmV0dXJuIHRoaXMuc3VibWl0dGVkPSEwLFJXKHRoaXMuZm9ybSx0aGlzLmRpcmVjdGl2ZXMpLHRoaXMubmdTdWJtaXQuZW1pdCh0KSwhMX1vblJlc2V0KCl7dGhpcy5yZXNldEZvcm0oKX1yZXNldEZvcm0odCl7dGhpcy5mb3JtLnJlc2V0KHQpLHRoaXMuc3VibWl0dGVkPSExfV91cGRhdGVEb21WYWx1ZSgpe3RoaXMuZGlyZWN0aXZlcy5mb3JFYWNoKCh0PT57Y29uc3QgZT10LmNvbnRyb2wsbj10aGlzLmZvcm0uZ2V0KHQucGF0aCk7ZSE9PW4mJih2VyhlfHxudWxsLHQpLG4gaW5zdGFuY2VvZiBXVyYmKE1XKG4sdCksdC5jb250cm9sPW4pKX0pKSx0aGlzLmZvcm0uX3VwZGF0ZVRyZWVWYWxpZGl0eSh7ZW1pdEV2ZW50OiExfSl9X3NldFVwRm9ybUNvbnRhaW5lcih0KXtjb25zdCBlPXRoaXMuZm9ybS5nZXQodC5wYXRoKTtrVyhlLHQpLGUudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7ZW1pdEV2ZW50OiExfSl9X2NsZWFuVXBGb3JtQ29udGFpbmVyKHQpe2lmKHRoaXMuZm9ybSl7Y29uc3QgZT10aGlzLmZvcm0uZ2V0KHQucGF0aCk7aWYoZSl7KGZ1bmN0aW9uIG4odCxlKXtyZXR1cm4gUFcodCxlKX0pKGUsdCkmJmUudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7ZW1pdEV2ZW50OiExfSl9fX1fdXBkYXRlUmVnaXN0cmF0aW9ucygpe3RoaXMuZm9ybS5fcmVnaXN0ZXJPbkNvbGxlY3Rpb25DaGFuZ2UodGhpcy5fb25Db2xsZWN0aW9uQ2hhbmdlKSx0aGlzLl9vbGRGb3JtJiZ0aGlzLl9vbGRGb3JtLl9yZWdpc3Rlck9uQ29sbGVjdGlvbkNoYW5nZSgoKCk9Pnt9KSl9X3VwZGF0ZVZhbGlkYXRvcnMoKXtPVyh0aGlzLmZvcm0sdGhpcyksdGhpcy5fb2xkRm9ybSYmUFcodGhpcy5fb2xkRm9ybSx0aGlzKX1fY2hlY2tGb3JtUHJlc2VudCgpe3RoaXMuZm9ybXx8InVuZGVmaW5lZCIhPXR5cGVvZiBuZ0Rldk1vZGUmJiFuZ0Rldk1vZGV8fF9XLm1pc3NpbmdGb3JtRXhjZXB0aW9uKCl9fWhHLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxoRykoZ2YoRVUsMTApLGdmKEFVLDEwKSl9LGhHLsm1ZGlyPWhvKHt0eXBlOmhHLHNlbGVjdG9yczpbWyIiLCJmb3JtR3JvdXAiLCIiXV0saG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJlJmKCJzdWJtaXQiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLm9uU3VibWl0KGUpfSkpKCJyZXNldCIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5vblJlc2V0KCl9KSl9LGlucHV0czp7Zm9ybTpbImZvcm1Hcm91cCIsImZvcm0iXX0sb3V0cHV0czp7bmdTdWJtaXQ6Im5nU3VibWl0In0sZXhwb3J0QXM6WyJuZ0Zvcm0iXSxmZWF0dXJlczpbamgoW2dHXSksUXAscW9dfSksaEcuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpBcnJheSxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6VnJ9LHt0eXBlOkxyLGFyZ3M6W0VVXX1dfSx7dHlwZTpBcnJheSxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6VnJ9LHt0eXBlOkxyLGFyZ3M6W0FVXX1dfV0saEcucHJvcERlY29yYXRvcnM9e2Zvcm06W3t0eXBlOlJfLGFyZ3M6WyJmb3JtR3JvdXAiXX1dLG5nU3VibWl0Olt7dHlwZTpFX31dfSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKGhHLFt7dHlwZTprXyxhcmdzOlt7c2VsZWN0b3I6Iltmb3JtR3JvdXBdIixwcm92aWRlcnM6W2dHXSxob3N0OnsiKHN1Ym1pdCkiOiJvblN1Ym1pdCgkZXZlbnQpIiwiKHJlc2V0KSI6Im9uUmVzZXQoKSJ9LGV4cG9ydEFzOiJuZ0Zvcm0ifV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOlZyfSx7dHlwZTpMcixhcmdzOltFVV19XX0se3R5cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOlZyfSx7dHlwZTpMcixhcmdzOltBVV19XX1dfSkse2Zvcm06W3t0eXBlOlJfLGFyZ3M6WyJmb3JtR3JvdXAiXX1dLG5nU3VibWl0Olt7dHlwZTpFX31dfSk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjb25zdCBiRz17cHJvdmlkZTpzVyx1c2VFeGlzdGluZzokZSgoKCk9PnlHKSl9O2NsYXNzIHlHIGV4dGVuZHMgS1d7Y29uc3RydWN0b3IodCxlLG4pe3N1cGVyKCksdGhpcy5fcGFyZW50PXQsdGhpcy5fc2V0VmFsaWRhdG9ycyhlKSx0aGlzLl9zZXRBc3luY1ZhbGlkYXRvcnMobil9X2NoZWNrUGFyZW50VHlwZSgpe01HKHRoaXMuX3BhcmVudCkmJigidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmX1cuZ3JvdXBQYXJlbnRFeGNlcHRpb24oKX19eUcuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHlHKShnZihzVywxMyksZ2YoRVUsMTApLGdmKEFVLDEwKSl9LHlHLsm1ZGlyPWhvKHt0eXBlOnlHLHNlbGVjdG9yczpbWyIiLCJmb3JtR3JvdXBOYW1lIiwiIl1dLGlucHV0czp7bmFtZTpbImZvcm1Hcm91cE5hbWUiLCJuYW1lIl19LGZlYXR1cmVzOltqaChbYkddKSxRcF19KSx5Ry5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOnNXLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpVcn0se3R5cGU6anJ9XX0se3R5cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOlZyfSx7dHlwZTpMcixhcmdzOltFVV19XX0se3R5cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOlZyfSx7dHlwZTpMcixhcmdzOltBVV19XX1dLHlHLnByb3BEZWNvcmF0b3JzPXtuYW1lOlt7dHlwZTpSXyxhcmdzOlsiZm9ybUdyb3VwTmFtZSJdfV19LCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoeUcsW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3RvcjoiW2Zvcm1Hcm91cE5hbWVdIixwcm92aWRlcnM6W2JHXX1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOnNXLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpVcn0se3R5cGU6anJ9XX0se3R5cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOlZyfSx7dHlwZTpMcixhcmdzOltFVV19XX0se3R5cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOlZyfSx7dHlwZTpMcixhcmdzOltBVV19XX1dfSkse25hbWU6W3t0eXBlOlJfLGFyZ3M6WyJmb3JtR3JvdXBOYW1lIl19XX0pO2NvbnN0IF9HPXtwcm92aWRlOnNXLHVzZUV4aXN0aW5nOiRlKCgoKT0+Q0cpKX07Y2xhc3MgQ0cgZXh0ZW5kcyBzV3tjb25zdHJ1Y3Rvcih0LGUsbil7c3VwZXIoKSx0aGlzLl9wYXJlbnQ9dCx0aGlzLl9zZXRWYWxpZGF0b3JzKGUpLHRoaXMuX3NldEFzeW5jVmFsaWRhdG9ycyhuKX1uZ09uSW5pdCgpe3RoaXMuX2NoZWNrUGFyZW50VHlwZSgpLHRoaXMuZm9ybURpcmVjdGl2ZS5hZGRGb3JtQXJyYXkodGhpcyl9bmdPbkRlc3Ryb3koKXt0aGlzLmZvcm1EaXJlY3RpdmUmJnRoaXMuZm9ybURpcmVjdGl2ZS5yZW1vdmVGb3JtQXJyYXkodGhpcyl9Z2V0IGNvbnRyb2woKXtyZXR1cm4gdGhpcy5mb3JtRGlyZWN0aXZlLmdldEZvcm1BcnJheSh0aGlzKX1nZXQgZm9ybURpcmVjdGl2ZSgpe3JldHVybiB0aGlzLl9wYXJlbnQ/dGhpcy5fcGFyZW50LmZvcm1EaXJlY3RpdmU6bnVsbH1nZXQgcGF0aCgpe3JldHVybiBDVyhudWxsPT10aGlzLm5hbWU/dGhpcy5uYW1lOnRoaXMubmFtZS50b1N0cmluZygpLHRoaXMuX3BhcmVudCl9X2NoZWNrUGFyZW50VHlwZSgpe01HKHRoaXMuX3BhcmVudCkmJigidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmX1cuYXJyYXlQYXJlbnRFeGNlcHRpb24oKX19ZnVuY3Rpb24gTUcodCl7cmV0dXJuISh0IGluc3RhbmNlb2YgeUd8fHQgaW5zdGFuY2VvZiBoR3x8dCBpbnN0YW5jZW9mIENHKX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovQ0cuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fENHKShnZihzVywxMyksZ2YoRVUsMTApLGdmKEFVLDEwKSl9LENHLsm1ZGlyPWhvKHt0eXBlOkNHLHNlbGVjdG9yczpbWyIiLCJmb3JtQXJyYXlOYW1lIiwiIl1dLGlucHV0czp7bmFtZTpbImZvcm1BcnJheU5hbWUiLCJuYW1lIl19LGZlYXR1cmVzOltqaChbX0ddKSxRcF19KSxDRy5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOnNXLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpVcn0se3R5cGU6anJ9XX0se3R5cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOlZyfSx7dHlwZTpMcixhcmdzOltFVV19XX0se3R5cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOlZyfSx7dHlwZTpMcixhcmdzOltBVV19XX1dLENHLnByb3BEZWNvcmF0b3JzPXtuYW1lOlt7dHlwZTpSXyxhcmdzOlsiZm9ybUFycmF5TmFtZSJdfV19LCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoQ0csW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3RvcjoiW2Zvcm1BcnJheU5hbWVdIixwcm92aWRlcnM6W19HXX1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOnNXLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpVcn0se3R5cGU6anJ9XX0se3R5cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOlZyfSx7dHlwZTpMcixhcmdzOltFVV19XX0se3R5cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOlZyfSx7dHlwZTpMcixhcmdzOltBVV19XX1dfSkse25hbWU6W3t0eXBlOlJfLGFyZ3M6WyJmb3JtQXJyYXlOYW1lIl19XX0pO2NvbnN0IHZHPXtwcm92aWRlOmxXLHVzZUV4aXN0aW5nOiRlKCgoKT0+eEcpKX07Y2xhc3MgeEcgZXh0ZW5kcyBsV3tjb25zdHJ1Y3Rvcih0LGUsbixvLGkpe3N1cGVyKCksdGhpcy5fbmdNb2RlbFdhcm5pbmdDb25maWc9aSx0aGlzLl9hZGRlZD0hMSx0aGlzLnVwZGF0ZT1uZXcgU3ksdGhpcy5fbmdNb2RlbFdhcm5pbmdTZW50PSExLHRoaXMuX3BhcmVudD10LHRoaXMuX3NldFZhbGlkYXRvcnMoZSksdGhpcy5fc2V0QXN5bmNWYWxpZGF0b3JzKG4pLHRoaXMudmFsdWVBY2Nlc3Nvcj1FVyh0aGlzLG8pfXNldCBpc0Rpc2FibGVkKHQpeygidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmX1cuZGlzYWJsZWRBdHRyV2FybmluZygpfW5nT25DaGFuZ2VzKHQpe3RoaXMuX2FkZGVkfHx0aGlzLl9zZXRVcENvbnRyb2woKSxEVyh0LHRoaXMudmlld01vZGVsKSYmKCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmVFcoImZvcm1Db250cm9sTmFtZSIseEcsdGhpcyx0aGlzLl9uZ01vZGVsV2FybmluZ0NvbmZpZyksdGhpcy52aWV3TW9kZWw9dGhpcy5tb2RlbCx0aGlzLmZvcm1EaXJlY3RpdmUudXBkYXRlTW9kZWwodGhpcyx0aGlzLm1vZGVsKSl9bmdPbkRlc3Ryb3koKXt0aGlzLmZvcm1EaXJlY3RpdmUmJnRoaXMuZm9ybURpcmVjdGl2ZS5yZW1vdmVDb250cm9sKHRoaXMpfXZpZXdUb01vZGVsVXBkYXRlKHQpe3RoaXMudmlld01vZGVsPXQsdGhpcy51cGRhdGUuZW1pdCh0KX1nZXQgcGF0aCgpe3JldHVybiBDVyhudWxsPT10aGlzLm5hbWU/dGhpcy5uYW1lOnRoaXMubmFtZS50b1N0cmluZygpLHRoaXMuX3BhcmVudCl9Z2V0IGZvcm1EaXJlY3RpdmUoKXtyZXR1cm4gdGhpcy5fcGFyZW50P3RoaXMuX3BhcmVudC5mb3JtRGlyZWN0aXZlOm51bGx9X2NoZWNrUGFyZW50VHlwZSgpeygidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmKCEodGhpcy5fcGFyZW50IGluc3RhbmNlb2YgeUcpJiZ0aGlzLl9wYXJlbnQgaW5zdGFuY2VvZiBLVz9fVy5uZ01vZGVsR3JvdXBFeGNlcHRpb24oKTp0aGlzLl9wYXJlbnQgaW5zdGFuY2VvZiB5R3x8dGhpcy5fcGFyZW50IGluc3RhbmNlb2YgaEd8fHRoaXMuX3BhcmVudCBpbnN0YW5jZW9mIENHfHxfVy5jb250cm9sUGFyZW50RXhjZXB0aW9uKCkpfV9zZXRVcENvbnRyb2woKXt0aGlzLl9jaGVja1BhcmVudFR5cGUoKSx0aGlzLmNvbnRyb2w9dGhpcy5mb3JtRGlyZWN0aXZlLmFkZENvbnRyb2wodGhpcyksdGhpcy5jb250cm9sLmRpc2FibGVkJiZ0aGlzLnZhbHVlQWNjZXNzb3Iuc2V0RGlzYWJsZWRTdGF0ZSYmdGhpcy52YWx1ZUFjY2Vzc29yLnNldERpc2FibGVkU3RhdGUoITApLHRoaXMuX2FkZGVkPSEwfX14Ry7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8eEcpKGdmKHNXLDEzKSxnZihFVSwxMCksZ2YoQVUsMTApLGdmKHhVLDEwKSxnZihtRyw4KSl9LHhHLsm1ZGlyPWhvKHt0eXBlOnhHLHNlbGVjdG9yczpbWyIiLCJmb3JtQ29udHJvbE5hbWUiLCIiXV0saW5wdXRzOntpc0Rpc2FibGVkOlsiZGlzYWJsZWQiLCJpc0Rpc2FibGVkIl0sbmFtZTpbImZvcm1Db250cm9sTmFtZSIsIm5hbWUiXSxtb2RlbDpbIm5nTW9kZWwiLCJtb2RlbCJdfSxvdXRwdXRzOnt1cGRhdGU6Im5nTW9kZWxDaGFuZ2UifSxmZWF0dXJlczpbamgoW3ZHXSksUXAscW9dfSkseEcuX25nTW9kZWxXYXJuaW5nU2VudE9uY2U9ITEseEcuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpzVyxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6VXJ9LHt0eXBlOmpyfV19LHt0eXBlOkFycmF5LGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpWcn0se3R5cGU6THIsYXJnczpbRVVdfV19LHt0eXBlOkFycmF5LGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpWcn0se3R5cGU6THIsYXJnczpbQVVdfV19LHt0eXBlOkFycmF5LGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpWcn0se3R5cGU6THIsYXJnczpbeFVdfV19LHt0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpbbUddfV19XSx4Ry5wcm9wRGVjb3JhdG9ycz17bmFtZTpbe3R5cGU6Ul8sYXJnczpbImZvcm1Db250cm9sTmFtZSJdfV0saXNEaXNhYmxlZDpbe3R5cGU6Ul8sYXJnczpbImRpc2FibGVkIl19XSxtb2RlbDpbe3R5cGU6Ul8sYXJnczpbIm5nTW9kZWwiXX1dLHVwZGF0ZTpbe3R5cGU6RV8sYXJnczpbIm5nTW9kZWxDaGFuZ2UiXX1dfSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKHhHLFt7dHlwZTprXyxhcmdzOlt7c2VsZWN0b3I6Iltmb3JtQ29udHJvbE5hbWVdIixwcm92aWRlcnM6W3ZHXX1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOnNXLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpVcn0se3R5cGU6anJ9XX0se3R5cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOlZyfSx7dHlwZTpMcixhcmdzOltFVV19XX0se3R5cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOlZyfSx7dHlwZTpMcixhcmdzOltBVV19XX0se3R5cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOlZyfSx7dHlwZTpMcixhcmdzOlt4VV19XX0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOlttR119XX1dfSkse3VwZGF0ZTpbe3R5cGU6RV8sYXJnczpbIm5nTW9kZWxDaGFuZ2UiXX1dLGlzRGlzYWJsZWQ6W3t0eXBlOlJfLGFyZ3M6WyJkaXNhYmxlZCJdfV0sbmFtZTpbe3R5cGU6Ul8sYXJnczpbImZvcm1Db250cm9sTmFtZSJdfV0sbW9kZWw6W3t0eXBlOlJfLGFyZ3M6WyJuZ01vZGVsIl19XX0pOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY29uc3QgT0c9e3Byb3ZpZGU6eFUsdXNlRXhpc3Rpbmc6JGUoKCgpPT53RykpLG11bHRpOiEwfTtmdW5jdGlvbiBQRyh0LGUpe3JldHVybiBudWxsPT10P2Ake2V9YDooZSYmIm9iamVjdCI9PXR5cGVvZiBlJiYoZT0iT2JqZWN0IiksYCR7dH06ICR7ZX1gLnNsaWNlKDAsNTApKX1jbGFzcyB3RyBleHRlbmRzIHZVe2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLl9vcHRpb25NYXA9bmV3IE1hcCx0aGlzLl9pZENvdW50ZXI9MCx0aGlzLl9jb21wYXJlV2l0aD1PYmplY3QuaXN9c2V0IGNvbXBhcmVXaXRoKHQpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0JiYoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkpdGhyb3cgbmV3IEVycm9yKGBjb21wYXJlV2l0aCBtdXN0IGJlIGEgZnVuY3Rpb24sIGJ1dCByZWNlaXZlZCAke0pTT04uc3RyaW5naWZ5KHQpfWApO3RoaXMuX2NvbXBhcmVXaXRoPXR9d3JpdGVWYWx1ZSh0KXt0aGlzLnZhbHVlPXQ7Y29uc3QgZT10aGlzLl9nZXRPcHRpb25JZCh0KTtudWxsPT1lJiZ0aGlzLnNldFByb3BlcnR5KCJzZWxlY3RlZEluZGV4IiwtMSk7Y29uc3Qgbj1QRyhlLHQpO3RoaXMuc2V0UHJvcGVydHkoInZhbHVlIixuKX1yZWdpc3Rlck9uQ2hhbmdlKHQpe3RoaXMub25DaGFuZ2U9ZT0+e3RoaXMudmFsdWU9dGhpcy5fZ2V0T3B0aW9uVmFsdWUoZSksdCh0aGlzLnZhbHVlKX19X3JlZ2lzdGVyT3B0aW9uKCl7cmV0dXJuKHRoaXMuX2lkQ291bnRlcisrKS50b1N0cmluZygpfV9nZXRPcHRpb25JZCh0KXtmb3IoY29uc3QgZSBvZiBBcnJheS5mcm9tKHRoaXMuX29wdGlvbk1hcC5rZXlzKCkpKWlmKHRoaXMuX2NvbXBhcmVXaXRoKHRoaXMuX29wdGlvbk1hcC5nZXQoZSksdCkpcmV0dXJuIGU7cmV0dXJuIG51bGx9X2dldE9wdGlvblZhbHVlKHQpe2NvbnN0IGU9KGZ1bmN0aW9uIG4odCl7cmV0dXJuIHQuc3BsaXQoIjoiKVswXX0pKHQpO3JldHVybiB0aGlzLl9vcHRpb25NYXAuaGFzKGUpP3RoaXMuX29wdGlvbk1hcC5nZXQoZSk6dH19d0cuybVmYWM9KGZ1bmN0aW9uKCl7bGV0IHQ7cmV0dXJuIGZ1bmN0aW9uIGUobil7cmV0dXJuKHR8fCh0PVVhKHdHKSkpKG58fHdHKX19KSgpLHdHLsm1ZGlyPWhvKHt0eXBlOndHLHNlbGVjdG9yczpbWyJzZWxlY3QiLCJmb3JtQ29udHJvbE5hbWUiLCIiLDMsIm11bHRpcGxlIiwiIl0sWyJzZWxlY3QiLCJmb3JtQ29udHJvbCIsIiIsMywibXVsdGlwbGUiLCIiXSxbInNlbGVjdCIsIm5nTW9kZWwiLCIiLDMsIm11bHRpcGxlIiwiIl1dLGhvc3RCaW5kaW5nczpmdW5jdGlvbiB0KGUsbil7MSZlJiZSZigiY2hhbmdlIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5vbkNoYW5nZShlLnRhcmdldC52YWx1ZSl9KSkoImJsdXIiLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4ub25Ub3VjaGVkKCl9KSl9LGlucHV0czp7Y29tcGFyZVdpdGg6ImNvbXBhcmVXaXRoIn0sZmVhdHVyZXM6W2poKFtPR10pLFFwXX0pLHdHLnByb3BEZWNvcmF0b3JzPXtjb21wYXJlV2l0aDpbe3R5cGU6Ul99XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYih3Ryxbe3R5cGU6a18sYXJnczpbe3NlbGVjdG9yOiJzZWxlY3Q6bm90KFttdWx0aXBsZV0pW2Zvcm1Db250cm9sTmFtZV0sc2VsZWN0Om5vdChbbXVsdGlwbGVdKVtmb3JtQ29udHJvbF0sc2VsZWN0Om5vdChbbXVsdGlwbGVdKVtuZ01vZGVsXSIsaG9zdDp7IihjaGFuZ2UpIjoib25DaGFuZ2UoJGV2ZW50LnRhcmdldC52YWx1ZSkiLCIoYmx1cikiOiJvblRvdWNoZWQoKSJ9LHByb3ZpZGVyczpbT0ddfV19XSxudWxsLHtjb21wYXJlV2l0aDpbe3R5cGU6Ul99XX0pO2NsYXNzIGtHe2NvbnN0cnVjdG9yKHQsZSxuKXt0aGlzLl9lbGVtZW50PXQsdGhpcy5fcmVuZGVyZXI9ZSx0aGlzLl9zZWxlY3Q9bix0aGlzLl9zZWxlY3QmJih0aGlzLmlkPXRoaXMuX3NlbGVjdC5fcmVnaXN0ZXJPcHRpb24oKSl9c2V0IG5nVmFsdWUodCl7bnVsbCE9dGhpcy5fc2VsZWN0JiYodGhpcy5fc2VsZWN0Ll9vcHRpb25NYXAuc2V0KHRoaXMuaWQsdCksdGhpcy5fc2V0RWxlbWVudFZhbHVlKFBHKHRoaXMuaWQsdCkpLHRoaXMuX3NlbGVjdC53cml0ZVZhbHVlKHRoaXMuX3NlbGVjdC52YWx1ZSkpfXNldCB2YWx1ZSh0KXt0aGlzLl9zZXRFbGVtZW50VmFsdWUodCksdGhpcy5fc2VsZWN0JiZ0aGlzLl9zZWxlY3Qud3JpdGVWYWx1ZSh0aGlzLl9zZWxlY3QudmFsdWUpfV9zZXRFbGVtZW50VmFsdWUodCl7dGhpcy5fcmVuZGVyZXIuc2V0UHJvcGVydHkodGhpcy5fZWxlbWVudC5uYXRpdmVFbGVtZW50LCJ2YWx1ZSIsdCl9bmdPbkRlc3Ryb3koKXt0aGlzLl9zZWxlY3QmJih0aGlzLl9zZWxlY3QuX29wdGlvbk1hcC5kZWxldGUodGhpcy5pZCksdGhpcy5fc2VsZWN0LndyaXRlVmFsdWUodGhpcy5fc2VsZWN0LnZhbHVlKSl9fWtHLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxrRykoZ2YoS2gpLGdmKCRoKSxnZih3Ryw5KSl9LGtHLsm1ZGlyPWhvKHt0eXBlOmtHLHNlbGVjdG9yczpbWyJvcHRpb24iXV0saW5wdXRzOntuZ1ZhbHVlOiJuZ1ZhbHVlIix2YWx1ZToidmFsdWUifX0pLGtHLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6S2h9LHt0eXBlOiRofSx7dHlwZTp3RyxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6VXJ9XX1dLGtHLnByb3BEZWNvcmF0b3JzPXtuZ1ZhbHVlOlt7dHlwZTpSXyxhcmdzOlsibmdWYWx1ZSJdfV0sdmFsdWU6W3t0eXBlOlJfLGFyZ3M6WyJ2YWx1ZSJdfV19LCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoa0csW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3Rvcjoib3B0aW9uIn1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOktofSx7dHlwZTokaH0se3R5cGU6d0csZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOlVyfV19XX0pLHtuZ1ZhbHVlOlt7dHlwZTpSXyxhcmdzOlsibmdWYWx1ZSJdfV0sdmFsdWU6W3t0eXBlOlJfLGFyZ3M6WyJ2YWx1ZSJdfV19KTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNvbnN0IFNHPXtwcm92aWRlOnhVLHVzZUV4aXN0aW5nOiRlKCgoKT0+UkcpKSxtdWx0aTohMH07ZnVuY3Rpb24gREcodCxlKXtyZXR1cm4gbnVsbD09dD9gJHtlfWA6KCJzdHJpbmciPT10eXBlb2YgZSYmKGU9YCcke2V9J2ApLGUmJiJvYmplY3QiPT10eXBlb2YgZSYmKGU9Ik9iamVjdCIpLGAke3R9OiAke2V9YC5zbGljZSgwLDUwKSl9Y2xhc3MgUkcgZXh0ZW5kcyB2VXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5fb3B0aW9uTWFwPW5ldyBNYXAsdGhpcy5faWRDb3VudGVyPTAsdGhpcy5fY29tcGFyZVdpdGg9T2JqZWN0LmlzfXNldCBjb21wYXJlV2l0aCh0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCYmKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpKXRocm93IG5ldyBFcnJvcihgY29tcGFyZVdpdGggbXVzdCBiZSBhIGZ1bmN0aW9uLCBidXQgcmVjZWl2ZWQgJHtKU09OLnN0cmluZ2lmeSh0KX1gKTt0aGlzLl9jb21wYXJlV2l0aD10fXdyaXRlVmFsdWUodCl7bGV0IGU7aWYodGhpcy52YWx1ZT10LEFycmF5LmlzQXJyYXkodCkpe2NvbnN0IG49dC5tYXAoKHQ9PnRoaXMuX2dldE9wdGlvbklkKHQpKSk7ZT0odCxlKT0+e3QuX3NldFNlbGVjdGVkKG4uaW5kZXhPZihlLnRvU3RyaW5nKCkpPi0xKX19ZWxzZSBlPSh0LGUpPT57dC5fc2V0U2VsZWN0ZWQoITEpfTt0aGlzLl9vcHRpb25NYXAuZm9yRWFjaChlKX1yZWdpc3Rlck9uQ2hhbmdlKHQpe3RoaXMub25DaGFuZ2U9ZT0+e2NvbnN0IG49W107aWYodm9pZCAwIT09ZS5zZWxlY3RlZE9wdGlvbnMpe2NvbnN0IHQ9ZS5zZWxlY3RlZE9wdGlvbnM7Zm9yKGxldCBlPTA7ZTx0Lmxlbmd0aDtlKyspe2NvbnN0IG89dC5pdGVtKGUpLGk9dGhpcy5fZ2V0T3B0aW9uVmFsdWUoby52YWx1ZSk7bi5wdXNoKGkpfX1lbHNle2NvbnN0IHQ9ZS5vcHRpb25zO2ZvcihsZXQgZT0wO2U8dC5sZW5ndGg7ZSsrKXtjb25zdCBvPXQuaXRlbShlKTtpZihvLnNlbGVjdGVkKXtjb25zdCB0PXRoaXMuX2dldE9wdGlvblZhbHVlKG8udmFsdWUpO24ucHVzaCh0KX19fXRoaXMudmFsdWU9bix0KG4pfX1fcmVnaXN0ZXJPcHRpb24odCl7Y29uc3QgZT0odGhpcy5faWRDb3VudGVyKyspLnRvU3RyaW5nKCk7cmV0dXJuIHRoaXMuX29wdGlvbk1hcC5zZXQoZSx0KSxlfV9nZXRPcHRpb25JZCh0KXtmb3IoY29uc3QgZSBvZiBBcnJheS5mcm9tKHRoaXMuX29wdGlvbk1hcC5rZXlzKCkpKWlmKHRoaXMuX2NvbXBhcmVXaXRoKHRoaXMuX29wdGlvbk1hcC5nZXQoZSkuX3ZhbHVlLHQpKXJldHVybiBlO3JldHVybiBudWxsfV9nZXRPcHRpb25WYWx1ZSh0KXtjb25zdCBlPShmdW5jdGlvbiBuKHQpe3JldHVybiB0LnNwbGl0KCI6IilbMF19KSh0KTtyZXR1cm4gdGhpcy5fb3B0aW9uTWFwLmhhcyhlKT90aGlzLl9vcHRpb25NYXAuZ2V0KGUpLl92YWx1ZTp0fX1SRy7JtWZhYz0oZnVuY3Rpb24oKXtsZXQgdDtyZXR1cm4gZnVuY3Rpb24gZShuKXtyZXR1cm4odHx8KHQ9VWEoUkcpKSkobnx8UkcpfX0pKCksUkcuybVkaXI9aG8oe3R5cGU6Ukcsc2VsZWN0b3JzOltbInNlbGVjdCIsIm11bHRpcGxlIiwiIiwiZm9ybUNvbnRyb2xOYW1lIiwiIl0sWyJzZWxlY3QiLCJtdWx0aXBsZSIsIiIsImZvcm1Db250cm9sIiwiIl0sWyJzZWxlY3QiLCJtdWx0aXBsZSIsIiIsIm5nTW9kZWwiLCIiXV0saG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJlJmKCJjaGFuZ2UiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLm9uQ2hhbmdlKGUudGFyZ2V0KX0pKSgiYmx1ciIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5vblRvdWNoZWQoKX0pKX0saW5wdXRzOntjb21wYXJlV2l0aDoiY29tcGFyZVdpdGgifSxmZWF0dXJlczpbamgoW1NHXSksUXBdfSksUkcucHJvcERlY29yYXRvcnM9e2NvbXBhcmVXaXRoOlt7dHlwZTpSX31dfSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKFJHLFt7dHlwZTprXyxhcmdzOlt7c2VsZWN0b3I6InNlbGVjdFttdWx0aXBsZV1bZm9ybUNvbnRyb2xOYW1lXSxzZWxlY3RbbXVsdGlwbGVdW2Zvcm1Db250cm9sXSxzZWxlY3RbbXVsdGlwbGVdW25nTW9kZWxdIixob3N0OnsiKGNoYW5nZSkiOiJvbkNoYW5nZSgkZXZlbnQudGFyZ2V0KSIsIihibHVyKSI6Im9uVG91Y2hlZCgpIn0scHJvdmlkZXJzOltTR119XX1dLG51bGwse2NvbXBhcmVXaXRoOlt7dHlwZTpSX31dfSk7Y2xhc3MgRUd7Y29uc3RydWN0b3IodCxlLG4pe3RoaXMuX2VsZW1lbnQ9dCx0aGlzLl9yZW5kZXJlcj1lLHRoaXMuX3NlbGVjdD1uLHRoaXMuX3NlbGVjdCYmKHRoaXMuaWQ9dGhpcy5fc2VsZWN0Ll9yZWdpc3Rlck9wdGlvbih0aGlzKSl9c2V0IG5nVmFsdWUodCl7bnVsbCE9dGhpcy5fc2VsZWN0JiYodGhpcy5fdmFsdWU9dCx0aGlzLl9zZXRFbGVtZW50VmFsdWUoREcodGhpcy5pZCx0KSksdGhpcy5fc2VsZWN0LndyaXRlVmFsdWUodGhpcy5fc2VsZWN0LnZhbHVlKSl9c2V0IHZhbHVlKHQpe3RoaXMuX3NlbGVjdD8odGhpcy5fdmFsdWU9dCx0aGlzLl9zZXRFbGVtZW50VmFsdWUoREcodGhpcy5pZCx0KSksdGhpcy5fc2VsZWN0LndyaXRlVmFsdWUodGhpcy5fc2VsZWN0LnZhbHVlKSk6dGhpcy5fc2V0RWxlbWVudFZhbHVlKHQpfV9zZXRFbGVtZW50VmFsdWUodCl7dGhpcy5fcmVuZGVyZXIuc2V0UHJvcGVydHkodGhpcy5fZWxlbWVudC5uYXRpdmVFbGVtZW50LCJ2YWx1ZSIsdCl9X3NldFNlbGVjdGVkKHQpe3RoaXMuX3JlbmRlcmVyLnNldFByb3BlcnR5KHRoaXMuX2VsZW1lbnQubmF0aXZlRWxlbWVudCwic2VsZWN0ZWQiLHQpfW5nT25EZXN0cm95KCl7dGhpcy5fc2VsZWN0JiYodGhpcy5fc2VsZWN0Ll9vcHRpb25NYXAuZGVsZXRlKHRoaXMuaWQpLHRoaXMuX3NlbGVjdC53cml0ZVZhbHVlKHRoaXMuX3NlbGVjdC52YWx1ZSkpfX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmZ1bmN0aW9uIEFHKHQpe3JldHVybiJudW1iZXIiPT10eXBlb2YgdD90OnBhcnNlSW50KHQsMTApfUVHLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxFRykoZ2YoS2gpLGdmKCRoKSxnZihSRyw5KSl9LEVHLsm1ZGlyPWhvKHt0eXBlOkVHLHNlbGVjdG9yczpbWyJvcHRpb24iXV0saW5wdXRzOntuZ1ZhbHVlOiJuZ1ZhbHVlIix2YWx1ZToidmFsdWUifX0pLEVHLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6S2h9LHt0eXBlOiRofSx7dHlwZTpSRyxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6VXJ9XX1dLEVHLnByb3BEZWNvcmF0b3JzPXtuZ1ZhbHVlOlt7dHlwZTpSXyxhcmdzOlsibmdWYWx1ZSJdfV0sdmFsdWU6W3t0eXBlOlJfLGFyZ3M6WyJ2YWx1ZSJdfV19LCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoRUcsW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3Rvcjoib3B0aW9uIn1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOktofSx7dHlwZTokaH0se3R5cGU6UkcsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOlVyfV19XX0pLHtuZ1ZhbHVlOlt7dHlwZTpSXyxhcmdzOlsibmdWYWx1ZSJdfV0sdmFsdWU6W3t0eXBlOlJfLGFyZ3M6WyJ2YWx1ZSJdfV19KTtjbGFzcyBUR3tjb25zdHJ1Y3Rvcigpe3RoaXMuX3ZhbGlkYXRvcj1VVX1oYW5kbGVDaGFuZ2VzKHQpe2lmKHRoaXMuaW5wdXROYW1lIGluIHQpe2NvbnN0IGU9dGhpcy5ub3JtYWxpemVJbnB1dCh0W3RoaXMuaW5wdXROYW1lXS5jdXJyZW50VmFsdWUpO3RoaXMuX3ZhbGlkYXRvcj10aGlzLmNyZWF0ZVZhbGlkYXRvcihlKSx0aGlzLl9vbkNoYW5nZSYmdGhpcy5fb25DaGFuZ2UoKX19dmFsaWRhdGUodCl7cmV0dXJuIHRoaXMuX3ZhbGlkYXRvcih0KX1yZWdpc3Rlck9uVmFsaWRhdG9yQ2hhbmdlKHQpe3RoaXMuX29uQ2hhbmdlPXR9fVRHLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxURyl9LFRHLsm1ZGlyPWhvKHt0eXBlOlRHfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihURyxbe3R5cGU6a199XSwoZnVuY3Rpb24oKXtyZXR1cm5bXX0pLG51bGwpO2NvbnN0IE5HPXtwcm92aWRlOkVVLHVzZUV4aXN0aW5nOiRlKCgoKT0+ekcpKSxtdWx0aTohMH07Y2xhc3MgekcgZXh0ZW5kcyBUR3tjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5pbnB1dE5hbWU9Im1heCIsdGhpcy5ub3JtYWxpemVJbnB1dD10PT5wYXJzZUZsb2F0KHQpLHRoaXMuY3JlYXRlVmFsaWRhdG9yPXQ9PklVKHQpfW5nT25DaGFuZ2VzKHQpe3RoaXMuaGFuZGxlQ2hhbmdlcyh0KX19ekcuybVmYWM9KGZ1bmN0aW9uKCl7bGV0IHQ7cmV0dXJuIGZ1bmN0aW9uIGUobil7cmV0dXJuKHR8fCh0PVVhKHpHKSkpKG58fHpHKX19KSgpLHpHLsm1ZGlyPWhvKHt0eXBlOnpHLHNlbGVjdG9yczpbWyJpbnB1dCIsInR5cGUiLCJudW1iZXIiLCJtYXgiLCIiLCJmb3JtQ29udHJvbE5hbWUiLCIiXSxbImlucHV0IiwidHlwZSIsIm51bWJlciIsIm1heCIsIiIsImZvcm1Db250cm9sIiwiIl0sWyJpbnB1dCIsInR5cGUiLCJudW1iZXIiLCJtYXgiLCIiLCJuZ01vZGVsIiwiIl1dLGhvc3RWYXJzOjEsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQoZSxuKXtpZigyJmUpe2xldCB0O3ltKCJtYXgiLG51bGwhPT0odD1uLm1heCkmJnZvaWQgMCE9PXQ/dDpudWxsKX19LGlucHV0czp7bWF4OiJtYXgifSxmZWF0dXJlczpbamgoW05HXSksUXAscW9dfSksekcucHJvcERlY29yYXRvcnM9e21heDpbe3R5cGU6Ul99XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYih6Ryxbe3R5cGU6a18sYXJnczpbe3NlbGVjdG9yOiJpbnB1dFt0eXBlPW51bWJlcl1bbWF4XVtmb3JtQ29udHJvbE5hbWVdLGlucHV0W3R5cGU9bnVtYmVyXVttYXhdW2Zvcm1Db250cm9sXSxpbnB1dFt0eXBlPW51bWJlcl1bbWF4XVtuZ01vZGVsXSIscHJvdmlkZXJzOltOR10saG9zdDp7IlthdHRyLm1heF0iOiJtYXggPz8gbnVsbCJ9fV19XSxudWxsLHttYXg6W3t0eXBlOlJffV19KTtjb25zdCBJRz17cHJvdmlkZTpFVSx1c2VFeGlzdGluZzokZSgoKCk9PkhHKSksbXVsdGk6ITB9O2NsYXNzIEhHIGV4dGVuZHMgVEd7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMuaW5wdXROYW1lPSJtaW4iLHRoaXMubm9ybWFsaXplSW5wdXQ9dD0+cGFyc2VGbG9hdCh0KSx0aGlzLmNyZWF0ZVZhbGlkYXRvcj10PT56VSh0KX1uZ09uQ2hhbmdlcyh0KXt0aGlzLmhhbmRsZUNoYW5nZXModCl9fUhHLsm1ZmFjPShmdW5jdGlvbigpe2xldCB0O3JldHVybiBmdW5jdGlvbiBlKG4pe3JldHVybih0fHwodD1VYShIRykpKShufHxIRyl9fSkoKSxIRy7JtWRpcj1obyh7dHlwZTpIRyxzZWxlY3RvcnM6W1siaW5wdXQiLCJ0eXBlIiwibnVtYmVyIiwibWluIiwiIiwiZm9ybUNvbnRyb2xOYW1lIiwiIl0sWyJpbnB1dCIsInR5cGUiLCJudW1iZXIiLCJtaW4iLCIiLCJmb3JtQ29udHJvbCIsIiJdLFsiaW5wdXQiLCJ0eXBlIiwibnVtYmVyIiwibWluIiwiIiwibmdNb2RlbCIsIiJdXSxob3N0VmFyczoxLGhvc3RCaW5kaW5nczpmdW5jdGlvbiB0KGUsbil7aWYoMiZlKXtsZXQgdDt5bSgibWluIixudWxsIT09KHQ9bi5taW4pJiZ2b2lkIDAhPT10P3Q6bnVsbCl9fSxpbnB1dHM6e21pbjoibWluIn0sZmVhdHVyZXM6W2poKFtJR10pLFFwLHFvXX0pLEhHLnByb3BEZWNvcmF0b3JzPXttaW46W3t0eXBlOlJffV19LCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoSEcsW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3RvcjoiaW5wdXRbdHlwZT1udW1iZXJdW21pbl1bZm9ybUNvbnRyb2xOYW1lXSxpbnB1dFt0eXBlPW51bWJlcl1bbWluXVtmb3JtQ29udHJvbF0saW5wdXRbdHlwZT1udW1iZXJdW21pbl1bbmdNb2RlbF0iLHByb3ZpZGVyczpbSUddLGhvc3Q6eyJbYXR0ci5taW5dIjoibWluID8/IG51bGwifX1dfV0sbnVsbCx7bWluOlt7dHlwZTpSX31dfSk7Y29uc3QgRkc9e3Byb3ZpZGU6RVUsdXNlRXhpc3Rpbmc6JGUoKCgpPT5CRykpLG11bHRpOiEwfSxMRz17cHJvdmlkZTpFVSx1c2VFeGlzdGluZzokZSgoKCk9PlZHKSksbXVsdGk6ITB9O2NsYXNzIEJHe2NvbnN0cnVjdG9yKCl7dGhpcy5fcmVxdWlyZWQ9ITF9Z2V0IHJlcXVpcmVkKCl7cmV0dXJuIHRoaXMuX3JlcXVpcmVkfXNldCByZXF1aXJlZCh0KXt0aGlzLl9yZXF1aXJlZD1udWxsIT10JiYhMSE9PXQmJiJmYWxzZSIhPWAke3R9YCx0aGlzLl9vbkNoYW5nZSYmdGhpcy5fb25DaGFuZ2UoKX12YWxpZGF0ZSh0KXtyZXR1cm4gdGhpcy5yZXF1aXJlZD9IVSh0KTpudWxsfXJlZ2lzdGVyT25WYWxpZGF0b3JDaGFuZ2UodCl7dGhpcy5fb25DaGFuZ2U9dH19QkcuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEJHKX0sQkcuybVkaXI9aG8oe3R5cGU6Qkcsc2VsZWN0b3JzOltbIiIsInJlcXVpcmVkIiwiIiwiZm9ybUNvbnRyb2xOYW1lIiwiIiwzLCJ0eXBlIiwiY2hlY2tib3giXSxbIiIsInJlcXVpcmVkIiwiIiwiZm9ybUNvbnRyb2wiLCIiLDMsInR5cGUiLCJjaGVja2JveCJdLFsiIiwicmVxdWlyZWQiLCIiLCJuZ01vZGVsIiwiIiwzLCJ0eXBlIiwiY2hlY2tib3giXV0saG9zdFZhcnM6MSxob3N0QmluZGluZ3M6ZnVuY3Rpb24gdChlLG4pezImZSYmeW0oInJlcXVpcmVkIixuLnJlcXVpcmVkPyIiOm51bGwpfSxpbnB1dHM6e3JlcXVpcmVkOiJyZXF1aXJlZCJ9LGZlYXR1cmVzOltqaChbRkddKV19KSxCRy5wcm9wRGVjb3JhdG9ycz17cmVxdWlyZWQ6W3t0eXBlOlJffV19LCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoQkcsW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3RvcjoiOm5vdChbdHlwZT1jaGVja2JveF0pW3JlcXVpcmVkXVtmb3JtQ29udHJvbE5hbWVdLDpub3QoW3R5cGU9Y2hlY2tib3hdKVtyZXF1aXJlZF1bZm9ybUNvbnRyb2xdLDpub3QoW3R5cGU9Y2hlY2tib3hdKVtyZXF1aXJlZF1bbmdNb2RlbF0iLHByb3ZpZGVyczpbRkddLGhvc3Q6eyJbYXR0ci5yZXF1aXJlZF0iOidyZXF1aXJlZCA/ICIiIDogbnVsbCd9fV19XSwoZnVuY3Rpb24oKXtyZXR1cm5bXX0pLHtyZXF1aXJlZDpbe3R5cGU6Ul99XX0pO2NsYXNzIFZHIGV4dGVuZHMgQkd7dmFsaWRhdGUodCl7cmV0dXJuIHRoaXMucmVxdWlyZWQ/RlUodCk6bnVsbH19VkcuybVmYWM9KGZ1bmN0aW9uKCl7bGV0IHQ7cmV0dXJuIGZ1bmN0aW9uIGUobil7cmV0dXJuKHR8fCh0PVVhKFZHKSkpKG58fFZHKX19KSgpLFZHLsm1ZGlyPWhvKHt0eXBlOlZHLHNlbGVjdG9yczpbWyJpbnB1dCIsInR5cGUiLCJjaGVja2JveCIsInJlcXVpcmVkIiwiIiwiZm9ybUNvbnRyb2xOYW1lIiwiIl0sWyJpbnB1dCIsInR5cGUiLCJjaGVja2JveCIsInJlcXVpcmVkIiwiIiwiZm9ybUNvbnRyb2wiLCIiXSxbImlucHV0IiwidHlwZSIsImNoZWNrYm94IiwicmVxdWlyZWQiLCIiLCJuZ01vZGVsIiwiIl1dLGhvc3RWYXJzOjEsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQoZSxuKXsyJmUmJnltKCJyZXF1aXJlZCIsbi5yZXF1aXJlZD8iIjpudWxsKX0sZmVhdHVyZXM6W2poKFtMR10pLFFwXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoVkcsW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3RvcjoiaW5wdXRbdHlwZT1jaGVja2JveF1bcmVxdWlyZWRdW2Zvcm1Db250cm9sTmFtZV0saW5wdXRbdHlwZT1jaGVja2JveF1bcmVxdWlyZWRdW2Zvcm1Db250cm9sXSxpbnB1dFt0eXBlPWNoZWNrYm94XVtyZXF1aXJlZF1bbmdNb2RlbF0iLHByb3ZpZGVyczpbTEddLGhvc3Q6eyJbYXR0ci5yZXF1aXJlZF0iOidyZXF1aXJlZCA/ICIiIDogbnVsbCd9fV19XSxudWxsLG51bGwpO2NvbnN0IGpHPXtwcm92aWRlOkVVLHVzZUV4aXN0aW5nOiRlKCgoKT0+VUcpKSxtdWx0aTohMH07Y2xhc3MgVUd7Y29uc3RydWN0b3IoKXt0aGlzLl9lbmFibGVkPSExfXNldCBlbWFpbCh0KXt0aGlzLl9lbmFibGVkPSIiPT09dHx8ITA9PT10fHwidHJ1ZSI9PT10LHRoaXMuX29uQ2hhbmdlJiZ0aGlzLl9vbkNoYW5nZSgpfXZhbGlkYXRlKHQpe3JldHVybiB0aGlzLl9lbmFibGVkP0xVKHQpOm51bGx9cmVnaXN0ZXJPblZhbGlkYXRvckNoYW5nZSh0KXt0aGlzLl9vbkNoYW5nZT10fX1VRy7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8VUcpfSxVRy7JtWRpcj1obyh7dHlwZTpVRyxzZWxlY3RvcnM6W1siIiwiZW1haWwiLCIiLCJmb3JtQ29udHJvbE5hbWUiLCIiXSxbIiIsImVtYWlsIiwiIiwiZm9ybUNvbnRyb2wiLCIiXSxbIiIsImVtYWlsIiwiIiwibmdNb2RlbCIsIiJdXSxpbnB1dHM6e2VtYWlsOiJlbWFpbCJ9LGZlYXR1cmVzOltqaChbakddKV19KSxVRy5wcm9wRGVjb3JhdG9ycz17ZW1haWw6W3t0eXBlOlJffV19LCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoVUcsW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3RvcjoiW2VtYWlsXVtmb3JtQ29udHJvbE5hbWVdLFtlbWFpbF1bZm9ybUNvbnRyb2xdLFtlbWFpbF1bbmdNb2RlbF0iLHByb3ZpZGVyczpbakddfV19XSwoZnVuY3Rpb24oKXtyZXR1cm5bXX0pLHtlbWFpbDpbe3R5cGU6Ul99XX0pO2NvbnN0IFdHPXtwcm92aWRlOkVVLHVzZUV4aXN0aW5nOiRlKCgoKT0+R0cpKSxtdWx0aTohMH07Y2xhc3MgR0d7Y29uc3RydWN0b3IoKXt0aGlzLl92YWxpZGF0b3I9VVV9bmdPbkNoYW5nZXModCl7Im1pbmxlbmd0aCJpbiB0JiYodGhpcy5fY3JlYXRlVmFsaWRhdG9yKCksdGhpcy5fb25DaGFuZ2UmJnRoaXMuX29uQ2hhbmdlKCkpfXZhbGlkYXRlKHQpe3JldHVybiB0aGlzLmVuYWJsZWQoKT90aGlzLl92YWxpZGF0b3IodCk6bnVsbH1yZWdpc3Rlck9uVmFsaWRhdG9yQ2hhbmdlKHQpe3RoaXMuX29uQ2hhbmdlPXR9X2NyZWF0ZVZhbGlkYXRvcigpe3RoaXMuX3ZhbGlkYXRvcj10aGlzLmVuYWJsZWQoKT9CVShBRyh0aGlzLm1pbmxlbmd0aCkpOlVVfWVuYWJsZWQoKXtyZXR1cm4gbnVsbCE9dGhpcy5taW5sZW5ndGh9fUdHLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxHRyl9LEdHLsm1ZGlyPWhvKHt0eXBlOkdHLHNlbGVjdG9yczpbWyIiLCJtaW5sZW5ndGgiLCIiLCJmb3JtQ29udHJvbE5hbWUiLCIiXSxbIiIsIm1pbmxlbmd0aCIsIiIsImZvcm1Db250cm9sIiwiIl0sWyIiLCJtaW5sZW5ndGgiLCIiLCJuZ01vZGVsIiwiIl1dLGhvc3RWYXJzOjEsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQoZSxuKXsyJmUmJnltKCJtaW5sZW5ndGgiLG4uZW5hYmxlZCgpP24ubWlubGVuZ3RoOm51bGwpfSxpbnB1dHM6e21pbmxlbmd0aDoibWlubGVuZ3RoIn0sZmVhdHVyZXM6W2poKFtXR10pLHFvXX0pLEdHLnByb3BEZWNvcmF0b3JzPXttaW5sZW5ndGg6W3t0eXBlOlJffV19LCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoR0csW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3RvcjoiW21pbmxlbmd0aF1bZm9ybUNvbnRyb2xOYW1lXSxbbWlubGVuZ3RoXVtmb3JtQ29udHJvbF0sW21pbmxlbmd0aF1bbmdNb2RlbF0iLHByb3ZpZGVyczpbV0ddLGhvc3Q6eyJbYXR0ci5taW5sZW5ndGhdIjoiZW5hYmxlZCgpID8gbWlubGVuZ3RoIDogbnVsbCJ9fV19XSwoZnVuY3Rpb24oKXtyZXR1cm5bXX0pLHttaW5sZW5ndGg6W3t0eXBlOlJffV19KTtjb25zdCBZRz17cHJvdmlkZTpFVSx1c2VFeGlzdGluZzokZSgoKCk9PnFHKSksbXVsdGk6ITB9O2NsYXNzIHFHe2NvbnN0cnVjdG9yKCl7dGhpcy5fdmFsaWRhdG9yPVVVfW5nT25DaGFuZ2VzKHQpeyJtYXhsZW5ndGgiaW4gdCYmKHRoaXMuX2NyZWF0ZVZhbGlkYXRvcigpLHRoaXMuX29uQ2hhbmdlJiZ0aGlzLl9vbkNoYW5nZSgpKX12YWxpZGF0ZSh0KXtyZXR1cm4gdGhpcy5lbmFibGVkKCk/dGhpcy5fdmFsaWRhdG9yKHQpOm51bGx9cmVnaXN0ZXJPblZhbGlkYXRvckNoYW5nZSh0KXt0aGlzLl9vbkNoYW5nZT10fV9jcmVhdGVWYWxpZGF0b3IoKXt0aGlzLl92YWxpZGF0b3I9dGhpcy5lbmFibGVkKCk/VlUoQUcodGhpcy5tYXhsZW5ndGgpKTpVVX1lbmFibGVkKCl7cmV0dXJuIG51bGwhPXRoaXMubWF4bGVuZ3RofX1xRy7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8cUcpfSxxRy7JtWRpcj1obyh7dHlwZTpxRyxzZWxlY3RvcnM6W1siIiwibWF4bGVuZ3RoIiwiIiwiZm9ybUNvbnRyb2xOYW1lIiwiIl0sWyIiLCJtYXhsZW5ndGgiLCIiLCJmb3JtQ29udHJvbCIsIiJdLFsiIiwibWF4bGVuZ3RoIiwiIiwibmdNb2RlbCIsIiJdXSxob3N0VmFyczoxLGhvc3RCaW5kaW5nczpmdW5jdGlvbiB0KGUsbil7MiZlJiZ5bSgibWF4bGVuZ3RoIixuLmVuYWJsZWQoKT9uLm1heGxlbmd0aDpudWxsKX0saW5wdXRzOnttYXhsZW5ndGg6Im1heGxlbmd0aCJ9LGZlYXR1cmVzOltqaChbWUddKSxxb119KSxxRy5wcm9wRGVjb3JhdG9ycz17bWF4bGVuZ3RoOlt7dHlwZTpSX31dfSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKHFHLFt7dHlwZTprXyxhcmdzOlt7c2VsZWN0b3I6IlttYXhsZW5ndGhdW2Zvcm1Db250cm9sTmFtZV0sW21heGxlbmd0aF1bZm9ybUNvbnRyb2xdLFttYXhsZW5ndGhdW25nTW9kZWxdIixwcm92aWRlcnM6W1lHXSxob3N0OnsiW2F0dHIubWF4bGVuZ3RoXSI6ImVuYWJsZWQoKSA/IG1heGxlbmd0aCA6IG51bGwifX1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW119KSx7bWF4bGVuZ3RoOlt7dHlwZTpSX31dfSk7Y29uc3QgWkc9e3Byb3ZpZGU6RVUsdXNlRXhpc3Rpbmc6JGUoKCgpPT5YRykpLG11bHRpOiEwfTtjbGFzcyBYR3tjb25zdHJ1Y3Rvcigpe3RoaXMuX3ZhbGlkYXRvcj1VVX1uZ09uQ2hhbmdlcyh0KXsicGF0dGVybiJpbiB0JiYodGhpcy5fY3JlYXRlVmFsaWRhdG9yKCksdGhpcy5fb25DaGFuZ2UmJnRoaXMuX29uQ2hhbmdlKCkpfXZhbGlkYXRlKHQpe3JldHVybiB0aGlzLl92YWxpZGF0b3IodCl9cmVnaXN0ZXJPblZhbGlkYXRvckNoYW5nZSh0KXt0aGlzLl9vbkNoYW5nZT10fV9jcmVhdGVWYWxpZGF0b3IoKXt0aGlzLl92YWxpZGF0b3I9alUodGhpcy5wYXR0ZXJuKX19WEcuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFhHKX0sWEcuybVkaXI9aG8oe3R5cGU6WEcsc2VsZWN0b3JzOltbIiIsInBhdHRlcm4iLCIiLCJmb3JtQ29udHJvbE5hbWUiLCIiXSxbIiIsInBhdHRlcm4iLCIiLCJmb3JtQ29udHJvbCIsIiJdLFsiIiwicGF0dGVybiIsIiIsIm5nTW9kZWwiLCIiXV0saG9zdFZhcnM6MSxob3N0QmluZGluZ3M6ZnVuY3Rpb24gdChlLG4pezImZSYmeW0oInBhdHRlcm4iLG4ucGF0dGVybj9uLnBhdHRlcm46bnVsbCl9LGlucHV0czp7cGF0dGVybjoicGF0dGVybiJ9LGZlYXR1cmVzOltqaChbWkddKSxxb119KSxYRy5wcm9wRGVjb3JhdG9ycz17cGF0dGVybjpbe3R5cGU6Ul99XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihYRyxbe3R5cGU6a18sYXJnczpbe3NlbGVjdG9yOiJbcGF0dGVybl1bZm9ybUNvbnRyb2xOYW1lXSxbcGF0dGVybl1bZm9ybUNvbnRyb2xdLFtwYXR0ZXJuXVtuZ01vZGVsXSIscHJvdmlkZXJzOltaR10saG9zdDp7IlthdHRyLnBhdHRlcm5dIjoicGF0dGVybiA/IHBhdHRlcm4gOiBudWxsIn19XX1dLChmdW5jdGlvbigpe3JldHVybltdfSkse3BhdHRlcm46W3t0eXBlOlJffV19KTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNvbnN0IEtHPVtvRyxrRyxFRyxTVSxhRyxwRyxQVSx3RyxSRyxjRyxtVyxmVyxCRyxHRyxxRyxYRyxWRyxVRyxIRyx6R10sSkc9W25HLCRXLFhXXSxRRz1bdUcsaEcseEcseUcsQ0ddO2NsYXNzICRHe30kRy7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8JEcpfSwkRy7JtW1vZD1mbyh7dHlwZTokR30pLCRHLsm1aW5qPURuKHtpbXBvcnRzOltbc0ddXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoJEcsW3t0eXBlOkxfLGFyZ3M6W3tkZWNsYXJhdGlvbnM6S0csaW1wb3J0czpbc0ddLGV4cG9ydHM6S0d9XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZ1bygkRyx7ZGVjbGFyYXRpb25zOltvRyxrRyxFRyxTVSxhRyxwRyxQVSx3RyxSRyxjRyxtVyxmVyxCRyxHRyxxRyxYRyxWRyxVRyxIRyx6R10saW1wb3J0czpbc0ddLGV4cG9ydHM6W29HLGtHLEVHLFNVLGFHLHBHLFBVLHdHLFJHLGNHLG1XLGZXLEJHLEdHLHFHLFhHLFZHLFVHLEhHLHpHXX0pOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3MgdFl7fXRZLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHx0WSl9LHRZLsm1bW9kPWZvKHt0eXBlOnRZfSksdFkuybVpbmo9RG4oe2ltcG9ydHM6WyRHXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIodFksW3t0eXBlOkxfLGFyZ3M6W3tkZWNsYXJhdGlvbnM6SkcsZXhwb3J0czpbJEcsSkddfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmdW8odFkse2RlY2xhcmF0aW9uczpbbkcsJFcsWFddLGV4cG9ydHM6WyRHLG5HLCRXLFhXXX0pO2NsYXNzIGVZe3N0YXRpYyB3aXRoQ29uZmlnKHQpe3JldHVybntuZ01vZHVsZTplWSxwcm92aWRlcnM6W3twcm92aWRlOm1HLHVzZVZhbHVlOnQud2Fybk9uTmdNb2RlbFdpdGhGb3JtQ29udHJvbH1dfX19ZVkuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGVZKX0sZVkuybVtb2Q9Zm8oe3R5cGU6ZVl9KSxlWS7JtWluaj1Ebih7aW1wb3J0czpbJEddfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihlWSxbe3R5cGU6TF8sYXJnczpbe2RlY2xhcmF0aW9uczpbUUddLGV4cG9ydHM6WyRHLFFHXX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnVvKGVZLHtkZWNsYXJhdGlvbnM6W3VHLGhHLHhHLHlHLENHXSxleHBvcnRzOlskRyx1RyxoRyx4Ryx5RyxDR119KTtjbGFzcyBuWXtncm91cCh0LGU9bnVsbCl7Y29uc3Qgbj10aGlzLl9yZWR1Y2VDb250cm9scyh0KTtsZXQgbyxpPW51bGwsYT1udWxsO3JldHVybiBudWxsIT1lJiYoISgKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmZ1bmN0aW9uIHIodCl7cmV0dXJuIHZvaWQgMCE9PXQuYXN5bmNWYWxpZGF0b3JzfHx2b2lkIDAhPT10LnZhbGlkYXRvcnN8fHZvaWQgMCE9PXQudXBkYXRlT259KShlKT8oaT1udWxsIT1lLnZhbGlkYXRvcj9lLnZhbGlkYXRvcjpudWxsLGE9bnVsbCE9ZS5hc3luY1ZhbGlkYXRvcj9lLmFzeW5jVmFsaWRhdG9yOm51bGwpOihpPW51bGwhPWUudmFsaWRhdG9ycz9lLnZhbGlkYXRvcnM6bnVsbCxhPW51bGwhPWUuYXN5bmNWYWxpZGF0b3JzP2UuYXN5bmNWYWxpZGF0b3JzOm51bGwsbz1udWxsIT1lLnVwZGF0ZU9uP2UudXBkYXRlT246dm9pZCAwKSksbmV3IEdXKG4se2FzeW5jVmFsaWRhdG9yczphLHVwZGF0ZU9uOm8sdmFsaWRhdG9yczppfSl9Y29udHJvbCh0LGUsbil7cmV0dXJuIG5ldyBXVyh0LGUsbil9YXJyYXkodCxlLG4pe2NvbnN0IG89dC5tYXAoKHQ9PnRoaXMuX2NyZWF0ZUNvbnRyb2wodCkpKTtyZXR1cm4gbmV3IFlXKG8sZSxuKX1fcmVkdWNlQ29udHJvbHModCl7Y29uc3QgZT17fTtyZXR1cm4gT2JqZWN0LmtleXModCkuZm9yRWFjaCgobj0+e2Vbbl09dGhpcy5fY3JlYXRlQ29udHJvbCh0W25dKX0pKSxlfV9jcmVhdGVDb250cm9sKHQpe2lmKHQgaW5zdGFuY2VvZiBXV3x8dCBpbnN0YW5jZW9mIEdXfHx0IGluc3RhbmNlb2YgWVcpcmV0dXJuIHQ7aWYoQXJyYXkuaXNBcnJheSh0KSl7cmV0dXJuIHRoaXMuY29udHJvbCh0WzBdLHQubGVuZ3RoPjE/dFsxXTpudWxsLHQubGVuZ3RoPjI/dFsyXTpudWxsKX1yZXR1cm4gdGhpcy5jb250cm9sKHQpfX1uWS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8blkpfSxuWS7JtXByb3Y9U24oe2ZhY3Rvcnk6ZnVuY3Rpb24gdCgpe3JldHVybiBuZXcgbll9LHRva2VuOm5ZLHByb3ZpZGVkSW46ZVl9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKG5ZLFt7dHlwZTpVbSxhcmdzOlt7cHJvdmlkZWRJbjplWX1dfV0sbnVsbCxudWxsKSwKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCm5ldyBvYigiMTIuMi4xIik7Y29uc3Qgb1k9WyJ0cmlnZ2VyIl0saVk9WyJwYW5lbCJdO2Z1bmN0aW9uIGFZKHQsZSl7aWYoMSZ0JiYoQ2YoMCwic3BhbiIsOCksUHUoMSksTWYoKSksMiZ0KXtjb25zdCB0PXpmKCk7RGMoMSksd3UodC5wbGFjZWhvbGRlcil9fWZ1bmN0aW9uIHJZKHQsZSl7aWYoMSZ0JiYoQ2YoMCwic3BhbiIsMTIpLFB1KDEpLE1mKCkpLDImdCl7Y29uc3QgdD16ZigyKTtEYygxKSx3dSh0LnRyaWdnZXJWYWx1ZSl9fWZ1bmN0aW9uIHNZKHQsZSl7MSZ0JiZGZigwLDAsWyIqbmdTd2l0Y2hDYXNlIiwidHJ1ZSJdKX1mdW5jdGlvbiBsWSh0LGUpe2lmKDEmdCYmKENmKDAsInNwYW4iLDkpLEhtKDEsclksMiwxLCJzcGFuIiwxMCksSG0oMixzWSwxLDAsIm5nLWNvbnRlbnQiLDExKSxNZigpKSwyJnQpe2JmKCJuZ1N3aXRjaCIsISF6ZigpLmN1c3RvbVRyaWdnZXIpLERjKDIpLGJmKCJuZ1N3aXRjaENhc2UiLCEwKX19ZnVuY3Rpb24gY1kodCxlKXtpZigxJnQpe2NvbnN0IHQ9d2YoKTtDZigwLCJkaXYiLDEzKSxDZigxLCJkaXYiLDE0LDE1KSxSZigiQHRyYW5zZm9ybVBhbmVsLmRvbmUiLChmdW5jdGlvbiBlKG4pe1BpKHQpO3JldHVybiB6ZigpLl9wYW5lbERvbmVBbmltYXRpbmdTdHJlYW0ubmV4dChuLnRvU3RhdGUpfSkpKCJrZXlkb3duIiwoZnVuY3Rpb24gZShuKXtQaSh0KTtyZXR1cm4gemYoKS5faGFuZGxlS2V5ZG93bihuKX0pKSxGZigzLDEpLE1mKCksTWYoKX1pZigyJnQpe2NvbnN0IHQ9emYoKTtiZigiQHRyYW5zZm9ybVBhbmVsV3JhcCIsdm9pZCAwKSxEYygxKSxJdSgibWF0LXNlbGVjdC1wYW5lbCAiLHQuX2dldFBhbmVsVGhlbWUoKSwiIiksbHUoInRyYW5zZm9ybS1vcmlnaW4iLHQuX3RyYW5zZm9ybU9yaWdpbikoImZvbnQtc2l6ZSIsdC5fdHJpZ2dlckZvbnRTaXplLCJweCIpLGJmKCJuZ0NsYXNzIix0LnBhbmVsQ2xhc3MpKCJAdHJhbnNmb3JtUGFuZWwiLHQubXVsdGlwbGU/InNob3dpbmctbXVsdGlwbGUiOiJzaG93aW5nIikseW0oImlkIix0LmlkKyItcGFuZWwiKSgiYXJpYS1tdWx0aXNlbGVjdGFibGUiLHQubXVsdGlwbGUpKCJhcmlhLWxhYmVsIix0LmFyaWFMYWJlbHx8bnVsbCkoImFyaWEtbGFiZWxsZWRieSIsdC5fZ2V0UGFuZWxBcmlhTGFiZWxsZWRieSgpKX19Y29uc3QgZFk9W1tbIm1hdC1zZWxlY3QtdHJpZ2dlciJdXSwiKiJdLHBZPXt0cmFuc2Zvcm1QYW5lbFdyYXA6eE8oInRyYW5zZm9ybVBhbmVsV3JhcCIsW0RPKCIqID0+IHZvaWQiLEVPKCJAdHJhbnNmb3JtUGFuZWwiLFtSTygpXSx7b3B0aW9uYWw6ITB9KSldKSx0cmFuc2Zvcm1QYW5lbDp4TygidHJhbnNmb3JtUGFuZWwiLFtrTygidm9pZCIsd08oe3RyYW5zZm9ybToic2NhbGVZKDAuOCkiLG1pbldpZHRoOiIxMDAlIixvcGFjaXR5OjB9KSksa08oInNob3dpbmciLHdPKHtvcGFjaXR5OjEsbWluV2lkdGg6ImNhbGMoMTAwJSArIDMycHgpIix0cmFuc2Zvcm06InNjYWxlWSgxKSJ9KSksa08oInNob3dpbmctbXVsdGlwbGUiLHdPKHtvcGFjaXR5OjEsbWluV2lkdGg6ImNhbGMoMTAwJSArIDY0cHgpIix0cmFuc2Zvcm06InNjYWxlWSgxKSJ9KSksRE8oInZvaWQgPT4gKiIsT08oIjEyMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpIikpLERPKCIqID0+IHZvaWQiLE9PKCIxMDBtcyAyNW1zIGxpbmVhciIsd08oe29wYWNpdHk6MH0pKSldKX07Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpsZXQgbVk9MDtjb25zdCBmWT0yNTYsdVk9MTYsZ1k9bmV3IGVyKCJtYXQtc2VsZWN0LXNjcm9sbC1zdHJhdGVneSIpO2NvbnN0IGhZPW5ldyBlcigiTUFUX1NFTEVDVF9DT05GSUciKSxiWT17cHJvdmlkZTpnWSxkZXBzOltLQl0sdXNlRmFjdG9yeTpmdW5jdGlvbiB5WSh0KXtyZXR1cm4oKT0+dC5zY3JvbGxTdHJhdGVnaWVzLnJlcG9zaXRpb24oKX19O2NsYXNzIF9Ze2NvbnN0cnVjdG9yKHQsZSl7dGhpcy5zb3VyY2U9dCx0aGlzLnZhbHVlPWV9fWNvbnN0IENZPUhGKEZGKHpGKExGKGNsYXNze2NvbnN0cnVjdG9yKHQsZSxuLG8saSl7dGhpcy5fZWxlbWVudFJlZj10LHRoaXMuX2RlZmF1bHRFcnJvclN0YXRlTWF0Y2hlcj1lLHRoaXMuX3BhcmVudEZvcm09bix0aGlzLl9wYXJlbnRGb3JtR3JvdXA9byx0aGlzLm5nQ29udHJvbD1pfX0pKSkpLE1ZPW5ldyBlcigiTWF0U2VsZWN0VHJpZ2dlciIpO2NsYXNzIHZZe312WS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8dlkpfSx2WS7JtWRpcj1obyh7dHlwZTp2WSxzZWxlY3RvcnM6W1sibWF0LXNlbGVjdC10cmlnZ2VyIl1dLGZlYXR1cmVzOltqaChbe3Byb3ZpZGU6TVksdXNlRXhpc3Rpbmc6dll9XSldfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYih2WSxbe3R5cGU6a18sYXJnczpbe3NlbGVjdG9yOiJtYXQtc2VsZWN0LXRyaWdnZXIiLHByb3ZpZGVyczpbe3Byb3ZpZGU6TVksdXNlRXhpc3Rpbmc6dll9XX1dfV0sbnVsbCxudWxsKTtjbGFzcyB4WSBleHRlbmRzIENZe2NvbnN0cnVjdG9yKHQsZSxuLG8saSxhLHIscyxsLGMsZCxwLG0sZil7dmFyIHUsZyxoO3N1cGVyKGksbyxyLHMsYyksdGhpcy5fdmlld3BvcnRSdWxlcj10LHRoaXMuX2NoYW5nZURldGVjdG9yUmVmPWUsdGhpcy5fbmdab25lPW4sdGhpcy5fZGlyPWEsdGhpcy5fcGFyZW50Rm9ybUZpZWxkPWwsdGhpcy5fbGl2ZUFubm91bmNlcj1tLHRoaXMuX2RlZmF1bHRPcHRpb25zPWYsdGhpcy5fcGFuZWxPcGVuPSExLHRoaXMuX2NvbXBhcmVXaXRoPSh0LGUpPT50PT09ZSx0aGlzLl91aWQ9Im1hdC1zZWxlY3QtIittWSsrLHRoaXMuX3RyaWdnZXJBcmlhTGFiZWxsZWRCeT1udWxsLHRoaXMuX2Rlc3Ryb3k9bmV3IEIsdGhpcy5fb25DaGFuZ2U9KCk9Pnt9LHRoaXMuX29uVG91Y2hlZD0oKT0+e30sdGhpcy5fdmFsdWVJZD0ibWF0LXNlbGVjdC12YWx1ZS0iK21ZKyssdGhpcy5fcGFuZWxEb25lQW5pbWF0aW5nU3RyZWFtPW5ldyBCLHRoaXMuX292ZXJsYXlQYW5lbENsYXNzPShudWxsPT09KHU9dGhpcy5fZGVmYXVsdE9wdGlvbnMpfHx2b2lkIDA9PT11P3ZvaWQgMDp1Lm92ZXJsYXlQYW5lbENsYXNzKXx8IiIsdGhpcy5fZm9jdXNlZD0hMSx0aGlzLmNvbnRyb2xUeXBlPSJtYXQtc2VsZWN0Iix0aGlzLl9yZXF1aXJlZD0hMSx0aGlzLl9tdWx0aXBsZT0hMSx0aGlzLl9kaXNhYmxlT3B0aW9uQ2VudGVyaW5nPW51bGwhPT0oaD1udWxsPT09KGc9dGhpcy5fZGVmYXVsdE9wdGlvbnMpfHx2b2lkIDA9PT1nP3ZvaWQgMDpnLmRpc2FibGVPcHRpb25DZW50ZXJpbmcpJiZ2b2lkIDAhPT1oJiZoLHRoaXMuYXJpYUxhYmVsPSIiLHRoaXMub3B0aW9uU2VsZWN0aW9uQ2hhbmdlcz1vZSgoKCk9Pntjb25zdCB0PXRoaXMub3B0aW9ucztyZXR1cm4gdD90LmNoYW5nZXMucGlwZShCZSh0KSxWZSgoKCk9PnBlKC4uLnQubWFwKCh0PT50Lm9uU2VsZWN0aW9uQ2hhbmdlKSkpKSkpOnRoaXMuX25nWm9uZS5vblN0YWJsZS5waXBlKHZlKDEpLFZlKCgoKT0+dGhpcy5vcHRpb25TZWxlY3Rpb25DaGFuZ2VzKSkpfSkpLHRoaXMub3BlbmVkQ2hhbmdlPW5ldyBTeSx0aGlzLl9vcGVuZWRTdHJlYW09dGhpcy5vcGVuZWRDaGFuZ2UucGlwZSh1ZSgodD0+dCkpLFZ0KCgoKT0+e30pKSksdGhpcy5fY2xvc2VkU3RyZWFtPXRoaXMub3BlbmVkQ2hhbmdlLnBpcGUodWUoKHQ9PiF0KSksVnQoKCgpPT57fSkpKSx0aGlzLnNlbGVjdGlvbkNoYW5nZT1uZXcgU3ksdGhpcy52YWx1ZUNoYW5nZT1uZXcgU3ksdGhpcy5uZ0NvbnRyb2wmJih0aGlzLm5nQ29udHJvbC52YWx1ZUFjY2Vzc29yPXRoaXMpLG51bGwhPShudWxsPT1mP3ZvaWQgMDpmLnR5cGVhaGVhZERlYm91bmNlSW50ZXJ2YWwpJiYodGhpcy5fdHlwZWFoZWFkRGVib3VuY2VJbnRlcnZhbD1mLnR5cGVhaGVhZERlYm91bmNlSW50ZXJ2YWwpLHRoaXMuX3Njcm9sbFN0cmF0ZWd5RmFjdG9yeT1wLHRoaXMuX3Njcm9sbFN0cmF0ZWd5PXRoaXMuX3Njcm9sbFN0cmF0ZWd5RmFjdG9yeSgpLHRoaXMudGFiSW5kZXg9cGFyc2VJbnQoZCl8fDAsdGhpcy5pZD10aGlzLmlkfWdldCBmb2N1c2VkKCl7cmV0dXJuIHRoaXMuX2ZvY3VzZWR8fHRoaXMuX3BhbmVsT3Blbn1nZXQgcGxhY2Vob2xkZXIoKXtyZXR1cm4gdGhpcy5fcGxhY2Vob2xkZXJ9c2V0IHBsYWNlaG9sZGVyKHQpe3RoaXMuX3BsYWNlaG9sZGVyPXQsdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpfWdldCByZXF1aXJlZCgpe3JldHVybiB0aGlzLl9yZXF1aXJlZH1zZXQgcmVxdWlyZWQodCl7dGhpcy5fcmVxdWlyZWQ9ZUgodCksdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpfWdldCBtdWx0aXBsZSgpe3JldHVybiB0aGlzLl9tdWx0aXBsZX1zZXQgbXVsdGlwbGUodCl7aWYodGhpcy5fc2VsZWN0aW9uTW9kZWwmJigidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSkKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCnRocm93KGZ1bmN0aW9uIGUoKXtyZXR1cm4gRXJyb3IoIkNhbm5vdCBjaGFuZ2UgYG11bHRpcGxlYCBtb2RlIG9mIHNlbGVjdCBhZnRlciBpbml0aWFsaXphdGlvbi4iKX0pKCk7dGhpcy5fbXVsdGlwbGU9ZUgodCl9Z2V0IGRpc2FibGVPcHRpb25DZW50ZXJpbmcoKXtyZXR1cm4gdGhpcy5fZGlzYWJsZU9wdGlvbkNlbnRlcmluZ31zZXQgZGlzYWJsZU9wdGlvbkNlbnRlcmluZyh0KXt0aGlzLl9kaXNhYmxlT3B0aW9uQ2VudGVyaW5nPWVIKHQpfWdldCBjb21wYXJlV2l0aCgpe3JldHVybiB0aGlzLl9jb21wYXJlV2l0aH1zZXQgY29tcGFyZVdpdGgodCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQmJigidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSl0aHJvdyhmdW5jdGlvbiBlKCl7cmV0dXJuIEVycm9yKCJgY29tcGFyZVdpdGhgIG11c3QgYmUgYSBmdW5jdGlvbi4iKX0pKCk7dGhpcy5fY29tcGFyZVdpdGg9dCx0aGlzLl9zZWxlY3Rpb25Nb2RlbCYmdGhpcy5faW5pdGlhbGl6ZVNlbGVjdGlvbigpfWdldCB2YWx1ZSgpe3JldHVybiB0aGlzLl92YWx1ZX1zZXQgdmFsdWUodCl7KHQhPT10aGlzLl92YWx1ZXx8dGhpcy5fbXVsdGlwbGUmJkFycmF5LmlzQXJyYXkodCkpJiYodGhpcy5vcHRpb25zJiZ0aGlzLl9zZXRTZWxlY3Rpb25CeVZhbHVlKHQpLHRoaXMuX3ZhbHVlPXQpfWdldCB0eXBlYWhlYWREZWJvdW5jZUludGVydmFsKCl7cmV0dXJuIHRoaXMuX3R5cGVhaGVhZERlYm91bmNlSW50ZXJ2YWx9c2V0IHR5cGVhaGVhZERlYm91bmNlSW50ZXJ2YWwodCl7dGhpcy5fdHlwZWFoZWFkRGVib3VuY2VJbnRlcnZhbD1uSCh0KX1nZXQgaWQoKXtyZXR1cm4gdGhpcy5faWR9c2V0IGlkKHQpe3RoaXMuX2lkPXR8fHRoaXMuX3VpZCx0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCl9bmdPbkluaXQoKXt0aGlzLl9zZWxlY3Rpb25Nb2RlbD1uZXcgakwodGhpcy5tdWx0aXBsZSksdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpLHRoaXMuX3BhbmVsRG9uZUFuaW1hdGluZ1N0cmVhbS5waXBlKHdlKCksamUodGhpcy5fZGVzdHJveSkpLnN1YnNjcmliZSgoKCk9PnRoaXMuX3BhbmVsRG9uZUFuaW1hdGluZyh0aGlzLnBhbmVsT3BlbikpKX1uZ0FmdGVyQ29udGVudEluaXQoKXt0aGlzLl9pbml0S2V5TWFuYWdlcigpLHRoaXMuX3NlbGVjdGlvbk1vZGVsLmNoYW5nZWQucGlwZShqZSh0aGlzLl9kZXN0cm95KSkuc3Vic2NyaWJlKCh0PT57dC5hZGRlZC5mb3JFYWNoKCh0PT50LnNlbGVjdCgpKSksdC5yZW1vdmVkLmZvckVhY2goKHQ9PnQuZGVzZWxlY3QoKSkpfSkpLHRoaXMub3B0aW9ucy5jaGFuZ2VzLnBpcGUoQmUobnVsbCksamUodGhpcy5fZGVzdHJveSkpLnN1YnNjcmliZSgoKCk9Pnt0aGlzLl9yZXNldE9wdGlvbnMoKSx0aGlzLl9pbml0aWFsaXplU2VsZWN0aW9uKCl9KSl9bmdEb0NoZWNrKCl7Y29uc3QgdD10aGlzLl9nZXRUcmlnZ2VyQXJpYUxhYmVsbGVkYnkoKTtpZih0IT09dGhpcy5fdHJpZ2dlckFyaWFMYWJlbGxlZEJ5KXtjb25zdCBlPXRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudDt0aGlzLl90cmlnZ2VyQXJpYUxhYmVsbGVkQnk9dCx0P2Uuc2V0QXR0cmlidXRlKCJhcmlhLWxhYmVsbGVkYnkiLHQpOmUucmVtb3ZlQXR0cmlidXRlKCJhcmlhLWxhYmVsbGVkYnkiKX10aGlzLm5nQ29udHJvbCYmdGhpcy51cGRhdGVFcnJvclN0YXRlKCl9bmdPbkNoYW5nZXModCl7dC5kaXNhYmxlZCYmdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpLHQudHlwZWFoZWFkRGVib3VuY2VJbnRlcnZhbCYmdGhpcy5fa2V5TWFuYWdlciYmdGhpcy5fa2V5TWFuYWdlci53aXRoVHlwZUFoZWFkKHRoaXMuX3R5cGVhaGVhZERlYm91bmNlSW50ZXJ2YWwpfW5nT25EZXN0cm95KCl7dGhpcy5fZGVzdHJveS5uZXh0KCksdGhpcy5fZGVzdHJveS5jb21wbGV0ZSgpLHRoaXMuc3RhdGVDaGFuZ2VzLmNvbXBsZXRlKCl9dG9nZ2xlKCl7dGhpcy5wYW5lbE9wZW4/dGhpcy5jbG9zZSgpOnRoaXMub3BlbigpfW9wZW4oKXt0aGlzLl9jYW5PcGVuKCkmJih0aGlzLl9wYW5lbE9wZW49ITAsdGhpcy5fa2V5TWFuYWdlci53aXRoSG9yaXpvbnRhbE9yaWVudGF0aW9uKG51bGwpLHRoaXMuX2hpZ2hsaWdodENvcnJlY3RPcHRpb24oKSx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKSl9Y2xvc2UoKXt0aGlzLl9wYW5lbE9wZW4mJih0aGlzLl9wYW5lbE9wZW49ITEsdGhpcy5fa2V5TWFuYWdlci53aXRoSG9yaXpvbnRhbE9yaWVudGF0aW9uKHRoaXMuX2lzUnRsKCk/InJ0bCI6Imx0ciIpLHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpLHRoaXMuX29uVG91Y2hlZCgpKX13cml0ZVZhbHVlKHQpe3RoaXMudmFsdWU9dH1yZWdpc3Rlck9uQ2hhbmdlKHQpe3RoaXMuX29uQ2hhbmdlPXR9cmVnaXN0ZXJPblRvdWNoZWQodCl7dGhpcy5fb25Ub3VjaGVkPXR9c2V0RGlzYWJsZWRTdGF0ZSh0KXt0aGlzLmRpc2FibGVkPXQsdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCksdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpfWdldCBwYW5lbE9wZW4oKXtyZXR1cm4gdGhpcy5fcGFuZWxPcGVufWdldCBzZWxlY3RlZCgpe3JldHVybiB0aGlzLm11bHRpcGxlP3RoaXMuX3NlbGVjdGlvbk1vZGVsLnNlbGVjdGVkOnRoaXMuX3NlbGVjdGlvbk1vZGVsLnNlbGVjdGVkWzBdfWdldCB0cmlnZ2VyVmFsdWUoKXtpZih0aGlzLmVtcHR5KXJldHVybiIiO2lmKHRoaXMuX211bHRpcGxlKXtjb25zdCB0PXRoaXMuX3NlbGVjdGlvbk1vZGVsLnNlbGVjdGVkLm1hcCgodD0+dC52aWV3VmFsdWUpKTtyZXR1cm4gdGhpcy5faXNSdGwoKSYmdC5yZXZlcnNlKCksdC5qb2luKCIsICIpfXJldHVybiB0aGlzLl9zZWxlY3Rpb25Nb2RlbC5zZWxlY3RlZFswXS52aWV3VmFsdWV9X2lzUnRsKCl7cmV0dXJuISF0aGlzLl9kaXImJiJydGwiPT09dGhpcy5fZGlyLnZhbHVlfV9oYW5kbGVLZXlkb3duKHQpe3RoaXMuZGlzYWJsZWR8fCh0aGlzLnBhbmVsT3Blbj90aGlzLl9oYW5kbGVPcGVuS2V5ZG93bih0KTp0aGlzLl9oYW5kbGVDbG9zZWRLZXlkb3duKHQpKX1faGFuZGxlQ2xvc2VkS2V5ZG93bih0KXtjb25zdCBlPXQua2V5Q29kZSxuPWU9PT0kSXx8ZT09PVFJfHwzNz09PWV8fDM5PT09ZSxvPWU9PT1YSXx8ZT09PUpJLGk9dGhpcy5fa2V5TWFuYWdlcjtpZighaS5pc1R5cGluZygpJiZvJiYhdEgodCl8fCh0aGlzLm11bHRpcGxlfHx0LmFsdEtleSkmJm4pdC5wcmV2ZW50RGVmYXVsdCgpLHRoaXMub3BlbigpO2Vsc2UgaWYoIXRoaXMubXVsdGlwbGUpe2NvbnN0IGU9dGhpcy5zZWxlY3RlZDtpLm9uS2V5ZG93bih0KTtjb25zdCBuPXRoaXMuc2VsZWN0ZWQ7biYmZSE9PW4mJnRoaXMuX2xpdmVBbm5vdW5jZXIuYW5ub3VuY2Uobi52aWV3VmFsdWUsMWU0KX19X2hhbmRsZU9wZW5LZXlkb3duKHQpe2NvbnN0IGU9dGhpcy5fa2V5TWFuYWdlcixuPXQua2V5Q29kZSxvPW49PT0kSXx8bj09PVFJLGk9ZS5pc1R5cGluZygpO2lmKG8mJnQuYWx0S2V5KXQucHJldmVudERlZmF1bHQoKSx0aGlzLmNsb3NlKCk7ZWxzZSBpZihpfHxuIT09WEkmJm4hPT1KSXx8IWUuYWN0aXZlSXRlbXx8dEgodCkpaWYoIWkmJnRoaXMuX211bHRpcGxlJiY2NT09PW4mJnQuY3RybEtleSl7dC5wcmV2ZW50RGVmYXVsdCgpO2NvbnN0IGU9dGhpcy5vcHRpb25zLnNvbWUoKHQ9PiF0LmRpc2FibGVkJiYhdC5zZWxlY3RlZCkpO3RoaXMub3B0aW9ucy5mb3JFYWNoKCh0PT57dC5kaXNhYmxlZHx8KGU/dC5zZWxlY3QoKTp0LmRlc2VsZWN0KCkpfSkpfWVsc2V7Y29uc3Qgbj1lLmFjdGl2ZUl0ZW1JbmRleDtlLm9uS2V5ZG93bih0KSx0aGlzLl9tdWx0aXBsZSYmbyYmdC5zaGlmdEtleSYmZS5hY3RpdmVJdGVtJiZlLmFjdGl2ZUl0ZW1JbmRleCE9PW4mJmUuYWN0aXZlSXRlbS5fc2VsZWN0VmlhSW50ZXJhY3Rpb24oKX1lbHNlIHQucHJldmVudERlZmF1bHQoKSxlLmFjdGl2ZUl0ZW0uX3NlbGVjdFZpYUludGVyYWN0aW9uKCl9X29uRm9jdXMoKXt0aGlzLmRpc2FibGVkfHwodGhpcy5fZm9jdXNlZD0hMCx0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCkpfV9vbkJsdXIoKXt0aGlzLl9mb2N1c2VkPSExLHRoaXMuZGlzYWJsZWR8fHRoaXMucGFuZWxPcGVufHwodGhpcy5fb25Ub3VjaGVkKCksdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCksdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpKX1fb25BdHRhY2hlZCgpe3RoaXMuX292ZXJsYXlEaXIucG9zaXRpb25DaGFuZ2UucGlwZSh2ZSgxKSkuc3Vic2NyaWJlKCgoKT0+e3RoaXMuX2NoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKSx0aGlzLl9wb3NpdGlvbmluZ1NldHRsZWQoKX0pKX1fZ2V0UGFuZWxUaGVtZSgpe3JldHVybiB0aGlzLl9wYXJlbnRGb3JtRmllbGQ/YG1hdC0ke3RoaXMuX3BhcmVudEZvcm1GaWVsZC5jb2xvcn1gOiIifWdldCBlbXB0eSgpe3JldHVybiF0aGlzLl9zZWxlY3Rpb25Nb2RlbHx8dGhpcy5fc2VsZWN0aW9uTW9kZWwuaXNFbXB0eSgpfV9pbml0aWFsaXplU2VsZWN0aW9uKCl7UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKCk9Pnt0aGlzLl9zZXRTZWxlY3Rpb25CeVZhbHVlKHRoaXMubmdDb250cm9sP3RoaXMubmdDb250cm9sLnZhbHVlOnRoaXMuX3ZhbHVlKSx0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCl9KSl9X3NldFNlbGVjdGlvbkJ5VmFsdWUodCl7aWYodGhpcy5fc2VsZWN0aW9uTW9kZWwuc2VsZWN0ZWQuZm9yRWFjaCgodD0+dC5zZXRJbmFjdGl2ZVN0eWxlcygpKSksdGhpcy5fc2VsZWN0aW9uTW9kZWwuY2xlYXIoKSx0aGlzLm11bHRpcGxlJiZ0KXtpZighQXJyYXkuaXNBcnJheSh0KSYmKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpKXRocm93KGZ1bmN0aW9uIGUoKXtyZXR1cm4gRXJyb3IoIlZhbHVlIG11c3QgYmUgYW4gYXJyYXkgaW4gbXVsdGlwbGUtc2VsZWN0aW9uIG1vZGUuIil9KSgpO3QuZm9yRWFjaCgodD0+dGhpcy5fc2VsZWN0VmFsdWUodCkpKSx0aGlzLl9zb3J0VmFsdWVzKCl9ZWxzZXtjb25zdCBlPXRoaXMuX3NlbGVjdFZhbHVlKHQpO2U/dGhpcy5fa2V5TWFuYWdlci51cGRhdGVBY3RpdmVJdGVtKGUpOnRoaXMucGFuZWxPcGVufHx0aGlzLl9rZXlNYW5hZ2VyLnVwZGF0ZUFjdGl2ZUl0ZW0oLTEpfXRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpfV9zZWxlY3RWYWx1ZSh0KXtjb25zdCBlPXRoaXMub3B0aW9ucy5maW5kKChlPT57aWYodGhpcy5fc2VsZWN0aW9uTW9kZWwuaXNTZWxlY3RlZChlKSlyZXR1cm4hMTt0cnl7cmV0dXJuIG51bGwhPWUudmFsdWUmJnRoaXMuX2NvbXBhcmVXaXRoKGUudmFsdWUsdCl9Y2F0Y2godCl7cmV0dXJuKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZjb25zb2xlLndhcm4odCksITF9fSkpO3JldHVybiBlJiZ0aGlzLl9zZWxlY3Rpb25Nb2RlbC5zZWxlY3QoZSksZX1faW5pdEtleU1hbmFnZXIoKXt0aGlzLl9rZXlNYW5hZ2VyPW5ldyBGSCh0aGlzLm9wdGlvbnMpLndpdGhUeXBlQWhlYWQodGhpcy5fdHlwZWFoZWFkRGVib3VuY2VJbnRlcnZhbCkud2l0aFZlcnRpY2FsT3JpZW50YXRpb24oKS53aXRoSG9yaXpvbnRhbE9yaWVudGF0aW9uKHRoaXMuX2lzUnRsKCk/InJ0bCI6Imx0ciIpLndpdGhIb21lQW5kRW5kKCkud2l0aEFsbG93ZWRNb2RpZmllcktleXMoWyJzaGlmdEtleSJdKSx0aGlzLl9rZXlNYW5hZ2VyLnRhYk91dC5waXBlKGplKHRoaXMuX2Rlc3Ryb3kpKS5zdWJzY3JpYmUoKCgpPT57dGhpcy5wYW5lbE9wZW4mJighdGhpcy5tdWx0aXBsZSYmdGhpcy5fa2V5TWFuYWdlci5hY3RpdmVJdGVtJiZ0aGlzLl9rZXlNYW5hZ2VyLmFjdGl2ZUl0ZW0uX3NlbGVjdFZpYUludGVyYWN0aW9uKCksdGhpcy5mb2N1cygpLHRoaXMuY2xvc2UoKSl9KSksdGhpcy5fa2V5TWFuYWdlci5jaGFuZ2UucGlwZShqZSh0aGlzLl9kZXN0cm95KSkuc3Vic2NyaWJlKCgoKT0+e3RoaXMuX3BhbmVsT3BlbiYmdGhpcy5wYW5lbD90aGlzLl9zY3JvbGxPcHRpb25JbnRvVmlldyh0aGlzLl9rZXlNYW5hZ2VyLmFjdGl2ZUl0ZW1JbmRleHx8MCk6dGhpcy5fcGFuZWxPcGVufHx0aGlzLm11bHRpcGxlfHwhdGhpcy5fa2V5TWFuYWdlci5hY3RpdmVJdGVtfHx0aGlzLl9rZXlNYW5hZ2VyLmFjdGl2ZUl0ZW0uX3NlbGVjdFZpYUludGVyYWN0aW9uKCl9KSl9X3Jlc2V0T3B0aW9ucygpe2NvbnN0IHQ9cGUodGhpcy5vcHRpb25zLmNoYW5nZXMsdGhpcy5fZGVzdHJveSk7dGhpcy5vcHRpb25TZWxlY3Rpb25DaGFuZ2VzLnBpcGUoamUodCkpLnN1YnNjcmliZSgodD0+e3RoaXMuX29uU2VsZWN0KHQuc291cmNlLHQuaXNVc2VySW5wdXQpLHQuaXNVc2VySW5wdXQmJiF0aGlzLm11bHRpcGxlJiZ0aGlzLl9wYW5lbE9wZW4mJih0aGlzLmNsb3NlKCksdGhpcy5mb2N1cygpKX0pKSxwZSguLi50aGlzLm9wdGlvbnMubWFwKCh0PT50Ll9zdGF0ZUNoYW5nZXMpKSkucGlwZShqZSh0KSkuc3Vic2NyaWJlKCgoKT0+e3RoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpLHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKX0pKX1fb25TZWxlY3QodCxlKXtjb25zdCBuPXRoaXMuX3NlbGVjdGlvbk1vZGVsLmlzU2VsZWN0ZWQodCk7bnVsbCE9dC52YWx1ZXx8dGhpcy5fbXVsdGlwbGU/KG4hPT10LnNlbGVjdGVkJiYodC5zZWxlY3RlZD90aGlzLl9zZWxlY3Rpb25Nb2RlbC5zZWxlY3QodCk6dGhpcy5fc2VsZWN0aW9uTW9kZWwuZGVzZWxlY3QodCkpLGUmJnRoaXMuX2tleU1hbmFnZXIuc2V0QWN0aXZlSXRlbSh0KSx0aGlzLm11bHRpcGxlJiYodGhpcy5fc29ydFZhbHVlcygpLGUmJnRoaXMuZm9jdXMoKSkpOih0LmRlc2VsZWN0KCksdGhpcy5fc2VsZWN0aW9uTW9kZWwuY2xlYXIoKSxudWxsIT10aGlzLnZhbHVlJiZ0aGlzLl9wcm9wYWdhdGVDaGFuZ2VzKHQudmFsdWUpKSxuIT09dGhpcy5fc2VsZWN0aW9uTW9kZWwuaXNTZWxlY3RlZCh0KSYmdGhpcy5fcHJvcGFnYXRlQ2hhbmdlcygpLHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKX1fc29ydFZhbHVlcygpe2lmKHRoaXMubXVsdGlwbGUpe2NvbnN0IHQ9dGhpcy5vcHRpb25zLnRvQXJyYXkoKTt0aGlzLl9zZWxlY3Rpb25Nb2RlbC5zb3J0KCgoZSxuKT0+dGhpcy5zb3J0Q29tcGFyYXRvcj90aGlzLnNvcnRDb21wYXJhdG9yKGUsbix0KTp0LmluZGV4T2YoZSktdC5pbmRleE9mKG4pKSksdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpfX1fcHJvcGFnYXRlQ2hhbmdlcyh0KXtsZXQgZT1udWxsO2U9dGhpcy5tdWx0aXBsZT90aGlzLnNlbGVjdGVkLm1hcCgodD0+dC52YWx1ZSkpOnRoaXMuc2VsZWN0ZWQ/dGhpcy5zZWxlY3RlZC52YWx1ZTp0LHRoaXMuX3ZhbHVlPWUsdGhpcy52YWx1ZUNoYW5nZS5lbWl0KGUpLHRoaXMuX29uQ2hhbmdlKGUpLHRoaXMuc2VsZWN0aW9uQ2hhbmdlLmVtaXQodGhpcy5fZ2V0Q2hhbmdlRXZlbnQoZSkpLHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpfV9oaWdobGlnaHRDb3JyZWN0T3B0aW9uKCl7dGhpcy5fa2V5TWFuYWdlciYmKHRoaXMuZW1wdHk/dGhpcy5fa2V5TWFuYWdlci5zZXRGaXJzdEl0ZW1BY3RpdmUoKTp0aGlzLl9rZXlNYW5hZ2VyLnNldEFjdGl2ZUl0ZW0odGhpcy5fc2VsZWN0aW9uTW9kZWwuc2VsZWN0ZWRbMF0pKX1fY2FuT3Blbigpe3ZhciB0O3JldHVybiF0aGlzLl9wYW5lbE9wZW4mJiF0aGlzLmRpc2FibGVkJiYobnVsbD09PSh0PXRoaXMub3B0aW9ucyl8fHZvaWQgMD09PXQ/dm9pZCAwOnQubGVuZ3RoKT4wfWZvY3VzKHQpe3RoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5mb2N1cyh0KX1fZ2V0UGFuZWxBcmlhTGFiZWxsZWRieSgpe3ZhciB0O2lmKHRoaXMuYXJpYUxhYmVsKXJldHVybiBudWxsO2NvbnN0IGU9bnVsbD09PSh0PXRoaXMuX3BhcmVudEZvcm1GaWVsZCl8fHZvaWQgMD09PXQ/dm9pZCAwOnQuZ2V0TGFiZWxJZCgpO3JldHVybiB0aGlzLmFyaWFMYWJlbGxlZGJ5PyhlP2UrIiAiOiIiKSt0aGlzLmFyaWFMYWJlbGxlZGJ5OmV9X2dldEFyaWFBY3RpdmVEZXNjZW5kYW50KCl7cmV0dXJuIHRoaXMucGFuZWxPcGVuJiZ0aGlzLl9rZXlNYW5hZ2VyJiZ0aGlzLl9rZXlNYW5hZ2VyLmFjdGl2ZUl0ZW0/dGhpcy5fa2V5TWFuYWdlci5hY3RpdmVJdGVtLmlkOm51bGx9X2dldFRyaWdnZXJBcmlhTGFiZWxsZWRieSgpe3ZhciB0O2lmKHRoaXMuYXJpYUxhYmVsKXJldHVybiBudWxsO2NvbnN0IGU9bnVsbD09PSh0PXRoaXMuX3BhcmVudEZvcm1GaWVsZCl8fHZvaWQgMD09PXQ/dm9pZCAwOnQuZ2V0TGFiZWxJZCgpO2xldCBuPShlP2UrIiAiOiIiKSt0aGlzLl92YWx1ZUlkO3JldHVybiB0aGlzLmFyaWFMYWJlbGxlZGJ5JiYobis9IiAiK3RoaXMuYXJpYUxhYmVsbGVkYnkpLG59X3BhbmVsRG9uZUFuaW1hdGluZyh0KXt0aGlzLm9wZW5lZENoYW5nZS5lbWl0KHQpfXNldERlc2NyaWJlZEJ5SWRzKHQpe3RoaXMuX2FyaWFEZXNjcmliZWRieT10LmpvaW4oIiAiKX1vbkNvbnRhaW5lckNsaWNrKCl7dGhpcy5mb2N1cygpLHRoaXMub3BlbigpfWdldCBzaG91bGRMYWJlbEZsb2F0KCl7cmV0dXJuIHRoaXMuX3BhbmVsT3Blbnx8IXRoaXMuZW1wdHl8fHRoaXMuX2ZvY3VzZWQmJiEhdGhpcy5fcGxhY2Vob2xkZXJ9fXhZLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHx4WSkoZ2YoUUwpLGdmKE9iKSxnZihtQyksZ2YobkwpLGdmKEtoKSxnZih2Riw4KSxnZihYVyw4KSxnZihoRyw4KSxnZih5VSw4KSxnZihsVywxMCksR2EoInRhYmluZGV4IiksZ2YoZ1kpLGdmKGNGKSxnZihoWSw4KSl9LHhZLsm1ZGlyPWhvKHt0eXBlOnhZLHZpZXdRdWVyeTpmdW5jdGlvbiB0KGUsbil7aWYoMSZlJiYoVnkob1ksNSksVnkoaVksNSksVnkodFYsNSkpLDImZSl7bGV0IHQ7QnkodD1VeSgpKSYmKG4udHJpZ2dlcj10LmZpcnN0KSxCeSh0PVV5KCkpJiYobi5wYW5lbD10LmZpcnN0KSxCeSh0PVV5KCkpJiYobi5fb3ZlcmxheURpcj10LmZpcnN0KX19LGlucHV0czp7YXJpYUxhYmVsOlsiYXJpYS1sYWJlbCIsImFyaWFMYWJlbCJdLGlkOiJpZCIscGxhY2Vob2xkZXI6InBsYWNlaG9sZGVyIixyZXF1aXJlZDoicmVxdWlyZWQiLG11bHRpcGxlOiJtdWx0aXBsZSIsZGlzYWJsZU9wdGlvbkNlbnRlcmluZzoiZGlzYWJsZU9wdGlvbkNlbnRlcmluZyIsY29tcGFyZVdpdGg6ImNvbXBhcmVXaXRoIix2YWx1ZToidmFsdWUiLHR5cGVhaGVhZERlYm91bmNlSW50ZXJ2YWw6InR5cGVhaGVhZERlYm91bmNlSW50ZXJ2YWwiLHBhbmVsQ2xhc3M6InBhbmVsQ2xhc3MiLGFyaWFMYWJlbGxlZGJ5OlsiYXJpYS1sYWJlbGxlZGJ5IiwiYXJpYUxhYmVsbGVkYnkiXSxlcnJvclN0YXRlTWF0Y2hlcjoiZXJyb3JTdGF0ZU1hdGNoZXIiLHNvcnRDb21wYXJhdG9yOiJzb3J0Q29tcGFyYXRvciJ9LG91dHB1dHM6e29wZW5lZENoYW5nZToib3BlbmVkQ2hhbmdlIixfb3BlbmVkU3RyZWFtOiJvcGVuZWQiLF9jbG9zZWRTdHJlYW06ImNsb3NlZCIsc2VsZWN0aW9uQ2hhbmdlOiJzZWxlY3Rpb25DaGFuZ2UiLHZhbHVlQ2hhbmdlOiJ2YWx1ZUNoYW5nZSJ9LGZlYXR1cmVzOltRcCxxb119KSx4WS5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOlFMfSx7dHlwZTpPYn0se3R5cGU6bUN9LHt0eXBlOm5MfSx7dHlwZTpLaH0se3R5cGU6dkYsZGVjb3JhdG9yczpbe3R5cGU6QnJ9XX0se3R5cGU6WFcsZGVjb3JhdG9yczpbe3R5cGU6QnJ9XX0se3R5cGU6aEcsZGVjb3JhdG9yczpbe3R5cGU6QnJ9XX0se3R5cGU6X1UsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W3lVXX1dfSx7dHlwZTpsVyxkZWNvcmF0b3JzOlt7dHlwZTpWcn0se3R5cGU6QnJ9XX0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOiRhLGFyZ3M6WyJ0YWJpbmRleCJdfV19LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltnWV19XX0se3R5cGU6Y0Z9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpbaFldfV19XSx4WS5wcm9wRGVjb3JhdG9ycz17dHJpZ2dlcjpbe3R5cGU6YXIsYXJnczpbInRyaWdnZXIiXX1dLHBhbmVsOlt7dHlwZTphcixhcmdzOlsicGFuZWwiXX1dLF9vdmVybGF5RGlyOlt7dHlwZTphcixhcmdzOlt0Vl19XSxwYW5lbENsYXNzOlt7dHlwZTpSX31dLHBsYWNlaG9sZGVyOlt7dHlwZTpSX31dLHJlcXVpcmVkOlt7dHlwZTpSX31dLG11bHRpcGxlOlt7dHlwZTpSX31dLGRpc2FibGVPcHRpb25DZW50ZXJpbmc6W3t0eXBlOlJffV0sY29tcGFyZVdpdGg6W3t0eXBlOlJffV0sdmFsdWU6W3t0eXBlOlJffV0sYXJpYUxhYmVsOlt7dHlwZTpSXyxhcmdzOlsiYXJpYS1sYWJlbCJdfV0sYXJpYUxhYmVsbGVkYnk6W3t0eXBlOlJfLGFyZ3M6WyJhcmlhLWxhYmVsbGVkYnkiXX1dLGVycm9yU3RhdGVNYXRjaGVyOlt7dHlwZTpSX31dLHR5cGVhaGVhZERlYm91bmNlSW50ZXJ2YWw6W3t0eXBlOlJffV0sc29ydENvbXBhcmF0b3I6W3t0eXBlOlJffV0saWQ6W3t0eXBlOlJffV0sb3BlbmVkQ2hhbmdlOlt7dHlwZTpFX31dLF9vcGVuZWRTdHJlYW06W3t0eXBlOkVfLGFyZ3M6WyJvcGVuZWQiXX1dLF9jbG9zZWRTdHJlYW06W3t0eXBlOkVfLGFyZ3M6WyJjbG9zZWQiXX1dLHNlbGVjdGlvbkNoYW5nZTpbe3R5cGU6RV99XSx2YWx1ZUNoYW5nZTpbe3R5cGU6RV99XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYih4WSxbe3R5cGU6a199XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6UUx9LHt0eXBlOk9ifSx7dHlwZTptQ30se3R5cGU6bkx9LHt0eXBlOktofSx7dHlwZTp2RixkZWNvcmF0b3JzOlt7dHlwZTpCcn1dfSx7dHlwZTpYVyxkZWNvcmF0b3JzOlt7dHlwZTpCcn1dfSx7dHlwZTpoRyxkZWNvcmF0b3JzOlt7dHlwZTpCcn1dfSx7dHlwZTpfVSxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpbeVVdfV19LHt0eXBlOmxXLGRlY29yYXRvcnM6W3t0eXBlOlZyfSx7dHlwZTpCcn1dfSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6JGEsYXJnczpbInRhYmluZGV4Il19XX0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W2dZXX1dfSx7dHlwZTpjRn0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltoWV19XX1dfSkse2FyaWFMYWJlbDpbe3R5cGU6Ul8sYXJnczpbImFyaWEtbGFiZWwiXX1dLG9wZW5lZENoYW5nZTpbe3R5cGU6RV99XSxfb3BlbmVkU3RyZWFtOlt7dHlwZTpFXyxhcmdzOlsib3BlbmVkIl19XSxfY2xvc2VkU3RyZWFtOlt7dHlwZTpFXyxhcmdzOlsiY2xvc2VkIl19XSxzZWxlY3Rpb25DaGFuZ2U6W3t0eXBlOkVffV0sdmFsdWVDaGFuZ2U6W3t0eXBlOkVffV0saWQ6W3t0eXBlOlJffV0scGxhY2Vob2xkZXI6W3t0eXBlOlJffV0scmVxdWlyZWQ6W3t0eXBlOlJffV0sbXVsdGlwbGU6W3t0eXBlOlJffV0sZGlzYWJsZU9wdGlvbkNlbnRlcmluZzpbe3R5cGU6Ul99XSxjb21wYXJlV2l0aDpbe3R5cGU6Ul99XSx2YWx1ZTpbe3R5cGU6Ul99XSx0eXBlYWhlYWREZWJvdW5jZUludGVydmFsOlt7dHlwZTpSX31dLHRyaWdnZXI6W3t0eXBlOmFyLGFyZ3M6WyJ0cmlnZ2VyIl19XSxwYW5lbDpbe3R5cGU6YXIsYXJnczpbInBhbmVsIl19XSxfb3ZlcmxheURpcjpbe3R5cGU6YXIsYXJnczpbdFZdfV0scGFuZWxDbGFzczpbe3R5cGU6Ul99XSxhcmlhTGFiZWxsZWRieTpbe3R5cGU6Ul8sYXJnczpbImFyaWEtbGFiZWxsZWRieSJdfV0sZXJyb3JTdGF0ZU1hdGNoZXI6W3t0eXBlOlJffV0sc29ydENvbXBhcmF0b3I6W3t0eXBlOlJffV19KTtjbGFzcyBPWSBleHRlbmRzIHhZe2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLl9zY3JvbGxUb3A9MCx0aGlzLl90cmlnZ2VyRm9udFNpemU9MCx0aGlzLl90cmFuc2Zvcm1PcmlnaW49InRvcCIsdGhpcy5fb2Zmc2V0WT0wLHRoaXMuX3Bvc2l0aW9ucz1be29yaWdpblg6InN0YXJ0IixvcmlnaW5ZOiJ0b3AiLG92ZXJsYXlYOiJzdGFydCIsb3ZlcmxheVk6InRvcCJ9LHtvcmlnaW5YOiJzdGFydCIsb3JpZ2luWToiYm90dG9tIixvdmVybGF5WDoic3RhcnQiLG92ZXJsYXlZOiJib3R0b20ifV19X2NhbGN1bGF0ZU92ZXJsYXlTY3JvbGwodCxlLG4pe2NvbnN0IG89dGhpcy5fZ2V0SXRlbUhlaWdodCgpO3JldHVybiBNYXRoLm1pbihNYXRoLm1heCgwLG8qdC1lK28vMiksbil9bmdPbkluaXQoKXtzdXBlci5uZ09uSW5pdCgpLHRoaXMuX3ZpZXdwb3J0UnVsZXIuY2hhbmdlKCkucGlwZShqZSh0aGlzLl9kZXN0cm95KSkuc3Vic2NyaWJlKCgoKT0+e3RoaXMucGFuZWxPcGVuJiYodGhpcy5fdHJpZ2dlclJlY3Q9dGhpcy50cmlnZ2VyLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCkpfSkpfW9wZW4oKXtzdXBlci5fY2FuT3BlbigpJiYoc3VwZXIub3BlbigpLHRoaXMuX3RyaWdnZXJSZWN0PXRoaXMudHJpZ2dlci5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHRoaXMuX3RyaWdnZXJGb250U2l6ZT1wYXJzZUludChnZXRDb21wdXRlZFN0eWxlKHRoaXMudHJpZ2dlci5uYXRpdmVFbGVtZW50KS5mb250U2l6ZXx8IjAiKSx0aGlzLl9jYWxjdWxhdGVPdmVybGF5UG9zaXRpb24oKSx0aGlzLl9uZ1pvbmUub25TdGFibGUucGlwZSh2ZSgxKSkuc3Vic2NyaWJlKCgoKT0+e3RoaXMuX3RyaWdnZXJGb250U2l6ZSYmdGhpcy5fb3ZlcmxheURpci5vdmVybGF5UmVmJiZ0aGlzLl9vdmVybGF5RGlyLm92ZXJsYXlSZWYub3ZlcmxheUVsZW1lbnQmJih0aGlzLl9vdmVybGF5RGlyLm92ZXJsYXlSZWYub3ZlcmxheUVsZW1lbnQuc3R5bGUuZm9udFNpemU9YCR7dGhpcy5fdHJpZ2dlckZvbnRTaXplfXB4YCl9KSkpfV9zY3JvbGxPcHRpb25JbnRvVmlldyh0KXtjb25zdCBlPXdMKHQsdGhpcy5vcHRpb25zLHRoaXMub3B0aW9uR3JvdXBzKSxuPXRoaXMuX2dldEl0ZW1IZWlnaHQoKTt0aGlzLnBhbmVsLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wPTA9PT10JiYxPT09ZT8wOmtMKCh0K2UpKm4sbix0aGlzLnBhbmVsLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wLGZZKX1fcG9zaXRpb25pbmdTZXR0bGVkKCl7dGhpcy5fY2FsY3VsYXRlT3ZlcmxheU9mZnNldFgoKSx0aGlzLnBhbmVsLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wPXRoaXMuX3Njcm9sbFRvcH1fcGFuZWxEb25lQW5pbWF0aW5nKHQpe3RoaXMucGFuZWxPcGVuP3RoaXMuX3Njcm9sbFRvcD0wOih0aGlzLl9vdmVybGF5RGlyLm9mZnNldFg9MCx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKSksc3VwZXIuX3BhbmVsRG9uZUFuaW1hdGluZyh0KX1fZ2V0Q2hhbmdlRXZlbnQodCl7cmV0dXJuIG5ldyBfWSh0aGlzLHQpfV9jYWxjdWxhdGVPdmVybGF5T2Zmc2V0WCgpe2NvbnN0IHQ9dGhpcy5fb3ZlcmxheURpci5vdmVybGF5UmVmLm92ZXJsYXlFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGU9dGhpcy5fdmlld3BvcnRSdWxlci5nZXRWaWV3cG9ydFNpemUoKSxuPXRoaXMuX2lzUnRsKCksbz10aGlzLm11bHRpcGxlPzU2OjMyO2xldCBpO2lmKHRoaXMubXVsdGlwbGUpaT00MDtlbHNlIGlmKHRoaXMuZGlzYWJsZU9wdGlvbkNlbnRlcmluZylpPXVZO2Vsc2V7bGV0IHQ9dGhpcy5fc2VsZWN0aW9uTW9kZWwuc2VsZWN0ZWRbMF18fHRoaXMub3B0aW9ucy5maXJzdDtpPXQmJnQuZ3JvdXA/MzI6dVl9bnx8KGkqPS0xKTtjb25zdCBhPTAtKHQubGVmdCtpLShuP286MCkpLHI9dC5yaWdodCtpLWUud2lkdGgrKG4/MDpvKTthPjA/aSs9YSs4OnI+MCYmKGktPXIrOCksdGhpcy5fb3ZlcmxheURpci5vZmZzZXRYPU1hdGgucm91bmQoaSksdGhpcy5fb3ZlcmxheURpci5vdmVybGF5UmVmLnVwZGF0ZVBvc2l0aW9uKCl9X2NhbGN1bGF0ZU92ZXJsYXlPZmZzZXRZKHQsZSxuKXtjb25zdCBvPXRoaXMuX2dldEl0ZW1IZWlnaHQoKSxpPShvLXRoaXMuX3RyaWdnZXJSZWN0LmhlaWdodCkvMixhPU1hdGguZmxvb3IoZlkvbyk7bGV0IHI7aWYodGhpcy5kaXNhYmxlT3B0aW9uQ2VudGVyaW5nKXJldHVybiAwO2lmKDA9PT10aGlzLl9zY3JvbGxUb3Apcj10Km87ZWxzZSBpZih0aGlzLl9zY3JvbGxUb3A9PT1uKXtyPSh0LSh0aGlzLl9nZXRJdGVtQ291bnQoKS1hKSkqbysoby0odGhpcy5fZ2V0SXRlbUNvdW50KCkqby1mWSklbyl9ZWxzZSByPWUtby8yO3JldHVybiBNYXRoLnJvdW5kKC0xKnItaSl9X2NoZWNrT3ZlcmxheVdpdGhpblZpZXdwb3J0KHQpe2NvbnN0IGU9dGhpcy5fZ2V0SXRlbUhlaWdodCgpLG49dGhpcy5fdmlld3BvcnRSdWxlci5nZXRWaWV3cG9ydFNpemUoKSxvPXRoaXMuX3RyaWdnZXJSZWN0LnRvcC04LGk9bi5oZWlnaHQtdGhpcy5fdHJpZ2dlclJlY3QuYm90dG9tLTgsYT1NYXRoLmFicyh0aGlzLl9vZmZzZXRZKSxyPU1hdGgubWluKHRoaXMuX2dldEl0ZW1Db3VudCgpKmUsZlkpLWEtdGhpcy5fdHJpZ2dlclJlY3QuaGVpZ2h0O3I+aT90aGlzLl9hZGp1c3RQYW5lbFVwKHIsaSk6YT5vP3RoaXMuX2FkanVzdFBhbmVsRG93bihhLG8sdCk6dGhpcy5fdHJhbnNmb3JtT3JpZ2luPXRoaXMuX2dldE9yaWdpbkJhc2VkT25PcHRpb24oKX1fYWRqdXN0UGFuZWxVcCh0LGUpe2NvbnN0IG49TWF0aC5yb3VuZCh0LWUpO3RoaXMuX3Njcm9sbFRvcC09bix0aGlzLl9vZmZzZXRZLT1uLHRoaXMuX3RyYW5zZm9ybU9yaWdpbj10aGlzLl9nZXRPcmlnaW5CYXNlZE9uT3B0aW9uKCksdGhpcy5fc2Nyb2xsVG9wPD0wJiYodGhpcy5fc2Nyb2xsVG9wPTAsdGhpcy5fb2Zmc2V0WT0wLHRoaXMuX3RyYW5zZm9ybU9yaWdpbj0iNTAlIGJvdHRvbSAwcHgiKX1fYWRqdXN0UGFuZWxEb3duKHQsZSxuKXtjb25zdCBvPU1hdGgucm91bmQodC1lKTtpZih0aGlzLl9zY3JvbGxUb3ArPW8sdGhpcy5fb2Zmc2V0WSs9byx0aGlzLl90cmFuc2Zvcm1PcmlnaW49dGhpcy5fZ2V0T3JpZ2luQmFzZWRPbk9wdGlvbigpLHRoaXMuX3Njcm9sbFRvcD49bilyZXR1cm4gdGhpcy5fc2Nyb2xsVG9wPW4sdGhpcy5fb2Zmc2V0WT0wLHZvaWQodGhpcy5fdHJhbnNmb3JtT3JpZ2luPSI1MCUgdG9wIDBweCIpfV9jYWxjdWxhdGVPdmVybGF5UG9zaXRpb24oKXtjb25zdCB0PXRoaXMuX2dldEl0ZW1IZWlnaHQoKSxlPXRoaXMuX2dldEl0ZW1Db3VudCgpLG49TWF0aC5taW4oZSp0LGZZKSxvPWUqdC1uO2xldCBpO2k9dGhpcy5lbXB0eT8wOk1hdGgubWF4KHRoaXMub3B0aW9ucy50b0FycmF5KCkuaW5kZXhPZih0aGlzLl9zZWxlY3Rpb25Nb2RlbC5zZWxlY3RlZFswXSksMCksaSs9d0woaSx0aGlzLm9wdGlvbnMsdGhpcy5vcHRpb25Hcm91cHMpO2NvbnN0IGE9bi8yO3RoaXMuX3Njcm9sbFRvcD10aGlzLl9jYWxjdWxhdGVPdmVybGF5U2Nyb2xsKGksYSxvKSx0aGlzLl9vZmZzZXRZPXRoaXMuX2NhbGN1bGF0ZU92ZXJsYXlPZmZzZXRZKGksYSxvKSx0aGlzLl9jaGVja092ZXJsYXlXaXRoaW5WaWV3cG9ydChvKX1fZ2V0T3JpZ2luQmFzZWRPbk9wdGlvbigpe2NvbnN0IHQ9dGhpcy5fZ2V0SXRlbUhlaWdodCgpLGU9KHQtdGhpcy5fdHJpZ2dlclJlY3QuaGVpZ2h0KS8yO3JldHVybmA1MCUgJHtNYXRoLmFicyh0aGlzLl9vZmZzZXRZKS1lK3QvMn1weCAwcHhgfV9nZXRJdGVtSGVpZ2h0KCl7cmV0dXJuIDMqdGhpcy5fdHJpZ2dlckZvbnRTaXplfV9nZXRJdGVtQ291bnQoKXtyZXR1cm4gdGhpcy5vcHRpb25zLmxlbmd0aCt0aGlzLm9wdGlvbkdyb3Vwcy5sZW5ndGh9fU9ZLsm1ZmFjPShmdW5jdGlvbigpe2xldCB0O3JldHVybiBmdW5jdGlvbiBlKG4pe3JldHVybih0fHwodD1VYShPWSkpKShufHxPWSl9fSkoKSxPWS7JtWNtcD1zbyh7dHlwZTpPWSxzZWxlY3RvcnM6W1sibWF0LXNlbGVjdCJdXSxjb250ZW50UXVlcmllczpmdW5jdGlvbiB0KGUsbixvKXtpZigxJmUmJihqeShvLE1ZLDUpLGp5KG8sUEwsNSksankobyxDTCw1KSksMiZlKXtsZXQgdDtCeSh0PVV5KCkpJiYobi5jdXN0b21UcmlnZ2VyPXQuZmlyc3QpLEJ5KHQ9VXkoKSkmJihuLm9wdGlvbnM9dCksQnkodD1VeSgpKSYmKG4ub3B0aW9uR3JvdXBzPXQpfX0saG9zdEF0dHJzOlsicm9sZSIsImNvbWJvYm94IiwiYXJpYS1hdXRvY29tcGxldGUiLCJub25lIiwiYXJpYS1oYXNwb3B1cCIsInRydWUiLDEsIm1hdC1zZWxlY3QiXSxob3N0VmFyczoyMCxob3N0QmluZGluZ3M6ZnVuY3Rpb24gdChlLG4pezEmZSYmUmYoImtleWRvd24iLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLl9oYW5kbGVLZXlkb3duKGUpfSkpKCJmb2N1cyIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5fb25Gb2N1cygpfSkpKCJibHVyIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLl9vbkJsdXIoKX0pKSwyJmUmJih5bSgiaWQiLG4uaWQpKCJ0YWJpbmRleCIsbi50YWJJbmRleCkoImFyaWEtY29udHJvbHMiLG4ucGFuZWxPcGVuP24uaWQrIi1wYW5lbCI6bnVsbCkoImFyaWEtZXhwYW5kZWQiLG4ucGFuZWxPcGVuKSgiYXJpYS1sYWJlbCIsbi5hcmlhTGFiZWx8fG51bGwpKCJhcmlhLXJlcXVpcmVkIixuLnJlcXVpcmVkLnRvU3RyaW5nKCkpKCJhcmlhLWRpc2FibGVkIixuLmRpc2FibGVkLnRvU3RyaW5nKCkpKCJhcmlhLWludmFsaWQiLG4uZXJyb3JTdGF0ZSkoImFyaWEtZGVzY3JpYmVkYnkiLG4uX2FyaWFEZXNjcmliZWRieXx8bnVsbCkoImFyaWEtYWN0aXZlZGVzY2VuZGFudCIsbi5fZ2V0QXJpYUFjdGl2ZURlc2NlbmRhbnQoKSksY3UoIm1hdC1zZWxlY3QtZGlzYWJsZWQiLG4uZGlzYWJsZWQpKCJtYXQtc2VsZWN0LWludmFsaWQiLG4uZXJyb3JTdGF0ZSkoIm1hdC1zZWxlY3QtcmVxdWlyZWQiLG4ucmVxdWlyZWQpKCJtYXQtc2VsZWN0LWVtcHR5IixuLmVtcHR5KSgibWF0LXNlbGVjdC1tdWx0aXBsZSIsbi5tdWx0aXBsZSkpfSxpbnB1dHM6e2Rpc2FibGVkOiJkaXNhYmxlZCIsZGlzYWJsZVJpcHBsZToiZGlzYWJsZVJpcHBsZSIsdGFiSW5kZXg6InRhYkluZGV4In0sZXhwb3J0QXM6WyJtYXRTZWxlY3QiXSxmZWF0dXJlczpbamgoW3twcm92aWRlOmlVLHVzZUV4aXN0aW5nOk9ZfSx7cHJvdmlkZTpoTCx1c2VFeGlzdGluZzpPWX1dKSxRcF0sbmdDb250ZW50U2VsZWN0b3JzOlsibWF0LXNlbGVjdC10cmlnZ2VyIiwiKiJdLGRlY2xzOjksdmFyczoxMixjb25zdHM6W1siY2RrLW92ZXJsYXktb3JpZ2luIiwiIiwxLCJtYXQtc2VsZWN0LXRyaWdnZXIiLDMsImNsaWNrIl0sWyJvcmlnaW4iLCJjZGtPdmVybGF5T3JpZ2luIiwidHJpZ2dlciIsIiJdLFsxLCJtYXQtc2VsZWN0LXZhbHVlIiwzLCJuZ1N3aXRjaCJdLFsiY2xhc3MiLCJtYXQtc2VsZWN0LXBsYWNlaG9sZGVyIG1hdC1zZWxlY3QtbWluLWxpbmUiLDQsIm5nU3dpdGNoQ2FzZSJdLFsiY2xhc3MiLCJtYXQtc2VsZWN0LXZhbHVlLXRleHQiLDMsIm5nU3dpdGNoIiw0LCJuZ1N3aXRjaENhc2UiXSxbMSwibWF0LXNlbGVjdC1hcnJvdy13cmFwcGVyIl0sWzEsIm1hdC1zZWxlY3QtYXJyb3ciXSxbImNkay1jb25uZWN0ZWQtb3ZlcmxheSIsIiIsImNka0Nvbm5lY3RlZE92ZXJsYXlMb2NrUG9zaXRpb24iLCIiLCJjZGtDb25uZWN0ZWRPdmVybGF5SGFzQmFja2Ryb3AiLCIiLCJjZGtDb25uZWN0ZWRPdmVybGF5QmFja2Ryb3BDbGFzcyIsImNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wIiwzLCJjZGtDb25uZWN0ZWRPdmVybGF5UGFuZWxDbGFzcyIsImNka0Nvbm5lY3RlZE92ZXJsYXlTY3JvbGxTdHJhdGVneSIsImNka0Nvbm5lY3RlZE92ZXJsYXlPcmlnaW4iLCJjZGtDb25uZWN0ZWRPdmVybGF5T3BlbiIsImNka0Nvbm5lY3RlZE92ZXJsYXlQb3NpdGlvbnMiLCJjZGtDb25uZWN0ZWRPdmVybGF5TWluV2lkdGgiLCJjZGtDb25uZWN0ZWRPdmVybGF5T2Zmc2V0WSIsImJhY2tkcm9wQ2xpY2siLCJhdHRhY2giLCJkZXRhY2giXSxbMSwibWF0LXNlbGVjdC1wbGFjZWhvbGRlciIsIm1hdC1zZWxlY3QtbWluLWxpbmUiXSxbMSwibWF0LXNlbGVjdC12YWx1ZS10ZXh0IiwzLCJuZ1N3aXRjaCJdLFsiY2xhc3MiLCJtYXQtc2VsZWN0LW1pbi1saW5lIiw0LCJuZ1N3aXRjaERlZmF1bHQiXSxbNCwibmdTd2l0Y2hDYXNlIl0sWzEsIm1hdC1zZWxlY3QtbWluLWxpbmUiXSxbMSwibWF0LXNlbGVjdC1wYW5lbC13cmFwIl0sWyJyb2xlIiwibGlzdGJveCIsInRhYmluZGV4IiwiLTEiLDMsIm5nQ2xhc3MiLCJrZXlkb3duIl0sWyJwYW5lbCIsIiJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7aWYoMSZlJiYoSGYoZFkpLENmKDAsImRpdiIsMCwxKSxSZigiY2xpY2siLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4udG9nZ2xlKCl9KSksQ2YoMywiZGl2IiwyKSxIbSg0LGFZLDIsMSwic3BhbiIsMyksSG0oNSxsWSwzLDIsInNwYW4iLDQpLE1mKCksQ2YoNiwiZGl2Iiw1KSx2Zig3LCJkaXYiLDYpLE1mKCksTWYoKSxIbSg4LGNZLDQsMTQsIm5nLXRlbXBsYXRlIiw3KSxSZigiYmFja2Ryb3BDbGljayIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5jbG9zZSgpfSkpKCJhdHRhY2giLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4uX29uQXR0YWNoZWQoKX0pKSgiZGV0YWNoIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLmNsb3NlKCl9KSkpLDImZSl7Y29uc3QgdD1GbSgxKTt5bSgiYXJpYS1vd25zIixuLnBhbmVsT3Blbj9uLmlkKyItcGFuZWwiOm51bGwpLERjKDMpLGJmKCJuZ1N3aXRjaCIsbi5lbXB0eSkseW0oImlkIixuLl92YWx1ZUlkKSxEYygxKSxiZigibmdTd2l0Y2hDYXNlIiwhMCksRGMoMSksYmYoIm5nU3dpdGNoQ2FzZSIsITEpLERjKDMpLGJmKCJjZGtDb25uZWN0ZWRPdmVybGF5UGFuZWxDbGFzcyIsbi5fb3ZlcmxheVBhbmVsQ2xhc3MpKCJjZGtDb25uZWN0ZWRPdmVybGF5U2Nyb2xsU3RyYXRlZ3kiLG4uX3Njcm9sbFN0cmF0ZWd5KSgiY2RrQ29ubmVjdGVkT3ZlcmxheU9yaWdpbiIsdCkoImNka0Nvbm5lY3RlZE92ZXJsYXlPcGVuIixuLnBhbmVsT3BlbikoImNka0Nvbm5lY3RlZE92ZXJsYXlQb3NpdGlvbnMiLG4uX3Bvc2l0aW9ucykoImNka0Nvbm5lY3RlZE92ZXJsYXlNaW5XaWR0aCIsbnVsbD09bi5fdHJpZ2dlclJlY3Q/bnVsbDpuLl90cmlnZ2VyUmVjdC53aWR0aCkoImNka0Nvbm5lY3RlZE92ZXJsYXlPZmZzZXRZIixuLl9vZmZzZXRZKX19LGRpcmVjdGl2ZXM6WyRCLER2LFJ2LHRWLEV2LEN2XSxzdHlsZXM6WycubWF0LXNlbGVjdHtkaXNwbGF5OmlubGluZS1ibG9jazt3aWR0aDoxMDAlO291dGxpbmU6bm9uZX0ubWF0LXNlbGVjdC10cmlnZ2Vye2Rpc3BsYXk6aW5saW5lLXRhYmxlO2N1cnNvcjpwb2ludGVyO3Bvc2l0aW9uOnJlbGF0aXZlO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LXNlbGVjdC1kaXNhYmxlZCAubWF0LXNlbGVjdC10cmlnZ2Vyey13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTstbW96LXVzZXItc2VsZWN0Om5vbmU7LW1zLXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZTtjdXJzb3I6ZGVmYXVsdH0ubWF0LXNlbGVjdC12YWx1ZXtkaXNwbGF5OnRhYmxlLWNlbGw7bWF4LXdpZHRoOjA7d2lkdGg6MTAwJTtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpczt3aGl0ZS1zcGFjZTpub3dyYXB9Lm1hdC1zZWxlY3QtdmFsdWUtdGV4dHt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXN9Lm1hdC1zZWxlY3QtYXJyb3ctd3JhcHBlcntkaXNwbGF5OnRhYmxlLWNlbGw7dmVydGljYWwtYWxpZ246bWlkZGxlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwgLm1hdC1zZWxlY3QtYXJyb3ctd3JhcHBlcnt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtNTAlKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lIC5tYXQtc2VsZWN0LWFycm93LXdyYXBwZXJ7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTI1JSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utc3RhbmRhcmQubWF0LWZvcm0tZmllbGQtaGFzLWxhYmVsIC5tYXQtc2VsZWN0Om5vdCgubWF0LXNlbGVjdC1lbXB0eSkgLm1hdC1zZWxlY3QtYXJyb3ctd3JhcHBlcnt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtNTAlKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1zdGFuZGFyZCAubWF0LXNlbGVjdC5tYXQtc2VsZWN0LWVtcHR5IC5tYXQtc2VsZWN0LWFycm93LXdyYXBwZXJ7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSl9Ll9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utc3RhbmRhcmQgLm1hdC1zZWxlY3QubWF0LXNlbGVjdC1lbXB0eSAubWF0LXNlbGVjdC1hcnJvdy13cmFwcGVye3RyYW5zaXRpb246bm9uZX0ubWF0LXNlbGVjdC1hcnJvd3t3aWR0aDowO2hlaWdodDowO2JvcmRlci1sZWZ0OjVweCBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItcmlnaHQ6NXB4IHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci10b3A6NXB4IHNvbGlkO21hcmdpbjowIDRweH0ubWF0LXNlbGVjdC1wYW5lbC13cmFwe2ZsZXgtYmFzaXM6MTAwJX0ubWF0LXNlbGVjdC1wYW5lbHttaW4td2lkdGg6MTEycHg7bWF4LXdpZHRoOjI4MHB4O292ZXJmbG93OmF1dG87LXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6dG91Y2g7cGFkZGluZy10b3A6MDtwYWRkaW5nLWJvdHRvbTowO21heC1oZWlnaHQ6MjU2cHg7bWluLXdpZHRoOjEwMCU7Ym9yZGVyLXJhZGl1czo0cHg7b3V0bGluZTowfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1zZWxlY3QtcGFuZWx7b3V0bGluZTpzb2xpZCAxcHh9Lm1hdC1zZWxlY3QtcGFuZWwgLm1hdC1vcHRncm91cC1sYWJlbCwubWF0LXNlbGVjdC1wYW5lbCAubWF0LW9wdGlvbntmb250LXNpemU6aW5oZXJpdDtsaW5lLWhlaWdodDozZW07aGVpZ2h0OjNlbX0ubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtc2VsZWN0Om5vdCgubWF0LWZvcm0tZmllbGQtZGlzYWJsZWQpIC5tYXQtZm9ybS1maWVsZC1mbGV4e2N1cnNvcjpwb2ludGVyfS5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1zZWxlY3QgLm1hdC1mb3JtLWZpZWxkLWxhYmVse3dpZHRoOmNhbGMoMTAwJSAtIDE4cHgpfS5tYXQtc2VsZWN0LXBsYWNlaG9sZGVye3RyYW5zaXRpb246Y29sb3IgNDAwbXMgMTMzLjMzMzMzMzMzMzNtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKX0uX21hdC1hbmltYXRpb24tbm9vcGFibGUgLm1hdC1zZWxlY3QtcGxhY2Vob2xkZXJ7dHJhbnNpdGlvbjpub25lfS5tYXQtZm9ybS1maWVsZC1oaWRlLXBsYWNlaG9sZGVyIC5tYXQtc2VsZWN0LXBsYWNlaG9sZGVye2NvbG9yOnRyYW5zcGFyZW50Oy13ZWJraXQtdGV4dC1maWxsLWNvbG9yOnRyYW5zcGFyZW50O3RyYW5zaXRpb246bm9uZTtkaXNwbGF5OmJsb2NrfS5tYXQtc2VsZWN0LW1pbi1saW5lOmVtcHR5OjpiZWZvcmV7Y29udGVudDoiICI7d2hpdGUtc3BhY2U6cHJlO3dpZHRoOjFweDtkaXNwbGF5OmlubGluZS1ibG9jaztvcGFjaXR5OjB9XG4nXSxlbmNhcHN1bGF0aW9uOjIsZGF0YTp7YW5pbWF0aW9uOltwWS50cmFuc2Zvcm1QYW5lbFdyYXAscFkudHJhbnNmb3JtUGFuZWxdfSxjaGFuZ2VEZXRlY3Rpb246MH0pLE9ZLnByb3BEZWNvcmF0b3JzPXtvcHRpb25zOlt7dHlwZTpvcixhcmdzOltQTCx7ZGVzY2VuZGFudHM6ITB9XX1dLG9wdGlvbkdyb3Vwczpbe3R5cGU6b3IsYXJnczpbQ0wse2Rlc2NlbmRhbnRzOiEwfV19XSxjdXN0b21UcmlnZ2VyOlt7dHlwZTppcixhcmdzOltNWV19XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihPWSxbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJtYXQtc2VsZWN0IixleHBvcnRBczoibWF0U2VsZWN0Iix0ZW1wbGF0ZTonXHgzYyEtLVxuIE5vdGUgdGhhdCB0aGUgc2VsZWN0IHRyaWdnZXIgZWxlbWVudCBzcGVjaWZpZXMgYGFyaWEtb3duc2AgcG9pbnRpbmcgdG8gdGhlIGxpc3Rib3ggb3ZlcmxheS5cbiBXaGlsZSBhcmlhLW93bnMgaXMgbm90IHJlcXVpcmVkIGZvciB0aGUgQVJJQSAxLjIgYHJvbGU9ImNvbWJvYm94ImAgaW50ZXJhY3Rpb24gcGF0dGVybixcbiBpdCBmaXhlcyBhbiBpc3N1ZSB3aXRoIFZvaWNlT3ZlciB3aGVuIHRoZSBzZWxlY3QgYXBwZWFycyBpbnNpZGUgb2YgYW4gYGFyaWEtbW9kZWw9InRydWUiYFxuIGVsZW1lbnQgKGUuZy4gYSBkaWFsb2cpLiBXaXRob3V0IHRoaXMgYGFyaWEtb3duc2AsIHRoZSBgYXJpYS1tb2RhbGAgb24gYSBkaWFsb2cgcHJldmVudHNcbiBWb2ljZU92ZXIgZnJvbSAic2VlaW5nIiB0aGUgc2VsZWN0XCdzIGxpc3Rib3ggb3ZlcmxheSBmb3IgYXJpYS1hY3RpdmVkZXNjZW5kYW50LlxuIFVzaW5nIGBhcmlhLW93bnNgIHJlLXBhcmVudHMgdGhlIHNlbGVjdCBvdmVybGF5IHNvIHRoYXQgaXQgd29ya3MgYWdhaW4uXG4gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2NvbXBvbmVudHMvaXNzdWVzLzIwNjk0XG4tLVx4M2VcbjxkaXYgY2RrLW92ZXJsYXktb3JpZ2luXG4gICAgIFthdHRyLmFyaWEtb3duc109InBhbmVsT3BlbiA/IGlkICsgXCctcGFuZWxcJyA6IG51bGwiXG4gICAgIGNsYXNzPSJtYXQtc2VsZWN0LXRyaWdnZXIiXG4gICAgIChjbGljayk9InRvZ2dsZSgpIlxuICAgICAjb3JpZ2luPSJjZGtPdmVybGF5T3JpZ2luIlxuICAgICAjdHJpZ2dlcj5cbiAgPGRpdiBjbGFzcz0ibWF0LXNlbGVjdC12YWx1ZSIgW25nU3dpdGNoXT0iZW1wdHkiIFthdHRyLmlkXT0iX3ZhbHVlSWQiPlxuICAgIDxzcGFuIGNsYXNzPSJtYXQtc2VsZWN0LXBsYWNlaG9sZGVyIG1hdC1zZWxlY3QtbWluLWxpbmUiICpuZ1N3aXRjaENhc2U9InRydWUiPnt7cGxhY2Vob2xkZXJ9fTwvc3Bhbj5cbiAgICA8c3BhbiBjbGFzcz0ibWF0LXNlbGVjdC12YWx1ZS10ZXh0IiAqbmdTd2l0Y2hDYXNlPSJmYWxzZSIgW25nU3dpdGNoXT0iISFjdXN0b21UcmlnZ2VyIj5cbiAgICAgIDxzcGFuIGNsYXNzPSJtYXQtc2VsZWN0LW1pbi1saW5lIiAqbmdTd2l0Y2hEZWZhdWx0Pnt7dHJpZ2dlclZhbHVlfX08L3NwYW4+XG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9Im1hdC1zZWxlY3QtdHJpZ2dlciIgKm5nU3dpdGNoQ2FzZT0idHJ1ZSI+PC9uZy1jb250ZW50PlxuICAgIDwvc3Bhbj5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz0ibWF0LXNlbGVjdC1hcnJvdy13cmFwcGVyIj48ZGl2IGNsYXNzPSJtYXQtc2VsZWN0LWFycm93Ij48L2Rpdj48L2Rpdj5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGVcbiAgY2RrLWNvbm5lY3RlZC1vdmVybGF5XG4gIGNka0Nvbm5lY3RlZE92ZXJsYXlMb2NrUG9zaXRpb25cbiAgY2RrQ29ubmVjdGVkT3ZlcmxheUhhc0JhY2tkcm9wXG4gIGNka0Nvbm5lY3RlZE92ZXJsYXlCYWNrZHJvcENsYXNzPSJjZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcCJcbiAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlQYW5lbENsYXNzXT0iX292ZXJsYXlQYW5lbENsYXNzIlxuICBbY2RrQ29ubmVjdGVkT3ZlcmxheVNjcm9sbFN0cmF0ZWd5XT0iX3Njcm9sbFN0cmF0ZWd5IlxuICBbY2RrQ29ubmVjdGVkT3ZlcmxheU9yaWdpbl09Im9yaWdpbiJcbiAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlPcGVuXT0icGFuZWxPcGVuIlxuICBbY2RrQ29ubmVjdGVkT3ZlcmxheVBvc2l0aW9uc109Il9wb3NpdGlvbnMiXG4gIFtjZGtDb25uZWN0ZWRPdmVybGF5TWluV2lkdGhdPSJfdHJpZ2dlclJlY3Q/LndpZHRoISJcbiAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlPZmZzZXRZXT0iX29mZnNldFkiXG4gIChiYWNrZHJvcENsaWNrKT0iY2xvc2UoKSJcbiAgKGF0dGFjaCk9Il9vbkF0dGFjaGVkKCkiXG4gIChkZXRhY2gpPSJjbG9zZSgpIj5cbiAgPGRpdiBjbGFzcz0ibWF0LXNlbGVjdC1wYW5lbC13cmFwIiBbQHRyYW5zZm9ybVBhbmVsV3JhcF0+XG4gICAgPGRpdlxuICAgICAgI3BhbmVsXG4gICAgICByb2xlPSJsaXN0Ym94IlxuICAgICAgdGFiaW5kZXg9Ii0xIlxuICAgICAgY2xhc3M9Im1hdC1zZWxlY3QtcGFuZWwge3sgX2dldFBhbmVsVGhlbWUoKSB9fSJcbiAgICAgIFthdHRyLmlkXT0iaWQgKyBcJy1wYW5lbFwnIlxuICAgICAgW2F0dHIuYXJpYS1tdWx0aXNlbGVjdGFibGVdPSJtdWx0aXBsZSJcbiAgICAgIFthdHRyLmFyaWEtbGFiZWxdPSJhcmlhTGFiZWwgfHwgbnVsbCJcbiAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09Il9nZXRQYW5lbEFyaWFMYWJlbGxlZGJ5KCkiXG4gICAgICBbbmdDbGFzc109InBhbmVsQ2xhc3MiXG4gICAgICBbQHRyYW5zZm9ybVBhbmVsXT0ibXVsdGlwbGUgPyBcJ3Nob3dpbmctbXVsdGlwbGVcJyA6IFwnc2hvd2luZ1wnIlxuICAgICAgKEB0cmFuc2Zvcm1QYW5lbC5kb25lKT0iX3BhbmVsRG9uZUFuaW1hdGluZ1N0cmVhbS5uZXh0KCRldmVudC50b1N0YXRlKSJcbiAgICAgIFtzdHlsZS50cmFuc2Zvcm1PcmlnaW5dPSJfdHJhbnNmb3JtT3JpZ2luIlxuICAgICAgW3N0eWxlLmZvbnQtc2l6ZS5weF09Il90cmlnZ2VyRm9udFNpemUiXG4gICAgICAoa2V5ZG93bik9Il9oYW5kbGVLZXlkb3duKCRldmVudCkiPlxuICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4nLGlucHV0czpbImRpc2FibGVkIiwiZGlzYWJsZVJpcHBsZSIsInRhYkluZGV4Il0sZW5jYXBzdWxhdGlvbjpXbi5Ob25lLGNoYW5nZURldGVjdGlvbjpqbi5PblB1c2gsaG9zdDp7cm9sZToiY29tYm9ib3giLCJhcmlhLWF1dG9jb21wbGV0ZSI6Im5vbmUiLCJhcmlhLWhhc3BvcHVwIjoidHJ1ZSIsY2xhc3M6Im1hdC1zZWxlY3QiLCJbYXR0ci5pZF0iOiJpZCIsIlthdHRyLnRhYmluZGV4XSI6InRhYkluZGV4IiwiW2F0dHIuYXJpYS1jb250cm9sc10iOidwYW5lbE9wZW4gPyBpZCArICItcGFuZWwiIDogbnVsbCcsIlthdHRyLmFyaWEtZXhwYW5kZWRdIjoicGFuZWxPcGVuIiwiW2F0dHIuYXJpYS1sYWJlbF0iOiJhcmlhTGFiZWwgfHwgbnVsbCIsIlthdHRyLmFyaWEtcmVxdWlyZWRdIjoicmVxdWlyZWQudG9TdHJpbmcoKSIsIlthdHRyLmFyaWEtZGlzYWJsZWRdIjoiZGlzYWJsZWQudG9TdHJpbmcoKSIsIlthdHRyLmFyaWEtaW52YWxpZF0iOiJlcnJvclN0YXRlIiwiW2F0dHIuYXJpYS1kZXNjcmliZWRieV0iOiJfYXJpYURlc2NyaWJlZGJ5IHx8IG51bGwiLCJbYXR0ci5hcmlhLWFjdGl2ZWRlc2NlbmRhbnRdIjoiX2dldEFyaWFBY3RpdmVEZXNjZW5kYW50KCkiLCJbY2xhc3MubWF0LXNlbGVjdC1kaXNhYmxlZF0iOiJkaXNhYmxlZCIsIltjbGFzcy5tYXQtc2VsZWN0LWludmFsaWRdIjoiZXJyb3JTdGF0ZSIsIltjbGFzcy5tYXQtc2VsZWN0LXJlcXVpcmVkXSI6InJlcXVpcmVkIiwiW2NsYXNzLm1hdC1zZWxlY3QtZW1wdHldIjoiZW1wdHkiLCJbY2xhc3MubWF0LXNlbGVjdC1tdWx0aXBsZV0iOiJtdWx0aXBsZSIsIihrZXlkb3duKSI6Il9oYW5kbGVLZXlkb3duKCRldmVudCkiLCIoZm9jdXMpIjoiX29uRm9jdXMoKSIsIihibHVyKSI6Il9vbkJsdXIoKSJ9LGFuaW1hdGlvbnM6W3BZLnRyYW5zZm9ybVBhbmVsV3JhcCxwWS50cmFuc2Zvcm1QYW5lbF0scHJvdmlkZXJzOlt7cHJvdmlkZTppVSx1c2VFeGlzdGluZzpPWX0se3Byb3ZpZGU6aEwsdXNlRXhpc3Rpbmc6T1l9XSxzdHlsZXM6WycubWF0LXNlbGVjdHtkaXNwbGF5OmlubGluZS1ibG9jazt3aWR0aDoxMDAlO291dGxpbmU6bm9uZX0ubWF0LXNlbGVjdC10cmlnZ2Vye2Rpc3BsYXk6aW5saW5lLXRhYmxlO2N1cnNvcjpwb2ludGVyO3Bvc2l0aW9uOnJlbGF0aXZlO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LXNlbGVjdC1kaXNhYmxlZCAubWF0LXNlbGVjdC10cmlnZ2Vyey13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTstbW96LXVzZXItc2VsZWN0Om5vbmU7LW1zLXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZTtjdXJzb3I6ZGVmYXVsdH0ubWF0LXNlbGVjdC12YWx1ZXtkaXNwbGF5OnRhYmxlLWNlbGw7bWF4LXdpZHRoOjA7d2lkdGg6MTAwJTtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpczt3aGl0ZS1zcGFjZTpub3dyYXB9Lm1hdC1zZWxlY3QtdmFsdWUtdGV4dHt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXN9Lm1hdC1zZWxlY3QtYXJyb3ctd3JhcHBlcntkaXNwbGF5OnRhYmxlLWNlbGw7dmVydGljYWwtYWxpZ246bWlkZGxlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwgLm1hdC1zZWxlY3QtYXJyb3ctd3JhcHBlcnt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtNTAlKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lIC5tYXQtc2VsZWN0LWFycm93LXdyYXBwZXJ7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTI1JSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utc3RhbmRhcmQubWF0LWZvcm0tZmllbGQtaGFzLWxhYmVsIC5tYXQtc2VsZWN0Om5vdCgubWF0LXNlbGVjdC1lbXB0eSkgLm1hdC1zZWxlY3QtYXJyb3ctd3JhcHBlcnt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtNTAlKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1zdGFuZGFyZCAubWF0LXNlbGVjdC5tYXQtc2VsZWN0LWVtcHR5IC5tYXQtc2VsZWN0LWFycm93LXdyYXBwZXJ7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSl9Ll9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utc3RhbmRhcmQgLm1hdC1zZWxlY3QubWF0LXNlbGVjdC1lbXB0eSAubWF0LXNlbGVjdC1hcnJvdy13cmFwcGVye3RyYW5zaXRpb246bm9uZX0ubWF0LXNlbGVjdC1hcnJvd3t3aWR0aDowO2hlaWdodDowO2JvcmRlci1sZWZ0OjVweCBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItcmlnaHQ6NXB4IHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci10b3A6NXB4IHNvbGlkO21hcmdpbjowIDRweH0ubWF0LXNlbGVjdC1wYW5lbC13cmFwe2ZsZXgtYmFzaXM6MTAwJX0ubWF0LXNlbGVjdC1wYW5lbHttaW4td2lkdGg6MTEycHg7bWF4LXdpZHRoOjI4MHB4O292ZXJmbG93OmF1dG87LXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6dG91Y2g7cGFkZGluZy10b3A6MDtwYWRkaW5nLWJvdHRvbTowO21heC1oZWlnaHQ6MjU2cHg7bWluLXdpZHRoOjEwMCU7Ym9yZGVyLXJhZGl1czo0cHg7b3V0bGluZTowfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1zZWxlY3QtcGFuZWx7b3V0bGluZTpzb2xpZCAxcHh9Lm1hdC1zZWxlY3QtcGFuZWwgLm1hdC1vcHRncm91cC1sYWJlbCwubWF0LXNlbGVjdC1wYW5lbCAubWF0LW9wdGlvbntmb250LXNpemU6aW5oZXJpdDtsaW5lLWhlaWdodDozZW07aGVpZ2h0OjNlbX0ubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtc2VsZWN0Om5vdCgubWF0LWZvcm0tZmllbGQtZGlzYWJsZWQpIC5tYXQtZm9ybS1maWVsZC1mbGV4e2N1cnNvcjpwb2ludGVyfS5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1zZWxlY3QgLm1hdC1mb3JtLWZpZWxkLWxhYmVse3dpZHRoOmNhbGMoMTAwJSAtIDE4cHgpfS5tYXQtc2VsZWN0LXBsYWNlaG9sZGVye3RyYW5zaXRpb246Y29sb3IgNDAwbXMgMTMzLjMzMzMzMzMzMzNtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKX0uX21hdC1hbmltYXRpb24tbm9vcGFibGUgLm1hdC1zZWxlY3QtcGxhY2Vob2xkZXJ7dHJhbnNpdGlvbjpub25lfS5tYXQtZm9ybS1maWVsZC1oaWRlLXBsYWNlaG9sZGVyIC5tYXQtc2VsZWN0LXBsYWNlaG9sZGVye2NvbG9yOnRyYW5zcGFyZW50Oy13ZWJraXQtdGV4dC1maWxsLWNvbG9yOnRyYW5zcGFyZW50O3RyYW5zaXRpb246bm9uZTtkaXNwbGF5OmJsb2NrfS5tYXQtc2VsZWN0LW1pbi1saW5lOmVtcHR5OjpiZWZvcmV7Y29udGVudDoiICI7d2hpdGUtc3BhY2U6cHJlO3dpZHRoOjFweDtkaXNwbGF5OmlubGluZS1ibG9jaztvcGFjaXR5OjB9XG4nXX1dfV0sbnVsbCx7b3B0aW9uczpbe3R5cGU6b3IsYXJnczpbUEwse2Rlc2NlbmRhbnRzOiEwfV19XSxvcHRpb25Hcm91cHM6W3t0eXBlOm9yLGFyZ3M6W0NMLHtkZXNjZW5kYW50czohMH1dfV0sY3VzdG9tVHJpZ2dlcjpbe3R5cGU6aXIsYXJnczpbTVldfV19KTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNsYXNzIFBZe31mdW5jdGlvbiB3WSh0LGUpe2lmKDEmdCl7Y29uc3QgdD13ZigpO0NmKDAsInNwYW4iLDUpLFJmKCJjbGljayIsKGZ1bmN0aW9uIGUobil7UGkodCk7Y29uc3Qgbz16ZigpLiRpbXBsaWNpdDtyZXR1cm4gemYoKS5vbkFjdGl2ZVBsdWdpblNlbGVjdGlvbihuLG8uaWQpfSkpLFB1KDEpLE1mKCl9aWYoMiZ0KXtjb25zdCB0PXpmKCkuJGltcGxpY2l0O3ltKCJkYXRhLXBsdWdpbi1pZCIsdC5pZCksRGMoMSksa3UoIiAiLHQudGFiX25hbWUsIiAiKX19ZnVuY3Rpb24ga1kodCxlKXtpZigxJnQmJihDZigwLCJtYXQtdGFiIiwzKSxIbSgxLHdZLDIsMiwibmctdGVtcGxhdGUiLDQpLE1mKCkpLDImdCl7YmYoImRpc2FibGVkIiwhZS4kaW1wbGljaXQuZW5hYmxlZCl9fWZ1bmN0aW9uIFNZKHQsZSl7aWYoMSZ0JiYoQ2YoMCwibWF0LW9wdGlvbiIsOSksUHUoMSksTWYoKSksMiZ0KXtjb25zdCB0PWUuJGltcGxpY2l0O2JmKCJ2YWx1ZSIsdC5pZCkseW0oImRhdGEtcGx1Z2luLWlkIix0LmlkKSxEYygxKSxrdSgiICIsdC50YWJfbmFtZSwiICIpfX1mdW5jdGlvbiBEWSh0LGUpe2lmKDEmdCl7Y29uc3QgdD13ZigpO0NmKDAsIm1hdC1mb3JtLWZpZWxkIiw2KSxDZigxLCJtYXQtbGFiZWwiKSxQdSgyLCJJbmFjdGl2ZSIpLE1mKCksQ2YoMywibWF0LXNlbGVjdCIsNyksUmYoInNlbGVjdGlvbkNoYW5nZSIsKGZ1bmN0aW9uIGUobil7UGkodCk7cmV0dXJuIHpmKCkub25EaXNhYmxlZFBsdWdpblNlbGVjdGlvbkNoYW5nZWQobil9KSksSG0oNCxTWSwyLDMsIm1hdC1vcHRpb24iLDgpLE1mKCksTWYoKX1pZigyJnQpe2NvbnN0IHQ9emYoKTtEYygzKSxiZigidmFsdWUiLHQuc2VsZWN0ZWRQbHVnaW4pLERjKDEpLGJmKCJuZ0Zvck9mIix0LmRpc2FibGVkUGx1Z2lucyl9fVBZLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxQWSl9LFBZLsm1bW9kPWZvKHt0eXBlOlBZfSksUFkuybVpbmo9RG4oe3Byb3ZpZGVyczpbYlldLGltcG9ydHM6W1tyeCxvVixTTCxORl0sb0IsQ1UsU0wsTkZdfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihQWSxbe3R5cGU6TF8sYXJnczpbe2ltcG9ydHM6W3J4LG9WLFNMLE5GXSxleHBvcnRzOltvQixDVSxPWSx2WSxTTCxORl0sZGVjbGFyYXRpb25zOltPWSx2WV0scHJvdmlkZXJzOltiWV19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZ1byhQWSx7ZGVjbGFyYXRpb25zOmZ1bmN0aW9uKCl7cmV0dXJuW09ZLHZZXX0saW1wb3J0czpmdW5jdGlvbigpe3JldHVybltyeCxvVixTTCxORl19LGV4cG9ydHM6ZnVuY3Rpb24oKXtyZXR1cm5bb0IsQ1UsT1ksdlksU0wsTkZdfX0pO2NsYXNzIFJZe2NvbnN0cnVjdG9yKCl7dGhpcy5vblBsdWdpblNlbGVjdGlvbkNoYW5nZWQ9bmV3IFN5fWdldEFjdGl2ZVBsdWdpbkluZGV4KCl7cmV0dXJuIHRoaXMuYWN0aXZlUGx1Z2lucy5maW5kSW5kZXgoKCh7aWQ6dH0pPT50PT09dGhpcy5zZWxlY3RlZFBsdWdpbikpfW9uQWN0aXZlUGx1Z2luU2VsZWN0aW9uKHQsZSl7dC5zdG9wUHJvcGFnYXRpb24oKSx0aGlzLm9uUGx1Z2luU2VsZWN0aW9uQ2hhbmdlZC5lbWl0KGUpfW9uRGlzYWJsZWRQbHVnaW5TZWxlY3Rpb25DaGFuZ2VkKHQpe3RoaXMub25QbHVnaW5TZWxlY3Rpb25DaGFuZ2VkLmVtaXQodC52YWx1ZSl9fVJZLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxSWSl9LFJZLsm1Y21wPXNvKHt0eXBlOlJZLHNlbGVjdG9yczpbWyJwbHVnaW4tc2VsZWN0b3ItY29tcG9uZW50Il1dLGlucHV0czp7YWN0aXZlUGx1Z2luczoiYWN0aXZlUGx1Z2lucyIsZGlzYWJsZWRQbHVnaW5zOiJkaXNhYmxlZFBsdWdpbnMiLHNlbGVjdGVkUGx1Z2luOiJzZWxlY3RlZFBsdWdpbiJ9LG91dHB1dHM6e29uUGx1Z2luU2VsZWN0aW9uQ2hhbmdlZDoib25QbHVnaW5TZWxlY3Rpb25DaGFuZ2VkIn0sZGVjbHM6Myx2YXJzOjMsY29uc3RzOltbImFuaW1hdGlvbkR1cmF0aW9uIiwiMTAwbXMiLDEsImFjdGl2ZS1wbHVnaW4tbGlzdCIsMywic2VsZWN0ZWRJbmRleCJdLFszLCJkaXNhYmxlZCIsNCwibmdGb3IiLCJuZ0Zvck9mIl0sWyJmbG9hdExhYmVsIiwibmV2ZXIiLDQsIm5nSWYiXSxbMywiZGlzYWJsZWQiXSxbIm1hdC10YWItbGFiZWwiLCIiXSxbMSwicGx1Z2luLW5hbWUiLDMsImNsaWNrIl0sWyJmbG9hdExhYmVsIiwibmV2ZXIiXSxbMywidmFsdWUiLCJzZWxlY3Rpb25DaGFuZ2UiXSxbMywidmFsdWUiLDQsIm5nRm9yIiwibmdGb3JPZiJdLFszLCJ2YWx1ZSJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoQ2YoMCwibWF0LXRhYi1ncm91cCIsMCksSG0oMSxrWSwyLDEsIm1hdC10YWIiLDEpLE1mKCksSG0oMixEWSw1LDIsIm1hdC1mb3JtLWZpZWxkIiwyKSksMiZlJiYoYmYoInNlbGVjdGVkSW5kZXgiLG4uZ2V0QWN0aXZlUGx1Z2luSW5kZXgoKSksRGMoMSksYmYoIm5nRm9yT2YiLG4uYWN0aXZlUGx1Z2lucyksRGMoMSksYmYoIm5nSWYiLG4uZGlzYWJsZWRQbHVnaW5zLmxlbmd0aD4wKSl9LGRpcmVjdGl2ZXM6W1BqLHh2LFB2LGdqLG1qLF9VLGNVLE9ZLFBMXSxzdHlsZXM6WycubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTJweDtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1iYWRnZS1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo5cHh9Lm1hdC1iYWRnZS1sYXJnZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4fS5tYXQtaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWhlYWRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAyNHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE2cHgvMjhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE1cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjgzKS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1oNltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC42NykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtYm9keS1zdHJvbmdbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MCAwIDEycHh9Lm1hdC1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FwdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTJweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6MzAwIDExMnB4LzExMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wNWVtO21hcmdpbjowIDAgNTZweH0ubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNTZweC81NnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMmVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNDVweC80OHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMDVlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDM0cHgvNDBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgNjRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FyZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjBweH0ubWF0LWNhcmQtc3VidGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcmQtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2hlY2tib3gtbGF5b3V0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC10cmFpbGluZy1pY29uLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmUubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxOHB4fS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jYWxlbmRhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FsZW5kYXItYm9keVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEzcHh9Lm1hdC1jYWxlbmRhci1ib2R5LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgdGhbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWRpYWxvZy10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMTI1O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTUwJTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjVlbTt3aWR0aDoxLjVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW07bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi41ZW0gMDtib3JkZXItdG9wOi44NDM3NWVtIHNvbGlkIHRyYW5zcGFyZW50fS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3RvcDotMC44NDM3NWVtO3BhZGRpbmctdG9wOi44NDM3NWVtfS5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjc1JTttYXJnaW4tdG9wOi42NjY2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNzkxNjY2NjY2N2VtKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi40Mzc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAycHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyM2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMjgxMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi41NDE2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNjY2NjY2NjY2N2VtKX1AbWVkaWEgcHJpbnR7Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIyZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIxZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMmVtKSBzY2FsZSgwLjc1KX19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjI1ZW0gMCAuNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4wOTM3NWVtO21hcmdpbi10b3A6LTAuNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MWVtIDAgMWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjg0Mzc1ZW07bWFyZ2luLXRvcDotMC4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH1pbnB1dC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDotMC4wNjI1ZW19Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1wYWdlLXNpemVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4fS5tYXQtcmFkaW8tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3RbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbX0ubWF0LXNsaWRlLXRvZ2dsZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXN0ZXBwZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc3RlcC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtc3RlcC1zdWItbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0Om5vcm1hbH0ubWF0LXN0ZXAtbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtc3RlcC1sYWJlbC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdGFiLWdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjB9Lm1hdC10b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEwcHg7cGFkZGluZy10b3A6NnB4O3BhZGRpbmctYm90dG9tOjZweH0ubWF0LXRvb2x0aXAtaGFuZHNldFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7cGFkZGluZy10b3A6OHB4O3BhZGRpbmctYm90dG9tOjhweH0ubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTZweH0ubWF0LW9wdGdyb3VwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LXNpbXBsZS1zbmFja2Jhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4fS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbltfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MTtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRyZWVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbmVzdGVkLXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtc2l6ZToxNHB4fS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdOm5vdCg6ZW1wdHkpe3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApfS5tYXQtcmlwcGxlLm1hdC1yaXBwbGUtdW5ib3VuZGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzp2aXNpYmxlfS5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO2JvcmRlci1yYWRpdXM6NTAlO3BvaW50ZXItZXZlbnRzOm5vbmU7dHJhbnNpdGlvbjpvcGFjaXR5LHRyYW5zZm9ybSAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7dHJhbnNmb3JtOnNjYWxlKDApfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpub25lfS5jZGstdmlzdWFsbHktaGlkZGVuW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6MDtjbGlwOnJlY3QoMCAwIDAgMCk7aGVpZ2h0OjFweDttYXJnaW46LTFweDtvdmVyZmxvdzpoaWRkZW47cGFkZGluZzowO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjFweDt3aGl0ZS1zcGFjZTpub3dyYXA7b3V0bGluZTowOy13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BvaW50ZXItZXZlbnRzOm5vbmU7dG9wOjA7bGVmdDowO2hlaWdodDoxMDAlO3dpZHRoOjEwMCV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdOmVtcHR5e2Rpc3BsYXk6bm9uZX0uY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LXBhbmVbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3BvaW50ZXItZXZlbnRzOmF1dG87Ym94LXNpemluZzpib3JkZXItYm94O3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7bWF4LXdpZHRoOjEwMCU7bWF4LWhlaWdodDoxMDAlfS5jZGstb3ZlcmxheS1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7bGVmdDowO3JpZ2h0OjA7ei1pbmRleDoxMDAwO3BvaW50ZXItZXZlbnRzOmF1dG87LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50O3RyYW5zaXRpb246b3BhY2l0eSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKTtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5Oi42fS5jZGstb3ZlcmxheS1kYXJrLWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjMyKX0uY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTowfS5jZGstb3ZlcmxheS1jb25uZWN0ZWQtcG9zaXRpb24tYm91bmRpbmctYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjttaW4td2lkdGg6MXB4O21pbi1oZWlnaHQ6MXB4fS5jZGstZ2xvYmFsLXNjcm9sbGJsb2NrW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt3aWR0aDoxMDAlO292ZXJmbG93LXk6c2Nyb2xsfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZVtfbmdjb250ZW50LSVDT01QJV17cmVzaXplOm5vbmV9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZ1tfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6YXV0byAhaW1wb3J0YW50O292ZXJmbG93OmhpZGRlbiAhaW1wb3J0YW50fXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmctZmlyZWZveFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6MCAhaW1wb3J0YW50fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnR7fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5ke30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxse2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydCAwcyAxbXN9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06bm90KDotd2Via2l0LWF1dG9maWxsKXthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5kIDBzIDFtc30ubWF0LWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1tZGMtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX1bX25naG9zdC0lQ09NUCVde2FsaWduLWl0ZW1zOmNlbnRlcjtkaXNwbGF5OmZsZXg7ZmxleDoxIDEgYXV0bztmb250LXNpemU6MTRweDtoZWlnaHQ6MTAwJTtvdmVyZmxvdzpoaWRkZW59bWF0LWZvcm0tZmllbGRbX25nY29udGVudC0lQ09NUCVde2ZsZXg6MCAwO21hcmdpbi10b3A6NXB4O3dpZHRoOjEzMHB4fW1hdC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIG1hdC1zZWxlY3RbX25nY29udGVudC0lQ09NUCVdLCBtYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo1MDA7dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlfS5hY3RpdmUtcGx1Z2luLWxpc3RbX25nY29udGVudC0lQ09NUCVde2FsaWduLXNlbGY6c3RyZXRjaDtmbGV4OjEgMSBhdXRvO292ZXJmbG93OmhpZGRlbn0ucGx1Z2luLW5hbWVbX25nY29udGVudC0lQ09NUCVde2FsaWduLWl0ZW1zOmNlbnRlcjtkaXNwbGF5OmlubGluZS1mbGV4O2hlaWdodDoxMDAlO2p1c3RpZnktY29udGVudDpjZW50ZXI7cGFkZGluZzowIDEycHg7d2lkdGg6MTAwJX1bX25naG9zdC0lQ09NUCVdICAgICAuYWN0aXZlLXBsdWdpbi1saXN0Lm1hdC1wcmltYXJ5IC5tYXQtdGFiLWxpc3QgLm1hdC1pbmstYmFye2JhY2tncm91bmQtY29sb3I6Y3VycmVudENvbG9yfVtfbmdob3N0LSVDT01QJV0gICAgIC5hY3RpdmUtcGx1Z2luLWxpc3QgLm1hdC10YWItbGFiZWwsIFtfbmdob3N0LSVDT01QJV0gICAgIC5hY3RpdmUtcGx1Z2luLWxpc3QgLm1hdC10YWItbGlua3tjb2xvcjppbmhlcml0O29wYWNpdHk6Ljd9W19uZ2hvc3QtJUNPTVAlXSAgICAgLmFjdGl2ZS1wbHVnaW4tbGlzdCAubWF0LXRhYi1sYWJlbC5tYXQtdGFiLWxhYmVsLWFjdGl2ZSwgW19uZ2hvc3QtJUNPTVAlXSAgICAgLmFjdGl2ZS1wbHVnaW4tbGlzdCAubWF0LXRhYi1saW5rLm1hdC10YWItbGFiZWwtYWN0aXZle29wYWNpdHk6MX1bX25naG9zdC0lQ09NUCVdICAgICAuYWN0aXZlLXBsdWdpbi1saXN0IC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb257Ym9yZGVyLWNvbG9yOmN1cnJlbnRDb2xvcn1bX25naG9zdC0lQ09NUCVdICAgICAuYWN0aXZlLXBsdWdpbi1saXN0IC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVke3Zpc2liaWxpdHk6aGlkZGVufVtfbmdob3N0LSVDT01QJV0gICAgIC5hY3RpdmUtcGx1Z2luLWxpc3QgLm1hdC10YWItZGlzYWJsZWR7ZGlzcGxheTpub25lfVtfbmdob3N0LSVDT01QJV0gICAgIC5hY3RpdmUtcGx1Z2luLWxpc3QgbWF0LXRhYi1saXN0LCBbX25naG9zdC0lQ09NUCVdICAgICAuYWN0aXZlLXBsdWdpbi1saXN0IC5tYXQtdGFiLWhlYWRlciwgW19uZ2hvc3QtJUNPTVAlXSAgICAgLmFjdGl2ZS1wbHVnaW4tbGlzdCAubWF0LXRhYi1sYWJlbHMsIFtfbmdob3N0LSVDT01QJV0gICAgIC5hY3RpdmUtcGx1Z2luLWxpc3QgLm1hdC10YWItbGFiZWx7aGVpZ2h0OjEwMCV9W19uZ2hvc3QtJUNPTVAlXSAgICAgLmFjdGl2ZS1wbHVnaW4tbGlzdCAubWF0LXRhYi1sYWJlbHttaW4td2lkdGg6NDhweDtwYWRkaW5nOjA7dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlfVtfbmdob3N0LSVDT01QJV0gICAgIC5hY3RpdmUtcGx1Z2luLWxpc3QgLm1hdC10YWItbGFiZWwtY29udGVudHtoZWlnaHQ6MTAwJX1bX25naG9zdC0lQ09NUCVdICAgICAuYWN0aXZlLXBsdWdpbi1saXN0IG1hdC10YWItaGVhZGVyIC5tYXQtdGFiLWxpc3R7cGFkZGluZzowIDM2cHh9W19uZ2hvc3QtJUNPTVAlXSAgICAgLmFjdGl2ZS1wbHVnaW4tbGlzdCBtYXQtdGFiLWhlYWRlcj46Zmlyc3QtY2hpbGQsIFtfbmdob3N0LSVDT01QJV0gICAgIC5hY3RpdmUtcGx1Z2luLWxpc3QgbWF0LXRhYi1oZWFkZXI+Lm1hdC10YWItbGFiZWwtY29udGFpbmVyLCBbX25naG9zdC0lQ09NUCVdICAgICAuYWN0aXZlLXBsdWdpbi1saXN0IG1hdC10YWItaGVhZGVyPjpsYXN0LWNoaWxke2JvdHRvbTowO3Bvc2l0aW9uOmFic29sdXRlO3RvcDowfVtfbmdob3N0LSVDT01QJV0gICAgIC5hY3RpdmUtcGx1Z2luLWxpc3QgbWF0LXRhYi1oZWFkZXI+OmZpcnN0LWNoaWxkLCBbX25naG9zdC0lQ09NUCVdICAgICAuYWN0aXZlLXBsdWdpbi1saXN0IG1hdC10YWItaGVhZGVyPi5tYXQtdGFiLWxhYmVsLWNvbnRhaW5lcntsZWZ0OjB9W19uZ2hvc3QtJUNPTVAlXSAgICAgLmFjdGl2ZS1wbHVnaW4tbGlzdCBtYXQtdGFiLWhlYWRlcj46bGFzdC1jaGlsZCwgW19uZ2hvc3QtJUNPTVAlXSAgICAgLmFjdGl2ZS1wbHVnaW4tbGlzdCBtYXQtdGFiLWhlYWRlcj4ubWF0LXRhYi1sYWJlbC1jb250YWluZXJ7cmlnaHQ6MH1bX25naG9zdC0lQ09NUCVdICAgICAuYWN0aXZlLXBsdWdpbi1saXN0IG1hdC10YWItaGVhZGVyPi5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9ue2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH1ib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAgIC5hY3RpdmUtcGx1Z2luLWxpc3QgbWF0LXRhYi1oZWFkZXI+Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb257YmFja2dyb3VuZC1jb2xvcjojZWY2YzAwfSddfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihSWSxbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJwbHVnaW4tc2VsZWN0b3ItY29tcG9uZW50Iix0ZW1wbGF0ZVVybDoiLi9wbHVnaW5fc2VsZWN0b3JfY29tcG9uZW50Lm5nLmh0bWwiLHN0eWxlVXJsczpbIi4vcGx1Z2luX3NlbGVjdG9yX2NvbXBvbmVudC5jc3MiXX1dfV0sbnVsbCx7YWN0aXZlUGx1Z2luczpbe3R5cGU6Ul99XSxkaXNhYmxlZFBsdWdpbnM6W3t0eXBlOlJffV0sc2VsZWN0ZWRQbHVnaW46W3t0eXBlOlJffV0sb25QbHVnaW5TZWxlY3Rpb25DaGFuZ2VkOlt7dHlwZTpFX31dfSk7Y29uc3QgRVk9YlMoblQsKHQ9Pk9iamVjdC5rZXlzKHQpLm1hcCgoZT0+T2JqZWN0LmFzc2lnbih7fSx7aWQ6ZX0sdFtlXSkpKSkpLEFZPWJTKEVZLCh0PT50LmZpbHRlcigodD0+IXQuZW5hYmxlZCkpKSk7Y2xhc3MgVFl7Y29uc3RydWN0b3IodCl7dGhpcy5zdG9yZT10LHRoaXMuYWN0aXZlUGx1Z2luJD10aGlzLnN0b3JlLnBpcGUoclMoZVQpKSx0aGlzLnBsdWdpbnMkPXRoaXMuc3RvcmUucGlwZShyUyhFWSkpLHRoaXMuZGlzYWJsZWRQbHVnaW5zJD10aGlzLnN0b3JlLnBpcGUoclMoQVkpKX1vblBsdWdpblNlbGVjdGlvbkNoYW5nZSh0KXt0aGlzLnN0b3JlLmRpc3BhdGNoKFpFKHtwbHVnaW46dH0pKX19ZnVuY3Rpb24gTlkodCxlKXt9VFkuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFRZKShnZihpUykpfSxUWS7JtWNtcD1zbyh7dHlwZTpUWSxzZWxlY3RvcnM6W1sicGx1Z2luLXNlbGVjdG9yIl1dLGRlY2xzOjQsdmFyczo5LGNvbnN0czpbWzMsImFjdGl2ZVBsdWdpbnMiLCJkaXNhYmxlZFBsdWdpbnMiLCJzZWxlY3RlZFBsdWdpbiIsIm9uUGx1Z2luU2VsZWN0aW9uQ2hhbmdlZCJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoQ2YoMCwicGx1Z2luLXNlbGVjdG9yLWNvbXBvbmVudCIsMCksUmYoIm9uUGx1Z2luU2VsZWN0aW9uQ2hhbmdlZCIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4ub25QbHVnaW5TZWxlY3Rpb25DaGFuZ2UoZSl9KSksX3koMSwiYXN5bmMiKSxfeSgyLCJhc3luYyIpLF95KDMsImFzeW5jIiksTWYoKSksMiZlJiZiZigiYWN0aXZlUGx1Z2lucyIsQ3koMSwzLG4ucGx1Z2lucyQpKSgiZGlzYWJsZWRQbHVnaW5zIixDeSgyLDUsbi5kaXNhYmxlZFBsdWdpbnMkKSkoInNlbGVjdGVkUGx1Z2luIixDeSgzLDcsbi5hY3RpdmVQbHVnaW4kKSl9LGRpcmVjdGl2ZXM6W1JZXSxwaXBlczpbVnZdLGVuY2Fwc3VsYXRpb246Mn0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoVFksW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoicGx1Z2luLXNlbGVjdG9yIix0ZW1wbGF0ZTonXG4gICAgPHBsdWdpbi1zZWxlY3Rvci1jb21wb25lbnRcbiAgICAgIFthY3RpdmVQbHVnaW5zXT0icGx1Z2lucyQgfCBhc3luYyJcbiAgICAgIFtkaXNhYmxlZFBsdWdpbnNdPSJkaXNhYmxlZFBsdWdpbnMkIHwgYXN5bmMiXG4gICAgICBbc2VsZWN0ZWRQbHVnaW5dPSJhY3RpdmVQbHVnaW4kIHwgYXN5bmMiXG4gICAgICAob25QbHVnaW5TZWxlY3Rpb25DaGFuZ2VkKT0ib25QbHVnaW5TZWxlY3Rpb25DaGFuZ2UoJGV2ZW50KSJcbiAgICA+PC9wbHVnaW4tc2VsZWN0b3ItY29tcG9uZW50PlxuICAnfV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6aVN9XX0pLG51bGwpO2NsYXNzIHpZe2NvbnN0cnVjdG9yKCl7dGhpcy5yb2xlPSJkaWFsb2ciLHRoaXMucGFuZWxDbGFzcz0iIix0aGlzLmhhc0JhY2tkcm9wPSEwLHRoaXMuYmFja2Ryb3BDbGFzcz0iIix0aGlzLmRpc2FibGVDbG9zZT0hMSx0aGlzLndpZHRoPSIiLHRoaXMuaGVpZ2h0PSIiLHRoaXMubWF4V2lkdGg9IjgwdnciLHRoaXMuZGF0YT1udWxsLHRoaXMuYXJpYURlc2NyaWJlZEJ5PW51bGwsdGhpcy5hcmlhTGFiZWxsZWRCeT1udWxsLHRoaXMuYXJpYUxhYmVsPW51bGwsdGhpcy5hdXRvRm9jdXM9ITAsdGhpcy5yZXN0b3JlRm9jdXM9ITAsdGhpcy5jbG9zZU9uTmF2aWdhdGlvbj0hMH19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NvbnN0IElZPXtkaWFsb2dDb250YWluZXI6eE8oImRpYWxvZ0NvbnRhaW5lciIsW2tPKCJ2b2lkLCBleGl0Iix3Tyh7b3BhY2l0eTowLHRyYW5zZm9ybToic2NhbGUoMC43KSJ9KSksa08oImVudGVyIix3Tyh7dHJhbnNmb3JtOiJub25lIn0pKSxETygiKiA9PiBlbnRlciIsT08oIjE1MG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpIix3Tyh7dHJhbnNmb3JtOiJub25lIixvcGFjaXR5OjF9KSkpLERPKCIqID0+IHZvaWQsICogPT4gZXhpdCIsT08oIjc1bXMgY3ViaWMtYmV6aWVyKDAuNCwgMC4wLCAwLjIsIDEpIix3Tyh7b3BhY2l0eTowfSkpKV0pfTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovZnVuY3Rpb24gSFkoKXt0aHJvdyBFcnJvcigiQXR0ZW1wdGluZyB0byBhdHRhY2ggZGlhbG9nIGNvbnRlbnQgYWZ0ZXIgY29udGVudCBpcyBhbHJlYWR5IGF0dGFjaGVkIil9Y2xhc3MgRlkgZXh0ZW5kcyBkQntjb25zdHJ1Y3Rvcih0LGUsbixvLGksYSl7c3VwZXIoKSx0aGlzLl9lbGVtZW50UmVmPXQsdGhpcy5fZm9jdXNUcmFwRmFjdG9yeT1lLHRoaXMuX2NoYW5nZURldGVjdG9yUmVmPW4sdGhpcy5fY29uZmlnPWksdGhpcy5fZm9jdXNNb25pdG9yPWEsdGhpcy5fYW5pbWF0aW9uU3RhdGVDaGFuZ2VkPW5ldyBTeSx0aGlzLl9lbGVtZW50Rm9jdXNlZEJlZm9yZURpYWxvZ1dhc09wZW5lZD1udWxsLHRoaXMuX2Nsb3NlSW50ZXJhY3Rpb25UeXBlPW51bGwsdGhpcy5hdHRhY2hEb21Qb3J0YWw9dD0+KHRoaXMuX3BvcnRhbE91dGxldC5oYXNBdHRhY2hlZCgpJiYoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJkhZKCksdGhpcy5fcG9ydGFsT3V0bGV0LmF0dGFjaERvbVBvcnRhbCh0KSksdGhpcy5fYXJpYUxhYmVsbGVkQnk9aS5hcmlhTGFiZWxsZWRCeXx8bnVsbCx0aGlzLl9kb2N1bWVudD1vfV9pbml0aWFsaXplV2l0aEF0dGFjaGVkQ29udGVudCgpe3RoaXMuX3NldHVwRm9jdXNUcmFwKCksdGhpcy5fY2FwdHVyZVByZXZpb3VzbHlGb2N1c2VkRWxlbWVudCgpLHRoaXMuX2ZvY3VzRGlhbG9nQ29udGFpbmVyKCl9YXR0YWNoQ29tcG9uZW50UG9ydGFsKHQpe3JldHVybiB0aGlzLl9wb3J0YWxPdXRsZXQuaGFzQXR0YWNoZWQoKSYmKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZIWSgpLHRoaXMuX3BvcnRhbE91dGxldC5hdHRhY2hDb21wb25lbnRQb3J0YWwodCl9YXR0YWNoVGVtcGxhdGVQb3J0YWwodCl7cmV0dXJuIHRoaXMuX3BvcnRhbE91dGxldC5oYXNBdHRhY2hlZCgpJiYoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJkhZKCksdGhpcy5fcG9ydGFsT3V0bGV0LmF0dGFjaFRlbXBsYXRlUG9ydGFsKHQpfV9yZWNhcHR1cmVGb2N1cygpe2lmKCF0aGlzLl9jb250YWluc0ZvY3VzKCkpeyghdGhpcy5fY29uZmlnLmF1dG9Gb2N1c3x8IXRoaXMuX2ZvY3VzVHJhcC5mb2N1c0luaXRpYWxFbGVtZW50KCkpJiZ0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKX19X3RyYXBGb2N1cygpe3RoaXMuX2NvbmZpZy5hdXRvRm9jdXM/dGhpcy5fZm9jdXNUcmFwLmZvY3VzSW5pdGlhbEVsZW1lbnRXaGVuUmVhZHkoKTp0aGlzLl9jb250YWluc0ZvY3VzKCl8fHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5mb2N1cygpfV9yZXN0b3JlRm9jdXMoKXtjb25zdCB0PXRoaXMuX2VsZW1lbnRGb2N1c2VkQmVmb3JlRGlhbG9nV2FzT3BlbmVkO2lmKHRoaXMuX2NvbmZpZy5yZXN0b3JlRm9jdXMmJnQmJiJmdW5jdGlvbiI9PXR5cGVvZiB0LmZvY3VzKXtjb25zdCBlPU1IKCksbj10aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7ZSYmZSE9PXRoaXMuX2RvY3VtZW50LmJvZHkmJmUhPT1uJiYhbi5jb250YWlucyhlKXx8KHRoaXMuX2ZvY3VzTW9uaXRvcj8odGhpcy5fZm9jdXNNb25pdG9yLmZvY3VzVmlhKHQsdGhpcy5fY2xvc2VJbnRlcmFjdGlvblR5cGUpLHRoaXMuX2Nsb3NlSW50ZXJhY3Rpb25UeXBlPW51bGwpOnQuZm9jdXMoKSl9dGhpcy5fZm9jdXNUcmFwJiZ0aGlzLl9mb2N1c1RyYXAuZGVzdHJveSgpfV9zZXR1cEZvY3VzVHJhcCgpe3RoaXMuX2ZvY3VzVHJhcD10aGlzLl9mb2N1c1RyYXBGYWN0b3J5LmNyZWF0ZSh0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpfV9jYXB0dXJlUHJldmlvdXNseUZvY3VzZWRFbGVtZW50KCl7dGhpcy5fZG9jdW1lbnQmJih0aGlzLl9lbGVtZW50Rm9jdXNlZEJlZm9yZURpYWxvZ1dhc09wZW5lZD1NSCgpKX1fZm9jdXNEaWFsb2dDb250YWluZXIoKXt0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZm9jdXMmJnRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5mb2N1cygpfV9jb250YWluc0ZvY3VzKCl7Y29uc3QgdD10aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsZT1NSCgpO3JldHVybiB0PT09ZXx8dC5jb250YWlucyhlKX19RlkuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEZZKShnZihLaCksZ2YoV0gpLGdmKE9iKSxnZihzTSw4KSxnZih6WSksZ2YoZkYpKX0sRlkuybVkaXI9aG8oe3R5cGU6Rlksdmlld1F1ZXJ5OmZ1bmN0aW9uIHQoZSxuKXtpZigxJmUmJlZ5KHVCLDcpLDImZSl7bGV0IHQ7QnkodD1VeSgpKSYmKG4uX3BvcnRhbE91dGxldD10LmZpcnN0KX19LGZlYXR1cmVzOltRcF19KSxGWS5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOktofSx7dHlwZTpXSH0se3R5cGU6T2J9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpbc01dfV19LHt0eXBlOnpZfSx7dHlwZTpmRn1dLEZZLnByb3BEZWNvcmF0b3JzPXtfcG9ydGFsT3V0bGV0Olt7dHlwZTphcixhcmdzOlt1Qix7c3RhdGljOiEwfV19XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihGWSxbe3R5cGU6a199XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6S2h9LHt0eXBlOldIfSx7dHlwZTpPYn0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltzTV19XX0se3R5cGU6ell9LHt0eXBlOmZGfV19KSx7X3BvcnRhbE91dGxldDpbe3R5cGU6YXIsYXJnczpbdUIse3N0YXRpYzohMH1dfV19KTtjbGFzcyBMWSBleHRlbmRzIEZZe2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLl9zdGF0ZT0iZW50ZXIifV9vbkFuaW1hdGlvbkRvbmUoe3RvU3RhdGU6dCx0b3RhbFRpbWU6ZX0peyJlbnRlciI9PT10Pyh0aGlzLl90cmFwRm9jdXMoKSx0aGlzLl9hbmltYXRpb25TdGF0ZUNoYW5nZWQubmV4dCh7c3RhdGU6Im9wZW5lZCIsdG90YWxUaW1lOmV9KSk6ImV4aXQiPT09dCYmKHRoaXMuX3Jlc3RvcmVGb2N1cygpLHRoaXMuX2FuaW1hdGlvblN0YXRlQ2hhbmdlZC5uZXh0KHtzdGF0ZToiY2xvc2VkIix0b3RhbFRpbWU6ZX0pKX1fb25BbmltYXRpb25TdGFydCh7dG9TdGF0ZTp0LHRvdGFsVGltZTplfSl7ImVudGVyIj09PXQ/dGhpcy5fYW5pbWF0aW9uU3RhdGVDaGFuZ2VkLm5leHQoe3N0YXRlOiJvcGVuaW5nIix0b3RhbFRpbWU6ZX0pOiJleGl0IiE9PXQmJiJ2b2lkIiE9PXR8fHRoaXMuX2FuaW1hdGlvblN0YXRlQ2hhbmdlZC5uZXh0KHtzdGF0ZToiY2xvc2luZyIsdG90YWxUaW1lOmV9KX1fc3RhcnRFeGl0QW5pbWF0aW9uKCl7dGhpcy5fc3RhdGU9ImV4aXQiLHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpfX1MWS7JtWZhYz0oZnVuY3Rpb24oKXtsZXQgdDtyZXR1cm4gZnVuY3Rpb24gZShuKXtyZXR1cm4odHx8KHQ9VWEoTFkpKSkobnx8TFkpfX0pKCksTFkuybVjbXA9c28oe3R5cGU6TFksc2VsZWN0b3JzOltbIm1hdC1kaWFsb2ctY29udGFpbmVyIl1dLGhvc3RBdHRyczpbInRhYmluZGV4IiwiLTEiLCJhcmlhLW1vZGFsIiwidHJ1ZSIsMSwibWF0LWRpYWxvZy1jb250YWluZXIiXSxob3N0VmFyczo2LGhvc3RCaW5kaW5nczpmdW5jdGlvbiB0KGUsbil7MSZlJiZFZigiQGRpYWxvZ0NvbnRhaW5lci5zdGFydCIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4uX29uQW5pbWF0aW9uU3RhcnQoZSl9KSkoIkBkaWFsb2dDb250YWluZXIuZG9uZSIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4uX29uQW5pbWF0aW9uRG9uZShlKX0pKSwyJmUmJihjZygiaWQiLG4uX2lkKSx5bSgicm9sZSIsbi5fY29uZmlnLnJvbGUpKCJhcmlhLWxhYmVsbGVkYnkiLG4uX2NvbmZpZy5hcmlhTGFiZWw/bnVsbDpuLl9hcmlhTGFiZWxsZWRCeSkoImFyaWEtbGFiZWwiLG4uX2NvbmZpZy5hcmlhTGFiZWwpKCJhcmlhLWRlc2NyaWJlZGJ5IixuLl9jb25maWcuYXJpYURlc2NyaWJlZEJ5fHxudWxsKSxkZygiQGRpYWxvZ0NvbnRhaW5lciIsbi5fc3RhdGUpKX0sZmVhdHVyZXM6W1FwXSxkZWNsczoxLHZhcnM6MCxjb25zdHM6W1siY2RrUG9ydGFsT3V0bGV0IiwiIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJkhtKDAsTlksMCwwLCJuZy10ZW1wbGF0ZSIsMCl9LGRpcmVjdGl2ZXM6W3VCXSxzdHlsZXM6WyIubWF0LWRpYWxvZy1jb250YWluZXJ7ZGlzcGxheTpibG9jaztwYWRkaW5nOjI0cHg7Ym9yZGVyLXJhZGl1czo0cHg7Ym94LXNpemluZzpib3JkZXItYm94O292ZXJmbG93OmF1dG87b3V0bGluZTowO3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7bWluLWhlaWdodDppbmhlcml0O21heC1oZWlnaHQ6aW5oZXJpdH0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtZGlhbG9nLWNvbnRhaW5lcntvdXRsaW5lOnNvbGlkIDFweH0ubWF0LWRpYWxvZy1jb250ZW50e2Rpc3BsYXk6YmxvY2s7bWFyZ2luOjAgLTI0cHg7cGFkZGluZzowIDI0cHg7bWF4LWhlaWdodDo2NXZoO292ZXJmbG93OmF1dG87LXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6dG91Y2h9Lm1hdC1kaWFsb2ctdGl0bGV7bWFyZ2luOjAgMCAyMHB4O2Rpc3BsYXk6YmxvY2t9Lm1hdC1kaWFsb2ctYWN0aW9uc3twYWRkaW5nOjhweCAwO2Rpc3BsYXk6ZmxleDtmbGV4LXdyYXA6d3JhcDttaW4taGVpZ2h0OjUycHg7YWxpZ24taXRlbXM6Y2VudGVyO2JveC1zaXppbmc6Y29udGVudC1ib3g7bWFyZ2luLWJvdHRvbTotMjRweH0ubWF0LWRpYWxvZy1hY3Rpb25zW2FsaWduPWVuZF17anVzdGlmeS1jb250ZW50OmZsZXgtZW5kfS5tYXQtZGlhbG9nLWFjdGlvbnNbYWxpZ249Y2VudGVyXXtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyfS5tYXQtZGlhbG9nLWFjdGlvbnMgLm1hdC1idXR0b24tYmFzZSsubWF0LWJ1dHRvbi1iYXNlLC5tYXQtZGlhbG9nLWFjdGlvbnMgLm1hdC1tZGMtYnV0dG9uLWJhc2UrLm1hdC1tZGMtYnV0dG9uLWJhc2V7bWFyZ2luLWxlZnQ6OHB4fVtkaXI9cnRsXSAubWF0LWRpYWxvZy1hY3Rpb25zIC5tYXQtYnV0dG9uLWJhc2UrLm1hdC1idXR0b24tYmFzZSxbZGlyPXJ0bF0gLm1hdC1kaWFsb2ctYWN0aW9ucyAubWF0LW1kYy1idXR0b24tYmFzZSsubWF0LW1kYy1idXR0b24tYmFzZXttYXJnaW4tbGVmdDowO21hcmdpbi1yaWdodDo4cHh9XG4iXSxlbmNhcHN1bGF0aW9uOjIsZGF0YTp7YW5pbWF0aW9uOltJWS5kaWFsb2dDb250YWluZXJdfX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoTFksW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoibWF0LWRpYWxvZy1jb250YWluZXIiLHRlbXBsYXRlOiI8bmctdGVtcGxhdGUgY2RrUG9ydGFsT3V0bGV0PjwvbmctdGVtcGxhdGU+XG4iLGVuY2Fwc3VsYXRpb246V24uTm9uZSxjaGFuZ2VEZXRlY3Rpb246am4uRGVmYXVsdCxhbmltYXRpb25zOltJWS5kaWFsb2dDb250YWluZXJdLGhvc3Q6e2NsYXNzOiJtYXQtZGlhbG9nLWNvbnRhaW5lciIsdGFiaW5kZXg6Ii0xIiwiYXJpYS1tb2RhbCI6InRydWUiLCJbaWRdIjoiX2lkIiwiW2F0dHIucm9sZV0iOiJfY29uZmlnLnJvbGUiLCJbYXR0ci5hcmlhLWxhYmVsbGVkYnldIjoiX2NvbmZpZy5hcmlhTGFiZWwgPyBudWxsIDogX2FyaWFMYWJlbGxlZEJ5IiwiW2F0dHIuYXJpYS1sYWJlbF0iOiJfY29uZmlnLmFyaWFMYWJlbCIsIlthdHRyLmFyaWEtZGVzY3JpYmVkYnldIjoiX2NvbmZpZy5hcmlhRGVzY3JpYmVkQnkgfHwgbnVsbCIsIltAZGlhbG9nQ29udGFpbmVyXSI6Il9zdGF0ZSIsIihAZGlhbG9nQ29udGFpbmVyLnN0YXJ0KSI6Il9vbkFuaW1hdGlvblN0YXJ0KCRldmVudCkiLCIoQGRpYWxvZ0NvbnRhaW5lci5kb25lKSI6Il9vbkFuaW1hdGlvbkRvbmUoJGV2ZW50KSJ9LHN0eWxlczpbIi5tYXQtZGlhbG9nLWNvbnRhaW5lcntkaXNwbGF5OmJsb2NrO3BhZGRpbmc6MjRweDtib3JkZXItcmFkaXVzOjRweDtib3gtc2l6aW5nOmJvcmRlci1ib3g7b3ZlcmZsb3c6YXV0bztvdXRsaW5lOjA7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTttaW4taGVpZ2h0OmluaGVyaXQ7bWF4LWhlaWdodDppbmhlcml0fS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1kaWFsb2ctY29udGFpbmVye291dGxpbmU6c29saWQgMXB4fS5tYXQtZGlhbG9nLWNvbnRlbnR7ZGlzcGxheTpibG9jazttYXJnaW46MCAtMjRweDtwYWRkaW5nOjAgMjRweDttYXgtaGVpZ2h0OjY1dmg7b3ZlcmZsb3c6YXV0bzstd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzp0b3VjaH0ubWF0LWRpYWxvZy10aXRsZXttYXJnaW46MCAwIDIwcHg7ZGlzcGxheTpibG9ja30ubWF0LWRpYWxvZy1hY3Rpb25ze3BhZGRpbmc6OHB4IDA7ZGlzcGxheTpmbGV4O2ZsZXgtd3JhcDp3cmFwO21pbi1oZWlnaHQ6NTJweDthbGlnbi1pdGVtczpjZW50ZXI7Ym94LXNpemluZzpjb250ZW50LWJveDttYXJnaW4tYm90dG9tOi0yNHB4fS5tYXQtZGlhbG9nLWFjdGlvbnNbYWxpZ249ZW5kXXtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1lbmR9Lm1hdC1kaWFsb2ctYWN0aW9uc1thbGlnbj1jZW50ZXJde2p1c3RpZnktY29udGVudDpjZW50ZXJ9Lm1hdC1kaWFsb2ctYWN0aW9ucyAubWF0LWJ1dHRvbi1iYXNlKy5tYXQtYnV0dG9uLWJhc2UsLm1hdC1kaWFsb2ctYWN0aW9ucyAubWF0LW1kYy1idXR0b24tYmFzZSsubWF0LW1kYy1idXR0b24tYmFzZXttYXJnaW4tbGVmdDo4cHh9W2Rpcj1ydGxdIC5tYXQtZGlhbG9nLWFjdGlvbnMgLm1hdC1idXR0b24tYmFzZSsubWF0LWJ1dHRvbi1iYXNlLFtkaXI9cnRsXSAubWF0LWRpYWxvZy1hY3Rpb25zIC5tYXQtbWRjLWJ1dHRvbi1iYXNlKy5tYXQtbWRjLWJ1dHRvbi1iYXNle21hcmdpbi1sZWZ0OjA7bWFyZ2luLXJpZ2h0OjhweH1cbiJdfV19XSxudWxsLG51bGwpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KbGV0IEJZPTA7Y2xhc3MgVll7Y29uc3RydWN0b3IodCxlLG49Im1hdC1kaWFsb2ctIitCWSsrKXt0aGlzLl9vdmVybGF5UmVmPXQsdGhpcy5fY29udGFpbmVySW5zdGFuY2U9ZSx0aGlzLmlkPW4sdGhpcy5kaXNhYmxlQ2xvc2U9dGhpcy5fY29udGFpbmVySW5zdGFuY2UuX2NvbmZpZy5kaXNhYmxlQ2xvc2UsdGhpcy5fYWZ0ZXJPcGVuZWQ9bmV3IEIsdGhpcy5fYWZ0ZXJDbG9zZWQ9bmV3IEIsdGhpcy5fYmVmb3JlQ2xvc2VkPW5ldyBCLHRoaXMuX3N0YXRlPTAsZS5faWQ9bixlLl9hbmltYXRpb25TdGF0ZUNoYW5nZWQucGlwZSh1ZSgodD0+Im9wZW5lZCI9PT10LnN0YXRlKSksdmUoMSkpLnN1YnNjcmliZSgoKCk9Pnt0aGlzLl9hZnRlck9wZW5lZC5uZXh0KCksdGhpcy5fYWZ0ZXJPcGVuZWQuY29tcGxldGUoKX0pKSxlLl9hbmltYXRpb25TdGF0ZUNoYW5nZWQucGlwZSh1ZSgodD0+ImNsb3NlZCI9PT10LnN0YXRlKSksdmUoMSkpLnN1YnNjcmliZSgoKCk9PntjbGVhclRpbWVvdXQodGhpcy5fY2xvc2VGYWxsYmFja1RpbWVvdXQpLHRoaXMuX2ZpbmlzaERpYWxvZ0Nsb3NlKCl9KSksdC5kZXRhY2htZW50cygpLnN1YnNjcmliZSgoKCk9Pnt0aGlzLl9iZWZvcmVDbG9zZWQubmV4dCh0aGlzLl9yZXN1bHQpLHRoaXMuX2JlZm9yZUNsb3NlZC5jb21wbGV0ZSgpLHRoaXMuX2FmdGVyQ2xvc2VkLm5leHQodGhpcy5fcmVzdWx0KSx0aGlzLl9hZnRlckNsb3NlZC5jb21wbGV0ZSgpLHRoaXMuY29tcG9uZW50SW5zdGFuY2U9bnVsbCx0aGlzLl9vdmVybGF5UmVmLmRpc3Bvc2UoKX0pKSx0LmtleWRvd25FdmVudHMoKS5waXBlKHVlKCh0PT50LmtleUNvZGU9PT1LSSYmIXRoaXMuZGlzYWJsZUNsb3NlJiYhdEgodCkpKSkuc3Vic2NyaWJlKCh0PT57dC5wcmV2ZW50RGVmYXVsdCgpLGpZKHRoaXMsImtleWJvYXJkIil9KSksdC5iYWNrZHJvcENsaWNrKCkuc3Vic2NyaWJlKCgoKT0+e3RoaXMuZGlzYWJsZUNsb3NlP3RoaXMuX2NvbnRhaW5lckluc3RhbmNlLl9yZWNhcHR1cmVGb2N1cygpOmpZKHRoaXMsIm1vdXNlIil9KSl9Y2xvc2UodCl7dGhpcy5fcmVzdWx0PXQsdGhpcy5fY29udGFpbmVySW5zdGFuY2UuX2FuaW1hdGlvblN0YXRlQ2hhbmdlZC5waXBlKHVlKCh0PT4iY2xvc2luZyI9PT10LnN0YXRlKSksdmUoMSkpLnN1YnNjcmliZSgoZT0+e3RoaXMuX2JlZm9yZUNsb3NlZC5uZXh0KHQpLHRoaXMuX2JlZm9yZUNsb3NlZC5jb21wbGV0ZSgpLHRoaXMuX292ZXJsYXlSZWYuZGV0YWNoQmFja2Ryb3AoKSx0aGlzLl9jbG9zZUZhbGxiYWNrVGltZW91dD1zZXRUaW1lb3V0KCgoKT0+dGhpcy5fZmluaXNoRGlhbG9nQ2xvc2UoKSksZS50b3RhbFRpbWUrMTAwKX0pKSx0aGlzLl9zdGF0ZT0xLHRoaXMuX2NvbnRhaW5lckluc3RhbmNlLl9zdGFydEV4aXRBbmltYXRpb24oKX1hZnRlck9wZW5lZCgpe3JldHVybiB0aGlzLl9hZnRlck9wZW5lZH1hZnRlckNsb3NlZCgpe3JldHVybiB0aGlzLl9hZnRlckNsb3NlZH1iZWZvcmVDbG9zZWQoKXtyZXR1cm4gdGhpcy5fYmVmb3JlQ2xvc2VkfWJhY2tkcm9wQ2xpY2soKXtyZXR1cm4gdGhpcy5fb3ZlcmxheVJlZi5iYWNrZHJvcENsaWNrKCl9a2V5ZG93bkV2ZW50cygpe3JldHVybiB0aGlzLl9vdmVybGF5UmVmLmtleWRvd25FdmVudHMoKX11cGRhdGVQb3NpdGlvbih0KXtsZXQgZT10aGlzLl9nZXRQb3NpdGlvblN0cmF0ZWd5KCk7cmV0dXJuIHQmJih0LmxlZnR8fHQucmlnaHQpP3QubGVmdD9lLmxlZnQodC5sZWZ0KTplLnJpZ2h0KHQucmlnaHQpOmUuY2VudGVySG9yaXpvbnRhbGx5KCksdCYmKHQudG9wfHx0LmJvdHRvbSk/dC50b3A/ZS50b3AodC50b3ApOmUuYm90dG9tKHQuYm90dG9tKTplLmNlbnRlclZlcnRpY2FsbHkoKSx0aGlzLl9vdmVybGF5UmVmLnVwZGF0ZVBvc2l0aW9uKCksdGhpc311cGRhdGVTaXplKHQ9IiIsZT0iIil7cmV0dXJuIHRoaXMuX292ZXJsYXlSZWYudXBkYXRlU2l6ZSh7d2lkdGg6dCxoZWlnaHQ6ZX0pLHRoaXMuX292ZXJsYXlSZWYudXBkYXRlUG9zaXRpb24oKSx0aGlzfWFkZFBhbmVsQ2xhc3ModCl7cmV0dXJuIHRoaXMuX292ZXJsYXlSZWYuYWRkUGFuZWxDbGFzcyh0KSx0aGlzfXJlbW92ZVBhbmVsQ2xhc3ModCl7cmV0dXJuIHRoaXMuX292ZXJsYXlSZWYucmVtb3ZlUGFuZWxDbGFzcyh0KSx0aGlzfWdldFN0YXRlKCl7cmV0dXJuIHRoaXMuX3N0YXRlfV9maW5pc2hEaWFsb2dDbG9zZSgpe3RoaXMuX3N0YXRlPTIsdGhpcy5fb3ZlcmxheVJlZi5kaXNwb3NlKCl9X2dldFBvc2l0aW9uU3RyYXRlZ3koKXtyZXR1cm4gdGhpcy5fb3ZlcmxheVJlZi5nZXRDb25maWcoKS5wb3NpdGlvblN0cmF0ZWd5fX1mdW5jdGlvbiBqWSh0LGUsbil7cmV0dXJuIHZvaWQgMCE9PXQuX2NvbnRhaW5lckluc3RhbmNlJiYodC5fY29udGFpbmVySW5zdGFuY2UuX2Nsb3NlSW50ZXJhY3Rpb25UeXBlPWUpLHQuY2xvc2Uobil9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NvbnN0IFVZPW5ldyBlcigiTWF0RGlhbG9nRGF0YSIpLFdZPW5ldyBlcigibWF0LWRpYWxvZy1kZWZhdWx0LW9wdGlvbnMiKSxHWT1uZXcgZXIoIm1hdC1kaWFsb2ctc2Nyb2xsLXN0cmF0ZWd5Iik7Y29uc3QgWVk9e3Byb3ZpZGU6R1ksZGVwczpbS0JdLHVzZUZhY3Rvcnk6ZnVuY3Rpb24gcVkodCl7cmV0dXJuKCk9PnQuc2Nyb2xsU3RyYXRlZ2llcy5ibG9jaygpfX07Y2xhc3MgWll7Y29uc3RydWN0b3IodCxlLG4sbyxpLGEscixzLGwpe3RoaXMuX292ZXJsYXk9dCx0aGlzLl9pbmplY3Rvcj1lLHRoaXMuX2RlZmF1bHRPcHRpb25zPW4sdGhpcy5fcGFyZW50RGlhbG9nPW8sdGhpcy5fb3ZlcmxheUNvbnRhaW5lcj1pLHRoaXMuX2RpYWxvZ1JlZkNvbnN0cnVjdG9yPXIsdGhpcy5fZGlhbG9nQ29udGFpbmVyVHlwZT1zLHRoaXMuX2RpYWxvZ0RhdGFUb2tlbj1sLHRoaXMuX29wZW5EaWFsb2dzQXRUaGlzTGV2ZWw9W10sdGhpcy5fYWZ0ZXJBbGxDbG9zZWRBdFRoaXNMZXZlbD1uZXcgQix0aGlzLl9hZnRlck9wZW5lZEF0VGhpc0xldmVsPW5ldyBCLHRoaXMuX2FyaWFIaWRkZW5FbGVtZW50cz1uZXcgTWFwLHRoaXMuYWZ0ZXJBbGxDbG9zZWQ9b2UoKCgpPT50aGlzLm9wZW5EaWFsb2dzLmxlbmd0aD90aGlzLl9nZXRBZnRlckFsbENsb3NlZCgpOnRoaXMuX2dldEFmdGVyQWxsQ2xvc2VkKCkucGlwZShCZSh2b2lkIDApKSkpLHRoaXMuX3Njcm9sbFN0cmF0ZWd5PWF9Z2V0IG9wZW5EaWFsb2dzKCl7cmV0dXJuIHRoaXMuX3BhcmVudERpYWxvZz90aGlzLl9wYXJlbnREaWFsb2cub3BlbkRpYWxvZ3M6dGhpcy5fb3BlbkRpYWxvZ3NBdFRoaXNMZXZlbH1nZXQgYWZ0ZXJPcGVuZWQoKXtyZXR1cm4gdGhpcy5fcGFyZW50RGlhbG9nP3RoaXMuX3BhcmVudERpYWxvZy5hZnRlck9wZW5lZDp0aGlzLl9hZnRlck9wZW5lZEF0VGhpc0xldmVsfV9nZXRBZnRlckFsbENsb3NlZCgpe2NvbnN0IHQ9dGhpcy5fcGFyZW50RGlhbG9nO3JldHVybiB0P3QuX2dldEFmdGVyQWxsQ2xvc2VkKCk6dGhpcy5fYWZ0ZXJBbGxDbG9zZWRBdFRoaXNMZXZlbH1vcGVuKHQsZSl7aWYoKGU9KGZ1bmN0aW9uIG4odCxlKXtyZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGUpLHQpfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8pKGUsdGhpcy5fZGVmYXVsdE9wdGlvbnN8fG5ldyB6WSkpLmlkJiZ0aGlzLmdldERpYWxvZ0J5SWQoZS5pZCkmJigidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSl0aHJvdyBFcnJvcihgRGlhbG9nIHdpdGggaWQgIiR7ZS5pZH0iIGV4aXN0cyBhbHJlYWR5LiBUaGUgZGlhbG9nIGlkIG11c3QgYmUgdW5pcXVlLmApO2NvbnN0IG89dGhpcy5fY3JlYXRlT3ZlcmxheShlKSxpPXRoaXMuX2F0dGFjaERpYWxvZ0NvbnRhaW5lcihvLGUpLGE9dGhpcy5fYXR0YWNoRGlhbG9nQ29udGVudCh0LGksbyxlKTtyZXR1cm4gdGhpcy5vcGVuRGlhbG9ncy5sZW5ndGh8fHRoaXMuX2hpZGVOb25EaWFsb2dDb250ZW50RnJvbUFzc2lzdGl2ZVRlY2hub2xvZ3koKSx0aGlzLm9wZW5EaWFsb2dzLnB1c2goYSksYS5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSgoKCk9PnRoaXMuX3JlbW92ZU9wZW5EaWFsb2coYSkpKSx0aGlzLmFmdGVyT3BlbmVkLm5leHQoYSksaS5faW5pdGlhbGl6ZVdpdGhBdHRhY2hlZENvbnRlbnQoKSxhfWNsb3NlQWxsKCl7dGhpcy5fY2xvc2VEaWFsb2dzKHRoaXMub3BlbkRpYWxvZ3MpfWdldERpYWxvZ0J5SWQodCl7cmV0dXJuIHRoaXMub3BlbkRpYWxvZ3MuZmluZCgoZT0+ZS5pZD09PXQpKX1uZ09uRGVzdHJveSgpe3RoaXMuX2Nsb3NlRGlhbG9ncyh0aGlzLl9vcGVuRGlhbG9nc0F0VGhpc0xldmVsKSx0aGlzLl9hZnRlckFsbENsb3NlZEF0VGhpc0xldmVsLmNvbXBsZXRlKCksdGhpcy5fYWZ0ZXJPcGVuZWRBdFRoaXNMZXZlbC5jb21wbGV0ZSgpfV9jcmVhdGVPdmVybGF5KHQpe2NvbnN0IGU9dGhpcy5fZ2V0T3ZlcmxheUNvbmZpZyh0KTtyZXR1cm4gdGhpcy5fb3ZlcmxheS5jcmVhdGUoZSl9X2dldE92ZXJsYXlDb25maWcodCl7Y29uc3QgZT1uZXcgd0Ioe3Bvc2l0aW9uU3RyYXRlZ3k6dGhpcy5fb3ZlcmxheS5wb3NpdGlvbigpLmdsb2JhbCgpLHNjcm9sbFN0cmF0ZWd5OnQuc2Nyb2xsU3RyYXRlZ3l8fHRoaXMuX3Njcm9sbFN0cmF0ZWd5KCkscGFuZWxDbGFzczp0LnBhbmVsQ2xhc3MsaGFzQmFja2Ryb3A6dC5oYXNCYWNrZHJvcCxkaXJlY3Rpb246dC5kaXJlY3Rpb24sbWluV2lkdGg6dC5taW5XaWR0aCxtaW5IZWlnaHQ6dC5taW5IZWlnaHQsbWF4V2lkdGg6dC5tYXhXaWR0aCxtYXhIZWlnaHQ6dC5tYXhIZWlnaHQsZGlzcG9zZU9uTmF2aWdhdGlvbjp0LmNsb3NlT25OYXZpZ2F0aW9ufSk7cmV0dXJuIHQuYmFja2Ryb3BDbGFzcyYmKGUuYmFja2Ryb3BDbGFzcz10LmJhY2tkcm9wQ2xhc3MpLGV9X2F0dGFjaERpYWxvZ0NvbnRhaW5lcih0LGUpe2NvbnN0IG49TnAuY3JlYXRlKHtwYXJlbnQ6ZSYmZS52aWV3Q29udGFpbmVyUmVmJiZlLnZpZXdDb250YWluZXJSZWYuaW5qZWN0b3J8fHRoaXMuX2luamVjdG9yLHByb3ZpZGVyczpbe3Byb3ZpZGU6elksdXNlVmFsdWU6ZX1dfSksbz1uZXcgc0IodGhpcy5fZGlhbG9nQ29udGFpbmVyVHlwZSxlLnZpZXdDb250YWluZXJSZWYsbixlLmNvbXBvbmVudEZhY3RvcnlSZXNvbHZlcik7cmV0dXJuIHQuYXR0YWNoKG8pLmluc3RhbmNlfV9hdHRhY2hEaWFsb2dDb250ZW50KHQsZSxuLG8pe2NvbnN0IGk9bmV3IHRoaXMuX2RpYWxvZ1JlZkNvbnN0cnVjdG9yKG4sZSxvLmlkKTtpZih0IGluc3RhbmNlb2YgRWIpZS5hdHRhY2hUZW1wbGF0ZVBvcnRhbChuZXcgbEIodCxudWxsLHskaW1wbGljaXQ6by5kYXRhLGRpYWxvZ1JlZjppfSkpO2Vsc2V7Y29uc3Qgbj10aGlzLl9jcmVhdGVJbmplY3RvcihvLGksZSksYT1lLmF0dGFjaENvbXBvbmVudFBvcnRhbChuZXcgc0IodCxvLnZpZXdDb250YWluZXJSZWYsbikpO2kuY29tcG9uZW50SW5zdGFuY2U9YS5pbnN0YW5jZX1yZXR1cm4gaS51cGRhdGVTaXplKG8ud2lkdGgsby5oZWlnaHQpLnVwZGF0ZVBvc2l0aW9uKG8ucG9zaXRpb24pLGl9X2NyZWF0ZUluamVjdG9yKHQsZSxuKXtjb25zdCBvPXQmJnQudmlld0NvbnRhaW5lclJlZiYmdC52aWV3Q29udGFpbmVyUmVmLmluamVjdG9yLGk9W3twcm92aWRlOnRoaXMuX2RpYWxvZ0NvbnRhaW5lclR5cGUsdXNlVmFsdWU6bn0se3Byb3ZpZGU6dGhpcy5fZGlhbG9nRGF0YVRva2VuLHVzZVZhbHVlOnQuZGF0YX0se3Byb3ZpZGU6dGhpcy5fZGlhbG9nUmVmQ29uc3RydWN0b3IsdXNlVmFsdWU6ZX1dO3JldHVybiF0LmRpcmVjdGlvbnx8byYmby5nZXQodkYsbnVsbCxIbi5PcHRpb25hbCl8fGkucHVzaCh7cHJvdmlkZTp2Rix1c2VWYWx1ZTp7dmFsdWU6dC5kaXJlY3Rpb24sY2hhbmdlOnp0KCl9fSksTnAuY3JlYXRlKHtwYXJlbnQ6b3x8dGhpcy5faW5qZWN0b3IscHJvdmlkZXJzOml9KX1fcmVtb3ZlT3BlbkRpYWxvZyh0KXtjb25zdCBlPXRoaXMub3BlbkRpYWxvZ3MuaW5kZXhPZih0KTtlPi0xJiYodGhpcy5vcGVuRGlhbG9ncy5zcGxpY2UoZSwxKSx0aGlzLm9wZW5EaWFsb2dzLmxlbmd0aHx8KHRoaXMuX2FyaWFIaWRkZW5FbGVtZW50cy5mb3JFYWNoKCgodCxlKT0+e3Q/ZS5zZXRBdHRyaWJ1dGUoImFyaWEtaGlkZGVuIix0KTplLnJlbW92ZUF0dHJpYnV0ZSgiYXJpYS1oaWRkZW4iKX0pKSx0aGlzLl9hcmlhSGlkZGVuRWxlbWVudHMuY2xlYXIoKSx0aGlzLl9nZXRBZnRlckFsbENsb3NlZCgpLm5leHQoKSkpfV9oaWRlTm9uRGlhbG9nQ29udGVudEZyb21Bc3Npc3RpdmVUZWNobm9sb2d5KCl7Y29uc3QgdD10aGlzLl9vdmVybGF5Q29udGFpbmVyLmdldENvbnRhaW5lckVsZW1lbnQoKTtpZih0LnBhcmVudEVsZW1lbnQpe2NvbnN0IGU9dC5wYXJlbnRFbGVtZW50LmNoaWxkcmVuO2ZvcihsZXQgbj1lLmxlbmd0aC0xO24+LTE7bi0tKXtsZXQgbz1lW25dO289PT10fHwiU0NSSVBUIj09PW8ubm9kZU5hbWV8fCJTVFlMRSI9PT1vLm5vZGVOYW1lfHxvLmhhc0F0dHJpYnV0ZSgiYXJpYS1saXZlIil8fCh0aGlzLl9hcmlhSGlkZGVuRWxlbWVudHMuc2V0KG8sby5nZXRBdHRyaWJ1dGUoImFyaWEtaGlkZGVuIikpLG8uc2V0QXR0cmlidXRlKCJhcmlhLWhpZGRlbiIsInRydWUiKSl9fX1fY2xvc2VEaWFsb2dzKHQpe2xldCBlPXQubGVuZ3RoO2Zvcig7ZS0tOyl0W2VdLmNsb3NlKCl9fVpZLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxaWSkoZ2YoS0IpLGdmKE5wKSxnZih2b2lkIDApLGdmKHZvaWQgMCksZ2YoSEIpLGdmKHZvaWQgMCksZ2YoY3IpLGdmKGNyKSxnZihlcikpfSxaWS7JtWRpcj1obyh7dHlwZTpaWX0pLFpZLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6S0J9LHt0eXBlOk5wfSx7dHlwZTp2b2lkIDB9LHt0eXBlOnZvaWQgMH0se3R5cGU6SEJ9LHt0eXBlOnZvaWQgMH0se3R5cGU6Y3J9LHt0eXBlOmNyfSx7dHlwZTplcn1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoWlksW3t0eXBlOmtffV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOktCfSx7dHlwZTpOcH0se3R5cGU6dm9pZCAwfSx7dHlwZTp2b2lkIDB9LHt0eXBlOkhCfSx7dHlwZTp2b2lkIDB9LHt0eXBlOmNyfSx7dHlwZTpjcn0se3R5cGU6ZXJ9XX0pLG51bGwpO2NsYXNzIFhZIGV4dGVuZHMgWll7Y29uc3RydWN0b3IodCxlLG4sbyxpLGEscil7c3VwZXIodCxlLG8sYSxyLGksVlksTFksVVkpfX1YWS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8WFkpKFRyKEtCKSxUcihOcCksVHIoTU0sOCksVHIoV1ksOCksVHIoR1kpLFRyKFhZLDEyKSxUcihIQikpfSxYWS7JtXByb3Y9U24oe3Rva2VuOlhZLGZhY3Rvcnk6WFkuybVmYWN9KSxYWS5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOktCfSx7dHlwZTpOcH0se3R5cGU6TU0sZGVjb3JhdG9yczpbe3R5cGU6QnJ9XX0se3R5cGU6elksZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W1dZXX1dfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbR1ldfV19LHt0eXBlOlhZLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpqcn1dfSx7dHlwZTpIQn1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoWFksW3t0eXBlOlVtfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOktCfSx7dHlwZTpOcH0se3R5cGU6TU0sZGVjb3JhdG9yczpbe3R5cGU6QnJ9XX0se3R5cGU6elksZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W1dZXX1dfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbR1ldfV19LHt0eXBlOlhZLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpqcn1dfSx7dHlwZTpIQn1dfSksbnVsbCk7bGV0IEtZPTA7Y2xhc3MgSll7Y29uc3RydWN0b3IodCxlLG4pe3RoaXMuZGlhbG9nUmVmPXQsdGhpcy5fZWxlbWVudFJlZj1lLHRoaXMuX2RpYWxvZz1uLHRoaXMudHlwZT0iYnV0dG9uIn1uZ09uSW5pdCgpe3RoaXMuZGlhbG9nUmVmfHwodGhpcy5kaWFsb2dSZWY9ZXEodGhpcy5fZWxlbWVudFJlZix0aGlzLl9kaWFsb2cub3BlbkRpYWxvZ3MpKX1uZ09uQ2hhbmdlcyh0KXtjb25zdCBlPXQuX21hdERpYWxvZ0Nsb3NlfHx0Ll9tYXREaWFsb2dDbG9zZVJlc3VsdDtlJiYodGhpcy5kaWFsb2dSZXN1bHQ9ZS5jdXJyZW50VmFsdWUpfV9vbkJ1dHRvbkNsaWNrKHQpe2pZKHRoaXMuZGlhbG9nUmVmLDA9PT10LnNjcmVlblgmJjA9PT10LnNjcmVlblk/ImtleWJvYXJkIjoibW91c2UiLHRoaXMuZGlhbG9nUmVzdWx0KX19SlkuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEpZKShnZihWWSw4KSxnZihLaCksZ2YoWFkpKX0sSlkuybVkaXI9aG8oe3R5cGU6Slksc2VsZWN0b3JzOltbIiIsIm1hdC1kaWFsb2ctY2xvc2UiLCIiXSxbIiIsIm1hdERpYWxvZ0Nsb3NlIiwiIl1dLGhvc3RWYXJzOjIsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJlJmKCJjbGljayIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4uX29uQnV0dG9uQ2xpY2soZSl9KSksMiZlJiZ5bSgiYXJpYS1sYWJlbCIsbi5hcmlhTGFiZWx8fG51bGwpKCJ0eXBlIixuLnR5cGUpfSxpbnB1dHM6e3R5cGU6InR5cGUiLGRpYWxvZ1Jlc3VsdDpbIm1hdC1kaWFsb2ctY2xvc2UiLCJkaWFsb2dSZXN1bHQiXSxhcmlhTGFiZWw6WyJhcmlhLWxhYmVsIiwiYXJpYUxhYmVsIl0sX21hdERpYWxvZ0Nsb3NlOlsibWF0RGlhbG9nQ2xvc2UiLCJfbWF0RGlhbG9nQ2xvc2UiXX0sZXhwb3J0QXM6WyJtYXREaWFsb2dDbG9zZSJdLGZlYXR1cmVzOltxb119KSxKWS5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOlZZLGRlY29yYXRvcnM6W3t0eXBlOkJyfV19LHt0eXBlOktofSx7dHlwZTpYWX1dLEpZLnByb3BEZWNvcmF0b3JzPXthcmlhTGFiZWw6W3t0eXBlOlJfLGFyZ3M6WyJhcmlhLWxhYmVsIl19XSx0eXBlOlt7dHlwZTpSX31dLGRpYWxvZ1Jlc3VsdDpbe3R5cGU6Ul8sYXJnczpbIm1hdC1kaWFsb2ctY2xvc2UiXX1dLF9tYXREaWFsb2dDbG9zZTpbe3R5cGU6Ul8sYXJnczpbIm1hdERpYWxvZ0Nsb3NlIl19XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihKWSxbe3R5cGU6a18sYXJnczpbe3NlbGVjdG9yOiJbbWF0LWRpYWxvZy1jbG9zZV0sIFttYXREaWFsb2dDbG9zZV0iLGV4cG9ydEFzOiJtYXREaWFsb2dDbG9zZSIsaG9zdDp7IihjbGljaykiOiJfb25CdXR0b25DbGljaygkZXZlbnQpIiwiW2F0dHIuYXJpYS1sYWJlbF0iOiJhcmlhTGFiZWwgfHwgbnVsbCIsIlthdHRyLnR5cGVdIjoidHlwZSJ9fV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6VlksZGVjb3JhdG9yczpbe3R5cGU6QnJ9XX0se3R5cGU6S2h9LHt0eXBlOlhZfV19KSx7dHlwZTpbe3R5cGU6Ul99XSxkaWFsb2dSZXN1bHQ6W3t0eXBlOlJfLGFyZ3M6WyJtYXQtZGlhbG9nLWNsb3NlIl19XSxhcmlhTGFiZWw6W3t0eXBlOlJfLGFyZ3M6WyJhcmlhLWxhYmVsIl19XSxfbWF0RGlhbG9nQ2xvc2U6W3t0eXBlOlJfLGFyZ3M6WyJtYXREaWFsb2dDbG9zZSJdfV19KTtjbGFzcyBRWXtjb25zdHJ1Y3Rvcih0LGUsbil7dGhpcy5fZGlhbG9nUmVmPXQsdGhpcy5fZWxlbWVudFJlZj1lLHRoaXMuX2RpYWxvZz1uLHRoaXMuaWQ9Im1hdC1kaWFsb2ctdGl0bGUtIitLWSsrfW5nT25Jbml0KCl7dGhpcy5fZGlhbG9nUmVmfHwodGhpcy5fZGlhbG9nUmVmPWVxKHRoaXMuX2VsZW1lbnRSZWYsdGhpcy5fZGlhbG9nLm9wZW5EaWFsb2dzKSksdGhpcy5fZGlhbG9nUmVmJiZQcm9taXNlLnJlc29sdmUoKS50aGVuKCgoKT0+e2NvbnN0IHQ9dGhpcy5fZGlhbG9nUmVmLl9jb250YWluZXJJbnN0YW5jZTt0JiYhdC5fYXJpYUxhYmVsbGVkQnkmJih0Ll9hcmlhTGFiZWxsZWRCeT10aGlzLmlkKX0pKX19UVkuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFFZKShnZihWWSw4KSxnZihLaCksZ2YoWFkpKX0sUVkuybVkaXI9aG8oe3R5cGU6UVksc2VsZWN0b3JzOltbIiIsIm1hdC1kaWFsb2ctdGl0bGUiLCIiXSxbIiIsIm1hdERpYWxvZ1RpdGxlIiwiIl1dLGhvc3RBdHRyczpbMSwibWF0LWRpYWxvZy10aXRsZSJdLGhvc3RWYXJzOjEsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQoZSxuKXsyJmUmJmNnKCJpZCIsbi5pZCl9LGlucHV0czp7aWQ6ImlkIn0sZXhwb3J0QXM6WyJtYXREaWFsb2dUaXRsZSJdfSksUVkuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpWWSxkZWNvcmF0b3JzOlt7dHlwZTpCcn1dfSx7dHlwZTpLaH0se3R5cGU6WFl9XSxRWS5wcm9wRGVjb3JhdG9ycz17aWQ6W3t0eXBlOlJffV19LCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoUVksW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3RvcjoiW21hdC1kaWFsb2ctdGl0bGVdLCBbbWF0RGlhbG9nVGl0bGVdIixleHBvcnRBczoibWF0RGlhbG9nVGl0bGUiLGhvc3Q6e2NsYXNzOiJtYXQtZGlhbG9nLXRpdGxlIiwiW2lkXSI6ImlkIn19XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpWWSxkZWNvcmF0b3JzOlt7dHlwZTpCcn1dfSx7dHlwZTpLaH0se3R5cGU6WFl9XX0pLHtpZDpbe3R5cGU6Ul99XX0pO2NsYXNzICRZe30kWS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8JFkpfSwkWS7JtWRpcj1obyh7dHlwZTokWSxzZWxlY3RvcnM6W1siIiwibWF0LWRpYWxvZy1jb250ZW50IiwiIl0sWyJtYXQtZGlhbG9nLWNvbnRlbnQiXSxbIiIsIm1hdERpYWxvZ0NvbnRlbnQiLCIiXV0saG9zdEF0dHJzOlsxLCJtYXQtZGlhbG9nLWNvbnRlbnQiXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoJFksW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3RvcjoiW21hdC1kaWFsb2ctY29udGVudF0sIG1hdC1kaWFsb2ctY29udGVudCwgW21hdERpYWxvZ0NvbnRlbnRdIixob3N0OntjbGFzczoibWF0LWRpYWxvZy1jb250ZW50In19XX1dLG51bGwsbnVsbCk7Y2xhc3MgdHF7fWZ1bmN0aW9uIGVxKHQsZSl7bGV0IG49dC5uYXRpdmVFbGVtZW50LnBhcmVudEVsZW1lbnQ7Zm9yKDtuJiYhbi5jbGFzc0xpc3QuY29udGFpbnMoIm1hdC1kaWFsb2ctY29udGFpbmVyIik7KW49bi5wYXJlbnRFbGVtZW50O3JldHVybiBuP2UuZmluZCgodD0+dC5pZD09PW4uaWQpKTpudWxsfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi90cS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8dHEpfSx0cS7JtWRpcj1obyh7dHlwZTp0cSxzZWxlY3RvcnM6W1siIiwibWF0LWRpYWxvZy1hY3Rpb25zIiwiIl0sWyJtYXQtZGlhbG9nLWFjdGlvbnMiXSxbIiIsIm1hdERpYWxvZ0FjdGlvbnMiLCIiXV0saG9zdEF0dHJzOlsxLCJtYXQtZGlhbG9nLWFjdGlvbnMiXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIodHEsW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3RvcjoiW21hdC1kaWFsb2ctYWN0aW9uc10sIG1hdC1kaWFsb2ctYWN0aW9ucywgW21hdERpYWxvZ0FjdGlvbnNdIixob3N0OntjbGFzczoibWF0LWRpYWxvZy1hY3Rpb25zIn19XX1dLG51bGwsbnVsbCk7Y2xhc3MgbnF7fW5xLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxucSl9LG5xLsm1bW9kPWZvKHt0eXBlOm5xfSksbnEuybVpbmo9RG4oe3Byb3ZpZGVyczpbWFksWVldLGltcG9ydHM6W1tvVixoQixORl0sTkZdfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihucSxbe3R5cGU6TF8sYXJnczpbe2ltcG9ydHM6W29WLGhCLE5GXSxleHBvcnRzOltMWSxKWSxRWSwkWSx0cSxORl0sZGVjbGFyYXRpb25zOltMWSxKWSxRWSx0cSwkWV0scHJvdmlkZXJzOltYWSxZWV0sZW50cnlDb21wb25lbnRzOltMWV19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZ1byhucSx7ZGVjbGFyYXRpb25zOmZ1bmN0aW9uKCl7cmV0dXJuW0xZLEpZLFFZLHRxLCRZXX0saW1wb3J0czpmdW5jdGlvbigpe3JldHVybltvVixoQixORl19LGV4cG9ydHM6ZnVuY3Rpb24oKXtyZXR1cm5bTFksSlksUVksJFksdHEsTkZdfX0pO2NsYXNzIG9xe2NvbnN0cnVjdG9yKHQsZSl7dGhpcy5fZG9jdW1lbnQ9ZTtjb25zdCBuPXRoaXMuX3RleHRhcmVhPXRoaXMuX2RvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRleHRhcmVhIiksbz1uLnN0eWxlO28ucG9zaXRpb249ImZpeGVkIixvLnRvcD1vLm9wYWNpdHk9IjAiLG8ubGVmdD0iLTk5OWVtIixuLnNldEF0dHJpYnV0ZSgiYXJpYS1oaWRkZW4iLCJ0cnVlIiksbi52YWx1ZT10LHRoaXMuX2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobil9Y29weSgpe2NvbnN0IHQ9dGhpcy5fdGV4dGFyZWE7bGV0IGU9ITE7dHJ5e2lmKHQpe2NvbnN0IG49dGhpcy5fZG9jdW1lbnQuYWN0aXZlRWxlbWVudDt0LnNlbGVjdCgpLHQuc2V0U2VsZWN0aW9uUmFuZ2UoMCx0LnZhbHVlLmxlbmd0aCksZT10aGlzLl9kb2N1bWVudC5leGVjQ29tbWFuZCgiY29weSIpLG4mJm4uZm9jdXMoKX19Y2F0Y2godCl7fXJldHVybiBlfWRlc3Ryb3koKXtjb25zdCB0PXRoaXMuX3RleHRhcmVhO3QmJih0LnBhcmVudE5vZGUmJnQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0KSx0aGlzLl90ZXh0YXJlYT12b2lkIDApfX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY2xhc3MgaXF7Y29uc3RydWN0b3IodCl7dGhpcy5fZG9jdW1lbnQ9dH1jb3B5KHQpe2NvbnN0IGU9dGhpcy5iZWdpbkNvcHkodCksbj1lLmNvcHkoKTtyZXR1cm4gZS5kZXN0cm95KCksbn1iZWdpbkNvcHkodCl7cmV0dXJuIG5ldyBvcSh0LHRoaXMuX2RvY3VtZW50KX19aXEuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGlxKShUcihzTSkpfSxpcS7JtXByb3Y9U24oe2ZhY3Rvcnk6ZnVuY3Rpb24gdCgpe3JldHVybiBuZXcgaXEoVHIoc00pKX0sdG9rZW46aXEscHJvdmlkZWRJbjoicm9vdCJ9KSxpcS5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltzTV19XX1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoaXEsW3t0eXBlOlVtLGFyZ3M6W3twcm92aWRlZEluOiJyb290In1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltzTV19XX1dfSksbnVsbCk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjb25zdCBhcT1uZXcgZXIoIkNES19DT1BZX1RPX0NMSVBCT0FSRF9DT05GSUciKTtjbGFzcyBycXtjb25zdHJ1Y3Rvcih0LGUsbil7dGhpcy5fY2xpcGJvYXJkPXQsdGhpcy5fbmdab25lPWUsdGhpcy50ZXh0PSIiLHRoaXMuYXR0ZW1wdHM9MSx0aGlzLmNvcGllZD1uZXcgU3ksdGhpcy5fcGVuZGluZz1uZXcgU2V0LG4mJm51bGwhPW4uYXR0ZW1wdHMmJih0aGlzLmF0dGVtcHRzPW4uYXR0ZW1wdHMpfWNvcHkodD10aGlzLmF0dGVtcHRzKXtpZih0PjEpe2xldCBlPXQ7Y29uc3Qgbj10aGlzLl9jbGlwYm9hcmQuYmVnaW5Db3B5KHRoaXMudGV4dCk7dGhpcy5fcGVuZGluZy5hZGQobik7Y29uc3Qgbz0oKT0+e2NvbnN0IHQ9bi5jb3B5KCk7dHx8IS0tZXx8dGhpcy5fZGVzdHJveWVkPyh0aGlzLl9jdXJyZW50VGltZW91dD1udWxsLHRoaXMuX3BlbmRpbmcuZGVsZXRlKG4pLG4uZGVzdHJveSgpLHRoaXMuY29waWVkLmVtaXQodCkpOnRoaXMuX2N1cnJlbnRUaW1lb3V0PXRoaXMuX25nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKCk9PnNldFRpbWVvdXQobywxKSkpfTtvKCl9ZWxzZSB0aGlzLmNvcGllZC5lbWl0KHRoaXMuX2NsaXBib2FyZC5jb3B5KHRoaXMudGV4dCkpfW5nT25EZXN0cm95KCl7dGhpcy5fY3VycmVudFRpbWVvdXQmJmNsZWFyVGltZW91dCh0aGlzLl9jdXJyZW50VGltZW91dCksdGhpcy5fcGVuZGluZy5mb3JFYWNoKCh0PT50LmRlc3Ryb3koKSkpLHRoaXMuX3BlbmRpbmcuY2xlYXIoKSx0aGlzLl9kZXN0cm95ZWQ9ITB9fXJxLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxycSkoZ2YoaXEpLGdmKG1DKSxnZihhcSw4KSl9LHJxLsm1ZGlyPWhvKHt0eXBlOnJxLHNlbGVjdG9yczpbWyIiLCJjZGtDb3B5VG9DbGlwYm9hcmQiLCIiXV0saG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJlJmKCJjbGljayIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5jb3B5KCl9KSl9LGlucHV0czp7dGV4dDpbImNka0NvcHlUb0NsaXBib2FyZCIsInRleHQiXSxhdHRlbXB0czpbImNka0NvcHlUb0NsaXBib2FyZEF0dGVtcHRzIiwiYXR0ZW1wdHMiXX0sb3V0cHV0czp7Y29waWVkOiJjZGtDb3B5VG9DbGlwYm9hcmRDb3BpZWQifX0pLHJxLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6aXF9LHt0eXBlOm1DfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W2FxXX1dfV0scnEucHJvcERlY29yYXRvcnM9e3RleHQ6W3t0eXBlOlJfLGFyZ3M6WyJjZGtDb3B5VG9DbGlwYm9hcmQiXX1dLGF0dGVtcHRzOlt7dHlwZTpSXyxhcmdzOlsiY2RrQ29weVRvQ2xpcGJvYXJkQXR0ZW1wdHMiXX1dLGNvcGllZDpbe3R5cGU6RV8sYXJnczpbImNka0NvcHlUb0NsaXBib2FyZENvcGllZCJdfV19LCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIocnEsW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3RvcjoiW2Nka0NvcHlUb0NsaXBib2FyZF0iLGhvc3Q6eyIoY2xpY2spIjoiY29weSgpIn19XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTppcX0se3R5cGU6bUN9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpbYXFdfV19XX0pLHt0ZXh0Olt7dHlwZTpSXyxhcmdzOlsiY2RrQ29weVRvQ2xpcGJvYXJkIl19XSxhdHRlbXB0czpbe3R5cGU6Ul8sYXJnczpbImNka0NvcHlUb0NsaXBib2FyZEF0dGVtcHRzIl19XSxjb3BpZWQ6W3t0eXBlOkVfLGFyZ3M6WyJjZGtDb3B5VG9DbGlwYm9hcmRDb3BpZWQiXX1dfSk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjbGFzcyBzcXt9c3EuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHNxKX0sc3EuybVtb2Q9Zm8oe3R5cGU6c3F9KSxzcS7JtWluaj1Ebih7fSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihzcSxbe3R5cGU6TF8sYXJnczpbe2RlY2xhcmF0aW9uczpbcnFdLGV4cG9ydHM6W3JxXX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnVvKHNxLHtkZWNsYXJhdGlvbnM6W3JxXSxleHBvcnRzOltycV19KTtmdW5jdGlvbiBscSh0KXtyZXR1cm4gRXJyb3IoYFVuYWJsZSB0byBmaW5kIGljb24gd2l0aCB0aGUgbmFtZSAiJHt0fSJgKX1mdW5jdGlvbiBjcSh0KXtyZXR1cm4gRXJyb3IoYFRoZSBVUkwgcHJvdmlkZWQgdG8gTWF0SWNvblJlZ2lzdHJ5IHdhcyBub3QgdHJ1c3RlZCBhcyBhIHJlc291cmNlIFVSTCB2aWEgQW5ndWxhcidzIERvbVNhbml0aXplci4gQXR0ZW1wdGVkIFVSTCB3YXMgIiR7dH0iLmApfWZ1bmN0aW9uIGRxKHQpe3JldHVybiBFcnJvcihgVGhlIGxpdGVyYWwgcHJvdmlkZWQgdG8gTWF0SWNvblJlZ2lzdHJ5IHdhcyBub3QgdHJ1c3RlZCBhcyBzYWZlIEhUTUwgYnkgQW5ndWxhcidzIERvbVNhbml0aXplci4gQXR0ZW1wdGVkIGxpdGVyYWwgd2FzICIke3R9Ii5gKX1jbGFzcyBwcXtjb25zdHJ1Y3Rvcih0LGUsbil7dGhpcy51cmw9dCx0aGlzLnN2Z1RleHQ9ZSx0aGlzLm9wdGlvbnM9bn19Y2xhc3MgbXF7Y29uc3RydWN0b3IodCxlLG4sbyl7dGhpcy5faHR0cENsaWVudD10LHRoaXMuX3Nhbml0aXplcj1lLHRoaXMuX2Vycm9ySGFuZGxlcj1vLHRoaXMuX3N2Z0ljb25Db25maWdzPW5ldyBNYXAsdGhpcy5faWNvblNldENvbmZpZ3M9bmV3IE1hcCx0aGlzLl9jYWNoZWRJY29uc0J5VXJsPW5ldyBNYXAsdGhpcy5faW5Qcm9ncmVzc1VybEZldGNoZXM9bmV3IE1hcCx0aGlzLl9mb250Q3NzQ2xhc3Nlc0J5QWxpYXM9bmV3IE1hcCx0aGlzLl9yZXNvbHZlcnM9W10sdGhpcy5fZGVmYXVsdEZvbnRTZXRDbGFzcz0ibWF0ZXJpYWwtaWNvbnMiLHRoaXMuX2RvY3VtZW50PW59YWRkU3ZnSWNvbih0LGUsbil7cmV0dXJuIHRoaXMuYWRkU3ZnSWNvbkluTmFtZXNwYWNlKCIiLHQsZSxuKX1hZGRTdmdJY29uTGl0ZXJhbCh0LGUsbil7cmV0dXJuIHRoaXMuYWRkU3ZnSWNvbkxpdGVyYWxJbk5hbWVzcGFjZSgiIix0LGUsbil9YWRkU3ZnSWNvbkluTmFtZXNwYWNlKHQsZSxuLG8pe3JldHVybiB0aGlzLl9hZGRTdmdJY29uQ29uZmlnKHQsZSxuZXcgcHEobixudWxsLG8pKX1hZGRTdmdJY29uUmVzb2x2ZXIodCl7cmV0dXJuIHRoaXMuX3Jlc29sdmVycy5wdXNoKHQpLHRoaXN9YWRkU3ZnSWNvbkxpdGVyYWxJbk5hbWVzcGFjZSh0LGUsbixvKXtjb25zdCBpPXRoaXMuX3Nhbml0aXplci5zYW5pdGl6ZShZcy5IVE1MLG4pO2lmKCFpKXRocm93IGRxKG4pO3JldHVybiB0aGlzLl9hZGRTdmdJY29uQ29uZmlnKHQsZSxuZXcgcHEoIiIsaSxvKSl9YWRkU3ZnSWNvblNldCh0LGUpe3JldHVybiB0aGlzLmFkZFN2Z0ljb25TZXRJbk5hbWVzcGFjZSgiIix0LGUpfWFkZFN2Z0ljb25TZXRMaXRlcmFsKHQsZSl7cmV0dXJuIHRoaXMuYWRkU3ZnSWNvblNldExpdGVyYWxJbk5hbWVzcGFjZSgiIix0LGUpfWFkZFN2Z0ljb25TZXRJbk5hbWVzcGFjZSh0LGUsbil7cmV0dXJuIHRoaXMuX2FkZFN2Z0ljb25TZXRDb25maWcodCxuZXcgcHEoZSxudWxsLG4pKX1hZGRTdmdJY29uU2V0TGl0ZXJhbEluTmFtZXNwYWNlKHQsZSxuKXtjb25zdCBvPXRoaXMuX3Nhbml0aXplci5zYW5pdGl6ZShZcy5IVE1MLGUpO2lmKCFvKXRocm93IGRxKGUpO3JldHVybiB0aGlzLl9hZGRTdmdJY29uU2V0Q29uZmlnKHQsbmV3IHBxKCIiLG8sbikpfXJlZ2lzdGVyRm9udENsYXNzQWxpYXModCxlPXQpe3JldHVybiB0aGlzLl9mb250Q3NzQ2xhc3Nlc0J5QWxpYXMuc2V0KHQsZSksdGhpc31jbGFzc05hbWVGb3JGb250QWxpYXModCl7cmV0dXJuIHRoaXMuX2ZvbnRDc3NDbGFzc2VzQnlBbGlhcy5nZXQodCl8fHR9c2V0RGVmYXVsdEZvbnRTZXRDbGFzcyh0KXtyZXR1cm4gdGhpcy5fZGVmYXVsdEZvbnRTZXRDbGFzcz10LHRoaXN9Z2V0RGVmYXVsdEZvbnRTZXRDbGFzcygpe3JldHVybiB0aGlzLl9kZWZhdWx0Rm9udFNldENsYXNzfWdldFN2Z0ljb25Gcm9tVXJsKHQpe2NvbnN0IGU9dGhpcy5fc2FuaXRpemVyLnNhbml0aXplKFlzLlJFU09VUkNFX1VSTCx0KTtpZighZSl0aHJvdyBjcSh0KTtjb25zdCBuPXRoaXMuX2NhY2hlZEljb25zQnlVcmwuZ2V0KGUpO3JldHVybiBuP3p0KGZxKG4pKTp0aGlzLl9sb2FkU3ZnSWNvbkZyb21Db25maWcobmV3IHBxKHQsbnVsbCkpLnBpcGUoV2UoKHQ9PnRoaXMuX2NhY2hlZEljb25zQnlVcmwuc2V0KGUsdCkpKSxWdCgodD0+ZnEodCkpKSl9Z2V0TmFtZWRTdmdJY29uKHQsZT0iIil7Y29uc3Qgbj11cShlLHQpO2xldCBvPXRoaXMuX3N2Z0ljb25Db25maWdzLmdldChuKTtpZihvKXJldHVybiB0aGlzLl9nZXRTdmdGcm9tQ29uZmlnKG8pO2lmKG89dGhpcy5fZ2V0SWNvbkNvbmZpZ0Zyb21SZXNvbHZlcnMoZSx0KSxvKXJldHVybiB0aGlzLl9zdmdJY29uQ29uZmlncy5zZXQobixvKSx0aGlzLl9nZXRTdmdGcm9tQ29uZmlnKG8pO2NvbnN0IGk9dGhpcy5faWNvblNldENvbmZpZ3MuZ2V0KGUpO3JldHVybiBpP3RoaXMuX2dldFN2Z0Zyb21JY29uU2V0Q29uZmlncyh0LGkpOkl0KGxxKG4pKX1uZ09uRGVzdHJveSgpe3RoaXMuX3Jlc29sdmVycz1bXSx0aGlzLl9zdmdJY29uQ29uZmlncy5jbGVhcigpLHRoaXMuX2ljb25TZXRDb25maWdzLmNsZWFyKCksdGhpcy5fY2FjaGVkSWNvbnNCeVVybC5jbGVhcigpfV9nZXRTdmdGcm9tQ29uZmlnKHQpe3JldHVybiB0LnN2Z1RleHQ/enQoZnEodGhpcy5fc3ZnRWxlbWVudEZyb21Db25maWcodCkpKTp0aGlzLl9sb2FkU3ZnSWNvbkZyb21Db25maWcodCkucGlwZShWdCgodD0+ZnEodCkpKSl9X2dldFN2Z0Zyb21JY29uU2V0Q29uZmlncyh0LGUpe2NvbnN0IG49dGhpcy5fZXh0cmFjdEljb25XaXRoTmFtZUZyb21BbnlTZXQodCxlKTtpZihuKXJldHVybiB6dChuKTtyZXR1cm4gaWUoZS5maWx0ZXIoKHQ9PiF0LnN2Z1RleHQpKS5tYXAoKHQ9PnRoaXMuX2xvYWRTdmdJY29uU2V0RnJvbUNvbmZpZyh0KS5waXBlKGhlKChlPT57Y29uc3Qgbj10aGlzLl9zYW5pdGl6ZXIuc2FuaXRpemUoWXMuUkVTT1VSQ0VfVVJMLHQudXJsKTtyZXR1cm4gdGhpcy5fZXJyb3JIYW5kbGVyLmhhbmRsZUVycm9yKG5ldyBFcnJvcihgTG9hZGluZyBpY29uIHNldCBVUkw6ICR7bn0gZmFpbGVkOiAke2UubWVzc2FnZX1gKSksenQobnVsbCl9KSkpKSkpLnBpcGUoVnQoKCgpPT57Y29uc3Qgbj10aGlzLl9leHRyYWN0SWNvbldpdGhOYW1lRnJvbUFueVNldCh0LGUpO2lmKCFuKXRocm93IGxxKHQpO3JldHVybiBufSkpKX1fZXh0cmFjdEljb25XaXRoTmFtZUZyb21BbnlTZXQodCxlKXtmb3IobGV0IG49ZS5sZW5ndGgtMTtuPj0wO24tLSl7Y29uc3Qgbz1lW25dO2lmKG8uc3ZnVGV4dCYmby5zdmdUZXh0LmluZGV4T2YodCk+LTEpe2NvbnN0IGU9dGhpcy5fc3ZnRWxlbWVudEZyb21Db25maWcobyksbj10aGlzLl9leHRyYWN0U3ZnSWNvbkZyb21TZXQoZSx0LG8ub3B0aW9ucyk7aWYobilyZXR1cm4gbn19cmV0dXJuIG51bGx9X2xvYWRTdmdJY29uRnJvbUNvbmZpZyh0KXtyZXR1cm4gdGhpcy5fZmV0Y2hJY29uKHQpLnBpcGUoV2UoKGU9PnQuc3ZnVGV4dD1lKSksVnQoKCgpPT50aGlzLl9zdmdFbGVtZW50RnJvbUNvbmZpZyh0KSkpKX1fbG9hZFN2Z0ljb25TZXRGcm9tQ29uZmlnKHQpe3JldHVybiB0LnN2Z1RleHQ/enQobnVsbCk6dGhpcy5fZmV0Y2hJY29uKHQpLnBpcGUoV2UoKGU9PnQuc3ZnVGV4dD1lKSkpfV9leHRyYWN0U3ZnSWNvbkZyb21TZXQodCxlLG4pe2NvbnN0IG89dC5xdWVyeVNlbGVjdG9yKGBbaWQ9IiR7ZX0iXWApO2lmKCFvKXJldHVybiBudWxsO2NvbnN0IGk9by5jbG9uZU5vZGUoITApO2lmKGkucmVtb3ZlQXR0cmlidXRlKCJpZCIpLCJzdmciPT09aS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpKXJldHVybiB0aGlzLl9zZXRTdmdBdHRyaWJ1dGVzKGksbik7aWYoInN5bWJvbCI9PT1pLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkpcmV0dXJuIHRoaXMuX3NldFN2Z0F0dHJpYnV0ZXModGhpcy5fdG9TdmdFbGVtZW50KGkpLG4pO2NvbnN0IGE9dGhpcy5fc3ZnRWxlbWVudEZyb21TdHJpbmcoIjxzdmc+PC9zdmc+Iik7cmV0dXJuIGEuYXBwZW5kQ2hpbGQoaSksdGhpcy5fc2V0U3ZnQXR0cmlidXRlcyhhLG4pfV9zdmdFbGVtZW50RnJvbVN0cmluZyh0KXtjb25zdCBlPXRoaXMuX2RvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIkRJViIpO2UuaW5uZXJIVE1MPXQ7Y29uc3Qgbj1lLnF1ZXJ5U2VsZWN0b3IoInN2ZyIpO2lmKCFuKXRocm93IEVycm9yKCI8c3ZnPiB0YWcgbm90IGZvdW5kIik7cmV0dXJuIG59X3RvU3ZnRWxlbWVudCh0KXtjb25zdCBlPXRoaXMuX3N2Z0VsZW1lbnRGcm9tU3RyaW5nKCI8c3ZnPjwvc3ZnPiIpLG49dC5hdHRyaWJ1dGVzO2ZvcihsZXQgdD0wO3Q8bi5sZW5ndGg7dCsrKXtjb25zdHtuYW1lOm8sdmFsdWU6aX09blt0XTsiaWQiIT09byYmZS5zZXRBdHRyaWJ1dGUobyxpKX1mb3IobGV0IG49MDtuPHQuY2hpbGROb2Rlcy5sZW5ndGg7bisrKXQuY2hpbGROb2Rlc1tuXS5ub2RlVHlwZT09PXRoaXMuX2RvY3VtZW50LkVMRU1FTlRfTk9ERSYmZS5hcHBlbmRDaGlsZCh0LmNoaWxkTm9kZXNbbl0uY2xvbmVOb2RlKCEwKSk7cmV0dXJuIGV9X3NldFN2Z0F0dHJpYnV0ZXModCxlKXtyZXR1cm4gdC5zZXRBdHRyaWJ1dGUoImZpdCIsIiIpLHQuc2V0QXR0cmlidXRlKCJoZWlnaHQiLCIxMDAlIiksdC5zZXRBdHRyaWJ1dGUoIndpZHRoIiwiMTAwJSIpLHQuc2V0QXR0cmlidXRlKCJwcmVzZXJ2ZUFzcGVjdFJhdGlvIiwieE1pZFlNaWQgbWVldCIpLHQuc2V0QXR0cmlidXRlKCJmb2N1c2FibGUiLCJmYWxzZSIpLGUmJmUudmlld0JveCYmdC5zZXRBdHRyaWJ1dGUoInZpZXdCb3giLGUudmlld0JveCksdH1fZmV0Y2hJY29uKHQpe3ZhciBlO2NvbnN0e3VybDpuLG9wdGlvbnM6b309dCxpPW51bGwhPT0oZT1udWxsPT1vP3ZvaWQgMDpvLndpdGhDcmVkZW50aWFscykmJnZvaWQgMCE9PWUmJmU7aWYoIXRoaXMuX2h0dHBDbGllbnQpdGhyb3coZnVuY3Rpb24gYSgpe3JldHVybiBFcnJvcigiQ291bGQgbm90IGZpbmQgSHR0cENsaWVudCBwcm92aWRlciBmb3IgdXNlIHdpdGggQW5ndWxhciBNYXRlcmlhbCBpY29ucy4gUGxlYXNlIGluY2x1ZGUgdGhlIEh0dHBDbGllbnRNb2R1bGUgZnJvbSBAYW5ndWxhci9jb21tb24vaHR0cCBpbiB5b3VyIGFwcCBpbXBvcnRzLiIpfSkoKTtpZihudWxsPT1uKXRocm93IEVycm9yKGBDYW5ub3QgZmV0Y2ggaWNvbiBmcm9tIFVSTCAiJHtufSIuYCk7Y29uc3Qgcj10aGlzLl9zYW5pdGl6ZXIuc2FuaXRpemUoWXMuUkVTT1VSQ0VfVVJMLG4pO2lmKCFyKXRocm93IGNxKG4pO2NvbnN0IHM9dGhpcy5faW5Qcm9ncmVzc1VybEZldGNoZXMuZ2V0KHIpO2lmKHMpcmV0dXJuIHM7Y29uc3QgbD10aGlzLl9odHRwQ2xpZW50LmdldChyLHtyZXNwb25zZVR5cGU6InRleHQiLHdpdGhDcmVkZW50aWFsczppfSkucGlwZSgoZnVuY3Rpb24gYyh0KXtyZXR1cm4geigoZnVuY3Rpb24oZSxuKXt0cnl7ZS5zdWJzY3JpYmUobil9ZmluYWxseXtuLmFkZCh0KX19KSl9KSgoKCk9PnRoaXMuX2luUHJvZ3Jlc3NVcmxGZXRjaGVzLmRlbGV0ZShyKSkpLEllKCkpO3JldHVybiB0aGlzLl9pblByb2dyZXNzVXJsRmV0Y2hlcy5zZXQocixsKSxsfV9hZGRTdmdJY29uQ29uZmlnKHQsZSxuKXtyZXR1cm4gdGhpcy5fc3ZnSWNvbkNvbmZpZ3Muc2V0KHVxKHQsZSksbiksdGhpc31fYWRkU3ZnSWNvblNldENvbmZpZyh0LGUpe2NvbnN0IG49dGhpcy5faWNvblNldENvbmZpZ3MuZ2V0KHQpO3JldHVybiBuP24ucHVzaChlKTp0aGlzLl9pY29uU2V0Q29uZmlncy5zZXQodCxbZV0pLHRoaXN9X3N2Z0VsZW1lbnRGcm9tQ29uZmlnKHQpe2lmKCF0LnN2Z0VsZW1lbnQpe2NvbnN0IGU9dGhpcy5fc3ZnRWxlbWVudEZyb21TdHJpbmcodC5zdmdUZXh0KTt0aGlzLl9zZXRTdmdBdHRyaWJ1dGVzKGUsdC5vcHRpb25zKSx0LnN2Z0VsZW1lbnQ9ZX1yZXR1cm4gdC5zdmdFbGVtZW50fV9nZXRJY29uQ29uZmlnRnJvbVJlc29sdmVycyh0LGUpe2ZvcihsZXQgbz0wO288dGhpcy5fcmVzb2x2ZXJzLmxlbmd0aDtvKyspe2NvbnN0IGk9dGhpcy5fcmVzb2x2ZXJzW29dKGUsdCk7aWYoaSlyZXR1cm4obj1pKS51cmwmJm4ub3B0aW9ucz9uZXcgcHEoaS51cmwsbnVsbCxpLm9wdGlvbnMpOm5ldyBwcShpLG51bGwpfXZhciBuOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi99fWZ1bmN0aW9uIGZxKHQpe3JldHVybiB0LmNsb25lTm9kZSghMCl9ZnVuY3Rpb24gdXEodCxlKXtyZXR1cm4gdCsiOiIrZX1tcS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8bXEpKFRyKGdFLDgpLFRyKGVPKSxUcihzTSw4KSxUcih1bCkpfSxtcS7JtXByb3Y9U24oe2ZhY3Rvcnk6ZnVuY3Rpb24gdCgpe3JldHVybiBuZXcgbXEoVHIoZ0UsOCksVHIoZU8pLFRyKHNNLDgpLFRyKHVsKSl9LHRva2VuOm1xLHByb3ZpZGVkSW46InJvb3QifSksbXEuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpnRSxkZWNvcmF0b3JzOlt7dHlwZTpCcn1dfSx7dHlwZTplT30se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltzTV19XX0se3R5cGU6dWx9XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKG1xLFt7dHlwZTpVbSxhcmdzOlt7cHJvdmlkZWRJbjoicm9vdCJ9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpnRSxkZWNvcmF0b3JzOlt7dHlwZTpCcn1dfSx7dHlwZTplT30se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltzTV19XX0se3R5cGU6dWx9XX0pLG51bGwpLG5ldyBCcixuZXcganIsbmV3IEJyLG5ldyBCcjtjb25zdCBncT1JRihjbGFzc3tjb25zdHJ1Y3Rvcih0KXt0aGlzLl9lbGVtZW50UmVmPXR9fSksaHE9bmV3IGVyKCJtYXQtaWNvbi1sb2NhdGlvbiIse3Byb3ZpZGVkSW46InJvb3QiLGZhY3Rvcnk6ZnVuY3Rpb24gYnEoKXtjb25zdCB0PXpyKHNNKSxlPXQ/dC5sb2NhdGlvbjpudWxsO3JldHVybntnZXRQYXRobmFtZTooKT0+ZT9lLnBhdGhuYW1lK2Uuc2VhcmNoOiIifX19KTtjb25zdCB5cT1bImNsaXAtcGF0aCIsImNvbG9yLXByb2ZpbGUiLCJzcmMiLCJjdXJzb3IiLCJmaWxsIiwiZmlsdGVyIiwibWFya2VyIiwibWFya2VyLXN0YXJ0IiwibWFya2VyLW1pZCIsIm1hcmtlci1lbmQiLCJtYXNrIiwic3Ryb2tlIl0sX3E9eXEubWFwKCh0PT5gWyR7dH1dYCkpLmpvaW4oIiwgIiksQ3E9L151cmxcKFsnIl0/IyguKj8pWyciXT9cKSQvO2NsYXNzIE1xIGV4dGVuZHMgZ3F7Y29uc3RydWN0b3IodCxlLG4sbyxpKXtzdXBlcih0KSx0aGlzLl9pY29uUmVnaXN0cnk9ZSx0aGlzLl9sb2NhdGlvbj1vLHRoaXMuX2Vycm9ySGFuZGxlcj1pLHRoaXMuX2lubGluZT0hMSx0aGlzLl9jdXJyZW50SWNvbkZldGNoPXUuRU1QVFksbnx8dC5uYXRpdmVFbGVtZW50LnNldEF0dHJpYnV0ZSgiYXJpYS1oaWRkZW4iLCJ0cnVlIil9Z2V0IGlubGluZSgpe3JldHVybiB0aGlzLl9pbmxpbmV9c2V0IGlubGluZSh0KXt0aGlzLl9pbmxpbmU9ZUgodCl9Z2V0IHN2Z0ljb24oKXtyZXR1cm4gdGhpcy5fc3ZnSWNvbn1zZXQgc3ZnSWNvbih0KXt0IT09dGhpcy5fc3ZnSWNvbiYmKHQ/dGhpcy5fdXBkYXRlU3ZnSWNvbih0KTp0aGlzLl9zdmdJY29uJiZ0aGlzLl9jbGVhclN2Z0VsZW1lbnQoKSx0aGlzLl9zdmdJY29uPXQpfWdldCBmb250U2V0KCl7cmV0dXJuIHRoaXMuX2ZvbnRTZXR9c2V0IGZvbnRTZXQodCl7Y29uc3QgZT10aGlzLl9jbGVhbnVwRm9udFZhbHVlKHQpO2UhPT10aGlzLl9mb250U2V0JiYodGhpcy5fZm9udFNldD1lLHRoaXMuX3VwZGF0ZUZvbnRJY29uQ2xhc3NlcygpKX1nZXQgZm9udEljb24oKXtyZXR1cm4gdGhpcy5fZm9udEljb259c2V0IGZvbnRJY29uKHQpe2NvbnN0IGU9dGhpcy5fY2xlYW51cEZvbnRWYWx1ZSh0KTtlIT09dGhpcy5fZm9udEljb24mJih0aGlzLl9mb250SWNvbj1lLHRoaXMuX3VwZGF0ZUZvbnRJY29uQ2xhc3NlcygpKX1fc3BsaXRJY29uTmFtZSh0KXtpZighdClyZXR1cm5bIiIsIiJdO2NvbnN0IGU9dC5zcGxpdCgiOiIpO3N3aXRjaChlLmxlbmd0aCl7Y2FzZSAxOnJldHVyblsiIixlWzBdXTtjYXNlIDI6cmV0dXJuIGU7ZGVmYXVsdDp0aHJvdyBFcnJvcihgSW52YWxpZCBpY29uIG5hbWU6ICIke3R9ImApfX1uZ09uSW5pdCgpe3RoaXMuX3VwZGF0ZUZvbnRJY29uQ2xhc3NlcygpfW5nQWZ0ZXJWaWV3Q2hlY2tlZCgpe2NvbnN0IHQ9dGhpcy5fZWxlbWVudHNXaXRoRXh0ZXJuYWxSZWZlcmVuY2VzO2lmKHQmJnQuc2l6ZSl7Y29uc3QgdD10aGlzLl9sb2NhdGlvbi5nZXRQYXRobmFtZSgpO3QhPT10aGlzLl9wcmV2aW91c1BhdGgmJih0aGlzLl9wcmV2aW91c1BhdGg9dCx0aGlzLl9wcmVwZW5kUGF0aFRvUmVmZXJlbmNlcyh0KSl9fW5nT25EZXN0cm95KCl7dGhpcy5fY3VycmVudEljb25GZXRjaC51bnN1YnNjcmliZSgpLHRoaXMuX2VsZW1lbnRzV2l0aEV4dGVybmFsUmVmZXJlbmNlcyYmdGhpcy5fZWxlbWVudHNXaXRoRXh0ZXJuYWxSZWZlcmVuY2VzLmNsZWFyKCl9X3VzaW5nRm9udEljb24oKXtyZXR1cm4hdGhpcy5zdmdJY29ufV9zZXRTdmdFbGVtZW50KHQpe3RoaXMuX2NsZWFyU3ZnRWxlbWVudCgpO2NvbnN0IGU9dC5xdWVyeVNlbGVjdG9yQWxsKCJzdHlsZSIpO2ZvcihsZXQgdD0wO3Q8ZS5sZW5ndGg7dCsrKWVbdF0udGV4dENvbnRlbnQrPSIgIjtjb25zdCBuPXRoaXMuX2xvY2F0aW9uLmdldFBhdGhuYW1lKCk7dGhpcy5fcHJldmlvdXNQYXRoPW4sdGhpcy5fY2FjaGVDaGlsZHJlbldpdGhFeHRlcm5hbFJlZmVyZW5jZXModCksdGhpcy5fcHJlcGVuZFBhdGhUb1JlZmVyZW5jZXMobiksdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmFwcGVuZENoaWxkKHQpfV9jbGVhclN2Z0VsZW1lbnQoKXtjb25zdCB0PXRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtsZXQgZT10LmNoaWxkTm9kZXMubGVuZ3RoO2Zvcih0aGlzLl9lbGVtZW50c1dpdGhFeHRlcm5hbFJlZmVyZW5jZXMmJnRoaXMuX2VsZW1lbnRzV2l0aEV4dGVybmFsUmVmZXJlbmNlcy5jbGVhcigpO2UtLTspe2NvbnN0IG49dC5jaGlsZE5vZGVzW2VdOzE9PT1uLm5vZGVUeXBlJiYic3ZnIiE9PW4ubm9kZU5hbWUudG9Mb3dlckNhc2UoKXx8dC5yZW1vdmVDaGlsZChuKX19X3VwZGF0ZUZvbnRJY29uQ2xhc3Nlcygpe2lmKCF0aGlzLl91c2luZ0ZvbnRJY29uKCkpcmV0dXJuO2NvbnN0IHQ9dGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LGU9dGhpcy5mb250U2V0P3RoaXMuX2ljb25SZWdpc3RyeS5jbGFzc05hbWVGb3JGb250QWxpYXModGhpcy5mb250U2V0KTp0aGlzLl9pY29uUmVnaXN0cnkuZ2V0RGVmYXVsdEZvbnRTZXRDbGFzcygpO2UhPXRoaXMuX3ByZXZpb3VzRm9udFNldENsYXNzJiYodGhpcy5fcHJldmlvdXNGb250U2V0Q2xhc3MmJnQuY2xhc3NMaXN0LnJlbW92ZSh0aGlzLl9wcmV2aW91c0ZvbnRTZXRDbGFzcyksZSYmdC5jbGFzc0xpc3QuYWRkKGUpLHRoaXMuX3ByZXZpb3VzRm9udFNldENsYXNzPWUpLHRoaXMuZm9udEljb24hPXRoaXMuX3ByZXZpb3VzRm9udEljb25DbGFzcyYmKHRoaXMuX3ByZXZpb3VzRm9udEljb25DbGFzcyYmdC5jbGFzc0xpc3QucmVtb3ZlKHRoaXMuX3ByZXZpb3VzRm9udEljb25DbGFzcyksdGhpcy5mb250SWNvbiYmdC5jbGFzc0xpc3QuYWRkKHRoaXMuZm9udEljb24pLHRoaXMuX3ByZXZpb3VzRm9udEljb25DbGFzcz10aGlzLmZvbnRJY29uKX1fY2xlYW51cEZvbnRWYWx1ZSh0KXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHQ/dC50cmltKCkuc3BsaXQoIiAiKVswXTp0fV9wcmVwZW5kUGF0aFRvUmVmZXJlbmNlcyh0KXtjb25zdCBlPXRoaXMuX2VsZW1lbnRzV2l0aEV4dGVybmFsUmVmZXJlbmNlcztlJiZlLmZvckVhY2goKChlLG4pPT57ZS5mb3JFYWNoKChlPT57bi5zZXRBdHRyaWJ1dGUoZS5uYW1lLGB1cmwoJyR7dH0jJHtlLnZhbHVlfScpYCl9KSl9KSl9X2NhY2hlQ2hpbGRyZW5XaXRoRXh0ZXJuYWxSZWZlcmVuY2VzKHQpe2NvbnN0IGU9dC5xdWVyeVNlbGVjdG9yQWxsKF9xKSxuPXRoaXMuX2VsZW1lbnRzV2l0aEV4dGVybmFsUmVmZXJlbmNlcz10aGlzLl9lbGVtZW50c1dpdGhFeHRlcm5hbFJlZmVyZW5jZXN8fG5ldyBNYXA7Zm9yKGxldCB0PTA7dDxlLmxlbmd0aDt0KyspeXEuZm9yRWFjaCgobz0+e2NvbnN0IGk9ZVt0XSxhPWkuZ2V0QXR0cmlidXRlKG8pLHI9YT9hLm1hdGNoKENxKTpudWxsO2lmKHIpe2xldCB0PW4uZ2V0KGkpO3R8fCh0PVtdLG4uc2V0KGksdCkpLHQucHVzaCh7bmFtZTpvLHZhbHVlOnJbMV19KX19KSl9X3VwZGF0ZVN2Z0ljb24odCl7aWYodGhpcy5fc3ZnTmFtZXNwYWNlPW51bGwsdGhpcy5fc3ZnTmFtZT1udWxsLHRoaXMuX2N1cnJlbnRJY29uRmV0Y2gudW5zdWJzY3JpYmUoKSx0KXtjb25zdFtlLG5dPXRoaXMuX3NwbGl0SWNvbk5hbWUodCk7ZSYmKHRoaXMuX3N2Z05hbWVzcGFjZT1lKSxuJiYodGhpcy5fc3ZnTmFtZT1uKSx0aGlzLl9jdXJyZW50SWNvbkZldGNoPXRoaXMuX2ljb25SZWdpc3RyeS5nZXROYW1lZFN2Z0ljb24obixlKS5waXBlKHZlKDEpKS5zdWJzY3JpYmUoKHQ9PnRoaXMuX3NldFN2Z0VsZW1lbnQodCkpLCh0PT57dGhpcy5fZXJyb3JIYW5kbGVyLmhhbmRsZUVycm9yKG5ldyBFcnJvcihgRXJyb3IgcmV0cmlldmluZyBpY29uICR7ZX06JHtufSEgJHt0Lm1lc3NhZ2V9YCkpfSkpfX19TXEuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fE1xKShnZihLaCksZ2YobXEpLEdhKCJhcmlhLWhpZGRlbiIpLGdmKGhxKSxnZih1bCkpfSxNcS7JtWNtcD1zbyh7dHlwZTpNcSxzZWxlY3RvcnM6W1sibWF0LWljb24iXV0saG9zdEF0dHJzOlsicm9sZSIsImltZyIsMSwibWF0LWljb24iLCJub3RyYW5zbGF0ZSJdLGhvc3RWYXJzOjcsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQoZSxuKXsyJmUmJih5bSgiZGF0YS1tYXQtaWNvbi10eXBlIixuLl91c2luZ0ZvbnRJY29uKCk/ImZvbnQiOiJzdmciKSgiZGF0YS1tYXQtaWNvbi1uYW1lIixuLl9zdmdOYW1lfHxuLmZvbnRJY29uKSgiZGF0YS1tYXQtaWNvbi1uYW1lc3BhY2UiLG4uX3N2Z05hbWVzcGFjZXx8bi5mb250U2V0KSxjdSgibWF0LWljb24taW5saW5lIixuLmlubGluZSkoIm1hdC1pY29uLW5vLWNvbG9yIiwicHJpbWFyeSIhPT1uLmNvbG9yJiYiYWNjZW50IiE9PW4uY29sb3ImJiJ3YXJuIiE9PW4uY29sb3IpKX0saW5wdXRzOntjb2xvcjoiY29sb3IiLGlubGluZToiaW5saW5lIixzdmdJY29uOiJzdmdJY29uIixmb250U2V0OiJmb250U2V0Iixmb250SWNvbjoiZm9udEljb24ifSxleHBvcnRBczpbIm1hdEljb24iXSxmZWF0dXJlczpbUXBdLG5nQ29udGVudFNlbGVjdG9yczpbIioiXSxkZWNsczoxLHZhcnM6MCx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoSGYoKSxGZigwKSl9LHN0eWxlczpbIi5tYXQtaWNvbntiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7ZGlzcGxheTppbmxpbmUtYmxvY2s7ZmlsbDpjdXJyZW50Q29sb3I7aGVpZ2h0OjI0cHg7d2lkdGg6MjRweH0ubWF0LWljb24ubWF0LWljb24taW5saW5le2ZvbnQtc2l6ZTppbmhlcml0O2hlaWdodDppbmhlcml0O2xpbmUtaGVpZ2h0OmluaGVyaXQ7d2lkdGg6aW5oZXJpdH1bZGlyPXJ0bF0gLm1hdC1pY29uLXJ0bC1taXJyb3J7dHJhbnNmb3JtOnNjYWxlKC0xLCAxKX0ubWF0LWZvcm0tZmllbGQ6bm90KC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeSkgLm1hdC1mb3JtLWZpZWxkLXByZWZpeCAubWF0LWljb24sLm1hdC1mb3JtLWZpZWxkOm5vdCgubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kpIC5tYXQtZm9ybS1maWVsZC1zdWZmaXggLm1hdC1pY29ue2Rpc3BsYXk6YmxvY2t9Lm1hdC1mb3JtLWZpZWxkOm5vdCgubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kpIC5tYXQtZm9ybS1maWVsZC1wcmVmaXggLm1hdC1pY29uLWJ1dHRvbiAubWF0LWljb24sLm1hdC1mb3JtLWZpZWxkOm5vdCgubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kpIC5tYXQtZm9ybS1maWVsZC1zdWZmaXggLm1hdC1pY29uLWJ1dHRvbiAubWF0LWljb257bWFyZ2luOmF1dG99XG4iXSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KSxNcS5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOktofSx7dHlwZTptcX0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOiRhLGFyZ3M6WyJhcmlhLWhpZGRlbiJdfV19LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltocV19XX0se3R5cGU6dWx9XSxNcS5wcm9wRGVjb3JhdG9ycz17aW5saW5lOlt7dHlwZTpSX31dLHN2Z0ljb246W3t0eXBlOlJffV0sZm9udFNldDpbe3R5cGU6Ul99XSxmb250SWNvbjpbe3R5cGU6Ul99XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihNcSxbe3R5cGU6U18sYXJnczpbe3RlbXBsYXRlOiI8bmctY29udGVudD48L25nLWNvbnRlbnQ+IixzZWxlY3RvcjoibWF0LWljb24iLGV4cG9ydEFzOiJtYXRJY29uIixpbnB1dHM6WyJjb2xvciJdLGhvc3Q6e3JvbGU6ImltZyIsY2xhc3M6Im1hdC1pY29uIG5vdHJhbnNsYXRlIiwiW2F0dHIuZGF0YS1tYXQtaWNvbi10eXBlXSI6J191c2luZ0ZvbnRJY29uKCkgPyAiZm9udCIgOiAic3ZnIicsIlthdHRyLmRhdGEtbWF0LWljb24tbmFtZV0iOiJfc3ZnTmFtZSB8fCBmb250SWNvbiIsIlthdHRyLmRhdGEtbWF0LWljb24tbmFtZXNwYWNlXSI6Il9zdmdOYW1lc3BhY2UgfHwgZm9udFNldCIsIltjbGFzcy5tYXQtaWNvbi1pbmxpbmVdIjoiaW5saW5lIiwiW2NsYXNzLm1hdC1pY29uLW5vLWNvbG9yXSI6J2NvbG9yICE9PSAicHJpbWFyeSIgJiYgY29sb3IgIT09ICJhY2NlbnQiICYmIGNvbG9yICE9PSAid2FybiInfSxlbmNhcHN1bGF0aW9uOlduLk5vbmUsY2hhbmdlRGV0ZWN0aW9uOmpuLk9uUHVzaCxzdHlsZXM6WyIubWF0LWljb257YmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0O2Rpc3BsYXk6aW5saW5lLWJsb2NrO2ZpbGw6Y3VycmVudENvbG9yO2hlaWdodDoyNHB4O3dpZHRoOjI0cHh9Lm1hdC1pY29uLm1hdC1pY29uLWlubGluZXtmb250LXNpemU6aW5oZXJpdDtoZWlnaHQ6aW5oZXJpdDtsaW5lLWhlaWdodDppbmhlcml0O3dpZHRoOmluaGVyaXR9W2Rpcj1ydGxdIC5tYXQtaWNvbi1ydGwtbWlycm9ye3RyYW5zZm9ybTpzY2FsZSgtMSwgMSl9Lm1hdC1mb3JtLWZpZWxkOm5vdCgubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kpIC5tYXQtZm9ybS1maWVsZC1wcmVmaXggLm1hdC1pY29uLC5tYXQtZm9ybS1maWVsZDpub3QoLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5KSAubWF0LWZvcm0tZmllbGQtc3VmZml4IC5tYXQtaWNvbntkaXNwbGF5OmJsb2NrfS5tYXQtZm9ybS1maWVsZDpub3QoLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5KSAubWF0LWZvcm0tZmllbGQtcHJlZml4IC5tYXQtaWNvbi1idXR0b24gLm1hdC1pY29uLC5tYXQtZm9ybS1maWVsZDpub3QoLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5KSAubWF0LWZvcm0tZmllbGQtc3VmZml4IC5tYXQtaWNvbi1idXR0b24gLm1hdC1pY29ue21hcmdpbjphdXRvfVxuIl19XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpLaH0se3R5cGU6bXF9LHt0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTokYSxhcmdzOlsiYXJpYS1oaWRkZW4iXX1dfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbaHFdfV19LHt0eXBlOnVsfV19KSx7aW5saW5lOlt7dHlwZTpSX31dLHN2Z0ljb246W3t0eXBlOlJffV0sZm9udFNldDpbe3R5cGU6Ul99XSxmb250SWNvbjpbe3R5cGU6Ul99XX0pOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3MgdnF7fXZxLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHx2cSl9LHZxLsm1bW9kPWZvKHt0eXBlOnZxfSksdnEuybVpbmo9RG4oe2ltcG9ydHM6W1tORl0sTkZdfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYih2cSxbe3R5cGU6TF8sYXJnczpbe2ltcG9ydHM6W05GXSxleHBvcnRzOltNcSxORl0sZGVjbGFyYXRpb25zOltNcV19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZ1byh2cSx7ZGVjbGFyYXRpb25zOmZ1bmN0aW9uKCl7cmV0dXJuW01xXX0saW1wb3J0czpmdW5jdGlvbigpe3JldHVybltORl19LGV4cG9ydHM6ZnVuY3Rpb24oKXtyZXR1cm5bTXEsTkZdfX0pO2NsYXNzIHhxe2NvbnN0cnVjdG9yKHQpe3RoaXMuZGlhbG9nUmVmPXQsdGhpcy50ZW5zb3Jib2FyZERvdERldlVybD0iaHR0cHM6Ly90ZW5zb3Jib2FyZC5kZXYvP3V0bV9zb3VyY2U9dGVuc29yYm9hcmQifW9uQ2xvc2UoKXt0aGlzLmRpYWxvZ1JlZi5jbG9zZSgpfWdldENvbW1hbmRUZXh0KCl7aWYodGhpcy5sb2dkaXIpe3JldHVybiJ0ZW5zb3Jib2FyZCBkZXYgdXBsb2FkIC0tbG9nZGlyIFxcXG4gICAgJyIrdGhpcy5sb2dkaXIucmVwbGFjZSgvJy9nLCInXFwnJyIpKyInIn1yZXR1cm4idGVuc29yYm9hcmQgZGV2IHVwbG9hZCAtLWxvZ2RpciB7bG9nZGlyfSJ9fXhxLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHx4cSkoZ2YoVlkpKX0seHEuybVjbXA9c28oe3R5cGU6eHEsc2VsZWN0b3JzOltbInRiZGV2LXVwbG9hZC1kaWFsb2ctY29tcG9uZW50Il1dLGlucHV0czp7bG9nZGlyOiJsb2dkaXIifSxkZWNsczoyMSx2YXJzOjQsY29uc3RzOltbInRhcmdldCIsIl9ibGFuayIsInJlbCIsIm5vcmVmZXJyZXIgbm9vcGVuZXIiLDEsImFuY2hvci10ZXh0IiwzLCJocmVmIl0sWzEsImNvbW1hbmQiXSxbIm1hdC1pY29uLWJ1dHRvbiIsIiIsInRpdGxlIiwiQ2xpY2sgdG8gY29weSB0aGUgY29tbWFuZCIsMSwiY29tbWFuZC1jb3B5IiwzLCJjZGtDb3B5VG9DbGlwYm9hcmQiXSxbInN2Z0ljb24iLCJjb250ZW50X2NvcHlfMjRweCJdLFsxLCJib3R0b20tYnV0dG9ucyJdLFsibWF0LWZsYXQtYnV0dG9uIiwiIiwxLCJjbG9zZS1idXR0b24iLDMsImNsaWNrIl0sWyJtYXQtZmxhdC1idXR0b24iLCIiLCJ0YXJnZXQiLCJfYmxhbmsiLCJyZWwiLCJub3JlZmVycmVyIG5vb3BlbmVyIiwxLCJsZWFybi1tb3JlLWJ1dHRvbiIsMywiaHJlZiJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoQ2YoMCwiaDMiKSxQdSgxLCJVcGxvYWQgdG8gVGVuc29yQm9hcmQuZGV2IiksTWYoKSxDZigyLCJwIiksQ2YoMywiYSIsMCksUHUoNCwiIFRlbnNvckJvYXJkLmRldiIpLE1mKCksUHUoNSwiIGVuYWJsZXMgeW91IHRvIGVhc2lseSBob3N0LCB0cmFjaywgYW5kIHNoYXJlIHlvdXIgTUwgZXhwZXJpbWVudHMgd2l0aCBldmVyeW9uZS4gWW91IGNhbiBzaGFyZSBhIGxpbmsgdG8gdGhlIHVwbG9hZGVkIFRlbnNvckJvYXJkIGluIHBhcGVycywgYmxvZyBwb3N0cywgYW5kIHNvY2lhbCBtZWRpYS4gVGhpcyBjYW4gc2hvd2Nhc2UgdGhlIHJlc3VsdHMgbW9yZSBlZmZlY3RpdmVseSBhbmQgaGVscHMgcmVwcm9kdWNpYmlsaXR5LlxuIiksTWYoKSxDZig2LCJwIiksUHUoNywiVG8gdXBsb2FkIGEgbG9nZGlyIHRvIFRlbnNvckJvYXJkLmRldiwgcnVuIHRoZSBjb21tYW5kOiIpLE1mKCksQ2YoOCwiZGl2IiwxKSxDZig5LCJwcmUiKSxDZigxMCwiY29kZSIpLFB1KDExKSxNZigpLE1mKCksQ2YoMTIsImJ1dHRvbiIsMiksdmYoMTMsIm1hdC1pY29uIiwzKSxNZigpLE1mKCksQ2YoMTQsInAiKSxQdSgxNSwiIE9ubHkgY2VydGFpbiBwbHVnaW5zIGFyZSBjdXJyZW50bHkgc3VwcG9ydGVkLiBVcGxvYWRlZCBUZW5zb3JCb2FyZHMgYXJlIHB1YmxpYyBhbmQgdmlzaWJsZSB0byBldmVyeW9uZTsgZG8gbm90IHVwbG9hZCBzZW5zaXRpdmUgZGF0YS5cbiIpLE1mKCksQ2YoMTYsImRpdiIsNCksQ2YoMTcsImJ1dHRvbiIsNSksUmYoImNsaWNrIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLm9uQ2xvc2UoKX0pKSxQdSgxOCwiIENsb3NlICIpLE1mKCksQ2YoMTksImEiLDYpLFB1KDIwLCIgTGVhcm4gbW9yZSAiKSxNZigpLE1mKCkpLDImZSYmKERjKDMpLExmKCJocmVmIixuLnRlbnNvcmJvYXJkRG90RGV2VXJsLFhzKSxEYyg4KSx3dShuLmdldENvbW1hbmRUZXh0KCkpLERjKDEpLGJmKCJjZGtDb3B5VG9DbGlwYm9hcmQiLG4uZ2V0Q29tbWFuZFRleHQoKSksRGMoNyksTGYoImhyZWYiLG4udGVuc29yYm9hcmREb3REZXZVcmwsWHMpKX0sZGlyZWN0aXZlczpbTkwscnEsTXEsekxdLHN0eWxlczpbJy5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjlweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHh9Lm1hdC1oMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaGVhZGxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDI0cHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTVweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWg2W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1ib2R5LXN0cm9uZ1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYXJkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FyZC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MjRweH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNhbGVuZGFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZGlhbG9nLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVlbSAwO2JvcmRlci10b3A6Ljg0Mzc1ZW0gc29saWQgdHJhbnNwYXJlbnR9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17dG9wOi0wLjg0Mzc1ZW07cGFkZGluZy10b3A6Ljg0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6NzUlO21hcmdpbi10b3A6LjY2NjY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS43OTE2NjY2NjY3ZW0pfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjQzNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDJweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIzZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4yODEyNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LjU0MTY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS42NjY2NjY2NjY3ZW0pfUBtZWRpYSBwcmludHsubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjJlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjFlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyZW0pIHNjYWxlKDAuNzUpfX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouMjVlbSAwIC43NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjA5Mzc1ZW07bWFyZ2luLXRvcDotMC41ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoxZW0gMCAxZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuODQzNzVlbTttYXJnaW4tdG9wOi0wLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMiksIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fWlucHV0Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi0wLjA2MjVlbX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHh9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtfS5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1zdGVwLXN1Yi1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6bm9ybWFsfS5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1zdGVwLWxhYmVsLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10YWItZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MH0ubWF0LXRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTBweDtwYWRkaW5nLXRvcDo2cHg7cGFkZGluZy1ib3R0b206NnB4fS5tYXQtdG9vbHRpcC1oYW5kc2V0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4fS5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtc2ltcGxlLXNuYWNrYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHh9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoxO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjE0cHh9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV06bm90KDplbXB0eSl7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9Lm1hdC1yaXBwbGUubWF0LXJpcHBsZS11bmJvdW5kZWRbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OnZpc2libGV9Lm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJhZGl1czo1MCU7cG9pbnRlci1ldmVudHM6bm9uZTt0cmFuc2l0aW9uOm9wYWNpdHksdHJhbnNmb3JtIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTt0cmFuc2Zvcm06c2NhbGUoMCl9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9LmNkay12aXN1YWxseS1oaWRkZW5bX25nY29udGVudC0lQ09NUCVde2JvcmRlcjowO2NsaXA6cmVjdCgwIDAgMCAwKTtoZWlnaHQ6MXB4O21hcmdpbjotMXB4O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4O3doaXRlLXNwYWNlOm5vd3JhcDtvdXRsaW5lOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0sIC5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cG9pbnRlci1ldmVudHM6bm9uZTt0b3A6MDtsZWZ0OjA7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV06ZW1wdHl7ZGlzcGxheTpub25lfS5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktcGFuZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6YXV0bztib3gtc2l6aW5nOmJvcmRlci1ib3g7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDttYXgtd2lkdGg6MTAwJTttYXgtaGVpZ2h0OjEwMCV9LmNkay1vdmVybGF5LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDt6LWluZGV4OjEwMDA7cG9pbnRlci1ldmVudHM6YXV0bzstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnQ7dHJhbnNpdGlvbjpvcGFjaXR5IDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpO29wYWNpdHk6MH0uY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eToxfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6LjZ9LmNkay1vdmVybGF5LWRhcmstYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMzIpfS5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV0sIC5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWNvbm5lY3RlZC1wb3NpdGlvbi1ib3VuZGluZy1ib3hbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO21pbi13aWR0aDoxcHg7bWluLWhlaWdodDoxcHh9LmNkay1nbG9iYWwtc2Nyb2xsYmxvY2tbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3dpZHRoOjEwMCU7b3ZlcmZsb3cteTpzY3JvbGx9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplW19uZ2NvbnRlbnQtJUNPTVAlXXtyZXNpemU6bm9uZX10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDphdXRvICFpbXBvcnRhbnQ7b3ZlcmZsb3c6aGlkZGVuICFpbXBvcnRhbnR9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZy1maXJlZm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDowICFpbXBvcnRhbnR9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydHt9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmR7fS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGx7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0IDBzIDFtc30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOi13ZWJraXQtYXV0b2ZpbGwpe2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmQgMHMgMW1zfS5tYXQtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LW1kYy1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfWRpdltfbmdjb250ZW50LSVDT01QJV0sIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjoxNnB4IDB9W19uZ2hvc3QtJUNPTVAlXSA+IFtfbmdjb250ZW50LSVDT01QJV06Zmlyc3QtY2hpbGR7bWFyZ2luLXRvcDowfVtfbmdob3N0LSVDT01QJV0gPiBbX25nY29udGVudC0lQ09NUCVdOmxhc3QtY2hpbGR7bWFyZ2luLWJvdHRvbTowfWgzW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDA7bGluZS1oZWlnaHQ6MS41fXBbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjE7Zm9udC1zaXplOjEycHg7bGluZS1oZWlnaHQ6MS41fWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmfS5hbmNob3ItdGV4dFtfbmdjb250ZW50LSVDT01QJV17dGV4dC1kZWNvcmF0aW9uOm5vbmV9LmNvbW1hbmRbX25nY29udGVudC0lQ09NUCVde2FsaWduLWl0ZW1zOmNlbnRlcjtiYWNrZ3JvdW5kOiNmNWY2Zjc7Ym9yZGVyLXJhZGl1czo0cHg7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO3BhZGRpbmc6MnB4IDEycHh9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgLmNvbW1hbmRbX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAuY29tbWFuZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojNjE2MTYxfXByZVtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3cteDphdXRvfWNvZGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2xpbmUtaGVpZ2h0OjEuNX0uYm90dG9tLWJ1dHRvbnNbX25nY29udGVudC0lQ09NUCVde2FsaWduLWl0ZW1zOmNlbnRlcjtkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OmZsZXgtZW5kfS5jbG9zZS1idXR0b25bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjE7dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlO21hcmdpbi1yaWdodDo4cHh9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgLmNsb3NlLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5jbG9zZS1idXR0b25bX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjcpfVtfbmdob3N0LSVDT01QJV0gICAubGVhcm4tbW9yZS1idXR0b25bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMxOTc2ZDI7dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlfWJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5sZWFybi1tb3JlLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzQyYTVmNX0nXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoeHEsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoidGJkZXYtdXBsb2FkLWRpYWxvZy1jb21wb25lbnQiLHRlbXBsYXRlVXJsOiIuL3RiZGV2X3VwbG9hZF9kaWFsb2dfY29tcG9uZW50Lm5nLmh0bWwiLHN0eWxlVXJsczpbIi4vdGJkZXZfdXBsb2FkX2RpYWxvZ19jb21wb25lbnQuY3NzIl19XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpWWX1dfSkse2xvZ2Rpcjpbe3R5cGU6Ul99XX0pO2NvbnN0IE9xPWJTKG9ULCh0PT50LmRhdGFfbG9jYXRpb24pKTtjbGFzcyBQcXtjb25zdHJ1Y3Rvcih0KXt0aGlzLnN0b3JlPXQsdGhpcy5sb2dkaXIkPXRoaXMuc3RvcmUucGlwZShyUyhPcSkpfX1mdW5jdGlvbiB3cSh0LGUpe2lmKDEmdCl7Y29uc3QgdD13ZigpO0NmKDAsImJ1dHRvbiIsMSksUmYoImNsaWNrIiwoZnVuY3Rpb24gZSgpe1BpKHQpO3JldHVybiB6ZigpLm9wZW5EaWFsb2coKX0pKSxDZigxLCJzcGFuIiwyKSx2ZigyLCJtYXQtaWNvbiIsMyksUHUoMywiIFVwbG9hZCAiKSxNZigpLE1mKCl9fVBxLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxQcSkoZ2YoaVMpKX0sUHEuybVjbXA9c28oe3R5cGU6UHEsc2VsZWN0b3JzOltbInRiZGV2LXVwbG9hZC1kaWFsb2ciXV0sZGVjbHM6Mix2YXJzOjMsY29uc3RzOltbMywibG9nZGlyIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJih2ZigwLCJ0YmRldi11cGxvYWQtZGlhbG9nLWNvbXBvbmVudCIsMCksX3koMSwiYXN5bmMiKSksMiZlJiZiZigibG9nZGlyIixDeSgxLDEsbi5sb2dkaXIkKSl9LGRpcmVjdGl2ZXM6W3hxXSxwaXBlczpbVnZdLGVuY2Fwc3VsYXRpb246Mn0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoUHEsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoidGJkZXYtdXBsb2FkLWRpYWxvZyIsdGVtcGxhdGU6J1xuICAgIDx0YmRldi11cGxvYWQtZGlhbG9nLWNvbXBvbmVudFxuICAgICAgW2xvZ2Rpcl09ImxvZ2RpciQgfCBhc3luYyJcbiAgICA+PC90YmRldi11cGxvYWQtZGlhbG9nLWNvbXBvbmVudD5cbiAgJ31dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmlTfV19KSxudWxsKTtjb25zdCBrcT1bImxvY2FsaG9zdCIsIjEyNy4wLjAuMSJdO2NsYXNzIFNxe2NvbnN0cnVjdG9yKHQsZSl7dGhpcy53aW5kb3c9dCx0aGlzLmRpYWxvZz1lLHRoaXMuc2hvd249a3EuaW5jbHVkZXModC5sb2NhdGlvbi5ob3N0bmFtZSl9b3BlbkRpYWxvZygpe3RoaXMuZGlhbG9nLm9wZW4oUHEse3dpZHRoOiI1NjBweCJ9KX19U3EuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFNxKShnZigid2luZG93IiksZ2YoWFkpKX0sU3EuybVjbXA9c28oe3R5cGU6U3Esc2VsZWN0b3JzOltbInRiZGV2LXVwbG9hZC1idXR0b24iXV0saG9zdFZhcnM6Mixob3N0QmluZGluZ3M6ZnVuY3Rpb24gdChlLG4pezImZSYmY3UoInNob3duIixuLnNob3duKX0sZGVjbHM6MSx2YXJzOjEsY29uc3RzOltbIm1hdC1zdHJva2VkLWJ1dHRvbiIsIiIsMywiY2xpY2siLDQsIm5nSWYiXSxbIm1hdC1zdHJva2VkLWJ1dHRvbiIsIiIsMywiY2xpY2siXSxbMSwiYnV0dG9uLWNvbnRlbnRzIl0sWyJzdmdJY29uIiwiaW5mb19vdXRsaW5lXzI0cHgiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmSG0oMCx3cSw0LDAsImJ1dHRvbiIsMCksMiZlJiZiZigibmdJZiIsbi5zaG93bil9LGRpcmVjdGl2ZXM6W1B2LE5MLE1xXSxzdHlsZXM6WycubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTJweDtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1iYWRnZS1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo5cHh9Lm1hdC1iYWRnZS1sYXJnZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4fS5tYXQtaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWhlYWRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAyNHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE2cHgvMjhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE1cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjgzKS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1oNltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC42NykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtYm9keS1zdHJvbmdbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MCAwIDEycHh9Lm1hdC1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FwdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTJweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6MzAwIDExMnB4LzExMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wNWVtO21hcmdpbjowIDAgNTZweH0ubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNTZweC81NnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMmVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNDVweC80OHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMDVlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDM0cHgvNDBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgNjRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FyZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjBweH0ubWF0LWNhcmQtc3VidGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcmQtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2hlY2tib3gtbGF5b3V0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC10cmFpbGluZy1pY29uLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmUubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxOHB4fS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jYWxlbmRhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FsZW5kYXItYm9keVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEzcHh9Lm1hdC1jYWxlbmRhci1ib2R5LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgdGhbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWRpYWxvZy10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMTI1O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTUwJTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjVlbTt3aWR0aDoxLjVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW07bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi41ZW0gMDtib3JkZXItdG9wOi44NDM3NWVtIHNvbGlkIHRyYW5zcGFyZW50fS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3RvcDotMC44NDM3NWVtO3BhZGRpbmctdG9wOi44NDM3NWVtfS5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjc1JTttYXJnaW4tdG9wOi42NjY2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNzkxNjY2NjY2N2VtKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi40Mzc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAycHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyM2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMjgxMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi41NDE2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNjY2NjY2NjY2N2VtKX1AbWVkaWEgcHJpbnR7Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIyZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIxZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMmVtKSBzY2FsZSgwLjc1KX19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjI1ZW0gMCAuNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4wOTM3NWVtO21hcmdpbi10b3A6LTAuNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MWVtIDAgMWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjg0Mzc1ZW07bWFyZ2luLXRvcDotMC4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH1pbnB1dC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDotMC4wNjI1ZW19Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1wYWdlLXNpemVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4fS5tYXQtcmFkaW8tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3RbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbX0ubWF0LXNsaWRlLXRvZ2dsZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXN0ZXBwZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc3RlcC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtc3RlcC1zdWItbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0Om5vcm1hbH0ubWF0LXN0ZXAtbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtc3RlcC1sYWJlbC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdGFiLWdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjB9Lm1hdC10b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEwcHg7cGFkZGluZy10b3A6NnB4O3BhZGRpbmctYm90dG9tOjZweH0ubWF0LXRvb2x0aXAtaGFuZHNldFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7cGFkZGluZy10b3A6OHB4O3BhZGRpbmctYm90dG9tOjhweH0ubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTZweH0ubWF0LW9wdGdyb3VwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LXNpbXBsZS1zbmFja2Jhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4fS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbltfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MTtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRyZWVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbmVzdGVkLXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtc2l6ZToxNHB4fS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdOm5vdCg6ZW1wdHkpe3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApfS5tYXQtcmlwcGxlLm1hdC1yaXBwbGUtdW5ib3VuZGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzp2aXNpYmxlfS5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO2JvcmRlci1yYWRpdXM6NTAlO3BvaW50ZXItZXZlbnRzOm5vbmU7dHJhbnNpdGlvbjpvcGFjaXR5LHRyYW5zZm9ybSAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7dHJhbnNmb3JtOnNjYWxlKDApfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpub25lfS5jZGstdmlzdWFsbHktaGlkZGVuW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6MDtjbGlwOnJlY3QoMCAwIDAgMCk7aGVpZ2h0OjFweDttYXJnaW46LTFweDtvdmVyZmxvdzpoaWRkZW47cGFkZGluZzowO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjFweDt3aGl0ZS1zcGFjZTpub3dyYXA7b3V0bGluZTowOy13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BvaW50ZXItZXZlbnRzOm5vbmU7dG9wOjA7bGVmdDowO2hlaWdodDoxMDAlO3dpZHRoOjEwMCV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdOmVtcHR5e2Rpc3BsYXk6bm9uZX0uY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LXBhbmVbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3BvaW50ZXItZXZlbnRzOmF1dG87Ym94LXNpemluZzpib3JkZXItYm94O3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7bWF4LXdpZHRoOjEwMCU7bWF4LWhlaWdodDoxMDAlfS5jZGstb3ZlcmxheS1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7bGVmdDowO3JpZ2h0OjA7ei1pbmRleDoxMDAwO3BvaW50ZXItZXZlbnRzOmF1dG87LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50O3RyYW5zaXRpb246b3BhY2l0eSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKTtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5Oi42fS5jZGstb3ZlcmxheS1kYXJrLWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjMyKX0uY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTowfS5jZGstb3ZlcmxheS1jb25uZWN0ZWQtcG9zaXRpb24tYm91bmRpbmctYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjttaW4td2lkdGg6MXB4O21pbi1oZWlnaHQ6MXB4fS5jZGstZ2xvYmFsLXNjcm9sbGJsb2NrW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt3aWR0aDoxMDAlO292ZXJmbG93LXk6c2Nyb2xsfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZVtfbmdjb250ZW50LSVDT01QJV17cmVzaXplOm5vbmV9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZ1tfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6YXV0byAhaW1wb3J0YW50O292ZXJmbG93OmhpZGRlbiAhaW1wb3J0YW50fXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmctZmlyZWZveFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6MCAhaW1wb3J0YW50fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnR7fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5ke30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxse2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydCAwcyAxbXN9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06bm90KDotd2Via2l0LWF1dG9maWxsKXthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5kIDBzIDFtc30ubWF0LWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1tZGMtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX1bX25naG9zdC0lQ09NUCVdICAgYnV0dG9uLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwO2JvcmRlcjoxcHggc29saWQgI2ViZWJlYn1ib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICBidXR0b24ubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNlZjZjMDB9LmJ1dHRvbi1jb250ZW50c1tfbmdjb250ZW50LSVDT01QJV17YWxpZ24taXRlbXM6Y2VudGVyO2Rpc3BsYXk6ZmxleDt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2V9bWF0LWljb25bX25nY29udGVudC0lQ09NUCVde21hcmdpbi1yaWdodDo2cHh9J119KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKFNxLFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6InRiZGV2LXVwbG9hZC1idXR0b24iLHRlbXBsYXRlVXJsOiIuL3RiZGV2X3VwbG9hZF9idXR0b25fY29tcG9uZW50Lm5nLmh0bWwiLHN0eWxlVXJsczpbIi4vdGJkZXZfdXBsb2FkX2J1dHRvbl9jb21wb25lbnQuY3NzIl19XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpXaW5kb3csZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbIndpbmRvdyJdfV19LHt0eXBlOlhZfV19KSx7c2hvd246W3t0eXBlOkFfLGFyZ3M6WyJjbGFzcy5zaG93biJdfV19KTtmdW5jdGlvbiBEcSh0LGUpezEmdCYmKG9hKCksQ2YoMCwic3ZnIiwyKSx2ZigxLCJwb2x5Z29uIiwzKSxNZigpKX1jb25zdCBScT1bIioiXTtmdW5jdGlvbiBFcSh0LGUpe2lmKDEmdCl7Y29uc3QgdD13ZigpO0NmKDAsImRpdiIsMCksUmYoImtleWRvd24iLChmdW5jdGlvbiBlKG4pe1BpKHQpO3JldHVybiB6ZigpLl9oYW5kbGVLZXlkb3duKG4pfSkpKCJjbGljayIsKGZ1bmN0aW9uIGUoKXtQaSh0KTtyZXR1cm4gemYoKS5jbG9zZWQuZW1pdCgiY2xpY2siKX0pKSgiQHRyYW5zZm9ybU1lbnUuc3RhcnQiLChmdW5jdGlvbiBlKG4pe1BpKHQpO3JldHVybiB6ZigpLl9vbkFuaW1hdGlvblN0YXJ0KG4pfSkpKCJAdHJhbnNmb3JtTWVudS5kb25lIiwoZnVuY3Rpb24gZShuKXtQaSh0KTtyZXR1cm4gemYoKS5fb25BbmltYXRpb25Eb25lKG4pfSkpLENmKDEsImRpdiIsMSksRmYoMiksTWYoKSxNZigpfWlmKDImdCl7Y29uc3QgdD16ZigpO2JmKCJpZCIsdC5wYW5lbElkKSgibmdDbGFzcyIsdC5fY2xhc3NMaXN0KSgiQHRyYW5zZm9ybU1lbnUiLHQuX3BhbmVsQW5pbWF0aW9uU3RhdGUpLHltKCJhcmlhLWxhYmVsIix0LmFyaWFMYWJlbHx8bnVsbCkoImFyaWEtbGFiZWxsZWRieSIsdC5hcmlhTGFiZWxsZWRieXx8bnVsbCkoImFyaWEtZGVzY3JpYmVkYnkiLHQuYXJpYURlc2NyaWJlZGJ5fHxudWxsKX19Y29uc3QgQXE9e3RyYW5zZm9ybU1lbnU6eE8oInRyYW5zZm9ybU1lbnUiLFtrTygidm9pZCIsd08oe29wYWNpdHk6MCx0cmFuc2Zvcm06InNjYWxlKDAuOCkifSkpLERPKCJ2b2lkID0+IGVudGVyIixPTygiMTIwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSkiLHdPKHtvcGFjaXR5OjEsdHJhbnNmb3JtOiJzY2FsZSgxKSJ9KSkpLERPKCIqID0+IHZvaWQiLE9PKCIxMDBtcyAyNW1zIGxpbmVhciIsd08oe29wYWNpdHk6MH0pKSldKSxmYWRlSW5JdGVtczp4TygiZmFkZUluSXRlbXMiLFtrTygic2hvd2luZyIsd08oe29wYWNpdHk6MX0pKSxETygidm9pZCA9PiAqIixbd08oe29wYWNpdHk6MH0pLE9PKCI0MDBtcyAxMDBtcyBjdWJpYy1iZXppZXIoMC41NSwgMCwgMC41NSwgMC4yKSIpXSldKX0sVHE9bmV3IGVyKCJNYXRNZW51Q29udGVudCIpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jbGFzcyBOcXtjb25zdHJ1Y3Rvcih0LGUsbixvLGksYSxyKXt0aGlzLl90ZW1wbGF0ZT10LHRoaXMuX2NvbXBvbmVudEZhY3RvcnlSZXNvbHZlcj1lLHRoaXMuX2FwcFJlZj1uLHRoaXMuX2luamVjdG9yPW8sdGhpcy5fdmlld0NvbnRhaW5lclJlZj1pLHRoaXMuX2RvY3VtZW50PWEsdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWY9cix0aGlzLl9hdHRhY2hlZD1uZXcgQn1hdHRhY2godD17fSl7dGhpcy5fcG9ydGFsfHwodGhpcy5fcG9ydGFsPW5ldyBsQih0aGlzLl90ZW1wbGF0ZSx0aGlzLl92aWV3Q29udGFpbmVyUmVmKSksdGhpcy5kZXRhY2goKSx0aGlzLl9vdXRsZXR8fCh0aGlzLl9vdXRsZXQ9bmV3IHBCKHRoaXMuX2RvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLHRoaXMuX2NvbXBvbmVudEZhY3RvcnlSZXNvbHZlcix0aGlzLl9hcHBSZWYsdGhpcy5faW5qZWN0b3IpKTtjb25zdCBlPXRoaXMuX3RlbXBsYXRlLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtlLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHRoaXMuX291dGxldC5vdXRsZXRFbGVtZW50LGUpLHRoaXMuX2NoYW5nZURldGVjdG9yUmVmJiZ0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKSx0aGlzLl9wb3J0YWwuYXR0YWNoKHRoaXMuX291dGxldCx0KSx0aGlzLl9hdHRhY2hlZC5uZXh0KCl9ZGV0YWNoKCl7dGhpcy5fcG9ydGFsLmlzQXR0YWNoZWQmJnRoaXMuX3BvcnRhbC5kZXRhY2goKX1uZ09uRGVzdHJveSgpe3RoaXMuX291dGxldCYmdGhpcy5fb3V0bGV0LmRpc3Bvc2UoKX19TnEuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fE5xKShnZihFYiksZ2YoR2gpLGdmKEhDKSxnZihOcCksZ2YoRmIpLGdmKHNNKSxnZihPYikpfSxOcS7JtWRpcj1obyh7dHlwZTpOcSxzZWxlY3RvcnM6W1sibmctdGVtcGxhdGUiLCJtYXRNZW51Q29udGVudCIsIiJdXSxmZWF0dXJlczpbamgoW3twcm92aWRlOlRxLHVzZUV4aXN0aW5nOk5xfV0pXX0pLE5xLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6RWJ9LHt0eXBlOkdofSx7dHlwZTpIQ30se3R5cGU6TnB9LHt0eXBlOkZifSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbc01dfV19LHt0eXBlOk9ifV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihOcSxbe3R5cGU6a18sYXJnczpbe3NlbGVjdG9yOiJuZy10ZW1wbGF0ZVttYXRNZW51Q29udGVudF0iLHByb3ZpZGVyczpbe3Byb3ZpZGU6VHEsdXNlRXhpc3Rpbmc6TnF9XX1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOkVifSx7dHlwZTpHaH0se3R5cGU6SEN9LHt0eXBlOk5wfSx7dHlwZTpGYn0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W3NNXX1dfSx7dHlwZTpPYn1dfSksbnVsbCk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjb25zdCB6cT1uZXcgZXIoIk1BVF9NRU5VX1BBTkVMIiksSXE9SEYoekYoY2xhc3N7fSkpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jbGFzcyBIcSBleHRlbmRzIElxe2NvbnN0cnVjdG9yKHQsZSxuLG8saSl7c3VwZXIoKSx0aGlzLl9lbGVtZW50UmVmPXQsdGhpcy5fZm9jdXNNb25pdG9yPW4sdGhpcy5fcGFyZW50TWVudT1vLHRoaXMuX2NoYW5nZURldGVjdG9yUmVmPWksdGhpcy5yb2xlPSJtZW51aXRlbSIsdGhpcy5faG92ZXJlZD1uZXcgQix0aGlzLl9mb2N1c2VkPW5ldyBCLHRoaXMuX2hpZ2hsaWdodGVkPSExLHRoaXMuX3RyaWdnZXJzU3VibWVudT0hMSxvJiZvLmFkZEl0ZW0mJm8uYWRkSXRlbSh0aGlzKX1mb2N1cyh0LGUpe3RoaXMuX2ZvY3VzTW9uaXRvciYmdD90aGlzLl9mb2N1c01vbml0b3IuZm9jdXNWaWEodGhpcy5fZ2V0SG9zdEVsZW1lbnQoKSx0LGUpOnRoaXMuX2dldEhvc3RFbGVtZW50KCkuZm9jdXMoZSksdGhpcy5fZm9jdXNlZC5uZXh0KHRoaXMpfW5nQWZ0ZXJWaWV3SW5pdCgpe3RoaXMuX2ZvY3VzTW9uaXRvciYmdGhpcy5fZm9jdXNNb25pdG9yLm1vbml0b3IodGhpcy5fZWxlbWVudFJlZiwhMSl9bmdPbkRlc3Ryb3koKXt0aGlzLl9mb2N1c01vbml0b3ImJnRoaXMuX2ZvY3VzTW9uaXRvci5zdG9wTW9uaXRvcmluZyh0aGlzLl9lbGVtZW50UmVmKSx0aGlzLl9wYXJlbnRNZW51JiZ0aGlzLl9wYXJlbnRNZW51LnJlbW92ZUl0ZW0mJnRoaXMuX3BhcmVudE1lbnUucmVtb3ZlSXRlbSh0aGlzKSx0aGlzLl9ob3ZlcmVkLmNvbXBsZXRlKCksdGhpcy5fZm9jdXNlZC5jb21wbGV0ZSgpfV9nZXRUYWJJbmRleCgpe3JldHVybiB0aGlzLmRpc2FibGVkPyItMSI6IjAifV9nZXRIb3N0RWxlbWVudCgpe3JldHVybiB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnR9X2NoZWNrRGlzYWJsZWQodCl7dGhpcy5kaXNhYmxlZCYmKHQucHJldmVudERlZmF1bHQoKSx0LnN0b3BQcm9wYWdhdGlvbigpKX1faGFuZGxlTW91c2VFbnRlcigpe3RoaXMuX2hvdmVyZWQubmV4dCh0aGlzKX1nZXRMYWJlbCgpe3ZhciB0LGU7Y29uc3Qgbj10aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY2xvbmVOb2RlKCEwKSxvPW4ucXVlcnlTZWxlY3RvckFsbCgibWF0LWljb24sIC5tYXRlcmlhbC1pY29ucyIpO2ZvcihsZXQgZT0wO2U8by5sZW5ndGg7ZSsrKXtjb25zdCBuPW9bZV07bnVsbD09PSh0PW4ucGFyZW50Tm9kZSl8fHZvaWQgMD09PXR8fHQucmVtb3ZlQ2hpbGQobil9cmV0dXJuKG51bGw9PT0oZT1uLnRleHRDb250ZW50KXx8dm9pZCAwPT09ZT92b2lkIDA6ZS50cmltKCkpfHwiIn1fc2V0SGlnaGxpZ2h0ZWQodCl7dmFyIGU7dGhpcy5faGlnaGxpZ2h0ZWQ9dCxudWxsPT09KGU9dGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYpfHx2b2lkIDA9PT1lfHxlLm1hcmtGb3JDaGVjaygpfX1IcS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8SHEpKGdmKEtoKSxnZihzTSksZ2YoZkYpLGdmKHpxLDgpLGdmKE9iKSl9LEhxLsm1Y21wPXNvKHt0eXBlOkhxLHNlbGVjdG9yczpbWyIiLCJtYXQtbWVudS1pdGVtIiwiIl1dLGhvc3RBdHRyczpbMSwibWF0LWZvY3VzLWluZGljYXRvciJdLGhvc3RWYXJzOjEwLGhvc3RCaW5kaW5nczpmdW5jdGlvbiB0KGUsbil7MSZlJiZSZigiY2xpY2siLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLl9jaGVja0Rpc2FibGVkKGUpfSkpKCJtb3VzZWVudGVyIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLl9oYW5kbGVNb3VzZUVudGVyKCl9KSksMiZlJiYoeW0oInJvbGUiLG4ucm9sZSkoInRhYmluZGV4IixuLl9nZXRUYWJJbmRleCgpKSgiYXJpYS1kaXNhYmxlZCIsbi5kaXNhYmxlZC50b1N0cmluZygpKSgiZGlzYWJsZWQiLG4uZGlzYWJsZWR8fG51bGwpLGN1KCJtYXQtbWVudS1pdGVtIiwhMCkoIm1hdC1tZW51LWl0ZW0taGlnaGxpZ2h0ZWQiLG4uX2hpZ2hsaWdodGVkKSgibWF0LW1lbnUtaXRlbS1zdWJtZW51LXRyaWdnZXIiLG4uX3RyaWdnZXJzU3VibWVudSkpfSxpbnB1dHM6e2Rpc2FibGVkOiJkaXNhYmxlZCIsZGlzYWJsZVJpcHBsZToiZGlzYWJsZVJpcHBsZSIscm9sZToicm9sZSJ9LGV4cG9ydEFzOlsibWF0TWVudUl0ZW0iXSxmZWF0dXJlczpbUXBdLGF0dHJzOlsibWF0LW1lbnUtaXRlbSIsIiJdLG5nQ29udGVudFNlbGVjdG9yczpScSxkZWNsczozLHZhcnM6Myxjb25zdHM6W1sibWF0UmlwcGxlIiwiIiwxLCJtYXQtbWVudS1yaXBwbGUiLDMsIm1hdFJpcHBsZURpc2FibGVkIiwibWF0UmlwcGxlVHJpZ2dlciJdLFsiY2xhc3MiLCJtYXQtbWVudS1zdWJtZW51LWljb24iLCJ2aWV3Qm94IiwiMCAwIDUgMTAiLCJmb2N1c2FibGUiLCJmYWxzZSIsNCwibmdJZiJdLFsidmlld0JveCIsIjAgMCA1IDEwIiwiZm9jdXNhYmxlIiwiZmFsc2UiLDEsIm1hdC1tZW51LXN1Ym1lbnUtaWNvbiJdLFsicG9pbnRzIiwiMCwwIDUsNSAwLDEwIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihIZigpLEZmKDApLHZmKDEsImRpdiIsMCksSG0oMixEcSwyLDAsInN2ZyIsMSkpLDImZSYmKERjKDEpLGJmKCJtYXRSaXBwbGVEaXNhYmxlZCIsbi5kaXNhYmxlUmlwcGxlfHxuLmRpc2FibGVkKSgibWF0UmlwcGxlVHJpZ2dlciIsbi5fZ2V0SG9zdEVsZW1lbnQoKSksRGMoMSksYmYoIm5nSWYiLG4uX3RyaWdnZXJzU3VibWVudSkpfSxkaXJlY3RpdmVzOlttTCxQdl0sZW5jYXBzdWxhdGlvbjoyLGNoYW5nZURldGVjdGlvbjowfSksSHEuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpLaH0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W3NNXX1dfSx7dHlwZTpmRn0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W3pxXX0se3R5cGU6QnJ9XX0se3R5cGU6T2J9XSxIcS5wcm9wRGVjb3JhdG9ycz17cm9sZTpbe3R5cGU6Ul99XSxfY2hlY2tEaXNhYmxlZDpbe3R5cGU6VF8sYXJnczpbImNsaWNrIixbIiRldmVudCJdXX1dLF9oYW5kbGVNb3VzZUVudGVyOlt7dHlwZTpUXyxhcmdzOlsibW91c2VlbnRlciJdfV19LCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoSHEsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoiW21hdC1tZW51LWl0ZW1dIixleHBvcnRBczoibWF0TWVudUl0ZW0iLGlucHV0czpbImRpc2FibGVkIiwiZGlzYWJsZVJpcHBsZSJdLGhvc3Q6eyJbYXR0ci5yb2xlXSI6InJvbGUiLCJbY2xhc3MubWF0LW1lbnUtaXRlbV0iOiJ0cnVlIiwiW2NsYXNzLm1hdC1tZW51LWl0ZW0taGlnaGxpZ2h0ZWRdIjoiX2hpZ2hsaWdodGVkIiwiW2NsYXNzLm1hdC1tZW51LWl0ZW0tc3VibWVudS10cmlnZ2VyXSI6Il90cmlnZ2Vyc1N1Ym1lbnUiLCJbYXR0ci50YWJpbmRleF0iOiJfZ2V0VGFiSW5kZXgoKSIsIlthdHRyLmFyaWEtZGlzYWJsZWRdIjoiZGlzYWJsZWQudG9TdHJpbmcoKSIsIlthdHRyLmRpc2FibGVkXSI6ImRpc2FibGVkIHx8IG51bGwiLGNsYXNzOiJtYXQtZm9jdXMtaW5kaWNhdG9yIn0sY2hhbmdlRGV0ZWN0aW9uOmpuLk9uUHVzaCxlbmNhcHN1bGF0aW9uOlduLk5vbmUsdGVtcGxhdGU6JzxuZy1jb250ZW50PjwvbmctY29udGVudD5cbjxkaXYgY2xhc3M9Im1hdC1tZW51LXJpcHBsZSIgbWF0UmlwcGxlXG4gICAgIFttYXRSaXBwbGVEaXNhYmxlZF09ImRpc2FibGVSaXBwbGUgfHwgZGlzYWJsZWQiXG4gICAgIFttYXRSaXBwbGVUcmlnZ2VyXT0iX2dldEhvc3RFbGVtZW50KCkiPlxuPC9kaXY+XG5cbjxzdmdcbiAgKm5nSWY9Il90cmlnZ2Vyc1N1Ym1lbnUiXG4gIGNsYXNzPSJtYXQtbWVudS1zdWJtZW51LWljb24iXG4gIHZpZXdCb3g9IjAgMCA1IDEwIlxuICBmb2N1c2FibGU9ImZhbHNlIj48cG9seWdvbiBwb2ludHM9IjAsMCA1LDUgMCwxMCIvPjwvc3ZnPlxuJ31dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOktofSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbc01dfV19LHt0eXBlOmZGfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbenFdfSx7dHlwZTpCcn1dfSx7dHlwZTpPYn1dfSkse3JvbGU6W3t0eXBlOlJffV0sX2NoZWNrRGlzYWJsZWQ6W3t0eXBlOlRfLGFyZ3M6WyJjbGljayIsWyIkZXZlbnQiXV19XSxfaGFuZGxlTW91c2VFbnRlcjpbe3R5cGU6VF8sYXJnczpbIm1vdXNlZW50ZXIiXX1dfSk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjb25zdCBGcT1uZXcgZXIoIm1hdC1tZW51LWRlZmF1bHQtb3B0aW9ucyIse3Byb3ZpZGVkSW46InJvb3QiLGZhY3Rvcnk6ZnVuY3Rpb24gTHEoKXtyZXR1cm57b3ZlcmxhcFRyaWdnZXI6ITEseFBvc2l0aW9uOiJhZnRlciIseVBvc2l0aW9uOiJiZWxvdyIsYmFja2Ryb3BDbGFzczoiY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AifX19KTtsZXQgQnE9MDtjbGFzcyBWcXtjb25zdHJ1Y3Rvcih0LGUsbil7dGhpcy5fZWxlbWVudFJlZj10LHRoaXMuX25nWm9uZT1lLHRoaXMuX2RlZmF1bHRPcHRpb25zPW4sdGhpcy5feFBvc2l0aW9uPXRoaXMuX2RlZmF1bHRPcHRpb25zLnhQb3NpdGlvbix0aGlzLl95UG9zaXRpb249dGhpcy5fZGVmYXVsdE9wdGlvbnMueVBvc2l0aW9uLHRoaXMuX2RpcmVjdERlc2NlbmRhbnRJdGVtcz1uZXcgUnksdGhpcy5fdGFiU3Vic2NyaXB0aW9uPXUuRU1QVFksdGhpcy5fY2xhc3NMaXN0PXt9LHRoaXMuX3BhbmVsQW5pbWF0aW9uU3RhdGU9InZvaWQiLHRoaXMuX2FuaW1hdGlvbkRvbmU9bmV3IEIsdGhpcy5vdmVybGF5UGFuZWxDbGFzcz10aGlzLl9kZWZhdWx0T3B0aW9ucy5vdmVybGF5UGFuZWxDbGFzc3x8IiIsdGhpcy5iYWNrZHJvcENsYXNzPXRoaXMuX2RlZmF1bHRPcHRpb25zLmJhY2tkcm9wQ2xhc3MsdGhpcy5fb3ZlcmxhcFRyaWdnZXI9dGhpcy5fZGVmYXVsdE9wdGlvbnMub3ZlcmxhcFRyaWdnZXIsdGhpcy5faGFzQmFja2Ryb3A9dGhpcy5fZGVmYXVsdE9wdGlvbnMuaGFzQmFja2Ryb3AsdGhpcy5jbG9zZWQ9bmV3IFN5LHRoaXMuY2xvc2U9dGhpcy5jbG9zZWQsdGhpcy5wYW5lbElkPSJtYXQtbWVudS1wYW5lbC0iK0JxKyt9Z2V0IHhQb3NpdGlvbigpe3JldHVybiB0aGlzLl94UG9zaXRpb259c2V0IHhQb3NpdGlvbih0KXsiYmVmb3JlIj09PXR8fCJhZnRlciI9PT10fHwidW5kZWZpbmVkIiE9dHlwZW9mIG5nRGV2TW9kZSYmIW5nRGV2TW9kZXx8KGZ1bmN0aW9uIGUoKXt0aHJvdyBFcnJvcigneFBvc2l0aW9uIHZhbHVlIG11c3QgYmUgZWl0aGVyIFwnYmVmb3JlXCcgb3IgYWZ0ZXJcJy5cbiAgICAgIEV4YW1wbGU6IDxtYXQtbWVudSB4UG9zaXRpb249ImJlZm9yZSIgI21lbnU9Im1hdE1lbnUiPjwvbWF0LW1lbnU+Jyl9KSgpLHRoaXMuX3hQb3NpdGlvbj10LHRoaXMuc2V0UG9zaXRpb25DbGFzc2VzKCl9Z2V0IHlQb3NpdGlvbigpe3JldHVybiB0aGlzLl95UG9zaXRpb259c2V0IHlQb3NpdGlvbih0KXsiYWJvdmUiPT09dHx8ImJlbG93Ij09PXR8fCJ1bmRlZmluZWQiIT10eXBlb2YgbmdEZXZNb2RlJiYhbmdEZXZNb2RlfHwoZnVuY3Rpb24gZSgpe3Rocm93IEVycm9yKCd5UG9zaXRpb24gdmFsdWUgbXVzdCBiZSBlaXRoZXIgXCdhYm92ZVwnIG9yIGJlbG93XCcuXG4gICAgICBFeGFtcGxlOiA8bWF0LW1lbnUgeVBvc2l0aW9uPSJhYm92ZSIgI21lbnU9Im1hdE1lbnUiPjwvbWF0LW1lbnU+Jyl9KSgpLHRoaXMuX3lQb3NpdGlvbj10LHRoaXMuc2V0UG9zaXRpb25DbGFzc2VzKCl9Z2V0IG92ZXJsYXBUcmlnZ2VyKCl7cmV0dXJuIHRoaXMuX292ZXJsYXBUcmlnZ2VyfXNldCBvdmVybGFwVHJpZ2dlcih0KXt0aGlzLl9vdmVybGFwVHJpZ2dlcj1lSCh0KX1nZXQgaGFzQmFja2Ryb3AoKXtyZXR1cm4gdGhpcy5faGFzQmFja2Ryb3B9c2V0IGhhc0JhY2tkcm9wKHQpe3RoaXMuX2hhc0JhY2tkcm9wPWVIKHQpfXNldCBwYW5lbENsYXNzKHQpe2NvbnN0IGU9dGhpcy5fcHJldmlvdXNQYW5lbENsYXNzO2UmJmUubGVuZ3RoJiZlLnNwbGl0KCIgIikuZm9yRWFjaCgodD0+e3RoaXMuX2NsYXNzTGlzdFt0XT0hMX0pKSx0aGlzLl9wcmV2aW91c1BhbmVsQ2xhc3M9dCx0JiZ0Lmxlbmd0aCYmKHQuc3BsaXQoIiAiKS5mb3JFYWNoKCh0PT57dGhpcy5fY2xhc3NMaXN0W3RdPSEwfSkpLHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jbGFzc05hbWU9IiIpfWdldCBjbGFzc0xpc3QoKXtyZXR1cm4gdGhpcy5wYW5lbENsYXNzfXNldCBjbGFzc0xpc3QodCl7dGhpcy5wYW5lbENsYXNzPXR9bmdPbkluaXQoKXt0aGlzLnNldFBvc2l0aW9uQ2xhc3NlcygpfW5nQWZ0ZXJDb250ZW50SW5pdCgpe3RoaXMuX3VwZGF0ZURpcmVjdERlc2NlbmRhbnRzKCksdGhpcy5fa2V5TWFuYWdlcj1uZXcgTEgodGhpcy5fZGlyZWN0RGVzY2VuZGFudEl0ZW1zKS53aXRoV3JhcCgpLndpdGhUeXBlQWhlYWQoKS53aXRoSG9tZUFuZEVuZCgpLHRoaXMuX3RhYlN1YnNjcmlwdGlvbj10aGlzLl9rZXlNYW5hZ2VyLnRhYk91dC5zdWJzY3JpYmUoKCgpPT50aGlzLmNsb3NlZC5lbWl0KCJ0YWIiKSkpLHRoaXMuX2RpcmVjdERlc2NlbmRhbnRJdGVtcy5jaGFuZ2VzLnBpcGUoQmUodGhpcy5fZGlyZWN0RGVzY2VuZGFudEl0ZW1zKSxWZSgodD0+cGUoLi4udC5tYXAoKHQ9PnQuX2ZvY3VzZWQpKSkpKSkuc3Vic2NyaWJlKCh0PT50aGlzLl9rZXlNYW5hZ2VyLnVwZGF0ZUFjdGl2ZUl0ZW0odCkpKX1uZ09uRGVzdHJveSgpe3RoaXMuX2RpcmVjdERlc2NlbmRhbnRJdGVtcy5kZXN0cm95KCksdGhpcy5fdGFiU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCksdGhpcy5jbG9zZWQuY29tcGxldGUoKX1faG92ZXJlZCgpe3JldHVybiB0aGlzLl9kaXJlY3REZXNjZW5kYW50SXRlbXMuY2hhbmdlcy5waXBlKEJlKHRoaXMuX2RpcmVjdERlc2NlbmRhbnRJdGVtcyksVmUoKHQ9PnBlKC4uLnQubWFwKCh0PT50Ll9ob3ZlcmVkKSkpKSkpfWFkZEl0ZW0odCl7fXJlbW92ZUl0ZW0odCl7fV9oYW5kbGVLZXlkb3duKHQpe2NvbnN0IGU9dC5rZXlDb2RlLG49dGhpcy5fa2V5TWFuYWdlcjtzd2l0Y2goZSl7Y2FzZSBLSTp0SCh0KXx8KHQucHJldmVudERlZmF1bHQoKSx0aGlzLmNsb3NlZC5lbWl0KCJrZXlkb3duIikpO2JyZWFrO2Nhc2UgMzc6dGhpcy5wYXJlbnRNZW51JiYibHRyIj09PXRoaXMuZGlyZWN0aW9uJiZ0aGlzLmNsb3NlZC5lbWl0KCJrZXlkb3duIik7YnJlYWs7Y2FzZSAzOTp0aGlzLnBhcmVudE1lbnUmJiJydGwiPT09dGhpcy5kaXJlY3Rpb24mJnRoaXMuY2xvc2VkLmVtaXQoImtleWRvd24iKTticmVhaztkZWZhdWx0OmUhPT1RSSYmZSE9PSRJfHxuLnNldEZvY3VzT3JpZ2luKCJrZXlib2FyZCIpLG4ub25LZXlkb3duKHQpfX1mb2N1c0ZpcnN0SXRlbSh0PSJwcm9ncmFtIil7dGhpcy5sYXp5Q29udGVudD90aGlzLl9uZ1pvbmUub25TdGFibGUucGlwZSh2ZSgxKSkuc3Vic2NyaWJlKCgoKT0+dGhpcy5fZm9jdXNGaXJzdEl0ZW0odCkpKTp0aGlzLl9mb2N1c0ZpcnN0SXRlbSh0KX1fZm9jdXNGaXJzdEl0ZW0odCl7Y29uc3QgZT10aGlzLl9rZXlNYW5hZ2VyO2lmKGUuc2V0Rm9jdXNPcmlnaW4odCkuc2V0Rmlyc3RJdGVtQWN0aXZlKCksIWUuYWN0aXZlSXRlbSYmdGhpcy5fZGlyZWN0RGVzY2VuZGFudEl0ZW1zLmxlbmd0aCl7bGV0IHQ9dGhpcy5fZGlyZWN0RGVzY2VuZGFudEl0ZW1zLmZpcnN0Ll9nZXRIb3N0RWxlbWVudCgpLnBhcmVudEVsZW1lbnQ7Zm9yKDt0Oyl7aWYoIm1lbnUiPT09dC5nZXRBdHRyaWJ1dGUoInJvbGUiKSl7dC5mb2N1cygpO2JyZWFrfXQ9dC5wYXJlbnRFbGVtZW50fX19cmVzZXRBY3RpdmVJdGVtKCl7dGhpcy5fa2V5TWFuYWdlci5zZXRBY3RpdmVJdGVtKC0xKX1zZXRFbGV2YXRpb24odCl7Y29uc3QgZT1NYXRoLm1pbih0aGlzLl9iYXNlRWxldmF0aW9uK3QsMjQpLG49YCR7dGhpcy5fZWxldmF0aW9uUHJlZml4fSR7ZX1gLG89T2JqZWN0LmtleXModGhpcy5fY2xhc3NMaXN0KS5maW5kKCh0PT50LnN0YXJ0c1dpdGgodGhpcy5fZWxldmF0aW9uUHJlZml4KSkpO28mJm8hPT10aGlzLl9wcmV2aW91c0VsZXZhdGlvbnx8KHRoaXMuX3ByZXZpb3VzRWxldmF0aW9uJiYodGhpcy5fY2xhc3NMaXN0W3RoaXMuX3ByZXZpb3VzRWxldmF0aW9uXT0hMSksdGhpcy5fY2xhc3NMaXN0W25dPSEwLHRoaXMuX3ByZXZpb3VzRWxldmF0aW9uPW4pfXNldFBvc2l0aW9uQ2xhc3Nlcyh0PXRoaXMueFBvc2l0aW9uLGU9dGhpcy55UG9zaXRpb24pe2NvbnN0IG49dGhpcy5fY2xhc3NMaXN0O25bIm1hdC1tZW51LWJlZm9yZSJdPSJiZWZvcmUiPT09dCxuWyJtYXQtbWVudS1hZnRlciJdPSJhZnRlciI9PT10LG5bIm1hdC1tZW51LWFib3ZlIl09ImFib3ZlIj09PWUsblsibWF0LW1lbnUtYmVsb3ciXT0iYmVsb3ciPT09ZX1fc3RhcnRBbmltYXRpb24oKXt0aGlzLl9wYW5lbEFuaW1hdGlvblN0YXRlPSJlbnRlciJ9X3Jlc2V0QW5pbWF0aW9uKCl7dGhpcy5fcGFuZWxBbmltYXRpb25TdGF0ZT0idm9pZCJ9X29uQW5pbWF0aW9uRG9uZSh0KXt0aGlzLl9hbmltYXRpb25Eb25lLm5leHQodCksdGhpcy5faXNBbmltYXRpbmc9ITF9X29uQW5pbWF0aW9uU3RhcnQodCl7dGhpcy5faXNBbmltYXRpbmc9ITAsImVudGVyIj09PXQudG9TdGF0ZSYmMD09PXRoaXMuX2tleU1hbmFnZXIuYWN0aXZlSXRlbUluZGV4JiYodC5lbGVtZW50LnNjcm9sbFRvcD0wKX1fdXBkYXRlRGlyZWN0RGVzY2VuZGFudHMoKXt0aGlzLl9hbGxJdGVtcy5jaGFuZ2VzLnBpcGUoQmUodGhpcy5fYWxsSXRlbXMpKS5zdWJzY3JpYmUoKHQ9Pnt0aGlzLl9kaXJlY3REZXNjZW5kYW50SXRlbXMucmVzZXQodC5maWx0ZXIoKHQ9PnQuX3BhcmVudE1lbnU9PT10aGlzKSkpLHRoaXMuX2RpcmVjdERlc2NlbmRhbnRJdGVtcy5ub3RpZnlPbkNoYW5nZXMoKX0pKX19VnEuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFZxKShnZihLaCksZ2YobUMpLGdmKEZxKSl9LFZxLsm1ZGlyPWhvKHt0eXBlOlZxLGNvbnRlbnRRdWVyaWVzOmZ1bmN0aW9uIHQoZSxuLG8pe2lmKDEmZSYmKGp5KG8sVHEsNSksankobyxIcSw1KSxqeShvLEhxLDQpKSwyJmUpe2xldCB0O0J5KHQ9VXkoKSkmJihuLmxhenlDb250ZW50PXQuZmlyc3QpLEJ5KHQ9VXkoKSkmJihuLl9hbGxJdGVtcz10KSxCeSh0PVV5KCkpJiYobi5pdGVtcz10KX19LHZpZXdRdWVyeTpmdW5jdGlvbiB0KGUsbil7aWYoMSZlJiZWeShFYiw1KSwyJmUpe2xldCB0O0J5KHQ9VXkoKSkmJihuLnRlbXBsYXRlUmVmPXQuZmlyc3QpfX0saW5wdXRzOntiYWNrZHJvcENsYXNzOiJiYWNrZHJvcENsYXNzIix4UG9zaXRpb246InhQb3NpdGlvbiIseVBvc2l0aW9uOiJ5UG9zaXRpb24iLG92ZXJsYXBUcmlnZ2VyOiJvdmVybGFwVHJpZ2dlciIsaGFzQmFja2Ryb3A6Imhhc0JhY2tkcm9wIixwYW5lbENsYXNzOlsiY2xhc3MiLCJwYW5lbENsYXNzIl0sY2xhc3NMaXN0OiJjbGFzc0xpc3QiLGFyaWFMYWJlbDpbImFyaWEtbGFiZWwiLCJhcmlhTGFiZWwiXSxhcmlhTGFiZWxsZWRieTpbImFyaWEtbGFiZWxsZWRieSIsImFyaWFMYWJlbGxlZGJ5Il0sYXJpYURlc2NyaWJlZGJ5OlsiYXJpYS1kZXNjcmliZWRieSIsImFyaWFEZXNjcmliZWRieSJdfSxvdXRwdXRzOntjbG9zZWQ6ImNsb3NlZCIsY2xvc2U6ImNsb3NlIn19KSxWcS5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOktofSx7dHlwZTptQ30se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W0ZxXX1dfV0sVnEucHJvcERlY29yYXRvcnM9e19hbGxJdGVtczpbe3R5cGU6b3IsYXJnczpbSHEse2Rlc2NlbmRhbnRzOiEwfV19XSxiYWNrZHJvcENsYXNzOlt7dHlwZTpSX31dLGFyaWFMYWJlbDpbe3R5cGU6Ul8sYXJnczpbImFyaWEtbGFiZWwiXX1dLGFyaWFMYWJlbGxlZGJ5Olt7dHlwZTpSXyxhcmdzOlsiYXJpYS1sYWJlbGxlZGJ5Il19XSxhcmlhRGVzY3JpYmVkYnk6W3t0eXBlOlJfLGFyZ3M6WyJhcmlhLWRlc2NyaWJlZGJ5Il19XSx4UG9zaXRpb246W3t0eXBlOlJffV0seVBvc2l0aW9uOlt7dHlwZTpSX31dLHRlbXBsYXRlUmVmOlt7dHlwZTphcixhcmdzOltFYl19XSxpdGVtczpbe3R5cGU6b3IsYXJnczpbSHEse2Rlc2NlbmRhbnRzOiExfV19XSxsYXp5Q29udGVudDpbe3R5cGU6aXIsYXJnczpbVHFdfV0sb3ZlcmxhcFRyaWdnZXI6W3t0eXBlOlJffV0saGFzQmFja2Ryb3A6W3t0eXBlOlJffV0scGFuZWxDbGFzczpbe3R5cGU6Ul8sYXJnczpbImNsYXNzIl19XSxjbGFzc0xpc3Q6W3t0eXBlOlJffV0sY2xvc2VkOlt7dHlwZTpFX31dLGNsb3NlOlt7dHlwZTpFX31dfSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKFZxLFt7dHlwZTprX31dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpLaH0se3R5cGU6bUN9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltGcV19XX1dfSkse2JhY2tkcm9wQ2xhc3M6W3t0eXBlOlJffV0sY2xvc2VkOlt7dHlwZTpFX31dLGNsb3NlOlt7dHlwZTpFX31dLHhQb3NpdGlvbjpbe3R5cGU6Ul99XSx5UG9zaXRpb246W3t0eXBlOlJffV0sb3ZlcmxhcFRyaWdnZXI6W3t0eXBlOlJffV0saGFzQmFja2Ryb3A6W3t0eXBlOlJffV0scGFuZWxDbGFzczpbe3R5cGU6Ul8sYXJnczpbImNsYXNzIl19XSxjbGFzc0xpc3Q6W3t0eXBlOlJffV0sX2FsbEl0ZW1zOlt7dHlwZTpvcixhcmdzOltIcSx7ZGVzY2VuZGFudHM6ITB9XX1dLGFyaWFMYWJlbDpbe3R5cGU6Ul8sYXJnczpbImFyaWEtbGFiZWwiXX1dLGFyaWFMYWJlbGxlZGJ5Olt7dHlwZTpSXyxhcmdzOlsiYXJpYS1sYWJlbGxlZGJ5Il19XSxhcmlhRGVzY3JpYmVkYnk6W3t0eXBlOlJfLGFyZ3M6WyJhcmlhLWRlc2NyaWJlZGJ5Il19XSx0ZW1wbGF0ZVJlZjpbe3R5cGU6YXIsYXJnczpbRWJdfV0saXRlbXM6W3t0eXBlOm9yLGFyZ3M6W0hxLHtkZXNjZW5kYW50czohMX1dfV0sbGF6eUNvbnRlbnQ6W3t0eXBlOmlyLGFyZ3M6W1RxXX1dfSk7Y2xhc3MganEgZXh0ZW5kcyBWcXtjb25zdHJ1Y3Rvcih0LGUsbil7c3VwZXIodCxlLG4pLHRoaXMuX2VsZXZhdGlvblByZWZpeD0ibWF0LWVsZXZhdGlvbi16Iix0aGlzLl9iYXNlRWxldmF0aW9uPTR9fWpxLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxqcSkoZ2YoS2gpLGdmKG1DKSxnZihGcSkpfSxqcS7JtWNtcD1zbyh7dHlwZTpqcSxzZWxlY3RvcnM6W1sibWF0LW1lbnUiXV0saG9zdFZhcnM6Myxob3N0QmluZGluZ3M6ZnVuY3Rpb24gdChlLG4pezImZSYmeW0oImFyaWEtbGFiZWwiLG51bGwpKCJhcmlhLWxhYmVsbGVkYnkiLG51bGwpKCJhcmlhLWRlc2NyaWJlZGJ5IixudWxsKX0sZXhwb3J0QXM6WyJtYXRNZW51Il0sZmVhdHVyZXM6W2poKFt7cHJvdmlkZTp6cSx1c2VFeGlzdGluZzpqcX1dKSxRcF0sbmdDb250ZW50U2VsZWN0b3JzOlJxLGRlY2xzOjEsdmFyczowLGNvbnN0czpbWyJ0YWJpbmRleCIsIi0xIiwicm9sZSIsIm1lbnUiLDEsIm1hdC1tZW51LXBhbmVsIiwzLCJpZCIsIm5nQ2xhc3MiLCJrZXlkb3duIiwiY2xpY2siXSxbMSwibWF0LW1lbnUtY29udGVudCJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoSGYoKSxIbSgwLEVxLDMsNiwibmctdGVtcGxhdGUiKSl9LGRpcmVjdGl2ZXM6W0N2XSxzdHlsZXM6WyJtYXQtbWVudXtkaXNwbGF5Om5vbmV9Lm1hdC1tZW51LXBhbmVse21pbi13aWR0aDoxMTJweDttYXgtd2lkdGg6MjgwcHg7b3ZlcmZsb3c6YXV0bzstd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzp0b3VjaDttYXgtaGVpZ2h0OmNhbGMoMTAwdmggLSA0OHB4KTtib3JkZXItcmFkaXVzOjRweDtvdXRsaW5lOjA7bWluLWhlaWdodDo2NHB4fS5tYXQtbWVudS1wYW5lbC5uZy1hbmltYXRpbmd7cG9pbnRlci1ldmVudHM6bm9uZX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtbWVudS1wYW5lbHtvdXRsaW5lOnNvbGlkIDFweH0ubWF0LW1lbnUtY29udGVudDpub3QoOmVtcHR5KXtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4fS5tYXQtbWVudS1pdGVtey13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTstbW96LXVzZXItc2VsZWN0Om5vbmU7LW1zLXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZTtjdXJzb3I6cG9pbnRlcjtvdXRsaW5lOm5vbmU7Ym9yZGVyOm5vbmU7LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50O3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2xpbmUtaGVpZ2h0OjQ4cHg7aGVpZ2h0OjQ4cHg7cGFkZGluZzowIDE2cHg7dGV4dC1hbGlnbjpsZWZ0O3RleHQtZGVjb3JhdGlvbjpub25lO21heC13aWR0aDoxMDAlO3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtbWVudS1pdGVtOjotbW96LWZvY3VzLWlubmVye2JvcmRlcjowfS5tYXQtbWVudS1pdGVtW2Rpc2FibGVkXXtjdXJzb3I6ZGVmYXVsdH1bZGlyPXJ0bF0gLm1hdC1tZW51LWl0ZW17dGV4dC1hbGlnbjpyaWdodH0ubWF0LW1lbnUtaXRlbSAubWF0LWljb257bWFyZ2luLXJpZ2h0OjE2cHg7dmVydGljYWwtYWxpZ246bWlkZGxlfS5tYXQtbWVudS1pdGVtIC5tYXQtaWNvbiBzdmd7dmVydGljYWwtYWxpZ246dG9wfVtkaXI9cnRsXSAubWF0LW1lbnUtaXRlbSAubWF0LWljb257bWFyZ2luLWxlZnQ6MTZweDttYXJnaW4tcmlnaHQ6MH0ubWF0LW1lbnUtaXRlbVtkaXNhYmxlZF17cG9pbnRlci1ldmVudHM6bm9uZX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtbWVudS1pdGVte21hcmdpbi10b3A6MXB4fS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1tZW51LWl0ZW0uY2RrLXByb2dyYW0tZm9jdXNlZCwuY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtbWVudS1pdGVtLmNkay1rZXlib2FyZC1mb2N1c2VkLC5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1tZW51LWl0ZW0taGlnaGxpZ2h0ZWR7b3V0bGluZTpkb3R0ZWQgMXB4fS5tYXQtbWVudS1pdGVtLXN1Ym1lbnUtdHJpZ2dlcntwYWRkaW5nLXJpZ2h0OjMycHh9W2Rpcj1ydGxdIC5tYXQtbWVudS1pdGVtLXN1Ym1lbnUtdHJpZ2dlcntwYWRkaW5nLXJpZ2h0OjE2cHg7cGFkZGluZy1sZWZ0OjMycHh9Lm1hdC1tZW51LXN1Ym1lbnUtaWNvbntwb3NpdGlvbjphYnNvbHV0ZTt0b3A6NTAlO3JpZ2h0OjE2cHg7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTUwJSk7d2lkdGg6NXB4O2hlaWdodDoxMHB4O2ZpbGw6Y3VycmVudENvbG9yfVtkaXI9cnRsXSAubWF0LW1lbnUtc3VibWVudS1pY29ue3JpZ2h0OmF1dG87bGVmdDoxNnB4O3RyYW5zZm9ybTp0cmFuc2xhdGVZKC01MCUpIHNjYWxlWCgtMSl9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LW1lbnUtc3VibWVudS1pY29ue2ZpbGw6Q2FudmFzVGV4dH1idXR0b24ubWF0LW1lbnUtaXRlbXt3aWR0aDoxMDAlfS5tYXQtbWVudS1pdGVtIC5tYXQtbWVudS1yaXBwbGV7dG9wOjA7bGVmdDowO3JpZ2h0OjA7Ym90dG9tOjA7cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6bm9uZX1cbiJdLGVuY2Fwc3VsYXRpb246MixkYXRhOnthbmltYXRpb246W0FxLnRyYW5zZm9ybU1lbnUsQXEuZmFkZUluSXRlbXNdfSxjaGFuZ2VEZXRlY3Rpb246MH0pLGpxLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6S2h9LHt0eXBlOm1DfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbRnFdfV19XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKGpxLFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6Im1hdC1tZW51Iix0ZW1wbGF0ZTonPG5nLXRlbXBsYXRlPlxuICA8ZGl2XG4gICAgY2xhc3M9Im1hdC1tZW51LXBhbmVsIlxuICAgIFtpZF09InBhbmVsSWQiXG4gICAgW25nQ2xhc3NdPSJfY2xhc3NMaXN0IlxuICAgIChrZXlkb3duKT0iX2hhbmRsZUtleWRvd24oJGV2ZW50KSJcbiAgICAoY2xpY2spPSJjbG9zZWQuZW1pdChcJ2NsaWNrXCcpIlxuICAgIFtAdHJhbnNmb3JtTWVudV09Il9wYW5lbEFuaW1hdGlvblN0YXRlIlxuICAgIChAdHJhbnNmb3JtTWVudS5zdGFydCk9Il9vbkFuaW1hdGlvblN0YXJ0KCRldmVudCkiXG4gICAgKEB0cmFuc2Zvcm1NZW51LmRvbmUpPSJfb25BbmltYXRpb25Eb25lKCRldmVudCkiXG4gICAgdGFiaW5kZXg9Ii0xIlxuICAgIHJvbGU9Im1lbnUiXG4gICAgW2F0dHIuYXJpYS1sYWJlbF09ImFyaWFMYWJlbCB8fCBudWxsIlxuICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09ImFyaWFMYWJlbGxlZGJ5IHx8IG51bGwiXG4gICAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09ImFyaWFEZXNjcmliZWRieSB8fCBudWxsIj5cbiAgICA8ZGl2IGNsYXNzPSJtYXQtbWVudS1jb250ZW50Ij5cbiAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuJyxjaGFuZ2VEZXRlY3Rpb246am4uT25QdXNoLGVuY2Fwc3VsYXRpb246V24uTm9uZSxleHBvcnRBczoibWF0TWVudSIsaG9zdDp7IlthdHRyLmFyaWEtbGFiZWxdIjoibnVsbCIsIlthdHRyLmFyaWEtbGFiZWxsZWRieV0iOiJudWxsIiwiW2F0dHIuYXJpYS1kZXNjcmliZWRieV0iOiJudWxsIn0sYW5pbWF0aW9uczpbQXEudHJhbnNmb3JtTWVudSxBcS5mYWRlSW5JdGVtc10scHJvdmlkZXJzOlt7cHJvdmlkZTp6cSx1c2VFeGlzdGluZzpqcX1dLHN0eWxlczpbIm1hdC1tZW51e2Rpc3BsYXk6bm9uZX0ubWF0LW1lbnUtcGFuZWx7bWluLXdpZHRoOjExMnB4O21heC13aWR0aDoyODBweDtvdmVyZmxvdzphdXRvOy13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOnRvdWNoO21heC1oZWlnaHQ6Y2FsYygxMDB2aCAtIDQ4cHgpO2JvcmRlci1yYWRpdXM6NHB4O291dGxpbmU6MDttaW4taGVpZ2h0OjY0cHh9Lm1hdC1tZW51LXBhbmVsLm5nLWFuaW1hdGluZ3twb2ludGVyLWV2ZW50czpub25lfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1tZW51LXBhbmVse291dGxpbmU6c29saWQgMXB4fS5tYXQtbWVudS1jb250ZW50Om5vdCg6ZW1wdHkpe3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1tZW51LWl0ZW17LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTstbXMtdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lO2N1cnNvcjpwb2ludGVyO291dGxpbmU6bm9uZTtib3JkZXI6bm9uZTstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnQ7d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7bGluZS1oZWlnaHQ6NDhweDtoZWlnaHQ6NDhweDtwYWRkaW5nOjAgMTZweDt0ZXh0LWFsaWduOmxlZnQ7dGV4dC1kZWNvcmF0aW9uOm5vbmU7bWF4LXdpZHRoOjEwMCU7cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1tZW51LWl0ZW06Oi1tb3otZm9jdXMtaW5uZXJ7Ym9yZGVyOjB9Lm1hdC1tZW51LWl0ZW1bZGlzYWJsZWRde2N1cnNvcjpkZWZhdWx0fVtkaXI9cnRsXSAubWF0LW1lbnUtaXRlbXt0ZXh0LWFsaWduOnJpZ2h0fS5tYXQtbWVudS1pdGVtIC5tYXQtaWNvbnttYXJnaW4tcmlnaHQ6MTZweDt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9Lm1hdC1tZW51LWl0ZW0gLm1hdC1pY29uIHN2Z3t2ZXJ0aWNhbC1hbGlnbjp0b3B9W2Rpcj1ydGxdIC5tYXQtbWVudS1pdGVtIC5tYXQtaWNvbnttYXJnaW4tbGVmdDoxNnB4O21hcmdpbi1yaWdodDowfS5tYXQtbWVudS1pdGVtW2Rpc2FibGVkXXtwb2ludGVyLWV2ZW50czpub25lfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1tZW51LWl0ZW17bWFyZ2luLXRvcDoxcHh9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LW1lbnUtaXRlbS5jZGstcHJvZ3JhbS1mb2N1c2VkLC5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1tZW51LWl0ZW0uY2RrLWtleWJvYXJkLWZvY3VzZWQsLmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LW1lbnUtaXRlbS1oaWdobGlnaHRlZHtvdXRsaW5lOmRvdHRlZCAxcHh9Lm1hdC1tZW51LWl0ZW0tc3VibWVudS10cmlnZ2Vye3BhZGRpbmctcmlnaHQ6MzJweH1bZGlyPXJ0bF0gLm1hdC1tZW51LWl0ZW0tc3VibWVudS10cmlnZ2Vye3BhZGRpbmctcmlnaHQ6MTZweDtwYWRkaW5nLWxlZnQ6MzJweH0ubWF0LW1lbnUtc3VibWVudS1pY29ue3Bvc2l0aW9uOmFic29sdXRlO3RvcDo1MCU7cmlnaHQ6MTZweDt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtNTAlKTt3aWR0aDo1cHg7aGVpZ2h0OjEwcHg7ZmlsbDpjdXJyZW50Q29sb3J9W2Rpcj1ydGxdIC5tYXQtbWVudS1zdWJtZW51LWljb257cmlnaHQ6YXV0bztsZWZ0OjE2cHg7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTUwJSkgc2NhbGVYKC0xKX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtbWVudS1zdWJtZW51LWljb257ZmlsbDpDYW52YXNUZXh0fWJ1dHRvbi5tYXQtbWVudS1pdGVte3dpZHRoOjEwMCV9Lm1hdC1tZW51LWl0ZW0gLm1hdC1tZW51LXJpcHBsZXt0b3A6MDtsZWZ0OjA7cmlnaHQ6MDtib3R0b206MDtwb3NpdGlvbjphYnNvbHV0ZTtwb2ludGVyLWV2ZW50czpub25lfVxuIl19XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpLaH0se3R5cGU6bUN9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltGcV19XX1dfSksbnVsbCk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjb25zdCBVcT1uZXcgZXIoIm1hdC1tZW51LXNjcm9sbC1zdHJhdGVneSIpO2NvbnN0IFdxPXtwcm92aWRlOlVxLGRlcHM6W0tCXSx1c2VGYWN0b3J5OmZ1bmN0aW9uIEdxKHQpe3JldHVybigpPT50LnNjcm9sbFN0cmF0ZWdpZXMucmVwb3NpdGlvbigpfX0sWXE9Ykgoe3Bhc3NpdmU6ITB9KTtjbGFzcyBxcXtjb25zdHJ1Y3Rvcih0LGUsbixvLGksYSxyLHMpe3RoaXMuX292ZXJsYXk9dCx0aGlzLl9lbGVtZW50PWUsdGhpcy5fdmlld0NvbnRhaW5lclJlZj1uLHRoaXMuX21lbnVJdGVtSW5zdGFuY2U9YSx0aGlzLl9kaXI9cix0aGlzLl9mb2N1c01vbml0b3I9cyx0aGlzLl9vdmVybGF5UmVmPW51bGwsdGhpcy5fbWVudU9wZW49ITEsdGhpcy5fY2xvc2luZ0FjdGlvbnNTdWJzY3JpcHRpb249dS5FTVBUWSx0aGlzLl9ob3ZlclN1YnNjcmlwdGlvbj11LkVNUFRZLHRoaXMuX21lbnVDbG9zZVN1YnNjcmlwdGlvbj11LkVNUFRZLHRoaXMuX2hhbmRsZVRvdWNoU3RhcnQ9dD0+e2VGKHQpfHwodGhpcy5fb3BlbmVkQnk9InRvdWNoIil9LHRoaXMuX29wZW5lZEJ5PXZvaWQgMCx0aGlzLnJlc3RvcmVGb2N1cz0hMCx0aGlzLm1lbnVPcGVuZWQ9bmV3IFN5LHRoaXMub25NZW51T3Blbj10aGlzLm1lbnVPcGVuZWQsdGhpcy5tZW51Q2xvc2VkPW5ldyBTeSx0aGlzLm9uTWVudUNsb3NlPXRoaXMubWVudUNsb3NlZCx0aGlzLl9zY3JvbGxTdHJhdGVneT1vLHRoaXMuX3BhcmVudE1hdGVyaWFsTWVudT1pIGluc3RhbmNlb2YgVnE/aTp2b2lkIDAsZS5uYXRpdmVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoInRvdWNoc3RhcnQiLHRoaXMuX2hhbmRsZVRvdWNoU3RhcnQsWXEpLGEmJihhLl90cmlnZ2Vyc1N1Ym1lbnU9dGhpcy50cmlnZ2Vyc1N1Ym1lbnUoKSl9Z2V0IF9kZXByZWNhdGVkTWF0TWVudVRyaWdnZXJGb3IoKXtyZXR1cm4gdGhpcy5tZW51fXNldCBfZGVwcmVjYXRlZE1hdE1lbnVUcmlnZ2VyRm9yKHQpe3RoaXMubWVudT10fWdldCBtZW51KCl7cmV0dXJuIHRoaXMuX21lbnV9c2V0IG1lbnUodCl7dCE9PXRoaXMuX21lbnUmJih0aGlzLl9tZW51PXQsdGhpcy5fbWVudUNsb3NlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCksdCYmKHQhPT10aGlzLl9wYXJlbnRNYXRlcmlhbE1lbnV8fCJ1bmRlZmluZWQiIT10eXBlb2YgbmdEZXZNb2RlJiYhbmdEZXZNb2RlfHwoZnVuY3Rpb24gZSgpe3Rocm93IEVycm9yKCJtYXRNZW51VHJpZ2dlckZvcjogbWVudSBjYW5ub3QgY29udGFpbiBpdHMgb3duIHRyaWdnZXIuIEFzc2lnbiBhIG1lbnUgdGhhdCBpcyBub3QgYSBwYXJlbnQgb2YgdGhlIHRyaWdnZXIgb3IgbW92ZSB0aGUgdHJpZ2dlciBvdXRzaWRlIG9mIHRoZSBtZW51LiIpfSkoKSx0aGlzLl9tZW51Q2xvc2VTdWJzY3JpcHRpb249dC5jbG9zZS5zdWJzY3JpYmUoKHQ9Pnt0aGlzLl9kZXN0cm95TWVudSh0KSwiY2xpY2siIT09dCYmInRhYiIhPT10fHwhdGhpcy5fcGFyZW50TWF0ZXJpYWxNZW51fHx0aGlzLl9wYXJlbnRNYXRlcmlhbE1lbnUuY2xvc2VkLmVtaXQodCl9KSkpKX1uZ0FmdGVyQ29udGVudEluaXQoKXt0aGlzLl9jaGVja01lbnUoKSx0aGlzLl9oYW5kbGVIb3ZlcigpfW5nT25EZXN0cm95KCl7dGhpcy5fb3ZlcmxheVJlZiYmKHRoaXMuX292ZXJsYXlSZWYuZGlzcG9zZSgpLHRoaXMuX292ZXJsYXlSZWY9bnVsbCksdGhpcy5fZWxlbWVudC5uYXRpdmVFbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoInRvdWNoc3RhcnQiLHRoaXMuX2hhbmRsZVRvdWNoU3RhcnQsWXEpLHRoaXMuX21lbnVDbG9zZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpLHRoaXMuX2Nsb3NpbmdBY3Rpb25zU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCksdGhpcy5faG92ZXJTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKX1nZXQgbWVudU9wZW4oKXtyZXR1cm4gdGhpcy5fbWVudU9wZW59Z2V0IGRpcigpe3JldHVybiB0aGlzLl9kaXImJiJydGwiPT09dGhpcy5fZGlyLnZhbHVlPyJydGwiOiJsdHIifXRyaWdnZXJzU3VibWVudSgpe3JldHVybiEoIXRoaXMuX21lbnVJdGVtSW5zdGFuY2V8fCF0aGlzLl9wYXJlbnRNYXRlcmlhbE1lbnUpfXRvZ2dsZU1lbnUoKXtyZXR1cm4gdGhpcy5fbWVudU9wZW4/dGhpcy5jbG9zZU1lbnUoKTp0aGlzLm9wZW5NZW51KCl9b3Blbk1lbnUoKXtpZih0aGlzLl9tZW51T3BlbilyZXR1cm47dGhpcy5fY2hlY2tNZW51KCk7Y29uc3QgdD10aGlzLl9jcmVhdGVPdmVybGF5KCksZT10LmdldENvbmZpZygpO3RoaXMuX3NldFBvc2l0aW9uKGUucG9zaXRpb25TdHJhdGVneSksZS5oYXNCYWNrZHJvcD1udWxsPT10aGlzLm1lbnUuaGFzQmFja2Ryb3A/IXRoaXMudHJpZ2dlcnNTdWJtZW51KCk6dGhpcy5tZW51Lmhhc0JhY2tkcm9wLHQuYXR0YWNoKHRoaXMuX2dldFBvcnRhbCgpKSx0aGlzLm1lbnUubGF6eUNvbnRlbnQmJnRoaXMubWVudS5sYXp5Q29udGVudC5hdHRhY2godGhpcy5tZW51RGF0YSksdGhpcy5fY2xvc2luZ0FjdGlvbnNTdWJzY3JpcHRpb249dGhpcy5fbWVudUNsb3NpbmdBY3Rpb25zKCkuc3Vic2NyaWJlKCgoKT0+dGhpcy5jbG9zZU1lbnUoKSkpLHRoaXMuX2luaXRNZW51KCksdGhpcy5tZW51IGluc3RhbmNlb2YgVnEmJnRoaXMubWVudS5fc3RhcnRBbmltYXRpb24oKX1jbG9zZU1lbnUoKXt0aGlzLm1lbnUuY2xvc2UuZW1pdCgpfWZvY3VzKHQsZSl7dGhpcy5fZm9jdXNNb25pdG9yJiZ0P3RoaXMuX2ZvY3VzTW9uaXRvci5mb2N1c1ZpYSh0aGlzLl9lbGVtZW50LHQsZSk6dGhpcy5fZWxlbWVudC5uYXRpdmVFbGVtZW50LmZvY3VzKGUpfXVwZGF0ZVBvc2l0aW9uKCl7dmFyIHQ7bnVsbD09PSh0PXRoaXMuX292ZXJsYXlSZWYpfHx2b2lkIDA9PT10fHx0LnVwZGF0ZVBvc2l0aW9uKCl9X2Rlc3Ryb3lNZW51KHQpe2lmKCF0aGlzLl9vdmVybGF5UmVmfHwhdGhpcy5tZW51T3BlbilyZXR1cm47Y29uc3QgZT10aGlzLm1lbnU7dGhpcy5fY2xvc2luZ0FjdGlvbnNTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSx0aGlzLl9vdmVybGF5UmVmLmRldGFjaCgpLCF0aGlzLnJlc3RvcmVGb2N1c3x8ImtleWRvd24iIT09dCYmdGhpcy5fb3BlbmVkQnkmJnRoaXMudHJpZ2dlcnNTdWJtZW51KCl8fHRoaXMuZm9jdXModGhpcy5fb3BlbmVkQnkpLHRoaXMuX29wZW5lZEJ5PXZvaWQgMCxlIGluc3RhbmNlb2YgVnE/KGUuX3Jlc2V0QW5pbWF0aW9uKCksZS5sYXp5Q29udGVudD9lLl9hbmltYXRpb25Eb25lLnBpcGUodWUoKHQ9PiJ2b2lkIj09PXQudG9TdGF0ZSkpLHZlKDEpLGplKGUubGF6eUNvbnRlbnQuX2F0dGFjaGVkKSkuc3Vic2NyaWJlKHtuZXh0OigpPT5lLmxhenlDb250ZW50LmRldGFjaCgpLGNvbXBsZXRlOigpPT50aGlzLl9zZXRJc01lbnVPcGVuKCExKX0pOnRoaXMuX3NldElzTWVudU9wZW4oITEpKToodGhpcy5fc2V0SXNNZW51T3BlbighMSksZS5sYXp5Q29udGVudCYmZS5sYXp5Q29udGVudC5kZXRhY2goKSl9X2luaXRNZW51KCl7dGhpcy5tZW51LnBhcmVudE1lbnU9dGhpcy50cmlnZ2Vyc1N1Ym1lbnUoKT90aGlzLl9wYXJlbnRNYXRlcmlhbE1lbnU6dm9pZCAwLHRoaXMubWVudS5kaXJlY3Rpb249dGhpcy5kaXIsdGhpcy5fc2V0TWVudUVsZXZhdGlvbigpLHRoaXMubWVudS5mb2N1c0ZpcnN0SXRlbSh0aGlzLl9vcGVuZWRCeXx8InByb2dyYW0iKSx0aGlzLl9zZXRJc01lbnVPcGVuKCEwKX1fc2V0TWVudUVsZXZhdGlvbigpe2lmKHRoaXMubWVudS5zZXRFbGV2YXRpb24pe2xldCB0PTAsZT10aGlzLm1lbnUucGFyZW50TWVudTtmb3IoO2U7KXQrKyxlPWUucGFyZW50TWVudTt0aGlzLm1lbnUuc2V0RWxldmF0aW9uKHQpfX1fc2V0SXNNZW51T3Blbih0KXt0aGlzLl9tZW51T3Blbj10LHRoaXMuX21lbnVPcGVuP3RoaXMubWVudU9wZW5lZC5lbWl0KCk6dGhpcy5tZW51Q2xvc2VkLmVtaXQoKSx0aGlzLnRyaWdnZXJzU3VibWVudSgpJiZ0aGlzLl9tZW51SXRlbUluc3RhbmNlLl9zZXRIaWdobGlnaHRlZCh0KX1fY2hlY2tNZW51KCl7dGhpcy5tZW51fHwidW5kZWZpbmVkIiE9dHlwZW9mIG5nRGV2TW9kZSYmIW5nRGV2TW9kZXx8KAovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KZnVuY3Rpb24gdCgpe3Rocm93IEVycm9yKCdtYXRNZW51VHJpZ2dlckZvcjogbXVzdCBwYXNzIGluIGFuIG1hdC1tZW51IGluc3RhbmNlLlxuXG4gICAgRXhhbXBsZTpcbiAgICAgIDxtYXQtbWVudSAjbWVudT0ibWF0TWVudSI+PC9tYXQtbWVudT5cbiAgICAgIDxidXR0b24gW21hdE1lbnVUcmlnZ2VyRm9yXT0ibWVudSI+PC9idXR0b24+Jyl9KSgpfV9jcmVhdGVPdmVybGF5KCl7aWYoIXRoaXMuX292ZXJsYXlSZWYpe2NvbnN0IHQ9dGhpcy5fZ2V0T3ZlcmxheUNvbmZpZygpO3RoaXMuX3N1YnNjcmliZVRvUG9zaXRpb25zKHQucG9zaXRpb25TdHJhdGVneSksdGhpcy5fb3ZlcmxheVJlZj10aGlzLl9vdmVybGF5LmNyZWF0ZSh0KSx0aGlzLl9vdmVybGF5UmVmLmtleWRvd25FdmVudHMoKS5zdWJzY3JpYmUoKX1yZXR1cm4gdGhpcy5fb3ZlcmxheVJlZn1fZ2V0T3ZlcmxheUNvbmZpZygpe3JldHVybiBuZXcgd0Ioe3Bvc2l0aW9uU3RyYXRlZ3k6dGhpcy5fb3ZlcmxheS5wb3NpdGlvbigpLmZsZXhpYmxlQ29ubmVjdGVkVG8odGhpcy5fZWxlbWVudCkud2l0aExvY2tlZFBvc2l0aW9uKCkud2l0aEdyb3dBZnRlck9wZW4oKS53aXRoVHJhbnNmb3JtT3JpZ2luT24oIi5tYXQtbWVudS1wYW5lbCwgLm1hdC1tZGMtbWVudS1wYW5lbCIpLGJhY2tkcm9wQ2xhc3M6dGhpcy5tZW51LmJhY2tkcm9wQ2xhc3N8fCJjZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcCIscGFuZWxDbGFzczp0aGlzLm1lbnUub3ZlcmxheVBhbmVsQ2xhc3Msc2Nyb2xsU3RyYXRlZ3k6dGhpcy5fc2Nyb2xsU3RyYXRlZ3koKSxkaXJlY3Rpb246dGhpcy5fZGlyfSl9X3N1YnNjcmliZVRvUG9zaXRpb25zKHQpe3RoaXMubWVudS5zZXRQb3NpdGlvbkNsYXNzZXMmJnQucG9zaXRpb25DaGFuZ2VzLnN1YnNjcmliZSgodD0+e3RoaXMubWVudS5zZXRQb3NpdGlvbkNsYXNzZXMoInN0YXJ0Ij09PXQuY29ubmVjdGlvblBhaXIub3ZlcmxheVg/ImFmdGVyIjoiYmVmb3JlIiwidG9wIj09PXQuY29ubmVjdGlvblBhaXIub3ZlcmxheVk/ImJlbG93IjoiYWJvdmUiKX0pKX1fc2V0UG9zaXRpb24odCl7bGV0W2Usbl09ImJlZm9yZSI9PT10aGlzLm1lbnUueFBvc2l0aW9uP1siZW5kIiwic3RhcnQiXTpbInN0YXJ0IiwiZW5kIl0sW28saV09ImFib3ZlIj09PXRoaXMubWVudS55UG9zaXRpb24/WyJib3R0b20iLCJ0b3AiXTpbInRvcCIsImJvdHRvbSJdLFthLHJdPVtvLGldLFtzLGxdPVtlLG5dLGM9MDt0aGlzLnRyaWdnZXJzU3VibWVudSgpPyhsPWU9ImJlZm9yZSI9PT10aGlzLm1lbnUueFBvc2l0aW9uPyJzdGFydCI6ImVuZCIsbj1zPSJlbmQiPT09ZT8ic3RhcnQiOiJlbmQiLGM9ImJvdHRvbSI9PT1vPzg6LTgpOnRoaXMubWVudS5vdmVybGFwVHJpZ2dlcnx8KGE9InRvcCI9PT1vPyJib3R0b20iOiJ0b3AiLHI9InRvcCI9PT1pPyJib3R0b20iOiJ0b3AiKSx0LndpdGhQb3NpdGlvbnMoW3tvcmlnaW5YOmUsb3JpZ2luWTphLG92ZXJsYXlYOnMsb3ZlcmxheVk6byxvZmZzZXRZOmN9LHtvcmlnaW5YOm4sb3JpZ2luWTphLG92ZXJsYXlYOmwsb3ZlcmxheVk6byxvZmZzZXRZOmN9LHtvcmlnaW5YOmUsb3JpZ2luWTpyLG92ZXJsYXlYOnMsb3ZlcmxheVk6aSxvZmZzZXRZOi1jfSx7b3JpZ2luWDpuLG9yaWdpblk6cixvdmVybGF5WDpsLG92ZXJsYXlZOmksb2Zmc2V0WTotY31dKX1fbWVudUNsb3NpbmdBY3Rpb25zKCl7Y29uc3QgdD10aGlzLl9vdmVybGF5UmVmLmJhY2tkcm9wQ2xpY2soKSxlPXRoaXMuX292ZXJsYXlSZWYuZGV0YWNobWVudHMoKTtyZXR1cm4gcGUodCx0aGlzLl9wYXJlbnRNYXRlcmlhbE1lbnU/dGhpcy5fcGFyZW50TWF0ZXJpYWxNZW51LmNsb3NlZDp6dCgpLHRoaXMuX3BhcmVudE1hdGVyaWFsTWVudT90aGlzLl9wYXJlbnRNYXRlcmlhbE1lbnUuX2hvdmVyZWQoKS5waXBlKHVlKCh0PT50IT09dGhpcy5fbWVudUl0ZW1JbnN0YW5jZSkpLHVlKCgoKT0+dGhpcy5fbWVudU9wZW4pKSk6enQoKSxlKX1faGFuZGxlTW91c2Vkb3duKHQpe3RGKHQpfHwodGhpcy5fb3BlbmVkQnk9MD09PXQuYnV0dG9uPyJtb3VzZSI6dm9pZCAwLHRoaXMudHJpZ2dlcnNTdWJtZW51KCkmJnQucHJldmVudERlZmF1bHQoKSl9X2hhbmRsZUtleWRvd24odCl7Y29uc3QgZT10LmtleUNvZGU7ZSE9PVhJJiZlIT09Skl8fCh0aGlzLl9vcGVuZWRCeT0ia2V5Ym9hcmQiKSx0aGlzLnRyaWdnZXJzU3VibWVudSgpJiYoMzk9PT1lJiYibHRyIj09PXRoaXMuZGlyfHwzNz09PWUmJiJydGwiPT09dGhpcy5kaXIpJiYodGhpcy5fb3BlbmVkQnk9ImtleWJvYXJkIix0aGlzLm9wZW5NZW51KCkpfV9oYW5kbGVDbGljayh0KXt0aGlzLnRyaWdnZXJzU3VibWVudSgpPyh0LnN0b3BQcm9wYWdhdGlvbigpLHRoaXMub3Blbk1lbnUoKSk6dGhpcy50b2dnbGVNZW51KCl9X2hhbmRsZUhvdmVyKCl7dGhpcy50cmlnZ2Vyc1N1Ym1lbnUoKSYmdGhpcy5fcGFyZW50TWF0ZXJpYWxNZW51JiYodGhpcy5faG92ZXJTdWJzY3JpcHRpb249dGhpcy5fcGFyZW50TWF0ZXJpYWxNZW51Ll9ob3ZlcmVkKCkucGlwZSh1ZSgodD0+dD09PXRoaXMuX21lbnVJdGVtSW5zdGFuY2UmJiF0LmRpc2FibGVkKSksUGUoMCxvdCkpLnN1YnNjcmliZSgoKCk9Pnt0aGlzLl9vcGVuZWRCeT0ibW91c2UiLHRoaXMubWVudSBpbnN0YW5jZW9mIFZxJiZ0aGlzLm1lbnUuX2lzQW5pbWF0aW5nP3RoaXMubWVudS5fYW5pbWF0aW9uRG9uZS5waXBlKHZlKDEpLFBlKDAsb3QpLGplKHRoaXMuX3BhcmVudE1hdGVyaWFsTWVudS5faG92ZXJlZCgpKSkuc3Vic2NyaWJlKCgoKT0+dGhpcy5vcGVuTWVudSgpKSk6dGhpcy5vcGVuTWVudSgpfSkpKX1fZ2V0UG9ydGFsKCl7cmV0dXJuIHRoaXMuX3BvcnRhbCYmdGhpcy5fcG9ydGFsLnRlbXBsYXRlUmVmPT09dGhpcy5tZW51LnRlbXBsYXRlUmVmfHwodGhpcy5fcG9ydGFsPW5ldyBsQih0aGlzLm1lbnUudGVtcGxhdGVSZWYsdGhpcy5fdmlld0NvbnRhaW5lclJlZikpLHRoaXMuX3BvcnRhbH19cXEuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHFxKShnZihLQiksZ2YoS2gpLGdmKEZiKSxnZihVcSksZ2YoenEsOCksZ2YoSHEsMTApLGdmKHZGLDgpLGdmKGZGKSl9LHFxLsm1ZGlyPWhvKHt0eXBlOnFxLHNlbGVjdG9yczpbWyIiLCJtYXQtbWVudS10cmlnZ2VyLWZvciIsIiJdLFsiIiwibWF0TWVudVRyaWdnZXJGb3IiLCIiXV0saG9zdEF0dHJzOlsiYXJpYS1oYXNwb3B1cCIsInRydWUiLDEsIm1hdC1tZW51LXRyaWdnZXIiXSxob3N0VmFyczoyLGhvc3RCaW5kaW5nczpmdW5jdGlvbiB0KGUsbil7MSZlJiZSZigibW91c2Vkb3duIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5faGFuZGxlTW91c2Vkb3duKGUpfSkpKCJrZXlkb3duIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5faGFuZGxlS2V5ZG93bihlKX0pKSgiY2xpY2siLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLl9oYW5kbGVDbGljayhlKX0pKSwyJmUmJnltKCJhcmlhLWV4cGFuZGVkIixuLm1lbnVPcGVufHxudWxsKSgiYXJpYS1jb250cm9scyIsbi5tZW51T3Blbj9uLm1lbnUucGFuZWxJZDpudWxsKX0saW5wdXRzOntyZXN0b3JlRm9jdXM6WyJtYXRNZW51VHJpZ2dlclJlc3RvcmVGb2N1cyIsInJlc3RvcmVGb2N1cyJdLF9kZXByZWNhdGVkTWF0TWVudVRyaWdnZXJGb3I6WyJtYXQtbWVudS10cmlnZ2VyLWZvciIsIl9kZXByZWNhdGVkTWF0TWVudVRyaWdnZXJGb3IiXSxtZW51OlsibWF0TWVudVRyaWdnZXJGb3IiLCJtZW51Il0sbWVudURhdGE6WyJtYXRNZW51VHJpZ2dlckRhdGEiLCJtZW51RGF0YSJdfSxvdXRwdXRzOnttZW51T3BlbmVkOiJtZW51T3BlbmVkIixvbk1lbnVPcGVuOiJvbk1lbnVPcGVuIixtZW51Q2xvc2VkOiJtZW51Q2xvc2VkIixvbk1lbnVDbG9zZToib25NZW51Q2xvc2UifSxleHBvcnRBczpbIm1hdE1lbnVUcmlnZ2VyIl19KSxxcS5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOktCfSx7dHlwZTpLaH0se3R5cGU6RmJ9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltVcV19XX0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W3pxXX0se3R5cGU6QnJ9XX0se3R5cGU6SHEsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOlZyfV19LHt0eXBlOnZGLGRlY29yYXRvcnM6W3t0eXBlOkJyfV19LHt0eXBlOmZGfV0scXEucHJvcERlY29yYXRvcnM9e19kZXByZWNhdGVkTWF0TWVudVRyaWdnZXJGb3I6W3t0eXBlOlJfLGFyZ3M6WyJtYXQtbWVudS10cmlnZ2VyLWZvciJdfV0sbWVudTpbe3R5cGU6Ul8sYXJnczpbIm1hdE1lbnVUcmlnZ2VyRm9yIl19XSxtZW51RGF0YTpbe3R5cGU6Ul8sYXJnczpbIm1hdE1lbnVUcmlnZ2VyRGF0YSJdfV0scmVzdG9yZUZvY3VzOlt7dHlwZTpSXyxhcmdzOlsibWF0TWVudVRyaWdnZXJSZXN0b3JlRm9jdXMiXX1dLG1lbnVPcGVuZWQ6W3t0eXBlOkVffV0sb25NZW51T3Blbjpbe3R5cGU6RV99XSxtZW51Q2xvc2VkOlt7dHlwZTpFX31dLG9uTWVudUNsb3NlOlt7dHlwZTpFX31dfSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKHFxLFt7dHlwZTprXyxhcmdzOlt7c2VsZWN0b3I6IlttYXQtbWVudS10cmlnZ2VyLWZvcl0sIFttYXRNZW51VHJpZ2dlckZvcl0iLGhvc3Q6e2NsYXNzOiJtYXQtbWVudS10cmlnZ2VyIiwiYXJpYS1oYXNwb3B1cCI6InRydWUiLCJbYXR0ci5hcmlhLWV4cGFuZGVkXSI6Im1lbnVPcGVuIHx8IG51bGwiLCJbYXR0ci5hcmlhLWNvbnRyb2xzXSI6Im1lbnVPcGVuID8gbWVudS5wYW5lbElkIDogbnVsbCIsIihtb3VzZWRvd24pIjoiX2hhbmRsZU1vdXNlZG93bigkZXZlbnQpIiwiKGtleWRvd24pIjoiX2hhbmRsZUtleWRvd24oJGV2ZW50KSIsIihjbGljaykiOiJfaGFuZGxlQ2xpY2soJGV2ZW50KSJ9LGV4cG9ydEFzOiJtYXRNZW51VHJpZ2dlciJ9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpLQn0se3R5cGU6S2h9LHt0eXBlOkZifSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbVXFdfV19LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOlt6cV19LHt0eXBlOkJyfV19LHt0eXBlOkhxLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpWcn1dfSx7dHlwZTp2RixkZWNvcmF0b3JzOlt7dHlwZTpCcn1dfSx7dHlwZTpmRn1dfSkse3Jlc3RvcmVGb2N1czpbe3R5cGU6Ul8sYXJnczpbIm1hdE1lbnVUcmlnZ2VyUmVzdG9yZUZvY3VzIl19XSxtZW51T3BlbmVkOlt7dHlwZTpFX31dLG9uTWVudU9wZW46W3t0eXBlOkVffV0sbWVudUNsb3NlZDpbe3R5cGU6RV99XSxvbk1lbnVDbG9zZTpbe3R5cGU6RV99XSxfZGVwcmVjYXRlZE1hdE1lbnVUcmlnZ2VyRm9yOlt7dHlwZTpSXyxhcmdzOlsibWF0LW1lbnUtdHJpZ2dlci1mb3IiXX1dLG1lbnU6W3t0eXBlOlJfLGFyZ3M6WyJtYXRNZW51VHJpZ2dlckZvciJdfV0sbWVudURhdGE6W3t0eXBlOlJfLGFyZ3M6WyJtYXRNZW51VHJpZ2dlckRhdGEiXX1dfSk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjbGFzcyBacXt9WnEuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFpxKX0sWnEuybVtb2Q9Zm8oe3R5cGU6WnF9KSxacS7JtWluaj1Ebih7cHJvdmlkZXJzOltXcV0saW1wb3J0czpbTkZdfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihacSxbe3R5cGU6TF8sYXJnczpbe2V4cG9ydHM6W3FxLE5xLE5GXSxkZWNsYXJhdGlvbnM6W3FxLE5xXSxwcm92aWRlcnM6W1dxXX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnVvKFpxLHtkZWNsYXJhdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm5bcXEsTnFdfSxleHBvcnRzOmZ1bmN0aW9uKCl7cmV0dXJuW3FxLE5xLE5GXX19KTtjbGFzcyBYcXt9ZnVuY3Rpb24gS3EodCxlKXsxJnQmJnZmKDAsIm1hdC1pY29uIiw4KX1mdW5jdGlvbiBKcSh0LGUpezEmdCYmdmYoMCwibWF0LWljb24iLDkpfWZ1bmN0aW9uIFFxKHQsZSl7MSZ0JiZ2ZigwLCJtYXQtaWNvbiIsMTApfXZhciAkcTtYcS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8WHEpfSxYcS7JtW1vZD1mbyh7dHlwZTpYcX0pLFhxLsm1aW5qPURuKHtwcm92aWRlcnM6W1dxXSxpbXBvcnRzOltbcngsTkYsZkwsb1YsWnFdLG9CLE5GLFpxXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoWHEsW3t0eXBlOkxfLGFyZ3M6W3tpbXBvcnRzOltyeCxORixmTCxvVixacV0sZXhwb3J0czpbb0IsTkYsanEsSHEsWnFdLGRlY2xhcmF0aW9uczpbanEsSHFdLHByb3ZpZGVyczpbV3FdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmdW8oWHEse2RlY2xhcmF0aW9uczpmdW5jdGlvbigpe3JldHVybltqcSxIcV19LGltcG9ydHM6ZnVuY3Rpb24oKXtyZXR1cm5bcngsTkYsZkwsb1YsWnFdfSxleHBvcnRzOmZ1bmN0aW9uKCl7cmV0dXJuW29CLE5GLGpxLEhxLFpxXX19KSwoZnVuY3Rpb24odCl7dFt0LkRFRkFVTFQ9MF09IkRFRkFVTFQiLHRbdC5EQVJLX01PREVfT049MV09IkRBUktfTU9ERV9PTiIsdFt0LkRBUktfTU9ERV9PRkY9Ml09IkRBUktfTU9ERV9PRkYifSkoJHF8fCgkcT17fSkpO2NsYXNzIHRae2NvbnN0cnVjdG9yKCl7dGhpcy5EYXJrTW9kZU92ZXJyaWRlPSRxLHRoaXMub25PdmVycmlkZUNoYW5nZWQ9bmV3IFN5fWdldEJ1dHRvblRpdGxlKCl7bGV0IHQ7c3dpdGNoKHRoaXMuZGFya01vZGVPdmVycmlkZSl7Y2FzZSAkcS5ERUZBVUxUOnQ9IkJyb3dzZXIgZGVmYXVsdCI7YnJlYWs7Y2FzZSAkcS5EQVJLX01PREVfT046dD0iRGFyayBtb2RlIjticmVhaztjYXNlICRxLkRBUktfTU9ERV9PRkY6dD0iTGlnaHQgbW9kZSJ9cmV0dXJuYEN1cnJlbnQgbW9kZTogWyR7dH1dLiBTd2l0Y2ggYmV0d2VlbiBicm93c2VyIGRlZmF1bHQsIGxpZ2h0LCBvciBkYXJrIHRoZW1lLmB9fXRaLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHx0Wil9LHRaLsm1Y21wPXNvKHt0eXBlOnRaLHNlbGVjdG9yczpbWyJhcHAtaGVhZGVyLWRhcmstbW9kZS10b2dnbGUtY29tcG9uZW50Il1dLGlucHV0czp7ZGFya01vZGVPdmVycmlkZToiZGFya01vZGVPdmVycmlkZSJ9LG91dHB1dHM6e29uT3ZlcnJpZGVDaGFuZ2VkOiJvbk92ZXJyaWRlQ2hhbmdlZCJ9LGRlY2xzOjE1LHZhcnM6Nixjb25zdHM6W1sibWF0LWljb24tYnV0dG9uIiwiIiwiYXJpYS1sYWJlbCIsIk1lbnUgZm9yIGNoYW5naW5nIGxpZ2h0IG9yIGRhcmsgdGhlbWUiLDMsIm1hdE1lbnVUcmlnZ2VyRm9yIiwibmdTd2l0Y2giLCJ0aXRsZSJdLFsic3ZnSWNvbiIsImJyaWdodG5lc3NfNl8yNHB4Iiw0LCJuZ1N3aXRjaENhc2UiXSxbInN2Z0ljb24iLCJsaWdodF9tb2RlXzI0cHgiLDQsIm5nU3dpdGNoQ2FzZSJdLFsic3ZnSWNvbiIsImRhcmtfbW9kZV8yNHB4Iiw0LCJuZ1N3aXRjaENhc2UiXSxbIm1lbnUiLCJtYXRNZW51Il0sWyJtYXQtbWVudS1pdGVtIiwiIiwidGl0bGUiLCJTZXQgdGhlIHRoZW1lIHRvIG1hdGNoIHRoZSBkZWZhdWx0IG1vZGUgaW4gdGhlIGJyb3dzZXIuIiwzLCJjbGljayJdLFsibWF0LW1lbnUtaXRlbSIsIiIsInRpdGxlIiwiRm9yY2UgbGlnaHQgVGVuc29yQm9hcmQgdGhlbWUuIiwzLCJjbGljayJdLFsibWF0LW1lbnUtaXRlbSIsIiIsInRpdGxlIiwiRm9yY2UgZGFyayBUZW5zb3JCb2FyZCB0aGVtZS4iLDMsImNsaWNrIl0sWyJzdmdJY29uIiwiYnJpZ2h0bmVzc182XzI0cHgiXSxbInN2Z0ljb24iLCJsaWdodF9tb2RlXzI0cHgiXSxbInN2Z0ljb24iLCJkYXJrX21vZGVfMjRweCJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7aWYoMSZlJiYoQ2YoMCwiYnV0dG9uIiwwKSxIbSgxLEtxLDEsMCwibWF0LWljb24iLDEpLEhtKDIsSnEsMSwwLCJtYXQtaWNvbiIsMiksSG0oMyxRcSwxLDAsIm1hdC1pY29uIiwzKSxNZigpLENmKDQsIm1hdC1tZW51IixudWxsLDQpLENmKDYsImJ1dHRvbiIsNSksUmYoImNsaWNrIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLm9uT3ZlcnJpZGVDaGFuZ2VkLmVtaXQobi5EYXJrTW9kZU92ZXJyaWRlLkRFRkFVTFQpfSkpLENmKDcsImxhYmVsIiksUHUoOCwiQnJvd3NlciBkZWZhdWx0IiksTWYoKSxNZigpLENmKDksImJ1dHRvbiIsNiksUmYoImNsaWNrIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLm9uT3ZlcnJpZGVDaGFuZ2VkLmVtaXQobi5EYXJrTW9kZU92ZXJyaWRlLkRBUktfTU9ERV9PRkYpfSkpLENmKDEwLCJsYWJlbCIpLFB1KDExLCJMaWdodCIpLE1mKCksTWYoKSxDZigxMiwiYnV0dG9uIiw3KSxSZigiY2xpY2siLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4ub25PdmVycmlkZUNoYW5nZWQuZW1pdChuLkRhcmtNb2RlT3ZlcnJpZGUuREFSS19NT0RFX09OKX0pKSxDZigxMywibGFiZWwiKSxQdSgxNCwiRGFyayIpLE1mKCksTWYoKSxNZigpKSwyJmUpe2JmKCJtYXRNZW51VHJpZ2dlckZvciIsRm0oNSkpKCJuZ1N3aXRjaCIsbi5kYXJrTW9kZU92ZXJyaWRlKSgidGl0bGUiLG4uZ2V0QnV0dG9uVGl0bGUoKSksRGMoMSksYmYoIm5nU3dpdGNoQ2FzZSIsbi5EYXJrTW9kZU92ZXJyaWRlLkRFRkFVTFQpLERjKDEpLGJmKCJuZ1N3aXRjaENhc2UiLG4uRGFya01vZGVPdmVycmlkZS5EQVJLX01PREVfT0ZGKSxEYygxKSxiZigibmdTd2l0Y2hDYXNlIixuLkRhcmtNb2RlT3ZlcnJpZGUuREFSS19NT0RFX09OKX19LGRpcmVjdGl2ZXM6W05MLHFxLER2LFJ2LGpxLEhxLE1xXSxlbmNhcHN1bGF0aW9uOjJ9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKHRaLFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6ImFwcC1oZWFkZXItZGFyay1tb2RlLXRvZ2dsZS1jb21wb25lbnQiLHRlbXBsYXRlOidcbiAgICA8YnV0dG9uXG4gICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgIFttYXRNZW51VHJpZ2dlckZvcl09Im1lbnUiXG4gICAgICBhcmlhLWxhYmVsPSJNZW51IGZvciBjaGFuZ2luZyBsaWdodCBvciBkYXJrIHRoZW1lIlxuICAgICAgW25nU3dpdGNoXT0iZGFya01vZGVPdmVycmlkZSJcbiAgICAgIFt0aXRsZV09ImdldEJ1dHRvblRpdGxlKCkiXG4gICAgPlxuICAgICAgPG1hdC1pY29uXG4gICAgICAgICpuZ1N3aXRjaENhc2U9IkRhcmtNb2RlT3ZlcnJpZGUuREVGQVVMVCJcbiAgICAgICAgc3ZnSWNvbj0iYnJpZ2h0bmVzc182XzI0cHgiXG4gICAgICA+PC9tYXQtaWNvbj5cbiAgICAgIDxtYXQtaWNvblxuICAgICAgICAqbmdTd2l0Y2hDYXNlPSJEYXJrTW9kZU92ZXJyaWRlLkRBUktfTU9ERV9PRkYiXG4gICAgICAgIHN2Z0ljb249ImxpZ2h0X21vZGVfMjRweCJcbiAgICAgID48L21hdC1pY29uPlxuICAgICAgPG1hdC1pY29uXG4gICAgICAgICpuZ1N3aXRjaENhc2U9IkRhcmtNb2RlT3ZlcnJpZGUuREFSS19NT0RFX09OIlxuICAgICAgICBzdmdJY29uPSJkYXJrX21vZGVfMjRweCJcbiAgICAgID48L21hdC1pY29uPlxuICAgIDwvYnV0dG9uPlxuICAgIDxtYXQtbWVudSAjbWVudT0ibWF0TWVudSI+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIG1hdC1tZW51LWl0ZW1cbiAgICAgICAgdGl0bGU9IlNldCB0aGUgdGhlbWUgdG8gbWF0Y2ggdGhlIGRlZmF1bHQgbW9kZSBpbiB0aGUgYnJvd3Nlci4iXG4gICAgICAgIChjbGljayk9Im9uT3ZlcnJpZGVDaGFuZ2VkLmVtaXQoRGFya01vZGVPdmVycmlkZS5ERUZBVUxUKSJcbiAgICAgID5cbiAgICAgICAgPGxhYmVsPkJyb3dzZXIgZGVmYXVsdDwvbGFiZWw+XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgbWF0LW1lbnUtaXRlbVxuICAgICAgICB0aXRsZT0iRm9yY2UgbGlnaHQgVGVuc29yQm9hcmQgdGhlbWUuIlxuICAgICAgICAoY2xpY2spPSJvbk92ZXJyaWRlQ2hhbmdlZC5lbWl0KERhcmtNb2RlT3ZlcnJpZGUuREFSS19NT0RFX09GRikiXG4gICAgICA+XG4gICAgICAgIDxsYWJlbD5MaWdodDwvbGFiZWw+XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgbWF0LW1lbnUtaXRlbVxuICAgICAgICB0aXRsZT0iRm9yY2UgZGFyayBUZW5zb3JCb2FyZCB0aGVtZS4iXG4gICAgICAgIChjbGljayk9Im9uT3ZlcnJpZGVDaGFuZ2VkLmVtaXQoRGFya01vZGVPdmVycmlkZS5EQVJLX01PREVfT04pIlxuICAgICAgPlxuICAgICAgICA8bGFiZWw+RGFyazwvbGFiZWw+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L21hdC1tZW51PlxuICAnfV19XSxudWxsLHtkYXJrTW9kZU92ZXJyaWRlOlt7dHlwZTpSX31dLG9uT3ZlcnJpZGVDaGFuZ2VkOlt7dHlwZTpFX31dfSk7Y2xhc3MgZVp7Y29uc3RydWN0b3IodCl7dGhpcy5zdG9yZT10LHRoaXMuZGFya01vZGVPdmVycmlkZSQ9dGhpcy5zdG9yZS5zZWxlY3QoTEQpLnBpcGUoVnQoKHQ9Pm51bGw9PT10PyRxLkRFRkFVTFQ6dD8kcS5EQVJLX01PREVfT046JHEuREFSS19NT0RFX09GRikpKX1jaGFuZ2VEYXJrTW9kZSh0KXtsZXQgZT1udWxsO3N3aXRjaCh0KXtjYXNlICRxLkRFRkFVTFQ6ZT1udWxsO2JyZWFrO2Nhc2UgJHEuREFSS19NT0RFX09GRjplPSExO2JyZWFrO2Nhc2UgJHEuREFSS19NT0RFX09OOmU9ITB9dGhpcy5zdG9yZS5kaXNwYXRjaChrTih7ZW5hYmxlRGFya01vZGU6ZX0pKX19ZVouybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGVaKShnZihpUykpfSxlWi7JtWNtcD1zbyh7dHlwZTplWixzZWxlY3RvcnM6W1siYXBwLWhlYWRlci1kYXJrLW1vZGUtdG9nZ2xlIl1dLGRlY2xzOjIsdmFyczozLGNvbnN0czpbWzMsImRhcmtNb2RlT3ZlcnJpZGUiLCJvbk92ZXJyaWRlQ2hhbmdlZCJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoQ2YoMCwiYXBwLWhlYWRlci1kYXJrLW1vZGUtdG9nZ2xlLWNvbXBvbmVudCIsMCksUmYoIm9uT3ZlcnJpZGVDaGFuZ2VkIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5jaGFuZ2VEYXJrTW9kZShlKX0pKSxfeSgxLCJhc3luYyIpLE1mKCkpLDImZSYmYmYoImRhcmtNb2RlT3ZlcnJpZGUiLEN5KDEsMSxuLmRhcmtNb2RlT3ZlcnJpZGUkKSl9LGRpcmVjdGl2ZXM6W3RaXSxwaXBlczpbVnZdLGVuY2Fwc3VsYXRpb246Mn0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoZVosW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoiYXBwLWhlYWRlci1kYXJrLW1vZGUtdG9nZ2xlIix0ZW1wbGF0ZTonXG4gICAgPGFwcC1oZWFkZXItZGFyay1tb2RlLXRvZ2dsZS1jb21wb25lbnRcbiAgICAgIFtkYXJrTW9kZU92ZXJyaWRlXT0iZGFya01vZGVPdmVycmlkZSQgfCBhc3luYyJcbiAgICAgIChvbk92ZXJyaWRlQ2hhbmdlZCk9ImNoYW5nZURhcmtNb2RlKCRldmVudCkiXG4gICAgPlxuICAgIDwvYXBwLWhlYWRlci1kYXJrLW1vZGUtdG9nZ2xlLWNvbXBvbmVudD5cbiAgJ31dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmlTfV19KSxudWxsKTtjb25zdCBuWj1iUyhuVCxlVCwoKHQsZSk9PiEoIWV8fCF0W2VdKSYmdFtlXS5kaXNhYmxlX3JlbG9hZCkpO2NsYXNzIG9ae2NvbnN0cnVjdG9yKHQpe3RoaXMuc3RvcmU9dCx0aGlzLnJlbG9hZERpc2FibGVkJD10aGlzLnN0b3JlLnNlbGVjdChuWiksdGhpcy5pc1JlbG9hZGluZyQ9dGhpcy5zdG9yZS5zZWxlY3QoJEEpLnBpcGUoX2UodGhpcy5yZWxvYWREaXNhYmxlZCQpLFZ0KCgoW3QsZV0pPT4hZSYmdD09PVVFLkxPQURJTkcpKSksdGhpcy5sYXN0TG9hZGVkVGltZUluTXMkPXRoaXMuc3RvcmUuc2VsZWN0KHRUKX10cmlnZ2VyUmVsb2FkKCl7dGhpcy5zdG9yZS5kaXNwYXRjaChKRSgpKX1nZXRSZWxvYWRUaXRsZSh0KXtyZXR1cm4gdD9gTGFzdCBVcGRhdGVkOiAke3R9YDoiTG9hZGluZy4uLiJ9fWZ1bmN0aW9uIGlaKHQpe3JldHVybiB0LnN0YXRlIT09VUUuTk9UX0xPQURFRCYmdC5zdGF0ZSE9PVVFLkxPQURJTkd9b1ouybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fG9aKShnZihpUykpfSxvWi7JtWNtcD1zbyh7dHlwZTpvWixzZWxlY3RvcnM6W1siYXBwLWhlYWRlci1yZWxvYWQiXV0sZGVjbHM6Nix2YXJzOjEzLGNvbnN0czpbWyJtYXQtaWNvbi1idXR0b24iLCIiLDEsInJlbG9hZC1idXR0b24iLDMsInRpdGxlIiwiZGlzYWJsZWQiLCJjbGljayJdLFsic3ZnSWNvbiIsInJlZnJlc2hfMjRweCIsMSwicmVmcmVzaC1pY29uIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihDZigwLCJidXR0b24iLDApLFJmKCJjbGljayIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi50cmlnZ2VyUmVsb2FkKCl9KSksX3koMSwiYXN5bmMiKSxfeSgyLCJkYXRlIiksX3koMywiYXN5bmMiKSxfeSg0LCJhc3luYyIpLHZmKDUsIm1hdC1pY29uIiwxKSxNZigpKSwyJmUmJihjdSgibG9hZGluZyIsQ3koMSw0LG4uaXNSZWxvYWRpbmckKSksYmYoInRpdGxlIixuLmdldFJlbG9hZFRpdGxlKE15KDIsNixDeSgzLDksbi5sYXN0TG9hZGVkVGltZUluTXMkKSwibWVkaXVtIikpKSgiZGlzYWJsZWQiLEN5KDQsMTEsbi5yZWxvYWREaXNhYmxlZCQpKSl9LGRpcmVjdGl2ZXM6W05MLE1xXSxwaXBlczpbVnYsWXZdLHN0eWxlczpbIi5yZWxvYWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLnJlZnJlc2gtaWNvbltfbmdjb250ZW50LSVDT01QJV0ge1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgIH1cblxuICAgICAgLnJlbG9hZC1idXR0b24ubG9hZGluZ1tfbmdjb250ZW50LSVDT01QJV0ge1xuICAgICAgICBhbmltYXRpb246IHJvdGF0ZSAycyBsaW5lYXIgaW5maW5pdGU7XG4gICAgICB9XG5cbiAgICAgIEBrZXlmcmFtZXMgcm90YXRlIHtcbiAgICAgICAgMCUge1xuICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDBkZWcpO1xuICAgICAgICB9XG4gICAgICAgIDUwJSB7XG4gICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMTgwZGVnKTtcbiAgICAgICAgfVxuICAgICAgICAxMDAlIHtcbiAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpO1xuICAgICAgICB9XG4gICAgICB9Il19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKG9aLFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6ImFwcC1oZWFkZXItcmVsb2FkIix0ZW1wbGF0ZTonXG4gICAgPGJ1dHRvblxuICAgICAgY2xhc3M9InJlbG9hZC1idXR0b24iXG4gICAgICBbY2xhc3MubG9hZGluZ109ImlzUmVsb2FkaW5nJCB8IGFzeW5jIlxuICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICAoY2xpY2spPSJ0cmlnZ2VyUmVsb2FkKCkiXG4gICAgICBbdGl0bGVdPSJnZXRSZWxvYWRUaXRsZShsYXN0TG9hZGVkVGltZUluTXMkIHwgYXN5bmMgfCBkYXRlOiBcJ21lZGl1bVwnKSJcbiAgICAgIFtkaXNhYmxlZF09InJlbG9hZERpc2FibGVkJCB8IGFzeW5jIlxuICAgID5cbiAgICAgIDxtYXQtaWNvbiBjbGFzcz0icmVmcmVzaC1pY29uIiBzdmdJY29uPSJyZWZyZXNoXzI0cHgiPjwvbWF0LWljb24+XG4gICAgPC9idXR0b24+XG4gICcsc3R5bGVzOlsiXG4gICAgICAucmVsb2FkLWJ1dHRvbixcbiAgICAgIC5yZWZyZXNoLWljb24ge1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgIH1cblxuICAgICAgLnJlbG9hZC1idXR0b24ubG9hZGluZyB7XG4gICAgICAgIGFuaW1hdGlvbjogcm90YXRlIDJzIGxpbmVhciBpbmZpbml0ZTtcbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyByb3RhdGUge1xuICAgICAgICAwJSB7XG4gICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7XG4gICAgICAgIH1cbiAgICAgICAgNTAlIHtcbiAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgxODBkZWcpO1xuICAgICAgICB9XG4gICAgICAgIDEwMCUge1xuICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAiXX1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmlTfV19KSxudWxsKTtjb25zdCBhWj0zZTQsclo9VlMocEksQlMoc0ksKHQ9PmlaKHQpP09iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7c2V0dGluZ3M6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQuc2V0dGluZ3MpLHtyZWxvYWRFbmFibGVkOiF0LnNldHRpbmdzLnJlbG9hZEVuYWJsZWR9KX0pOnQpKSxCUyhsSSwoKHQse3BlcmlvZEluTXM6ZX0pPT57aWYoIWlaKHQpKXJldHVybiB0O2NvbnN0IG49ZT49YVo/ZTp0LnNldHRpbmdzLnJlbG9hZFBlcmlvZEluTXM7cmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7c2V0dGluZ3M6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQuc2V0dGluZ3MpLHtyZWxvYWRQZXJpb2RJbk1zOm59KX0pfSkpLEJTKGNJLCgodCx7c2l6ZTplfSk9PntpZighaVoodCkpcmV0dXJuIHQ7Y29uc3Qgbj1lPjA/ZTp0LnNldHRpbmdzLnBhZ2VTaXplO3JldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3NldHRpbmdzOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LnNldHRpbmdzKSx7cGFnZVNpemU6bn0pfSl9KSksQlMocVIsKCh0LHtwYXJ0aWFsU2V0dGluZ3M6ZX0pPT57Y29uc3Qgbj17fTtyZXR1cm4gTnVtYmVyLmlzRmluaXRlKGUucGFnZVNpemUpJiZlLnBhZ2VTaXplPjAmJihuLnBhZ2VTaXplPU51bWJlcihlLnBhZ2VTaXplKSksImJvb2xlYW4iPT10eXBlb2YgZS5hdXRvUmVsb2FkJiYobi5yZWxvYWRFbmFibGVkPWUuYXV0b1JlbG9hZCksTnVtYmVyLmlzRmluaXRlKGUuYXV0b1JlbG9hZFBlcmlvZEluTXMpJiZlLmF1dG9SZWxvYWRQZXJpb2RJbk1zPmFaJiYobi5yZWxvYWRQZXJpb2RJbk1zPU51bWJlcihlLmF1dG9SZWxvYWRQZXJpb2RJbk1zKSksT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtzZXR0aW5nczpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5zZXR0aW5ncyksbil9KX0pKSk7ZnVuY3Rpb24gc1oodCxlKXtyZXR1cm4gcloodCxlKX1jb25zdCBsWj1bImlucHV0Il0sY1o9ZnVuY3Rpb24odCl7cmV0dXJue2VudGVyRHVyYXRpb246dH19LGRaPW5ldyBlcigibWF0LWNoZWNrYm94LWRlZmF1bHQtb3B0aW9ucyIse3Byb3ZpZGVkSW46InJvb3QiLGZhY3Rvcnk6cFp9KTtmdW5jdGlvbiBwWigpe3JldHVybntjb2xvcjoiYWNjZW50IixjbGlja0FjdGlvbjoiY2hlY2staW5kZXRlcm1pbmF0ZSJ9fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9sZXQgbVo9MDtjb25zdCBmWj17Y29sb3I6ImFjY2VudCIsY2xpY2tBY3Rpb246ImNoZWNrLWluZGV0ZXJtaW5hdGUifSx1Wj17cHJvdmlkZTp4VSx1c2VFeGlzdGluZzokZSgoKCk9PmJaKSksbXVsdGk6ITB9O2NsYXNzIGdae31jb25zdCBoWj1GRihJRihIRih6RihjbGFzc3tjb25zdHJ1Y3Rvcih0KXt0aGlzLl9lbGVtZW50UmVmPXR9fSkpKSk7Y2xhc3MgYlogZXh0ZW5kcyBoWntjb25zdHJ1Y3Rvcih0LGUsbixvLGksYSxyKXtzdXBlcih0KSx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZj1lLHRoaXMuX2ZvY3VzTW9uaXRvcj1uLHRoaXMuX25nWm9uZT1vLHRoaXMuX2FuaW1hdGlvbk1vZGU9YSx0aGlzLl9vcHRpb25zPXIsdGhpcy5hcmlhTGFiZWw9IiIsdGhpcy5hcmlhTGFiZWxsZWRieT1udWxsLHRoaXMuX3VuaXF1ZUlkPSJtYXQtY2hlY2tib3gtIisgKyttWix0aGlzLmlkPXRoaXMuX3VuaXF1ZUlkLHRoaXMubGFiZWxQb3NpdGlvbj0iYWZ0ZXIiLHRoaXMubmFtZT1udWxsLHRoaXMuY2hhbmdlPW5ldyBTeSx0aGlzLmluZGV0ZXJtaW5hdGVDaGFuZ2U9bmV3IFN5LHRoaXMuX29uVG91Y2hlZD0oKT0+e30sdGhpcy5fY3VycmVudEFuaW1hdGlvbkNsYXNzPSIiLHRoaXMuX2N1cnJlbnRDaGVja1N0YXRlPTAsdGhpcy5fY29udHJvbFZhbHVlQWNjZXNzb3JDaGFuZ2VGbj0oKT0+e30sdGhpcy5fY2hlY2tlZD0hMSx0aGlzLl9kaXNhYmxlZD0hMSx0aGlzLl9pbmRldGVybWluYXRlPSExLHRoaXMuX29wdGlvbnM9dGhpcy5fb3B0aW9uc3x8ZlosdGhpcy5jb2xvcj10aGlzLmRlZmF1bHRDb2xvcj10aGlzLl9vcHRpb25zLmNvbG9yfHxmWi5jb2xvcix0aGlzLnRhYkluZGV4PXBhcnNlSW50KGkpfHwwfWdldCBpbnB1dElkKCl7cmV0dXJuYCR7dGhpcy5pZHx8dGhpcy5fdW5pcXVlSWR9LWlucHV0YH1nZXQgcmVxdWlyZWQoKXtyZXR1cm4gdGhpcy5fcmVxdWlyZWR9c2V0IHJlcXVpcmVkKHQpe3RoaXMuX3JlcXVpcmVkPWVIKHQpfW5nQWZ0ZXJWaWV3SW5pdCgpe3RoaXMuX2ZvY3VzTW9uaXRvci5tb25pdG9yKHRoaXMuX2VsZW1lbnRSZWYsITApLnN1YnNjcmliZSgodD0+e3R8fFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCgpPT57dGhpcy5fb25Ub3VjaGVkKCksdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCl9KSl9KSksdGhpcy5fc3luY0luZGV0ZXJtaW5hdGUodGhpcy5faW5kZXRlcm1pbmF0ZSl9bmdBZnRlclZpZXdDaGVja2VkKCl7fW5nT25EZXN0cm95KCl7dGhpcy5fZm9jdXNNb25pdG9yLnN0b3BNb25pdG9yaW5nKHRoaXMuX2VsZW1lbnRSZWYpfWdldCBjaGVja2VkKCl7cmV0dXJuIHRoaXMuX2NoZWNrZWR9c2V0IGNoZWNrZWQodCl7dCE9dGhpcy5jaGVja2VkJiYodGhpcy5fY2hlY2tlZD10LHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpKX1nZXQgZGlzYWJsZWQoKXtyZXR1cm4gdGhpcy5fZGlzYWJsZWR9c2V0IGRpc2FibGVkKHQpe2NvbnN0IGU9ZUgodCk7ZSE9PXRoaXMuZGlzYWJsZWQmJih0aGlzLl9kaXNhYmxlZD1lLHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpKX1nZXQgaW5kZXRlcm1pbmF0ZSgpe3JldHVybiB0aGlzLl9pbmRldGVybWluYXRlfXNldCBpbmRldGVybWluYXRlKHQpe2NvbnN0IGU9dCE9dGhpcy5faW5kZXRlcm1pbmF0ZTt0aGlzLl9pbmRldGVybWluYXRlPWVIKHQpLGUmJih0aGlzLl90cmFuc2l0aW9uQ2hlY2tTdGF0ZSh0aGlzLl9pbmRldGVybWluYXRlPzM6dGhpcy5jaGVja2VkPzE6MiksdGhpcy5pbmRldGVybWluYXRlQ2hhbmdlLmVtaXQodGhpcy5faW5kZXRlcm1pbmF0ZSkpLHRoaXMuX3N5bmNJbmRldGVybWluYXRlKHRoaXMuX2luZGV0ZXJtaW5hdGUpfV9pc1JpcHBsZURpc2FibGVkKCl7cmV0dXJuIHRoaXMuZGlzYWJsZVJpcHBsZXx8dGhpcy5kaXNhYmxlZH1fb25MYWJlbFRleHRDaGFuZ2UoKXt0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCl9d3JpdGVWYWx1ZSh0KXt0aGlzLmNoZWNrZWQ9ISF0fXJlZ2lzdGVyT25DaGFuZ2UodCl7dGhpcy5fY29udHJvbFZhbHVlQWNjZXNzb3JDaGFuZ2VGbj10fXJlZ2lzdGVyT25Ub3VjaGVkKHQpe3RoaXMuX29uVG91Y2hlZD10fXNldERpc2FibGVkU3RhdGUodCl7dGhpcy5kaXNhYmxlZD10fV9nZXRBcmlhQ2hlY2tlZCgpe3JldHVybiB0aGlzLmNoZWNrZWQ/InRydWUiOnRoaXMuaW5kZXRlcm1pbmF0ZT8ibWl4ZWQiOiJmYWxzZSJ9X3RyYW5zaXRpb25DaGVja1N0YXRlKHQpe2xldCBlPXRoaXMuX2N1cnJlbnRDaGVja1N0YXRlLG49dGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O2lmKGUhPT10JiYodGhpcy5fY3VycmVudEFuaW1hdGlvbkNsYXNzLmxlbmd0aD4wJiZuLmNsYXNzTGlzdC5yZW1vdmUodGhpcy5fY3VycmVudEFuaW1hdGlvbkNsYXNzKSx0aGlzLl9jdXJyZW50QW5pbWF0aW9uQ2xhc3M9dGhpcy5fZ2V0QW5pbWF0aW9uQ2xhc3NGb3JDaGVja1N0YXRlVHJhbnNpdGlvbihlLHQpLHRoaXMuX2N1cnJlbnRDaGVja1N0YXRlPXQsdGhpcy5fY3VycmVudEFuaW1hdGlvbkNsYXNzLmxlbmd0aD4wKSl7bi5jbGFzc0xpc3QuYWRkKHRoaXMuX2N1cnJlbnRBbmltYXRpb25DbGFzcyk7Y29uc3QgdD10aGlzLl9jdXJyZW50QW5pbWF0aW9uQ2xhc3M7dGhpcy5fbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgoKT0+e3NldFRpbWVvdXQoKCgpPT57bi5jbGFzc0xpc3QucmVtb3ZlKHQpfSksMWUzKX0pKX19X2VtaXRDaGFuZ2VFdmVudCgpe2NvbnN0IHQ9bmV3IGdaO3Quc291cmNlPXRoaXMsdC5jaGVja2VkPXRoaXMuY2hlY2tlZCx0aGlzLl9jb250cm9sVmFsdWVBY2Nlc3NvckNoYW5nZUZuKHRoaXMuY2hlY2tlZCksdGhpcy5jaGFuZ2UuZW1pdCh0KSx0aGlzLl9pbnB1dEVsZW1lbnQmJih0aGlzLl9pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC5jaGVja2VkPXRoaXMuY2hlY2tlZCl9dG9nZ2xlKCl7dGhpcy5jaGVja2VkPSF0aGlzLmNoZWNrZWR9X29uSW5wdXRDbGljayh0KXt2YXIgZTtjb25zdCBuPW51bGw9PT0oZT10aGlzLl9vcHRpb25zKXx8dm9pZCAwPT09ZT92b2lkIDA6ZS5jbGlja0FjdGlvbjt0LnN0b3BQcm9wYWdhdGlvbigpLHRoaXMuZGlzYWJsZWR8fCJub29wIj09PW4/dGhpcy5kaXNhYmxlZHx8Im5vb3AiIT09bnx8KHRoaXMuX2lucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LmNoZWNrZWQ9dGhpcy5jaGVja2VkLHRoaXMuX2lucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LmluZGV0ZXJtaW5hdGU9dGhpcy5pbmRldGVybWluYXRlKToodGhpcy5pbmRldGVybWluYXRlJiYiY2hlY2siIT09biYmUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKCk9Pnt0aGlzLl9pbmRldGVybWluYXRlPSExLHRoaXMuaW5kZXRlcm1pbmF0ZUNoYW5nZS5lbWl0KHRoaXMuX2luZGV0ZXJtaW5hdGUpfSkpLHRoaXMudG9nZ2xlKCksdGhpcy5fdHJhbnNpdGlvbkNoZWNrU3RhdGUodGhpcy5fY2hlY2tlZD8xOjIpLHRoaXMuX2VtaXRDaGFuZ2VFdmVudCgpKX1mb2N1cyh0LGUpe3Q/dGhpcy5fZm9jdXNNb25pdG9yLmZvY3VzVmlhKHRoaXMuX2lucHV0RWxlbWVudCx0LGUpOnRoaXMuX2lucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LmZvY3VzKGUpfV9vbkludGVyYWN0aW9uRXZlbnQodCl7dC5zdG9wUHJvcGFnYXRpb24oKX1fZ2V0QW5pbWF0aW9uQ2xhc3NGb3JDaGVja1N0YXRlVHJhbnNpdGlvbih0LGUpe2lmKCJOb29wQW5pbWF0aW9ucyI9PT10aGlzLl9hbmltYXRpb25Nb2RlKXJldHVybiIiO2xldCBuPSIiO3N3aXRjaCh0KXtjYXNlIDA6aWYoMT09PWUpbj0idW5jaGVja2VkLWNoZWNrZWQiO2Vsc2V7aWYoMyE9ZSlyZXR1cm4iIjtuPSJ1bmNoZWNrZWQtaW5kZXRlcm1pbmF0ZSJ9YnJlYWs7Y2FzZSAyOm49MT09PWU/InVuY2hlY2tlZC1jaGVja2VkIjoidW5jaGVja2VkLWluZGV0ZXJtaW5hdGUiO2JyZWFrO2Nhc2UgMTpuPTI9PT1lPyJjaGVja2VkLXVuY2hlY2tlZCI6ImNoZWNrZWQtaW5kZXRlcm1pbmF0ZSI7YnJlYWs7Y2FzZSAzOm49MT09PWU/ImluZGV0ZXJtaW5hdGUtY2hlY2tlZCI6ImluZGV0ZXJtaW5hdGUtdW5jaGVja2VkIn1yZXR1cm5gbWF0LWNoZWNrYm94LWFuaW0tJHtufWB9X3N5bmNJbmRldGVybWluYXRlKHQpe2NvbnN0IGU9dGhpcy5faW5wdXRFbGVtZW50O2UmJihlLm5hdGl2ZUVsZW1lbnQuaW5kZXRlcm1pbmF0ZT10KX19YlouybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGJaKShnZihLaCksZ2YoT2IpLGdmKGZGKSxnZihtQyksR2EoInRhYmluZGV4IiksZ2YoY2ssOCksZ2YoZFosOCkpfSxiWi7JtWNtcD1zbyh7dHlwZTpiWixzZWxlY3RvcnM6W1sibWF0LWNoZWNrYm94Il1dLHZpZXdRdWVyeTpmdW5jdGlvbiB0KGUsbil7aWYoMSZlJiYoVnkobFosNSksVnkobUwsNSkpLDImZSl7bGV0IHQ7QnkodD1VeSgpKSYmKG4uX2lucHV0RWxlbWVudD10LmZpcnN0KSxCeSh0PVV5KCkpJiYobi5yaXBwbGU9dC5maXJzdCl9fSxob3N0QXR0cnM6WzEsIm1hdC1jaGVja2JveCJdLGhvc3RWYXJzOjEyLGhvc3RCaW5kaW5nczpmdW5jdGlvbiB0KGUsbil7MiZlJiYoY2coImlkIixuLmlkKSx5bSgidGFiaW5kZXgiLG51bGwpLGN1KCJtYXQtY2hlY2tib3gtaW5kZXRlcm1pbmF0ZSIsbi5pbmRldGVybWluYXRlKSgibWF0LWNoZWNrYm94LWNoZWNrZWQiLG4uY2hlY2tlZCkoIm1hdC1jaGVja2JveC1kaXNhYmxlZCIsbi5kaXNhYmxlZCkoIm1hdC1jaGVja2JveC1sYWJlbC1iZWZvcmUiLCJiZWZvcmUiPT1uLmxhYmVsUG9zaXRpb24pKCJfbWF0LWFuaW1hdGlvbi1ub29wYWJsZSIsIk5vb3BBbmltYXRpb25zIj09PW4uX2FuaW1hdGlvbk1vZGUpKX0saW5wdXRzOntkaXNhYmxlUmlwcGxlOiJkaXNhYmxlUmlwcGxlIixjb2xvcjoiY29sb3IiLHRhYkluZGV4OiJ0YWJJbmRleCIsYXJpYUxhYmVsOlsiYXJpYS1sYWJlbCIsImFyaWFMYWJlbCJdLGFyaWFMYWJlbGxlZGJ5OlsiYXJpYS1sYWJlbGxlZGJ5IiwiYXJpYUxhYmVsbGVkYnkiXSxpZDoiaWQiLGxhYmVsUG9zaXRpb246ImxhYmVsUG9zaXRpb24iLG5hbWU6Im5hbWUiLHJlcXVpcmVkOiJyZXF1aXJlZCIsY2hlY2tlZDoiY2hlY2tlZCIsZGlzYWJsZWQ6ImRpc2FibGVkIixpbmRldGVybWluYXRlOiJpbmRldGVybWluYXRlIixhcmlhRGVzY3JpYmVkYnk6WyJhcmlhLWRlc2NyaWJlZGJ5IiwiYXJpYURlc2NyaWJlZGJ5Il0sdmFsdWU6InZhbHVlIn0sb3V0cHV0czp7Y2hhbmdlOiJjaGFuZ2UiLGluZGV0ZXJtaW5hdGVDaGFuZ2U6ImluZGV0ZXJtaW5hdGVDaGFuZ2UifSxleHBvcnRBczpbIm1hdENoZWNrYm94Il0sZmVhdHVyZXM6W2poKFt1Wl0pLFFwXSxuZ0NvbnRlbnRTZWxlY3RvcnM6WyIqIl0sZGVjbHM6MTcsdmFyczoyMSxjb25zdHM6W1sxLCJtYXQtY2hlY2tib3gtbGF5b3V0Il0sWyJsYWJlbCIsIiJdLFsxLCJtYXQtY2hlY2tib3gtaW5uZXItY29udGFpbmVyIl0sWyJ0eXBlIiwiY2hlY2tib3giLDEsIm1hdC1jaGVja2JveC1pbnB1dCIsImNkay12aXN1YWxseS1oaWRkZW4iLDMsImlkIiwicmVxdWlyZWQiLCJjaGVja2VkIiwiZGlzYWJsZWQiLCJ0YWJJbmRleCIsImNoYW5nZSIsImNsaWNrIl0sWyJpbnB1dCIsIiJdLFsibWF0UmlwcGxlIiwiIiwxLCJtYXQtY2hlY2tib3gtcmlwcGxlIiwibWF0LWZvY3VzLWluZGljYXRvciIsMywibWF0UmlwcGxlVHJpZ2dlciIsIm1hdFJpcHBsZURpc2FibGVkIiwibWF0UmlwcGxlUmFkaXVzIiwibWF0UmlwcGxlQ2VudGVyZWQiLCJtYXRSaXBwbGVBbmltYXRpb24iXSxbMSwibWF0LXJpcHBsZS1lbGVtZW50IiwibWF0LWNoZWNrYm94LXBlcnNpc3RlbnQtcmlwcGxlIl0sWzEsIm1hdC1jaGVja2JveC1mcmFtZSJdLFsxLCJtYXQtY2hlY2tib3gtYmFja2dyb3VuZCJdLFsidmVyc2lvbiIsIjEuMSIsImZvY3VzYWJsZSIsImZhbHNlIiwidmlld0JveCIsIjAgMCAyNCAyNCIsMCwieG1sIiwic3BhY2UiLCJwcmVzZXJ2ZSIsImFyaWEtaGlkZGVuIiwidHJ1ZSIsMSwibWF0LWNoZWNrYm94LWNoZWNrbWFyayJdLFsiZmlsbCIsIm5vbmUiLCJzdHJva2UiLCJ3aGl0ZSIsImQiLCJNNC4xLDEyLjcgOSwxNy42IDIwLjMsNi4zIiwxLCJtYXQtY2hlY2tib3gtY2hlY2ttYXJrLXBhdGgiXSxbMSwibWF0LWNoZWNrYm94LW1peGVkbWFyayJdLFsxLCJtYXQtY2hlY2tib3gtbGFiZWwiLDMsImNka09ic2VydmVDb250ZW50Il0sWyJjaGVja2JveExhYmVsIiwiIl0sWzIsImRpc3BsYXkiLCJub25lIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXtpZigxJmUmJihIZigpLENmKDAsImxhYmVsIiwwLDEpLENmKDIsInNwYW4iLDIpLENmKDMsImlucHV0IiwzLDQpLFJmKCJjaGFuZ2UiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLl9vbkludGVyYWN0aW9uRXZlbnQoZSl9KSkoImNsaWNrIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5fb25JbnB1dENsaWNrKGUpfSkpLE1mKCksQ2YoNSwic3BhbiIsNSksdmYoNiwic3BhbiIsNiksTWYoKSx2Zig3LCJzcGFuIiw3KSxDZig4LCJzcGFuIiw4KSxvYSgpLENmKDksInN2ZyIsOSksdmYoMTAsInBhdGgiLDEwKSxNZigpLGFhKCksdmYoMTEsInNwYW4iLDExKSxNZigpLE1mKCksQ2YoMTIsInNwYW4iLDEyLDEzKSxSZigiY2RrT2JzZXJ2ZUNvbnRlbnQiLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4uX29uTGFiZWxUZXh0Q2hhbmdlKCl9KSksQ2YoMTQsInNwYW4iLDE0KSxQdSgxNSwiwqAiKSxNZigpLEZmKDE2KSxNZigpLE1mKCkpLDImZSl7Y29uc3QgdD1GbSgxKSxlPUZtKDEzKTt5bSgiZm9yIixuLmlucHV0SWQpLERjKDIpLGN1KCJtYXQtY2hlY2tib3gtaW5uZXItY29udGFpbmVyLW5vLXNpZGUtbWFyZ2luIiwhZS50ZXh0Q29udGVudHx8IWUudGV4dENvbnRlbnQudHJpbSgpKSxEYygxKSxiZigiaWQiLG4uaW5wdXRJZCkoInJlcXVpcmVkIixuLnJlcXVpcmVkKSgiY2hlY2tlZCIsbi5jaGVja2VkKSgiZGlzYWJsZWQiLG4uZGlzYWJsZWQpKCJ0YWJJbmRleCIsbi50YWJJbmRleCkseW0oInZhbHVlIixuLnZhbHVlKSgibmFtZSIsbi5uYW1lKSgiYXJpYS1sYWJlbCIsbi5hcmlhTGFiZWx8fG51bGwpKCJhcmlhLWxhYmVsbGVkYnkiLG4uYXJpYUxhYmVsbGVkYnkpKCJhcmlhLWNoZWNrZWQiLG4uX2dldEFyaWFDaGVja2VkKCkpKCJhcmlhLWRlc2NyaWJlZGJ5IixuLmFyaWFEZXNjcmliZWRieSksRGMoMiksYmYoIm1hdFJpcHBsZVRyaWdnZXIiLHQpKCJtYXRSaXBwbGVEaXNhYmxlZCIsbi5faXNSaXBwbGVEaXNhYmxlZCgpKSgibWF0UmlwcGxlUmFkaXVzIiwyMCkoIm1hdFJpcHBsZUNlbnRlcmVkIiwhMCkoIm1hdFJpcHBsZUFuaW1hdGlvbiIsaXkoMTksY1osIk5vb3BBbmltYXRpb25zIj09PW4uX2FuaW1hdGlvbk1vZGU/MDoxNTApKX19LGRpcmVjdGl2ZXM6W21MLFBIXSxzdHlsZXM6WyJAa2V5ZnJhbWVzIG1hdC1jaGVja2JveC1mYWRlLWluLWJhY2tncm91bmR7MCV7b3BhY2l0eTowfTUwJXtvcGFjaXR5OjF9fUBrZXlmcmFtZXMgbWF0LWNoZWNrYm94LWZhZGUtb3V0LWJhY2tncm91bmR7MCUsNTAle29wYWNpdHk6MX0xMDAle29wYWNpdHk6MH19QGtleWZyYW1lcyBtYXQtY2hlY2tib3gtdW5jaGVja2VkLWNoZWNrZWQtY2hlY2ttYXJrLXBhdGh7MCUsNTAle3N0cm9rZS1kYXNob2Zmc2V0OjIyLjkxMDI1OX01MCV7YW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjpjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAwLjEpfTEwMCV7c3Ryb2tlLWRhc2hvZmZzZXQ6MH19QGtleWZyYW1lcyBtYXQtY2hlY2tib3gtdW5jaGVja2VkLWluZGV0ZXJtaW5hdGUtbWl4ZWRtYXJrezAlLDY4LjIle3RyYW5zZm9ybTpzY2FsZVgoMCl9NjguMiV7YW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjpjdWJpYy1iZXppZXIoMCwgMCwgMCwgMSl9MTAwJXt0cmFuc2Zvcm06c2NhbGVYKDEpfX1Aa2V5ZnJhbWVzIG1hdC1jaGVja2JveC1jaGVja2VkLXVuY2hlY2tlZC1jaGVja21hcmstcGF0aHtmcm9te2FuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246Y3ViaWMtYmV6aWVyKDAuNCwgMCwgMSwgMSk7c3Ryb2tlLWRhc2hvZmZzZXQ6MH10b3tzdHJva2UtZGFzaG9mZnNldDotMjIuOTEwMjU5fX1Aa2V5ZnJhbWVzIG1hdC1jaGVja2JveC1jaGVja2VkLWluZGV0ZXJtaW5hdGUtY2hlY2ttYXJre2Zyb217YW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjpjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAwLjEpO29wYWNpdHk6MTt0cmFuc2Zvcm06cm90YXRlKDBkZWcpfXRve29wYWNpdHk6MDt0cmFuc2Zvcm06cm90YXRlKDQ1ZGVnKX19QGtleWZyYW1lcyBtYXQtY2hlY2tib3gtaW5kZXRlcm1pbmF0ZS1jaGVja2VkLWNoZWNrbWFya3tmcm9te2FuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246Y3ViaWMtYmV6aWVyKDAuMTQsIDAsIDAsIDEpO29wYWNpdHk6MDt0cmFuc2Zvcm06cm90YXRlKDQ1ZGVnKX10b3tvcGFjaXR5OjE7dHJhbnNmb3JtOnJvdGF0ZSgzNjBkZWcpfX1Aa2V5ZnJhbWVzIG1hdC1jaGVja2JveC1jaGVja2VkLWluZGV0ZXJtaW5hdGUtbWl4ZWRtYXJre2Zyb217YW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjpjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAwLjEpO29wYWNpdHk6MDt0cmFuc2Zvcm06cm90YXRlKC00NWRlZyl9dG97b3BhY2l0eToxO3RyYW5zZm9ybTpyb3RhdGUoMGRlZyl9fUBrZXlmcmFtZXMgbWF0LWNoZWNrYm94LWluZGV0ZXJtaW5hdGUtY2hlY2tlZC1taXhlZG1hcmt7ZnJvbXthbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOmN1YmljLWJlemllcigwLjE0LCAwLCAwLCAxKTtvcGFjaXR5OjE7dHJhbnNmb3JtOnJvdGF0ZSgwZGVnKX10b3tvcGFjaXR5OjA7dHJhbnNmb3JtOnJvdGF0ZSgzMTVkZWcpfX1Aa2V5ZnJhbWVzIG1hdC1jaGVja2JveC1pbmRldGVybWluYXRlLXVuY2hlY2tlZC1taXhlZG1hcmt7MCV7YW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjpsaW5lYXI7b3BhY2l0eToxO3RyYW5zZm9ybTpzY2FsZVgoMSl9MzIuOCUsMTAwJXtvcGFjaXR5OjA7dHJhbnNmb3JtOnNjYWxlWCgwKX19Lm1hdC1jaGVja2JveC1iYWNrZ3JvdW5kLC5tYXQtY2hlY2tib3gtZnJhbWV7dG9wOjA7bGVmdDowO3JpZ2h0OjA7Ym90dG9tOjA7cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJhZGl1czoycHg7Ym94LXNpemluZzpib3JkZXItYm94O3BvaW50ZXItZXZlbnRzOm5vbmV9Lm1hdC1jaGVja2JveHtkaXNwbGF5OmlubGluZS1ibG9jazt0cmFuc2l0aW9uOmJhY2tncm91bmQgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSksYm94LXNoYWRvdyAyODBtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpO2N1cnNvcjpwb2ludGVyOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudH0uX21hdC1hbmltYXRpb24tbm9vcGFibGUubWF0LWNoZWNrYm94e3RyYW5zaXRpb246bm9uZTthbmltYXRpb246bm9uZX0ubWF0LWNoZWNrYm94IC5tYXQtcmlwcGxlLWVsZW1lbnQ6bm90KC5tYXQtY2hlY2tib3gtcGVyc2lzdGVudC1yaXBwbGUpe29wYWNpdHk6LjE2fS5tYXQtY2hlY2tib3ggLm1hdC1jaGVja2JveC1yaXBwbGV7cG9zaXRpb246YWJzb2x1dGU7bGVmdDpjYWxjKDUwJSAtIDIwcHgpO3RvcDpjYWxjKDUwJSAtIDIwcHgpO2hlaWdodDo0MHB4O3dpZHRoOjQwcHg7ei1pbmRleDoxO3BvaW50ZXItZXZlbnRzOm5vbmV9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWNoZWNrYm94LmNkay1rZXlib2FyZC1mb2N1c2VkIC5tYXQtY2hlY2tib3gtcmlwcGxle291dGxpbmU6c29saWQgM3B4fS5tYXQtY2hlY2tib3gtbGF5b3V0ey13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTstbW96LXVzZXItc2VsZWN0Om5vbmU7LW1zLXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZTtjdXJzb3I6aW5oZXJpdDthbGlnbi1pdGVtczpiYXNlbGluZTt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7ZGlzcGxheTppbmxpbmUtZmxleDt3aGl0ZS1zcGFjZTpub3dyYXB9Lm1hdC1jaGVja2JveC1sYWJlbHstd2Via2l0LXVzZXItc2VsZWN0OmF1dG87LW1vei11c2VyLXNlbGVjdDphdXRvOy1tcy11c2VyLXNlbGVjdDphdXRvO3VzZXItc2VsZWN0OmF1dG99Lm1hdC1jaGVja2JveC1pbm5lci1jb250YWluZXJ7ZGlzcGxheTppbmxpbmUtYmxvY2s7aGVpZ2h0OjE2cHg7bGluZS1oZWlnaHQ6MDttYXJnaW46YXV0bzttYXJnaW4tcmlnaHQ6OHB4O29yZGVyOjA7cG9zaXRpb246cmVsYXRpdmU7dmVydGljYWwtYWxpZ246bWlkZGxlO3doaXRlLXNwYWNlOm5vd3JhcDt3aWR0aDoxNnB4O2ZsZXgtc2hyaW5rOjB9W2Rpcj1ydGxdIC5tYXQtY2hlY2tib3gtaW5uZXItY29udGFpbmVye21hcmdpbi1sZWZ0OjhweDttYXJnaW4tcmlnaHQ6YXV0b30ubWF0LWNoZWNrYm94LWlubmVyLWNvbnRhaW5lci1uby1zaWRlLW1hcmdpbnttYXJnaW4tbGVmdDowO21hcmdpbi1yaWdodDowfS5tYXQtY2hlY2tib3gtZnJhbWV7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDt0cmFuc2l0aW9uOmJvcmRlci1jb2xvciA5MG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDAuMSk7Ym9yZGVyLXdpZHRoOjJweDtib3JkZXItc3R5bGU6c29saWR9Ll9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlIC5tYXQtY2hlY2tib3gtZnJhbWV7dHJhbnNpdGlvbjpub25lfS5tYXQtY2hlY2tib3gtYmFja2dyb3VuZHthbGlnbi1pdGVtczpjZW50ZXI7ZGlzcGxheTppbmxpbmUtZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO3RyYW5zaXRpb246YmFja2dyb3VuZC1jb2xvciA5MG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDAuMSksb3BhY2l0eSA5MG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDAuMSk7LXdlYmtpdC1wcmludC1jb2xvci1hZGp1c3Q6ZXhhY3Q7Y29sb3ItYWRqdXN0OmV4YWN0fS5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZSAubWF0LWNoZWNrYm94LWJhY2tncm91bmR7dHJhbnNpdGlvbjpub25lfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1jaGVja2JveCAubWF0LWNoZWNrYm94LWJhY2tncm91bmR7YmFja2dyb3VuZDpub25lfS5tYXQtY2hlY2tib3gtcGVyc2lzdGVudC1yaXBwbGV7ZGlzcGxheTpibG9jazt3aWR0aDoxMDAlO2hlaWdodDoxMDAlO3RyYW5zZm9ybTpub25lfS5tYXQtY2hlY2tib3gtaW5uZXItY29udGFpbmVyOmhvdmVyIC5tYXQtY2hlY2tib3gtcGVyc2lzdGVudC1yaXBwbGV7b3BhY2l0eTouMDR9Lm1hdC1jaGVja2JveC5jZGsta2V5Ym9hcmQtZm9jdXNlZCAubWF0LWNoZWNrYm94LXBlcnNpc3RlbnQtcmlwcGxle29wYWNpdHk6LjEyfS5tYXQtY2hlY2tib3gtcGVyc2lzdGVudC1yaXBwbGUsLm1hdC1jaGVja2JveC5tYXQtY2hlY2tib3gtZGlzYWJsZWQgLm1hdC1jaGVja2JveC1pbm5lci1jb250YWluZXI6aG92ZXIgLm1hdC1jaGVja2JveC1wZXJzaXN0ZW50LXJpcHBsZXtvcGFjaXR5OjB9QG1lZGlhKGhvdmVyOiBub25lKXsubWF0LWNoZWNrYm94LWlubmVyLWNvbnRhaW5lcjpob3ZlciAubWF0LWNoZWNrYm94LXBlcnNpc3RlbnQtcmlwcGxle2Rpc3BsYXk6bm9uZX19Lm1hdC1jaGVja2JveC1jaGVja21hcmt7dG9wOjA7bGVmdDowO3JpZ2h0OjA7Ym90dG9tOjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MTAwJX0ubWF0LWNoZWNrYm94LWNoZWNrbWFyay1wYXRoe3N0cm9rZS1kYXNob2Zmc2V0OjIyLjkxMDI1OTtzdHJva2UtZGFzaGFycmF5OjIyLjkxMDI1OTtzdHJva2Utd2lkdGg6Mi4xMzMzMzMzMzMzcHh9LmNkay1oaWdoLWNvbnRyYXN0LWJsYWNrLW9uLXdoaXRlIC5tYXQtY2hlY2tib3gtY2hlY2ttYXJrLXBhdGh7c3Ryb2tlOiMwMDAgIWltcG9ydGFudH0ubWF0LWNoZWNrYm94LW1peGVkbWFya3t3aWR0aDpjYWxjKDEwMCUgLSA2cHgpO2hlaWdodDoycHg7b3BhY2l0eTowO3RyYW5zZm9ybTpzY2FsZVgoMCkgcm90YXRlKDBkZWcpO2JvcmRlci1yYWRpdXM6MnB4fS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1jaGVja2JveC1taXhlZG1hcmt7aGVpZ2h0OjA7Ym9yZGVyLXRvcDpzb2xpZCAycHg7bWFyZ2luLXRvcDoycHh9Lm1hdC1jaGVja2JveC1sYWJlbC1iZWZvcmUgLm1hdC1jaGVja2JveC1pbm5lci1jb250YWluZXJ7b3JkZXI6MTttYXJnaW4tbGVmdDo4cHg7bWFyZ2luLXJpZ2h0OmF1dG99W2Rpcj1ydGxdIC5tYXQtY2hlY2tib3gtbGFiZWwtYmVmb3JlIC5tYXQtY2hlY2tib3gtaW5uZXItY29udGFpbmVye21hcmdpbi1sZWZ0OmF1dG87bWFyZ2luLXJpZ2h0OjhweH0ubWF0LWNoZWNrYm94LWNoZWNrZWQgLm1hdC1jaGVja2JveC1jaGVja21hcmt7b3BhY2l0eToxfS5tYXQtY2hlY2tib3gtY2hlY2tlZCAubWF0LWNoZWNrYm94LWNoZWNrbWFyay1wYXRoe3N0cm9rZS1kYXNob2Zmc2V0OjB9Lm1hdC1jaGVja2JveC1jaGVja2VkIC5tYXQtY2hlY2tib3gtbWl4ZWRtYXJre3RyYW5zZm9ybTpzY2FsZVgoMSkgcm90YXRlKC00NWRlZyl9Lm1hdC1jaGVja2JveC1pbmRldGVybWluYXRlIC5tYXQtY2hlY2tib3gtY2hlY2ttYXJre29wYWNpdHk6MDt0cmFuc2Zvcm06cm90YXRlKDQ1ZGVnKX0ubWF0LWNoZWNrYm94LWluZGV0ZXJtaW5hdGUgLm1hdC1jaGVja2JveC1jaGVja21hcmstcGF0aHtzdHJva2UtZGFzaG9mZnNldDowfS5tYXQtY2hlY2tib3gtaW5kZXRlcm1pbmF0ZSAubWF0LWNoZWNrYm94LW1peGVkbWFya3tvcGFjaXR5OjE7dHJhbnNmb3JtOnNjYWxlWCgxKSByb3RhdGUoMGRlZyl9Lm1hdC1jaGVja2JveC11bmNoZWNrZWQgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5ke2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnR9Lm1hdC1jaGVja2JveC1kaXNhYmxlZHtjdXJzb3I6ZGVmYXVsdH0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtY2hlY2tib3gtZGlzYWJsZWR7b3BhY2l0eTouNX0ubWF0LWNoZWNrYm94LWFuaW0tdW5jaGVja2VkLWNoZWNrZWQgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5ke2FuaW1hdGlvbjoxODBtcyBsaW5lYXIgMG1zIG1hdC1jaGVja2JveC1mYWRlLWluLWJhY2tncm91bmR9Lm1hdC1jaGVja2JveC1hbmltLXVuY2hlY2tlZC1jaGVja2VkIC5tYXQtY2hlY2tib3gtY2hlY2ttYXJrLXBhdGh7YW5pbWF0aW9uOjE4MG1zIGxpbmVhciAwbXMgbWF0LWNoZWNrYm94LXVuY2hlY2tlZC1jaGVja2VkLWNoZWNrbWFyay1wYXRofS5tYXQtY2hlY2tib3gtYW5pbS11bmNoZWNrZWQtaW5kZXRlcm1pbmF0ZSAubWF0LWNoZWNrYm94LWJhY2tncm91bmR7YW5pbWF0aW9uOjE4MG1zIGxpbmVhciAwbXMgbWF0LWNoZWNrYm94LWZhZGUtaW4tYmFja2dyb3VuZH0ubWF0LWNoZWNrYm94LWFuaW0tdW5jaGVja2VkLWluZGV0ZXJtaW5hdGUgLm1hdC1jaGVja2JveC1taXhlZG1hcmt7YW5pbWF0aW9uOjkwbXMgbGluZWFyIDBtcyBtYXQtY2hlY2tib3gtdW5jaGVja2VkLWluZGV0ZXJtaW5hdGUtbWl4ZWRtYXJrfS5tYXQtY2hlY2tib3gtYW5pbS1jaGVja2VkLXVuY2hlY2tlZCAubWF0LWNoZWNrYm94LWJhY2tncm91bmR7YW5pbWF0aW9uOjE4MG1zIGxpbmVhciAwbXMgbWF0LWNoZWNrYm94LWZhZGUtb3V0LWJhY2tncm91bmR9Lm1hdC1jaGVja2JveC1hbmltLWNoZWNrZWQtdW5jaGVja2VkIC5tYXQtY2hlY2tib3gtY2hlY2ttYXJrLXBhdGh7YW5pbWF0aW9uOjkwbXMgbGluZWFyIDBtcyBtYXQtY2hlY2tib3gtY2hlY2tlZC11bmNoZWNrZWQtY2hlY2ttYXJrLXBhdGh9Lm1hdC1jaGVja2JveC1hbmltLWNoZWNrZWQtaW5kZXRlcm1pbmF0ZSAubWF0LWNoZWNrYm94LWNoZWNrbWFya3thbmltYXRpb246OTBtcyBsaW5lYXIgMG1zIG1hdC1jaGVja2JveC1jaGVja2VkLWluZGV0ZXJtaW5hdGUtY2hlY2ttYXJrfS5tYXQtY2hlY2tib3gtYW5pbS1jaGVja2VkLWluZGV0ZXJtaW5hdGUgLm1hdC1jaGVja2JveC1taXhlZG1hcmt7YW5pbWF0aW9uOjkwbXMgbGluZWFyIDBtcyBtYXQtY2hlY2tib3gtY2hlY2tlZC1pbmRldGVybWluYXRlLW1peGVkbWFya30ubWF0LWNoZWNrYm94LWFuaW0taW5kZXRlcm1pbmF0ZS1jaGVja2VkIC5tYXQtY2hlY2tib3gtY2hlY2ttYXJre2FuaW1hdGlvbjo1MDBtcyBsaW5lYXIgMG1zIG1hdC1jaGVja2JveC1pbmRldGVybWluYXRlLWNoZWNrZWQtY2hlY2ttYXJrfS5tYXQtY2hlY2tib3gtYW5pbS1pbmRldGVybWluYXRlLWNoZWNrZWQgLm1hdC1jaGVja2JveC1taXhlZG1hcmt7YW5pbWF0aW9uOjUwMG1zIGxpbmVhciAwbXMgbWF0LWNoZWNrYm94LWluZGV0ZXJtaW5hdGUtY2hlY2tlZC1taXhlZG1hcmt9Lm1hdC1jaGVja2JveC1hbmltLWluZGV0ZXJtaW5hdGUtdW5jaGVja2VkIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZHthbmltYXRpb246MTgwbXMgbGluZWFyIDBtcyBtYXQtY2hlY2tib3gtZmFkZS1vdXQtYmFja2dyb3VuZH0ubWF0LWNoZWNrYm94LWFuaW0taW5kZXRlcm1pbmF0ZS11bmNoZWNrZWQgLm1hdC1jaGVja2JveC1taXhlZG1hcmt7YW5pbWF0aW9uOjMwMG1zIGxpbmVhciAwbXMgbWF0LWNoZWNrYm94LWluZGV0ZXJtaW5hdGUtdW5jaGVja2VkLW1peGVkbWFya30ubWF0LWNoZWNrYm94LWlucHV0e2JvdHRvbTowO2xlZnQ6NTAlfVxuIl0sZW5jYXBzdWxhdGlvbjoyLGNoYW5nZURldGVjdGlvbjowfSksYlouY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpLaH0se3R5cGU6T2J9LHt0eXBlOmZGfSx7dHlwZTptQ30se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOiRhLGFyZ3M6WyJ0YWJpbmRleCJdfV19LHt0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpbY2tdfV19LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpbZFpdfV19XSxiWi5wcm9wRGVjb3JhdG9ycz17YXJpYUxhYmVsOlt7dHlwZTpSXyxhcmdzOlsiYXJpYS1sYWJlbCJdfV0sYXJpYUxhYmVsbGVkYnk6W3t0eXBlOlJfLGFyZ3M6WyJhcmlhLWxhYmVsbGVkYnkiXX1dLGFyaWFEZXNjcmliZWRieTpbe3R5cGU6Ul8sYXJnczpbImFyaWEtZGVzY3JpYmVkYnkiXX1dLGlkOlt7dHlwZTpSX31dLHJlcXVpcmVkOlt7dHlwZTpSX31dLGxhYmVsUG9zaXRpb246W3t0eXBlOlJffV0sbmFtZTpbe3R5cGU6Ul99XSxjaGFuZ2U6W3t0eXBlOkVffV0saW5kZXRlcm1pbmF0ZUNoYW5nZTpbe3R5cGU6RV99XSx2YWx1ZTpbe3R5cGU6Ul99XSxfaW5wdXRFbGVtZW50Olt7dHlwZTphcixhcmdzOlsiaW5wdXQiXX1dLHJpcHBsZTpbe3R5cGU6YXIsYXJnczpbbUxdfV0sY2hlY2tlZDpbe3R5cGU6Ul99XSxkaXNhYmxlZDpbe3R5cGU6Ul99XSxpbmRldGVybWluYXRlOlt7dHlwZTpSX31dfSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKGJaLFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6Im1hdC1jaGVja2JveCIsdGVtcGxhdGU6JzxsYWJlbCBbYXR0ci5mb3JdPSJpbnB1dElkIiBjbGFzcz0ibWF0LWNoZWNrYm94LWxheW91dCIgI2xhYmVsPlxuICA8c3BhbiBjbGFzcz0ibWF0LWNoZWNrYm94LWlubmVyLWNvbnRhaW5lciJcbiAgICAgICBbY2xhc3MubWF0LWNoZWNrYm94LWlubmVyLWNvbnRhaW5lci1uby1zaWRlLW1hcmdpbl09IiFjaGVja2JveExhYmVsLnRleHRDb250ZW50IHx8ICFjaGVja2JveExhYmVsLnRleHRDb250ZW50LnRyaW0oKSI+XG4gICAgPGlucHV0ICNpbnB1dFxuICAgICAgICAgICBjbGFzcz0ibWF0LWNoZWNrYm94LWlucHV0IGNkay12aXN1YWxseS1oaWRkZW4iIHR5cGU9ImNoZWNrYm94IlxuICAgICAgICAgICBbaWRdPSJpbnB1dElkIlxuICAgICAgICAgICBbcmVxdWlyZWRdPSJyZXF1aXJlZCJcbiAgICAgICAgICAgW2NoZWNrZWRdPSJjaGVja2VkIlxuICAgICAgICAgICBbYXR0ci52YWx1ZV09InZhbHVlIlxuICAgICAgICAgICBbZGlzYWJsZWRdPSJkaXNhYmxlZCJcbiAgICAgICAgICAgW2F0dHIubmFtZV09Im5hbWUiXG4gICAgICAgICAgIFt0YWJJbmRleF09InRhYkluZGV4IlxuICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT0iYXJpYUxhYmVsIHx8IG51bGwiXG4gICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09ImFyaWFMYWJlbGxlZGJ5IlxuICAgICAgICAgICBbYXR0ci5hcmlhLWNoZWNrZWRdPSJfZ2V0QXJpYUNoZWNrZWQoKSJcbiAgICAgICAgICAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09ImFyaWFEZXNjcmliZWRieSJcbiAgICAgICAgICAgKGNoYW5nZSk9Il9vbkludGVyYWN0aW9uRXZlbnQoJGV2ZW50KSJcbiAgICAgICAgICAgKGNsaWNrKT0iX29uSW5wdXRDbGljaygkZXZlbnQpIj5cbiAgICA8c3BhbiBtYXRSaXBwbGUgY2xhc3M9Im1hdC1jaGVja2JveC1yaXBwbGUgbWF0LWZvY3VzLWluZGljYXRvciJcbiAgICAgICAgIFttYXRSaXBwbGVUcmlnZ2VyXT0ibGFiZWwiXG4gICAgICAgICBbbWF0UmlwcGxlRGlzYWJsZWRdPSJfaXNSaXBwbGVEaXNhYmxlZCgpIlxuICAgICAgICAgW21hdFJpcHBsZVJhZGl1c109IjIwIlxuICAgICAgICAgW21hdFJpcHBsZUNlbnRlcmVkXT0idHJ1ZSJcbiAgICAgICAgIFttYXRSaXBwbGVBbmltYXRpb25dPSJ7ZW50ZXJEdXJhdGlvbjogX2FuaW1hdGlvbk1vZGUgPT09IFwnTm9vcEFuaW1hdGlvbnNcJyA/IDAgOiAxNTB9Ij5cbiAgICAgIDxzcGFuIGNsYXNzPSJtYXQtcmlwcGxlLWVsZW1lbnQgbWF0LWNoZWNrYm94LXBlcnNpc3RlbnQtcmlwcGxlIj48L3NwYW4+XG4gICAgPC9zcGFuPlxuICAgIDxzcGFuIGNsYXNzPSJtYXQtY2hlY2tib3gtZnJhbWUiPjwvc3Bhbj5cbiAgICA8c3BhbiBjbGFzcz0ibWF0LWNoZWNrYm94LWJhY2tncm91bmQiPlxuICAgICAgPHN2ZyB2ZXJzaW9uPSIxLjEiXG4gICAgICAgICAgIGZvY3VzYWJsZT0iZmFsc2UiXG4gICAgICAgICAgIGNsYXNzPSJtYXQtY2hlY2tib3gtY2hlY2ttYXJrIlxuICAgICAgICAgICB2aWV3Qm94PSIwIDAgMjQgMjQiXG4gICAgICAgICAgIHhtbDpzcGFjZT0icHJlc2VydmUiXG4gICAgICAgICAgIGFyaWEtaGlkZGVuPSJ0cnVlIj5cbiAgICAgICAgPHBhdGggY2xhc3M9Im1hdC1jaGVja2JveC1jaGVja21hcmstcGF0aCJcbiAgICAgICAgICAgICAgZmlsbD0ibm9uZSJcbiAgICAgICAgICAgICAgc3Ryb2tlPSJ3aGl0ZSJcbiAgICAgICAgICAgICAgZD0iTTQuMSwxMi43IDksMTcuNiAyMC4zLDYuMyIvPlxuICAgICAgPC9zdmc+XG4gICAgICBceDNjIS0tIEVsZW1lbnQgZm9yIHJlbmRlcmluZyB0aGUgaW5kZXRlcm1pbmF0ZSBzdGF0ZSBjaGVja2JveC4gLS1ceDNlXG4gICAgICA8c3BhbiBjbGFzcz0ibWF0LWNoZWNrYm94LW1peGVkbWFyayI+PC9zcGFuPlxuICAgIDwvc3Bhbj5cbiAgPC9zcGFuPlxuICA8c3BhbiBjbGFzcz0ibWF0LWNoZWNrYm94LWxhYmVsIiAjY2hlY2tib3hMYWJlbCAoY2RrT2JzZXJ2ZUNvbnRlbnQpPSJfb25MYWJlbFRleHRDaGFuZ2UoKSI+XG4gICAgXHgzYyEtLSBBZGQgYW4gaW52aXNpYmxlIHNwYW4gc28gSkFXUyBjYW4gcmVhZCB0aGUgbGFiZWwgLS1ceDNlXG4gICAgPHNwYW4gc3R5bGU9ImRpc3BsYXk6bm9uZSI+Jm5ic3A7PC9zcGFuPlxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgPC9zcGFuPlxuPC9sYWJlbD5cbicsZXhwb3J0QXM6Im1hdENoZWNrYm94Iixob3N0OntjbGFzczoibWF0LWNoZWNrYm94IiwiW2lkXSI6ImlkIiwiW2F0dHIudGFiaW5kZXhdIjoibnVsbCIsIltjbGFzcy5tYXQtY2hlY2tib3gtaW5kZXRlcm1pbmF0ZV0iOiJpbmRldGVybWluYXRlIiwiW2NsYXNzLm1hdC1jaGVja2JveC1jaGVja2VkXSI6ImNoZWNrZWQiLCJbY2xhc3MubWF0LWNoZWNrYm94LWRpc2FibGVkXSI6ImRpc2FibGVkIiwiW2NsYXNzLm1hdC1jaGVja2JveC1sYWJlbC1iZWZvcmVdIjonbGFiZWxQb3NpdGlvbiA9PSAiYmVmb3JlIicsIltjbGFzcy5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZV0iOiJfYW5pbWF0aW9uTW9kZSA9PT0gJ05vb3BBbmltYXRpb25zJyJ9LHByb3ZpZGVyczpbdVpdLGlucHV0czpbImRpc2FibGVSaXBwbGUiLCJjb2xvciIsInRhYkluZGV4Il0sZW5jYXBzdWxhdGlvbjpXbi5Ob25lLGNoYW5nZURldGVjdGlvbjpqbi5PblB1c2gsc3R5bGVzOlsiQGtleWZyYW1lcyBtYXQtY2hlY2tib3gtZmFkZS1pbi1iYWNrZ3JvdW5kezAle29wYWNpdHk6MH01MCV7b3BhY2l0eToxfX1Aa2V5ZnJhbWVzIG1hdC1jaGVja2JveC1mYWRlLW91dC1iYWNrZ3JvdW5kezAlLDUwJXtvcGFjaXR5OjF9MTAwJXtvcGFjaXR5OjB9fUBrZXlmcmFtZXMgbWF0LWNoZWNrYm94LXVuY2hlY2tlZC1jaGVja2VkLWNoZWNrbWFyay1wYXRoezAlLDUwJXtzdHJva2UtZGFzaG9mZnNldDoyMi45MTAyNTl9NTAle2FuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246Y3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMC4xKX0xMDAle3N0cm9rZS1kYXNob2Zmc2V0OjB9fUBrZXlmcmFtZXMgbWF0LWNoZWNrYm94LXVuY2hlY2tlZC1pbmRldGVybWluYXRlLW1peGVkbWFya3swJSw2OC4yJXt0cmFuc2Zvcm06c2NhbGVYKDApfTY4LjIle2FuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246Y3ViaWMtYmV6aWVyKDAsIDAsIDAsIDEpfTEwMCV7dHJhbnNmb3JtOnNjYWxlWCgxKX19QGtleWZyYW1lcyBtYXQtY2hlY2tib3gtY2hlY2tlZC11bmNoZWNrZWQtY2hlY2ttYXJrLXBhdGh7ZnJvbXthbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOmN1YmljLWJlemllcigwLjQsIDAsIDEsIDEpO3N0cm9rZS1kYXNob2Zmc2V0OjB9dG97c3Ryb2tlLWRhc2hvZmZzZXQ6LTIyLjkxMDI1OX19QGtleWZyYW1lcyBtYXQtY2hlY2tib3gtY2hlY2tlZC1pbmRldGVybWluYXRlLWNoZWNrbWFya3tmcm9te2FuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246Y3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMC4xKTtvcGFjaXR5OjE7dHJhbnNmb3JtOnJvdGF0ZSgwZGVnKX10b3tvcGFjaXR5OjA7dHJhbnNmb3JtOnJvdGF0ZSg0NWRlZyl9fUBrZXlmcmFtZXMgbWF0LWNoZWNrYm94LWluZGV0ZXJtaW5hdGUtY2hlY2tlZC1jaGVja21hcmt7ZnJvbXthbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOmN1YmljLWJlemllcigwLjE0LCAwLCAwLCAxKTtvcGFjaXR5OjA7dHJhbnNmb3JtOnJvdGF0ZSg0NWRlZyl9dG97b3BhY2l0eToxO3RyYW5zZm9ybTpyb3RhdGUoMzYwZGVnKX19QGtleWZyYW1lcyBtYXQtY2hlY2tib3gtY2hlY2tlZC1pbmRldGVybWluYXRlLW1peGVkbWFya3tmcm9te2FuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246Y3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMC4xKTtvcGFjaXR5OjA7dHJhbnNmb3JtOnJvdGF0ZSgtNDVkZWcpfXRve29wYWNpdHk6MTt0cmFuc2Zvcm06cm90YXRlKDBkZWcpfX1Aa2V5ZnJhbWVzIG1hdC1jaGVja2JveC1pbmRldGVybWluYXRlLWNoZWNrZWQtbWl4ZWRtYXJre2Zyb217YW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjpjdWJpYy1iZXppZXIoMC4xNCwgMCwgMCwgMSk7b3BhY2l0eToxO3RyYW5zZm9ybTpyb3RhdGUoMGRlZyl9dG97b3BhY2l0eTowO3RyYW5zZm9ybTpyb3RhdGUoMzE1ZGVnKX19QGtleWZyYW1lcyBtYXQtY2hlY2tib3gtaW5kZXRlcm1pbmF0ZS11bmNoZWNrZWQtbWl4ZWRtYXJrezAle2FuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246bGluZWFyO29wYWNpdHk6MTt0cmFuc2Zvcm06c2NhbGVYKDEpfTMyLjglLDEwMCV7b3BhY2l0eTowO3RyYW5zZm9ybTpzY2FsZVgoMCl9fS5tYXQtY2hlY2tib3gtYmFja2dyb3VuZCwubWF0LWNoZWNrYm94LWZyYW1le3RvcDowO2xlZnQ6MDtyaWdodDowO2JvdHRvbTowO3Bvc2l0aW9uOmFic29sdXRlO2JvcmRlci1yYWRpdXM6MnB4O2JveC1zaXppbmc6Ym9yZGVyLWJveDtwb2ludGVyLWV2ZW50czpub25lfS5tYXQtY2hlY2tib3h7ZGlzcGxheTppbmxpbmUtYmxvY2s7dHJhbnNpdGlvbjpiYWNrZ3JvdW5kIDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpLGJveC1zaGFkb3cgMjgwbXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKTtjdXJzb3I6cG9pbnRlcjstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnR9Ll9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlLm1hdC1jaGVja2JveHt0cmFuc2l0aW9uOm5vbmU7YW5pbWF0aW9uOm5vbmV9Lm1hdC1jaGVja2JveCAubWF0LXJpcHBsZS1lbGVtZW50Om5vdCgubWF0LWNoZWNrYm94LXBlcnNpc3RlbnQtcmlwcGxlKXtvcGFjaXR5Oi4xNn0ubWF0LWNoZWNrYm94IC5tYXQtY2hlY2tib3gtcmlwcGxle3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6Y2FsYyg1MCUgLSAyMHB4KTt0b3A6Y2FsYyg1MCUgLSAyMHB4KTtoZWlnaHQ6NDBweDt3aWR0aDo0MHB4O3otaW5kZXg6MTtwb2ludGVyLWV2ZW50czpub25lfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1jaGVja2JveC5jZGsta2V5Ym9hcmQtZm9jdXNlZCAubWF0LWNoZWNrYm94LXJpcHBsZXtvdXRsaW5lOnNvbGlkIDNweH0ubWF0LWNoZWNrYm94LWxheW91dHstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7LW1vei11c2VyLXNlbGVjdDpub25lOy1tcy11c2VyLXNlbGVjdDpub25lO3VzZXItc2VsZWN0Om5vbmU7Y3Vyc29yOmluaGVyaXQ7YWxpZ24taXRlbXM6YmFzZWxpbmU7dmVydGljYWwtYWxpZ246bWlkZGxlO2Rpc3BsYXk6aW5saW5lLWZsZXg7d2hpdGUtc3BhY2U6bm93cmFwfS5tYXQtY2hlY2tib3gtbGFiZWx7LXdlYmtpdC11c2VyLXNlbGVjdDphdXRvOy1tb3otdXNlci1zZWxlY3Q6YXV0bzstbXMtdXNlci1zZWxlY3Q6YXV0bzt1c2VyLXNlbGVjdDphdXRvfS5tYXQtY2hlY2tib3gtaW5uZXItY29udGFpbmVye2Rpc3BsYXk6aW5saW5lLWJsb2NrO2hlaWdodDoxNnB4O2xpbmUtaGVpZ2h0OjA7bWFyZ2luOmF1dG87bWFyZ2luLXJpZ2h0OjhweDtvcmRlcjowO3Bvc2l0aW9uOnJlbGF0aXZlO3ZlcnRpY2FsLWFsaWduOm1pZGRsZTt3aGl0ZS1zcGFjZTpub3dyYXA7d2lkdGg6MTZweDtmbGV4LXNocmluazowfVtkaXI9cnRsXSAubWF0LWNoZWNrYm94LWlubmVyLWNvbnRhaW5lcnttYXJnaW4tbGVmdDo4cHg7bWFyZ2luLXJpZ2h0OmF1dG99Lm1hdC1jaGVja2JveC1pbm5lci1jb250YWluZXItbm8tc2lkZS1tYXJnaW57bWFyZ2luLWxlZnQ6MDttYXJnaW4tcmlnaHQ6MH0ubWF0LWNoZWNrYm94LWZyYW1le2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7dHJhbnNpdGlvbjpib3JkZXItY29sb3IgOTBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAwLjEpO2JvcmRlci13aWR0aDoycHg7Ym9yZGVyLXN0eWxlOnNvbGlkfS5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZSAubWF0LWNoZWNrYm94LWZyYW1le3RyYW5zaXRpb246bm9uZX0ubWF0LWNoZWNrYm94LWJhY2tncm91bmR7YWxpZ24taXRlbXM6Y2VudGVyO2Rpc3BsYXk6aW5saW5lLWZsZXg7anVzdGlmeS1jb250ZW50OmNlbnRlcjt0cmFuc2l0aW9uOmJhY2tncm91bmQtY29sb3IgOTBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAwLjEpLG9wYWNpdHkgOTBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAwLjEpOy13ZWJraXQtcHJpbnQtY29sb3ItYWRqdXN0OmV4YWN0O2NvbG9yLWFkanVzdDpleGFjdH0uX21hdC1hbmltYXRpb24tbm9vcGFibGUgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5ke3RyYW5zaXRpb246bm9uZX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtY2hlY2tib3ggLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5ke2JhY2tncm91bmQ6bm9uZX0ubWF0LWNoZWNrYm94LXBlcnNpc3RlbnQtcmlwcGxle2Rpc3BsYXk6YmxvY2s7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTt0cmFuc2Zvcm06bm9uZX0ubWF0LWNoZWNrYm94LWlubmVyLWNvbnRhaW5lcjpob3ZlciAubWF0LWNoZWNrYm94LXBlcnNpc3RlbnQtcmlwcGxle29wYWNpdHk6LjA0fS5tYXQtY2hlY2tib3guY2RrLWtleWJvYXJkLWZvY3VzZWQgLm1hdC1jaGVja2JveC1wZXJzaXN0ZW50LXJpcHBsZXtvcGFjaXR5Oi4xMn0ubWF0LWNoZWNrYm94LXBlcnNpc3RlbnQtcmlwcGxlLC5tYXQtY2hlY2tib3gubWF0LWNoZWNrYm94LWRpc2FibGVkIC5tYXQtY2hlY2tib3gtaW5uZXItY29udGFpbmVyOmhvdmVyIC5tYXQtY2hlY2tib3gtcGVyc2lzdGVudC1yaXBwbGV7b3BhY2l0eTowfUBtZWRpYShob3Zlcjogbm9uZSl7Lm1hdC1jaGVja2JveC1pbm5lci1jb250YWluZXI6aG92ZXIgLm1hdC1jaGVja2JveC1wZXJzaXN0ZW50LXJpcHBsZXtkaXNwbGF5Om5vbmV9fS5tYXQtY2hlY2tib3gtY2hlY2ttYXJre3RvcDowO2xlZnQ6MDtyaWdodDowO2JvdHRvbTowO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjEwMCV9Lm1hdC1jaGVja2JveC1jaGVja21hcmstcGF0aHtzdHJva2UtZGFzaG9mZnNldDoyMi45MTAyNTk7c3Ryb2tlLWRhc2hhcnJheToyMi45MTAyNTk7c3Ryb2tlLXdpZHRoOjIuMTMzMzMzMzMzM3B4fS5jZGstaGlnaC1jb250cmFzdC1ibGFjay1vbi13aGl0ZSAubWF0LWNoZWNrYm94LWNoZWNrbWFyay1wYXRoe3N0cm9rZTojMDAwICFpbXBvcnRhbnR9Lm1hdC1jaGVja2JveC1taXhlZG1hcmt7d2lkdGg6Y2FsYygxMDAlIC0gNnB4KTtoZWlnaHQ6MnB4O29wYWNpdHk6MDt0cmFuc2Zvcm06c2NhbGVYKDApIHJvdGF0ZSgwZGVnKTtib3JkZXItcmFkaXVzOjJweH0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtY2hlY2tib3gtbWl4ZWRtYXJre2hlaWdodDowO2JvcmRlci10b3A6c29saWQgMnB4O21hcmdpbi10b3A6MnB4fS5tYXQtY2hlY2tib3gtbGFiZWwtYmVmb3JlIC5tYXQtY2hlY2tib3gtaW5uZXItY29udGFpbmVye29yZGVyOjE7bWFyZ2luLWxlZnQ6OHB4O21hcmdpbi1yaWdodDphdXRvfVtkaXI9cnRsXSAubWF0LWNoZWNrYm94LWxhYmVsLWJlZm9yZSAubWF0LWNoZWNrYm94LWlubmVyLWNvbnRhaW5lcnttYXJnaW4tbGVmdDphdXRvO21hcmdpbi1yaWdodDo4cHh9Lm1hdC1jaGVja2JveC1jaGVja2VkIC5tYXQtY2hlY2tib3gtY2hlY2ttYXJre29wYWNpdHk6MX0ubWF0LWNoZWNrYm94LWNoZWNrZWQgLm1hdC1jaGVja2JveC1jaGVja21hcmstcGF0aHtzdHJva2UtZGFzaG9mZnNldDowfS5tYXQtY2hlY2tib3gtY2hlY2tlZCAubWF0LWNoZWNrYm94LW1peGVkbWFya3t0cmFuc2Zvcm06c2NhbGVYKDEpIHJvdGF0ZSgtNDVkZWcpfS5tYXQtY2hlY2tib3gtaW5kZXRlcm1pbmF0ZSAubWF0LWNoZWNrYm94LWNoZWNrbWFya3tvcGFjaXR5OjA7dHJhbnNmb3JtOnJvdGF0ZSg0NWRlZyl9Lm1hdC1jaGVja2JveC1pbmRldGVybWluYXRlIC5tYXQtY2hlY2tib3gtY2hlY2ttYXJrLXBhdGh7c3Ryb2tlLWRhc2hvZmZzZXQ6MH0ubWF0LWNoZWNrYm94LWluZGV0ZXJtaW5hdGUgLm1hdC1jaGVja2JveC1taXhlZG1hcmt7b3BhY2l0eToxO3RyYW5zZm9ybTpzY2FsZVgoMSkgcm90YXRlKDBkZWcpfS5tYXQtY2hlY2tib3gtdW5jaGVja2VkIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZHtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50fS5tYXQtY2hlY2tib3gtZGlzYWJsZWR7Y3Vyc29yOmRlZmF1bHR9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWNoZWNrYm94LWRpc2FibGVke29wYWNpdHk6LjV9Lm1hdC1jaGVja2JveC1hbmltLXVuY2hlY2tlZC1jaGVja2VkIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZHthbmltYXRpb246MTgwbXMgbGluZWFyIDBtcyBtYXQtY2hlY2tib3gtZmFkZS1pbi1iYWNrZ3JvdW5kfS5tYXQtY2hlY2tib3gtYW5pbS11bmNoZWNrZWQtY2hlY2tlZCAubWF0LWNoZWNrYm94LWNoZWNrbWFyay1wYXRoe2FuaW1hdGlvbjoxODBtcyBsaW5lYXIgMG1zIG1hdC1jaGVja2JveC11bmNoZWNrZWQtY2hlY2tlZC1jaGVja21hcmstcGF0aH0ubWF0LWNoZWNrYm94LWFuaW0tdW5jaGVja2VkLWluZGV0ZXJtaW5hdGUgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5ke2FuaW1hdGlvbjoxODBtcyBsaW5lYXIgMG1zIG1hdC1jaGVja2JveC1mYWRlLWluLWJhY2tncm91bmR9Lm1hdC1jaGVja2JveC1hbmltLXVuY2hlY2tlZC1pbmRldGVybWluYXRlIC5tYXQtY2hlY2tib3gtbWl4ZWRtYXJre2FuaW1hdGlvbjo5MG1zIGxpbmVhciAwbXMgbWF0LWNoZWNrYm94LXVuY2hlY2tlZC1pbmRldGVybWluYXRlLW1peGVkbWFya30ubWF0LWNoZWNrYm94LWFuaW0tY2hlY2tlZC11bmNoZWNrZWQgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5ke2FuaW1hdGlvbjoxODBtcyBsaW5lYXIgMG1zIG1hdC1jaGVja2JveC1mYWRlLW91dC1iYWNrZ3JvdW5kfS5tYXQtY2hlY2tib3gtYW5pbS1jaGVja2VkLXVuY2hlY2tlZCAubWF0LWNoZWNrYm94LWNoZWNrbWFyay1wYXRoe2FuaW1hdGlvbjo5MG1zIGxpbmVhciAwbXMgbWF0LWNoZWNrYm94LWNoZWNrZWQtdW5jaGVja2VkLWNoZWNrbWFyay1wYXRofS5tYXQtY2hlY2tib3gtYW5pbS1jaGVja2VkLWluZGV0ZXJtaW5hdGUgLm1hdC1jaGVja2JveC1jaGVja21hcmt7YW5pbWF0aW9uOjkwbXMgbGluZWFyIDBtcyBtYXQtY2hlY2tib3gtY2hlY2tlZC1pbmRldGVybWluYXRlLWNoZWNrbWFya30ubWF0LWNoZWNrYm94LWFuaW0tY2hlY2tlZC1pbmRldGVybWluYXRlIC5tYXQtY2hlY2tib3gtbWl4ZWRtYXJre2FuaW1hdGlvbjo5MG1zIGxpbmVhciAwbXMgbWF0LWNoZWNrYm94LWNoZWNrZWQtaW5kZXRlcm1pbmF0ZS1taXhlZG1hcmt9Lm1hdC1jaGVja2JveC1hbmltLWluZGV0ZXJtaW5hdGUtY2hlY2tlZCAubWF0LWNoZWNrYm94LWNoZWNrbWFya3thbmltYXRpb246NTAwbXMgbGluZWFyIDBtcyBtYXQtY2hlY2tib3gtaW5kZXRlcm1pbmF0ZS1jaGVja2VkLWNoZWNrbWFya30ubWF0LWNoZWNrYm94LWFuaW0taW5kZXRlcm1pbmF0ZS1jaGVja2VkIC5tYXQtY2hlY2tib3gtbWl4ZWRtYXJre2FuaW1hdGlvbjo1MDBtcyBsaW5lYXIgMG1zIG1hdC1jaGVja2JveC1pbmRldGVybWluYXRlLWNoZWNrZWQtbWl4ZWRtYXJrfS5tYXQtY2hlY2tib3gtYW5pbS1pbmRldGVybWluYXRlLXVuY2hlY2tlZCAubWF0LWNoZWNrYm94LWJhY2tncm91bmR7YW5pbWF0aW9uOjE4MG1zIGxpbmVhciAwbXMgbWF0LWNoZWNrYm94LWZhZGUtb3V0LWJhY2tncm91bmR9Lm1hdC1jaGVja2JveC1hbmltLWluZGV0ZXJtaW5hdGUtdW5jaGVja2VkIC5tYXQtY2hlY2tib3gtbWl4ZWRtYXJre2FuaW1hdGlvbjozMDBtcyBsaW5lYXIgMG1zIG1hdC1jaGVja2JveC1pbmRldGVybWluYXRlLXVuY2hlY2tlZC1taXhlZG1hcmt9Lm1hdC1jaGVja2JveC1pbnB1dHtib3R0b206MDtsZWZ0OjUwJX1cbiJdfV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6S2h9LHt0eXBlOk9ifSx7dHlwZTpmRn0se3R5cGU6bUN9LHt0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTokYSxhcmdzOlsidGFiaW5kZXgiXX1dfSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W2NrXX1dfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W2RaXX1dfV19KSx7YXJpYUxhYmVsOlt7dHlwZTpSXyxhcmdzOlsiYXJpYS1sYWJlbCJdfV0sYXJpYUxhYmVsbGVkYnk6W3t0eXBlOlJfLGFyZ3M6WyJhcmlhLWxhYmVsbGVkYnkiXX1dLGlkOlt7dHlwZTpSX31dLGxhYmVsUG9zaXRpb246W3t0eXBlOlJffV0sbmFtZTpbe3R5cGU6Ul99XSxjaGFuZ2U6W3t0eXBlOkVffV0saW5kZXRlcm1pbmF0ZUNoYW5nZTpbe3R5cGU6RV99XSxyZXF1aXJlZDpbe3R5cGU6Ul99XSxjaGVja2VkOlt7dHlwZTpSX31dLGRpc2FibGVkOlt7dHlwZTpSX31dLGluZGV0ZXJtaW5hdGU6W3t0eXBlOlJffV0sYXJpYURlc2NyaWJlZGJ5Olt7dHlwZTpSXyxhcmdzOlsiYXJpYS1kZXNjcmliZWRieSJdfV0sdmFsdWU6W3t0eXBlOlJffV0sX2lucHV0RWxlbWVudDpbe3R5cGU6YXIsYXJnczpbImlucHV0Il19XSxyaXBwbGU6W3t0eXBlOmFyLGFyZ3M6W21MXX1dfSk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjb25zdCB5Wj17cHJvdmlkZTpFVSx1c2VFeGlzdGluZzokZSgoKCk9Pl9aKSksbXVsdGk6ITB9O2NsYXNzIF9aIGV4dGVuZHMgVkd7fV9aLsm1ZmFjPShmdW5jdGlvbigpe2xldCB0O3JldHVybiBmdW5jdGlvbiBlKG4pe3JldHVybih0fHwodD1VYShfWikpKShufHxfWil9fSkoKSxfWi7JtWRpcj1obyh7dHlwZTpfWixzZWxlY3RvcnM6W1sibWF0LWNoZWNrYm94IiwicmVxdWlyZWQiLCIiLCJmb3JtQ29udHJvbE5hbWUiLCIiXSxbIm1hdC1jaGVja2JveCIsInJlcXVpcmVkIiwiIiwiZm9ybUNvbnRyb2wiLCIiXSxbIm1hdC1jaGVja2JveCIsInJlcXVpcmVkIiwiIiwibmdNb2RlbCIsIiJdXSxmZWF0dXJlczpbamgoW3laXSksUXBdfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihfWixbe3R5cGU6a18sYXJnczpbe3NlbGVjdG9yOiJtYXQtY2hlY2tib3hbcmVxdWlyZWRdW2Zvcm1Db250cm9sTmFtZV0sXG4gICAgICAgICAgICAgbWF0LWNoZWNrYm94W3JlcXVpcmVkXVtmb3JtQ29udHJvbF0sIG1hdC1jaGVja2JveFtyZXF1aXJlZF1bbmdNb2RlbF0iLHByb3ZpZGVyczpbeVpdfV19XSxudWxsLG51bGwpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3MgQ1p7fUNaLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxDWil9LENaLsm1bW9kPWZvKHt0eXBlOkNafSksQ1ouybVpbmo9RG4oe30pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoQ1osW3t0eXBlOkxfLGFyZ3M6W3tleHBvcnRzOltfWl0sZGVjbGFyYXRpb25zOltfWl19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZ1byhDWix7ZGVjbGFyYXRpb25zOltfWl0sZXhwb3J0czpbX1pdfSk7Y2xhc3MgTVp7fU1aLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxNWil9LE1aLsm1bW9kPWZvKHt0eXBlOk1afSksTVouybVpbmo9RG4oe2ltcG9ydHM6W1tmTCxORix3SCxDWl0sTkYsQ1pdfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihNWixbe3R5cGU6TF8sYXJnczpbe2ltcG9ydHM6W2ZMLE5GLHdILENaXSxleHBvcnRzOltiWixORixDWl0sZGVjbGFyYXRpb25zOltiWl19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZ1byhNWix7ZGVjbGFyYXRpb25zOmZ1bmN0aW9uKCl7cmV0dXJuW2JaXX0saW1wb3J0czpmdW5jdGlvbigpe3JldHVybltmTCxORix3SCxDWl19LGV4cG9ydHM6ZnVuY3Rpb24oKXtyZXR1cm5bYlosTkYsQ1pdfX0pO2NvbnN0IHZaPWJIKHtwYXNzaXZlOiEwfSk7Y2xhc3MgeFp7Y29uc3RydWN0b3IodCxlKXt0aGlzLl9wbGF0Zm9ybT10LHRoaXMuX25nWm9uZT1lLHRoaXMuX21vbml0b3JlZEVsZW1lbnRzPW5ldyBNYXB9bW9uaXRvcih0KXtpZighdGhpcy5fcGxhdGZvcm0uaXNCcm93c2VyKXJldHVybiBkdDtjb25zdCBlPXJIKHQpLG49dGhpcy5fbW9uaXRvcmVkRWxlbWVudHMuZ2V0KGUpO2lmKG4pcmV0dXJuIG4uc3ViamVjdDtjb25zdCBvPW5ldyBCLGk9ImNkay10ZXh0LWZpZWxkLWF1dG9maWxsZWQiLGE9dD0+eyJjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydCIhPT10LmFuaW1hdGlvbk5hbWV8fGUuY2xhc3NMaXN0LmNvbnRhaW5zKGkpPyJjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmQiPT09dC5hbmltYXRpb25OYW1lJiZlLmNsYXNzTGlzdC5jb250YWlucyhpKSYmKGUuY2xhc3NMaXN0LnJlbW92ZShpKSx0aGlzLl9uZ1pvbmUucnVuKCgoKT0+by5uZXh0KHt0YXJnZXQ6dC50YXJnZXQsaXNBdXRvZmlsbGVkOiExfSkpKSk6KGUuY2xhc3NMaXN0LmFkZChpKSx0aGlzLl9uZ1pvbmUucnVuKCgoKT0+by5uZXh0KHt0YXJnZXQ6dC50YXJnZXQsaXNBdXRvZmlsbGVkOiEwfSkpKSl9O3JldHVybiB0aGlzLl9uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCgpPT57ZS5hZGRFdmVudExpc3RlbmVyKCJhbmltYXRpb25zdGFydCIsYSx2WiksZS5jbGFzc0xpc3QuYWRkKCJjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWQiKX0pKSx0aGlzLl9tb25pdG9yZWRFbGVtZW50cy5zZXQoZSx7c3ViamVjdDpvLHVubGlzdGVuOigpPT57ZS5yZW1vdmVFdmVudExpc3RlbmVyKCJhbmltYXRpb25zdGFydCIsYSx2Wil9fSksb31zdG9wTW9uaXRvcmluZyh0KXtjb25zdCBlPXJIKHQpLG49dGhpcy5fbW9uaXRvcmVkRWxlbWVudHMuZ2V0KGUpO24mJihuLnVubGlzdGVuKCksbi5zdWJqZWN0LmNvbXBsZXRlKCksZS5jbGFzc0xpc3QucmVtb3ZlKCJjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWQiKSxlLmNsYXNzTGlzdC5yZW1vdmUoImNkay10ZXh0LWZpZWxkLWF1dG9maWxsZWQiKSx0aGlzLl9tb25pdG9yZWRFbGVtZW50cy5kZWxldGUoZSkpfW5nT25EZXN0cm95KCl7dGhpcy5fbW9uaXRvcmVkRWxlbWVudHMuZm9yRWFjaCgoKHQsZSk9PnRoaXMuc3RvcE1vbml0b3JpbmcoZSkpKX19eFouybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHhaKShUcihjSCksVHIobUMpKX0seFouybVwcm92PVNuKHtmYWN0b3J5OmZ1bmN0aW9uIHQoKXtyZXR1cm4gbmV3IHhaKFRyKGNIKSxUcihtQykpfSx0b2tlbjp4Wixwcm92aWRlZEluOiJyb290In0pLHhaLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6Y0h9LHt0eXBlOm1DfV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYih4Wixbe3R5cGU6VW0sYXJnczpbe3Byb3ZpZGVkSW46InJvb3QifV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6Y0h9LHt0eXBlOm1DfV19KSxudWxsKTtjbGFzcyBPWntjb25zdHJ1Y3Rvcih0LGUpe3RoaXMuX2VsZW1lbnRSZWY9dCx0aGlzLl9hdXRvZmlsbE1vbml0b3I9ZSx0aGlzLmNka0F1dG9maWxsPW5ldyBTeX1uZ09uSW5pdCgpe3RoaXMuX2F1dG9maWxsTW9uaXRvci5tb25pdG9yKHRoaXMuX2VsZW1lbnRSZWYpLnN1YnNjcmliZSgodD0+dGhpcy5jZGtBdXRvZmlsbC5lbWl0KHQpKSl9bmdPbkRlc3Ryb3koKXt0aGlzLl9hdXRvZmlsbE1vbml0b3Iuc3RvcE1vbml0b3JpbmcodGhpcy5fZWxlbWVudFJlZil9fU9aLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxPWikoZ2YoS2gpLGdmKHhaKSl9LE9aLsm1ZGlyPWhvKHt0eXBlOk9aLHNlbGVjdG9yczpbWyIiLCJjZGtBdXRvZmlsbCIsIiJdXSxvdXRwdXRzOntjZGtBdXRvZmlsbDoiY2RrQXV0b2ZpbGwifX0pLE9aLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6S2h9LHt0eXBlOnhafV0sT1oucHJvcERlY29yYXRvcnM9e2Nka0F1dG9maWxsOlt7dHlwZTpFX31dfSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKE9aLFt7dHlwZTprXyxhcmdzOlt7c2VsZWN0b3I6IltjZGtBdXRvZmlsbF0ifV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6S2h9LHt0eXBlOnhafV19KSx7Y2RrQXV0b2ZpbGw6W3t0eXBlOkVffV19KTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNsYXNzIFBae2NvbnN0cnVjdG9yKHQsZSxuLG8pe3RoaXMuX2VsZW1lbnRSZWY9dCx0aGlzLl9wbGF0Zm9ybT1lLHRoaXMuX25nWm9uZT1uLHRoaXMuX2Rlc3Ryb3llZD1uZXcgQix0aGlzLl9lbmFibGVkPSEwLHRoaXMuX3ByZXZpb3VzTWluUm93cz0tMSx0aGlzLl9pc1ZpZXdJbml0ZWQ9ITEsdGhpcy5faGFuZGxlRm9jdXNFdmVudD10PT57dGhpcy5faGFzRm9jdXM9ImZvY3VzIj09PXQudHlwZX0sdGhpcy5fZG9jdW1lbnQ9byx0aGlzLl90ZXh0YXJlYUVsZW1lbnQ9dGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50fWdldCBtaW5Sb3dzKCl7cmV0dXJuIHRoaXMuX21pblJvd3N9c2V0IG1pblJvd3ModCl7dGhpcy5fbWluUm93cz1uSCh0KSx0aGlzLl9zZXRNaW5IZWlnaHQoKX1nZXQgbWF4Um93cygpe3JldHVybiB0aGlzLl9tYXhSb3dzfXNldCBtYXhSb3dzKHQpe3RoaXMuX21heFJvd3M9bkgodCksdGhpcy5fc2V0TWF4SGVpZ2h0KCl9Z2V0IGVuYWJsZWQoKXtyZXR1cm4gdGhpcy5fZW5hYmxlZH1zZXQgZW5hYmxlZCh0KXt0PWVIKHQpLHRoaXMuX2VuYWJsZWQhPT10JiYoKHRoaXMuX2VuYWJsZWQ9dCk/dGhpcy5yZXNpemVUb0ZpdENvbnRlbnQoITApOnRoaXMucmVzZXQoKSl9Z2V0IHBsYWNlaG9sZGVyKCl7cmV0dXJuIHRoaXMuX3RleHRhcmVhRWxlbWVudC5wbGFjZWhvbGRlcn1zZXQgcGxhY2Vob2xkZXIodCl7dGhpcy5fY2FjaGVkUGxhY2Vob2xkZXJIZWlnaHQ9dm9pZCAwLHRoaXMuX3RleHRhcmVhRWxlbWVudC5wbGFjZWhvbGRlcj10LHRoaXMuX2NhY2hlVGV4dGFyZWFQbGFjZWhvbGRlckhlaWdodCgpfV9zZXRNaW5IZWlnaHQoKXtjb25zdCB0PXRoaXMubWluUm93cyYmdGhpcy5fY2FjaGVkTGluZUhlaWdodD90aGlzLm1pblJvd3MqdGhpcy5fY2FjaGVkTGluZUhlaWdodCsicHgiOm51bGw7dCYmKHRoaXMuX3RleHRhcmVhRWxlbWVudC5zdHlsZS5taW5IZWlnaHQ9dCl9X3NldE1heEhlaWdodCgpe2NvbnN0IHQ9dGhpcy5tYXhSb3dzJiZ0aGlzLl9jYWNoZWRMaW5lSGVpZ2h0P3RoaXMubWF4Um93cyp0aGlzLl9jYWNoZWRMaW5lSGVpZ2h0KyJweCI6bnVsbDt0JiYodGhpcy5fdGV4dGFyZWFFbGVtZW50LnN0eWxlLm1heEhlaWdodD10KX1uZ0FmdGVyVmlld0luaXQoKXt0aGlzLl9wbGF0Zm9ybS5pc0Jyb3dzZXImJih0aGlzLl9pbml0aWFsSGVpZ2h0PXRoaXMuX3RleHRhcmVhRWxlbWVudC5zdHlsZS5oZWlnaHQsdGhpcy5yZXNpemVUb0ZpdENvbnRlbnQoKSx0aGlzLl9uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCgpPT57bGUodGhpcy5fZ2V0V2luZG93KCksInJlc2l6ZSIpLnBpcGUoZ2UoMTYpLGplKHRoaXMuX2Rlc3Ryb3llZCkpLnN1YnNjcmliZSgoKCk9PnRoaXMucmVzaXplVG9GaXRDb250ZW50KCEwKSkpLHRoaXMuX3RleHRhcmVhRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJmb2N1cyIsdGhpcy5faGFuZGxlRm9jdXNFdmVudCksdGhpcy5fdGV4dGFyZWFFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImJsdXIiLHRoaXMuX2hhbmRsZUZvY3VzRXZlbnQpfSkpLHRoaXMuX2lzVmlld0luaXRlZD0hMCx0aGlzLnJlc2l6ZVRvRml0Q29udGVudCghMCkpfW5nT25EZXN0cm95KCl7dGhpcy5fdGV4dGFyZWFFbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoImZvY3VzIix0aGlzLl9oYW5kbGVGb2N1c0V2ZW50KSx0aGlzLl90ZXh0YXJlYUVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigiYmx1ciIsdGhpcy5faGFuZGxlRm9jdXNFdmVudCksdGhpcy5fZGVzdHJveWVkLm5leHQoKSx0aGlzLl9kZXN0cm95ZWQuY29tcGxldGUoKX1fY2FjaGVUZXh0YXJlYUxpbmVIZWlnaHQoKXtpZih0aGlzLl9jYWNoZWRMaW5lSGVpZ2h0KXJldHVybjtsZXQgdD10aGlzLl90ZXh0YXJlYUVsZW1lbnQuY2xvbmVOb2RlKCExKTt0LnJvd3M9MSx0LnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSIsdC5zdHlsZS52aXNpYmlsaXR5PSJoaWRkZW4iLHQuc3R5bGUuYm9yZGVyPSJub25lIix0LnN0eWxlLnBhZGRpbmc9IjAiLHQuc3R5bGUuaGVpZ2h0PSIiLHQuc3R5bGUubWluSGVpZ2h0PSIiLHQuc3R5bGUubWF4SGVpZ2h0PSIiLHQuc3R5bGUub3ZlcmZsb3c9ImhpZGRlbiIsdGhpcy5fdGV4dGFyZWFFbGVtZW50LnBhcmVudE5vZGUuYXBwZW5kQ2hpbGQodCksdGhpcy5fY2FjaGVkTGluZUhlaWdodD10LmNsaWVudEhlaWdodCx0aGlzLl90ZXh0YXJlYUVsZW1lbnQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0KSx0aGlzLl9zZXRNaW5IZWlnaHQoKSx0aGlzLl9zZXRNYXhIZWlnaHQoKX1fbWVhc3VyZVNjcm9sbEhlaWdodCgpe2NvbnN0IHQ9dGhpcy5fdGV4dGFyZWFFbGVtZW50LGU9dC5zdHlsZS5tYXJnaW5Cb3R0b218fCIiLG49dGhpcy5fcGxhdGZvcm0uRklSRUZPWCxvPW4mJnRoaXMuX2hhc0ZvY3VzLGk9bj8iY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZy1maXJlZm94IjoiY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZyI7byYmKHQuc3R5bGUubWFyZ2luQm90dG9tPWAke3QuY2xpZW50SGVpZ2h0fXB4YCksdC5jbGFzc0xpc3QuYWRkKGkpO2NvbnN0IGE9dC5zY3JvbGxIZWlnaHQtNDtyZXR1cm4gdC5jbGFzc0xpc3QucmVtb3ZlKGkpLG8mJih0LnN0eWxlLm1hcmdpbkJvdHRvbT1lKSxhfV9jYWNoZVRleHRhcmVhUGxhY2Vob2xkZXJIZWlnaHQoKXtpZighdGhpcy5faXNWaWV3SW5pdGVkfHxudWxsIT10aGlzLl9jYWNoZWRQbGFjZWhvbGRlckhlaWdodClyZXR1cm47aWYoIXRoaXMucGxhY2Vob2xkZXIpcmV0dXJuIHZvaWQodGhpcy5fY2FjaGVkUGxhY2Vob2xkZXJIZWlnaHQ9MCk7Y29uc3QgdD10aGlzLl90ZXh0YXJlYUVsZW1lbnQudmFsdWU7dGhpcy5fdGV4dGFyZWFFbGVtZW50LnZhbHVlPXRoaXMuX3RleHRhcmVhRWxlbWVudC5wbGFjZWhvbGRlcix0aGlzLl9jYWNoZWRQbGFjZWhvbGRlckhlaWdodD10aGlzLl9tZWFzdXJlU2Nyb2xsSGVpZ2h0KCksdGhpcy5fdGV4dGFyZWFFbGVtZW50LnZhbHVlPXR9bmdEb0NoZWNrKCl7dGhpcy5fcGxhdGZvcm0uaXNCcm93c2VyJiZ0aGlzLnJlc2l6ZVRvRml0Q29udGVudCgpfXJlc2l6ZVRvRml0Q29udGVudCh0PSExKXtpZighdGhpcy5fZW5hYmxlZClyZXR1cm47aWYodGhpcy5fY2FjaGVUZXh0YXJlYUxpbmVIZWlnaHQoKSx0aGlzLl9jYWNoZVRleHRhcmVhUGxhY2Vob2xkZXJIZWlnaHQoKSwhdGhpcy5fY2FjaGVkTGluZUhlaWdodClyZXR1cm47Y29uc3QgZT10aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsbj1lLnZhbHVlO2lmKCF0JiZ0aGlzLl9taW5Sb3dzPT09dGhpcy5fcHJldmlvdXNNaW5Sb3dzJiZuPT09dGhpcy5fcHJldmlvdXNWYWx1ZSlyZXR1cm47Y29uc3Qgbz10aGlzLl9tZWFzdXJlU2Nyb2xsSGVpZ2h0KCksaT1NYXRoLm1heChvLHRoaXMuX2NhY2hlZFBsYWNlaG9sZGVySGVpZ2h0fHwwKTtlLnN0eWxlLmhlaWdodD1gJHtpfXB4YCx0aGlzLl9uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCgpPT57InVuZGVmaW5lZCIhPXR5cGVvZiByZXF1ZXN0QW5pbWF0aW9uRnJhbWU/cmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgoKT0+dGhpcy5fc2Nyb2xsVG9DYXJldFBvc2l0aW9uKGUpKSk6c2V0VGltZW91dCgoKCk9PnRoaXMuX3Njcm9sbFRvQ2FyZXRQb3NpdGlvbihlKSkpfSkpLHRoaXMuX3ByZXZpb3VzVmFsdWU9bix0aGlzLl9wcmV2aW91c01pblJvd3M9dGhpcy5fbWluUm93c31yZXNldCgpe3ZvaWQgMCE9PXRoaXMuX2luaXRpYWxIZWlnaHQmJih0aGlzLl90ZXh0YXJlYUVsZW1lbnQuc3R5bGUuaGVpZ2h0PXRoaXMuX2luaXRpYWxIZWlnaHQpfV9ub29wSW5wdXRIYW5kbGVyKCl7fV9nZXREb2N1bWVudCgpe3JldHVybiB0aGlzLl9kb2N1bWVudHx8ZG9jdW1lbnR9X2dldFdpbmRvdygpe3JldHVybiB0aGlzLl9nZXREb2N1bWVudCgpLmRlZmF1bHRWaWV3fHx3aW5kb3d9X3Njcm9sbFRvQ2FyZXRQb3NpdGlvbih0KXtjb25zdHtzZWxlY3Rpb25TdGFydDplLHNlbGVjdGlvbkVuZDpufT10OyF0aGlzLl9kZXN0cm95ZWQuaXNTdG9wcGVkJiZ0aGlzLl9oYXNGb2N1cyYmdC5zZXRTZWxlY3Rpb25SYW5nZShlLG4pfX1QWi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8UFopKGdmKEtoKSxnZihjSCksZ2YobUMpLGdmKHNNLDgpKX0sUFouybVkaXI9aG8oe3R5cGU6UFosc2VsZWN0b3JzOltbInRleHRhcmVhIiwiY2RrVGV4dGFyZWFBdXRvc2l6ZSIsIiJdXSxob3N0QXR0cnM6WyJyb3dzIiwiMSIsMSwiY2RrLXRleHRhcmVhLWF1dG9zaXplIl0saG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJlJmKCJpbnB1dCIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5fbm9vcElucHV0SGFuZGxlcigpfSkpfSxpbnB1dHM6e21pblJvd3M6WyJjZGtBdXRvc2l6ZU1pblJvd3MiLCJtaW5Sb3dzIl0sbWF4Um93czpbImNka0F1dG9zaXplTWF4Um93cyIsIm1heFJvd3MiXSxlbmFibGVkOlsiY2RrVGV4dGFyZWFBdXRvc2l6ZSIsImVuYWJsZWQiXSxwbGFjZWhvbGRlcjoicGxhY2Vob2xkZXIifSxleHBvcnRBczpbImNka1RleHRhcmVhQXV0b3NpemUiXX0pLFBaLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6S2h9LHt0eXBlOmNIfSx7dHlwZTptQ30se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltzTV19XX1dLFBaLnByb3BEZWNvcmF0b3JzPXttaW5Sb3dzOlt7dHlwZTpSXyxhcmdzOlsiY2RrQXV0b3NpemVNaW5Sb3dzIl19XSxtYXhSb3dzOlt7dHlwZTpSXyxhcmdzOlsiY2RrQXV0b3NpemVNYXhSb3dzIl19XSxlbmFibGVkOlt7dHlwZTpSXyxhcmdzOlsiY2RrVGV4dGFyZWFBdXRvc2l6ZSJdfV0scGxhY2Vob2xkZXI6W3t0eXBlOlJffV0sX25vb3BJbnB1dEhhbmRsZXI6W3t0eXBlOlRfLGFyZ3M6WyJpbnB1dCJdfV19LCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoUFosW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3RvcjoidGV4dGFyZWFbY2RrVGV4dGFyZWFBdXRvc2l6ZV0iLGV4cG9ydEFzOiJjZGtUZXh0YXJlYUF1dG9zaXplIixob3N0OntjbGFzczoiY2RrLXRleHRhcmVhLWF1dG9zaXplIixyb3dzOiIxIn19XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpLaH0se3R5cGU6Y0h9LHt0eXBlOm1DfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W3NNXX1dfV19KSx7bWluUm93czpbe3R5cGU6Ul8sYXJnczpbImNka0F1dG9zaXplTWluUm93cyJdfV0sbWF4Um93czpbe3R5cGU6Ul8sYXJnczpbImNka0F1dG9zaXplTWF4Um93cyJdfV0sZW5hYmxlZDpbe3R5cGU6Ul8sYXJnczpbImNka1RleHRhcmVhQXV0b3NpemUiXX1dLHBsYWNlaG9sZGVyOlt7dHlwZTpSX31dLF9ub29wSW5wdXRIYW5kbGVyOlt7dHlwZTpUXyxhcmdzOlsiaW5wdXQiXX1dfSk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjbGFzcyB3Wnt9d1ouybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHdaKX0sd1ouybVtb2Q9Zm8oe3R5cGU6d1p9KSx3Wi7JtWluaj1Ebih7aW1wb3J0czpbW2RIXV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKHdaLFt7dHlwZTpMXyxhcmdzOlt7ZGVjbGFyYXRpb25zOltPWixQWl0saW1wb3J0czpbZEhdLGV4cG9ydHM6W09aLFBaXX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnVvKHdaLHtkZWNsYXJhdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm5bT1osUFpdfSxpbXBvcnRzOmZ1bmN0aW9uKCl7cmV0dXJuW2RIXX0sZXhwb3J0czpmdW5jdGlvbigpe3JldHVybltPWixQWl19fSk7Y2xhc3Mga1ogZXh0ZW5kcyBQWntnZXQgbWF0QXV0b3NpemVNaW5Sb3dzKCl7cmV0dXJuIHRoaXMubWluUm93c31zZXQgbWF0QXV0b3NpemVNaW5Sb3dzKHQpe3RoaXMubWluUm93cz10fWdldCBtYXRBdXRvc2l6ZU1heFJvd3MoKXtyZXR1cm4gdGhpcy5tYXhSb3dzfXNldCBtYXRBdXRvc2l6ZU1heFJvd3ModCl7dGhpcy5tYXhSb3dzPXR9Z2V0IG1hdEF1dG9zaXplKCl7cmV0dXJuIHRoaXMuZW5hYmxlZH1zZXQgbWF0QXV0b3NpemUodCl7dGhpcy5lbmFibGVkPXR9Z2V0IG1hdFRleHRhcmVhQXV0b3NpemUoKXtyZXR1cm4gdGhpcy5lbmFibGVkfXNldCBtYXRUZXh0YXJlYUF1dG9zaXplKHQpe3RoaXMuZW5hYmxlZD10fX1rWi7JtWZhYz0oZnVuY3Rpb24oKXtsZXQgdDtyZXR1cm4gZnVuY3Rpb24gZShuKXtyZXR1cm4odHx8KHQ9VWEoa1opKSkobnx8a1opfX0pKCksa1ouybVkaXI9aG8oe3R5cGU6a1osc2VsZWN0b3JzOltbInRleHRhcmVhIiwibWF0LWF1dG9zaXplIiwiIl0sWyJ0ZXh0YXJlYSIsIm1hdFRleHRhcmVhQXV0b3NpemUiLCIiXV0saG9zdEF0dHJzOlsicm93cyIsIjEiLDEsImNkay10ZXh0YXJlYS1hdXRvc2l6ZSIsIm1hdC1hdXRvc2l6ZSJdLGlucHV0czp7Y2RrQXV0b3NpemVNaW5Sb3dzOiJjZGtBdXRvc2l6ZU1pblJvd3MiLGNka0F1dG9zaXplTWF4Um93czoiY2RrQXV0b3NpemVNYXhSb3dzIixtYXRBdXRvc2l6ZU1pblJvd3M6Im1hdEF1dG9zaXplTWluUm93cyIsbWF0QXV0b3NpemVNYXhSb3dzOiJtYXRBdXRvc2l6ZU1heFJvd3MiLG1hdEF1dG9zaXplOlsibWF0LWF1dG9zaXplIiwibWF0QXV0b3NpemUiXSxtYXRUZXh0YXJlYUF1dG9zaXplOiJtYXRUZXh0YXJlYUF1dG9zaXplIn0sZXhwb3J0QXM6WyJtYXRUZXh0YXJlYUF1dG9zaXplIl0sZmVhdHVyZXM6W1FwXX0pLGtaLnByb3BEZWNvcmF0b3JzPXttYXRBdXRvc2l6ZU1pblJvd3M6W3t0eXBlOlJffV0sbWF0QXV0b3NpemVNYXhSb3dzOlt7dHlwZTpSX31dLG1hdEF1dG9zaXplOlt7dHlwZTpSXyxhcmdzOlsibWF0LWF1dG9zaXplIl19XSxtYXRUZXh0YXJlYUF1dG9zaXplOlt7dHlwZTpSX31dfSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKGtaLFt7dHlwZTprXyxhcmdzOlt7c2VsZWN0b3I6InRleHRhcmVhW21hdC1hdXRvc2l6ZV0sIHRleHRhcmVhW21hdFRleHRhcmVhQXV0b3NpemVdIixleHBvcnRBczoibWF0VGV4dGFyZWFBdXRvc2l6ZSIsaW5wdXRzOlsiY2RrQXV0b3NpemVNaW5Sb3dzIiwiY2RrQXV0b3NpemVNYXhSb3dzIl0saG9zdDp7Y2xhc3M6ImNkay10ZXh0YXJlYS1hdXRvc2l6ZSBtYXQtYXV0b3NpemUiLHJvd3M6IjEifX1dfV0sbnVsbCx7bWF0QXV0b3NpemVNaW5Sb3dzOlt7dHlwZTpSX31dLG1hdEF1dG9zaXplTWF4Um93czpbe3R5cGU6Ul99XSxtYXRBdXRvc2l6ZTpbe3R5cGU6Ul8sYXJnczpbIm1hdC1hdXRvc2l6ZSJdfV0sbWF0VGV4dGFyZWFBdXRvc2l6ZTpbe3R5cGU6Ul99XX0pOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY29uc3QgU1o9bmV3IGVyKCJNQVRfSU5QVVRfVkFMVUVfQUNDRVNTT1IiKSxEWj1bImJ1dHRvbiIsImNoZWNrYm94IiwiZmlsZSIsImhpZGRlbiIsImltYWdlIiwicmFkaW8iLCJyYW5nZSIsInJlc2V0Iiwic3VibWl0Il07Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2xldCBSWj0wO2NvbnN0IEVaPUxGKGNsYXNze2NvbnN0cnVjdG9yKHQsZSxuLG8pe3RoaXMuX2RlZmF1bHRFcnJvclN0YXRlTWF0Y2hlcj10LHRoaXMuX3BhcmVudEZvcm09ZSx0aGlzLl9wYXJlbnRGb3JtR3JvdXA9bix0aGlzLm5nQ29udHJvbD1vfX0pO2NsYXNzIEFaIGV4dGVuZHMgRVp7Y29uc3RydWN0b3IodCxlLG4sbyxpLGEscixzLGwsYyl7c3VwZXIoYSxvLGksbiksdGhpcy5fZWxlbWVudFJlZj10LHRoaXMuX3BsYXRmb3JtPWUsdGhpcy5fYXV0b2ZpbGxNb25pdG9yPXMsdGhpcy5fZm9ybUZpZWxkPWMsdGhpcy5fdWlkPSJtYXQtaW5wdXQtIitSWisrLHRoaXMuZm9jdXNlZD0hMSx0aGlzLnN0YXRlQ2hhbmdlcz1uZXcgQix0aGlzLmNvbnRyb2xUeXBlPSJtYXQtaW5wdXQiLHRoaXMuYXV0b2ZpbGxlZD0hMSx0aGlzLl9kaXNhYmxlZD0hMSx0aGlzLl9yZXF1aXJlZD0hMSx0aGlzLl90eXBlPSJ0ZXh0Iix0aGlzLl9yZWFkb25seT0hMSx0aGlzLl9uZXZlckVtcHR5SW5wdXRUeXBlcz1bImRhdGUiLCJkYXRldGltZSIsImRhdGV0aW1lLWxvY2FsIiwibW9udGgiLCJ0aW1lIiwid2VlayJdLmZpbHRlcigodD0+bUgoKS5oYXModCkpKTtjb25zdCBkPXRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxwPWQubm9kZU5hbWUudG9Mb3dlckNhc2UoKTt0aGlzLl9pbnB1dFZhbHVlQWNjZXNzb3I9cnx8ZCx0aGlzLl9wcmV2aW91c05hdGl2ZVZhbHVlPXRoaXMudmFsdWUsdGhpcy5pZD10aGlzLmlkLGUuSU9TJiZsLnJ1bk91dHNpZGVBbmd1bGFyKCgoKT0+e3QubmF0aXZlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJrZXl1cCIsKHQ9Pntjb25zdCBlPXQudGFyZ2V0O2UudmFsdWV8fDAhPT1lLnNlbGVjdGlvblN0YXJ0fHwwIT09ZS5zZWxlY3Rpb25FbmR8fChlLnNldFNlbGVjdGlvblJhbmdlKDEsMSksZS5zZXRTZWxlY3Rpb25SYW5nZSgwLDApKX0pKX0pKSx0aGlzLl9pc1NlcnZlcj0hdGhpcy5fcGxhdGZvcm0uaXNCcm93c2VyLHRoaXMuX2lzTmF0aXZlU2VsZWN0PSJzZWxlY3QiPT09cCx0aGlzLl9pc1RleHRhcmVhPSJ0ZXh0YXJlYSI9PT1wLHRoaXMuX2lzSW5Gb3JtRmllbGQ9ISFjLHRoaXMuX2lzTmF0aXZlU2VsZWN0JiYodGhpcy5jb250cm9sVHlwZT1kLm11bHRpcGxlPyJtYXQtbmF0aXZlLXNlbGVjdC1tdWx0aXBsZSI6Im1hdC1uYXRpdmUtc2VsZWN0Iil9Z2V0IGRpc2FibGVkKCl7cmV0dXJuIHRoaXMubmdDb250cm9sJiZudWxsIT09dGhpcy5uZ0NvbnRyb2wuZGlzYWJsZWQ/dGhpcy5uZ0NvbnRyb2wuZGlzYWJsZWQ6dGhpcy5fZGlzYWJsZWR9c2V0IGRpc2FibGVkKHQpe3RoaXMuX2Rpc2FibGVkPWVIKHQpLHRoaXMuZm9jdXNlZCYmKHRoaXMuZm9jdXNlZD0hMSx0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCkpfWdldCBpZCgpe3JldHVybiB0aGlzLl9pZH1zZXQgaWQodCl7dGhpcy5faWQ9dHx8dGhpcy5fdWlkfWdldCByZXF1aXJlZCgpe3JldHVybiB0aGlzLl9yZXF1aXJlZH1zZXQgcmVxdWlyZWQodCl7dGhpcy5fcmVxdWlyZWQ9ZUgodCl9Z2V0IHR5cGUoKXtyZXR1cm4gdGhpcy5fdHlwZX1zZXQgdHlwZSh0KXt0aGlzLl90eXBlPXR8fCJ0ZXh0Iix0aGlzLl92YWxpZGF0ZVR5cGUoKSwhdGhpcy5faXNUZXh0YXJlYSYmbUgoKS5oYXModGhpcy5fdHlwZSkmJih0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQudHlwZT10aGlzLl90eXBlKX1nZXQgdmFsdWUoKXtyZXR1cm4gdGhpcy5faW5wdXRWYWx1ZUFjY2Vzc29yLnZhbHVlfXNldCB2YWx1ZSh0KXt0IT09dGhpcy52YWx1ZSYmKHRoaXMuX2lucHV0VmFsdWVBY2Nlc3Nvci52YWx1ZT10LHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKSl9Z2V0IHJlYWRvbmx5KCl7cmV0dXJuIHRoaXMuX3JlYWRvbmx5fXNldCByZWFkb25seSh0KXt0aGlzLl9yZWFkb25seT1lSCh0KX1uZ0FmdGVyVmlld0luaXQoKXt0aGlzLl9wbGF0Zm9ybS5pc0Jyb3dzZXImJnRoaXMuX2F1dG9maWxsTW9uaXRvci5tb25pdG9yKHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCkuc3Vic2NyaWJlKCh0PT57dGhpcy5hdXRvZmlsbGVkPXQuaXNBdXRvZmlsbGVkLHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKX0pKX1uZ09uQ2hhbmdlcygpe3RoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKX1uZ09uRGVzdHJveSgpe3RoaXMuc3RhdGVDaGFuZ2VzLmNvbXBsZXRlKCksdGhpcy5fcGxhdGZvcm0uaXNCcm93c2VyJiZ0aGlzLl9hdXRvZmlsbE1vbml0b3Iuc3RvcE1vbml0b3JpbmcodGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KX1uZ0RvQ2hlY2soKXt0aGlzLm5nQ29udHJvbCYmdGhpcy51cGRhdGVFcnJvclN0YXRlKCksdGhpcy5fZGlydHlDaGVja05hdGl2ZVZhbHVlKCksdGhpcy5fZGlydHlDaGVja1BsYWNlaG9sZGVyKCl9Zm9jdXModCl7dGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmZvY3VzKHQpfV9mb2N1c0NoYW5nZWQodCl7dCE9PXRoaXMuZm9jdXNlZCYmKHRoaXMuZm9jdXNlZD10LHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKSl9X29uSW5wdXQoKXt9X2RpcnR5Q2hlY2tQbGFjZWhvbGRlcigpe3ZhciB0LGU7Y29uc3Qgbj0obnVsbD09PShlPW51bGw9PT0odD10aGlzLl9mb3JtRmllbGQpfHx2b2lkIDA9PT10P3ZvaWQgMDp0Ll9oaWRlQ29udHJvbFBsYWNlaG9sZGVyKXx8dm9pZCAwPT09ZT92b2lkIDA6ZS5jYWxsKHQpKT9udWxsOnRoaXMucGxhY2Vob2xkZXI7aWYobiE9PXRoaXMuX3ByZXZpb3VzUGxhY2Vob2xkZXIpe2NvbnN0IHQ9dGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O3RoaXMuX3ByZXZpb3VzUGxhY2Vob2xkZXI9bixuP3Quc2V0QXR0cmlidXRlKCJwbGFjZWhvbGRlciIsbik6dC5yZW1vdmVBdHRyaWJ1dGUoInBsYWNlaG9sZGVyIil9fV9kaXJ0eUNoZWNrTmF0aXZlVmFsdWUoKXtjb25zdCB0PXRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC52YWx1ZTt0aGlzLl9wcmV2aW91c05hdGl2ZVZhbHVlIT09dCYmKHRoaXMuX3ByZXZpb3VzTmF0aXZlVmFsdWU9dCx0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCkpfV92YWxpZGF0ZVR5cGUoKXtpZihEWi5pbmRleE9mKHRoaXMuX3R5cGUpPi0xJiYoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkpCi8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwp0aHJvdyhmdW5jdGlvbiB0KGUpe3JldHVybiBFcnJvcihgSW5wdXQgdHlwZSAiJHtlfSIgaXNuJ3Qgc3VwcG9ydGVkIGJ5IG1hdElucHV0LmApfSkodGhpcy5fdHlwZSl9X2lzTmV2ZXJFbXB0eSgpe3JldHVybiB0aGlzLl9uZXZlckVtcHR5SW5wdXRUeXBlcy5pbmRleE9mKHRoaXMuX3R5cGUpPi0xfV9pc0JhZElucHV0KCl7bGV0IHQ9dGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnZhbGlkaXR5O3JldHVybiB0JiZ0LmJhZElucHV0fWdldCBlbXB0eSgpe3JldHVybiEodGhpcy5faXNOZXZlckVtcHR5KCl8fHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC52YWx1ZXx8dGhpcy5faXNCYWRJbnB1dCgpfHx0aGlzLmF1dG9maWxsZWQpfWdldCBzaG91bGRMYWJlbEZsb2F0KCl7aWYodGhpcy5faXNOYXRpdmVTZWxlY3Qpe2NvbnN0IHQ9dGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LGU9dC5vcHRpb25zWzBdO3JldHVybiB0aGlzLmZvY3VzZWR8fHQubXVsdGlwbGV8fCF0aGlzLmVtcHR5fHwhISh0LnNlbGVjdGVkSW5kZXg+LTEmJmUmJmUubGFiZWwpfXJldHVybiB0aGlzLmZvY3VzZWR8fCF0aGlzLmVtcHR5fXNldERlc2NyaWJlZEJ5SWRzKHQpe3QubGVuZ3RoP3RoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5zZXRBdHRyaWJ1dGUoImFyaWEtZGVzY3JpYmVkYnkiLHQuam9pbigiICIpKTp0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCJhcmlhLWRlc2NyaWJlZGJ5Iil9b25Db250YWluZXJDbGljaygpe3RoaXMuZm9jdXNlZHx8dGhpcy5mb2N1cygpfX1BWi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8QVopKGdmKEtoKSxnZihjSCksZ2YobFcsMTApLGdmKFhXLDgpLGdmKGhHLDgpLGdmKG5MKSxnZihTWiwxMCksZ2YoeFopLGdmKG1DKSxnZih5VSw4KSl9LEFaLsm1ZGlyPWhvKHt0eXBlOkFaLHNlbGVjdG9yczpbWyJpbnB1dCIsIm1hdElucHV0IiwiIl0sWyJ0ZXh0YXJlYSIsIm1hdElucHV0IiwiIl0sWyJzZWxlY3QiLCJtYXROYXRpdmVDb250cm9sIiwiIl0sWyJpbnB1dCIsIm1hdE5hdGl2ZUNvbnRyb2wiLCIiXSxbInRleHRhcmVhIiwibWF0TmF0aXZlQ29udHJvbCIsIiJdXSxob3N0QXR0cnM6WzEsIm1hdC1pbnB1dC1lbGVtZW50IiwibWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbCJdLGhvc3RWYXJzOjksaG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJlJmKCJmb2N1cyIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5fZm9jdXNDaGFuZ2VkKCEwKX0pKSgiYmx1ciIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5fZm9jdXNDaGFuZ2VkKCExKX0pKSgiaW5wdXQiLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4uX29uSW5wdXQoKX0pKSwyJmUmJihjZygiZGlzYWJsZWQiLG4uZGlzYWJsZWQpKCJyZXF1aXJlZCIsbi5yZXF1aXJlZCkseW0oImlkIixuLmlkKSgiZGF0YS1wbGFjZWhvbGRlciIsbi5wbGFjZWhvbGRlcikoInJlYWRvbmx5IixuLnJlYWRvbmx5JiYhbi5faXNOYXRpdmVTZWxlY3R8fG51bGwpKCJhcmlhLWludmFsaWQiLG4uZW1wdHkmJm4ucmVxdWlyZWQ/bnVsbDpuLmVycm9yU3RhdGUpKCJhcmlhLXJlcXVpcmVkIixuLnJlcXVpcmVkKSxjdSgibWF0LWlucHV0LXNlcnZlciIsbi5faXNTZXJ2ZXIpKX0saW5wdXRzOntpZDoiaWQiLGRpc2FibGVkOiJkaXNhYmxlZCIscmVxdWlyZWQ6InJlcXVpcmVkIix0eXBlOiJ0eXBlIix2YWx1ZToidmFsdWUiLHJlYWRvbmx5OiJyZWFkb25seSIscGxhY2Vob2xkZXI6InBsYWNlaG9sZGVyIixlcnJvclN0YXRlTWF0Y2hlcjoiZXJyb3JTdGF0ZU1hdGNoZXIiLHVzZXJBcmlhRGVzY3JpYmVkQnk6WyJhcmlhLWRlc2NyaWJlZGJ5IiwidXNlckFyaWFEZXNjcmliZWRCeSJdfSxleHBvcnRBczpbIm1hdElucHV0Il0sZmVhdHVyZXM6W2poKFt7cHJvdmlkZTppVSx1c2VFeGlzdGluZzpBWn1dKSxRcCxxb119KSxBWi5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOktofSx7dHlwZTpjSH0se3R5cGU6bFcsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOlZyfV19LHt0eXBlOlhXLGRlY29yYXRvcnM6W3t0eXBlOkJyfV19LHt0eXBlOmhHLGRlY29yYXRvcnM6W3t0eXBlOkJyfV19LHt0eXBlOm5MfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOlZyfSx7dHlwZTpMcixhcmdzOltTWl19XX0se3R5cGU6eFp9LHt0eXBlOm1DfSx7dHlwZTpfVSxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpbeVVdfV19XSxBWi5wcm9wRGVjb3JhdG9ycz17ZGlzYWJsZWQ6W3t0eXBlOlJffV0saWQ6W3t0eXBlOlJffV0scGxhY2Vob2xkZXI6W3t0eXBlOlJffV0scmVxdWlyZWQ6W3t0eXBlOlJffV0sdHlwZTpbe3R5cGU6Ul99XSxlcnJvclN0YXRlTWF0Y2hlcjpbe3R5cGU6Ul99XSx1c2VyQXJpYURlc2NyaWJlZEJ5Olt7dHlwZTpSXyxhcmdzOlsiYXJpYS1kZXNjcmliZWRieSJdfV0sdmFsdWU6W3t0eXBlOlJffV0scmVhZG9ubHk6W3t0eXBlOlJffV0sX2ZvY3VzQ2hhbmdlZDpbe3R5cGU6VF8sYXJnczpbImZvY3VzIixbInRydWUiXV19LHt0eXBlOlRfLGFyZ3M6WyJibHVyIixbImZhbHNlIl1dfV0sX29uSW5wdXQ6W3t0eXBlOlRfLGFyZ3M6WyJpbnB1dCJdfV19LCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoQVosW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3RvcjoiaW5wdXRbbWF0SW5wdXRdLCB0ZXh0YXJlYVttYXRJbnB1dF0sIHNlbGVjdFttYXROYXRpdmVDb250cm9sXSxcbiAgICAgIGlucHV0W21hdE5hdGl2ZUNvbnRyb2xdLCB0ZXh0YXJlYVttYXROYXRpdmVDb250cm9sXSIsZXhwb3J0QXM6Im1hdElucHV0Iixob3N0OntjbGFzczoibWF0LWlucHV0LWVsZW1lbnQgbWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbCIsIltjbGFzcy5tYXQtaW5wdXQtc2VydmVyXSI6Il9pc1NlcnZlciIsIlthdHRyLmlkXSI6ImlkIiwiW2F0dHIuZGF0YS1wbGFjZWhvbGRlcl0iOiJwbGFjZWhvbGRlciIsIltkaXNhYmxlZF0iOiJkaXNhYmxlZCIsIltyZXF1aXJlZF0iOiJyZXF1aXJlZCIsIlthdHRyLnJlYWRvbmx5XSI6InJlYWRvbmx5ICYmICFfaXNOYXRpdmVTZWxlY3QgfHwgbnVsbCIsIlthdHRyLmFyaWEtaW52YWxpZF0iOiIoZW1wdHkgJiYgcmVxdWlyZWQpID8gbnVsbCA6IGVycm9yU3RhdGUiLCJbYXR0ci5hcmlhLXJlcXVpcmVkXSI6InJlcXVpcmVkIn0scHJvdmlkZXJzOlt7cHJvdmlkZTppVSx1c2VFeGlzdGluZzpBWn1dfV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6S2h9LHt0eXBlOmNIfSx7dHlwZTpsVyxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6VnJ9XX0se3R5cGU6WFcsZGVjb3JhdG9yczpbe3R5cGU6QnJ9XX0se3R5cGU6aEcsZGVjb3JhdG9yczpbe3R5cGU6QnJ9XX0se3R5cGU6bkx9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6VnJ9LHt0eXBlOkxyLGFyZ3M6W1NaXX1dfSx7dHlwZTp4Wn0se3R5cGU6bUN9LHt0eXBlOl9VLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOlt5VV19XX1dfSkse2lkOlt7dHlwZTpSX31dLGRpc2FibGVkOlt7dHlwZTpSX31dLHJlcXVpcmVkOlt7dHlwZTpSX31dLHR5cGU6W3t0eXBlOlJffV0sdmFsdWU6W3t0eXBlOlJffV0scmVhZG9ubHk6W3t0eXBlOlJffV0sX2ZvY3VzQ2hhbmdlZDpbe3R5cGU6VF8sYXJnczpbImZvY3VzIixbInRydWUiXV19LHt0eXBlOlRfLGFyZ3M6WyJibHVyIixbImZhbHNlIl1dfV0sX29uSW5wdXQ6W3t0eXBlOlRfLGFyZ3M6WyJpbnB1dCJdfV0scGxhY2Vob2xkZXI6W3t0eXBlOlJffV0sZXJyb3JTdGF0ZU1hdGNoZXI6W3t0eXBlOlJffV0sdXNlckFyaWFEZXNjcmliZWRCeTpbe3R5cGU6Ul8sYXJnczpbImFyaWEtZGVzY3JpYmVkYnkiXX1dfSk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjbGFzcyBUWnt9ZnVuY3Rpb24gTloodCxlKXtpZigxJnQmJihDZigwLCJtYXQtZXJyb3IiKSxQdSgxKSxNZigpKSwyJnQpe2NvbnN0IHQ9emYoKTtEYygxKSxrdSgiIFJlbG9hZCBwZXJpb2QgaGFzIHRvIGJlIG1pbmltdW0gb2YgIix0Lk1JTl9SRUxPQURfUEVSSU9EX0lOX1MsIiBzZWNvbmRzLiAiKX19ZnVuY3Rpb24geloodCxlKXsxJnQmJihDZigwLCJtYXQtZXJyb3IiKSxQdSgxLCIgUGFnZSBzaXplIGhhcyB0byBiZSBhIHBvc2l0aXZlIGludGVnZXIuICIpLE1mKCkpfVRaLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxUWil9LFRaLsm1bW9kPWZvKHt0eXBlOlRafSksVFouybVpbmo9RG4oe3Byb3ZpZGVyczpbbkxdLGltcG9ydHM6W1t3WixDVSxORl0sd1osQ1VdfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihUWixbe3R5cGU6TF8sYXJnczpbe2RlY2xhcmF0aW9uczpbQVosa1pdLGltcG9ydHM6W3daLENVLE5GXSxleHBvcnRzOlt3WixDVSxBWixrWl0scHJvdmlkZXJzOltuTF19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZ1byhUWix7ZGVjbGFyYXRpb25zOmZ1bmN0aW9uKCl7cmV0dXJuW0FaLGtaXX0saW1wb3J0czpmdW5jdGlvbigpe3JldHVyblt3WixDVSxORl19LGV4cG9ydHM6ZnVuY3Rpb24oKXtyZXR1cm5bd1osQ1UsQVosa1pdfX0pO2NsYXNzIElae2NvbnN0cnVjdG9yKCl7dGhpcy5yZWxvYWRUb2dnbGVkPW5ldyBTeSx0aGlzLnJlbG9hZFBlcmlvZEluTXNDaGFuZ2VkPW5ldyBTeSx0aGlzLnBhZ2VTaXplQ2hhbmdlZD1uZXcgU3ksdGhpcy5NSU5fUkVMT0FEX1BFUklPRF9JTl9TPTMwLHRoaXMucmVsb2FkUGVyaW9kQ29udHJvbD1uZXcgV1codGhpcy5NSU5fUkVMT0FEX1BFUklPRF9JTl9TLFtOVS5yZXF1aXJlZCxOVS5taW4odGhpcy5NSU5fUkVMT0FEX1BFUklPRF9JTl9TKV0pLHRoaXMucGFnaW5hdGlvbkNvbnRyb2w9bmV3IFdXKDEsW05VLnJlcXVpcmVkLE5VLm1pbigxKSx0PT57Y29uc3QgZT1OdW1iZXIodC52YWx1ZSk7cmV0dXJuIE1hdGgucm91bmQoZSk9PT10LnZhbHVlP251bGw6e2ludGVnZXI6e3ZhbHVlOnQudmFsdWV9fX1dKSx0aGlzLm5nVW5zdWJzY3JpYmU9bmV3IEJ9bmdPbkluaXQoKXt0aGlzLnJlbG9hZFBlcmlvZENvbnRyb2wudmFsdWVDaGFuZ2VzLnBpcGUoamUodGhpcy5uZ1Vuc3Vic2NyaWJlKSxDZSg1MDApLHVlKCgoKT0+dGhpcy5yZWxvYWRQZXJpb2RDb250cm9sLnZhbGlkKSkpLnN1YnNjcmliZSgoKCk9PntpZighdGhpcy5yZWxvYWRQZXJpb2RDb250cm9sLnZhbGlkKXJldHVybjt0aGlzLnJlbG9hZFBlcmlvZEluTXNDaGFuZ2VkLmVtaXQoMWUzKnRoaXMucmVsb2FkUGVyaW9kQ29udHJvbC52YWx1ZSl9KSksdGhpcy5wYWdpbmF0aW9uQ29udHJvbC52YWx1ZUNoYW5nZXMucGlwZShqZSh0aGlzLm5nVW5zdWJzY3JpYmUpLENlKDUwMCksdWUoKCgpPT50aGlzLnBhZ2luYXRpb25Db250cm9sLnZhbGlkKSkpLnN1YnNjcmliZSgoKCk9Pnt0aGlzLnBhZ2VTaXplQ2hhbmdlZC5lbWl0KHRoaXMucGFnaW5hdGlvbkNvbnRyb2wudmFsdWUpfSkpfW5nT25EZXN0cm95KCl7dGhpcy5uZ1Vuc3Vic2NyaWJlLm5leHQoKSx0aGlzLm5nVW5zdWJzY3JpYmUuY29tcGxldGUoKX1uZ09uQ2hhbmdlcyh0KXtpZih0LnJlbG9hZFBlcmlvZEluTXMpe2NvbnN0IGU9dC5yZWxvYWRQZXJpb2RJbk1zO2UucHJldmlvdXNWYWx1ZSE9PWUuY3VycmVudFZhbHVlJiZ0aGlzLnJlbG9hZFBlcmlvZENvbnRyb2wuc2V0VmFsdWUoZS5jdXJyZW50VmFsdWUvMWUzKX1pZih0LnJlbG9hZEVuYWJsZWQpe3QucmVsb2FkRW5hYmxlZC5jdXJyZW50VmFsdWU/dGhpcy5yZWxvYWRQZXJpb2RDb250cm9sLmVuYWJsZSgpOnRoaXMucmVsb2FkUGVyaW9kQ29udHJvbC5kaXNhYmxlKCl9aWYodC5wYWdlU2l6ZSl7Y29uc3QgZT10LnBhZ2VTaXplO2UucHJldmlvdXNWYWx1ZSE9PWUuY3VycmVudFZhbHVlJiZ0aGlzLnBhZ2luYXRpb25Db250cm9sLnNldFZhbHVlKGUuY3VycmVudFZhbHVlKX19b25SZWxvYWRUb2dnbGUoKXt0aGlzLnJlbG9hZFRvZ2dsZWQuZW1pdCgpfX1JWi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8SVopfSxJWi7JtWNtcD1zbyh7dHlwZTpJWixzZWxlY3RvcnM6W1sic2V0dGluZ3MtZGlhbG9nLWNvbXBvbmVudCJdXSxpbnB1dHM6e3JlbG9hZEVuYWJsZWQ6InJlbG9hZEVuYWJsZWQiLHJlbG9hZFBlcmlvZEluTXM6InJlbG9hZFBlcmlvZEluTXMiLHBhZ2VTaXplOiJwYWdlU2l6ZSJ9LG91dHB1dHM6e3JlbG9hZFRvZ2dsZWQ6InJlbG9hZFRvZ2dsZWQiLHJlbG9hZFBlcmlvZEluTXNDaGFuZ2VkOiJyZWxvYWRQZXJpb2RJbk1zQ2hhbmdlZCIscGFnZVNpemVDaGFuZ2VkOiJwYWdlU2l6ZUNoYW5nZWQifSxmZWF0dXJlczpbcW9dLGRlY2xzOjE0LHZhcnM6NSxjb25zdHM6W1sxLCJyZWxvYWQtdG9nZ2xlIl0sWzMsImNoZWNrZWQiLCJjaGFuZ2UiXSxbIm1hdElucHV0IiwiIiwidHlwZSIsIm51bWJlciIsInBsYWNlaG9sZGVyIiwiUmVsb2FkIFBlcmlvZCIsMSwicmVsb2FkLXBlcmlvZCIsMywiZm9ybUNvbnRyb2wiXSxbNCwibmdJZiJdLFsibWF0SW5wdXQiLCIiLCJ0eXBlIiwibnVtYmVyIiwicGxhY2Vob2xkZXIiLCJQYWdpbmF0aW9uIExpbWl0IiwxLCJwYWdlLXNpemUiLDMsImZvcm1Db250cm9sIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihDZigwLCJoMyIpLFB1KDEsIlNldHRpbmdzIiksTWYoKSxDZigyLCJkaXYiKSxDZigzLCJkaXYiLDApLENmKDQsIm1hdC1jaGVja2JveCIsMSksUmYoImNoYW5nZSIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5vblJlbG9hZFRvZ2dsZSgpfSkpLFB1KDUsIlJlbG9hZCBkYXRhIiksTWYoKSxNZigpLENmKDYsImRpdiIpLENmKDcsIm1hdC1mb3JtLWZpZWxkIiksdmYoOCwiaW5wdXQiLDIpLE1mKCksSG0oOSxOWiwyLDEsIm1hdC1lcnJvciIsMyksTWYoKSxNZigpLENmKDEwLCJkaXYiKSxDZigxMSwibWF0LWZvcm0tZmllbGQiKSx2ZigxMiwiaW5wdXQiLDQpLE1mKCksSG0oMTMselosMiwwLCJtYXQtZXJyb3IiLDMpLE1mKCkpLDImZSYmKERjKDQpLGJmKCJjaGVja2VkIixuLnJlbG9hZEVuYWJsZWQpLERjKDQpLGJmKCJmb3JtQ29udHJvbCIsbi5yZWxvYWRQZXJpb2RDb250cm9sKSxEYygxKSxiZigibmdJZiIsbi5yZWxvYWRQZXJpb2RDb250cm9sLmhhc0Vycm9yKCJtaW4iKXx8bi5yZWxvYWRQZXJpb2RDb250cm9sLmhhc0Vycm9yKCJyZXF1aXJlZCIpKSxEYygzKSxiZigiZm9ybUNvbnRyb2wiLG4ucGFnaW5hdGlvbkNvbnRyb2wpLERjKDEpLGJmKCJuZ0lmIixuLnBhZ2luYXRpb25Db250cm9sLmludmFsaWQpKX0sZGlyZWN0aXZlczpbYlosX1UsQVosYUcsU1UsbVcsdUcsUHYsblVdLHN0eWxlczpbIltfbmdob3N0LSVDT01QJV0ge1xuICBmb250LXNpemU6IDE1cHg7XG59XG5cbltfbmdob3N0LSVDT01QJV0gICAgPiBkaXZbX25nY29udGVudC0lQ09NUCVdIHtcbiAgbWFyZ2luOiAxMHB4IDA7XG59XG5cbltfbmdob3N0LSVDT01QJV0gICAgPiBbX25nY29udGVudC0lQ09NUCVdOmZpcnN0LWNoaWxkIHtcbiAgbWFyZ2luLXRvcDogMDtcbn1cblxuW19uZ2hvc3QtJUNPTVAlXSAgICA+IFtfbmdjb250ZW50LSVDT01QJV06bGFzdC1jaGlsZCB7XG4gIG1hcmdpbi1ib3R0b206IDA7XG59XG5cbmgzW19uZ2NvbnRlbnQtJUNPTVAlXSB7XG4gIGZvbnQtc2l6ZTogMjBweDtcbn1cblxuLnJlbG9hZC10b2dnbGVbX25nY29udGVudC0lQ09NUCVdIHtcbiAgbWFyZ2luLWJvdHRvbTogMTBweDtcbn0iXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoSVosW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3Rvcjoic2V0dGluZ3MtZGlhbG9nLWNvbXBvbmVudCIsdGVtcGxhdGVVcmw6InNldHRpbmdzX2RpYWxvZ19jb21wb25lbnQubmcuaHRtbCIsc3R5bGVVcmxzOlsiLi9zZXR0aW5nc19kaWFsb2dfY29tcG9uZW50LmNzcyJdfV19XSxudWxsLHtyZWxvYWRFbmFibGVkOlt7dHlwZTpSX31dLHJlbG9hZFBlcmlvZEluTXM6W3t0eXBlOlJffV0scGFnZVNpemU6W3t0eXBlOlJffV0scmVsb2FkVG9nZ2xlZDpbe3R5cGU6RV99XSxyZWxvYWRQZXJpb2RJbk1zQ2hhbmdlZDpbe3R5cGU6RV99XSxwYWdlU2l6ZUNoYW5nZWQ6W3t0eXBlOkVffV19KTtjbGFzcyBIWntjb25zdHJ1Y3Rvcih0KXt0aGlzLnN0b3JlPXQsdGhpcy5yZWxvYWRFbmFibGVkJD10aGlzLnN0b3JlLnNlbGVjdCh1SSksdGhpcy5yZWxvYWRQZXJpb2RJbk1zJD10aGlzLnN0b3JlLnNlbGVjdChnSSksdGhpcy5wYWdlU2l6ZSQ9dGhpcy5zdG9yZS5zZWxlY3QoaEkpfW9uUmVsb2FkVG9nZ2xlZCgpe3RoaXMuc3RvcmUuZGlzcGF0Y2goc0koKSl9b25SZWxvYWRQZXJpb2RJbk1zQ2hhbmdlZCh0KXt0aGlzLnN0b3JlLmRpc3BhdGNoKGxJKHtwZXJpb2RJbk1zOnR9KSl9b25QYWdlU2l6ZUNoYW5nZWQodCl7dGhpcy5zdG9yZS5kaXNwYXRjaChjSSh7c2l6ZTp0fSkpfX1IWi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8SFopKGdmKGlTKSl9LEhaLsm1Y21wPXNvKHt0eXBlOkhaLHNlbGVjdG9yczpbWyJzZXR0aW5ncy1kaWFsb2ciXV0sZGVjbHM6NCx2YXJzOjksY29uc3RzOltbMywicmVsb2FkRW5hYmxlZCIsInJlbG9hZFBlcmlvZEluTXMiLCJwYWdlU2l6ZSIsInJlbG9hZFRvZ2dsZWQiLCJyZWxvYWRQZXJpb2RJbk1zQ2hhbmdlZCIsInBhZ2VTaXplQ2hhbmdlZCJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoQ2YoMCwic2V0dGluZ3MtZGlhbG9nLWNvbXBvbmVudCIsMCksUmYoInJlbG9hZFRvZ2dsZWQiLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4ub25SZWxvYWRUb2dnbGVkKCl9KSkoInJlbG9hZFBlcmlvZEluTXNDaGFuZ2VkIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5vblJlbG9hZFBlcmlvZEluTXNDaGFuZ2VkKGUpfSkpKCJwYWdlU2l6ZUNoYW5nZWQiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLm9uUGFnZVNpemVDaGFuZ2VkKGUpfSkpLF95KDEsImFzeW5jIiksX3koMiwiYXN5bmMiKSxfeSgzLCJhc3luYyIpLE1mKCkpLDImZSYmYmYoInJlbG9hZEVuYWJsZWQiLEN5KDEsMyxuLnJlbG9hZEVuYWJsZWQkKSkoInJlbG9hZFBlcmlvZEluTXMiLEN5KDIsNSxuLnJlbG9hZFBlcmlvZEluTXMkKSkoInBhZ2VTaXplIixDeSgzLDcsbi5wYWdlU2l6ZSQpKX0sZGlyZWN0aXZlczpbSVpdLHBpcGVzOltWdl0sZW5jYXBzdWxhdGlvbjoyfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihIWixbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJzZXR0aW5ncy1kaWFsb2ciLHRlbXBsYXRlOidcbiAgICA8c2V0dGluZ3MtZGlhbG9nLWNvbXBvbmVudFxuICAgICAgW3JlbG9hZEVuYWJsZWRdPSJyZWxvYWRFbmFibGVkJCB8IGFzeW5jIlxuICAgICAgW3JlbG9hZFBlcmlvZEluTXNdPSJyZWxvYWRQZXJpb2RJbk1zJCB8IGFzeW5jIlxuICAgICAgW3BhZ2VTaXplXT0icGFnZVNpemUkIHwgYXN5bmMiXG4gICAgICAocmVsb2FkVG9nZ2xlZCk9Im9uUmVsb2FkVG9nZ2xlZCgpIlxuICAgICAgKHJlbG9hZFBlcmlvZEluTXNDaGFuZ2VkKT0ib25SZWxvYWRQZXJpb2RJbk1zQ2hhbmdlZCgkZXZlbnQpIlxuICAgICAgKHBhZ2VTaXplQ2hhbmdlZCk9Im9uUGFnZVNpemVDaGFuZ2VkKCRldmVudCkiXG4gICAgPjwvc2V0dGluZ3MtZGlhbG9nLWNvbXBvbmVudD5cbiAgJ31dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmlTfV19KSxudWxsKTtjbGFzcyBGWntjb25zdHJ1Y3Rvcih0KXt0aGlzLmRpYWxvZz10fWlzQnV0dG9uRGlzYWJsZWQoKXtyZXR1cm4gdGhpcy5zZXR0aW5nc0xvYWRTdGF0ZT09PVVFLk5PVF9MT0FERUR8fHRoaXMuc2V0dGluZ3NMb2FkU3RhdGU9PT1VRS5MT0FESU5HfW9wZW5EaWFsb2coKXt0aGlzLmRpYWxvZy5vcGVuKEhaLHt3aWR0aDoiNDAwcHgifSl9fUZaLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxGWikoZ2YoWFkpKX0sRlouybVjbXA9c28oe3R5cGU6Rlosc2VsZWN0b3JzOltbInNldHRpbmdzLWJ1dHRvbi1jb21wb25lbnQiXV0saW5wdXRzOntzZXR0aW5nc0xvYWRTdGF0ZToic2V0dGluZ3NMb2FkU3RhdGUifSxkZWNsczoyLHZhcnM6MSxjb25zdHM6W1sibWF0LWljb24tYnV0dG9uIiwiIiwzLCJkaXNhYmxlZCIsImNsaWNrIl0sWyJzdmdJY29uIiwic2V0dGluZ3NfMjRweCJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoQ2YoMCwiYnV0dG9uIiwwKSxSZigiY2xpY2siLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4ub3BlbkRpYWxvZygpfSkpLHZmKDEsIm1hdC1pY29uIiwxKSxNZigpKSwyJmUmJmJmKCJkaXNhYmxlZCIsbi5pc0J1dHRvbkRpc2FibGVkKCkpfSxkaXJlY3RpdmVzOltOTCxNcV0sZW5jYXBzdWxhdGlvbjoyfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihGWixbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJzZXR0aW5ncy1idXR0b24tY29tcG9uZW50Iix0ZW1wbGF0ZTonXG4gICAgPGJ1dHRvblxuICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICBbZGlzYWJsZWRdPSJpc0J1dHRvbkRpc2FibGVkKCkiXG4gICAgICAoY2xpY2spPSJvcGVuRGlhbG9nKCkiXG4gICAgPlxuICAgICAgPG1hdC1pY29uIHN2Z0ljb249InNldHRpbmdzXzI0cHgiPjwvbWF0LWljb24+XG4gICAgPC9idXR0b24+XG4gICd9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpYWX1dfSkse3NldHRpbmdzTG9hZFN0YXRlOlt7dHlwZTpSX31dfSk7Y2xhc3MgTFp7Y29uc3RydWN0b3IodCl7dGhpcy5zdG9yZT10LHRoaXMuc2V0dGluZ3NMb2FkU3RhdGUkPXRoaXMuc3RvcmUuc2VsZWN0KGZJKX19TFouybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fExaKShnZihpUykpfSxMWi7JtWNtcD1zbyh7dHlwZTpMWixzZWxlY3RvcnM6W1sic2V0dGluZ3MtYnV0dG9uIl1dLGRlY2xzOjIsdmFyczozLGNvbnN0czpbWzMsInNldHRpbmdzTG9hZFN0YXRlIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJih2ZigwLCJzZXR0aW5ncy1idXR0b24tY29tcG9uZW50IiwwKSxfeSgxLCJhc3luYyIpKSwyJmUmJmJmKCJzZXR0aW5nc0xvYWRTdGF0ZSIsQ3koMSwxLG4uc2V0dGluZ3NMb2FkU3RhdGUkKSl9LGRpcmVjdGl2ZXM6W0ZaXSxwaXBlczpbVnZdLGVuY2Fwc3VsYXRpb246Mn0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoTFosW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3Rvcjoic2V0dGluZ3MtYnV0dG9uIix0ZW1wbGF0ZTonXG4gICAgPHNldHRpbmdzLWJ1dHRvbi1jb21wb25lbnRcbiAgICAgIFtzZXR0aW5nc0xvYWRTdGF0ZV09InNldHRpbmdzTG9hZFN0YXRlJCB8IGFzeW5jIlxuICAgID48L3NldHRpbmdzLWJ1dHRvbi1jb21wb25lbnQ+XG4gICd9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTppU31dfSksbnVsbCk7Y2xhc3MgQlp7fUJaLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxCWil9LEJaLsm1Y21wPXNvKHt0eXBlOkJaLHNlbGVjdG9yczpbWyJhcHAtaGVhZGVyIl1dLGRlY2xzOjEwLHZhcnM6MCxjb25zdHM6W1sxLCJicmFuZCJdLFsxLCJwbHVnaW5zIl0sWyJtYXQtaWNvbi1idXR0b24iLCIiLCJocmVmIiwiaHR0cHM6Ly9naXRodWIuY29tL3RlbnNvcmZsb3cvdGVuc29yYm9hcmQvYmxvYi9tYXN0ZXIvUkVBRE1FLm1kIiwicmVsIiwibm9vcGVuZXIgbm9yZWZlcnJlciIsInRhcmdldCIsIl9ibGFuayIsImFyaWEtbGFiZWwiLCJIZWxwIiwxLCJyZWFkbWUiXSxbInN2Z0ljb24iLCJoZWxwX291dGxpbmVfMjRweCJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoQ2YoMCwibWF0LXRvb2xiYXIiKSxDZigxLCJzcGFuIiwwKSxQdSgyLCJUZW5zb3JCb2FyZCIpLE1mKCksdmYoMywicGx1Z2luLXNlbGVjdG9yIiwxKSx2Zig0LCJ0YmRldi11cGxvYWQtYnV0dG9uIiksdmYoNSwiYXBwLWhlYWRlci1kYXJrLW1vZGUtdG9nZ2xlIiksdmYoNiwiYXBwLWhlYWRlci1yZWxvYWQiKSx2Zig3LCJzZXR0aW5ncy1idXR0b24iKSxDZig4LCJhIiwyKSx2Zig5LCJtYXQtaWNvbiIsMyksTWYoKSxNZigpKX0sZGlyZWN0aXZlczpbalYsVFksU3EsZVosb1osTFosekwsTXFdLHN0eWxlczpbJy5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjlweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHh9Lm1hdC1oMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaGVhZGxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDI0cHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTVweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWg2W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1ib2R5LXN0cm9uZ1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYXJkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FyZC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MjRweH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNhbGVuZGFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZGlhbG9nLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVlbSAwO2JvcmRlci10b3A6Ljg0Mzc1ZW0gc29saWQgdHJhbnNwYXJlbnR9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17dG9wOi0wLjg0Mzc1ZW07cGFkZGluZy10b3A6Ljg0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6NzUlO21hcmdpbi10b3A6LjY2NjY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS43OTE2NjY2NjY3ZW0pfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjQzNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDJweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIzZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4yODEyNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LjU0MTY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS42NjY2NjY2NjY3ZW0pfUBtZWRpYSBwcmludHsubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjJlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjFlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyZW0pIHNjYWxlKDAuNzUpfX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouMjVlbSAwIC43NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjA5Mzc1ZW07bWFyZ2luLXRvcDotMC41ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoxZW0gMCAxZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuODQzNzVlbTttYXJnaW4tdG9wOi0wLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMiksIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fWlucHV0Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi0wLjA2MjVlbX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHh9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtfS5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1zdGVwLXN1Yi1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6bm9ybWFsfS5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1zdGVwLWxhYmVsLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10YWItZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MH0ubWF0LXRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTBweDtwYWRkaW5nLXRvcDo2cHg7cGFkZGluZy1ib3R0b206NnB4fS5tYXQtdG9vbHRpcC1oYW5kc2V0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4fS5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtc2ltcGxlLXNuYWNrYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHh9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoxO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjE0cHh9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV06bm90KDplbXB0eSl7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9Lm1hdC1yaXBwbGUubWF0LXJpcHBsZS11bmJvdW5kZWRbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OnZpc2libGV9Lm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJhZGl1czo1MCU7cG9pbnRlci1ldmVudHM6bm9uZTt0cmFuc2l0aW9uOm9wYWNpdHksdHJhbnNmb3JtIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTt0cmFuc2Zvcm06c2NhbGUoMCl9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9LmNkay12aXN1YWxseS1oaWRkZW5bX25nY29udGVudC0lQ09NUCVde2JvcmRlcjowO2NsaXA6cmVjdCgwIDAgMCAwKTtoZWlnaHQ6MXB4O21hcmdpbjotMXB4O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4O3doaXRlLXNwYWNlOm5vd3JhcDtvdXRsaW5lOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0sIC5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cG9pbnRlci1ldmVudHM6bm9uZTt0b3A6MDtsZWZ0OjA7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV06ZW1wdHl7ZGlzcGxheTpub25lfS5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktcGFuZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6YXV0bztib3gtc2l6aW5nOmJvcmRlci1ib3g7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDttYXgtd2lkdGg6MTAwJTttYXgtaGVpZ2h0OjEwMCV9LmNkay1vdmVybGF5LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDt6LWluZGV4OjEwMDA7cG9pbnRlci1ldmVudHM6YXV0bzstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnQ7dHJhbnNpdGlvbjpvcGFjaXR5IDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpO29wYWNpdHk6MH0uY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eToxfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6LjZ9LmNkay1vdmVybGF5LWRhcmstYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMzIpfS5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV0sIC5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWNvbm5lY3RlZC1wb3NpdGlvbi1ib3VuZGluZy1ib3hbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO21pbi13aWR0aDoxcHg7bWluLWhlaWdodDoxcHh9LmNkay1nbG9iYWwtc2Nyb2xsYmxvY2tbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3dpZHRoOjEwMCU7b3ZlcmZsb3cteTpzY3JvbGx9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplW19uZ2NvbnRlbnQtJUNPTVAlXXtyZXNpemU6bm9uZX10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDphdXRvICFpbXBvcnRhbnQ7b3ZlcmZsb3c6aGlkZGVuICFpbXBvcnRhbnR9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZy1maXJlZm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDowICFpbXBvcnRhbnR9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydHt9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmR7fS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGx7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0IDBzIDFtc30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOi13ZWJraXQtYXV0b2ZpbGwpe2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmQgMHMgMW1zfS5tYXQtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LW1kYy1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfW1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXthbGlnbi1pdGVtczpjZW50ZXI7Y29sb3I6I2ZmZjtkaXNwbGF5OmZsZXg7aGVpZ2h0OjY0cHg7b3ZlcmZsb3c6aGlkZGVuO3dpZHRoOjEwMCV9dGJkZXYtdXBsb2FkLWJ1dHRvbi5zaG93bltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjAgOHB4IDAgMTZweH0uYnJhbmRbX25nY29udGVudC0lQ09NUCVdLCAucmVhZG1lW19uZ2NvbnRlbnQtJUNPTVAlXSwgYXBwLWhlYWRlci1yZWxvYWRbX25nY29udGVudC0lQ09NUCVdLCBzZXR0aW5ncy1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZsZXg6MCAwIGF1dG99LmJyYW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtsZXR0ZXItc3BhY2luZzotMC4wMjVlbTttYXJnaW4tbGVmdDoxMHB4O3RleHQtcmVuZGVyaW5nOm9wdGltaXplTGVnaWJpbGl0eX0ucGx1Z2luc1tfbmdjb250ZW50LSVDT01QJV17YWxpZ24taXRlbXM6Y2VudGVyO2Rpc3BsYXk6ZmxleDtmbGV4OjEgMSBhdXRvO2ZvbnQtc2l6ZToxNHB4O2hlaWdodDoxMDAlO292ZXJmbG93OmhpZGRlbn0nXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoQlosW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoiYXBwLWhlYWRlciIsdGVtcGxhdGU6J1xuICAgIDxtYXQtdG9vbGJhcj5cbiAgICAgIDxzcGFuIGNsYXNzPSJicmFuZCI+VGVuc29yQm9hcmQ8L3NwYW4+XG4gICAgICA8cGx1Z2luLXNlbGVjdG9yIGNsYXNzPSJwbHVnaW5zIj48L3BsdWdpbi1zZWxlY3Rvcj5cbiAgICAgIDx0YmRldi11cGxvYWQtYnV0dG9uPjwvdGJkZXYtdXBsb2FkLWJ1dHRvbj5cbiAgICAgIDxhcHAtaGVhZGVyLWRhcmstbW9kZS10b2dnbGU+PC9hcHAtaGVhZGVyLWRhcmstbW9kZS10b2dnbGU+XG4gICAgICA8YXBwLWhlYWRlci1yZWxvYWQ+PC9hcHAtaGVhZGVyLXJlbG9hZD5cbiAgICAgIDxzZXR0aW5ncy1idXR0b24+PC9zZXR0aW5ncy1idXR0b24+XG4gICAgICA8YVxuICAgICAgICBjbGFzcz0icmVhZG1lIlxuICAgICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgICAgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3RlbnNvcmZsb3cvdGVuc29yYm9hcmQvYmxvYi9tYXN0ZXIvUkVBRE1FLm1kIlxuICAgICAgICByZWw9Im5vb3BlbmVyIG5vcmVmZXJyZXIiXG4gICAgICAgIHRhcmdldD0iX2JsYW5rIlxuICAgICAgICBhcmlhLWxhYmVsPSJIZWxwIlxuICAgICAgPlxuICAgICAgICA8bWF0LWljb24gc3ZnSWNvbj0iaGVscF9vdXRsaW5lXzI0cHgiPjwvbWF0LWljb24+XG4gICAgICA8L2E+XG4gICAgPC9tYXQtdG9vbGJhcj5cbiAgJyxzdHlsZVVybHM6WyJoZWFkZXJfY29tcG9uZW50LmNzcyJdfV19XSxudWxsLG51bGwpO2NvbnN0IFZaPVsicm91dGVDb250YWluZXIiXTtjbGFzcyBqWntjb25zdHJ1Y3Rvcih0KXt0aGlzLmNvbXBvbmVudEZhY3RvcnlSZXNvbHZlcj10fW5nT25DaGFuZ2VzKHQpe2NvbnN0IGU9dC5hY3RpdmVOZ0NvbXBvbmVudDtpZihlJiYodGhpcy5yb3V0ZUNvbnRhaW5lci5jbGVhcigpLGUuY3VycmVudFZhbHVlKSl7Y29uc3QgdD10aGlzLmNvbXBvbmVudEZhY3RvcnlSZXNvbHZlci5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeShlLmN1cnJlbnRWYWx1ZSk7dGhpcy5yb3V0ZUNvbnRhaW5lci5jcmVhdGVDb21wb25lbnQodCl9fX1qWi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8alopKGdmKEdoKSl9LGpaLsm1Y21wPXNvKHt0eXBlOmpaLHNlbGVjdG9yczpbWyJyb3V0ZXItb3V0bGV0LWNvbXBvbmVudCJdXSx2aWV3UXVlcnk6ZnVuY3Rpb24gdChlLG4pe2lmKDEmZSYmVnkoVlosNyxGYiksMiZlKXtsZXQgdDtCeSh0PVV5KCkpJiYobi5yb3V0ZUNvbnRhaW5lcj10LmZpcnN0KX19LGlucHV0czp7YWN0aXZlTmdDb21wb25lbnQ6ImFjdGl2ZU5nQ29tcG9uZW50In0sZmVhdHVyZXM6W3FvXSxkZWNsczoyLHZhcnM6MCxjb25zdHM6W1sicm91dGVDb250YWluZXIiLCIiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmUGYoMCxudWxsLDApfSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKGpaLFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6InJvdXRlci1vdXRsZXQtY29tcG9uZW50Iix0ZW1wbGF0ZToiIDxuZy1jb250YWluZXIgI3JvdXRlQ29udGFpbmVyPjwvbmctY29udGFpbmVyPiAiLGNoYW5nZURldGVjdGlvbjpqbi5PblB1c2h9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpHaH1dfSkse3JvdXRlQ29udGFpbmVyOlt7dHlwZTphcixhcmdzOlsicm91dGVDb250YWluZXIiLHtzdGF0aWM6ITAscmVhZDpGYn1dfV0sYWN0aXZlTmdDb21wb25lbnQ6W3t0eXBlOlJffV19KTtjbGFzcyBVWntjb25zdHJ1Y3Rvcih0LGUpe3RoaXMuc3RvcmU9dCx0aGlzLnJlZ2lzdHJ5PWUsdGhpcy5hY3RpdmVOZ0NvbXBvbmVudCQ9S3QoW3RoaXMuc3RvcmUuc2VsZWN0KGhSKSx0aGlzLnN0b3JlLnNlbGVjdChiUildKS5waXBlKFZ0KCgoW3QsZV0pPT57aWYoIXQpcmV0dXJuIG51bGw7cmV0dXJuIG51bGwhPT1lJiYheEQodCxlKT9udWxsOnRoaXMucmVnaXN0cnkuZ2V0TmdDb21wb25lbnRCeVJvdXRlS2luZCh0LnJvdXRlS2luZCl9KSkpfX12YXIgV1o7VVouybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFVaKShnZihpUyksZ2YoZlIpKX0sVVouybVjbXA9c28oe3R5cGU6VVosc2VsZWN0b3JzOltbInJvdXRlci1vdXRsZXQiXV0sZGVjbHM6Mix2YXJzOjMsY29uc3RzOltbMywiYWN0aXZlTmdDb21wb25lbnQiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKHZmKDAsInJvdXRlci1vdXRsZXQtY29tcG9uZW50IiwwKSxfeSgxLCJhc3luYyIpKSwyJmUmJmJmKCJhY3RpdmVOZ0NvbXBvbmVudCIsQ3koMSwxLG4uYWN0aXZlTmdDb21wb25lbnQkKSl9LGRpcmVjdGl2ZXM6W2paXSxwaXBlczpbVnZdLGVuY2Fwc3VsYXRpb246MixjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoVVosW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3Rvcjoicm91dGVyLW91dGxldCIsdGVtcGxhdGU6J1xuICAgIDxyb3V0ZXItb3V0bGV0LWNvbXBvbmVudFxuICAgICAgW2FjdGl2ZU5nQ29tcG9uZW50XT0iYWN0aXZlTmdDb21wb25lbnQkIHwgYXN5bmMiXG4gICAgPjwvcm91dGVyLW91dGxldC1jb21wb25lbnQ+XG4gICcsY2hhbmdlRGV0ZWN0aW9uOmpuLk9uUHVzaH1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmlTfSx7dHlwZTpmUn1dfSksbnVsbCksKGZ1bmN0aW9uKHQpe3RbdC5BQ1RJVkVfUExVR0lOPTBdPSJBQ1RJVkVfUExVR0lOIn0pKFdafHwoV1o9e30pKTtjbGFzcyBHWntjb25zdHJ1Y3Rvcih0KXt0aGlzLmRlZXBMaW5rZXI9dCx0aGlzLm9uVmFsdWVDaGFuZ2U9bmV3IFN5LHRoaXMubmdVbnN1YnNjcmliZT1uZXcgQix0aGlzLm9uSGFzaENoYW5nZT1sZSh3aW5kb3csInBvcHN0YXRlIix7cGFzc2l2ZTohMH0pLnBpcGUoamUodGhpcy5uZ1Vuc3Vic2NyaWJlKSl9bmdPbkluaXQoKXt0aGlzLm9uSGFzaENoYW5nZS5zdWJzY3JpYmUoKCgpPT57Y29uc3QgdD10aGlzLmRlZXBMaW5rZXIuZ2V0UGx1Z2luSWQoKTt0IT09dGhpcy5hY3RpdmVQbHVnaW5JZCYmdGhpcy5vblZhbHVlQ2hhbmdlLmVtaXQoe3Byb3A6V1ouQUNUSVZFX1BMVUdJTix2YWx1ZTp0fSl9KSl9bmdPbkRlc3Ryb3koKXt0aGlzLm5nVW5zdWJzY3JpYmUubmV4dCgpLHRoaXMubmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpfW5nT25DaGFuZ2VzKHQpe2lmKHQuYWN0aXZlUGx1Z2luSWQpe2NvbnN0IGU9dC5hY3RpdmVQbHVnaW5JZDt0aGlzLmRlZXBMaW5rZXIuc2V0UGx1Z2luSWQobnVsbD09PWUuY3VycmVudFZhbHVlPyIiOmUuY3VycmVudFZhbHVlLHtkZWZhdWx0VmFsdWU6IiIsdXNlTG9jYXRpb25SZXBsYWNlOm51bGw9PT1lLnByZXZpb3VzVmFsdWV8fGUuZmlyc3RDaGFuZ2V9KX19fUdaLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxHWikoZ2YoVFIpKX0sR1ouybVjbXA9c28oe3R5cGU6R1osc2VsZWN0b3JzOltbImhhc2gtc3RvcmFnZS1jb21wb25lbnQiXV0saW5wdXRzOnthY3RpdmVQbHVnaW5JZDoiYWN0aXZlUGx1Z2luSWQifSxvdXRwdXRzOntvblZhbHVlQ2hhbmdlOiJvblZhbHVlQ2hhbmdlIn0sZmVhdHVyZXM6W3FvXSxkZWNsczowLHZhcnM6MCx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7fSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKEdaLFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6Imhhc2gtc3RvcmFnZS1jb21wb25lbnQiLHRlbXBsYXRlOiIiLGNoYW5nZURldGVjdGlvbjpqbi5PblB1c2h9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpUUn1dfSkse2FjdGl2ZVBsdWdpbklkOlt7dHlwZTpSX31dLG9uVmFsdWVDaGFuZ2U6W3t0eXBlOkVffV19KTtjbGFzcyBZWntjb25zdHJ1Y3Rvcih0KXt0aGlzLnN0b3JlPXQsdGhpcy5hY3RpdmVQbHVnaW5JZCQ9dGhpcy5zdG9yZS5waXBlKHJTKGVUKSl9b25WYWx1ZUNoYW5nZWQodCl7c3dpdGNoKHQucHJvcCl7Y2FzZSBXWi5BQ1RJVkVfUExVR0lOOnRoaXMuc3RvcmUuZGlzcGF0Y2goWEUoe3BsdWdpbjp0LnZhbHVlfSkpfX19WVouybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFlaKShnZihpUykpfSxZWi7JtWNtcD1zbyh7dHlwZTpZWixzZWxlY3RvcnM6W1siaGFzaC1zdG9yYWdlIl1dLGRlY2xzOjIsdmFyczozLGNvbnN0czpbWzMsImFjdGl2ZVBsdWdpbklkIiwib25WYWx1ZUNoYW5nZSJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoQ2YoMCwiaGFzaC1zdG9yYWdlLWNvbXBvbmVudCIsMCksUmYoIm9uVmFsdWVDaGFuZ2UiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLm9uVmFsdWVDaGFuZ2VkKGUpfSkpLF95KDEsImFzeW5jIiksTWYoKSksMiZlJiZiZigiYWN0aXZlUGx1Z2luSWQiLEN5KDEsMSxuLmFjdGl2ZVBsdWdpbklkJCkpfSxkaXJlY3RpdmVzOltHWl0scGlwZXM6W1Z2XSxzdHlsZXM6WyJbX25naG9zdC0lQ09NUCVdIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgIH0iXSxjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoWVosW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoiaGFzaC1zdG9yYWdlIix0ZW1wbGF0ZTonXG4gICAgPGhhc2gtc3RvcmFnZS1jb21wb25lbnRcbiAgICAgIFthY3RpdmVQbHVnaW5JZF09ImFjdGl2ZVBsdWdpbklkJCB8IGFzeW5jIlxuICAgICAgKG9uVmFsdWVDaGFuZ2UpPSJvblZhbHVlQ2hhbmdlZCgkZXZlbnQpIlxuICAgID5cbiAgICA8L2hhc2gtc3RvcmFnZS1jb21wb25lbnQ+XG4gICcsc3R5bGVzOlsiXG4gICAgICA6aG9zdCB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICB9XG4gICAgIl0sY2hhbmdlRGV0ZWN0aW9uOmpuLk9uUHVzaH1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmlTfV19KSxudWxsKTtjb25zdCBxWj17c2V0RG9jdW1lbnRUaXRsZTpmdW5jdGlvbiBaWih0KXtkb2N1bWVudC50aXRsZT10fX07Y2xhc3MgWFp7bmdPbkNoYW5nZXModCl7dC50aXRsZSYmcVouc2V0RG9jdW1lbnRUaXRsZSh0LnRpdGxlLmN1cnJlbnRWYWx1ZSl9fVhaLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxYWil9LFhaLsm1Y21wPXNvKHt0eXBlOlhaLHNlbGVjdG9yczpbWyJwYWdlLXRpdGxlLWNvbXBvbmVudCJdXSxpbnB1dHM6e3RpdGxlOiJ0aXRsZSJ9LGZlYXR1cmVzOltxb10sZGVjbHM6MCx2YXJzOjAsdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pe30sZW5jYXBzdWxhdGlvbjoyLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihYWixbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJwYWdlLXRpdGxlLWNvbXBvbmVudCIsdGVtcGxhdGU6IiIsY2hhbmdlRGV0ZWN0aW9uOmpuLk9uUHVzaH1dfV0sbnVsbCx7dGl0bGU6W3t0eXBlOlJffV19KTtjb25zdCBLWj0iVGVuc29yQm9hcmQiO2NsYXNzIEpae2NvbnN0cnVjdG9yKHQsZSl7dGhpcy5zdG9yZT10LHRoaXMuY3VzdG9tQnJhbmROYW1lPWUsdGhpcy5nZXRFeHBlcmltZW50SWQkPXRoaXMuc3RvcmUuc2VsZWN0KHhSKS5waXBlKFZ0KCh0PT5udWxsPT10P3ZvaWQgMDp0WzBdKSkpLHRoaXMuZXhwZXJpbWVudE5hbWUkPXRoaXMuZ2V0RXhwZXJpbWVudElkJC5waXBlKHVlKEJvb2xlYW4pLCR0KCh0PT50aGlzLnN0b3JlLnNlbGVjdChxVCx7ZXhwZXJpbWVudElkOnR9KSkpLFZ0KCh0PT50P3QubmFtZTpudWxsKSkpLHRoaXMudGl0bGUkPXRoaXMuc3RvcmUuc2VsZWN0KG9UKS5waXBlKF9lKHRoaXMuc3RvcmUuc2VsZWN0KE1SKSx0aGlzLmV4cGVyaW1lbnROYW1lJCksVnQoKChbdCxlLG5dKT0+e2NvbnN0IG89dGhpcy5jdXN0b21CcmFuZE5hbWV8fEtaO3JldHVybiB0LndpbmRvd190aXRsZT90LndpbmRvd190aXRsZTplPT09X0QuRVhQRVJJTUVOVCYmbj9gJHtufSAtICR7b31gOm99KSksQmUodGhpcy5jdXN0b21CcmFuZE5hbWV8fEtaKSx3ZSgpKX19SlouybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEpaKShnZihpUyksZ2YoQkUsOCkpfSxKWi7JtWNtcD1zbyh7dHlwZTpKWixzZWxlY3RvcnM6W1sicGFnZS10aXRsZSJdXSxkZWNsczoyLHZhcnM6Myxjb25zdHM6W1szLCJ0aXRsZSJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYodmYoMCwicGFnZS10aXRsZS1jb21wb25lbnQiLDApLF95KDEsImFzeW5jIikpLDImZSYmYmYoInRpdGxlIixDeSgxLDEsbi50aXRsZSQpKX0sZGlyZWN0aXZlczpbWFpdLHBpcGVzOltWdl0sc3R5bGVzOlsiW19uZ2hvc3QtJUNPTVAlXSB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICB9Il0sY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKEpaLFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6InBhZ2UtdGl0bGUiLHRlbXBsYXRlOidcbiAgICA8cGFnZS10aXRsZS1jb21wb25lbnQgW3RpdGxlXT0idGl0bGUkIHwgYXN5bmMiPjwvcGFnZS10aXRsZS1jb21wb25lbnQ+XG4gICcsc3R5bGVzOlsiXG4gICAgICA6aG9zdCB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICB9XG4gICAgIl0sY2hhbmdlRGV0ZWN0aW9uOmpuLk9uUHVzaH1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmlTfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W0JFXX1dfV19KSxudWxsKTtjbGFzcyBRWntjb25zdHJ1Y3Rvcih0KXt0aGlzLnN0b3JlPXQsdGhpcy5uZ1Vuc3Vic2NyaWJlPW5ldyBCLHRoaXMuZ2V0UGFnZVNpemUkPXRoaXMuc3RvcmUucGlwZShyUyhoSSkpLHRoaXMucGFnaW5hdGVkVmlld1N0b3JlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRmLXBhZ2luYXRlZC12aWV3LXN0b3JlIikudGZfcGFnaW5hdGVkX3ZpZXd9bmdPbkluaXQoKXt0aGlzLmdldFBhZ2VTaXplJC5waXBlKGplKHRoaXMubmdVbnN1YnNjcmliZSksd2UoKSkuc3Vic2NyaWJlKCh0PT57dGhpcy5wYWdpbmF0ZWRWaWV3U3RvcmUuc2V0TGltaXQodCl9KSl9bmdPbkRlc3Ryb3koKXt0aGlzLm5nVW5zdWJzY3JpYmUubmV4dCgpLHRoaXMubmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpfX1RWi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8UVopKGdmKGlTKSl9LFFaLsm1Y21wPXNvKHt0eXBlOlFaLHNlbGVjdG9yczpbWyJzZXR0aW5ncy1wb2x5bWVyLWludGVyb3AiXV0sZGVjbHM6MCx2YXJzOjAsdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pe30sZW5jYXBzdWxhdGlvbjoyLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihRWixbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJzZXR0aW5ncy1wb2x5bWVyLWludGVyb3AiLHRlbXBsYXRlOiIiLGNoYW5nZURldGVjdGlvbjpqbi5PblB1c2h9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTppU31dfSksbnVsbCk7Y2xhc3MgJFp7Y29uc3RydWN0b3IodCl7dC5zZWxlY3QoRkQpLnN1YnNjcmliZSgodD0+e2RvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnRvZ2dsZSgiZGFyay1tb2RlIix0KX0pKX19JFouybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fCRaKShnZihpUykpfSwkWi7JtWNtcD1zbyh7dHlwZTokWixzZWxlY3RvcnM6W1siZGFyay1tb2RlLXN1cHBvcnRlciJdXSxkZWNsczowLHZhcnM6MCx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7fSxzdHlsZXM6WyJbX25naG9zdC0lQ09NUCVdIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgIH0iXSxjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoJFosW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoiZGFyay1tb2RlLXN1cHBvcnRlciIsdGVtcGxhdGU6IiIsc3R5bGVzOlsiXG4gICAgICA6aG9zdCB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICB9XG4gICAgIl0sY2hhbmdlRGV0ZWN0aW9uOmpuLk9uUHVzaH1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmlTfV19KSxudWxsKTtjbGFzcyB0WHtjb25zdHJ1Y3Rvcih0KXt0aGlzLnZjUmVmPXR9fXRYLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHx0WCkoZ2YoRmIpKX0sdFguybVjbXA9c28oe3R5cGU6dFgsc2VsZWN0b3JzOltbInRiLXdlYmFwcCJdXSxkZWNsczo4LHZhcnM6MCx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYodmYoMCwiYXBwLWhlYWRlciIpLENmKDEsIm1haW4iKSx2ZigyLCJyb3V0ZXItb3V0bGV0IiksTWYoKSx2ZigzLCJhbGVydC1zbmFja2JhciIpLHZmKDQsImhhc2gtc3RvcmFnZSIpLHZmKDUsInBhZ2UtdGl0bGUiKSx2Zig2LCJzZXR0aW5ncy1wb2x5bWVyLWludGVyb3AiKSx2Zig3LCJkYXJrLW1vZGUtc3VwcG9ydGVyIikpfSxkaXJlY3RpdmVzOltCWixVWixJVixZWixKWixRWiwkWl0sc3R5bGVzOlsnLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjEycHg7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtYmFkZ2Utc21hbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6OXB4fS5tYXQtYmFkZ2UtbGFyZ2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweH0ubWF0LWgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1oZWFkbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMjRweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNnB4LzI4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNXB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC44MykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtaDZbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuNjcpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWJvZHktc3Ryb25nW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjAgMCAxMnB4fS5tYXQtc21hbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDEycHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjMwMCAxMTJweC8xMTJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDVlbTttYXJnaW46MCAwIDU2cHh9Lm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDU2cHgvNTZweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDJlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDQ1cHgvNDhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDA1ZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAzNHB4LzQwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDY0cHh9Lm1hdC1ib3R0b20tc2hlZXQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhcmQtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjIwcHh9Lm1hdC1jYXJkLXN1YnRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXJkLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNoZWNrYm94LWxheW91dFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoyNHB4fS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtdHJhaWxpbmctaWNvbi5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MThweH0ubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1oZWFkZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9vdGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2FsZW5kYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhbGVuZGFyLWJvZHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxM3B4fS5tYXQtY2FsZW5kYXItYm9keS1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FsZW5kYXItcGVyaW9kLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRoW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo0MDB9Lm1hdC1kaWFsb2ctdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDoxLjEyNTtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE1MCU7bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS41ZW07d2lkdGg6MS41ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNWVtIDA7Ym9yZGVyLXRvcDouODQzNzVlbSBzb2xpZCB0cmFuc3BhcmVudH0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTAuODQzNzVlbTtwYWRkaW5nLXRvcDouODQzNzVlbX0ubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo3NSU7bWFyZ2luLXRvcDouNjY2NjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjc5MTY2NjY2NjdlbSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNDM3NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMnB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTJlbSkgc2NhbGUoMC43NSl9fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi4yNWVtIDAgLjc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMDkzNzVlbTttYXJnaW4tdG9wOi0wLjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjFlbSAwIDFlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS44NDM3NWVtO21hcmdpbi10b3A6LTAuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9aW5wdXQubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LTAuMDYyNWVtfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweH0ubWF0LXJhZGlvLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW19Lm1hdC1zbGlkZS10b2dnbGUtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXN0ZXAtc3ViLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDpub3JtYWx9Lm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRhYi1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowfS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMHB4O3BhZGRpbmctdG9wOjZweDtwYWRkaW5nLWJvdHRvbTo2cHh9Lm1hdC10b29sdGlwLWhhbmRzZXRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHh9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1zaW1wbGUtc25hY2tiYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjE7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo1MDB9Lm1hdC10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW5lc3RlZC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweH0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmVtcHR5KXt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKX0ubWF0LXJpcHBsZS5tYXQtcmlwcGxlLXVuYm91bmRlZFtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6dmlzaWJsZX0ubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItcmFkaXVzOjUwJTtwb2ludGVyLWV2ZW50czpub25lO3RyYW5zaXRpb246b3BhY2l0eSx0cmFuc2Zvcm0gMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO3RyYW5zZm9ybTpzY2FsZSgwKX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6bm9uZX0uY2RrLXZpc3VhbGx5LWhpZGRlbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjA7Y2xpcDpyZWN0KDAgMCAwIDApO2hlaWdodDoxcHg7bWFyZ2luOi0xcHg7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxcHg7d2hpdGUtc3BhY2U6bm93cmFwO291dGxpbmU6MDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb2ludGVyLWV2ZW50czpub25lO3RvcDowO2xlZnQ6MDtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXTplbXB0eXtkaXNwbGF5Om5vbmV9LmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1wYW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtwb2ludGVyLWV2ZW50czphdXRvO2JveC1zaXppbmc6Ym9yZGVyLWJveDt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O21heC13aWR0aDoxMDAlO21heC1oZWlnaHQ6MTAwJX0uY2RrLW92ZXJsYXktYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO2xlZnQ6MDtyaWdodDowO3otaW5kZXg6MTAwMDtwb2ludGVyLWV2ZW50czphdXRvOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudDt0cmFuc2l0aW9uOm9wYWNpdHkgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSk7b3BhY2l0eTowfS5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjF9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAuY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTouNn0uY2RrLW92ZXJsYXktZGFyay1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4zMil9LmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MH0uY2RrLW92ZXJsYXktY29ubmVjdGVkLXBvc2l0aW9uLWJvdW5kaW5nLWJveFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bWluLXdpZHRoOjFweDttaW4taGVpZ2h0OjFweH0uY2RrLWdsb2JhbC1zY3JvbGxibG9ja1tfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7d2lkdGg6MTAwJTtvdmVyZmxvdy15OnNjcm9sbH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemVbX25nY29udGVudC0lQ09NUCVde3Jlc2l6ZTpub25lfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmdbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OmF1dG8gIWltcG9ydGFudDtvdmVyZmxvdzpoaWRkZW4gIWltcG9ydGFudH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nLWZpcmVmb3hbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OjAgIWltcG9ydGFudH1Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0e31Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZHt9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbHthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnQgMHMgMW1zfS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCg6LXdlYmtpdC1hdXRvZmlsbCl7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZCAwcyAxbXN9Lm1hdC1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtbWRjLWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9aHRtbFtfbmdjb250ZW50LSVDT01QJV0sIGJvZHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90byxzYW5zLXNlcmlmO2hlaWdodDoxMDAlO21hcmdpbjowO3BhZGRpbmc6MH1bX25naG9zdC0lQ09NUCVde2JhY2tncm91bmQ6I2Y1ZjVmNTtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2hlaWdodDoxMDAlfWFwcC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MCAxcHggM3B4IDNweCByZ2JhKDAsMCwwLC4yNSk7ZmxleDowIDA7ei1pbmRleDoxfWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIGFwcC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICBhcHAtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjAgMXB4IDNweCAzcHggcmdiYSgyNTUsMjU1LDI1NSwuMSl9bWFpbltfbmdjb250ZW50LSVDT01QJV17ZmxleC1ncm93OjE7b3ZlcmZsb3c6YXV0b30nXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIodFgsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoidGItd2ViYXBwIix0ZW1wbGF0ZVVybDoiLi9hcHBfY29udGFpbmVyLm5nLmh0bWwiLHN0eWxlVXJsczpbIi4vYXBwX2NvbnRhaW5lci5jc3MiXX1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOkZifV19KSxudWxsKTtjbGFzcyBlWHtjb25zdHJ1Y3Rvcih0LGUsbil7dGhpcy5zdG9yZT10LHRoaXMubG9jYXRpb249ZSx0aGlzLmFwcFJvb3RQcm92aWRlcj1uLHRoaXMucGF0aG5hbWU9bnVsbCx0aGlzLnJlc2V0TmFtZXNwYWNlZFN0YXRlPSExfWhhbmRsZUNsaWNrKHQpeyF0aGlzLnBhdGhuYW1lfHx0LmN0cmxLZXl8fHQubWV0YUtleXx8KHQucHJldmVudERlZmF1bHQoKSx0LnN0b3BQcm9wYWdhdGlvbigpLHRoaXMuc3RvcmUuZGlzcGF0Y2goUUQoe3BhdGhuYW1lOnRoaXMucGF0aG5hbWUscmVzZXROYW1lc3BhY2VkU3RhdGU6dGhpcy5yZXNldE5hbWVzcGFjZWRTdGF0ZX0pKSl9Z2V0IGhyZWYoKXtyZXR1cm4gdGhpcy5wYXRobmFtZT90aGlzLmFwcFJvb3RQcm92aWRlci5nZXRBYnNQYXRobmFtZVdpdGhBcHBSb290KHRoaXMubG9jYXRpb24uZ2V0UmVzb2x2ZWRQYXRoKHRoaXMucGF0aG5hbWUpKTpudWxsfXNldCByb3V0ZXJMaW5rKHQpe2lmKCJzdHJpbmciPT10eXBlb2YgdCYmKHQ9W3RdKSwwPT09dC5sZW5ndGgpdGhyb3cgbmV3IFJhbmdlRXJyb3IoInJvdXRlTGluayBzaG91bGQgaGF2ZSBwcm9wZXIgcGF0aC4gR290IG5vdGhpbmcuIik7Y29uc3QgZT1bLi4udF0uam9pbigiLyIpO3RoaXMucGF0aG5hbWU9ZS5lbmRzV2l0aCgiLyIpP2U6ZSsiLyJ9fWVYLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxlWCkoZ2YoaVMpLGdmKFBEKSxnZih3RCkpfSxlWC7JtWRpcj1obyh7dHlwZTplWCxzZWxlY3RvcnM6W1siYSIsInJvdXRlckxpbmsiLCIiXV0saG9zdFZhcnM6MSxob3N0QmluZGluZ3M6ZnVuY3Rpb24gdChlLG4pezEmZSYmUmYoImNsaWNrIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5oYW5kbGVDbGljayhlKX0pKSwyJmUmJnltKCJocmVmIixuLmhyZWYsWHMpfSxpbnB1dHM6e3JvdXRlckxpbms6InJvdXRlckxpbmsiLHJlc2V0TmFtZXNwYWNlZFN0YXRlOiJyZXNldE5hbWVzcGFjZWRTdGF0ZSJ9fSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihlWCxbe3R5cGU6a18sYXJnczpbe3NlbGVjdG9yOiJhW3JvdXRlckxpbmtdIn1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmlTfSx7dHlwZTpQRH0se3R5cGU6d0R9XX0pLHtoYW5kbGVDbGljazpbe3R5cGU6VF8sYXJnczpbImNsaWNrIixbIiRldmVudCJdXX1dLGhyZWY6W3t0eXBlOkFfLGFyZ3M6WyJhdHRyLmhyZWYiXX1dLHJvdXRlckxpbms6W3t0eXBlOlJffV0scmVzZXROYW1lc3BhY2VkU3RhdGU6W3t0eXBlOlJffV19KTtjbGFzcyBuWHt9blguybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fG5YKX0sblguybVtb2Q9Zm8oe3R5cGU6blh9KSxuWC7JtWluaj1Ebih7aW1wb3J0czpbW3J4LERELFNELGZSXV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKG5YLFt7dHlwZTpMXyxhcmdzOlt7aW1wb3J0czpbcngsREQsU0QsZlJdLGV4cG9ydHM6W1VaLGVYXSxkZWNsYXJhdGlvbnM6W1VaLGpaLGVYXX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnVvKG5YLHtkZWNsYXJhdGlvbnM6W1VaLGpaLGVYXSxpbXBvcnRzOltyeCxERCxTRCxmUl0sZXhwb3J0czpbVVosZVhdfSk7Y2xhc3Mgb1h7fW9YLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxvWCl9LG9YLsm1bW9kPWZvKHt0eXBlOm9YfSksb1guybVpbmo9RG4oe30pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIob1gsW3t0eXBlOkxfLGFyZ3M6W3tkZWNsYXJhdGlvbnM6WyRaXSxleHBvcnRzOlskWl19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZ1byhvWCx7ZGVjbGFyYXRpb25zOlskWl0sZXhwb3J0czpbJFpdfSk7Y2xhc3MgaVh7fWlYLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxpWCl9LGlYLsm1bW9kPWZvKHt0eXBlOmlYfSksaVguybVpbmo9RG4oe3Byb3ZpZGVyczpbe3Byb3ZpZGU6VFIsdXNlQ2xhc3M6QVJ9XX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoaVgsW3t0eXBlOkxfLGFyZ3M6W3twcm92aWRlcnM6W3twcm92aWRlOlRSLHVzZUNsYXNzOkFSfV19XX1dLG51bGwsbnVsbCk7Y2xhc3MgYVh7fWFYLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxhWCl9LGFYLsm1bW9kPWZvKHt0eXBlOmFYfSksYVguybVpbmo9RG4oe2ltcG9ydHM6W1tyeCxpWF1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihhWCxbe3R5cGU6TF8sYXJnczpbe2RlY2xhcmF0aW9uczpbWVosR1pdLGV4cG9ydHM6W1laXSxpbXBvcnRzOltyeCxpWF19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZ1byhhWCx7ZGVjbGFyYXRpb25zOltZWixHWl0saW1wb3J0czpbcngsaVhdLGV4cG9ydHM6W1laXX0pO2NsYXNzIHJYe31yWC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8clgpfSxyWC7JtW1vZD1mbyh7dHlwZTpyWH0pLHJYLsm1aW5qPURuKHtpbXBvcnRzOltbcnhdXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoclgsW3t0eXBlOkxfLGFyZ3M6W3tkZWNsYXJhdGlvbnM6W0paLFhaXSxleHBvcnRzOltKWl0saW1wb3J0czpbcnhdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmdW8oclgse2RlY2xhcmF0aW9uczpbSlosWFpdLGltcG9ydHM6W3J4XSxleHBvcnRzOltKWl19KTtjb25zdCBzWD17aWQ6Q0QsbmFtZToiIixzdGFydF90aW1lOjB9LGxYPVZTKHtleHBlcmltZW50TWFwOntbc1guaWRdOnNYfX0pO2Z1bmN0aW9uIGNYKHQsZSl7cmV0dXJuIEdrKHtkYXRhOmxYfSkodCxlKX1jbGFzcyBkWHt9ZFguybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGRYKX0sZFguybVtb2Q9Zm8oe3R5cGU6ZFh9KSxkWC7JtWluaj1Ebih7aW1wb3J0czpbW1RTLmZvckZlYXR1cmUoR1QsY1gpXV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKGRYLFt7dHlwZTpMXyxhcmdzOlt7aW1wb3J0czpbVFMuZm9yRmVhdHVyZShHVCxjWCldfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmdW8oZFgse2ltcG9ydHM6W0FTXX0pO2NsYXNzIHBYe31mdW5jdGlvbiBtWCgpe3JldHVybiBiUyh1SSwodD0+KHthdXRvUmVsb2FkOnR9KSkpfWZ1bmN0aW9uIGZYKCl7cmV0dXJuIGJTKGdJLCh0PT4oe2F1dG9SZWxvYWRQZXJpb2RJbk1zOnR9KSkpfWZ1bmN0aW9uIHVYKCl7cmV0dXJuIGJTKGhJLCh0PT4oe3BhZ2VTaXplOnR9KSkpfXBYLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxwWCl9LHBYLsm1bW9kPWZvKHt0eXBlOnBYfSkscFguybVpbmo9RG4oe2ltcG9ydHM6W1tyeCx0WSxlWSxJTCxNWixucSx2cSxUWl1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihwWCxbe3R5cGU6TF8sYXJnczpbe2RlY2xhcmF0aW9uczpbRlosTFosSVosSFosUVpdLGV4cG9ydHM6W0ZaLExaLEhaLFFaXSxlbnRyeUNvbXBvbmVudHM6W0haXSxpbXBvcnRzOltyeCx0WSxlWSxJTCxNWixucSx2cSxUWl19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZ1byhwWCx7ZGVjbGFyYXRpb25zOltGWixMWixJWixIWixRWl0saW1wb3J0czpbcngsdFksZVksSUwsTVosbnEsdnEsVFpdLGV4cG9ydHM6W0ZaLExaLEhaLFFaXX0pO2NsYXNzIGdYe31nWC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8Z1gpfSxnWC7JtW1vZD1mbyh7dHlwZTpnWH0pLGdYLsm1aW5qPURuKHtpbXBvcnRzOltbVFMuZm9yRmVhdHVyZShkSSxzWikselIuZGVmaW5lR2xvYmFsU2V0dGluZyhtWCkselIuZGVmaW5lR2xvYmFsU2V0dGluZyhmWCkselIuZGVmaW5lR2xvYmFsU2V0dGluZyh1WCldLHBYXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoZ1gsW3t0eXBlOkxfLGFyZ3M6W3tleHBvcnRzOltwWF0saW1wb3J0czpbVFMuZm9yRmVhdHVyZShkSSxzWikselIuZGVmaW5lR2xvYmFsU2V0dGluZyhtWCkselIuZGVmaW5lR2xvYmFsU2V0dGluZyhmWCkselIuZGVmaW5lR2xvYmFsU2V0dGluZyh1WCldfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmdW8oZ1gse2ltcG9ydHM6W0FTLHpSLHpSLHpSXSxleHBvcnRzOltwWF19KTtjbGFzcyBoWHt9aFguybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGhYKX0saFguybVtb2Q9Zm8oe3R5cGU6aFh9KSxoWC7JtWluaj1Ebih7cHJvdmlkZXJzOlt7cHJvdmlkZToid2luZG93Iix1c2VWYWx1ZTp3aW5kb3d9XSxpbXBvcnRzOltbc3EscngsSUwsbnEsdnFdXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoaFgsW3t0eXBlOkxfLGFyZ3M6W3tkZWNsYXJhdGlvbnM6W1NxLHhxLFBxXSxleHBvcnRzOltTcV0sZW50cnlDb21wb25lbnRzOltQcV0saW1wb3J0czpbc3EscngsSUwsbnEsdnFdLHByb3ZpZGVyczpbe3Byb3ZpZGU6IndpbmRvdyIsdXNlVmFsdWU6d2luZG93fV19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZ1byhoWCx7ZGVjbGFyYXRpb25zOltTcSx4cSxQcV0saW1wb3J0czpbc3EscngsSUwsbnEsdnFdLGV4cG9ydHM6W1NxXX0pO2NsYXNzIGJYe31iWC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8YlgpfSxiWC7JtW1vZD1mbyh7dHlwZTpiWH0pLGJYLsm1aW5qPURuKHtwcm92aWRlcnM6W10saW1wb3J0czpbW0lMLHZxLEhqLFVWLFBZLFhxLHJ4LGRULGdYLGhYXV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKGJYLFt7dHlwZTpMXyxhcmdzOlt7ZGVjbGFyYXRpb25zOlt0WixlWixCWixSWSxUWSxvWl0sZXhwb3J0czpbZVosQlosVFksb1pdLHByb3ZpZGVyczpbXSxpbXBvcnRzOltJTCx2cSxIaixVVixQWSxYcSxyeCxkVCxnWCxoWF19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZ1byhiWCx7ZGVjbGFyYXRpb25zOlt0WixlWixCWixSWSxUWSxvWl0saW1wb3J0czpbSUwsdnEsSGosVVYsUFksWHEscngsZFQsZ1gsaFhdLGV4cG9ydHM6W2VaLEJaLFRZLG9aXX0pO2NsYXNzIHlYe2NvbnN0cnVjdG9yKHQsZSl7Y29uc3Qgbj10LmJ5cGFzc1NlY3VyaXR5VHJ1c3RSZXNvdXJjZVVybCgiLi9pY29uX2J1bmRsZS5zdmciKTtlLmFkZFN2Z0ljb25TZXQobil9fXlYLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHx5WCkoVHIoZU8pLFRyKG1xKSl9LHlYLsm1bW9kPWZvKHt0eXBlOnlYfSkseVguybVpbmo9RG4oe2ltcG9ydHM6W1t2cV1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYih5WCxbe3R5cGU6TF8sYXJnczpbe2ltcG9ydHM6W3ZxXX1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmVPfSx7dHlwZTptcX1dfSksbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZ1byh5WCx7aW1wb3J0czpbdnFdfSk7Y29uc3QgX1g9bmV3IGVyKCJbcGx1Z2luc10gUGx1Z2luIHJlZ2lzdHJ5IGNvbmZpZyIpLENYPW5ldyBNYXA7Y2xhc3MgTVh7Y29uc3RydWN0b3IodCl7aWYoIXQpcmV0dXJuO2NvbnN0IGU9bmV3IFNldCh0Lm1hcCgodD0+dC5wbHVnaW5OYW1lKSkpO2NvbnNvbGUuYXNzZXJ0KGUuc2l6ZT09PXQubGVuZ3RoLCJDYW5ub3QgcmVnaXN0ZXIgdGhlIHNhbWUgcGx1Z2luIG11bHRpcGxlIHRpbWVzLiIpO2Zvcihjb25zdCBlIG9mIHQpe2NvbnN0e3BsdWdpbk5hbWU6dCxjb21wb25lbnRDbGFzczpufT1lO0NYLnNldCh0LG4pfX1zdGF0aWMgZm9yUGx1Z2luKHQsZSl7cmV0dXJue25nTW9kdWxlOk1YLHByb3ZpZGVyczpbe3Byb3ZpZGU6X1gsbXVsdGk6ITAsdXNlVmFsdWU6e3BsdWdpbk5hbWU6dCxjb21wb25lbnRDbGFzczplfX1dfX1nZXRDb21wb25lbnQodCl7cmV0dXJuIENYLmdldCh0KXx8bnVsbH19TVguybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fE1YKShUcihfWCw4KSl9LE1YLsm1bW9kPWZvKHt0eXBlOk1YfSksTVguybVpbmo9RG4oe30pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoTVgsW3t0eXBlOkxfLGFyZ3M6W3t9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W19YXX1dfV19KSxudWxsKTtjbGFzcyB2WHtjb25zdHJ1Y3Rvcih0KXt0aGlzLmh0dHA9dCx0aGlzLmh0dHBQYXRoUHJlZml4PSJkYXRhL3BsdWdpbi9kZWJ1Z2dlci12MiJ9ZmV0Y2hSdW5zKCl7cmV0dXJuIHRoaXMuaHR0cC5nZXQodGhpcy5odHRwUGF0aFByZWZpeCsiL3J1bnMiKX1mZXRjaEV4ZWN1dGlvbkRpZ2VzdHModCxlLG4pe3JldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMuaHR0cFBhdGhQcmVmaXgrIi9leGVjdXRpb24vZGlnZXN0cyIse3BhcmFtczp7cnVuOnQsYmVnaW46U3RyaW5nKGUpLGVuZDpTdHJpbmcobil9fSl9ZmV0Y2hFeGVjdXRpb25EYXRhKHQsZSxuKXtyZXR1cm4gdGhpcy5odHRwLmdldCh0aGlzLmh0dHBQYXRoUHJlZml4KyIvZXhlY3V0aW9uL2RhdGEiLHtwYXJhbXM6e3J1bjp0LGJlZ2luOlN0cmluZyhlKSxlbmQ6U3RyaW5nKG4pfX0pfWZldGNoR3JhcGhFeGVjdXRpb25EaWdlc3RzKHQsZSxuLG8pe2lmKHZvaWQgMCE9PW8pdGhyb3cgbmV3IEVycm9yKCJ0cmFjZV9pZCBpcyBub3QgaW1wbGVtZW50ZWQgZm9yIGZldGNoR3JhcGhFeGVjdXRpb25EaWdlc3RzKCkgeWV0Iik7cmV0dXJuIHRoaXMuaHR0cC5nZXQodGhpcy5odHRwUGF0aFByZWZpeCsiL2dyYXBoX2V4ZWN1dGlvbi9kaWdlc3RzIix7cGFyYW1zOntydW46dCxiZWdpbjpTdHJpbmcoZSksZW5kOlN0cmluZyhuKX19KX1mZXRjaEdyYXBoRXhlY3V0aW9uRGF0YSh0LGUsbixvKXtpZih2b2lkIDAhPT1vKXRocm93IG5ldyBFcnJvcigidHJhY2VfaWQgaXMgbm90IGltcGxlbWVudGVkIGZvciBmZXRjaEdyYXBoRXhlY3V0aW9uRGF0YSgpIHlldCIpO3JldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMuaHR0cFBhdGhQcmVmaXgrIi9ncmFwaF9leGVjdXRpb24vZGF0YSIse3BhcmFtczp7cnVuOnQsYmVnaW46U3RyaW5nKGUpLGVuZDpTdHJpbmcobil9fSl9ZmV0Y2hHcmFwaE9wSW5mbyh0LGUsbil7cmV0dXJuIHRoaXMuaHR0cC5nZXQodGhpcy5odHRwUGF0aFByZWZpeCsiL2dyYXBocy9vcF9pbmZvIix7cGFyYW1zOntydW46dCxncmFwaF9pZDplLG9wX25hbWU6bn19KX1mZXRjaFNvdXJjZUZpbGVMaXN0KHQpe3JldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMuaHR0cFBhdGhQcmVmaXgrIi9zb3VyY2VfZmlsZXMvbGlzdCIse3BhcmFtczp7cnVuOnR9fSl9ZmV0Y2hTb3VyY2VGaWxlKHQsZSl7cmV0dXJuIHRoaXMuaHR0cC5nZXQodGhpcy5odHRwUGF0aFByZWZpeCsiL3NvdXJjZV9maWxlcy9maWxlIix7cGFyYW1zOntydW46dCxpbmRleDpTdHJpbmcoZSl9fSl9ZmV0Y2hTdGFja0ZyYW1lcyh0LGUpe3JldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMuaHR0cFBhdGhQcmVmaXgrIi9zdGFja19mcmFtZXMvc3RhY2tfZnJhbWVzIix7cGFyYW1zOntydW46dCxzdGFja19mcmFtZV9pZHM6ZS5qb2luKCIsIil9fSkucGlwZShWdCgodD0+KHtzdGFja19mcmFtZXM6dC5zdGFja19mcmFtZXMubWFwKCh0PT4oZnVuY3Rpb24gZSh0KXtyZXR1cm57aG9zdF9uYW1lOnRbMF0sZmlsZV9wYXRoOnRbMV0sbGluZW5vOnRbMl0sZnVuY3Rpb25fbmFtZTp0WzNdfX0pKHQpKSl9KSkpKX1mZXRjaEFsZXJ0cyh0LGUsbixvKXtjb25zdCBpPXtydW46dCxiZWdpbjpTdHJpbmcoZSksZW5kOlN0cmluZyhuKX07cmV0dXJuIHZvaWQgMCE9PW8mJihpLmFsZXJ0X3R5cGU9byksdGhpcy5odHRwLmdldCh0aGlzLmh0dHBQYXRoUHJlZml4KyIvYWxlcnRzIix7cGFyYW1zOml9KX19dlguybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHZYKShUcihIRSkpfSx2WC7JtXByb3Y9U24oe3Rva2VuOnZYLGZhY3Rvcnk6dlguybVmYWN9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKHZYLFt7dHlwZTpVbX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpIRX1dfSksbnVsbCk7Y2xhc3MgeFh7fXhYLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHx4WCl9LHhYLsm1bW9kPWZvKHt0eXBlOnhYfSkseFguybVpbmo9RG4oe3Byb3ZpZGVyczpbdlhdLGltcG9ydHM6W1tGRV1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYih4WCxbe3R5cGU6TF8sYXJnczpbe2ltcG9ydHM6W0ZFXSxwcm92aWRlcnM6W3ZYXX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnVvKHhYLHtpbXBvcnRzOltGRV19KTtjbGFzcyBPWHt9T1guybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fE9YKX0sT1guybVjbXA9c28oe3R5cGU6T1gsc2VsZWN0b3JzOltbImluYWN0aXZlLWNvbXBvbmVudCJdXSxkZWNsczo1NCx2YXJzOjAsY29uc3RzOltbMSwiY29udGFpbmVyIl0sWzEsInRpdGxlIl0sWzEsImNvZGUiXSxbMSwiYXJnIl0sWzEsImV4aGliaXRzLWNvbnRhaW5lciJdLFsxLCJleGhpYml0Il0sWzEsInNjcmVlbnNob3QiXSxbInNyYyIsImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBVFlBQUFFMkNBWUFBQURydkw2cEFBQW95SHBVV0hSU1lYY2djSEp2Wm1sc1pTQjBlWEJsSUdWNGFXWUFBSGphclp4cGRoeTVjb1gvWXhWZUF1WmhPUmdDNTNnSFhyNi9pMkpyZW1xcm4rMVdpNlNLeFV3a0VIR0hRSURPL3VzL3Ivc1AvaHV0WlpkTDYzWFU2dmt2anp6aTVJdnVQLytOOXpINC9ENisvMUw5K2lyOC9Mcjc5bzNJNTZSM2ZyN1I1dWR6bUx4ZXZ2L0FYL2NJNitmWFhmLzZUdXhmRi9yNkJoZitqRUIzMXRmbngwSHlldnk4SHZMWGhZWjl2cWlqdHgrSHVyNHV0TC9lK0lieTlUZC9HOWJuay83dGZucWhNVXVuY0tNVW82V1EvUHVZUHlOSW43K1R2KzE5akx3djhOcE1LUVgzK2ZSMU1TYmtwOGY3NjdQM1AwN1FUNVA4MTFmdTE5bi85dFV2a3gvbjErdnBsN21zWDNQazYrKy9FY292cjZkdnQ0ay9oY08zRWNXZnYzRjd6UC95T0Y5Lzd6MzlYdnM4M2N5VkdhMWZFZlVtKzY4WjBoc1hVNTdlajFYK05QNFd2bTd2eitCUDk5TnZsdno0N1JkL2RoZ2hzaXJYaFJ4T21PRUdlNTkzMkF3eFI0dU56ekh1bU41clBiVTQ0azVhcDZ3LzRjYVdSanFwczI0N21tUE5jb3JmeGhMZWZjZTczdzZkTzUvQVcyUGdZbHJxdi8zai9xZHYvanQvM0wxYlV4UjgvelpYakNzcXJobUdWazRmZVJkTEVPN1h1cFUzd1gvOStWcCsvMFA4RUtxc1lIblQzSG5BNmRmbkVxdUU3N0dWM2pvbjNsZjQvRm5qNE5yNXVnQlR4TDBMZ3dtSkZmQTFwQkpxOEMzR0ZnTHoyRm1neWNoanluR3hBcUdVZUJoa3pDblY2RnJzVWZmbVoxcDQ3NDBsMXFpWHdTWVdvcVJLYm5WV2FMSllPUmZpcCtWT0RNMlNTaTZsMU5KS2QyV1VXVlBOdGRSYVd4WEl6WlphYnFYVjFscHZvODJlZXU2bDE5NTY3NlBQRVVjQ0E4dW9vNDAreHBnenVzbU5KdGVhdkgveXlvb3JyYnpLcXF1dHZzYWFtL0RaZVpkZGQ5dDlqejFQUE9rQUU2ZWVkdm9aWjFwd0JsSll0bUxWbW5VYk5pK3hkdFBOdDl4NjIrMTMzUGx0MWI1VzlWLysvQnVyRnI1V0xiNlYwdnZhdDFYalZkZmFYNWNJZ3BPaU5XUEZZZzZzZU5NS0VOQlJhK1o3eURscTViUm1ma1NTb2tRR1diUTI3Z1N0R0V1WUxjUnl3N2UxKzc1eS8yamRYT24vYU4zaW4xYk9hZW4rUDFiT3NYVC91bTYvV2JVam50dHZ4VDVacURuMWlleTdaWnk0M0k1eDFUTG50SmxhUzJYdUZYTUxhWmVRV3oyMXJucUJrOXZQTHQzSHhyZTZaNVlQbk1Na0hMOXlQYUhvUXIybWZPUHhFM2hmcGQwMTAyRnBrNTZ5TTQ2OVRyNjUzMVVZTFpjRy84NDhPN1JqM0xTc3VGZFk1dG8wbml1bGZYbmtsdkkrbnFRc0J3QmRmVzhtZGQ4V29tK3NaT285NTU3KzRvWWtLTDlsbmpaakp5RDVPSFZ6bTZXdVdjNWNaWmVUSnludnpmTzQyWWM2Um84UnJTR1NQbmxNUzIzbmNRbTFmSS9DeGFVZVRpM3dkZHNnd3RwMzdicHV5TVhhWWJKcnYxWUE3dVhUYWNiVDVkRGEzS3pEQ20weWY1VXhNMzNiNVFrOWhGMW40YVozU1JTRXMyOGZ6V0k2Vm1lSXlXeHM0MXErcmg3V09DMGFWekRpdUsvR1BCRVF3U21KQ09uK3hFUmFZOTdNMEViYnZoeml0bmF5b0xHRVBNSnN1MXBpa1FmZ05jdGw2WHNJMXRmTmxoMXozRzhvZHBLRndjTWh1eTZQNGxFVFFPSHVNNDJ5N0I3TlNDSU9UN3A5WHlZL0hPWDJRaUsxZlJaejFIWUVPWGlZZmtyTithUmx1L2hWZlIrUm1HUnR5VEk3blptb2ljZzcvdVp5RDhHOUR6azZFb05vc2FHUGFneDVaUktOY1laOFd6bjdpQXZQOWJQWktHWWtKdmNOUE5EMW5ZYytQQ1J3UFkxUXlIRHRhdFhjNnJYQ3hKZEpiWk9STWhlVmRMQithMHVSbXhJUmhjbGsyT2UwYm9jdzdpeUVKK1p6Vk1EeWdmK2R4TjJZZXNycnIvWFR5Tmk5V3BuNTlNMDAzV09OQlNZVkV2ZFY2QmF1SFBaS0RETldHeFZZS2JlNFdFY1NjR3crRTZFa3hzbkowQk05dEJLWXQ2QWJWejFPR2d1Z0lmZnZIRVQ2SkZvTDR3UWN6bUN5Szh6V1NLTWFod2ZIeUdHR2txWUdFTllCVG5PRGpNdGNaeEZZMmJZVmNBT1FJMklodDd1TnBTUkY5a1JDZENZWVBPVHJHeUEvVnJjdVltSGNYYStGblJseU9Zblp0VkRTM2p3T29kcHRTZkFrd1U4eU55NloxWGpBS2FCWXVaK3doYlVrRkFoYUEvUkpGdm8rUVFWYkF6Q3ViU2NGb3lka0pwTi9iaUhtSElIT3R3dWh0bmRPZTBtRXdRZkxHOGhSMHdnbEt4UkoyMkp4RTFDRGZONFRlcmRid0VER3lQVldkRHN0QUdPMkM4TGI2Qy9tUmdQTG1KaDRnS3JXenlTbWdmNEZGbGZ3ajVjSlVGRGtLa3dPa1hQbmNZMVpKZ0tQRVZhZ0c2blFvSlNJZGtzeGQ4VlFPMW15K1M0a21TMkZ4QllFVk5ZdWx5UWtZNUZRL2lFTWI2Y1FqdU9za3hKaWxGZ0RNb3p3OEtZQkdWRTZSaGl4MWhJOXQyOWtYeWRLWWp5ekxsWWhJMnVZeXBHQ2dlTTFBWGZlR3lBMDg5T2txSnRNZW1mMGkxd0hNRjYrZjI0a0pNaEZoRVhRaWpnQ0hiRU81QnY4dUMvNUltSWxCZ09NQ21vQ2cyUDdUYWlCM0FFQUJWdFJtSk1GSmlTenFHSEFLYTd1QVVPUEJwcDBCbVNRNGdVTklSTmZZUDFGVk56Yy9ENEFkMEdlb28wclV1MENZUkFCVHlxV3UyazRVQlR0dFhoV0l3Uk5yQXN4RGpKM3JkMVg3Y0lLaFd1VEtTQVNlU0JtSDBpWXl0V05zQWFoaHJtamxTV1ZXQ0x6MnpKRU9zWTlGUTZyd3ZiZWJWOGlrRXVrc2xseUxOQ05zemFBNktZSjN5MkxBY3kydVJnMHlaaFdtdWlVeGhVRUFMVlpJbFFQY01UVkd6UlBzdkxvbXhDY0Z4QWFyV1JDd3RhMUNFbTZUUGdRdXhpL2phNnYrQUFlR3NRaXF3MThJdHBZUjBKZU9Dd1dBVWxMWXVyMktzTUkwbzRuSU5YTjVUU1kraHhaOVhQNUZwZGNDbGVnc0VQSFlHSmg0VWoyVWxZZy9OcmxHbk1zSm1NalZMaFpZRVhUbG1JREZWbVd4SlNqb3pBT3hCY3EyWVBsVVU0M041SFUvWWFGdi8vczlFVUd0a3NtYXJvQWRPOExCWkVFWnlJbGRrSlE5VEJyUlI4Y1VyYklYb01QTWszTVNnT3pab0ZGN0JJWEZ6RllHcU5ackJ4NnlMTmVnRXNpbi9xR3VJS3VqaHpQSFRteVJIQ0VCcmxtRWpSOGU5VGxrT2RubGF0WlBhdW53d2ZqbmR3OEkxb1dkQWI3b3lNazQ5QmVxWEhQR01sbEVtT1VSc0FNTkV3MzVxaEFud0J5T2NnOGtET1RtMnY0WXdVaGdLSElCS1VGcENEUEMvcXh0UDU2VUdSc1lMOEZDUThnTFRtSW5wOHhLWkF1ZE1DSThzT1hmQU9vQUxrOERnK1Z6amFXcDBwSG5BZVI2Q2xtNWFUWmk1WFRGOW0vejE3RUoxbU1jb2w1QXgxTUplQU93Y3E5NEIyUlBRZ0pRaGpVSHVnVnBCeU1kQVc0QUdXVU9IUHRqZ0k4Ly9LeVhtM0tBd3h3MlFOUVFocVFOOEZTWC9ub0ViR1c1V0E5MGE3TXJYY0xXMlZvU2lJeUNla3ZySCtUeEtvRXpnMWkxMFpXMkRwRzhnellkM2Q0STI4bWdYVWhjcVJkajBOaWlYZVFCbVErUzVvQnExU1FDUFBGdk1JRXpHNUZvclNSK0loRzVCd2lPeXRtRTdDQXJKODdPVGlJTllSbHhLOXozNW1ZOTdvV0lnZm9aa2FnTVM3TTRJQUpjQzRkbnBtQmNvdUw2WWRIdHRla3VDQnNxdWVBSk9RMnF5bnhESHNzekFEWVRIREJCd2huSHBVdkNJY05tUFlKODJFSWdoSXpTTnd2aDYyL3FGc3doYWVUa0NJMFlDeFNIV3lYK3I5RFRtS0JUajBiOEVBNHMrNHNDeCtoYzUrUmFYdkRJb2hoWTdxMTVIeGo0SnBLWVdhR3lVRVV5RHFzUmt4MTY1M0Z1TUlXeFhWRnpFR1pDSTJUSlhoZFFoekFXNENwdUFIeVpSUm9OQVlML1JnUDI1RVJnWGtvOEdmZWltK1VRMGZBTGNLU2pPQ0JRYkx0OW43Z2F2Q1RzZkRjbmpTMTlBWlZpSG5NRm9NZjh4UkJHcWc1R0JEZmcrbDZ3MDFKd203MHUxdGdXRldnWENSekp2MlJOUTJHSjlZbmlMbXc1MFJySmtpTXlRVnAwb0pLa1RRcXNzMG5Kb1ltM0JVRi9FQzk2TVlFU1VORzgwenh6UkRBakd0b09MdXFkVitFMkVsZDZvSDVLS3JUbGZEMTJZVmZYdmoxTTg4Qmtac25DbGp5eG1JeVVGSzN5dG9OTFE4cXNVK0Uxc0I0SUZnMnVoOCtSQkloRDhrZVJEaHZ3UzB1RkFUMlUrYXBpcThObzFnRFZnWHJwZVVETTJGSWMwQ2V4OUMwcCtQQkw2SVJUYTRNK2Qyckt5ZEV5bnhnalIwQ2JrRWFNQWRWeXd1SnJMeGRzNDdzeFh6aVVnbG1GbjRsd0JrN0FkSGphSnNQYlMydXdHQU54b0JlMGFHUUY3QkdISGtVb2ljeFR3ZlJWRUVCQUlvaXY0cEZpZkR0S3c0bjRTMEdFOXdKZFZnUmJEdG5zOEI0aWFUS1FITVhKWUlXNnZJc1RLN2hpdURDblFGSkpneTloN2NHUzBHNXhGdkp2cWFFaDNJbVNiZEltYXFVYU0xeDM0cmNRUGZpSTlDSHZVYUZqdzNtc2hLQWd4aEg1c0hPQURrMEVGUEFxUjVWaGRmWDB2SnhaZ2VNRWk2YnFTTWZFUzlkdzdFYjVDTWxSN2tkN0RQSVY3SUJHN3RFQ1pmd0dnMEZIQWNUZmdqQTdiQSt0NkpNSTR4dGsrbkVUbHkvSUkyRGwwMVpNcjBVNG5VRG5TajlQVUg5S2prUDlWd0VKaTVoZ0crT3Q2QVlLdmlCYkNETU10UW1kc3prdXlvdGQrRXZzWDVRTUltUDZpWDRXWktPOVFlbE8yQVo4VHU1T0d3NVVBeWgrUVpSamd1WGJpQk5kRWwrR3c2S0M0MUVrbTlpT1pBODFhOVIwWnk0TGloQWhXMVdGb0lrc1J2RSt5aTF3Vmt6TjJSakJ0K3d0Z1NTS2d1NkczR3lBZU83aENsSFZvaGJvWWFpYkpCTlJ3QTI1bzdjUmxlU3UxYzJoY1ZsWmdGZzFwMHhtT1Myblp3TmFnR0lXQlhRRWlXRlk2N2dzRExaVFRDOE5WVkJ5SDl1TFdGM3lId01mVlJkMTBmSWxEQkRCYWFTNWxCUS9lN216alEyd0xaQzE3OFoyei8rcnZzZnZvM2dIWmkzeWRSVUtMczJTUkNNak9GRXZDcER5TWs0VHdEemVuVG80SHQ1dEJWNU51Z2FUTjk4WjRtMjhZZnBDV0pzZjg4a2ZTakk2Z1QrSWtUQ1NJQXl1cmJzQnRnNWVETmwvR1Z0d1dxMURaVjFnZytkamhDend6eXBOb04wUWI1K2dMWFV2dlFWMmdYMlJWa3RlVXlFVnBtcVFudkJKOCtHaWNkKzRUd2J1blFUMndENUJXdHlSQThOVkJ2UFF5RGpJOUFhcjhhQVJXQXNqdHh2Q0VWNEVHL2pzUkZIUWtRQ0UrZWgwVi9CS2tsRFhCWFFNT0ZYVVZwZ0ZtU25Za1p2cW03OGJrU0FkRVNuSTZUSnhiaE5QbkxqcGcyc0JKY2JNbWc5TTA5aU56eTI3Y0JGSFhaVThnUjl4M1NyYXNFaUJsYnd4U1g0SlcwWGtDbmtlSW1JeGJMRkgrVEU1Q21aS1dWRkdzY2pqM0V1NEFnRElZTFIyQ1VPcEEvS0RLMkxZdVk5ZXlxdXF5MzQ0RjVMQjhPbFM3eVBjV0xJN2kxRWRnRzFmbFZyT0ttR2pPOHBRV212Mm5pSU54Z3g0N1RRUXd2elhQd3dINkpRaW9zNDNCKzQrRDdnQlBCSTZYTlJyb0NJR2ZLb3FSSWNoRWc0aVFCaC9ZSmxuUFRLRUJsU0NIWURLaHhra29UR2ozaE93V3lSU3dnejNtODVTQmtmQ0ZBZWhWczJwb21YcWt6OVFFQTErQUlLQmZ6TlhjZ2NqVGtoTXE4S0NuNGtraGhBUnBYckRQQzh5Qnk4eEFGTVpCYk9aSmNxZjRkd3c1aWhDdEVoSkMzeENRWlBSb3ZiNTJhQU92Zm43ZkJLMFZjQmpWRndQSjJuSXc1c1Y3UVhERUpBRUVFb3ZnaHk0bW1OTWJKUzRhcllTcnFxL25zbVM0WDVneDhMZW42QUg3dE1CV2Jnc2ZkVzlSUGtoc2tOa0x3NVl0Y0JKY3kyYXF3TlQwR3VIZFlEcFRWeG1zd2ZBRlFCK29reElRTHc0N1YyOEpNMXhER2VjRkYzR2VyT3ljV0FCT011aUdnRUVLcHF5Sm1RYXdOSzZVT0tHbUlqRXJhUGVFOUd2YmhDWFRsM01wSjFOSW5maW9oQTJ5MWtQSzRSK1lJTTQ1MVFUdVhmQ0hPVkVaSmtQSlBVV2RJTE1HUkJySHlyN0FWNkhVNjRyVHBaS213dlZITVNiSGV4ZWd1Ym5VT3ZTT25FeHpFUVl5dDY4WkxIQ1NBTGlXK0NCQVZNanNZWm5zNldqYnZJQVVNV2NHTXlxd2tIa1FnZUVpcXF2ZkNvd1BpUmVjSlRkZVViZ2dMaU9vUUl5UzNUVkYzUXM3QWl2ak9mczkvU29tMjRDMHNhSVllTG9tem5WVUhIRURrejVxeDYrZXg1QXhlcVEvaFpnWkZ3dE5raCtjZzZUR050VFNWZjhOeS9FaDJvZytoRFBiK3FKdlluUU12R2NyRUVRN1Y0THllOXRodTRicHhEd0EyZ1ZWQkJYcFZuTXYvakoxWHJCODJEWnlGSVhpL0JlQkx1QlRXSFlxL0llaVFVb3dMOHhkam5xSnlBZEF0RitRRlFza1pqU0NWRHJVaTNoSEt6RElGZ3NqekNvOHJ3a3ozanF0VEh1RjNEaVdPRThheFlIdXlvU0lKVVZIWDU3clZBUTYzOVVCMXNUT3ZvU0RqR0JrNys2NHZOdFU4MGdJMkhHdWhBeE5yVlpzRUowbVBNSUJHS0NHeHlwZmRnTFM3UHRVT2RxZ2hweDhaam9WUjNOMlRocks1Q1krT0JDTG8xdnkvMVJTRXlEY2tXK0RmakIrOUlqZmpBbFM5QnVsNEVuYnhpNVNHWVF4ZUc5N1crcUN5Vzl2YUVrcis5K0U4Ly9lMUhCYnZ1NjZkYlRLbytCRlJ4cmR0dlpCQjhwdklNTVlrNlJHYUdxKzJkRmpzcVRvVm5ySStzWFJmVjE0aUZHQkZ6cXQwZTZkTktsdGpXcm9CQzhFck5HUUJ6dURzMGIzRDAxZzVFT3BYcHFxck40TFFyVjNmaUNvS2lvM3VnUmtnVTBUb0FjOUlyUkJGWnNpelBnek1XOHhUVktyQTJrSTU4SHNhNkU1a1dyMHNKc0FocnFCb0N2MGtoSkhTV2FvbS9HMWw0U3ZQb1ZjVUpXWHVGSmdFWUdmQlV4TVpma2grZm04WXowb2g0TEFoY29rSkpQV21URVBDejEyNnFhbzNaZ3lhRVFCeXd6Q0lFbmZhMnQwcFI4QXlhUEwzU2tYUXljcnFYbXlLWWx5T3d3cGZvWTc1R09hSkFtREVZdmdGZEx5U3V3OTVGV0VGVnRneUt4YXpCTFBUOGxtYkU2U0hyUzBoZVZYU2dIWW1lc1FZcklhako1dkZZVnNiTC9ZNkVZWnA0eHVhS2VSRW1hQ1pCbnlsODhHYWtZekR1Yzg2SThQQ0FYQkdWYm5obUtpZzlxeHl6bkJtQVBCSGpxRmtUbXNCNVZzaUoxeVF5WmNaaE9TZ1RFSUFXeUhRVmZ4b3d3a3dEV0VBMHN1NG13SVhVVEhQQ21vQ3RxclJra3JnS0xESTVHV0FUeHN0UGhxT1hWWkJDN1Rpc1FZQitONmtFWlJ0TEtoUkVScU8vRm9NbGdRRThucFh3dy9zeE5pZ1E5cTRxeXV3bG1FWW1abm1SSHNsOU1rZENTK1VWeEwzMkV1NitNQ0wzYkNRSElRajFRYVg0aEE1dXBKTHhVRUhpRjRhdXpLMDI2Z3hGempLRGc3V2NqRE1uNDdSWmh0c2srdkYzQ1AyTDVnQ3A0WjJsblFrMEhpRmZNVERjcTRvcVhjWjBxdXdudlFJOVZOZ1hsa2xoeTZGY1pET0crdzZicHlEL3NMcEhtdy9ZeUNDcjI3WTIrSFpQK3lMWUkwTUh1Q2RpaEF0Z0V3blpDVjVXeEFoQktLT1hDcEZhWW9GaVgzS1FpdVEvT1lLZVpRV1FQT3BBV054ODVZdmIzdW81V05JVGcwRjZtWkl3aXFvMWhRZ0pTeG1OdDBKV0Z0RXZjaFRXa3JQeWkxd0QxSGU4ZW1ORVJuVnQyMTdwcTRrTVpoNFlFcm9maEJ5bDk2WktWZGNtTWhJSTVRMHFJNXo4d1dBNGVWNjBDN09aNE1vcnpVVEt6anVKeTUyYXNPWUU3UndpUnJURkZBTEVLSmxlVlV5T2pjV2ZSQ1pNU3c2U01RUGdERis3Y21IUFgzY2MvdnpaL2MwM1htSFNFNXcvU04ydmN1VXZyNnBIakNkeXFreWtsTENXYzJ6c1hjS0dJN25nUXBBRGEzRWFHTnFUZ2xKSUFwL0FzUU5OVW1QVHRyK3hGancrOHZnUUZSMVFnTkd5N0dZQ1FsUmd5MHdTcnArOGdlSUlERHlzb1RwMjJFOGNXMGZqc2M0TkVHNTRmVGZsV3JWbkpqZFZ0RHRkRDdKTEdhaUV2ZDZ5akpzQjdKaWhzSGJ2R2RPaktobWtzeUNUS05VK0hIU3Y0bVF3d0dtK1RYK3l0V0VqTmhtSm9vRngxZ3MxZkZHVDd1SG5rTmZKdzNLZElHVmNtRDB1aE1iY0lpaE1pQm5XYThtS1NxV055dU9CbVZmS0hCMkROc1pUdHpXSWtSclgxUDRLdUt4U0xmZU9yazN5R1dtTzMxUHhrZmpSTmh6RDV6NEJMd3BtSXp1MVZjZlBBSDJxRFFOSFFObFJ1d3hRYzNLSkhxZ0ZjZUdscXQyVTNobHdXREZCZkhoRzFJZ0s5eVNqdE93YkFnbU9oMk0yVUxza0xGUUppRi9GT2JsMm1WVFVJWXpieHVFeVRMTlhwcVBGVkpBUFN1NVc0T0JscXBLUkZkclNhZHBKQ1VjNGdpaTczU25BTU1DR3hzR081MUs4NGFvWEQ4Zno1M2FzN1BISVNGeFlWRkJTRldoRm5odEd4WkJtTWdXOGQraUpnVTBHQjRIYXVyRmZBQVBNcG5JZlFzMlBpWHNhVUFiVXJGS0FxY2hVYnhsM2VoVTNWQXcxZExzakVNdFpTRVVpSitNU3h6YjhPalBVQ0lQSmRHT3d5cCtLbFh4MmYzckQrNXpiVTBFL0VWejgrVlgzZVRtckN3RTFMTXdIU0dTM2VWazg4c2M4NC9NYkVkcjBkTDVvaWVBZWlKbmJTWnBUbVNCQWlIeXBRL1VtVm8ybGVjME9zb21nY3VTeFFTNGl2aWdVSFNxL0JrL1VSdUlaQThDaXdRR21iWkVJaFZvNW9seXV0MGxzRUJCWFNKVFd5VzBydDhRY1RmU3piYWZTMWxGVHlXaVZjRlJSQ1c3V1B1a2NRbEdZa3JRUDVFd0k2UGtCQUlqMTRHbUdoanhBU0VPdUN6RUt3ajVmalFyS2hRa2k2azBiaFR3L2RBNnBRSnZFZzk1VENUNlVOTStMV1VyeUhLai9oaFFuVFJ6QWpPSkNaR1FZYTZtS2ZER0pBQk42Zld0UEVmTzhrdTJDTGtFOU1PY2dRNUJwU1ZQa1dERUxyWTZ0elFPeTVMeVo1NUg5djQvV244L3UvNHJXbitqUWhWNkFJTjVlaUJEN3Y0bW1EZmVlRWJCdjJCWSthL0RhR3BvenY2NGVkSzUzMGhqd040WW1MTWdXYVlwcmtPL3J1SlZVK3V6cFpLK2V5Ym04ZHVteTloQ0taRG82bmlraDVUcjZ3cW5KRE5nWnVCVDFUWGpWN0dBWGRXQVl3dnVvMVlEQUF5bjR1WWxuRGIxTDNsUVZZVkdDL2FJYk54WUMyTFBYK1lBeFJLUGFSZTBsaExsS3Y5TURSaDZVMkVXOVVvQUF4dXlxazJHczBodTJaOVpTRnBOUjBVY3NPSk1Xc1dUQXdsak1RRk43QlJKK3FXbWt5NldpQWZqT1BnVDR4QVZtK0JvSXhvYmg0OUNUQ1B2dXdCY0dweDNxSExzdUxxL1oxUWdKbXRYTmNzRmFEWHZLYW5BWFZSWFUwem0xU2RCVTVzWFRJMG1Td3pLamgwL3RYYjA2blZERXR2TG9VTVpSRlloSHIxZWx2ZkRLNHZCdlVMK05qT3dabDhsRUE2cEx4bUhJNzl1MmV3VngrYkpqcjNxdkhXdkVJYWxMOGlCOUcxQnZ0Y2JwVlFkZm9BSitBZnI3Q2tEM3Z3N2xueU5ZWXZRM0lmeEx4ZTJIRVA0UjRJZ1RNTEloWG10UmkxNk8rR1A4ZUN5TDljWktWNVF2RDQ5VnE3YXJIRGlDMEJQQlhxVWNuRUJDQTdJQTBGbU1XQWh0bDNPaHMydGxQVnZIZktwWEVnRWF1am9zSnJvWTB1RTJQVmVWWm1CTkVBakVTMHVYWkFXWENoc3A1UnJVTXR6eDlBb2RtQ2hPUk9ZR2FJOHdWOXhWUUdCK0pEZXAvSml2akZocVRNQ0RmUnpIM1JJV016MkNIS2dZVFFXOGhUaE9GUVcwc0dUb0R6K3h5bDBOZmFCY1VrK2IvaTRRRG43VVprZGhOUkhTWXpnVkdEZnordmJhMFVmaFU2WEVEQmIrNzlwemozSFhyZFJWcVZjRGtMU2U0aDZpR3JFd3dJREFaTVBQVUhwN1pTcDhSWWpTWGdKbDhsTjdudHlsbzVIMHM0Qzh1cW53ZkpnV0ZhdHRxUDJOVkdwZ2RuNmRZdkF5d2tyOWt0cTNTeUpuaUFPUm9KMkRBOTFqUWZFVEpLUnlRclk5WTcxNFhsRDRZcDNkWkxWbXVuNnBsUTJsc3hUejFZTUc2clVpc0M3U1hwMTd2cXV2aTFFQWFVbm1VQW9HeGM2VHMvTFplUXpLM2xQY2J6cTNFQ2ZtRk8vZUZrL3pRd3I4S2NMZFAwMkJQMldBKzY2NUp6RkFrQmIxZEJncUdYYUN0dmREOUxZd0hOQWlHTWVIb3ViVlg2RGQvUXUyQTNTWVpnVDB4dWdGbWUwQTZrMFlMMnJuSGlTREg4cFNHR3NuL1ZXZG1XV25NaWdzZ0RndlNkMkNXNW9XVFF4b0V2cEZFQmRHWk9INTMyUUVNb0RmVkhvbEpxd2tOVlduMVlkRHprRXBFdi8xcXB6ZUVZSmphZGRoRXBuVnQ2Rk95MnEzUklYY0FSbW45bzZJMnlFc1o5eXY1OGdWYlEva0dsbHBobll6U1pLbHU1Y2hHZ3IzSzRYbkFSejVCbUc2TXRrMmNOWXdpWFpReUFpOE9DRGd1QXBFUHRST2NORE9mVExSUk9CYytMcklEWGlDSkgwYWRITGd6akNaYXJDL2c4cjFYQmdzWmd4alBtNW45ZmlOT3pMZUQ4SERpNjlmUzVWRXlHRTh6NHAxcVFuQjM5WHdlUlBMSVFIUDhoWGIwSjE2TlJ3alYvRnRta3BwaUgxU0tsMzFjUUh2eHljbXpBaDRGV2JnNG55bnlnN0UrVkJoYkRRUHdpK0diOEFJcGtmb3JqSUQ2UTFXb2F5RERoUGNYdFJBaHNJMjZXdnRwNWRaQTA0VkZjZWpxWDlwa0NwcTA1N05aZGJ1OWxmeHZyM0pES3NYaUp3cGFnR00yaVZJMmtKSzVvV1FoNGYwOEE1b0JhV3BDV1BDNkFDbnF3aFRWby9waG1NQndTVWRwZE0xVVR2Y1hmWDZCb1l2aENTZUFvU2VjM3oyM0h0Vm5YUjF0Q3ByNG5EMG1EVWNFRWE3NHRYQjFqVDd0NDM0Zi96Wi9jMDMvbkVIUVBjUlZSRVdUS3VlOENITGtyU0IxWkJCVmFVaWdLMEFLT1I0K29XaGdEcmQ4TEZKN0V4ZnFBTlpvMi9xY0FuQ3lxdWlGcjJha2hIS1JITHlhaWxSNDJwR2plRmFNSGRvS0J3ZFlsNGRIT0ZEN1RndEorOWNCK0hpdFZtTzk4UjJ0L3FxVk1nUE5Xek85Yng4WGdnUndjTHhPRGJBQ3A5L2tDQTRjaUk1NGlDemYvNFllSnJxQXQ3STRsN1UxeFl5RDZ2K1gzZ0xndEttcVRRTGtTbzJKWkVKOFM2Nnprd1o1bGlubjFqOHJrTTROWWxRaDdZbFZpbmkrNXEzNnAyS2Z2U2FRZmJocUtyWXlKNWR5MmNYSWRma3VFbUJVUHZDZU12S1hXM1lzQkxZZnVZOUlIYU9PdXlnQWpYTFFabHhuMC9IRjNDR2NpZC84VHpadTJ6dzVGb3lKK3JnWGMxNFoxUTV3UjZwNkZqS1ZJc2hkcDgxU0RMQ1pLR0Z2WGJ6UXkxeitFdWZuSHlrUi9oOStyOVJXbG1OOGlnT2kxUFpScVozYmF0VUJjNGVMS2k2TDBFMWtrQWRPOUFaQ0J1M2s5S056V3Q3cTZrM2w4eGdtdFdsSGRRdWh1TzRBV1M4SW1Jc2pxbStEa0hrckZ1Z1RCZWEwemVienZmWExYSzBjdW9OcS85V1luei83UDV2aWZFOUw5eTN4QWo0Uk9RL0RpbURtQWlURVY0RElsNjN2K1JJbURINVpkT1JNZVNacm5lZTE5TS9uSURBTnI0RGFRTDlxMXVNREF0TDRxbCtkaGplUDhSckJuSTJYQ0N6MWlRTHB0cE1rQ0RFZm5OZUxlc0l5c0p0Tzl4MmNZeFJPOUhNY28zcXRjY3E0MzRhY1lQZ1ltSURaQlFHTE1GZFdTaHR2K0NFQVRaN0hlbllHcEJkNTE5QWFSUjhLd2pEWVF1RkFmYm1nbEdHNzVPMHEwNDhxTzl5cVhZR0d1c3d5WFJYeDBSSXU2QkdXZmpiQXFGOGNNUVdrQVRxNDlldWRvWkJzVFBjUGh2dU5KUFVHVis3dFdIcHB6YitIZTdFOTVuZ09TUURvMndyOTc1MEtJWG9RZGRsRlVSaWJ3ZmszV0JwcXFxV29Va3dNQk5ZelVHbGlOSWN6d0JyQU11Z016bE50QUxTNnBEMUt1WWExTkpLVUhKNWJOWk40RDVLTnV5dFhzUWJNcE9nMHgrWW1taWVhYjd2dUNUMnBUSXo0R01KbUczRTR0WDJQTXQ1WHU4ekNTaU5oc3IwT2dUME5udkZFVWdBNXNoVXBCM3Ewb3dhNTZ2aXF2VmxGNTNDUEZzTlNpVE0rbkRIVUNFclZKUm5Kd3F6Q3VyKzFWMmNIZXRvZy8xNkNab2ttdHFyMGl6L3FJenovYlA3VFgzbmQ5V2RIMTk3cFIzTUpkYXU3cFhSYVlBSnk3K0JYaWtWTW1mc2pBaTFRZndVc21ab245bE9RSEdvS0ZpMHAzTFFZSFY0U2UzUzFCYXJuWGZzdEF2cXdrZi9xbHFwWGkva0lkWmF4dVlNc1NiWEJ4NW0wZUdLaVVBQ0pra1VRRnoxUTNCT0xaT3EvamdTcFduL0hOcVdKQXZpQUxSVWxaa1lhbVFGL2RXb1JGamhQR1RSMUxhaFJsa05IVFdGWmpqekhBY1RsWTVHclZqcFJwQ0NtK1I0bTdlOTB3N1ZKeHpHOTlFa1pROXNGWS9DcE5TbVBXbFpCTGRoa0tyeG9QMzk4QWRpcW5vV0s3eVpZUEhhbndzSlZPSEhkQmYxSXZZZ1p3dW5RYTJEL0sxSFVKdlUyNXZHYXlsL2JieERYYmg3YVljUXlGaVlrS0YyT2dGV3JYSmpUQ05jcTYzUnF0YW5UdlFXWnd3OG9xRG02K0RSOWdTdTRTSjhIbVRob2RZTlFXWW9QZGpHQ1pZTENJSkFvYWt5VFNaS20zcW5iVTBVZG1aQTZ0QU42ajVnK1JFUUdSTkhITVUrSUNwbVQ3M3RpR3F6dHFPMk45b3BVWEtQVUlhZWRYNHRxV1c5ZFo5ZjR4M3FLZXJmQ1p5UTcwRmdDQzNSbUZ4Q3g0VlcvNXlwMWxGd1NVaHNJL2JXU1NZam50WHBpK3lkYitXbTltNlV6RldWVlJ3TE1oblFqeGsvZ0hKWEd5eXBPdS9DSEVKSWt1L2RhWThMVFlHczFvYks3QzNxekp0d2oxemd2ZTBsSzU0bmdRVTZtWWNXNnRsWG5Td2RQSWZPa0xGc0h1NC9Gek9vR3JKT3dPbUlVMUVMNjZoSzQ2UGpCZHRRUUhVUDFNM1N4dUxybitTQm5vRUlrbFRBaXNzcUhrMDFQWU1XMHVPTUNRT3BwblVnbm9qQllDTm1vVDNlcGZYc0M3QmNHNVZtekI3NENBQ0dGcHdLcGR5Zmh3cmEybEhKQzhHRTZsVmp2NDVZUnBEMW5SbHAwa293M0lycVFkd3FNUFNrWXpYdm9JNUxCRHJXZzJBR2pEVFFGZFdzaVl3anUzbHN4V3NpS0ZGK2hiUWhqeit0bkJlVjNsRVEyN1RwaFJWZHFhdEJ3VlRvZ2oySzlpQjErby9rMDZteXJoYWNQeHc2ZUovZHJ5L005THVkMi9FM3I3T2VxSnVHbDNPZWh3R3NWSVpZdGhJY3FiTmhwWXlrVXdGRVhLNXFHQXlxZE1FM3BpTmpxRkI3dS9OcU1EYlpCdnhhOE5ORDE3dkwvY2s2TWpqMU9FaUJialZvUytzT25ZOVVwSVdHNkQxRmlLQitWQWxFd3BwL2RLZDhKV1lqL09FSkxrbFRuZW5EMGxpb1IzWkp2VzFCRnErVC93RktVNnBsakJqeUJCdEU3c3Z2dWxXSWEvUnBtOEFOWVVGV3ZnWGRFcGtaOEVDOElna200cFVNVzhHdnJqT01ZYXNyQ0FEUTBTQUFEMzJFYmh6S3BsNVFRS0FuajAwRUdHTXg5VnV5Nk9yMXdIbGxIV3U5d042Vkt1OWxJS1hxYStVTndKUmpQZFNUcno2bnJhMFMxVUVLUU9WNVo1L29SQkRRZ3A3Z3lOb2lPV1dscG9TMnBXaGJKWXNPUWp1OGJxaGRsbk9oWDh0V1I3anN2Rnc3czZ6ejZJUzJDRncxQWVndnFXYVRYNmRSd0JLaTBPZnJpWWhadmZsSmhqQXh2MXEyT3NMTVY4M21yOU9DcEFRbWN0b2RKVVRlYlIxbkpLbTZqblF3ejZCV3l1YlVkcmluQXFkbWdIcngrSk1sQlpzZ1YvV0E0THEzZlB4bEZDU2Nlb0o3ZjNRRVovS2Rxak9YSXpwQ1U2azZuZ3ByYWpTS2tuMldkZm9MMnBpdnNxNU5nMlpiQWd6M1BKcGtxK3FGRWFRbDZkVVBTVTR2OVVsai9PUFY0UXhGL2xUZm9qYjgwSHVHeG9NVFpvU3BKMitwWUhsOGpXRkxUV2JjOGJVRU9mSmJKMTZBRVNPSmwxcEljQVozRTBYYTF6cWZRajVDT3dlVUtnWXBNOWNYczR4ZXJWRERWZUVlZ25MSTZsZHEwakdmNUYrUE9nQ0t3UENBVFh6dDE4aEtLT2tkU24wSFVPTWVDUmZlV05Ld0paRkx4ZmZQdEhHSVVlNzBDME9ISGdLRnJPT0hPb1h4cmltMkFMTlJPR3IzVVJkTWZtMzdPZ0JVTTRiUGZXN1pzRHM2akR0MUlyUEtQbzFJTW5ENXc0cnNxZTBySXAyNWI2bzJ2T08vK00ycmZqRUdpdlNBKzYrT2hiR3NDeXR3R2ZSZ0RVR0pGZ09HTFJsOEFIZXkzTWp0dzgrbEYxczZqd2xwNDRhSWFsWFEzSzA2SnNQVWtpSjg1SnVIUkFPUGp4Nm9pek1CSHlHMk9vUzlQQXlXc0d2VnA4NG5JYWdRTmI0NmozTWsrSEJyeUUxQ2ZhcHd5OUJFdDR4WVBRVjRrSUpPUHlwUUZCMFAxVzdUaHZrQlpsUjhFbGNXTG9SOWtsYkRxZjBCbG45Q1kzN2lnN3RDWGJDWXlKYXRWbGxoRTZGQko0ZVpFeDN6RzJBR3l6KzBWMkllb0YwQmtVMHVCektBbjJMd09wYW1rM2g0U3ZEbzZLd25ZWTJoVklPS2dFMEt0S21BWFZ0VzZUY0RzV1NjamtzT25ocEpvVUtqam9TK3ZnZlVTSEpFQWg1Nlh2Vm5EMEMzNlZpZ05JeUtGc0Fxcm5vZG5SYnM2dFhJMWxxR0owYVh6SHRPU3NlWFJ5bHV2aE1ES2VvYWdWVTY3OGpNdWtYblVMWVJFc2dpdUpqNXlmbWRrOUZPVEkwNHlxc3lzN3F4dFJQc0pKU2hBclZTVjBtRmhlUFdyNjI1NnQ3UHFobnZaRStiQS93MXFidEtuU2lpSnBBY3lPa2dJdUh0VkRjSlJ5YzVNc0dUbVlaeUZFOXhERFd1RVFvb3RLUTZkYml2WmZNcGJWVEc4VHJZcitvMWRKeW1XK0NsS3ZQQUhnWTBKamtxNExFdWRVMlRyb3I1T0tzaVZoeUtlckRQZm5aV1I0eUJST0tDdDhIUzFGUSs5UXNJTWhuOGRqOVZxaVBSWjFDSHRhb1hxQVVKVDlQdnFDRFJnSE5XaTRUU3IySkk2cUVFYWhrZFdWUlAyYS95QSs5Y0RXUU83ZkhMdnBPNEJFL1NNYnNkbWVXVnRCc2NNSlVIWWEwVEkvNkMyVk9IWC9Ec3dPVzRiNGNCTzRvOE5rblFxOU5HTnBOYTNsL2ZLTm1nTTJNQTF3RjhWVkt4TEFSdEZhYkZlQ1BCQ2srUEwwbUszdTVmK1g2dDE0TkNXSHkwQjZScXFQcnhkVjkxM00ybnhuWHZ0OEh5NiszVjRNWUFqclF5bksvRGpKTHdFUnRRNitmNHE5cml3TkpmeTRkcFpLVVpNWVgxdFQ3R1VjeThaVldoYTBvSkJwQWtMY0dpdWc2NURHOEkrdDBOREV2S2YrbjNWRFMxMzZvU0VnUk5iWVhQK1Q0Y0hjZ1QxZEdpWHNKUWxCZkkzWGNtMGRUT05QeCtIY1U2VG4zZWhvcllweDZOaVNUZjJ1a0RNSnZPVm1vZlVJQ3ZYN1lCWlZicFZjRU9VZTYxSjQ0Q3VNeXhtMTd0T1BoczlCYjZCQXA4OUlPS2FXckMwV1pQbDNnRjE4QTRSTmRhOEJLbzYwZFBIUytONkFFbHN0TzJWd096V2FEWHVRdHZYMi9JMFVTR0tOUGlpam9CSDFHRW9LRWVHUThFOFJIeGFxV2FSQmpMa1Z3UlBML3FCYTVOT3h3NGYvMCtEWlYyZWxFbEFSYUVFb1BNVTlwUGhPRmR1Vi9mWDdVQTJUMEJXM2o5SmloU0xFMUNGOXV1T3ErbDN4UVE5QnQrNXRhdnBqQVUzMmc2RTN1Zkw3MEhVYmtNUzBWMHhLNytvL2RUcjU2b0k5ZjhHeFJsVGhFK1RTNVNwZThoUVlwcTRPblJ2VjNTUUQwL3JFWlFYd3h4YWc3dW5Jb1FKQ3BmcUtYNjg3c2ZqbjZ6Q1c5YThBc29kWmR5R3JRaDlYRWRXK2NLY2xUYnNrNEdBYTZPV2ZTTVl1aFg2YWh6WDRwMWZCMGdJTWFBQ0l1U25UbXJaQnJIZk16NzJWZmxXZFJ2dEl3bmRYM2ppZkRxYW1OcUtNQUlUT3R3SWlLVm1OK1cvWTZDZkdndmFnOTZwUFNNNEg2U0Z5eUR3TlUwNS9DQ0FkRFdXWkNzTGR3dWNhSGZ6aFdDVHFxb2s2UWhNVmo4aGJoQytwYWpYeUtoQmhCMVdPZ2IyTGdWbkZ3cTRrNlRxczR0cG5hdFhaWitwWWM2NS9WZHNhNU9DNkpsbU9oY2xVZ3JhYWNDa0dvK2VUMmpBeEszMnM5WDBMbU5kRmpOZ1JObnBwcnlROGR3MVN5Y1ZDTXNQREpKa0xYRnFaTnhPakx6MTYvTWNnaUU5ZmVWSVJ3ajV0VDlOOUN1dGhqZzZ0MTRBQUFCZzJsRFExQkpRME1nY0hKdlptbHNaUUFBZUp4OWtUMUl3MEFjeFY5VHBhSVZCVHVJT0dTb1RoWkVSUnkxQ2tXb0VHcUZWaDFNTHYyQ0pnMUppb3VqNEZwdzhHT3g2dURpckt1RHF5QUlmb0E0T1RvcHVraUovMHNLTFdJOE9PN0h1M3VQdTNlQVVDOHp6ZW9ZQnpUZE5sT0p1SmpKcm9xaFY0UWdvQjg5Q01qTU11WWtLUW5mOFhXUEFGL3ZZanpMLzl5Zm8xZk5XUXdJaU1TenpEQnQ0ZzNpNlUzYjRMeFBIR0ZGV1NVK0p4NHo2WUxFajF4WFBIN2pYSEJaNEprUk01MmFKNDRRaTRVMlZ0cVlGVTJOZUlvNHFtbzY1UXNaajFYT1c1eTFjcFUxNzhsZkdNN3BLOHRjcHptTUJCYXhCQWtpRkZSUlFoazJZclRxcEZoSTBYN2N4ei9rK2lWeUtlUXFnWkZqQVJWb2tGMC8rQi84N3RiS1QwNTRTZUU0MFBuaU9COGpRR2dYYU5RYzUvdlljUm9uUVBBWnVOSmIva29kbVBra3ZkYlNva2RBM3pad2NkM1NsRDNnY2djWWZESmtVM2FsSUUwaG53ZmV6K2lic3NEQUxkQzk1dlhXM01mcEE1Q21ycEkzd01FaE1GcWc3SFdmZDNlMTkvYnZtV1ovUDhhN2NtTHcwWHh2QUFBQUJtSkxSMFFBL3dEL0FQK2d2YWVUQUFBQUNYQklXWE1BQUFzVEFBQUxFd0VBbXB3WUFBQUFCM1JKVFVVSDVBY0NFQjhmQlZ4SHRBQUFJQUJKUkVGVWVOcnNuWGw4Vk9XOS85L1BtUzA3a0lXd2hNVUVBUkVFcEFXMEltb1JwWXExaUZXdy9rVEZ1clNpWGNDNjBOcUNYYkQxdXR3cVdtcXhyZEQySXJkWHNiVEk5WXBMQ3lpaVV0a0RFUklnZXpLVFdjK2M4L3orbUhNbUo1TUppeUlrOEx4ZnIvTUtaQ1l6a3pOblB2bnVYL0g5cjEzQW1xMVZSSDE5R1RieFp1WmQrQUczejF0RjBSMnJXRHR2R0ZETGlobmptTGRoSElzK1dNNzBQS0Q4R2E2NDlGSEtMMTNNOW1jbjA0cWZGYlBHTXUvTjBTellzSndiaXV6dlJ5bGZzWUNIRnIvQzVqMEJmSVZuTWY3bWU3aW1iZ0YzL0M3S3pHVWJXVGllTGtrNEhPYkFnUVBVMU5SUVYxZEhZMk1qVFUxTkJBSUJXbHBhQ0FhRGhNTmh3dUV3MFdpVWFEUktMQllqRm91aDZ6cTZyaE9QeDVPSFlSakpyNFpoWUpxbTg5L0NORTJjaDVUUy9pcWtsTmdISUZLL0FrZ3BoZlhTazE5VHZpZDI3ZHBWWEZCUTBOdm44eFc3WEs1aVRkT0tORTByRUVMa0F6MkFQQ0ZFSHBBTlpBR1pnTmM2WElCbVBaNEpHRURNT3NKQUNBaEtLZjJBWDByWkpLVnNrRkxXRzRaUnArdDZkU1FTcVRsNDhPREJrU05IMWxpUEl4MUh1LzhMSVZKdnM3OEhJSVVRN2I0NkRxbHBHa0lJTkUxTFBhVEw1Y0xsY3FGcEd2YS8zVzUzOHF0OWVEd2UzRzQzaG1IUXZYdDNmRDRmUHArUHpNeE1Nak16eWM3T0ppY25oOXpjWExwMzcwNlBIajBvTEN5a1o4K2U5T25UaDh6TXpHTzQ2dnlzbXp1Sm16ZFBaZFhhK1F4RGtZcDkwYmVlc2hXekdEdnZUVVl2Mk1EeVZtWDZISWl5YnM1WWJsNVZ4QjJyMWpLdmk3MDdzVmlNQXdjT2NPalFJZXJxNm1ob2FLQ3BxUW0vMzU4VXRGQW9SQ1FTSVJLSkhGSFFuR0xtUEV6VEZMYkFwWWhaR3lHenhja3BVcW1DNWZ4L1RVM040SnljbkVGdXQ3dE0wN1JTSWNSQUljUUFZQUNRMFVsT2N3VFlKNlg4eERUTkNzTXc5c1ppc1QyTmpZM2xBd1lNMkowaWNQSXdndGRPQUczaEUwSzBFVHBOMDJTcXlGbkNsaFE1NStFVU41ZkxoV0VZNU9YbDRmVjY4WHE5K0h3K01qSXl5TWpJSUNzckt5bHdlWGw1ZE8vZW5mejhmQW9MQytuVnF4ZDkrdlRCNi9VZVZ0QzJybmlSbDk1Y3hZcFZsUXhiOENyTGJ5aFJLcFlHZHkzUWFsaHRaZkh2MWhQakxDNGNYM1RjQkd6ck0zTlpWaktQK1ZOTDhObmZMVi9CNG5VQjZEdVZTN3VZcU8zZnY1OURodzVSVzF0TGZYMDlqWTJOK1AxK0FvRkFVdERDNGZCaEJVM1g5YVIxbGlwcTZjVE10c3BzWWJQL0tLVVJzamIvMzdWclY4OCtmZnFNOEhnOEkxd3UxOWxDaUxPQnN5RDVWblJtTW9EQlFvakJ0cEI0dlY1eWNuSXdUVE1LYkROTmMyczhIdDhhRG9jLzNybHo1OGZqeG8ycnN5eEZLUk1uU3RyL2Q0cWNsRklLSWV6N0pBWE9NSXlrOVdaYmM5WWhPaEk1cDdDWnBvbW1hWGc4SGp3ZUQxNnZsM0E0ak0vbkl4UUtFUXdHYVdscElSQUk0UGY3YVdwcW9yR3hrWWFHQm1wcmErblZxeGY5K3ZYcitMTzA2Z2wrdDc2SWNUYy95Wk5LMURxMjJJWmNjRDJUSnc2amlGbzJyMXZEQjFWUWV2TlNWczRmVDk1eGVZcEtWc3lheHJ3My9mUWROWkdKbzB2QXY1WDFyMnhnVDZ3dlZ5NWV5Wk9UaTdyRXlhcXVybTduZGpZM055ZmRUcWVnUlNLUmRvSjJCQ3ROMkc1bmlxQ0pEcXl5ZGhiWnRkZGU2MXF5Wk1rWE16SXl2dUJ5dWNZSUljNEZCcDltMS9RdTB6VGYxM1Y5czkvdmYvL3JYLy82Kyt2V3JUTWQ0cFlVT1NHRW1jNmlTMmZOYVpvbTAxaHh1Rnl1TmlJbnBTUXJLeXZwbmpvRnp1djFKcTIzek14TXNyS3lrdTVwdDI3ZDJybW54Y1hGU3FFK3JiQjkvNmF2c0c3OU51cklwYkJzTkZOdm5zYzkwNGNkSjFHenFXWDlpMCt3ZU5rNk5wZFhFYUNRMHZHVHVmbWVlN2hoZE9jWHRlYm1acXFxcXBKV1dqcTNNMTBjVGRkMVlyRlkwa0pMRTBjVHpqaGFHc3RNcEltWDJWYVorTjczdnVkNitPR0hML0Q1Zk9kcG1uYStFT0k4SUVkZDFtMW9rVkt1ajhmajZ3T0J3TWE3N3Jwci9WLys4cGQ0R3FFem5hNnJRK1NjY1RtWmFzbWx4TitrbEpLTWpJeDJzVGV2MTVzVXVJN2liMDczdEtpb2lGNjlldEczYjErNmRldW0zc1hQR21OVHRLTHJPdnYzNzI5anBUVTFOU1d0dEtPSm82VkxEdGlDbG1LZEpkMU1oMFdHVThpa2xGcERROE93bkp5Y2kxd3UxNFZDaUltQXV1cVA4ZStVYVpwdjZicitkblYxOWRzREJ3N2Nib2xiTzZ2T2FkSFoxcHZ6MzNhQ3dTbHlVa3A4UHA5TWwxeEl0ZDdTeGQ5czY2MTc5KzV0ckxkKy9mcmg4WGpVdTZlRTdiTng2TkFoS2lzcjJ5VUhuRzZuTFdxMmxXWmJhRWNyYUlaaEpOMU0welE3RkxOUUtIU3gxK3VkcEduYUpHQ0VlbmVPSy8rT3grT3YrLzMrTndvTEM5OG1rY1UxVThXdUk1R3prdzIydXdyZzlYcVRGbHhIQW1kYmNMYjFab3ViMHoxTlRTNlVsSlRRcTFjdjlZNHBZVHQyZ3NFZysvYnQ0OENCQTFSWFY2ZE5EaHlwZkNQRjdSUXBpUUduZFNaU0xMU2ttSVhENFNsZXIzZUtFR0lLMEZlOU15ZUVLc013L2hFSUJOYm01K2V2cGJWY0phM0lPV055dHFzSzRIYTdwYk04eEJhNUkxbHZxZTVwYm00dWVYbDU5T2pSZzRLQ0FvcUxpK25UcHcvOSsvY25PenRidlZ0SzJJNk8vZnYzSjYwMFp5d3RYWElnTlphV3hrbzdrcUNKMUpoWk1CaTh4T2Z6WFNXRXVGS0pXYWNRdWRWTlRVMnJpNHFLYkV1dWpjaWxXbkgydngzdWFUdUJjN3ZkSFFxYzAzcExUUzZreHQ1S1Nrb09rejFWS0dFREFvRUFuM3p5Q1ZWVlZXMnN0T2JtNWpZMWFVZFpaQ3RzMTlOMk53OWpuV21OalkzRGMzSnl2cVpwMnRXZ2FpMDdLZHRpc2RnckJ3NGMrRnRwYWVsV2g4QVpEcEZ6eHViYVdIRjI5dFFXT1V2WVpEcjNOTlY2YzlhKzJabFQyM3JyMjdjdkF3WU1JRGMzVjcxRFN0amFXMmwyZ2lCZHhyT2pFZzViMU5JSm1yTkx3Q2xvdHBpdFdyVXFZOUtrU2RlNjNlN3BRb2pMMUdYWWRUQk5jMDBvRkhyNXFhZWVldVhCQng4TUEvR09SQzZkd0RscjROSUpuQzF1SFpXR3BHWk83Y1NDc3Q2VXNBRVFDb1hZdTNkdnV3U0JiYVcxdExRa1kybEg2Qnc0bktBSnA5dloxTlEwSWpzNyt6cE4wNjREMUpYWXhmOG02cnIrMHY3OSsvODZhTkNnYlE1WDFVaDFWUjBDSjQ4a2NCMWxUdTNZVzA1T1R0SjZTMDBzbkhIR0dXUmxaYWwzNW5RVnRvTUhEeVpkejVxYW1qWUpnaVBWcFRsRUxhMmdXUVcxYmR6TlVDZzB4ZXYxemhCQ1hLc3V1VlBTaWx2WjFOVDBVbUZoNGV0U3lyZ1F3aWx3aHRPQ3M0WE9HWWRMRmJpT1ltL3A2dDVzMTdSbno1NUoxN1IzNzk2bi9YdmlQcDErV2NNd0tDOHZaOSsrZlJ3OGVERFpFdFhjM0l6Zjd5Y1lEQ1pGTFJxTnB1MGVzQVhORVVkTEsyZzMzbmlqYThtU0pUZTYzZTRiZ1F2VXgvL1VSZE8wYWZuNStkTmlzZGc3TzNmdS9QTXR0OXp5MHNhTkcrT1dtMnBJS2R0bFZnM0RrS1pwU2szVDdGaXNkSllFeGVOeDZTd1hzajBFWnlqRS9xTnIveEVPaFVMSmRxMnlzakpjTHBjU3RsT2RwcVltOXV6WjB5YnI2V3lKT2xLeGJScTNVemk2QkpLQ3RtblRwdHdSSTBiTWNybGNONkZxems0djkwZUlMMlZuWjMvcFgvLzYxemNqa2NqeVpjdVcvZVcyMjI3elc5WmJ2Q09CazFKS1I2RzJVK0JrYWd1ZXM5ZjRTQUpYV2xwSzkrN2RsU3Q2cWxKWldVbEZSUVdWbFpWcGE5UFNGZHNleGtwTEcwUGJ0bTFiajdLeXNsdGNMdGN0d0NEMU1ULzlNQXlEeXNwS0Jnd1lZSCtyUEJLSi9PR1ZWMTc1ODNYWFhkZG9XM0QyWWNYZ3pIUXhPR2ZkbTlNOVRTMExzWXQ2MDlXOGxaU1VNSERnUUVwS1NwU3duVXBJS2RtNWN5ZWZmUEpKc3VEMmNGblAxQTZDRHR4T084dXBTU25GaHg5K21IZldXV2ZOZHJsY3M0RXk5ZkZXd3VZUU5wczk0WEQ0OTMvNjA1K1czM3JycmMxSEVEalQwWFNmMnJrZzAzVXNkSlExdFF0NkJ3d1l3T0RCZzdHNkpaU3dkV1VDZ1FDN2QrOU94dE5xYW1xU1dVOW53VzBIcnFkSWJZVktzZEswK2ZQbnUrYlBuLzlObDh2MVRWVDkyUWw4WXc5QjlRNW9xSUJ3VStJQXlPeWVPUElIUXZFUXlPM1ZtWVROL2tPN0xSUUt2ZkQxcjM5OTJlclZxMk9Xd05raVp6b0V6a3kxM3B3QzUvRjRaRWY5cHM1cElmbjUrZlRzMlpQZXZYdlR2MzkvQmcwYWROclV2SjJTd2xaZFhVMTVlVG43OSsvbjRNR0Q3VW81VXVOcHpvQnNPcmZUVGd6WVdjNUlKSEs5eCtPNUV4aW5sT1lFMFZBQnU5Y2x2aDROK1FOaDBNVEUxMDRpYkE2QjIrajMrNWQyNzk3OUZTR0VuaUp3N1Z4VVJ3ZURUTFhlVW12ZVVndDY3WktRM3IxNzA2OWZQOHJLeWs2TGNVaW5YUEtnb3FLaVRaTEFucHZXVVR6TmFhWFpnVm1uMitsSURHaWhVT2dTcjlkN2w5WHlwRGhSYlBrclZIMTQ3RUs0c1FMNmpvSVJYKzFjMW9RUVk3dDE2emJXTUl3cmEycHFsdmJ1M2Z1ZlRvRkxUVExZQ1FacldJSk1tZDluLy8rb2tneVJTSVJ3T016QWdRT1ZzSFdWZU5xT0hUdllzMmRQc2pYS0hqUFVVVHl0QTllem5kdlowTkF3T0M4djcxdENpRHVVeXB4QTRoSFk4RUxDL2Z5MFZIMlFjRmZQdlE3Y0daM3ExOU0wN1N1OWV2WDZTaXdXVy9MeHh4Ly9mdlRvMGVVT2diUExSQXpBTkUzVHRQZGIyTmxUdTJYUEtXNnBJbWNud0ZMRkxSS0pNR1RJa0ZNMjduWktDRnM0SEdiSGpoMVVWRlMwNmZlMDY5TTZpcWVsV21tV3FDWGR6bG16WnJtZWUrNjV1MTB1MXh4QXpXRSswV3hZQ29IcTQrUEd2djluR0h0VHAvdzFQUjdQN0ZHalJrMEpCb1BQVHBndzRmZWJOMitPQWJwbHZXbTJpeXFsTk8xeDVsWUNTenFISzZRS1hMcFNFV2ZZeFJhM1kxc2tvNFR0aE5EWTJNak9uVHVwcUtoSURvUjBUdVZJVjU5bS9SVnppcHJUU3RPa2xDSVVDazMyK1h6M0FsOVdDbk9TM00vaklXcE9jZHZ5UDUzT0xYWFFOeXNyNnlmdnZ2dnV4VFUxTlV0NjkrNzlsaEFpNW5CUEJhMDlxVExGZ25NS25FeTNGQ2lkZTJwWEFRd2VQSmdlUFhxY1lzTG1YOEdNVWZQWWtIc052L3Z3VVNaMm9SZGZYVjNkcHB6RGJtSlBWM1RyS09VUXRubWV4a3JUS2lzcmV4VVhGOStyYWRwM2xMcWNKQm9xamoybWRyUnVhZCtSSnpTaDhDbmMwNHQ3OWVwMWNUUWEvZlhycjcvK3V5bFRwaHl5M0ZQTktYQ0pYVFRDN01oNmM3aXFISTJiT25qdzRGTXFxZEJsTGJiOSsvZXphOWN1UHZua2syUTVoN09USUYyU0lOVktNd3pEYWFWcGtVaGt1c2ZqK1E0d1JxbkxTV1RYRzYzLzFnL3gwSS8vd2JJR0dEZmo2eXlma0FrWVZINjRpWWRlM2N2NnlnaGtaak42NUFqbVRSL0NhS3NIUExwL053dFdiT0dWdlg0Q1pGQTZ1RDkzVEIvTDlOM3JZT3pBVG44S3ZGN3Z0eTY3N0xMejYrdnJueTBvS0ZndGhIQlo3cW51aUwwSlovd3RqY0IxR0h0THRlQnNnZXZ5VTBMODVheDdaUm51U2FQbXNRY2c4QkkzbDY1ajVrc2JXVmkybFJjWFBNVGlOVnVwaXZyb08yd2lOODlmeUMyajh6ckZheTh2TDJmMzd0MUpVYlBMT1ZLYjJEc1NOV2ZHVTBxcFZWZFg5eXNvS1BpdUVPSXVwU29ubWNBaGFQd2srZCt0cjI5a1JVUEt0ZnZ4djVqeGJEbFZlQ2dkV0l5dm9aWU42OWN6b3g3V2ZtY0lKYzE3bWZQNE83d1doc0xpWW9iUnpJYXRPNW4zZUl5OEg3cVlmTmFoazFMbmRxd0lJVWJuNStjdmpzVml2M25ublhlZXYvamlpeXVGRUpyRFBZMWp0ZkxaazBUc3pLbFQzSnhiejV6TGcrellzbk80UXl3V282eXNLOWFabDdOaXpod1dyZG1HMzVlTGUrYk1DL25kc2plcDhwWnk2UTNYY0dtUm4zVVB6V0wrS2o5OUw1ek9IU1hsdkxKc0ZRdG4rY2xidTVUcEozbXAxUGJ0MjVPRnQ4NmV6OE5rUG9XejE5TlJsNlpKS1VVa0Vwbm04WGkrQjN4QnFVcG5pQzlzYi8xMy9RNFd2TnBJTE9VdVc3ZldFczNMNXNJckxtZnBoQndJN1diV0Q5N2h6YjM3V0I4YXd1U0tmV3oxWk5CMzJGaFczbm9HUmJUdy9LS1hXRmhSeGFxOU1MbStva3NJbTQzSDQ3bHQ0c1NKWTJwcmF4Y1hGUld0c1dKdm1pVnF0dlZHd25DVHFkYWJTSW5Ea2VxaU9qZW4yUUkzZE9qUUxuYmhSS0hvR3VZdm44cmt2Qlc0YjVsM0phOHRlNU1xMzJobXpyK1RpWlR6VEhrZFVNclVlZk9aTnl6S3BXY3RadFdlWFBMOE9MWXJuMWlrbEh6ODhjZnMzcjI3emNKaWUydVVQWmtqSlVtUUttckplTnIyN2R1N2w1V1ZmVi9UdEhsS1RUb1I5UlhXUDJLcytlc0hiS0FINHdhMnNLRkNUOTVsL0xWZlkyTzZBVkFlTDNrZXlCczVrYmRHcG50d0Yza2VTendIanU5U3AwVUljVzVoWWVGemtVamtpVC8rOFkrL25UMTdkcU5sdmVtMGpzZ3liRUZ6eHQ3c1FhZE9jVXRkKzVnUXVTaE5GZS95NXlmMlVqanJQM2xzNXRsZHFCeGtHTlBuRDdPTnQzUXh0akltWGptS0o3Wjl3T0lyeDdKbTFIakdYM29OTSsrWnpMQ1Q1SW5xdXM3SEgzK2M3Q1pJTGJ4TkxlZXcwdG1wV2M5a2dpQVlERjdvOC9ubUNpRW1LeVhwWkZndFV0RzltMWl3S1VMZkN5WnljM3hkRzJHenFmMXdFd3ZlYTZaMmJ4VWI0aGxjZU8wb0pqczMxQjNhelVPdlZsRlpmNGoxRlJwOXg0emxqc0ZBUE5wbFQ0L1A1N3ZuNXB0dlBudlNwRW5QRGh3NDhGMHI5aGF6WEZNaGhEQVNobHByM00zcG1xWk1Fa2tJV3p4QzNkNHR2TDUvUHdmOEp1Nk1Ya3lkdklNUFA0eHo5dGxuZDhtMWYybVRCOFB1WE03YTBTdFl0dXcxMXExZng3SkhYMlBaNzY1azhkb25tWHlDeFMwU2lhUVZOYnZ3TnQwK0FvZWxsdXA2YXJGWTdIYVh5M1VmMEVlcFNDY2swZ3cwOC96eTNWUmw5dU9KcTN1UnR5TDlYZjE3OTdGcWt6L3huN3h1REN0T3FjZnkxN0ptVXdWMUFPNXNocDNSTGJFSS9MTVUvSFlDTkUyYk5HREFnR0Yrdi84LzgvTHkvZ3hvbG51YXROeHdKQlpzajhleTNvVGxzbUthVVJxcnlxbHRDcU9qNGMzcnlhQnpoelAyM0hNNFM2dGc1ODZFcTNyMjJXZVRrWkhSdGM0UmdNL3lVYU5Sd0wrZVorYk1aZEZyZWN4OGNpbXZibHpMUTZPQXVuV3MybnhpWDF3d0dPU2pqejQ2YkoxYVNseE54R0l4WWZkOFdtYTJacHFtVmxWVjFTY2Vqei9tY3JtZVVLTFd1YW45MTBZV1Y4SzRxOGN5OVRDVHJzdXUvaHA3bnY0R0crNDlpN05DMVN4KzlsK3NDVG51TVBnOE5qNTlFOXNXWE13MUJVRmVXL0U2aS9ZYXA4cHA2cE9ibS92VGFEUjYvNnBWcTBxa2xCbldSOWtMZUtTVUxpbWxabC8vVmd4TjJONU1KQklSNFdBejFRMGhvcVlnbytnTVJvNFl6QmtGR2VqTk5SdzRjSUNLaWdwMjd0ekpSeDk5UkRBWTdHSVdtNitJdkZ3Z3NJWUYwMlpSdm5BaGViVnJXTFZxSFZzclAyQnlTUzNyeWdGdkdhTk9ZTElrRUFpMHNkU2NMVksyb0RuSGQ5dXVwMVdmMWlickdRd0dKL2g4dnZ1RUVKY3EyZWprWkJpcytMOERCSUFOeTEraWRIbnJUUnVXLzRVSis3L0NxNWQ1cWRWZDVCWGtVT1J4VVRSNEdOZVViR05oUlMwYnFtRmlmZ3VWWVFOZlhqZEtzc0JYMEorWnc3SjVxVHJJNXAwdGNNN2dVK1owZWIzZTJWT21UQ25kdTNmdk0yZWNjY1o3VnR6TlRpd0lJWVJobXFacEwzaHVHM2R6aVc3ZE1tVkxNRUs0ZWpjYmF6OGh0N0F2WldjT1lxakRYYldQczg4K3U4dE1CM0hqbThnOTg2OWs2NEkxN0NrdnB5cGF3cDFQTHNYLzBBSit0KzUzTEk1NUtUenJVdTZZdDVCYlRsQlRVWE56YzFMVTdHYjIrdnI2ZHU3bllUS2Z5WGhhTkJyOWh0dnR2aDgxL0xGcmtObVRzalA3Y0tFajVGRmJlWWh0ZnBQYzRtTEdueUZZcy94bDVtMkZjVE8reHZJSk9SQnE0SU1HQUMrRm1WQzUvblV1L1o5R2NzZGN6RnUzOWllUE1PWFZZVUFqTDgvYjZYcEdqNE5yZXNtQUFRTUdORFEwUEpXZm4vK0s1WnFLRk5jVVo5ek5Gam1QSjFOMEwrd21QZWdFQTM2YWF6L2hnOW9xYXVPWGNxSFYyZURzVVQzNzdMUHAxcTFiMTRpeGxVMS9rclhUbmQ4ZXo1M1B2c3FkSitFRk5UVTFmV3BSY3lRSnRGdHV1Y1cxZVBIaUgyaWE5aUNuMlc2SExrM0JjQ1pmZXluT3JNNzYzLytabWVzakRMdGtJbytlbDBtdHB5K0ZXL2V6WWZuTFRIb3ZIMTkxTGR2OGtIdm1FS2IyZ2hMUEVNYXRXYytHVGV1WVZGMUVtZDdNaG1vVDh2b3hjMWdtRkE4OTVVNmJFS0tzUjQ4ZXZ3eUZRbjNHangrLzVLT1BQdEljMXB0dWlWa3k3aGFQeDl0a1RLWFhLM01LZWxQWUcyTEJJTzVvTTQyTnliS1JOc2ZaWjUvZDZVZU9kNm9QZkdOajR4RkZMWjM3bVpva09IVG9VTCtDZ29MN2hSQ3psVkowTVlxSEp1YXVIWWFpTDB4a09adFlzR1l2NjNkVlEyWWU0eTRZd2Z5ckJ5VW1GUlFNNGRsN1hTeGFzWVUxZTZ2WlFBWm5EVHVMTzZhUFlXbzNvR0RncVhyMjNKbVptZlBlZSsrOTR0ZGZmLzAzbDE5K2VhVnR1Vm5XVzl5K1k3cWtRdUtMajh6Y0FqSmxDODNONllYTkZyZk8zRi9hYVFaTk9rWE56bjdhb3VhTXFhV3gxT3pXS00wMFRSRUlCTDZRbVpuNWdKcVoxb1hac0xSTjk4RnhwY2NBR0RmcmMzbm9veDAwZVNJd0RHUDF6cDA3Rnc4Yk5td0xFTFd5cGpxUVhBK29hWm9VUXBqV2RGNXA3VlNRenBIajlrVGU3dDI3VTFCUVFLOWV2WklES3p1enVIVUtpODNwZnFhSzJ1SGNUNnZmTStsK2hzUGh5N3hlNzRPb3liWmRtek12Z28wdmZINlBmUnJnY3JtbURCMDZ0S0N5c3ZMcGtwS1N0NnhFZ20yNUlZVEFtVlN3ZzI2dGxsc3lGc2ZoakovaHc0ZDNTcmYwcEF1Yk0xSGdGTFhHeHNhMEV6cFMzTStrcUVXajBSbHV0L3RCNEV5bERGMmMvSUdKS1J6SGU4SkhKNS9zOFRuRTNjYjI2ZE1udjY2dTdxbkN3c0svU1NtZFNRVWRSMUxCSVdEU2NsM2JxVms2Z1JOQ01IejQ4RTZYVURpcHd1WXM2WERHMUd4Uk81ejc2UlMxV0N4Mmg4dmxlb2lUMXZDbE9PNk11QnI4aDQ3ZlRMWWVBeEtQZVpvaGhCaFVVRkR3VUZOVFUwNzM3dDMveTJHNXRRbEYyZUlXajhmVGlsdEhvbVlmSTBhTTZGU2xJQ2ROMklMQllJZUpnalIxYXNLNTQ5TXBhcnF1ejlVMDdTRWdRNm5CS2NhNFdjZG5pbTZQQVREbSt0UDVUQloxNjladGZrdExTM1pPVHM3dm5XNnBVN1RTaVp1ZFhFZ1Z0RlJoMHpTTkVTTkdrSjJkM1NsK1llMWtQS216VGVvb3NwL0N1VUhLanFrOS9mVFRIbDNYZjZocDJrSWxhcWNvN2d6NDBoMEpGL0t6dUovalpwMXl0V3VmZ296czdPd0hRcUhRN1ZkZWVXVzJvMVBCQTdpdFRnV1hhWnJDTUF6aDZGSWdHbzBLKy9NWURBYngrLzAwTlRWUlgxL1BvVU9IcUt5c3BMeThuSTgvL3BoSUpOSXBmbG5Yd3c4L2ZFS2ZVTmQxL3YzdmY3Y1pQZVMwMUZKaWFzTGV5RzRuQ3FTVTR0MTMzODM1eWxlKzhpTk4wMzZnUHYybkFjVkRFN0d4VUpQVlMzcVVWdG81VjUvUUtSNVNTdngrZjZldThmSjRQT2RObXpZTmw4dTFkZDI2ZGZFT3BuZklOSWtEa2VxU09wcnMyeHhGUlVXNFhLN1RSOWlrbEd6WnNxV05xS1hiSkpVNmRzZ3BhanQyN09neGRPalFIMnFhOWwzMWlUK055T3dPSmFNU0l1ZkxTVGhLbmd5SVdUMk11Y1dRWFpnUXNpR1RvUFNDeE0rY1FMcUNzQUc0M2U2eDU1OS92aWd1THQ3K3Q3LzlUWGRtUmpzU042Y0FPdXZaVWdYTy9scGNYSHhTUng2ZDBCaGJSNzJmVHZlem81SU9LYVVvTHk4djZOKy8vNE5DaUx2VkovMDBKYmRYNGxBTmNwOEpuODkzKzIyMzNhWjV2ZDRsdDk5K2V5MjB4czRjVnBsaEdJYnRhYlZKS0RqamE4NDRtOHZsd3Q1YVAzejQ4Rk5mMk96SnR4Mk5IanBNOFczU1VsT2lwbEFjVjNHNzdhYWJiaUlhalQ0M1o4NmNCcWRsbGs3Y2NHUkxPeEsyVkhFN1daTjRUNGdyV2w1ZW50d21kZkRnd1E3SGVhY3I2YkJqYXBiN09VZGRqb3JPU2xkeFJWUGMwakVqUjQ2VVFvaC92L25tbTRabGpiVnpTMVBFcmwyOHpYa09uTzZweStVaVB6Ly8xTFBZOXUvZmY5UXh0WFIxYWs4Ly9iUm41TWlSRDJxYWRvLzY2Q2dVeDUrTWpJemJIM2pnZ2ZpbVRadWVYYjE2TmVrc045TTBEV2d0QmJIS1JlVGgzRkdYeTRYVnBuWEN0MTk5cnNKV1hWMmRYSkdYdW5qbGNERTFaNTNhN05tekg5UTA3ZnZxOGxNb1BqOHlNek8vdFdMRmlsaDJkdlp2YlVGemlKdkVXdEpzK2FiSm1Kc1FRanJkVU9kaHU2TzJ1SjNJdmFXZm03RFpHOXFkN21kSDQ3eFRZMm9weGJjUHFzdE9vZmo4eWNySytrNGdFSWprNXViK2tiWlpVcGxheEd0L1h5U1FIY1haYkt2TkZyY1QxVFQvdVFoYk9CeHVJMnIyNHBYbTV1YkR1cC9XS085a201VFZVYUJRS0U0UU9UazUzMmxzYkF6MTZORmpwV1cxU1ZKaWJKYTRPUzAySVlTUXRxZzVCYzYyMkd4aE8rZWNjOGpNek94NndpYWxaTWVPSGUxMkZLUmFhdFkyS2VjU1kreUZLOUZvZEliVis2azZDaFNLRTB0RzkrN2Q1MVJYVndlTGk0di9MaFA5VjIwKzMvWlhlMkNsWmEyMXNkeWNGcHZUSmZYNWZJd2NPZkp6cjNFNzdzTG1GTFhVN0tlOTk3T2p5YmVtYVlwd09IeVpOYVZETmJRckZDZUhvcUtpb3J2Mjd0M3JQK09NTS82Wllyblo4VGE3OUFPSG9BbE4wMlJIY1RaYjJESXlNajczTXBEakttd1ZGUlhzMmJPSHFxcXFwS1dXNm40NnVncElLZXZRQW9IQUY2eDVhbXIwa0VKeEVoRkNET3Jmdi8vdG16ZHZiaG85ZXZUSGx1V1duTnNtaEdoanRaR1NJVTJOczduZGJ0eHVOMTZ2RjYvWFMwWkdCZ01IRHV6OHdsWmRYWjBVdGVycTZxU28yZjJmRHZlelRhdVVjNXgzWm1ibUE2Z2hrUXBGcDBEVHRDK09HREZpOXNxVkt4K2RObTFhbFVQY3BHTjJHNlpwbW5hbU5KM1Zac2ZhbkJsU2UwTHY1NVVwUFM3Q0ZnZ0VrcE02cXF1cjJ6UzFPMk5xNmNvNnBKVGlsbHR1Y1ZrN0N0UTRiNFdpRStGeXVTNi80b29yYW9jT0hmclk5dTNielJSeHN6T24wdDRxYjR1Yk01bGdXMnoyVjYvWG0zUkpzN0t5UHBjNWJwOVoyS1NVN1ZxbG5KWmF1cWIyMUF6bzRzV0xmNkFXcnlnVW5ST3YxM3ZqdSsrK1c1T2JtL3Q3UzlETUZIR1RxWmxTVGRQYVdHN3BTajk4UGgrWm1abU1HalhxdUNjVFByT3c3ZHk1azMzNzlpWExPbzVtVFY1S0J2UWJxbFpOb2VqYzVPVGszRk5kWFgyb3VMajQ3NENaeGkxdEUzT3p5ajZTNG5hNFdGdFdWaFpEaGd6cFBNSldXVm5acmxhdGcxWXAwbVZBZzhIZ0JHdVpzZHI3cVZCMGJ0eEZSVVYzYk4yNjlkQ3dZY1BldDZ3ejIwcHJseW1OeCtPeW80TGRkTEcyN094c1NrcU8zMGIyVHkwb1RVMU5hV3ZWT2hBMWtiS2xYVHR3NEVBZm44OTNIMm9BalVMUkpSQkNsQTBlUFBpV0YxOTg4Y0FOTjl4d3dPR1NKaTI0bFBxMnBFdWFUdGljNHBhVmxVVk9UczV4R3lEZy9qVDdHdzNUWk0rL3QxSzVldy9WKzZ0b09GUkRjMzA5Z2FabVF2NEFrV0NJU0NoRU5CSkJqOFNFcnNlSTYzRmhHcWFRTWlGc1BUM2hlYUpwMzZYcWNsR2NuRStwQmk0UGFKN0V3RXB2dGpvblI0SEw1YnA0MnJScEZjQlR0TWJiVE5Ja0UxTEZ6WmxJY0xxa3prVEN5SkVqajh2MDNVOWxzWlh2L1lUS3FvTlUxOVRSME5CSXM5OVBTMHVRVUNoTU9CSWhFbzBTamNYUVk3clE0M0hpY1NNeE5saEtJU1ZhckhyMzdVS0l1OVJsb2pocFNCUGlVU0FLc1JZSU5VSkdMbVRrMmQ2VW9nTXlNakp1cnErdnJ5Z29LUGdyWUhTVVRCQkNTRHZlbG1xNU9kMVJwN0RsNU9Rd2VQRGdFeTlzQjZ0cjJGZFp4YUhxV3VvYkdtbHE5aE1JdEJBTWhRaUZJMFFpVWFMUkdIcE1KeUZxY1JJeE5TbWtsQ0pZdGUxQ2w4dDFuN284RkoxTDZBd0lONEVlaHB5ZUNZdE8wU0g1K2ZsM2JOMjZ0Y0tLdDVrcGg1UlN5b1MyQ2VMeGVESTdHbzFHNlVqY01qTXprK1Vmdlh2M1BuSENGZ3FGK1dSL0pRY1AxVkJiWDA5alV6TW9NaklCQUFBZ0FFbEVRVlQrUUFzdFNWR0xFSTNGaU9reDlIaGM2UEU0aHRFNmdtajdodi90N3ZQNTVnSjkxS1doNkpURW8rQS9tQkEzbCtkemY3cDE2OVoxbWwvOW9vc3VPcGE3OXdadUF2YVNpTEcxRVRaQVdpVmRwbUVZeE9OeEdZdkZSRFFhbGZhMnE1YVdsdVMycStycWFxcXFxcWlvcUdEbnpwMlVsWldSa2ZIcFc4V1BTZGoyN3R0UDFjRnFhdXRzVVF2UUVuUllhckVZc1ppT3JzZUZyc2N4REJORFdpNG9pTEl6Qm54ZndHVDE2VkYwYXN3NGhPb1R1eFZPQUdWbmZyYSt5ZkpkMndIdzlmM2lwMzZNYU5XN0FGU2QrZVN4L05nbFlUTzJiVkQ1OTM5TFlxdThnWjFJQUNrUVVrZ3BNRTFKWEVMVWdHQmNhQ0ltTldKb0lvSkxoSENKSUc2WEg3ZXJDWStuRG8vM0VBY1haWEhHR1dkdzVtMGZmYXJmNTZqdDdmMVZCNmlzT2toTmJSMzFqVTAwK3dNRVdvS0V3bUVpNFVSY0xSYUxFZE4xZEQxTzNEQXdERk5JTXhGWGl4emNPVTNUdEhucVU2UG9NcGJiMGE3Nk80M0oxTHpmZW5mZ2p5ZVFtTVRqQTd5V3dlU1NTSmNFVFNLRmlSUUdramdtT2dZeDRrUmxuSWpVQ2Nzb1FUTkt3QXpUYUFTcGkvdXByYTJscHFibVU3K3VveEsyUUVzTCt5c1BjS2ltbHZyNlJwcWIvUVJhV2hMSkFxZW9XZFphc2w3TnlvQlc3M2l2bjhmai9wNjZEQlJkaW5CeklzbWdPTHhQNnVrKzY5bWlXYjA3RURkTmdtWTZ4RTJYcGtpS0d6b1JxUk9TVVZyTUNINGpUR004bUhSUFc0eFB0NEQ1cUZ6UlQvWlZjYUM2aHJyNkJocWJFM0cxWURCTXlKRUJqU1dTQmJhb1lab1NLYVdRU0swZ3Y4ZDNnUytvUytBVTh0YWFZd1NlMjBIa1g5VVlWYUV1OFpwZGZiUEpPSzhudWQ4Y2d0Yk5leFEvSVJON1MzMjVKKzAxZi9MWEozbUdhL241MWIxUDl0bkQ5L09iS0xpaWpzWXhMeE9PdGQ0aUVLTXZ6UnZ4ZFdyNXRlMlNTakNFTTVrQTBrUktBeE1CYU5JUUxpR2tTMnE0aFlaYnV2Q1lVYnpDamM5d296VTNrNW1aU2FVZVlhanIyRVB5UjdUWTlsY2RwT3JnSVdycjZtbXdrZ1dKREtpenNWMXY2NEphR2RDRUM3cHJ1aXJ0T1BYd1AvRXh3UlY3dTR5b0FSaFZRWUlyOXVKLzR1T2oveUU5ck43c284Q25lVzUrYitCUEpqZ3NOaS9nQWR3U3FRR2FCR0ZDV3BjMEtuWENVcmRjMGdoK3Y1K21waVlPNlUwYzBCdVByOFVXRElhb1BIQ1E2dG82R2hxYWt2VnF3WkF0YWpHaWxxakY0M0VSTjZ3c3FPV0NWbjY4dnBmSDQvNk9ldHRQUFNML3F1bXlyejI2cWY3bzd4eVBkc25mc2ZvZmovRFMzbUlLM0g1YUdnTzRoMDFrY0dBTGU1cjhOSWVMR2YrTm16aTM2UGhtZlh0NXV0MEVmSnpPYXBOSUNVS2FTRk1BQmxMR3BTazBZVWczY2FKb3VIRVJsaTY4cGhzUkROTGMzRXl0SGlWSHk2QzdLNHNzelhkOExMWkV2VnBOc2w3TkZyVkVFVzRzVVlTYkdCaHB1YUFtcGpSdEYxUVVGeFhkQzR4Uk1uQnFJUU02WmtPMHk3NStvemFNR2RDUDhwZnR1akcyZU9HWCtPcnM3M0xydHk4blkrTmE2cys5Z3h2dWVKQ1pZLzI4dmE3aXVEK2ZRSXdDcGx0V213L3dTaXZXWm1tTklHRzFZVnR0Y1dtSUdBWXhhUkNWT2hFWkl5U2poRUloV2xwYWFJd0hxWTM3cVlvMUhCOVg5RkIxTFFjT1ZWTmIxNUFvN1docG9TVVlJaHdKRTdXS2NHTkphODJ3dXd2c0xLZ0lIZGd4V2RPRXN0Wk9RVVN1cDJ2L0FvWkU2K3Evd3hIeGtKMmJtMWdha3BsUGRrNHgvZnNsZnVlYzNFemlrYy9OeGY3bUgvLzR4M1BUdUtSMmxsU2taa25qR09qRWlVa3JVMnJxUkNJUlFxRVFUVWFJK25pQVEzb3pOYnIvc3dtYkhvOWJMbWc5RFZacHh5ZnZyT0t2ZjkvQTN1WW9rVmcwVVlTcjY4U2pBZEhVN0Nlc3QzWVh6SnB4amN2bjlkNmI3ckUzLy9SNlNzKzdseGNQcE54UTl6SXp6cHZHUSsrbGNSMys3eWVNdldrWjVVcFRUaU95eVBqMUxmVForVFd5Q3gwWDdJVHp5Rjk5QzcxMzNrM3ZkNjZueHpmN3Q3bUlqM1M3NHZPblQ1OCtNd2VJN2hrT3E4MWpoYjAwYWNYYVpFTFlFdUxXSmtzYUowSkMyTUxoY0tJRUpCNmlMaDdnb041SVhCcWZYdGlTcFIwTmpUVDUvYlFFZzBSMEEwdy9GZVhWaEdLNm5RVWxiaVJNZGRsYWlLczk5L2pQN3dhKzNPR3p4ajVrMGE5ZXAvYW9YbUlMYTFaOVFNblVTeWhUMTh6cFl4Vk9ta0MzUzFNYTAwdkhrUC8wQ0Z3Yi8wbjlWWCtrN3BkMXVPKytuTzVmeXpxNjJ4VW5CRTNUSnE0KzR3ZFRIVmFicDFYY3BJdWt1TFc2cERwRzRwQnhZbEluR28wU2lVUUlHaEg4Um9qR2VJdmxralorT21GcjlnYzRjS2c2VWRyUjFKem9BdzJHaU1STnBBRFpjcENxeG9qZEJ5cmloa3k0MTFJS3BCUU41UjhNZHJsY2N3NzdyRG5aOE1aL3N1aWZMVWQraFhWdjg5SjdnNWg1VVM5MXhad3U1UFluNzRFQkdLOVZZanBDZWU1SlorS3AzVW56STl1SmJXOUUvKzgzYWRuZ3dqZXA3MUhkcmpoeGRITmwzZlRINHR2N09jV050clZ0d2xuYjVyVGFZc1NKeFdKRW8xRkNNa2FMR2FIWkNGRWZiNkU2M2tUQUNCKzdzRlVkU0hRWE5EUTJPVnFtd3NUaUpyaTdrWjhoQ2RmWEVkVGoxdURJNUtRU0laRmFYcDc0MXVabFB5bVpObmt5cFdNbU0vYWFlU3o2Wjl2QW4zZmdWZHd6R1Y3NjZYTnNQa0lNdXZhTnY3UDVDNWN6dWZCdzRyZVB6VnYyNFZmWFV5Y1RxQjU0Si9URjdTd0RHM3NSUmUvZFFON1lqa2JUdVBEY1BZSE11azAwLzNmYlVwTDQwdi9pME9WdkVZdWwvSWpQZFZTM2QwVUdYRDNuVTlXd0ZWODJqMXN2c3djM25zbVZjKy9tSEd0UHNmdWNPL251Tjg0NXhrYzBpUDdnZVE2TWFGdkRkaGo2bnA4eitHcFNFd2xDdUt4RFF4TkpxODFJSkJLSVc0a0VYZGVKeFdLRVpZeVFHU1ZnUkdpS0I2azdveS9oMzF4RXo5ZHZTaDVGLzNGbXUza3NiY285cW12ck9GUlRTNTA5dGNOcW1RcEhvc1RpRWt4QlpsRTNYQWVhOERlN1JKYTN0UThVaVFnZjJINUozYXI1ZDh4Nk5zWU5QMXZDczROaDYvS2ZNK2YreHpocjFVS21KaS93ZkNaLzc5dHN1T2JuUFBUY1ZieDZkMGV6SmcveHlpdjdHRDlyTEhuMnR3Njh6WUtmTG1OenJEL1gzUDF0SmdlZVk4N1NGc3A2dDdENXFWRTgrdFJNaHZtVXBweHd2SVZrL2VKaXNrdmp4RmYraytZTlJYVDd5Wm13SjRycmdiRkV2dk15TGRzTnFOcEg1TlVvK3A0T1lpVkR4OUo5R29SdS9RQzlhRkpLQ01OQU9nVFFOV0VjT2VPaVJPN2JkM1MzbnlZYzJGZkJDOC8reHhIdk4rbUtyL0hGOHk4NnFzZjBYVFNRZ3VlbUFoQmF1WTJtSDZ3OThzOW9ucHZlNlBmQU94ZnQvK2ttSUc0ZGlYNVNwQW5DTkVHQXhBQnBJSVdPSVYzRUVaYXdSV1Nja0JuREp5SmtHbDZhbTNiUXdCZW85NFNURzY1aWRhT1E3T3BZMkE0Y1RHUkJtNXFhQ2JRa0NuSERZYXNJMTVCSWFhRExESEo5UWpSR3drUTBqOUJNS1VpOE9NM3I5ZDZWZDk2M1diazhuN0krT1FCTW5IRTV3NVl0NDRNS21EckM4V1NGbHpELzdwZVo5S3ZIZVA2YXA3a2xYU0g0M3RkNTZlQW81cDJmay96VytxWEw0UGJIV2RsN0s0c2V1SXNadWRONTlybXJLQVBXLy9SZVh0bzVrMkVqbE02YzhMakt0UFBKcW4yVDJ2dGlaUHppTW9xdTkrUC8xbjhUM2dQaWExZFJjRVVQV3JiWFFkVWVBai9hMDhHajlDRDdKeU1Rci82ZHdJY0dUT3JBb252Z2VncG41Q044Y2VJci8wSHozMExIY1B1cFQ1LytBN24va1NlTzYyTkczNmpnd09Dbmp2bm5TbjA5cndIK0RlaUFMcVdNQzd2T1RhS1I2RXJBQk9LWVVwTkN4SVVoUlR5ZXNOcGtuQWh1UW1iQ0pXMm9yR0hIZFM4UXp5aG1lR2EvSTd1aSs2dGFYZEJtZjhJRlRmU0JKa1lSNllZRWFSQ1B4OEhud3lVa2hoN0hxdkxSN3YvYnJ1dUZFRmY2Q25Pby9jZGpUTHZ5U29hZU41blN5LzZERGJFWTZUek9rdW5mNXA2QnUzbmlwMytuTXMzdFcxZjlIZjlGVnpIZVlZSDV2RkM1WXg5YmQrNm1QT29sTDdDUHlnQkFDLzVBNG5iRmlVZjY0NGlpSG5oSEZlUHJDMmJNaDZjdzhXWm9lUzVrNE1qWkxOZjFFOGp0K3duK1grNXpXRjd0WFNMOXViOVJlKzFmYVBqaEx1U2tTZlM0cWNjeDNLNDRrYmlFZHRtbWdUKzV3T0dTZWxwcjI1SWRDWmhPbDVURTlGMWQxNU5kQ1JFWlMzUWxHR0dhakNCMWV1Q3dIUWx1Z0ppdWM2aTZwdFVGRGJaT3c3WHIxZUptUXRpTWVGekVEWUhISllRUk40VmhDbTFvWHFGTGM3bnZCQ2hmOWhDelh1ckZ3bC85bnFsRDh2RUYvczZNeWM5MThQU0R1T1dCcTNocDFuTXNlbU42cXF5eDdCOHhKdjlzRkU3UGN2VGRQK0RLNTVieHU0cEIzUHlySll5dWY1bTUzNzZMeGJRUUhUaUxKNGVvaStta0NOdmYzc0JmZEQ3Wk0rTEVubnFWNW0wOXlQdVBhUlRsdVlCcUFuY2RJWnZsTFNiN213UFFpcURIUDB1dHYySnVCTkR0Lys0a2ErbC9VZnVyT2l1bTJraThEdUxiNnpEUDZrdkJ0S0c0WC9nWDhXVE05UWkzSzA0b1BUM2RyaDJoOWY3WEZ2T2dibGx1VHBkVWdwQVNhVnJpSnVQU0ZDSWVseTZYQ3gwelVRSWlkY0ptakJZalFyTVdwc0Zvb1VadnBzaWRoMGU0MGd2YkFhc1h0TEdweVdwd1Q4eFlpOW9ON3JwTzNBQ2thWThqd2hRdU5CRVhwcFRDazkvdm04QTRhR0h6UDNlVE4rYWJUQitTbjNpR1FBdUh5dy80UnN4aS9wV3ZjL05UeThpTmVaTWxIZEgzWG1hTjd4S1dwcnFWdnY1TXZmc0hURTI2dEZmeDVBdFhFWTJDVDhYV1RpSWhvaStzSmZxQy9mOEEvaHYzZ2RjRnNhT29QWXJWMFRKN09TR254VDNxZkFwL2trWHcxcldFOS9qeFBuQTkzVXUzMFREN3c2Ukl5U2lKbkJzdXZBOWNlNWpiRlNjdFRJSDQ0cklCZDA4ZXNmZUJWVW1YRkd5WDFHcTVRaVJNcDBUNWg1WVlUb2t1VFhSY1JORUp5eGcrMDBPTEViRUtkMXM0cERmUnoxdlEvam5Ea1FpSGFscG5yTFVFZzRuQmtkRldhMDNYZGVKU0lqR0ZFVTh1T2haQ0NIRk5XZSs4RmlHK21YaTRITW9HNWxQM3IyVTgvOC9kYkgzdjd6eDAvMUkraUVHMFEzWExZZUxkMytaU2dnUmFyM0xXdmJTUm9pc3ZaOWhSbmp3bGFwMlVWRkhyVzBydXo4L0RWOWpleFRUMzFCSGY3ampxb2hDTkpyNWZGMFBmV0ljWU40YThiNWJpTHUyQlo5Slk4cTdJSXY3V25rVDErbUZ2VjV4TWVyaXpyNzA3NTh1NXBEVElKMXhScWFWMkpCaUdJUXpEd0ZrQ2ttaVVqeEUwSXdTczhVYTF1cCtJMmI0OVRtdFhzNVpjbmRjcWFyb2V4N0NHajVpbWFTMW1RVWlFZUd6dTJObGVXdlZuOU8wLzVLRVJoM2ppZTdjeDdZRVYrQytieGN6aE9VVHJEMU96Vm5nSjgrOGUyZnFITmZBMkwvMnpGOWRjMWw5ZEVhY2FmZnVUT2FrVVg5OWpMOEdRYS8rUCtoL3VRWHh0RWtWLy93YUZQeTVGdnJxV3hsOVdIOVh0aXBPSFFBeTlzK2VsbDlLMmFMZE5INmxkdEdzbWhBM0RTSlIvNk5MdUpVMklXOGgyU1kwUTlVWUwxWHBUKytmNzV6OWVZbGQ1UmJzRkxmNFd5eVZ0M1R3bG90SEVMb080WVFocFNtM3Jodi9OSDF4MnhqdHduSnNDRHJ6TjgvL01ZZXIwVVJTcGE2SlRjbURjeTEzNjlmZlpjTlV4bUJzRGp1cHVobUZRV1ZuSmdBRURqdnFodS9ET2d3NTU0NDAzMHY5aGtuTFBILzd3aHp1ZWYvNzVPaUFJaElDd0VDSm11YWlHRU1LMHRsbEphOUdMdExkWTJjdGVjbkp5Nk5hdEcvbjUrUlFYRjFOU1VzS2dRWVBhN0VodzE5VzNyMW16VnVjbHJEVnIwMVE4Ym1CWTFwcVVDWFV0R3pqZ2x1TXVhZ0I5THVDVzZVbzhGS2MrRXlkTzdEU3ZwWFV0Nk9kRzZhaFJveVk5Ly96eksrMVlteEJDeHlyL0VFS1lRb2prbWo3bjNsRjdXM3hPVGc1NWVYbms1K2RUVkZSRTc5Njk2ZCsvUDRNR0RhS3NyRldLTkhzcFN6RG9xRm16ZHhmWW9tYjV1NlpwQ3ROcW5kcjBmNnR5WFM3dEZuVnBLaFNLbzZWYnQyN1h6SjA3TnpmcGprcnBzZHpScEV1YVdOZHBDbXU3bGJCTFB4THJCeEt0VnZhbUs3L2ZUMk5qSXpVMU5ZUkNyZldLbWoxbkxSUU90NDc1dHVKcXVwNFV0bmJXMm9oaFEyWUJnOVJiZFhyaTZwVjFlcngyemFYZTdPT0lFS0xzdnZ2dXU1ajJTUVNYbEZKTFRONld3alJOTEdGTDFyVFo0bVkzeU5zejIrd1Zmb2NPSFdwOTJ4SWRCZ2tYTkdLTitVNjRvRHB4bzYyMUppMXI3Y2F2WCsxeXVWdzNxYmZwOU1VM3BxRHJ2dll2RkI2RENxcGFrZU5OZm43K1YwdExTNzFwckRiTnR0b3NjV3RudGRuaVpvODFDZ2FEQkFJQkdoc2JxYTJ0SlJKSkxIL1JuTmFhTXd0cUQ0ODBEQVBUTUszbExBbHJiY21UaTI0RVZPUFNhVXplUFdlVGRYVi9YSDJ6dTQ2bDFqZUw3T2xua0RkbjJOSC9rQ2RUdmRuSDMybzcrKzIzMzU1d05GYmI0U3czcDlYVzNOemN4bXB6Si9ZWFJOUEcxaEsxSkNhR1phMVpGcHZtZHJ0dlZHL1A2WTNXelV2MyswZWQ0cDlBRGJ3NTZzMytIQ2d1THI0Q2VOTVN0cGlVMGkyRWNKTklKR2d5Z2JES1BxUmhHQ0llajh2VVdGc2tFbWxqdGRYVjFWRlNVb0xiS3VXd2Q0SW1sVEZ1MVpFWXBvRXBKVkpLSklqUXdSMVRnQXZVVzZNNDVjbnNCa0o4L3M5akduQm9LN1RVbkRaYnNUUTRiK2VyaTBjTnZ1S09qWmJGNWtGS0hZRkxTZ3dTaGhTbU5ER2tnU0YxNG1hVXVCRW1IZytpeHdQRVlrMUVvZzJFSXpXMGhBL1FIUHlFK3BiZEhQTC9PeUZzeVdMY3VHMnRHUmkyRzJwS3BKbFl6Z0pTZUQyZUdlcUtWNXp5dUgzZ3kvdjhueWZVQ0pXYlFRK2RkcWQ0WU4vaVNjQUhTYXNOUEVJU1IwZ1hDRk1paFpSZ1Npa053OFF3VE9LR2lXNFk2THBCVEk4VDFYWENrU2pCY0pSQU1FeFRvSVc2eG1hMGFDVGhndXB4dlcwVzFISkRyYVFCVWlLYTltNFpJWVM0VmwzMWlsUGJuSEJCVHM4VDgxd3ROYWVscUFGNDNPNnIvdmUzQy9zbExiWkVuQzFsTndLWVVnb2pFV3NUY1NNUis5ZU5PSG84VGl5bUU0MVo0aFlLMHh3STBkQVVRSE9XZHlRTGNXMFgxRFFUYm1qQ1d0T3lzN091VTFlOTRwUzMxUEo2SitKcko0TG1BNmYxNlI0N1lzaUZwR3l6UWxvWlVva21wUlNtbEppbXhMQVRDYmE0eFExaThUalJtRTRrR2lNWWlSSUlobWdNQk5HU1RlNU9VVXRhYTNiQ0FMSHFUNy9MMERSTkNadmkxRVM0d0pzTnViMFMvejVSbk9hYjVuT3lNcTZZT1dWQ2htMjFTVnZjRXJQYUJJbVpSaUpodFVrTXd4UUpsOVNhL3FISGllbHhJcGJWMWhLTzRBOEUwZXdzcUc2NW9IYlNJR210V1NVZWt5NjY0RnFnbi9vRUtFNE5JZE1TMXBrM0I3SUxvWHNKYmZiOG5TaTY4RUxtNDBUSm8zTnZIWmZHSFhWSjBLUzBoWTJrMVJZM1RPSnhFOTIyMnZSV3F5MFVqaElJaFhIcnVJbmp4c0JGWEFvTUtZUWhCWVlsYUpacWF1N0MwdWtuSkVPa1VDaE9LM29XZEw4RWVOdGh0Ym1GeElXUVd1SXZrSlJTSWd3cE1Vd3BEZE1RY2NPUXR1V214MU9zdGxBRXJkVU5qU2RIaFNSYXA2UjlpTWJHeHVGQ2lNdlVXNkJRZEQyaWIvNkdvWGU4ek5aTyt2cmNMdGNsYTVjc1NFMGl1Q3lyTFRuT1NKclNLdGcxTGN1dE5kWm1KeElTVmxzRWQ3SnV6UkkyTTlrVG1oQTFRT1RrNUh4TlhSNEt4UW1rOGpXdXVQTVZ0clYrL01udE9aREowNmN4ZjBvSmh5MUVhZHpGaS8vclovejBNU2R3eWZndUhycnhLWmFsamtiem5NdmlsYk9ZZklTZi91THd3ZU9BVDFLc05oMkJoaVJSK2lHUXBta2xFcXpTRHp0ODFqYldGbXNWdHRha2dUWEZ3elJ0TjFSb21uYTF1dElVaWhPTVp4QUxmanVIRzNvQTZGUnVXczJjUjU5aWJ2YVBlUGJDd3pUeU4yN2pkOHVxeUx0OERHVW50SEhDemFVUFBzYXo0NC85SjNPek15Y0IvMDNiT0pzYlpOeXFraGFtRldzelRGTWFpVDVTbVlpM0dlaEdhNnd0SEkyaHBicWc5b0hWaUJvTUJpOEJocW1yVEtFNHFTcEh5WmdwM0R4RVovT1dHaXIvNTFkdDNjdnFONWcyN1JmODhyK2VZZXdEYjdCSDM4WGMyUTh6ZDVOMXUxN05TNC8vaWduVDVqRDArb1hNV1Z1ZDNFVVNyZHpFUS9jL3pNaHAzMlhvamIvZzloVzdxTFZ1Vy8vNGc0ejkwWitaZS84dm1IVGpmWXk4NHhtZTMzNk1kWGV4U3A2WjgxMnVXRnFaZU03R1RkeCsvWVBjL3FhMTRyejZJeFkrOE1qUVFmMzZEYlVFcmRVZGxiaE1LVFhEbENKdW1DSnFtQmlteE5RakhLenpVeCt6eXovQzdQN3czN3k1UDhUdURXK2gyYUtXTHI0R0NKL1BkNVc2cUJTS2s0MU83ZlozV0xiRHc3QWgrWlJjT0k3Uk5SK3h5bHJSV3Z2K1Iyd3RPWmV2WFhzbkczOTZFYVdlTTNsMHljTThPc2I2OFpvcWFvZC9nMWRYL29xMXM0dFp2K1JsMXJRQXNRb1dMZndMVzRmY3dOcVZqL0hoenliaFc3MkVPYXZyazg5Y1Z4bm0wbnZ2WSswZkZySjBURDJMWG5nL0tYeEhoYmVFVys2OUNQNytaMTZzOUxQdU55dlpQUHdxRmw2WUI3RUtGdnpvUlRZUHVZN1gvL3I0ZWM0NG03UXlvNENtQ1NGY0FqQk5Jb2JFTUVGQ011YVdHSzBHcG1IUzgreHpFNjZvdy8zRWJuYTNEazBJY2FXNnFCU0trNkZsdTVuLy8rWXdQeGxqNjh2RTZiT1pQeWtQT0lkcmhxeGs4WnVWekN2Tlo5MzZLc291dks3am1GcmZjN2xqVWpGNVFONlljeWg3K2cxcWd4RGQ4VFlyZ2lONGR1YVppVEg4SldPWVAvMGRKcXgrbi9JcGx3SlFPT0pMVEM1T1dJMmpSNVRBK21vcUljM1kvaml2UFRLSFVzZDNMcnpuNXl5ZGxJV3ZkQXFQWHI2TkdRdWZKQzlZd3J3bngxRUVSTGU4d1lyZ0NKNmNlU2I5dkZ3Q0xFMjEyb1JJZENJZ2hLbUJRRXJNaFBVbFRNT1VpVGliaGlIQnRGeFNkNnExWnJ1aGdBaUh3MU9BdnVvS1V5aE9kb3d0bFR3bWZ2bE1Gcnk4amZMcCtieTJJNThyYnlzK1dxODI0WUxxRUcwTUVDMCtpeExIMkxtaW52bjRHcXM3dE1wOG55ckc1bUhZVnk5aTlNc3ZVdjdsNjVodS9VN1JSaitCcGdwdXYvNTlnRDREQnZRZjhja24rOTVyRzJkREJ3UVNJWVFRbWtDYTFoUnowelN0amdRd3BVd0ttNVlxYXBhbEJpQzhYdThVZFhVcEZKMlRvdkZqR1YzelBzdit2b1hOSmVPWVduTHNqK0hya1ltdnVwcktXT3YzYW1zYWlQWW9QczZMbEVLc1g3YWF6U1VEOEwyMW1oZXR4V0crbkR4eWUzNko1U3NmWS92S3g5aSs4aisrbUdxeFNkbmFpV0JLaVNHbE1HV3FLMm9tRnBTYWlkSVB6UkkwZTZpYnNNczhMRGRVQ1p0QzBWbkpPWXRyaGpmdzRyS1BLSmt3Z3FTdWVUUHhFYUt5NmNoQmZ0K0lpNWp1Zlo5Rnl5cW9CYUxWbTFpd29vclJVODQ5cnFVaTBTMnZNUGV0Zk9ZOU9JZEh2K3huMGVOdlV3bjRobzlsTWh0WnRLSUNQNUNoTjE2VVlxMGxWL1JKcEdaYW9tYUNFRWlpRVYzb1JweHd3RTlkSEtTWnFHdHpweVlOYkRjMEZBcGRyTnhRaGFJems4WEVTWVB3YmZCejVYakhxUGFTYzdqNTNIZDQ2TTRmcyszQmhUeDZ1SWZ3RG1UZWo3L09nbDh2WmRJMFA5SHNmQ1orZFRaUFR2azBvOS9ieDlqZ0xCYTlNSWtQZnIyQm9objNjVU94QjJaTVkvSTlMekIzOVZrc256S01oVCtleG9KZkwyWENNajlSYjE2ZnkyWitlOGcvbHYzbmh5VDdSbkZKbVJnWmpoQkNBeUdsa0Y2WElLcEhPVmdmdytWeTQ5TWtwbFgrSVhyMjdFazBHaFd4V0l4NFBDNU0wOVNrbEM1ZDEzK21hZHAzMU1XalVCd2RuMmF2S0IrditteVcwS1kvTW1sNUNjdC9lUkVscDhoNURJWWlTM0xHWHZzaTBBSUVnS0NBTUlLb1FPaENZR2hDbUc2WEpyMGVGejZ2UjJiNnZHVDZmR1JsK3NqT3pFQkx6WWFTcUYvVE5FMmJwQzVWaGFMekVtMnM0UGtWMnlqNThybW5qS2dCWkdYNnprdm5pbUxOYWNOdXM1SlNKRG9SVEd1RmdaSHNSTkJTaW5LUlVvcUdob1pocUdVdENrWG5aYy9MWEhIck03elU0eW9XVHNrN3BYNDFJY1RacTUvNVVlOE94RTFJaVVDQ0thMU1xTE9IMURyY3FRM3ZKSHBETDFKWGprTFJpU205aXJVclQ5M2ErVEZubnprTTJHOExtd1NYa0dnSTIyS1RRb0tVZHUrb2RkaGJyWkpaVVZwSEZBbVh5M1dodW5JVUNzWEpvbnRlemlqTFNrdE8ra2djc2xXcnBOMC9LcE9WSFlaMWFLa1cyL2UrOXoyWEVHS2lPclVLaGVKazRYRzd6aHQ1WnIrVWh2aGtuSzExbEJHV0t5cmJ1cU5haWh2S3d3OC9mQUhRVFoxYWhVSnhFdW4yL0NQZkxYVmFiVExSRkovWUZpL0JtcTZMdEVRdE9kTElhYkZaQ0ovUGQ1NDZwd3FGNG1SVFd0SnJTSHRYRkszVkhVMFlaYVoxR0xJMUVhbzV5enhJekY0N1g1MVNoVUp4c3NuSnpqekhZYkcxS2Z1dzlVcGFXVkpwN1Q4MlpHS3NrV1piYTFKS2NlMjExN3FFRU1waVV5Z1VKeDIzeS9XRkFiM3lYU2tXbThzU05FMUtCRmh4dGpidWFHdU1UUUJpeVpJbFh3UnkxQ2xWS0JTZHdXaGI5dWg5L1oyaUpxMTlvemhXOHlYaWJNNmFOb2ZGQnBDUmtmRUZkUzRWQ2tWbjRjd0JmZHNrRUdnYlp5TTF6aWFsaVNuTlZ1VWpVYjgyUnAxS2hVTFJXZWlXbXpXRWRzbUR0bkUySEhFMjAweTBXYmtkWTRxRUVPSmNkU29WQ2tWbndlTjJENmQ5akMzWkw0cXpuaTNwanJaYWJPemF0YXNuTUZpZFNvVkMwVmtRUWd6NjVmZG01WFFrYmlSVUxWblBacnVsZG94TjlPblRSelc5S3hTS1RzZWw1NS9ieHhJeWErQWtHaEpoVDlXVldKVWRWaGVDbEk3c2dzZmpVY0ttVUNnNkhYMkxDL283ckxSMnRXeFlJNHhhdXhBU3dvYVVVcmhjcnJQVktWUW9GSjJObkt6TU14eWkxa2JZckRoYndpT1ZDTXNWRlpyZEl5cUVVTUttVUNnNkhSNlBlMUNLcUxrY0ZodXQ0cFpJSU5pdUtOWWR6bEtuVUtGUWREWTBJWVk0ckxUMkpSOXBFZ2dhSUdwcWFnWnp1SFdCQ29WQ2NTU3FOekYzem9NTW5Yb2ZjOWJyeC9PUmZTc2Z2Ny9RS1dqU21zZEdzdVREVGlBNExMYWNuSnhCNmwxUktFNVgvTHg0L3k5WVZBbFV2OEcwNzc5QjVURS9oczZhRi83Q3VwNVhzZmFsWC9Ea2VFL2JtN2UveElRYmw3SW05dWxlNGREU2ZrV2tMZEsxT3hBU2dxYnJCdUc0WmJHNTNlNHk5ZVlxRktjcExidDRzM0VnRjVaQTdaWnRSSWNQK2hUTFljTFVOdXFVakJqVVpxdDhrdEtMZUhMZUZNWjdQOTFMTE95UlY1ekdIUlZ0RHlrTTB4UzZBVzRwcGRBMHJWUzl1d3JGNmNaVzV0NzZJdXVDWWVwaUhqYmYrQkhSWUlDb3Q1SUpOZGV4ZHQ0NWJlTlRzVXBlZlByUExGNWZSUzJaRER0M0NndnZ1b0JoT1pVODgvMW5lR0pIbk5pT1JZeGRQWlpuRjEvRGFPZlA3bGpMN1kvb1BQcW5iekQremQ4d2NobmNVQnBtM1k1cWFtT1pUTHpwTmg2ZFZJeXY4VzFtM1BvT2VSZG1Vcm05Z2RvbUtQdnlOQmJjT0tSUFcwc3RHVjhUSmxKb2dHN2F4bU0wNFlvS0lRYXFOMW1oT04wWXhxTy9mWVNWTS9veWF1WjMyZmlIT2R4Uk1vajV6enpDVzZtaVJvZzFqei9ERTQxamVIYkpZMnhmY2lmWEJGY3o2L0ZOMUZMQ25iKzhqL25EM1l5NmFSNGJVMFV0SFRVTk1HVVdhMy83Q0cvZE81RDFTMTVtVFV1cmE4endHMWk1K0dFMlBqT05vdlV2OHBNM1E3MHR5Nnk5dUFGU0NPRjJpY1FkM043RURVS0lBZXBOVmloT1IzUzI3Z2hRZGtZeHRGVHlRYXd2dzNxa2MxZTNzR3g5SnROdnVvaGhPVUJPQ1RmY05vNjg5OTloWGVPbmVOcWVaM0hOaU1UYXdMelNNeW1MTlZBYnRHOHM1c0l4QlFsaDdYRU9kMHpJWmVNN08wbzZFRFY3c1Fza0J4VkozTllOU3RnVWl0T015dFhQTUdOWkpmNm1NR3g1a0hXRXFRdDYySHhyQlRjLytEM3VkQWFvbXZ6VVVrQnBUNmM0OWFXRWo5alRDUFQ0REMvRXlqTkVkU0JOREs2b09BLytIZW1YWXJFSkNacEltYVpyeTV1MmE5ZXVZaUJEdmMwS3hlbEZ5WlE3ZWV1WmFZenYreVdXL3VFUlhwMTVKbWRkZFRjYmY1c2lhZ0RkOHlpaW5qMDFiZDNKV3ZJbzdmSDV2czdLeWdiSXpzMzQyYnhiY2pxMDJGTFFDZ29LZXF1M1dLRTRUYW1wb0prdkJxQUFBQ0FBU1VSQlZMeTRoREtnZkU4OUphWEY2ZStYTTRLWjQ4T3NlT0Z0dHJZQUxaVzh1UFFOYXMvOUVoT1B1N0JWc2VwL0svQUQwY3EzZWVMTk1PTW5uTWtYQjUrUjV4Q3kxbnEyRktScDR2YjVmTVhxM1ZVb1RrLzhsUTFRTW9ZOC9KUlhlaWliNHVuZ25sbE12dmRPYXAvK003Tm1yOFFmeTZScy9CU2V2V3NNUmNmOVZlV1NWN21hYWRmdm9qS1d4K2dwTi9Eb3BEeWFkL2ZJNjhCYWExMUdKUkNHYVVnUmpVYnY5SHE5VDZ1M1dLSDRiQmlHUVdWbEpRTUdIRVBJK3VOVjZzUTVhWHliR2JlK3o1Vy9uY01OS1paZ1pYWGRnbjVmdnZrZElHQWZBa0lJSWdJUkV3SkRFOEowYVpwMGE1cFdwTTZtUXFIbzdHUmwrUEljYm1nYlM4MDU1UU1rbXFacEJlcVVLUlNLem83WDQyNFhZeU5kakExd0N5SHkxU2xUS0JTZGdoNFhzSHpsQldsdmNydmJDRnY3UXlKc21kUDRiQlVvQ29WQ2NVSndhVm82VjVRMlZwdFZxS3NCZWVxVUtSU0t6bzZtaVJ6U3hkWmtHM0VURXRDRUVFcllGQXBGcDBlSTlzS1dhcm5aWFZVYWtLMU9tVUtoNlBUQ2x0QXFwL3VacHV0QUpvVXRTNTB5aFVMUkJTeTJ6QlJSYzJpZWJDTndHcENwVHBsQ29lZ0NaQnpHRFcxanRXbWs3YWRYS0JTS1RvZTN2WGVhVHRaUXdxWlFLSTZHRUp0WFBNT0U2Ny9MME8rL1J2bkpFN1oyQ1lOMkFpZGI1NGNyRklwVGxTMS9adExDajRpaXMyN1JRdVp1K2hRYnBDcmY0YUZsZmlZL3ZKRHR2N3lVNDdja3BaNTEvL01HYTZxUDZzNnV3MWhzMWtaNE1HbHRTMUFvRktjb1d6ZFZVRFJtSUQ2cWVHMVBNUmNPOFJ6N2d6UTJVSnZkbHd1SEh1OWNZd092clZqTmEwZTNGa3ZyMEVxelRMWEVKbmdRVWtxcDNucUY0clBUMmFaN2xQL1BrOHhZVVlXL1NjZlhQUk9mbmxqYVVwamRrNXQvM0g2WVpPMm1sNW43bTNkWVg2UGo2M2ttMDJkOW5mbmpDNGl1WDhxRXh6K2lMZ2k1MlptTW4zMGZ6MDVxVy80YXJkekVnbCsvd2lzNy9FU3ppNW40MVdrc25ING1SY0M2UmZjeE4zczJHNzkxWnVMTzYzL0QwTi9rcy96SGVTeTRmeTFibThLUW5Vdlo1YmZ4NmxjcjB5NXplZlMyY3lnQnhQQ3AwNEFnaWVrZWZxQUZDQXFJU3RDQk9DQTFFcGFiUXFFNHhTajc2aHcyL3ZZbXB2WThoMGQvK3dodjNYc09mUytjemNZL3BKbVFXL2thc3g3OWlKSlo4L2h3NVM5WWUxcys2eDVmd3FJOTRCcy9pNDBQanFPdys3azgrYWRIMm9rYXNRb1dMZndMVzRmY3dOcVZqL0hoenliaFc3MkVPYXZyRC84Q1N5NWw1UjltTTcxN0psUG5Qc0tyc3daYU43UmY1dkxRV2orSDFTcVJtQk9lR01xbW9RR0d1Z1FVaWxPVW1pcktldzVpbUJmS3QxZFROcnh2MnJ0dFh2ME9sY09uTUc5OEFUNDhGSTJaeXJ6aERheFlYWEhFcDRodWVac1Z3UkhNbTVtdzBId2xZNWcvdlMrYlY3Ly9LWk1NN1plNXJIOXJHLzcyV3RXK1Y5VENEY1JJcmxOUUtCU25CbHQ1Nkk2L3NLYkpUMTBzazJrM3JrN3NETTEraEFudlQrUFZlV1BhTkluWE5vYkpLeTV3ZkMrTGtwSmMvSlgxUkJtWXNvb3ZSZGdhQTBTTHoycXpLTG1vWno2K3htcHFqOE52a2xqbUVzYWYwS3FqUXVNWTdxeFFLTG9LdzFpNCtHR1dmam1mQys5NmtJMS9tTVhVbmlNU0xtbUtxQUVVOWNqRVgxMlBQL2tkbmNxYUFIazlDZzRyYWdDK0hwbjRxcXVwZENoSmJVMEQwUjdGaWJIaG43R2d6RnJtUWw1N3JaSXBYOXNJVzFoZEJBckZxVWlJOG1vb0s4bUN4bXJLdmNXVWRTQXlvNmQ4aVpKL3IyWFJKajlSRW9tRUo5N1BaL3FVZ1VkOEZ0K0lpNWp1Zlo5Rnl5cW9CYUxWbTFpd29vclJVODZsRENncHljZS81U1BXTitwRUd5dDRmbldGUTZFOCtMdzZ0VFgxUkpQZlM3L01KUThpUi9Wcnk0UXJHbElYZ0VKeEt0TEFCNVVGbkZVQzdLMml0dWVnanV2UFNpNWw2ZHd3YzMvekNDTWZzYktpOTg1bVh1bFJQSTEzSVBOKy9IVVcvSG9wazZiNWlXYm5NL0dyczNseVNtSTRkOW5sMTNIUGxxWGMvdi9XRWUwK2dLa2o4c2xOL25CZnJwa3lrRm0vZVlSSmUrN2tyWm5RMFRJWEtXVTRqWFhtK0w5QUNJa3BUU21rbEI4QUk5VkZvRkI4TnRReWwrUEFZWmE1bUZKdWNZMjQ2b2UwbG5zNEY3cEVCVUlYZ3JnbWhLbEpLZjNxYkNvVWlzNk9sTEtsWTJ2Tm5wMmJRQU9Vc0NrVWlrNlBhY29XaDRESmRJSm1lYVM0cFpSTlFnaDExaFFLeGNubk1NdGNETU1JSE1aaWMrb2FtcFN5UVoxTmhVTFIyWWtiaGovRllwUHB4VTJnU1NucjFTbFRLQlNkbldoTTkzZmdma3JIdWdNQU5NTXc2dFFwVXlnVW5aMVFKQnFnZld4TnRuZEVRZE4xdlZxZE1vVkMwZGxwOGdjN2NrV1RZbWRuQzl5UlNLUW1KeWRIblRXRm9oUHh5WUVhZFJKUytHRDdua0RIb2lhdEZhT0pRV3p1Z3djUEhpd3NMRlJuVGFIb1JBem8wMU9kaEJTcTZ4dnRjZy9URmpXUjhENmw3WUlLSWRBMGdUWnk1TWdhanJZSFM2RlFLRTRPa2JtL1dobzZqQ3Y2Lzl0NzgvaW82bnYvLy9VNTIreExsc2tlRWhLV0VFUkFLK0R2aWxoLzZOV3FiUzlZV3JTOVNsdSthUHVyMUc4TDFRcTl0cUJ0b2N0RmJ5dFdyMWhic0ZxZ1ZXcFJSQlRVRmxjVU5TeWFSQ0FRUXNqQ3pHU1ptWFBPNS9mSG5IUHltWk16U2JCc3d1ZjFlQndUQW1hWk0vUE02NzE5M3RUYUNZKytvM2IzODhlTmk0dnJUQldsOUlBTlpEcmozREpFRExCUlN1aysvdEJ4Y1hHZHFkSjAvYUFOYWhsdXpkeVliQVNrYWJEcHV2NHhmK2k0dUxqT1ZDV1Rhck9EWTNOcytTQWt2Zk9BYXByV3lCODZMaTZ1TTFYeDdwNW1oeEEwYSt1SGxLWmhza0ZSK041a0xpNnVNMEVwYkZqNkE4eC9UVTMvc1dBYWZuN0haMW94aEJ3YklTUmRHUVZBT3pvNjZ2bUR5Y1YxWmluUjlCWVczWGszeGw5M0cycSs5a3NzMk56RW5ESTdORURVYlg0ZWEzZWZyTE5rVzdCcDdTdlkzbkdpUDYrTTZ4YjlDcnZXL1JMdkxCZ0hCVUJEL2I0MkJtWTIxMmFPVXhIcnZ3SUFXbEZSOFJGd25JOFpGeGZYeVZQeVF5eForaVIyVk0zQStzZC9oczBMejBmVHd3OWd3ZmJqZ1ZRUGRyeXdFV3Yybkt6VC8xdXdiczFMMk5aeGNqNjdTNUVSVEFlU2lUdSt2N3pEN3RRSW9JTms5TFNsQ3dna0hZcWExbTRYZ0FuOEdjWEZkZm9WM2Y0U05tQVNIcDE3ZnZvNDczRlhZT24xYitPYXA5NUQ2NVRKaURpY05MdHA2Zi9Ga3NMYjhQTGNTdXg0OU9lWTkydzdvbDBxa251V1lmempBT1FSV0h6ZlhGeWZBMFEzUDRCSmF5VmNWOWlPSFEzdGFGVktjZjNjRzdGNFN2bzQ3OFMyaHpCK1RTSFdyL3c4YWdFQUgyTFIxeDVHOUxzL3gzMFh0dUNSTysvRGlrWVZpVlFQdHY3d0IxZ053RFg4YWp6KzA4dXlIeitlb1c1c1g3c2FTNTdhaGZvdUlGZzJCblBtZmhtM2pnczYvRnU2eHdZMUhZQk9BUW9LQ3FTM3ZoTmlMQmFsZWpySGhuUmx0RTRRQkE0MkxxNHpRRTBOTFVEVlpBTXFhVldQcmtUd3FROVJqOG5wN1U4RGFPTE5QOERyTjBleCtzNjdzVzdLUXF6L1FsNy9mOVNwWXNLaS80dmxaVEphdHorS0dmKzlHbFVyYnNPTmhZTjlkNFg0K2svdndkZXhFL05tUEkzcWV4Y05iVGNDRzJhL3RSNjNQUVVzL09uUGNYMVpDblViZjQrYjcxbVA2b2R2eHBXMkNVOWQxK3ZSUDdlbUE5Q0oyWlJMUVRWS0lZR0FDQ0lFUWdnRlFGVlZyZU5QSnk2dU0wT0pMaFV1UmNwY2ZlZVQ0RXFwSnk1blZEQUNVOHJTSzRValU2N0dEUVVmNDIvdm5hSUR0UlVacmxRUFdqdWlpTUtMMnF1L2ljMFB6TUkwaDdGMVhVdnVRLy84R2hPQ0Vpb1FBSlJDQTFNOEFFQjdlbm8rNEU4bkxxNHpReTZmaEVUU0JyRXVGUWxaR25UUDV5ZFRBR1U1UUxUejFHempkSTJiZ2NlL093YTcxanlBNlYrNUM5UC9hejAydEtpT1AxdXlOMzdRQmpRTjlwWVBRaWhKVDhKVFF2cEdxdWpldlhzNTJMaTR6aEJWMXhRQ2V6NUVYVVo0Mm9SbzJVZ2poeVVEU0NGeHd0YWR4OURVQWdURG5qUjRGQm11Vk9xa1ZSUVRMUzFJakw0TTkvMTBFVjcvMDEyNGIyb1BWdDY5R21zZENoSFI5Z010QnNBMEJtckdaVlJFS1FVRklCQ1N2a3ppVFo0OCtTaUFEL2xUaW92ckRIQnNGMXlCNitYWHNlU2hPdFRIdTlHNit5VXNXTnVPSzc4d0xwMWZ5eWxGYmNGQi9PM2xKa1NSUXV2dTU3SHFmZFgyV1R3b3k1RlIvL1l1MUNlQlJEeUtLQXZDSXp1eGFYYzNnQlRxTnorTlZVY3FjYTJadkI5ZWllcU9YZmpiZTkwQXVsRzMrU1ZzNnJSL2wwR1U1YlJqKzl0TmlBS0lkblFQR1lTdDI1L0FOWGMrZ1UwdEtRQmVSQW9EY0NYN2c3UTNnWStPSGQ3Wmc2eXRIdWxMcHdDSUFKbWtpd2hXOFFDQXJ1djYyNElnak9SUEt5NnUweXlsRWdzWHpjS1MzenlKYTJhM0ErRlNYSG5EclZnK3hXdjhnekxNLy9abG1QZmZ2OEtFMzhzb1BlOENYSGxlQUUwWm4wVEd0SnRtNE1wN25zWTFNNThFd2hXWWY5ZjNjR3VOOGRjK0wzWTkvaXRNZXE4ZDBaeEtYTC93eHI3Q1FlRy9ZZWxOSCtLMmV4WmhWZEtEQ1pkZWdDbWw5bSt5RXJmTW5ZeDV2L2tWSnZ3ZUNKVCtHKzY3YnlhbURhSFh2K3dMTitQQmp2Vlk5djBmNExZdXdGVlFpZXUvZTZOUjRlMXIwS1dVZnVBVWhwSjBWVlNuNmVQWEFFS29MS2JkR2lFRVJCUkZXZGQxQ1lEYzA5TnpxOHZsK2hsL1ZuRnhIYjgrVFF1VG81c2Z3S1NuUitDWis2NFlZbnZHNmRIaG94Mi9MTDdzUDE5RmVrbHlISmxMa25zQmtoSUlWRUtJTGdrQ1ZTU0JLb3FjenJHWmxkRm9OUG8yZjNweWNYR2RLZHJkY0dDZnphMnhPVFpLakpFcW96R1hrblNPalFwc25EcHIxcXkzRFNweWNYRnhuVzdGdi9hRDVTM0lySVJtZ00yOENDR1VrTDRUZENWQ2lIRktPUFN0VzdmcWxOTHRoSkRwL0RIbDRqcDdGWngrSzNhZjRhOXlWZFBlYW1ydDdBYzFZNVNLQXNSd2JlYU1hQnBxYkI4YmpMZTZxcXJiK1czbjR1STYzWXJHdTk5M0NFUFpjSlNtWTFCWWJvMlk3UjdHSDZpWlo0dkZZcS96aDVTTGkrdDBhKy9IQnhzR2dockpPRG1YUUNCR0g1c2dJQ1BIQmtELzFyZSt0UjNBTWY2d2NuRnhuVVlkKzhhaVh6ZGxnWnBEamcyVUNBU0NRS2dnR0k2TkVYM3l5U2RWWGRkZjVvOHJGeGVYa3lnOStWOGpwYXF2MVRVZVlzTlFOUk51Zldld01lRW5DQkVnRUNGZFBDQ0VtSDF1RklDZVNxVmVjYmxjMS9KYnlNWEZCYVM3WVErblBEaVNVS0NCSUo3UVR1clhhMnRyMjVrdERLWHBBZ0tsNXRRQkNGS1VBRlFFcUFpcWkybXdBVll2bTA0cHBTMHRMYThNR3phTTMwMHVMaTdvRk5nUkN3S3VBUHg1UWZoOGZoU2U1Sy81NFVkL3IzZUFtZ1pBTTFsRkNLRkVFQ0FJQW1SWmhxSzQ0SEs1NEhhNzA4Y1dtWVVEMDdGVlZsYnVCdkErdjZWY1hGeUhVMjdBRlVCaFVRbDhQdjhwQ0hWcDNkeHZmcjNORm9hcUJ0UnNSeGFaUFd5Q2tWOUxnMDRRQkFGTW5zMkNtNnFxVy9ndDVlTGlPcEpRNEE4RVQ5blg2K3JxZWczT3ViVytpbWpha0JrdEhnSUVnY0NDbWloWTdSNW1LQXJqZjlTajBlaEwvSlp5Y1ozYm9oVFFxSkRkcWJWdHg4cnZmUVdmdS94aVRML3FQL0REdnpjREFKcWYvQ1l1dmVSaTQvb20vdHc4OUs5WlgvOVJIVEx6YTdiQ0FYVExpQm1UQm9JZ2dCaFFFd1VSa3VuWUdMaFJTcW1lbjUvL2lwN2V2bHpLYnk4WDE3a3BRb0I0VXN1U1U0dmg1ZnNXNDFsOEN5dWUrZytNVkdLSUlRQUFLSjcxTUxaOUlZRkUrOSt4NE1abmp1ZExIcnIyYzFmdHQ0V2d4bVVQUXlrMFZZY2twNkVtc283TnNHOU9TMGMxVGRPZTQ3ZVdpNHZMV2MzNDRNTWthcS8rSEVZR0FMZ0NDTEJINExwY2NCM251dUtlbnA1dDJkd2FJZENRc1hLUFVsM1hxSjUyYkZRUVJJaUNDRkh2N08vWXpMbFJBSG9zRnRzY0RvZS96bThnRnhjWEUzOWk0NTMvaWZ0M0pKR01KNEZmWEl2UC9RS0FNZ1YzL25rSnBycUc5amxlKytNeVBQamtkdXlQS3lpYWVBM21mZis3eU85c2ZOY0dOYXR3WUxSNTZBUklBODM0VE1sNEhPM3hPQVJQQkZWbFBvakVuUWFiZWVtNm5nRzMzTnpjelR3YzVlTGl5bFFlcnY3cE03Z2FlN0h5aHJuWS8vVy80ZDdweDdlSllkK1RQOENQLzE2Qk94L2NoS201Y2J5MjhuYjgrSHUvUGZUZTFwODBHc1pLdFlNTmxPb2doSUlRS2dvaVJLSWhxUko0d2lFRWpUWVBVUlFnZW5JZ3BDMmNrREV2eXBSVWRVM1ROdklieWNYRmRlSzBGeHYvK2lGcXYvcGRUQzEyQWE0OFRMN2xHNWg0OU9tWDRKaGI2ejlLUlVoNk94VWhBREhDVUVFVUlZb2lSRW1DSUlxaTVkak1rQlI5Ky91MHpzNU9Eall1THE0VHFIYTB0L3RSVkJ6bys1Q3JBZ0Z2MjQ1c1lhZ0Z0NHcyRHdBZ1NFTXRYUTBWUlJHU0tLYkJac0tOZ1pyVnp4YUpSRjVCZWtzOEZ4Y1gxd2xRTG5KejR6amNGck0rUW51Yjkvem1qUVAyYW1qS2hCckpQREhYT0NrMy9mK3lVQk5GQ1pJVzY2dUttbStaWTR5c0FkUmtNcm1CM3d3dUxxNVBySXcxZ2FOdzlSZEhvdTZSMytMbDVnU0FOcnp5MndkZVF2OUpnNHpDZ1hXd3BNRW9RUlJBb05ORWtrSVVDWFFLU0pJSWljWWdzWTZOeWJVUnBqcXFIVHAwNk8rVmxaVUwrZDNoNHVJYWlwcWYvQ2ErZkYvZnF1SjNicndZOXdPWTlNTk4rTVhuQXFpWTlYUDhWOXNTM0QvdlN2dzRya0FMalhqWHdhM1pHM01wVE9NbENCQmtCWDZ0Ry9HT0kyanNKSkQ5WlJpWG13TTVNQkpreElnUjZPM3RSVzl2TDBra0VraWxVa1JWVmFMcnVrQXBsWkRlek9wU1ZmV1BnaUJjeVc4WkY1ZXpQazFicW9ZcVNvRzNZMkVVVnB5OHJaeXFxcjQ0dktKc0pZQmU5RzJqTXE5dVFrZ0NRSW9Rb2hKQ2RGRVVxU1RKVkZFVXVOd3U2bmE3NFhGNzRQVjY0ZlA3RVF3RUlFaVNaRHEyak9xb1BSenQ3dTUrbWo5MXViak9MUkVDU0VSSFY5ZkoyL0hVM0h6b1ZZY1FOQVZBSllSa2JxVXkyQ1FJQWtSUm9GWnVUUkloU1JKa1NZS3NLSDNGQTNzUndWWWQxZSsvLy80TkFBN3dXODNGZFc2cFFFbWdLM1p5RHRXbWxEYjkxNDhXNzJMQWxyS0ZvVHJNSTRyTW5RYlcyRlFmdHlSUlNvTk5scUVvU3A5alkvTnNnaUNBb2FNT1FMdnJycnQ2VXFuVU9uNmJ1YmpPTFJVcENkQkVIRWVhbTA2NGM0dkg0ODg5dittNWxKTmJBNGc5djVhR216RVhhb2VhSk11UUZRVXVsd3VTSktVL2FQd2pLb29pMFRTTkNvSUFUZE1vNDlyVUF3Y08vTFdxcXVxNy9GWnpjWjFiNGVnRmdTaU9KTHB4dUMyTzJGRVJYY2tUYzRMdUs2Kzg4bllXdDZZQzFCeDhUM09JR3RKMWFKcEdOVTJGcXFhUVNvbElKa1ZJdlNKNlpRazlMcVVQYkV5dWpRMUhNMlpIUjR3WXNVdFYxZldDSU16Z3Q1dUw2OXlDVzZGYlJhRTdCa3FCekZVcG4weUpaT3B2bHkxYWROVG0xRklBVWdSUVFjd3dGRlFnb0NJQlpCRlFKTUN0RUhnVXdPc0N2RzRnNEFWQ2ZpQTNDQlRrQUlJc3k3QzVOdGdINDQxUkt3M3BTUVFlam5KeG5lT1FPeEhhM1hqZ1ZRZTNsdEhta2JGaXp6aDNUUlRUb2Fna2lwQWtFYklrUXBZa0tJb010MHVCMStQdUE1c29pdVpiYW9hbHpKSGhWblUwUHo5L0M2WDBWWDU3dWJpNFBxazBUZDgrWWViOHhnSGNtdFozL2xyYVhJbUVVRkVnRUFXUlNxSUlVVXpEVFpZa0tMSUV0eUxENDNiQjczVkRVQlFGc2l6RDd0eHNEYnRXRVFHQTJ0WFY5UVMvTlZ4Y1hKOVVCdzYzdmpDQVcxTU50NmFUOUpaM0toQkFFSWpoMUFSSWttQTROUkdLTE1GbHVUVVhBbDVQSDlnY2lnam1pRlhHN0NnQWJmcjA2ZXNvcFh6WkN4Y1gxM0ZMcDdSdTZsZS8vMzRXdDJiTWgvWVZEZEpnTTl5YUtGRFRxYVhiTzJ4dXplTkdNT0NENEhLNWtBVnVHYTZORFVkZmYvMTF0YmUzOTNGK2k3aTR1STVYUjlvNm4yMXE3V1NobGpTdU5OU0llWkpIdW45Tk1QWWFtQzBlYkc1TmtmcmNtcy90UXNEblJZNGRiRGE0c2E3TlBoaXZybG16NWtrQTlmdzJjWEZ4RFZXVTBvWWYzZitISFlPRW9kWkp1UVJBMnEwSkVNVjBiazJTUk1paVpCVU1YSVpiODNrOUNBVzh5QTBISUhnOEhqakJ6VlloWlVOU0RZQTJkKzdjYUc5djd4LzRyZUxpNGhxcVdqdWlHeDVhOTN6Q3lhMFJJR1VVRFRUQVBFZ3k3ZGhFVVRDS0JRSmtVWVFzRzdrMTJZQ2F4NFdBejROd3dJLzhuRkFhYkc2M3UxODRtcVg5STZQMVk4T0dEVThBYU9DM2k0dUxhd2h1clhIWncwKytaWU1hNjlqNldqelNSUU1JaEVDMGlnWnB0MmJPaENxeURMZExoc2Vsd08vMUlCVHdJUzhjUUZGZURnU2Z6d2UzMjIyNU5oWnc5dFlQVzY1Ti9mS1h2OXpSMDlQekdMOWxYRnhjZzdxMTltTlAvL0t4cDN0dElhanAxbFNRdmhWN3Bsc1RCVUxUYmkwZGhxYUJsbGtKOVhuY0NQZzh5QW1tM1pva2lSRDhmais4WG0rR2F6dWUxbzgvL2VsUGoxTksrUW03WEZ4Y0E3bTFQWGYvNW85dk9rRE5kRzBPTFI1RzBVQVVqUllQZXpPdURLL2JCYi9QY0d1aEFJcnljd0FBUWlBUWdNL25nejBrWmVEbTFQcGhWVWkvOFkxdkhPdnU3djQ5djNWY1hGeloxTnphL3ZRRFR6NDNXRzR0b3lGWE1OeWFKQXEwSDlRVUdSNlhLOE90UlhKRGNCdUxUSVZ3T0F6V3RRMVFKYzNxMm1iTm1yV0dVdm82djMxY1hGeDI2YnIrNXZSdi9IQ0hBOVFHY0d1QUtCQklnamxkMERkaDRKSmx1SlYwTTY3ZjUwRTQ0RU5lT0lpaS9GenJhd281T1RrSUJvT1dhM1BLdGJHdWpka2FiMjFyM3JoeFl6SWFqVDdLYnlFWEY1ZGREVTJIbjluVmVFakY0SlZRSFNCVVNCOGtTVVZCZ0NTSmhsdExRMDJSbWZZT2p4dEJueGM1d1FBS2NzUHdldnAybXdyNStma0loOE1JQkFMd2VyMFczRXpITmxUWEZnNkhOK2k2L25kK0c3bTR1RXlsVlBYNWtaK2J0OHZCcVEzdTFzUk10eVliQlFPUDJ4aWQ4bmtRRHZxUW54TkVVU1FuNCtzS0JRVUZ5TTNOUlRBWWhOL3Z0M0p0RGhNSkE3azJsUkNTT25Ma0NIZHRYRnhjbG5ic3F0K0V6R1pjQzJ5R1cxT0g2dFpjVm51SE1Ucmw5eUkzRkVCQlhoZytqenNUYkNVbEpjalB6MGRPVGc3TVFzSlFjbTFtTVlGMWJjWEZ4ZjlJcFZJUDg5dkp4Y1hWMWRPN1p2THM3eCt3UVMyUnphMEpSaVhVeWEwcHNnU1h5Mnp2Y0NIZzkxcnRIU1dSdkg1ZlcvQjRQQ2dxS2tKZVhoNUNvVkRXUW9KVGhkVGUxMFlJU1gzd3dRZVBBVGpJYnlzWDE3a3JDaHo4NitaL2JvTnp3WUIxYXhsOWExWWwxTzdXRktOZzRIYW4yenY4WHVTRmdpakt6NEhIcmZRSEd3Q1VsSlFnRW9tQUxTUjR2VjY0WEM1a0c1TFBsbXViT0hGaWZYZDM5NFA4MW5KeG5iczZjclRqeWEvZSthc09tMVBMNnRaSWhsc1RNODVaY3lreVhJb0NyMXVCejJzVURFSUJSSEpES0NuSWMvejZBZ0FvaW9LaW9pSmtLeVRZcXFUVW5FcXdyK2d6WGR2VXFWTWYwM1g5Ulg1N3ViZ0drZUk3NjM0a1ZkTmUvc3lYYm50akNHNU5NOXlhYms0WlNFYmZXcjhxcUhFeWJzQ2JidS9JRHdkUkZNbUZJa3Zad1FZQTVlWGxNQXNKWmtqcVZFaGdoK1NaR1ZLZGRXMDdkdXhJSGpseWhPZmF1TGdHVTZqa3JQdVJkdTVwZkthcHRkTStYWkFBa0NETUJpckRyZW5FT2tTU1dFNU50bzFOZVR6cGszSE4wenNLOHNJb0w4clArajBJN0IvTWtOUjBiUVAwdGxtdWpabElZSjFicXJpNCtPVmtNdmtiL3N6bDRocEFrWkZubFd1THhyc2Z2WERXN1I4YmJvMkZXdC9BZS8vejFxaElDRTBQdUlzMGZTcXVuT0hXMGhNR1hvU0Rma1J5c29lZ2ptQXJMQ3pNR3BJNmpGdFJTWkl5Q2dtc2F5T0VKTGRzMmJLS1VycURQM3U1dUxLSUNFRDFwVUJPQlNCN1B0VS9pcTdUZHgvNDB6UDJnb0dWV3lOQTBneEJtZlBXcUdDRm9HbW9aWnlLNnhTQzV1ZWlNQzg4NFBmU0wwQXRMUzFGZTNzN290RW80dkU0ZW5wNmtFZ2trRXdta1V3bWtVcWxvS29xVkZXRnBtblFOQTI2cm9OWjA2ZFJTZ1VBNnRWWFgzMjRyYTN0d2R6YzNKWDhHY3pGbGMxZWlFREp1RS85ai9IaG5qM3I3L2p2eCtJT1VFczdOa0xTQlFOQ05DTjlSUVZSaENqTGtGd3VTQzRYWkk4SGl0Y0xsOThQZHpBSWJ6Z01mMTRlZ29XRnlCMDJEQVVqUnFCMDNEZ2dGQnE2WXdPQVVDZ0VwOTYyTEkyN0dTRXBISnAyOC9MeU5xWlNxWWY0czVlTDYreFZQQjVmWFZOVHM0Y0pRVE9nUmdoaDErcnBBTktOdUtKSXpWWXlXWmFoR0p2YzNXNDNQQjRQZkQ0ZkFvRUFjbkp5a0orZmo1S1NFb1FHZ1pvajJJQjBJY0hzYldPSDVMUE5rdHFhZG5WQ2lOVnBUQWhKdmZycXE0OVFTdC9tdDUrTDYreVRydXZ2UFByb295K2lmMTZOaFZyS01Ec2FJVVEzSnBpc3RaOG0xRXl3ZVR3ZWVMMWUrUDEraE1OaDVPWGxvYWlvQ09YbDVVTXp3VTRmbEdVWlpXVmxLQ3dzN0ZjbGRUaHhkNkJDZ2dvZzlkblBmcmFwcmEyTmg2TmNYR2VoOXV6WnMvNDczL2xPTkdzSTJ0ZTNabXgySjFuZG11blVQQjRQL0g0L1FxRVFjbk56VVZoWWlMS3lNc2l5UEtUdlNjcjJGMFZGUmVqbzZFQTBHa1ZYVjFmV1hCdWJaOU4xbmVxNmJtNjEwaWlseEhCdFFpUVMyZFRiMjd2QzVYTE41MDhGTHE2elE4ZU9IWHU0dHJaMjd3QnV6ZG8rWmJnMWFvTE5iUGhublpycDF2eCtQNExCSUhKeWNoQ0pSRkJTVW9LaW9xSWhmMS9TUUg4NWJOZ3dkSFoySWhhTG9idTdPd051WmdIQnVLaXU2OFJXU0tBQWRFcXBWU1g5NHgvLytMOXo1c3daS3dqQ2RQNlU0T0lDOXUzYjk2bjkzbFZWZmVtZWUrNTUyUWExWHB0Ynk4aXJBYUNFRU90ekdDWUlBSkRHUnZxdHdSSHJZOGY3V0EwSU5wL1BoN0t5TXN1MWRYZDNXMkJMcFZKMjEwWTFUU082cmxQakc5TU54MmJtMjRSdmZ2T2JIZE9uVDMrd29xS2lGa0FKZjFwem5ldXFxS2o0dEg3cnphKysrdXFHVmF0VzlUaUVvTDJ3RlF5TXZKcHVPRFZxT0RScTV0TE1Ja0U0SEVadWJpNEtDZ3BRVmxhR3Fxb3ExTmJXRGptM05pU3dBZWxDd3JGanh5elgxdHZibXdFM3R2WERDRWRCMDRMUjEwWW9wV29hemtTb3JLeDhJeHFOL2s4Z0VMaVhQNjI1dUQ2ZE9uanc0Qjh2dWVTU0pnTnFMTkRzSWFocVRpWVJRcXk4bXIxWTRIYTdMY0FGZzBIazV1WWlFb21ndExUMHVLRUdaQ2tlT1AxV1lWdEEyRUY1V3dzSWRSaVNaOGV0VW9TUVpEQVlmQ0taVFBLUkt5NnVNMVIxUzZhaXF1cG1ySTMyLzd0NFBMNjZyS3pzYldTMmRsZ2hxQzJ2WmtITlZnV2wyYURHdG5aOFVrYzdKTEFGQW9HTUZwQlFLT1E0bFdDRG0xa2x6UmlTTngrSTU1OS8vbUZkMTdmd3B4QVhWMXJSdXJWWU11OGFUQjFmZzZxcUdveWZOQjJ6Rnp5Q3JhMW56dmVvcXVyV2xTdFhib0Z6QmRTQUcwMVNTbFZLcWFicnVxNXBtcTVwT3RWaHVUV3FLQXBFdFF2dDdURWs1WFE0R2dnRUVBcUZNbG83QW9IQUovbytwYUgrdy9MeWNzZHBCSWRjVzdhUUZFYk9UU1dFSksrOTl0cERqWTJORDFSVVZGUVFRcXI1MDVyclhGYnIxZ1dZUFc4ZEdvSVRjTzMxODNGREtSRGJ0UTBiTml6Rm5LMnZZY1V6RCtLNnlPbjlIaW1sRGR1M2IzOTZ3WUlGTVljUXRCZnBJZmNrcFdiQmdHaUVwRWVuS05WcEt0R0RoTWVIZ0dHQ3hHZ3ptbzhvQ05lY2x3RTFNNy8yU1VMUTR3WWJBQXdmUHR5eFF1b3daa1YxWFNkbVpRTUExWFdkYlFFaGhCQmgrUERoYjdhM3Q5K2ZrNVB6aStQOVhyaTR6aDZydGhYTEZxeERRMlFtVnExZmpta1d3RzdGTFRjc3dZeVpxN0JrMlZaY3VYd2FYS2ZSckRVMk5xNlpPblZxazgydFpZYWdsS1lMQmtUUVJNSHFWNE1rYU9qdVNhRTNucUJDWGhBdWx3dWlMSUFRRVc1dlptdEhhV2twaGc4Zi9pOTlzOEx4L0dPdjE0dUtpZ29VRnhkbkhFeVo1ZFJkS3N0eXY1RFVOcFdReU0zTjNkRFQwL01yL3V6bU9uZTV0Z1liamlxNGRQNUMwU0F4c2dBQUlBQkpSRUZVQm1wcEJTZmVnc1VMYnNDVmtRUmFiZm12WmFzWFlNYlVHbFNOWDRDdGFkK0hyUS9jaGhsVHg2T21xZ28xazY3QnpVczJvU25CZk1LdHQyRjgxWFFzV3JzYWkyWlB4L2lhS3RTTW40b1pDOWFpemlHZmxxamZnRVd6cDJQc2lJcUhxcXVyMzJlY1dpOTdFVUlTWUErUVRKL2NvWnVOdUxMTEI3OGtVSUhxSUhvNzluN3dBZDQ3bEFRaGNieS82Uzk0NUsvdkl4V0pvUGpJVTVnemF3NXUvLzJmY05zMWsxQlROUlZMNmdCc21vZWFxa2xZc0Qzeis5dTZZRHlxYXVaaEUvdkJwcTNINzVLS2k0c0hkRzFtT01xR3BHWUxpQkdhc3ZrMkFZQXdaY3FVaDk5ODg4MUNXWlp2NGs5enJuTk5kYS90UUJLMXVHS0tVNndad2JSYmwySmF2NDl2dzhwbFZiamkrdmxZVkZXTGFrU3hkZEVNekZtVHdPUWI1bVBwQkJkYVgxdUhsYXR1d2V6b0ttek9jSHNOV0xOb0ZhNmRQeC8zelE4aXVtMFZscTFjaU5sUkZ6WS9lQjM2dm92dFdIWnpIU28rKy9rbjlyZjhnKzFYNnhlQ3NsQURvRk1LU296RlQrbThtZ0ovVVNtS3ZWNzRQQkp5eHBZQnh4cnd3V0UzeGw0eEhSZVBIb054UlVVWTVnMUJrUko0ZnZrS2pMbjJSc3lmV1lXSkVRQk5RM2UvQzJiUCtXVGhYM1YxTmVMeGVOYjJEd1pzR1NFcHBaVHF1bTV2QVNFN2QrNFV0bXpaOHREMDZkTUxSRkc4bWovVnVjNGRKZERhR2dXVUNDSXMxNkt0YUdXZEZsd0lSb0lNbkVveDg3NzFXRDR0YVB6N1RWaXhIWmh3eTRONGRPSEU5TCs3L2pwRVdpZGg0YWEvWWZ2eWFRd2NGVXhlL0RqdXU5SDRnbE9tb0N3eEhUTlhyY0NxdXV1d3NMYnZhNDYvODRuTm56bXk0ZmtOOFI2blhqVjdGVlFsQXRHaFU1MVNuYVpTS1ZBSVVFUVpzaXhUYTdqZGx3NDlKYmtadTQ1NFVUbHVJaTQ1dndMRHk4cFFmU3k5UnEvcWxzZXhmbUh0Y1lmZWRTdVhZTjNCcWs4R05sRVVVVlZWMVE5czdEU0NiY3lLbUlVRUkrZkdGaE1JSVVTNDZxcXJtdXJxNmxiVzFOVGtFVUltOFNjODE3a0N0a1FpRFJFWDh5cmV2dVFhM0xEdWFOOEhBak94NnQzbERKeXFNWGxpa0lsWnI4VHl6VmZhUG5jUTFXVVJZSHNyb2dtZ2p4SXVSTW9pR2RDY09QTTZWSzFhaWUwN1dvRmE4KzhtdkZXdTdIMTYvdno1VVZ0T3JjZTRlbTM5YXVsR1hJbFFVSjFxdWs3VlpDK090U2RvM09WSFVYa0llVVpyUnlBUWdCU1ZJWW91QlBNTHJXWmM4VjBDSUlEYXliV2ZJSjlZajYxYkc0QXhDejU1d2o0Y0RxT3lzdEtDVzdZS0tldmNUTGdaVXdrZ2hKakZCSUVRUW1wcmE5OXJhbXI2YlVsSlNTNGhaQVIvMG5PZC9US0JaZ0RPZURYWDNuSWZWbDJiQUJERnRtWHpzV29vb1ZpMERtdFhyTUNhVGR0UmR6Q0dwR1hRcXROSUdvZ1VaVlVvQTFEZjBBUWdBa3BSMzlQVDl1ZDdaMTdWWW9OYVh3V1V5YXNadVhNcnJ5YkxMaXJMTW1SQnAycWlGL0dlT0pvYlBnTDFUY2Jra3JSamt6c1VTSklMNGNJU1ZGWldJaHdPLzR1UFpTc2FXZ0ZsWXZXL1Zva3NLeXV6QnVSWnVHWEx0UmxRTTRlL3pMQlVNeDRjQWtBb0t5dDcrZWpSby9mbjVlVXRBaERoVDN5dXN4MXNrVWdRU0RhaHFSVkFtZUcxcXFkZ1dqVUFSTkc2U2hsQ2pxa09EOHllZ2VXdEV6Rm40WElzckM1RDBBWFVyYndaQ3pjTjFUdGFPbnFndlh2MTRjT3ZOQ0p6c0wzWElhK1dNdk5xNWpKMWRyckE3WGJEazErRVNpV0ZwcjM3Y0tUaE1EQ2hDams1T1ZEYVhaQWtEL0xMS2xCV1ZuWkNIOVYvdWNWaTFLaFJHYTZORFVudEozOVFTdGw4bTI0T3d4cmhLU0dFRUVvcHljL1AvM3RuWjZjL0ZBb3RCdURtVDM2dXMxbTFsMDVFWU0xVy9HMVRFNzcrOVUvNEF0K3hCbXQyQVpldWVCQ0xyK3NMVVJQQklRWjA5ZStnQ1VDa3FxejM0TUdEcTY1ZThYWWQrdG82elBDVGRXdjlRbEJDcUs0bWswaUpMbmg5TWhSRnNmSnEza0FleXZNUG9MTXRpVlFnalB6OGZMaU91cUVvUGhSVmpSclNMd0Fna1VIZi9vcWdLZ0lrbTVxT3I5M0RTWVFRakJneHdwcE15TS9QdHlZVDdHTlhaZ3VJYmZHeU9YSmx0b0FrQVNUQzRmQ2Z1N3E2ZUJzSTExbXY0TFJiY0gxcEV1K3NXSUJINmhMOXdxdlcxdVFRN0ZZQ1VRQ0pLUFAvSitydy9JNVd1eHNERUVOOVhUMGJ3MkxUcWswNGlER1lNZ29QR2VOU0xOUjZHYmhsbkxGbXZuN05maldCZ0ZJOWhTVHBLeFo0dlY3NFBDbkU0Z1NDUHc5bGhma29LaXBDUldFSWlxSWdtU1NELzN5UkNDS0lvYjYrS2VQbmU2MHV4dnlqYWt5YlZnWHNXbk5pbW1JRGdRQ3FxNnY3RlJJMFRjczJJRDlZTVlGUVNvbmY3MytzdTd2YjQvRjRidWRQZjY2ek54cWRpSVVQTGtMZDdLVllPbU02bnIvdVNsdzZwaFE0Mm9EWE5tM0F0b1lBSnR3eUV4TUh0SDNYNHNyOGRWaTNaRGJtTlZ5SmFyUml4NllOMkhFd0NTQ0tSQlFBVTJ2WXRYdzJaalJjajJzbjVPUG9hMnV3K205SEViNzA5Z2QvTUtuZ0h3Nmhadzh5anlPeU9UV3pFVmVpYmg4UTYwclMrTkVXSkx1RHlBbW4wQk5ydzc3Mk5yUW5YYWllUGhVWEdJZEdqblNOUXVpSkxWaXpaQWx3eGFXNDdzWnBLQnZvNXl0ZGhWWExic2E4Z3pNeHdYVVE3MnphZ09jYkFEQ0w0R3R2V1l5WkcrYWN1Rzcvd3NKQ3gxeWJxcXBzUDF0R1dNb1dFNHhQbzluRDBsbXpaajM4NXovL1dYRzczZC9tcndDdXM1WnR0Vi9INDV0cjhjaXlGVml6ZFMxV3JJc2hxZVNqcW5ZYWJsazVIL092ckI2NFNoaWNocVdQTDROcjBRcHNXTDBTVzExVm1ITDlmWGg4d3ZOWXRMSUpCNW44SFJEQUZZc1dvMnpiQ3F4YzBvQ29xeFFqcjczN2tmcFhmN2tWL2FjS3JCQ1VFQ1FvTlZmb1dWRHJhOEtWWlNpS2o1YUdLSHFpY2NSN1kyZzlITU5SUVVHNHNBcFRwMTZPYS85dEpFcExTMUZWVllYeXkrL0U0amVic1d6REtxeG96Y2UwRzZjTkRQOUhseUc2WUFVMnJWcU9yWUVxVEx4dU1aWk5YSUdGR3pJZmgrV1Byd1JoRDNJN0VkcTllemQyNzk2TnhzWkdIRHAwQ0VlT0hFRjdlM3ZHMFVjR0FBa0RRR0wwdXdrQVJFcXBCRUFHNEtLVXVuLzBveCtGZi9qREg5N2ljcm5tOFpjQTE1a3FUZFBRMU5SMFpwK3h0dlUyakorekZkTld2WXY3REk3RVlySGZmL3ZiMzk3OGh6LzhvWWR4WlQwQXVvMjNQWVFRcTJCQWpHMVQ3UGxxek5IZTFobHI1dnluZWI1YVNVa0poZzhmanBxYUd0VFUxSnpVSC9PRXoyZU9IajNhQ2tudDdSOVpYSnQ1NGk2UVdTbTF3dEtmL09Rbm5aRkk1T0c1YytjS0xwZHJMbjhKY1hHZEdNVmlzVDhzWHJ4NGl3RzFKQU8xSGdacS9VN0RkYXFBc3NVQ244L25lTHgzWldVbFJvOGVmZEovcmhNT05rSUlSbzhlYllITjN2cWhhWnAxNUMrVGI4dFdLYlUrNTNlKzg1MDJSVkVldnVtbW04RGh4c1YxWXFDMmRPblN6U3RXck9oQ1pxR0FiY0RObGxmVEJVRmdOMHhSY3hHTC9jQkkwNjJaVUdPUEJ2L1VnQTBBUEI0UFJvMGExYTlwMTliUDFxK1lZTGcwMDdXeGNDT0VFREp2M3J6V1JDTHh1N2x6NStwdXQ1dUhwVnhjbjFESjd0anZGeTlldkdVQXFMRk9yZC9xUE9QQVNHcDNhdWJLdkZBb1pCMFlXVnhjaklxS0Nvd2FOUW9lejZuWmRpL2VmZmZkSitVVG13ZFFtbkF6SzZRczNHelhZQmluQUxCeDQ4WVVJZVQ5aXkrK1dKVmxtWTllY1oweG9wUWlHbzJlZ0E3Nms2aktxM0hEelRjODh2U3kvMi9MNzM3M3UrNXNUZzBPa3dWc29jQ0Vtc3Zsb3V3SnVQYVZlV2FoWU15WU1jalB6ejlsUCtaSlBRT3RzTEN3M3pTQ1E0VVVUSjdOcXBRQ2dHMWdIb1FRVUVxeGRPbFN2UFhXV3crdVhiczI2ZlY2ZVNzSUY5Y1ExZEhSOGVBVlYxeXg5YTIzM2twbWMycXdIVVBFVmo4eks2QjlUczNjMnM3bTFJcUtpbEJSVVlHUkkwZWlzTER3bFA2Y0ovMXd4L0x5OGd6WHhrNGoyRjFiK3BjZUpRQ29xcW9tM0RRMkxEWGh0bkhqUnZoOHZ2K054V0s5ZnIvL2R2QUpCUzZ1Z2RUYjJ0cjZVRUZCd1QvUS8vVGJnYUNtRVVJMG9lOElvcXpoWnpBWVJEaWNuaW9vS2lyQ3NHSERyT2I5VTYxVGNtcHRkWFYxMXVQRG1WTjJUVHR2NWRwVVZUWC96aEZ1QUJBSUJQN1kwZEhSSFE2SGJ3T2ZMZVhpY3RMUmd3Y1ByakltQ3RqWnp4NWIrT2tJTldiQmNRYlVuRmJubVZBckx5L0hpQkVqVUYxOWVrNzlQMlhIY2RmVTFHVGJpK0RvM0V5NEFlbitvQUhnUm5OeWN0YTN0TFIwUlNLUmIvRlRRYmk0d0JxRit2cjYrdFVqUjQ2c0c4U3BKYkpCamMycFpRcy9uYUIyc252VnpnaXdBY0RZc1dQN3dTMEwyQ3k0bVFtM2JIQXovMXhZV1Boc1kyTmpkTml3WWZNRVFiaUlQNlc1em5WcG12Yld1KysrKytjTEw3eXdFZjFuUHdkcjZiQ2dObGhPellSYVlXRWh5c3ZMVVYxZGpiRmp4NTdXbi8yVWdvMFFnckZqeDJaMWJRNi9iVmdINXdnMzQvTlNTaWtkUG56NFAzYnMyTkU1YnR5NGI0cWllQlYvYW5PZDhUcjJ1NVB5YVZNcGJmT1diYnVldm1ybS9TMU0rR21mL2V3aHhycThUS2hSalJCS1JZRlFVYUJVbG5USW9nNlhwTUl0cS9BcUtmamRTUVE5Q1lTOVBjanpkNkV3RkVkNVhoVFZoWjBZVzk0R0VuMzkzQUViQU1peWJNRnRFTWZHNXR1eXdZMGFINmRtYURweDRzUVAxcTlmdi95YWE2NXBWUlRsYS95VnczV3VxYnM3K2NURGoyMTdmdjRkZjQ0T0FMVmVBaVJBWUt0K1FpTUVhYWlKaE1xeUFFVVc0WEpKMU8yVzRmVW84UGxjQ1BqZENJZTh5TXYxbzZnd2hQTFNYRlFQTDhEWW1sTElrbmphSDRQVHN2TE83WFpqN05peGpuazIxcTJ4SVNraEJLbFVLbjBVU1ByLzAvcllsdW5jWnN5WWNiQ21wdVpYYjd6eHhoRy8zejhmZkxVZjE3a2h0YTA5L3RENGYvdXZsdzgyeCswN0N0anoxRXlvMlp3YWRJR0FDZ0toa2dFMVdSYVE2RXpRenFBTFkzTFNVQXNHR0tnVmhGQldtb3ZxNFJHTUhWTUN0MXMrSXg2STAvYUM5L2w4RnR6c1lMT0hwWVFRYXVUVDdLMGc5Z2tGYXNKdDkrN2RlaUFRZUt5bHBlVndKQks1aFM5bDVqcFR0ZjJlKzNIejBmOFg3LzY2OWhQdkRhV1VOalR1TzdxbWVzS2k5NUc1VGFyZmVXb00xTlNCb0tZb0luVXBJcWlRUkZLUjRmZTVFVENobHVkSFVVR3dEMm8xcGZCNVhhaC85cC9Zbmo4T04zN0c3L0JkeHJIMXZtZXc1T245YUlwSmlJd2JoOFUvbVk0clM4NGlzQUhwYzl6R2poM3I2TmpZdkJ4Ny93YUJHMldkR3dCYVdGajRiRjFkM2VGUm8wWjlYUlRGei9LWEVkZFpaOU5VYmV2Mk54cWVubnIxTDV5V0dkdVA4MDZBOUIzcDNRYzFRZ1VCVkpJRUtrdkVnSm9NdDF1QUpoS0lMaGNDQVRkeVdLZFcxZ2UxUU1BTlFFWGRjNjlnWlVtVkk5aGFuMzBHdHowdFllbGp0K082a2w1cy9kRWF6THZqRFd4KzdDS1VuVTFnQTRCUUtHVEJiUkNvOVlPYmtXOWp6M096Z0diQVRRZWcxOWJXdnIxNjllcERNMmJNK05qdGRzL2hMd1d1TTFXSlo5ZGgvSVBBamFNVDJMcXpEYTFKRjZiZE5oUExQNThIRjFxdzdEL1dZUHZvS3JqMnRLQXBsb0JZTldiMWVTUFZMYis1NXk4eFpMWnoyTU5QYSs2VFVxUUVRalFRNkNiVVJBRlVUZWswbWRRQlFxZ2dFNVNWeXZCNlJHZ1MwTzEyR1ZEelFEdTBIMzk2TG9aTzNZdnlDOGZqaHo4ZWp1dUMrN0hrUDU3QzJrTWFZbGlEU1hzdXdlTVBYNFMrTUVuRmp1Y09JZmp2czNCZGlRVEFqMmx6eHFINkt4OWllK3dpWEorb3c3eXZiRVhrWjdkaTZXZk9BckFCNlkxWEE1V0hUY0FSUXN5TEVrS0ltWE16YzIyNnJsTzJ2NDExYmpmZWVPTWhBUGUzdGJWOW5KdWJld3VBWXY0eTRqb2pkZWdZY05jc2JQNlpIOUZYbjhIME8xN0Nwcy9PeEhVQkFFaWdWUm1EOVgvNVFuUHk0LzEvTEp0d3o5dGIrNWFxSkJtSXNVZDVKd2hCa2xLa1FLQUtJQm9JTklHQUVvSG9va0JBVXhyVmlJQ2NQQmYxU3hUdHJRbTBkSXNvSzNCQmxRVW8zblQ0NlRuNk1WYnZDdUsySDgvQXZNdHo4ZkZqeitMbWIyOUc1QzlYWWZGZmJzV0UyMytOWlNVMzRPVUY5aEdxWHJUR1ZFUktHQ2VYNzBjRXZXZzlDbUQ0TU54eTE3OGpPTzRzY1d5bWNuSnlNdURHUUt3ZjJPek9EUUJoNWtyN09UY0F1dUhlYUY1ZTNsL3I2dW8rSGpWcTFFMmlLRjdPWDBWY1o1eEtxakRUQ09XQ280ZWhPdmtHV21NQUFnQWdvbVp5eFV0N3QzKzQ0WktyZnRHRWdiZXo5OXBDVHhWSWg1NkVRQmNFUWdXQlFKSUlKUnBCVWdjbGdnaVgzNFVSdVVFb1hpK0NBUWtwUlVEVTcwTnhnUXYxcjNXaCtrdWZ4N3pMaHlFbjdFWE9iWmZodXFmWFljMC9wbVBLWUltZWZxc2JSQUFxWWtrQThHUGlaLzFuVHlocWg5dDU1NTNYRDJvRFFJNlN0UHJsM0N3YjE5Y09Zb2FtV20xdDdkcy8rOW5QR3Ivem5lL3M4bnE5L01oeHJqTlhSalVoWVd4ajZVbHBENy95Mk5xWEgzNXVXNDh0bjlaLzd5ZVFwRUNLV0ZDRER2UkJUUlFKbFNRQ1dSS2dlQ1hxN2traDJ0Nk56clllQkNLNU9ML1lqWnl3Z3FSYlJHY29pUEl5TnhwVUwyb3ZISUdjc05kTUpxR3FSTVh6UjNzeDZMaTJZditBQmtCQ1FEbnhEOXNaMXdZUkRvZUhCRGQ3V0dxK2J4eU5wSnRBWTRvS09pSEVkRzc2SFhmY29kOXh4eDMvZStEQWdiMmxwYVUzRTBJbThsY1IxNWtxcXROM2R1MDVzdjd1VnhyM0FvMnFRejR0dzZVUmdpU29CVFNORUdpZzBFRkFCWkZRU1NCVWt0THRISW9pVWdrRXZrSS95djBLZkxLTzVvK080dDJtZkV3WTRVZlNJNkV0TndjanF2TVFyWGdmcjBaMTVqdUxvK0dvaEVqK1lHZFF1QkhKbDlCNktBNGdsUDdRMFRoYTRVUGtKSnhtSkp5Sk56RVVDbUhjdUhFWU9YSWtoZzBiaHVMaVlrUWlFZVRrNUdSYjdVY1ZSUUd6Mm84eXEvMDA0NHoyRklBa0lTUkJDREhQYys4dUx5L2Z1bTdkdWgvMjl2YXU0aThmcmpOUnFxNnRmdkdKTGY5VE8vbC9kaU56ejZmMVBHWXVhMFVlTloyYWNaWmEraGM4Mjg0aEdJMjNJbExIZXJDL1RZWHNkU09VNDBlK1g0TGk4Nkc0S0loOG40SkFRVDdHamFuQkYyY1BSOTJxRjdEaGtBcWdGenNlMllvTkdJTWIvaDhKZ0FTWFMwS2k3UmhhRS8wOTFKVExoaUg2M0hhc2JWU0J4REZzV3ZVTzZzZU53cFJBR3BBN1hteEFmZUlzZFd5bUFvRUF4bzBiQjBFUUhDOUNpUDJ0NWR4U3FaUlpNV1dMQ3BRSlRVMzNwZ0hRdnZTbEx6VUIrRTFUVTlQT2twS1Ntd2doRS9qTGlldDBTOWZwdXgvV3Q2OWYrK0diZTdEc1RaVUpQWk9PTG8yQkdhVjkrd2xJdWo5TkZ5aEZTdGRwVDFLRXp5dENVU1RxZGtsd3UyWGtqMUNnSEl6aG5UZmpvS0tNZ29waG1IMVZHU3JLdlVnRVhEaFlXb0pBd0kzQTU3K0FCNDgrZ3lYLytXc3NpRW1JakI2RHhiK1pqaWxHeUR6bCtuRW91K01wVFAzUFMvRE1FeGVEYlI0Tlh2WHZlUERRYzFnMDk5ZFlaUFN4M2ZlVGllbFdqNlA3c2ZKSFcxSDJtMXV4K1B4Ly9iRTc0VnVxVHJSNmUzdnh3UWNmb0w2K0hnY09ITURodzRkeDlPaFJkSFoySWhxTm9xdXJ5OXA4bFVna3pGMExoTmwrQlYzWENhVlVNQzhqYXlrQmtDbWxpcEhKY0FGd3JWcTFLakpyMXF6cnZWN3YvK0V2TGE3ajBTZmFVcFZsVmpRYTYzbjBnZjk5Y2RzZGR6OFZSMStCZ0IyUFlzUFFkT2dKTnZRa09rSC9Jb0VzQ1pCbGticVV0THZ5dUdWNHZhNk1pWUw4dkFDS0NrSW9MOHV4eHFUT2xJbUNUNzFqc3lKenR4dm5uMzgrUkZIc2Q3SHV6ZWJnc2hVVktKTjdNNHNLT3RKVlV3MkFPbWZPSEczT25Ea1A3ZDI3OTYycXFxb2JSRkdjeGwreVhLY3M3RlQxbDNlK2YrQ1pDeSs3OTJNRFVuYVh4dWJVa2dSSVprd1JvSzgvelhCcVZCU1lJb0VpVWtXUjRIYkpjQnRROC90Y0NBWTh5QWw1a1ovSHpINVdGV0RzbUROajl2T3NBeHVRSHB3ZlAzNDhKRW5xQnpiN1d3WjJWQkFFSWdnQ1ZGV2x6TDZGOU42L3Z0RFVxQlFSelF4TkFhaWpSbzE2ZmNTSUVUdGZmLzMxNjNKeWNtNENVTXBmZGx3blM1VGk0SkhXWTA5K1p0cFAzbWhLejNteVVFczRYRWtIbDlZWGVwcVRCR0pma1NEdDFHUzQzUkxjYmdVK2IzcjJNeFR3SUJ6MklXSkNyU3dYSTRZWFl1eVlVcHlDaFZMbkx0aUFkSHZIZWVlZEIwbVNqZ2R3L1NxbWhCQnFoS1pnblp1WmQwTjZHNzBHUVAzb280L1UzTnpjOVJzM2Juempzc3N1KzZMYjdiNkp2d1M1VHFoQy93ZGRYVjFyL3ZyWHYyNzc2bGZuZFF6aTBneWdFUk5vS2VNWHNYVitHck9iQUpJa09lNzhORSsrdGUvOVpJL3pQcDJIUko1VFlETlZVMU1EV1piTkNpaU1OV0NPSWFvSk4rTXRZZUFHUFMzclNDU3pnZGZKdlYxOTlkV05BSDViVjFmMzZzaVJJMmRLa3ZUdi9CWEo5YThxbFVvOXYyUEhqazJUSjA4K3dBQXRHOVNTRE5SVTlBMndteEdIdFd6Rk9NYmJmSjFRUlZGZ1B5RFNoRnB1Ym03R2lyelRlWnozT1EwMklMMUR3V3p2TUM4V2NFNmhxWEhEcmRDVXFacGFybzBKVFRYR3ZWbFBvdHJhMnJjQXZOL1UxUFJDY1hIeGwvaEp2VnlmUkxxdXY5blEwUERNeUpFamQ1bS9QRzFBU3pxNHRKU0RTOU9aaXhxLzJMTkN6ZXYxd3V2MUloQUlXSHMvQ3dvS0xLaU5IRG55dEN4ZTRXQmpWRjVlbmdFMzgyYWFvYXJkeFJtZ3MrQ1dTcVVvSWNRODhOSmVXTkFad0dXNE53Q3Bzckt5RnkrODhNSi9QdnZzczFmbTVlVjlpUkJTdzErdVhJUG4wZWllNXVibXA2ZFBuNzVqMTY1ZEtwTWZZM05wN051a0RXb3E4MHZYQXBxNUVrOFVSZmFYUFhXNVhCbFFNNWV1bUhzL0k1RUlTa3BLckdYR3AzcEYzc25VU1Z1WWZDcGsybW1uZkp6NWRvQnhMSHRhMUp3cmhRRTRHSEN6R24xTjJBSFFtNXVidGVYTGx6ZWtVcWtYTHJqZ2dtYTMyMTFDQ01uaEw5OXpHbHlPQzVNcHBZMnRyYTJQTFZ5NDhFK3paOC9lZi9Ub1Vic3I2M2RrTjlMTFZYcnQrVFJtY2JIVFJuWW9pa0lWUmVtWFMyT0J4aTVkcWE2dVB1WExqTGxqRzRKeWNuSncvdm5udy96dHhFd2daT1RoMkN1UlNEaUdwb3g3TTRmckJWdDRxZ0ZRamZBMEJTQjE3NzMzSnUrOTk5Ni9MRjI2OUlWdmYvdmIwME9oMEV4K3FDV1hBYlNHMXRiV0RjdVdMWHZybDcvOFpTK1RHM1BLcGJGaGFBcnA0NFZVUW1CR0N4cEEra1lGQVVwQWFQcXBTa0JCUUNtb1RnRktDWFFLYURxRnBnT3FScEhTZ0pRR0pGV0toQW9rVWtCdmlxQW5SYkQ3b3dNQURweFZqLzJuMnJHWmttVVpoWVdGanFlQURISGUxRzdnekJONzJSTkM3TlZUeTcwQjBMWnMyWkw0K2M5L3ZyZTd1L3Y1Q3k2NG9Nbmo4ZVFTUWdyNHkvdmNjMnpCWUxDdXBhWGxEOS83M3ZjZW56MTdkdU0vLy9uUFhnZUgxbStucHkybnBoSmlnZERJcDZXZmk0UUlFQVdSaXBJSVNUSnlhYklNUlVuL2NuZTUzWEM3UGZCNmZmRDUvQWdFQXdpRndzakp5VVYrcEFERnhTVW9IellNVmRVaklFbnlXWGt2enZqSmcrUFZ4eDkvaklhR0JqUTFOVmxUQ2gwZEhZaEdvNGpGWXVqdTdrWjNkemQ2ZTN1UlNDU1FUQ2JOVGZXRVhlcXM2em94TCtOeE1xY1cyTWtGaVZJcUE1Q1JQcnZBdXFxcXFwUlhYbmxsYW1GaDRUV0NJRnpNWC9abnY1TEo1UFkzM25qamhhOTg1U3Z2TnpVMW1TTk5yRU96RndneUhKb3gwOHlNUWhIemx5aGxLNTVtb1l3dEVHUXJFcGp0SEdiNFdWWldocXFxS2xSV1ZwN1Y5K0tzVzNKU1dWa0pqOGRqRHNlYmVZZWhGQmlvVVUwbHFxcGE0YW5aOTJhNk5TTTgxUWNJVDVNQWxJYUdCcVdrcE9RRkFOdjI3dDA3b2JLeWNyb3N5NS9uTC8relQ0bEU0bSs3ZCs5K2RjS0VDWTBNek5pd00ra0FOUloycWdFMXE5cHBnSTJheFFIanVVbVo1NjRGTkRPbnhoWUovSDUvUms2dHVMall5cW1kVFVXQ2N3WnNBRkJZV0FpdjEyc0J6dTEyZzMwUzJPSFcyOXRyQVM2WlRHYkx2VkZLS1dIUGVEUFBkMk9lbUNuRHdWbUFBNkNNR2pYcWRRRHZ2UERDQzA5TW1qVHBVci9mZncxd3dvOTU1enExWVdkVExCWjc3c1VYWDN6N2kxLzg0dEVzUUhPQ211bk9yR0YxSTQrbTI2dWRCdFJnVmp6TjU2dVRTek9oWmk4VW1PMGNadU50SUJBNEorN1BXUmVLMm5NZWUvZnV4YjU5KzNEbzBDRzB0TFNndmIzZEdxQ1B4K1BXQUwwWm1ocEQ5RWdtazFCVjFYUnZHZUdwc1hoR29KUVN3OEdaNGFsNXNTRXFHNnJLQUpRYmJyakJ2WHo1OHNrRkJRV1hTNUxFVC9IOUZFbFYxUmNQSERqdzZ1MjMzNzdycWFlZVNnMFJhQ2s3MEFDMktKQUJNOTJjZDJiRFR0YWx5YklNdHBYRFBra1FEb2VSbTV1THdzTENqSFlPOG1tZGorSmdjMVpUVXhNKy92aGpORFUxb2FXbEJXMXRiUVBtM2N6Y1d5cVZnbmxLQ0FNNFlxd01KT3cxQU9Da0xJQ1RBY2liTjI4dXYraWlpeVlIQW9IcHZCL3VqUDBGdWFlenMvT2xiZHUydmZ2RkwzNnhqUUdTRTlCU1dZQ20yb0ZtSG54cWhwdDJsOFlDemV4UE0xM2FRUG0wdkx3OEZCWVdvcXlzREpXVmxTZ3JPL2VDZzNNQ2JBRFEyZG1aVVZSb2JXMUZSMGNIamgwN2hsZ3NaaDEvMU52YjYxUllnQUUyWXJvM0ZuQk1nWUVGSEZ0a0VBMEhaNGRjeHZYZWUrL1ZWRmRYWCt6eGVDNEhVTUtSY2xwaGRxaTd1L3VsdXJxNkhaTW1UZHFQdmlyNFlFQ3o1ODVZVjJjUE9hbDVJQU9UNDJWZEdqdnI2Umg2c2syMzdNeW5XU1N3OTlSeHNKMkYwalFOOWZYMTJMOS9QNXFibTlIYTJvcTJ0alljTzNiTU90dXRxNnZMT3R1dHQ3YzNBMjRPN3MwTVQ4MHozd1lDM0ZBZ1ozNU0ycjE3OTdpS2lvcUwzRzczWlJ4eXB3NW1QVDA5Mno3NjZLTjN4NDhmMzJnTEY1MkFwZzRSWnYyQUJtc1BCeWdSQ0JSWjdoZDJzaTdOTEJDNFhDNXIzdFBuOHlFWURDSVVDaUV2THcrUlNNVEtwMVZYVjBNVXhYUDJYcDVUWURQVjNOeU1mZnYyNGVEQmd6aHk1RWhHYUJxUHh5MjRzWWRYc25CakFjY1VGd1lDSERIQUpqaUVxWklOYXJMdFk5TE9uVHRIVjFWVlRmQjZ2UmNUUXNaeUJKMDQ2YnBlMTlYVjlkcWVQWHZxTHJyb0l0YVo2UXlZQmdLYXlnQk5wWlNxUnFYYzZuRTBONld4UURNcm5icXVVMEVRNFhhNytnSE5IbnA2UEo1K1EreG02RmxRVUlEUzBsSlVWRlNndUpodmxqd253UVlBM2QzZGFHeHN6T2gzYTI5dng3Rmp4eENQeHhHUHh5MjRPWVdtV2NKVEMzQU9PVGpDT0xpTVhCd0RPQ2ZRWmZ6ZHhvMGJpeSs4OE1MYWNEZzhRWmJsaTJGdHh1QWFvbzZsVXFuWDJ0cmFkdjd6bi8rc256RmpScHNCSUgwQWQrWUVOZmFFalg3RkFNYWhXYmt6Tm9kbUZnWTBUWWNvaXZENXZPendlci9RMDRTYTMrL3YxOHBoaHA3RGh3K0gxK3ZsZC9oY0JwdXBBd2NPNE1DQkF6aDA2QkJhVzFzSHJKcXlvYWt0OXpZWTRNQVdHV3lRTTUyY0dhYUtkcGc1QVE2QU9INzhlUG1SUng2cHFxcXFHdTMzKzgrWEpPa3pBUHo4YVoyaHVLcXFiMFdqMGZmMzd0M2I4STF2ZktPcHJxNnUzK1NJTFhUTUJqUVdadXovbzl1QVpqazA0NElkYUdiWXFhb2FGU1VKQWI4dkEyaHNiMXEycXFjNXhGNWVYbjdXbk1yQndYWUNGWXZGck5DVXJacWE3czFwcjBJVzk1WUJPRjNYN1ZWVVpBbFQ3WkF6UTFVckwrY0FOc24yZDJKRlJZVzRaczJhWVNOSGpxd0toVUtqWlZrK2p4QXk0aHpMazMyVVRDWS82T2pvK0dqMzd0Mzd2dmExcjdVME5UWHBObGZtNU02eXVUVHI3OHhtYk52bnlJQ1p6YUdCclhLYXgybXhoWUZrU29Va1NRaUhnaGt1elF3OTdRMjNiTlhUREQzUGxkNDBEclovd2IyeFZWUFR2Y1Zpc2F3OWJ3NjVOd3R3cG5zeklXY1BVeG5BT1lXcTluQlZ0QUhPNlgzUmZ2M2lGNy93WDNIRkZTV2xwYVhEL0g3L2NGbVdSd2lDTUJyV0t0NVByUks2cnU5SkpwUDFzVmhzMy83OSt3OCs5OXh6TFhmZGRWZVBDWmhCWUpZTmFobnZNODRzSTh4a1EwM1k1b21adzAySXBRaVhBQUFHR1VsRVFWUXRtREV1alRLTnRrZ2tVNUFrR1htNTRheTlhWUZBSU1PbG1hRW5kMmtjYkVOV1YxY1g5dS9mYnpYMDJudmVzaFVXc2dGTzA3VEJBR2QzY1NiZ2lBUGtCQWZJRGZhKzZPQUdoZlhyMStmWDFOUkU4dlB6Qy8xK2Y0a3N5OFdpS0pZUlFzb3g2RXJ2VTZaZVN1a0JUZE1PSnBQSjVuZzgzbnpreUpIV3VycTZ0aTkvK2NzZFlBNG1HQVJtMlJ5YTQvdjI1RDhMTS9RdEFLSnNNY0IwWndBZ1NWSS9vTEY5YVd4eG9LYzNtVDdFb1NDL1g0SEFxVGV0cEtRRXc0WU5nOC9uNHk5V0RyYmoxK0hEaC9zVkZ1enV6ZDdVYTA0c09MZzNxL2VOQlp5bWFTYll3UFRDd2NIRjJTRm5BWXFCM0dDWFlIdGZzTDF2NWY5Ky9ldGYrOGVOR3hjc0tpb0toa0tob05mckRTcUtFcFFrS1NpS1lsQVFCRDhoeEU4SThSRkNQQVlJelFNQXpNOEpCZ3pXMmpoS2FRK2x0SXRTR3RkMVBhNXBXa3hWMVdnaWtZaDJkM2ZIT2pzN284M056YkdkTzNmR0Z5eFkwTTNBaTlwQVJnZUFtVzV6V05wZ2wvMjh2V3d3WTBGbXVqTm1TeG9GQUVWUkxKalpXamd5aWdPeUxLTzdKd2xGVVZCU1hHQTEyOXBkR2xzZ0tDb3E0aTlPRHJaL1RhbFV5aW9zSERseXhOcG5PdFNtM3FFQ3p1YmlXQWMzRU9RY1ljZE1Qd2dEUUUxMEFKdjlZci9PUUJjYzN0cmZ6MGlET2J6UHZoM29zb1BNZm1WemFmM2VONDkrZDRMWVlEQXozN2Z0MUlBb2lxQ1V3dVZ5WlFXYXZlSVo3K3FGeStWQ3hiRFNqR2JiY0RpTS9QeDhGQlFVV0FVQ1daYjVpNUtEN2NUcDJMRmpPSGp3WUwvYzIxRDYzb3laVTN0NG1oR21HdTdOZ3B3eHpXQ0Zxc3g5c3Vma2lBT0Vzc0ZPeUFJemNRaGdZd0VuT0VCdElNQU5CRGM3ME9BQXNZRWNtcDdGcmRrVCs0TkNqQ2tBVUZ1WWFjTE1LZ1F3RmM2TUhSdWlLRkpLS2R4dWR3YlFKRW15SEpxOU9CQ05kY1B0OFdEVWlPSDlLcDVGUlVVb0xTMUZLTVE3ZWpqWVRxSmFXbG95M0JzN2tqVlFhMGcyOThhMmg1alZVNXVMQXpOMGI3bzNlMDRPRG81dVVPRFpxckZPUUJzSWJzZmozSTRIYk1jVGRqb0NqcWxPWmdVWUF5OFdubUJ6WnVhZjJUQ1RYUTdFQUkyeXVUUktLYnhlYjFhWFptL2g2SXgyd2V2MTRmenphcXh6MDB5WGRpNGNMOFRCZGdicHdJRURsbnR6S2k3WXE2ZE9yU0dwVk1weWJqYkFRZGQxNGdBNDFzbkJGcXJhM1p6OXozWW9aWFZpRHVFdUdRUnMyVnliUFNTbEE4QnRJTURwVG45bW9EU1FzN1AvUHhsZmkvMnpMZFNFM1puWmdFWnRsVTdyYkQ5ZDErSHorUVpzdEdWblBOczZZZ2dFZ3BneWFhTGwwbmkxazRQdHRDbVpUT0xRb1VQOWlndHNlRHBZL20wQTl6WWc1TXhpQStQazdHNE9XUnlkSFVSTzE2RE9qQTJIVDBhT3piWlVodzRSZVBZTHRpUGRZUWVaM1pXWnpvekpuMldGbVIxcUp0ZzBUVU13R0J4d2FKMXR0RzA1ZWd6aGNBNnV1UHdTbEpTVVFGRVUvdUxpWUR2OTZ1bnA2UmVlc3RYVG9iU0gyT0ZtbTJCd21rZTFRNDV0SFlGRFhnNDJLTUhCMldFQUp6YlVmSm9UekxJNXRxRVdFdXlBd3dBQWd4MWM5andaa3krRExXOW0zME9iQVRPMmZZTmQxRzNQcFdtYWhuQTRuSFcrMDZ4Mm1tSG53Y1B0eUk4VTRMSkwrSXJhRXltSlB3VC9tandlRDZxcnExRlVWSVREaHc5bkROV3orVGNUY0hZSE4xRDExQUZ3bE1uREVSdmdxQTEwNWtWTm9GRkt6Y01HMlY5b2c0TEtDWVlEd0d5b3B4blNvVUxPWVMwaWJDRWwrMjh6M21lY21TUElISUJHN1V1M0J3TWFlMm1haHB5Y25INWIxOW1qaGN5aDlhS2lJa0NxNXk4aURyWXpWejZmRDlYVjFTZ3VMdTZYZjJQYlEreUFzOCtlWm1rUGNRcFJxUWsxVGRPcy9Kc1Q2RXpBTWE3T2hGMC8xODVBYkRCb1pRUFlKd1ZiVnNBeEo3LzIwYmdQZHJBNXNneUkyY0xNZmlBek42amJROC9Cd2s1N0RzMjhWRlZGZm42K2RheVFIV2htSG8wUHEzT3dmYXJrOVhwUlZWV0ZrcElTSy8vVzF0YVcwZi9tVkVFOUhnZG5DMDh6M0J5YmczTndjSGJZbVhCajMyWkFqLzI3VTVIQ1lCMlg3V1A5NEdWNzZ3Z3hCNkJsNU5CWXFObkR6c0VjbWoySDVuYTdrVXFsVUZKU2t0R1BscGVYWnpYWnV0MXUvaUxoWVB2MHl1MTJXOGN5c3dVR3RvTEtBdTU0Y25BTzdzMnBUY1FPdW40RkI5UFoyUUhIL0preVJRblcxZldqbWhQOGh1TFVuTTdoWnovR2dzdm14dXp1TEFObWJJdEdsdnlaWTdnNVZJZG16NkdaVXdPcFZBcVZsWlhJeWNuSm1CcVFKUDVTTzVYNi93SEYxRm5aOGoxaXh3QUFBQUJKUlU1RXJrSmdnZz09Il0sWzEsImRlc2NyaXB0aW9uIl0sWyJzcmMiLCJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQVRZQUFBRTJDQVlBQUFEcnZMNnBBQUJNQzNwVVdIUlNZWGNnY0hKdlptbHNaU0IwZVhCbElHVjRhV1lBQUhqYXJmMVp0aVc1bFdVTC9rc3JvZ2tpcUFSb0Rpb1o0L1VnbTU5ejRpaU5SdEk5SXZ4bG1sSUwzbnV1Rk1BdTF0b1ZydjMvK1grKzYzLzlyLy8xdktta0srVzNsbGJLelgrcHBSWTYvNmozNzc5Mi9uenVkUDQ4LzhYeTUxL1B2Mzc5K3VzYmdiK2puL3g5NCsyL3Y1L08xL00vZitBZjkzakd2Mzc5cW4rK0UrcWZDLzM1QmhmK1BZRjM5dC9yN3cvSjE4UHY2MC82YzZHMmYvOG9yYjUvZjlUeDUwTHp6d2ZQby96NW5mNTZyTjlmL3Yvclg3N3dza29yYzZNWXdvNVB2TStmNmZjRThmZTc4L3M5ZndZKzkvQzFIbU1zRjM4OThmMXpNUmJrWDE3dkgzL2Y5OThYNkY4VytSLy91djU5OWYvNjE3OHRmdWgvdmg3L2JTM0xuelc2eTMvOWpTZi8yOWZqWDdjSi95SU9mejFSK05kdjNDSEYvM2lkUDcrL2I5WHYyNyszNjBoaFMrV1BSSjNGZnY1eEdUNDRXUEo0ZnF6dzYrVjM1dC92K2RYNFZlOStUN1o4M2ZNZS9KcFBld0s3OGwxUGV0YlRuKy9aNSsvNVRCNHhoUjFlL2c1aGhuaStWdU1iV3BqUmZVcitlcjd3eGhaWHJPemJEUHRpNjFJTWZ6M0xjKzdienYzbVU3bnpldmhvZUxpWVcvM2YvcnIrZDkvOG4veTZ2bSs2Uk05ZC8xb3JuaXNvMXp5R08rZWZmSW9OZWI0Lys1YlBBdi9qMTUvdHYvOG1QNGdxTzVqUE1sZGVzTi9qZDRtUm4zL0tWano3SFBsYzV1K2ZDajNYdS81Y2dDWGkzcG1IZVNJN2NKY241cWM4OXh2Qyt6eXNZMldET2s4ZVlncURIWGh5RG91SFJGNWlDZGNiYXZEZS9NejduTStHSEVyd3k5Z21OaUxIZ201VmRxaXpXU2xsNU9kTkZSbnFPZWFVY3k3NXpmWEtMZmNTU3lxNWxQSVdqVngvNDV2ZS9KYjNmZXZiM2w1alRUWFhVdDlhYTZ1OWhSYXhnYm1WOXJiYVd1czlYSjBiZGE3VitYem5LeU9NT05MSW80eDMxTkZHbjRqUFREUFBNdDlaWjV0OWhSVVhabUtWOWE2NjJ1cjd1VGFXWXFlZGQ5bnZycnZ0L2lGclgvelNsNy95dlYvOTJ0Zi8yclUvdS9vZnYvNEh1L2I4MmJWd2RzclB2WC90R2wrOTN2Y2ZsM2cwSjlrOVk4ZENldGp4MXgxQW9JTjdkdGNucGVET3VXZDNDeWhGRGp4a2RtK3U5YmhqYkdIYVQ4amY4OWZlL1hQbi9xLzI3Y3IxLzJyZnd2OXA1eTYzN3Y4Zk8zZXhkZis1Yi8vRnJpMzkzRHc3OXROQzEvU09hQitmNmFGZS9MNXYvdmpyYng2cDdwN0w2SG4xa1dkZXFhTWk5NzdmRjRmeWNObVpZbjkzdjFOWU82VXZocFRlSzliUWE4Wk81YStOc2Q1N2JOYzhzRFp2K3VwVDhGclBkcW5penBVMXJuMitiWS82MUw3ak84dkhoM2R1VjRtNHlCRXdaWVZscjJGekU0eGYvN2hvU3l6QnlPL3FmYzMwM2pQdzFud1hieHZZMGR4YS9ZbytPbzc3WXNPL09ubVorTDVmcVd6RDJobWZIc1lJdmV5TVJ3UUlQTHhsbmFPdHROTllMZk9jdVlYTXBuN0lFd0pVcjRFUlhwWG5DcW4xUFYvZXVlYjFmbThyOWV1MWpQWStYMEVvSXErNVcxOGRPOU16Ky9IdVozQ2hOMjA4d1hzOTdCNHVvdll2NTQ4djFQeWw4ZDFuVC9IZ2RjZTYyVS8ycnFlRW9JNVVTd2hydHZmRncxUldaQjNkdWNvN25sMTR6VmxIaWp6TllBay8xQUlkd0g0OXBha01uMUw1N2Z6bCtaWEpvOFZudDd6MnF1K2VIMXRjVUpGNWYzM3R3ZDUrTWRZNzl6QlN1dG1kOTVsMXphVVhXdC9kZWNiOERsNXZmVWhQV09OYisvbG1yeXU5Kzd0NGlxeDQ3UGNwNzNkdmZNSEx6OHhSMm14WXlQZDk0c2F2enBCdjlndWREM2ZKZGFQckc2ZjI3SW5FUFN0Y0kwMWVrajhpdCtvKzloZm5qWmNiM3JPbFhka3lkaTZ1Kzlzam9Wbzk4WWc3c0lNWWx6SkNyU0d4L1JPUmFDbjB2VldudVQ3V2xsdVArYjBvM1U0RnVZajM3clBpZFhkZ0M5QzV3YzY5TGgxWHcvWWdGL25DUG9Ua3hTcHFGbmZ4L2R0dXdiL1hOOC8vZjNwaHM1Nm5aVFM3M1RFMmZYZ1liM2kvMkhkZUk2MXJMRjRtM1BWTHJHRmlEenNPS2JjUmUvdFFjT0J1VzJOZ21DYmJ3Zjh3Vm14VGIvRWJvV0Nwa0tuVTN0d3ZmTk5DTXdjN0hWSkJxZ2VHQjdBQXNwdklGelp1YllUanJldkxBMlVaZS9LWU55L2xEU0pyMitabXQ2K05UajF6RlV4YlExYjd5bHZkZjdGSTkrQlJFS0cxUUl4ejhyRTNIRDBzV0krZXhoeiticXYwOWFDMDJpYmM1NDVlTGN6R005MnJwcktScjRhdGlieDFmN25MZzB6c2pxbGFxN1FXTUZBcGxkcnZ2TGdPeUw5aXhQWWNEeVlaUk5YQlZ4R2JJaTVlNmR0UC9saFdWZ3ZKU2JraU1hM3hrYlhxTE9sN0VOUVhGVTF4UWlFKzNqUnJUQkhWK21Jd3NBWCtMOFRCNXM0K1o4UWZvTHgzVGhnbDlCZ2wzOXc5THBUM2V3RjZvUTlzZHJ2ZFl2UVQrTVhiOCsrWSsxMnd6YkgzdDk1alloZmkzZG8zSzR2Q1U5MjVZVTE0aFRsQi9yRXNsdnZDek1YTmpzeGNucFI3VFJqcThLUTNJSU1kTHFDSHV3dUxneWZJZzQwYWhlY2N1d0ZXeHV4bGxZU0hBRVRVbVBKNGNrVFVKMnBYc084VDNMcmJmTit1TUxIM3JPUERzaURzdlBsdUdBM1cwVjNFcDdFay9VWXZMcGE1cE1ETEQyMUw0c1ZRSUM1MmYvNTRYaXhmd2dFTlJHVy8yTitNU3FMMGZLNDJibzZ3aDgwRjl0VzRZNHQ1cnJjTzFCem5zSEJ5dURLRUR1L1YwZmZZNTUxS0tNL0h2MnY1VUY5TU9UOHhQOXhGM0R2anhhRlpHNXVYRTUvQUFLWStzRTY4YnVVdlRENWVBdUY4ZTZxajNCT0ZCbVVETmpGeGVYd0ZiVVlpTXo3andXV3ZoUnRwWGg5bm05N2FlbVpWMFFoV0Z2SEg2bUtHZmVmQk15TmhyNUx4ZklNbmEvVjQzdlcxV2E5SEN5S3c1eG5SRnN4NUx3RkJ3STY2L0E4K0d5ZVJ0SWpOVmVUYkJiRFBXN0RTN0ZoVDBsNFpwRnVNVVFOS1lIa2p0cFJYeTFoUlZpYS82RCtDV1ZyR2tDTSsrR0YwclFxbnY3bGJTWURSa2p2T1pWelNndzlHOElZUlpzVUF5VlhDOXVJZG1VSmxrSjVVUGtES2hpdjBnWWdqSDBYUDlXSE1jWWhMYTMwOXFPVVJwWFhqejlhSDJyZHYrWUg3UXhLaEVBVVFrR0NtTENieXhZOGhBN21pTkI4cnpSODM5dll0MTFzbkYwY0pWd2U4N2JleUl3cmRNeFl1ODFiZXNONVR3SUF2akJxMnIyYzgyQXg0eHc5UitmYis4Q0s4SytnQTRJSVJ3b2hqOFlCbGoyNmQ3V3Y3Z3gwTkVNOUNLRUZCS0M2QzhHMFdQN0o2SDc0Qng5QVJodXZHQ29SM0RGejBERHpqM1dOUkZWa3NTQUtQMnBDRDJZb2NXQlB6WWNBQk9Ed1M5OGFWWWtqdzdSSGp2M2paamRGSndDVllJVGRhZU8xajlNZUdaUDM5SnhyS3picC83NUdma0F1N2dZWlhEUGVGN2VVaURTZ3hwRVRsUlZ0QkZHOTlYTlZieGVkR1BDdTdFU2FlVDBjTGF2eGFqZ3BPeGcxaTBGOEFPeVlVQlh1ZlVQQUtlQSswbGdzQXk5Qlp4SGgvZ3hYTEdLRGVubmV5K3FrOEQ1Z25nVGg1SWxaUWczYTlFL1BMT3BaUFUrbEs3YWNDSDBabDYzc3JlYlQwRnFBVzBvaWZIamp5K1FEWXBqR0NxcmlpM1R3WFFHdlA5dUVBRmV3RjZzR2xjR0hVRkNlUGlSTTVndDJ3VDAvSEZVajlVRHBzVlB0dXR2RURmTU9Obm5JMW5BWXFnM0haQmJERjVvQWZzVnFaalgzQU9NMTM1MllWZzg0LzhYMlFYY3dsL2pHT3dpYmphUkhBZENIdFNGbGNRVU1PbW4vVGdpRUNWc1E0b1VBcWNvQktsSXhqdUpWdGRBaVpQOGdETkFFdUwySGdsYTVibUlOb0taTVF4M0dXSGhkWGdhWW85WU92QmdLK0dHTitQSlNXbG55UzF3c1pnY1gvSWNaM25lbWFGVE8xVmU4bXdjZER4L3VOMEZYV1RjU1IwVXpFSFMvT1ZvTlhjcGh6QXdyeGlZSEwzQ3c3TnFpVks3SUhXTGdHL0FNN0k3MW9PU3Yxdks3eWc1NkhoZy9EK0FZd05nUVB1UHNoZWVLdG1yazVxcFVnVFB2cTZCUXdJUmVjV0FJeklBZ29QcThGT1lZYUpZZ0hkMEh5SjJDVkhaL0lGWmoxdzNOdnZBSGZPVngrWFZpbXg4akpDeVg1eDllUHZ5NTFQVEtHOWZzQUZ1VHZINW5IcHYzdEo2Ly85ei82cno5NW5SL2RvK1M3WWd4N2F0aWVDSnFjWTJKT1lTbUk2SVBSaFphQzlMRGZDR25MRUlDWEhTcWlrZC9iWHZOSUs5Ymh4ZTIvOCtBQWRMVCtZeVYrMzRCRitDMlY5MEFaVE5ETnphS2F6eTNuVGhjQ09QRnlvTCtBSG1GdFhpQXI2b082SHVUSFBrSms4Z3NkMkYySGt6SHU3S0M0SFVCWC9mUERNMStMN1VHNzN4VUVkZy9NQU1VT01zOGN2VFdrWmVEbWNXOTR1dyt2SkU2TGdNUTNkamowRFJBZlJqb3VjSERCR1dPQnNac05nY0dBaHhlNENLWm1LYmduZG0wQWNnR2JQR3BNY1dnVEVxaDFwTHVCYWhOeTNPTjFieTRGcWNHUGJSWm5vQzJzQk9hUGp3VEpJSzQrUkZ3WVZvbEhHYkFqckxEUlQ0aGpiM3VQdmRhbzMyWG9DdUFxb0ZMUDBTelVEWjRjV0JBWU5adGJFbWF2cy8wTkdaMDRwcG1mTU1TbjdEUFVHMk4wZi9tcWNHdUFKZENndmtwSmlobjNCUHY0S3A0NUQ1eCtydHh6ZGhGWVNWS01oQ0dhK203czBvSTJMNjU5VFRRU1NsamZJVHBpalhDV2NUenBHOUQvUGxnMWVQNkh6TUNTeDFmeGRqc0hIQlppMVdTUkQyNityUEZnMkxqekIrd0FqZUJESUFqdm01OThLQVIrQWxTR0NQWENZdDBpL1RkTTlMNjlBVjVRUlNKdzZ3UmtYeGVxSGZSVUJidUJ0SDFmKzRQSEFPOXhZNWphRVZoZ0lkWXN3bmcvWE5QODhEdm9pQnl4QXRUWnp5dGovUnF3SDZ6K3BNQnQ1ZUxuaDFHS0cvekE0K1hJM21ON2VDM2VuMzFubFo4TUZvcEE4WTRGRGUwRnNiRWZRRTJlQTFvQjJVS3FOb1JpcHdSNVlVZUN6QXVVOG9DY01KNll4QWc5d3RtaHVDelhEZVNTb2x6RlhjZkRBWFIxbkJtbUpibzNwaWd3TGVnZnNBR1V6dTQwT0lBc21wL2xIYll1YWNKOU1XUGh1WDc4ck9MdG9KYTd2MndUb3BCNWQ1VDFabFZ1VER1MjFUQUdEQjZ6Q1ppTE9NQ2huMDI4WGtxbzdydzZJQnRFaGs0VWJTK09DSGpUV1V6OENZNUJ6b1RvWWVqaE14MUVDQk9GVGtpMjJNNEhhQVhrZkRSc0NUM283eDRzUFJzeThLcUdIOUNXRFBERGMyRW5CTU0za09jYjJBQnNUeEFuZWowZUwyRE1XYjN5WG1VamU5c2NBekNzMyt4U3llOUJoMi9HdjdGRU9OWlZXUkxqYnM4TFRPa2JHN0x3ZExPQWpockVtblcvUU5aWWlpQlpLdm5CaVJvMUFhYkEyTytXSDNYemhNTEV2RGpZd3JPM0ZjTXFBRng0Q2VqdlpRM3ZjcTNxSG1TbGNIVE1Sb1hpSkw0SUJJMlNZdkFOc0czaGpZYVNBdHlJaWdXaTlPb0gxUW53ejQyS0hDWVBtTUpVOFNCcnZTQjZsQi9oNEw2YlZjS0pZYzRDQ2kwWkc1V05CY0hOVzdXOTN3RWhoRzdzQzRJTDlrSFV3ZGY1L011ZGcrT3pZcENxZ0kxR1lQa1NXTmVRNHR3dk9CZWJuc0V1aGlSUVhBUzhYNENZZ0YvQUM1YU5QT0NLdFZ0VG1NRHl1ZXlvVGw4R0NtS29idzRxY3BlMnNtNExFUXlWRndQNnNUZ1lEVVFNdFVSY3VUZXlFUnFNSE13R2FoQ2xWR3c4SGtxdml6MWx6WkNNelRibWdUSFJoT1BicjVNNkFhQXZzUld3Qm16NUhTZ2RjQ0RmMjNIdXJDRzYvQUVPY0pPZjRmWVhIS2tDQVg0MmN1Sy9UVUpwRU1ieFo0TmJJZnBZZm9CV1FMNXF5TytFTFhXOERsNElLNDJkbCtrQkdQazhKQUtXaVZLOXo1VmcrVGphdHU3ZHE2ckFOcUlEckdMSUlqak1icm1CS3dOZXQ5bkhKUDJHb2Y3alNmN3hJTmVmSjBFUCtyR0tCbjBFMVh5SzNVRkl2N3hPZkplMWhnMFhTRFBZQzhWaWRlSmROSjYzRHYzS01GZE1yczVBRXQxUWJYNmcxSUpBWTdaaGM0akFnNmJmZmNsWnZ2TG4xbmp4OVAzejl0ZmY3eDgvd0sxb0F5TEtBcDBGN1N2ajBnRzZCbG1rUWMzb21ORS9CYlBINTJ1WXROd3ZURnFTaWhiSWZ4TkFnOEZiZERGbHNDOE1EUG4rak9nbTZhQ3hJSmdqdHBVdE5jUjlGbjIwY0NVOFVPQ3hmRGZNTnFBVi93YWlEcytJUU9JQWoxUm1jYWI1T1NMellzV2hWTU9jNE4vQ0dwZHhqZFlibmdIZmNvUmdISkFsc1AwRHQvNXRmLzdyN2JuKzJoOHQvd0NCNEN6eWcvK0YzK0JaRjZRSEd3YnN5TFZnT2xJNFVjVWJwTERuMFU4ajZTakx0YkNRYStiS0MwekRCZ0hsWWRNYjJzYzJicnhVbEZzY29MNm1pQXQrTm5CNzZBQVB4eGFEVEZoWUxPUytIeUQ5MHpvdktNM0xFM3M0MEV5TWJOREh3MGw1NmdlSzYxN2lZOS96cW8veDhyMzdUMW11dTVRNzdxckZFeGd2dlB0RUd5RzFrcTRURTRPWHlScll1eE9kVG51QU96NXN6RjVWNW84Q2xIcE5IQ0hLWFRMd3B3Q1RFSVEzd25OQnFCQVVLSGRmVDNCdEIxNk42L085VlFXdWZDTHlUT3dydXJrMEk0anlQV0RBS0JSbW1MWHBFU0tNbTB3UlVJSGx1Q1Zhc21EZUh5dUUxUVVsU1lDZVZlSEtHM2YwakF1RU53d2FHTjFIWmhkcUpOVjh4MmQ4R0JRTWJPblF3aGhpVWRrTldBL2o4SzlCbEtYeGI2dUVkU0hOTUdtRG5Ed2prZzFkZ0thT2IyWWM3YU5aNkJXeWdLeGxLTXFlMHFHeXNaUEdwa1BTbmlKVkkxMUd6bHBubFg1N1d4dE9RQWdIcW1oUWQ3T3JyQ0Uvelpla3B4aGhRK25pdXNERmNaVGdLL2pLVlJzVzJEVDMvYXBMb3J4dkYwWFlUQVJNc3FPQ09JcVYyc2J3c3pOQTA2NVMzRkJsdkRyUGlud1lRS2g0aW5yamJpclVxT25raGlRS1JJKzNpUk1VQTdQN01zdUNnWTN6Qjd3Z2VSR29rbVlBOEVNbzZoVkVRaER1bGNGUCsyQTE0T3YzYmlRYVVpd0kzem5pOHlGbkgxcXc4Ym52QjVUaEpoK1dISk5UOEpoVHhKYkJIK3JzUE9xNGpTMFhWZzI4T1NlMGMrQWpqQUZEUW5HdllHTjR4c2RGY2VHWXpGWnJpZERRQzE3OExwZGQwYTA0RGZnUnEyaUFrNFZQT0dXZUZ3K3dZaDlyNTJXQXc0MVBPck9HRUppb3h0NWY0Snh0M0NFMGJyaGtMM2xVMEUweUFZQVRPK0lYUG53c1duaVhiNlBhS1R6b2Z0WG56VGRXZ05LYVY5MjRiMURZbDJ0Q3NjRE1DTzhOOFgxZ05pdHh1N3FCT3hEdS9EN2dINU1uY0RVdzJNMXRBQXREM1dueE1qUTBaY2NRNm9DdHdEd2x0UmlTZ0dEK0kzUmZzVTFQaHRpKzBFaDBialhFUndlUVZvc2dqU2RmQVMxeVlUZGVlRWltOTZ0MTI1aUNEREsrTzdnVWZ3cnZpMGEwUUxJYkMzaFhjekdGSmZwKzBQN2tSWkJnby9PUEllMG5KYUF6QXNVK0JoMHkwZzNPM2RLQ1J6ZGw0bjdNOVFCSmNWTy9uQkpMbks4aEdETGtnUkZwaUJ2YWJqRHhSSStCSlZKWUVGWXZFcGtRVVNIZUQ1SEZ0Y016dExwUVg2U3FYeGlVa1JBRVZnRi9OdlBocjF0bkFMaUlRcldGSEdKM3NSY0w4OGJydzlJU3VBaWZlWnM0ZUJhVWFGKzZTendIMndTSGhvYTJwMFlBUENKeWcwL3lFWGJJTDZ6dzQ0RmZTQ0FmUUdLNWIwYnVRZjVnUlJ6WkJYcGNieXFEYjQwSi94NzhSalc1aEtIbkFxb0VSeGovdUxHendNY25MK0g0L1Z2aXB4cWdXeXc0K0tpYXQ5ZWNpWE1OdjJoMHFrYkpid0J4bnR1ZzI5MTF5WWFsMEg1WTJtNXhQWGxHSlFIbHVNU01ZS0tOMFVSV09oQnFwaStFYm5YTjFwMXJ0K2FTR2d5SkFQaVVaY05oY1MrTWNZakJqRW9HUkZTd1pQOFA0UlBuLzIzZE1BaDhNR09ySS9BaG9vV1ovOTdYZVBhZEowK0s4VzhtcGRDeEpkbXl4Q2ViSkdXZkRURmhGZmNHNjBNUEJDYi9manNFOHNjRDQ2VTR4bi9lL2NGVFlDbnJNSTJrU0p0clN5Y3FBaitCZE1TVGhHTFhhOCt4Ui9OK3JZZnhYcCtGTGJWalAxSFIyOWcxUk9NRi9KZit6OXVkdTAyREFGdDRPdXVCRUR3UTNuUGh1d0JQRjhKZkUzZ2Y0SVE1eDhzVUF3SjREM3dxZnROMFg2eVloMSt1RDdNWmtzOHdOL0tCUWdCVnh0RFdYUHpiVDZZdllpaTNBZnp2WkFsOTE3TWdmeTBIK0pnSGlUZHdQT0NDc1cyNDFsWngxWERrKzJLSHh6M2h1cmp6cmFpQk5iV3ZrbzErdGg0OGhkbHIvNGViWFArNFN6NFNBVWptM1lFR2FMVUxEOFpENFRDWXVMc09UOG5uOFYvQS9NdDJBQTdteWZMaGZDN2diUnpZNTR4dmVqNFVHb3ZzbXM2VGpmM1hCL2pidHYvTGU4WWFRUDRzRFJ3REl3Rml3b1ZrVGZHSjZXQXlHOXVDRFVIWlFaZEdrYnFrNWUrN2gvWEMrdlN4TDBnNldvbFV5dEFOT09LWEkyWVZNWmJzakNkQzVORkY3REc4NTMyQnYrQTVKS2RYNUMvcXZrenhLWkQ0YnpZQUlpU016bFdhTnF1R3pqaUNGQkZZQnJvcVg5RUdoWm54UkRqdzl5OVFXaWFROFNyQ3VmRUhtcU9WRTRxTFA4VWxRNUFiMmdRVktDK1diVXYvYnBPRnoxR0NabUprUDloUmRIYysxNUJjR01xQnd0enhYdWptTU04SzFvVE5taHpCaEpaM2M5Rzh6d2FBUlQ0enRaQWhQMzFqUExBb2x6NXZtT21ZK0lOOUloRGNqMlhHeDZmNjRXNHhsU2JKd0NhTlp3UTVyY0x5c3VLc25RVmxHYVRSOTJYQWNuMG1ia3J2WEFWbmhJaU1lbWRaRlR1QzZaOW8wSy9LWmZMcTIxZ1lQamF6UWRVOHZrWVN1cjRUeGlQd1hpYlJYK09kNFBScFRka1RQak5VOG9yZXNaWGJJQnY4MzJqWlNRVWE2Q3JyYWV3UHFMWUI4aDgwZnhnOWovMEJFTEd6Y24xY1NHZGpKcVprakNQU1ZVSWhpREFTemNydllPWTRocThIdkVnNzlZbHd1ME1sUHJqbGhMc1ZUR1FHcFVXcjZmZ1paQzByS1ZQSlI2WndhOXorUzVnU3J2Mll6bEE0VFRWSGxwMVZnU3hiaHZDTGFZSDd1NVVqM0RzTmdCNTcyTER5TDh4UlB3aGdCdFVDTFo1OVJlQWxaQ0dEeE9SNG90MjNJWGxKWklodkxTdkRxMXFZNlFTbjJFeUFDK3lETlRTK1h2UEo1RDJtNlJ0MExCWFRHY2FvOFMxY1RFdHV2WU4wVlN5cytjUEhyRU9WWUlOZ2p2UWtCSjM3NDIyeGtkZnptSFNva3gzQVdJeGpXOFBQKzhLanVPTWI0SU1MaElDSUFIQlJhTVRydFdnbWZnQXpBQW52SFBjRlJ2QmJxSk5xdytzaGpMTjNKQjhvQmwrdGVMWnZRZUdXZ1k3OEdMSlMvLys2NDdtZnlVejkweERpb3lUb2RjVHg0TEFnL2pIaGJzVmhpVjJER0NCSCtIU1RnUG5GVTZNQmo5OFB4a3UrZmpYOE5ONW5BblhhKzVqNkJDV0M4WEEyUXFCUWpBTHhMbENXdUZHa2x2QlhKOWxkQVErZ3laR0tNT3JpVVlCd0E0dUREdDVZVThnQ05HcURBU3JZTytYNFlMYVEvMmNOOXEwY0hnYktRWW5CNFA2NUVKaUpQZnBiamtIY0QwQkt0NG5vWDhidnh4VWp5cHpMNFlxWUdmalJCL1FCNUpna1MrOER3Uy9YMXdjWUtpMWVDU2tDSWdMU3A3YnpPWWtIeGRtNm9CdWptdzB5Z3preGozbGpKdzJyOFB3WStyb25oaTNrb1o1dU1XMHlWN3RNdTNmTE9VQ0NTR1FVdExlbDdSUm5Md1AzM1NEaFNVekdYOHIrMHZGSGpPVUh1TTNscERSK2JQN0J1ZTRIQk1iM3Y2YVIrcjJNMG94d3ZMb0JNVFJlQS9xTzBsYVVITitiSVNuV3ZTQ2tCaTd4aVR4L1J5eXl0VXlnRi9CQnJnQ2h1azRCTlVDTHI0RGg0YTVKTk5KTWVrUlVKUFZYVHplTnpnRmFVNDl2d2lJaWdZWWhlU3VVdmNSa3JBNXZQWUJJMGJEY1l4WVJRbnhGODVQc1RyQktSY3FLalZZTnhoaStoN1JCcnhLTHNWV2NTTVhaWW1DeExqaTdjcTlmREtDVUN3c0NyVGdMRmtvK1A0UVJnT2dCL2pDL3JBK0FBNXVCYU93RjhBY0NBcUVtR2phd0pwZ1M3aHRHWFNCL2ZLSkpBTmxOUlJSV3g2RVpOK0RkYmpsQ040akJicUhYVm9weHp3UytFbTZNdjczNEJVK0hHRm1PdHdZdzRzRk9mTUhhRlRnak1tNGxqd2dKbSszV205RUFxeVFnR080WXVDaGVoSzNkMjByZnVBQUZ0UjVCNFBkU0g3SDRIK2dQQUc3cXE4UGxBK3hyak00aWxjejZXRHRpNlZHMFhNRDgyZ2N1aEd3K3hnQS85dVhCcVBQS3JHUnNRMFdDa3FOZ3dMSnlGcTJlOVFQUW16cWYzSVJyWVJMcTFhQVBrSU1ialc4dzluTFNveDlXRVhPSDgrTDN4cDRNakg5OVRmbnZDbWZsZmdLYzIwVFc4YjRqWHRFUTFYbVg4UDZXTUJzVndIWkIzVzVqN29BdGtDTW9CRVNVZ2hsQlNCR2NXNS95R3ZaK2tKNThJWmEzRjBMZVlEd3NVTG9iajlqUjduYkNFam1mdEJhMElxQjdWaXhpa3RrTHNhakpVdlBGT05lejJKWEw1SGREaTRlbEFZY1ZRU0JBRWF3S3lHNXVFSXFBUWJMQVhtQUxjQjVJc01WU1pSbzltWmVSUVpacytkN28xUnJzY0RReXRBeWU2VG0ybVFjNG82Vi9vby83TTBzeEFhdDgwWW9qci9kZE1JV2VyZUVTTW9kYWNJbzMxczJ5aHdTQTJQR1lpUnRuQXhQY2x2NEJDbnZkRFU4Q1dNMElHRVJ0dGdzTGJFUkdlSmg3TlErRlBxTG5HTFo2U20wQXl0V0VOSStYWXNaNkEvQkFoVkNqOVZoU2NHUHVNQWlBQ0o4SDZHRFdMWnJiUndicVFoYkJUK1UrSmRrWnNqMXcyaGJJWTdBTndBRDhkVVliRnkzZ3llT2FXSWVOQi84c21RSlUxMnJBUWIyTTNDSVhnekhmSVJHc3RlbDYxamRYby9pbXdaRHFWSkc0TmkremY1dDdmNERLOXZaaTZHcytJRHVYR0E2QUlOekJNT1g5amZHcjNMOTNISllWQ3NuTnY3SnFMMDhVNzdSUHJTRWdoMGV0cHJjTTJRd2xQT0NkTUtVR2kzQWNpYlY5bXFVTXhnaTNWZWdBc1g1cVF5K3NNcFRLekUweUNtbHBPbERBU2dZeGlMY0hZbVJFeitvQjYzYkFRUjBFanMxN0UzSTF1blVYRDd0V1VUME1NRGZNMnpJelh1M1JqbjI4UGpDaFdTZG9jQTJ2MExSZFlMM0JUc09WbGNOVmVYYkFON3EydDZVVkpvWUFZNy9rUE1TZWEvbyswTGREQTVCa05CYy9oSERMQkxKNTcySlFOb1lUdVYyc2tmZ0llUVludkJWUVBqSkVKQmpEZkRBZ3dMTStoNldURmVqRzZrSUYrNHVBRnhZWkV6YjdBeUR1YjduMkN4UkZiZ0EyWnJSYTNOTTBtcFV2Z0IzaklkKzB3SEVhY0R2NTBSUGJUMzU1TEdReEh3VDJvR3RUSjQxTzdveHQ0WGRTcmpWOGVLWUVlOENXM01naVd4V01WdFlwU2VhS0FsM1E2N1FjTmdmcklRM001WEkva0JaV2hFdmkrcE5PYW9mT3ZyQVh0NFdsNzdES3cyenVsRHVlY0hzM2pKaGVFT0ZsTmVTZnJFUFYxa2JyUmZqaUwxZUwwVFNDekplZzVjbXlhYXRXMUFSNWk2V2UrME1KY0R3Zy93Y0VCUy9PMll2MXRuR01PTS8zUmErbjRSS1RaRHdRV0FBRDJ3empyMmd4Z0xWalNpVk1qQVc4MHZydkh2YmZuMVZUYlREelZ5TVJiaFpDN3d3UVp6L0RaWmhMYVR4MW1LZzlHS0Nua0tCKzBEUTBLV0NacGd5bDUxTyswR1JCVmpKTlhBZG1Ca0lGQTQvcENtd0NnQWhROWVpcXpCQWExZWFudnYvcXFmNDgvbC9KalQ4dk1QSmwwZnc2M3dJcEhCdUZtQlJjNllrQ2hjT3RjenN4M21DVUVvcWJtb0YxSE9EM0V6TGp3Zmw2MVhkMFBJckhrVEVBeWR4OFNzZ0tsSHQxMDEyc2dyeTk3TU1OMTFxditCV29CL01HQjdNb3NLT3EyWVA4VDR2cUJDalZOSElDL21KdThzbGdKK1N2WWVzQVFCYXZKUFBxa05NTUdKbFkrRzRjQjNka08wRDY2VWI0ZmtwUWZsVnN1azZBblJVMXI3c2FUelhiOGF6YjZrRTRMRitZRFNkWjhnVUJZTjlnUmV3WXptSGpBbmx6WEhFQ3lHUFo1MHdnbmhNUldzYWVIMnM1Z1IxQVZaYm13Nyt4YXZsYjEwa1BRRnh1cUhUYkp0T01oVUFzc0grUHhaTGhHMko4bnE3OEl4bjExNk1kMGpST1U4bUZoRXR1VDJ6OXMwSmxHUWxvL3JpUDBIbzB2NkkxSHZoTXN6bTV6aUFWVXZqNXMwNDg0dXFYRnVqR3dUYXd1dVdrMVlMbFZYaE5pQXQyQmM2RUh3WlNscHdOQ2NrT0FpNGlXL0J6M2hIT0JBYStEQTdNZitUSlhPWHh5NkQ5YzVYLzgyVitVT2JGb1lsc29rYjVRWTRPMjhERUE2QlNNTXp5enZITFZvbS9oQ213aHBGWnhWQnV1OFFDNjgxYW5DUkNBd0ZqUHRFMXl4NEVJVkNiKzFldkx1ZEZzd0xNQmljZnNSd3dDQUFsUUJQNkF2Y01tbGFXaDFkRDlMRmFzb01yS1hRNG5BZEVpSWdpaWpDQS9QNWFmVjVERWMxQThuZGFackNTMnR3aGZZYnlCMUNwVFB3R0YxNUdPSU5PMDRRRmFONW1rLy9wcW8wT3AvMUxPTlAzV3pZWWJJNTJKeVRRL1lpamJMTmtKcGZTdEpRQlMyTWR2dVd5ZVJvZEttMWo4VnpzbUc1Z1dNTkNza0R1UFdhUzJ4c1BBMzBYaUdyRy9YSVIvQU9Zb2dQTit1RVcxb1ZEN0VMZ0JhOW45T2VuWWN0V2pHS2NnL1VWclUwNDlyT2EvbnZITzFjdk8wVVArRGFjTDVRWHNIbi85SE9mcEhnL0pGTmptdUl2NEcySjJIRzEvVFV6S1RWM0RmQ01acFBZNWJidUNlZTAxSHh1Q0NPNkZxcmRWY2JPY1VDMkpKZzNlMW13WllrTW9CMUVqZ3V3akJta2lnQmFZR1kwNXpIcmZVUlR2M0VwT1hIVzMxNTgzQlVlUE8yQ1lUMStYN1BraEZkQWhJOFh4VWppUW5oM05nTHppRU8yL21GZUZyN3hxaFhrcjc0OXVNME9vUVF2c1Y3TE5FblpBOXFDRmJFYWN6MW1IaXhtZk15K1ZlUHQ3T29ET1k0NjBQRWZxd01xdjMreWhHRndFYlg4K1FDVytBdmF3YWp2MzRMWk9IQk4yelVSdTN0TGFSQXZaQmJNaEttd3pjc2FJOGpEampnUkMxOTdmV2Y4UUkvc0t5eENYdnZsWW16NytsanhhaTJMelNSWlBwdngwYmZ0TGkvT0FlLzE5dnNFVlgydUIzS04yMnRZbTEydEFVSEYwVHN3TUo2Mnd3M1JSVjU4V2M5a2p1WlRwbUlwa0M0QlNZVGdQbmlhaWRtTDJDalFLMWJpQkdhbXhkNUFMeE4xMml6OGVRbWdKTU5LcGxUdmFtMEFVTHNBWTRWWXRoeFptd0pJKzdSKzRLenZUNUxsdDdzWEx0UTBtWjRudlBCUGxobWJ6MlpJK0FNcktWNkRackhoRnYxSTBvSEttUFFuVnd0ajd0ZmkvejJ1ekRmYk5vQWM1ZytUdlVheE9raFpKQUFUQ0xZbHhYeHlXZmlXK2t6SXJFVlFBZnJiakI1YW9IOHRnQVVnSVNCZDFlUjlZWGRuTFR3RkdQUzI1OHNWV0pZSmdqS0xKWW80WHcwVlZoWEEvaHBWZzNkY3I5MFhjZ0owcWhpUmg4RStXaXBUTGpPQ1NOZW9keHNOaWRnYlc4bHF2OFppbzQwVnBXTlN4b1BzWHRrNkJIemQrMkJ5Z2xIQitTdkFRYmFCRzQvMTNValQ5QVhaZDVNSXNCbXJkTmtIYkhoa2I4Q2J6OVhNVkcxb3h5bTNoc3MrVm1qRENrQjdvSE13R3JUaWZubkJ0NTMvaSt3OHdJZkM0NWI3eTgrbzJKUUpZcHQyUFVCcWpvdkVmaUVxN0NuSU52Q0R2QWI4aTMxL0Nnd01lbXY1MHdPaGd5c0F2bkpHMEFPWUxkNlhqMnpqajdsTWtOakhtMWRiUWxsTGtWMHhEbjRiZGhrbm1vK2t0bWJlRklsNVBvc1dSQzZQRHZKVEVjNDJjbWZ3RDQ3TnFzTXRSOVNzeFpQWHQwVUxGTmpFZmJOYVVNSUw1OU1qOHV3S283dXlyWFFEeTEveUNDZ1M1aXpmS1ExZkIwYkFRMmJjOTJNczB0b1JNMVJ2ejZlMUNkTTVnRkxSeXFyN21paE5BcXdIaVNEMk5PT2EwaTgzYW1yZjZrbzA1OWxOeW1SZWZwWmZkVmNDYzMwTFd3a2wrdVVnc1VVL2ExT3M5VWtuUFduOVpZVDkzeWM2Rk4vL3ZOamY3bm51ZUV3dHlCWklhY0V2bG9WZGVMSFJvVC80K1JmOEJhS0d0UmdOQk12SUNic0I5OWZvaUltUmIwNlVOVi90Ly9LTy83d2grQVlUdml4RHJTYTg3YzVGYWEzd1NSSFBnREIydUdjSGZleW84N3J4QXljYTlWb2hnYW5VdW9TVFBaQWduU0lDRVlOZUNRWlpRSGw5TmE2UC83VDdnMGMyM1JsaHNSRGZvVnRLRWR4eGVqOHdVYk5ZSklXaFJ5Y0JlQmxrYlJFdHZoOVl4N1hjL0lCMVEyM1JWOVFPbWRQNk50OEQwcCtSLzJVN0ZwK0hwRTE0NUVKYjhaSmNHOFp4d1NXVEtkaGZLOVFHWHFIcEZ2MW1TR0RoU3NzTU1wU1l4MEJoaDJuYlVYRExCWE13Wmg0R2NRVVJ6ekJuY1dCTHNYQ25tVHAvMFVVOGNMYXdEM2lDOEQzUmN0YmJMUFJ0bjJOUGFMaWhTalFScWxXUTdGUWI3OXZTblpHemQxbHpjb3YzT2g5ZkZVS2F0dlY1Q1JObk1NeGtxc0VHNjlnQ1hzVU9UdnZQcnJzZ0hiYStueHdQL3k0ejdPM0RBV1hRUW4wcFc0YmMvT3FScFU1NGw5UFJDcjh3QXdlbnVOc1YwQXRydU5Lako3NFBUbjRWb2JFTUFVRXQ4ZjRiUkpPZko3MFdMNXJBd3loQUt1dmRyWm01YlhpNUxNTXg3V3I0OUhQYnJIdVozUzVsaUxpdG9XWWR6Ly9rODM3QlVoYWtJRFpBVmx0OCtFRXFMNzBremdHaWpWTkRIbitVWloyWUNzOVhzbDAxdHNXODJVNndiOThMNjQ3ODNnYVFSb21vVk5peEE5Z25iZ21pZ3hldnZCeUdOZHZMdGF6N2U1QzlPN1lLbEY2R1RTZlMxSzF1Wkd0aE11aW1WWE8zelpHWHdBQXRPRzA0M1M0NFdJaTE0QWFBeStoSlRtaWpkYlVOVkZ6SGZvN0dTeGE4R2dhQ1MvRXlrSnBxWVVlMFR0Z1FOV3NIZU9rZDN3cUJ3NDNWOXJKSkEzRTBoSG9IYlBtOHhRc1p0cnB2T1N6dmsyYTZVS014dWpLQVkwRWlZSkJXQmtQanpLMmNlcEtWTEtCQjhLMXJRTXBDTWRVL2JCL2IvdUJudzlZRnYzaGF0Sm5Gc29rQXhjM0JlUmYzcjlidVJuZnRkc2FpUG5iZEJRdFJjbzg4S0x4MlFwTXR0T0VScmxvd1hKYUw1ZklyNGx0VzRDZjRLeXNRQkZiVHd2VngrbTROUDBBZlpoSjNSQi9KZm9udEY2NXBFQ3lDUEFNN3lRNmR2SVVKSWR1T3JkaFd1RzhiWG80K2RvakhpWjBsYkRJMDZaVVRBQ2NhaUMzYkNZVWtBOWNBQ3ZNR2wvSmNHS2JIUWtUK0Z5SFpFMkNMYnpzWGh1R2hTSjkxcHNrY0J1UWVNUHE5eTQ2QnZaZUZFVHh3MDZIanZMQitFN2VRd3BrZmczSkdheFhTeEQ4Nm9jTW5xVkNjKzdITE9kMFhUSFBxUjVMSkt2WUhEeFAxMHlDR1lZSHpLb2FnNUErMVlRVWVwOGRnVEIzK1lldkdON1hJNzNkZnRqbEE2Y3FKTTBGVTY3QktwMzVyMWV3NjFjOE12c2g0L1lDQnFNbHNBQ0RsRVdBQXd1NDA4MVY5bTJ3N245NzBzL2UxL0JyWDVtNkdsUnFMZ0sycDVvd2UrTTNhVWxOSkZMU2ExWURlRyt3RytWdkdZNzdIM21BMGtLZDVnRlZmaXZZTVRzdUVPeUsxb3kzaEZRT2FkZmpXMmUzYkpCNm9kd1BKcm1KVlNtT0RiNlhSdmNCbnJiQ2JuWlh3M1c3VmtCR0s3TndJNjdRRm90RTFLOUFkSU9MSE5oVjgvelRpakUxOGJQSkh5SGwrOERPU1p2a2IzcVRaK1hCcXRZQkdwdy84Tlo3UDB4a0gyWGsvTDFoM1h3NmpFTk4rMDU3Sk5uUWt4WWc2R0JuUUFZNDNhMmZhK2IxMXhVRjJEWFlBVU5wNTNwTFY5M2RmMXRXZWR0MWhXNER4WTc0Tk9zTU5JSXdmYm5uV2hCV1BCZ1FRZUFQb0ZkWlJtcGp6VFNrT25TbFUxTmdzUDVBQTYxZ3RLOGJITkVsclZwZWwvekJoUm5kcjBoNThBTnBuV1hsLzkvWktYSGpZZUtvVnJ4V3RJUWkxc0JlZ1k2Zzdvb0FPZ1RkZmROT3VOaXo5YWNROWxCMVViVHZMQnpFQWgyQzVYeXZWNTc3YStCV1pEbXNQZGJ0bXhnUG10cUFaN1o4QmoxOVY4bXQxQ0FvZ285c0YycmJtYTZRNVAxNEkwYmp6MDRDY3ZHK3lwdmdCdFg4RkRXVDVnTDQxb0dHUHIvdVlxYnF0Uzc3TmVlZFdPZzdJZlBuMS9xcnhoNE5jOERsUEhJWURwb0hvejNRREtzSnF1dFJnak1lSW5WV3RwcFFOa3RoaW5ubjUrVnc0QlR1UldBdWNyQ0pxdEJOMStVNWhFbTRjQjJBUExONm0zS2dDcUw0cVU3Y0Y0U2lJVVVCem5sZTI2djdyanJWd3B0T3ZJanR1eWZnN3NYamdlREFHdUczaDY3Q2p1T1JpTlFPMFl1c1owMzc3aGpkY1dDS00xTVFzN1JhNEsvY0ZhQ0diZ3FLVEdMVFVZYkZJOVFiRmZraVY3UENKb0NORXIvRkpmTUtLRjVhZGwwSUoyVXRjb0ROTE9tK0thaTV6NmFjRkhYc045YmVieFhqTXRPTUM4Y0w1N2RIdDlXUTN3b1VUc2Nwaldlc0lXMlB2UU9vTDA3Vk1jdHBtanBHMGZBVCtEN1JmV2VVd2lZQVhlaHhLMEZLSEp0Y0xrTm1xZVNxdzl2MUFsRjQ3eVJxdXhraE5ONHhnZWJ3c09laVgrTmZEVXE1VHBldGJQalpqM2VXeWxla3RQNmxGZ3NISHhoTGk5eE8yQlVuL0pyTFBBd3dqK3JvS3FCNXVHUmRtbmhSMGhIM285NFZmL0xhanZuZ0ExdGU1Tm05SmVpSk10L2xJYS9WUS9mYldkVHVNQnZDVjlPV2dNRVF1Yjl0Zys4YlRzc3ZSeGdRdzlPbi9LRnpEZkgwMndqenN0dWtuczVxc1h4Qms4WDc3QVBvTndaNGlnNDFEdjlBZnE0cmlabHRmRUhKSTNEajVpbVpqV0RTZ3haTlBCOGs3ZVV3YjZONWs4M0VDOUo3WUp0YmlUbGMxeExiakVjVFhDb2J5TEhOMm16VjVPdVRPTWxKOVg1ejJHSlFUMjRoQUFXTWtDYkxDRG9BWnRpb0NKbTAyNFFGdmwyTnFESWFGVTRzTWpnY293bVpWOTNVeU5MeFVzRFNqbi9BOWdORWVSejV4L1I4K01qVjRqaFZ3QkUyMjlRbDZISVRQdVFnVG12U2c3VEV1bHVPRWt1b25BRDVZSFAvUXJWNXpoQXZDYkR3K0FUeFo3aTdFd2p3Q2NEQWVlbDVuTmZRT2w3MldOVnZMSG5XMjNqamo1NVFTU0REbU5waUtyS2U2NmdSMGJMbEIrT0VxQmdoNUpKTjZFOU1BNmRhd0xXTXhXRmNnQnNZODNGYStOMXcrWkFiYk5MdVc2Yk5DTEM1OFZiWlFxanFKQjVjSEFnSzJodzFndHlZa3VndjVzWnFrVDhFTU9qMDZTQXlpNEpnTmk5YmdReG5sQWtuQU5CQ0xHMUF2OXVqSUdSRHh1d0xpL3FIengrWTFhUjBQaiswelBsVW4ydzZrUU9vVHB2UERKSnRZMFgxdHl4ZmduY1hDT0V6dGdJc0FLOUgzZnFyUkM3b2hjUi9WK241OGJNYUJRTCtlSUZuWXAyOHJhd3M2QUdvTHE0OFZBb2RmV2xyOUV0TEhTMWg2K0oxRjVnYnZ2NGlEZEREYkFTOXpTSFl5c2s3b0FCQUhyQUFWeGM5ejlSSE5LNE1WeXd0d0dNRVVCMjRmSzNTZnlVaC9YVk42YnpEMng1WEdMMExBQ2x4bjJKSlZhNWhhczByclYzUno2bDMvN2N2RzBITDlieTU1L2ZPYS83OWQ4dnF2SHZQL3pTV3YvLzJiczd5b0lpUTBZRzV2YStLRTBpZjZrSDRMZVRjY24zRklKejhzZyt6MytJL0wvQ3lIY3hCK3RzTXNwZTIrTVBlZ252ZmY0SUJUdTN6OSs5Y05IdjBYTDJ1ZEpPWUZOZDZJbzUxVXVmMW8xN0xNOUF1WFExdWdaSmdpZkNkVzBNTG5Qait3SWh3cGgybzhoSFd3Wk85VEZHMW0xQ1RvaDBRVHVEV3JOc3ZWM20wUEtmYndYTisrS0J6eHJLNFpvR1pWc0RVZUQ3dXd3cHdPdlVHWjRKSExrbmowUmtoczZPYjZiT2I3ckhVR1c1U0JaZGhXZ3pWNzlEc2VheHNVL09JeDNWWnliSXRoYjl1QkhQMFJzRG1mSTVRc3EzN3QrZnF3elJsc2lFTkV4Wko5YXYxNUxJUUFEZk0xVE1vQ2htclA3Q2ZBQW42R21kakU2YlNEMUM4c2FJZkR0RlFDak8wV2pqdEQ3eGpPTjd6THJqSEwvWUp4TlNjZzdRRGdkdnJNNTJ3MTUwN0FDWnBnRk9XSENzT3VvZzJyZU96UDhIODUxWnJSQnVwa21mVm5kYUxmMUNkRE81Rkt5STNKMHUva3RpNFdDNE1KN3Rxd1NDaUNwc2R3ZExGMHlkaTVmdmZPUHB3ellaQkE4UWtJeUM0bDJ5QUNIaUdZcDUxbjlscTNsWDdjRWtNcHhiUXF4Z2Q3VHFPRkpYcXV6MGtmbWRHRUFkejFjTXJIbUR3c0hONlBpdVR1OXA5Q1dNVHh3MlZEN1NQR1pqeXVaUlVHRnlpcDJhdzE4QU1CcDFLQlIxQkV4ZkNiVmlBNDYwTU90VXdhaFZPZkc1emZ4ZzRub3phVzRTNG43U1FMR3V4VWorQXNiUE50UlFxK3JEM3c0eXZjZ29xU3dRYThUY1R4NXo4Vm8zc3NpZFp0WU1PeHBILzl6Zk82RzlYSmZBQnJLT2Q2KzJrNlpZc0ZLamY3QnZDMFZ1aXpNc1FhVllBOGtFYWkxRSt2L3lmYTNXQk9tT1NMVHp5N0NFLzhlRFVUZElvanFNbm04NDRvZ2M1aWJhQkI1eVhzYWY4RlBnWFFCNUp1eHJUZ0NwSzc1THlPamg5YSs4cllvd25LZi9LcDFFZ1dQeWN1RVIxamd4cW5XRXl6Qk9kQ0RXdlljVTdnOVR3aDNSVStMRlYyVE5hRmxDYzI2OHVIcVlJZGRGK0RIWjIrSDhBR2pKWWN1bW1GRFI1OGRoT2lmaFZENHJnWk5JbWRYSmRSSWhNUW9KaU5YSDJ2cERuZXpyNTY0WDRxVjA4akE2YWRXY1crckZTY0ZLZ0REWTVYbTg0OEt0bW8zOWRPSTlkMkxnK3lETDhRbTIyTVUxYjlUMjJ0ZzV6QTNOemxEbVhQMCtBMnNKbVFLR3U4OXJwMHE5QWpPT1pHSmV5N0dNQWdlSkRCTXJHM1JvRFhXYzZGM2ZPa3VrOXgyTnJQbVRsa3JSRlk1bkxTaGZrdExyRGhmMWdpVUt3OXJvNGNhbGhHN004d0NnUVlTaCs2RDIxaC9leGJDZllKWXRjL2N5QVhhQkwvMEU5UzFwQ1ZMc0ZhdFdMT3o1UkR3VmFjVVlmOU9mV2RJZzZ6UVFzQXI3a3JnSVFTeDNWaW5MRllDZHJ2VmNvOWZHM2N1SE1FNnNNWGlnR3RaQVZBZkQ2UXJ6MHM2N1NQYUtqR3I5UXpYVGFyWlhZQk84SnRSc0MyZDJmZzJhMThRMWJ0ZVVnZENXZEo0VkNBYlg4WTJ4a21ycVpOMlBZMFQyUy95Qm03QnVGN0R4NTZONHNrUTg2aVZNU3UyS2pGbi9kb0xMSnhOaU5ucDZNcG41U01jMENRYkpocXNMYnZrTjdxYUtUMWE4MEY5Wm5ZUEpNNVdqVmRtaUhoblo5dk1lUG53bE1iaU1iWmNuMlB5d1FlNzRrdk5uUTUyc24rTzUzUWNWdFlBc2NFYXA0c2NqMnp3Nnh6Y3ppRjB4ak9hdy9SS2RBUDlKNmp5cE5ZNTJVMzFRamxRY1N4VHJFa3kzcHU3MitGNlBQc1dqRDhUcmw3TFNacnR4TjJIcmp0ZGFmakQ4dy9yejJqdFZIZHlISjJobDl1em5jS1JVTGZUNWs5aG5qeDJmdXhiUGlaaGc2YzZ3VmQvL25YZWlxYkhjVmg0ZWRuL3dYNm9iSUgrK2JMWTVQeGQ0dnBIWGgxaGlnYUhyVmMwMExDbmk5WEptRUxNL3R1YkxMYk8zUjNqSThpblo2K2tuT3k3dXhrcEZoNEcyQUpCaW80ZCtwR3E4Nk9MOW1SUGRZMkNaY1BVQXBzeHJJajdOREtZRWtHUGhkYmJWSHJOSXI5dnBGcnB2WWFjc0NsWUFaUlpCemVaWWtRSnBkZnh0anc2Z2dYcERTYmNJeEFHa0dXeVFNY0UwYldHVWRMaWV0Mkx5Sy9xWnJEUi9pdkh0OWpkNFdEZVZ2Q3NoeXlkaGVuRmpxV1l0c0Q4Q0MyR2FZNzdhZVAwYkdNRmlmYUFZeHd3SG4yOVNURnlqSTJRelN2UmFaV3RGblpDV000Q1ZVYkh4elhOL01OSTMyek5YeHMxVDR6Ry9qQmJ1bm1sYzR3UDd1VExhRnc3aGxMNTU3ajNuU01mQXREWWVVc2l6OC95NTk1OU9lTVQwVFJxMmxBVEVtNEZvNm5JMXloTzIvcVBVbUo5U3dzbXoyR1RrZUM3VXdzTnM0aldyeWFMVWFTejhDRjdER2NKclhMZDdHcEFkRWNmQmljQlNiQWU3Q3I5Mm1CZ0pEZ3pzemtETXpZc2xyRE1rellDaUp1bEd3WVlhaldLRjdSOFpOdlNoTllaREwvTnhjeXNxbjZLQTBscEZ1ZG5mWjhuZ0dnYjNST1N2dWdheGpqTUhyQUZrSkY0V3UzMC92TWlnS2dINmpxWjBzTTJtd3I4R09zekM3MVlWTDJzZllyNUk3VzI1WGk0Rm9NZkovOXNvL0hvVzdRK2ZLY1dBSzJIbmdGRkhvNmNtckxTM1JpREFidlVEVTg4SXZCc3NEVEVHZVZRdS8yWHY5KzE2YzVqTEtPdi9jOGZZYm1ZL3lYai83NnN2NzY4SHV0OTlkVy8xOSsyb28ybTJZY3MyRTIwWG04dU05OU85UmdSSXhMZXh6WFluRUZGZzhuc2o0aHB5WGIrMUVOWUFzWmZ5QkJmTWRVdXZsak9rdXRtalVCeWlLbXhjRmZyOVdhVmVMMzNkVnFKZENRUFBxSGplS2ZSTUZwZEJIQ0c3ZGF6YWhzTXFBRU5FaC9taW02NGNocEVnb2R4dVUxaDhvNHRndGJheGNNTG1WYnhCckFSc3ZlZFdjVW1WZDAxSWR3ekVsc2dGZm5XWHd2YkpnMVNoWnhPbm9EVmNkdk81bkYydVFIWTVmNEY1UTRkSWUxMmd6bkZJVzdDZzJSSFQ2emJLaTNjdmU3T202a3h0amRWRXdGTmxhaHRvUnhWa3lpcWZmZEg1Tmh3QlV3eTBRSFR2QjQyQzJCcDhyMloyS1BCdHVHR1J5T3RJTHl4OU15UEgvVk0vdXpFRktKRjlDZU52UDNoeS90TU1nc084c2F1cFBhL296aytYM2l6L2Vmdnk3WC8zNDVuRUw5MTd2NTdiL3VkZjF1OXU4WCszT3pZWnY3KzRBNXdWbzRHSUM1ZnRZSmV1dTBBSm5RUWNEYm50ZWZCV25sdjdqZC8rM0xPWFhwTW1nSkttR2xMVEhGQm1sZklVYWZVb1ZYaGhYQ1g5N3o5ZGFIeGN0RGFobFAvTkZSRFRndDAvU25nK1kzWFhTViswOWxKazl3aXNrUTAxT3lqSE0zRHY0Q2NFYzZVVDRINTVuM2h1RmFIeEZRMnBGTzJXaHp1RkpDbVVCM1RsdnFqckxVNFJ6QVA3czVxWk1NZ1AwKy9UUGJacmV2ZFJ3MzhEcGV1Nlh0dUJIczJENnIwK2RaZk50Sy96enM3MUZ0MVhQU2I5UmxPaThRZC9SYVpmZllmRjJ1VXV1WVozelV2RSt6VE5vQ01qMDJTL0hzcms1N3lBTm9CUHk1bmFXS0FZZEFSTjFXL2NmY0U1RC9mejRKcE5zaEtkRVorZEJ1YTN1TElkb2MwWFZuWUJRMEpGbjNaSjNLWjA5NXU4Qkx2cXdlSXI0aUhpOW9tOG5FYnlaVEozek1OaVY4VzBOZzdFWlhkRWFNelp6M3dOb0tqSzVvYk1GSm1OYitQK0FTcDVjMHAwM01GSVVXay9mb2o2MjExWEc0SVFHUU1USHhWR25nMjRlOWZXVmNqOFBFQnRwbEZCaW9hT1U4Zmo5aGtuTUZhNHJOeStoeWhkMTJjWnpTRkJra0VCN290STZZdWcyMGw2MVYzU1lDUG4xTTFZMG5ldXhtNDRraXZpZndvbkQxM2NOcnRQZ2RDYnJqcXQ0T2NWYjZNRXRmdll6em5xNnp4eXBIVUtqMW5lY2dDZXhLa0gvYjBkUUJHZFpKWWUxNFRJK1hlREIzRDg0WFI4NFNMVlRFZEFBT3lFamx4NElEY2Ezc2M5ekZzbitUSmNNM2RTSENWZ2Ewejh1U1FHN3NTSVIvekNmSEhUbWtDY0M1Q2p6ZXdZZmdGNFVrR3ZBM2JlSElqZkE2d2hoOFVSMXVCcjIwUUxJMWdLVXpYKzFydHUzTStsN0FvNTFyeHIyWDRSQ2JvMWFSa2JYeHE2Und0eDNmaEMxWmpyYnNOdDA2bXJUWkpoMHV4eCtFaEg4RklJSUNiOGU2R01rNEpZb3hPeGtITUhVYjRyUnJhY3ZHckJoNlBXakRnbjBUREVqOGhZWVg2Yk1KV3JNWUMzTDE4R0pwREljQlliZC9NNkRPZkkvYlFWcE9ZZ05RU0hZVjd3ZVozMjFkZGErVFJuZWtLcHdqTy9kMU9FWWt2bzREZGhqK0djRTBucnV5dUdjMkZvRFNzckU3OVpxbFdPV2N3dkR1bk9ZNE15dXpnL0dCYXdyaTQ5em1NNGhrbEYvaG5vYlVtSVVzSHdQZ3pDelRTaGlDQmRHLzBFaFFITlRWdVRaQ25MYVBWZXY2dVhRN1p2Nk1lVisyemZJU29oZHJZVnQzSUlLbGFyQktRT2pGN2pkc2UvSkpIL2t4OStuamNkemN0b0tGMVRlU2J3R1Vsc2lBRkFyOG1DT2Jwb1k3dEFjb0VDNlA0bkE2aHVVTXAxUlNaQXUxL1pWTXZHY3k3ZW5yZDlhVk9lbmwrUS9RUWg3dHBIczYzaFk1WWRmczNPZS9aYk1pVW1TZ1dDNEQvTXZSbWppSFg2RDMzNGtyNlZKTVhyWlNMRmdLMWlzaXM3a0RqNDA3T2t3aE9CaXVRSHZDeWVNNW9VTHNhbkhhWWd1ZEZ2QnQzUUo3S2tWdlR0aVMrRmwyczY1ZG0wMDF3UmpQNUhtZHZNdWwzcE1iZzBBNTNXN0FPRHFJWTlvTEVneldMSHZjc2pLNk16QUE4Ym84cldHaVhzVmhQZ2tFYmwwd0dJR2ZldTM5QSt0SDUyMWlEcjVwODJNcGdoRWJwTzFTYmJhUGFnSXVQcEhuTktYY25QLytBdmRaVVpPUTJRNTlGSGFoM0V1MzdieVFWTGNRMEs0SkdOeGZZNnNReVBjNHhYOGJYU1U3TmdCNUI4ZFEyQnpDbDE5WDNjd29QdEVDQjE4K1FVMjNTWmIzUWw4dytzV3VKMjluSGF3VG1DcytvVGtZMzk2WmFuK2VrUmhkcTEzOWF4Z3lmUzN5UDJWTWQ3b3YwVlpsMjUyNlpnc05FcThZdjZmZGFUazN4dk9Gd3EvQkhxWUU3Ri9SbWhTbk85OUdmZmNKbjF4bzl3ZU4rRHl5Qld6czNNdHpwc2lYbm1pUnFaMGsyUmR5dE42L0pJTnQ0UG5uOUtyckgrT3JUS0RDR1ROY1o3RzVEaWMwL0dYenRPYzFGQ3YxK002MkpnWlB3UVo4VHRSeElqUU9NYldyQkFzNllNUGZWL0swWVE3U1o5UTFzejBRNHJVMTNwYk9Jay93WFNFUUsycHJFdHVLeW1wRTBhekxtY2VtaW02TXFIUFFVU3hXODhYcllhdTFOZEdPdTU0ek1vQjJzOEFzVnJIYkdHeGcvL2hJNHdNMlgvekViZ1dLZHVielduSUwvd3c0clhMR0w3L0FzQWFZRlpwaG84YXRNTllEWlhHMlJsRVFQbEJMdXh5MVpXOHlaSHBiWFZ4US9TQmN5cGEvcy8rc2lpMHNFK1Z6cUluaXNrOVN6V0J4YzJnNE9qNDMwSzh0eStudEdKeVc3ejdPdUxUekZsS0NKUGRqZHJHWThqMEVGa3A0VzhnVzdTMHZkalZhN3ZhT0s1WnNsNS9sbHVaYkxWcEhzT3B2c3VGdGRHSGdZdkNkR3ZjWm5aZFRuSXlRNjNJOVR3Sk5ZQWluL1pPNk94bGQwVU5VTVIwYTR1a1ZSdHFHRXdhaHFvZ2J6Z1FENUtEdzRXd3g0SktqVkR3bTVESzAvMWl0Q1RNMWh1ZjhWNHdHckFUcVlEN0U2Z04rMnFrZ0huNnc5bTVOUDJER0huVlBJempMT1Y5R2N3VmF4YzRzWHVqTVZpeUNZWFNXbDEvT202MU9sd3ptTVQzSVkySnRicTRNamlwWWFSczdXN3lTSmN3V2UzZ1NUN2RkeHE2Wnp3SkI1Nzg3MkRlbHoyS1U3cUJvVzVSOXdBWVE4WkFKamJyenZMN0w3cDdITWo5ci9lMVl6YzV0QmtMd0FqZHd4RzVlNEtUZGNmZm5EQlI3MjdOczEra2tnS2xsRnRTb0g1TG9kSGVZUFU0ME9lcjZYbzdkNG9HcUk1UU02emxWeGxaT0FGV1Foajl2cWc2akFzS01BWjVCQ0s4Y3ExV2p4OHJaTGZJdHAvS2lBT09NZER6YW5mcDYwalRnbUFxUW96alV5cWJGS0RjbzQ0VGpyN2dkTlpSQWpzYWg4Q0dhTlJ2MzdQVzMwdmFjS3VBRXlSSzVQZThlSGd2UERYTy80YlI0bm5rV0YwaU1hK05ieTRCMHoxMnRyTm0ybnpza0paaitCM0k1dTk2aFA5aU1kaVl1QThHclUwT0FBVHJxV2ZCcjRjbkcrZmM2UlgrYWZGYmx6QUZ3aERsNjVVU284Zm9zemFsYzFlbkhqNTJjRS92blJ2Q0NrSnJQU2FMZENiMjJ3L01Hd2VnaDdCZFcvc3lGRllxWkpXdmwxcnc2dE43REVTQWFxS2I5cEkrVHR1TzRUa2xqUGlOdGVYVUhFUlM3a3M0RzhNcjl6SVhVVE85VHkrR0V0MkszK1BLNEJZQklldkZ2MElQTGVwZDU2dGlzcGtBRnN4bDJHM2lUNGNWMHlwMUJ5S2MxcmhlYkdCOXIyRUcraUFZd3J0NW5jUDNGYXRnNmNzVFplcTBqMEZiTW1pZHF2L1RKZzVmL2paMCtFWXBkQnliQzNwdS82Y0FGTk1oT3JuQW9POThZOVVGcDU2K3QrKzNoc3gzODN5NTUzTVcvL0JUN2Z2MVRxSjczRGhXYzhadGZZckZyLy9kTDVwOVgvdHZQOFBRT3g1N3JPbTJUKzBhZHNSdFNhdERGdWoxbUFTY2QyK256WDh0SjFyRmdYdS84cGpQTzRIWkduYk9qMmpodmVQMXpYWDd2S0VQOVBlLy83UG11ZjMzQWZ6eGZCQXkxVlJ5bSs4QVQrMnRhYmp2SXltcmhRMXl6aFdUM2hIZ0hlKzh2Si9hbDkwK2IxOUVXREdob1dIL2tlK1V6Z2p3QWRvS1JHbmI5SElqenJDK2ZTanFMYUNOUTlKa1hacVpGQi9zdW85Vm5Ndmo0NEVleHZ0bm9mTFVrc1owT2lnZU54Rm5EUkR5MkIzNjZmS0w2RnVOL09NaHpSb1V6MVZ5YU5OZzdRTy9lVHA1ajllMVhyTGFpbndwcGlFVURuajhOV2pyMGZjMTRDY3YzWGF2Vlg1djA5MXRJQ2E3elVESXdkd3RPUUFnVGtRZC9ZV3FEWFp2WWs5Y1JCbVU3Ui9nSTZjMGFtV3Q1REV6djRUU3p3Q3Fpc3RZYkJ0Ti9Ob0VOY1VYVnZ3V25yR0VmdjM0N0ZOUVJjSjQwOGE1d2RZODYrdXhmOEFYT21GdkxWbmZ3K0ozdDZ6Nk92SE0yY1hWMkpaWUVZTHVhQ25lT0g5aW5GaVZmbHFQYVRIeE9mTE4xSU5qQ2J3SUVQYmYwZnZ4NjUrQjJtQ3Nza29YUnhlcFE0KzFHdzlLUksvdjd2OXVoSXlmYnlzOVpCV2pmb3FNWnJDMndXVDJmVXlhSDFYVk8vLzh6YXVXY0paWnhwZTB0OGJJWXhrazUzUW01TmlUb3pWNGpNN2dBOGU5WDg2L3lvUUFxTXErRGV3TDBKUHNFdUFOYytuR3c5OFVLZUpsdDdRRTNQNE94c3pkK2s0ZXN4TjRobUNGM1l6cmRvc2o4Y1p2eFdGenVYSWJqeDVEMHF6dkdjejhuaUtIdnJUYm1aTFBpYk13Wk1tcXpUZ2Rhb25RQlJ1bm8zZjQ2WGRKdW1uRG5DY1Z0VHF0K3pWREpIZU1haGp5QmRmYW1PRWpRR0M4S2dWbSsyN2JjYWxxQ09VNWVFRGZhOFJQR3doY28rS3IxeklhWVFxVG1DSU8yeHVOSktmSUttNVF4SXUxZEh0amxxVkZHMEl5L0EvS2NNeFZDZGd5RXNSR1dZWTFpQXl0SzQ4UUE1NDJiQzdZTFlOdEo2SW1ZemRQV0tqaW1DMTBkaXJlc0szRGUza25Jd1duWm1OZFl6YXRCeHNGQkdCMTlaUWUzalh6T0ZzV0ZoWFBnbUFIV1J6RGtsT3BxLzQ1VEJWN0lTZ2NlNHpsWE94cnlaL1N1cDJ2QWR4T0FFTjRJYnVGQy9PY2NEUWRjUEwybWF1TnBIcFpRWVFYcVBuWCtzTmd6NldlOURqVEJ2TDRPRUpsUS9XV0I5N1pIUERudTFRbW1BOUtQNlFBQ2R0WURhY0pwclFlcGdFSmc5QUtJSlRzWFpNOEhON2xnSlU5ZTZEWTR5NVkrYkxUSFVEUlBXektHSEhqR3gzSnBRZloyd0Jpa0pqdEVibjNPemJiSDdBN2I0SlBSRmRUVzdybGx6WnFKdzVGc3REdmI5OERaUEJPdzVXankzOU5WMkRVNzNMZW54bGh3NGlHc096bnpGdkF5RUIzbnpOZ0RjM3VjWEMvL01ndmJ3cVl5L3ZUVHJyK1pzNXovL3ExLy9jNFptbW5hMElIWXcrRjRTOVNRem5sc0ZqSlZxRGtneTU0OUozNGoxL0VjMVZOdFFSdW5yZ1loVHNueDBKYmNJQWpiM3JMVkZwN2Y4ZXpEYWNUMWdqMEQ4bkowSU1ZcGJiSkw1VDBaaVBramR1Q2svKzdyRzNRS0NhczlOb2Nwc0pvNVFKNnFjMlphc01FNnozTjQwV3RJTldHN25qNGQ2M3BtVE5zMGRRcElteFgvQUc4ZStZa1hGc3l3OFRZMWZsc045ajk4cG1LZmZCd0RtcldPcTBxMVNxOGZFSmVlRnhLQVpRNnZoWXlmQjl2QkFaYjcxb0tWQWw4emNPdEpUWFo1UEU0WnhvUlg2eUtBMG0xRDBXMHlkNmJTaVNMWFgyVFlzMjRNVW5pNG5tTWg0NWxZZ3BOMHJ2Q0p1K1Z3cllWN21WYm9POW9SOFppdjRZUHFxQmN3Tjl0NG5qLy82YS8vRFFhM21lc2M5MlVtNk1oTHZJNjRIR0ZoMWY0cFNQSGZ2aTU5M2JxcWZCRC9hMEdEVll0V21zQUVlcnlLM1NnQTh3cTczc1hJMkZxZUJ3QnlIQTcvZENZemJNMDVkbllreE5xQ25pT1krUmVkUDVLaENJVzROZHJzV0xJWWY4azFrM05qMlYvRGljTW12QS9XMEkyS25LbXJ3VnJuNHJGY0ZsSTRJZVdrMWEvL05xL3VtWGIyWWV1NFVZY3prQW9HNGxRVXlQUDBFS1VCV2hTTTQ4UHlKZkMrblV4Z0JiZlJRS2VncmVuOFM2T1pnODEzcUxlVkx2czljNnN0MDlKYWFFL0RtOUY5UXdZWE1LTURUQ1FRY0xKdUlIS2hoUG11VGxWL25DTnVCMkg5bkwvRXowaEwwam5BemtIb0EvNTlnNGJnSW13aE8zWG5BdXBvNW4wL1IxNkJOWndVTmswR2RTbmU2N3dMUkpBMTNBWnJzRWlHcnozaVlJQXNjNGNjODNPbUwvczlTbUczcG1jdW5CcG0yTFZJQmF2bHFaaUlQSTZTSGZIY1NLZytUc3ltclZHSHVZam53b0FCY1l6ZExOU2dUVXc4cmcvbytTNEw4WjdIdHVuaTNOeHNPKzNub0JnYjd5d1pibmZCVEJlanAvQitUS2FuQVZUcmhMTjFFL0djM2dPZ3ZIZkZjSDlHSEVCaVdGV0xXSVlENDdkRE1MbjE2N2xOc0U3ZUJGMnp2QitIZXRjS0JuRzBlUDg4eEk3bk5HY1RuMmRZWi9mbnlDdVB3b0hTL3M3SWFyZ293K1hoSEp5RXE3SC8rM01NdHVld05tZTA0QzdSWUtSb2ZSVWJ3U1dkVStRWXpISnlMYTloeUF6QkJlMTRFa091bDNQSFc3V1h3bmx0ck84SHRrYWVuWWtsbFB0ekdpT2dFUTd4MDd4UExPM1FobmVkempsWTUwVDdiNFBtT3g2bGdmLzliMzdVb0hZOThZVHFKSlhpYVdmQlRuZFcxTUM0VSs2c25KYm1lOUFkZ3Y3OEFOV050Sm5nRzhsTUNWemRtd0h0SEFFenpsR1JxNkRZb0RHbkREZjcweE13cVlLUW5EWDdIQ0x0eU5LN2ZkWFRPejA1OWN4M1FmcnJjRHlEZHJMQUxJRDdEbEQ1S3J1bXhKeUlpWlRIczE4OFpRL2s3YUc0dytIK3dTRkw4VDdCbHBvZHZnZUtWNTVQZHZCclRxcXpXMHhvNFBTNjRjUkZEMGV0UUtLNlBDUFM4U3hkc3V5cjhrOUFoVlUvejMwYUFUeWYwN3A0YkVudjdUcUpGOUNsZzJhVmllaWg1WkM5UitvdkI3REJBb2RRN0hBby9WUWEyMEpsMVE4bTBIR0pTTjFiQUtOcm56TW5vR0JCL1p1Ty9Cb3ZiQnNEYWsyZFo1M1lsb3ZpUEFHaTFQM0JkZWJWb2pPZXc0YkphNWZwL2pySzQwUUtYTXp6TEQzZEVna0oydTNhVC9ZemRyUGxZR2d3RkovSmY1MTNXcitUKzIrWGRZSDNPZHJIQks1UlRNdTFxb25pWUR0TFlWMkFOcERJSTJKL0JBeGt6RlliY3dkbDJpQ1lFY2hUc1c4OThmQW93SGxLWmw2bkhqaFFFMlZ6aXA1OXlSQ2RmV3V0djJqRjdqNk5uTk9CZFpDdmpvWHN2NGtoeTlFUDZWK1Z3b2cvTUJiejI2b0htb0phV2NFRG5XMTVsWDBYNXp4N0NvTVRiMDZ4Mll1dUJ5VVZNMncweFZOdVlyQUZyVnJwNDZrdGtBZnJHZi8yaWtlSGpnWmQ5emxDcHRXRDZJc1RLb0taaXZ2YnhUa1ljWGhnQVlUVUh1dlg4ZGU1ZUE0Wmh0VVUrdHhXaUdEQjM4dVdCQ2R3Mld0NzZ2L3pMMGJDNHRaUWYyWHAzNS8zenZpUCtEcGtPR0liWXJubFpmMTBIcS9MZzJYUVZDZlFUSDRZeEZxc1Q0Mi9uaFljMWZyZlhmcmtyWUtEMDY4bCtMWnRBUmlNT0ZyZGhqbVl4NDk1Mk5BNTZRNi9GZlJYNW91dHpFUHpEVnhDQVlQdE9pYkFMMzJDZ1NlRGpZNmJEeDRQZ0dMQ2NzN1p3STdBZkR6cEdMVjUwMWgydUtmYndmYnY4YTNnVzZoV0hGYzk3V2FtZE9YeVJWeGN6UzNvZjdjVkVjT2h3Q2ExQzQ3S2s1QTlabU1iZ0JxZVZYc0x1a3l3T0hJWExDbjdpNmJjUHFjdEd0TXNRVXAwVGlscUo2ZDVvMzJtSXg4blY1YUQ1aEgrYUlOem1QUDZwU29GYXNIMHROT2YwMkQ5bHFOM25kRWI0enJUbWMyc3RUT1l6VURmNDRtb3poN3BKeTN6b212ak50MWpxV0p4aXFPbE0veVk4MU1xSy9VQXBSMm1XVytQdXdSSEZEdGNBQmt0Z2ZkZTV5SzNQL05xZVVpWThNblF6TlNkQzJTZStINHdBTHVlU1BHTXU4YmtNYjdaREJlT3VucWVGTXpRTXQxNENtRytDd2RXSCtjQ3ZtVTFzQTk0Mm41YnozNTF2TUE2WTF3ODBleHhMay8rZFZNOGY4N1Z3c0J0VDY0QmRGMVdUTnVRNy9HQXJMT1QvZmM1SE9aOHRCNjNQSm9ub0p3SVRzQzdyNG9yaTU1NitwMVJxeDdNbU9EOVZyRkFRSjBYamJleWlMLzhUUzA5Ly91RkJNZm1hUXBPZFRRRVpxT0RTZnVURVR4RFVDOU1qR2JaZVFmSXlHMEZuUU9tSEhhMFR6cXQ1Tjg1UHRaZEZhZXMyMEg0bi9wLzZVS2RvL0NkdlAzZks4M2ZadkFXUkhMYUJUM2w3VTM0eFZvZFRGQTgzdkp6T1BuNzRnKzNaL253bzlwS2VJaGQzazZVQ3c1OXkwaVEyNDM4VktNcjAyTlZzSDhuVHZTZTA3V2hDajFZRGNvbnJuaHFUWkRrVTNuVG5aNTRzeUxvd0x6UElRT2oyVzZKRUU4bktOcDhiM0d5SWJieU9Ea1poZ0RvU0pjTkx0YVBXVG0yaHZQaGtzZmtnYUVmaDhNSEo1YS9uZ3I2Mmd6ZG5PMnBMM0w2cVJXWW5yV0J2RUhYMzlmanc4VHhqL044K1Jtbk8rQ0lkYVpXN0s3b3NNOXUvUTRPK3daMk8zcjhPY1Z5ZUFCMmFEcE00RG9oRkFDNStHVTYyZ0ZnNWJBZ2c5UFJVOEtEeHhFNS9NekRUNnl0aE94Nzh0M3lhRGxJaEFLUzhQMC8wb0tjTjFOaWdHWkQxMkU2cmNhSjJxK05EaW44OHRIMmJpZlU4UFdjS1N1dGNlWEpRdWRRN3N0Y2RRd1oxbStlZHppdVl0M0NRanZSRGV1Yks1SXh6eE9UdzMyV09UQWxveDhrMGV1SUtET28xck1Ta1dYZFRJRkkyS2xSREpuK0NpdzFUTTZlM3RGRGZLM3g3UmFFYnVNTDJHSGtkVHYwc1RuWjY4OWswN25QSVhNZTBwREZhR3hyR3lmVmhLa2YyOWxtRW1qUFMweW1mOHpqLzg0N0F1cjlacks4QzFPQmVTMmUrUHhyZ2JRbXBKNGhua1hHNlFHTjFWbmlGaVpoNHExbWZteDF4S2ZiakhRNldLWm52enpid1ZPNGpUZWVmQjJ2M2U5d3N1YU9uclJvekJTVnc1ejVUQTdBaHZyMWc5YnZEeVhEdFhtMldKYVlwdGtTQW96bU90SGZFNmxONFFHbHpwRkdOcFFBOHl3TEhSNjEzaDJpM0o1cXM0SDlXTTZybFdBODV0M1J5eGgyUUdNTW5qMm1EeDNRVUIyY1d5eWVsdVp0TEhnemNlRXVPNURXSkNPc3RsMW53aXcyMi9PL3krZTVndmFOVEpkbHRHTTVrY1BuOUkwNkNPSjJCb09EWWhUTlpGdnJPUXNsTFk5eWFpZjV4MjRhWGJIeHFXbmVUdnJPWkp3elJ0WFk3V25BVmt4Z0V1SDEvdGpkalZMakE2dERGSk1CYnE5L2gyTWhEcEhTWEVIZWx0bjltTTVSV3g3QXhMN1pHOHU3MnJpaHF6WWN1YkgybDlVZXJ6bnpjelM5REdlbk03YXBXZk53Q2xkVzV6WGY5M1I4WTVGd21kbkdHNk9BbnZzVHo3SGZGK1ROZ2pWTFM1cjhJdU81N3p3OGRDSmo2UlpiWUNWRkVoMDYrUTAzalgzVElYZ3YrWkJkcDlhd3Z4N2VpZzJ3RU1hS0pydzZUMlgwZEZwMyttWHJZVDh1Q01IQ3VaZmxvUjNZeDlJTlpUM3VnTW5UeTAxWVo5Nzk0TW51NVpFWUNJQnpSb1NrRm0rSm9MZkYzR2RtMWhsbzdSQ3d1czhCMzFhN2xQWmRBUy9aN00wS1R0d2Q5em5zT1ZuVHREekJRalY5ekN1YkVuUzRQUGFlYjJlSHdsYjcxN09uRmZlK0w5dWpIVCtGM21WUDMrck9CdkRjUC90WHduTU9WUExRR0E5eHFpYmcyRi9KWnZmSWVnK3R3YXpwZjY1ekxDckk1ZnIvQXBZVHFBOGFKZXJZQUFBQmcybERRMUJKUTBNZ2NISnZabWxzWlFBQWVKeDlrVDFJdzBBY3hWOVRwYUlWQlR1SU9HU29UaFpFUlJ5MUNrV29FR3FGVmgxTUx2MkNKZzFKaW91ajRGcHc4R094NnVEaXJLdURxeUFJZm9BNE9Ub3B1a2lKLzBzS0xXSThPTzdIdTN1UHUzZUFVQzh6emVvWUJ6VGRObE9KdUpqSnJvcWhWNFFnb0I4OUNNak1NdVlrS1FuZjhYV1BBRi92WWp6TC85eWZvMWZOV1F3SWlNU3p6REJ0NGczaTZVM2I0THhQSEdGRldTVStKeDR6NllMRWoxeFhQSDdqWEhCWjRKa1JNNTJhSjQ0UWk0VTJWdHFZRlUyTmVJbzRxbW82NVFzWmoxWE9XNXkxY3BVMTc4bGZHTTdwSzh0Y3B6bU1CQmF4QkFraUZGUlJRaGsyWXJUcXBGaEkwWDdjeHovaytpVnlLZVFxZ1pGakFSVm9rRjAvK0IvODd0YktUMDU0U2VFNDBQbmlPQjhqUUdnWGFOUWM1L3ZZY1JvblFQQVp1TkpiL2tvZG1Qa2t2ZGJTb2tkQTN6WndjZDNTbEQzZ2NnY1lmREprVTNhbElFMGhud2ZleitpYnNzREFMZEM5NXZYVzNNZnBBNUNtcnBJM3dNRWhNRnFnN0hXZmQzZTE5L2J2bVdaL1A4YTdjbUx3MFh4dkFBQUFCbUpMUjBRQS93RC9BUCtndmFlVEFBQUFDWEJJV1hNQUFBc1RBQUFMRXdFQW1wd1lBQUFBQjNSSlRVVUg1QWNDRUNRU1IxL1VNUUFBSUFCSlJFRlVlTnJzWFdkNEZGWGJ2cy9NMW5UU0V3SkpxRUtvU3ErQ1NGRXNLS0orb29DZ2lJclN1d2d2dlNnZFFTa1dSSDFGUklvRkMvS0NnQ0NDUWlDMGtKQzJ1OGx1eXZhZGNyNGZPek5zR29ZU2l1eHpYWE50c2p1N00zUG1uSHVlZWorRVVvcTdWZjc4ODArTUdERUNmLy85TjhMRHc5R3paMC9FeHNiaXE2Kyt3dG16WndFQUd6ZHV4T3paczVHYm00dEhIMzBVTE1zaUpDUUVhOWFzQVFEczNic1hJMGVPeE9uVHA1R1ltSWhHalJyaHQ5OSt3OWl4WTJHejJiQjU4MllVRmhiaTBVY2ZoZHZ0aHNQaHdOR2pSMkV5bVFBQW9hR2hTRTVPaGlpSzRIa2VnaUFvcjRJZ1FCUkYzNytKS0lydzNTaWw4aXVobEVMZUFKQ3lyd0JBS1NYUzVTdXZaZDRqNTg2ZGk0bUlpSWpUYXJVeExNdkdNQXdUeFRCTUJDRWtIRUFOQUNHRWtCQUFnUUFDQU9nQmFLU05CY0JJdnljQ0VBQjRwTTBKd0FIQVRpa3RBVkJDS1MyaWxGb29wV1pCRUFvNGpqTzZYQzVUWGw1ZVh2UG16VTNTNzFDZnJkei9oSkN5bjhudkFRQWxoSlI3OWRrb3d6QWdoSUJobUxJYlpWa1dMTXVDWVJqSWY2dFVLdVZWM3RScU5kUnFOVFFhRFRRYURiUmFMYlJhTGZSNlBmUjZQUUlEQXhFVUZJVGc0R0NFaFlXaFJvMGFpSXlNUkhSME5PTGo0M0g0OEdIVXJYOFAvSEpqaE56TndIWTk0dkY0a0p1YkM0UEJnSUtDQWxnc0ZoUVZGYUdrcEFRMm13MTJ1eDBPaHdNdWx3c3Vsd3R1dHhzZWp3Y2Vqd2NjeDRIak9QQThYMnFUQWN4M0UwV1J5QUJYQnN4S0FabjhmeGtBS3dWWXZ2OXYyN2F0Z1Y2dnI4ZXliRjJHWWVvQVNDS0VKQUpJQktDN1RZYlpCZUFTcFRTVFVwb2hpdUpGanVQU3JWYnJoUUVEQnB5WHdjMEgyQ29EdkhJQVNBaWgwbmhSRUhKNVlBZ3BCWHkrSU9jTGVtWEJ6aGYwZk1GT3A5ZERwOVVpTkRRVU1URXhDc0NGaElRZ0xDd000ZUhoaUl5TVJFWkdCdHEyN3dTMVd1MWZYSDVndTNZWk9YSWtWcTVjZVZ1ZFUzUjB0RmZOcVFETVpLMU1CamI1M3NtYW1pOTQrZjYvYi8vQjZKalkyS1pxdGJvcHd6QXBoSkFVQUkwQWFPL3dXK2dHY0ZvVXhWT0NJSnh5dVp5cDZSZlNVeC9wMjZkQTBoUjlRVTBzQTRDZ2xDci9YMEdqbzRSaHdCQUdERVBBTURLWU1aUmgyQXBCalZXeFVLblVVS3RVVUtuVjBLalZFaGdTcURVYTFFcElRRUJBQUFJREF4RWNISXlRa0JEVXFGRURPVGs1YU5xc0pRUkJRRXhNakIrWi9NQjI4OFJvTkNJM054Y21rd2tGQlFVb0xDeEVjWEV4ckZZcmJEWWJIQTRIbkU2bm9xV1YxZEQrUVVzanN0bFpCdEI4TmJOUzJsaFpVSHU0N3lQczRuZVd0TmJwZEswWWhybVBFSEl2Z0FaMzJXMDZKNHJpbjdrNVdjYzBHdldmWThlTStYUHYzcjJpRDlpSmxRQ2VaTVlTU2dnb1FFQklaU0RIZ0dFWnNBd0RobUZwS1lCVHNWQ3hsN1UybFd5aXF0VVFSUkhCd1VHSWlJaUFYcTlIUUVDQVlwNGFqVWJVYjNBUGFrZ2FYR3hNTENLam92eUx6ZzlzMVNmRnhjWEl5Y21Cd1dCQWZuNStoV2FuMCttRTArbUUyKzFXekU2TzQrRHhlTUR6ZkNsUTgvR2pFVjgvV2dXYUdhbkFYNlpvWm1QSGptVWZlK3p4VHVHUlVlMkRnb0k3RUVMYUF3ankzekhBYnJmQldsS01WdmZkYTZPVUh1SjUvcERWYWozODZxdXZIdnJpaXk5NFFraFpvQk1yTW0zTGFIRzBsRitPVWNBTkxNdUFZYjBncDJKWnNMN2dKZ0Vjd3pCZ2lGY3pMK3QvTTV2TnFGVTdDYUdob1Y0VE5TSUMwZEhSaUl1TFEzQndpUCtHK29IdHhnbkhjY2pLeWlxbHBSVVZGU2xhV2xYOGFHVzFORms3OHcwT3lKcVpiR2I2YUdTK3ZqSkNLV1VzRmt2am9LQ2crMW1XN1FLUXJrZU9IQW1OVDZqdHYxa1ZTRzdPSmJScDNicmNjK3JRNzRmM1JVWEg3aThveU4vZnZtM3JOQW5VS3RMcXhFcEE3cklteHpDVUlUNGFITXVDbGJXNGN0cWJDcUlnSWpJeVFna3c2SFE2NkhRNkZCVVZJUzZ1SmdLREFoRWNISUxRMEZCRmU0dUppVVZ3VUJDeXN6Smh0OXNxdmQ3QXdDQWtKZGRGU0dqb0xSdnprdUppWkZ5OGNNdlBVM1czVFhaS0tRd0dBMHdtRTNoQmdNMXFyWEEvaThVQ2s4bFVTanV6MisyS2R1WUxaUDhBWWhWR05XV0h2MlQvZ1BqNHg4cUNtY1BoNktiUmFIb3dETk1EUUZQZjgzUTZIWDRFcTBTY2pnckhKdFR0Y3ZiVmFyVjlhOVpNd0tYc3ZKTTh6LzlpczlsK2JaclNhRDhoRUh5QmpsSmFUcU9UL0hNQUlaU0lJa1JDd0lnTUJNSlFoaEhBc2d4aEdCWXN6MUtlNWFGU1NSb2NwNElnOExEWnROQm9OSXAyNzNLNVVGSlNBcTFPRDZmTHEvazdITjY1WnJOYVVWSlNnaUpMQVFJREF4RVdGblpGTFRYajRnVTBhM0h2TFJ2emkrbm40WERZLzFHYnJ1N3pWTjF0b0hiczJER0FNQWdNQ2taZ1lCQmlZa3Z2NDNBNGtKT1REYmVIQjhlTDRBUVJna2doVWlpdkZLVDBSbEZtbzZBVUVDbUZLRklpS3BGTDcxYld4S1NVRWlxWm1jUWJybU9jVG1jZmpVYlRoeERTQjBETmE3M21IM2YvZ0kwYjFzTmtNaUkrUGg0ZmIvb001ODZkeGRBaGc1UjlKazJaaG9jZWV2aHV4YjhtS3BXcVNWaFkyQnRaT1hrNWdpRDhZTGZiZjBwcDFPQW55VndWS2dVNVNpa0ZvZDRBS3dVaElrU1JRQkI4QUk1bHdmTXNXQlZQVmJ3S29pakE0WENBNHppbzFXckZYV0czMjZFcExsYUFUblp0T0J4MjJPdzJGSmlNQ0EwTmhjMW1RMlJrSkhRNlhhV2djU3ZsbjBEdFpwM25YUVZzQm9NQklBeWlZK0lxTmwxeWM1R1htd3RUdmdsbXN4bEZoWVdLSDgzaHNNTXBtNTF1Tnp4dU56eWNCNXhIMHRaNEh4OGFMMEFRZU1uY0ZDR0tzc2xKQ2FVaUtBVUJLTGxzY25yLy8rMjNBOTBURTJzL0doOGYzL2Q2d016M2VoYk1uNHVacythZ2RlczJLQ2twQVFEVXExY2ZQLzc4S3dEZ3BhR0RxMjI4TjZ4Zmg4Y2U3NGVJaUloeTU3VnN5VHM0Y2VKdmFEUWE5SGl3RjBhOCtocFlsZ1VBWkdkblk4V3lKVGh4OGdTMFdpMTY5dXlGbDRlUFVENnZEcEdPV2ZQRXlSTXZhclhhRjZkTW5aWXpkTmpMMzludDl1K2FOV20wWHdJNG9ZelpXbGFMazRJUElrU1JnU2dTeWdnQ0JJWUZLekJFWUhtSW9raWRUbWM1WUhNNEhGQ3JOVjVYaGpTLzNHNDNuRTRYSEE0bkNpMEZFdEE1WUxmYkVSRVJnY2pJU0w5YTdnYzJ3R1RLUjJCUWNMbjNiVFlic3JPenZEbHArZm13RkZwUVhDVDcwUzVITzkwdUY5d2VOenh1anhmVU9BNDh4NEZUQUkwSEx3Y0VGRkFUSlRDVEUyaTlJQ2FibWFkT24yMFNFQmpZajJHWXgrMTJXK1A4L0h6RXg4ZmZrT3M5azNZYWtaR1I2Tml4RXdBb0M0RVFBcTFXcS94ZFhmTGh4dlhvM0tWTE9XQ2I4ZlkwTkduU0ZQK1pQUmZGUlVVWU0vcE4xRXlvaVg3OW5vUW9pcGcwWVJ5NmRYOEFzK2JNZzhsb3hMaXhveEFWRlkzK1R3Mm9sdk9zNUpnMW82S2loL1YvYXNDd3JCekQ2YzRkMiszNHoreTUzNzR3OFA5T0FSQWs3VTBneEt1WVg5YmtLS1dVVUVJRVNpa2hvaWhTUWtRSUFrTloxdXVPY0xsY1VLbFVWQTRxcWRWcXVGd3VxTlIyeWFYaDlkTzZQUjdKWEhXaHVLaFEwZVpjTGhjY0RnY2NEZ2Vpb3FLZzErdXY2YnEvMnZJbDNsdTlFai85c2hjQThNckx3MkN4V0VxNVl5Wk5ub0llRC9ZRUFKdytmUXE3ZHU1QTgrWXQ4R0RQWHRXK1hoZk1uNHR2ZCsxVTV1anJJOTlFLzZjR0lEMDlIVXZlWFl5UzRpSUVoNFJpNHFUSnFGWEw2MmMrZU9BM3JGbXordTRDTmw3Z0VSZ1lWRVo3eUVGdVRpNk1SaVBNWm04S2gxZExzMTcycDhuUlRvL2tVL1BJL2pRdnFBazhENTczRFFnSXZta2FwSFJBQU14SEgzK2k2OXlsNjFNc3kvWW5oUFR5ZGFyYVNvcXUrenFQSHorR0dkT25LWnJBNDQ5NnpjeCtUL1RIb01GRHF2UWJodzRld01vVnkyRXc1Q0V4TVFsanhvNUhTcE1teXVkN2Y5MkREUnZXSWQ5a1FreHNMSVlQSDRGMjdUc0FBRWErL2lxeUxtVUNBRWEvK1FaVUtoWUpDYld3Y3ZVYWlLS0lybDI3NGVHK2ZhSFZhaEVkRTROV3JWdmo3Smt6eW1LcUVSNk81d1lPaEVhalFVS3RXdWpZcVRQUzBrNVgyN3lvd2pFYkVVSWF4Y2JHVHJpVW5iZmI2WFJzbnpIOXJSMmZmYmJaQ1lDWE5EY1o3QlNRazMxeGhGQlE2alZUS2FYVTdYYUQ1M2tpQlJVb3ovTnd1OTFnV1JWNE5RK092K3l6NWFSZ2xMV2tSQWxNZVR5ZVVnQVhHUmxab2ZZbWlpSVloaW4zTndEazVlWGgyMTA3UysyLzV2MTF5dDl1bHd0REJyK0FqcDA2QXdCV3IxcUo5UFFMY05qdHFGZXYvdFhaK2syYUtJbnNWenJIc3Y5YnpHYTh0K1lETkU1SktmV2RXZjk1RzZOR2pVSHpGaTJ4YStjT0xGKzJGSXNXdnd1WHk0bUZDK1poNWVxMVlPNG1ZUE1ORkRpZFRwdzVjd1puejU3RnhZdnB5TTdPUWw1ZUh2THpUUXJBRlJjWHd5cVpvamE3SFE2N0EwNkgweWRYelEyMzIwM2NiZy94QmhFODRIbU9TRGxwUkJSRlJoUkZobExLVWtyWjFOTm5tMmRjeXA3ZHJmc0RKMVFxMVFlK29PYXJQVjZ2dEdqUkV0dTI3OEtibzhhZ1pzMEViTnUrQzl1Mjc2b3lxRjA0Zng1dlRadUNFYSs5amwzZjdjWlRBNTdHbU5GdndHUTBBZ0F5TXpNd2U5Wk1USnc0QlR1Ly9RR1BQUElZcGs2ZERJZmtyRit4Y2pXMmJkOEZBRml5YkRtMmJkK0ZsYXU5SldnTXcrQzVnYzhqTEt5RzE5bDhNUjBIZnZzTmJkdTJVN1RLRlN0WFE2ZlRLeFA5K0xGamFOYXNlYlhOaTZzNUppR2taMEJBNE1vRmk5N1pYNzlCZ3lscjMxL1hqRktxaFRmaFdRTkFEVkFWcFZRbDMzZDVIa2h6Z25BY1J6eVNOdVp5dVlqTDVTSXlXRG1kVGpnZFRqanNEdGpzZHRoc05saWx3SlhOWmtOeGNURUtDd3RoTnB0aE1wbVFsNWVIckt3c1hMcDBDVzYzV3puUEkwY09ZK3JraWVBNERoYUxCUzhOSFZKS0cxdTBjRDVHdnZGbXBXUHkzWGZmb2xQbkxvbzJPT3lsbDdING5TV29VN2Z1Vlk5dlNFZ0lOQnBOaFordFgvYytObis2Q1FCdzRzVGZlUE9OMThzOWNNcjZ5Ujk5N0hFMGI5RVNBSERQUFkxZ2xnQXpMeThQWVdFMVVMTm16YnN2S3VvMVNZM0l6c3FXbmlMNUtDeTA0TUtGQzlqOXcvZm8xdTBCdUZ4T09GMnV5NmFucEtWbFptWWdyRVlORUVJZzhEemhlYStHNXZHNElRZ0NZVlVxOEJ4SFpKSE56ZDY5Ky9SWis4SDZaL2Y5Yis5VEgyN2NBSTdqVUxkZVBVeWFQRVZaVExlVDdOeTVIVjN2NzZhWXNMMzdQSVR2dnR1RjNidC93TURuWDBCRVJDUTJiUHdZdFdwNzFmOUhIbjBNUzVlOGc2eXNTMmpZc0dyMWpxa25UMkwwcUpGd3VWeTR2MXQzZE9sNmY0WDdyWGx2RmZRQkFYam80YjQzN2ZxcmNreENTSzJJOEloUlFjSEJvekt6Y3JlV2xCUi8xVFNsMFM4QTRhWElxaUJwYllLdkJnZUE4anhQR1lhUjh4ZXBsTmRJR0lZQkw2Z29ML2dtY1h2OXQwNkhvMVErcEt6UmVSUnoxV3VtUmtsSnZhMWF0Y2F2ZTM3QnpCblRrWk9UalNlZmZBcmhFa2hzLzJZYjZ0YXRoMGFOVXlvMXpiZCs5U1VXTG41WGVhOHlZTHBlZWZiL0JtTDBxRGRnTmhkZzMvLytoMWx6NWlxZm1TMW1USjgyQldhTEdXM2F0TVhvTWVPZzFXclJyOStUeWo1ZmZQNFpldmJ1RFFDSWpZMkR4V0pHZW5yNjNhV3hpYUtJOVBRTE9IUG1qS1NsWFVKZVhoNU1KaFBPcEtXQjUzbGN5cnFrVkJMSWVXcE9oeE5PbHhPVVVuamNIdUp4dTB0cGFGTGFCcUdpeUJCQ0dFb3AwKytKSjFVWExsNGFQRzc4aEIrN2RMMS9xOWxzZm1yRjhtVjRkK2t5ZlBMcFoxQ3IxTmo2MVZlM2JaQWxMcTYwbjY5MjdTUVlESGtBZ0tDZ0lCdzkrZ2VHdnp3VXp6MzdOQWEvTUZBWjM2cEtTcE1tMlAzVEhueng1VmJrNWVWaHcvcDE1ZmI1K0tNUDhmdnZoekIzN255b1ZEZm5HVnpWWTFKS1lTbTBJQ2d3Q0F6RFBCRVdWdVBUUzlsNVc5TE9ubisyZWZNV2VrcXBEcGVKQVh3MU9JWlN5Z2lDd1BBOFQzaWVKeHpIRVo3bjVjQUJjYnZjeE9WeWVWTS9IRTRsVjFJT0h2QThyMVFzaElhR1FxL1h3MlF5SVRjM0YxbFpXVWhQdndCS0tZWVBINEUvai80QnJVYXJnTFRSYU1DTzdkOWcyTENYS3IyMjMvYnZRMUp5SGNUR3hsM1hXUGJ1M1J2OSsvZEhmSHc4T25Ub2dQNzkrNk54NDhhbDlna0tDc0lycjd5S0wvLzdCYnAxNzE3cXdUaCsvRVM4OCs1U2JQcjBjNWpOWm55OWRVdXA3Mjc1OHI4b01CZmdxYWVlQmdEbzlYcE1uaklOOCtmTnZuczB0cUtpSXB3L2Z4NnNTZ3RUdmhFV3N6Yy96V3IxbXBwWldaY1FHeGVIM053Y3hNVEVLRTlDUTE0ZU9JNERJUVNVVXNKeEhnQUVITWNSUWVDQjBqV2FaUE5uWHdRdldqaC84SktseXdjUlFwb2VQSGdBOCtZdkJCVkZ2REZxdEdLQ05iem5IdVRsNWQ2V1l4VVRFd05EWGw2cDkzSnlzdEd5cFRmdmFOLy85dUxUVFo5Z3lkTGxTS2hWQ3dEUXBWUDdpclNhY21EbmRybnczWGZmb2srZmg2RFY2UkFYRjRjZVBSN0UvdjM3eWszYUgzZi9nR1VyVnQyMGhOT3JPZWFSSTRlaFVhdlJvR0ZEMyt2dEdCZ1kySEg3em05ZmRydmRuMzM5OVZmL25UQnViQWtoUkpCOGNiSVdwL2ppQkVHZ2xGSXFpaUk0am9NZ2lKUmxSUWlpUUFSQm9JSktnQ0I0UWM4M0o5SnV0ME9qMFVDbjB5bmxXYkwvN2Z5NTh5aklMOENhTmFzdzhQbEJPSHNtRFF2bXo4V2t5Vk94YzhjT1dHMVd2REw4SllCNHlSeUdESG9lYTlaK0FLMlVRdkxGNTUvaDVWZEdYUGQ0ZnYvOTl3Q0FEaDA2SUNNakE3bTU1ZWY3aFFzWE1IL2VIUHhuMWh4czNMQU90Uk9UOFBERGZTRUlBbHEwdkZjeGhYdjI3SVhEdi8rdWZPL1hQYi9neHg5L3dMdExscGVLbHJkcjN3SHQybmU0T3pTMjdPeHNuRHg1RWxsWldjakt1b1M4M0R5WVRKZURCVWFEQVlJZ0lpZ3dDRVdGaFlvZnJTQS9INElnSUNRa2xHaTFPa0lwaFNBSWhCZDRJZ2c4WVNRQndEejVaUC93aTVuWll6dDE3bklvSmpaMmNkcnBVMDJ6c2k0QkFKS1NraEVWSFkzT25ic29pM3ZIam0vUW84ZUR0eTZRSXBrNkFFQWx5aVFaaEI3dSt3ajI3dDJEdzRkL0I4L3orT1dYbjVGNjhnUjY5dks2Qk0xbU13Z0JHSlpGY1hHUjRpT2hZdWtxbHJqNGVCdzZlQkFjeHlGZm9tblNhTFg0NU9PUDhQbm5tOEZ4SElxS0NyRnYzLy9RckZtenk2YndqdTNZOXZWV0xGMitVakdmcXQzOHJ1SXgzVzQzZmo5MEVQUG56Y0h3VjE1RllHQmdSWURlUktmVHpYbjIyZWUrUDM4aFk4VHE5OVpHU1JxY2xsS3FvWlNxZlRVNHlRL0xlTWtQZU1MeEhQRUdEZHpFN1hZVGw4c05INTljS2UzTmJyZkRLaVh4eXI2M3JLeExPSFRvQU9yVXFZdHUzUi9BdE9rem9ORm9ZYkZZTUhUWVMvajhpeTNZK05FbldMTjJIVFFhRFRaKzlJa0NhcWRQbllMYjQ2bFduNmF2SFAzakNDWk5ub3I3dTNYSHUwdFg0RlRxU1ZCS1VWeGNqQmNHL3ArU29uVDgrREVrSlNjcmYzLzA0VWJNWDdDb3d2RUgvdVhwSHBSU25EMTdGcG1abVFyRkVLdFNvNlM0QkZhYkZRNjdIUTZuRTlrNTJRZ0kwRXZPVjRMaTRtSVFoc0RsY2hPMVdnVVA1NEVvQ2dCQWZPaUJHQURraHg5L0NibDBLWFBZZ2YzN2hqRU1VeGNBT25ic2pJTUhEeUl3TUJDZE8zY3RadzdQbVRNTER6elFvMUlmUjNWTDJRVGRCZlBuWXNIOHVYaXdaeSs4TlgwRzZ0ZHZnTGRuenNKN3ExZkNrSmVIMm9tSldMajRYY1JJMmN4OUhub1lKMCtld05BaEw0QmxWWGpzOFg2b1g3OEJMSVdXVXNjWk0yWWNGaTlhNkgwUzE2Nk5kUnMrZ2thandZS0ZpN0Z5eFRKODhmbG5VS3ZWNkhwL053d2EvQ0lBUUJBRUxGcm9OUU9mZmJwL2FUTngwK2JyTm84cWtxb2VjK1JycjRJUUlERXhDV1BIVFZCOGtGZVF1bHFkYmtiZlJ4NTlvY2VEUFQvK1p0dlhuNDBiTzdwWTF0NGsvNXVpeFhsVFE0aElLQVgxVnFoUVFSUWhpZ0xoZVI0c3kxSzVjcVVpaWl2NVlXVXc1S0ZHalhBMGFOQVFaOCtlZ2NQaHdKaXg0NnFVMnZQNVo1L2lxUnVjVm5QZ3dJRktQeHZ3OURQSzN4RVJFUmcvWVJJQUlEdzhIQzhPRzRiWFh4ME9Tb0hrT25YUTd3bXZiMjMrdkRsd3U5MFk1Uk5vbVByVzIyalFvQ0VLQ3kxNGVkalFmMit0cU5WcXhmbno1M0hwMG1VLzJsOS8vUVdHVmNGdXM4SHVrNXVXbG5iNnN2WkNLZFJxTmRIcGRMQmFyVEx2RnBHSUlBbkRNSVJTeWlRbEpiRjc5dTUvbVdYWmwzLzY2Y2ZHKy8rM0Z6UCtNeHNBa0o2ZWpubHpaeU1vTUJDRFh4eUs1czFiS09lMWJPbTc0RGdPNDhaUHJEZ2llUzROWGJ0MnJmSjE3dDI3MTA5UVdJbFVOcGEzY014T3A1NDQvdEh5NWNzM2YvZmRkeDRKNEJRVEZkN2FWUG1WeXNYMkRNTlFRUkFVL2plVlNrVlpsb1ZhcllaS3BWTElMV1hUTkNtNWpzVDNKcEZaeHNTZ1pzMEVKQ2NubFV0M3V0Rnk4TGYvVlhuZjloMjdWTnQ1L0NzMU5xUFJpQXNYTGlBcnk1dkM0VXNFeWJBcXJ6UFc2WVRMN1lMZGJnZlA4NGlPaVFIUGNYQzZYTVJodDROaFdSQkNpQ0FJY2k2YUV1VThmZWI4TXk4TS9MOFJScU94Ylh4OFBQTEsrQTdxMUtrRHU4Mkdnb0o4TkcxNjJjVGEvT2ttbU0xbXpKZzU2NFpkcTE0ZjRFZXdxeHliV3pobWpXclVDSisvYytmT0owcEtTajRNQ3d2YlFRamhmQUZPMHVLSVY0c0RwVlNnb2xTckovbmpJSW9pVWFsVTFKY1ZSdGJhQUlLaW9pTHdISzhrKzdyZGJyaGRMcmhjVGlRbEpsVXJIVkpBUUdDVnlxb0NBZ0tyZGFEL2RjQ1drWkdCOVBSMFpHZG5LMG1CY3RLdDFXb0Z3N0JLS29mSDQ0SEZiSUZLcFlMYjVTWTh6NE5LQmVyZXRBMkdpQ0pQQkVFZ0FKZzJiZHAyZjJmSjBsY0RBd1A3VHBveUZWTW5UMFNOOEhDb1ZDd0N5aXlXanAwNm82UzRTRWsyTkJvTldQUGVLaVFrMU1LUVFkNG9Jc093MlBqUko5ZDF2U3pMd202M1ZmdVQrRTRUdTgxYWFRa1djNHZHekc2emdsV3BRQWhwRXhvYTJrWVFoTDRtaytuRHVMaTRBNFFRamxMS0UwSmtnQk5CSUlKQ2hDZ3FCSm1pNk0wYWthbXRSRkZVekZNQTBPbjBzSmFVZUZOQ2VEa2xoTHRjeWVCeXcrbHlvWllVOUxuUmtseW4zajhXd2djRUJDSzVUcjFxSGV0L2pTbEtLY1daTTJlUW5wNk9uSndjR0kxR2hXWklydmZNeWNrQllSZ3ZLMGVwc2lpZWVOazRlRi82SUZsTFkwNmtwalVJRGc1K2pSRHl5cTB5bnlvSDhreVlMUmJFeE1iNzBjeFhhemZrSWpJeUFvbTF5MU02WldSbXdteSsrV05tTk9RaUlpSUNTWW1sejRuanVIV3BxYWtmdDJ6WjhnSUFEZ0F2UlZJVkg1ek1IK2ZMQ2VkRGNFbkxtcVV5SlpJY01aVlRROExEd3hFVkZZVzR1RGpVcmwyN1drdnFicVg4S3pRMnVZb2dJeU5EQVRXejJZemk0bUtmSW5ZSDNHNDNSRXA5eTZJSXovUGdCUjZpUWl0RUNRVWxvSlQwZjJvQXUzRFJPeU5abG4wRFFNTE51SmFnNE9DcjJqOHhzVGJ5ODAwd0duSVJGQnh5MTJ0dWRwc1ZOcHNWQXM5WENHb0FrSlNZQ0pQcDVvMlpmRTZpSUpRRE5RQlFxOVhEV3JSbzBjZHV0Ni90M0xueng4ZU9IZlBJQUFkdmtNcTNBRi9oaHBOQmptRVlJdm5mcUV4Ujd0dGNSZ1k0WDlaZXVlZEN3NFlOcjduVzlIYVdPMTVqS3l3c3hObXpaNVU4R1Y4T3RiSmtrSVdGaGZCV0MvRGdLdGZTR0FEazNJV01uaHFOWmhTQUIyN21vblM3bldqV3RPbFZhNnNYTXpKaHNaZ2g4Q0pjcnJ1VG8wMnZEd0REc29pTWlFUmlZcTEvMUVZeU15OGh2NkFBQWk5VTI1anA5UUZnVmFvS05iV0tSQlRGUFNhVGFWMWNYTncrUW9odmdJR1hORGRCQWpSUkRpNndMRXQ5d0l5cTFlcFNKSmErUFJia0JqSnlkNnlrcENRMGFOQUFOV3JVOEFQYmJXTnVHSTJsMGpsazJ1NktHRzdkYmpmc2RqdGNMaGNSS1lVZ0VVRXFXaHFsQktETWthUEhZcU9pb2tjUlFrYmY3T3N4R2ZNUUZ4dUR1TGc0K09YdUZvL0hzK3FYWDM3WjJLZFBINE1VWUpBMU9NRW5jaXFERzVXMU5WbFRVNnZWVkc0QldCYmNmRTNTK1BoNEpDWW1va0dEQnYrcUpqSjNyQ21hbFpXRmMrZk9JVE16VTBubjhHMnVJdE82K0RMZENvSkFQQjZ1SXZZTkJnQno0ZUtsL2lxVmFqU0ErMjdtdFRqc050aXNKUUNvSDlUOEFnRFFhRFN2OWVyVnE0UFpiRjRiRVJIeEhTR0VsY0NOODhsL0kxNGxUeFI5R3Y1UUg2cDVXbG11VzJWMXA5VVZWUEFEV3hYa3dvVUxPSC8rdkFKcWNqcEgyZVlxWmVpN0NjZHhBS2g4MCtVdVQ4eTJiZHRxaFlTRWpNbThlUDdWbTMwdHdjSEJVS2xVaUkrUFEyeHNySDlGKytXeU9VVkl5L0R3OERVZWorZUQzMzc3YlVPM2J0MnlDU0dNYkpwU1NubGNabDRXdlY0SjZoc3BKYjVSMDdMcElUSjl2UysxdmNmalFkMXJZUER3QTl0MVNscGFtcEo0SzNlTktpekZkT3NvQzJyRXB4ZUI0a3VEVkRuZ2RydWZVS3ZWWXdHMDhpOGx2OXlPb2xhclgrcmF0ZXQ5K2ZuNWE2S2lvblpMdmpkR0FqVlplNU5UUWNwcWIrWFNRc3BXTHZoMlRwTUI3cDU3N3V5a2I1S1JrWEZIbktoY0hpVUhDWHo5YVdXMU5KOU9VY1JiV096dERDV25jRkJLeWM4Ly94eVdtSmc0am1HWUNmNmw0NWM3eVBlMmJPdldyZXNuVFpwVUNNRGprK0FyeVA0M3VXcEJTZ254OWIxUjN3b0Z1ZlZmVUZCUU9iK2JIRlM0VTlOQlZJbUppYmY5U1hJY2g5VFVWTVYzVmxHSHFBcTZRdmwyVS9jRk5jWnV0M2ZSYXJYakNTRTkvVXZGTDNlWXZEbCsvUGlVWjU1NVptMVNVdElSQUN3QU9YcEtVSnJKRjZJb2doQWlsMlFSbWYrdHJJYm1XMlR2Y0RoZ3RWcFJWRlNFbEpRVXFOVnF2eWw2bzhYbGNpRTFOVlVwa1pLckNYeGI0aWs5Q1NUQ1BWbFRrMDFQQ2RnWVNpbmo4WGlHc3l3N0VZQS9vOVV2ZDZRd0ROTWpNVEd4Y1VsSnljcVFrSkF2QURDU2VTb25sWmNLTE1nV0QvVUtrYXNYZlByWTRrckY5U2twS1pWMnhicHRUZEhiT2QzRGJyZVhBcld5MVFSbEd4YkwvalRKL0pUclBCbFJGRWx1Ym01OGRIVDBCRUxJcS82bDRaZmIxZDFpTUJoZ05Kb2dDQUpzTnVzL2ZvZm4rWFZIamh4Wk4zbnk1RnhKYzVNckY1VGllcCs4TjBpcElYSVNyNUx6Sm5lbUwxdWxFQjBkalpvMWF5STVPZm0yQUxmZzRCQ3dMSVBvNk9nclpoRGN0aHFiMVdxdEZOUmtobHU1OTZKdmtFQUdOWi9JSjJPMzJ6dHJ0ZHFKaEpBSC9jdkhMN2NycUIwN2Rnd1VSS21HcUdKVzJiRDZEUnZYNmRydGdmYzZ0R3Z6QndBRzNzaXBUSURxcFVYeS9rT2x2cmRlalkxU0wwT1MxQWRYM3VRZXVvSkl3UXNVSEMvQzdSR1FtSnlBb0tCYlg5bGl0OXVRbTJkQWJsNGU3cnYzM2pzSDJJcUxpeFZRazR2WnpXWnpoWnBhSlpGUHhaL21kcnNIcWxTcXlRRHErWmVQWDI1WE1SZ01vQ0RYVkwvS01FejNXclZxSjU1TVRWdlJKT1dlSGFDVW9ZQnYzdzFCb2dzUnZiRUFDc2tDQmJ6cmhDb21xUnhSbGN4VVVhUVFxUlJOcFNJYU5taUk0SkNRV3pwV2dZRkJDQXdNZ3NtWUI0UEJVR0dhMUczRm9QdkREeitnZmZ2MmlJbUpRZGV1WFRGaHdnVHMyYk5IWWVpb0tBTHFWdm9QZUgxcTBzYUlvcWlhUDMvK2xQVDA5TFhmZi8vOWJRTnFQTTlqMUtoUmlJNk9SbWhvS0lZUEg2NTBkL0xMM1NzbVV6NkNncThMTU9xR2hvVXRQbmYrNHZDRzl6UUtBS0NUdW1mSlBSZFlTc0ZTS25mTEVnalBjL0J3bkplcDErV1dlaXg0dTJOWnJWWVVGeFhCWWpIRFpEUWhKeWNIR1Jjdkl1MU1Ha3FLaTIrTE1Rc01Db1pSNnB4V1Z0Z1pNMmJjRmllNWQrOWU5T3paRXlrcEtYamdnUWVRbEpTRW9xSWlIRDU4V0k3c0tJQlcxdnlVdFRRdnRiTEFwS1NrMVByODg4L25kdTNhZGN5QUFRT1lrSkFRZE9uUzViYTR6b2tUSjJMYnRtMzQ5Tk5QOGV5enoyTHAwcVU0ZGVvVUhudnNNZi9xdm9zbE56Y1hOY0lqcnZwN3AwK2xZdDVVN01lSEFBQWdBRWxFUVZTYzJlalZ1dzhBTUNxMXV1T3ovL2RjU0t2V2JTNTh2ZlVyQitCVjNTb3pmeWxBY0xtUnQyU08wc3VicEtrVkZPVGowTUdES0N3c1JFUkVCSUtDZ3FIVDZmRDExMTloL3R6WjJMWnRLd290aFdncG1ZYjUrZmw0YTlvVWJONjhDVC8vOUJPYU5HMkswTkF3QU1CZmZ4M0h0Q21Uc0hYckZody85aWRhdDJsN1RWMndOQm9Ock5aaXhGZmdhN3R0VE5HMWE5ZWlhZE9tZU9hWlo1Q1ZsUVZDQ0ZxMmJJbUNnZ0tjT1hNR0tTa3BsU1hlbGdvU1BQamdnNjBhTldvMHBWdTNibjNsbTNlN2lOMXV4NnBWcTdCcDB5YUZtdWo5OTk5SHo1NDlzV0RCZ2dxYjN2cmw3aENydFFUUjEyQ0dOcnluRWQ2ZStaOVM3Nm5WNmtGZHVuU0ovdVhYLzYzcGZuK1hFNVJTUmtJM3hUU1ZzVTBVQkpHWGZHMkE5OVVMZUJLd2dlSkMrZ1Z3SEFlV1lSRVJFWUdNakF4UUFJR0JnZGk2WlF2V2ZyQWVHbzBHWThlOGlTTkhEcU4xNnpaWXZXb0Z1bmQvQUgwZmVSUi8vSEVFQytiTnhhcjMxb0xuZWN5Yk13dnpGeTVHVWxJeTFuM2c3U3Y2MHN2RHIybmNmSHNGMzNhbWFGRlJFZXgyTzNKeWNuRGh3b1ZTUHJYRXhFUWtKaVlxS1IxMnV4MzUrZm1rc0xBUU5wdU51Rnd1SWdnQ0k0b2lrNVNVMVB2SEgzOWNzbno1OHI2RUVIVHAwZ1ZIang3RlcyKzloWGJ0dkExNTI3VnJoOW16WjZONzkrNElDQWhBdlhyMThQMzMzMlBac21WSVNFaEFhR2dvaGcwYnBoRDNVVW94Yjk0ODFLOWZIeHFOQmhFUkVSZzBhQkRzZGpzOEhnK2FObTJLQngrOEhKUFl0R2tUdEZvdGpoOC9EZ0RvMzc4L1dyWHlGalVjTzNZTVRxZXpGTjlhNTg3ZVR0c0hEeDcwcjI2L2xCT3oyWXl4WTBaaDBQUC9oOEdEQnVMM1E5NTVrcDJkalFIOW44Q1QvUjdGcURkR2x2ck81SW5qTVdUUTgzMW0vMmZHMUpTVWxDNEFkS0RVdDVFTUs0b2lLNjhicFlrTXg2R2twSmdZREhsZVFrcW50M0Z6WkdRa0dqWm9DSTFXZzVLU0V1VG01aUF6SXdPN2YvZ0JLVTJhSUNEQVM3SmFJNndHL3BMbS9WOS9IVWVYTHQ1NUhob2FpclMwMC9CNFBERGs1VUduMXlNcHlkdVlKVHc4SEg4ZFAzYkR4KzJXYTJ4eW9LQmR1M2I0OXR0dk1YZnVYTVRGeFNFa0pBUjZ2UjR5MTd1YzBtRTJtd2tBcUZRcVFpbVZ1NjR6VnF2MVdZMUdNN1Z2Mzc3MUd6WnNpRVdMRm9GaEdMUnYzeDZQUFBJSXBreVpvaHh6L3Z6NTJMRmpCenAxNm9SWFhua0YvZnIxdytPUFA0N1RwMC9qMUtsVDZOYXRHeDU2NkNFODhjUVRXTFZxRlJZdVhJak5temVqY2VQR09INzhPQVlPSElqbXpadGp6Smd4K1BEREQ5R3VYVHQ4OHNrbjZONjlPMGFPSEltWk0yZWlSWXNXQ3JBVkZoWUNBSEp5Y2hSdzlIbTZJaUlpQXRuWjJmNVY3SmR5OHNYbm05R3NXVE1NR3Z3aTB0UFRzWHJWQ3JSdDF4NEpDUW40NzVhdE9IZnVMT2JPTGswMVAyL0JJbWx0RmJVWi90TFE4QTgvK21URjRFSFBmeXNwTWtTeVRqa0tDTjRIT0JHbGZGNFFRcWhLcFNKdXQ5dXJ4QUdnb0NDRWdkdmxnczFtUTc0cEh3QkJabVlHQWdJQ2NQRmlPbFlzV3dwQkZCQXMrUW1MaTR1aDFlbXdZL3MzK09tbjNkQm9OTERaYkNncEtZRldxNFhINDhIS0ZjdVFtNXVMb3FLaUd6NXV0MVJqODAzcEVFVVJBd2NPUk4yNmRXRXltWERxMUNrY1BYb1VxYW1wS0NrcGdkdnRSa2xKQ1pIQVFJbjRNQXpEQkFjSHYvTGxsMTh1MG1nMDllV0dGenFkRGhxTkJvUVFoVmxVbG43OStxRmJ0MjVRcTlWNDRva240SEs1TUhmdVhBUUhCNk50MjdabzBxUUpVbE5UQVFCSlNVbFl2MzQ5K3ZUcGc4VEVSRHoyMkdQbzJyV3I4dmw5OTkySFNaTW1ZZno0OFJneVpBaWFOR21DQ1JNdVYyazk4OHd6R0RIQzI2UFI0WEJVbUF1azFXcWxEbGwrOFV0cGFkMm1MWDcrNlVkODlPRkd1RjB1TEg1blNaVytKNG9pWnM1NEd3LzNmYlRlQXowZW5IWXE3ZHdBQURwcDAxQksxYUJVQllBRktLT2tSd0dFWlZYZ09BL3h1RDArcmY3c2NIczhjRGdjc0JSYWtKOXZRbEZSRVU3OC9SZkdqeHVENTU1L0FkMjZsYVl1bkRkbkZqSXlMbUx4TzB1aDFXcExLVE5qUnIrSnhvMVRNUEtOTjZ0bDNHNFpzUGttMzhvcEhTNlhDM1hxMUVHclZxM1F1SEZqUkVSRVFCQUVHSTFHNG5hN0pYWU83eE5IemxIak9HNThTa3JLZ3RUVTFDcDNxUEF0STVNSFBDRWhvWlJUVWdhYXZuMzdvbmJ0MnBnNWN5YWVlKzQ1dEdqUkF0OTk5NTNVT01NcjA2ZFBSMFJFQlBiczJZT1BQLzVZNlhOUVZ2UjZQVHdlVDduMzNXNTNwZjBSL1hLWEExdnJObGk1YWcxcUppVGc0NDgyNHUyM3BsYnBlK3ZYdlErZFRvZUJ6NzhBQUZIQndjRnZmZjNOOXNFQTlCSzRhUWtoYWtLSWlsTEtBbUI4QW5DRTQzaDRPQTlSSXFaT0p6aVBGK2hLaW90aHNWamdjYnRSWEZLQ3h4OS9BZ1FFSmRZU2hJYUZLZVpuaDQ2ZE1QS05VVkNyMWZCNFBBcHpiMGx4TVVhUEdZZmVmUjZDeStWQ21QU2RPeDdZZk11a3NyT3prWk9UZ3kxYnR1RGl4WXRLbmhySGNkRHI5UWdKQ1NHQWwvN2JGOVJXcjE2dDVqaHVPc013czBWUjFKWHRPSDVGKzF0VjNnS3ZyTmgzeVpJbDZOQ2hBekl6TTlHaFF3ZXNYYnNXdlh2M0xyV1AwV2hFVGs0T0tLWDQ5ZGRmS3oxdVFrSUNYQzVYS2RXYjR6aVl6V2JVckZuVHY0cjlVazdteloyTncwY09vMGVQQnpGNXlqUWNPblFRL3pUWDkrL2ZoNzIvL29vcFU5L3luZGU2SmsyYVRybjMzbnVITjJ2V1BCQlNPZ2lsVkEwcEhRUUFTMFdSOER4SEJJRW5QRmM2SFlUbmViamRic1drVkdzMGNEZ2NLQ2pJeDhXTDZkajl3L2RvMUxneEFLQkZpNWJLZWY1NTlDaVNrcEtoMFdnUUd4ZUgwTEF3YUNVTGF2KytmV2plb3NXZDcyT1RDOXA5YXorTGlvcVFuNThQaDhPQjVPUmszK1JiSW1zNGN2czdBR1RuenAxQlBYdjJuTW93ekxpaW9pS2NPblVLUTRjT3JmQjQxOHRPc0dUSkVreWVQQmt6Wjg1VTNzdkl5Q2dWd1h6cHBaZlFva1VMOU92WEQ2TkhqMGJQbmowckJLcVdMVnRDcjlkajM3NTllT1NSUjZSSnVCOE13eWpCRGIvNHhWY0dEbndCaXhjdndPZWJQNFVvaWhnemRqd1loa0YyZGpiR2pIb0RIT2RCY1hFeEJ2Ui9BdmZlZHg4bVRaNktsY3VYd3VWeTRiVVJMeXUvczNMMVdnUUhCMlBCb25kR3Y3Tm9vYWFnSUg5ZGJtNnUvSVNWbzZXOHROWUViMk1zd2V0aWsvYmhlWUY2T0s4NUNnSUVCd1VqTGk0ZW4yN3lkcEsvOTk3N0VCd2NESjduOGVwckl6Ri8zaHg4K2Q4dm9OZnJNWEh5RkVXcG1ETDFMY3lhTlFPY2gwT3RXclV3WWRLVU94dllLS1hseXFUazZHZHljakxPbnorUDFOUlVCQVFFUUJBRXVOM2Vwd1FoUkNiVEl5a3BLVFZtejU0OU5TSWk0azIxV28wcFU2WWdKQ1FFQXdaVTNMMDZLQ2dJQnc4ZXhLRkRoNjRKUE1MRHczSGd3QUhrNXVaQ0VBUXNYTGdRcDA2ZFFsT3BMOEg2OWV1eFo4OGUvUDMzMzZoWHJ4NDJiZHFFbDE1NkNkOSsreTBBNFBQUFAwZGhZU0ZHakJpQndNQkFEQjA2RksrLy9qcUNnNE9oMFdnd2ZQaHdEQmt5Qk9IaDRmNVY3SmR5VXF0MmJTeGJ2cXBDN2YrL1c3WlcrSjNQLy90VnBiOTN6ejJOOE1INmphKzUzVzdWNWs4M3JadisxbFN6dExaOGxBRUdsSXFDS0RLbHdDMG9LQWdhclVhMm5rQkFVQ01zREVsSlNZaUlpRUJNVEN3eU16TEFzaXdhTjA2cDFCL1l0R2t6ckgxL2ZiV08yMDAxUmE5VTBCNFVGSVRZMkZpSW9paWJvMFFHTlpabENhV1VYTGh3SWVMNzc3OS9LeTR1N3MwSEhuZ0FYYnAwZ1ZhcnhmNzkreXUxMDE5NzdUVWNPSEFBZ3djUHZxWnozckJoQTBwS1NsQzNibDIwYTljT05wc05reVpOd3A5Ly9vbXNyQ3lNR1RNR1U2ZE9SWU1HRGNBd0RENzQ0QVA4K09PUDJMQmhBd0JneTVZdFdMLys4azFjdkhneEhucm9JVHorK09QbzI3Y3Y3ci8vZml4YnRzeS9ndjF5VTBXcjFRNS9idURBbCtjdFdCUUZRQ3RWS2FpOXlvNVNwVUJFMFp0NTRHM0E3QTBvdU4zZUtnV0h3K0UxU3lXZm04bGtRbTV1TGpJeU1uRDJ6SmxiZW4wM2pkMGpMUzBOYVdscFNvczh1WnVVWENibHkzeGJKdm1XVUVySm1UTm5hdFNwVStjdFFzaEkvN1FzTGFJb0lpUHpFaXdXQ3dSQmdNdDVkNVpvNmZSNnNDeUw4Qm9SU0VxcVhXa1FSN1lldkdObUJzOVgzNWpwOUhxb1ZDcEVoRWNnS2FseTdzTzllL2VpYnYyYnoxcnJjYnMvMkxUcGsvZmZuajdOQXNCRkNIRkRhUnhEQkVJZ0VNSW9EV1BVYWhYVUdnM1ZhcVMrcFFFQkNBb01STERVemk4aUloS3hzYkdvWGJzMjZ0YXJqM3IxcXJlYXNiSSt2RGZGRkpWN0ZKVGxVNU03U1IwL2Z0eTNRb0Q0MnYzU0ZsU3ZYcjJwQVA3Vm9HWXdHSzY2VTVEYjdjRmZmLzBGVnFWQ2NFaW92NitvM1liQ29rSVVITTFIaStZdG9OR29Ld1MxUC80NENvWmxFUlJjL1dObXQ5dGd0bGlRWDVDUDFxMnV6RUNmYy9QekdWL3ExcTI3ZUhISWkycy8zTGhCV1lkZTA5UmJZZ1dJZ2loU1VHOHhQQlVFa1FpOFFKVnU4ejRrbFU2SEEzYTdEVlpyQ1lvS2kyQXVLQ2lWY1hBanBlWVZmcmZhZ1Mwcks2dFVqNEt5M2RrZERnZHExNjZ0YUdvZWo2ZFU3ZWZxMWF2Vnc0WU5tOG93ekp2d1N6bkpNK1NCVmFuOG5lQWxrWmtmaklaYzVPYmxJcWtDaHVpTEdabGdXUGFtalpudk9XVm1Ya0xpRmZxTDFreEl1QlhETm56cXRPbDhSa2JHMmwvMy9GS1poaXRjQmp1UlVpb1NTc3YzVWVBbFpsNlBoNFBMNDgyQkk0UWcvaVpIL2FzVjJJeEdvOUlpcjJ6amxRbzZTWkdLdU5Ra1VCdm5YN0lWaTduQWpLQ1FVUDlBbEpHZzRCQVVGSmdyQkRhTHhZTGdXekJtUWNFaEtEQVhYQkhZYnBrWnI5Tzk5djRINnowTjZpV3ZsN1ZhT2FCQXZkRUZLcGJLTXlFVUlBUWdjbGQ2RUVMQWVNa3N3VEFzV0phRmlsVkI1VFZmRVJVVmRlY0RtOXloWFc2Umw1K2ZYeW1kZDFtZm1tL3lMY013VS8zTHRESS9FU0FJd2wxdmZsYW1KUlVYV1NyODdGYU5XV0JnRUlvTExkZjAzWkxpWW1SY3ZBQzczWGJGMzA5S3JvdVEwR3NEYmIxZVB6cnQ3QVhYUFEzcWJwTHdUSmxxUG1NblhtN2Z4MUdPOHhBSitFQVlBc0l3RXJBeFlGa0dLcFhDMWd1TlJvUFEwTkE3RjlpY1RtY3BVQ3ZMcDFZSlNhVGNmSVZJdlFsZVlSaG0ycFVYOXRWVEtkOXVVbFdxNDRxRUVNRHA5SE81VlRvUEsrRzV1NVhCbFd1OVh4ZlR6OFBoc0Y5eEg3dmRob3lMRjlDc3hiM1hBYjZCbzArZU91Tm8wcmpoVmg5UW8yVTBPQkVBRlVXUjhEeFBuVTRIWVZtV01vU0FFQVlNUXlDWE5ubzNGVlJxTlRScURSbzFibnhUS01adk9MQlJTbkhtekJtbFRaNGMvU3lycVpXSmZzcU5KUmlKOWZaWmxtV253VnY2VWVseHJwRksrYmFUcWxBZFg2djh1UHNIYk55d0hpYVRFZkh4OGZoNDAyYzRkKzRzaGc0WnBPd3phY28wUFBUUXczNGt2STNsbjBETmR5NWRyMVVhR2hyNnhyRy9UdHBiTm0veXZhKzJWZ2JjQUVDa2xIcDlhcHlIZUhzclhBWTJobVhCTWhLd3lWcWJWb1BHalZPcXZhM2ZEUWMyWDFBcjI4ellicmRYU09mdDYxZHpPcDI5VkNyVlZBQlhOTWl2aDByNWRqU2Ivb25xK0Zva056Y1hDK2JQeGN4WmM5QzZkUnVVbEpRQUFPclZxNDhmZi80VkFQRFMwTUhWZGwwYjFxL0RZNC8zSzhWbUlwL1hzaVh2NE1TSnY2SFJhTkRqd1Y0WThlcHJZRmtXZ0plU1o4V3lKVGh4OGdTMFdpMTY5dXlGbDRlUFVENnZEdm1uWTNicDFCNXF0UnFFTUVoS1NzS1FvY1BRc1dPbmZ5dU9Sa1ZFUkx5NmN1WEtrdGRmZi8xQUdjMk5Fa0tvOUQrUm0yRHhIT2ZsSW1jSUpRd0JReVEvbTZTNUtjQ20xa0NyMGFKZS9mclZlZ0UzTkVFM0l5TUQ2ZW5wbGVhcHlkUkRVb3M4K0xMZlVrb1pxOVhhU3FQUlRBWHdqMWQ5QTZpVWJ6K0F1d0xWOFRVOVpOSk9Jekl5RWgwN2RvSkdvMUhLd0FnaFNtZWk2bnh5ZnJoeFBTd1djN24zWjd3OURUVVRFdkQxTnp2eC9nY2JjT2pnQVd6ZnZnMkFOeWR2MG9SeGFORHdIbXo3WmlkV3JGaU52Yi91d2RkYnY2cTI4NnpxTVZldVhvTWR1NzdEa0tIRHNIamhmR3o5YXNzdG1TZUVFTng3NzczbzJiTW5ldlRvZ2ZqNHEzdTRDNEtBMzM3Ymo4a1R4eU03SzZ1eVk5U0xpb29hdm1EQmdzYVM1U1RUakt1VnVsSks1VzcwaE9kNThKdzM5Y05US3ZYRGpzS2lRdnowNDI2c1hmTWU1cytmZy8zNzl5RkxPbTdXcFVzWStmcXJlUGFacHpCbTFCc29LaXBVenVHakR6Zml1V2VmeGpOUDk4ZXVuVHR1amNabU5Cb1ZVRE1halFxb3libHF2bDNhZlRxMEs2Qm1NQmhxNmZYNktRRGFWdlhtL051YzVvR0JRYkJacjU5UC92anhZNWd4ZlJvOEVzM000NDk2emN4K1QvVEhvTUZEcXZRYmh3NGV3TW9WeTJFdzVDRXhNUWxqeG81SFNwTW15dWQ3ZjkyRERSdldJZDlrUWt4c0xJWVBINEYyN1RzQUFFYSsvaXF5TG1VQ0FFYS8rUVpVS2hZSkNiV3djdlVhaUtLSXJsMjc0ZUcrZmFIVmFoRWRFNE5XclZzcm1lb1dpd1Uxd3NQeDNNQ0IwR2cwU0toVkN4MDdkVVphMnVscUcvZXJPYVplcjBmSGpwMmduaklOYjArZmhsNjkrOXgwWnBiazVHU3dMSXZkdTNkRHE5V2llL2Z1eU0vUGg4UitVd3F3NVNSbDM3L2ZmT04xMUt4WkU2ZFBuNElnQ2xjQzBOYUppWW5EeG80ZHUraWRkOTdKa2JVMkg1K2JIR0FRQlVFRUlieTM3cEV3bERBTUNFUEFzQXh5YzNOQkNNRURQWG9BbEdMRCtuV29WNzgrOURvZGxpNTVCNDg5M2c4OWVqeUlMejcvRE8rdFhvWEpVNmJoeEltL3ZYTnM0MGR3dTkwWVBud1lXdDU3WDVWQi9JWm9iRmFyVldIcThLMy9sRHUzWHltdGcxSktYbnp4UlRZaUltSXlJYVJ2MVk5WmNrTW5pOWxzeHVSSkUvRGNzMDlqM3R6WnR3emNLcU02dmhwcDBhSWx0bTNmaFRkSGpVSE5tZ25ZdG4wWHRtM2ZWV1ZRdTNEK1BONmFOZ1VqWG5zZHU3N2JqYWNHUEkweG85K0FTZEltTXpNek1IdldURXljT0FVN3YvMEJqenp5R0taT25hdzBwVm14Y2pXMmJkOEZBRml5YkRtMmJkK0ZsYXZYZUNjY3crQzVnYzhqTEt5RzF5bCtNUjBIZnZzTmJkdDY2M2dqSXlPeFl1VnE2SFI2WlVFZVAzWU16Wm8xcjdZeHY1Wmp0bTdURmg2T3V5V2xRNUdSa2NqTnpWVjhYYUlvb2thTkdxWDJPWExrTUtaT25naU80MkN4V1BEUzBDR3dXTHdSMlhlWExNUGtLZE9xcEJnd0ROUDd2dnZ1R3h3VEU2T1h0RGFmMGl1d0FCaHZSemlSdUZ3dTRuSzV3SEVlWWpHYmtaZWJDNWZUaGVMaUlnUUdCcUtrcEFRcXRScUNJQ0QxNUFsa1pHWWdMZTIwY3U4ZmVyZ3ZEdjkrQ0FCdy90eFp0R2paRWxxZERpR2hvV2pmdmdQK09ITDQ1cG1pbE5KeVZRVyttcHB2Qk5TM1E3dHZCSFRObWpXVENDSERic1JOLzJyTGwzanUyYWZ4N0ROUFlmNjhPWEM3WEZYNjN2dHIzOE05OXpUQ3A1OTlnYkhqTGhORm1veEc3Tnl4L2E1eVZPL2N1UjFkNysrR2poMDdRYXZWb25lZmgzQlBvMGJZdmZzSEFFQkVSQ1EyYlB3WWpWTlN3REFNSG5uME1YQWVEN0t5TGxYNUdLa25UNkpuajI0WTlQeHp1S2RSSTNUcGVuK0YrNjE1YnhYMEFRRjQ2T0crTiszNnEzSk1RZ2pDYTRURGR2M08rcXNXalVZRFFSQVFFUkdCVHAwNlFSVEZVa1NPQU5DcVZXdUVSMFJnNW96cEdEdm1UZlI3NGttRmFPRnFHNmVvVktybkZ5MWFOQkJlTGpkZmsxUWxZUWdqVWtvWWhvSEg0eUUybXcwdWw0c0VCZ2JDN1haRHBWTEJZTWlEMVdwRmRuWTJDZ3N0eU0zTlJXNU9EaUlqb3lBbkJSODZlQUJXcTNjODY5U3RoNk4vSEZFb2tsSlRUOEptczkwOFlEdDc5aXd1WGJxa3BIVlVwZmRubVFqb3dCdVZxM2JpeE4vWXN1Vy9XUHZCZW55NitRc3dESVAxNjlkVjZidm56NTFEaDQ0ZHk5MzQvUHg4N05qeHpWMEZiQWFEQVhGeHBWWCsycldUWUREa0FmQ3lQQnc5K2dlR3Z6d1V6ejM3TkFhL01GRFJkS29xS1UyYVlQZFBlL0RGbDF1Umw1ZUhEUlhjcDQ4LytoQy8vMzRJYytmT3I1QkRyenFrcXNla2xNSlNhRUhRTFhLSEpDY25vMUdqUnZqdHQ5K1VvRkJaNEIwK2ZBVCtQUG9IdEJydGRUMFk5SG85Qmc0YytLYkJZT2haZ2IvTnE3bDUvVzBNSVFTQ0lFQ3Qxa0FRQk9MeHVCRVVGQXhlRUhENDkwTTRmU29WRE1QQTRYREFaREtoVjYvZStPYWJyekZrOFBOSVRUMkp3RUJ2LzRUbXpWdWdaNjgrR1BuNkNFeWZOZ1VCK2dEb0EvUTN4OGVXbloxZExsZk50MVRLQjlSUVVRVFVicmQzbHBvWjM1QlphN05hRVJRVWpJQ0FBREFNZ3hlSHZvU0xGOU9seFpxSFJRc1hJTjlrUkdoWURZd2JQd0dKaVVuNCtlZWY4Tjh2UGtObVppYm16cGtGalVhRDU1NTdIbDI2M28rbFM5N0JzVCtQd21Bd1lQakxYcjYzdGUrdng0YjE2L0RubjBkaE5CaVEwcVFKTHFaZlFHUlVOTjU1ZHlrb3BWaTlhaVgrK09Nd09BK0g5aDA2NHJYWFI0SlNpbkZqUnVIK2J0M3h5S09QNGNTSnZ6Rm45bit3YnYySHQwVjNiVitKaVltQklTK3YxSHM1T2RsbzJkS2Jpckx2ZjN2eDZhWlBzR1RwY2lUVXFnWEFHeldzYUhHVkJUdTN5NFh2dnZzV2ZmbzhCSzFPaDdpNE9QVG84U0QyNzk5WGFyOHRYLzRYUCs3K0FjdFdyTHJtaE5PcmxhczU1cEVqaDZGUnE5R2dZY09iZm4ra3NrUDgrZWVmQUFDV1pjdFJ5OXRzTm93ZlB3WURueCtFczJmU3NHRCtYRXlhUFBXYWdrVk9weE5idG14UkFYamxyNy8rTWpSdjN2eFB5ZGNtU3Y0MkpXSktLU1VNdzhMamNWT24wOXVVbmpBTW9xS2lFQkFRQUoxT2g3Ly8rZ3VpSU1KaU1VTWJGNC9uWHhpTUJnMGE0bUo2T2k1bFppckhmVzdnODNodTRQTUFnSmVHdllpNmRhdGVVSC9OR2x0UlVWR0Z1V3FWZ0JvcDA2V2R5YzNOamRkcXRSTnhBenUwdDI3VEZqVnIxc1RMdzE3RTExdTNRS2ZUb1hYck5nQ0FPYk5ub1dmUFh2aDQwMmQ0L29WQm1DNVJMRC93UUErc2ZYODlhdGFNeDdTM1ptRHQrK3NWczJqVTZMR1lNSEVLa3BLVHNmYjk5YVU0cE5xMmJZY1pNMmNoTXpNREgzMnlHWmN5TTJHeFdHQTBHaEFZR0lBTkd6L0d4NXMySS9Ya0NSdy9mZ3lFRUV5Wk5oMmZidm9ZYVdtbk1YZk9MRXg3NisxYkJtclMvZkJxSDZLb2FOSUE4SERmUjdCMzd4NGNQdnc3ZUo3SEw3LzhqTlNUSjlDelZ5L0ZIMGtJd0xBc2lvdUxzUG5UVGRMdmxHYUtpWXVQeDZHREI4RnhIUEpOSnE4MnJOWGlrNDgvd3VlZmJ3YkhjU2dxS3NTK2ZmOURzMmJOTHB2Q083WmoyOWRic1hUNXlwdkdVMWZWWTdyZGJ2eCs2Q0RtejV1RDRhKzhla3NvM2ZQejh4V0EwbWcwQ0FzTEs5Y1E1Y0tGOCtqYXRSdis3N21CbURaOUJqUWFyZUpqdXc2cFc3OSsvUmRIalJvVlc1Ry9qVkxLTUF6RHlGUmpIbzhISE04UnpzUEI0M2JEWVhmZ3pKa3ppSXFLZ3QxaFIxRlJFUW9LQ21BMEdQREhIMGV3Zk5rU1BQbFVhVjVGanVPdzZaT1BRWWlYeDYxYU5UWkJFSkNlbnE0RUMzd2pvQldrZFpBeWFSMkVVc3BFUjBkUElJUThlQ052dUVxbHdveVpzM0Q2VkNxKy9mWmJESDVoSUdiTm5vczZkZXZpN0prMDlGemhKZXhyMDZZdDNuVzVZRElhRVIxemJXbTlXcTBXT3IxZU1Wc0RBdlRnT1E2eHNYR0lqSXpDeEFsandUSXNERWF2MzlIcm00ckE2REhqOFBxcnIrRDVGd2FqU1pPbXR3VFV5aWJvTHBnL0Z3dm16OFdEUFh2aHJla3pVTDkrQTd3OWN4YmVXNzBTaHJ3ODFFNU14TUxGN3lJbXhwdGYxK2VoaDNIeTVBa01IZklDV0ZhRnh4N3ZoL3IxRzhCU3BseG96Smh4V0x4b0lUWnVXSWZhdFd0ajNZYVBvTkZvc0dEaFlxeGNzUXhmZlA0WjFHbzF1dDdmRFlNR3Y2ak1yVVVMdldiZ3MwLzNMMjBtYnRxTTJOaTRHejRlVlQzbXlOZGVCU0ZBWW1JU3hvNmJjRVB6MklLRGc2dThiMFpHQnNMQ3d0Q2pSdzhBd1BIang4djEwbWpldkFXYU4yK2hySXV4NDhiZklQL3J6bTZ0VzdmT0FMRENSMnNUQVZCQ2lEZEdTa1VxMTR2eVBFOFp3cEFTYXdubE9RNmhvV0dJam9tRjNXNkhXcVdHV3EzR3JsMDd3RElzbm5yNmFiU1hJdXVBbCtKOCtkSjMwYng1Uzh4ZnNMaENiYk95Y2JzbVlQT05nRmJHcVZZRzFHUUdBTGxjYWpnaDVOVWJQVUZQbno0Rm5VNkhSbzFUMEtoeENyNzl0akUrK0dBdDVzMWJvSmhHaXBuRU1LQzQ4VngwZi8xMUhMdDI3c0RTWlN1ZzFla3dZM3JwcWpDSHd3RzFXZzJYeTFudEFOYXJkeCs1UTNncHFWKy9BZjYzLzhwOVREdDI3RlRwd3RWcXRaajIxdHVsM3F1bzRXMmJ0dTBxWkhtdFY3OCtsaTVmV2VGdnN5eUx2ZnNPM0ZTZ3I4b3gvMm04YnNRNTJPMjJLa1VxNWFxYjY1VlBQL3ZpbXI2blZxdUhiTml3SWVQRkYxL2NCaS9GcmtnQktyV1NwL0NtZ1lpaUtGS0JGOEFURG9FQkFVU3IxVkdkWGdlMzJ3V253MXVOb0ZLcjBLMWJkOFRHeHFGV3Jkckl5TGlJT25YcUFnQTZkZXFNVHAwNlYzb2VkcHUxVWovb1ZadWllWGw1Q2dXUmIxcEhCUkZRK0lDYW9xM1o3Zll1TE10T3JJN0prWFhwRWhiT253ZTczVnQrWWk0b1FHaG9LTFE2SGVvM2FJZ2ZwYWplSDM4Y2dWcWxRblQwUDJ0cm9hR2hLTWd2cUxDN1ZFVmlOcHVoMSt1aDFtaVFuNS92ellXU2lva05oank4dDNvbDN2OWdBdzcvL2p1T1hFWDR1bkxIYmdEOGNuVmpjeXZIckxKalIwZEh3M0dGV3VlQWdLcVp2RlhkNzNwL0t5Z282SlYzMzMyM2hSSk1rSnJDeUNhcG5BSWlpZ0xoZVFFY3o0UGpQUEI0WkFaZUZ4d09CK3cyRzBxS1M3d012UGxHS2JtL2FrbnFkcHNWMGRIUjF3OXNEb2VqRkZ2SFB3UUx5aVhocHFXbGhXbTEydkVBcXFVT3FtZXYzdWpjcFN0ZUh2WWlubjNtS2FTZVBJSFhSM3BwM0taT200NXZkKzNFNEVFRHNYSDlPc3o0ejV3cU9WSVRhdFZDMjNidDhQU0FKL0hDd0dkaE5CcXV1SCtuVHAyaDArdngxSlA5TUgzYUZOU3RWeDkydXgwOHoyUG0yOVB4MHN1dm9GYnQycGo2MXR0WXZIRCtkZnM5NUNlOVg4cFArc3BLc0poYk5HWjJteFZzSlJwR1hGd2NLQldSYjh5cjhOeVM2OVQ3UjlBS0NBaEVjcDBieDFqN0Q4ZU1pNCtQSC9UQ0M0TnF5T0JHeTRNYlF5a2xvaWdRZ2VmQmNiemtiL1BBN1hMQjVYVEM3bkRBYXJPaXVMZ0lGck1GSnFNUjJWblpTbCtGeXNiUlpNZ0ZDQ290UDd3cWF2RFUxRlNrcGFVaE16TlRxUVgxTlVWOUtneUlyTFZKdmpWR29pR2F4VERNaEJzeDZMZUtTcm02cFRLcTQ4cjlMWmt3V3l4K29za3lZalRrSWpJeUFvbTF5M09mWldSbXdteSsrV05tTk9RaUlpSUNTVmZnWXpPWlREQVlET0I1SGxicjdjOVc0M0s1VnZYdTNYczlBSWUwdVFCNENDRWNBSjRRSWhKQ1JJbGFYS1l2b2xxdGwxbzhJQ0FBZ1lHQkNBNE9SbzBhTlJBUkVZRzR1RGpVcmwwYnljbko1VFhGNEdDb1ZTckV4c1pXcXExZGxZOHRLeXNMMmRuWk1KbE1NSnZORlFZTFBCNVB1ZFFPT1ZqZ2NybWV1RkdnZHJYTzFqdEpydmE2RWhOckl6L2ZCS01oVjJFNXVkczFOWnZOQ29Ibkt3UTFBRWhLVElUSmRQUEdURDRuVVJDdUNHcXlTWHFsQlhzYnltdFpXVmxuYTlXcXRWZjJ0eEZDbElBQ0FIaFpQd2hrY0ZPcFZOQm9OTkJxdGREcjlRcXdoWWFHSWp3OEhGRlJVWWlMaTBPZE9uVlFTMG9udWxxcEVyQlpyVmFsc3FBc3FQbldnUHFtZHZpYW9FYWpzWlphclI1N3E1eXRkOUtpdk5wRVZFSUlXclZxaFlzWm1iQll6Q2l5V09CeTNaMGNiWHA5QUJpV1JXUkVKQklUcjd3ZzJyUnVqY3pNUzhndktLaldNZFByQThDcVZQK29xZDNKVXJObXpjRmZmdm5sMmFlZWVpb2JsNk9rTXJCUk9aTGdKYWZrS2NNd2hHVlp5cklzWEM1WEtTSktHZXdDQWdJUUhKdGcwTndBQUNBQVNVUkJWQnlNc0xDd2ExSmlxclNLWk5QVE53bTNnc29DWDFDVHF3c0lwWlNKaUlnWUE2RFZqUnpNNk9ob0dBekdmeDJ3eGNkZmZUb0RJUVIxa3BOUUp6bkpiNE5lcGJhYitDOEZtNXNwaEpDV2ZmdjJIUUJnRlFCQjZvL2dqWlpLcEpUd0VsTlNDZHpBY1p3Q2JpcVZxa0p3Q3d3TVJFaElDSnI0a0M5VVZmNHhlSkNWbFlXY25CekZuMVlacUYzQkJPMWZIYWtkaXJQVlpJRGpEbmVlTyt3MnJ6TVU5SVp4c2ZuRkx6ZFRkRHJka096czdNNlF5cTBvcFJwSXlidStnUVJCRUlnRWJBcHV5QjJ1SEJMTlVVbUpOMHFhbjUrUG5Kd2NoZUxvaG1sc2RydTl3bncxWDhKSUdkaDRuaTluZ21ablo4ZXExZXJSMVRXWTk5NTdMNHhHSTR3bUU2d2x4WGNrTmJqc0RFMUlxSG1uK1ZiODRwZFNFaDhmUDJqanhvMnBRNFlNRVNSL20rQnJscFkxU2FYcUJPcExSR20zMnhXdFRRNHNoSVNFSUR3OC9LcXFQSzRJYkdYejFjcEVQbjN6MVNveVFVbE1UTXdvQVBkVjUyREd4TVJjZFM5T3YvakZMOVZpa3JZWU1HQkEveUZEaG53QWdQY3hTUVhKSkJYaFpkMVZURktHWVloS3BhSXlDNGh2WUtHb3FLaVVyNjFSbzBaVkI3Wk1uNkpUWDhuUHo4ZVpNMmRLTVhlVTlhK1ZEUno0Y3F5bHBhWDF6TXJLR3UyLzNYN3h5MTBsTCsvWnMrZG90MjdkRHN2Z0JpbFNLaGZMUzAxZzVLcDVoVlB1Y3Zlcnk2WnFXVE8xcWkzOFZJbGhQNVI3aytNRjVGL01BbkVhUU54bUVFOHhDR2NESTloQkJCY2d1QURCNDkxRWpsQlJBQ2dsOGpiNC85cXc5YVAzalBMZlk3LzQ1ZTZUaEdiaS85VkxydkgzK1l1RlBBQ0JBQUpBWmJPVWdSZk5BQ3FDaWp5RjZDWVFYQlNDQXhDc0lJSU9qR0FCNGZKQlBMa2c3a3dRNXpuQWxvcjQ1RnBRcS82NTkwV0Z3WU9zYkFzTXBtS1lMVFlVRlR0aHM3bmdjTHJoZEhKd3V6bDRQRHc4SEErT0Y4RHpJZ1NCUWhRcFJFb0pCWmozbHcwZUNlQUIveTMyaTErdVRTaTljOCtkWlptdWgvZE1md1J5SU1FYlJKQURDU3lWaUNsRmtVSVFLSGhlQk1jTDhIQThQQjRlYmpjSHA1T0R3K21HemVaQ1ViRVRab3NOQmxNeExtVlZyVktubkkrdHVNU0ozTHdpRkJSWVVWamtnTlhxaE4zaEJUV1htNFBidzhQakVjQnhBbmhlSkx4QUlRaVVpSlFTVUJETHhYY2JzQ3p6aG45cStzVXZWeWNpQlF5V1NKZ0t3eUNJTEd4M2RqcmlvQVVMRmh5Wk9ISGlSYTlKNmcwbWVFMVNpSklGU2tSS3dBdUVjZ0pEUER4TDNad0tUbzhhTnBjYUpVNHRDbTA2RkZqMU1CWUZJdHNjQkVOeENQSks0bEFuZ1VOY2VBRXFxNG9zQjJ3NXVZVXc1WmZBVW1oSGlkVUptOTBOaDlNRGw4c2pnUm9QanVQQisycHJGS0FVaEFKTVNJaitOUUFKL21ucUY3OWNIYWdkTzFjZllNTVFGSEpuOThtVnBHWkM3ZVRISjA2Y3VCb0FEMitFVkg0VlFRZ0Z2RzM4Q0NFZ1VyTmxJdEVkc1NvMVZDbzFWR29OMUJvdE5Gb2R0TG9BaUNRUXhUWTE4b29Ta0djT3c3MzF6MWNJYnFWTVVXTitDUXpHWWhSWWJDZ3Fkc0JxYzhIaDhNRHA0dUJ5eTZBbXlDWW80YjBtS0tFaUpaU0NPUEpXZENlRXZQSnZtbkRqcG0zQi9YM2Z1V0cveC9NQ1JrMytBdEgxeGlHMDlwc1lQbW9USEE2UGYyWGY1V0lvakFUWU1NVEV4djlya3M2MVd1MmdQYi91YTQ3TFZPSWFTdUZESmU3Tm5oQkZrUWlDQUY3Z0NjOTVBd2VjNS8vWk8rL3dLS28yaXY5bXRtVlRJRTE2Q1VoSGFWSkUwQUFmVWtSQkJDc2xJQWdxTFlMU2xkNkQ5TjVFcFNnSWlpQktFWkFlbENJSVVnVUVFdEo3c21WbXZqOW1kNUpOSXlCTjJmTTgrMEIyWm5idTNwMTU1MjMzSENzV3F3V0xROFpQMVQ1SUpENHVqdVNVRkhRNkErZ0tjelBlTDlkenV4aTJHeEVKUk1jbWs1Q2dHclhVTkF2cEdkYk12SnJEc05udHNtQzNPMEpRR1VFQkFSQ05Sc1A3N2tzMGZ3d2JzNUZOUC96T3VzOTZzV2wxSDNidStaTitnOWU2SitZUlIxUjhvZitjVGk1QXVmTGxPMlF4YkFaUURHU3FXNG5PMWpCSmxnWEpMbUczMndXYjNaWlpGYlZtVmtWVFVsSklURXdrTGphV3lKdVJlUHY0M3Rxdy9YMDlUZzFCNDFKSlRFb2pKZFZDZXBxVmpBd2JGb3VqV0pEcHJTRkpNcktzT0FzY1lrYlV2RGNFZ1JmZGwyamVTRTIxTUcvcGJzTEdkeUM0Y1NXQ0cxZGk4YXpPckZ4emtKaFlOL1hRb3dwRkFVblMzNUduZHViMEh3d012ZmNwN1ROblRoTTJiWXJHYWVqRXhvM2ZFTkxsTFVLNmRuSVI1SW1Pam1iZ0J3TjR1M3ZYbGkxYXRtcE1GaXB4UlZIVUlvS2lpQTdtSHhSSHE0Y2syYlYyRHlmRlVZYWo1U00xTlpYazVDU05Vand4TVFtN3JNKzEwQ0lDV0cxMk5RU05UU0VoS1kza0ZBdHBhUmJTblViTldUQ3dTOWp0a21DWFpDUVp4N0lweEk4L2FxMHo2SFh2UGVnTDVPbm1rd2tkOWhYQmJjSUlxakdjSnhxTzRmdXRKN1R0ZFp0TVpQallqVlN0UDRyaWxUL2k3UGxJTEJZYll5WnZwbnpORVhnVTdVTzlwaFBac2R0VktOZG1rK2dkK2lYZUpmdFR2UEpIZkRwdmUrWVBHSlBNSzUwWDRsZjJBN3hMOXVlRlYrZHc0VktVdHIxajEwWFViVElSZ0dPLy8wMTZ1bzNnUnBXMDdjODJWRVh2RDRaZmROL2hqeWdFQVZMU2hEczZ0bktWcW93YU0vYWVqbS8rdkxrc1c3cUVTeGN2YWlTdUFGZXZYbUhEK3ZVc1dMU1VaY3RYY3VMRU1ZMDhkZjY4T1RScjlqOVdmcjZLZDk5Ny8xVVBEN09ITXh6RlVTRVZCRUVIT0kyYnl0c21TVWlPVlV3Mm13MnJMWXV5ZkhvNnFTbXBKQ2FxSVdsMFZCUUppVkt1T1RZOXdJMGJDVVRISkJPZmtFcFNrbG9GVFhPMGRsaXNkcXlhcHliaHFJSTZ2RFUxRFAxNDhFdTlLS0NDKzczR2dtVy9zSFY5UDVvOVY0WE5QLzdPSzEwV2Nuam5VR3JYVUJjN3o1aS9rNVVMdW1FeTZxbFVvU2c5KzMzQmp6di9ZT0duYjFHcFFsR1dmcjZQRjE2ZHcvRzlJNmxXUmVYck9uRDRJdVhLQm5CMHp3aU9ucmhLajM2ZlU4akhUTSt1alFrZDlqVVdxNDN3bjRjQzBHL3dWNFM4OXhuN2YxSVptanEycTBOOGdscmV1aDZSZ05Hb0o4QS84OGxzTU9nSThQZmkybzBFOXgzdVJnN0V4c1l5Y2NJNFlxS2pFRVNSOTk3clE0T25HM0x0MmpVR2h2YkhaclBpNit2SGlwVmZaS1k3aG56RWpSdlhBVlYweWRQTGl6VnIxd0VxcmYrY1dUTklURXJFMzgrZndVT0hhVm9XQU91Ky9vb05HOVpyK3dQMGZLY1hScU9Sc0dsVFhNYjIrNGtUUEZXM0xwNmVudGp0ZHZ4OC9UaHgvRGoxNnRYbnhJbmpmUENCU3VqajYrdGJyMFNKNGkwdVhicTBHYkE1WGxvaFFWRVUyUkdTT2xZa1NPaDBkdXgyR3phYkhxdk4wYWlibms2YVNRMUpFeElTaUltTndXVEl2YWRObjU1dTFYcldFcE95VkVFMW8rYklxemx5YTQ0UTFPbXRDU2YyZlZ4SXB4TjdQU3dYd2xzZDY5SHNPWldBOHNWV05XamVwQ29MbC8vQ29wbXE5bVdiRmsveVdudVZhQ1F1UHBYUFZoOWcxWklldk5SYVZmMmVOcTRqaDM3OWl5bXpmbUxsQWxVNXZWalJRaXliMHhXVHlVQ2xDa1g1N2ZnVjVpemVSYyt1amJsOE5aYlNKZjBvV2R3UFQwOGp5K2QyNWRxTmVHMDhiM1NvcC8wL0xkMktoNGMrbHlTckhvdlY3cjZMM2NpQnI5YXVwa2FOR29SMGU1dExseTR4Zjk0Y0dqemRrRktsU3ZIMStnMmNQMytPaWVQSHVSd3phY28wQUJJVEUrajlUZzgrR1BnaG9NcjJUUncvbHZFVEoxTzhlSEYrK25FckMrYlBZL1NZek9OcjFxcVZnM2s0TDRIbHhNUkVQRHc4aUk2T1p0S0VjVWl5aEk4alQ1aVltSWpKdzRQdk4zM0hqaDNiOFBUMGZMVkh6M2YyTEZ1NnhPbzBiSTVWQ1pJajM2YklpaUlJYWtpcTJDVzdZTFByRkwwekpEV29JV2w2ZWpxcHFTbHFTQm9majBFdmtwNHVZemE3amxHOEVhbUdvUEdKbVQxckdlbVpCUU9iemRtemx0VmJBOW5oclZXdFhMd25VTzFodVJEcTFIU2xvYWxlcFRpbnp0elEvcTc0ZU9aQzh6Tm5JNUJsaFliMXlyc2MwL2pwQ3Z4eEpsTlhzMjd0SUV3bWcvWjMvYWZLOGVlNVNHUlpac2lBbG56LzQrOEVQajZRTnEvTjRic2ZUbEM5U3U3TXJHWVBBMWFybE9OOWk4V09sNmZSZlJlN2tRUDE2amRnNTQ3dHJQeHNCWmFNRE1LbXp5alFjYklzTTJiMEtOcTgySmI2OWRWZzZxKy9Mbkh0MnQ4TUh6cVk3aUZkV0wzNlM2SnV1dW9MVktwVW1WYzZkQ3p3K0U2Zi9vT1JJNGJ5VHU5M2FkclV0U2QvMG9SeFhMNzhGMkhUWjJJeW1hcDA2OTdqZVZ3S0NZNEtxWm9TRTFDOU5tUlpRckpMU0hhN1F5dEJyWkphTFJZeUxCbWtwNlZyaFlURXhFUnVSQ2JtOU5qVW5yVVVraHplV3JyVFc3TTRRbEJuejVva0M1SmQ5ZGFjemJobndzZjQ2WFJpejRmcFFwQ3phVnRtV096b2RKbkYzNndHSkx1Vnovb1pXWVYramRuY1hiMWVSSzhYRVVXUnRpL1U1UHFaS1h5LzlYZCszUGtIdzhkK3kveGx1em04WXhpZTJZeFZxUkorWkdUWVNFaE13N2V3cDVhL2k0MUxwV1J4WC9kZDdFWk93MWF2UG5QbkxTVDhTRGlmcjF5QjBXaGt6TGdKdHp4dTJkTEZlSGg0MExsTDF5eTVZaHZGaWhWekNWdi9DUW9YTGt4R1JnWmgwMmRTcUZBaFRwdzRUbUZmWDIzYk00MGEwNkpsSzgxYkxGNjgrS3U5ZXIyN2MvSGloZFlzNGFpZExMeHRMbDZiWFJKMGRydmlVaVcxV0VqUFNDYzFOWTNrNUdUME9vR29hSmxpUlF2aDVXbks5TmhpWXBOSlNFeFhlOWJTclZyQndLWlZRZVZNYjAxV3ZUVm5idTN4Y28rOURUeitNRjBJNFVjdnUveDk2TWdsYXRmSW5VMjFZdmtpNlBVaUI0OWNjbm4vUVBoRnFsVEt6RHVjdmVENlZEdCs4bStxVlZZSklZZU0yc0Q1aTFGMGVlTnBWaTNwd2Y2ZlB1TFU2UnNjUDVtVFE2cDJqZEtZelFiMkhqaXZ2YmZ2MEFWRVVlRHBiRjZqRzI0QVRKbzRudkFqNFRSdi9qekRoby9rMEtHRExnL2QzTEJ2MzE3MjdON044QkVmdXdnV1ZhaFFnYVNrSkg3WnMxdkx0MzIvNlR1WFk4K2ZQOGZHamQ4VWFHeFAxcWlCMVdyRlpESWhTUklIRCt5blppMVZ5N1JXcmRyYU9JLys5aHRCUWVVd21VemwrL1R0MTV4c1JZVHNYcHZzOU5yVVFrSm1sZFNtQ2k5Yk1qSklUMWR6YlNrcEtjVEVKaE41MDlWcjA4Y25xQ3NNVWgzZW1zVmlVOWRzT1VOUW04TmJrMXk5dGQvMkRQZlI2Y1MzSDdxY3hJWmZlYWIrNHp6ZnRDb3JWaDNnNU9ucnJGclNJOWQ5Zlh3ODZOZXJHWU5HcnNmYnkwU2xDa1ZaL3VWK0RvWmZZdXJXRDdYOS9qaHpnNFhMOS9EdTI4RWMvdlV2NWl6YXhkSTVYUnhHTDVJK0g2NWhYdGliQlBoN3NXTFZBYnk5VFpwaFhQdk5FZUlUMG5pdlJ6QmVYaVo2ZEdsTTM4RnI4Zkh4d0dqUTB6djBTN3AzZWdaL1B5LzNYZXhHRG5UdTNKV3dzQ21zWGIwS1daWVpPT2dqUkZGMEtSNGtKaWJ5V3NkWHFQUFVVd3dkTm9LNXMyZVNrWkZCbi9jeVU5OXo1eS9DeDhlSFNWT21NZlBUNlN4YXVBQlBUMDhHWmhOU1BuYjBLQnMycktkOSt3NjNIRnZac2tHMGI5K0JkM3YxUkVIaDJXZURxVmV2UGdEdjkrbkg1RWtUV1BmMVY1ak5ab1lNR3c2QW43OS9oL2F2ZE5pK2NjTTNOc0RxTUc1MlZHVXJsVzFYYmRwMTVOcFVyeTFybGRSaXRXcTliVG9SNGhNa29xS1RLVjdVVjR1U2hGbVRYK1ZHUkR4Uk1jbkV4NmVTbUt3dWVrOU5zMnBMcVRJc2ttQzFTdGp0aWlESmlxZ29pTmJvK2YxME9qSHNZYm9Jbm00K21TZXFsdURDWDlFY09uS0pHdFZMTVgxOFI1NTlSbTJwcU50a0lpKzNxY25Jajlwb3gxaXRka2FPLzQ0dnZqcEVRbUk2dFo0c3pmaVJiZmxmc01yOTlPSEk5Wnc1RjRHZnJ5Yy8vM0lXblU1a2FHZ3IrcnpUQkZEYlBRWU0vWXJ0dTg2UW5KSkJuWnBsbURhMkE0MmVWbVhRT25aZHhPV3JzZnk2ZTdnam4yWWpkTmpYclBubUNLSWcwTEZkSFdaUGVRTVBENFA3TG42RXNlZDQ1ZitrNmxwdWlJK1BuMWpqaWFyZkF5bEFLcEFtQ0lJRlZkM0s3bEMxa25VNm5XSXdHakVaVFlxSGh3a1BzeGxQc3lkZTNsNzQrQlRDdDdBdm9nZ05hMG1VRDNxTWFsVktVRDVJcFRVU3hvOTh5WFVabGNON1MwMnprcDVoSlNQREpsaXNFamFiSWtpU0xNZ3lZdWZYNitrL1c5RGpNUERrdzJiWVdqV3Z6dWloTHoyeU40aWlnQ0M0di92RE1tY0YvZXhIeWJBcGl2SkhvNFlOM3YvNzc2c3BEdU9XSmdoQ09tQkJsZXlUUkZHVVJWRlVEQWFEb2hKUGVpZ2VIaDZZUGMxNGVucmg3ZTFONFVLRkVRU0Zlay9LbENubFQ2VUt4YWo1UkdrOFBBem9VeHk1dFl3TUcxWkwxdFVGV1JhNVordGJXenFuVzVlSHphaGxoK0RiKzEvM2cwZWVtMGJSSXJlL3JFWlM5RnlPcWt4OGtoNUpGc2xJZnpSVnFqek1ablNpZ244aE8wRkZ6aUlLZWJmUXlBcGNpYWxNYklJSlNkYmRzemxUeHlRVFdOaEMyY2ZPM3RMSVhiOTI3Vkg0cWFvdldMajQyUmZidE5ycHlMWFpGRVd4Z1dBWEJMV1FJTXV5QUNnMm15M1RJT0pZNlNTckt4VThUQ2ExdVRsRklqRXBrOW9vcUV3Zyt0UTBpNE81STF0dVRaS1JKRm1RSk1XeHlrQjlvU0RxOWJvdUQvMVRJV0hSSTNFenA5djkrUDFDS2ZRR0Qzd0t1M1ZGVTFOVGlFOU9JaWFoS2pVZnY0cEpuNWlyVWZ2MTNCUG85T2I3TW1lcHFTbkVKaWNSRmY4RTlTcWR5dGU0bFN6MWFCRGpGQzlSb2czd2k4T3dXUUc5SUtESDBkZUdxbXdscU12UUJRVUVRUlFFUlJUVmJnUlJwOE5pdFNLZ2tKb21rWnljUVh4Q0dqRXh5WlFxNFllWW5tNVR2VFdyU3lNdWRydUVKTWxxSmRSQm5xU0FrSFp6Ym11ZzhjTTRXWWQyREgza3d0REl1Q0xvRFI3L0tWYUlmd0l2TDIrS0ZpdUJUdTlCUkZ6dWlsK1hvNnVoMDV2djI1eGxqc25NbFpqS3VBR2lLRGJjcy9kQUxUSkpLQTJLb3VoUUs2U3FOVk1VRkVWV0s2U3lNNHJNdXBaVWxTUklUN2VSa3BwQllsSWFzZkdwUkVZbElhWnJQR3RxejVyTkxtR1hIRWJOR1lKbU1uZ0lSb1B1VGZmUDh2QWdOdEgwbjJTRitLZnc5aWxFVEtJcDEyMXhpZm9ITW1mZVBvV0lTVEM1Znh3SFNwY3VuYjMxdzhuOG9YT3lmamhvalpBbHRmM0Q3bGdrYjdmWnNEcGFRTkl6cktTbVdVbE95U0FoSVkyWTJHVDBGa3NtZWFUV3M2Ym0xZ1MxYjAxeFdFNkVoQ3N6bnhRRTRkWGJDZ2tmNFdUMnZaNGZTZFloeVRxM3A1YUhsNVFZSDRzc2d5aTZ6dmVEbWpOMVRIRjM5SnNuSlNaeSthK0xwT2Fqb2V2bDVVMVF1Y2NwVkxqd1hSbnZ2VDZud1dCb3UvYXI5Vis5OFhySEMyUlNoK3NGUWJBN3dsRlpsZXhUQkVtU0ZVbVNCTWt1S1U2dnpXNnpBUW9XaTB4NnVwWFVWQXVKeWVuRXhhV2lWM05yV1pkTnlRNXZUVmFMQmdvNCtkYTh2RXl2RjJUQS96R0s0M3Y3RlBjRW5VNmlpRzlDdmxUSHVVRW5Tbzlzb2FBZ1NFOVBkekZxb0JxVUJ6bG42ZWxwZC9RZysrdlNCZExTVXZQZEp6VTFoY3QvWGFSR3JUcDNaYXozNDV5MTY5UitEcmlhSmRkbWRYaHRrcUtvdVRaRmtSVlZ4VXB5cFRheTJ4RlFzRmdsTWl3MjFXdEx6aUErTVExOUZ2MENOYTltenl3YXlBNVhFQVZoODFkOVBFUlJlTDBnUnUwL1JuRjh6NUdhbWtKRWdsKytWTWQzaXUzYmZtTEY4bVZFUmQya1JJa1NmUDdsR3M2ZlAwZVA3aUhhUGtPSGorU0ZGOXE0ZjRpSEdMY3lNRm12cFgvVE9UMDl2ZHEwZTduOSt1KyszV2pKekxWaEV3UkVVQnk1TmtGUUZCbEpraFZKbGdTN3VrZ2V1OTJHQUZpdE1oa1dHK25wVmxKU00waEtTa2VmblVEU25pVzNsblg1VlBPbTFWNEZTdDlxb0ZrcGp0MG9lSWppNWVYTnpVaVptL0YrRlBPUHZ5dWZlK1BHRGFaTW5zaVljUk9vVjY4K1NVbEpBRlNvVUpIdE8zY0Q4RTZQYnZmc2V5MWZ0cFIyTDdjbklDQWd4N2htelpqT3laTy9ZelFhYWY1OFM5NTd2NC9HS25IdDJqWG16SnJCeVZNbk1abE10R2pSa2w2OTM4dkJPbkUzY2F0elB0ZTRJUWFEQVVFUUNRb0tvbnVQbmpScTFOaDk4ZjV6bEJyNThhZ0czMzI3Y1JmYUVpdEZEMEttUG9KS0lhNWt6YldwaStRbFFNRnFrN0ZZN0dSWWJLU2xxN2syMFJtQ1NwS2MyZUloWjdaNDRHengwT2tLdE9UL3YwcHhmRi9DMG55b2p1OEVaLzg4UTJCZ0lJMGFOY1pvTkJJWUdPZ0l4d1JNSmhNbWs4bGxMZUhkeG1jcmxoRVhGNXZqL2RHalJsS3lWQ2syZnJlWnhVdVdjK2pnQVRadCtsYjErR1dab1lNL3BGTGxLbno3M1dibXpKblBudDI3MkxqaG0zczJ6b0tlYys3OGhYeS9aU3ZkZS9Ra2JPcGtObnl6L29GY0o0SWdVS2RPSFZxMGFFSHo1czBwVWVMMm5BaEprdGkvZngvRGhuekV0Yi8vdmk4cGdiRmpSdkhXRzYvUnZWc1h6cHcrclczNysrcFZ4bzhiMDR3czFWRWM2MGVkREx1U0pBbVNKQW1LSWd1U2F0d0VwN0N5SktrUnA5VnFkL0hhTk1QbTB0NGhPU20vMVJhUCtLc3puaEFFV3Q3cUMvd1RpbU0zVk04dEw2cmoyOEh4NDhkNHVXMGJwazJkVEdSa0pDKzNiY1BMYmR1dzhyTVZCZjZNUXdjUDBQbXROMmplTEpnZTNVUDQ0OVFwbCsxN2R1OGlwR3NuWG1qMVBOMjdkZUhRd1FQYXRuNTkzK2ZsdG1wbys4R0EvcnpjdGcxOTMzOVhNeUxCd1UzcEd0SU5rOGxFa2FKRnFWdXZIdWZPbmdVZ0xpNE9QMzkvT25YdWpORm9wRlRwMGpScS9DeC8vbm5tbnMzNzdaelRiRGJUcUZGamhnMGZ5WkxGQzEwWVplOFh5cFVyaDA2blk5dTJiZXpkdTVlYU5XdGlNQmh5TmRpNS9YOUEvNzc4c21jM1o4NmNScEtsMnpwMzQ4YU4wZXYxZVQ0Z2N2dDczZGRmNGVucHllcTFYek40OEZER2p4dUQ0cmpJWjg2WXpzdnRYMm0yWnUyNjBtVFRId1YwZ2lBSW9pZzYxNDRpYXpVQVNYczVxZFdzRmpzWkdUYlMwcXlJem9LQlhTc1lPTFVNdEtLQjRPM2wwYjVnVDVJN3B6aDJRMFZLcXZDUGMyeTFhdFhtMjAxYkdCQTZrSklsUy9IdHBpMTh1MmtMSWQyNkYrajRpeGN1OFBISTRielhweTlidG03ajFkZGVaK0FIL1RYdXJpdFhMak4rM0JpR0RCbk81aDkrNHFXWDJqRml4RERTMHRTay9KeTU4L2wyMHhZQVpzeWF6YmVidGpCMy9rSUFSRkdrVStjdStQcXFudWxmZjEzaXdQNzlOR2p3TkFDQmdZSE1tVHNmRHcremRuTWNQM2FNR2pWcTNyTTV2NU56MXF2ZkFLdk5waG5rKzRuQXdFQnUzTGpoY0NaVWlpMC9QMWRQLzhpUmNFWU1HNExOWmlNdUxvNTNlblFuTGs0VkcvNTB4aXlHRFI5NVJ3NUlRRUJBbmw3K2h3TkRPWDdzcUdiTUZzeWY1N2llem11L2I5VnExVEVhalZ5N3BucUs1OCtmbzBHRHA2bFZ1MWFEWEx3MkVSQVZCVUVRQkxYdFE4bGFSSEMwZ05pemVtMTIwak9zaUhaSjFzUlpuR0dvckdTeWVLQW9naWdLTC8rVEgyTFF3RkJlNjlpZWtDNXYwYlh6bTJ6Wi9MMlcxM2l0NHl1MGIvY2kzVVB1N1dLRzdpRmR1SGp4OW5RRnR2MzBJNjkxZklVWFdyZGc5cXk4Q2Y1MjdOak82RTlHL21lTTYrYk5td2h1MHBSR2pScGpNcGxvMWZvRnFsU3R5amFIa0VkQVFDRExWM3hPdGVyVkVVV1JsOXEydzJhMTh2ZmZWd3Q4amo5T25hSkY4NmFFZE9sRWxhcFZlUzY0U2E3N0xWd3dEN09uSnkrMHVYODZRUVU1cHlBSStQdjVrNUo2LzBWNGpFWWpraVFSRUJCQTQ4YU5rV1VaazhtMVA2NXUzWHI0QndRd1p2UW5EQm80Z1BhdmRNRGYzMTg3L2w2Z1Q5LytUSnd3bnJselpyUDFoeTEwNmFvV3FCNnZVSUZmOXV4QmxtVXVYYnJFelp1UnBDU3I4L2I0NHhYWXMzc1hYbDdlemJNWk5YMm1jY3ZzYVZOa1J6anExRWVRVk1kTVZaS1hzRmh0cEdmWUVMTVlOYTFnSUN1QW8yaVFHakczR1hlQklmZWpJY05ZK2NWcTVzeGJ3T2NyVjNEcDBpV04zbmhxMktjUDVRM2VvbVVydmw2L2dXN2QzdVpSUW1Sa0pNV0x1K1p0eXBRSklqSlNaUlgyOXZibXQ5OStwWGV2SG5SNjgzVzZkZTJjYXlpU0g2by84UVRiZHV6aXEzVWJpSWlJY0ZFNGN1THpsWjl4K1BBaEprNmNuR2Y0YzdkUjBITXFpa0pjZkJ6ZUR5anRVcTVjT2FwV3JjcisvZnUxb2xCMnc5dTc5M3NjL2UxWFRFYlRQM293bU0xbU9uYnNTTWVPSFRFWURMUnIxNDZPSFR2eTJHT1B1ZXozZUlVSzZqM3oxUnA2OVg2WFFvWFVYUHVycjcyQlRxK2plN2N1ZlBINVozaDdlMlAyVkwzalFSOE81dWVmZC9KMjk2NVZ1b2FFVkhFWXM2eDVOcDJpS0NwWG0zTTFnaXdqT1VOVFdkWTZPbFN2VGNKaXNhR1hzcXd5Y0RUa09zTlFBTUZrMHJlOW16OUk0Y0srUFBGa0RTNWVPRS81OG5tVEt5WW1KakI1NGdTaW9xS3cyMjEwNnR4VlkrTThjK1kwTTJkTUp6MHRqU0pGaXpGMDJBZ3RNYjU3MTgrc1h2MGxsb3dNcWoveEpCOE0vRkRMUCt6NmVTZGpSMzlNZW5vR2ZmdjExN3lFYjlhdlU1UFhpa0xUWnYralcvY2V0L3dlUjQ2RTgrbjBhWWlDU01sU0pmRTBlMnJiOGh0RDgyYkI5Qi93QVV1WExFSlI0UHN0V3g4NncxYTBhRkVpSXlKYzNydCsvUnExYTZ1OVNudC8yY09xTDc5Z3hzelpsQ3F0RnNxZmE5d3cxNXNydTdHelpHU3dkZXNQdEc3OUFpWVBENG9YTDA3ejVzK3piOTllbC8zV3IvdWE3ZHQrWXRhY2VYZXQ0ZlJXdUoxekhqa1NqdEZnb0ZMbCs3OUV5bXExWXJmYk9YcFVEZnQwT2gwV2k4VTFwWkdTd2tjZkRhUnpseERPbmYyVEtaTW5NblRZaURzcUZxV25wN04rdlZvb2FkZXVIVC84OEFOWkY2ZG5qWEIyNy9xWjhSTW1NVDFzR2hNbVRhWlNwY3FZeldhR0Roc0JRRkpTRW0rODFvRVNKVW9DVUtwMGFUNmRNY3R4Myt4cStQbktsWDlrTld5Q0lEakNVVVhJR25xcktUTUpSUkdRSkFXN1hmWGFiRFk3Rm90ZERVVlZiMDBXSEVVRFRhaEZVUlJSRUlTN0dnTkVSMFZ4NnVUdlZLbFNOZC85enAwN3gvK2FQOCt5RlN1Wk0zY0JzMmJPd09wWUd6YnE0eEdFaGc3azh5L1g4TXd6alZpeWFJR1dyMW0vZmgxejVzeG41UmVyQWZoaHkyYnRNMzE4ZkZqNXhXcEdqeG5IL1BsekFaVlliL1BtVFN4Y3RKUWx5ejdqdDk5K1k5ZlBPL01kbThWaVljSzRNWXdhUFpZdlY2K2xUT215MnJaYmpjRnV0eE1WRmNXNmI3NWwvVGNiSDVqeGNuWnZBeWl5ak4xdTE0eFFteGRmWXMrZVhZU0hIOFp1dC9Qenp6djU0OVJKV3JSVTYwZXhzYkVJQW9nNkhZbUpDYXhlOWFYamMxeXJIc1ZMbE9EUXdZUFliRGFpbzFSSlFxUEp4QmVmcjJUdDJ0WFliRFlTRXVMWnUvY1hhdFNva1JrS2Y3K0piemR1WU9ic3VWcjRkTS9EN3dLZTAyS3hjUGpRUVNaUG1rRHZkOS9IeSt2K0U0UkdSMGRyQnNwb05PTHI2MHRDZ3F2SzJjV0xGd2dPYnNwYm5Ub3o4cFBSR0kwbUxjZDJyM0R5NUVrK25UR0w1NEtiTU9MalQvanQxeU11MjVPU2twZzJkVEl2dnRRMlJ6ajg5OTlYV2JaMGNiTXNJYWhXUkhCNGJLSWdDQzdMckZRYU5kbFJJM0ROdGVuVlNxaXNlV3V5eW1FcEFFSjY1THpXUU1tNzhhV25oMDNGN0dIR2FETFNwMjkvU3BjcGsrLytOV3ZXWXZteUpXemI5aU02blI2TEpZUGs1R1FTNHVQeDl2YWhhclhxQUx6VXRoMU5telVENFBEaFExejcreXJ2OW41SGU3SjVlL3RrNWgwYzdKNVZxMVhURXVIaDRZZDQvdm1XbU0ycWEvemlpeThSSG42WXBzMytsK2ZZcmw2OXdtT1BGZEdNYzVWcTFkajN5NTRDalFHZ2EwaTNlNWJuS0FpeU4raE9tVHlSS1pNbjhueUxsbno4eVdncVZxekVxREhqV0RCL0xwRVJFWlFwVzVhcFlaOXFNbTJ0WDJqRHFWTW42ZEc5S3pxZG5uWXZ0NmRpeFVyRXhidmVPQU1IZmtqWXRLbXNXTDZVTW1YS3NIVDVTb3hHSTFPbWhqRjN6aXkrV3JzR2c4RkFjSk9taERqQ2ZVbVNtRFpWRFFQZmZOMjF3K2p6TDFkVHJGanh1ejRmQlQxbnZ6N3ZJd2dxYyt5Z0R3ZmZ0VDQyUlFGdno0S1h3aTlmdm95dnJ5L05temNINFBqeDQxaXQxaHozdzYyQXVRQUFJQUJKUkVGVVQ4MmFLazIzWHE5blVEYW0zRHZGZDk5OWwzY3VQY3M1YXRXcVRhMWF0YlcvRnk5YXdPNWR1L2hmOCtkekZMSDY5M3VmbE9RVVFycS9YV0wwMlBGUE5ubXUwYS9aOG13MlFiWGt6bkJVVVlzSU1vS2dlbXlTbzFiZ3pMWHBKYWZ5bEhQNWxKcGJBeENNUmwzcnUzWHhEUHB3c0VZYlhCQ3NYYk1LdTgzT2xLblRFUVJCYXg5d2hqaE9HQXdHL1B6VUo2ek5haU80U1ZOTmJpeS94Ry9XRUNtcmR5NElnbGFLemkrL2tsZXphRUhHSUdaZjUzT1AwTEpWYTFxMnl2a1RWcXhZaVYvMkhjejMyRWFOR3VkNTQ1cE1Ka1orUE1ybHZYZDY1ZVMvcTkvZ2FiNWV2eUhIK3hVcVZtVG03TG01ZnJaT3AyUFAzZ1AzMWRBWDVKeTNtcTkvQWtFQXZjNU9hbXBLZ1NxVmlxSnc3Tml4ZjN6ZVZXdSt1bTl6M0t2M2UvVHFuYnVtK3V3NTg3T21LdW9CeDdPRm83cHM0YWlneUxJaVNYWkVRVVNTQk1maWdreXZUWlNkWWFpakdxcVN1V2xoYUdzZUVLS2pZL0QyOFVZUUJJNGZQMFpTVWhLS29sQzZUQm1TazVNNWYvNGNBRC85dUZVVGNxMVh2ejQvNzl6SjlldXFXT3pPblRzNGVmTDNmTTlUdDI1OXRtL2JSbnA2T2phYmpSKzJiS2Erb3pTZEY4cVdEU0k2T2xvcnVVZmN5SlQzdTVNeC9KTW52VGxMYnMrTjdFbHZ6eHc5Z1E5NnpuSWJFMEFSM3dSU2svTVd6ZmIwTEZqSVc5RDk3dVpuM2Mxem1qdzhtbVR6MXB3OWJhTGo1U0RsVUFSSmtoQUV1eUE3bzg0c1hwdGVDME1WQlNWTEdKb1dNYmZwM1FwRDgwSitnaFN2dmZZNlk4ZU00b2N0VzZoY3BRb1ZLbFlrTVNHQndNQkF4b3diejZkaDA3QllMQVErRnNpUW9XcGlza3FWcXZUclA0Q2hnei9FWnJkUkxxZ2NnNGNPeTNjTVQ5V3RTOHRXclhtM2wxb3dlUGE1SmpSdDJreExoaTVkc3BpVTFCUmtTV0xmM3IxMDZSckNTMjNiTVhUNENFWU1HNEtmdno5NnZVNHJIdHpKR1A3SmsxNFU1UUkvNlI4bHBLWWtJNHB5anA1QWRjNmtCekpucVNuSjZFUXAxejdGWXY1eDNJajFKeXBTd2N2SEw4Zll5cFd2Y010RjZaNmVYcFFyWCtHdWpmZEJuQk1vc1gzSHJzclBOMjk2Z2l3MFJrNmpwaG8yQkZtV0hlNGJTTEtnZFhZNEs2UkNrVUF6RnF0ZHNGcGw3SklpeUtwWWk4NFdzMkNTS0FvZjNPNm9IaVh1OW51QmkrZi9KTGhXd1pzK0wwZFZKamE1a0h0dGJqYmNqTHhCUUtFa2doN0xPWmVYb3lzVG0zVC81eXkvTVRtOXlhajRRa1RHQjJDVGpLUStvc1F0NmVucFMxdTNicjBLVlE4aEdWWHdKZDBoK0dJVEJDUlJGR1NEWGxDTVJoR1RVYStZUFF5WXpRWTh6U2E4dkV6b25XR29rb1hKUTFFVVVSU0Y1dmM2Q2VwR1RuaDdLcmZGMTFVbThEeFI4ZFc1R1hrRGJ4ODNOWGhxU2pJcEtjblliUm1VQ1RpWGV5b2g4Q3hSY1UvZXR6bHpqa215cDFNMjhHeStIbmhSL3lTSytpYzk0cUk4U2tQZ3F5emhxTTdCOXFGV1J4RWNDK05CbGhWRlZwdDJGVWxTMUFxcFhVS2ZyU2tYQllTNHl6T3FjUWRpTGJlYkJIVWo1dzJnMTlsdjY0SVdSWm02bGM1d09ib3ljWWxXRXVMaXlNaDROQi8xWnJNbm9pZ1RVTmhHMmNmT0lRcEtudGRwdlVvbnVSSlRtWmdFeXoyZE03UFpFNTBvRWVCcm9XemcyUUwvdG84eU9hc2dDTlczcnU5YnZIWEh1WDlweGsxQmgrRElzWUVnS0tyTmttWFViZzVIWmRUNTBxdlUzOW5XaG5wN05MblRRUlh4VFNBaUljRnQyTzRBS1NtSmxQUzdmY29pVWJCVHZzZ2ZsQy9pbHQrN0hjTVI5TmhaZ2g1N09PVDMzSERGVTdXQ3FnRi9PdzJiQWpvaGF3RkJ6YlVwaXFOTlRYS3NSbkQwdHlFNnZEVUJiVzBvZ2s0VW43dlRBUlh6ajBPUkVvaTZlWTIwQjdDTzd0K0l0TlFVb2lLdWdwUklVYjkveHNYMmFEL3BINzQ1Y3h1MU80T3ZyMmN0MUtLQm5zd0NnaXIwb3RHcEtZS3NJRGk4TmtHV2xTd2VtNU9leU9HeERlclhUQ2NJQlArVEgvS3BTcGU0R2UvRHpmZ0FraE9OcEtTNmY2aTg0TzBGQnAyVlVvRnhGUEZOY2srSUcyNEFCcjJ1WWMzcXhRd24vb2pVWndsSFJRUkVCVVVBUVZBVXh4SXJ4Ykc0d0VHN0pza3lncGRaSjlqc2lpQ3AxVkF4K2Zyc3BwNW00NC91cVhYRERUY2VKSTZldU5MbnFlQ0pwOGhTSFJVRTBnR3JJQWcyUVVEV2FkVlJIUjRtdmVMaFljQnNOcUszUzFrV3ZpdUtjRE1xc2VIOTZveDN3dzAzM01qVGF6UG9LZ04vWmcxRkZRVlJFRkE3T0JDUVpRVzdCSUpOUmhEc2FzZ29nT0RoNFNIYTdYWkJVUlJSVVJTZDNXN2ZKQWpDOCs1cGRjTU5OeDRrN0hiN2JvUEJNREdMeDVZaUNFSXFZQkVFd1NvSWdpUUlncXpYNnhXajBhZzQ2TzRWczltTTZGd1hxU2lLOE9xcnIrb0VRV2pvbmxJMzNIRGpRVU92MTljdFc3WnMxc0tCVmtCd09HS3VWRVpaWG9MUmFCUWxTUklWUmRFbEppWTI5UGIyM3VXZVVqZmN1UDlRRklYSXlFaHUzb3hDa2lSU1VwSWYrVGs1ZGVwVTc3NTkrNTUxZW15T1Y3b2dDRmJBN3ZUYWREcWRvdGZyTVJnTWlzbGtRcCtWeWNMRHc2T3UrL0p5dzQwSFk5U09IVHVHZ3FDdGhuRHI4WUt2LzJQbGdRdGthZnR3a0U5cWpUU0NJQ0FJQXFLb1E2L1hvOWNiTWhlV0FvSk9wM3ZxMy9qbFEwTkRhZFdxVllIMlRVbEpRUkFFZHUvZWZjZm5xMVdyRnBNblQ3N1R2QUdob2FFVUtWS0V3b1VMMDd0M2IwMEV4WTFIRjVHUmtTZ0lGQzFXd3QzY25nVStQajZWczRXaG9wTjRNcXZ0VWhtSlpMV2ZUWkhWSEp0em5hZ2dDSFhjVTNsdk1XellNRFp0MnNTNmRldll0R2tUTzNmdXBGKy9mdTZKZWNRUkZSWHQxdVBOQlFhRDRRbHk1dGl5R1RVRmxXNU5RVkZrRkZuV2R1RDgrZk5GZ0VydXFieDNTRTFOWmQ2OGVZU0ZoUkVjSEV4d2NEQ0xGeTltNWNxVnhNVEV1Q2ZvRVlZa1NYZmtxWjA1L1FjRFEvdmY4L0dkT1hPYXNHbFQyTzVRS25OaTQ4WnZDT255RmlGZE83a0k4a1JIUnpQd2d3R0VkTzFFM3o3dmNmWHFGVzNiaVJQSDZmbDJON3FGZEdiMEp5UHoxV1lWQktIQ3lJOUhlZWRqM0FBRUhBc05uTTI2enFxb1VLSkVpU2YvS3hmSmQ5OTlSLzM2OVRHYnpYaDVlZEc4ZVhQT25YTmxldmpsbDErb1ZxMGFIaDRlTkd2V2pMLysra3ZiSnNzeVk4ZU9wWFRwMG5oN2U5T29VU1AyNzkrZjY3bWlvNk41NVpWWDhQUHp3OXZibXhkZWVJRUxGeTVvMndNREEvbndRNVZOOTlpeFk2U25weE1jbkxtdzQ5bG5ud1hnNE1HRDdydjdFVVp5OHAydE9xbGNwU3FqeG95OXAyT2JQMjh1eTVZdTRkTEZpeTVHNk9yVksyeFl2NTRGaTVheWJQbEtUcHc0eHBFajRZNWo1dENzMmY5WStma3F1blYvbXltVEptcXBtRWtUeGpIeWsxRjh0dkpMU3BVdW8ybG01SVZubndzdTRUQmtMb1NUanJCVVc0R2dLbGlwWHB2bTBoa01oditFWWZ2OTk5OTU1WlZYNk55NU0yZk9uR0hIamgzY3ZIbFRNeTVPekpvMWkwbVRKbkg4K0hHOHZiMXAxcXlacHJ3emNlSkVsaXhad3BJbFN6aDU4aVFkT25TZ2VmUG1uTTFGSERjME5CU0x4VUo0ZURqSGpoMURsbVZDUWpMMUJBWU5HcVJ4MDErL2ZoMmowVWhBUUVCV1Y1dUFnQUN1WGJ2bXZydmR5SUhZMkZnR0RRd2xwTXRiZEF2cHpPRkQ2Z1BRcWNuYm9YMWJRdnU3cGpLR0RmbEk5YUs2dkVXN2wxN2d6VGRlMWJaZHZIaVIwUDU5NmQ2dEM0TStHTURObTVFdXg2NzcraXVYL1FGNnZ0T0xzT2t6S1AvNDQ2NzMyb2tUUEZXM0xwNmVLc21xbjY4Zko0NGYxN3l5NTU1VEgrQ0ZDeGZtenovUFlMVmFpWXlJd01Oc0ppaW9IQUQrL3Y2Y09KNC96WG54WXNYS1pERnFqanhiMW5CVXlReEoxVHdiZWxCNzJIUTZYZlgvd29XZ0tBcWZmdm9wL2Z1cjdubFFVQkFoSVNFc1dMREFaYjlQUHZtRWR1M2FBYkJpeFFwS2xTckY1czJiZWVtbGw1ZzhlVExMbHkvWENoSURCdzVrMTY1ZHpKdzVNOGZuWEw1OG1kS2xTMU95WkVrOFBUMVp2bnk1aTVFYU5peVRQVGN0TFEwUEQ0OGNZemFaVERuazA5eHdBK0NydGF1cFVhTUdJZDNlNXRLbFM4eWZONGNHVHpmVU5IblBuei9IeFBIalhJNlpOR1Vhb0VwWTluNm5oNmEvWWJWYW1UaCtMT01uVHFaNDhlTDg5T05XRnN5ZngrZ3htY2ZYckZVcmg1NUhYc0pEaVltSmVIaDRFQjBkemFRSjQ1QmtDUjlIbmpBeE1SR1Rod2ZmYi9xT0hUdTJZVFFhU1VsSklTa3BDWlBKaE5WcVplNmNXZHk0Y1NPSHdsWjJlSGw3bDh0aTFCd0dUaEVkRkFPT1hqYWN0UUpGVVJSQjcyeHlFd1RoUDJIWWF0YXNTVUJBQU5PblQrZk1tVE9jUFh1V1gzLzlsYUpGWFl2bmpSdG5DcFVFQkFSUXZueDUvdmpqRDU1ODhrbFNVMVBwMXEwYmI3K2RLWlJzdFZwZGpuRml5SkFodlBubW13UUdCdEswYVZOZWZQRkZ1bmJ0bXV2WXpHWnpEalVoVUNYZEhvU01teHNQUCtyVmI4Q2NXVE1BZ2ZyMUd4QTJmVWFCanBObG1UR2pSOUhteGJiVXI5OEFVS1VocjEzN20rRkRCNnY3S0RKZTJmUUtLbFdxVEtWS0JkZEtQWDM2RDQ2TkdFcm9CNE00KytlZlhNeVNocGswWVJ3QmdZR0VUWi9KcXgxZWRqR0lBejhZd0lzdnZrU0hqcTh5WXRqUWZNOWhNQmdxWk11dDVjeXhvYUNBVmtEUVoyNmc2bi9oUWpoNDhDRE5taldqU1pNbU5HM2FsTmRlZTQzdzhIQ1dMbDJhNzFOSXI5ZGpOQm8xcmMwMWE5WlF2YnFycmMvTjIycmJ0aTNYcjEvbisrKy81OGNmZjJUNDhPSE1ueitmdzRjUGF5NjZFNlZLbFNJakk0T0VoQVI4ZlgwQnNObHN4TWJHVXJKa1NmZGQ3RVpPdzFhdlBuUG5MU1Q4U0RpZnIxeUIwV2hrekxnSnR6eHUyZExGZUhoNDBMbEw1a1BXWnJOUnJGZ3hWcXo4NHE2TXJYRGh3bVJrWkJBMmZTYUZDaFhpeEluakZIWmMxNFVMRithWlJvMDFrWE5WaHRLYlFvVUtrWlNZeUlTSlUzajg4Y2M1ZS9aUDdWN0lDNElnVk02U1c4dWFaOHRlUUZDY0JRUVJFS0tpb2lvQnB2L0NoYkJnd1FMcTE2L1AxcTFiR1R4NE1DMWF0T0RHalJzNUpQV3k1c3VTazVPNWVQRWkxYXRYcDN6NThwaE1KaTVjdUVDRkNoVzAxNkpGaTlpeVpVdXVIdHY1OCtmcDBxVUxxMWF0WXYvKy9adzZkWXJqamx4RFZ0U3VYUnV6MmN6ZXZabXE1L3YyN1VNVVJaNSsrbW4zWGV4R0RreWFPSjd3SStFMGIvNDh3NGFQNU5DaGd5N1NrYmxoMzc2OTdObTltK0VqUG5hUnFxeFFvUUpKU1VuOHNtZTNsbS83ZnBPclR1ajU4K2ZZdVBHYkFvM3R5Um8xc0ZxdG1Fd21KRW5pNElIOTFLeWxhcG5XcWxWYkcrZlIzMzRqS0tnY1JxT1JZc1dMVTlqWEY1UERzZGkzZDY5MlRENHdMVjY2UERBWGc2YjFzQUZaUERaSGpzM2IyN3ZDZitWQzhQZjNaK2ZPblp3OGVaS1NKVXV5YnQwNmxpMWJocCtmbjh0KzQ4ZVBwM0hqeHZqNitoSWFHa3JGaWhWcDNibzFvaWd5Y09CQXhvNGRTN0ZpeFdqWXNDSHIxNjlueG93WmJOKytQY2Y1enA0OVM1OCtmWmczYng0QkFRR3NXTEVDYjI5dnFsUlJCVzBtVFpwRTdkcTFhZFdxRlY1ZVh2VG8wWU8rZmZ2aTQrT0QwV2lrZCsvZWRPL2UvYjRwbnJ2eDcwTG56bDBKQzV2QzJ0V3JrR1daZ1lNK1FoVEZmQlhlNXM2ZVNVWkdCbjNlNjZWOXp0ejVpL0R4OFdIU2xHbk0vSFE2aXhZdXdOUFRrNEhaaEpTUEhUM0toZzNyYWQrK3d5M0hWclpzRU8zYmQrRGRYajFSVUhqMjJXQk5PL2o5UHYyWVBHa0M2NzcrQ3JQWnpKQmh3N1hJYVBpSWp4azNialEycTQzU3BVc3plT2p3VzU2clFvV0tqd0hYYy9mWUhEb2hHcmVrZ2lDS29vZkZZaG1nMStzbi8xdC8vTkRRVVA3ODgwOSsvUEZIWW1OajZkbXpKenQzN3NSZ01QRFVVMC94eGh0djBMTm5UNjVldllxdnJ5OCtQajVNblRxVmxTdFg4dmZmZjlPb1VTTVdMbHhJR1ljNnZjMW1ZOHlZTVh6MjJXZkV4TVJRdVhKbFB2bmtFenAwNk9CNEd0WGlqVGZlWU9qUW9VUkhSek5nd0FDMmI5OU9jbkl5ZGVyVVlkcTBhVFJxMUFoUTJ6MjZkZXRHV0ZpWWxrOExEUTFselpvMWlLSkl4NDRkbVQxN2RxNWhyaHVQRHZiczJlTldkOHNIY2JHeFlUVnJWTitPdW1iVStVb1RCQ0VEVlNsZUVrVlJYVE5xTUNpQ0lBaG11OTArVXhURlh1N3BjOE1OdDJGN0dKR1JucjY2WW9WeVgyUXpiS2xaREp0ZEVFUlpweE1WdmNHZzZCM0p1YUIvNnhlZU4yOGVmZnYyL1UvOGVKR1JrVG1xdHdXQkxNdGN2bktWdUxnNEpFa2lJLzNSWEh2cVlUYWowK253OXdzZ0tLZ00rUkdtS29yaW1MTlk3UFo3TjJjZVpqTjZ2WjRBL3dDQ2dzcmVjdi9yN243R1hDRkpVbkVjVGJsWlg0cWlwaEhWN2c0WldRYkpMaUVJZ3VBcHkvSlJvTEo3K3Y1OXNGaXNuRGh4QXAxZTc5WVZCVkpUVTBoSlRrS1M3TlNxV1F1ajBaQ3JVZnYxMTk4UWRicjdveXZxR0pNc1M5U3JXOWZ0c2QwQkZFVTVYNlpVOFEvSUpKMTBFazg2cWNMdGpuQlUwZXYxaXJPNlVOWTlkZjlPUkVSR29OUHIzYXdRRG5oNWVWTzBXQWwwT2owM0ltN2t1czlmbDY4ZzZuVDNiYzZjWXhKRkhWZXVYSFZmdEhjQVFSQktaL1BZc3YvZnBWbFhQSC8rZkZIQW5ibitseUkySnRiTkNwRUx2SDBLRVJNVG0rdTJ1TGk0QnpKbjNqNkZpSWwxa3gzY2FWVC95ZWd4M3VUWjh1SFViUUZRMEFjRUJCUjN6OW0vMVQyL2MxYUlSOEZ6UzB5SXkzWGJnNW96THk5dkV1UGo3dWpZcE1SRUx2OTFrZFI4dEhxOXZMd0pLdmM0aFFvWGZtRHpmaS9IV2JWS3RVSkFUQzdlbXZPT3dObjZvVGVaVEVYdi9nM25wamd1S0h4OENxSFRpUlFwVW9UaXhXL3ZHU01Ja0o3dUpxbk1DK2w1RUhnK3lPTEtuZjVlZjEyNlFGcGEvZ0s5cWFrcFhQN3JJalZxUFRoYXhYczV6c2VLRkNtVTNWdHpGQThFMTNCVVVmUTZuZTZ1R2pZM3hmSHRJelUxaFJzUmtkeUlpT0NwT25mM290eSs3U2RXTEY5R1ZOUk5TcFFvd2VkZnJ1SDgrWFAwNko3SlFESjArRWhlZUtHTis0ZDRpSEVyWTVIMVd2cXZqck5Rb1VLRnNoZ3daM091NEZnTW56V1NFZlNpS0Q1Mk43OVlWb3BqTndvZW9uaDVlUk4xTTRMSXlFaUtGU3QyVno3M3hvMGJUSms4a1RIakpsQ3ZYbjJTa2xUT3J3b1ZLcko5NTI0QTN1blI3WjU5citYTGx0THU1Zll1TkUzT2NjMmFNWjJUSjMvSGFEVFMvUG1XdlBkK0g0MVY0dHExYTh5Wk5ZT1RwMDVpTXBsbzBhSWx2WHEvbDROMTRtN2lWdWQ4cm5GRERBWURnaUFTRkJSRTl4NDlhZFNvc2Z2aXZZOHdtejBLdVJxMUhDL0gwa2tGVVJURmdMdDVjamZGOFQ4d2NONCszTHg1ODY1OTN0ay96eEFZR0VpalJvMHhHbzBFQmdZNlFsZ0Jod2FqeTFyQ3U0M1BWaXdqTGk1bkFuLzBxSkdVTEZXS2pkOXRadkdTNVJ3NmVJQk5tNzRGMUo2OG9ZTS9wRkxsS256NzNXYm16Sm5QbnQyNzJMamhtM3Myem9LZWMrNzhoWHkvWlN2ZGUvUWtiT3BrTm55ei9vRmNKNElnVUtkT0hWcTBhRUh6NXMwcFVlTDJuSWlEQi9ZVDByVVRyNy82Q2pNK0RkUFdkTnBzTnNLbVRTR2t5MXQwRCtuQ3ZuMlphNXJ6WThTOWQ1Rk1LcHUrKzVhaGcxWGFKWVBCbU4xakUzRVVEckpHakZhckZWRVFoTHU2U05HZHpQNW5ucHRka3Y3eDV4dy9mb3lYMjdaaDJ0VEpSRVpHOG5MYk5yemN0ZzByUDF0UjRNODRkUEFBbmQ5NmcrYk5ndW5SUFlRL1RwMXkyYjVuOXk1Q3VuYmloVmJQMDcxYkZ3NGRQS0J0NjlmM2ZWNXVxNGEySHd6b3o4dHQyOUQzL1hjMUl4SWMzSlN1SWQwd21Vd1VLVnFVdXZYcWNjNUJTaEFYRjRlZnZ6K2RPbmZHYURSU3FuUnBHalYrbGovL1BIUFA1djEyem1rMm0yblVxREhEaG85a3llS0YrZEphM3l1VUsxY09uVTdIdG0zYjJMdDNMelZyMXNSZ01PUnFzTFAvUHlNam5hbFRKakZ4MGxSV3IxMUhURXdNMjM3NkVZQ3RQMndoSXlPRGxWK3NadnFNV2N5ZSthbm01ZWZGaUZzUVBQSEVFOXBETmI4eFp2MDdKaWFHZDNwMDU4S0Y4OXJ2b05mckMrWGhxV2t2V1piUjYvV0lnTi9kblBRN3BUaDJRMFZLOGo4dnROU3FWWnR2TjIxaFFPaEFTcFlzeGJlYnR2RHRwaTJFZE90ZW9PTXZYcmpBeHlPSDgxNmZ2bXpadW8xWFgzdWRnUi8wSjhyaFRWNjVjcG54NDhZd1pNaHdOdi93RXkrOTFJNFJJNFpwYWx0ejVzN24yMDBxRThxTVdiUDVkdE1XNXM1ZkNJQW9pblRxM0FWZlgvV3krK3V2U3h6WXY1OEdEVlIyazhEQVFPYk1uWStIaDFtNzBJOGZPMGFOR2pYdjJaemZ5VG5yMVcrQTFXYlREUEw5UkdCZ0lEZHUzTkE4RkZtV2M1QThIRGtTem9oaFE3RFpiTVRGeGZGT2orN0V4Y1VSRVJHQnI2OGZKVXVXUktmVDBhcFZhdzRmUGdTb3JMZlBQdnVjNDNjU01CaU1uRHQzVnR1V0d5TnVBWE5qZVpKVkxsdTZXS01HUDNueWR3YjBWMWNSK2ZyNjhzV3FOWVIweStSRTFPbDB1WVdpdUlhaHFrY3JBdmM4Ymh3ME1KVFhPcllucE10YmRPMzhKbHMyZjYvbE5WN3IrQXJ0MjcxSTk1QXU5M1FNM1VPNmNQSGl4ZHM2WnR0UFAvSmF4MWQ0b1hVTFpzL0ttK0J2eDQ3dGpQNWs1SC9HdUc3ZXZJbmdKazFwMUtneEpwT0pWcTFmb0VyVnFteHpDSGtFQkFTeWZNWG5WS3RlSFZFVWVhbHRPMnhXSzMvL1hmRG0wejlPbmFKRjg2YUVkT2xFbGFwVmVTNjRTYTc3TFZ3d0Q3T25KeSswZWZHK2ZmK0NuRk1RQlB6OS9FbDVBTWw2bzlHSUpFa0VCQVRRdUhGalpGbkdaSEpsSGF0YnR4NytBUUdNR2YwSmd3WU9vUDBySGZEMzk2ZFlzZUxFeGNWeTZkSWw3SFk3NGVIaHBLU28zOEhKaUh2cTFFbUdEUDRRbzhsSVltS2l0czNKaUR0M3ppeU5FZmVmNHMyM09yTnIxOC9NbVQyVGNXTkcwN2RmZjZkM2xpT25LZ2lDZHo2NU5SY2pweGNFNGI0a3hENGFNb3g2OWVxVG1KaEFyNTV2VTdXYXluMldGNzN4dzRBV0xWdlJvbVVydnY1cUxaR1JFWStNMXhnWkdVbUZDaFZkM2l0VEpraWJBMjl2YjNaczM4YjQ4V05JU1U3Sk02eklEOVdmZUlKdE8zWVJFUkhCSngrUFlQbXlwZlI4eDVXSDRmT1ZuM0g0OENIbXpKbVBYcSsvTDkrOW9PZFVGSVc0K0RpOEgxRGF4Um1PN3QrL24xcTU4SmtKZ2tEdjN1L3h4dXNkS1ZPbXJHYWt6V1l6dzRhUFpQS2s4WTdmdFN5ZVpyTjIzUGZmYnlJOVBaMUprNmN4ZSthbkxwK1pGeU51WG1qVnFoWGUzdXI4T1BPQXAwK2Y1dlRwMDlvKzN0N2V2UHZ1KzN3UTJvODMzK3BFNWNwNUx5c1RSZEU3bnpCVU0ybzJtdzA5Y0Y4NXFRc1g5dVdKSjJ0dzhjSjV5cGN2bitkK2lZa0pUSjQ0Z2Fpb0tPeDJHNTA2ZDlYWU9NK2NPYzNNR2ROSlQwdWpTTkZpREIwMlFvdmhkKy82bWRXcnY4U1NrVUgxSjU3a2c0RWZhdm1IWFQvdlpPem9qMGxQejZCdnYvNmFsL0ROK25WcThscFJhTnJzZjNUcjN1T1czK1BJa1hBK25UNE5VUkFwV2Fva251Wk10dHo4eHRDOFdURDlCM3pBMGlXTFVCVDRmc3ZXaDg2d0ZTMWFsTWdJVjBOKy9mbzFhdGRXVzFIMi9yS0hWVjkrd1l5WnN5bFZ1alNnVmcxenU3bXlHenRMUmdaYnQvNUE2OVl2WVBMd29Iang0alJ2L3J4TG9ocGcvYnF2MmI3dEoyYk5tWGZmR2s1djU1eEhqb1JqTkJpb1ZQbitMN0cyV3EzWTdYYU9IajNxRE5GeWFHYWtwS1R3MFVjRDZkd2xoSE5uLzJUSzVJa01IVFlDUVJCNHV1RXpQTjN3R1VmdWJLNUdTMSs0Y0dITVpqTmp4MDFBRkVVc0ZndUZIZk9RRnlOdWZ2anhSelYzOTh3enozRDU4bVV0ZkhaSmUxeTh5T1JKRXhnN2JnSXJsaStsVE5rZzJ1VHRLWHRsTTJKWmpKcVFOV1JGQkR6djU0OFNIUlhGcVpPL1U2Vksva3prNTg2ZDQzL05uMmZaaXBYTW1idUFXVE5uWUxWYXNWcXRqUHA0QktHaEEvbjh5elU4ODB3amxpeGFvT1ZyMXE5Zng1dzU4MW41eFdvQWZ0aXlXZnRNSHg4ZlZuNnhtdEZqeGpGLy9seEFKZGJidkhrVEN4Y3RaY215ei9qdHQ5L1k5ZlBPZk1kbXNWaVlNRzRNbzBhUDVjdlZheWxUT25PcDdhM0dZTGZiaVlxS1l0MDMzN0wrbTQwUHpIalo3WGFOQmwyUlpleDJ1MmFFMnJ6NEVudjI3Q0k4L0RCMnU1MmZmOTdKSDZkTzBxSmxTMEJWVGhJRUVIVTZFaE1UdEJ5SklydXlGQmN2VVlKREJ3OWlzOW1Jam9wU3d5aVRpUzgrWDhuYXRhdXgyV3drSk1TemQrOHYxS2hSSXpNVS9uNFQzMjdjd016WmMrOGJBV2RCejJteFdEaDg2Q0NUSjAyZzk3dnZQeEN0aXVqb2FLMmFiVFFhOGZYMXpTR0ljdkhpQllLRG0vSldwODZNL0dRMFJxT0p1RGpYVlErSER4MWt4NDV0V2c5anJWcTFzZHZ0aUtKSVFrSThGeTllcEZMRlN0cTIzQmh4L3lsKysvVUlRNGVOb0VuVFpudzZjdzZuL3ppVmcrMDZ5NFBTbk0yb1pYMkd1cFQzOVlENWZ2d1kwOE9tWXZZd1l6UVo2ZE8zUDZVZHBJNTVvV2JOV2l4ZnRvUnQyMzVFcDlOanNXU1FuSnhNUW53ODN0NCtWSzJtNmhHODFMWWRUWnMxVTMrb3c0ZTQ5dmRWM3UzOVRwYW5pazltM3NIQjdsbTFXalV0RVI0ZWZvam5uMitKMmVHT3YvamlTNFNISDZacHMvL2xPYmFyVjYvdzJHTkZOT05jcFZvMTl2MnlwMEJqQU9nYTB1MnVYQlIzaXV3TnVsTW1UMlRLNUlrODM2SWxIMzh5bW9vVkt6RnF6RGdXeko5TFpFUUVaY3FXWldyWXB4UXRxdmJYdFg2aERhZE9uYVJIOTY3b2RIcmF2ZHllaWhVckVaZHR1ZERBZ1I4U05tMnEraVF1VTRhbHkxZGlOQnFaTWpXTXVYTm04ZFhhTlJnTUJvS2JOTldTeEpJa01XM3FaUFI2UFcrKzN0RTFUUHh5TmNXSzNmMFZnQVU5Wjc4Kzd5TUlLblBzb0E4SDM5VStOaDhmbndMdmUvbnlaWHg5ZlRWWngrUEhqK2RJNU5lc1dZdWFOV3RwK2FwQldaaHk0K1BqNk5XekI2VkxsMmJpcENrOFZxU0k5cnVlTzNkT3kzZjNHeENxZWE1NU1lSVdCQWNPSE1oejIydXZ2Nkg5UHlBZ2dJOEc1eXZzNHBGUEdPcXdjQ0tTSktFSDdzc2ROdWpEd1JwdGNFR3dkczBxN0RZN1U2Wk9SeEFFclgzQWFaNmRNQmdNK1BtcFQxaWIxVVp3azZhYTNGaCtpZCtzSVZMV1ZpNUJFUEo4WW1UTnIrVFZMRnFRTWVUSEUzWTMwYkpWYTFxMmFwM2ovWW9WSy9ITHZ2d0ZtaHMxYXB6bmpXc3ltUmo1OFNpWDk5N3AxVHZIZnZVYlBNM1g2emZrZUw5Q3hZck1uRDAzMTgvVzZYVHMyWHZndmhyNmdwenpWdk4xTjhhUW1wcFNvRllwNStxZU80V2Zuei9yY29rV3NodkFyQWdNREN5d1F0YmRSRUJBZ0ZaaHo4VldDZG50Z1NDQVRxZTJlenc0MXlGZmR6c0dieDl2QkVIZytQRmpKQ1Vsb1NnS3BjdVVJVGs1bWZQblZXWDNuMzdjU3RpMEtRRFVxMStmbjNmdTVQcjE2d0RzM0xtRGt5ZC96L2M4ZGV2V1ovdTJiYVNucDJPejJmaGh5MmJxTjhoZldLVnMyU0NpbzZPMW5FRkVsdHpCbll6aG44QnM5c1NOMjV1YkJ6bG5lWjI3U0pFaXBPV3pwdHJUczJBaGIwSDN1MWU0eCtNMDV1S3BDVW8ycjgwWml1b2UxQ1RrSjBqeDJtdXZNM2JNS0g3WXNvWEtWYXBRb1dKRkVoTVNDQXdNWk15NDhYd2FOZzJMeFVMZ1k0RU1HVHBDRFFtclZLVmYvd0VNSGZ3aE5ydU5ja0hsR0R4MFdMNWplS3B1WFZxMmFzMjd2ZFNDd2JQUE5hRnBVelcwM2ZiVGp5eGRzcGlVMUJSa1NXTGYzcjEwNlJyQ1MyM2JNWFQ0Q0VZTUc0S2Z2ejk2dlU0ckh0ekpHTzdYay81UlFtcEtjcDVldGZpQTVpdzFKUmxkSHBYVzRzV0xFeEVSUWZUTkNEeTlmWEtNclZ6NUNyZGNZTzdwNlVXNThnOVdsK2tlajFPWG04ZVdXOTVOVUc0VmQ5MG1qaDQ5U3BGaWJvM01PMFZVNUhYcTNNWkMrTXVYcnhBYkYrZGVtNXNOTnlOdkVCZ1lRTmxjY3JtWHIxd2hOdmIrejluTnlCc0VCQVFRVkRidi9ISlVWQlNSa1pIWTdYYVNrOTJzT05uUnBFbVQ5a0FhS29OdUVwbWlMaFkwN1FOQnZ1dk5RVzRQNHA4OTBXKzNYNnRzMlRKRVIwY2pudHFQQUFBZ0FFbEVRVlJ4TS9LR214cmNNWWNwS2NsSWRudXVSZzBncUd4Wm9xTHUzNXc1eHlSTFVyNUd6Um1TRm5Fazg5M0lGZG5EVHNHWll4TUVRVjExSUlxQ29DaUtoTHBFNGE0Z0lpS0N5TWliUEZiVXpWOTUrOTdhRFVxVUtIN2I3QjZLb3ZEWDVTdkV4Y1VpMldVeU1oNU5qamF6MlJOUnB5TXdJSkN5WlV2ZmNvSC9sU3RYaVk2SlFiSkw5MnpPekdaUGRIcjlMVDAxTndvRVdSQ0Vqa0JxRm84dFJSQ0VWTUFpQ0lKTkVBUzdLSXFLb0NpS0ZURGM3WEJVRUhWNGVYbmo2ZmJjYm9rMGg5Z0hLTGNWaHJyaHhpTUdteUFJcjJjeGJNbEFzaUFJYVVCR1ZzT21CKzY2WWF0VHB3NDNiOTdrWmxRVXlVbUpiZ2JkZk9EdDQ0TkJyNmRVcVpMdUVNUU5OL0tIdGFBN09nM2JYYThSRnkxYTlJNDBNdDF3d3cwM0NtallsR3ovYWhDQmRQZDh1ZUdHRy84Q1pCVFlZN3R5NVlwYkRjUU5OOXg0NktFb1Nub3UzcG1pT0JSZG5KMXJpcUlvK3JKbHk2YTZwOHdOTjl4NDJDSExjbXFXMEZNemNObmJQUVJCUUZRVXhVMTU2NFliYnZ3YlBMYnN6SlpLdHY5cmYrdFJlMEhjY01PTkIzL2p1dlY0ODRIZGJrL0pZc0NVTEtHb2tqVVVsV1VadmFJb0NmZFNxY2dOTjl3b21GRno2L0htRDR2RmtweWJ4K1pxdnpKRDBiaEhiWUpLbFNwRnRXclZjaFdqOFBiMjVyUFBQcnVYVHgxQ1EwTXBVcVFJaFFzWHBuZnYzcG9JaWh1UExyTHE4YnFYSStaNTd5Umw4OWdVY21uMUFOV3d4VDZLazNUbXpCa21UWnAwMzg4N2JOZ3dObTNheExwMTY5aTBhUk03ZCs2a1g3OSs3cXYyRVlkYmovZldzRnF0U1ZrOHRWenlhNExLclNpQUtFbFN6S000U2VYS2xXUGl4SW1jT1hQbXZwMHpOVFdWZWZQbUVSWVdSbkJ3TU1IQndTeGV2SmlWSzFjU0V4UGp2bklmWWR5cEh1K1owMzh3TUxUL2ZYQUVUaE0yYlFyYkhVcGxUbXpjK0EwaFhkNGlwR3NubGk5YnFyMmZuOER5aVJQSDZmbDJON3FGZEdiMEp5TUxyTTJhbnA2V2pHdFRicmJxcU5OZkE5Rm1zOTE4RkMrazNyMTdVNzE2ZGQ1NTU1MThHWFBYcjEvUGswOCtpZGxzcG5yMTZpeGR1dFJsKzg4Ly8weWRPblV3bTgzVXExZVBzTEF3RjNIWXdNQkFQdnhRWmRNOWR1d1k2ZW5wQkFjSGE5dWZmZlpaQUE0ZVBPaSt1eDloM0trZWIrVXFWUmsxWnV3OUhkdjhlWE5adG5RSmx5NWVkREZDVjY5ZVljUDY5U3hZdEpSbHkxZHk0c1F4amh3SmR4eVR1OEN5M1c1bjBvUnhqUHhrRkordC9KSlNwY3RvbWhtM1FsSmlVbDZoYUk0VkNQcU1qSXlvVzZuTi9CZWgwK2xZc21RSkRSbzBZTkdpUmJ6NzdyczU5dG03ZHkrZE9uVmk5dXpadEdyVmlxTkhqOUs3ZDI5ME9oM2R1M2ZuNHNXTHRHblRocjU5KzdKbXpScCsrZVVYK3Zmdjd5THdNV2pRSUdyWHJnM0E5ZXZYTVJxTkJBUUVhTnNOQmdNQkFRRmN1M2JOZlhlN2tRT3hzYkZNbkRDT21PZ29CRkhrdmZmNjBPRHBoaTRrcmI2K2ZxeFkrVVZtdW1QSVI5eTRvVEk0SnlRazRPbmx4WnExNndCVkZXck9yQmtrSmlYaTcrZlA0S0hETkMwTGdIVmZmOFdHRGV1MS9RRjZ2dE1MbzlHb01WVTc4ZnVKRXp4VnR5NmVucDdZN1hiOGZQMDRjZnc0OWVyVjU4U0o0M3p3d1NEQVZXQTU2dVpOUE14bWdvTEtBZUR2NzgvUE8zY1VhQzV1UnQxTUxvQlJVd0QwRVJFUkVYbkp6Ly9YOGRSVFR4RWFHc3FRSVVObzI3YXRwbjNveElRSkUralJvd2U5ZTZ0OC9tWExsdVhTcFV0TW5UcVY3dDI3czNEaFFxcFVxY0swYWRQVXAyZmx5cHc4ZVpMVnExZTc1TlNjU0V0THc4UERJOGM0VENaVER2azBOOXdBK0dydGFtclVxRUZJdDdlNWRPa1M4K2ZOb2NIVERTbFZxbFNlbXJ5VHBxalhZMkppQXIzZjZhSHBiMWl0VmlhT0g4djRpWk1wWHJ3NFAvMjRsUVh6NXpGNlRPYnhOV3ZWeXNFOG5KZndrRk5nT1RvNm1ra1R4aUhKRWo2T1BHRldnZVVkTzdacEFzdEpTVW1ZVENhc1ZpdHo1OHppeG8wYk9SUzI4ZzY3VHp2YlBlUzhQRFZuTUNyV3JGa3ppdHRZZy9WZnc5aXhZd2tJQ0tCdjM3NDV0cDA2ZFlwbHk1Ymg3ZTJ0dlVhT0hNbUZDeGVRSkluang0OVR2NzZyUUUyalJvM3lQSmZaYk02MUVtdXhXQjZJakpzYkR6L3ExVy9BemgzYldmblpDaXdaR1FVV1ZKRmxtVEdqUjlIbXhiYlVyOThBVUtVaHIxMzdtK0ZEQjlNOXBBdXJWMytwcWJVNVVhbFNaVjdwMExIQTR6dDkrZzlHamhqS083M2ZwV2xUVjJXM1NSUEdjZm55WDRSTm4rbWlWSitZbU1qQUR3WlFyVnAxK3ZVZlVOQlRaVXdZUHpZdG4xQlVNM1NDb0Rib0Fsd0ZLajJLRjQ2bnB5Y0xGeTZrWmN1V2JOem9xdHhqdDlzWk5HZ1FiNy85ZG83alJGRkVyOWZuRUFUT0wxOVhxbFFwTWpJeVNFaEl3TmZYRjFCVnEyTmpZeWxaMGsybjdrWXVocTFlZmViT1cwajRrWEErWDdrQ285SEltSEVUYm5uY3NxV0w4ZkR3b0hPWHJ0cDdOcHVOWXNXS3VZU3Qvd1NGQ3hjbUl5T0RzT2t6S1ZTb0VDZE9IS2V3NDdyT1MyQzVVS0ZDSkNVbU1tSGlGQjUvL0hIT252MVR1eGZ5ZzZJb2YyY3pZSElXenkzbi9ha2VvMXg1bEMrZUZpMWEwTGx6Wi9yMjdhdUpDQU5VcTFhTmt5ZFBVcUZDQmUxMTRNQUJaczJhaFNBSVBQbmtreHc1Y3NUbHM3TC9uUlcxYTlmR2JEYXpkMittNnZtK2Zmc1FSWkdubjM3YWZSZTdrUU9USm80bi9FZzR6WnMvejdEaEl6bDA2R0NPaDJsMjdOdTNsejI3ZHpOOHhNY3V6YXNWS2xRZ0tTbUpYL2JzMXZKdDMyLzZ6dVhZOCtmUHNYSGpOd1VhMjVNMWFtQzFXakdaVEVpU3hNRUQrNmxaUzlVeXpVdGd1Vmp4NGhUMjljWGtDRy8zN2QyckhaTWZKRW02bnMybzVlR3RxZjBlZWtDUlpmbHlYb28randwbXpKaEIxYXBWWFhKZFE0WU1vVldyVm93ZVBacE9uVHB4K3ZScCt2ZnZ6OENCQXdIbzI3Y3ZzMmZQWnVqUW9iejk5dHNjT25TSUJRc1d1SVNWa3laTm9uYnQyclJxMVFvdkx5OTY5T2hCMzc1OThmSHh3V2cwMHJ0M2I3cDM3MzdmRk0vZCtIZWhjK2V1aElWTlllM3FWY2l5ek1CQkh5R0tZcjRLYjNObnp5UWpJNE0rNy9YU1BtZnUvRVg0K1Bnd2FjbzBabjQ2blVVTEYrRHA2Y25BYkRxaXg0NGVaY09HOWJSdjMrR1dZeXRiTm9qMjdUdndicStlS0NnOCsyeXdwaDJjbDhDeVhxOW4rSWlQR1RkdU5EYXJqZEtsU3pONDZLM0ZsMjAyVzBRdUhwdWlxdSs1ZW0yQ2dDSUlndUNka1pIUnoyZzBUbnhVTHBaU3BVb1JHaHFxdFdFNDhjVVhYOUMxYTFkV3JGaEJ0MjdkQUZpMWFoVVRKMDdrd29VTEZDdFdqSjQ5ZXpKeTVFanRTZmpUVHo4eGNPQkFMbHk0UU8zYXRXblFvQUhyMTYvWGRFVURBd1BwMXEwYllXRmhXajR0TkRTVU5XdldJSW9pSFR0MlpQYnMyYmtXRmR4NGRMQm56eDRlcjFqRlBSRjVJQ1ltNXRQYU5aLzRCVmRhOEJRbkxUZ3FiYmdraXFLczArbFZ3NWFVbE5URzI5dDdyWHY2Ymc4blQ1NGtMUzJOQmcwYWFPK05IajJhSDM3NGdmRHc4UHMyRGxtV3VYemxLbkZ4Y1VpU1JFYjZvN2xFeThOc1JxZlQ0ZThYUUZCUUdVUlJ6QzluNDVpeldPejJlemRuSG1ZemVyMmVBUDhBZ29MS3VnM2JIZUxzbjM4T2EvNi9KcWZKS2VTU0RqaWs5MFJKRkVWWnI5Y3Bla0NKajQrLytDajBza21TZE52eWR2bmRHQmN1WEtCTGx5NnNXcldLV3JWcWNmTGtTZWJObThmdzRjUEpqUGNManNqSXlOdW1VN2RZckp3NGNRS2RYbzlQb2NKdStiM1VGT0lUNG9uNUxacGFOV3RoTkJweS9lMSsvZlUzUkowT2I1OTdQMmVwcVNuRXhzVVJIUk5OdmJwMTg5MzN1cnVmTVZjY09uZ2dsc3lDZ1ZZNGNEQjdPRUpSQlFVRldaWVJCRUh3Qkl6L1orKzc0NXVvLy8rZmQ1ZGNkdmVtcFlXMkRGR2dTQUUvRkJGL2JCemdGMFVGUkN4WWtDRWdJaFFVRkdRclFnc2lVNUNsSUdKWkFySmt5aXBZaG15UTBxYnBidE9SY1hlL1AyNDBTZE5Tb0dYbTlYaEVhZFpkM25mM3ZOZDhQbG1XMVFOUXVKYnc3bXpxMUtsWXZIZ3gwdExTRUJ3Y2pMaTRPSXdlUGJwU2I2RTY3V0dKL3o3cXhvc1RleUVzdEx5WGRPMzZEZVRtNWo0VXdXUWZiMitFT3BIaGMzbHNsZCsvUTJvRjlBRXZZMkIwQ0VWTEFKZ0ZvV1NHSkVsT0pwTnhKTXFTY1JkYzYzZjNGaDhmait2WHI4TmtNdUhxMWFzWU0yYk1Bd00xQU1qT3luWU5UenN4cmM0TldWbk8rUjF5Y25JZXlwcHBkVzdJeW5iTkJOOURxdVVpN0ZzOGJGczk3SXNISW9PdTZKMnpMSHZldFlTUGwzSGN2UTlQUCttbTBXakJza3lGS1ltSHNXWWFqUmFNbFhFZG5MczBpOFZ5RmVYNzF4ejcySGgyRHdIY1pBUkJjQnpIY1ZhcjlYeEZveE11ZXpTTklJQ1NFaGVYVzBWV1VnSFAzY01zcnR6cjhTckl6OGVONjFkUlZHU3NGRGpENm9URHpkMzlvZjIrbXRoUG83SHdwaE5BSytleEVVU1o3b0ZNZktHa3BPU2NDOWdxODQ1NDJtYUR3UUFydzhCWVdEMjB6VnF0RGpLNURINit2Z2dNREt6Mi9kNjFjd2VXTDFzS2d5RURRVUZCV0xscUxTNWZ2b1RZL3Yyazk0eU5uNEN1WGJ1NUR2SWpiTmV2WFVGeGNlWDBQa1ZGUnR5NGZoV05telo3b3Ziejl1MjAydzZBeGdCZ2hhSkJ1WWNJYkFEQVhicDA2VngwZExUckRLb0ExSktUa3dHQ2hFYXI0Mm1iQTZydis0dUtqRWpYWnlBOVBSM05tbFhmU1ptV2xvWVowNmZpeThsZkl6cTZCUW9LZUdxY2lJaEk3TnE5RHdBd01QYjlHbHUzWlV1WDRQWHVQZXpZVE1UOW1qdm5HNlNrL0FPYXB0RytReWNNL21pSU5IeWRtcHFLaExsemtISTJCUXFGQWgwN2RzS0hjWU5SazAza2Q5cm1pekV2UUM2WGd5QkloSVdGb1gvc0FMUnVIZlBBenNFN2dZWHR1ZlF3clNiMmMvKyt2UmtDYURFaXFObDdiYnlYQmx1VktoSGxXclpzbVFYZ3Nndkd5cHRlcndjSUVuNytnVFdTbTlGb3RQRHpEd1JBSUQwOXZkcSs5K0svRitEajQ0UFdyV05BMDdURUUwY1FCQlFLQlJRS0JXcFM3K0xINVV1UmsxTStnVDlwNGdUVUNnN0diNzl2d2FMRnkzRDB5R0VrSlcwQ3dQZmtqUjB6R3ZYcU44Q20zN2NnSVdFQjl1L2JpOTgyL2xwaisxblZiU1l1V0lqTlc3ZWpmK3dBeko0NUhSdC8zZUM2T0dyZXFiZ3ljOGEwa3NyQ1VJSVFRbEhZaDZJUTNzQ3lMSHVLSk1sSTEzTGFtOEdRQ1kxV1YrUGIwZWpjWURBWTdqc2tQWDA2R1pPK21BQ3oyWXppNG1KMGY0MFBNM3U4MFJQOTN1OWZwZTg0ZXVRd0VoUG1RYTlQUjJob0dFWjk4aWthUGZ1czdWMFV5NVl0UWFiQkFQK0FBTVRGRFVhckYvNEhBQmcyOUNQY0VoaFRSMzQ4SERJWmhlRGdFQ1F1V0FpV1pkRzJiVHQwZStVVktCUUsrUG43bzNsME5DNWR2QWlBcjFoNmVubWhkNTgrb0drYXdTRWhhQjNUQnYvK1czTkYrN3ZacGtxbFF1dldNWkRIVDhERUx5YWdVK2N1angwekM4TXdPSHIwQ0xZay9ZNGhRNGNqT0NRRUFEOGtQL2U3YjVIeXp4bVFKSVhZZ1I4aUpvWW5RczNNek1TMHFWT1FuWjBGbmM0Tll6NGJpOXExUXl2ZERrRVFpSXFLZ28rUEQxaVd4Zm56NTVHV2xsYmwvVnp4NDNMOHNYM2JPV2RoS0FDVzR6aTJMTDlHY0NBSXZrRzlvRUFxSGdBQVo3RllraFVLUlM4WGxObWJsYkUra0NxYVJxT0ZzU0R2dnIrbmFkTW9iRXJhaWgxL2JNZktGVDlpOWRxZjcrcnpWNjljd2VjVDRqSHBxeWxvM2p3YWUvZnN4cWlSdy9IVHFyWHc4L2ZIelpzM01HWHlsNWc3Yno0YU5HeUlUYjl0eFBqeDQ3QjV5M2FvMVdva0pDNlF3cmM1YytjaE1yS01PSVlrU2ZUdTA3Y3NKM1A5R2c0Zk9vU1BodkMwVVQ0K1B0TG5SVy9xZEhJeVh1L2VvOGJXL1Y2MkdkMmlKY3dXQ3k1ZHZJaW9aczBleWZPV1pWbXA5Y2oyM3g4UEg0cGF0V3Jod29YellHd3F4OXUzYlVWcGFTbFcvTFFHT1RrNUdQUmhMQm8zYmdJM056ZUpFZmVWVjEvRGlSUEhNV1BhVk16Ly9vZEt0MStuVGgxUUZJV2RPM2RDb1ZEZzVaZGZSbVptSml3V2k5Tjl0UDA3SmVVZjdOKzNGN05tZjN2bGhWYlJqbUdvYlk0TklvQVJBamhydFZxKzNVTk13aFVVRkp4eXdWaDVxNjVDUVpXMlpUUSs5Tis3WlVzUzJyN1VEcTFieDBDaFVLQnpsNjVvMExBaGRncDg5OTdlUGxpMmZDV2VhZFFJSkVuaTFkZGVoOFZzeHExYi8xVjVHK2ZPbmtYSDl1M1FyMjl2TkdqWUVDKzJmY25wK3haK1B4OHF0UnBkdTczeXdINS9WYlpKRUFTOFBMMWdMREkra3VmczhlUEhNSDdjWjdCWUxNakp5Y0hBMlA3SXllRUY2YjZkTXhmajRpZVV1MW1mT1hNYWJkcThLTnlBQ01qbE5DNWR1aWk5OXVLTFBLVzlMU1B1blc0WW9vZkdjZnhFZ0tlbnA5MTdsaTVaSkZHRHA2VDhnNCtIOHplNEs1Y3ZvV2xVRkc3eHJyK3R0OFk0Q1VmQmNad0VjSEk1YmRlZ3k3MzExbHVud0hmMnVxd1NPM1BtTkRwMWVCbDVlYm1TaDlPdjc3dFBWRTR4TU5DK0s3OTI3VERvOVh6K1Q2dlY0dVRKRTRqN01CYTkzK21GOTkvckk5MXRxMnFObm4wV08vL2NpNS9YYjBSNmVycWRFSWhvSzFmOGlMLy9Qb3FwVTZkWDJ5amNuYXlxMitRNERqbTVPZEErb2oyRXpadEh3OHZiRzE5TytnS2ZqUG9ZUGQ3NFA0bEI1azZNdUdmUHB1Q3pNYU5CSzJqazUrZExyNG1NdUlrSmN5VkczTXFNcG1rd0RBTnZiMi9FeE1TQVpWazd3a2tBZU9mZFB0aTdkdzhTNW4ySHlWOU93dEJodkRCTjNmQUluRHh4M0RoMHlFY1pEaUdvSGJBSllGWk8xSVVVa3NjY0FIYi8vdjBzeDNGSFhkQjFaeXNwS2NHYTFhdWZ5Ti9tNys4UHZVTVI0L2J0VklrYi84QmYrN0Y2MVUvNC9QTkpXTDMyNXdwRFhZSWd5b0dkcWJRVW0zN2JDRk1wVDlvY0dCaUk5dTA3NE15WjAzYnYyN0QrRit6YXVRTnp2a3Q0WUgxWmQ3UE40OGVQZ1piTFVhOSsvWWR5ZkRwMjdDZzlIRm1jeGJXUGl4dU1VeWRQUUVFcnF1enhidDZjaE9YTGxtTGE5RmtJZGNpaFZjU0llNmR3dEdIRGhqaDA2SkJVbGJjMXJWYUxRWU0rd3ZwZmZrYTdsMTlHL2ZyOFdGbVRKazNSdmtPbmt3WkRSbVdneHBiTmlZckJLSy96UU1LZU41eTFXcTB1WUt2aUFkdTdaN2ZrM3R2YXZyMTc4T0hBRDlDdjc3dVlPV09hbEZOSVMwdkRvQThIb1BjN3ZUQnI1blFwcWY5UThvWldxMFNxeWJFc3JGYXJCRUxkWG5rVisvZnZ4YkZqZjhOcXRXTFBudDA0ZHpZRkhUdDFBc0FMakJBRVFGSVU4dlB6cEZDQ1krM0pUQU9EZ25EMHlCRllMQlprR2d6OFhWeWh3RThyVjJEZHVqV3dXQ3pJeTh2RmdRTi9vWEhqeG1XaDhPWWtiUHB0STc2YmwvakFlT3FxdWsyVHlZUy9qeDdCOUdsZkkyN1FSdytsY0pDUmtZR2RPM2RLRDJkTU1rYWpFWjkrT2dwOSt2WkRRRUFBWmt5ZldpbTdzeGhpZW5oNFlOYnNiK0hsNVFXVHlRUjNBZUJGUnR4aHcwZEFMcGRMakxpVm1kbHNoc2xrd3NHREIyRXltVUJSVkRsdGo2dFhyMkw2dEsveDFlU3ZjZlRJWVd6ZHVrVjY3ZFZYWHp2ckpBeGxiSE5zb21OR0VJU1VxM056ZDRkTUtJOXlvbHRYV0ZoNHpFVjZlR2RUcXpYbzJLa0xWcTlhaVM1ZHlnRHErdlZyMkxCaFBSSVNGa0NoVkdMbWpHbll0blVMWHUvZUEzUG5mSVAySFRxaTU1dHY0ZGpmUjNIbzRJR0hzdStPRGJvenBrL0ZqT2xUMGFGakozeit4U1JFUnRiRHhDOG40L3NGaWRDbnA2TjJhQ2htenY1Vzh0aTZkTzJHczJkVEVOdi9QVkNVREs5Mzc0SEl5SHJJeWJVSCtWR2pSbVAyckpsWXZtd0phdGV1alNYTFZvQ21hY3lZT1J1SkNYUHg4N3Exa012bGFQdFNPL1I3bjZkZlp4Z0dzMmJ5WWVBN3ZleTU5MWV1V29PQWdPcHZZcTdxTm9jTitRZ0V3Uk1zZmpKNnpBUHRZN3RidTNyMUN0cTJiWWQzZS9lQjFXckYzTy9tSUNjbnAxeFBvYTAxYlJxRmMrZk9naVJKNU9YbDR1clZxNmduRkg0cVlzU3R6REl6TSszQ1h3OFBqM0xDTFNkUEhNZlljZVB4ZlBQbWVLNXhFeXhidWhoZHUzWURRUkM0ZHYzYXRZcEFEUTVUQnlSSlFTYWpZRFlERkVtVlRSNklIdHRISDMxMGROMjZkZmtBM0Yzd1ZibTk4WDg5MGE5dmI0azFGQUQrL3Zzb1VtLzloMEZ4QTZXN2xsWm9GVWxKK1FjVEJVV2c4SWlhNzZycDFMa0xPblh1VXU3NXlNaDYrT3RnNVRxbXJWdkhWSGpoS2hRS1RQaDhvdDF6QXorTUsvZStGaTFiNFpjTkc4czlIeEVaaWUvbUpUcjlib3Fpc1AvQTRRZDZIS3V5elR1dDEvMmFUbGU5N1VSTm1qUkZreVk4NWJaTUpzTW5Ea3k1enF4TDEyNjRkT2tTK3ZmanE5YkRQaDRoaGVRVk1lSldaamR1M0lDSGh3ZmF0MjhQQURoOStuUzVnc05idmQ2Vy91M3Q3WTFQeDR5VlVuNXhBMk5UbllJYVFiRGdPSllUakNSSmppUUpqaUJJYUxWYUxqYzNoL2ZZYkhPaXYvenlpM1hObWpVSFNKSjh4UVZkRlJ0QkVGQ3BWSGlqWjArc1dsVW1qbUV4VzlEMnBYYVM1Smxqd3JrbUcySmQ5dmdhUlZFb0tqSSswT0Y4eDl4b1pRRG80K05UWllVczIvTTlPVG41bnZiTllySDhyZGZyYmNOUXF3aHVCQTl1bkRSbFFKSWdDQklrU1lCV0tPRHU3c0VYRHh4bXJsaUx4WExRZGFyZEdkZ0FvRWYzTjNBNzlaYjBmSFNMRnRpemU3ZEVEYjU3OTU5SVNmbEhjdWUzYjl2S2g0TkNHZjErVGFWU3V3N0dYYTdOdzF5emlyYnQ1K2VIWW1OaHBhbVBxcVpJSG5hS3BqcmVsNXViKzA4bFlhaERLQ3FNVXBFa1NJSUVTWkpTVlJSQ0lvNEZ3R1ZrWkxpQXJZcW1VQ3JScDI5WnZxcEJnNFlZTnZ4ampCMHpHbS8zNm9rL2QrNUFjSEF3QUdENGlGSFl1ZU1QOUg2bkY3WnQyd3F5R21ZZnhUdTl5K3l0eUZoWTRXd3ArWkRXck1oWUNLcUNGcExBd0VCd0hJdk1qSFNuKzFhbmJzUWR3VUN0MXFCTzNZaUh1dTdWdForblRwNjQ2Z1RVeEVlWm1BdEI4SVVza2lnRE5aSUVvVktwQ0t2VlNyQXNTM0ljUjNFY0p3ZWdZRmwySDRCblhaY0ljUExVS2ZnSDNML3U1NFVMNTFHclZqRGMzTnl3Wjg5dWJOKzJGYk5tZjJ2M25nejliVHgvRjUzc04yN2NSSGFPaTBIWDBUTDBhZkR4OFVabzdmSnN0UStMZFpobjlmVkdtQk1HWGRFTUJnUDBlajJzVmlzS0gyQmorS05rSE1lZGI5ZXUzU1R3SWkyMjRpMUZBSW9KZ2hBMERnaUdJQWlXSkVtT29palFOTTNSTkEyRlFnRVpINTlLZVI4cEhMVmFyWHRrTXBrTDJBRElxaW4vVVZwU2lqR2pSL0hLNzFvdFBoczdydHdkWFM2WDM5VjNob2JXUm1hbUFSbjZOR2gxYmk3TkEyTWhqTVpDTUZhclUxQURnTERRVUJnTUQyN054SDFpR2FaU1VCTkRVajgvdjZmNkdCWVdGdjROSjdrMUFJd1lWWXF0SGhSRlFTNlhnNlpwS0pWS0tKVktxRlFxRUZxdGxyQllMQVRETUFUTHNoVEhjUlFBT2lzcjYyVXZMNitOTGxnRDB0UFRrYTdQRUJnNGFzNE1HZWtJRFBDLzZ5RjRqdU53L2NaTjVPUmtnN0d5S0MxOU9za25WU28xU0lxQ2o3Y1BRa05EN2xpb3VYbnpQMlJtWllHeE1qVzJaaXFWR3BSTWRrZFB6V1ZsZHVMRWlVK2pvNk92QWloR21jYUJrU0NJSXNHTE13djZCZ3hGVVp4Y0x1Y1VDZ1dVU2lXblZDcWhWcXRCdUxtNUVXYXpXUVEyMjNCVXliSnNNb0JhcnFVR1RwMUtCa0VRMEdoMVVGZnpIYjY0eUFoallRRUFybHI1MkZ6bXNzY3dERTBqU1hLa1RSaHFDMndsQUVvSmdyRFJFS1U0bXFZbFlGT3BWRkNyMVh3b1NwSWt4ekNNYlNqS0FXQVlodGxCVWRRSHJ1VUdtaldMUW5wNk9neUdUQlFXNUZYYnNMcE9wNE5NSmtOUVVDQUNBZ0pjQysyeXA5cEtTa3IrZ24wMTFDNFVkY0Fvb1llTnh6Q1NKRUZSRkNpS0tzdXhpVzBmd2xBcEM0QXRMQ3o4MDhQRHd3VnNnZ1VHQnRZSWZiZkxYT1l5M3E1Y3VYTEdBZFNzQUt3RVFkaTFlaEFPZld3aW9Jbi9Kc1h5cURoblpkUFR4bnA1ZWYwSjRMWnJ1VjNtTXBjOWlEQzBTWk1tMXdYd3NqbzhHRnRRQXdCYjdMSUZONHFpSUdOWmx1TTRyb3h0MHNaakE4QmV1M1p0TzBWUkExekw3aktYdWF5R3c5QjlqcDZhQTZpSnpMbWNHRjBLUEc4Y3d6QmdHQVpXcXhVV2l3VXloVUloa3JSSjAvOEMyTEVBR0hkMzkrM2UzdDR1WUhPWnkxeFdvM2I4K1BIa1NzSlFpZEZEOU5Ca01obmtjam1Fd2dIRXdvRldxd1ZwRzV2YWNMTko0YWl2cis5QnVGVGlYZVl5bDlWc0dIcXhSWXNXL3ptQW1nVVZNSG80NXRha0VGUW00eDgyRlFXQ0pFbU9aVmxDaUdGRnNRVEdiRFp2cG1tNm9XdjVYZWF5R3IyNG9kZnJrWkZoQU1Nd01CcWZuc21Ed3NMQ2ZiQnZ5cFVlSE1lSmpia2l3U1JZbHVVc0ZndHNkQS9BY1p3VWpzcHNQVGJCYStPSU1vVVhGZ0NUbHBhMkxTd3NiSXpyMUhPWnkyb08xSktUazhHQmtLWWgvSitpMzc5enh4OW5uSGhyVnZEVEJuYkVraVJKY3BSTUJscE9RNkdnb1ZBcW9WS3FvRktyb0ZGcm9OUHB5a0pSVzNCekRFZnIxcTE3bm1YWm5VL2FZaVltSmtLcFZEN1FiVnF0Vm93WU1RSitmbjV3ZDNkSFhGd2Npb3VMWFZmMlUyNTZ2UjRjQ1BnSEJEMTFZM0ZXcTNWdjdBZnZaOXNBbThYQmF5c2Zob29ENzdaaEtDV0RUQzZIWEM0SEtaUEpSRkRqYkR3MnpvYnRnd1hBRkJjWEo3bE92L3UzY2VQR0lTa3BDZXZYcjBkU1VoSjI3OTZOWWNPR3VSYm1LVGVESVJOYW5kdFQrZHZUMDlNT09RbEJMYWk0ZjAxb3hpVTVpaFNBVGNibjErUXlHZVEwWFJhS09oWVJDSUt3YS8xSVNFallQRzdjdU04QWhMaE93M3V6b3FJaXpKOC9INnRXclVMYnRyeVUyYUpGaTlDeFkwZk1tREZEVW1wMzJkTm5ETVBjazZkMjRmdzVMRjcwQTc3OWJsNk43dCtGQytleGRjdG1OR25TRkIwNmRwS2UvKzIzWDdGcDQ2OEFRYUJ0MjNiNElKWnZvS2hNWVBuTW1kTkltUHNkckl3VllhRmhxZGV1WDcvZzRLMUpZYWlJUDQ0TnVTUkZnaVFkdkRXaFNrclRkSm5IWmh1S2l1R29qZGZHakI4L3ZzUmlzZno2dEoxd2E5ZXVSWk1tVGFCU3FWQzNibDNNbTJkL0F1M1pzd2ZObWpXRFNxVkNkSFEwWnMrZWJRZFFQWHYyUlBQbXpRRUF5Y25KS0NrcGtVQU5BTnEwNFpXMmp4dzU0cnE2bjJJckxDeTRwOC9WYjlBUUU3Lzhxa2IzYmNIOFJDeGRzaGpYcmw1RlVWR1I5UHgvLzkzRXhnMGI4UDBQUzdCMDJRcWNPWk9NNDhlUENaL2hCWlpYckZ5TjkvdC9nQm5UcGtxcG1HbGZUOGFFTHliaXh4V3I0T1BydDJQdm50MFdaOTRhUU5oWFJFVndJMGxRdHVOVEFxako1SExJUmRvaXNUd3F2SW1qS0lwZ0dJWWpTUklNdzBoNU5nRFdXN2R1YmFwYnQrNklwK1ZrKyttbm54QWJHNHR2dnZrR25UdDN4bDkvL1lYaHc0ZERyVlpqd0lBQnVIcjFLcnAxNjRhaFE0ZGk3ZHExMHV1MnlrVTllL1pFYmk2dlAzcjc5bTNRTkcwbnFDR1h5K0h0N1kzVTFGVFgxZTJ5Y3BhZG5ZMnBYMDlHVnFZQkJFbGk4T0FoYU5ucUJhU21wbUxVaU9Hd1dNenc4UERFOGhWbDlQVGpQdnNVYVduOHdGQmVYaDdVR2czV3Jsc1BnRmVGU3BnN0Iva0YrZkR5OU1LWXNlTWtrUjRBV1AvTHo5aTRjWVAwZmdBWU1QQkQwRFNOMmJObTJPM2JQMmZPNFBubXphRldxMkcxV3VIcDRZa3pwMDhqT3JvRnpwdzVqWkVqUHdGZ0w3QnN5TWlBVXFWQ1dGZ2QwYk03VllHM1ppVUlNYjlHY0FEQkVRQkhrQ1JIa1NSSWt1S2tTRk1NUXdWdlRhRlFsZ0diVGE3Tk5oeTFteDJOaUlpNFlMVmFONUlrK2NiVGNGSjk4ODAzK09DREQ2UWNXR1JrSkc3Y3VJSEpreWRqd0lBQldMaHdJUm8wYUlCWnMyYnhkOC82OVpHU2tvSTFhOVpJMy9IMjIyVmlGY1hGeFU2TEZRcUZvcHdzbWN0Y0JnQS9yMXVEeG8wYm85LzdIK0RhdFd0WU1EOEJMVnU5Z09EZ1lQeXlZU011WDc2RXFWTW0yMzFtMmd6K2ZNelB6MFBjd0ZoSmY4TnNObVBxbEs4d1plcDBCQVlHWXNjZjIvSDlndm1ZOVBqTzdyUUFBQ0FBU1VSQlZHWFo1NXMwYlZxT2VmaE9Bc3VabVptWTl2VmtNQ3dEblpBbnRCVlkvdlBQblpMQWNrRkJBUlFLQmN4bU0rWis5KzJXWlVzWFp6bDRhcmJnSm9TaDRQaUhXRFN3U1ovSnlydzFXbWpXVmFtVUlPVnlPUnk4TmpnT3hndTlJZ3dBSmk4djc2a0pSOCtmUDQ4WFhuakI3cm1ZbUJqODk5OS9NQnFOT0gzNmREbXgydGF0VzFmNGZTcVZxcHhLRDhCclZUNE1mVXFYUGZvVzNhSWxkdis1Q3l0K1hBNVRhV21WQlZWWWxzV1hreWFpMnl1dm9VV0xsZ0I0YWNqVTFGdUlIenNHL2Z2MXhabzFxMkRJeUxEN1hMMTY5ZkhHLy9XOGkydmtIQ2FNSDR1QmNZUFFydDMvc3dmWUNnU1c4L1B6TVdya3gvQnc5empreEZ1ekxScEliQjYydVRXS3NnbERaUlJrTXJtTnQ2YUFTcVdHVEFRMnNXdFhERWNwaXVJRUhVSGIyVkhHeDhkbkQ4TXdod2lDYVAya24xUXFsY3JwQ1NQK1h5YVRsVk02cjB5VU5qZzRHS1dscGNqTHk0T0hod2NBd0dLeElEczdHN1ZxdVdqdlhPWUUyS0piSUhIK1FodzdmZ3dyVnl3SFRkUDRjdkxYZC96YzBpV0xvRlFxMGFmdmU5SnpGb3NGQVFFQmRtSHIvWmk3dXp0S1Mwc3grNXZ2NE9ibWhqTm5Uc05kT0s5RmdlV09uVHBMM3FKV3E0V2JteHNLOHZNeGVjcTBveSsvMU9aNkpkNmEyTHZHbG5WcENHRW9qMUdTUXlhWHlVREw1YUFWQ2lpVktxZzFhcEEwVFVNdTlINVVFSkxhRlJFQVdJdUtpbjUrR2s2cWhnMGJsa3ZxSHo1OEdJR0JnWEJ6YzhOenp6Mkg0OGVQMjczdStMZXRSVVZGUWFWUzRjQ0JNcUhrZ3djUGdpUkp0R3JWeW5VVnU2eWNUWnM2QmNlT0gwUDc5aDB3TG40Q2poNDlVdTVtNm1nSER4N0EvbjM3RUQvK2N6c1c0WWlJQ0JRVUZPQ3YvZnVrZk52bXBOL3RQbnY1OGlYODlsdlZnckxuR2plRzJXeUdRcUVBd3pBNGN2Z1FtalRsdFV3ckVsZ09DQXlFdTRjSDhuSnpkMWZrclFHRUhac0hRTmg0YkdWNU5jck9XMU5BcVZCQ3JWWkJxOUZDSmdKYlJVVUVtN1lQYVJLaGZmdjJ2eDQ1Y3VSRGdpQWVlMDBFbG1YeHh4OS9sSHUrYmR1MmlJK1BSOCtlUGZIc3M4K2ljK2ZPT0hqd0lPYk1tWU9KRTNteDRLRkRoMkxldkhrWU8zWXNQdmpnQXh3OWVoVGZmLys5WFZpNWJ0MDY1T2JtWXZEZ3dkQm9OSWlOamNYUW9VT2gwK2xBMHpUaTR1TFF2MzkvU1RIYlpTNnp0VDU5M3NQczJUT3diczFxc0N5TFVaOThDcElrN1lvSCtmbjVlS3ZuRzJqMi9QTVlPMjQ4RXVkOWg5TFNVZ3daL0tIMFBZa0xmb0JPcDhPMEdiUHczYmZmNEllRjMwT3RWbU9VZzQ1bzhxbFQyTGh4QTNyMCtMODc3bHRvYUJoNjlQZy9EUHB3QURod2FOT21yU1FlWHBIQXNrd213N2o0Q2VkZmU2WHIyUXE4TlF0QmlLQW1GQTBJOE40YVJZSWlLVTRtVlVMbFV0OGFyYUNoVkNtaEZpWVBpSjQ5ZXlJL1B4K0ZoWVVvS2lwQ2NYRXhTa3BLWURLWkNKUEpCQnM5QkpMak9Ca0FPUUJsVVZIUkFKVks5ZlhqZk5Ja0ppWlcyQng3L2ZwMWhJV0ZZZG15WlpneFl3WnUzTGlCc0xBd0RCOCtIRU9HREpIZXQyUEhEb3dhTlFwWHJseEJWRlFVV3Jac2lRMGJOa2k2b2oxNzlzU05HemR3NHNRSktaODJZc1FJckYyN0ZpUkpvbWZQbnBnM2I5NERuNEJ3MmFObCsvZnZSM2hrZzZmaXR4b01obStmajJwOEJEejl0NmhyWUFSUEJWNUNFRVFwRDNDRWxWZWhvamlaVENZcVVIRzJUQjRhclJZNm5RNmVucDd3OGZGRlVGQVF3c0xDUVBUdTNSdDVlWGtvS0NoQVVWRVJpb3FLVUZKU2d0TFNVcGhNSnNKc05zTnF0WklzeXhJMmVnajA0c1dMdldKalkvOEFFUDYwbm93cEtTa29MaTVHeTVZdHBlY21UWnFFYmR1MjRkaXhZdy9VNjd4eDh6L2s1T1NBWVJpVWxqeWRJMXBLbFFvVVJjSEwweHRoWWJVbDhsUm54bkdjc0diWnNGcHJiczJVS2hWa01obTh2YndSRmhiNjFBTWJ4M0hYUGhzemV1TGFOYXVMQUpTZ1ROZkFDRjVhcndTQVdRQTJScERXWTRWd2sxTW9GZnhjcUVvRnRVWURuVllMTjNkM2VIbDV3OS9mRDhIQklRaVBpSUJNcFZLaHBLUUVORTNEYkRaRExwZkRZckU0VmtodFExSUdBRE53NE1DQzNyMTcvNlJVS2ljOWpnczhiTmd3SkNZbTNzOEJ3cFVyVjlDM2IxK3NYcjBhVFpzMlJVcEtDdWJQbjQvNGVON3R2cE5La3FQcDlYcjQrOS9kNkxQSlpNYVpNMmRBeVdUUXVibTc1UGVLak1qTnkwWFd5VXcwYmRJVU5DMTNldXhPbkRnSmtxS2cxZFg4bWhVVkdaR2RrNFBNckV4RUM4M2FGZG50Sjd5Zk1UYzNkL1BhTmF0Tk5pR29XUVF5QUJZT1lBZ0hiUVB4UHh6SGdXTTVzQ3dMbG1WNUpnK0J6Y05xdGNCaXNjQmlOc05zTXZQQXBsUXFVVkpTWXBkcms4bGtzRnF0b0NnS0RNT0E0emlKTnB6ak9BWUFzM256NXAvZmZQUE45d0RVZmR3V09DRWhBUWtKQ2ZmMUhUMTY5RUI4ZkR4R2pCaUJ0TFEwQkFjSDQ5TlBQOFhISDM4c1hVQTFiZW42ZEZBeW1Vc3dXVENOUmd1TlJvc01mUnJTMHRNUUZscmVTN3ArNHlaSWlucGdhMmE3VHpkdi9vZlFTbVQ0YWdVSFA4bmUydldsUzVlY2RBQTFtOXhhV1l0SEdhRWtCYmxNMUEzbHE1Nml0NmJWYXVIdTdnNVBUeS80K2ZraE9EZ1lkY1BEMGFqUnN5QTFHZzJVU2lVVUNnVm9tb1p0TVVFb0lvQ2lLTTZtbjAxcy9iRDI2dFVydDZTa1pPWFRmQ0hGeDhmait2WHJNSmxNdUhyMUtzYU1HVk5wQ0ZUZGxwMlYvZFFPVDFkbVdwMGJzckt5bmI2V2s1UHpVTlpNcTNORFZuYldVM3RNc3JPemt4WXZXbGdLKzRLQkNHNFNrNGR0aXdjZmlwS2daQlJIVVE3TnVNS1VnVnF0a2tETzI4c2JNcGtNcEZhcmhWcXRobEtweEwyMGZxeGJ0MjR0eDNFdWh0MkhjZ2U4OStIcHA4RnpZMW5HNldzUGE4MDBHaTBZSy9PVW5xdmN4VzltenpyaEJOVEVmRm81d1JaZTZaMTBtQWZsUjZma0FxaXBWRXBvTkJxNHVibkJ3OU1Udm42K0FBQ1pUcWVUS3FKQ3djQXUxeWFUeVRpcjFVb3dET08wWVRjMk5qYi9yYmZlV3FIUmFLWS80UWNHZXIwZUJvTUJWb2FCc2JCNjJFMjFXaDFrY2huOGZIM3ZXdHFQSUlDU0VoZVhXMFZXVWdIUDNjTXNydHpyOFNLU00wSE1Ud2F1NU4zYmhpTTh3QTJKQWhmbFd5Mi9veUEvSHpldVgwVlJrYkZTSUErckV3NDNkM2RrWkdRa3JmcHBSWVc1TlRocHlDVkprdVA3MW1TY1RFYnhvQ2FUZzZiTGRBNTRqUU1kNzYxNSswQ2g0THNMWkI0ZUhpZ29LSURSYUpTcW9XYXpXUUkzcTlVS21Vd0dobUhFcEozVTB5YmsycXh2dmZYV21pMWJ0cnhCRUVTTEp4WFVrcE9UQVlLRVJxdmoyVTJyVWR1NHFNaUlkSDBHMHRQVHExMEpmdGZPSFZpK2JDa01oZ3dFQlFWaDVhcTF1SHo1RW1MNzk1UGVNelorQXJwMjdlWkN3a2ZaRXBPQnEzbjMvdmtyZVNEbUo0TmIwckZhZHVmNnRTc29MaTY2NDNsOTQvcFZQTnU0NllsM2VyMlo3QVRVbkhwcmtKaHliWWZjNVpETDVKRFRmRE91UXFHQVVxV0NSc05QTTNoNjhYazIwV1NlbnA3SXk4dERZV0doYlE4YmFKcm1xd3dPWHBzTjY0ZWsxcng5KzNaelFVSEJqKzd1N2s4a3NPbjFlb0FnNGVkZk0yTEpZbkxab0U5RGVucDZ0WWt5cDZXbFljYjBxZmh5OHRlSWptNkJnZ0tlR2ljaUloSzdkdThEQUF5TWZiL0cxbTNaMGlWNHZYc1BPellUY2IvbXp2a0dLU24vZ0tacHRPL1FDWU0vR2lJTlg2ZW1waUpoN2h5a25FMkJRcUZBeDQ2ZDhHSGM0SExEMmRWcGQ5cm1pekV2UUM2WGd5QkloSVdGb1gvc0FMUnVIZlBBemtIaWZrRE5CdHlxeSs0RWFyYmc5dC9ObTF1dlhMbHN2WU8zeHBUUHJWR1FVUlFualU3SjVUd2RPRTJYZVdzNkxkdzlQT0R0N1dNM0FrbjYrUGpBdzhNRE9wME9hclVhS3BVS0NvVkN5clU1eTdjNXk3VjVlSGhzWmxsMjI1TUliQVpESmpSYVhjM25ZSFJ1TUJnTTFmWjlGLys5QUI4Zkg3UnVIUU9hcGlXZU9JSWdvRkR3ZDcyN2JVbTVHL3R4K1ZMazVKUlA0RSthT0FHMWdvUHgyKzlic0dqeE1odzljaGhKU1pzQThEMTVZOGVNUnIzNkRiRHA5eTFJU0ZpQS9mdjI0cmVOTmNlOVVOVnRKaTVZaU0xYnQ2Ti83QURNbmprZEczL2Q0UElrNzJCV3EzVlhtNWdYTGpqeDFDcjAxa2c3YjYwTTFPVENQS2hDcVlSS3hjdnN1YnU1dzh2VEMvNDIzaG9Ba0g1K2Z2RHk4b0tibXh1MFdpM0U5Zyt4U21vRGJKd05oYmpkaUJYNGFYeUx3V0Q0OFlrOE9JejFnU1NiTlJvdHJGYnJmWC9QNmRQSjZQNWFOOHlhT1IxNnZSN2RYK3VHN3E5MXc0b2ZsMWY1TzQ0ZU9Zdys3NzZOOWkrM1JXei9mamgzOXF6ZDYvdjM3VVcvOTNxamErY082UDkrWHh3OWNsaDZiZGpRajlEOU5UNjBIZm54Y0hSL3JSdUdmalJJQXBHMmJkdmh2WDd2UTZGUXdNL2ZIODJqbzNIcDRrVUFmTVhTMDhzTHZmdjBBVTNUQ0E0SlFldVlOdmozMzVxclQ5M05ObFVxRlZxM2pzRzQrQWxZdkdpaEhmSGlrMkJGUlVWSStuMFR4bzRaWFQwaDYvWHJPMkUvRTJvSGJCekhXVG1PWXppT1kxbVc1UWhBOHRaS1NvcTVUSU1CcWJkdW9hQ2dvSXk5UTZtQ1JxT0dRcUhBZ3ZtSk9IandMNmpVYW50Z0N3b0tnbytQRHp3OVBhSFQ2ZURZL2xGSmxiU2MxeFlZR0hqWVlyRXNlZEtBcmJvS0JWWGFsdEY0MzkvUnRHa1VOaVZ0eGNjalJxRldyV0JzU3RxS1RVbGIwZS85L2xYNi9OVXJWL0Q1aEhnTUhqSVVXN2Z2eEp0djljS29rY01saXB1Yk4yOWd5dVF2OGRsbjhkaXliUWRlZmZWMWpCOC9UaEtsU1VoY2dFMUpXd0VBYytiT3c2YWtyVWhjc0pBLzRVZ1N2ZnYwaFllSHAzRGlYOFBoUTRmUXNpVlBBdURqNDRPRXhBVlFLbFVTRUo1T1RrYmp4azFxYk0zdlpadlJMVnJDYkxGSWdQdzRtZU1RdmZoM1ZsWVdCc2IyeDVVcmw2dmxSbEphV3JwbS9Qanh0eHhBemVUb3JmRmpVenllTUF3RGtxVEFzZ3dzRmdzL1NSQWVqc3lzVExBY0I2VkNDWlhRM25IczJGRW9sVXE0dWJtWDJ6YXBVcWtRRUJBQWIyOXZ1THU3dzdiOW96S3Z6VmxmRzBFUWxuUG56cTBFY052bGhEKyt0bVZMRXRxKzFBNnRXOGRBb1ZDZ2M1ZXVhTkN3SVhidTNBRUE4UGIyd2JMbEsvRk1vMFlnU1JLdnZ2WTZMR1l6YnQzNnI4cmJPSGYyTERxMmI0ZCtmWHVqUWNPR2VMSHRTMDdmdC9ENytWQ3AxZWphN1pVSDl2dXJzazJDSU9EbDZRVmprZkhST1hBRW9QMGdDbTZqL3dkQ0tZUHF0ZnB3RzljR2hKdkM3bTJqUjQzQTZlUlRBSGpHM084WHpBY0FlSGg0NEtmVmE5SHYvUStxWTI5dUh6dDI3SzhLUERYYjNqVVc0SE5yRkVWeEhNZHhGRVdCWlZsT29WQUl3KzBxZUh0NXdXZ3NoRW9vR09UbDVjRnNNdUhGRjErRVhGNSt1b1FFZ0tDZ0lQajYrc0xUMHhOdWJtN1FhRFJRcTlWU0hzWVpBMGhGdWJhb3FLaXJ4Y1hGUHp6cEYzL1h6aDFRV1Boa0N0cnE5WG9FQnRwMzVkZXVIUWE5UGgwQW9OVnFjZkxrQ2NSOUdJdmU3L1RDKysvMWNlb0pWR2FObm4wV08vL2NpNS9YYjBSNmVqcVdMUzN2Nks5YzhTUCsvdnNvcGs2ZERwbE05a0IrZTFXM3lYRWNjbkp6b0gyRWVnaVZIU05BcU9SZ2Mwcmd2ZlExcU45b2lOSS9yOEw5VTN2cXhDRkRoMlBxMTFPUW1EQVAyN2R0UmQvMytBcTVlRzFYaCtYbDVmMlNtSmlZNitDcG1aem4xaml1VE1vWWtNa29LSlJLbU0xbVVDU1BOY1hGeFNBSVFuQzZGRGg4NkJBR0RJaUR6czE1bzdVTTRLbC9Bd0lDa0pPVFUySHJoOFZpRVdheXJKekE5c0d4TEF1Q0lGaU80d2piWEZ1Yk5tMVdIajkrdkIxSmt1MWMvcy9qWi83Ky90Q25wOXZmZm0rbklpcUtiMFU1OE5kK3JGNzFFK1o4TncvQklieG8yWXN4THpqMWFoekJ6bFJhaXUzYnQ2RkxsNjVRS0pVSURBeEUrL1lkY1BEZ0FidjNiVmovQzNidDNJRzVDZlBoNXU3K1FINzMzV3p6K1BGam9PVnkxS3RmLzRFZkgwWHJFTGpIdnlqOWJmazNFN21mN0lTOG5qZEt0bDJHOVhvdWRNTmJJbmZrRHBpUHAwSDdnWDBMVVhoRUJEcDI2b3lWSzVaajVxeHY0T1oyNzFNWWNya2M3ZHJaWCtZN2R1dzRNSHIwNk9OVjhOWVlBVDlZcTlYS0NaRWdLSm1NVXlxVUlBa0NOMjVjbDRZSGVEWVBEVTZmVHNaTDdWNUd2UVlOOE8vRkN4VURHd0NFaElRZ0t5dkxhZXVIQ0d3aXVERU1JejJFR1ZJV0FDSDJ0U1VuSjVzTkJzT1NnSUNBcHhMWWZ0MnducS95Y1J6YXZmei84SDcvV0FCOG04TlhrNzVBWVdFaG1rWkY0ZERCQTFJdTZrR2JiWkdDWTFsWXJWWnB3cVRiSzY5aXlPQTRkT2pVQ2MyYVBZKy8vdHFQYzJkVDhOblljUUI0Z1JHQ0FFaUtRbjUrSHJadTJTSjhqLzFzYkdCUUVJNGVPWUs2ZGNPUmw1c0xYejgvMEFvRmZscTVBdm41ZVhpM2QxOFVGUmx4NE1CZmFOS2tMSisxWlhNU052MjJFWE1UNWo4d25ycXFidE5rTXVGMDhpbk1tREVOY1lNK2VpaVU3cVpEdDJEb3RycjhNYjJlQzdxSlArVFArY0Y2TXcrcVYrdkJjamtiY0RndU8zZjhnWDE3OTJESzE5UHd6ZXhaK0hyYWROU3JkMjhBYmJGWXNIT252WmI2dFd2WHRoWVVGRGhPRjRnZVd6bUdYSXFpUUZJVXdIRlMzNnhjTGtkQVlDQTBHZzEwV2gzKytlY00vUDBEUU5NS1hMMXlCWVVGaGJqNDd3WGs1R1NESkVuSTVYTDBldnVkOHNBbWhxUzV1Ym5JejgrSDBXaEVjWEV4VENhVEhialplbTBNdzNBY3gwRjRTTk1JQUN5QmdZRUhUQ2JUZkpxbWh6eE5vSlo4NmhTMmJFbkN3aCtXZ0tJb2ZESnFCRUpEdzlEdTVmK0h1WE8rUWZzT0hkSHp6YmR3N08rak9PVGdwVHdvYzJ6UW5URjlLbVpNbjRvT0hUdmg4eThtSVRLeUhpWitPUm5mTDBpRVBqMGR0VU5ETVhQMnQ1S2FVWmV1M1hEMmJBcGkrNzhIaXBMaDllNDlFQmxaRHptNU9YYmJHVFZxTkdiUG1vbmx5NWFnZHUzYVdMSnNCV2lheG95WnM1R1lNQmMvcjFzTHVWeU90aSsxay9JNkRNTmcxa3crREh5bmx6MzMvc3BWYXhBUVVQMjloRlhkNXJBaEg0RWdlSUxGVDBhUGVhQjliRld4a3UyWDRmYkovMEQ1cUpIVmV5TTBiejREOTg5aWtEL2pvTjM3VWxKUzhPMmN1ZkR6OTRlYnV6dE9uamgrejhCV2JoOUtTbjRjTjI3Y0RRRzh6STRGQTFRd1pRQ0FzMWdzMEdpMW5OeEd3MEF1cDVHV25nYVpUSVk2ZGVyQ3o4OFAwMmZPUm9QNkRlRGo2NHVGMzgrSFZxdXpBN1Z5d09idjc0L3M3R3prNWVWSndDYU9XWWtlbTQzWDVoaVMyazBqRUFSaDNyTm56L0pPblRyOWp5Q0lxS2NGMkk0ZE80b09IVHBKellLdnZQSXFqaDM3RysxZS9uOUlTZmtIRXdWRm9QQ0l5QnJmbDA2ZHU2QlQ1eTdsbm8rTXJJZS9EbGF1WTlxNmRVeUZGNjVDb2NDRXp5ZmFQVGZ3dzdoeTcydlJzaFYrMmJDeDNQTVJrWkg0YnA1enlpaUtvckQvd09FSGVzeXFzczA3cmRmOW1rNVhEWDJTREllQ21ZZWtQNDNMVHdQTFQ1ZDcyeWMyckxsTm0wYWhhZFBxdVR3NWpqdnp4eDkvT0JZTWJITnJaaW0zUmhDc1FQbk5XYTFXRGdDVVNpV24wK21rV2RDaW9tSmN1bmdSL3Y0QjZOQ3hFOC9rSVV3WStQaFdQaHBXTGp0YXExYXRjcmsyMFdOejhOcWtjSlJsV1Z2VmVJYmpPQktBdFV1WEx2cnM3T3dmdkx5OEZqNU5YcHR0ejZ2QVl5Y2xuR3V5SWRabGo2OVJGSVdpSXVNalFXamc3ZTE5VHltU3RMUzBqV3ZYcmpVNkFUV1RIYWp4bkdzc1FZQWpTWktuOXBielBXcmkySlNDcHVIdDVZWDY5ZXNMdEVTKzhQRHdnSStQajkxa3pxREJ6Z1BDY3Z3Njd1N3VjTmJiVmtIakxpZlNHMVhVdE92dDdiM2RZckVzZmxwTzBPYk5XMkRYenAwb0tTbUJ4V0xCdHExYjBFTG8wV3JhTkFyYnQvRW56T1ZMMWRQL3BGS3BYYWh3bDJ2ek1OZXNvbTM3K2ZtaDJGaHhsWjBMOTdoL2o2b2F2a00wdGRvK3QxaGFXcnA2NU1pUkYyMUNVSk9EdDJaWE1DQUlnaU9FWm44WnJ6akZ5ZVV5WVJhVWxtWkIrU0YzZ1NYWDJ4disvZ0dTZHVsZGVXd0FYMGdRdlRaYnFuQkhyODIyaUNCNmJTeGZCbU9FU2lsSkVBUjE2TkNoWlczYnRuMmVJSWhtVDlLRk0rQ0RmaUFFN2pWZlh6OGtKQzdBODgyYm8xUG5MaGowSVY4d2FQUGlTMmpYN21VQXdQQVJvL0RseE0veDY0YjFDSStJNEJPbVQ5Q2QvbEd5SW1OaGhhMEw1RU5hc3lKaklhZ0tXa2dDQXdPUm5wNk96SXgwcUFXaUJUc2JHZ1V1TWZtZVowYTVjQTlnYVBWbGhPclVqWkFHNFRtT083MW56NTY5VHZKcXR1MGRqa1VEZm5SS0hKdVN5eUNYQzU0YkxZNU5sUTI1ZTNsNndjL1hyOG95bFU1WFdTNlhJemc0Mks2SVlFdHBKSWFpanUwZlRnb0pWZ0NXZHUzYXBXWm1aaTcwOGZGWjlEaGVKRm9uK1k5dGYreXE4UDI5M242blhESVRBUEx5Y2pGejlyZHdjM1BEbmoyN1VWSlNVcVZ0M1Nsc3lNN0pjUUdiZ3htTmhmRHg5WEg2bW8rUE43S3pIL3lhR1kyRjVRZ0JiSzFaczJZd0dBelE2L1VvS3N5Mzc1UFVBaGhiRzBEdCs5aURiT0J5ZHZWZEYxb050Rm9OYnQ2OHVmSEhIMzhzcUNnRWhZT3lPNStWRVpUdk9BNGN5M0ljeTRKbEdUQ01sWDlZTGJCYXpMQ1lTMkV4bDhKVVdneFRhUkZ1WHI5eTc4QUdBQUVCQWNqTnpiWHoycHpsMm13OU5vZENndWkxV1FpQ0lIMTlmWGVXbHBiT1ZTZ1VIejl1RjRtc211N3dwU1dsR0RONkZLLzhydFZLN1JPMmQzUm5YZFNWV1dob2JXUm1HcENoVDROVzUrYlNQREFXd21nc0JHTzFJclMyY3hBSUN3MkZ3ZkRnMWt6Y0o1WmhFQlphT1RENStmblowZTg4NnBhZm43L2twWmRldWxTUnQwWVFoQWhzREVFUWpNamNJYXBPMFRRTmxVb2xlR2RsZE45ZVhsN3c5UzFUbldyUW9BRWFObXhZOVd1MnNoZHIxNjVkWVYrYm85ZkdzaXpoVUVnb1Z5VmR0V3JWMHY3OSt6Y2lTYkw5NDNTeCtQbjVJVjJmY2Q4WFFGU3pabGk0cU9KUjJxSWlJd0lEN2s3TWhTQUlORy9lSE5kdjNFUk9UamJ5Y25KUVd2cDBraytxVkdxUUZBVWZieCtFaG9aVSt0NFcwZEc0ZWZNL1pHWmwxZWlhcVZScVVESVp2TDI5N3docWo1dFpyZFo5RXlkT1BPQUFhcVVpc0FtZ1pwOVhFN1FNUkNWM3VWek95ZVZseEpHMkFPZmg0UUZ2YjI4RUJBU2dkdTI3V3p2aVRvSWp0Mjdkd3ZuejUzSHQyaldrcHFiQ1lEQWdKeWRIQWp4SExWSUI5QWlXWlFtV1pTbU80eWp3V3FRMHgzSEtHemR1dEFvTkRaMEw0TEZTSHpsMUtoa0VRVUNqMVVGZHpYZjQ0aUlqaklVRkFMaHFKNXAwbWN0cXlOSVBIVG8wT3lZbTVwWUFaQ1hnTlVLTFlLOFBhaXVseDloNmF3cUZncFAwUVRXODBMR0hod2U4dkd6RVdlcld4VFBQUElPUWtKQzdpN0x1OUlhUWtCQkpVTmt4MStiWStpSEtZbkc4MlU0a1dIbm5naUREd3NLT0Z4UVVKT3AwdXFtUDAxRnMxaXdLNmVucE1CZ3lVVmlRVnkwc0hBRGZ2eVNUeVJBVUZJaUFnQURYNWVLeXg4SnUzNzY5S2lZbUpsVUlNOFhRczlSSkNHb1Z2RFZwMEYwaWpSUkNVVnVhYjFHL1FBeEZhOVdxZGRlZ1ZpVmc0L000b1U1emJVNTYyc1JDZ21Odm16aHVaU0VJZ25KemMvdlpaRExWcFdsNndPTjBNQU1EQTZ1TjNkWmxMbnRjeldnMHJnNE9EajRGKzlZT3h4RFVZaE9Dc3M1QzBJcEFqVmQxOTBGUVVCQkNRMFB2YVIrcnBCT24wK2tRRWhKaVIyOWt5N2dyRHFrSy9XMTJ2VzJDMXliMXRva0xzV3ZYcmlVc3krNXhuU1l1YzlsamxWZmJ2M0Rod2oxd1hnR1ZQRFk0eklNSzVKR2NMYWpSQXNXM0dJN3FkS0lvQzU5WEN3a0p1ZWVKRE5uTm16ZXJqb0k4VlpIVDdubnhPZkYxNFNFbThGaWhBNThRd2UyVlYxNUpPM0Rnd1BjaElTR2hBTUpkcDR6TFhQWm9HOGR4MTA2Y09KSDA2YWVmRmpvSlFjdUJtaUNBYkNlblo0c2ZGZUVJTCtSQ2dtVlozQTArMlFIYjNiaDZ2cjYrVGljUmJBU1dZVU1mVHBoTUpoQUVBVUc2VDJvQklmaGZSTFpwMCtaRVRrNU9ncWVuNSt5cWhzVXVjNW5MSG82emR1M2F0VFZ2dnZsbXFvTzM1aXdFdGRxMmRvamhwOER2S0JVTXRGcXRYZWdwVmo4akl5UFJ1SEZqcU5YM1BpRnlWMkNpVnFzUkdocGFib2EwZ3ZsUmptVlpRaXdrY0J6SENnVUYyNmtFMHN2TGEzTnhjWEdRU3FVYTR6cDNYT2F5UjlPeXM3TVhoNGVIbjdYeDFFcHRId1JCbUd4QnpURUVGU1FHeXVYVmJNSE5WOURXRFEwTnZTOVF1MnRnQS9nRWVrVjhiYzdHck1UR1hRSGNPR0VxUWN5M2tRRElWcTFhTFRseDRvUy9YQzd2NXpxRlhQWVVoM3JRNi9YSXlEQ0FZUmdZalk4R1EzTnBhZW5QNzc3N3JtMi9XcmtRbE9NNENkUTRqbU1GUmx5T1pWbU9ZUmc3dmo4eHNoTWZZcFZVb1ZCQXJWWkRMcGZqMHFWTER4YllBQ0E4UE56cHFKV1RhUVJPNkdjVFI2M0VXVkxiRmhEaW4zLytJZmZzMmJPNGZmdjJmaFJGZFhHZDRpNTdHa0V0T1RrWkhBaHBHc0wvRWRndmk4WHk1MDhyVit6S3ljbXhPQUUxMndrRGZteUtJRmdDWVBsMEZLL2VMakIzY0VvbEw4U2kwV2o1bmpWM0QzaDVlOEhmUHdDMWdvTVJYamRjMHRHNFg3dW5iNkFvQ25YcjFrVndjREQ4L2YzaDVlVmxWeWxWS3BXMitUZE9aQUt4VmJZUzNGVXIrQllRYytmT25WTXZYYnEwa09PNFk0L3pDYnBwMHlZb2xjcUtFeFZXSzBhTUdBRS9Qeis0dTdzakxpNU9VbmR5MmROcmVyMGVIQWo0QndROU1tTnhMTXVlUEhUd1lOTEVMeVlVT09UVVNvUkhxUjJvU1hSRUpGZStDbHArdWtEbnBvT0hoNmRFUlZRN05MUmFRTzJlZ1EzZ0ZXM0N3c0lRRkJRRVIyMVNKeXBYb3BxelhRdUlBN2labm5ubW1aUzB0TFFGSE1kZGVWSlA0SEhqeGlFcEtRbnIxNjlIVWxJU2R1L2VqV0hEaHJtdTdLZmNESVpNYUhWdWo4eitjQngzOWR5NWMrdjc5bmtud3dIVWJDdWdKanRRRTNyV1NGS2FCNFZjSnVma3RDaDBySUJLWlQ5bDRPUGpBLytBQUlTRTFMNHY3WVZxQXpZQUNBNE9SbWhvS0FJREF5WCt0a3JBRGJiOWJRSi9tMFFsTGp4TXdjSEJCM0p5Y2hJQVpENXBKMjlSVVJIbXo1K1AyYk5ubzIzYnRtamJ0aTBXTFZxRUZTdFdJQ3NyeTNWMVA4WEdNTXc5ZVdvWHpwL0RxQkhEcTN0M3NtN2V2TG02YStjTzEyRS8yRzRIYkFSQldEaU9zNGlDeHh6SENSeHJGRWVRSklxS2pNak56VUdtd1FBQ3ZOaTBScTJHMldUQ2diLyt3cFl0bS9IbnJwM3c5dmF1OXNiMysvYjc2dFdyaDlxMWEwdmc1dUhoWVNmaFp3TnVZa2dxOXNPeHprSlNBQ1lmSDU5dCtmbjUzd2tMV0tQV3FsVXJUSmt5QlMrLy9ETFVhalVpSWlMd3h4OS9ZTzdjdVFnT0RvYTd1enNHREJnZ3FTMk5HREVDblR0M3R2dU83dDI3WTlDZ1FVNi92MmZQbm1qZXZEa0FJRGs1R1NVbEpXamJ0cTMwZXBzMmJRQUFSNDRjY1YzZFQ3RVZGaGJjMCtmcU4yaUlpVjkrVloyN1VxclhweTl2MDdyVmVaUzFkWlRhaEo2OHQyYlgya0V5SkVteEhNZXg0RGpJWkJUTUpoTlVLalVYRWxJYi9nRUJTRTlQaDFxdGdWcWpRVXJLUDNqbDFWY3hldlFZUkVSRTR2Q2hROVcrbnZmZE8wWVFCQ0lpSXB3cVdqbXJqb290SUFBSUFFNkxDUnpIa1I0ZUh1dU5ScU5HbzlIRTEvUkpOWDM2ZEd6ZXZCa3hNVEVZTkdnUWV2VG9nZTdkdStQQ2hRczRmLzQ4MnJWcmg2NWR1K0tOTjk2NDYrL3UyYk1uY25OekFRQzNiOThHVGROMm5GeHl1UnplM3Q1SVRVMTFYZDB1SzJmWjJkbVkrdlZrWkdVYVFKQWtCZzhlZ3BhdFhrQnFhaXBHalJnT2k4VU1EdzlQTEYveFUxbTY0N05Qa1piR2E1Ym41ZVZCcmRGZzdicjFBSUNyVjY4aVllNGM1QmZrdzh2VEMyUEdqcE5FZWdCZytiS2xpNy80ZlB3cEIxQXJ0UUUzdmxnQVdJUnJsaVVJc0FSSmNBUkhnT000VGlhVGdXVlp6dDNESFFxRkFnUkJRSitlRHJWS0RZcWlvRmFyVWI5QlF3VFZxb1dpSWlNT0hUejRNcm5Fd0FBQUlBQkpSRUZVNkFFYndJOWNoWWVIbHlPakZNdThUZ2JrYmZ2YklJU2s0bVNDQ0c2RVZxdGRXVnhjckZLcFZDTnI4dVRwMGFPSHBJMzR4aHR2WU5teVpaZzZkU3AwT2gxYXRteUpaNTk5RnVmT25ic25ZSHY3N2JlbGZ4Y1hGenN0TENnVUNwaE1KdGRWN0xKeTl2TzZOV2pjdURINnZmOEJybDI3aGdYekU5Q3kxUXNJRGc3R0x4czI0dkxsUzVnNlpiTGRaNmJObUFVQXlNL1BROXpBV0l3Y05Sb0FZRGFiTVhYS1Y1Z3lkVG9DQXdPeDQ0L3QrSDdCZkV3U0JJYnk4L04rK09MejhZZWRoSjRsZDhpcmNTekRpRlJsa010cFVad0ZSVVZGTUFwc3hrb1ZINzFwdEZyNCt2cGkrN2F0eU0vUFIxNWUzcU1KYkFDdmNHVkxJVzdidEd2anNkbjJ0VW5neHBhcDZqSUMwRW5nOXRaYmJ5MVp2MzQ5clZRcWEwekd6M2I2UXFGUVNQbEQwV2lhcmhiZ1VhbFVNSnZONVo0M21Vd1BSWi9TWlkrK1JiZG9pWVM1Y3dBUWFOR2lKV1ovTTZkS24yTlpGbDlPbW9odXI3eUdGaTFhQWdDdVg3K0cxTlJiaUIvTDk4S3pIQXVOb0YxUVdGaTQ3SjFlYisxSCtha0MreERVUmtKUEZEdG1HSWFUeStVYzc1eUFvMm1lTERYVFlJQkdvMFYwZEF2OC9mZFJ1THQ3UUtWVWdtVlpyUGh4T1hyMWVoc05uM2tHNDhlTmZYU0JEUURDd3NMc3RCRWNweEZzaUNoaDQ2MXhBdmlKa3drUW12MUFFQVN4WmNzV1l0cTBhVXZpNCtObENvVWlyaVpPSHBrVEh2cUsxS1NjUFcreFdLcTBuZURnWUpTV2xpSXZMdzhlSGg3U1o3T3pzNnZNNWU2eXB3ellvbHNnY2Y1Q0hEdCtEQ3RYTEFkTjAvaHk4dGQzL056U0pZdWdWQ3JScCs5N2R1ZHBRRUNBWGRnS0FFYWpjY1dFK0hGN1UxTCtjZXhUY3dRMU96WmNvZG1lb3hVS2pwYkxZYlpZUUpFa2FJVUNGRVhCMTljWGRlclVoYnU3QndpQ1FHQlFJSFJhSFJpckZSTStuNGp3OEhCY3ZQaXZkQzA4c3NBR0FQWHIxeStuUmVvWWpqcDRiU0s5RVd4eWJveVFneU1JZ2lDKyt1cXJQRjlmM3lVREJ3NGtGUXJGd0lkNW90RTBYYzUxdm5UcFVwVTRvNktpb3FCU3FYRGd3QUc4K3VxckFJQ0RCdytDSkVtMGF0WEtkUlc3ckp4Tm16b0YwUzFhb24zN0RtZ1IzUUp2OXV3QmxtVXI3ZmM2ZVBBQTl1L2JoNFdMbHRqZGlDTWlJbEJRVUlDLzl1L0RpMjFmd3RXclYzSHE1SW1menA0OXUyZmp4ZzBsTnA1YWljUERSQkNFV2NpcDJiSGhNaXpMeVNnWlpESTVTa3BLT0hjdmJ5aVZTdWgwYmxBbytQK1hta3I1SnR4YXdRZ0xEVU5BWUNBVU5NM3Y2NEVEYU5LMDZhTVBiQVJCb0g3OStoS3dPWHBzRE1QWWVteTI0QVpoRkFOQ3ZzM3VPNGNORzVaTjAvU1NmdjM2NFdHQ1c4dVdMVEY3OW13c1c3WU16WnMzeDZKRmk1Q2VubDdoKzlldFc0ZmMzRndNSGp3WUdvMEdzYkd4R0RwMEtIUTZIV2lhUmx4Y0hQcjM3dzh2THkvWFZleXljdGFuejN1WVBYc0cxcTFaRFpabE1lcVRUMEdTcEYzeElEOC9IMi8xZkFQTm5uOGVZOGVOUitLODcxQmFXb29oZ3orVXZpZHh3US9RNlhTWU5tTVd2dnYyRy95dzhIdlFOUDJUaDZmbm54dlcvMUlFKzBLQmJRT3V5WEVPVk9wWG95Z1FESU9Ta21LVWxwWndhclVhbmw1ZVVLbFVxRmUvUG03ZXVJR2pSdzlEcDlPaDE5dnZJaVE0QlBYcTEwZjgrTTh4ZWZJa1dNd1doSVNFWU16WStFY2YyTVJjVXIxNjlld3FwTGE1TmlHdlZxNllBUHRLcVMyNEVRUkJFSEZ4Y1prbWsyblJ3SUVEV2FWU0dmY3dUclRYWDM4ZEkwZU94T2pSbzhHeUxQcjE2NGNCQXdhZ3ROUjVaOHFHRFJ0dzQ4WU5EQjQ4R0FBd2UvWnNXSzFXZE8vZUhTUkpvbWZQbnBnN2Q2N3JDbmFaVXd1cFhSdHo1ODEzbXRiNFpjTkc1emZUWDM2dDhQc2FOR2lJaFl1V3dHZzBycGcxYzhhZVpVc1hWd1Jxa3FjbWdocEprZ3hRUmhvcG95aE9ybFNDcGhVYzMzd3JpTEtvTlhCemQwZGtaQ1Q4L1B3UUZGUUxZWFhxb0c1NE9KUktKWjU3cmpGK1dMUzBSdGZ0anBvSDkyTVpHUms0ZCs0Y3JseTVndFRVVk9qMWVtUm5aNWZUU3hCQ1YwSUFRRUpnNFNVNGppTnROQlBrSE1jcEFDZ25USmpnSGg4Zkg2dFNxWWE0VG4wK1VYemo1bi9JeWNrQnd6QW9MWGs2UjdTVUtoVW9pb0tYcHpmQ3dtcFhHcTV4SENlc1dUYXMxcHBiTTZWS0JabE1CbTh2YjRTRlZVd1J0bi8vZm9SSE5uZ2c2MVJZV0xoc1F2eTR2VGJocHpOUXMyWHNzSWlNSFdKelBVWEpPSUhlbXdjMXBiMjRzYWRubWNwVWFGZ1k2dGR2QUY5ZjN3ZDJMdFFvQjVxL3YzKzU0WGduRlZMWTVObWtTcWx3d2RyMnVJbUZCVXlaTWdVblQ1NzhZY09HRFdhMVduM1ByU0FkT25UQW4zLysrY2hjbUhxOUh2NytkemY2YkRLWmNlYk1HVkF5R1hSdTdpNzV2U0lqY3ZOeWtYVXlFMDJiTklWWW9YTUV0Uk1uVG9La0tHaDFOYjltUlVWR1pPZmtJRE1yRTlGQ3MzWkZkcnVHK3hrTENncCtHRHBrOFA1TGx5NmFLd00xbEZWQUpUMVFnVGhXVUpvaUlJeE9TYXdkSkNWUWYxTVU1RElaeFBsUXRWSUZzOGxVNDcvdGdRRWJ3SXZCaU9CV1dYVlVySkFLdld5YzFXb1Z3WTJ4RFV0RmNOdStmVHMwR3MzU3dzTENVcTFXT3hLQThtNzNiZGV1WFkvOWhaeXVUd2NsazhFL0lBZ3VBelFhTFRRYUxUTDBhVWhMVDBPWUV5TFY2emR1Z3FTb0I3Wm10dnQwOCtaL0NLMUVocStXVFp0Uk5WdHBkbmIyNGxZdG14OUdlZmJiaWp3MUt3aUNJUUNHRUR3MUdVVnhNcG5ncVlsRDdXbzF0Qm9OZEhha2tZR29YVHNVa1pHUkNBMExlK0Rud1FOaHJRMFBENjlJWUZrQ09KdTdxWlJyczFxdDRtdE93UTBBZERyZHF0emMzR0lQRDQvaEFIeWZ0Z3M1T3lzYldqZDNGNkk1bUZibmhxeXNiS2ZBbHBPVEE5MURXRE90emcxWjJWbVZBbHNOV1paZW43NDgrdm1vVTdDZi9YVDAwdXhCRFFLb0VTUkhFaVJIa1FKYkIyMURHQ25NZjJvRnZRSStCUFZEclZwOFh1MWhnTm9EQXpZK2FkbkFLYkE1ZW0yaTV5YUNHOEFQQ0ZjQ2JweW5wK2ZHakl5TUlsOWYzNDhJZ29oNFdpNWVqcnYzNGVtbndYUEx6OHR4K3RyRFdqT05Sb3Y4M0p4NytpeVJuQWxpZmpKdzVlNjY5RGx3VjIrYXNsYTMvbS95K1R0NGFxWnlvRVlJb0VZU0FndXVESEk1elNsb2thbERBRFdKQmRjTGJqb2RMT1pTNU9WbUl6TkRnOHlNTktmckVGWW5IRzd1N284L3NBRkFvMGFOeW9GYkJjQW1nWnVZY0tzSTNNUy8vZjM5LzdoKy9YcEI3ZHExNDBpU2pLNStFT0haVFEwR0E2d01BMk5oOWJDYmFyVTZ5T1F5K0FtMHlIZDFzaE5BU1ltTHk2MGlLNm1BNSs1aEZsZnUrWGdsSmdOWDd3N1VXSEFuejVYY1d0ODVkZloxbEovOXRHL3BzTXVwbFFjMW1RQnF0SUwzMUJ5TEJhTElzZFZpZ29lSFI2WEs3VVZGUnR5NGZoV05telo3TW9DTklBZzBhdFNvUXEvTkdaalllSEJPd1UzNFhvN2pPSzVPblRxSGs1T1Q4NTU3N3JrQkZFVjFyazVRUzA1T0JnZ1NHcTJPWnpldFJtM2pvaUlqMHZVWlNFOVByM1lsK0YwN2QyRDVzcVV3R0RJUUZCU0VsYXZXNHZMbFM0anRYOGJDUGpaK0FycDI3ZVpDd2tmWWlMc0VOUXZIL0htdzhHSlNuNHlGR1RiaHArUHNaNGtBYXVaeU9UVTdVSk9ERmdTT2xRcEJMay9qV0FIMVEyQlFFSXdGZVpXQ211MDUvMFNFb3FMSjVYSUozTzdnc2RubTJ5b0NOM0h3bGhORDA2aW9xSE1iTjI2YzFhMWJ0MHlhcHZ0V3h6N3I5WHFBSU9Iblh6Tml5V0p5MmFCUFEzcDZlclZ4VTZXbHBXSEc5S240Y3ZMWGlJNXVnWUlDbmhvbklpSVN1M2J2QXdBTWpIMi94bzcxc3FWTDhIcjNIblpzSnVKK3paM3pEVkpTL2dGTjAyamZvUk1HZnpRRUZFVUJBRkpUVTVFd2R3NVN6cVpBb1ZDZ1k4ZE8rREJ1c1BSNlRkaWR0dmxpekF1UXkrVWdDQkpoWVdIb0h6c0FyVnZIUEpxZUttditlVTMyb1YxZjVQMVdVQW1vbGZQVUJBTFlDa0NONzFWVHFrUVJGbDBacVBueGJSMWhvV0hJejh1dTBlTlVWU01meGthVlNpVWFOV3FFOFBCd0JBY0hTMExNdGx4dVlyT2ZRcUdReEZWbE1obG5JOFRNMkhLNUNUbUNVZ0FsYjd6eHh1MG1UWnA4YXpRYXZ4RmV2eTh6R0RLaDBlcHFmRjAwT2pjWURJWnErNzZMLzE2QWo0OFBXcmVPQVUzVDhQSHhrVHhuUVFxdHdwblk2ckFmbHk5RlRrNTJ1ZWNuVFp5QVdzSEIrTzMzTFZpMGVCbU9Iam1NcEtSTmZQakVzaGc3WmpUcTFXK0FUYjl2UVVMQ0F1emZ0eGUvYmZ5MXh2YXpxdHRNWExBUW03ZHVSLy9ZQVpnOWN6bzIvcnJob1Z5MDNqOTJoOXZvLzBsL2V5VjBoYkpUQkFCWWM2MUYzN2UrTnZIM0wvSit5M2ZJcFJVTGo3THFweTJvZ1dCZ1UvMmtLRms1VUFNSFpHWm1vcmk0V01xcCtmcjZJaWd3Q0tHaFlhaFh2ejVvWVZSS1BNK2FOV3VHamgwN29uMzc5Z2dLdXJzcTlJb2ZsNlAzTzczd2RxK2UyTHBsYzVrM2FyRmc5cXdaNk5mM1hmVHYxeGNIRHg1NCtCNWJtWmVpUWFOR2pad054WmNMUzBXeFZkaFVTNFVUMG5GQ2dSUEQwbi8vL1pmVjZYUXJNekl5OUw2K3ZvTUlncmhuVVdZclkzMGd5V2FOUmd0andmMVR1Sncrbll4SlgweUEyV3hHY1hFeHVyL0doNWs5M3VpSmZ1LzNyOUozSEQxeUdJa0o4NkRYcHlNME5BeWpQdmtValo1OVZucDkvNzY5V0xac0NUSU5CdmdIQkNBdWJqQmF2Y0JmYk1PR2ZvUmIvL0ZDdHlNL0hnNlpqRUp3Y0FnU0Z5d0V5N0pvMjdZZHVyM3lDaFFLQmZ6OC9kRThPaHFYTGw0RXdGY3NQYjI4MEx0UEg5QTBqZUNRRUxTT2FZTi8vNzFRWSt0K045dFVxVlJvM1RvRzh2Z0ptUGpGQkhUcTNPV2hNTE5vK2pTR2NWa3kySndTSVp6aHJ2MW56bHJ6d3MydnpzSmVUY29abjVvUWZoSldnQk5CamVVZEJ0S21VQ0RuYUtGUWtKK2ZEMFpRbXFKcEdsNWVaWjVhYUJnUGFvNlNlWFhxMUFGRlVkaTVjeWNVQ2dWZWZ2bGxaR1ptMnBGR09NNjlpbitucFB6RG4yUExWOEJrTWlFdWJnQ2ltajJQb0tBZ2JOKzJGYVdscFZqeDB4cms1T1JnMElleGFOeTRpVVF0bnA2ZS9uQThOdEYwT3AxVHo4M1QweE02bmM0WnhiaWRNSXlvbitEZ3Vaa0Z6NjBVUUxHL3YvOGYvLzc3N3lTR1lmYmU2MzVXVjZHZ1N0c3kzbi91b1duVEtHeEsyb3FQUjR4Q3JWckIySlMwRlp1U3RsWVoxSzVldVlMUEo4Umo4SkNoMkxwOUo5NThxeGRHalJ3T1EwWUdBT0RtelJ1WU12bExmUFpaUExaczI0RlhYMzBkNDhlUGswUnBFaElYWUZQU1ZnREFuTG56c0NscEt4SVhMT1JEQkpKRTd6NTk0ZUhoQ1lDbjBqbDg2QkJhdHVSSkFIeDhmSkNRdUFCS3BVbzYwVThuSjZOeDR5WTF0dWIzc3Mzb0ZpMWh0bGdrUUg3UVpqbHJnUGJENS9rYkwydmQvL2Z0Yy9OZnVQbFZDdXdaYjRzZEhxVUUvekFEaEFVRXlrQ056K3h3VnF1Rms4bDVDdis4dkh6STVES29WQ3JVQ2F1RHFHYlB3OHZiRzFxdEZyNitmcnluRmhhRyt2WHFRNnZWT2wzWHRMUTB5VmxoV1JhZW5wNTI3MW02WkJIV3JGNEZBRWhKK1FjZkR4OEtBTGh5K1JLYVJrVkJvVlRDemQwZEw3endQNXc0enVzOG5UbHpHbTNhdkNpY1R3VGtjaHFYTHBVZGgxa3pwejljWUFNQWQzZDNDZHhDUWtMc3dPME9GT08yWVNrcmhLYmluVW9FdHhJQXhjODg4OHlwbjMvK2VVcHBhZWx5VnhyNnpyWmxTeExhdnRRT3JWdkhRS0ZRb0hPWHJtalFzQ0YyN3R6QmgwTGVQbGkyZktVa2xmYnFhNi9EWWpiajFxMy9xcnlOYzJmUG9tUDdkdWpYdHpjYU5HeUlGOXUrNVBSOUM3K2ZENVZhamE3ZFhubGd2NzhxMnlRSUFsNmVYakRXY0JLOHdodmd5ak5RZFk1QWlTZTFPdUhYNVN1Ny9UYm1sZ09vT1FKYkNRR1VBb1NaZjhCS0NLcFNKTUNSSURpYXBqbVNKRkZTWE13VkZCVEEzY01kT3EyT24vMTBjNE83dXp0VUtoWGMzTno0bkpvQWFyb0tSRmhvbWdiRE1QRDI5a1pNVEF4WWxwWDREa1Y3NTkwKzJMdDNEeExtZllmSlgwN0MwR0c4ZmtQZDhBaWNQSEVjUnFNUkJRVUZPSGZ1ckhUVHo4L1BoMUtweE5tektmaHN6R2pRQ2hyNStma0FnS1RmTnlFOFBPTGhoYUsyNXVIaGdVYU5HbFY2RW9uL0Z4NGNRUkNFeFdMaGJPc01MTXR5dHYxdFlsZ0tnT3ZkdTNjYWdJVHM3T3diWGw1ZWd3RGNjNGIrd29YemlCc1lpMlhMVnlJaU1oSkxseXpHNXFSTmtwZFNrWDAzNXhzY1BuUUlPVGs1bURqcFM3UjVzZTBqQ1d4NnZSNFJFWkYyejlXdUhRYTlubWN4MFdxMStIUFhUa3laOGlXTWhVYTdNS0txMXVqWlo3SHp6NzFJVDAvSEY1K1B4N0tsU3pCZzRJZDI3MW01NGtmOC9mZFJKQ1FzY01xWlZ4TlcxVzF5SEllYzNCeG9IMUlQSVZka1NiODhmL2VxaHNlR25NSXhpZnhSQkRaVEJhR25CZUJFcFhhR0FNRUp3QVlLQkNlWHk2RlVxcmk4dkZ4UWxBd0IvZ0ZDOVZNSE56YzNlSGw1UWEvWHdOUExTd2cvRzl5eEYwME1SdzhkT29TbVR1aUp0Rm90QmczNkNDTkhETU03Ny9aRy9mcjh2R3lUSmszUnNWTVhEQnM2R081dTdsQ3IxRkNwVmRMbk5tOU9Ra2xKQ2FaTm40VjUzMzBMQU1qSTBHTnowdTlJblAvOW93RnNBT0RwNldrSGJqWWdWZzdZeEdPTHNpWmV3bWF1VkFRNmFhNE5BQ3VTNG5sN2UyODZmLzc4alhyMTZ2V2pLT3JsZTkxZnVWeU92LzdhajRqSVNCdytWRFhPOWhFalA4R0lrWjlnbk1CZytxaWF2NzgvOUE1VVRMZHZweUlxaW05Rk9mRFhmcXhlOVJQbWZEY1B3UUlQM1lzeEx6aTlJVG1DbmFtMEZOdTNiME9YTGwyaFVDb1JHQmlJOXUwN2xFc0FiMWovQzNidDNJRzVDZk5ydEpIelhyZDUvUGd4MEhJNTZ0V3YvOENQajVXeDd2dGJmMzV6dHgvalUxR0pPcnQ5Z1lDUWV0UUFnaVVKZ2lWQWNDVEhnZ0xKeVVCQ0pwTnorZmw1Y0hOM0IyTzF3bURJd0xQUE5TNmJLUER6aFZ2cUxmajYrcUYrL2YvZjNwbkhSMVhlKy8vem5HWDJ5YjRNeVlTRWtJUmN0dUNsd3JWaVhTNHVWRnNwdUsrWHFxMC8vZlc2SWxhOXJiVjFCWmNxeXExNlJhdTFldVVWYmRVZjlkNjZ3cjBnb2xHSkNZUWtKQ1FrSVNHUVpTYVptYk04dnovT2VVNmVPWmxKUUFGSnpQTjZIZVprTXBNWnpweDVuODkzTDBmcUtNZUlOWnY5N0xQUEFCanppTzJkcUJzYUd2REEvZmZpbnQvZWk3WFBQWXZKaFVVNDIxVEtsMTUyT1M2OXpFaHN1T2JxbjJMcTFCTEx5bk83M2JqbnQvZENFQVJFbzFHa3BxYmlyVGZmUkgrb0g5ZisvSnB2M3hTMXcyM216SmtvS1NsQlFVRkIzRmkvMU5SVXkrZm1kcnVaYVVyWjNGS2JXY3I4Ym9yTk5CMWdwdW1xVmF2dUhoZ1llUExydnRkL21ENERIMys4Q1hWMU94RGcwak0rM3J3Sks1YmZZdjM4NkNPcnZyWG8yWWhmRHJPN01RQlFYYmZhU2dIQTJlZjhDQjkrK0Q2MmJQa1lxcXJpdmZmZXhWZlYyM0RHbVdjQ01BYU1FQUlJb29qZTNoN0xSMEwxK0tEUHBMdzhiTjYwQ1lxaW9NdU05anFjVHJ6NHh4Znd5aXN2UTFFVTlQUWN3SVlOSDJIMjdObERwdkNiZjhVYnIxZmlzY2RYSDdVK2RRZjdtdEZvRkI5djNvUUg3cjhYUDcvMnVxTWVPT2pUQnArOS9mSGZyVDM3YjNlTVpub09BSWlZMDZSaUFCUkN6SUhHRkxvZ2lWUWtBcFVnVUJrQ0hFU2toQUIrZndyeTg0T1lWdjRQY0xuY2NMdmN5TWpJUkU1T0R2THo4cEdlbG82OHZMeFJvUVlZRVZRbVJCd09COUxTMG9ZMWFmMTA2eWU0L1pkMzRwUlRUOE1qanoyQm1xK3E0NEtIaXFMZ3BSZi9DRUtBV2JObVd6NWsxUXhrOVBRY1FFTkRBOHBLeTNEVjFkZmdsVmZYWWUwTEx4NDdpbzAzUzJmT25EbE1zWTJ3VVdJc0VFS3NOdU9ta3FOY2dxL09lclFEMEcrLy9YYjk5dHR2LzQrV2xwYTYvUHo4ZnlHRUhIY283OU1oeS9CNlBIanhqeTlnd1VrbjRhdnFiV1BHaDJaUDBIM3dnZnZ3NEFQMzRmUXp6c1MvL2VwdWxKYVc0ZGUvK1MzV1BMVWFIZTN0bUZ4WWlJZFdQV0pOTTFyMHc3TlJYYjBOVnkyN0FxSW80ZHpGUDBGcGFSbjIyOHFGYnI3NVZxeGErWkJ4Slo0OEdjOCs5d0ljRGdjZWZHZ1ZWai94ZTd6NnlwOGh5ekpPUHVWVVhQa3ZQd1ZnNUNtdWZPZ0JTSktFaXk4OEw5NU1mT2xsQkFLSFA1ZndZRi96RjlkZkIwS0F3c0lpM0hMcmJVYzFqMDBIL2J3aHNyZnlsSmI3NnRBNGxPSmtVMnJXTGNGUUh6VUFSaVVCaUE1UUtnQlVwSVJLZ2dCUkEyUWlVaWNrT05QU2gyby9mVDRVRkJRTTVhbVpnWUlkTzdZUGkzNG1XMDFOVFVoTFM4UENoUXNCQUo5Ly92bXdtUjhYWERnMDdDZ3pNeFBMYnh1YWY3Qng0d1k4L3RnanFLZzREZzg4dU1xQzVLSWZubzI2dWpvc3U5SlFjNys0NGNaaENsczZGcjk0cWFtcG1EVnJsdFVPaFJCaTNmTDczSDBXM0FCUXJxcEI1M3h3aVV4VHJhQ2c0TVBYWG51dDdweHp6cm5BNVhJdE85ajNxS2dxVHZ2bmhmajlZNC9naGh0dnhoL1dQSFhNSGNjenoxcUVNODlhTk96KzB0SXlmTFJ4NURtbUo1NjRJT2tYMStsMDRxNS8rM1hjZmRmOGJIamZ6M256L3lsaE04U1MwbEk4OXZqcWhIOWJGRVY4dU9GL2orcHhPcGpYSE8xNGZkUGw5eWZQa3h3SWgvLzAycjRQMzcvclFHVWZaM3JHRWdITjlLY3BBRFdnUmcyZ0VRcWRnRklDUWtVUUtpb2FKQUF5a1F5b1FZYmI0ekdTYi8xRFByWHM3QndqcGNQTVUvdmU5dzYrV3RHcTJQbWFhOEdDazdCZ3dVbkQ3cGNrQ2JmY3VuekU1eDZUWUdNZk5BODMrNVlBY0JiY0ZFV2hab1VDSDFTZ1hLVUNVMjhhQU8zODg4OXZCZkJrYTJ2cmwzbDVlVmNTUWtadHdxNXJHcjUvNGdJME5UWEZSWG9FVVlSK0JKdDNUcXp4dVVSUlJEZ2Npc3VYMUhYOWkxMjdkbFdlOG9NVGQ0QkxaeG9CYWpFeXBOSllkdzZkQUdhUWdFQUVvUklFeUJBc3FMa2d3K1gwd09QendlZnpXVDYxbkJ5alRLcW9NSEdlV3FMbDhYZ3hNQkErcU1jZHlTVWR5eCsyMSt2RjdObXpJWXFpdFkwQ09tb3FPQll4dFFjVm1HMnEyMDFUQUZvd0dQeGc3ZHExWDExd3dRWG5lVHllbjQzMi9qSXlNdkIvZi9HdjZPZnkzUEx6ZzlqZDNJUllMQWFxNjZpdHJVRmhZZEVSTzBadXQyZUNDb2Q0Ykw3Tlk1YnN0WE55Y3REUnNkY0NXeWpVLy93ZlgzaitvL3Z2dXpka1UybDg1SlBmZUtpWlppZDBFMmpVaUh3S1ZBS0JURVRxZ0FnSFpMaUlETGZEQTA5SkRueG1TZ2VER3QvOTFwNm1rV3hOS1M3QnJzYjZFZUhtOFhneHBiamt1d3Myd0NpL3NzUE5EcmtFSmlwVGIvWXFCY3I1M3BocHFwdW1xUVpBWGJac21iWnMyYkpuNnVycVBpMHVMcjVFRk1WRHlzbkl5OHZEcWFmOU15Ni85Q0trcEtSYVpVeEFmTHJIVjlYYjhNVGp2OGY5RHp5RXFTVmYvME5PZEtXZldFRFlITktiYUFuZjBqRUxoL29oSmtraG1UUnBFdHJiMjlIUjFycGhkMHZyMjB1WExHNUtvdEo0bnhvTGpNV0dWSm94UmNxNGNCczFuNElnVWtrU0lVbG1odzZIREFkckVtbk9LR0Q5MUN6ek16L2Z5Rk9iVm41SXFUWXBxYW1vT0c3dXQvNzVIOUdaQjRkelVVcXQrUWt0TFMzbzZPaEFWMWNYZW5wNjBOdmJpM0E0akhBNGpFZ2t3by8vSTl6Z1pxTHJPcHVsUUFDd2VRcWlDWGlaVXVvQTRBRGdCT0FzS1NseGJkbXk1VWVOdTNaZG1SczRPb00vOTNic3dkeEQ2UERSMU5TTTd2MzdKenJvRGp1T2Jjakt5a1JoZ2s0VFRjM042TzQrK3Nkc2IwY2JNak16VVpTZzBTU2xkRTluWitkL3pwa3o1NU9Pamc3RkJyVm9Jb1VHSzlwSlZCaU5JVFRURXFGc015dDBJRWtTSk1tYVV3QW5CemFQeHdPLzM0KzB0RFJrWkdRZ056Y1grZm41bURKbHloR3RKZjVPS3phTHdJUmc1c3laN0FNYXB0enN0K1kyTEdKS0NLRW0zTUFyTjJhYXdwaEdyd0ZRNit2cjFZeU1qTW9ubjN6eWt3VS9PR1Z4UmtibWxVZjZpaTdMOGlFOXA3QndNcnE2T3JHM293MCtmOHJFeklOUVAwS2hmbWlxbWhCcUFGQlVXSWpPenFOM3pOaDcwalV0SWRUQzRmRExiN3p4eGtlWFhYYlpnVkZVV3BSVGFOWkVkbE9sYVNiTWRBNW1Sc2RiMmRiSzI4MzFValBiZVdkblp5TVFDR0R5NU1rb0tTbEJlWG41bUQ0UHhveGk0MWREUXdQcTYrdlIzTnlNOXZaMjdOdTNEL3YzNzBkZlh4OUNvUkRDNFRBR0J3Y3Q1V2JPWENEY0dFQmV2UW1tZWhOTTBFc0FKRTY5V1FydS9RODJWRXdwTGw0cWl1S1pSK0wvMWJtM0haTUN1WWZjdG9oU2lsMU56ZGkvdnh1YXFpTVMrVzQybjNTN1BSQkVFVm1aV1Nnc0xCaFZiVFEzNzBiWHZuM1FWTzJJSFRPMzJ3TlJraElxTlVWUi9ydXFxdXEvNXMrZjM4SUJMUm5VRXBtZDZwRFphUUhObUUxZ0FzMG9aSTlYYUY2djE0SmFSa1lHc3JLeU1HblNKQlFXRnFLa3BBUlRwMDRkOCtmQ21BUWJBTFMwdEdEbnpwMFczRG83TzNIZ3dBSDA5dmFpdjc4ZkF3TUQvR2kvWVhEVE5JMll3NXZabUQ4R04yYWVzcEYvTWc4M0FNNVBQcTFha0pPVGUvN2g2dFE3RUE0aDFOOEhnQjcyUnBNVDY5aGJ1cTV2Yld4c2ZMdTB0TFRXVkZ4MmxSWkxvTktVQkNwTjV6WnFXakJKb2VZeDB6bjgxbnlDZENQeWFVS3R0TFFVQldZbHlWaGYwbGg5NHdVRkJUQ3JEbUFXeFZ1M2ljeFYwMFNsZ2lBUVFSQ2dLQW9saExDR2wvYkFnaFVwSllRdzA5UTZBWStmZTl6N0pTVWxteDUrK09FelVsSlN6aWVFZkczZDd2ZjdJVWtTOHZJbUlSQUlUSHpyeC9HaWxPNW9iMi8vNjhLRkM2dHFhMnNaek95K3RKak5oOFpEelJZY3NJWVhVMUVVcVNpSzF2ZEJsbVhLZXU0eHFIbTlYZ3RxUnBEQWJEdFVXSWl5c3JKREh2MDRBYllqdEhKemM4R2FVUEtBU3dRMXp2ZkdaaUVTUlZGQUNHRUp2WlFPRFRYVmJXa2hHZ0RWbkcrcW1QNDM1ZHh6ejMzcmpqdnUrUERXVzI4OVBTMHQ3WHhDU1BIRTEzZGlKUURhcnE2dXJyL2VmZmZkVzllc1dSUGxUTWxZQXRPVDNTcDJzNU9kaTh5WHhpYXkyMVdhTE1zVzBPeFFZd0VDbHM1UlZGU0Vzckt5WWUyRXhyd3AydFRVTk9iL0U1RklCSTJOalZhMGROKytmVmEwTkJRS1lXQmdBSU9EZzRoR281WlphaGJvRWxZenljeFNMbXBLYkthcFNDbVZtSW5LK2Q4Y0FKeTMzSEpMeWhWWFhMRXdKU1ZsNlRkcGFqbXh4aFhRR3ZmdjMvL21talZyUG4zMjJXY2pIS0NVSkVDTGNiQ3pSenVaVXJPaW5jejg1S3dVcTlzMFUydDhvQ0ExTlJWcGFXbm0zTThBQ2dvS1VGeGNESmZMTmU2Ty9aajFzU1U0aWJCanh3NDBOalppejU0OTJMdDNyd1U0RmxSZ2dPUDlic3ozeGdHT21GMTlDZk8vSVQ0MVJJUVJYRWdFT01meTVjdjlLMWFzT0RVakkrTmNRc2lNaWEvM2Q5S0hWdFBaMmZtM1gvM3FWMVhQUFBOTWRBU2cyVGZGTkR0VkRtWWFiM2JhVlpxcDFPS0FsaWp5eVlER1VqbUtpNHN4YmRxME1adk84WjBCRzF0TlRVMW9iR3hFYTJ1cnBkNE9IRGlBdnI2K3BFR0ZCSUdGdU1ncFUyOE1jaGpLZlVzS3VPTGlZc2ZHalJ0UHlzM05QVnNRaEJNbXZ1N2pmMm1hdHJtbHBlWGRrMDQ2cWJxMXRaWEJpUWVhY2hCQVk4K3pBZ01BS0IveFpDcU5EeEFrQ3hLa3hFMW5EeUFZREtLNHVCaEYzOUlnNHdrZjI5ZGNSVVZGZkZ1ak9CL2NLQUVHZGlWazZvMXFtbWJsdmNITWRUUFZXMXh3d2VaL2l3RndORFkyT3ZMeTh0NEY4RkZkWGQyY29xS2loYklzLzNqaTZ6LytWalFhZld2Nzl1My9NMmZPbkYwY3pIaVZGa3NBTlNVSjBQamdRRnlTTGEvU2VMUFQ0WEFNODZjeDA1TlA1eWdvS01EVXFWUEhWWkRnT3dNMndBZ3E4SDNiWEM0WCtKUEFEcmRJSkdJQkxoYUxXWkZUQmpjdXVFRDRrWCtzUXdpTWZDSVZnR0lxT0F0d0FCeGxaV1ZiQUh6KzdydnZ2anB2M3J3ZitIeStzd0VFSjVBd3BsMGZyZjM5L2UrOC8vNzdueTFldkhoZkVxQWxncG95a2tJekw1aDhsQjRzcHNXdGtKVHlBQUFUVGtsRVFWVG1CdWk2VG5WZGg2WnBWbDh5UlZHc0JIV202QndPQjhMaE1OeHVOL3I3KzlIYjI0dnQyN2RqKy9idGgrVVkrUDBwRUVYQlNobVpNRVdQb3QrdHJxNE96YzNOYUd0cnc5NjllN0YvLy80Ui9XNW1LVmJDNEFLWDFBdlROR1dsV1hGQkJwdUp5cHVxTWdESEpaZGM0bHE1Y3VYOG5KeWMweVJKT20wQ0UyTm5xYXI2Zmt0THkvL2NkTk5OdFgvNXkxK1Vnd1Nha2dCbzlxQUFnNWxPaUFDanhsT2dnaWhDRWtXSXJDUktraUU3WkRoa0I0eXA3S1pTYzd2aDhYcmg5L21Sa21xTXhzdkt5a0p1SUlCZzBBZ1NIQWwvV3BqTHdaeDdET1Znaml1d1hYVFJSWGoxMVZkeC9mWFhZL1hxb1g1ZnJhMnRhR3Bxd2cwMzNJRFBQdnNNNTU1N0xnb0tDcEw2M2JpRVhwaCt0NUdDQzJRVXdFbEpBQ2NEa0JjdFdsU3dkdTNhK1RrNU9RdS9TVDdjeERxaUY4Z2RQVDA5SDN6MDBVZGZMRjY4dUp1RFVpS2dLVW1BcGlZRG10a2prREpmR2hFRWlLWXZUUlFOb0VteVdSb2xPeUE3SEhDYVVITzdYSERINWFnWjZSeFoyZG1tK1RuNXFLaXB6cjN0eUpzVU9HWnlNY2VkS1NyTE10NTQ0dzA4OGNRVDFoVXFHQXhDRUFSVVYxY0RNRHAxQmdLQllUNDRleTVjTEJhREtJcFFGSVZsZFpORTVxbk5COGM2aFFpbWlTcHhKcXBrbnZBVzJOYXZYMThmQ0FTYUFieStiZHUyOHFsVHA1N2dkcnRQQXpCUjFmN3R3cXh0WUdEZ2c1cWFtcXA1OCtidFpqN1Znd0FhdjZtbVF0TVNtWndNYUlJZ1VFcXBtVjlwSk5xS2tnaEpaTFdlRW1UWllTZzFGaVJ3R3BGUHR4bjU5UHVOeUdkR1pnWnlzbk9SbDVlSHlZV0YxcXpOSTcyOFBqLzI3dDA3QWJZanRSWXNXSUFOR3paZ3k1WXRtRDkvdm5YL3hvMGJNV2ZPSEd6ZHV0VXE5alVuemNjQkxod09XMEdHU0NSaUFjNVViOVFlWE5CMW5ROHdKQW95YUFCRTg0b3RVVW9aMk94S1RwNDFhOWJuQUw0QzhQejI3ZHRuRlJZV0h1OXl1VTZaZ056Umc5bmc0T0JIOWZYMVgxUlVWT3ppMVZVU29La0hDYk9FUU9NREE3cXVVMW1XTVV5bHhabWVUcmo0ZEE2dkY3Rm9GRnMvK1FRWFgzSUpNak96a0dPbWN4UVZUWWtiUlB4TlYyMXREZDUrNjAxVVZNekI2V2NNTDVYMmVuMEk5ZmNlTTUvbHVBTmJSa1lHVGozMVZGUldWc2FCYmQyNmRiamdnZ3Z3NmFlZkloZ01vclMwRkI2UEJ6VTFOYWlzckVSUFR3L2NiamZLeTh1Um41K1B3Y0ZCU0pLRW5UdDNZdCsrZmRhZ0UwbVNhR1ptSmtSUkpLRlFDSkZJaElxaUNOYXhGd0FSUmRFQ25LN3JnbWwyaUdia1ZEUlBmR2FtU2dsQUo1V1hsMjhGOERtQXRWOSsrZVcwNHVMaU9SNlA1NFNKM0xqRHUzUmRyd21Id3gvdjJMR2o1dmpqaitlVm1jNkJhU1NncVJ6UTdPWW1pNXpUWkVCajZSdXFxc0xoY0VCa0hUa2swNEpnS3MzaGhOTTEzUFQwcDZSZ3puSEhJUmljYktSekZBU1JrM040bzU1UFBia2FqWTBOR0FpSGg0MWw1TmZSSEN6K25RTWJBQ3hkdWhRUFAvd3dIbnp3UVFEQTRPQWcxcTlmajVVclYyTEZpaFZJVDAvSDdObXpVVmRYaCtlZmZ4NlhYSElKQ2dvS1VGdGJpemZmZkJPeUxDTVlER0wzN3QzbzZ1cENhV2twWkZsR1QwOFA5dXpaZzRHQkFhU21wdEpZTElaSUpFSjBYWWZYNjZXYXBpRVNpVURYZFNwSkV1R2lxTVM4V2dzMk01V3ZhT0EzSG5UUzdObXp2ekNWM0t2cjE2K2ZOSGZ1M09scGFXbHpaRmsrQVVEcUJKNE9hZlVxaXZKeGQzZjNsNXMyYldwWXNtUkpONFlpa2NuVVdTS284UjAyVk50emRVNmhVYjQvR2t1d0ZTd2ZtaEhCRkFTQk9wMHVQajhOc3NNQmdSRHMzcjBibXFwQ2xDVE1ualViK2NFZ0tBWCszOXR2UVJBRXBLZG40SkhISHJlc2tGK3VXSTYydGowQWdKNmVIbmk4WHZ6NWxkY0FHSjF4bnZqOW8ranQ2MFZHZWdadXUvMlgxcEFlQUhqdFAxOUZaZVU2Ni9FQWNQVTFQNFBENGNDcWxRK09tUTk1WElKdDhlTEZ1TzY2NjFCZFhZMlpNMmRpL2ZyMW1ENTlPZ29MQzYzSGVEd2V2UHp5eTdqNDRvdHg3YlhYb3EydERjRmdFS0ZRQ0pzMmJVSkZSUVZ5YzNQaDkvdVJsWldGU0NRQ244K0hmZnYyUWRNMHVOMXVSQ0lSQUtEcDZla1FCTUV5VVZWVmhTaUtiTllDaTZJUzB6UVZ6UHNZNEVUeml5S1pxazYwUVk0SG5iUm8wYUpkQUZvQS9MMmlva0orN3JubmlvdUxpNmY1Zkw3WmtpUjlEOEJFSzEyYmtGQlY5ZE8rdnI3cXVycTZ4cXV1dXFxMXBxWkd0eWt6eldZNkpnTWFEelArT2JyTjNMUVVtcmtoR2RCWXp6UkNDRnd1MXpDVnRxZHREM0t5Y3pCOXhneW9xb3J0dGJXWS8wOG5JRDA5SGQvLy9vbUl4YUo0OVpVL1l4bzMzL1QrQjFjYUJPL3R3Yyt2dVFvMzNYd3JBR1BPNTMyL3V3ZS91KzhCVEpvMENlLzhiVDNXUFBVazd2N05iNjNuVnN5Wk02enpzTVBoR0hNZityak5ZMXV3WUFGZWYvMTF6Snc1RSt2V3JjTjU1NTAzN0hIVjFkWG82dXBDWldVbHVNbFcwSFVkMmRuWmNMbGNhR3hzeE02ZE82MDBFVVZSa0pLU0FxL1hpNEVCbzRlWDMrK0hwbWxVVlZVTURnNFNWVlVoeTdLVmEyUkdVVmsrRWpYSGFRMVRjS2FaYWxVMmNKQkxCRHZwaXkrK2tPYk9uVnNOWUR1QXR3b0xDOFdYWDM1NWNtbHBhWEZxYXVvMFdaWm5Fa0pLdmtzVW81VFd4Mkt4cnc0Y09GQy9mZnYyNXNzdnYzeHZhMnVyYmxObGlkUlpNcFZtL1k0bFk5ditCdTgzaXpNM2VhQnhDZUJ4UUdNS2pSQUN0OGM5bE1aaG1wN0JZQUYyMXUxQVcxc2JTa3BLY01sbGx5RWozWWg2QmdJQlJLTlJ1TjN1UkNZMmZuUDNyM0gyT1QvR3ZIbUdTMmJYcmthMHRyYmdEbk5ndDA1MWVHMURWY3JLcHFHc2JOcVlQdytrOFhxQ0wxMjZGR3ZYcnNWdHQ5Mkd0OTkrRy9mZWUrK3d4NmlxaWx0dXVRVS8vYWt4MDdLOXZkMXFPUzZLSXQ1NDR3Mjg4ODQ3S0M0dXh1VEprekZqeGd4VVZWVkJraVQ0ZkQ1cmlJdlg2N1ZTUTJSWnB0Rm9GRTZuazVqUlUycUxvREt3V1ZQc0thVzZlUitEbkFBalJZQXZ3QmR0Z0J1MjM5emNMSjU0NG9rN0FOUURlQmVBdUdyVkt0L3BwNStlbDUrZlA5bm44MDJSWmJsRUVJUnBNSHJMamVVVjFYVjlSeXdXYStqdjcyL2V2WHYzbm5mZWVXZnZuWGZlT1FndUoyd0VtQ1dEV3R3K3A4eml6RXliT3FNMm9GRytrd3pmWWNZT05MWUJnTmZqalE4UWVEekl5OHZIak9uVGNhQ25CenZyZHFDOXJRMDMzblFMSnVYbElTOHZEenQzMWlVOE9QL3g3Tk53dVZ5NDdQSXJyUHNVUlVFZ0VNRGFGMTRjOXhlNGNRdTJKVXVXNE1ZYmI4VFRUeitOc3JJeVRKa3laZGhqcGsrZmptM2J0cUhFSEtaU1VsS0NaNTU1QmhzM2JzUlZWMTJGVFpzMlllSENoVml3WUlHVjg3WjU4MmE0M1c3NC9YNXJxclhYNjdVaXB3NkhnNWtWbEc5b3FXa2FCRUdncXFxQ1VncFJGQ21sbEpoQkI4S3BPRlo0VHpqSUNTYmtoQVNRRzNILzFsdHZIUVRRRGFDR00zMkZ5c3JLclBMeTh1eXNyS3hjbjgrWEo4dnlKRkVVZzRTUUFnREhTcnVIQ0tXMFJkTzBQYkZZckQwVUNyVjNkbloyMWRUVWRGOTQ0WVVITUpTZHI0OENzMlFLTGVFK0J6UGREak1NRFFDaXlkUlpJcURaaXRhdGpVWGpBY0RuOThlVlJ2bDhQbXpkK2dtbVRTdkhxYWVlQnJmYmpYdC9kdyttbFpmRDUwdnVjZGk0Y1FNKy9PQUQvUHZUejhZbDVaYVVsS0N2cnc4ZmZmZ0JmbkR5S1dob2FFRE5WOVg0MFkvUHRSNnpjMmNkcXF1MzRTYy9XVG9CdG1OeEJZTkJ6SnMzRDNmZGRSZnV2UFBPaEk5WnNXSUZ6anJyTE54OTk5MjQ5TkpMVVZOVGcrWExsK1BtbTIvR2pCa3prSldWaFk2T0R2ajlmaWlLZ3ZmZWV3K1JTQVN5TENNOVBSMzc5eHVUejMwK24xV3h3RTVTdDlzTlZWV3hmLzkrcWlnS2ZENGZKRWtpZzRPRDBEU05NajhHU3hjUkJJRVYyNE1CYmdUSVdZQ3lkUjBaYWVPVGg0VWxTNVlNQU5qRC9WMzJHdVRSUngvMXpabzFLeVVRQ0tTa3BxYW1lRHllRklmRGtTSkpVb29vaWltQ0lQZ0lJVDVDaUpjUTRqWkJ5Qm9Bc05jQ0J3WnJiQnlsZEpCU0dxYVVoblJkRDJtYTFxK3FhbDgwR3UwYkdCam83K25wNld0dmIrLy84c3N2UTh1WEx4L2c0RVZ0SUtNandFeTNLU3h0dEkxMTBVZ0FzamlZOFNBRFM2ZzFwNlR4NWlhRG1hMnRVQnpRV044MHA5TUpTaWxTVTFOdHJidFRjZFpaUDhTNzcvNDNHaHZxNFhRNmNlZGR2NExQNTBOcmF5dHV2dkZmb1NneDlQYjI0b0x6bHVBZjU4N0Y3Yis4RTZzZmZ3eVJTQVRYLzUraENaS3JuL29EL0g0LzduOXdKUjU3NUdIODRkL1h3T1B4NEdiYjRPR3F6ejVEWmVXNk1RKzJjVmQ1b0tvcTFxMWJCd0JZdVhJbGJydnROalEwTktDNDJPZ0JLVWtTWG5ycEpWeDAwVVVBZ0QvOTZVKzQ3Nzc3VUY5ZmowQWdnS3V2dmhwMzNYVVhDQ0hZc21VTHJyNzZhdFRXMXNMajhhQzgzSml2V0ZWVmhXWExscUcydGhaLy8vdmZzWGp4WXF0cVlkZXVYV2h1YmtaRlJRVVVSY0hPblR1aHFpcUN3U0NibG9YdTdtNm0xQ0FJQWp1eENlZUxzeURIOWhOQUxnNTJuSm9URW9Fc3dUNS9tMmpqWDJla0RRbHU3ZnR4YnJBRSsvenRTSnNkWlBZdG1Vb2J0czhHOXlTQzJHZ3dZL3UyeHFVSEJUUmVwZkhOSUh0NmVqQnBVajY4UGkvOGZuTytwMW5BbnBzYlFINSsvaUdOd2ZzMlZzUE83VGo1NUpNbndEWldWbTl2TC9iczJXUDUzK3oxcG14NGpMMlpKVmR6Q200TW9GVzh6TXhVUHNqQXlyVzRzaTMrY3lJMjBNVkJqbElRZ0E2RDNTSCtuQWhzUE9DRUJGQWJDWEFqd2MwT05DU0EyRWdLVFUraTF1eU8vVkVoWm5zOTNtL0dZR2JkY3FhbmZYQTN0WGR0WmpCenVkeElTZkVQYXdMSkZGcDNkemNLSmhkWnpTQXpNak90NG5LL1AyVk1mRStPSmJDTkcxUDBoQk5Pd09iTm04ZGNFSSsveUtTbXBqTHpsSEpkSEFqWDNZRVFRdUpVSEl4eGdjVHcwMEVBQ0VrRUpVb2gyS0JIUmdIYVNIQTdGT1YyS0dBN0ZMTXpHZUNvRFdnakFVeTNBd3dnbEJCUWdJQVFDMlFHekFRQkFqRWhKZ29RK1JJb3RobWxVRU5xVFpZaENBUUNJVkExRGRtcHFjTWFRZnI5ZmhCQ0VBd0dvV2thZkQ0L1VsTlM0ZlY0MGRmYmg3N2V2bVArUk00UEhsdk5hc1lOMkRadDJuVFVYb3NmMk56ZDNSM1h5REljRG8vVXFkZFNib3FpV01yTlZHOThEU3JoRkJ6bGxCeTdwVFpUbGNGRTU5VWRyN0lJQVVrRVBRNlNvNEZNR0FWb3lhQkdFa0I4TkxWR2t5aTNaS0JqY05KSGVnNXo5ck9ac3B6elA1RXFzOEdNUUJEWTdGcUJDc0x3bVJxU0pCbGdrMlRJSnRRY1pxS3QwK0dBcnV1UUpCbVptWmxXNVFCckJDbUtJb3FMcHlMYm5FVXdzU2JBZHRSWFFVRUJjbk56MGRiV1puWHBUV1Nlc280aEl3R08zeGpZUm9NY0J6aG9ta1lKa3hoRFFJdURqVTNoeFVHUFN6MFpCakRUdEIwSlpFZlN4MmI3bVNtcHBNQ2ppWjdQZGM3QXNIMkQ5Z2JRQ0FFQkFSRUlGUWhCbkRvekZCb1ZCUUdDS0VLMFEwMlNJRW5NcDJaQVRYWTQ0SkJsT0V5ejA2Z3FFQ0dLQWdLQmdOV3VteldDbEdVWjAyZk1PT1NCMlJOckFteUhkVGtjRGhRVkZWbUE2K3pzdE5xUTkvVDBvTCsvZjBUL1d6TEFjZjQzcTRNSUR6a3VpZGlDbkdtZUluNjRQYS9jQ0V4QVlRaDJJT3c3bmd4WU5wVTNxaitOc24wNmltSWoxczNCUUc0VTRQRS9HK1lqLzNkc1RuOEFvTHBPSVFnQ0RKNFJhdlkvQTdHVW1jQUZCa1RUN0RSdmVZVW1Nb1hHQWMxVWFQSEJBVGM4SHNPWHBpb0tKaytlYkxYclp0T2lvdEhvaUZBalZWMGdUMVlCOVQySC8yUXVTUU85L2pqUTQ3SW53RFllRjZVVUhSMGQ2T3pzaEtwcGgxVFVHNGxFME4vZmI1bWpiRXZXeUpKdGxBSTZwWkFrQ1U2bmN5VEFRZE0wdnByQmdwd2dpS0JVcDdwT1RjRHBvQlNnb0t6OUtnQkNUUENaMzNlWUlCd09LaTZnUkVhNWpkdTNlSFZ3L1F6cElTcTUrRGVmNEhkY3poWmwrYytpS0ZyUFllYWxwbWtRUldrWXpBaWZnMmI0enl5b2plWkhrMDJ6MCtGd3d1RjB4QUhONHhtYXZENFE3a2RwYVNseWNuSVFDQVRnOVhvUDdnUmJYUVUwOUJ5WkU3KytCK1RKS3RCbno1Z0EyM2lFV2xWVkZVQUVlSDErZUwwKzVINk4xbEtEZzRQbzdPeEVkL2MrOUppVDZmdjYreEFPaFJBT0QyQndjQUNSd1FnaTBRaGlwbm9iR0J4RUpESUlWVkdNcTNwaTh6UnVZNHBOVlZWSWtnUmRwMFNuT3FpdXd3Q2NNUnFWUldWTkFCRFo0WUJ1bXJxTVJ5eTZOOFFuQWs3TklZbDV5WU1TQjJHQ2pnSTJBa0tTQWk0T1dQR1A0MzRtaEplYW9KUmFkWmpzLzBnSU1TcEVIQTdtTzZNTWFoYk1ERC9hY0xOelJLQ3h0a0l1dU53dXVOMGVlTDBlZUgwK3BKanBHMm5wNlFqMzk2S2lvZ0llaitlUXppdHlwS0RHd1czQ0ZCMkhxNk9qQXlBQ2NuSy9XYmRSdDl1TndzSkNCQUs1Nk9yc1F2ZCtNN2pRMjJ1WnB3TURZUXdNR0RDTFJxTndlenlJeFdMbzcrdUZKRWx3dTkwam1xaE10V21hQmtWUklFbnlVSkJoQ0c1RVZZMi80WFE2emNlWS9qaFJoSzRiMWxzMEdqV1VpaWhpeUpaRkhOZ1NwQVF4Zm1Bb2RrRVRYaXlTdGFObWJhRGkxWlQxUEdyL3ZablF6SVBOQWxnQ3B6OElJZEEwRFE2SHd3SWFNeThCd09sd3hxZHFpSUwxR1ZGSzRUTHJORjF1RjBSUndoZWZWMWwvMStQeG9LUzBGSG1abVhIcEczYUY1dmY3a1pLYWl2VDBkR1JtWkNJN0p4dXR1NXNPR1dvVGF3SnNYM3QxZG5iQjYvTWZ0ci9uZExvUUxDaEFZTklrTS9ldDIxSncvZjM5Q0lWREdEQVYzT0JnQk5Gb0JBNVp4dURnQUh3KzM0ZytPSDZMeFdLUVpVZGNBYjhKT0txR0ZCQkM0UGY3VFJWSENhVTZkTXBNVm1vTXJ5RUNaRW5pL1hTY3YyN0lGY1lCei9xSERPME5neDhiTkdLREcxVlYxWUlWcFlDbXFTQ0VRaENNYWd4RlVVQUVBWkpvdkNkVlZhRHJsQnJGNGtNcXpYTDYyemFCR0NhbXBxblU1WElOeXpkajRPS2hGZ3FGRUFxRlVGdzhGUzYzRzNzN090RFd0Z2V6WnMwR1UzM2ZPMzRlMHRMUzBOZlhoK3B0WDhMcGNHTEd6Rmx3bXdyTjQvWEE1L1daTGJvTmhaYVJrWW5zN096RG1seWIrZnhpS05XZDZGdjF2d0NBakNkK2lJRzM2aEI1cHo3cGMvelhIUS9uS1VYWWQ0SFJqc2g3K1d4SVU5TFJlOCtIQi8yNm96V2JQSmJXL3djYUx0Ynd1T0xUcXdBQUFBQkpSVTVFcmtKZ2dnPT0iXSxbInNyYyIsImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBVFlBQUFFMkNBWUFBQURydkw2cEFBQktvbnBVV0hSU1lYY2djSEp2Wm1sc1pTQjBlWEJsSUdWNGFXWUFBSGphcloxdGx1VzRyV1gvYXhSdkNCSy9PUnp4UTJ2MURIcjR2VGNqczF4VnRsLzdyVzZYcXlJejRzYTlFZ2tjbkFNQzBMWC85Ly82cnYvNnIvOTZTbXZoU3JtMjBrdTUrVi9xcVllWFA3VDc1My85L1BlNTAvbnYrVjhzdi83MC9QWDcxeDgvQ0h5TnZ2TG5CL1g5K2ZxOGZELy80eGQrZjhZei92cjlxLzM2U1dpLzN1alhEM2pqbnl2d2svM3ordk5GOHYzdzgvMG4vWHFqdm4vK1VIcXJmNzdVOGV1TjVxOFhua3Y1OVcvNjQ3Sit2dmozNnkvZnFLelN5bnhRREdISEo5N252K25uQ3VMUHZ5Ly8xdlBmd091ZUdQbnpFOXQxdnZ5K0pSYmtMN2YzKyt0OS8zbUIvckxJdi85MC9YMzEvL2pUM3hZL3ZMKytILysybHVYWEd0M2xYLy9neVgvN2Z2empZOEpmek9HUEt3cC8vY0VZNlo5djU5ZS8zN2ZhOSsyZnUzdFRZVVhMTDRzNmkvMzhmaHRlT0ZqeWVINnQ4RS9sMzh5ZjYvbW44MCs3MzN1eTVldWU5K0NmK2ZRbnNDdmY5YVJuUGUvelBmdDhuYy9rRWxQWW9mSTFoQm5pK1Y2TE5mUXdvL3VVL09mNVFvMDlydGpZeXhuMnhmYWxHUDY0bHVkOGJqK2ZONS9HSjYrSGw0YUhOM3Y0bFgvN3ovWGYvZkIvOHMvMWZkTWxldTcyeDFweFhVRzc1akxjT2YvTHE5aUQ1L3UxYi9rczhPOS9mbTMvL1NmN3dWVFp3WHlXdVhHRDd6MSszbUxrNXgrMkZjOCtSMTZYK2ZxenljOVYxNjgzWUluNDdNekZQSkVkdU1zVDgxT2V1NFpRbjRkMWJHelF5NVdIbU1KZ0I1NmN3K0lpUTRxeGhLdUdGdnhzZnFjKzU3VWhoeEw4TnRqRVJ1Ulk4SzNHRHIxc1Zrb1orNm1wWVVOdmpqbmxuRXV1dVYyNTU3ZkVra291cGRRaXlMMDExbFJ6TGJYV1ZudDlXMnlwNVZaYWJhMzE5dmJRSXhpWWUrbTF0OTc3KzRicjVZTmUzdXZsOVMvZkdXSEVrVVllWmRUUlJoL3Z4SHhtbW5tV1dXZWJmYjRyckxpQWlWVldYVzMxOWU3bjJpREZUanZ2c3V0dXUrLzN3OWErK0tVdmYrV3JYL3Y2OS82eGE3OTI5Wi8rK1IvczJ2TnIxOExaS1Y5WC85ZzF2bnZWK3ZzdEh1RWt1MmZzV0VnUE8xN2RBUXc2dUdkM2UxSUs3cHg3ZHZlQVUrVEFSV2IzNWxxUE84WVdwdjJFL0QxLzdOMC9kdTQvMnJjcnQvOW8zOEwvYmVjdXQrNy94ODVkYk4wLzc5dS8yTFZsbkp0bngzNjgwRFc5STk3SGE5N0FGWDFqZmZ5MXhDKy84YXZqMjdOdVlkSWYvK2MvdlY3dlo3LzE0VjdMdStwVGMwaWx2V3h1SEozTEdIUGlWMmxFTDJXL2laZU1IZExYV255NWc5bldNKzg5cmpCbkhMdTJKKzg2ZHN4ZmU0RzZiK3kxVjU0SmU5cVR6MXExMzJ2dDhYQWZNKzkzalRWQ0duenVFL29NcVY1UDQ2MG02NFgxM1h2WG1RWTJzTCtZNy81OE5lMzY4TE9ZNTczbUhwM3RIUFVlVDhwanMyT0EvOHN1WWxUWFRLTFZzK2FxTDhRa3gwMTRmZGZMT25RdU1lVEJubGJXSjR6U0FmWTN6L3FOVk4vd0xTeHJmaVhPWEVlNklEVjEzaXhHYlFtRDdrU1ozc3Yzc01GZjNTekdIUHh4eGEvTkw5eGNudjR6b0NGMThxNnh6b0J6enE5ZGJlV1MwbUtkWnI1SHVWc1A3UHNjUUg3ZnE0VTFTMXhoclB0TCtWc1kwRno0UVk5NXJ4cHEzeVd3RVNtWHE3U0hQZmxxNXVhTU4rdTcyWXpPNjl6WWY3UDV6OHlyY1RIQVFTejl1MGNxMXpEZ3hidVV0UWF3d3EyRnVQRWpEQk96aldzVXRqbHlLWFBFL1BJSkJjZC9CNSs4NDZoY3lvTWg4R3ZYR01lcS9qdUwreGMvbTZXTVdQYVk4Y09wOTJ6ZkZkWXFIZmVPaWJET1BXTWJLVXhYcHNjMlYvYlcxajYzK1h3dllQL0hXMk10SWJBaFJQcjJmQmVoL1FGOUZtQ0NLZlc1dWNmK3hsQXg0bWVYd1hLWDhSVSt2UlI4OHlQQ1l5ZnRUZmViV250NVQ4eDlyblcxOHVVSmlIM0huTXFMRFg3LzdncStmdlBpcjZWdngvcHhRVEdOc0h0Ym9PUDFzb1A4dFh3UkFNSzd1VXBRRE44SEZVYm5mbk1BU2NTczJPVis3N05lYkNBYUJSZi81bzlYNzY5ZVVoNHV2dGZ2aWQvWi9mMDFYZUZsaTJyQldwNVpndWF5ODRRbUxqeGs4LzZzSWV5R1QzMjBsVEJodFlTVHhJY2tQUXgzL1BhajV3NXNhb1JudlBWaks3aitZNWNkTUs2d0JSY3UxZGJmTC9MaGtYZTRObEc2bDhhT0R1Z1NLMVJUK2JCalhqbEhMOXQ3WHZ5aEZaYWtoNmZuRzJzTEtRZnViNy9TNzdyRzgxNnBqRldlZC9JcGdHdHZCQUt3R09OLzhsdnpSK0J2TlU3d2xML09BejR6cHhiM3lDek1malRIY1dOVTE4TTlWWnowVGJNMjdoNUhlOWRSRUptOWxJN0pMbExBMTBKZ0pmK2R5VjcvdVQwL1h2SEtHdzRYSmpmTkJSY2lUK2NlcERVM3hqZUJWVHhhT2xwRHdUS0pydlV0R3lOczd5N2xHNERBZ3BEbGN2ZlJpbXZFUlk5S0dKMVZUSG9IVjlRelZERUJwcE9RcHJrV1ByVHp5ZzF1d25uNC8vZXlpckVOWUpLVjRwNzUwekQyQVR2c3lWcFB2OHJUZExXT05RSlFmT0p1OGRDdXpYczloQzhDWWt4RXhNZFBHUnU4aWdSVklta3BzZDBFOC9SaUd2dGEvVTQ1Z28rZG5jZW5TOFpRSGx5clB4MThZSjltNUJjcWNjWlBXcVcrWHd0N0VqSW4vc1J2YmFJQWNZMzd3RnJaNWtCRVh1bmV4TS8rZU5zdmlBT3lEZEIxMTRKb1drRERBMFpoTWMvZ2QwZHEvVDdzRysrNVFPRmtWRFdDRFlKYzIxWGt4ZWkrQXRCa1FoUG9jRStDL2lEK3M3SjFQanZpOXgzR1V4OUR6cTQ1WFdQaTd2RVJFTURZeGtKeStiemxuQVQrR3JtaU1jcXp1TTNiMEFRUmdPaDhIU3dCL2lOK0dTQXJmTzlLOFNVOGNodjh6U1VocW1DNjVka3BHOGJBSlZaLzg0dG44VEdMbGdGckl4Vy9qemtsc0FFeUVhK1JGb3NPUUk2YXhTaG9GUHpxL25hQU9zQzI5b2RZTFFOQ1JkUWpYb3pBSGNBaXFtamEwaUljZjVOMXV6Wk9DSVpGU0VlcXdENlVZMGxDcHRZRGpFU1FzUzhpVFNHNFZqQ3NOTDZ1dlo4SmZNU1ZoYkV2dlZkSmE5OGd3ZDczT3dpM2tXQ2VYdXc4QXk4ZjcvSHRZcEM1VTJFbFo5dkljYkFLLzBPTHNWdllQcHp0SmtDK2hPUWJ1cGQwcHp1dnRVSW0zTDdiQ3dVRVNzejVXYmxCSE91SFMzUFJtTUtRSlJMU1lERWZzQkhZTlJ5K2x3eDI5bHN0QmJ6aVFSdkN4d2RqZmRBVUdDQXh6VVdGeExWYUNPRmpBOURneFFmZFpITUpKUmU2ekhDQ3pSUGVJVWg0TjVmUDRzUDFRSFo0M3MwTnNVNHBEYUltZG5BTEJqS24vdjVjRmplVzR4VXlSR2krSFhMWUMvNkN4QUtWY0NQOGpoc2hxT1pudndUbXNEYjJuRURWaVRNUVplL2FpWDdZS0phdjhJdlF4ZzVtOTRGNVlFejNCOW9BRzRtTDc4QXc5S2pnM1VSMGRoNEVaM1hlbk5oWjNwZGJ4V1Q3M250ZFMzNUJOQW9ZZDRzRHozZzdMdnBKQS9BYUtCWnZnQk1YMW4yOVdNbWNIZGJSY3lDWUpTVlc1WGQ2dmZTZVJQZ0k4QnRDOWF1ZHdDZ211QTZsSS83Y0IvV1FCa0FNWkJLK1dONVFGd3FoNUFGWTFjNlBCbS9VZVBsczNuWGlWckVNcENCMG5vMURYMWVNSXh2bmVvTkpnZ0VMcmM2YWFrdWJWWGxZbDRWbEJRSWtiTXJOVGMwZFJjZWtHZ2hvcUljMmMrdDU0b2tUTXdBdVFBYmVlMkUxaTFENlFNWUMwZ0NxU2VSWUY4eXVtU0tBanFVcUhpQkljQTU1R1ZFd3NaUlFwRGsvc0creElZU3JDVTBCUjNadVdncHNZY0w1MkRYQXZHdktQVWFpQXdJS2x3V3BXSFB6UGZ3V1ZCTmtqdEF3VENPV2I3NWdub3QrUWhXdndLbnJ2bnJDbTlZTDJ6VHlQVFVBeklRTDRESmtkQVdYRGdxaFBrQ1laMjNlSFJ3QmFOeHEyR3JxT0FnN2VvUFpnQWg0RHVKcWh2ZFRqVE5xc0JjSlhURENSSFI5Mk1EcFp3Z09OMkU3dzhwQmF3SXpEbG9ENEhvQjVIQ0xVREo0OVFiV0N4VGlBb24reUFEczVlMndpL0tDbkVRWGpIYjM1eDR2Q3h6QlVvSUlXOHJXb1VXZ3IwUWIvSE9OcEJXai8xaXhUdUJoWSsrcHo1NTBHeXNFUnR4dzVwNGpJVGRPSWhpVUFFSjhBL0lRclNlVmhZWUpRanM3N0gyK2NDUXVHWDhrSEJDOE96aUZIRzBoSmNJc1lWTWdMdGd2VXFVU1A5VU1GMFFwanU4dUh4NnNXZ256WXpIblU4SGtyK2NLeHpkU0FUeVREWUlrVHJidWdUQUNQQldUZnJHcmhHOWVMOUhLUDZKTStSTkdVSlArNnk5MWJpWEJzN2lxZ0o0QzFBSExoUVJDVmdTa1RKUTlZa2U0TE5RUHZJa2RKb0NPaWxJNUNkR0FrOVVYaEk0RUtaeDgrOEdHT3Q4WHFwYkN5OW9EVTVDS3lwSzFXY2VGZlV3WXdyY0NvaFg5M1JNc0VIN29Uc0FFMGJtOEFRZ3dDTVBwVWJSQjBJM0ZMNlFFbklhMHNNdDN2ZEFrMzBOY2hLR3lwSERhSmpYZXQxSWJVK3FUaTlrOVpKZ2Y5UGcxakhrRkV6S0dHNktGNzdJaDF3bmhSNmoxcGlEampTVU9vTklORkJwckJ5R08vK0JaZXN6NzVjNTFGUlRsQm9sYklPSmwvQnBKeDFaZUVjditqSTEzbDQrQ3dvRVk5TEsyUkVWZXlKMHZUTjBQWVZNSkZ4MlRhd2d4Z2pPWWl4SHRQSUNrQzdjWUgrOFA0bjFMVGY2OU4wNnZqZ1RtVW1oZ0M0dUh3NEVvMkNUT0FnRUQ2aUJWbnd1R1JZLzh0Z3MwakhzaEJGQUZEZmNObUVyMmN4QzRpK0J1S3F5ejZnTW43cUFRd1pOb2puYzExU3ZtR0hDOHVIRVJYZ2tNYnN4RzVNaUdZUUpRZmt0NkFOZTM0VkhObldjTkRpRDFrMVpFNDM1dk96RnA0akFENGNmSHNoTUp3aEpnNVRBRkZ1ZjgxZ0E4TUNlRFVkc0dJbHk1SnhPYUl4THAyRHN3Q3NrTW5zQjhMdmdBZkp4OU53b013UHJlSU4zTnZSQzdNZU1YTzRiRVRwWWZQdjZDZzF3Rmk4VjExd1RyZWdzYjJVYTRaSE1nQmFvZWlXc3VGYU5KWExNOHBCTnA5dEVvbU1lSUNlRDd5ckd6bDZWbEtURS9TRFpMUDVFUWdBdmsrTlhqbDJaRzRBZGxvQk80U0NWU3dmaUlJWlYvdi81RU16UklpVWVYSm1wT0JkNElZOHpyVFJnOGtRVyt6VzlYV0dFMFJUSkN4NGVKRWdBZ2R3SHlmRk41WHpFUzFQNDlzRnpvMzNvRVFaWWxYeTBaN0RHTDczTzdJakljVGNsNnZRQ0l2MDRVYmtab2ZpV1BEMUkrRXlTQmVBUEhiZnpwWFFpSkhTNTBZTTY5dzJ2TC9neTZCUFBLVnZ4YURoY2pFWWhRaWIyYmdJQUNzemhQVFRkUnFiRzF5QVFXdEpsaGYvZzczeFhIUzVBQmJLUXMxbzZqQ095QVVpb3plYkF3RVRWZlJnMzZTWWczS0czSk4rdk5HN1h3Qk5qZDRIS0krTUFQY2FraTVIQnRERGVqKzlnempHS1lNTVRKaUFBZzI1MzRYRmtOL0NHR2hjVmRFMHZlQ2s2azViY2lLLzF6UWR5RWx5VHFIYTcyNVVHWVFESHp1Wkcvb25wQjVZclNmUkNUZlVOR1lkWTNuSFBJWkFKeUQvNmNYendLQm9uUGNTUEFGWnJQZTRaVndqakdxTVh3U2lSOE5QRE94U0N6cXZENXI1YVZnSWlZUkpNVVJENWU4YjRxUHZpN0Y1TUM3MGNvYnhncGtwQXJZaStoS1lxTHBkOGs0aU4zK21IcGtLcWdac201aEhQa2xYbHYrSXFadEk0NzhUMkUyMjlidi83cFFoQWVLUEJ6SmdGU1lZNnNDT3h0QzNoM0FLSUQyaWplUmxsVys4R0xIaVJSdXZobDZUdWNLK0pWaElZTU9VSU9RRFVLWlA4TExNaG1sWEJzeURBaHlqd21sNy8rdGp2WDkzdHpjTkVjRGp2bURiaWhuUk9Pai9hUmZrYzJDeVoxQ0dEYmtERndGeFNxSzV2VUsxOVpGL3JtSVJ3VDdMeFRqMlpNRldmMkZpYi9uWk01S0J3b1FIamQzQlpzOWc5ei9jZEZzVWJiSzY4WksvbHUxRTh3ek8raDYwSzh3R3o4RFZuUmVLOGxyMFZheE5kTUw2UnU5M0diNlVXV2huakJmRk9ycHNyVVpWa1VoWEdFb2YzOXEwOG1aa2kxVFgraUxZQWErWEo5dUtKOW05dG1IV0NGSGJxeVppRFdvTGlBZkN6SENBZFlZcWNtdkJGUUQzK0R0MmJzR1Y0SHFRYW4wS2tROWc0VE80bW50eUpDUy93M1Y4SUs2TEd4d2poWXJGQU5mOHArSUJVeWVSR3VDdEVUTVlWQThKUjJtME1DODkrQi9YNTF3K2FnS093T2tmZE81dUtXeW1pZ0JBdnFMR2dLNE01MW44djQvdXlvZjc2UWp6MEc5cEN4alNoQzdNWVB3UisyRk9XTnIvRCtjUFRTRzhDR1ZtZ05KWHQvQlZZRyswUEJoeUdoQk53N0lUUEJBR1dxUlAveHFvMGdhWmdZNFA3ZUFEaWtBVFZ5N2VlRnR1NnQ5b0pPUWM0RkZSZzZ2UHJGMU1HZVhUL0UrZ1BxcGc5V2h0U0ZnQU8rQ0llWjNJc0t4RjdRUWVMMWN6d2ptM3NzQ01pQ2VxdlRvNVM0aHprbjJRMXZuRG82SFZva2hxc0x3VFRDMkFNRDJSZWhuc1dBTTNTbzJ3ZnRoeVpBR0Q1MzVYbjVWYVFsd211bXdtMFFOTUNGQ0QzQ05jdnU3RE1lRFV5T1pqNzdoeDdoNU5nSFV0SXMyRHNWaUliS2JDb2FWcDBDTWFoNWpBUDNmVEZMZUJVRWxpZ0hQK1NTTC9VdWxrelEzcmZISEpBT1VDeDZxdHkwY3lrQWVyc1hreVVUR0J6L0dnYXZoR1ErWndQbEhGaW5RLy9RTy9EQlYva0hjR1djQWRuVTRHNGdhekRCNFE3eWxqQmJyamRyLzNnL1AyTDFrVzltc0JBU1k2RllSTTEzNFpLWURmc2lBUUV2Q1NkOENqc1BpM2lmMjBUSVJHczh4T3pyZy8zaWhxQlBXRENMWVdvTUFOdmI3QmJMU3B5RzFTQ1FRRjVBR0NkcEd5Zi96TG1pVEovMkZjK3VJRnEvVHZtRnJNZGZPQm54eVdWTFc3RHZpVkVpa2VEeEExV0ZtMFhzaEhVQjV6QnJOTUdFMW02UE13aFJZRTB6dzVuUUhlemFEVmplSUJOdmpBNzU3cDhVNzRSakxQT2szUGQ0YnUrZlVCUlordlRHY3ZrbHY4bzlJbkJQNkErcEpKdmhrVmhCSXhkVGhCRGVneEJRTnFKa0lBaUdqLy80blR0ajhOKytWTHJmQ2JYdzU0VkJCUk9pR3dHQTViTmx2QzF2VE9BSkNpelRjWVowb2dJQjdtTmxaUTR2dGc4ZWdZVlFRUzQrZUtiTmRpRGNDYXNEQnpSTjVCRjlOK1dKVnVtSFBSVitCTWk4VC9tTWZxbDUxQzBiZWZkRVd3K3dybmt3QXkwRTR3bGhEeHdUaTBEVFdINHczRXZvWXovWkhSVjJCN3d6ZUkyd04rbnJZa1RQcjVROWlwWEYvektNaW5qL0lnTUJYV3hwdGladjczampvL0dDYVd5ZktRSzJjMEVUTDZ3Tklib251eFhEQUptTzNHa1JodEZ1ZHJpYWFrVko4NVkzOFNTWlJNZEF1RnpJVTN4dVhtK2VaMTRtYWowQnd5YUEvY3dPc3NxbUdFQlNMbjFnR2JlSG1oTkdVUU1CQ1ViS3k3aVUwUlZqTmNDU0FuZ0VhcmtzbWRYQUlWajNDblNqREpJL3hjeUJUR1F6TzZJOEI1MlIxZHk0YUdndUszZEFHa0JvL1dMVm9rZXFzczlzRHU0eFZ5QVBVR1crejhSK3NmUjFrc0VwbjNPdUFGQTB6NFYwanFtU2UrS0JFYWkvMG9WMVlGZkxCK2VEUFlNV3c2UUZ3UWQyakl3YmdOczM0RnFMSFlNSVJZVHZzOGRraitIUjE0S05OYzJkVDlDYkg4d285Qzk0Nk5XTS8rSXNzY25ySktCREx3TFhORjVvbm1lQmhJWkJuT3JKek9pUnpnTTZSaERrMzlpSmMwaG9FeDEzckhDOFdhYld2VytjQlRoN01pVFovRHJ4SVJIS3NEZENkb05ZOFJWSEtBRHo5cXpRUThlNUlBTlEvTytjbGo0QkdZQjhSSTQ4QVJUbmdyRW4zQnlGalJEYnJQaUZxK1VZQVdoQ1RabGRvd3d2OGNqTTJGNDNsMkMrK2I2SnQ4MWNYczluZllnb0EwWUlQZ0xzUU5wM2VmenRTVEJHMEhDYjZhSFdMSjV3dWtpN1JzKzhBYlNIVDRXRFpVVHBqU2NYZVlmcFhUNGNXQ3hnTnB1MWM0UVZFc0M1YTZ5ZHBSdjZnam93UG1xOGtuRUpOQURnNG5uQkIxT1FxZDBJbklEWUFzbS9xNThqTU5nMFBnakh3Tzg4cW5qalMrd0pVQjh3Q2c3WElKVlFIVURRT0xsMm5oMEhuYXpmbkh4YTdkWkUrS1hpWk1FY2p3b2MzdjZrS2tYNkNCQUxGaDFNc1dXdUFsVDk5b3ZwNEFiZklwUmcyMWdYNkh2bDBuTkpyWXNCSC94K21VZ3o1bnhvSG9nVkxHc1MzeXN3aGd4aGRTcUxGRTUwY2tzc0JZQkExK2ZpTS9PVFFDVElEUGpKZFhzWWlEMjl0YjFjVW9RYnd1WFBnY09ReTZBRmN5dG1nN2NudVI5V2g2eUx2Qkc4Q1JhYk1wSDlQV3dITzVkUUI1VDlGNUk2S21NZGt4Zy9DWnVZSGF2SkhzTjcwTFlZbzZ4bXNtdmZuYzA4WUtGcEhBVDRJTEVzRlIvVk52RVBzLzlraDZ3S09yT2hQelBXNFdGRGZXRHhlRG5zazhWTzdnWDZFd2FTWVdhK2NVbFI4WHR6U1dBcVhBNFhHY3Jld2QzazduRVE3N21RME85M2t0K3MvY1ZHSnBPa2tmODAxaGFWUWNTSXJpRU96SjVpeEN3OHpHTWNkYzdtQnZWU3ZORUxqOWlOQy9NcDJORURTOWtmWVFMVzBJRW1OSWVxSGw0VWpLVGJzeWJRdE4xNFdJdFlLMzhEcVRJYldHY2tKbVF6T0pjNmVucTRiVjFUelBMaURqUlg3TndFVFVvSk8wTGFjaG1JZkZuRmtxRkdrd090c3h6M1NvVVB2Z2pkY0FzVXlrbER3VEF3Tnk3VkUwK1dNSjZERytKc2d3MXpmNnNRdXNmTjlkK2Ztc0xqekd6S2ZsektRY0IvUXk5Z0o3RDNpZWEya3FZQWN1RlFBaHozeTZZb1AwOWNmMzBsM0RlTFQyN1l5Z3Qzdm9KT25ZMzloSTVVZ3A4Rnl1UVA2czc3d2lMeEI0SCtlVmpvZ28vaWIzdzFpSnVQQkxPSlYxaDI4SXY1V3lJN3NhaXVUckErQlJpeXZtYXhnV3lXV0liUVJnZ2h6bDVwNVZnUW1tWFVBc3NoaVZmUHBwb3RaeWp6M21iNVpHS3lnUVEvQWhNQVgwU2UvczV0VEVJSEVXY3JOV0dQT1cwMEgwSHJDOWZIdldZaURCYnZNWEQ3elZsdVM0OStjUllzOEpBV3YvNm1MWWg1L0l6bC8zNFkwT1Y1RUpkcmpVekdWcTJBeUlxUUxuRnFQNVVSNkJ6ZTMrTnBmQVU0Ky9XRFg5OW1PL2pCWmRWcU9uVUdlRW8za2Zld3ljU2pZS2tTenJKWTBZRGRBT2x3NUtWVCt4UGpuWnc2UVF1UTNPa0NRYUxSazlqbUFjTk0yWElsd2pZVXR2MmNTU1NEQXpIOHNXNGwrZG9Kbm52dUZzdDRUNlZKd3RlZ1RTVnNYcTJjWXk4TlJkd2ZGMi9RUWdkbWVBZ3VtTTM4UmVqSmhLVkhWd2w3KzlRcGlBYnprSXNZSU9oRU0vdGFFdW9HU01FOVZPc2VwN0xOZzQwSXJBWGhYbTRGa3JIcW5xeHREQno5QkI2aDlFSEM0QW5JVWoxOW9TVmpHd29DdkdpZXRkMFZydWpCN0NzMzBFL2VmRnNUZ1Q1Q1Q4WXhQWUx1VUdiYzRnVnlJK292L05iNlppd0paNE1ZV2N3NHhXYVZJandobitOd1pDZmlsMGpiUVhZbzk3cFlmZ2drNUFuVUp1S0JEb1ZZQUhzWWFncmVzSGwrRGl5VzVzY0JlRmh3U2FqVEczT0ZFOHdQMHZhdWE5MWNFaUlkY0s0cHZxYU1NWUxDQnNDWDJQM2pKQURMMTBYbUFNZ1JDRGNSZ3N1SGZTV0oyZ0l1TGd0N0lLZTNDSkNlMTN3anZqYlVDcDRhcWhMWnlqcFpKalllUU5NZXUwa0V6d3E0ZHpaMUxld0k0WlZiZ29SWVZRYlAzZENXNWYyZ1FSY1hrenlJQXdkeFYvUU0xTWxVVEFnblNuYlBrdkJzRER4Y3hJbHVMdWdHL2tDTmVKTGpyeUkvSUJwWnZWY2ptTTNnZ2t5VEk0VnpOdm15YmNDRnJLU3lJTmZSZDZnMUJGRXFUMHFZeDRDZG0zajF2Qnl1WkNHSmxIYXREd0dSY0ZIcmJLWlZYTkdqUWV5SnYxOGVGTTdpZ2ZYTEN5dVlnNTU4MkZ3UUZ2a0x1VFdCZzBJcGFYSi9jSXQ4dng2MGJqMHpHOU83U2RmcnVTWGphRTlNNyszcWNHVDlubnRDTEt6VllnOENieFB1VWFmbFkwMHJHcGlBRlJnRUJUZ2dhaTdBajVUQ1ZpWDI1Mlk5RFNYRTdJWnk1QmZoSjU0eEVtMkkxTkUxaDdFSGF3THdqQUlwK0Y3dkJ2NWFMamFQeFNkQWg2Y3ZyTUxqdVY4NnoyUnBSZXQ4ZWc4TURQYThDSENzQVJqU0lBNHhudFNoWlNQek10ZXdQbFFDV0RndGxVaXNNazZWd1pOUUxDK0J1UlBBOHBzOEl3Q05SM3JpMXVnOW8wSnllMnlkKzJYVm1qVTcwQ1BJUW1GaGtYZ3h3bTFhTE83SVBPVlJyRHU4RkRLNGdyQzA1Yjc4ZzZTMi9xTDE3MUlabm16NnRLcGtla3FIQ3NFaXNQYmFNaUNEN3hLVDhXb1kwSWhHR1NMK1l6VVJUSVJWZzR2dzI5ZkRqNkFzME5FR3UxK285S1A5UHp5WXkzeVFjMzE3d0tXZE5lUVRzb2RJSWlNUjEzRi9sQ29Xdks4eWRydk5hWUVHWFBDRzB6WlBYOTZBcDJZcjFtQm1XQnAweWxNbWdpWnVpc1FHS3daMytwMWpQbXdjcUlXQUZDQm40RFNTSzFIWlBJV25hUStoNFVQeVdVN1NNUC9rMFdnbGRPSHVPeGRVQjN0L2QwakF2RTQyQi9mUzRNRFpMeEQ0SmxweWU3S044V1lnazRpQW12M3dLSWdyOGR3Q0NmWWlXNTExRXpvZU5OcEY4SjRQU0pIUTBGNWt4S1BqQjg1akRBblJBdU41OWNKRFkxNVBnWEI5aE1zODVZSEVHZUJDMkxocWhmbUQrT3o3U3F3dmhKVDFqRStjMzcwOFd1ZTlFYWRWczRKaEdkQytVMWgxa3R5OUtPeDE5Q3RDTVZYRXBadGl5ZFkyQTRnbTF2c0E3Vm9hdC9rMjRlelR4aHZHM2l4WHdpOEpaTU55TzI0blhFUWYxTDVITCtZZmVWdDhJbkROQ09mUUJ1dVpWU2pkMCtpWndrOGQyd3hBeU1PMno0Z2ZIWkhiTUVoQ0N0ekhZZ0ZZVEZ2TjBtTkMxU0wyVmlVT3VMSUhqTnJpa3cxZlN3WmlZdDBIMENvd3VZSEFyUkd3WUJFQnNudnlsZWFNdVp6SGNsOVdlbHFJU3h5dHcwekhucm4vOEpaa2FZRkhJT003b3NqRFRIRDVaRVJZMGZNVkR2Mk5NSElBMllpTWgyMThZRDVzNjJSbldNbnp0Y0ozNEsyUTVHRFJIZXJvNXcyYXF2cHdFV0lGSENUOC9PRFAzNFpYRXd3ZVpEaTBMQ05GRTJ3N0FlZzNXRWFBQlBJSSsraVhCOUNLeVlOS1hOeVRTY2lKdVJURVp4andOWXZaaVpaRWJpQlpvMGsvbkNtejM1OTVTRlBYVnVBVFlxRURFTWdXOFE4enc1RC91QWlZNFpYNVZpZ1RkbW9SVDhBaXBiMmdLeTQ0WnVhS0NITUE2aXVmSDBiN1l2RU9ZZTlGejJHY2dNSE9saW53VGxDQTVkNFFjOU5YM2wwOStRVkRDUUR4YXJDb2hrNUE3dktHajNtS2x3L0hlT0Rsbms5K2ZncHk1ejBWM0hDOVlnVU11QldoTFZrakJCZ0dlSVFOVjlBRFVXUEppUTVIK014UTBVV2MvenduaFBkZ0hjWGNSUkVDaVRGcllYZ0VxUnVIUnZQaXhsY05uaktoQklnenNtSVFHSnd3YzVnc3ZIemhpTVAxZ0x2NFpaMzhCVGMzOS9aSTV5UkhhbHdXNkdaTUhPV3dNbmFER09KdGxmeVlKaDZJNTRscm5tOWtzMWMxSGNrN1gxNWlFYUhKM0w0VEYzNnhteXhreTNCN0FKV3dWNENRRE0rekJvOFFvRktLQ0NJUDhyOWR6Mms2b2loWk1vdFZnRkd2UlJuelFwNjQ3NW13bGphTW9pZ25QZHY0dXZLZExRSEtTdWNqVXJmMjB2cVNHeTNBbFFIakE1cGt6dVpOT0czMEhWK1BlamV1VDNUeXlKN3cwME1GbzJBY2pVMW0vL2tLQXB2M0JkUzlLU3RWTEpmMGlDQmYrU2xXVnVMVlpoQ3g1M21EcUFVL2dZZGJRVzdlZnB0T1dOWGFNNnYyVGY0cytTclVDbXFRaUlEemdwV1diWEVac1N5S0RwMlZHM3dHWVQ2WmpLOWY1ZFZkaFdOdHdjWk0wU0tvYm5odkRCNEF3cEZEdk41SC80R2VJK3pGU1U5MFhXZ2dUU3BIZUFraDVCdDA1aDFkb21xbEZ0d1VpRVAzWWFIcWpWUXYweUxGbnBVdmVvWnJ3aGh2KzFEQjhPd01zQzU3aXhEcTMydWxkaXQ0YkpGb0tURm15OFNJT1UyeWVPcGNMUnhKMW95cVdaRFZxa1pXNjMzTW9pcmRjT0JzMGNCandrT3JUNS90RG55RzlTb1FqWGhKYVYrMldlOENtRnMzdFhCYlYyZHhocFdQZUxGNVNuTVkxVkRIZHFOTXNhRjlKNlFKRWhlWGJOalJTYmhtT050VTdySjVzRHJpNC9Ra1pYbFloZmhBNVFIOXczd1ZvdlN6RlNGOEN2bHFRb2RYak1zNmxUWk9xNDh4MUNvL1VNNktHcVR3dWIvTmxYT0R5MmFnUkJodjVpM1IvamFOUUZiT3I1ZDJIVWpyMXNUMDkvRU0veFJYbmFRak1SRCsxUWpnWEhBTG51L0JzT1J0dUJEclY2eW16eWNmY3BkTC95REc0WlZKYmMvVkVDcDlPMjQyWlFGZzVJZGRzUjZNT0llRVlZa3c2Qml5cm9RdmhKTXJ1anl3eGdDMng2WkZhWlVzOWtWK2N1R2JXQkhiOXliUHVvcThXOGU3N1pSQkVjSkVWT29DQUpkMDNkOUo5QUtFSGx3UFAxVkZDS1MrWmdKaGFVSEx0M2o0c1cxdjJ3QlJvSkhZUDR1QnVYbSsvcXpMRTFsM2lrMEJ2RHBvMTB6TlFEUnY2eWNhUE5hVHdHTGhIZ1NZU01hL0NETm8yWHJWY1lYM2duZGREWjVQSU1TSVh1dmhlejVIMHVobnFIQ3N5end2SnZ3TjNyUGV3U0tmMjFSRVZrZmVrSDZDLzNvQXV3c3oyZ1ZDWVM4RWl3cnFZQUxaSlBPNHQxazJjQk0xaUh3SFlTMVg5elQxMjFCWTFtWS9Ia1N0RnllK2Jtemh0bHAydmVWV2I0YjJlVUx3SlF0UTlvc1VqQjllQ0dVS2NBQ2JIOWdRYzRhbklNbmNhSlNsWEF0MitMelFHbUV5V3ZFSGtQWU9WeUVTWTQ5Sk5meHBCekFXNVRCNmhMdkNVVjhFbkdrc3BHU0RSSnk0RDc5RkJKVTVVZUlzdHZtYkV1QWVqYjJ2cHVwTk1scVRYQzEzeHpxZ1U0UUZsdlFKMWRPU3VTL0xKSW5GbUVVbERJQVVjSHZUVzNWd3o3bjNXbGdza05naUQ2SWZFZXk5VHhVenFxdFkzeVl2aEFaY2lOK2Zia3dyZVRFbjhRRXdlSHN3bzNNYmdMY0ZtaG1pVGdSQXNZQm5BMTVrOUFGZlhHbndaVmxXYlVrWjhmdFU4eUs0Q1drS3FTZXRVM2VBSUlIUXNqQVQxUTJKOEtnakRmUk1oNTI3NTJ3eUNBalBQdFgwbGlUZU54b2RhZFYzdHRpaERvM05JdW0wakRLNVNuZUZKVnU4MnQ4eVRkZC9ubXI2dDVrbUlES25DK1BJcDRwKzNoN1lXYzVhMm8wL1AyaHV2L0hhai94Ly8zcjlKeS9FUUwrbXRBNjdib3MzUWR4NDloZXNjdU5tZXkvdUQ2V1BDbEQwZ1JJNXFxNEpaY0dNd2VrSEdxdlVvMVpQcVJwRVEraDNqMUh2dHFmczUwTkN3Snl6WjkrUXpXbDUvcFEwMitGUW9Sa1YvUE13YnMzWHVrRUxPT3A5aWh5TjE3Q1E1Rm51YThmV1pTbWVhRnR0QVNsVGtZWXJSUTgxS3NJaHZ4V3FBU0VBZzFCZEhnaWlrcERXdUdERFh3bGhmcnVuaS9oYjl5bFF0R1RXZzdueVUxYVIwS3daTmcwclRzMDJtdnNoVUJERlRPNWE4RSs0R3FqNXRPMjdhVmZmMmdvc3Q3SHBTNEsxUVo2QTV4eGJoOHBDUHN4L1ZHTFBUMFo1ZWtoeWpyYjVVSlFtU2ljL1Z3YWxyTHQ2ckZJREFQNWhQTmpVTC9PQm1tbEFmdFdBTkovOFZ3SHhwT3ZmQ0FoOGIySGY0QXVJWkdGRUJsRHVjenh1a3lBK3JFSjhna1NtVFVqUnhZNWk1eDU5MjdrUVpDV3RleWpYSUVVR3ptcllHelovZWZCK0UycUl3LzNlN0d1MEgrV3p5YUxlMTRaenhlR2gycHVoNXpnczRkM0RENXM3b2gxZ0ZqYTFJaUdDMHNMNHRnYklVc0lVSVZpSnV3ZHc3Y3kwemhEbW1LeGxKd3hvUmVqVkl4SU1UeS9raUlWOHZtTDhBazZnVndhRmRIK0laaERyNS9TWFhjdmFEc0RMaW9JNzlvRkhHWnRaSHl0eE5od0VqSUpDOHRiYlZ1TzFMSDM4aW9NS0NPTHBOYVYrM2VkMCtnNzRRclRPOUFVb3VXVVRHUGFDVEl0Tmk4ZUdxNEdIMktiY0ZQSG9ZZWhMa0xESkcxVmFMOHU4eHZzaG5UejVObWNhMzNkYVM1VE5pc3JncDgxTHJNT3cyQzE2VjRRTG5EZDUvdGVuRFJscFhqOFY1NmxteTdyWTdoMWdDY05PRUg0WC80UVVQZk93SmE4TTl2amFIT1JaU05WTzdaUE8vSGhkL0lkdHZLc25udUZXQVZiN3Y0TG50REpjWEJtdzl1aFZDUmM4cmJmWGdNQXk4ZVVNc0Z1cWtQTUZ0Vlh6QXJDc2Q3RTBJd1I3MUJJWHhNb2pRU2UveHR2aTR6REw1NjBRaUk1ck51MGh4Zzk5d0VhTnEyY0N1Y0s1bjQ2Qi9tcEFvMldQS203ZEtVNTc1bEZCSDRUL0ZWYzJGdTBwZWJ3Sm9xZVdGWnBEN0VldFFCclNZNDN4NmYrSW1DQ0tGcDV2VFkwbzVYa1h2TG9wcWdEenoycEtZak1xUzFVSDJNdVBoTHB2blB3b3Q5SHdvcG93RHVMYU9aMTRCU0MyRktLQmF5eGdEUzRNSDhNK0pXRlFvS2RCNXVCSFpaNXlTbUo4Wm1NOFhtTEZZTHhzT3BvanRQSGVmTWNRRGtMY0xnOUFjWHVtSW1TbzJjNVhTejJuYVlGbFVTTUJCYU9UUVdlcjBFR0swV1hucVgrYis5NW93enNFOWJrbEpETWFoOHhjNHliWFNnUmw3ZzNlYkRrYVpsVGE1dzVQdTA3Wk9LVDZkNXZ3WGFhTk1EM0NPWXJmUGpVK1BkU2Z2Rkh4WE1RU0dzbnB0bExIWE0yclhuNHRuRVI2b0dtZTZuRXhHdE9hWURTTnhWYnZ1b25YWU53Z1NBSXkxMk41VkxSYVB4TjFZR3hRTFN3cnZLYjRQUWMxdEkxNFRxZms3MkFHTG05REgyNkNxVmlZNXBuQ2xjL0Z3c3B2MDBlQk5VZmNOL2p6WStEeFhKTGJRbVRZOXhUUGVkZmNrR25yVHRHWllEeDB6MmtDbDZtZG5RNlBNTnRkVDRLbm1PRjVmNTFNL1NYRDg1M1dRZkg1QjUwUE5qc0w1UHBUZnVjSHRYL3lPei9ablpQYnNUVG5qK3pPN3h3T1FlZVAxSTdpRDZlVmV1SVVpeFY1YlpuL1VMakk3WjBscUY4TGxtRVppZE50WitZdHN3a1NTTVc3WndMRVBKSGhRdWg3QklBMnR3U0FuUXNtdzNNRnltMGtpV3pUR3NCR1BOM0ZNbDM3a2lyeExSTUk4YlRhUFcwY0Y1UUxYcVhZUnpCK3RwL2NNdEQ1M3RZNnZUYXZJcEpaUHhRb1FvWXJnQ2w3T3BXRzRpS0FyYTBDOGRkMFpVOTlpRjA0dDVvVXJ3aFdMdGhzQURZUUVvcWRMUTJaYzAvelJWdFRXcXphOE9BcFlMb1FkaFF1Sk5hZ2dneUdvNFNJaUo2akhXbUJVUFBVc3lUQlJDUWhaRUcxVjhSRDhmcmNUOCsvZlRMMWdzbWlZdkMzaytNaWltV1BkajBJRlZDdDlhMGIzMzhMZ3NQdXJXSFJIQ3JWRSsvYk9IQVRpcjhYY2R4TlRyS2lxSWFBWnhlNDlsZHFCcEc1ZUpqMU1uOUlyR3V2OVNQZGNvQTJyZkN5UldVb1hiNlJHNkxHUGxMUDgwYUI2VnREbGl3ditPYnRNUnErdk9SQ2FPRlRJem05Wlg2S3JNZGFvS0UyMUJHaFFyN1FyVVJpT0RoTEVrOXVHQ1FZZDdZUkZDVEJZZmtRQy9ROXM3TVNpQVY5OFZhNEdMYUVVV3picUV1OTJHSG9VN2NZSENIK0pxakVBcXFFWnB5WXo1QXMrMm53ZWpQYWIzREtRaUpZUnoweFB1VlVickZyWDdhZERTbldMVWZGTllqMnBkc2xBSnN3aHJNUkhtczBlY3lLL0xENVNTMzkycERubFhSRnQzOWhrOG1TSG1TTUtRTTdaSzFvYlRicDNnZEo4LzNIVjZ6NkJwMGhML2plSFo1b0RjRzhMM1ljaTl6Mzk0eTFJVDVyUTdGd3RpT0NXVXlUSkpXTCtDeU5lSDRUNG1DYlNEdDBlS2F2OFdhb0kvajNwMERLSnNqTVpTUTRoYjIrbUNwQXNDd3o2bTlWWjI1RFZKdldYWnNWcmVFemJNVVBMbkRaMTczNkdDWUlocXpOWG1ZWUwzelp5dExrb1lLdEZYcVNMYzNFQ0FESG1seHJrakMzdUxsSkZydXNaVTlMTEJrVnVvc0ZCN2pTeVc2Q2pmWnpkb2hWd2UvdEJPcjdIdGF3b3hJZUs3WkNMbVlQaU80WHEyTXUxS1JLOWppR1RjUENoMG1mYW9iWlRuWEwxNkVOeGZROS9Bb0RZWGZoTlhnMEcvVlk4ZGl1MC9xUzJUdjdwOUVxV0JDM1pYZFZ1QWZFeFdLdEdON3ErWkx1YTllYmRTK0liTWlrV2Nxa3BvV043T1VwYURTaFM0ejdxZmdiME5PRDJLUEdPM1FwNDJOM3BvWTkyZEZwQ2pRQ3NNbVpTOEQrd1B0L3VpVFp1MDYwWUM5WWVWdUg0UE8rMnRCRGxBUFdRN2Vub0VPM2hpWDdHNTVyZEZIMUUxYjdaUVVjM2dXdTRvZ2Y4Tlh0dFFuMkNPR25ZSWNqYTlnUlpQdXc5UlY3d0ZBa2xpZUt6OWNHZVJpaDNhdklhSFMwNGFoQ01oYmFOMzBlUzhjQlZUcDVMSHZPaUJnSUxXTEd3QnBxcS9DY2lZOXdrWjhXZjltWGg3TURiOHFMaEJvSFpqeFZ0RDBaQW5qYkJvMENaeHNBeG1FNUNsU0hCYnVmKy9Ub1JHTTRscDFodUJxTjgwRkt0dUVBRGRSKzhvK0xxSXFvUUZuY2xreDN4VjUyUnNyQ1B0aWpVNlpzVWU1VDltVWhaVFJ4aXluWEUreTM4cnoyMCtLRVcwTmoyVmpDWXZZOHN2MzVMOE5oV1orQ2E2WExHa2tMRGdQQjFKemViU1YwaFJ0dkR6R3NFYlR2UGllUEZrL040dW5SdCszSlVzc3h3eTQyKzBCR29jb3ZzWThvQkxDZHMvSWJ6bUVueU5MMnVFZVcwOGtoaFZVM0VmdHVBQVQvdGtldnl1RVF3ZDB5eHVIQkl2WVI3dHdxQk1DVCtmZ2tHM3JzNWcvOFB4RllIUDB3alZlWVN6THA5VVhBQXVqajkzRHlDNXJPajl3QVNGUDd3QzlpUk1JNHQrVlhIWE8zOE9KOTdqUVZpdkt3YytDRExUbE9BV00weTlIV2hTTEhKZ25wbnB0OU50MjJFdTdYSTJnLzJLSnAyeFVnSlhhcUNxU1BSN3AyT0Nkb0tWS2pnYVhodWV5R3g1a3hudWVyZzdqM3ZkK3BvdzBUVWJCNGp5U0JKT1NqWlorYkFMdk1QVUhvZ0tKNWl2UHg3NGJ3ZS9OeUhsaDdmaVo1Z0tyQTZZQXduVGFkYXBVMnY0VmZQeGp1UkpUQTMrMHBPdDIzN054cDRCcmo4aUlkSldFZFFuNklZZzRtd1I3NXRJRFdBNjdpK296Y0lOeEk3Q0pYSUFtMHN2QlVvVG04QUtPNlRsVVFIL0M2U3QzMHBiTmlHaXlEaFpYL2VsWmhKVEdMeDRJRTV4NndVNTVXNVJ2NVorbWFKeUtYZlRBQkxPdFdjTUdTMFozb1BrU2d4Uml3VGxRM0RERTYxYU1OOTZoNmhBUGdqMmRwUURZMVFkakNGWnVOWThsNDVrZ25HYUNESnJUY1J3VmFUNjRSNDhja3JTejc4MS9rM0dBenB2TFdDd0k5WlJ0UVpEemdCa0FncjdZWFk2Tld3VXZtTXpwRzFwK1QxUS9OQTdISFJvRGFSSkxHbmdXSDMvRkRhM3VKSHNSS0xUQkNuNU5kc3M4UDNxemJuZ3lMNElJVkFZWHdMc094cHdtZU9nMGMvYnYrakk1UVNHVEp6YkpNQTJxeU5BRHU5SjBnbDg1UWc1dXR1Z1cyZldhQUNGV3ZSd0g5VWhSOEFXRnpHci82R2dSZEM5bWlaMzJZZFNLOFlVRElVM1BGSnBXd1FidUJUbkV4ZnRRMlRtQmY5c09xT0Jya0NNTS9yYU9KUnJQR09KcEYxZyswM2VKZUdGU3h6aEl6OEt3ZXY2eEhrVGxLSlVsa1VmVm5KNGQ1M2drenQxN0hBenhFc0gyUXhWNWNhd3EzS05JZVI4bDRvQUpGQStnZk1MdStaNG9JNEdMSGJMUnAxcmlZUFZHNms0NXNpZitmY2JIeDQyWHpyNEhOUW1Uczhic2lVSm1zbCtINm9ZamRkUFNSY3BZZDN3TG5Qb1RjWmxKTG05My9aWVZycW56T3kxWGFZYmJqaGJERytzWW5nT3BKbm4rcml0ZjNUQk1yc0kzSERubUVZQnFuWlVpQ041RWhqN0tud0tCN2htcGVyS0F6Wmo3TFd1QWN4NUJlbTBtc2owQVdsUXBXMjJHVG1rSXlUWnRsVHBFMEROdUtYbXRQVTNOa0lXeWd5Vk4xbzNxYTA3SUNnS3RzWjU0T1FJRWtLRmJybUt0MGxrMHdqSjRwUWhGb3RUMitYaXpHK094YnJRdFVZRFhzclZtd2htRGJPOXUxZ2FWcWpTbmZYQkdHVXgzWTByRlI4Rzg1RU1WVlRSQ3RhU3J5ak9xeGhPTk1BYnFqZmNvZjlMM1pSYk9reVkxTGcvVEJxVzdMZng5bDF5bll1NjBPT3J0bTlTcWFuSHUxZHJWVm0yS1JYb252SVR0bWI2Y2ZGSmJTTnJHSXEzalhUNjZ3bnVFaHBwRHVkWUh3ZDdZQjlrVzl0cG9KTzl1NVFzUFhlTDZ1QklJOUlJb2VqTnloQU1zVUVPd2JGc0hXM3ZkSlplRWlQNk1WdUd0VWlBWE1kekluQW1kcDQ0ZGF4Ny9YUC95cjhvZnJmMXovQUg1YU9HUVpPM2JOeFJJZEg1dVhuUkFUUFVpOVpUWGJpbXJ6RGNzVGQvVGRBaEpxc2xFWE0vRmtEbmNoZGp2S3hzazVZWjVFMC8xYzUvVGFPc3p1U0pMUUdzUTdHeS81M0czbGFuRHdUYldIQWxjZml1OVJGcGJaaTUwdDNTaUJXQTVYc0VsYWlaUS9ITHlhRWljUUkvQk9TTWJWYjQ5Umt0VlFOc2VjbVQ1SVpNK0phbStZSnlMV1pOaUZnV0JpdTM0ZDQ3SmNuVEFTVGQzT0JWWERWenhDaHBKVmh3MHNQcU5uQzhuUElGRDkrSDVzbnJON0ZTVDJZb1pWT3RnenIzSll4eTBsZEJwQjk4RFpRVGhIdllQMUVWM0xkUk1aK0trZHlkbUVTTG1Lc3pYZ251Z3hqRG9IbEYrSGVFR1F1aE11Y0xzVnovVEQxMFdxVDdKUE1IdUF3R3VzNWp3ZGlTK1dqVXFyNHlIYUZQU0QxUkIyNFh5MUlna3NjSnEyWHp1OElKeVkrazAvMWNsLzBwNlJjZVE2MkFWTHp3Rit5N3lKY253aVc5QnRXUHlRRE9xK0FDRXl0VzM5MWpRTGpabUF2aXhpa2w5Tlc3WnNIMEN1VjhkL25lRlVMMWorVFJ1OTJOd1A3bzA5bVIwN2RiYjNaNHQyUkJTak00dlZaYytaUlFEbFJmek5jZG1SQmJXeGxmTzBRcldmd1hOSVdkNGd2dXhjRWpHKzNFVTlKSjFDMnV6cHRISktRaFNWQ00zaGQ2RE51S1hYWnVmQUFWc3VBQlRlM3g1T0lnbnNkbHF4bHh6Z1lGMUIxYldKeE9hVkliVTJBRjFsOE9sY20yVWFKWEo5ZGJQLzdIN0MwTHVwQzlNTlQ3Y3NoTldwOXM4OUZnNG9Lci9LZmdDb2hQaXJFWG1iTGQ0bXVyVmlHeWVkYVRvOVJiSlBmZndhN21IN0RQQU1TN0ZFWHJFMHpzZ1IxTk00TTFsZ3lyZWpSQ3A0UjZnd0dXSFZ4dlQ4dWhMV3FpMkg2QnRIM2ppSllscm5pWnNjb3BneXdZS1lNNi8zN3J6YWdRaE9hdUd1c1BlcThzOW13KzYxU2lVbzFRUWR0M3ZlbkdNaHlHS1U0WkVtaEFmayszSzRia3ZkTElqWjBhYks5NXlMejI3d05Zc0wrL1BZRGtGRE9QTzA4bFNnY2tmVlJZZDVSdXZkVUtTWGM0bFFsSXVBZzNpQU41eENjU3MrWCtnQVNoakw2bDRKS0FwZmY1VFh3WUtqS20zeTNGOWhOZVBGTzhPNzdHeDB5b1ZETk12SGhVQUE4UFhGeDhFbnAyT0F5bnRTOEN3aWEyZEZyeVB2SE5YRzMxQVQ0TkZXNGtEemw3eU9FRFhVaytha0F1NXo2aEU5TU5zcXlZMjZzeWkxdjkwalYvemI3aGRFMmszc1ArMnVOZG16MjI0ejVPS01LUUdQNmkwUUtrUTRPMEtTczhLU1V5ekRaK0hFTXpkRTFhcFMvZVZhZXptdkFDT0h3cnlaQzI0UUVIQUExMTJXNmVKZGtIQTdXZVA0R1hsa1NYeXc2cmJhQUV1WVF6c0wvazRKR1N0c3h6UWd2bXhQc0Z0NjJXQnUzUzUwVmNpcUd5cndnV2JOMlg2d2dkNHRjV0JYNEJiN0ptUURzRGR4OFN4c3MxNGRVL0N1TUZ1WW5LM2VqdmNzelpZdlFMTnpnNDdVTzNVaCtod3FFN2VEWjc5bmRxbWQvYkF2cStteEhKUVgvby9Mb3BvN24yRm5mSmxJczFqT1hMUElXdzUyTm0raDBwbGVsMVBnTEloK29ZSndBeFR4K0lnY0x3cDFPYXZGZ0dGeXhoUG1ZcFI0aTNYSmFhTmx4NWswWjRGWHlwYyttZXhhYVNkWHgzNVVzM1phcDZNeVc5V2hsbW5LZFVZSVd0RDdoTStJWVNQNDh0QWM1UUhQdG44bUJpZURmQjY2bm82TVd3NkpxRjNPbkgzc3hjMjREQjVwM1F5TVp6WUhYa0E5VXdJUjdaL3RGOXEybTU0bWFuK0NsbnEyT212bWxNNTBCd1FrU3dOTlJXNUhYam9FeGdoSlJMSlJIUm8vbGFRNExTUXhlcnBSN0pERWUrNkdmSHFKSzhFYVdPazNOM1I3S1o5OVJxZmt2cGpmeERiUTVOeThReit1RnUvdGRKZEtHRnpPN0pDa1RZZnVlWVJwMjhjMExYeWZZdHlLMk9HTnEvT01uSzRRUFQ2NHR6SGdzZ0VTSVpzd1l0VGdhNi81czdtWnluSTBTL1VkSFFzWXNCSFR1VFNkS0JSTXZ6d3FEWENVaU9JMHBHdEd1MFl0T0IyM2c4TEVIWWRSc01VT1FhbTh1L2xLTE96R2daRktFS0JvQ2drS21LRWhlcUhvY0ZrOGJMK1VmZ05MbTl0R01rZEx3UjZ4azk2emhjTmVSN2Z1MHg0NVp4amxKRHNCdTBSK3MyalgvMU5Mem9aaXoxZnpjaEp6OUFEanpPT0RIU0VEMGlNdnpXTTVHY0IyUVBndTI0Y202aGtiQ2VkSWVkbGxrMDgrdFNja3JYTzBWaE5CYlg5NzBVN0padjl6V284YXZKWE5CYUFDWDk3WFlpU3JkbzFWdHNWQWRYck5aK29BTGtKSWNtN0hlckl0N2NYWlFleE5pK3V6d1JBUEZtV3lsQTVjbDllWnNMQVNld0RmZ0prN2JUZkV0Vm4xT3Q1bytsSXl0dmRqVWYzS1lJQjE1UkNGYm5jTGhLZnAyVW9FaTVuU2l6Vmx0Nkp4L3dGZ0s5Qm5pOWo0TzdIS28rL0hVdlY2Y3EzQm9jcjJjeFMwUElqaTRCYXU2Sndxb0FHaXVkTzdtOHF6aHAwZGR3NGVETXhCWTNnOGtZK1kxcTNPTWp0bi9xZkhjMkZlUkROOTcvRElNVE1oMFBsNHRmYnJjZklJOHF6ZVZnRGNRUEhKODVnNUtJNERhZjloTWN2MSt3OThORzcyUmFVT1hCRFQ3eTlhaDh2YnJQZVlhSFBIQjVVelZUT1kzM1FqVUMvd3hNOUJBYWRlL3U0T2hTVnNPaEhyNlU2N08rZFcyQW9CMVNQSEl5U3l3d0N5cmpmL2lpMEo1bS9iQ1FSaW52R29lNnhwZXRLcWVaVFdaOHV2OUFYRkRsTkFISFkxaUQzczlwdUFDZmxNNVFYeDZ1WHM4ZWRNTVlDUERZSlJzZSsxbmxFM2RzMXVhRjZBa2lUbk5jQmliaWR4dmE3L0diTmlsc2Z4MSsxQ040VFRBV0RuVWJROWMvdkJYZ3hibzcwTkoxK3pTTzh3N1dMeGJIZXdYaWV1bnVvYVhCZi8xZnUzdllnT29iMm5rNHNjNmZYWnhJdzlnT2RGZUVNeERLQ3NPUmpxTTFMYi9QMFI5d2g2anI3emVMV2o4c3FwS3Q3Mm9pQ1duTGxjRllOZ1ZtZ2VURmhhdE02QXJoYndwK2JzUTJ1S0FJRFBDdnorMU12bzhqcUhwWG9WMXFJVUQvMXdOY2NkalhiS3kyRU9DWVd4UGZNbUppQXJwc1dObnZUZlo3ejNHeTZvMkQraFVScEswTDlxeWhjelE3NkowS3poR1c3V1hZb0pPMzN4NXN1RmN3VFY0L2dqTzJtS1F5VDNHVm50L0RuSXZQVXpVdVpodmFQZE9aSy9nYmRPcS84UVJRNXlRV1VUbDkya1plOEVhMm5DRFM5OEFYTEgyRVhWcFMxMDRUUXZUUk9iTUNNSCtVNUZwM2w0cTJhdXR3SEpBV3RJRHJSR0ZoYWJSQWg2emxvdEhsdHVod0U0d29hVmN6ajI3enFWdzhYQkRsUHJCV0JEZEExRmFQU1F5ZnFRR1J5TUxRNVh1TjFZRGpFdWpvU2RpZGR0MXBQZFc2WnhQNURXNTNhWTVyNmNFMXljaCtjMFJNelowNXB3TDJBU29zL2xwRE12ZFlHZjZSeVI4Z2M0K1RJTnptZG1TN2tKN2M5anliQ2VhSGNySzJxZ3Nya1BpY2oyZU52OEJKb0JCd25tOWp3dWNKWm82ZEdSSGl3Z2xNVXN1SThGV1phbmVJNTYwcnVaYnpnMUJEcTBDclJ0V3Bqd09wak4vQzRYSGR3U0lPV3hOR1E2NDhHcFYrdUtFRElmcllHMlFwQk9PeDJtSlR2TlVZTFd1Nk8zeStlUGNNQ2l1TDJkK0NBa0wraUNyVU1FREpoLytkZ2tEeENjelNCYjNQbFJ2RnNEQVgwTzlaU2lPc242N2JjbnF0bnhWQjJ1UFpKam0wR2JaWTN4aGRzL3MyUWtxN01XSWNUM0dlTmJZY2g1Yi9tUE8yVzFsbWVQVmc3ZERoTUowMkViYzhwNklSYmx1VHcyaTA3QTR6NHJmTlJCamtHVkg1MHpiOVlnclE3dk1WVU10MEpFSjhoRjZpQ2I5U0tJVFdoYlNlbWFMcDFIZHBBS3p6aXFoK2pCSTh4enlieE5VZzQ3VE0yVGRXeEVQaHlNdmc3WmNkWm5YSkM5aXdYTUdYNzBkc2Z0b1Q2Uk11aGFoN281RStBSTR0Y3lXQmFEbjVtSlBLVjFEbnE1WHlzRWlyMEZuU3VLWjc0SFJMUFlyVTBnOXNoWGQrTzMrNHlDdzdJa0p3Y2Y0MkVxMHRMMFBURS9iT0hCMmVaK3kzVnNidU8waHpIeDRhM1pydXhnT0V6YlRtM3I1bStWZGJLczMrSWw1elRDVkk3c2FNN05ubm5ad2ZKNUVqUk85aUtBUXdUWkRXS3hXbDkzd3VGZy80YWQ1Y0ZheERPNDdNT09paFZ3enNnOFIrL3pxaTNyanpiTmdkWFJtbVJFYVkybjZQdUZTamduU2ZZUXpvbU9mZVFZQktMTXJ2a3p3YzdPOFp3dngrNmY0ZllQQkVuY2VDVkt6NmxXVGFZcm0yMnBjVFJMRWRBOTJxdjFNYzVVdUNIYTIvNzJCUnNCTEIxMkFLNklIcFBMeHJQZjVCeGNCMGJaZUJmdEZMR1V6RWNCNUZkZXRVMzJFQmZMM1J4ZmlicTZBUElVcmI2MDJUNmZLZEtRdkFBdlk0M3Q1cTAyeWNWNVlPcWdYUHVzRERXcjlWcU44Slg5Ni9raTJJVFZVRDdVWVZvWG9QVG5zajMvYnR5Q2pjWWorUnFjeXpxTnh5NGJlZVhqbU1uYlUyV2c0eHFLci9zZFVYMktRSzAycnNleXA3eDNFSitSQ0M5ZlFLdmw1QitSZkczSG5kc1JsQWEzUXdBSW1WMUxKdmVlNHVobFFrUkc3N3dKS1pmc0NLM3pPUWZVWnlxbXd6QnRWMHFFTkxZV3VGeW1kcXFqVnNEc3dqM3NFdXd0Tmxub3RDS3ovVTZmSFVzbURPZGVHb2Z6czNlZDVzNm5kYXI3REdRTVcwbGVpTFErZ2NOUjJGeG9IUjBBZStDSVFMNkhTY1Y0RHgrWUUyWmVrYWtZRnJJS3NpY0xiQVpnRzdUdFJMN09JNEdzQkhwUTBRNmk5akVSblVoNFNtbE45Y1ZmcWZ4N1F1ZVFEaTk0VlFuRURvb01UdFhhbFNEREd0blBDb0lRMFZsc0E3V0gvMjg5WTV3czRmbHI2SFlpYzJ0U0FLRHdUSHpHQTlBczF5bnV0Q29wK2N3SVQvQlJiYXVlMlJaT0luSjhxVnhQbW50T1dKeEpqaUpiQlZWeGp1Q1FacWlDeTdaclowK1lQWWxPUkF5RVlQU2lGTHQxL2dWY3h6bDNzVFhrT1pPNG5NMW9sL1FaTHNSclBNKy93blF1SElEQ0lqcHVibHVKdno1QnpKNzZoQjYzTk5LWlhPOHI2eHZkWTRKa2Q1QkpxK0swYnJ0OHRtTS9Tbldvc01PRE1ERTA0SEppM0YyRHg0WFA4ckV2NXU4ZHd1TlFMdE1QM1Q2K25LeGJDY04raGl2RGIvT1ppZXVBR1FkT1pQMklHOTVvMWZjOHBNcVNwdFBicmZKVGdBWWZLR052a3ZPUnQwOGJtUmYyMFcxdHNMVHlTK0VwNDNhYzRuTzYvWjFJdnUwd1I3WEU2dXhpL05tU2FmNis3UUo4N0dpUzVUaXVHSmJrZFVySGlwTzJUanNoUHR1enRVMVdQRVZreG1zamtHY3NIdGE0eks5anBHQXhYRGtoWlY5V2hMUFFZMGhDUWZaWW5DOXZuc2xHRDBlblRvOE5MU3MyZUxDZ3RpRUxGa1FQTUJxL1FrM0VkS0VTQjl4M09HRy9PcXpiYytVN08vUU1FbXA5b3pNNVlYVk83UWtlM1Rrc0lVNGZJd005WklOWm16SHFaUmRldDM0WldVVTBIUVNheDBJQUVCMU9qSGtSOGZGQzNPWG4rVlV6TmJPd1RuTTJnZVRJN0dYZG5OUFBWdFdqOSsxSjhubUVUc3NlMVRUc09ZbWlxWnpKenQxQ1VqYkVrbGxJZ2hKcm5tZGJGUWRMWGVNOG1DRytDQ3M3M1ZzOFBVNTludEgwSGl3RmorM251VDByTjYyRWhxY2lxT2Vwc2JGWFFXUkNpd3l1M2NkVkNJUGd6SFNLbDlVVmhBLzdqWHlhRlZ4M255Rnh6dWNiRXVGRGFnZUNFZlJweHJLTEdNY0cxZWM4eG9WRkM1Wk1ycy8yVWdMSFo4TmRQc09hc3NZL0hPQVNwSnk5clFjZGhjL3NjeGg1V1JUOUFsa2VqQklDMkZySHJmTFNSY0NQOHVVV3dta25URTZPVjJEWTRGT3JKZzZkcmFkSDhDdlhxeGMvbmd3QXpNMm5YWlNOcEd2eWhHYUNncUJLV0o0d2xCTVVYck1hUGxmRE05MDVMYm5rWFV1NUhCeTFidDRob0ltY1EvUVltanhySDVBZGJzV1p5Q1U1QnM0SGpIbVVPOC9NaG16cnVNaGt3K0FMaHdUbXBKcnJnMVRwSDE4MVRMTnlNU0FmSVlUck5uK0VKWVIwQ29vOXdmS3dhNXhuUnRnd05DcVJGbnJpMEhtSFBVcmhjdjJpVTFvY2cyL2VIdk5uKzNCY1p6S2tkVW94WGdMa1poY01sT3E0TTB6NzRrMVpNMGNxUDdhR212WlhnSG00cEVOeDAzMDVUZUZrK2U0enN2UjliU2diVS9WT2pFZHNGd3d5M3phMm4yZVpmT1laNEp1dzVtQnZHMDd4Uk1mN1EyeFlSQ2RlV3B3Umc4Zmp6dUQwRVNMVG04TWpyd290ZEVobFErWkRmMTVQVTZFaHpZbmgzMm1FZGNLTUZkM2JpZ1VucDhYNzFORi90amxMTTFnT3BDalVhSnVIUkhSL1owNDNHR0MzeUxmOW44blFuUkVNSGk2Zkt2Nzl5VUJBdE1VRjMxYTRxYnFMYklTMVU3dHZITVhpVitkT090TEQ2aE5ZS2lFL3p1REpPRCtOTWpaN1BzOVAxOC9JSDJ3RXNMK2NZZ1NYeHRpakU4RXNOVHd0enE4QS9kMjJ4ei8yQ0hUMnhPWVdKQ09PQzJFR1grNC9xc2FKL1E3YlFRQlpvWWNHdWxXdTFlb3ZyTkU1cnRzcFI1OFliTVVMN0tBNm8vaDk2NWxydVRCTTFOWUdOODhBbkR0Z0E4RmhtUWpONlNEb0JlWkRCTE9QQmJEakhFTHdWZDVjZlltT3RwVUNUUUkzMm1kSTBoZlNaVzF2UDQvVklhcER4bDZrOW52TEFCT29LZkt1TTdOQ1BMQ2p2eUsxUk9xZWJjOTQ3QWhTdDkvWHVPMlVLSStqTW53Q0RqUXUyKzRFUEtsV05OdG4ydkl5dkVrdmRxVEVwUTROanQwN3ovMGc0TmpDTUIyK0RuVERtQkQwVHNmM0lWQnpnTnZRNi9ZemhsTmFycnBTbFVHZnUrZkZ6UUhGODhVZzQ4ZXRvV0E4Z0Ivd016dk1hem5WL0E3d3RxcnE3czZVZW4xMmhGMVF2TmR0SVZwWUJNa0owNnNGVE1SUkw3TzRsaFUyczhDQjJIWUdhRXF3VC9YZmFZSHljTWl4K1gzNGtNSk1KQjBPbkxjNDByWnJLZmdIclhGV2c2ak4rL3U0SE1UNjRjL2JLR2VXRFFKamdZeGo3NTA2aGlna0RGbkZBNEttZVZ0NURGZThRQllZOUxkNklNNWo4SGJUelBFTjA2MGQ4d1VvUFhFa2ZpMFBQUWlrUVA3eTJRanMybXpCL0ZWS2xudllIeDU4T0E5czNQeVNUVWZ1UjhGMUxBODNDVmk0TXdkTDMyOXdZcFd4M2o2K24vS29hdU1wck5idXNuNmU4VE1PaFhYV1BRcjljUWQ5TEJEczBVa25acG50MDRBOXFLelk0b25hOGF6VHFkZDVYczR3N2FhelFJd2tGQ0RwQUJBZ3dybWNyK2Mwc3BYWnpJdG11QnNSb0RvVUdnMmY1RGFuWWRFNUVkRklMbXFkZ3ZCbWR0RHhkTU5YMVdvTnZROXVFUWliZGFESlBEWHJMVUxiL0RESGVTYmFldzFqd3VOa2Z2aml5YXRidEdkQnVQWER5Tkg3VjVuYzU4RCs0UFMxQndMNUZvamg2WkU1VTdReHlONWZINVBuVThoWVRaOFFVY3lyQnlLb1RkWUJIKzRQd1luSTVxTWVzek95YlNhMU5zcHNNU0NUbk1kK2ZVS3lVMzU4SXBVUEV3aU9rcldiL05UaFkxQ0ZOVmJrMkZQc09CM0VySlZxYi9JNUtwYVB5S3pMTloxQWMwb2RvNDl1eUVGUXhxOFFDZmVaeER6RVRaOVQxcVd6RG5UY0hxQzlmRnIwak0wbjZPd0ZyUWxPRFN2MmZTVnJWc3JwaE1WSlVOZG55Q0NZMElGTUk5NlEySnc4M2o3UGw0eU9XSzhSZWZMQklaL3d0WHhTSGphVW0rb1o3N1FySldQeFhFNXhVQ3dLMUFlc2JLT1NUZkdPZlBtNlJQbk1nY1Y2ek5VU3d5MnNIaVhhTzB2NFNJTVhPZVFTTkR4SjB0UDRmYWJhcWZGaC9zdGFKQUlDdi9ZNGJ6dDlWeFlwSkZVTzBYWXVUenE1L25rb3UvSEExT3hKTEh2MnZKMjBCN05wNXJQR012QnhYeXhGZ3ZvdER3NlhCK2pGYnMrNStsaU8zTGZRR2VkSXArcmVzckc1N3VqYzNZM2RPc1lmWSsvZXZvTzE3OHZCRW5leUJBTWk1RUFSOWJRZEx1TzBjeW05enpSVnJNc0RUc05nUm01NkcvYlFtQ1k3UVlQRnZzRVczcHdMSkZaOVRrYVdJamh6eEVmdlFXS2NBdS80Y1hqVk5nZnBXU0ZyWFdkQnF2dUFoNG9kWHdnNmZvWFA1UHF3Ryt4b0JuejZ0SVJidE04aU9hU3BPZmZVc2JtT2tuak91SXpwdWZBY3lyZnc1c3NScnl5SkZQUFhzOU13eUdrVHVNODZlVEUrWU5iNXo0NHI4ZnpFZG9UUHlBdjRQVTVYbVYxMjRPZ0NxM2R1TUxuSWJDdG8rOGdGQUZtazFEcXpvM3pvbk95TEJlUm1wYU1lUmNGSnpUNlpQdnVlaTQxblM1N1hHdTNndVkvVFdRQlRLSGVGVjY5dFRaa0greW9taTJ6T2M5dWVIY2JuUXgvMEZ4K08xYS8zVENpMTFNaE9ZR0lIckxIN2JDZXJzdGxESjhkVkoraDZ6T2ZEUFJ3bGtwMDVXbndLVFBJdVRkMWNJN3BYenpQeVQ1bGVObHc2M2dKRzlxQUNsSENQTGZ0UWlzOENoalBQenc0NTYxRWNWcGxmUi9aZTJJbFBuWU9heEF3bjgzZ1pjSWdvQy9UNnlWcURiUFk4bktkZHpXb3Yrc05LQjRQUjgvajRGeTVzK3JBN2EzRjhvcFoxbXltY1pGeDAzTnVwdC9ZeGRQMHRVSDY4OVIxbldwV0hOdXdLTXVXUjBRTUhNNjdydTAvNUtmdnpoVlZPVnQvU041RFVKOFE1VU1hSFBWaHFOTXlVbU9xTHhCK1dtWS8zc1ljSWU3YTJYWTZYZGlpaWJXNDQ2ODlNWkd3YXh2dTVKeU9jeHpqc2JmL1RZMTdmTWp1YkN5Q2J6bW00bXdlYjR6cVJPL2xZWWVodzhyR1B5OVF3Nkg2eXNkc0gxK0syNTdBMjJoWmpoMlV4a3hOOWhBOE1FWmVFK0RwcmJOa3NrYU1QOCswK29jN1JURWZ3TGl2R2lJUmVDbmJoOFlIc3Zwc3ljSnc2RUlzZjVWUFNjNWxXVUxmNllMdm5IR0RZZUswY1JKN0FUeDdpQmN5TDNmUkpJdzQveFBNOUtYMGo3bHJzdXpsbmxsZER5dmlJaGVjMkxZMjVmUEZNQncvTFRyNWdmWVJUaHdnMnhBZTIydGtFNk96aFUrSFdjdjY0bytTMG8yMWZvTW1qZTV4SGU1YndGSityTVFGbHgxaDlCSE1mK3VSakhHQlIrZGVvcWZ2MHo1aVlQWDRNSGprU3gvTnFXR1VqMkcySEREcmdLeE5wWVhIZFpwWGlRNWtMdU9DY3NtYndSUUlhWHl5ejhEUGZlb204NlZjL0k0cnF0YXdmTmVxMFVqMkEzYkk0eDBjMzJibnNRMTdzUUQxUHViS3BHTnN3N3p6MlJiU1lSaFdIbnBxdDRyY3RteVo4RW9BbXhCYjVacnFia0Izbk14NWJhWHdpeE9jakhoM0RpVHBzRnVnQ2xzMnVNcXR3eTdiU0JEbjNzRGg4RWdCUHdQaFRUeVBCNVBuZG5WN0ZFdnYvZVo4eGg3Tjk3Q0tNU0NHZkFGc0pSaDZiblRHcll6cTVQWHVzV1oyQ0dJZlBkNElGL3IzaGtkVzR0a2Q0UG43cmtZR2JxSExlRU84QzZ6QllFMm5FVFpPZ1RqcVJRVHNJQ1hlSzJlZWNkc2M2eExhdVUxV3JCWml0T2dQYmEyMU9GL1NRenZHM1ZreGd1WHRHQjVXZHB5Q2RWdjd1V0NZVFV5THNlQzRIV0ZydFlNdEtkQW9RaXNRSjYrTnpOQ3ZZOFp5Ukt3NDh4UUNoYThnY09LTlpWQ3VLZ2s4cGZYekNRRlhLcnZBNUU5OE8yZXpqQjZyOXZpamY1VE4vRytLMU9QeTZPOG9TVW5JN0dyOURlN0Y4SStEc25tV2o5VDJmeHlpTEhJb0ZnSSs2OEo1NzRTeE8zYTdMNThQNGJKMEEvcjNxcFNSQi9FenhlUnFSZlFJVHhoaUFWcGpGbUQ3Y2JKdTI5Umpma3Ywelh1MDdCeCtPNXhDK2ZXNVdQdW1vZWNvWUVWOEFjcnYyUExOTWtHZndSVlpLVU1TSnN5VWlIakhHMTltSHFUdSszeDZUSHM2elNhQmV3SWZEK29vUGRBNzJISCtWdXh6V0o5bXBCdXQzakh5MnJRekYzQ3JvYW1JZm1MdWRNTUNOUWRSc3IvQTVqNXMzdzJCWnZldk1BU2svbGNTT0xEelBKNFdPTCtOR3NSbHlxRHpmWGoyMUR6NDJPUHRvaWNma2NiU21mSjJ6MjR1bEhvN0U1aXFRaWhha1R4K1RHcERlTXoxQzJVZjR6QjMxNWZOVUxQVzUyK05qcVo5NysxeW5ZQkhVNHlOVG5UUnpwamVpYzMwR2VmbDV4dGdwSC9MSkFzUVk0N3dkYVdDVkE0SldjVFRwTU4zdHdUVC9zbXU3VjgrKytDN3JBRGtFOXg3SENWaHc4bnBnN0lPcEhYWG84eHA5cU9PcC92Rmh5TDRZazM3VTA5RkJremJIM2FnREJ4dXdXdDI0T2thMU5XQWxqMElSRkQ2emFaWUdlWHJpT2NDM1dKL2xyY3VXdSs4ODdheWZydjdoZ2FYajhweStWeUptZDVxSEljMldyampNd0dNZ0tCZlUyTm84eStVcjB2aStjVnVqOCtWNGcyMEJrMCtzdzRZOWh1WENpVUdPVFhmcUdwVFpKeUY1K2o1Zm43c21mOXYyNHpxeC93VDR1dXBWUEhJZ05IZ1c1SUZ1UDdNOXZvUkxmZFZIRDhHSUFmZnNBY1I5R3ZlVEQwQWJCZG1IQTN5UGVlRVhMZEtHbTRyN29aN1BYRWY4QkNKdm5ScXY5eG1OVnQxR0h3NTlocDFqSDhSdEsxVXNpMkZsZllidERENnB3bno3emhIRWM1enpycWRRREJhbWhTenA1NW56WmFzWnZvRTVMZ25rNFpUSnMxdmxmRW5UY1h6ejFKZEVINXhta2lEeUJxOUQ4ckZqYkljRmwvTE94ZldiZzdRbXloSFdEd1NCejc0L2JxZjduR09zNnZVMHdRZk5BUm5Pckx0dDVhaHE2L2M4eFdQZU9UbmNzMFdUZkZZcjNSNHBwek9nVHp6QlJ5NnJuQUNFODh5MEp3MldNcW1uaStOOWJhYXhlOENHZm9tQ3d3THMvZmc4ZXpZVlBCeGtyaXRhZ1dDVGdnY3pQVHZFMzRkdUpwK2ltQjJ3ZFNyMVgydlpBRUZqNkRlQXpXS2F4SWR3UHpBM3Uza2lvdU02RDFKS1g1cWVmTXRLdWRKbGhwdG8ySDFNd1p1ZHR3WEVxdWVjOHd1YXNXT0FyR08rNjdRamkrVytQaDkvKzRxVEZpVzBEaUI2U05LRzAvaHR6MFc0d3BpMlJsODN1NUVTOGdQZHlmWjRQb2lSR2J2aVpibWxOWWFXZkZvbGlMQllwalNmZDNZRjRPdUVGTHVYMXZESnUydlk4dTJENnQvMlpXUUlkdTVVbTN3VkM5VzZjK1J0OGJQWkdtZGp5WjNZeEJyYk1YdGI3dm42Q0hFY3cvUDU2cEFWYktsWk9rQzQ1SXJTOVZrTWRkdVVaOE5Fc04za3RrTjN3YmJsN0dCcFF3QzJuZzArbm9vNDhqaWFyOGRqN0xVQVp2OFBQUGZ2RWE2TzBVNEFBQUdEYVVORFVFbERReUJ3Y205bWFXeGxBQUI0bkgyUlBVakRRQnpGWDFPbG9oVUZPNGc0WktoT0ZrUkZITFVLUmFnUWFvVldIVXd1L1lJbURVbUtpNlBnV25Ed1k3SHE0T0tzcTRPcklBaCtnRGc1T2ltNlNJbi9Td290WWp3NDdzZTdlNCs3ZDRCUUx6UE42aGdITk4wMlU0bTRtTW11aXFGWGhDQ2dIejBJeU13eTVpUXBDZC94ZFk4QVgrOWlQTXYvM0oralY4MVpEQWlJeExQTU1HM2lEZUxwVGR2Z3ZFOGNZVVZaSlQ0bkhqUHBnc1NQWEZjOGZ1TmNjRm5nbVJFem5ab25qaENMaFRaVzJwZ1ZUWTE0aWppcWFqcmxDeG1QVmM1Ym5MVnlsVFh2eVY4WXp1a3J5MXluT1l3RUZyRUVDU0lVVkZGQ0dUWml0T3FrV0VqUmZ0ekhQK1Q2SlhJcDVDcUJrV01CRldpUVhULzRIL3p1MXNwUFRuaEo0VGpRK2VJNEh5TkFhQmRvMUJ6bis5aHhHaWRBOEJtNDBsditTaDJZK1NTOTF0S2lSMERmTm5CeDNkS1VQZUJ5QnhoOE1tUlRkcVVnVFNHZkI5N1A2SnV5d01BdDBMM205ZGJjeCtrRGtLYXVramZBd1NFd1dxRHNkWjkzZDdYMzl1K1pabjgveHJ0eVl2RFJmRzhBQUFBR1lrdEhSQUQvQVA4QS82QzlwNU1BQUFBSmNFaFpjd0FBQ3hNQUFBc1RBUUNhbkJnQUFBQUhkRWxOUlFma0J3SVJFZytzaDBPcUFBQWdBRWxFUVZSNDJ1eGRkM2dVMWQ1K3oyekxwdmVFa0lSaUNDMFFhZ2hkT3FHSU5CRkVVY0VHSW9JRnBQaGh1VjdBY20zWDNwQXJLZ29pSUNBaXZZbDBFa3BDU085bGU1dlptZlA5c1R2RDdHWkRVVVRVL1QzUFBKdmR6Y3llT1hQbW5mZlhDYVVVZnZudFlyUFpVRjVlanVycWF0VFcxa0tuMDBHdjE4TmtNc0ZzTnNOaXNjQm1zOEZtczhIaGNNRGhjSUJsV2JBc0M0N2p3SEVjbkU2bnRQRThMNzN5UEE5QkVPUi9FMEVRSU44b3BlSXJvWlJDM0FBUTcxY0FvSlFTOTlDbFY2L1BTRjVlWGx4VVZGUVRqVVlUcDFBbzRoaUdpV0VZSm9vUUVna2dBa0FvSVNRVVFCQ0FRQUJhQUdyM3BnREF1SThuQU9BQnNPN05Cc0FLd0VJcE5RSXdVa3IxbE5KNlNta2R6L08xSE1kVjJlMzI2b3FLaW9yMDlQUnE5M0dvYkd2d25oRGkvWjM0R1FCUVFraURWOWxHR1lZQklRUU13MEFRQktqVmFqQU1BNFpocUVLaGdFS2hBTU13RVA5V0twWFNxN2lwVkNxb1ZDcW8xV3FvMVdwb05CcG9OQnBvdFZwb3RWb0VCUVVoT0RnWUlTRWhDQThQUjBSRUJLS2pveEViRzR1RWhBUm90VnIvelhRZGhmaUI3YmNKeTdJb0x5OUhaV1VsYW10clVWOWZENzFlRDZQUktBR2ExV3FGM1c2SDNXNi9JcURKd1V5K0NZSkFSSUR6QWpNUElCUEJTUTVTM29BbGYxOWRYWjBhSEJ5Y29sUXFiMkVZcGlVaHBEa2hwQm1BWmdBQ2JwSnB0Z01vcHBRV0NZSlF5UE44QWN1eUYzVTZYWDZ6WnMwdWVBRWN2UXpnTlFCQUVmZ0lJUjVBUnltbFNxVlNCRFlKME9RZ0o5L2s0TllZd0FVRUJDQWdJQUNCZ1lFU3dJV0doaUk4UEJ5UmtaR0lqbzVHZkh3OEVoSVNvRmFyL1RlWEg5aitIQ2twS1VGbFpTVnFhbXBRVjFjSG5VNEhvOUVJazhra0Fack5acnNzb0hFY0o3RXpiMUR6QldZaUt4T0JUYngyUG9ETTQzMWVYbDVzUWtKQ0I1VksxVUdoVUxRbmhMUUgwQmFBNXE5OERYaWVkNVNXbHA1TlNrbzY0M1E2ejloc3RwemMzTnljSGoxNjFMcVpvaHpVQkRkVDgyQjIza0FuQXBzSWFDS2J1eExJaWFDbVVDaWdVcWt1QzNCYXJWWUN1SkNRRUlTR2hpSWlJZ0pSVVZHSWlZbEJmSHc4a3BLUy9EZVpIOWh1bkZSVlZUVlFPdzBHZzZSMnlnSE5icmMzQUxRcnNEUWlxcDFlZ0VZYVlXVU5HTm5FaVJNVkgzMzBVZmVBZ0lCdUNvV2lLeUdrQzREVXYrTzE0SGtlcGFXbGFOYXNtZmRYZVlJZ0hPTTQ3cmpSYUR4Mnh4MTNITnU5ZTdjZ0F6c0o5QWdoZ2plamN3TmJBemJITUF6MUFYQlFLQlQwU3V4TkRuQWlleE1CVGxSUHc4TENHcWluY1hGeC9wdk9EMngvbkJnTUJwU1ZsVWtzelpmYTZjdU94bkVjV0phVkdKb1BPeHFSMjlGOE1EUGl3MTRtc2pMeXhCTlBLSll1WGRwSG85SDBaQmltRnlHa0o0RGdmOEkxdVF5d2VZdVpVbnJJNlhRZU1wbE1oMmZPbkhsb3pabzFUaDlBSjRqQTVnWTA2c011UjcyWm5KZjlqWHJiMzBRR3AxYXJKWUJyelA0bVYwOUY5dGEwYVZPRWhZWDViMEkvc0YwLzRUZ09KU1VsSGl4TnI5ZExMTzFxN0dpK25BTWlvSG14TTBuTmxERXl5SUdNVXNyVTE5ZTNDdzRPdmxXaFVQUWpoUFFIOEk5YzlkY0FiQTJlVTRJZzdPVTRibDlWVmRXKzVzMmJuM09EV3dOV0oyZDBJbnVUL3kwNkdPUWdKd0pjWTg2Rks5bmZSUFlXSGg3dXdkNlNrcEtnVXFuOE42VWYySDZmVkZaV29yUzB0SUZ6UUs1MmlxQW1zalNSb1YwdG9QRThMNm1aZ2lBMENtWldxM1dBV3EwZXpERE1ZQUFkL0ZmbmR3R2J0MlE3bmM0ZFJxTnhWM1IwOUQ2NHZMaUNOOWcxQm5JTXcwanFxa0tob0ZjTGNDS0RFOW1iQ0c1eTlkVGJ1WkNZbUlqNCtIai94ZmNEMjdXTHhXSkJjWEV4eXN2TFVWVlY1ZE01Y0tYd0RTKzFrM2c1QnVUc2pIZ3hOQW5NYkRaYmxscXR6aUtFWkFGbzZyOHlOMFRLZUo3LzBXUXliWStNak55T1MrRXFQa0ZPcHE1NnFLb2lpL1B5b05JcnNUZHY5ZFRidVJBWEY0ZUVoQVFrSnljaktDaklmN1g4d0haMVVsSlNJckUwdVMzTmwzUEEyNWJtZzZWZENkQ0l0ODNNWXJFTTFHZzB0eEZDUnZuQjdLWUF1UzE2dlg1TFRFeU15T1E4UU02YnhjbEFybEdBVXlxVmpRS2NuTDE1T3hlOGJXK0ppWWwrNzZrZjJDNHZKcE1KUlVWRktDc3I4MkJwQm9QQkl5YnRLb05zaWFoNml1cm1aZGdabzlQcDBvS0RnOGN5REhNN2dIYitKWGxUeWxtV1pUZVdsNWR2YnRteTVSa1p3UEV5a0tPeTF3WXNUcTZtdW9HTlhrMXdyenoyVGZTY2l1eXRhZE9tYU5hc0dVSkNRdnhYeUE5c0RWbWE2Q0R3NWZGc0xJUkRCRFZmZ0NiUEVwQURtZ2htbXpadENoZzhlUEJFcFZJNWdSQXl6TDhNL3pvaUNNSTJxOVc2NGEyMzN0cTRhTkVpR3dDbkhPUmtMRTRRMlp1M211b1ZIdUlCY0NLNE5SWWE0dTA1RlIwTGZ2Ym1CellBZ05WcVJVRkJRUU1IZ2NqU3pHYXpaRXU3UXViQTVRQ055TlZPdlY3ZklTZ29hQkxETUpNQStGZmlYL3laeUhIYzJwS1NrdlVwS1Nsblphb3E3NjJxeWdDT1hnbmdMaGZZcTlWcUVSd2NMTEUzYjhkQ2l4WXRFQmdZNkw4eS8xUmdxNmlva0ZUUDZ1cHFEd2ZCbGVMU1pLRG1FOURjQWJVZTZxYlZhczFTcTlXVENTRVQvVXZ1YjhuaTF1bjErclhSMGRFNzNBeE9EbkM4THpWVkZpYlNBT0FhczczNWluc1RWZFBZMkZoSk5XM1NwTWsvL3Bvby8wa255L004OHZQelVWeGNqSXFLQ2lrbHltQXd3R2cwd21LeFNLRG1jRGg4WmcrSWdDYXpvL2tFdEx2dnZsdngwVWNmM2ExVUt1OEcwTWQvKy85OWhXR1ljWkdSa2VONG50OXZzVmkrSGp4NDhOckRodzg3UlpDamxEYndyUEk4VHdWQm9HTGlQYy96VkI0UzVIUTZxVHhjU05RUTVLWVE4YUVyUG9TdFZpdk1aak5NSmhOdXVlVVdLQlNLZnk1akt5d3MvRWVjcU5GbzlBbG9vc2RUcm5aZXpvN21TK1dVc1RPeWFkT21rTmF0VzkrclVDaW13Ujl6OW84VVNtbTJ3K0g0Y3YzNjlXc1dMRmhnSklUd01pYlhRRTJWc1RodkJuZForNXRjUFJVRGU4V2MweVpObWlBNU9SbWhvYUgvVEdEak9PNXZmNUpsWldVb0xDeVV2SjVpQm9HMzZ0bFlHSWVYMmtsa2FVOFNxR1ZuWjBlMGJObnlmb1ZDY1QrQUZQL3Q3UmNBK1hhN2ZkV21UWnUrbmpKbGlzNUxUZVhkNENhcHFPNWdYeXJQUWZWV1QzMkZoWGluWkVWSFIwdGUwK2JObTZOcDAzOWU1TkRmMnNaR0tVVnViaTZLaW9xa2dOdkxlVDI5TXdnYVVUdEZMeWRES1NVblQ1NE1iZHUyN1F5RlFqRUR3QzMrZTlrdlB1U2l6V2I3L0t1dnZ2cHkrdlRwaHNzQkhDRkVrQ1hkZTJjdVVGOFpDNDE1VGNXQTNtYk5taUUxTlJYdWJBay9zUDJWeFdReTRjS0ZDNUw2V1YxZExYazk1UUczamVSNUV1OVVLQzlQSjdOa3lSTEZraVZMSGxRb0ZBL0NIMy9tbDZ0NzBKNjFXcTByNzdqamp0VmJ0bXhoM1FBbnFhZ3lnQlBrSGxUdjFDeVZTa1VieXplVnE2V1JrWkdJalkyVjFOS1VsSlIvVE16YjN4TFlxcXFxa0orZmo1S1NFbFJVVkRRSTVmQk9YcGZiMUx4WW1vZGpRUFJ5MnUzMk8xVXExU01BZXZodlY3LzhCb0E3YkRRYVB3c1BEOTlJQ09HOEFNNmJ3VkZaQmdQMVptL2VNVy9lQWIxaVNFaVRKazJRbEpTRVcyNjU1UjlSRHVsdjV4VXRMQ3pFeFlzWFBlTFQ1TG1lM3NucmNwWW1PZ3JrYXFmTWpzWllyZGFCYXJWNnBqdmx5UzkrK1cxc2dwQ01zTEN3REo3blIxVlhWMy9XcEVtVEEzS0E4L2FpOGp4UDNRSkJFS2hYL1Q3eFBYeDVVVVd6aXVoRnRkdnRzTmxzYU42OHVSL1kvaXIydFBQbnorUGl4WXVOT2drdVU5bTJBVXVUcTUzMTlmV3BvYUdoc3dnaEQvdHZTNzljTDJFWVprUjhmUHdJbG1VL3lzbkorYnh6NTg3NU1vQVR3MFI0QUlJZ0NJTFkzOEs5VVRGbFR3NXUzaUFuT3NDOHdjMXV0Nk4xNjlaL1c3dmIzd0xZYkRZYnpwOC83K0g1bE1lbk5XWlA4MlpwYmxDVDFNNTc3NzFYOGNFSEg4eFdLQlNQQVVqMDM0cCsrU05FcFZMTjZOU3BVNWJGWW5tL2I5KytueDgvZnB3RndMblpHeU9xcUpSU3FSaW0yNEZGNWNVVnZBSE91MXF6SE9CWWxwWEE3ZS9ZU09ZdkQydzZuUTY1dWJrb0xDeVVDa0xLcTNMNEtnYnBmb3JKUVUzTzBoaEtLYkZhclVNMUdzM2pBQWI1YnoyLzNBQnBHaGdZK1B5dnYvNDZvTHE2K3FNbVRacnNKWVN3TXZXVTRGSk9LdlZpY0hLQW83NmFBdmxTVDhVb2dOVFVWRVJFUlBpQjdXYVJxcW9xajNBT01ZbmRWNFZiV1NnSEVlbTVENWJHbEphV3hzZkZ4VDNPTU14Yy83M21sejlCUFIwUUh4OC93T0Z3L0hmSGpoMmZabVZsVmJyVlUwWU9jSzRLNWtSb2pMM0pWRlZjalpxYW1wcjZ0M0lxL0dXQnJhU2tCSGw1ZVNncUtwTENPZVROVlh3NUNieFpHcy96Y3BiRzJPMzJDU3FWYW03cHVlTmR5eDNCeUVodmRWT2RjMzE5UFdwcmE1R2FtdXBIZ0wrQTZQVjZiTnEwQ1E2SEE0TUdEYm9tZzcxYXJaNDFiTml3WG5WMWRlOUhSVVZ0SVlRbzNPb3BKN085RWJuOVRRNXdMTXNTbG1VYnRiMTVNemlPNDFCVFV3T3oyUXdBaUlpSVFPdldyWDgzOFNnb0tBQUF4TWZIWDlYNVYxUlV3T0Z3L0c3bkJ0UG9ONndlbnl4N0VvUDdaeUlqc3o4ZVdmZ3F5a3pPbTJMQjVPZm40OHlaTXg1eGFwZlltZzdGRjg3ZzJKRmZrWjJkZzhMaU1saHNkamdjRGlJQ25EczFpZ2lDd0FpQ29LaXNyRXgyT3AydnFWU3Evd0hvdXZvLzgzRFB3bmR1aW5NOWZQZ3czbnp6VFFEQWtTTkg4TnByci8ycFkvZzl3bkVjQmcwYUJJUEI4S2VONFhyTDJiTm5ZYmZiRzN6dWREb3hZY0lFRkJVVklUQXdFRmFyOVpxUFRRanBIQmtaK1I3THNvdDM3TmpSakZJYVFDblZ3TldZV2tVcFZWQktGWUlnS0FSQllIaWVKMDZuazdBc0M1UEpCS1BSU0VRdnFEeVAxR0F3U0ZXaUt5b3FVRnhjakFzWEx1RFFvVVA0K09PUDhmYmJiLy9tZGZiU1N5L2h6Smt6QUlDQ2dnS3NXN2NPSzFhc3dLcFZxNjVxUFd6WnNzWG4vMTdyZW1nVTJMWjk4Q3hlL0hRM1JrNS9CdiszNEQ3ay9mZ2VIbm4yNHo5OUlaMDdkdzVuejU1RmZuNitSN1Zia2ExVkZlY2h2NlFheXNCUWhBUUhnSE5ZU0gyOW5vaU16YzNVaUNBSUlrc2JGeDBkL1JVaFpPYk4rTlQvOHNzdmtaR1I4YmNZZzBxbHd2dnZ2LytidWk3ZERQUGdTK2JNbVlPU2twSUduK2ZsNVlFUWdrV0xGbUh5NU1sbzE2N2Q3NW0zQi9yMzcvL2ZFeWRPWkFIUXd0VVRWZ1EzcFJ2Z0dCSGMzTDAwQ00vemNEZ2N4RzYzRXhIY0xCWUxUQ1lUVHA0OGlZS0NBdFRVMUVqOVBWaVd4Wmd4WXpCdzRNRGZORTZUeVlUZHUzZWpUWnMyQUlETXpFeXNXTEVDdDkxMjJ3MWZENDBDVzFGUkVVaEVjMHlaTkFZamI3OFhMeTkvRWNPNkpNRUpRRjk0RkhQdm40Q01qRXpjTnZraDdENVhCUUE0dXY1TkRNKzZGM2syQUhEaXhZZEc0dUZsWDdwNStVbE15aHFPZDcvWWlEbFRiMGRtUmlZKzIxM29ZbUNIdnNjOTQ0WWlJNk1YcGo3NkhQSnJIU0p0eE5aUGxtUDBnTDdJN0RzWUR5NTRCYWZQblVOQlFZSFVEcys3SjBGRmVUWEFxQkFhRkFDVldrdlVTZ1dvNEhTQm10TkpPSTVsbkU0bjAyUEFpUEJ2OXAxNVFhVlNmUW1nMjRGdjM4VHcvcjB3OExaN2NMalFKS2V1SG1OWTh1WWFPRzdRVFdNMEduSDI3Rm4wNkhFcER0aHF0V0xldkhubzM3OC9IbnZzTVRnY3J0R1l6V1k4OWRSVEdEcDBLQ1pObW9SVHAwNEJBTDc0NGdzOCt1aWpHREJnQUJZdlhveXNyQ3pNbVROSGJMcU10V3ZYWXVUSWtjakt5dkw1cFBRMWhsOSsrUVhqeDQvSDRNR0RzV1RKRXRoc05nQkFiVzB0WnMrZWpheXNMSXdmUHg2Ly9QS0x0TTlkZDkyRmtTTkhZczZjT1pLNkk4cW5uMzZLNGNPSFk4aVFJWGp0dGRmZ0hUVHVQWWJ2di84ZTc3MzNudlQ5NmRPbnNXREJBb2twTFZ1MkRFT0hEc1hZc1dPbE1aak5aa3lmUGgydnYvNDZoZ3daZ29rVEo2S29xQWdBOE1JTEwyRC8vdjNTOFZhdlhvM1ZxMWRmOXRyczJiTUhFeWRPUkdscEtlYk9uWXVKRXlkaTU4NmRBSUNubjM0YVR6enhCQ29xS2pCeDRrUk1uRGdSTE10ZTluanIxNi9INjYrL2poa3pacUJmdjM1WXVuU3BOQS9MbHkvSHFGR2p1aXhjdVBDRFhidDJ6ZjN3d3crakthVUJBRFNVVWhXbFZDa0lncExuZVViYzNNQkdEQVlEYW10clVWdGJTMncyRzNRNkhVNmZQZzJqMFlqczdHeHMyN1lOUjQ4ZVJXVmxKY3JLeWxCUVVJRGk0bUxVMWRWSnY1K1hsNGQ3N3JrSGdpQkk0NTA5ZXphT0hqM3FjUTRiTjI3RXFGR2p3RERNRmRmMjVkYkR1WFBuTUdIQ0JBd1lNQUNmZnZycEZkZmtoUXNYTUhQbVREend3QVBvMzc4L0ZpNWNDTWgwYzQrdDhzUUc5R2pmRXAxNmpjRFNWOTdCNlJMWGlWTGVnRmtqT3FIN3NHbjRidE42ekpwd0sxcjNtSUFTTzhXdWorZWpSWXMrT0dtbW9KVERJNE5TTUd6Mlc2NzlxdmVoUzRzV2FObTZFMmJNbTQ5Rjg1L0Uzbnd6K0xvVEdOQytKVVkvK0N3MnJGK04wVDNiWXRUanJuMU9yRnVHbGkzYVl2N3JLL0hLMGpsSWlvbEMxclFuTUgvK2ZFeWZQaDNqeG8zRDRNR0RrWm1aaVk0ZE95STFOUlVhQlFGUmFoQVpHVWxDUWtLSVZxc2xhcldhVVNxVkN1S3lLYXBYcmZsMjhPSUhSLy9Zc20wZmVxeWFvNDdTUGJSclNnczY5cUdsZFAzYWxYUll0MVRhZXNUamxGSktUNnhiUmx1MmFFdWZlZXQvZE8ybksyaW5sSlowMmJvVDlFYklxbFdyNk50dnZ5MjkvL0hISDJuLy92MXBXVmtaZFRnYzlNNDc3NlJyMTY2bGxGSzZZTUVDK3E5Ly9Zc0tna0FQSHo1TWUvVG9RYTFXSzMzOTlkZnBmLzd6SDNya3lCRTZkT2hReW5FYzdkV3JGNjJ0cmFVSER4NmtJMGVPcEhxOW51cjFlanBreUJCNjh1VEp5NDVCcDlQUjd0MjcwN05uejFLZTUrbkNoUXZwRzIrOFFTbWw5UDMzMzZlZmYvNDVwWlRTUTRjTzBYNzkra243bVV3bWFqUWFhWHA2T2pVWUROTG41OCtmcC8zNjlhTVdpNFZhTEJZNlpjb1Urc3N2djF4MkREVTFOYlIzNzk2VTR6aEtLYVZMbGl5aGE5YXNvWlJTK3ZycnI5T25uMzZhT3AxT2V2YnNXWnFabVVudGRqczFHQXcwSlNXRkhqaHdnRkpLNllvVksrajgrZk9sZVowNWM2WjAvR0hEaHRIQ3dzS3J1a1pEaGd5aHVibTVEVDQvY2VJRUhUTm16RlZmNjQ4Ly9wamVkdHR0VktmVFViUFpUQWNPSEVoLy9mVlhTaW1sTnB1TkdvMUdPbVBHRFByamp6OVNudWQvS2l3c25BQ2dHWUFtQUtJSUlXRUFnZ0FFTUF5akpvUW9DU0VLdFZyTkJBUUVFQUFrTEN5TXhNZkhJems1R1FFQkFXamV2RGt5TXpNeGVQQmdqQnMzRHRPblQ4ZjgrZlB4MEVNUFllREFnVGgrL0RoWWxnV2xGR1BHak1IT25UdEJLY1c1YytmUXQyOWZPSjFPRDh3WU4yNGN5c3JLR21ESnA1OStpdWVmZjk3ak03ZXFqUFQwZEJnTUJ1bnpqei8rR0dQSGpvWFpiRVpWVlJVeU16T1JuWjN0c2UrcVZhdnc5dHR2Uys5UG56Nk5ybDI3b3F5c0RGYXJGUk1uVG15Y3NjV2xqOGJXcmQvanZxd08yUC9OZXhnemVBZysrZmtjaE9JRDJISFdnSWtQUG8zYlI0N0Jvc2Z1Qmx0OUZMdFAxbDhWQ3huMTZISjgrT295dkxqc1pmUnBHWVNDZzd0UmFHVXdmZDRpakI0ekdXKzgrd0ZtanV2dGVnSjh2d0UwTEFGOHhSbmtGQmtRb0hEaTlQR2pVcHlhZDBpSHpXWURUeWtnOEI2cXA4dnJLVEFVVU14K1k5UERVeWVPWDdsay9zeWhHbnNadHUzT1JmNnZoMURQQitEQnA1L0JtSEgzWUdDWGhFdFBvZTgzQUJGSlNGQVlVV1VMUkdJRWcxMjc5dDBReHJaMjdWcU1HemZPNDdNMmJkb2dJU0VCYXJVYTNicDFRMFZGQlFEZ3A1OSt3b3daTTBBSVFmZnUzWkdjbkl3VEowNEFnRlIxTlNRa0JFcWxFa0ZCUVdCWkZwczNiMGFUSmsyd2R1MWFyRjI3RmpFeE1UaDA2TkJseDNENDhHRjA2TkFCYmRxMEFjTXdXTEJnQWNhUEh3OEFtREZqQmhJU0V2RDIyMjlqNTg2ZHFLbXBrZllUZjk4N0lEUXVMZzRxbFFydnZQTU9UcDgralpVclZ6WlFNYnpIRUIwZGpTNWR1bUQzN3QxZ1dSYTdkKy9HcUZHdVpKQWZmdmdCSVNFaFdMbHlKUTRjT0FDR1lYRCsvSGxwREQxNzlnUUFaR1Jrb0tyS3BXa01IRGdRT1RrNTBPbDBPSG55Sk9MaTRxNUhXNzlybHU3ZHV5TThQQnhCUVVGbzM3NDlLaXNyQVFBQkFRRUlDUW1SNnFzeERETzRXYk5tYjN6enpUZFQzS3BwZ0tpYUFoQlZVd1VBUnN5ZUlZUVF0eU9OMk8xMjhEd1B1OTB1cWFaNnZSNTFkWFZTWUx2UmFFUnViaTVPblRvRnU5Mk9HVE5tNFBQUFB3Y0FmUFhWVjdqbm5uczg2cjNsNXVZaUpDUUVDUWtKVjNXdWphMEhBT2pjdVRPQ2dvSVFHeHVMWWNPR2VURC94dTZMaElRRUpDUWtRS3ZWNHE2Nzdtb00yRmhzVy9NWjloY3llR3p4TW16YnN4ZTNkMURobGRmZWQzbFFBR2cwcnVhdEt2Y3J4L0x1ZlFYSUdHc0RDZmVLbDJFNUJ3QUZOQnFYZzdaRmVoOWs5ZTNzb3B3bUN6aWJIaGZPbjBkaFlSSENrMUlSRzZLOFhQY29Ra0VJcFlKVU84M3A1QmllNTVuaXZPMEp2VnEyZUMxQXEzMERRSUpTbzRZQ0FNZXo0Snc4QUFXVW1vWk9ZcnZORGlYRG82YXlFcFdWMWVpU05RVlp2ZHJlRUZ0aWVIajRaYXVoTWd3anFRc2N4MEdqMFVqZmFiWGFLNm8vTnBzTm9hR2gwaloyN0ZqMDZkUG5zbVBnT0E1cXRWcDZIeElTSXBYRmVlMjExN0IrL1hyMDZORURJMGFNdUtyekRBc0x3OGFORzVHYW1vcHZ2dmtHdzRZTlExbFoyUlhuWWVyVXFmajIyMit4ZmZ0MkRCbzBTQW95dGRsc2lJeU1sTTVwN3R5NVB1ZFFQbmRLcFJMang0L0g5OTkvajNYcjF1R3V1Kzc2MDIxM2hCQmNJWTg3UWExV3Z6Uno1c3huTm0zYWxDaXFwaktBRTRHTmNkdVRJUWdDY1FmbkVrRVFpTVBoOEhBcTZQVjY2ZDZ5V0N3b0xDeVV3SzF2Mzc3SXo4L0h1WFBuc0czYk5reWFOTWxqTUd2V3JNR0VDUk91K3p5bzFXcklTNnRkelgyaDBXZ2FBellsanYrNEVrOHRlQlo3VCthanRMUVFlclByeGxFMDY0Wk8wU3I4c081L0tDd3R4YW92TndDQkxkR3RZd3ppWStJQTFPR1hnOW5JUDdrTEY2cjVLdzY4WlpjTVJDaFliUHBtSGNwSzgvRFl1RXowdnVkRm1Fd21ORW0rQlpiYUtnaWg4YmlsWlRNb0JSWUJha1dET0RWM3hWdkNzaXdVaEFCVUlDekxFWjduR1VHZ3pOQ0hYKzNYcEhubWg1bnR3MmJ1MnJnRzU0cEw4ZTJxTmJDUUVHUjBhWTFiT25SRUlDeFl2Mm9kQ3M4ZnhjbThPbWw4ZlhyM0JLZlhJU0VqQ3c4L09BMXQ0c09Ra2RIbEQxL1lhOWFzd1IxMzNIRk5UL3N0VzdaSWJ2YnM3R3gwN05qeGl2dFVWVlZoekpneG1EQmhBbHEzYnUyeFlIeU5vWFBuempoNjlDajBlcjMwUHg5ODhJSGt0UjAzYmh5NmQrOHVxUWxYa2wyN2R1SGxsMS9HYmJmZGhsZGVlUVZ0MjdiRndZTUhyemdQM2J0M1IybHBLVmF1WElrcFU2WkluMmRrWklCbFdVeVlNQUVUSmt4QVFrTENWUVdmVHBvMENldlhyOGZodzRldnlYaXUxV3BSVjFmM3A0QmZlbm82amg0OU9xTlhyMTR2RlJRVTlQRGxXQUNnRUFTQkVkbWI2RFdsbE1LWFUwSE0xckhaYkZJSi9ieThQSnc5ZXhhVEprM0NvNDgraXFGRGgzcFVDZUU0RHJ0MjdjTFFvVU92eTNrVkZoYUNVZ3FIdzRIZHUzZWpRNGNPVjF3UE9wMU9zamYvOU5OUGpjV3hNWGpzcGYraWV2NUN6QmczQkJ3Rm9sdDJ3Y3N2ejRGUzNRVExYdjhYWnM1N0hnUDdyWUk2ckNtZWVlVnRwSVVDR0h3blJxVjlnK1VQMzRaUFcvZERpNlpoMEYzaEpEVEovZkhLMGdmeDFMOFhvZSs3SEtLYWQ4VnpDNmZnOU9uVGlPNDRCSm10TCtEbmJ6NEQ2K1NoMElhZ1pZb0dBWEI2eDZoSjhXbFFLQWdSQkNJSVBBSEFESjc0eU5UWC8rL2had2pScGl4NCtYVVVQVElQSTI3dEIwVkFCTzViK2hxR3R0SUNHSW9sRHc3QnN4OCtqUjlYeDZKOXdxV3FvOE1mZmg2UGx6NkJOeDZmZ3VVOEVOMnFLMTdxUHhsQStCKzJZRm1XeFo0OWV5U0QrTlhJMHFWTE1YUG1UR3phdEFrVkZSVll1blRwRlcvbzhlUEg0L1RwMDhqS3lrSk1UQXdVQ29YazVtOXNEQWtKQ1pnN2R5NG1USmlBbUpnWUFKRGM3ak5tek1EQ2hRc1JHeHVMMk5oWUNJSUFnOEdBc0xBd2pCczNEdlgxOVRDWlRCZzFhaFNDZ29Ld1pjc1daR1ptWXZYcTFSZ3pab3pyd2FsUVNEZkk1ZWFCRUlLSkV5ZGl5NVl0U0VtNVZOZHo0Y0tGZVBUUlJ6RjI3RmhRU3RHdVhidXI4cWFLUFFOYXRXb0ZwZkxxd3p1blRwMktPWFBtb0huejVoZzllalNtVHAxNjNkZkQ4ODgvangwN2RxQzJ0aGJIamgzRFN5KzloUGZmZngrdFc3ZkcxS2xUTVdyVXFJRnhjWEhOQmcwYTlOYlBQLys4MFoyR0phL3N6QU1BcFZSd3gyNUNvVkJRa1JDbzFXb2FIeDhQczltTVU2ZE9TV3p4czg4K1EvdjI3VEZ5NUVnSWdvQTJiZHFndUxnWTk5NTdyOGY0ZnY3NVovVHQyOWVEeVFQQWhnMGI4TnBycjhGa01zSHBkT0xubjMvR0k0ODhna21USmpXNkhrU1FHanQyTFBSNlBYcjA2Q0daRHk2M0hod09CKzY5OTE0cDlPYUtaWXRZaHdsV0I0UHdVSy9PMDRJVDlYbzlna09qb2ZaWUJ3TDA5WG9FUjBaZVUvU3Z3RHFnTjlzQUJqaWJrK01SemxGZFhZWGFlaDBjTmx1RGJBSTVxTW15Q0pocGQwOVZMUC9QZnhkRWh3Y3Rna2Nnc210ODJ1QndhTlNlaE5WbTBRUEtZR2g5cUtTc3d3S2pqVWQwK0I5ZmF2bnMyYk00Y3VRSTdyNzc3bXZldDY2dURxR2hvVkNwVkZlOWo4MW1BOGR4SG1Xa3J6UUdsbVZoTnBzUkdSblpZSUhaYkRhRWgxOGI4SnRNSmhCQ0VCd2NmRjNtd1dBd1FLMVcvKzQ4eUNsVHBqU0l1OXU0Y2FPSDUwL3NrWEdsY3k0dUxzWWpqenppOFZuNzl1MnhZc1dLM3p5K21wb2FhTFZhTUF5RGYvM3JYODdFeE1UWDNudnZ2WTlPblRwbGQ2ZGtjZTdONmE3ekpoQkNCSGtoUzQxR0E3VmFUY1hhYm1McEk3Rm9aVlJVRk9MajQyRTBHcEdUazROVnExWjVuT3VubjM2S1BuMzZvRldyNnhmUUxpYnJ5ME5CR2xzUDJkblpXTGh3SWI3Nzdqdm85WHBFUmtiZVhQWFlkRG9kY3J4QVRYUVNpTTFXNU4yalpLQW1yNXZHVkZaV0prVkZSVDFEQ0prQnYvamxieXFDSU9EdXUrOUcwNlpOd2ZNOFRwMDZoYSsvL2hvaElTRXJkK3pZOGVIdzRjTkxDU0VPTDNEanZjQk5LajB1Z3B1OEc1WUlicVdscFNnb0tNQ3NXYlBRcDA4ZnRHL2YvcWJKTHhXQmJjT0dEWmNZL2MwQ2JISlFLeWtwOFFBMWVjTVZIMHhOVEkxaUJFRWdKcE9wbTFhclhlaXZtZWFYZndxNFpXZG53MjYzSXowOVhYSWc4VHkvSlRjMzk3MTI3ZHFkQnVDUXNUZW51N2tNNys2eElJaU5ZK1RnSnBZY0Y3MlhZZzIzbEpRVXFXRGx6UUp1VnFzVmhZV0ZIa0hRTndXdzZmVjZaR2RuK3dRMWthbjVVajlsV1FTRVVzclliTFpoYXJWNkVmeVZiZjNpRjFCS0Q1ZVhsNytUbUppNDF3dmNPRGU0U2N6TlhYNjhBYmcxcHBhSzRKYVdsbmJOWm9jYklYOTZFcnpCWVBESjFIUTZuYzhLSFY3cXB3UnFEb2Rqc2xLcFhBU2dsWDlKKzhVdnJrcTlDUWtKa2JXMXRXOUZSMGR2cHBReXhCVTRSaWlsSE54T0JjR2RVdUFtT1JRdXh3UDFBWlMrZmdOcGFXbS9LUzNxYnd0c0pwUEpwMDFOQkxYTHFaOXlVR05aOW1HRlFyRVlRSXgvT2Z2Rkx4N0FreElWRmJWWXI5Y0hoNGVIZitNdWQwUzhOVFlSM0p4T3AwOXdhd3pVeEsxRGh3NDNWYU1ZNXMvNllZdkYwcWlqd0VjVFk5SVlxSEVjOTVSQ29WanVCN1hHN1EvMzNYZmZUVFdtd3NKQy9OVWFkYi84OHN2bzNiczNoZzRkS3FVYVRaNDhHWk1uVDhiMDZkT3YrKy90Mzc4ZjE3SG5iMHhZV05nU3M5bDhMd0N0TEpoWG5xa2daU2s0blU3aXJscEpSN1FBQUNBQVNVUkJWTk1tSmREYmJEYVBRTjY2dWpvcGVUNC9QeDg1T1Rtd1dDdzRlL2FzbE5IaExmUG16Wk15WlJxVHpaczNTeGtPZnpsZ3M5dnQxK0w5SlBJT1VxSk43WjEzM2xGeEhQY3N3ekF2d3BWUzRoY2Z3dk04amh3NWNsT042Y1VYWDRURllwSGVHNDFHeko0OSs2YWR3NU1uVDJMTGxpMzQ2YWVmc0czYk5uVHExQWtxbFFxdnZQSUtubnZ1dWVzK3Z6VTFOVmkrZlBrMWhlejRrb3NYTCtLNTU1NFQzd1lFQlFVdHJLeXNmRWlqMFFRMUFtNEtRUkNJdlB5UnU5S3VCRzRXaXdWR283RlJjSHZpaVNjOFVxM2tjdXJVS2FsZ1FtTlNXVmtwRlNmNFM2bWlITWRkMXZ2cFpWTVRjejRoTDhmeTY2Ky9CcWVucHk5aUdPYkp2eU1ZSFRod0FNMmJOOGYrL2ZzUkZ4ZUh2bjM3U2psMVpyTVoyN2R2QndEMDZkTUgwZEhSMG43bDVlWFl0MjhmSWlNak1YRGdRSjlWRms2ZE9nV05SaU1WRWF5dHJjWE9uVHNSR0JpSWZ2MzZlYWdUUjQ4ZVJWNWVIdnIxNjRmYzNGemNldXV0a2xxeWI5OCtsSmVYbzNmdjNraE12TlFPb3F5c0RQdjI3VU5vYUNnR0Roem9rZVlGdUxJaWFtcHEwTDU5ZXdCQVRrNE96cDQ5aTkyN2QyUGJ0bTBBZ0w1OSswcnhaOFhGeFRodzRBQ1NrNVBScTFjdkNRZ3ZYTGlBbUpnWTdOKy9INm1wcWVqU3Bjc1Z4MEFweGQ2OWUxRlJVWUdlUFhzaU9UbFoyaWNuSndkUlVWRW9MUzFGYm00dSt2WHJoOFRFUk96Y3VST0hEaDFDUkVRRTl1M2JCN1ZhTGMxRDA2Wk5ZVEtaR21XbGh3NGRRbEpTRW5yMTZnVkNDSTRkTzRiVTFGUm90VnFjUG4wYW5UcDF3b1VMRnhBWUdPaVJZN2x1M1RxTUhUdjJpdXZoK1BIamlJNk9SbEpTRWdCSWViT0RCZzNDc1dQSGNQVG9VZXphdFVzS2NCMDZkQ2kwV3UzYzFxMWJxNGNORy9iUnl5Ky9ySGVybEtMZHplbFdTM2wzcVh4UkxZWEQ0U0NDSUZDajBRaTFXbzNFeEVRUFZaUVFncEtTRWdRRUJIalkyOFRyNTZ0czA5R2pSNUdibTR0dTNicDV4TUFKZ29BZE8zYWd2cjRlUTRZTWtZNzN5eSsvb0UyYk5nZ0xDd1BMc2podzRJQjBMZXgyTzdadDJ3YWxVb2wyN2RyZFdNWkdLZlVBTlhreXUzZlRGVmx2QWc5UU8zLytmRVI2ZXZyU3Z5dW9BYTR5T2s4KytTVDBlajJXTFZzbVpRUG9kRHJjZHR0dEtDMHRSV0ZoSVVhUEhvM2EybG9Bd0xGanh6QnAwaVRvOVhwczNyd1pEenp3UUlQamJ0bXlCZlBuejVmQThPTEZpNWc0Y2FLVS9EMW16QmdwTFdYMTZ0VjQrdW1uWVRRYXNXalJJano5OU5NZUtzWFhYMzhObzlHSUtWT21JRHM3R3dCdy9QaHgzSDMzM1RBYWpkaTVjeWNtVDU3Y3dEYXpidDA2andUbXVybzZsSmFXUWhBRUZCVVZvYWlvU0xUellPZk9uWGpnZ1FkZ3NWanc3cnZ2U29Hc3BhV2xtRFZyRnQ1NDR3M29kRHJNbWpVTHUzYnR1dUlZNXMyYmh5KysrQUlta3dsVHAwNzFLRlcwYXRVcVRKOCtIZSsrK3k1eWNuSlFYKzhxNmxCU1VvS2FtaHJZYkRZVUZSV2h0TFQwaXRkdjU4NmR1TysrKzJDeFdQRFJSeDlKa2ZJYk4yN0VrU05IY1Bic1dUenh4Qk1BZ1BmZmY5OURQYU9VNHZ2dnY4ZnR0OTkreGZWdy92eDVQUC84ODlML2JkMjZGWjkvL2prWWhrRjFkVFVxS3l2QnNxdzByNkt3TER2TDRYQThQSEhpeEdnQVl2RktGUUNsSUFnS0FBcEtLV0ZaVmxKTFRTWVRxcXFxWUxGWVVGMWRqWnljSEEvbVZsVlZoYTFidDZKZHUzYkl5Y2tCcFJSbnpwekIrUEhqVVYxZGpjOC8vOXhqN2w1OTlWVzgvdnJyc0ZxdGVPU1JSN0JqeHc3cHV3MGJOdURvMGFNNGZmbzB4b3daSTdINzVjdVhTeVlNbzlHSUo1OThVZ0xDcVZPbll2djI3Y2pQejNkbGZ6Uld0dWlQMkU2ZlBvMXZ2LzBXcjd6eUN1Yk5tNGVwVTZkaTVNaVI2Tk9uRHpwMTZvVFUxRlFrSlNVaE5qWVc0ZUhoSkNnb2lHZzBHa2FwVkNvVUNvV3lzTEF3VGhDRU4rbmZYSVlQSDA2enM3TXBwWlNXbHBiU0RoMDZVS2ZUU1d0cmErbXhZOGNvcFpTeUxFdG56SmhCdDJ6WlFpbWw5UDc3NzZlYk5tMmk3dExRZE1HQ0JWU24wMUdqMFVqVDB0TG8xcTFiNlpBaFEyaFZWWlgwTzZXbHBmVE1tVFBTOGJLeXN1anAwNmNwcFpUMjc5OWZHa041ZVRudDNyMDdwWlRTNDhlUDB4RWpSbEJYTldwS3Yvbm1HL3JVVTA5UlNpbjk5Tk5QNmV6WnM2blQ2WlMrczlsczB1OEpna0N6c3JLb1RxZnpPTithbWhyYXRXdlhCdk13ZVBCZ2FRd1dpNFYyN3R5Wk9od09tcE9UUXdjTkdpU040WU1QUHFEUFBmZmNaY2R3NXN3WmV1dXR0MUt4UitldVhidm8rUEhqcGQrYVAzOCtmZjc1NTMxZWowMmJOdEZaczJiNS9NNW9OTktPSFR0NmZEWnExQ2g2K1BCaFNpbWxITWZSbmoxNzB2ejhmUHJkZDkvUmQ5NTVoMzc0NFlkMDRNQ0J0TEt5a280ZE85WmpqbzRjT2RMZ3R4cGJEM2E3bldaa1pORGk0bUpLS2FWMzNua24zYkZqeDJWTEp4a01CcHFXbGtZNWpxTjJ1LzJEMmJOblp3Qm9BU0FCUUJTQVVFSklJTU13R2dCS2htRVVHbzJHSVlTUXdNQkFFaHNiaTRTRUJEQU1nMDZkT3FGUG56NFlPWElrSmsrZWpDWk5tbURGaWhYNDl0dHZwUnA1SDMvOHNYVC85K3ZYRC9uNSthaXNyRVJHUmdic2Rqc29wVGg0OENDbVRKa2lsUzFhdEdpUnRNLzA2ZE94ZnYxNlVFb3hkdXhZbkRoeEFwUlMxTlRVb0d2WHJxQ1U0cGRmZnNHSUVTTWdzc3kzM25ycnhxbWk1ODZkdzRVTEZ5VDFVOTd6VTdTcE5SSjhLekcxNU9Ua1JZU1EyZmdIaUppdjJMUnBVekFNQTZQUmlKQ1FFS3hldlJvclZxeEFhR2dvY25KeXBDZDdZV0docEY0U1F2RHZmLzhiZ012emJMZmJNWC8rZlBUczJWUEs3d1JjcFdPZWYvNTVXQ3dXQkFjSG82S2lBanpQUzZ4SVBKN2MxcE9ibTR2eThuS01IRGxTc3VHMWJldXFkako1OG1RVUZSVmgyTEJoU0UxTnhiUnAweEFRY01uOGVlVElFYVNrcEZ4VjNCUFA4OGpQejhkVFR6M2xNVjR4K1Y2cjFVcnFlWEJ3c0ZUSnBMRXhGQlFVb0czYnRwSjZucGFXSnRYakYrVjZwUVJkdkhoUlVyMlVTaVhhdEdtRHdzSkNwS2VuWStmT25YQTRISmc2ZFNvT0hqd0lwVkxwTVVlTkpYbjdXZzhSRVJHWU9uVXFWcTFhaGNtVEo2T21wZ2I5Ky9lL3FyWGwzaDRZTjI0Yzl1N2QrOEdKRXlmcXZiVXJkODRvTCthWDhqeFBXWllWKy8vQlpyTkphbWg1ZVRsaVkyTlJYVjBObFVvRmhVS0IwNmRQUytXazVPc29QejhmRm90RlVyY0ZRZkJZRTNMelJXcHFxa2UxRjE5U1ZsYm0wU05WcFZMZEdHREx6OC8zQ1dvK0tuUTBDT2tRYldvdFdyVDR4NENhWEl4R0kxaVdSWEJ3TUxaczJRS2owWWd2djNSVkpYNzAwVWVsLzR1T2prWkZSWVdVRUw1bnp4NTA3OTdkNVNGaUdHemV2Qm56NXMzRGUrKzlKK1Vycmw2OUdvbUppVml5WkFrQWVLZy9VVkZScUt5czlMQ2ZpWiszYmR2V1o0WFp2THc4UFB6d3czajIyV2R4N05neFBQamdnOWkyYlJ1aW9xSXVlOU1TUWp5cXN3S0FRcUZBZUhnNFB2endRNmtza2lpaSt1MUxHaHREVEV5TXh3MVNWbGJtQWZMWFU4VGZFcHZ1aUwvVnZIbHpWRlpXSWpBd0VJTUdEY0xpeFlzOUdxWllMQlljUDM1Y2VpaGRhVDBBcmlUOEVTTkdnR1ZaVEpzMnpjT3U2bXRldlVXdFZqL1FwazBiWWRTb1VlKy8rT0tMYUF6Y1JBRGlPRTRLQlJFZEFZUVFYTHg0RWQyNmRVTnRiUzBVQ29Ya1FEaCsvRGg2OSs0dEhVOWNROUhSMGRpMGFaTlBPN0I4ek9YbDVjak16QlRIS2ozQTVDYU9xS2lvQnVyOEh3NXNKU1VsVXRNVmI2Ym1iVlB6RmRMeHpqdnZxTnlPZ2puL0pFQjc3NzMzTUdYS0ZLeGF0UW9qUm95QVNxVkNiR3lzVkErcnVMZ1l1M2J0a2tyc1RKczJUZktrNWVibTRxdXZ2c0tHRFJ2Z2REcWhWcXVSa0pDQXQ5NTZDN2ZmZmp2YXRXdUgvdjM3SXlZbUJsdTNic1dPSFR0dzRzUUpuRGx6UnJLeFRabzBDUXNYTHNTRER6N29rWVBYdDI5ZnZQTEtLM2oxMVZmUnYzOS83Tml4QTBsSlNaZzhlVEtPSERtQ2JkdTJZYzZjT2FpcHFZRmFyWmFldm1MbGlPWExsemM0MS9Ed2NDZ1VDbnoxMVZkbzBxUUoyclZyaDVpWUdEend3QU9ZTTJjTzVzMmJoN3E2T216WnNnWC8vZTkvTHp0dmpZMmhhOWV1SUlUZzdiZmZSa1pHQnBZdFc5YWdTc1cxZXBzM2JOZ0F1OTBPanVQdzNYZmZJVFEwRklNR0RjTDk5OStQSlV1VzRNa25uOFRldlhzUkZoYUd0TFEwRUVJUUdCaUl0bTNiSWprNUdVVkZSUjc5QURadjNvemh3NGY3dk5sOXJRZkExVTFxOE9EQjJMQmhBL2J0OHl5QW1wU1VoT0xpWXZ6d3d3OElDQWlRQU1KYkZBckZRd3NYTG5UdTNMbnovZjM3OXpld2k3cmY4NElnU0hGdWxGTGljRGdvSVFUeXB1TjZ2VjRDdHRUVVZMejc3cnVJakl5RXpXWkRjWEV4QUtCMTY5Wm8zcnc1RmkxYWhQSGp4K1BZc1dPd1dDeVlPM2V1TkE5ZHUzYUZ5V1RDL3YzN3NYanhZZ0JBMTY1ZDhmbm5uOFBoY09DSEgzNlF4cGVabVluLys3Ly93M3Z2dllkV3JWcGh6Wm8xVUN4ZHV2UVB1em1ycXFwd3p0MmpRTjdNMkdBd2VCU0k5RTZUa3NlcHJWKy9mZ25ETUF2K1NhRDJ4UmRmWU5Tb1VUaDQ4Q0JhdEdpQnVYUG5RcVZTSVRFeEVZbUppZGkzYngvaTQrTXhZY0lFUkVWRklURXhFYTFhdFVKU1VwS3JGcFZTaVJkZWVFSHlMQ29VQ25UdjNoMUJRVUhvMGFNSHpwdzVnL1QwZExScjF3NHFsUXFIRGgxQ1dsb2FoZzRkaW9TRUJNVEV4Q0FqSXdOV3F4VkhqaHhCdDI3ZGNPalFJVXlmUGgwS2hRSzMzWFliY25OemNmVG9VYlJwMHdZVEprd0F3ekJJVDA5SFVGQVFkdTdjQ1l2RmdzV0xGMHU5S3RldFc0Y21UWnBJSGpxNU1BeURYcjE2WWQrK2ZhaW9xRUJhV2hwQ1EwT2xpcktpK2pacjFpeUpxUVFHQm5yVTZZcUxpME9MRmkwYUhRTWhCQ05IamtSMmRqYU9IeitPaVJNbk5tZ3kwckpsUzhUR3h2cThKbEZSVVEwOGQ5dTNiNGZGWWtHM2J0MWdNQmpnZERxUm5wNk85UFIwaElXRllmdjI3WWlLaXNLenp6NHJsZlNKaUloQXQyN2RFQjBkamVqb2FHUm1aa3FlNk9lZWV3NlBQLzU0Z3lqK3h0YURuRHcwYjk0Y0F3WU04TmhQcTlXaVk4ZU8yTE5uRDNRNkhUcDE2b1NBZ0FBb0ZBcDA2OVpOK3Ird3NEQjA3Tmd4NDg0Nzc3Uy85TkpMcDJXTVQwUTRLcXFjY2lhblZDcUo2TlFLQ1FueHFLUkNLVVZrWkNTYU5XdUdFeWRPSUNrcENWbFpXVWhMUzROV3EwVldWaGFxcTZ0eDhPQkJ4TWJHNHQ1Nzc1WFU3ZDY5ZXlNdkx3OWxaV1Y0OXRsbkplOTF0MjdkVUZwYWlweWNIRXlhTkFteHNiSG8ycldyVk9ycThPSERxS3FxUW54OC9CK1hLNnJUNlpDZG5lM0Ixcnl6Q3J6RE91UnhhbUx3clR0T3pTOSs4Y3NORUxQWi9PK1FrSkQvQWJDNUs0TTRBTENRVlFZUmMwdVZTaVYxTTJJcTVwV0tTZk1SRVJGU1htbHljakpTVWxLUWxwWjJ3NUxtL3hCVjFHYXpTUjNhS3lvcVVGdGJLN1hIdTV6NnlmTTg1R2xTRE1NczlpODF2L2pseGtsd2NQQmNuVTVuallpSVdPZG1aaFR1V0RhdjlDdnFJblhFbGFORkNHVVlCZ3pEZ0JBQzhXK2xVZ21WU2dWM2NqMDZkdXo0dTJ2ay9TbkFSaW5GK2ZQblVWaFk2S0YreXF0MGlCNVFlWkZJdDZ1V0VSUGEzYm1mL293Q3Yvamx4a3BBZUhqNFkxVlZWWmE0dUxpdDFKVmM2bTF2Zzd1SGd1QjBPa1hQcUFoeUlJUklkalp4RXdGT285RWdQVDNkWnhPWG14clk1S0FtTmpJV0hRVVdpK1d5bFc4RlFTQTJtMjJZdTBxSFAvZlRMMzc1Y3lRbUppWm1aa0ZCZ2JGRml4WUh2SmdiQlVBRlFSQzlvNUFCR2hHTFY0cWJITlJFWUFzSUNKQ2FLdjhsZ0syd3NCQVhMMTVFV1ZtWlQwZUIzVzV2a0ZVZ0MrdGdUQ1pUTjNjOU5YL3BJYi80NVU4VVFraEtjbkx5UThlUEg5ZDM3dHc1eDgzY1JKV1VpbjBSUk5ZR21ZTkJWRVc5R1p0U3FZUmFyWVphclpiNm12NVJjdDI4b2xWVlZaSmRyYnk4M0tkZHJURVBxRmpPT3pRMDlDVkN5RUQvc3ZLTFgyNEtjR3NhRXhNVDJxbFRwOU5mZi8yMXpRMWVrcWNVUG1xMnVWVlM4Vy81NTVCL0xvYSt5SHRjWEZmR2RqMWFoNW5OWnB3NWMwWmlhMklPcUhlYlBJZkQ0ZUVCRmRYUHUrNjZTd0hnbWZyNmVuODViNy80NWVhUzRabVptVFVwS1NtdlhiaHdRWkF4TjFmNmdmc1A5eXZjV1FuRW5VSUgrZVowT3FYTlhUVUU3ZHExKzBQQVRmbDdhejVSU3BHWGw0Zmk0bUpVVkZRMHNLczFWdExiN1N3Z0FKaGx5NVl0Y0RxZE42VHhpdGhUMGJ2cXhKWEVZckVnTUZBTFFoai9VdmZMUDQyNTNiMTE2OWJxbEpTVXo5MDRKc2pCalJBUnh3VEs4enpoT0k2NmFSc1Z2YVJ5RmRYYlk5cStmZnZyN2t4UUJnVUYvcTRENU9YbG9iYTJCbnE5RG1hekNWYXJCWGE3cEhMS0tuUTRpUmlkTFBlQTF0YldUSFU3QzI2SThMd1RUaWVQYXoxdm5VNkh5TWlJYStvNWFUQVlFUklTN0RPUzNDOSsrU3RKVUZEZ25QejhDNVczM0pLeUZZQTNjNVArVHhBRWdlZDVPSjFPS0JRTTRUaU9LcFZLaWFIWjdUWllyUmFZelNibzlUclUxdGFnb3FMOHVyYnVBd0RsdGR5bzNsSldWb2F5c25KVVY5ZWd2bDRIZzhFSXM3bEJqd0kzdUVtZ1J0eFVsZFRXMXZRTkNBaDRCamV3THB6cmFTSGd0NXkzYUFDOVdqR1pUQWdMQzhYdm1XTy8rT1VtRVdWOGZQekR4NDhmcSt6Y3Vjc3hYOHpOL1VvRVFRRFA4NVRqbkdBWXppdmtRd21WU2cyMVdnT05KZ0JhYlNDQ2dvSVJHaHJhSUNmNGR3MjJzV3FYVjVMUzhqSWNQM3NCT25kR2djRndLYW5kYkxiQWJMV0J2UVJzSWxzanZDQVFLbENtcUtnd0lTZ29hRDZBbEJ0THF4a3B6dVphVlc1NWN1OGZ0YzhmSWZwamU2Qm9sb0dRcUJzVEZrZzVPNncxOVZCR1JFT2pWUU53b21Mckp0aHNnS3BwR3lSbHRQbGIzT20vWlY1dGhUbXdPS01SblJMWHlIL1lVYlhqTUNKdjdRZVZtK2c3aWs2ajdGZytBSUxZUWFNUkhNcGN4N0ZFSURvbDRXcDN1YVYxNjliM3IxeTVzbnphdEdubEFNUkFYZkdWaXA1U251ZmhEdHFWUWtBdWVVY3Q3dEFQdGJzVGxoYkJ3VUVJQ3d1N3BxWXdqdEpjR0l4YXhMWkxhbkJPeW10V2s2Z1ZpejdZZ1AxRjVTQjFaU2l2cVVmWHVGQW9MU1pZTEdhVWxKV2hzTjRNd3RrZ0NFQ0lFc1RwZE1MSmNjVEJPUW5nc3F1OWsydCsrcm40K0NIa1QxaVFsT0thMVVNeFArNWE5dnN0Ky93UlV2TFpjZ1JOL2d4aHZRUC84TitxMi9ZWkRyL3lKYlROV3NCUlZvQm04OTlGbS81SlVBVUV3bkp1Tjg0ZHFFS3p6SFovQzJEN0xmTnFPTEFHaGZwTXhLYU9iSXpuSS8rOXp4RFk5MVpvM0VTZlVXcWcxZ2JnNHRzdlFKMStHMExERzY2bnl1OC9Sc0R0YVFpTDhSeEx3ZnRMb2V6MUdKSTZSRGJZeDN6aVI1UVlPaU0yTmZGYU5KNEI0OGFOSzV3MmJkcGJNdFlteUZnYjRJcHpnMXNscFF6REVJV0NvUTZIQWtxbGF4TXpFZFRxUzIzK2dvT0QwYkZqeDZzbUFwYmptM0gyVkJMaTA1bzFPS2RyQnphbzBUK3REWG8yRFVGaG9ScTc5cFppN3prZHVrY29ZTmJYNFdLZEZZbmhnZUR0UUVWMUhURXJsVkFJVG5DdUNHVkNBTVpTbS8vUXlEZjJ6TXpKVEVYSEc1eGJJRGRpL2pZMWx2bkQ5d0VFVURCdzZxdkEwU0FFUm5oNmpTZ0VFREN3VjVWRDBJUWpNUHpTWXJaWGxZSlhoaUlvS3ZUU0Rxd2RvQVRPdW1vSW1qQUVoSHFtdERpTmRiQVpIUWlNaTRkQzlkdEJtQy9kai8yTFY2TEgybzFvMGl3VUVHeXcxbk5nR0EzaUI0OUFNRk9PL0FLTGova1E0S2lwQnNjcEVKUVFBOCtISFE5YmVRVUVWVEFDWThJOXZxTU9LOHhWdGRERXhFR3QxZHhrOCtyN25BalBnVG9GVUtzQk5nc1FIQmZoT1Q1bkRQcCsreG1JYkk2MHpkcWhlYk4ycVB4b0NZQ0dhNWM2bldqLzNDb1FaY1BQemFjT1FObHFPb2dRRGlpVjBqaW80RVQ4N2ZNUUwvdnMwakE0V01zcndFVEdJU0JRMDJDdDhFYkhmVlVWVllWeFRlTFdBK0I5cWFTQ0lBaUVFT3AwT3NFd0JBNGJKWVF3MUtYQktLRlV1dE9zVkdvRWFOUlFPT3pRS0xVSURRMTEyOXNFMkNyTFFRTWlQYTREQUhDNktuQWtCRVRnUUoyOE5CL3ljMUplcXplaW9xSWVhazZQa3FwSzFOWFZnemhaMk13bVdOUXExT29NSUFvQ2NDNjdtb0pRY0N3TEVFcW9xNlk2c1ZoTS9aVE91dmtjbzBTd2tvQ1FHdzFzbHdEdXR6QzJhOW52dCt3REFPZWZtWWlMdVNvd1NpV0V5b3NJdm4waCtzNGQ3ZnJTZUFycit6K0RwR0V4cUR5bEE4dzZkUGprSnpSTE11TFFmVk5SWjQyRXlsSUdrallSdDc0Nkd5b0dvRTRPaFcvTlI3RktBWHZCR2NUUFhvSHVkN2tLRWhiKzUxR2MzRlNDaU9ZUk1GNm9ROFozR3hFclBkd2RPUG5rVEtnR3pVSzdyQzVYWGhzL3JJZXErd1FrTkhlckU0cEFCTW55UndnVlFIbkJhejZxc1hQd2VMQXhMYUdDQVNaZEtQcXUraENSTVJwUVV6SDJUTGtIOXRDV1VBczYyQk1HSXV0VlYwaysvZTdQc1dmUkp3aHRtd0o3MlVVa1Ava0oyZzFzZnBQTWErUG5CSUdIOGVlVjJIN2dLekNXTXFEMW5SajR4aXdvQVZTdSt5OU9mYmtEK21OMUdIeG1MeUs5c1pyakFIaXVKL2JzejlqOS9FZXduUDRWcmQvZWk3YTNObkdwWk1jMllkL0xYOENTVXdKUzhEaktQOUVpK3JaSDBHVnlQd0JsT0hEM2s5QVZua2ZJN1l2Ui8rbExwZHJ0dVh1d2U5WWlNRTFhZ1MzTVE5eERMNkhiWFgxOXJaV0g5eHpJTHV6WEsrMllTeFdsQWtBRVVTMTF1MGtKejdKdzJ1MVVTUWpzT2gzNDZIZzNhMU9DNk10UTlRdUxXcFVkUWVwZ1hGVCtpSUIzWGtDZ3ZReDV6endITnJRWlVIOFJRVVBub3ZjVDQwQWc0T0pyczNGeVl5SENZalhnV0FkSW0yVDNmSGllMHpVQm05VnFsY0k2YW12cm9LK3Z4dkhDU3NRRmg3cmFjOW5zSUx3QW85RUdvOE5KRkZRQUZTaWhEQWhEd0l4YnNpTDhrVFU3bjZxdjB5ZE1HejhZS2VvL1F4SDliY0QyZS9hN1poRGxuWEJHOXNLb2o1NENNZVhoaDh6eHFKZ3lBZ254U2hldnFEa0ZSZVptakY3ZUVRQUxKNnRFMWVvM1VhWHFoOUhmTDRiQ2FjQ3VJWm5JMnpNTzdRY2tBcndUeXJRc0RINXVDcHpsZTdGK3dCSzBHcmNMRVlIVk9QZmhYbVRzT29XRU9BQk9GandqZjlnSU1KdzZBazE3M1ZXZGcrWENCUVFuOTJ6OGY2a0F3ZWtOYkJIb3MzNDcxQ0V1NnA3M3doU2MrV29YK2o0MkhPWURQNkErYkRER2ZlRXFoTW16ckxSdjRlY2ZvTm5UbjZIVEdOZlRuV2VGSzQ3eHhzMXI0K2NFZ1ljVnlSajc3WnRRQ3dic0hOUUQrWWZ1UUp1ZXNXZ3lmZzZhakIrTEg5cE1kQU9ZMS9pZEhFQTlnVTNUYmpDR2ZqVVlSKzdxQnRCTGF5Mnc2MmdNL1dvMGp0L2ZHNm83MzBMYTBHVFprUkxSNTh1dlVQTCtZN2hRVDJYSHMrTElZM09Rc09CcmRCemNHb0xwUERiM200SDZNWHNSRmRKZ3JUUmhxV0xhc21YL0xsaXc0Qm1CVWdpRVFJRE1ZMG9wQlFVRXlpaWcwQVpRRlp6RVhGdER0YUdCVUNqc0lDd0xjMTAxNG9lUFJHeUxKb2lMamtadFJRVjIvdWRWSkkxOEdjTm5EUUdjT3V3WU9BQ2w0MGFpcWZvUWpuNXlBVU1QYjBWNGtJRGo5dzlHbGZTZzlEeW5hM0xYRlJRVW9Lek1uUU5hWDR1REo4N0FvUXBDc3NJSnM5a09qbVVoY0FLYzFFbkFTNG50RUFRUVFhREVrZHpweWJuOTJ3MnRMem1QVjdjZndhalVFWWhUd1M4K0pMWlBMMWVublpCV2lHa0QxSjhxUjBLOGUzRnFVbkhMNkk2U2FVQ3BCblFuVHlLdTc1TlFBSUF5REUxNnQwZjE2ZFBBQUpmOUpLNm5xNHFwTXFFN29xSXVvajdmam9nT2tZanZHWWtqRDB4RDhwQitpQjg0RFBIdDVmYVdRUFQvNmRRZmZLWU1xamUrZzl6dmRzTm10b090TGtLSXU1eTBOcTBybUZNUFlOY2NCK0o2ZEVYeXlKRUlVcnZucDJjdkhQalhMRGpQamtCVWozNUlIdERsSnBwWFphUG5CQUJSbVpsUU13Q1lNTVIzYjRYNjdHeWc1MDJRY0dQS1JYVzJEWXE5MytEWVFaZHFUcDJsMEJXWUVkWFI1MW9aT0h2MjdMTUxGanp6c1ZzbDViM3NiZFNOMEpUbmVUQXFCZ0xsaWMzT1VxVkNBY0p5Y0FaR1FDQXNqRVlqTkJvTkFtc0tVSCtzQ0h6MGVoeXIvd1VVQU90MG9ENm5CQkdxTTJEU01oQWV4QUJnRU4rM0o2ck9OTGFxcnRaUVdsS0MwdEpTVkZkWG9hNnVGa2RPbkVLSlE0SFdvVXJZN2E1cUhWUVFJSEFjR01KQXpRQzhRQWxBQ2FXVW1mYjhmOFpOSGRybjZaN040ekd5YngrMDV3cXhyZERpUjdCRzZjVmx2dE1HNGZkRmtCRDNsVmVpODBmYjBIdnhkS2k1TXV3ZlB4UjV4MnArODFHRFdqYUhzYUQ0bXZheDdGK0pneCtmUkpkMy9vZVJXN2FnNi8xRDNkb01vRXpzZ2RIN2ZrTEtrRTR3N1ZxRkgyNS9ES3g3djZZUHZJd1JYNjVBZUh3QXppKzVCNGZlMzNIVHpPdmx6c25uWG96aUpsbDBBcUNLUlB6SUxDUm1aU0VwYXlSNmZMb1dUVzhKYkhTdEJBWUd6aW9wS2U0TFZ5VWVEYVZVRFZmNGxvSlNxcUFBUXlsMTl5cmx3UVBnT0JZczY0Q0Q0OEJCZ05WcWhjbGtoc0ZnUUYyZERqcU9BZHVxTFVpWExrakt5a0tYTi8rSGxGN1hGZ3B5VmNCbU1wazhlb0FlUDNVS1o0d1VIYUkwWU8wMjJPME9zS3dEQ2dDVXRST0hLMmFOVUVFZ0JHQ3Fxa3FUUWdQVlR4VFZHbHpUWnplZ3hFSVFIT0NQNzJwTXF2Y2VjQmtyVEhtb09RZEVkcnk4U3o0aXZRT3E5dTRGRHdCT0F5cjI1eUJTVm1HMjZ1QmVsL0czL0ZmVTZWb2hxa1VBQUJhc1JVQlVSaiswbS9jc1V2ckZ3cGd2NytMTkl1Zi81dUQ4OXF0amJRbWp4NEhkdHhwbEJRYjNmV0tGcGRwd3llMFVHUW0yckFST3VYbWpyQXdCcmRJUkhoTUVDQmFVL2JUM2txSGFaQUxDNHBBNGFnSzZ2N1lVeXBKenNMcDNaazBtQk4zU0NTbjNQb3hPRDk0Ry9ibThtMlplTDNkT0FGQzNieDlZd1hXOHlsL3pFTmtoN2VyY2RwSGhzRnloc1ltM0tEVWFzSFgxVi9mUElXMFEyOW9HcXlrY3NkMjZJclpiVjRTM2FBWlZFSFBadGRLMGFkTjd2L2xtVFJNUjNBQkk0QWFBb1FMUHVPeHRUc0lUUUhCeWhHVTVPRGduV040Sm04MFZ0T3NDTnc2MGFTREtDcXRnaXdpSHRuVXFvbHEzaERva0VFR2RPb0JtSDRiZUlnQndvbkx2d2NiUCsyck8xNVhZN2k0WVdWT0tBM21Wc0xGMjdDbTNRV0R0Z0FBa0JDbmhwQ0FxeHRXOUJ0UlZoNDRCbUtpb3VIbVBqdXpkN1lGdk4rTG9rUmpvYTJ1UjBMRW5SaVJwL0FqV2lDaHFEK0xIY1hlQXI3NkkwQWRlY051QkdwZjRPeDlIM0E5MzRvY1JKNkN5bFlHa1BZUlcvUytwbGR6SkxkZzZjU3ZzQldmUWZNbGJjRG1hcXJGcjJGandDYWxRb3g1Rzh5MFlPRlFlaXNHaGN0TTNVTWNPUit2QkhhOThFeVgzUjc5L1Q4SCsyL3Nqb0VVTE9FcUxrZkxTYW5RWTZuSW1hTHFNUkt1V1gyRjl0OTdRZEJtQjBSOHNRdFNnU1ZDL2RSZTJURHdLeGxhUGdPaExEZ0R6d2YvaDU4VmZJcUpOQzlnS3ppQjY1Z0tFdWFmaDdJSTdVSFJSaTVBWU5YUzUxZWo2d2VNM3pid0tsemtuQU5BcXl2SFQ3ZVBBV01yQWRIb010MlJFQWREaDREMzNRRmZ2Z05GUWdRUGpSa09wYllFK2E5K0UyTUs2OWR6NTJQbllPT1F2RFViN2w3OUVxNTRKeUZ2eEtQTDJGTUdhV3cxU2NpOEtYOU1pYmZuL2tOemV0VmZ5UFE5ajF4T1BvT3lURU1UZCtUUXlwZzlHN2RaM2NQanRMV0FyTDhMQi9Zck4rMWVpeVgwTDBYbDhUM1I3ODNYc2ZuQXFTdDVMZ1pLcmhkbVNnQ0UvZll6Z3k2d1ZRa2puVWFORzNRSGd2ektWbEhmVFZJRlNTZ1dua3dvQVZTclZjRHFkNERpT0VKNm5uRUJodDl2ZHdidXV5aDlSUFFlZ2F2dEtiRHorRTNJaUF4QmxEVVBmRGQ4akpyNHZ1ajdRRWo4UEc0N1FXQzE0cW5FMURBUWFuQk9oR21uUWdRQUFJQUJKUkVGVVZMaWlDaW9tdUplV2l1V0k2cURYRzN4MW1YSW51SE9FNXdWQ0tWWFk3YmFKS3BYcWZ5N3JMNGR5Z3dVYWJSQ2l0SCtPY2EyNnVob3N5eUV4OGRxb2JYWjJEbEpUVzBtMTYvK29mUURnN0ZPalllbTZGQjJISllJVGdoRVVGWFRWKzdyQ0VrSVFGTlV3ME5GUlV3a2hJQlRha0VBUDljTldXUWtuVkFpT2o4SDFjT2RRMWdwemVUVlVNZkVJQ0xxS2VCNkJoYW00RXVyWUJHZ0NsVjVmV1dHcHJJVXFJaFlCSVo3SFlnMDFjQmdjQ0V4SWhFSjVrODNyWmM0SkFIaExIV3hteGl2YzQyWVJBZGJ5VWxCTkJJS2lRcTU2clpTVmxjMU5URXphQmNBQ1YybHhPNldVSllSdzdyTGl2SGRKY2ExV2k4REFRQVFGQlNFa0pBVGg0V0dJakl4Q2JHd3M0a0lEMGF4WkszVHVuWW5rcEV0QnVHeGRGWnhNTUFJamduNGJZN05ZTENndExVVlZsYnkybWdrV2k5V2REM29wYmNycGxISkJpU0M0Z25CTFMwdmlWU3JWM0V1UFN4VVNJc1BobDZzVGRVUWMxTmU0VDBCYzQ4R1dtcGg0bjlZSWJYekNkUjAzVVFjaTVGcHFiVEZxaERSUGJ1U3JRSVFrKy81T0hSWURkZGhOT3ErWE9TY0FVQVJGSVRqb1psMTVEQUlUa3E5NXJTUWtKRXo3OU5OUGN1Njc3MzRlQUE5UWliWGhVb0ZLTVplVUtoUUt3cklzZFdVa0tLQlNLV0d4cUtUT1lvR0JXaGhZTzhwS1N4RVZHWW1nSU5lRXFhT3VmUDB1YTJPNzFJVEYxVEpQQkRWWGFXOEhIQTRXSE9lUk1pVjZRZ21sbE1URnhUME9vS3Nmb3E1TkVtZjhIMUp1VGZGUGhIOWUvMUpDQ09sMHh4MTNUSERiMlRTVVF1NUlZRVJja0dVbGdPTTR3bkVzSEE0V2Ryc0ROcHNORm92Vm5TU3ZSMTFkTFNvcks2WFdmVmR0VzJ6c2k4cktTcS95M2lhWXpSYlliRllQcHNheW5GUmpTUkI0S2NIZGFyVU1aUmhtcnY5eVg3dUV0TzdtbndUL3ZQNGxKVEF3OE1IYzNQTkhVMU5iSHdiZ2RERzNTN1kyU0lueVVyb1ZXSmFEUXNGS1NmSTJtd3BtczlxZEpLOURVRkFRUWtOREVSRVJnZmo0K0t2a25ENkU0emd2RmRSVlc4MW1zOEptczd1OW9LeFUybHV1Z2xKS3liMzNUbE5vTkpySC9aZlpMMzc1NTBuTGxpMm5wS1NreUQya0tqZUpZdUFPL3hBRU1RVEVDYWZUU1RpT0E4dUtyTTBPbTgwS3M5a01nOEdJK3ZwNlZGVlZvN1MwRkZkYlA5SW5zTGxDTzZyY0txaEJxck5tczhtWkd1dlJBZHBkSlpOUVNwa1BQdmhnTm9CQi9rdDg3VkpkWFkzUzBqTC9SUGpsTHlzS2hhTC80Y08vakJhQmpWS3FFc0dOVXFxZ2xETHU2dGx5bFZUQ0ZZZkRCVzZYNnJZWjNDcHBGVXBLU240YnNCa01CbmZQZ2hyb2RIcVlUSzYyZVdMTFBIbU5OYWVUSS9JdVV3QklmWDFkcWtLaGVNeC9lZjNpbDMrdVJFUkVUTnV5WlhPU0Y3aEpzVzBBaUNBSU10YkdTYXpOVlpEUzdyYTNXV0F5R2FIVDZWRmJXNFB5OG5JWURJWnJCelo1aHlsWGVXOExyRlpQVURPYXpLZzFtS0EzV1dGak9ibkRnQkU0NjZ4WE51eE1YTEJ1TC9hV21TNGQyR25ITjdzUDRjbXZ0dUhmMjArZ3lrSDlWLzk2aTlPQzJ0UG5YY0drdjFNcVZyK0FnKzl2dSs1RDVDdC94WTdaeXozR2FEaTJIY2VXek1lKzJYTng1cnU5RUg3WEx3alFuOWlQOHgrK2d4TnZyb1RENjd1cXJTdHhjUFpqT1BMS2g3QmFaYi9rck1PKysyZkM1RStHdVY3UzlOWmJiNzNkRFd3ZVFic2lhL04wSkhneU54SGNyRlliekdZTGpFYVhTbHBkWFkyeXF3aFM5Z0MycXFvcVZGWld1aExjM1hGcUxoWFVKck9yMldHdzJNRVFWeUVQd2NrUnB5dG1qVmdORlFObmY3VDVZUzRxRVNOYi9qOTc1eDBmUlozLy8rZk1sdXhtMDNzMmdTUWtoQllnR0NEU0lRS0NvS0FDSXZZR25PVzhzNWV2RFU4NXozTHF6M1lxbGtOUkViRmdwQmNGUktRSENNMlFoUFJlTjl0bmZuL3NKdGtVVWhDVTAzazl6QU96bTVuNXpPZnptZmU4Nit0dDRLSDN2dUZBdldzTGY1VCtIVXR6Yk13ZE1Zamcyanh1WHZIenI5ekFDdHJBZEpRdDF6N2FWSGIwcTJSa1hSbVd5dHF6UHNUakx6MUw4TVV6OFN3aXl2bGlKWDdESnhFM1l4VFpqOTlNNW9iY1gzR0ZLakpmZUlYcXpEMWt2dnB4aTdtbzN2dzJQL3pqYTZMblhvZTJhQ09iN251MXVjSktIVXpNRUMwSDN0K2c3S096QkoxT2QwTm01dUhCSGxyYjZhS2tMYlMybHY2Mnhxb0VsMGxhWGw1QmNYRXhKU1VsWFJkc2hZV3VaaXpWMVZVdFRGQ3IxWUxOMWlqWUpQeTl0WUpXRkJBRkJORlZ4aThBWXVISjdOdVArTVZ5LzZqZWpFbStnTGtKQWl2MkZ3QldOaHd1NGRaSkl4a2FFOEg4UzBkZ1AzYVVnMlpsOGM4V2lyNWV3djZYbHVLb084bmh4WXZadi9oNXFpcWtSaWxGMXB2UHMvMk9POW43OGhJYVRGMTdwY2gxaFJ4YS9BamI3MzJFZ294OFQ2bEg5anN2c2YyT085bjkwcEtXbWsrSGd2Y0l4OWFhaUp2Y3A4WEhnNTk1ZzRSTEp4STFjUmFSS1NHWUNvdC94VXdFTS9LajVhVGVmdzJ0S3pDelAxeEs3TUtINlRGcUdJTVdQWUw5dS85UzVtSFZSTTIrbk9ML3ZvZEZlZU9lTmZUdTNmdEtXZ1lSTkI3bWFLUFcxbFJMNmhsSXNObXNXSzB0VGRMcTZpckt5c29vTEN6cW1tREx5M01WdUxlT2dycE1VRmRhaDBlVDQrYUFnU3VDSzFvczVybkh5NnVuSjBTRTRHeW81MVNkbGNTSUVJNlhWZ0ZPSEpLTVN1VytuS2hDSmRkenN0S3VyUHhaZ2svL1lZU05HWUtvQ1NJNExZMnd0TEhvOWE3NVB2SDBBbzd1cVNIK3RsdlI1RzlrdzkwdmRrbGJMbHJ4R2VvaDA0aWRFTWRQMTh5anZNSUJPTWk0ZXc2L1pEcEpXREFmSC9NZU52NzEzMTA2WDkzUFAyQlBISTdmYWJJcmk1Y3RJanUzRi8wdUgzWU9ac2hDOWRFOC9Qc25Vbi95R0RhdlJBSWl5cW5KYW5hWGlCRXBCSWw3S2M2eUtSdnFMRUd0VmwrY241ODNtcWJjdG1aZlcyTkRKemVkZUl0QWdrdTQyZDM1YlcyanBLV2xKZVRsNVhjczJHdzJHOFhGcmxyUTZ1cHF0d25hNEJFRlBVMTZoOU1weUxJczN2SFFZeXFOUnZNWHM4Mkd0MWJGcDJ2V2NzMktuOUZyMU5UYUhZQTNJK0tEV1BGakJtWDFEYXpkdW85Y1djQnNkU2dyZjViZzIzc1F4bUZKaUxvQUlsSlRNYWFtb3ZNR0tDTjc1UzZTSG4yY2lPUmtCaTU2Rk9lNjVWVFVkMzVPLzZsWDAzZktLS0ttMzBiOE1DYzVHektRUzNkeWJLT1RvWXZ1SWlneGtmaTc3MFhjc1lLcWhzN1BWM3Z5Sklib21IYS9hOWkvZ20ydjdTTnQrUkw4Zk04Rmxib0pteGxVbW1LMlRCeExabm91YWowNDZqek5CaDk4WW5UVVpSVXJHK29zSWpJeWNuWktTb3JPcmJXMUNTUTBtcVh0cFgrNHRMYkdLR21EMnlTdHByeThuT0xpSW15MjlsOUNhcGNKV3RpaUg2aXIvck94WktwWlcydE14SFU2bmE0MmRwSWtDSUlndlBMMFkvT0JWTDFXUzRQSnlkWFRMK0VTcDVxOU96ZmpwM0hWaE40Mll3cld0VHU1ZldrV0EvdjBaWHpRQ2J3VmRvOXpEMGMxRGRYK2VJZTUxU1R2VVBTKzFWZ3FnVTc2MUJvOGtpSDF4a2pLSzh0eGxOWml0UlN5NjlZYm05UjlyNlFrc0FLZFVQL0xPT0EwTk9rVk83WVJjUEZzQWtQUEZWZThBYTBlblBZSUp2NjBEMDFJRUQ4c0JyV3Z2dTJmU2s1bDM1eEZpS0k0Yk0yYTFaTkRROE8rQmV6dUh3ZHVXbkZjeWJ1Q3V5OXBrNXp4MU5xMFdsY2dRYWR6QlJLcXFocE4wa0ppMnluZlU1dk41aVk2SWxjdHFHZVQ0NWI1YWc2SFEzQUxOY0h1Y0FtMWpBUDcvVlFxMVh5QVBxR0IvSEswSE5Gck1LSEE4ZUp5RW51NE9oSnB2UU80NS9LTDNTNmFRaVpzOCtYK1VJVmw4dXp1SUFGQmNyYWtIRk1INEIxUVEwT3BEZUswWUNyRFhCZUFMcWdMT282SHI4dGNXSVIrc0JGMW1BRXZRenlqUHY0VVF6ZmZTMzZSY1pnM3RKK0hGRFR4V3BKc29lMGJrU1g1NEIySXp2ZlhGRmZxQ09qZmc1ck00K2d1R0FhbURLcEx3eGdRNzl2Q1hHMG9NQkVTRjludUdKeGFmd3lCdnNvK094UFBaM0R3N0VjZWVmajdaNTlkYkFQc3NpdzczQXdnVHJmVzFxSjFuOXN5bEp1anBEWjNsTFRSSksyaG9zSVZTQWdQRDBldmIvbUNFcHZvaUtvYTIrYzFlRFE4dGpiV2d1SndOUHJXSE5oc0RnQUJXUmIyMURodVhiYi9WSCtBMkw1OTZWZWJ3L1BiVDdCbC8xNCt6WktabGV3cUhpNDZsY3RIZTA2dzZlQXgvcjUwRTRNdUhFcWNJdGZPc2xJU2c2LzZCSm52ZlVIZXVnMDBtQUJDaWIxaUdJZWUrUWZGR2ZzNStNUmlWSlBuRU96VCtlbHExbjdNMFRYYktmajJIYkwyYU9nNXNUOUNXQ3A5eHRyNDhmN25LZDZmUWRIbU5leCs0WjB1cFpqNGpSaUprTGtIVXpzZWlNcE5Lem0rZW5lN3grMjVkZ3piWDE3VjVXa28rdllqam55K0FhZTluS3dQUGlSNyt5RUFlbDEzUFRsdlBFUHU5enM1OFBpemFLWmNTNmhIRWIxY2NZQnkweUFpK3JUVkdnL2NNWVh2bjEydTdMRXpoQ0FJZmUrNzc3NUp0SzFHOEV6OWFKRzA2M0EwK3ZXYlRWS0x4VlZMV2xkWDU4NXRLMjgza0tDYU8vY3FqOXkxS21wcmE5cHBlbXpGWm5PRllwME9SeE43eHlQdmZSYWs5dlo1M1NwcWc0WkhCNEhLaTdSK1VSdzRsa1ZHcFpNN0x4M0hNSGVmUTZmTndwYk1iUGFYMURJd2FUQVBqSW5uOStBTk5abE1PSjBTZm41KzNUcXV0TFNNNE9EZ2J2VUlQWk5qem5SOHJ0M2pqWEhTaFppT0hxUWh2d2pEd0F2UmV3c0VqNW1NcXV3d2VhdTNJTWFPWlBpamYwSGJoWDRUd2VNbVl6dXdscExNV2dZKy9VL0NZL3dBa2ZBcE0xQ1ZIaVF2ZlFPMWhiVUVqeHhMVUZ4azU1Ukgra2pzR1V1cDhSNURXSytXTEMrU3RRRjFXQ3hCY2ExcUFhVmlEdi96Yll4M1BFWlliTmVZWWFwKzJrUkRyWmF3NFFNUkdreUlmajBKN20xRUYzY0JJVkYyVHFXdlJZZ2V6ZkJIRnFEVk5JKzY2SlBYYU9nMW5jUXg3ZmM5OVJzd2pPRDRTRVZLbmFuT3JOTVpOUnJOK2syYk5sdHgxNDgyVW9rTGd0RFlXZDZ6azV3Z2lnS2lxSEwvaU80T1Z5cDNseXMxV3EwV25jNkxvS0NnRnZSZ3dqZmZmTzNSeTZCUnVOVzZtVHdhazNQTldDeU5YR3NPd2VsMGlySXNpemFiOVY2VlN2WHMvOUxrbnU5OGJHYzZ2djhWMkxJMnNQSHBINW44d2VOZGVySFpNcjVnMVNNL00rUGI1emluSGxsSEJWdXUrQXVEUHZ5VW9FQlJrVUxuQ05YVjFmOEtEQXhhaVl1enpTUUlRZ011RDYxTkVBU0hJQWlTU3FXU0dqbmJkRG92V2FmVDQrMnR4MkF3NE9Qamk1K2ZIMEZCZ1lTR2hoRVZaU1F1TG83Ky9mc1RIeC9mYklwNkJnemNaSkdOR2hwMnU4T3RFam9GZDNwSFUrblVuajI3ZlZVcTFjM0tVaW5vRHJUeEU1bmFSYUVHb0UyYXdlVmZMZWFjaDVuVXdZei9acmtpMU00eC9QMzlyN3ovL3Z0OEc4MVJkNFJVUmF0U0szZHVHdzZISzFKcXR6dXcyZXdlVVZKWGJsdGpJS0cwdEpTR2h1YlF2T2dxY3E5dlpYcTJ6RmxyajJ0dDRNQ0JOd0lLdVpXQ2N3dFJqYWhXaE0wZnlOY1cvK0NERDA1d0M3WjJmVzJ0T2R2YTVyWlpXd1FTWEVYeXJrQkMwN1pwV2VUZW1LL1dOaExxWnU0UUFPRzY2NjVWcVZTcUc1UmxVcUJBUVhjUkZCUTBvMWV2WHRwMnREYXhVV3Z6cUVob3lwMXREaVI0a2xJMkZzbTcwajhzRm90THNMbTBOVmVSZXp0Q3paT1NxRWxiZS9mZGQ2OERCaXBMZFBiaEl0VlRVZ29VL0tHMXRnSGJ0bTBkMHhXdHJYM05yVkc0TlJiSnQwei9BQkJicG5mWVd2alduRTZuTzIrdG1Sa1hFTlZxOVhYSzhweEx3ZWFuVElTQ1B6VEN3OE9udVFWYW85YW1waFVaWldNMVFxTU1hdWxyczUwMi9jUGhjS0J1ckFkdDFOWWE4OVdhS3d5YWZHdTRLYituQXFPcmEydXBzWXRFQmZyUXJndkVLWU9xZFFLQWs2S3FPZ3pldnZoNXFaVFZQUTJLMTN4S1ZiRVZNYVFYZmFhUDZkSXh0dndqbEJTSzlCamVwOHZYc1JjZklXdk56OGhBK01RckNJbytWNXFpaE9Sb1cwMHFxTlZucFN0V2l5dFY1Wkt6dDR4ZUYzV0RCcnd1bjJOZmJFUUNBbE12SnFKZjEraW5LN2F2UnRWN0hBRmgzbDIrVk1YV2RFcXp5aEYwNGNUUG5jTFpTdVdVR2lvbzNMSU5xMG5FZU9tbDZIVy8zWDQxbmRoTnJUV1V5S1NZTGg4aml1S0k0OGVQSmJzcHhCdUw0KzF1cmMzcE5rZWJORGFuMDRuRFpzRlVYNDlUcTRYUVNMeTh2RnJWa1RacWJTV0lybnJRNWdvREQyMnRUY0FBRUxScTI5VjMvZnNEcHIzMUxYLy82RXRHdjdTQ0hhV045WFpXbnZ2b0MwWSs5UjhTRmkzSHMwVFZZYXBnL2lzZnNlQ3p6Vno2NGxJK1BGS21TTERUUU9WbFFGTnpoRDJ2Zk43bFl4cjJmY3UrRDlaMnp5UVF0V2dNQm9vL2VaSEN6S3B6ZGorbjNubVlsU2xEV1ptU3pDZkdhRDRmTXBTVktVUForTVJIditxOCtSOHQ1c2lHSXkxZm5RVzcrUG1GLzNidlJLSWFqY0ZBNWRvUHlmN3hlSmNQeTM3ak1Zb09WWGZ2VWw1NnRHSTUrNTk2bmJOWGF1OWc5MDJYOE11bVE1aEx5NUhPSVR2SndZZHVvcml3NVFVcU55MGo4OHRkM1Q1WGJHenNSRTl6dEZXRVZHZ2RTSEE2blRobEdXdDFPZldWZFUwVkNXYXpwVWxyYzlXUmxpRTJVaEo1Q2pWM2hZRm4wQUJabG9YcTZxcUJna283ZThHc21XeC9ZQjRyNzc2T0IvcDdzV2pEd2NaSGtza2pMMlRWZ290by9lNWY5ZjJQMVBVY3pEY0xMMmZsTlVONSthdnRWQ2owTU8waWRNS2w5SnFjZW5ydHJLS0UybE9GT051WlAyZERIWFg1cGJTaDhaUnNtRTdsWURGWm1qNVNoOFVUUDNzV2dWRytwMzFnR3ZKUFVWOVN4YStoQmUxNTIzUE1PckNmV1FkVzRlY2R5S2kxKzVsMVlEOFRuN3EyZVhpU1M3TXo1ZWRncWJOMHJxRTRISmlPSGFEbVZEbVN3MEdiOXJpU2picWNmT3kyTG13eVF3UzlaczhpTlBFMHJlVWNOa3o1cHpCVnRNL2NhaTB0eEZ6VDBNNWExRkNiazk5aW5RS0hweEUvNHlKT0YraVZMQ1pxYzNLd05saTZPTHNTa2lPZnNuMGlTWXNlcFA5ZmJzRGdvVUE2VFJYVW5jcHZkNi9JQUE0TGRUazVYWm9ueWVHZ2V1Y1dURFUyMTV5M3UvZUsyeks5dUs5aGJXaFpjcUxSYUM3YnVIRkREdytOcmNrY2JmSzF1VnNPdUlRYWd1anREUm9WRG1kakxha0h0VkZkRGFVNTJSUms1NkgyVE85b0xwdHk0blJLU0ZLenhnYUlCb1BoS2hCSjh1amczalBJSDB0SkkvMlFtaUc5b3FBbXA4MFU3c2dxWk1KRll3RUlqdWxGUDhkV2RwWTV1U1JjTVVtN1k5THR2R29NWmVaSXZIMGxxck1iU0gzL0U2TDZ1SnJ1Mmc2dlpzMnN6V2lvd3F3Znh1UlBua2V2QmZPeExXeWUveUFxWXlMVzdPTkUzUDR2aGw4L3JzTXJ5WFc1YkprOUQ0dHZMN1J5Slphb1NVeDdwYmsvaiszWUpyWXVXazd5RzI4UjdQOHI3K3JJbDN5eTRITVNldFZSVmlSaHIzSXdldjFhTEovZXcvSFNrVnowMkN6QXdwYVIvWWo5T0pzWXpRN1cvZTFGTENjT1lqYzhSZlYzQVJoR3ptSE1QWFBjNW1nV1c2NmJpNjJ1bnVwU1B5YXZYMEhBR1ZyWjloUHJXSFhOMC9qMjdvVlVmaElwYmpvWHZmRWdXcmRneW43MVhuTFZLaXpabVVUZS9SS3AxNDhISkU2OTh3aTdsL3lFZjN3UXRmbDJSbjY0alBEWWpnZFJ2Zmw5TmovNEx2NzlFN0FVWkJIejRGSUdUSXpyOEppODkvN0I0VzkyVWx0VHhFL3o1cUpXQnpEcy9YY0o5b1dDOXg3aHB6ZTJFUkFYU0hXdWpaR2ZmVXBrbkd1eENwZmN6NEdkRW1MMkxwd2FiNnoreWN6ODVKK25kUTJVci9zUHU5OWVRMTIybVlwN3J1YUVRVVhQK1UvUmYvSUFBTXo3dm1iOXRjdVJLbjVCNm5NTlU5KytGeFZRdldNNVA5ejlQUG8rZlRFZCs0WEVmN3piZEF6QThPR3BZNEZUYnEzTkJySU5CQld5N0pSbFdaUkFscHhPV1JCRTFHcVg1aVpMTW9Ma2JKSCswVkJ5Z3IwcnZpUXkya2lKMUlDNnRXK3QwVkhuMHRhYVRkQnZ2LzFXSjRyaVZTMVgzY1I3TzdPWU0rbXlUcmFIbGJJNkJ5UDhSRjc0YkEzSm8wY1I3Z05sdFdZSTkxSGtWZGNOR1lhOHV3YXRyK3NCS2ZyZ0VmYS9zNUtvRjI1eHpYSzFscWxydjhTZ3M3SDdxbEZrZnIyZmxObUo3UDdyMzRoKzdETUdUZXlEVkhlTTc4YmVTc1hsV3dudTREbXIzNTVPVmZBVXJ2ajRNZGZidUJVOWpMT3VsSXI5aDdDZEpYdEtQckdId0JjMmt6cmNDQTRMVHFEd2RDWjA5QWltckZqQjhTZm1VaFgzZDFKdmJLbmRTcVVtQnE3OW1tQi9rZDFYRFNmMyt5d0Nwc2VmbVZzZ2FnU1gvcmdWalJyQXdyWXBROG5kUFovZXcxMHZFKzNnUzVuNDFEd2NoVnY1YXNKakpNN2FnaUY3TlR2L2M0eUxOMi9DejFlay9JdG4rT241OTVuK2VzZXRRTEtYdmt2Y294K1FQS00zSU9Ic2doYlY0K2JINlhIektWWWxYTTNJRlNzSWFzeGtyc3ZnNTMrdVovUzJyWVNINmNoLy9XNTJQZmMrbDczVi9IS3Eybm1VU3phdEl5QlloOU5pNmREZkdUSjVBVk1tTDJEcmhEaWlYdjJjWHIxYnBreWJIVVl1LytZNTFKWWMwZ2ZOcEt6aVhpSjhDOWw1K3o5SVdycVJYa21oMlBPMzhQWE1wNGlidUJ3M1ZTQStQb1pwOCtiTlc3RnMyVEtyeXh4Rkl5RGJaUkFGd2ZXZjRDS3p4ZWwweWs2blU1QWxXUmFjVG5jdHFic0JqQ0dBNk5temlJd01wMmZQQ05TTlVWQ1hHZXIwU1BGbzZWK2JPSEhpYktDNXo3eGs1L1V2VnVOSVNHVkIvK0N1ZW5VdzZEUm9SRUdSVVdlSW11MHJ5Znc0SFZORkhZN3FFcVMremU4YVE4cG9ERG9BTFNHamgzSDh3Q0dZQXFXSHpLaTJmczdlSFNBaklUdnlxY3F1SjNqUTZWOHErcVFVeEl6YjJISzNsZkRVRkhwT200YkJvekpNUDNRdWN3N1BQWHMzRm5NaHZZYTdUVUcxN2xmVkVhdmlrd2oyZHoxNGh1aEk2cXFyei9oY2dtamh4UE9MeWQ5NUFMdFZ3cHhUUzBCbERlQVNiT0VqUnJtR2JCeEdjUEJKS3JNc21IZHZBMi9JZXZsWlZ3djB5aFBVSFBUQzZYWWVuUTVoSTBieTR6TjM0RGh5Q2NHcFkrazU0WUl6SHJmbFdBYm1xR0dFaGJtaUNCRmp4MUM3TkwzRkdBSW16aVRBWGN1dDB2MjZhRU5neWhCWGRZZ3VBa05JRFpaYWNKYnZvcnpHaTZBdi8wUFZsNEJrUnF6TXBLWUs5TTBpSS9yNTUvK1Z1bXpac3MyTjVxanNNa2NkSUR0bEdjbmxiNU5rU1hLMjB0ZzhvcVJhTThVL2JhR2lwcDRDalJmcVJoUFU2V3lkNHRHY2tBdUlhclZxbHNmN21rOVhyV2FyR01mN1UvdlRlVjY0RjZHK2FzcHFuZnhseGtWQUEvK3BoMUEvdlNLcE9yWThXN29xVHE1ank2UExHZmZGZndtTERhYnE2eGZaOHJXdEl3WFBkUkpORUJIVHB1TGpYcWdlVTZmakcrL2Q0YlhVMGFsY3VtMDlSVnUzVXZqTlV0TGZXY3ZNelcraFBVZTNLdW9OcDlsSFV0Ty9jaGQ1U1FWUEIxWTNpaGJhZTkxbXYvb1ErYVVwakYyMkNKMjNtdDNYRFVPVzVOT2Z3WDA5cjVqQlJFMmQ2djU4S2oxdkRtZ3hsUGF1RlhYYjgxeVN0cCtpclQ5eDdMSHJLYnp1VlVZdFNEdG4yMHZyYy9hZVAwRThUZEdiZnpSUlU2YzJsY1QxbURhN2pWc2dMQ3dzRGRqV3l0Zm1tYkFydTFJL1hKUkdzb3dnT0oyeVMyYTUzR2hWbVlkQk5qSmdTaHJSUFl5SXpjbTR6dmJTTzVCbFdhaXFxa3dTQk9IaVJuOVordnIxZkZZWHdqdFhwalNwbEoxdG1aR0pSallmeXdhZ0xQY2t4OVNScElZcS9yWFR6bGh3Q09yeVhFd2Vjc3RlVklRYzJaZmcyR0RBUWQ2NmxvMUhUSHUyVVc4QnNGRytiUmVoQXdlQmIxL0MrcGhwcUFzZ2JHZ0tZVU5UQ0lpTFFXTm9Yamh0U0FoMUJTMGJxRGpxNnNBL25PanBzeGoyMHBPbzg0N2k2ZnUxWlcxbCsxMFBVMWwzN3ViQUt5Q0FCamY5czdQNEFKVkZMY21SMUhvRGxzcnlzL2VnaHdSaE90V1NicnFob0lDQUljUFFlYXR4Vmh5aWFHZExQcm1TSFZ0ZDgxVzRpNHFxM2dUSDZRZ1pQaHByMWlIMC9ZWTB6Ym1mTWFoWm1CbUMwRHFLTVZXMWxOUzJ1am9NOGNrazNMaVE1UG1YVVgzMHhCbmZpNjdQSUhRRnV5Z3RkUVVoaW4vWWlsL3k0Ri9OcUtQMjFXTXI3MW9FWFJVM2pCQnlzUnBpbStjaExncE5xN2VqV3ExTzI3QmhmWTkyQkp1cTBXSnNsRWVTSkNFTDRMRFpXblMyc3BnYUVQejljVGl0MUpkbm8yNFVhbTJyREpxQ0JvS1BqOC9semNaMENZczNaVkdyOHlMdFdWZW9YUnZhaSswTEp3RHc1TnNma0Y1c284N21ZTWFpSlNRTkhzYUhNd1l4ZmN3b3ZudG5GWmU5ZVpLYXFscitldmswZ3BVU3dOTUx0ckFSREo0Wnd1b0xSNkEycG5EeHQ2K2hIellWSTIremV1WmN0R0lkdXFDUWxvSWdTT0tIV1planBncUw3MFFtenhnRXdOQlhYK2I3K2RlUzkxWUNhbnM1OVNZams5WXZhU0xRN1hYTFBXeTYrVDYrZkY5SDNOOWZKUG5Lb2RUditJaU4vL2NKZ1gzak1HZG5Fbkw3US9oN3ZKU2Q1U2ZKL3V3clloNWJUTkE1U244TG1YZ0Zxbi9PSVgzbVQ2ajlJdEdGdE5SempKZGZ6OUZiSCtLYjFhL2dOLzU2eGo5NjdhKzZYdlRjQlp5WU41K1ZJOThrNHBxSEdIbkhOR0t1dVpYMUN4WlF0M0VnbGhyUUo3UmtYYkVmV00yYTJXdXdaR2NTKzlqL0k4QWJHRENWMUp1MnMzN0NPUHo3eFdJK2xZM2ZwUTh5OXA1TDNVOXlUd2JmZHhGYjAwYWc4b3RoVFBvS2duM2d5RU56eUQycHh6ZFVTOVh4VWxMZS90dVozNHp2SUZJZnVwanQweWZqSHg5TWRiYU5rWjhzK3RWcmtuRFRRcmJmUFpOZi9BM0UzUDBTQTZjbmRmQ21NSkw2MmtOc3ZXa0tKK0w3SWxlVllnbEtaZnBIaTlvSTJHSERocVVDdVo3Q1RaWmx1K0NLa0VxeUlMak5VUW1WbHc3SlZFOVZ0Z2xiWURqYVdDOTA0VVpxTTM4aXEvd2tKWUlPWWZEZ3dlNytCbVlzRm90Z3RWcXgyKzJDdytFUTNDRlhsZFBwMkFQMFB4dTJWVWxWUFhxREFUL3Q3Nk90bmUrMFJaM0RnU2svSDFWZ0JEcERXNytJczZHT2hsb0xQaEdocmN3ZGlZYkNmR1N2UUF6QlhaTkVrcTBCVTNFNW1zQXdkTDY2MzJXOVpKdUordEk2dktNaitMMzBlMmRESFEybE5YajNqRWJWenN2WVdsYU1wUE5ENzl2U3ZKY3NKa3lsRlhpRlJhRFZkVzBQMkdyS3NOWlk4VFpHb3pvTGxDWk9VdzBORlNhOG80M3RqdjIzY2FuWU1PVVhJL3FIb1BkdlA1bFpsdVdqb3FpNkE2Z0g2bkJSR3BrQmk0QmdGMFRCS1FpQ3BGYXJaWTFHSTN0NWVhSFQ2V1M5WG8rM3Q3ZUwwc2hiajQ5V1QxalBIaTZOcmRrRWJkYlljQ2ZJbVV6MWFXZEhxTGtjSHVHQlNyblFyelFHTUVUSG5sNzk5L2JGMTl1MzNibjNOdmJzM21wcHZmSHQyZk4zdlZ0QmE4QTMydkM3amtIbDdZdHZCNmthWHFIdFZ5cUlPZ08rUGJzM2RxMS9LRnIvc3poMmd6KytCdi9mZDh1S1dneWQ3Q05CRVBvZVBKalJkK0RBUWZ2Ym1LUElUbVFrUVJBRVNYSnBiWTJCQk04NlVvY2tJMm5WMkd3V3hNYkdMTTI1YTgzK05VRHc4dks2VEJFbUNoUW9PTmVJajQ4ZjBjb1ViYzM0UVhPWmxZU243UElza0xkYWJZZ2V2alhCN1ZzVFBCeDJvaUFJMDVVcFY2QkF3Ym1HWHE5UG83bjZvTjBXZmE0ZnFaSDVRMmloc1RWMXRySTFhbXlTUitEQXBha0JndG5jTUJXSVVxWmNnUUlGdndHTVI0OGVHVWpMOHFwR3hvL0cxRE5Ca2p5TDQ1czF0MmIyanliQjFvWnp6ZVhlMEdxbktuUDkyNkswdEpUOC9BSmxJaFQ4S1JFVEV6UE1VMk56bTZPcVZ1Wm9DNjQyTjRWNEM2MU5kQWNNbWxTN3hnUGRacWdpMkJRb1VQQ2JRYWZUalcrbHJiVm5qcmFRV2EwRENYYTdIZEhUREczVTFBQ2hvY0Uwb1gwejFNbk9qTU1zV3JtQmU1ZHY0djE5dVI3MEt6SlplWGw4dW0wdnIyNDhTSzNIVVE1ckE5c1BIZWV0alR0Wm5sbWlyT0J2aUVQM1hjR0pIY1hud1Vna2ZyNTZQQVduL2poemF5dk5wYnF3NGd5UHJtUGJaWmRTMnFYRGJWUmxITUorRmhoeGFqY3RZY01UUzgvcVBNZ05GWlFleVczeitjL1hqQ1V2cDN2bWFFYkdnVDRlV2xzTGphM3hweVZYbTlRbVFpcTJNa1B4TUVNbnRyODM2L2hxYnlGOVltUEV6UktVQUFBZ0FFbEVRVlM0dEg4VW03ZHM0UEVmR2tkdTVyMzFlemhTWE1KYlAyUzJFR3lsZVRtOHN6ZWIvYitjNUl0amltRDdMV0V0SzhCdXRwMEhJeEdKbnJjUXY4QS9rT3RnMVN2c1diTCtqQVc5cFNBUFIxZTZUVlBPanF0dnBOcDhGbDR2cGtvYXlzNHUvNTZVK3dNYi92cGltODh0ZVRuWTdkMDdWNjlldlpJOU5iYlRtS040bXFQTldwdExzS21ibzZHTlRCNHVNMVFVeGZZRm14akE0aHNuTmYwYTJGREdYL2Jud3RoWXdKdG5icDRKTlRsOGMzQm5TekdjMEo4UEV2cXplc05hUHFoVGhNMjVRUFhPZEk0dlg0OGREUUVqcDlIL3l2Rk5TYnEyNHFQc2UreDF6RlpmRXY5Mk55RkdYOEJDM3JJUEtkcDdGTHRkVGZDa1dmU1pub29BVlArY1RtV2xub1k5RzZpcEZJbTc2WGFNU2U0aWRVY2QyZSsvUStIK2szakZENkgvd3B2dzl1NDQrOU4wNkFkT3JOb09vaGJ2MGEwRWI4NStNcGQ4Z3FuYWlpRitDSDBYM3RBNUEreHB4bEN6ZHcxRkJmNzB2WFFFQUpXYlYxSWxKUkovVVJKbDZ6NmlRVzJrY25NNkZtY3dDZlB2SURUVzMvMndsM0w4blhlb3lDckJrRFNPL3JkY2lWYmRxSTJVY2VLOTl5ZzdVb0JYejBRU2JyNlZBUDlxTWw5K240bzlHZFRWbGJGL2NUWkNaREtEYjNSNWJ4d1ZXUng5OTBPcVQ5VVNNUFl5K2wyVjVrNHd0cEgzMFZ1YzJubVNnTFRKZEVVQnEveCtCYWQrM0kvWlZNT0pGeFpUb0JXSm5MT1E4SGgvMS9tV3ZVdmVqcU9valFra3pwL2ZWTmplc1FKWXpiR1huNlU4dTRySVdUZlRhMHkvSnMwdy8vUDN5UHZoRUtxSVJCSVhkbjYrM0E5ZW92TGdBZVRpWFBZdFhveWdDcVQzM3hZMmtTYVlUK3hrOTVKUHNYdEZNK0NldS9Gemw3Qlk4ak00OXM3SDFGVTdDSjE2TllsVGhpSUEzdDdlSTREUFdwdWlqZVlvc2lRNUpVbkE2VVFscW1WSkl3bE91MDAyMWRSZ2t5UXNYdDZJalZMUG5aU0xMQ05VVmxiMHA0dk5XbzZVbHBOb0RGR2t5dThNdVdRbkcrWS9UK2pNYStsejNSVUk1cG9XUklBbmwzOUY2Q1d6Q2RCbHMvWEIxNXBNb1pwQ08xR3pyNlAzdkdrVXZYSTdCOWNjQTZCbVZ6bzcvdlk0bXBScHhFN293WTZycjZXaVJnSWNaTnc5aDE4eW5TUXNtSStQZVE4Yi8vcnZUaDlRVFhnc1lXbWpLZm44VlZxU2JUU3c4NmJyY2ZhNW1IN3piOFEvUU1MYTZSdis5R1B3Nnp1SXdsZnY0OFR1UW14Wlcvbmg0ZjhRTUNqUnBmT3MvNHdkRDd4STRPUzVHQk1kYkxuMlRzd09seFd5ODVvWmxKbU1KTjUySXh6OWpCK2VXOTVrb2Z3MDd6SUtDbjFKdUcwKzRiMjhxTTJ0QkxVdndlUFM4RThNUXh2ZGw3QzBOTUtISnJwdktaOHRNK2ZRRUpCQ245dXVvdjdiWjluOXdYWUFTajU5bGwyZkhpTHVwaHNSOXEya3JMRHp5bjVkM0VEQzBsSlJhNzBJSEpOR1dOcDRmSUpjbklpRlN4NWoxNmNaeE41ME13R2FrNnlmZDErWG1IbnIxbjFLUStTRnhNOGN5YUU3cnlMM21JdEVNK3U1djdCL1ZUYXhOODBuTkt5VXpkYzkxT241L0llT0lXUllFdmhHRUo2V1J0aTRDOTAwVHk2dE5HZEZPc1paMTZBdDNjSlB6eTl6T2JSSzk3TnU1aTJJZ3liUlo5NWxGTDU4QjRjM1pRR3VaaStyVjM4WDJaNmZEVmtXWkFSQkVBUVFhSEtqT2UxV25LalJCSWVpRGRDaGJsM3dqcXMyZEh4WEhxWlQyWWQ1ODdDVGQrN3NwMGlXMzl0NzFWQ0p3NkZIYjR3bUpENkNrT1NXMzhkZGR5ZlJJL29qUjExTnh1VWZZQU8waERMZ3J6ZFJzWDgvNW1vYi9vUGlLTjkxRUthNCtpWUVYSHdOZmFhTUFrWVJ0K0k5Y2pjZEkyaFVKY2MyT3BtNDZ5NThOQkIwOTcxa3BWNUxWY085QkhkQS9hOE43WWt4MU1ndmJUUTdLNVpxSzRGaFlRUU1TQ0o0WUhMblFyeDBad2RqTURMeXRhZFpjOHR0NUJocTZmdmlSd1NITnBjelJjNWJTT3lZWVRCbU1Ma2ZEaUIvYnhVeDZ2WGtsdmRuNXIxWG93TDg3NzJEcjJlOGp1WFJPWWdacThrcFR1REtyMjUzTVpza045ZEdocWVtWWo4VVFaazJIbU5xTXlkYzFmcmwxQmluTWY2R2k1R0JRWGZkeUtwRlh6SDh4bEhrcmxoSjc3OStqZkdDT0l6OTcrZkVoMWQyZXIvZVBmdmczZE1YalVaSFNHb3FvWVptb1pHOTRpdjZQdlE5eGdzaUlQa0pjcFplUU1HSmw0anIzWEVKbCthQ1MwbStLZzBCNkRmek0zTFRmeUFtZmpCSGx1d2llZE9QaElhb2tmdmZUKzdTRVJSbE9ZaUpQMzE5VjBEU01IeFYrUWlHdkJiejBJamVDLytPY1dnZ2dmWlpySHJPVlY5ZThQbjdhTWJmU3Y5cG81R0FnUXV1WU1meWRKTFNYSngxS1NrcC9ZRThUM05VRUlTbVpGMEVRVUFVWlVIRXBaaHB2TkQ1YW5BNnJOZ0ZMNWRnYSt6dTN2aWpVcW5HZGpiWkZVVTVMUGo4QUl0dW1FbWlRYWxtLzcyaGlwdkV5SHN5T0hEbkhING90R0s4NXUrTWVHQnVVMzJsVjZDcjVGM1FhUkVjRGlUQVdaSEoraGszNFQxeUtnRVIvalFVMXlQNU5GTlNlMGVFTnYyL1BqU002c29TSEtYbFdDMkY3THIxeGlZYUhxK2tKTEFDM21jeThrQ0d2Zm9NKzE5OW1DLytua2ZBaU1zWThjcVQrSGF3cHh5bFJSMk9RZGRuUERHSml6aGVNSmp4bzFvMkdOR0hOZEovYS9FMit0TlFYazJEc3hpcE1vTnROOXpZUEtvQjhVaUF0YkFZVFV4OHQraWE2b3Z6Y1J6ZHc1WWJtdnNuQlBjZTdqcGZhUjFCWVdGdVZTd0NROEN2S1FnMVl5azFvMnUwbU1SQURHRmdxNndET3VaSTFJVkZOYmtwZE1Zd0dySXFvYVlJczluTW9YdHY1V2pUbStBQ1ZOamM4dVhNL0tycVFKZFRWYVZSSVZ1dHJwRVhGV0Q2OFFpYmI5amNyUGtOYVM1eUNnZ0lTQVkyZUdocnJoOEJBVmtXSktkVGtKMlNJSW9xSkVtU0hlWmFvYWJVS2h0OGZCRjB0cllhMjczMzNxc1NCS0ZEM3VpNmlnSnUrV2diZDg2ZHdiZ0liMFdxbkJkUTAvT1dCK2w1eTRQWVNqTllOMjQyUmRmT0pkcllnZTltNHdvY1EyNWc3TDl1QitENEU3dndERmcyRkRjMzNER1hsZUoxWVRqcU1BMWVobmhHZmZ3cEJ2WFpHWG5nbUZsTUdETUwyVkxGam5tVE9mN2RIRkptbjU0MVFoMFcyZUVZeXI5NWtkenFJY1QzK29XZlg5L0FxRHVhM2NYbTRrSWdCYkRSVUZoRFpFZ0EzdW9JVkpHcFRQanN0VGFGOWpaakJQYmNuZGdrbXVqQVBTRUlBbktyN2lrK0VkRjRwWVF5OGIySDJ3cVVjSC9NcGFWQUhGaUtNVlU3dWl3Z0JGRnExZHRCank1TWo2V3dISHBIZ0ZTRnFSU01YYUJic1pRV0lMczFHVXRoS2Q0UlFlQWZqdDdnejVDM2xoRWVlQWJLU2plNnlPZ2pqZmhmTkpPSlQ3ZlB5S0xSYUVZTUhqeEljK0JBUnF0RVhVRjA2V3VDZ0N6aHROdVJOR3JzWmdzYW4yQjBZZjdvdkhXb1c1bWhQUG5rRTZPQjAxZk4ydXU0YzBrNnV1ZytWQlprczdRQVZQb0E1aVc3aWx5M0h6akV5WXB5ckU0elgyN1BJQ0U4a3FrSm9VZ04xU3c3Y0lyRHA2b3B0VWtzM1FHcEEvcVI2S2RSWk5KWmdDMXJPMGMyRlJDWk9nQkgvazZzMmhoOEFqb3hjYUo2MExBbm5ZS2ZSMFB4TG81OXV3Lzk5RXVhZ3hGclArYm9ta0g0T2c2UnZjL0ErRmY2SVBoTDlCbHI0OGY3bjJmZ0RSY2pWeFZTc0NlUElmZmQxaUg3UnRYKzdaaHFySmhOVGlwM2JrRjl5b3VRMUJIb2RLVWMvTmNLZ3NhTlJFc2w5YVYyZ21QQ094eTNFSlo2MmpFNHM3YXo3UjlyR2ZYTk40VDRsckYreWh4T3BQYW45MUNYaEMvNjVDMXlVaU1Rc2xkVFlyK1FZUmNFb2hXbjB0UDNSYlkvczRRK2w2YmlLRHhHU2JiRUJYK1pqWGJRVkdJai9zMzIvM3VEL25QSFlzdmRneHc1aVo3dTgvbkg5NlhxZzY4NE9UUUliV2dNMGNQN0VUaHBEajR2WE03UGIvWW1ia3dpNXF4RFZKdkNHRFJ2SWpGenJtVGJxNHNKQ2JtZHFxL2VvTDZyY28wUUFtSWNuSGh6S2Ria1NBSlNSdU1ickNOdTFreCtldkZKQW53WFVyL3BBMm9pcGhIVnUzUDkwcjQzblgyZlhZd3hvb1lqM3h4bHlLZmpRZTFMdjVzR3N2dXVoMG4rNnpXbzdlVVViZHBQd21QMzBCbUJ2eW82SG4zQk14ejZmQlgrZ1VHRWp4L1ZGSHhwRDFHemIrVEFKWDhobzM4SXhnRkc2bzd1eE9xVFROOUxoalVwY08rOTkzNnZsSlNVUXpRM1UxWUpJQ0lJSXJMc1JFWkFGR1JabHBGRkFidTVGbHVEQnJtNkZKVmFyUmJjaWJrQ0lENzExSk5YaTZKNGVoK2JaS2ZLcGlMY29NRmlkMkN4TzdDS1dvWkhCd0Z3TFBjVWVWWTFRMk5Ed2VGQXJmY2xLY3dYMlZyUEQ5bGwrUGdIMGkvSUc0dmRRVlI0QkJINjM1YU14bVF5NFhSSzNXNUtYRnBhUm5Cd01DcVY2cHdlYzZialEzQlN0V3M3UlpzMlUxc3FNSERSMDRRYW03ZWpiNzhVRElIdTZKWW1nTEJoL2RIMUhFeGdVQTA1WDY3QmpKR2syMlpqNkpGQVlGdzROYnZTY2NSY2hMNXNENlhIVFF4OCtwK0U5L0FGUk1LbnpFQlZlcEM4OUEzVUZ0WVNQSElzUVhHUkhYTG1sNjFiU2RYeGZIeVRVaEZyQ3pFWGxPQnpRU282THpCbkhhQm8weWJLRHVjUWZjdWpKSTVONkZSN09kMFl5cmR2Sm5UMlh6RDJqVURRQmhBNW9pOFZod3NKR1JoUHhmcFAwSTJkaStQZ0pxcktmRWg1N2duOEEzUWdlQkYxMlV4c1I3ZVR2KzRIVEZWMndzYU93ejhxQkFRdm9pK2JnVDE3Si9scmY4RHFDTUE0WVFRNmI5ZFRxNDBkVEVpVVFQWGg0MWpNV3NJSDl3YU5IejFuVEtMdTU4MFViTnlLMWFvbFl1eDRmTU44TVF3WWdhK1lUKzQzbTlHTm1VMU1TaStDaGc3RnExTlpKQkkrTVExYjFpSHE4L0xSeFNWakNOTGhlOEU0Zk9RQ1RxMWFqODBRei9Cbkg4YmczYmtxYlJpZWhsZkJ6K1QvbkVYQy9jOFNrK3dTMUVHakw4RkhLQ0l2L1R1cXNvcnh1MkEwWWYxaU9pY2k5Z29uYW13L2FqSU9ZUzZzeG45NENvM01aQUhKSTlDN0RUdkJONXl3UVFtSWhraGlMeGxCeFpZMUZHNzdDWWNZVE9UWTBYZ0hORnVBZXIwKzY3bm5uanVCcTkrb0hYQUk0QUNjZ0NRSW9peXFSRmtRQk5SZU9sU1NFNm5CZ3RvUWlLRFQ2VVJQN2pXSHcvNk5JQWlUL3FpYXpmbk94M2FtNHp2YnlIMzlkckpOa3hqL3dPVi9tTFUvY3YrbG1GS2VaT2pjRkVYRi94K0F3K0hZb3RGb242V1pvNjFlRUFRVFlCVUV3U1lJelJ4dFdxMkxvODNMeThYUkpyb1RjcEZsV1pnOWU1WktFSVFSeXBRcThBcUx3eWNpNkE5MVQ3cVlSTHhERkovdy80elhXSzBlR2hNVDB4dzRhTmxNV1d4MG43bVNkUnQvWEtscmFzODBqM2ZmZlhjWW9QVERVMERFN1B1SitJUGRVOXlkTHlvTCs3OEZuMlhMUHU0NWF0VG9ZelQzUUJEZGFSK05wVldDTE11eUxEZm40MHFTMUt5eEFlaDB1cUhLWENwUW9PQjhRZS9ldlh1NWhacG4ya2VqWUtPbHh1YnExU0pKVXN2Q1VwVktwVGdmemlMQ3drSzdGVGdBTUJnTStQbjVLcE9uUUFIZzcrL2ZwNVVaS25yOENLMDBOeVRKUldtazlxQXBFZ1JCdUVDWnlyTXAyTUs2Zll6QllGQW1Ub0VDTnpRYVRSSnRmV3lOeGZCTlRCK2VSZkdlR2hzblRod1BBeEs3ZXNIcTJscHlLK3B4bkM0bno5bTJxYXpWYkNhM3JCcXpRMVpXVElFQ0JaMUNFSVNFRjE1NDNxZWxZSk5ibTZOQ2N6NnVSL0FBRUl4R1k1ZUszcEhxdWV1VkZleTFhd24zY2xKbzEvUHY2NmN4SWt3UFdIbnVvMi81T3F1Y1VpbUFMVTlkUmJUN3NQZFhydVNOekRwNkJIaVJWMlZod1JXWGNPdUFNR1hsRkNoUTBDRW1UWnBrQkNwb0lweEVGQVFFRDgwTmFQYTF5YktFdXRGRzFXaTBYUk5zb29ZRnMyYVMxTU9WMXI3eXUxVXMybkNRMWZPR0F5b21qN3lRV3llYW1mam1uaGFIalVnZHhUVXp3OUdLa0g5MEQ1TlhiT1B5QVZkMFV0R21RSUdDUHp1aW9xSjZBcGx1UWRhaWN4VnRvcU11NFNhNkpaMmdVb2tEdW5ZWnJ5YWhCdEF6eUI5TEU4K01taUc5b2dqV3Q4MTg3aHNWM2xSckZ4YmtoK2l3WTVXVVJWT2dRRUhIOFBIeGlmTVFhcTFiOGpYbHNyazdXQ0ZKa3RDVTVDWUl3b0J1WDlGdTRyMmRXY3hKN2R1TmcyUSsyWHFRWWNPVE1DcWtJQW9VS09nRUdvMG1vWlZRYStGamE1Mm9LOHR5VXdtWUFIU1BWRTJ5OC9vWHEzRWtwTEtnZjljTnloMC9iK1hqY2o5ZW1EUkFXVEVGQ2hSMENsRVUrM2hvYVc2aEpudWFvOUFpZ09BU2JFSnBhVWtpNE5YMVN6bjVkTlZxdG9weHZESzFQMTFWdkE1bTdPS3huMnA1NTdvMGdoVlNEd1VLRkhRTlhpdFhmaEhpSWR4RVdhWUZoNlJuQUVHV1hla2UrUGo0SkhUOUdqTHA2OWZ6V1YwSTcxeVpncjZMVXUzRThRUDhmVk1CYjl3MGhSaHZ4UVpWb0VCQjE5RzNiOTlRVHArazZ5SFVYT2FvR2hEVWFuVjhsNjlnTG1IeHBpeHFkVjZrUGV1aStkV0c5bUw3d2drQVBQbjJCNlFYMjZpek9aaXhhQWxKZzRmeDRZeEIvR2YxRGdvclJhNTUrVVAzaWZTOGQ5ODhCdXFWUlZPZ1FFSEhDQWtKRFc5cmpyYlUyanpNVVZrUUJFSHZjTmhmRmtWeC9wOWhnbjVMMmlJRkNoU2NIWmpONW1YZTNvYWx1T2lMNm9BNk40V1JCYkFMZ3VBUVJWRlNxOVd5UnFPUlJRQkJFR0tWcVZPZ1FNSDVDbzFHRStuV3lzVFRtS0tlYVIrdUx3UkJpRkdtVG9FQ0JlY3JWQ3BWOUdtRW11QWgzQUFaa0p1K1ZBU2JBZ1VLemxzSWd0Q2psY1lteUhLTGxBOTM5UUhJTW9nblRod1BCM1RLMUNsUW9PQThodTdmLzM3SnAzT056V1dPaXNIQndaSEtuQ2xRb09COHg4Q0JBLzA4QkZtYmRJOUdvU2JMTXFLWGwxZjRtVnprVEdpTHpPWUdjc3VxTWRuL1BMUkZzdVJBa3BTaVdBVUtmaTBpSWlMOFRxT3R0ZjVCclZLcHVpZll6cEMyNktPdlZ2TG1VUlBodmxvS0swM2NPR01xQ3dmOXdaWEZ3azBzVDc0ZVZZOElaSnNGcjdnVWhyLzRFaEc5T3k5Qk0rMyttZ1BiSFl5OCswcGxSeXRRQVBqNys3ZlcyRTVuaWdxaUtJcWgzVHE3bTdabyt3UHpXSG4zZFR6UTM0dEZHdzY2djNUUkZxMWFjQkd0eWEydm5EcWQ3UTlkeDhvN3JpTDkycUc4K3MxUFZQd1pWc01ya1VsN2RqUDc0SDc2RG5Hdy9mLytYNHV2SFRWbDFPWVhJN1hROGlUc3hkbVVIdndGeWRFOWpVOEdjRmlveThuQmJwUGM1M045WjZzcW83NjBwczB4OXBveWFrL2w0N0FwbXFXQzh4ZmUzdDUrcHhGcVRkVGdqYVZWYWxFVXUwbUo1a1ZTaitheTBwNUIvbGhLV3RJV1VaUFQ1aWk5UjBkWUNWQ3J4QTRiN1A3eG9DWnNlQXFXelVkeEFpb3NISHY2TGc1dnlNTS9WRU50YlJBVFBsdENRR0FkTytmZlJzV0pIQnJLSk5iTjNRVUJTVXg0OTBtOEtDUzk3K1VNMzdPVFVBTlVmcm1ZYmVzTlhQYkdYMTBLNHBMN09iQlRRc3plaFZQampkVS9tWm1mL0pPOU42VlNJUXhCTmxYVGNEU0RpTCsveFlpYnh3S1EvY0pDOW4yVFMyQnNFTFcvbEhQaHFyV0VOKzBJQy92L3ZnRDFSWGVSTkYzcDg2UGc5NFZXcSszVXgrYlcyRkFMZ25EbXpTTWJhWXNtWGRhbFAvOXB6eTVlM1pYTnlRb3IvNWgzS1VGL2h0V1E2aWpldElscVN3MG5YL3VDdUd1ZVFnVlViM2lQakIwYUx0dTRCaTgxNUx3OG4zMXZyV0xDdzVkejRic3JxUG51VlRaL1pXWEsyL2QzNjNKVk80OXl5YVoxQkFUcmNGb3NUYXV1NlRlVkNRL093TEo3R1YvZXU0emhONDlGUlNsSGwvekloVnN5TUlZRERodk9GbVc4RWpXSDl1RTFzRnA1cWhUOC9xcUJXdTFIeDc0MW9WbU5nTUF6ZTJDN1QxczBzRzgvbmpMR3NHM3ZIbDdkdUorTGJoM1BINzUxaVZSTDhhcHZFWXFQVWFNZnl1UWJKZ0pRdG4wN0drUXlGLzhEQ2JEblZsQmxQUVQ4dXM3ckFSTm5FaERzeXQ1UjZacXplTUtHREFaQUZ4Mk5XRjJOSFZBUlJNU0lJSGJmZGdNOUo0MGxJdTFpSWdaRWV5ci9qRnVmb1R4UkNzNExxRlNxZGt4UkdSQ0UxZzRaRWZEci9pWE9qTGJJWVBDaGQyUVlOMDBkalYvK01YNnMrQk5FUjlWUkpQLzdKY1orc29wZWtjZlk5VnA2MCtRYmtsS0ptanFWSGxPbjBtdmhJNHg5L0phdVNNcm01V3NuSkszMWFaOVZRRkM3VjBsc2FSNFBlWGNkby83dkZyVDJBclpmT1prVGU4dVVKMGpCZVFsUkZIMW80MXRyV1ZMbC9neFJFSVJ1Q3JZem9TMlNLS294TmYxV1dWcE1ua05Mb083UDVHVVQ2WGYvQTVRc2VaN0tHb25RVVNPcHpUeUJmM0lLWVVOVENCczZHRU5Rcy82cTlqVmdMNitrcGVqeXhjdW5sb2JDQnBmV3QyL1ByeHlURFp0SkluajRXUHJmOHpnSlk4T296U3BwOGYzaEorN20yQVpGYTFQdyswTVFCSjlPVE5BbVhqWTFkTk1hUENQYW9yNjhzdlF6dHB0MWhPcEZjaXRNekpsK0VVUC9aQzAwTmJGcDlCMy9MQWYvazg2NEIyNGxhY2ZkcEkrYlRFQ3ZjT3B6ZnlIcWpwZEl1V3FFUzd0Tm1Vb2tOL0xOdUlsb0lsSzQ2TFBuME9GTDcrc25zWFBXeFJ4TENFZHJFTUhuMTR5b2xDMFhYNDdUbUlpV1NtcnI0MG1iM04vamV6dkYzMzZPTm13S2ZTWU9VcDRzQmIrM1lEUFFzdWk5VGFvSHpSSk9LZ0NNdjhYQVRBMG1LaXdPZ24xOU1XaCtIN0xKODQyMnlHbXFvYUdxRG4yWUViVzJhM05pTFN0RTBnV2c5L1UrQ3lPUU1CY1g0MENEVDBUb255eFNyZUIvREVXQ0lDNEVUTGlvaTJxQmVrRVF6SUJWRUFTN0lBaE9sVW9scVlIZmpPclI0RzNBNEsyc2ppZFVCbjk4RGY3ZE9zWXI5R3kraDBUMEVVWmxJUlQ4TDBEWGdSbnFBVmZ3UUdGT1ZLQkF3ZjhDV3N1cWRnME1XVVlSYkFvVUtQaWZFbXh0QWdidENiaEcvbkFGQ2hRb09OK2g2a0JqYXlIZ0dzc1NGSndESERwMEdKdk5wa3lFQWdWbkIySkhXbHA3ZjZoQWdRSUYvd3NRT3ZrZFFCQ0JibEk2T05tWmNaaEZLemR3Ny9KTnZMOHZsMmFkUkNZckw0OVB0KzNsMVkwSHFXM3ZjSWVKOXpmK3hKYjhHbVdKT29LdG1NeC9QVWZlL3R6ZjVmSy92SFF2NlpkTVl2bm9HMmc0aDljeFo2U1RQdjFTVmc0Znd0SHY4My9YS2EvUE9vU3BSdEd3ejJOMFdWYUpnTE43cDY3anE3MkY5SW1ONGRMK1VXemVzb0hIZjhocDNLYTh0MzRQUjRwTGVPdUh6SFlGMitvdDIzamp4d3kyRk5RcXk5VFJRN2JqYXc1OXNKVDkvL255ZDdsK3dqMHZNdTJUNXhHcktqbVhoVy82UWRPWTl1MHFlaVY1NDdEK3ZyUkpKNTVaUVBiT1ltWHpuYjl3bmtaYmE2TzFxUUVib09tNmxSdkE0aHNuTmYwYTJGREdYL2Jud3RoWXdKdG5icDRKTlRsOGMzQm5tME5yaTdOWld1akQ3RGp2YzZvRi9CR1F0M29OdmU1OWlQeVhQNmJXOWpmOHVoQzdydDZaenZIbDY3R2pJV0RrTlBwZk9iNXB4VTFIdG5OczJUZVlheVg4TDd5WWZsZFBSSVdGdkdVZlVyVDNLSGE3bXVCSnMrZ3pQYlhUSk4ySzdhdklYZjBqRFZVbWZBZU5vZTlOczJsa3BhcmJ1NDdTbWlDOFNuNGlkK3RSZk1aY3dlQzVhV2Y4Z2k3NWJpblphM2VCWHhUeHR5d2tOTmJGMlNBM2xITHM3WGNvUDFHRWx6R0dYamNzSkRqYXhRSm9PcnlWSXgrdXhHb1Y4UmswbHY2M3pPaHdnMXV6ZG5GaytRWktqcFlqcm5nVHh4NC8vRVplU3E5eFNVM25PN2IwSzh4V0xWRnpieVEydFE4QWhWKzhnMndjUk9sM0t6RmJmVW44MjkyRUdGMWpzT2JzSjNQSko1aXFyUmppaDlCMzRRM29kUjNmRTVnNDhmcFNncWRjU002U3BWZ2N2dlQ1Mi8wRUd3M0tBK0cyWTdxanNmMHEzZnRJYVRtSnhwQXU3RkViejMzN013dW5Ec05MU1cvdlpLNnF5RitYVGVUVU9VUW1scERmQlMxQ0x0bkpodm5QRXpyeld2cGNkd1dDdWFaSjA3SWNXY09hZVErZ0czb3hmVzZhZzFEVzZENm9vNmJRVHRUczYrZzlieHBGcjl6T3dUWEhPcjFXWFZZdWdXblQ2YmZnZXFUTXovamhtWSthdjl1M25yMzMvWTFUMlY3RXpKcUoybEYzeGhwZjlZYlgrT0haZEtMbTNreGtuSk10Vjk1RXJmdU5lUHpaMjhrdkRLVHY3UXVKSE5JRFM2VzdGdG1Xei9mejdzSTdiUTU5YjVtTEhoT09UcTZqRG9vaUxDME43eEFEUG9NdUpDd3REZis0OE9hNXUvNVJmTkpta25ERk9JN2VlejNaQjZzQUtQcm1YWFkrOXlHaGw4d21RSmZOMWdkZmM1K3hnWjAzWFkreno4WDBtMzhqL2dFU1Zudm45d1Ftc2w1N2tSLy83elg4UjE1TTlLZ0VMT1YxeXZOd2VzRW10L3EzaGNabTVneXBpMDVsSCtiTncwN2V1Yk5mcDMvNzg4NGRWUGRJWm15b2xuM0tBblVJYThaR0tueFNDVGRxa2RMR2NHVHRPdnFQdWI1aldkaFFpY09oUjIrTUppUStncERrNXU5eWxyNU42SFdQMG4rR1MzTUtTUjdtL2lhVUFYKzlpWXI5K3pGWDIvQWZGRWY1cm9Nd3BVK0gxNHE5L25acWoreW5wcUFjLzZUK0hGdXhHN2kyK1cyWmtNYUloMjlEQUtKL3hUemtMbDlCM08wdjBXUEVCVEJpRUlVckI1SDNVejREMHFLeFZsYWlpUXJCTDc0dklRT1NQTForTlZhVENsMVlCSUdENGdnZU5LelQ2NmdDalJoVGpaU0U2TkVrRHNHWTJyTjU3dDcvRDJFM1BFU3ZzY09RZ2I2emg1R2R2b200Z1M3SzlyanI3aVI2Ukgva3FLdkp1UHdEYklBV0s1WnFLNEZoWVFRTVNDSjRZSEtYN3NuMWlKcnBjKzl6eEE4TlZoNkV0ckIwUjJNN0k2dXdvaWlIQlo4ZllORU5VMGswZEJKY3RWWHdqNDNaREEzWHNQN3dTVTdXMk1rckxPWlFoVWxacW5aUXVHNHRHcjJGbzYrL1FVVmVQV1ZyMTJMdDdPR01tOFRJZThaejRNNDVMQitjeXJaL2ZkcmtrREFYRk9BYkY5ZldZVkdSeWRxME5ESlhyS2ZxMEdFYWl1dVJISjN0SFJPN3I3K1lINS85TDVYN0QxT1hYWVJrczdWNFpmb21KcDZWbWxOTFpTWGVJV0ZONzJCOVdDQ1cwbklBK2p6d0FsNTVYL1B0aUtGOGZjbTFGSjV3RTgzN0pESHlwZHM0K2VRQ3ZoaVF6S1lIWHNicU9QTXhtRW9LS2Z2eVRiYmNjQ1BmMzNBanYveFlqazl3czJub0ZlaGlJUkIwV2dTSHcrM2REbVRZcTg5US9zN0RmREV3bVhXM1BrNmRTZXIwbmx3TEdZSnZ2Q0xVMnJWS1pObmNqbmJXbmtFZ3EzRVZsSFlMZFJVRjNQTFJOdTZjTzROeEVWMG8vcFJWakIwWVMyN3VLWEtCN0hvNzl0SlNUbFRFa2hTcytBOWF2NVR5MTI4bGZNSzlxQXhhVkgxSEVwRCtUd29PbXVnMXNLTzVVdFB6bGdmcGVjdUQyRW96V0RkdU5rWFh6aVhhQ1BvZVVaUmtad010TmV2S2pTdHdETG1Cc2YrNjNXWGVQYkdMVXkya3BSclI0V2l4YytUOEhadzRITUdWZTE1R0M5UnVlSTNET3pKZGRIK05iOHN6U0NJUzFDcWtSbnZORFYxUUVBM2xwVUJQd0lHNXRBcS9NSmZid3l2MkFpNTg2MlBBUWRiaUJleC9hd1hHRnhjQUVIN1pRc0l2VzRpekpwOHQweWFRcy9jRytnenZvbEhTcXIrRUlkeEk1T2g3R0hIYm1HN2RUK0NZV1V3WU13dlpVc1dPZVpNNS90MGNVbVluZFhoUGRESi90b3BpYkE0dmZNSUQvNnlDemVRaHpEcjBjS2hsV2E0VmhHNjhYKzExM0xra0hWMTBIeW9Mc2xsYUFDcDlBUE9TWGVyNzlnT0hPRmxSanRWcDVzdnRHU1NFUnpJMUlaVDdab3h2T3NVckgrZFRsVENJeXhOREZUbldXb3ZLLzVIQzNKNU12ZSsycG9DQmZQQXI4amQrVDYrQmw1eGVLYzdhenBGTkJVU21Ec0NSdnhPck5nYWZBTGZwZU0xOERzOTdpc3g0SFdGeHZwUituMEhjWGJmZ0hkV0RoajNwRlB3OEdvcDNjZXpiZmVpbmUxekRweGVoc1VWa3ZQQWhFWDBpTVU2ZGpDNHdDbS96UWJMVzdTRFlZT0x3cXg4RFEzNzFmWWVtam1EWGYxL0JJRTNDZjlDRmhNU0YwblBPTERZOCtTL0M0eDVDeWxwTmZsRWlGMS9vTXRteVAzZ1ZvZWN3ZkVNMVZKekl3eWY1S3JjcGNZZ0R5L1lRUGlZRm9TYUxCcE12dmwxMHZ2djFUdURZOG5meEZjZmlIVGVJME40UnhONndnTU0zUE1iUnlDY0o2ZWxIOWQ0ZkVIdlBvTmVvdUE3T1ZNckJmNjBnYU54SXRGUlNYMm9uT01ibHMrdm9uanJETDA5ZVQyYnBTR1o5OXVTZlZiRFZkNkN0dFJCMnFpZWVlT0pLUVJBU3UrN1l0bE5sVXhGdTBHQ3hPN0RZSFZoRkxjT2pYUjBNanVXZUlzK3FabWhzS0RnY3FQVytKSVg1dGpsTmRIZzRzWDYvZmJjT3Npd0FBQ0FBU1VSQlZBTjZrOG1FMHluaDU5YzlmczNTMGpLQ2c0TlJxVlRuOUJoclFTSHF2c1Bva1J6ZjlKbDNsQkdIWFVOby85Z09WQjRuVmJ1MlU3UnBNN1dsQWdNWFBVMm8wV1VtcVVNVGlCazNnSksxNlJUL2ZBaDk3MVRDQjhiaTFYTXdnVUUxNUh5NUJqTkdrbTZiamFGSEFvRnhqUjBaTlJndnZnanpzUXdzSlNZQ2hxYWc5UTdGbUJwTHdjb3ZxY3F0cDk5ZHQrTWRIa1Y0Y3JQNTZSVVo3M0dPcnNFM2VRdytZaVcxV2Jtb0l4UHhqd3hBMzJzWW9VWWJwNzVLeDFRZnhKQi9MaUlvMUVWRzQ2ak1wV2pUWmtwKzNJY2hkUzdKdDE2Q1NnUkVnZHFNSFJSdDJVVGxMMVVrUHZnMDBmM0N1cVpsRFJ1UDJseE0zUzg1NEJkRllHd1k2ckFFWXNiMHBuaE5Pc1UvSFVEd2pjVTRiamc2Z3l2TzZ0c3ZCVU9nZXg5ckFnZ2I1bUtVTm1jZG9HalRKc29PNXhCOXk2TWtqazBBNlBDZVhOQVNOR3dvV25YN1l6VDBIa3pvZ05nLzUwdmY2VHo2OU5QLytCbFhFTUhhK0s4Z0NIYkFLUWlDSkFpQ0xBaUNMRGlkam85RVViem16ekk1dnlVZjI3bmljRk9nNEUvcHBMRllWdXIxM3YrbExSOWJBeTM0MkVSSmxHVzVVcGt5QlFvVW5POXdPQnkxSGlhbmZIcGZtNEFveTNLRk1tVUtGQ2c0MzJHMVdodkxsVm9MdERZQ1RuUTZuZVhLbENsUW9PQjhSME5EUXgwdGszSlBHeDBWN1haN2lUSmw1d1poWWFIZENod29VS0RnOUtpdXJqNmRLZG9rN0JvelBFU0x4VktxVE5tNUVteGhpbUJUb09Bc29haW9xSzYxUUJPRU5tVlZzaUNBV0ZSVVhIUkcwck8ybHR5S2VoeW5JMlJ3dHRJUUpSbUhVMnI2a2FRL3o0TEk3bngwdVIzV2xkTVZ1elY5TGlrYldvRUNnSXlNZy9YdVIwTnFGbTVDTzQrUGdIcnc0TUdsa3VTMDRPb0Ewem1rZXU1NlpRVjc3VnJDdlp3VTJ2WDgrL3BwakFqVEExYWUrK2hidnM0cXAxUUtZTXRUVnpYVkNuNjFialdQN0NqQXo1MmdNL3JDVWJ4d1VlSWZmelZxOXZERnBIOHo0K2NuU0I5d0Q1TU9yMnBxNUpxLzVCNU8xa3lnbi9FQUI0NGtNUEdwdVUySGJadVFST3lIaHlpOEo1blFwM2ZUcTU5YTJka0svc3l3M0gvLy9RMGRtS0l0L0cyTlQ4c3BvR3RTUnRTd1lOWk1rbnE0MHRwWGZyZUtSUnNPc25yZWNFREY1SkVYY3V0RU14UGZiTnVsZk9xRUNidzRQa0ZaSWdVS0ZIVFA2cEhsdkZZQ1RQTFEzRnJxYTRLQTZEcEc3Z1pOcTFlVFVBUG9HZVNQcGFuR1Q4MlFYbEVFNjl2WExxcXJxOWh5Sklmc0dzdWZhRWtFVkY1ZWdJaEtyMjlSSEM2cXZCQzFJb0pLaGRncTFWelU2MEVFMFV2djRqbFdvT0JQREtmVFdkQktxTFh5dFFteUlBZzBCZy9VZ0N4SlVzNFpPYm50SnQ3Ym1jV2NTWmQxK3FjYUx4MzJrbkpXN1M5aDYvSjFUSjh5aGNjOTZHSCtzUEMvZ011M0xnSGcwdDNMVzN4bHZIRXhybGJGMDJoTnhUanF1MTBBOVBoNGg3S3JGZnpwWWJQWml0clIyTnBOK1JBRVFWWURzdFBwek82MllKUHN2UDdGYWh3SnFTem8zem5OeXJRSmFVeHovMzlaN21FbXZMZWQ2eS9vU2F4R1dUUUZDaFIwalByNitxSjJUTkRUK3RsRXR6UTgyVTNGa0U5WHJXYXJHTWNyVS90M3U5VlZhSFFrVVk1NlRpbjg0QW9VS09nQ1NrdEx5K2lDajYzUkhCVUJ1YXFxS3F2cmw1QkpYNytleitwQ2VPZktGUFJpMTQ2cHJEYzMvWloxN0NRRittRDYrQ2dMcGtDQmdzNlJtWmxaNFNITXBFNU1VUVJCRUx3QnJTUTVpd0d2VHE5Z0xtYjBvaStvMVhuaEpib2NkZHJRWG14Zk9BR0FKOS8rZ1BSaUcxVm1CLzU2TDVJR0QrUERHUU80NzVYMzJPUHd3Vjhqa1ZjcmNlL3NxY3pyRS9LYlQ5QnZ5ZTZoUUlHQ3N3S3JJSWpYNG1walVJK0wyYU5PRUlSNjkyYzJRUkFjb2lnNlZTcFIxbWcwc2lBSWd0NHQyTFlBeWVkdWJCSmwxZldZblFMaEFiNTQvVTRKK1lwZ1U2RGdmd3VTSkdXb1ZPcEZ1Tm9ZZUFvMms0ZGdjN29FbTByV2FEUnlZNDZCTEVsU3BpaUs1MUN3aVlRRytDbXJwRUNCZ203QlpyTmwwZGEzMXRySEpudVlvWWlDSU1pQTdIQTRNcFVwVktCQXdmbUd1cnE2M0hZRVdwT1ByWFVPVzFQd0FKRE5adk5oWlFvVktGQnd2dUhVcVZNRnJRU2FrOU9rZkRRS3VjYVlwbno4K0FsRnNDbFFvT0M4dzlxMTYwcmNnc3ZwSWRUYXBIczBtYUdpNEtvOEFPVFUxTlJ5U1hLZUFIci9wcU4rNTlLMm4xMXdOYVRNVTFaVWdZSS9PV1JaL3VYUlJ4ODF0elpEM1hSRm5wcWFoM0FUbTRyZ1pVQ1NKR212S0lxOS84Z1Q1VldUaTZvd0U2cTcxNVRXNzlRcFJNY0pVQ3NzR3dvVS9GYXcyZXlIMnpWRFpTUUVXUUpCUnBaQmxtUkJsaEdjSURqa3B1QUJnR3kzMi9kMWZpa25Pek1PczJqbEJ1NWR2b24zOStWaWE1YXZaT1hsOGVtMnZieTY4U0MxclczbC9CeWUrWElqOTYzWXpFZVpoWCs2UlNyZnQ1bXhUMzdSNHJPVDI3NWwrcjlXdC92M1A2NVp3ZWpaZDVFODYxSDIxbmg4NGFobDBaUC9ZTkFWZDNQSjRxOS8yNXR3RkhQdFRROHk5SXFGWFB2R0QxMCs3SVVuSCtHL2U2dTZkYWxsLzNtTjBkZituZWdaejNBMjJWQy9XN242LzdOMzduRlIxZm4vZjU0ekY0WmhHRVlZWUVSRVJGSkRSRU15SkRVemM4M016Rnh6eTh5MXNqSXoxM1ZiYTExei9mVTF0MjI3bUd0bWRqTXoxOHpNVE0xWU5EUFh5c3pJQzVrUklSSWlJZ3pETU16bGZINS96SVVad0d2cVZzNzc4VGdQWmM3bDh6bm44em12ODc2K1BwelI3SE0zc0t1b2xCTXRLTC9talpmSkdUV1pubVAvU2NWNWUvQXU5dTByeHRhTW4yLzVpMDh6NS8xdnoraEtCYXRmcCsrNDZhUmQrd2QyMjg1aEZ4VWJVNmJQNDREOTNKRUlIcmZhRHJaaWhnYjcyUENUVFVwSXlGSlQ4QUIvWk5ScXRlNDZkZWZyV0xPcm5DNnBIYmdob3gyYnQrUXphMnVKYjJjREwzLzRCZnNyanJCbzY3NFFZRHRXZG9EZnZicU51TGJKREwwMEdkbmx2dWlBemUyb3AvUm9iY2h2c1IweXVPdnFMcTBjWGNmc2Y3N0h6UGxQc252Vi81RWQwN1NuL0xPUGVMazhnWjJybjJYOXd6ZGUySnRRVzFqMnl0K1pOeXFMR3J2cjlFSDlhQ1ZXdStlTW1ycjFuc2xzV3pnSmRhMlZjL0dxNUc5NGo0SUR4eml3NXh1cTdjZVovL0phcWs1bkd0cExHWDcvaTdTNk9JaTltQmt2RnJKczZiUHNYdlpITE9mdHdkY3ljZEpjaXBvUjQxaXJxNm11ZDUzUmxRYU92SjF0Uy85Q2txdnV4RVN4WnlHRm05YXlyMDBXbmZYbmpvNm1xUGpRRDgyMHRXQWZtNUQ4NE9ZRE9GK3FoMUFIMjZtalI5K3lhL1BtQWh0dzRtSW4yY1RqNDY4Ti9ObkdmcFQ3ZHY4QS9WTUJQZjgzWVFUVWxyRDI2MDlEVGx1eGJSZlhEUnJJdmJsSkZ4V1lPWTRmNXNtWDExSmNyMlZvdWk3a0M3enN0YmNvc2lwWUxzME9PV2ZudHYrdzVzdHZLYXgyczNybFcyeFRSVEx4enB0SmliU3orTVYzMkxYM2F4eFZHdVk4dDR6WWpwbE1HOWJ6WjNHdmJsc1ZpMWZtcy92N0NoU2RrZEUzM2NEZ2pQZ21jQ3Y5aG9mbXZJbE5uOENVMzQrZ2E1eTMwTVYrL0RBTDN0aklubklibWJsOW1UcThGNmRLZzFZYWpyTm8yWHZzK1A0WXNZbUpqQnM5Z3V5MitwTy8wQU91WXRuS3RiejhTU0ZibERVOE5QNG16S2Z3TEd6NVlCMzVYeGRqclQvTUU4OHRRNC9NcldQSGtORkdKdi85dFd6Wjh5MWxqZ2FXdlBRbWVsMGMwKzYrRHRNSnI5YkkwdGMzVWVPcTVxQTlnYUdkbkt6OC9CalQ3NytkakRnTnV6Ly9oQlVGZXlpdmJTRHQwaDVNSFhNMUpnM3MvdTltVnUwOFNJbTlua1dMbG1IUlNBeTk0VWJ5VWcwK0JiNktKeGNzWnM5UkdELzJ0d3k0cE0xUEdFUTd5OTlZdzZadmptRHBlQWxUYnh1S3hRZFVaVVc3ZVdMRlJ5aHRraG1lRlk4anRoUERlN1FMV0hLTC9sM0FyVk9mRHJIdVZpeC9CMk5xZTlaLzhDbTZ4STVNLy8zMVdIeDFtRFVsKzFtMjMwbU85a2VXRkJTUjBPa3laazY0Q2owdTFxOWV4Nm92ZnJDOXNXSHJrV1phbWdkUWhOY2M5Vk9EQzBsQ0tJcUNyY0dEcmRHRjdITzZDVUQ1NktPUEZDSEVqak41RHZzcnEraWNkS3JTS0JkN1MydUpFY2U1Yy9GYjNQcnlCajc0b2VaaThCQXdmZHBzRHVxN01HbFlOc3ZleVEvYXB5STdweWRkdFVkWmxCK2FRcGpjSVowaHVkMHdTUkhrNVdZekpLODdSZzJBaHQ2OUx5T3ZjeUlHY3lKRHJzeW0vNlZ0VDlvRDY2RUR6Rm40SnJPYmJadUt6djNpWk03cUNxcTFDWXkvWlRoais3Vm42b04vWVh0Vms1YTI1SjB0REJvMmhOeW9IeG55aHhleEF6UWNaZFNFUjZtTTZjeVVXNitoWk5QclRQLzMxNmRzYThuOHAxaC9KSnBwZDl6STBPNEpWQjF2T09VNXhRZjJzK09IT3BMajQwblFPZGoweWQ0V3BsMXpTZXQ4S1VONlg0Sk9ZNlQvbGRrTXViSW5DVHJ2aTVuZTlWS0c1S1NqMHhrWWVHVTJneS92Y2dvYTZrYVd2dkltY3FmZWxIKzhuTVY3dGVSR1ZmREV1MThCY0xDa2dwd3I4NWcyZGdnY0tHRE1zNXNBU0VycHhKQXJNNGpWYU9qZE81c2hWMTVHU3BzbTZGKzk3aitrOWVyTHNJNkMwWDk1aVovQ0xmSHFNLzlnZm1FOUUyOGRSdXlQWHpENHJ5dTg2bEZ0TVVNbnpTY2w5eXBHOXpJeWJmWjhWbjhaWk5EYmZtRFRnU2o2ZG9zT0FiWlZiNzdCak5jL1ovU282NGl0M01uSXVVMnVrNW9maXBqOTVIUE0vMjhOSTYrL2lsU2RDd2RRc0h3SlU5NzlqdHQrZTkwWFRwZGJhY1VFOVp1aGlpS0VrUERxYlkxdUJZMUdUWXhlRzRpS0JzRE43WGJ2MEdnMGcwN25JWlIrdjVmbjkzcDRjZktscC9vTVlITzVXYi92Q00rUEdZYXQvQnNtdkxhUmpnK040ZGRNRHE1VTdHWEY5M0hzZVdrZ0ZobG0zdDZmVVIvNEg3ZE1ScmNNNU1PNzRmdlE4eXp0TzJCcHI4T2dpU0NuVndhWkFhMUNRODhlR2FqTGQyTW9qNlJ2ZHNhcExVZU5sZ1J6U3gzQ29EbjNOVzM2bEV5bUQ2L2hzMisrd3laTVpDUTQrR3hmTlhuOXZWcmJtTnQreStEc1M2RG5IYno4MW4xc09UeUoxRDBGN0V2c3c2clJWeUFEYys0Y1NzYlRXNWwvUy9lVHRsVjkzSXErYlF4cHFSM28yU1h0dFBvbkd5ek1lK1ErWHA3N0RFTm0zQWRGM3lPZndtcEs2ZGlKbERnM1dtMDB1ZGtaSWFabWFxZExTSTJwUnhjUlRWNTJ4a2swdGVEdldSeUQrbDJLODBNelNxL0xHT0NwWjlVWDNvL01xTi9lUlBHM0J5bjZzWmJNcnFuTVgxY0VEQ2FoWFFvSjdmUVlOVnF5c3pQSWFhYVlEaHgySFNQN1pNRGwwY3hlT0k4U0oyU2NWZVZmRFV2WDcyZm1xNCtRbDZJaHI5TTRsdlNmeTI3N3JjZ2ZmNEl6YXhEVGgzaXRnd2xYZjBoaDhFZnR4ekxLWXhKSWFVVUR2dmZPMituZlBZYitLV05ZK0p0RkZEOTZFMm0rNCt5R05CYlBIT00xRWZNQUZKYS8vekZUSmovSFpSMjFlMW94UXoyQVI1Szg0Q1lFSUNIOGE3cW8xU29pSXlKUSszSS9oUGNnSWVycTZqNkxqWTA5NVNNNDltTUo5N3oxRlhQdUdFSG5xRlBaMUdyMGFoalcrekpTalpGZ3pLSlAxSFkrSzdmL3FvSE5XVk9MclUwY1p0L2pzY1RHQXhkMlVUQTVRb2ZGM05JME1lcFBIZDFkdHVCSlpxN2REOGc4OGR4OFJuZUpQUG1IYmxjK2cyYSt5NUJCdVNSRXFhbXllM0M0bS93L3lXYmZ2SktOV0dKY1ZOWTBJbGRXWWozNERTTWZQQlE0cm5mSFMxSGdwSFJZOTk1L1A0OHNXRUgyc05mUkpYWmsvditieXNDT0p5L1pTK3ZVQVlBaE4xOVBFbURzMnZIQ1R3cFpqVm9HV2FWQzFraG9aUlgyUmdFME1IUEtJMndScVF6cVpvSGpWVGhjcHhlQk54dDk5NjFXb1ZhNVVjUloreEtvckRWZ01mdElFaU5OSkVUWktEOE82dG9hTE9ZbVd2K0UySmpRanppZ3lGSXJGOVdRbE9BN05pYVdCTWxLcFIzU2ZGMU83cGpjek8vVlNFVlZJME1zSmc2VWZGdmNHcWdGKzllRWQwT1NaYlFvMURjNHNOa2RoUGpZQUdYU3BQdDNyRmp4WmkwUWM2TDdyenQybUR1WGJXUHltQnU1eXFJL2pTZW1vV09pQVpmYkhYZ01MbytFUnY1MUwwMm5qVFZoUEg2TUtnVXNNbFJVSGIzd1ByN3FvNnovNlBNV3p2Y2hwbFF5MjBhZjlOeXhrNmN6ZHZJSjdrMmp4dUVLRFFhc2VtY0RJeWRPWmQ2SVRvQ0w0aTN2aE93dnE2b0N6S0JZcWFqVmtSUWJRWEpDQWdsWmJkajQxTmdUYURncVpMZW5SVVRTMUw0ekMvOCtDL0N3YlA0L21QbmFGcmJQSG41YXo2UnJ0elBNYUpJbFpNVnp4Z0VNbTdXV0tyc2cxWElhdXR5UGUxbjRUUnlsSHp5SUFTaloralpQZkZFU2RJQUUwcG12N3VhMDJ5Zy8za2h5dXppYWtjK2pWU2s0Z29kUWJTQWh4a1pGbFF0U05HQ3ZvYkxlUUZJYjBKbmpLZDNXRlBNdHF6Z0tRZDhSWFdJOENjY3JLVmNnVFE1MVE1VWZxWUVVRTlSV1V5bU1tSU1nUTI0QmhoRll6QkdVVjlUVVB2cjRNMlVuQUxXUWtpclpWM0VRcWRQU1Jxc1JHaFZlalMxSXhNcVZLOTNMbDcveHNTekx3MXAzbDlVeCthWDMwU1Yzb2Zydzk3eCtHRlNSSm03dDZhWDUvdVNyUFJRZnE2TFIwOEE3bnhTU250aVc2OUxqdWJIWHBVd28rQzg5alRuVUh6N0k1NHFGdjdhTCtGVURtNXlRd2EzcHg1anh3bVltWDJIaXNUYytob1MrWHNDcFBjcTJmWWNwUGZBajlxTnE4dis3RzFOQ01qbWR6aTJWazZsVGR4Yi9yZnM1djdlczd0MG9ldWtkRm1mcFNVMXV6K0FlSFVocGw4Q0tyVnZZMlZWaTM4Y2ZzUDRISlVRalgvbkcyd3hPR1UzbHArOVQycUVmZmR2SzZFMERTVnYwQ05OZWE4ZXRWNlJRV1ZMTUhuc2JIaHFaNHowcHFoMEQyaDlqenZNYkdOekp6TUNCbHhPcmhsWC9YZ1h0dXRMWnJHYm45NVdrWjE1ei9nWlNuMGhYZFJrTFZueEVYdHNvY2k3UDRYUys1eHZmWE15WWRSNXM3ODA0OVJKd01mRWtPYjVqMlVkN3lORTdlT0tsRHduTmxUZVIwZDdEb3FVYnFleG1KaU1yaTdRMnA3WTNDemU5emVWemQvSHRaODhTdW94U0RQMTdSUEhVb3JjcDcyVWhMNjhQeVFZVDQ0WmV5bVBQTGlYMnp2NXNXL1VtdXY1WDAxTVBjcjkrSkQ4OWsrbXZwWkFUV2NXcm54NGhOM2h3amVrTTdsakw5cUlHMGpKQ05mdEZMeThqTS9JM2JGKzFrdVJyQjVCK1VrVlU1dGJyKzNIUDh5OTlldkQ3OG1BejFCMENic0svTXFXdlJsUW8xRHNFa2lTanVEMm8xR3ExSklSQUNDSDV0SC81NFljZlRsQ3IxYTM3MlJRWHg1MHFFcU0wT0Z4dUhDNDNqYktXM3NsZU0rT2JIMG81MUtnbUp6VWUzRzdVa2RGa0prUmpUa3lpbTc2UkRWLy93STlLSkErUDZFY25neHAydmRteWpiYmRJYW43ZVptampkWGxLSFZIMGV2MVozUmViVzB0MGRIUnlQS1poTEpWRE9pWHc0R2RPL2pQL3FQY2Njc3dPcVVra2R1NUxiYUtVbFordklkYUtab2VTVkdVVmxSaDE1ckk3aGdNYkZwNlpYY21xaFVOUHlvdWdaeU84Zjh6ME5hWlV4amMxY2dYUlQ5UXI0bWhkM29pR2QyekVPVUhlUHVqUXFJdTdjdTkxM1NrVTNwblV0cDRQMkRYWDNVNS84bmZ6QTlTSWd2K2ZDdUprU3JRUkhIemIzTDQ5c3N2V2ZmSlYxUTZ0UXpzY3hrZDR2UUJOOFkxQTNMNDhidGlTcW9hNk5HakM5RnFzTmRVc09tVFhlUi9mb0NVN0VITXZqV1hpUE8xNkkyazR6Zjl1MUY4c0pqaThtT2tYWnBCZkdUUW9HZ005T21SU212dmEzeFNDbGQxVHdreXExWDA2SkZPSkpEY3NSUEpNVnAwSmpPWFhaTEc0T3kyckZ1L2xjL0xHbmhnd2syMGl6ZlRyMXY3d0F0L1ZiOWVWSlY4ejdlSGo1S1lrazU3azlZWFhPaElla0pVWU03a1pIY2gyRHNVYmJZd29OY2xOSGNrOUwzeUN1b3JTdmp1eCtPa2RlMUdnbDZpWisvZTZLdS9aK1htTDlFa1o3TGd3WnVJMWtpZ01YTFRvQ3dPZkYxRWpiNDkvUklhT0dycXlnM2RMWUg3U2hCVkxOaFZ6MjE5T2dhQ0J5dmZmSThieG81aWUvNFdHaTBaTEhqZ0JxSTBUYzlPWnpMVE96MDBTYVpqOTU3RVdnKzk4ODcydlljQUo5QUlPSHovT2dHWEgrQlVzcXlvSkFtMVNrWlJCRTYzQjZjaUllbDBPdG50ZGt0Q0NGa0lvUkpDYUV0S3Z1K2VrcEt5N1lLOElSZTRwS3IyMjg5eGwrOGpMdTdNS2c5S1MwdEpTa3BDSGE0OENNdEZLa1hmZkVkcXAwNm9uY2U1OWZkL1pPak1weG5mUGNoajVhcGgxTDFQTWVmWjJXUVlaTURKcUJ2R01YYlJDa2FjR2YwaDcrUnZ2Mi9rSCtiOVNDZ0htMDJDZWlRYUpTU25KT0dSSkVsUnk3TFFxbVVSb2RVUUVhRVIvdUNCa0NRSjRZMHZDRUJKVGUxWXBDaWVQVUJtZURqREVwYXdBR3o5Y0EzalpwZWhTSkVNSFRXSmNkMmJ1ZUUxSmxhOU5DZkVMNWpldFJPeFo3aGdreUxFdnBGL21IZXNtUm5xcG1XNmg1QjhPV3orSUtoS2tsSEpFbXBabGdueXN3WEF6ZTEyRjZqVjZsOGRzTGtqWW5ESHBrRkM0cG1ac0xVU0lqNFZOT0ZsdGNKeWNjckVPUzh3OFF6UG1mZmFXMmZjVHIydC90TVQrTlk4U0pJWDFDUUVrb1FreTk0SXMxcUxTcU5GMWtZZ1IrZ0M2UjVJa3VSVDJyeUlhTFZhdDhUR3hrNzV0UTJPUjJmQ0pVZEJ3cG5weG8yVkxrVDhKUkNtQmc5TFdNNnJmRk82Y3graGFSNXV3Q05KVXBER0ppRkpzcEJrRlpKS2c2elJJbXQxeUZvZHFnaDlrOGJXTEo5Tk1admp0eW1LNXpEUTdyemVSZmJ2V3Y3V3RudDRkTU1TbG90UWhCRGxsMS9ldTdTWkNlcmZmSlJGVWdocnJpekxnVTJsVXFGU3lWNWdrMlZaZUR5ZVlGTlVBQjZQeC9PQlNxV2FjRjd2Sk15N0ZwYXdoTVVuRFEwTlcxdlQxb0syRUI0MldaYUZIOE84d09ZRk43azFqYzJQakhWMXR2d1RkYURHYXVXSFk3WVRzd040UXRPZkZVWEI3UW5kZnZXaVZMTmk4U0lXTFZyRSt1MUZ2N3JicXlrdll2V0s1U3hmZHlFQzZFNEtWcSttMG5FUnZOMk9LdGJuZjNiQzNmdTJiNlN3TkxUV2V2ZVdOUlJWdEY0bFdsbThrNVhMbDdObXkrNW04OVBKWndWcldiNXNHWHRLbTdoNFBpdFlUNVh6ZjNQckJ3OSs5MVV6VUhNRDdsQXpsQllhV3hPZ3FWQ3AxRjVnODI4UTREWVNnQkliRzVzUEhBNTlHRFllZVBwVnJsKzBqajhzZTRlK1Q2M2l2NVgrQXVSRy9yN3NiZkwrOWdMcGMxWlNGampKeFVQL2VvMis4M3piNHk5ejZjd2xmRlFqZnVVelZNWmdNRkM2NHkwV3J0N3hpK3U5dTJRTG82YzgxZnBPNng0RzVWM1A5cUpTS2lwck9QK2ZLVHRQVEh1UXdvdUFPMkhkTTM5aS9iNFRFNld0WC93d3E3ZVhoZnkyOGRXL3MrMkF0U1ZHbG13aWQrQ2Q3Q2t0bzdJNjlPR3RuZmQ3N24zaWJjcktLN0RhbTJvN2JIdldNSDMreHYrSkdkcWpSNC92ZmVEVjNBeHRLcVh5RllZR1k1Y1gwSm8ydFUrRms1clNQaVFoU1NoQ0NBVlFQQjdQQnBWS2RWZlR1NnJobmxFanlHenZMUk5admY0OTV1Ui96WVpiZXdNcUJ1ZmxjdGVnQmdZOS8wVlFselU4K2NEdkEzK1ZGMzNKeU0zSDZXT1NmdVc0Wm1MWXJXUFJWWDlDWWNrSnRKN0tNbXJjT2xLYk02UW9Uc3BLeTVBTlpwTE1vVFdRRGxzMTVaVld6RW5KR0hYbkthOU9VWERVbExGcCsxZTQzVzZRWmRUKzVHUkZ3VnEwazFMTFFPYk5uTzZkV0tkMVRVQUdlMDBWbFRaSVRXNjZaNmU5aHJJS0swbXBLZWlDTCtaMlVGSldpU1hsREpkdVZKeVVsWmFqajdVUWE5U0ZkS0t5ckJTMzNreFNyT0gwQU41aHBjb0dsbGd0WmVVMUpDVmJtdTdYTjA0NmN4Sm1RMmc3MVJYbFdKMXFVbElzSWM5SEFSUzdsYklxRzhrcFNhR0p2YzVTNWkzWnljTGRyN1I0ZUJXbHBlak1MV20vRkxlYjZVcytRYTJXVzFoSnhUdDJZT2g3QzdPbVQwT1cxU0huYk4rK2czRlROak41Y0doKzVzRHhrNWlhL1FDbFU0YVFjZ0ZqWlhhN2Zjc0pmR3VlSVArYUFnRWZXOEFNOVd0c2FyVUt0VnFOMm1lUEVteVMrc0tqQ3VDcHFhblpFQmNYMXdSc1JKRFp2cWtVS2lVMkJzY1JmNkd6bXN2UzJrRnR5VWx2NEsyZGV4bVdmVFVYZFh4UnNURjMvQTI4V3VnbVJWOURsYkV2RzljOGowVUg5cklkREI1MEc3cjBuc2pXTW1MNzM4K0t4OFlCc09YVnYzRFgzUFZrWmFaUWV1QUFNNVovenFnc3d6bnYzaE9UaDdOKzV3L1lEbFF4YU1oMXFPVkVGcTVkUm1jZFBEWnhDSnQySDZibVlBMURobHlIbkhvVkc1Zk1QQ1c0amUvZEJuMy9DV3pOMzRKZWRqQmd5Z3M4TVNHUHRmTWZaT3FDcldSME5sTlUyc2lyYTliVE44MklyWFE3Z3diOURsMTZGZzZIaTVvZ2pxRXhtWkdNV3RYQXFLNVFzMk1KWGFkK1NzV09Gd0U0c0cwcG84Yy9TbXpuTEp4VkpReWE5aUt6eC9UR1hyNkwwU051bzhxWUJsVUhTQjN4S010bmp6MXB2OGZudHFYRW5FdnBycy9vbXRzSGEvRlg5Sno0QWdzbURhUnkzeVpHanJrZmJYSUdOUWYzTVhENjh6dzVjUkJRd2Npc2ZsUW1kQ2FXR2c1VW0xaTUvbTJ5TERvMlBuTTNqNnc5UWl5TjJLdUtjR2JjeWZZVnN3THZRa25CS2lvNi80YVFJWFZXTVduRU5XeXJTY0NFQTdldG1zRkRmSXB6NFRwR1RudVdvbDNibUw3OFc2WU9TZmFkVk1XVWtiOWo1OEVERkZmS0RCbXlHVXZ1TFN4NzdDNUt0eTVqd3B6WEtOcFZqcUg4TnRZOXBXUGNySmNZMTk5YkZvbXhKNE03bDdPcW9JUnBRMUl2MkN1eGI5LytMMDlpaGdacGJLRkJneVlUMUd1R3F0VnFTRTV1aDlsc2xxS2pvNldJaUFoWnJWYXJaRm5XU0pJVUtVbVNVWktrQkNHVWZVSW9vc1htckJQM1BmT1NXTGozYU9qdk5jV2k1NnczeGFGV3puSFZIUko1czVlSy9RMnRYTzhDYkVlT1ZJaERodzZkOFhsZmYvMjFhR3gwbkZXYkh6NTNqN2orankrSC9QYkRCMCtLeEY2M2lGcVBJb1J3aUQ5ZmY2bDQ4SVd0UWdoRi9PZTVlOFhWOXkwTUhCdmM3dTJYeFloWFByZjYvbmFLeGtiM1Nkdis4YVBGb20xaW9raHN0ajM2eG1lbjdIZkQxOHRGVEs4N1d0MTMvUE9YUmVLVjk1elJjN2lqVjVTNDVyNW5oTXQvL1FhN3FQMXFsVWpzZUpYNHZ0WjdIMSs4TVVQMHVuMnVFRUlSejk3ZFIvenU4VFhlOXI1YUlXS2tSUEhoajk1emIra1dJZDdhNyt2TGZ4ZUx4Q3Z1OUxiaktoTlh0NDhYcjN4UzVtdlhMWTRkcnhGQ0tPTFJtN3VMKzU3Tjl4MVhKVzdzMWs2OCs2Mzk1SDIrSWxHOHRkOHBYdnZ6OWVMMmY2d1J4ejVaSXJyOWRvNFF3aVorZjNrNzhmZjM5d2doRk9HcDNTTjZ0YjlVZkZIckhjL2EycWJydnZibjY4VHR2dnZZOFBTZG9sMi9lMFc5VUlSb09DaDZ0V2tuUGo3YTFONWJmN3RGM1BqdzBwQStmUEhHSTZManRkTkVvMUNFYUNnVlY3WFRpRWZmTEF3NTVzL1hkeEJQYnlodE9XL2ZuQ1Y2M1BGRXEvZjJ4K3M3aU9jK0xHOTEzK3NQM3lodStkdktDL1plS29xbkNCZ05EQWNHQWJsQU55QlZrcVFFSHhaRnlyS3NVYXZWcW9pSUNEazZPbG95bTgxU2NuSTcwdFBUeWNyS29rK2ZQbHg3N2JXb1pWbmxqeWhJc2l3TFJWRWtYeERCYjQ1Nm5FN25lMXF0TnBSMFRYSHhyN2MzNEU2L2duc3lUcjg4YWR2Ty9jUmYycFd1T2k1cTJiWHJTM3IydlFhakRLQmx3T0E4SHR1NUd5YjJKYk4zZnc3TS9UUGo1Ukw2NXZWbDVNaWgrSW1rQmd6c3k1eTdidVRBeU92b08yZ29RL05PenNsbTZYOFg1UlYzL1d4OGptUEdqZzJZWGpxZGpoM2JDbEQwc0dqdVg3elRxcXFJUGJ0MEtNQ3VuWHNZT01GTEdtREtHa0JQODZrTlh2ZUJiWHdtOTJadFhsS2d6VmlURWFoa3k5WUR4Sm8vWU1hTUQ3MDZqZHRCNGU0U2hxZDNQY2tWOVJnTWFqQWFNQmxpTVJqdE9PdzJzTzVqeTI0N2NzSHJ6TmpxTlJXZDdsTDJITFNSbmExang2b25XYmppUXlxdERtb3Fpa2tkZFhQZ2lqMXplNk1IMENXUm1sQkRWUTNnczhxcnE2c3dKWWV5Z1JUdS9wSzhBWGQ2dFRwZE1nUHowcys3VDlNWWE2S3E3TUk1Tkd0cWFyYlFzdElneEJTVkpFa0pyQnNhRWcwTjhxMnAxV2cwR3E4cDJzd2NGVkpUdHE0Q2VNckx5OWVucHFZK0ZCVHlaTVY3Ry9oWTdzZ3IxMlZ3MnJYSFNpTXJzU09ncEFBQUlBQkpSRUZVZHhZemNzUkZsdUp4aHNYWkNiM0hzRzkzTGdYNUJheGUramVlWExHZGZXdm5JZ01Ubm55WC9ydTJVYkJsQ3pORzlXUDN3bzk0Wk1TSkMwUXFkNnhnOEwxL2IvSDd1Tm12TVcxRTFvVVBwaGhia2c5WTBub3hZb1IvN1lZYkdUVTU5cFNQek92Vjh6cnRGRVZwZXRGUGVxS2VBVU52b25lQzk2OFJJMjRrSlQzbDlBWlA5akZFZU9FVFVGQzBaZ2FQdkpFVTJYKzltMG5ycktkOHkwSW1MUGlDL0kzdjBUWEJ3UG9uNzJSK1JSTVVxZVVUKzBXTkpoTldxN1dWUHNnWGRLUnNWaXNtaytHQ3RiZDE2OGRmTlFNMTEwbk1VQkdhdHhia1cvTUJtK3hQYUdzQ3R3QlZlQ0E2bXBiV2FaK2lLSnQ4c1F2ZS8vQkQvbDFuNXNXYmV4RjVCcy83NkEvZjhJbW5MY1BUREJjVnJsbGkyMUpjWEJMeWxjM092b3pkMi82RFZRRndzbVhqZG5KeWVnWW1sU0VobFJHM1RtRHhNdzlUc1c4L0RwOEQyV3ExazU3ZG40blRadkhRK0w3czJYZmdwRzJiczRlemZ0MTdyR3UyM1RXNDZ5bjdyZFhwVUtxcmZIMDhmVm4yeEJUbUxzMC9yV096K3c2azZzQlhKR1gySmpjM2w5emNYTko4UVlYczNKNFViUEdta3RRVWJtRlhWVk5IWXMxR1NrdThrY0VkMjNZRW5xMDZ2Uys5bGM5WUdZZ2FLdFRVV0lFRUJ2UlA1bUNGTTlCT2RrYm5Wb0gyOUZTYVRBWm0yQ20xeGdhdWw1bWVodEVnVTFGYVNrTFhYblJOTUlCaVkrMjZndE8rYkU1MkwvYnRDYVdLejg2K2pPMWJ0bmxYZzNPVWtiLzk0UG4zZCszWlEwNTJ6Z1Y1UDl4dTkrWVJJMFljQ3dJMkZ5MFRjNE55MTZTUVpOeGczNXBHbzBhcjFhSldxOVYrVVBORlIyVWhTUXJOelZHN3ZXR3R3UkExbUlZalBGN3dIVlpkQkFQbjd2ZStBUEZwZkhMdjFRRE1YdndxNzFjNHFYTzZ1WEhPUzJUMnVKelhidlJxQm05L3ZwOSt2WHBoa2k4cVhDTnorQVR5WHI2SnRLNXZrVFgwUHRZK05abVVRUk9ac3Z4OWNuS3VJa1ZucGNyWW40M2p2R2JYWnl0bU0vR1pqOG5zbWtKeDRXNG1QZktTMTNUQnpVUERlN0JMU1NmSjZLU3d4TTN5OVlOUHJtOW85U1FsbjkzTEs2Y1BaR3J2WjhuSnVneWpJWlZsQmUvUTlUUXV0V1BUVyt4Tzc4d2o0MDdOTUcvTUdzSGlTUjh4c0dkM3VtYW1VMVZ5a0s2ai9zYXJNMGR4MXlOL1orWGczekZnNjRzNDNZTGtJRk4wM01TN0dUcStINXV5T21NeFJ5RGpXL3RCbmNTaTVmOWd6TGlyV05ZMUU2V3FqRUZUbjJmbW1ONDhOUDhWeG82OG5aemx5VmkwRGc2V0NaWnQzVXJPV1ZIZzZabjM2a3VNSG5NRGE1L3FpczVaU2FtdEhmazdWNUUxZER6bUo2NG5iL0NuNk94VldCTFNUdnVxNllOR1lwaDJHd2NkaitGZit5ZHIxQlNHTGIyR25MeHJpWlZkS09ZbW1wK1haOS9CeS9uRkZPK3JRRmR5RTZzZTB6Tmo0WHNNeXpLZS9ZUzFIMkRqTGlQTGw2VmZrUGZqMEtHeVQxb3hRVjBuTUVPRkpNbEIwZEFtVGMydnJXbTFXcVJ1M2JyUjBOQkFRME1EalkwT3FiSFJpY3Zsa2hSRmtSVkZrWVVRYWtEN2YvLzNtUEhoaHgvZUJyVC9KWU5NWldVbFRxZUw1T1F6cXhUYnMyY3ZuVHRmZ3ZZYzE0cldWSlZqZFd0SnNZUytYVTY3bGZMS2Frd0pTWmowMmhiblZOdGxVcEl0cUg4bEh3bTN3MFo1UlJXeGxpUU1PbTN3RHNyS3FraElTVWJiN0Y1dFZlWFlNR0l4dDJJQktFN0tTOHZSbVMzRUdrSWR1dFVWcFRqUVk3R1l6NEdCcDFCUlZncTZXQ3pCYVRtS2s5S1Njb3lXWkV6Nk0wdkpXVDdySm5hblBjd1Q0M3VIdEZOWlhvYk9sSFJhdE80L1JiWXZtY2FUcFRtc25uUCtYVVpDaUxLYmJocjU1M2ZmZmRkT0UwV1JEYkJKa21USHk4UG1sQ1RKTGN1eUlzdXlvdEZvUkVTRWxvZ0luWWlNakNReU1wS29xQ2dNQmdOR281SFkyRFpJUFhyMHdHNjMwOURRZ01QaGtCb2JHM0c1WEZJempqWU5vR3RzZER5aTBXaW1ob0V0TEdFNWY2SllpMW02cVlUeG93YitUOW92V1BVcTZVUEdrV0k0LzE5TnE5WDZVa3lNNlFPZ2dWRHV0WHBKa2hvQWh5UkpMa21Tdk54cmFyWHdBbHNFT3AwWDJQUjZQVkZSVVVSSFJ4TVRFME5jWEp6WEZQV2JveXFWU3FoVUtzbmo4UWhabHZCNFJIQ0psZnZRb1VOcjB0TFNwb2FuWGxoK1BWTEQ4b1hMcUc3Rmoyako3TXVvQVJkK3pWYlptTWI0VVduL3N5Y3ljTlQ0QzliVzVzMWJkalh6clozUXZ5YkxrdkNibno2c0NqSkIxV2kxR2lJaUlvaU0xUG1CVFVXUXI4MFhIWlh4eGtZRDBWRWxQZjJTL1c2M2E3VXN5eVBETDBSWWZoMWk0dFpKazhPUDRYOGdqWTJONjBhTUdGRkZxRi9OQmJna1NRcXdlUkNvRFExbDhRakdMcjl2VGFlTElESlNqNnpSYUFJSEJLZCtCQmZHK3dJSkhyeVZDRytIaHlRc1lRbkxUNVdpb3FKUFd0SFdnb01HbnRZb2lwcW5lR2cwR2pRYUxWcHRCRHFkRHIwK0FHeWFRTGpVcitLcFZMSm96dllCZU16bStBSWh4Q2ZoWVFsTFdNSnl0dUx4ZUhiMDdIblo5eWZSMWxxd2VhaFVUV2FvRjZ2VXFOV2FGdHFhd1JDRldxdlZvTkY0YlZTWHk0dUFicmNiYjBXQ2dxSW9BWEFUUW5nQWQzMTkvYi9kaW5KbHJVdW1YUnRENjVFNWp3QlZzeUozajR2eTR6WWlvZ3pFUllZcHRuL09zcnRnTlRzT1ZJSXVpWEhqaDZNUFA1S3duRU01ZEtqc1B5ZlIxdnlNdVVwb3Nic3F4QVQxNDViZnQ2YlRlUU1KMGRIUnFMVmFMUnFORnJYYTJVb1F3ZDFpb1JmQWs5SWw4KzFMSDV3N01USENrMW51aXVUcGNkZlRKeUVTTDIzUk90Nzlyb3BLeGNTV3Y5MkN2eVQzeUtGdkdiOXNHM0dXZUk1WEhxVnpyenorT2FnTGNuaU1XNVh5SFRCbkN5eWE4YjlwWDZ2VFk1QXJtZnJRRzR3SUExdFl6cUVvaXJLdlg3KytlMXJYMXBxVzFzTy9ZSXNrQ1ZtV1dna2ErRTFRdjdZV2ljRVFoZEVZZ3h3UkVZRlhhL09hcEUzZ0p2dTBOam1Rck9zSHR1UGxoOXo1RDl6MDV1b0hiK2VoakFqbTVIL3Q2N0tYdHVpOWU2NmgrUnJqYjJ6OWxPNTVWN1BzOThONGQ5SzFmTHA1TzE4MVhDUUQ2ZnZYV2dWbEZhSDc3RFZRWEVySVN1ZUtBclp5MkxvTDNHN09hUFZ2QmU5VUtTa0d1ek8wQTdicWx1MmZTREx5aGpCMjlGQk9GUEYzTzZ3VUY1ZGdkN2JzWEUxbEdTV2w1YlRZcFRncEt5bW12TW9hZnJzdllxbXNyTnhZVm5ZNEdOU2NCTllMRFNtaFVrSzF0ZUNnZ2Q4RWJkTFdvcUs4MmxxYk5pYmtpQWdkV20yRXp3SFhsTUdyVXFtRnZ5SWhLSWpnYXd6Mzh1WExWd0xmcGNURzRHZ01wUzJLaTJ5WlFHalFhbEg1bDdPWEFMVVdnK3JpR01qK0ZwajJFT1FOZ3VHRFlJR3ZPRzN4RE9qWkg2Wk1nS3plVUZUdC9mMmhNVEJ1TnBSc2dTRkRZUEFZOE8waTF3eTdmUnlFZTFaQXo3Rk43ZVF2Z0FGallIQXVqQmtMMlNPOHY4OFlDVU5Hd3NneE1DZ2JKaS84aVdicTJtZm8zTGtYVTZiY1E5Zk9QVmk1bzlTM3g4bVRFNitoNzlBN21EcjU5L1RNSG81L2o3MXNCMzB6TG1YODVEOHhmdVMxakptNU5QeUdYNFFpaENpZU5ldlJMMDloaHJZb2VQZVZUWW5nOUE0dnNFVVFFYUh6SmVrYWlJbUpJVFkyRm5Wa3BJNkdCcTg2NTNScWZMNDJkZk1JYWJCSjZnRThkOTg5MFhyYjZCR3Z2L3pwZDdOSFh6djhsRGQweDNYWDhNRHJteGhmdkpmcVl6WGNPZnBhTHJsWWNsM2RFdFd4Z2owK1ptYUhBNHJYdzJOYm9YQVhtTlN3ZGk0ODlCU3NmUXllWEFrSDE4Q0lGWkMvNHN5YTJya05kdTZHRExPM25jQ0hKUk5XellHYUhaQTZFWjZaQkdlVnY2NVVNbTNTLytPeHRkOXdhN2FaZmF0bU0yRGFZNHpZdmhodHpXNFdyTEt5cGVwelVtVlFuTTZBdHJwanpWSzBBLzlFL3NKN3ZSRG9kSWJmOG90UWpoNDkrdDZMTDc3WTJKcTJKa21TM3d6MTBFVC9MVUlqb2NHZ3BpVWlRa3RrcEM2Z3JabE1Kc3ptZU9USVNEMDZuWTRtWDV1R1prbTd3ZWtmSWFrZmsyYiszNy9kNlZjVW53NXQwWmJQdnFCU1orR2VxN0s1NS9KMnZKRy9rd0EvNWE5ZFpNR3RRWnFWVGdmYnRvQWVtRGNUWnN5QWpidGhUK0ZQYjZyblVDK28rZHZ4UzU2dk9zZVVBcnBxYjNyMzJUbi9DaW0wWnpBZzI5dEl4c0JCcUFzL3AxUUJqT24wVDY5a3pMRGJtZnZNSW5hWDFRVEFNN04zZnc2c2VaenhrMmV3WlBrNmJJbzYvSlpmZk5yYTkwODg4Y1FYelVBdFdHTnJrZUxSSE5SYSt0WjB2a2lvSVZCMVlMRWtJa2RGNmRIcEl2SDYyclQ0bzZTaHFSOHFFUVJxQ3Q0SXFmdVYrYzhjLy91QWprdFBIUUJvWk9XbjMzTGJ0VmZTSjlYQzlmMzYwczFWd3FhUytvc0UyTUJvYU9rTFMra0pJMFo0dDNIVFlOVVRaK2F6VTl3dDl4bFBVUHNjWU1vNW45RWFPWmFsMi9jeWYvb3R5Qlc3R056N2NyYVdlVFV6THhYVFI0ekk2OHpXcFg4amIvUk1sUEM3ZnJGcGEydi8rYytuSE0xTVVMKzIxdW9TZThFWUZGeGg0TlhXV3ZyV3pHWXphclVhMldBd29OZEhobWh0VFVtNzZ0YTQybnpnSm5ra1NYS3ZXYm5pVFNIRS9wUGZrZ3BEaElvZnFtcTlMNlNqbGtQMUVnYmR4ZnZWN2o4QURoUkMxeHpJemZWdUtVRjE4SG9qV0N0RGd3b0FDVVlvOVRIeWJQdnNQSGZTWU1ic0xxZWtPcWdYU1psazZmZXhaVmNWQVBzSzhuRm5YZTdsSkhQYXNMcjE5QjQ0akJuekZqSWkzVUZSaVZjM1BERVZVMWd1RW0zdG05bXpaKzlzQmRTY1FmNjFWbEk4WkVKTHAwSzFOYjArc3BtMjVtVStVVWRIRzZtcnE2TyszbzdEMFVCall5Tk9weGFOeG9YTDVVS3RWZ3UzMnkxNVBCNmhlTU56UWdnVUVJb1FlQ1pNdUxQMmhUckxhenVtWERjUFRreGJOUG42SzdsNzFYdDhzVE9lbXFvcWtyTDZNRFJvN1lTTFRkS0d3c3l0a0pNRm1lbmVLT2JRaDJEdU9COSs1SHI1a2JPeXdKQUVHemRDTERCaEl0dzFDQloyQmJNQk9KL1VkdXBVWnM4YXlxMDl1NkEzcGJGaSs0ZGtHaXc4dGVDdmpCclpoK1daYWV6WlY4NkM1ZTk3MlYxckN1bWZlenZtakN6a21oSnFFc1l3TDlmTC9YdGlLcWF3WEF6eTQ0OC9ybjMrK1VXbjhxMkZKT1FHMFJLSmxxQVdFV0QxaUk0MjBxWk5HK0xqNDlINS9DL1NhNis5U21scEtSVVZSemgycklxYW1scnE2cXpZYlBXbnkvcWh2ZTY2SWZwMTY5YXRraVNwOTBudnp1T2l2TGFlaU1pby8xbUM3cytOM2NOaGc0cHFzRmhBZDVxWHJxNEVSUWRtNC85dW9yb2ROc29xcWtoSVRrRWZuS0d0T0ttb0tNZXROcEdjRUVweGZUSXFwckQ4ZWtWUmxKMlptZDJmMnI5L3Z3TXZpMGU5YjdNQmRoK0xoL04wV0R3TUJpK1FtVXd4eE1XWnNWZ1NTVWxKNFpKTExxRkhqeDdvOWQ3UHBicE5temJVMU5SUVYyZkRicStub2NGQlkyTUVXcTBUbDhzYklWV3JWY0x0OXJOK3lIZzhua0N5THVEWnNHR2owMnExdmhvVEUzTnlZRk5wU0lvMWhVYzZTSFFHU0QxRHJTczI0WC9mYjdYT1FHcHJIWmUxV0pKU1d6MUhxemVTbW1vTUQvcEZKc1hGeGUvdjM3L2Z6YWtqb1FwTnE3djd0TFhtdnJVSUg0T0hWMXN6R3IzYVdrSkNRZ0RVQUdTejJZekpaQ0k2Mm9CZUgwVmtwSTZJaUFpZnI2MTFmMXRRMUNLdytJTEoxT1k5UlZIV2g0Y3hMR0VKaTE5Y0x0ZUhsMXpTZVg4elFEdWxiNjAxdjVwR293M1FFdW4xVVVSSEczenBIZWFBYnkwQWJBa0ppY1RHeG1JMHhtQXdST0ZOLzRpZ3FTSkI3VXNCVVlrZ0N2R1FFaXU4aXk2NEtpc3JYdzBQWlZqQ0VoYS9mUG5sbDVzSVRjWU5BSnRQVzNPZlhGdlROS3NIYlNwME54cTl5YmdKQ1lsRVJVV0ZBbHRTVWx2TVpqTnQycGlJam80bU5QMGpJa2hyMHpTUGtyYlEydHEyVGRydWNybVdoSWN6TEdFSlMzMTkvZklycnNnOTFBelVHaytrcmZtWDFHdGVOdVduSkRwUmVrZFNVdHVXSHBISXlFZ3NGZ3R4Y1hIRXhNVGdUZi93SnUxR1JHaDlLU0FCY3pTNHpFbzBxeUYxUzVMazJydDM3MUxnOEs5dGtESXp1NFZwd2NNU2x0TVVJY1RoTld2V2JHMU5VMnVtcllYa3JiVVdDZlZYR1BpNTFwcW5kMFJHUnJZRU5vQ2twQ1RpNCtOcDA2WU5ScU9ScUtnbzlQcElJaUw4NEtZNWJWL2JaWmRsZjJlMzIxOElEMjFZd25MeFNtVmw1Y3F4WTI4LzNreFRPNkcyZGlMZm10Y0UxUklSNGMxWkN3NFl4TWZIazVTVTFHcjczblhJdFZvc0ZxOUo2ZzBrUktQWDZ3T0JCSzAySWxoekU0b1FPTjBlNGZZb1FoRk5yQjkrZE83YUkzdnBzL21GbTBNNEhOd08zdnBvQjlOWGJPTHgvTjBjYVJUaDBROUxXSDZGNG5hN1A4N0p5Zm44TkxTMWtLWDEvTlVGdmxRUFh5VlVSRkRBSUxnZTFJekYwdmFFVmxRZ0FhbDkrMlQ4Z1lTWUdDTUdnd0YvSFdtdzFxYlJ5RGpkb05ab1VLbFVJQVRDMXprL3VCMDZlTUM1WU1OL2x3UUQyN0wzMS9ONmlaTXhmYktJc3g1aXdxclB3aVUxWVFuTHIxQUtDd3ZmTHlzNzNMeTZvQkZvREFZMUg2QXB3VFdoVFZIUUptMHR0QjdVR0FnWXRHK2ZmTUkraEZRT0ppVzFKVDQrSHBPcERkSFJYcE0wTXRKcmtqWnBiVHJNYmFLRklUS0NDSzFHcUZTeThHSmJ3RmIyU0JLdWcwL2Q5N0hMNmZ5WDk4cU41Tzg5d2wzWDVwSFR3Y0xFRy9yZytxYUlyeHZDa3lBc1lmazFpZFZxZmJWWHI1d1NIM2dGZzFwd3dYdHp2aldmdHFacVJWdlRoVlFZbUV4K0U3VHRTZnNSQW15SmlZbFlMQmJNNWpoTXBoaWZTZW9GTjUydXlSejFSVW1GV3ExR0JOR0xOR2x0a2h0d2Jpc29lRVVJOFNWNGNDc0NsY3JYbkt4Q0pXd1VWN3ZDTXlFc1lmbVZpS0lvWHozLy9LTG1BWU9BYjAyU0pDZXQrOVo4SnFoR05HbHJUV1ZUM3B5MWFFeW1HTXhtYjhBZ01USHg5SUVOb0YyN2RpUWtKUGh5MjR3WURGR0JJbmsvQTRnL2tBQUtpcEJRYTlRQklrcEpDakJndXNkZE43VGkrUEhqTDRDZVBwMWlXYlc5a0tNMk94OTgvQ1UvQ0ltR1JuZDROb1FsTEw4UytmYmJiMWZQbURIRDFncW8rVFUyUDZnRnAzaTBXSEdxaWJuRFgrUWU1VnZoUFphRWhBVGF0VHQxT1dRTFlJdUppU0VwS1Ftek9kNlgyOVpra2dhRG15eEJuY01qZEhvOUdwV3ExYVJkSk1rVkYyZmU0SEs1WHJ6N3hpRjA1d2lUWHQvQXAwb2lBMkpWNkhWaFRxNndoT1hYSURhYjdZMnVYUy85SnNnRWJXeW1yYldhak5zVU1OQ0k1cUFXV3VUdUpaQk1Ta29pSmlibWxQMXBGVm5hdDI5UGRYVTFWcXVWK3ZwNlh5RjhJMDZuRTZmVGlhT2huaU8yUm93bUUycVBrOFpHQlVWUkVFSUlSVkVVRUI0aGtDU1FrU1RWSjU5ODh2SlZWMTNWYTlwTnY4a0djTmVWYy9XMmFQNFVIMTZwS2l4aCtSV1lvTHRmZmZXMXphMzQxWUpCellVMzE5VWpTWkxTUEJtM3lhOFdXalpsTUVTSEZMeTNiOS8rdFByVUtyQnBOQnFTazVPcHJhM0ZacXZEYnJmamNEaThsRWFPQnI0K1ZvY3FNZ3BKdUdod0s4SXRKRW10VWdraEZEd2U4TklhU1lvQU53TFgxVmNQTE52ejVhNUZYM3FpRmlkcEZkNzUrSE95Y252VE1ZeHJZUW5MTDE2KytlYWIxUTg4OElEMUpDWm9pMlJjMzZwVExkSTd2SDYxbGxIUXhNUUVrcE9UMFdoT0R6Uk95S2Rxc1ZpYUplNUcrMnBKSTRtUGk4T2tqd0NWQ2ttbFFwSzlxQ3ZMS2lGSkNDUkpTSkt2WWwvQ0pVbVNNL095N0UybEpTWFByaTg2VE0vZWZYbDZjT2Z3akFoTFdIN2hVbHRidXlRam85dUJrMmhyZm1Eeis5WjhBWU1BcUlVdzRucWpvUDVhME9pUVJOem1oZTVuckxINUpTVWxKWWpTeU82ak5Hb2tQVm54Y2JiWnFLKzMwOURRSUJvYkd5V1B4NE5hcmNiajhRaWZCQlpabGlUSm1WaFQrdEtNMy8rK215ekxnOEpUSWl4aCtXV0wyKzNlOHVpanN6OXVCbW9PbW5MV1RoUUZEVFpCaFplMUk1ZzhVdTh6UVUwK0U5UkNTa3JLR2ZYdHBBejRVVkZSSkNjbms1aVk0RXZjamNGZ0NDNlVid29tK0d1N1ZMNUFnbitwUG9JcUV1NjY2KzdqaHc0ZGVnRW9EMCtMc0lUbEZ5MC9mdnJwcCs4OSsreXpEYTJZb0k1bUptaWd3aUEwWUtBV3dacWF2OERkWUlnT0xLUG5OMEdiczNmOEpJME52SUdFMnRyYWdOWVc4TFU1dmRUaGJyY2J0OXVOeCtOQlVacUNDRUlJZk9BbUNTSGNnQ1JKa3B5YTJ2RnpxN1YyUVhSMDlOenczQWhMV0g2WmN2anc0V1Y5Ky9Zcjg0RlhNS0ExTjBIZFFSVUdvbWxSbHRCZ2diL0FQU3JLNEV2dGFFTjh2RGUxNDNRREJtY0ViQUFkT25Ud1JVaHRORFEwME5qb3dPbDA0bkk1ZzRETmpjZmpFUjZQUndvR09KL1dKdmxNVXBja1NTcWpNZWJmalkyT05LMVdlMWQ0aW9RbExMOHNzZGxzYnlRbnQ5OUZhR3BIY3hQVVJXalpWQXNUdElsakxiakFQWlNPcUVPSERtZlZ4OU5hakMwNk9wcjI3ZHNIMFJzRk0rNzZxeEw4eEpTYVU1bWtUcUR4d3cvemx5aUtVaENlSm1FSnl5OUgzRzczUjRzV0xTcWc5UWhvUUdNN21RbnFCeld0TnFKWmRZR0JtQmhUZ0k2b2ZmdjJSRWRIbjFVL1R6dER0bjM3OWxpdDNrVmVRclUydjBucXdlUHg0UEVvSnpKSkVVSklQdFhVT1d6WXNQTHZ2eTkrdmtPSDFBNlNSS2Z3bEFsTFdIN2VJb1FvM3JGang5by8vZW1odWxaTVVBY3RBd2FlRTV1Z1hrMU5wNHYwc1hiNE9kYThCZTdKeWNsblpZS2VrY2JtbDQ0ZE85S3VuVGNGSkZLdkIwMGsrcWlvSUdMS0NMUWFEWklzQzFubFgwaytoRzAzRUVpUUpNblpzV1BhenBxYTQ4L1Jjdm5NaTBhc3BYdFl2MjNQdWJuTzluMFhwTS9iMXErZ3pQcHpmNjZ3ZnR1RmFzMU93Zm90T0g4aGM2VzVmTFpwTlFlclQva0t1b3UvL3UveWZ2MzZselhUMWxvelFmMkp1TDdxQXE4SnF0SDR0YlZRdjVxL1pLcE5tMWppNCtOcDF5NkpqaDA3L3FSN09pTmcwK3YxZEdodjVxMVBDbm45NnpJK0tTbG4wM2VWTktpOU5ySWtQSlJVMTNITTdzUnFkd2k3UzBGV3FZVXNTMEtTVUJUaFhZdFVDT0VXQXBja1NZMnhzWEh2TlRRMFBQVkxBYUluSm85a1c5bTVJMXlxTE16bm1aVmJmdkoxeWo5YnhTTUwxMTZRZTFydzBPL1o4VE9QYTFjV3dqTXJXM2xPTytEZWVlZTJyZDByNS9Ga3dVRzB2NUM1MGx4ZW5uTS8yNHB0SnozbTJMSHFGOU43OU4wVHBLazVnamRKa2hxRFFhM0pCSldFU3FVV1hsRFRpaFBWZ1hyejFjeTBiWnRFaHc0ZFFsYWNPdS9BQnRDMlhYc20vbTRNODM4L2dnZHVHRVMvOWtiMjF6aUppb3JDRUIzRHBSM2FrWjZVUUx1RU5raEN3WVdNTEt1RUlvUUFTY2l5djFCZStCa0FHbk56YzVlNFhLN1hmZ0grQlFxM2ZVaFpqVGRvRWlyZUNhdzRiQlFYbCtJTW1zLzJtaXFLaTB1d3UwTW51YUlvcEE2WnpNYjVrMXU5bHNOV1JVbFoxWm4xMFc2bHBMU2lCZGVkdzFaRFNYRXhOb2Y3RE83SnUzNW9jVWtwZG1mTEY3U21zb3lLNnBZdmhLMnF2TlYrSzA0N0pjWEZWRm50NTNXY0ZBVlNoOERHK1MxL3Q1WEQxbDNnZG52L0R0bnZnSklTc0xlaWVpbDQ3WXFTNHViNzdUejV4QnRNbWpUMmx6VlhGQ2RsSlNYWVdoblg1dU5rdDl2LzNhTkhqK0I4dFJZbUtDMVRPM3hyR0toRU1NZGE4MkNCbnppeUtWK3RQVzNidHYzSmMrQXNxdEFqdUs1dlQ3NzZTc1p1YnlERmtzQ250ZFVZREJHNFhHNGtXY2FHZ3NmalFhMVJDNkZTUzJvWkhJMU9aRmtTRWlLUUFpSzhLU0JTWWVIWGNrRkJ3WXVEQmcxS1VLbFUxLzBjUWExdzNUTk1lK1pkQ2cvYTJYM1hkU3d4cUJrMjlaOU1IWllGd0t2VGIyUjFUVWNxUDlzTWVoM3F6SnZadG1RR1Q5dzdpR1c3UGFRbDZOaXpyNXpacjc3TjJMN3BnSU5aNDRhVFgvZ050cXo3MkxOc1JxQ3RSVk4vdzRvRGNhamR4Nms2V0VqSzZNZFpPMi84S2Z0WVhiaUdBWU0rUUVjMUZmbzhDdFkvVDRJV1ZzNFp5NnpWMzlNNTFjekJ3aUxHUC9FR0Q0M0tPZVU5clZ2d0lGT2Uya1JHVm1mS0R4UXpkKzBYREVuMzZpWExabzluc2ZVSSszYnVZdXJMLzJINnNFeHdWek5yL00yc0xGSkkwZHVwTnZSbTNlcC9ZZEZCeGU0MURCNzFKMUl5czdCVkhpUjcvTk04TlhIZ2VSbXJXZU1ndnhCc1diQm5XZFB2RDQyQmJVVlFVZ0ZEaGdDeHNISWx4QUk3VnNMNEdaQ2VDUWVLWU81eUdKWGpQUzkvQWN6WkJycURZTlZDalFtS2ZBdE5Pb3JXVTJEUFlVbWE3aGN6VjVTYWc0d2MvQnNxREYyUjdRMDRLcDNrK3ZZMUg2ZWV0LzhqUDgzMXpZZUhEeDl1TFZldE5STlVDYTRGOWE4SnF0Rm9SZE1xVTVHQk90Q1lHQk94c1hFa0ppYVNuTnllVHAzT2tidGRDT1dzdHVQSHEvbDQ4d2YwdjJVODE5My9aKzY3N3o1R2ovNHQxMTU3TFZkY2NRV2RMMGxETnNRUmIybExiR3diU1ZLcEpKVldLMHV5ckpKa1dRTlNCSklVSlVtU1NaS2tSS0REdm4xN2h5dUs1MU52d2NMNTJZNGNxUkNIRGgwNjYvTnY2eEVsM3RydmJQSDdLMys4WHNUM0dpVitySGNMSVJUUjBHZ1hRaWlpdHJZbWNNejNHNTRRSGE2ZEduTGUvcmRtaVc2M3pRMzU3ZmtIcnhHWDN6WlhlSVFpWEljTFJMdTRLOFFQbnBQM2EvOWJzNFNtWFQ5eHFFRVJRampFSDMvVFVmenA5YzlhOUtGdS95b1IzK1ZtVVgrS2U2cjlhcFdJYTNlRjJIL000ZjJ0c1VZY3IvUGUyeTNkVk9LUEwyNFhRaWhpNzc5bmlrNDN6QkJDS0dMemM1TkVqNXNmRVkxQ0VVSzR4ZE4zWHluKzhPSTIzL081VHR6eGo3V0I2emMyT2s3K3JCdjNpVDV0RTBWaVl1aDI5ZjN6VDJ1YzlyK2xpRzYzdGZ6OTIzY1UwZTJXME44OFJ4WFJLVkVSbnh6Mi92M2p4NHBvMzA4Ukx0LytENTlUUkdRN1Jldzk2djI3b2FIcDNDOWVteUc2Lys2eFg5UmNlZmZ4c2FMZmZkN24ySGhraCtnVXFSS3ZmRjdkWXB6Y2J0Zk85OTViK3dEd1cyQTRNQmpvQzJRRFhZRU9raVFsK3Q3aEtGbVdJMVFxbFVhdFZxc2lJaUprZzhFZ3hjYkdTbTNidGlVdHJTT1ptZDI0NG9vcnVQYmFheGs5K3JmY2Q5OTkvTzF2ZitPVlYxN200NCszY3Z4NDlWbmpVZlB0ckhtRFRNWW90dXd0SnJKYkg0YkZleWd2Sy9ORlNOMDBOdFJ6eU9yQ2toaUh4dDJJUTNpRUpNbVNKS3VFMS95V0ZDRjVrTHhxcXdUSWtpUkpHUm5kdmk0ck83UXdLU2twVnBLazlGOWFJR0R3eUZ1eDZMM1d2VTdyL1lKWEZHNWk4ak92Y0tDc0dzVlJSYVdjZDFyWDZwMlhpd3pJU2NtWW5kVlluWUR1NU9lazVWNU5zZzVBUy8rQmVTemN1UnZHNW1BcjNjbU1lZjlpOThFS0ZMZU5tbW9qVnVCa1hveGRPd3BJSFhRelhXTjluaU90RVpPMlNkSHZuZWRWWjVKU1VyQlZmUTdBMXEyYjBkcHptRFhqWVFCS1MreFU2QXFCUExMNzltUEc1RDl4YjhWbjVQWHR6NmhoZ3pqcG1sL2FybXd2Ly9HQ2pGdkpkaWhYdzVyNXNOWnJwV0hkNHkyUDhSZnk5QndLR1didi8zVkI0MUJaZlJTak1ma1hOVmQyN2Z5Yy9pT25leDl6UWc1OU00eUJmVTNqOU9sM1NXMlQzbnAwK3YxSG1nVUtnaU9nSi9DcnlhSnBCWGQvc0tBcEFtb3dHSHhyZ3JZaEljRmJCNXFhbW9ySlpEcG5ZM3FXd09aaHhYc2IyQk9md3hQWEdQaitteUtjUGxvamg3Mk9UNDdXMFM0NW1XakZRWDI5MXo4Z3ExUklzcG9JTGNMamNlTlVFRWlTZ2k5eDF3OXd5Y250UDY2cU92cGNYRnpjVENEK2x3UnNPcU9obWJPcGtGR2ovc3BqNno5Z1dIWUs5bDFMc1V6NDhQUUdSZzRhR3ZuTUhkQ0szNE9xVkRGaCtHME1XL1FoOHdkbm9xN2NnaVh6cno4NURDMEg5OC9uckZLQXJOeHJHVEhZOTAwYWNTUEdoRlFBc2tiTVlGL09jUEkzRmJCMDNuMHMzZkpIOHArNTk4UU5PQTh5SXUrM2xEVHJhTmRoRDdEaXNRbm5mT3lNeVRCeVJOUGZJOGRBUXZCK1krdm5tWTNSMk96V1g5WmNrZVhXM0hUQjQxUzE3UFYvdi9IZzlQdS9KN1N3M2RHS1h5MUE5UjIwMkxId3J3bmFNZ0pxOEFVTHZQeHFiZHQ2azNDVGs1UFA2WGllQmJBSjN2L3dRLzVkWjJicDczcGhrQVdlaGdZY0RnY09XdzNyZGh3ak9TMmRSQnhZcmJWNHpGTmlBQUFnQUVsRVFWU0JVcXVveUFoUjV4U1NUcTFHOGJnQlNaRWxDUUY0Q3hTOC9qWWhoR1EyeDYrdnFUbHVpSW1KK2V1cDlaUUxLd2FqbnFyS2F1aWFjT3FEcThzb1ZhZlF0MmNLTXJCK3pidTQwWiszdmhYdjJFeVpZemJKT2lmYkNyYVRNL1lQNEs2a3ROcEkvN3hNMU1DTzlldXBWRTU5VDltNUF5bVo4dytLcXFkNHRUYTNsUnFIQVpQaHhQR21BZjJ2NXFGdHhXVFBHdXZWeGhRN1ZUWGV4cXhXSzdISkdZeWVrRUZ1a3B1OEo0dE9malBhVkJhdmZZL212bTJ0NGFkOTFmVkdzRlo2dmR6K3laK2FCNFpTa0ZPaHQ0OUFvcXJxOUNaZTE1NDVsRCt6QVNlMDBFQi9ybk9sZDA0djVtM2JDcmRtNGF6Y3liWWlLd044KzZ4V3E2TkJpbm5sd1VmKzN6NmEwam9jUUVNSXFMVk03ZkJyYThIOGFxSzF5Z0wvS2xOdDIxcElTZWxBNTg3bm51bm56SUd0NFFpUEYzeUhWUmZCd0xuN0FWQkZXM2lxZHdxRmhWOXlTTkdpUG5LTWIreDF1QnZzdE5GSFl0YnBpRFhGVUgva21LaHY5RWpDSTRSS3JaWmsvTVNVSWZXa2toQkNOcG5hdkdXejFVVkZSVVU5OG5NQ3RnbVQvc0Q0Q1ZleDJHUmd6Q012OHRESW5pYytPR1VBVS9JZXBXL3VOYVFaRk13cDhZRUhYckZqQmFPbS93dDdWUWtsVlRKOSs3NVA1ckFIV1RSajFGbjN6V0wyTUhiUTFhaXBwdEk0bElMUjJhQlZtRDZoTThOeis5QXpXWStjMUI2TGZPcDdNbWFONE5VWkh6RTBwd2NaV1oycExDM2xzWldmTWpqOXhBYmtnSWx6R1ByWmI4bnNlU1VaS1NZT0hpaG04b0wzdVhlUWdiVlBqT2V4OVVmSlNJMWxYMkVSanl4OCs1UlRNeUhwekwvaUZUdGcxSFN3VjBGSkZmVHRDNW5EWUpIUDM1NlVDNE9BckN3d0pNSEdqUkJyaHVYellWeWVOM2hnTFFkdER1UXZPbzBQWGMraDVMa2ZaV3VaazBISjJsL0VYQmx5N3l4ZUhuUTl1UU0vUU8xMFliUTBxYVBMSHYzZGkvYy9zMkZYTTFCekJJR2J0eGEwbFdDQmY2RmpYd1JVdEJZQmpZa3hCZFl0YU44K2hmVDBUa2lTZE03ZlUwbUljNU5uYytUSUVmYnUzY3QzMzMzSG9VTmxIRGxTd2JGanh6aCt2SWE2dWpycTY3MUY5UFgxRFRoZFRzbnRMYUNYUEI2UEpJU1FmWnNhMEFCYUlZUU9pTFRiNisrSmpJejh3N202NGNyS1NweE9GOG5KN1M0WUdGYVZsZURXbTdIRUdzNTdXMjY3bGZJYUI4bEpDU0c1UERXVlpkZ3drSnh3WmhxUDIyR2p2TElhc3lVWnZmYjBzb1BzTlpWVVdkMVlrcExRQm4wNkhiWXF5cXRzV0pKU1R2dGFGMUlVTjVTVmdkRU1wak1ZcW0xTHBqSy9OSStWYzBiL2d1YUttL0xTY2t4QjQzcjgrUEVYWW1QanRqUXpQUnNBdSs5ZnI5WW1TVTdKbTJRZkFEWmZaWUUvVDAwMEFacUI2R2h2L1dkY1hCeUppUmJhdDArbVU2ZE9kT3ZXN1pTTHNweXRxR2JQZnZUY21HZ0dBNUlrMGRqb0xZNTN1ZnlGOFFxSzR2R1hXUGxEc1Q1UUZVMi9CZHU2WHMwTmdLKysrbXJQeUpFalVhdlZ2YzlGUCt2cjYvRjRGSXduY3BxY0I5RWJUUmdpdFJla0xWa1RRVXgwRk0yL2dib29JOGFvTTdmcVpiV1dtSmdZTktyVC82cHFkRkhFeEVTamFvWmRhcTJlTmliVEdWM3JRb29rUTR3SmRHYzRWQ2xadldrOFhFYlhIbDFSL1dMbWlreDAwTGpXMXRhK1BHalF0WnQvL1BGSFZ5dkE1azNDOWZuVkpFbHlOVE0vQTZEbU56LzlDeHo3QXdWdDJyVHhyVm5RTm1CK25tdS8yamtJSHJRdXFhbXBPQndPbkU0dnJaSGI3UXBRR25rOGlnL2t2R0RXQkdwQ2VKTWxGY1ZYVjRvUXd1VjN1cTFiOTc3MCtPUHpsanp5eU1QcWlJaUllN2hvcFlibEM1ZFIzWXFDYmNuc3k2Z0JQUW5MLzBqVXNZd2ROK0lYTzFmcTZ1cGVlK0NCQnpaLzhjVVh6ZlBVbWtETkd3SDFhMm9lZk13ZC9naG84d1JjYndUVW42c1d1c0pVV2xwSFVsTlR6KytRbk9zTGR1blN4Y2ZaNWd5a2YvZ0w1UDJhbTI4VFFnaWYxa1pBbFZNVTRXY0NrZncrdHpsejV0VEV4NXVYM0gzMzNYSkVSTVRkRitmYlkrTFdTWlBESUJLV2N6cFg2dXJxWHYvclgyY1Z2UDc2c29ZZ1RhMGhlUE9ER2tHVkJiSXN0UllCRGZqVnZJU1JocUFhMElSQVdrZVhMbDNPLzdmbW5Ldnpra1NYTGwxb2JHejA4Ylc1L0Z4dEFjMnRLWkZPQklHYlFBaWgrSWhBUWt4VVNaSjQ0SUVweDdSYTdaSTc3cmlEaXhmY3doS1djeWQxZFhXdlAvYllZL25QUHZ0c1BhR0Jnb0EvelFkcUlmbHFYaE5VYmhFQjlTL0UwcHd3MHB1cjFwYlUxQTUwNmRMbHZBUUx6anV3QVVSR1J0SzVjK2NnV2lPdjF0YmthL09hcEQ2ejFBOXV3cWVsK1NPbHdlQW1TUkxTUGZmY2U3U3hzWEh4M1hmZnJlaDB1bnZDVXpNc1lUbHJVSHZ0cjMrZFZYQVNVR3VRcE5CVnBvS1h6Z3VPZ0RacGFrMEp1REV4eG9CZnpaK3Ixcmx6WnlJakl5L0kvWjJ6NEVGcjRLYlQ2UUxnNXZINHdTM0ExZWJYMnZ5YkQ4YkZpWFJCQWJCaHcwYVhKRWw3K3ZUSmRXczBtak1PS1B3dmdnZGhDY3ZQU1dwcmExK2VQSGx5d2VMRkw5cFBwS25SU21WQkU2akp3ci9BY1dnRU5LckZlZ1YrbjlxbGwxNksyV3krWVBkNEZqRjNENThXN21YTzZueit1TEtBVjc3OEljQkQxVmhmdy9LUFBtWEd2emZ4bDNlM1U2eEVjY2tsbDlDaFF3b0o1amdhRkluRDlZM1VDSzF2ZFhsOThPcnlRcVBSb0ZLcGhUK0QyUjkxb1luRHJSRndQUGJZWTdVMzN6enFCYnZkL3ZTRm5oUUg5K3lrMm5HdXJ1WmszNjdkMkU0NzQ2YWNrVG0vNGNCWkVIOVpLNG9wT2dQMmgyMnZQc0s5VDY3NTJiK2tJM09ncUpYbnNXOFhaL0JjVDBmY3pMdHJORnRLN0QvcHVaNUtLa3VMS0trOFM3STc5d0dHWk45TTJVa09PWDc4K0F2WFhETW9QOGluMWtKVG95VU5VWEJodTQrR0tOU25GaG1wOXlYZ2Vxc0s0dVBOV0N4dDZkQWhoVXN1dWVTOHBYV2NPMkJUNmxpenE1d3VxUjI0SWFNZG03ZmtNMnRyQ1FBL0ZKZndkYjNNMWQwN2t4MHJlT0NGVlJ3MnRDVTlQWjFvblliOURSTDFIc0VSUllQUmFNUmdhRVpTNlFNM3Rkb1BibDV5eW1ZRWxZMkFZOE9HRGZWUlVZYVhiRGJiNDc2QnVTQXllK3pWRkpTY0sxN01TaVlPdllraSsra0RZV2xKTWM2emVHRS9XL1U0MHhlc08rM2piVFZIcWFpeS9leUJiZnhVU0dobEZrOGN5aGs4MTlNWXFSMUxXVkdSUnY5VS9VOTZycWVTdGZQL3dMelZoV2Y5b1N3cExqMVJ1WnpqNk5Hano4WEd4bTBKaW42ZURxaDVKRW55K0lNRkxjM1BVTEpJZjFXQm40SW9QVDM5SnpIaFhqZ2ZtMnppOGZIWEJ2NXNZei9LZmJ0L2dQNnBkTzdlazhlNysvZWtzbXZ2ZnJaK1g4MUQyWjF3dVFZU2s5Q085emV1cDZEY2dja2srY3pTUU5vSFByOWF3TmZtZHVNckpjVVQ3SFB6cFlRQUVCMXRYSGI4ZUxYZFpESk40VHpXbHBidVhNZmlOWjlTV09IRS9zeWo3RGJMNUk2NG0yRTUzakxwZlZ0WHMyVDUrMWpsTm95NWR5cURzcnc1T29xOWdrWFB6R2RIMFdGaWt6c3k3dDVwWktjWTJaMi9qRlZidnFERVZzT2lPWC9Gb3BVWk91NFA1SFUrZFFMdDd2eWx6RisxbVlTTXE1ZytiVHdtTmJpdFpTeGU5REs3aTc1SDBjY3hlc0lVQm1lbmdMT2NwK1krejg0ZHV6aGdyV1Rtek8vUUpmZGk1cjBqQWk5RC9zckZyTnI0QlJqYU1tckNKQWIxOVBYZFdjMlN1WSt3N2VBeGhrMzRJNlA2K2twZjNGWldMSnpQcHAzZmt0RDVjcVpPbXhRbzZONjNiVFdMbHI2UERTMFpBMjVpMnEyRE9SK3B1UHUyd3ZKTjNobmNPK1Rad0tvdFVHS0RSWFBBb29XaDR5RFAxL1h0NjJEWkduQWJZT0kweVBGWHVUdmdtUVV3WkRBc1hnQjJBMHlmQmVtKzRYaDE4UXNNSC90QzA3MmM0cm5hcXc2d1lQNGk5cFRVa2pub3Qwd2ROeVJRY3JWajNXSmVYZjFmbkZvamVjTnY0NjZodlZHcTlqSG4vN2QzN3VGUmxIZjcvOHpzSVp2TlpyTXNJUWtoaVRGZ2lDSEVpQmdSSXlJaUlsSkVSS1NJaUpRaVdxcldvclZLS1M4dlB6elVJcVVVclZJOElaNFFFUkVwSXFVVUVSQVJNVWFNTWNRUVlnZ2hoR1d6MmV6T3p2UDdZL1l3dXptQWVLSytQdGMxMTU1blptZWV1ZWYrbnU3dndoZll0YldDdXJLL002dm1uNlFWWHNhTWNZTlB3TkpjTEYvNENCdEx2MkxJMkl1amtheWhnb1VMRjFOV2Zhd2hQam45cVNjZWZXQTMwYldmTFRIbVo3dWdwbXR3SEFWcWtVQkJBb21KMGFDbVZSWDArdlpraUw1ellJc1puOVkza0p0K1Z0c1AvTWVwT0tJeUtUVUpnTHk4UEJSRm9WdEtOK0piV2toT1J1ZHJDeTFoOEFxREcwQWcwQ200aVM1ZG5Lc09IYXByN3RhdDIyM2ZsU3FJUFNPUDRjTnRiSC94RVlwS0xtTkl0cG0wRE0xUFY3NWhFU1B1ZkkwRmkvNlhaRjhsTThaY3hkSnQ3MU9jWW1icGZUZXl6bmNGODJhT283NXlEdzBOYnNpeWs5NnJIOE10RnRZc2VaSGlJVmVRYjRPczVKTklvRldxV1BaeU9RL2Uva3RXekwrRHlYTXNySjQzSGw5OUpZMldiQ2JmTmdwZi9XNXVHMzBaUzNkK3lzQVVPNE9HWG9IczJrMWxiUitHRDc4QzJSYXBYWHh4OWczTTIyWm53Wnhic1hwcUtOMVhIZ2EyTFM4L3g4Z2xEekVoZXhzVHh0NU1jZlc3WkprVkhweHlCWnZOVnpEN3pqc29YZmtvSXlZM3N1dmwyVkMzbFJIai80Y0Z6LzZkYkx1UGJYczB3Y3ZPZ0czYnFzZlpzUGRRek0yeks3ZmRONE9VVG1ablNqWU1Id3BUUjhQWWV5RXQrTjMwWGpEY0FtdVdRUEVRZ3NjMWFGNHZnNmxQd01KSGdGb1lQd3cyN1lFc1N4RFk1c0c2N1RCMU10QUlqUzdBQWREQSt2V1YzRGV2VUhmbGRISmNQZFdNSFh3RitWTWY0dlpSYVN5Yit4dG1laXdzbWo2WXh0MHJHRDN6RlpZdmV3aUgyc0R1YXMyTWxhMHBEQjErQmQ3eURjaFpGekI4ZUJIVzVCTTNDVjQ1N3hjczNKdkJvdnQreWJwRjkxS2hvMnR6cHY2TStuTm5mWEg5OWJiblI0NjhKbFQ3R1p1bkZscGFPd0sxVUZWQlorYW5CbXBkU1V0TEpUTXprMTY5ZXBLWGwvZURNZmx2Qkd6Vit6L2hzVThDUERuajdGaDdsV2ZXYkNUdTdBRmMyU011L0c2ZlBuMUlUMDhub2JtWjFGUTZDaUlFdnkwRWhLT2xIWUliYUlDWW1wcTJmdi8rL2E2c3JNeGJaRmsrLzlzK1VJNjBYcFNrOVNMTlppUy8veUJLOGlLSGJ1bkN2ekJ4MXF1TUtNa0Qrak4xNkZPc1dMdUw0aWtEYVd4b3dKcVZRazV1QVVXRlJib0xNNStVYkR0MnM0VitKU1gwUDlrS0d0bkt6TGx6S000MlVqajN0NlNNZWc3WHZQSFlldzFpNXFROGR1N1pqVnROSVQvZHpjN2R0UXdja1VYL2toS2E5cVNUYk02bHBLUkVCNUxWTEZ5OGxRVjd2bVJZbGhrb1J2Y3BCU052Wk5xb0lVQXhBMmY5bWIyMWtHWFp5c0oxQ3Bzcjd5WGJEUDN1K3dOUDlQb1pwWjdaNUxzYmFGS3NwR1JrMFM4M25YNzlUL3gzTEE0bmFXbHRiaU1ZVDBEemtyT2dKQXRzeHJhQWw1SU5kalAwS3lIcXVDNTZCTzU2QWdZSDkydjAwN0I2Szl3K05QZ0ZEOXk3Q0lha3gyeXNxWkpLVndiWitpSmIyZGJoY1MxYit5eGxHZGV3Y3Zvb1pHRHV2YmVTZjgrTExKbytHRzlESTZyRlJscEdOZ1ZaL1FnZkltc3lKU1VsN0Z2dHBLbFhVZlI1NnRoaHdQSVZHNW01NmlBREM2d1V6NzJISmF2L0VQR25IV3I4b0xYVi9jcklrVGZ1cDIzdHA2NUVpbGFKamtITllEQUlrOG1JMld6U2dWcHNVWHVvWENvelhDNzFRNDVUQnJZalgxVnh5eXNmTWZlbTBlUW02R2VoWU1PbWpieDZQSm5sTnhaRzNhMGxTU0k3TzV2RTR5NHlNOUNab21xVU9ScGFqOGJnb0RQbUJoSWFlUlBpekRQUDNQYmhoN3ViK3ZidE85VmdNQXovdmc1aWRYVXRaWXQveDY1blEvL1d3dENoMnZQcGMvL09mYlArbDM2NTkyUEpLR0xSc3FjWWt2Y05va055Q3VsQmVtSkp5OERhVkU4ajBMVDFhWVpPZnBUaFk2NG14VzZtd2EzZzlaMGd5dUN1cFVaTkl5ZXIvUktlWkljelBFM01aZ1ZGQVc5ZERZM2VHdTRjZDAza2UwWG5vSHJCMkdza3o4N2F6YXhKVjFCZTQyWDQxUHQ1Zk03a1RuWFhiSTRVMHRKaXZpSGJ2NU04cE9wYVdEb0xWdW1JY1QvOWhoeVFtOTZ1WXhsRi9qcmIrUkpYNlhiR2pQNDAvRjV4M2tXb1FQclF5VHc0cG9LcEl5K2syaVV6K2Q1SG1ULzlWS2RxRTNYMUZqS1NOYitmTVMwTlozQS8vWDcveG9zbjNyN214aG0zSHRLWm4zcFFDeGUxUzdSUjZvZ0JOUk1tVTNzTldFS3kzbTFCN2Z2SVZmdldnZTM0a1lQOFl2bFdab3kvbWt2U29wMnA3NzczSC83eXVjelROMStNdlozQ09ZUFJnQ09ySnozUEZLaHFJSWF0aFlBczVHOExtNlFkZ1ZzSURVWElORDMzM0g2ZnJGcjE2cCt1dXVxcXcyYXorY1p2UGRvaXk2Z3hZdmxaV1JrVVRmOGI5NDVxYXdVN2NvcFpzdUlOUUdINXJKOHphOEZ5dGoxeFp5UjJJNnR0dFBjN0Q5N1VVMU9yVUpSanhGdFhnOGVaUVRMd3hMTEhHRFByS1I2YzNBL3dVYm5tejdFNzNtYS9zYVdUSWRkUldlMmpWOWJKMVNlYTB6Sncybko1ZXUxYllmTlBQNTFHelpqTHFCbHpjZFh0Wm5EaDVXeWVPcGxoblpRRVZ1N1p3dHB0QjJKV2swcnhpQ0hZdjRselRtN2IweUFySGNZc2h2RUZYek9VNXNnbXgxSkhUUVAwU3VHRXh6VXIvUXhTQnFTeWZ1VzhkclpoWThyc2hVeVp2WkQ2MGxVVURmdzlVNllPcDVkUlA3OU9OampsSUQzRlMwMkRCOUtzS0hWMU5LclE0dkc4OU5qU2Y3eDl4eDEvY0hVQ2FsNmRXYXFQZnJZQnRVaGhlN3hPcWNPdTYxV1FHaXhzejZGUG56NllUS1lmUEtqMDlZSE5mNXdaLzNnVFMwWnZHZy91NTdtRFlJaDNNS0VvaS8zbGU3ajFyYys1NGRMK3JQOUFpK3ljZGNhWkRFaFBSUFUwc2VLamFqNnBidUtJVDJWdk55ZjJ0RFBJVUtOOWJEcFFDejBYSWF2VDc5ZHkyYlJFWHdJUmJBc3pRaUdFRUdQR1hIc3dMeTl2d2Z2djc2eTMyV3gzOEMwbUl1Zm45Mkw1b2dWWVJoYlFxM0FnK1ZsT3B0NzVLNGJmOVV0eXpQOURybE5tNTZiMTVJeTZoNkg1ZGxZKy9pQmtEeVEzemN5dWZWWDA2bitUM25BaVAwZmg4UVZQVU44L2cvd0JROGc1a1o5TjliSmd6aXhTYmgvRml2bC9adGpFMzJFRHNyS3plWEh0OCt3cWtpbGI5d1RyeWhYMEtsZTV1WDNZdmVRbFhoeVFqQ010aCtFREM4Q1l4WjB6U3JocnlxMHNtUE1yck40YTlqWGFtRHF1NDE0RWNsb0pkdzcxTVhuNkhHWk5Id1dOTmF6ZFhzWGMyYmZqSzkvTW92WFZEQ2twd2xPOWxRWnpEdG5PenYvTzhDbXpHWDRLdXBHN3QwS2pGMXcrMkw0Skdxd3djSEJFRlRnL0J4NWZBUFg5SVg4QTVDVEQ3VE5oNmpTd3pkZUNDbHZXdytEYm9kOEpDWFFhdzRhbXNHMTdPWU5IUld1SHRYZGM4MGRPSW1mdXBkeTFJSThKUS9LcEw5OURxVHVOZTZhTW9HcnJhbGFWK3hqY0w1ZmEzYnVRczdKSjFzM092RjVuOCtDS2Y3QXF3MDF5Umg2RCtuWG1Ncll4Y2VKdzVzKytuNno3ZnM2YVJZOG94eFhseVV0emUvL25VTnNlQlhwQTgwcVMxQ3FFYUNmNVZoOG9NSWFZbW9pUEQ1bWZOaDFUMDBBdDFLdWdUNTgrV0N5bmgzemkxMC9RVmYwYzlSbElUVERoOVN0NC9RcXRzcG5pRENmSG0xdXcybXlZUkNEOFdWSVhKemxKRmtTcm15MzdEMk5MNnNMWlRpdCtJWkdYbTR2VEtGQVVCVldObEZ1cHFnaWJvanF5Um9pOUNkSGgzZ2xKa2dRZ0dob2ExQWNlZUtEc3R0dHVyYkphclQwbFNYTENOMC9RTFI1eUZVcmRQajZ0cUNLK1J4OXkwNVBvMm5NQVZ4WTVXZlBxcTJ4K3Z3eHJabCtHWG53ZWlYRXlub1pLTnF6L0p4czM3eVNyWkRKemZqMmFPRGxDRVM0WmNTVU41WHY0Zkg4MXFiMzZrOW4xQkJORFRtWFVzRE40L3BtVk9NLzlPUS9kTTU0NEdmSXZ1QlJSdFlOWDMvZ1hDZjNHTVgxMEVUMzdGSk9WckdWNkorV2N4NEFzaWQwZmZVcWR4OHpGNTJtTzNZSkxSNU5ycWVPMVYxL240Mm9YRncrOWd1eFU3ZGc0TTNwVGtKTWEzdGMreFJlVEhDOVRNbW9jbHJvUFdiVnFIWjhlT0VhL1M0WnlUcThlR0NTRkQ3ZjlpdzNyLzBuWlZ4Si9XUEFvNS9WSS9FNG03dHN2dzBjVjBQZENjQitFNmhvNGQxQUUyQzRaQVEzbDhQbCtTTzBGbVYwaDYxd1kwQjFXdlFvN1BvSzBQakQ0ZkxBWUlyZjVBUU1ocnAzdFpYZnhNK2ZwWFV3YmUwblUrKzBlVjFNUzE0Njdpcy9mWGMvYXR6WlIzeHJIa0tIRE9DUFZqb3lYN1p2ZjVxMzE3L0JsU3pjZS9zc0RuSmtVT2VlWjU1WndWdHd4UGl3cngyMTBjbjUrZHFmSDRleUxobUUvOUFFdnJYdTNNbWZ3MVkrdFgvblkrODNIajNlazBLRlA1L0FGQVMwcStUWTIraGxxdmhJZnI1bWZpWW4yb0FTUkpoU3BCUXA2VVZCUWdNMW00M1FaMzVvZTI2bU9ZOGVPVVZwYVNrWEZGeHc0Y0lDNnVqcU9IR21JMFhGckNSYld0K0x6K1NSL1VNdE5WVlZKVmRXUW5wc0JNS0RwdVptRUVIRm9jOVJTVnZaSlVXNXU3aFNEd1hEcEQ2SEg5dFA0TVF3UGQ0NitrbEVMMzJKSXR2VzAyak5GVWY2OWZmdjJOUjAwTSs2Z1Q0SHdDMEZBbHVXQVB2bTIvVHkxV0YyMVVFcUhGdjBzS0NnZ0tTbnB0RG9teGg5NkI1S1NrdWpUcDQvTzlOU2JsbEZFVFUvZkpOQjZKMmltYWRqSklVSit0NkJacWdKcWZuNmYzYzgvLzN6dG1ESFhWQUUzbjg2WFQvbXVUZXl0YW16bkV6dkR4ZzdqcDBLd0gycFlXYmo2MzkvN1ZuME5GYXpadktmZHozS0xoNUxqTkQ3LytPT1BiN3I3N251T0U1M09FV3QrNnR2aytTVkpEa2dTcXI1TXFyMktnbENlV3F6NXFSZUxQTjFBN2JRQU5nQ0h3MEdmUHZrNlVKTjBqMUlZNENSSkNpMUNraVJKODdrcFFVQlRVVlVoOVBsdElaOGJJRzY0NFlaYTRLK2ZmYmF2eW1wTm1BNTBQeDB2bjR5OEl1d1o3VVF6WlNPMm45RGwvOXd3MmpNWVZHS2pIYnZxSzdmSHRUd3hNVHNrNDYxUDU5Q2JvTzMxL2d3QUFhMnlSMWJiTDJqWGZHb2g4ek1VL2RTWVdnalU4ci9WemxJL09tQUQ2TktsU3pEM0pRSm1Hb2lGbUpzVWZoM0wzQUJKVlNVVlZDa0VhbnJtQnFoQjlpWjY5ODVidlduVHBxcnUzZE51TWhnTVEwNjNFMksxT2JIK2hHQS9qZEQ5ekd3aEpTYlJUMUdVelR0MjdIaWpwT1RpR2pydnpxNnZKR2l2OFVxb3FYR2Jpb0pJOG0xSGdZSjh1blRwY3RvZXQrOU0zZU5VUm54OFBIYTdQYXpmRmdva2hMSTZPZ2dhZEpZd0U3WnRRd0FIaUdlZWVlYXcxV3JkMGE5ZlA4K3BLSVQ4Tkg0YVA5UTRkdXpZMHZ2dXUvLzFXMjY1NVlqTzlEeFJ6V2RVTWJ0T2VpZ21uY09pNjlJZUt6Mms5Nm4xT2ExQkRVNkQ0RUVISjQ5UFBpbmppeSsrb0tibUFIVjFoemh5NUFoTlRVMjRYQzZhbTV2eGVEenRCQlQ4S0VvZ0ZGQ0lEU29ZMFlJS1pvSkJCU0R1d0lIcWkzdjA2REZaa3FSemY3cHNmaHFuNjFCVmRjOW5uMzIyS2orL1QzbVFwY1g2MC9RbWFKVHBpU2JqSFdKcUl0TFEyRVRIUGpXOStSbk4xRTVIbjlxM3h0aWFYQzRPdWYzWUxHWmtQV2NLS05RMkhzTWpETmpNMFJtNnJTMHRIR3hxSmk0dURwUGNNZEd5V0N3NEhJNXdUOUxvNmdUQ3ZyaVk1R2FwSS9JV1NnSFJtNmFoMTQ4Kyt1akJnb0tDblRrNU9YNmowZmk5ZzV1cnVwUjNQcTduckt5VWsvK1J0NTVWYTNiUTgrd3p2M0h6a05OcFZPM2R5dnAzdGxEWFlpR25SOWZ2ZndkTzhiaHVYZnNpY2xvQjlyanZacmZjYnZmelR6NjU5T1dSSTBjZXBQMTZUMzBxaDFmcXVPZW5ydTdUSEdacVF2Rmh0am13MnhKSVRJdzBYd2xKRDRWVU9nb0tDazZZSnJWM3l6b0NYWHVTYUpaQWJlVEZKNTloNi91N3FQZlpPQ3Z6KzlOaisvbytOdFhOci8reWt0MStNNmx4QVdyOThUdzY2U291VEltbjV2T1B1ZTdGSFRnZGRqeXU0M1R2MVplL1gxZE1vZ3hQclZyRmtyTGpaRHJpT0hEVXl5MWpSakMxVDhjWGMySmlJbjM3OWtXV1pXVFpFSHlNTEpLa2Y0d0VGQ1JKd3UvM2kyQ0ZnaEJDb0twcVZDQWhxUEdtQ2swNkpIRGRkZU5xZ0wvVjFCelltNTZlZnBNa1NkOXFaNVQxUzJkUmtUNmVHU1BhcHJ6WDc5M0l3ZzFHUnBRVW5Qd0tQVlhNZjNBcGc4Y013ZmxmQkZ4NzFpeGtWV01CY3ljUGJmTlozYlluR0RUbE9hWlAvaGx5aXVjNzI0ZmE3Uzh6ZDdQQzQvZE8rSmFPcThxS0JYOWtWTUY0TXI3bGtMV3FxaDk5L3ZubnEvTHl6djVNeDlKaU83TjN4TklVU1pJQ1FxaXFFQWpaYUZJTkJnT1JFcWxJbmxyZG9hOHdkYzBpTVRFeHFxQTlVaWFsVlJRa0pDUjBmbCtvM3N6a1dTK3daY3VJa0ljUW04M0czZzFQc2JiQ3dvaUJlYWN4c01rbWJoazdtb0pNTFJxeWF0MGJ6TjM0TVc5TktNYnFUT2ZWMzk1RXV0V0U2bk16YWNGenZGU2V4OVE4T3hkZWNCRTNqRTdGTEVQTnZnOFl0bklyMS9RWlEyZjM1WVNFQkFvTEM5Rk9pSXpCMEI3SVNVRmdrd21LVTZKRlRQM0JvRUs0SVROaHBOTVlteXBKVWlpb29BS0JqSXpNelU4OXRleVRjZVBHamJWYXJkUGF2WHMyMVZQdlVzbktTb3M2ZUNyZ2RUWFE0SmJKU285Y0ZxcWlVRjMyQWFXK0lTaUtnaXdia2VYd3hDVjcrQXpXanpTMnVWamNqZlg0ekU3c3NvYzZ0MHhHaWozOG1XTHZ4ODd0eTl0VUFDbEtkQ21PYkRSR3ZxUDZxS211d1pLY1RyTE5FcnM1a0ZYcXFxc3dPdEpKdG4vNzJlT3FxbEJYOVFtN2ErenRIQWVGbmR2ZW85L1lXN2huNW5oazQ4bE5TOFhyb3JxMmtiU01tRDZsS3FpS20rcmFKdEt6TThLMXFxcXE0cTZ0WU10dWIzQWZ0RGwwd3VQcWRkSGdoalNubVpyYUp0SXowc0xmVVJTVlJScy9iVk8wcnlwS1ZDUlQvMzhCbXVxcWNjdjJObjFlUTJvb0IvZVhQLzIzZjZ6WThzRC9tK3NtRWlEUWwwZnB6ZEQyVEU5VmtpUlZWVFhyUktnaXVwbXgyWXdzeThSWnJKaGtpRSt3NFhBNHRNVnV3MktPSXkwOWc5emNzNElWQldadER0VTJrcDZSUmtOTk5iYTBMS3k2VS9Yc3dnY1lNdmwvSXRGNzJjSElDUk94Tkw3TDNxb083dEZOOWRTNUZMS3kwcU91SjhYcnBxYTJIa2RLT283WStSbzhTbzIxMWZnc3pxZ2VyS3JQUTNWdHc2bEVSZU1veUl4dzdpeG5FdDVEZmdDY1hTTXdKWnNUeUxBYmFmRnBGMXRlajRpQ1pvclRqcXo0YVQyUnBrM1FMSTJBbXlFRzVDS3NMY0xncEJEQVNaSWtpZERGSGdRNGdTNWkyZzU3VTI2K2VVcmc1cHVuUEZsZS90a0hPVGs1RXd3R3d5V2hnL24wZlQ5bnp1cEs4dE5rS3R6cHJGNzNFdm5KWmxZL2NpT3pWaDdBYmpRZ2U2b3hGOTNDdW1Vek1WZHZZZmlVLzZWbTMyNmFiSGRUc2NwSjl1QWJXVHByRXVCbDlxUlJiTno3R2U3Q1d5bGRIbXhWN3Q1RGJ0YlBLQ2pKWS92ZVJnYjBTMlBmN3IzTVcvMHhZNG9jckh4NEJvK3YyY0cyS2lmVk5XOFRKdmMxV3hnKy92Nmc0cWFQMHAyN1diVDlLSlA2MmFndjI4Q1k4Yi9DbkpGUFUwVVpRMlkreGlQVE5OYWtsTDZJWS94elRNazl4dFlhZ2FkUlljV3VIZlQ3TnFQNDNuSW1qZm9WWmRXbFZMbTNNWHozQzFoeUwyZnRrbnZBVmNyNHNiK2h2THlVR25VWHc3Yy9ROUhvTzNoa3hzZ1Rzcjh4TS81R2ZtRU9lMHRyZWVURk54azNJSXVtN1V2Sm1mQVlSU2xXTEZhRmZlNTBObXg4aFY3Mkp1NFpmejFiOTFWUVZhY3lmUGg3NER5SGwxOStCQ2QwZUZ3bkQraE9WZklBcW5mdkpHL0FoYmdxUDZKbzJ0OVpmTnNReWpjczViYUhuMmZ2OXUwczJkUEMySEQxazR1N3h2Mk1YZlVhdEZYdjI4M1FXYSt3N000UnFLNUtwbzI5anQwZUp3NWZQUlQ4bkxYTDdnMVdUTlJ4Y1dyLy81d3hyT2pORjVhdnErcUFwZW5OVUY4UTBIeDZsaGE2YVV0YXVFM0VtUXlpVlZFSjlmMDBHK0dyMm9Pb0JoUHlWNGVRVkxBbUp0RzFxNU5Ebi95SDF5czlaR2VrOFB3enk3bmwwWmM1N3p3THkrKzlodm1ibXJHN1A4V1ljUjQyNVN2cWs2OWs5OHR6Z3BkSFBTKytYTWJzZTA4MkZ1ZmxpYWN4dkRnQUFDQUFTVVJCVkh0djRwRjFWZVNtbUtsMEpiTnEvU3ZrT1kxc2ZmbytKai84TmdXNTZWU1hsVEx3dHIrdytNN2dmR2phUlhiZXJZd2RuY3FHWFVkUVhJM01XL01SK2FXUE1QemhMUlE1QkUxTnRlZzZScDNDNGp2T3JRdi93WkpQRHJmNXJIWi9LUmZPZjRVRDN0amZCWGg2NVVvbXYvbngxOXFXcWdiNCtPTzl2UGJhYXl4YTlCZnV1Ky8zL1BLWHYrUzY2OFl5Yk5nd0xycG9JRVZGUmVUbDlTWTdPNXZ1M2J1VG5Kd3NKU1VsU1FrSlZpa3VMazQybVV3R2c4RmdsR1haSk10eW5DUkpWa21TRWlWSjZpSkpVZ3FRQWVRQVp3TkZ2WHIxR3REWWVPVC9DYUhXTkgrNlNuVHRmcUhZMzZ3SUlWVHh0MTlkS241Mi83TkNDRlc4OXFjYlJMY0xKb3ZqQVZVSWY0TzQrdXl1NHFrZERVSUlWUWloaWlkL2U0VzQ1YkV0NGRmNjVkTlhab3MrTjh5UHZIZDh0emlyeDZYaXNGREV6ZWNsaVgrODN5aGVlK0FHOGF2SE5rVytjM2lMNk5Iak1uRzRuZlVKb1lwM0h2dTFPUGZxZTdUOUVXNXg4L2s5eEVOdmxnb2hWQkU0VmlyT3l6eGJmSEJNKzY3LzR4WENZT2dpbm5xM1d2dTkzeU5hL08ydlZ3aFZ2UC84YkpHYW1ocXpkQmRQL3J1Mnc5K0VscmYvK2d0eDFlK1d0ZnZaRzMrNlNWejd4eFVuWEljUXFoQ0JPbkZwank3aStRL3FoUkNxK09TVjJhTGJoVk5GcTFERjBmZWVFSWI0czhTT3cxNGhoQ3IrL011THhFMFByUTMvOXZQWDVvcysxODl1ZjczdEhOZWJMa2dWcjN6cUU4Lzg3aXB4NDU5V2l5UHZMaFY5cnB1cis1MVBYTjhuUWJ6eWVmdjcrdFdISzBYdjNpWGk0K0QrUEhYM1ZlTEszeTRUQWFFS0lUemlqc3ZPRW45NXAxcW9hcUNtcnU2akJUTDhIQmdMakFhdUFpNEhCZ0VYQUVYQnVaa0RaRWlTbEJLY3U0bVNKRmxsV1k2VFpkbGtNQmlNSnBQSllKUWxHY2tnSmRrVEpBa2taMnAzc3JPelNYUEVZYktuY3RGRkE3bDg4UG1ZSkNpNWVoTDMzZmQ3SG5yb0lWNTc3VFUrL25ndnJyS1ZkT3Q5TGMxQzVibmZYYzJ2SDl2TWwyODhUT1pWZHlJQzVaeDc1aVVjQ2w2ZmdmM3I2Tkw5TWc2M2MrMisvZGRidU9xM3k2TGUrK0xOaDhtODhBYU8rclhYci8rLzYvblovU3NRUXVYNHNTWUNvZlVlM1U3UHJ1ZnlSZkI3NHVoT3pqQ1orTU1MdTRMcjh0TFNxdkRwSzNPSlAvTUtEcldxQ09INkJubHNxcCsvdmZvV1NxOEx1Q1UvMnFCc2J2eUtXMS8rZ1B0dnVJYU1HSWZxZXp2L3cvTU5kbDZZOHZYMG1pUkpvcUNnQUtQUmlORm93R0F3aGhtY0xPc2ZvM3h4WWIrYkpDa2g5aVpVVlEwcmh1allXNmkvUWlERTNpb3FLaFNucyt1cXQ5NWE5MzdYUTl0SE93ZGNlbE4yVUNsMjZKRExtUC9FYm1BaUFNV0RCbUdUQWRuSjRJRTU3TnBkeXVUaVFhZDBhR1diSFJzeWRvY2R1ODJPeldiRDdUazVtZTdxcmM4eWZVazU2N2E4b2UyUHE0ek5lenpJbTU3ajNpMGE4L1FwMVpSV3VPblhUNlB3NXB4QmpCOFlsT0F3V3VqTUVPMC9ZUTUxRStiOHNNNjYycjNzOWVRek9GaTluajlrS01iSnY2WmFoV1RBbmorUS9zbWFBVHBrME1Vc1c3c0xHSEdLRzdOaXN4bkJic05oYzJLemUvQ2U1TG53TlpReWJ2ejl6SC94WHhRRTkyZlR4aTM0Y3JPNTc5N1BBQ2gzcXh4NWYvdUtGVisxYnBrNDhjYWpKMkJwb1JwUG55UkpvVFNPZ0M3cUtmVDVhVDdGTDR4eDhaamo0akViUEtMVkQ5YXU4YmdQK2VuYW96dDJleEoyZXlLWjl0MGtkVTJoUjQ4TUVrUWpMeTVkVEhXREIxVngwOVJvSjlTQndXNnpZM1hZY2RvOElOdXc0aWJrRGZVMk5lQ3hPemhab3I5MTg3K3hJdlBnck45ckhMZXlubEx2SG1BOGFsTUY5OTcxSjNhV1ZlRlZmZFM3RzJod1EwNW81Wlo4Sm8zdEYzeGh4aEwwTldUM3Y0QVVNNER0VklFdHdJdHZ2TVYvNURONTZzcjhLR3V5MWQzQXJjOXU1TnFycitLcXJPaE0wNC8zdnM4ZnRydjR4OVFSZEQxRlpaTzh2RHhDemsrajBZakJFQUs2aUptcStlSEN2amdSZkpTQ0VWR2RiellLNEZRZHdJWEFMUUFvVjE0NVlqK3dKUE95WDc2cktNcTFScVB4aXBOeEtuL3pJVWRzOVpOWW5hZDJOK09uL0puRnEvOUZMNGN4dkIrcU9abGhZNjRtSzdpcTBhT3ZKU2MzVXU4b1cyMmNyRmR0NytvRlRKcnpYSnYzNzMzOG40d2ZrTUtQYjhqaGg4alpPQWxaSWFXSjI4ZmZRTW5zcHhoVGxCYTF2Z0ZEcjJaa2dRMUZVZDQrNjZ4ZUc2Wk9IWGRnZVFUUU9nSTF2WTlOMFptZVlYOXhxRStJTEJ1RTBTRHdla0gxdWtWRGF6TUlnYi9GUzBLQ2pUaXpqTWxxbzB1WExqaWREcXhHaWE2cFBlaDVabGZtL2ZJUFhMOXNNOU9IRldDczMweGF3UjlpL20zN2M5Sml0MlAydUhCQjI4Q0wzTjdWb1pKVmRER2pSNGR1L2xjejFaRUJLTnczNldvc2s1NW53eE9ETUZOTmNmSkYwZFBmYXNQU0RuTEpzdkViQkE4UXZQbjIyN3gwUEpsbmYzNGU4YnFkVmp4TjNQSFVlZ1lPR2NhTnZhUC8zdWZsSC9HYlRRZFo4b3VSbkdIOVppcjRQWHYyeEd3MkJ3SE9pTWtVRFhEdE1MY2d3RWxTUkhvOFVxRVFZbTI2d0VKQXg5N0NrK2pBTzA5K1lESTlXVnBUYytDZHQ5L1plRjIvL2xQQ1NyMDd0MnpCclU3R3BqYXllVnNsbzZaR1pLUnRWaHVORGZYZjdmWG5xMmY2dUJzWStlQUxETXZYSFh0N0FVUHlQVlM3bkl3YnJrbnV1QnNhTU5wTzdSemtEWnZLMnY3ajJzeGNaOHFKUS9sV2F5SU5EViszbzVPUGhUT25ZeDB5ZzJramduZnA5QUlLcldWczN0M0FoSDdKbEczYWlGSjRQbGt5ZUFCWDJWWjJOZmdvVGphemFjdC82Ti92OTVGOXNOdHcxZGVnOEYyVzNhZ3N2ZWRHYWdwL3paSUpBNkkrR1RKMElLOStYck5yMHVDU04zdWZsZnRwNk9ZWkEyanRnSnJrbHlRTitJUVFBUUVCT1p4d2l4b0lxQUxKZ05sb0VrYWpFZUZyQnRra3pzaE0xd1FpWlM4ZmYvWVZSbHNpNmFsZCtkenRvVnUzYmppdFhnNDJCUmllY1NiNXVRa2NjWGRsME1BQ2pNRDJkZXVvUDhuN3M1emRqMExmUHNvYW9TUUcyZEtjM2FuY1dCVWxFejlvOENYTW1mOFplZjN2UWJzSEs1cHNQaDZxcXoxTUxTbkdMRVBWcGpYc1BZV21YVi8vM0xZYzRvRk5YK0N5eERGa3ZxWVFhdTZXdzd2VEwyWEhoeCt5c2U0NEg3eStsbis4SG1RSGx3L2ovZ0daL1AydDk2aHRsTGxoNFRQQkZjV3piT1lFK3A1aS85VE16RXdkdUpuUWtnMk5ZVk0xbXNXRmdVNElJYVJnUGFtUXBFQW9WeTRjV05DeHR4REFSYkUzd0orUmtma3YyUmovM3I4L2VYNllFT0k2SUMrRlNvWU51Z3lqcHdaenllK1pNQ0J5ZG9lTnY0VkY0MzVGMGVvSHlCdDJDeS9PbjByZDloY1pPL052ZUJxcXFHcVFLU2w1azRLUmQvRDRqRTcwdDd6N0dEZnNsOVI2WGRUWFZ6T3k1R0xNR1JlejhjWDUxRzk2a2VXNzZpaWNlek12ejlWTzdid1YvMlprdnBVSG4vNEg0OGIvakRVTDhyRDQ2cWwyOTJEanJwVmtuTUp4TjF2dFpGaFBMYStoLzhoSk9CNi9nWUtpRjNBV1hjT1dwMmVkRkxCdFhQa2NqclJSRVdDVDAxaXcrQStNSFhNaEt3cHlLQzJyWmZHS056R2pBWnM5emM2OUl5L0ZhbFVwZDJldzdwR0lRbTM2Z05FTTVSb0tDOC9EbG40QjY5Y3Z3ZG5KY2Uxc3pKOTJCZXZLM095cjlMQjMzRVVzdERwWXNPcE5pdTE3ZVhEUmVzaXJvVi9SMzdUcllPWmYrZU1ORjMwMjlCZXoxdnlxNzZBUGV6OGNVSFJSVEwwaWh5K1dvVW5nRjVvYWh4S2NoMm9FMUNRaHl3aEZFVUpJTW1hemRqMGNiM1lKYzBKeXVBdWMxZXJFWVR5QXF6V080dUtMYUZqM1QxNSt6VVc4MFlTemF6d1pQZlBJN05tTG1WTnlHVFhnUW9veXJNanBtYVNkN1AxUHptRGM2Q3pXYjloRHlmam9iS21DVVZNWXVPd2Fjdkplb1hERXJheFpNSU9jRWJjemE4dk45Qzg4bjRKZTZWUlY3bVBFUFU4eWY5SWdicnR6QWxPSFg4Q3lnalM4MXU3ME9vV2NwdE95OHVEcmpLTkhqMUplWGs1VjFaZlUxdFpTWDE5UFkrTVJtcHFPQldXUFFsVUtMWGk5clhnOEhudytIMEtva3RhaFhpRVFDRWpCL2d1aGFnVXBXTEVnQjhIZkNCaURWUXNtdE1vRk14QjMzMzIvVHp6YlVuSDU2c0ExMXkyL2EyaE9nMWNtSStWMHpDNVRxYXVwQm91VHRPUWZoMGFJNG5WVFU5ZEFTa1lXMW1DK1JkUDJwZVROL0lEYVRYK2lwczVGZWt3YXdROHhoQkQ3RHg4K3ZHYk9uRG03SG52czhWYWRLZWxyeC9RTVBmcURFVTlGdDZoNlgxcXdpb0JnMG0zUWVqR0hHaGxqc1VTNnMydXF0NGs0SEVrNG5WMUpTZWxLdk5uQzJlZWNSMkdmM2xFbFVrMzFOYml4dFVsRk9kRndsYTJoWk1ZR2RtNWFmTkt1RGErN2licEdGMmxwR1ZoMEtUdnV4bm9hUERKWkdjbW4xT1hNK044K3VidDA2VUpoWVNGeGNYSEV4Wm5EZHl3OWc5TXpOeUhVVUljckljdCtTWlpsRkVVUmdVQVVld3NWMThzeDVta0FVSUxtcVIvd3o1Ly9nQTk0cmZjZzhZNzN6dUZEZTNSTHVoYm9lZm9kS1ptMGpPd2ZsZmZMYUxHUm5kMitZb0JzdHBHVlpmdWhBYTN5OE9IRGJ6ejg4TU1mL1BuUEM3dzZnUEozQUdpeGdRRkZIeHdJQXBzSWxVVUY1YnZSUUUzTFR3dFdFMFNCbXMybXFkNG1KWVg2RTJnZDJyT3pzK25kdXpmeDhkRm1reU1sZzFQSjlySG5qMkxoakVacVhTbzVKNm5yYnJFNXlMYTEzWnJObVlMdEcvQ0QvM3JHcHB0RWZQYlpaMVJXN3VmZ3dSb09IVHBFUTBPa3Z0VHRkdVB4ZUhDNWp0SFM0a1VJZ2MvbncrZno0ZmY3SlVWcGw3MUpRZ2c1Q0hDaG1sTkRrTDJaZ3V6TnJGL3V2bnRtNHU5Kzk3dExuVTduMVpJazllR244ZjJ5dUtZYXR1eHpNV1JBL2cvSGpWVzFyTDYrZnYzczJYLzg4TWtubjJ6dEJOQmlGMzhRMU5vRE5EMm9oVmxhRU5SRU1FY052ZVJRQk5UMDFRU3A5T2lSUVU3T21mVHUzZnNIYjdyeVhZMGZEYkNGUmxWVkZaV1ZsZFRVMUZCWFYwZERnNmJHNjNJZDQvaHhOMGVQSHNYajhTQ0VDQmJRdCtMeitmSDcvU0ZsM2lCekMwaXFLcVJnNURSa29vWkNRZ2FkZWRvdXdPWGs1SmkzYnYzUHhhbXBxVmZKc256aFQ1RHo0eCtCUUdEN2dRTTE3MXg4Y1VscFRjMUJKU1l3MEJtbzZRRXQ3RWNMVlE4QVFoL3hiTXZTVEpqTmNlZ1ZiNjFXZmQxbnBKRnhSa1lHT1RrNVpHZG4vNmpQaGZISDlvZXlzN09KajQvSFlva25MaTRPc3prdUhHUXdHazBFQWdGa1dVWUlvVE5UV3pFWURLRTdZWWk5aVVBZ2dDUkpvYnkza0VrcXh3WVhZc3hUSDJDdXJLdzBwNmYzZUFmWVVsNytXVkYyZHZaUWs4azA2cWZMLzhjM1dsdGIxKzdidCsvZG9xSno5K3ZBVE0vU2ZPMkFtcjhEUUF2b1VqakNabWNzU3pNYWpVR1dwb0dheFdMUnlYZ25ZTE1sa3BTVWhOT3BseDNLb21mUEhGSlRVMy8wNThUNFkveFRxYW1wV0szV0lNQlpzRmdpQUJjSUtCZ01CbFJWRFVkUXZWNWpDTnp3K1h4Q2x1WDJmRzhpYUpyR1JrOERCSnRpb0lYaVRYcUFBOHk1dWIxM0FudmVlV2ZqUzhYRkZ3eXkyUkt1Z2xNS1N2NDBUaC9YUjgzeDQ4Zi8rYTkvYmQ0OWV2VG9oZzRBclQxUTgzZkcwRG95TzBNc3JYM1RVKzlQMDRJRVNVa09uRTRuS1NuZDZONjlPMWxaWjlDclYwOFNFeFAvVDV5ZlV6WkZtMXd1anZsbGVuU3hSUmNBQnhScWp4N0hFSjlBYWtKMHI4cVdGZy8xYmgvSmppUVNUTkwzTWZrb0x5L255eSsxaU9taFEvVWNPRkROMGFOTnFHb0F0MXVMbUxhMFJKckZ0TGEyNHZmNzhQbTBoakU2M3h1aDVqRnFRS0FLSVFmYm1ZWk0xSTU4Y0hwVDFRU1lKMHlZWVBuVG54NitJQ1VsWllqUmFPeFF4WGZQNXRWWThvYVJsM2J5elVOcXk2QkNnVUdGUDY2SldyRnJNMnBHTWJuaFk2R2lLRkZsNWhpREUvRkVKY2lxcXVxSzM2TStvYjZtR3AvWjBTWWkyTlJRUTZNYjB0TFQvblhvWU0yN3Yvbk5iejU5L2ZYWC9TY0phUDUyQUMzUUFVTlRRL1hPd1FBQjBTd3Qwcnk0clQ4dG9xUG1kR3BCZ3ZUMGRNNDQ0d3h5YzNPL1UzOWE5ZDZ0dUoyRjVHZWNIaEgzNzAyMmFQbnFWVHkycjVuVVJETzFqYzFNdnZwS3BoZCt0MjBISkVtaWQrL2VKQ1FrQlBONTR2SDcvUmdNUmxRMUVKWGtHNWs4QmxwYmpSZ01QdngrdjlDK0wwdUtFa0JSRktINEF2aFZGVWtTS3RwTk5hd1dFc3gzTXdRbmE0akJHWU9BNWdzQjI0b1ZLMXBYckZqeEwyRHJ4bzF2UDNYKytlZGZrSmlZT0ZTU3BDaGRsL1ZQUDBUeWxBRmZDOWoyYllNVmpUOHVZRk5kNVV5Wit2OVlzZjN0OEhzcjU5M0F4QWZYayt5d2hhZnlJMnMrWW55L1JvcHQ1ekp2MzFHR3Q4ZUpQV1VVcEJWZ0gvY3cyNWZPakFCWHhWYkdqYnVKV21NR2RxVWV1ZkJtdGo1OUQzanJ1V1BDMVordC9zUzNPY25RL05ISG41WWYwWUZTZTREbTd3RFFsQk1BbW1nL09HREFhRFRwcFlhSWl6TVRGMmRweDUrbUtkNTI3WnBNYW1vcUdSazkyUDM2WXR6WExhTDNkeHdrc0NrMWpKbStsbTFySDhSOEdzeVpVMkJzclpRZWFJbVNMWHF5S1pXM0poVFRlT1FJM25oN2xHelI0TkUzTURYUFRrdXJqL2c0N1M4ZjJiK1hpNS8vZ3YvTXVvYnZTMDZ3cWFtSnlzcjlsSmFXVWx0YlN5QVE0T2pSUm80ZDA0SUtzZmx1UVdYZVVOUVVSVkh3Ky8xUzgvRUFmalZBbkRrU1BkVUZHQ1Foa0tGTmtNRVFaSERHR0JZWHRYejg4ZDY4bmoxN1hoZ2ZIejlFVlpSMFZjZENUZ29BVkcyUmpUR01KVWhoM0kzUTVJT010SzhKTEY2b3FvV01iQWlsR25tYW9LNFIwcktJa3E0SjFiNVVWMEZ5QmxoMXMxenhRblVkWkdXM3ZhT3F3YzlTMHFOL0E3QngwVFNXTkE1aDFaenhPbUQ3T1F0ckxtSHI0OU5qMWxSRi8wNkFyWEx0ZzR4ZHNndDMyV0UyVi95YmRDT0FtMG45ZTJLZjloS0xwdzBHb0xTMHJQYk1NOC9ZL05KRDB6Nzh4ZisrVUIzeXFaNEVvT2tYSmNqUUF1MlpuQVNGVDRNMXpURm1wd0dEd1JSc1dteWlJOU16SVNHQlJKc1ZDWWt1S2VuMHpNNElCZ2t5eWM3SzRwRnBBM0ZNZnBPN1JtUkh5MWdCN29aYUdyeG1zak9TMjh5VnhycHFGR3N5S2Zib202cW5xWjY2Smk5cDZSblJVbEg0bUQ2b0Q0TVh2cy80Zmo5OGc1ZnZUYllvQkdxaFkyYzB5SHlmZ1dhSHc4RTU1eFRTMnVyRlpES2hLSDdpNHkzRXhWbUNRUWJORWR2Y2JNSm9iTUZrTXVMMWFpek81L1BoYi9WenBNRWdWRldSQkFxdHJZcVE1QUJtazRxRUpIeCtEZHhDUVFaWkRnY1pBa0pnQUNsWXhTTkN6SzBOeVBYdFc3Z0grQVI0K29JTEx1aDc0TE1QejcvN2hZckJkdzdQU0QrWi96aHRPT3lxZ093SnNIcGU1UDE3eDhBZUdWUTNWSmZDMEZtdytMWVRyKy9wbWJDcUNlcDNBbFl3RnNEV3BmRHdkRmkrQjNKU29MUU01andORTB2QXZRY3l4c0hJWEdod3daNDYyTElMY3UxUXR4c0dqNGFNUXUyZjc5c01XNXNnRzlqK01reStGM29WUVBrK21MOEN4dllQd3lFclZyek82RVVQZnl2ellNM3FOeGc2NFZHOFM2OWw3ZllHcHBVazQ5MjNudFVWV2V5WmZFbXR4K1BaVWxIeHhVZm5uSFBPZmoyNzZnRFEyZ08yMEh1aG9GSWdER2l5ckVwQ3FHcW9JemdJSkVrWVRTWU1zaVM4TFMzSTVnUzZXT1BBM3l3YWpyckl6TTdHYXRGQXpXS0pJeTR1MUpIZFNrS0NqWGpKemVzdnY0RTE3UXppMUdaU2lzZng1SnpCMkJwMk0yNzhQWlR2cWNGWWVSTWJGbGtaTVA1dTVrMGRCa29qc3lkZnk4djdWTEtzSGhwdHhheGQ5VGZTTERCelJDYmJQSDB4bWczVVYrNWw5T3puZUhDeVZzLzU0dHdibVBWeUpZVzlrcW5ZVjg4VFczY3dJSXlKWmthTnVvZ2xMNjlsZkwrSlVjZmNWYmFlQ2ZjOHk3emxLeWh5bkxiQXBoditacGJ0K0lKeGw3Y045bjFWOVNsYmpqbDVXVmN6dXYyRDkxbjAvbjRxajdReWI4TFB2bmYxVjRQQlFNK2VQWW1McytEenRXSzFKZ1M3WE1jQ25KbVdGaTJLMnRyYXFvR2IwY2NaMlVhTzF2bUZLK0NuUzZJV1BRMEVBcUxGRndCSnhXeFNoYXFxa3FJZ0NSQ1NGSTZpQmdDREpLR0FaQWhPZkdQUVREVzJBM1RHSFR0MjdBTDIvT2JLcktjdTIvdFI3NXljbkNLcjFYcGhaN2x4U3pmQTJvV3d0SjF5VEZzQnJKd0xUZHNoZXhvc3ZPM2tUdjcyUGJCM082Ulp3UnZzQ2pqOVliZ242RXFwV2crRDU4TEVEY0U3ZWgzY3N4TUtIWERQY0ZpNUVlNGJBdy9mQzJNZmhIa1RvR29EOU5vWXZNazF3TVRiNGRuZE1EQWQ2clpDOFYwd2VrdHcvM3dWN0N5MWMzdEIyeXVpZE0xZkdGcnhxamFSMHk1ZzlmSjVuV2U4cTNXc1hsZkY3SG45OGRSZXl1TnIxekYxNE1TeThnLzM3ZkIwY1pUMWpEUG9tWm1xWTFtZEFacWlZMmVLSHN3a0NUWFlsRmhvaWd1U2tHUkpHTU9SVG9sV2I2dFFoWUY0czRuNE9CT05UY2RGZ0hpT0hXc2hMYXNuU2JiNHNEOHQwajNLaXMybXFkMGUrYlNVaEw0amVmaXVjZlRva1U1NmVqcFpXVm1RbTh2R2plT1pOZlpzSEpPZlorYkk3UEJoMlB6NGJOWjRMMkx2cm5tWVVWazQ3UkllWHI2TkJWTUhhaVJnd0RqV1BUd1pUL1ZHZXZXL20ybmpkNUJqcVdQSjRzMHMyM3VRUVdtQTRzTVhZMHdVRmhheDY4R2RoQlJ2d3JjbVZ4MjdkbjJFMi9mZkVCVTlCZG1pdm5sbjh6L3BaN0IxOXdjc2VtY1BsMDBkVE1JUFFGTlRVbEp3T3J1UW1KaUl6WllRRlVIVkp0RngzRzR6WnJPSGxoYU40WVZNMDJhekQ4bHZ4R0x4aTJCZ1FmSzRGUXltZ0RBYXRSNE5BVVVWSUNSWkRrZFJKUTNraEJ5OFVPVGdoV0FJbXFuaHNxMTJnTTVZV0hqT1IwRW05OUpiYjYzcmZ0NTU1K1U3SEk0aWs4bDBJWEJTblRVR0J2WC9IRmxnYVFRM25GUjIrYkF4R3FnQllYbVl1cjB3WXlHVTEyZ21aTDF1Z3R0eU5WQUR5TXFDVU8vblhidGg5dFBhOCt5QmtCR2NlVlhib05ZSXF4ZkJHa0QxZ2FzVWFvRXNBRmNEalVZSGpuYmNqRG1Ecm1QeG5LREV0OUYyUXQ5TzQvYTFsS1pkZHV6OHJvRWQ5VVhGZTkrWjlOY3ZEQTlOUGhMeWtYYkN6dG9ETmIzQ1JyVHZERlNCcEdxUFFvUjdic2l5TU1nSTdZYW9DSkMwM3BFR0l4YUxSUmlOUnRLTmNQQndBL2JVYkxwM3Rlc0NCQnFvMld6UnFSelpDZWZ6K3FLVlBMc3lnV0hEUnBCYmRHS2h4eTFiL29YWjA1L1o5LzQrNkRid1VHZlpDMmpBTm1TUVpvNWJzd1pTYkM5bGQ1VkNUbDR5UXdZbGM5dTRheGczOGpJR0R4L0ZvTUtzcVBYYW5RNWM5VWZhYk04NVlESjFkWk5QZDFNVVRsVzJLQ0hCeGxrSk5zNjZzb1EzNXE1ZzI1Rkx1THpyRDVQNWJMVmE2ZE9uRDNhN25jVEVSQklTYkZpdFZxeldlSnFhTkFibmRzZGhOamRqTnB2d2VrMTR2YTBjTnhzeDRDYytQdXg3RTdMa0IyTkFNcHMxQnVkcjFSaWNMR3NwSW9HQVFKS0ZoQWdIN0tUZ1hWM1dtSnprMS9uaURERWdwd2M2WTFCQzZRQ3c4Wnh6Q2szTGxqMlZrNU56Wm0rYnpWWm9OQnI3US90OWxjT0tMbCt6OE00U0crUnl3OWl4TUc4ZGpPd0hudDJRTnFXZDdjUnNTemFDVDRuNEl2U2VYWHNHakJrZGVUMW1QSVFGa093TzdJb0xseGRpNlpqVmtVNWUzZ2wxOU4yS29uemdjcmxLRno3K1ZPV1JEN2ZYMk0zTDFSaG1Gb2p4ZzNVRWFIb3cwLzlHMWZ2UGdvMGlWVWxDSUJDeUxLTUdBa0tXRGFoS3F4RElKTm9UTVp1TUhHdHNFQWFUQmw0bWt3bVA1d2l5TE9Ieks5Z1NiY1RIdE1RTDlmbDBPcDEwNjVaQ2V2cUZiTHZtSmo3NzlGTldQZnNnZjMzdEE4cld6Tzg4S2d3VURyaWMwY09DZ2d1anI4YWVrbjFDcUpqejh2dU0zcjZGTFpzMk1ISEkrVHk0N21NbUZFZWtxdHhOTG16TzA2T0QxZmNrVzZUeTFiRVd1aWRwL0t5eHZvNERpcGt1bGgrK25DTXpNeE9Id3hFRU9Gc1k0T0xqajJLeGFPQ21CUlphTUpsYU9CWm53b0NQaEFSanFHS0JoRGdqTHNVdkxIWURpaThndVlXQ3lSd1FKbGtsRUFqZzk2dElraURZVHliVTZGbHZwc3JCQzhRZ1NWSTQ2S0FEdWZiQXp2alJSM3VONTUxM1hpbXdEMWg3eGhsbkdHNGI5WHhXcStHc0hKOHZxYmZKWkNxUUpLblh0M3JBR3FIYUNDVkYyazZ2VzMxUzZtUU1HZ2pyMThDSUdiQjNQZFFvRWZabXF3WTVHNHFEUVkyR0JoMkdtWE1wem0ya3ROeERZZUdKbzhOQ2lBcFZpRStPSHE2cjJGeXg3OHNiYjV4MHFLYW1SbzFoWmUyeHM0NVlXdml6b05LTEVyTU9WUWloVDlVUVdndGNTY2d5QkZTRXdXQkE4ZnVGd1dSQ1ZWb3htT0t4eHNjSmd4UkFVU0UrVG10N0o3eE5mSFZNMEsrNG1PcTlIMURqeXViOE5JY3U0VllmOWRUcVBidDI2VUpxang2Y2ZlNkZETy9uSUcza2MzZzFsNmpHb0MwVzZoc2EwTHlaMmhnODZGTHUyVnBKdjlrVE5aYXJlbWhvaXR4cU5tM1p4TXlSVS9CVWIyT25xNEFGMlViQWg4dXRValJ3S0VVRGg5SlUray9LeW10QkIyeGxaYVVVOVcvTEdOM2xtNWd4ZnhYM0xGcE12djEwQmJaVGtpMUs1Uy9QdmNTN0xSYTZ4Y3Q4ZWFTWmNTTXZvMy9DYVFIdUpDWW1VbEJRUUZKU2tnN2dFckJhRzJscWlzZGljUkVYMTB4Y25KbkdPRE1tNGNWbU05SGFxa1ZOMHpKOXVDdE0xQi8ySTFSRnlHWUZlNElpQlpON2hkY2JRRGFxUWhhcUZFcjAxUVVhUWlBWFpuSEJ2RGcvMGJseGhoaUFhL1A4eXkrL05QenVyeVdmQVJWeEMza0hNRHp5eUo5c2g1b3VUMDkwOWNocWJiV2RhUkttWGlEM1JsTW8rZm9qQzI0ZkNDVURJTWNHeVZrbk40bnVlaGhHajRIOHBaRGJIN0tDZHFPY0RDc1d3YVNCV3ZEQVZRdm0vckR4OFloVGV1eTRLMWk1ZmlNVENrZEZoK2VGK016cjlYNXgvUGp4TDZ1cnF3Lys4NThiRHQxLy8vMHRnRHFoWDdvNEFaaDFCR3F4ejhOTDhQeEVKZElHMndNSmlLUnJJRWxDUXNKb2tJUmYwZEtLZksxZVRPWTRMQ1pWSEdseWM3akJDMExDYUpBd3g4VmpOY1BlZlhYazlSdElhbGM3R1lNdjR1Mk5PL0hrOXlhN1czSlFsY05KdDI3ZHdxVlJtWm1aYkhyaUxpNWUrQjhLOHJLbzNMdUgyKzc3QjNyNEh6dnRONHlkZGdNYkY5c1pQUGwvV0RCakJJT256V1hFenVzb0tMcUkvQ3dIRmVXVnpGajhKdE9IYW1TL2FmdkxEQnI2R2syVnBVeDYrQmx5TEFCMWpDKytGSGRHUG5ZYXFIVG5zbVprWVJSNVdidm0zNHlkTzYvTnVmZldsL1BNTXk4eDhjSHZEOWkrMTFyUlprOHpSN3dLWFJNVFNUREpQd2lJMWRmWDQvUDV5Y2pvMGY0K05qZFRYVjBkVHVnOWNpUlVhK29LeXlDMXRHaSt0OVpXYnhEY3RIcFRqOXVISWhTRXFxV0hoSXJxUTlVTHdScFVnaldvb1VKN1FrQ25lNVNEZ0NmcmxwQ01raUdtQ2ZTSm5odGlmdy9JcTFhOW1weVhsOWN0T2JsYnFzMldrRzR5bWJvYkRJWU1TWkl5MnhwOWJVZEREU2hXU1B1YUVTQkZBV29oYXlpVWwwZnNabFdCbWhxd0o0TWpZa3g3aFJBSFdnL3ZPamh3K0IrL1dySDI2YStVeHZyRFpXVmxSNjYvZnZ4UklocDY0ZlNKRHNDc0k0Ylc0Zk5ROGJudTkvb1VqWENxUnVneDJCMHRxTllzaVpCY3ZXNkpsRU1aWkFRUzFnUWJscmhRbmFjNUdQRU1CUWdTd3Uzd3VuUnhoRmxhS0RpZ2I0WG44N2lvclcvVU9qcFpUejZMek5OVVQ0TkxJUzA5SFhQdzdqUnplQ2JaTTk5bllxR0NZbkdTSEpYdW9kSlFXNHNiTTFucEtkR3BJL3ZXTW5ENk9yWnZYb0wxTkNBclA3b2krRzhLYktGUlYxY1hMS1EvUkVQRFlSb2JHNE1hYnhHbEVJK24vWW9Gdjk4ZnpuM1RWeTRFQW9vVUNLaGhnQXNFMUNDd3FhaHFHTlRRTWJxT1FDNE1VREdxSTUwdGNzeHpPZVo1YUJ2U280OHVzUFh0MjllZWxwWm1UMHBLc2x1dFZydlpiTFlialVhN3dXQ3d5N0pza3lUSkprbFNnaVJKOFVFZ0RBa0FHSFRldFJBdytHcTM0cHY1TE41emU0dVdiYStKNXZRSndyM3dsNm83RUFnY1Z4VEYxZHJhNnZKNFBNZWJtcHBjWDMzMTFmRzllejkyMzMzMzNSNGRlSWtZSUJPZGIrLzA0Z0FBQzh4SlJFRlVnSmtleURwaWFsRkxKMEFXQldaNklBT0VMRXRDNjVJbVlURElPa0NUTVJpTXNaVURSQkp0MjFZUWFNbTJtaUpIWXFJOXpOS1NrN3NGdTdGck9XcmY1UWdCMjR5aFgyODcrN2F0cGNGUlRFbis2U0VQL3hPd2RaYk40dmR6NE1DQnNJQ2xKb04wbEdQSFhPMktXRWFyaGZpQ0FLZTBBM0FSRnFkMXVsZEQ1VnJFTUxqT1FLNWRzTk9WZDhtZGdKcWhIV0NMWGZUYjZXeWhuY2ZZNTlGTzJyYlA5WStkTGJGQUZydDB4TkxhUEE5SnY3Y0hZaWNDczlEem1KNGFVZXlzTGFDRlFDMVN1TjZSR0dSU2toMkhvd3ZKeVYxeHlHNys4MkVsRG1jWERJYm8vdlQ5aDQxblFPNjMyMTE5Mzg3TldIc05KTXRwL3ErK3puOEN0cE1ZeDQ0ZDQrREJnOVRWMVhINGNJaTlSWFRlbXBzOU92TTBVclVRcVRtTkJyaEFJQkJscHFxcUdnVnlRcWlTcW9xd3FVcTQ0Yk9RaEVBUGRGSTdJQlFEVU1LZ1ZVTzB5OUk2QXplcEE0Q1Qyd0cxemdDdU0zQ0xCVFRhQWJIT0dKcmFBVnVMZXEybDJraWRnbGpRWjZick54djJtNFhBTEdocVNraFNOSmpwUUUyRUZHUDBnR1kwUmhoYXFIcWdiVjZhVFZmbkdmR2w5ZWpSZzZTa0pINGEzM2xVOVAvZVNFcEtJaWtwaWE1ZHUxSmIreFgxOVllQ09tOUhneVZaeDRNRjljM2hnbnF2VjErU3BXZHZJUk0xRUtVZW9nbGNCZ2dFVkZSVkZVR1FFNnFxU3FGK00xcS9CcUpZWFBBQ2ptVjBPZ0NTWkVtS0JUd2hCd0d5TTBEckROeStEblA3T3NEMmRjek9kZ0V1Q0VpZEFoalJ6YkxEb0tyM21ZVmVCd0V0aXBscFFDYUgyajZLRUZPTDFIWWF3d3JPRVpZV3FSNndSS1Z3aEZoYUVsMjZkQ0U1T1ptVWxGVFMwN3YvbjVBWCtnbllmdUJSV3ZvSnVibG5rWnFheW9FRE5kVFZmY1hodzRjNWN1UklsSkJseUR6Vks0Ym9hMDQxMzVzR2NvRkFHT0FJQkFKNmlTUkp4K0JFaE1tSjBLT0lNVlhSUjFjamJGeEk3WU5TRk5oRmZhY2RjMWM2QWJCMXhOcGlUVkxSQ2JoMUJuQnFlNjkxb05RWnM0djlUZFMyOUs5alRFMWtXZFlGQS9TQVppQ2t1aEVMYUFaRGhLSHBpOWJiVTdiVnpNNklFR1RYcmwyRExLMDdtWmsvS1ZyOUJHdy93TWpNekNBMU5ZWGEydHF3U205Yjg3UTVHRndJQVp3dnh2L1docjJGQWd4QmtGTTdCRGtkd0JITjVxUllvSXQ2M3M1bmJaWmdIbDBuekV4TDB2b3VmV3hCMW5XeVRLNmpCYjFwR2ZPYTlsaFppSm5wL0dmdGdGbkk3RFIyd3RMMGZqUnpVQk13WGljQ0dXMTJodFJ0MDlQVE1adk5QMTFnUHd5d0JkaXhkeC8vclBpS1k0cE13Vms5dWVIY016QURyYzFOdkxyck0vYldIY05nc1RHeXVKQUx1OGNrd2l2TlBQWHZqem16OTlrTXp2anY5UjJZeldheXM3TkpUVTF0WTU3cW82ZlIvamM5ZytzNGVxb29Db3EvbFpaV0NZdFppZ0k1WGJDaFBaQWowaVlWS2ZaUlZWVWtXUTRKMk1ReU96cGhZcnJYVWtqVzYyVEJyQ1BHRnZXZUNOblpKMlp5ZEFKZ2tkOExJVlJWWURESVVVeE01eTlEbjZJUkMyYWh3SUMrQ2JlZW9YVVc3WXo0MFN4dC9HaWhhR2VzMlJuYlVLVzlVYllic29xZzNaYXc3aW9tVEhtWXhTdVc0TlJkMWJYbGU1QlQ4a2x6ZkR1QTZTbGR4ZUM1dTlqNTh2eHZ2SjRoYzNleC9SVFdjekwvNlJUMDJJNnplbmN0UllYWnBKcFZscjI5a2MrT1g4YURnN0w1c3JLS2o1dGxMdTJiaS92SVFYNzk5NVVzdm1NaUE3cEVOdlBXNXEwc2VlOUxyckwxK0s4R3R0Q0lqNCtuWjg4YzB0SlNxYXVybzc2K1BtaWU2djF2SVlCcmFTT0wxRkgwdExuaENJY2JBK1JrcGVqVFE0VE9ENmNIT1lSUWhSWndVQWtHSHNKQUY3ek9KU0VFa2l3alJjQ09rMkZkTWNCM0lqQTcyWEtTTnFhcGlQdzRDcVJDN0tvanRxY0h4UER6NFA4ekdBemg5Mk1DQUVRZVk4Rk0xalhkMWdPYUlkaVl1Nk5vWjdTc1VFaUZRd08waUIrdGE5ZXVwS1Nra0phV0ZwV1BkcUl4YlFRc3JJRCs3UlROclZzeUI4dUE4VkdnQnJEa3ZwL2ptUHhXVkJIOE43cWhweFZ3KzZSdm50S2hlbDFVVlI4K3BkK2V6SC82K3NBbU8zaGc4dVhobDEwOGg3bDF6NWN3S0p2Y3ZrVTgwRGYwU1RhN1AvbVVMZnNiR2RCRk94Q3V1djA4VjJ2anVqT3RlSDVrMURjaElZR2VQWHZTdlh2M2NQVDBTTzFuUFAvQ2UvUXRLY0hlY2h6WG9VbzJmVkpMbjc2NUpMUzJCQU1Nc1F6T3k0RXZ2cURwV0ROQ0VSdzVjZ1JWTXBHUzRvUkFnSURpNWZEaFkxaXRSbkhNNVVKRnhwN2tRQloreWVWeW93UzBXSUlwemlKTVJna2hCQUcvRDE4Z0lBQkpsZzFJaE1CT1JWRlVMU0NocXFDeGxwTUZyVFlBcGtYWXBUQ2xDNmJrSTdjdmNpakMzd21CclBiOVlGNFlZWUFLN20yUTFXbUFKSVFxaE5CK0wwa3lScU1oQkhBRUZEOENDVW5Xb3BRaFVBdjRXMUV4b3JTMkVoQmd0ZG14eHBuQ1FOWk8yZ1p0ZldudE16U3Q3MEFRMEl6eDdQbkVTdTRaTm5ac1M2UmJUaEkzVDNTUTNrM3pveDJ0U09OdnoxaHh5VEIrT2d3dEJEeXdjQkdNdnhQU0xPQ3JoMGVlaFJsM1FlVW1XTGtacXR6dytGeElNOE9JU1RBd040UVNqU3grNGwvY3RXVnArT0EybFc5andiTnZzYm0wSHN2eVA5TzAzVUhlNEd1Wk9GUnJabHk1Y3kxYm01SkpxZDNDaTVzK0lYZkl6N2x2OG5BcWQyM2c2WmZmb3JxdWtmVGM4NWx4KzNUUzdScE1ySHY2WWJaVkhNZWFkWDdVaWF6WXZvYnRqWGE4ZXphd3RlSUlJNmY4bHJFbHVTZHgxZmhZdldRZWEzWitTYitSTjNIYjJCSmtvTDU4TzB1ZlhVVjU5U0djR2IyWmR2dWQ1S1ZaVC9pZlZFODl5eFl2Wm12cEFiNXgrdituOVEza3ByZVRTK00vVHNVUmxUNnBRVmFtK25obzdVNm1YM2srY1QvT2psK0FWbHlmazVQRE9lZWNRLzY1Z3pqSDBjQ0xHOHZJeWtwangvbzFtRFB5eVV4THBWdTNGSktUdStKME9uRTR1b1RMdWV4Mk82azlNa2gxSmlLWkUwaExTeU0xcFNzSlZvMEJ4TWNaY0x1UGMrUm9NM2FIRTd2Tmd0RWNSNXhSRnJJcFR0aVRrb1F0d1N4OExjMWdER2EwV3pRNUpzMDJNd21UeVNTTVJxTXdHaVFSQkFoaE1CcUUxc1JCVWcwR2d5ckxjbnRMSUxpRUd2ZEdMNXIybkNKSmtxWjRvZFZWaGwvSExBRkprZ0t5SkFWa1dRNG15V3JybG1VcHZCMkJVSVdHdW1wd3U2ckJZRkFsdEk1TkpwTlJTS2hDQ2FqQ2FEUUtrOGtrVENhek1FaUlnQ3AwaXJOeGlJQkNhMnVyc0NRa0NwdFpGbTdYY1JFWHIvbS9Jbzc5NEhHT2o4ZHF0WEM4c1o1RGh3NVJWMWRIYlcwdEJ3OGU1S3NqYnV4Mk8wbEpTVGdjWFlKK3NxNTA2NVpDYW1vcTZjbmRlVzlMQm1VTlozRDk5VGswN3N4bFcxMCs1NXh6RGtwRkR0ZmVhYVZrTEV3YUNYZU5nWjMxZ0JXeWZERHBIazBzZE5ZVWNLV0JYWWIwWGpCOE9Eak5VRHhFZTU2bHUrUjg1WnZZS2ZkblFIcUVwMWlTc3hnMi9BcXlVMnowNm5jeHc0ZGZRYjllRVZtL3lwMXZjdCswWDdDcXdzTDRpZGRqVlZ3QVZGV1UwMnZBbGR4KzF4MWt1ZDlqMkpSNVljR0N2SDZES2NrSzhNaXlOMktBN1ExbVRMc2J0V0FvRTRabU1uM3N6VlNmaEVSUjArNVZiSEQxWXZxVWExazkrem9XYjZnRW9LYXlBbWQrQ1hmZWRRY2xLWWNZTnVJVzNDZjZUNnFMR1NNdVpsMk5uV20zMy9ITmdnZlYrei9oc1U4Q1BEbmo3RmlpeVROck5oSjM5Z0N1N0tHVkpPN2M4UjVObVVVTTZtYm13LzhEemt1THhVSjJkalozTFg2QlR5Ky9tTWNmLzRER3pKSE12dTRTM0M1OWlvaW5UWW1XMVpxSVRiaW85UGpKeU1pSTlzRVp0Um1UY1ZadkVnMUNaNlphTU1mN2FQWTBvMGp4eUhLTFVERVFGMmRHbU0zRVdWUWFXcjJTMFJ4SG5DRm9zaXFDRnE5ZnhOc1NrSVdndGFVWlJZRFJhQ1Jpd1lxUU9Sb21Xa0VpRmtXK2hORGlwcW8vQUxLTWpDb0ZBbUF3R0pHbGprMVFqV1JKK0gwK0pJTVJveHg1RDBBRUFnUWtDWXNsTHNxa05KdE5CQlNGZ0Nvd0dtUjhBVUZjbkJsSmtwRXNGcFFXRjY1V1NWZ3NjV0Z6cy9XNGhDa3VpV1NuQTFsSzRIaGxMWEpjUFBGR2ZiV0FQakFnMDJwTEpJNW9jOVNjMkFXbnMwdVVEMDNmU01WT0VpYWpnOS8rMFVtLzFHNTBQNTdLcXpWR0xCWll1aEFtem9JUkpkci9uem9VVnF5RjRpa3daaFpzSGdGanhrQlRDbXdNeXBxbFpHdUwzUXo5U3RxYW9yWGxWVmh5TXFOa1hTek9ERXBLTWxpZllzV1JYMHhKU1Z1enpaaDNCWS9QdXgwWkdCNThiOGo0R2RSVzdHVnZlUTBaaGVkUzkreGJOQUxKUUU1aE1TbStNdVJsYlUzSWdwRTNNbTNVRUtDWWdiUCt6TjVhVFNtNTA1RStpUG4zanNjQnpKcHhEZmU4dUlyYmg4MmszL0NKWkZmdlkwOVpKZVplNTJDcGZJQUtOeFIxOHA5Y3UxZXp2RGFQbXMwenNRUC9IM2l4Z0ptUU81d3VBQUFBQUVsRlRrU3VRbUNDIl0sWzEsImRldGFpbHMtY29udGFpbmVyIl0sWzEsImRldGFpbHMiXSxbImhyZWYiLCJodHRwczovL3d3dy50ZW5zb3JmbG93Lm9yZy9hcGlfZG9jcy9weXRob24vdGYvZGVidWdnaW5nL2V4cGVyaW1lbnRhbC9lbmFibGVfZHVtcF9kZWJ1Z19pbmZvIiwidGFyZ2V0IiwiYmxhbmsiLCJyZWwiLCJub3JlZmVycmVyIG5vb3BlbmVyIl0sWyJocmVmIiwiaHR0cHM6Ly93d3cudGVuc29yZmxvdy5vcmcvYXBpX2RvY3MvcHl0aG9uL3RmL2RlYnVnZ2luZyIsInRhcmdldCIsImJsYW5rIiwicmVsIiwibm9yZWZlcnJlciBub29wZW5lciJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoQ2YoMCwiZGl2IiwwKSxDZigxLCJkaXYiLDEpLFB1KDIsIkRlYnVnZ2VyIFYyIGlzIGluYWN0aXZlIGJlY2F1c2Ugbm8gZGF0YSBpcyBhdmFpbGFibGUuIiksTWYoKSxDZigzLCJkaXYiKSxQdSg0LCJUbyB1c2UgdGhlIGRlYnVnZ2VyLCIpLE1mKCksQ2YoNSwiZGl2IiksQ2YoNiwib2wiKSxDZig3LCJsaSIpLFB1KDgsIiBBZGQgdGhlIGZvbGxvd2luZyBsaW5lIHRvIHRoZSBiZWdpbm5pbmcgb2YgeW91ciBwcm9ncmFtOiAiKSxDZig5LCJkaXYiLDIpLENmKDEwLCJzcGFuIiksUHUoMTEsInRmLmRlYnVnZ2luZy5leHBlcmltZW50YWwuZW5hYmxlX2R1bXBfZGVidWdfaW5mbygiKSxNZigpLENmKDEyLCJzcGFuIiwzKSxQdSgxMywibG9nZGlyIiksTWYoKSxQdSgxNCwiLCAiKSxDZigxNSwic3BhbiIsMyksUHUoMTYsJ3RlbnNvcl9kZWJ1Z19tb2RlPSJGVUxMX0hFQUxUSCInKSxNZigpLFB1KDE3LCIsICIpLENmKDE4LCJzcGFuIiwzKSxQdSgxOSwiY2lyY3VsYXJfYnVmZmVyX3NpemU9LTEiKSxNZigpLENmKDIwLCJzcGFuIiksUHUoMjEsIikiKSxNZigpLE1mKCksTWYoKSxDZigyMiwibGkiKSxQdSgyMywiUmUtcnVuIHRoZSBwcm9ncmFtLiIpLE1mKCksTWYoKSxNZigpLENmKDI0LCJkaXYiLDQpLENmKDI1LCJkaXYiLDUpLENmKDI2LCJkaXYiLDYpLHZmKDI3LCJpbWciLDcpLE1mKCksQ2YoMjgsImRpdiIsOCksUHUoMjksIkF1dG8tYWxlcnRzIGZvciBwcm9ibGVtcyBmb3VuZCIpLE1mKCksTWYoKSxDZigzMCwiZGl2Iiw1KSxDZigzMSwiZGl2Iiw2KSx2ZigzMiwiaW1nIiw5KSxNZigpLENmKDMzLCJkaXYiLDgpLFB1KDM0LCIgSW50ZWdyYXRlZCBkZWJ1Z2dpbmcgdG8gdHJhY2UgcHJvYmxlbXMgdG8gdGhlaXIgY2F1c2VzICIpLE1mKCksTWYoKSxDZigzNSwiZGl2Iiw1KSxDZigzNiwiZGl2Iiw2KSx2ZigzNywiaW1nIiwxMCksTWYoKSxDZigzOCwiZGl2Iiw4KSxQdSgzOSwiTGluayBsb2cgdG8gY29kZSIpLE1mKCksTWYoKSxNZigpLENmKDQwLCJkaXYiLDExKSxDZig0MSwiZGl2IiwxMiksUHUoNDIsIiBUaGUgbG9nIGRpcmVjdG9yeSBtdXN0IGNvbnRhaW4gVGVuc29yRmxvdyBEZWJ1Z2dlciAoVjIpIGRhdGEuIHRmLmRlYnVnZ2luZy5leHBlcmltZW50YWwuZW5hYmxlX2R1bXBfZGVidWdfaW5mbygpIHdpbGwgY29sbGVjdCB0ZW5zb3IgZGF0YSwgZ3JhcGggc3RydWN0dXJlcywgdGhlIGFzc29jaWF0ZWQgc3RhY2sgdHJhY2VzLCBhbmQgc291cmNlIGNvZGUgdG8gdGhlIHNwZWNpZmljZWQgZGlyZWN0b3J5IGxvZ2RpciBhcyB0aGUgaW5zdHJ1bWVudGVkIFRlbnNvckZsb3cgcHJvZ3JhbSBleGVjdXRlcy4gIiksTWYoKSxDZig0MywiZGl2IiwxMiksQ2YoNDQsImRpdiIpLFB1KDQ1LCIgU2VlICIpLENmKDQ2LCJhIiwxMyksUHUoNDcsIiBkb2N1bWVudGF0aW9uICIpLE1mKCksUHUoNDgsIiBvZiB0aGUgUHl0aG9uIEFQSSBvZiBEZWJ1Z2dlciBWMi4gIiksTWYoKSxDZig0OSwiZGl2IiksUHUoNTAsIiBTZWUgIiksQ2YoNTEsImEiLDE0KSxQdSg1MiwiIGhlcmUgIiksTWYoKSxQdSg1MywiIGZvciBvdGhlciBUZW5zb3JGbG93IGRlYnVnZ2luZyBBUElzLiAiKSxNZigpLE1mKCksTWYoKSxNZigpKX0sc3R5bGVzOlsiLmFyZ1tfbmdjb250ZW50LSVDT01QJV0ge1xuICBjb2xvcjogbGlnaHRibHVlO1xuICBmb250LXN0eWxlOiBpdGFsaWM7XG4gIG1hcmdpbjogMnB4O1xufVxuXG4uY29kZVtfbmdjb250ZW50LSVDT01QJV0ge1xuICBmb250LWZhbWlseTogJ1JvYm90byBNb25vJywgbW9ub3NwYWNlO1xuICBtYXJnaW46IDEwcHg7XG59XG5cbi5jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdIHtcbiAgaGVpZ2h0OiAxMDAlO1xuICBmb250LWZhbWlseTogUm9ib3RvO1xuICBmb250LXNpemU6IDE1cHg7XG4gIG92ZXJmbG93LXk6IGF1dG87XG4gIHBhZGRpbmc6IDUwcHg7XG59XG5cbi5kZXRhaWxzLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0ge1xuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgd2lkdGg6IDEwMCU7XG59XG5cbi5kZXRhaWxzW19uZ2NvbnRlbnQtJUNPTVAlXSB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgbWFyZ2luOiAxMHB4IDYwcHg7XG4gIHdpZHRoOiA1MCU7XG59XG5cbi5leGhpYml0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0ge1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICB3aWR0aDogMTAwJTtcbn1cblxuLmV4aGliaXRbX25nY29udGVudC0lQ09NUCVdIHtcbiAgYWxpZ24tY29udGVudDogY2VudGVyO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIG1hcmdpbjogMTBweCA2MHB4O1xuICB2ZXJ0aWNhbC1hbGlnbjogdG9wO1xuICB3aWR0aDogMzEwcHg7XG59XG5cbi5leGhpYml0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5kZXNjcmlwdGlvbltfbmdjb250ZW50LSVDT01QJV0ge1xuICBmb250LXdlaWdodDogYm9sZDtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB3aWR0aDogMzEwcHg7XG59XG5cbi5leGhpYml0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5zY3JlZW5zaG90W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGNhbnZhc1tfbmdjb250ZW50LSVDT01QJV0ge1xuICBoZWlnaHQ6IDIwMHB4O1xuICB3aWR0aDogMTAwJTtcbn1cblxuLnRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSB7XG4gIGZvbnQtc2l6ZTogMTM1JTtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIG1hcmdpbi1ib3R0b206IDI1cHg7XG59Il19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKE9YLFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6ImluYWN0aXZlLWNvbXBvbmVudCIsdGVtcGxhdGVVcmw6Ii4vaW5hY3RpdmVfY29tcG9uZW50Lm5nLmh0bWwiLHN0eWxlVXJsczpbIi4vaW5hY3RpdmVfY29tcG9uZW50LmNzcyJdfV19XSxudWxsLG51bGwpO2NsYXNzIFBYe2NvbnN0cnVjdG9yKHQpe3RoaXMuc3RvcmU9dH19UFguybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFBYKShnZihpUykpfSxQWC7JtWNtcD1zbyh7dHlwZTpQWCxzZWxlY3RvcnM6W1sidGYtZGVidWdnZXItdjItaW5hY3RpdmUiXV0sZGVjbHM6MSx2YXJzOjAsdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmdmYoMCwiaW5hY3RpdmUtY29tcG9uZW50Iil9LGRpcmVjdGl2ZXM6W09YXSxlbmNhcHN1bGF0aW9uOjJ9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKFBYLFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6InRmLWRlYnVnZ2VyLXYyLWluYWN0aXZlIix0ZW1wbGF0ZToiIDxpbmFjdGl2ZS1jb21wb25lbnQ+PC9pbmFjdGl2ZS1jb21wb25lbnQ+ICJ9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTppU31dfSksbnVsbCk7Y29uc3Qgd1g9X2soIltEZWJ1Z2dlcl0gRGVidWdnZXIgTG9hZGVkIiksa1g9X2soIltEZWJ1Z2dlcl0gRGVidWdnZXIgVW5sb2FkZWQiKSxTWD1faygiW0RlYnVnZ2VyXSBBIE5ldyBEZWJ1Z2dlciBEYXRhIFBvbGxpbmcgRXZlbnQgQmVnaW5zIiksRFg9X2soIltEZWJ1Z2dlcl0gRGVidWdnZXIgUnVucyBSZXF1ZXN0ZWQiKSxSWD1faygiW0RlYnVnZ2VyXSBEZWJ1Z2dlciBSdW5zIExvYWRlZCIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLEVYPV9rKCJbRGVidWdnZXJdIERlYnVnZ2VyIFJ1bnMgUmVxdWVzdCBGYWlsZWQiKSxBWD1faygiW0RlYnVnZ2VyXSBOdW1iZXIgYW5kIEJyZWFrZG93biBvZiBBbGVydHMgUmVxdWVzdGVkIiksVFg9X2soIltEZWJ1Z2dlcl0gTnVtYmVyIGFuZCBCcmVha2Rvd24gb2YgQWxlcnRzIExvYWRlZCIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLE5YPV9rKCJbRGVidWdnZXJdIEFsZXJ0cyBEYXRhIG9mIGFuIEFsZXJ0VHlwZSBJcyBMb2FkZWQiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSx6WD1faygiW0RlYnVnZ2VyXSBBbGVydCBUeXBlIEZvY3VzIFRvZ2dsZWQiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSxJWD1faygiW0RlYnVnZ2VyXSBOdW1iZXIgb2YgVG9wLUxldmVsIEV4ZWN1dGlvbnMgUmVxdWVzdGVkIiksSFg9X2soIltEZWJ1Z2dlcl0gTnVtYmVyIG9mIFRvcC1MZXZlbCBFeGVjdXRpb25zIExvYWRlZCIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLEZYPV9rKCJbRGVidWdnZXJdIEV4ZWN1dGlvbkRpZ2VzdHMgUmVxdWVzdGVkIix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSksTFg9X2soIltEZWJ1Z2dlcl0gRXhlY3V0aW9uRGlnZXN0cyBMb2FkZWQiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSxCWD1faygiW0RlYnVnZ2VyXSBTY3JvbGwgTGVmdHdhcmQgb24gdGhlIEV4ZWN1dGlvbiBUaW1lbGluZSIpLFZYPV9rKCJbRGVidWdnZXJdIFNjcm9sbCBSaWdodHdhcmQgb24gdGhlIEV4ZWN1dGlvbiBUaW1lbGluZSIpLGpYPV9rKCJbRGVidWdnZXJdIFNjcm9sbCB0aGUgRXhlY3V0aW9uIFRpbWVsaW5lIHRvIEdpdmVuIEluZGV4Iix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSksVVg9X2soIltEZWJ1Z2dlcl0gRXhlY3V0aW9uIERhdGEgT2JqZWN0cyBCZWluZyBGb2N1c2VkIE9uIix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSksV1g9X2soIltEZWJ1Z2dlcl0gRXhlY3V0aW9uIERhdGEgT2JqZWN0cyBMb2FkZWQiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSxHWD1faygiW0RlYnVnZ2VyXSBOdW1iZXIgb2YgSW50cmEtR3JhcGggRXhlY3V0aW9ucyBSZXF1ZXN0ZWQiKSxZWD1faygiW0RlYnVnZ2VyXSBOdW1iZXIgb2YgSW50cmEtR3JhcGggRXhlY3V0aW9ucyBMb2FkZWQiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSxxWD1faygiW0RlYnVnZ2VyXSBJbnRyYS1HcmFwaCBFeGVjdXRpb24gRGF0YSBSZXF1ZXN0ZWQiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSxaWD1faygiW0RlYnVnZ2VyXSBJbnRyYS1HcmFwaCBFeGVjdXRpb24gRGF0YSBMb2FkZWQiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSxYWD1faygiW0RlYnVnZ2VyXSBTY3JvbGwgSW50cmEtR3JhcGggRXhlY3V0aW9uIExpc3QgdG8gR2l2ZW4gSW5kZXgiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSxLWD1faygiW0RlYnVnZ2VyXSBHcmFwaCBFeGVjdXRpb24gaXMgRm9jdXNlZCBPbiIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLEpYPV9rKCJbRGVidWdnZXJdIEdyYXBoIE9wIElzIEZvY3VzZWQgT24iLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSxRWD1faygiW0RlYnVnZ2VyXSBHcmFwaCBPcCBJbmZvIFJlcXVlc3RlZCIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLCRYPV9rKCJbRGVidWdnZXJdIEdyYXBoIE9wIEluZm8gTG9hZGVkIix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSksdEs9X2soIltEZWJ1Z2dlcl0gU291cmNlIEZpbGUgTGlzdCBSZXF1ZXN0ZWQuIiksZUs9X2soIltEZWJ1Z2dlcl0gU291cmNlIEZpbGUgTGlzdCBMb2FkZWQiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSxuSz1faygiW0RlYnVnZ2VyXSBTb3VyY2UgRmlsZSBMaW5lIElzIEZvY3VzZWQgb24iLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSxvSz1faygiW0RlYnVnZ2VyXSBTb3VyY2UgRmlsZSBSZXF1ZXN0ZWQiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSxpSz1faygiW0RlYnVnZ2VyXSBTb3VyY2UgRmlsZSBMb2FkZWQiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSxhSz1faygiW0RlYnVnZ2VyXSBBIFNldCBvZiBTdGFjayBGcmFtZXMgSGF2ZSBCZWVuIExvYWRlZCIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLHJLPSJkZWJ1Z2dlciI7dmFyIHNLLGxLLGNLO2Z1bmN0aW9uIGRLKHQpe2lmKG51bGw9PT10LmNvZGVMb2NhdGlvbkZvY3VzVHlwZSlyZXR1cm4gbnVsbDtsZXQgZT1bXTtpZih0LmNvZGVMb2NhdGlvbkZvY3VzVHlwZT09PWNLLkVYRUNVVElPTil7Y29uc3R7Zm9jdXNJbmRleDpuLGV4ZWN1dGlvbkRhdGE6b309dC5leGVjdXRpb25zO2lmKG51bGw9PT1ufHx2b2lkIDA9PT1vW25dKXJldHVybiBudWxsO2U9b1tuXS5zdGFja19mcmFtZV9pZHN9ZWxzZXtpZihudWxsPT09dC5ncmFwaHMuZm9jdXNlZE9wKXJldHVybiBudWxsO2NvbnN0e2dyYXBoSWQ6bixvcE5hbWU6b309dC5ncmFwaHMuZm9jdXNlZE9wO2lmKHZvaWQgMD09PXQuZ3JhcGhzLm9wc1tuXXx8IXQuZ3JhcGhzLm9wc1tuXS5oYXMobykpcmV0dXJuIG51bGw7ZT10LmdyYXBocy5vcHNbbl0uZ2V0KG8pLnN0YWNrX2ZyYW1lX2lkc31jb25zdCBuPVtdO2Zvcihjb25zdCBvIG9mIGUpe2lmKG51bGw9PXQuc3RhY2tGcmFtZXNbb10pcmV0dXJuIG51bGw7bi5wdXNoKHQuc3RhY2tGcmFtZXNbb10pfXJldHVybiBufWZ1bmN0aW9uIHBLKHQsZSl7cmV0dXJuIHQuZmluZEluZGV4KCh0PT50Lmhvc3RfbmFtZT09PWUuaG9zdF9uYW1lJiZ0LmZpbGVfcGF0aD09PWUuZmlsZV9wYXRoKSl9ZnVuY3Rpb24gbUsodCxlLG4pe2lmKGU+PW4pdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCBiZWdpbiB0byBiZSBsZXNzIHRoYW4gZW5kLCBidXQgZ290IGJlZ2luPSR7ZX0sIGVuZD0ke259YCk7cmV0dXJuIHQuZmluZEluZGV4KCh0PT50LmJlZ2luPT09ZSYmdC5lbmQ9PT1uKSl9ZnVuY3Rpb24gZksodCl7Y29uc3QgZT10LnNvdXJjZUNvZGUuZm9jdXNMaW5lU3BlYztpZighdC5zdGlja1RvQm90dG9tbW9zdEZyYW1lSW5Gb2N1c2VkRmlsZSlyZXR1cm4gZTtjb25zdCBuPWRLKHQpO2lmKG51bGw9PT1uKXJldHVybiBlO2NvbnN0IG89KGZ1bmN0aW9uIGkodCxlKXtpZihudWxsPT09ZSlyZXR1cm4gbnVsbDtmb3IobGV0IG49dC5sZW5ndGgtMTtuPj0wOy0tbil7Y29uc3Qgbz10W25dLHtob3N0X25hbWU6aSxmaWxlX3BhdGg6YX09bztpZihpPT09ZS5ob3N0X25hbWUmJmE9PT1lLmZpbGVfcGF0aClyZXR1cm4gb31yZXR1cm4gbnVsbH0pKG4sZSk7cmV0dXJuIG51bGw9PT1vP2U6b30hKGZ1bmN0aW9uKHQpe3RbdC5VTlNQRUNJRklFRD0wXT0iVU5TUEVDSUZJRUQiLHRbdC5OT19URU5TT1I9MV09Ik5PX1RFTlNPUiIsdFt0LkNVUlRfSEVBTFRIPTJdPSJDVVJUX0hFQUxUSCIsdFt0LkNPTkNJU0VfSEVBTFRIPTNdPSJDT05DSVNFX0hFQUxUSCIsdFt0LkZVTExfSEVBTFRIPTRdPSJGVUxMX0hFQUxUSCIsdFt0LlNIQVBFPTVdPSJTSEFQRSIsdFt0LkZVTExfTlVNRVJJQ1M9Nl09IkZVTExfTlVNRVJJQ1MiLHRbdC5GVUxMX1RFTlNPUj03XT0iRlVMTF9URU5TT1IiLHRbdC5SRURVQ0VfSU5GX05BTl9USFJFRV9TTE9UUz04XT0iUkVEVUNFX0lORl9OQU5fVEhSRUVfU0xPVFMifSkoc0t8fChzSz17fSkpLChmdW5jdGlvbih0KXt0LkZVTkNUSU9OX1JFQ09NUElMRV9BTEVSVD0iRnVuY3Rpb25SZWNvbXBpbGVzQWxlcnQiLHQuSU5GX05BTl9BTEVSVD0iSW5mTmFuQWxlcnQiLHQuVEVOU09SX1NIQVBFX0FMRVJUPSJUZW5zb3JTaGFwZUFsZXJ0In0pKGxLfHwobEs9e30pKSwoZnVuY3Rpb24odCl7dFt0LkVYRUNVVElPTj0wXT0iRVhFQ1VUSU9OIix0W3QuR1JBUEhfT1BfQ1JFQVRJT049MV09IkdSQVBIX09QX0NSRUFUSU9OIn0pKGNLfHwoY0s9e30pKTtjb25zdCB1Sz1WUyh7cnVuczp7fSxydW5zTG9hZGVkOntzdGF0ZTpVRS5OT1RfTE9BREVELGxhc3RMb2FkZWRUaW1lSW5NczpudWxsfSxhY3RpdmVSdW5JZDpudWxsLGxhc3REYXRhUG9sbE9uc2V0VGltZU1zOi0xLGxhc3ROb25FbXB0eVBvbGxEYXRhVGltZU1zOjEsYWxlcnRzOnthbGVydHNMb2FkZWQ6e3N0YXRlOlVFLk5PVF9MT0FERUQsbGFzdExvYWRlZFRpbWVJbk1zOm51bGx9LG51bUFsZXJ0czowLGFsZXJ0c0JyZWFrZG93bjp7fSxhbGVydHM6e30sZXhlY3V0aW9uSW5kaWNlczp7fSxncmFwaEV4ZWN1dGlvbkluZGljZXM6e30sZm9jdXNUeXBlOm51bGx9LGV4ZWN1dGlvbnM6KGZ1bmN0aW9uIGdLKCl7cmV0dXJue251bUV4ZWN1dGlvbnNMb2FkZWQ6e3N0YXRlOlVFLk5PVF9MT0FERUQsbGFzdExvYWRlZFRpbWVJbk1zOm51bGx9LGV4ZWN1dGlvbkRpZ2VzdHNMb2FkZWQ6e2xvYWRpbmdSYW5nZXM6W10sbnVtRXhlY3V0aW9uczowLHBhZ2VMb2FkZWRTaXplczp7fX0sZGlzcGxheUNvdW50OjUwLHBhZ2VTaXplOjEwMCxzY3JvbGxCZWdpbkluZGV4OjAsZm9jdXNJbmRleDpudWxsLGV4ZWN1dGlvbkRpZ2VzdHM6e30sZXhlY3V0aW9uRGF0YTp7fX19KSgpLGdyYXBoRXhlY3V0aW9uczooZnVuY3Rpb24gaEsoKXtyZXR1cm57bnVtRXhlY3V0aW9uc0xvYWRlZDp7c3RhdGU6VUUuTk9UX0xPQURFRCxsYXN0TG9hZGVkVGltZUluTXM6bnVsbH0sZXhlY3V0aW9uRGlnZXN0c0xvYWRlZDp7bG9hZGluZ1JhbmdlczpbXSxudW1FeGVjdXRpb25zOjAscGFnZUxvYWRlZFNpemVzOnt9fSxkaXNwbGF5Q291bnQ6MTAwLHBhZ2VTaXplOjIwMCxzY3JvbGxCZWdpbkluZGV4OjAsZm9jdXNJbmRleDpudWxsLGdyYXBoRXhlY3V0aW9uRGlnZXN0czp7fSxncmFwaEV4ZWN1dGlvbkRhdGFMb2FkaW5nUGFnZXM6W10sZ3JhcGhFeGVjdXRpb25EYXRhUGFnZUxvYWRlZFNpemVzOnt9LGdyYXBoRXhlY3V0aW9uRGF0YTp7fX19KSgpLGdyYXBoczp7b3BzOnt9LGxvYWRpbmdPcHM6e30sZm9jdXNlZE9wOm51bGx9LHN0YWNrRnJhbWVzOnt9LGNvZGVMb2NhdGlvbkZvY3VzVHlwZTpudWxsLHN0aWNrVG9Cb3R0b21tb3N0RnJhbWVJbkZvY3VzZWRGaWxlOiExLHNvdXJjZUNvZGU6e3NvdXJjZUZpbGVMaXN0TG9hZGVkOntzdGF0ZTpVRS5OT1RfTE9BREVELGxhc3RMb2FkZWRUaW1lSW5NczpudWxsfSxzb3VyY2VGaWxlTGlzdDpbXSxmaWxlQ29udGVudHM6W10sZm9jdXNMaW5lU3BlYzpudWxsfX0sQlMoRFgsKHQ9Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7cnVuc0xvYWRlZDpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5ydW5zTG9hZGVkKSx7c3RhdGU6VUUuTE9BRElOR30pfSkpKSxCUyhFWCwodD0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtydW5zTG9hZGVkOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LnJ1bnNMb2FkZWQpLHtzdGF0ZTpVRS5GQUlMRUR9KX0pKSksQlMoUlgsKCh0LHtydW5zOmV9KT0+e2NvbnN0IG49T2JqZWN0LmtleXMoZSksbz1uLmxlbmd0aD4wJiZudWxsPT09dC5hY3RpdmVSdW5JZDtyZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtsYXN0Tm9uRW1wdHlQb2xsRGF0YVRpbWVNczpvP0RhdGUubm93KCk6dC5sYXN0Tm9uRW1wdHlQb2xsRGF0YVRpbWVNcyxydW5zOmUscnVuc0xvYWRlZDp7c3RhdGU6VUUuTE9BREVELGxhc3RMb2FkZWRUaW1lSW5NczpEYXRlLm5vdygpfSxhY3RpdmVSdW5JZDpuLmxlbmd0aD4wP25bMF06bnVsbH0pfSkpLEJTKFNYLCh0PT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse2xhc3REYXRhUG9sbE9uc2V0VGltZU1zOkRhdGUubm93KCl9KSkpLEJTKEFYLCh0PT5udWxsPT09dC5hY3RpdmVSdW5JZD90Ok9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7YWxlcnRzOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LmFsZXJ0cykse2FsZXJ0c0xvYWRlZDpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5hbGVydHMuYWxlcnRzTG9hZGVkKSx7c3RhdGU6VUUuTE9BRElOR30pfSl9KSkpLEJTKFRYLCgodCx7bnVtQWxlcnRzOmUsYWxlcnRzQnJlYWtkb3duOm59KT0+e2lmKG51bGw9PT10LmFjdGl2ZVJ1bklkKXJldHVybiB0O2NvbnN0IG89ZT50LmFsZXJ0cy5udW1BbGVydHM7cmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7bGFzdE5vbkVtcHR5UG9sbERhdGFUaW1lTXM6bz9EYXRlLm5vdygpOnQubGFzdE5vbkVtcHR5UG9sbERhdGFUaW1lTXMsYWxlcnRzOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LmFsZXJ0cykse2FsZXJ0c0xvYWRlZDpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5hbGVydHMuYWxlcnRzTG9hZGVkKSx7c3RhdGU6VUUuTE9BREVELGxhc3RMb2FkZWRUaW1lSW5NczpEYXRlLm5vdygpfSksbnVtQWxlcnRzOmUsYWxlcnRzQnJlYWtkb3duOm59KX0pfSkpLEJTKE5YLCgodCx7bnVtQWxlcnRzOmUsYWxlcnRzQnJlYWtkb3duOm4sYWxlcnRUeXBlOm8sYmVnaW46aSxhbGVydHM6YX0pPT57aWYobnVsbD09PXQuYWN0aXZlUnVuSWQpcmV0dXJuIHQ7Y29uc3Qgcj17fSxzPXQuYWxlcnRzLmV4ZWN1dGlvbkluZGljZXNbb10/dC5hbGVydHMuZXhlY3V0aW9uSW5kaWNlc1tvXS5zbGljZSgpOltdLGw9dC5hbGVydHMuZ3JhcGhFeGVjdXRpb25JbmRpY2VzW29dP3QuYWxlcnRzLmdyYXBoRXhlY3V0aW9uSW5kaWNlc1tvXS5zbGljZSgpOltdO2ZvcihsZXQgdD0wO3Q8YS5sZW5ndGg7Kyt0KXtjb25zdCBlPWkrdCxuPWFbdF07aWYocltlXT1uLG4uYWxlcnRfdHlwZT09PWxLLklORl9OQU5fQUxFUlQpe2NvbnN0IHQ9bjtzW2VdPXQuZXhlY3V0aW9uX2luZGV4LG51bGwhPT10LmdyYXBoX2V4ZWN1dGlvbl90cmFjZV9pbmRleCYmKGxbZV09dC5ncmFwaF9leGVjdXRpb25fdHJhY2VfaW5kZXgpfX12b2lkIDAhPT10LmFsZXJ0cy5hbGVydHNbb10mJk9iamVjdC5hc3NpZ24ocix0LmFsZXJ0cy5hbGVydHNbb10pO2xldCBjPXQuZXhlY3V0aW9ucy5zY3JvbGxCZWdpbkluZGV4LGQ9dC5ncmFwaEV4ZWN1dGlvbnMuZm9jdXNJbmRleDtpZihvPT09bEsuSU5GX05BTl9BTEVSVCYmMD09PWkpe2NvbnN0IGU9YVswXTtjPU1hdGgubWF4KDAsZS5leGVjdXRpb25faW5kZXgtTWF0aC5mbG9vcih0LmV4ZWN1dGlvbnMuZGlzcGxheUNvdW50LzIpKSxudWxsIT09ZS5ncmFwaF9leGVjdXRpb25fdHJhY2VfaW5kZXgmJihkPWUuZ3JhcGhfZXhlY3V0aW9uX3RyYWNlX2luZGV4KX1yZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtleGVjdXRpb25zOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LmV4ZWN1dGlvbnMpLHtzY3JvbGxCZWdpbkluZGV4OmN9KSxncmFwaEV4ZWN1dGlvbnM6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQuZ3JhcGhFeGVjdXRpb25zKSx7Zm9jdXNJbmRleDpkfSksYWxlcnRzOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LmFsZXJ0cykse2FsZXJ0c0xvYWRlZDpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5hbGVydHMuYWxlcnRzTG9hZGVkKSx7c3RhdGU6VUUuTE9BREVELGxhc3RMb2FkZWRUaW1lSW5NczpEYXRlLm5vdygpfSksbnVtQWxlcnRzOmUsYWxlcnRzQnJlYWtkb3duOm4sYWxlcnRzOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LmFsZXJ0cy5hbGVydHMpLHtbb106cn0pLGV4ZWN1dGlvbkluZGljZXM6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQuYWxlcnRzLmV4ZWN1dGlvbkluZGljZXMpLHtbb106c30pLGdyYXBoRXhlY3V0aW9uSW5kaWNlczpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5hbGVydHMuZ3JhcGhFeGVjdXRpb25JbmRpY2VzKSx7W29dOmx9KX0pfSl9KSksQlMoelgsKCh0LHthbGVydFR5cGU6ZX0pPT57Y29uc3Qgbj1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse2FsZXJ0czpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5hbGVydHMpLHtmb2N1c1R5cGU6dC5hbGVydHMuZm9jdXNUeXBlPT09ZT9udWxsOmV9KX0pLG89bi5hbGVydHMuZm9jdXNUeXBlO2lmKG51bGwhPT1vKXtjb25zdCB0PW4uYWxlcnRzLmV4ZWN1dGlvbkluZGljZXNbb118fFtdO3ZvaWQgMCE9PXRbMF0mJihuLmV4ZWN1dGlvbnM9T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LG4uZXhlY3V0aW9ucykse3Njcm9sbEJlZ2luSW5kZXg6TWF0aC5tYXgoMCxOdW1iZXIodFswXSktTWF0aC5mbG9vcihuLmV4ZWN1dGlvbnMuZGlzcGxheUNvdW50LzIpKX0pKX1yZXR1cm4gbn0pKSxCUyhJWCwodD0+bnVsbD09PXQuYWN0aXZlUnVuSWQ/dDpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse2V4ZWN1dGlvbnM6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQuZXhlY3V0aW9ucykse251bUV4ZWN1dGlvbnNMb2FkZWQ6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQuZXhlY3V0aW9ucy5udW1FeGVjdXRpb25zTG9hZGVkKSx7c3RhdGU6VUUuTE9BRElOR30pfSl9KSkpLEJTKEhYLCgodCx7bnVtRXhlY3V0aW9uczplfSk9PntpZihudWxsPT09dC5hY3RpdmVSdW5JZClyZXR1cm4gdDtjb25zdCBuPWU+dC5leGVjdXRpb25zLmV4ZWN1dGlvbkRpZ2VzdHNMb2FkZWQubnVtRXhlY3V0aW9ucyxvPU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7bGFzdE5vbkVtcHR5UG9sbERhdGFUaW1lTXM6bj9EYXRlLm5vdygpOnQubGFzdE5vbkVtcHR5UG9sbERhdGFUaW1lTXMsZXhlY3V0aW9uczpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5leGVjdXRpb25zKSx7bnVtRXhlY3V0aW9uc0xvYWRlZDpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5leGVjdXRpb25zLm51bUV4ZWN1dGlvbnNMb2FkZWQpLHtzdGF0ZTpVRS5MT0FERUQsbGFzdExvYWRlZFRpbWVJbk1zOkRhdGUubm93KCl9KSxleGVjdXRpb25EaWdlc3RzTG9hZGVkOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LmV4ZWN1dGlvbnMuZXhlY3V0aW9uRGlnZXN0c0xvYWRlZCkse251bUV4ZWN1dGlvbnM6ZX0pfSl9KTtyZXR1cm4gZT4wJiZudWxsPT09dC5leGVjdXRpb25zLmZvY3VzSW5kZXgmJihvLmV4ZWN1dGlvbnMuZm9jdXNJbmRleD0wKSxvfSkpLEJTKEZYLCgodCxlKT0+e2lmKG51bGw9PT10LmFjdGl2ZVJ1bklkKXJldHVybiB0O2NvbnN0IG49Wy4uLnQuZXhlY3V0aW9ucy5leGVjdXRpb25EaWdlc3RzTG9hZGVkLmxvYWRpbmdSYW5nZXNdOy0xPT09bUsobixlLmJlZ2luLGUuZW5kKSYmbi5wdXNoKHtiZWdpbjplLmJlZ2luLGVuZDplLmVuZH0pO3JldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse2V4ZWN1dGlvbnM6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQuZXhlY3V0aW9ucykse2V4ZWN1dGlvbkRpZ2VzdHNMb2FkZWQ6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQuZXhlY3V0aW9ucy5leGVjdXRpb25EaWdlc3RzTG9hZGVkKSx7bG9hZGluZ1JhbmdlczpufSl9KX0pfSkpLEJTKExYLCgodCxlKT0+e2lmKG51bGw9PT10LmFjdGl2ZVJ1bklkKXJldHVybiB0O2NvbnN0IG49Wy4uLnQuZXhlY3V0aW9ucy5leGVjdXRpb25EaWdlc3RzTG9hZGVkLmxvYWRpbmdSYW5nZXNdLG89bUsobixlLmJlZ2luLGUuZW5kKTstMSE9PW8mJm4uc3BsaWNlKG8sMSk7Y29uc3QgaT1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse2V4ZWN1dGlvbnM6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQuZXhlY3V0aW9ucykse2V4ZWN1dGlvbkRpZ2VzdHNMb2FkZWQ6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQuZXhlY3V0aW9ucy5leGVjdXRpb25EaWdlc3RzTG9hZGVkKSx7bnVtRXhlY3V0aW9uczplLm51bV9kaWdlc3RzLGxvYWRpbmdSYW5nZXM6bn0pLGV4ZWN1dGlvbkRpZ2VzdHM6T2JqZWN0LmFzc2lnbih7fSx0LmV4ZWN1dGlvbnMuZXhlY3V0aW9uRGlnZXN0cyl9KX0pO2ZvcihsZXQgdD1lLmJlZ2luO3Q8ZS5lbmQ7Kyt0KWkuZXhlY3V0aW9ucy5leGVjdXRpb25EaWdlc3RzW3RdPWUuZXhlY3V0aW9uX2RpZ2VzdHNbdC1lLmJlZ2luXTtpZihlLmVuZD5lLmJlZ2luKXtjb25zdCBuPWUuYmVnaW4vdC5leGVjdXRpb25zLnBhZ2VTaXplO2kuZXhlY3V0aW9ucy5leGVjdXRpb25EaWdlc3RzTG9hZGVkLnBhZ2VMb2FkZWRTaXplcz1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30saS5leGVjdXRpb25zLmV4ZWN1dGlvbkRpZ2VzdHNMb2FkZWQucGFnZUxvYWRlZFNpemVzKSx7W25dOmUuZW5kLWUuYmVnaW59KX1yZXR1cm4gaX0pKSxCUyhCWCwodD0+e2lmKG51bGw9PT10LmFjdGl2ZVJ1bklkKXJldHVybiB0O2xldCBlPXQuZXhlY3V0aW9ucy5zY3JvbGxCZWdpbkluZGV4O3JldHVybiBlPjAmJmUtLSxPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse2V4ZWN1dGlvbnM6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQuZXhlY3V0aW9ucykse3Njcm9sbEJlZ2luSW5kZXg6ZX0pfSl9KSksQlMoVlgsKHQ9PntpZihudWxsPT09dC5hY3RpdmVSdW5JZClyZXR1cm4gdDtsZXQgZT10LmV4ZWN1dGlvbnMuc2Nyb2xsQmVnaW5JbmRleDtyZXR1cm4gZSt0LmV4ZWN1dGlvbnMuZGlzcGxheUNvdW50KzE8PXQuZXhlY3V0aW9ucy5leGVjdXRpb25EaWdlc3RzTG9hZGVkLm51bUV4ZWN1dGlvbnMmJmUrKyxPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse2V4ZWN1dGlvbnM6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQuZXhlY3V0aW9ucykse3Njcm9sbEJlZ2luSW5kZXg6ZX0pfSl9KSksQlMoalgsKCh0LGUpPT57aWYoZS5pbmRleDwwfHwhTnVtYmVyLmlzSW50ZWdlcihlLmluZGV4KSl0aHJvdyBuZXcgRXJyb3IoYEF0dGVtcHQgdG8gc2Nyb2xsIHRvIG5lZ2F0aXZlIG9yIG5vbi1pbnRlZ2VyIGV4ZWN1dGlvbiBpbmRleCAoJHtlLmluZGV4fSlgKTtjb25zdHtkaXNwbGF5Q291bnQ6bn09dC5leGVjdXRpb25zLHtudW1FeGVjdXRpb25zOm99PXQuZXhlY3V0aW9ucy5leGVjdXRpb25EaWdlc3RzTG9hZGVkO2lmKGUuaW5kZXg+TWF0aC5tYXgoMCxvLW4pKXRocm93IG5ldyBFcnJvcihgQXR0ZW1wdCB0byBzY3JvbGwgdG8gZXhlY3V0aW9uIGluZGV4ICgke2UuaW5kZXh9KSwgd2hpY2ggZXhjZWVkcyBtYXhpbXVtIGFsbG93ZWQgaW5kZXggKG51bUV4ZWN1dGlvbnM9JHtvfTsgZGlzcGxheUNvdW50PSR7bn0pYCk7cmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7ZXhlY3V0aW9uczpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5leGVjdXRpb25zKSx7c2Nyb2xsQmVnaW5JbmRleDplLmluZGV4fSl9KX0pKSxCUyhVWCwoKHQsZSk9Pntjb25zdCBuPU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7ZXhlY3V0aW9uczpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5leGVjdXRpb25zKSx7Zm9jdXNJbmRleDp0LmV4ZWN1dGlvbnMuc2Nyb2xsQmVnaW5JbmRleCtlLmRpc3BsYXlJbmRleH0pLGNvZGVMb2NhdGlvbkZvY3VzVHlwZTpjSy5FWEVDVVRJT04sc291cmNlQ29kZTpPYmplY3QuYXNzaWduKHt9LHQuc291cmNlQ29kZSl9KTtyZXR1cm4gbi5zb3VyY2VDb2RlLmZvY3VzTGluZVNwZWM9Zksobiksbn0pKSxCUyhXWCwoKHQsZSk9PntpZihudWxsPT09dC5hY3RpdmVSdW5JZClyZXR1cm4gdDtjb25zdCBuPU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7ZXhlY3V0aW9uczpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5leGVjdXRpb25zKSx7ZXhlY3V0aW9uRGF0YTpPYmplY3QuYXNzaWduKHt9LHQuZXhlY3V0aW9ucy5leGVjdXRpb25EYXRhKX0pfSk7Zm9yKGxldCB0PWUuYmVnaW47dDxlLmVuZDsrK3Qpbi5leGVjdXRpb25zLmV4ZWN1dGlvbkRhdGFbdF09ZS5leGVjdXRpb25zW3QtZS5iZWdpbl07cmV0dXJuIG59KSksQlMoR1gsKHQ9Pm51bGw9PT10LmFjdGl2ZVJ1bklkP3Q6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtncmFwaEV4ZWN1dGlvbnM6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQuZ3JhcGhFeGVjdXRpb25zKSx7bnVtRXhlY3V0aW9uc0xvYWRlZDpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5ncmFwaEV4ZWN1dGlvbnMubnVtRXhlY3V0aW9uc0xvYWRlZCkse3N0YXRlOlVFLkxPQURJTkd9KX0pfSkpKSxCUyhZWCwoKHQse251bUdyYXBoRXhlY3V0aW9uczplfSk9PntpZihudWxsPT09dC5hY3RpdmVSdW5JZClyZXR1cm4gdDtjb25zdCBuPWU+dC5ncmFwaEV4ZWN1dGlvbnMuZXhlY3V0aW9uRGlnZXN0c0xvYWRlZC5udW1FeGVjdXRpb25zLG89T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtsYXN0Tm9uRW1wdHlQb2xsRGF0YVRpbWVNczpuP0RhdGUubm93KCk6dC5sYXN0Tm9uRW1wdHlQb2xsRGF0YVRpbWVNcyxncmFwaEV4ZWN1dGlvbnM6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQuZ3JhcGhFeGVjdXRpb25zKSx7bnVtRXhlY3V0aW9uc0xvYWRlZDpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5ncmFwaEV4ZWN1dGlvbnMubnVtRXhlY3V0aW9uc0xvYWRlZCkse3N0YXRlOlVFLkxPQURFRCxsYXN0TG9hZGVkVGltZUluTXM6RGF0ZS5ub3coKX0pLGV4ZWN1dGlvbkRpZ2VzdHNMb2FkZWQ6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQuZ3JhcGhFeGVjdXRpb25zLmV4ZWN1dGlvbkRpZ2VzdHNMb2FkZWQpLHtudW1FeGVjdXRpb25zOmV9KX0pfSk7cmV0dXJuIGU+MCYmbnVsbD09PXQuZ3JhcGhFeGVjdXRpb25zLmZvY3VzSW5kZXgmJihvLmdyYXBoRXhlY3V0aW9ucy5mb2N1c0luZGV4PTApLG99KSksQlMocVgsKCh0LHtwYWdlSW5kZXg6ZX0pPT57aWYobnVsbD09PXQuYWN0aXZlUnVuSWQpcmV0dXJuIHQ7Y29uc3Qgbj10LmdyYXBoRXhlY3V0aW9ucy5ncmFwaEV4ZWN1dGlvbkRhdGFMb2FkaW5nUGFnZXMuc2xpY2UoKTtyZXR1cm4tMT09PW4uaW5kZXhPZihlKSYmbi5wdXNoKGUpLE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7Z3JhcGhFeGVjdXRpb25zOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LmdyYXBoRXhlY3V0aW9ucykse2dyYXBoRXhlY3V0aW9uRGF0YUxvYWRpbmdQYWdlczpufSl9KX0pKSxCUyhaWCwoKHQsZSk9PntpZihudWxsPT09dC5hY3RpdmVSdW5JZClyZXR1cm4gdDtjb25zdHtwYWdlU2l6ZTpufT10LmdyYXBoRXhlY3V0aW9ucyxvPXQuZ3JhcGhFeGVjdXRpb25zLmdyYXBoRXhlY3V0aW9uRGF0YUxvYWRpbmdQYWdlcy5zbGljZSgpLGk9T2JqZWN0LmFzc2lnbih7fSx0LmdyYXBoRXhlY3V0aW9ucy5ncmFwaEV4ZWN1dGlvbkRhdGFQYWdlTG9hZGVkU2l6ZXMpLGE9T2JqZWN0LmFzc2lnbih7fSx0LmdyYXBoRXhlY3V0aW9ucy5ncmFwaEV4ZWN1dGlvbkRhdGEpO2ZvcihsZXQgdD1lLmJlZ2luO3Q8ZS5lbmQ7Kyt0KXtjb25zdCByPU1hdGguZmxvb3IodC9uKTstMSE9PW8uaW5kZXhPZihyKSYmby5zcGxpY2Uoby5pbmRleE9mKHIpLDEpLHZvaWQgMD09PWlbcl0mJihpW3JdPTApLHZvaWQgMD09PWFbdF0mJmlbcl0rKyxhW3RdPWUuZ3JhcGhfZXhlY3V0aW9uc1t0LWUuYmVnaW5dfXJldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse2dyYXBoRXhlY3V0aW9uczpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5ncmFwaEV4ZWN1dGlvbnMpLHtncmFwaEV4ZWN1dGlvbkRhdGFMb2FkaW5nUGFnZXM6byxncmFwaEV4ZWN1dGlvbkRhdGFQYWdlTG9hZGVkU2l6ZXM6aSxncmFwaEV4ZWN1dGlvbkRhdGE6YX0pfSl9KSksQlMoWFgsKCh0LGUpPT57aWYoZS5pbmRleDwwfHwhTnVtYmVyLmlzSW50ZWdlcihlLmluZGV4KSl0aHJvdyBuZXcgRXJyb3IoYEF0dGVtcHQgdG8gc2Nyb2xsIHRvIG5lZ2F0aXZlIG9yIG5vbi1pbnRlZ2VyIGdyYXBoLWV4ZWN1dGlvbiBpbmRleCAoJHtlLmluZGV4fSlgKTtyZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtncmFwaEV4ZWN1dGlvbnM6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQuZ3JhcGhFeGVjdXRpb25zKSx7c2Nyb2xsQmVnaW5JbmRleDplLmluZGV4fSl9KX0pKSxCUyhLWCwoKHQsZSk9PmJLKHQsZS5ncmFwaF9pZCxlLm9wX25hbWUsZS5pbmRleCkpKSxCUyhKWCwoKHQsZSk9PmJLKHQsZS5ncmFwaF9pZCxlLm9wX25hbWUpKSksQlMoUVgsKCh0LGUpPT57Y29uc3R7Z3JhcGhfaWQ6bixvcF9uYW1lOm99PWUsaT1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse2dyYXBoczpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5ncmFwaHMpLHtsb2FkaW5nT3BzOk9iamVjdC5hc3NpZ24oe30sdC5ncmFwaHMubG9hZGluZ09wcyl9KX0pO3JldHVybiB2b2lkIDA9PT1pLmdyYXBocy5sb2FkaW5nT3BzW25dJiYoaS5ncmFwaHMubG9hZGluZ09wc1tuXT1uZXcgTWFwKSxpLmdyYXBocy5sb2FkaW5nT3BzW25dLmhhcyhvKXx8aS5ncmFwaHMubG9hZGluZ09wc1tuXS5zZXQobyxVRS5MT0FESU5HKSxpfSkpLEJTKCRYLCgodCxlKT0+e2NvbnN0e2dyYXBoT3BJbmZvUmVzcG9uc2U6bn09ZSx7Z3JhcGhfaWRzOm99PW4saT1vW28ubGVuZ3RoLTFdLGE9T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtncmFwaHM6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQuZ3JhcGhzKSx7b3BzOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LmdyYXBocy5vcHMpLHtbaV06bmV3IE1hcCh0LmdyYXBocy5vcHNbaV0pfSksbG9hZGluZ09wczpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5ncmFwaHMubG9hZGluZ09wcykse1tpXTpuZXcgTWFwKHQuZ3JhcGhzLmxvYWRpbmdPcHNbaV0pfSl9KX0pO2Zvcihjb25zdCB0IG9mIG4uaW5wdXRzKXQuZGF0YSYmYS5ncmFwaHMub3BzW2ldLnNldCh0Lm9wX25hbWUsdC5kYXRhKTtmb3IobGV0IHQ9MDt0PG4uY29uc3VtZXJzLmxlbmd0aDsrK3QpZm9yKGNvbnN0IGUgb2Ygbi5jb25zdW1lcnNbdF0pZS5kYXRhJiZhLmdyYXBocy5vcHNbaV0uc2V0KGUub3BfbmFtZSxlLmRhdGEpO3JldHVybiBhLmdyYXBocy5vcHNbaV0uc2V0KG4ub3BfbmFtZSxPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sbikse2lucHV0czpuLmlucHV0cy5tYXAoKHQ9Pih7b3BfbmFtZTp0Lm9wX25hbWUsb3V0cHV0X3Nsb3Q6dC5vdXRwdXRfc2xvdH0pKSksY29uc3VtZXJzOm4uY29uc3VtZXJzLm1hcCgodD0+dC5tYXAoKHQ9Pih7b3BfbmFtZTp0Lm9wX25hbWUsaW5wdXRfc2xvdDp0LmlucHV0X3Nsb3R9KSkpKSl9KSksYS5ncmFwaHMubG9hZGluZ09wc1tpXS5zZXQobi5vcF9uYW1lLFVFLkxPQURFRCksYX0pKSxCUyh0SywodD0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtzb3VyY2VDb2RlOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LnNvdXJjZUNvZGUpLHtzb3VyY2VGaWxlTGlzdExvYWRlZDpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5zb3VyY2VDb2RlLnNvdXJjZUZpbGVMaXN0TG9hZGVkKSx7c3RhdGU6VUUuTE9BRElOR30pfSl9KSkpLEJTKGVLLCgodCxlKT0+e3ZhciBuO2NvbnN0IG89T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtzb3VyY2VDb2RlOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LnNvdXJjZUNvZGUpLHtzb3VyY2VGaWxlTGlzdExvYWRlZDpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5zb3VyY2VDb2RlLnNvdXJjZUZpbGVMaXN0TG9hZGVkKSx7c3RhdGU6VUUuTE9BREVELGxhc3RMb2FkZWRUaW1lSW5NczpEYXRlLm5vdygpfSksc291cmNlRmlsZUxpc3Q6ZS5zb3VyY2VGaWxlcyxmaWxlQ29udGVudHM6dC5zb3VyY2VDb2RlLmZpbGVDb250ZW50cy5zbGljZSgpfSl9KSxpPWUuc291cmNlRmlsZXMubGVuZ3RoLHtmaWxlQ29udGVudHM6YX09by5zb3VyY2VDb2RlO2ZvcihsZXQgZT0wO2U8aTsrK2UpYVtlXT1udWxsIT09KG49dC5zb3VyY2VDb2RlLmZpbGVDb250ZW50c1tlXSkmJnZvaWQgMCE9PW4/bjp7bG9hZFN0YXRlOlVFLk5PVF9MT0FERUQsbGluZXM6bnVsbH07cmV0dXJuIG99KSksQlMobkssKCh0LGUpPT57Y29uc3Qgbj1kSyh0KSxvPU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7c291cmNlQ29kZTpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5zb3VyY2VDb2RlKSx7Zm9jdXNMaW5lU3BlYzplLnN0YWNrRnJhbWV9KX0pO3JldHVybiBudWxsIT09biYmKG8uc3RpY2tUb0JvdHRvbW1vc3RGcmFtZUluRm9jdXNlZEZpbGU9KGZ1bmN0aW9uIGkodCxlKXtsZXQgbj0tMSxvPS0xO2lmKHQuZm9yRWFjaCgoKHtmaWxlX3BhdGg6dCxsaW5lbm86aX0sYSk9Pnt0PT09ZS5maWxlX3BhdGgmJihvPWEsaT09PWUubGluZW5vJiYobj1hKSl9KSksLTE9PT1uKXRocm93IG5ldyBFcnJvcihgU3RhY2sgZnJhbWUgJHtKU09OLnN0cmluZ2lmeShlKX0gaXMgbm90IGZvdW5kLmApO3JldHVybiBuPT09b30pKG4sZS5zdGFja0ZyYW1lKSksb30pKSxCUyhvSywoKHQsZSk9Pntjb25zdCBuPU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7c291cmNlQ29kZTpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5zb3VyY2VDb2RlKSx7ZmlsZUNvbnRlbnRzOnQuc291cmNlQ29kZS5maWxlQ29udGVudHMuc2xpY2UoKX0pfSksbz1wSyhuLnNvdXJjZUNvZGUuc291cmNlRmlsZUxpc3QsZSk7aWYoIShvPj0wKSl0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBmaW5kIHRoZSBmb2xsb3dpbmcgZmlsZSBpbiBmaWxlIGxpc3Q6IGhvc3RfbmFtZT0iJHtlLmhvc3RfbmFtZX0iLCBmaWxlX3BhdGg9IiR7ZS5maWxlX3BhdGh9ImApO3JldHVybiBuLnNvdXJjZUNvZGUuZmlsZUNvbnRlbnRzLnNwbGljZShvLDEsT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LG4uc291cmNlQ29kZS5maWxlQ29udGVudHNbb10pLHtsb2FkU3RhdGU6VUUuTE9BRElOR30pKSxufSkpLEJTKGlLLCgodCxlKT0+e2NvbnN0IG49T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtzb3VyY2VDb2RlOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LnNvdXJjZUNvZGUpLHtmaWxlQ29udGVudHM6dC5zb3VyY2VDb2RlLmZpbGVDb250ZW50cy5zbGljZSgpfSl9KSxvPXBLKG4uc291cmNlQ29kZS5zb3VyY2VGaWxlTGlzdCxlKTtpZighKG8+PTApKXRocm93IG5ldyBFcnJvcihgQ2Fubm90IGZpbmQgdGhlIGZvbGxvd2luZyBmaWxlIGluIGZpbGUgbGlzdDogaG9zdF9uYW1lPSIke2UuaG9zdF9uYW1lfSIsIGZpbGVfcGF0aD0iJHtlLmZpbGVfcGF0aH0iYCk7cmV0dXJuIG4uc291cmNlQ29kZS5maWxlQ29udGVudHMuc3BsaWNlKG8sMSx7bG9hZFN0YXRlOlVFLkxPQURFRCxsaW5lczplLmxpbmVzfSksbn0pKSxCUyhhSywoKHQsZSk9PntpZihudWxsPT09dC5hY3RpdmVSdW5JZClyZXR1cm4gdDtjb25zdCBuPU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7c3RhY2tGcmFtZXM6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQuc3RhY2tGcmFtZXMpLGUuc3RhY2tGcmFtZXMpLHNvdXJjZUNvZGU6T2JqZWN0LmFzc2lnbih7fSx0LnNvdXJjZUNvZGUpfSk7cmV0dXJuIG4uc291cmNlQ29kZS5mb2N1c0xpbmVTcGVjPWZLKG4pLG59KSkpO2Z1bmN0aW9uIGJLKHQsZSxuLG8pe2NvbnN0IGk9T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtncmFwaHM6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQuZ3JhcGhzKSx7Zm9jdXNlZE9wOntncmFwaElkOmUsb3BOYW1lOm59fSksY29kZUxvY2F0aW9uRm9jdXNUeXBlOmNLLkdSQVBIX09QX0NSRUFUSU9OLHNvdXJjZUNvZGU6T2JqZWN0LmFzc2lnbih7fSx0LnNvdXJjZUNvZGUpfSk7cmV0dXJuIGkuc291cmNlQ29kZS5mb2N1c0xpbmVTcGVjPWZLKGkpLHZvaWQgMCE9PW8mJihpLmdyYXBoRXhlY3V0aW9ucz1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5ncmFwaEV4ZWN1dGlvbnMpLHtmb2N1c0luZGV4Om99KSksaX1mdW5jdGlvbiB5Syh0LGUpe3JldHVybiB1Syh0LGUpfWNvbnN0IF9LPV9TKHJLKSxDSz1iUyhfSywodD0+dC5ydW5zKSksTUs9YlMoX0ssKHQ9PnQucnVuc0xvYWRlZCkpLHZLPWJTKF9LLCh0PT50LmFjdGl2ZVJ1bklkKSkseEs9YlMoX0ssKHQ9PnQubGFzdERhdGFQb2xsT25zZXRUaW1lTXMtdC5sYXN0Tm9uRW1wdHlQb2xsRGF0YVRpbWVNcykpLE9LPWJTKF9LLCh0PT50LmFsZXJ0cykpLFBLPWJTKE9LLCh0PT50LmFsZXJ0c0xvYWRlZCkpLHdLPWJTKE9LLCh0PT50Lm51bUFsZXJ0cykpLGtLPWJTKE9LLCh0PT50LmZvY3VzVHlwZSkpLFNLPWJTKE9LLCh0PT5udWxsPT09dC5mb2N1c1R5cGU/MDp0LmFsZXJ0c0JyZWFrZG93blt0LmZvY3VzVHlwZV18fDApKSxESz1iUyhPSywodD0+bnVsbD09PXQuZm9jdXNUeXBlfHx2b2lkIDA9PT10LmFsZXJ0c1t0LmZvY3VzVHlwZV0/bnVsbDp0LmFsZXJ0c1t0LmZvY3VzVHlwZV0pKSxSSz1iUyhPSywodD0+dC5hbGVydHNCcmVha2Rvd24pKSxFSz1iUyhfSywodD0+dC5leGVjdXRpb25zKSksQUs9YlMoRUssKHQ9PnQubnVtRXhlY3V0aW9uc0xvYWRlZCkpLFRLPWJTKEVLLCh0PT50LmV4ZWN1dGlvbkRpZ2VzdHNMb2FkZWQpKSxOSz1iUyhFSywodD0+dC5leGVjdXRpb25EaWdlc3RzTG9hZGVkLm51bUV4ZWN1dGlvbnMpKSx6Sz1iUyhFSywodD0+dC5zY3JvbGxCZWdpbkluZGV4KSksSUs9YlMoRUssKHQ9PnQucGFnZVNpemUpKSxISz1iUyhFSywodD0+dC5kaXNwbGF5Q291bnQpKSxGSz1iUyhFSywodD0+e2NvbnN0IGU9W107Zm9yKGxldCBuPXQuc2Nyb2xsQmVnaW5JbmRleDtuPHQuc2Nyb2xsQmVnaW5JbmRleCt0LmRpc3BsYXlDb3VudDsrK24pZS5wdXNoKG4gaW4gdC5leGVjdXRpb25EaWdlc3RzP3QuZXhlY3V0aW9uRGlnZXN0c1tuXTpudWxsKTtyZXR1cm4gZX0pKSxMSz1iUyhfSywodD0+dC5ncmFwaEV4ZWN1dGlvbnMpKSxCSz1iUyhMSywodD0+dC5udW1FeGVjdXRpb25zTG9hZGVkKSksVks9YlMoX0ssKHQ9PnQuZ3JhcGhFeGVjdXRpb25zLmV4ZWN1dGlvbkRpZ2VzdHNMb2FkZWQubnVtRXhlY3V0aW9ucykpLGpLPWJTKExLLCh0PT50LnNjcm9sbEJlZ2luSW5kZXgpKSxVSz1iUyhMSywodD0+dC5kaXNwbGF5Q291bnQpKSxXSz1iUyhMSywodD0+dC5wYWdlU2l6ZSkpLEdLPWJTKExLLCh0PT50LmdyYXBoRXhlY3V0aW9uRGF0YUxvYWRpbmdQYWdlcykpLFlLPWJTKExLLCh0PT50LmdyYXBoRXhlY3V0aW9uRGF0YVBhZ2VMb2FkZWRTaXplcykpLHFLPWJTKExLLCh0PT50LmdyYXBoRXhlY3V0aW9uRGF0YSkpLFpLPWJTKExLLCh0PT50LmZvY3VzSW5kZXgpKSxYSz1iUyhfSywodD0+dC5ncmFwaHMpKSxLSz1iUyhYSywodD0+e2NvbnN0e2ZvY3VzZWRPcDplLG9wczpufT10O3JldHVybiBudWxsPT09ZXx8dm9pZCAwPT09bltlLmdyYXBoSWRdP251bGw6bltlLmdyYXBoSWRdLmdldChlLm9wTmFtZSl8fG51bGx9KSksSks9YlMoWEssKHQ9Pntjb25zdHtmb2N1c2VkT3A6ZSxvcHM6bn09dDtpZihudWxsIT09ZSYmdm9pZCAwIT09bltlLmdyYXBoSWRdJiZuW2UuZ3JhcGhJZF0uaGFzKGUub3BOYW1lKSl7Y29uc3QgdD1uW2UuZ3JhcGhJZF0se2lucHV0czpvfT10LmdldChlLm9wTmFtZSk7cmV0dXJuIG8ubWFwKChlPT57Y29uc3Qgbj1PYmplY3QuYXNzaWduKHt9LGUpO3JldHVybiB0LmhhcyhlLm9wX25hbWUpJiYobi5kYXRhPXQuZ2V0KGUub3BfbmFtZSkpLG59KSl9cmV0dXJuIG51bGx9KSksUUs9YlMoWksscUssSkssKCh0LGUsbik9PntpZihudWxsPT09dHx8bnVsbD09PW4pcmV0dXJuIG51bGw7Y29uc3Qgbz1uLm1hcCgodD0+ITEpKSxpPVtdO2lmKDA9PT1uLmxlbmd0aClyZXR1cm4gaTtjb25zdCBhPWVbdF0uZ3JhcGhfaWQscj1NYXRoLm1heCgwLHQtMjAwKTtmb3IobGV0IHM9dC0xO3M+PXI7LS1zKWlmKHZvaWQgMCE9PWVbc10pZm9yKGxldCB0PTA7dDxuLmxlbmd0aCYmKG9bdF18fGVbc10uZ3JhcGhfaWQhPT1hfHxlW3NdLm9wX25hbWUhPT1uW3RdLm9wX25hbWV8fGVbc10ub3V0cHV0X3Nsb3QhPT1uW3RdLm91dHB1dF9zbG90fHwoaS5wdXNoKHMpLG9bdF09ITAsaS5sZW5ndGghPT1uLmxlbmd0aCkpOysrdCk7cmV0dXJuIGl9KSksJEs9YlMoWEssKHQ9Pntjb25zdHtmb2N1c2VkT3A6ZSxvcHM6bn09dDtpZihudWxsIT09ZSYmdm9pZCAwIT09bltlLmdyYXBoSWRdJiZuW2UuZ3JhcGhJZF0uaGFzKGUub3BOYW1lKSl7Y29uc3QgdD1uW2UuZ3JhcGhJZF0se2NvbnN1bWVyczpvfT10LmdldChlLm9wTmFtZSk7cmV0dXJuIG8ubWFwKChlPT5lLm1hcCgoZT0+e2NvbnN0IG49T2JqZWN0LmFzc2lnbih7fSxlKTtyZXR1cm4gdC5oYXMoZS5vcF9uYW1lKSYmKG4uZGF0YT10LmdldChlLm9wX25hbWUpKSxufSkpKSl9cmV0dXJuIG51bGx9KSksdEo9YlMoX0ssKHQ9Pntjb25zdCBlPXQuZXhlY3V0aW9ucy5zY3JvbGxCZWdpbkluZGV4LG49dC5leGVjdXRpb25zLnNjcm9sbEJlZ2luSW5kZXgrdC5leGVjdXRpb25zLmRpc3BsYXlDb3VudCxvPW5ldyBBcnJheShuLWUpLmZpbGwobnVsbCksaT10LmFsZXJ0cy5mb2N1c1R5cGU7aWYobnVsbD09PWkpcmV0dXJuIG87Y29uc3QgYT10LmFsZXJ0cy5leGVjdXRpb25JbmRpY2VzW2ldO2lmKHZvaWQgMD09PWEpcmV0dXJuIG87Zm9yKGxldCBpPWU7aTxuOysraSlhLmluY2x1ZGVzKGkpJiYob1tpLWVdPXQuYWxlcnRzLmZvY3VzVHlwZSk7cmV0dXJuIG99KSksZUo9YlMoX0ssKHQ9PnQuZXhlY3V0aW9ucykpLG5KPWJTKGVKLCh0PT50LmZvY3VzSW5kZXgpKSxvSj1iUyhlSiwodD0+e2lmKG51bGw9PT10LmZvY3VzSW5kZXgpcmV0dXJuIG51bGw7Y29uc3R7Zm9jdXNJbmRleDplLHNjcm9sbEJlZ2luSW5kZXg6bixkaXNwbGF5Q291bnQ6b309dDtyZXR1cm4gZTxufHxlPj1uK28/bnVsbDplLW59KSksaUo9YlMoZUosKHQ9PnQuZXhlY3V0aW9uRGF0YSkpLGFKPWJTKF9LLCh0PT50LmdyYXBocy5sb2FkaW5nT3BzKSkscko9YlMoX0ssKHQ9PnQuc3RhY2tGcmFtZXMpKSxzSj1iUyhlSiwodD0+e2NvbnN0e2ZvY3VzSW5kZXg6ZSxleGVjdXRpb25EYXRhOm59PXQ7cmV0dXJuIG51bGw9PT1lfHx2b2lkIDA9PT1uW2VdP251bGw6bltlXX0pKSxsSj1iUyhfSyxuSixzSixLSywoKHQsZSxuLG8pPT57Y29uc3R7Y29kZUxvY2F0aW9uRm9jdXNUeXBlOml9PXQ7cmV0dXJuIG51bGw9PT1pP251bGw6aT09PWNLLkVYRUNVVElPTj9udWxsPT09ZXx8bnVsbD09PW4/bnVsbDp7Y29kZUxvY2F0aW9uVHlwZTpjSy5FWEVDVVRJT04sb3BUeXBlOm4ub3BfdHlwZSxleGVjdXRpb25JbmRleDplfTpudWxsPT09bz9udWxsOntjb2RlTG9jYXRpb25UeXBlOmNLLkdSQVBIX09QX0NSRUFUSU9OLG9wVHlwZTpvLm9wX3R5cGUsb3BOYW1lOm8ub3BfbmFtZX19KSksY0o9YlMoX0ssZEspLGRKPWJTKF9LLCh0PT50LnNvdXJjZUNvZGUpKSxwSj1iUyhkSiwodD0+dC5zb3VyY2VGaWxlTGlzdExvYWRlZCkpO2JTKGRKLCh0PT50LnNvdXJjZUZpbGVMaXN0KSk7Y29uc3QgbUo9YlMoZEosKHQ9Pntjb25zdHtzb3VyY2VGaWxlTGlzdDplLGZvY3VzTGluZVNwZWM6bn09dDtyZXR1cm4gbnVsbD09PW4/LTE6cEsoZSxuKX0pKSxmSj1iUyhkSixtSiwoKHQsZSk9Pi0xPT09ZT9udWxsOnQuZmlsZUNvbnRlbnRzW2VdfHxudWxsKSksdUo9YlMoX0ssKHQ9PnQuc291cmNlQ29kZS5mb2N1c0xpbmVTcGVjKSksZ0o9YlMoX0ssKHQ9PnQuc3RpY2tUb0JvdHRvbW1vc3RGcmFtZUluRm9jdXNlZEZpbGUpKSxoSj1mdW5jdGlvbih0KXtyZXR1cm5bdF19O2Z1bmN0aW9uIGJKKHQsZSl7aWYoMSZ0KXtjb25zdCB0PXdmKCk7Q2YoMCwiZGl2Iiw3KSxSZigiY2xpY2siLChmdW5jdGlvbiBlKCl7Y29uc3Qgbj1QaSh0KS4kaW1wbGljaXQ7cmV0dXJuIHpmKCkub25Ub2dnbGVGb2N1c1R5cGUuZW1pdChuLnR5cGUpfSkpLENmKDEsImRpdiIsOCksUHUoMiksTWYoKSxDZigzLCJkaXYiLDkpLFB1KDQpLE1mKCksdmYoNSwiZGl2IiksTWYoKX1pZigyJnQpe2NvbnN0IHQ9ZS4kaW1wbGljaXQsbj16ZigpO2JmKCJuZ0NsYXNzIixpeSg0LGhKLHQudHlwZT09PW4uZm9jdXNUeXBlPyJmb2N1cyI6IiIpKSxEYygyKSx3dSh0LmRpc3BsYXlOYW1lKSxEYygyKSxTdSgiICIsdC5kaXNwbGF5U3ltYm9sLCI6ICIsdC5jb3VudCwiICIpfX1jbGFzcyB5Sntjb25zdHJ1Y3Rvcigpe3RoaXMubnVtQWxlcnRzPTAsdGhpcy5hbGVydHNCcmVha2Rvd249W10sdGhpcy5mb2N1c1R5cGU9bnVsbCx0aGlzLm9uVG9nZ2xlRm9jdXNUeXBlPW5ldyBTeX19eUouybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHlKKX0seUouybVjbXA9c28oe3R5cGU6eUosc2VsZWN0b3JzOltbImFsZXJ0cy1jb21wb25lbnQiXV0saW5wdXRzOntudW1BbGVydHM6Im51bUFsZXJ0cyIsYWxlcnRzQnJlYWtkb3duOiJhbGVydHNCcmVha2Rvd24iLGZvY3VzVHlwZToiZm9jdXNUeXBlIn0sb3V0cHV0czp7b25Ub2dnbGVGb2N1c1R5cGU6Im9uVG9nZ2xlRm9jdXNUeXBlIn0sZGVjbHM6MTAsdmFyczo1LGNvbnN0czpbWzEsImFsZXJ0cy1jb250YWluZXIiXSxbMSwiZGVidWdnaW5nLXRpdGxlIl0sWzEsIm51bS1hbGVydHMtY29udGFpbmVyIl0sWzEsIm51bS1hbGVydHMtbGFiZWwiXSxbMSwibnVtLWFsZXJ0cy12YWx1ZSIsMywibmdDbGFzcyJdLFsxLCJhbGVydHMtYnJlYWtkb3duLWNvbnRhaW5lciJdLFsiY2xhc3MiLCJhbGVydHMtYnJlYWtkb3duLXR5cGUiLDMsIm5nQ2xhc3MiLCJjbGljayIsNCwibmdGb3IiLCJuZ0Zvck9mIl0sWzEsImFsZXJ0cy1icmVha2Rvd24tdHlwZSIsMywibmdDbGFzcyIsImNsaWNrIl0sWzEsImFsZXJ0LXR5cGUtbmFtZSJdLFsxLCJhbGVydC10eXBlLWNvdW50Il1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihDZigwLCJkaXYiLDApLENmKDEsImRpdiIsMSksUHUoMiwiRGVidWdnaW5nIiksTWYoKSxDZigzLCJkaXYiLDIpLENmKDQsImRpdiIsMyksUHUoNSwiQWxlcnRzIiksTWYoKSxDZig2LCJkaXYiLDQpLFB1KDcpLE1mKCksTWYoKSxDZig4LCJkaXYiLDUpLEhtKDksYkosNiw2LCJkaXYiLDYpLE1mKCksTWYoKSksMiZlJiYoRGMoNiksYmYoIm5nQ2xhc3MiLGl5KDMsaEosbi5udW1BbGVydHM+MD8ibm9uLXplcm8iOiIiKSksRGMoMSksa3UoIiAiLG4ubnVtQWxlcnRzLCIgIiksRGMoMiksYmYoIm5nRm9yT2YiLG4uYWxlcnRzQnJlYWtkb3duKSl9LGRpcmVjdGl2ZXM6W0N2LHh2XSxzdHlsZXM6WyIuYWxlcnRzLWJyZWFrZG93bi1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdIHtcbiAgZm9udC1zaXplOiAxM3B4O1xuICBwYWRkaW5nOiAxMHB4IDEwcHggMTBweDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuXG4uYWxlcnRzLWJyZWFrZG93bi10eXBlW19uZ2NvbnRlbnQtJUNPTVAlXSB7XG4gIGJvcmRlci1yYWRpdXM6IDAgMTBweCAxMHB4IDA7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgZGlzcGxheTogZmxleDtcbiAgcGFkZGluZzogNnB4IDAgNnB4IDUwcHg7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG59XG5cbi5hbGVydHMtYnJlYWtkb3duLXR5cGUuZm9jdXNbX25nY29udGVudC0lQ09NUCVdIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZWVlMDtcbn1cblxuLmFsZXJ0cy1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdIHtcbiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nLCBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmO1xufVxuXG4uYWxlcnQtdHlwZS1jb3VudFtfbmdjb250ZW50LSVDT01QJV0ge1xuICBcbiAgYmFja2dyb3VuZC1jb2xvcjogI2U1MjU5MjtcbiAgYm9yZGVyLXJhZGl1czogM3B4O1xuICBjb2xvcjogI2ZmZjtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBwYWRkaW5nOiAzcHg7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgcmlnaHQ6IDIwcHg7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG59XG5cbi5hbGVydC10eXBlLW5hbWVbX25nY29udGVudC0lQ09NUCVdIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBwYWRkaW5nOiAzcHg7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG59XG5cbi5kZWJ1Z2dpbmctdGl0bGVbX25nY29udGVudC0lQ09NUCVdIHtcbiAgZm9udC1zaXplOiAxOHB4O1xufVxuXG4ubnVtLWFsZXJ0cy1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdIHtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIHBhZGRpbmc6IDEwcHggMTBweCAxMHB4IDMwcHg7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuLm51bS1hbGVydHMtbGFiZWxbX25nY29udGVudC0lQ09NUCVdIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBmb250LXNpemU6IDEzcHg7XG59XG5cbi5udW0tYWxlcnRzLXZhbHVlW19uZ2NvbnRlbnQtJUNPTVAlXSB7XG4gIGJvcmRlci1yYWRpdXM6IDEycHg7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgZm9udC1zaXplOiAxM3B4O1xuICBmb250LXdlaWdodDogbm9ybWFsO1xuICBsaW5lLWhlaWdodDogMjRweDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICByaWdodDogMjBweDtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICB3aWR0aDogMjRweDtcbn1cblxuLm51bS1hbGVydHMtdmFsdWUubm9uLXplcm9bX25nY29udGVudC0lQ09NUCVdIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmYjc4MDtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG59Il19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKHlKLFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6ImFsZXJ0cy1jb21wb25lbnQiLHRlbXBsYXRlVXJsOiIuL2FsZXJ0c19jb21wb25lbnQubmcuaHRtbCIsc3R5bGVVcmxzOlsiLi9hbGVydHNfY29tcG9uZW50LmNzcyJdfV19XSxudWxsLHtudW1BbGVydHM6W3t0eXBlOlJffV0sYWxlcnRzQnJlYWtkb3duOlt7dHlwZTpSX31dLGZvY3VzVHlwZTpbe3R5cGU6Ul99XSxvblRvZ2dsZUZvY3VzVHlwZTpbe3R5cGU6RV99XX0pO2NvbnN0IF9KPXtbbEsuRlVOQ1RJT05fUkVDT01QSUxFX0FMRVJUXTp7ZGlzcGxheU5hbWU6IkZ1bmN0aW9uIHJlY29tcGlsZXMiLGRpc3BsYXlTeW1ib2w6IkMifSxbbEsuSU5GX05BTl9BTEVSVF06e2Rpc3BsYXlOYW1lOiJOYU4v4oieIixkaXNwbGF5U3ltYm9sOiLiiJ4ifSxbbEsuVEVOU09SX1NIQVBFX0FMRVJUXTp7ZGlzcGxheU5hbWU6IlRlbnNvciBzaGFwZSIsZGlzcGxheVN5bWJvbDoi4pagIn19O2NsYXNzIENKe2NvbnN0cnVjdG9yKHQpe3RoaXMuc3RvcmU9dCx0aGlzLm51bUFsZXJ0cyQ9dGhpcy5zdG9yZS5waXBlKHJTKHdLKSksdGhpcy5hbGVydHNCcmVha2Rvd24kPXRoaXMuc3RvcmUucGlwZShyUyhiUyhSSywodD0+e2NvbnN0IGU9T2JqZWN0LmtleXModCk7cmV0dXJuIGUuc29ydCgpLGUubWFwKChlPT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe3R5cGU6ZX0sX0pbZV0pLHtjb3VudDp0W2VdfSkpKX0pKSkpLHRoaXMuZm9jdXNUeXBlJD10aGlzLnN0b3JlLnBpcGUoclMoa0spKX1vblRvZ2dsZUZvY3VzVHlwZSh0KXt0aGlzLnN0b3JlLmRpc3BhdGNoKHpYKHthbGVydFR5cGU6dH0pKX19Q0ouybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fENKKShnZihpUykpfSxDSi7JtWNtcD1zbyh7dHlwZTpDSixzZWxlY3RvcnM6W1sidGYtZGVidWdnZXItdjItYWxlcnRzIl1dLGRlY2xzOjQsdmFyczo5LGNvbnN0czpbWzMsIm51bUFsZXJ0cyIsImFsZXJ0c0JyZWFrZG93biIsImZvY3VzVHlwZSIsIm9uVG9nZ2xlRm9jdXNUeXBlIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihDZigwLCJhbGVydHMtY29tcG9uZW50IiwwKSxSZigib25Ub2dnbGVGb2N1c1R5cGUiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLm9uVG9nZ2xlRm9jdXNUeXBlKGUpfSkpLF95KDEsImFzeW5jIiksX3koMiwiYXN5bmMiKSxfeSgzLCJhc3luYyIpLE1mKCkpLDImZSYmYmYoIm51bUFsZXJ0cyIsQ3koMSwzLG4ubnVtQWxlcnRzJCkpKCJhbGVydHNCcmVha2Rvd24iLEN5KDIsNSxuLmFsZXJ0c0JyZWFrZG93biQpKSgiZm9jdXNUeXBlIixDeSgzLDcsbi5mb2N1c1R5cGUkKSl9LGRpcmVjdGl2ZXM6W3lKXSxwaXBlczpbVnZdLGVuY2Fwc3VsYXRpb246MixjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoQ0osW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoidGYtZGVidWdnZXItdjItYWxlcnRzIix0ZW1wbGF0ZTonXG4gICAgPGFsZXJ0cy1jb21wb25lbnRcbiAgICAgIFtudW1BbGVydHNdPSJudW1BbGVydHMkIHwgYXN5bmMiXG4gICAgICBbYWxlcnRzQnJlYWtkb3duXT0iYWxlcnRzQnJlYWtkb3duJCB8IGFzeW5jIlxuICAgICAgW2ZvY3VzVHlwZV09ImZvY3VzVHlwZSQgfCBhc3luYyJcbiAgICAgIChvblRvZ2dsZUZvY3VzVHlwZSk9Im9uVG9nZ2xlRm9jdXNUeXBlKCRldmVudCkiXG4gICAgPlxuICAgIDwvYWxlcnRzLWNvbXBvbmVudD5cbiAgJyxjaGFuZ2VEZXRlY3Rpb246am4uT25QdXNofV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6aVN9XX0pLG51bGwpO2NvbnN0IE1KPVsic2xpZGVyV3JhcHBlciJdLHZKPWJIKHtwYXNzaXZlOiExfSkseEo9e3Byb3ZpZGU6eFUsdXNlRXhpc3Rpbmc6JGUoKCgpPT53SikpLG11bHRpOiEwfTtjbGFzcyBPSnt9Y29uc3QgUEo9RkYoSUYoekYoY2xhc3N7Y29uc3RydWN0b3IodCl7dGhpcy5fZWxlbWVudFJlZj10fX0pLCJhY2NlbnQiKSk7Y2xhc3Mgd0ogZXh0ZW5kcyBQSntjb25zdHJ1Y3Rvcih0LGUsbixvLGksYSxyLHMpe3N1cGVyKHQpLHRoaXMuX2ZvY3VzTW9uaXRvcj1lLHRoaXMuX2NoYW5nZURldGVjdG9yUmVmPW4sdGhpcy5fZGlyPW8sdGhpcy5fbmdab25lPWEsdGhpcy5fYW5pbWF0aW9uTW9kZT1zLHRoaXMuX2ludmVydD0hMSx0aGlzLl9tYXg9MTAwLHRoaXMuX21pbj0wLHRoaXMuX3N0ZXA9MSx0aGlzLl90aHVtYkxhYmVsPSExLHRoaXMuX3RpY2tJbnRlcnZhbD0wLHRoaXMuX3ZhbHVlPW51bGwsdGhpcy5fdmVydGljYWw9ITEsdGhpcy5jaGFuZ2U9bmV3IFN5LHRoaXMuaW5wdXQ9bmV3IFN5LHRoaXMudmFsdWVDaGFuZ2U9bmV3IFN5LHRoaXMub25Ub3VjaGVkPSgpPT57fSx0aGlzLl9wZXJjZW50PTAsdGhpcy5faXNTbGlkaW5nPW51bGwsdGhpcy5faXNBY3RpdmU9ITEsdGhpcy5fdGlja0ludGVydmFsUGVyY2VudD0wLHRoaXMuX3NsaWRlckRpbWVuc2lvbnM9bnVsbCx0aGlzLl9jb250cm9sVmFsdWVBY2Nlc3NvckNoYW5nZUZuPSgpPT57fSx0aGlzLl9kaXJDaGFuZ2VTdWJzY3JpcHRpb249dS5FTVBUWSx0aGlzLl9wb2ludGVyRG93bj10PT57dGhpcy5kaXNhYmxlZHx8dGhpcy5faXNTbGlkaW5nfHwha0oodCkmJjAhPT10LmJ1dHRvbnx8dGhpcy5fbmdab25lLnJ1bigoKCk9Pnt0aGlzLl90b3VjaElkPWtKKHQpPyhmdW5jdGlvbiBlKHQsbil7Zm9yKGxldCBlPTA7ZTx0LnRvdWNoZXMubGVuZ3RoO2UrKyl7Y29uc3Qgbz10LnRvdWNoZXNbZV0udGFyZ2V0O2lmKG49PT1vfHxuLmNvbnRhaW5zKG8pKXJldHVybiB0LnRvdWNoZXNbZV0uaWRlbnRpZmllcn1yZXR1cm59Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLykodCx0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpOnZvaWQgMDtjb25zdCBuPVNKKHQsdGhpcy5fdG91Y2hJZCk7aWYobil7Y29uc3QgZT10aGlzLnZhbHVlO3RoaXMuX2lzU2xpZGluZz0icG9pbnRlciIsdGhpcy5fbGFzdFBvaW50ZXJFdmVudD10LHQucHJldmVudERlZmF1bHQoKSx0aGlzLl9mb2N1c0hvc3RFbGVtZW50KCksdGhpcy5fb25Nb3VzZWVudGVyKCksdGhpcy5fYmluZEdsb2JhbEV2ZW50cyh0KSx0aGlzLl9mb2N1c0hvc3RFbGVtZW50KCksdGhpcy5fdXBkYXRlVmFsdWVGcm9tUG9zaXRpb24obiksdGhpcy5fdmFsdWVPblNsaWRlU3RhcnQ9ZSxlIT10aGlzLnZhbHVlJiZ0aGlzLl9lbWl0SW5wdXRFdmVudCgpfX0pKX0sdGhpcy5fcG9pbnRlck1vdmU9dD0+e2lmKCJwb2ludGVyIj09PXRoaXMuX2lzU2xpZGluZyl7Y29uc3QgZT1TSih0LHRoaXMuX3RvdWNoSWQpO2lmKGUpe3QucHJldmVudERlZmF1bHQoKTtjb25zdCBuPXRoaXMudmFsdWU7dGhpcy5fbGFzdFBvaW50ZXJFdmVudD10LHRoaXMuX3VwZGF0ZVZhbHVlRnJvbVBvc2l0aW9uKGUpLG4hPXRoaXMudmFsdWUmJnRoaXMuX2VtaXRJbnB1dEV2ZW50KCl9fX0sdGhpcy5fcG9pbnRlclVwPXQ9PnsicG9pbnRlciI9PT10aGlzLl9pc1NsaWRpbmcmJihrSih0KSYmIm51bWJlciI9PXR5cGVvZiB0aGlzLl90b3VjaElkJiYhREoodC5jaGFuZ2VkVG91Y2hlcyx0aGlzLl90b3VjaElkKXx8KHQucHJldmVudERlZmF1bHQoKSx0aGlzLl9yZW1vdmVHbG9iYWxFdmVudHMoKSx0aGlzLl9pc1NsaWRpbmc9bnVsbCx0aGlzLl90b3VjaElkPXZvaWQgMCx0aGlzLl92YWx1ZU9uU2xpZGVTdGFydD09dGhpcy52YWx1ZXx8dGhpcy5kaXNhYmxlZHx8dGhpcy5fZW1pdENoYW5nZUV2ZW50KCksdGhpcy5fdmFsdWVPblNsaWRlU3RhcnQ9dGhpcy5fbGFzdFBvaW50ZXJFdmVudD1udWxsKSl9LHRoaXMuX3dpbmRvd0JsdXI9KCk9Pnt0aGlzLl9sYXN0UG9pbnRlckV2ZW50JiZ0aGlzLl9wb2ludGVyVXAodGhpcy5fbGFzdFBvaW50ZXJFdmVudCl9LHRoaXMuX2RvY3VtZW50PXIsdGhpcy50YWJJbmRleD1wYXJzZUludChpKXx8MCxhLnJ1bk91dHNpZGVBbmd1bGFyKCgoKT0+e2NvbnN0IGU9dC5uYXRpdmVFbGVtZW50O2UuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIix0aGlzLl9wb2ludGVyRG93bix2SiksZS5hZGRFdmVudExpc3RlbmVyKCJ0b3VjaHN0YXJ0Iix0aGlzLl9wb2ludGVyRG93bix2Sil9KSl9Z2V0IGludmVydCgpe3JldHVybiB0aGlzLl9pbnZlcnR9c2V0IGludmVydCh0KXt0aGlzLl9pbnZlcnQ9ZUgodCl9Z2V0IG1heCgpe3JldHVybiB0aGlzLl9tYXh9c2V0IG1heCh0KXt0aGlzLl9tYXg9bkgodCx0aGlzLl9tYXgpLHRoaXMuX3BlcmNlbnQ9dGhpcy5fY2FsY3VsYXRlUGVyY2VudGFnZSh0aGlzLl92YWx1ZSksdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCl9Z2V0IG1pbigpe3JldHVybiB0aGlzLl9taW59c2V0IG1pbih0KXt0aGlzLl9taW49bkgodCx0aGlzLl9taW4pLHRoaXMuX3BlcmNlbnQ9dGhpcy5fY2FsY3VsYXRlUGVyY2VudGFnZSh0aGlzLl92YWx1ZSksdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCl9Z2V0IHN0ZXAoKXtyZXR1cm4gdGhpcy5fc3RlcH1zZXQgc3RlcCh0KXt0aGlzLl9zdGVwPW5IKHQsdGhpcy5fc3RlcCksdGhpcy5fc3RlcCUxIT0wJiYodGhpcy5fcm91bmRUb0RlY2ltYWw9dGhpcy5fc3RlcC50b1N0cmluZygpLnNwbGl0KCIuIikucG9wKCkubGVuZ3RoKSx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKX1nZXQgdGh1bWJMYWJlbCgpe3JldHVybiB0aGlzLl90aHVtYkxhYmVsfXNldCB0aHVtYkxhYmVsKHQpe3RoaXMuX3RodW1iTGFiZWw9ZUgodCl9Z2V0IHRpY2tJbnRlcnZhbCgpe3JldHVybiB0aGlzLl90aWNrSW50ZXJ2YWx9c2V0IHRpY2tJbnRlcnZhbCh0KXt0aGlzLl90aWNrSW50ZXJ2YWw9ImF1dG8iPT09dD8iYXV0byI6Im51bWJlciI9PXR5cGVvZiB0fHwic3RyaW5nIj09dHlwZW9mIHQ/bkgodCx0aGlzLl90aWNrSW50ZXJ2YWwpOjB9Z2V0IHZhbHVlKCl7cmV0dXJuIG51bGw9PT10aGlzLl92YWx1ZSYmKHRoaXMudmFsdWU9dGhpcy5fbWluKSx0aGlzLl92YWx1ZX1zZXQgdmFsdWUodCl7aWYodCE9PXRoaXMuX3ZhbHVlKXtsZXQgZT1uSCh0LDApO3RoaXMuX3JvdW5kVG9EZWNpbWFsJiZlIT09dGhpcy5taW4mJmUhPT10aGlzLm1heCYmKGU9cGFyc2VGbG9hdChlLnRvRml4ZWQodGhpcy5fcm91bmRUb0RlY2ltYWwpKSksdGhpcy5fdmFsdWU9ZSx0aGlzLl9wZXJjZW50PXRoaXMuX2NhbGN1bGF0ZVBlcmNlbnRhZ2UodGhpcy5fdmFsdWUpLHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpfX1nZXQgdmVydGljYWwoKXtyZXR1cm4gdGhpcy5fdmVydGljYWx9c2V0IHZlcnRpY2FsKHQpe3RoaXMuX3ZlcnRpY2FsPWVIKHQpfWdldCBkaXNwbGF5VmFsdWUoKXtyZXR1cm4gdGhpcy5kaXNwbGF5V2l0aD90aGlzLmRpc3BsYXlXaXRoKHRoaXMudmFsdWUpOnRoaXMuX3JvdW5kVG9EZWNpbWFsJiZ0aGlzLnZhbHVlJiZ0aGlzLnZhbHVlJTEhPTA/dGhpcy52YWx1ZS50b0ZpeGVkKHRoaXMuX3JvdW5kVG9EZWNpbWFsKTp0aGlzLnZhbHVlfHwwfWZvY3VzKHQpe3RoaXMuX2ZvY3VzSG9zdEVsZW1lbnQodCl9Ymx1cigpe3RoaXMuX2JsdXJIb3N0RWxlbWVudCgpfWdldCBwZXJjZW50KCl7cmV0dXJuIHRoaXMuX2NsYW1wKHRoaXMuX3BlcmNlbnQpfV9zaG91bGRJbnZlcnRBeGlzKCl7cmV0dXJuIHRoaXMudmVydGljYWw/IXRoaXMuaW52ZXJ0OnRoaXMuaW52ZXJ0fV9pc01pblZhbHVlKCl7cmV0dXJuIDA9PT10aGlzLnBlcmNlbnR9X2dldFRodW1iR2FwKCl7cmV0dXJuIHRoaXMuZGlzYWJsZWQ/Nzp0aGlzLl9pc01pblZhbHVlKCkmJiF0aGlzLnRodW1iTGFiZWw/dGhpcy5faXNBY3RpdmU/MTA6NzowfV9nZXRUcmFja0JhY2tncm91bmRTdHlsZXMoKXtjb25zdCB0PXRoaXMudmVydGljYWw/YDEsICR7MS10aGlzLnBlcmNlbnR9LCAxYDoxLXRoaXMucGVyY2VudCsiLCAxLCAxIjtyZXR1cm57dHJhbnNmb3JtOmB0cmFuc2xhdGUke3RoaXMudmVydGljYWw/IlkiOiJYIn0oJHt0aGlzLl9zaG91bGRJbnZlcnRNb3VzZUNvb3JkcygpPyItIjoiIn0ke3RoaXMuX2dldFRodW1iR2FwKCl9cHgpIHNjYWxlM2QoJHt0fSlgfX1fZ2V0VHJhY2tGaWxsU3R5bGVzKCl7Y29uc3QgdD10aGlzLnBlcmNlbnQsZT10aGlzLnZlcnRpY2FsP2AxLCAke3R9LCAxYDpgJHt0fSwgMSwgMWA7cmV0dXJue3RyYW5zZm9ybTpgdHJhbnNsYXRlJHt0aGlzLnZlcnRpY2FsPyJZIjoiWCJ9KCR7dGhpcy5fc2hvdWxkSW52ZXJ0TW91c2VDb29yZHMoKT8iIjoiLSJ9JHt0aGlzLl9nZXRUaHVtYkdhcCgpfXB4KSBzY2FsZTNkKCR7ZX0pYCxkaXNwbGF5OjA9PT10PyJub25lIjoiIn19X2dldFRpY2tzQ29udGFpbmVyU3R5bGVzKCl7cmV0dXJue3RyYW5zZm9ybTpgdHJhbnNsYXRlJHt0aGlzLnZlcnRpY2FsPyJZIjoiWCJ9KCR7dGhpcy52ZXJ0aWNhbHx8InJ0bCIhPXRoaXMuX2dldERpcmVjdGlvbigpPyItIjoiIn0ke3RoaXMuX3RpY2tJbnRlcnZhbFBlcmNlbnQvMioxMDB9JSlgfX1fZ2V0VGlja3NTdHlsZXMoKXtsZXQgdD0xMDAqdGhpcy5fdGlja0ludGVydmFsUGVyY2VudCxlPXtiYWNrZ3JvdW5kU2l6ZTp0aGlzLnZlcnRpY2FsP2AycHggJHt0fSVgOmAke3R9JSAycHhgLHRyYW5zZm9ybTpgdHJhbnNsYXRlWigwKSB0cmFuc2xhdGUke3RoaXMudmVydGljYWw/IlkiOiJYIn0oJHt0aGlzLnZlcnRpY2FsfHwicnRsIiE9dGhpcy5fZ2V0RGlyZWN0aW9uKCk/IiI6Ii0ifSR7dC8yfSUpJHt0aGlzLnZlcnRpY2FsfHwicnRsIiE9dGhpcy5fZ2V0RGlyZWN0aW9uKCk/IiI6IiByb3RhdGUoMTgwZGVnKSJ9YH07aWYodGhpcy5faXNNaW5WYWx1ZSgpJiZ0aGlzLl9nZXRUaHVtYkdhcCgpKXtjb25zdCB0PXRoaXMuX3Nob3VsZEludmVydEF4aXMoKTtsZXQgbjtuPXRoaXMudmVydGljYWw/dD8iQm90dG9tIjoiVG9wIjp0PyJSaWdodCI6IkxlZnQiLGVbYHBhZGRpbmcke259YF09YCR7dGhpcy5fZ2V0VGh1bWJHYXAoKX1weGB9cmV0dXJuIGV9X2dldFRodW1iQ29udGFpbmVyU3R5bGVzKCl7Y29uc3QgdD10aGlzLl9zaG91bGRJbnZlcnRBeGlzKCk7cmV0dXJue3RyYW5zZm9ybTpgdHJhbnNsYXRlJHt0aGlzLnZlcnRpY2FsPyJZIjoiWCJ9KC0kezEwMCooKCJydGwiIT10aGlzLl9nZXREaXJlY3Rpb24oKXx8dGhpcy52ZXJ0aWNhbD90OiF0KT90aGlzLnBlcmNlbnQ6MS10aGlzLnBlcmNlbnQpfSUpYH19X3Nob3VsZEludmVydE1vdXNlQ29vcmRzKCl7Y29uc3QgdD10aGlzLl9zaG91bGRJbnZlcnRBeGlzKCk7cmV0dXJuInJ0bCIhPXRoaXMuX2dldERpcmVjdGlvbigpfHx0aGlzLnZlcnRpY2FsP3Q6IXR9X2dldERpcmVjdGlvbigpe3JldHVybiB0aGlzLl9kaXImJiJydGwiPT10aGlzLl9kaXIudmFsdWU/InJ0bCI6Imx0ciJ9bmdBZnRlclZpZXdJbml0KCl7dGhpcy5fZm9jdXNNb25pdG9yLm1vbml0b3IodGhpcy5fZWxlbWVudFJlZiwhMCkuc3Vic2NyaWJlKCh0PT57dGhpcy5faXNBY3RpdmU9ISF0JiYia2V5Ym9hcmQiIT09dCx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCl9KSksdGhpcy5fZGlyJiYodGhpcy5fZGlyQ2hhbmdlU3Vic2NyaXB0aW9uPXRoaXMuX2Rpci5jaGFuZ2Uuc3Vic2NyaWJlKCgoKT0+e3RoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpfSkpKX1uZ09uRGVzdHJveSgpe2NvbnN0IHQ9dGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O3QucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIix0aGlzLl9wb2ludGVyRG93bix2SiksdC5yZW1vdmVFdmVudExpc3RlbmVyKCJ0b3VjaHN0YXJ0Iix0aGlzLl9wb2ludGVyRG93bix2SiksdGhpcy5fbGFzdFBvaW50ZXJFdmVudD1udWxsLHRoaXMuX3JlbW92ZUdsb2JhbEV2ZW50cygpLHRoaXMuX2ZvY3VzTW9uaXRvci5zdG9wTW9uaXRvcmluZyh0aGlzLl9lbGVtZW50UmVmKSx0aGlzLl9kaXJDaGFuZ2VTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKX1fb25Nb3VzZWVudGVyKCl7dGhpcy5kaXNhYmxlZHx8KHRoaXMuX3NsaWRlckRpbWVuc2lvbnM9dGhpcy5fZ2V0U2xpZGVyRGltZW5zaW9ucygpLHRoaXMuX3VwZGF0ZVRpY2tJbnRlcnZhbFBlcmNlbnQoKSl9X29uRm9jdXMoKXt0aGlzLl9zbGlkZXJEaW1lbnNpb25zPXRoaXMuX2dldFNsaWRlckRpbWVuc2lvbnMoKSx0aGlzLl91cGRhdGVUaWNrSW50ZXJ2YWxQZXJjZW50KCl9X29uQmx1cigpe3RoaXMub25Ub3VjaGVkKCl9X29uS2V5ZG93bih0KXtpZih0aGlzLmRpc2FibGVkfHx0SCh0KXx8dGhpcy5faXNTbGlkaW5nJiYia2V5Ym9hcmQiIT09dGhpcy5faXNTbGlkaW5nKXJldHVybjtjb25zdCBlPXRoaXMudmFsdWU7c3dpdGNoKHQua2V5Q29kZSl7Y2FzZSAzMzp0aGlzLl9pbmNyZW1lbnQoMTApO2JyZWFrO2Nhc2UgMzQ6dGhpcy5faW5jcmVtZW50KC0xMCk7YnJlYWs7Y2FzZSAzNTp0aGlzLnZhbHVlPXRoaXMubWF4O2JyZWFrO2Nhc2UgMzY6dGhpcy52YWx1ZT10aGlzLm1pbjticmVhaztjYXNlIDM3OnRoaXMuX2luY3JlbWVudCgicnRsIj09dGhpcy5fZ2V0RGlyZWN0aW9uKCk/MTotMSk7YnJlYWs7Y2FzZSBRSTp0aGlzLl9pbmNyZW1lbnQoMSk7YnJlYWs7Y2FzZSAzOTp0aGlzLl9pbmNyZW1lbnQoInJ0bCI9PXRoaXMuX2dldERpcmVjdGlvbigpPy0xOjEpO2JyZWFrO2Nhc2UgJEk6dGhpcy5faW5jcmVtZW50KC0xKTticmVhaztkZWZhdWx0OnJldHVybn1lIT10aGlzLnZhbHVlJiYodGhpcy5fZW1pdElucHV0RXZlbnQoKSx0aGlzLl9lbWl0Q2hhbmdlRXZlbnQoKSksdGhpcy5faXNTbGlkaW5nPSJrZXlib2FyZCIsdC5wcmV2ZW50RGVmYXVsdCgpfV9vbktleXVwKCl7ImtleWJvYXJkIj09PXRoaXMuX2lzU2xpZGluZyYmKHRoaXMuX2lzU2xpZGluZz1udWxsKX1fZ2V0V2luZG93KCl7cmV0dXJuIHRoaXMuX2RvY3VtZW50LmRlZmF1bHRWaWV3fHx3aW5kb3d9X2JpbmRHbG9iYWxFdmVudHModCl7Y29uc3QgZT10aGlzLl9kb2N1bWVudCxuPWtKKHQpLG89bj8idG91Y2hlbmQiOiJtb3VzZXVwIjtlLmFkZEV2ZW50TGlzdGVuZXIobj8idG91Y2htb3ZlIjoibW91c2Vtb3ZlIix0aGlzLl9wb2ludGVyTW92ZSx2SiksZS5hZGRFdmVudExpc3RlbmVyKG8sdGhpcy5fcG9pbnRlclVwLHZKKSxuJiZlLmFkZEV2ZW50TGlzdGVuZXIoInRvdWNoY2FuY2VsIix0aGlzLl9wb2ludGVyVXAsdkopO2NvbnN0IGk9dGhpcy5fZ2V0V2luZG93KCk7dm9pZCAwIT09aSYmaSYmaS5hZGRFdmVudExpc3RlbmVyKCJibHVyIix0aGlzLl93aW5kb3dCbHVyKX1fcmVtb3ZlR2xvYmFsRXZlbnRzKCl7Y29uc3QgdD10aGlzLl9kb2N1bWVudDt0LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNlbW92ZSIsdGhpcy5fcG9pbnRlck1vdmUsdkopLHQucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91c2V1cCIsdGhpcy5fcG9pbnRlclVwLHZKKSx0LnJlbW92ZUV2ZW50TGlzdGVuZXIoInRvdWNobW92ZSIsdGhpcy5fcG9pbnRlck1vdmUsdkopLHQucmVtb3ZlRXZlbnRMaXN0ZW5lcigidG91Y2hlbmQiLHRoaXMuX3BvaW50ZXJVcCx2SiksdC5yZW1vdmVFdmVudExpc3RlbmVyKCJ0b3VjaGNhbmNlbCIsdGhpcy5fcG9pbnRlclVwLHZKKTtjb25zdCBlPXRoaXMuX2dldFdpbmRvdygpO3ZvaWQgMCE9PWUmJmUmJmUucmVtb3ZlRXZlbnRMaXN0ZW5lcigiYmx1ciIsdGhpcy5fd2luZG93Qmx1cil9X2luY3JlbWVudCh0KXt0aGlzLnZhbHVlPXRoaXMuX2NsYW1wKCh0aGlzLnZhbHVlfHwwKSt0aGlzLnN0ZXAqdCx0aGlzLm1pbix0aGlzLm1heCl9X3VwZGF0ZVZhbHVlRnJvbVBvc2l0aW9uKHQpe2lmKCF0aGlzLl9zbGlkZXJEaW1lbnNpb25zKXJldHVybjtsZXQgZT10aGlzLl9jbGFtcCgoKHRoaXMudmVydGljYWw/dC55OnQueCktKHRoaXMudmVydGljYWw/dGhpcy5fc2xpZGVyRGltZW5zaW9ucy50b3A6dGhpcy5fc2xpZGVyRGltZW5zaW9ucy5sZWZ0KSkvKHRoaXMudmVydGljYWw/dGhpcy5fc2xpZGVyRGltZW5zaW9ucy5oZWlnaHQ6dGhpcy5fc2xpZGVyRGltZW5zaW9ucy53aWR0aCkpO2lmKHRoaXMuX3Nob3VsZEludmVydE1vdXNlQ29vcmRzKCkmJihlPTEtZSksMD09PWUpdGhpcy52YWx1ZT10aGlzLm1pbjtlbHNlIGlmKDE9PT1lKXRoaXMudmFsdWU9dGhpcy5tYXg7ZWxzZXtjb25zdCB0PXRoaXMuX2NhbGN1bGF0ZVZhbHVlKGUpLG49TWF0aC5yb3VuZCgodC10aGlzLm1pbikvdGhpcy5zdGVwKSp0aGlzLnN0ZXArdGhpcy5taW47dGhpcy52YWx1ZT10aGlzLl9jbGFtcChuLHRoaXMubWluLHRoaXMubWF4KX19X2VtaXRDaGFuZ2VFdmVudCgpe3RoaXMuX2NvbnRyb2xWYWx1ZUFjY2Vzc29yQ2hhbmdlRm4odGhpcy52YWx1ZSksdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHRoaXMudmFsdWUpLHRoaXMuY2hhbmdlLmVtaXQodGhpcy5fY3JlYXRlQ2hhbmdlRXZlbnQoKSl9X2VtaXRJbnB1dEV2ZW50KCl7dGhpcy5pbnB1dC5lbWl0KHRoaXMuX2NyZWF0ZUNoYW5nZUV2ZW50KCkpfV91cGRhdGVUaWNrSW50ZXJ2YWxQZXJjZW50KCl7aWYodGhpcy50aWNrSW50ZXJ2YWwmJnRoaXMuX3NsaWRlckRpbWVuc2lvbnMpaWYoImF1dG8iPT10aGlzLnRpY2tJbnRlcnZhbCl7bGV0IHQ9dGhpcy52ZXJ0aWNhbD90aGlzLl9zbGlkZXJEaW1lbnNpb25zLmhlaWdodDp0aGlzLl9zbGlkZXJEaW1lbnNpb25zLndpZHRoLGU9TWF0aC5jZWlsKDMwLyh0KnRoaXMuc3RlcC8odGhpcy5tYXgtdGhpcy5taW4pKSk7dGhpcy5fdGlja0ludGVydmFsUGVyY2VudD1lKnRoaXMuc3RlcC90fWVsc2UgdGhpcy5fdGlja0ludGVydmFsUGVyY2VudD10aGlzLnRpY2tJbnRlcnZhbCp0aGlzLnN0ZXAvKHRoaXMubWF4LXRoaXMubWluKX1fY3JlYXRlQ2hhbmdlRXZlbnQodD10aGlzLnZhbHVlKXtsZXQgZT1uZXcgT0o7cmV0dXJuIGUuc291cmNlPXRoaXMsZS52YWx1ZT10LGV9X2NhbGN1bGF0ZVBlcmNlbnRhZ2UodCl7cmV0dXJuKCh0fHwwKS10aGlzLm1pbikvKHRoaXMubWF4LXRoaXMubWluKX1fY2FsY3VsYXRlVmFsdWUodCl7cmV0dXJuIHRoaXMubWluK3QqKHRoaXMubWF4LXRoaXMubWluKX1fY2xhbXAodCxlPTAsbj0xKXtyZXR1cm4gTWF0aC5tYXgoZSxNYXRoLm1pbih0LG4pKX1fZ2V0U2xpZGVyRGltZW5zaW9ucygpe3JldHVybiB0aGlzLl9zbGlkZXJXcmFwcGVyP3RoaXMuX3NsaWRlcldyYXBwZXIubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTpudWxsfV9mb2N1c0hvc3RFbGVtZW50KHQpe3RoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5mb2N1cyh0KX1fYmx1ckhvc3RFbGVtZW50KCl7dGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmJsdXIoKX13cml0ZVZhbHVlKHQpe3RoaXMudmFsdWU9dH1yZWdpc3Rlck9uQ2hhbmdlKHQpe3RoaXMuX2NvbnRyb2xWYWx1ZUFjY2Vzc29yQ2hhbmdlRm49dH1yZWdpc3Rlck9uVG91Y2hlZCh0KXt0aGlzLm9uVG91Y2hlZD10fXNldERpc2FibGVkU3RhdGUodCl7dGhpcy5kaXNhYmxlZD10fX1mdW5jdGlvbiBrSih0KXtyZXR1cm4idCI9PT10LnR5cGVbMF19ZnVuY3Rpb24gU0oodCxlKXtsZXQgbjtyZXR1cm4gbj1rSih0KT8ibnVtYmVyIj09dHlwZW9mIGU/REoodC50b3VjaGVzLGUpfHxESih0LmNoYW5nZWRUb3VjaGVzLGUpOnQudG91Y2hlc1swXXx8dC5jaGFuZ2VkVG91Y2hlc1swXTp0LG4/e3g6bi5jbGllbnRYLHk6bi5jbGllbnRZfTp2b2lkIDB9ZnVuY3Rpb24gREoodCxlKXtmb3IobGV0IG49MDtuPHQubGVuZ3RoO24rKylpZih0W25dLmlkZW50aWZpZXI9PT1lKXJldHVybiB0W25dfXdKLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHx3SikoZ2YoS2gpLGdmKGZGKSxnZihPYiksZ2YodkYsOCksR2EoInRhYmluZGV4IiksZ2YobUMpLGdmKHNNKSxnZihjayw4KSl9LHdKLsm1Y21wPXNvKHt0eXBlOndKLHNlbGVjdG9yczpbWyJtYXQtc2xpZGVyIl1dLHZpZXdRdWVyeTpmdW5jdGlvbiB0KGUsbil7aWYoMSZlJiZWeShNSiw1KSwyJmUpe2xldCB0O0J5KHQ9VXkoKSkmJihuLl9zbGlkZXJXcmFwcGVyPXQuZmlyc3QpfX0saG9zdEF0dHJzOlsicm9sZSIsInNsaWRlciIsMSwibWF0LXNsaWRlciIsIm1hdC1mb2N1cy1pbmRpY2F0b3IiXSxob3N0VmFyczoyOSxob3N0QmluZGluZ3M6ZnVuY3Rpb24gdChlLG4pezEmZSYmUmYoImZvY3VzIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLl9vbkZvY3VzKCl9KSkoImJsdXIiLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4uX29uQmx1cigpfSkpKCJrZXlkb3duIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5fb25LZXlkb3duKGUpfSkpKCJrZXl1cCIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5fb25LZXl1cCgpfSkpKCJtb3VzZWVudGVyIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLl9vbk1vdXNlZW50ZXIoKX0pKSgic2VsZWN0c3RhcnQiLChmdW5jdGlvbiB0KGUpe3JldHVybiBlLnByZXZlbnREZWZhdWx0KCl9KSksMiZlJiYoY2coInRhYkluZGV4IixuLnRhYkluZGV4KSx5bSgiYXJpYS1kaXNhYmxlZCIsbi5kaXNhYmxlZCkoImFyaWEtdmFsdWVtYXgiLG4ubWF4KSgiYXJpYS12YWx1ZW1pbiIsbi5taW4pKCJhcmlhLXZhbHVlbm93IixuLnZhbHVlKSgiYXJpYS12YWx1ZXRleHQiLG51bGw9PW4udmFsdWVUZXh0P24uZGlzcGxheVZhbHVlOm4udmFsdWVUZXh0KSgiYXJpYS1vcmllbnRhdGlvbiIsbi52ZXJ0aWNhbD8idmVydGljYWwiOiJob3Jpem9udGFsIiksY3UoIm1hdC1zbGlkZXItZGlzYWJsZWQiLG4uZGlzYWJsZWQpKCJtYXQtc2xpZGVyLWhhcy10aWNrcyIsbi50aWNrSW50ZXJ2YWwpKCJtYXQtc2xpZGVyLWhvcml6b250YWwiLCFuLnZlcnRpY2FsKSgibWF0LXNsaWRlci1heGlzLWludmVydGVkIixuLl9zaG91bGRJbnZlcnRBeGlzKCkpKCJtYXQtc2xpZGVyLWludmVydC1tb3VzZS1jb29yZHMiLG4uX3Nob3VsZEludmVydE1vdXNlQ29vcmRzKCkpKCJtYXQtc2xpZGVyLXNsaWRpbmciLG4uX2lzU2xpZGluZykoIm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZyIsbi50aHVtYkxhYmVsKSgibWF0LXNsaWRlci12ZXJ0aWNhbCIsbi52ZXJ0aWNhbCkoIm1hdC1zbGlkZXItbWluLXZhbHVlIixuLl9pc01pblZhbHVlKCkpKCJtYXQtc2xpZGVyLWhpZGUtbGFzdC10aWNrIixuLmRpc2FibGVkfHxuLl9pc01pblZhbHVlKCkmJm4uX2dldFRodW1iR2FwKCkmJm4uX3Nob3VsZEludmVydEF4aXMoKSkoIl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlIiwiTm9vcEFuaW1hdGlvbnMiPT09bi5fYW5pbWF0aW9uTW9kZSkpfSxpbnB1dHM6e2Rpc2FibGVkOiJkaXNhYmxlZCIsY29sb3I6ImNvbG9yIix0YWJJbmRleDoidGFiSW5kZXgiLGludmVydDoiaW52ZXJ0IixtYXg6Im1heCIsbWluOiJtaW4iLHN0ZXA6InN0ZXAiLHRodW1iTGFiZWw6InRodW1iTGFiZWwiLHRpY2tJbnRlcnZhbDoidGlja0ludGVydmFsIix2YWx1ZToidmFsdWUiLHZlcnRpY2FsOiJ2ZXJ0aWNhbCIsZGlzcGxheVdpdGg6ImRpc3BsYXlXaXRoIix2YWx1ZVRleHQ6InZhbHVlVGV4dCJ9LG91dHB1dHM6e2NoYW5nZToiY2hhbmdlIixpbnB1dDoiaW5wdXQiLHZhbHVlQ2hhbmdlOiJ2YWx1ZUNoYW5nZSJ9LGV4cG9ydEFzOlsibWF0U2xpZGVyIl0sZmVhdHVyZXM6W2poKFt4Sl0pLFFwXSxkZWNsczoxMyx2YXJzOjYsY29uc3RzOltbMSwibWF0LXNsaWRlci13cmFwcGVyIl0sWyJzbGlkZXJXcmFwcGVyIiwiIl0sWzEsIm1hdC1zbGlkZXItdHJhY2std3JhcHBlciJdLFsxLCJtYXQtc2xpZGVyLXRyYWNrLWJhY2tncm91bmQiLDMsIm5nU3R5bGUiXSxbMSwibWF0LXNsaWRlci10cmFjay1maWxsIiwzLCJuZ1N0eWxlIl0sWzEsIm1hdC1zbGlkZXItdGlja3MtY29udGFpbmVyIiwzLCJuZ1N0eWxlIl0sWzEsIm1hdC1zbGlkZXItdGlja3MiLDMsIm5nU3R5bGUiXSxbMSwibWF0LXNsaWRlci10aHVtYi1jb250YWluZXIiLDMsIm5nU3R5bGUiXSxbMSwibWF0LXNsaWRlci1mb2N1cy1yaW5nIl0sWzEsIm1hdC1zbGlkZXItdGh1bWIiXSxbMSwibWF0LXNsaWRlci10aHVtYi1sYWJlbCJdLFsxLCJtYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHQiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKENmKDAsImRpdiIsMCwxKSxDZigyLCJkaXYiLDIpLHZmKDMsImRpdiIsMyksdmYoNCwiZGl2Iiw0KSxNZigpLENmKDUsImRpdiIsNSksdmYoNiwiZGl2Iiw2KSxNZigpLENmKDcsImRpdiIsNyksdmYoOCwiZGl2Iiw4KSx2Zig5LCJkaXYiLDkpLENmKDEwLCJkaXYiLDEwKSxDZigxMSwic3BhbiIsMTEpLFB1KDEyKSxNZigpLE1mKCksTWYoKSxNZigpKSwyJmUmJihEYygzKSxiZigibmdTdHlsZSIsbi5fZ2V0VHJhY2tCYWNrZ3JvdW5kU3R5bGVzKCkpLERjKDEpLGJmKCJuZ1N0eWxlIixuLl9nZXRUcmFja0ZpbGxTdHlsZXMoKSksRGMoMSksYmYoIm5nU3R5bGUiLG4uX2dldFRpY2tzQ29udGFpbmVyU3R5bGVzKCkpLERjKDEpLGJmKCJuZ1N0eWxlIixuLl9nZXRUaWNrc1N0eWxlcygpKSxEYygxKSxiZigibmdTdHlsZSIsbi5fZ2V0VGh1bWJDb250YWluZXJTdHlsZXMoKSksRGMoNSksd3Uobi5kaXNwbGF5VmFsdWUpKX0sZGlyZWN0aXZlczpbenZdLHN0eWxlczpbJy5tYXQtc2xpZGVye2Rpc3BsYXk6aW5saW5lLWJsb2NrO3Bvc2l0aW9uOnJlbGF0aXZlO2JveC1zaXppbmc6Ym9yZGVyLWJveDtwYWRkaW5nOjhweDtvdXRsaW5lOm5vbmU7dmVydGljYWwtYWxpZ246bWlkZGxlfS5tYXQtc2xpZGVyOm5vdCgubWF0LXNsaWRlci1kaXNhYmxlZCk6YWN0aXZlLC5tYXQtc2xpZGVyLm1hdC1zbGlkZXItc2xpZGluZzpub3QoLm1hdC1zbGlkZXItZGlzYWJsZWQpe2N1cnNvcjotd2Via2l0LWdyYWJiaW5nO2N1cnNvcjpncmFiYmluZ30ubWF0LXNsaWRlci13cmFwcGVyey13ZWJraXQtcHJpbnQtY29sb3ItYWRqdXN0OmV4YWN0O2NvbG9yLWFkanVzdDpleGFjdDtwb3NpdGlvbjphYnNvbHV0ZX0ubWF0LXNsaWRlci10cmFjay13cmFwcGVye3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2xlZnQ6MDtvdmVyZmxvdzpoaWRkZW59Lm1hdC1zbGlkZXItdHJhY2stZmlsbHtwb3NpdGlvbjphYnNvbHV0ZTt0cmFuc2Zvcm0tb3JpZ2luOjAgMDt0cmFuc2l0aW9uOnRyYW5zZm9ybSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKSxiYWNrZ3JvdW5kLWNvbG9yIDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpfS5tYXQtc2xpZGVyLXRyYWNrLWJhY2tncm91bmR7cG9zaXRpb246YWJzb2x1dGU7dHJhbnNmb3JtLW9yaWdpbjoxMDAlIDEwMCU7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSksYmFja2dyb3VuZC1jb2xvciA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKX0ubWF0LXNsaWRlci10aWNrcy1jb250YWluZXJ7cG9zaXRpb246YWJzb2x1dGU7bGVmdDowO3RvcDowO292ZXJmbG93OmhpZGRlbn0ubWF0LXNsaWRlci10aWNrc3std2Via2l0LWJhY2tncm91bmQtY2xpcDpjb250ZW50LWJveDtiYWNrZ3JvdW5kLWNsaXA6Y29udGVudC1ib3g7YmFja2dyb3VuZC1yZXBlYXQ6cmVwZWF0O2JveC1zaXppbmc6Ym9yZGVyLWJveDtvcGFjaXR5OjA7dHJhbnNpdGlvbjpvcGFjaXR5IDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpfS5tYXQtc2xpZGVyLXRodW1iLWNvbnRhaW5lcntwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjE7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSl9Lm1hdC1zbGlkZXItZm9jdXMtcmluZ3twb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDozMHB4O2hlaWdodDozMHB4O2JvcmRlci1yYWRpdXM6NTAlO3RyYW5zZm9ybTpzY2FsZSgwKTtvcGFjaXR5OjA7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSksYmFja2dyb3VuZC1jb2xvciA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKSxvcGFjaXR5IDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpfS5tYXQtc2xpZGVyLmNkay1rZXlib2FyZC1mb2N1c2VkIC5tYXQtc2xpZGVyLWZvY3VzLXJpbmcsLm1hdC1zbGlkZXIuY2RrLXByb2dyYW0tZm9jdXNlZCAubWF0LXNsaWRlci1mb2N1cy1yaW5ne3RyYW5zZm9ybTpzY2FsZSgxKTtvcGFjaXR5OjF9Lm1hdC1zbGlkZXI6bm90KC5tYXQtc2xpZGVyLWRpc2FibGVkKTpub3QoLm1hdC1zbGlkZXItc2xpZGluZykgLm1hdC1zbGlkZXItdGh1bWItbGFiZWwsLm1hdC1zbGlkZXI6bm90KC5tYXQtc2xpZGVyLWRpc2FibGVkKTpub3QoLm1hdC1zbGlkZXItc2xpZGluZykgLm1hdC1zbGlkZXItdGh1bWJ7Y3Vyc29yOi13ZWJraXQtZ3JhYjtjdXJzb3I6Z3JhYn0ubWF0LXNsaWRlci10aHVtYntwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDotMTBweDtib3R0b206LTEwcHg7Ym94LXNpemluZzpib3JkZXItYm94O3dpZHRoOjIwcHg7aGVpZ2h0OjIwcHg7Ym9yZGVyOjNweCBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItcmFkaXVzOjUwJTt0cmFuc2Zvcm06c2NhbGUoMC43KTt0cmFuc2l0aW9uOnRyYW5zZm9ybSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKSxiYWNrZ3JvdW5kLWNvbG9yIDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpLGJvcmRlci1jb2xvciA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKX0ubWF0LXNsaWRlci10aHVtYi1sYWJlbHtkaXNwbGF5Om5vbmU7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MjhweDtoZWlnaHQ6MjhweDtib3JkZXItcmFkaXVzOjUwJTt0cmFuc2l0aW9uOnRyYW5zZm9ybSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKSxib3JkZXItcmFkaXVzIDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpLGJhY2tncm91bmQtY29sb3IgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSl9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LXNsaWRlci10aHVtYi1sYWJlbHtvdXRsaW5lOnNvbGlkIDFweH0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0e3otaW5kZXg6MTtvcGFjaXR5OjA7dHJhbnNpdGlvbjpvcGFjaXR5IDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpfS5tYXQtc2xpZGVyLXNsaWRpbmcgLm1hdC1zbGlkZXItdHJhY2stZmlsbCwubWF0LXNsaWRlci1zbGlkaW5nIC5tYXQtc2xpZGVyLXRyYWNrLWJhY2tncm91bmQsLm1hdC1zbGlkZXItc2xpZGluZyAubWF0LXNsaWRlci10aHVtYi1jb250YWluZXJ7dHJhbnNpdGlvbi1kdXJhdGlvbjowbXN9Lm1hdC1zbGlkZXItaGFzLXRpY2tzIC5tYXQtc2xpZGVyLXdyYXBwZXI6OmFmdGVye2NvbnRlbnQ6IiI7cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXdpZHRoOjA7Ym9yZGVyLXN0eWxlOnNvbGlkO29wYWNpdHk6MDt0cmFuc2l0aW9uOm9wYWNpdHkgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSl9Lm1hdC1zbGlkZXItaGFzLXRpY2tzLmNkay1mb2N1c2VkOm5vdCgubWF0LXNsaWRlci1oaWRlLWxhc3QtdGljaykgLm1hdC1zbGlkZXItd3JhcHBlcjo6YWZ0ZXIsLm1hdC1zbGlkZXItaGFzLXRpY2tzOmhvdmVyOm5vdCgubWF0LXNsaWRlci1oaWRlLWxhc3QtdGljaykgLm1hdC1zbGlkZXItd3JhcHBlcjo6YWZ0ZXJ7b3BhY2l0eToxfS5tYXQtc2xpZGVyLWhhcy10aWNrcy5jZGstZm9jdXNlZDpub3QoLm1hdC1zbGlkZXItZGlzYWJsZWQpIC5tYXQtc2xpZGVyLXRpY2tzLC5tYXQtc2xpZGVyLWhhcy10aWNrczpob3Zlcjpub3QoLm1hdC1zbGlkZXItZGlzYWJsZWQpIC5tYXQtc2xpZGVyLXRpY2tze29wYWNpdHk6MX0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nIC5tYXQtc2xpZGVyLWZvY3VzLXJpbmd7ZGlzcGxheTpub25lfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcgLm1hdC1zbGlkZXItdGh1bWItbGFiZWx7ZGlzcGxheTpmbGV4fS5tYXQtc2xpZGVyLWF4aXMtaW52ZXJ0ZWQgLm1hdC1zbGlkZXItdHJhY2stZmlsbHt0cmFuc2Zvcm0tb3JpZ2luOjEwMCUgMTAwJX0ubWF0LXNsaWRlci1heGlzLWludmVydGVkIC5tYXQtc2xpZGVyLXRyYWNrLWJhY2tncm91bmR7dHJhbnNmb3JtLW9yaWdpbjowIDB9Lm1hdC1zbGlkZXI6bm90KC5tYXQtc2xpZGVyLWRpc2FibGVkKS5jZGstZm9jdXNlZC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcgLm1hdC1zbGlkZXItdGh1bWJ7dHJhbnNmb3JtOnNjYWxlKDApfS5tYXQtc2xpZGVyOm5vdCgubWF0LXNsaWRlci1kaXNhYmxlZCkuY2RrLWZvY3VzZWQgLm1hdC1zbGlkZXItdGh1bWItbGFiZWx7Ym9yZGVyLXJhZGl1czo1MCUgNTAlIDB9Lm1hdC1zbGlkZXI6bm90KC5tYXQtc2xpZGVyLWRpc2FibGVkKS5jZGstZm9jdXNlZCAubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0e29wYWNpdHk6MX0ubWF0LXNsaWRlcjpub3QoLm1hdC1zbGlkZXItZGlzYWJsZWQpLmNkay1tb3VzZS1mb2N1c2VkIC5tYXQtc2xpZGVyLXRodW1iLC5tYXQtc2xpZGVyOm5vdCgubWF0LXNsaWRlci1kaXNhYmxlZCkuY2RrLXRvdWNoLWZvY3VzZWQgLm1hdC1zbGlkZXItdGh1bWIsLm1hdC1zbGlkZXI6bm90KC5tYXQtc2xpZGVyLWRpc2FibGVkKS5jZGstcHJvZ3JhbS1mb2N1c2VkIC5tYXQtc2xpZGVyLXRodW1ie2JvcmRlci13aWR0aDoycHg7dHJhbnNmb3JtOnNjYWxlKDEpfS5tYXQtc2xpZGVyLWRpc2FibGVkIC5tYXQtc2xpZGVyLWZvY3VzLXJpbmd7dHJhbnNmb3JtOnNjYWxlKDApO29wYWNpdHk6MH0ubWF0LXNsaWRlci1kaXNhYmxlZCAubWF0LXNsaWRlci10aHVtYntib3JkZXItd2lkdGg6NHB4O3RyYW5zZm9ybTpzY2FsZSgwLjUpfS5tYXQtc2xpZGVyLWRpc2FibGVkIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVse2Rpc3BsYXk6bm9uZX0ubWF0LXNsaWRlci1ob3Jpem9udGFse2hlaWdodDo0OHB4O21pbi13aWR0aDoxMjhweH0ubWF0LXNsaWRlci1ob3Jpem9udGFsIC5tYXQtc2xpZGVyLXdyYXBwZXJ7aGVpZ2h0OjJweDt0b3A6MjNweDtsZWZ0OjhweDtyaWdodDo4cHh9Lm1hdC1zbGlkZXItaG9yaXpvbnRhbCAubWF0LXNsaWRlci13cmFwcGVyOjphZnRlcntoZWlnaHQ6MnB4O2JvcmRlci1sZWZ0LXdpZHRoOjJweDtyaWdodDowO3RvcDowfS5tYXQtc2xpZGVyLWhvcml6b250YWwgLm1hdC1zbGlkZXItdHJhY2std3JhcHBlcntoZWlnaHQ6MnB4O3dpZHRoOjEwMCV9Lm1hdC1zbGlkZXItaG9yaXpvbnRhbCAubWF0LXNsaWRlci10cmFjay1maWxse2hlaWdodDoycHg7d2lkdGg6MTAwJTt0cmFuc2Zvcm06c2NhbGVYKDApfS5tYXQtc2xpZGVyLWhvcml6b250YWwgLm1hdC1zbGlkZXItdHJhY2stYmFja2dyb3VuZHtoZWlnaHQ6MnB4O3dpZHRoOjEwMCU7dHJhbnNmb3JtOnNjYWxlWCgxKX0ubWF0LXNsaWRlci1ob3Jpem9udGFsIC5tYXQtc2xpZGVyLXRpY2tzLWNvbnRhaW5lcntoZWlnaHQ6MnB4O3dpZHRoOjEwMCV9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LXNsaWRlci1ob3Jpem9udGFsIC5tYXQtc2xpZGVyLXRpY2tzLWNvbnRhaW5lcntoZWlnaHQ6MDtvdXRsaW5lOnNvbGlkIDJweDt0b3A6MXB4fS5tYXQtc2xpZGVyLWhvcml6b250YWwgLm1hdC1zbGlkZXItdGlja3N7aGVpZ2h0OjJweDt3aWR0aDoxMDAlfS5tYXQtc2xpZGVyLWhvcml6b250YWwgLm1hdC1zbGlkZXItdGh1bWItY29udGFpbmVye3dpZHRoOjEwMCU7aGVpZ2h0OjA7dG9wOjUwJX0ubWF0LXNsaWRlci1ob3Jpem9udGFsIC5tYXQtc2xpZGVyLWZvY3VzLXJpbmd7dG9wOi0xNXB4O3JpZ2h0Oi0xNXB4fS5tYXQtc2xpZGVyLWhvcml6b250YWwgLm1hdC1zbGlkZXItdGh1bWItbGFiZWx7cmlnaHQ6LTE0cHg7dG9wOi00MHB4O3RyYW5zZm9ybTp0cmFuc2xhdGVZKDI2cHgpIHNjYWxlKDAuMDEpIHJvdGF0ZSg0NWRlZyl9Lm1hdC1zbGlkZXItaG9yaXpvbnRhbCAubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0e3RyYW5zZm9ybTpyb3RhdGUoLTQ1ZGVnKX0ubWF0LXNsaWRlci1ob3Jpem9udGFsLmNkay1mb2N1c2VkIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVse3RyYW5zZm9ybTpyb3RhdGUoNDVkZWcpfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1zbGlkZXItaG9yaXpvbnRhbC5jZGstZm9jdXNlZCAubWF0LXNsaWRlci10aHVtYi1sYWJlbCwuY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtc2xpZGVyLWhvcml6b250YWwuY2RrLWZvY3VzZWQgLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dHt0cmFuc2Zvcm06bm9uZX0ubWF0LXNsaWRlci12ZXJ0aWNhbHt3aWR0aDo0OHB4O21pbi1oZWlnaHQ6MTI4cHh9Lm1hdC1zbGlkZXItdmVydGljYWwgLm1hdC1zbGlkZXItd3JhcHBlcnt3aWR0aDoycHg7dG9wOjhweDtib3R0b206OHB4O2xlZnQ6MjNweH0ubWF0LXNsaWRlci12ZXJ0aWNhbCAubWF0LXNsaWRlci13cmFwcGVyOjphZnRlcnt3aWR0aDoycHg7Ym9yZGVyLXRvcC13aWR0aDoycHg7Ym90dG9tOjA7bGVmdDowfS5tYXQtc2xpZGVyLXZlcnRpY2FsIC5tYXQtc2xpZGVyLXRyYWNrLXdyYXBwZXJ7aGVpZ2h0OjEwMCU7d2lkdGg6MnB4fS5tYXQtc2xpZGVyLXZlcnRpY2FsIC5tYXQtc2xpZGVyLXRyYWNrLWZpbGx7aGVpZ2h0OjEwMCU7d2lkdGg6MnB4O3RyYW5zZm9ybTpzY2FsZVkoMCl9Lm1hdC1zbGlkZXItdmVydGljYWwgLm1hdC1zbGlkZXItdHJhY2stYmFja2dyb3VuZHtoZWlnaHQ6MTAwJTt3aWR0aDoycHg7dHJhbnNmb3JtOnNjYWxlWSgxKX0ubWF0LXNsaWRlci12ZXJ0aWNhbCAubWF0LXNsaWRlci10aWNrcy1jb250YWluZXJ7d2lkdGg6MnB4O2hlaWdodDoxMDAlfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1zbGlkZXItdmVydGljYWwgLm1hdC1zbGlkZXItdGlja3MtY29udGFpbmVye3dpZHRoOjA7b3V0bGluZTpzb2xpZCAycHg7bGVmdDoxcHh9Lm1hdC1zbGlkZXItdmVydGljYWwgLm1hdC1zbGlkZXItZm9jdXMtcmluZ3tib3R0b206LTE1cHg7bGVmdDotMTVweH0ubWF0LXNsaWRlci12ZXJ0aWNhbCAubWF0LXNsaWRlci10aWNrc3t3aWR0aDoycHg7aGVpZ2h0OjEwMCV9Lm1hdC1zbGlkZXItdmVydGljYWwgLm1hdC1zbGlkZXItdGh1bWItY29udGFpbmVye2hlaWdodDoxMDAlO3dpZHRoOjA7bGVmdDo1MCV9Lm1hdC1zbGlkZXItdmVydGljYWwgLm1hdC1zbGlkZXItdGh1bWJ7LXdlYmtpdC1iYWNrZmFjZS12aXNpYmlsaXR5OmhpZGRlbjtiYWNrZmFjZS12aXNpYmlsaXR5OmhpZGRlbn0ubWF0LXNsaWRlci12ZXJ0aWNhbCAubWF0LXNsaWRlci10aHVtYi1sYWJlbHtib3R0b206LTE0cHg7bGVmdDotNDBweDt0cmFuc2Zvcm06dHJhbnNsYXRlWCgyNnB4KSBzY2FsZSgwLjAxKSByb3RhdGUoLTQ1ZGVnKX0ubWF0LXNsaWRlci12ZXJ0aWNhbCAubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0e3RyYW5zZm9ybTpyb3RhdGUoNDVkZWcpfS5tYXQtc2xpZGVyLXZlcnRpY2FsLmNkay1mb2N1c2VkIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVse3RyYW5zZm9ybTpyb3RhdGUoLTQ1ZGVnKX1bZGlyPXJ0bF0gLm1hdC1zbGlkZXItd3JhcHBlcjo6YWZ0ZXJ7bGVmdDowO3JpZ2h0OmF1dG99W2Rpcj1ydGxdIC5tYXQtc2xpZGVyLWhvcml6b250YWwgLm1hdC1zbGlkZXItdHJhY2stZmlsbHt0cmFuc2Zvcm0tb3JpZ2luOjEwMCUgMTAwJX1bZGlyPXJ0bF0gLm1hdC1zbGlkZXItaG9yaXpvbnRhbCAubWF0LXNsaWRlci10cmFjay1iYWNrZ3JvdW5ke3RyYW5zZm9ybS1vcmlnaW46MCAwfVtkaXI9cnRsXSAubWF0LXNsaWRlci1ob3Jpem9udGFsLm1hdC1zbGlkZXItYXhpcy1pbnZlcnRlZCAubWF0LXNsaWRlci10cmFjay1maWxse3RyYW5zZm9ybS1vcmlnaW46MCAwfVtkaXI9cnRsXSAubWF0LXNsaWRlci1ob3Jpem9udGFsLm1hdC1zbGlkZXItYXhpcy1pbnZlcnRlZCAubWF0LXNsaWRlci10cmFjay1iYWNrZ3JvdW5ke3RyYW5zZm9ybS1vcmlnaW46MTAwJSAxMDAlfS5tYXQtc2xpZGVyLl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlIC5tYXQtc2xpZGVyLXRyYWNrLWZpbGwsLm1hdC1zbGlkZXIuX21hdC1hbmltYXRpb24tbm9vcGFibGUgLm1hdC1zbGlkZXItdHJhY2stYmFja2dyb3VuZCwubWF0LXNsaWRlci5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZSAubWF0LXNsaWRlci10aWNrcywubWF0LXNsaWRlci5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZSAubWF0LXNsaWRlci10aHVtYi1jb250YWluZXIsLm1hdC1zbGlkZXIuX21hdC1hbmltYXRpb24tbm9vcGFibGUgLm1hdC1zbGlkZXItZm9jdXMtcmluZywubWF0LXNsaWRlci5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZSAubWF0LXNsaWRlci10aHVtYiwubWF0LXNsaWRlci5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZSAubWF0LXNsaWRlci10aHVtYi1sYWJlbCwubWF0LXNsaWRlci5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZSAubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0LC5tYXQtc2xpZGVyLl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlIC5tYXQtc2xpZGVyLWhhcy10aWNrcyAubWF0LXNsaWRlci13cmFwcGVyOjphZnRlcnt0cmFuc2l0aW9uOm5vbmV9XG4nXSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KSx3Si5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOktofSx7dHlwZTpmRn0se3R5cGU6T2J9LHt0eXBlOnZGLGRlY29yYXRvcnM6W3t0eXBlOkJyfV19LHt0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTokYSxhcmdzOlsidGFiaW5kZXgiXX1dfSx7dHlwZTptQ30se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W3NNXX1dfSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W2NrXX1dfV0sd0oucHJvcERlY29yYXRvcnM9e2ludmVydDpbe3R5cGU6Ul99XSxtYXg6W3t0eXBlOlJffV0sbWluOlt7dHlwZTpSX31dLHN0ZXA6W3t0eXBlOlJffV0sdGh1bWJMYWJlbDpbe3R5cGU6Ul99XSx0aWNrSW50ZXJ2YWw6W3t0eXBlOlJffV0sdmFsdWU6W3t0eXBlOlJffV0sZGlzcGxheVdpdGg6W3t0eXBlOlJffV0sdmFsdWVUZXh0Olt7dHlwZTpSX31dLHZlcnRpY2FsOlt7dHlwZTpSX31dLGNoYW5nZTpbe3R5cGU6RV99XSxpbnB1dDpbe3R5cGU6RV99XSx2YWx1ZUNoYW5nZTpbe3R5cGU6RV99XSxfc2xpZGVyV3JhcHBlcjpbe3R5cGU6YXIsYXJnczpbInNsaWRlcldyYXBwZXIiXX1dfSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKHdKLFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6Im1hdC1zbGlkZXIiLGV4cG9ydEFzOiJtYXRTbGlkZXIiLHByb3ZpZGVyczpbeEpdLGhvc3Q6eyIoZm9jdXMpIjoiX29uRm9jdXMoKSIsIihibHVyKSI6Il9vbkJsdXIoKSIsIihrZXlkb3duKSI6Il9vbktleWRvd24oJGV2ZW50KSIsIihrZXl1cCkiOiJfb25LZXl1cCgpIiwiKG1vdXNlZW50ZXIpIjoiX29uTW91c2VlbnRlcigpIiwiKHNlbGVjdHN0YXJ0KSI6IiRldmVudC5wcmV2ZW50RGVmYXVsdCgpIixjbGFzczoibWF0LXNsaWRlciBtYXQtZm9jdXMtaW5kaWNhdG9yIixyb2xlOiJzbGlkZXIiLCJbdGFiSW5kZXhdIjoidGFiSW5kZXgiLCJbYXR0ci5hcmlhLWRpc2FibGVkXSI6ImRpc2FibGVkIiwiW2F0dHIuYXJpYS12YWx1ZW1heF0iOiJtYXgiLCJbYXR0ci5hcmlhLXZhbHVlbWluXSI6Im1pbiIsIlthdHRyLmFyaWEtdmFsdWVub3ddIjoidmFsdWUiLCJbYXR0ci5hcmlhLXZhbHVldGV4dF0iOiJ2YWx1ZVRleHQgPT0gbnVsbCA/IGRpc3BsYXlWYWx1ZSA6IHZhbHVlVGV4dCIsIlthdHRyLmFyaWEtb3JpZW50YXRpb25dIjondmVydGljYWwgPyAidmVydGljYWwiIDogImhvcml6b250YWwiJywiW2NsYXNzLm1hdC1zbGlkZXItZGlzYWJsZWRdIjoiZGlzYWJsZWQiLCJbY2xhc3MubWF0LXNsaWRlci1oYXMtdGlja3NdIjoidGlja0ludGVydmFsIiwiW2NsYXNzLm1hdC1zbGlkZXItaG9yaXpvbnRhbF0iOiIhdmVydGljYWwiLCJbY2xhc3MubWF0LXNsaWRlci1heGlzLWludmVydGVkXSI6Il9zaG91bGRJbnZlcnRBeGlzKCkiLCJbY2xhc3MubWF0LXNsaWRlci1pbnZlcnQtbW91c2UtY29vcmRzXSI6Il9zaG91bGRJbnZlcnRNb3VzZUNvb3JkcygpIiwiW2NsYXNzLm1hdC1zbGlkZXItc2xpZGluZ10iOiJfaXNTbGlkaW5nIiwiW2NsYXNzLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZ10iOiJ0aHVtYkxhYmVsIiwiW2NsYXNzLm1hdC1zbGlkZXItdmVydGljYWxdIjoidmVydGljYWwiLCJbY2xhc3MubWF0LXNsaWRlci1taW4tdmFsdWVdIjoiX2lzTWluVmFsdWUoKSIsIltjbGFzcy5tYXQtc2xpZGVyLWhpZGUtbGFzdC10aWNrXSI6ImRpc2FibGVkIHx8IF9pc01pblZhbHVlKCkgJiYgX2dldFRodW1iR2FwKCkgJiYgX3Nob3VsZEludmVydEF4aXMoKSIsIltjbGFzcy5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZV0iOidfYW5pbWF0aW9uTW9kZSA9PT0gIk5vb3BBbmltYXRpb25zIid9LHRlbXBsYXRlOic8ZGl2IGNsYXNzPSJtYXQtc2xpZGVyLXdyYXBwZXIiICNzbGlkZXJXcmFwcGVyPlxuICA8ZGl2IGNsYXNzPSJtYXQtc2xpZGVyLXRyYWNrLXdyYXBwZXIiPlxuICAgIDxkaXYgY2xhc3M9Im1hdC1zbGlkZXItdHJhY2stYmFja2dyb3VuZCIgW25nU3R5bGVdPSJfZ2V0VHJhY2tCYWNrZ3JvdW5kU3R5bGVzKCkiPjwvZGl2PlxuICAgIDxkaXYgY2xhc3M9Im1hdC1zbGlkZXItdHJhY2stZmlsbCIgW25nU3R5bGVdPSJfZ2V0VHJhY2tGaWxsU3R5bGVzKCkiPjwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz0ibWF0LXNsaWRlci10aWNrcy1jb250YWluZXIiIFtuZ1N0eWxlXT0iX2dldFRpY2tzQ29udGFpbmVyU3R5bGVzKCkiPlxuICAgIDxkaXYgY2xhc3M9Im1hdC1zbGlkZXItdGlja3MiIFtuZ1N0eWxlXT0iX2dldFRpY2tzU3R5bGVzKCkiPjwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz0ibWF0LXNsaWRlci10aHVtYi1jb250YWluZXIiIFtuZ1N0eWxlXT0iX2dldFRodW1iQ29udGFpbmVyU3R5bGVzKCkiPlxuICAgIDxkaXYgY2xhc3M9Im1hdC1zbGlkZXItZm9jdXMtcmluZyI+PC9kaXY+XG4gICAgPGRpdiBjbGFzcz0ibWF0LXNsaWRlci10aHVtYiI+PC9kaXY+XG4gICAgPGRpdiBjbGFzcz0ibWF0LXNsaWRlci10aHVtYi1sYWJlbCI+XG4gICAgICA8c3BhbiBjbGFzcz0ibWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0Ij57e2Rpc3BsYXlWYWx1ZX19PC9zcGFuPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuJyxpbnB1dHM6WyJkaXNhYmxlZCIsImNvbG9yIiwidGFiSW5kZXgiXSxlbmNhcHN1bGF0aW9uOlduLk5vbmUsY2hhbmdlRGV0ZWN0aW9uOmpuLk9uUHVzaCxzdHlsZXM6WycubWF0LXNsaWRlcntkaXNwbGF5OmlubGluZS1ibG9jaztwb3NpdGlvbjpyZWxhdGl2ZTtib3gtc2l6aW5nOmJvcmRlci1ib3g7cGFkZGluZzo4cHg7b3V0bGluZTpub25lO3ZlcnRpY2FsLWFsaWduOm1pZGRsZX0ubWF0LXNsaWRlcjpub3QoLm1hdC1zbGlkZXItZGlzYWJsZWQpOmFjdGl2ZSwubWF0LXNsaWRlci5tYXQtc2xpZGVyLXNsaWRpbmc6bm90KC5tYXQtc2xpZGVyLWRpc2FibGVkKXtjdXJzb3I6LXdlYmtpdC1ncmFiYmluZztjdXJzb3I6Z3JhYmJpbmd9Lm1hdC1zbGlkZXItd3JhcHBlcnstd2Via2l0LXByaW50LWNvbG9yLWFkanVzdDpleGFjdDtjb2xvci1hZGp1c3Q6ZXhhY3Q7cG9zaXRpb246YWJzb2x1dGV9Lm1hdC1zbGlkZXItdHJhY2std3JhcHBlcntwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtsZWZ0OjA7b3ZlcmZsb3c6aGlkZGVufS5tYXQtc2xpZGVyLXRyYWNrLWZpbGx7cG9zaXRpb246YWJzb2x1dGU7dHJhbnNmb3JtLW9yaWdpbjowIDA7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSksYmFja2dyb3VuZC1jb2xvciA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKX0ubWF0LXNsaWRlci10cmFjay1iYWNrZ3JvdW5ke3Bvc2l0aW9uOmFic29sdXRlO3RyYW5zZm9ybS1vcmlnaW46MTAwJSAxMDAlO3RyYW5zaXRpb246dHJhbnNmb3JtIDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpLGJhY2tncm91bmQtY29sb3IgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSl9Lm1hdC1zbGlkZXItdGlja3MtY29udGFpbmVye3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6MDt0b3A6MDtvdmVyZmxvdzpoaWRkZW59Lm1hdC1zbGlkZXItdGlja3N7LXdlYmtpdC1iYWNrZ3JvdW5kLWNsaXA6Y29udGVudC1ib3g7YmFja2dyb3VuZC1jbGlwOmNvbnRlbnQtYm94O2JhY2tncm91bmQtcmVwZWF0OnJlcGVhdDtib3gtc2l6aW5nOmJvcmRlci1ib3g7b3BhY2l0eTowO3RyYW5zaXRpb246b3BhY2l0eSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKX0ubWF0LXNsaWRlci10aHVtYi1jb250YWluZXJ7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxO3RyYW5zaXRpb246dHJhbnNmb3JtIDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpfS5tYXQtc2xpZGVyLWZvY3VzLXJpbmd7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MzBweDtoZWlnaHQ6MzBweDtib3JkZXItcmFkaXVzOjUwJTt0cmFuc2Zvcm06c2NhbGUoMCk7b3BhY2l0eTowO3RyYW5zaXRpb246dHJhbnNmb3JtIDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpLGJhY2tncm91bmQtY29sb3IgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSksb3BhY2l0eSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKX0ubWF0LXNsaWRlci5jZGsta2V5Ym9hcmQtZm9jdXNlZCAubWF0LXNsaWRlci1mb2N1cy1yaW5nLC5tYXQtc2xpZGVyLmNkay1wcm9ncmFtLWZvY3VzZWQgLm1hdC1zbGlkZXItZm9jdXMtcmluZ3t0cmFuc2Zvcm06c2NhbGUoMSk7b3BhY2l0eToxfS5tYXQtc2xpZGVyOm5vdCgubWF0LXNsaWRlci1kaXNhYmxlZCk6bm90KC5tYXQtc2xpZGVyLXNsaWRpbmcpIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLC5tYXQtc2xpZGVyOm5vdCgubWF0LXNsaWRlci1kaXNhYmxlZCk6bm90KC5tYXQtc2xpZGVyLXNsaWRpbmcpIC5tYXQtc2xpZGVyLXRodW1ie2N1cnNvcjotd2Via2l0LWdyYWI7Y3Vyc29yOmdyYWJ9Lm1hdC1zbGlkZXItdGh1bWJ7cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6LTEwcHg7Ym90dG9tOi0xMHB4O2JveC1zaXppbmc6Ym9yZGVyLWJveDt3aWR0aDoyMHB4O2hlaWdodDoyMHB4O2JvcmRlcjozcHggc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLXJhZGl1czo1MCU7dHJhbnNmb3JtOnNjYWxlKDAuNyk7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSksYmFja2dyb3VuZC1jb2xvciA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKSxib3JkZXItY29sb3IgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSl9Lm1hdC1zbGlkZXItdGh1bWItbGFiZWx7ZGlzcGxheTpub25lO2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjI4cHg7aGVpZ2h0OjI4cHg7Ym9yZGVyLXJhZGl1czo1MCU7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSksYm9yZGVyLXJhZGl1cyA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKSxiYWNrZ3JvdW5kLWNvbG9yIDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1zbGlkZXItdGh1bWItbGFiZWx7b3V0bGluZTpzb2xpZCAxcHh9Lm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dHt6LWluZGV4OjE7b3BhY2l0eTowO3RyYW5zaXRpb246b3BhY2l0eSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKX0ubWF0LXNsaWRlci1zbGlkaW5nIC5tYXQtc2xpZGVyLXRyYWNrLWZpbGwsLm1hdC1zbGlkZXItc2xpZGluZyAubWF0LXNsaWRlci10cmFjay1iYWNrZ3JvdW5kLC5tYXQtc2xpZGVyLXNsaWRpbmcgLm1hdC1zbGlkZXItdGh1bWItY29udGFpbmVye3RyYW5zaXRpb24tZHVyYXRpb246MG1zfS5tYXQtc2xpZGVyLWhhcy10aWNrcyAubWF0LXNsaWRlci13cmFwcGVyOjphZnRlcntjb250ZW50OiIiO3Bvc2l0aW9uOmFic29sdXRlO2JvcmRlci13aWR0aDowO2JvcmRlci1zdHlsZTpzb2xpZDtvcGFjaXR5OjA7dHJhbnNpdGlvbjpvcGFjaXR5IDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpfS5tYXQtc2xpZGVyLWhhcy10aWNrcy5jZGstZm9jdXNlZDpub3QoLm1hdC1zbGlkZXItaGlkZS1sYXN0LXRpY2spIC5tYXQtc2xpZGVyLXdyYXBwZXI6OmFmdGVyLC5tYXQtc2xpZGVyLWhhcy10aWNrczpob3Zlcjpub3QoLm1hdC1zbGlkZXItaGlkZS1sYXN0LXRpY2spIC5tYXQtc2xpZGVyLXdyYXBwZXI6OmFmdGVye29wYWNpdHk6MX0ubWF0LXNsaWRlci1oYXMtdGlja3MuY2RrLWZvY3VzZWQ6bm90KC5tYXQtc2xpZGVyLWRpc2FibGVkKSAubWF0LXNsaWRlci10aWNrcywubWF0LXNsaWRlci1oYXMtdGlja3M6aG92ZXI6bm90KC5tYXQtc2xpZGVyLWRpc2FibGVkKSAubWF0LXNsaWRlci10aWNrc3tvcGFjaXR5OjF9Lm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZyAubWF0LXNsaWRlci1mb2N1cy1yaW5ne2Rpc3BsYXk6bm9uZX0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVse2Rpc3BsYXk6ZmxleH0ubWF0LXNsaWRlci1heGlzLWludmVydGVkIC5tYXQtc2xpZGVyLXRyYWNrLWZpbGx7dHJhbnNmb3JtLW9yaWdpbjoxMDAlIDEwMCV9Lm1hdC1zbGlkZXItYXhpcy1pbnZlcnRlZCAubWF0LXNsaWRlci10cmFjay1iYWNrZ3JvdW5ke3RyYW5zZm9ybS1vcmlnaW46MCAwfS5tYXQtc2xpZGVyOm5vdCgubWF0LXNsaWRlci1kaXNhYmxlZCkuY2RrLWZvY3VzZWQubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nIC5tYXQtc2xpZGVyLXRodW1ie3RyYW5zZm9ybTpzY2FsZSgwKX0ubWF0LXNsaWRlcjpub3QoLm1hdC1zbGlkZXItZGlzYWJsZWQpLmNkay1mb2N1c2VkIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVse2JvcmRlci1yYWRpdXM6NTAlIDUwJSAwfS5tYXQtc2xpZGVyOm5vdCgubWF0LXNsaWRlci1kaXNhYmxlZCkuY2RrLWZvY3VzZWQgLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dHtvcGFjaXR5OjF9Lm1hdC1zbGlkZXI6bm90KC5tYXQtc2xpZGVyLWRpc2FibGVkKS5jZGstbW91c2UtZm9jdXNlZCAubWF0LXNsaWRlci10aHVtYiwubWF0LXNsaWRlcjpub3QoLm1hdC1zbGlkZXItZGlzYWJsZWQpLmNkay10b3VjaC1mb2N1c2VkIC5tYXQtc2xpZGVyLXRodW1iLC5tYXQtc2xpZGVyOm5vdCgubWF0LXNsaWRlci1kaXNhYmxlZCkuY2RrLXByb2dyYW0tZm9jdXNlZCAubWF0LXNsaWRlci10aHVtYntib3JkZXItd2lkdGg6MnB4O3RyYW5zZm9ybTpzY2FsZSgxKX0ubWF0LXNsaWRlci1kaXNhYmxlZCAubWF0LXNsaWRlci1mb2N1cy1yaW5ne3RyYW5zZm9ybTpzY2FsZSgwKTtvcGFjaXR5OjB9Lm1hdC1zbGlkZXItZGlzYWJsZWQgLm1hdC1zbGlkZXItdGh1bWJ7Ym9yZGVyLXdpZHRoOjRweDt0cmFuc2Zvcm06c2NhbGUoMC41KX0ubWF0LXNsaWRlci1kaXNhYmxlZCAubWF0LXNsaWRlci10aHVtYi1sYWJlbHtkaXNwbGF5Om5vbmV9Lm1hdC1zbGlkZXItaG9yaXpvbnRhbHtoZWlnaHQ6NDhweDttaW4td2lkdGg6MTI4cHh9Lm1hdC1zbGlkZXItaG9yaXpvbnRhbCAubWF0LXNsaWRlci13cmFwcGVye2hlaWdodDoycHg7dG9wOjIzcHg7bGVmdDo4cHg7cmlnaHQ6OHB4fS5tYXQtc2xpZGVyLWhvcml6b250YWwgLm1hdC1zbGlkZXItd3JhcHBlcjo6YWZ0ZXJ7aGVpZ2h0OjJweDtib3JkZXItbGVmdC13aWR0aDoycHg7cmlnaHQ6MDt0b3A6MH0ubWF0LXNsaWRlci1ob3Jpem9udGFsIC5tYXQtc2xpZGVyLXRyYWNrLXdyYXBwZXJ7aGVpZ2h0OjJweDt3aWR0aDoxMDAlfS5tYXQtc2xpZGVyLWhvcml6b250YWwgLm1hdC1zbGlkZXItdHJhY2stZmlsbHtoZWlnaHQ6MnB4O3dpZHRoOjEwMCU7dHJhbnNmb3JtOnNjYWxlWCgwKX0ubWF0LXNsaWRlci1ob3Jpem9udGFsIC5tYXQtc2xpZGVyLXRyYWNrLWJhY2tncm91bmR7aGVpZ2h0OjJweDt3aWR0aDoxMDAlO3RyYW5zZm9ybTpzY2FsZVgoMSl9Lm1hdC1zbGlkZXItaG9yaXpvbnRhbCAubWF0LXNsaWRlci10aWNrcy1jb250YWluZXJ7aGVpZ2h0OjJweDt3aWR0aDoxMDAlfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1zbGlkZXItaG9yaXpvbnRhbCAubWF0LXNsaWRlci10aWNrcy1jb250YWluZXJ7aGVpZ2h0OjA7b3V0bGluZTpzb2xpZCAycHg7dG9wOjFweH0ubWF0LXNsaWRlci1ob3Jpem9udGFsIC5tYXQtc2xpZGVyLXRpY2tze2hlaWdodDoycHg7d2lkdGg6MTAwJX0ubWF0LXNsaWRlci1ob3Jpem9udGFsIC5tYXQtc2xpZGVyLXRodW1iLWNvbnRhaW5lcnt3aWR0aDoxMDAlO2hlaWdodDowO3RvcDo1MCV9Lm1hdC1zbGlkZXItaG9yaXpvbnRhbCAubWF0LXNsaWRlci1mb2N1cy1yaW5ne3RvcDotMTVweDtyaWdodDotMTVweH0ubWF0LXNsaWRlci1ob3Jpem9udGFsIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVse3JpZ2h0Oi0xNHB4O3RvcDotNDBweDt0cmFuc2Zvcm06dHJhbnNsYXRlWSgyNnB4KSBzY2FsZSgwLjAxKSByb3RhdGUoNDVkZWcpfS5tYXQtc2xpZGVyLWhvcml6b250YWwgLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dHt0cmFuc2Zvcm06cm90YXRlKC00NWRlZyl9Lm1hdC1zbGlkZXItaG9yaXpvbnRhbC5jZGstZm9jdXNlZCAubWF0LXNsaWRlci10aHVtYi1sYWJlbHt0cmFuc2Zvcm06cm90YXRlKDQ1ZGVnKX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtc2xpZGVyLWhvcml6b250YWwuY2RrLWZvY3VzZWQgLm1hdC1zbGlkZXItdGh1bWItbGFiZWwsLmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LXNsaWRlci1ob3Jpem9udGFsLmNkay1mb2N1c2VkIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHR7dHJhbnNmb3JtOm5vbmV9Lm1hdC1zbGlkZXItdmVydGljYWx7d2lkdGg6NDhweDttaW4taGVpZ2h0OjEyOHB4fS5tYXQtc2xpZGVyLXZlcnRpY2FsIC5tYXQtc2xpZGVyLXdyYXBwZXJ7d2lkdGg6MnB4O3RvcDo4cHg7Ym90dG9tOjhweDtsZWZ0OjIzcHh9Lm1hdC1zbGlkZXItdmVydGljYWwgLm1hdC1zbGlkZXItd3JhcHBlcjo6YWZ0ZXJ7d2lkdGg6MnB4O2JvcmRlci10b3Atd2lkdGg6MnB4O2JvdHRvbTowO2xlZnQ6MH0ubWF0LXNsaWRlci12ZXJ0aWNhbCAubWF0LXNsaWRlci10cmFjay13cmFwcGVye2hlaWdodDoxMDAlO3dpZHRoOjJweH0ubWF0LXNsaWRlci12ZXJ0aWNhbCAubWF0LXNsaWRlci10cmFjay1maWxse2hlaWdodDoxMDAlO3dpZHRoOjJweDt0cmFuc2Zvcm06c2NhbGVZKDApfS5tYXQtc2xpZGVyLXZlcnRpY2FsIC5tYXQtc2xpZGVyLXRyYWNrLWJhY2tncm91bmR7aGVpZ2h0OjEwMCU7d2lkdGg6MnB4O3RyYW5zZm9ybTpzY2FsZVkoMSl9Lm1hdC1zbGlkZXItdmVydGljYWwgLm1hdC1zbGlkZXItdGlja3MtY29udGFpbmVye3dpZHRoOjJweDtoZWlnaHQ6MTAwJX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtc2xpZGVyLXZlcnRpY2FsIC5tYXQtc2xpZGVyLXRpY2tzLWNvbnRhaW5lcnt3aWR0aDowO291dGxpbmU6c29saWQgMnB4O2xlZnQ6MXB4fS5tYXQtc2xpZGVyLXZlcnRpY2FsIC5tYXQtc2xpZGVyLWZvY3VzLXJpbmd7Ym90dG9tOi0xNXB4O2xlZnQ6LTE1cHh9Lm1hdC1zbGlkZXItdmVydGljYWwgLm1hdC1zbGlkZXItdGlja3N7d2lkdGg6MnB4O2hlaWdodDoxMDAlfS5tYXQtc2xpZGVyLXZlcnRpY2FsIC5tYXQtc2xpZGVyLXRodW1iLWNvbnRhaW5lcntoZWlnaHQ6MTAwJTt3aWR0aDowO2xlZnQ6NTAlfS5tYXQtc2xpZGVyLXZlcnRpY2FsIC5tYXQtc2xpZGVyLXRodW1iey13ZWJraXQtYmFja2ZhY2UtdmlzaWJpbGl0eTpoaWRkZW47YmFja2ZhY2UtdmlzaWJpbGl0eTpoaWRkZW59Lm1hdC1zbGlkZXItdmVydGljYWwgLm1hdC1zbGlkZXItdGh1bWItbGFiZWx7Ym90dG9tOi0xNHB4O2xlZnQ6LTQwcHg7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoMjZweCkgc2NhbGUoMC4wMSkgcm90YXRlKC00NWRlZyl9Lm1hdC1zbGlkZXItdmVydGljYWwgLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dHt0cmFuc2Zvcm06cm90YXRlKDQ1ZGVnKX0ubWF0LXNsaWRlci12ZXJ0aWNhbC5jZGstZm9jdXNlZCAubWF0LXNsaWRlci10aHVtYi1sYWJlbHt0cmFuc2Zvcm06cm90YXRlKC00NWRlZyl9W2Rpcj1ydGxdIC5tYXQtc2xpZGVyLXdyYXBwZXI6OmFmdGVye2xlZnQ6MDtyaWdodDphdXRvfVtkaXI9cnRsXSAubWF0LXNsaWRlci1ob3Jpem9udGFsIC5tYXQtc2xpZGVyLXRyYWNrLWZpbGx7dHJhbnNmb3JtLW9yaWdpbjoxMDAlIDEwMCV9W2Rpcj1ydGxdIC5tYXQtc2xpZGVyLWhvcml6b250YWwgLm1hdC1zbGlkZXItdHJhY2stYmFja2dyb3VuZHt0cmFuc2Zvcm0tb3JpZ2luOjAgMH1bZGlyPXJ0bF0gLm1hdC1zbGlkZXItaG9yaXpvbnRhbC5tYXQtc2xpZGVyLWF4aXMtaW52ZXJ0ZWQgLm1hdC1zbGlkZXItdHJhY2stZmlsbHt0cmFuc2Zvcm0tb3JpZ2luOjAgMH1bZGlyPXJ0bF0gLm1hdC1zbGlkZXItaG9yaXpvbnRhbC5tYXQtc2xpZGVyLWF4aXMtaW52ZXJ0ZWQgLm1hdC1zbGlkZXItdHJhY2stYmFja2dyb3VuZHt0cmFuc2Zvcm0tb3JpZ2luOjEwMCUgMTAwJX0ubWF0LXNsaWRlci5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZSAubWF0LXNsaWRlci10cmFjay1maWxsLC5tYXQtc2xpZGVyLl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlIC5tYXQtc2xpZGVyLXRyYWNrLWJhY2tncm91bmQsLm1hdC1zbGlkZXIuX21hdC1hbmltYXRpb24tbm9vcGFibGUgLm1hdC1zbGlkZXItdGlja3MsLm1hdC1zbGlkZXIuX21hdC1hbmltYXRpb24tbm9vcGFibGUgLm1hdC1zbGlkZXItdGh1bWItY29udGFpbmVyLC5tYXQtc2xpZGVyLl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlIC5tYXQtc2xpZGVyLWZvY3VzLXJpbmcsLm1hdC1zbGlkZXIuX21hdC1hbmltYXRpb24tbm9vcGFibGUgLm1hdC1zbGlkZXItdGh1bWIsLm1hdC1zbGlkZXIuX21hdC1hbmltYXRpb24tbm9vcGFibGUgLm1hdC1zbGlkZXItdGh1bWItbGFiZWwsLm1hdC1zbGlkZXIuX21hdC1hbmltYXRpb24tbm9vcGFibGUgLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dCwubWF0LXNsaWRlci5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZSAubWF0LXNsaWRlci1oYXMtdGlja3MgLm1hdC1zbGlkZXItd3JhcHBlcjo6YWZ0ZXJ7dHJhbnNpdGlvbjpub25lfVxuJ119XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpLaH0se3R5cGU6ZkZ9LHt0eXBlOk9ifSx7dHlwZTp2RixkZWNvcmF0b3JzOlt7dHlwZTpCcn1dfSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6JGEsYXJnczpbInRhYmluZGV4Il19XX0se3R5cGU6bUN9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltzTV19XX0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltja119XX1dfSkse2NoYW5nZTpbe3R5cGU6RV99XSxpbnB1dDpbe3R5cGU6RV99XSx2YWx1ZUNoYW5nZTpbe3R5cGU6RV99XSxpbnZlcnQ6W3t0eXBlOlJffV0sbWF4Olt7dHlwZTpSX31dLG1pbjpbe3R5cGU6Ul99XSxzdGVwOlt7dHlwZTpSX31dLHRodW1iTGFiZWw6W3t0eXBlOlJffV0sdGlja0ludGVydmFsOlt7dHlwZTpSX31dLHZhbHVlOlt7dHlwZTpSX31dLHZlcnRpY2FsOlt7dHlwZTpSX31dLGRpc3BsYXlXaXRoOlt7dHlwZTpSX31dLHZhbHVlVGV4dDpbe3R5cGU6Ul99XSxfc2xpZGVyV3JhcHBlcjpbe3R5cGU6YXIsYXJnczpbInNsaWRlcldyYXBwZXIiXX1dfSk7Y2xhc3MgUkp7fVJKLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxSSil9LFJKLsm1bW9kPWZvKHt0eXBlOlJKfSksUkouybVpbmo9RG4oe2ltcG9ydHM6W1tyeCxORl0sTkZdfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihSSixbe3R5cGU6TF8sYXJnczpbe2ltcG9ydHM6W3J4LE5GXSxleHBvcnRzOlt3SixORl0sZGVjbGFyYXRpb25zOlt3Sl19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZ1byhSSix7ZGVjbGFyYXRpb25zOmZ1bmN0aW9uKCl7cmV0dXJuW3dKXX0saW1wb3J0czpmdW5jdGlvbigpe3JldHVybltyeCxORl19LGV4cG9ydHM6ZnVuY3Rpb24oKXtyZXR1cm5bd0osTkZdfX0pO2NvbnN0IEVKPXsxOToiZmxvYXQxNiIsMToiZmxvYXQzMiIsMjoiZmxvYXQ2NCIsMzoiaW50MzIiLDQ6InVpbnQ4IiwxNzoidWludDE2IiwyMjoidWludDMyIiwyMzoidWludDY0Iiw1OiJpbnQxNiIsNjoiaW50OCIsNzoic3RyaW5nIiw4OiJjb21wbGV4NjQiLDE4OiJjb21wbGV4MTI4Iiw5OiJpbnQ2NCIsMTA6ImJvb2wiLDExOiJxaW50OCIsMTI6InF1aW50OCIsMTU6InFpbnQxNiIsMTY6InF1aW50MTYiLDEzOiJxaW50MzIiLDE0OiJiZmxvYXQxNiIsMjA6InJlc291cmNlIiwyMToidmFyaWFudCIsMTE5OiJmbG9hdDE2X3JlZiIsMTAxOiJmbG9hdDMyX3JlZiIsMTAyOiJmbG9hdDY0X3JlZiIsMTAzOiJpbnQzMl9yZWYiLDEyMjoidWludDMyX3JlZiIsMTA0OiJ1aW50OF9yZWYiLDExNzoidWludDE2X3JlZiIsMTA1OiJpbnQxNl9yZWYiLDEwNjoiaW50OF9yZWYiLDEwNzoic3RyaW5nX3JlZiIsMTA4OiJjb21wbGV4NjRfcmVmIiwxMTg6ImNvbXBsZXgxMjhfcmVmIiwxMDk6ImludDY0X3JlZiIsMTIzOiJ1aW50NjRfcmVmIiwxMTA6ImJvb2xfcmVmIiwxMTE6InFpbnQ4X3JlZiIsMTEyOiJxdWludDhfcmVmIiwxMTU6InFpbnQxNl9yZWYiLDExNjoicXVpbnQxNl9yZWYiLDExMzoicWludDMyX3JlZiIsMTE0OiJiZmxvYXQxNl9yZWYiLDEyMDoicmVzb3VyY2VfcmVmIiwxMjE6InZhcmlhbnRfcmVmIn07ZnVuY3Rpb24gQUoodCl7Y29uc3R7dGVuc29yRGVidWdNb2RlOmUsYXJyYXk6bn09dDtzd2l0Y2goZSl7Y2FzZSBzSy5OT19URU5TT1I6aWYobnVsbCE9PW4pdGhyb3cgbmV3IEVycm9yKCJVbmV4cGVjdGVkbHkgcmVjZWl2ZWQgbm9uLW51bGwgZGVidWctdGVuc29yLXZhbHVlIGFycmF5IHVuZGVyIE5PX1RFTlNPUiBtb2RlIik7cmV0dXJue307Y2FzZSBzSy5DVVJUX0hFQUxUSDppZihudWxsPT09bnx8MiE9PW4ubGVuZ3RoKXRocm93IG5ldyBFcnJvcihgVW5kZXIgQ1VSVF9IRUFMVEggbW9kZSwgZXhwZWN0ZWQgZGVidWctdGVuc29yLXZhbHVlIGFycmF5IHRvIGhhdmUgbGVuZ3RoIDIsIGJ1dCBnb3QgJHtKU09OLnN0cmluZ2lmeShuKX1gKTtyZXR1cm57aGFzSW5mT3JOYU46Qm9vbGVhbihuWzFdKX07Y2FzZSBzSy5DT05DSVNFX0hFQUxUSDp7aWYobnVsbD09PW58fDUhPT1uLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoYFVuZGVyIENPTkNJU0VfSEVBTFRIIG1vZGUsIGV4cGVjdGVkIGRlYnVnLXRlbnNvci12YWx1ZSBhcnJheSB0byBoYXZlIGxlbmd0aCA1LCBidXQgZ290ICR7SlNPTi5zdHJpbmdpZnkobil9YCk7Y29uc3QgdD17c2l6ZTpuWzFdfTtyZXR1cm4gblsyXT4wJiYodC5udW1OZWdhdGl2ZUluZnM9blsyXSksblszXT4wJiYodC5udW1Qb3NpdGl2ZUluZnM9blszXSksbls0XT4wJiYodC5udW1OYU5zPW5bNF0pLHR9Y2FzZSBzSy5TSEFQRTp7aWYobnVsbD09PW58fDEwIT09bi5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKGBVbmRlciBTSEFQRSBtb2RlLCBleHBlY3RlZCBkZWJ1Zy10ZW5zb3ItdmFsdWUgYXJyYXkgdG8gaGF2ZSBsZW5ndGggMTAsIGJ1dCBnb3QgJHtKU09OLnN0cmluZ2lmeShuKX1gKTtjb25zdCB0PW5bMl07bGV0IGU9bi5zbGljZSg0LE1hdGgubWluKDQrdCxuLmxlbmd0aCkpO3JldHVybiBlLmxlbmd0aDx0JiYoZT1uZXcgQXJyYXkodC1lLmxlbmd0aCkuY29uY2F0KGUpKSx7ZHR5cGU6RUpbblsxXV0scmFuazp0LHNpemU6blszXSxzaGFwZTplfX1jYXNlIHNLLkZVTExfSEVBTFRIOntpZihudWxsPT09bnx8MTEhPT1uLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoYFVuZGVyIEZVTExfSEVBTFRIIG1vZGUsIGV4cGVjdGVkIGRlYnVnLXRlbnNvci12YWx1ZSBhcnJheSB0byBoYXZlIGxlbmd0aCAxMSwgYnV0IGdvdCAke0pTT04uc3RyaW5naWZ5KG4pfWApO2NvbnN0IHQ9e2R0eXBlOkVKW25bMl1dLHJhbms6blszXSxzaXplOm5bNF19O3JldHVybiBuWzVdPjAmJih0Lm51bU5lZ2F0aXZlSW5mcz1uWzVdKSxuWzZdPjAmJih0Lm51bVBvc2l0aXZlSW5mcz1uWzZdKSxuWzddPjAmJih0Lm51bU5hTnM9bls3XSksbls4XT4wJiYodC5udW1OZWdhdGl2ZUZpbml0ZXM9bls4XSksbls5XT4wJiYodC5udW1aZXJvcz1uWzldKSxuWzEwXT4wJiYodC5udW1Qb3NpdGl2ZUZpbml0ZXM9blsxMF0pLHR9Y2FzZSBzSy5GVUxMX1RFTlNPUjppZihudWxsIT09bil0aHJvdyBuZXcgRXJyb3IoIlVuZXhwZWN0ZWRseSByZWNlaXZlZCBub24tbnVsbCBkZWJ1Zy10ZW5zb3ItdmFsdWUgYXJyYXkgdW5kZXIgRlVMTF9URU5TT1IgbW9kZSIpO3JldHVybnt9O2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKGBVbnJlY29nbml6ZWQgdGVuc29yRGVidWdNb2RlOiAke2V9YCl9fWNvbnN0IFRKPSJbX25naG9zdC0lQ09NUCVdIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTNlNWU4O1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICNjMGMwYzA7XG4gICAgYm9yZGVyLXJhZGl1czogNHB4O1xuICAgIGZvbnQtZmFtaWx5OiAnUm9ib3RvIE1vbm8nLCBtb25vc3BhY2U7XG4gICAgaGVpZ2h0OiAxNHB4O1xuICAgIGxpbmUtaGVpZ2h0OiAxNHB4O1xuICAgIG1hcmdpbjogMCAycHg7XG4gICAgcGFkZGluZzogMXB4IDNweDtcbiAgICB3aWR0aDogbWF4LWNvbnRlbnQ7XG4gIH0iO2Z1bmN0aW9uIE5KKHQsZSl7MSZ0JiZ2ZigwLCJkaXYiLDQpfWZ1bmN0aW9uIHpKKHQsZSl7aWYoMSZ0JiYoQ2YoMCwiZGl2Iiw3KSxDZigxLCJzcGFuIiw4KSxQdSgyLCJOYU4iKSxNZigpLENmKDMsInNwYW4iLDkpLFB1KDQpLE1mKCksTWYoKSksMiZ0KXtjb25zdCB0PXpmKDIpO0RjKDQpLGt1KCLDlyIsdC5udW1OYU5zLCIiKX19ZnVuY3Rpb24gSUoodCxlKXtpZigxJnQmJihDZigwLCJkaXYiLDcpLENmKDEsInNwYW4iLDgpLFB1KDIsIi3iiJ4iKSxNZigpLENmKDMsInNwYW4iLDkpLFB1KDQpLE1mKCksTWYoKSksMiZ0KXtjb25zdCB0PXpmKDIpO0RjKDQpLGt1KCLDlyIsdC5udW1OZWdhdGl2ZUluZnMsIiIpfX1mdW5jdGlvbiBISih0LGUpe2lmKDEmdCYmKENmKDAsImRpdiIsNyksQ2YoMSwic3BhbiIsOCksUHUoMiwiK+KIniIpLE1mKCksQ2YoMywic3BhbiIsOSksUHUoNCksTWYoKSxNZigpKSwyJnQpe2NvbnN0IHQ9emYoMik7RGMoNCksa3UoIsOXIix0Lm51bVBvc2l0aXZlSW5mcywiIil9fWZ1bmN0aW9uIEZKKHQsZSl7aWYoMSZ0JiYoQ2YoMCwiZGl2Iiw3KSxDZigxLCJzcGFuIiwxMCksUHUoMiwiLSIpLE1mKCksQ2YoMywic3BhbiIsOSksUHUoNCksTWYoKSxNZigpKSwyJnQpe2NvbnN0IHQ9emYoMik7RGMoNCksa3UoIsOXIix0Lm51bU5lZ2F0aXZlRmluaXRlcywiIil9fWZ1bmN0aW9uIExKKHQsZSl7aWYoMSZ0JiYoQ2YoMCwiZGl2Iiw3KSxDZigxLCJzcGFuIiwxMCksUHUoMiwiMCIpLE1mKCksQ2YoMywic3BhbiIsOSksUHUoNCksTWYoKSxNZigpKSwyJnQpe2NvbnN0IHQ9emYoMik7RGMoNCksa3UoIsOXIix0Lm51bVplcm9zLCIiKX19ZnVuY3Rpb24gQkoodCxlKXtpZigxJnQmJihDZigwLCJkaXYiLDcpLENmKDEsInNwYW4iLDEwKSxQdSgyLCIrIiksTWYoKSxDZigzLCJzcGFuIiw5KSxQdSg0KSxNZigpLE1mKCkpLDImdCl7Y29uc3QgdD16ZigyKTtEYyg0KSxrdSgiw5ciLHQubnVtUG9zaXRpdmVGaW5pdGVzLCIiKX19ZnVuY3Rpb24gVkoodCxlKXtpZigxJnQmJihDZigwLCJkaXYiLDUpLEhtKDEsekosNSwxLCJkaXYiLDYpLEhtKDIsSUosNSwxLCJkaXYiLDYpLEhtKDMsSEosNSwxLCJkaXYiLDYpLEhtKDQsRkosNSwxLCJkaXYiLDYpLEhtKDUsTEosNSwxLCJkaXYiLDYpLEhtKDYsQkosNSwxLCJkaXYiLDYpLE1mKCkpLDImdCl7Y29uc3QgdD16ZigpO0RjKDEpLGJmKCJuZ0lmIix2b2lkIDAhPT10Lm51bU5hTnMmJnQubnVtTmFOcz4wKSxEYygxKSxiZigibmdJZiIsdm9pZCAwIT09dC5udW1OZWdhdGl2ZUluZnMmJnQubnVtTmVnYXRpdmVJbmZzPjApLERjKDEpLGJmKCJuZ0lmIix2b2lkIDAhPT10Lm51bVBvc2l0aXZlSW5mcyYmdC5udW1Qb3NpdGl2ZUluZnM+MCksRGMoMSksYmYoIm5nSWYiLHZvaWQgMCE9PXQubnVtTmVnYXRpdmVGaW5pdGVzJiZ0Lm51bU5lZ2F0aXZlRmluaXRlcz4wKSxEYygxKSxiZigibmdJZiIsdm9pZCAwIT09dC5udW1aZXJvcyYmdC5udW1aZXJvcz4wKSxEYygxKSxiZigibmdJZiIsdm9pZCAwIT09dC5udW1Qb3NpdGl2ZUZpbml0ZXMmJnQubnVtUG9zaXRpdmVGaW5pdGVzPjApfX1jb25zdCBqSj1mdW5jdGlvbih0KXtyZXR1cm5bImNvbnRhaW5lciIsdF19O2Z1bmN0aW9uIFVKKHQsZSl7aWYoMSZ0JiZ2ZigwLCJkZWJ1Zy10ZW5zb3ItZHR5cGUiLDUpLDImdCl7YmYoImR0eXBlIix6ZigpLmRlYnVnVGVuc29yVmFsdWUuZHR5cGUpfX1mdW5jdGlvbiBXSih0LGUpe2lmKDEmdCYmdmYoMCwiZGVidWctdGVuc29yLXJhbmsiLDYpLDImdCl7YmYoInJhbmsiLHpmKCkuZGVidWdUZW5zb3JWYWx1ZS5yYW5rKX19ZnVuY3Rpb24gR0oodCxlKXtpZigxJnQmJnZmKDAsImRlYnVnLXRlbnNvci1zaGFwZSIsNyksMiZ0KXtiZigic2hhcGUiLHpmKCkuZGVidWdUZW5zb3JWYWx1ZS5zaGFwZSl9fWZ1bmN0aW9uIFlKKHQsZSl7aWYoMSZ0JiZ2ZigwLCJkZWJ1Zy10ZW5zb3ItaGFzLWluZi1vci1uYW4iLDgpLDImdCl7YmYoImhhc0luZk9yTmFOIix6ZigpLmRlYnVnVGVuc29yVmFsdWUuaGFzSW5mT3JOYU4pfX1mdW5jdGlvbiBxSih0LGUpe2lmKDEmdCYmdmYoMCwiZGVidWctdGVuc29yLW51bWVyaWMtYnJlYWtkb3duIiw5KSwyJnQpe2NvbnN0IHQ9emYoKTtMZigic2l6ZSIsdC5kZWJ1Z1RlbnNvclZhbHVlLnNpemUpLGJmKCJudW1OZWdhdGl2ZUluZnMiLHQuZGVidWdUZW5zb3JWYWx1ZS5udW1OZWdhdGl2ZUluZnMpKCJudW1Qb3NpdGl2ZUluZnMiLHQuZGVidWdUZW5zb3JWYWx1ZS5udW1Qb3NpdGl2ZUluZnMpKCJudW1OYU5zIix0LmRlYnVnVGVuc29yVmFsdWUubnVtTmFOcykoIm51bU5lZ2F0aXZlRmluaXRlcyIsdC5kZWJ1Z1RlbnNvclZhbHVlLm51bU5lZ2F0aXZlRmluaXRlcykoIm51bVplcm9zIix0LmRlYnVnVGVuc29yVmFsdWUubnVtWmVyb3MpKCJudW1Qb3NpdGl2ZUZpbml0ZXMiLHQuZGVidWdUZW5zb3JWYWx1ZS5udW1Qb3NpdGl2ZUZpbml0ZXMpfX1jb25zdCBaSj0iXG4gIDpob3N0IHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTNlNWU4O1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICNjMGMwYzA7XG4gICAgYm9yZGVyLXJhZGl1czogNHB4O1xuICAgIGZvbnQtZmFtaWx5OiAnUm9ib3RvIE1vbm8nLCBtb25vc3BhY2U7XG4gICAgaGVpZ2h0OiAxNHB4O1xuICAgIGxpbmUtaGVpZ2h0OiAxNHB4O1xuICAgIG1hcmdpbjogMCAycHg7XG4gICAgcGFkZGluZzogMXB4IDNweDtcbiAgICB3aWR0aDogbWF4LWNvbnRlbnQ7XG4gIH1cbiI7Y2xhc3MgWEp7fVhKLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxYSil9LFhKLsm1Y21wPXNvKHt0eXBlOlhKLHNlbGVjdG9yczpbWyJkZWJ1Zy10ZW5zb3ItZHR5cGUiXV0saW5wdXRzOntkdHlwZToiZHR5cGUifSxkZWNsczoxLHZhcnM6MSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiZQdSgwKSwyJmUmJmt1KCIgIixuLmR0eXBlLCIgIil9LHN0eWxlczpbVEpdfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihYSixbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJkZWJ1Zy10ZW5zb3ItZHR5cGUiLHRlbXBsYXRlOiIge3sgZHR5cGUgfX0gIixzdHlsZXM6W1pKXX1dfV0sbnVsbCx7ZHR5cGU6W3t0eXBlOlJffV19KTtjbGFzcyBLSnt9S0ouybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEtKKX0sS0ouybVjbXA9c28oe3R5cGU6S0osc2VsZWN0b3JzOltbImRlYnVnLXRlbnNvci1yYW5rIl1dLGlucHV0czp7cmFuazoicmFuayJ9LGRlY2xzOjEsdmFyczoxLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJlB1KDApLDImZSYma3UoIiAiLG4ucmFuaywiRCAiKX0sc3R5bGVzOltUSl19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKEtKLFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6ImRlYnVnLXRlbnNvci1yYW5rIix0ZW1wbGF0ZToiIHt7IHJhbmsgfX1EICIsc3R5bGVzOltaSl19XX1dLG51bGwse3Jhbms6W3t0eXBlOlJffV19KTtjbGFzcyBKSntnZXQgc2hhcGVTdHJpbmcoKXtyZXR1cm4iWyIrdGhpcy5zaGFwZS5tYXAoKHQ9PnZvaWQgMD09PXQ/Ij8iOlN0cmluZyh0KSkpLmpvaW4oIiwiKSsiXSJ9fUpKLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxKSil9LEpKLsm1Y21wPXNvKHt0eXBlOkpKLHNlbGVjdG9yczpbWyJkZWJ1Zy10ZW5zb3Itc2hhcGUiXV0saW5wdXRzOntzaGFwZToic2hhcGUifSxkZWNsczoxLHZhcnM6MSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiZQdSgwKSwyJmUmJmt1KCIgc2hhcGU6IixuLnNoYXBlU3RyaW5nLCIgIil9LHN0eWxlczpbVEpdfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihKSixbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJkZWJ1Zy10ZW5zb3Itc2hhcGUiLHRlbXBsYXRlOiIgc2hhcGU6e3sgc2hhcGVTdHJpbmcgfX0gIixzdHlsZXM6W1pKXX1dfV0sbnVsbCx7c2hhcGU6W3t0eXBlOlJffV19KTtjbGFzcyBRSntnZXQgYnJlYWtkb3duRXhpc3RzKCl7cmV0dXJuIHZvaWQgMCE9PXRoaXMubnVtTmFOc3x8dm9pZCAwIT09dGhpcy5udW1OZWdhdGl2ZUluZnN8fHZvaWQgMCE9PXRoaXMubnVtUG9zaXRpdmVJbmZzfHx2b2lkIDAhPT10aGlzLm51bU5lZ2F0aXZlRmluaXRlc3x8dm9pZCAwIT09dGhpcy5udW1aZXJvc3x8dm9pZCAwIT09dGhpcy5udW1Qb3NpdGl2ZUZpbml0ZXN9fVFKLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxRSil9LFFKLsm1Y21wPXNvKHt0eXBlOlFKLHNlbGVjdG9yczpbWyJkZWJ1Zy10ZW5zb3ItbnVtZXJpYy1icmVha2Rvd24iXV0saW5wdXRzOntzaXplOiJzaXplIixudW1OYU5zOiJudW1OYU5zIixudW1OZWdhdGl2ZUluZnM6Im51bU5lZ2F0aXZlSW5mcyIsbnVtUG9zaXRpdmVJbmZzOiJudW1Qb3NpdGl2ZUluZnMiLG51bU5lZ2F0aXZlRmluaXRlczoibnVtTmVnYXRpdmVGaW5pdGVzIixudW1aZXJvczoibnVtWmVyb3MiLG51bVBvc2l0aXZlRmluaXRlczoibnVtUG9zaXRpdmVGaW5pdGVzIn0sZGVjbHM6Nyx2YXJzOjMsY29uc3RzOltbMSwic2l6ZSJdLFsxLCJzaXplLXZhbHVlIl0sWyJjbGFzcyIsImJyZWFrIiw0LCJuZ0lmIl0sWyJjbGFzcyIsImJyZWFrZG93biIsNCwibmdJZiJdLFsxLCJicmVhayJdLFsxLCJicmVha2Rvd24iXSxbImNsYXNzIiwiY2F0ZWdvcnkiLDQsIm5nSWYiXSxbMSwiY2F0ZWdvcnkiXSxbMSwiY2F0ZWdvcnktdGFnIiwiaW5maW5pdGUiXSxbMSwiY2F0ZWdvcnktY291bnQiXSxbMSwiY2F0ZWdvcnktdGFnIiwiZmluaXRlIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihDZigwLCJkaXYiLDApLENmKDEsInNwYW4iKSxQdSgyLCJzaXplOiIpLE1mKCksQ2YoMywic3BhbiIsMSksUHUoNCksTWYoKSxNZigpLEhtKDUsTkosMSwwLCJkaXYiLDIpLEhtKDYsVkosNyw2LCJkaXYiLDMpKSwyJmUmJihEYyg0KSx3dShuLnNpemUpLERjKDEpLGJmKCJuZ0lmIixuLmJyZWFrZG93bkV4aXN0cyksRGMoMSksYmYoIm5nSWYiLG4uYnJlYWtkb3duRXhpc3RzKSl9LGRpcmVjdGl2ZXM6W1B2XSxzdHlsZXM6WyJbX25naG9zdC0lQ09NUCVdIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2UzZTVlODtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgI2MwYzBjMDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4O1xuICAgICAgICBmb250LWZhbWlseTogJ1JvYm90byBNb25vJywgbW9ub3NwYWNlO1xuICAgICAgICBmb250LXNpemU6IDEwcHg7XG4gICAgICAgIG1hcmdpbjogMCAycHg7XG4gICAgICAgIHBhZGRpbmc6IDFweDtcbiAgICAgIH1cbiAgICAgIC5icmVha1tfbmdjb250ZW50LSVDT01QJV0ge1xuICAgICAgICBmbGV4LWJhc2lzOiAxMDAlO1xuICAgICAgICB3aWR0aDogMDtcbiAgICAgIH1cbiAgICAgIC5zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBoZWlnaHQ6IDExcHg7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxMXB4O1xuICAgICAgICBtYXJnaW46IDAgM3B4O1xuICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgICAgfVxuICAgICAgLmJyZWFrZG93bltfbmdjb250ZW50LSVDT01QJV0ge1xuICAgICAgICBib3JkZXItdG9wOiAxcHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjEyKTtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgaGVpZ2h0OiAxMXB4O1xuICAgICAgICBsaW5lLWhlaWdodDogMTFweDtcbiAgICAgICAgcGFkZGluZzogMnB4O1xuICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgICAgfVxuICAgICAgLmNhdGVnb3J5W19uZ2NvbnRlbnQtJUNPTVAlXSB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDJweDtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDRweDtcbiAgICAgICAgbWFyZ2luLXRvcDogMnB4O1xuICAgICAgICBoZWlndGg6IDEwMCU7XG4gICAgICAgIHdpZHRoOiBtYXgtY29udGVudDtcbiAgICAgIH1cbiAgICAgIC5jYXRlZ29yeS10YWdbX25nY29udGVudC0lQ09NUCVdIHtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMnB4O1xuICAgICAgICBwYWRkaW5nOiAwIDJweDtcbiAgICAgIH1cbiAgICAgIC5maW5pdGVbX25nY29udGVudC0lQ09NUCVdIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2FhYTtcbiAgICAgICAgY29sb3I6ICNmZWZlZmU7XG4gICAgICB9XG4gICAgICAuaW5maW5pdGVbX25nY29udGVudC0lQ09NUCVdIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2U1MjU5MjtcbiAgICAgICAgY29sb3I6ICNmZmY7XG4gICAgICB9Il19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKFFKLFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6ImRlYnVnLXRlbnNvci1udW1lcmljLWJyZWFrZG93biIsdGVtcGxhdGU6J1xuICAgIDxkaXYgY2xhc3M9InNpemUiPlxuICAgICAgPHNwYW4+c2l6ZTo8L3NwYW4+XG4gICAgICA8c3BhbiBjbGFzcz0ic2l6ZS12YWx1ZSI+e3sgc2l6ZSB9fTwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2ICpuZ0lmPSJicmVha2Rvd25FeGlzdHMiIGNsYXNzPSJicmVhayI+PC9kaXY+XG4gICAgPGRpdiAqbmdJZj0iYnJlYWtkb3duRXhpc3RzIiBjbGFzcz0iYnJlYWtkb3duIj5cbiAgICAgIDxkaXYgKm5nSWY9Im51bU5hTnMgIT09IHVuZGVmaW5lZCAmJiBudW1OYU5zID4gMCIgY2xhc3M9ImNhdGVnb3J5Ij5cbiAgICAgICAgPHNwYW4gY2xhc3M9ImNhdGVnb3J5LXRhZyBpbmZpbml0ZSI+TmFOPC9zcGFuPlxuICAgICAgICA8c3BhbiBjbGFzcz0iY2F0ZWdvcnktY291bnQiPsOXe3sgbnVtTmFOcyB9fTwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdlxuICAgICAgICAqbmdJZj0ibnVtTmVnYXRpdmVJbmZzICE9PSB1bmRlZmluZWQgJiYgbnVtTmVnYXRpdmVJbmZzID4gMCJcbiAgICAgICAgY2xhc3M9ImNhdGVnb3J5IlxuICAgICAgPlxuICAgICAgICA8c3BhbiBjbGFzcz0iY2F0ZWdvcnktdGFnIGluZmluaXRlIj4t4oiePC9zcGFuPlxuICAgICAgICA8c3BhbiBjbGFzcz0iY2F0ZWdvcnktY291bnQiPsOXe3sgbnVtTmVnYXRpdmVJbmZzIH19PC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2XG4gICAgICAgICpuZ0lmPSJudW1Qb3NpdGl2ZUluZnMgIT09IHVuZGVmaW5lZCAmJiBudW1Qb3NpdGl2ZUluZnMgPiAwIlxuICAgICAgICBjbGFzcz0iY2F0ZWdvcnkiXG4gICAgICA+XG4gICAgICAgIDxzcGFuIGNsYXNzPSJjYXRlZ29yeS10YWcgaW5maW5pdGUiPiviiJ48L3NwYW4+XG4gICAgICAgIDxzcGFuIGNsYXNzPSJjYXRlZ29yeS1jb3VudCI+w5d7eyBudW1Qb3NpdGl2ZUluZnMgfX08L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXZcbiAgICAgICAgKm5nSWY9Im51bU5lZ2F0aXZlRmluaXRlcyAhPT0gdW5kZWZpbmVkICYmIG51bU5lZ2F0aXZlRmluaXRlcyA+IDAiXG4gICAgICAgIGNsYXNzPSJjYXRlZ29yeSJcbiAgICAgID5cbiAgICAgICAgPHNwYW4gY2xhc3M9ImNhdGVnb3J5LXRhZyBmaW5pdGUiPi08L3NwYW4+XG4gICAgICAgIDxzcGFuIGNsYXNzPSJjYXRlZ29yeS1jb3VudCI+w5d7eyBudW1OZWdhdGl2ZUZpbml0ZXMgfX08L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgKm5nSWY9Im51bVplcm9zICE9PSB1bmRlZmluZWQgJiYgbnVtWmVyb3MgPiAwIiBjbGFzcz0iY2F0ZWdvcnkiPlxuICAgICAgICA8c3BhbiBjbGFzcz0iY2F0ZWdvcnktdGFnIGZpbml0ZSI+MDwvc3Bhbj5cbiAgICAgICAgPHNwYW4gY2xhc3M9ImNhdGVnb3J5LWNvdW50Ij7Dl3t7IG51bVplcm9zIH19PC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2XG4gICAgICAgICpuZ0lmPSJudW1Qb3NpdGl2ZUZpbml0ZXMgIT09IHVuZGVmaW5lZCAmJiBudW1Qb3NpdGl2ZUZpbml0ZXMgPiAwIlxuICAgICAgICBjbGFzcz0iY2F0ZWdvcnkiXG4gICAgICA+XG4gICAgICAgIDxzcGFuIGNsYXNzPSJjYXRlZ29yeS10YWcgZmluaXRlIj4rPC9zcGFuPlxuICAgICAgICA8c3BhbiBjbGFzcz0iY2F0ZWdvcnktY291bnQiPsOXe3sgbnVtUG9zaXRpdmVGaW5pdGVzIH19PC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICcsc3R5bGVzOlsiXG4gICAgICA6aG9zdCB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNlM2U1ZTg7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNjMGMwYzA7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgICAgICAgZm9udC1mYW1pbHk6ICdSb2JvdG8gTW9ubycsIG1vbm9zcGFjZTtcbiAgICAgICAgZm9udC1zaXplOiAxMHB4O1xuICAgICAgICBtYXJnaW46IDAgMnB4O1xuICAgICAgICBwYWRkaW5nOiAxcHg7XG4gICAgICB9XG4gICAgICAuYnJlYWsge1xuICAgICAgICBmbGV4LWJhc2lzOiAxMDAlO1xuICAgICAgICB3aWR0aDogMDtcbiAgICAgIH1cbiAgICAgIC5zaXplIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIGhlaWdodDogMTFweDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDExcHg7XG4gICAgICAgIG1hcmdpbjogMCAzcHg7XG4gICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgICB9XG4gICAgICAuYnJlYWtkb3duIHtcbiAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC4xMik7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGhlaWdodDogMTFweDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDExcHg7XG4gICAgICAgIHBhZGRpbmc6IDJweDtcbiAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICAgIH1cbiAgICAgIC5jYXRlZ29yeSB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDJweDtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDRweDtcbiAgICAgICAgbWFyZ2luLXRvcDogMnB4O1xuICAgICAgICBoZWlndGg6IDEwMCU7XG4gICAgICAgIHdpZHRoOiBtYXgtY29udGVudDtcbiAgICAgIH1cbiAgICAgIC5jYXRlZ29yeS10YWcge1xuICAgICAgICBib3JkZXItcmFkaXVzOiAycHg7XG4gICAgICAgIHBhZGRpbmc6IDAgMnB4O1xuICAgICAgfVxuICAgICAgLmZpbml0ZSB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNhYWE7XG4gICAgICAgIGNvbG9yOiAjZmVmZWZlO1xuICAgICAgfVxuICAgICAgLmluZmluaXRlIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2U1MjU5MjtcbiAgICAgICAgY29sb3I6ICNmZmY7XG4gICAgICB9XG4gICAgIl19XX1dLG51bGwse3NpemU6W3t0eXBlOlJffV0sbnVtTmFOczpbe3R5cGU6Ul99XSxudW1OZWdhdGl2ZUluZnM6W3t0eXBlOlJffV0sbnVtUG9zaXRpdmVJbmZzOlt7dHlwZTpSX31dLG51bU5lZ2F0aXZlRmluaXRlczpbe3R5cGU6Ul99XSxudW1aZXJvczpbe3R5cGU6Ul99XSxudW1Qb3NpdGl2ZUZpbml0ZXM6W3t0eXBlOlJffV19KTtjbGFzcyAkSntnZXQgaW5mb1N0cmluZygpe3JldHVybiB0aGlzLmhhc0luZk9yTmFOPyJIYXMg4oieL05hTiI6Ik5vIOKIni9OYU4ifX0kSi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8JEopfSwkSi7JtWNtcD1zbyh7dHlwZTokSixzZWxlY3RvcnM6W1siZGVidWctdGVuc29yLWhhcy1pbmYtb3ItbmFuIl1dLGlucHV0czp7aGFzSW5mT3JOYU46Imhhc0luZk9yTmFOIn0sZGVjbHM6Mix2YXJzOjQsY29uc3RzOltbMywibmdDbGFzcyJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoQ2YoMCwiZGl2IiwwKSxQdSgxKSxNZigpKSwyJmUmJihiZigibmdDbGFzcyIsaXkoMixqSixuLmhhc0luZk9yTmFOPyJoYXMtaW5mLW9yLW5hbiI6IiIpKSxEYygxKSxrdSgiICIsbi5pbmZvU3RyaW5nLCIgIikpfSxkaXJlY3RpdmVzOltDdl0sc3R5bGVzOlsiLmNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0ge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTNlNWU4O1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjYzBjMGMwO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7XG4gICAgICAgIGNvbG9yOiAjNjY2NjY2O1xuICAgICAgICBmb250LWZhbWlseTogJ1JvYm90byBNb25vJywgbW9ub3NwYWNlO1xuICAgICAgICBoZWlnaHQ6IDE0cHg7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxNHB4O1xuICAgICAgICBtYXJnaW46IDAgMnB4O1xuICAgICAgICBwYWRkaW5nOiAxcHggM3B4O1xuICAgICAgICB3aWR0aDogbWF4LWNvbnRlbnQ7XG4gICAgICB9XG4gICAgICAuaGFzLWluZi1vci1uYW5bX25nY29udGVudC0lQ09NUCVdIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2U1MjU5MjtcbiAgICAgICAgY29sb3I6ICNmZmY7XG4gICAgICB9Il19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKCRKLFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6ImRlYnVnLXRlbnNvci1oYXMtaW5mLW9yLW5hbiIsdGVtcGxhdGU6IlxuICAgIDxkaXYgW25nQ2xhc3NdPVwiWydjb250YWluZXInLCBoYXNJbmZPck5hTiA/ICdoYXMtaW5mLW9yLW5hbicgOiAnJ11cIj5cbiAgICAgIHt7IGluZm9TdHJpbmcgfX1cbiAgICA8L2Rpdj5cbiAgIixzdHlsZXM6WyJcbiAgICAgIC5jb250YWluZXIge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTNlNWU4O1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjYzBjMGMwO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7XG4gICAgICAgIGNvbG9yOiAjNjY2NjY2O1xuICAgICAgICBmb250LWZhbWlseTogJ1JvYm90byBNb25vJywgbW9ub3NwYWNlO1xuICAgICAgICBoZWlnaHQ6IDE0cHg7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxNHB4O1xuICAgICAgICBtYXJnaW46IDAgMnB4O1xuICAgICAgICBwYWRkaW5nOiAxcHggM3B4O1xuICAgICAgICB3aWR0aDogbWF4LWNvbnRlbnQ7XG4gICAgICB9XG4gICAgICAuaGFzLWluZi1vci1uYW4ge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTUyNTkyO1xuICAgICAgICBjb2xvcjogI2ZmZjtcbiAgICAgIH1cbiAgICAiXX1dfV0sbnVsbCx7aGFzSW5mT3JOYU46W3t0eXBlOlJffV19KTtjbGFzcyB0UXt9dFEuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHRRKX0sdFEuybVjbXA9c28oe3R5cGU6dFEsc2VsZWN0b3JzOltbImRlYnVnLXRlbnNvci12YWx1ZSJdXSxpbnB1dHM6e2RlYnVnVGVuc29yVmFsdWU6ImRlYnVnVGVuc29yVmFsdWUifSxkZWNsczo1LHZhcnM6NSxjb25zdHM6W1szLCJkdHlwZSIsNCwibmdJZiJdLFszLCJyYW5rIiw0LCJuZ0lmIl0sWzMsInNoYXBlIiw0LCJuZ0lmIl0sWzMsImhhc0luZk9yTmFOIiw0LCJuZ0lmIl0sWzMsInNpemUiLCJudW1OZWdhdGl2ZUluZnMiLCJudW1Qb3NpdGl2ZUluZnMiLCJudW1OYU5zIiwibnVtTmVnYXRpdmVGaW5pdGVzIiwibnVtWmVyb3MiLCJudW1Qb3NpdGl2ZUZpbml0ZXMiLDQsIm5nSWYiXSxbMywiZHR5cGUiXSxbMywicmFuayJdLFszLCJzaGFwZSJdLFszLCJoYXNJbmZPck5hTiJdLFszLCJzaXplIiwibnVtTmVnYXRpdmVJbmZzIiwibnVtUG9zaXRpdmVJbmZzIiwibnVtTmFOcyIsIm51bU5lZ2F0aXZlRmluaXRlcyIsIm51bVplcm9zIiwibnVtUG9zaXRpdmVGaW5pdGVzIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihIbSgwLFVKLDEsMSwiZGVidWctdGVuc29yLWR0eXBlIiwwKSxIbSgxLFdKLDEsMSwiZGVidWctdGVuc29yLXJhbmsiLDEpLEhtKDIsR0osMSwxLCJkZWJ1Zy10ZW5zb3Itc2hhcGUiLDIpLEhtKDMsWUosMSwxLCJkZWJ1Zy10ZW5zb3ItaGFzLWluZi1vci1uYW4iLDMpLEhtKDQscUosMSw3LCJkZWJ1Zy10ZW5zb3ItbnVtZXJpYy1icmVha2Rvd24iLDQpKSwyJmUmJihiZigibmdJZiIsdm9pZCAwIT09bi5kZWJ1Z1RlbnNvclZhbHVlLmR0eXBlKSxEYygxKSxiZigibmdJZiIsdm9pZCAwIT09bi5kZWJ1Z1RlbnNvclZhbHVlLnJhbmspLERjKDEpLGJmKCJuZ0lmIix2b2lkIDAhPT1uLmRlYnVnVGVuc29yVmFsdWUuc2hhcGUpLERjKDEpLGJmKCJuZ0lmIix2b2lkIDAhPT1uLmRlYnVnVGVuc29yVmFsdWUuaGFzSW5mT3JOYU4pLERjKDEpLGJmKCJuZ0lmIix2b2lkIDAhPT1uLmRlYnVnVGVuc29yVmFsdWUuc2l6ZSkpfSxkaXJlY3RpdmVzOltQdixYSixLSixKSiwkSixRSl0sc3R5bGVzOlsiW19uZ2hvc3QtJUNPTVAlXSB7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LXdyYXA6IG5vd3JhcDtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgdmVydGljYWwtYWxpZ246IHRvcDtcbiAgICAgIH1cbiAgICAgIGRlYnVnLXRlbnNvci1udW1lcmljLWJyZWFrZG93bltfbmdjb250ZW50LSVDT01QJV0ge1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICB9Il19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKHRRLFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6ImRlYnVnLXRlbnNvci12YWx1ZSIsdGVtcGxhdGU6J1xuICAgIDxkZWJ1Zy10ZW5zb3ItZHR5cGVcbiAgICAgICpuZ0lmPSJkZWJ1Z1RlbnNvclZhbHVlLmR0eXBlICE9PSB1bmRlZmluZWQiXG4gICAgICBbZHR5cGVdPSJkZWJ1Z1RlbnNvclZhbHVlLmR0eXBlIlxuICAgID5cbiAgICA8L2RlYnVnLXRlbnNvci1kdHlwZT5cbiAgICA8ZGVidWctdGVuc29yLXJhbmtcbiAgICAgICpuZ0lmPSJkZWJ1Z1RlbnNvclZhbHVlLnJhbmsgIT09IHVuZGVmaW5lZCJcbiAgICAgIFtyYW5rXT0iZGVidWdUZW5zb3JWYWx1ZS5yYW5rIlxuICAgID5cbiAgICA8L2RlYnVnLXRlbnNvci1yYW5rPlxuICAgIDxkZWJ1Zy10ZW5zb3Itc2hhcGVcbiAgICAgICpuZ0lmPSJkZWJ1Z1RlbnNvclZhbHVlLnNoYXBlICE9PSB1bmRlZmluZWQiXG4gICAgICBbc2hhcGVdPSJkZWJ1Z1RlbnNvclZhbHVlLnNoYXBlIlxuICAgID5cbiAgICA8L2RlYnVnLXRlbnNvci1zaGFwZT5cbiAgICA8ZGVidWctdGVuc29yLWhhcy1pbmYtb3ItbmFuXG4gICAgICAqbmdJZj0iZGVidWdUZW5zb3JWYWx1ZS5oYXNJbmZPck5hTiAhPT0gdW5kZWZpbmVkIlxuICAgICAgW2hhc0luZk9yTmFOXT0iZGVidWdUZW5zb3JWYWx1ZS5oYXNJbmZPck5hTiJcbiAgICA+XG4gICAgPC9kZWJ1Zy10ZW5zb3ItaGFzLWluZi1vci1uYW4+XG4gICAgPGRlYnVnLXRlbnNvci1udW1lcmljLWJyZWFrZG93blxuICAgICAgKm5nSWY9ImRlYnVnVGVuc29yVmFsdWUuc2l6ZSAhPT0gdW5kZWZpbmVkIlxuICAgICAgc2l6ZT0ie3sgZGVidWdUZW5zb3JWYWx1ZS5zaXplIH19IlxuICAgICAgW251bU5lZ2F0aXZlSW5mc109ImRlYnVnVGVuc29yVmFsdWUubnVtTmVnYXRpdmVJbmZzIlxuICAgICAgW251bVBvc2l0aXZlSW5mc109ImRlYnVnVGVuc29yVmFsdWUubnVtUG9zaXRpdmVJbmZzIlxuICAgICAgW251bU5hTnNdPSJkZWJ1Z1RlbnNvclZhbHVlLm51bU5hTnMiXG4gICAgICBbbnVtTmVnYXRpdmVGaW5pdGVzXT0iZGVidWdUZW5zb3JWYWx1ZS5udW1OZWdhdGl2ZUZpbml0ZXMiXG4gICAgICBbbnVtWmVyb3NdPSJkZWJ1Z1RlbnNvclZhbHVlLm51bVplcm9zIlxuICAgICAgW251bVBvc2l0aXZlRmluaXRlc109ImRlYnVnVGVuc29yVmFsdWUubnVtUG9zaXRpdmVGaW5pdGVzIlxuICAgID5cbiAgICA8L2RlYnVnLXRlbnNvci1udW1lcmljLWJyZWFrZG93bj5cbiAgJyxzdHlsZXM6WyJcbiAgICAgIDpob3N0IHtcbiAgICAgICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtd3JhcDogbm93cmFwO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wO1xuICAgICAgfVxuICAgICAgZGVidWctdGVuc29yLW51bWVyaWMtYnJlYWtkb3duIHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgfVxuICAgICJdfV19XSxudWxsLHtkZWJ1Z1RlbnNvclZhbHVlOlt7dHlwZTpSX31dfSk7Y29uc3QgZVE9ZnVuY3Rpb24odCxlKXtyZXR1cm57dGVuc29yRGVidWdNb2RlOnQsYXJyYXk6ZX19O2Z1bmN0aW9uIG5RKHQsZSl7aWYoMSZ0JiYoQ2YoMCwiZGl2IiwxMiksQ2YoMSwiZGl2IiwxMyksUHUoMiksTWYoKSxDZigzLCJkaXYiLDE0KSx2Zig0LCJkZWJ1Zy10ZW5zb3ItdmFsdWUiLDE1KSxNZigpLE1mKCkpLDImdCl7Y29uc3QgdD1lLiRpbXBsaWNpdCxuPWUuaW5kZXgsbz16ZigzKTtEYygyKSxrdSgiT3V0cHV0IHNsb3QgIixuLCI6IiksRGMoMiksYmYoImRlYnVnVGVuc29yVmFsdWUiLG8ucGFyc2VEZWJ1Z1RlbnNvclZhbHVlKGF5KDIsZVEsby50ZW5zb3JEZWJ1Z01vZGUsdCkpKX19ZnVuY3Rpb24gb1EodCxlKXtpZigxJnQmJihDZigwLCJkaXYiLDEwKSxIbSgxLG5RLDUsNSwiZGl2IiwxMSksTWYoKSksMiZ0KXtjb25zdCB0PXpmKDIpO0RjKDEpLGJmKCJuZ0Zvck9mIix0LmRlYnVnVGVuc29yVmFsdWVzKX19ZnVuY3Rpb24gaVEodCxlKXtpZigxJnQmJihDZigwLCJkaXYiKSxDZigxLCJkaXYiKSxDZigyLCJkaXYiLDMpLENmKDMsInNwYW4iLDQpLFB1KDQsIiBPcDogIiksTWYoKSxDZig1LCJzcGFuIiw1KSxQdSg2KSxNZigpLE1mKCksQ2YoNywiZGl2IiwzKSxDZig4LCJzcGFuIiw0KSxQdSg5LCIgIyBvZiBpbnB1dCB0ZW5zb3JzOiAiKSxNZigpLENmKDEwLCJzcGFuIiw2KSxQdSgxMSksTWYoKSxNZigpLENmKDEyLCJkaXYiLDMpLENmKDEzLCJzcGFuIiw0KSxQdSgxNCwiICMgb2Ygb3V0cHV0IHRlbnNvcnM6ICIpLE1mKCksQ2YoMTUsInNwYW4iLDcpLFB1KDE2KSxNZigpLENmKDE3LCJzcGFuIiw4KSxQdSgxOCksTWYoKSxNZigpLEhtKDE5LG9RLDIsMSwiZGl2Iiw5KSxNZigpLE1mKCkpLDImdCl7Y29uc3QgdD16ZigpO0RjKDYpLGt1KCIgIix0LmZvY3VzZWRFeGVjdXRpb25EYXRhLm9wX3R5cGUsIiAiKSxEYyg1KSxrdSgiICIsbnVsbD09dC5mb2N1c2VkRXhlY3V0aW9uRGF0YS5pbnB1dF90ZW5zb3JfaWRzPzA6dC5mb2N1c2VkRXhlY3V0aW9uRGF0YS5pbnB1dF90ZW5zb3JfaWRzLmxlbmd0aCwiICIpLERjKDUpLGt1KCIgIixudWxsPT10LmZvY3VzZWRFeGVjdXRpb25EYXRhLm91dHB1dF90ZW5zb3JfaWRzPzA6dC5mb2N1c2VkRXhlY3V0aW9uRGF0YS5vdXRwdXRfdGVuc29yX2lkcy5sZW5ndGgsIiAiKSxEYygyKSxrdSgiIChkZWJ1ZyBtb2RlOiAiLHQuVGVuc29yRGVidWdNb2RlW3QudGVuc29yRGVidWdNb2RlXSwiKSAiKSxEYygxKSxiZigibmdJZiIsdC5oYXNEZWJ1Z1RlbnNvclZhbHVlcyl9fWZ1bmN0aW9uIGFRKHQsZSl7fWNsYXNzIHJRe2NvbnN0cnVjdG9yKCl7dGhpcy50ZW5zb3JEZWJ1Z01vZGU9c0suVU5TUEVDSUZJRUQsdGhpcy5oYXNEZWJ1Z1RlbnNvclZhbHVlcz0hMSx0aGlzLmRlYnVnVGVuc29yVmFsdWVzPW51bGwsdGhpcy5kZWJ1Z1RlbnNvckR0eXBlcz1udWxsLHRoaXMuVGVuc29yRGVidWdNb2RlPXNLLHRoaXMucGFyc2VEZWJ1Z1RlbnNvclZhbHVlPUFKfX1yUS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8clEpfSxyUS7JtWNtcD1zbyh7dHlwZTpyUSxzZWxlY3RvcnM6W1siZXhlY3V0aW9uLWRhdGEtY29tcG9uZW50Il1dLGlucHV0czp7Zm9jdXNlZEV4ZWN1dGlvbkluZGV4OiJmb2N1c2VkRXhlY3V0aW9uSW5kZXgiLGZvY3VzZWRFeGVjdXRpb25EYXRhOiJmb2N1c2VkRXhlY3V0aW9uRGF0YSIsdGVuc29yRGVidWdNb2RlOiJ0ZW5zb3JEZWJ1Z01vZGUiLGhhc0RlYnVnVGVuc29yVmFsdWVzOiJoYXNEZWJ1Z1RlbnNvclZhbHVlcyIsZGVidWdUZW5zb3JWYWx1ZXM6ImRlYnVnVGVuc29yVmFsdWVzIixkZWJ1Z1RlbnNvckR0eXBlczoiZGVidWdUZW5zb3JEdHlwZXMifSxkZWNsczo3LHZhcnM6Myxjb25zdHM6W1sxLCJmb2N1cy1leGVjdXRpb24tY29udGFpbmVyIl0sWzQsIm5nSWYiLCJuZ0lmRWxzZSJdLFsibG9hZGluZ19zZWN0aW9uIiwiIl0sWzEsImV4ZWN1dGlvbi1kYXRhLWZpZWxkIl0sWzEsImV4ZWN1dGlvbi1kYXRhLWtleSJdLFsxLCJleGVjdXRpb24tZGF0YS12YWx1ZSIsIm9wLXR5cGUiXSxbMSwiZXhlY3V0aW9uLWRhdGEtdmFsdWUiLCJpbnB1dC10ZW5zb3JzIl0sWzEsImV4ZWN1dGlvbi1kYXRhLXZhbHVlIiwib3V0cHV0LXRlbnNvcnMiXSxbMSwiZXhlY3V0aW9uLWRhdGEtdmFsdWUiXSxbImNsYXNzIiwib3V0cHV0LXNsb3RzIiw0LCJuZ0lmIl0sWzEsIm91dHB1dC1zbG90cyJdLFsiY2xhc3MiLCJvdXRwdXQtc2xvdC1jb250YWluZXIiLDQsIm5nRm9yIiwibmdGb3JPZiJdLFsxLCJvdXRwdXQtc2xvdC1jb250YWluZXIiXSxbMSwib3V0cHV0LXNsb3QtbnVtYmVyIl0sWzEsIm91dHB1dC1zbG90LWRlYnVnLXRlbnNvci12YWx1ZSJdLFszLCJkZWJ1Z1RlbnNvclZhbHVlIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXtpZigxJmUmJihDZigwLCJkaXYiLDApLENmKDEsImRpdiIpLENmKDIsInNwYW4iKSxQdSgzKSxNZigpLE1mKCksSG0oNCxpUSwyMCw1LCJkaXYiLDEpLEhtKDUsYVEsMCwwLCJuZy10ZW1wbGF0ZSIsbnVsbCwyLHF5KSxNZigpKSwyJmUpe2NvbnN0IHQ9Rm0oNik7RGMoMyksa3UoIiBQeXRob24gRXhlY3V0aW9uICMiLG4uZm9jdXNlZEV4ZWN1dGlvbkluZGV4LCIgIiksRGMoMSksYmYoIm5nSWYiLG51bGwhPT1uLmZvY3VzZWRFeGVjdXRpb25EYXRhKSgibmdJZkVsc2UiLHQpfX0sZGlyZWN0aXZlczpbUHYseHYsdFFdLHN0eWxlczpbJy5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjlweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHh9Lm1hdC1oMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaGVhZGxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDI0cHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTVweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWg2W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1ib2R5LXN0cm9uZ1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYXJkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FyZC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MjRweH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNhbGVuZGFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZGlhbG9nLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVlbSAwO2JvcmRlci10b3A6Ljg0Mzc1ZW0gc29saWQgdHJhbnNwYXJlbnR9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17dG9wOi0wLjg0Mzc1ZW07cGFkZGluZy10b3A6Ljg0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6NzUlO21hcmdpbi10b3A6LjY2NjY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS43OTE2NjY2NjY3ZW0pfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjQzNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDJweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIzZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4yODEyNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LjU0MTY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS42NjY2NjY2NjY3ZW0pfUBtZWRpYSBwcmludHsubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjJlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjFlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyZW0pIHNjYWxlKDAuNzUpfX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouMjVlbSAwIC43NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjA5Mzc1ZW07bWFyZ2luLXRvcDotMC41ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoxZW0gMCAxZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuODQzNzVlbTttYXJnaW4tdG9wOi0wLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMiksIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fWlucHV0Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi0wLjA2MjVlbX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHh9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtfS5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1zdGVwLXN1Yi1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6bm9ybWFsfS5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1zdGVwLWxhYmVsLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10YWItZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MH0ubWF0LXRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTBweDtwYWRkaW5nLXRvcDo2cHg7cGFkZGluZy1ib3R0b206NnB4fS5tYXQtdG9vbHRpcC1oYW5kc2V0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4fS5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtc2ltcGxlLXNuYWNrYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHh9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoxO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjE0cHh9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV06bm90KDplbXB0eSl7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9Lm1hdC1yaXBwbGUubWF0LXJpcHBsZS11bmJvdW5kZWRbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OnZpc2libGV9Lm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJhZGl1czo1MCU7cG9pbnRlci1ldmVudHM6bm9uZTt0cmFuc2l0aW9uOm9wYWNpdHksdHJhbnNmb3JtIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTt0cmFuc2Zvcm06c2NhbGUoMCl9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9LmNkay12aXN1YWxseS1oaWRkZW5bX25nY29udGVudC0lQ09NUCVde2JvcmRlcjowO2NsaXA6cmVjdCgwIDAgMCAwKTtoZWlnaHQ6MXB4O21hcmdpbjotMXB4O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4O3doaXRlLXNwYWNlOm5vd3JhcDtvdXRsaW5lOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0sIC5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cG9pbnRlci1ldmVudHM6bm9uZTt0b3A6MDtsZWZ0OjA7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV06ZW1wdHl7ZGlzcGxheTpub25lfS5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktcGFuZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6YXV0bztib3gtc2l6aW5nOmJvcmRlci1ib3g7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDttYXgtd2lkdGg6MTAwJTttYXgtaGVpZ2h0OjEwMCV9LmNkay1vdmVybGF5LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDt6LWluZGV4OjEwMDA7cG9pbnRlci1ldmVudHM6YXV0bzstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnQ7dHJhbnNpdGlvbjpvcGFjaXR5IDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpO29wYWNpdHk6MH0uY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eToxfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6LjZ9LmNkay1vdmVybGF5LWRhcmstYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMzIpfS5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV0sIC5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWNvbm5lY3RlZC1wb3NpdGlvbi1ib3VuZGluZy1ib3hbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO21pbi13aWR0aDoxcHg7bWluLWhlaWdodDoxcHh9LmNkay1nbG9iYWwtc2Nyb2xsYmxvY2tbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3dpZHRoOjEwMCU7b3ZlcmZsb3cteTpzY3JvbGx9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplW19uZ2NvbnRlbnQtJUNPTVAlXXtyZXNpemU6bm9uZX10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDphdXRvICFpbXBvcnRhbnQ7b3ZlcmZsb3c6aGlkZGVuICFpbXBvcnRhbnR9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZy1maXJlZm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDowICFpbXBvcnRhbnR9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydHt9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmR7fS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGx7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0IDBzIDFtc30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOi13ZWJraXQtYXV0b2ZpbGwpe2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmQgMHMgMW1zfS5tYXQtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LW1kYy1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5kZWJ1Zy10ZW5zb3ItdmFsdWVzLXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXt3aWR0aDoxMDAlfS5kZWJ1Zy10ZW5zb3ItdmFsdWVzLXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRkW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItdG9wOjFweCBzb2xpZCAjMDAwO3RleHQtYWxpZ246bGVmdH0uZGVidWctdGVuc29yLXZhbHVlcy10YWJsZVtfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17dGV4dC1hbGlnbjpsZWZ0fS5leGVjdXRpb24tZGF0YS1maWVsZFtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwfS5leGVjdXRpb24tZGF0YS1rZXlbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6aW5saW5lLWJsb2NrO21heC13aWR0aDoxMjBweDt0ZXh0LWFsaWduOnJpZ2h0O3dpZHRoOjEyMHB4fS5leGVjdXRpb24tZGF0YS12YWx1ZVtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTppbmxpbmUtYmxvY2s7bWFyZ2luLWxlZnQ6MTBweH0uZm9jdXMtZXhlY3V0aW9uLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmZjYzgwO2JvcmRlci1yYWRpdXM6NHB4O2ZvbnQtc2l6ZToxMnB4O2hlaWdodDoxMjBweDtwYWRkaW5nOjVweDt3aWR0aDozNjBweH1ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICAuZm9jdXMtZXhlY3V0aW9uLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0sIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5mb2N1cy1leGVjdXRpb24tY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNlNjUxMDB9Lm91dHB1dC1zbG90c1tfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjYwcHg7b3ZlcmZsb3cteDphdXRvO292ZXJmbG93LXk6YXV0b30ub3V0cHV0LXNsb3QtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItdG9wOjFweCBzb2xpZCAjZWJlYmViO21hcmdpbi10b3A6NXB4O3BhZGRpbmc6MnB4IDA7dmVydGljYWwtYWxpZ246dG9wfWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC5vdXRwdXQtc2xvdC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAub3V0cHV0LXNsb3QtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItdG9wOjFweCBzb2xpZCAjNTU1fS5vdXRwdXQtc2xvdC1udW1iZXJbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6YmxvY2s7Zm9udC1mYW1pbHk6IlJvYm90byBNb25vIixtb25vc3BhY2V9Lm91dHB1dC1zbG90LWRlYnVnLXRlbnNvci12YWx1ZVtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpibG9jazttYXJnaW46M3B4IDAgM3B4IDMwcHh9Lm91dHB1dC10ZW5zb3JzW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOjVweH0nXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoclEsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoiZXhlY3V0aW9uLWRhdGEtY29tcG9uZW50Iix0ZW1wbGF0ZVVybDoiLi9leGVjdXRpb25fZGF0YV9jb21wb25lbnQubmcuaHRtbCIsc3R5bGVVcmxzOlsiLi9leGVjdXRpb25fZGF0YV9jb21wb25lbnQuY3NzIl19XX1dLG51bGwse2ZvY3VzZWRFeGVjdXRpb25JbmRleDpbe3R5cGU6Ul99XSxmb2N1c2VkRXhlY3V0aW9uRGF0YTpbe3R5cGU6Ul99XSx0ZW5zb3JEZWJ1Z01vZGU6W3t0eXBlOlJffV0saGFzRGVidWdUZW5zb3JWYWx1ZXM6W3t0eXBlOlJffV0sZGVidWdUZW5zb3JWYWx1ZXM6W3t0eXBlOlJffV0sZGVidWdUZW5zb3JEdHlwZXM6W3t0eXBlOlJffV19KTtjb25zdCBzUT0iVW5rbm93biBkdHlwZSI7Y2xhc3MgbFF7Y29uc3RydWN0b3IodCl7dGhpcy5zdG9yZT10LHRoaXMuZm9jdXNlZEV4ZWN1dGlvbkRhdGEkPXRoaXMuc3RvcmUucGlwZShyUyhzSikpLHRoaXMudGVuc29yRGVidWdNb2RlJD10aGlzLnN0b3JlLnBpcGUoclMoYlMoc0osKHQ9Pm51bGw9PT10P3NLLlVOU1BFQ0lGSUVEOnQudGVuc29yX2RlYnVnX21vZGUpKSkpLHRoaXMuaGFzRGVidWdUZW5zb3JWYWx1ZXMkPXRoaXMuc3RvcmUucGlwZShyUyhiUyhzSiwodD0+e2lmKG51bGw9PT10fHxudWxsPT09dC5kZWJ1Z190ZW5zb3JfdmFsdWVzKXJldHVybiExO2Zvcihjb25zdCBlIG9mIHQuZGVidWdfdGVuc29yX3ZhbHVlcylpZihudWxsIT09ZSYmZS5sZW5ndGg+MClyZXR1cm4hMDtyZXR1cm4hMX0pKSkpLHRoaXMuZGVidWdUZW5zb3JWYWx1ZXMkPXRoaXMuc3RvcmUucGlwZShyUyhiUyhzSiwodD0+bnVsbD09PXQ/bnVsbDp0LmRlYnVnX3RlbnNvcl92YWx1ZXMpKSkpLHRoaXMuZGVidWdUZW5zb3JEdHlwZXMkPXRoaXMuc3RvcmUucGlwZShyUyhiUyhzSiwodD0+e2lmKG51bGw9PT10fHxudWxsPT09dC5kZWJ1Z190ZW5zb3JfdmFsdWVzKXJldHVybiBudWxsO2lmKHQudGVuc29yX2RlYnVnX21vZGUhPT1zSy5GVUxMX0hFQUxUSCYmdC50ZW5zb3JfZGVidWdfbW9kZSE9PXNLLlNIQVBFKXJldHVybiBudWxsO2NvbnN0IGU9W107Zm9yKGNvbnN0IG4gb2YgdC5kZWJ1Z190ZW5zb3JfdmFsdWVzKWlmKG51bGw9PT1uKWUucHVzaChzUSk7ZWxzZXtjb25zdCBvPVN0cmluZyh0LnRlbnNvcl9kZWJ1Z19tb2RlPT09c0suRlVMTF9IRUFMVEg/blsyXTpuWzFdKTtlLnB1c2goRUpbb118fHNRKX1yZXR1cm4gZX0pKSkpfX1mdW5jdGlvbiBjUSh0LGUpe2lmKDEmdCl7Y29uc3QgdD13ZigpO0NmKDAsIm1hdC1zbGlkZXIiLDExKSxSZigiaW5wdXQiLChmdW5jdGlvbiBlKG4pe1BpKHQpO3JldHVybiB6ZigyKS5vblNsaWRlckNoYW5nZS5lbWl0KG4udmFsdWUpfSkpLE1mKCl9aWYoMiZ0KXtjb25zdCB0PXpmKDIpO2JmKCJtaW4iLDApKCJtYXgiLHQuc2Nyb2xsQmVnaW5JbmRleFVwcGVyTGltaXQpKCJ2YWx1ZSIsdC5zY3JvbGxCZWdpbkluZGV4KX19ZnVuY3Rpb24gZFEodCxlKXtpZigxJnQpe2NvbnN0IHQ9d2YoKTtDZigwLCJkaXYiLDYpLENmKDEsImJ1dHRvbiIsNyksUmYoImNsaWNrIiwoZnVuY3Rpb24gZSgpe1BpKHQpO3JldHVybiB6ZigpLm9uTmF2aWdhdGVMZWZ0LmVtaXQoKX0pKSxQdSgyLCIgPCAiKSxNZigpLENmKDMsImRpdiIsOCksUHUoNCksTWYoKSxDZig1LCJidXR0b24iLDkpLFJmKCJjbGljayIsKGZ1bmN0aW9uIGUoKXtQaSh0KTtyZXR1cm4gemYoKS5vbk5hdmlnYXRlUmlnaHQuZW1pdCgpfSkpLFB1KDYsIiA+ICIpLE1mKCksSG0oNyxjUSwxLDMsIm1hdC1zbGlkZXIiLDEwKSxNZigpfWlmKDImdCl7Y29uc3QgdD16ZigpO0RjKDQpLER1KCIgIix0LnNjcm9sbEJlZ2luSW5kZXgsIiB+ICIsdC5zY3JvbGxCZWdpbkluZGV4K3QuZGlzcGxheUNvdW50LTEsIiBvZiAiLHQubnVtRXhlY3V0aW9ucywiICIpLERjKDMpLGJmKCJuZ0lmIix0LnNjcm9sbEJlZ2luSW5kZXhVcHBlckxpbWl0PjApfX1sUS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8bFEpKGdmKGlTKSl9LGxRLsm1Y21wPXNvKHt0eXBlOmxRLHNlbGVjdG9yczpbWyJ0Zi1kZWJ1Z2dlci12Mi1leGVjdXRpb24tZGF0YSJdXSxpbnB1dHM6e2ZvY3VzZWRFeGVjdXRpb25JbmRleDoiZm9jdXNlZEV4ZWN1dGlvbkluZGV4In0sZGVjbHM6Nix2YXJzOjE2LGNvbnN0czpbWzMsImZvY3VzZWRFeGVjdXRpb25JbmRleCIsImZvY3VzZWRFeGVjdXRpb25EYXRhIiwidGVuc29yRGVidWdNb2RlIiwiaGFzRGVidWdUZW5zb3JWYWx1ZXMiLCJkZWJ1Z1RlbnNvclZhbHVlcyIsImRlYnVnVGVuc29yRHR5cGVzIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJih2ZigwLCJleGVjdXRpb24tZGF0YS1jb21wb25lbnQiLDApLF95KDEsImFzeW5jIiksX3koMiwiYXN5bmMiKSxfeSgzLCJhc3luYyIpLF95KDQsImFzeW5jIiksX3koNSwiYXN5bmMiKSksMiZlJiZiZigiZm9jdXNlZEV4ZWN1dGlvbkluZGV4IixuLmZvY3VzZWRFeGVjdXRpb25JbmRleCkoImZvY3VzZWRFeGVjdXRpb25EYXRhIixDeSgxLDYsbi5mb2N1c2VkRXhlY3V0aW9uRGF0YSQpKSgidGVuc29yRGVidWdNb2RlIixDeSgyLDgsbi50ZW5zb3JEZWJ1Z01vZGUkKSkoImhhc0RlYnVnVGVuc29yVmFsdWVzIixDeSgzLDEwLG4uaGFzRGVidWdUZW5zb3JWYWx1ZXMkKSkoImRlYnVnVGVuc29yVmFsdWVzIixDeSg0LDEyLG4uZGVidWdUZW5zb3JWYWx1ZXMkKSkoImRlYnVnVGVuc29yRHR5cGVzIixDeSg1LDE0LG4uZGVidWdUZW5zb3JEdHlwZXMkKSl9LGRpcmVjdGl2ZXM6W3JRXSxwaXBlczpbVnZdLGVuY2Fwc3VsYXRpb246Mn0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIobFEsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoidGYtZGVidWdnZXItdjItZXhlY3V0aW9uLWRhdGEiLHRlbXBsYXRlOidcbiAgICA8ZXhlY3V0aW9uLWRhdGEtY29tcG9uZW50XG4gICAgICBbZm9jdXNlZEV4ZWN1dGlvbkluZGV4XT0iZm9jdXNlZEV4ZWN1dGlvbkluZGV4IlxuICAgICAgW2ZvY3VzZWRFeGVjdXRpb25EYXRhXT0iZm9jdXNlZEV4ZWN1dGlvbkRhdGEkIHwgYXN5bmMiXG4gICAgICBbdGVuc29yRGVidWdNb2RlXT0idGVuc29yRGVidWdNb2RlJCB8IGFzeW5jIlxuICAgICAgW2hhc0RlYnVnVGVuc29yVmFsdWVzXT0iaGFzRGVidWdUZW5zb3JWYWx1ZXMkIHwgYXN5bmMiXG4gICAgICBbZGVidWdUZW5zb3JWYWx1ZXNdPSJkZWJ1Z1RlbnNvclZhbHVlcyQgfCBhc3luYyJcbiAgICAgIFtkZWJ1Z1RlbnNvckR0eXBlc109ImRlYnVnVGVuc29yRHR5cGVzJCB8IGFzeW5jIlxuICAgID48L2V4ZWN1dGlvbi1kYXRhLWNvbXBvbmVudD5cbiAgJ31dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmlTfV19KSx7Zm9jdXNlZEV4ZWN1dGlvbkluZGV4Olt7dHlwZTpSX31dfSk7Y29uc3QgcFE9ZnVuY3Rpb24odCxlLG4pe3JldHVyblt0LGUsbl19O2Z1bmN0aW9uIG1RKHQsZSl7aWYoMSZ0KXtjb25zdCB0PXdmKCk7Q2YoMCwiZGl2IiwxNCksUmYoImNsaWNrIiwoZnVuY3Rpb24gZSgpe2NvbnN0IG49UGkodCkuaW5kZXg7cmV0dXJuIHpmKDIpLm9uRXhlY3V0aW9uRGlnZXN0Q2xpY2tlZC5lbWl0KG4pfSkpLENmKDEsImRpdiIsMTUpLFB1KDIpLE1mKCksTWYoKX1pZigyJnQpe2NvbnN0IHQ9ZS4kaW1wbGljaXQsbj1lLmluZGV4LG89emYoMik7RGMoMSksTGYoInRpdGxlIix0Lm9wX3R5cGUpLGJmKCJuZ0NsYXNzIixyeSgzLHBRLHQuaXNfZ3JhcGg/ImZ1bmMtZ3JhcGgtZXhlY3V0aW9uIjoiIixuPT09by5mb2N1c2VkRXhlY3V0aW9uRGlzcGxheUluZGV4PyJmb2N1c2VkIjoiIixvLmRpc3BsYXlGb2N1c2VkQWxlcnRUeXBlc1tuXXx8IiIpKSxEYygxKSxrdSgiICIsdC5zaG9ydF9vcF90eXBlLCIgIil9fWZ1bmN0aW9uIGZRKHQsZSl7aWYoMSZ0JiYoQ2YoMCwiZGl2IiwxMiksSG0oMSxtUSwzLDcsImRpdiIsMTMpLE1mKCkpLDImdCl7Y29uc3QgdD16ZigpO0RjKDEpLGJmKCJuZ0Zvck9mIix0LmRpc3BsYXlFeGVjdXRpb25EaWdlc3RzKX19ZnVuY3Rpb24gdVEodCxlKXtpZigxJnQmJih4ZigwKSx2ZigxLCJ0Zi1kZWJ1Z2dlci12Mi1leGVjdXRpb24tZGF0YSIsMTYpLE9mKCkpLDImdCl7Y29uc3QgdD16ZigpO0RjKDEpLGJmKCJmb2N1c2VkRXhlY3V0aW9uSW5kZXgiLHQuZm9jdXNlZEV4ZWN1dGlvbkluZGV4KX19Y2xhc3MgZ1F7Y29uc3RydWN0b3IoKXt0aGlzLmFjdGl2ZVJ1bklkPW51bGwsdGhpcy5sb2FkaW5nTnVtRXhlY3V0aW9ucz0hMSx0aGlzLm51bUV4ZWN1dGlvbnM9MCx0aGlzLnNjcm9sbEJlZ2luSW5kZXg9MCx0aGlzLnNjcm9sbEJlZ2luSW5kZXhVcHBlckxpbWl0PTAsdGhpcy5wYWdlU2l6ZT0wLHRoaXMuZGlzcGxheUNvdW50PTAsdGhpcy5kaXNwbGF5RXhlY3V0aW9uRGlnZXN0cz1bXSx0aGlzLmRpc3BsYXlGb2N1c2VkQWxlcnRUeXBlcz1bXSx0aGlzLmZvY3VzZWRFeGVjdXRpb25JbmRleD1udWxsLHRoaXMuZm9jdXNlZEV4ZWN1dGlvbkRpc3BsYXlJbmRleD1udWxsLHRoaXMuZm9jdXNlZEV4ZWN1dGlvbkRhdGE9bnVsbCx0aGlzLm9uTmF2aWdhdGVMZWZ0PW5ldyBTeSx0aGlzLm9uTmF2aWdhdGVSaWdodD1uZXcgU3ksdGhpcy5vbkV4ZWN1dGlvbkRpZ2VzdENsaWNrZWQ9bmV3IFN5LHRoaXMub25TbGlkZXJDaGFuZ2U9bmV3IFN5fX1nUS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8Z1EpfSxnUS7JtWNtcD1zbyh7dHlwZTpnUSxzZWxlY3RvcnM6W1sidGltZWxpbmUtY29tcG9uZW50Il1dLGlucHV0czp7YWN0aXZlUnVuSWQ6ImFjdGl2ZVJ1bklkIixsb2FkaW5nTnVtRXhlY3V0aW9uczoibG9hZGluZ051bUV4ZWN1dGlvbnMiLG51bUV4ZWN1dGlvbnM6Im51bUV4ZWN1dGlvbnMiLHNjcm9sbEJlZ2luSW5kZXg6InNjcm9sbEJlZ2luSW5kZXgiLHNjcm9sbEJlZ2luSW5kZXhVcHBlckxpbWl0OiJzY3JvbGxCZWdpbkluZGV4VXBwZXJMaW1pdCIscGFnZVNpemU6InBhZ2VTaXplIixkaXNwbGF5Q291bnQ6ImRpc3BsYXlDb3VudCIsZGlzcGxheUV4ZWN1dGlvbkRpZ2VzdHM6ImRpc3BsYXlFeGVjdXRpb25EaWdlc3RzIixkaXNwbGF5Rm9jdXNlZEFsZXJ0VHlwZXM6ImRpc3BsYXlGb2N1c2VkQWxlcnRUeXBlcyIsZm9jdXNlZEV4ZWN1dGlvbkluZGV4OiJmb2N1c2VkRXhlY3V0aW9uSW5kZXgiLGZvY3VzZWRFeGVjdXRpb25EaXNwbGF5SW5kZXg6ImZvY3VzZWRFeGVjdXRpb25EaXNwbGF5SW5kZXgiLGZvY3VzZWRFeGVjdXRpb25EYXRhOiJmb2N1c2VkRXhlY3V0aW9uRGF0YSJ9LG91dHB1dHM6e29uTmF2aWdhdGVMZWZ0OiJvbk5hdmlnYXRlTGVmdCIsb25OYXZpZ2F0ZVJpZ2h0OiJvbk5hdmlnYXRlUmlnaHQiLG9uRXhlY3V0aW9uRGlnZXN0Q2xpY2tlZDoib25FeGVjdXRpb25EaWdlc3RDbGlja2VkIixvblNsaWRlckNoYW5nZToib25TbGlkZXJDaGFuZ2UifSxkZWNsczo5LHZhcnM6NCxjb25zdHM6W1sxLCJ0aW1lbGluZS10aXRsZSJdLFsxLCJleGVjdXRpb24tY291bnQiXSxbMSwidG9wLWxldmVsLWV4ZWN1dGlvbnMiXSxbImNsYXNzIiwibmF2aWdhdGlvbi1zZWN0aW9uIiw0LCJuZ0lmIl0sWyJjbGFzcyIsImV4ZWN1dGlvbi10aW1lbGluZSIsNCwibmdJZiJdLFs0LCJuZ0lmIl0sWzEsIm5hdmlnYXRpb24tc2VjdGlvbiJdLFsibWF0LWJ1dHRvbiIsIiIsMSwibmF2aWdhdGlvbi1idXR0b24tbGVmdCIsMywiY2xpY2siXSxbMSwibmF2aWdhdGlvbi1wb3NpdGlvbi1pbmZvIl0sWyJtYXQtYnV0dG9uIiwiIiwxLCJuYXZpZ2F0aW9uLWJ1dHRvbi1yaWdodCIsMywiY2xpY2siXSxbImNsYXNzIiwidGltZWxpbmUtc2xpZGVyIiwic3RlcCIsIjEiLDMsIm1pbiIsIm1heCIsInZhbHVlIiwiaW5wdXQiLDQsIm5nSWYiXSxbInN0ZXAiLCIxIiwxLCJ0aW1lbGluZS1zbGlkZXIiLDMsIm1pbiIsIm1heCIsInZhbHVlIiwiaW5wdXQiXSxbMSwiZXhlY3V0aW9uLXRpbWVsaW5lIl0sWzMsImNsaWNrIiw0LCJuZ0ZvciIsIm5nRm9yT2YiXSxbMywiY2xpY2siXSxbMSwiZXhlY3V0aW9uLWRpZ2VzdCIsMywibmdDbGFzcyIsInRpdGxlIl0sWzMsImZvY3VzZWRFeGVjdXRpb25JbmRleCJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoQ2YoMCwiZGl2IiksQ2YoMSwiZGl2IiwwKSxQdSgyLCIgUHl0aG9uIEV4ZWN1dGlvbiBUaW1lbGluZSAiKSxDZigzLCJzcGFuIiwxKSxQdSg0KSxNZigpLE1mKCksQ2YoNSwiZGl2IiwyKSxIbSg2LGRRLDgsNCwiZGl2IiwzKSxIbSg3LGZRLDIsMSwiZGl2Iiw0KSxIbSg4LHVRLDIsMSwibmctY29udGFpbmVyIiw1KSxNZigpLE1mKCkpLDImZSYmKERjKDQpLGt1KCIgKCIsbi5udW1FeGVjdXRpb25zLCIpICIpLERjKDIpLGJmKCJuZ0lmIixuLm51bUV4ZWN1dGlvbnMpLERjKDEpLGJmKCJuZ0lmIixuLm51bUV4ZWN1dGlvbnMpLERjKDEpLGJmKCJuZ0lmIixudWxsIT09bi5hY3RpdmVSdW5JZCYmbnVsbCE9PW4uZm9jdXNlZEV4ZWN1dGlvbkluZGV4KSl9LGRpcmVjdGl2ZXM6W1B2LE5MLHdKLHh2LEN2LGxRXSxzdHlsZXM6WyIuZXhlY3V0aW9uLWRpZ2VzdFtfbmdjb250ZW50LSVDT01QJV0ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTNlNWU4O1xuICBib3JkZXI6IDFweCBzb2xpZCAjYzBjMGMwO1xuICBjb2xvcjogIzQyNTA2NjtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBmb250LXNpemU6IDEwcHg7XG4gIGhlaWdodDogMTVweDtcbiAgcGFkZGluZzogMXB4O1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gIHdpZHRoOiAxMnB4O1xufVxuXG4uZXhlY3V0aW9uLWRpZ2VzdC5mdW5jLWdyYXBoLWV4ZWN1dGlvbltfbmdjb250ZW50LSVDT01QJV0ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYzdkYmY1O1xuICBjb2xvcjogIzRlNTY2NDtcbiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG59XG5cbi5leGVjdXRpb24tZGlnZXN0LmZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZDRiMztcbiAgYm9yZGVyOiAxcHggc29saWQgIzAwMDtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG59XG5cbi5leGVjdXRpb24tZGlnZXN0LkluZk5hbkFsZXJ0W19uZ2NvbnRlbnQtJUNPTVAlXSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNlNTI1OTI7XG4gIGNvbG9yOiAjZmZmO1xufVxuXG5cbi5leGVjdXRpb24tZGlnZXN0W19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlciB7XG4gIGJvcmRlcjogMXB4IHNvbGlkICMwMDA7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xufVxuXG4uZXhlY3V0aW9uLXRpbWVsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIG92ZXJmbG93LXg6IGhpZGRlbjtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgd2lkdGg6IDEwMCU7XG4gIG1hcmdpbi10b3A6IDVweDtcbiAgbWFyZ2luLWJvdHRvbTogNXB4O1xufVxuXG4udGltZWxpbmUtc2xpZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgaGVpZ2h0OiA0OHB4O1xuICBsZWZ0OiAzNDBweDsgXG4gIHBhZGRpbmc6IDA7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgcmlnaHQ6IDQwcHg7XG59XG5cbiAgLnRpbWVsaW5lLXNsaWRlciAubWF0LXNsaWRlci10aHVtYiB7XG4gIGJvcmRlci1yYWRpdXM6IDVweDtcbiAgcmlnaHQ6IC00MHB4O1xuICB3aWR0aDogODBweDtcbn1cblxuXG4ubmF2aWdhdGlvbi1wb3NpdGlvbi1pbmZvW19uZ2NvbnRlbnQtJUNPTVAlXSB7XG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICBmb250LXNpemU6IDE0cHg7XG4gIGxpbmUtaGVpZ2h0OiBub3JtYWw7XG4gIG1heC13aWR0aDogMjAwcHg7XG4gIHBhZGRpbmctbGVmdDogMTBweDtcbiAgcGFkZGluZy1yaWdodDogMTBweDtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xufVxuXG4ubmF2aWdhdGlvbi1zZWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSB7XG4gIGhlaWdodDogNDhweDtcbiAgbGluZS1oZWlnaHQ6IDQ4cHg7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgd2lkdGg6IDEwMCU7XG59Il0sY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKGdRLFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6InRpbWVsaW5lLWNvbXBvbmVudCIsdGVtcGxhdGVVcmw6Ii4vdGltZWxpbmVfY29tcG9uZW50Lm5nLmh0bWwiLHN0eWxlVXJsczpbIi4vdGltZWxpbmVfY29tcG9uZW50LmNzcyJdLGNoYW5nZURldGVjdGlvbjpqbi5PblB1c2h9XX1dLG51bGwse2FjdGl2ZVJ1bklkOlt7dHlwZTpSX31dLGxvYWRpbmdOdW1FeGVjdXRpb25zOlt7dHlwZTpSX31dLG51bUV4ZWN1dGlvbnM6W3t0eXBlOlJffV0sc2Nyb2xsQmVnaW5JbmRleDpbe3R5cGU6Ul99XSxzY3JvbGxCZWdpbkluZGV4VXBwZXJMaW1pdDpbe3R5cGU6Ul99XSxwYWdlU2l6ZTpbe3R5cGU6Ul99XSxkaXNwbGF5Q291bnQ6W3t0eXBlOlJffV0sZGlzcGxheUV4ZWN1dGlvbkRpZ2VzdHM6W3t0eXBlOlJffV0sZGlzcGxheUZvY3VzZWRBbGVydFR5cGVzOlt7dHlwZTpSX31dLGZvY3VzZWRFeGVjdXRpb25JbmRleDpbe3R5cGU6Ul99XSxmb2N1c2VkRXhlY3V0aW9uRGlzcGxheUluZGV4Olt7dHlwZTpSX31dLGZvY3VzZWRFeGVjdXRpb25EYXRhOlt7dHlwZTpSX31dLG9uTmF2aWdhdGVMZWZ0Olt7dHlwZTpFX31dLG9uTmF2aWdhdGVSaWdodDpbe3R5cGU6RV99XSxvbkV4ZWN1dGlvbkRpZ2VzdENsaWNrZWQ6W3t0eXBlOkVffV0sb25TbGlkZXJDaGFuZ2U6W3t0eXBlOkVffV19KTtjb25zdCBoUT1bIl9fZm9yd2FyZF8iLCJfX2JhY2t3YXJkXyIsIl9faW5mZXJlbmNlXyJdO2NsYXNzIGJRe2NvbnN0cnVjdG9yKHQpe3RoaXMuc3RvcmU9dCx0aGlzLmFjdGl2ZVJ1bklkJD10aGlzLnN0b3JlLnBpcGUoclModkspKSx0aGlzLmxvYWRpbmdOdW1FeGVjdXRpb25zJD10aGlzLnN0b3JlLnBpcGUoclMoYlMoQUssKHQ9PnQuc3RhdGU9PVVFLkxPQURJTkcpKSkpLHRoaXMuc2Nyb2xsQmVnaW5JbmRleCQ9dGhpcy5zdG9yZS5waXBlKHJTKHpLKSksdGhpcy5zY3JvbGxCZWdpbkluZGV4VXBwZXJMaW1pdCQ9dGhpcy5zdG9yZS5waXBlKHJTKGJTKE5LLEhLLCgodCxlKT0+TWF0aC5tYXgoMCx0LWUpKSkpKSx0aGlzLnBhZ2VTaXplJD10aGlzLnN0b3JlLnBpcGUoclMoSUspKSx0aGlzLmRpc3BsYXlDb3VudCQ9dGhpcy5zdG9yZS5waXBlKHJTKEhLKSksdGhpcy5kaXNwbGF5RXhlY3V0aW9uRGlnZXN0cyQ9dGhpcy5zdG9yZS5waXBlKHJTKGJTKEZLLCh0PT50Lm1hcCgodD0+KGZ1bmN0aW9uIGUodCxuPTEpe2lmKCF0KXJldHVybntvcF90eXBlOiIoTi9BKSIsc2hvcnRfb3BfdHlwZToiLi4iLGlzX2dyYXBoOiExfTtjb25zdCBvPWhRLmZpbHRlcigoZT0+dC5vcF90eXBlLnN0YXJ0c1dpdGgoZSkpKTtpZihvLmxlbmd0aCl7Y29uc3QgZT10Lm9wX3R5cGUuc2xpY2Uob1swXS5sZW5ndGgpO3JldHVybntvcF90eXBlOnQub3BfdHlwZSxzaG9ydF9vcF90eXBlOmUuc2xpY2UoMCxuKSxpc19ncmFwaDohMH19cmV0dXJue29wX3R5cGU6dC5vcF90eXBlLHNob3J0X29wX3R5cGU6dC5vcF90eXBlLnNsaWNlKDAsbiksaXNfZ3JhcGg6ITF9fSkodCkpKSkpKSksdGhpcy5kaXNwbGF5Rm9jdXNlZEFsZXJ0VHlwZXMkPXRoaXMuc3RvcmUucGlwZShyUyh0SikpLHRoaXMuZm9jdXNlZEV4ZWN1dGlvbkluZGV4JD10aGlzLnN0b3JlLnBpcGUoclMobkopKSx0aGlzLmZvY3VzZWRFeGVjdXRpb25EaXNwbGF5SW5kZXgkPXRoaXMuc3RvcmUucGlwZShyUyhvSikpLHRoaXMubnVtRXhlY3V0aW9ucyQ9dGhpcy5zdG9yZS5waXBlKHJTKE5LKSl9b25OYXZpZ2F0ZUxlZnQoKXt0aGlzLnN0b3JlLmRpc3BhdGNoKEJYKCkpfW9uTmF2aWdhdGVSaWdodCgpe3RoaXMuc3RvcmUuZGlzcGF0Y2goVlgoKSl9b25FeGVjdXRpb25EaWdlc3RDbGlja2VkKHQpe3RoaXMuc3RvcmUuZGlzcGF0Y2goVVgoe2Rpc3BsYXlJbmRleDp0fSkpfW9uU2xpZGVyQ2hhbmdlKHQpe3RoaXMuc3RvcmUuZGlzcGF0Y2goalgoe2luZGV4OnR9KSl9fWZ1bmN0aW9uIHlRKHQsZSl7MSZ0JiYoQ2YoMCwic3BhbiIpLFB1KDEsIiBPdXRwdXQgIiksTWYoKSl9ZnVuY3Rpb24gX1EodCxlKXsxJnQmJihDZigwLCJzcGFuIiksUHUoMSwiIElucHV0ICIpLE1mKCkpfWZ1bmN0aW9uIENRKHQsZSl7aWYoMSZ0JiYoQ2YoMCwiZGl2Iiw2KSxDZigxLCJzcGFuIiw3KSxIbSgyLHlRLDIsMCwic3BhbiIsOCksSG0oMyxfUSwyLDAsInNwYW4iLDgpLE1mKCksUHUoNCksTWYoKSksMiZ0KXtjb25zdCB0PXpmKCk7RGMoMSksYmYoIm5nU3dpdGNoIix0LmtpbmQpLERjKDEpLGJmKCJuZ1N3aXRjaENhc2UiLCJpbnB1dCIpLERjKDEpLGJmKCJuZ1N3aXRjaENhc2UiLCJjb25zdW1lciIpLERjKDEpLGt1KCIgc2xvdDogIix0LnNsb3QsIiAiKX19ZnVuY3Rpb24gTVEodCxlKXtpZigxJnQmJihDZigwLCJkaXYiLDkpLFB1KDEpLE1mKCkpLDImdCl7Y29uc3QgdD16ZigpO0RjKDEpLGt1KCIgIix0Lm9wRGF0YS5vcF90eXBlLCIgIil9fWZ1bmN0aW9uIHZRKHQsZSl7MSZ0JiYoQ2YoMCwic3BhbiIsMTApLFB1KDEsIiAoT3AgaW5mbyB1bmF2YWlsYWJsZS4pICIpLE1mKCkpfWJRLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxiUSkoZ2YoaVMpKX0sYlEuybVjbXA9c28oe3R5cGU6YlEsc2VsZWN0b3JzOltbInRmLWRlYnVnZ2VyLXYyLXRpbWVsaW5lIl1dLGRlY2xzOjEyLHZhcnM6MzMsY29uc3RzOltbMywiYWN0aXZlUnVuSWQiLCJsb2FkaW5nTnVtRXhlY3V0aW9ucyIsIm51bUV4ZWN1dGlvbnMiLCJzY3JvbGxCZWdpbkluZGV4Iiwic2Nyb2xsQmVnaW5JbmRleFVwcGVyTGltaXQiLCJwYWdlU2l6ZSIsImRpc3BsYXlDb3VudCIsImRpc3BsYXlFeGVjdXRpb25EaWdlc3RzIiwiZGlzcGxheUZvY3VzZWRBbGVydFR5cGVzIiwiZm9jdXNlZEV4ZWN1dGlvbkluZGV4IiwiZm9jdXNlZEV4ZWN1dGlvbkRpc3BsYXlJbmRleCIsIm9uTmF2aWdhdGVMZWZ0Iiwib25OYXZpZ2F0ZVJpZ2h0Iiwib25FeGVjdXRpb25EaWdlc3RDbGlja2VkIiwib25TbGlkZXJDaGFuZ2UiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKENmKDAsInRpbWVsaW5lLWNvbXBvbmVudCIsMCksUmYoIm9uTmF2aWdhdGVMZWZ0IiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLm9uTmF2aWdhdGVMZWZ0KCl9KSkoIm9uTmF2aWdhdGVSaWdodCIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5vbk5hdmlnYXRlUmlnaHQoKX0pKSgib25FeGVjdXRpb25EaWdlc3RDbGlja2VkIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5vbkV4ZWN1dGlvbkRpZ2VzdENsaWNrZWQoZSl9KSkoIm9uU2xpZGVyQ2hhbmdlIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5vblNsaWRlckNoYW5nZShlKX0pKSxfeSgxLCJhc3luYyIpLF95KDIsImFzeW5jIiksX3koMywiYXN5bmMiKSxfeSg0LCJhc3luYyIpLF95KDUsImFzeW5jIiksX3koNiwiYXN5bmMiKSxfeSg3LCJhc3luYyIpLF95KDgsImFzeW5jIiksX3koOSwiYXN5bmMiKSxfeSgxMCwiYXN5bmMiKSxfeSgxMSwiYXN5bmMiKSxNZigpKSwyJmUmJmJmKCJhY3RpdmVSdW5JZCIsQ3koMSwxMSxuLmFjdGl2ZVJ1bklkJCkpKCJsb2FkaW5nTnVtRXhlY3V0aW9ucyIsQ3koMiwxMyxuLmxvYWRpbmdOdW1FeGVjdXRpb25zJCkpKCJudW1FeGVjdXRpb25zIixDeSgzLDE1LG4ubnVtRXhlY3V0aW9ucyQpKSgic2Nyb2xsQmVnaW5JbmRleCIsQ3koNCwxNyxuLnNjcm9sbEJlZ2luSW5kZXgkKSkoInNjcm9sbEJlZ2luSW5kZXhVcHBlckxpbWl0IixDeSg1LDE5LG4uc2Nyb2xsQmVnaW5JbmRleFVwcGVyTGltaXQkKSkoInBhZ2VTaXplIixDeSg2LDIxLG4ucGFnZVNpemUkKSkoImRpc3BsYXlDb3VudCIsQ3koNywyMyxuLmRpc3BsYXlDb3VudCQpKSgiZGlzcGxheUV4ZWN1dGlvbkRpZ2VzdHMiLEN5KDgsMjUsbi5kaXNwbGF5RXhlY3V0aW9uRGlnZXN0cyQpKSgiZGlzcGxheUZvY3VzZWRBbGVydFR5cGVzIixDeSg5LDI3LG4uZGlzcGxheUZvY3VzZWRBbGVydFR5cGVzJCkpKCJmb2N1c2VkRXhlY3V0aW9uSW5kZXgiLEN5KDEwLDI5LG4uZm9jdXNlZEV4ZWN1dGlvbkluZGV4JCkpKCJmb2N1c2VkRXhlY3V0aW9uRGlzcGxheUluZGV4IixDeSgxMSwzMSxuLmZvY3VzZWRFeGVjdXRpb25EaXNwbGF5SW5kZXgkKSl9LGRpcmVjdGl2ZXM6W2dRXSxwaXBlczpbVnZdLGVuY2Fwc3VsYXRpb246MixjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoYlEsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoidGYtZGVidWdnZXItdjItdGltZWxpbmUiLHRlbXBsYXRlOidcbiAgICA8dGltZWxpbmUtY29tcG9uZW50XG4gICAgICBbYWN0aXZlUnVuSWRdPSJhY3RpdmVSdW5JZCQgfCBhc3luYyJcbiAgICAgIFtsb2FkaW5nTnVtRXhlY3V0aW9uc109ImxvYWRpbmdOdW1FeGVjdXRpb25zJCB8IGFzeW5jIlxuICAgICAgW251bUV4ZWN1dGlvbnNdPSJudW1FeGVjdXRpb25zJCB8IGFzeW5jIlxuICAgICAgW3Njcm9sbEJlZ2luSW5kZXhdPSJzY3JvbGxCZWdpbkluZGV4JCB8IGFzeW5jIlxuICAgICAgW3Njcm9sbEJlZ2luSW5kZXhVcHBlckxpbWl0XT0ic2Nyb2xsQmVnaW5JbmRleFVwcGVyTGltaXQkIHwgYXN5bmMiXG4gICAgICBbcGFnZVNpemVdPSJwYWdlU2l6ZSQgfCBhc3luYyJcbiAgICAgIFtkaXNwbGF5Q291bnRdPSJkaXNwbGF5Q291bnQkIHwgYXN5bmMiXG4gICAgICBbZGlzcGxheUV4ZWN1dGlvbkRpZ2VzdHNdPSJkaXNwbGF5RXhlY3V0aW9uRGlnZXN0cyQgfCBhc3luYyJcbiAgICAgIFtkaXNwbGF5Rm9jdXNlZEFsZXJ0VHlwZXNdPSJkaXNwbGF5Rm9jdXNlZEFsZXJ0VHlwZXMkIHwgYXN5bmMiXG4gICAgICBbZm9jdXNlZEV4ZWN1dGlvbkluZGV4XT0iZm9jdXNlZEV4ZWN1dGlvbkluZGV4JCB8IGFzeW5jIlxuICAgICAgW2ZvY3VzZWRFeGVjdXRpb25EaXNwbGF5SW5kZXhdPSJmb2N1c2VkRXhlY3V0aW9uRGlzcGxheUluZGV4JCB8IGFzeW5jIlxuICAgICAgKG9uTmF2aWdhdGVMZWZ0KT0ib25OYXZpZ2F0ZUxlZnQoKSJcbiAgICAgIChvbk5hdmlnYXRlUmlnaHQpPSJvbk5hdmlnYXRlUmlnaHQoKSJcbiAgICAgIChvbkV4ZWN1dGlvbkRpZ2VzdENsaWNrZWQpPSJvbkV4ZWN1dGlvbkRpZ2VzdENsaWNrZWQoJGV2ZW50KSJcbiAgICAgIChvblNsaWRlckNoYW5nZSk9Im9uU2xpZGVyQ2hhbmdlKCRldmVudCkiXG4gICAgPjwvdGltZWxpbmUtY29tcG9uZW50PlxuICAnLGNoYW5nZURldGVjdGlvbjpqbi5PblB1c2h9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTppU31dfSksbnVsbCk7Y29uc3QgeFE9ZnVuY3Rpb24odCl7cmV0dXJuW3RdfTtjbGFzcyBPUXtjb25zdHJ1Y3Rvcigpe3RoaXMub25PcE5hbWVDbGljaz1uZXcgU3l9fWZ1bmN0aW9uIFBRKHQsZSl7aWYoMSZ0KXtjb25zdCB0PXdmKCk7Q2YoMCwiZGl2IiwxMyksQ2YoMSwiZGl2IiwxNCksUHUoMiksTWYoKSxDZigzLCJncmFwaC1vcCIsMTUpLFJmKCJvbk9wTmFtZUNsaWNrIiwoZnVuY3Rpb24gZShuKXtQaSh0KTtjb25zdCBvPXpmKDMpO3JldHVybiBvLm9uR3JhcGhPcE5hdmlnYXRlLmVtaXQoe29wX25hbWU6bi5vcF9uYW1lLGdyYXBoX2lkOm8uZ3JhcGhJZH0pfSkpLE1mKCksTWYoKX1pZigyJnQpe2NvbnN0IHQ9ZS4kaW1wbGljaXQsbj1lLmluZGV4O0RjKDIpLGt1KCJJbnB1dCBzbG90ICIsbiwiOiIpLERjKDEpLGJmKCJraW5kIiwiaW5wdXQiKSgib3BOYW1lIix0Lm9wX25hbWUpKCJzbG90Iix0Lm91dHB1dF9zbG90KSgib3BEYXRhIix0LmRhdGEpfX1mdW5jdGlvbiB3USh0LGUpe2lmKDEmdCYmKENmKDAsImRpdiIsMTEpLENmKDEsImRpdiIpLEhtKDIsUFEsNCw1LCJkaXYiLDEyKSxNZigpLE1mKCkpLDImdCl7Y29uc3QgdD16ZigyKTtEYygyKSxiZigibmdGb3JPZiIsdC5pbnB1dE9wcyl9fWZ1bmN0aW9uIGtRKHQsZSl7MSZ0JiYoQ2YoMCwiZGl2IiwxNiksUHUoMSwiIChUaGlzIG9wIGhhcyBubyBpbnB1dCB0ZW5zb3IuKSAiKSxNZigpKX1mdW5jdGlvbiBTUSh0LGUpe2lmKDEmdCl7Y29uc3QgdD13ZigpO0NmKDAsImRpdiIsMjMpLENmKDEsImdyYXBoLW9wIiwxNSksUmYoIm9uT3BOYW1lQ2xpY2siLChmdW5jdGlvbiBlKG4pe1BpKHQpO2NvbnN0IG89emYoNCk7cmV0dXJuIG8ub25HcmFwaE9wTmF2aWdhdGUuZW1pdCh7b3BfbmFtZTpuLm9wX25hbWUsZ3JhcGhfaWQ6by5ncmFwaElkfSl9KSksTWYoKSxNZigpfWlmKDImdCl7Y29uc3QgdD1lLiRpbXBsaWNpdDtEYygxKSxiZigia2luZCIsImNvbnN1bWVyIikoIm9wTmFtZSIsdC5vcF9uYW1lKSgic2xvdCIsdC5pbnB1dF9zbG90KSgib3BEYXRhIix0LmRhdGEpfX1mdW5jdGlvbiBEUSh0LGUpe2lmKDEmdCYmKENmKDAsImRpdiIsMTkpLENmKDEsImRpdiIsMjApLFB1KDIpLENmKDMsInNwYW4iKSxSaCg0LDIxKSxNZigpLFB1KDUsIikgIiksTWYoKSxIbSg2LFNRLDIsNCwiZGl2IiwyMiksTWYoKSksMiZ0KXtjb25zdCB0PWUuJGltcGxpY2l0LG49ZS5pbmRleDtEYygyKSxTdSgiIE91dHB1dCBzbG90ICIsbiwiOiAoIix0Lmxlbmd0aCwiICIpLERjKDIpLEFoKHQubGVuZ3RoKSxUaCg0KSxEYygyKSxiZigibmdGb3JPZiIsdCl9fWZ1bmN0aW9uIFJRKHQsZSl7aWYoMSZ0JiYoQ2YoMCwiZGl2IiwxNyksQ2YoMSwiZGl2IiksSG0oMixEUSw3LDQsImRpdiIsMTgpLE1mKCksTWYoKSksMiZ0KXtjb25zdCB0PXpmKDIpO0RjKDIpLGJmKCJuZ0Zvck9mIix0LmNvbnN1bWVyT3BzKX19ZnVuY3Rpb24gRVEodCxlKXtpZigxJnQmJihDZigwLCJkaXYiLDI0KSxQdSgxKSxDZigyLCJzcGFuIiksUmgoMywyNSksTWYoKSxQdSg0LCIgYW5kIG5vIGNvbnN1bWVyLikgIiksTWYoKSksMiZ0KXtjb25zdCB0PXpmKDIpO0RjKDEpLGt1KCIgKFRoaXMgb3AgaGFzICIsdC5vcEluZm8uY29uc3VtZXJzLmxlbmd0aCwiIG91dHB1dCAiKSxEYygyKSxBaCh0Lm9wSW5mby5jb25zdW1lcnMubGVuZ3RoKSxUaCgzKX19ZnVuY3Rpb24gQVEodCxlKXtpZigxJnQpe2NvbnN0IHQ9d2YoKTtDZigwLCJkaXYiKSxIbSgxLHdRLDMsMSwiZGl2Iiw0KSxIbSgyLGtRLDIsMCwibmctdGVtcGxhdGUiLG51bGwsNSxxeSksQ2YoNCwiZGl2Iiw2KSxDZig1LCJkaXYiLDcpLFB1KDYsIk9wOiIpLE1mKCksQ2YoNywiZ3JhcGgtb3AiLDgpLFJmKCJvbk9wTmFtZUNsaWNrIiwoZnVuY3Rpb24gZShuKXtQaSh0KTtjb25zdCBvPXpmKCk7cmV0dXJuIG8ub25HcmFwaE9wTmF2aWdhdGUuZW1pdCh7b3BfbmFtZTpuLm9wX25hbWUsZ3JhcGhfaWQ6by5ncmFwaElkfSl9KSksTWYoKSxNZigpLEhtKDgsUlEsMywxLCJkaXYiLDkpLEhtKDksRVEsNSwyLCJuZy10ZW1wbGF0ZSIsbnVsbCwxMCxxeSksTWYoKX1pZigyJnQpe2NvbnN0IHQ9Rm0oMyksZT1GbSgxMCksbj16ZigpO0RjKDEpLGJmKCJuZ0lmIixuLmlucHV0T3BzLmxlbmd0aD4wKSgibmdJZkVsc2UiLHQpLERjKDYpLGJmKCJraW5kIiwic2VsZiIpKCJvcE5hbWUiLG4ub3BJbmZvLm9wX25hbWUpKCJvcERhdGEiLG4ub3BJbmZvKSxEYygxKSxiZigibmdJZiIsbi50b3RhbE51bUNvbnN1bWVycz4wKSgibmdJZkVsc2UiLGUpfX1mdW5jdGlvbiBUUSh0LGUpezEmdCYmKENmKDAsInNwYW4iLDI2KSxQdSgxLCIgKE9wIGluZm8gdW5hdmFpbGFibGUuKSAiKSxNZigpKX1mdW5jdGlvbiBOUSh0LGUpezEmdCYmKENmKDAsImRpdiIsMjcpLFB1KDEsIiBObyBncmFwaCBvcCBzZWxlY3RlZC4gQ2xpY2sgYSB0ZW5zb3IgbmFtZSBpbiB0aGUgR3JhcGggRXhlY3V0aW9ucyB0YWJsZSB0byB2aWV3IHRoZSBuZWlnaGJvcmhvb2Qgb2YgdGhlIHRlbnNvcidzIG9wIGluIGl0cyBncmFwaC4gIiksTWYoKSl9T1EuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fE9RKX0sT1EuybVjbXA9c28oe3R5cGU6T1Esc2VsZWN0b3JzOltbImdyYXBoLW9wIl1dLGlucHV0czp7a2luZDoia2luZCIsb3BOYW1lOiJvcE5hbWUiLHNsb3Q6InNsb3QiLG9wRGF0YToib3BEYXRhIn0sb3V0cHV0czp7b25PcE5hbWVDbGljazoib25PcE5hbWVDbGljayJ9LGRlY2xzOjksdmFyczo3LGNvbnN0czpbWzEsIm9wLWNvbnRhaW5lciJdLFsxLCJpbnB1dC10ZW5zb3ItbmFtZSJdLFsxLCJvcC1uYW1lIiwzLCJuZ0NsYXNzIiwiY2xpY2siXSxbImNsYXNzIiwic2xvdCIsNCwibmdJZiJdLFsiY2xhc3MiLCJvcC10eXBlIiw0LCJuZ0lmIiwibmdJZkVsc2UiXSxbIm9wSW5mb01pc3NpbmciLCIiXSxbMSwic2xvdCJdLFszLCJuZ1N3aXRjaCJdLFs0LCJuZ1N3aXRjaENhc2UiXSxbMSwib3AtdHlwZSJdLFsxLCJvcC1pbmZvLW1pc3NpbmciXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pe2lmKDEmZSYmKENmKDAsImJ1dHRvbiIsMCksQ2YoMSwiZGl2IiwxKSxDZigyLCJidXR0b24iLDIpLFJmKCJjbGljayIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5vbk9wTmFtZUNsaWNrLmVtaXQoe29wX25hbWU6bi5vcE5hbWV9KX0pKSxDZigzLCJzcGFuIiksUHUoNCksTWYoKSxNZigpLEhtKDUsQ1EsNSw0LCJkaXYiLDMpLE1mKCksSG0oNixNUSwyLDEsImRpdiIsNCksSG0oNyx2USwyLDAsIm5nLXRlbXBsYXRlIixudWxsLDUscXkpLE1mKCkpLDImZSl7Y29uc3QgdD1GbSg4KTtEYygyKSxiZigibmdDbGFzcyIsaXkoNSx4USwic2VsZiI9PT1uLmtpbmQ/InNlbGYtb3AtbmFtZSI6IiIpKSxEYygyKSx3dShuLm9wTmFtZSksRGMoMSksYmYoIm5nSWYiLCJzZWxmIiE9PW4ua2luZCksRGMoMSksYmYoIm5nSWYiLHZvaWQgMCE9PW4ub3BEYXRhKSgibmdJZkVsc2UiLHQpfX0sZGlyZWN0aXZlczpbQ3YsUHYsRHYsUnZdLHN0eWxlczpbJy5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjlweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHh9Lm1hdC1oMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaGVhZGxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDI0cHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTVweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWg2W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1ib2R5LXN0cm9uZ1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYXJkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FyZC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MjRweH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNhbGVuZGFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZGlhbG9nLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVlbSAwO2JvcmRlci10b3A6Ljg0Mzc1ZW0gc29saWQgdHJhbnNwYXJlbnR9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17dG9wOi0wLjg0Mzc1ZW07cGFkZGluZy10b3A6Ljg0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6NzUlO21hcmdpbi10b3A6LjY2NjY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS43OTE2NjY2NjY3ZW0pfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjQzNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDJweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIzZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4yODEyNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LjU0MTY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS42NjY2NjY2NjY3ZW0pfUBtZWRpYSBwcmludHsubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjJlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjFlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyZW0pIHNjYWxlKDAuNzUpfX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouMjVlbSAwIC43NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjA5Mzc1ZW07bWFyZ2luLXRvcDotMC41ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoxZW0gMCAxZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuODQzNzVlbTttYXJnaW4tdG9wOi0wLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMiksIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fWlucHV0Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi0wLjA2MjVlbX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHh9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtfS5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1zdGVwLXN1Yi1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6bm9ybWFsfS5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1zdGVwLWxhYmVsLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10YWItZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MH0ubWF0LXRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTBweDtwYWRkaW5nLXRvcDo2cHg7cGFkZGluZy1ib3R0b206NnB4fS5tYXQtdG9vbHRpcC1oYW5kc2V0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4fS5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtc2ltcGxlLXNuYWNrYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHh9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoxO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjE0cHh9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV06bm90KDplbXB0eSl7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9Lm1hdC1yaXBwbGUubWF0LXJpcHBsZS11bmJvdW5kZWRbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OnZpc2libGV9Lm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJhZGl1czo1MCU7cG9pbnRlci1ldmVudHM6bm9uZTt0cmFuc2l0aW9uOm9wYWNpdHksdHJhbnNmb3JtIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTt0cmFuc2Zvcm06c2NhbGUoMCl9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9LmNkay12aXN1YWxseS1oaWRkZW5bX25nY29udGVudC0lQ09NUCVde2JvcmRlcjowO2NsaXA6cmVjdCgwIDAgMCAwKTtoZWlnaHQ6MXB4O21hcmdpbjotMXB4O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4O3doaXRlLXNwYWNlOm5vd3JhcDtvdXRsaW5lOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0sIC5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cG9pbnRlci1ldmVudHM6bm9uZTt0b3A6MDtsZWZ0OjA7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV06ZW1wdHl7ZGlzcGxheTpub25lfS5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktcGFuZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6YXV0bztib3gtc2l6aW5nOmJvcmRlci1ib3g7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDttYXgtd2lkdGg6MTAwJTttYXgtaGVpZ2h0OjEwMCV9LmNkay1vdmVybGF5LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDt6LWluZGV4OjEwMDA7cG9pbnRlci1ldmVudHM6YXV0bzstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnQ7dHJhbnNpdGlvbjpvcGFjaXR5IDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpO29wYWNpdHk6MH0uY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eToxfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6LjZ9LmNkay1vdmVybGF5LWRhcmstYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMzIpfS5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV0sIC5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWNvbm5lY3RlZC1wb3NpdGlvbi1ib3VuZGluZy1ib3hbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO21pbi13aWR0aDoxcHg7bWluLWhlaWdodDoxcHh9LmNkay1nbG9iYWwtc2Nyb2xsYmxvY2tbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3dpZHRoOjEwMCU7b3ZlcmZsb3cteTpzY3JvbGx9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplW19uZ2NvbnRlbnQtJUNPTVAlXXtyZXNpemU6bm9uZX10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDphdXRvICFpbXBvcnRhbnQ7b3ZlcmZsb3c6aGlkZGVuICFpbXBvcnRhbnR9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZy1maXJlZm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDowICFpbXBvcnRhbnR9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydHt9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmR7fS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGx7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0IDBzIDFtc30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOi13ZWJraXQtYXV0b2ZpbGwpe2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmQgMHMgMW1zfS5tYXQtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LW1kYy1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5vcC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdLCAub3AtbmFtZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6aW5oZXJpdDtiYWNrZ3JvdW5kLWNvbG9yOmluaGVyaXR9Lm9wLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjJweCBzb2xpZCAjZWJlYmViO2JvcmRlci1yYWRpdXM6NHB4O2JveC1zaGFkb3c6MXB4IDNweCAjZWVlO2N1cnNvcjpwb2ludGVyO21hcmdpbjowIDVweCAwIDA7cGFkZGluZzoycHggNnB4O3RleHQtYWxpZ246cmlnaHQ7d2lkdGg6MjAwcHh9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgLm9wLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0sIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5vcC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2JvcmRlcjoycHggc29saWQgIzU1NX1ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICAub3AtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLm9wLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzoxcHggM3B4ICM3NTc1NzV9Lm9wLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXN7b3V0bGluZTowfS5vcC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdOmhvdmVye2JvcmRlcjoycHggc29saWQgI2ZmZDNiMn0ub3AtaW5mby1taXNzaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpncmF5fS5vcC1uYW1lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6bm9uZTtjdXJzb3I6cG9pbnRlcjtkaXNwbGF5OmlubGluZS1ibG9jaztvdmVyZmxvdy13cmFwOmFueXdoZXJlO3BhZGRpbmc6MDt0ZXh0LWFsaWduOnJpZ2h0O3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7d2hpdGUtc3BhY2U6cHJlLXdyYXB9Lm9wLW5hbWVbX25nY29udGVudC0lQ09NUCVdOmZvY3Vze291dGxpbmU6MH0ub3AtdHlwZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZWNlZmYxO2JvcmRlcjoxcHggc29saWQgI2ViZWJlYjtib3JkZXItcmFkaXVzOjRweDtmb250LWZhbWlseToiUm9ib3RvIE1vbm8iLG1vbm9zcGFjZTtmb250LXNpemU6MTBweDtoZWlnaHQ6MTRweDtsaW5lLWhlaWdodDoxNHB4O3BhZGRpbmc6MXB4IDNweDt3aWR0aDptYXgtY29udGVudDtkaXNwbGF5OmlubGluZS1ibG9jazttYXJnaW4tdG9wOjNweH1ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICAub3AtdHlwZVtfbmdjb250ZW50LSVDT01QJV0sIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5vcC10eXBlW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6MXB4IHNvbGlkICM1NTV9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgLm9wLXR5cGVbX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAub3AtdHlwZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojNDU1YTY0fS5zZWxmLW9wLW5hbWVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OmJvbGQ7dGV4dC1kZWNvcmF0aW9uOm5vbmV9LnNsb3RbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgLnNsb3RbX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAuc2xvdFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNyl9J119KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKE9RLFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6ImdyYXBoLW9wIix0ZW1wbGF0ZVVybDoiZ3JhcGhfb3BfY29tcG9uZW50Lm5nLmh0bWwiLHN0eWxlVXJsczpbIi4vZ3JhcGhfb3BfY29tcG9uZW50LmNzcyJdfV19XSxudWxsLHtraW5kOlt7dHlwZTpSX31dLG9wTmFtZTpbe3R5cGU6Ul99XSxzbG90Olt7dHlwZTpSX31dLG9wRGF0YTpbe3R5cGU6Ul99XSxvbk9wTmFtZUNsaWNrOlt7dHlwZTpFX31dfSk7Y2xhc3MgelF7Y29uc3RydWN0b3IoKXt0aGlzLm9uR3JhcGhPcE5hdmlnYXRlPW5ldyBTeX1nZXQgZ3JhcGhJZCgpe3JldHVybiB0aGlzLm9wSW5mby5ncmFwaF9pZHNbdGhpcy5vcEluZm8uZ3JhcGhfaWRzLmxlbmd0aC0xXX1nZXQgdG90YWxOdW1Db25zdW1lcnMoKXtyZXR1cm4gdGhpcy5jb25zdW1lck9wcy5yZWR1Y2UoKCh0LGUpPT50K2UubGVuZ3RoKSwwKX19elEuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHpRKX0selEuybVjbXA9c28oe3R5cGU6elEsc2VsZWN0b3JzOltbImdyYXBoLWNvbXBvbmVudCJdXSxpbnB1dHM6e29wSW5mbzoib3BJbmZvIixpbnB1dE9wczoiaW5wdXRPcHMiLGNvbnN1bWVyT3BzOiJjb25zdW1lck9wcyJ9LG91dHB1dHM6e29uR3JhcGhPcE5hdmlnYXRlOiJvbkdyYXBoT3BOYXZpZ2F0ZSJ9LGRlY2xzOjksdmFyczoyLGNvbnN0czpmdW5jdGlvbigpe2xldCB0LGUsbixvO2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgbmdJMThuQ2xvc3VyZU1vZGUmJm5nSTE4bkNsb3N1cmVNb2RlKXt0PWdvb2cuZ2V0TXNnKCJ7VkFSX1BMVVJBTCwgcGx1cmFsLCA9MCB7Y29uc3VtZXJ9ID0xIHtjb25zdW1lcn0gb3RoZXIge2NvbnN1bWVyc319Iil9ZWxzZSB0PSRsb2NhbGl6ZWA64pCfZmU1NWY5YjE5M2VhMjBhYWU1YjU2MzVlNjhkOTM4NjUwMzg0Nzc0NuKQnzQ5NTUxMzM3NDA4NDEyOTk4NTE6e1ZBUl9QTFVSQUwsIHBsdXJhbCwgPTAge2NvbnN1bWVyfSA9MSB7Y29uc3VtZXJ9IG90aGVyIHtjb25zdW1lcnN9fWA7aWYodD1OaCh0LHtWQVJfUExVUkFMOiLvv70w77+9In0pLCJ1bmRlZmluZWQiIT10eXBlb2YgbmdJMThuQ2xvc3VyZU1vZGUmJm5nSTE4bkNsb3N1cmVNb2RlKXtlPWdvb2cuZ2V0TXNnKCIgeyRpY3V9Iix7aWN1OnR9KX1lbHNlIGU9JGxvY2FsaXplYDrikJ9iYWE0NjBlMmYyYjg1N2UyNjI5MmIyNDZmYzE4YWUwZWE5YjVlNTM34pCfNTU1NjM0MDM0Mzg1MDE2NTUxNjogJHt0fTpJQ1U6YDtpZigidW5kZWZpbmVkIiE9dHlwZW9mIG5nSTE4bkNsb3N1cmVNb2RlJiZuZ0kxOG5DbG9zdXJlTW9kZSl7bj1nb29nLmdldE1zZygie1ZBUl9QTFVSQUwsIHBsdXJhbCwgPTAge3RlbnNvcn0gPTEge3RlbnNvcn0gb3RoZXIge3RlbnNvcnN9fSIpfWVsc2Ugbj0kbG9jYWxpemVgOuKQnzZhYTc1ZjYyN2UwZGMxNjE1MGVmNDQ4NDY0ZTBjODU3YWFhMGRjMTjikJ81MTU2NzEyOTM1MTUwNTg2ODc4OntWQVJfUExVUkFMLCBwbHVyYWwsID0wIHt0ZW5zb3J9ID0xIHt0ZW5zb3J9IG90aGVyIHt0ZW5zb3JzfX1gO2lmKG49Tmgobix7VkFSX1BMVVJBTDoi77+9MO+/vSJ9KSwidW5kZWZpbmVkIiE9dHlwZW9mIG5nSTE4bkNsb3N1cmVNb2RlJiZuZ0kxOG5DbG9zdXJlTW9kZSl7bz1nb29nLmdldE1zZygiIHskaWN1fSIse2ljdTpufSl9ZWxzZSBvPSRsb2NhbGl6ZWA64pCfODkzNDc2YzJjNDIxY2VlNDc2NjNjOTczMmZhNDFhNzUwZDNhNzNkZuKQnzI0NjA2NzA1MzczNTE2MjYzNDogJHtufTpJQ1U6YDtyZXR1cm5bWzEsImdyYXBoLXN0cnVjdHVyZS1jb250YWluZXIiXSxbNCwibmdJZiIsIm5nSWZFbHNlIl0sWyJvcEluZm9NaXNzaW5nIiwiIl0sWyJub09wRm9jdXNlZCIsIiJdLFsiY2xhc3MiLCJpbnB1dHMtY29udGFpbmVyIiw0LCJuZ0lmIiwibmdJZkVsc2UiXSxbIm5vSW5wdXRzIiwiIl0sWzEsInNlbGYtb3AtY29udGFpbmVyIl0sWzEsInNlbGYtb3AtaGVhZGVyIl0sWzMsImtpbmQiLCJvcE5hbWUiLCJvcERhdGEiLCJvbk9wTmFtZUNsaWNrIl0sWyJjbGFzcyIsImNvbnN1bWVycy1jb250YWluZXIiLDQsIm5nSWYiLCJuZ0lmRWxzZSJdLFsibm9Db25zdW1lcnMiLCIiXSxbMSwiaW5wdXRzLWNvbnRhaW5lciJdLFsiY2xhc3MiLCJpbnB1dC1vcC1zZWN0aW9uIiw0LCJuZ0ZvciIsIm5nRm9yT2YiXSxbMSwiaW5wdXQtb3Atc2VjdGlvbiJdLFsxLCJpbnB1dC1zbG90LWhlYWRlciJdLFszLCJraW5kIiwib3BOYW1lIiwic2xvdCIsIm9wRGF0YSIsIm9uT3BOYW1lQ2xpY2siXSxbMSwiaW5wdXRzLWNvbnRhaW5lciIsIm5vLWlucHV0cy1pbmRpY2F0b3IiXSxbMSwiY29uc3VtZXJzLWNvbnRhaW5lciJdLFsiY2xhc3MiLCJzbG90LWNvbnN1bWVycy1jb250YWluZXIiLDQsIm5nRm9yIiwibmdGb3JPZiJdLFsxLCJzbG90LWNvbnN1bWVycy1jb250YWluZXIiXSxbMSwic2xvdC1jb25zdW1lcnMtaGVhZGVyIl0sZSxbImNsYXNzIiwiY29uc3VtZXItc2VjdGlvbiIsNCwibmdGb3IiLCJuZ0Zvck9mIl0sWzEsImNvbnN1bWVyLXNlY3Rpb24iXSxbMSwib3AtY29uc3VtZXJzLWNvbnRhaW5lciJdLG8sWzEsIm9wLWluZm8tbWlzc2luZyJdLFsxLCJuby1vcC1mb2N1c2VkIl1dfSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7aWYoMSZlJiYoQ2YoMCwiZGl2IiksQ2YoMSwiZGl2IiksUHUoMiwiR3JhcGggU3RydWN0dXJlIiksTWYoKSxDZigzLCJkaXYiLDApLEhtKDQsQVEsMTEsNywiZGl2IiwxKSxNZigpLEhtKDUsVFEsMiwwLCJuZy10ZW1wbGF0ZSIsbnVsbCwyLHF5KSxIbSg3LE5RLDIsMCwibmctdGVtcGxhdGUiLG51bGwsMyxxeSksTWYoKSksMiZlKXtjb25zdCB0PUZtKDgpO0RjKDQpLGJmKCJuZ0lmIixudWxsIT1uLm9wSW5mbykoIm5nSWZFbHNlIix0KX19LGRpcmVjdGl2ZXM6W1B2LE9RLHh2XSxzdHlsZXM6WycubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTJweDtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1iYWRnZS1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo5cHh9Lm1hdC1iYWRnZS1sYXJnZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4fS5tYXQtaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWhlYWRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAyNHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE2cHgvMjhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE1cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjgzKS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1oNltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC42NykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtYm9keS1zdHJvbmdbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MCAwIDEycHh9Lm1hdC1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FwdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTJweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6MzAwIDExMnB4LzExMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wNWVtO21hcmdpbjowIDAgNTZweH0ubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNTZweC81NnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMmVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNDVweC80OHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMDVlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDM0cHgvNDBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgNjRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FyZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjBweH0ubWF0LWNhcmQtc3VidGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcmQtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2hlY2tib3gtbGF5b3V0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC10cmFpbGluZy1pY29uLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmUubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxOHB4fS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jYWxlbmRhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FsZW5kYXItYm9keVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEzcHh9Lm1hdC1jYWxlbmRhci1ib2R5LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgdGhbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWRpYWxvZy10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMTI1O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTUwJTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjVlbTt3aWR0aDoxLjVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW07bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi41ZW0gMDtib3JkZXItdG9wOi44NDM3NWVtIHNvbGlkIHRyYW5zcGFyZW50fS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3RvcDotMC44NDM3NWVtO3BhZGRpbmctdG9wOi44NDM3NWVtfS5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjc1JTttYXJnaW4tdG9wOi42NjY2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNzkxNjY2NjY2N2VtKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi40Mzc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAycHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyM2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMjgxMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi41NDE2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNjY2NjY2NjY2N2VtKX1AbWVkaWEgcHJpbnR7Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIyZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIxZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMmVtKSBzY2FsZSgwLjc1KX19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjI1ZW0gMCAuNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4wOTM3NWVtO21hcmdpbi10b3A6LTAuNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MWVtIDAgMWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjg0Mzc1ZW07bWFyZ2luLXRvcDotMC4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH1pbnB1dC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDotMC4wNjI1ZW19Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1wYWdlLXNpemVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4fS5tYXQtcmFkaW8tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3RbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbX0ubWF0LXNsaWRlLXRvZ2dsZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXN0ZXBwZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc3RlcC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtc3RlcC1zdWItbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0Om5vcm1hbH0ubWF0LXN0ZXAtbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtc3RlcC1sYWJlbC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdGFiLWdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjB9Lm1hdC10b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEwcHg7cGFkZGluZy10b3A6NnB4O3BhZGRpbmctYm90dG9tOjZweH0ubWF0LXRvb2x0aXAtaGFuZHNldFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7cGFkZGluZy10b3A6OHB4O3BhZGRpbmctYm90dG9tOjhweH0ubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTZweH0ubWF0LW9wdGdyb3VwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LXNpbXBsZS1zbmFja2Jhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4fS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbltfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MTtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRyZWVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbmVzdGVkLXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtc2l6ZToxNHB4fS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdOm5vdCg6ZW1wdHkpe3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApfS5tYXQtcmlwcGxlLm1hdC1yaXBwbGUtdW5ib3VuZGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzp2aXNpYmxlfS5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO2JvcmRlci1yYWRpdXM6NTAlO3BvaW50ZXItZXZlbnRzOm5vbmU7dHJhbnNpdGlvbjpvcGFjaXR5LHRyYW5zZm9ybSAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7dHJhbnNmb3JtOnNjYWxlKDApfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpub25lfS5jZGstdmlzdWFsbHktaGlkZGVuW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6MDtjbGlwOnJlY3QoMCAwIDAgMCk7aGVpZ2h0OjFweDttYXJnaW46LTFweDtvdmVyZmxvdzpoaWRkZW47cGFkZGluZzowO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjFweDt3aGl0ZS1zcGFjZTpub3dyYXA7b3V0bGluZTowOy13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BvaW50ZXItZXZlbnRzOm5vbmU7dG9wOjA7bGVmdDowO2hlaWdodDoxMDAlO3dpZHRoOjEwMCV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdOmVtcHR5e2Rpc3BsYXk6bm9uZX0uY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LXBhbmVbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3BvaW50ZXItZXZlbnRzOmF1dG87Ym94LXNpemluZzpib3JkZXItYm94O3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7bWF4LXdpZHRoOjEwMCU7bWF4LWhlaWdodDoxMDAlfS5jZGstb3ZlcmxheS1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7bGVmdDowO3JpZ2h0OjA7ei1pbmRleDoxMDAwO3BvaW50ZXItZXZlbnRzOmF1dG87LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50O3RyYW5zaXRpb246b3BhY2l0eSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKTtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5Oi42fS5jZGstb3ZlcmxheS1kYXJrLWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjMyKX0uY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTowfS5jZGstb3ZlcmxheS1jb25uZWN0ZWQtcG9zaXRpb24tYm91bmRpbmctYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjttaW4td2lkdGg6MXB4O21pbi1oZWlnaHQ6MXB4fS5jZGstZ2xvYmFsLXNjcm9sbGJsb2NrW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt3aWR0aDoxMDAlO292ZXJmbG93LXk6c2Nyb2xsfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZVtfbmdjb250ZW50LSVDT01QJV17cmVzaXplOm5vbmV9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZ1tfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6YXV0byAhaW1wb3J0YW50O292ZXJmbG93OmhpZGRlbiAhaW1wb3J0YW50fXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmctZmlyZWZveFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6MCAhaW1wb3J0YW50fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnR7fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5ke30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxse2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydCAwcyAxbXN9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06bm90KDotd2Via2l0LWF1dG9maWxsKXthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5kIDBzIDFtc30ubWF0LWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1tZGMtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX1bX25naG9zdC0lQ09NUCVde292ZXJmbG93LXk6YXV0b30uY29uc3VtZXJzLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206NXB4O292ZXJmbG93LXg6YXV0bzt3aGl0ZS1zcGFjZTpub3dyYXB9LmNvbnN1bWVyLXNlY3Rpb25bX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6YmxvY2s7bWFyZ2luOjVweCAwfS5ncmFwaC1zdHJ1Y3R1cmUtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweDtvdmVyZmxvdy15OmF1dG87d2hpdGUtc3BhY2U6bm93cmFwfS5pbnB1dHMtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItYm90dG9tOjFweCBzb2xpZCByZ2JhKDAsMCwwLC4xMik7bWFyZ2luLXRvcDo1cHg7b3ZlcmZsb3cteDphdXRvO3BhZGRpbmctYm90dG9tOjA7d2hpdGUtc3BhY2U6bm93cmFwfS5pbnB1dC1vcC1zZWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItcmlnaHQ6MXB4IHNvbGlkIHJnYmEoMCwwLDAsLjEyKTtkaXNwbGF5OmlubGluZS1ibG9jazttYXJnaW4tcmlnaHQ6NXB4O3BhZGRpbmctYm90dG9tOjVweH0uaW5wdXQtc2xvdC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmZjA5OTttYXJnaW4tYm90dG9tOjVweH1ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICAuaW5wdXQtc2xvdC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAuaW5wdXQtc2xvdC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2U2NTEwMH0uaW5wdXQtdGVuc29yLW5hbWVbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6YmxvY2s7d2hpdGUtc3BhY2U6bm93cmFwfS5uby1vcC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpncmF5O2ZvbnQtZmFtaWx5OiJSb2JvdG8iLEFyaWFsLEhlbHZldGljYSxzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxM3B4O3doaXRlLXNwYWNlOm5vcm1hbH0uc2VsZi1vcC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OmJvbGQ7bWFyZ2luLWJvdHRvbTo1cHh9LnNlbGYtb3AtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItYm90dG9tOjFweCBzb2xpZCByZ2JhKDAsMCwwLC4xMik7cGFkZGluZy1ib3R0b206NXB4fS5zbG90LWNvbnN1bWVycy1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1yaWdodDoxcHggc29saWQgcmdiYSgwLDAsMCwuMTIpO2Rpc3BsYXk6aW5saW5lLWJsb2NrO21hcmdpbi1yaWdodDo1cHg7cGFkZGluZy10b3A6NXB4O3ZlcnRpY2FsLWFsaWduOnRvcH0uc2xvdC1jb25zdW1lcnMtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXB9J10sY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKHpRLFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6ImdyYXBoLWNvbXBvbmVudCIsdGVtcGxhdGVVcmw6Ii4vZ3JhcGhfY29tcG9uZW50Lm5nLmh0bWwiLHN0eWxlVXJsczpbIi4vZ3JhcGhfY29tcG9uZW50LmNzcyJdLGNoYW5nZURldGVjdGlvbjpqbi5PblB1c2h9XX1dLG51bGwse29wSW5mbzpbe3R5cGU6Ul99XSxpbnB1dE9wczpbe3R5cGU6Ul99XSxjb25zdW1lck9wczpbe3R5cGU6Ul99XSxvbkdyYXBoT3BOYXZpZ2F0ZTpbe3R5cGU6RV99XX0pO2NsYXNzIElRe2NvbnN0cnVjdG9yKHQpe3RoaXMuc3RvcmU9dCx0aGlzLm9wSW5mbyQ9dGhpcy5zdG9yZS5waXBlKHJTKEtLKSksdGhpcy5pbnB1dE9wcyQ9dGhpcy5zdG9yZS5waXBlKHJTKEpLKSksdGhpcy5jb25zdW1lck9wcyQ9dGhpcy5zdG9yZS5waXBlKHJTKCRLKSl9b25HcmFwaE9wTmF2aWdhdGUodCl7dGhpcy5zdG9yZS5kaXNwYXRjaChKWCh0KSl9fWZ1bmN0aW9uIEhRKHQsZSl7MSZ0JiYoQ2YoMCwiZGl2IiwxMiksUHUoMSwi4pa2IiksTWYoKSl9SVEuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fElRKShnZihpUykpfSxJUS7JtWNtcD1zbyh7dHlwZTpJUSxzZWxlY3RvcnM6W1sidGYtZGVidWdnZXItdjItZ3JhcGgiXV0sZGVjbHM6NCx2YXJzOjksY29uc3RzOltbMywib3BJbmZvIiwiaW5wdXRPcHMiLCJjb25zdW1lck9wcyIsIm9uR3JhcGhPcE5hdmlnYXRlIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihDZigwLCJncmFwaC1jb21wb25lbnQiLDApLFJmKCJvbkdyYXBoT3BOYXZpZ2F0ZSIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4ub25HcmFwaE9wTmF2aWdhdGUoZSl9KSksX3koMSwiYXN5bmMiKSxfeSgyLCJhc3luYyIpLF95KDMsImFzeW5jIiksTWYoKSksMiZlJiZiZigib3BJbmZvIixDeSgxLDMsbi5vcEluZm8kKSkoImlucHV0T3BzIixDeSgyLDUsbi5pbnB1dE9wcyQpKSgiY29uc3VtZXJPcHMiLEN5KDMsNyxuLmNvbnN1bWVyT3BzJCkpfSxkaXJlY3RpdmVzOlt6UV0scGlwZXM6W1Z2XSxlbmNhcHN1bGF0aW9uOjJ9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKElRLFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6InRmLWRlYnVnZ2VyLXYyLWdyYXBoIix0ZW1wbGF0ZTonXG4gICAgPGdyYXBoLWNvbXBvbmVudFxuICAgICAgW29wSW5mb109Im9wSW5mbyQgfCBhc3luYyJcbiAgICAgIFtpbnB1dE9wc109ImlucHV0T3BzJCB8IGFzeW5jIlxuICAgICAgW2NvbnN1bWVyT3BzXT0iY29uc3VtZXJPcHMkIHwgYXN5bmMiXG4gICAgICAob25HcmFwaE9wTmF2aWdhdGUpPSJvbkdyYXBoT3BOYXZpZ2F0ZSgkZXZlbnQpIlxuICAgID48L2dyYXBoLWNvbXBvbmVudD5cbiAgJ31dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmlTfV19KSxudWxsKTtjb25zdCBGUT1mdW5jdGlvbih0LGUpe3JldHVybnt0ZW5zb3JEZWJ1Z01vZGU6dCxhcnJheTplfX07ZnVuY3Rpb24gTFEodCxlKXtpZigxJnQmJnZmKDAsImRlYnVnLXRlbnNvci12YWx1ZSIsMTcpLDImdCl7Y29uc3QgdD16ZigyKS4kaW1wbGljaXQsZT16ZigyKTtiZigiZGVidWdUZW5zb3JWYWx1ZSIsZS5wYXJzZURlYnVnVGVuc29yVmFsdWUoYXkoMSxGUSxlLmdyYXBoRXhlY3V0aW9uRGF0YVt0XS50ZW5zb3JfZGVidWdfbW9kZSxlLmdyYXBoRXhlY3V0aW9uRGF0YVt0XS5kZWJ1Z190ZW5zb3JfdmFsdWUpKSl9fWZ1bmN0aW9uIEJRKHQsZSl7aWYoMSZ0KXtjb25zdCB0PXdmKCk7Q2YoMCwiZGl2IiksQ2YoMSwiZGl2IiwxMyksQ2YoMiwiYnV0dG9uIiwxNCksUmYoImNsaWNrIiwoZnVuY3Rpb24gZSgpe1BpKHQpO2NvbnN0IG49emYoKS4kaW1wbGljaXQsbz16ZigyKTtyZXR1cm4gby5vblRlbnNvck5hbWVDbGljay5lbWl0KHtpbmRleDpuLGdyYXBoX2lkOm8uZ3JhcGhFeGVjdXRpb25EYXRhW25dLmdyYXBoX2lkLG9wX25hbWU6by5ncmFwaEV4ZWN1dGlvbkRhdGFbbl0ub3BfbmFtZX0pfSkpLFB1KDMpLE1mKCksQ2YoNCwiZGl2IiwxNSksUHUoNSksTWYoKSxNZigpLEhtKDYsTFEsMSw0LCJkZWJ1Zy10ZW5zb3ItdmFsdWUiLDE2KSxNZigpfWlmKDImdCl7Y29uc3QgdD16ZigpLiRpbXBsaWNpdCxlPXpmKDIpO0RjKDIpLExmKCJ0aXRsZSIsZS5nZXRUZW5zb3JOYW1lKHQpKSxEYygxKSxrdSgiICIsZS5nZXRUZW5zb3JOYW1lKHQpLCIgIiksRGMoMiksd3UoZS5ncmFwaEV4ZWN1dGlvbkRhdGFbdF0ub3BfdHlwZSksRGMoMSksYmYoIm5nSWYiLG51bGwhPT1lLmdyYXBoRXhlY3V0aW9uRGF0YVt0XS5kZWJ1Z190ZW5zb3JfdmFsdWUpfX1mdW5jdGlvbiBWUSh0LGUpezEmdCYmKENmKDAsImRpdiIsMTgpLFB1KDEsIiBMb2FkaW5nLi4uICIpLE1mKCkpfWNvbnN0IGpRPWZ1bmN0aW9uKHQpe3JldHVybnsiaW5wdXQtb2YtZm9jdXMiOnR9fTtmdW5jdGlvbiBVUSh0LGUpe2lmKDEmdCYmKENmKDAsImRpdiIsNSksQ2YoMSwiZGl2Iiw2KSxDZigyLCJkaXYiLDcpLEhtKDMsSFEsMiwwLCJkaXYiLDgpLFB1KDQpLE1mKCksSG0oNSxCUSw3LDQsImRpdiIsOSksSG0oNixWUSwyLDAsIm5nLXRlbXBsYXRlIiwxMCwxMSxxeSksTWYoKSxNZigpKSwyJnQpe2NvbnN0IHQ9ZS4kaW1wbGljaXQsbj1GbSg3KSxvPXpmKDIpO0RjKDEpLGJmKCJuZ0NsYXNzIixpeSg1LGpRLG8uaXNJbnB1dE9mRm9jdXModCkpKSxEYygyKSxiZigibmdJZiIsdD09PW8uZm9jdXNJbmRleCksRGMoMSksa3UoIiAiLHQsIiAiKSxEYygxKSxiZigibmdJZiIsby5ncmFwaEV4ZWN1dGlvbkRhdGFbdF0pKCJuZ0lmRWxzZSIsbil9fWZ1bmN0aW9uIFdRKHQsZSl7aWYoMSZ0KXtjb25zdCB0PXdmKCk7Q2YoMCwiY2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0IiwzKSxSZigic2Nyb2xsZWRJbmRleENoYW5nZSIsKGZ1bmN0aW9uIGUobil7UGkodCk7cmV0dXJuIHpmKCkub25TY3JvbGxlZEluZGV4Q2hhbmdlLmVtaXQobil9KSksSG0oMSxVUSw4LDcsImRpdiIsNCksTWYoKX1pZigyJnQpe2NvbnN0IHQ9emYoKTtEYygxKSxiZigiY2RrVmlydHVhbEZvck9mIix0LmdyYXBoRXhlY3V0aW9uSW5kaWNlcyl9fWNsYXNzIEdRe2NvbnN0cnVjdG9yKCl7dGhpcy5vblNjcm9sbGVkSW5kZXhDaGFuZ2U9bmV3IFN5LHRoaXMub25UZW5zb3JOYW1lQ2xpY2s9bmV3IFN5LHRoaXMucGFyc2VEZWJ1Z1RlbnNvclZhbHVlPUFKLHRoaXMuVEVTVF9PTkxZPXtnZXRWaWV3UG9ydDooKT0+dGhpcy52aWV3UG9ydH19bmdPbkNoYW5nZXModCl7aWYodGhpcy52aWV3UG9ydCYmdC5mb2N1c0luZGV4JiZudWxsIT09dC5mb2N1c0luZGV4LmN1cnJlbnRWYWx1ZSl7Y29uc3QgZT10aGlzLnZpZXdQb3J0LmdldFJlbmRlcmVkUmFuZ2UoKSxuPXQuZm9jdXNJbmRleC5jdXJyZW50VmFsdWUsbz1NYXRoLnJvdW5kKChlLmVuZC1lLnN0YXJ0KS8zKSxpPU1hdGgubWF4KG4tbywwKTt0aGlzLnZpZXdQb3J0LnNjcm9sbFRvSW5kZXgoaSxuPj1lLnN0YXJ0JiZuPGUuZW5kPyJzbW9vdGgiOnZvaWQgMCl9fWdldFRlbnNvck5hbWUodCl7cmV0dXJuYCR7dGhpcy5ncmFwaEV4ZWN1dGlvbkRhdGFbdF0ub3BfbmFtZX06JHt0aGlzLmdyYXBoRXhlY3V0aW9uRGF0YVt0XS5vdXRwdXRfc2xvdH1gfWlzSW5wdXRPZkZvY3VzKHQpe3JldHVybiBudWxsIT09dGhpcy5mb2N1c0lucHV0SW5kaWNlcyYmdGhpcy5mb2N1c0lucHV0SW5kaWNlcy5pbmNsdWRlcyh0KX19R1EuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEdRKX0sR1EuybVjbXA9c28oe3R5cGU6R1Esc2VsZWN0b3JzOltbImdyYXBoLWV4ZWN1dGlvbnMtY29tcG9uZW50Il1dLHZpZXdRdWVyeTpmdW5jdGlvbiB0KGUsbil7aWYoMSZlJiZWeSh0Qiw1KSwyJmUpe2xldCB0O0J5KHQ9VXkoKSkmJihuLnZpZXdQb3J0PXQuZmlyc3QpfX0saW5wdXRzOntudW1HcmFwaEV4ZWN1dGlvbnM6Im51bUdyYXBoRXhlY3V0aW9ucyIsZ3JhcGhFeGVjdXRpb25EYXRhOiJncmFwaEV4ZWN1dGlvbkRhdGEiLGdyYXBoRXhlY3V0aW9uSW5kaWNlczoiZ3JhcGhFeGVjdXRpb25JbmRpY2VzIixmb2N1c0luZGV4OiJmb2N1c0luZGV4Iixmb2N1c0lucHV0SW5kaWNlczoiZm9jdXNJbnB1dEluZGljZXMifSxvdXRwdXRzOntvblNjcm9sbGVkSW5kZXhDaGFuZ2U6Im9uU2Nyb2xsZWRJbmRleENoYW5nZSIsb25UZW5zb3JOYW1lQ2xpY2s6Im9uVGVuc29yTmFtZUNsaWNrIn0sZmVhdHVyZXM6W3FvXSxkZWNsczo0LHZhcnM6Mixjb25zdHM6W1sxLCJncmFwaC1leGVjdXRpb25zLWNvbnRhaW5lciJdLFsxLCJncmFwaC1leGVjdXRpb25zLXRpdGxlIl0sWyJpdGVtU2l6ZSIsIjM4IiwiY2xhc3MiLCJncmFwaC1leGVjdXRpb25zLXZpZXdwb3J0IiwzLCJzY3JvbGxlZEluZGV4Q2hhbmdlIiw0LCJuZ0lmIl0sWyJpdGVtU2l6ZSIsIjM4IiwxLCJncmFwaC1leGVjdXRpb25zLXZpZXdwb3J0IiwzLCJzY3JvbGxlZEluZGV4Q2hhbmdlIl0sWyJjbGFzcyIsInRlbnNvci1jb250YWluZXIiLDQsImNka1ZpcnR1YWxGb3IiLCJjZGtWaXJ0dWFsRm9yT2YiXSxbMSwidGVuc29yLWNvbnRhaW5lciJdLFsxLCJ0ZW5zb3ItaXRlbSIsMywibmdDbGFzcyJdLFsxLCJncmFwaC1leGVjdXRpb24taW5kZXgiXSxbImNsYXNzIiwiZ3JhcGgtZXhlY3V0aW9uLWZvY3VzIiw0LCJuZ0lmIl0sWzQsIm5nSWYiLCJuZ0lmRWxzZSJdLFsiY2xhc3MiLCJ0ZW5zb3ItaXRlbSJdLFsiZGF0YUxvYWRpbmciLCIiXSxbMSwiZ3JhcGgtZXhlY3V0aW9uLWZvY3VzIl0sWzEsInRlbnNvci1uYW1lLWFuZC1vcC10eXBlIl0sWzEsInRlbnNvci1uYW1lIiwzLCJ0aXRsZSIsImNsaWNrIl0sWzEsIm9wLXR5cGUiXSxbMywiZGVidWdUZW5zb3JWYWx1ZSIsNCwibmdJZiJdLFszLCJkZWJ1Z1RlbnNvclZhbHVlIl0sWzEsImxvYWRpbmctc3Bpbm5lciJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoQ2YoMCwiZGl2IiwwKSxDZigxLCJkaXYiLDEpLFB1KDIpLE1mKCksSG0oMyxXUSwyLDEsImNkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydCIsMiksTWYoKSksMiZlJiYoRGMoMiksa3UoIiBHcmFwaCBFeGVjdXRpb25zICgiLG4ubnVtR3JhcGhFeGVjdXRpb25zLCIpICIpLERjKDEpLGJmKCJuZ0lmIixudWxsIT09bi5udW1HcmFwaEV4ZWN1dGlvbnMmJm4ubnVtR3JhcGhFeGVjdXRpb25zPjApKX0sZGlyZWN0aXZlczpbUHYsdEIsWEwsbkIsQ3YsdFFdLHN0eWxlczpbJy5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjlweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHh9Lm1hdC1oMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaGVhZGxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDI0cHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTVweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWg2W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1ib2R5LXN0cm9uZ1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYXJkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FyZC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MjRweH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNhbGVuZGFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZGlhbG9nLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVlbSAwO2JvcmRlci10b3A6Ljg0Mzc1ZW0gc29saWQgdHJhbnNwYXJlbnR9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17dG9wOi0wLjg0Mzc1ZW07cGFkZGluZy10b3A6Ljg0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6NzUlO21hcmdpbi10b3A6LjY2NjY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS43OTE2NjY2NjY3ZW0pfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjQzNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDJweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIzZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4yODEyNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LjU0MTY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS42NjY2NjY2NjY3ZW0pfUBtZWRpYSBwcmludHsubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjJlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjFlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyZW0pIHNjYWxlKDAuNzUpfX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouMjVlbSAwIC43NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjA5Mzc1ZW07bWFyZ2luLXRvcDotMC41ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoxZW0gMCAxZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuODQzNzVlbTttYXJnaW4tdG9wOi0wLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMiksIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fWlucHV0Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi0wLjA2MjVlbX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHh9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtfS5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1zdGVwLXN1Yi1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6bm9ybWFsfS5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1zdGVwLWxhYmVsLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10YWItZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MH0ubWF0LXRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTBweDtwYWRkaW5nLXRvcDo2cHg7cGFkZGluZy1ib3R0b206NnB4fS5tYXQtdG9vbHRpcC1oYW5kc2V0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4fS5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtc2ltcGxlLXNuYWNrYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHh9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoxO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjE0cHh9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV06bm90KDplbXB0eSl7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9Lm1hdC1yaXBwbGUubWF0LXJpcHBsZS11bmJvdW5kZWRbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OnZpc2libGV9Lm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJhZGl1czo1MCU7cG9pbnRlci1ldmVudHM6bm9uZTt0cmFuc2l0aW9uOm9wYWNpdHksdHJhbnNmb3JtIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTt0cmFuc2Zvcm06c2NhbGUoMCl9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9LmNkay12aXN1YWxseS1oaWRkZW5bX25nY29udGVudC0lQ09NUCVde2JvcmRlcjowO2NsaXA6cmVjdCgwIDAgMCAwKTtoZWlnaHQ6MXB4O21hcmdpbjotMXB4O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4O3doaXRlLXNwYWNlOm5vd3JhcDtvdXRsaW5lOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0sIC5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cG9pbnRlci1ldmVudHM6bm9uZTt0b3A6MDtsZWZ0OjA7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV06ZW1wdHl7ZGlzcGxheTpub25lfS5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktcGFuZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6YXV0bztib3gtc2l6aW5nOmJvcmRlci1ib3g7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDttYXgtd2lkdGg6MTAwJTttYXgtaGVpZ2h0OjEwMCV9LmNkay1vdmVybGF5LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDt6LWluZGV4OjEwMDA7cG9pbnRlci1ldmVudHM6YXV0bzstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnQ7dHJhbnNpdGlvbjpvcGFjaXR5IDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpO29wYWNpdHk6MH0uY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eToxfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6LjZ9LmNkay1vdmVybGF5LWRhcmstYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMzIpfS5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV0sIC5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWNvbm5lY3RlZC1wb3NpdGlvbi1ib3VuZGluZy1ib3hbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO21pbi13aWR0aDoxcHg7bWluLWhlaWdodDoxcHh9LmNkay1nbG9iYWwtc2Nyb2xsYmxvY2tbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3dpZHRoOjEwMCU7b3ZlcmZsb3cteTpzY3JvbGx9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplW19uZ2NvbnRlbnQtJUNPTVAlXXtyZXNpemU6bm9uZX10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDphdXRvICFpbXBvcnRhbnQ7b3ZlcmZsb3c6aGlkZGVuICFpbXBvcnRhbnR9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZy1maXJlZm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDowICFpbXBvcnRhbnR9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydHt9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmR7fS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGx7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0IDBzIDFtc30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOi13ZWJraXQtYXV0b2ZpbGwpe2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmQgMHMgMW1zfS5tYXQtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LW1kYy1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5ncmFwaC1leGVjdXRpb25zLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWxlZnQ6MXB4IHNvbGlkICNlYmViZWI7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtoZWlnaHQ6MTAwJTttYXJnaW4tbGVmdDo4cHg7cGFkZGluZy1sZWZ0OjEwcHh9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgLmdyYXBoLWV4ZWN1dGlvbnMtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLmdyYXBoLWV4ZWN1dGlvbnMtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItbGVmdDoxcHggc29saWQgIzU1NX0uZ3JhcGgtZXhlY3V0aW9uLWZvY3VzW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmlubGluZS1ibG9ja30uZ3JhcGgtZXhlY3V0aW9uLWluZGV4W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxO2Rpc3BsYXk6aW5saW5lLWJsb2NrO3BhZGRpbmctcmlnaHQ6NHB4O3RleHQtYWxpZ246cmlnaHQ7d2lkdGg6NDBweH1ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICAuZ3JhcGgtZXhlY3V0aW9uLWluZGV4W19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLmdyYXBoLWV4ZWN1dGlvbi1pbmRleFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNyl9LmdyYXBoLWV4ZWN1dGlvbnMtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MCA1cHggM3B4IC0zcHggI2NjYztwYWRkaW5nLWJvdHRvbTo1cHh9LmdyYXBoLWV4ZWN1dGlvbnMtdmlld3BvcnRbX25nY29udGVudC0lQ09NUCVde2ZsZXgtZ3JvdzoxO2ZvbnQtc2l6ZToxMnB4O3dpZHRoOjEwMCU7b3ZlcmZsb3cteDpoaWRkZW59LmlucHV0LW9mLWZvY3VzW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZmYwOTl9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgLmlucHV0LW9mLWZvY3VzW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLmlucHV0LW9mLWZvY3VzW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNlNjUxMDB9LmxvYWRpbmctc3Bpbm5lcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTppbmxpbmUtYmxvY2t9Lm9wLXR5cGVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2VjZWZmMTtib3JkZXI6MXB4IHNvbGlkICNlYmViZWI7Ym9yZGVyLXJhZGl1czo0cHg7Zm9udC1mYW1pbHk6IlJvYm90byBNb25vIixtb25vc3BhY2U7Zm9udC1zaXplOjEwcHg7aGVpZ2h0OjE0cHg7bGluZS1oZWlnaHQ6MTRweDtwYWRkaW5nOjFweCAzcHg7d2lkdGg6bWF4LWNvbnRlbnQ7ZGlyZWN0aW9uOnJ0bDtkaXNwbGF5OmJsb2NrfWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC5vcC10eXBlW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLm9wLXR5cGVbX25nY29udGVudC0lQ09NUCVde2JvcmRlcjoxcHggc29saWQgIzU1NX1ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICAub3AtdHlwZVtfbmdjb250ZW50LSVDT01QJV0sIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5vcC10eXBlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiM0NTVhNjR9LnRlbnNvci1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde3dpZHRoOjEwMCV9LnRlbnNvci1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjZWJlYmViO2Rpc3BsYXk6ZmxleDtmbGV4LXdyYXA6bm93cmFwO2hlaWdodDozOHB4O2xpbmUtaGVpZ2h0OjM4cHg7dGV4dC1hbGlnbjpsZWZ0O3ZlcnRpY2FsLWFsaWduOm1pZGRsZTt3aGl0ZS1zcGFjZTpub3dyYXA7d2lkdGg6MTAwJX1ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICAudGVuc29yLWl0ZW1bX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAudGVuc29yLWl0ZW1bX25nY29udGVudC0lQ09NUCVde2JvcmRlci1ib3R0b206MXB4IHNvbGlkICM1NTV9LnRlbnNvci1uYW1lW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2JvcmRlcjpub25lO2JveC1zaXppbmc6Ym9yZGVyLWJveDtjb2xvcjppbmhlcml0O2N1cnNvcjpwb2ludGVyO2RpcmVjdGlvbjpydGw7ZGlzcGxheTpibG9jaztoZWlnaHQ6MTZweDtsaW5lLWhlaWdodDoxNnB4O21hcmdpbjoycHggMCAxcHg7bWF4LXdpZHRoOmNhbGMoMTAwJSAtIDJweCk7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MCAycHg7dGV4dC1hbGlnbjpyaWdodDt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7d2hpdGUtc3BhY2U6bm93cmFwfS50ZW5zb3ItbmFtZVtfbmdjb250ZW50LSVDT01QJV06Zm9jdXN7b3V0bGluZToxcHggc29saWQgI2M2Y2FkMX0udGVuc29yLW5hbWUtYW5kLW9wLXR5cGVbX25nY29udGVudC0lQ09NUCVde2RpcmVjdGlvbjpydGw7ZGlzcGxheTppbmxpbmUtYmxvY2s7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmctcmlnaHQ6OHB4O3RleHQtYWxpZ246cmlnaHQ7d2lkdGg6MjQwcHh9ZGVidWctdGVuc29yLXZhbHVlW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmlubGluZS1ibG9jazttYXJnaW46MnB4IDB9J10sY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKEdRLFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6ImdyYXBoLWV4ZWN1dGlvbnMtY29tcG9uZW50Iix0ZW1wbGF0ZVVybDoiLi9ncmFwaF9leGVjdXRpb25zX2NvbXBvbmVudC5uZy5odG1sIixzdHlsZVVybHM6WyIuL2dyYXBoX2V4ZWN1dGlvbnNfY29tcG9uZW50LmNzcyJdLGNoYW5nZURldGVjdGlvbjpqbi5PblB1c2h9XX1dLG51bGwse251bUdyYXBoRXhlY3V0aW9uczpbe3R5cGU6Ul99XSxncmFwaEV4ZWN1dGlvbkRhdGE6W3t0eXBlOlJffV0sZ3JhcGhFeGVjdXRpb25JbmRpY2VzOlt7dHlwZTpSX31dLGZvY3VzSW5kZXg6W3t0eXBlOlJffV0sZm9jdXNJbnB1dEluZGljZXM6W3t0eXBlOlJffV0sb25TY3JvbGxlZEluZGV4Q2hhbmdlOlt7dHlwZTpFX31dLG9uVGVuc29yTmFtZUNsaWNrOlt7dHlwZTpFX31dLHZpZXdQb3J0Olt7dHlwZTphcixhcmdzOlt0Qix7c3RhdGljOiExfV19XX0pO2NsYXNzIFlRe2NvbnN0cnVjdG9yKHQpe3RoaXMuc3RvcmU9dCx0aGlzLm51bUdyYXBoRXhlY3V0aW9ucyQ9dGhpcy5zdG9yZS5waXBlKHJTKFZLKSksdGhpcy5ncmFwaEV4ZWN1dGlvbkRhdGEkPXRoaXMuc3RvcmUucGlwZShyUyhxSykpLHRoaXMuZ3JhcGhFeGVjdXRpb25JbmRpY2VzJD10aGlzLnN0b3JlLnBpcGUoclMoYlMoVkssKHQ9PjA9PT10P251bGw6QXJyYXkuZnJvbSh7bGVuZ3RoOnR9KS5tYXAoKCh0LGUpPT5lKSkpKSkpLHRoaXMuZm9jdXNJbmRleCQ9dGhpcy5zdG9yZS5waXBlKHJTKFpLKSksdGhpcy5mb2N1c0lucHV0SW5kaWNlcyQ9dGhpcy5zdG9yZS5waXBlKHJTKFFLKSl9b25TY3JvbGxlZEluZGV4Q2hhbmdlKHQpe3RoaXMuc3RvcmUuZGlzcGF0Y2goWFgoe2luZGV4OnR9KSl9b25UZW5zb3JOYW1lQ2xpY2sodCl7dGhpcy5zdG9yZS5kaXNwYXRjaChLWCh0KSl9fVlRLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxZUSkoZ2YoaVMpKX0sWVEuybVjbXA9c28oe3R5cGU6WVEsc2VsZWN0b3JzOltbInRmLWRlYnVnZ2VyLXYyLWdyYXBoLWV4ZWN1dGlvbnMiXV0sZGVjbHM6Nix2YXJzOjE1LGNvbnN0czpbWzMsIm51bUdyYXBoRXhlY3V0aW9ucyIsImdyYXBoRXhlY3V0aW9uRGF0YSIsImdyYXBoRXhlY3V0aW9uSW5kaWNlcyIsImZvY3VzSW5kZXgiLCJmb2N1c0lucHV0SW5kaWNlcyIsIm9uU2Nyb2xsZWRJbmRleENoYW5nZSIsIm9uVGVuc29yTmFtZUNsaWNrIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihDZigwLCJncmFwaC1leGVjdXRpb25zLWNvbXBvbmVudCIsMCksUmYoIm9uU2Nyb2xsZWRJbmRleENoYW5nZSIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4ub25TY3JvbGxlZEluZGV4Q2hhbmdlKGUpfSkpKCJvblRlbnNvck5hbWVDbGljayIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4ub25UZW5zb3JOYW1lQ2xpY2soZSl9KSksX3koMSwiYXN5bmMiKSxfeSgyLCJhc3luYyIpLF95KDMsImFzeW5jIiksX3koNCwiYXN5bmMiKSxfeSg1LCJhc3luYyIpLE1mKCkpLDImZSYmYmYoIm51bUdyYXBoRXhlY3V0aW9ucyIsQ3koMSw1LG4ubnVtR3JhcGhFeGVjdXRpb25zJCkpKCJncmFwaEV4ZWN1dGlvbkRhdGEiLEN5KDIsNyxuLmdyYXBoRXhlY3V0aW9uRGF0YSQpKSgiZ3JhcGhFeGVjdXRpb25JbmRpY2VzIixDeSgzLDksbi5ncmFwaEV4ZWN1dGlvbkluZGljZXMkKSkoImZvY3VzSW5kZXgiLEN5KDQsMTEsbi5mb2N1c0luZGV4JCkpKCJmb2N1c0lucHV0SW5kaWNlcyIsQ3koNSwxMyxuLmZvY3VzSW5wdXRJbmRpY2VzJCkpfSxkaXJlY3RpdmVzOltHUV0scGlwZXM6W1Z2XSxlbmNhcHN1bGF0aW9uOjJ9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKFlRLFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6InRmLWRlYnVnZ2VyLXYyLWdyYXBoLWV4ZWN1dGlvbnMiLHRlbXBsYXRlOidcbiAgICA8Z3JhcGgtZXhlY3V0aW9ucy1jb21wb25lbnRcbiAgICAgIFtudW1HcmFwaEV4ZWN1dGlvbnNdPSJudW1HcmFwaEV4ZWN1dGlvbnMkIHwgYXN5bmMiXG4gICAgICBbZ3JhcGhFeGVjdXRpb25EYXRhXT0iZ3JhcGhFeGVjdXRpb25EYXRhJCB8IGFzeW5jIlxuICAgICAgW2dyYXBoRXhlY3V0aW9uSW5kaWNlc109ImdyYXBoRXhlY3V0aW9uSW5kaWNlcyQgfCBhc3luYyJcbiAgICAgIFtmb2N1c0luZGV4XT0iZm9jdXNJbmRleCQgfCBhc3luYyJcbiAgICAgIFtmb2N1c0lucHV0SW5kaWNlc109ImZvY3VzSW5wdXRJbmRpY2VzJCB8IGFzeW5jIlxuICAgICAgKG9uU2Nyb2xsZWRJbmRleENoYW5nZSk9Im9uU2Nyb2xsZWRJbmRleENoYW5nZSgkZXZlbnQpIlxuICAgICAgKG9uVGVuc29yTmFtZUNsaWNrKT0ib25UZW5zb3JOYW1lQ2xpY2soJGV2ZW50KSJcbiAgICA+PC9ncmFwaC1leGVjdXRpb25zLWNvbXBvbmVudD5cbiAgJ31dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmlTfV19KSxudWxsKTtjb25zdCBxUT17Z2V0V2luZG93OmZ1bmN0aW9uIFpRKCl7cmV0dXJuIHdpbmRvd319LFhRPSJ2cyI7ZnVuY3Rpb24gS1EodCl7Y29uc3QgZT1xUS5nZXRXaW5kb3coKS5yZXF1aXJlO3JldHVybiBuZXcgUHJvbWlzZSgobj0+e2UodCxuKX0pKX1mdW5jdGlvbiBKUSgpe3JldHVybiBYVCh0aGlzLHZvaWQgMCx2b2lkIDAsKGZ1bmN0aW9uKigpe2NvbnN0IHQ9cVEuZ2V0V2luZG93KCk7aWYodm9pZCAwPT09dC5tb25hY28pe2lmKCF0LnJlcXVpcmUpdGhyb3cgbmV3IEVycm9yKCJsb2FkTW9uYWNvKCkgZmFpbGVkIGJlY2F1c2UgZnVuY3Rpb24gcmVxdWlyZSgpIGlzIHVuYXZhaWxhYmxlIik7dC5yZXF1aXJlLmNvbmZpZyh7cGF0aHM6e1tYUV06Ii90Zi1pbXBvcnRzL3ZzIn19KSx5aWVsZCBLUShbInZzL2VkaXRvci9lZGl0b3IubWFpbiJdKSx5aWVsZCBLUShbInZzL3B5dGhvbi9weXRob24uY29udHJpYnV0aW9uIl0pfX0pKX1mdW5jdGlvbiBRUSh0KXtyZXR1cm4gdD8idnMtZGFyayI6InZzIn1jbGFzcyAkUXtjb25zdHJ1Y3Rvcih0KXt0aGlzLnJlc2l6ZUV2ZW50RGVib3VuY2VQZXJpb2RJbk1zPTEwMCx0aGlzLm9uUmVzaXplPW5ldyBTeSx0aGlzLm5nVW5zdWJzY3JpYmUkPW5ldyBCLHRoaXMub25SZXNpemUkPW5ldyBCO2NvbnN0IGU9bmV3IFJlc2l6ZU9ic2VydmVyKCgoKT0+e3RoaXMub25SZXNpemUkLm5leHQoKX0pKTtlLm9ic2VydmUodC5uYXRpdmVFbGVtZW50KSx0aGlzLm5nVW5zdWJzY3JpYmUkLnN1YnNjcmliZSgoKCk9PntlLnVub2JzZXJ2ZSh0Lm5hdGl2ZUVsZW1lbnQpfSkpfW5nT25Jbml0KCl7dGhpcy5vblJlc2l6ZSQucGlwZShMZSgxKSxDZSh0aGlzLnJlc2l6ZUV2ZW50RGVib3VuY2VQZXJpb2RJbk1zKSxqZSh0aGlzLm5nVW5zdWJzY3JpYmUkKSkuc3Vic2NyaWJlKCgoKT0+e3RoaXMub25SZXNpemUuZW1pdCgpfSkpfW5nT25EZXN0cm95KCl7dGhpcy5uZ1Vuc3Vic2NyaWJlJC5uZXh0KCksdGhpcy5uZ1Vuc3Vic2NyaWJlJC5jb21wbGV0ZSgpfX0kUS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8JFEpKGdmKEtoKSl9LCRRLsm1ZGlyPWhvKHt0eXBlOiRRLHNlbGVjdG9yczpbWyIiLCJkZXRlY3RSZXNpemUiLCIiXV0saW5wdXRzOntyZXNpemVFdmVudERlYm91bmNlUGVyaW9kSW5NczoicmVzaXplRXZlbnREZWJvdW5jZVBlcmlvZEluTXMifSxvdXRwdXRzOntvblJlc2l6ZToib25SZXNpemUifX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoJFEsW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3RvcjoiW2RldGVjdFJlc2l6ZV0ifV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6S2h9XX0pLHtyZXNpemVFdmVudERlYm91bmNlUGVyaW9kSW5Nczpbe3R5cGU6Ul99XSxvblJlc2l6ZTpbe3R5cGU6RV99XX0pO2NvbnN0IHQkPVsiY29kZVZpZXdlckNvbnRhaW5lciJdO2NsYXNzIGUke2NvbnN0cnVjdG9yKCl7dGhpcy5saW5lcz1udWxsLHRoaXMuZm9jdXNlZExpbmVubz1udWxsLHRoaXMubW9uYWNvPW51bGwsdGhpcy5lZGl0b3I9bnVsbCx0aGlzLmRlY29yYXRpb25zPVtdLHRoaXMuUkVTSVpFX0RFQk9VTkNFX0lOVEVSVkFMX01TPTUwfW9uUmVzaXplKCl7dGhpcy5lZGl0b3ImJnRoaXMuZWRpdG9yLmxheW91dCgpfW5nT25DaGFuZ2VzKHQpe3ZhciBlO2lmKG51bGw9PT10aGlzLm1vbmFjbylyZXR1cm47Y29uc3Qgbj10Lm1vbmFjbyYmbnVsbD09PXRoaXMuZWRpdG9yO251bGw9PT10aGlzLmVkaXRvciYmKHRoaXMuZWRpdG9yPXRoaXMubW9uYWNvLmVkaXRvci5jcmVhdGUodGhpcy5jb2RlVmlld2VyQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQse3ZhbHVlOihudWxsIT09KGU9dGhpcy5saW5lcykmJnZvaWQgMCE9PWU/ZTpbXSkuam9pbigiXG4iKSxsYW5ndWFnZToicHl0aG9uIixyZWFkT25seTohMCxmb250U2l6ZToxMCxtaW5pbWFwOntlbmFibGVkOiEwfSx0aGVtZTpRUSh0aGlzLnVzZURhcmtNb2RlKX0pKSx0LmxpbmVzJiZ0aGlzLmxpbmVzJiZ0aGlzLmVkaXRvci5zZXRWYWx1ZSh0aGlzLmxpbmVzLmpvaW4oIlxuIikpO2NvbnN0IG89bnx8dC5mb2N1c2VkTGluZW5vP3RoaXMuZm9jdXNlZExpbmVubzpudWxsO2lmKG8mJnRoaXMubGluZXMpe3RoaXMuZWRpdG9yLnJldmVhbExpbmVJbkNlbnRlcihvLHRoaXMubW9uYWNvLmVkaXRvci5TY3JvbGxUeXBlLlNtb290aCk7Y29uc3QgdD10aGlzLmxpbmVzW28tMV0ubGVuZ3RoO3RoaXMuZGVjb3JhdGlvbnM9dGhpcy5lZGl0b3IuZGVsdGFEZWNvcmF0aW9ucyh0aGlzLmRlY29yYXRpb25zLFt7cmFuZ2U6bmV3IHRoaXMubW9uYWNvLlJhbmdlKG8sMSxvLDEpLG9wdGlvbnM6e2lzV2hvbGVMaW5lOiEwLGxpbmVzRGVjb3JhdGlvbnNDbGFzc05hbWU6ImhpZ2hsaWdodC1ndXR0ZXIifX0se3JhbmdlOm5ldyB0aGlzLm1vbmFjby5SYW5nZShvLDEsbyx0KzEpLG9wdGlvbnM6e2lubGluZUNsYXNzTmFtZToiaGlnaGxpZ2h0LWxpbmUifX1dKX10LnVzZURhcmtNb2RlJiZ0aGlzLm1vbmFjby5lZGl0b3Iuc2V0VGhlbWUoUVEodGhpcy51c2VEYXJrTW9kZSkpfX1lJC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8ZSQpfSxlJC7JtWNtcD1zbyh7dHlwZTplJCxzZWxlY3RvcnM6W1sic291cmNlLWNvZGUtY29tcG9uZW50Il1dLHZpZXdRdWVyeTpmdW5jdGlvbiB0KGUsbil7aWYoMSZlJiZWeSh0JCw3LEtoKSwyJmUpe2xldCB0O0J5KHQ9VXkoKSkmJihuLmNvZGVWaWV3ZXJDb250YWluZXI9dC5maXJzdCl9fSxpbnB1dHM6e2xpbmVzOiJsaW5lcyIsZm9jdXNlZExpbmVubzoiZm9jdXNlZExpbmVubyIsbW9uYWNvOiJtb25hY28iLHVzZURhcmtNb2RlOiJ1c2VEYXJrTW9kZSJ9LGZlYXR1cmVzOltxb10sZGVjbHM6Mix2YXJzOjEsY29uc3RzOltbImRldGVjdFJlc2l6ZSIsIiIsMSwiY29kZS12aWV3ZXItY29udGFpbmVyIiwzLCJyZXNpemVFdmVudERlYm91bmNlUGVyaW9kSW5NcyIsIm9uUmVzaXplIl0sWyJjb2RlVmlld2VyQ29udGFpbmVyIiwiIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihDZigwLCJkaXYiLDAsMSksUmYoIm9uUmVzaXplIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLm9uUmVzaXplKCl9KSksTWYoKSksMiZlJiZiZigicmVzaXplRXZlbnREZWJvdW5jZVBlcmlvZEluTXMiLG4uUkVTSVpFX0RFQk9VTkNFX0lOVEVSVkFMX01TKX0sZGlyZWN0aXZlczpbJFFdLHN0eWxlczpbIi5jb2RlLXZpZXdlci1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdIHtcbiAgaGVpZ2h0OiAxMDAlO1xufVxuXG5bX25naG9zdC0lQ09NUCVdICAgICAuaGlnaGxpZ2h0LWd1dHRlciB7XG4gIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAxMTEsIDAsIDAuNyk7XG4gIHdpZHRoOiA1cHggIWltcG9ydGFudDtcbn1cblxuW19uZ2hvc3QtJUNPTVAlXSAgICAgLmhpZ2hsaWdodC1saW5lIHtcbiAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDExMSwgMCwgMC4zKTtcbn0iXSxjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoZSQsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3Rvcjoic291cmNlLWNvZGUtY29tcG9uZW50Iix0ZW1wbGF0ZVVybDoiLi9zb3VyY2VfY29kZV9jb21wb25lbnQubmcuaHRtbCIsc3R5bGVVcmxzOlsiLi9zb3VyY2VfY29kZV9jb21wb25lbnQuY3NzIl0sY2hhbmdlRGV0ZWN0aW9uOmpuLk9uUHVzaH1dfV0sbnVsbCx7bGluZXM6W3t0eXBlOlJffV0sZm9jdXNlZExpbmVubzpbe3R5cGU6Ul99XSxtb25hY286W3t0eXBlOlJffV0sdXNlRGFya01vZGU6W3t0eXBlOlJffV0sY29kZVZpZXdlckNvbnRhaW5lcjpbe3R5cGU6YXIsYXJnczpbImNvZGVWaWV3ZXJDb250YWluZXIiLHtzdGF0aWM6ITAscmVhZDpLaH1dfV19KTtjbGFzcyBuJHtjb25zdHJ1Y3Rvcigpe3RoaXMubGluZXM9bnVsbCx0aGlzLmZvY3VzZWRMaW5lbm89bnVsbCx0aGlzLnVzZURhcmtNb2RlPSExLHRoaXMubW9uYWNvJD1udWxsfW5nT25Jbml0KCl7dGhpcy5tb25hY28kPVB0KEpRKCkpLnBpcGUoVnQoKCgpPT53aW5kb3cubW9uYWNvKSkpfX1mdW5jdGlvbiBvJCh0LGUpe2lmKDEmdCYmKENmKDAsImRpdiIsNiksUHUoMSksTWYoKSksMiZ0KXtjb25zdCB0PXpmKCk7RGMoMSksa3UoIiAiLHQuZm9jdXNlZFNvdXJjZUxpbmVTcGVjLmZpbGVfcGF0aCwiICIpfX1mdW5jdGlvbiBpJCh0LGUpezEmdCYmKENmKDAsImRpdiIsNyksUHUoMSwiIE5vIGZpbGUgc2VsZWN0ZWQuIENsaWNrIGEgbGluZSBudW1iZXIgaW4gdGhlIFN0YWNrIFRyYWNlIHNlY3Rpb24gdG8gc2hvdyB0aGUgc291cmNlIGNvZGUuICIpLE1mKCkpfWZ1bmN0aW9uIGEkKHQsZSl7aWYoMSZ0JiZ2ZigwLCJzb3VyY2UtY29kZSIsOCksMiZ0KXtjb25zdCB0PXpmKCk7YmYoImxpbmVzIix0LmZvY3VzZWRTb3VyY2VGaWxlQ29udGVudC5saW5lcykoImZvY3VzZWRMaW5lbm8iLHQuZm9jdXNlZFNvdXJjZUxpbmVTcGVjLmxpbmVubykoInVzZURhcmtNb2RlIix0LnVzZURhcmtNb2RlKX19biQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fG4kKX0sbiQuybVjbXA9c28oe3R5cGU6biQsc2VsZWN0b3JzOltbInNvdXJjZS1jb2RlIl1dLGlucHV0czp7bGluZXM6ImxpbmVzIixmb2N1c2VkTGluZW5vOiJmb2N1c2VkTGluZW5vIix1c2VEYXJrTW9kZToidXNlRGFya01vZGUifSxkZWNsczoyLHZhcnM6Nixjb25zdHM6W1szLCJsaW5lcyIsImZvY3VzZWRMaW5lbm8iLCJtb25hY28iLCJ1c2VEYXJrTW9kZSJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYodmYoMCwic291cmNlLWNvZGUtY29tcG9uZW50IiwwKSxfeSgxLCJhc3luYyIpKSwyJmUmJmJmKCJsaW5lcyIsbi5saW5lcykoImZvY3VzZWRMaW5lbm8iLG4uZm9jdXNlZExpbmVubykoIm1vbmFjbyIsQ3koMSw0LG4ubW9uYWNvJCkpKCJ1c2VEYXJrTW9kZSIsbi51c2VEYXJrTW9kZSl9LGRpcmVjdGl2ZXM6W2UkXSxwaXBlczpbVnZdLGVuY2Fwc3VsYXRpb246Mn0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIobiQsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3Rvcjoic291cmNlLWNvZGUiLHRlbXBsYXRlOidcbiAgICA8c291cmNlLWNvZGUtY29tcG9uZW50XG4gICAgICBbbGluZXNdPSJsaW5lcyJcbiAgICAgIFtmb2N1c2VkTGluZW5vXT0iZm9jdXNlZExpbmVubyJcbiAgICAgIFttb25hY29dPSJtb25hY28kIHwgYXN5bmMiXG4gICAgICBbdXNlRGFya01vZGVdPSJ1c2VEYXJrTW9kZSJcbiAgICA+PC9zb3VyY2UtY29kZS1jb21wb25lbnQ+XG4gICd9XX1dLChmdW5jdGlvbigpe3JldHVybltdfSkse2xpbmVzOlt7dHlwZTpSX31dLGZvY3VzZWRMaW5lbm86W3t0eXBlOlJffV0sdXNlRGFya01vZGU6W3t0eXBlOlJffV19KTtjbGFzcyByJHtjb25zdHJ1Y3Rvcigpe3RoaXMuZm9jdXNlZFNvdXJjZUZpbGVDb250ZW50PW51bGwsdGhpcy5mb2N1c2VkU291cmNlTGluZVNwZWM9bnVsbH19ciQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHIkKX0sciQuybVjbXA9c28oe3R5cGU6ciQsc2VsZWN0b3JzOltbInNvdXJjZS1maWxlcy1jb21wb25lbnQiXV0saW5wdXRzOntmb2N1c2VkU291cmNlRmlsZUNvbnRlbnQ6ImZvY3VzZWRTb3VyY2VGaWxlQ29udGVudCIsZm9jdXNlZFNvdXJjZUxpbmVTcGVjOiJmb2N1c2VkU291cmNlTGluZVNwZWMiLHVzZURhcmtNb2RlOiJ1c2VEYXJrTW9kZSJ9LGRlY2xzOjgsdmFyczozLGNvbnN0czpbWzEsInNvdXJjZS1maWxlcy1jb250YWluZXIiXSxbMSwiaGVhZGVyLXNlY3Rpb24iXSxbMSwidGl0bGUtdGFnIl0sWyJjbGFzcyIsImZpbGUtbGFiZWwiLDQsIm5nSWYiLCJuZ0lmRWxzZSJdLFsibm9GaWxlU2VsZWN0ZWQiLCIiXSxbMywibGluZXMiLCJmb2N1c2VkTGluZW5vIiwidXNlRGFya01vZGUiLDQsIm5nSWYiXSxbMSwiZmlsZS1sYWJlbCJdLFsxLCJuby1maWxlLXNlbGVjdGVkIl0sWzMsImxpbmVzIiwiZm9jdXNlZExpbmVubyIsInVzZURhcmtNb2RlIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXtpZigxJmUmJihDZigwLCJkaXYiLDApLENmKDEsImRpdiIsMSksQ2YoMiwiZGl2IiwyKSxQdSgzLCJTb3VyY2UgQ29kZSIpLE1mKCksSG0oNCxvJCwyLDEsImRpdiIsMyksSG0oNSxpJCwyLDAsIm5nLXRlbXBsYXRlIixudWxsLDQscXkpLE1mKCksSG0oNyxhJCwxLDMsInNvdXJjZS1jb2RlIiw1KSxNZigpKSwyJmUpe2NvbnN0IHQ9Rm0oNik7RGMoNCksYmYoIm5nSWYiLG51bGwhPT1uLmZvY3VzZWRTb3VyY2VMaW5lU3BlYykoIm5nSWZFbHNlIix0KSxEYygzKSxiZigibmdJZiIsbnVsbCE9PW4uZm9jdXNlZFNvdXJjZUZpbGVDb250ZW50JiZudWxsIT09bi5mb2N1c2VkU291cmNlTGluZVNwZWMmJm51bGwhPT1uLmZvY3VzZWRTb3VyY2VGaWxlQ29udGVudC5saW5lcyl9fSxkaXJlY3RpdmVzOltQdixuJF0sc3R5bGVzOlsnLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjEycHg7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtYmFkZ2Utc21hbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6OXB4fS5tYXQtYmFkZ2UtbGFyZ2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweH0ubWF0LWgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1oZWFkbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMjRweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNnB4LzI4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNXB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC44MykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtaDZbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuNjcpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWJvZHktc3Ryb25nW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjAgMCAxMnB4fS5tYXQtc21hbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDEycHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjMwMCAxMTJweC8xMTJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDVlbTttYXJnaW46MCAwIDU2cHh9Lm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDU2cHgvNTZweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDJlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDQ1cHgvNDhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDA1ZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAzNHB4LzQwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDY0cHh9Lm1hdC1ib3R0b20tc2hlZXQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhcmQtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjIwcHh9Lm1hdC1jYXJkLXN1YnRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXJkLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNoZWNrYm94LWxheW91dFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoyNHB4fS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtdHJhaWxpbmctaWNvbi5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MThweH0ubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1oZWFkZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9vdGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2FsZW5kYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhbGVuZGFyLWJvZHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxM3B4fS5tYXQtY2FsZW5kYXItYm9keS1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FsZW5kYXItcGVyaW9kLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRoW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo0MDB9Lm1hdC1kaWFsb2ctdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDoxLjEyNTtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE1MCU7bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS41ZW07d2lkdGg6MS41ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNWVtIDA7Ym9yZGVyLXRvcDouODQzNzVlbSBzb2xpZCB0cmFuc3BhcmVudH0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTAuODQzNzVlbTtwYWRkaW5nLXRvcDouODQzNzVlbX0ubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo3NSU7bWFyZ2luLXRvcDouNjY2NjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjc5MTY2NjY2NjdlbSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNDM3NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMnB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTJlbSkgc2NhbGUoMC43NSl9fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi4yNWVtIDAgLjc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMDkzNzVlbTttYXJnaW4tdG9wOi0wLjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjFlbSAwIDFlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS44NDM3NWVtO21hcmdpbi10b3A6LTAuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9aW5wdXQubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LTAuMDYyNWVtfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweH0ubWF0LXJhZGlvLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW19Lm1hdC1zbGlkZS10b2dnbGUtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXN0ZXAtc3ViLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDpub3JtYWx9Lm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRhYi1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowfS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMHB4O3BhZGRpbmctdG9wOjZweDtwYWRkaW5nLWJvdHRvbTo2cHh9Lm1hdC10b29sdGlwLWhhbmRzZXRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHh9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1zaW1wbGUtc25hY2tiYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjE7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo1MDB9Lm1hdC10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW5lc3RlZC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweH0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmVtcHR5KXt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKX0ubWF0LXJpcHBsZS5tYXQtcmlwcGxlLXVuYm91bmRlZFtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6dmlzaWJsZX0ubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItcmFkaXVzOjUwJTtwb2ludGVyLWV2ZW50czpub25lO3RyYW5zaXRpb246b3BhY2l0eSx0cmFuc2Zvcm0gMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO3RyYW5zZm9ybTpzY2FsZSgwKX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6bm9uZX0uY2RrLXZpc3VhbGx5LWhpZGRlbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjA7Y2xpcDpyZWN0KDAgMCAwIDApO2hlaWdodDoxcHg7bWFyZ2luOi0xcHg7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxcHg7d2hpdGUtc3BhY2U6bm93cmFwO291dGxpbmU6MDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb2ludGVyLWV2ZW50czpub25lO3RvcDowO2xlZnQ6MDtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXTplbXB0eXtkaXNwbGF5Om5vbmV9LmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1wYW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtwb2ludGVyLWV2ZW50czphdXRvO2JveC1zaXppbmc6Ym9yZGVyLWJveDt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O21heC13aWR0aDoxMDAlO21heC1oZWlnaHQ6MTAwJX0uY2RrLW92ZXJsYXktYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO2xlZnQ6MDtyaWdodDowO3otaW5kZXg6MTAwMDtwb2ludGVyLWV2ZW50czphdXRvOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudDt0cmFuc2l0aW9uOm9wYWNpdHkgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSk7b3BhY2l0eTowfS5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjF9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAuY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTouNn0uY2RrLW92ZXJsYXktZGFyay1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4zMil9LmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MH0uY2RrLW92ZXJsYXktY29ubmVjdGVkLXBvc2l0aW9uLWJvdW5kaW5nLWJveFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bWluLXdpZHRoOjFweDttaW4taGVpZ2h0OjFweH0uY2RrLWdsb2JhbC1zY3JvbGxibG9ja1tfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7d2lkdGg6MTAwJTtvdmVyZmxvdy15OnNjcm9sbH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemVbX25nY29udGVudC0lQ09NUCVde3Jlc2l6ZTpub25lfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmdbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OmF1dG8gIWltcG9ydGFudDtvdmVyZmxvdzpoaWRkZW4gIWltcG9ydGFudH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nLWZpcmVmb3hbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OjAgIWltcG9ydGFudH1Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0e31Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZHt9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbHthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnQgMHMgMW1zfS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCg6LXdlYmtpdC1hdXRvZmlsbCl7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZCAwcyAxbXN9Lm1hdC1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtbWRjLWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9LmhlYWRlci1zZWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjZWJlYmViO2Rpc3BsYXk6ZmxleDtoZWlnaHQ6MjRweDtwYWRkaW5nLWJvdHRvbTo2cHg7dmVydGljYWwtYWxpZ246bWlkZGxlO3doaXRlLXNwYWNlOm5vd3JhcDt3aWR0aDoxMDAlfWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC5oZWFkZXItc2VjdGlvbltfbmdjb250ZW50LSVDT01QJV0sIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5oZWFkZXItc2VjdGlvbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWJvdHRvbToxcHggc29saWQgIzU1NX0uZmlsZS1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTppbmxpbmUtYmxvY2s7Zm9udC13ZWlnaHQ6bm9ybWFsO3doaXRlLXNwYWNlOm5vcm1hbDtvdmVyZmxvdy13cmFwOmFueXdoZXJlO292ZXJmbG93LXk6YXV0bztwYWRkaW5nOjAgMjBweH0ubm8tZmlsZS1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTppbmxpbmUtYmxvY2s7Y29sb3I6IzY2NjtwYWRkaW5nOjAgMjBweDt3aGl0ZS1zcGFjZTpub3JtYWx9LnNvdXJjZS1maWxlcy1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47Zm9udC1mYW1pbHk6IlJvYm90byBNb25vIixtb25vc3BhY2U7Zm9udC1zaXplOjEwcHg7aGVpZ2h0OjEwMCV9LnRpdGxlLXRhZ1tfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTppbmxpbmUtYmxvY2s7Zm9udC13ZWlnaHQ6Ym9sZDtoZWlnaHQ6MTAwJTtwYWRkaW5nLWxlZnQ6NnB4O3ZlcnRpY2FsLWFsaWduOnRvcH1zb3VyY2UtY29kZVtfbmdjb250ZW50LSVDT01QJV17ZmxleC1ncm93OjE7d2lkdGg6MTAwJX0nXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIociQsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3Rvcjoic291cmNlLWZpbGVzLWNvbXBvbmVudCIsdGVtcGxhdGVVcmw6Ii4vc291cmNlX2ZpbGVzX2NvbXBvbmVudC5uZy5odG1sIixzdHlsZVVybHM6WyIuL3NvdXJjZV9maWxlc19jb21wb25lbnQuY3NzIl19XX1dLG51bGwse2ZvY3VzZWRTb3VyY2VGaWxlQ29udGVudDpbe3R5cGU6Ul99XSxmb2N1c2VkU291cmNlTGluZVNwZWM6W3t0eXBlOlJffV0sdXNlRGFya01vZGU6W3t0eXBlOlJffV19KTtjbGFzcyBzJHtjb25zdHJ1Y3Rvcih0KXt0aGlzLnN0b3JlPXQsdGhpcy5mb2N1c2VkU291cmNlRmlsZUNvbnRlbnQkPXRoaXMuc3RvcmUuc2VsZWN0KGZKKSx0aGlzLmZvY3VzZWRTb3VyY2VMaW5lU3BlYyQ9dGhpcy5zdG9yZS5zZWxlY3QodUopLHRoaXMudXNlRGFya01vZGUkPXRoaXMuc3RvcmUuc2VsZWN0KEZEKX19cyQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHMkKShnZihpUykpfSxzJC7JtWNtcD1zbyh7dHlwZTpzJCxzZWxlY3RvcnM6W1sidGYtZGVidWdnZXItdjItc291cmNlLWZpbGVzIl1dLGRlY2xzOjQsdmFyczo5LGNvbnN0czpbWzMsImZvY3VzZWRTb3VyY2VGaWxlQ29udGVudCIsImZvY3VzZWRTb3VyY2VMaW5lU3BlYyIsInVzZURhcmtNb2RlIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJih2ZigwLCJzb3VyY2UtZmlsZXMtY29tcG9uZW50IiwwKSxfeSgxLCJhc3luYyIpLF95KDIsImFzeW5jIiksX3koMywiYXN5bmMiKSksMiZlJiZiZigiZm9jdXNlZFNvdXJjZUZpbGVDb250ZW50IixDeSgxLDMsbi5mb2N1c2VkU291cmNlRmlsZUNvbnRlbnQkKSkoImZvY3VzZWRTb3VyY2VMaW5lU3BlYyIsQ3koMiw1LG4uZm9jdXNlZFNvdXJjZUxpbmVTcGVjJCkpKCJ1c2VEYXJrTW9kZSIsQ3koMyw3LG4udXNlRGFya01vZGUkKSl9LGRpcmVjdGl2ZXM6W3IkXSxwaXBlczpbVnZdLGVuY2Fwc3VsYXRpb246Mn0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIocyQsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoidGYtZGVidWdnZXItdjItc291cmNlLWZpbGVzIix0ZW1wbGF0ZTonXG4gICAgPHNvdXJjZS1maWxlcy1jb21wb25lbnRcbiAgICAgIFtmb2N1c2VkU291cmNlRmlsZUNvbnRlbnRdPSJmb2N1c2VkU291cmNlRmlsZUNvbnRlbnQkIHwgYXN5bmMiXG4gICAgICBbZm9jdXNlZFNvdXJjZUxpbmVTcGVjXT0iZm9jdXNlZFNvdXJjZUxpbmVTcGVjJCB8IGFzeW5jIlxuICAgICAgW3VzZURhcmtNb2RlXT0idXNlRGFya01vZGUkIHwgYXN5bmMiXG4gICAgPjwvc291cmNlLWZpbGVzLWNvbXBvbmVudD5cbiAgJ31dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmlTfV19KSxudWxsKTtjb25zdCBsJD1bInN0YWNrRnJhbWVBcnJheSJdO2Z1bmN0aW9uIGMkKHQsZSl7aWYoMSZ0JiYoQ2YoMCwic3BhbiIsMTMpLFB1KDEpLE1mKCkpLDImdCl7Y29uc3QgdD16ZigzKTtEYygxKSxrdSgiICMiLHQuZXhlY3V0aW9uSW5kZXgsIjogIil9fWZ1bmN0aW9uIGQkKHQsZSl7aWYoMSZ0JiYoQ2YoMCwic3BhbiIsMTQpLFB1KDEpLE1mKCkpLDImdCl7Y29uc3QgdD16ZigzKTtEYygxKSxrdSgiICIsdC5vcFR5cGUsIiAiKX19ZnVuY3Rpb24gcCQodCxlKXtpZigxJnQmJihDZigwLCJkaXYiKSxQdSgxLCIgRWFnZXIgZXhlY3V0aW9uICIpLEhtKDIsYyQsMiwxLCJzcGFuIiwxMSksSG0oMyxkJCwyLDEsInNwYW4iLDEyKSxNZigpKSwyJnQpe2NvbnN0IHQ9emYoMik7RGMoMiksYmYoIm5nSWYiLG51bGwhPT10Lm9wVHlwZSksRGMoMSksYmYoIm5nSWYiLG51bGwhPT10Lm9wVHlwZSl9fWZ1bmN0aW9uIG0kKHQsZSl7aWYoMSZ0JiYoQ2YoMCwic3BhbiIsMTYpLFB1KDEpLE1mKCkpLDImdCl7Y29uc3QgdD16ZigzKTtEYygxKSxrdSgnICInLHQub3BOYW1lLCciICcpfX1mdW5jdGlvbiBmJCh0LGUpe2lmKDEmdCYmKENmKDAsInNwYW4iLDE0KSxQdSgxKSxNZigpKSwyJnQpe2NvbnN0IHQ9emYoMyk7RGMoMSksa3UoIiAiLHQub3BUeXBlLCIgIil9fWZ1bmN0aW9uIHUkKHQsZSl7aWYoMSZ0JiYoQ2YoMCwiZGl2IiksUHUoMSwiIENyZWF0aW9uIG9mIGdyYXBoIG9wICIpLEhtKDIsbSQsMiwxLCJzcGFuIiwxNSksSG0oMyxmJCwyLDEsInNwYW4iLDEyKSxNZigpKSwyJnQpe2NvbnN0IHQ9emYoMik7RGMoMiksYmYoIm5nSWYiLG51bGwhPT10Lm9wTmFtZSksRGMoMSksYmYoIm5nSWYiLG51bGwhPT10Lm9wVHlwZSl9fWZ1bmN0aW9uIGckKHQsZSl7aWYoMSZ0JiYoQ2YoMCwic3BhbiIsMTcpLFB1KDEpLE1mKCkpLDImdCl7Y29uc3QgdD16ZigyKTtEYygxKSxrdSgiIChIb3N0IG5hbWU6ICIsdC5zdGFja0ZyYW1lc0ZvckRpc3BsYXlbMF0uaG9zdF9uYW1lLCIpICIpfX1mdW5jdGlvbiBoJCh0LGUpe2lmKDEmdCYmKENmKDAsImRpdiIsNyksQ2YoMSwic3BhbiIpLENmKDIsInNwYW4iLDgpLEhtKDMscCQsNCwyLCJkaXYiLDkpLEhtKDQsdSQsNCwyLCJkaXYiLDkpLE1mKCksTWYoKSxDZig1LCJkaXYiKSxIbSg2LGckLDIsMSwic3BhbiIsMTApLE1mKCksTWYoKSksMiZ0KXtjb25zdCB0PXpmKCk7RGMoMiksYmYoIm5nU3dpdGNoIix0LmNvZGVMb2NhdGlvblR5cGUpLERjKDEpLGJmKCJuZ1N3aXRjaENhc2UiLHQuQ29kZUxvY2F0aW9uVHlwZS5FWEVDVVRJT04pLERjKDEpLGJmKCJuZ1N3aXRjaENhc2UiLHQuQ29kZUxvY2F0aW9uVHlwZS5HUkFQSF9PUF9DUkVBVElPTiksRGMoMiksYmYoIm5nSWYiLG51bGwhPT10LnN0YWNrRnJhbWVzRm9yRGlzcGxheSYmdC5zdGFja0ZyYW1lc0ZvckRpc3BsYXkubGVuZ3RoPjApfX1mdW5jdGlvbiBiJCh0LGUpezEmdCYmKENmKDAsImRpdiIsMTgpLFB1KDEsIiBDbGljayBhbiBlYWdlciBleGVjdXRpb24gb3IgZ3JhcGggb3AgdG8gc2hvdyBpdHMgb3JpZ2luYWwgc3RhY2sgdHJhY2UuICIpLE1mKCkpfWZ1bmN0aW9uIHkkKHQsZSl7MSZ0JiYoQ2YoMCwiZGl2IiwyOCksUHUoMSwiIOKkkyAiKSxNZigpKX1jb25zdCBfJD1mdW5jdGlvbih0LGUpe3JldHVyblt0LGVdfTtmdW5jdGlvbiBDJCh0LGUpe2lmKDEmdCl7Y29uc3QgdD13ZigpO0NmKDAsImRpdiIsMjIpLENmKDEsImRpdiIsMjMpLFB1KDIpLE1mKCksQ2YoMywiZGl2IiwyNCksSG0oNCx5JCwyLDAsImRpdiIsMjUpLENmKDUsImRpdiIsMjYpLFJmKCJjbGljayIsKGZ1bmN0aW9uIGUoKXtjb25zdCBuPVBpKHQpLiRpbXBsaWNpdDtyZXR1cm4gemYoMikub25Tb3VyY2VMaW5lQ2xpY2tlZC5lbWl0KG4pfSkpLFB1KDYpLE1mKCksQ2YoNywiZGl2IiwyNyksUHUoOCksTWYoKSxNZigpLE1mKCl9aWYoMiZ0KXtjb25zdCB0PWUuJGltcGxpY2l0LG49emYoMik7YmYoIm5nQ2xhc3MiLGF5KDYsXyQsdC5iZWxvbmdzVG9Gb2N1c2VkRmlsZT8iZm9jdXNlZC1maWxlIjoiIix0LmZvY3VzZWQ/ImZvY3VzZWQtc3RhY2stZnJhbWUiOiIiKSksRGMoMSksTGYoInRpdGxlIix0LmZpbGVfcGF0aCksRGMoMSksa3UoIiAiLHQuY29uY2lzZV9maWxlX3BhdGgsIiAiKSxEYygyKSxiZigibmdJZiIsbi5zdGlja1RvQm90dG9tbW9zdEZyYW1lSW5Gb2N1c2VkRmlsZSYmdC5mb2N1c2VkKSxEYygyKSxrdSgiIExpbmUgIix0LmxpbmVubywiICIpLERjKDIpLGt1KCIgIix0LmZ1bmN0aW9uX25hbWUsIiAiKX19ZnVuY3Rpb24gTSQodCxlKXtpZigxJnQmJihDZigwLCJkaXYiLDE5LDIwKSxIbSgyLEMkLDksOSwiZGl2IiwyMSksTWYoKSksMiZ0KXtjb25zdCB0PXpmKCk7RGMoMiksYmYoIm5nRm9yT2YiLHQuc3RhY2tGcmFtZXNGb3JEaXNwbGF5KX19ZnVuY3Rpb24gdiQodCxlKXt9Y2xhc3MgeCR7Y29uc3RydWN0b3IoKXt0aGlzLnN0YWNrRnJhbWVzRm9yRGlzcGxheT1udWxsLHRoaXMub25Tb3VyY2VMaW5lQ2xpY2tlZD1uZXcgU3ksdGhpcy5Db2RlTG9jYXRpb25UeXBlPWNLfW5nQWZ0ZXJWaWV3Q2hlY2tlZCgpe2lmKHZvaWQgMD09PXRoaXMuc3RhY2tGcmFtZUFycmF5KXJldHVybjtjb25zdCB0PXRoaXMuc3RhY2tGcmFtZUFycmF5Lm5hdGl2ZUVsZW1lbnQsZT10LnF1ZXJ5U2VsZWN0b3IoIi5mb2N1c2VkLXN0YWNrLWZyYW1lIik7aWYobnVsbCE9PWUpcmV0dXJuIHZvaWQgdGhpcy5zY3JvbGxUb0VsZW1lbnQodCxlKTtjb25zdCBuPXQucXVlcnlTZWxlY3RvcigiLnN0YWNrLWZyYW1lLWNvbnRhaW5lcjpsYXN0LWNoaWxkIik7bnVsbCE9PW4mJnRoaXMuc2Nyb2xsVG9FbGVtZW50KHQsbil9c2Nyb2xsVG9FbGVtZW50KHQsZSl7dC5zY3JvbGxUb3A9ZS5vZmZzZXRUb3B9fXgkLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHx4JCl9LHgkLsm1Y21wPXNvKHt0eXBlOngkLHNlbGVjdG9yczpbWyJzdGFjay10cmFjZS1jb21wb25lbnQiXV0sdmlld1F1ZXJ5OmZ1bmN0aW9uIHQoZSxuKXtpZigxJmUmJlZ5KGwkLDUpLDImZSl7bGV0IHQ7QnkodD1VeSgpKSYmKG4uc3RhY2tGcmFtZUFycmF5PXQuZmlyc3QpfX0saW5wdXRzOntjb2RlTG9jYXRpb25UeXBlOiJjb2RlTG9jYXRpb25UeXBlIixvcFR5cGU6Im9wVHlwZSIsb3BOYW1lOiJvcE5hbWUiLGV4ZWN1dGlvbkluZGV4OiJleGVjdXRpb25JbmRleCIsc3RpY2tUb0JvdHRvbW1vc3RGcmFtZUluRm9jdXNlZEZpbGU6InN0aWNrVG9Cb3R0b21tb3N0RnJhbWVJbkZvY3VzZWRGaWxlIixzdGFja0ZyYW1lc0ZvckRpc3BsYXk6InN0YWNrRnJhbWVzRm9yRGlzcGxheSJ9LG91dHB1dHM6e29uU291cmNlTGluZUNsaWNrZWQ6Im9uU291cmNlTGluZUNsaWNrZWQifSxkZWNsczoxMCx2YXJzOjQsY29uc3RzOltbMSwic3RhY2stdHJhY2UtY29udGFpbmVyIl0sWzEsInN0YWNrLXRyYWNlLWhlYWRlciJdLFsxLCJzdGFjay10cmFjZS10aXRsZSJdLFsiY2xhc3MiLCJzdGFjay10cmFjZS1hdXgtaW5mbyIsNCwibmdJZiIsIm5nSWZFbHNlIl0sWyJub1N0YWNrVHJhY2UiLCIiXSxbImNsYXNzIiwic3RhY2stZnJhbWUtYXJyYXkiLDQsIm5nSWYiLCJuZ0lmRWxzZSJdLFsibG9hZGluZ1NlY3Rpb24iLCIiXSxbMSwic3RhY2stdHJhY2UtYXV4LWluZm8iXSxbMSwiY29kZS1sb2NhdGlvbi1vcmlnaW4iLDMsIm5nU3dpdGNoIl0sWzQsIm5nU3dpdGNoQ2FzZSJdLFsiY2xhc3MiLCJzdGFjay10cmFjZS1ob3N0LW5hbWUiLDQsIm5nSWYiXSxbImNsYXNzIiwiZWFnZXItZXhlY3V0aW9uLWluZGV4Iiw0LCJuZ0lmIl0sWyJjbGFzcyIsIm9wLXR5cGUiLDQsIm5nSWYiXSxbMSwiZWFnZXItZXhlY3V0aW9uLWluZGV4Il0sWzEsIm9wLXR5cGUiXSxbImNsYXNzIiwib3AtbmFtZSIsNCwibmdJZiJdLFsxLCJvcC1uYW1lIl0sWzEsInN0YWNrLXRyYWNlLWhvc3QtbmFtZSJdLFsxLCJzdGFjay10cmFjZS1hdXgtaW5mbyIsIm5vLXN0YWNrLXRyYWNlIl0sWzEsInN0YWNrLWZyYW1lLWFycmF5Il0sWyJzdGFja0ZyYW1lQXJyYXkiLCIiXSxbImNsYXNzIiwic3RhY2stZnJhbWUtY29udGFpbmVyIiwzLCJuZ0NsYXNzIiw0LCJuZ0ZvciIsIm5nRm9yT2YiXSxbMSwic3RhY2stZnJhbWUtY29udGFpbmVyIiwzLCJuZ0NsYXNzIl0sWzEsInN0YWNrLWZyYW1lLWZpbGUtcGF0aCIsMywidGl0bGUiXSxbMSwic3RhY2stZnJhbWUtbGluZW5vLWZ1bmN0aW9uIl0sWyJjbGFzcyIsInN0aWNrLXRvLWJvdHRvbW1vc3QtaW5kaWNhdG9yIiwidGl0bGUiLCJTdGlja2luZyB0byB0aGUgYm90dG9tbW9zdCBmcmFtZSBpbiB0aGUgY3VycmVudCBzb3VyY2UgZmlsZSB3aGVuIG5hdmlnYXRpbmcgZXhlY3V0aW9ucyBhbmQgZ3JhcGggb3BzLiBUbyByZW1vdmUgdGhpcyBzdGlja2luZywgY2xpY2sgYW55IG5vbi1ib3R0b21tb3N0IHN0YWNrIGZyYW1lLiIsNCwibmdJZiJdLFsxLCJzdGFjay1mcmFtZS1saW5lbm8iLDMsImNsaWNrIl0sWzEsInN0YWNrLWZyYW1lLWZ1bmN0aW9uIl0sWyJ0aXRsZSIsIlN0aWNraW5nIHRvIHRoZSBib3R0b21tb3N0IGZyYW1lIGluIHRoZSBjdXJyZW50IHNvdXJjZSBmaWxlIHdoZW4gbmF2aWdhdGluZyBleGVjdXRpb25zIGFuZCBncmFwaCBvcHMuIFRvIHJlbW92ZSB0aGlzIHN0aWNraW5nLCBjbGljayBhbnkgbm9uLWJvdHRvbW1vc3Qgc3RhY2sgZnJhbWUuIiwxLCJzdGljay10by1ib3R0b21tb3N0LWluZGljYXRvciJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7aWYoMSZlJiYoQ2YoMCwiZGl2IiwwKSxDZigxLCJkaXYiLDEpLENmKDIsInNwYW4iLDIpLFB1KDMsIiBTdGFjayBUcmFjZSAiKSxNZigpLEhtKDQsaCQsNyw0LCJkaXYiLDMpLEhtKDUsYiQsMiwwLCJuZy10ZW1wbGF0ZSIsbnVsbCw0LHF5KSxNZigpLEhtKDcsTSQsMywxLCJkaXYiLDUpLEhtKDgsdiQsMCwwLCJuZy10ZW1wbGF0ZSIsbnVsbCw2LHF5KSxNZigpKSwyJmUpe2NvbnN0IHQ9Rm0oNiksZT1GbSg5KTtEYyg0KSxiZigibmdJZiIsbnVsbCE9PW4uY29kZUxvY2F0aW9uVHlwZSkoIm5nSWZFbHNlIix0KSxEYygzKSxiZigibmdJZiIsbnVsbCE9PW4uc3RhY2tGcmFtZXNGb3JEaXNwbGF5KSgibmdJZkVsc2UiLGUpfX0sZGlyZWN0aXZlczpbUHYsRHYsUnYseHYsQ3ZdLHN0eWxlczpbJy5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjlweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHh9Lm1hdC1oMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaGVhZGxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDI0cHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTVweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWg2W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1ib2R5LXN0cm9uZ1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYXJkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FyZC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MjRweH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNhbGVuZGFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZGlhbG9nLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVlbSAwO2JvcmRlci10b3A6Ljg0Mzc1ZW0gc29saWQgdHJhbnNwYXJlbnR9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17dG9wOi0wLjg0Mzc1ZW07cGFkZGluZy10b3A6Ljg0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6NzUlO21hcmdpbi10b3A6LjY2NjY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS43OTE2NjY2NjY3ZW0pfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjQzNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDJweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIzZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4yODEyNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LjU0MTY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS42NjY2NjY2NjY3ZW0pfUBtZWRpYSBwcmludHsubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjJlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjFlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyZW0pIHNjYWxlKDAuNzUpfX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouMjVlbSAwIC43NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjA5Mzc1ZW07bWFyZ2luLXRvcDotMC41ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoxZW0gMCAxZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuODQzNzVlbTttYXJnaW4tdG9wOi0wLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMiksIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fWlucHV0Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi0wLjA2MjVlbX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHh9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtfS5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1zdGVwLXN1Yi1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6bm9ybWFsfS5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1zdGVwLWxhYmVsLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10YWItZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MH0ubWF0LXRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTBweDtwYWRkaW5nLXRvcDo2cHg7cGFkZGluZy1ib3R0b206NnB4fS5tYXQtdG9vbHRpcC1oYW5kc2V0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4fS5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtc2ltcGxlLXNuYWNrYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHh9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoxO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjE0cHh9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV06bm90KDplbXB0eSl7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9Lm1hdC1yaXBwbGUubWF0LXJpcHBsZS11bmJvdW5kZWRbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OnZpc2libGV9Lm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJhZGl1czo1MCU7cG9pbnRlci1ldmVudHM6bm9uZTt0cmFuc2l0aW9uOm9wYWNpdHksdHJhbnNmb3JtIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTt0cmFuc2Zvcm06c2NhbGUoMCl9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9LmNkay12aXN1YWxseS1oaWRkZW5bX25nY29udGVudC0lQ09NUCVde2JvcmRlcjowO2NsaXA6cmVjdCgwIDAgMCAwKTtoZWlnaHQ6MXB4O21hcmdpbjotMXB4O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4O3doaXRlLXNwYWNlOm5vd3JhcDtvdXRsaW5lOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0sIC5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cG9pbnRlci1ldmVudHM6bm9uZTt0b3A6MDtsZWZ0OjA7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV06ZW1wdHl7ZGlzcGxheTpub25lfS5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktcGFuZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6YXV0bztib3gtc2l6aW5nOmJvcmRlci1ib3g7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDttYXgtd2lkdGg6MTAwJTttYXgtaGVpZ2h0OjEwMCV9LmNkay1vdmVybGF5LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDt6LWluZGV4OjEwMDA7cG9pbnRlci1ldmVudHM6YXV0bzstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnQ7dHJhbnNpdGlvbjpvcGFjaXR5IDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpO29wYWNpdHk6MH0uY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eToxfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6LjZ9LmNkay1vdmVybGF5LWRhcmstYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMzIpfS5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV0sIC5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWNvbm5lY3RlZC1wb3NpdGlvbi1ib3VuZGluZy1ib3hbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO21pbi13aWR0aDoxcHg7bWluLWhlaWdodDoxcHh9LmNkay1nbG9iYWwtc2Nyb2xsYmxvY2tbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3dpZHRoOjEwMCU7b3ZlcmZsb3cteTpzY3JvbGx9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplW19uZ2NvbnRlbnQtJUNPTVAlXXtyZXNpemU6bm9uZX10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDphdXRvICFpbXBvcnRhbnQ7b3ZlcmZsb3c6aGlkZGVuICFpbXBvcnRhbnR9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZy1maXJlZm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDowICFpbXBvcnRhbnR9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydHt9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmR7fS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGx7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0IDBzIDFtc30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOi13ZWJraXQtYXV0b2ZpbGwpe2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmQgMHMgMW1zfS5tYXQtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LW1kYy1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5mb2N1c2VkLWZpbGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OmJvbGR9LmZvY3VzZWQtc3RhY2stZnJhbWVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMTExLDAsLjMpfS5uby1zdGFjay10cmFjZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6Z3JheX0ub3AtbmFtZVtfbmdjb250ZW50LSVDT01QJV17d29yZC13cmFwOmFueXdoZXJlfS5vcC10eXBlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNlY2VmZjE7Ym9yZGVyOjFweCBzb2xpZCAjZWJlYmViO2JvcmRlci1yYWRpdXM6NHB4O2ZvbnQtZmFtaWx5OiJSb2JvdG8gTW9ubyIsbW9ub3NwYWNlO2ZvbnQtc2l6ZToxMHB4O2hlaWdodDoxNHB4O2xpbmUtaGVpZ2h0OjE0cHg7cGFkZGluZzoxcHggM3B4O3dpZHRoOm1heC1jb250ZW50fWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC5vcC10eXBlW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLm9wLXR5cGVbX25nY29udGVudC0lQ09NUCVde2JvcmRlcjoxcHggc29saWQgIzU1NX1ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICAub3AtdHlwZVtfbmdjb250ZW50LSVDT01QJV0sIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5vcC10eXBlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiM0NTVhNjR9LnN0YWNrLWZyYW1lLWFycmF5W19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdy14OmhpZGRlbjtvdmVyZmxvdy15OmF1dG87d2lkdGg6Y2FsYygxMDAlIC0gOHB4KX0uc3RhY2stZnJhbWUtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjYTBhMGEwfS5zdGFjay1mcmFtZS1maWxlLXBhdGhbX25nY29udGVudC0lQ09NUCVde21heC13aWR0aDoxODBweDt3aWR0aDoxODBweH0uc3RhY2stZnJhbWUtbGluZW5vLWZ1bmN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXt0ZXh0LWFsaWduOnJpZ2h0O3doaXRlLXNwYWNlOm5vd3JhcH0uc3RhY2stZnJhbWUtZnVuY3Rpb25bX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6aW5saW5lLWJsb2NrO21heC13aWR0aDoyMDBweDtwYWRkaW5nLWxlZnQ6MTBweDt0ZXh0LWFsaWduOmxlZnQ7d2hpdGUtc3BhY2U6bm9ybWFsO3dpZHRoOjIwMHB4O3dvcmQtd3JhcDphbnl3aGVyZX0uc3RhY2stZnJhbWUtbGluZW5vW19uZ2NvbnRlbnQtJUNPTVAlXXtjdXJzb3I6cG9pbnRlcjtkaXNwbGF5OmlubGluZS1ibG9jazttYXgtd2lkdGg6ODBweDt0ZXh0LWFsaWduOmxlZnQ7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTt3aWR0aDo4MHB4fS5zdGFjay10cmFjZS1hdXgtaW5mb1tfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDoxNXB4O3BhZGRpbmctbGVmdDoyNHB4fS5zdGFjay10cmFjZS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1sZWZ0OjFweCBzb2xpZCAjZWJlYmViO2JveC1zaXppbmc6Ym9yZGVyLWJveDtkaXNwbGF5OmZsZXg7ZmxleC1mbG93OmNvbHVtbjtmb250LXNpemU6MTBweDtmb250LWZhbWlseToiUm9ib3RvIE1vbm8iLG1vbm9zcGFjZTtoZWlnaHQ6MTAwJTttYXJnaW4tbGVmdDo4cHg7bWF4LWhlaWdodDozNjBweDtvdmVyZmxvdy14OmhpZGRlbjtvdmVyZmxvdy15OmhpZGRlbjtwYWRkaW5nLWxlZnQ6OHB4O3dpZHRoOjEwMCV9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgLnN0YWNrLXRyYWNlLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0sIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5zdGFjay10cmFjZS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1sZWZ0OjFweCBzb2xpZCAjNTU1fS5zdGFjay10cmFjZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MCA1cHggM3B4IC0zcHggI2NjYztwYWRkaW5nLWJvdHRvbTozcHh9LnN0YWNrLXRyYWNlLWhvc3QtbmFtZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6Z3JheX0uc3RhY2stdHJhY2UtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OmJvbGR9LnN0aWNrLXRvLWJvdHRvbW1vc3QtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmlubGluZS1ibG9jaztmb250LXdlaWdodDpib2xkO2ZvbnQtc2l6ZToxMnB4O3BhZGRpbmctcmlnaHQ6M3B4fSddfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYih4JCxbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJzdGFjay10cmFjZS1jb21wb25lbnQiLHRlbXBsYXRlVXJsOiIuL3N0YWNrX3RyYWNlX2NvbXBvbmVudC5uZy5odG1sIixzdHlsZVVybHM6WyIuL3N0YWNrX3RyYWNlX2NvbXBvbmVudC5jc3MiXX1dfV0sbnVsbCx7Y29kZUxvY2F0aW9uVHlwZTpbe3R5cGU6Ul99XSxvcFR5cGU6W3t0eXBlOlJffV0sb3BOYW1lOlt7dHlwZTpSX31dLGV4ZWN1dGlvbkluZGV4Olt7dHlwZTpSX31dLHN0aWNrVG9Cb3R0b21tb3N0RnJhbWVJbkZvY3VzZWRGaWxlOlt7dHlwZTpSX31dLHN0YWNrRnJhbWVzRm9yRGlzcGxheTpbe3R5cGU6Ul99XSxvblNvdXJjZUxpbmVDbGlja2VkOlt7dHlwZTpFX31dLHN0YWNrRnJhbWVBcnJheTpbe3R5cGU6YXIsYXJnczpbInN0YWNrRnJhbWVBcnJheSJdfV19KTtjbGFzcyBPJHtjb25zdHJ1Y3Rvcih0KXt0aGlzLnN0b3JlPXQsdGhpcy5jb2RlTG9jYXRpb25UeXBlJD10aGlzLnN0b3JlLnBpcGUoclMoYlMobEosKHQ9Pm51bGw9PT10P251bGw6dC5jb2RlTG9jYXRpb25UeXBlKSkpKSx0aGlzLm9wVHlwZSQ9dGhpcy5zdG9yZS5waXBlKHJTKGJTKGxKLCh0PT5udWxsPT09dD9udWxsOnQub3BUeXBlKSkpKSx0aGlzLm9wTmFtZSQ9dGhpcy5zdG9yZS5waXBlKHJTKGJTKGxKLCh0PT5udWxsPT09dHx8dC5jb2RlTG9jYXRpb25UeXBlIT09Y0suR1JBUEhfT1BfQ1JFQVRJT04/bnVsbDp0Lm9wTmFtZSkpKSksdGhpcy5leGVjdXRpb25JbmRleCQ9dGhpcy5zdG9yZS5waXBlKHJTKGJTKGxKLCh0PT5udWxsPT09dHx8dC5jb2RlTG9jYXRpb25UeXBlIT09Y0suRVhFQ1VUSU9OP251bGw6dC5leGVjdXRpb25JbmRleCkpKSksdGhpcy5zdGlja1RvQm90dG9tbW9zdEZyYW1lSW5Gb2N1c2VkRmlsZSQ9dGhpcy5zdG9yZS5waXBlKHJTKGdKKSksdGhpcy5zdGFja0ZyYW1lc0ZvckRpc3BsYXkkPXRoaXMuc3RvcmUucGlwZShyUyhiUyhjSix1SiwoKHQsZSk9PntpZihudWxsPT09dClyZXR1cm4gbnVsbDtjb25zdCBuPVtdO2Zvcihjb25zdCBvIG9mIHQpe2NvbnN0e2hvc3RfbmFtZTp0LGZpbGVfcGF0aDppLGxpbmVubzphLGZ1bmN0aW9uX25hbWU6cn09byxzPWkuc3BsaXQoIi8iKSxsPW51bGwhPT1lJiZ0PT09ZS5ob3N0X25hbWUmJmk9PT1lLmZpbGVfcGF0aDtuLnB1c2goe2hvc3RfbmFtZTp0LGZpbGVfcGF0aDppLGNvbmNpc2VfZmlsZV9wYXRoOnNbcy5sZW5ndGgtMV0sbGluZW5vOmEsZnVuY3Rpb25fbmFtZTpyLGJlbG9uZ3NUb0ZvY3VzZWRGaWxlOmwsZm9jdXNlZDpsJiZhPT09ZS5saW5lbm99KX1yZXR1cm4gbn0pKSkpfW9uU291cmNlTGluZUNsaWNrZWQodCl7Y29uc3R7aG9zdF9uYW1lOmUsZmlsZV9wYXRoOm4sbGluZW5vOm8sZnVuY3Rpb25fbmFtZTppfT10O3RoaXMuc3RvcmUuZGlzcGF0Y2gobksoe3N0YWNrRnJhbWU6e2hvc3RfbmFtZTplLGZpbGVfcGF0aDpuLGxpbmVubzpvLGZ1bmN0aW9uX25hbWU6aX19KSl9fWZ1bmN0aW9uIFAkKHQsZSl7MSZ0JiZ2ZigwLCJ0Zi1kZWJ1Z2dlci12Mi1pbmFjdGl2ZSIpfWZ1bmN0aW9uIHckKHQsZSl7MSZ0JiYoQ2YoMCwiZGl2IiwzKSx2ZigxLCJ0Zi1kZWJ1Z2dlci12Mi1hbGVydHMiKSxDZigyLCJkaXYiLDQpLHZmKDMsInRmLWRlYnVnZ2VyLXYyLXRpbWVsaW5lIiksdmYoNCwidGYtZGVidWdnZXItdjItZ3JhcGgiKSxNZigpLHZmKDUsInRmLWRlYnVnZ2VyLXYyLWdyYXBoLWV4ZWN1dGlvbnMiKSxNZigpLENmKDYsImRpdiIsNSksdmYoNywidGYtZGVidWdnZXItdjItc291cmNlLWZpbGVzIiksdmYoOCwidGYtZGVidWdnZXItdjItc3RhY2stdHJhY2UiKSxNZigpKX1PJC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8TyQpKGdmKGlTKSl9LE8kLsm1Y21wPXNvKHt0eXBlOk8kLHNlbGVjdG9yczpbWyJ0Zi1kZWJ1Z2dlci12Mi1zdGFjay10cmFjZSJdXSxkZWNsczo3LHZhcnM6MTgsY29uc3RzOltbMywiY29kZUxvY2F0aW9uVHlwZSIsIm9wVHlwZSIsIm9wTmFtZSIsImV4ZWN1dGlvbkluZGV4Iiwic3RpY2tUb0JvdHRvbW1vc3RGcmFtZUluRm9jdXNlZEZpbGUiLCJzdGFja0ZyYW1lc0ZvckRpc3BsYXkiLCJvblNvdXJjZUxpbmVDbGlja2VkIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihDZigwLCJzdGFjay10cmFjZS1jb21wb25lbnQiLDApLFJmKCJvblNvdXJjZUxpbmVDbGlja2VkIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5vblNvdXJjZUxpbmVDbGlja2VkKGUpfSkpLF95KDEsImFzeW5jIiksX3koMiwiYXN5bmMiKSxfeSgzLCJhc3luYyIpLF95KDQsImFzeW5jIiksX3koNSwiYXN5bmMiKSxfeSg2LCJhc3luYyIpLE1mKCkpLDImZSYmYmYoImNvZGVMb2NhdGlvblR5cGUiLEN5KDEsNixuLmNvZGVMb2NhdGlvblR5cGUkKSkoIm9wVHlwZSIsQ3koMiw4LG4ub3BUeXBlJCkpKCJvcE5hbWUiLEN5KDMsMTAsbi5vcE5hbWUkKSkoImV4ZWN1dGlvbkluZGV4IixDeSg0LDEyLG4uZXhlY3V0aW9uSW5kZXgkKSkoInN0aWNrVG9Cb3R0b21tb3N0RnJhbWVJbkZvY3VzZWRGaWxlIixDeSg1LDE0LG4uc3RpY2tUb0JvdHRvbW1vc3RGcmFtZUluRm9jdXNlZEZpbGUkKSkoInN0YWNrRnJhbWVzRm9yRGlzcGxheSIsQ3koNiwxNixuLnN0YWNrRnJhbWVzRm9yRGlzcGxheSQpKX0sZGlyZWN0aXZlczpbeCRdLHBpcGVzOltWdl0sZW5jYXBzdWxhdGlvbjoyfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihPJCxbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJ0Zi1kZWJ1Z2dlci12Mi1zdGFjay10cmFjZSIsdGVtcGxhdGU6J1xuICAgIDxzdGFjay10cmFjZS1jb21wb25lbnRcbiAgICAgIFtjb2RlTG9jYXRpb25UeXBlXT0iY29kZUxvY2F0aW9uVHlwZSQgfCBhc3luYyJcbiAgICAgIFtvcFR5cGVdPSJvcFR5cGUkIHwgYXN5bmMiXG4gICAgICBbb3BOYW1lXT0ib3BOYW1lJCB8IGFzeW5jIlxuICAgICAgW2V4ZWN1dGlvbkluZGV4XT0iZXhlY3V0aW9uSW5kZXgkIHwgYXN5bmMiXG4gICAgICBbc3RpY2tUb0JvdHRvbW1vc3RGcmFtZUluRm9jdXNlZEZpbGVdPSJcbiAgICAgICAgc3RpY2tUb0JvdHRvbW1vc3RGcmFtZUluRm9jdXNlZEZpbGUkIHwgYXN5bmNcbiAgICAgICJcbiAgICAgIFtzdGFja0ZyYW1lc0ZvckRpc3BsYXldPSJzdGFja0ZyYW1lc0ZvckRpc3BsYXkkIHwgYXN5bmMiXG4gICAgICAob25Tb3VyY2VMaW5lQ2xpY2tlZCk9Im9uU291cmNlTGluZUNsaWNrZWQoJGV2ZW50KSJcbiAgICA+PC9zdGFjay10cmFjZS1jb21wb25lbnQ+XG4gICd9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTppU31dfSksbnVsbCk7Y2xhc3MgayR7Y29uc3RydWN0b3IoKXt0aGlzLnJ1bnM9e30sdGhpcy5ydW5JZHM9W10sdGhpcy5hY3RpdmVSdW5JZD1udWxsfX1rJC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8ayQpfSxrJC7JtWNtcD1zbyh7dHlwZTprJCxzZWxlY3RvcnM6W1siZGVidWdnZXItY29tcG9uZW50Il1dLGlucHV0czp7cnVuczoicnVucyIscnVuSWRzOiJydW5JZHMiLGFjdGl2ZVJ1bklkOiJhY3RpdmVSdW5JZCJ9LGRlY2xzOjQsdmFyczoyLGNvbnN0czpbWzEsImRlYnVnZ2VyLWNvbnRhaW5lciJdLFs0LCJuZ0lmIiwibmdJZkVsc2UiXSxbImRhdGFBdmFpbGFibGUiLCIiXSxbMSwidG9wLXNlY3Rpb24iXSxbMSwidG9wLWNlbnRlci1zZWN0aW9uIl0sWzEsImJvdHRvbS1zZWN0aW9uIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXtpZigxJmUmJihDZigwLCJkaXYiLDApLEhtKDEsUCQsMSwwLCJ0Zi1kZWJ1Z2dlci12Mi1pbmFjdGl2ZSIsMSksSG0oMix3JCw5LDAsIm5nLXRlbXBsYXRlIixudWxsLDIscXkpLE1mKCkpLDImZSl7Y29uc3QgdD1GbSgzKTtEYygxKSxiZigibmdJZiIsMD09PW4ucnVuSWRzLmxlbmd0aCkoIm5nSWZFbHNlIix0KX19LGRpcmVjdGl2ZXM6W1B2LFBYLENKLGJRLElRLFlRLHMkLE8kXSxzdHlsZXM6WycubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTJweDtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1iYWRnZS1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo5cHh9Lm1hdC1iYWRnZS1sYXJnZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4fS5tYXQtaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWhlYWRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAyNHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE2cHgvMjhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE1cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjgzKS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1oNltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC42NykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtYm9keS1zdHJvbmdbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MCAwIDEycHh9Lm1hdC1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FwdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTJweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6MzAwIDExMnB4LzExMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wNWVtO21hcmdpbjowIDAgNTZweH0ubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNTZweC81NnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMmVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNDVweC80OHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMDVlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDM0cHgvNDBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgNjRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FyZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjBweH0ubWF0LWNhcmQtc3VidGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcmQtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2hlY2tib3gtbGF5b3V0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC10cmFpbGluZy1pY29uLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmUubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxOHB4fS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jYWxlbmRhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FsZW5kYXItYm9keVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEzcHh9Lm1hdC1jYWxlbmRhci1ib2R5LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgdGhbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWRpYWxvZy10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMTI1O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTUwJTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjVlbTt3aWR0aDoxLjVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW07bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi41ZW0gMDtib3JkZXItdG9wOi44NDM3NWVtIHNvbGlkIHRyYW5zcGFyZW50fS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3RvcDotMC44NDM3NWVtO3BhZGRpbmctdG9wOi44NDM3NWVtfS5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjc1JTttYXJnaW4tdG9wOi42NjY2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNzkxNjY2NjY2N2VtKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi40Mzc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAycHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyM2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMjgxMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi41NDE2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNjY2NjY2NjY2N2VtKX1AbWVkaWEgcHJpbnR7Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIyZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIxZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMmVtKSBzY2FsZSgwLjc1KX19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjI1ZW0gMCAuNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4wOTM3NWVtO21hcmdpbi10b3A6LTAuNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MWVtIDAgMWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjg0Mzc1ZW07bWFyZ2luLXRvcDotMC4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH1pbnB1dC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDotMC4wNjI1ZW19Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1wYWdlLXNpemVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4fS5tYXQtcmFkaW8tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3RbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbX0ubWF0LXNsaWRlLXRvZ2dsZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXN0ZXBwZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc3RlcC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtc3RlcC1zdWItbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0Om5vcm1hbH0ubWF0LXN0ZXAtbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtc3RlcC1sYWJlbC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdGFiLWdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjB9Lm1hdC10b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEwcHg7cGFkZGluZy10b3A6NnB4O3BhZGRpbmctYm90dG9tOjZweH0ubWF0LXRvb2x0aXAtaGFuZHNldFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7cGFkZGluZy10b3A6OHB4O3BhZGRpbmctYm90dG9tOjhweH0ubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTZweH0ubWF0LW9wdGdyb3VwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LXNpbXBsZS1zbmFja2Jhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4fS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbltfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MTtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRyZWVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbmVzdGVkLXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtc2l6ZToxNHB4fS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdOm5vdCg6ZW1wdHkpe3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApfS5tYXQtcmlwcGxlLm1hdC1yaXBwbGUtdW5ib3VuZGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzp2aXNpYmxlfS5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO2JvcmRlci1yYWRpdXM6NTAlO3BvaW50ZXItZXZlbnRzOm5vbmU7dHJhbnNpdGlvbjpvcGFjaXR5LHRyYW5zZm9ybSAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7dHJhbnNmb3JtOnNjYWxlKDApfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpub25lfS5jZGstdmlzdWFsbHktaGlkZGVuW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6MDtjbGlwOnJlY3QoMCAwIDAgMCk7aGVpZ2h0OjFweDttYXJnaW46LTFweDtvdmVyZmxvdzpoaWRkZW47cGFkZGluZzowO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjFweDt3aGl0ZS1zcGFjZTpub3dyYXA7b3V0bGluZTowOy13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BvaW50ZXItZXZlbnRzOm5vbmU7dG9wOjA7bGVmdDowO2hlaWdodDoxMDAlO3dpZHRoOjEwMCV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdOmVtcHR5e2Rpc3BsYXk6bm9uZX0uY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LXBhbmVbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3BvaW50ZXItZXZlbnRzOmF1dG87Ym94LXNpemluZzpib3JkZXItYm94O3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7bWF4LXdpZHRoOjEwMCU7bWF4LWhlaWdodDoxMDAlfS5jZGstb3ZlcmxheS1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7bGVmdDowO3JpZ2h0OjA7ei1pbmRleDoxMDAwO3BvaW50ZXItZXZlbnRzOmF1dG87LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50O3RyYW5zaXRpb246b3BhY2l0eSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKTtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5Oi42fS5jZGstb3ZlcmxheS1kYXJrLWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjMyKX0uY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTowfS5jZGstb3ZlcmxheS1jb25uZWN0ZWQtcG9zaXRpb24tYm91bmRpbmctYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjttaW4td2lkdGg6MXB4O21pbi1oZWlnaHQ6MXB4fS5jZGstZ2xvYmFsLXNjcm9sbGJsb2NrW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt3aWR0aDoxMDAlO292ZXJmbG93LXk6c2Nyb2xsfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZVtfbmdjb250ZW50LSVDT01QJV17cmVzaXplOm5vbmV9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZ1tfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6YXV0byAhaW1wb3J0YW50O292ZXJmbG93OmhpZGRlbiAhaW1wb3J0YW50fXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmctZmlyZWZveFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6MCAhaW1wb3J0YW50fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnR7fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5ke30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxse2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydCAwcyAxbXN9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06bm90KDotd2Via2l0LWF1dG9maWxsKXthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5kIDBzIDFtc30ubWF0LWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1tZGMtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0uYm90dG9tLXNlY3Rpb25bX25nY29udGVudC0lQ09NUCVde2JveC1zaXppbmc6Ym9yZGVyLWJveDtib3JkZXItdG9wOjFweCBzb2xpZCAjZWJlYmViO2Rpc3BsYXk6ZmxleDtmbGV4LWdyb3c6MTtoZWlnaHQ6MzQlO3BhZGRpbmctdG9wOjZweH1ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICAuYm90dG9tLXNlY3Rpb25bX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAuYm90dG9tLXNlY3Rpb25bX25nY29udGVudC0lQ09NUCVde2JvcmRlci10b3A6MXB4IHNvbGlkICM1NTV9LmRlYnVnZ2VyLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Ym94LXNpemluZzpib3JkZXItYm94O2hlaWdodDoxMDAlO292ZXJmbG93OmhpZGRlbn0udG9wLXNlY3Rpb25bX25nY29udGVudC0lQ09NUCVde2JveC1zaXppbmc6Ym9yZGVyLWJveDtkaXNwbGF5OmZsZXg7ZmxleC1ncm93OjE7aGVpZ2h0OjY2JTtwYWRkaW5nOjZweCAwfXRmLWRlYnVnZ2VyLXYyLWFsZXJ0c1tfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLXJpZ2h0OjFweCBzb2xpZCAjZWJlYmViO2Rpc3BsYXk6aW5saW5lLWJsb2NrO21hcmdpbi1yaWdodDoxMHB4O21pbi13aWR0aDoxNjBweDt3aWR0aDpjYWxjKDE1JSAtIDExcHgpfWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIHRmLWRlYnVnZ2VyLXYyLWFsZXJ0c1tfbmdjb250ZW50LSVDT01QJV0sIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIHRmLWRlYnVnZ2VyLXYyLWFsZXJ0c1tfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLXJpZ2h0OjFweCBzb2xpZCAjNTU1fXRmLWRlYnVnZ2VyLXYyLWdyYXBoLWV4ZWN1dGlvbnNbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6aW5saW5lLWJsb2NrO2ZsZXgtZ3JvdzoxO21pbi13aWR0aDo1NDBweDt3aWR0aDo1NDBweH10Zi1kZWJ1Z2dlci12Mi1zb3VyY2UtZmlsZXNbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6aW5saW5lLWJsb2NrO2hlaWdodDoxMDAlO3dpZHRoOjcwJX10Zi1kZWJ1Z2dlci12Mi1zdGFjay10cmFjZVtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTppbmxpbmUtYmxvY2s7ZmxleC1ncm93OjE7aGVpZ2h0OjEwMCU7bWluLXdpZHRoOjU0MHB4O3dpZHRoOjU0MHB4fS50b3AtY2VudGVyLXNlY3Rpb25bX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6aW5saW5lLWJsb2NrO292ZXJmbG93OmF1dG87d2lkdGg6NTUlfXRmLWRlYnVnZ2VyLXYyLXRpbWVsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmJsb2NrfXRmLWRlYnVnZ2VyLXYyLWdyYXBoW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItdG9wOjFweCBzb2xpZCAjZWJlYmViO2Rpc3BsYXk6YmxvY2s7bWFyZ2luLXRvcDo1cHh9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgdGYtZGVidWdnZXItdjItZ3JhcGhbX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICB0Zi1kZWJ1Z2dlci12Mi1ncmFwaFtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLXRvcDoxcHggc29saWQgIzU1NX0nXSxjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoayQsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoiZGVidWdnZXItY29tcG9uZW50Iix0ZW1wbGF0ZVVybDoiLi9kZWJ1Z2dlcl9jb21wb25lbnQubmcuaHRtbCIsc3R5bGVVcmxzOlsiLi9kZWJ1Z2dlcl9jb21wb25lbnQuY3NzIl0sY2hhbmdlRGV0ZWN0aW9uOmpuLk9uUHVzaH1dfV0sbnVsbCx7cnVuczpbe3R5cGU6Ul99XSxydW5JZHM6W3t0eXBlOlJffV0sYWN0aXZlUnVuSWQ6W3t0eXBlOlJffV19KTtjbGFzcyBTJHtjb25zdHJ1Y3Rvcih0KXt0aGlzLnN0b3JlPXQsdGhpcy5ydW5zJD10aGlzLnN0b3JlLnBpcGUoclMoQ0spKSx0aGlzLnJ1bnNJZHMkPXRoaXMuc3RvcmUucGlwZShyUyhiUyhDSywodD0+T2JqZWN0LmtleXModCkpKSkpLHRoaXMuYWN0aXZlUnVuSWQkPXRoaXMuc3RvcmUucGlwZShyUyh2SykpfW5nT25Jbml0KCl7dGhpcy5zdG9yZS5kaXNwYXRjaCh3WCgpKX1uZ09uRGVzdHJveSgpe3RoaXMuc3RvcmUuZGlzcGF0Y2goa1goKSl9fVMkLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxTJCkoZ2YoaVMpKX0sUyQuybVjbXA9c28oe3R5cGU6UyQsc2VsZWN0b3JzOltbInRmLWRlYnVnZ2VyLXYyIl1dLGRlY2xzOjQsdmFyczo5LGNvbnN0czpbWzMsInJ1bnMiLCJydW5JZHMiLCJhY3RpdmVSdW5JZCJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYodmYoMCwiZGVidWdnZXItY29tcG9uZW50IiwwKSxfeSgxLCJhc3luYyIpLF95KDIsImFzeW5jIiksX3koMywiYXN5bmMiKSksMiZlJiZiZigicnVucyIsQ3koMSwzLG4ucnVucyQpKSgicnVuSWRzIixDeSgyLDUsbi5ydW5zSWRzJCkpKCJhY3RpdmVSdW5JZCIsQ3koMyw3LG4uYWN0aXZlUnVuSWQkKSl9LGRpcmVjdGl2ZXM6W2skXSxwaXBlczpbVnZdLHN0eWxlczpbIltfbmdob3N0LSVDT01QJV0ge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgfSJdfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihTJCxbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJ0Zi1kZWJ1Z2dlci12MiIsdGVtcGxhdGU6J1xuICAgIDxkZWJ1Z2dlci1jb21wb25lbnRcbiAgICAgIFtydW5zXT0icnVucyQgfCBhc3luYyJcbiAgICAgIFtydW5JZHNdPSJydW5zSWRzJCB8IGFzeW5jIlxuICAgICAgW2FjdGl2ZVJ1bklkXT0iYWN0aXZlUnVuSWQkIHwgYXN5bmMiXG4gICAgPjwvZGVidWdnZXItY29tcG9uZW50PlxuICAnLHN0eWxlczpbIlxuICAgICAgOmhvc3Qge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgfVxuICAgICJdfV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6aVN9XX0pLG51bGwpO2NvbnN0IEQkPSJkZWJ1Z2dlci12MiI7ZnVuY3Rpb24gUiQodCxlLG4sbyxpKXtpZihuPD0wfHwhTnVtYmVyLmlzSW50ZWdlcihuKSl0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgcGFnZVNpemU6ICR7bn1gKTtpZihlPm8pdGhyb3cgbmV3IEVycm9yKGBlbmQgaW5kZXggKCR7ZX0pIGV4Y2VlZHMgdG90YWwgbnVtYmVyIG9mIGl0ZW1zICgke299KWApO2lmKGUtdD5uKXRocm93IG5ldyBFcnJvcigiYmVnaW4tZW5kIHNwYW4gZXhjZWVkcyBwYWdlIHNpemUsIHdoaWNoIGlzIG5vdCBhbGxvd2VkIik7Y29uc3QgYT1bXSxyPU1hdGguZmxvb3IodC9uKTsoIShyIGluIGkpfHxpW3JdPG4mJnIqbitpW3JdPG8pJiZhLnB1c2gocik7Y29uc3Qgcz1NYXRoLmZsb29yKChlLTEpL24pO2lmKHMhPT1yKXsoIShzIGluIGkpfHxzKm4raVtzXTxlJiZlPG8pJiZhLnB1c2gocyl9cmV0dXJuIGF9Y2xhc3MgRSR7Y29uc3RydWN0b3IodCxlLG4pe3RoaXMuYWN0aW9ucyQ9dCx0aGlzLnN0b3JlPWUsdGhpcy5kYXRhU291cmNlPW4sdGhpcy5sb2FkRGF0YSQ9V1MoKCgpPT57Y29uc3QgdD10aGlzLmxvYWREZWJ1Z2dlclJ1bnMocGUodGhpcy5vbkRlYnVnZ2VyRGF0YVBvbGwoKSx0aGlzLm9uQ29yZVJlbG9hZCgpKSkucGlwZShJZSgpKSxlPXRoaXMubG9hZFNvdXJjZUZpbGVMaXN0KHQpLG49dGhpcy5jcmVhdGVOdW1FeGVjdXRpb25Mb2FkZXIodCksbz10aGlzLmNyZWF0ZU51bUFsZXJ0c0FuZEJyZWFrZG93bkxvYWRlcih0KSxpPXRoaXMub25BbGVydFR5cGVGb2N1c2VkKCksYT10aGlzLmZldGNoRXhlY3V0aW9uRGlnZXN0c0ZvckFsZXJ0VHlwZUZvY3VzKGkpLHI9dGhpcy5jcmVhdGVJbml0aWFsRXhlY3V0aW9uRGV0ZWN0b3IobikucGlwZShJZSgpKSxzPXRoaXMuY3JlYXRlRXhlY3V0aW9uRGlnZXN0TG9hZGVyKHBlKHRoaXMub25FeGVjdXRpb25TY3JvbGwoKSx0aGlzLmNyZWF0ZUluaXRpYWxFeGVjdXRpb25EaWdlc3QociksYSkpLGw9dGhpcy5jcmVhdGVFeGVjdXRpb25EYXRhQW5kU3RhY2tGcmFtZXNMb2FkZXIocGUodGhpcy5vbkV4ZWN1dGlvbkRpZ2VzdEZvY3VzZWQoKSxyLnBpcGUocWUodGhpcy5zdG9yZS5zZWxlY3QodkspLHRoaXMuc3RvcmUuc2VsZWN0KGlKKSksVnQoKChbLHQsZV0pPT4oe2FjdGl2ZVJ1bklkOnQsbG9hZGVkRXhlY3V0aW9uRGF0YTplLGZvY3VzSW5kZXg6MH0pKSkpKSk7cmV0dXJuIHBlKG8scyxsLHRoaXMuY3JlYXRlTnVtR3JhcGhFeGVjdXRpb25Mb2FkZXIodCksZSx0aGlzLm9uU291cmNlRmlsZUZvY3VzZWQoKSx0aGlzLmxvYWRHcmFwaEV4ZWN1dGlvblBhZ2VzKHRoaXMub25HcmFwaEV4ZWN1dGlvblNjcm9sbCgpKSx0aGlzLmxvYWRHcmFwaE9wU3RhY2tGcmFtZXModGhpcy5sb2FkR3JhcGhPcEluZm8oKSkpLnBpcGUoVnQoKCgpPT4oe30pKSkpfSkse2Rpc3BhdGNoOiExfSl9b25EZWJ1Z2dlckRhdGFQb2xsKCl7cmV0dXJuIHRoaXMuYWN0aW9ucyQucGlwZSgkUyh3WCksVmUoKHQ9PihmdW5jdGlvbiBlKHQsbixvKXtyZXR1cm4gdC5waXBlKHplKCh0PT50LnBpcGUocWUobiksT2UoKChbLHRdKT0+ZGUodCkpKSkpKSxqZShvKSxWdCgoKCk9Pnt9KSkpfSkoenQodCksdGhpcy5zdG9yZS5zZWxlY3QoeEspLnBpcGUoVnQoKHQ9PihmdW5jdGlvbiBlKHQpe3JldHVybiB0PjZlND82ZTQ6dD40ZTM/dDoyZTN9KSh0KSkpKSx0aGlzLmFjdGlvbnMkLnBpcGUoJFMoa1gpKSkpKSxXZSgoKCk9PnRoaXMuc3RvcmUuZGlzcGF0Y2goU1goKSkpKSxWdCgoKCk9Pnt9KSkpfW9uQ29yZVJlbG9hZCgpe3JldHVybiBwZSh0aGlzLmFjdGlvbnMkLnBpcGUoJFMoSkUsUUUpKSx0aGlzLmFjdGlvbnMkLnBpcGUoJFMoWkUpKS5waXBlKHFlKHRoaXMuc3RvcmUuc2VsZWN0KE1LKSksdWUoKChbLHRdKT0+dC5zdGF0ZT09PVVFLk5PVF9MT0FERUR8fHQuc3RhdGU9PT1VRS5GQUlMRUQmJm51bGw9PT10Lmxhc3RMb2FkZWRUaW1lSW5NcykpKSkucGlwZShxZSh0aGlzLnN0b3JlLnNlbGVjdChlVCkpLHVlKCgoWyx0XSk9PnQ9PT1EJCkpLFdlKCgoKT0+dGhpcy5zdG9yZS5kaXNwYXRjaChTWCgpKSkpLFZ0KCgoKT0+e30pKSl9bG9hZERlYnVnZ2VyUnVucyh0KXtyZXR1cm4gdC5waXBlKHFlKHRoaXMuc3RvcmUuc2VsZWN0KE1LKSksdWUoKChbLHtzdGF0ZTp0fV0pPT50IT09VUUuTE9BRElORykpLFdlKCgoKT0+dGhpcy5zdG9yZS5kaXNwYXRjaChEWCgpKSkpLCR0KCgoKT0+dGhpcy5kYXRhU291cmNlLmZldGNoUnVucygpLnBpcGUoV2UoKHQ9Pnt0aGlzLnN0b3JlLmRpc3BhdGNoKFJYKHtydW5zOnR9KSl9KSksVnQoKCgpPT57fSkpKSkpKX1jcmVhdGVOdW1FeGVjdXRpb25Mb2FkZXIodCl7cmV0dXJuIHQucGlwZShxZSh0aGlzLnN0b3JlLnNlbGVjdChDSyksdGhpcy5zdG9yZS5zZWxlY3QoQUspKSx1ZSgoKFssdCxlXSk9Pk9iamVjdC5rZXlzKHQpLmxlbmd0aD4wJiZlLnN0YXRlIT09VUUuTE9BRElORykpLFdlKCgoKT0+dGhpcy5zdG9yZS5kaXNwYXRjaChJWCgpKSkpLCR0KCgoWyx0XSk9Pntjb25zdCBlPU9iamVjdC5rZXlzKHQpWzBdO3JldHVybiB0aGlzLmRhdGFTb3VyY2UuZmV0Y2hFeGVjdXRpb25EaWdlc3RzKGUsMCwwKS5waXBlKFdlKCh0PT57dGhpcy5zdG9yZS5kaXNwYXRjaChIWCh7bnVtRXhlY3V0aW9uczp0Lm51bV9kaWdlc3RzfSkpfSkpLFZ0KCgoKT0+e30pKSl9KSkpfWNyZWF0ZU51bUdyYXBoRXhlY3V0aW9uTG9hZGVyKHQpe3JldHVybiB0LnBpcGUocWUodGhpcy5zdG9yZS5zZWxlY3QoQ0spLHRoaXMuc3RvcmUuc2VsZWN0KEJLKSksdWUoKChbLHQsZV0pPT5PYmplY3Qua2V5cyh0KS5sZW5ndGg+MCYmZS5zdGF0ZSE9PVVFLkxPQURJTkcpKSxXZSgoKCk9PnRoaXMuc3RvcmUuZGlzcGF0Y2goR1goKSkpKSwkdCgoKFssdF0pPT57Y29uc3QgZT1PYmplY3Qua2V5cyh0KVswXTtyZXR1cm4gdGhpcy5kYXRhU291cmNlLmZldGNoR3JhcGhFeGVjdXRpb25EaWdlc3RzKGUsMCwwKS5waXBlKFdlKCh0PT57dGhpcy5zdG9yZS5kaXNwYXRjaChZWCh7bnVtR3JhcGhFeGVjdXRpb25zOnQubnVtX2RpZ2VzdHN9KSl9KSksVnQoKCgpPT57fSkpKX0pKSl9Y3JlYXRlTnVtQWxlcnRzQW5kQnJlYWtkb3duTG9hZGVyKHQpe3JldHVybiB0LnBpcGUocWUodGhpcy5zdG9yZS5zZWxlY3QoQ0spLHRoaXMuc3RvcmUuc2VsZWN0KFBLKSksdWUoKChbLHQsZV0pPT5PYmplY3Qua2V5cyh0KS5sZW5ndGg+MCYmZS5zdGF0ZSE9PVVFLkxPQURJTkcpKSxXZSgoKCk9PnRoaXMuc3RvcmUuZGlzcGF0Y2goQVgoKSkpKSwkdCgoKFssdF0pPT57Y29uc3QgZT1PYmplY3Qua2V5cyh0KVswXTtyZXR1cm4gdGhpcy5kYXRhU291cmNlLmZldGNoQWxlcnRzKGUsMCwwKS5waXBlKFdlKCh0PT57dGhpcy5zdG9yZS5kaXNwYXRjaChUWCh7bnVtQWxlcnRzOnQubnVtX2FsZXJ0cyxhbGVydHNCcmVha2Rvd246dC5hbGVydHNfYnJlYWtkb3dufSkpfSkpLFZ0KCgoKT0+e30pKSl9KSkpfWNyZWF0ZUluaXRpYWxFeGVjdXRpb25EZXRlY3Rvcih0KXtyZXR1cm4gdC5waXBlKHFlKHRoaXMuc3RvcmUuc2VsZWN0KE5LKSx0aGlzLnN0b3JlLnNlbGVjdChUSykpLHVlKCgoWyx0LGVdKT0+dD4wJiYwPT09T2JqZWN0LmtleXMoZS5wYWdlTG9hZGVkU2l6ZXMpLmxlbmd0aCkpLFZ0KCgoKT0+e30pKSl9Y3JlYXRlSW5pdGlhbEV4ZWN1dGlvbkRpZ2VzdCh0KXtyZXR1cm4gdC5waXBlKHFlKHRoaXMuc3RvcmUuc2VsZWN0KE5LKSx0aGlzLnN0b3JlLnNlbGVjdCh2SyksdGhpcy5zdG9yZS5zZWxlY3QoSUspKSx1ZSgoKFssLHRdKT0+bnVsbCE9PXQpKSxWdCgoKFssdCxlLG5dKT0+KHtiZWdpbjowLGVuZDpNYXRoLm1pbih0LG4pLHJ1bklkOmV9KSkpKX1vbkV4ZWN1dGlvblNjcm9sbCgpe3JldHVybiB0aGlzLmFjdGlvbnMkLnBpcGUoJFMoQlgsVlgsalgpLHFlKHRoaXMuc3RvcmUuc2VsZWN0KHZLKSx0aGlzLnN0b3JlLnNlbGVjdCh6SyksdGhpcy5zdG9yZS5zZWxlY3QoTkspLHRoaXMuc3RvcmUuc2VsZWN0KEhLKSx0aGlzLnN0b3JlLnNlbGVjdChJSykpLHVlKCgoW3RdKT0+bnVsbCE9PXQpKSxWdCgoKFssdCxlLG4sbyxpXSk9Pih7cnVuSWQ6dCxiZWdpbjplLGVuZDpNYXRoLm1pbihuLGUrbykscGFnZVNpemU6aX0pKSkscWUodGhpcy5zdG9yZS5zZWxlY3QoVEspKSxWdCgoKFt0LGVdKT0+KHtwcm9wczp0LGxvYWRlZDplLG1pc3NpbmdQYWdlczpSJCh0LmJlZ2luLHQuZW5kLHQucGFnZVNpemUsZS5udW1FeGVjdXRpb25zLGUucGFnZUxvYWRlZFNpemVzKX0pKSksdWUoKCh7bWlzc2luZ1BhZ2VzOnR9KT0+dC5sZW5ndGg+MCkpLFZ0KCgoe3Byb3BzOnQsbG9hZGVkOmUsbWlzc2luZ1BhZ2VzOm59KT0+e2NvbnN0e3J1bklkOm8scGFnZVNpemU6aX09dDtyZXR1cm57YmVnaW46blswXSppLGVuZDpNYXRoLm1pbihlLm51bUV4ZWN1dGlvbnMsKG5bbi5sZW5ndGgtMV0rMSkqaSkscnVuSWQ6b319KSkpfWNyZWF0ZUV4ZWN1dGlvbkRpZ2VzdExvYWRlcih0KXtyZXR1cm4gdC5waXBlKHFlKHRoaXMuc3RvcmUuc2VsZWN0KFRLKSksdWUoKChbe2JlZ2luOnQsZW5kOmV9LG5dKT0+ZT50JiYhKGZ1bmN0aW9uIG8odCxlLG4pe2lmKGU+PW4pdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCBiZWdpbiB0byBiZSBsZXNzIHRoYW4gZW5kLCBidXQgZ290IGJlZ2luPSR7ZX0sIGVuZD0ke259YCk7cmV0dXJuLTEhPT10LmZpbmRJbmRleCgodD0+dC5iZWdpbj49ZSYmdC5lbmQ8PW4pKX0pKG4ubG9hZGluZ1Jhbmdlcyx0LGUpKSksV2UoKChbe2JlZ2luOnQsZW5kOmV9XSk9Pnt0aGlzLnN0b3JlLmRpc3BhdGNoKEZYKHtiZWdpbjp0LGVuZDplfSkpfSkpLCR0KCgoW3tydW5JZDp0LGJlZ2luOmUsZW5kOm59XSk9PnRoaXMuZGF0YVNvdXJjZS5mZXRjaEV4ZWN1dGlvbkRpZ2VzdHModCxlLG4pLnBpcGUoV2UoKHQ9Pnt0aGlzLnN0b3JlLmRpc3BhdGNoKExYKHQpKX0pKSxWdCgoKCk9Pnt9KSkpKSkpfW9uRXhlY3V0aW9uRGlnZXN0Rm9jdXNlZCgpe3JldHVybiB0aGlzLmFjdGlvbnMkLnBpcGUoJFMoVVgpLHFlKHRoaXMuc3RvcmUuc2VsZWN0KHZLKSx0aGlzLnN0b3JlLnNlbGVjdChpSiksdGhpcy5zdG9yZS5zZWxlY3QoekspKSxWdCgoKFt0LGUsbixvXSk9Pih7YWN0aXZlUnVuSWQ6ZSxsb2FkZWRFeGVjdXRpb25EYXRhOm4sZm9jdXNJbmRleDpvK3QuZGlzcGxheUluZGV4fSkpKSl9Y3JlYXRlRXhlY3V0aW9uRGF0YUFuZFN0YWNrRnJhbWVzTG9hZGVyKHQpe3JldHVybiB0LnBpcGUodWUoKCh7YWN0aXZlUnVuSWQ6dCxsb2FkZWRFeGVjdXRpb25EYXRhOmUsZm9jdXNJbmRleDpufSk9Pm51bGwhPT10JiZudWxsIT09biYmdm9pZCAwPT09ZVtuXSkpLCR0KCgoe2FjdGl2ZVJ1bklkOnQsZm9jdXNJbmRleDplfSk9Pntjb25zdCBuPWUsbz1uKzE7cmV0dXJuIHRoaXMuZGF0YVNvdXJjZS5mZXRjaEV4ZWN1dGlvbkRhdGEodCxuLG8pLnBpcGUoV2UoKHQ9Pnt0aGlzLnN0b3JlLmRpc3BhdGNoKFdYKHQpKX0pKSxWdCgodD0+KHtleGVjdXRpb25EYXRhOnQsYmVnaW46bixlbmQ6b30pKSkpfSkpLFZ0KCgoe2V4ZWN1dGlvbkRhdGE6dH0pPT50LmV4ZWN1dGlvbnNbMF0pKSxxZSh0aGlzLnN0b3JlLnNlbGVjdCh2SyksdGhpcy5zdG9yZS5zZWxlY3QockopKSx1ZSgoKFt0LGUsbl0pPT57aWYobnVsbD09PWUpcmV0dXJuITE7Zm9yKGNvbnN0IGUgb2YgdC5zdGFja19mcmFtZV9pZHMpaWYodm9pZCAwPT09bltlXSlyZXR1cm4hMDtyZXR1cm4hMX0pKSwkdCgoKFt0LGVdKT0+e2NvbnN0IG49dC5zdGFja19mcmFtZV9pZHM7cmV0dXJuIHRoaXMuZGF0YVNvdXJjZS5mZXRjaFN0YWNrRnJhbWVzKGUsbikucGlwZShXZSgodD0+e2NvbnN0IGU9e307Zm9yKGxldCBvPTA7bzxuLmxlbmd0aDsrK28pZVtuW29dXT10LnN0YWNrX2ZyYW1lc1tvXTt0aGlzLnN0b3JlLmRpc3BhdGNoKGFLKHtzdGFja0ZyYW1lczplfSkpfSkpLFZ0KCgoKT0+e30pKSl9KSkpfW9uR3JhcGhFeGVjdXRpb25TY3JvbGwoKXtyZXR1cm4gdGhpcy5hY3Rpb25zJC5waXBlKCRTKFhYKSxDZSgxMDApLHFlKHRoaXMuc3RvcmUuc2VsZWN0KHZLKSx0aGlzLnN0b3JlLnNlbGVjdChWSyksdGhpcy5zdG9yZS5zZWxlY3QoakspKSx1ZSgoKFssdCxlXSk9Pm51bGwhPT10JiZlPjApKSxWdCgoKFssdCxlLG5dKT0+KHtydW5JZDp0LG51bUdyYXBoRXhlY3V0aW9uczplLHNjcm9sbEJlZ2luSW5kZXg6bn0pKSkscWUodGhpcy5zdG9yZS5zZWxlY3QoV0spLHRoaXMuc3RvcmUuc2VsZWN0KFVLKSx0aGlzLnN0b3JlLnNlbGVjdChHSyksdGhpcy5zdG9yZS5zZWxlY3QoWUspKSxWdCgoKFt7cnVuSWQ6dCxudW1HcmFwaEV4ZWN1dGlvbnM6ZSxzY3JvbGxCZWdpbkluZGV4Om59LG8saSxhLHJdKT0+e2xldCBzPVIkKG4sTWF0aC5taW4obitpLGUpLG8sZSxyKTtyZXR1cm4gcz1zLmZpbHRlcigodD0+LTE9PT1hLmluZGV4T2YodCkpKSx7cnVuSWQ6dCxtaXNzaW5nUGFnZXM6cyxwYWdlU2l6ZTpvLG51bUdyYXBoRXhlY3V0aW9uczplfX0pKSl9bG9hZEdyYXBoRXhlY3V0aW9uUGFnZXModCl7cmV0dXJuIHQucGlwZSh1ZSgoKHttaXNzaW5nUGFnZXM6dH0pPT50Lmxlbmd0aD4wKSksV2UoKCh7bWlzc2luZ1BhZ2VzOnR9KT0+e3QuZm9yRWFjaCgodD0+e3RoaXMuc3RvcmUuZGlzcGF0Y2gocVgoe3BhZ2VJbmRleDp0fSkpfSkpfSkpLCR0KCgoe3J1bklkOnQsbWlzc2luZ1BhZ2VzOmUscGFnZVNpemU6bixudW1HcmFwaEV4ZWN1dGlvbnM6b30pPT57Y29uc3QgaT1lWzBdKm4sYT1NYXRoLm1pbigoZVtlLmxlbmd0aC0xXSsxKSpuLG8pO3JldHVybiB0aGlzLmRhdGFTb3VyY2UuZmV0Y2hHcmFwaEV4ZWN1dGlvbkRhdGEodCxpLGEpLnBpcGUoV2UoKHQ9Pnt0aGlzLnN0b3JlLmRpc3BhdGNoKFpYKHQpKX0pKSxWdCgoKCk9Pnt9KSkpfSkpKX1sb2FkR3JhcGhPcEluZm8oKXtyZXR1cm4gdGhpcy5hY3Rpb25zJC5waXBlKCRTKEpYLEtYKSxxZSh0aGlzLnN0b3JlLnNlbGVjdCh2SyksdGhpcy5zdG9yZS5zZWxlY3QoYUopKSx1ZSgoKFt0LGUsbl0pPT57Y29uc3R7Z3JhcGhfaWQ6byxvcF9uYW1lOml9PXQ7cmV0dXJuIShudWxsPT09ZXx8dm9pZCAwIT09bltvXSYmbltvXS5oYXMoaSkmJihuW29dLmdldChpKT09PVVFLkxPQURJTkd8fG5bb10uZ2V0KGkpPT09VUUuTE9BREVEKSl9KSksV2UoKChbe2dyYXBoX2lkOnQsb3BfbmFtZTplfV0pPT50aGlzLnN0b3JlLmRpc3BhdGNoKFFYKHtncmFwaF9pZDp0LG9wX25hbWU6ZX0pKSkpLCR0KCgoW3QsZV0pPT57Y29uc3R7Z3JhcGhfaWQ6bixvcF9uYW1lOm99PXQ7cmV0dXJuIHRoaXMuZGF0YVNvdXJjZS5mZXRjaEdyYXBoT3BJbmZvKGUsbixvKS5waXBlKFdlKCh0PT50aGlzLnN0b3JlLmRpc3BhdGNoKCRYKHtncmFwaE9wSW5mb1Jlc3BvbnNlOnR9KSkpKSxWdCgodD0+KHtydW5JZDplLHN0YWNrRnJhbWVJZHM6dC5zdGFja19mcmFtZV9pZHN9KSkpKX0pKSl9bG9hZEdyYXBoT3BTdGFja0ZyYW1lcyh0KXtyZXR1cm4gdC5waXBlKHFlKHRoaXMuc3RvcmUuc2VsZWN0KHJKKSksVnQoKChbe3J1bklkOnQsc3RhY2tGcmFtZUlkczplfSxuXSk9Pih7cnVuSWQ6dCxtaXNzaW5nU3RhY2tGcmFtZUlkczplLmZpbHRlcigodD0+dm9pZCAwPT09blt0XSkpfSkpKSx1ZSgoKHtydW5JZDp0LG1pc3NpbmdTdGFja0ZyYW1lSWRzOmV9KT0+bnVsbCE9PXQmJmUubGVuZ3RoPjApKSwkdCgoKHtydW5JZDp0LG1pc3NpbmdTdGFja0ZyYW1lSWRzOmV9KT0+dGhpcy5kYXRhU291cmNlLmZldGNoU3RhY2tGcmFtZXModCxlKS5waXBlKFdlKCh0PT57Y29uc3Qgbj17fTtmb3IobGV0IG89MDtvPGUubGVuZ3RoOysrbyluW2Vbb11dPXQuc3RhY2tfZnJhbWVzW29dO3RoaXMuc3RvcmUuZGlzcGF0Y2goYUsoe3N0YWNrRnJhbWVzOm59KSl9KSksVnQoKCgpPT57fSkpKSkpKX1vbkFsZXJ0VHlwZUZvY3VzZWQoKXtyZXR1cm4gdGhpcy5hY3Rpb25zJC5waXBlKCRTKHpYKSxxZSh0aGlzLnN0b3JlLnNlbGVjdCh2SyksdGhpcy5zdG9yZS5zZWxlY3Qoa0spLHRoaXMuc3RvcmUuc2VsZWN0KFNLKSx0aGlzLnN0b3JlLnNlbGVjdChESyksdGhpcy5zdG9yZS5zZWxlY3QoUEspKSx1ZSgoKFssdCxlLG4sbyxpXSk9Pm51bGwhPT10JiZudWxsIT09ZSYmbj4wJiYobnVsbD09PW98fE9iamVjdC5rZXlzKG8pLmxlbmd0aDxuKSYmaS5zdGF0ZSE9PVVFLkxPQURJTkcpKSxXZSgoKCk9PnRoaXMuc3RvcmUuZGlzcGF0Y2goQVgoKSkpKSwkdCgoKFssdCxlXSk9PnRoaXMuZGF0YVNvdXJjZS5mZXRjaEFsZXJ0cyh0LDAsLTEsZSkpKSxXZSgoKHtudW1fYWxlcnRzOnQsYWxlcnRzX2JyZWFrZG93bjplLGFsZXJ0X3R5cGU6bixiZWdpbjpvLGVuZDppLGFsZXJ0czphfSk9Pnt0aGlzLnN0b3JlLmRpc3BhdGNoKE5YKHtudW1BbGVydHM6dCxhbGVydHNCcmVha2Rvd246ZSxhbGVydFR5cGU6bixiZWdpbjpvLGVuZDppLGFsZXJ0czphfSkpfSkpKX1mZXRjaEV4ZWN1dGlvbkRpZ2VzdHNGb3JBbGVydFR5cGVGb2N1cyh0KXtyZXR1cm4gdC5waXBlKHFlKHRoaXMuc3RvcmUuc2VsZWN0KElLKSx0aGlzLnN0b3JlLnNlbGVjdChISyksdGhpcy5zdG9yZS5zZWxlY3QoTkspLHRoaXMuc3RvcmUuc2VsZWN0KFRLKSx0aGlzLnN0b3JlLnNlbGVjdCh2SykpLFZ0KCgoW3QsZSxuLG8saSxhXSk9Pntjb25zdCByPXQuYWxlcnRzWzBdLmV4ZWN1dGlvbl9pbmRleCxzPVIkKE1hdGgubWF4KDAsci1NYXRoLmZsb29yKG4vMikpLE1hdGgubWluKHIrTWF0aC5mbG9vcihuLzIpLG8pLGUsbyxpLnBhZ2VMb2FkZWRTaXplcyk7aWYoMD09PXMubGVuZ3RoKXJldHVybntydW5JZDphLGJlZ2luOjAsZW5kOjB9O3JldHVybntydW5JZDphLGJlZ2luOnNbMF0qZSxlbmQ6TWF0aC5taW4oaS5udW1FeGVjdXRpb25zLChzW3MubGVuZ3RoLTFdKzEpKmUpfX0pKSl9bG9hZFNvdXJjZUZpbGVMaXN0KHQpe3JldHVybiB0LnBpcGUocWUodGhpcy5zdG9yZS5zZWxlY3QodkspLHRoaXMuc3RvcmUuc2VsZWN0KHBKKSksdWUoKChbLHQsZV0pPT5udWxsIT09dCYmZS5zdGF0ZSE9PVVFLkxPQURJTkcpKSxXZSgoKCk9PnRoaXMuc3RvcmUuZGlzcGF0Y2godEsoKSkpKSwkdCgoKFssdF0pPT50aGlzLmRhdGFTb3VyY2UuZmV0Y2hTb3VyY2VGaWxlTGlzdCh0KS5waXBlKFdlKCh0PT57Y29uc3QgZT1bXTt0LmZvckVhY2goKChbdCxuXSk9PntlLnB1c2goe2hvc3RfbmFtZTp0LGZpbGVfcGF0aDpufSl9KSksdGhpcy5zdG9yZS5kaXNwYXRjaChlSyh7c291cmNlRmlsZXM6ZX0pKX0pKSxWdCgoKCk9Pnt9KSkpKSkpfW9uU291cmNlRmlsZUZvY3VzZWQoKXtyZXR1cm4gdGhpcy5hY3Rpb25zJC5waXBlKCRTKG5LKSxxZSh0aGlzLnN0b3JlLnNlbGVjdCh2SyksdGhpcy5zdG9yZS5zZWxlY3QobUopLHRoaXMuc3RvcmUuc2VsZWN0KGZKKSksVnQoKChbdCxlLG4sb10pPT4oe3J1bklkOmUsc3RhY2tGcmFtZTp0LnN0YWNrRnJhbWUsZmlsZUluZGV4Om4sZmlsZUNvbnRlbnQ6b30pKSksdWUoKCh7cnVuSWQ6dCxmaWxlQ29udGVudDplfSk9Pm51bGwhPT10JiZudWxsIT09ZSYmZS5sb2FkU3RhdGU9PT1VRS5OT1RfTE9BREVEKSksV2UoKCh7c3RhY2tGcmFtZTp0fSk9PnRoaXMuc3RvcmUuZGlzcGF0Y2gob0soe2hvc3RfbmFtZTp0Lmhvc3RfbmFtZSxmaWxlX3BhdGg6dC5maWxlX3BhdGh9KSkpKSwkdCgoKHtmaWxlSW5kZXg6dCxydW5JZDplfSk9PnRoaXMuZGF0YVNvdXJjZS5mZXRjaFNvdXJjZUZpbGUoZSx0KS5waXBlKFdlKCh0PT57dGhpcy5zdG9yZS5kaXNwYXRjaChpSyh0KSl9KSksVnQoKCgpPT57fSkpKSkpKX19RSQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEUkKShUcihRUyksVHIoaVMpLFRyKHZYKSl9LEUkLsm1cHJvdj1Tbih7dG9rZW46RSQsZmFjdG9yeTpFJC7JtWZhY30pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoRSQsW3t0eXBlOlVtfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOlFTfSx7dHlwZTppU30se3R5cGU6dlh9XX0pLG51bGwpO2NsYXNzIEEke31BJC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8QSQpfSxBJC7JtW1vZD1mbyh7dHlwZTpBJH0pLEEkLsm1aW5qPURuKHtpbXBvcnRzOltbcnhdXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoQSQsW3t0eXBlOkxfLGFyZ3M6W3tkZWNsYXJhdGlvbnM6W3lKLENKXSxpbXBvcnRzOltyeF0sZXhwb3J0czpbQ0pdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmdW8oQSQse2RlY2xhcmF0aW9uczpbeUosQ0pdLGltcG9ydHM6W3J4XSxleHBvcnRzOltDSl19KTtjbGFzcyBUJHt9VCQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFQkKX0sVCQuybVtb2Q9Zm8oe3R5cGU6VCR9KSxUJC7JtWluaj1Ebih7aW1wb3J0czpbW3J4XV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKFQkLFt7dHlwZTpMXyxhcmdzOlt7ZGVjbGFyYXRpb25zOlt6USxPUSxJUV0saW1wb3J0czpbcnhdLGV4cG9ydHM6W0lRXX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnVvKFQkLHtkZWNsYXJhdGlvbnM6W3pRLE9RLElRXSxpbXBvcnRzOltyeF0sZXhwb3J0czpbSVFdfSk7Y2xhc3MgTiR7fU4kLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxOJCl9LE4kLsm1bW9kPWZvKHt0eXBlOk4kfSksTiQuybVpbmo9RG4oe2ltcG9ydHM6W1tyeF1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihOJCxbe3R5cGU6TF8sYXJnczpbe2RlY2xhcmF0aW9uczpbWEosJEosUUosS0osSkosdFFdLGltcG9ydHM6W3J4XSxleHBvcnRzOlt0UV19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZ1byhOJCx7ZGVjbGFyYXRpb25zOltYSiwkSixRSixLSixKSix0UV0saW1wb3J0czpbcnhdLGV4cG9ydHM6W3RRXX0pO2NsYXNzIHoke316JC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8eiQpfSx6JC7JtW1vZD1mbyh7dHlwZTp6JH0pLHokLsm1aW5qPURuKHtpbXBvcnRzOltbcngsTiQsaUJdXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoeiQsW3t0eXBlOkxfLGFyZ3M6W3tkZWNsYXJhdGlvbnM6W0dRLFlRXSxpbXBvcnRzOltyeCxOJCxpQl0sZXhwb3J0czpbWVFdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmdW8oeiQse2RlY2xhcmF0aW9uczpbR1EsWVFdLGltcG9ydHM6W3J4LE4kLGlCXSxleHBvcnRzOltZUV19KTtjbGFzcyBJJHt9SSQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEkkKX0sSSQuybVtb2Q9Zm8oe3R5cGU6SSR9KSxJJC7JtWluaj1Ebih7fSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihJJCxbe3R5cGU6TF8sYXJnczpbe2RlY2xhcmF0aW9uczpbT1gsUFhdLGV4cG9ydHM6W1BYXX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnVvKEkkLHtkZWNsYXJhdGlvbnM6W09YLFBYXSxleHBvcnRzOltQWF19KTtjbGFzcyBIJHt9SCQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEgkKX0sSCQuybVtb2Q9Zm8oe3R5cGU6SCR9KSxIJC7JtWluaj1Ebih7fSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihIJCxbe3R5cGU6TF8sYXJnczpbe2V4cG9ydHM6WyRRXSxkZWNsYXJhdGlvbnM6WyRRXX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnVvKEgkLHtkZWNsYXJhdGlvbnM6WyRRXSxleHBvcnRzOlskUV19KTtjb25zdCBGJD1bImNvZGVWaWV3ZXJDb250YWluZXIiXTtjbGFzcyBMJHtjb25zdHJ1Y3Rvcigpe3RoaXMuZmlyc3RUZXh0PW51bGwsdGhpcy5zZWNvbmRUZXh0PW51bGwsdGhpcy5yZW5kZXJTaWRlQnlTaWRlPSEwLHRoaXMubW9uYWNvPW51bGwsdGhpcy5lZGl0b3I9bnVsbCx0aGlzLlJFU0laRV9ERUJPVU5DRV9JTlRFUlZBTF9NUz01MH1vblJlc2l6ZSgpe3RoaXMuZWRpdG9yJiZ0aGlzLmVkaXRvci5sYXlvdXQoKX1uZ09uQ2hhbmdlcyh0KXtpZighdGhpcy5tb25hY28pcmV0dXJuO2NvbnN0IGU9IXRoaXMuZWRpdG9yO2UmJih0aGlzLmVkaXRvcj10aGlzLm1vbmFjby5lZGl0b3IuY3JlYXRlRGlmZkVkaXRvcih0aGlzLmNvZGVWaWV3ZXJDb250YWluZXIubmF0aXZlRWxlbWVudCx7cmVhZE9ubHk6ITAsZm9udFNpemU6MTAsbWluaW1hcDp7ZW5hYmxlZDohMH0scmVuZGVyU2lkZUJ5U2lkZTp0aGlzLnJlbmRlclNpZGVCeVNpZGUsdGhlbWU6UVEodGhpcy51c2VEYXJrTW9kZSl9KSksKGV8fHQuZmlyc3RUZXh0fHx0LnNlY29uZFRleHQpJiZ0aGlzLmVkaXRvci5zZXRNb2RlbCh7b3JpZ2luYWw6dGhpcy5tb25hY28uZWRpdG9yLmNyZWF0ZU1vZGVsKHRoaXMuZmlyc3RUZXh0fHwiIiksbW9kaWZpZWQ6dGhpcy5tb25hY28uZWRpdG9yLmNyZWF0ZU1vZGVsKHRoaXMuc2Vjb25kVGV4dHx8IiIpfSksdC5yZW5kZXJTaWRlQnlTaWRlJiZ0aGlzLmVkaXRvci51cGRhdGVPcHRpb25zKHtyZW5kZXJTaWRlQnlTaWRlOnRoaXMucmVuZGVyU2lkZUJ5U2lkZX0pLHQudXNlRGFya01vZGUmJnRoaXMubW9uYWNvLmVkaXRvci5zZXRUaGVtZShRUSh0aGlzLnVzZURhcmtNb2RlKSl9fUwkLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxMJCl9LEwkLsm1Y21wPXNvKHt0eXBlOkwkLHNlbGVjdG9yczpbWyJzb3VyY2UtY29kZS1kaWZmLWNvbXBvbmVudCJdXSx2aWV3UXVlcnk6ZnVuY3Rpb24gdChlLG4pe2lmKDEmZSYmVnkoRiQsNyxLaCksMiZlKXtsZXQgdDtCeSh0PVV5KCkpJiYobi5jb2RlVmlld2VyQ29udGFpbmVyPXQuZmlyc3QpfX0saW5wdXRzOntmaXJzdFRleHQ6ImZpcnN0VGV4dCIsc2Vjb25kVGV4dDoic2Vjb25kVGV4dCIscmVuZGVyU2lkZUJ5U2lkZToicmVuZGVyU2lkZUJ5U2lkZSIsbW9uYWNvOiJtb25hY28iLHVzZURhcmtNb2RlOiJ1c2VEYXJrTW9kZSJ9LGZlYXR1cmVzOltxb10sZGVjbHM6Mix2YXJzOjEsY29uc3RzOltbImRldGVjdFJlc2l6ZSIsIiIsMSwiY29kZS12aWV3ZXItY29udGFpbmVyIiwzLCJyZXNpemVFdmVudERlYm91bmNlUGVyaW9kSW5NcyIsIm9uUmVzaXplIl0sWyJjb2RlVmlld2VyQ29udGFpbmVyIiwiIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihDZigwLCJkaXYiLDAsMSksUmYoIm9uUmVzaXplIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLm9uUmVzaXplKCl9KSksTWYoKSksMiZlJiZiZigicmVzaXplRXZlbnREZWJvdW5jZVBlcmlvZEluTXMiLG4uUkVTSVpFX0RFQk9VTkNFX0lOVEVSVkFMX01TKX0sZGlyZWN0aXZlczpbJFFdLHN0eWxlczpbIi5jb2RlLXZpZXdlci1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdIHtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgfSJdLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihMJCxbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJzb3VyY2UtY29kZS1kaWZmLWNvbXBvbmVudCIsdGVtcGxhdGU6J1xuICAgIDxkaXZcbiAgICAgICNjb2RlVmlld2VyQ29udGFpbmVyXG4gICAgICBjbGFzcz0iY29kZS12aWV3ZXItY29udGFpbmVyIlxuICAgICAgZGV0ZWN0UmVzaXplXG4gICAgICBbcmVzaXplRXZlbnREZWJvdW5jZVBlcmlvZEluTXNdPSJSRVNJWkVfREVCT1VOQ0VfSU5URVJWQUxfTVMiXG4gICAgICAob25SZXNpemUpPSJvblJlc2l6ZSgpIlxuICAgID48L2Rpdj5cbiAgJyxzdHlsZXM6WyJcbiAgICAgIC5jb2RlLXZpZXdlci1jb250YWluZXIge1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICB9XG4gICAgIl0sY2hhbmdlRGV0ZWN0aW9uOmpuLk9uUHVzaH1dfV0sbnVsbCx7Zmlyc3RUZXh0Olt7dHlwZTpSX31dLHNlY29uZFRleHQ6W3t0eXBlOlJffV0scmVuZGVyU2lkZUJ5U2lkZTpbe3R5cGU6Ul99XSxtb25hY286W3t0eXBlOlJffV0sdXNlRGFya01vZGU6W3t0eXBlOlJffV0sY29kZVZpZXdlckNvbnRhaW5lcjpbe3R5cGU6YXIsYXJnczpbImNvZGVWaWV3ZXJDb250YWluZXIiLHtzdGF0aWM6ITAscmVhZDpLaH1dfV19KTtjbGFzcyBCJHtjb25zdHJ1Y3Rvcigpe3RoaXMuZmlyc3RUZXh0PW51bGwsdGhpcy5zZWNvbmRUZXh0PW51bGwsdGhpcy5yZW5kZXJTaWRlQnlTaWRlPSEwLHRoaXMudXNlRGFya01vZGU9ITEsdGhpcy5tb25hY28kPW51bGx9bmdPbkluaXQoKXt0aGlzLm1vbmFjbyQ9UHQoSlEoKSkucGlwZShWdCgoKCk9PndpbmRvdy5tb25hY28pKSl9fUIkLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxCJCl9LEIkLsm1Y21wPXNvKHt0eXBlOkIkLHNlbGVjdG9yczpbWyJzb3VyY2UtY29kZS1kaWZmIl1dLGlucHV0czp7Zmlyc3RUZXh0OiJmaXJzdFRleHQiLHNlY29uZFRleHQ6InNlY29uZFRleHQiLHJlbmRlclNpZGVCeVNpZGU6InJlbmRlclNpZGVCeVNpZGUiLHVzZURhcmtNb2RlOiJ1c2VEYXJrTW9kZSJ9LGRlY2xzOjIsdmFyczo3LGNvbnN0czpbWzMsImZpcnN0VGV4dCIsInNlY29uZFRleHQiLCJyZW5kZXJTaWRlQnlTaWRlIiwibW9uYWNvIiwidXNlRGFya01vZGUiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKHZmKDAsInNvdXJjZS1jb2RlLWRpZmYtY29tcG9uZW50IiwwKSxfeSgxLCJhc3luYyIpKSwyJmUmJmJmKCJmaXJzdFRleHQiLG4uZmlyc3RUZXh0KSgic2Vjb25kVGV4dCIsbi5zZWNvbmRUZXh0KSgicmVuZGVyU2lkZUJ5U2lkZSIsbi5yZW5kZXJTaWRlQnlTaWRlKSgibW9uYWNvIixDeSgxLDUsbi5tb25hY28kKSkoInVzZURhcmtNb2RlIixuLnVzZURhcmtNb2RlKX0sZGlyZWN0aXZlczpbTCRdLHBpcGVzOltWdl0sc3R5bGVzOlsic291cmNlLWNvZGUtZGlmZi1jb21wb25lbnRbX25nY29udGVudC0lQ09NUCVdIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgIH0iXSxjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoQiQsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3Rvcjoic291cmNlLWNvZGUtZGlmZiIsdGVtcGxhdGU6J1xuICAgIDxzb3VyY2UtY29kZS1kaWZmLWNvbXBvbmVudFxuICAgICAgW2ZpcnN0VGV4dF09ImZpcnN0VGV4dCJcbiAgICAgIFtzZWNvbmRUZXh0XT0ic2Vjb25kVGV4dCJcbiAgICAgIFtyZW5kZXJTaWRlQnlTaWRlXT0icmVuZGVyU2lkZUJ5U2lkZSJcbiAgICAgIFttb25hY29dPSJtb25hY28kIHwgYXN5bmMiXG4gICAgICBbdXNlRGFya01vZGVdPSJ1c2VEYXJrTW9kZSJcbiAgICA+PC9zb3VyY2UtY29kZS1kaWZmLWNvbXBvbmVudD5cbiAgJyxzdHlsZXM6WyJcbiAgICAgIHNvdXJjZS1jb2RlLWRpZmYtY29tcG9uZW50IHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgIH1cbiAgICAiXSxjaGFuZ2VEZXRlY3Rpb246am4uT25QdXNofV19XSxudWxsLHtmaXJzdFRleHQ6W3t0eXBlOlJffV0sc2Vjb25kVGV4dDpbe3R5cGU6Ul99XSxyZW5kZXJTaWRlQnlTaWRlOlt7dHlwZTpSX31dLHVzZURhcmtNb2RlOlt7dHlwZTpSX31dfSk7Y2xhc3MgViR7fVYkLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxWJCl9LFYkLsm1bW9kPWZvKHt0eXBlOlYkfSksViQuybVpbmo9RG4oe2ltcG9ydHM6W1tyeCxIJF1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihWJCxbe3R5cGU6TF8sYXJnczpbe2RlY2xhcmF0aW9uczpbZSQsbiQsTCQsQiRdLGltcG9ydHM6W3J4LEgkXSxleHBvcnRzOltuJCxCJF19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZ1byhWJCx7ZGVjbGFyYXRpb25zOltlJCxuJCxMJCxCJF0saW1wb3J0czpbcngsSCRdLGV4cG9ydHM6W24kLEIkXX0pO2NsYXNzIGoke31qJC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8aiQpfSxqJC7JtW1vZD1mbyh7dHlwZTpqJH0pLGokLsm1aW5qPURuKHtpbXBvcnRzOltbcngsViRdXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoaiQsW3t0eXBlOkxfLGFyZ3M6W3tkZWNsYXJhdGlvbnM6W3IkLHMkXSxpbXBvcnRzOltyeCxWJF0sZXhwb3J0czpbcyRdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmdW8oaiQse2RlY2xhcmF0aW9uczpbciQscyRdLGltcG9ydHM6W3J4LFYkXSxleHBvcnRzOltzJF19KTtjbGFzcyBVJHt9VSQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFUkKX0sVSQuybVtb2Q9Zm8oe3R5cGU6VSR9KSxVJC7JtWluaj1Ebih7aW1wb3J0czpbW3J4LFYkXV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKFUkLFt7dHlwZTpMXyxhcmdzOlt7ZGVjbGFyYXRpb25zOlt4JCxPJF0saW1wb3J0czpbcngsViRdLGV4cG9ydHM6W08kXX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnVvKFUkLHtkZWNsYXJhdGlvbnM6W3gkLE8kXSxpbXBvcnRzOltyeCxWJF0sZXhwb3J0czpbTyRdfSk7Y2xhc3MgVyR7fVckLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxXJCl9LFckLsm1bW9kPWZvKHt0eXBlOlckfSksVyQuybVpbmo9RG4oe2ltcG9ydHM6W1tyeCxOJF1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihXJCxbe3R5cGU6TF8sYXJnczpbe2RlY2xhcmF0aW9uczpbclEsbFFdLGltcG9ydHM6W3J4LE4kXSxleHBvcnRzOltsUV19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZ1byhXJCx7ZGVjbGFyYXRpb25zOltyUSxsUV0saW1wb3J0czpbcngsTiRdLGV4cG9ydHM6W2xRXX0pO2NsYXNzIEcke31HJC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8RyQpfSxHJC7JtW1vZD1mbyh7dHlwZTpHJH0pLEckLsm1aW5qPURuKHtpbXBvcnRzOltbcngsVyQsSUwsUkpdXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoRyQsW3t0eXBlOkxfLGFyZ3M6W3tkZWNsYXJhdGlvbnM6W2dRLGJRXSxpbXBvcnRzOltyeCxXJCxJTCxSSl0sZXhwb3J0czpbYlFdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmdW8oRyQse2RlY2xhcmF0aW9uczpbZ1EsYlFdLGltcG9ydHM6W3J4LFckLElMLFJKXSxleHBvcnRzOltiUV19KTtjbGFzcyBZJHt9ZnVuY3Rpb24gcSQodCxlKXtjb25zdCBuPXt9O2Zvcihjb25zdCBvIG9mIE9iamVjdC5rZXlzKHQpKXtuW29dPWUodFtvXSxvKX1yZXR1cm4gbn1mdW5jdGlvbiBaJCh0KXtjb25zdCBlPW5ldyBNYXAsbj10LnNsaWNlKCkuc29ydCgoKHQsZSk9PlgkKHQudGFnLGUudGFnKSkpO2Zvcihjb25zdCB0IG9mIG4pe2NvbnN0IG49dC50YWcuc3BsaXQoIi8iLDEpWzBdO2UuaGFzKG4pfHxlLnNldChuLHtncm91cE5hbWU6bixpdGVtczpbXX0pLGUuZ2V0KG4pLml0ZW1zLnB1c2godCl9cmV0dXJuWy4uLmUudmFsdWVzKCldfWZ1bmN0aW9uIFgkKHQsZSl7bGV0IG49MCxvPTA7Zm9yKDs7KXtpZihuPT09dC5sZW5ndGgpcmV0dXJuIG89PT1lLmxlbmd0aD8wOi0xO2lmKG89PT1lLmxlbmd0aClyZXR1cm4gMTtpZihKJCh0W25dKSYmSiQoZVtvXSkpe2NvbnN0IGk9bixhPW87bj1LJCh0LG4rMSksbz1LJChlLG8rMSk7Y29uc3Qgcj1OdW1iZXIodC5zbGljZShpLG4pKSxzPU51bWJlcihlLnNsaWNlKGEsbykpO2lmKHI8cylyZXR1cm4tMTtpZihyPnMpcmV0dXJuIDF9ZWxzZXtpZihRJCh0W25dKSl7aWYoIVEkKGVbb10pKXJldHVybi0xfWVsc2V7aWYoUSQoZVtvXSkpcmV0dXJuIDE7aWYodFtuXTxlW29dKXJldHVybi0xO2lmKHRbbl0+ZVtvXSlyZXR1cm4gMX1uKyssbysrfX19ZnVuY3Rpb24gSyQodCxlKXtsZXQgbjshKGZ1bmN0aW9uKHQpe3RbdC5OQVRVUkFMPTBdPSJOQVRVUkFMIix0W3QuUkVBTD0xXT0iUkVBTCIsdFt0LkVYUE9ORU5UX1NJR049Ml09IkVYUE9ORU5UX1NJR04iLHRbdC5FWFBPTkVOVD0zXT0iRVhQT05FTlQifSkobnx8KG49e30pKTtsZXQgbz1uLk5BVFVSQUwsaT1lO2Zvcig7aTx0Lmxlbmd0aDtpKyspaWYobz09PW4uTkFUVVJBTCl7aWYoIi4iPT09dFtpXSlvPW4uUkVBTDtlbHNlIGlmKCJlIj09PXRbaV18fCJFIj09PXRbaV0pbz1uLkVYUE9ORU5UX1NJR047ZWxzZSBpZighSiQodFtpXSkpYnJlYWt9ZWxzZSBpZihvPT09bi5SRUFMKXtpZigiZSI9PT10W2ldfHwiRSI9PT10W2ldKW89bi5FWFBPTkVOVF9TSUdOO2Vsc2UgaWYoIUokKHRbaV0pKWJyZWFrfWVsc2UgaWYobz09PW4uRVhQT05FTlRfU0lHTil7aWYoIUokKHRbaV0pJiYiKyIhPT10W2ldJiYiLSIhPT10W2ldKWJyZWFrO289bi5FWFBPTkVOVH1lbHNlIGlmKG89PT1uLkVYUE9ORU5UJiYhSiQodFtpXSkpYnJlYWs7cmV0dXJuIGl9ZnVuY3Rpb24gSiQodCl7cmV0dXJuIjAiPD10JiZ0PD0iOSJ9ZnVuY3Rpb24gUSQodCl7cmV0dXJuIi8iPT09dHx8SiQodCl9ZnVuY3Rpb24gJCQodCxlLG4pe2NvbnN0e3BsdWdpbjpvLHRhZzppLHJ1bklkOmEsc2FtcGxlOnJ9PWVbdF0scz1GTihuLG8saSxyKTtpZihzKXtpZihudWxsIT09YSYmcy5ydW5Ub1Nlcmllcy5oYXNPd25Qcm9wZXJ0eShhKSl7Y29uc3QgdD1zLnJ1blRvU2VyaWVzW2FdLmxlbmd0aDtyZXR1cm4gdD4wP3QtMTpudWxsfWNvbnN0IHQ9T2JqZWN0LnZhbHVlcyhzLnJ1blRvU2VyaWVzKS5tYXAoKHQ9PnQubGVuZ3RoKSk7aWYodC5sZW5ndGgpcmV0dXJuIE1hdGgubWF4KC4uLnQpLTF9cmV0dXJuIG51bGx9ZnVuY3Rpb24gdDAodCxlLG4sbyl7Y29uc3QgaT1PYmplY3QuYXNzaWduKHt9LGUpO2Zvcihjb25zdCBhIGluIHQpe2lmKCF0Lmhhc093blByb3BlcnR5KGEpKWNvbnRpbnVlO2NvbnN0IHI9JCQoYSx0LG4pO2lmKG51bGw9PT1yKXtlLmhhc093blByb3BlcnR5KGEpJiYoaVthXT1udWxsKTtjb250aW51ZX1jb25zdCBzPWUuaGFzT3duUHJvcGVydHkoYSk/ZVthXTpudWxsLGw9JCQoYSx0LG8pLGM9bnVsbCE9PXMmJnM9PT1sLGQ9bnVsbD09PXN8fGM7KG51bGwhPT1zJiZzPnJ8fGQpJiYoaVthXT1yKX1yZXR1cm4gaX1mdW5jdGlvbiBlMCh0KXtjb25zdCBlPXEkKHQucnVuVG9Mb2FkU3RhdGUsKHQ9PnQ9PT1VRS5MT0FESU5HP1VFLkxPQURJTkc6VUUuTk9UX0xPQURFRCkpO3JldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3J1blRvTG9hZFN0YXRlOmV9KX1mdW5jdGlvbiBuMCh0LGUsbixvKXtyZXR1cm4gSlNPTi5zdHJpbmdpZnkoW3QsZSxufHwiIixvXSl9WSQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFkkKX0sWSQuybVtb2Q9Zm8oe3R5cGU6WSR9KSxZJC7JtWluaj1Ebih7aW1wb3J0czpbW0EkLHJ4LGRULHokLFQkLEkkLGokLFUkLHhYLEckLFRTLmZvckZlYXR1cmUocksseUspLGhELmZvckZlYXR1cmUoW0UkXSksTVguZm9yUGx1Z2luKEQkLFMkKV1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihZJCxbe3R5cGU6TF8sYXJnczpbe2RlY2xhcmF0aW9uczpbayQsUyRdLGltcG9ydHM6W0EkLHJ4LGRULHokLFQkLEkkLGokLFUkLHhYLEckLFRTLmZvckZlYXR1cmUocksseUspLGhELmZvckZlYXR1cmUoW0UkXSksTVguZm9yUGx1Z2luKEQkLFMkKV0sZXhwb3J0czpbUyRdLGVudHJ5Q29tcG9uZW50czpbUyRdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmdW8oWSQse2RlY2xhcmF0aW9uczpbayQsUyRdLGltcG9ydHM6W0EkLHJ4LGRULHokLFQkLEkkLGokLFUkLHhYLEckLEFTLGdELE1YXSxleHBvcnRzOltTJF19KTtjb25zdHtpbml0aWFsU3RhdGU6bzAscmVkdWNlcnM6aTB9PWNBKHt0YWdNZXRhZGF0YUxvYWRTdGF0ZTp7c3RhdGU6VUUuTk9UX0xPQURFRCxsYXN0TG9hZGVkVGltZUluTXM6bnVsbH0sdGFnTWV0YWRhdGE6e3NjYWxhcnM6e3RhZ0Rlc2NyaXB0aW9uczp7fSx0YWdUb1J1bnM6e319LGhpc3RvZ3JhbXM6e3RhZ0Rlc2NyaXB0aW9uczp7fSx0YWdUb1J1bnM6e319LGltYWdlczp7dGFnRGVzY3JpcHRpb25zOnt9LHRhZ1J1blNhbXBsZWRJbmZvOnt9fX0sY2FyZExpc3Q6W10sY2FyZFRvUGlubmVkQ29weTpuZXcgTWFwLHBpbm5lZENhcmRUb09yaWdpbmFsOm5ldyBNYXAsdW5yZXNvbHZlZEltcG9ydGVkUGlubmVkQ2FyZHM6W10sY2FyZE1ldGFkYXRhTWFwOnt9LGNhcmRTdGVwSW5kZXg6e30sdGFnRmlsdGVyOiIiLHRhZ0dyb3VwRXhwYW5kZWQ6bmV3IE1hcCxzZWxlY3RlZFRpbWU6bnVsbCxzZWxlY3RUaW1lRW5hYmxlZDohMSx1c2VSYW5nZVNlbGVjdFRpbWU6ITEsZmlsdGVyZWRQbHVnaW5UeXBlczpuZXcgU2V0LHN0ZXBNaW5NYXg6e21pbjoxLzAsbWF4Oi0xLzB9fSx7aXNTZXR0aW5nc1BhbmVPcGVuOiEwLHByb21vdGVUaW1lU2VyaWVzOiEwLHRpbWVTZXJpZXNEYXRhOntzY2FsYXJzOnt9LGhpc3RvZ3JhbXM6e30saW1hZ2VzOnt9fSxzZXR0aW5nczpYTixzZXR0aW5nT3ZlcnJpZGVzOnt9LHZpc2libGVDYXJkTWFwOm5ldyBNYXB9LCh0PT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3RhZ01ldGFkYXRhTG9hZFN0YXRlOntzdGF0ZTpVRS5OT1RfTE9BREVELGxhc3RMb2FkZWRUaW1lSW5NczpudWxsfSx2aXNpYmxlQ2FyZE1hcDpuZXcgTWFwfSkpKSxhMD1vMCxyMD1WUyhvMCxCUyhLRCwoKHQse3JvdXRlS2luZDplLHBhcnRpYWxTdGF0ZTpufSk9PntpZihlIT09X0QuRVhQRVJJTUVOVCYmZSE9PV9ELkNPTVBBUkVfRVhQRVJJTUVOVClyZXR1cm4gdDtjb25zdCBvPW5ldyBTZXQ7Zm9yKGNvbnN0IGUgb2YgdC5waW5uZWRDYXJkVG9PcmlnaW5hbC5rZXlzKCkpe2NvbnN0e3BsdWdpbjpuLHRhZzppLHJ1bklkOmEsc2FtcGxlOnJ9PXQuY2FyZE1ldGFkYXRhTWFwW2VdO28uYWRkKG4wKG4saSxhLHIpKX1jb25zdCBpPW4sYT1bXTtmb3IoY29uc3QgZSBvZlsuLi50LnVucmVzb2x2ZWRJbXBvcnRlZFBpbm5lZENhcmRzLC4uLmkubWV0cmljcy5waW5uZWRDYXJkc10pe2NvbnN0IHQ9bjAoZS5wbHVnaW4sZS50YWcsZS5ydW5JZCxlLnNhbXBsZSk7by5oYXModCl8fChvLmFkZCh0KSxhLnB1c2goZSkpfWNvbnN0IHI9V04oYSx0LmNhcmRMaXN0LHQuY2FyZE1ldGFkYXRhTWFwLHQuY2FyZFRvUGlubmVkQ29weSx0LnBpbm5lZENhcmRUb09yaWdpbmFsLHQuY2FyZFN0ZXBJbmRleCkscz1pLm1ldHJpY3Muc21vb3RoaW5nO2xldCBsPXQuc2V0dGluZ092ZXJyaWRlcztpZihOdW1iZXIuaXNGaW5pdGUocykmJm51bGwhPT1zKXtjb25zdCBlPU1hdGgubWF4KDAsTWF0aC5taW4oLjk5OSxOdW1iZXIocy50b1ByZWNpc2lvbigzKSkpKTtsPU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LnNldHRpbmdPdmVycmlkZXMpLHtzY2FsYXJTbW9vdGhpbmc6ZX0pfWNvbnN0IGM9T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkscikse3NldHRpbmdPdmVycmlkZXM6bH0pO3JldHVybiBudWxsIT09aS5tZXRyaWNzLnRhZ0ZpbHRlciYmKGMudGFnRmlsdGVyPWkubWV0cmljcy50YWdGaWx0ZXIpLGN9KSksQlMocVIsKCh0LHtwYXJ0aWFsU2V0dGluZ3M6ZX0pPT57dmFyIG47Y29uc3Qgbz17fTtpZihlLnRvb2x0aXBTb3J0U3RyaW5nKXN3aXRjaChlLnRvb2x0aXBTb3J0U3RyaW5nKXtjYXNlIEpULkRFRkFVTFQ6Y2FzZSBKVC5BTFBIQUJFVElDQUw6by50b29sdGlwU29ydD1KVC5BTFBIQUJFVElDQUw7YnJlYWs7Y2FzZSBKVC5BU0NFTkRJTkc6by50b29sdGlwU29ydD1KVC5BU0NFTkRJTkc7YnJlYWs7Y2FzZSBKVC5ERVNDRU5ESU5HOm8udG9vbHRpcFNvcnQ9SlQuREVTQ0VORElORzticmVhaztjYXNlIEpULk5FQVJFU1Q6by50b29sdGlwU29ydD1KVC5ORUFSRVNUfSJudW1iZXIiPT10eXBlb2YgZS50aW1lU2VyaWVzQ2FyZE1pbldpZHRoJiYoby5jYXJkTWluV2lkdGg9ZS50aW1lU2VyaWVzQ2FyZE1pbldpZHRoKSwiYm9vbGVhbiI9PXR5cGVvZiBlLmlnbm9yZU91dGxpZXJzJiYoby5pZ25vcmVPdXRsaWVycz1lLmlnbm9yZU91dGxpZXJzKSwibnVtYmVyIj09dHlwZW9mIGUuc2NhbGFyU21vb3RoaW5nJiYoby5zY2FsYXJTbW9vdGhpbmc9ZS5zY2FsYXJTbW9vdGhpbmcpO2NvbnN0IGk9ImJvb2xlYW4iPT10eXBlb2YgZS50aW1lU2VyaWVzUHJvbW90aW9uRGlzbWlzc2VkPyFlLnRpbWVTZXJpZXNQcm9tb3Rpb25EaXNtaXNzZWQ6dC5wcm9tb3RlVGltZVNlcmllcyxhPW51bGwhPT0obj1lLnRpbWVTZXJpZXNTZXR0aW5nc1BhbmVPcGVuZWQpJiZ2b2lkIDAhPT1uP246dC5pc1NldHRpbmdzUGFuZU9wZW47cmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7cHJvbW90ZVRpbWVTZXJpZXM6aSxpc1NldHRpbmdzUGFuZU9wZW46YSxzZXR0aW5nczpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5zZXR0aW5ncyksbyl9KX0pKSxCUyhRRSxKRSwodD0+e2NvbnN0IGU9dC50YWdNZXRhZGF0YUxvYWRTdGF0ZS5zdGF0ZT09PVVFLkxPQURJTkc/VUUuTE9BRElORzpVRS5OT1RfTE9BREVELG49cSQodC50aW1lU2VyaWVzRGF0YSwoKHQsZSk9PnEkKHQsKHQ9PmVOKGUpP3EkKHQsKHQ9PmUwKHQpKSk6ZTAodCkpKSkpO3JldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3RhZ01ldGFkYXRhTG9hZFN0YXRlOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LnRhZ01ldGFkYXRhTG9hZFN0YXRlKSx7c3RhdGU6ZX0pLHRpbWVTZXJpZXNEYXRhOm59KX0pKSxCUyhtQSwodD0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHt0YWdNZXRhZGF0YUxvYWRTdGF0ZTpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC50YWdNZXRhZGF0YUxvYWRTdGF0ZSkse3N0YXRlOlVFLkxPQURJTkd9KX0pKSksQlModUEsKHQ9Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7dGFnTWV0YWRhdGFMb2FkU3RhdGU6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQudGFnTWV0YWRhdGFMb2FkU3RhdGUpLHtzdGF0ZTpVRS5GQUlMRUR9KX0pKSksQlMoZkEsKCh0LHt0YWdNZXRhZGF0YTplfSk9Pntjb25zdCBuPXtzY2FsYXJzOmwwKGUsS1QuU0NBTEFSUyksaGlzdG9ncmFtczpsMChlLEtULkhJU1RPR1JBTVMpLGltYWdlczplW0tULklNQUdFU119LG89e30saT0oZnVuY3Rpb24gYSh0KXtjb25zdCBlPVtdO2ZvcihsZXQgbiBvZiBPYmplY3Qua2V5cyh0KSl7Y29uc3Qgbz1uO2xldCBpO2lmKGVOKG8pKXtpZighb04obykpdGhyb3cgbmV3IEVycm9yKCJNdWx0aS1ydW4sIHNhbXBsZWQgcGx1Z2luIHN1cHBvcnQgbm90IHlldCBpbXBsZW1lbnRlZCIpO3tjb25zdCBuPXRbb10udGFnUnVuU2FtcGxlZEluZm87Zm9yKGNvbnN0IHQgb2YgT2JqZWN0LmtleXMobikpZm9yKGNvbnN0IGkgb2YgT2JqZWN0LmtleXMoblt0XSkpe2NvbnN0e21heFNhbXBsZXNQZXJTdGVwOmF9PW5bdF1baV07Zm9yKGxldCBuPTA7bjxhO24rKyllLnB1c2goe3BsdWdpbjpvLHRhZzp0LHJ1bklkOmksc2FtcGxlOm4sbnVtU2FtcGxlOmF9KX19fWVsc2UgaWYob04obykpe2k9dFtvXS50YWdUb1J1bnM7Zm9yKGNvbnN0IHQgb2YgT2JqZWN0LmtleXMoaSkpZm9yKGNvbnN0IG4gb2YgaVt0XSllLnB1c2goe3BsdWdpbjpvLHRhZzp0LHJ1bklkOm59KX1lbHNle2k9dFtvXS50YWdUb1J1bnM7Zm9yKGNvbnN0IHQgb2YgT2JqZWN0LmtleXMoaSkpZS5wdXNoKHtwbHVnaW46byx0YWc6dCxydW5JZDpudWxsfSl9fXJldHVybiBlfSkobikscj1bXTtmb3IoY29uc3QgdCBvZiBpKXtjb25zdCBlPUJOKHQpO29bZV09dCxyLnB1c2goZSl9bGV0IHM9dC50YWdHcm91cEV4cGFuZGVkO2lmKDA9PT10LnRhZ0dyb3VwRXhwYW5kZWQuc2l6ZSl7Y29uc3QgZT1aJChyLm1hcCgodD0+e3ZhciBlO3JldHVybiBudWxsIT09KGU9T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LG9bdF0pLHtjYXJkSWQ6dH0pKSYmdm9pZCAwIT09ZT9lOm51bGx9KSkuZmlsdGVyKEJvb2xlYW4pKTtzPW5ldyBNYXAodC50YWdHcm91cEV4cGFuZGVkKTtmb3IoY29uc3QgdCBvZiBlLnNsaWNlKDAsMikpcy5zZXQodC5ncm91cE5hbWUsITApfWNvbnN0e25leHRDYXJkVG9QaW5uZWRDb3B5OmwsbmV4dFBpbm5lZENhcmRUb09yaWdpbmFsOmMscGlubmVkQ2FyZE1ldGFkYXRhTWFwOmR9PShmdW5jdGlvbiBwKHQsZSxuLG8pe2NvbnN0IGk9bmV3IE1hcCxhPW5ldyBNYXAscj17fTtmb3IoY29uc3QgZSBvZiBvKWlmKHQuaGFzKGUpKXtjb25zdCBvPXQuZ2V0KGUpO2kuc2V0KGUsbyksYS5zZXQobyxlKSxyW29dPW5bZV19cmV0dXJue25leHRDYXJkVG9QaW5uZWRDb3B5OmksbmV4dFBpbm5lZENhcmRUb09yaWdpbmFsOmEscGlubmVkQ2FyZE1ldGFkYXRhTWFwOnJ9fSkodC5jYXJkVG9QaW5uZWRDb3B5LDAsbyxyKSxtPU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxvKSxkKSxmPShmdW5jdGlvbiB1KHQsZSl7Y29uc3Qgbj17fTtyZXR1cm4gT2JqZWN0LmVudHJpZXModCkuZm9yRWFjaCgoKFt0LG9dKT0+e2VbdF0mJihuW3RdPW8pfSkpLG59KSh0LmNhcmRTdGVwSW5kZXgsbSksZz1XTih0LnVucmVzb2x2ZWRJbXBvcnRlZFBpbm5lZENhcmRzLHIsbSxsLGMsZik7cmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLGcpLHt0YWdHcm91cEV4cGFuZGVkOnMsdGFnTWV0YWRhdGFMb2FkU3RhdGU6e3N0YXRlOlVFLkxPQURFRCxsYXN0TG9hZGVkVGltZUluTXM6RGF0ZS5ub3coKX0sdGFnTWV0YWRhdGE6bixjYXJkTGlzdDpyfSl9KSksQlMoVEEsKCh0LHt0YWdGaWx0ZXI6ZX0pPT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3RhZ0ZpbHRlcjplfSkpKSxCUyhnQSwoKHQse3NvcnQ6ZX0pPT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3NldHRpbmdPdmVycmlkZXM6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQuc2V0dGluZ092ZXJyaWRlcykse3Rvb2x0aXBTb3J0OmV9KX0pKSksQlMoaEEsKHQ9Pnt2YXIgZTtjb25zdCBuPSEobnVsbCE9PShlPXQuc2V0dGluZ092ZXJyaWRlcy5pZ25vcmVPdXRsaWVycykmJnZvaWQgMCE9PWU/ZTp0LnNldHRpbmdzLmlnbm9yZU91dGxpZXJzKTtyZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtzZXR0aW5nT3ZlcnJpZGVzOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LnNldHRpbmdPdmVycmlkZXMpLHtpZ25vcmVPdXRsaWVyczpufSl9KX0pKSxCUyhiQSwoKHQse3hBeGlzVHlwZTplfSk9Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7c2V0dGluZ092ZXJyaWRlczpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5zZXR0aW5nT3ZlcnJpZGVzKSx7eEF4aXNUeXBlOmV9KX0pKSksQlMoQ0EsKCh0LHtzbW9vdGhpbmc6ZX0pPT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3NldHRpbmdPdmVycmlkZXM6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQuc2V0dGluZ092ZXJyaWRlcykse3NjYWxhclNtb290aGluZzplfSl9KSkpLEJTKE1BLCh0PT57dmFyIGU7Y29uc3Qgbj0hKG51bGwhPT0oZT10LnNldHRpbmdPdmVycmlkZXMuc2NhbGFyUGFydGl0aW9uTm9uTW9ub3RvbmljWCkmJnZvaWQgMCE9PWU/ZTp0LnNldHRpbmdzLnNjYWxhclBhcnRpdGlvbk5vbk1vbm90b25pY1gpO3JldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3NldHRpbmdPdmVycmlkZXM6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQuc2V0dGluZ092ZXJyaWRlcykse3NjYWxhclBhcnRpdGlvbk5vbk1vbm90b25pY1g6bn0pfSl9KSksQlModkEsKCh0LHticmlnaHRuZXNzSW5NaWxsaTplfSk9Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7c2V0dGluZ092ZXJyaWRlczpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5zZXR0aW5nT3ZlcnJpZGVzKSx7aW1hZ2VCcmlnaHRuZXNzSW5NaWxsaTplfSl9KSkpLEJTKHhBLCgodCx7Y29udHJhc3RJbk1pbGxpOmV9KT0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtzZXR0aW5nT3ZlcnJpZGVzOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LnNldHRpbmdPdmVycmlkZXMpLHtpbWFnZUNvbnRyYXN0SW5NaWxsaTplfSl9KSkpLEJTKE9BLCh0PT57Y29uc3QgZT1aVCh0LnNldHRpbmdPdmVycmlkZXMsWyJpbWFnZUJyaWdodG5lc3NJbk1pbGxpIl0pO3JldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3NldHRpbmdPdmVycmlkZXM6ZX0pfSkpLEJTKFBBLCh0PT57Y29uc3QgZT1aVCh0LnNldHRpbmdPdmVycmlkZXMsWyJpbWFnZUNvbnRyYXN0SW5NaWxsaSJdKTtyZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtzZXR0aW5nT3ZlcnJpZGVzOmV9KX0pKSxCUyh3QSwodD0+e3ZhciBlO2NvbnN0IG49IShudWxsIT09KGU9dC5zZXR0aW5nT3ZlcnJpZGVzLmltYWdlU2hvd0FjdHVhbFNpemUpJiZ2b2lkIDAhPT1lP2U6dC5zZXR0aW5ncy5pbWFnZVNob3dBY3R1YWxTaXplKTtyZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtzZXR0aW5nT3ZlcnJpZGVzOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LnNldHRpbmdPdmVycmlkZXMpLHtpbWFnZVNob3dBY3R1YWxTaXplOm59KX0pfSkpLEJTKGtBLCgodCx7aGlzdG9ncmFtTW9kZTplfSk9Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7c2V0dGluZ092ZXJyaWRlczpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5zZXR0aW5nT3ZlcnJpZGVzKSx7aGlzdG9ncmFtTW9kZTplfSl9KSkpLEJTKHlBLCgodCx7Y2FyZE1pbldpZHRoOmV9KT0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtzZXR0aW5nT3ZlcnJpZGVzOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LnNldHRpbmdPdmVycmlkZXMpLHtjYXJkTWluV2lkdGg6ZX0pfSkpKSxCUyhfQSwodD0+e2NvbnN0IGU9WlQodC5zZXR0aW5nT3ZlcnJpZGVzLFsiY2FyZE1pbldpZHRoIl0pO3JldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3NldHRpbmdPdmVycmlkZXM6ZX0pfSkpLEJTKFNBLCgodCx7cmVxdWVzdHM6ZX0pPT57aWYoIWUubGVuZ3RoKXJldHVybiB0O2NvbnN0IG49T2JqZWN0LmFzc2lnbih7fSx0LnRpbWVTZXJpZXNEYXRhKTtmb3IoY29uc3QgbyBvZiBlKXtjb25zdHtwbHVnaW46ZSx0YWc6aSxzYW1wbGU6YX09bztuW2VdPUxOKG4sZSxpLGEpO2NvbnN0IHI9Rk4obixlLGksYSkscz1pTihvKT9bby5ydW5JZF06ak4odC50YWdNZXRhZGF0YSxlLGksYSk7ci5ydW5Ub0xvYWRTdGF0ZT1WTihVRS5MT0FESU5HLHMsci5ydW5Ub0xvYWRTdGF0ZSl9cmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7dGltZVNlcmllc0RhdGE6bn0pfSkpLEJTKERBLCgodCx7cmVxdWVzdDplfSk9Pntjb25zdCBuPU9iamVjdC5hc3NpZ24oe30sdC50aW1lU2VyaWVzRGF0YSkse3BsdWdpbjpvLHRhZzppLHNhbXBsZTphfT1lO25bb109TE4obixvLGksYSk7Y29uc3Qgcj1GTihuLG8saSxhKSxzPWlOKGUpP1tlLnJ1bklkXTpqTih0LnRhZ01ldGFkYXRhLG8saSxhKTtyZXR1cm4gci5ydW5Ub0xvYWRTdGF0ZT1WTihVRS5GQUlMRUQscyxyLnJ1blRvTG9hZFN0YXRlKSxPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3RpbWVTZXJpZXNEYXRhOm59KX0pKSxCUyhSQSwoKHQse3Jlc3BvbnNlOmV9KT0+e2NvbnN0IG49T2JqZWN0LmFzc2lnbih7fSx0LnN0ZXBNaW5NYXgpLG89T2JqZWN0LmFzc2lnbih7fSx0LnRpbWVTZXJpZXNEYXRhKSx7cGx1Z2luOmksdGFnOmEscnVuSWQ6cixzYW1wbGU6c309ZTtvW2ldPUxOKG8saSxhLHMpO2NvbnN0IGw9Rk4obyxpLGEscyk7aWYock4oZSkpe2NvbnN0IGU9cj9bcl06ak4odC50YWdNZXRhZGF0YSxpLGEscyk7bC5ydW5Ub0xvYWRTdGF0ZT1WTihVRS5GQUlMRUQsZSxsLnJ1blRvTG9hZFN0YXRlKX1lbHNle2NvbnN0IHQ9ZS5ydW5Ub1NlcmllcztsLnJ1blRvU2VyaWVzPU9iamVjdC5hc3NpZ24oe30sbC5ydW5Ub1NlcmllcyksbC5ydW5Ub0xvYWRTdGF0ZT1PYmplY3QuYXNzaWduKHt9LGwucnVuVG9Mb2FkU3RhdGUpO2Zvcihjb25zdCBlIGluIHQpaWYodC5oYXNPd25Qcm9wZXJ0eShlKSl7bC5ydW5Ub1Nlcmllc1tlXT10W2VdLGwucnVuVG9Mb2FkU3RhdGVbZV09VUUuTE9BREVEO2Zvcihjb25zdCBvIG9mIHRbZV0pbi5taW49TWF0aC5taW4obi5taW4sby5zdGVwKSxuLm1heD1NYXRoLm1heChuLm1heCxvLnN0ZXApfX1yZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHt0aW1lU2VyaWVzRGF0YTpvLGNhcmRTdGVwSW5kZXg6dDAodC5jYXJkTWV0YWRhdGFNYXAsdC5jYXJkU3RlcEluZGV4LG8sdC50aW1lU2VyaWVzRGF0YSksc3RlcE1pbk1heDpufSl9KSksQlMoQUEsKCh0LHtjYXJkSWQ6ZSxzdGVwSW5kZXg6bn0pPT57Y29uc3Qgbz0kJChlLHQuY2FyZE1ldGFkYXRhTWFwLHQudGltZVNlcmllc0RhdGEpO2xldCBpPW47cmV0dXJuIG51bGw9PT1vP2k9bnVsbDpuPm8mJihpPW8pLE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7Y2FyZFN0ZXBJbmRleDpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5jYXJkU3RlcEluZGV4KSx7W2VdOml9KX0pfSkpLEJTKE5BLCgodCx7dGFnR3JvdXA6ZX0pPT57Y29uc3Qgbj1uZXcgTWFwKHQudGFnR3JvdXBFeHBhbmRlZCk7cmV0dXJuIG4uc2V0KGUsIW4uZ2V0KGUpKSxPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3RhZ0dyb3VwRXhwYW5kZWQ6bn0pfSkpLEJTKEVBLCgodCx7ZW50ZXJlZENhcmRzOmUsZXhpdGVkQ2FyZHM6bn0pPT57aWYoIWUubGVuZ3RoJiYhbi5sZW5ndGgpcmV0dXJuIHQ7Y29uc3Qgbz1uZXcgTWFwKHQudmlzaWJsZUNhcmRNYXApO3JldHVybiBlLmZvckVhY2goKCh7ZWxlbWVudElkOnQsY2FyZElkOmV9KT0+e3ZhciBuO2NvbnN0IGk9bnVsbCE9PShuPW8uZ2V0KHQpKSYmdm9pZCAwIT09bj9uOm51bGw7aWYobnVsbCE9PWkmJmkhPT1lKXRocm93IG5ldyBFcnJvcigiQSBET00gZWxlbWVudCBjYW5ub3QgYmUgcmV1c2VkIGZvciBtb3JlIHRoYW4gMSB1bmlxdWUgY2FyZCBtZXRhZGF0YSIpO28uc2V0KHQsZSl9KSksbi5mb3JFYWNoKCgoe2VsZW1lbnRJZDp0fSk9PntvLmRlbGV0ZSh0KX0pKSxPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3Zpc2libGVDYXJkTWFwOm99KX0pKSxCUyh6QSwoKHQse2NhcmRJZDplfSk9Pntjb25zdCBuPXQucGlubmVkQ2FyZFRvT3JpZ2luYWwuaGFzKGUpLG89IW4mJiF0LmNhcmRUb1Bpbm5lZENvcHkuaGFzKGUpO2lmKG8mJiFxTih0KSlyZXR1cm4gdDtsZXQgaT1uZXcgTWFwKHQuY2FyZFRvUGlubmVkQ29weSksYT1uZXcgTWFwKHQucGlubmVkQ2FyZFRvT3JpZ2luYWwpLHI9T2JqZWN0LmFzc2lnbih7fSx0LmNhcmRNZXRhZGF0YU1hcCkscz1PYmplY3QuYXNzaWduKHt9LHQuY2FyZFN0ZXBJbmRleCk7aWYobil7Y29uc3Qgbj10LnBpbm5lZENhcmRUb09yaWdpbmFsLmdldChlKTtpLmRlbGV0ZShuKSxhLmRlbGV0ZShlKSxkZWxldGUgcltlXSxkZWxldGUgc1tlXX1lbHNlIGlmKG8pe2NvbnN0IHQ9R04oZSxpLGEscyxyKTtpPXQuY2FyZFRvUGlubmVkQ29weSxhPXQucGlubmVkQ2FyZFRvT3JpZ2luYWwscj10LmNhcmRNZXRhZGF0YU1hcCxzPXQuY2FyZFN0ZXBJbmRleH1lbHNle2NvbnN0IG49dC5jYXJkVG9QaW5uZWRDb3B5LmdldChlKTtpLmRlbGV0ZShlKSxhLmRlbGV0ZShuKSxkZWxldGUgcltuXSxkZWxldGUgc1tuXX1yZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtjYXJkTWV0YWRhdGFNYXA6cixjYXJkU3RlcEluZGV4OnMsY2FyZFRvUGlubmVkQ29weTppLHBpbm5lZENhcmRUb09yaWdpbmFsOmF9KX0pKSxCUyhCQSwodD0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtzZWxlY3RUaW1lRW5hYmxlZDohdC5zZWxlY3RUaW1lRW5hYmxlZH0pKSksQlMoRkEsKCh0LGUpPT57dmFyIG4sbyxpLGE7Y29uc3Qgcj1lLnN0YXJ0U3RlcDtsZXQgcz1udWxsIT09KGE9bnVsbCE9PShuPWUuZW5kU3RlcCkmJnZvaWQgMCE9PW4/bjpudWxsPT09KGk9bnVsbD09PShvPXQuc2VsZWN0ZWRUaW1lKXx8dm9pZCAwPT09bz92b2lkIDA6by5lbmQpfHx2b2lkIDA9PT1pP3ZvaWQgMDppLnN0ZXApJiZ2b2lkIDAhPT1hP2E6dC5zdGVwTWluTWF4Lm1heDtyZXR1cm4gcj5zJiYocz1yKSxPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3NlbGVjdFRpbWVFbmFibGVkOiEwLHNlbGVjdGVkVGltZTp7c3RhcnQ6e3N0ZXA6cn0sZW5kOntzdGVwOnN9fX0pfSkpLEJTKFZBLCh0PT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3VzZVJhbmdlU2VsZWN0VGltZTohdC51c2VSYW5nZVNlbGVjdFRpbWV9KSkpLEJTKExBLCh0PT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3NlbGVjdGVkVGltZTpudWxsfSkpKSxCUyhJQSwoKHQse3BsdWdpbjplfSk9PntsZXQgbj1uZXcgU2V0KHQuZmlsdGVyZWRQbHVnaW5UeXBlcyk7cmV0dXJuIG4uaGFzKGUpP24uZGVsZXRlKGUpOm4uYWRkKGUpLE9iamVjdC52YWx1ZXMoS1QpLmV2ZXJ5KCh0PT5uLmhhcyh0KSkpJiYobj1uZXcgU2V0KSxPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse2ZpbHRlcmVkUGx1Z2luVHlwZXM6bn0pfSkpLEJTKEhBLCh0PT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse2ZpbHRlcmVkUGx1Z2luVHlwZXM6bmV3IFNldH0pKSksQlMoakEsKHQ9Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7cHJvbW90ZVRpbWVTZXJpZXM6ITF9KSkpLEJTKHBBLCh0PT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse2lzU2V0dGluZ3NQYW5lT3BlbjohdC5pc1NldHRpbmdzUGFuZU9wZW59KSkpLEJTKGRBLCh0PT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse2lzU2V0dGluZ3NQYW5lT3BlbjohMX0pKSkpO2Z1bmN0aW9uIHMwKHQsZSl7cmV0dXJuIFdBKHIwLGkwKSh0LGUpfWZ1bmN0aW9uIGwwKHQsZSl7cmV0dXJue3RhZ0Rlc2NyaXB0aW9uczp0W2VdLnRhZ0Rlc2NyaXB0aW9ucyx0YWdUb1J1bnM6YzAodFtlXS5ydW5UYWdJbmZvKX19ZnVuY3Rpb24gYzAodCl7Y29uc3QgZT17fTtmb3IoY29uc3QgbiBpbiB0KWZvcihjb25zdCBvIG9mIHRbbl0pZVtvXT1bLi4uZVtvXXx8W10sbl07cmV0dXJuIGV9Y29uc3QgZDA9YlMoJE4sbnosKCh0LGUsbik9PmU/T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGUpLHtsb2FkU3RhdGU6dCxpZDpufSk6bnVsbCkpLHAwPV9rKCJbTWV0cmljcyBFZmZlY3RzXSBJbml0Iik7Y2xhc3MgbTB7Y29uc3RydWN0b3IodCxlLG4pe3RoaXMuYWN0aW9ucyQ9dCx0aGlzLnN0b3JlPWUsdGhpcy5kYXRhU291cmNlPW4sdGhpcy5kYXNoYm9hcmRTaG93bldpdGhvdXREYXRhJD10aGlzLmFjdGlvbnMkLnBpcGUoJFMocDAsWkUsdEEsdFIpLHFlKHRoaXMuc3RvcmUuc2VsZWN0KGVUKSx0aGlzLnN0b3JlLnNlbGVjdChKTikpLHVlKCgoWyx0LGVdKT0+dD09PSRUJiZlLnN0YXRlPT09VUUuTk9UX0xPQURFRCkpKSx0aGlzLnJlbG9hZFJlcXVlc3RlZFdoaWxlU2hvd24kPXRoaXMuYWN0aW9ucyQucGlwZSgkUyhRRSxKRSkscWUodGhpcy5zdG9yZS5zZWxlY3QoZVQpKSx1ZSgoKFssdF0pPT50PT09JFQpKSksdGhpcy5sb2FkVGFnTWV0YWRhdGEkPXBlKHRoaXMuZGFzaGJvYXJkU2hvd25XaXRob3V0RGF0YSQsdGhpcy5yZWxvYWRSZXF1ZXN0ZWRXaGlsZVNob3duJCkucGlwZShxZSh0aGlzLnN0b3JlLnNlbGVjdChKTiksdGhpcy5zdG9yZS5zZWxlY3QoeFIpKSx1ZSgoKFssdCxlXSk9PnQuc3RhdGUhPT1VRS5MT0FESU5HJiZudWxsIT09ZSkpLFdlKCgoKT0+e3RoaXMuc3RvcmUuZGlzcGF0Y2gobUEoKSl9KSksVmUoKChbLCx0XSk9PnRoaXMuZGF0YVNvdXJjZS5mZXRjaFRhZ01ldGFkYXRhKHQpLnBpcGUoV2UoKHQ9Pnt0aGlzLnN0b3JlLmRpc3BhdGNoKGZBKHt0YWdNZXRhZGF0YTp0fSkpfSkpLGhlKCgoKT0+KHRoaXMuc3RvcmUuZGlzcGF0Y2godUEoKSksenQobnVsbCkpKSkpKSkpLHRoaXMudmlzaWJsZUNhcmRzV2l0aG91dERhdGFDaGFuZ2VkJD10aGlzLmFjdGlvbnMkLnBpcGUoJFMoRUEpLFZlKCgoKT0+dGhpcy5nZXRWaXNpYmxlQ2FyZEZldGNoSW5mb3MoKS5waXBlKHZlKDEpKSkpLFZ0KCh0PT50LmZpbHRlcigodD0+dC5sb2FkU3RhdGU9PT1VRS5OT1RfTE9BREVEKSkpKSksdGhpcy52aXNpYmxlQ2FyZHNSZWxvYWRlZCQ9dGhpcy5yZWxvYWRSZXF1ZXN0ZWRXaGlsZVNob3duJC5waXBlKFZlKCgoKT0+dGhpcy5nZXRWaXNpYmxlQ2FyZEZldGNoSW5mb3MoKS5waXBlKHZlKDEpKSkpLFZ0KCh0PT50LmZpbHRlcigodD0+dC5sb2FkU3RhdGUhPT1VRS5MT0FESU5HKSkpKSksdGhpcy5sb2FkVGltZVNlcmllcyQ9cGUodGhpcy52aXNpYmxlQ2FyZHNXaXRob3V0RGF0YUNoYW5nZWQkLHRoaXMudmlzaWJsZUNhcmRzUmVsb2FkZWQkKS5waXBlKHVlKCh0PT50Lmxlbmd0aD4wKSkscWUodGhpcy5zdG9yZS5zZWxlY3QoeFIpLnBpcGUodWUoKHQ9Pm51bGwhPT10KSkpKSwkdCgoKFt0LGVdKT0+dGhpcy5mZXRjaFRpbWVTZXJpZXNGb3JDYXJkcyh0LGUpKSkpLHRoaXMuZGF0YUVmZmVjdHMkPVdTKCgoKT0+cGUodGhpcy5sb2FkVGFnTWV0YWRhdGEkLHRoaXMubG9hZFRpbWVTZXJpZXMkKSkse2Rpc3BhdGNoOiExfSl9bmdyeE9uSW5pdEVmZmVjdHMoKXtyZXR1cm4gcDAoKX1nZXRWaXNpYmxlQ2FyZEZldGNoSW5mb3MoKXtyZXR1cm4gdGhpcy5zdG9yZS5zZWxlY3QoaXopLnBpcGUoVmUoKHQ9PntpZighdC5zaXplKXJldHVybiB6dChbXSk7cmV0dXJuIGllKFsuLi50XS5tYXAoKHQ9PnRoaXMuc3RvcmUuc2VsZWN0KGQwLHQpLnBpcGUodmUoMSkpKSkpfSkpLFZ0KCh0PT50LmZpbHRlcihCb29sZWFuKSkpKX1mZXRjaFRpbWVTZXJpZXModCl7cmV0dXJuIHRoaXMuZGF0YVNvdXJjZS5mZXRjaFRpbWVTZXJpZXMoW3RdKS5waXBlKFdlKCh0PT57Y29uc3QgZT10LmZpbHRlcihyTik7ZS5sZW5ndGgmJmNvbnNvbGUuZXJyb3IoIlRpbWUgc2VyaWVzIHJlc3BvbnNlIGNvbnRhaW5lZCBlcnJvcnM6IixlKSx0aGlzLnN0b3JlLmRpc3BhdGNoKFJBKHtyZXNwb25zZTp0WzBdfSkpfSkpLGhlKCgoKT0+KHRoaXMuc3RvcmUuZGlzcGF0Y2goREEoe3JlcXVlc3Q6dH0pKSx6dChudWxsKSkpKSl9ZmV0Y2hUaW1lU2VyaWVzRm9yQ2FyZHModCxlKXtyZXR1cm4genQodC5tYXAoKHQ9Pntjb25zdHtwbHVnaW46bix0YWc6byxydW5JZDppLHNhbXBsZTphfT10LHI9b04obik/e3BsdWdpbjpuLHRhZzpvLHJ1bklkOml9OntwbHVnaW46bix0YWc6byxleHBlcmltZW50SWRzOmV9O3JldHVybiB2b2lkIDAhPT1hJiYoci5zYW1wbGU9YSkscn0pKSkucGlwZShXZSgodD0+e3RoaXMuc3RvcmUuZGlzcGF0Y2goU0Eoe3JlcXVlc3RzOnR9KSl9KSksJHQoKHQ9PnBlKC4uLnQubWFwKCh0PT50aGlzLmZldGNoVGltZVNlcmllcyh0KSkpKSkpKX19bTAuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fG0wKShUcihRUyksVHIoaVMpLFRyKGFOKSl9LG0wLsm1cHJvdj1Tbih7dG9rZW46bTAsZmFjdG9yeTptMC7JtWZhY30pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIobTAsW3t0eXBlOlVtfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOlFTfSx7dHlwZTppU30se3R5cGU6YU59XX0pLG51bGwpO2NvbnN0IGYwPW5ldyBlcigiTWV0cmljcyBTdG9yZSBDb25maWciKSx1MD1uZXcgZXIoIk1ldHJpY3MgSW5pdGlhbCBTZXR0aW5ncyBDb25maWciKTtmdW5jdGlvbiBnMCh0KXtyZXR1cm4gdD97aW5pdGlhbFN0YXRlOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxhMCkse3NldHRpbmdzOnR9KX06e2luaXRpYWxTdGF0ZTphMH19dmFyIGgwOyEoZnVuY3Rpb24odCl7dFt0LkxFRlQ9MV09IkxFRlQiLHRbdC5SSUdIVD0yXT0iUklHSFQiLHRbdC5NSURETEU9NF09Ik1JRERMRSIsdFt0LkZPVVJUSD04XT0iRk9VUlRIIix0W3QuRklGVEg9MzJdPSJGSUZUSCJ9KShoMHx8KGgwPXt9KSk7bGV0IGIwPTA7ZnVuY3Rpb24geTAodCxlKXtpZigxJnQpe2NvbnN0IHQ9d2YoKTtDZigwLCJidXR0b24iLDMpLFJmKCJjbGljayIsKGZ1bmN0aW9uIGUoKXtQaSh0KTtyZXR1cm4gemYoKS5leHBhbmRTaWRlYmFyKCl9KSksdmYoMSwibWF0LWljb24iLDQpLE1mKCl9fWZ1bmN0aW9uIF8wKHQsZSl7aWYoMSZ0JiYoQ2YoMCwibmF2Iiw1KSxfeSgxLCJhc3luYyIpLEZmKDIsMSksTWYoKSksMiZ0KXtjb25zdCB0PXpmKCk7bHUoIndpZHRoIixDeSgxLDQsdC53aWR0aCQpLCIlIikoIm1pbi13aWR0aCIsdC5NSU5JTVVNX1NJREVCQVJfV0lEVEhfSU5fUFgsInB4Iil9fWZ1bmN0aW9uIEMwKHQsZSl7aWYoMSZ0KXtjb25zdCB0PXdmKCk7Q2YoMCwiZGl2Iiw2KSxSZigibW91c2Vkb3duIiwoZnVuY3Rpb24gZSgpe1BpKHQpO3JldHVybiB6ZigpLnJlc2l6ZUdyYWJiZWQoKX0pKSxNZigpfX1jb25zdCBNMD1bW1siIiwibWFpbiIsIiJdXSxbWyIiLCJzaWRlYmFyIiwiIl1dXTtjbGFzcyB2MHtjb25zdHJ1Y3Rvcih0LGUpe3RoaXMuc3RvcmU9dCx0aGlzLndpZHRoJD10aGlzLnN0b3JlLnNlbGVjdChpVCksdGhpcy5uZ1Vuc3Vic2NyaWJlPW5ldyBCLHRoaXMucmVzaXppbmc9ITEsdGhpcy5NSU5JTVVNX1NJREVCQVJfV0lEVEhfSU5fUFg9NzUsbGUoZS5uYXRpdmVFbGVtZW50LCJtb3VzZW1vdmUiKS5waXBlKGplKHRoaXMubmdVbnN1YnNjcmliZSksdWUoKCgpPT50aGlzLnJlc2l6aW5nKSkpLnN1YnNjcmliZSgodD0+e2lmKCh0LmJ1dHRvbnMmaDAuTEVGVCkhPT1oMC5MRUZUKXJldHVybiB2b2lkKHRoaXMucmVzaXppbmc9ITEpO3QucHJldmVudERlZmF1bHQoKTtjb25zdHt3aWR0aDpufT1lLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7dGhpcy5zdG9yZS5kaXNwYXRjaChsQSh7d2lkdGhJblBlcmNlbnQ6dC5jbGllbnRYPD10aGlzLk1JTklNVU1fU0lERUJBUl9XSURUSF9JTl9QWD8wOnQuY2xpZW50WC9uKjEwMH0pKX0pKSxsZShlLm5hdGl2ZUVsZW1lbnQsIm1vdXNldXAiLHtwYXNzaXZlOiEwfSkucGlwZShqZSh0aGlzLm5nVW5zdWJzY3JpYmUpKS5zdWJzY3JpYmUoKCgpPT57dGhpcy5yZXNpemluZz0hMX0pKX1uZ09uRGVzdHJveSgpe3RoaXMubmdVbnN1YnNjcmliZS5uZXh0KCksdGhpcy5uZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCl9cmVzaXplR3JhYmJlZCgpe3RoaXMucmVzaXppbmc9ITB9ZXhwYW5kU2lkZWJhcigpe3RoaXMuc3RvcmUuZGlzcGF0Y2gobEEoe3dpZHRoSW5QZXJjZW50OjIwfSkpfX12YXIgeDA7djAuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHYwKShnZihpUyksZ2YoS2gpKX0sdjAuybVjbXA9c28oe3R5cGU6djAsc2VsZWN0b3JzOltbInRiLWRhc2hib2FyZC1sYXlvdXQiXV0sbmdDb250ZW50U2VsZWN0b3JzOlsiW21haW5dIiwiW3NpZGViYXJdIl0sZGVjbHM6Nyx2YXJzOjksY29uc3RzOltbImNsYXNzIiwiZXhwYW5kIiwzLCJjbGljayIsNCwibmdJZiJdLFsiY2xhc3MiLCJzaWRlYmFyIiwzLCJ3aWR0aCIsIm1pbldpZHRoIiw0LCJuZ0lmIl0sWyJjbGFzcyIsInJlc2l6ZXIiLDMsIm1vdXNlZG93biIsNCwibmdJZiJdLFsxLCJleHBhbmQiLDMsImNsaWNrIl0sWyJzdmdJY29uIiwiZXhwYW5kX21vcmVfMjRweCJdLFsxLCJzaWRlYmFyIl0sWzEsInJlc2l6ZXIiLDMsIm1vdXNlZG93biJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoSGYoTTApLEhtKDAseTAsMiwwLCJidXR0b24iLDApLF95KDEsImFzeW5jIiksSG0oMixfMCwzLDYsIm5hdiIsMSksX3koMywiYXN5bmMiKSxIbSg0LEMwLDEsMCwiZGl2IiwyKSxfeSg1LCJhc3luYyIpLEZmKDYpKSwyJmUmJihiZigibmdJZiIsMD09PUN5KDEsMyxuLndpZHRoJCkpLERjKDIpLGJmKCJuZ0lmIixDeSgzLDUsbi53aWR0aCQpPjApLERjKDIpLGJmKCJuZ0lmIixDeSg1LDcsbi53aWR0aCQpPjApKX0sZGlyZWN0aXZlczpbUHYsTXFdLHBpcGVzOltWdl0sc3R5bGVzOlsnLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjEycHg7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtYmFkZ2Utc21hbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6OXB4fS5tYXQtYmFkZ2UtbGFyZ2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweH0ubWF0LWgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1oZWFkbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMjRweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNnB4LzI4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNXB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC44MykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtaDZbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuNjcpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWJvZHktc3Ryb25nW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjAgMCAxMnB4fS5tYXQtc21hbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDEycHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjMwMCAxMTJweC8xMTJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDVlbTttYXJnaW46MCAwIDU2cHh9Lm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDU2cHgvNTZweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDJlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDQ1cHgvNDhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDA1ZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAzNHB4LzQwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDY0cHh9Lm1hdC1ib3R0b20tc2hlZXQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhcmQtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjIwcHh9Lm1hdC1jYXJkLXN1YnRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXJkLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNoZWNrYm94LWxheW91dFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoyNHB4fS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtdHJhaWxpbmctaWNvbi5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MThweH0ubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1oZWFkZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9vdGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2FsZW5kYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhbGVuZGFyLWJvZHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxM3B4fS5tYXQtY2FsZW5kYXItYm9keS1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FsZW5kYXItcGVyaW9kLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRoW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo0MDB9Lm1hdC1kaWFsb2ctdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDoxLjEyNTtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE1MCU7bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS41ZW07d2lkdGg6MS41ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNWVtIDA7Ym9yZGVyLXRvcDouODQzNzVlbSBzb2xpZCB0cmFuc3BhcmVudH0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTAuODQzNzVlbTtwYWRkaW5nLXRvcDouODQzNzVlbX0ubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo3NSU7bWFyZ2luLXRvcDouNjY2NjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjc5MTY2NjY2NjdlbSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNDM3NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMnB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTJlbSkgc2NhbGUoMC43NSl9fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi4yNWVtIDAgLjc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMDkzNzVlbTttYXJnaW4tdG9wOi0wLjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjFlbSAwIDFlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS44NDM3NWVtO21hcmdpbi10b3A6LTAuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9aW5wdXQubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LTAuMDYyNWVtfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweH0ubWF0LXJhZGlvLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW19Lm1hdC1zbGlkZS10b2dnbGUtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXN0ZXAtc3ViLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDpub3JtYWx9Lm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRhYi1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowfS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMHB4O3BhZGRpbmctdG9wOjZweDtwYWRkaW5nLWJvdHRvbTo2cHh9Lm1hdC10b29sdGlwLWhhbmRzZXRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHh9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1zaW1wbGUtc25hY2tiYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjE7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo1MDB9Lm1hdC10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW5lc3RlZC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweH0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmVtcHR5KXt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKX0ubWF0LXJpcHBsZS5tYXQtcmlwcGxlLXVuYm91bmRlZFtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6dmlzaWJsZX0ubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItcmFkaXVzOjUwJTtwb2ludGVyLWV2ZW50czpub25lO3RyYW5zaXRpb246b3BhY2l0eSx0cmFuc2Zvcm0gMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO3RyYW5zZm9ybTpzY2FsZSgwKX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6bm9uZX0uY2RrLXZpc3VhbGx5LWhpZGRlbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjA7Y2xpcDpyZWN0KDAgMCAwIDApO2hlaWdodDoxcHg7bWFyZ2luOi0xcHg7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxcHg7d2hpdGUtc3BhY2U6bm93cmFwO291dGxpbmU6MDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb2ludGVyLWV2ZW50czpub25lO3RvcDowO2xlZnQ6MDtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXTplbXB0eXtkaXNwbGF5Om5vbmV9LmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1wYW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtwb2ludGVyLWV2ZW50czphdXRvO2JveC1zaXppbmc6Ym9yZGVyLWJveDt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O21heC13aWR0aDoxMDAlO21heC1oZWlnaHQ6MTAwJX0uY2RrLW92ZXJsYXktYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO2xlZnQ6MDtyaWdodDowO3otaW5kZXg6MTAwMDtwb2ludGVyLWV2ZW50czphdXRvOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudDt0cmFuc2l0aW9uOm9wYWNpdHkgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSk7b3BhY2l0eTowfS5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjF9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAuY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTouNn0uY2RrLW92ZXJsYXktZGFyay1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4zMil9LmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MH0uY2RrLW92ZXJsYXktY29ubmVjdGVkLXBvc2l0aW9uLWJvdW5kaW5nLWJveFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bWluLXdpZHRoOjFweDttaW4taGVpZ2h0OjFweH0uY2RrLWdsb2JhbC1zY3JvbGxibG9ja1tfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7d2lkdGg6MTAwJTtvdmVyZmxvdy15OnNjcm9sbH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemVbX25nY29udGVudC0lQ09NUCVde3Jlc2l6ZTpub25lfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmdbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OmF1dG8gIWltcG9ydGFudDtvdmVyZmxvdzpoaWRkZW4gIWltcG9ydGFudH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nLWZpcmVmb3hbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OjAgIWltcG9ydGFudH1Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0e31Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZHt9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbHthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnQgMHMgMW1zfS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCg6LXdlYmtpdC1hdXRvZmlsbCl7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZCAwcyAxbXN9Lm1hdC1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtbWRjLWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9W19uZ2hvc3QtJUNPTVAlXXtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246cm93O2hlaWdodDoxMDAlO3dpZHRoOjEwMCU7cG9zaXRpb246cmVsYXRpdmV9LnNpZGViYXJbX25nY29udGVudC0lQ09NUCVde21heC13aWR0aDo4MHZ3fS5yZXNpemVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmV4cGFuZFtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOiNlYmViZWI7Ym94LXNpemluZzpib3JkZXItYm94O2ZsZXg6MCAwO2p1c3RpZnktc2VsZjpzdHJldGNofWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC5yZXNpemVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLnJlc2l6ZXJbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjojNTU1fWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC5leHBhbmRbX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAuZXhwYW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6IzU1NX0uZXhwYW5kW19uZ2NvbnRlbnQtJUNPTVAlXXt3aWR0aDoyMHB4fS5yZXNpemVyW19uZ2NvbnRlbnQtJUNPTVAlXXthbGlnbi1pdGVtczpjZW50ZXI7Ym9yZGVyLXN0eWxlOnNvbGlkO2JvcmRlci13aWR0aDowIDJweDtjdXJzb3I6ZXctcmVzaXplO2NvbnRhaW46c3RyaWN0O2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LXNlbGY6c3RyZXRjaH0ucmVzaXplcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde3dpZHRoOjEwMCV9LnJlc2l6ZXJbX25nY29udGVudC0lQ09NUCVdOmhvdmVye2JvcmRlci1jb2xvcjojY2NjO291dGxpbmU6M3B4IHNvbGlkICNjY2M7ei1pbmRleDoxfWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC5yZXNpemVyW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlciwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLnJlc2l6ZXJbX25nY29udGVudC0lQ09NUCVdOmhvdmVye291dGxpbmUtY29sb3I6Izc3Nztib3JkZXItY29sb3I6Izc3N30uZXhwYW5kW19uZ2NvbnRlbnQtJUNPTVAlXXthbGlnbi1pdGVtczpjZW50ZXI7YmFja2dyb3VuZDp0cmFuc3BhcmVudDtib3JkZXItc3R5bGU6c29saWQ7Ym9yZGVyLXdpZHRoOjAgMXB4IDAgMDtjb2xvcjppbmhlcml0O2NvbnRhaW46Y29udGVudDtjdXJzb3I6cG9pbnRlcjtkaXNwbGF5OmZsZXg7anVzdGlmeS1zZWxmOnN0cmV0Y2g7cGFkZGluZzowfS5leHBhbmRbX25nY29udGVudC0lQ09NUCVdICAgbWF0LWljb25bX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTpyb3RhdGUoLTkwZGVnKTt0cmFuc2Zvcm0tb3JpZ2luOmNlbnRlcn0nXSxjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIodjAsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoidGItZGFzaGJvYXJkLWxheW91dCIsdGVtcGxhdGU6J1xuICAgIDxidXR0b25cbiAgICAgICpuZ0lmPSIod2lkdGgkIHwgYXN5bmMpID09PSAwIlxuICAgICAgY2xhc3M9ImV4cGFuZCJcbiAgICAgIChjbGljayk9ImV4cGFuZFNpZGViYXIoKSJcbiAgICA+XG4gICAgICA8bWF0LWljb24gc3ZnSWNvbj0iZXhwYW5kX21vcmVfMjRweCI+PC9tYXQtaWNvbj5cbiAgICA8L2J1dHRvbj5cbiAgICA8bmF2XG4gICAgICAqbmdJZj0iKHdpZHRoJCB8IGFzeW5jKSA+IDAiXG4gICAgICBjbGFzcz0ic2lkZWJhciJcbiAgICAgIFtzdHlsZS53aWR0aC4lXT0id2lkdGgkIHwgYXN5bmMiXG4gICAgICBbc3R5bGUubWluV2lkdGgucHhdPSJNSU5JTVVNX1NJREVCQVJfV0lEVEhfSU5fUFgiXG4gICAgPlxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PSJbc2lkZWJhcl0iPjwvbmctY29udGVudD5cbiAgICA8L25hdj5cbiAgICA8ZGl2XG4gICAgICAqbmdJZj0iKHdpZHRoJCB8IGFzeW5jKSA+IDAiXG4gICAgICBjbGFzcz0icmVzaXplciJcbiAgICAgIChtb3VzZWRvd24pPSJyZXNpemVHcmFiYmVkKCkiXG4gICAgPjwvZGl2PlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD0iW21haW5dIj48L25nLWNvbnRlbnQ+XG4gICcsc3R5bGVVcmxzOlsibGF5b3V0X2NvbnRhaW5lci5jc3MiXSxjaGFuZ2VEZXRlY3Rpb246am4uT25QdXNofV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6aVN9LHt0eXBlOktofV19KSxudWxsKSwoZnVuY3Rpb24odCl7dC5DSEVDS0JPWD0iY2hlY2tib3giLHQuUlVOX05BTUU9InJ1bl9uYW1lIix0LkVYUEVSSU1FTlRfTkFNRT0iZXhwZXJpbWVudF9uYW1lIix0LlJVTl9DT0xPUj0icnVuX2NvbG9yIn0pKHgwfHwoeDA9e30pKTtjb25zdCBPMD1fUyhIVCksUDA9YlMoTzAsKCh0LGUpPT57Y29uc3Qgbj1bXTtmb3IoY29uc3QgbyBvZiBlKXQuc3BlY3Nbb10mJm4ucHVzaCh0LnNwZWNzW29dLmhwYXJhbS5kZWZhdWx0RmlsdGVycyk7cmV0dXJuIFRUKG4pfSkpLHcwPWJTKFAwLE8wLCgodCxlLG4pPT57dmFyIG87Y29uc3QgaT1BVChuKSxhPWUuZmlsdGVyc1tpXTtyZXR1cm4gbmV3IE1hcChbLi4udCwuLi5udWxsIT09KG89bnVsbD09YT92b2lkIDA6YS5ocGFyYW1zKSYmdm9pZCAwIT09bz9vOltdXSl9KSksazA9YlMoTzAsKCh0LGUpPT57Y29uc3Qgbj1bXTtmb3IoY29uc3QgbyBvZiBlKXQuc3BlY3Nbb10mJm4ucHVzaCh0LnNwZWNzW29dLm1ldHJpYy5kZWZhdWx0RmlsdGVycyk7cmV0dXJuIE5UKG4pfSkpLFMwPWJTKGswLE8wLCgodCxlLG4pPT57dmFyIG87Y29uc3QgaT1BVChuKSxhPWUuZmlsdGVyc1tpXTtyZXR1cm4gbmV3IE1hcChbLi4udCwuLi5udWxsIT09KG89bnVsbD09YT92b2lkIDA6YS5tZXRyaWNzKSYmdm9pZCAwIT09bz9vOltdXSl9KSksRDA9YlMoTzAsKCh0LGUpPT4oZnVuY3Rpb24gbiguLi50KXtjb25zdCBlPW5ldyBNYXAsbj1uZXcgTWFwLG89bmV3IE1hcCxpPW5ldyBNYXAsYT1bXTtmb3IoY29uc3QgciBvZiB0KXtmb3IoY29uc3QgdCBvZiByLmhwYXJhbXMpaWYobi5oYXModC5uYW1lKXx8bi5zZXQodC5uYW1lLG5ldyBTZXQpLG4uZ2V0KHQubmFtZSkuYWRkKHQuZGlzcGxheU5hbWUpLGUuaGFzKHQubmFtZSkpe2NvbnN0IG49ZS5nZXQodC5uYW1lKSxvPXQ7aWYobi50eXBlIT09by50eXBlJiZhLnB1c2goYEhwYXJhbSwgJHtvLm5hbWV9LCB0eXBlcyBoYXZlIHRvIG1hdGNoLiBHb3Q6ICR7bi50eXBlfSB2cy4gJHtvLnR5cGV9YCksbi5kb21haW4udHlwZT09PWtULklOVEVSVkFMJiZvLmRvbWFpbi50eXBlPT09a1QuSU5URVJWQUwpbi5kb21haW4ubWluVmFsdWU9PT1vLmRvbWFpbi5taW5WYWx1ZSYmbi5kb21haW4ubWF4VmFsdWU9PT1vLmRvbWFpbi5tYXhWYWx1ZXx8YS5wdXNoKGBIcGFyYW0sICR7by5uYW1lfSwgZG9tYWlucyBoYXZlIHRvIG1hdGNoLiBHb3Q6ICR7bi5kb21haW59IHZzLiAke28uZG9tYWlufWApO2Vsc2UgaWYobi5kb21haW4udHlwZT09PWtULkRJU0NSRVRFJiZvLmRvbWFpbi50eXBlPT09a1QuRElTQ1JFVEUpe2NvbnN0IHQ9bmV3IFNldChbLi4ubi5kb21haW4udmFsdWVzLC4uLm8uZG9tYWluLnZhbHVlc10pO24uZG9tYWluLnZhbHVlcy5sZW5ndGg9PT1vLmRvbWFpbi52YWx1ZXMubGVuZ3RoJiZuLmRvbWFpbi52YWx1ZXMubGVuZ3RoPT09dC5zaXplfHxhLnB1c2goYEhwYXJhbSwgJHtvLm5hbWV9LCBkb21haW5zIGhhdmUgdG8gbWF0Y2guIEdvdDogJHtuLmRvbWFpbn0gdnMuICR7by5kb21haW59YCl9ZWxzZSBhLnB1c2goYEhwYXJhbSwgJHtvLm5hbWV9LCBkb21haW5zIGhhdmUgdG8gbWF0Y2guIEdvdDogJHtuLmRvbWFpbn0gdnMuICR7by5kb21haW59YCl9ZWxzZSBlLnNldCh0Lm5hbWUsT2JqZWN0LmFzc2lnbih7fSx0KSk7Zm9yKGNvbnN0IHQgb2Ygci5tZXRyaWNzKWlmKGkuaGFzKHQudGFnKXx8aS5zZXQodC50YWcsbmV3IFNldCksaS5nZXQodC50YWcpLmFkZCh0LmRpc3BsYXlOYW1lKSxvLmhhcyh0LnRhZykpe2NvbnN0IGU9by5nZXQodC50YWcpLG49dDtlLmRhdGFzZXRUeXBlIT09bi5kYXRhc2V0VHlwZSYmYS5wdXNoKGBNZXRyaWMsICR7bi50YWd9LCBkYXRhc2V0VHlwZXMgaGF2ZSB0byBtYXRjaC4gR290OiAke2UuZGF0YXNldFR5cGV9IHZzLiAke24uZGF0YXNldFR5cGV9YCl9ZWxzZSBvLnNldCh0LnRhZyxPYmplY3QuYXNzaWduKHt9LHQpKX1pZihhLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoYFZhbGlkYXRpb24gZXJyb3I6XG4ke2Euam9pbigiXG4iKX1gKTtyZXR1cm57aHBhcmFtczpbLi4uZV0ubWFwKCgoW3QsZV0pPT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sZSkse2Rpc3BsYXlOYW1lOlsuLi5uLmdldCh0KV0uam9pbigiIG9yICIpfSkpKSxtZXRyaWNzOlsuLi5vXS5tYXAoKChbdCxlXSk9Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxlKSx7ZGlzcGxheU5hbWU6Wy4uLmkuZ2V0KHQpXS5qb2luKCIgb3IgIil9KSkpfX0pKC4uLmUuZXhwZXJpbWVudElkcy5tYXAoKGU9Pntjb25zdCBuPXQuc3BlY3NbZV07cmV0dXJuIG4/e2hwYXJhbXM6bi5ocGFyYW0uc3BlY3MsbWV0cmljczpuLm1ldHJpYy5zcGVjc306bnVsbH0pKS5maWx0ZXIoQm9vbGVhbikpKSksUjA9e3Rvb2x0aXBTdGF0ZTp4Tygic3RhdGUiLFtrTygiaW5pdGlhbCwgdm9pZCwgaGlkZGVuIix3Tyh7b3BhY2l0eTowLHRyYW5zZm9ybToic2NhbGUoMCkifSkpLGtPKCJ2aXNpYmxlIix3Tyh7dHJhbnNmb3JtOiJzY2FsZSgxKSJ9KSksRE8oIiogPT4gdmlzaWJsZSIsT08oIjIwMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpIixTTyhbd08oe29wYWNpdHk6MCx0cmFuc2Zvcm06InNjYWxlKDApIixvZmZzZXQ6MH0pLHdPKHtvcGFjaXR5Oi41LHRyYW5zZm9ybToic2NhbGUoMC45OSkiLG9mZnNldDouNX0pLHdPKHtvcGFjaXR5OjEsdHJhbnNmb3JtOiJzY2FsZSgxKSIsb2Zmc2V0OjF9KV0pKSksRE8oIiogPT4gaGlkZGVuIixPTygiMTAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSkiLHdPKHtvcGFjaXR5OjB9KSkpXSl9LEUwPWJIKHtwYXNzaXZlOiEwfSk7ZnVuY3Rpb24gQTAodCl7cmV0dXJuIEVycm9yKGBUb29sdGlwIHBvc2l0aW9uICIke3R9IiBpcyBpbnZhbGlkLmApfWNvbnN0IFQwPW5ldyBlcigibWF0LXRvb2x0aXAtc2Nyb2xsLXN0cmF0ZWd5Iik7Y29uc3QgTjA9e3Byb3ZpZGU6VDAsZGVwczpbS0JdLHVzZUZhY3Rvcnk6ZnVuY3Rpb24gejAodCl7cmV0dXJuKCk9PnQuc2Nyb2xsU3RyYXRlZ2llcy5yZXBvc2l0aW9uKHtzY3JvbGxUaHJvdHRsZToyMH0pfX0sSTA9bmV3IGVyKCJtYXQtdG9vbHRpcC1kZWZhdWx0LW9wdGlvbnMiLHtwcm92aWRlZEluOiJyb290IixmYWN0b3J5OmZ1bmN0aW9uIEgwKCl7cmV0dXJue3Nob3dEZWxheTowLGhpZGVEZWxheTowLHRvdWNoZW5kSGlkZURlbGF5OjE1MDB9fX0pO2NsYXNzIEYwe2NvbnN0cnVjdG9yKHQsZSxuLG8saSxhLHIscyxsLGMsZCxwKXt0aGlzLl9vdmVybGF5PXQsdGhpcy5fZWxlbWVudFJlZj1lLHRoaXMuX3Njcm9sbERpc3BhdGNoZXI9bix0aGlzLl92aWV3Q29udGFpbmVyUmVmPW8sdGhpcy5fbmdab25lPWksdGhpcy5fcGxhdGZvcm09YSx0aGlzLl9hcmlhRGVzY3JpYmVyPXIsdGhpcy5fZm9jdXNNb25pdG9yPXMsdGhpcy5fZGlyPWMsdGhpcy5fZGVmYXVsdE9wdGlvbnM9ZCx0aGlzLl9wb3NpdGlvbj0iYmVsb3ciLHRoaXMuX2Rpc2FibGVkPSExLHRoaXMuX3ZpZXdJbml0aWFsaXplZD0hMSx0aGlzLl9wb2ludGVyRXhpdEV2ZW50c0luaXRpYWxpemVkPSExLHRoaXMuX3ZpZXdwb3J0TWFyZ2luPTgsdGhpcy5fY3NzQ2xhc3NQcmVmaXg9Im1hdCIsdGhpcy5zaG93RGVsYXk9dGhpcy5fZGVmYXVsdE9wdGlvbnMuc2hvd0RlbGF5LHRoaXMuaGlkZURlbGF5PXRoaXMuX2RlZmF1bHRPcHRpb25zLmhpZGVEZWxheSx0aGlzLnRvdWNoR2VzdHVyZXM9ImF1dG8iLHRoaXMuX21lc3NhZ2U9IiIsdGhpcy5fcGFzc2l2ZUxpc3RlbmVycz1bXSx0aGlzLl9kZXN0cm95ZWQ9bmV3IEIsdGhpcy5faGFuZGxlS2V5ZG93bj10PT57dGhpcy5faXNUb29sdGlwVmlzaWJsZSgpJiZ0LmtleUNvZGU9PT1LSSYmIXRIKHQpJiYodC5wcmV2ZW50RGVmYXVsdCgpLHQuc3RvcFByb3BhZ2F0aW9uKCksdGhpcy5fbmdab25lLnJ1bigoKCk9PnRoaXMuaGlkZSgwKSkpKX0sdGhpcy5fc2Nyb2xsU3RyYXRlZ3k9bCx0aGlzLl9kb2N1bWVudD1wLGQmJihkLnBvc2l0aW9uJiYodGhpcy5wb3NpdGlvbj1kLnBvc2l0aW9uKSxkLnRvdWNoR2VzdHVyZXMmJih0aGlzLnRvdWNoR2VzdHVyZXM9ZC50b3VjaEdlc3R1cmVzKSksYy5jaGFuZ2UucGlwZShqZSh0aGlzLl9kZXN0cm95ZWQpKS5zdWJzY3JpYmUoKCgpPT57dGhpcy5fb3ZlcmxheVJlZiYmdGhpcy5fdXBkYXRlUG9zaXRpb24odGhpcy5fb3ZlcmxheVJlZil9KSksaS5ydW5PdXRzaWRlQW5ndWxhcigoKCk9PntlLm5hdGl2ZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsdGhpcy5faGFuZGxlS2V5ZG93bil9KSl9Z2V0IHBvc2l0aW9uKCl7cmV0dXJuIHRoaXMuX3Bvc2l0aW9ufXNldCBwb3NpdGlvbih0KXt2YXIgZTt0IT09dGhpcy5fcG9zaXRpb24mJih0aGlzLl9wb3NpdGlvbj10LHRoaXMuX292ZXJsYXlSZWYmJih0aGlzLl91cGRhdGVQb3NpdGlvbih0aGlzLl9vdmVybGF5UmVmKSxudWxsPT09KGU9dGhpcy5fdG9vbHRpcEluc3RhbmNlKXx8dm9pZCAwPT09ZXx8ZS5zaG93KDApLHRoaXMuX292ZXJsYXlSZWYudXBkYXRlUG9zaXRpb24oKSkpfWdldCBkaXNhYmxlZCgpe3JldHVybiB0aGlzLl9kaXNhYmxlZH1zZXQgZGlzYWJsZWQodCl7dGhpcy5fZGlzYWJsZWQ9ZUgodCksdGhpcy5fZGlzYWJsZWQ/dGhpcy5oaWRlKDApOnRoaXMuX3NldHVwUG9pbnRlckVudGVyRXZlbnRzSWZOZWVkZWQoKX1nZXQgbWVzc2FnZSgpe3JldHVybiB0aGlzLl9tZXNzYWdlfXNldCBtZXNzYWdlKHQpe3RoaXMuX2FyaWFEZXNjcmliZXIucmVtb3ZlRGVzY3JpcHRpb24odGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LHRoaXMuX21lc3NhZ2UsInRvb2x0aXAiKSx0aGlzLl9tZXNzYWdlPW51bGwhPXQ/U3RyaW5nKHQpLnRyaW0oKToiIiwhdGhpcy5fbWVzc2FnZSYmdGhpcy5faXNUb29sdGlwVmlzaWJsZSgpP3RoaXMuaGlkZSgwKToodGhpcy5fc2V0dXBQb2ludGVyRW50ZXJFdmVudHNJZk5lZWRlZCgpLHRoaXMuX3VwZGF0ZVRvb2x0aXBNZXNzYWdlKCksdGhpcy5fbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgoKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCgpPT57dGhpcy5fYXJpYURlc2NyaWJlci5kZXNjcmliZSh0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsdGhpcy5tZXNzYWdlLCJ0b29sdGlwIil9KSl9KSkpfWdldCB0b29sdGlwQ2xhc3MoKXtyZXR1cm4gdGhpcy5fdG9vbHRpcENsYXNzfXNldCB0b29sdGlwQ2xhc3ModCl7dGhpcy5fdG9vbHRpcENsYXNzPXQsdGhpcy5fdG9vbHRpcEluc3RhbmNlJiZ0aGlzLl9zZXRUb29sdGlwQ2xhc3ModGhpcy5fdG9vbHRpcENsYXNzKX1uZ0FmdGVyVmlld0luaXQoKXt0aGlzLl92aWV3SW5pdGlhbGl6ZWQ9ITAsdGhpcy5fc2V0dXBQb2ludGVyRW50ZXJFdmVudHNJZk5lZWRlZCgpLHRoaXMuX2ZvY3VzTW9uaXRvci5tb25pdG9yKHRoaXMuX2VsZW1lbnRSZWYpLnBpcGUoamUodGhpcy5fZGVzdHJveWVkKSkuc3Vic2NyaWJlKCh0PT57dD8ia2V5Ym9hcmQiPT09dCYmdGhpcy5fbmdab25lLnJ1bigoKCk9PnRoaXMuc2hvdygpKSk6dGhpcy5fbmdab25lLnJ1bigoKCk9PnRoaXMuaGlkZSgwKSkpfSkpfW5nT25EZXN0cm95KCl7Y29uc3QgdD10aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7Y2xlYXJUaW1lb3V0KHRoaXMuX3RvdWNoc3RhcnRUaW1lb3V0KSx0aGlzLl9vdmVybGF5UmVmJiYodGhpcy5fb3ZlcmxheVJlZi5kaXNwb3NlKCksdGhpcy5fdG9vbHRpcEluc3RhbmNlPW51bGwpLHQucmVtb3ZlRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsdGhpcy5faGFuZGxlS2V5ZG93biksdGhpcy5fcGFzc2l2ZUxpc3RlbmVycy5mb3JFYWNoKCgoW2Usbl0pPT57dC5yZW1vdmVFdmVudExpc3RlbmVyKGUsbixFMCl9KSksdGhpcy5fcGFzc2l2ZUxpc3RlbmVycy5sZW5ndGg9MCx0aGlzLl9kZXN0cm95ZWQubmV4dCgpLHRoaXMuX2Rlc3Ryb3llZC5jb21wbGV0ZSgpLHRoaXMuX2FyaWFEZXNjcmliZXIucmVtb3ZlRGVzY3JpcHRpb24odCx0aGlzLm1lc3NhZ2UsInRvb2x0aXAiKSx0aGlzLl9mb2N1c01vbml0b3Iuc3RvcE1vbml0b3JpbmcodCl9c2hvdyh0PXRoaXMuc2hvd0RlbGF5KXtpZih0aGlzLmRpc2FibGVkfHwhdGhpcy5tZXNzYWdlfHx0aGlzLl9pc1Rvb2x0aXBWaXNpYmxlKCkmJiF0aGlzLl90b29sdGlwSW5zdGFuY2UuX3Nob3dUaW1lb3V0SWQmJiF0aGlzLl90b29sdGlwSW5zdGFuY2UuX2hpZGVUaW1lb3V0SWQpcmV0dXJuO2NvbnN0IGU9dGhpcy5fY3JlYXRlT3ZlcmxheSgpO3RoaXMuX2RldGFjaCgpLHRoaXMuX3BvcnRhbD10aGlzLl9wb3J0YWx8fG5ldyBzQih0aGlzLl90b29sdGlwQ29tcG9uZW50LHRoaXMuX3ZpZXdDb250YWluZXJSZWYpLHRoaXMuX3Rvb2x0aXBJbnN0YW5jZT1lLmF0dGFjaCh0aGlzLl9wb3J0YWwpLmluc3RhbmNlLHRoaXMuX3Rvb2x0aXBJbnN0YW5jZS5hZnRlckhpZGRlbigpLnBpcGUoamUodGhpcy5fZGVzdHJveWVkKSkuc3Vic2NyaWJlKCgoKT0+dGhpcy5fZGV0YWNoKCkpKSx0aGlzLl9zZXRUb29sdGlwQ2xhc3ModGhpcy5fdG9vbHRpcENsYXNzKSx0aGlzLl91cGRhdGVUb29sdGlwTWVzc2FnZSgpLHRoaXMuX3Rvb2x0aXBJbnN0YW5jZS5zaG93KHQpfWhpZGUodD10aGlzLmhpZGVEZWxheSl7dGhpcy5fdG9vbHRpcEluc3RhbmNlJiZ0aGlzLl90b29sdGlwSW5zdGFuY2UuaGlkZSh0KX10b2dnbGUoKXt0aGlzLl9pc1Rvb2x0aXBWaXNpYmxlKCk/dGhpcy5oaWRlKCk6dGhpcy5zaG93KCl9X2lzVG9vbHRpcFZpc2libGUoKXtyZXR1cm4hIXRoaXMuX3Rvb2x0aXBJbnN0YW5jZSYmdGhpcy5fdG9vbHRpcEluc3RhbmNlLmlzVmlzaWJsZSgpfV9jcmVhdGVPdmVybGF5KCl7aWYodGhpcy5fb3ZlcmxheVJlZilyZXR1cm4gdGhpcy5fb3ZlcmxheVJlZjtjb25zdCB0PXRoaXMuX3Njcm9sbERpc3BhdGNoZXIuZ2V0QW5jZXN0b3JTY3JvbGxDb250YWluZXJzKHRoaXMuX2VsZW1lbnRSZWYpLGU9dGhpcy5fb3ZlcmxheS5wb3NpdGlvbigpLmZsZXhpYmxlQ29ubmVjdGVkVG8odGhpcy5fZWxlbWVudFJlZikud2l0aFRyYW5zZm9ybU9yaWdpbk9uKGAuJHt0aGlzLl9jc3NDbGFzc1ByZWZpeH0tdG9vbHRpcGApLndpdGhGbGV4aWJsZURpbWVuc2lvbnMoITEpLndpdGhWaWV3cG9ydE1hcmdpbih0aGlzLl92aWV3cG9ydE1hcmdpbikud2l0aFNjcm9sbGFibGVDb250YWluZXJzKHQpO3JldHVybiBlLnBvc2l0aW9uQ2hhbmdlcy5waXBlKGplKHRoaXMuX2Rlc3Ryb3llZCkpLnN1YnNjcmliZSgodD0+e3RoaXMuX3VwZGF0ZUN1cnJlbnRQb3NpdGlvbkNsYXNzKHQuY29ubmVjdGlvblBhaXIpLHRoaXMuX3Rvb2x0aXBJbnN0YW5jZSYmdC5zY3JvbGxhYmxlVmlld1Byb3BlcnRpZXMuaXNPdmVybGF5Q2xpcHBlZCYmdGhpcy5fdG9vbHRpcEluc3RhbmNlLmlzVmlzaWJsZSgpJiZ0aGlzLl9uZ1pvbmUucnVuKCgoKT0+dGhpcy5oaWRlKDApKSl9KSksdGhpcy5fb3ZlcmxheVJlZj10aGlzLl9vdmVybGF5LmNyZWF0ZSh7ZGlyZWN0aW9uOnRoaXMuX2Rpcixwb3NpdGlvblN0cmF0ZWd5OmUscGFuZWxDbGFzczpgJHt0aGlzLl9jc3NDbGFzc1ByZWZpeH0tdG9vbHRpcC1wYW5lbGAsc2Nyb2xsU3RyYXRlZ3k6dGhpcy5fc2Nyb2xsU3RyYXRlZ3koKX0pLHRoaXMuX3VwZGF0ZVBvc2l0aW9uKHRoaXMuX292ZXJsYXlSZWYpLHRoaXMuX292ZXJsYXlSZWYuZGV0YWNobWVudHMoKS5waXBlKGplKHRoaXMuX2Rlc3Ryb3llZCkpLnN1YnNjcmliZSgoKCk9PnRoaXMuX2RldGFjaCgpKSksdGhpcy5fb3ZlcmxheVJlZi5vdXRzaWRlUG9pbnRlckV2ZW50cygpLnBpcGUoamUodGhpcy5fZGVzdHJveWVkKSkuc3Vic2NyaWJlKCgoKT0+e3ZhciB0O3JldHVybiBudWxsPT09KHQ9dGhpcy5fdG9vbHRpcEluc3RhbmNlKXx8dm9pZCAwPT09dD92b2lkIDA6dC5faGFuZGxlQm9keUludGVyYWN0aW9uKCl9KSksdGhpcy5fb3ZlcmxheVJlZn1fZGV0YWNoKCl7dGhpcy5fb3ZlcmxheVJlZiYmdGhpcy5fb3ZlcmxheVJlZi5oYXNBdHRhY2hlZCgpJiZ0aGlzLl9vdmVybGF5UmVmLmRldGFjaCgpLHRoaXMuX3Rvb2x0aXBJbnN0YW5jZT1udWxsfV91cGRhdGVQb3NpdGlvbih0KXtjb25zdCBlPXQuZ2V0Q29uZmlnKCkucG9zaXRpb25TdHJhdGVneSxuPXRoaXMuX2dldE9yaWdpbigpLG89dGhpcy5fZ2V0T3ZlcmxheVBvc2l0aW9uKCk7ZS53aXRoUG9zaXRpb25zKFt0aGlzLl9hZGRPZmZzZXQoT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LG4ubWFpbiksby5tYWluKSksdGhpcy5fYWRkT2Zmc2V0KE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxuLmZhbGxiYWNrKSxvLmZhbGxiYWNrKSldKX1fYWRkT2Zmc2V0KHQpe3JldHVybiB0fV9nZXRPcmlnaW4oKXtjb25zdCB0PSF0aGlzLl9kaXJ8fCJsdHIiPT10aGlzLl9kaXIudmFsdWUsZT10aGlzLnBvc2l0aW9uO2xldCBuO2lmKCJhYm92ZSI9PWV8fCJiZWxvdyI9PWUpbj17b3JpZ2luWDoiY2VudGVyIixvcmlnaW5ZOiJhYm92ZSI9PWU/InRvcCI6ImJvdHRvbSJ9O2Vsc2UgaWYoImJlZm9yZSI9PWV8fCJsZWZ0Ij09ZSYmdHx8InJpZ2h0Ij09ZSYmIXQpbj17b3JpZ2luWDoic3RhcnQiLG9yaWdpblk6ImNlbnRlciJ9O2Vsc2UgaWYoImFmdGVyIj09ZXx8InJpZ2h0Ij09ZSYmdHx8ImxlZnQiPT1lJiYhdCluPXtvcmlnaW5YOiJlbmQiLG9yaWdpblk6ImNlbnRlciJ9O2Vsc2UgaWYoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSl0aHJvdyBBMChlKTtjb25zdHt4Om8seTppfT10aGlzLl9pbnZlcnRQb3NpdGlvbihuLm9yaWdpblgsbi5vcmlnaW5ZKTtyZXR1cm57bWFpbjpuLGZhbGxiYWNrOntvcmlnaW5YOm8sb3JpZ2luWTppfX19X2dldE92ZXJsYXlQb3NpdGlvbigpe2NvbnN0IHQ9IXRoaXMuX2Rpcnx8Imx0ciI9PXRoaXMuX2Rpci52YWx1ZSxlPXRoaXMucG9zaXRpb247bGV0IG47aWYoImFib3ZlIj09ZSluPXtvdmVybGF5WDoiY2VudGVyIixvdmVybGF5WToiYm90dG9tIn07ZWxzZSBpZigiYmVsb3ciPT1lKW49e292ZXJsYXlYOiJjZW50ZXIiLG92ZXJsYXlZOiJ0b3AifTtlbHNlIGlmKCJiZWZvcmUiPT1lfHwibGVmdCI9PWUmJnR8fCJyaWdodCI9PWUmJiF0KW49e292ZXJsYXlYOiJlbmQiLG92ZXJsYXlZOiJjZW50ZXIifTtlbHNlIGlmKCJhZnRlciI9PWV8fCJyaWdodCI9PWUmJnR8fCJsZWZ0Ij09ZSYmIXQpbj17b3ZlcmxheVg6InN0YXJ0IixvdmVybGF5WToiY2VudGVyIn07ZWxzZSBpZigidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKXRocm93IEEwKGUpO2NvbnN0e3g6byx5Oml9PXRoaXMuX2ludmVydFBvc2l0aW9uKG4ub3ZlcmxheVgsbi5vdmVybGF5WSk7cmV0dXJue21haW46bixmYWxsYmFjazp7b3ZlcmxheVg6byxvdmVybGF5WTppfX19X3VwZGF0ZVRvb2x0aXBNZXNzYWdlKCl7dGhpcy5fdG9vbHRpcEluc3RhbmNlJiYodGhpcy5fdG9vbHRpcEluc3RhbmNlLm1lc3NhZ2U9dGhpcy5tZXNzYWdlLHRoaXMuX3Rvb2x0aXBJbnN0YW5jZS5fbWFya0ZvckNoZWNrKCksdGhpcy5fbmdab25lLm9uTWljcm90YXNrRW1wdHkucGlwZSh2ZSgxKSxqZSh0aGlzLl9kZXN0cm95ZWQpKS5zdWJzY3JpYmUoKCgpPT57dGhpcy5fdG9vbHRpcEluc3RhbmNlJiZ0aGlzLl9vdmVybGF5UmVmLnVwZGF0ZVBvc2l0aW9uKCl9KSkpfV9zZXRUb29sdGlwQ2xhc3ModCl7dGhpcy5fdG9vbHRpcEluc3RhbmNlJiYodGhpcy5fdG9vbHRpcEluc3RhbmNlLnRvb2x0aXBDbGFzcz10LHRoaXMuX3Rvb2x0aXBJbnN0YW5jZS5fbWFya0ZvckNoZWNrKCkpfV9pbnZlcnRQb3NpdGlvbih0LGUpe3JldHVybiJhYm92ZSI9PT10aGlzLnBvc2l0aW9ufHwiYmVsb3ciPT09dGhpcy5wb3NpdGlvbj8idG9wIj09PWU/ZT0iYm90dG9tIjoiYm90dG9tIj09PWUmJihlPSJ0b3AiKToiZW5kIj09PXQ/dD0ic3RhcnQiOiJzdGFydCI9PT10JiYodD0iZW5kIikse3g6dCx5OmV9fV91cGRhdGVDdXJyZW50UG9zaXRpb25DbGFzcyh0KXtjb25zdHtvdmVybGF5WTplLG9yaWdpblg6bixvcmlnaW5ZOm99PXQ7bGV0IGk7aWYoaT0iY2VudGVyIj09PWU/dGhpcy5fZGlyJiYicnRsIj09PXRoaXMuX2Rpci52YWx1ZT8iZW5kIj09PW4/ImxlZnQiOiJyaWdodCI6InN0YXJ0Ij09PW4/ImxlZnQiOiJyaWdodCI6ImJvdHRvbSI9PT1lJiYidG9wIj09PW8/ImFib3ZlIjoiYmVsb3ciLGkhPT10aGlzLl9jdXJyZW50UG9zaXRpb24pe2NvbnN0IHQ9dGhpcy5fb3ZlcmxheVJlZjtpZih0KXtjb25zdCBlPWAke3RoaXMuX2Nzc0NsYXNzUHJlZml4fS10b29sdGlwLXBhbmVsLWA7dC5yZW1vdmVQYW5lbENsYXNzKGUrdGhpcy5fY3VycmVudFBvc2l0aW9uKSx0LmFkZFBhbmVsQ2xhc3MoZStpKX10aGlzLl9jdXJyZW50UG9zaXRpb249aX19X3NldHVwUG9pbnRlckVudGVyRXZlbnRzSWZOZWVkZWQoKXshdGhpcy5fZGlzYWJsZWQmJnRoaXMubWVzc2FnZSYmdGhpcy5fdmlld0luaXRpYWxpemVkJiYhdGhpcy5fcGFzc2l2ZUxpc3RlbmVycy5sZW5ndGgmJih0aGlzLl9wbGF0Zm9ybVN1cHBvcnRzTW91c2VFdmVudHMoKT90aGlzLl9wYXNzaXZlTGlzdGVuZXJzLnB1c2goWyJtb3VzZWVudGVyIiwoKT0+e3RoaXMuX3NldHVwUG9pbnRlckV4aXRFdmVudHNJZk5lZWRlZCgpLHRoaXMuc2hvdygpfV0pOiJvZmYiIT09dGhpcy50b3VjaEdlc3R1cmVzJiYodGhpcy5fZGlzYWJsZU5hdGl2ZUdlc3R1cmVzSWZOZWNlc3NhcnkoKSx0aGlzLl9wYXNzaXZlTGlzdGVuZXJzLnB1c2goWyJ0b3VjaHN0YXJ0IiwoKT0+e3RoaXMuX3NldHVwUG9pbnRlckV4aXRFdmVudHNJZk5lZWRlZCgpLGNsZWFyVGltZW91dCh0aGlzLl90b3VjaHN0YXJ0VGltZW91dCksdGhpcy5fdG91Y2hzdGFydFRpbWVvdXQ9c2V0VGltZW91dCgoKCk9PnRoaXMuc2hvdygpKSw1MDApfV0pKSx0aGlzLl9hZGRMaXN0ZW5lcnModGhpcy5fcGFzc2l2ZUxpc3RlbmVycykpfV9zZXR1cFBvaW50ZXJFeGl0RXZlbnRzSWZOZWVkZWQoKXtpZih0aGlzLl9wb2ludGVyRXhpdEV2ZW50c0luaXRpYWxpemVkKXJldHVybjt0aGlzLl9wb2ludGVyRXhpdEV2ZW50c0luaXRpYWxpemVkPSEwO2NvbnN0IHQ9W107aWYodGhpcy5fcGxhdGZvcm1TdXBwb3J0c01vdXNlRXZlbnRzKCkpdC5wdXNoKFsibW91c2VsZWF2ZSIsKCk9PnRoaXMuaGlkZSgpXSxbIndoZWVsIix0PT50aGlzLl93aGVlbExpc3RlbmVyKHQpXSk7ZWxzZSBpZigib2ZmIiE9PXRoaXMudG91Y2hHZXN0dXJlcyl7dGhpcy5fZGlzYWJsZU5hdGl2ZUdlc3R1cmVzSWZOZWNlc3NhcnkoKTtjb25zdCBlPSgpPT57Y2xlYXJUaW1lb3V0KHRoaXMuX3RvdWNoc3RhcnRUaW1lb3V0KSx0aGlzLmhpZGUodGhpcy5fZGVmYXVsdE9wdGlvbnMudG91Y2hlbmRIaWRlRGVsYXkpfTt0LnB1c2goWyJ0b3VjaGVuZCIsZV0sWyJ0b3VjaGNhbmNlbCIsZV0pfXRoaXMuX2FkZExpc3RlbmVycyh0KSx0aGlzLl9wYXNzaXZlTGlzdGVuZXJzLnB1c2goLi4udCl9X2FkZExpc3RlbmVycyh0KXt0LmZvckVhY2goKChbdCxlXSk9Pnt0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcih0LGUsRTApfSkpfV9wbGF0Zm9ybVN1cHBvcnRzTW91c2VFdmVudHMoKXtyZXR1cm4hdGhpcy5fcGxhdGZvcm0uSU9TJiYhdGhpcy5fcGxhdGZvcm0uQU5EUk9JRH1fd2hlZWxMaXN0ZW5lcih0KXtpZih0aGlzLl9pc1Rvb2x0aXBWaXNpYmxlKCkpe2NvbnN0IGU9dGhpcy5fZG9jdW1lbnQuZWxlbWVudEZyb21Qb2ludCh0LmNsaWVudFgsdC5jbGllbnRZKSxuPXRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtlPT09bnx8bi5jb250YWlucyhlKXx8dGhpcy5oaWRlKCl9fV9kaXNhYmxlTmF0aXZlR2VzdHVyZXNJZk5lY2Vzc2FyeSgpe2NvbnN0IHQ9dGhpcy50b3VjaEdlc3R1cmVzO2lmKCJvZmYiIT09dCl7Y29uc3QgZT10aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsbj1lLnN0eWxlOygib24iPT09dHx8IklOUFVUIiE9PWUubm9kZU5hbWUmJiJURVhUQVJFQSIhPT1lLm5vZGVOYW1lKSYmKG4udXNlclNlbGVjdD1uLm1zVXNlclNlbGVjdD1uLndlYmtpdFVzZXJTZWxlY3Q9bi5Nb3pVc2VyU2VsZWN0PSJub25lIiksIm9uIiE9PXQmJmUuZHJhZ2dhYmxlfHwobi53ZWJraXRVc2VyRHJhZz0ibm9uZSIpLG4udG91Y2hBY3Rpb249Im5vbmUiLG4ud2Via2l0VGFwSGlnaGxpZ2h0Q29sb3I9InRyYW5zcGFyZW50In19fUYwLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxGMCkoZ2YoS0IpLGdmKEtoKSxnZihLTCksZ2YoRmIpLGdmKG1DKSxnZihjSCksZ2YoTkgpLGdmKGZGKSxnZih2b2lkIDApLGdmKHZGKSxnZih2b2lkIDApLGdmKHNNKSl9LEYwLsm1ZGlyPWhvKHt0eXBlOkYwLGlucHV0czp7c2hvd0RlbGF5OlsibWF0VG9vbHRpcFNob3dEZWxheSIsInNob3dEZWxheSJdLGhpZGVEZWxheTpbIm1hdFRvb2x0aXBIaWRlRGVsYXkiLCJoaWRlRGVsYXkiXSx0b3VjaEdlc3R1cmVzOlsibWF0VG9vbHRpcFRvdWNoR2VzdHVyZXMiLCJ0b3VjaEdlc3R1cmVzIl0scG9zaXRpb246WyJtYXRUb29sdGlwUG9zaXRpb24iLCJwb3NpdGlvbiJdLGRpc2FibGVkOlsibWF0VG9vbHRpcERpc2FibGVkIiwiZGlzYWJsZWQiXSxtZXNzYWdlOlsibWF0VG9vbHRpcCIsIm1lc3NhZ2UiXSx0b29sdGlwQ2xhc3M6WyJtYXRUb29sdGlwQ2xhc3MiLCJ0b29sdGlwQ2xhc3MiXX19KSxGMC5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOktCfSx7dHlwZTpLaH0se3R5cGU6S0x9LHt0eXBlOkZifSx7dHlwZTptQ30se3R5cGU6Y0h9LHt0eXBlOk5IfSx7dHlwZTpmRn0se3R5cGU6dm9pZCAwfSx7dHlwZTp2Rn0se3R5cGU6dm9pZCAwfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbc01dfV19XSxGMC5wcm9wRGVjb3JhdG9ycz17cG9zaXRpb246W3t0eXBlOlJfLGFyZ3M6WyJtYXRUb29sdGlwUG9zaXRpb24iXX1dLGRpc2FibGVkOlt7dHlwZTpSXyxhcmdzOlsibWF0VG9vbHRpcERpc2FibGVkIl19XSxzaG93RGVsYXk6W3t0eXBlOlJfLGFyZ3M6WyJtYXRUb29sdGlwU2hvd0RlbGF5Il19XSxoaWRlRGVsYXk6W3t0eXBlOlJfLGFyZ3M6WyJtYXRUb29sdGlwSGlkZURlbGF5Il19XSx0b3VjaEdlc3R1cmVzOlt7dHlwZTpSXyxhcmdzOlsibWF0VG9vbHRpcFRvdWNoR2VzdHVyZXMiXX1dLG1lc3NhZ2U6W3t0eXBlOlJfLGFyZ3M6WyJtYXRUb29sdGlwIl19XSx0b29sdGlwQ2xhc3M6W3t0eXBlOlJfLGFyZ3M6WyJtYXRUb29sdGlwQ2xhc3MiXX1dfSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKEYwLFt7dHlwZTprX31dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpLQn0se3R5cGU6S2h9LHt0eXBlOktMfSx7dHlwZTpGYn0se3R5cGU6bUN9LHt0eXBlOmNIfSx7dHlwZTpOSH0se3R5cGU6ZkZ9LHt0eXBlOnZvaWQgMH0se3R5cGU6dkZ9LHt0eXBlOnZvaWQgMH0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W3NNXX1dfV19KSx7c2hvd0RlbGF5Olt7dHlwZTpSXyxhcmdzOlsibWF0VG9vbHRpcFNob3dEZWxheSJdfV0saGlkZURlbGF5Olt7dHlwZTpSXyxhcmdzOlsibWF0VG9vbHRpcEhpZGVEZWxheSJdfV0sdG91Y2hHZXN0dXJlczpbe3R5cGU6Ul8sYXJnczpbIm1hdFRvb2x0aXBUb3VjaEdlc3R1cmVzIl19XSxwb3NpdGlvbjpbe3R5cGU6Ul8sYXJnczpbIm1hdFRvb2x0aXBQb3NpdGlvbiJdfV0sZGlzYWJsZWQ6W3t0eXBlOlJfLGFyZ3M6WyJtYXRUb29sdGlwRGlzYWJsZWQiXX1dLG1lc3NhZ2U6W3t0eXBlOlJfLGFyZ3M6WyJtYXRUb29sdGlwIl19XSx0b29sdGlwQ2xhc3M6W3t0eXBlOlJfLGFyZ3M6WyJtYXRUb29sdGlwQ2xhc3MiXX1dfSk7Y2xhc3MgTDAgZXh0ZW5kcyBGMHtjb25zdHJ1Y3Rvcih0LGUsbixvLGksYSxyLHMsbCxjLGQscCl7c3VwZXIodCxlLG4sbyxpLGEscixzLGwsYyxkLHApLHRoaXMuX3Rvb2x0aXBDb21wb25lbnQ9VjB9fUwwLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxMMCkoZ2YoS0IpLGdmKEtoKSxnZihLTCksZ2YoRmIpLGdmKG1DKSxnZihjSCksZ2YoTkgpLGdmKGZGKSxnZihUMCksZ2YodkYsOCksZ2YoSTAsOCksZ2Yoc00pKX0sTDAuybVkaXI9aG8oe3R5cGU6TDAsc2VsZWN0b3JzOltbIiIsIm1hdFRvb2x0aXAiLCIiXV0saG9zdEF0dHJzOlsxLCJtYXQtdG9vbHRpcC10cmlnZ2VyIl0sZXhwb3J0QXM6WyJtYXRUb29sdGlwIl0sZmVhdHVyZXM6W1FwXX0pLEwwLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6S0J9LHt0eXBlOktofSx7dHlwZTpLTH0se3R5cGU6RmJ9LHt0eXBlOm1DfSx7dHlwZTpjSH0se3R5cGU6Tkh9LHt0eXBlOmZGfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbVDBdfV19LHt0eXBlOnZGLGRlY29yYXRvcnM6W3t0eXBlOkJyfV19LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpbSTBdfV19LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltzTV19XX1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoTDAsW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3RvcjoiW21hdFRvb2x0aXBdIixleHBvcnRBczoibWF0VG9vbHRpcCIsaG9zdDp7Y2xhc3M6Im1hdC10b29sdGlwLXRyaWdnZXIifX1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOktCfSx7dHlwZTpLaH0se3R5cGU6S0x9LHt0eXBlOkZifSx7dHlwZTptQ30se3R5cGU6Y0h9LHt0eXBlOk5IfSx7dHlwZTpmRn0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W1QwXX1dfSx7dHlwZTp2RixkZWNvcmF0b3JzOlt7dHlwZTpCcn1dfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W0kwXX1dfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbc01dfV19XX0pLG51bGwpO2NsYXNzIEIwe2NvbnN0cnVjdG9yKHQpe3RoaXMuX2NoYW5nZURldGVjdG9yUmVmPXQsdGhpcy5fdmlzaWJpbGl0eT0iaW5pdGlhbCIsdGhpcy5fY2xvc2VPbkludGVyYWN0aW9uPSExLHRoaXMuX29uSGlkZT1uZXcgQn1zaG93KHQpe2NsZWFyVGltZW91dCh0aGlzLl9oaWRlVGltZW91dElkKSx0aGlzLl9jbG9zZU9uSW50ZXJhY3Rpb249ITAsdGhpcy5fc2hvd1RpbWVvdXRJZD1zZXRUaW1lb3V0KCgoKT0+e3RoaXMuX3Zpc2liaWxpdHk9InZpc2libGUiLHRoaXMuX3Nob3dUaW1lb3V0SWQ9dm9pZCAwLHRoaXMuX29uU2hvdygpLHRoaXMuX21hcmtGb3JDaGVjaygpfSksdCl9aGlkZSh0KXtjbGVhclRpbWVvdXQodGhpcy5fc2hvd1RpbWVvdXRJZCksdGhpcy5faGlkZVRpbWVvdXRJZD1zZXRUaW1lb3V0KCgoKT0+e3RoaXMuX3Zpc2liaWxpdHk9ImhpZGRlbiIsdGhpcy5faGlkZVRpbWVvdXRJZD12b2lkIDAsdGhpcy5fbWFya0ZvckNoZWNrKCl9KSx0KX1hZnRlckhpZGRlbigpe3JldHVybiB0aGlzLl9vbkhpZGV9aXNWaXNpYmxlKCl7cmV0dXJuInZpc2libGUiPT09dGhpcy5fdmlzaWJpbGl0eX1uZ09uRGVzdHJveSgpe2NsZWFyVGltZW91dCh0aGlzLl9zaG93VGltZW91dElkKSxjbGVhclRpbWVvdXQodGhpcy5faGlkZVRpbWVvdXRJZCksdGhpcy5fb25IaWRlLmNvbXBsZXRlKCl9X2FuaW1hdGlvblN0YXJ0KCl7dGhpcy5fY2xvc2VPbkludGVyYWN0aW9uPSExfV9hbmltYXRpb25Eb25lKHQpe2NvbnN0IGU9dC50b1N0YXRlOyJoaWRkZW4iIT09ZXx8dGhpcy5pc1Zpc2libGUoKXx8dGhpcy5fb25IaWRlLm5leHQoKSwidmlzaWJsZSIhPT1lJiYiaGlkZGVuIiE9PWV8fCh0aGlzLl9jbG9zZU9uSW50ZXJhY3Rpb249ITApfV9oYW5kbGVCb2R5SW50ZXJhY3Rpb24oKXt0aGlzLl9jbG9zZU9uSW50ZXJhY3Rpb24mJnRoaXMuaGlkZSgwKX1fbWFya0ZvckNoZWNrKCl7dGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCl9X29uU2hvdygpe319QjAuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEIwKShnZihPYikpfSxCMC7JtWRpcj1obyh7dHlwZTpCMH0pLEIwLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6T2J9XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKEIwLFt7dHlwZTprX31dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpPYn1dfSksbnVsbCk7Y2xhc3MgVjAgZXh0ZW5kcyBCMHtjb25zdHJ1Y3Rvcih0LGUpe3N1cGVyKHQpLHRoaXMuX2JyZWFrcG9pbnRPYnNlcnZlcj1lLHRoaXMuX2lzSGFuZHNldD10aGlzLl9icmVha3BvaW50T2JzZXJ2ZXIub2JzZXJ2ZShtVil9fVYwLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxWMCkoZ2YoT2IpLGdmKGRWKSl9LFYwLsm1Y21wPXNvKHt0eXBlOlYwLHNlbGVjdG9yczpbWyJtYXQtdG9vbHRpcC1jb21wb25lbnQiXV0saG9zdEF0dHJzOlsiYXJpYS1oaWRkZW4iLCJ0cnVlIl0saG9zdFZhcnM6Mixob3N0QmluZGluZ3M6ZnVuY3Rpb24gdChlLG4pezImZSYmbHUoInpvb20iLCJ2aXNpYmxlIj09PW4uX3Zpc2liaWxpdHk/MTpudWxsKX0sZmVhdHVyZXM6W1FwXSxkZWNsczozLHZhcnM6Nyxjb25zdHM6W1sxLCJtYXQtdG9vbHRpcCIsMywibmdDbGFzcyJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7aWYoMSZlJiYoQ2YoMCwiZGl2IiwwKSxSZigiQHN0YXRlLnN0YXJ0IiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLl9hbmltYXRpb25TdGFydCgpfSkpKCJAc3RhdGUuZG9uZSIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4uX2FuaW1hdGlvbkRvbmUoZSl9KSksX3koMSwiYXN5bmMiKSxQdSgyKSxNZigpKSwyJmUpe2xldCB0O2N1KCJtYXQtdG9vbHRpcC1oYW5kc2V0IixudWxsPT0odD1DeSgxLDUsbi5faXNIYW5kc2V0KSk/bnVsbDp0Lm1hdGNoZXMpLGJmKCJuZ0NsYXNzIixuLnRvb2x0aXBDbGFzcykoIkBzdGF0ZSIsbi5fdmlzaWJpbGl0eSksRGMoMiksd3Uobi5tZXNzYWdlKX19LGRpcmVjdGl2ZXM6W0N2XSxwaXBlczpbVnZdLHN0eWxlczpbIi5tYXQtdG9vbHRpcC1wYW5lbHtwb2ludGVyLWV2ZW50czpub25lICFpbXBvcnRhbnR9Lm1hdC10b29sdGlwe2NvbG9yOiNmZmY7Ym9yZGVyLXJhZGl1czo0cHg7bWFyZ2luOjE0cHg7bWF4LXdpZHRoOjI1MHB4O3BhZGRpbmctbGVmdDo4cHg7cGFkZGluZy1yaWdodDo4cHg7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXN9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LXRvb2x0aXB7b3V0bGluZTpzb2xpZCAxcHh9Lm1hdC10b29sdGlwLWhhbmRzZXR7bWFyZ2luOjI0cHg7cGFkZGluZy1sZWZ0OjE2cHg7cGFkZGluZy1yaWdodDoxNnB4fVxuIl0sZW5jYXBzdWxhdGlvbjoyLGRhdGE6e2FuaW1hdGlvbjpbUjAudG9vbHRpcFN0YXRlXX0sY2hhbmdlRGV0ZWN0aW9uOjB9KSxWMC5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOk9ifSx7dHlwZTpkVn1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoVjAsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoibWF0LXRvb2x0aXAtY29tcG9uZW50Iix0ZW1wbGF0ZTonPGRpdiBjbGFzcz0ibWF0LXRvb2x0aXAiXG4gICAgIFtuZ0NsYXNzXT0idG9vbHRpcENsYXNzIlxuICAgICBbY2xhc3MubWF0LXRvb2x0aXAtaGFuZHNldF09IihfaXNIYW5kc2V0IHwgYXN5bmMpPy5tYXRjaGVzIlxuICAgICBbQHN0YXRlXT0iX3Zpc2liaWxpdHkiXG4gICAgIChAc3RhdGUuc3RhcnQpPSJfYW5pbWF0aW9uU3RhcnQoKSJcbiAgICAgKEBzdGF0ZS5kb25lKT0iX2FuaW1hdGlvbkRvbmUoJGV2ZW50KSI+e3ttZXNzYWdlfX08L2Rpdj5cbicsZW5jYXBzdWxhdGlvbjpXbi5Ob25lLGNoYW5nZURldGVjdGlvbjpqbi5PblB1c2gsYW5pbWF0aW9uczpbUjAudG9vbHRpcFN0YXRlXSxob3N0OnsiW3N0eWxlLnpvb21dIjonX3Zpc2liaWxpdHkgPT09ICJ2aXNpYmxlIiA/IDEgOiBudWxsJywiYXJpYS1oaWRkZW4iOiJ0cnVlIn0sc3R5bGVzOlsiLm1hdC10b29sdGlwLXBhbmVse3BvaW50ZXItZXZlbnRzOm5vbmUgIWltcG9ydGFudH0ubWF0LXRvb2x0aXB7Y29sb3I6I2ZmZjtib3JkZXItcmFkaXVzOjRweDttYXJnaW46MTRweDttYXgtd2lkdGg6MjUwcHg7cGFkZGluZy1sZWZ0OjhweDtwYWRkaW5nLXJpZ2h0OjhweDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpc30uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtdG9vbHRpcHtvdXRsaW5lOnNvbGlkIDFweH0ubWF0LXRvb2x0aXAtaGFuZHNldHttYXJnaW46MjRweDtwYWRkaW5nLWxlZnQ6MTZweDtwYWRkaW5nLXJpZ2h0OjE2cHh9XG4iXX1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOk9ifSx7dHlwZTpkVn1dfSksbnVsbCk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjbGFzcyBqMHt9ZnVuY3Rpb24gVTAodCxlKXtpZigxJnQmJihDZigwLCJtYXQtb3B0aW9uIiwxOSksUHUoMSksTWYoKSksMiZ0KXtjb25zdCB0PWUuJGltcGxpY2l0O2JmKCJ2YWx1ZSIsdCksRGMoMSksa3UoIiAiLHQsIiAiKX19ZnVuY3Rpb24gVzAodCxlKXtpZigxJnQpe2NvbnN0IHQ9d2YoKTtDZigwLCJtYXQtZm9ybS1maWVsZCIsMTYpLENmKDEsIm1hdC1zZWxlY3QiLDE3KSxSZigic2VsZWN0aW9uQ2hhbmdlIiwoZnVuY3Rpb24gZShuKXtQaSh0KTtyZXR1cm4gemYoMikuX2NoYW5nZVBhZ2VTaXplKG4udmFsdWUpfSkpLEhtKDIsVTAsMiwyLCJtYXQtb3B0aW9uIiwxOCksTWYoKSxNZigpfWlmKDImdCl7Y29uc3QgdD16ZigyKTtiZigiYXBwZWFyYW5jZSIsdC5fZm9ybUZpZWxkQXBwZWFyYW5jZSkoImNvbG9yIix0LmNvbG9yKSxEYygxKSxiZigidmFsdWUiLHQucGFnZVNpemUpKCJkaXNhYmxlZCIsdC5kaXNhYmxlZCkoImFyaWEtbGFiZWwiLHQuX2ludGwuaXRlbXNQZXJQYWdlTGFiZWwpLERjKDEpLGJmKCJuZ0Zvck9mIix0Ll9kaXNwbGF5ZWRQYWdlU2l6ZU9wdGlvbnMpfX1mdW5jdGlvbiBHMCh0LGUpe2lmKDEmdCYmKENmKDAsImRpdiIsMjApLFB1KDEpLE1mKCkpLDImdCl7Y29uc3QgdD16ZigyKTtEYygxKSx3dSh0LnBhZ2VTaXplKX19ZnVuY3Rpb24gWTAodCxlKXtpZigxJnQmJihDZigwLCJkaXYiLDEyKSxDZigxLCJkaXYiLDEzKSxQdSgyKSxNZigpLEhtKDMsVzAsMyw2LCJtYXQtZm9ybS1maWVsZCIsMTQpLEhtKDQsRzAsMiwxLCJkaXYiLDE1KSxNZigpKSwyJnQpe2NvbnN0IHQ9emYoKTtEYygyKSxrdSgiICIsdC5faW50bC5pdGVtc1BlclBhZ2VMYWJlbCwiICIpLERjKDEpLGJmKCJuZ0lmIix0Ll9kaXNwbGF5ZWRQYWdlU2l6ZU9wdGlvbnMubGVuZ3RoPjEpLERjKDEpLGJmKCJuZ0lmIix0Ll9kaXNwbGF5ZWRQYWdlU2l6ZU9wdGlvbnMubGVuZ3RoPD0xKX19ZnVuY3Rpb24gcTAodCxlKXtpZigxJnQpe2NvbnN0IHQ9d2YoKTtDZigwLCJidXR0b24iLDIxKSxSZigiY2xpY2siLChmdW5jdGlvbiBlKCl7UGkodCk7cmV0dXJuIHpmKCkuZmlyc3RQYWdlKCl9KSksb2EoKSxDZigxLCJzdmciLDcpLHZmKDIsInBhdGgiLDIyKSxNZigpLE1mKCl9aWYoMiZ0KXtjb25zdCB0PXpmKCk7YmYoIm1hdFRvb2x0aXAiLHQuX2ludGwuZmlyc3RQYWdlTGFiZWwpKCJtYXRUb29sdGlwRGlzYWJsZWQiLHQuX3ByZXZpb3VzQnV0dG9uc0Rpc2FibGVkKCkpKCJtYXRUb29sdGlwUG9zaXRpb24iLCJhYm92ZSIpKCJkaXNhYmxlZCIsdC5fcHJldmlvdXNCdXR0b25zRGlzYWJsZWQoKSkseW0oImFyaWEtbGFiZWwiLHQuX2ludGwuZmlyc3RQYWdlTGFiZWwpfX1mdW5jdGlvbiBaMCh0LGUpe2lmKDEmdCl7Y29uc3QgdD13ZigpO29hKCksYWEoKSxDZigwLCJidXR0b24iLDIzKSxSZigiY2xpY2siLChmdW5jdGlvbiBlKCl7UGkodCk7cmV0dXJuIHpmKCkubGFzdFBhZ2UoKX0pKSxvYSgpLENmKDEsInN2ZyIsNyksdmYoMiwicGF0aCIsMjQpLE1mKCksTWYoKX1pZigyJnQpe2NvbnN0IHQ9emYoKTtiZigibWF0VG9vbHRpcCIsdC5faW50bC5sYXN0UGFnZUxhYmVsKSgibWF0VG9vbHRpcERpc2FibGVkIix0Ll9uZXh0QnV0dG9uc0Rpc2FibGVkKCkpKCJtYXRUb29sdGlwUG9zaXRpb24iLCJhYm92ZSIpKCJkaXNhYmxlZCIsdC5fbmV4dEJ1dHRvbnNEaXNhYmxlZCgpKSx5bSgiYXJpYS1sYWJlbCIsdC5faW50bC5sYXN0UGFnZUxhYmVsKX19ajAuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGowKX0sajAuybVtb2Q9Zm8oe3R5cGU6ajB9KSxqMC7JtWluaj1Ebih7cHJvdmlkZXJzOltOMF0saW1wb3J0czpbW19GLHJ4LG9WLE5GXSxORixvQl19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKGowLFt7dHlwZTpMXyxhcmdzOlt7aW1wb3J0czpbX0Yscngsb1YsTkZdLGV4cG9ydHM6W0wwLFYwLE5GLG9CXSxkZWNsYXJhdGlvbnM6W0wwLFYwXSxlbnRyeUNvbXBvbmVudHM6W1YwXSxwcm92aWRlcnM6W04wXX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnVvKGowLHtkZWNsYXJhdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm5bTDAsVjBdfSxpbXBvcnRzOmZ1bmN0aW9uKCl7cmV0dXJuW19GLHJ4LG9WLE5GXX0sZXhwb3J0czpmdW5jdGlvbigpe3JldHVybltMMCxWMCxORixvQl19fSk7Y2xhc3MgWDB7Y29uc3RydWN0b3IoKXt0aGlzLmNoYW5nZXM9bmV3IEIsdGhpcy5pdGVtc1BlclBhZ2VMYWJlbD0iSXRlbXMgcGVyIHBhZ2U6Iix0aGlzLm5leHRQYWdlTGFiZWw9Ik5leHQgcGFnZSIsdGhpcy5wcmV2aW91c1BhZ2VMYWJlbD0iUHJldmlvdXMgcGFnZSIsdGhpcy5maXJzdFBhZ2VMYWJlbD0iRmlyc3QgcGFnZSIsdGhpcy5sYXN0UGFnZUxhYmVsPSJMYXN0IHBhZ2UiLHRoaXMuZ2V0UmFuZ2VMYWJlbD0odCxlLG4pPT57aWYoMD09bnx8MD09ZSlyZXR1cm5gMCBvZiAke259YDtjb25zdCBvPXQqZTtyZXR1cm5gJHtvKzF9IOKAkyAke288KG49TWF0aC5tYXgobiwwKSk/TWF0aC5taW4obytlLG4pOm8rZX0gb2YgJHtufWB9fX1YMC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8WDApfSxYMC7JtXByb3Y9U24oe2ZhY3Rvcnk6ZnVuY3Rpb24gdCgpe3JldHVybiBuZXcgWDB9LHRva2VuOlgwLHByb3ZpZGVkSW46InJvb3QifSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihYMCxbe3R5cGU6VW0sYXJnczpbe3Byb3ZpZGVkSW46InJvb3QifV19XSwoZnVuY3Rpb24oKXtyZXR1cm5bXX0pLG51bGwpO2NvbnN0IEswPXtwcm92aWRlOlgwLGRlcHM6W1tuZXcgQnIsbmV3IGpyLFgwXV0sdXNlRmFjdG9yeTpmdW5jdGlvbiBKMCh0KXtyZXR1cm4gdHx8bmV3IFgwfX0sUTA9bmV3IGVyKCJNQVRfUEFHSU5BVE9SX0RFRkFVTFRfT1BUSU9OUyIpLCQwPXpGKEJGKGNsYXNze30pKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY2xhc3MgdDEgZXh0ZW5kcyAkMHtjb25zdHJ1Y3Rvcih0LGUsbil7aWYoc3VwZXIoKSx0aGlzLl9pbnRsPXQsdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWY9ZSx0aGlzLl9wYWdlSW5kZXg9MCx0aGlzLl9sZW5ndGg9MCx0aGlzLl9wYWdlU2l6ZU9wdGlvbnM9W10sdGhpcy5faGlkZVBhZ2VTaXplPSExLHRoaXMuX3Nob3dGaXJzdExhc3RCdXR0b25zPSExLHRoaXMucGFnZT1uZXcgU3ksdGhpcy5faW50bENoYW5nZXM9dC5jaGFuZ2VzLnN1YnNjcmliZSgoKCk9PnRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpKSksbil7Y29uc3R7cGFnZVNpemU6dCxwYWdlU2l6ZU9wdGlvbnM6ZSxoaWRlUGFnZVNpemU6byxzaG93Rmlyc3RMYXN0QnV0dG9uczppfT1uO251bGwhPXQmJih0aGlzLl9wYWdlU2l6ZT10KSxudWxsIT1lJiYodGhpcy5fcGFnZVNpemVPcHRpb25zPWUpLG51bGwhPW8mJih0aGlzLl9oaWRlUGFnZVNpemU9byksbnVsbCE9aSYmKHRoaXMuX3Nob3dGaXJzdExhc3RCdXR0b25zPWkpfX1nZXQgcGFnZUluZGV4KCl7cmV0dXJuIHRoaXMuX3BhZ2VJbmRleH1zZXQgcGFnZUluZGV4KHQpe3RoaXMuX3BhZ2VJbmRleD1NYXRoLm1heChuSCh0KSwwKSx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKX1nZXQgbGVuZ3RoKCl7cmV0dXJuIHRoaXMuX2xlbmd0aH1zZXQgbGVuZ3RoKHQpe3RoaXMuX2xlbmd0aD1uSCh0KSx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKX1nZXQgcGFnZVNpemUoKXtyZXR1cm4gdGhpcy5fcGFnZVNpemV9c2V0IHBhZ2VTaXplKHQpe3RoaXMuX3BhZ2VTaXplPU1hdGgubWF4KG5IKHQpLDApLHRoaXMuX3VwZGF0ZURpc3BsYXllZFBhZ2VTaXplT3B0aW9ucygpfWdldCBwYWdlU2l6ZU9wdGlvbnMoKXtyZXR1cm4gdGhpcy5fcGFnZVNpemVPcHRpb25zfXNldCBwYWdlU2l6ZU9wdGlvbnModCl7dGhpcy5fcGFnZVNpemVPcHRpb25zPSh0fHxbXSkubWFwKCh0PT5uSCh0KSkpLHRoaXMuX3VwZGF0ZURpc3BsYXllZFBhZ2VTaXplT3B0aW9ucygpfWdldCBoaWRlUGFnZVNpemUoKXtyZXR1cm4gdGhpcy5faGlkZVBhZ2VTaXplfXNldCBoaWRlUGFnZVNpemUodCl7dGhpcy5faGlkZVBhZ2VTaXplPWVIKHQpfWdldCBzaG93Rmlyc3RMYXN0QnV0dG9ucygpe3JldHVybiB0aGlzLl9zaG93Rmlyc3RMYXN0QnV0dG9uc31zZXQgc2hvd0ZpcnN0TGFzdEJ1dHRvbnModCl7dGhpcy5fc2hvd0ZpcnN0TGFzdEJ1dHRvbnM9ZUgodCl9bmdPbkluaXQoKXt0aGlzLl9pbml0aWFsaXplZD0hMCx0aGlzLl91cGRhdGVEaXNwbGF5ZWRQYWdlU2l6ZU9wdGlvbnMoKSx0aGlzLl9tYXJrSW5pdGlhbGl6ZWQoKX1uZ09uRGVzdHJveSgpe3RoaXMuX2ludGxDaGFuZ2VzLnVuc3Vic2NyaWJlKCl9bmV4dFBhZ2UoKXtpZighdGhpcy5oYXNOZXh0UGFnZSgpKXJldHVybjtjb25zdCB0PXRoaXMucGFnZUluZGV4O3RoaXMucGFnZUluZGV4KyssdGhpcy5fZW1pdFBhZ2VFdmVudCh0KX1wcmV2aW91c1BhZ2UoKXtpZighdGhpcy5oYXNQcmV2aW91c1BhZ2UoKSlyZXR1cm47Y29uc3QgdD10aGlzLnBhZ2VJbmRleDt0aGlzLnBhZ2VJbmRleC0tLHRoaXMuX2VtaXRQYWdlRXZlbnQodCl9Zmlyc3RQYWdlKCl7aWYoIXRoaXMuaGFzUHJldmlvdXNQYWdlKCkpcmV0dXJuO2NvbnN0IHQ9dGhpcy5wYWdlSW5kZXg7dGhpcy5wYWdlSW5kZXg9MCx0aGlzLl9lbWl0UGFnZUV2ZW50KHQpfWxhc3RQYWdlKCl7aWYoIXRoaXMuaGFzTmV4dFBhZ2UoKSlyZXR1cm47Y29uc3QgdD10aGlzLnBhZ2VJbmRleDt0aGlzLnBhZ2VJbmRleD10aGlzLmdldE51bWJlck9mUGFnZXMoKS0xLHRoaXMuX2VtaXRQYWdlRXZlbnQodCl9aGFzUHJldmlvdXNQYWdlKCl7cmV0dXJuIHRoaXMucGFnZUluZGV4Pj0xJiYwIT10aGlzLnBhZ2VTaXplfWhhc05leHRQYWdlKCl7Y29uc3QgdD10aGlzLmdldE51bWJlck9mUGFnZXMoKS0xO3JldHVybiB0aGlzLnBhZ2VJbmRleDx0JiYwIT10aGlzLnBhZ2VTaXplfWdldE51bWJlck9mUGFnZXMoKXtyZXR1cm4gdGhpcy5wYWdlU2l6ZT9NYXRoLmNlaWwodGhpcy5sZW5ndGgvdGhpcy5wYWdlU2l6ZSk6MH1fY2hhbmdlUGFnZVNpemUodCl7Y29uc3QgZT10aGlzLnBhZ2VJbmRleDt0aGlzLnBhZ2VJbmRleD1NYXRoLmZsb29yKHRoaXMucGFnZUluZGV4KnRoaXMucGFnZVNpemUvdCl8fDAsdGhpcy5wYWdlU2l6ZT10LHRoaXMuX2VtaXRQYWdlRXZlbnQoZSl9X25leHRCdXR0b25zRGlzYWJsZWQoKXtyZXR1cm4gdGhpcy5kaXNhYmxlZHx8IXRoaXMuaGFzTmV4dFBhZ2UoKX1fcHJldmlvdXNCdXR0b25zRGlzYWJsZWQoKXtyZXR1cm4gdGhpcy5kaXNhYmxlZHx8IXRoaXMuaGFzUHJldmlvdXNQYWdlKCl9X3VwZGF0ZURpc3BsYXllZFBhZ2VTaXplT3B0aW9ucygpe3RoaXMuX2luaXRpYWxpemVkJiYodGhpcy5wYWdlU2l6ZXx8KHRoaXMuX3BhZ2VTaXplPTAhPXRoaXMucGFnZVNpemVPcHRpb25zLmxlbmd0aD90aGlzLnBhZ2VTaXplT3B0aW9uc1swXTo1MCksdGhpcy5fZGlzcGxheWVkUGFnZVNpemVPcHRpb25zPXRoaXMucGFnZVNpemVPcHRpb25zLnNsaWNlKCksLTE9PT10aGlzLl9kaXNwbGF5ZWRQYWdlU2l6ZU9wdGlvbnMuaW5kZXhPZih0aGlzLnBhZ2VTaXplKSYmdGhpcy5fZGlzcGxheWVkUGFnZVNpemVPcHRpb25zLnB1c2godGhpcy5wYWdlU2l6ZSksdGhpcy5fZGlzcGxheWVkUGFnZVNpemVPcHRpb25zLnNvcnQoKCh0LGUpPT50LWUpKSx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKSl9X2VtaXRQYWdlRXZlbnQodCl7dGhpcy5wYWdlLmVtaXQoe3ByZXZpb3VzUGFnZUluZGV4OnQscGFnZUluZGV4OnRoaXMucGFnZUluZGV4LHBhZ2VTaXplOnRoaXMucGFnZVNpemUsbGVuZ3RoOnRoaXMubGVuZ3RofSl9fXQxLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHx0MSkoZ2YoWDApLGdmKE9iKSxnZih2b2lkIDApKX0sdDEuybVkaXI9aG8oe3R5cGU6dDEsaW5wdXRzOntwYWdlSW5kZXg6InBhZ2VJbmRleCIsbGVuZ3RoOiJsZW5ndGgiLHBhZ2VTaXplOiJwYWdlU2l6ZSIscGFnZVNpemVPcHRpb25zOiJwYWdlU2l6ZU9wdGlvbnMiLGhpZGVQYWdlU2l6ZToiaGlkZVBhZ2VTaXplIixzaG93Rmlyc3RMYXN0QnV0dG9uczoic2hvd0ZpcnN0TGFzdEJ1dHRvbnMiLGNvbG9yOiJjb2xvciJ9LG91dHB1dHM6e3BhZ2U6InBhZ2UifSxmZWF0dXJlczpbUXBdfSksdDEuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpYMH0se3R5cGU6T2J9LHt0eXBlOnZvaWQgMH1dLHQxLnByb3BEZWNvcmF0b3JzPXtjb2xvcjpbe3R5cGU6Ul99XSxwYWdlSW5kZXg6W3t0eXBlOlJffV0sbGVuZ3RoOlt7dHlwZTpSX31dLHBhZ2VTaXplOlt7dHlwZTpSX31dLHBhZ2VTaXplT3B0aW9uczpbe3R5cGU6Ul99XSxoaWRlUGFnZVNpemU6W3t0eXBlOlJffV0sc2hvd0ZpcnN0TGFzdEJ1dHRvbnM6W3t0eXBlOlJffV0scGFnZTpbe3R5cGU6RV99XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYih0MSxbe3R5cGU6a199XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6WDB9LHt0eXBlOk9ifSx7dHlwZTp2b2lkIDB9XX0pLHtwYWdlOlt7dHlwZTpFX31dLHBhZ2VJbmRleDpbe3R5cGU6Ul99XSxsZW5ndGg6W3t0eXBlOlJffV0scGFnZVNpemU6W3t0eXBlOlJffV0scGFnZVNpemVPcHRpb25zOlt7dHlwZTpSX31dLGhpZGVQYWdlU2l6ZTpbe3R5cGU6Ul99XSxzaG93Rmlyc3RMYXN0QnV0dG9uczpbe3R5cGU6Ul99XSxjb2xvcjpbe3R5cGU6Ul99XX0pO2NsYXNzIGUxIGV4dGVuZHMgdDF7Y29uc3RydWN0b3IodCxlLG4pe3N1cGVyKHQsZSxuKSxuJiZudWxsIT1uLmZvcm1GaWVsZEFwcGVhcmFuY2UmJih0aGlzLl9mb3JtRmllbGRBcHBlYXJhbmNlPW4uZm9ybUZpZWxkQXBwZWFyYW5jZSl9fWUxLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxlMSkoZ2YoWDApLGdmKE9iKSxnZihRMCw4KSl9LGUxLsm1Y21wPXNvKHt0eXBlOmUxLHNlbGVjdG9yczpbWyJtYXQtcGFnaW5hdG9yIl1dLGhvc3RBdHRyczpbInJvbGUiLCJncm91cCIsMSwibWF0LXBhZ2luYXRvciJdLGlucHV0czp7ZGlzYWJsZWQ6ImRpc2FibGVkIn0sZXhwb3J0QXM6WyJtYXRQYWdpbmF0b3IiXSxmZWF0dXJlczpbUXBdLGRlY2xzOjE0LHZhcnM6MTQsY29uc3RzOltbMSwibWF0LXBhZ2luYXRvci1vdXRlci1jb250YWluZXIiXSxbMSwibWF0LXBhZ2luYXRvci1jb250YWluZXIiXSxbImNsYXNzIiwibWF0LXBhZ2luYXRvci1wYWdlLXNpemUiLDQsIm5nSWYiXSxbMSwibWF0LXBhZ2luYXRvci1yYW5nZS1hY3Rpb25zIl0sWzEsIm1hdC1wYWdpbmF0b3ItcmFuZ2UtbGFiZWwiXSxbIm1hdC1pY29uLWJ1dHRvbiIsIiIsInR5cGUiLCJidXR0b24iLCJjbGFzcyIsIm1hdC1wYWdpbmF0b3ItbmF2aWdhdGlvbi1maXJzdCIsMywibWF0VG9vbHRpcCIsIm1hdFRvb2x0aXBEaXNhYmxlZCIsIm1hdFRvb2x0aXBQb3NpdGlvbiIsImRpc2FibGVkIiwiY2xpY2siLDQsIm5nSWYiXSxbIm1hdC1pY29uLWJ1dHRvbiIsIiIsInR5cGUiLCJidXR0b24iLDEsIm1hdC1wYWdpbmF0b3ItbmF2aWdhdGlvbi1wcmV2aW91cyIsMywibWF0VG9vbHRpcCIsIm1hdFRvb2x0aXBEaXNhYmxlZCIsIm1hdFRvb2x0aXBQb3NpdGlvbiIsImRpc2FibGVkIiwiY2xpY2siXSxbInZpZXdCb3giLCIwIDAgMjQgMjQiLCJmb2N1c2FibGUiLCJmYWxzZSIsMSwibWF0LXBhZ2luYXRvci1pY29uIl0sWyJkIiwiTTE1LjQxIDcuNDFMMTQgNmwtNiA2IDYgNiAxLjQxLTEuNDFMMTAuODMgMTJ6Il0sWyJtYXQtaWNvbi1idXR0b24iLCIiLCJ0eXBlIiwiYnV0dG9uIiwxLCJtYXQtcGFnaW5hdG9yLW5hdmlnYXRpb24tbmV4dCIsMywibWF0VG9vbHRpcCIsIm1hdFRvb2x0aXBEaXNhYmxlZCIsIm1hdFRvb2x0aXBQb3NpdGlvbiIsImRpc2FibGVkIiwiY2xpY2siXSxbImQiLCJNMTAgNkw4LjU5IDcuNDEgMTMuMTcgMTJsLTQuNTggNC41OUwxMCAxOGw2LTZ6Il0sWyJtYXQtaWNvbi1idXR0b24iLCIiLCJ0eXBlIiwiYnV0dG9uIiwiY2xhc3MiLCJtYXQtcGFnaW5hdG9yLW5hdmlnYXRpb24tbGFzdCIsMywibWF0VG9vbHRpcCIsIm1hdFRvb2x0aXBEaXNhYmxlZCIsIm1hdFRvb2x0aXBQb3NpdGlvbiIsImRpc2FibGVkIiwiY2xpY2siLDQsIm5nSWYiXSxbMSwibWF0LXBhZ2luYXRvci1wYWdlLXNpemUiXSxbMSwibWF0LXBhZ2luYXRvci1wYWdlLXNpemUtbGFiZWwiXSxbImNsYXNzIiwibWF0LXBhZ2luYXRvci1wYWdlLXNpemUtc2VsZWN0IiwzLCJhcHBlYXJhbmNlIiwiY29sb3IiLDQsIm5nSWYiXSxbImNsYXNzIiwibWF0LXBhZ2luYXRvci1wYWdlLXNpemUtdmFsdWUiLDQsIm5nSWYiXSxbMSwibWF0LXBhZ2luYXRvci1wYWdlLXNpemUtc2VsZWN0IiwzLCJhcHBlYXJhbmNlIiwiY29sb3IiXSxbMywidmFsdWUiLCJkaXNhYmxlZCIsImFyaWEtbGFiZWwiLCJzZWxlY3Rpb25DaGFuZ2UiXSxbMywidmFsdWUiLDQsIm5nRm9yIiwibmdGb3JPZiJdLFszLCJ2YWx1ZSJdLFsxLCJtYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZS12YWx1ZSJdLFsibWF0LWljb24tYnV0dG9uIiwiIiwidHlwZSIsImJ1dHRvbiIsMSwibWF0LXBhZ2luYXRvci1uYXZpZ2F0aW9uLWZpcnN0IiwzLCJtYXRUb29sdGlwIiwibWF0VG9vbHRpcERpc2FibGVkIiwibWF0VG9vbHRpcFBvc2l0aW9uIiwiZGlzYWJsZWQiLCJjbGljayJdLFsiZCIsIk0xOC40MSAxNi41OUwxMy44MiAxMmw0LjU5LTQuNTlMMTcgNmwtNiA2IDYgNnpNNiA2aDJ2MTJINnoiXSxbIm1hdC1pY29uLWJ1dHRvbiIsIiIsInR5cGUiLCJidXR0b24iLDEsIm1hdC1wYWdpbmF0b3ItbmF2aWdhdGlvbi1sYXN0IiwzLCJtYXRUb29sdGlwIiwibWF0VG9vbHRpcERpc2FibGVkIiwibWF0VG9vbHRpcFBvc2l0aW9uIiwiZGlzYWJsZWQiLCJjbGljayJdLFsiZCIsIk01LjU5IDcuNDFMMTAuMTggMTJsLTQuNTkgNC41OUw3IDE4bDYtNi02LTZ6TTE2IDZoMnYxMmgtMnoiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKENmKDAsImRpdiIsMCksQ2YoMSwiZGl2IiwxKSxIbSgyLFkwLDUsMywiZGl2IiwyKSxDZigzLCJkaXYiLDMpLENmKDQsImRpdiIsNCksUHUoNSksTWYoKSxIbSg2LHEwLDMsNSwiYnV0dG9uIiw1KSxDZig3LCJidXR0b24iLDYpLFJmKCJjbGljayIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5wcmV2aW91c1BhZ2UoKX0pKSxvYSgpLENmKDgsInN2ZyIsNyksdmYoOSwicGF0aCIsOCksTWYoKSxNZigpLGFhKCksQ2YoMTAsImJ1dHRvbiIsOSksUmYoImNsaWNrIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLm5leHRQYWdlKCl9KSksb2EoKSxDZigxMSwic3ZnIiw3KSx2ZigxMiwicGF0aCIsMTApLE1mKCksTWYoKSxIbSgxMyxaMCwzLDUsImJ1dHRvbiIsMTEpLE1mKCksTWYoKSxNZigpKSwyJmUmJihEYygyKSxiZigibmdJZiIsIW4uaGlkZVBhZ2VTaXplKSxEYygzKSxrdSgiICIsbi5faW50bC5nZXRSYW5nZUxhYmVsKG4ucGFnZUluZGV4LG4ucGFnZVNpemUsbi5sZW5ndGgpLCIgIiksRGMoMSksYmYoIm5nSWYiLG4uc2hvd0ZpcnN0TGFzdEJ1dHRvbnMpLERjKDEpLGJmKCJtYXRUb29sdGlwIixuLl9pbnRsLnByZXZpb3VzUGFnZUxhYmVsKSgibWF0VG9vbHRpcERpc2FibGVkIixuLl9wcmV2aW91c0J1dHRvbnNEaXNhYmxlZCgpKSgibWF0VG9vbHRpcFBvc2l0aW9uIiwiYWJvdmUiKSgiZGlzYWJsZWQiLG4uX3ByZXZpb3VzQnV0dG9uc0Rpc2FibGVkKCkpLHltKCJhcmlhLWxhYmVsIixuLl9pbnRsLnByZXZpb3VzUGFnZUxhYmVsKSxEYygzKSxiZigibWF0VG9vbHRpcCIsbi5faW50bC5uZXh0UGFnZUxhYmVsKSgibWF0VG9vbHRpcERpc2FibGVkIixuLl9uZXh0QnV0dG9uc0Rpc2FibGVkKCkpKCJtYXRUb29sdGlwUG9zaXRpb24iLCJhYm92ZSIpKCJkaXNhYmxlZCIsbi5fbmV4dEJ1dHRvbnNEaXNhYmxlZCgpKSx5bSgiYXJpYS1sYWJlbCIsbi5faW50bC5uZXh0UGFnZUxhYmVsKSxEYygzKSxiZigibmdJZiIsbi5zaG93Rmlyc3RMYXN0QnV0dG9ucykpfSxkaXJlY3RpdmVzOltQdixOTCxMMCxfVSxPWSx4dixQTF0sc3R5bGVzOlsiLm1hdC1wYWdpbmF0b3J7ZGlzcGxheTpibG9ja30ubWF0LXBhZ2luYXRvci1vdXRlci1jb250YWluZXJ7ZGlzcGxheTpmbGV4fS5tYXQtcGFnaW5hdG9yLWNvbnRhaW5lcntkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpmbGV4LWVuZDtwYWRkaW5nOjAgOHB4O2ZsZXgtd3JhcDp3cmFwLXJldmVyc2U7d2lkdGg6MTAwJX0ubWF0LXBhZ2luYXRvci1wYWdlLXNpemV7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmJhc2VsaW5lO21hcmdpbi1yaWdodDo4cHh9W2Rpcj1ydGxdIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZXttYXJnaW4tcmlnaHQ6MDttYXJnaW4tbGVmdDo4cHh9Lm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplLWxhYmVse21hcmdpbjowIDRweH0ubWF0LXBhZ2luYXRvci1wYWdlLXNpemUtc2VsZWN0e21hcmdpbjo2cHggNHB4IDAgNHB4O3dpZHRoOjU2cHh9Lm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplLXNlbGVjdC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmV7d2lkdGg6NjRweH0ubWF0LXBhZ2luYXRvci1wYWdlLXNpemUtc2VsZWN0Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbHt3aWR0aDo2NHB4fS5tYXQtcGFnaW5hdG9yLXJhbmdlLWxhYmVse21hcmdpbjowIDMycHggMCAyNHB4fS5tYXQtcGFnaW5hdG9yLXJhbmdlLWFjdGlvbnN7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcn0ubWF0LXBhZ2luYXRvci1pY29ue3dpZHRoOjI4cHg7ZmlsbDpjdXJyZW50Q29sb3J9W2Rpcj1ydGxdIC5tYXQtcGFnaW5hdG9yLWljb257dHJhbnNmb3JtOnJvdGF0ZSgxODBkZWcpfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1wYWdpbmF0b3ItaWNvbntmaWxsOkNhbnZhc1RleHR9XG4iXSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KSxlMS5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOlgwfSx7dHlwZTpPYn0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltRMF19XX1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoZTEsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoibWF0LXBhZ2luYXRvciIsZXhwb3J0QXM6Im1hdFBhZ2luYXRvciIsdGVtcGxhdGU6JzxkaXYgY2xhc3M9Im1hdC1wYWdpbmF0b3Itb3V0ZXItY29udGFpbmVyIj5cbiAgPGRpdiBjbGFzcz0ibWF0LXBhZ2luYXRvci1jb250YWluZXIiPlxuICAgIDxkaXYgY2xhc3M9Im1hdC1wYWdpbmF0b3ItcGFnZS1zaXplIiAqbmdJZj0iIWhpZGVQYWdlU2l6ZSI+XG4gICAgICA8ZGl2IGNsYXNzPSJtYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZS1sYWJlbCI+XG4gICAgICAgIHt7X2ludGwuaXRlbXNQZXJQYWdlTGFiZWx9fVxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxtYXQtZm9ybS1maWVsZFxuICAgICAgICAqbmdJZj0iX2Rpc3BsYXllZFBhZ2VTaXplT3B0aW9ucy5sZW5ndGggPiAxIlxuICAgICAgICBbYXBwZWFyYW5jZV09Il9mb3JtRmllbGRBcHBlYXJhbmNlISJcbiAgICAgICAgW2NvbG9yXT0iY29sb3IiXG4gICAgICAgIGNsYXNzPSJtYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZS1zZWxlY3QiPlxuICAgICAgICA8bWF0LXNlbGVjdFxuICAgICAgICAgIFt2YWx1ZV09InBhZ2VTaXplIlxuICAgICAgICAgIFtkaXNhYmxlZF09ImRpc2FibGVkIlxuICAgICAgICAgIFthcmlhLWxhYmVsXT0iX2ludGwuaXRlbXNQZXJQYWdlTGFiZWwiXG4gICAgICAgICAgKHNlbGVjdGlvbkNoYW5nZSk9Il9jaGFuZ2VQYWdlU2l6ZSgkZXZlbnQudmFsdWUpIj5cbiAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9ImxldCBwYWdlU2l6ZU9wdGlvbiBvZiBfZGlzcGxheWVkUGFnZVNpemVPcHRpb25zIiBbdmFsdWVdPSJwYWdlU2l6ZU9wdGlvbiI+XG4gICAgICAgICAgICB7e3BhZ2VTaXplT3B0aW9ufX1cbiAgICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9Im1hdC1wYWdpbmF0b3ItcGFnZS1zaXplLXZhbHVlIlxuICAgICAgICAqbmdJZj0iX2Rpc3BsYXllZFBhZ2VTaXplT3B0aW9ucy5sZW5ndGggPD0gMSI+e3twYWdlU2l6ZX19PC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPSJtYXQtcGFnaW5hdG9yLXJhbmdlLWFjdGlvbnMiPlxuICAgICAgPGRpdiBjbGFzcz0ibWF0LXBhZ2luYXRvci1yYW5nZS1sYWJlbCI+XG4gICAgICAgIHt7X2ludGwuZ2V0UmFuZ2VMYWJlbChwYWdlSW5kZXgsIHBhZ2VTaXplLCBsZW5ndGgpfX1cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiB0eXBlPSJidXR0b24iXG4gICAgICAgICAgICAgIGNsYXNzPSJtYXQtcGFnaW5hdG9yLW5hdmlnYXRpb24tZmlyc3QiXG4gICAgICAgICAgICAgIChjbGljayk9ImZpcnN0UGFnZSgpIlxuICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT0iX2ludGwuZmlyc3RQYWdlTGFiZWwiXG4gICAgICAgICAgICAgIFttYXRUb29sdGlwXT0iX2ludGwuZmlyc3RQYWdlTGFiZWwiXG4gICAgICAgICAgICAgIFttYXRUb29sdGlwRGlzYWJsZWRdPSJfcHJldmlvdXNCdXR0b25zRGlzYWJsZWQoKSJcbiAgICAgICAgICAgICAgW21hdFRvb2x0aXBQb3NpdGlvbl09IlwnYWJvdmVcJyJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT0iX3ByZXZpb3VzQnV0dG9uc0Rpc2FibGVkKCkiXG4gICAgICAgICAgICAgICpuZ0lmPSJzaG93Rmlyc3RMYXN0QnV0dG9ucyI+XG4gICAgICAgIDxzdmcgY2xhc3M9Im1hdC1wYWdpbmF0b3ItaWNvbiIgdmlld0JveD0iMCAwIDI0IDI0IiBmb2N1c2FibGU9ImZhbHNlIj5cbiAgICAgICAgICA8cGF0aCBkPSJNMTguNDEgMTYuNTlMMTMuODIgMTJsNC41OS00LjU5TDE3IDZsLTYgNiA2IDZ6TTYgNmgydjEySDZ6Ii8+XG4gICAgICAgIDwvc3ZnPlxuICAgICAgPC9idXR0b24+XG4gICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiB0eXBlPSJidXR0b24iXG4gICAgICAgICAgICAgIGNsYXNzPSJtYXQtcGFnaW5hdG9yLW5hdmlnYXRpb24tcHJldmlvdXMiXG4gICAgICAgICAgICAgIChjbGljayk9InByZXZpb3VzUGFnZSgpIlxuICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT0iX2ludGwucHJldmlvdXNQYWdlTGFiZWwiXG4gICAgICAgICAgICAgIFttYXRUb29sdGlwXT0iX2ludGwucHJldmlvdXNQYWdlTGFiZWwiXG4gICAgICAgICAgICAgIFttYXRUb29sdGlwRGlzYWJsZWRdPSJfcHJldmlvdXNCdXR0b25zRGlzYWJsZWQoKSJcbiAgICAgICAgICAgICAgW21hdFRvb2x0aXBQb3NpdGlvbl09IlwnYWJvdmVcJyJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT0iX3ByZXZpb3VzQnV0dG9uc0Rpc2FibGVkKCkiPlxuICAgICAgICA8c3ZnIGNsYXNzPSJtYXQtcGFnaW5hdG9yLWljb24iIHZpZXdCb3g9IjAgMCAyNCAyNCIgZm9jdXNhYmxlPSJmYWxzZSI+XG4gICAgICAgICAgPHBhdGggZD0iTTE1LjQxIDcuNDFMMTQgNmwtNiA2IDYgNiAxLjQxLTEuNDFMMTAuODMgMTJ6Ii8+XG4gICAgICAgIDwvc3ZnPlxuICAgICAgPC9idXR0b24+XG4gICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiB0eXBlPSJidXR0b24iXG4gICAgICAgICAgICAgIGNsYXNzPSJtYXQtcGFnaW5hdG9yLW5hdmlnYXRpb24tbmV4dCJcbiAgICAgICAgICAgICAgKGNsaWNrKT0ibmV4dFBhZ2UoKSJcbiAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09Il9pbnRsLm5leHRQYWdlTGFiZWwiXG4gICAgICAgICAgICAgIFttYXRUb29sdGlwXT0iX2ludGwubmV4dFBhZ2VMYWJlbCJcbiAgICAgICAgICAgICAgW21hdFRvb2x0aXBEaXNhYmxlZF09Il9uZXh0QnV0dG9uc0Rpc2FibGVkKCkiXG4gICAgICAgICAgICAgIFttYXRUb29sdGlwUG9zaXRpb25dPSJcJ2Fib3ZlXCciXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09Il9uZXh0QnV0dG9uc0Rpc2FibGVkKCkiPlxuICAgICAgICA8c3ZnIGNsYXNzPSJtYXQtcGFnaW5hdG9yLWljb24iIHZpZXdCb3g9IjAgMCAyNCAyNCIgZm9jdXNhYmxlPSJmYWxzZSI+XG4gICAgICAgICAgPHBhdGggZD0iTTEwIDZMOC41OSA3LjQxIDEzLjE3IDEybC00LjU4IDQuNTlMMTAgMThsNi02eiIvPlxuICAgICAgICA8L3N2Zz5cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gdHlwZT0iYnV0dG9uIlxuICAgICAgICAgICAgICBjbGFzcz0ibWF0LXBhZ2luYXRvci1uYXZpZ2F0aW9uLWxhc3QiXG4gICAgICAgICAgICAgIChjbGljayk9Imxhc3RQYWdlKCkiXG4gICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPSJfaW50bC5sYXN0UGFnZUxhYmVsIlxuICAgICAgICAgICAgICBbbWF0VG9vbHRpcF09Il9pbnRsLmxhc3RQYWdlTGFiZWwiXG4gICAgICAgICAgICAgIFttYXRUb29sdGlwRGlzYWJsZWRdPSJfbmV4dEJ1dHRvbnNEaXNhYmxlZCgpIlxuICAgICAgICAgICAgICBbbWF0VG9vbHRpcFBvc2l0aW9uXT0iXCdhYm92ZVwnIlxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPSJfbmV4dEJ1dHRvbnNEaXNhYmxlZCgpIlxuICAgICAgICAgICAgICAqbmdJZj0ic2hvd0ZpcnN0TGFzdEJ1dHRvbnMiPlxuICAgICAgICA8c3ZnIGNsYXNzPSJtYXQtcGFnaW5hdG9yLWljb24iIHZpZXdCb3g9IjAgMCAyNCAyNCIgZm9jdXNhYmxlPSJmYWxzZSI+XG4gICAgICAgICAgPHBhdGggZD0iTTUuNTkgNy40MUwxMC4xOCAxMmwtNC41OSA0LjU5TDcgMThsNi02LTYtNnpNMTYgNmgydjEyaC0yeiIvPlxuICAgICAgICA8L3N2Zz5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuJyxpbnB1dHM6WyJkaXNhYmxlZCJdLGhvc3Q6e2NsYXNzOiJtYXQtcGFnaW5hdG9yIixyb2xlOiJncm91cCJ9LGNoYW5nZURldGVjdGlvbjpqbi5PblB1c2gsZW5jYXBzdWxhdGlvbjpXbi5Ob25lLHN0eWxlczpbIi5tYXQtcGFnaW5hdG9ye2Rpc3BsYXk6YmxvY2t9Lm1hdC1wYWdpbmF0b3Itb3V0ZXItY29udGFpbmVye2Rpc3BsYXk6ZmxleH0ubWF0LXBhZ2luYXRvci1jb250YWluZXJ7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1lbmQ7cGFkZGluZzowIDhweDtmbGV4LXdyYXA6d3JhcC1yZXZlcnNlO3dpZHRoOjEwMCV9Lm1hdC1wYWdpbmF0b3ItcGFnZS1zaXple2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpiYXNlbGluZTttYXJnaW4tcmlnaHQ6OHB4fVtkaXI9cnRsXSAubWF0LXBhZ2luYXRvci1wYWdlLXNpemV7bWFyZ2luLXJpZ2h0OjA7bWFyZ2luLWxlZnQ6OHB4fS5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZS1sYWJlbHttYXJnaW46MCA0cHh9Lm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplLXNlbGVjdHttYXJnaW46NnB4IDRweCAwIDRweDt3aWR0aDo1NnB4fS5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZS1zZWxlY3QubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5le3dpZHRoOjY0cHh9Lm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplLXNlbGVjdC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGx7d2lkdGg6NjRweH0ubWF0LXBhZ2luYXRvci1yYW5nZS1sYWJlbHttYXJnaW46MCAzMnB4IDAgMjRweH0ubWF0LXBhZ2luYXRvci1yYW5nZS1hY3Rpb25ze2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXJ9Lm1hdC1wYWdpbmF0b3ItaWNvbnt3aWR0aDoyOHB4O2ZpbGw6Y3VycmVudENvbG9yfVtkaXI9cnRsXSAubWF0LXBhZ2luYXRvci1pY29ue3RyYW5zZm9ybTpyb3RhdGUoMTgwZGVnKX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtcGFnaW5hdG9yLWljb257ZmlsbDpDYW52YXNUZXh0fVxuIl19XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpYMH0se3R5cGU6T2J9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpbUTBdfV19XX0pLG51bGwpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3MgbjF7fW4xLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxuMSl9LG4xLsm1bW9kPWZvKHt0eXBlOm4xfSksbjEuybVpbmo9RG4oe3Byb3ZpZGVyczpbSzBdLGltcG9ydHM6W1tyeCxJTCxQWSxqMCxORl1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihuMSxbe3R5cGU6TF8sYXJnczpbe2ltcG9ydHM6W3J4LElMLFBZLGowLE5GXSxleHBvcnRzOltlMV0sZGVjbGFyYXRpb25zOltlMV0scHJvdmlkZXJzOltLMF19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZ1byhuMSx7ZGVjbGFyYXRpb25zOmZ1bmN0aW9uKCl7cmV0dXJuW2UxXX0saW1wb3J0czpmdW5jdGlvbigpe3JldHVybltyeCxJTCxQWSxqMCxORl19LGV4cG9ydHM6ZnVuY3Rpb24oKXtyZXR1cm5bZTFdfX0pO2Z1bmN0aW9uIG8xKHQsZSl7aWYoMSZ0KXtjb25zdCB0PXdmKCk7Q2YoMCwiZGl2IiwzKSxSZigiQGFycm93UG9zaXRpb24uc3RhcnQiLChmdW5jdGlvbiBlKCl7UGkodCk7cmV0dXJuIHpmKCkuX2Rpc2FibGVWaWV3U3RhdGVBbmltYXRpb249ITB9KSkoIkBhcnJvd1Bvc2l0aW9uLmRvbmUiLChmdW5jdGlvbiBlKCl7UGkodCk7cmV0dXJuIHpmKCkuX2Rpc2FibGVWaWV3U3RhdGVBbmltYXRpb249ITF9KSksdmYoMSwiZGl2Iiw0KSxDZigyLCJkaXYiLDUpLHZmKDMsImRpdiIsNiksdmYoNCwiZGl2Iiw3KSx2Zig1LCJkaXYiLDgpLE1mKCksTWYoKX1pZigyJnQpe2NvbnN0IHQ9emYoKTtiZigiQGFycm93T3BhY2l0eSIsdC5fZ2V0QXJyb3dWaWV3U3RhdGUoKSkoIkBhcnJvd1Bvc2l0aW9uIix0Ll9nZXRBcnJvd1ZpZXdTdGF0ZSgpKSgiQGFsbG93Q2hpbGRyZW4iLHQuX2dldEFycm93RGlyZWN0aW9uU3RhdGUoKSksRGMoMiksYmYoIkBpbmRpY2F0b3IiLHQuX2dldEFycm93RGlyZWN0aW9uU3RhdGUoKSksRGMoMSksYmYoIkBsZWZ0UG9pbnRlciIsdC5fZ2V0QXJyb3dEaXJlY3Rpb25TdGF0ZSgpKSxEYygxKSxiZigiQHJpZ2h0UG9pbnRlciIsdC5fZ2V0QXJyb3dEaXJlY3Rpb25TdGF0ZSgpKX19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjb25zdCBpMT1uZXcgZXIoIk1BVF9TT1JUX0RFRkFVTFRfT1BUSU9OUyIpLGExPUJGKHpGKGNsYXNze30pKTtjbGFzcyByMSBleHRlbmRzIGExe2NvbnN0cnVjdG9yKHQpe3N1cGVyKCksdGhpcy5fZGVmYXVsdE9wdGlvbnM9dCx0aGlzLnNvcnRhYmxlcz1uZXcgTWFwLHRoaXMuX3N0YXRlQ2hhbmdlcz1uZXcgQix0aGlzLnN0YXJ0PSJhc2MiLHRoaXMuX2RpcmVjdGlvbj0iIix0aGlzLnNvcnRDaGFuZ2U9bmV3IFN5fWdldCBkaXJlY3Rpb24oKXtyZXR1cm4gdGhpcy5fZGlyZWN0aW9ufXNldCBkaXJlY3Rpb24odCl7aWYodCYmImFzYyIhPT10JiYiZGVzYyIhPT10JiYoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkpdGhyb3coZnVuY3Rpb24gZSh0KXtyZXR1cm4gRXJyb3IoYCR7dH0gaXMgbm90IGEgdmFsaWQgc29ydCBkaXJlY3Rpb24gKCdhc2MnIG9yICdkZXNjJykuYCl9KSh0KTt0aGlzLl9kaXJlY3Rpb249dH1nZXQgZGlzYWJsZUNsZWFyKCl7cmV0dXJuIHRoaXMuX2Rpc2FibGVDbGVhcn1zZXQgZGlzYWJsZUNsZWFyKHQpe3RoaXMuX2Rpc2FibGVDbGVhcj1lSCh0KX1yZWdpc3Rlcih0KXtpZigidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKXtpZighdC5pZCl0aHJvdyhmdW5jdGlvbiBlKCl7cmV0dXJuIEVycm9yKCJNYXRTb3J0SGVhZGVyIG11c3QgYmUgcHJvdmlkZWQgd2l0aCBhIHVuaXF1ZSBpZC4iKX0pKCk7aWYodGhpcy5zb3J0YWJsZXMuaGFzKHQuaWQpKXRocm93KGZ1bmN0aW9uIG4odCl7cmV0dXJuIEVycm9yKGBDYW5ub3QgaGF2ZSB0d28gTWF0U29ydGFibGVzIHdpdGggdGhlIHNhbWUgaWQgKCR7dH0pLmApfSkodC5pZCl9dGhpcy5zb3J0YWJsZXMuc2V0KHQuaWQsdCl9ZGVyZWdpc3Rlcih0KXt0aGlzLnNvcnRhYmxlcy5kZWxldGUodC5pZCl9c29ydCh0KXt0aGlzLmFjdGl2ZSE9dC5pZD8odGhpcy5hY3RpdmU9dC5pZCx0aGlzLmRpcmVjdGlvbj10LnN0YXJ0P3Quc3RhcnQ6dGhpcy5zdGFydCk6dGhpcy5kaXJlY3Rpb249dGhpcy5nZXROZXh0U29ydERpcmVjdGlvbih0KSx0aGlzLnNvcnRDaGFuZ2UuZW1pdCh7YWN0aXZlOnRoaXMuYWN0aXZlLGRpcmVjdGlvbjp0aGlzLmRpcmVjdGlvbn0pfWdldE5leHRTb3J0RGlyZWN0aW9uKHQpe3ZhciBlLG4sbztpZighdClyZXR1cm4iIjtjb25zdCBpPW51bGwhPT0obj1udWxsIT09KGU9bnVsbD09dD92b2lkIDA6dC5kaXNhYmxlQ2xlYXIpJiZ2b2lkIDAhPT1lP2U6dGhpcy5kaXNhYmxlQ2xlYXIpJiZ2b2lkIDAhPT1uP246ISEobnVsbD09PShvPXRoaXMuX2RlZmF1bHRPcHRpb25zKXx8dm9pZCAwPT09bz92b2lkIDA6by5kaXNhYmxlQ2xlYXIpO2xldCBhPShmdW5jdGlvbiByKHQsZSl7bGV0IG49WyJhc2MiLCJkZXNjIl07ImRlc2MiPT10JiZuLnJldmVyc2UoKTtlfHxuLnB1c2goIiIpO3JldHVybiBufQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8pKHQuc3RhcnR8fHRoaXMuc3RhcnQsaSkscz1hLmluZGV4T2YodGhpcy5kaXJlY3Rpb24pKzE7cmV0dXJuIHM+PWEubGVuZ3RoJiYocz0wKSxhW3NdfW5nT25Jbml0KCl7dGhpcy5fbWFya0luaXRpYWxpemVkKCl9bmdPbkNoYW5nZXMoKXt0aGlzLl9zdGF0ZUNoYW5nZXMubmV4dCgpfW5nT25EZXN0cm95KCl7dGhpcy5fc3RhdGVDaGFuZ2VzLmNvbXBsZXRlKCl9fXIxLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxyMSkoZ2YoaTEsOCkpfSxyMS7JtWRpcj1obyh7dHlwZTpyMSxzZWxlY3RvcnM6W1siIiwibWF0U29ydCIsIiJdXSxob3N0QXR0cnM6WzEsIm1hdC1zb3J0Il0saW5wdXRzOntkaXNhYmxlZDpbIm1hdFNvcnREaXNhYmxlZCIsImRpc2FibGVkIl0sc3RhcnQ6WyJtYXRTb3J0U3RhcnQiLCJzdGFydCJdLGRpcmVjdGlvbjpbIm1hdFNvcnREaXJlY3Rpb24iLCJkaXJlY3Rpb24iXSxkaXNhYmxlQ2xlYXI6WyJtYXRTb3J0RGlzYWJsZUNsZWFyIiwiZGlzYWJsZUNsZWFyIl0sYWN0aXZlOlsibWF0U29ydEFjdGl2ZSIsImFjdGl2ZSJdfSxvdXRwdXRzOntzb3J0Q2hhbmdlOiJtYXRTb3J0Q2hhbmdlIn0sZXhwb3J0QXM6WyJtYXRTb3J0Il0sZmVhdHVyZXM6W1FwLHFvXX0pLHIxLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltpMV19XX1dLHIxLnByb3BEZWNvcmF0b3JzPXthY3RpdmU6W3t0eXBlOlJfLGFyZ3M6WyJtYXRTb3J0QWN0aXZlIl19XSxzdGFydDpbe3R5cGU6Ul8sYXJnczpbIm1hdFNvcnRTdGFydCJdfV0sZGlyZWN0aW9uOlt7dHlwZTpSXyxhcmdzOlsibWF0U29ydERpcmVjdGlvbiJdfV0sZGlzYWJsZUNsZWFyOlt7dHlwZTpSXyxhcmdzOlsibWF0U29ydERpc2FibGVDbGVhciJdfV0sc29ydENoYW5nZTpbe3R5cGU6RV8sYXJnczpbIm1hdFNvcnRDaGFuZ2UiXX1dfSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKHIxLFt7dHlwZTprXyxhcmdzOlt7c2VsZWN0b3I6IlttYXRTb3J0XSIsZXhwb3J0QXM6Im1hdFNvcnQiLGhvc3Q6e2NsYXNzOiJtYXQtc29ydCJ9LGlucHV0czpbImRpc2FibGVkOiBtYXRTb3J0RGlzYWJsZWQiXX1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpbaTFdfV19XX0pLHtzdGFydDpbe3R5cGU6Ul8sYXJnczpbIm1hdFNvcnRTdGFydCJdfV0sc29ydENoYW5nZTpbe3R5cGU6RV8sYXJnczpbIm1hdFNvcnRDaGFuZ2UiXX1dLGRpcmVjdGlvbjpbe3R5cGU6Ul8sYXJnczpbIm1hdFNvcnREaXJlY3Rpb24iXX1dLGRpc2FibGVDbGVhcjpbe3R5cGU6Ul8sYXJnczpbIm1hdFNvcnREaXNhYmxlQ2xlYXIiXX1dLGFjdGl2ZTpbe3R5cGU6Ul8sYXJnczpbIm1hdFNvcnRBY3RpdmUiXX1dfSk7Y29uc3QgczE9UkYuRU5URVJJTkcrIiAiK0RGLlNUQU5EQVJEX0NVUlZFLGwxPXtpbmRpY2F0b3I6eE8oImluZGljYXRvciIsW2tPKCJhY3RpdmUtYXNjLCBhc2MiLHdPKHt0cmFuc2Zvcm06InRyYW5zbGF0ZVkoMHB4KSJ9KSksa08oImFjdGl2ZS1kZXNjLCBkZXNjIix3Tyh7dHJhbnNmb3JtOiJ0cmFuc2xhdGVZKDEwcHgpIn0pKSxETygiYWN0aXZlLWFzYyA8PT4gYWN0aXZlLWRlc2MiLE9PKHMxKSldKSxsZWZ0UG9pbnRlcjp4TygibGVmdFBvaW50ZXIiLFtrTygiYWN0aXZlLWFzYywgYXNjIix3Tyh7dHJhbnNmb3JtOiJyb3RhdGUoLTQ1ZGVnKSJ9KSksa08oImFjdGl2ZS1kZXNjLCBkZXNjIix3Tyh7dHJhbnNmb3JtOiJyb3RhdGUoNDVkZWcpIn0pKSxETygiYWN0aXZlLWFzYyA8PT4gYWN0aXZlLWRlc2MiLE9PKHMxKSldKSxyaWdodFBvaW50ZXI6eE8oInJpZ2h0UG9pbnRlciIsW2tPKCJhY3RpdmUtYXNjLCBhc2MiLHdPKHt0cmFuc2Zvcm06InJvdGF0ZSg0NWRlZykifSkpLGtPKCJhY3RpdmUtZGVzYywgZGVzYyIsd08oe3RyYW5zZm9ybToicm90YXRlKC00NWRlZykifSkpLERPKCJhY3RpdmUtYXNjIDw9PiBhY3RpdmUtZGVzYyIsT08oczEpKV0pLGFycm93T3BhY2l0eTp4TygiYXJyb3dPcGFjaXR5Iixba08oImRlc2MtdG8tYWN0aXZlLCBhc2MtdG8tYWN0aXZlLCBhY3RpdmUiLHdPKHtvcGFjaXR5OjF9KSksa08oImRlc2MtdG8taGludCwgYXNjLXRvLWhpbnQsIGhpbnQiLHdPKHtvcGFjaXR5Oi41NH0pKSxrTygiaGludC10by1kZXNjLCBhY3RpdmUtdG8tZGVzYywgZGVzYywgaGludC10by1hc2MsIGFjdGl2ZS10by1hc2MsIGFzYywgdm9pZCIsd08oe29wYWNpdHk6MH0pKSxETygiKiA9PiBhc2MsICogPT4gZGVzYywgKiA9PiBhY3RpdmUsICogPT4gaGludCwgKiA9PiB2b2lkIixPTygiMG1zIikpLERPKCIqIDw9PiAqIixPTyhzMSkpXSksYXJyb3dQb3NpdGlvbjp4TygiYXJyb3dQb3NpdGlvbiIsW0RPKCIqID0+IGRlc2MtdG8taGludCwgKiA9PiBkZXNjLXRvLWFjdGl2ZSIsT08oczEsU08oW3dPKHt0cmFuc2Zvcm06InRyYW5zbGF0ZVkoLTI1JSkifSksd08oe3RyYW5zZm9ybToidHJhbnNsYXRlWSgwKSJ9KV0pKSksRE8oIiogPT4gaGludC10by1kZXNjLCAqID0+IGFjdGl2ZS10by1kZXNjIixPTyhzMSxTTyhbd08oe3RyYW5zZm9ybToidHJhbnNsYXRlWSgwKSJ9KSx3Tyh7dHJhbnNmb3JtOiJ0cmFuc2xhdGVZKDI1JSkifSldKSkpLERPKCIqID0+IGFzYy10by1oaW50LCAqID0+IGFzYy10by1hY3RpdmUiLE9PKHMxLFNPKFt3Tyh7dHJhbnNmb3JtOiJ0cmFuc2xhdGVZKDI1JSkifSksd08oe3RyYW5zZm9ybToidHJhbnNsYXRlWSgwKSJ9KV0pKSksRE8oIiogPT4gaGludC10by1hc2MsICogPT4gYWN0aXZlLXRvLWFzYyIsT08oczEsU08oW3dPKHt0cmFuc2Zvcm06InRyYW5zbGF0ZVkoMCkifSksd08oe3RyYW5zZm9ybToidHJhbnNsYXRlWSgtMjUlKSJ9KV0pKSksa08oImRlc2MtdG8taGludCwgYXNjLXRvLWhpbnQsIGhpbnQsIGRlc2MtdG8tYWN0aXZlLCBhc2MtdG8tYWN0aXZlLCBhY3RpdmUiLHdPKHt0cmFuc2Zvcm06InRyYW5zbGF0ZVkoMCkifSkpLGtPKCJoaW50LXRvLWRlc2MsIGFjdGl2ZS10by1kZXNjLCBkZXNjIix3Tyh7dHJhbnNmb3JtOiJ0cmFuc2xhdGVZKC0yNSUpIn0pKSxrTygiaGludC10by1hc2MsIGFjdGl2ZS10by1hc2MsIGFzYyIsd08oe3RyYW5zZm9ybToidHJhbnNsYXRlWSgyNSUpIn0pKV0pLGFsbG93Q2hpbGRyZW46eE8oImFsbG93Q2hpbGRyZW4iLFtETygiKiA8PT4gKiIsW0VPKCJAKiIsUk8oKSx7b3B0aW9uYWw6ITB9KV0pXSl9OwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3MgYzF7Y29uc3RydWN0b3IoKXt0aGlzLmNoYW5nZXM9bmV3IEJ9fWMxLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxjMSl9LGMxLsm1cHJvdj1Tbih7ZmFjdG9yeTpmdW5jdGlvbiB0KCl7cmV0dXJuIG5ldyBjMX0sdG9rZW46YzEscHJvdmlkZWRJbjoicm9vdCJ9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKGMxLFt7dHlwZTpVbSxhcmdzOlt7cHJvdmlkZWRJbjoicm9vdCJ9XX1dLChmdW5jdGlvbigpe3JldHVybltdfSksbnVsbCk7Y29uc3QgZDE9e3Byb3ZpZGU6YzEsZGVwczpbW25ldyBCcixuZXcganIsYzFdXSx1c2VGYWN0b3J5OmZ1bmN0aW9uIHAxKHQpe3JldHVybiB0fHxuZXcgYzF9fSxtMT16RihjbGFzc3t9KTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY2xhc3MgZjEgZXh0ZW5kcyBtMXtjb25zdHJ1Y3Rvcih0LGUsbixvLGksYSl7aWYoc3VwZXIoKSx0aGlzLl9pbnRsPXQsdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWY9ZSx0aGlzLl9zb3J0PW4sdGhpcy5fY29sdW1uRGVmPW8sdGhpcy5fZm9jdXNNb25pdG9yPWksdGhpcy5fZWxlbWVudFJlZj1hLHRoaXMuX3Nob3dJbmRpY2F0b3JIaW50PSExLHRoaXMuX3ZpZXdTdGF0ZT17fSx0aGlzLl9hcnJvd0RpcmVjdGlvbj0iIix0aGlzLl9kaXNhYmxlVmlld1N0YXRlQW5pbWF0aW9uPSExLHRoaXMuYXJyb3dQb3NpdGlvbj0iYWZ0ZXIiLCFuJiYoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkpdGhyb3coZnVuY3Rpb24gcigpe3JldHVybiBFcnJvcigiTWF0U29ydEhlYWRlciBtdXN0IGJlIHBsYWNlZCB3aXRoaW4gYSBwYXJlbnQgZWxlbWVudCB3aXRoIHRoZSBNYXRTb3J0IGRpcmVjdGl2ZS4iKX0pKCk7dGhpcy5faGFuZGxlU3RhdGVDaGFuZ2VzKCl9Z2V0IGRpc2FibGVDbGVhcigpe3JldHVybiB0aGlzLl9kaXNhYmxlQ2xlYXJ9c2V0IGRpc2FibGVDbGVhcih0KXt0aGlzLl9kaXNhYmxlQ2xlYXI9ZUgodCl9bmdPbkluaXQoKXshdGhpcy5pZCYmdGhpcy5fY29sdW1uRGVmJiYodGhpcy5pZD10aGlzLl9jb2x1bW5EZWYubmFtZSksdGhpcy5fdXBkYXRlQXJyb3dEaXJlY3Rpb24oKSx0aGlzLl9zZXRBbmltYXRpb25UcmFuc2l0aW9uU3RhdGUoe3RvU3RhdGU6dGhpcy5faXNTb3J0ZWQoKT8iYWN0aXZlIjp0aGlzLl9hcnJvd0RpcmVjdGlvbn0pLHRoaXMuX3NvcnQucmVnaXN0ZXIodGhpcyl9bmdBZnRlclZpZXdJbml0KCl7dGhpcy5fZm9jdXNNb25pdG9yLm1vbml0b3IodGhpcy5fZWxlbWVudFJlZiwhMCkuc3Vic2NyaWJlKCh0PT57Y29uc3QgZT0hIXQ7ZSE9PXRoaXMuX3Nob3dJbmRpY2F0b3JIaW50JiYodGhpcy5fc2V0SW5kaWNhdG9ySGludFZpc2libGUoZSksdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCkpfSkpfW5nT25EZXN0cm95KCl7dGhpcy5fZm9jdXNNb25pdG9yLnN0b3BNb25pdG9yaW5nKHRoaXMuX2VsZW1lbnRSZWYpLHRoaXMuX3NvcnQuZGVyZWdpc3Rlcih0aGlzKSx0aGlzLl9yZXJlbmRlclN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpfV9zZXRJbmRpY2F0b3JIaW50VmlzaWJsZSh0KXt0aGlzLl9pc0Rpc2FibGVkKCkmJnR8fCh0aGlzLl9zaG93SW5kaWNhdG9ySGludD10LHRoaXMuX2lzU29ydGVkKCl8fCh0aGlzLl91cGRhdGVBcnJvd0RpcmVjdGlvbigpLHRoaXMuX3NldEFuaW1hdGlvblRyYW5zaXRpb25TdGF0ZSh0aGlzLl9zaG93SW5kaWNhdG9ySGludD97ZnJvbVN0YXRlOnRoaXMuX2Fycm93RGlyZWN0aW9uLHRvU3RhdGU6ImhpbnQifTp7ZnJvbVN0YXRlOiJoaW50Iix0b1N0YXRlOnRoaXMuX2Fycm93RGlyZWN0aW9ufSkpKX1fc2V0QW5pbWF0aW9uVHJhbnNpdGlvblN0YXRlKHQpe3RoaXMuX3ZpZXdTdGF0ZT10fHx7fSx0aGlzLl9kaXNhYmxlVmlld1N0YXRlQW5pbWF0aW9uJiYodGhpcy5fdmlld1N0YXRlPXt0b1N0YXRlOnQudG9TdGF0ZX0pfV90b2dnbGVPbkludGVyYWN0aW9uKCl7dGhpcy5fc29ydC5zb3J0KHRoaXMpLCJoaW50IiE9PXRoaXMuX3ZpZXdTdGF0ZS50b1N0YXRlJiYiYWN0aXZlIiE9PXRoaXMuX3ZpZXdTdGF0ZS50b1N0YXRlfHwodGhpcy5fZGlzYWJsZVZpZXdTdGF0ZUFuaW1hdGlvbj0hMCl9X2hhbmRsZUNsaWNrKCl7dGhpcy5faXNEaXNhYmxlZCgpfHx0aGlzLl9zb3J0LnNvcnQodGhpcyl9X2hhbmRsZUtleWRvd24odCl7dGhpcy5faXNEaXNhYmxlZCgpfHx0LmtleUNvZGUhPT1KSSYmdC5rZXlDb2RlIT09WEl8fCh0LnByZXZlbnREZWZhdWx0KCksdGhpcy5fdG9nZ2xlT25JbnRlcmFjdGlvbigpKX1faXNTb3J0ZWQoKXtyZXR1cm4gdGhpcy5fc29ydC5hY3RpdmU9PXRoaXMuaWQmJigiYXNjIj09PXRoaXMuX3NvcnQuZGlyZWN0aW9ufHwiZGVzYyI9PT10aGlzLl9zb3J0LmRpcmVjdGlvbil9X2dldEFycm93RGlyZWN0aW9uU3RhdGUoKXtyZXR1cm5gJHt0aGlzLl9pc1NvcnRlZCgpPyJhY3RpdmUtIjoiIn0ke3RoaXMuX2Fycm93RGlyZWN0aW9ufWB9X2dldEFycm93Vmlld1N0YXRlKCl7Y29uc3QgdD10aGlzLl92aWV3U3RhdGUuZnJvbVN0YXRlO3JldHVybih0P2Ake3R9LXRvLWA6IiIpK3RoaXMuX3ZpZXdTdGF0ZS50b1N0YXRlfV91cGRhdGVBcnJvd0RpcmVjdGlvbigpe3RoaXMuX2Fycm93RGlyZWN0aW9uPXRoaXMuX2lzU29ydGVkKCk/dGhpcy5fc29ydC5kaXJlY3Rpb246dGhpcy5zdGFydHx8dGhpcy5fc29ydC5zdGFydH1faXNEaXNhYmxlZCgpe3JldHVybiB0aGlzLl9zb3J0LmRpc2FibGVkfHx0aGlzLmRpc2FibGVkfV9nZXRBcmlhU29ydEF0dHJpYnV0ZSgpe3JldHVybiB0aGlzLl9pc1NvcnRlZCgpPyJhc2MiPT10aGlzLl9zb3J0LmRpcmVjdGlvbj8iYXNjZW5kaW5nIjoiZGVzY2VuZGluZyI6Im5vbmUifV9yZW5kZXJBcnJvdygpe3JldHVybiF0aGlzLl9pc0Rpc2FibGVkKCl8fHRoaXMuX2lzU29ydGVkKCl9X2hhbmRsZVN0YXRlQ2hhbmdlcygpe3RoaXMuX3JlcmVuZGVyU3Vic2NyaXB0aW9uPXBlKHRoaXMuX3NvcnQuc29ydENoYW5nZSx0aGlzLl9zb3J0Ll9zdGF0ZUNoYW5nZXMsdGhpcy5faW50bC5jaGFuZ2VzKS5zdWJzY3JpYmUoKCgpPT57dGhpcy5faXNTb3J0ZWQoKSYmKHRoaXMuX3VwZGF0ZUFycm93RGlyZWN0aW9uKCksImhpbnQiIT09dGhpcy5fdmlld1N0YXRlLnRvU3RhdGUmJiJhY3RpdmUiIT09dGhpcy5fdmlld1N0YXRlLnRvU3RhdGV8fCh0aGlzLl9kaXNhYmxlVmlld1N0YXRlQW5pbWF0aW9uPSEwKSx0aGlzLl9zZXRBbmltYXRpb25UcmFuc2l0aW9uU3RhdGUoe2Zyb21TdGF0ZTp0aGlzLl9hcnJvd0RpcmVjdGlvbix0b1N0YXRlOiJhY3RpdmUifSksdGhpcy5fc2hvd0luZGljYXRvckhpbnQ9ITEpLCF0aGlzLl9pc1NvcnRlZCgpJiZ0aGlzLl92aWV3U3RhdGUmJiJhY3RpdmUiPT09dGhpcy5fdmlld1N0YXRlLnRvU3RhdGUmJih0aGlzLl9kaXNhYmxlVmlld1N0YXRlQW5pbWF0aW9uPSExLHRoaXMuX3NldEFuaW1hdGlvblRyYW5zaXRpb25TdGF0ZSh7ZnJvbVN0YXRlOiJhY3RpdmUiLHRvU3RhdGU6dGhpcy5fYXJyb3dEaXJlY3Rpb259KSksdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCl9KSl9fWYxLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxmMSkoZ2YoYzEpLGdmKE9iKSxnZihyMSw4KSxnZigiTUFUX1NPUlRfSEVBREVSX0NPTFVNTl9ERUYiLDgpLGdmKGZGKSxnZihLaCkpfSxmMS7JtWNtcD1zbyh7dHlwZTpmMSxzZWxlY3RvcnM6W1siIiwibWF0LXNvcnQtaGVhZGVyIiwiIl1dLGhvc3RBdHRyczpbMSwibWF0LXNvcnQtaGVhZGVyIl0saG9zdFZhcnM6Myxob3N0QmluZGluZ3M6ZnVuY3Rpb24gdChlLG4pezEmZSYmUmYoImNsaWNrIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLl9oYW5kbGVDbGljaygpfSkpKCJrZXlkb3duIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5faGFuZGxlS2V5ZG93bihlKX0pKSgibW91c2VlbnRlciIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5fc2V0SW5kaWNhdG9ySGludFZpc2libGUoITApfSkpKCJtb3VzZWxlYXZlIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLl9zZXRJbmRpY2F0b3JIaW50VmlzaWJsZSghMSl9KSksMiZlJiYoeW0oImFyaWEtc29ydCIsbi5fZ2V0QXJpYVNvcnRBdHRyaWJ1dGUoKSksY3UoIm1hdC1zb3J0LWhlYWRlci1kaXNhYmxlZCIsbi5faXNEaXNhYmxlZCgpKSl9LGlucHV0czp7ZGlzYWJsZWQ6ImRpc2FibGVkIixhcnJvd1Bvc2l0aW9uOiJhcnJvd1Bvc2l0aW9uIixkaXNhYmxlQ2xlYXI6ImRpc2FibGVDbGVhciIsaWQ6WyJtYXQtc29ydC1oZWFkZXIiLCJpZCJdLHN0YXJ0OiJzdGFydCJ9LGV4cG9ydEFzOlsibWF0U29ydEhlYWRlciJdLGZlYXR1cmVzOltRcF0sYXR0cnM6WyJtYXQtc29ydC1oZWFkZXIiLCIiXSxuZ0NvbnRlbnRTZWxlY3RvcnM6WyIqIl0sZGVjbHM6NCx2YXJzOjYsY29uc3RzOltbInJvbGUiLCJidXR0b24iLDEsIm1hdC1zb3J0LWhlYWRlci1jb250YWluZXIiLCJtYXQtZm9jdXMtaW5kaWNhdG9yIl0sWzEsIm1hdC1zb3J0LWhlYWRlci1jb250ZW50Il0sWyJjbGFzcyIsIm1hdC1zb3J0LWhlYWRlci1hcnJvdyIsNCwibmdJZiJdLFsxLCJtYXQtc29ydC1oZWFkZXItYXJyb3ciXSxbMSwibWF0LXNvcnQtaGVhZGVyLXN0ZW0iXSxbMSwibWF0LXNvcnQtaGVhZGVyLWluZGljYXRvciJdLFsxLCJtYXQtc29ydC1oZWFkZXItcG9pbnRlci1sZWZ0Il0sWzEsIm1hdC1zb3J0LWhlYWRlci1wb2ludGVyLXJpZ2h0Il0sWzEsIm1hdC1zb3J0LWhlYWRlci1wb2ludGVyLW1pZGRsZSJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoSGYoKSxDZigwLCJkaXYiLDApLENmKDEsImRpdiIsMSksRmYoMiksTWYoKSxIbSgzLG8xLDYsNiwiZGl2IiwyKSxNZigpKSwyJmUmJihjdSgibWF0LXNvcnQtaGVhZGVyLXNvcnRlZCIsbi5faXNTb3J0ZWQoKSkoIm1hdC1zb3J0LWhlYWRlci1wb3NpdGlvbi1iZWZvcmUiLCJiZWZvcmUiPT1uLmFycm93UG9zaXRpb24pLHltKCJ0YWJpbmRleCIsbi5faXNEaXNhYmxlZCgpP251bGw6MCksRGMoMyksYmYoIm5nSWYiLG4uX3JlbmRlckFycm93KCkpKX0sZGlyZWN0aXZlczpbUHZdLHN0eWxlczpbIi5tYXQtc29ydC1oZWFkZXItY29udGFpbmVye2Rpc3BsYXk6ZmxleDtjdXJzb3I6cG9pbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO291dGxpbmU6MH1bbWF0LXNvcnQtaGVhZGVyXS5jZGsta2V5Ym9hcmQtZm9jdXNlZCAubWF0LXNvcnQtaGVhZGVyLWNvbnRhaW5lcixbbWF0LXNvcnQtaGVhZGVyXS5jZGstcHJvZ3JhbS1mb2N1c2VkIC5tYXQtc29ydC1oZWFkZXItY29udGFpbmVye2JvcmRlci1ib3R0b206c29saWQgMXB4IGN1cnJlbnRDb2xvcn0ubWF0LXNvcnQtaGVhZGVyLWRpc2FibGVkIC5tYXQtc29ydC1oZWFkZXItY29udGFpbmVye2N1cnNvcjpkZWZhdWx0fS5tYXQtc29ydC1oZWFkZXItY29udGVudHt0ZXh0LWFsaWduOmNlbnRlcjtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyfS5tYXQtc29ydC1oZWFkZXItcG9zaXRpb24tYmVmb3Jle2ZsZXgtZGlyZWN0aW9uOnJvdy1yZXZlcnNlfS5tYXQtc29ydC1oZWFkZXItYXJyb3d7aGVpZ2h0OjEycHg7d2lkdGg6MTJweDttaW4td2lkdGg6MTJweDtwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5OmZsZXg7b3BhY2l0eTowfS5tYXQtc29ydC1oZWFkZXItYXJyb3csW2Rpcj1ydGxdIC5tYXQtc29ydC1oZWFkZXItcG9zaXRpb24tYmVmb3JlIC5tYXQtc29ydC1oZWFkZXItYXJyb3d7bWFyZ2luOjAgMCAwIDZweH0ubWF0LXNvcnQtaGVhZGVyLXBvc2l0aW9uLWJlZm9yZSAubWF0LXNvcnQtaGVhZGVyLWFycm93LFtkaXI9cnRsXSAubWF0LXNvcnQtaGVhZGVyLWFycm93e21hcmdpbjowIDZweCAwIDB9Lm1hdC1zb3J0LWhlYWRlci1zdGVte2JhY2tncm91bmQ6Y3VycmVudENvbG9yO2hlaWdodDoxMHB4O3dpZHRoOjJweDttYXJnaW46YXV0bztkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1zb3J0LWhlYWRlci1zdGVte3dpZHRoOjA7Ym9yZGVyLWxlZnQ6c29saWQgMnB4fS5tYXQtc29ydC1oZWFkZXItaW5kaWNhdG9ye3dpZHRoOjEwMCU7aGVpZ2h0OjJweDtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2xlZnQ6MH0ubWF0LXNvcnQtaGVhZGVyLXBvaW50ZXItbWlkZGxle21hcmdpbjphdXRvO2hlaWdodDoycHg7d2lkdGg6MnB4O2JhY2tncm91bmQ6Y3VycmVudENvbG9yO3RyYW5zZm9ybTpyb3RhdGUoNDVkZWcpfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1zb3J0LWhlYWRlci1wb2ludGVyLW1pZGRsZXt3aWR0aDowO2hlaWdodDowO2JvcmRlci10b3A6c29saWQgMnB4O2JvcmRlci1sZWZ0OnNvbGlkIDJweH0ubWF0LXNvcnQtaGVhZGVyLXBvaW50ZXItbGVmdCwubWF0LXNvcnQtaGVhZGVyLXBvaW50ZXItcmlnaHR7YmFja2dyb3VuZDpjdXJyZW50Q29sb3I7d2lkdGg6NnB4O2hlaWdodDoycHg7cG9zaXRpb246YWJzb2x1dGU7dG9wOjB9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LXNvcnQtaGVhZGVyLXBvaW50ZXItbGVmdCwuY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtc29ydC1oZWFkZXItcG9pbnRlci1yaWdodHt3aWR0aDowO2hlaWdodDowO2JvcmRlci1sZWZ0OnNvbGlkIDZweDtib3JkZXItdG9wOnNvbGlkIDJweH0ubWF0LXNvcnQtaGVhZGVyLXBvaW50ZXItbGVmdHt0cmFuc2Zvcm0tb3JpZ2luOnJpZ2h0O2xlZnQ6MH0ubWF0LXNvcnQtaGVhZGVyLXBvaW50ZXItcmlnaHR7dHJhbnNmb3JtLW9yaWdpbjpsZWZ0O3JpZ2h0OjB9XG4iXSxlbmNhcHN1bGF0aW9uOjIsZGF0YTp7YW5pbWF0aW9uOltsMS5pbmRpY2F0b3IsbDEubGVmdFBvaW50ZXIsbDEucmlnaHRQb2ludGVyLGwxLmFycm93T3BhY2l0eSxsMS5hcnJvd1Bvc2l0aW9uLGwxLmFsbG93Q2hpbGRyZW5dfSxjaGFuZ2VEZXRlY3Rpb246MH0pLGYxLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6YzF9LHt0eXBlOk9ifSx7dHlwZTpyMSxkZWNvcmF0b3JzOlt7dHlwZTpCcn1dfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbIk1BVF9TT1JUX0hFQURFUl9DT0xVTU5fREVGIl19LHt0eXBlOkJyfV19LHt0eXBlOmZGfSx7dHlwZTpLaH1dLGYxLnByb3BEZWNvcmF0b3JzPXtpZDpbe3R5cGU6Ul8sYXJnczpbIm1hdC1zb3J0LWhlYWRlciJdfV0sYXJyb3dQb3NpdGlvbjpbe3R5cGU6Ul99XSxzdGFydDpbe3R5cGU6Ul99XSxkaXNhYmxlQ2xlYXI6W3t0eXBlOlJffV19LCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoZjEsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoiW21hdC1zb3J0LWhlYWRlcl0iLGV4cG9ydEFzOiJtYXRTb3J0SGVhZGVyIix0ZW1wbGF0ZTonXHgzYyEtLVxuICBXZSBzZXQgdGhlIGB0YWJpbmRleGAgb24gYW4gZWxlbWVudCBpbnNpZGUgdGhlIHRhYmxlIGhlYWRlciwgcmF0aGVyIHRoYW4gdGhlIGhlYWRlciBpdHNlbGYsXG4gIGJlY2F1c2Ugb2YgYSBidWcgaW4gTlZEQSB3aGVyZSBoYXZpbmcgYSBgdGFiaW5kZXhgIG9uIGEgYHRoYCBicmVha3Mga2V5Ym9hcmQgbmF2aWdhdGlvbiBpbiB0aGVcbiAgdGFibGUgKHNlZSBodHRwczovL2dpdGh1Yi5jb20vbnZhY2Nlc3MvbnZkYS9pc3N1ZXMvNzcxOCkuIFRoaXMgYWxsb3dzIGZvciB0aGUgaGVhZGVyIHRvIGJvdGhcbiAgYmUgZm9jdXNhYmxlLCBhbmQgaGF2ZSBzY3JlZW4gcmVhZGVycyByZWFkIG91dCBpdHMgYGFyaWEtc29ydGAgc3RhdGUuIFdlIHByZWZlciB0aGlzIGFwcHJvYWNoXG4gIG92ZXIgaGF2aW5nIGEgYnV0dG9uIHdpdGggYW4gYGFyaWEtbGFiZWxgIGluc2lkZSB0aGUgaGVhZGVyLCBiZWNhdXNlIHRoZSBidXR0b25cJ3MgYGFyaWEtbGFiZWxgXG4gIHdpbGwgYmUgcmVhZCBvdXQgYXMgdGhlIHVzZXIgaXMgbmF2aWdhdGluZyB0aGUgdGFibGVcJ3MgY2VsbCAoc2VlICMxMzAxMikuXG5cbiAgVGhlIGFwcHJvYWNoIGlzIGJhc2VkIG9mZiBvZjogaHR0cHM6Ly9kZXF1ZXVuaXZlcnNpdHkuY29tL2xpYnJhcnkvYXJpYS90YWJsZXMvc2Ytc29ydGFibGUtZ3JpZFxuLS1ceDNlXG48ZGl2IGNsYXNzPSJtYXQtc29ydC1oZWFkZXItY29udGFpbmVyIG1hdC1mb2N1cy1pbmRpY2F0b3IiXG4gICAgIFtjbGFzcy5tYXQtc29ydC1oZWFkZXItc29ydGVkXT0iX2lzU29ydGVkKCkiXG4gICAgIFtjbGFzcy5tYXQtc29ydC1oZWFkZXItcG9zaXRpb24tYmVmb3JlXT0iYXJyb3dQb3NpdGlvbiA9PSBcJ2JlZm9yZVwnIlxuICAgICBbYXR0ci50YWJpbmRleF09Il9pc0Rpc2FibGVkKCkgPyBudWxsIDogMCJcbiAgICAgcm9sZT0iYnV0dG9uIj5cblxuICBceDNjIS0tXG4gICAgVE9ETyhjcmlzYmV0byk6IHRoaXMgZGl2IGlzblwndCBzdHJpY3RseSBuZWNlc3NhcnksIGJ1dCB3ZSBoYXZlIHRvIGtlZXAgaXQgZHVlIHRvIGEgbGFyZ2VcbiAgICBudW1iZXIgb2Ygc2NyZWVuc2hvdCBkaWZmIGZhaWx1cmVzLiBJdCBzaG91bGQgYmUgcmVtb3ZlZCBldmVudHVhbGx5LiBOb3RlIHRoYXQgdGhlIGRpZmZlcmVuY2VcbiAgICBpc25cJ3QgdmlzaWJsZSB3aXRoIGEgc2hvcnRlciBoZWFkZXIsIGJ1dCBvbmNlIGl0IGJyZWFrcyB1cCBpbnRvIG11bHRpcGxlIGxpbmVzLCB0aGlzIGVsZW1lbnRcbiAgICBjYXVzZXMgaXQgdG8gYmUgY2VudGVyLWFsaWduZWQsIHdoZXJlYXMgcmVtb3ZpbmcgaXQgd2lsbCBrZWVwIHRoZSB0ZXh0IHRvIHRoZSBsZWZ0LlxuICAtLVx4M2VcbiAgPGRpdiBjbGFzcz0ibWF0LXNvcnQtaGVhZGVyLWNvbnRlbnQiPlxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgPC9kaXY+XG5cbiAgXHgzYyEtLSBEaXNhYmxlIGFuaW1hdGlvbnMgd2hpbGUgYSBjdXJyZW50IGFuaW1hdGlvbiBpcyBydW5uaW5nIC0tXHgzZVxuICA8ZGl2IGNsYXNzPSJtYXQtc29ydC1oZWFkZXItYXJyb3ciXG4gICAgICAgKm5nSWY9Il9yZW5kZXJBcnJvdygpIlxuICAgICAgIFtAYXJyb3dPcGFjaXR5XT0iX2dldEFycm93Vmlld1N0YXRlKCkiXG4gICAgICAgW0BhcnJvd1Bvc2l0aW9uXT0iX2dldEFycm93Vmlld1N0YXRlKCkiXG4gICAgICAgW0BhbGxvd0NoaWxkcmVuXT0iX2dldEFycm93RGlyZWN0aW9uU3RhdGUoKSJcbiAgICAgICAoQGFycm93UG9zaXRpb24uc3RhcnQpPSJfZGlzYWJsZVZpZXdTdGF0ZUFuaW1hdGlvbiA9IHRydWUiXG4gICAgICAgKEBhcnJvd1Bvc2l0aW9uLmRvbmUpPSJfZGlzYWJsZVZpZXdTdGF0ZUFuaW1hdGlvbiA9IGZhbHNlIj5cbiAgICA8ZGl2IGNsYXNzPSJtYXQtc29ydC1oZWFkZXItc3RlbSI+PC9kaXY+XG4gICAgPGRpdiBjbGFzcz0ibWF0LXNvcnQtaGVhZGVyLWluZGljYXRvciIgW0BpbmRpY2F0b3JdPSJfZ2V0QXJyb3dEaXJlY3Rpb25TdGF0ZSgpIj5cbiAgICAgIDxkaXYgY2xhc3M9Im1hdC1zb3J0LWhlYWRlci1wb2ludGVyLWxlZnQiIFtAbGVmdFBvaW50ZXJdPSJfZ2V0QXJyb3dEaXJlY3Rpb25TdGF0ZSgpIj48L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9Im1hdC1zb3J0LWhlYWRlci1wb2ludGVyLXJpZ2h0IiBbQHJpZ2h0UG9pbnRlcl09Il9nZXRBcnJvd0RpcmVjdGlvblN0YXRlKCkiPjwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz0ibWF0LXNvcnQtaGVhZGVyLXBvaW50ZXItbWlkZGxlIj48L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbicsaG9zdDp7Y2xhc3M6Im1hdC1zb3J0LWhlYWRlciIsIihjbGljaykiOiJfaGFuZGxlQ2xpY2soKSIsIihrZXlkb3duKSI6Il9oYW5kbGVLZXlkb3duKCRldmVudCkiLCIobW91c2VlbnRlcikiOiJfc2V0SW5kaWNhdG9ySGludFZpc2libGUodHJ1ZSkiLCIobW91c2VsZWF2ZSkiOiJfc2V0SW5kaWNhdG9ySGludFZpc2libGUoZmFsc2UpIiwiW2F0dHIuYXJpYS1zb3J0XSI6Il9nZXRBcmlhU29ydEF0dHJpYnV0ZSgpIiwiW2NsYXNzLm1hdC1zb3J0LWhlYWRlci1kaXNhYmxlZF0iOiJfaXNEaXNhYmxlZCgpIn0sZW5jYXBzdWxhdGlvbjpXbi5Ob25lLGNoYW5nZURldGVjdGlvbjpqbi5PblB1c2gsaW5wdXRzOlsiZGlzYWJsZWQiXSxhbmltYXRpb25zOltsMS5pbmRpY2F0b3IsbDEubGVmdFBvaW50ZXIsbDEucmlnaHRQb2ludGVyLGwxLmFycm93T3BhY2l0eSxsMS5hcnJvd1Bvc2l0aW9uLGwxLmFsbG93Q2hpbGRyZW5dLHN0eWxlczpbIi5tYXQtc29ydC1oZWFkZXItY29udGFpbmVye2Rpc3BsYXk6ZmxleDtjdXJzb3I6cG9pbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO291dGxpbmU6MH1bbWF0LXNvcnQtaGVhZGVyXS5jZGsta2V5Ym9hcmQtZm9jdXNlZCAubWF0LXNvcnQtaGVhZGVyLWNvbnRhaW5lcixbbWF0LXNvcnQtaGVhZGVyXS5jZGstcHJvZ3JhbS1mb2N1c2VkIC5tYXQtc29ydC1oZWFkZXItY29udGFpbmVye2JvcmRlci1ib3R0b206c29saWQgMXB4IGN1cnJlbnRDb2xvcn0ubWF0LXNvcnQtaGVhZGVyLWRpc2FibGVkIC5tYXQtc29ydC1oZWFkZXItY29udGFpbmVye2N1cnNvcjpkZWZhdWx0fS5tYXQtc29ydC1oZWFkZXItY29udGVudHt0ZXh0LWFsaWduOmNlbnRlcjtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyfS5tYXQtc29ydC1oZWFkZXItcG9zaXRpb24tYmVmb3Jle2ZsZXgtZGlyZWN0aW9uOnJvdy1yZXZlcnNlfS5tYXQtc29ydC1oZWFkZXItYXJyb3d7aGVpZ2h0OjEycHg7d2lkdGg6MTJweDttaW4td2lkdGg6MTJweDtwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5OmZsZXg7b3BhY2l0eTowfS5tYXQtc29ydC1oZWFkZXItYXJyb3csW2Rpcj1ydGxdIC5tYXQtc29ydC1oZWFkZXItcG9zaXRpb24tYmVmb3JlIC5tYXQtc29ydC1oZWFkZXItYXJyb3d7bWFyZ2luOjAgMCAwIDZweH0ubWF0LXNvcnQtaGVhZGVyLXBvc2l0aW9uLWJlZm9yZSAubWF0LXNvcnQtaGVhZGVyLWFycm93LFtkaXI9cnRsXSAubWF0LXNvcnQtaGVhZGVyLWFycm93e21hcmdpbjowIDZweCAwIDB9Lm1hdC1zb3J0LWhlYWRlci1zdGVte2JhY2tncm91bmQ6Y3VycmVudENvbG9yO2hlaWdodDoxMHB4O3dpZHRoOjJweDttYXJnaW46YXV0bztkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1zb3J0LWhlYWRlci1zdGVte3dpZHRoOjA7Ym9yZGVyLWxlZnQ6c29saWQgMnB4fS5tYXQtc29ydC1oZWFkZXItaW5kaWNhdG9ye3dpZHRoOjEwMCU7aGVpZ2h0OjJweDtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2xlZnQ6MH0ubWF0LXNvcnQtaGVhZGVyLXBvaW50ZXItbWlkZGxle21hcmdpbjphdXRvO2hlaWdodDoycHg7d2lkdGg6MnB4O2JhY2tncm91bmQ6Y3VycmVudENvbG9yO3RyYW5zZm9ybTpyb3RhdGUoNDVkZWcpfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1zb3J0LWhlYWRlci1wb2ludGVyLW1pZGRsZXt3aWR0aDowO2hlaWdodDowO2JvcmRlci10b3A6c29saWQgMnB4O2JvcmRlci1sZWZ0OnNvbGlkIDJweH0ubWF0LXNvcnQtaGVhZGVyLXBvaW50ZXItbGVmdCwubWF0LXNvcnQtaGVhZGVyLXBvaW50ZXItcmlnaHR7YmFja2dyb3VuZDpjdXJyZW50Q29sb3I7d2lkdGg6NnB4O2hlaWdodDoycHg7cG9zaXRpb246YWJzb2x1dGU7dG9wOjB9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LXNvcnQtaGVhZGVyLXBvaW50ZXItbGVmdCwuY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtc29ydC1oZWFkZXItcG9pbnRlci1yaWdodHt3aWR0aDowO2hlaWdodDowO2JvcmRlci1sZWZ0OnNvbGlkIDZweDtib3JkZXItdG9wOnNvbGlkIDJweH0ubWF0LXNvcnQtaGVhZGVyLXBvaW50ZXItbGVmdHt0cmFuc2Zvcm0tb3JpZ2luOnJpZ2h0O2xlZnQ6MH0ubWF0LXNvcnQtaGVhZGVyLXBvaW50ZXItcmlnaHR7dHJhbnNmb3JtLW9yaWdpbjpsZWZ0O3JpZ2h0OjB9XG4iXX1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmMxfSx7dHlwZTpPYn0se3R5cGU6cjEsZGVjb3JhdG9yczpbe3R5cGU6QnJ9XX0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6WyJNQVRfU09SVF9IRUFERVJfQ09MVU1OX0RFRiJdfSx7dHlwZTpCcn1dfSx7dHlwZTpmRn0se3R5cGU6S2h9XX0pLHthcnJvd1Bvc2l0aW9uOlt7dHlwZTpSX31dLGRpc2FibGVDbGVhcjpbe3R5cGU6Ul99XSxpZDpbe3R5cGU6Ul8sYXJnczpbIm1hdC1zb3J0LWhlYWRlciJdfV0sc3RhcnQ6W3t0eXBlOlJffV19KTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNsYXNzIHUxe311MS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8dTEpfSx1MS7JtW1vZD1mbyh7dHlwZTp1MX0pLHUxLsm1aW5qPURuKHtwcm92aWRlcnM6W2QxXSxpbXBvcnRzOltbcngsTkZdXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIodTEsW3t0eXBlOkxfLGFyZ3M6W3tpbXBvcnRzOltyeCxORl0sZXhwb3J0czpbcjEsZjFdLGRlY2xhcmF0aW9uczpbcjEsZjFdLHByb3ZpZGVyczpbZDFdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmdW8odTEse2RlY2xhcmF0aW9uczpmdW5jdGlvbigpe3JldHVybltyMSxmMV19LGltcG9ydHM6ZnVuY3Rpb24oKXtyZXR1cm5bcngsTkZdfSxleHBvcnRzOmZ1bmN0aW9uKCl7cmV0dXJuW3IxLGYxXX19KTtjb25zdCBnMT1bW1siY2FwdGlvbiJdXSxbWyJjb2xncm91cCJdLFsiY29sIl1dXTtmdW5jdGlvbiBoMSh0LGUpe2lmKDEmdCYmKENmKDAsInRoIiwzKSxQdSgxKSxNZigpKSwyJnQpe2NvbnN0IHQ9emYoKTtsdSgidGV4dC1hbGlnbiIsdC5qdXN0aWZ5KSxEYygxKSxrdSgiICIsdC5oZWFkZXJUZXh0LCIgIil9fWZ1bmN0aW9uIGIxKHQsZSl7aWYoMSZ0JiYoQ2YoMCwidGQiLDQpLFB1KDEpLE1mKCkpLDImdCl7Y29uc3QgdD1lLiRpbXBsaWNpdCxuPXpmKCk7bHUoInRleHQtYWxpZ24iLG4uanVzdGlmeSksRGMoMSksa3UoIiAiLG4uZGF0YUFjY2Vzc29yKHQsbi5uYW1lKSwiICIpfX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovZnVuY3Rpb24geTEodCl7cmV0dXJuIGNsYXNzIGV4dGVuZHMgdHtjb25zdHJ1Y3RvciguLi50KXtzdXBlciguLi50KSx0aGlzLl9zdGlja3k9ITEsdGhpcy5faGFzU3RpY2t5Q2hhbmdlZD0hMX1nZXQgc3RpY2t5KCl7cmV0dXJuIHRoaXMuX3N0aWNreX1zZXQgc3RpY2t5KHQpe2NvbnN0IGU9dGhpcy5fc3RpY2t5O3RoaXMuX3N0aWNreT1lSCh0KSx0aGlzLl9oYXNTdGlja3lDaGFuZ2VkPWUhPT10aGlzLl9zdGlja3l9aGFzU3RpY2t5Q2hhbmdlZCgpe2NvbnN0IHQ9dGhpcy5faGFzU3RpY2t5Q2hhbmdlZDtyZXR1cm4gdGhpcy5faGFzU3RpY2t5Q2hhbmdlZD0hMSx0fXJlc2V0U3RpY2t5Q2hhbmdlZCgpe3RoaXMuX2hhc1N0aWNreUNoYW5nZWQ9ITF9fX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY29uc3QgXzE9bmV3IGVyKCJDREtfVEFCTEUiKSxDMT1uZXcgZXIoInRleHQtY29sdW1uLW9wdGlvbnMiKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNsYXNzIE0xe2NvbnN0cnVjdG9yKHQpe3RoaXMudGVtcGxhdGU9dH19TTEuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fE0xKShnZihFYikpfSxNMS7JtWRpcj1obyh7dHlwZTpNMSxzZWxlY3RvcnM6W1siIiwiY2RrQ2VsbERlZiIsIiJdXX0pLE0xLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6RWJ9XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKE0xLFt7dHlwZTprXyxhcmdzOlt7c2VsZWN0b3I6IltjZGtDZWxsRGVmXSJ9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpFYn1dfSksbnVsbCk7Y2xhc3MgdjF7Y29uc3RydWN0b3IodCl7dGhpcy50ZW1wbGF0ZT10fX12MS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8djEpKGdmKEViKSl9LHYxLsm1ZGlyPWhvKHt0eXBlOnYxLHNlbGVjdG9yczpbWyIiLCJjZGtIZWFkZXJDZWxsRGVmIiwiIl1dfSksdjEuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpFYn1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIodjEsW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3RvcjoiW2Nka0hlYWRlckNlbGxEZWZdIn1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOkVifV19KSxudWxsKTtjbGFzcyB4MXtjb25zdHJ1Y3Rvcih0KXt0aGlzLnRlbXBsYXRlPXR9fXgxLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHx4MSkoZ2YoRWIpKX0seDEuybVkaXI9aG8oe3R5cGU6eDEsc2VsZWN0b3JzOltbIiIsImNka0Zvb3RlckNlbGxEZWYiLCIiXV19KSx4MS5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOkVifV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYih4MSxbe3R5cGU6a18sYXJnczpbe3NlbGVjdG9yOiJbY2RrRm9vdGVyQ2VsbERlZl0ifV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6RWJ9XX0pLG51bGwpO2NvbnN0IE8xPXkxKGNsYXNze30pO2NsYXNzIFAxIGV4dGVuZHMgTzF7Y29uc3RydWN0b3IodCl7c3VwZXIoKSx0aGlzLl90YWJsZT10LHRoaXMuX3N0aWNreUVuZD0hMX1nZXQgbmFtZSgpe3JldHVybiB0aGlzLl9uYW1lfXNldCBuYW1lKHQpe3RoaXMuX3NldE5hbWVJbnB1dCh0KX1nZXQgc3RpY2t5RW5kKCl7cmV0dXJuIHRoaXMuX3N0aWNreUVuZH1zZXQgc3RpY2t5RW5kKHQpe2NvbnN0IGU9dGhpcy5fc3RpY2t5RW5kO3RoaXMuX3N0aWNreUVuZD1lSCh0KSx0aGlzLl9oYXNTdGlja3lDaGFuZ2VkPWUhPT10aGlzLl9zdGlja3lFbmR9X3VwZGF0ZUNvbHVtbkNzc0NsYXNzTmFtZSgpe3RoaXMuX2NvbHVtbkNzc0NsYXNzTmFtZT1bYGNkay1jb2x1bW4tJHt0aGlzLmNzc0NsYXNzRnJpZW5kbHlOYW1lfWBdfV9zZXROYW1lSW5wdXQodCl7dCYmKHRoaXMuX25hbWU9dCx0aGlzLmNzc0NsYXNzRnJpZW5kbHlOYW1lPXQucmVwbGFjZSgvW15hLXowLTlfLV0vZ2ksIi0iKSx0aGlzLl91cGRhdGVDb2x1bW5Dc3NDbGFzc05hbWUoKSl9fVAxLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxQMSkoZ2YoXzEsOCkpfSxQMS7JtWRpcj1obyh7dHlwZTpQMSxzZWxlY3RvcnM6W1siIiwiY2RrQ29sdW1uRGVmIiwiIl1dLGNvbnRlbnRRdWVyaWVzOmZ1bmN0aW9uIHQoZSxuLG8pe2lmKDEmZSYmKGp5KG8sTTEsNSksankobyx2MSw1KSxqeShvLHgxLDUpKSwyJmUpe2xldCB0O0J5KHQ9VXkoKSkmJihuLmNlbGw9dC5maXJzdCksQnkodD1VeSgpKSYmKG4uaGVhZGVyQ2VsbD10LmZpcnN0KSxCeSh0PVV5KCkpJiYobi5mb290ZXJDZWxsPXQuZmlyc3QpfX0saW5wdXRzOntzdGlja3k6InN0aWNreSIsbmFtZTpbImNka0NvbHVtbkRlZiIsIm5hbWUiXSxzdGlja3lFbmQ6InN0aWNreUVuZCJ9LGZlYXR1cmVzOltqaChbe3Byb3ZpZGU6Ik1BVF9TT1JUX0hFQURFUl9DT0xVTU5fREVGIix1c2VFeGlzdGluZzpQMX1dKSxRcF19KSxQMS5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltfMV19LHt0eXBlOkJyfV19XSxQMS5wcm9wRGVjb3JhdG9ycz17bmFtZTpbe3R5cGU6Ul8sYXJnczpbImNka0NvbHVtbkRlZiJdfV0sc3RpY2t5RW5kOlt7dHlwZTpSXyxhcmdzOlsic3RpY2t5RW5kIl19XSxjZWxsOlt7dHlwZTppcixhcmdzOltNMV19XSxoZWFkZXJDZWxsOlt7dHlwZTppcixhcmdzOlt2MV19XSxmb290ZXJDZWxsOlt7dHlwZTppcixhcmdzOlt4MV19XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihQMSxbe3R5cGU6a18sYXJnczpbe3NlbGVjdG9yOiJbY2RrQ29sdW1uRGVmXSIsaW5wdXRzOlsic3RpY2t5Il0scHJvdmlkZXJzOlt7cHJvdmlkZToiTUFUX1NPUlRfSEVBREVSX0NPTFVNTl9ERUYiLHVzZUV4aXN0aW5nOlAxfV19XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbXzFdfSx7dHlwZTpCcn1dfV19KSx7bmFtZTpbe3R5cGU6Ul8sYXJnczpbImNka0NvbHVtbkRlZiJdfV0sc3RpY2t5RW5kOlt7dHlwZTpSXyxhcmdzOlsic3RpY2t5RW5kIl19XSxjZWxsOlt7dHlwZTppcixhcmdzOltNMV19XSxoZWFkZXJDZWxsOlt7dHlwZTppcixhcmdzOlt2MV19XSxmb290ZXJDZWxsOlt7dHlwZTppcixhcmdzOlt4MV19XX0pO2NsYXNzIHcxe2NvbnN0cnVjdG9yKHQsZSl7Y29uc3Qgbj1lLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0O2Zvcihjb25zdCBlIG9mIHQuX2NvbHVtbkNzc0NsYXNzTmFtZSluLmFkZChlKX19Y2xhc3MgazEgZXh0ZW5kcyB3MXtjb25zdHJ1Y3Rvcih0LGUpe3N1cGVyKHQsZSl9fWsxLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxrMSkoZ2YoUDEpLGdmKEtoKSl9LGsxLsm1ZGlyPWhvKHt0eXBlOmsxLHNlbGVjdG9yczpbWyJjZGstaGVhZGVyLWNlbGwiXSxbInRoIiwiY2RrLWhlYWRlci1jZWxsIiwiIl1dLGhvc3RBdHRyczpbInJvbGUiLCJjb2x1bW5oZWFkZXIiLDEsImNkay1oZWFkZXItY2VsbCJdLGZlYXR1cmVzOltRcF19KSxrMS5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOlAxfSx7dHlwZTpLaH1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoazEsW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3RvcjoiY2RrLWhlYWRlci1jZWxsLCB0aFtjZGstaGVhZGVyLWNlbGxdIixob3N0OntjbGFzczoiY2RrLWhlYWRlci1jZWxsIixyb2xlOiJjb2x1bW5oZWFkZXIifX1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOlAxfSx7dHlwZTpLaH1dfSksbnVsbCk7Y2xhc3MgUzEgZXh0ZW5kcyB3MXtjb25zdHJ1Y3Rvcih0LGUpe3ZhciBuO2lmKHN1cGVyKHQsZSksMT09PShudWxsPT09KG49dC5fdGFibGUpfHx2b2lkIDA9PT1uP3ZvaWQgMDpuLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQubm9kZVR5cGUpKXtjb25zdCBuPXQuX3RhYmxlLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZ2V0QXR0cmlidXRlKCJyb2xlIik7ZS5uYXRpdmVFbGVtZW50LnNldEF0dHJpYnV0ZSgicm9sZSIsImdyaWQiPT09bnx8InRyZWVncmlkIj09PW4/ImdyaWRjZWxsIjoiY2VsbCIpfX19UzEuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFMxKShnZihQMSksZ2YoS2gpKX0sUzEuybVkaXI9aG8oe3R5cGU6UzEsc2VsZWN0b3JzOltbImNkay1mb290ZXItY2VsbCJdLFsidGQiLCJjZGstZm9vdGVyLWNlbGwiLCIiXV0saG9zdEF0dHJzOlsxLCJjZGstZm9vdGVyLWNlbGwiXSxmZWF0dXJlczpbUXBdfSksUzEuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpQMX0se3R5cGU6S2h9XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKFMxLFt7dHlwZTprXyxhcmdzOlt7c2VsZWN0b3I6ImNkay1mb290ZXItY2VsbCwgdGRbY2RrLWZvb3Rlci1jZWxsXSIsaG9zdDp7Y2xhc3M6ImNkay1mb290ZXItY2VsbCJ9fV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6UDF9LHt0eXBlOktofV19KSxudWxsKTtjbGFzcyBEMSBleHRlbmRzIHcxe2NvbnN0cnVjdG9yKHQsZSl7dmFyIG47aWYoc3VwZXIodCxlKSwxPT09KG51bGw9PT0obj10Ll90YWJsZSl8fHZvaWQgMD09PW4/dm9pZCAwOm4uX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5ub2RlVHlwZSkpe2NvbnN0IG49dC5fdGFibGUuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5nZXRBdHRyaWJ1dGUoInJvbGUiKTtlLm5hdGl2ZUVsZW1lbnQuc2V0QXR0cmlidXRlKCJyb2xlIiwiZ3JpZCI9PT1ufHwidHJlZWdyaWQiPT09bj8iZ3JpZGNlbGwiOiJjZWxsIil9fX1EMS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8RDEpKGdmKFAxKSxnZihLaCkpfSxEMS7JtWRpcj1obyh7dHlwZTpEMSxzZWxlY3RvcnM6W1siY2RrLWNlbGwiXSxbInRkIiwiY2RrLWNlbGwiLCIiXV0saG9zdEF0dHJzOlsxLCJjZGstY2VsbCJdLGZlYXR1cmVzOltRcF19KSxEMS5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOlAxfSx7dHlwZTpLaH1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoRDEsW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3RvcjoiY2RrLWNlbGwsIHRkW2Nkay1jZWxsXSIsaG9zdDp7Y2xhc3M6ImNkay1jZWxsIn19XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpQMX0se3R5cGU6S2h9XX0pLG51bGwpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3MgUjF7Y29uc3RydWN0b3IoKXt0aGlzLnRhc2tzPVtdLHRoaXMuZW5kVGFza3M9W119fWNvbnN0IEUxPW5ldyBlcigiX0NPQUxFU0NFRF9TVFlMRV9TQ0hFRFVMRVIiKTtjbGFzcyBBMXtjb25zdHJ1Y3Rvcih0KXt0aGlzLl9uZ1pvbmU9dCx0aGlzLl9jdXJyZW50U2NoZWR1bGU9bnVsbCx0aGlzLl9kZXN0cm95ZWQ9bmV3IEJ9c2NoZWR1bGUodCl7dGhpcy5fY3JlYXRlU2NoZWR1bGVJZk5lZWRlZCgpLHRoaXMuX2N1cnJlbnRTY2hlZHVsZS50YXNrcy5wdXNoKHQpfXNjaGVkdWxlRW5kKHQpe3RoaXMuX2NyZWF0ZVNjaGVkdWxlSWZOZWVkZWQoKSx0aGlzLl9jdXJyZW50U2NoZWR1bGUuZW5kVGFza3MucHVzaCh0KX1uZ09uRGVzdHJveSgpe3RoaXMuX2Rlc3Ryb3llZC5uZXh0KCksdGhpcy5fZGVzdHJveWVkLmNvbXBsZXRlKCl9X2NyZWF0ZVNjaGVkdWxlSWZOZWVkZWQoKXt0aGlzLl9jdXJyZW50U2NoZWR1bGV8fCh0aGlzLl9jdXJyZW50U2NoZWR1bGU9bmV3IFIxLHRoaXMuX2dldFNjaGVkdWxlT2JzZXJ2YWJsZSgpLnBpcGUoamUodGhpcy5fZGVzdHJveWVkKSkuc3Vic2NyaWJlKCgoKT0+e2Zvcig7dGhpcy5fY3VycmVudFNjaGVkdWxlLnRhc2tzLmxlbmd0aHx8dGhpcy5fY3VycmVudFNjaGVkdWxlLmVuZFRhc2tzLmxlbmd0aDspe2NvbnN0IHQ9dGhpcy5fY3VycmVudFNjaGVkdWxlO3RoaXMuX2N1cnJlbnRTY2hlZHVsZT1uZXcgUjE7Zm9yKGNvbnN0IGUgb2YgdC50YXNrcyllKCk7Zm9yKGNvbnN0IGUgb2YgdC5lbmRUYXNrcyllKCl9dGhpcy5fY3VycmVudFNjaGVkdWxlPW51bGx9KSkpfV9nZXRTY2hlZHVsZU9ic2VydmFibGUoKXtyZXR1cm4gdGhpcy5fbmdab25lLmlzU3RhYmxlP1B0KFByb21pc2UucmVzb2x2ZSh2b2lkIDApKTp0aGlzLl9uZ1pvbmUub25TdGFibGUucGlwZSh2ZSgxKSl9fUExLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxBMSkoVHIobUMpKX0sQTEuybVwcm92PVNuKHt0b2tlbjpBMSxmYWN0b3J5OkExLsm1ZmFjfSksQTEuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTptQ31dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoQTEsW3t0eXBlOlVtfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOm1DfV19KSxudWxsKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNvbnN0IFQxPSI8bmctY29udGFpbmVyIGNka0NlbGxPdXRsZXQ+PC9uZy1jb250YWluZXI+IjtjbGFzcyBOMXtjb25zdHJ1Y3Rvcih0LGUpe3RoaXMudGVtcGxhdGU9dCx0aGlzLl9kaWZmZXJzPWV9bmdPbkNoYW5nZXModCl7aWYoIXRoaXMuX2NvbHVtbnNEaWZmZXIpe2NvbnN0IGU9dC5jb2x1bW5zJiZ0LmNvbHVtbnMuY3VycmVudFZhbHVlfHxbXTt0aGlzLl9jb2x1bW5zRGlmZmVyPXRoaXMuX2RpZmZlcnMuZmluZChlKS5jcmVhdGUoKSx0aGlzLl9jb2x1bW5zRGlmZmVyLmRpZmYoZSl9fWdldENvbHVtbnNEaWZmKCl7cmV0dXJuIHRoaXMuX2NvbHVtbnNEaWZmZXIuZGlmZih0aGlzLmNvbHVtbnMpfWV4dHJhY3RDZWxsVGVtcGxhdGUodCl7cmV0dXJuIHRoaXMgaW5zdGFuY2VvZiBJMT90LmhlYWRlckNlbGwudGVtcGxhdGU6dGhpcyBpbnN0YW5jZW9mIEYxP3QuZm9vdGVyQ2VsbC50ZW1wbGF0ZTp0LmNlbGwudGVtcGxhdGV9fU4xLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxOMSkoZ2YoRWIpLGdmKGhiKSl9LE4xLsm1ZGlyPWhvKHt0eXBlOk4xLGZlYXR1cmVzOltxb119KSxOMS5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOkVifSx7dHlwZTpoYn1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoTjEsW3t0eXBlOmtffV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOkVifSx7dHlwZTpoYn1dfSksbnVsbCk7Y29uc3QgejE9eTEoY2xhc3MgZXh0ZW5kcyBOMXt9KTtjbGFzcyBJMSBleHRlbmRzIHoxe2NvbnN0cnVjdG9yKHQsZSxuKXtzdXBlcih0LGUpLHRoaXMuX3RhYmxlPW59bmdPbkNoYW5nZXModCl7c3VwZXIubmdPbkNoYW5nZXModCl9fUkxLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxJMSkoZ2YoRWIpLGdmKGhiKSxnZihfMSw4KSl9LEkxLsm1ZGlyPWhvKHt0eXBlOkkxLHNlbGVjdG9yczpbWyIiLCJjZGtIZWFkZXJSb3dEZWYiLCIiXV0saW5wdXRzOntjb2x1bW5zOlsiY2RrSGVhZGVyUm93RGVmIiwiY29sdW1ucyJdLHN0aWNreTpbImNka0hlYWRlclJvd0RlZlN0aWNreSIsInN0aWNreSJdfSxmZWF0dXJlczpbUXAscW9dfSksSTEuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpFYn0se3R5cGU6aGJ9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltfMV19LHt0eXBlOkJyfV19XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKEkxLFt7dHlwZTprXyxhcmdzOlt7c2VsZWN0b3I6IltjZGtIZWFkZXJSb3dEZWZdIixpbnB1dHM6WyJjb2x1bW5zOiBjZGtIZWFkZXJSb3dEZWYiLCJzdGlja3k6IGNka0hlYWRlclJvd0RlZlN0aWNreSJdfV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6RWJ9LHt0eXBlOmhifSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbXzFdfSx7dHlwZTpCcn1dfV19KSxudWxsKTtjb25zdCBIMT15MShjbGFzcyBleHRlbmRzIE4xe30pO2NsYXNzIEYxIGV4dGVuZHMgSDF7Y29uc3RydWN0b3IodCxlLG4pe3N1cGVyKHQsZSksdGhpcy5fdGFibGU9bn1uZ09uQ2hhbmdlcyh0KXtzdXBlci5uZ09uQ2hhbmdlcyh0KX19RjEuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEYxKShnZihFYiksZ2YoaGIpLGdmKF8xLDgpKX0sRjEuybVkaXI9aG8oe3R5cGU6RjEsc2VsZWN0b3JzOltbIiIsImNka0Zvb3RlclJvd0RlZiIsIiJdXSxpbnB1dHM6e2NvbHVtbnM6WyJjZGtGb290ZXJSb3dEZWYiLCJjb2x1bW5zIl0sc3RpY2t5OlsiY2RrRm9vdGVyUm93RGVmU3RpY2t5Iiwic3RpY2t5Il19LGZlYXR1cmVzOltRcCxxb119KSxGMS5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOkVifSx7dHlwZTpoYn0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W18xXX0se3R5cGU6QnJ9XX1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoRjEsW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3RvcjoiW2Nka0Zvb3RlclJvd0RlZl0iLGlucHV0czpbImNvbHVtbnM6IGNka0Zvb3RlclJvd0RlZiIsInN0aWNreTogY2RrRm9vdGVyUm93RGVmU3RpY2t5Il19XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpFYn0se3R5cGU6aGJ9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltfMV19LHt0eXBlOkJyfV19XX0pLG51bGwpO2NsYXNzIEwxIGV4dGVuZHMgTjF7Y29uc3RydWN0b3IodCxlLG4pe3N1cGVyKHQsZSksdGhpcy5fdGFibGU9bn19TDEuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEwxKShnZihFYiksZ2YoaGIpLGdmKF8xLDgpKX0sTDEuybVkaXI9aG8oe3R5cGU6TDEsc2VsZWN0b3JzOltbIiIsImNka1Jvd0RlZiIsIiJdXSxpbnB1dHM6e2NvbHVtbnM6WyJjZGtSb3dEZWZDb2x1bW5zIiwiY29sdW1ucyJdLHdoZW46WyJjZGtSb3dEZWZXaGVuIiwid2hlbiJdfSxmZWF0dXJlczpbUXBdfSksTDEuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpFYn0se3R5cGU6aGJ9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltfMV19LHt0eXBlOkJyfV19XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKEwxLFt7dHlwZTprXyxhcmdzOlt7c2VsZWN0b3I6IltjZGtSb3dEZWZdIixpbnB1dHM6WyJjb2x1bW5zOiBjZGtSb3dEZWZDb2x1bW5zIiwid2hlbjogY2RrUm93RGVmV2hlbiJdfV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6RWJ9LHt0eXBlOmhifSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbXzFdfSx7dHlwZTpCcn1dfV19KSxudWxsKTtjbGFzcyBCMXtjb25zdHJ1Y3Rvcih0KXt0aGlzLl92aWV3Q29udGFpbmVyPXQsQjEubW9zdFJlY2VudENlbGxPdXRsZXQ9dGhpc31uZ09uRGVzdHJveSgpe0IxLm1vc3RSZWNlbnRDZWxsT3V0bGV0PT09dGhpcyYmKEIxLm1vc3RSZWNlbnRDZWxsT3V0bGV0PW51bGwpfX1CMS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8QjEpKGdmKEZiKSl9LEIxLsm1ZGlyPWhvKHt0eXBlOkIxLHNlbGVjdG9yczpbWyIiLCJjZGtDZWxsT3V0bGV0IiwiIl1dfSksQjEubW9zdFJlY2VudENlbGxPdXRsZXQ9bnVsbCxCMS5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOkZifV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihCMSxbe3R5cGU6a18sYXJnczpbe3NlbGVjdG9yOiJbY2RrQ2VsbE91dGxldF0ifV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6RmJ9XX0pLG51bGwpO2NsYXNzIFYxe31WMS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8VjEpfSxWMS7JtWNtcD1zbyh7dHlwZTpWMSxzZWxlY3RvcnM6W1siY2RrLWhlYWRlci1yb3ciXSxbInRyIiwiY2RrLWhlYWRlci1yb3ciLCIiXV0saG9zdEF0dHJzOlsicm9sZSIsInJvdyIsMSwiY2RrLWhlYWRlci1yb3ciXSxkZWNsczoxLHZhcnM6MCxjb25zdHM6W1siY2RrQ2VsbE91dGxldCIsIiJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiZQZigwLDApfSxkaXJlY3RpdmVzOltCMV0sZW5jYXBzdWxhdGlvbjoyfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihWMSxbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJjZGstaGVhZGVyLXJvdywgdHJbY2RrLWhlYWRlci1yb3ddIix0ZW1wbGF0ZTpUMSxob3N0OntjbGFzczoiY2RrLWhlYWRlci1yb3ciLHJvbGU6InJvdyJ9LGNoYW5nZURldGVjdGlvbjpqbi5EZWZhdWx0LGVuY2Fwc3VsYXRpb246V24uTm9uZX1dfV0sbnVsbCxudWxsKTtjbGFzcyBqMXt9ajEuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGoxKX0sajEuybVjbXA9c28oe3R5cGU6ajEsc2VsZWN0b3JzOltbImNkay1mb290ZXItcm93Il0sWyJ0ciIsImNkay1mb290ZXItcm93IiwiIl1dLGhvc3RBdHRyczpbInJvbGUiLCJyb3ciLDEsImNkay1mb290ZXItcm93Il0sZGVjbHM6MSx2YXJzOjAsY29uc3RzOltbImNka0NlbGxPdXRsZXQiLCIiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmUGYoMCwwKX0sZGlyZWN0aXZlczpbQjFdLGVuY2Fwc3VsYXRpb246Mn0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoajEsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoiY2RrLWZvb3Rlci1yb3csIHRyW2Nkay1mb290ZXItcm93XSIsdGVtcGxhdGU6VDEsaG9zdDp7Y2xhc3M6ImNkay1mb290ZXItcm93Iixyb2xlOiJyb3cifSxjaGFuZ2VEZXRlY3Rpb246am4uRGVmYXVsdCxlbmNhcHN1bGF0aW9uOlduLk5vbmV9XX1dLG51bGwsbnVsbCk7Y2xhc3MgVTF7fVUxLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxVMSl9LFUxLsm1Y21wPXNvKHt0eXBlOlUxLHNlbGVjdG9yczpbWyJjZGstcm93Il0sWyJ0ciIsImNkay1yb3ciLCIiXV0saG9zdEF0dHJzOlsicm9sZSIsInJvdyIsMSwiY2RrLXJvdyJdLGRlY2xzOjEsdmFyczowLGNvbnN0czpbWyJjZGtDZWxsT3V0bGV0IiwiIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJlBmKDAsMCl9LGRpcmVjdGl2ZXM6W0IxXSxlbmNhcHN1bGF0aW9uOjJ9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKFUxLFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6ImNkay1yb3csIHRyW2Nkay1yb3ddIix0ZW1wbGF0ZTpUMSxob3N0OntjbGFzczoiY2RrLXJvdyIscm9sZToicm93In0sY2hhbmdlRGV0ZWN0aW9uOmpuLkRlZmF1bHQsZW5jYXBzdWxhdGlvbjpXbi5Ob25lfV19XSxudWxsLG51bGwpO2NsYXNzIFcxe2NvbnN0cnVjdG9yKHQpe3RoaXMudGVtcGxhdGVSZWY9dH19VzEuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFcxKShnZihFYikpfSxXMS7JtWRpcj1obyh7dHlwZTpXMSxzZWxlY3RvcnM6W1sibmctdGVtcGxhdGUiLCJjZGtOb0RhdGFSb3ciLCIiXV19KSxXMS5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOkVifV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihXMSxbe3R5cGU6a18sYXJnczpbe3NlbGVjdG9yOiJuZy10ZW1wbGF0ZVtjZGtOb0RhdGFSb3ddIn1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOkVifV19KSxudWxsKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNvbnN0IEcxPVsidG9wIiwiYm90dG9tIiwibGVmdCIsInJpZ2h0Il07Y2xhc3MgWTF7Y29uc3RydWN0b3IodCxlLG4sbyxpPSEwLGE9ITAscil7dGhpcy5faXNOYXRpdmVIdG1sVGFibGU9dCx0aGlzLl9zdGlja0NlbGxDc3M9ZSx0aGlzLmRpcmVjdGlvbj1uLHRoaXMuX2NvYWxlc2NlZFN0eWxlU2NoZWR1bGVyPW8sdGhpcy5faXNCcm93c2VyPWksdGhpcy5fbmVlZHNQb3NpdGlvblN0aWNreU9uRWxlbWVudD1hLHRoaXMuX3Bvc2l0aW9uTGlzdGVuZXI9cix0aGlzLl9jYWNoZWRDZWxsV2lkdGhzPVtdLHRoaXMuX2JvcmRlckNlbGxDc3M9e3RvcDpgJHtlfS1ib3JkZXItZWxlbS10b3BgLGJvdHRvbTpgJHtlfS1ib3JkZXItZWxlbS1ib3R0b21gLGxlZnQ6YCR7ZX0tYm9yZGVyLWVsZW0tbGVmdGAscmlnaHQ6YCR7ZX0tYm9yZGVyLWVsZW0tcmlnaHRgfX1jbGVhclN0aWNreVBvc2l0aW9uaW5nKHQsZSl7Y29uc3Qgbj1bXTtmb3IoY29uc3QgZSBvZiB0KWlmKGUubm9kZVR5cGU9PT1lLkVMRU1FTlRfTk9ERSl7bi5wdXNoKGUpO2ZvcihsZXQgdD0wO3Q8ZS5jaGlsZHJlbi5sZW5ndGg7dCsrKW4ucHVzaChlLmNoaWxkcmVuW3RdKX10aGlzLl9jb2FsZXNjZWRTdHlsZVNjaGVkdWxlci5zY2hlZHVsZSgoKCk9Pntmb3IoY29uc3QgdCBvZiBuKXRoaXMuX3JlbW92ZVN0aWNreVN0eWxlKHQsZSl9KSl9dXBkYXRlU3RpY2t5Q29sdW1ucyh0LGUsbixvPSEwKXtpZighdC5sZW5ndGh8fCF0aGlzLl9pc0Jyb3dzZXJ8fCFlLnNvbWUoKHQ9PnQpKSYmIW4uc29tZSgodD0+dCkpKXJldHVybiB2b2lkKHRoaXMuX3Bvc2l0aW9uTGlzdGVuZXImJih0aGlzLl9wb3NpdGlvbkxpc3RlbmVyLnN0aWNreUNvbHVtbnNVcGRhdGVkKHtzaXplczpbXX0pLHRoaXMuX3Bvc2l0aW9uTGlzdGVuZXIuc3RpY2t5RW5kQ29sdW1uc1VwZGF0ZWQoe3NpemVzOltdfSkpKTtjb25zdCBpPXRbMF0sYT1pLmNoaWxkcmVuLmxlbmd0aCxyPXRoaXMuX2dldENlbGxXaWR0aHMoaSxvKSxzPXRoaXMuX2dldFN0aWNreVN0YXJ0Q29sdW1uUG9zaXRpb25zKHIsZSksbD10aGlzLl9nZXRTdGlja3lFbmRDb2x1bW5Qb3NpdGlvbnMocixuKSxjPWUubGFzdEluZGV4T2YoITApLGQ9bi5pbmRleE9mKCEwKTt0aGlzLl9jb2FsZXNjZWRTdHlsZVNjaGVkdWxlci5zY2hlZHVsZSgoKCk9Pntjb25zdCBvPSJydGwiPT09dGhpcy5kaXJlY3Rpb24saT1vPyJyaWdodCI6ImxlZnQiLHA9bz8ibGVmdCI6InJpZ2h0Ijtmb3IoY29uc3QgbyBvZiB0KWZvcihsZXQgdD0wO3Q8YTt0Kyspe2NvbnN0IGE9by5jaGlsZHJlblt0XTtlW3RdJiZ0aGlzLl9hZGRTdGlja3lTdHlsZShhLGksc1t0XSx0PT09Yyksblt0XSYmdGhpcy5fYWRkU3RpY2t5U3R5bGUoYSxwLGxbdF0sdD09PWQpfXRoaXMuX3Bvc2l0aW9uTGlzdGVuZXImJih0aGlzLl9wb3NpdGlvbkxpc3RlbmVyLnN0aWNreUNvbHVtbnNVcGRhdGVkKHtzaXplczotMT09PWM/W106ci5zbGljZSgwLGMrMSkubWFwKCgodCxuKT0+ZVtuXT90Om51bGwpKX0pLHRoaXMuX3Bvc2l0aW9uTGlzdGVuZXIuc3RpY2t5RW5kQ29sdW1uc1VwZGF0ZWQoe3NpemVzOi0xPT09ZD9bXTpyLnNsaWNlKGQpLm1hcCgoKHQsZSk9Pm5bZStkXT90Om51bGwpKS5yZXZlcnNlKCl9KSl9KSl9c3RpY2tSb3dzKHQsZSxuKXtpZighdGhpcy5faXNCcm93c2VyKXJldHVybjtjb25zdCBvPSJib3R0b20iPT09bj90LnNsaWNlKCkucmV2ZXJzZSgpOnQsaT0iYm90dG9tIj09PW4/ZS5zbGljZSgpLnJldmVyc2UoKTplLGE9W10scj1bXSxzPVtdO2ZvcihsZXQgdD0wLGU9MDt0PG8ubGVuZ3RoO3QrKyl7aWYoIWlbdF0pY29udGludWU7YVt0XT1lO2NvbnN0IG49b1t0XTtzW3RdPXRoaXMuX2lzTmF0aXZlSHRtbFRhYmxlP0FycmF5LmZyb20obi5jaGlsZHJlbik6W25dO2NvbnN0IGw9bi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQ7ZSs9bCxyW3RdPWx9Y29uc3QgbD1pLmxhc3RJbmRleE9mKCEwKTt0aGlzLl9jb2FsZXNjZWRTdHlsZVNjaGVkdWxlci5zY2hlZHVsZSgoKCk9Pnt2YXIgdCxlO2ZvcihsZXQgdD0wO3Q8by5sZW5ndGg7dCsrKXtpZighaVt0XSljb250aW51ZTtjb25zdCBlPWFbdF0sbz10PT09bDtmb3IoY29uc3QgaSBvZiBzW3RdKXRoaXMuX2FkZFN0aWNreVN0eWxlKGksbixlLG8pfSJ0b3AiPT09bj9udWxsPT09KHQ9dGhpcy5fcG9zaXRpb25MaXN0ZW5lcil8fHZvaWQgMD09PXR8fHQuc3RpY2t5SGVhZGVyUm93c1VwZGF0ZWQoe3NpemVzOnIsb2Zmc2V0czphLGVsZW1lbnRzOnN9KTpudWxsPT09KGU9dGhpcy5fcG9zaXRpb25MaXN0ZW5lcil8fHZvaWQgMD09PWV8fGUuc3RpY2t5Rm9vdGVyUm93c1VwZGF0ZWQoe3NpemVzOnIsb2Zmc2V0czphLGVsZW1lbnRzOnN9KX0pKX11cGRhdGVTdGlja3lGb290ZXJDb250YWluZXIodCxlKXtpZighdGhpcy5faXNOYXRpdmVIdG1sVGFibGUpcmV0dXJuO2NvbnN0IG49dC5xdWVyeVNlbGVjdG9yKCJ0Zm9vdCIpO3RoaXMuX2NvYWxlc2NlZFN0eWxlU2NoZWR1bGVyLnNjaGVkdWxlKCgoKT0+e2Uuc29tZSgodD0+IXQpKT90aGlzLl9yZW1vdmVTdGlja3lTdHlsZShuLFsiYm90dG9tIl0pOnRoaXMuX2FkZFN0aWNreVN0eWxlKG4sImJvdHRvbSIsMCwhMSl9KSl9X3JlbW92ZVN0aWNreVN0eWxlKHQsZSl7Zm9yKGNvbnN0IG4gb2YgZSl0LnN0eWxlW25dPSIiLHQuY2xhc3NMaXN0LnJlbW92ZSh0aGlzLl9ib3JkZXJDZWxsQ3NzW25dKTtHMS5zb21lKChuPT4tMT09PWUuaW5kZXhPZihuKSYmdC5zdHlsZVtuXSkpP3Quc3R5bGUuekluZGV4PXRoaXMuX2dldENhbGN1bGF0ZWRaSW5kZXgodCk6KHQuc3R5bGUuekluZGV4PSIiLHRoaXMuX25lZWRzUG9zaXRpb25TdGlja3lPbkVsZW1lbnQmJih0LnN0eWxlLnBvc2l0aW9uPSIiKSx0LmNsYXNzTGlzdC5yZW1vdmUodGhpcy5fc3RpY2tDZWxsQ3NzKSl9X2FkZFN0aWNreVN0eWxlKHQsZSxuLG8pe3QuY2xhc3NMaXN0LmFkZCh0aGlzLl9zdGlja0NlbGxDc3MpLG8mJnQuY2xhc3NMaXN0LmFkZCh0aGlzLl9ib3JkZXJDZWxsQ3NzW2VdKSx0LnN0eWxlW2VdPWAke259cHhgLHQuc3R5bGUuekluZGV4PXRoaXMuX2dldENhbGN1bGF0ZWRaSW5kZXgodCksdGhpcy5fbmVlZHNQb3NpdGlvblN0aWNreU9uRWxlbWVudCYmKHQuc3R5bGUuY3NzVGV4dCs9InBvc2l0aW9uOiAtd2Via2l0LXN0aWNreTsgcG9zaXRpb246IHN0aWNreTsgIil9X2dldENhbGN1bGF0ZWRaSW5kZXgodCl7Y29uc3QgZT17dG9wOjEwMCxib3R0b206MTAsbGVmdDoxLHJpZ2h0OjF9O2xldCBuPTA7Zm9yKGNvbnN0IG8gb2YgRzEpdC5zdHlsZVtvXSYmKG4rPWVbb10pO3JldHVybiBuP2Ake259YDoiIn1fZ2V0Q2VsbFdpZHRocyh0LGU9ITApe2lmKCFlJiZ0aGlzLl9jYWNoZWRDZWxsV2lkdGhzLmxlbmd0aClyZXR1cm4gdGhpcy5fY2FjaGVkQ2VsbFdpZHRocztjb25zdCBuPVtdLG89dC5jaGlsZHJlbjtmb3IobGV0IHQ9MDt0PG8ubGVuZ3RoO3QrKyl7bi5wdXNoKG9bdF0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGgpfXJldHVybiB0aGlzLl9jYWNoZWRDZWxsV2lkdGhzPW4sbn1fZ2V0U3RpY2t5U3RhcnRDb2x1bW5Qb3NpdGlvbnModCxlKXtjb25zdCBuPVtdO2xldCBvPTA7Zm9yKGxldCBpPTA7aTx0Lmxlbmd0aDtpKyspZVtpXSYmKG5baV09byxvKz10W2ldKTtyZXR1cm4gbn1fZ2V0U3RpY2t5RW5kQ29sdW1uUG9zaXRpb25zKHQsZSl7Y29uc3Qgbj1bXTtsZXQgbz0wO2ZvcihsZXQgaT10Lmxlbmd0aDtpPjA7aS0tKWVbaV0mJihuW2ldPW8sbys9dFtpXSk7cmV0dXJuIG59fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9mdW5jdGlvbiBxMSh0KXtyZXR1cm4gRXJyb3IoYENvdWxkIG5vdCBmaW5kIGNvbHVtbiB3aXRoIGlkICIke3R9Ii5gKX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNvbnN0IFoxPW5ldyBlcigiQ0RLX1NQTCIpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jbGFzcyBYMXt9WDEuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFgxKX0sWDEuybVkaXI9aG8oe3R5cGU6WDEsc2VsZWN0b3JzOltbImNkay10YWJsZSIsInJlY3ljbGVSb3dzIiwiIl0sWyJ0YWJsZSIsImNkay10YWJsZSIsIiIsInJlY3ljbGVSb3dzIiwiIl1dLGZlYXR1cmVzOltqaChbe3Byb3ZpZGU6V0wsdXNlQ2xhc3M6Vkx9XSldfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihYMSxbe3R5cGU6a18sYXJnczpbe3NlbGVjdG9yOiJjZGstdGFibGVbcmVjeWNsZVJvd3NdLCB0YWJsZVtjZGstdGFibGVdW3JlY3ljbGVSb3dzXSIscHJvdmlkZXJzOlt7cHJvdmlkZTpXTCx1c2VDbGFzczpWTH1dfV19XSxudWxsLG51bGwpO2NsYXNzIEsxe2NvbnN0cnVjdG9yKHQsZSl7dGhpcy52aWV3Q29udGFpbmVyPXQsdGhpcy5lbGVtZW50UmVmPWV9fUsxLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxLMSkoZ2YoRmIpLGdmKEtoKSl9LEsxLsm1ZGlyPWhvKHt0eXBlOksxLHNlbGVjdG9yczpbWyIiLCJyb3dPdXRsZXQiLCIiXV19KSxLMS5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOkZifSx7dHlwZTpLaH1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoSzEsW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3RvcjoiW3Jvd091dGxldF0ifV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6RmJ9LHt0eXBlOktofV19KSxudWxsKTtjbGFzcyBKMXtjb25zdHJ1Y3Rvcih0LGUpe3RoaXMudmlld0NvbnRhaW5lcj10LHRoaXMuZWxlbWVudFJlZj1lfX1KMS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8SjEpKGdmKEZiKSxnZihLaCkpfSxKMS7JtWRpcj1obyh7dHlwZTpKMSxzZWxlY3RvcnM6W1siIiwiaGVhZGVyUm93T3V0bGV0IiwiIl1dfSksSjEuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpGYn0se3R5cGU6S2h9XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKEoxLFt7dHlwZTprXyxhcmdzOlt7c2VsZWN0b3I6IltoZWFkZXJSb3dPdXRsZXRdIn1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOkZifSx7dHlwZTpLaH1dfSksbnVsbCk7Y2xhc3MgUTF7Y29uc3RydWN0b3IodCxlKXt0aGlzLnZpZXdDb250YWluZXI9dCx0aGlzLmVsZW1lbnRSZWY9ZX19UTEuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFExKShnZihGYiksZ2YoS2gpKX0sUTEuybVkaXI9aG8oe3R5cGU6UTEsc2VsZWN0b3JzOltbIiIsImZvb3RlclJvd091dGxldCIsIiJdXX0pLFExLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6RmJ9LHt0eXBlOktofV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihRMSxbe3R5cGU6a18sYXJnczpbe3NlbGVjdG9yOiJbZm9vdGVyUm93T3V0bGV0XSJ9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpGYn0se3R5cGU6S2h9XX0pLG51bGwpO2NsYXNzICQxe2NvbnN0cnVjdG9yKHQsZSl7dGhpcy52aWV3Q29udGFpbmVyPXQsdGhpcy5lbGVtZW50UmVmPWV9fSQxLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHwkMSkoZ2YoRmIpLGdmKEtoKSl9LCQxLsm1ZGlyPWhvKHt0eXBlOiQxLHNlbGVjdG9yczpbWyIiLCJub0RhdGFSb3dPdXRsZXQiLCIiXV19KSwkMS5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOkZifSx7dHlwZTpLaH1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoJDEsW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3RvcjoiW25vRGF0YVJvd091dGxldF0ifV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6RmJ9LHt0eXBlOktofV19KSxudWxsKTtjb25zdCB0Mz0nXG4gIDxuZy1jb250ZW50IHNlbGVjdD0iY2FwdGlvbiI+PC9uZy1jb250ZW50PlxuICA8bmctY29udGVudCBzZWxlY3Q9ImNvbGdyb3VwLCBjb2wiPjwvbmctY29udGVudD5cbiAgPG5nLWNvbnRhaW5lciBoZWFkZXJSb3dPdXRsZXQ+PC9uZy1jb250YWluZXI+XG4gIDxuZy1jb250YWluZXIgcm93T3V0bGV0PjwvbmctY29udGFpbmVyPlxuICA8bmctY29udGFpbmVyIG5vRGF0YVJvd091dGxldD48L25nLWNvbnRhaW5lcj5cbiAgPG5nLWNvbnRhaW5lciBmb290ZXJSb3dPdXRsZXQ+PC9uZy1jb250YWluZXI+XG4nO2NsYXNzIGUze2NvbnN0cnVjdG9yKHQsZSxuLG8saSxhLHIscyxsLGMsZCl7dGhpcy5fZGlmZmVycz10LHRoaXMuX2NoYW5nZURldGVjdG9yUmVmPWUsdGhpcy5fZWxlbWVudFJlZj1uLHRoaXMuX2Rpcj1pLHRoaXMuX3BsYXRmb3JtPXIsdGhpcy5fdmlld1JlcGVhdGVyPXMsdGhpcy5fY29hbGVzY2VkU3R5bGVTY2hlZHVsZXI9bCx0aGlzLl92aWV3cG9ydFJ1bGVyPWMsdGhpcy5fc3RpY2t5UG9zaXRpb25pbmdMaXN0ZW5lcj1kLHRoaXMuX29uRGVzdHJveT1uZXcgQix0aGlzLl9jb2x1bW5EZWZzQnlOYW1lPW5ldyBNYXAsdGhpcy5fY3VzdG9tQ29sdW1uRGVmcz1uZXcgU2V0LHRoaXMuX2N1c3RvbVJvd0RlZnM9bmV3IFNldCx0aGlzLl9jdXN0b21IZWFkZXJSb3dEZWZzPW5ldyBTZXQsdGhpcy5fY3VzdG9tRm9vdGVyUm93RGVmcz1uZXcgU2V0LHRoaXMuX2hlYWRlclJvd0RlZkNoYW5nZWQ9ITAsdGhpcy5fZm9vdGVyUm93RGVmQ2hhbmdlZD0hMCx0aGlzLl9zdGlja3lDb2x1bW5TdHlsZXNOZWVkUmVzZXQ9ITAsdGhpcy5fZm9yY2VSZWNhbGN1bGF0ZUNlbGxXaWR0aHM9ITAsdGhpcy5fY2FjaGVkUmVuZGVyUm93c01hcD1uZXcgTWFwLHRoaXMuc3RpY2t5Q3NzQ2xhc3M9ImNkay10YWJsZS1zdGlja3kiLHRoaXMubmVlZHNQb3NpdGlvblN0aWNreU9uRWxlbWVudD0hMCx0aGlzLl9pc1Nob3dpbmdOb0RhdGFSb3c9ITEsdGhpcy5fbXVsdGlUZW1wbGF0ZURhdGFSb3dzPSExLHRoaXMuX2ZpeGVkTGF5b3V0PSExLHRoaXMuY29udGVudENoYW5nZWQ9bmV3IFN5LHRoaXMudmlld0NoYW5nZT1uZXcgaih7c3RhcnQ6MCxlbmQ6TnVtYmVyLk1BWF9WQUxVRX0pLG98fHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5zZXRBdHRyaWJ1dGUoInJvbGUiLCJ0YWJsZSIpLHRoaXMuX2RvY3VtZW50PWEsdGhpcy5faXNOYXRpdmVIdG1sVGFibGU9IlRBQkxFIj09PXRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5ub2RlTmFtZX1nZXQgdHJhY2tCeSgpe3JldHVybiB0aGlzLl90cmFja0J5Rm59c2V0IHRyYWNrQnkodCl7InVuZGVmaW5lZCIhPXR5cGVvZiBuZ0Rldk1vZGUmJiFuZ0Rldk1vZGV8fG51bGw9PXR8fCJmdW5jdGlvbiI9PXR5cGVvZiB0fHxjb25zb2xlLndhcm4oYHRyYWNrQnkgbXVzdCBiZSBhIGZ1bmN0aW9uLCBidXQgcmVjZWl2ZWQgJHtKU09OLnN0cmluZ2lmeSh0KX0uYCksdGhpcy5fdHJhY2tCeUZuPXR9Z2V0IGRhdGFTb3VyY2UoKXtyZXR1cm4gdGhpcy5fZGF0YVNvdXJjZX1zZXQgZGF0YVNvdXJjZSh0KXt0aGlzLl9kYXRhU291cmNlIT09dCYmdGhpcy5fc3dpdGNoRGF0YVNvdXJjZSh0KX1nZXQgbXVsdGlUZW1wbGF0ZURhdGFSb3dzKCl7cmV0dXJuIHRoaXMuX211bHRpVGVtcGxhdGVEYXRhUm93c31zZXQgbXVsdGlUZW1wbGF0ZURhdGFSb3dzKHQpe3RoaXMuX211bHRpVGVtcGxhdGVEYXRhUm93cz1lSCh0KSx0aGlzLl9yb3dPdXRsZXQmJnRoaXMuX3Jvd091dGxldC52aWV3Q29udGFpbmVyLmxlbmd0aCYmKHRoaXMuX2ZvcmNlUmVuZGVyRGF0YVJvd3MoKSx0aGlzLnVwZGF0ZVN0aWNreUNvbHVtblN0eWxlcygpKX1nZXQgZml4ZWRMYXlvdXQoKXtyZXR1cm4gdGhpcy5fZml4ZWRMYXlvdXR9c2V0IGZpeGVkTGF5b3V0KHQpe3RoaXMuX2ZpeGVkTGF5b3V0PWVIKHQpLHRoaXMuX2ZvcmNlUmVjYWxjdWxhdGVDZWxsV2lkdGhzPSEwLHRoaXMuX3N0aWNreUNvbHVtblN0eWxlc05lZWRSZXNldD0hMH1uZ09uSW5pdCgpe3RoaXMuX3NldHVwU3RpY2t5U3R5bGVyKCksdGhpcy5faXNOYXRpdmVIdG1sVGFibGUmJnRoaXMuX2FwcGx5TmF0aXZlVGFibGVTZWN0aW9ucygpLHRoaXMuX2RhdGFEaWZmZXI9dGhpcy5fZGlmZmVycy5maW5kKFtdKS5jcmVhdGUoKCh0LGUpPT50aGlzLnRyYWNrQnk/dGhpcy50cmFja0J5KGUuZGF0YUluZGV4LGUuZGF0YSk6ZSkpLHRoaXMuX3ZpZXdwb3J0UnVsZXIuY2hhbmdlKCkucGlwZShqZSh0aGlzLl9vbkRlc3Ryb3kpKS5zdWJzY3JpYmUoKCgpPT57dGhpcy5fZm9yY2VSZWNhbGN1bGF0ZUNlbGxXaWR0aHM9ITB9KSl9bmdBZnRlckNvbnRlbnRDaGVja2VkKCl7aWYodGhpcy5fY2FjaGVSb3dEZWZzKCksdGhpcy5fY2FjaGVDb2x1bW5EZWZzKCksIXRoaXMuX2hlYWRlclJvd0RlZnMubGVuZ3RoJiYhdGhpcy5fZm9vdGVyUm93RGVmcy5sZW5ndGgmJiF0aGlzLl9yb3dEZWZzLmxlbmd0aCYmKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpKXRocm93KGZ1bmN0aW9uIHQoKXtyZXR1cm4gRXJyb3IoIk1pc3NpbmcgZGVmaW5pdGlvbnMgZm9yIGhlYWRlciwgZm9vdGVyLCBhbmQgcm93OyBjYW5ub3QgZGV0ZXJtaW5lIHdoaWNoIGNvbHVtbnMgc2hvdWxkIGJlIHJlbmRlcmVkLiIpfSkoKTtjb25zdCBlPXRoaXMuX3JlbmRlclVwZGF0ZWRDb2x1bW5zKCl8fHRoaXMuX2hlYWRlclJvd0RlZkNoYW5nZWR8fHRoaXMuX2Zvb3RlclJvd0RlZkNoYW5nZWQ7dGhpcy5fc3RpY2t5Q29sdW1uU3R5bGVzTmVlZFJlc2V0PXRoaXMuX3N0aWNreUNvbHVtblN0eWxlc05lZWRSZXNldHx8ZSx0aGlzLl9mb3JjZVJlY2FsY3VsYXRlQ2VsbFdpZHRocz1lLHRoaXMuX2hlYWRlclJvd0RlZkNoYW5nZWQmJih0aGlzLl9mb3JjZVJlbmRlckhlYWRlclJvd3MoKSx0aGlzLl9oZWFkZXJSb3dEZWZDaGFuZ2VkPSExKSx0aGlzLl9mb290ZXJSb3dEZWZDaGFuZ2VkJiYodGhpcy5fZm9yY2VSZW5kZXJGb290ZXJSb3dzKCksdGhpcy5fZm9vdGVyUm93RGVmQ2hhbmdlZD0hMSksdGhpcy5kYXRhU291cmNlJiZ0aGlzLl9yb3dEZWZzLmxlbmd0aD4wJiYhdGhpcy5fcmVuZGVyQ2hhbmdlU3Vic2NyaXB0aW9uP3RoaXMuX29ic2VydmVSZW5kZXJDaGFuZ2VzKCk6dGhpcy5fc3RpY2t5Q29sdW1uU3R5bGVzTmVlZFJlc2V0JiZ0aGlzLnVwZGF0ZVN0aWNreUNvbHVtblN0eWxlcygpLHRoaXMuX2NoZWNrU3RpY2t5U3RhdGVzKCl9bmdPbkRlc3Ryb3koKXt0aGlzLl9yb3dPdXRsZXQudmlld0NvbnRhaW5lci5jbGVhcigpLHRoaXMuX25vRGF0YVJvd091dGxldC52aWV3Q29udGFpbmVyLmNsZWFyKCksdGhpcy5faGVhZGVyUm93T3V0bGV0LnZpZXdDb250YWluZXIuY2xlYXIoKSx0aGlzLl9mb290ZXJSb3dPdXRsZXQudmlld0NvbnRhaW5lci5jbGVhcigpLHRoaXMuX2NhY2hlZFJlbmRlclJvd3NNYXAuY2xlYXIoKSx0aGlzLl9vbkRlc3Ryb3kubmV4dCgpLHRoaXMuX29uRGVzdHJveS5jb21wbGV0ZSgpLEZMKHRoaXMuZGF0YVNvdXJjZSkmJnRoaXMuZGF0YVNvdXJjZS5kaXNjb25uZWN0KHRoaXMpfXJlbmRlclJvd3MoKXt0aGlzLl9yZW5kZXJSb3dzPXRoaXMuX2dldEFsbFJlbmRlclJvd3MoKTtjb25zdCB0PXRoaXMuX2RhdGFEaWZmZXIuZGlmZih0aGlzLl9yZW5kZXJSb3dzKTtpZighdClyZXR1cm4gdGhpcy5fdXBkYXRlTm9EYXRhUm93KCksdm9pZCB0aGlzLmNvbnRlbnRDaGFuZ2VkLm5leHQoKTtjb25zdCBlPXRoaXMuX3Jvd091dGxldC52aWV3Q29udGFpbmVyO3RoaXMuX3ZpZXdSZXBlYXRlci5hcHBseUNoYW5nZXModCxlLCgodCxlLG4pPT50aGlzLl9nZXRFbWJlZGRlZFZpZXdBcmdzKHQuaXRlbSxuKSksKHQ9PnQuaXRlbS5kYXRhKSwodD0+ezE9PT10Lm9wZXJhdGlvbiYmdC5jb250ZXh0JiZ0aGlzLl9yZW5kZXJDZWxsVGVtcGxhdGVGb3JJdGVtKHQucmVjb3JkLml0ZW0ucm93RGVmLHQuY29udGV4dCl9KSksdGhpcy5fdXBkYXRlUm93SW5kZXhDb250ZXh0KCksdC5mb3JFYWNoSWRlbnRpdHlDaGFuZ2UoKHQ9PntlLmdldCh0LmN1cnJlbnRJbmRleCkuY29udGV4dC4kaW1wbGljaXQ9dC5pdGVtLmRhdGF9KSksdGhpcy5fdXBkYXRlTm9EYXRhUm93KCksdGhpcy51cGRhdGVTdGlja3lDb2x1bW5TdHlsZXMoKSx0aGlzLmNvbnRlbnRDaGFuZ2VkLm5leHQoKX1hZGRDb2x1bW5EZWYodCl7dGhpcy5fY3VzdG9tQ29sdW1uRGVmcy5hZGQodCl9cmVtb3ZlQ29sdW1uRGVmKHQpe3RoaXMuX2N1c3RvbUNvbHVtbkRlZnMuZGVsZXRlKHQpfWFkZFJvd0RlZih0KXt0aGlzLl9jdXN0b21Sb3dEZWZzLmFkZCh0KX1yZW1vdmVSb3dEZWYodCl7dGhpcy5fY3VzdG9tUm93RGVmcy5kZWxldGUodCl9YWRkSGVhZGVyUm93RGVmKHQpe3RoaXMuX2N1c3RvbUhlYWRlclJvd0RlZnMuYWRkKHQpLHRoaXMuX2hlYWRlclJvd0RlZkNoYW5nZWQ9ITB9cmVtb3ZlSGVhZGVyUm93RGVmKHQpe3RoaXMuX2N1c3RvbUhlYWRlclJvd0RlZnMuZGVsZXRlKHQpLHRoaXMuX2hlYWRlclJvd0RlZkNoYW5nZWQ9ITB9YWRkRm9vdGVyUm93RGVmKHQpe3RoaXMuX2N1c3RvbUZvb3RlclJvd0RlZnMuYWRkKHQpLHRoaXMuX2Zvb3RlclJvd0RlZkNoYW5nZWQ9ITB9cmVtb3ZlRm9vdGVyUm93RGVmKHQpe3RoaXMuX2N1c3RvbUZvb3RlclJvd0RlZnMuZGVsZXRlKHQpLHRoaXMuX2Zvb3RlclJvd0RlZkNoYW5nZWQ9ITB9c2V0Tm9EYXRhUm93KHQpe3RoaXMuX2N1c3RvbU5vRGF0YVJvdz10fXVwZGF0ZVN0aWNreUhlYWRlclJvd1N0eWxlcygpe2NvbnN0IHQ9dGhpcy5fZ2V0UmVuZGVyZWRSb3dzKHRoaXMuX2hlYWRlclJvd091dGxldCksZT10aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcigidGhlYWQiKTtlJiYoZS5zdHlsZS5kaXNwbGF5PXQubGVuZ3RoPyIiOiJub25lIik7Y29uc3Qgbj10aGlzLl9oZWFkZXJSb3dEZWZzLm1hcCgodD0+dC5zdGlja3kpKTt0aGlzLl9zdGlja3lTdHlsZXIuY2xlYXJTdGlja3lQb3NpdGlvbmluZyh0LFsidG9wIl0pLHRoaXMuX3N0aWNreVN0eWxlci5zdGlja1Jvd3ModCxuLCJ0b3AiKSx0aGlzLl9oZWFkZXJSb3dEZWZzLmZvckVhY2goKHQ9PnQucmVzZXRTdGlja3lDaGFuZ2VkKCkpKX11cGRhdGVTdGlja3lGb290ZXJSb3dTdHlsZXMoKXtjb25zdCB0PXRoaXMuX2dldFJlbmRlcmVkUm93cyh0aGlzLl9mb290ZXJSb3dPdXRsZXQpLGU9dGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoInRmb290Iik7ZSYmKGUuc3R5bGUuZGlzcGxheT10Lmxlbmd0aD8iIjoibm9uZSIpO2NvbnN0IG49dGhpcy5fZm9vdGVyUm93RGVmcy5tYXAoKHQ9PnQuc3RpY2t5KSk7dGhpcy5fc3RpY2t5U3R5bGVyLmNsZWFyU3RpY2t5UG9zaXRpb25pbmcodCxbImJvdHRvbSJdKSx0aGlzLl9zdGlja3lTdHlsZXIuc3RpY2tSb3dzKHQsbiwiYm90dG9tIiksdGhpcy5fc3RpY2t5U3R5bGVyLnVwZGF0ZVN0aWNreUZvb3RlckNvbnRhaW5lcih0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsbiksdGhpcy5fZm9vdGVyUm93RGVmcy5mb3JFYWNoKCh0PT50LnJlc2V0U3RpY2t5Q2hhbmdlZCgpKSl9dXBkYXRlU3RpY2t5Q29sdW1uU3R5bGVzKCl7Y29uc3QgdD10aGlzLl9nZXRSZW5kZXJlZFJvd3ModGhpcy5faGVhZGVyUm93T3V0bGV0KSxlPXRoaXMuX2dldFJlbmRlcmVkUm93cyh0aGlzLl9yb3dPdXRsZXQpLG49dGhpcy5fZ2V0UmVuZGVyZWRSb3dzKHRoaXMuX2Zvb3RlclJvd091dGxldCk7KHRoaXMuX2lzTmF0aXZlSHRtbFRhYmxlJiYhdGhpcy5fZml4ZWRMYXlvdXR8fHRoaXMuX3N0aWNreUNvbHVtblN0eWxlc05lZWRSZXNldCkmJih0aGlzLl9zdGlja3lTdHlsZXIuY2xlYXJTdGlja3lQb3NpdGlvbmluZyhbLi4udCwuLi5lLC4uLm5dLFsibGVmdCIsInJpZ2h0Il0pLHRoaXMuX3N0aWNreUNvbHVtblN0eWxlc05lZWRSZXNldD0hMSksdC5mb3JFYWNoKCgodCxlKT0+e3RoaXMuX2FkZFN0aWNreUNvbHVtblN0eWxlcyhbdF0sdGhpcy5faGVhZGVyUm93RGVmc1tlXSl9KSksdGhpcy5fcm93RGVmcy5mb3JFYWNoKCh0PT57Y29uc3Qgbj1bXTtmb3IobGV0IG89MDtvPGUubGVuZ3RoO28rKyl0aGlzLl9yZW5kZXJSb3dzW29dLnJvd0RlZj09PXQmJm4ucHVzaChlW29dKTt0aGlzLl9hZGRTdGlja3lDb2x1bW5TdHlsZXMobix0KX0pKSxuLmZvckVhY2goKCh0LGUpPT57dGhpcy5fYWRkU3RpY2t5Q29sdW1uU3R5bGVzKFt0XSx0aGlzLl9mb290ZXJSb3dEZWZzW2VdKX0pKSxBcnJheS5mcm9tKHRoaXMuX2NvbHVtbkRlZnNCeU5hbWUudmFsdWVzKCkpLmZvckVhY2goKHQ9PnQucmVzZXRTdGlja3lDaGFuZ2VkKCkpKX1fZ2V0QWxsUmVuZGVyUm93cygpe2NvbnN0IHQ9W10sZT10aGlzLl9jYWNoZWRSZW5kZXJSb3dzTWFwO3RoaXMuX2NhY2hlZFJlbmRlclJvd3NNYXA9bmV3IE1hcDtmb3IobGV0IG49MDtuPHRoaXMuX2RhdGEubGVuZ3RoO24rKyl7bGV0IG89dGhpcy5fZGF0YVtuXTtjb25zdCBpPXRoaXMuX2dldFJlbmRlclJvd3NGb3JEYXRhKG8sbixlLmdldChvKSk7dGhpcy5fY2FjaGVkUmVuZGVyUm93c01hcC5oYXMobyl8fHRoaXMuX2NhY2hlZFJlbmRlclJvd3NNYXAuc2V0KG8sbmV3IFdlYWtNYXApO2ZvcihsZXQgZT0wO2U8aS5sZW5ndGg7ZSsrKXtsZXQgbj1pW2VdO2NvbnN0IG89dGhpcy5fY2FjaGVkUmVuZGVyUm93c01hcC5nZXQobi5kYXRhKTtvLmhhcyhuLnJvd0RlZik/by5nZXQobi5yb3dEZWYpLnB1c2gobik6by5zZXQobi5yb3dEZWYsW25dKSx0LnB1c2gobil9fXJldHVybiB0fV9nZXRSZW5kZXJSb3dzRm9yRGF0YSh0LGUsbil7cmV0dXJuIHRoaXMuX2dldFJvd0RlZnModCxlKS5tYXAoKG89Pntjb25zdCBpPW4mJm4uaGFzKG8pP24uZ2V0KG8pOltdO2lmKGkubGVuZ3RoKXtjb25zdCB0PWkuc2hpZnQoKTtyZXR1cm4gdC5kYXRhSW5kZXg9ZSx0fXJldHVybntkYXRhOnQscm93RGVmOm8sZGF0YUluZGV4OmV9fSkpfV9jYWNoZUNvbHVtbkRlZnMoKXt0aGlzLl9jb2x1bW5EZWZzQnlOYW1lLmNsZWFyKCk7bjModGhpcy5fZ2V0T3duRGVmcyh0aGlzLl9jb250ZW50Q29sdW1uRGVmcyksdGhpcy5fY3VzdG9tQ29sdW1uRGVmcykuZm9yRWFjaCgodD0+e2lmKHRoaXMuX2NvbHVtbkRlZnNCeU5hbWUuaGFzKHQubmFtZSkmJigidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSl0aHJvdyhmdW5jdGlvbiBlKHQpe3JldHVybiBFcnJvcihgRHVwbGljYXRlIGNvbHVtbiBkZWZpbml0aW9uIG5hbWUgcHJvdmlkZWQ6ICIke3R9Ii5gKX0pKHQubmFtZSk7dGhpcy5fY29sdW1uRGVmc0J5TmFtZS5zZXQodC5uYW1lLHQpfSkpfV9jYWNoZVJvd0RlZnMoKXt0aGlzLl9oZWFkZXJSb3dEZWZzPW4zKHRoaXMuX2dldE93bkRlZnModGhpcy5fY29udGVudEhlYWRlclJvd0RlZnMpLHRoaXMuX2N1c3RvbUhlYWRlclJvd0RlZnMpLHRoaXMuX2Zvb3RlclJvd0RlZnM9bjModGhpcy5fZ2V0T3duRGVmcyh0aGlzLl9jb250ZW50Rm9vdGVyUm93RGVmcyksdGhpcy5fY3VzdG9tRm9vdGVyUm93RGVmcyksdGhpcy5fcm93RGVmcz1uMyh0aGlzLl9nZXRPd25EZWZzKHRoaXMuX2NvbnRlbnRSb3dEZWZzKSx0aGlzLl9jdXN0b21Sb3dEZWZzKTtjb25zdCB0PXRoaXMuX3Jvd0RlZnMuZmlsdGVyKCh0PT4hdC53aGVuKSk7aWYoIXRoaXMubXVsdGlUZW1wbGF0ZURhdGFSb3dzJiZ0Lmxlbmd0aD4xJiYoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkpdGhyb3coZnVuY3Rpb24gZSgpe3JldHVybiBFcnJvcigiVGhlcmUgY2FuIG9ubHkgYmUgb25lIGRlZmF1bHQgcm93IHdpdGhvdXQgYSB3aGVuIHByZWRpY2F0ZSBmdW5jdGlvbi4iKX0pKCk7dGhpcy5fZGVmYXVsdFJvd0RlZj10WzBdfV9yZW5kZXJVcGRhdGVkQ29sdW1ucygpe2NvbnN0IHQ9KHQsZSk9PnR8fCEhZS5nZXRDb2x1bW5zRGlmZigpLGU9dGhpcy5fcm93RGVmcy5yZWR1Y2UodCwhMSk7ZSYmdGhpcy5fZm9yY2VSZW5kZXJEYXRhUm93cygpO2NvbnN0IG49dGhpcy5faGVhZGVyUm93RGVmcy5yZWR1Y2UodCwhMSk7biYmdGhpcy5fZm9yY2VSZW5kZXJIZWFkZXJSb3dzKCk7Y29uc3Qgbz10aGlzLl9mb290ZXJSb3dEZWZzLnJlZHVjZSh0LCExKTtyZXR1cm4gbyYmdGhpcy5fZm9yY2VSZW5kZXJGb290ZXJSb3dzKCksZXx8bnx8b31fc3dpdGNoRGF0YVNvdXJjZSh0KXt0aGlzLl9kYXRhPVtdLEZMKHRoaXMuZGF0YVNvdXJjZSkmJnRoaXMuZGF0YVNvdXJjZS5kaXNjb25uZWN0KHRoaXMpLHRoaXMuX3JlbmRlckNoYW5nZVN1YnNjcmlwdGlvbiYmKHRoaXMuX3JlbmRlckNoYW5nZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpLHRoaXMuX3JlbmRlckNoYW5nZVN1YnNjcmlwdGlvbj1udWxsKSx0fHwodGhpcy5fZGF0YURpZmZlciYmdGhpcy5fZGF0YURpZmZlci5kaWZmKFtdKSx0aGlzLl9yb3dPdXRsZXQudmlld0NvbnRhaW5lci5jbGVhcigpKSx0aGlzLl9kYXRhU291cmNlPXR9X29ic2VydmVSZW5kZXJDaGFuZ2VzKCl7aWYoIXRoaXMuZGF0YVNvdXJjZSlyZXR1cm47bGV0IHQ7aWYoRkwodGhpcy5kYXRhU291cmNlKT90PXRoaXMuZGF0YVNvdXJjZS5jb25uZWN0KHRoaXMpOkx0KHRoaXMuZGF0YVNvdXJjZSk/dD10aGlzLmRhdGFTb3VyY2U6QXJyYXkuaXNBcnJheSh0aGlzLmRhdGFTb3VyY2UpJiYodD16dCh0aGlzLmRhdGFTb3VyY2UpKSx2b2lkIDA9PT10JiYoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkpdGhyb3coZnVuY3Rpb24gZSgpe3JldHVybiBFcnJvcigiUHJvdmlkZWQgZGF0YSBzb3VyY2UgZGlkIG5vdCBtYXRjaCBhbiBhcnJheSwgT2JzZXJ2YWJsZSwgb3IgRGF0YVNvdXJjZSIpfSkoKTt0aGlzLl9yZW5kZXJDaGFuZ2VTdWJzY3JpcHRpb249dC5waXBlKGplKHRoaXMuX29uRGVzdHJveSkpLnN1YnNjcmliZSgodD0+e3RoaXMuX2RhdGE9dHx8W10sdGhpcy5yZW5kZXJSb3dzKCl9KSl9X2ZvcmNlUmVuZGVySGVhZGVyUm93cygpe3RoaXMuX2hlYWRlclJvd091dGxldC52aWV3Q29udGFpbmVyLmxlbmd0aD4wJiZ0aGlzLl9oZWFkZXJSb3dPdXRsZXQudmlld0NvbnRhaW5lci5jbGVhcigpLHRoaXMuX2hlYWRlclJvd0RlZnMuZm9yRWFjaCgoKHQsZSk9PnRoaXMuX3JlbmRlclJvdyh0aGlzLl9oZWFkZXJSb3dPdXRsZXQsdCxlKSkpLHRoaXMudXBkYXRlU3RpY2t5SGVhZGVyUm93U3R5bGVzKCl9X2ZvcmNlUmVuZGVyRm9vdGVyUm93cygpe3RoaXMuX2Zvb3RlclJvd091dGxldC52aWV3Q29udGFpbmVyLmxlbmd0aD4wJiZ0aGlzLl9mb290ZXJSb3dPdXRsZXQudmlld0NvbnRhaW5lci5jbGVhcigpLHRoaXMuX2Zvb3RlclJvd0RlZnMuZm9yRWFjaCgoKHQsZSk9PnRoaXMuX3JlbmRlclJvdyh0aGlzLl9mb290ZXJSb3dPdXRsZXQsdCxlKSkpLHRoaXMudXBkYXRlU3RpY2t5Rm9vdGVyUm93U3R5bGVzKCl9X2FkZFN0aWNreUNvbHVtblN0eWxlcyh0LGUpe2NvbnN0IG49QXJyYXkuZnJvbShlLmNvbHVtbnN8fFtdKS5tYXAoKHQ9Pntjb25zdCBlPXRoaXMuX2NvbHVtbkRlZnNCeU5hbWUuZ2V0KHQpO2lmKCFlJiYoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkpdGhyb3cgcTEodCk7cmV0dXJuIGV9KSksbz1uLm1hcCgodD0+dC5zdGlja3kpKSxpPW4ubWFwKCh0PT50LnN0aWNreUVuZCkpO3RoaXMuX3N0aWNreVN0eWxlci51cGRhdGVTdGlja3lDb2x1bW5zKHQsbyxpLCF0aGlzLl9maXhlZExheW91dHx8dGhpcy5fZm9yY2VSZWNhbGN1bGF0ZUNlbGxXaWR0aHMpfV9nZXRSZW5kZXJlZFJvd3ModCl7Y29uc3QgZT1bXTtmb3IobGV0IG49MDtuPHQudmlld0NvbnRhaW5lci5sZW5ndGg7bisrKXtjb25zdCBvPXQudmlld0NvbnRhaW5lci5nZXQobik7ZS5wdXNoKG8ucm9vdE5vZGVzWzBdKX1yZXR1cm4gZX1fZ2V0Um93RGVmcyh0LGUpe2lmKDE9PXRoaXMuX3Jvd0RlZnMubGVuZ3RoKXJldHVyblt0aGlzLl9yb3dEZWZzWzBdXTtsZXQgbj1bXTtpZih0aGlzLm11bHRpVGVtcGxhdGVEYXRhUm93cyluPXRoaXMuX3Jvd0RlZnMuZmlsdGVyKChuPT4hbi53aGVufHxuLndoZW4oZSx0KSkpO2Vsc2V7bGV0IG89dGhpcy5fcm93RGVmcy5maW5kKChuPT5uLndoZW4mJm4ud2hlbihlLHQpKSl8fHRoaXMuX2RlZmF1bHRSb3dEZWY7byYmbi5wdXNoKG8pfWlmKCFuLmxlbmd0aCYmKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpKXRocm93KGZ1bmN0aW9uIG8odCl7cmV0dXJuIEVycm9yKGBDb3VsZCBub3QgZmluZCBhIG1hdGNoaW5nIHJvdyBkZWZpbml0aW9uIGZvciB0aGVwcm92aWRlZCByb3cgZGF0YTogJHtKU09OLnN0cmluZ2lmeSh0KX1gKX0pKHQpO3JldHVybiBufV9nZXRFbWJlZGRlZFZpZXdBcmdzKHQsZSl7cmV0dXJue3RlbXBsYXRlUmVmOnQucm93RGVmLnRlbXBsYXRlLGNvbnRleHQ6eyRpbXBsaWNpdDp0LmRhdGF9LGluZGV4OmV9fV9yZW5kZXJSb3codCxlLG4sbz17fSl7Y29uc3QgaT10LnZpZXdDb250YWluZXIuY3JlYXRlRW1iZWRkZWRWaWV3KGUudGVtcGxhdGUsbyxuKTtyZXR1cm4gdGhpcy5fcmVuZGVyQ2VsbFRlbXBsYXRlRm9ySXRlbShlLG8pLGl9X3JlbmRlckNlbGxUZW1wbGF0ZUZvckl0ZW0odCxlKXtmb3IobGV0IG4gb2YgdGhpcy5fZ2V0Q2VsbFRlbXBsYXRlcyh0KSlCMS5tb3N0UmVjZW50Q2VsbE91dGxldCYmQjEubW9zdFJlY2VudENlbGxPdXRsZXQuX3ZpZXdDb250YWluZXIuY3JlYXRlRW1iZWRkZWRWaWV3KG4sZSk7dGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCl9X3VwZGF0ZVJvd0luZGV4Q29udGV4dCgpe2NvbnN0IHQ9dGhpcy5fcm93T3V0bGV0LnZpZXdDb250YWluZXI7Zm9yKGxldCBlPTAsbj10Lmxlbmd0aDtlPG47ZSsrKXtjb25zdCBvPXQuZ2V0KGUpLmNvbnRleHQ7by5jb3VudD1uLG8uZmlyc3Q9MD09PWUsby5sYXN0PWU9PT1uLTEsby5ldmVuPWUlMj09MCxvLm9kZD0hby5ldmVuLHRoaXMubXVsdGlUZW1wbGF0ZURhdGFSb3dzPyhvLmRhdGFJbmRleD10aGlzLl9yZW5kZXJSb3dzW2VdLmRhdGFJbmRleCxvLnJlbmRlckluZGV4PWUpOm8uaW5kZXg9dGhpcy5fcmVuZGVyUm93c1tlXS5kYXRhSW5kZXh9fV9nZXRDZWxsVGVtcGxhdGVzKHQpe3JldHVybiB0JiZ0LmNvbHVtbnM/QXJyYXkuZnJvbSh0LmNvbHVtbnMsKGU9Pntjb25zdCBuPXRoaXMuX2NvbHVtbkRlZnNCeU5hbWUuZ2V0KGUpO2lmKCFuJiYoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkpdGhyb3cgcTEoZSk7cmV0dXJuIHQuZXh0cmFjdENlbGxUZW1wbGF0ZShuKX0pKTpbXX1fYXBwbHlOYXRpdmVUYWJsZVNlY3Rpb25zKCl7Y29uc3QgdD10aGlzLl9kb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCksZT1be3RhZzoidGhlYWQiLG91dGxldHM6W3RoaXMuX2hlYWRlclJvd091dGxldF19LHt0YWc6InRib2R5IixvdXRsZXRzOlt0aGlzLl9yb3dPdXRsZXQsdGhpcy5fbm9EYXRhUm93T3V0bGV0XX0se3RhZzoidGZvb3QiLG91dGxldHM6W3RoaXMuX2Zvb3RlclJvd091dGxldF19XTtmb3IoY29uc3QgbiBvZiBlKXtjb25zdCBlPXRoaXMuX2RvY3VtZW50LmNyZWF0ZUVsZW1lbnQobi50YWcpO2Uuc2V0QXR0cmlidXRlKCJyb2xlIiwicm93Z3JvdXAiKTtmb3IoY29uc3QgdCBvZiBuLm91dGxldHMpZS5hcHBlbmRDaGlsZCh0LmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk7dC5hcHBlbmRDaGlsZChlKX10aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuYXBwZW5kQ2hpbGQodCl9X2ZvcmNlUmVuZGVyRGF0YVJvd3MoKXt0aGlzLl9kYXRhRGlmZmVyLmRpZmYoW10pLHRoaXMuX3Jvd091dGxldC52aWV3Q29udGFpbmVyLmNsZWFyKCksdGhpcy5yZW5kZXJSb3dzKCl9X2NoZWNrU3RpY2t5U3RhdGVzKCl7Y29uc3QgdD0odCxlKT0+dHx8ZS5oYXNTdGlja3lDaGFuZ2VkKCk7dGhpcy5faGVhZGVyUm93RGVmcy5yZWR1Y2UodCwhMSkmJnRoaXMudXBkYXRlU3RpY2t5SGVhZGVyUm93U3R5bGVzKCksdGhpcy5fZm9vdGVyUm93RGVmcy5yZWR1Y2UodCwhMSkmJnRoaXMudXBkYXRlU3RpY2t5Rm9vdGVyUm93U3R5bGVzKCksQXJyYXkuZnJvbSh0aGlzLl9jb2x1bW5EZWZzQnlOYW1lLnZhbHVlcygpKS5yZWR1Y2UodCwhMSkmJih0aGlzLl9zdGlja3lDb2x1bW5TdHlsZXNOZWVkUmVzZXQ9ITAsdGhpcy51cGRhdGVTdGlja3lDb2x1bW5TdHlsZXMoKSl9X3NldHVwU3RpY2t5U3R5bGVyKCl7dGhpcy5fc3RpY2t5U3R5bGVyPW5ldyBZMSh0aGlzLl9pc05hdGl2ZUh0bWxUYWJsZSx0aGlzLnN0aWNreUNzc0NsYXNzLHRoaXMuX2Rpcj90aGlzLl9kaXIudmFsdWU6Imx0ciIsdGhpcy5fY29hbGVzY2VkU3R5bGVTY2hlZHVsZXIsdGhpcy5fcGxhdGZvcm0uaXNCcm93c2VyLHRoaXMubmVlZHNQb3NpdGlvblN0aWNreU9uRWxlbWVudCx0aGlzLl9zdGlja3lQb3NpdGlvbmluZ0xpc3RlbmVyKSwodGhpcy5fZGlyP3RoaXMuX2Rpci5jaGFuZ2U6enQoKSkucGlwZShqZSh0aGlzLl9vbkRlc3Ryb3kpKS5zdWJzY3JpYmUoKHQ9Pnt0aGlzLl9zdGlja3lTdHlsZXIuZGlyZWN0aW9uPXQsdGhpcy51cGRhdGVTdGlja3lDb2x1bW5TdHlsZXMoKX0pKX1fZ2V0T3duRGVmcyh0KXtyZXR1cm4gdC5maWx0ZXIoKHQ9PiF0Ll90YWJsZXx8dC5fdGFibGU9PT10aGlzKSl9X3VwZGF0ZU5vRGF0YVJvdygpe2NvbnN0IHQ9dGhpcy5fY3VzdG9tTm9EYXRhUm93fHx0aGlzLl9ub0RhdGFSb3c7aWYodCl7Y29uc3QgZT0wPT09dGhpcy5fcm93T3V0bGV0LnZpZXdDb250YWluZXIubGVuZ3RoO2lmKGUhPT10aGlzLl9pc1Nob3dpbmdOb0RhdGFSb3cpe2NvbnN0IG49dGhpcy5fbm9EYXRhUm93T3V0bGV0LnZpZXdDb250YWluZXI7ZT9uLmNyZWF0ZUVtYmVkZGVkVmlldyh0LnRlbXBsYXRlUmVmKTpuLmNsZWFyKCksdGhpcy5faXNTaG93aW5nTm9EYXRhUm93PWV9fX19ZnVuY3Rpb24gbjModCxlKXtyZXR1cm4gdC5jb25jYXQoQXJyYXkuZnJvbShlKSl9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2UzLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxlMykoZ2YoaGIpLGdmKE9iKSxnZihLaCksR2EoInJvbGUiKSxnZih2Riw4KSxnZihzTSksZ2YoY0gpLGdmKFdMKSxnZihFMSksZ2YoUUwpLGdmKFoxLDEyKSl9LGUzLsm1Y21wPXNvKHt0eXBlOmUzLHNlbGVjdG9yczpbWyJjZGstdGFibGUiXSxbInRhYmxlIiwiY2RrLXRhYmxlIiwiIl1dLGNvbnRlbnRRdWVyaWVzOmZ1bmN0aW9uIHQoZSxuLG8pe2lmKDEmZSYmKGp5KG8sVzEsNSksankobyxQMSw1KSxqeShvLEwxLDUpLGp5KG8sSTEsNSksankobyxGMSw1KSksMiZlKXtsZXQgdDtCeSh0PVV5KCkpJiYobi5fbm9EYXRhUm93PXQuZmlyc3QpLEJ5KHQ9VXkoKSkmJihuLl9jb250ZW50Q29sdW1uRGVmcz10KSxCeSh0PVV5KCkpJiYobi5fY29udGVudFJvd0RlZnM9dCksQnkodD1VeSgpKSYmKG4uX2NvbnRlbnRIZWFkZXJSb3dEZWZzPXQpLEJ5KHQ9VXkoKSkmJihuLl9jb250ZW50Rm9vdGVyUm93RGVmcz10KX19LHZpZXdRdWVyeTpmdW5jdGlvbiB0KGUsbil7aWYoMSZlJiYoVnkoSzEsNyksVnkoSjEsNyksVnkoUTEsNyksVnkoJDEsNykpLDImZSl7bGV0IHQ7QnkodD1VeSgpKSYmKG4uX3Jvd091dGxldD10LmZpcnN0KSxCeSh0PVV5KCkpJiYobi5faGVhZGVyUm93T3V0bGV0PXQuZmlyc3QpLEJ5KHQ9VXkoKSkmJihuLl9mb290ZXJSb3dPdXRsZXQ9dC5maXJzdCksQnkodD1VeSgpKSYmKG4uX25vRGF0YVJvd091dGxldD10LmZpcnN0KX19LGhvc3RBdHRyczpbMSwiY2RrLXRhYmxlIl0saG9zdFZhcnM6Mixob3N0QmluZGluZ3M6ZnVuY3Rpb24gdChlLG4pezImZSYmY3UoImNkay10YWJsZS1maXhlZC1sYXlvdXQiLG4uZml4ZWRMYXlvdXQpfSxpbnB1dHM6e3RyYWNrQnk6InRyYWNrQnkiLGRhdGFTb3VyY2U6ImRhdGFTb3VyY2UiLG11bHRpVGVtcGxhdGVEYXRhUm93czoibXVsdGlUZW1wbGF0ZURhdGFSb3dzIixmaXhlZExheW91dDoiZml4ZWRMYXlvdXQifSxvdXRwdXRzOntjb250ZW50Q2hhbmdlZDoiY29udGVudENoYW5nZWQifSxleHBvcnRBczpbImNka1RhYmxlIl0sZmVhdHVyZXM6W2poKFt7cHJvdmlkZTpfMSx1c2VFeGlzdGluZzplM30se3Byb3ZpZGU6V0wsdXNlQ2xhc3M6Qkx9LHtwcm92aWRlOkUxLHVzZUNsYXNzOkExfSx7cHJvdmlkZTpaMSx1c2VWYWx1ZTpudWxsfV0pXSxuZ0NvbnRlbnRTZWxlY3RvcnM6WyJjYXB0aW9uIiwiY29sZ3JvdXAsIGNvbCJdLGRlY2xzOjYsdmFyczowLGNvbnN0czpbWyJoZWFkZXJSb3dPdXRsZXQiLCIiXSxbInJvd091dGxldCIsIiJdLFsibm9EYXRhUm93T3V0bGV0IiwiIl0sWyJmb290ZXJSb3dPdXRsZXQiLCIiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKEhmKGcxKSxGZigwKSxGZigxLDEpLFBmKDIsMCksUGYoMywxKSxQZig0LDIpLFBmKDUsMykpfSxkaXJlY3RpdmVzOltKMSxLMSwkMSxRMV0sc3R5bGVzOlsiLmNkay10YWJsZS1maXhlZC1sYXlvdXR7dGFibGUtbGF5b3V0OmZpeGVkfVxuIl0sZW5jYXBzdWxhdGlvbjoyfSksZTMuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpoYn0se3R5cGU6T2J9LHt0eXBlOktofSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6JGEsYXJnczpbInJvbGUiXX1dfSx7dHlwZTp2RixkZWNvcmF0b3JzOlt7dHlwZTpCcn1dfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbc01dfV19LHt0eXBlOmNIfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbV0xdfV19LHt0eXBlOkExLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W0UxXX1dfSx7dHlwZTpRTH0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpqcn0se3R5cGU6THIsYXJnczpbWjFdfV19XSxlMy5wcm9wRGVjb3JhdG9ycz17dHJhY2tCeTpbe3R5cGU6Ul99XSxkYXRhU291cmNlOlt7dHlwZTpSX31dLG11bHRpVGVtcGxhdGVEYXRhUm93czpbe3R5cGU6Ul99XSxmaXhlZExheW91dDpbe3R5cGU6Ul99XSxjb250ZW50Q2hhbmdlZDpbe3R5cGU6RV99XSxfcm93T3V0bGV0Olt7dHlwZTphcixhcmdzOltLMSx7c3RhdGljOiEwfV19XSxfaGVhZGVyUm93T3V0bGV0Olt7dHlwZTphcixhcmdzOltKMSx7c3RhdGljOiEwfV19XSxfZm9vdGVyUm93T3V0bGV0Olt7dHlwZTphcixhcmdzOltRMSx7c3RhdGljOiEwfV19XSxfbm9EYXRhUm93T3V0bGV0Olt7dHlwZTphcixhcmdzOlskMSx7c3RhdGljOiEwfV19XSxfY29udGVudENvbHVtbkRlZnM6W3t0eXBlOm9yLGFyZ3M6W1AxLHtkZXNjZW5kYW50czohMH1dfV0sX2NvbnRlbnRSb3dEZWZzOlt7dHlwZTpvcixhcmdzOltMMSx7ZGVzY2VuZGFudHM6ITB9XX1dLF9jb250ZW50SGVhZGVyUm93RGVmczpbe3R5cGU6b3IsYXJnczpbSTEse2Rlc2NlbmRhbnRzOiEwfV19XSxfY29udGVudEZvb3RlclJvd0RlZnM6W3t0eXBlOm9yLGFyZ3M6W0YxLHtkZXNjZW5kYW50czohMH1dfV0sX25vRGF0YVJvdzpbe3R5cGU6aXIsYXJnczpbVzFdfV19LCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoZTMsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoiY2RrLXRhYmxlLCB0YWJsZVtjZGstdGFibGVdIixleHBvcnRBczoiY2RrVGFibGUiLHRlbXBsYXRlOnQzLGhvc3Q6e2NsYXNzOiJjZGstdGFibGUiLCJbY2xhc3MuY2RrLXRhYmxlLWZpeGVkLWxheW91dF0iOiJmaXhlZExheW91dCJ9LGVuY2Fwc3VsYXRpb246V24uTm9uZSxjaGFuZ2VEZXRlY3Rpb246am4uRGVmYXVsdCxwcm92aWRlcnM6W3twcm92aWRlOl8xLHVzZUV4aXN0aW5nOmUzfSx7cHJvdmlkZTpXTCx1c2VDbGFzczpCTH0se3Byb3ZpZGU6RTEsdXNlQ2xhc3M6QTF9LHtwcm92aWRlOloxLHVzZVZhbHVlOm51bGx9XSxzdHlsZXM6WyIuY2RrLXRhYmxlLWZpeGVkLWxheW91dHt0YWJsZS1sYXlvdXQ6Zml4ZWR9XG4iXX1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmhifSx7dHlwZTpPYn0se3R5cGU6S2h9LHt0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTokYSxhcmdzOlsicm9sZSJdfV19LHt0eXBlOnZGLGRlY29yYXRvcnM6W3t0eXBlOkJyfV19LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltzTV19XX0se3R5cGU6Y0h9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltXTF19XX0se3R5cGU6QTEsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbRTFdfV19LHt0eXBlOlFMfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOmpyfSx7dHlwZTpMcixhcmdzOltaMV19XX1dfSkse2NvbnRlbnRDaGFuZ2VkOlt7dHlwZTpFX31dLHRyYWNrQnk6W3t0eXBlOlJffV0sZGF0YVNvdXJjZTpbe3R5cGU6Ul99XSxtdWx0aVRlbXBsYXRlRGF0YVJvd3M6W3t0eXBlOlJffV0sZml4ZWRMYXlvdXQ6W3t0eXBlOlJffV0sX3Jvd091dGxldDpbe3R5cGU6YXIsYXJnczpbSzEse3N0YXRpYzohMH1dfV0sX2hlYWRlclJvd091dGxldDpbe3R5cGU6YXIsYXJnczpbSjEse3N0YXRpYzohMH1dfV0sX2Zvb3RlclJvd091dGxldDpbe3R5cGU6YXIsYXJnczpbUTEse3N0YXRpYzohMH1dfV0sX25vRGF0YVJvd091dGxldDpbe3R5cGU6YXIsYXJnczpbJDEse3N0YXRpYzohMH1dfV0sX2NvbnRlbnRDb2x1bW5EZWZzOlt7dHlwZTpvcixhcmdzOltQMSx7ZGVzY2VuZGFudHM6ITB9XX1dLF9jb250ZW50Um93RGVmczpbe3R5cGU6b3IsYXJnczpbTDEse2Rlc2NlbmRhbnRzOiEwfV19XSxfY29udGVudEhlYWRlclJvd0RlZnM6W3t0eXBlOm9yLGFyZ3M6W0kxLHtkZXNjZW5kYW50czohMH1dfV0sX2NvbnRlbnRGb290ZXJSb3dEZWZzOlt7dHlwZTpvcixhcmdzOltGMSx7ZGVzY2VuZGFudHM6ITB9XX1dLF9ub0RhdGFSb3c6W3t0eXBlOmlyLGFyZ3M6W1cxXX1dfSk7Y2xhc3MgbzN7Y29uc3RydWN0b3IodCxlKXt0aGlzLl90YWJsZT10LHRoaXMuX29wdGlvbnM9ZSx0aGlzLmp1c3RpZnk9InN0YXJ0Iix0aGlzLl9vcHRpb25zPWV8fHt9fWdldCBuYW1lKCl7cmV0dXJuIHRoaXMuX25hbWV9c2V0IG5hbWUodCl7dGhpcy5fbmFtZT10LHRoaXMuX3N5bmNDb2x1bW5EZWZOYW1lKCl9bmdPbkluaXQoKXtpZih0aGlzLl9zeW5jQ29sdW1uRGVmTmFtZSgpLHZvaWQgMD09PXRoaXMuaGVhZGVyVGV4dCYmKHRoaXMuaGVhZGVyVGV4dD10aGlzLl9jcmVhdGVEZWZhdWx0SGVhZGVyVGV4dCgpKSx0aGlzLmRhdGFBY2Nlc3Nvcnx8KHRoaXMuZGF0YUFjY2Vzc29yPXRoaXMuX29wdGlvbnMuZGVmYXVsdERhdGFBY2Nlc3Nvcnx8KCh0LGUpPT50W2VdKSksdGhpcy5fdGFibGUpdGhpcy5jb2x1bW5EZWYuY2VsbD10aGlzLmNlbGwsdGhpcy5jb2x1bW5EZWYuaGVhZGVyQ2VsbD10aGlzLmhlYWRlckNlbGwsdGhpcy5fdGFibGUuYWRkQ29sdW1uRGVmKHRoaXMuY29sdW1uRGVmKTtlbHNlIGlmKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpdGhyb3coZnVuY3Rpb24gdCgpe3JldHVybiBFcnJvcigiVGV4dCBjb2x1bW4gY291bGQgbm90IGZpbmQgYSBwYXJlbnQgdGFibGUgZm9yIHJlZ2lzdHJhdGlvbi4iKX0pKCl9bmdPbkRlc3Ryb3koKXt0aGlzLl90YWJsZSYmdGhpcy5fdGFibGUucmVtb3ZlQ29sdW1uRGVmKHRoaXMuY29sdW1uRGVmKX1fY3JlYXRlRGVmYXVsdEhlYWRlclRleHQoKXtjb25zdCB0PXRoaXMubmFtZTtpZighdCYmKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpKXRocm93KGZ1bmN0aW9uIGUoKXtyZXR1cm4gRXJyb3IoIlRhYmxlIHRleHQgY29sdW1uIG11c3QgaGF2ZSBhIG5hbWUuIil9KSgpO3JldHVybiB0aGlzLl9vcHRpb25zJiZ0aGlzLl9vcHRpb25zLmRlZmF1bHRIZWFkZXJUZXh0VHJhbnNmb3JtP3RoaXMuX29wdGlvbnMuZGVmYXVsdEhlYWRlclRleHRUcmFuc2Zvcm0odCk6dFswXS50b1VwcGVyQ2FzZSgpK3Quc2xpY2UoMSl9X3N5bmNDb2x1bW5EZWZOYW1lKCl7dGhpcy5jb2x1bW5EZWYmJih0aGlzLmNvbHVtbkRlZi5uYW1lPXRoaXMubmFtZSl9fW8zLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxvMykoZ2YoZTMsOCksZ2YoQzEsOCkpfSxvMy7JtWNtcD1zbyh7dHlwZTpvMyxzZWxlY3RvcnM6W1siY2RrLXRleHQtY29sdW1uIl1dLHZpZXdRdWVyeTpmdW5jdGlvbiB0KGUsbil7aWYoMSZlJiYoVnkoUDEsNyksVnkoTTEsNyksVnkodjEsNykpLDImZSl7bGV0IHQ7QnkodD1VeSgpKSYmKG4uY29sdW1uRGVmPXQuZmlyc3QpLEJ5KHQ9VXkoKSkmJihuLmNlbGw9dC5maXJzdCksQnkodD1VeSgpKSYmKG4uaGVhZGVyQ2VsbD10LmZpcnN0KX19LGlucHV0czp7anVzdGlmeToianVzdGlmeSIsbmFtZToibmFtZSIsaGVhZGVyVGV4dDoiaGVhZGVyVGV4dCIsZGF0YUFjY2Vzc29yOiJkYXRhQWNjZXNzb3IifSxkZWNsczozLHZhcnM6MCxjb25zdHM6W1siY2RrQ29sdW1uRGVmIiwiIl0sWyJjZGstaGVhZGVyLWNlbGwiLCIiLDMsInRleHQtYWxpZ24iLDQsImNka0hlYWRlckNlbGxEZWYiXSxbImNkay1jZWxsIiwiIiwzLCJ0ZXh0LWFsaWduIiw0LCJjZGtDZWxsRGVmIl0sWyJjZGstaGVhZGVyLWNlbGwiLCIiXSxbImNkay1jZWxsIiwiIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJih4ZigwLDApLEhtKDEsaDEsMiwzLCJ0aCIsMSksSG0oMixiMSwyLDMsInRkIiwyKSxPZigpKX0sZGlyZWN0aXZlczpbUDEsdjEsTTEsazEsRDFdLGVuY2Fwc3VsYXRpb246Mn0pLG8zLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6ZTMsZGVjb3JhdG9yczpbe3R5cGU6QnJ9XX0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltDMV19XX1dLG8zLnByb3BEZWNvcmF0b3JzPXtuYW1lOlt7dHlwZTpSX31dLGhlYWRlclRleHQ6W3t0eXBlOlJffV0sZGF0YUFjY2Vzc29yOlt7dHlwZTpSX31dLGp1c3RpZnk6W3t0eXBlOlJffV0sY29sdW1uRGVmOlt7dHlwZTphcixhcmdzOltQMSx7c3RhdGljOiEwfV19XSxjZWxsOlt7dHlwZTphcixhcmdzOltNMSx7c3RhdGljOiEwfV19XSxoZWFkZXJDZWxsOlt7dHlwZTphcixhcmdzOlt2MSx7c3RhdGljOiEwfV19XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihvMyxbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJjZGstdGV4dC1jb2x1bW4iLHRlbXBsYXRlOidcbiAgICA8bmctY29udGFpbmVyIGNka0NvbHVtbkRlZj5cbiAgICAgIDx0aCBjZGstaGVhZGVyLWNlbGwgKmNka0hlYWRlckNlbGxEZWYgW3N0eWxlLnRleHQtYWxpZ25dPSJqdXN0aWZ5Ij5cbiAgICAgICAge3toZWFkZXJUZXh0fX1cbiAgICAgIDwvdGg+XG4gICAgICA8dGQgY2RrLWNlbGwgKmNka0NlbGxEZWY9ImxldCBkYXRhIiBbc3R5bGUudGV4dC1hbGlnbl09Imp1c3RpZnkiPlxuICAgICAgICB7e2RhdGFBY2Nlc3NvcihkYXRhLCBuYW1lKX19XG4gICAgICA8L3RkPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAnLGVuY2Fwc3VsYXRpb246V24uTm9uZSxjaGFuZ2VEZXRlY3Rpb246am4uRGVmYXVsdH1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmUzLGRlY29yYXRvcnM6W3t0eXBlOkJyfV19LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpbQzFdfV19XX0pLHtqdXN0aWZ5Olt7dHlwZTpSX31dLG5hbWU6W3t0eXBlOlJffV0saGVhZGVyVGV4dDpbe3R5cGU6Ul99XSxkYXRhQWNjZXNzb3I6W3t0eXBlOlJffV0sY29sdW1uRGVmOlt7dHlwZTphcixhcmdzOltQMSx7c3RhdGljOiEwfV19XSxjZWxsOlt7dHlwZTphcixhcmdzOltNMSx7c3RhdGljOiEwfV19XSxoZWFkZXJDZWxsOlt7dHlwZTphcixhcmdzOlt2MSx7c3RhdGljOiEwfV19XX0pOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY29uc3QgaTM9W2UzLEwxLE0xLEIxLHYxLHgxLFAxLEQxLFUxLGsxLFMxLFYxLEkxLGoxLEYxLEsxLEoxLFExLG8zLFcxLFgxLCQxXTtjbGFzcyBhM3t9YTMuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGEzKX0sYTMuybVtb2Q9Zm8oe3R5cGU6YTN9KSxhMy7JtWluaj1Ebih7aW1wb3J0czpbW2lCXV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKGEzLFt7dHlwZTpMXyxhcmdzOlt7ZXhwb3J0czppMyxkZWNsYXJhdGlvbnM6aTMsaW1wb3J0czpbaUJdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmdW8oYTMse2RlY2xhcmF0aW9uczpmdW5jdGlvbigpe3JldHVybltlMyxMMSxNMSxCMSx2MSx4MSxQMSxEMSxVMSxrMSxTMSxWMSxJMSxqMSxGMSxLMSxKMSxRMSxvMyxXMSxYMSwkMV19LGltcG9ydHM6ZnVuY3Rpb24oKXtyZXR1cm5baUJdfSxleHBvcnRzOmZ1bmN0aW9uKCl7cmV0dXJuW2UzLEwxLE0xLEIxLHYxLHgxLFAxLEQxLFUxLGsxLFMxLFYxLEkxLGoxLEYxLEsxLEoxLFExLG8zLFcxLFgxLCQxXX19KTtjb25zdCByMz1bW1siY2FwdGlvbiJdXSxbWyJjb2xncm91cCJdLFsiY29sIl1dXTtmdW5jdGlvbiBzMyh0LGUpe2lmKDEmdCYmKENmKDAsInRoIiwzKSxQdSgxKSxNZigpKSwyJnQpe2NvbnN0IHQ9emYoKTtsdSgidGV4dC1hbGlnbiIsdC5qdXN0aWZ5KSxEYygxKSxrdSgiICIsdC5oZWFkZXJUZXh0LCIgIil9fWZ1bmN0aW9uIGwzKHQsZSl7aWYoMSZ0JiYoQ2YoMCwidGQiLDQpLFB1KDEpLE1mKCkpLDImdCl7Y29uc3QgdD1lLiRpbXBsaWNpdCxuPXpmKCk7bHUoInRleHQtYWxpZ24iLG4uanVzdGlmeSksRGMoMSksa3UoIiAiLG4uZGF0YUFjY2Vzc29yKHQsbi5uYW1lKSwiICIpfX1jbGFzcyBjM3t9YzMuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGMzKX0sYzMuybVkaXI9aG8oe3R5cGU6YzMsc2VsZWN0b3JzOltbIm1hdC10YWJsZSIsInJlY3ljbGVSb3dzIiwiIl0sWyJ0YWJsZSIsIm1hdC10YWJsZSIsIiIsInJlY3ljbGVSb3dzIiwiIl1dLGZlYXR1cmVzOltqaChbe3Byb3ZpZGU6V0wsdXNlQ2xhc3M6Vkx9XSldfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihjMyxbe3R5cGU6a18sYXJnczpbe3NlbGVjdG9yOiJtYXQtdGFibGVbcmVjeWNsZVJvd3NdLCB0YWJsZVttYXQtdGFibGVdW3JlY3ljbGVSb3dzXSIscHJvdmlkZXJzOlt7cHJvdmlkZTpXTCx1c2VDbGFzczpWTH1dfV19XSxudWxsLG51bGwpO2NsYXNzIGQzIGV4dGVuZHMgZTN7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMuc3RpY2t5Q3NzQ2xhc3M9Im1hdC10YWJsZS1zdGlja3kiLHRoaXMubmVlZHNQb3NpdGlvblN0aWNreU9uRWxlbWVudD0hMX19ZDMuybVmYWM9KGZ1bmN0aW9uKCl7bGV0IHQ7cmV0dXJuIGZ1bmN0aW9uIGUobil7cmV0dXJuKHR8fCh0PVVhKGQzKSkpKG58fGQzKX19KSgpLGQzLsm1Y21wPXNvKHt0eXBlOmQzLHNlbGVjdG9yczpbWyJtYXQtdGFibGUiXSxbInRhYmxlIiwibWF0LXRhYmxlIiwiIl1dLGhvc3RBdHRyczpbMSwibWF0LXRhYmxlIl0saG9zdFZhcnM6Mixob3N0QmluZGluZ3M6ZnVuY3Rpb24gdChlLG4pezImZSYmY3UoIm1hdC10YWJsZS1maXhlZC1sYXlvdXQiLG4uZml4ZWRMYXlvdXQpfSxleHBvcnRBczpbIm1hdFRhYmxlIl0sZmVhdHVyZXM6W2poKFt7cHJvdmlkZTpXTCx1c2VDbGFzczpCTH0se3Byb3ZpZGU6ZTMsdXNlRXhpc3Rpbmc6ZDN9LHtwcm92aWRlOl8xLHVzZUV4aXN0aW5nOmQzfSx7cHJvdmlkZTpFMSx1c2VDbGFzczpBMX0se3Byb3ZpZGU6WjEsdXNlVmFsdWU6bnVsbH1dKSxRcF0sbmdDb250ZW50U2VsZWN0b3JzOlsiY2FwdGlvbiIsImNvbGdyb3VwLCBjb2wiXSxkZWNsczo2LHZhcnM6MCxjb25zdHM6W1siaGVhZGVyUm93T3V0bGV0IiwiIl0sWyJyb3dPdXRsZXQiLCIiXSxbIm5vRGF0YVJvd091dGxldCIsIiJdLFsiZm9vdGVyUm93T3V0bGV0IiwiIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihIZihyMyksRmYoMCksRmYoMSwxKSxQZigyLDApLFBmKDMsMSksUGYoNCwyKSxQZig1LDMpKX0sZGlyZWN0aXZlczpbSjEsSzEsJDEsUTFdLHN0eWxlczpbJ21hdC10YWJsZXtkaXNwbGF5OmJsb2NrfW1hdC1oZWFkZXItcm93e21pbi1oZWlnaHQ6NTZweH1tYXQtcm93LG1hdC1mb290ZXItcm93e21pbi1oZWlnaHQ6NDhweH1tYXQtcm93LG1hdC1oZWFkZXItcm93LG1hdC1mb290ZXItcm93e2Rpc3BsYXk6ZmxleDtib3JkZXItd2lkdGg6MDtib3JkZXItYm90dG9tLXdpZHRoOjFweDtib3JkZXItc3R5bGU6c29saWQ7YWxpZ24taXRlbXM6Y2VudGVyO2JveC1zaXppbmc6Ym9yZGVyLWJveH1tYXQtcm93OjphZnRlcixtYXQtaGVhZGVyLXJvdzo6YWZ0ZXIsbWF0LWZvb3Rlci1yb3c6OmFmdGVye2Rpc3BsYXk6aW5saW5lLWJsb2NrO21pbi1oZWlnaHQ6aW5oZXJpdDtjb250ZW50OiIifW1hdC1jZWxsOmZpcnN0LW9mLXR5cGUsbWF0LWhlYWRlci1jZWxsOmZpcnN0LW9mLXR5cGUsbWF0LWZvb3Rlci1jZWxsOmZpcnN0LW9mLXR5cGV7cGFkZGluZy1sZWZ0OjI0cHh9W2Rpcj1ydGxdIG1hdC1jZWxsOmZpcnN0LW9mLXR5cGU6bm90KDpvbmx5LW9mLXR5cGUpLFtkaXI9cnRsXSBtYXQtaGVhZGVyLWNlbGw6Zmlyc3Qtb2YtdHlwZTpub3QoOm9ubHktb2YtdHlwZSksW2Rpcj1ydGxdIG1hdC1mb290ZXItY2VsbDpmaXJzdC1vZi10eXBlOm5vdCg6b25seS1vZi10eXBlKXtwYWRkaW5nLWxlZnQ6MDtwYWRkaW5nLXJpZ2h0OjI0cHh9bWF0LWNlbGw6bGFzdC1vZi10eXBlLG1hdC1oZWFkZXItY2VsbDpsYXN0LW9mLXR5cGUsbWF0LWZvb3Rlci1jZWxsOmxhc3Qtb2YtdHlwZXtwYWRkaW5nLXJpZ2h0OjI0cHh9W2Rpcj1ydGxdIG1hdC1jZWxsOmxhc3Qtb2YtdHlwZTpub3QoOm9ubHktb2YtdHlwZSksW2Rpcj1ydGxdIG1hdC1oZWFkZXItY2VsbDpsYXN0LW9mLXR5cGU6bm90KDpvbmx5LW9mLXR5cGUpLFtkaXI9cnRsXSBtYXQtZm9vdGVyLWNlbGw6bGFzdC1vZi10eXBlOm5vdCg6b25seS1vZi10eXBlKXtwYWRkaW5nLXJpZ2h0OjA7cGFkZGluZy1sZWZ0OjI0cHh9bWF0LWNlbGwsbWF0LWhlYWRlci1jZWxsLG1hdC1mb290ZXItY2VsbHtmbGV4OjE7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtvdmVyZmxvdzpoaWRkZW47d29yZC13cmFwOmJyZWFrLXdvcmQ7bWluLWhlaWdodDppbmhlcml0fXRhYmxlLm1hdC10YWJsZXtib3JkZXItc3BhY2luZzowfXRyLm1hdC1oZWFkZXItcm93e2hlaWdodDo1NnB4fXRyLm1hdC1yb3csdHIubWF0LWZvb3Rlci1yb3d7aGVpZ2h0OjQ4cHh9dGgubWF0LWhlYWRlci1jZWxse3RleHQtYWxpZ246bGVmdH1bZGlyPXJ0bF0gdGgubWF0LWhlYWRlci1jZWxse3RleHQtYWxpZ246cmlnaHR9dGgubWF0LWhlYWRlci1jZWxsLHRkLm1hdC1jZWxsLHRkLm1hdC1mb290ZXItY2VsbHtwYWRkaW5nOjA7Ym9yZGVyLWJvdHRvbS13aWR0aDoxcHg7Ym9yZGVyLWJvdHRvbS1zdHlsZTpzb2xpZH10aC5tYXQtaGVhZGVyLWNlbGw6Zmlyc3Qtb2YtdHlwZSx0ZC5tYXQtY2VsbDpmaXJzdC1vZi10eXBlLHRkLm1hdC1mb290ZXItY2VsbDpmaXJzdC1vZi10eXBle3BhZGRpbmctbGVmdDoyNHB4fVtkaXI9cnRsXSB0aC5tYXQtaGVhZGVyLWNlbGw6Zmlyc3Qtb2YtdHlwZTpub3QoOm9ubHktb2YtdHlwZSksW2Rpcj1ydGxdIHRkLm1hdC1jZWxsOmZpcnN0LW9mLXR5cGU6bm90KDpvbmx5LW9mLXR5cGUpLFtkaXI9cnRsXSB0ZC5tYXQtZm9vdGVyLWNlbGw6Zmlyc3Qtb2YtdHlwZTpub3QoOm9ubHktb2YtdHlwZSl7cGFkZGluZy1sZWZ0OjA7cGFkZGluZy1yaWdodDoyNHB4fXRoLm1hdC1oZWFkZXItY2VsbDpsYXN0LW9mLXR5cGUsdGQubWF0LWNlbGw6bGFzdC1vZi10eXBlLHRkLm1hdC1mb290ZXItY2VsbDpsYXN0LW9mLXR5cGV7cGFkZGluZy1yaWdodDoyNHB4fVtkaXI9cnRsXSB0aC5tYXQtaGVhZGVyLWNlbGw6bGFzdC1vZi10eXBlOm5vdCg6b25seS1vZi10eXBlKSxbZGlyPXJ0bF0gdGQubWF0LWNlbGw6bGFzdC1vZi10eXBlOm5vdCg6b25seS1vZi10eXBlKSxbZGlyPXJ0bF0gdGQubWF0LWZvb3Rlci1jZWxsOmxhc3Qtb2YtdHlwZTpub3QoOm9ubHktb2YtdHlwZSl7cGFkZGluZy1yaWdodDowO3BhZGRpbmctbGVmdDoyNHB4fS5tYXQtdGFibGUtc3RpY2t5e3Bvc2l0aW9uOi13ZWJraXQtc3RpY2t5ICFpbXBvcnRhbnQ7cG9zaXRpb246c3RpY2t5ICFpbXBvcnRhbnR9Lm1hdC10YWJsZS1maXhlZC1sYXlvdXR7dGFibGUtbGF5b3V0OmZpeGVkfVxuJ10sZW5jYXBzdWxhdGlvbjoyfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihkMyxbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJtYXQtdGFibGUsIHRhYmxlW21hdC10YWJsZV0iLGV4cG9ydEFzOiJtYXRUYWJsZSIsdGVtcGxhdGU6dDMsaG9zdDp7Y2xhc3M6Im1hdC10YWJsZSIsIltjbGFzcy5tYXQtdGFibGUtZml4ZWQtbGF5b3V0XSI6ImZpeGVkTGF5b3V0In0scHJvdmlkZXJzOlt7cHJvdmlkZTpXTCx1c2VDbGFzczpCTH0se3Byb3ZpZGU6ZTMsdXNlRXhpc3Rpbmc6ZDN9LHtwcm92aWRlOl8xLHVzZUV4aXN0aW5nOmQzfSx7cHJvdmlkZTpFMSx1c2VDbGFzczpBMX0se3Byb3ZpZGU6WjEsdXNlVmFsdWU6bnVsbH1dLGVuY2Fwc3VsYXRpb246V24uTm9uZSxjaGFuZ2VEZXRlY3Rpb246am4uRGVmYXVsdCxzdHlsZXM6WydtYXQtdGFibGV7ZGlzcGxheTpibG9ja31tYXQtaGVhZGVyLXJvd3ttaW4taGVpZ2h0OjU2cHh9bWF0LXJvdyxtYXQtZm9vdGVyLXJvd3ttaW4taGVpZ2h0OjQ4cHh9bWF0LXJvdyxtYXQtaGVhZGVyLXJvdyxtYXQtZm9vdGVyLXJvd3tkaXNwbGF5OmZsZXg7Ym9yZGVyLXdpZHRoOjA7Ym9yZGVyLWJvdHRvbS13aWR0aDoxcHg7Ym9yZGVyLXN0eWxlOnNvbGlkO2FsaWduLWl0ZW1zOmNlbnRlcjtib3gtc2l6aW5nOmJvcmRlci1ib3h9bWF0LXJvdzo6YWZ0ZXIsbWF0LWhlYWRlci1yb3c6OmFmdGVyLG1hdC1mb290ZXItcm93OjphZnRlcntkaXNwbGF5OmlubGluZS1ibG9jazttaW4taGVpZ2h0OmluaGVyaXQ7Y29udGVudDoiIn1tYXQtY2VsbDpmaXJzdC1vZi10eXBlLG1hdC1oZWFkZXItY2VsbDpmaXJzdC1vZi10eXBlLG1hdC1mb290ZXItY2VsbDpmaXJzdC1vZi10eXBle3BhZGRpbmctbGVmdDoyNHB4fVtkaXI9cnRsXSBtYXQtY2VsbDpmaXJzdC1vZi10eXBlOm5vdCg6b25seS1vZi10eXBlKSxbZGlyPXJ0bF0gbWF0LWhlYWRlci1jZWxsOmZpcnN0LW9mLXR5cGU6bm90KDpvbmx5LW9mLXR5cGUpLFtkaXI9cnRsXSBtYXQtZm9vdGVyLWNlbGw6Zmlyc3Qtb2YtdHlwZTpub3QoOm9ubHktb2YtdHlwZSl7cGFkZGluZy1sZWZ0OjA7cGFkZGluZy1yaWdodDoyNHB4fW1hdC1jZWxsOmxhc3Qtb2YtdHlwZSxtYXQtaGVhZGVyLWNlbGw6bGFzdC1vZi10eXBlLG1hdC1mb290ZXItY2VsbDpsYXN0LW9mLXR5cGV7cGFkZGluZy1yaWdodDoyNHB4fVtkaXI9cnRsXSBtYXQtY2VsbDpsYXN0LW9mLXR5cGU6bm90KDpvbmx5LW9mLXR5cGUpLFtkaXI9cnRsXSBtYXQtaGVhZGVyLWNlbGw6bGFzdC1vZi10eXBlOm5vdCg6b25seS1vZi10eXBlKSxbZGlyPXJ0bF0gbWF0LWZvb3Rlci1jZWxsOmxhc3Qtb2YtdHlwZTpub3QoOm9ubHktb2YtdHlwZSl7cGFkZGluZy1yaWdodDowO3BhZGRpbmctbGVmdDoyNHB4fW1hdC1jZWxsLG1hdC1oZWFkZXItY2VsbCxtYXQtZm9vdGVyLWNlbGx7ZmxleDoxO2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7b3ZlcmZsb3c6aGlkZGVuO3dvcmQtd3JhcDpicmVhay13b3JkO21pbi1oZWlnaHQ6aW5oZXJpdH10YWJsZS5tYXQtdGFibGV7Ym9yZGVyLXNwYWNpbmc6MH10ci5tYXQtaGVhZGVyLXJvd3toZWlnaHQ6NTZweH10ci5tYXQtcm93LHRyLm1hdC1mb290ZXItcm93e2hlaWdodDo0OHB4fXRoLm1hdC1oZWFkZXItY2VsbHt0ZXh0LWFsaWduOmxlZnR9W2Rpcj1ydGxdIHRoLm1hdC1oZWFkZXItY2VsbHt0ZXh0LWFsaWduOnJpZ2h0fXRoLm1hdC1oZWFkZXItY2VsbCx0ZC5tYXQtY2VsbCx0ZC5tYXQtZm9vdGVyLWNlbGx7cGFkZGluZzowO2JvcmRlci1ib3R0b20td2lkdGg6MXB4O2JvcmRlci1ib3R0b20tc3R5bGU6c29saWR9dGgubWF0LWhlYWRlci1jZWxsOmZpcnN0LW9mLXR5cGUsdGQubWF0LWNlbGw6Zmlyc3Qtb2YtdHlwZSx0ZC5tYXQtZm9vdGVyLWNlbGw6Zmlyc3Qtb2YtdHlwZXtwYWRkaW5nLWxlZnQ6MjRweH1bZGlyPXJ0bF0gdGgubWF0LWhlYWRlci1jZWxsOmZpcnN0LW9mLXR5cGU6bm90KDpvbmx5LW9mLXR5cGUpLFtkaXI9cnRsXSB0ZC5tYXQtY2VsbDpmaXJzdC1vZi10eXBlOm5vdCg6b25seS1vZi10eXBlKSxbZGlyPXJ0bF0gdGQubWF0LWZvb3Rlci1jZWxsOmZpcnN0LW9mLXR5cGU6bm90KDpvbmx5LW9mLXR5cGUpe3BhZGRpbmctbGVmdDowO3BhZGRpbmctcmlnaHQ6MjRweH10aC5tYXQtaGVhZGVyLWNlbGw6bGFzdC1vZi10eXBlLHRkLm1hdC1jZWxsOmxhc3Qtb2YtdHlwZSx0ZC5tYXQtZm9vdGVyLWNlbGw6bGFzdC1vZi10eXBle3BhZGRpbmctcmlnaHQ6MjRweH1bZGlyPXJ0bF0gdGgubWF0LWhlYWRlci1jZWxsOmxhc3Qtb2YtdHlwZTpub3QoOm9ubHktb2YtdHlwZSksW2Rpcj1ydGxdIHRkLm1hdC1jZWxsOmxhc3Qtb2YtdHlwZTpub3QoOm9ubHktb2YtdHlwZSksW2Rpcj1ydGxdIHRkLm1hdC1mb290ZXItY2VsbDpsYXN0LW9mLXR5cGU6bm90KDpvbmx5LW9mLXR5cGUpe3BhZGRpbmctcmlnaHQ6MDtwYWRkaW5nLWxlZnQ6MjRweH0ubWF0LXRhYmxlLXN0aWNreXtwb3NpdGlvbjotd2Via2l0LXN0aWNreSAhaW1wb3J0YW50O3Bvc2l0aW9uOnN0aWNreSAhaW1wb3J0YW50fS5tYXQtdGFibGUtZml4ZWQtbGF5b3V0e3RhYmxlLWxheW91dDpmaXhlZH1cbiddfV19XSxudWxsLG51bGwpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3MgcDMgZXh0ZW5kcyBNMXt9cDMuybVmYWM9KGZ1bmN0aW9uKCl7bGV0IHQ7cmV0dXJuIGZ1bmN0aW9uIGUobil7cmV0dXJuKHR8fCh0PVVhKHAzKSkpKG58fHAzKX19KSgpLHAzLsm1ZGlyPWhvKHt0eXBlOnAzLHNlbGVjdG9yczpbWyIiLCJtYXRDZWxsRGVmIiwiIl1dLGZlYXR1cmVzOltqaChbe3Byb3ZpZGU6TTEsdXNlRXhpc3Rpbmc6cDN9XSksUXBdfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihwMyxbe3R5cGU6a18sYXJnczpbe3NlbGVjdG9yOiJbbWF0Q2VsbERlZl0iLHByb3ZpZGVyczpbe3Byb3ZpZGU6TTEsdXNlRXhpc3Rpbmc6cDN9XX1dfV0sbnVsbCxudWxsKTtjbGFzcyBtMyBleHRlbmRzIHYxe31tMy7JtWZhYz0oZnVuY3Rpb24oKXtsZXQgdDtyZXR1cm4gZnVuY3Rpb24gZShuKXtyZXR1cm4odHx8KHQ9VWEobTMpKSkobnx8bTMpfX0pKCksbTMuybVkaXI9aG8oe3R5cGU6bTMsc2VsZWN0b3JzOltbIiIsIm1hdEhlYWRlckNlbGxEZWYiLCIiXV0sZmVhdHVyZXM6W2poKFt7cHJvdmlkZTp2MSx1c2VFeGlzdGluZzptM31dKSxRcF19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKG0zLFt7dHlwZTprXyxhcmdzOlt7c2VsZWN0b3I6IlttYXRIZWFkZXJDZWxsRGVmXSIscHJvdmlkZXJzOlt7cHJvdmlkZTp2MSx1c2VFeGlzdGluZzptM31dfV19XSxudWxsLG51bGwpO2NsYXNzIGYzIGV4dGVuZHMgeDF7fWYzLsm1ZmFjPShmdW5jdGlvbigpe2xldCB0O3JldHVybiBmdW5jdGlvbiBlKG4pe3JldHVybih0fHwodD1VYShmMykpKShufHxmMyl9fSkoKSxmMy7JtWRpcj1obyh7dHlwZTpmMyxzZWxlY3RvcnM6W1siIiwibWF0Rm9vdGVyQ2VsbERlZiIsIiJdXSxmZWF0dXJlczpbamgoW3twcm92aWRlOngxLHVzZUV4aXN0aW5nOmYzfV0pLFFwXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoZjMsW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3RvcjoiW21hdEZvb3RlckNlbGxEZWZdIixwcm92aWRlcnM6W3twcm92aWRlOngxLHVzZUV4aXN0aW5nOmYzfV19XX1dLG51bGwsbnVsbCk7Y2xhc3MgdTMgZXh0ZW5kcyBQMXtnZXQgbmFtZSgpe3JldHVybiB0aGlzLl9uYW1lfXNldCBuYW1lKHQpe3RoaXMuX3NldE5hbWVJbnB1dCh0KX1fdXBkYXRlQ29sdW1uQ3NzQ2xhc3NOYW1lKCl7c3VwZXIuX3VwZGF0ZUNvbHVtbkNzc0NsYXNzTmFtZSgpLHRoaXMuX2NvbHVtbkNzc0NsYXNzTmFtZS5wdXNoKGBtYXQtY29sdW1uLSR7dGhpcy5jc3NDbGFzc0ZyaWVuZGx5TmFtZX1gKX19dTMuybVmYWM9KGZ1bmN0aW9uKCl7bGV0IHQ7cmV0dXJuIGZ1bmN0aW9uIGUobil7cmV0dXJuKHR8fCh0PVVhKHUzKSkpKG58fHUzKX19KSgpLHUzLsm1ZGlyPWhvKHt0eXBlOnUzLHNlbGVjdG9yczpbWyIiLCJtYXRDb2x1bW5EZWYiLCIiXV0saW5wdXRzOntzdGlja3k6InN0aWNreSIsbmFtZTpbIm1hdENvbHVtbkRlZiIsIm5hbWUiXX0sZmVhdHVyZXM6W2poKFt7cHJvdmlkZTpQMSx1c2VFeGlzdGluZzp1M30se3Byb3ZpZGU6Ik1BVF9TT1JUX0hFQURFUl9DT0xVTU5fREVGIix1c2VFeGlzdGluZzp1M31dKSxRcF19KSx1My5wcm9wRGVjb3JhdG9ycz17bmFtZTpbe3R5cGU6Ul8sYXJnczpbIm1hdENvbHVtbkRlZiJdfV19LCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIodTMsW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3RvcjoiW21hdENvbHVtbkRlZl0iLGlucHV0czpbInN0aWNreSJdLHByb3ZpZGVyczpbe3Byb3ZpZGU6UDEsdXNlRXhpc3Rpbmc6dTN9LHtwcm92aWRlOiJNQVRfU09SVF9IRUFERVJfQ09MVU1OX0RFRiIsdXNlRXhpc3Rpbmc6dTN9XX1dfV0sbnVsbCx7bmFtZTpbe3R5cGU6Ul8sYXJnczpbIm1hdENvbHVtbkRlZiJdfV19KTtjbGFzcyBnMyBleHRlbmRzIGsxe31nMy7JtWZhYz0oZnVuY3Rpb24oKXtsZXQgdDtyZXR1cm4gZnVuY3Rpb24gZShuKXtyZXR1cm4odHx8KHQ9VWEoZzMpKSkobnx8ZzMpfX0pKCksZzMuybVkaXI9aG8oe3R5cGU6ZzMsc2VsZWN0b3JzOltbIm1hdC1oZWFkZXItY2VsbCJdLFsidGgiLCJtYXQtaGVhZGVyLWNlbGwiLCIiXV0saG9zdEF0dHJzOlsicm9sZSIsImNvbHVtbmhlYWRlciIsMSwibWF0LWhlYWRlci1jZWxsIl0sZmVhdHVyZXM6W1FwXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoZzMsW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3RvcjoibWF0LWhlYWRlci1jZWxsLCB0aFttYXQtaGVhZGVyLWNlbGxdIixob3N0OntjbGFzczoibWF0LWhlYWRlci1jZWxsIixyb2xlOiJjb2x1bW5oZWFkZXIifX1dfV0sbnVsbCxudWxsKTtjbGFzcyBoMyBleHRlbmRzIFMxe31oMy7JtWZhYz0oZnVuY3Rpb24oKXtsZXQgdDtyZXR1cm4gZnVuY3Rpb24gZShuKXtyZXR1cm4odHx8KHQ9VWEoaDMpKSkobnx8aDMpfX0pKCksaDMuybVkaXI9aG8oe3R5cGU6aDMsc2VsZWN0b3JzOltbIm1hdC1mb290ZXItY2VsbCJdLFsidGQiLCJtYXQtZm9vdGVyLWNlbGwiLCIiXV0saG9zdEF0dHJzOlsicm9sZSIsImdyaWRjZWxsIiwxLCJtYXQtZm9vdGVyLWNlbGwiXSxmZWF0dXJlczpbUXBdfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihoMyxbe3R5cGU6a18sYXJnczpbe3NlbGVjdG9yOiJtYXQtZm9vdGVyLWNlbGwsIHRkW21hdC1mb290ZXItY2VsbF0iLGhvc3Q6e2NsYXNzOiJtYXQtZm9vdGVyLWNlbGwiLHJvbGU6ImdyaWRjZWxsIn19XX1dLG51bGwsbnVsbCk7Y2xhc3MgYjMgZXh0ZW5kcyBEMXt9YjMuybVmYWM9KGZ1bmN0aW9uKCl7bGV0IHQ7cmV0dXJuIGZ1bmN0aW9uIGUobil7cmV0dXJuKHR8fCh0PVVhKGIzKSkpKG58fGIzKX19KSgpLGIzLsm1ZGlyPWhvKHt0eXBlOmIzLHNlbGVjdG9yczpbWyJtYXQtY2VsbCJdLFsidGQiLCJtYXQtY2VsbCIsIiJdXSxob3N0QXR0cnM6WyJyb2xlIiwiZ3JpZGNlbGwiLDEsIm1hdC1jZWxsIl0sZmVhdHVyZXM6W1FwXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoYjMsW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3RvcjoibWF0LWNlbGwsIHRkW21hdC1jZWxsXSIsaG9zdDp7Y2xhc3M6Im1hdC1jZWxsIixyb2xlOiJncmlkY2VsbCJ9fV19XSxudWxsLG51bGwpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3MgeTMgZXh0ZW5kcyBJMXt9eTMuybVmYWM9KGZ1bmN0aW9uKCl7bGV0IHQ7cmV0dXJuIGZ1bmN0aW9uIGUobil7cmV0dXJuKHR8fCh0PVVhKHkzKSkpKG58fHkzKX19KSgpLHkzLsm1ZGlyPWhvKHt0eXBlOnkzLHNlbGVjdG9yczpbWyIiLCJtYXRIZWFkZXJSb3dEZWYiLCIiXV0saW5wdXRzOntjb2x1bW5zOlsibWF0SGVhZGVyUm93RGVmIiwiY29sdW1ucyJdLHN0aWNreTpbIm1hdEhlYWRlclJvd0RlZlN0aWNreSIsInN0aWNreSJdfSxmZWF0dXJlczpbamgoW3twcm92aWRlOkkxLHVzZUV4aXN0aW5nOnkzfV0pLFFwXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoeTMsW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3RvcjoiW21hdEhlYWRlclJvd0RlZl0iLHByb3ZpZGVyczpbe3Byb3ZpZGU6STEsdXNlRXhpc3Rpbmc6eTN9XSxpbnB1dHM6WyJjb2x1bW5zOiBtYXRIZWFkZXJSb3dEZWYiLCJzdGlja3k6IG1hdEhlYWRlclJvd0RlZlN0aWNreSJdfV19XSxudWxsLG51bGwpO2NsYXNzIF8zIGV4dGVuZHMgRjF7fV8zLsm1ZmFjPShmdW5jdGlvbigpe2xldCB0O3JldHVybiBmdW5jdGlvbiBlKG4pe3JldHVybih0fHwodD1VYShfMykpKShufHxfMyl9fSkoKSxfMy7JtWRpcj1obyh7dHlwZTpfMyxzZWxlY3RvcnM6W1siIiwibWF0Rm9vdGVyUm93RGVmIiwiIl1dLGlucHV0czp7Y29sdW1uczpbIm1hdEZvb3RlclJvd0RlZiIsImNvbHVtbnMiXSxzdGlja3k6WyJtYXRGb290ZXJSb3dEZWZTdGlja3kiLCJzdGlja3kiXX0sZmVhdHVyZXM6W2poKFt7cHJvdmlkZTpGMSx1c2VFeGlzdGluZzpfM31dKSxRcF19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKF8zLFt7dHlwZTprXyxhcmdzOlt7c2VsZWN0b3I6IlttYXRGb290ZXJSb3dEZWZdIixwcm92aWRlcnM6W3twcm92aWRlOkYxLHVzZUV4aXN0aW5nOl8zfV0saW5wdXRzOlsiY29sdW1uczogbWF0Rm9vdGVyUm93RGVmIiwic3RpY2t5OiBtYXRGb290ZXJSb3dEZWZTdGlja3kiXX1dfV0sbnVsbCxudWxsKTtjbGFzcyBDMyBleHRlbmRzIEwxe31DMy7JtWZhYz0oZnVuY3Rpb24oKXtsZXQgdDtyZXR1cm4gZnVuY3Rpb24gZShuKXtyZXR1cm4odHx8KHQ9VWEoQzMpKSkobnx8QzMpfX0pKCksQzMuybVkaXI9aG8oe3R5cGU6QzMsc2VsZWN0b3JzOltbIiIsIm1hdFJvd0RlZiIsIiJdXSxpbnB1dHM6e2NvbHVtbnM6WyJtYXRSb3dEZWZDb2x1bW5zIiwiY29sdW1ucyJdLHdoZW46WyJtYXRSb3dEZWZXaGVuIiwid2hlbiJdfSxmZWF0dXJlczpbamgoW3twcm92aWRlOkwxLHVzZUV4aXN0aW5nOkMzfV0pLFFwXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoQzMsW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3RvcjoiW21hdFJvd0RlZl0iLHByb3ZpZGVyczpbe3Byb3ZpZGU6TDEsdXNlRXhpc3Rpbmc6QzN9XSxpbnB1dHM6WyJjb2x1bW5zOiBtYXRSb3dEZWZDb2x1bW5zIiwid2hlbjogbWF0Um93RGVmV2hlbiJdfV19XSxudWxsLG51bGwpO2NsYXNzIE0zIGV4dGVuZHMgVjF7fU0zLsm1ZmFjPShmdW5jdGlvbigpe2xldCB0O3JldHVybiBmdW5jdGlvbiBlKG4pe3JldHVybih0fHwodD1VYShNMykpKShufHxNMyl9fSkoKSxNMy7JtWNtcD1zbyh7dHlwZTpNMyxzZWxlY3RvcnM6W1sibWF0LWhlYWRlci1yb3ciXSxbInRyIiwibWF0LWhlYWRlci1yb3ciLCIiXV0saG9zdEF0dHJzOlsicm9sZSIsInJvdyIsMSwibWF0LWhlYWRlci1yb3ciXSxleHBvcnRBczpbIm1hdEhlYWRlclJvdyJdLGZlYXR1cmVzOltqaChbe3Byb3ZpZGU6VjEsdXNlRXhpc3Rpbmc6TTN9XSksUXBdLGRlY2xzOjEsdmFyczowLGNvbnN0czpbWyJjZGtDZWxsT3V0bGV0IiwiIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJlBmKDAsMCl9LGRpcmVjdGl2ZXM6W0IxXSxlbmNhcHN1bGF0aW9uOjJ9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKE0zLFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6Im1hdC1oZWFkZXItcm93LCB0clttYXQtaGVhZGVyLXJvd10iLHRlbXBsYXRlOlQxLGhvc3Q6e2NsYXNzOiJtYXQtaGVhZGVyLXJvdyIscm9sZToicm93In0sY2hhbmdlRGV0ZWN0aW9uOmpuLkRlZmF1bHQsZW5jYXBzdWxhdGlvbjpXbi5Ob25lLGV4cG9ydEFzOiJtYXRIZWFkZXJSb3ciLHByb3ZpZGVyczpbe3Byb3ZpZGU6VjEsdXNlRXhpc3Rpbmc6TTN9XX1dfV0sbnVsbCxudWxsKTtjbGFzcyB2MyBleHRlbmRzIGoxe312My7JtWZhYz0oZnVuY3Rpb24oKXtsZXQgdDtyZXR1cm4gZnVuY3Rpb24gZShuKXtyZXR1cm4odHx8KHQ9VWEodjMpKSkobnx8djMpfX0pKCksdjMuybVjbXA9c28oe3R5cGU6djMsc2VsZWN0b3JzOltbIm1hdC1mb290ZXItcm93Il0sWyJ0ciIsIm1hdC1mb290ZXItcm93IiwiIl1dLGhvc3RBdHRyczpbInJvbGUiLCJyb3ciLDEsIm1hdC1mb290ZXItcm93Il0sZXhwb3J0QXM6WyJtYXRGb290ZXJSb3ciXSxmZWF0dXJlczpbamgoW3twcm92aWRlOmoxLHVzZUV4aXN0aW5nOnYzfV0pLFFwXSxkZWNsczoxLHZhcnM6MCxjb25zdHM6W1siY2RrQ2VsbE91dGxldCIsIiJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiZQZigwLDApfSxkaXJlY3RpdmVzOltCMV0sZW5jYXBzdWxhdGlvbjoyfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYih2Myxbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJtYXQtZm9vdGVyLXJvdywgdHJbbWF0LWZvb3Rlci1yb3ddIix0ZW1wbGF0ZTpUMSxob3N0OntjbGFzczoibWF0LWZvb3Rlci1yb3ciLHJvbGU6InJvdyJ9LGNoYW5nZURldGVjdGlvbjpqbi5EZWZhdWx0LGVuY2Fwc3VsYXRpb246V24uTm9uZSxleHBvcnRBczoibWF0Rm9vdGVyUm93Iixwcm92aWRlcnM6W3twcm92aWRlOmoxLHVzZUV4aXN0aW5nOnYzfV19XX1dLG51bGwsbnVsbCk7Y2xhc3MgeDMgZXh0ZW5kcyBVMXt9eDMuybVmYWM9KGZ1bmN0aW9uKCl7bGV0IHQ7cmV0dXJuIGZ1bmN0aW9uIGUobil7cmV0dXJuKHR8fCh0PVVhKHgzKSkpKG58fHgzKX19KSgpLHgzLsm1Y21wPXNvKHt0eXBlOngzLHNlbGVjdG9yczpbWyJtYXQtcm93Il0sWyJ0ciIsIm1hdC1yb3ciLCIiXV0saG9zdEF0dHJzOlsicm9sZSIsInJvdyIsMSwibWF0LXJvdyJdLGV4cG9ydEFzOlsibWF0Um93Il0sZmVhdHVyZXM6W2poKFt7cHJvdmlkZTpVMSx1c2VFeGlzdGluZzp4M31dKSxRcF0sZGVjbHM6MSx2YXJzOjAsY29uc3RzOltbImNka0NlbGxPdXRsZXQiLCIiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmUGYoMCwwKX0sZGlyZWN0aXZlczpbQjFdLGVuY2Fwc3VsYXRpb246Mn0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoeDMsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoibWF0LXJvdywgdHJbbWF0LXJvd10iLHRlbXBsYXRlOlQxLGhvc3Q6e2NsYXNzOiJtYXQtcm93Iixyb2xlOiJyb3cifSxjaGFuZ2VEZXRlY3Rpb246am4uRGVmYXVsdCxlbmNhcHN1bGF0aW9uOlduLk5vbmUsZXhwb3J0QXM6Im1hdFJvdyIscHJvdmlkZXJzOlt7cHJvdmlkZTpVMSx1c2VFeGlzdGluZzp4M31dfV19XSxudWxsLG51bGwpO2NsYXNzIE8zIGV4dGVuZHMgVzF7fU8zLsm1ZmFjPShmdW5jdGlvbigpe2xldCB0O3JldHVybiBmdW5jdGlvbiBlKG4pe3JldHVybih0fHwodD1VYShPMykpKShufHxPMyl9fSkoKSxPMy7JtWRpcj1obyh7dHlwZTpPMyxzZWxlY3RvcnM6W1sibmctdGVtcGxhdGUiLCJtYXROb0RhdGFSb3ciLCIiXV0sZmVhdHVyZXM6W2poKFt7cHJvdmlkZTpXMSx1c2VFeGlzdGluZzpPM31dKSxRcF19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKE8zLFt7dHlwZTprXyxhcmdzOlt7c2VsZWN0b3I6Im5nLXRlbXBsYXRlW21hdE5vRGF0YVJvd10iLHByb3ZpZGVyczpbe3Byb3ZpZGU6VzEsdXNlRXhpc3Rpbmc6TzN9XX1dfV0sbnVsbCxudWxsKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNsYXNzIFAzIGV4dGVuZHMgbzN7fVAzLsm1ZmFjPShmdW5jdGlvbigpe2xldCB0O3JldHVybiBmdW5jdGlvbiBlKG4pe3JldHVybih0fHwodD1VYShQMykpKShufHxQMyl9fSkoKSxQMy7JtWNtcD1zbyh7dHlwZTpQMyxzZWxlY3RvcnM6W1sibWF0LXRleHQtY29sdW1uIl1dLGZlYXR1cmVzOltRcF0sZGVjbHM6Myx2YXJzOjAsY29uc3RzOltbIm1hdENvbHVtbkRlZiIsIiJdLFsibWF0LWhlYWRlci1jZWxsIiwiIiwzLCJ0ZXh0LWFsaWduIiw0LCJtYXRIZWFkZXJDZWxsRGVmIl0sWyJtYXQtY2VsbCIsIiIsMywidGV4dC1hbGlnbiIsNCwibWF0Q2VsbERlZiJdLFsibWF0LWhlYWRlci1jZWxsIiwiIl0sWyJtYXQtY2VsbCIsIiJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoeGYoMCwwKSxIbSgxLHMzLDIsMywidGgiLDEpLEhtKDIsbDMsMiwzLCJ0ZCIsMiksT2YoKSl9LGRpcmVjdGl2ZXM6W3UzLG0zLHAzLGczLGIzXSxlbmNhcHN1bGF0aW9uOjJ9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKFAzLFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6Im1hdC10ZXh0LWNvbHVtbiIsdGVtcGxhdGU6J1xuICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPlxuICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZiBbc3R5bGUudGV4dC1hbGlnbl09Imp1c3RpZnkiPlxuICAgICAgICB7e2hlYWRlclRleHR9fVxuICAgICAgPC90aD5cbiAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj0ibGV0IGRhdGEiIFtzdHlsZS50ZXh0LWFsaWduXT0ianVzdGlmeSI+XG4gICAgICAgIHt7ZGF0YUFjY2Vzc29yKGRhdGEsIG5hbWUpfX1cbiAgICAgIDwvdGQ+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICcsZW5jYXBzdWxhdGlvbjpXbi5Ob25lLGNoYW5nZURldGVjdGlvbjpqbi5EZWZhdWx0fV19XSxudWxsLG51bGwpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY29uc3QgdzM9W2QzLGMzLG0zLHkzLHUzLHAzLEMzLGYzLF8zLGczLGIzLGgzLE0zLHgzLHYzLE8zLFAzXTtjbGFzcyBrM3t9azMuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGszKX0sazMuybVtb2Q9Zm8oe3R5cGU6azN9KSxrMy7JtWluaj1Ebih7aW1wb3J0czpbW2EzLE5GXSxORl19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKGszLFt7dHlwZTpMXyxhcmdzOlt7aW1wb3J0czpbYTMsTkZdLGV4cG9ydHM6W05GLHczXSxkZWNsYXJhdGlvbnM6dzN9XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZ1byhrMyx7ZGVjbGFyYXRpb25zOmZ1bmN0aW9uKCl7cmV0dXJuW2QzLGMzLG0zLHkzLHUzLHAzLEMzLGYzLF8zLGczLGIzLGgzLE0zLHgzLHYzLE8zLFAzXX0saW1wb3J0czpmdW5jdGlvbigpe3JldHVyblthMyxORl19LGV4cG9ydHM6ZnVuY3Rpb24oKXtyZXR1cm5bTkYsZDMsYzMsbTMseTMsdTMscDMsQzMsZjMsXzMsZzMsYjMsaDMsTTMseDMsdjMsTzMsUDNdfX0pO2NsYXNzIFMzIGV4dGVuZHMgSEx7Y29uc3RydWN0b3IodD1bXSl7c3VwZXIoKSx0aGlzLl9yZW5kZXJEYXRhPW5ldyBqKFtdKSx0aGlzLl9maWx0ZXI9bmV3IGooIiIpLHRoaXMuX2ludGVybmFsUGFnZUNoYW5nZXM9bmV3IEIsdGhpcy5fcmVuZGVyQ2hhbmdlc1N1YnNjcmlwdGlvbj1udWxsLHRoaXMuc29ydGluZ0RhdGFBY2Nlc3Nvcj0odCxlKT0+e2NvbnN0IG49dFtlXTtpZihvSChuKSl7Y29uc3QgdD1OdW1iZXIobik7cmV0dXJuIHQ8OTAwNzE5OTI1NDc0MDk5MT90Om59cmV0dXJuIG59LHRoaXMuc29ydERhdGE9KHQsZSk9Pntjb25zdCBuPWUuYWN0aXZlLG89ZS5kaXJlY3Rpb247cmV0dXJuIG4mJiIiIT1vP3Quc29ydCgoKHQsZSk9PntsZXQgaT10aGlzLnNvcnRpbmdEYXRhQWNjZXNzb3IodCxuKSxhPXRoaXMuc29ydGluZ0RhdGFBY2Nlc3NvcihlLG4pO2NvbnN0IHI9dHlwZW9mIGkscz10eXBlb2YgYTtyIT09cyYmKCJudW1iZXIiPT09ciYmKGkrPSIiKSwibnVtYmVyIj09PXMmJihhKz0iIikpO2xldCBsPTA7cmV0dXJuIG51bGwhPWkmJm51bGwhPWE/aT5hP2w9MTppPGEmJihsPS0xKTpudWxsIT1pP2w9MTpudWxsIT1hJiYobD0tMSksbCooImFzYyI9PW8/MTotMSl9KSk6dH0sdGhpcy5maWx0ZXJQcmVkaWNhdGU9KHQsZSk9Pntjb25zdCBuPU9iamVjdC5rZXlzKHQpLnJlZHVjZSgoKGUsbik9PmUrdFtuXSsi4pesIiksIiIpLnRvTG93ZXJDYXNlKCksbz1lLnRyaW0oKS50b0xvd2VyQ2FzZSgpO3JldHVybi0xIT1uLmluZGV4T2Yobyl9LHRoaXMuX2RhdGE9bmV3IGoodCksdGhpcy5fdXBkYXRlQ2hhbmdlU3Vic2NyaXB0aW9uKCl9Z2V0IGRhdGEoKXtyZXR1cm4gdGhpcy5fZGF0YS52YWx1ZX1zZXQgZGF0YSh0KXt0aGlzLl9kYXRhLm5leHQodCksdGhpcy5fcmVuZGVyQ2hhbmdlc1N1YnNjcmlwdGlvbnx8dGhpcy5fZmlsdGVyRGF0YSh0KX1nZXQgZmlsdGVyKCl7cmV0dXJuIHRoaXMuX2ZpbHRlci52YWx1ZX1zZXQgZmlsdGVyKHQpe3RoaXMuX2ZpbHRlci5uZXh0KHQpLHRoaXMuX3JlbmRlckNoYW5nZXNTdWJzY3JpcHRpb258fHRoaXMuX2ZpbHRlckRhdGEodGhpcy5kYXRhKX1nZXQgc29ydCgpe3JldHVybiB0aGlzLl9zb3J0fXNldCBzb3J0KHQpe3RoaXMuX3NvcnQ9dCx0aGlzLl91cGRhdGVDaGFuZ2VTdWJzY3JpcHRpb24oKX1nZXQgcGFnaW5hdG9yKCl7cmV0dXJuIHRoaXMuX3BhZ2luYXRvcn1zZXQgcGFnaW5hdG9yKHQpe3RoaXMuX3BhZ2luYXRvcj10LHRoaXMuX3VwZGF0ZUNoYW5nZVN1YnNjcmlwdGlvbigpfV91cGRhdGVDaGFuZ2VTdWJzY3JpcHRpb24oKXt2YXIgdDtjb25zdCBlPXRoaXMuX3NvcnQ/cGUodGhpcy5fc29ydC5zb3J0Q2hhbmdlLHRoaXMuX3NvcnQuaW5pdGlhbGl6ZWQpOnp0KG51bGwpLG49dGhpcy5fcGFnaW5hdG9yP3BlKHRoaXMuX3BhZ2luYXRvci5wYWdlLHRoaXMuX2ludGVybmFsUGFnZUNoYW5nZXMsdGhpcy5fcGFnaW5hdG9yLmluaXRpYWxpemVkKTp6dChudWxsKSxvPUt0KFt0aGlzLl9kYXRhLHRoaXMuX2ZpbHRlcl0pLnBpcGUoVnQoKChbdF0pPT50aGlzLl9maWx0ZXJEYXRhKHQpKSkpLGk9S3QoW28sZV0pLnBpcGUoVnQoKChbdF0pPT50aGlzLl9vcmRlckRhdGEodCkpKSksYT1LdChbaSxuXSkucGlwZShWdCgoKFt0XSk9PnRoaXMuX3BhZ2VEYXRhKHQpKSkpO251bGw9PT0odD10aGlzLl9yZW5kZXJDaGFuZ2VzU3Vic2NyaXB0aW9uKXx8dm9pZCAwPT09dHx8dC51bnN1YnNjcmliZSgpLHRoaXMuX3JlbmRlckNoYW5nZXNTdWJzY3JpcHRpb249YS5zdWJzY3JpYmUoKHQ9PnRoaXMuX3JlbmRlckRhdGEubmV4dCh0KSkpfV9maWx0ZXJEYXRhKHQpe3JldHVybiB0aGlzLmZpbHRlcmVkRGF0YT1udWxsPT10aGlzLmZpbHRlcnx8IiI9PT10aGlzLmZpbHRlcj90OnQuZmlsdGVyKCh0PT50aGlzLmZpbHRlclByZWRpY2F0ZSh0LHRoaXMuZmlsdGVyKSkpLHRoaXMucGFnaW5hdG9yJiZ0aGlzLl91cGRhdGVQYWdpbmF0b3IodGhpcy5maWx0ZXJlZERhdGEubGVuZ3RoKSx0aGlzLmZpbHRlcmVkRGF0YX1fb3JkZXJEYXRhKHQpe3JldHVybiB0aGlzLnNvcnQ/dGhpcy5zb3J0RGF0YSh0LnNsaWNlKCksdGhpcy5zb3J0KTp0fV9wYWdlRGF0YSh0KXtpZighdGhpcy5wYWdpbmF0b3IpcmV0dXJuIHQ7Y29uc3QgZT10aGlzLnBhZ2luYXRvci5wYWdlSW5kZXgqdGhpcy5wYWdpbmF0b3IucGFnZVNpemU7cmV0dXJuIHQuc2xpY2UoZSxlK3RoaXMucGFnaW5hdG9yLnBhZ2VTaXplKX1fdXBkYXRlUGFnaW5hdG9yKHQpe1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCgpPT57Y29uc3QgZT10aGlzLnBhZ2luYXRvcjtpZihlJiYoZS5sZW5ndGg9dCxlLnBhZ2VJbmRleD4wKSl7Y29uc3QgdD1NYXRoLmNlaWwoZS5sZW5ndGgvZS5wYWdlU2l6ZSktMXx8MCxuPU1hdGgubWluKGUucGFnZUluZGV4LHQpO24hPT1lLnBhZ2VJbmRleCYmKGUucGFnZUluZGV4PW4sdGhpcy5faW50ZXJuYWxQYWdlQ2hhbmdlcy5uZXh0KCkpfX0pKX1jb25uZWN0KCl7cmV0dXJuIHRoaXMuX3JlbmRlckNoYW5nZXNTdWJzY3JpcHRpb258fHRoaXMuX3VwZGF0ZUNoYW5nZVN1YnNjcmlwdGlvbigpLHRoaXMuX3JlbmRlckRhdGF9ZGlzY29ubmVjdCgpe3ZhciB0O251bGw9PT0odD10aGlzLl9yZW5kZXJDaGFuZ2VzU3Vic2NyaXB0aW9uKXx8dm9pZCAwPT09dHx8dC51bnN1YnNjcmliZSgpLHRoaXMuX3JlbmRlckNoYW5nZXNTdWJzY3JpcHRpb249bnVsbH19Y2xhc3MgRDMgZXh0ZW5kcyBTM3t9Y29uc3QgUjM9WyJwYW5lbCJdO2Z1bmN0aW9uIEUzKHQsZSl7aWYoMSZ0JiYoQ2YoMCwiZGl2IiwwLDEpLEZmKDIpLE1mKCkpLDImdCl7Y29uc3QgdD1lLmlkLG49emYoKTtiZigiaWQiLG4uaWQpKCJuZ0NsYXNzIixuLl9jbGFzc0xpc3QpLHltKCJhcmlhLWxhYmVsIixuLmFyaWFMYWJlbHx8bnVsbCkoImFyaWEtbGFiZWxsZWRieSIsbi5fZ2V0UGFuZWxBcmlhTGFiZWxsZWRieSh0KSl9fWxldCBBMz0wO2NsYXNzIFQze2NvbnN0cnVjdG9yKHQsZSl7dGhpcy5zb3VyY2U9dCx0aGlzLm9wdGlvbj1lfX1jb25zdCBOMz1IRihjbGFzc3t9KSx6Mz1uZXcgZXIoIm1hdC1hdXRvY29tcGxldGUtZGVmYXVsdC1vcHRpb25zIix7cHJvdmlkZWRJbjoicm9vdCIsZmFjdG9yeTpmdW5jdGlvbiBJMygpe3JldHVybnthdXRvQWN0aXZlRmlyc3RPcHRpb246ITF9fX0pO2NsYXNzIEgzIGV4dGVuZHMgTjN7Y29uc3RydWN0b3IodCxlLG4sbyl7c3VwZXIoKSx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZj10LHRoaXMuX2VsZW1lbnRSZWY9ZSx0aGlzLl9hY3RpdmVPcHRpb25DaGFuZ2VzPXUuRU1QVFksdGhpcy5zaG93UGFuZWw9ITEsdGhpcy5faXNPcGVuPSExLHRoaXMuZGlzcGxheVdpdGg9bnVsbCx0aGlzLm9wdGlvblNlbGVjdGVkPW5ldyBTeSx0aGlzLm9wZW5lZD1uZXcgU3ksdGhpcy5jbG9zZWQ9bmV3IFN5LHRoaXMub3B0aW9uQWN0aXZhdGVkPW5ldyBTeSx0aGlzLl9jbGFzc0xpc3Q9e30sdGhpcy5pZD0ibWF0LWF1dG9jb21wbGV0ZS0iK0EzKyssdGhpcy5pbmVydEdyb3Vwcz0obnVsbD09bz92b2lkIDA6by5TQUZBUkkpfHwhMSx0aGlzLl9hdXRvQWN0aXZlRmlyc3RPcHRpb249ISFuLmF1dG9BY3RpdmVGaXJzdE9wdGlvbn1nZXQgaXNPcGVuKCl7cmV0dXJuIHRoaXMuX2lzT3BlbiYmdGhpcy5zaG93UGFuZWx9Z2V0IGF1dG9BY3RpdmVGaXJzdE9wdGlvbigpe3JldHVybiB0aGlzLl9hdXRvQWN0aXZlRmlyc3RPcHRpb259c2V0IGF1dG9BY3RpdmVGaXJzdE9wdGlvbih0KXt0aGlzLl9hdXRvQWN0aXZlRmlyc3RPcHRpb249ZUgodCl9c2V0IGNsYXNzTGlzdCh0KXt0aGlzLl9jbGFzc0xpc3Q9dCYmdC5sZW5ndGg/KGZ1bmN0aW9uIGUodCxuPS9ccysvKXtjb25zdCBvPVtdO2lmKG51bGwhPXQpe2NvbnN0IGU9QXJyYXkuaXNBcnJheSh0KT90OmAke3R9YC5zcGxpdChuKTtmb3IoY29uc3QgdCBvZiBlKXtjb25zdCBlPWAke3R9YC50cmltKCk7ZSYmby5wdXNoKGUpfX1yZXR1cm4gb30pKHQpLnJlZHVjZSgoKHQsZSk9Pih0W2VdPSEwLHQpKSx7fSk6e30sdGhpcy5fc2V0VmlzaWJpbGl0eUNsYXNzZXModGhpcy5fY2xhc3NMaXN0KSx0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY2xhc3NOYW1lPSIifW5nQWZ0ZXJDb250ZW50SW5pdCgpe3RoaXMuX2tleU1hbmFnZXI9bmV3IEZIKHRoaXMub3B0aW9ucykud2l0aFdyYXAoKSx0aGlzLl9hY3RpdmVPcHRpb25DaGFuZ2VzPXRoaXMuX2tleU1hbmFnZXIuY2hhbmdlLnN1YnNjcmliZSgodD0+e3RoaXMub3B0aW9uQWN0aXZhdGVkLmVtaXQoe3NvdXJjZTp0aGlzLG9wdGlvbjp0aGlzLm9wdGlvbnMudG9BcnJheSgpW3RdfHxudWxsfSl9KSksdGhpcy5fc2V0VmlzaWJpbGl0eSgpfW5nT25EZXN0cm95KCl7dGhpcy5fYWN0aXZlT3B0aW9uQ2hhbmdlcy51bnN1YnNjcmliZSgpfV9zZXRTY3JvbGxUb3AodCl7dGhpcy5wYW5lbCYmKHRoaXMucGFuZWwubmF0aXZlRWxlbWVudC5zY3JvbGxUb3A9dCl9X2dldFNjcm9sbFRvcCgpe3JldHVybiB0aGlzLnBhbmVsP3RoaXMucGFuZWwubmF0aXZlRWxlbWVudC5zY3JvbGxUb3A6MH1fc2V0VmlzaWJpbGl0eSgpe3RoaXMuc2hvd1BhbmVsPSEhdGhpcy5vcHRpb25zLmxlbmd0aCx0aGlzLl9zZXRWaXNpYmlsaXR5Q2xhc3Nlcyh0aGlzLl9jbGFzc0xpc3QpLHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpfV9lbWl0U2VsZWN0RXZlbnQodCl7Y29uc3QgZT1uZXcgVDModGhpcyx0KTt0aGlzLm9wdGlvblNlbGVjdGVkLmVtaXQoZSl9X2dldFBhbmVsQXJpYUxhYmVsbGVkYnkodCl7aWYodGhpcy5hcmlhTGFiZWwpcmV0dXJuIG51bGw7cmV0dXJuIHRoaXMuYXJpYUxhYmVsbGVkYnk/KHQ/dCsiICI6IiIpK3RoaXMuYXJpYUxhYmVsbGVkYnk6dH1fc2V0VmlzaWJpbGl0eUNsYXNzZXModCl7dFt0aGlzLl92aXNpYmxlQ2xhc3NdPXRoaXMuc2hvd1BhbmVsLHRbdGhpcy5faGlkZGVuQ2xhc3NdPSF0aGlzLnNob3dQYW5lbH19SDMuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEgzKShnZihPYiksZ2YoS2gpLGdmKHozKSxnZihjSCkpfSxIMy7JtWRpcj1obyh7dHlwZTpIMyx2aWV3UXVlcnk6ZnVuY3Rpb24gdChlLG4pe2lmKDEmZSYmKFZ5KEViLDcpLFZ5KFIzLDUpKSwyJmUpe2xldCB0O0J5KHQ9VXkoKSkmJihuLnRlbXBsYXRlPXQuZmlyc3QpLEJ5KHQ9VXkoKSkmJihuLnBhbmVsPXQuZmlyc3QpfX0saW5wdXRzOntkaXNwbGF5V2l0aDoiZGlzcGxheVdpdGgiLGF1dG9BY3RpdmVGaXJzdE9wdGlvbjoiYXV0b0FjdGl2ZUZpcnN0T3B0aW9uIixjbGFzc0xpc3Q6WyJjbGFzcyIsImNsYXNzTGlzdCJdLGFyaWFMYWJlbDpbImFyaWEtbGFiZWwiLCJhcmlhTGFiZWwiXSxhcmlhTGFiZWxsZWRieTpbImFyaWEtbGFiZWxsZWRieSIsImFyaWFMYWJlbGxlZGJ5Il0scGFuZWxXaWR0aDoicGFuZWxXaWR0aCJ9LG91dHB1dHM6e29wdGlvblNlbGVjdGVkOiJvcHRpb25TZWxlY3RlZCIsb3BlbmVkOiJvcGVuZWQiLGNsb3NlZDoiY2xvc2VkIixvcHRpb25BY3RpdmF0ZWQ6Im9wdGlvbkFjdGl2YXRlZCJ9LGZlYXR1cmVzOltRcF19KSxIMy5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOk9ifSx7dHlwZTpLaH0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W3ozXX1dfSx7dHlwZTpjSH1dLEgzLnByb3BEZWNvcmF0b3JzPXt0ZW1wbGF0ZTpbe3R5cGU6YXIsYXJnczpbRWIse3N0YXRpYzohMH1dfV0scGFuZWw6W3t0eXBlOmFyLGFyZ3M6WyJwYW5lbCJdfV0sYXJpYUxhYmVsOlt7dHlwZTpSXyxhcmdzOlsiYXJpYS1sYWJlbCJdfV0sYXJpYUxhYmVsbGVkYnk6W3t0eXBlOlJfLGFyZ3M6WyJhcmlhLWxhYmVsbGVkYnkiXX1dLGRpc3BsYXlXaXRoOlt7dHlwZTpSX31dLGF1dG9BY3RpdmVGaXJzdE9wdGlvbjpbe3R5cGU6Ul99XSxwYW5lbFdpZHRoOlt7dHlwZTpSX31dLG9wdGlvblNlbGVjdGVkOlt7dHlwZTpFX31dLG9wZW5lZDpbe3R5cGU6RV99XSxjbG9zZWQ6W3t0eXBlOkVffV0sb3B0aW9uQWN0aXZhdGVkOlt7dHlwZTpFX31dLGNsYXNzTGlzdDpbe3R5cGU6Ul8sYXJnczpbImNsYXNzIl19XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihIMyxbe3R5cGU6a199XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6T2J9LHt0eXBlOktofSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbejNdfV19LHt0eXBlOmNIfV19KSx7ZGlzcGxheVdpdGg6W3t0eXBlOlJffV0sb3B0aW9uU2VsZWN0ZWQ6W3t0eXBlOkVffV0sb3BlbmVkOlt7dHlwZTpFX31dLGNsb3NlZDpbe3R5cGU6RV99XSxvcHRpb25BY3RpdmF0ZWQ6W3t0eXBlOkVffV0sYXV0b0FjdGl2ZUZpcnN0T3B0aW9uOlt7dHlwZTpSX31dLGNsYXNzTGlzdDpbe3R5cGU6Ul8sYXJnczpbImNsYXNzIl19XSx0ZW1wbGF0ZTpbe3R5cGU6YXIsYXJnczpbRWIse3N0YXRpYzohMH1dfV0scGFuZWw6W3t0eXBlOmFyLGFyZ3M6WyJwYW5lbCJdfV0sYXJpYUxhYmVsOlt7dHlwZTpSXyxhcmdzOlsiYXJpYS1sYWJlbCJdfV0sYXJpYUxhYmVsbGVkYnk6W3t0eXBlOlJfLGFyZ3M6WyJhcmlhLWxhYmVsbGVkYnkiXX1dLHBhbmVsV2lkdGg6W3t0eXBlOlJffV19KTtjbGFzcyBGMyBleHRlbmRzIEgze2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLl92aXNpYmxlQ2xhc3M9Im1hdC1hdXRvY29tcGxldGUtdmlzaWJsZSIsdGhpcy5faGlkZGVuQ2xhc3M9Im1hdC1hdXRvY29tcGxldGUtaGlkZGVuIn19RjMuybVmYWM9KGZ1bmN0aW9uKCl7bGV0IHQ7cmV0dXJuIGZ1bmN0aW9uIGUobil7cmV0dXJuKHR8fCh0PVVhKEYzKSkpKG58fEYzKX19KSgpLEYzLsm1Y21wPXNvKHt0eXBlOkYzLHNlbGVjdG9yczpbWyJtYXQtYXV0b2NvbXBsZXRlIl1dLGNvbnRlbnRRdWVyaWVzOmZ1bmN0aW9uIHQoZSxuLG8pe2lmKDEmZSYmKGp5KG8sQ0wsNSksankobyxQTCw1KSksMiZlKXtsZXQgdDtCeSh0PVV5KCkpJiYobi5vcHRpb25Hcm91cHM9dCksQnkodD1VeSgpKSYmKG4ub3B0aW9ucz10KX19LGhvc3RBdHRyczpbMSwibWF0LWF1dG9jb21wbGV0ZSJdLGlucHV0czp7ZGlzYWJsZVJpcHBsZToiZGlzYWJsZVJpcHBsZSJ9LGV4cG9ydEFzOlsibWF0QXV0b2NvbXBsZXRlIl0sZmVhdHVyZXM6W2poKFt7cHJvdmlkZTpoTCx1c2VFeGlzdGluZzpGM31dKSxRcF0sbmdDb250ZW50U2VsZWN0b3JzOlsiKiJdLGRlY2xzOjEsdmFyczowLGNvbnN0czpbWyJyb2xlIiwibGlzdGJveCIsMSwibWF0LWF1dG9jb21wbGV0ZS1wYW5lbCIsMywiaWQiLCJuZ0NsYXNzIl0sWyJwYW5lbCIsIiJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoSGYoKSxIbSgwLEUzLDMsNCwibmctdGVtcGxhdGUiKSl9LGRpcmVjdGl2ZXM6W0N2XSxzdHlsZXM6WyIubWF0LWF1dG9jb21wbGV0ZS1wYW5lbHttaW4td2lkdGg6MTEycHg7bWF4LXdpZHRoOjI4MHB4O292ZXJmbG93OmF1dG87LXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6dG91Y2g7dmlzaWJpbGl0eTpoaWRkZW47bWF4LXdpZHRoOm5vbmU7bWF4LWhlaWdodDoyNTZweDtwb3NpdGlvbjpyZWxhdGl2ZTt3aWR0aDoxMDAlO2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6NHB4O2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjRweH0ubWF0LWF1dG9jb21wbGV0ZS1wYW5lbC5tYXQtYXV0b2NvbXBsZXRlLXZpc2libGV7dmlzaWJpbGl0eTp2aXNpYmxlfS5tYXQtYXV0b2NvbXBsZXRlLXBhbmVsLm1hdC1hdXRvY29tcGxldGUtaGlkZGVue3Zpc2liaWxpdHk6aGlkZGVufS5tYXQtYXV0b2NvbXBsZXRlLXBhbmVsLWFib3ZlIC5tYXQtYXV0b2NvbXBsZXRlLXBhbmVse2JvcmRlci1yYWRpdXM6MDtib3JkZXItdG9wLWxlZnQtcmFkaXVzOjRweDtib3JkZXItdG9wLXJpZ2h0LXJhZGl1czo0cHh9Lm1hdC1hdXRvY29tcGxldGUtcGFuZWwgLm1hdC1kaXZpZGVyLWhvcml6b250YWx7bWFyZ2luLXRvcDotMXB4fS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1hdXRvY29tcGxldGUtcGFuZWx7b3V0bGluZTpzb2xpZCAxcHh9bWF0LWF1dG9jb21wbGV0ZXtkaXNwbGF5Om5vbmV9XG4iXSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KSxGMy5wcm9wRGVjb3JhdG9ycz17b3B0aW9uR3JvdXBzOlt7dHlwZTpvcixhcmdzOltDTCx7ZGVzY2VuZGFudHM6ITB9XX1dLG9wdGlvbnM6W3t0eXBlOm9yLGFyZ3M6W1BMLHtkZXNjZW5kYW50czohMH1dfV19LCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoRjMsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoibWF0LWF1dG9jb21wbGV0ZSIsdGVtcGxhdGU6JzxuZy10ZW1wbGF0ZSBsZXQtZm9ybUZpZWxkSWQ9ImlkIj5cbiAgPGRpdiBjbGFzcz0ibWF0LWF1dG9jb21wbGV0ZS1wYW5lbCJcbiAgICAgICByb2xlPSJsaXN0Ym94IlxuICAgICAgIFtpZF09ImlkIlxuICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPSJhcmlhTGFiZWwgfHwgbnVsbCJcbiAgICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPSJfZ2V0UGFuZWxBcmlhTGFiZWxsZWRieShmb3JtRmllbGRJZCkiXG4gICAgICAgW25nQ2xhc3NdPSJfY2xhc3NMaXN0IlxuICAgICAgICNwYW5lbD5cbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbicsZW5jYXBzdWxhdGlvbjpXbi5Ob25lLGNoYW5nZURldGVjdGlvbjpqbi5PblB1c2gsZXhwb3J0QXM6Im1hdEF1dG9jb21wbGV0ZSIsaW5wdXRzOlsiZGlzYWJsZVJpcHBsZSJdLGhvc3Q6e2NsYXNzOiJtYXQtYXV0b2NvbXBsZXRlIn0scHJvdmlkZXJzOlt7cHJvdmlkZTpoTCx1c2VFeGlzdGluZzpGM31dLHN0eWxlczpbIi5tYXQtYXV0b2NvbXBsZXRlLXBhbmVse21pbi13aWR0aDoxMTJweDttYXgtd2lkdGg6MjgwcHg7b3ZlcmZsb3c6YXV0bzstd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzp0b3VjaDt2aXNpYmlsaXR5OmhpZGRlbjttYXgtd2lkdGg6bm9uZTttYXgtaGVpZ2h0OjI1NnB4O3Bvc2l0aW9uOnJlbGF0aXZlO3dpZHRoOjEwMCU7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czo0cHg7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6NHB4fS5tYXQtYXV0b2NvbXBsZXRlLXBhbmVsLm1hdC1hdXRvY29tcGxldGUtdmlzaWJsZXt2aXNpYmlsaXR5OnZpc2libGV9Lm1hdC1hdXRvY29tcGxldGUtcGFuZWwubWF0LWF1dG9jb21wbGV0ZS1oaWRkZW57dmlzaWJpbGl0eTpoaWRkZW59Lm1hdC1hdXRvY29tcGxldGUtcGFuZWwtYWJvdmUgLm1hdC1hdXRvY29tcGxldGUtcGFuZWx7Ym9yZGVyLXJhZGl1czowO2JvcmRlci10b3AtbGVmdC1yYWRpdXM6NHB4O2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOjRweH0ubWF0LWF1dG9jb21wbGV0ZS1wYW5lbCAubWF0LWRpdmlkZXItaG9yaXpvbnRhbHttYXJnaW4tdG9wOi0xcHh9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWF1dG9jb21wbGV0ZS1wYW5lbHtvdXRsaW5lOnNvbGlkIDFweH1tYXQtYXV0b2NvbXBsZXRle2Rpc3BsYXk6bm9uZX1cbiJdfV19XSxudWxsLHtvcHRpb25Hcm91cHM6W3t0eXBlOm9yLGFyZ3M6W0NMLHtkZXNjZW5kYW50czohMH1dfV0sb3B0aW9uczpbe3R5cGU6b3IsYXJnczpbUEwse2Rlc2NlbmRhbnRzOiEwfV19XX0pOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3MgTDN7Y29uc3RydWN0b3IodCl7dGhpcy5lbGVtZW50UmVmPXR9fUwzLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxMMykoZ2YoS2gpKX0sTDMuybVkaXI9aG8oe3R5cGU6TDN9KSxMMy5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOktofV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihMMyxbe3R5cGU6a199XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6S2h9XX0pLG51bGwpO2NsYXNzIEIzIGV4dGVuZHMgTDN7fUIzLsm1ZmFjPShmdW5jdGlvbigpe2xldCB0O3JldHVybiBmdW5jdGlvbiBlKG4pe3JldHVybih0fHwodD1VYShCMykpKShufHxCMyl9fSkoKSxCMy7JtWRpcj1obyh7dHlwZTpCMyxzZWxlY3RvcnM6W1siIiwibWF0QXV0b2NvbXBsZXRlT3JpZ2luIiwiIl1dLGV4cG9ydEFzOlsibWF0QXV0b2NvbXBsZXRlT3JpZ2luIl0sZmVhdHVyZXM6W1FwXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoQjMsW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3RvcjoiW21hdEF1dG9jb21wbGV0ZU9yaWdpbl0iLGV4cG9ydEFzOiJtYXRBdXRvY29tcGxldGVPcmlnaW4ifV19XSxudWxsLG51bGwpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY29uc3QgVjM9bmV3IGVyKCJtYXQtYXV0b2NvbXBsZXRlLXNjcm9sbC1zdHJhdGVneSIpO2NvbnN0IGozPXtwcm92aWRlOlYzLGRlcHM6W0tCXSx1c2VGYWN0b3J5OmZ1bmN0aW9uIFUzKHQpe3JldHVybigpPT50LnNjcm9sbFN0cmF0ZWdpZXMucmVwb3NpdGlvbigpfX0sVzM9e3Byb3ZpZGU6eFUsdXNlRXhpc3Rpbmc6JGUoKCgpPT5ZMykpLG11bHRpOiEwfTtjbGFzcyBHM3tjb25zdHJ1Y3Rvcih0LGUsbixvLGksYSxyLHMsbCxjLGQpe3RoaXMuX2VsZW1lbnQ9dCx0aGlzLl9vdmVybGF5PWUsdGhpcy5fdmlld0NvbnRhaW5lclJlZj1uLHRoaXMuX3pvbmU9byx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZj1pLHRoaXMuX2Rpcj1yLHRoaXMuX2Zvcm1GaWVsZD1zLHRoaXMuX2RvY3VtZW50PWwsdGhpcy5fdmlld3BvcnRSdWxlcj1jLHRoaXMuX2RlZmF1bHRzPWQsdGhpcy5fY29tcG9uZW50RGVzdHJveWVkPSExLHRoaXMuX2F1dG9jb21wbGV0ZURpc2FibGVkPSExLHRoaXMuX21hbnVhbGx5RmxvYXRpbmdMYWJlbD0hMSx0aGlzLl92aWV3cG9ydFN1YnNjcmlwdGlvbj11LkVNUFRZLHRoaXMuX2Nhbk9wZW5Pbk5leHRGb2N1cz0hMCx0aGlzLl9jbG9zZUtleUV2ZW50U3RyZWFtPW5ldyBCLHRoaXMuX3dpbmRvd0JsdXJIYW5kbGVyPSgpPT57dGhpcy5fY2FuT3Blbk9uTmV4dEZvY3VzPXRoaXMuX2RvY3VtZW50LmFjdGl2ZUVsZW1lbnQhPT10aGlzLl9lbGVtZW50Lm5hdGl2ZUVsZW1lbnR8fHRoaXMucGFuZWxPcGVufSx0aGlzLl9vbkNoYW5nZT0oKT0+e30sdGhpcy5fb25Ub3VjaGVkPSgpPT57fSx0aGlzLnBvc2l0aW9uPSJhdXRvIix0aGlzLmF1dG9jb21wbGV0ZUF0dHJpYnV0ZT0ib2ZmIix0aGlzLl9vdmVybGF5QXR0YWNoZWQ9ITEsdGhpcy5vcHRpb25TZWxlY3Rpb25zPW9lKCgoKT0+dGhpcy5hdXRvY29tcGxldGUmJnRoaXMuYXV0b2NvbXBsZXRlLm9wdGlvbnM/cGUoLi4udGhpcy5hdXRvY29tcGxldGUub3B0aW9ucy5tYXAoKHQ9PnQub25TZWxlY3Rpb25DaGFuZ2UpKSk6dGhpcy5fem9uZS5vblN0YWJsZS5waXBlKHZlKDEpLFZlKCgoKT0+dGhpcy5vcHRpb25TZWxlY3Rpb25zKSkpKSksdGhpcy5fc2Nyb2xsU3RyYXRlZ3k9YX1nZXQgYXV0b2NvbXBsZXRlRGlzYWJsZWQoKXtyZXR1cm4gdGhpcy5fYXV0b2NvbXBsZXRlRGlzYWJsZWR9c2V0IGF1dG9jb21wbGV0ZURpc2FibGVkKHQpe3RoaXMuX2F1dG9jb21wbGV0ZURpc2FibGVkPWVIKHQpfW5nQWZ0ZXJWaWV3SW5pdCgpe2NvbnN0IHQ9dGhpcy5fZ2V0V2luZG93KCk7dm9pZCAwIT09dCYmdGhpcy5fem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKCk9PnQuYWRkRXZlbnRMaXN0ZW5lcigiYmx1ciIsdGhpcy5fd2luZG93Qmx1ckhhbmRsZXIpKSl9bmdPbkNoYW5nZXModCl7dC5wb3NpdGlvbiYmdGhpcy5fcG9zaXRpb25TdHJhdGVneSYmKHRoaXMuX3NldFN0cmF0ZWd5UG9zaXRpb25zKHRoaXMuX3Bvc2l0aW9uU3RyYXRlZ3kpLHRoaXMucGFuZWxPcGVuJiZ0aGlzLl9vdmVybGF5UmVmLnVwZGF0ZVBvc2l0aW9uKCkpfW5nT25EZXN0cm95KCl7Y29uc3QgdD10aGlzLl9nZXRXaW5kb3coKTt2b2lkIDAhPT10JiZ0LnJlbW92ZUV2ZW50TGlzdGVuZXIoImJsdXIiLHRoaXMuX3dpbmRvd0JsdXJIYW5kbGVyKSx0aGlzLl92aWV3cG9ydFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpLHRoaXMuX2NvbXBvbmVudERlc3Ryb3llZD0hMCx0aGlzLl9kZXN0cm95UGFuZWwoKSx0aGlzLl9jbG9zZUtleUV2ZW50U3RyZWFtLmNvbXBsZXRlKCl9Z2V0IHBhbmVsT3Blbigpe3JldHVybiB0aGlzLl9vdmVybGF5QXR0YWNoZWQmJnRoaXMuYXV0b2NvbXBsZXRlLnNob3dQYW5lbH1vcGVuUGFuZWwoKXt0aGlzLl9hdHRhY2hPdmVybGF5KCksdGhpcy5fZmxvYXRMYWJlbCgpfWNsb3NlUGFuZWwoKXt0aGlzLl9yZXNldExhYmVsKCksdGhpcy5fb3ZlcmxheUF0dGFjaGVkJiYodGhpcy5wYW5lbE9wZW4mJnRoaXMuYXV0b2NvbXBsZXRlLmNsb3NlZC5lbWl0KCksdGhpcy5hdXRvY29tcGxldGUuX2lzT3Blbj10aGlzLl9vdmVybGF5QXR0YWNoZWQ9ITEsdGhpcy5fb3ZlcmxheVJlZiYmdGhpcy5fb3ZlcmxheVJlZi5oYXNBdHRhY2hlZCgpJiYodGhpcy5fb3ZlcmxheVJlZi5kZXRhY2goKSx0aGlzLl9jbG9zaW5nQWN0aW9uc1N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpKSx0aGlzLl9jb21wb25lbnREZXN0cm95ZWR8fHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKSl9dXBkYXRlUG9zaXRpb24oKXt0aGlzLl9vdmVybGF5QXR0YWNoZWQmJnRoaXMuX292ZXJsYXlSZWYudXBkYXRlUG9zaXRpb24oKX1nZXQgcGFuZWxDbG9zaW5nQWN0aW9ucygpe3JldHVybiBwZSh0aGlzLm9wdGlvblNlbGVjdGlvbnMsdGhpcy5hdXRvY29tcGxldGUuX2tleU1hbmFnZXIudGFiT3V0LnBpcGUodWUoKCgpPT50aGlzLl9vdmVybGF5QXR0YWNoZWQpKSksdGhpcy5fY2xvc2VLZXlFdmVudFN0cmVhbSx0aGlzLl9nZXRPdXRzaWRlQ2xpY2tTdHJlYW0oKSx0aGlzLl9vdmVybGF5UmVmP3RoaXMuX292ZXJsYXlSZWYuZGV0YWNobWVudHMoKS5waXBlKHVlKCgoKT0+dGhpcy5fb3ZlcmxheUF0dGFjaGVkKSkpOnp0KCkpLnBpcGUoVnQoKHQ9PnQgaW5zdGFuY2VvZiB4TD90Om51bGwpKSl9Z2V0IGFjdGl2ZU9wdGlvbigpe3JldHVybiB0aGlzLmF1dG9jb21wbGV0ZSYmdGhpcy5hdXRvY29tcGxldGUuX2tleU1hbmFnZXI/dGhpcy5hdXRvY29tcGxldGUuX2tleU1hbmFnZXIuYWN0aXZlSXRlbTpudWxsfV9nZXRPdXRzaWRlQ2xpY2tTdHJlYW0oKXtyZXR1cm4gcGUobGUodGhpcy5fZG9jdW1lbnQsImNsaWNrIiksbGUodGhpcy5fZG9jdW1lbnQsImF1eGNsaWNrIiksbGUodGhpcy5fZG9jdW1lbnQsInRvdWNoZW5kIikpLnBpcGUodWUoKHQ9Pntjb25zdCBlPXZIKHQpLG49dGhpcy5fZm9ybUZpZWxkP3RoaXMuX2Zvcm1GaWVsZC5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50Om51bGwsbz10aGlzLmNvbm5lY3RlZFRvP3RoaXMuY29ubmVjdGVkVG8uZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50Om51bGw7cmV0dXJuIHRoaXMuX292ZXJsYXlBdHRhY2hlZCYmZSE9PXRoaXMuX2VsZW1lbnQubmF0aXZlRWxlbWVudCYmKCFufHwhbi5jb250YWlucyhlKSkmJighb3x8IW8uY29udGFpbnMoZSkpJiYhIXRoaXMuX292ZXJsYXlSZWYmJiF0aGlzLl9vdmVybGF5UmVmLm92ZXJsYXlFbGVtZW50LmNvbnRhaW5zKGUpfSkpKX13cml0ZVZhbHVlKHQpe1Byb21pc2UucmVzb2x2ZShudWxsKS50aGVuKCgoKT0+dGhpcy5fc2V0VHJpZ2dlclZhbHVlKHQpKSl9cmVnaXN0ZXJPbkNoYW5nZSh0KXt0aGlzLl9vbkNoYW5nZT10fXJlZ2lzdGVyT25Ub3VjaGVkKHQpe3RoaXMuX29uVG91Y2hlZD10fXNldERpc2FibGVkU3RhdGUodCl7dGhpcy5fZWxlbWVudC5uYXRpdmVFbGVtZW50LmRpc2FibGVkPXR9X2hhbmRsZUtleWRvd24odCl7Y29uc3QgZT10LmtleUNvZGU7aWYoZSE9PUtJfHx0SCh0KXx8dC5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuYWN0aXZlT3B0aW9uJiZlPT09WEkmJnRoaXMucGFuZWxPcGVuKXRoaXMuYWN0aXZlT3B0aW9uLl9zZWxlY3RWaWFJbnRlcmFjdGlvbigpLHRoaXMuX3Jlc2V0QWN0aXZlSXRlbSgpLHQucHJldmVudERlZmF1bHQoKTtlbHNlIGlmKHRoaXMuYXV0b2NvbXBsZXRlKXtjb25zdCBuPXRoaXMuYXV0b2NvbXBsZXRlLl9rZXlNYW5hZ2VyLmFjdGl2ZUl0ZW0sbz1lPT09UUl8fGU9PT0kSTt0aGlzLnBhbmVsT3Blbnx8OT09PWU/dGhpcy5hdXRvY29tcGxldGUuX2tleU1hbmFnZXIub25LZXlkb3duKHQpOm8mJnRoaXMuX2Nhbk9wZW4oKSYmdGhpcy5vcGVuUGFuZWwoKSwob3x8dGhpcy5hdXRvY29tcGxldGUuX2tleU1hbmFnZXIuYWN0aXZlSXRlbSE9PW4pJiZ0aGlzLl9zY3JvbGxUb09wdGlvbih0aGlzLmF1dG9jb21wbGV0ZS5fa2V5TWFuYWdlci5hY3RpdmVJdGVtSW5kZXh8fDApfX1faGFuZGxlSW5wdXQodCl7bGV0IGU9dC50YXJnZXQsbj1lLnZhbHVlOyJudW1iZXIiPT09ZS50eXBlJiYobj0iIj09bj9udWxsOnBhcnNlRmxvYXQobikpLHRoaXMuX3ByZXZpb3VzVmFsdWUhPT1uJiYodGhpcy5fcHJldmlvdXNWYWx1ZT1uLHRoaXMuX29uQ2hhbmdlKG4pLHRoaXMuX2Nhbk9wZW4oKSYmdGhpcy5fZG9jdW1lbnQuYWN0aXZlRWxlbWVudD09PXQudGFyZ2V0JiZ0aGlzLm9wZW5QYW5lbCgpKX1faGFuZGxlRm9jdXMoKXt0aGlzLl9jYW5PcGVuT25OZXh0Rm9jdXM/dGhpcy5fY2FuT3BlbigpJiYodGhpcy5fcHJldmlvdXNWYWx1ZT10aGlzLl9lbGVtZW50Lm5hdGl2ZUVsZW1lbnQudmFsdWUsdGhpcy5fYXR0YWNoT3ZlcmxheSgpLHRoaXMuX2Zsb2F0TGFiZWwoITApKTp0aGlzLl9jYW5PcGVuT25OZXh0Rm9jdXM9ITB9X2Zsb2F0TGFiZWwodD0hMSl7dGhpcy5fZm9ybUZpZWxkJiYiYXV0byI9PT10aGlzLl9mb3JtRmllbGQuZmxvYXRMYWJlbCYmKHQ/dGhpcy5fZm9ybUZpZWxkLl9hbmltYXRlQW5kTG9ja0xhYmVsKCk6dGhpcy5fZm9ybUZpZWxkLmZsb2F0TGFiZWw9ImFsd2F5cyIsdGhpcy5fbWFudWFsbHlGbG9hdGluZ0xhYmVsPSEwKX1fcmVzZXRMYWJlbCgpe3RoaXMuX21hbnVhbGx5RmxvYXRpbmdMYWJlbCYmKHRoaXMuX2Zvcm1GaWVsZC5mbG9hdExhYmVsPSJhdXRvIix0aGlzLl9tYW51YWxseUZsb2F0aW5nTGFiZWw9ITEpfV9zdWJzY3JpYmVUb0Nsb3NpbmdBY3Rpb25zKCl7cmV0dXJuIHBlKHRoaXMuX3pvbmUub25TdGFibGUucGlwZSh2ZSgxKSksdGhpcy5hdXRvY29tcGxldGUub3B0aW9ucy5jaGFuZ2VzLnBpcGUoV2UoKCgpPT50aGlzLl9wb3NpdGlvblN0cmF0ZWd5LnJlYXBwbHlMYXN0UG9zaXRpb24oKSkpLFBlKDApKSkucGlwZShWZSgoKCk9Pntjb25zdCB0PXRoaXMucGFuZWxPcGVuO3JldHVybiB0aGlzLl9yZXNldEFjdGl2ZUl0ZW0oKSx0aGlzLmF1dG9jb21wbGV0ZS5fc2V0VmlzaWJpbGl0eSgpLHRoaXMucGFuZWxPcGVuJiYodGhpcy5fb3ZlcmxheVJlZi51cGRhdGVQb3NpdGlvbigpLHQhPT10aGlzLnBhbmVsT3BlbiYmdGhpcy5hdXRvY29tcGxldGUub3BlbmVkLmVtaXQoKSksdGhpcy5wYW5lbENsb3NpbmdBY3Rpb25zfSkpLHZlKDEpKS5zdWJzY3JpYmUoKHQ9PnRoaXMuX3NldFZhbHVlQW5kQ2xvc2UodCkpKX1fZGVzdHJveVBhbmVsKCl7dGhpcy5fb3ZlcmxheVJlZiYmKHRoaXMuY2xvc2VQYW5lbCgpLHRoaXMuX292ZXJsYXlSZWYuZGlzcG9zZSgpLHRoaXMuX292ZXJsYXlSZWY9bnVsbCl9X3NldFRyaWdnZXJWYWx1ZSh0KXtjb25zdCBlPXRoaXMuYXV0b2NvbXBsZXRlJiZ0aGlzLmF1dG9jb21wbGV0ZS5kaXNwbGF5V2l0aD90aGlzLmF1dG9jb21wbGV0ZS5kaXNwbGF5V2l0aCh0KTp0LG49bnVsbCE9ZT9lOiIiO3RoaXMuX2Zvcm1GaWVsZD90aGlzLl9mb3JtRmllbGQuX2NvbnRyb2wudmFsdWU9bjp0aGlzLl9lbGVtZW50Lm5hdGl2ZUVsZW1lbnQudmFsdWU9bix0aGlzLl9wcmV2aW91c1ZhbHVlPW59X3NldFZhbHVlQW5kQ2xvc2UodCl7dCYmdC5zb3VyY2UmJih0aGlzLl9jbGVhclByZXZpb3VzU2VsZWN0ZWRPcHRpb24odC5zb3VyY2UpLHRoaXMuX3NldFRyaWdnZXJWYWx1ZSh0LnNvdXJjZS52YWx1ZSksdGhpcy5fb25DaGFuZ2UodC5zb3VyY2UudmFsdWUpLHRoaXMuX2VsZW1lbnQubmF0aXZlRWxlbWVudC5mb2N1cygpLHRoaXMuYXV0b2NvbXBsZXRlLl9lbWl0U2VsZWN0RXZlbnQodC5zb3VyY2UpKSx0aGlzLmNsb3NlUGFuZWwoKX1fY2xlYXJQcmV2aW91c1NlbGVjdGVkT3B0aW9uKHQpe3RoaXMuYXV0b2NvbXBsZXRlLm9wdGlvbnMuZm9yRWFjaCgoZT0+e2UhPT10JiZlLnNlbGVjdGVkJiZlLmRlc2VsZWN0KCl9KSl9X2F0dGFjaE92ZXJsYXkoKXt2YXIgdDtpZighdGhpcy5hdXRvY29tcGxldGUmJigidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSl0aHJvdyhmdW5jdGlvbiBlKCl7cmV0dXJuIEVycm9yKCJBdHRlbXB0aW5nIHRvIG9wZW4gYW4gdW5kZWZpbmVkIGluc3RhbmNlIG9mIGBtYXQtYXV0b2NvbXBsZXRlYC4gTWFrZSBzdXJlIHRoYXQgdGhlIGlkIHBhc3NlZCB0byB0aGUgYG1hdEF1dG9jb21wbGV0ZWAgaXMgY29ycmVjdCBhbmQgdGhhdCB5b3UncmUgYXR0ZW1wdGluZyB0byBvcGVuIGl0IGFmdGVyIHRoZSBuZ0FmdGVyQ29udGVudEluaXQgaG9vay4iKX0pKCk7bGV0IG49dGhpcy5fb3ZlcmxheVJlZjtuPyh0aGlzLl9wb3NpdGlvblN0cmF0ZWd5LnNldE9yaWdpbih0aGlzLl9nZXRDb25uZWN0ZWRFbGVtZW50KCkpLG4udXBkYXRlU2l6ZSh7d2lkdGg6dGhpcy5fZ2V0UGFuZWxXaWR0aCgpfSkpOih0aGlzLl9wb3J0YWw9bmV3IGxCKHRoaXMuYXV0b2NvbXBsZXRlLnRlbXBsYXRlLHRoaXMuX3ZpZXdDb250YWluZXJSZWYse2lkOm51bGw9PT0odD10aGlzLl9mb3JtRmllbGQpfHx2b2lkIDA9PT10P3ZvaWQgMDp0LmdldExhYmVsSWQoKX0pLG49dGhpcy5fb3ZlcmxheS5jcmVhdGUodGhpcy5fZ2V0T3ZlcmxheUNvbmZpZygpKSx0aGlzLl9vdmVybGF5UmVmPW4sbi5rZXlkb3duRXZlbnRzKCkuc3Vic2NyaWJlKCh0PT57KHQua2V5Q29kZT09PUtJJiYhdEgodCl8fHQua2V5Q29kZT09PVFJJiZ0SCh0LCJhbHRLZXkiKSkmJih0aGlzLl9yZXNldEFjdGl2ZUl0ZW0oKSx0aGlzLl9jbG9zZUtleUV2ZW50U3RyZWFtLm5leHQoKSx0LnN0b3BQcm9wYWdhdGlvbigpLHQucHJldmVudERlZmF1bHQoKSl9KSksdGhpcy5fdmlld3BvcnRTdWJzY3JpcHRpb249dGhpcy5fdmlld3BvcnRSdWxlci5jaGFuZ2UoKS5zdWJzY3JpYmUoKCgpPT57dGhpcy5wYW5lbE9wZW4mJm4mJm4udXBkYXRlU2l6ZSh7d2lkdGg6dGhpcy5fZ2V0UGFuZWxXaWR0aCgpfSl9KSkpLG4mJiFuLmhhc0F0dGFjaGVkKCkmJihuLmF0dGFjaCh0aGlzLl9wb3J0YWwpLHRoaXMuX2Nsb3NpbmdBY3Rpb25zU3Vic2NyaXB0aW9uPXRoaXMuX3N1YnNjcmliZVRvQ2xvc2luZ0FjdGlvbnMoKSk7Y29uc3Qgbz10aGlzLnBhbmVsT3Blbjt0aGlzLmF1dG9jb21wbGV0ZS5fc2V0VmlzaWJpbGl0eSgpLHRoaXMuYXV0b2NvbXBsZXRlLl9pc09wZW49dGhpcy5fb3ZlcmxheUF0dGFjaGVkPSEwLHRoaXMucGFuZWxPcGVuJiZvIT09dGhpcy5wYW5lbE9wZW4mJnRoaXMuYXV0b2NvbXBsZXRlLm9wZW5lZC5lbWl0KCl9X2dldE92ZXJsYXlDb25maWcoKXt2YXIgdDtyZXR1cm4gbmV3IHdCKHtwb3NpdGlvblN0cmF0ZWd5OnRoaXMuX2dldE92ZXJsYXlQb3NpdGlvbigpLHNjcm9sbFN0cmF0ZWd5OnRoaXMuX3Njcm9sbFN0cmF0ZWd5KCksd2lkdGg6dGhpcy5fZ2V0UGFuZWxXaWR0aCgpLGRpcmVjdGlvbjp0aGlzLl9kaXIscGFuZWxDbGFzczpudWxsPT09KHQ9dGhpcy5fZGVmYXVsdHMpfHx2b2lkIDA9PT10P3ZvaWQgMDp0Lm92ZXJsYXlQYW5lbENsYXNzfSl9X2dldE92ZXJsYXlQb3NpdGlvbigpe2NvbnN0IHQ9dGhpcy5fb3ZlcmxheS5wb3NpdGlvbigpLmZsZXhpYmxlQ29ubmVjdGVkVG8odGhpcy5fZ2V0Q29ubmVjdGVkRWxlbWVudCgpKS53aXRoRmxleGlibGVEaW1lbnNpb25zKCExKS53aXRoUHVzaCghMSk7cmV0dXJuIHRoaXMuX3NldFN0cmF0ZWd5UG9zaXRpb25zKHQpLHRoaXMuX3Bvc2l0aW9uU3RyYXRlZ3k9dCx0fV9zZXRTdHJhdGVneVBvc2l0aW9ucyh0KXtjb25zdCBlPVt7b3JpZ2luWDoic3RhcnQiLG9yaWdpblk6ImJvdHRvbSIsb3ZlcmxheVg6InN0YXJ0IixvdmVybGF5WToidG9wIn0se29yaWdpblg6ImVuZCIsb3JpZ2luWToiYm90dG9tIixvdmVybGF5WDoiZW5kIixvdmVybGF5WToidG9wIn1dLG49dGhpcy5fYWJvdmVDbGFzcyxvPVt7b3JpZ2luWDoic3RhcnQiLG9yaWdpblk6InRvcCIsb3ZlcmxheVg6InN0YXJ0IixvdmVybGF5WToiYm90dG9tIixwYW5lbENsYXNzOm59LHtvcmlnaW5YOiJlbmQiLG9yaWdpblk6InRvcCIsb3ZlcmxheVg6ImVuZCIsb3ZlcmxheVk6ImJvdHRvbSIscGFuZWxDbGFzczpufV07bGV0IGk7aT0iYWJvdmUiPT09dGhpcy5wb3NpdGlvbj9vOiJiZWxvdyI9PT10aGlzLnBvc2l0aW9uP2U6Wy4uLmUsLi4ub10sdC53aXRoUG9zaXRpb25zKGkpfV9nZXRDb25uZWN0ZWRFbGVtZW50KCl7cmV0dXJuIHRoaXMuY29ubmVjdGVkVG8/dGhpcy5jb25uZWN0ZWRUby5lbGVtZW50UmVmOnRoaXMuX2Zvcm1GaWVsZD90aGlzLl9mb3JtRmllbGQuZ2V0Q29ubmVjdGVkT3ZlcmxheU9yaWdpbigpOnRoaXMuX2VsZW1lbnR9X2dldFBhbmVsV2lkdGgoKXtyZXR1cm4gdGhpcy5hdXRvY29tcGxldGUucGFuZWxXaWR0aHx8dGhpcy5fZ2V0SG9zdFdpZHRoKCl9X2dldEhvc3RXaWR0aCgpe3JldHVybiB0aGlzLl9nZXRDb25uZWN0ZWRFbGVtZW50KCkubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aH1fcmVzZXRBY3RpdmVJdGVtKCl7Y29uc3QgdD10aGlzLmF1dG9jb21wbGV0ZTt0LmF1dG9BY3RpdmVGaXJzdE9wdGlvbj90Ll9rZXlNYW5hZ2VyLnNldEZpcnN0SXRlbUFjdGl2ZSgpOnQuX2tleU1hbmFnZXIuc2V0QWN0aXZlSXRlbSgtMSl9X2Nhbk9wZW4oKXtjb25zdCB0PXRoaXMuX2VsZW1lbnQubmF0aXZlRWxlbWVudDtyZXR1cm4hdC5yZWFkT25seSYmIXQuZGlzYWJsZWQmJiF0aGlzLl9hdXRvY29tcGxldGVEaXNhYmxlZH1fZ2V0V2luZG93KCl7dmFyIHQ7cmV0dXJuKG51bGw9PT0odD10aGlzLl9kb2N1bWVudCl8fHZvaWQgMD09PXQ/dm9pZCAwOnQuZGVmYXVsdFZpZXcpfHx3aW5kb3d9X3Njcm9sbFRvT3B0aW9uKHQpe2NvbnN0IGU9dGhpcy5hdXRvY29tcGxldGUsbj13TCh0LGUub3B0aW9ucyxlLm9wdGlvbkdyb3Vwcyk7aWYoMD09PXQmJjE9PT1uKWUuX3NldFNjcm9sbFRvcCgwKTtlbHNlIGlmKGUucGFuZWwpe2NvbnN0IG49ZS5vcHRpb25zLnRvQXJyYXkoKVt0XTtpZihuKXtjb25zdCB0PW4uX2dldEhvc3RFbGVtZW50KCksbz1rTCh0Lm9mZnNldFRvcCx0Lm9mZnNldEhlaWdodCxlLl9nZXRTY3JvbGxUb3AoKSxlLnBhbmVsLm5hdGl2ZUVsZW1lbnQub2Zmc2V0SGVpZ2h0KTtlLl9zZXRTY3JvbGxUb3Aobyl9fX19RzMuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEczKShnZihLaCksZ2YoS0IpLGdmKEZiKSxnZihtQyksZ2YoT2IpLGdmKFYzKSxnZih2Riw4KSxnZih5VSw5KSxnZihzTSw4KSxnZihRTCksZ2YoejMsOCkpfSxHMy7JtWRpcj1obyh7dHlwZTpHMyxpbnB1dHM6e3Bvc2l0aW9uOlsibWF0QXV0b2NvbXBsZXRlUG9zaXRpb24iLCJwb3NpdGlvbiJdLGF1dG9jb21wbGV0ZUF0dHJpYnV0ZTpbImF1dG9jb21wbGV0ZSIsImF1dG9jb21wbGV0ZUF0dHJpYnV0ZSJdLGF1dG9jb21wbGV0ZURpc2FibGVkOlsibWF0QXV0b2NvbXBsZXRlRGlzYWJsZWQiLCJhdXRvY29tcGxldGVEaXNhYmxlZCJdLGF1dG9jb21wbGV0ZTpbIm1hdEF1dG9jb21wbGV0ZSIsImF1dG9jb21wbGV0ZSJdLGNvbm5lY3RlZFRvOlsibWF0QXV0b2NvbXBsZXRlQ29ubmVjdGVkVG8iLCJjb25uZWN0ZWRUbyJdfSxmZWF0dXJlczpbcW9dfSksRzMuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpLaH0se3R5cGU6S0J9LHt0eXBlOkZifSx7dHlwZTptQ30se3R5cGU6T2J9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltWM119XX0se3R5cGU6dkYsZGVjb3JhdG9yczpbe3R5cGU6QnJ9XX0se3R5cGU6X1UsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W3lVXX0se3R5cGU6VXJ9XX0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltzTV19XX0se3R5cGU6UUx9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpbejNdfV19XSxHMy5wcm9wRGVjb3JhdG9ycz17YXV0b2NvbXBsZXRlOlt7dHlwZTpSXyxhcmdzOlsibWF0QXV0b2NvbXBsZXRlIl19XSxwb3NpdGlvbjpbe3R5cGU6Ul8sYXJnczpbIm1hdEF1dG9jb21wbGV0ZVBvc2l0aW9uIl19XSxjb25uZWN0ZWRUbzpbe3R5cGU6Ul8sYXJnczpbIm1hdEF1dG9jb21wbGV0ZUNvbm5lY3RlZFRvIl19XSxhdXRvY29tcGxldGVBdHRyaWJ1dGU6W3t0eXBlOlJfLGFyZ3M6WyJhdXRvY29tcGxldGUiXX1dLGF1dG9jb21wbGV0ZURpc2FibGVkOlt7dHlwZTpSXyxhcmdzOlsibWF0QXV0b2NvbXBsZXRlRGlzYWJsZWQiXX1dfSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKEczLFt7dHlwZTprX31dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpLaH0se3R5cGU6S0J9LHt0eXBlOkZifSx7dHlwZTptQ30se3R5cGU6T2J9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltWM119XX0se3R5cGU6dkYsZGVjb3JhdG9yczpbe3R5cGU6QnJ9XX0se3R5cGU6X1UsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W3lVXX0se3R5cGU6VXJ9XX0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltzTV19XX0se3R5cGU6UUx9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpbejNdfV19XX0pLHtwb3NpdGlvbjpbe3R5cGU6Ul8sYXJnczpbIm1hdEF1dG9jb21wbGV0ZVBvc2l0aW9uIl19XSxhdXRvY29tcGxldGVBdHRyaWJ1dGU6W3t0eXBlOlJfLGFyZ3M6WyJhdXRvY29tcGxldGUiXX1dLGF1dG9jb21wbGV0ZURpc2FibGVkOlt7dHlwZTpSXyxhcmdzOlsibWF0QXV0b2NvbXBsZXRlRGlzYWJsZWQiXX1dLGF1dG9jb21wbGV0ZTpbe3R5cGU6Ul8sYXJnczpbIm1hdEF1dG9jb21wbGV0ZSJdfV0sY29ubmVjdGVkVG86W3t0eXBlOlJfLGFyZ3M6WyJtYXRBdXRvY29tcGxldGVDb25uZWN0ZWRUbyJdfV19KTtjbGFzcyBZMyBleHRlbmRzIEcze2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLl9hYm92ZUNsYXNzPSJtYXQtYXV0b2NvbXBsZXRlLXBhbmVsLWFib3ZlIn19WTMuybVmYWM9KGZ1bmN0aW9uKCl7bGV0IHQ7cmV0dXJuIGZ1bmN0aW9uIGUobil7cmV0dXJuKHR8fCh0PVVhKFkzKSkpKG58fFkzKX19KSgpLFkzLsm1ZGlyPWhvKHt0eXBlOlkzLHNlbGVjdG9yczpbWyJpbnB1dCIsIm1hdEF1dG9jb21wbGV0ZSIsIiJdLFsidGV4dGFyZWEiLCJtYXRBdXRvY29tcGxldGUiLCIiXV0saG9zdEF0dHJzOlsxLCJtYXQtYXV0b2NvbXBsZXRlLXRyaWdnZXIiXSxob3N0VmFyczo3LGhvc3RCaW5kaW5nczpmdW5jdGlvbiB0KGUsbil7MSZlJiZSZigiZm9jdXNpbiIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5faGFuZGxlRm9jdXMoKX0pKSgiYmx1ciIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5fb25Ub3VjaGVkKCl9KSkoImlucHV0IiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5faGFuZGxlSW5wdXQoZSl9KSkoImtleWRvd24iLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLl9oYW5kbGVLZXlkb3duKGUpfSkpLDImZSYmeW0oImF1dG9jb21wbGV0ZSIsbi5hdXRvY29tcGxldGVBdHRyaWJ1dGUpKCJyb2xlIixuLmF1dG9jb21wbGV0ZURpc2FibGVkP251bGw6ImNvbWJvYm94IikoImFyaWEtYXV0b2NvbXBsZXRlIixuLmF1dG9jb21wbGV0ZURpc2FibGVkP251bGw6Imxpc3QiKSgiYXJpYS1hY3RpdmVkZXNjZW5kYW50IixuLnBhbmVsT3BlbiYmbi5hY3RpdmVPcHRpb24/bi5hY3RpdmVPcHRpb24uaWQ6bnVsbCkoImFyaWEtZXhwYW5kZWQiLG4uYXV0b2NvbXBsZXRlRGlzYWJsZWQ/bnVsbDpuLnBhbmVsT3Blbi50b1N0cmluZygpKSgiYXJpYS1vd25zIixuLmF1dG9jb21wbGV0ZURpc2FibGVkfHwhbi5wYW5lbE9wZW58fG51bGw9PW4uYXV0b2NvbXBsZXRlP251bGw6bi5hdXRvY29tcGxldGUuaWQpKCJhcmlhLWhhc3BvcHVwIiwhbi5hdXRvY29tcGxldGVEaXNhYmxlZCl9LGV4cG9ydEFzOlsibWF0QXV0b2NvbXBsZXRlVHJpZ2dlciJdLGZlYXR1cmVzOltqaChbVzNdKSxRcF19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKFkzLFt7dHlwZTprXyxhcmdzOlt7c2VsZWN0b3I6ImlucHV0W21hdEF1dG9jb21wbGV0ZV0sIHRleHRhcmVhW21hdEF1dG9jb21wbGV0ZV0iLGhvc3Q6e2NsYXNzOiJtYXQtYXV0b2NvbXBsZXRlLXRyaWdnZXIiLCJbYXR0ci5hdXRvY29tcGxldGVdIjoiYXV0b2NvbXBsZXRlQXR0cmlidXRlIiwiW2F0dHIucm9sZV0iOidhdXRvY29tcGxldGVEaXNhYmxlZCA/IG51bGwgOiAiY29tYm9ib3giJywiW2F0dHIuYXJpYS1hdXRvY29tcGxldGVdIjonYXV0b2NvbXBsZXRlRGlzYWJsZWQgPyBudWxsIDogImxpc3QiJywiW2F0dHIuYXJpYS1hY3RpdmVkZXNjZW5kYW50XSI6IihwYW5lbE9wZW4gJiYgYWN0aXZlT3B0aW9uKSA/IGFjdGl2ZU9wdGlvbi5pZCA6IG51bGwiLCJbYXR0ci5hcmlhLWV4cGFuZGVkXSI6ImF1dG9jb21wbGV0ZURpc2FibGVkID8gbnVsbCA6IHBhbmVsT3Blbi50b1N0cmluZygpIiwiW2F0dHIuYXJpYS1vd25zXSI6IihhdXRvY29tcGxldGVEaXNhYmxlZCB8fCAhcGFuZWxPcGVuKSA/IG51bGwgOiBhdXRvY29tcGxldGU/LmlkIiwiW2F0dHIuYXJpYS1oYXNwb3B1cF0iOiIhYXV0b2NvbXBsZXRlRGlzYWJsZWQiLCIoZm9jdXNpbikiOiJfaGFuZGxlRm9jdXMoKSIsIihibHVyKSI6Il9vblRvdWNoZWQoKSIsIihpbnB1dCkiOiJfaGFuZGxlSW5wdXQoJGV2ZW50KSIsIihrZXlkb3duKSI6Il9oYW5kbGVLZXlkb3duKCRldmVudCkifSxleHBvcnRBczoibWF0QXV0b2NvbXBsZXRlVHJpZ2dlciIscHJvdmlkZXJzOltXM119XX1dLG51bGwsbnVsbCk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjbGFzcyBxM3t9cTMuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHEzKX0scTMuybVtb2Q9Zm8oe3R5cGU6cTN9KSxxMy7JtWluaj1Ebih7cHJvdmlkZXJzOltqM10saW1wb3J0czpbW29WLFNMLE5GLHJ4XSxvQixTTCxORl19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKHEzLFt7dHlwZTpMXyxhcmdzOlt7aW1wb3J0czpbb1YsU0wsTkYscnhdLGV4cG9ydHM6W0YzLFkzLEIzLG9CLFNMLE5GXSxkZWNsYXJhdGlvbnM6W0YzLFkzLEIzXSxwcm92aWRlcnM6W2ozXX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnVvKHEzLHtkZWNsYXJhdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm5bRjMsWTMsQjNdfSxpbXBvcnRzOmZ1bmN0aW9uKCl7cmV0dXJuW29WLFNMLE5GLHJ4XX0sZXhwb3J0czpmdW5jdGlvbigpe3JldHVybltGMyxZMyxCMyxvQixTTCxORl19fSk7Y2xhc3MgWjN7Y29uc3RydWN0b3IoKXt0aGlzLnZhbHVlPSIiLHRoaXMucGxhY2Vob2xkZXI9IiJ9b25JbnB1dEtleVVwKHQpeyJFbnRlciI9PT10LmtleSYmdGhpcy5hdXRvY29tcGxldGVUcmlnZ2VyLmNsb3NlUGFuZWwoKX19ZnVuY3Rpb24gWDModCxlKXtpZigxJnQmJihvYSgpLHZmKDAsImNpcmNsZSIsMykpLDImdCl7Y29uc3QgdD16ZigpO2x1KCJhbmltYXRpb24tbmFtZSIsIm1hdC1wcm9ncmVzcy1zcGlubmVyLXN0cm9rZS1yb3RhdGUtIit0Ll9zcGlubmVyQW5pbWF0aW9uTGFiZWwpKCJzdHJva2UtZGFzaG9mZnNldCIsdC5fZ2V0U3Ryb2tlRGFzaE9mZnNldCgpLCJweCIpKCJzdHJva2UtZGFzaGFycmF5Iix0Ll9nZXRTdHJva2VDaXJjdW1mZXJlbmNlKCksInB4IikoInN0cm9rZS13aWR0aCIsdC5fZ2V0Q2lyY2xlU3Ryb2tlV2lkdGgoKSwiJSIpLHltKCJyIix0Ll9nZXRDaXJjbGVSYWRpdXMoKSl9fWZ1bmN0aW9uIEszKHQsZSl7aWYoMSZ0JiYob2EoKSx2ZigwLCJjaXJjbGUiLDMpKSwyJnQpe2NvbnN0IHQ9emYoKTtsdSgic3Ryb2tlLWRhc2hvZmZzZXQiLHQuX2dldFN0cm9rZURhc2hPZmZzZXQoKSwicHgiKSgic3Ryb2tlLWRhc2hhcnJheSIsdC5fZ2V0U3Ryb2tlQ2lyY3VtZmVyZW5jZSgpLCJweCIpKCJzdHJva2Utd2lkdGgiLHQuX2dldENpcmNsZVN0cm9rZVdpZHRoKCksIiUiKSx5bSgiciIsdC5fZ2V0Q2lyY2xlUmFkaXVzKCkpfX1mdW5jdGlvbiBKMyh0LGUpe2lmKDEmdCYmKG9hKCksdmYoMCwiY2lyY2xlIiwzKSksMiZ0KXtjb25zdCB0PXpmKCk7bHUoImFuaW1hdGlvbi1uYW1lIiwibWF0LXByb2dyZXNzLXNwaW5uZXItc3Ryb2tlLXJvdGF0ZS0iK3QuX3NwaW5uZXJBbmltYXRpb25MYWJlbCkoInN0cm9rZS1kYXNob2Zmc2V0Iix0Ll9nZXRTdHJva2VEYXNoT2Zmc2V0KCksInB4IikoInN0cm9rZS1kYXNoYXJyYXkiLHQuX2dldFN0cm9rZUNpcmN1bWZlcmVuY2UoKSwicHgiKSgic3Ryb2tlLXdpZHRoIix0Ll9nZXRDaXJjbGVTdHJva2VXaWR0aCgpLCIlIikseW0oInIiLHQuX2dldENpcmNsZVJhZGl1cygpKX19ZnVuY3Rpb24gUTModCxlKXtpZigxJnQmJihvYSgpLHZmKDAsImNpcmNsZSIsMykpLDImdCl7Y29uc3QgdD16ZigpO2x1KCJzdHJva2UtZGFzaG9mZnNldCIsdC5fZ2V0U3Ryb2tlRGFzaE9mZnNldCgpLCJweCIpKCJzdHJva2UtZGFzaGFycmF5Iix0Ll9nZXRTdHJva2VDaXJjdW1mZXJlbmNlKCksInB4IikoInN0cm9rZS13aWR0aCIsdC5fZ2V0Q2lyY2xlU3Ryb2tlV2lkdGgoKSwiJSIpLHltKCJyIix0Ll9nZXRDaXJjbGVSYWRpdXMoKSl9fVozLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxaMyl9LFozLsm1Y21wPXNvKHt0eXBlOlozLHNlbGVjdG9yczpbWyJ0Yi1maWx0ZXItaW5wdXQiXV0sdmlld1F1ZXJ5OmZ1bmN0aW9uIHQoZSxuKXtpZigxJmUmJlZ5KFkzLDUpLDImZSl7bGV0IHQ7QnkodD1VeSgpKSYmKG4uYXV0b2NvbXBsZXRlVHJpZ2dlcj10LmZpcnN0KX19LGlucHV0czp7dmFsdWU6InZhbHVlIixtYXRBdXRvY29tcGxldGU6Im1hdEF1dG9jb21wbGV0ZSIscGxhY2Vob2xkZXI6InBsYWNlaG9sZGVyIn0sZGVjbHM6Mix2YXJzOjQsY29uc3RzOltbInN2Z0ljb24iLCJzZWFyY2hfMjRweCJdLFsidHlwZSIsInRleHQiLCJhdXRvY29tcGxldGUiLCJvZmYiLDMsInBsYWNlaG9sZGVyIiwibWF0QXV0b2NvbXBsZXRlIiwibWF0QXV0b2NvbXBsZXRlRGlzYWJsZWQiLCJ2YWx1ZSIsImtleXVwIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJih2ZigwLCJtYXQtaWNvbiIsMCksQ2YoMSwiaW5wdXQiLDEpLFJmKCJrZXl1cCIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4ub25JbnB1dEtleVVwKGUpfSkpLE1mKCkpLDImZSYmKERjKDEpLGJmKCJwbGFjZWhvbGRlciIsbi5wbGFjZWhvbGRlcikoIm1hdEF1dG9jb21wbGV0ZSIsbi5tYXRBdXRvY29tcGxldGUpKCJtYXRBdXRvY29tcGxldGVEaXNhYmxlZCIsIW4ubWF0QXV0b2NvbXBsZXRlKSgidmFsdWUiLG4udmFsdWUpKX0sZGlyZWN0aXZlczpbTXEsWTNdLHN0eWxlczpbJy5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjlweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHh9Lm1hdC1oMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaGVhZGxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDI0cHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTVweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWg2W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1ib2R5LXN0cm9uZ1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYXJkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FyZC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MjRweH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNhbGVuZGFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZGlhbG9nLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVlbSAwO2JvcmRlci10b3A6Ljg0Mzc1ZW0gc29saWQgdHJhbnNwYXJlbnR9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17dG9wOi0wLjg0Mzc1ZW07cGFkZGluZy10b3A6Ljg0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6NzUlO21hcmdpbi10b3A6LjY2NjY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS43OTE2NjY2NjY3ZW0pfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjQzNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDJweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIzZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4yODEyNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LjU0MTY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS42NjY2NjY2NjY3ZW0pfUBtZWRpYSBwcmludHsubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjJlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjFlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyZW0pIHNjYWxlKDAuNzUpfX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouMjVlbSAwIC43NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjA5Mzc1ZW07bWFyZ2luLXRvcDotMC41ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoxZW0gMCAxZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuODQzNzVlbTttYXJnaW4tdG9wOi0wLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMiksIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fWlucHV0Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi0wLjA2MjVlbX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHh9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtfS5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1zdGVwLXN1Yi1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6bm9ybWFsfS5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1zdGVwLWxhYmVsLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10YWItZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MH0ubWF0LXRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTBweDtwYWRkaW5nLXRvcDo2cHg7cGFkZGluZy1ib3R0b206NnB4fS5tYXQtdG9vbHRpcC1oYW5kc2V0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4fS5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtc2ltcGxlLXNuYWNrYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHh9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoxO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjE0cHh9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV06bm90KDplbXB0eSl7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9Lm1hdC1yaXBwbGUubWF0LXJpcHBsZS11bmJvdW5kZWRbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OnZpc2libGV9Lm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJhZGl1czo1MCU7cG9pbnRlci1ldmVudHM6bm9uZTt0cmFuc2l0aW9uOm9wYWNpdHksdHJhbnNmb3JtIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTt0cmFuc2Zvcm06c2NhbGUoMCl9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9LmNkay12aXN1YWxseS1oaWRkZW5bX25nY29udGVudC0lQ09NUCVde2JvcmRlcjowO2NsaXA6cmVjdCgwIDAgMCAwKTtoZWlnaHQ6MXB4O21hcmdpbjotMXB4O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4O3doaXRlLXNwYWNlOm5vd3JhcDtvdXRsaW5lOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0sIC5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cG9pbnRlci1ldmVudHM6bm9uZTt0b3A6MDtsZWZ0OjA7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV06ZW1wdHl7ZGlzcGxheTpub25lfS5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktcGFuZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6YXV0bztib3gtc2l6aW5nOmJvcmRlci1ib3g7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDttYXgtd2lkdGg6MTAwJTttYXgtaGVpZ2h0OjEwMCV9LmNkay1vdmVybGF5LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDt6LWluZGV4OjEwMDA7cG9pbnRlci1ldmVudHM6YXV0bzstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnQ7dHJhbnNpdGlvbjpvcGFjaXR5IDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpO29wYWNpdHk6MH0uY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eToxfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6LjZ9LmNkay1vdmVybGF5LWRhcmstYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMzIpfS5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV0sIC5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWNvbm5lY3RlZC1wb3NpdGlvbi1ib3VuZGluZy1ib3hbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO21pbi13aWR0aDoxcHg7bWluLWhlaWdodDoxcHh9LmNkay1nbG9iYWwtc2Nyb2xsYmxvY2tbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3dpZHRoOjEwMCU7b3ZlcmZsb3cteTpzY3JvbGx9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplW19uZ2NvbnRlbnQtJUNPTVAlXXtyZXNpemU6bm9uZX10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDphdXRvICFpbXBvcnRhbnQ7b3ZlcmZsb3c6aGlkZGVuICFpbXBvcnRhbnR9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZy1maXJlZm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDowICFpbXBvcnRhbnR9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydHt9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmR7fS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGx7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0IDBzIDFtc30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOi13ZWJraXQtYXV0b2ZpbGwpe2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmQgMHMgMW1zfS5tYXQtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LW1kYy1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfVtfbmdob3N0LSVDT01QJV17ZGlzcGxheTpmbGV4O2ZvbnQtc2l6ZToxM3B4fW1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxO2ZsZXg6bm9uZTttYXJnaW4tcmlnaHQ6NXB4fWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIG1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgbWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjcpfWlucHV0W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOmluaGVyaXQ7Y2FyZXQtY29sb3I6Y3VycmVudENvbG9yO2NvbG9yOmN1cnJlbnRDb2xvcjtmb250OmluaGVyaXQ7Ym9yZGVyOm5vbmU7b3V0bGluZTpub25lO3BhZGRpbmc6MDtmbGV4LWdyb3c6MX0nXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoWjMsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoidGItZmlsdGVyLWlucHV0Iix0ZW1wbGF0ZTonXG4gICAgPG1hdC1pY29uIHN2Z0ljb249InNlYXJjaF8yNHB4Ij48L21hdC1pY29uPlxuXG4gICAgXHgzYyEtLSBOb3RlOiB0byBhbGxvdyBmYWxzeSBcJ21hdEF1dG9jb21wbGV0ZVwnIHZhbHVlcywgd2UgbmVlZCBcJ21hdEF1dG9jb21wbGV0ZURpc2FibGVkXCdcbiAgICB0byBwcmV2ZW50IHJ1bnRpbWUgZXJyb3JzLiAtLVx4M2VcbiAgICA8aW5wdXRcbiAgICAgIHR5cGU9InRleHQiXG4gICAgICBhdXRvY29tcGxldGU9Im9mZiJcbiAgICAgIFtwbGFjZWhvbGRlcl09InBsYWNlaG9sZGVyIlxuICAgICAgW21hdEF1dG9jb21wbGV0ZV09Im1hdEF1dG9jb21wbGV0ZSJcbiAgICAgIFttYXRBdXRvY29tcGxldGVEaXNhYmxlZF09IiFtYXRBdXRvY29tcGxldGUiXG4gICAgICBbdmFsdWVdPSJ2YWx1ZSJcbiAgICAgIChrZXl1cCk9Im9uSW5wdXRLZXlVcCgkZXZlbnQpIlxuICAgIC8+XG4gICcsc3R5bGVVcmxzOlsiZmlsdGVyX2lucHV0X2NvbXBvbmVudC5jc3MiXX1dfV0sbnVsbCx7dmFsdWU6W3t0eXBlOlJffV0sbWF0QXV0b2NvbXBsZXRlOlt7dHlwZTpSX31dLHBsYWNlaG9sZGVyOlt7dHlwZTpSX31dLGF1dG9jb21wbGV0ZVRyaWdnZXI6W3t0eXBlOmFyLGFyZ3M6W1kzXX1dfSk7Y29uc3QgJDM9Ii5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lcntkaXNwbGF5OmJsb2NrO3Bvc2l0aW9uOnJlbGF0aXZlO292ZXJmbG93OmhpZGRlbn0ubWF0LXByb2dyZXNzLXNwaW5uZXIgc3Zne3Bvc2l0aW9uOmFic29sdXRlO3RyYW5zZm9ybTpyb3RhdGUoLTkwZGVnKTt0b3A6MDtsZWZ0OjA7dHJhbnNmb3JtLW9yaWdpbjpjZW50ZXI7b3ZlcmZsb3c6dmlzaWJsZX0ubWF0LXByb2dyZXNzLXNwaW5uZXIgY2lyY2xle2ZpbGw6dHJhbnNwYXJlbnQ7dHJhbnNmb3JtLW9yaWdpbjpjZW50ZXI7dHJhbnNpdGlvbjpzdHJva2UtZGFzaG9mZnNldCAyMjVtcyBsaW5lYXJ9Ll9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlLm1hdC1wcm9ncmVzcy1zcGlubmVyIGNpcmNsZXt0cmFuc2l0aW9uOm5vbmU7YW5pbWF0aW9uOm5vbmV9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LXByb2dyZXNzLXNwaW5uZXIgY2lyY2xle3N0cm9rZTpjdXJyZW50Q29sb3I7c3Ryb2tlOkNhbnZhc1RleHR9Lm1hdC1wcm9ncmVzcy1zcGlubmVyLm1hdC1wcm9ncmVzcy1zcGlubmVyLWluZGV0ZXJtaW5hdGUtYW5pbWF0aW9uW21vZGU9aW5kZXRlcm1pbmF0ZV0gc3Zne2FuaW1hdGlvbjptYXQtcHJvZ3Jlc3Mtc3Bpbm5lci1saW5lYXItcm90YXRlIDIwMDBtcyBsaW5lYXIgaW5maW5pdGV9Ll9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlLm1hdC1wcm9ncmVzcy1zcGlubmVyLm1hdC1wcm9ncmVzcy1zcGlubmVyLWluZGV0ZXJtaW5hdGUtYW5pbWF0aW9uW21vZGU9aW5kZXRlcm1pbmF0ZV0gc3Zne3RyYW5zaXRpb246bm9uZTthbmltYXRpb246bm9uZX0ubWF0LXByb2dyZXNzLXNwaW5uZXIubWF0LXByb2dyZXNzLXNwaW5uZXItaW5kZXRlcm1pbmF0ZS1hbmltYXRpb25bbW9kZT1pbmRldGVybWluYXRlXSBjaXJjbGV7dHJhbnNpdGlvbi1wcm9wZXJ0eTpzdHJva2U7YW5pbWF0aW9uLWR1cmF0aW9uOjQwMDBtczthbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOmN1YmljLWJlemllcigwLjM1LCAwLCAwLjI1LCAxKTthbmltYXRpb24taXRlcmF0aW9uLWNvdW50OmluZmluaXRlfS5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZS5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lci5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lci1pbmRldGVybWluYXRlLWFuaW1hdGlvblttb2RlPWluZGV0ZXJtaW5hdGVdIGNpcmNsZXt0cmFuc2l0aW9uOm5vbmU7YW5pbWF0aW9uOm5vbmV9Lm1hdC1wcm9ncmVzcy1zcGlubmVyLm1hdC1wcm9ncmVzcy1zcGlubmVyLWluZGV0ZXJtaW5hdGUtZmFsbGJhY2stYW5pbWF0aW9uW21vZGU9aW5kZXRlcm1pbmF0ZV0gc3Zne2FuaW1hdGlvbjptYXQtcHJvZ3Jlc3Mtc3Bpbm5lci1zdHJva2Utcm90YXRlLWZhbGxiYWNrIDEwMDAwbXMgY3ViaWMtYmV6aWVyKDAuODcsIDAuMDMsIDAuMzMsIDEpIGluZmluaXRlfS5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZS5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lci5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lci1pbmRldGVybWluYXRlLWZhbGxiYWNrLWFuaW1hdGlvblttb2RlPWluZGV0ZXJtaW5hdGVdIHN2Z3t0cmFuc2l0aW9uOm5vbmU7YW5pbWF0aW9uOm5vbmV9Lm1hdC1wcm9ncmVzcy1zcGlubmVyLm1hdC1wcm9ncmVzcy1zcGlubmVyLWluZGV0ZXJtaW5hdGUtZmFsbGJhY2stYW5pbWF0aW9uW21vZGU9aW5kZXRlcm1pbmF0ZV0gY2lyY2xle3RyYW5zaXRpb24tcHJvcGVydHk6c3Ryb2tlfS5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZS5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lci5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lci1pbmRldGVybWluYXRlLWZhbGxiYWNrLWFuaW1hdGlvblttb2RlPWluZGV0ZXJtaW5hdGVdIGNpcmNsZXt0cmFuc2l0aW9uOm5vbmU7YW5pbWF0aW9uOm5vbmV9QGtleWZyYW1lcyBtYXQtcHJvZ3Jlc3Mtc3Bpbm5lci1saW5lYXItcm90YXRlezAle3RyYW5zZm9ybTpyb3RhdGUoMGRlZyl9MTAwJXt0cmFuc2Zvcm06cm90YXRlKDM2MGRlZyl9fUBrZXlmcmFtZXMgbWF0LXByb2dyZXNzLXNwaW5uZXItc3Ryb2tlLXJvdGF0ZS0xMDB7MCV7c3Ryb2tlLWRhc2hvZmZzZXQ6MjY4LjYwNjE3MTU3NXB4O3RyYW5zZm9ybTpyb3RhdGUoMCl9MTIuNSV7c3Ryb2tlLWRhc2hvZmZzZXQ6NTYuNTQ4NjY3N3B4O3RyYW5zZm9ybTpyb3RhdGUoMCl9MTIuNTAwMSV7c3Ryb2tlLWRhc2hvZmZzZXQ6NTYuNTQ4NjY3N3B4O3RyYW5zZm9ybTpyb3RhdGVYKDE4MGRlZykgcm90YXRlKDcyLjVkZWcpfTI1JXtzdHJva2UtZGFzaG9mZnNldDoyNjguNjA2MTcxNTc1cHg7dHJhbnNmb3JtOnJvdGF0ZVgoMTgwZGVnKSByb3RhdGUoNzIuNWRlZyl9MjUuMDAwMSV7c3Ryb2tlLWRhc2hvZmZzZXQ6MjY4LjYwNjE3MTU3NXB4O3RyYW5zZm9ybTpyb3RhdGUoMjcwZGVnKX0zNy41JXtzdHJva2UtZGFzaG9mZnNldDo1Ni41NDg2Njc3cHg7dHJhbnNmb3JtOnJvdGF0ZSgyNzBkZWcpfTM3LjUwMDEle3N0cm9rZS1kYXNob2Zmc2V0OjU2LjU0ODY2NzdweDt0cmFuc2Zvcm06cm90YXRlWCgxODBkZWcpIHJvdGF0ZSgxNjEuNWRlZyl9NTAle3N0cm9rZS1kYXNob2Zmc2V0OjI2OC42MDYxNzE1NzVweDt0cmFuc2Zvcm06cm90YXRlWCgxODBkZWcpIHJvdGF0ZSgxNjEuNWRlZyl9NTAuMDAwMSV7c3Ryb2tlLWRhc2hvZmZzZXQ6MjY4LjYwNjE3MTU3NXB4O3RyYW5zZm9ybTpyb3RhdGUoMTgwZGVnKX02Mi41JXtzdHJva2UtZGFzaG9mZnNldDo1Ni41NDg2Njc3cHg7dHJhbnNmb3JtOnJvdGF0ZSgxODBkZWcpfTYyLjUwMDEle3N0cm9rZS1kYXNob2Zmc2V0OjU2LjU0ODY2NzdweDt0cmFuc2Zvcm06cm90YXRlWCgxODBkZWcpIHJvdGF0ZSgyNTEuNWRlZyl9NzUle3N0cm9rZS1kYXNob2Zmc2V0OjI2OC42MDYxNzE1NzVweDt0cmFuc2Zvcm06cm90YXRlWCgxODBkZWcpIHJvdGF0ZSgyNTEuNWRlZyl9NzUuMDAwMSV7c3Ryb2tlLWRhc2hvZmZzZXQ6MjY4LjYwNjE3MTU3NXB4O3RyYW5zZm9ybTpyb3RhdGUoOTBkZWcpfTg3LjUle3N0cm9rZS1kYXNob2Zmc2V0OjU2LjU0ODY2NzdweDt0cmFuc2Zvcm06cm90YXRlKDkwZGVnKX04Ny41MDAxJXtzdHJva2UtZGFzaG9mZnNldDo1Ni41NDg2Njc3cHg7dHJhbnNmb3JtOnJvdGF0ZVgoMTgwZGVnKSByb3RhdGUoMzQxLjVkZWcpfTEwMCV7c3Ryb2tlLWRhc2hvZmZzZXQ6MjY4LjYwNjE3MTU3NXB4O3RyYW5zZm9ybTpyb3RhdGVYKDE4MGRlZykgcm90YXRlKDM0MS41ZGVnKX19QGtleWZyYW1lcyBtYXQtcHJvZ3Jlc3Mtc3Bpbm5lci1zdHJva2Utcm90YXRlLWZhbGxiYWNrezAle3RyYW5zZm9ybTpyb3RhdGUoMGRlZyl9MjUle3RyYW5zZm9ybTpyb3RhdGUoMTE3MGRlZyl9NTAle3RyYW5zZm9ybTpyb3RhdGUoMjM0MGRlZyl9NzUle3RyYW5zZm9ybTpyb3RhdGUoMzUxMGRlZyl9MTAwJXt0cmFuc2Zvcm06cm90YXRlKDQ2ODBkZWcpfX1cbiIsdDI9SUYoY2xhc3N7Y29uc3RydWN0b3IodCl7dGhpcy5fZWxlbWVudFJlZj10fX0sInByaW1hcnkiKSxlMj1uZXcgZXIoIm1hdC1wcm9ncmVzcy1zcGlubmVyLWRlZmF1bHQtb3B0aW9ucyIse3Byb3ZpZGVkSW46InJvb3QiLGZhY3Rvcnk6ZnVuY3Rpb24gbjIoKXtyZXR1cm57ZGlhbWV0ZXI6MTAwfX19KTtjb25zdCBvMj0iXG4gQGtleWZyYW1lcyBtYXQtcHJvZ3Jlc3Mtc3Bpbm5lci1zdHJva2Utcm90YXRlLURJQU1FVEVSIHtcbiAgICAwJSAgICAgIHsgc3Ryb2tlLWRhc2hvZmZzZXQ6IFNUQVJUX1ZBTFVFOyAgdHJhbnNmb3JtOiByb3RhdGUoMCk7IH1cbiAgICAxMi41JSAgIHsgc3Ryb2tlLWRhc2hvZmZzZXQ6IEVORF9WQUxVRTsgICAgdHJhbnNmb3JtOiByb3RhdGUoMCk7IH1cbiAgICAxMi41MDAxJSAgeyBzdHJva2UtZGFzaG9mZnNldDogRU5EX1ZBTFVFOyAgICB0cmFuc2Zvcm06IHJvdGF0ZVgoMTgwZGVnKSByb3RhdGUoNzIuNWRlZyk7IH1cbiAgICAyNSUgICAgIHsgc3Ryb2tlLWRhc2hvZmZzZXQ6IFNUQVJUX1ZBTFVFOyAgdHJhbnNmb3JtOiByb3RhdGVYKDE4MGRlZykgcm90YXRlKDcyLjVkZWcpOyB9XG5cbiAgICAyNS4wMDAxJSAgIHsgc3Ryb2tlLWRhc2hvZmZzZXQ6IFNUQVJUX1ZBTFVFOyAgdHJhbnNmb3JtOiByb3RhdGUoMjcwZGVnKTsgfVxuICAgIDM3LjUlICAgeyBzdHJva2UtZGFzaG9mZnNldDogRU5EX1ZBTFVFOyAgICB0cmFuc2Zvcm06IHJvdGF0ZSgyNzBkZWcpOyB9XG4gICAgMzcuNTAwMSUgIHsgc3Ryb2tlLWRhc2hvZmZzZXQ6IEVORF9WQUxVRTsgICAgdHJhbnNmb3JtOiByb3RhdGVYKDE4MGRlZykgcm90YXRlKDE2MS41ZGVnKTsgfVxuICAgIDUwJSAgICAgeyBzdHJva2UtZGFzaG9mZnNldDogU1RBUlRfVkFMVUU7ICB0cmFuc2Zvcm06IHJvdGF0ZVgoMTgwZGVnKSByb3RhdGUoMTYxLjVkZWcpOyB9XG5cbiAgICA1MC4wMDAxJSAgeyBzdHJva2UtZGFzaG9mZnNldDogU1RBUlRfVkFMVUU7ICB0cmFuc2Zvcm06IHJvdGF0ZSgxODBkZWcpOyB9XG4gICAgNjIuNSUgICB7IHN0cm9rZS1kYXNob2Zmc2V0OiBFTkRfVkFMVUU7ICAgIHRyYW5zZm9ybTogcm90YXRlKDE4MGRlZyk7IH1cbiAgICA2Mi41MDAxJSAgeyBzdHJva2UtZGFzaG9mZnNldDogRU5EX1ZBTFVFOyAgICB0cmFuc2Zvcm06IHJvdGF0ZVgoMTgwZGVnKSByb3RhdGUoMjUxLjVkZWcpOyB9XG4gICAgNzUlICAgICB7IHN0cm9rZS1kYXNob2Zmc2V0OiBTVEFSVF9WQUxVRTsgIHRyYW5zZm9ybTogcm90YXRlWCgxODBkZWcpIHJvdGF0ZSgyNTEuNWRlZyk7IH1cblxuICAgIDc1LjAwMDElICB7IHN0cm9rZS1kYXNob2Zmc2V0OiBTVEFSVF9WQUxVRTsgIHRyYW5zZm9ybTogcm90YXRlKDkwZGVnKTsgfVxuICAgIDg3LjUlICAgeyBzdHJva2UtZGFzaG9mZnNldDogRU5EX1ZBTFVFOyAgICB0cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZyk7IH1cbiAgICA4Ny41MDAxJSAgeyBzdHJva2UtZGFzaG9mZnNldDogRU5EX1ZBTFVFOyAgICB0cmFuc2Zvcm06IHJvdGF0ZVgoMTgwZGVnKSByb3RhdGUoMzQxLjVkZWcpOyB9XG4gICAgMTAwJSAgICB7IHN0cm9rZS1kYXNob2Zmc2V0OiBTVEFSVF9WQUxVRTsgIHRyYW5zZm9ybTogcm90YXRlWCgxODBkZWcpIHJvdGF0ZSgzNDEuNWRlZyk7IH1cbiAgfVxuIjtjbGFzcyBpMiBleHRlbmRzIHQye2NvbnN0cnVjdG9yKHQsZSxuLG8saSl7c3VwZXIodCksdGhpcy5fZG9jdW1lbnQ9bix0aGlzLl9kaWFtZXRlcj0xMDAsdGhpcy5fdmFsdWU9MCx0aGlzLl9mYWxsYmFja0FuaW1hdGlvbj0hMSx0aGlzLm1vZGU9ImRldGVybWluYXRlIjtjb25zdCBhPWkyLl9kaWFtZXRlcnM7dGhpcy5fc3Bpbm5lckFuaW1hdGlvbkxhYmVsPXRoaXMuX2dldFNwaW5uZXJBbmltYXRpb25MYWJlbCgpLGEuaGFzKG4uaGVhZCl8fGEuc2V0KG4uaGVhZCxuZXcgU2V0KFsxMDBdKSksdGhpcy5fZmFsbGJhY2tBbmltYXRpb249ZS5FREdFfHxlLlRSSURFTlQsdGhpcy5fbm9vcEFuaW1hdGlvbnM9Ik5vb3BBbmltYXRpb25zIj09PW8mJiEhaSYmIWkuX2ZvcmNlQW5pbWF0aW9ucyxpJiYoaS5kaWFtZXRlciYmKHRoaXMuZGlhbWV0ZXI9aS5kaWFtZXRlciksaS5zdHJva2VXaWR0aCYmKHRoaXMuc3Ryb2tlV2lkdGg9aS5zdHJva2VXaWR0aCkpfWdldCBkaWFtZXRlcigpe3JldHVybiB0aGlzLl9kaWFtZXRlcn1zZXQgZGlhbWV0ZXIodCl7dGhpcy5fZGlhbWV0ZXI9bkgodCksdGhpcy5fc3Bpbm5lckFuaW1hdGlvbkxhYmVsPXRoaXMuX2dldFNwaW5uZXJBbmltYXRpb25MYWJlbCgpLCF0aGlzLl9mYWxsYmFja0FuaW1hdGlvbiYmdGhpcy5fc3R5bGVSb290JiZ0aGlzLl9hdHRhY2hTdHlsZU5vZGUoKX1nZXQgc3Ryb2tlV2lkdGgoKXtyZXR1cm4gdGhpcy5fc3Ryb2tlV2lkdGh8fHRoaXMuZGlhbWV0ZXIvMTB9c2V0IHN0cm9rZVdpZHRoKHQpe3RoaXMuX3N0cm9rZVdpZHRoPW5IKHQpfWdldCB2YWx1ZSgpe3JldHVybiJkZXRlcm1pbmF0ZSI9PT10aGlzLm1vZGU/dGhpcy5fdmFsdWU6MH1zZXQgdmFsdWUodCl7dGhpcy5fdmFsdWU9TWF0aC5tYXgoMCxNYXRoLm1pbigxMDAsbkgodCkpKX1uZ09uSW5pdCgpe2NvbnN0IHQ9dGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O3RoaXMuX3N0eWxlUm9vdD1DSCh0KXx8dGhpcy5fZG9jdW1lbnQuaGVhZCx0aGlzLl9hdHRhY2hTdHlsZU5vZGUoKTt0LmNsYXNzTGlzdC5hZGQoYG1hdC1wcm9ncmVzcy1zcGlubmVyLWluZGV0ZXJtaW5hdGUke3RoaXMuX2ZhbGxiYWNrQW5pbWF0aW9uPyItZmFsbGJhY2siOiIifS1hbmltYXRpb25gKX1fZ2V0Q2lyY2xlUmFkaXVzKCl7cmV0dXJuKHRoaXMuZGlhbWV0ZXItMTApLzJ9X2dldFZpZXdCb3goKXtjb25zdCB0PTIqdGhpcy5fZ2V0Q2lyY2xlUmFkaXVzKCkrdGhpcy5zdHJva2VXaWR0aDtyZXR1cm5gMCAwICR7dH0gJHt0fWB9X2dldFN0cm9rZUNpcmN1bWZlcmVuY2UoKXtyZXR1cm4gMipNYXRoLlBJKnRoaXMuX2dldENpcmNsZVJhZGl1cygpfV9nZXRTdHJva2VEYXNoT2Zmc2V0KCl7cmV0dXJuImRldGVybWluYXRlIj09PXRoaXMubW9kZT90aGlzLl9nZXRTdHJva2VDaXJjdW1mZXJlbmNlKCkqKDEwMC10aGlzLl92YWx1ZSkvMTAwOnRoaXMuX2ZhbGxiYWNrQW5pbWF0aW9uJiYiaW5kZXRlcm1pbmF0ZSI9PT10aGlzLm1vZGU/LjIqdGhpcy5fZ2V0U3Ryb2tlQ2lyY3VtZmVyZW5jZSgpOm51bGx9X2dldENpcmNsZVN0cm9rZVdpZHRoKCl7cmV0dXJuIHRoaXMuc3Ryb2tlV2lkdGgvdGhpcy5kaWFtZXRlcioxMDB9X2F0dGFjaFN0eWxlTm9kZSgpe2NvbnN0IHQ9dGhpcy5fc3R5bGVSb290LGU9dGhpcy5fZGlhbWV0ZXIsbj1pMi5fZGlhbWV0ZXJzO2xldCBvPW4uZ2V0KHQpO2lmKCFvfHwhby5oYXMoZSkpe2NvbnN0IGk9dGhpcy5fZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3R5bGUiKTtpLnNldEF0dHJpYnV0ZSgibWF0LXNwaW5uZXItYW5pbWF0aW9uIix0aGlzLl9zcGlubmVyQW5pbWF0aW9uTGFiZWwpLGkudGV4dENvbnRlbnQ9dGhpcy5fZ2V0QW5pbWF0aW9uVGV4dCgpLHQuYXBwZW5kQ2hpbGQoaSksb3x8KG89bmV3IFNldCxuLnNldCh0LG8pKSxvLmFkZChlKX19X2dldEFuaW1hdGlvblRleHQoKXtjb25zdCB0PXRoaXMuX2dldFN0cm9rZUNpcmN1bWZlcmVuY2UoKTtyZXR1cm4gbzIucmVwbGFjZSgvU1RBUlRfVkFMVUUvZywiIisuOTUqdCkucmVwbGFjZSgvRU5EX1ZBTFVFL2csIiIrLjIqdCkucmVwbGFjZSgvRElBTUVURVIvZyxgJHt0aGlzLl9zcGlubmVyQW5pbWF0aW9uTGFiZWx9YCl9X2dldFNwaW5uZXJBbmltYXRpb25MYWJlbCgpe3JldHVybiB0aGlzLmRpYW1ldGVyLnRvU3RyaW5nKCkucmVwbGFjZSgiLiIsIl8iKX19aTIuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGkyKShnZihLaCksZ2YoY0gpLGdmKHNNLDgpLGdmKGNrLDgpLGdmKGUyKSl9LGkyLsm1Y21wPXNvKHt0eXBlOmkyLHNlbGVjdG9yczpbWyJtYXQtcHJvZ3Jlc3Mtc3Bpbm5lciJdXSxob3N0QXR0cnM6WyJyb2xlIiwicHJvZ3Jlc3NiYXIiLCJ0YWJpbmRleCIsIi0xIiwxLCJtYXQtcHJvZ3Jlc3Mtc3Bpbm5lciJdLGhvc3RWYXJzOjEwLGhvc3RCaW5kaW5nczpmdW5jdGlvbiB0KGUsbil7MiZlJiYoeW0oImFyaWEtdmFsdWVtaW4iLCJkZXRlcm1pbmF0ZSI9PT1uLm1vZGU/MDpudWxsKSgiYXJpYS12YWx1ZW1heCIsImRldGVybWluYXRlIj09PW4ubW9kZT8xMDA6bnVsbCkoImFyaWEtdmFsdWVub3ciLCJkZXRlcm1pbmF0ZSI9PT1uLm1vZGU/bi52YWx1ZTpudWxsKSgibW9kZSIsbi5tb2RlKSxsdSgid2lkdGgiLG4uZGlhbWV0ZXIsInB4IikoImhlaWdodCIsbi5kaWFtZXRlciwicHgiKSxjdSgiX21hdC1hbmltYXRpb24tbm9vcGFibGUiLG4uX25vb3BBbmltYXRpb25zKSl9LGlucHV0czp7Y29sb3I6ImNvbG9yIixtb2RlOiJtb2RlIixkaWFtZXRlcjoiZGlhbWV0ZXIiLHN0cm9rZVdpZHRoOiJzdHJva2VXaWR0aCIsdmFsdWU6InZhbHVlIn0sZXhwb3J0QXM6WyJtYXRQcm9ncmVzc1NwaW5uZXIiXSxmZWF0dXJlczpbUXBdLGRlY2xzOjMsdmFyczo4LGNvbnN0czpbWyJwcmVzZXJ2ZUFzcGVjdFJhdGlvIiwieE1pZFlNaWQgbWVldCIsImZvY3VzYWJsZSIsImZhbHNlIiwiYXJpYS1oaWRkZW4iLCJ0cnVlIiwzLCJuZ1N3aXRjaCJdLFsiY3giLCI1MCUiLCJjeSIsIjUwJSIsMywiYW5pbWF0aW9uLW5hbWUiLCJzdHJva2UtZGFzaG9mZnNldCIsInN0cm9rZS1kYXNoYXJyYXkiLCJzdHJva2Utd2lkdGgiLDQsIm5nU3dpdGNoQ2FzZSJdLFsiY3giLCI1MCUiLCJjeSIsIjUwJSIsMywic3Ryb2tlLWRhc2hvZmZzZXQiLCJzdHJva2UtZGFzaGFycmF5Iiwic3Ryb2tlLXdpZHRoIiw0LCJuZ1N3aXRjaENhc2UiXSxbImN4IiwiNTAlIiwiY3kiLCI1MCUiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKG9hKCksQ2YoMCwic3ZnIiwwKSxIbSgxLFgzLDEsOSwiY2lyY2xlIiwxKSxIbSgyLEszLDEsNywiY2lyY2xlIiwyKSxNZigpKSwyJmUmJihsdSgid2lkdGgiLG4uZGlhbWV0ZXIsInB4IikoImhlaWdodCIsbi5kaWFtZXRlciwicHgiKSxiZigibmdTd2l0Y2giLCJpbmRldGVybWluYXRlIj09PW4ubW9kZSkseW0oInZpZXdCb3giLG4uX2dldFZpZXdCb3goKSksRGMoMSksYmYoIm5nU3dpdGNoQ2FzZSIsITApLERjKDEpLGJmKCJuZ1N3aXRjaENhc2UiLCExKSl9LGRpcmVjdGl2ZXM6W0R2LFJ2XSxzdHlsZXM6WyQzXSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KSxpMi5fZGlhbWV0ZXJzPW5ldyBXZWFrTWFwLGkyLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6S2h9LHt0eXBlOmNIfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W3NNXX1dfSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W2NrXX1dfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbZTJdfV19XSxpMi5wcm9wRGVjb3JhdG9ycz17ZGlhbWV0ZXI6W3t0eXBlOlJffV0sc3Ryb2tlV2lkdGg6W3t0eXBlOlJffV0sbW9kZTpbe3R5cGU6Ul99XSx2YWx1ZTpbe3R5cGU6Ul99XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihpMixbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJtYXQtcHJvZ3Jlc3Mtc3Bpbm5lciIsZXhwb3J0QXM6Im1hdFByb2dyZXNzU3Bpbm5lciIsaG9zdDp7cm9sZToicHJvZ3Jlc3NiYXIiLGNsYXNzOiJtYXQtcHJvZ3Jlc3Mtc3Bpbm5lciIsdGFiaW5kZXg6Ii0xIiwiW2NsYXNzLl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlXSI6Il9ub29wQW5pbWF0aW9ucyIsIltzdHlsZS53aWR0aC5weF0iOiJkaWFtZXRlciIsIltzdHlsZS5oZWlnaHQucHhdIjoiZGlhbWV0ZXIiLCJbYXR0ci5hcmlhLXZhbHVlbWluXSI6J21vZGUgPT09ICJkZXRlcm1pbmF0ZSIgPyAwIDogbnVsbCcsIlthdHRyLmFyaWEtdmFsdWVtYXhdIjonbW9kZSA9PT0gImRldGVybWluYXRlIiA/IDEwMCA6IG51bGwnLCJbYXR0ci5hcmlhLXZhbHVlbm93XSI6J21vZGUgPT09ICJkZXRlcm1pbmF0ZSIgPyB2YWx1ZSA6IG51bGwnLCJbYXR0ci5tb2RlXSI6Im1vZGUifSxpbnB1dHM6WyJjb2xvciJdLHRlbXBsYXRlOidceDNjIS0tXG4gIHByZXNlcnZlQXNwZWN0UmF0aW8gb2YgeE1pZFlNaWQgbWVldCBhcyB0aGUgY2VudGVyIG9mIHRoZSB2aWV3cG9ydCBpcyB0aGUgY2lyY2xlXCdzXG4gIGNlbnRlci4gVGhlIGNlbnRlciBvZiB0aGUgY2lyY2xlIHdpbGwgcmVtYWluIGF0IHRoZSBjZW50ZXIgb2YgdGhlIG1hdC1wcm9ncmVzcy1zcGlubmVyXG4gIGVsZW1lbnQgY29udGFpbmluZyB0aGUgU1ZHLiBgZm9jdXNhYmxlPSJmYWxzZSJgIHByZXZlbnRzIElFIGZyb20gYWxsb3dpbmcgdGhlIHVzZXIgdG9cbiAgdGFiIGludG8gdGhlIFNWRyBlbGVtZW50LlxuLS1ceDNlXG5ceDNjIS0tXG4gIEFsbCBjaGlsZHJlbiBuZWVkIHRvIGJlIGhpZGRlbiBmb3Igc2NyZWVuIHJlYWRlcnMgaW4gb3JkZXIgdG8gc3VwcG9ydCBDaHJvbWVWb3guXG4gIE1vcmUgY29udGV4dCBpbiB0aGUgaXNzdWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2NvbXBvbmVudHMvaXNzdWVzLzIyMTY1LlxuLS1ceDNlXG48c3ZnXG4gIFtzdHlsZS53aWR0aC5weF09ImRpYW1ldGVyIlxuICBbc3R5bGUuaGVpZ2h0LnB4XT0iZGlhbWV0ZXIiXG4gIFthdHRyLnZpZXdCb3hdPSJfZ2V0Vmlld0JveCgpIlxuICBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCBtZWV0IlxuICBmb2N1c2FibGU9ImZhbHNlIlxuICBbbmdTd2l0Y2hdPSJtb2RlID09PSBcJ2luZGV0ZXJtaW5hdGVcJyJcbiAgYXJpYS1oaWRkZW49InRydWUiPlxuXG4gIFx4M2MhLS1cbiAgICBUZWNobmljYWxseSB3ZSBjYW4gcmV1c2UgdGhlIHNhbWUgYGNpcmNsZWAgZWxlbWVudCwgaG93ZXZlciBTYWZhcmkgaGFzIGFuIGlzc3VlIHRoYXQgYnJlYWtzXG4gICAgdGhlIFNWRyByZW5kZXJpbmcgaW4gZGV0ZXJtaW5hdGUgbW9kZSwgYWZ0ZXIgc3dpdGNoaW5nIGJldHdlZW4gaW5kZXRlcm1pbmF0ZSBhbmQgZGV0ZXJtaW5hdGUuXG4gICAgVXNpbmcgYSBkaWZmZXJlbnQgZWxlbWVudCBhdm9pZHMgdGhlIGlzc3VlLiBBbiBhbHRlcm5hdGl2ZSB0byB0aGlzIGlzIGFkZGluZyBgZGlzcGxheTogbm9uZWBcbiAgICBmb3IgYSBzcGxpdCBzZWNvbmQgYW5kIHRoZW4gcmVtb3ZpbmcgaXQgd2hlbiBzd2l0Y2hpbmcgYmV0d2VlbiBtb2RlcywgYnV0IGl0XCdzIGhhcmQgdG8ga25vd1xuICAgIGZvciBob3cgbG9uZyB0byBoaWRlIHRoZSBlbGVtZW50IGFuZCBpdCBjYW4gY2F1c2UgdGhlIFVJIHRvIGJsaW5rLlxuICAtLVx4M2VcbiAgPGNpcmNsZVxuICAgICpuZ1N3aXRjaENhc2U9InRydWUiXG4gICAgY3g9IjUwJSJcbiAgICBjeT0iNTAlIlxuICAgIFthdHRyLnJdPSJfZ2V0Q2lyY2xlUmFkaXVzKCkiXG4gICAgW3N0eWxlLmFuaW1hdGlvbi1uYW1lXT0iXCdtYXQtcHJvZ3Jlc3Mtc3Bpbm5lci1zdHJva2Utcm90YXRlLVwnICsgX3NwaW5uZXJBbmltYXRpb25MYWJlbCJcbiAgICBbc3R5bGUuc3Ryb2tlLWRhc2hvZmZzZXQucHhdPSJfZ2V0U3Ryb2tlRGFzaE9mZnNldCgpIlxuICAgIFtzdHlsZS5zdHJva2UtZGFzaGFycmF5LnB4XT0iX2dldFN0cm9rZUNpcmN1bWZlcmVuY2UoKSJcbiAgICBbc3R5bGUuc3Ryb2tlLXdpZHRoLiVdPSJfZ2V0Q2lyY2xlU3Ryb2tlV2lkdGgoKSI+PC9jaXJjbGU+XG5cbiAgPGNpcmNsZVxuICAgICpuZ1N3aXRjaENhc2U9ImZhbHNlIlxuICAgIGN4PSI1MCUiXG4gICAgY3k9IjUwJSJcbiAgICBbYXR0ci5yXT0iX2dldENpcmNsZVJhZGl1cygpIlxuICAgIFtzdHlsZS5zdHJva2UtZGFzaG9mZnNldC5weF09Il9nZXRTdHJva2VEYXNoT2Zmc2V0KCkiXG4gICAgW3N0eWxlLnN0cm9rZS1kYXNoYXJyYXkucHhdPSJfZ2V0U3Ryb2tlQ2lyY3VtZmVyZW5jZSgpIlxuICAgIFtzdHlsZS5zdHJva2Utd2lkdGguJV09Il9nZXRDaXJjbGVTdHJva2VXaWR0aCgpIj48L2NpcmNsZT5cbjwvc3ZnPlxuJyxjaGFuZ2VEZXRlY3Rpb246am4uT25QdXNoLGVuY2Fwc3VsYXRpb246V24uTm9uZSxzdHlsZXM6WyIubWF0LXByb2dyZXNzLXNwaW5uZXJ7ZGlzcGxheTpibG9jaztwb3NpdGlvbjpyZWxhdGl2ZTtvdmVyZmxvdzpoaWRkZW59Lm1hdC1wcm9ncmVzcy1zcGlubmVyIHN2Z3twb3NpdGlvbjphYnNvbHV0ZTt0cmFuc2Zvcm06cm90YXRlKC05MGRlZyk7dG9wOjA7bGVmdDowO3RyYW5zZm9ybS1vcmlnaW46Y2VudGVyO292ZXJmbG93OnZpc2libGV9Lm1hdC1wcm9ncmVzcy1zcGlubmVyIGNpcmNsZXtmaWxsOnRyYW5zcGFyZW50O3RyYW5zZm9ybS1vcmlnaW46Y2VudGVyO3RyYW5zaXRpb246c3Ryb2tlLWRhc2hvZmZzZXQgMjI1bXMgbGluZWFyfS5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZS5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lciBjaXJjbGV7dHJhbnNpdGlvbjpub25lO2FuaW1hdGlvbjpub25lfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1wcm9ncmVzcy1zcGlubmVyIGNpcmNsZXtzdHJva2U6Y3VycmVudENvbG9yO3N0cm9rZTpDYW52YXNUZXh0fS5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lci5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lci1pbmRldGVybWluYXRlLWFuaW1hdGlvblttb2RlPWluZGV0ZXJtaW5hdGVdIHN2Z3thbmltYXRpb246bWF0LXByb2dyZXNzLXNwaW5uZXItbGluZWFyLXJvdGF0ZSAyMDAwbXMgbGluZWFyIGluZmluaXRlfS5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZS5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lci5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lci1pbmRldGVybWluYXRlLWFuaW1hdGlvblttb2RlPWluZGV0ZXJtaW5hdGVdIHN2Z3t0cmFuc2l0aW9uOm5vbmU7YW5pbWF0aW9uOm5vbmV9Lm1hdC1wcm9ncmVzcy1zcGlubmVyLm1hdC1wcm9ncmVzcy1zcGlubmVyLWluZGV0ZXJtaW5hdGUtYW5pbWF0aW9uW21vZGU9aW5kZXRlcm1pbmF0ZV0gY2lyY2xle3RyYW5zaXRpb24tcHJvcGVydHk6c3Ryb2tlO2FuaW1hdGlvbi1kdXJhdGlvbjo0MDAwbXM7YW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjpjdWJpYy1iZXppZXIoMC4zNSwgMCwgMC4yNSwgMSk7YW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDppbmZpbml0ZX0uX21hdC1hbmltYXRpb24tbm9vcGFibGUubWF0LXByb2dyZXNzLXNwaW5uZXIubWF0LXByb2dyZXNzLXNwaW5uZXItaW5kZXRlcm1pbmF0ZS1hbmltYXRpb25bbW9kZT1pbmRldGVybWluYXRlXSBjaXJjbGV7dHJhbnNpdGlvbjpub25lO2FuaW1hdGlvbjpub25lfS5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lci5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lci1pbmRldGVybWluYXRlLWZhbGxiYWNrLWFuaW1hdGlvblttb2RlPWluZGV0ZXJtaW5hdGVdIHN2Z3thbmltYXRpb246bWF0LXByb2dyZXNzLXNwaW5uZXItc3Ryb2tlLXJvdGF0ZS1mYWxsYmFjayAxMDAwMG1zIGN1YmljLWJlemllcigwLjg3LCAwLjAzLCAwLjMzLCAxKSBpbmZpbml0ZX0uX21hdC1hbmltYXRpb24tbm9vcGFibGUubWF0LXByb2dyZXNzLXNwaW5uZXIubWF0LXByb2dyZXNzLXNwaW5uZXItaW5kZXRlcm1pbmF0ZS1mYWxsYmFjay1hbmltYXRpb25bbW9kZT1pbmRldGVybWluYXRlXSBzdmd7dHJhbnNpdGlvbjpub25lO2FuaW1hdGlvbjpub25lfS5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lci5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lci1pbmRldGVybWluYXRlLWZhbGxiYWNrLWFuaW1hdGlvblttb2RlPWluZGV0ZXJtaW5hdGVdIGNpcmNsZXt0cmFuc2l0aW9uLXByb3BlcnR5OnN0cm9rZX0uX21hdC1hbmltYXRpb24tbm9vcGFibGUubWF0LXByb2dyZXNzLXNwaW5uZXIubWF0LXByb2dyZXNzLXNwaW5uZXItaW5kZXRlcm1pbmF0ZS1mYWxsYmFjay1hbmltYXRpb25bbW9kZT1pbmRldGVybWluYXRlXSBjaXJjbGV7dHJhbnNpdGlvbjpub25lO2FuaW1hdGlvbjpub25lfUBrZXlmcmFtZXMgbWF0LXByb2dyZXNzLXNwaW5uZXItbGluZWFyLXJvdGF0ZXswJXt0cmFuc2Zvcm06cm90YXRlKDBkZWcpfTEwMCV7dHJhbnNmb3JtOnJvdGF0ZSgzNjBkZWcpfX1Aa2V5ZnJhbWVzIG1hdC1wcm9ncmVzcy1zcGlubmVyLXN0cm9rZS1yb3RhdGUtMTAwezAle3N0cm9rZS1kYXNob2Zmc2V0OjI2OC42MDYxNzE1NzVweDt0cmFuc2Zvcm06cm90YXRlKDApfTEyLjUle3N0cm9rZS1kYXNob2Zmc2V0OjU2LjU0ODY2NzdweDt0cmFuc2Zvcm06cm90YXRlKDApfTEyLjUwMDEle3N0cm9rZS1kYXNob2Zmc2V0OjU2LjU0ODY2NzdweDt0cmFuc2Zvcm06cm90YXRlWCgxODBkZWcpIHJvdGF0ZSg3Mi41ZGVnKX0yNSV7c3Ryb2tlLWRhc2hvZmZzZXQ6MjY4LjYwNjE3MTU3NXB4O3RyYW5zZm9ybTpyb3RhdGVYKDE4MGRlZykgcm90YXRlKDcyLjVkZWcpfTI1LjAwMDEle3N0cm9rZS1kYXNob2Zmc2V0OjI2OC42MDYxNzE1NzVweDt0cmFuc2Zvcm06cm90YXRlKDI3MGRlZyl9MzcuNSV7c3Ryb2tlLWRhc2hvZmZzZXQ6NTYuNTQ4NjY3N3B4O3RyYW5zZm9ybTpyb3RhdGUoMjcwZGVnKX0zNy41MDAxJXtzdHJva2UtZGFzaG9mZnNldDo1Ni41NDg2Njc3cHg7dHJhbnNmb3JtOnJvdGF0ZVgoMTgwZGVnKSByb3RhdGUoMTYxLjVkZWcpfTUwJXtzdHJva2UtZGFzaG9mZnNldDoyNjguNjA2MTcxNTc1cHg7dHJhbnNmb3JtOnJvdGF0ZVgoMTgwZGVnKSByb3RhdGUoMTYxLjVkZWcpfTUwLjAwMDEle3N0cm9rZS1kYXNob2Zmc2V0OjI2OC42MDYxNzE1NzVweDt0cmFuc2Zvcm06cm90YXRlKDE4MGRlZyl9NjIuNSV7c3Ryb2tlLWRhc2hvZmZzZXQ6NTYuNTQ4NjY3N3B4O3RyYW5zZm9ybTpyb3RhdGUoMTgwZGVnKX02Mi41MDAxJXtzdHJva2UtZGFzaG9mZnNldDo1Ni41NDg2Njc3cHg7dHJhbnNmb3JtOnJvdGF0ZVgoMTgwZGVnKSByb3RhdGUoMjUxLjVkZWcpfTc1JXtzdHJva2UtZGFzaG9mZnNldDoyNjguNjA2MTcxNTc1cHg7dHJhbnNmb3JtOnJvdGF0ZVgoMTgwZGVnKSByb3RhdGUoMjUxLjVkZWcpfTc1LjAwMDEle3N0cm9rZS1kYXNob2Zmc2V0OjI2OC42MDYxNzE1NzVweDt0cmFuc2Zvcm06cm90YXRlKDkwZGVnKX04Ny41JXtzdHJva2UtZGFzaG9mZnNldDo1Ni41NDg2Njc3cHg7dHJhbnNmb3JtOnJvdGF0ZSg5MGRlZyl9ODcuNTAwMSV7c3Ryb2tlLWRhc2hvZmZzZXQ6NTYuNTQ4NjY3N3B4O3RyYW5zZm9ybTpyb3RhdGVYKDE4MGRlZykgcm90YXRlKDM0MS41ZGVnKX0xMDAle3N0cm9rZS1kYXNob2Zmc2V0OjI2OC42MDYxNzE1NzVweDt0cmFuc2Zvcm06cm90YXRlWCgxODBkZWcpIHJvdGF0ZSgzNDEuNWRlZyl9fUBrZXlmcmFtZXMgbWF0LXByb2dyZXNzLXNwaW5uZXItc3Ryb2tlLXJvdGF0ZS1mYWxsYmFja3swJXt0cmFuc2Zvcm06cm90YXRlKDBkZWcpfTI1JXt0cmFuc2Zvcm06cm90YXRlKDExNzBkZWcpfTUwJXt0cmFuc2Zvcm06cm90YXRlKDIzNDBkZWcpfTc1JXt0cmFuc2Zvcm06cm90YXRlKDM1MTBkZWcpfTEwMCV7dHJhbnNmb3JtOnJvdGF0ZSg0NjgwZGVnKX19XG4iXX1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOktofSx7dHlwZTpjSH0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltzTV19XX0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltja119XX0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W2UyXX1dfV19KSx7bW9kZTpbe3R5cGU6Ul99XSxkaWFtZXRlcjpbe3R5cGU6Ul99XSxzdHJva2VXaWR0aDpbe3R5cGU6Ul99XSx2YWx1ZTpbe3R5cGU6Ul99XX0pO2NsYXNzIGEyIGV4dGVuZHMgaTJ7Y29uc3RydWN0b3IodCxlLG4sbyxpKXtzdXBlcih0LGUsbixvLGkpLHRoaXMubW9kZT0iaW5kZXRlcm1pbmF0ZSJ9fWEyLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxhMikoZ2YoS2gpLGdmKGNIKSxnZihzTSw4KSxnZihjayw4KSxnZihlMikpfSxhMi7JtWNtcD1zbyh7dHlwZTphMixzZWxlY3RvcnM6W1sibWF0LXNwaW5uZXIiXV0saG9zdEF0dHJzOlsicm9sZSIsInByb2dyZXNzYmFyIiwibW9kZSIsImluZGV0ZXJtaW5hdGUiLDEsIm1hdC1zcGlubmVyIiwibWF0LXByb2dyZXNzLXNwaW5uZXIiXSxob3N0VmFyczo2LGhvc3RCaW5kaW5nczpmdW5jdGlvbiB0KGUsbil7MiZlJiYobHUoIndpZHRoIixuLmRpYW1ldGVyLCJweCIpKCJoZWlnaHQiLG4uZGlhbWV0ZXIsInB4IiksY3UoIl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlIixuLl9ub29wQW5pbWF0aW9ucykpfSxpbnB1dHM6e2NvbG9yOiJjb2xvciJ9LGZlYXR1cmVzOltRcF0sZGVjbHM6Myx2YXJzOjgsY29uc3RzOltbInByZXNlcnZlQXNwZWN0UmF0aW8iLCJ4TWlkWU1pZCBtZWV0IiwiZm9jdXNhYmxlIiwiZmFsc2UiLCJhcmlhLWhpZGRlbiIsInRydWUiLDMsIm5nU3dpdGNoIl0sWyJjeCIsIjUwJSIsImN5IiwiNTAlIiwzLCJhbmltYXRpb24tbmFtZSIsInN0cm9rZS1kYXNob2Zmc2V0Iiwic3Ryb2tlLWRhc2hhcnJheSIsInN0cm9rZS13aWR0aCIsNCwibmdTd2l0Y2hDYXNlIl0sWyJjeCIsIjUwJSIsImN5IiwiNTAlIiwzLCJzdHJva2UtZGFzaG9mZnNldCIsInN0cm9rZS1kYXNoYXJyYXkiLCJzdHJva2Utd2lkdGgiLDQsIm5nU3dpdGNoQ2FzZSJdLFsiY3giLCI1MCUiLCJjeSIsIjUwJSJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYob2EoKSxDZigwLCJzdmciLDApLEhtKDEsSjMsMSw5LCJjaXJjbGUiLDEpLEhtKDIsUTMsMSw3LCJjaXJjbGUiLDIpLE1mKCkpLDImZSYmKGx1KCJ3aWR0aCIsbi5kaWFtZXRlciwicHgiKSgiaGVpZ2h0IixuLmRpYW1ldGVyLCJweCIpLGJmKCJuZ1N3aXRjaCIsImluZGV0ZXJtaW5hdGUiPT09bi5tb2RlKSx5bSgidmlld0JveCIsbi5fZ2V0Vmlld0JveCgpKSxEYygxKSxiZigibmdTd2l0Y2hDYXNlIiwhMCksRGMoMSksYmYoIm5nU3dpdGNoQ2FzZSIsITEpKX0sZGlyZWN0aXZlczpbRHYsUnZdLHN0eWxlczpbJDNdLGVuY2Fwc3VsYXRpb246MixjaGFuZ2VEZXRlY3Rpb246MH0pLGEyLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6S2h9LHt0eXBlOmNIfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W3NNXX1dfSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W2NrXX1dfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbZTJdfV19XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKGEyLFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6Im1hdC1zcGlubmVyIixob3N0Ontyb2xlOiJwcm9ncmVzc2JhciIsbW9kZToiaW5kZXRlcm1pbmF0ZSIsY2xhc3M6Im1hdC1zcGlubmVyIG1hdC1wcm9ncmVzcy1zcGlubmVyIiwiW2NsYXNzLl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlXSI6Il9ub29wQW5pbWF0aW9ucyIsIltzdHlsZS53aWR0aC5weF0iOiJkaWFtZXRlciIsIltzdHlsZS5oZWlnaHQucHhdIjoiZGlhbWV0ZXIifSxpbnB1dHM6WyJjb2xvciJdLHRlbXBsYXRlOidceDNjIS0tXG4gIHByZXNlcnZlQXNwZWN0UmF0aW8gb2YgeE1pZFlNaWQgbWVldCBhcyB0aGUgY2VudGVyIG9mIHRoZSB2aWV3cG9ydCBpcyB0aGUgY2lyY2xlXCdzXG4gIGNlbnRlci4gVGhlIGNlbnRlciBvZiB0aGUgY2lyY2xlIHdpbGwgcmVtYWluIGF0IHRoZSBjZW50ZXIgb2YgdGhlIG1hdC1wcm9ncmVzcy1zcGlubmVyXG4gIGVsZW1lbnQgY29udGFpbmluZyB0aGUgU1ZHLiBgZm9jdXNhYmxlPSJmYWxzZSJgIHByZXZlbnRzIElFIGZyb20gYWxsb3dpbmcgdGhlIHVzZXIgdG9cbiAgdGFiIGludG8gdGhlIFNWRyBlbGVtZW50LlxuLS1ceDNlXG5ceDNjIS0tXG4gIEFsbCBjaGlsZHJlbiBuZWVkIHRvIGJlIGhpZGRlbiBmb3Igc2NyZWVuIHJlYWRlcnMgaW4gb3JkZXIgdG8gc3VwcG9ydCBDaHJvbWVWb3guXG4gIE1vcmUgY29udGV4dCBpbiB0aGUgaXNzdWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2NvbXBvbmVudHMvaXNzdWVzLzIyMTY1LlxuLS1ceDNlXG48c3ZnXG4gIFtzdHlsZS53aWR0aC5weF09ImRpYW1ldGVyIlxuICBbc3R5bGUuaGVpZ2h0LnB4XT0iZGlhbWV0ZXIiXG4gIFthdHRyLnZpZXdCb3hdPSJfZ2V0Vmlld0JveCgpIlxuICBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCBtZWV0IlxuICBmb2N1c2FibGU9ImZhbHNlIlxuICBbbmdTd2l0Y2hdPSJtb2RlID09PSBcJ2luZGV0ZXJtaW5hdGVcJyJcbiAgYXJpYS1oaWRkZW49InRydWUiPlxuXG4gIFx4M2MhLS1cbiAgICBUZWNobmljYWxseSB3ZSBjYW4gcmV1c2UgdGhlIHNhbWUgYGNpcmNsZWAgZWxlbWVudCwgaG93ZXZlciBTYWZhcmkgaGFzIGFuIGlzc3VlIHRoYXQgYnJlYWtzXG4gICAgdGhlIFNWRyByZW5kZXJpbmcgaW4gZGV0ZXJtaW5hdGUgbW9kZSwgYWZ0ZXIgc3dpdGNoaW5nIGJldHdlZW4gaW5kZXRlcm1pbmF0ZSBhbmQgZGV0ZXJtaW5hdGUuXG4gICAgVXNpbmcgYSBkaWZmZXJlbnQgZWxlbWVudCBhdm9pZHMgdGhlIGlzc3VlLiBBbiBhbHRlcm5hdGl2ZSB0byB0aGlzIGlzIGFkZGluZyBgZGlzcGxheTogbm9uZWBcbiAgICBmb3IgYSBzcGxpdCBzZWNvbmQgYW5kIHRoZW4gcmVtb3ZpbmcgaXQgd2hlbiBzd2l0Y2hpbmcgYmV0d2VlbiBtb2RlcywgYnV0IGl0XCdzIGhhcmQgdG8ga25vd1xuICAgIGZvciBob3cgbG9uZyB0byBoaWRlIHRoZSBlbGVtZW50IGFuZCBpdCBjYW4gY2F1c2UgdGhlIFVJIHRvIGJsaW5rLlxuICAtLVx4M2VcbiAgPGNpcmNsZVxuICAgICpuZ1N3aXRjaENhc2U9InRydWUiXG4gICAgY3g9IjUwJSJcbiAgICBjeT0iNTAlIlxuICAgIFthdHRyLnJdPSJfZ2V0Q2lyY2xlUmFkaXVzKCkiXG4gICAgW3N0eWxlLmFuaW1hdGlvbi1uYW1lXT0iXCdtYXQtcHJvZ3Jlc3Mtc3Bpbm5lci1zdHJva2Utcm90YXRlLVwnICsgX3NwaW5uZXJBbmltYXRpb25MYWJlbCJcbiAgICBbc3R5bGUuc3Ryb2tlLWRhc2hvZmZzZXQucHhdPSJfZ2V0U3Ryb2tlRGFzaE9mZnNldCgpIlxuICAgIFtzdHlsZS5zdHJva2UtZGFzaGFycmF5LnB4XT0iX2dldFN0cm9rZUNpcmN1bWZlcmVuY2UoKSJcbiAgICBbc3R5bGUuc3Ryb2tlLXdpZHRoLiVdPSJfZ2V0Q2lyY2xlU3Ryb2tlV2lkdGgoKSI+PC9jaXJjbGU+XG5cbiAgPGNpcmNsZVxuICAgICpuZ1N3aXRjaENhc2U9ImZhbHNlIlxuICAgIGN4PSI1MCUiXG4gICAgY3k9IjUwJSJcbiAgICBbYXR0ci5yXT0iX2dldENpcmNsZVJhZGl1cygpIlxuICAgIFtzdHlsZS5zdHJva2UtZGFzaG9mZnNldC5weF09Il9nZXRTdHJva2VEYXNoT2Zmc2V0KCkiXG4gICAgW3N0eWxlLnN0cm9rZS1kYXNoYXJyYXkucHhdPSJfZ2V0U3Ryb2tlQ2lyY3VtZmVyZW5jZSgpIlxuICAgIFtzdHlsZS5zdHJva2Utd2lkdGguJV09Il9nZXRDaXJjbGVTdHJva2VXaWR0aCgpIj48L2NpcmNsZT5cbjwvc3ZnPlxuJyxjaGFuZ2VEZXRlY3Rpb246am4uT25QdXNoLGVuY2Fwc3VsYXRpb246V24uTm9uZSxzdHlsZXM6WyIubWF0LXByb2dyZXNzLXNwaW5uZXJ7ZGlzcGxheTpibG9jaztwb3NpdGlvbjpyZWxhdGl2ZTtvdmVyZmxvdzpoaWRkZW59Lm1hdC1wcm9ncmVzcy1zcGlubmVyIHN2Z3twb3NpdGlvbjphYnNvbHV0ZTt0cmFuc2Zvcm06cm90YXRlKC05MGRlZyk7dG9wOjA7bGVmdDowO3RyYW5zZm9ybS1vcmlnaW46Y2VudGVyO292ZXJmbG93OnZpc2libGV9Lm1hdC1wcm9ncmVzcy1zcGlubmVyIGNpcmNsZXtmaWxsOnRyYW5zcGFyZW50O3RyYW5zZm9ybS1vcmlnaW46Y2VudGVyO3RyYW5zaXRpb246c3Ryb2tlLWRhc2hvZmZzZXQgMjI1bXMgbGluZWFyfS5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZS5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lciBjaXJjbGV7dHJhbnNpdGlvbjpub25lO2FuaW1hdGlvbjpub25lfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1wcm9ncmVzcy1zcGlubmVyIGNpcmNsZXtzdHJva2U6Y3VycmVudENvbG9yO3N0cm9rZTpDYW52YXNUZXh0fS5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lci5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lci1pbmRldGVybWluYXRlLWFuaW1hdGlvblttb2RlPWluZGV0ZXJtaW5hdGVdIHN2Z3thbmltYXRpb246bWF0LXByb2dyZXNzLXNwaW5uZXItbGluZWFyLXJvdGF0ZSAyMDAwbXMgbGluZWFyIGluZmluaXRlfS5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZS5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lci5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lci1pbmRldGVybWluYXRlLWFuaW1hdGlvblttb2RlPWluZGV0ZXJtaW5hdGVdIHN2Z3t0cmFuc2l0aW9uOm5vbmU7YW5pbWF0aW9uOm5vbmV9Lm1hdC1wcm9ncmVzcy1zcGlubmVyLm1hdC1wcm9ncmVzcy1zcGlubmVyLWluZGV0ZXJtaW5hdGUtYW5pbWF0aW9uW21vZGU9aW5kZXRlcm1pbmF0ZV0gY2lyY2xle3RyYW5zaXRpb24tcHJvcGVydHk6c3Ryb2tlO2FuaW1hdGlvbi1kdXJhdGlvbjo0MDAwbXM7YW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjpjdWJpYy1iZXppZXIoMC4zNSwgMCwgMC4yNSwgMSk7YW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDppbmZpbml0ZX0uX21hdC1hbmltYXRpb24tbm9vcGFibGUubWF0LXByb2dyZXNzLXNwaW5uZXIubWF0LXByb2dyZXNzLXNwaW5uZXItaW5kZXRlcm1pbmF0ZS1hbmltYXRpb25bbW9kZT1pbmRldGVybWluYXRlXSBjaXJjbGV7dHJhbnNpdGlvbjpub25lO2FuaW1hdGlvbjpub25lfS5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lci5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lci1pbmRldGVybWluYXRlLWZhbGxiYWNrLWFuaW1hdGlvblttb2RlPWluZGV0ZXJtaW5hdGVdIHN2Z3thbmltYXRpb246bWF0LXByb2dyZXNzLXNwaW5uZXItc3Ryb2tlLXJvdGF0ZS1mYWxsYmFjayAxMDAwMG1zIGN1YmljLWJlemllcigwLjg3LCAwLjAzLCAwLjMzLCAxKSBpbmZpbml0ZX0uX21hdC1hbmltYXRpb24tbm9vcGFibGUubWF0LXByb2dyZXNzLXNwaW5uZXIubWF0LXByb2dyZXNzLXNwaW5uZXItaW5kZXRlcm1pbmF0ZS1mYWxsYmFjay1hbmltYXRpb25bbW9kZT1pbmRldGVybWluYXRlXSBzdmd7dHJhbnNpdGlvbjpub25lO2FuaW1hdGlvbjpub25lfS5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lci5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lci1pbmRldGVybWluYXRlLWZhbGxiYWNrLWFuaW1hdGlvblttb2RlPWluZGV0ZXJtaW5hdGVdIGNpcmNsZXt0cmFuc2l0aW9uLXByb3BlcnR5OnN0cm9rZX0uX21hdC1hbmltYXRpb24tbm9vcGFibGUubWF0LXByb2dyZXNzLXNwaW5uZXIubWF0LXByb2dyZXNzLXNwaW5uZXItaW5kZXRlcm1pbmF0ZS1mYWxsYmFjay1hbmltYXRpb25bbW9kZT1pbmRldGVybWluYXRlXSBjaXJjbGV7dHJhbnNpdGlvbjpub25lO2FuaW1hdGlvbjpub25lfUBrZXlmcmFtZXMgbWF0LXByb2dyZXNzLXNwaW5uZXItbGluZWFyLXJvdGF0ZXswJXt0cmFuc2Zvcm06cm90YXRlKDBkZWcpfTEwMCV7dHJhbnNmb3JtOnJvdGF0ZSgzNjBkZWcpfX1Aa2V5ZnJhbWVzIG1hdC1wcm9ncmVzcy1zcGlubmVyLXN0cm9rZS1yb3RhdGUtMTAwezAle3N0cm9rZS1kYXNob2Zmc2V0OjI2OC42MDYxNzE1NzVweDt0cmFuc2Zvcm06cm90YXRlKDApfTEyLjUle3N0cm9rZS1kYXNob2Zmc2V0OjU2LjU0ODY2NzdweDt0cmFuc2Zvcm06cm90YXRlKDApfTEyLjUwMDEle3N0cm9rZS1kYXNob2Zmc2V0OjU2LjU0ODY2NzdweDt0cmFuc2Zvcm06cm90YXRlWCgxODBkZWcpIHJvdGF0ZSg3Mi41ZGVnKX0yNSV7c3Ryb2tlLWRhc2hvZmZzZXQ6MjY4LjYwNjE3MTU3NXB4O3RyYW5zZm9ybTpyb3RhdGVYKDE4MGRlZykgcm90YXRlKDcyLjVkZWcpfTI1LjAwMDEle3N0cm9rZS1kYXNob2Zmc2V0OjI2OC42MDYxNzE1NzVweDt0cmFuc2Zvcm06cm90YXRlKDI3MGRlZyl9MzcuNSV7c3Ryb2tlLWRhc2hvZmZzZXQ6NTYuNTQ4NjY3N3B4O3RyYW5zZm9ybTpyb3RhdGUoMjcwZGVnKX0zNy41MDAxJXtzdHJva2UtZGFzaG9mZnNldDo1Ni41NDg2Njc3cHg7dHJhbnNmb3JtOnJvdGF0ZVgoMTgwZGVnKSByb3RhdGUoMTYxLjVkZWcpfTUwJXtzdHJva2UtZGFzaG9mZnNldDoyNjguNjA2MTcxNTc1cHg7dHJhbnNmb3JtOnJvdGF0ZVgoMTgwZGVnKSByb3RhdGUoMTYxLjVkZWcpfTUwLjAwMDEle3N0cm9rZS1kYXNob2Zmc2V0OjI2OC42MDYxNzE1NzVweDt0cmFuc2Zvcm06cm90YXRlKDE4MGRlZyl9NjIuNSV7c3Ryb2tlLWRhc2hvZmZzZXQ6NTYuNTQ4NjY3N3B4O3RyYW5zZm9ybTpyb3RhdGUoMTgwZGVnKX02Mi41MDAxJXtzdHJva2UtZGFzaG9mZnNldDo1Ni41NDg2Njc3cHg7dHJhbnNmb3JtOnJvdGF0ZVgoMTgwZGVnKSByb3RhdGUoMjUxLjVkZWcpfTc1JXtzdHJva2UtZGFzaG9mZnNldDoyNjguNjA2MTcxNTc1cHg7dHJhbnNmb3JtOnJvdGF0ZVgoMTgwZGVnKSByb3RhdGUoMjUxLjVkZWcpfTc1LjAwMDEle3N0cm9rZS1kYXNob2Zmc2V0OjI2OC42MDYxNzE1NzVweDt0cmFuc2Zvcm06cm90YXRlKDkwZGVnKX04Ny41JXtzdHJva2UtZGFzaG9mZnNldDo1Ni41NDg2Njc3cHg7dHJhbnNmb3JtOnJvdGF0ZSg5MGRlZyl9ODcuNTAwMSV7c3Ryb2tlLWRhc2hvZmZzZXQ6NTYuNTQ4NjY3N3B4O3RyYW5zZm9ybTpyb3RhdGVYKDE4MGRlZykgcm90YXRlKDM0MS41ZGVnKX0xMDAle3N0cm9rZS1kYXNob2Zmc2V0OjI2OC42MDYxNzE1NzVweDt0cmFuc2Zvcm06cm90YXRlWCgxODBkZWcpIHJvdGF0ZSgzNDEuNWRlZyl9fUBrZXlmcmFtZXMgbWF0LXByb2dyZXNzLXNwaW5uZXItc3Ryb2tlLXJvdGF0ZS1mYWxsYmFja3swJXt0cmFuc2Zvcm06cm90YXRlKDBkZWcpfTI1JXt0cmFuc2Zvcm06cm90YXRlKDExNzBkZWcpfTUwJXt0cmFuc2Zvcm06cm90YXRlKDIzNDBkZWcpfTc1JXt0cmFuc2Zvcm06cm90YXRlKDM1MTBkZWcpfTEwMCV7dHJhbnNmb3JtOnJvdGF0ZSg0NjgwZGVnKX19XG4iXX1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOktofSx7dHlwZTpjSH0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltzTV19XX0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltja119XX0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W2UyXX1dfV19KSxudWxsKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNsYXNzIHIye31yMi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8cjIpfSxyMi7JtW1vZD1mbyh7dHlwZTpyMn0pLHIyLsm1aW5qPURuKHtpbXBvcnRzOltbTkYscnhdLE5GXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIocjIsW3t0eXBlOkxfLGFyZ3M6W3tpbXBvcnRzOltORixyeF0sZXhwb3J0czpbaTIsYTIsTkZdLGRlY2xhcmF0aW9uczpbaTIsYTJdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmdW8ocjIse2RlY2xhcmF0aW9uczpmdW5jdGlvbigpe3JldHVybltpMixhMl19LGltcG9ydHM6ZnVuY3Rpb24oKXtyZXR1cm5bTkYscnhdfSxleHBvcnRzOmZ1bmN0aW9uKCl7cmV0dXJuW2kyLGEyLE5GXX19KTtjb25zdCBzMj1bInJlZ2V4U3RyaW5nSW5wdXQiXTtmdW5jdGlvbiBsMih0LGUpe2lmKDEmdCYmKHhmKDApLENmKDEsImxpIiwyMiksUHUoMiksTWYoKSxPZigpKSwyJnQpe2NvbnN0IHQ9ZS4kaW1wbGljaXQ7RGMoMSksYmYoInRpdGxlIix0Lm5hbWUpLERjKDEpLHd1KHQubmFtZSl9fWZ1bmN0aW9uIGMyKHQsZSl7aWYoMSZ0JiYoQ2YoMCwibGkiLDIzKSxDZigxLCJlbSIpLFB1KDIpLF95KDMsIm51bWJlciIpLE1mKCksTWYoKSksMiZ0KXtjb25zdCB0PXpmKCkuJGltcGxpY2l0O0RjKDIpLGt1KCJhbmQgIixDeSgzLDEsdC5ydW5zLmxlbmd0aC01KSwiIG1vcmUiKX19ZnVuY3Rpb24gZDIodCxlKXsxJnQmJihDZigwLCJsaSIsMjQpLENmKDEsImVtIiksUHUoMiwiTm8gcnVucyBhcmUgaW4gdGhlIGdyb3VwIiksTWYoKSxNZigpKX1jb25zdCBwMj1mdW5jdGlvbih0KXtyZXR1cm57Ym9yZGVyQ29sb3I6dH19LG0yPWZ1bmN0aW9uKHQpe3JldHVybntiYWNrZ3JvdW5kQ29sb3I6dH19O2Z1bmN0aW9uIGYyKHQsZSl7aWYoMSZ0JiYoQ2YoMCwidWwiLDE2KSxDZigxLCJsaSIpLENmKDIsImxhYmVsIiksdmYoMywic3BhbiIsMTcpLENmKDQsImNvZGUiLDE4KSxQdSg1KSxNZigpLE1mKCksQ2YoNiwidWwiKSxIbSg3LGwyLDMsMiwibmctY29udGFpbmVyIiwxOSksX3koOCwic2xpY2UiKSxIbSg5LGMyLDQsMywibGkiLDIwKSxIbSgxMCxkMiwzLDAsImxpIiwyMSksTWYoKSxNZigpLE1mKCkpLDImdCl7Y29uc3QgdD1lLiRpbXBsaWNpdDtiZigibmdTdHlsZSIsaXkoMTEscDIsdC5jb2xvcikpLERjKDMpLGJmKCJuZ1N0eWxlIixpeSgxMyxtMix0LmNvbG9yKSksRGMoMSksYmYoInRpdGxlIix0Lmdyb3VwSWQpLERjKDEpLHd1KHQuZ3JvdXBJZCksRGMoMiksYmYoIm5nRm9yT2YiLHZ5KDgsNyx0LnJ1bnMsMCw1KSksRGMoMiksYmYoIm5nSWYiLHQucnVucy5sZW5ndGg+NSksRGMoMSksYmYoIm5nSWYiLDA9PT10LnJ1bnMubGVuZ3RoKX19ZnVuY3Rpb24gdTIodCxlKXtpZigxJnQmJihDZigwLCJkaXYiLDE0KSxIbSgxLGYyLDExLDE1LCJ1bCIsMTUpLE1mKCkpLDImdCl7Y29uc3QgdD16ZigyKTtEYygxKSxiZigibmdGb3JPZiIsdC5jb2xvclJ1blBhaXJMaXN0KX19ZnVuY3Rpb24gZzIodCxlKXtpZigxJnQmJihDZigwLCJkaXYiLDI1KSxQdSgxLCIgVGhlcmUgYXJlIG5vIHJ1bnMgbWF0Y2hpbmcgdGhlIHJlZ2V4LCAiKSxDZigyLCJjb2RlIiksUHUoMyksTWYoKSxQdSg0LCIuIFBsZWFzZSBjaGVjayBpZiB5b3VyIHJlZ2V4IHN0cmluZyBpcyBjb3JyZWN0LiAiKSxNZigpKSwyJnQpe2NvbnN0IHQ9emYoMik7RGMoMyksa3UoIi8iLHQucmVnZXhTdHJpbmcsIi8iKX19ZnVuY3Rpb24gaDIodCxlKXtpZigxJnQmJihDZigwLCJkaXYiLDEwKSxDZigxLCJoNCIpLFB1KDIsIkNvbG9yIGdyb3VwIHByZXZpZXciKSxNZigpLENmKDMsImRpdiIsMTEpLEhtKDQsdTIsMiwxLCJkaXYiLDEyKSxIbSg1LGcyLDUsMSwibmctdGVtcGxhdGUiLG51bGwsMTMscXkpLE1mKCksTWYoKSksMiZ0KXtjb25zdCB0PUZtKDYpLGU9emYoKTtEYyg0KSxiZigibmdJZiIsZS5jb2xvclJ1blBhaXJMaXN0Lmxlbmd0aCkoIm5nSWZFbHNlIix0KX19Y2xhc3MgYjJ7Y29uc3RydWN0b3IodCxlKXt0aGlzLmRpYWxvZ1JlZj10LHRoaXMuaG9zdEVsUmVmPWUsdGhpcy5vblNhdmU9bmV3IFN5LHRoaXMucmVnZXhJbnB1dE9uQ2hhbmdlPW5ldyBTeSx0aGlzLnRpbWVPdXRJZD0wfXJlc2V0Rm9jdXMoKXtpZighdGhpcy5ob3N0RWxSZWYubmF0aXZlRWxlbWVudC5jb250YWlucyhkb2N1bWVudC5hY3RpdmVFbGVtZW50KSl7dGhpcy5yZWdleFN0cmluZ0lucHV0Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKX19b25FbnRlcih0KXt0aGlzLm9uU2F2ZUNsaWNrKHQpLHRoaXMuZGlhbG9nUmVmLmNsb3NlKCl9b25TYXZlQ2xpY2sodCl7dGhpcy5vblNhdmUuZW1pdCh0KX1maWxsRXhhbXBsZSh0KXt0aGlzLnJlZ2V4U3RyaW5nPXQsdGhpcy5yZWdleElucHV0Q2hhbmdlKHQpfXJlZ2V4SW5wdXRDaGFuZ2UodCl7dGhpcy5yZWdleElucHV0T25DaGFuZ2UuZW1pdCh0KX1oYW5kbGVGb2N1c091dCgpe2NsZWFyVGltZW91dCh0aGlzLnRpbWVPdXRJZCksdGhpcy50aW1lT3V0SWQ9c2V0VGltZW91dCh0aGlzLnJlc2V0Rm9jdXMuYmluZCh0aGlzKSwwKX19YjIuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGIyKShnZihWWSksZ2YoS2gpKX0sYjIuybVjbXA9c28oe3R5cGU6YjIsc2VsZWN0b3JzOltbInJlZ2V4LWVkaXQtZGlhbG9nLWNvbXBvbmVudCJdXSx2aWV3UXVlcnk6ZnVuY3Rpb24gdChlLG4pe2lmKDEmZSYmVnkoczIsNyksMiZlKXtsZXQgdDtCeSh0PVV5KCkpJiYobi5yZWdleFN0cmluZ0lucHV0PXQuZmlyc3QpfX0saW5wdXRzOntyZWdleFN0cmluZzoicmVnZXhTdHJpbmciLGNvbG9yUnVuUGFpckxpc3Q6ImNvbG9yUnVuUGFpckxpc3QifSxvdXRwdXRzOntvblNhdmU6Im9uU2F2ZSIscmVnZXhJbnB1dE9uQ2hhbmdlOiJyZWdleElucHV0T25DaGFuZ2UifSxkZWNsczozMCx2YXJzOjIsY29uc3RzOmZ1bmN0aW9uKCl7bGV0IHQ7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBuZ0kxOG5DbG9zdXJlTW9kZSYmbmdJMThuQ2xvc3VyZU1vZGUpe3Q9Z29vZy5nZXRNc2coIkNvbG9yIFJ1bnMgYnkgUmVnZXggUXVlcnkiKX1lbHNlIHQ9JGxvY2FsaXplYDpDb2xvciBSdW5zIGJ5IFJlZ2V4IFF1ZXJ54pCfMTVlZDlmNmZkMmQ0OTA2YTQ4MDNmYzEyNTVkZTNjNWRiMmM1NjUzMOKQnzkwODg5ODUxMTM5NjAzMTI4MDg6Q29sb3IgUnVucyBieSBSZWdleCBRdWVyeWA7cmV0dXJuW1sxLCJyZWdleC1lZGl0LWRpYWxvZyIsMywiZm9jdXNvdXQiXSxbIm1hdC1kaWFsb2ctdGl0bGUiLCIiXSxbIm1hdElucHV0IiwiIiwiYXJpYS1sYWJlbCIsdCwiY2RrRm9jdXNJbml0aWFsIiwiIiwzLCJ2YWx1ZSIsImtleWRvd24uZW50ZXIiLCJpbnB1dCJdLFsicmVnZXhTdHJpbmdJbnB1dCIsIiJdLFsxLCJleGFtcGxlLWRldGFpbHMiXSxbMywiY2xpY2siXSxbImNsYXNzIiwiZ3JvdXAtY29udGFpbmVyIiw0LCJuZ0lmIl0sWyJtYXQtZGlhbG9nLWFjdGlvbnMiLCIiLCJhbGlnbiIsImVuZCJdLFsibWF0LWJ1dHRvbiIsIiIsIm1hdC1kaWFsb2ctY2xvc2UiLCIiXSxbIm1hdC1yYWlzZWQtYnV0dG9uIiwiIiwiY29sb3IiLCJwcmltYXJ5IiwibWF0LWRpYWxvZy1jbG9zZSIsIiIsMywiY2xpY2siXSxbMSwiZ3JvdXAtY29udGFpbmVyIl0sWzEsImdyb3VwaW5nLXByZXZpZXciXSxbImNsYXNzIiwibWF0Y2gtY29udGFpbmVyIiw0LCJuZ0lmIiwibmdJZkVsc2UiXSxbImVtcHR5IiwiIl0sWzEsIm1hdGNoLWNvbnRhaW5lciJdLFsiY2xhc3MiLCJncm91cCIsMywibmdTdHlsZSIsNCwibmdGb3IiLCJuZ0Zvck9mIl0sWzEsImdyb3VwIiwzLCJuZ1N0eWxlIl0sWzEsImNvbG9yLXN3YXRjaCIsMywibmdTdHlsZSJdLFsxLCJncm91cC1pZCIsMywidGl0bGUiXSxbNCwibmdGb3IiLCJuZ0Zvck9mIl0sWyJjbGFzcyIsIm1vcmUiLDQsIm5nSWYiXSxbImNsYXNzIiwibm8tbWF0Y2giLDQsIm5nSWYiXSxbMywidGl0bGUiXSxbMSwibW9yZSJdLFsxLCJuby1tYXRjaCJdLFsxLCJ3YXJuaW5nIl1dfSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7aWYoMSZlKXtjb25zdCB0PXdmKCk7Q2YoMCwiZGl2IiwwKSxSZigiZm9jdXNvdXQiLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4uaGFuZGxlRm9jdXNPdXQoKX0pKSxDZigxLCJoMSIsMSksUHUoMiwiQ29sb3IgcnVucyBieSByZWdleCIpLE1mKCksQ2YoMywibWF0LWRpYWxvZy1jb250ZW50IiksQ2YoNCwicCIpLFB1KDUsIkVudGVyIGEgcmVnZXggd2l0aCBjYXB0dXJpbmcgZ3JvdXBzIHRvIG1hdGNoIGFnYWluc3QgcnVuIG5hbWVzOiIpLE1mKCksQ2YoNiwibWF0LWZvcm0tZmllbGQiKSxDZig3LCJpbnB1dCIsMiwzKSxSZigia2V5ZG93bi5lbnRlciIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4ub25FbnRlcihlLnRhcmdldC52YWx1ZSl9KSkoImlucHV0IiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5yZWdleElucHV0Q2hhbmdlKGUudGFyZ2V0LnZhbHVlKX0pKSxNZigpLE1mKCksTWYoKSxDZig5LCJkaXYiLDQpLENmKDEwLCJwIiksUHUoMTEsJyBFYWNoIG1hdGNoaW5nIHJ1biB3aWxsIGJlIGFzc2lnbmVkIGEgY29sb3IgYmFzZWQgb24gdGhlICJrZXkiIGZvcm1lZCBieSBpdHMgbWF0Y2hlcyB0byB0aGUgY2FwdHVyaW5nIGdyb3Vwcy4gJyksdmYoMTIsImJyIiksQ2YoMTMsImJ1dHRvbiIsNSksUmYoImNsaWNrIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLmZpbGxFeGFtcGxlKCIodHJhaW58ZXZhbCkiKX0pKSxQdSgxNCwiIFRyeSAiKSxDZigxNSwiY29kZSIpLFB1KDE2LCIodHJhaW58ZXZhbCkiKSxNZigpLE1mKCksUHUoMTcsIiB0byBhc3NpZ24gYWxsIHJ1bnMgY29udGFpbmluZyAiKSxDZigxOCwiY29kZSIpLFB1KDE5LCJ0cmFpbiIpLE1mKCksUHUoMjAsIiB0byBvbmUgY29sb3IgYW5kIGFsbCBydW5zIGNvbnRhaW5pbmcgIiksQ2YoMjEsImNvZGUiKSxQdSgyMiwiZXZhbCIpLE1mKCksUHUoMjMsIiB0byBhbm90aGVyIGNvbG9yLiAiKSxNZigpLE1mKCksSG0oMjQsaDIsNywyLCJkaXYiLDYpLENmKDI1LCJkaXYiLDcpLENmKDI2LCJidXR0b24iLDgpLFB1KDI3LCJDYW5jZWwiKSxNZigpLENmKDI4LCJidXR0b24iLDkpLFJmKCJjbGljayIsKGZ1bmN0aW9uIGUoKXtQaSh0KTtjb25zdCBvPUZtKDgpO3JldHVybiBuLm9uU2F2ZUNsaWNrKG8udmFsdWUpfSkpLFB1KDI5LCIgU2F2ZSAiKSxNZigpLE1mKCksTWYoKX0yJmUmJihEYyg3KSxMZigidmFsdWUiLG4ucmVnZXhTdHJpbmcpLERjKDE3KSxiZigibmdJZiIsbi5yZWdleFN0cmluZykpfSxkaXJlY3RpdmVzOltRWSwkWSxfVSxBWixQdix0cSxOTCxKWSx4dix6dl0scGlwZXM6W2l4LCR2XSxzdHlsZXM6WycubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTJweDtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1iYWRnZS1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo5cHh9Lm1hdC1iYWRnZS1sYXJnZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4fS5tYXQtaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWhlYWRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAyNHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE2cHgvMjhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE1cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjgzKS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1oNltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC42NykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtYm9keS1zdHJvbmdbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MCAwIDEycHh9Lm1hdC1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FwdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTJweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6MzAwIDExMnB4LzExMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wNWVtO21hcmdpbjowIDAgNTZweH0ubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNTZweC81NnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMmVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNDVweC80OHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMDVlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDM0cHgvNDBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgNjRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FyZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjBweH0ubWF0LWNhcmQtc3VidGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcmQtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2hlY2tib3gtbGF5b3V0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC10cmFpbGluZy1pY29uLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmUubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxOHB4fS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jYWxlbmRhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FsZW5kYXItYm9keVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEzcHh9Lm1hdC1jYWxlbmRhci1ib2R5LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgdGhbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWRpYWxvZy10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMTI1O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTUwJTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjVlbTt3aWR0aDoxLjVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW07bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi41ZW0gMDtib3JkZXItdG9wOi44NDM3NWVtIHNvbGlkIHRyYW5zcGFyZW50fS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3RvcDotMC44NDM3NWVtO3BhZGRpbmctdG9wOi44NDM3NWVtfS5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjc1JTttYXJnaW4tdG9wOi42NjY2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNzkxNjY2NjY2N2VtKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi40Mzc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAycHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyM2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMjgxMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi41NDE2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNjY2NjY2NjY2N2VtKX1AbWVkaWEgcHJpbnR7Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIyZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIxZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMmVtKSBzY2FsZSgwLjc1KX19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjI1ZW0gMCAuNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4wOTM3NWVtO21hcmdpbi10b3A6LTAuNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MWVtIDAgMWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjg0Mzc1ZW07bWFyZ2luLXRvcDotMC4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH1pbnB1dC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDotMC4wNjI1ZW19Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1wYWdlLXNpemVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4fS5tYXQtcmFkaW8tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3RbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbX0ubWF0LXNsaWRlLXRvZ2dsZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXN0ZXBwZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc3RlcC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtc3RlcC1zdWItbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0Om5vcm1hbH0ubWF0LXN0ZXAtbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtc3RlcC1sYWJlbC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdGFiLWdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjB9Lm1hdC10b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEwcHg7cGFkZGluZy10b3A6NnB4O3BhZGRpbmctYm90dG9tOjZweH0ubWF0LXRvb2x0aXAtaGFuZHNldFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7cGFkZGluZy10b3A6OHB4O3BhZGRpbmctYm90dG9tOjhweH0ubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTZweH0ubWF0LW9wdGdyb3VwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LXNpbXBsZS1zbmFja2Jhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4fS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbltfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MTtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRyZWVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbmVzdGVkLXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtc2l6ZToxNHB4fS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdOm5vdCg6ZW1wdHkpe3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApfS5tYXQtcmlwcGxlLm1hdC1yaXBwbGUtdW5ib3VuZGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzp2aXNpYmxlfS5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO2JvcmRlci1yYWRpdXM6NTAlO3BvaW50ZXItZXZlbnRzOm5vbmU7dHJhbnNpdGlvbjpvcGFjaXR5LHRyYW5zZm9ybSAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7dHJhbnNmb3JtOnNjYWxlKDApfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpub25lfS5jZGstdmlzdWFsbHktaGlkZGVuW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6MDtjbGlwOnJlY3QoMCAwIDAgMCk7aGVpZ2h0OjFweDttYXJnaW46LTFweDtvdmVyZmxvdzpoaWRkZW47cGFkZGluZzowO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjFweDt3aGl0ZS1zcGFjZTpub3dyYXA7b3V0bGluZTowOy13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BvaW50ZXItZXZlbnRzOm5vbmU7dG9wOjA7bGVmdDowO2hlaWdodDoxMDAlO3dpZHRoOjEwMCV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdOmVtcHR5e2Rpc3BsYXk6bm9uZX0uY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LXBhbmVbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3BvaW50ZXItZXZlbnRzOmF1dG87Ym94LXNpemluZzpib3JkZXItYm94O3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7bWF4LXdpZHRoOjEwMCU7bWF4LWhlaWdodDoxMDAlfS5jZGstb3ZlcmxheS1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7bGVmdDowO3JpZ2h0OjA7ei1pbmRleDoxMDAwO3BvaW50ZXItZXZlbnRzOmF1dG87LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50O3RyYW5zaXRpb246b3BhY2l0eSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKTtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5Oi42fS5jZGstb3ZlcmxheS1kYXJrLWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjMyKX0uY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTowfS5jZGstb3ZlcmxheS1jb25uZWN0ZWQtcG9zaXRpb24tYm91bmRpbmctYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjttaW4td2lkdGg6MXB4O21pbi1oZWlnaHQ6MXB4fS5jZGstZ2xvYmFsLXNjcm9sbGJsb2NrW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt3aWR0aDoxMDAlO292ZXJmbG93LXk6c2Nyb2xsfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZVtfbmdjb250ZW50LSVDT01QJV17cmVzaXplOm5vbmV9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZ1tfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6YXV0byAhaW1wb3J0YW50O292ZXJmbG93OmhpZGRlbiAhaW1wb3J0YW50fXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmctZmlyZWZveFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6MCAhaW1wb3J0YW50fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnR7fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5ke30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxse2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydCAwcyAxbXN9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06bm90KDotd2Via2l0LWF1dG9maWxsKXthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5kIDBzIDFtc30ubWF0LWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1tZGMtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0uZXhhbXBsZS1kZXRhaWxzW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtwYWRkaW5nOjA7Ym9yZGVyOm5vbmU7Y3Vyc29yOnBvaW50ZXI7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTtjb2xvcjojMTk3NmQyfWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC5leGFtcGxlLWRldGFpbHNbX25nY29udGVudC0lQ09NUCVdICAgYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLmV4YW1wbGUtZGV0YWlsc1tfbmdjb250ZW50LSVDT01QJV0gICBidXR0b25bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM0MmE1ZjV9LmV4YW1wbGUtZGV0YWlsc1tfbmdjb250ZW50LSVDT01QJV0gICBidXR0b25bX25nY29udGVudC0lQ09NUCVdOnZpc2l0ZWR7Y29sb3I6IzdiMWZhMn1ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICAuZXhhbXBsZS1kZXRhaWxzW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGJ1dHRvbltfbmdjb250ZW50LSVDT01QJV06dmlzaXRlZCwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLmV4YW1wbGUtZGV0YWlsc1tfbmdjb250ZW50LSVDT01QJV0gICBidXR0b25bX25nY29udGVudC0lQ09NUCVdOnZpc2l0ZWR7Y29sb3I6I2JhNjhjOH0uZ3JvdXAtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MTBweCAwfS5ncm91cC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi1ib3R0b206MTBweH0uZ3JvdXAtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC53YXJuaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxO2ZvbnQtc2l6ZTouOWVtfWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC5ncm91cC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdICAgLndhcm5pbmdbX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAuZ3JvdXAtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC53YXJuaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KX0uZ3JvdXBpbmctcHJldmlld1tfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjFweCBzb2xpZCAjZWJlYmViO21heC1oZWlnaHQ6NTB2aDtvdmVyZmxvdy15OmF1dG87cGFkZGluZzoyMHB4fWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC5ncm91cGluZy1wcmV2aWV3W19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLmdyb3VwaW5nLXByZXZpZXdbX25nY29udGVudC0lQ09NUCVde2JvcmRlcjoxcHggc29saWQgIzU1NX0ubWF0Y2gtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXthbGlnbi1pdGVtczpmbGV4LXN0YXJ0O2Rpc3BsYXk6Z3JpZDtmbGV4LXdyYXA6d3JhcDtnYXA6MTBweDtncmlkLXRlbXBsYXRlLWNvbHVtbnM6cmVwZWF0KDIsIG1pbm1heCg1MCUsIDFmcikpfS5jb2xvci1zd2F0Y2hbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1yYWRpdXM6NTAlO2JveC1zaGFkb3c6MCAwIDJweCAjMDAwO2Rpc3BsYXk6aW5saW5lLWJsb2NrO2hlaWdodDoxNXB4O3dpZHRoOjE1cHh9dWxbX25nY29udGVudC0lQ09NUCVde2xpc3Qtc3R5bGUtdHlwZTpub25lO3BhZGRpbmc6MH1tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV17d2lkdGg6MTAwJX0uZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2JvcmRlcjoxcHggc29saWQgI2ViZWJlYjtib3JkZXItcmFkaXVzOjNweDttYXJnaW46MDtwYWRkaW5nOjEwcHh9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgLmdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLmdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6MXB4IHNvbGlkICM1NTV9Lmdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjZWJlYmViO2FsaWduLWl0ZW1zOmNlbnRlcjtkaXNwbGF5OmdyaWQ7Z2FwOjEwcHg7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOm1heC1jb250ZW50IGF1dG87cGFkZGluZzo1cHggMH1ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICAuZ3JvdXBbX25nY29udGVudC0lQ09NUCVdICAgbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAuZ3JvdXBbX25nY29udGVudC0lQ09NUCVdICAgbGFiZWxbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1ib3R0b206MXB4IHNvbGlkICM1NTV9Lmdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5ncm91cC1pZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOi45NWVtO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO3doaXRlLXNwYWNlOm5vd3JhcH0uZ3JvdXBbX25nY29udGVudC0lQ09NUCVdICAgdWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTouOWVtfS5ncm91cFtfbmdjb250ZW50LSVDT01QJV0gICB1bFtfbmdjb250ZW50LSVDT01QJV0gICBsaVtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7d2hpdGUtc3BhY2U6bm93cmFwfS5ncm91cFtfbmdjb250ZW50LSVDT01QJV0gICAubW9yZVtfbmdjb250ZW50LSVDT01QJV0sIC5ncm91cFtfbmdjb250ZW50LSVDT01QJV0gICAubm8tbWF0Y2hbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjE7bWFyZ2luLXRvcDo1cHh9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgLmdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tb3JlW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLmdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tb3JlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KX1ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICAuZ3JvdXBbX25nY29udGVudC0lQ09NUCVdICAgLm5vLW1hdGNoW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLmdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5uby1tYXRjaFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNyl9J10sY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKGIyLFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6InJlZ2V4LWVkaXQtZGlhbG9nLWNvbXBvbmVudCIsdGVtcGxhdGVVcmw6InJlZ2V4X2VkaXRfZGlhbG9nLm5nLmh0bWwiLHN0eWxlVXJsczpbInJlZ2V4X2VkaXRfZGlhbG9nX2NvbXBvbmVudC5jc3MiXSxjaGFuZ2VEZXRlY3Rpb246am4uT25QdXNofV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6Vll9LHt0eXBlOktofV19KSx7cmVnZXhTdHJpbmc6W3t0eXBlOlJffV0sY29sb3JSdW5QYWlyTGlzdDpbe3R5cGU6Ul99XSxvblNhdmU6W3t0eXBlOkVffV0scmVnZXhJbnB1dE9uQ2hhbmdlOlt7dHlwZTpFX31dLHJlZ2V4U3RyaW5nSW5wdXQ6W3t0eXBlOmFyLGFyZ3M6WyJyZWdleFN0cmluZ0lucHV0Iix7c3RhdGljOiEwfV19XX0pO2NsYXNzIHkye2NvbnN0cnVjdG9yKHQsZSxuKXt0aGlzLnN0b3JlPXQsdGhpcy5kaWFsb2dSZWY9ZSx0aGlzLnRlbnRhdGl2ZVJlZ2V4U3RyaW5nJD1uZXcgQix0aGlzLmdyb3VwQnlSZWdleFN0cmluZyQ9b2UoKCgpPT5wZSh0aGlzLnN0b3JlLnNlbGVjdChySSkucGlwZSh2ZSgxKSksdGhpcy50ZW50YXRpdmVSZWdleFN0cmluZyQpKSkucGlwZShCZSgiIikpLHRoaXMuY29sb3JSdW5QYWlyTGlzdCQ9b2UoKCgpPT50aGlzLmdyb3VwQnlSZWdleFN0cmluZyQucGlwZShDZSg1MDApLHVlKCh0PT57dHJ5e2NvbnN0IGU9bmV3IFJlZ0V4cCh0KTtyZXR1cm4gQm9vbGVhbihlKX1jYXRjaCh0KXtyZXR1cm4hMX19KSksX2UodGhpcy5hbGxSdW5zJCx0aGlzLnJ1bklkVG9FaWQkLHRoaXMuc3RvcmUuc2VsZWN0KGJJKSx0aGlzLnN0b3JlLnNlbGVjdChGRCkpLFZ0KCgoW3QsZSxuLG8saV0pPT57Y29uc3QgYT1Weih7a2V5Okx6LlJFR0VYLHJlZ2V4U3RyaW5nOnR9LGUsbikscj1uZXcgTWFwLHM9W107Zm9yKGNvbnN0W3QsZV1vZiBPYmplY3QuZW50cmllcyhhLm1hdGNoZXMpKXtsZXQgbj1yLmdldCh0KTtpZighbil7Y29uc3QgZT1vLmNvbG9yc1tyLnNpemUlby5jb2xvcnMubGVuZ3RoXTtuPWk/ZS5kYXJrSGV4OmUubGlnaHRIZXgsci5zZXQodCxuKX1zLnB1c2goe2dyb3VwSWQ6dCxjb2xvcjpuLHJ1bnM6ZX0pfXJldHVybiBzfSkpKSkpLnBpcGUoQmUoW10pKSx0aGlzLmV4cGVyaW1lbnRJZHM9bi5leHBlcmltZW50SWRzLHRoaXMucnVuSWRUb0VpZCQ9S3QodGhpcy5leHBlcmltZW50SWRzLm1hcCgodD0+dGhpcy5zdG9yZS5zZWxlY3QoWnose2V4cGVyaW1lbnRJZDp0fSkucGlwZShWdCgoZT0+KHtleHBlcmltZW50SWQ6dCxydW5JZHM6ZX0pKSkpKSkpLnBpcGUoVnQoKHQ9Pntjb25zdCBlPXt9O2Zvcihjb25zdHtydW5JZHM6bixleHBlcmltZW50SWQ6b31vZiB0KWZvcihjb25zdCB0IG9mIG4pZVt0XT1vO3JldHVybiBlfSkpKSx0aGlzLmFsbFJ1bnMkPUt0KHRoaXMuZXhwZXJpbWVudElkcy5tYXAoKHQ9PnRoaXMuc3RvcmUuc2VsZWN0KHF6LHtleHBlcmltZW50SWQ6dH0pKSkpLnBpcGUoVnQoKHQ9PnQuZmxhdCgpKSkpfW9uUmVnZXhJbnB1dE9uQ2hhbmdlKHQpe3RoaXMudGVudGF0aXZlUmVnZXhTdHJpbmckLm5leHQodCl9b25TYXZlKHQpe3RoaXMuc3RvcmUuZGlzcGF0Y2goeFQoe2V4cGVyaW1lbnRJZHM6dGhpcy5leHBlcmltZW50SWRzLGdyb3VwQnk6e2tleTpMei5SRUdFWCxyZWdleFN0cmluZzp0fX0pKX19ZnVuY3Rpb24gXzIodCxlKXsxJnQmJnZmKDAsIm1hdC1pY29uIiwxMSl9ZnVuY3Rpb24gQzIodCxlKXtpZigxJnQpe2NvbnN0IHQ9d2YoKTtDZigwLCJidXR0b24iLDEwKSxSZigiY2xpY2siLChmdW5jdGlvbiBlKCl7UGkodCk7Y29uc3Qgbj16ZigpO3JldHVybiBuLm9uR3JvdXBCeUNoYW5nZS5lbWl0KHtrZXk6bi5Hcm91cEJ5S2V5LkVYUEVSSU1FTlR9KX0pKSxDZigxLCJzcGFuIiksSG0oMixfMiwxLDAsIm1hdC1pY29uIiw3KSxNZigpLENmKDMsImxhYmVsIiksUHUoNCwiRXhwZXJpbWVudCIpLE1mKCksTWYoKX1pZigyJnQpe2NvbnN0IHQ9emYoKTt5bSgiYXJpYS1jaGVja2VkIix0LnNlbGVjdGVkR3JvdXBCeS5rZXk9PT10Lkdyb3VwQnlLZXkuRVhQRVJJTUVOVCksRGMoMiksYmYoIm5nSWYiLHQuc2VsZWN0ZWRHcm91cEJ5LmtleT09PXQuR3JvdXBCeUtleS5FWFBFUklNRU5UKX19ZnVuY3Rpb24gTTIodCxlKXsxJnQmJnZmKDAsIm1hdC1pY29uIiwxMSl9ZnVuY3Rpb24gdjIodCxlKXsxJnQmJnZmKDAsIm1hdC1pY29uIiwxMSl9ZnVuY3Rpb24geDIodCxlKXtpZigxJnQpe2NvbnN0IHQ9d2YoKTtDZigwLCJidXR0b24iLDEyKSxSZigiY2xpY2siLChmdW5jdGlvbiBlKCl7UGkodCk7cmV0dXJuIHpmKCkub25Hcm91cEJ5UmVnZXhDbGljaygpfSkpLENmKDEsInNwYW4iKSxIbSgyLHYyLDEsMCwibWF0LWljb24iLDcpLE1mKCksQ2YoMywibGFiZWwiKSxQdSg0LCJSZWdleCIpLE1mKCksTWYoKX1pZigyJnQpe2NvbnN0IHQ9emYoKTt5bSgiYXJpYS1jaGVja2VkIix0LnNlbGVjdGVkR3JvdXBCeS5rZXk9PT10Lkdyb3VwQnlLZXkuUkVHRVgpLERjKDIpLGJmKCJuZ0lmIix0LnNlbGVjdGVkR3JvdXBCeS5rZXk9PT10Lkdyb3VwQnlLZXkuUkVHRVgpfX1mdW5jdGlvbiBPMih0LGUpe2lmKDEmdCYmKENmKDAsImxhYmVsIiksUHUoMSksTWYoKSksMiZ0KXtjb25zdCB0PXpmKDIpO0RjKDEpLHd1KHQucmVnZXhTdHJpbmcpfX1mdW5jdGlvbiBQMih0LGUpezEmdCYmKENmKDAsImxhYmVsIiwxNyksUHUoMSwiKG5vbmUgc2V0KSIpLE1mKCkpfWZ1bmN0aW9uIHcyKHQsZSl7aWYoMSZ0KXtjb25zdCB0PXdmKCk7Q2YoMCwiYnV0dG9uIiwxMyksUmYoImNsaWNrIiwoZnVuY3Rpb24gZSgpe1BpKHQpO3JldHVybiB6ZigpLm9uUmVnZXhTdHJpbmdFZGl0KCl9KSksQ2YoMSwic3BhbiIpLHZmKDIsIm1hdC1pY29uIiwxNCksTWYoKSxIbSgzLE8yLDIsMSwibGFiZWwiLDE1KSxIbSg0LFAyLDIsMCwibGFiZWwiLDE2KSxNZigpfWlmKDImdCl7Y29uc3QgdD16ZigpO0RjKDMpLGJmKCJuZ0lmIix0LnJlZ2V4U3RyaW5nKSxEYygxKSxiZigibmdJZiIsIXQucmVnZXhTdHJpbmcpfX15Mi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8eTIpKGdmKGlTKSxnZihWWSksZ2YoVVkpKX0seTIuybVjbXA9c28oe3R5cGU6eTIsc2VsZWN0b3JzOltbInJlZ2V4LWVkaXQtZGlhbG9nIl1dLGRlY2xzOjMsdmFyczo2LGNvbnN0czpbWzMsInJlZ2V4U3RyaW5nIiwiY29sb3JSdW5QYWlyTGlzdCIsIm9uU2F2ZSIsInJlZ2V4SW5wdXRPbkNoYW5nZSJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoQ2YoMCwicmVnZXgtZWRpdC1kaWFsb2ctY29tcG9uZW50IiwwKSxSZigib25TYXZlIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5vblNhdmUoZSl9KSkoInJlZ2V4SW5wdXRPbkNoYW5nZSIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4ub25SZWdleElucHV0T25DaGFuZ2UoZSl9KSksX3koMSwiYXN5bmMiKSxfeSgyLCJhc3luYyIpLE1mKCkpLDImZSYmYmYoInJlZ2V4U3RyaW5nIixDeSgxLDIsbi5ncm91cEJ5UmVnZXhTdHJpbmckKSkoImNvbG9yUnVuUGFpckxpc3QiLEN5KDIsNCxuLmNvbG9yUnVuUGFpckxpc3QkKSl9LGRpcmVjdGl2ZXM6W2IyXSxwaXBlczpbVnZdLHN0eWxlczpbIltfbmdob3N0LSVDT01QJV0sIHJlZ2V4LWVkaXQtZGlhbG9nLWNvbXBvbmVudFtfbmdjb250ZW50LSVDT01QJV0ge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgIH0iXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoeTIsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoicmVnZXgtZWRpdC1kaWFsb2ciLHRlbXBsYXRlOic8cmVnZXgtZWRpdC1kaWFsb2ctY29tcG9uZW50XG4gICAgW3JlZ2V4U3RyaW5nXT0iZ3JvdXBCeVJlZ2V4U3RyaW5nJCB8IGFzeW5jIlxuICAgIFtjb2xvclJ1blBhaXJMaXN0XT0iY29sb3JSdW5QYWlyTGlzdCQgfCBhc3luYyJcbiAgICAob25TYXZlKT0ib25TYXZlKCRldmVudCkiXG4gICAgKHJlZ2V4SW5wdXRPbkNoYW5nZSk9Im9uUmVnZXhJbnB1dE9uQ2hhbmdlKCRldmVudCkiXG4gID48L3JlZ2V4LWVkaXQtZGlhbG9nLWNvbXBvbmVudD4nLHN0eWxlczpbIlxuICAgICAgOmhvc3QsXG4gICAgICByZWdleC1lZGl0LWRpYWxvZy1jb21wb25lbnQge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgIH1cbiAgICAiXX1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmlTfSx7dHlwZTpWWX0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W1VZXX1dfV19KSxudWxsKTtjbGFzcyBrMntjb25zdHJ1Y3Rvcih0KXt0aGlzLmRpYWxvZz10LHRoaXMuR3JvdXBCeUtleT1Meix0aGlzLm9uR3JvdXBCeUNoYW5nZT1uZXcgU3l9b25SZWdleFN0cmluZ0VkaXQoKXt0aGlzLmRpYWxvZy5vcGVuKHkyLHttYXhIZWlnaHQ6Ijk1dmgiLG1heFdpZHRoOiI4MHZ3IixkYXRhOntleHBlcmltZW50SWRzOnRoaXMuZXhwZXJpbWVudElkc319KX1vbkdyb3VwQnlSZWdleENsaWNrKCl7dGhpcy5yZWdleFN0cmluZz90aGlzLm9uR3JvdXBCeUNoYW5nZS5lbWl0KHtrZXk6THouUkVHRVgscmVnZXhTdHJpbmc6dGhpcy5yZWdleFN0cmluZ30pOnRoaXMub25SZWdleFN0cmluZ0VkaXQoKX19azIuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGsyKShnZihYWSkpfSxrMi7JtWNtcD1zbyh7dHlwZTprMixzZWxlY3RvcnM6W1sicnVucy1ncm91cC1tZW51LWJ1dHRvbi1jb21wb25lbnQiXV0saW5wdXRzOntzaG93RXhwZXJpbWVudHNHcm91cEJ5OiJzaG93RXhwZXJpbWVudHNHcm91cEJ5IixleHBlcmltZW50SWRzOiJleHBlcmltZW50SWRzIixyZWdleFN0cmluZzoicmVnZXhTdHJpbmciLHNlbGVjdGVkR3JvdXBCeToic2VsZWN0ZWRHcm91cEJ5IixzaG93R3JvdXBCeVJlZ2V4OiJzaG93R3JvdXBCeVJlZ2V4In0sb3V0cHV0czp7b25Hcm91cEJ5Q2hhbmdlOiJvbkdyb3VwQnlDaGFuZ2UifSxkZWNsczoxNCx2YXJzOjYsY29uc3RzOltbIm1hdC1pY29uLWJ1dHRvbiIsIiIsInRpdGxlIiwiQ29sb3IgcnVucyBieS4uLiIsMywibWF0TWVudVRyaWdnZXJGb3IiXSxbInN2Z0ljb24iLCJwYWxldHRlXzI0cHgiXSxbMSwicnVuLXRhYmxlLWNvbG9yLWdyb3VwLWJ5Il0sWyJncm91cEJ5TWVudSIsIm1hdE1lbnUiXSxbMSwibGFiZWwiXSxbIm1hdC1tZW51LWl0ZW0iLCIiLCJyb2xlIiwibWVudWl0ZW1yYWRpbyIsImRhdGEtdmFsdWUiLCJleHBlcmltZW50IiwzLCJjbGljayIsNCwibmdJZiJdLFsibWF0LW1lbnUtaXRlbSIsIiIsInJvbGUiLCJtZW51aXRlbXJhZGlvIiwiZGF0YS12YWx1ZSIsInJ1biIsMywiY2xpY2siXSxbInN2Z0ljb24iLCJkb25lXzI0cHgiLDQsIm5nSWYiXSxbIm1hdC1tZW51LWl0ZW0iLCIiLCJyb2xlIiwibWVudWl0ZW1yYWRpbyIsImRhdGEtdmFsdWUiLCJyZWdleCIsMywiY2xpY2siLDQsIm5nSWYiXSxbIm1hdC1tZW51LWl0ZW0iLCIiLCJyb2xlIiwibWVudWl0ZW0iLCJkYXRhLXZhbHVlIiwicmVnZXgtZWRpdCIsImNsYXNzIiwiZGlzcGxheS1yZWdleC1zdHJpbmciLDMsImNsaWNrIiw0LCJuZ0lmIl0sWyJtYXQtbWVudS1pdGVtIiwiIiwicm9sZSIsIm1lbnVpdGVtcmFkaW8iLCJkYXRhLXZhbHVlIiwiZXhwZXJpbWVudCIsMywiY2xpY2siXSxbInN2Z0ljb24iLCJkb25lXzI0cHgiXSxbIm1hdC1tZW51LWl0ZW0iLCIiLCJyb2xlIiwibWVudWl0ZW1yYWRpbyIsImRhdGEtdmFsdWUiLCJyZWdleCIsMywiY2xpY2siXSxbIm1hdC1tZW51LWl0ZW0iLCIiLCJyb2xlIiwibWVudWl0ZW0iLCJkYXRhLXZhbHVlIiwicmVnZXgtZWRpdCIsMSwiZGlzcGxheS1yZWdleC1zdHJpbmciLDMsImNsaWNrIl0sWyJzdmdJY29uIiwiZWRpdF8yNHB4Il0sWzQsIm5nSWYiXSxbImNsYXNzIiwibm9uZS1zZXQtc3RyaW5nIiw0LCJuZ0lmIl0sWzEsIm5vbmUtc2V0LXN0cmluZyJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7aWYoMSZlJiYoQ2YoMCwiYnV0dG9uIiwwKSx2ZigxLCJtYXQtaWNvbiIsMSksTWYoKSxDZigyLCJtYXQtbWVudSIsMiwzKSxDZig0LCJkaXYiLDQpLFB1KDUsIkNvbG9yIHJ1bnMgYnkiKSxNZigpLEhtKDYsQzIsNSwyLCJidXR0b24iLDUpLENmKDcsImJ1dHRvbiIsNiksUmYoImNsaWNrIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLm9uR3JvdXBCeUNoYW5nZS5lbWl0KHtrZXk6bi5Hcm91cEJ5S2V5LlJVTn0pfSkpLENmKDgsInNwYW4iKSxIbSg5LE0yLDEsMCwibWF0LWljb24iLDcpLE1mKCksQ2YoMTAsImxhYmVsIiksUHUoMTEsIlJ1biIpLE1mKCksTWYoKSxIbSgxMix4Miw1LDIsImJ1dHRvbiIsOCksSG0oMTMsdzIsNSwyLCJidXR0b24iLDkpLE1mKCkpLDImZSl7YmYoIm1hdE1lbnVUcmlnZ2VyRm9yIixGbSgzKSksRGMoNiksYmYoIm5nSWYiLG4uc2hvd0V4cGVyaW1lbnRzR3JvdXBCeSksRGMoMSkseW0oImFyaWEtY2hlY2tlZCIsbi5zZWxlY3RlZEdyb3VwQnkua2V5PT09bi5Hcm91cEJ5S2V5LlJVTiksRGMoMiksYmYoIm5nSWYiLG4uc2VsZWN0ZWRHcm91cEJ5LmtleT09PW4uR3JvdXBCeUtleS5SVU4pLERjKDMpLGJmKCJuZ0lmIixuLnNob3dHcm91cEJ5UmVnZXgpLERjKDEpLGJmKCJuZ0lmIixuLnNob3dHcm91cEJ5UmVnZXgpfX0sZGlyZWN0aXZlczpbTkwscXEsTXEsanEsUHYsSHFdLHN0eWxlczpbJy5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjlweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHh9Lm1hdC1oMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaGVhZGxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDI0cHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTVweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWg2W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1ib2R5LXN0cm9uZ1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYXJkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FyZC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MjRweH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNhbGVuZGFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZGlhbG9nLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVlbSAwO2JvcmRlci10b3A6Ljg0Mzc1ZW0gc29saWQgdHJhbnNwYXJlbnR9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17dG9wOi0wLjg0Mzc1ZW07cGFkZGluZy10b3A6Ljg0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6NzUlO21hcmdpbi10b3A6LjY2NjY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS43OTE2NjY2NjY3ZW0pfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjQzNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDJweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIzZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4yODEyNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LjU0MTY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS42NjY2NjY2NjY3ZW0pfUBtZWRpYSBwcmludHsubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjJlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjFlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyZW0pIHNjYWxlKDAuNzUpfX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouMjVlbSAwIC43NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjA5Mzc1ZW07bWFyZ2luLXRvcDotMC41ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoxZW0gMCAxZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuODQzNzVlbTttYXJnaW4tdG9wOi0wLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMiksIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fWlucHV0Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi0wLjA2MjVlbX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHh9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtfS5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1zdGVwLXN1Yi1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6bm9ybWFsfS5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1zdGVwLWxhYmVsLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10YWItZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MH0ubWF0LXRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTBweDtwYWRkaW5nLXRvcDo2cHg7cGFkZGluZy1ib3R0b206NnB4fS5tYXQtdG9vbHRpcC1oYW5kc2V0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4fS5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtc2ltcGxlLXNuYWNrYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHh9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoxO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjE0cHh9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV06bm90KDplbXB0eSl7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9Lm1hdC1yaXBwbGUubWF0LXJpcHBsZS11bmJvdW5kZWRbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OnZpc2libGV9Lm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJhZGl1czo1MCU7cG9pbnRlci1ldmVudHM6bm9uZTt0cmFuc2l0aW9uOm9wYWNpdHksdHJhbnNmb3JtIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTt0cmFuc2Zvcm06c2NhbGUoMCl9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9LmNkay12aXN1YWxseS1oaWRkZW5bX25nY29udGVudC0lQ09NUCVde2JvcmRlcjowO2NsaXA6cmVjdCgwIDAgMCAwKTtoZWlnaHQ6MXB4O21hcmdpbjotMXB4O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4O3doaXRlLXNwYWNlOm5vd3JhcDtvdXRsaW5lOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0sIC5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cG9pbnRlci1ldmVudHM6bm9uZTt0b3A6MDtsZWZ0OjA7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV06ZW1wdHl7ZGlzcGxheTpub25lfS5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktcGFuZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6YXV0bztib3gtc2l6aW5nOmJvcmRlci1ib3g7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDttYXgtd2lkdGg6MTAwJTttYXgtaGVpZ2h0OjEwMCV9LmNkay1vdmVybGF5LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDt6LWluZGV4OjEwMDA7cG9pbnRlci1ldmVudHM6YXV0bzstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnQ7dHJhbnNpdGlvbjpvcGFjaXR5IDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpO29wYWNpdHk6MH0uY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eToxfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6LjZ9LmNkay1vdmVybGF5LWRhcmstYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMzIpfS5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV0sIC5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWNvbm5lY3RlZC1wb3NpdGlvbi1ib3VuZGluZy1ib3hbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO21pbi13aWR0aDoxcHg7bWluLWhlaWdodDoxcHh9LmNkay1nbG9iYWwtc2Nyb2xsYmxvY2tbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3dpZHRoOjEwMCU7b3ZlcmZsb3cteTpzY3JvbGx9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplW19uZ2NvbnRlbnQtJUNPTVAlXXtyZXNpemU6bm9uZX10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDphdXRvICFpbXBvcnRhbnQ7b3ZlcmZsb3c6aGlkZGVuICFpbXBvcnRhbnR9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZy1maXJlZm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDowICFpbXBvcnRhbnR9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydHt9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmR7fS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGx7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0IDBzIDFtc30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOi13ZWJraXQtYXV0b2ZpbGwpe2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmQgMHMgMW1zfS5tYXQtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LW1kYy1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfSAgLnJ1bi10YWJsZS1jb2xvci1ncm91cC1ieXtmb250LXNpemU6MTZweH0gIC5ydW4tdGFibGUtY29sb3ItZ3JvdXAtYnkgLmxhYmVse2NvbG9yOiM2MTYxNjE7Zm9udC1zaXplOi45ZW07bWFyZ2luOjEwcHggMDtwYWRkaW5nOjAgMTZweDtwb2ludGVyLWV2ZW50czpub25lfSAgLnJ1bi10YWJsZS1jb2xvci1ncm91cC1ieSBidXR0b257ZGlzcGxheTpncmlkO2dhcDoycHggMTBweDtncmlkLXRlbXBsYXRlLWNvbHVtbnM6MjBweCBhdXRvfSAgLnJ1bi10YWJsZS1jb2xvci1ncm91cC1ieSBtYXQtaWNvbntoZWlnaHQ6MjBweDt3aWR0aDoyMHB4fSAgLnJ1bi10YWJsZS1jb2xvci1ncm91cC1ieSAuZGlzcGxheS1yZWdleC1zdHJpbmd7cGFkZGluZy1sZWZ0OjQwcHh9ICAucnVuLXRhYmxlLWNvbG9yLWdyb3VwLWJ5IC5kaXNwbGF5LXJlZ2V4LXN0cmluZyAubm9uZS1zZXQtc3RyaW5ne2NvbG9yOiM2MTYxNjF9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgICAucnVuLXRhYmxlLWNvbG9yLWdyb3VwLWJ5IC5kaXNwbGF5LXJlZ2V4LXN0cmluZyAubm9uZS1zZXQtc3RyaW5nLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAgIC5ydW4tdGFibGUtY29sb3ItZ3JvdXAtYnkgLmRpc3BsYXktcmVnZXgtc3RyaW5nIC5ub25lLXNldC1zdHJpbmd7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNyl9J10sY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKGsyLFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6InJ1bnMtZ3JvdXAtbWVudS1idXR0b24tY29tcG9uZW50Iix0ZW1wbGF0ZVVybDoicnVuc19ncm91cF9tZW51X2J1dHRvbl9jb21wb25lbnQubmcuaHRtbCIsc3R5bGVVcmxzOlsicnVuc19ncm91cF9tZW51X2J1dHRvbl9jb21wb25lbnQuY3NzIl0sY2hhbmdlRGV0ZWN0aW9uOmpuLk9uUHVzaH1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOlhZfV19KSx7c2hvd0V4cGVyaW1lbnRzR3JvdXBCeTpbe3R5cGU6Ul99XSxleHBlcmltZW50SWRzOlt7dHlwZTpSX31dLHJlZ2V4U3RyaW5nOlt7dHlwZTpSX31dLHNlbGVjdGVkR3JvdXBCeTpbe3R5cGU6Ul99XSxzaG93R3JvdXBCeVJlZ2V4Olt7dHlwZTpSX31dLG9uR3JvdXBCeUNoYW5nZTpbe3R5cGU6RV99XX0pO2NsYXNzIFMye2NvbnN0cnVjdG9yKHQpe3RoaXMuc3RvcmU9dCx0aGlzLnNob3dHcm91cEJ5UmVnZXgkPXRoaXMuc3RvcmUuc2VsZWN0KFVEKSx0aGlzLnNob3dFeHBlcmltZW50c0dyb3VwQnkkPXRoaXMuc3RvcmUuc2VsZWN0KENSKS5waXBlKFZ0KCh0PT50LmhhcyhfRC5DT01QQVJFX0VYUEVSSU1FTlQpKSkpLHRoaXMuc2VsZWN0ZWRHcm91cEJ5JD10aGlzLnN0b3JlLnNlbGVjdCgkeiksdGhpcy5ncm91cEJ5UmVnZXhTdHJpbmckPXRoaXMuc3RvcmUuc2VsZWN0KHJJKX1vbkdyb3VwQnlDaGFuZ2UodCl7dGhpcy5zdG9yZS5kaXNwYXRjaCh4VCh7ZXhwZXJpbWVudElkczp0aGlzLmV4cGVyaW1lbnRJZHMsZ3JvdXBCeTp0fSkpfX1TMi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8UzIpKGdmKGlTKSl9LFMyLsm1Y21wPXNvKHt0eXBlOlMyLHNlbGVjdG9yczpbWyJydW5zLWdyb3VwLW1lbnUtYnV0dG9uIl1dLGlucHV0czp7ZXhwZXJpbWVudElkczoiZXhwZXJpbWVudElkcyJ9LGRlY2xzOjUsdmFyczoxMyxjb25zdHM6W1szLCJyZWdleFN0cmluZyIsInNlbGVjdGVkR3JvdXBCeSIsInNob3dHcm91cEJ5UmVnZXgiLCJzaG93RXhwZXJpbWVudHNHcm91cEJ5IiwiZXhwZXJpbWVudElkcyIsIm9uR3JvdXBCeUNoYW5nZSJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoQ2YoMCwicnVucy1ncm91cC1tZW51LWJ1dHRvbi1jb21wb25lbnQiLDApLFJmKCJvbkdyb3VwQnlDaGFuZ2UiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLm9uR3JvdXBCeUNoYW5nZShlKX0pKSxfeSgxLCJhc3luYyIpLF95KDIsImFzeW5jIiksX3koMywiYXN5bmMiKSxfeSg0LCJhc3luYyIpLE1mKCkpLDImZSYmYmYoInJlZ2V4U3RyaW5nIixDeSgxLDUsbi5ncm91cEJ5UmVnZXhTdHJpbmckKSkoInNlbGVjdGVkR3JvdXBCeSIsQ3koMiw3LG4uc2VsZWN0ZWRHcm91cEJ5JCkpKCJzaG93R3JvdXBCeVJlZ2V4IixDeSgzLDksbi5zaG93R3JvdXBCeVJlZ2V4JCkpKCJzaG93RXhwZXJpbWVudHNHcm91cEJ5IixDeSg0LDExLG4uc2hvd0V4cGVyaW1lbnRzR3JvdXBCeSQpKSgiZXhwZXJpbWVudElkcyIsbi5leHBlcmltZW50SWRzKX0sZGlyZWN0aXZlczpbazJdLHBpcGVzOltWdl0sZW5jYXBzdWxhdGlvbjoyLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihTMixbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJydW5zLWdyb3VwLW1lbnUtYnV0dG9uIix0ZW1wbGF0ZTonXG4gICAgPHJ1bnMtZ3JvdXAtbWVudS1idXR0b24tY29tcG9uZW50XG4gICAgICBbcmVnZXhTdHJpbmddPSJncm91cEJ5UmVnZXhTdHJpbmckIHwgYXN5bmMiXG4gICAgICBbc2VsZWN0ZWRHcm91cEJ5XT0ic2VsZWN0ZWRHcm91cEJ5JCB8IGFzeW5jIlxuICAgICAgW3Nob3dHcm91cEJ5UmVnZXhdPSJzaG93R3JvdXBCeVJlZ2V4JCB8IGFzeW5jIlxuICAgICAgW3Nob3dFeHBlcmltZW50c0dyb3VwQnldPSJzaG93RXhwZXJpbWVudHNHcm91cEJ5JCB8IGFzeW5jIlxuICAgICAgW2V4cGVyaW1lbnRJZHNdPSJleHBlcmltZW50SWRzIlxuICAgICAgKG9uR3JvdXBCeUNoYW5nZSk9Im9uR3JvdXBCeUNoYW5nZSgkZXZlbnQpIlxuICAgID48L3J1bnMtZ3JvdXAtbWVudS1idXR0b24tY29tcG9uZW50PlxuICAnLGNoYW5nZURldGVjdGlvbjpqbi5PblB1c2h9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTppU31dfSkse2V4cGVyaW1lbnRJZHM6W3t0eXBlOlJffV19KTtjb25zdCBEMj1bImNvbnRhaW5lciJdO3ZhciBSMjshKGZ1bmN0aW9uKHQpe3RbdC5OT05FPTBdPSJOT05FIix0W3QuTEVGVD0xXT0iTEVGVCIsdFt0LlJJR0hUPTJdPSJSSUdIVCJ9KShSMnx8KFIyPXt9KSk7Y2xhc3MgRTJ7Y29uc3RydWN0b3IodCl7dGhpcy5jaGFuZ2VEZXRlY3Rvcj10LHRoaXMudGlja0NvdW50PTIwLHRoaXMudmFsdWU9bmV3IFN5LHRoaXMuUG9zaXRpb249UjIsdGhpcy5hY3RpdmVUaHVtYj1SMi5OT05FLHRoaXMub2Zmc2V0WEZyb21PcmlnaW5PZkFjdGl2ZVRodW1iPTAsdGhpcy5uZ1Vuc3Vic2NyaWJlPW5ldyBCfWdldFRodW1iUG9zaXRpb24odCl7Y29uc3QgZT10aGlzLmdldENsaXBwZWRWYWx1ZSh0KSxuPXRoaXMubWF4LXRoaXMubWluO2lmKG48PTApcmV0dXJuIjUwJSI7cmV0dXJuYCR7KGUtdGhpcy5taW4pL24qMTAwfSVgfWdldFRyYWNrV2lkdGgoKXtjb25zdCB0PXRoaXMubWF4LXRoaXMubWluO2lmKHQ8PTApcmV0dXJuIjAlIjtyZXR1cm5gJHsodGhpcy5nZXRDbGlwcGVkVmFsdWUodGhpcy51cHBlclZhbHVlKS10aGlzLmdldENsaXBwZWRWYWx1ZSh0aGlzLmxvd2VyVmFsdWUpKS90KjEwMH0lYH1nZXRDbGlwcGVkVmFsdWUodCl7cmV0dXJuIE1hdGgubWluKE1hdGgubWF4KHQsdGhpcy5taW4pLHRoaXMubWF4KX1uZ09uRGVzdHJveSgpe3RoaXMubmdVbnN1YnNjcmliZS5uZXh0KCksdGhpcy5uZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCl9bmdPbkluaXQoKXtsZShkb2N1bWVudCwibW91c2Vtb3ZlIix7cGFzc2l2ZTohMH0pLnBpcGUoamUodGhpcy5uZ1Vuc3Vic2NyaWJlKSkuc3Vic2NyaWJlKCh0PT57dGhpcy5oYW5kbGVNb3VzZU1vdmUodCl9KSksbGUoZG9jdW1lbnQsIm1vdXNldXAiLHtwYXNzaXZlOiEwfSkucGlwZShqZSh0aGlzLm5nVW5zdWJzY3JpYmUpKS5zdWJzY3JpYmUoKHQ9Pnt0aGlzLmhhbmRsZU1vdXNlT3V0KHQpfSkpfWhhbmRsZU1vdXNlRG93bih0LGUpe3RoaXMuYWN0aXZlVGh1bWI9ZTt0aGlzLm9mZnNldFhGcm9tT3JpZ2luT2ZBY3RpdmVUaHVtYj02LXQub2Zmc2V0WH1jYWxjdWxhdGVWYWx1ZUZyb21Nb3VzZUV2ZW50KHQpe2NvbnN0e2xlZnQ6ZSxyaWdodDpufT10aGlzLmNvbnRhaW5lci5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLG89dC5jbGllbnRYLWUrdGhpcy5vZmZzZXRYRnJvbU9yaWdpbk9mQWN0aXZlVGh1bWI7bGV0IGk7aWYobnVsbCE9PXRoaXMudGlja0NvdW50JiZ0aGlzLnRpY2tDb3VudD4wKXtjb25zdCB0PShuLWUpL3RoaXMudGlja0NvdW50O2k9TWF0aC5yb3VuZChvL3QpKnQvKG4tZSl9ZWxzZSBpPW8vKG4tZSk7Y29uc3QgYT10aGlzLmdldENsaXBwZWRWYWx1ZSh0aGlzLm1pbisodGhpcy5tYXgtdGhpcy5taW4pKmkpO3JldHVybiBOdW1iZXIoYS50b0ZpeGVkKDEwKSl9aGFuZGxlTW91c2VNb3ZlKHQpe2lmKHRoaXMuYWN0aXZlVGh1bWI9PT1SMi5OT05FKXJldHVybjtjb25zdCBlPXRoaXMuY2FsY3VsYXRlVmFsdWVGcm9tTW91c2VFdmVudCh0KTtsZXQgbj1bdGhpcy5sb3dlclZhbHVlLHRoaXMudXBwZXJWYWx1ZV07dGhpcy5hY3RpdmVUaHVtYj09PVIyLkxFRlQ/KGU+dGhpcy51cHBlclZhbHVlJiYodGhpcy5hY3RpdmVUaHVtYj1SMi5SSUdIVCksbj1bZSx0aGlzLnVwcGVyVmFsdWVdKTooZTx0aGlzLmxvd2VyVmFsdWUmJih0aGlzLmFjdGl2ZVRodW1iPVIyLkxFRlQpLG49W3RoaXMubG93ZXJWYWx1ZSxlXSksdGhpcy5tYXliZU5vdGlmeU5leHRWYWx1ZShuKSx0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpfW1heWJlTm90aWZ5TmV4dFZhbHVlKHQpe2NvbnN0W2Usbl09dC5zb3J0KCgodCxlKT0+dC1lKSk7dGhpcy5sb3dlclZhbHVlPT09ZSYmdGhpcy51cHBlclZhbHVlPT09bnx8dGhpcy52YWx1ZS5lbWl0KHtsb3dlclZhbHVlOmUsdXBwZXJWYWx1ZTpufSl9aGFuZGxlTW91c2VPdXQodCl7dGhpcy5hY3RpdmVUaHVtYiE9PVIyLk5PTkUmJih0aGlzLmFjdGl2ZVRodW1iPVIyLk5PTkUsdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKSl9aGFuZGxlSW5wdXRDaGFuZ2UodCxlKXtjb25zdCBuPXRoaXMuZ2V0Q2xpcHBlZFZhbHVlKE51bWJlcih0LnRhcmdldC52YWx1ZSkpO2lmKGlzTmFOKG4pKXJldHVybjtsZXQgbz1bdGhpcy5sb3dlclZhbHVlLHRoaXMudXBwZXJWYWx1ZV07bz1lPT09UjIuTEVGVD9bbix0aGlzLnVwcGVyVmFsdWVdOlt0aGlzLmxvd2VyVmFsdWUsbl0sdGhpcy5tYXliZU5vdGlmeU5leHRWYWx1ZShvKX1pc1RodW1iQWN0aXZlKHQpe3JldHVybiB0aGlzLmFjdGl2ZVRodW1iPT09dH19RTIuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEUyKShnZihPYikpfSxFMi7JtWNtcD1zbyh7dHlwZTpFMixzZWxlY3RvcnM6W1sidGItcmFuZ2UtaW5wdXQiXV0sdmlld1F1ZXJ5OmZ1bmN0aW9uIHQoZSxuKXtpZigxJmUmJlZ5KEQyLDcsS2gpLDImZSl7bGV0IHQ7QnkodD1VeSgpKSYmKG4uY29udGFpbmVyPXQuZmlyc3QpfX0saW5wdXRzOnttaW46Im1pbiIsbWF4OiJtYXgiLGxvd2VyVmFsdWU6Imxvd2VyVmFsdWUiLHVwcGVyVmFsdWU6InVwcGVyVmFsdWUiLHRpY2tDb3VudDoidGlja0NvdW50In0sb3V0cHV0czp7dmFsdWU6InZhbHVlIn0sZGVjbHM6OCx2YXJzOjE0LGNvbnN0czpbWyJ0eXBlIiwibnVtYmVyIiwxLCJsb3dlci1pbnB1dCIsMywidmFsdWUiLCJjaGFuZ2UiXSxbInR5cGUiLCJudW1iZXIiLDEsInVwcGVyLWlucHV0IiwzLCJ2YWx1ZSIsImNoYW5nZSJdLFsxLCJjb250YWluZXIiXSxbImNvbnRhaW5lciIsIiJdLFsxLCJzbGlkZXItdHJhY2siXSxbMSwic2xpZGVyLXRyYWNrLWZpbGwiXSxbMSwidGh1bWIiLDMsIm1vdXNlZG93biJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoQ2YoMCwiaW5wdXQiLDApLFJmKCJjaGFuZ2UiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLmhhbmRsZUlucHV0Q2hhbmdlKGUsbi5Qb3NpdGlvbi5MRUZUKX0pKSxNZigpLENmKDEsImlucHV0IiwxKSxSZigiY2hhbmdlIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5oYW5kbGVJbnB1dENoYW5nZShlLG4uUG9zaXRpb24uUklHSFQpfSkpLE1mKCksQ2YoMiwic3BhbiIsMiwzKSx2Zig0LCJzcGFuIiw0KSx2Zig1LCJzcGFuIiw1KSxDZig2LCJzcGFuIiw2KSxSZigibW91c2Vkb3duIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5oYW5kbGVNb3VzZURvd24oZSxuLlBvc2l0aW9uLkxFRlQpfSkpLE1mKCksQ2YoNywic3BhbiIsNiksUmYoIm1vdXNlZG93biIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4uaGFuZGxlTW91c2VEb3duKGUsbi5Qb3NpdGlvbi5SSUdIVCl9KSksTWYoKSxNZigpKSwyJmUmJihiZigidmFsdWUiLG4ubG93ZXJWYWx1ZSksRGMoMSksYmYoInZhbHVlIixuLnVwcGVyVmFsdWUpLERjKDQpLGx1KCJsZWZ0IixuLmdldFRodW1iUG9zaXRpb24obi5sb3dlclZhbHVlKSkoIndpZHRoIixuLmdldFRyYWNrV2lkdGgoKSksRGMoMSksbHUoImxlZnQiLG4uZ2V0VGh1bWJQb3NpdGlvbihuLmxvd2VyVmFsdWUpKSxjdSgiYWN0aXZlIixuLmlzVGh1bWJBY3RpdmUobi5Qb3NpdGlvbi5MRUZUKSksRGMoMSksbHUoImxlZnQiLG4uZ2V0VGh1bWJQb3NpdGlvbihuLnVwcGVyVmFsdWUpKSxjdSgiYWN0aXZlIixuLmlzVGh1bWJBY3RpdmUobi5Qb3NpdGlvbi5SSUdIVCkpKX0sc3R5bGVzOlsnLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjEycHg7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtYmFkZ2Utc21hbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6OXB4fS5tYXQtYmFkZ2UtbGFyZ2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweH0ubWF0LWgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1oZWFkbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMjRweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNnB4LzI4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNXB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC44MykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtaDZbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuNjcpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWJvZHktc3Ryb25nW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjAgMCAxMnB4fS5tYXQtc21hbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDEycHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjMwMCAxMTJweC8xMTJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDVlbTttYXJnaW46MCAwIDU2cHh9Lm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDU2cHgvNTZweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDJlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDQ1cHgvNDhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDA1ZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAzNHB4LzQwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDY0cHh9Lm1hdC1ib3R0b20tc2hlZXQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhcmQtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjIwcHh9Lm1hdC1jYXJkLXN1YnRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXJkLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNoZWNrYm94LWxheW91dFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoyNHB4fS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtdHJhaWxpbmctaWNvbi5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MThweH0ubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1oZWFkZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9vdGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2FsZW5kYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhbGVuZGFyLWJvZHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxM3B4fS5tYXQtY2FsZW5kYXItYm9keS1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FsZW5kYXItcGVyaW9kLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRoW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo0MDB9Lm1hdC1kaWFsb2ctdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDoxLjEyNTtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE1MCU7bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS41ZW07d2lkdGg6MS41ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNWVtIDA7Ym9yZGVyLXRvcDouODQzNzVlbSBzb2xpZCB0cmFuc3BhcmVudH0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTAuODQzNzVlbTtwYWRkaW5nLXRvcDouODQzNzVlbX0ubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo3NSU7bWFyZ2luLXRvcDouNjY2NjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjc5MTY2NjY2NjdlbSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNDM3NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMnB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTJlbSkgc2NhbGUoMC43NSl9fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi4yNWVtIDAgLjc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMDkzNzVlbTttYXJnaW4tdG9wOi0wLjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjFlbSAwIDFlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS44NDM3NWVtO21hcmdpbi10b3A6LTAuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9aW5wdXQubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LTAuMDYyNWVtfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweH0ubWF0LXJhZGlvLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW19Lm1hdC1zbGlkZS10b2dnbGUtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXN0ZXAtc3ViLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDpub3JtYWx9Lm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRhYi1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowfS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMHB4O3BhZGRpbmctdG9wOjZweDtwYWRkaW5nLWJvdHRvbTo2cHh9Lm1hdC10b29sdGlwLWhhbmRzZXRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHh9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1zaW1wbGUtc25hY2tiYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjE7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo1MDB9Lm1hdC10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW5lc3RlZC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweH0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmVtcHR5KXt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKX0ubWF0LXJpcHBsZS5tYXQtcmlwcGxlLXVuYm91bmRlZFtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6dmlzaWJsZX0ubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItcmFkaXVzOjUwJTtwb2ludGVyLWV2ZW50czpub25lO3RyYW5zaXRpb246b3BhY2l0eSx0cmFuc2Zvcm0gMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO3RyYW5zZm9ybTpzY2FsZSgwKX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6bm9uZX0uY2RrLXZpc3VhbGx5LWhpZGRlbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjA7Y2xpcDpyZWN0KDAgMCAwIDApO2hlaWdodDoxcHg7bWFyZ2luOi0xcHg7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxcHg7d2hpdGUtc3BhY2U6bm93cmFwO291dGxpbmU6MDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb2ludGVyLWV2ZW50czpub25lO3RvcDowO2xlZnQ6MDtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXTplbXB0eXtkaXNwbGF5Om5vbmV9LmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1wYW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtwb2ludGVyLWV2ZW50czphdXRvO2JveC1zaXppbmc6Ym9yZGVyLWJveDt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O21heC13aWR0aDoxMDAlO21heC1oZWlnaHQ6MTAwJX0uY2RrLW92ZXJsYXktYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO2xlZnQ6MDtyaWdodDowO3otaW5kZXg6MTAwMDtwb2ludGVyLWV2ZW50czphdXRvOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudDt0cmFuc2l0aW9uOm9wYWNpdHkgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSk7b3BhY2l0eTowfS5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjF9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAuY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTouNn0uY2RrLW92ZXJsYXktZGFyay1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4zMil9LmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MH0uY2RrLW92ZXJsYXktY29ubmVjdGVkLXBvc2l0aW9uLWJvdW5kaW5nLWJveFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bWluLXdpZHRoOjFweDttaW4taGVpZ2h0OjFweH0uY2RrLWdsb2JhbC1zY3JvbGxibG9ja1tfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7d2lkdGg6MTAwJTtvdmVyZmxvdy15OnNjcm9sbH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemVbX25nY29udGVudC0lQ09NUCVde3Jlc2l6ZTpub25lfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmdbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OmF1dG8gIWltcG9ydGFudDtvdmVyZmxvdzpoaWRkZW4gIWltcG9ydGFudH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nLWZpcmVmb3hbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OjAgIWltcG9ydGFudH1Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0e31Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZHt9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbHthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnQgMHMgMW1zfS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCg6LXdlYmtpdC1hdXRvZmlsbCl7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZCAwcyAxbXN9Lm1hdC1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtbWRjLWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9W19uZ2hvc3QtJUNPTVAlXXtib3gtc2l6aW5nOmJvcmRlci1ib3g7ZGlzcGxheTppbmxpbmUtZ3JpZDtncmlkLWdhcDoxMHB4O2dyaWQtdGVtcGxhdGUtYXJlYXM6Imxvd2VyLWlucHV0IHVwcGVyLWlucHV0IiAic2xpZGVyIHNsaWRlciI7Zm9udC1zaXplOjA7bWluLXdpZHRoOjEwMHB4O3BhZGRpbmc6NnB4fWlucHV0W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOmluaGVyaXQ7Ym9yZGVyLXN0eWxlOnNvbGlkO2JveC1zaXppbmc6Ym9yZGVyLWJveDtjb2xvcjppbmhlcml0O292ZXJmbG93OmhpZGRlbjt3aWR0aDoxMDAlfS5sb3dlci1pbnB1dFtfbmdjb250ZW50LSVDT01QJV17Z3JpZC1hcmVhOmxvd2VyLWlucHV0fS51cHBlci1pbnB1dFtfbmdjb250ZW50LSVDT01QJV17Z3JpZC1hcmVhOnVwcGVyLWlucHV0O2p1c3RpZnktc2VsZjpmbGV4LWVuZH0uY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtncmlkLWFyZWE6c2xpZGVyO2FsaWduLWl0ZW1zOmNlbnRlcjtib3gtc2l6aW5nOmJvcmRlci1ib3g7ZGlzcGxheTppbmxpbmUtZmxleDtoZWlnaHQ6MTJweDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO3Bvc2l0aW9uOnJlbGF0aXZlO3dpZHRoOjEwMCV9LnNsaWRlci10cmFja1tfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4yNik7aGVpZ2h0OjJweDt3aWR0aDoxMDAlfWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC5zbGlkZXItdHJhY2tbX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAuc2xpZGVyLXRyYWNrW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoMjU1LDI1NSwyNTUsLjMpfS5zbGlkZXItdHJhY2stZmlsbFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7aGVpZ2h0OjJweH0udGh1bWJbX25nY29udGVudC0lQ09NUCVde2JveC1zYWRob3c6MCAwIDAgMXB4IHJnYmEoMCwwLDAsLjI2KTtib3JkZXItcmFkaXVzOjEwMCU7ZGlzcGxheTppbmxpbmUtYmxvY2s7aGVpZ2h0OjEycHg7bWFyZ2luLWxlZnQ6LTZweDtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDt0cmFuc2Zvcm0tb3JpZ2luOmNlbnRlcjt0cmFuc2l0aW9uOnRyYW5zZm9ybSAuM3MgZWFzZTt3aWR0aDoxMnB4O3dpbGwtY2hhbmdlOnRyYW5zZm9ybX1ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICAudGh1bWJbX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAudGh1bWJbX25nY29udGVudC0lQ09NUCVde2JveC1zYWRob3c6MCAwIDAgMXB4IHJnYmEoMjU1LDI1NSwyNTUsLjMpfS50aHVtYi5hY3RpdmVbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTpzY2FsZSgxLjIpfS5zbGlkZXItdHJhY2stZmlsbFtfbmdjb250ZW50LSVDT01QJV0sIC50aHVtYltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZjU3YzAwfWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC5zbGlkZXItdHJhY2stZmlsbFtfbmdjb250ZW50LSVDT01QJV0sIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5zbGlkZXItdHJhY2stZmlsbFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZWY2YzAwfWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC50aHVtYltfbmdjb250ZW50LSVDT01QJV0sIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC50aHVtYltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZWY2YzAwfSddLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihFMixbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJ0Yi1yYW5nZS1pbnB1dCIsdGVtcGxhdGVVcmw6Ii4vcmFuZ2VfaW5wdXRfY29tcG9uZW50Lm5nLmh0bWwiLHN0eWxlVXJsczpbIi4vcmFuZ2VfaW5wdXRfY29tcG9uZW50LmNzcyJdLGNoYW5nZURldGVjdGlvbjpqbi5PblB1c2h9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpPYn1dfSkse2NvbnRhaW5lcjpbe3R5cGU6YXIsYXJnczpbImNvbnRhaW5lciIse3N0YXRpYzohMCxyZWFkOktofV19XSxtaW46W3t0eXBlOlJffV0sbWF4Olt7dHlwZTpSX31dLGxvd2VyVmFsdWU6W3t0eXBlOlJffV0sdXBwZXJWYWx1ZTpbe3R5cGU6Ul99XSx0aWNrQ291bnQ6W3t0eXBlOlJffV0sdmFsdWU6W3t0eXBlOkVffV19KTtjb25zdCBBMj1bIm1lYXN1cmVyIl0sVDI9WyJpbnB1dCJdO2NsYXNzIE4ye2NvbnN0cnVjdG9yKHQpe3RoaXMuY2hhbmdlRGV0ZWN0b3I9dCx0aGlzLnBsYWNlaG9sZGVyPSIiLHRoaXMuc3R5bGU9ImRlZmF1bHQiLHRoaXMucGF0dGVyblJlZ2V4PW5ldyBSZWdFeHAoIi4qIiksdGhpcy5pc1ZhbGlkPSEwLHRoaXMub25WYWx1ZUNoYW5nZT1uZXcgU3ksdGhpcy5ibHVyPW5ldyBTeSx0aGlzLmZvY3VzPW5ldyBTeSx0aGlzLmtleWRvd249bmV3IFN5LHRoaXMua2V5dXA9bmV3IFN5LHRoaXMuaW50ZXJuYWxWYWx1ZT0iIix0aGlzLmZvbnRDaGFuZ2VMaXN0ZW5lcj10aGlzLnVwZGF0ZUlucHV0V2lkdGguYmluZCh0aGlzKX1uZ09uSW5pdCgpe2RvY3VtZW50LmZvbnRzJiZkb2N1bWVudC5mb250cy5hZGRFdmVudExpc3RlbmVyKCJsb2FkaW5nZG9uZSIsdGhpcy5mb250Q2hhbmdlTGlzdGVuZXIpfW5nT25EZXN0cm95KCl7ZG9jdW1lbnQuZm9udHMmJmRvY3VtZW50LmZvbnRzLnJlbW92ZUV2ZW50TGlzdGVuZXIoImxvYWRpbmdkb25lIix0aGlzLmZvbnRDaGFuZ2VMaXN0ZW5lcil9bmdPbkNoYW5nZXModCl7dmFyIGU7dC5wYXR0ZXJuJiYodGhpcy5wYXR0ZXJuUmVnZXg9bmV3IFJlZ0V4cChudWxsIT09KGU9dGhpcy5wYXR0ZXJuKSYmdm9pZCAwIT09ZT9lOiIiKSksdC52YWx1ZSYmKHRoaXMuaW50ZXJuYWxWYWx1ZT10aGlzLnZhbHVlKSx0aGlzLmlzVmFsaWQ9dGhpcy5wYXR0ZXJuUmVnZXgudGVzdCh0aGlzLmludGVybmFsVmFsdWUpfW5nQWZ0ZXJWaWV3Q2hlY2tlZCgpe3RoaXMudXBkYXRlSW5wdXRXaWR0aCgpfW9uSW5wdXQodCl7Y29uc3QgZT10aGlzLmludGVybmFsVmFsdWU7dGhpcy5pbnRlcm5hbFZhbHVlPXRoaXMuaW5wdXRFbFJlZi5uYXRpdmVFbGVtZW50LnZhbHVlLHRoaXMuaW50ZXJuYWxWYWx1ZSE9PWUmJih0aGlzLmlzVmFsaWQ9dGhpcy5wYXR0ZXJuUmVnZXgudGVzdCh0aGlzLmludGVybmFsVmFsdWUpLHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCkpLHRoaXMub25WYWx1ZUNoYW5nZS5lbWl0KHt2YWx1ZTp0aGlzLmludGVybmFsVmFsdWV9KX11cGRhdGVJbnB1dFdpZHRoKCl7Y29uc3R7d2lkdGg6dH09dGhpcy5tZWFzdXJlckVsUmVmLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7dGhpcy5pbnB1dEVsUmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGUud2lkdGg9YCR7dH1weGB9fWZ1bmN0aW9uIHoyKHQsZSl7aWYoMSZ0KXtjb25zdCB0PXdmKCk7Q2YoMCwiY29udGVudC13cmFwcGluZy1pbnB1dCIsMyksUmYoIm9uVmFsdWVDaGFuZ2UiLChmdW5jdGlvbiBlKG4pe1BpKHQpO3JldHVybiB6ZigpLmFsaWFzQ2hhbmdlZC5lbWl0KG4pfSkpLE1mKCl9aWYoMiZ0KXtjb25zdCB0PXpmKCk7ZHUodC5pc0FsaWFzTmFtZUxlZ2FsPyJoaWdoLWNvbnRyYXN0IjoiZXJyb3IiKSxiZigidmFsdWUiLHQuYWxpYXMuYWxpYXNUZXh0KX19ZnVuY3Rpb24gSTIodCxlKXtpZigxJnQmJihDZigwLCJzcGFuIiksUHUoMSksTWYoKSksMiZ0KXtjb25zdCB0PXpmKCk7Y3UoImlsbGVnYWwiLCF0LmlzQWxpYXNOYW1lTGVnYWwpLERjKDEpLHd1KHQuYWxpYXMuYWxpYXNUZXh0KX19TjIuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fE4yKShnZihPYikpfSxOMi7JtWNtcD1zbyh7dHlwZTpOMixzZWxlY3RvcnM6W1siY29udGVudC13cmFwcGluZy1pbnB1dCJdXSx2aWV3UXVlcnk6ZnVuY3Rpb24gdChlLG4pe2lmKDEmZSYmKFZ5KEEyLDcsS2gpLFZ5KFQyLDcsS2gpKSwyJmUpe2xldCB0O0J5KHQ9VXkoKSkmJihuLm1lYXN1cmVyRWxSZWY9dC5maXJzdCksQnkodD1VeSgpKSYmKG4uaW5wdXRFbFJlZj10LmZpcnN0KX19LGhvc3RWYXJzOjIsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQoZSxuKXsyJmUmJm11KG4uc3R5bGUpfSxpbnB1dHM6e3ZhbHVlOiJ2YWx1ZSIscGxhY2Vob2xkZXI6InBsYWNlaG9sZGVyIixzdHlsZToic3R5bGUiLHBhdHRlcm46InBhdHRlcm4ifSxvdXRwdXRzOntvblZhbHVlQ2hhbmdlOiJvblZhbHVlQ2hhbmdlIixibHVyOiJibHVyIixmb2N1czoiZm9jdXMiLGtleWRvd246ImtleWRvd24iLGtleXVwOiJrZXl1cCJ9LGZlYXR1cmVzOltxb10sZGVjbHM6Nix2YXJzOjcsY29uc3RzOltbImFyaWEtaGlkZGVuIiwidHJ1ZSIsMSwibWVhc3VyZXIiXSxbIm1lYXN1cmVyIiwiIl0sWyJhdXRvY29tcGxldGUiLCJvZmYiLCJzcGVsbGNoZWNrIiwiZmFsc2UiLCJ0eXBlIiwidGV4dCIsMywidmFsdWUiLCJwbGFjZWhvbGRlciIsImJsdXIiLCJmb2N1cyIsImlucHV0Iiwia2V5ZG93biIsImtleXVwIl0sWyJpbnB1dCIsIiJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoQ2YoMCwic3BhbiIpLENmKDEsInNwYW4iLDAsMSksUHUoMyksTWYoKSxDZig0LCJpbnB1dCIsMiwzKSxSZigiYmx1ciIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4uYmx1ci5lbWl0KGUpfSkpKCJmb2N1cyIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4uZm9jdXMuZW1pdChlKX0pKSgiaW5wdXQiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLm9uSW5wdXQoZSl9KSkoImtleWRvd24iLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLmtleWRvd24uZW1pdChlKX0pKSgia2V5dXAiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLmtleXVwLmVtaXQoZSl9KSksTWYoKSxNZigpKSwyJmUmJihjdSgiY29udGFpbmVyIiwhMCkoImlzLXZhbGlkIixuLmlzVmFsaWQpLERjKDMpLHd1KG4uaW50ZXJuYWxWYWx1ZXx8bi5wbGFjZWhvbGRlciksRGMoMSksYmYoInZhbHVlIixuLnZhbHVlKSgicGxhY2Vob2xkZXIiLG4ucGxhY2Vob2xkZXIpKX0sc3R5bGVzOlsnLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjEycHg7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtYmFkZ2Utc21hbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6OXB4fS5tYXQtYmFkZ2UtbGFyZ2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweH0ubWF0LWgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1oZWFkbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMjRweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNnB4LzI4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNXB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC44MykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtaDZbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuNjcpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWJvZHktc3Ryb25nW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjAgMCAxMnB4fS5tYXQtc21hbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDEycHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjMwMCAxMTJweC8xMTJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDVlbTttYXJnaW46MCAwIDU2cHh9Lm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDU2cHgvNTZweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDJlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDQ1cHgvNDhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDA1ZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAzNHB4LzQwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDY0cHh9Lm1hdC1ib3R0b20tc2hlZXQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhcmQtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjIwcHh9Lm1hdC1jYXJkLXN1YnRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXJkLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNoZWNrYm94LWxheW91dFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoyNHB4fS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtdHJhaWxpbmctaWNvbi5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MThweH0ubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1oZWFkZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9vdGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2FsZW5kYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhbGVuZGFyLWJvZHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxM3B4fS5tYXQtY2FsZW5kYXItYm9keS1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FsZW5kYXItcGVyaW9kLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRoW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo0MDB9Lm1hdC1kaWFsb2ctdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDoxLjEyNTtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE1MCU7bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS41ZW07d2lkdGg6MS41ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNWVtIDA7Ym9yZGVyLXRvcDouODQzNzVlbSBzb2xpZCB0cmFuc3BhcmVudH0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTAuODQzNzVlbTtwYWRkaW5nLXRvcDouODQzNzVlbX0ubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo3NSU7bWFyZ2luLXRvcDouNjY2NjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjc5MTY2NjY2NjdlbSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNDM3NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMnB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTJlbSkgc2NhbGUoMC43NSl9fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi4yNWVtIDAgLjc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMDkzNzVlbTttYXJnaW4tdG9wOi0wLjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjFlbSAwIDFlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS44NDM3NWVtO21hcmdpbi10b3A6LTAuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9aW5wdXQubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LTAuMDYyNWVtfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweH0ubWF0LXJhZGlvLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW19Lm1hdC1zbGlkZS10b2dnbGUtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXN0ZXAtc3ViLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDpub3JtYWx9Lm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRhYi1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowfS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMHB4O3BhZGRpbmctdG9wOjZweDtwYWRkaW5nLWJvdHRvbTo2cHh9Lm1hdC10b29sdGlwLWhhbmRzZXRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHh9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1zaW1wbGUtc25hY2tiYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjE7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo1MDB9Lm1hdC10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW5lc3RlZC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweH0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmVtcHR5KXt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKX0ubWF0LXJpcHBsZS5tYXQtcmlwcGxlLXVuYm91bmRlZFtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6dmlzaWJsZX0ubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItcmFkaXVzOjUwJTtwb2ludGVyLWV2ZW50czpub25lO3RyYW5zaXRpb246b3BhY2l0eSx0cmFuc2Zvcm0gMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO3RyYW5zZm9ybTpzY2FsZSgwKX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6bm9uZX0uY2RrLXZpc3VhbGx5LWhpZGRlbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjA7Y2xpcDpyZWN0KDAgMCAwIDApO2hlaWdodDoxcHg7bWFyZ2luOi0xcHg7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxcHg7d2hpdGUtc3BhY2U6bm93cmFwO291dGxpbmU6MDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb2ludGVyLWV2ZW50czpub25lO3RvcDowO2xlZnQ6MDtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXTplbXB0eXtkaXNwbGF5Om5vbmV9LmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1wYW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtwb2ludGVyLWV2ZW50czphdXRvO2JveC1zaXppbmc6Ym9yZGVyLWJveDt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O21heC13aWR0aDoxMDAlO21heC1oZWlnaHQ6MTAwJX0uY2RrLW92ZXJsYXktYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO2xlZnQ6MDtyaWdodDowO3otaW5kZXg6MTAwMDtwb2ludGVyLWV2ZW50czphdXRvOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudDt0cmFuc2l0aW9uOm9wYWNpdHkgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSk7b3BhY2l0eTowfS5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjF9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAuY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTouNn0uY2RrLW92ZXJsYXktZGFyay1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4zMil9LmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MH0uY2RrLW92ZXJsYXktY29ubmVjdGVkLXBvc2l0aW9uLWJvdW5kaW5nLWJveFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bWluLXdpZHRoOjFweDttaW4taGVpZ2h0OjFweH0uY2RrLWdsb2JhbC1zY3JvbGxibG9ja1tfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7d2lkdGg6MTAwJTtvdmVyZmxvdy15OnNjcm9sbH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemVbX25nY29udGVudC0lQ09NUCVde3Jlc2l6ZTpub25lfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmdbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OmF1dG8gIWltcG9ydGFudDtvdmVyZmxvdzpoaWRkZW4gIWltcG9ydGFudH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nLWZpcmVmb3hbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OjAgIWltcG9ydGFudH1Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0e31Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZHt9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbHthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnQgMHMgMW1zfS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCg6LXdlYmtpdC1hdXRvZmlsbCl7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZCAwcyAxbXN9Lm1hdC1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtbWRjLWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9W19uZ2hvc3QtJUNPTVAlXXtkaXNwbGF5OmlubGluZS1mbGV4O3dpZHRoOm1heC1jb250ZW50fVtfbmdob3N0LSVDT01QJV06Zm9jdXMtd2l0aGluICAgLmNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOiNmNTdjMDB9LmRlZmF1bHRbX25naG9zdC0lQ09NUCVdOmhvdmVyICAgLmNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOiNlYmViZWJ9LmVycm9yW19uZ2hvc3QtJUNPTVAlXSAgIC5jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdLCBbX25naG9zdC0lQ09NUCVdICAgLmNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV06bm90KC5pcy12YWxpZCl7Ym9yZGVyLWNvbG9yOiNlZjlhOWF9LmVycm9yW19uZ2hvc3QtJUNPTVAlXSAgIC5jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdOmhvdmVyLCAuZXJyb3JbX25naG9zdC0lQ09NUCVdICAgLmNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMtd2l0aGluLCBbX25naG9zdC0lQ09NUCVdICAgLmNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV06bm90KC5pcy12YWxpZCk6aG92ZXIsIFtfbmdob3N0LSVDT01QJV0gICAuY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLmlzLXZhbGlkKTpmb2N1cy13aXRoaW57Ym9yZGVyLWNvbG9yOiNlZjlhOWF9LmhpZ2gtY29udHJhc3RbX25naG9zdC0lQ09NUCVdICAgLmNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOiNiZGJkYmR9LmhpZ2gtY29udHJhc3RbX25naG9zdC0lQ09NUCVdICAgLmNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV06aG92ZXJ7Ym9yZGVyLWNvbG9yOiM3NTc1NzV9LmNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLXJhZGl1czo0cHg7Ym9yZGVyOjJweCBzb2xpZCB0cmFuc3BhcmVudDtwYWRkaW5nOjFweCAycHg7cG9zaXRpb246cmVsYXRpdmV9Lm1lYXN1cmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb2ludGVyLWV2ZW50czpub25lO3Bvc2l0aW9uOmFic29sdXRlO3Zpc2liaWxpdHk6aGlkZGVufS5tZWFzdXJlcltfbmdjb250ZW50LSVDT01QJV0sIGlucHV0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTppbmhlcml0O2xpbmUtaGVpZ2h0OjEuNDtwYWRkaW5nOjA7d2hpdGUtc3BhY2U6cHJlfS5tZWFzdXJlcltfbmdjb250ZW50LSVDT01QJV06ZW1wdHksIGlucHV0W19uZ2NvbnRlbnQtJUNPTVAlXTplbXB0eXt3aWR0aDoyY2h9aW5wdXRbX25nY29udGVudC0lQ09NUCVde2FwcGVhcmFuY2U6bm9uZTtiYWNrZ3JvdW5kLWNvbG9yOmluaGVyaXQ7Ym9yZGVyOjA7Y29sb3I6aW5oZXJpdDtkaXNwbGF5OmlubGluZS1ibG9jaztmb250LWZhbWlseTppbmhlcml0O291dGxpbmU6MH1pbnB1dFtfbmdjb250ZW50LSVDT01QJV06Zm9jdXN7cGFkZGluZy1yaWdodDoxY2h9J10sY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKE4yLFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6ImNvbnRlbnQtd3JhcHBpbmctaW5wdXQiLHRlbXBsYXRlOidcbiAgICA8c3BhbiBbY2xhc3MuY29udGFpbmVyXT0idHJ1ZSIgW2NsYXNzLmlzLXZhbGlkXT0iaXNWYWxpZCI+XG4gICAgICA8c3BhbiAjbWVhc3VyZXIgY2xhc3M9Im1lYXN1cmVyIiBhcmlhLWhpZGRlbj0idHJ1ZSI+e3tcbiAgICAgICAgaW50ZXJuYWxWYWx1ZSB8fCBwbGFjZWhvbGRlclxuICAgICAgfX08L3NwYW4+XG4gICAgICA8aW5wdXRcbiAgICAgICAgI2lucHV0XG4gICAgICAgIGF1dG9jb21wbGV0ZT0ib2ZmIlxuICAgICAgICBzcGVsbGNoZWNrPSJmYWxzZSJcbiAgICAgICAgdHlwZT0idGV4dCJcbiAgICAgICAgKGJsdXIpPSJibHVyLmVtaXQoJGV2ZW50KSJcbiAgICAgICAgKGZvY3VzKT0iZm9jdXMuZW1pdCgkZXZlbnQpIlxuICAgICAgICAoaW5wdXQpPSJvbklucHV0KCRldmVudCkiXG4gICAgICAgIChrZXlkb3duKT0ia2V5ZG93bi5lbWl0KCRldmVudCkiXG4gICAgICAgIChrZXl1cCk9ImtleXVwLmVtaXQoJGV2ZW50KSJcbiAgICAgICAgW3ZhbHVlXT0idmFsdWUiXG4gICAgICAgIFtwbGFjZWhvbGRlcl09InBsYWNlaG9sZGVyIlxuICAgICAgLz5cbiAgICA8L3NwYW4+XG4gICcsc3R5bGVVcmxzOlsiLi9jb250ZW50X3dyYXBwaW5nX2lucHV0X2NvbXBvbmVudC5jc3MiXSxjaGFuZ2VEZXRlY3Rpb246am4uT25QdXNofV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6T2J9XX0pLHttZWFzdXJlckVsUmVmOlt7dHlwZTphcixhcmdzOlsibWVhc3VyZXIiLHtzdGF0aWM6ITAscmVhZDpLaH1dfV0saW5wdXRFbFJlZjpbe3R5cGU6YXIsYXJnczpbImlucHV0Iix7c3RhdGljOiEwLHJlYWQ6S2h9XX1dLHZhbHVlOlt7dHlwZTpSX31dLHBsYWNlaG9sZGVyOlt7dHlwZTpSX31dLHN0eWxlOlt7dHlwZTpBXyxhcmdzOlsiY2xhc3MiXX0se3R5cGU6Ul99XSxwYXR0ZXJuOlt7dHlwZTpSX31dLG9uVmFsdWVDaGFuZ2U6W3t0eXBlOkVffV0sYmx1cjpbe3R5cGU6RV99XSxmb2N1czpbe3R5cGU6RV99XSxrZXlkb3duOlt7dHlwZTpFX31dLGtleXVwOlt7dHlwZTpFX31dfSk7Y2xhc3MgSDJ7Y29uc3RydWN0b3IoKXt0aGlzLmlzQWxpYXNOYW1lTGVnYWw9ITAsdGhpcy5hbGlhc0NoYW5nZWQ9bmV3IFN5fX1IMi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8SDIpfSxIMi7JtWNtcD1zbyh7dHlwZTpIMixzZWxlY3RvcnM6W1sidGItZXhwZXJpbWVudC1hbGlhcyJdXSxpbnB1dHM6e2FsaWFzOiJhbGlhcyIsYWxpYXNFZGl0YWJsZToiYWxpYXNFZGl0YWJsZSIsaXNBbGlhc05hbWVMZWdhbDoiaXNBbGlhc05hbWVMZWdhbCJ9LG91dHB1dHM6e2FsaWFzQ2hhbmdlZDoiYWxpYXNDaGFuZ2VkIn0sZGVjbHM6NSx2YXJzOjMsY29uc3RzOltbMSwiYWxpYXMtbnVtYmVyIl0sWyJwbGFjZWhvbGRlciIsIkFsaWFzIGZvciBleHBlcmltZW50IiwzLCJzdHlsZSIsInZhbHVlIiwib25WYWx1ZUNoYW5nZSIsNCwibmdJZiIsIm5nSWZFbHNlIl0sWyJub0VkaXRBbGlhc05hbWUiLCIiXSxbInBsYWNlaG9sZGVyIiwiQWxpYXMgZm9yIGV4cGVyaW1lbnQiLDMsInZhbHVlIiwib25WYWx1ZUNoYW5nZSJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7aWYoMSZlJiYoQ2YoMCwic3BhbiIsMCksUHUoMSksTWYoKSxIbSgyLHoyLDEsMywiY29udGVudC13cmFwcGluZy1pbnB1dCIsMSksSG0oMyxJMiwyLDMsIm5nLXRlbXBsYXRlIixudWxsLDIscXkpKSwyJmUpe2NvbnN0IHQ9Rm0oNCk7RGMoMSksd3Uobi5hbGlhcy5hbGlhc051bWJlciksRGMoMSksYmYoIm5nSWYiLG4uYWxpYXNFZGl0YWJsZSkoIm5nSWZFbHNlIix0KX19LGRpcmVjdGl2ZXM6W1B2LE4yXSxzdHlsZXM6WycubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTJweDtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1iYWRnZS1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo5cHh9Lm1hdC1iYWRnZS1sYXJnZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4fS5tYXQtaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWhlYWRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAyNHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE2cHgvMjhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE1cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjgzKS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1oNltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC42NykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtYm9keS1zdHJvbmdbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MCAwIDEycHh9Lm1hdC1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FwdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTJweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6MzAwIDExMnB4LzExMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wNWVtO21hcmdpbjowIDAgNTZweH0ubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNTZweC81NnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMmVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNDVweC80OHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMDVlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDM0cHgvNDBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgNjRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FyZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjBweH0ubWF0LWNhcmQtc3VidGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcmQtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2hlY2tib3gtbGF5b3V0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC10cmFpbGluZy1pY29uLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmUubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxOHB4fS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jYWxlbmRhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FsZW5kYXItYm9keVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEzcHh9Lm1hdC1jYWxlbmRhci1ib2R5LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgdGhbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWRpYWxvZy10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMTI1O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTUwJTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjVlbTt3aWR0aDoxLjVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW07bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi41ZW0gMDtib3JkZXItdG9wOi44NDM3NWVtIHNvbGlkIHRyYW5zcGFyZW50fS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3RvcDotMC44NDM3NWVtO3BhZGRpbmctdG9wOi44NDM3NWVtfS5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjc1JTttYXJnaW4tdG9wOi42NjY2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNzkxNjY2NjY2N2VtKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi40Mzc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAycHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyM2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMjgxMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi41NDE2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNjY2NjY2NjY2N2VtKX1AbWVkaWEgcHJpbnR7Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIyZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIxZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMmVtKSBzY2FsZSgwLjc1KX19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjI1ZW0gMCAuNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4wOTM3NWVtO21hcmdpbi10b3A6LTAuNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MWVtIDAgMWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjg0Mzc1ZW07bWFyZ2luLXRvcDotMC4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH1pbnB1dC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDotMC4wNjI1ZW19Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1wYWdlLXNpemVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4fS5tYXQtcmFkaW8tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3RbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbX0ubWF0LXNsaWRlLXRvZ2dsZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXN0ZXBwZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc3RlcC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtc3RlcC1zdWItbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0Om5vcm1hbH0ubWF0LXN0ZXAtbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtc3RlcC1sYWJlbC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdGFiLWdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjB9Lm1hdC10b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEwcHg7cGFkZGluZy10b3A6NnB4O3BhZGRpbmctYm90dG9tOjZweH0ubWF0LXRvb2x0aXAtaGFuZHNldFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7cGFkZGluZy10b3A6OHB4O3BhZGRpbmctYm90dG9tOjhweH0ubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTZweH0ubWF0LW9wdGdyb3VwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LXNpbXBsZS1zbmFja2Jhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4fS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbltfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MTtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRyZWVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbmVzdGVkLXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtc2l6ZToxNHB4fS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdOm5vdCg6ZW1wdHkpe3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApfS5tYXQtcmlwcGxlLm1hdC1yaXBwbGUtdW5ib3VuZGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzp2aXNpYmxlfS5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO2JvcmRlci1yYWRpdXM6NTAlO3BvaW50ZXItZXZlbnRzOm5vbmU7dHJhbnNpdGlvbjpvcGFjaXR5LHRyYW5zZm9ybSAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7dHJhbnNmb3JtOnNjYWxlKDApfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpub25lfS5jZGstdmlzdWFsbHktaGlkZGVuW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6MDtjbGlwOnJlY3QoMCAwIDAgMCk7aGVpZ2h0OjFweDttYXJnaW46LTFweDtvdmVyZmxvdzpoaWRkZW47cGFkZGluZzowO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjFweDt3aGl0ZS1zcGFjZTpub3dyYXA7b3V0bGluZTowOy13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BvaW50ZXItZXZlbnRzOm5vbmU7dG9wOjA7bGVmdDowO2hlaWdodDoxMDAlO3dpZHRoOjEwMCV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdOmVtcHR5e2Rpc3BsYXk6bm9uZX0uY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LXBhbmVbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3BvaW50ZXItZXZlbnRzOmF1dG87Ym94LXNpemluZzpib3JkZXItYm94O3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7bWF4LXdpZHRoOjEwMCU7bWF4LWhlaWdodDoxMDAlfS5jZGstb3ZlcmxheS1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7bGVmdDowO3JpZ2h0OjA7ei1pbmRleDoxMDAwO3BvaW50ZXItZXZlbnRzOmF1dG87LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50O3RyYW5zaXRpb246b3BhY2l0eSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKTtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5Oi42fS5jZGstb3ZlcmxheS1kYXJrLWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjMyKX0uY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTowfS5jZGstb3ZlcmxheS1jb25uZWN0ZWQtcG9zaXRpb24tYm91bmRpbmctYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjttaW4td2lkdGg6MXB4O21pbi1oZWlnaHQ6MXB4fS5jZGstZ2xvYmFsLXNjcm9sbGJsb2NrW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt3aWR0aDoxMDAlO292ZXJmbG93LXk6c2Nyb2xsfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZVtfbmdjb250ZW50LSVDT01QJV17cmVzaXplOm5vbmV9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZ1tfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6YXV0byAhaW1wb3J0YW50O292ZXJmbG93OmhpZGRlbiAhaW1wb3J0YW50fXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmctZmlyZWZveFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6MCAhaW1wb3J0YW50fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnR7fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5ke30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxse2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydCAwcyAxbXN9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06bm90KDotd2Via2l0LWF1dG9maWxsKXthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5kIDBzIDFtc30ubWF0LWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1tZGMtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0uYWxpYXMtbnVtYmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNlMGUwZTA7Ym9yZGVyOjFweCBzb2xpZCAjZWJlYmViO2NvbG9yOiMyMTIxMjE7Ym9yZGVyLXJhZGl1czoycHg7bWFyZ2luLXJpZ2h0OjJweDtwYWRkaW5nOjAgMnB4fWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC5hbGlhcy1udW1iZXJbX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAuYWxpYXMtbnVtYmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiM2MTYxNjF9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgLmFsaWFzLW51bWJlcltfbmdjb250ZW50LSVDT01QJV0sIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5hbGlhcy1udW1iZXJbX25nY29udGVudC0lQ09NUCVde2JvcmRlcjoxcHggc29saWQgIzU1NX1ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICAuYWxpYXMtbnVtYmVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLmFsaWFzLW51bWJlcltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZn1bX25naG9zdC0lQ09NUCVde2Rpc3BsYXk6aW5saW5lLWZsZXg7YWxpZ24taXRlbXM6YmFzZWxpbmV9J119KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKEgyLFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6InRiLWV4cGVyaW1lbnQtYWxpYXMiLHRlbXBsYXRlOidcbiAgICA8c3BhbiBjbGFzcz0iYWxpYXMtbnVtYmVyIj57eyBhbGlhcy5hbGlhc051bWJlciB9fTwvc3Bhbj5cbiAgICA8Y29udGVudC13cmFwcGluZy1pbnB1dFxuICAgICAgKm5nSWY9ImFsaWFzRWRpdGFibGU7IGVsc2Ugbm9FZGl0QWxpYXNOYW1lIlxuICAgICAgcGxhY2Vob2xkZXI9IkFsaWFzIGZvciBleHBlcmltZW50IlxuICAgICAgW3N0eWxlXT0iaXNBbGlhc05hbWVMZWdhbCA/IFwnaGlnaC1jb250cmFzdFwnIDogXCdlcnJvclwnIlxuICAgICAgW3ZhbHVlXT0iYWxpYXMuYWxpYXNUZXh0IlxuICAgICAgKG9uVmFsdWVDaGFuZ2UpPSJhbGlhc0NoYW5nZWQuZW1pdCgkZXZlbnQpIlxuICAgID48L2NvbnRlbnQtd3JhcHBpbmctaW5wdXQ+XG4gICAgPG5nLXRlbXBsYXRlICNub0VkaXRBbGlhc05hbWU+XG4gICAgICA8c3BhbiBbY2xhc3MuaWxsZWdhbF09IiFpc0FsaWFzTmFtZUxlZ2FsIj57eyBhbGlhcy5hbGlhc1RleHQgfX08L3NwYW4+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgJyxzdHlsZVVybHM6WyJleHBlcmltZW50X2FsaWFzX2NvbXBvbmVudC5jc3MiXX1dfV0sbnVsbCx7YWxpYXM6W3t0eXBlOlJffV0sYWxpYXNFZGl0YWJsZTpbe3R5cGU6Ul99XSxpc0FsaWFzTmFtZUxlZ2FsOlt7dHlwZTpSX31dLGFsaWFzQ2hhbmdlZDpbe3R5cGU6RV99XX0pO2NvbnN0IEYyPVsiZGlhbG9nUG9wdXAiXSxMMj1bImh1ZVNsaWRlciJdLEIyPVsiYWxwaGFTbGlkZXIiXTtmdW5jdGlvbiBWMih0LGUpe2lmKDEmdCYmdmYoMCwiZGl2IiksMiZ0KXtjb25zdCB0PXpmKCk7SXUoImFycm93IGFycm93LSIsdC5jcFVzZVBvc2l0aW9uLCIiKSxsdSgidG9wIix0LmFycm93VG9wLCJweCIpfX1mdW5jdGlvbiBqMih0LGUpe2lmKDEmdCl7Y29uc3QgdD13ZigpO0NmKDAsImRpdiIsMjYpLFJmKCJuZXdWYWx1ZSIsKGZ1bmN0aW9uIGUobil7UGkodCk7cmV0dXJuIHpmKCkub25Db2xvckNoYW5nZShuKX0pKSgiZHJhZ1N0YXJ0IiwoZnVuY3Rpb24gZSgpe1BpKHQpO3JldHVybiB6ZigpLm9uRHJhZ1N0YXJ0KCJzYXR1cmF0aW9uLWxpZ2h0bmVzcyIpfSkpKCJkcmFnRW5kIiwoZnVuY3Rpb24gZSgpe1BpKHQpO3JldHVybiB6ZigpLm9uRHJhZ0VuZCgic2F0dXJhdGlvbi1saWdodG5lc3MiKX0pKSx2ZigxLCJkaXYiLDEzKSxNZigpfWlmKDImdCl7Y29uc3QgdD16ZigpO2x1KCJiYWNrZ3JvdW5kLWNvbG9yIix0Lmh1ZVNsaWRlckNvbG9yKSxiZigicmdYIiwxKSgicmdZIiwxKSxEYygxKSxsdSgidG9wIixudWxsPT10LnNsaWRlcj9udWxsOnQuc2xpZGVyLnYsInB4IikoImxlZnQiLG51bGw9PXQuc2xpZGVyP251bGw6dC5zbGlkZXIucywicHgiKX19ZnVuY3Rpb24gVTIodCxlKXtpZigxJnQpe2NvbnN0IHQ9d2YoKTtDZigwLCJidXR0b24iLDI3KSxSZigiY2xpY2siLChmdW5jdGlvbiBlKG4pe1BpKHQpO2NvbnN0IG89emYoKTtyZXR1cm4gby5vbkFkZFByZXNldENvbG9yKG4sby5zZWxlY3RlZENvbG9yKX0pKSxQdSgxKSxNZigpfWlmKDImdCl7Y29uc3QgdD16ZigpO211KHQuY3BBZGRDb2xvckJ1dHRvbkNsYXNzKSxiZigiZGlzYWJsZWQiLHQuY3BQcmVzZXRDb2xvcnMmJnQuY3BQcmVzZXRDb2xvcnMubGVuZ3RoPj10LmNwTWF4UHJlc2V0Q29sb3JzTGVuZ3RoKSxEYygxKSxrdSgiICIsdC5jcEFkZENvbG9yQnV0dG9uVGV4dCwiICIpfX1mdW5jdGlvbiBXMih0LGUpezEmdCYmdmYoMCwiZGl2IiwyOCl9ZnVuY3Rpb24gRzIodCxlKXtpZigxJnQpe2NvbnN0IHQ9d2YoKTtDZigwLCJpbnB1dCIsMzQpLFJmKCJrZXl1cC5lbnRlciIsKGZ1bmN0aW9uIGUobil7UGkodCk7cmV0dXJuIHpmKDIpLm9uQWNjZXB0Q29sb3Iobil9KSkoIm5ld1ZhbHVlIiwoZnVuY3Rpb24gZShuKXtQaSh0KTtyZXR1cm4gemYoMikub25BbHBoYUlucHV0KG4pfSkpLE1mKCl9aWYoMiZ0KXtjb25zdCB0PXpmKDIpO2JmKCJyZyIsMSkoInZhbHVlIixudWxsPT10LmNteWtUZXh0P251bGw6dC5jbXlrVGV4dC5hKX19ZnVuY3Rpb24gWTIodCxlKXsxJnQmJihDZigwLCJkaXYiKSxQdSgxLCJBIiksTWYoKSl9ZnVuY3Rpb24gcTIodCxlKXtpZigxJnQpe2NvbnN0IHQ9d2YoKTtDZigwLCJkaXYiLDI5KSxDZigxLCJkaXYiLDMwKSxDZigyLCJpbnB1dCIsMzEpLFJmKCJrZXl1cC5lbnRlciIsKGZ1bmN0aW9uIGUobil7UGkodCk7cmV0dXJuIHpmKCkub25BY2NlcHRDb2xvcihuKX0pKSgibmV3VmFsdWUiLChmdW5jdGlvbiBlKG4pe1BpKHQpO3JldHVybiB6ZigpLm9uQ3lhbklucHV0KG4pfSkpLE1mKCksQ2YoMywiaW5wdXQiLDMxKSxSZigia2V5dXAuZW50ZXIiLChmdW5jdGlvbiBlKG4pe1BpKHQpO3JldHVybiB6ZigpLm9uQWNjZXB0Q29sb3Iobil9KSkoIm5ld1ZhbHVlIiwoZnVuY3Rpb24gZShuKXtQaSh0KTtyZXR1cm4gemYoKS5vbk1hZ2VudGFJbnB1dChuKX0pKSxNZigpLENmKDQsImlucHV0IiwzMSksUmYoImtleXVwLmVudGVyIiwoZnVuY3Rpb24gZShuKXtQaSh0KTtyZXR1cm4gemYoKS5vbkFjY2VwdENvbG9yKG4pfSkpKCJuZXdWYWx1ZSIsKGZ1bmN0aW9uIGUobil7UGkodCk7cmV0dXJuIHpmKCkub25ZZWxsb3dJbnB1dChuKX0pKSxNZigpLENmKDUsImlucHV0IiwzMSksUmYoImtleXVwLmVudGVyIiwoZnVuY3Rpb24gZShuKXtQaSh0KTtyZXR1cm4gemYoKS5vbkFjY2VwdENvbG9yKG4pfSkpKCJuZXdWYWx1ZSIsKGZ1bmN0aW9uIGUobil7UGkodCk7cmV0dXJuIHpmKCkub25CbGFja0lucHV0KG4pfSkpLE1mKCksSG0oNixHMiwxLDIsImlucHV0IiwzMiksTWYoKSxDZig3LCJkaXYiLDMwKSxDZig4LCJkaXYiKSxQdSg5LCJDIiksTWYoKSxDZigxMCwiZGl2IiksUHUoMTEsIk0iKSxNZigpLENmKDEyLCJkaXYiKSxQdSgxMywiWSIpLE1mKCksQ2YoMTQsImRpdiIpLFB1KDE1LCJLIiksTWYoKSxIbSgxNixZMiwyLDAsImRpdiIsMzMpLE1mKCksTWYoKX1pZigyJnQpe2NvbnN0IHQ9emYoKTtsdSgiZGlzcGxheSIsMyE9PXQuZm9ybWF0PyJub25lIjoiYmxvY2siKSxEYygyKSxiZigicmciLDEwMCkoInZhbHVlIixudWxsPT10LmNteWtUZXh0P251bGw6dC5jbXlrVGV4dC5jKSxEYygxKSxiZigicmciLDEwMCkoInZhbHVlIixudWxsPT10LmNteWtUZXh0P251bGw6dC5jbXlrVGV4dC5tKSxEYygxKSxiZigicmciLDEwMCkoInZhbHVlIixudWxsPT10LmNteWtUZXh0P251bGw6dC5jbXlrVGV4dC55KSxEYygxKSxiZigicmciLDEwMCkoInZhbHVlIixudWxsPT10LmNteWtUZXh0P251bGw6dC5jbXlrVGV4dC5rKSxEYygxKSxiZigibmdJZiIsImRpc2FibGVkIiE9PXQuY3BBbHBoYUNoYW5uZWwpLERjKDEwKSxiZigibmdJZiIsImRpc2FibGVkIiE9PXQuY3BBbHBoYUNoYW5uZWwpfX1mdW5jdGlvbiBaMih0LGUpe2lmKDEmdCl7Y29uc3QgdD13ZigpO0NmKDAsImlucHV0IiwzNCksUmYoImtleXVwLmVudGVyIiwoZnVuY3Rpb24gZShuKXtQaSh0KTtyZXR1cm4gemYoMikub25BY2NlcHRDb2xvcihuKX0pKSgibmV3VmFsdWUiLChmdW5jdGlvbiBlKG4pe1BpKHQpO3JldHVybiB6ZigyKS5vbkFscGhhSW5wdXQobil9KSksTWYoKX1pZigyJnQpe2NvbnN0IHQ9emYoMik7YmYoInJnIiwxKSgidmFsdWUiLG51bGw9PXQuaHNsYVRleHQ/bnVsbDp0LmhzbGFUZXh0LmEpfX1mdW5jdGlvbiBYMih0LGUpezEmdCYmKENmKDAsImRpdiIpLFB1KDEsIkEiKSxNZigpKX1mdW5jdGlvbiBLMih0LGUpe2lmKDEmdCl7Y29uc3QgdD13ZigpO0NmKDAsImRpdiIsMzUpLENmKDEsImRpdiIsMzApLENmKDIsImlucHV0IiwzNiksUmYoImtleXVwLmVudGVyIiwoZnVuY3Rpb24gZShuKXtQaSh0KTtyZXR1cm4gemYoKS5vbkFjY2VwdENvbG9yKG4pfSkpKCJuZXdWYWx1ZSIsKGZ1bmN0aW9uIGUobil7UGkodCk7cmV0dXJuIHpmKCkub25IdWVJbnB1dChuKX0pKSxNZigpLENmKDMsImlucHV0IiwzMSksUmYoImtleXVwLmVudGVyIiwoZnVuY3Rpb24gZShuKXtQaSh0KTtyZXR1cm4gemYoKS5vbkFjY2VwdENvbG9yKG4pfSkpKCJuZXdWYWx1ZSIsKGZ1bmN0aW9uIGUobil7UGkodCk7cmV0dXJuIHpmKCkub25TYXR1cmF0aW9uSW5wdXQobil9KSksTWYoKSxDZig0LCJpbnB1dCIsMzEpLFJmKCJrZXl1cC5lbnRlciIsKGZ1bmN0aW9uIGUobil7UGkodCk7cmV0dXJuIHpmKCkub25BY2NlcHRDb2xvcihuKX0pKSgibmV3VmFsdWUiLChmdW5jdGlvbiBlKG4pe1BpKHQpO3JldHVybiB6ZigpLm9uTGlnaHRuZXNzSW5wdXQobil9KSksTWYoKSxIbSg1LFoyLDEsMiwiaW5wdXQiLDMyKSxNZigpLENmKDYsImRpdiIsMzApLENmKDcsImRpdiIpLFB1KDgsIkgiKSxNZigpLENmKDksImRpdiIpLFB1KDEwLCJTIiksTWYoKSxDZigxMSwiZGl2IiksUHUoMTIsIkwiKSxNZigpLEhtKDEzLFgyLDIsMCwiZGl2IiwzMyksTWYoKSxNZigpfWlmKDImdCl7Y29uc3QgdD16ZigpO2x1KCJkaXNwbGF5IiwyIT09dC5mb3JtYXQ/Im5vbmUiOiJibG9jayIpLERjKDIpLGJmKCJyZyIsMzYwKSgidmFsdWUiLG51bGw9PXQuaHNsYVRleHQ/bnVsbDp0LmhzbGFUZXh0LmgpLERjKDEpLGJmKCJyZyIsMTAwKSgidmFsdWUiLG51bGw9PXQuaHNsYVRleHQ/bnVsbDp0LmhzbGFUZXh0LnMpLERjKDEpLGJmKCJyZyIsMTAwKSgidmFsdWUiLG51bGw9PXQuaHNsYVRleHQ/bnVsbDp0LmhzbGFUZXh0LmwpLERjKDEpLGJmKCJuZ0lmIiwiZGlzYWJsZWQiIT09dC5jcEFscGhhQ2hhbm5lbCksRGMoOCksYmYoIm5nSWYiLCJkaXNhYmxlZCIhPT10LmNwQWxwaGFDaGFubmVsKX19ZnVuY3Rpb24gSjIodCxlKXtpZigxJnQpe2NvbnN0IHQ9d2YoKTtDZigwLCJpbnB1dCIsMzQpLFJmKCJrZXl1cC5lbnRlciIsKGZ1bmN0aW9uIGUobil7UGkodCk7cmV0dXJuIHpmKDIpLm9uQWNjZXB0Q29sb3Iobil9KSkoIm5ld1ZhbHVlIiwoZnVuY3Rpb24gZShuKXtQaSh0KTtyZXR1cm4gemYoMikub25BbHBoYUlucHV0KG4pfSkpLE1mKCl9aWYoMiZ0KXtjb25zdCB0PXpmKDIpO2JmKCJyZyIsMSkoInZhbHVlIixudWxsPT10LnJnYmFUZXh0P251bGw6dC5yZ2JhVGV4dC5hKX19ZnVuY3Rpb24gUTIodCxlKXsxJnQmJihDZigwLCJkaXYiKSxQdSgxLCJBIiksTWYoKSl9ZnVuY3Rpb24gJDIodCxlKXtpZigxJnQpe2NvbnN0IHQ9d2YoKTtDZigwLCJkaXYiLDM3KSxDZigxLCJkaXYiLDMwKSxDZigyLCJpbnB1dCIsMzgpLFJmKCJrZXl1cC5lbnRlciIsKGZ1bmN0aW9uIGUobil7UGkodCk7cmV0dXJuIHpmKCkub25BY2NlcHRDb2xvcihuKX0pKSgibmV3VmFsdWUiLChmdW5jdGlvbiBlKG4pe1BpKHQpO3JldHVybiB6ZigpLm9uUmVkSW5wdXQobil9KSksTWYoKSxDZigzLCJpbnB1dCIsMzgpLFJmKCJrZXl1cC5lbnRlciIsKGZ1bmN0aW9uIGUobil7UGkodCk7cmV0dXJuIHpmKCkub25BY2NlcHRDb2xvcihuKX0pKSgibmV3VmFsdWUiLChmdW5jdGlvbiBlKG4pe1BpKHQpO3JldHVybiB6ZigpLm9uR3JlZW5JbnB1dChuKX0pKSxNZigpLENmKDQsImlucHV0IiwzOCksUmYoImtleXVwLmVudGVyIiwoZnVuY3Rpb24gZShuKXtQaSh0KTtyZXR1cm4gemYoKS5vbkFjY2VwdENvbG9yKG4pfSkpKCJuZXdWYWx1ZSIsKGZ1bmN0aW9uIGUobil7UGkodCk7cmV0dXJuIHpmKCkub25CbHVlSW5wdXQobil9KSksTWYoKSxIbSg1LEoyLDEsMiwiaW5wdXQiLDMyKSxNZigpLENmKDYsImRpdiIsMzApLENmKDcsImRpdiIpLFB1KDgsIlIiKSxNZigpLENmKDksImRpdiIpLFB1KDEwLCJHIiksTWYoKSxDZigxMSwiZGl2IiksUHUoMTIsIkIiKSxNZigpLEhtKDEzLFEyLDIsMCwiZGl2IiwzMyksTWYoKSxNZigpfWlmKDImdCl7Y29uc3QgdD16ZigpO2x1KCJkaXNwbGF5IiwxIT09dC5mb3JtYXQ/Im5vbmUiOiJibG9jayIpLERjKDIpLGJmKCJyZyIsMjU1KSgidmFsdWUiLG51bGw9PXQucmdiYVRleHQ/bnVsbDp0LnJnYmFUZXh0LnIpLERjKDEpLGJmKCJyZyIsMjU1KSgidmFsdWUiLG51bGw9PXQucmdiYVRleHQ/bnVsbDp0LnJnYmFUZXh0LmcpLERjKDEpLGJmKCJyZyIsMjU1KSgidmFsdWUiLG51bGw9PXQucmdiYVRleHQ/bnVsbDp0LnJnYmFUZXh0LmIpLERjKDEpLGJmKCJuZ0lmIiwiZGlzYWJsZWQiIT09dC5jcEFscGhhQ2hhbm5lbCksRGMoOCksYmYoIm5nSWYiLCJkaXNhYmxlZCIhPT10LmNwQWxwaGFDaGFubmVsKX19ZnVuY3Rpb24gdDUodCxlKXtpZigxJnQpe2NvbnN0IHQ9d2YoKTtDZigwLCJpbnB1dCIsMzQpLFJmKCJrZXl1cC5lbnRlciIsKGZ1bmN0aW9uIGUobil7UGkodCk7cmV0dXJuIHpmKDIpLm9uQWNjZXB0Q29sb3Iobil9KSkoIm5ld1ZhbHVlIiwoZnVuY3Rpb24gZShuKXtQaSh0KTtyZXR1cm4gemYoMikub25BbHBoYUlucHV0KG4pfSkpLE1mKCl9aWYoMiZ0KXtjb25zdCB0PXpmKDIpO2JmKCJyZyIsMSkoInZhbHVlIix0LmhleEFscGhhKX19ZnVuY3Rpb24gZTUodCxlKXsxJnQmJihDZigwLCJkaXYiKSxQdSgxLCJBIiksTWYoKSl9ZnVuY3Rpb24gbjUodCxlKXtpZigxJnQpe2NvbnN0IHQ9d2YoKTtDZigwLCJkaXYiLDM5KSxDZigxLCJkaXYiLDMwKSxDZigyLCJpbnB1dCIsNDApLFJmKCJibHVyIiwoZnVuY3Rpb24gZSgpe1BpKHQpO3JldHVybiB6ZigpLm9uSGV4SW5wdXQobnVsbCl9KSkoImtleXVwLmVudGVyIiwoZnVuY3Rpb24gZShuKXtQaSh0KTtyZXR1cm4gemYoKS5vbkFjY2VwdENvbG9yKG4pfSkpKCJuZXdWYWx1ZSIsKGZ1bmN0aW9uIGUobil7UGkodCk7cmV0dXJuIHpmKCkub25IZXhJbnB1dChuKX0pKSxNZigpLEhtKDMsdDUsMSwyLCJpbnB1dCIsMzIpLE1mKCksQ2YoNCwiZGl2IiwzMCksQ2YoNSwiZGl2IiksUHUoNiwiSGV4IiksTWYoKSxIbSg3LGU1LDIsMCwiZGl2IiwzMyksTWYoKSxNZigpfWlmKDImdCl7Y29uc3QgdD16ZigpO2x1KCJkaXNwbGF5IiwwIT09dC5mb3JtYXQ/Im5vbmUiOiJibG9jayIpLGN1KCJoZXgtYWxwaGEiLCJmb3JjZWQiPT09dC5jcEFscGhhQ2hhbm5lbCksRGMoMiksYmYoInZhbHVlIix0LmhleFRleHQpLERjKDEpLGJmKCJuZ0lmIiwiZm9yY2VkIj09PXQuY3BBbHBoYUNoYW5uZWwpLERjKDQpLGJmKCJuZ0lmIiwiZm9yY2VkIj09PXQuY3BBbHBoYUNoYW5uZWwpfX1mdW5jdGlvbiBvNSh0LGUpe2lmKDEmdCl7Y29uc3QgdD13ZigpO0NmKDAsImlucHV0IiwzNCksUmYoImtleXVwLmVudGVyIiwoZnVuY3Rpb24gZShuKXtQaSh0KTtyZXR1cm4gemYoMikub25BY2NlcHRDb2xvcihuKX0pKSgibmV3VmFsdWUiLChmdW5jdGlvbiBlKG4pe1BpKHQpO3JldHVybiB6ZigyKS5vbkFscGhhSW5wdXQobil9KSksTWYoKX1pZigyJnQpe2NvbnN0IHQ9emYoMik7YmYoInJnIiwxKSgidmFsdWUiLG51bGw9PXQuaHNsYVRleHQ/bnVsbDp0LmhzbGFUZXh0LmEpfX1mdW5jdGlvbiBpNSh0LGUpe2lmKDEmdCl7Y29uc3QgdD13ZigpO0NmKDAsImRpdiIsNDEpLENmKDEsImRpdiIsMzApLENmKDIsImlucHV0IiwzMSksUmYoImtleXVwLmVudGVyIiwoZnVuY3Rpb24gZShuKXtQaSh0KTtyZXR1cm4gemYoKS5vbkFjY2VwdENvbG9yKG4pfSkpKCJuZXdWYWx1ZSIsKGZ1bmN0aW9uIGUobil7UGkodCk7cmV0dXJuIHpmKCkub25WYWx1ZUlucHV0KG4pfSkpLE1mKCksSG0oMyxvNSwxLDIsImlucHV0IiwzMiksTWYoKSxDZig0LCJkaXYiLDMwKSxDZig1LCJkaXYiKSxQdSg2LCJWIiksTWYoKSxDZig3LCJkaXYiKSxQdSg4LCJBIiksTWYoKSxNZigpLE1mKCl9aWYoMiZ0KXtjb25zdCB0PXpmKCk7RGMoMiksYmYoInJnIiwxMDApKCJ2YWx1ZSIsbnVsbD09dC5oc2xhVGV4dD9udWxsOnQuaHNsYVRleHQubCksRGMoMSksYmYoIm5nSWYiLCJkaXNhYmxlZCIhPT10LmNwQWxwaGFDaGFubmVsKX19ZnVuY3Rpb24gYTUodCxlKXtpZigxJnQpe2NvbnN0IHQ9d2YoKTtDZigwLCJkaXYiLDQyKSxDZigxLCJzcGFuIiw0MyksUmYoImNsaWNrIiwoZnVuY3Rpb24gZSgpe1BpKHQpO3JldHVybiB6ZigpLm9uRm9ybWF0VG9nZ2xlKC0xKX0pKSxNZigpLENmKDIsInNwYW4iLDQzKSxSZigiY2xpY2siLChmdW5jdGlvbiBlKCl7UGkodCk7cmV0dXJuIHpmKCkub25Gb3JtYXRUb2dnbGUoMSl9KSksTWYoKSxNZigpfX1mdW5jdGlvbiByNSh0LGUpe2lmKDEmdCl7Y29uc3QgdD13ZigpO0NmKDAsInNwYW4iLDUwKSxSZigiY2xpY2siLChmdW5jdGlvbiBlKG4pe1BpKHQpO2NvbnN0IG89emYoKS4kaW1wbGljaXQ7cmV0dXJuIHpmKDMpLm9uUmVtb3ZlUHJlc2V0Q29sb3IobixvKX0pKSxNZigpfWlmKDImdCl7bXUoemYoNCkuY3BSZW1vdmVDb2xvckJ1dHRvbkNsYXNzKX19ZnVuY3Rpb24gczUodCxlKXtpZigxJnQpe2NvbnN0IHQ9d2YoKTtDZigwLCJkaXYiLDQ4KSxSZigiY2xpY2siLChmdW5jdGlvbiBlKCl7Y29uc3Qgbj1QaSh0KS4kaW1wbGljaXQ7cmV0dXJuIHpmKDMpLnNldENvbG9yRnJvbVN0cmluZyhuKX0pKSxIbSgxLHI1LDEsMywic3BhbiIsNDkpLE1mKCl9aWYoMiZ0KXtjb25zdCB0PWUuJGltcGxpY2l0LG49emYoMyk7bHUoImJhY2tncm91bmQtY29sb3IiLHQpLERjKDEpLGJmKCJuZ0lmIixuLmNwQWRkQ29sb3JCdXR0b24pfX1mdW5jdGlvbiBsNSh0LGUpe2lmKDEmdCYmKENmKDAsImRpdiIpLEhtKDEsczUsMiwzLCJkaXYiLDQ3KSxNZigpKSwyJnQpe2NvbnN0IHQ9emYoMik7bXUodC5jcFByZXNldENvbG9yc0NsYXNzKSxEYygxKSxiZigibmdGb3JPZiIsdC5jcFByZXNldENvbG9ycyl9fWZ1bmN0aW9uIGM1KHQsZSl7aWYoMSZ0JiYoQ2YoMCwiZGl2IiksUHUoMSksTWYoKSksMiZ0KXtjb25zdCB0PXpmKDIpO211KHQuY3BQcmVzZXRFbXB0eU1lc3NhZ2VDbGFzcyksRGMoMSksd3UodC5jcFByZXNldEVtcHR5TWVzc2FnZSl9fWZ1bmN0aW9uIGQ1KHQsZSl7aWYoMSZ0JiYoQ2YoMCwiZGl2Iiw0NCksdmYoMSwiaHIiKSxDZigyLCJkaXYiLDQ1KSxQdSgzKSxNZigpLEhtKDQsbDUsMiw0LCJkaXYiLDQ2KSxIbSg1LGM1LDIsNCwiZGl2Iiw0NiksTWYoKSksMiZ0KXtjb25zdCB0PXpmKCk7RGMoMyksd3UodC5jcFByZXNldExhYmVsKSxEYygxKSxiZigibmdJZiIsbnVsbD09dC5jcFByZXNldENvbG9ycz9udWxsOnQuY3BQcmVzZXRDb2xvcnMubGVuZ3RoKSxEYygxKSxiZigibmdJZiIsIShudWxsIT10LmNwUHJlc2V0Q29sb3JzJiZ0LmNwUHJlc2V0Q29sb3JzLmxlbmd0aCkmJnQuY3BBZGRDb2xvckJ1dHRvbil9fWZ1bmN0aW9uIHA1KHQsZSl7aWYoMSZ0KXtjb25zdCB0PXdmKCk7Q2YoMCwiYnV0dG9uIiw1MyksUmYoImNsaWNrIiwoZnVuY3Rpb24gZShuKXtQaSh0KTtyZXR1cm4gemYoMikub25DYW5jZWxDb2xvcihuKX0pKSxQdSgxKSxNZigpfWlmKDImdCl7Y29uc3QgdD16ZigyKTttdSh0LmNwQ2FuY2VsQnV0dG9uQ2xhc3MpLERjKDEpLHd1KHQuY3BDYW5jZWxCdXR0b25UZXh0KX19ZnVuY3Rpb24gbTUodCxlKXtpZigxJnQpe2NvbnN0IHQ9d2YoKTtDZigwLCJidXR0b24iLDUzKSxSZigiY2xpY2siLChmdW5jdGlvbiBlKG4pe1BpKHQpO3JldHVybiB6ZigyKS5vbkFjY2VwdENvbG9yKG4pfSkpLFB1KDEpLE1mKCl9aWYoMiZ0KXtjb25zdCB0PXpmKDIpO211KHQuY3BPS0J1dHRvbkNsYXNzKSxEYygxKSx3dSh0LmNwT0tCdXR0b25UZXh0KX19ZnVuY3Rpb24gZjUodCxlKXtpZigxJnQmJihDZigwLCJkaXYiLDUxKSxIbSgxLHA1LDIsNCwiYnV0dG9uIiw1MiksSG0oMixtNSwyLDQsImJ1dHRvbiIsNTIpLE1mKCkpLDImdCl7Y29uc3QgdD16ZigpO0RjKDEpLGJmKCJuZ0lmIix0LmNwQ2FuY2VsQnV0dG9uKSxEYygxKSxiZigibmdJZiIsdC5jcE9LQnV0dG9uKX19dmFyIHU1OyEoZnVuY3Rpb24odCl7dFt0LkhFWD0wXT0iSEVYIix0W3QuUkdCQT0xXT0iUkdCQSIsdFt0LkhTTEE9Ml09IkhTTEEiLHRbdC5DTVlLPTNdPSJDTVlLIn0pKHU1fHwodTU9e30pKTtjbGFzcyBnNXtjb25zdHJ1Y3Rvcih0LGUsbixvKXt0aGlzLnI9dCx0aGlzLmc9ZSx0aGlzLmI9bix0aGlzLmE9b319Y2xhc3MgaDV7Y29uc3RydWN0b3IodCxlLG4sbyl7dGhpcy5oPXQsdGhpcy5zPWUsdGhpcy52PW4sdGhpcy5hPW99fWNsYXNzIGI1e2NvbnN0cnVjdG9yKHQsZSxuLG8pe3RoaXMuaD10LHRoaXMucz1lLHRoaXMubD1uLHRoaXMuYT1vfX1jbGFzcyB5NXtjb25zdHJ1Y3Rvcih0LGUsbixvLGk9MSl7dGhpcy5jPXQsdGhpcy5tPWUsdGhpcy55PW4sdGhpcy5rPW8sdGhpcy5hPWl9fWNsYXNzIF81e2NvbnN0cnVjdG9yKCl7dGhpcy5uZXdWYWx1ZT1uZXcgU3l9aW5wdXRDaGFuZ2UodCl7Y29uc3QgZT10LnRhcmdldC52YWx1ZTtpZih2b2lkIDA9PT10aGlzLnJnKXRoaXMubmV3VmFsdWUuZW1pdChlKTtlbHNle2NvbnN0IHQ9cGFyc2VGbG9hdChlKTt0aGlzLm5ld1ZhbHVlLmVtaXQoe3Y6dCxyZzp0aGlzLnJnfSl9fX1fNS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8XzUpfSxfNS7JtWRpcj1obyh7dHlwZTpfNSxzZWxlY3RvcnM6W1siIiwidGV4dCIsIiJdXSxob3N0QmluZGluZ3M6ZnVuY3Rpb24gdChlLG4pezEmZSYmUmYoImlucHV0IiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5pbnB1dENoYW5nZShlKX0pKX0saW5wdXRzOntyZzoicmciLHRleHQ6InRleHQifSxvdXRwdXRzOntuZXdWYWx1ZToibmV3VmFsdWUifX0pLF81LnByb3BEZWNvcmF0b3JzPXtyZzpbe3R5cGU6Ul99XSx0ZXh0Olt7dHlwZTpSX31dLG5ld1ZhbHVlOlt7dHlwZTpFX31dLGlucHV0Q2hhbmdlOlt7dHlwZTpUXyxhcmdzOlsiaW5wdXQiLFsiJGV2ZW50Il1dfV19LCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoXzUsW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3RvcjoiW3RleHRdIn1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW119KSx7bmV3VmFsdWU6W3t0eXBlOkVffV0saW5wdXRDaGFuZ2U6W3t0eXBlOlRfLGFyZ3M6WyJpbnB1dCIsWyIkZXZlbnQiXV19XSxyZzpbe3R5cGU6Ul99XSx0ZXh0Olt7dHlwZTpSX31dfSk7Y2xhc3MgQzV7Y29uc3RydWN0b3IodCl7dGhpcy5lbFJlZj10LHRoaXMuZHJhZ0VuZD1uZXcgU3ksdGhpcy5kcmFnU3RhcnQ9bmV3IFN5LHRoaXMubmV3VmFsdWU9bmV3IFN5LHRoaXMubGlzdGVuZXJNb3ZlPXQ9PnRoaXMubW92ZSh0KSx0aGlzLmxpc3RlbmVyU3RvcD0oKT0+dGhpcy5zdG9wKCl9bW91c2VEb3duKHQpe3RoaXMuc3RhcnQodCl9dG91Y2hTdGFydCh0KXt0aGlzLnN0YXJ0KHQpfW1vdmUodCl7dC5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuc2V0Q3Vyc29yKHQpfXN0YXJ0KHQpe3RoaXMuc2V0Q3Vyc29yKHQpLHQuc3RvcFByb3BhZ2F0aW9uKCksZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2V1cCIsdGhpcy5saXN0ZW5lclN0b3ApLGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoInRvdWNoZW5kIix0aGlzLmxpc3RlbmVyU3RvcCksZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vtb3ZlIix0aGlzLmxpc3RlbmVyTW92ZSksZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2htb3ZlIix0aGlzLmxpc3RlbmVyTW92ZSksdGhpcy5kcmFnU3RhcnQuZW1pdCgpfXN0b3AoKXtkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZXVwIix0aGlzLmxpc3RlbmVyU3RvcCksZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigidG91Y2hlbmQiLHRoaXMubGlzdGVuZXJTdG9wKSxkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZW1vdmUiLHRoaXMubGlzdGVuZXJNb3ZlKSxkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJ0b3VjaG1vdmUiLHRoaXMubGlzdGVuZXJNb3ZlKSx0aGlzLmRyYWdFbmQuZW1pdCgpfWdldFgodCl7Y29uc3QgZT10aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7cmV0dXJuKHZvaWQgMCE9PXQucGFnZVg/dC5wYWdlWDp0LnRvdWNoZXNbMF0ucGFnZVgpLWUubGVmdC13aW5kb3cucGFnZVhPZmZzZXR9Z2V0WSh0KXtjb25zdCBlPXRoaXMuZWxSZWYubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtyZXR1cm4odm9pZCAwIT09dC5wYWdlWT90LnBhZ2VZOnQudG91Y2hlc1swXS5wYWdlWSktZS50b3Atd2luZG93LnBhZ2VZT2Zmc2V0fXNldEN1cnNvcih0KXtjb25zdCBlPXRoaXMuZWxSZWYubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aCxuPXRoaXMuZWxSZWYubmF0aXZlRWxlbWVudC5vZmZzZXRIZWlnaHQsbz1NYXRoLm1heCgwLE1hdGgubWluKHRoaXMuZ2V0WCh0KSxlKSksaT1NYXRoLm1heCgwLE1hdGgubWluKHRoaXMuZ2V0WSh0KSxuKSk7dm9pZCAwIT09dGhpcy5yZ1gmJnZvaWQgMCE9PXRoaXMucmdZP3RoaXMubmV3VmFsdWUuZW1pdCh7czpvL2UsdjoxLWkvbixyZ1g6dGhpcy5yZ1gscmdZOnRoaXMucmdZfSk6dm9pZCAwPT09dGhpcy5yZ1gmJnZvaWQgMCE9PXRoaXMucmdZP3RoaXMubmV3VmFsdWUuZW1pdCh7djppL24scmdZOnRoaXMucmdZfSk6dm9pZCAwIT09dGhpcy5yZ1gmJnZvaWQgMD09PXRoaXMucmdZJiZ0aGlzLm5ld1ZhbHVlLmVtaXQoe3Y6by9lLHJnWDp0aGlzLnJnWH0pfX1DNS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8QzUpKGdmKEtoKSl9LEM1Lsm1ZGlyPWhvKHt0eXBlOkM1LHNlbGVjdG9yczpbWyIiLCJzbGlkZXIiLCIiXV0saG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJlJmKCJtb3VzZWRvd24iLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLm1vdXNlRG93bihlKX0pKSgidG91Y2hzdGFydCIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4udG91Y2hTdGFydChlKX0pKX0saW5wdXRzOntyZ1g6InJnWCIscmdZOiJyZ1kiLHNsaWRlcjoic2xpZGVyIn0sb3V0cHV0czp7ZHJhZ0VuZDoiZHJhZ0VuZCIsZHJhZ1N0YXJ0OiJkcmFnU3RhcnQiLG5ld1ZhbHVlOiJuZXdWYWx1ZSJ9fSksQzUuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpLaH1dLEM1LnByb3BEZWNvcmF0b3JzPXtyZ1g6W3t0eXBlOlJffV0scmdZOlt7dHlwZTpSX31dLHNsaWRlcjpbe3R5cGU6Ul99XSxkcmFnRW5kOlt7dHlwZTpFX31dLGRyYWdTdGFydDpbe3R5cGU6RV99XSxuZXdWYWx1ZTpbe3R5cGU6RV99XSxtb3VzZURvd246W3t0eXBlOlRfLGFyZ3M6WyJtb3VzZWRvd24iLFsiJGV2ZW50Il1dfV0sdG91Y2hTdGFydDpbe3R5cGU6VF8sYXJnczpbInRvdWNoc3RhcnQiLFsiJGV2ZW50Il1dfV19LCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoQzUsW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3RvcjoiW3NsaWRlcl0ifV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6S2h9XX0pLHtkcmFnRW5kOlt7dHlwZTpFX31dLGRyYWdTdGFydDpbe3R5cGU6RV99XSxuZXdWYWx1ZTpbe3R5cGU6RV99XSxtb3VzZURvd246W3t0eXBlOlRfLGFyZ3M6WyJtb3VzZWRvd24iLFsiJGV2ZW50Il1dfV0sdG91Y2hTdGFydDpbe3R5cGU6VF8sYXJnczpbInRvdWNoc3RhcnQiLFsiJGV2ZW50Il1dfV0scmdYOlt7dHlwZTpSX31dLHJnWTpbe3R5cGU6Ul99XSxzbGlkZXI6W3t0eXBlOlJffV19KTtjbGFzcyBNNXtjb25zdHJ1Y3Rvcih0LGUsbixvKXt0aGlzLmg9dCx0aGlzLnM9ZSx0aGlzLnY9bix0aGlzLmE9b319Y2xhc3MgdjV7Y29uc3RydWN0b3IodCxlLG4sbyl7dGhpcy5oPXQsdGhpcy5zPWUsdGhpcy52PW4sdGhpcy5hPW99fWNsYXNzIHg1e2NvbnN0cnVjdG9yKCl7dGhpcy5hY3RpdmU9bnVsbH1zZXRBY3RpdmUodCl7dGhpcy5hY3RpdmUmJnRoaXMuYWN0aXZlIT09dCYmImlubGluZSIhPT10aGlzLmFjdGl2ZS5jcERpYWxvZ0Rpc3BsYXkmJnRoaXMuYWN0aXZlLmNsb3NlRGlhbG9nKCksdGhpcy5hY3RpdmU9dH1oc3ZhMmhzbGEodCl7Y29uc3QgZT10Lmgsbj10LnMsbz10LnYsaT10LmE7aWYoMD09PW8pcmV0dXJuIG5ldyBiNShlLDAsMCxpKTtpZigwPT09biYmMT09PW8pcmV0dXJuIG5ldyBiNShlLDEsMSxpKTt7Y29uc3QgdD1vKigyLW4pLzI7cmV0dXJuIG5ldyBiNShlLG8qbi8oMS1NYXRoLmFicygyKnQtMSkpLHQsaSl9fWhzbGEyaHN2YSh0KXtjb25zdCBlPU1hdGgubWluKHQuaCwxKSxuPU1hdGgubWluKHQucywxKSxvPU1hdGgubWluKHQubCwxKSxpPU1hdGgubWluKHQuYSwxKTtpZigwPT09bylyZXR1cm4gbmV3IGg1KGUsMCwwLGkpO3tjb25zdCB0PW8rbiooMS1NYXRoLmFicygyKm8tMSkpLzI7cmV0dXJuIG5ldyBoNShlLDIqKHQtbykvdCx0LGkpfX1oc3ZhVG9SZ2JhKHQpe2xldCBlLG4sbztjb25zdCBpPXQuaCxhPXQucyxyPXQudixzPXQuYSxsPU1hdGguZmxvb3IoNippKSxjPTYqaS1sLGQ9ciooMS1hKSxwPXIqKDEtYyphKSxtPXIqKDEtKDEtYykqYSk7c3dpdGNoKGwlNil7Y2FzZSAwOmU9cixuPW0sbz1kO2JyZWFrO2Nhc2UgMTplPXAsbj1yLG89ZDticmVhaztjYXNlIDI6ZT1kLG49cixvPW07YnJlYWs7Y2FzZSAzOmU9ZCxuPXAsbz1yO2JyZWFrO2Nhc2UgNDplPW0sbj1kLG89cjticmVhaztjYXNlIDU6ZT1yLG49ZCxvPXA7YnJlYWs7ZGVmYXVsdDplPTAsbj0wLG89MH1yZXR1cm4gbmV3IGc1KGUsbixvLHMpfWNteWtUb1JnYih0KXtyZXR1cm4gbmV3IGc1KCgxLXQuYykqKDEtdC5rKSwoMS10Lm0pKigxLXQuayksKDEtdC55KSooMS10LmspLHQuYSl9cmdiYVRvQ215ayh0KXtjb25zdCBlPTEtTWF0aC5tYXgodC5yLHQuZyx0LmIpO2lmKDE9PT1lKXJldHVybiBuZXcgeTUoMCwwLDAsMSx0LmEpO3JldHVybiBuZXcgeTUoKDEtdC5yLWUpLygxLWUpLCgxLXQuZy1lKS8oMS1lKSwoMS10LmItZSkvKDEtZSksZSx0LmEpfXJnYmFUb0hzdmEodCl7bGV0IGUsbjtjb25zdCBvPU1hdGgubWluKHQuciwxKSxpPU1hdGgubWluKHQuZywxKSxhPU1hdGgubWluKHQuYiwxKSxyPU1hdGgubWluKHQuYSwxKSxzPU1hdGgubWF4KG8saSxhKSxsPU1hdGgubWluKG8saSxhKSxjPXMsZD1zLWw7aWYobj0wPT09cz8wOmQvcyxzPT09bCllPTA7ZWxzZXtzd2l0Y2gocyl7Y2FzZSBvOmU9KGktYSkvZCsoaTxhPzY6MCk7YnJlYWs7Y2FzZSBpOmU9KGEtbykvZCsyO2JyZWFrO2Nhc2UgYTplPShvLWkpL2QrNDticmVhaztkZWZhdWx0OmU9MH1lLz02fXJldHVybiBuZXcgaDUoZSxuLGMscil9cmdiYVRvSGV4KHQsZSl7bGV0IG49IiMiKygxPDwyNHx0LnI8PDE2fHQuZzw8OHx0LmIpLnRvU3RyaW5nKDE2KS5zdWJzdHIoMSk7cmV0dXJuIGUmJihuKz0oMjU2fE1hdGgucm91bmQoMjU1KnQuYSkpLnRvU3RyaW5nKDE2KS5zdWJzdHIoMSkpLG59bm9ybWFsaXplQ01ZSyh0KXtyZXR1cm4gbmV3IHk1KHQuYy8xMDAsdC5tLzEwMCx0LnkvMTAwLHQuay8xMDAsdC5hKX1kZW5vcm1hbGl6ZUNNWUsodCl7cmV0dXJuIG5ldyB5NShNYXRoLmZsb29yKDEwMCp0LmMpLE1hdGguZmxvb3IoMTAwKnQubSksTWF0aC5mbG9vcigxMDAqdC55KSxNYXRoLmZsb29yKDEwMCp0LmspLHQuYSl9ZGVub3JtYWxpemVSR0JBKHQpe3JldHVybiBuZXcgZzUoTWF0aC5yb3VuZCgyNTUqdC5yKSxNYXRoLnJvdW5kKDI1NSp0LmcpLE1hdGgucm91bmQoMjU1KnQuYiksdC5hKX1zdHJpbmdUb0hzdmEodD0iIixlPSExKXtsZXQgbj1udWxsO3Q9KHR8fCIiKS50b0xvd2VyQ2FzZSgpO2NvbnN0IG89W3tyZTovKHJnYilhP1woXHMqKFxkezEsM30pXHMqLFxzKihcZHsxLDN9KVxzKiU/LFxzKihcZHsxLDN9KVxzKiU/KD86LFxzKihcZCsoPzpcLlxkKyk/KVxzKik/XCkvLHBhcnNlOmZ1bmN0aW9uKHQpe3JldHVybiBuZXcgZzUocGFyc2VJbnQodFsyXSwxMCkvMjU1LHBhcnNlSW50KHRbM10sMTApLzI1NSxwYXJzZUludCh0WzRdLDEwKS8yNTUsaXNOYU4ocGFyc2VGbG9hdCh0WzVdKSk/MTpwYXJzZUZsb2F0KHRbNV0pKX19LHtyZTovKGhzbClhP1woXHMqKFxkezEsM30pXHMqLFxzKihcZHsxLDN9KSVccyosXHMqKFxkezEsM30pJVxzKig/OixccyooXGQrKD86XC5cZCspPylccyopP1wpLyxwYXJzZTpmdW5jdGlvbih0KXtyZXR1cm4gbmV3IGI1KHBhcnNlSW50KHRbMl0sMTApLzM2MCxwYXJzZUludCh0WzNdLDEwKS8xMDAscGFyc2VJbnQodFs0XSwxMCkvMTAwLGlzTmFOKHBhcnNlRmxvYXQodFs1XSkpPzE6cGFyc2VGbG9hdCh0WzVdKSl9fV07by5wdXNoKGU/e3JlOi8jKFthLWZBLUYwLTldezJ9KShbYS1mQS1GMC05XXsyfSkoW2EtZkEtRjAtOV17Mn0pKFthLWZBLUYwLTldezJ9KT8kLyxwYXJzZTpmdW5jdGlvbih0KXtyZXR1cm4gbmV3IGc1KHBhcnNlSW50KHRbMV0sMTYpLzI1NSxwYXJzZUludCh0WzJdLDE2KS8yNTUscGFyc2VJbnQodFszXSwxNikvMjU1LHBhcnNlSW50KHRbNF18fCJGRiIsMTYpLzI1NSl9fTp7cmU6LyMoW2EtZkEtRjAtOV17Mn0pKFthLWZBLUYwLTldezJ9KShbYS1mQS1GMC05XXsyfSkkLyxwYXJzZTpmdW5jdGlvbih0KXtyZXR1cm4gbmV3IGc1KHBhcnNlSW50KHRbMV0sMTYpLzI1NSxwYXJzZUludCh0WzJdLDE2KS8yNTUscGFyc2VJbnQodFszXSwxNikvMjU1LDEpfX0pLG8ucHVzaCh7cmU6LyMoW2EtZkEtRjAtOV0pKFthLWZBLUYwLTldKShbYS1mQS1GMC05XSkkLyxwYXJzZTpmdW5jdGlvbih0KXtyZXR1cm4gbmV3IGc1KHBhcnNlSW50KHRbMV0rdFsxXSwxNikvMjU1LHBhcnNlSW50KHRbMl0rdFsyXSwxNikvMjU1LHBhcnNlSW50KHRbM10rdFszXSwxNikvMjU1LDEpfX0pO2Zvcihjb25zdCBlIGluIG8paWYoby5oYXNPd25Qcm9wZXJ0eShlKSl7Y29uc3QgaT1vW2VdLGE9aS5yZS5leGVjKHQpLHI9YSYmaS5wYXJzZShhKTtpZihyKXJldHVybiByIGluc3RhbmNlb2YgZzU/bj10aGlzLnJnYmFUb0hzdmEocik6ciBpbnN0YW5jZW9mIGI1JiYobj10aGlzLmhzbGEyaHN2YShyKSksbn1yZXR1cm4gbn1vdXRwdXRGb3JtYXQodCxlLG4pe3N3aXRjaCgiYXV0byI9PT1lJiYoZT10LmE8MT8icmdiYSI6ImhleCIpLGUpe2Nhc2UiaHNsYSI6Y29uc3QgZT10aGlzLmhzdmEyaHNsYSh0KSxvPW5ldyBiNShNYXRoLnJvdW5kKDM2MCplLmgpLE1hdGgucm91bmQoMTAwKmUucyksTWF0aC5yb3VuZCgxMDAqZS5sKSxNYXRoLnJvdW5kKDEwMCplLmEpLzEwMCk7cmV0dXJuIHQuYTwxfHwiYWx3YXlzIj09PW4/ImhzbGEoIitvLmgrIiwiK28ucysiJSwiK28ubCsiJSwiK28uYSsiKSI6ImhzbCgiK28uaCsiLCIrby5zKyIlLCIrby5sKyIlKSI7Y2FzZSJyZ2JhIjpjb25zdCBpPXRoaXMuZGVub3JtYWxpemVSR0JBKHRoaXMuaHN2YVRvUmdiYSh0KSk7cmV0dXJuIHQuYTwxfHwiYWx3YXlzIj09PW4/InJnYmEoIitpLnIrIiwiK2kuZysiLCIraS5iKyIsIitNYXRoLnJvdW5kKDEwMCppLmEpLzEwMCsiKSI6InJnYigiK2kucisiLCIraS5nKyIsIitpLmIrIikiO2RlZmF1bHQ6Y29uc3QgYT0iYWx3YXlzIj09PW58fCJmb3JjZWQiPT09bjtyZXR1cm4gdGhpcy5yZ2JhVG9IZXgodGhpcy5kZW5vcm1hbGl6ZVJHQkEodGhpcy5oc3ZhVG9SZ2JhKHQpKSxhKX19fXg1Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHx4NSl9LHg1Lsm1cHJvdj1Tbih7dG9rZW46eDUsZmFjdG9yeTp4NS7JtWZhY30pLHg1LmN0b3JQYXJhbWV0ZXJzPSgpPT5bXSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKHg1LFt7dHlwZTpVbX1dLChmdW5jdGlvbigpe3JldHVybltdfSksbnVsbCk7Y2xhc3MgTzV7Y29uc3RydWN0b3IodCxlLG4pe3RoaXMuZWxSZWY9dCx0aGlzLmNkUmVmPWUsdGhpcy5zZXJ2aWNlPW4sdGhpcy5pc0lFMTA9ITEsdGhpcy5kaWFsb2dBcnJvd1NpemU9MTAsdGhpcy5kaWFsb2dBcnJvd09mZnNldD0xNSx0aGlzLmRpYWxvZ0lucHV0RmllbGRzPVt1NS5IRVgsdTUuUkdCQSx1NS5IU0xBLHU1LkNNWUtdLHRoaXMudXNlUm9vdFZpZXdDb250YWluZXI9ITF9aGFuZGxlRXNjKHQpe3RoaXMuc2hvdyYmInBvcHVwIj09PXRoaXMuY3BEaWFsb2dEaXNwbGF5JiZ0aGlzLm9uQ2FuY2VsQ29sb3IodCl9aGFuZGxlRW50ZXIodCl7dGhpcy5zaG93JiYicG9wdXAiPT09dGhpcy5jcERpYWxvZ0Rpc3BsYXkmJnRoaXMub25BY2NlcHRDb2xvcih0KX1uZ09uSW5pdCgpe3RoaXMuc2xpZGVyPW5ldyBNNSgwLDAsMCwwKTt0aGlzLnNsaWRlckRpbU1heD1uZXcgdjUodGhpcy5odWVTbGlkZXIubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aHx8MTQwLHRoaXMuY3BXaWR0aCwxMzAsdGhpcy5hbHBoYVNsaWRlci5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRofHwxNDApLHRoaXMuZm9ybWF0PXRoaXMuY3BDbXlrRW5hYmxlZD91NS5DTVlLOiJyZ2JhIj09PXRoaXMuY3BPdXRwdXRGb3JtYXQ/dTUuUkdCQToiaHNsYSI9PT10aGlzLmNwT3V0cHV0Rm9ybWF0P3U1LkhTTEE6dTUuSEVYLHRoaXMubGlzdGVuZXJNb3VzZURvd249dD0+e3RoaXMub25Nb3VzZURvd24odCl9LHRoaXMubGlzdGVuZXJSZXNpemU9KCk9Pnt0aGlzLm9uUmVzaXplKCl9LHRoaXMub3BlbkRpYWxvZyh0aGlzLmluaXRpYWxDb2xvciwhMSl9bmdPbkRlc3Ryb3koKXt0aGlzLmNsb3NlRGlhbG9nKCl9bmdBZnRlclZpZXdJbml0KCl7aWYoMjMwIT09dGhpcy5jcFdpZHRofHwiaW5saW5lIj09PXRoaXMuY3BEaWFsb2dEaXNwbGF5KXt0aGlzLnNsaWRlckRpbU1heD1uZXcgdjUodGhpcy5odWVTbGlkZXIubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aHx8MTQwLHRoaXMuY3BXaWR0aCwxMzAsdGhpcy5hbHBoYVNsaWRlci5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRofHwxNDApLHRoaXMudXBkYXRlQ29sb3JQaWNrZXIoITEpLHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpfX1vcGVuRGlhbG9nKHQsZT0hMCl7dGhpcy5zZXJ2aWNlLnNldEFjdGl2ZSh0aGlzKSx0aGlzLndpZHRofHwodGhpcy5jcFdpZHRoPXRoaXMuZGlyZWN0aXZlRWxlbWVudFJlZi5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoKSx0aGlzLmhlaWdodHx8KHRoaXMuaGVpZ2h0PTMyMCksdGhpcy5zZXRJbml0aWFsQ29sb3IodCksdGhpcy5zZXRDb2xvckZyb21TdHJpbmcodCxlKSx0aGlzLm9wZW5Db2xvclBpY2tlcigpfWNsb3NlRGlhbG9nKCl7dGhpcy5jbG9zZUNvbG9yUGlja2VyKCl9c2V0dXBEaWFsb2codCxlLG4sbyxpLGEscixzLGwsYyxkLHAsbSxmLHUsZyxoLGIseSxfLEMsTSx2LHgsTyxQLHcsayxTLEQsUixFLEEsVCxOLHope3RoaXMuc2V0SW5pdGlhbENvbG9yKG4pLHRoaXMuc2V0Q29sb3JNb2RlKHMpLHRoaXMuaXNJRTEwPTEwPT09KGZ1bmN0aW9uIEkoKXtsZXQgdD0iIjsidW5kZWZpbmVkIiE9dHlwZW9mIG5hdmlnYXRvciYmKHQ9bmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpKTtjb25zdCBlPXQuaW5kZXhPZigibXNpZSAiKTtyZXR1cm4gZT4wJiZwYXJzZUludCh0LnN1YnN0cmluZyhlKzUsdC5pbmRleE9mKCIuIixlKSksMTApfSkoKSx0aGlzLmRpcmVjdGl2ZUluc3RhbmNlPXQsdGhpcy5kaXJlY3RpdmVFbGVtZW50UmVmPWUsdGhpcy5jcERpc2FibGVJbnB1dD1wLHRoaXMuY3BDbXlrRW5hYmxlZD1sLHRoaXMuY3BBbHBoYUNoYW5uZWw9Yyx0aGlzLmNwT3V0cHV0Rm9ybWF0PWQsdGhpcy5jcERpYWxvZ0Rpc3BsYXk9YSx0aGlzLmNwSWdub3JlZEVsZW1lbnRzPW0sdGhpcy5jcFNhdmVDbGlja091dHNpZGU9Zix0aGlzLmNwQ2xvc2VDbGlja091dHNpZGU9dSx0aGlzLnVzZVJvb3RWaWV3Q29udGFpbmVyPWcsdGhpcy53aWR0aD10aGlzLmNwV2lkdGg9cGFyc2VJbnQobywxMCksdGhpcy5oZWlnaHQ9dGhpcy5jcEhlaWdodD1wYXJzZUludChpLDEwKSx0aGlzLmNwUG9zaXRpb249aCx0aGlzLmNwUG9zaXRpb25PZmZzZXQ9cGFyc2VJbnQoYiwxMCksdGhpcy5jcE9LQnV0dG9uPVAsdGhpcy5jcE9LQnV0dG9uVGV4dD1rLHRoaXMuY3BPS0J1dHRvbkNsYXNzPXcsdGhpcy5jcENhbmNlbEJ1dHRvbj1TLHRoaXMuY3BDYW5jZWxCdXR0b25UZXh0PVIsdGhpcy5jcENhbmNlbEJ1dHRvbkNsYXNzPUQsdGhpcy5mYWxsYmFja0NvbG9yPXJ8fCIjZmZmIix0aGlzLnNldFByZXNldENvbmZpZyhfLEMpLHRoaXMuY3BQcmVzZXRDb2xvcnNDbGFzcz1NLHRoaXMuY3BNYXhQcmVzZXRDb2xvcnNMZW5ndGg9dix0aGlzLmNwUHJlc2V0RW1wdHlNZXNzYWdlPXgsdGhpcy5jcFByZXNldEVtcHR5TWVzc2FnZUNsYXNzPU8sdGhpcy5jcEFkZENvbG9yQnV0dG9uPUUsdGhpcy5jcEFkZENvbG9yQnV0dG9uVGV4dD1ULHRoaXMuY3BBZGRDb2xvckJ1dHRvbkNsYXNzPUEsdGhpcy5jcFJlbW92ZUNvbG9yQnV0dG9uQ2xhc3M9Tix0aGlzLmNwVHJpZ2dlckVsZW1lbnQ9eix5fHwodGhpcy5kaWFsb2dBcnJvd09mZnNldD0wKSwiaW5saW5lIj09PWEmJih0aGlzLmRpYWxvZ0Fycm93U2l6ZT0wLHRoaXMuZGlhbG9nQXJyb3dPZmZzZXQ9MCksImhleCI9PT1kJiYiYWx3YXlzIiE9PWMmJiJmb3JjZWQiIT09YyYmKHRoaXMuY3BBbHBoYUNoYW5uZWw9ImRpc2FibGVkIil9c2V0Q29sb3JNb2RlKHQpe3N3aXRjaCh0LnRvU3RyaW5nKCkudG9VcHBlckNhc2UoKSl7Y2FzZSIxIjpjYXNlIkMiOmNhc2UiQ09MT1IiOnRoaXMuY3BDb2xvck1vZGU9MTticmVhaztjYXNlIjIiOmNhc2UiRyI6Y2FzZSJHUkFZU0NBTEUiOnRoaXMuY3BDb2xvck1vZGU9MjticmVhaztjYXNlIjMiOmNhc2UiUCI6Y2FzZSJQUkVTRVRTIjp0aGlzLmNwQ29sb3JNb2RlPTM7YnJlYWs7ZGVmYXVsdDp0aGlzLmNwQ29sb3JNb2RlPTF9fXNldEluaXRpYWxDb2xvcih0KXt0aGlzLmluaXRpYWxDb2xvcj10fXNldFByZXNldENvbmZpZyh0LGUpe3RoaXMuY3BQcmVzZXRMYWJlbD10LHRoaXMuY3BQcmVzZXRDb2xvcnM9ZX1zZXRDb2xvckZyb21TdHJpbmcodCxlPSEwLG49ITApe2xldCBvOyJhbHdheXMiPT09dGhpcy5jcEFscGhhQ2hhbm5lbHx8ImZvcmNlZCI9PT10aGlzLmNwQWxwaGFDaGFubmVsPyhvPXRoaXMuc2VydmljZS5zdHJpbmdUb0hzdmEodCwhMCksb3x8dGhpcy5oc3ZhfHwobz10aGlzLnNlcnZpY2Uuc3RyaW5nVG9Ic3ZhKHQsITEpKSk6bz10aGlzLnNlcnZpY2Uuc3RyaW5nVG9Ic3ZhKHQsITEpLG98fHRoaXMuaHN2YXx8KG89dGhpcy5zZXJ2aWNlLnN0cmluZ1RvSHN2YSh0aGlzLmZhbGxiYWNrQ29sb3IsITEpKSxvJiYodGhpcy5oc3ZhPW8sdGhpcy5zbGlkZXJIPXRoaXMuaHN2YS5oLCJoZXgiPT09dGhpcy5jcE91dHB1dEZvcm1hdCYmImRpc2FibGVkIj09PXRoaXMuY3BBbHBoYUNoYW5uZWwmJih0aGlzLmhzdmEuYT0xKSx0aGlzLnVwZGF0ZUNvbG9yUGlja2VyKGUsbikpfW9uUmVzaXplKCl7ImZpeGVkIj09PXRoaXMucG9zaXRpb24/dGhpcy5zZXREaWFsb2dQb3NpdGlvbigpOiJpbmxpbmUiIT09dGhpcy5jcERpYWxvZ0Rpc3BsYXkmJnRoaXMuY2xvc2VDb2xvclBpY2tlcigpfW9uRHJhZ0VuZCh0KXt0aGlzLmRpcmVjdGl2ZUluc3RhbmNlLnNsaWRlckRyYWdFbmQoe3NsaWRlcjp0LGNvbG9yOnRoaXMub3V0cHV0Q29sb3J9KX1vbkRyYWdTdGFydCh0KXt0aGlzLmRpcmVjdGl2ZUluc3RhbmNlLnNsaWRlckRyYWdTdGFydCh7c2xpZGVyOnQsY29sb3I6dGhpcy5vdXRwdXRDb2xvcn0pfW9uTW91c2VEb3duKHQpeyF0aGlzLnNob3d8fHRoaXMuaXNJRTEwfHwicG9wdXAiIT09dGhpcy5jcERpYWxvZ0Rpc3BsYXl8fHQudGFyZ2V0PT09dGhpcy5kaXJlY3RpdmVFbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnR8fHRoaXMuaXNEZXNjZW5kYW50KHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudCx0LnRhcmdldCl8fHRoaXMuaXNEZXNjZW5kYW50KHRoaXMuZGlyZWN0aXZlRWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LHQudGFyZ2V0KXx8MCE9PXRoaXMuY3BJZ25vcmVkRWxlbWVudHMuZmlsdGVyKChlPT5lPT09dC50YXJnZXQpKS5sZW5ndGh8fCh0aGlzLmNwU2F2ZUNsaWNrT3V0c2lkZT90aGlzLmRpcmVjdGl2ZUluc3RhbmNlLmNvbG9yU2VsZWN0ZWQodGhpcy5vdXRwdXRDb2xvcik6KHRoaXMuaHN2YT1udWxsLHRoaXMuc2V0Q29sb3JGcm9tU3RyaW5nKHRoaXMuaW5pdGlhbENvbG9yLCExKSx0aGlzLmNwQ215a0VuYWJsZWQmJnRoaXMuZGlyZWN0aXZlSW5zdGFuY2UuY215a0NoYW5nZWQodGhpcy5jbXlrQ29sb3IpLHRoaXMuZGlyZWN0aXZlSW5zdGFuY2UuY29sb3JDaGFuZ2VkKHRoaXMuaW5pdGlhbENvbG9yKSx0aGlzLmRpcmVjdGl2ZUluc3RhbmNlLmNvbG9yQ2FuY2VsZWQoKSksdGhpcy5jcENsb3NlQ2xpY2tPdXRzaWRlJiZ0aGlzLmNsb3NlQ29sb3JQaWNrZXIoKSl9b25BY2NlcHRDb2xvcih0KXt0LnN0b3BQcm9wYWdhdGlvbigpLHRoaXMub3V0cHV0Q29sb3ImJnRoaXMuZGlyZWN0aXZlSW5zdGFuY2UuY29sb3JTZWxlY3RlZCh0aGlzLm91dHB1dENvbG9yKSwicG9wdXAiPT09dGhpcy5jcERpYWxvZ0Rpc3BsYXkmJnRoaXMuY2xvc2VDb2xvclBpY2tlcigpfW9uQ2FuY2VsQ29sb3IodCl7dGhpcy5oc3ZhPW51bGwsdC5zdG9wUHJvcGFnYXRpb24oKSx0aGlzLmRpcmVjdGl2ZUluc3RhbmNlLmNvbG9yQ2FuY2VsZWQoKSx0aGlzLnNldENvbG9yRnJvbVN0cmluZyh0aGlzLmluaXRpYWxDb2xvciwhMCksInBvcHVwIj09PXRoaXMuY3BEaWFsb2dEaXNwbGF5JiYodGhpcy5jcENteWtFbmFibGVkJiZ0aGlzLmRpcmVjdGl2ZUluc3RhbmNlLmNteWtDaGFuZ2VkKHRoaXMuY215a0NvbG9yKSx0aGlzLmRpcmVjdGl2ZUluc3RhbmNlLmNvbG9yQ2hhbmdlZCh0aGlzLmluaXRpYWxDb2xvciwhMCksdGhpcy5jbG9zZUNvbG9yUGlja2VyKCkpfW9uRm9ybWF0VG9nZ2xlKHQpe2NvbnN0IGU9dGhpcy5kaWFsb2dJbnB1dEZpZWxkcy5sZW5ndGgtKHRoaXMuY3BDbXlrRW5hYmxlZD8wOjEpLG49KCh0aGlzLmRpYWxvZ0lucHV0RmllbGRzLmluZGV4T2YodGhpcy5mb3JtYXQpK3QpJWUrZSklZTt0aGlzLmZvcm1hdD10aGlzLmRpYWxvZ0lucHV0RmllbGRzW25dfW9uQ29sb3JDaGFuZ2UodCl7dGhpcy5oc3ZhLnM9dC5zL3QucmdYLHRoaXMuaHN2YS52PXQudi90LnJnWSx0aGlzLnVwZGF0ZUNvbG9yUGlja2VyKCksdGhpcy5kaXJlY3RpdmVJbnN0YW5jZS5zbGlkZXJDaGFuZ2VkKHtzbGlkZXI6ImxpZ2h0bmVzcyIsdmFsdWU6dGhpcy5oc3ZhLnYsY29sb3I6dGhpcy5vdXRwdXRDb2xvcn0pLHRoaXMuZGlyZWN0aXZlSW5zdGFuY2Uuc2xpZGVyQ2hhbmdlZCh7c2xpZGVyOiJzYXR1cmF0aW9uIix2YWx1ZTp0aGlzLmhzdmEucyxjb2xvcjp0aGlzLm91dHB1dENvbG9yfSl9b25IdWVDaGFuZ2UodCl7dGhpcy5oc3ZhLmg9dC52L3QucmdYLHRoaXMuc2xpZGVySD10aGlzLmhzdmEuaCx0aGlzLnVwZGF0ZUNvbG9yUGlja2VyKCksdGhpcy5kaXJlY3RpdmVJbnN0YW5jZS5zbGlkZXJDaGFuZ2VkKHtzbGlkZXI6Imh1ZSIsdmFsdWU6dGhpcy5oc3ZhLmgsY29sb3I6dGhpcy5vdXRwdXRDb2xvcn0pfW9uVmFsdWVDaGFuZ2UodCl7dGhpcy5oc3ZhLnY9dC52L3QucmdYLHRoaXMudXBkYXRlQ29sb3JQaWNrZXIoKSx0aGlzLmRpcmVjdGl2ZUluc3RhbmNlLnNsaWRlckNoYW5nZWQoe3NsaWRlcjoidmFsdWUiLHZhbHVlOnRoaXMuaHN2YS52LGNvbG9yOnRoaXMub3V0cHV0Q29sb3J9KX1vbkFscGhhQ2hhbmdlKHQpe3RoaXMuaHN2YS5hPXQudi90LnJnWCx0aGlzLnVwZGF0ZUNvbG9yUGlja2VyKCksdGhpcy5kaXJlY3RpdmVJbnN0YW5jZS5zbGlkZXJDaGFuZ2VkKHtzbGlkZXI6ImFscGhhIix2YWx1ZTp0aGlzLmhzdmEuYSxjb2xvcjp0aGlzLm91dHB1dENvbG9yfSl9b25IZXhJbnB1dCh0KXtpZihudWxsPT09dCl0aGlzLnVwZGF0ZUNvbG9yUGlja2VyKCk7ZWxzZXt0JiYiIyIhPT10WzBdJiYodD0iIyIrdCk7bGV0IGU9L14jKFthLWYwLTldezN9fFthLWYwLTldezZ9KSQvZ2k7ImFsd2F5cyI9PT10aGlzLmNwQWxwaGFDaGFubmVsJiYoZT0vXiMoW2EtZjAtOV17M318W2EtZjAtOV17Nn18W2EtZjAtOV17OH0pJC9naSk7Y29uc3Qgbj1lLnRlc3QodCk7biYmKHQubGVuZ3RoPDUmJih0PSIjIit0LnN1YnN0cmluZygxKS5zcGxpdCgiIikubWFwKCh0PT50K3QpKS5qb2luKCIiKSksImZvcmNlZCI9PT10aGlzLmNwQWxwaGFDaGFubmVsJiYodCs9TWF0aC5yb3VuZCgyNTUqdGhpcy5oc3ZhLmEpLnRvU3RyaW5nKDE2KSksdGhpcy5zZXRDb2xvckZyb21TdHJpbmcodCwhMCwhMSkpLHRoaXMuZGlyZWN0aXZlSW5zdGFuY2UuaW5wdXRDaGFuZ2VkKHtpbnB1dDoiaGV4Iix2YWxpZDpuLHZhbHVlOnQsY29sb3I6dGhpcy5vdXRwdXRDb2xvcn0pfX1vblJlZElucHV0KHQpe2NvbnN0IGU9dGhpcy5zZXJ2aWNlLmhzdmFUb1JnYmEodGhpcy5oc3ZhKSxuPSFpc05hTih0LnYpJiZ0LnY+PTAmJnQudjw9dC5yZztuJiYoZS5yPXQudi90LnJnLHRoaXMuaHN2YT10aGlzLnNlcnZpY2UucmdiYVRvSHN2YShlKSx0aGlzLnNsaWRlckg9dGhpcy5oc3ZhLmgsdGhpcy51cGRhdGVDb2xvclBpY2tlcigpKSx0aGlzLmRpcmVjdGl2ZUluc3RhbmNlLmlucHV0Q2hhbmdlZCh7aW5wdXQ6InJlZCIsdmFsaWQ6bix2YWx1ZTplLnIsY29sb3I6dGhpcy5vdXRwdXRDb2xvcn0pfW9uQmx1ZUlucHV0KHQpe2NvbnN0IGU9dGhpcy5zZXJ2aWNlLmhzdmFUb1JnYmEodGhpcy5oc3ZhKSxuPSFpc05hTih0LnYpJiZ0LnY+PTAmJnQudjw9dC5yZztuJiYoZS5iPXQudi90LnJnLHRoaXMuaHN2YT10aGlzLnNlcnZpY2UucmdiYVRvSHN2YShlKSx0aGlzLnNsaWRlckg9dGhpcy5oc3ZhLmgsdGhpcy51cGRhdGVDb2xvclBpY2tlcigpKSx0aGlzLmRpcmVjdGl2ZUluc3RhbmNlLmlucHV0Q2hhbmdlZCh7aW5wdXQ6ImJsdWUiLHZhbGlkOm4sdmFsdWU6ZS5iLGNvbG9yOnRoaXMub3V0cHV0Q29sb3J9KX1vbkdyZWVuSW5wdXQodCl7Y29uc3QgZT10aGlzLnNlcnZpY2UuaHN2YVRvUmdiYSh0aGlzLmhzdmEpLG49IWlzTmFOKHQudikmJnQudj49MCYmdC52PD10LnJnO24mJihlLmc9dC52L3QucmcsdGhpcy5oc3ZhPXRoaXMuc2VydmljZS5yZ2JhVG9Ic3ZhKGUpLHRoaXMuc2xpZGVySD10aGlzLmhzdmEuaCx0aGlzLnVwZGF0ZUNvbG9yUGlja2VyKCkpLHRoaXMuZGlyZWN0aXZlSW5zdGFuY2UuaW5wdXRDaGFuZ2VkKHtpbnB1dDoiZ3JlZW4iLHZhbGlkOm4sdmFsdWU6ZS5nLGNvbG9yOnRoaXMub3V0cHV0Q29sb3J9KX1vbkh1ZUlucHV0KHQpe2NvbnN0IGU9IWlzTmFOKHQudikmJnQudj49MCYmdC52PD10LnJnO2UmJih0aGlzLmhzdmEuaD10LnYvdC5yZyx0aGlzLnNsaWRlckg9dGhpcy5oc3ZhLmgsdGhpcy51cGRhdGVDb2xvclBpY2tlcigpKSx0aGlzLmRpcmVjdGl2ZUluc3RhbmNlLmlucHV0Q2hhbmdlZCh7aW5wdXQ6Imh1ZSIsdmFsaWQ6ZSx2YWx1ZTp0aGlzLmhzdmEuaCxjb2xvcjp0aGlzLm91dHB1dENvbG9yfSl9b25WYWx1ZUlucHV0KHQpe2NvbnN0IGU9IWlzTmFOKHQudikmJnQudj49MCYmdC52PD10LnJnO2UmJih0aGlzLmhzdmEudj10LnYvdC5yZyx0aGlzLnVwZGF0ZUNvbG9yUGlja2VyKCkpLHRoaXMuZGlyZWN0aXZlSW5zdGFuY2UuaW5wdXRDaGFuZ2VkKHtpbnB1dDoidmFsdWUiLHZhbGlkOmUsdmFsdWU6dGhpcy5oc3ZhLnYsY29sb3I6dGhpcy5vdXRwdXRDb2xvcn0pfW9uQWxwaGFJbnB1dCh0KXtjb25zdCBlPSFpc05hTih0LnYpJiZ0LnY+PTAmJnQudjw9dC5yZztlJiYodGhpcy5oc3ZhLmE9dC52L3QucmcsdGhpcy51cGRhdGVDb2xvclBpY2tlcigpKSx0aGlzLmRpcmVjdGl2ZUluc3RhbmNlLmlucHV0Q2hhbmdlZCh7aW5wdXQ6ImFscGhhIix2YWxpZDplLHZhbHVlOnRoaXMuaHN2YS5hLGNvbG9yOnRoaXMub3V0cHV0Q29sb3J9KX1vbkxpZ2h0bmVzc0lucHV0KHQpe2NvbnN0IGU9dGhpcy5zZXJ2aWNlLmhzdmEyaHNsYSh0aGlzLmhzdmEpLG49IWlzTmFOKHQudikmJnQudj49MCYmdC52PD10LnJnO24mJihlLmw9dC52L3QucmcsdGhpcy5oc3ZhPXRoaXMuc2VydmljZS5oc2xhMmhzdmEoZSksdGhpcy5zbGlkZXJIPXRoaXMuaHN2YS5oLHRoaXMudXBkYXRlQ29sb3JQaWNrZXIoKSksdGhpcy5kaXJlY3RpdmVJbnN0YW5jZS5pbnB1dENoYW5nZWQoe2lucHV0OiJsaWdodG5lc3MiLHZhbGlkOm4sdmFsdWU6ZS5sLGNvbG9yOnRoaXMub3V0cHV0Q29sb3J9KX1vblNhdHVyYXRpb25JbnB1dCh0KXtjb25zdCBlPXRoaXMuc2VydmljZS5oc3ZhMmhzbGEodGhpcy5oc3ZhKSxuPSFpc05hTih0LnYpJiZ0LnY+PTAmJnQudjw9dC5yZztuJiYoZS5zPXQudi90LnJnLHRoaXMuaHN2YT10aGlzLnNlcnZpY2UuaHNsYTJoc3ZhKGUpLHRoaXMuc2xpZGVySD10aGlzLmhzdmEuaCx0aGlzLnVwZGF0ZUNvbG9yUGlja2VyKCkpLHRoaXMuZGlyZWN0aXZlSW5zdGFuY2UuaW5wdXRDaGFuZ2VkKHtpbnB1dDoic2F0dXJhdGlvbiIsdmFsaWQ6bix2YWx1ZTplLnMsY29sb3I6dGhpcy5vdXRwdXRDb2xvcn0pfW9uQ3lhbklucHV0KHQpeyFpc05hTih0LnYpJiZ0LnY+PTAmJnQudjw9dC5yZyYmKHRoaXMuY215ay5jPXQudix0aGlzLnVwZGF0ZUNvbG9yUGlja2VyKCExLCEwLCEwKSksdGhpcy5kaXJlY3RpdmVJbnN0YW5jZS5pbnB1dENoYW5nZWQoe2lucHV0OiJjeWFuIix2YWxpZDohMCx2YWx1ZTp0aGlzLmNteWsuYyxjb2xvcjp0aGlzLm91dHB1dENvbG9yfSl9b25NYWdlbnRhSW5wdXQodCl7IWlzTmFOKHQudikmJnQudj49MCYmdC52PD10LnJnJiYodGhpcy5jbXlrLm09dC52LHRoaXMudXBkYXRlQ29sb3JQaWNrZXIoITEsITAsITApKSx0aGlzLmRpcmVjdGl2ZUluc3RhbmNlLmlucHV0Q2hhbmdlZCh7aW5wdXQ6Im1hZ2VudGEiLHZhbGlkOiEwLHZhbHVlOnRoaXMuY215ay5tLGNvbG9yOnRoaXMub3V0cHV0Q29sb3J9KX1vblllbGxvd0lucHV0KHQpeyFpc05hTih0LnYpJiZ0LnY+PTAmJnQudjw9dC5yZyYmKHRoaXMuY215ay55PXQudix0aGlzLnVwZGF0ZUNvbG9yUGlja2VyKCExLCEwLCEwKSksdGhpcy5kaXJlY3RpdmVJbnN0YW5jZS5pbnB1dENoYW5nZWQoe2lucHV0OiJ5ZWxsb3ciLHZhbGlkOiEwLHZhbHVlOnRoaXMuY215ay55LGNvbG9yOnRoaXMub3V0cHV0Q29sb3J9KX1vbkJsYWNrSW5wdXQodCl7IWlzTmFOKHQudikmJnQudj49MCYmdC52PD10LnJnJiYodGhpcy5jbXlrLms9dC52LHRoaXMudXBkYXRlQ29sb3JQaWNrZXIoITEsITAsITApKSx0aGlzLmRpcmVjdGl2ZUluc3RhbmNlLmlucHV0Q2hhbmdlZCh7aW5wdXQ6ImJsYWNrIix2YWxpZDohMCx2YWx1ZTp0aGlzLmNteWsuayxjb2xvcjp0aGlzLm91dHB1dENvbG9yfSl9b25BZGRQcmVzZXRDb2xvcih0LGUpe3Quc3RvcFByb3BhZ2F0aW9uKCksdGhpcy5jcFByZXNldENvbG9ycy5maWx0ZXIoKHQ9PnQ9PT1lKSkubGVuZ3RofHwodGhpcy5jcFByZXNldENvbG9ycz10aGlzLmNwUHJlc2V0Q29sb3JzLmNvbmNhdChlKSx0aGlzLmRpcmVjdGl2ZUluc3RhbmNlLnByZXNldENvbG9yc0NoYW5nZWQodGhpcy5jcFByZXNldENvbG9ycykpfW9uUmVtb3ZlUHJlc2V0Q29sb3IodCxlKXt0LnN0b3BQcm9wYWdhdGlvbigpLHRoaXMuY3BQcmVzZXRDb2xvcnM9dGhpcy5jcFByZXNldENvbG9ycy5maWx0ZXIoKHQ9PnQhPT1lKSksdGhpcy5kaXJlY3RpdmVJbnN0YW5jZS5wcmVzZXRDb2xvcnNDaGFuZ2VkKHRoaXMuY3BQcmVzZXRDb2xvcnMpfW9wZW5Db2xvclBpY2tlcigpe3RoaXMuc2hvd3x8KHRoaXMuc2hvdz0hMCx0aGlzLmhpZGRlbj0hMCxzZXRUaW1lb3V0KCgoKT0+e3RoaXMuaGlkZGVuPSExLHRoaXMuc2V0RGlhbG9nUG9zaXRpb24oKSx0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKX0pLDApLHRoaXMuZGlyZWN0aXZlSW5zdGFuY2Uuc3RhdGVDaGFuZ2VkKCEwKSx0aGlzLmlzSUUxMHx8KGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsdGhpcy5saXN0ZW5lck1vdXNlRG93biksZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2hzdGFydCIsdGhpcy5saXN0ZW5lck1vdXNlRG93bikpLHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJyZXNpemUiLHRoaXMubGlzdGVuZXJSZXNpemUpKX1jbG9zZUNvbG9yUGlja2VyKCl7dGhpcy5zaG93JiYodGhpcy5zaG93PSExLHRoaXMuZGlyZWN0aXZlSW5zdGFuY2Uuc3RhdGVDaGFuZ2VkKCExKSx0aGlzLmlzSUUxMHx8KGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsdGhpcy5saXN0ZW5lck1vdXNlRG93biksZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigidG91Y2hzdGFydCIsdGhpcy5saXN0ZW5lck1vdXNlRG93bikpLHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJyZXNpemUiLHRoaXMubGlzdGVuZXJSZXNpemUpLHRoaXMuY2RSZWYuZGVzdHJveWVkfHx0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKSl9dXBkYXRlQ29sb3JQaWNrZXIodD0hMCxlPSEwLG49ITEpe2lmKHRoaXMuc2xpZGVyRGltTWF4KXtsZXQgbyxpLGE7Mj09PXRoaXMuY3BDb2xvck1vZGUmJih0aGlzLmhzdmEucz0wKTtjb25zdCByPXRoaXMub3V0cHV0Q29sb3I7aWYoaT10aGlzLnNlcnZpY2UuaHN2YTJoc2xhKHRoaXMuaHN2YSksdGhpcy5jcENteWtFbmFibGVkPyhuPyhhPXRoaXMuc2VydmljZS5jbXlrVG9SZ2IodGhpcy5zZXJ2aWNlLm5vcm1hbGl6ZUNNWUsodGhpcy5jbXlrKSksdGhpcy5oc3ZhPXRoaXMuc2VydmljZS5yZ2JhVG9Ic3ZhKGEpKTooYT10aGlzLnNlcnZpY2UuaHN2YVRvUmdiYSh0aGlzLmhzdmEpLHRoaXMuY215az10aGlzLnNlcnZpY2UuZGVub3JtYWxpemVDTVlLKHRoaXMuc2VydmljZS5yZ2JhVG9DbXlrKGEpKSksYT10aGlzLnNlcnZpY2UuZGVub3JtYWxpemVSR0JBKGEpLHRoaXMuc2xpZGVySD10aGlzLmhzdmEuaCk6YT10aGlzLnNlcnZpY2UuZGVub3JtYWxpemVSR0JBKHRoaXMuc2VydmljZS5oc3ZhVG9SZ2JhKHRoaXMuaHN2YSkpLG89dGhpcy5zZXJ2aWNlLmRlbm9ybWFsaXplUkdCQSh0aGlzLnNlcnZpY2UuaHN2YVRvUmdiYShuZXcgaDUodGhpcy5zbGlkZXJIfHx0aGlzLmhzdmEuaCwxLDEsMSkpKSxlKXt0aGlzLmhzbGFUZXh0PW5ldyBiNShNYXRoLnJvdW5kKDM2MCppLmgpLE1hdGgucm91bmQoMTAwKmkucyksTWF0aC5yb3VuZCgxMDAqaS5sKSxNYXRoLnJvdW5kKDEwMCppLmEpLzEwMCksdGhpcy5yZ2JhVGV4dD1uZXcgZzUoYS5yLGEuZyxhLmIsTWF0aC5yb3VuZCgxMDAqYS5hKS8xMDApLHRoaXMuY3BDbXlrRW5hYmxlZCYmKHRoaXMuY215a1RleHQ9bmV3IHk1KHRoaXMuY215ay5jLHRoaXMuY215ay5tLHRoaXMuY215ay55LHRoaXMuY215ay5rLE1hdGgucm91bmQoMTAwKnRoaXMuY215ay5hKS8xMDApKTt0aGlzLmhleFRleHQ9dGhpcy5zZXJ2aWNlLnJnYmFUb0hleChhLCJhbHdheXMiPT09dGhpcy5jcEFscGhhQ2hhbm5lbCksdGhpcy5oZXhBbHBoYT10aGlzLnJnYmFUZXh0LmF9aWYoImF1dG8iPT09dGhpcy5jcE91dHB1dEZvcm1hdCYmdGhpcy5mb3JtYXQhPT11NS5SR0JBJiZ0aGlzLmZvcm1hdCE9PXU1LkNNWUsmJnRoaXMuaHN2YS5hPDEmJih0aGlzLmZvcm1hdD10aGlzLmhzdmEuYTwxP3U1LlJHQkE6dTUuSEVYKSx0aGlzLmh1ZVNsaWRlckNvbG9yPSJyZ2IoIitvLnIrIiwiK28uZysiLCIrby5iKyIpIix0aGlzLmFscGhhU2xpZGVyQ29sb3I9InJnYigiK2EucisiLCIrYS5nKyIsIithLmIrIikiLHRoaXMub3V0cHV0Q29sb3I9dGhpcy5zZXJ2aWNlLm91dHB1dEZvcm1hdCh0aGlzLmhzdmEsdGhpcy5jcE91dHB1dEZvcm1hdCx0aGlzLmNwQWxwaGFDaGFubmVsKSx0aGlzLnNlbGVjdGVkQ29sb3I9dGhpcy5zZXJ2aWNlLm91dHB1dEZvcm1hdCh0aGlzLmhzdmEsInJnYmEiLG51bGwpLHRoaXMuZm9ybWF0IT09dTUuQ01ZSyl0aGlzLmNteWtDb2xvcj0iIjtlbHNlIGlmKCJhbHdheXMiPT09dGhpcy5jcEFscGhhQ2hhbm5lbHx8ImVuYWJsZWQiPT09dGhpcy5jcEFscGhhQ2hhbm5lbHx8ImZvcmNlZCI9PT10aGlzLmNwQWxwaGFDaGFubmVsKXtjb25zdCB0PU1hdGgucm91bmQoMTAwKnRoaXMuY215ay5hKS8xMDA7dGhpcy5jbXlrQ29sb3I9YGNteWthKCR7dGhpcy5jbXlrLmN9LCR7dGhpcy5jbXlrLm19LCR7dGhpcy5jbXlrLnl9LCR7dGhpcy5jbXlrLmt9LCR7dH0pYH1lbHNlIHRoaXMuY215a0NvbG9yPWBjbXlrKCR7dGhpcy5jbXlrLmN9LCR7dGhpcy5jbXlrLm19LCR7dGhpcy5jbXlrLnl9LCR7dGhpcy5jbXlrLmt9KWA7dGhpcy5zbGlkZXI9bmV3IE01KCh0aGlzLnNsaWRlckh8fHRoaXMuaHN2YS5oKSp0aGlzLnNsaWRlckRpbU1heC5oLTgsdGhpcy5oc3ZhLnMqdGhpcy5zbGlkZXJEaW1NYXgucy04LCgxLXRoaXMuaHN2YS52KSp0aGlzLnNsaWRlckRpbU1heC52LTgsdGhpcy5oc3ZhLmEqdGhpcy5zbGlkZXJEaW1NYXguYS04KSx0JiZyIT09dGhpcy5vdXRwdXRDb2xvciYmKHRoaXMuY3BDbXlrRW5hYmxlZCYmdGhpcy5kaXJlY3RpdmVJbnN0YW5jZS5jbXlrQ2hhbmdlZCh0aGlzLmNteWtDb2xvciksdGhpcy5kaXJlY3RpdmVJbnN0YW5jZS5jb2xvckNoYW5nZWQodGhpcy5vdXRwdXRDb2xvcikpfX1zZXREaWFsb2dQb3NpdGlvbigpe2lmKCJpbmxpbmUiPT09dGhpcy5jcERpYWxvZ0Rpc3BsYXkpdGhpcy5wb3NpdGlvbj0icmVsYXRpdmUiO2Vsc2V7bGV0IHQsZT0ic3RhdGljIixuPSIiLG89bnVsbCxpPW51bGwsYT10aGlzLmRpcmVjdGl2ZUVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5wYXJlbnROb2RlO2NvbnN0IHI9dGhpcy5kaWFsb2dFbGVtZW50Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0SGVpZ2h0O2Zvcig7bnVsbCE9PWEmJiJIVE1MIiE9PWEudGFnTmFtZTspe2lmKHQ9d2luZG93LmdldENvbXB1dGVkU3R5bGUoYSksZT10LmdldFByb3BlcnR5VmFsdWUoInBvc2l0aW9uIiksbj10LmdldFByb3BlcnR5VmFsdWUoInRyYW5zZm9ybSIpLCJzdGF0aWMiIT09ZSYmbnVsbD09PW8mJihvPWEpLG4mJiJub25lIiE9PW4mJm51bGw9PT1pJiYoaT1hKSwiZml4ZWQiPT09ZSl7bz1pO2JyZWFrfWE9YS5wYXJlbnROb2RlfWNvbnN0IHM9dGhpcy5jcmVhdGVEaWFsb2dCb3godGhpcy5kaXJlY3RpdmVFbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsImZpeGVkIiE9PWUpO2lmKHRoaXMudXNlUm9vdFZpZXdDb250YWluZXJ8fCJmaXhlZCI9PT1lJiYoIW98fG8gaW5zdGFuY2VvZiBIVE1MVW5rbm93bkVsZW1lbnQpKXRoaXMudG9wPXMudG9wLHRoaXMubGVmdD1zLmxlZnQ7ZWxzZXtudWxsPT09byYmKG89YSk7Y29uc3QgdD10aGlzLmNyZWF0ZURpYWxvZ0JveChvLCJmaXhlZCIhPT1lKTt0aGlzLnRvcD1zLnRvcC10LnRvcCx0aGlzLmxlZnQ9cy5sZWZ0LXQubGVmdH0iZml4ZWQiPT09ZSYmKHRoaXMucG9zaXRpb249ImZpeGVkIik7bGV0IGw9dGhpcy5jcFBvc2l0aW9uO2lmKCJhdXRvIj09PXRoaXMuY3BQb3NpdGlvbil7bD0oZnVuY3Rpb24gdChlLG4pe2xldCBvPSJyaWdodCIsaT0iYm90dG9tIjtjb25zdHtoZWlnaHQ6YSx3aWR0aDpyfT1lLHt0b3A6cyxsZWZ0Omx9PW4sYz1zK24uaGVpZ2h0LGQ9bCtuLndpZHRoLHA9cy1hPDAsbT1jK2E+KHdpbmRvdy5pbm5lckhlaWdodHx8ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodCksZj1sLXI8MCx1PWQrcj4od2luZG93LmlubmVyV2lkdGh8fGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aCk7aWYobSYmKGk9InRvcCIpLHAmJihpPSJib3R0b20iKSxmJiYobz0icmlnaHQiKSx1JiYobz0ibGVmdCIpLHAmJm0mJmYmJnUpcmV0dXJuWyJsZWZ0IiwicmlnaHQiLCJ0b3AiLCJib3R0b20iXS5yZWR1Y2UoKCh0LG4pPT5lW3RdPmVbbl0/dDpuKSk7cmV0dXJuIGYmJnU/cD8iYm90dG9tIjptfHxzPmM/InRvcCI6ImJvdHRvbSI6cCYmbT9mPyJyaWdodCI6dXx8bD5kPyJsZWZ0IjoicmlnaHQiOmAke2l9LSR7b31gfSkodGhpcy5kaWFsb2dFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksdGhpcy5jcFRyaWdnZXJFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpfSJ0b3AiPT09bD8odGhpcy5hcnJvd1RvcD1yLTEsdGhpcy50b3AtPXIrdGhpcy5kaWFsb2dBcnJvd1NpemUsdGhpcy5sZWZ0Kz10aGlzLmNwUG9zaXRpb25PZmZzZXQvMTAwKnMud2lkdGgtdGhpcy5kaWFsb2dBcnJvd09mZnNldCk6ImJvdHRvbSI9PT1sPyh0aGlzLnRvcCs9cy5oZWlnaHQrdGhpcy5kaWFsb2dBcnJvd1NpemUsdGhpcy5sZWZ0Kz10aGlzLmNwUG9zaXRpb25PZmZzZXQvMTAwKnMud2lkdGgtdGhpcy5kaWFsb2dBcnJvd09mZnNldCk6InRvcC1sZWZ0Ij09PWx8fCJsZWZ0LXRvcCI9PT1sPyh0aGlzLnRvcC09ci1zLmhlaWdodCtzLmhlaWdodCp0aGlzLmNwUG9zaXRpb25PZmZzZXQvMTAwLHRoaXMubGVmdC09dGhpcy5jcFdpZHRoK3RoaXMuZGlhbG9nQXJyb3dTaXplLTItdGhpcy5kaWFsb2dBcnJvd09mZnNldCk6InRvcC1yaWdodCI9PT1sfHwicmlnaHQtdG9wIj09PWw/KHRoaXMudG9wLT1yLXMuaGVpZ2h0K3MuaGVpZ2h0KnRoaXMuY3BQb3NpdGlvbk9mZnNldC8xMDAsdGhpcy5sZWZ0Kz1zLndpZHRoK3RoaXMuZGlhbG9nQXJyb3dTaXplLTItdGhpcy5kaWFsb2dBcnJvd09mZnNldCk6ImxlZnQiPT09bHx8ImJvdHRvbS1sZWZ0Ij09PWx8fCJsZWZ0LWJvdHRvbSI9PT1sPyh0aGlzLnRvcCs9cy5oZWlnaHQqdGhpcy5jcFBvc2l0aW9uT2Zmc2V0LzEwMC10aGlzLmRpYWxvZ0Fycm93T2Zmc2V0LHRoaXMubGVmdC09dGhpcy5jcFdpZHRoK3RoaXMuZGlhbG9nQXJyb3dTaXplLTIpOih0aGlzLnRvcCs9cy5oZWlnaHQqdGhpcy5jcFBvc2l0aW9uT2Zmc2V0LzEwMC10aGlzLmRpYWxvZ0Fycm93T2Zmc2V0LHRoaXMubGVmdCs9cy53aWR0aCt0aGlzLmRpYWxvZ0Fycm93U2l6ZS0yKSx0aGlzLmNwVXNlUG9zaXRpb249bH19aXNEZXNjZW5kYW50KHQsZSl7bGV0IG49ZS5wYXJlbnROb2RlO2Zvcig7bnVsbCE9PW47KXtpZihuPT09dClyZXR1cm4hMDtuPW4ucGFyZW50Tm9kZX1yZXR1cm4hMX1jcmVhdGVEaWFsb2dCb3godCxlKXtyZXR1cm57dG9wOnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wKyhlP3dpbmRvdy5wYWdlWU9mZnNldDowKSxsZWZ0OnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdCsoZT93aW5kb3cucGFnZVhPZmZzZXQ6MCksd2lkdGg6dC5vZmZzZXRXaWR0aCxoZWlnaHQ6dC5vZmZzZXRIZWlnaHR9fX1PNS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8TzUpKGdmKEtoKSxnZihPYiksZ2YoeDUpKX0sTzUuybVjbXA9c28oe3R5cGU6TzUsc2VsZWN0b3JzOltbImNvbG9yLXBpY2tlciJdXSx2aWV3UXVlcnk6ZnVuY3Rpb24gdChlLG4pe2lmKDEmZSYmKFZ5KEYyLDcpLFZ5KEwyLDcpLFZ5KEIyLDcpKSwyJmUpe2xldCB0O0J5KHQ9VXkoKSkmJihuLmRpYWxvZ0VsZW1lbnQ9dC5maXJzdCksQnkodD1VeSgpKSYmKG4uaHVlU2xpZGVyPXQuZmlyc3QpLEJ5KHQ9VXkoKSkmJihuLmFscGhhU2xpZGVyPXQuZmlyc3QpfX0saG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJlJmKCJrZXl1cC5lc2MiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLmhhbmRsZUVzYyhlKX0pLCExLFBsKSgia2V5dXAuZW50ZXIiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLmhhbmRsZUVudGVyKGUpfSksITEsUGwpfSxkZWNsczoyOCx2YXJzOjQ3LGNvbnN0czpbWzEsImNvbG9yLXBpY2tlciIsMywiY2xpY2siXSxbImRpYWxvZ1BvcHVwIiwiIl0sWzMsImNsYXNzIiwidG9wIiw0LCJuZ0lmIl0sWyJjbGFzcyIsInNhdHVyYXRpb24tbGlnaHRuZXNzIiwzLCJzbGlkZXIiLCJyZ1giLCJyZ1kiLCJiYWNrZ3JvdW5kLWNvbG9yIiwibmV3VmFsdWUiLCJkcmFnU3RhcnQiLCJkcmFnRW5kIiw0LCJuZ0lmIl0sWzEsImh1ZS1hbHBoYSIsImJveCJdLFsxLCJsZWZ0Il0sWzEsInNlbGVjdGVkLWNvbG9yLWJhY2tncm91bmQiXSxbMSwic2VsZWN0ZWQtY29sb3IiXSxbInR5cGUiLCJidXR0b24iLDMsImNsYXNzIiwiZGlzYWJsZWQiLCJjbGljayIsNCwibmdJZiJdLFsxLCJyaWdodCJdLFsic3R5bGUiLCJoZWlnaHQ6IDE2cHg7Iiw0LCJuZ0lmIl0sWzEsImh1ZSIsMywic2xpZGVyIiwicmdYIiwibmV3VmFsdWUiLCJkcmFnU3RhcnQiLCJkcmFnRW5kIl0sWyJodWVTbGlkZXIiLCIiXSxbMSwiY3Vyc29yIl0sWzEsInZhbHVlIiwzLCJzbGlkZXIiLCJyZ1giLCJuZXdWYWx1ZSIsImRyYWdTdGFydCIsImRyYWdFbmQiXSxbInZhbHVlU2xpZGVyIiwiIl0sWzEsImFscGhhIiwzLCJzbGlkZXIiLCJyZ1giLCJuZXdWYWx1ZSIsImRyYWdTdGFydCIsImRyYWdFbmQiXSxbImFscGhhU2xpZGVyIiwiIl0sWyJjbGFzcyIsImNteWstdGV4dCIsMywiZGlzcGxheSIsNCwibmdJZiJdLFsiY2xhc3MiLCJoc2xhLXRleHQiLDMsImRpc3BsYXkiLDQsIm5nSWYiXSxbImNsYXNzIiwicmdiYS10ZXh0IiwzLCJkaXNwbGF5Iiw0LCJuZ0lmIl0sWyJjbGFzcyIsImhleC10ZXh0IiwzLCJoZXgtYWxwaGEiLCJkaXNwbGF5Iiw0LCJuZ0lmIl0sWyJjbGFzcyIsInZhbHVlLXRleHQiLDQsIm5nSWYiXSxbImNsYXNzIiwidHlwZS1wb2xpY3kiLDQsIm5nSWYiXSxbImNsYXNzIiwicHJlc2V0LWFyZWEiLDQsIm5nSWYiXSxbImNsYXNzIiwiYnV0dG9uLWFyZWEiLDQsIm5nSWYiXSxbMSwic2F0dXJhdGlvbi1saWdodG5lc3MiLDMsInNsaWRlciIsInJnWCIsInJnWSIsIm5ld1ZhbHVlIiwiZHJhZ1N0YXJ0IiwiZHJhZ0VuZCJdLFsidHlwZSIsImJ1dHRvbiIsMywiZGlzYWJsZWQiLCJjbGljayJdLFsyLCJoZWlnaHQiLCIxNnB4Il0sWzEsImNteWstdGV4dCJdLFsxLCJib3giXSxbInR5cGUiLCJudW1iZXIiLCJwYXR0ZXJuIiwiWzAtOV0qIiwibWluIiwiMCIsIm1heCIsIjEwMCIsMywidGV4dCIsInJnIiwidmFsdWUiLCJrZXl1cC5lbnRlciIsIm5ld1ZhbHVlIl0sWyJ0eXBlIiwibnVtYmVyIiwicGF0dGVybiIsIlswLTldKyhbXFwuLF1bMC05XXsxLDJ9KT8iLCJtaW4iLCIwIiwibWF4IiwiMSIsInN0ZXAiLCIwLjEiLDMsInRleHQiLCJyZyIsInZhbHVlIiwia2V5dXAuZW50ZXIiLCJuZXdWYWx1ZSIsNCwibmdJZiJdLFs0LCJuZ0lmIl0sWyJ0eXBlIiwibnVtYmVyIiwicGF0dGVybiIsIlswLTldKyhbXFwuLF1bMC05XXsxLDJ9KT8iLCJtaW4iLCIwIiwibWF4IiwiMSIsInN0ZXAiLCIwLjEiLDMsInRleHQiLCJyZyIsInZhbHVlIiwia2V5dXAuZW50ZXIiLCJuZXdWYWx1ZSJdLFsxLCJoc2xhLXRleHQiXSxbInR5cGUiLCJudW1iZXIiLCJwYXR0ZXJuIiwiWzAtOV0qIiwibWluIiwiMCIsIm1heCIsIjM2MCIsMywidGV4dCIsInJnIiwidmFsdWUiLCJrZXl1cC5lbnRlciIsIm5ld1ZhbHVlIl0sWzEsInJnYmEtdGV4dCJdLFsidHlwZSIsIm51bWJlciIsInBhdHRlcm4iLCJbMC05XSoiLCJtaW4iLCIwIiwibWF4IiwiMjU1IiwzLCJ0ZXh0IiwicmciLCJ2YWx1ZSIsImtleXVwLmVudGVyIiwibmV3VmFsdWUiXSxbMSwiaGV4LXRleHQiXSxbMywidGV4dCIsInZhbHVlIiwiYmx1ciIsImtleXVwLmVudGVyIiwibmV3VmFsdWUiXSxbMSwidmFsdWUtdGV4dCJdLFsxLCJ0eXBlLXBvbGljeSJdLFsxLCJ0eXBlLXBvbGljeS1hcnJvdyIsMywiY2xpY2siXSxbMSwicHJlc2V0LWFyZWEiXSxbMSwicHJlc2V0LWxhYmVsIl0sWzMsImNsYXNzIiw0LCJuZ0lmIl0sWyJjbGFzcyIsInByZXNldC1jb2xvciIsMywiYmFja2dyb3VuZENvbG9yIiwiY2xpY2siLDQsIm5nRm9yIiwibmdGb3JPZiJdLFsxLCJwcmVzZXQtY29sb3IiLDMsImNsaWNrIl0sWzMsImNsYXNzIiwiY2xpY2siLDQsIm5nSWYiXSxbMywiY2xpY2siXSxbMSwiYnV0dG9uLWFyZWEiXSxbInR5cGUiLCJidXR0b24iLDMsImNsYXNzIiwiY2xpY2siLDQsIm5nSWYiXSxbInR5cGUiLCJidXR0b24iLDMsImNsaWNrIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihDZigwLCJkaXYiLDAsMSksUmYoImNsaWNrIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gZS5zdG9wUHJvcGFnYXRpb24oKX0pKSxIbSgyLFYyLDEsNSwiZGl2IiwyKSxIbSgzLGoyLDIsOCwiZGl2IiwzKSxDZig0LCJkaXYiLDQpLENmKDUsImRpdiIsNSksdmYoNiwiZGl2Iiw2KSx2Zig3LCJkaXYiLDcpLEhtKDgsVTIsMiw1LCJidXR0b24iLDgpLE1mKCksQ2YoOSwiZGl2Iiw5KSxIbSgxMCxXMiwxLDAsImRpdiIsMTApLENmKDExLCJkaXYiLDExLDEyKSxSZigibmV3VmFsdWUiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLm9uSHVlQ2hhbmdlKGUpfSkpKCJkcmFnU3RhcnQiLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4ub25EcmFnU3RhcnQoImh1ZSIpfSkpKCJkcmFnRW5kIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLm9uRHJhZ0VuZCgiaHVlIil9KSksdmYoMTMsImRpdiIsMTMpLE1mKCksQ2YoMTQsImRpdiIsMTQsMTUpLFJmKCJuZXdWYWx1ZSIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4ub25WYWx1ZUNoYW5nZShlKX0pKSgiZHJhZ1N0YXJ0IiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLm9uRHJhZ1N0YXJ0KCJ2YWx1ZSIpfSkpKCJkcmFnRW5kIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLm9uRHJhZ0VuZCgidmFsdWUiKX0pKSx2ZigxNiwiZGl2IiwxMyksTWYoKSxDZigxNywiZGl2IiwxNiwxNyksUmYoIm5ld1ZhbHVlIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5vbkFscGhhQ2hhbmdlKGUpfSkpKCJkcmFnU3RhcnQiLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4ub25EcmFnU3RhcnQoImFscGhhIil9KSkoImRyYWdFbmQiLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4ub25EcmFnRW5kKCJhbHBoYSIpfSkpLHZmKDE5LCJkaXYiLDEzKSxNZigpLE1mKCksTWYoKSxIbSgyMCxxMiwxNywxMiwiZGl2IiwxOCksSG0oMjEsSzIsMTQsMTAsImRpdiIsMTkpLEhtKDIyLCQyLDE0LDEwLCJkaXYiLDIwKSxIbSgyMyxuNSw4LDcsImRpdiIsMjEpLEhtKDI0LGk1LDksMywiZGl2IiwyMiksSG0oMjUsYTUsMywwLCJkaXYiLDIzKSxIbSgyNixkNSw2LDMsImRpdiIsMjQpLEhtKDI3LGY1LDMsMiwiZGl2IiwyNSksTWYoKSksMiZlJiYobHUoImRpc3BsYXkiLG4uc2hvdz8iYmxvY2siOiJub25lIikoInZpc2liaWxpdHkiLG4uaGlkZGVuPyJoaWRkZW4iOiJ2aXNpYmxlIikoInRvcCIsbi50b3AsInB4IikoImxlZnQiLG4ubGVmdCwicHgiKSgicG9zaXRpb24iLG4ucG9zaXRpb24pKCJoZWlnaHQiLG4uY3BIZWlnaHQsInB4IikoIndpZHRoIixuLmNwV2lkdGgsInB4IiksY3UoIm9wZW4iLG4uc2hvdyksRGMoMiksYmYoIm5nSWYiLCJwb3B1cCI9PW4uY3BEaWFsb2dEaXNwbGF5KSxEYygxKSxiZigibmdJZiIsMT09PShuLmNwQ29sb3JNb2RlfHwxKSksRGMoNCksbHUoImJhY2tncm91bmQtY29sb3IiLG4uc2VsZWN0ZWRDb2xvciksRGMoMSksYmYoIm5nSWYiLG4uY3BBZGRDb2xvckJ1dHRvbiksRGMoMiksYmYoIm5nSWYiLCJkaXNhYmxlZCI9PT1uLmNwQWxwaGFDaGFubmVsKSxEYygxKSxsdSgiZGlzcGxheSIsMT09PShuLmNwQ29sb3JNb2RlfHwxKT8iYmxvY2siOiJub25lIiksYmYoInJnWCIsMSksRGMoMiksbHUoImxlZnQiLG51bGw9PW4uc2xpZGVyP251bGw6bi5zbGlkZXIuaCwicHgiKSxEYygxKSxsdSgiZGlzcGxheSIsMj09PShuLmNwQ29sb3JNb2RlfHwxKT8iYmxvY2siOiJub25lIiksYmYoInJnWCIsMSksRGMoMiksbHUoInJpZ2h0IixudWxsPT1uLnNsaWRlcj9udWxsOm4uc2xpZGVyLnYsInB4IiksRGMoMSksbHUoImRpc3BsYXkiLCJkaXNhYmxlZCI9PT1uLmNwQWxwaGFDaGFubmVsPyJub25lIjoiYmxvY2siKSgiYmFja2dyb3VuZC1jb2xvciIsbi5hbHBoYVNsaWRlckNvbG9yKSxiZigicmdYIiwxKSxEYygyKSxsdSgibGVmdCIsbnVsbD09bi5zbGlkZXI/bnVsbDpuLnNsaWRlci5hLCJweCIpLERjKDEpLGJmKCJuZ0lmIiwhbi5jcERpc2FibGVJbnB1dCYmMT09PShuLmNwQ29sb3JNb2RlfHwxKSksRGMoMSksYmYoIm5nSWYiLCFuLmNwRGlzYWJsZUlucHV0JiYxPT09KG4uY3BDb2xvck1vZGV8fDEpKSxEYygxKSxiZigibmdJZiIsIW4uY3BEaXNhYmxlSW5wdXQmJjE9PT0obi5jcENvbG9yTW9kZXx8MSkpLERjKDEpLGJmKCJuZ0lmIiwhbi5jcERpc2FibGVJbnB1dCYmMT09PShuLmNwQ29sb3JNb2RlfHwxKSksRGMoMSksYmYoIm5nSWYiLCFuLmNwRGlzYWJsZUlucHV0JiYyPT09KG4uY3BDb2xvck1vZGV8fDEpKSxEYygxKSxiZigibmdJZiIsIW4uY3BEaXNhYmxlSW5wdXQmJjE9PT0obi5jcENvbG9yTW9kZXx8MSkpLERjKDEpLGJmKCJuZ0lmIiwobnVsbD09bi5jcFByZXNldENvbG9ycz9udWxsOm4uY3BQcmVzZXRDb2xvcnMubGVuZ3RoKXx8bi5jcEFkZENvbG9yQnV0dG9uKSxEYygxKSxiZigibmdJZiIsbi5jcE9LQnV0dG9ufHxuLmNwQ2FuY2VsQnV0dG9uKSl9LGRpcmVjdGl2ZXM6W1B2LEM1LF81LHh2XSxzdHlsZXM6WycuY29sb3ItcGlja2Vyey1tb3otdXNlci1zZWxlY3Q6bm9uZTstbXMtdXNlci1zZWxlY3Q6bm9uZTstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7YmFja2dyb3VuZC1jb2xvcjojZmZmO2JvcmRlcjoxcHggc29saWQgIzc3NztjdXJzb3I6ZGVmYXVsdDtoZWlnaHQ6YXV0bztwb3NpdGlvbjphYnNvbHV0ZTt1c2VyLXNlbGVjdDpub25lO3dpZHRoOjIzMHB4O3otaW5kZXg6MTAwMH0uY29sb3ItcGlja2VyICp7Ym94LXNpemluZzpib3JkZXItYm94O2ZvbnQtc2l6ZToxMXB4O21hcmdpbjowfS5jb2xvci1waWNrZXIgaW5wdXR7Y29sb3I6IzAwMDtmb250LXNpemU6MTNweDtoZWlnaHQ6MjZweDttaW4td2lkdGg6MDt0ZXh0LWFsaWduOmNlbnRlcjt3aWR0aDowfS5jb2xvci1waWNrZXIgaW5wdXQ6LW1vei1zdWJtaXQtaW52YWxpZCwuY29sb3ItcGlja2VyIGlucHV0Oi1tb3otdWktaW52YWxpZCwuY29sb3ItcGlja2VyIGlucHV0OmludmFsaWR7Ym94LXNoYWRvdzpub25lfS5jb2xvci1waWNrZXIgaW5wdXQ6Oi13ZWJraXQtaW5uZXItc3Bpbi1idXR0b24sLmNvbG9yLXBpY2tlciBpbnB1dDo6LXdlYmtpdC1vdXRlci1zcGluLWJ1dHRvbnstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTttYXJnaW46MH0uY29sb3ItcGlja2VyIC5hcnJvd3tib3JkZXItc3R5bGU6c29saWQ7aGVpZ2h0OjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MDt6LWluZGV4Ojk5OTk5OX0uY29sb3ItcGlja2VyIC5hcnJvdy5hcnJvdy10b3B7Ym9yZGVyLWNvbG9yOiM3NzcgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQ7Ym9yZGVyLXdpZHRoOjEwcHggNXB4O2xlZnQ6OHB4fS5jb2xvci1waWNrZXIgLmFycm93LmFycm93LWJvdHRvbXtib3JkZXItY29sb3I6dHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgIzc3Nztib3JkZXItd2lkdGg6MTBweCA1cHg7bGVmdDo4cHg7dG9wOi0yMHB4fS5jb2xvci1waWNrZXIgLmFycm93LmFycm93LWxlZnQtdG9wLC5jb2xvci1waWNrZXIgLmFycm93LmFycm93LXRvcC1sZWZ0e2JvcmRlci1jb2xvcjp0cmFuc3BhcmVudCB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCAjNzc3O2JvcmRlci13aWR0aDo1cHggMTBweDtib3R0b206OHB4O3JpZ2h0Oi0yMXB4fS5jb2xvci1waWNrZXIgLmFycm93LmFycm93LXJpZ2h0LXRvcCwuY29sb3ItcGlja2VyIC5hcnJvdy5hcnJvdy10b3AtcmlnaHR7Ym9yZGVyLWNvbG9yOnRyYW5zcGFyZW50ICM3NzcgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQ7Ym9yZGVyLXdpZHRoOjVweCAxMHB4O2JvdHRvbTo4cHg7bGVmdDotMjBweH0uY29sb3ItcGlja2VyIC5hcnJvdy5hcnJvdy1ib3R0b20tbGVmdCwuY29sb3ItcGlja2VyIC5hcnJvdy5hcnJvdy1sZWZ0LC5jb2xvci1waWNrZXIgLmFycm93LmFycm93LWxlZnQtYm90dG9te2JvcmRlci1jb2xvcjp0cmFuc3BhcmVudCB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCAjNzc3O2JvcmRlci13aWR0aDo1cHggMTBweDtyaWdodDotMjFweDt0b3A6OHB4fS5jb2xvci1waWNrZXIgLmFycm93LmFycm93LWJvdHRvbS1yaWdodCwuY29sb3ItcGlja2VyIC5hcnJvdy5hcnJvdy1yaWdodCwuY29sb3ItcGlja2VyIC5hcnJvdy5hcnJvdy1yaWdodC1ib3R0b217Ym9yZGVyLWNvbG9yOnRyYW5zcGFyZW50ICM3NzcgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQ7Ym9yZGVyLXdpZHRoOjVweCAxMHB4O2xlZnQ6LTIwcHg7dG9wOjhweH0uY29sb3ItcGlja2VyIC5jdXJzb3J7Ym9yZGVyOjJweCBzb2xpZCAjMjIyO2JvcmRlci1yYWRpdXM6NTAlO2N1cnNvcjpkZWZhdWx0O2hlaWdodDoxNnB4O3Bvc2l0aW9uOnJlbGF0aXZlO3dpZHRoOjE2cHh9LmNvbG9yLXBpY2tlciAuYm94e2Rpc3BsYXk6ZmxleDtwYWRkaW5nOjRweCA4cHh9LmNvbG9yLXBpY2tlciAubGVmdHtwYWRkaW5nOjE2cHggOHB4O3Bvc2l0aW9uOnJlbGF0aXZlfS5jb2xvci1waWNrZXIgLnJpZ2h0e2ZsZXg6MSAxIGF1dG87cGFkZGluZzoxMnB4IDhweH0uY29sb3ItcGlja2VyIC5idXR0b24tYXJlYXtwYWRkaW5nOjAgMTZweCAxNnB4O3RleHQtYWxpZ246cmlnaHR9LmNvbG9yLXBpY2tlciAuYnV0dG9uLWFyZWEgYnV0dG9ue21hcmdpbi1sZWZ0OjhweH0uY29sb3ItcGlja2VyIC5wcmVzZXQtYXJlYXtwYWRkaW5nOjRweCAxNXB4fS5jb2xvci1waWNrZXIgLnByZXNldC1hcmVhIC5wcmVzZXQtbGFiZWx7Y29sb3I6IzU1NTtmb250LXNpemU6MTFweDtvdmVyZmxvdzpoaWRkZW47cGFkZGluZzo0cHg7dGV4dC1hbGlnbjpsZWZ0O3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7d2hpdGUtc3BhY2U6bm93cmFwO3dpZHRoOjEwMCV9LmNvbG9yLXBpY2tlciAucHJlc2V0LWFyZWEgLnByZXNldC1jb2xvcntib3JkZXI6MXB4IHNvbGlkICNhOWE5YTk7Ym9yZGVyLXJhZGl1czoyNSU7Y3Vyc29yOnBvaW50ZXI7ZGlzcGxheTppbmxpbmUtYmxvY2s7aGVpZ2h0OjE4cHg7bWFyZ2luOjRweCA2cHggOHB4O3Bvc2l0aW9uOnJlbGF0aXZlO3dpZHRoOjE4cHh9LmNvbG9yLXBpY2tlciAucHJlc2V0LWFyZWEgLnByZXNldC1lbXB0eS1tZXNzYWdle2ZvbnQtc3R5bGU6aXRhbGljO21hcmdpbi1ib3R0b206OHB4O21hcmdpbi10b3A6NHB4O21pbi1oZWlnaHQ6MThweDt0ZXh0LWFsaWduOmNlbnRlcn0uY29sb3ItcGlja2VyIC5oZXgtdGV4dHtmb250LXNpemU6MTFweDtwYWRkaW5nOjRweCA4cHg7d2lkdGg6MTAwJX0uY29sb3ItcGlja2VyIC5oZXgtdGV4dCAuYm94e3BhZGRpbmc6MCAyNHB4IDhweCA4cHh9LmNvbG9yLXBpY2tlciAuaGV4LXRleHQgLmJveCBkaXZ7Y2xlYXI6bGVmdDtjb2xvcjojNTU1O2ZsZXg6MSAxIGF1dG87ZmxvYXQ6bGVmdDt0ZXh0LWFsaWduOmNlbnRlcn0uY29sb3ItcGlja2VyIC5oZXgtdGV4dCAuYm94IGlucHV0e2JvcmRlcjoxcHggc29saWQgI2E5YTlhOTtmbGV4OjEgMSBhdXRvO3BhZGRpbmc6MXB4fS5jb2xvci1waWNrZXIgLmhleC1hbHBoYSAuYm94IGRpdjpmaXJzdC1jaGlsZCwuY29sb3ItcGlja2VyIC5oZXgtYWxwaGEgLmJveCBpbnB1dDpmaXJzdC1jaGlsZHtmbGV4LWdyb3c6MzttYXJnaW4tcmlnaHQ6OHB4fS5jb2xvci1waWNrZXIgLmNteWstdGV4dCwuY29sb3ItcGlja2VyIC5oc2xhLXRleHQsLmNvbG9yLXBpY2tlciAucmdiYS10ZXh0LC5jb2xvci1waWNrZXIgLnZhbHVlLXRleHR7Zm9udC1zaXplOjExcHg7cGFkZGluZzo0cHggOHB4O3dpZHRoOjEwMCV9LmNvbG9yLXBpY2tlciAuY215ay10ZXh0IC5ib3gsLmNvbG9yLXBpY2tlciAuaHNsYS10ZXh0IC5ib3gsLmNvbG9yLXBpY2tlciAucmdiYS10ZXh0IC5ib3h7cGFkZGluZzowIDI0cHggOHB4IDhweH0uY29sb3ItcGlja2VyIC52YWx1ZS10ZXh0IC5ib3h7cGFkZGluZzowIDhweCA4cHh9LmNvbG9yLXBpY2tlciAuY215ay10ZXh0IC5ib3ggZGl2LC5jb2xvci1waWNrZXIgLmhzbGEtdGV4dCAuYm94IGRpdiwuY29sb3ItcGlja2VyIC5yZ2JhLXRleHQgLmJveCBkaXYsLmNvbG9yLXBpY2tlciAudmFsdWUtdGV4dCAuYm94IGRpdntjb2xvcjojNTU1O2ZsZXg6MSAxIGF1dG87bWFyZ2luLXJpZ2h0OjhweDt0ZXh0LWFsaWduOmNlbnRlcn0uY29sb3ItcGlja2VyIC5jbXlrLXRleHQgLmJveCBkaXY6bGFzdC1jaGlsZCwuY29sb3ItcGlja2VyIC5oc2xhLXRleHQgLmJveCBkaXY6bGFzdC1jaGlsZCwuY29sb3ItcGlja2VyIC5yZ2JhLXRleHQgLmJveCBkaXY6bGFzdC1jaGlsZCwuY29sb3ItcGlja2VyIC52YWx1ZS10ZXh0IC5ib3ggZGl2Omxhc3QtY2hpbGR7bWFyZ2luLXJpZ2h0OjB9LmNvbG9yLXBpY2tlciAuY215ay10ZXh0IC5ib3ggaW5wdXQsLmNvbG9yLXBpY2tlciAuaHNsYS10ZXh0IC5ib3ggaW5wdXQsLmNvbG9yLXBpY2tlciAucmdiYS10ZXh0IC5ib3ggaW5wdXQsLmNvbG9yLXBpY2tlciAudmFsdWUtdGV4dCAuYm94IGlucHV0e2JvcmRlcjoxcHggc29saWQgI2E5YTlhOTtmbGV4OjE7ZmxvYXQ6bGVmdDttYXJnaW46MCA4cHggMCAwO3BhZGRpbmc6MXB4fS5jb2xvci1waWNrZXIgLmNteWstdGV4dCAuYm94IGlucHV0Omxhc3QtY2hpbGQsLmNvbG9yLXBpY2tlciAuaHNsYS10ZXh0IC5ib3ggaW5wdXQ6bGFzdC1jaGlsZCwuY29sb3ItcGlja2VyIC5yZ2JhLXRleHQgLmJveCBpbnB1dDpsYXN0LWNoaWxkLC5jb2xvci1waWNrZXIgLnZhbHVlLXRleHQgLmJveCBpbnB1dDpsYXN0LWNoaWxke21hcmdpbi1yaWdodDowfS5jb2xvci1waWNrZXIgLmh1ZS1hbHBoYXthbGlnbi1pdGVtczpjZW50ZXI7bWFyZ2luLWJvdHRvbTozcHh9LmNvbG9yLXBpY2tlciAuaHVle2JhY2tncm91bmQtaW1hZ2U6dXJsKCJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUpZQUFBQVFDQVlBQUFEMDZJWW5BQUFBQm1KTFIwUUEvd0QvQVArZ3ZhZVRBQUFBQ1hCSVdYTUFBQXNUQUFBTEV3RUFtcHdZQUFBQUIzUkpUVVVINEFJV0R3a1VGV2JDQ0FBQUFGeEpSRUZVYU43dDBrRUtnMEFRQU1FMng4My9uMnF1NXFDZ0QxaURoQ29ZZHBuYlFDOWJiWTFxVk8vanZjNmszYWQ5MXM3LzdGMS9jc2dQcnVqdVExN0JEWVNGc0JBV3dnSmhJU3lFQmNKQ1dBZ0xoSVd3RUJZSWkyZjdBci8xVENnRkgyWDlBQUFBQUVsRlRrU3VRbUNDIik7ZGlyZWN0aW9uOmx0cn0uY29sb3ItcGlja2VyIC5odWUsLmNvbG9yLXBpY2tlciAudmFsdWV7YmFja2dyb3VuZC1zaXplOjEwMCUgMTAwJTtib3JkZXI6bm9uZTtjdXJzb3I6cG9pbnRlcjtoZWlnaHQ6MTZweDttYXJnaW4tYm90dG9tOjE2cHg7d2lkdGg6MTAwJX0uY29sb3ItcGlja2VyIC52YWx1ZXtiYWNrZ3JvdW5kLWltYWdlOnVybCgiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFKWUFBQUFRQ0FZQUFBRDA2SVluQUFBQ1RrbEVRVlI0MnUzU1lVY3JBQmhBNFUyU2ttUkpNbVdTSmtsS0ppV1pacEtVSkpza0tVbWFURkltS1pPVXpNeVNwR1JtbGlSTkppbEpTcEtTSkV0bVNwSXBtV21TZE83MzYvNkQreDdPUDNnVUNvV0N2MWNxbFNRbEpaR2NuRXhLU2dxcHFhbWtwYVdSbnA1T1JrWUdtWm1acUZRcXNyS3l5TTdPSmljbmg5emNYTlJxTlhsNWVlVG41NlBSYUNnb0tLQ3dzSkNpb2lLMFdpM0Z4Y1dVbEpSUVdscEtXVmtaNWVYbFZGUlVVRmxaaVU2bm82cXFpdXJxYW1wcWFxaXRyYVd1cmc2OVhrOTlmVDBHZ3dHajBVaERRd09OalkwME5UWFIzTnhNUzBzTHJhMnR0TFcxMGQ3ZWpzbGt3bXcyMDlIUlFXZG5KMTFkWFhSM2Q5UFQwME52Ynk5OWZYMzA5L2N6TUREQTRPQWdGb3VGb2FFaHJGWXJ3OFBEakl5TU1EbzZ5dGpZR0RhYmpmSHhjU1ltSnBpY25HUnFhZ3E3M2M3MDlEUXpNelBNenM0eU56ZkgvUHc4RG9jRHA5T0p5K1hDN1hhenNMREE0dUlpUzB0TExDOHZzN0t5d3VycUttdHJhM2c4SHJ4ZUx6NmZENy9mei9yNk9oc2JHMnh1YnJLMXRjWDI5amFCUUlDZG5SMkN3U0M3dTd2czdlMnh2Ny9Qd2NFQmg0ZUhIQjBkY1h4OHpNbkpDYWVucDV5ZG5YRitmczdGeFFXWGw1ZGNYVjF4ZlgzTnpjME50N2UzM04zZEVRcUZ1TCsvNStIaGdYQTRUQ1FTNGZIeGthZW5KNTZmbjNsNWVlSDE5WlZvTk1yYjJ4dnY3Kzk4Zkh3UWk4V0l4K044Zm42U1NDVDQrdnJpKy91Ym41OGZmbjkvK1ZjS2dTV3dCSmJBRWxnQ1MyQUpMSUVsc0FTV3dCSllBa3RnQ1N5QkpiQUVsc0FTV0FKTFlBa3NnU1d3QkpiQUVsZ0NTMkFKTElFbHNQNC9XSDhBbUo1WjZqSFM0aDhBQUFBQVNVVk9SSzVDWUlJPSIpO2RpcmVjdGlvbjpydGx9LmNvbG9yLXBpY2tlciAuYWxwaGF7YmFja2dyb3VuZC1pbWFnZTp1cmwoImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBSllBQUFBUUNBWUFBQUQwNklZbkFBQUFCbUpMUjBRQS93RC9BUCtndmFlVEFBQUFDWEJJV1hNQUFBc1RBQUFMRXdFQW1wd1lBQUFBQjNSSlRVVUg0QUlXRHdZUWxaTWEzZ0FBQVdWSlJFRlVhTjd0bUVHTzZqQVFSQ3NPQXJIZ0JweUFKWUdqY0dvY3hBbTRBMklIcG1vV0UwZUJIK2V6bUZsTnZVMDZzaEozVzZWRWVsV01VUUFJSUY5ZjZxWnBpbXNBMUxZdFMydUY1MS91MjdZVkFGWlZSVWtFb0dIZFBWL3NJY2JJRUlJa1VkSS85WGE3bmV5djYxK1NXRlVWQVZDU2N0MDBUV24yZnY2dTMrRWNmZDN0WHp5LzArbkVVdStTUGpvL2txenJtaVFwU2NONnY5OFhld2ZBOC9sTWtpTEoyV3hHU1VvcGNUNmZNNlUwTlg5L2ZyZmJqZXYxV3RmcmxaZkxoWWZEUVFIRy9BSU9sbkd3aklObEhDeGpIQ3pqWUptL1RKV2RDd3F1SlhzZUZGekd3RE5OZWlLTU9KVE84eFFkRFFhZUIyOStLOWVmZUxhQm85Sjd2ZHZ0SmoxUmpGRmpmaXY3cXY5NXRqeC83bGVTUWdoOTNlMWZmTWVJcDZPK1lRamhvL043OTF0MVhWT1NTSTdOLy9LKzQvR294V0xCeCtQQjUvT3A1WExKKy8zT2xKSldxeFUzbTgzb3Z2NWlHZjhLallObEhDeGpIQ3pqWUJrSHk1Z2Y1Z3VzdlFVN1UzN2pUQUFBQUFCSlJVNUVya0pnZ2c9PSIpO2JhY2tncm91bmQtc2l6ZToxMDAlIDEwMCU7Ym9yZGVyOm5vbmU7Y3Vyc29yOnBvaW50ZXI7ZGlyZWN0aW9uOmx0cjtoZWlnaHQ6MTZweDt3aWR0aDoxMDAlfS5jb2xvci1waWNrZXIgLnR5cGUtcG9saWN5e2JhY2tncm91bmQtaW1hZ2U6dXJsKCJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJJQUFBQWdDQVlBQUFBZmZDanhBQUFBQkhOQ1NWUUlDQWdJZkFoa2lBQUFBQWx3U0ZsekFBQUNld0FBQW5zQjAxQ08zQUFBQUJsMFJWaDBVMjltZEhkaGNtVUFkM2QzTG1sdWEzTmpZWEJsTG05eVo1dnVQQm9BQUFJQVNVUkJWRWlKN1pZOWF4UlJGSWFmc3hNU3RyTFFKcEFncEJGaGkrQzl3MVlTbzAwSTZSWi9nOXZacEJmL1FPcjRHeVJna1NLTlNyQWFkc1pxUUd3Q2t1QVd5UlpKc3lTd3ZoWjdOL3ZoenJnYkxIM0xkODU5N2pseno1MHpKb2t5eFhIOERxRFZhcjBxaTZ2OEJiSXRxU0dwRWNmeGRsbXNGV1hrdlg4QWZBVldnM1VLUEVuVDlHS3VqTXpzQUZnWnNWYUNOMVZUUWQ3N1hVbnJnRTFrdis2OTM1MjY4V1JwenJuSFp2WVJXQzdZdkMzcFJaWmwzd296cXRWcWl5SDlJZ2pBc3BrZDFHcTF4VUpRdFZyZEI5WktJQU90aGRnL1FjNjVMVWs3d05JTW9DVkpPODY1cllGaGtxalg2L2Q3dlY0R1BKd0JNcW9mVVJTNUpFazZGWUJlci9lZVliL01vOVd3Rm5QT3ZRYmVBdmZ1QUFLNEJONHNBSnRBRy9nSklFbG1OdWlKeWJhM0VHTm1aaVBlWnVFVm1WZWxsL1kvNk4rQ3pEbjNBWGhFT09vN0h2LzNCZUF6OEl6UWtNUG5KYnVQeDF3Qyt5WUo3LzBuWUlQNVMvMEZIS2RwK3J3Q0VFWFJTL3JmNUhsMUd0YjJNMGlTcENPcENaelBBVG1YMUV5U3BITUxBc2l5N01qTURvSHJHU0RYWm5hWVpkblJ3Qmg3SjkxdXR3bWN6QUE2Q2JHM0dnUGxlWDRqcVVIL2ExQ2t0cVJHbnVjM2hTQ0FNQjMyZ0tzcGtDdGdiM0tDUU1ta2plUDRXTkpUaHJOTlp2YWwxV3B0VElzdjdKdFE0dG1JZFJhOHFTb0VwV2w2WVdaTm9BTjB6S3haTlBlaHBMU0JadjJ0K1EwQ0o5bExuQVJRTEFBQUFBQkpSVTVFcmtKZ2dnPT0iKTtiYWNrZ3JvdW5kLXBvc2l0aW9uOjUwJTtiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7YmFja2dyb3VuZC1zaXplOjhweCAxNnB4O2hlaWdodDoyNHB4O3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0OjEycHg7dG9wOjIxOHB4O3dpZHRoOjE2cHh9LmNvbG9yLXBpY2tlciAudHlwZS1wb2xpY3kgLnR5cGUtcG9saWN5LWFycm93e2Rpc3BsYXk6YmxvY2s7aGVpZ2h0OjUwJTt3aWR0aDoxMDAlfS5jb2xvci1waWNrZXIgLnNlbGVjdGVkLWNvbG9ye2JvcmRlcjoxcHggc29saWQgI2E5YTlhOTtib3JkZXItcmFkaXVzOjUwJTtoZWlnaHQ6NDBweDtsZWZ0OjhweDtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MTZweDt3aWR0aDo0MHB4fS5jb2xvci1waWNrZXIgLnNlbGVjdGVkLWNvbG9yLWJhY2tncm91bmR7YmFja2dyb3VuZC1pbWFnZTp1cmwoImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ2dBQUFBb0NBWUFBQUNNL3JodEFBQUFoMGxFUVZSWVIrMlcwUWxBTVFnRDYwemRmd09kcWE4VG1JL3dRTXI1SzBJNWJaTEl6TE9hMm50MzdWVlZiZCtkRHg1b2JnQ0MzS0JMd0oyZmY0UG5WaWRrZit1Y0lodzgwSFFhQ0xvM0RNSDNDUkszaUZzbUFXVmw2aFBORHd0OEV2TkU1cStZdUVYY01na29uVk02U2R5Q29FdkFuWjh2MUhqeDgxN01pbG14U1VCNXJkTEpEeWNaZ1VBWlVjaC9BQUFBQUVsRlRrU3VRbUNDIik7Ym9yZGVyLXJhZGl1czo1MCU7aGVpZ2h0OjQwcHg7d2lkdGg6NDBweH0uY29sb3ItcGlja2VyIC5zYXR1cmF0aW9uLWxpZ2h0bmVzc3tiYWNrZ3JvdW5kLWltYWdlOnVybCgiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFPWUFBQUNDQ0FZQUFBQlNEN1QzQUFBQUJtSkxSMFFBL3dEL0FQK2d2YWVUQUFBQUNYQklXWE1BQUFzVEFBQUxFd0VBbXB3WUFBQUFCM1JKVFVVSDRBSVdEd2tzUFdSNmxnQUFJQUJKUkVGVWVOcnRuVnVUNDdnUnJBSE4rUC8vT3IvNjFZNXdPTlo3bVoxdTNYQWVMTWpKWkdaVmdkS3NmYzV4UjNTMFJJSVVXK0NIekNwYzJNY1lvN1hHdjNleDdVaVpkNTdyanl6enYrdiszM1gvUi8rM3IvZjd2UjM4NlkrVHZLTmNmL3dkaFRMUGN2OXFVMndaZDc0dXRoMHQxODIxamtJWkxQY3NJLzZuV2E0WHZ1dHF1VTBaODVtbng4MFMvWnpncG5Mbk90SE50Ny9vZngxVEtYY1NOek4vN3FiTVEzanU3ck5RbU1ZWWQvNHMyajlhYStQK2dHYU1jWnJiMU0vdGRydmY3L2Qydjk5UDkvdDkzTy8zY2J2ZHh1MTJHOWZyZFZ3dWwzRStuOGMvLy9uUCsyKy8vWGI2NmFlZnhsLy8rdGZ4NXovLzJZSzVBbDJyZ3ZmNFVzYnBkR3JCNTJiQXZBclhwdXpqbWlxQVZTR3o1ZURtR1lYemhiQVptQ3JubXpkZHBVVSs4WTFkQU9ZZVhDdERVd1Z3VjdZQ0dINnVBbXlNY1o5bDV2a1VhQlBHTVVaNy9KNXcvNzkyL2Z2djlYcTkzMjYzZHIvZlR4UEVDZU1FOG5LNWpNL1B6L0hUVHovZHYzMzdkdnJsbDEvR1AvN3hqL0czdi8xdC9PVXZmd2tWc3dvbmdqZE9wOVB6SDNVM0Qzem1XR25aVlhuNGpDcXM3d0MyQktQNC84dEF6a1pzb1d4NlhycWVIWnltdnA0QUJDQkpoVFF3S2ZEVDhnenJaQ0lxaTVBaGlBQ2pCZkVCMnJQOC9YNjNNTTdmNi9WNnY5L3Y3WGE3YllDODNXN2pjcmxzVkhJcTVmZnYzMCsvL2ZiYitPV1hYOFpQUC8wMC92NzN2NCtmZi83NUpTdmJldStiTDJXTU1hRmJBbHBCTk04NVFYK2N0NnFvU3FrUEF3dVFsQlZLcUdORlNVT0FBM0JtdTdnQzVoTk9kMTVuU3d2QU9VVzdDNGdpVUNWOFNnbjVMOWhORklxVHNwMEd4STB5c2lveWpBamtZL3RHSlZFcHorZnorT1dYWCs3ZnYzOC8vZjc3NytQYnQyL2oxMTkvSFQvLy9QUDQ5ZGRmeDhmSFJ3cm1UalY3NzlFWHUycHgyeGhqd3RkSlpRY0FXUUlQTFBJU3NNSmFTd2lEOGd6SUtyd1N5QVRFNWo1bkFiUjVjMWRCVXdCbHNFV1cwaDZMcWlZc3FGUEFReEN5Ulozd09TQVJ4bWxYTVg1azY0cFFmdnYyN2Y3NStkaytQajVPSHg4ZjQvdjM3K1BidDIvanQ5OStHOSsrZlJzZkh4L2pjcm1VRkxPMzFnWURXYmx4UklzL1RxZlQ3b3VzeEpzQXhYQTJHYzdUQTlYZGdmZG9IYkZzajc2WDIrMVdBcmdJMWFnZUd3QTNxdXBxb0hzbWNiSTZGdTkzcXVnZ0ZhOWQ3TGVEdGdLZkFGSEJKK05FQnlJa2NKNUtlcnZkVG1oaEdjZ0pKU1o1dm4vL2ZqK2Z6KzE4UHA4K1B6L0g1K2ZubUdEKy92dnY0L3YzNytQajQyTjhmbjZPMisxV3M3SmpqUDZ3cmFNSTVFNFJaOHgydlY1VFN3a3F1b3RWNy9kN1R6NkhGV3NEL3FOY2R3MENRM3EvMzIxYzY4NlR3RFZJZGJ1eTczek5sZGhTSGI4STJrbFp6bm0rSW5CUzRVNm4wMzAyYUJGc0xoSERBS0pWSlZnbGZJOWpodnU1M1c1M3NMQU5ZTnhBaURBNk1DZVVIeDhmOSt2MTJpNlhTN3RjTHFjWlc1N1A1eWVZOC9mejgzT2N6K2Zuc1NtWVV5a25XRUc4NVdCc3Q5c3R6U0x5TWRmcjlRaTA4aVkxNVVaMExsREdMaFIzbzV6SzJqN09QVVREMEUrblUzdGs3WGIvMTZORmJobG9BTXVZMXpqTFVPTzNCS2VJRGUrWjhzMy9KNGdGbzRUTTVqUG11UmcyOGZvVUtLVlN3bzE2VGdBNW5weXdjV0xIZ1lsL1B6OC83My82MDUvYWI3LzkxbTYzVzd0Y0xpZTBzWmo0bWFvNWdUeWZ6ODhFMGYxK2o4RWNZendUUEVHMmNxanlmSE5GME04ZnVxRWlhT1ZuUnpaWlFOaDVmd1F5SGcvSERHZkpvODlRMXpiL3F1dTVYQzY3NzNJMlhLZlRxZC92OStkM3d1cVd2YS9ZVGRVZEVWM2ZoSXYvVml5cHM2WUUzeDNyNDNLNWJKUVM2NnpheFZHRnN2ZCsvL2o0YUYrL2ZtM2Z2Mzl2dDl1dGZmMzZ0ZjMrKysvdGRydWR2bjM3WnVOTEJhYUNNZ1V6QytyWlJpRm93eFV1Skk4WU1xY0NwOU9wcTV2YWdhWVU2bEdKQTFYUXFlamNodzZDajBHdzVuWUJyR3cwMUEyTzIwNm4wNEJHb3VOTnlUZnAvRndFbGhVZXk2blhySUt3N1FRV2RkeHVOMmxkTDVmTDgzOWdTUEY4YWh1L0p2Qk80OENQU3VxTWY4VnA5L1A1M0w1OCtkTHU5M3M3bjgvdGZyOC8zOS92OS9iNStUa2hQSjNQNTZtUTQzNi9qKy9mdisvaVNnYnplcjArQVp4LzUrODhidjZPTWRhNlM1ejZrZDIxZllDOWR4djdjSUpKMmQ5QU9TMzBmUE16eUhpVE04QjRERjZYVWxZSHA0S1FXM1crMXQ3N01OQjF2R0h4V3E3WGE3dmY3OCt5NS9ONUErSDFldDI5eHVQNWRiWXR5YVJ1NEFrc2JQcTY5MzZmalJ6WFJ4QmJQci9iK2IxOCtmS2xqVEhhQkJCZm44L24wLzErSDErK2ZCbm44em0wc0I4Zkg1dTRjcjVHdUJoTVZrMEVFbjlSc2N0Z1ZoTStpeGxKdE1BMjNSOEI2eXlzQXN0Qk9nRlhJS0tDTUlnVG9NcU5FdTJmWU1IN3p0YzczMmRRS2tDajF5dEFadFkwS3g4cElyOEdHSitBVDNWKzJIaXJobCsrZkJtWHkyV3o3M3crYjE3UDhwK2ZuOC90VXdHVmxlVmtUeVViNjhEa2ZheVdZNHp4TlJpaFU0RXBMSlBaVnJLK3U3SjQvbWdmS3FlTFc5WDJSRVdsSXRMMWRpeW5iRERiMytqWGdZalFxbjBycnhXYytOa0lMUDdGN3hJYk12eDd2VjUzeDQweG5sYldKRjEyWlNhZy9OMHBXNnQrWnptT016SGphakt3RGZvbmQ3OHpZVGRmcTE4dXA5N3pyMnE4djNJaW9CcHJSdEJsMEVaOW9nNVdCUkdPZE9IaklqWEY3VW90RmJnT1duWHpJSnl6WXZqRzVJWWdzbU1PeEhrejhPc01TclZOV2VxNVQ4RGFPY2JFdjFPZDVyYnM5YU83WXZNZXQ2M0VrRisrZk1FeHErTVJsNC9MNWJMWk4vK2V6K2ZuWjZLYXp1TXFYU1FWTzVzcEpYZmxIQUl6ZXMveEpzZWNrUkppRE1vZzlkNlZmUnJxWE1yNktwVlYyN2pSd0phY0dvdk9BTTF6TWRRTW53SzFBdWJLNjNrZENDaHZJMUM3ZzB6OW5mL0QrWHplMlZqOEg3R3g0UDlkdVFsc1lDcnF5TjhYcUczSG0vMTBPajNqdy9uK2NybHN0dU0ralBtbXhUMmRUdVB6ODNQenQycG4xWHNFSFgvYm5QYVZxVm1oMHh3T3QwbzZYTExBSGVQVVUyMDN3SGZjcnNwQ3dtVjNUcnlCNXMwTXNlZWc5N3gvQnd6Q2pCbGJCK3BSQVBsYTBCVlF1VDZWNlFIZEJsajNkMEtHMTQ3YitEcXhRZVV5bURPNDNXNGRRYXIrVElqd21BZDB6OC9oNjV2ZjAveUx2M1BiNVhMcHJ1L3lkRG85czdFVDBJK1BqNmRLSzlWVUVJZUtXUVdQQU9ySjhMS2Q0dkUrdDkxWTNlN1VGbFdhdGcyVndKbmIrSFBtdHZtL3NmSzU5L09hV0YzeC9lUDFVUEh2QTVERFlEcFlYZmIwZHJ2MVYyRGtCa3h0dy90RVdWVmxYV2RDOXBGWXM1L2pmaDlkUy8xNnZXN3M2bFRHK1RmcXN4U0pIeGtYWHEvWGRyMWV1NExzZkQ2UDN2c1QzTjc3RGtMK3pQbTVqU2RLTDR6UjNBeFFkNnJIa0xrWWxTb3dzcnE3em56dTZ3U3dkc01KT1htQTVmQmNqeHRnTUdCWUhscjV6b2todHNNQ1RnWExRT1c0WEM2ZEV5RU1wckw4bUFRelhSZ2R1aXgyeVp6b3J4a1lzRG4zaEIxVmVNTEdzWHNWdGdsMnBXOFMzc3ZrMHZ3N1I0aE5hSHZ2NGNBQ2w1SEZ6d0lIMEtjNnp1NFhqRFBSL2pwQVZ4V3pPMVhrMkREYjN2VGN4ZUdVMWlXWkhrbUlEV3ppV0t2aXJDSjREcmF2czZJSi9HRzZjVHFXZFhEeStmQXJRRFZWa0xxa1ZqQW9aSUlUZG1tSXFYd3FhOTVOMytNR1lvWlFkUlZOTzUzWTF4UmtoTzE2dlk3ZXU1MDdDYTlsSm5iR3B4T2VtUWhTdy9BUXNtbXA1elU5QmlVOEc2d3ZYNzZNNi9VNlBqNCtkbzBCejRDcGdpa25UVWVEcXdsS0JtZzN1NE9WanJaMUErckFjZ2FlaldxNmVKQ3ZDWUZET05Td09nSFg0RVFSdzhseGJ6RE9kRUs2Z1ozSGsxYis4ZzJvMUpGdEtYeXYvZkVkVFh1V2pXWGRBWmlCcDZBRGVEckNGaWltN0I2WkZuZWVJN0d2bS9QTWtVRFg2N1c3eEk4YjBENy92OGRBOXFmTjVvYUNmNzRXWmpIMG1mMWNtZlkxWTBKVUZtVnJUV3U4dXprTmNMdEVqN3U1RlhCVGtmQzZHT0E1cThZTXhPOEtWdkY2c0FWR2RjclVic0tPRGNRS2tMTU9NZG1seHVtNjQyWXJQbTI2QWxoWlcxWUIxUityckdzd0U4VGFZQVdlVU14ZGYrV2p3U3ZaMkVmM3l0T3lmbjUrUHBWUEFhcU9uNDNNdE5CcXZtamp4YmpNNGxaalpZNGdxTk1JNWt0YVcvc1lLTndTKzlsRlF6R2lobU1DS1BhNytaMFY2RWIwR1Jtb2J0cFg4SmxqV3U1Rk1MTjVqYTZoRzlrd1FnWnFmNSsxTkg1VXh6a0ZSZUNkV2hKOFhkbEdVa3hPN0hSbFlSbTRtVk80M1c3dGVyMTJUUEpFdy9ybUVOM0w1U0tISVdaZzlteitwVW9LT1lxNWJKVEpkWDJnbWUxVWN4TVpRRmFFUUlsSGN0MzJNK1kxQnpHa0d1emZpeUFOOXordWdwbFoxc3ltQ3JEQ1lZa0d4RFRwSTlSekJ5MHJIeWVEVUMxbldhZVVhRDluNHhrTnlZTUJEWnR6WjNCKytmSmxZMjFYRkRPY0FSSmxhYk95aVMzdUNwTEk5anJaakNEa2FWdmNDQ2p3b2duS1NoV2R6WFpXbFpNdlZUZ0Q4THBxbENMcnFnYmNCK3FZd3JnS1lwVDBjY0NxYkt5Q1ZhbGtFYWJuL0Z5bm9nQ3JQS2ZxZjUxeEo3c0dCMlpYY1pteG9TT3p0angzMDBEWmk3YTAvMkFJUjBVbEJhZzlTdUR3NktjQXpsYUI3dkhadldwaks5MGR5cnE2Ykt5RFVaUWJSMEIwNWJpTFFrSEljU1VtZ0lLK1N3dXFnSENub2lvMlJRVTF5aitCbkJ5OXBwaFZLTEd5QzdaekZLMXB4V0srRThJaFZDV0xOL3VMdG5VVTRheW9ZTG9hQU56OEZkdGFTdlk0cFYwQkVXMmxzNjFjenFsbEJLcFR5S2dNQWhyWjFjZGMxUlJPdFBtdldOa2RjS1o3Wkt4YVdqaVBMSk1wcDdPWkt4QStycUcvb0pManhmMHBuSmxxTG9EWm8zZ3lVMG1LR3lzMnRhS2Vjai9kMUMrckpTcGxCcWxUeUFxZ1IrRDhLaktsbVJMMmd0VWNBZEN0c0wraWpDTlQxb3FxcWtIMk9IRWJHNXNERm5VZzVBYSt5TG91MlZVMXB0ajFTMlpRcXYxT1JaTjlJV3pSZmdhUkJ4S29CRThVV3lxbEpGdHJJYzBBeE5qU2plZDk5Q1RZL1hEZlN6Q3o1TTBJWm9WRXNXblBGTlRzbDhvb1ZDMVR6YkdncUZaTkRTZ1Z3S0srMXNHRE1LcXhaQ1dHVk1EeXNpRXIxalZTUUpVWXdqNWlIT2xUaGRIdDQ0U1FnOUNOK25sOEQ5ME5NSWdBZGdyNDZKcVJpUjlJOHZSZEZ2YnIxN20veXhVTUtqTkxNaVZVQUR3dTJDV0doaGkrRjU1VFdNOU05Y29nem1zMWRuTTR1T0YvTEFFWVdkY3FuTTd5Rm15cTNJZndtT1JPZDdZMWlGV3RPam9ZOFRvNDFtVFY1SXlzZ0ZGdVJ6c2JXRkdiTklJSkNEdjFkT280bFpHN2pXQndSRnRWVEt1V3llQ0J5SktPYW44b1ozZXA5WGRkTmwwdER1YXl3THo5Y1hQWWVEQUEwU3BrQk85c2JWY1RPVldsZFB2NHV5ekVrenhIdGp2b25Ib1NrRkVXTm9vMWQ4RGhjUXB1dGQycHBOb240QnpvQWlKMWhCRlFnMGRWdGRiR0hIRFFXdXNobU5FUXVrTE0yUU8xRzJZOGJnVFhxRmhjQkpqN0VqUGdjUHRzOFVTOHFQcFBCL2RYem5PaDVaNDM4dHpINWVjNlFnck9LclJSZktteXNCbVVEQitQaFlhYk1sVlBFUitHQ1NJVFR6cjdhbTJ0QXJIM2JnY0V6UEptK2NyNWpKNE5uSE5GRFZyRlhjSTVMZTlrNUpudytiZWRiVitGZlJ6WklIYU9PYU9zTFkwLzdVR3M1OERqckd3S01JTUZJR3pPRVcxL2pHc2RBdENONmhFQUk0aEJlOVlYZVJST0JTVlBBVlBBcXZJTTVieDVoVktXQU1QNnpCUnkzaWVzY3JpZFZkRkJpbkJ4WERuRzJHUlkyWGJDdnAxbGh2R3RPOUJ4dTVoOTA4WFF1NDJsblNBck1GZGl6TWltOHV3UkN4UEdubk9TOGx3cG5iT2lEcVRBanNyUk4vUGNvQVNjQ2JhQUNxVk00MHlsbmpqVEJzK2J3V2xBRzIzL1VLYmRraXdLV0lRUEd6V2FjenBvU2x4UEVqODIyY05Xa3BTN0Z5enNEcnFwZmdwRzNqYWh3MnZnYmFTUUF4dUxXWll0N0p6eU5lOEpvWnBOQWN2REZPZHcwd3FZVDlBSzFyWnovRGRiU2xMUHAwcnlJeGdRSmxLOUFabEVxN0lPWHBvaGc5UElockNuZzg4SnNPeGlWNFpXQVlmZzRzaWt4LzhreTJaOWw4NjJ1cXdyZnNjSUg4K3VnVG1WR3lpZGRlVllVZ0VNbjRHWnpnMTRFd0lzaDlzeDJjS0tpV1hSZXVPRTVnekdPUWdkbFJLVlZkbGV2cWIyNzlYcTBRbnN0czJWRGFCTzBjb2V6c3J1V3RIQXB1NnNLRzRJQmhOMGFHVTJrTHJNS0dSVE4zSG1iQ0R3S1YxNHp2a01FREc0UWZaVnNwVmxhTlUybWhjNVRFWjNOMWgvenFUaGV1THBXMDVaV1RHVmpiM2Ribk5teEtaQm5OOEpxaWRhVkxLQU95QVJOTFMrTUI1NFoyK1ZhcW9NTEtyb1ZCbG5nZWZuVFBBY29ITldDU3ZsZkE4Q0kwSEVtQk5CbkJsWHlNcnpVN0E3V1ZtOTRQUHFRMmdtcUt4K1dER3NudmlsbWNTT0JKcU9LMW5ZeUFJenVBeWVzcTNVZFNLM0tmV2NZS0Q5NUhtZllPVTNxc2VyMkN0WUVVQStGcGZxZE52Z1BCWlVCaERyR09OUlZsUXNoOHJMY2FVQ3lrSEcwT09Vd1RsTEJyc2g1c29FTUdlemkxRTRIUlZ0MWljcDV3WkVGWGRpYkNrRzhZOHZYNzVzYk80RTBpb205eitoalNpT2Z5M0RocFhJdHBWaEUrVUdRZHZvV2p0Q2htckdIZjRZQXpLZ0JObkd0dUp4RkNlR2RoVUFmUUxMSzhrQllBUDZndkZKWmFqTUczWGt5Y3k4S3VDMHE0RXl5bXd0d2R4ZHYyTTBtSUJ0SzBMS25mNjQwajAwQXVxNGdVa2RXR2xoczIycUpjNmRaQ3NMMTlveG5sVEpHNFNZVlJJR3BEOFRQRkJ1TTZPRWxiUzFwbGRpZDRtR0F5TjZaSXVwYkM1YlhKTjlmZHBiVGhTeExVYUk4SUcxWElZQnhXM1RqczZLUW9zS2N4ZnhjUW1kbndSR00xMEduRmNDeTJYWXVuTE15QWtkZ2s0bWVQaWN6c0x5Z3RoY0J1dDZnb09xUzdZVkZYQURMamFvc0I2czZvZmNaV0FaU0lSWXFTVWtpell3dHRZYWIzdlVPUTl3MkhSeElJZzhXd1JWZUU2OHhpNFV0TDN6UnBoeHBsend1WnJjcVlDcTFJM2pQSTVkbkpJeWdFb2hNYlBxVkpTenJ3enhCSlRzNXpOK1JlVVNneGlrUFFWRjNKVkJlTlF4YkhFTnJFTU52RWRGWlZWOWxIOStPUkdFc05aUXB5VE5jNEMzQUc3WEY0bmd6cStEck8yemJ1YWFPWGdkYUZjZGtFb3RvU0ZCVlgycUowQzhPV1plRzRLR2xwZ2hBMFhmVE9QQ3FWMnFxd1EyNlFXZkYyUE1MaEkydzFsVkFhMmFQc1lkMHphMjVNUVJ3Z2NaTjZ1UURDaStaeGlENFhFTTJrWnhPVDQxRm5abmFSbGNwWm91emxScXFkYlFWV29wUW9TQjU4UlY1MGxCTnJIaS9Bd1hTNUxyd0RWbHBZM0ZjM0J5aVlHYzUyVHJpc3Q2a09YZHdJbkFRdEpwcDVRY2h5YXF1WU9WN1N1K2Z4Vk1hVjNkYzBSRTJTNm1VWTBnTHQycE1jWXFyS0lROXcybDFncFFVTXRRWWNtbWJ0NURUTnhkaG5VQ2pRcXRiSzlTVVN6dnJDMG1taGhFMWUyRlMyK294eXB5L1pBU3V0a210angzdmNCQzI0UFg2NW5icWtCQ1JoZmpTOWtJWVBuZWU4Y01hZ1ZPaEkvM1QxZkFtZHRBV1pzQ3N3VEpDa1FWTmEwcVdLU0tQT3BIQVVoRDlEcmJWY3lvWWt3cWh2aDE3dllBYXlYTFF5S0dZZHhsVURGcDQ5NHJCWFJqWWdPMTdERFlldE5JVWovZXpwNlMwbG5scEV3c1dtSk1rT3dzS1hlWktFQWpJSG4wRVFKSVNhUkJjTzZVTUlOejdwL2JFampudzRmdCt4bUR2a3N4WDRHMnJJcmlzN3FhZUt3QUZNUDJPaTduNGNyaXVad3RwU1V3cGZMeFNuT1JTcklxdXNjNVpGYVh5c3FSV2ppWjJEeUFXRUlMMzV0VlNvUUVsRkFDak9lR0dTRTdBSEVRZ2RvL0xTdkNPZ0dCdmt4c21EYnZsUzNGcDV2aGFCMlRBR3FSS3JLS01yaExWcGFHekVWalowT1F4RGhhQ1RBK1F5UlIxZDE1YVF6ckpudEwzUmlic2lwakc2amxnTDR5cWJTMHNOWWcxZTg0dmhiQlZyRWxLNjRDVWNXWVhEZkt4aHBJdXhpVkpaVXhzYk15L3VSQktUTlJRNGtRM0xkUllMUzBySmpSUGxUUHFZNmdkSnNFRGMrYVFYQW4rSGdzTlVDYlJ1RjBPajB6d25BN2JXRGtiaE81RW5zMDBxZVFoUzFsYUJNbDVNL2NBYXhzTEY4ckt5cWwrVGY3RUxMRUd1L2l4aWltZEN2bzBUamZwakt3YWdnZW40ZWg1djdMb2tMS2JMdXl2SGhjWkc4ZGhHckVEeDdIZzkzWnBwSkY3cUJxTzNpVnZlWEVEUU5Jbnplb2U4WXE2ZVBhWkJaMkp2aU0zVzJVQUdvdGVrUkNBR3E0RWtGMVgzRE9uUjExeVJzQkwxdFJhMFBWY1ppTkZYWjJjMzRGc2t2b21JblFRNmx6cEpvWmJKeGs0M053S0pGQnF1SlNzckJ5SHlkeEtPblR4UUFTQm1TM2orSk1uc0hTbGEzRWM2SzlWV29KVm45emZqd09NN2hxWUFBcUpRd0UyYTNuQTQ4SjJRR2VnUmtwWk5pdlNZK3lzM0VrS2Q0b0pJd3N2SUhsM2NXZ0x0NWs0Tkg2T210TFdkcHVyT2t3RU11cFljN2VNdERSaE9jSTJ1aTVKaFZJelh6THl0by9HQVB1Wm95bzh3a29kdVZnSmdsQ3Q3T2hHYmdJRDRNcTRzaSs2M3pVUzFGdUZGWEZscXlhajJlbUhsTE1jQnFZdTBGTXVSMjhCYkI3bE94Uk1TaUNRWEZoQ0t1d2toWitwWURpR1NnYnNLS1Y4TWlTUnN1SFNJV005cmtsUmlJbFpadXFYanNRSzhvb1lKTWdxM0pLV1ZraEhiaHNWeEZVenRoT1dQa1lpamNieDU0SUtzU2RUK3VMcjNjckdLeW9ZZ0ZpR1I5aUJrNGtmbG9VWCtKSWxRUlFxYWJtcGduaHF0cFFwYjZSVlExV0g1RG5yUzRoRW9HWnFhZXJRMmRoRmJ6OFhlUHhTaG1EYm83MGVJU2pvb3JPMnZLOFNKWEk0U1VtRVU0eldLRHpVRHRXVFl3N3hYbGJTVEVqNEZSZzd6S25Lb0dSQUx2MEdzOVRnYzFCcEN5d0daUlFBdHFWejJ4ckJjQU16RXBmWndGU2EyRzVXMFFCRmpTTWFwV0FFRmEzSGNHTjdDeER6RUN5SWtKOTdxd3JxV05UV1ZvODc2UFBzalBrajJ3dmdyb001bExaS01FVEtWcWwvQ3ZuV1ZGaUZhL1N6SlVRd2tvWnNyNjdZNnZsU1JWMy8ydG1OVE9ZM3ZuYXhZd011b1BLcWR6UjF3N0lxSHltbFB4YUFUaGZVN0tvMlpYWWo0QVlKSEwra05kS3dSUVlFU1RSYTVmc1VaL3JWQzFUTVR5V1Z5WW9xTnR1emFIc015djJ0dm9hcnhkZnF3WWdVMWF4Rm8vY25xbDFGR3NxSyt1QVJPVjhCWDRHVThXY1pUQVRpMnE3UWN5aTBPMFYrR2hXQk1OUlVrbjhIMVNzV1ZFNUJ5M0dpMEVDcVVlSm9CZkF0RGE0YW1rZFhHMzdBR1A1R2dlYjg0cDdVYXpwb0tSemRGemVROEhrb0hHeHByS3kvSHBtNXQxMnA0N0o2eFRZREV6N3VJTkVYU3V4WVh2RnNrWUFjK3lTeEg5c2Y1ZnRLelU2SWJ3VkJjVUdnNWU1Rk1DRVhTRXJaUjB3R2F5VjE5d29NOWd1UGpUcUpkVlRxUjR1RTRuSm5MbGRXVmtFQ0NaTGQyVkxGK3h0YW1leDdJcGlyaVNEVXB2cnBuOWxyd0dNQ0h5cHBNSCtwczZMSUxzdUZHVWoxWEVPWGlxYnFTSFBVS25DbHBXVjY4a3F0VVJWTkRZNFROYW9jeWtvWWVUVTVuZ0dFUWEvUzFEbm5FNEFlWE1jS2pIUEFtRlZqQ0JFTmFleUxWTkhmcjNweDh4VXN0Sjk0aElwZkg0SEtFL2VEYUFySzZsU3lWVkZiZHQxZ3hUSVZrM3BwcFZsRlhpNHBFaFZCVE9icXVvaFU4NU1MWG4xaWFodlVrSEpqU0NNYzAxdExGdmVWVkJ4MERvZE02amZ0Q3U3RE90SXpZeHJjMHFwMUpHUDJheVlGejJHYjZIdk1yTzhjbkd0VjZHam0zdUltU2ZEMkdwV0s2dW93YlpHTXhGS1FDbzFwT010Y01YRnBSc3QraFhHb0FvbUYzc1NUQkdnVGdsYkJLV3dzUTN0WnFhWVNwMFoxQ2ltUkRXRmNDSlVQWUowMEJJNUZrS1lOb2lmdVF4bU44OFNXVlhXTE1hVXFxcWdDMEJtUUpSNnNrM3U5TkNmNmpZTFh4QWZxc1lFZ1ZMQWhSWTJBdGd0ZmxaTkZtRnloeGRyTGtBZFdsazREODhNMml4SHllcElkaE1IckcvaVIxWkd0cTBNR3BiRGJSUFlPWGVTWTFNNk55NFpzdHZHU2t0SytYYkZQQVRqMkQzNzFzYVBFc0FNWGhYcnNaMGttL1hTdGtoaE15QmZzYTZ1WEZaZTJWQ2UrWU1yMStHS2d3clF5TllxMVZSckIrRWl6QW93Nk5zZE5LY3lWRWtZZU03M3lzNnE0a0FIcDZCaUZrbFRrSXJWQzVvWVY3dXp3T0dDejRVSjBTdHEybFdNSnk0d3RiK1JldEw2dFpGaWNuSm1CdzVVakN2WFhNWlZKWDJNUWtiZitYTjVFV2Q3OFZ6OC9KRXNNWlRCaUtOenNtMWluTFJVUTc0SDROaWRhcUk2OGo1c0FGZ3hjUnZlQzdpZUxKWGZRWXhqWloyQ3NpV0Zld1pYSm1CSWxaMXRkdHJYNGhTdWF0ZUtzby9SWk90T0tXMm5tcTFvVHplSzZkUldBV3UyTlJWYjRocTBTWG0xR3Z0dWdIcmJyNUlYcW1Ta3RnNUN1REUyTVNsUHdzWTVrTkUyV3AzQXFpWmJXVkxBeGlCRisyaUJaYnVOajZNQjZyc01MQzdGeWFzYVlEeW83S2tvUHlFdHczcEVNWGZQdnhBSmkyakFRUWdqcnowckxJWlNXWmxJb05od2Q1eEs0QVI5bVlOaldBYUxybnVJbUplQlZOOXpCT1JPYlZ2YnIrbVRUZkZTRUpMU1JuSG83aEVKb0lpOE1GcWp4bXZnbUY1VVJaejR6TEZnWlo4Q3R1Mlg3Z2dWY2NLbTlnVnhJc09IcXhYZ05NS25GV1pZbmYxZEJuT2hheVhxMTdRd0ZsV1cwOWVOS3lWSkZtWHFhT05HQTVhQ2VnTWJKM1VVa0dZMWljM25LV2dqcThxZlZZR1FHMWdSdDZyczYyYTZIaXFxVU9xZGVzSzVObVg0bkdvZkpvaUUxZDBkRjlsVlZrdlQxL2tFRWFhQ29ZT3dGcGNWY29MTSs3NjY5UHhDOXJXcWt0SDBzV1VZbGQwVkNwdUJaL3N0VlJjR2d5OVdYMitVMVF0aGk5U3pBcVN4elpzeStPaUZ6QllueVNHVjZHa3U0NHJEOEJDT1pCVjNCdkQ1K0FLUkhOd01Fc0I2RXpIbkpwa1RBZWlVbEVHa2NFQ2VCNkdEWlRwNVlFSlRsdmRya254WWpUbGxNa2ZOdFh3RGpNN3VWaks1SlhVVW40M3JycXBLMmp5dGF4SFcwTTVHOERDOHJ0SE1ZczdLU2dkdVZRTUdUWUZxRnZWUzZya0Qzc0RKNDZhZmRZRndvcTExQU9LQ0JMaHZ3b1VnYzhJR0FOeWNSNmtuWnJkSlBkc3V4bnlqZmQzRm92VGxSTWRFZHRPbDVDTVY1RUhzWFFCaXM3VE93dklEWmFHajJWbnBiaDdjcEs2M1Z3WUVNTHdxYmp6eWw2OTlzYXdGRmtGMXlxalVVMzFIZkM2c1cxWkZWRnVYVlhWZ3o5a2VFYXcweXMxbFdmbSthelFBUVNXQStoS1lWZnNaalBuY0FjVUI5b0lheXkvVVpYUk5ja0RHamk3N0dzV2J2Qm82dFByV1BxT3lWa0JVcStJTmVxcHpOZFlzL3UwaWZoNXFtcHFJVyszM0pWU1Vjd1k3MEtMNFU5bFlkVTZsanRTbHM3bG1maTlnM1l6ZVFmVmthR0ZhVjNPRENuYUQyTjh3c0VERmtsRTNSek0zWmdoZFlrV0hzc3pxNzBGSWVjbktrVmt0OGV6TXpScTlia0d1S29qUkxCVlNvZDNZMXlQcUtnWVc3SlJRVFBWeXk1eElZTGpPZ3hnVDUyUktKVVkxZE9ySWlSZDRmdXRReC9BNUFjU21FanowdkZXcmtMenZiV0F1OUhPV2JHZ3hGazFWTlRwbkJLazZUZ3dpc0kvSGN4WVhQMXVBV083MlVMRmxCVHErYVN1MlZUVXM2aHJ4TTJDRitoRW9yMVZJQTlabUZVYWFiMWxTU2dac1ZzNHN4ekhsVkxvSkhyOUg0RGhPTlRrSTFYQzAvd2lZMk5vV0FHNVJsbkhGbnE2b0xjY3BRZGRNdUovTzE3SlZBNU9ITGkwQnFDenRxN1kxKyt1Y0NkOThxTEk4TUlIQlYvY0tqeFFUbWUzaEZCUzNNeUNxbkRzdXltMm84MEhqdkZGVHRyVVJtTmFHSnNtVmFoSW1qVHNVWEt0UVpUQVZzN012djgvK2Z6VXJaQVhjTEo2TTRrb2U2WFAwYjZTbVdXTkR6eVVwUThibCtMdFd4NHR1cVozNmNSWVYzeXVWeFBOd3ZJaXFpUUNTbXU3c3JnVHpSNm5reWhwQ2FyWHdGeTF2R2Q1aVAyY1kwNmxGcjVOamhoZzFZNitOQjI4ZnRiSzgzczhyZjdrTEpiS3dERlBiTGcyNWEwQWRaSkVpcXI1cGhpeEtNRGxSVXRjc3NxMWhyaUxxR29IK3plTmdWbTlPZW1qc0VUVjhKZEYwTkhua0lGeFdZMU9CNFlycDdydFdKN05nQUFBUFhrbEVRVlEzb05zNW5wbHlWZjh1MkZvTHUxSnJIdmVhWldRanFBa3NodEZhMmd6c1NHM1pwa2J2ZzNIYWZGOXNsUFBsbGRqRmxLODBHeXNtOE1yNE1QaG5lTldFTlBHakFJcG1pbFRQQVRkVFJUWGxDQllIWUFRdVB3QTM2eElwV3RHTjRxM1kyTWhpR3NVcHVTU25sRUpSRDhQb3JDN0NGWVZ3K0Y1MXFUaGdhYnhzVHhXekNHWTBaU3NiM2xmcUF5ME9QTmpOeTh4aVFRS3NIWUZRMkhCWlZ2VmJCdXEzbTFvV0thanFhb25zTTZ1WlVyNkNqWFdOWjBsNUUzaDNqVVJtYTZrUDNNSklpeTFMbStrYWhRcTQxTjJpWmphNXNqdGxMWU5aSFpySDZxVUdtNHZNYkRwNlJ3MkNGbXZ1eUZrckJjQ3lNdEZxQmFFQ21zSG9LOUJaMkxBL2xKY1JxU2FEcW5hV2JyWmRHYXozRExnSXZCbG40d29HenRieUpHcXNsd3hraGhIclRqVFlGWEN0T29LUzh1TGRvZlZkQWJPeWxHVTZubFlwWFdadHM0blhCcTZXeEppdE1Ob2tIVUpuYm5KcGxRbSthR3BZMmE1R01WMlFEMWhSdWJCUEZLZHVtZjVPSGtMSHowRjlsdUU1a2pCalJhMG5GRTVDVUdxSHczMk1talo2eGtnSU5WblNuWjFWWlN0SzJxS2xSYUxsUWdLN3VUcTdKRlhKd00rM1NPRUt5aFpOSSt0SjBJNXFNWXk5azJxSkQ3ZFZXZHFLWGEwQ0tOUjBDY2pnK0IySVl1MmZjQlpKWmtNRmdNMTFyMFg5MndpbGdoRkdnelZuZXhscUI3eEw5bVMyOVNpWVVWWTJuWE9aak5CUnN5RHNRUFJXVzVoclo0WGNkQzRIVldSYmpnSnI0c0ZvZks1U3pqUTdyaEkxVWViZFBkRWJqNnNxSXZUWlFaNXZhMDhyQUJzQVcwVXhlV3l0QWs3QTJLSjlacHh6Q2lvQjI0WEZ0WUFlWFl4cjZhblNxaExncHBFcVdiR3dMdW5UZ3JWK0lqV2xMMjlsamFBbDRFUU1Hc0VycDRhcGVaaXF1d1JYTFhBcU9DZXJ1MzJtbXlkYzZvV1RTV3BGQUdkemVUQjhSVEhWTUV0bE05MENiYlFDWWhQanEzZWdZcjFGR2RZSVFqaXVER1o1elovQXpvYktHT3lMeHRpNmM0Und0djJhbnlXbExJQ25sTGh4SlJYdDZBNWViREJXRk5PTmJ4V1oyZDAybW51NFM5WUVDcGVwcFYxelNXUkJXeEhZelZJdjFDWFNvdXdxcVgzakJCQkRaZFlRYnBUUVc0WlFsUzhyNWtINHN1U1JtZzIrKzNKTjEweDFQYUFtRWttdFlsRWRlR3BKRU02a091Q3FDUjIyb1N1amo1SVYySGRUMHpqNXByTEtUalhGQVBqZFFseXE3eElCeEFRUDV5TWN6RzRWeEFLdzBuNmlsWjJRQmNlMnBMdWxrdXh4cW5vSXpGZmdxeXFqaWw5UzFWTndCckZtZXllb3BzOHlPalpVeWJaZGZTOEN1YVRJSnVtenM1dE9EYU50THBGRFEvUGNKR3dlTGhtZUwxbkIwS3FpVURTY3NpVVZEODlEaTNIdHJLdFNVTHczUkxpeWdaRCs3c0Y4SlRPYmdZc3JHdkROVUZSR2wxaXkwTGwxWWtVYzJhSllNb2c5MjBJOHFXNllEQ2cxTXFrMEpISkZLWGtiZ2JScmVJK3FwWU5PWkhyVmNEVWJhN3Bqc3BoU0pOdEs2dXBnUk5BVm9PUzBtdWdCZU40YklaZ0hodVBaL3MxRU5hWDZLc1ZyK1lOcmgxTmI3aXBSMFBFNXpiTlJlZ0NickhSVXc2WWYwN2RMQkpsMWY4S0I5YXMyVjFuTnFBc2w2MkxCQmhlaHdhbGVya0htQjFKRklFWktTRXVzZGw1SlFqMW5KbEhYU0NGMzQyZ0o5Q1lHclhlbGtuSklYcVZQOHNEK3F0cGxDUjNYSDJxZktxMHlnTXArS25Wa0t4TmxaOG0yWWtJbFZNaUNuWFV3bDdxem5CS1N2UXozbTNQdDZvUWJYTzViNUZpeENoL2ZIeFVRVy9BRWNLNnpDTnFLUW5MOXN5d3FtS3V3dnFTWXpUL2FQVk5OcFZ5aHZSVzIxYXFjaUNzamRXdkJ3SUxVdmg1VnlDemJXb0MxcEpqSjY4MENXc2wrdWRLQjZUNVJ3RzFtbG9obmxwYmc0N2l6NVU5aGEwRkd0bVJMRllCdE85OXk5N0FwMHorWkRUQW9nNmtTTFpzTUhnL0lGa2tncDZDcHZVMlUwY1lWU2RubWtqd0JkT21YYnhUV05XenVJYmlwTWlvVnhFY2taRW9haFNPaXkyTTNLMGpjQzFMaFZEd2FxRzBadmtjV3FDbnJHNEdJeHlrcnFsYldkdzZMUXlCYVpSOEhtTFJJaFFXc0hzd0Q0MlpYVkxOa2Y5bCtGbFcwSFZRMmx3RnNDL1oxRmR6bFFSMEthUGZvK0ZkZnUrL2R3VlJJQ3UxQ0dSN0FFSWlBaGMrQVpVRjBrT0JhUHhtVXFnNGk2NHZRblU0bkZEWUo5TnorMWZWWHZlSDlxbXIra1BJTHg4b0tjUlYvQkZieGJFMEpNVDBrU0Q0dzZML2xOWThvY3NxYWdWZFUzQTNNanhoeGNHdXF6c1BINGlycGFvdzFxNk95clZqdnA5TnBjNTlFOTFMbGRib1lWekpXZGltV2ZBVzJTTkVLY0RhWDJGbUJMTEEvdUt4bG1oaDYxM0lzMVVSUUFwYktmdHR3eEwwMnE2T254NXBReFNiUG9qQWcrdjVoQW5ONkxIVlJEWElzdkt0UmppUzBxSlV5WlRBWFZiQUs4MkVsRkpXYVFkVm9xVUMxVW50N0JWYVRRdWRNNlN1cWV4alFKTjQrMGljYXh2L3V0Ykt2ODNFVGJUOEg4Z2pjT0t4T0ptYlVhNk9PVlhodDNkRlk2ckh2OVhvTnpGTGNlRUExbzgrcEttMExBSFBIWjJyWUtqRnEwaGZaRml4c3FISmdEM2VENW4rVTBrYjFtRmpYa24ybHZNU1NPc05FL0NkSUFLRjBTeXRxNnVyT0hVTjVnd2c0R1pvc2dibWdnTTV1Y3JhMnFyUzJJZzFjYmlCQmN4WXpnelVETkxDdkw4R2JaWE5wNk9SeTNMbVMrS2s4M3pSSUFLNkExaW9LYTJJOU5hcEl1aVVGZGZDOTc2NlBGWlV0cVVyNktiV2srelpVMWEvWnJJWEV6dHJqVE9mejdod0t6aUNlWElhcmFIdGJaSU16KzJwR2dhekNtdzRxV0FGdkVkaG9kWXAwWHEwcFY3RzFZV1lXYk80cWhHcTQyK1o4Qll0ckxXdmx1TlBwWkFlYUZGUzF2dWJQZ2JneHNxY3BuQWFzekJvdkthRm9EUThCR3RqZlVPbDROQUcybm1RVjA0ZmVKZ3VtdlgyZnNyUUVXWmdoTDBKblZkWWtuM0RPWkllUk44NlJxUFdDbXN2R1ZxRU1Sbnd4UUF4d1M4RU1ZbzNJem1ZMitCQ2NMcDRNS2l1eXVoSW1hbWxiWkZjTm9ObDd0cCtSSGQxOFpqUUlSS3lYZEZSaE45OC9oeUtxd1hXTm83TzF3aWFYb0hOMTA4UkVaWldFcTZncm5JZmp6ZWc4amRSZjFYRUw0a2tYYTViQmpLeG9LYWxqQmplSGxWeFE0R2F5Y3BXNGxET0FLdG5UeEhBdE9mek90WndIQU03c3FWWGtWNnl1NmthcDFuSGtYS3FXRi80WEhxamVuTktxQmpwUjNsMWNoM0VqZzErRXNnZFFoc2RHMEI0Rk05c1dBVldwdUF5aXdUUGxlWnh0OVZ5WlZTMnFYZlJlV3FUQWlscHI5QXBvV1RqeHltaXQ3TndWNEpUcmlaeU9BOUIwazdIRmZVTG91cm1LWUhWblJRdnFHTDVITUhkcUZjUjJxV3BtY0s2ZVR3eDJkaXBXcnZpRGlscitmS1dxM09XUldkSEt3QTRldTh3amNoYmVSekZpbHFqalpOM3VmQ3Bma0owL3NjVnBuWWs2TDBQSTc3bHhkV0NaODdXaVdtN0IvQUdxdVFTbnVqR0tzQjhDSm1pSnE4cTFwS0lWV3lxT2lUSzY2cjE4Qk44cjc0L0FFNzFmZEMzeVBTMk14ZE9wbkUxdGxWeEQ5Sm1WT29nZ04rcjRQakFYVkZQYTNFZzVqVkpHRlZVR05vbEgyMEdWclVCN0JPeVNXcTZXcVlRZFdSOTJwY0ZNWU13Y2tiU2dDS0NxRDY3RGlpV3UxZzhNUUM5QnlmY0ZxVzFMK2pMNzE0cU5DdXpub1N4dDBkYTJndFdOMUc4RjBCSzBOTjBudWltZWxVRjlkSWRBZmpPNDRVVDNDalFMb1VlTEhKRlRPM2dtcFJ1SUlPdndCUUNicU5lbzNxdFo5aUY2eFZLMTNHUmxvNHpxaW1xK0NHZFRpUjF1Ulk4b3FnRTAyaFpCYTc5a1pYUE1xdXhSSEtsYTJzYVpXTjRtUnFaVWowdkxDS2hraktucU9RSE51U1pWSm9LdkFxUzF3cEVxdXZXREMxQjJ5cHdyQ1BzUk1FUFZUT0RNTEpNRHY2cWVLWHdpMkpZVjVTcTRxS3l2Z0dzSENMaXVqMmpSNTlWOGdNcVNKMkZKWlJYRUhWUkhqM3NGUHJjdDZPcHFsVzFHcGF0UWR0MEd2d2ZNNm42M0luc0dWRmhKR2FCcWdxcUlWNklzWGxsWmd5U1BxNFIzYm50M3dpNWN2K2NOMnlxUUxXMVQ5NUtZVnNXV3RLazRjQjlXNTNXUVFmbFFZUjZXbDRIYUpaanZWRTBENXl2cStSS2daQ3M1cWRCRVA1c0Q5NGNBdlFMbFNnTmFTTUF0SHg4OEJ1TlE0MXpkRnNYMzB6S2JjczBNTEQvaWhrcFF6bDB3aVRxS0xUZmJLbUNteVlJQ25LMEliYWllQzRDRzlpU3lMUTdjSU1HUXdhdTZUS29xNjBBcGwzV040MExacGNhMUNLS0s5VlF5eUlFbjh3MEY4RjZDTDJoOG8zaXhHd0M3czdFV3pDT3FtY0FwWXhZRDRqc0F6VlMwc2wydDk4cEE3dnJLb3BoQ1ZTb25iWXBnSDZtdlNuMjRwVEJWNHNkdFYzQnRNcTVrODJ5K0lBRHZVSjB1QWxrQ1ZUeElhUG0rVU51L3FrVjRGMVR6SFhDR3JYSUFxSXRCS3lwcUs5OVZ0QU9WczY0TzRPYlg3cEhMVkNwWUhjUm13dkxSN1R2WUFLQkJONThMR1Z6RHVGeitoUWJXZ25jUXlDWkFrK1Zic1BTb3VmOTMyNjFpWmdtZkNwd1JiQXZxbVNxcmlVMlB3aGphb095WXF0SWVnVlhWaVRzbXl0YTZiR3lTcFkzZ3lScnBJeUFlYVdERHh0cHNYd0t5YWxNREtOUDdZQlhNcUVza1VzaTJ1QzhGTkFQeEFLVFZmVDFvNlZ6TTBFMGpGKzFyV2NVdUh2ZHlnN3Znb0ZwbFg4SHB2SHBNQ09NUlVQSHpaa0luc3FsRktOWC9FSU81MkUwU3hTek93b2IyVm1STFc1RDFYSVUwcmJnTTFBeldneUM3ZmU4Rzd4VUFLL3RhRUJhdDdsdXF0eVA3RW1zYUpRT2o1Rittcm5aZkN1WUNmQlVBV3dTaHlkNnBNWS92QUhHMVVxT1lwYkkvZ3k1VDBDTUttK1VPM2dGdUM4NWRnZkRWZWd1UERmSVRySUJMc0xyY2dkaDNDRmdGWmphS0o0SXYzRjhBTkVxdnV4UjF0VktPZ0xvQ2Exanhib0JBa2o2djdqL2ljRmJBN2Y0cmZSblFETFJWaUcxM2kwdnFCUXJZVnFCYkFEWlQwWnBpSG9TenZRcG9wS0lGUzNzRTFIZkJXbEhYZDBIN0xuQXJxdm91Z010bGpIQmdabmgzRW96L0JLakxNTDRaMkFxMCtoRUpyOWphVlVCYnZOekNJVWlyb0M3QVdtbUZ3NG81QUszTXRCNVZ5cFpNU0ZnczA1SnlHVndsd0Jxc0VHQUFhMlpVMUNqVWV4WEdzRTRyS3JpaWxCdkZ6T0tLbzNBdUFyb0U2UUZRVTN1OFlwTlh3UzVrKzFUWnQ1VXJ3b3VONEtpVUV3K2szWldEcDFSWEhOUnFYYjIxVHMzOTk0NXlaU2czVm5aRk5ROUNGM1hlWnlyNURnQlhLaXdDTWEyTXhlVERZWGdQMUZzZjlRTktaYzBrODFSSmszcjZFUTNyQ21CVnlMTDc1RWpaMXBJVkRIb0Z0aU9BSG9CMEJkVFZ5bHFCc0tLS1MrQWVCWEpWTFkrQ1hBU3VHdk8vQXVxN0d1RWpEZkdLZzFvS2Exei9kbW1pOUk5U1VHTmhsMEF0ZnVsSEFhd29Zcm5Ta21OWEFWdUdFaHJFVlh2VUYrQTVDdDJQcU5PakRldHluYTRDbWVVb2xtZVhMTjRBcTdDNVNqMTBRN3lqZ2wrdDZDTnhTUkhtSTVYK0Nwd3JlWUIzUWZkcW5hNHEyMUtkQnVjNEdvWnNuNDlaT09pVmlud0hxSzlXemp2Z2V3ZUVoMkFVNSt2dHhaOUNkOVdxa2g0OVYxOEU1b2o2dlZ5bjBSU3RBeUdJTzVlZFhSS2Q1QjBWR1ZYcTJ5cjN4WXArNVV0K0M0UUo0UDFOMzM5cFFNalJlamo0dmIvRGNyNnJRYzNPLzByam10WnBlWUNCaUNIZkNlbVJiTmhiSy9wTlVQYzN3Zkt5NWYyRDdPbEwzL3VQaHZlL29VNFQwRjhmK1ZOTTJ2eW9pdjBqSytLSFFmZEhxKzBibmN6NG96NzMvK1k2TGJLdzFvLzVCN2VPZjFSbC8wZHU5Qjl0bi85YnZyZi9qK3YwaDZ0dG4ydHAvci80ODE5eTQvenY1MzkxdXZ6emZ3RGlmejZwaFQxTVBnQUFBQUJKUlU1RXJrSmdnZz09Iik7YmFja2dyb3VuZC1zaXplOjEwMCUgMTAwJTtib3JkZXI6bm9uZTtjdXJzb3I6cG9pbnRlcjtkaXJlY3Rpb246bHRyO2hlaWdodDoxMzBweDt0b3VjaC1hY3Rpb246bWFuaXB1bGF0aW9uO3dpZHRoOjEwMCV9LmNvbG9yLXBpY2tlciAuY3AtYWRkLWNvbG9yLWJ1dHRvbi1jbGFzc3tiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O2JvcmRlcjowO2N1cnNvcjpwb2ludGVyO2Rpc3BsYXk6aW5saW5lO21hcmdpbjozcHggLTNweDtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGV9LmNvbG9yLXBpY2tlciAuY3AtYWRkLWNvbG9yLWJ1dHRvbi1jbGFzczpob3Zlcnt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lfS5jb2xvci1waWNrZXIgLmNwLWFkZC1jb2xvci1idXR0b24tY2xhc3M6ZGlzYWJsZWR7Y29sb3I6Izk5OTtjdXJzb3I6bm90LWFsbG93ZWR9LmNvbG9yLXBpY2tlciAuY3AtYWRkLWNvbG9yLWJ1dHRvbi1jbGFzczpkaXNhYmxlZDpob3Zlcnt0ZXh0LWRlY29yYXRpb246bm9uZX0uY29sb3ItcGlja2VyIC5jcC1yZW1vdmUtY29sb3ItYnV0dG9uLWNsYXNze2JhY2tncm91bmQ6I2ZmZjtib3JkZXItcmFkaXVzOjUwJTtib3gtc2hhZG93OjFweCAxcHggNXB4ICMzMzM7Y3Vyc29yOnBvaW50ZXI7ZGlzcGxheTpibG9jaztoZWlnaHQ6MTBweDtwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDotNXB4O3RleHQtYWxpZ246Y2VudGVyO3RvcDotNXB4O3dpZHRoOjEwcHh9LmNvbG9yLXBpY2tlciAuY3AtcmVtb3ZlLWNvbG9yLWJ1dHRvbi1jbGFzczpiZWZvcmV7Ym90dG9tOjMuNXB4O2NvbnRlbnQ6IngiO2Rpc3BsYXk6aW5saW5lLWJsb2NrO2ZvbnQtc2l6ZToxMHB4O3Bvc2l0aW9uOnJlbGF0aXZlfSddLGVuY2Fwc3VsYXRpb246Mn0pLE81LmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6S2h9LHt0eXBlOk9ifSx7dHlwZTp4NX1dLE81LnByb3BEZWNvcmF0b3JzPXtkaWFsb2dFbGVtZW50Olt7dHlwZTphcixhcmdzOlsiZGlhbG9nUG9wdXAiLHtzdGF0aWM6ITB9XX1dLGh1ZVNsaWRlcjpbe3R5cGU6YXIsYXJnczpbImh1ZVNsaWRlciIse3N0YXRpYzohMH1dfV0sYWxwaGFTbGlkZXI6W3t0eXBlOmFyLGFyZ3M6WyJhbHBoYVNsaWRlciIse3N0YXRpYzohMH1dfV0saGFuZGxlRXNjOlt7dHlwZTpUXyxhcmdzOlsiZG9jdW1lbnQ6a2V5dXAuZXNjIixbIiRldmVudCJdXX1dLGhhbmRsZUVudGVyOlt7dHlwZTpUXyxhcmdzOlsiZG9jdW1lbnQ6a2V5dXAuZW50ZXIiLFsiJGV2ZW50Il1dfV19LCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoTzUsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoiY29sb3ItcGlja2VyIix0ZW1wbGF0ZTonPGRpdiAjZGlhbG9nUG9wdXAgY2xhc3M9ImNvbG9yLXBpY2tlciIgW2NsYXNzLm9wZW5dPSJzaG93IiBbc3R5bGUuZGlzcGxheV09IiFzaG93ID8gXCdub25lXCcgOiBcJ2Jsb2NrXCciIFtzdHlsZS52aXNpYmlsaXR5XT0iaGlkZGVuID8gXCdoaWRkZW5cJyA6IFwndmlzaWJsZVwnIiBbc3R5bGUudG9wLnB4XT0idG9wIiBbc3R5bGUubGVmdC5weF09ImxlZnQiIFtzdHlsZS5wb3NpdGlvbl09InBvc2l0aW9uIiBbc3R5bGUuaGVpZ2h0LnB4XT0iY3BIZWlnaHQiIFtzdHlsZS53aWR0aC5weF09ImNwV2lkdGgiIChjbGljayk9IiRldmVudC5zdG9wUHJvcGFnYXRpb24oKSI+XG4gIDxkaXYgKm5nSWY9ImNwRGlhbG9nRGlzcGxheT09XCdwb3B1cFwnIiBjbGFzcz0iYXJyb3cgYXJyb3cte3tjcFVzZVBvc2l0aW9ufX0iIFtzdHlsZS50b3AucHhdPSJhcnJvd1RvcCI+PC9kaXY+XG5cbiAgPGRpdiAqbmdJZj0iKGNwQ29sb3JNb2RlIHx8wqAxKSA9PT0gMSIgY2xhc3M9InNhdHVyYXRpb24tbGlnaHRuZXNzIiBbc2xpZGVyXSBbcmdYXT0iMSIgW3JnWV09IjEiIFtzdHlsZS5iYWNrZ3JvdW5kLWNvbG9yXT0iaHVlU2xpZGVyQ29sb3IiIChuZXdWYWx1ZSk9Im9uQ29sb3JDaGFuZ2UoJGV2ZW50KSIgKGRyYWdTdGFydCk9Im9uRHJhZ1N0YXJ0KFwnc2F0dXJhdGlvbi1saWdodG5lc3NcJykiIChkcmFnRW5kKT0ib25EcmFnRW5kKFwnc2F0dXJhdGlvbi1saWdodG5lc3NcJykiPlxuICAgIDxkaXYgY2xhc3M9ImN1cnNvciIgW3N0eWxlLnRvcC5weF09InNsaWRlcj8udiIgW3N0eWxlLmxlZnQucHhdPSJzbGlkZXI/LnMiPjwvZGl2PlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPSJodWUtYWxwaGEgYm94Ij5cbiAgICA8ZGl2IGNsYXNzPSJsZWZ0Ij5cbiAgICAgIDxkaXYgY2xhc3M9InNlbGVjdGVkLWNvbG9yLWJhY2tncm91bmQiPjwvZGl2PlxuXG4gICAgICA8ZGl2IGNsYXNzPSJzZWxlY3RlZC1jb2xvciIgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPSJzZWxlY3RlZENvbG9yIj48L2Rpdj5cblxuICAgICAgPGJ1dHRvbiAqbmdJZj0iY3BBZGRDb2xvckJ1dHRvbiIgdHlwZT0iYnV0dG9uIiBjbGFzcz0ie3tjcEFkZENvbG9yQnV0dG9uQ2xhc3N9fSIgW2Rpc2FibGVkXT0iY3BQcmVzZXRDb2xvcnMgJiYgY3BQcmVzZXRDb2xvcnMubGVuZ3RoID49IGNwTWF4UHJlc2V0Q29sb3JzTGVuZ3RoIiAoY2xpY2spPSJvbkFkZFByZXNldENvbG9yKCRldmVudCwgc2VsZWN0ZWRDb2xvcikiPlxuICAgICAgICB7e2NwQWRkQ29sb3JCdXR0b25UZXh0fX1cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz0icmlnaHQiPlxuICAgICAgPGRpdiAqbmdJZj0iY3BBbHBoYUNoYW5uZWw9PT1cJ2Rpc2FibGVkXCciIHN0eWxlPSJoZWlnaHQ6IDE2cHg7Ij48L2Rpdj5cblxuICAgICAgPGRpdiAjaHVlU2xpZGVyIGNsYXNzPSJodWUiIFtzbGlkZXJdIFtyZ1hdPSIxIiBbc3R5bGUuZGlzcGxheV09IihjcENvbG9yTW9kZSB8fMKgMSkgPT09IDEgPyBcJ2Jsb2NrXCcgOiBcJ25vbmVcJyIgKG5ld1ZhbHVlKT0ib25IdWVDaGFuZ2UoJGV2ZW50KSIgKGRyYWdTdGFydCk9Im9uRHJhZ1N0YXJ0KFwnaHVlXCcpIiAoZHJhZ0VuZCk9Im9uRHJhZ0VuZChcJ2h1ZVwnKSI+XG4gICAgICAgIDxkaXYgY2xhc3M9ImN1cnNvciIgW3N0eWxlLmxlZnQucHhdPSJzbGlkZXI/LmgiPjwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgI3ZhbHVlU2xpZGVyIGNsYXNzPSJ2YWx1ZSIgW3NsaWRlcl0gW3JnWF09IjEiIFtzdHlsZS5kaXNwbGF5XT0iKGNwQ29sb3JNb2RlIHx8wqAxKSA9PT0gMiA/IFwnYmxvY2tcJzogXCdub25lXCciIChuZXdWYWx1ZSk9Im9uVmFsdWVDaGFuZ2UoJGV2ZW50KSIgKGRyYWdTdGFydCk9Im9uRHJhZ1N0YXJ0KFwndmFsdWVcJykiIChkcmFnRW5kKT0ib25EcmFnRW5kKFwndmFsdWVcJykiPlxuICAgICAgICA8ZGl2IGNsYXNzPSJjdXJzb3IiIFtzdHlsZS5yaWdodC5weF09InNsaWRlcj8udiI+PC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiAjYWxwaGFTbGlkZXIgY2xhc3M9ImFscGhhIiBbc2xpZGVyXSBbcmdYXT0iMSIgW3N0eWxlLmRpc3BsYXldPSJjcEFscGhhQ2hhbm5lbCA9PT0gXCdkaXNhYmxlZFwnID8gXCdub25lXCcgOiBcJ2Jsb2NrXCciIFtzdHlsZS5iYWNrZ3JvdW5kLWNvbG9yXT0iYWxwaGFTbGlkZXJDb2xvciIgKG5ld1ZhbHVlKT0ib25BbHBoYUNoYW5nZSgkZXZlbnQpIiAoZHJhZ1N0YXJ0KT0ib25EcmFnU3RhcnQoXCdhbHBoYVwnKSIgKGRyYWdFbmQpPSJvbkRyYWdFbmQoXCdhbHBoYVwnKSI+XG4gICAgICAgIDxkaXYgY2xhc3M9ImN1cnNvciIgW3N0eWxlLmxlZnQucHhdPSJzbGlkZXI/LmEiPjwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxkaXYgKm5nSWY9IiFjcERpc2FibGVJbnB1dCAmJiAoY3BDb2xvck1vZGUgfHzCoDEpID09PSAxIiBjbGFzcz0iY215ay10ZXh0IiBbc3R5bGUuZGlzcGxheV09ImZvcm1hdCAhPT0gMyA/IFwnbm9uZVwnIDogXCdibG9ja1wnIj5cbiAgICA8ZGl2IGNsYXNzPSJib3giPlxuICAgICAgPGlucHV0IHR5cGU9Im51bWJlciIgcGF0dGVybj0iWzAtOV0qIiBtaW49IjAiIG1heD0iMTAwIiBbdGV4dF0gW3JnXT0iMTAwIiBbdmFsdWVdPSJjbXlrVGV4dD8uYyIgKGtleXVwLmVudGVyKT0ib25BY2NlcHRDb2xvcigkZXZlbnQpIiAobmV3VmFsdWUpPSJvbkN5YW5JbnB1dCgkZXZlbnQpIiAvPlxuICAgICAgPGlucHV0IHR5cGU9Im51bWJlciIgcGF0dGVybj0iWzAtOV0qIiBtaW49IjAiIG1heD0iMTAwIiBbdGV4dF0gW3JnXT0iMTAwIiBbdmFsdWVdPSJjbXlrVGV4dD8ubSIgKGtleXVwLmVudGVyKT0ib25BY2NlcHRDb2xvcigkZXZlbnQpIiAobmV3VmFsdWUpPSJvbk1hZ2VudGFJbnB1dCgkZXZlbnQpIiAvPlxuICAgICAgPGlucHV0IHR5cGU9Im51bWJlciIgcGF0dGVybj0iWzAtOV0qIiBtaW49IjAiIG1heD0iMTAwIiBbdGV4dF0gW3JnXT0iMTAwIiBbdmFsdWVdPSJjbXlrVGV4dD8ueSIgKGtleXVwLmVudGVyKT0ib25BY2NlcHRDb2xvcigkZXZlbnQpIiAobmV3VmFsdWUpPSJvblllbGxvd0lucHV0KCRldmVudCkiIC8+XG4gICAgICA8aW5wdXQgdHlwZT0ibnVtYmVyIiBwYXR0ZXJuPSJbMC05XSoiIG1pbj0iMCIgbWF4PSIxMDAiIFt0ZXh0XSBbcmddPSIxMDAiIFt2YWx1ZV09ImNteWtUZXh0Py5rIiAoa2V5dXAuZW50ZXIpPSJvbkFjY2VwdENvbG9yKCRldmVudCkiIChuZXdWYWx1ZSk9Im9uQmxhY2tJbnB1dCgkZXZlbnQpIiAvPlxuICAgICAgPGlucHV0ICpuZ0lmPSJjcEFscGhhQ2hhbm5lbCE9PVwnZGlzYWJsZWRcJyIgdHlwZT0ibnVtYmVyIiBwYXR0ZXJuPSJbMC05XSsoW1xcLixdWzAtOV17MSwyfSk/IiBtaW49IjAiIG1heD0iMSIgc3RlcD0iMC4xIiBbdGV4dF0gW3JnXT0iMSIgW3ZhbHVlXT0iY215a1RleHQ/LmEiIChrZXl1cC5lbnRlcik9Im9uQWNjZXB0Q29sb3IoJGV2ZW50KSIgKG5ld1ZhbHVlKT0ib25BbHBoYUlucHV0KCRldmVudCkiIC8+XG4gICAgPC9kaXY+XG5cbiAgICAgPGRpdiBjbGFzcz0iYm94Ij5cbiAgICAgIDxkaXY+QzwvZGl2PjxkaXY+TTwvZGl2PjxkaXY+WTwvZGl2PjxkaXY+SzwvZGl2PjxkaXYgKm5nSWY9ImNwQWxwaGFDaGFubmVsIT09XCdkaXNhYmxlZFwnIiA+QTwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8ZGl2ICpuZ0lmPSIhY3BEaXNhYmxlSW5wdXQgJiYgKGNwQ29sb3JNb2RlIHx8wqAxKSA9PT0gMSAiIGNsYXNzPSJoc2xhLXRleHQiIFtzdHlsZS5kaXNwbGF5XT0iZm9ybWF0ICE9PSAyID8gXCdub25lXCcgOiBcJ2Jsb2NrXCciPlxuICAgIDxkaXYgY2xhc3M9ImJveCI+XG4gICAgICA8aW5wdXQgdHlwZT0ibnVtYmVyIiBwYXR0ZXJuPSJbMC05XSoiIG1pbj0iMCIgbWF4PSIzNjAiIFt0ZXh0XSBbcmddPSIzNjAiIFt2YWx1ZV09ImhzbGFUZXh0Py5oIiAoa2V5dXAuZW50ZXIpPSJvbkFjY2VwdENvbG9yKCRldmVudCkiIChuZXdWYWx1ZSk9Im9uSHVlSW5wdXQoJGV2ZW50KSIgLz5cbiAgICAgIDxpbnB1dCB0eXBlPSJudW1iZXIiIHBhdHRlcm49IlswLTldKiIgbWluPSIwIiBtYXg9IjEwMCIgW3RleHRdIFtyZ109IjEwMCIgW3ZhbHVlXT0iaHNsYVRleHQ/LnMiIChrZXl1cC5lbnRlcik9Im9uQWNjZXB0Q29sb3IoJGV2ZW50KSIgKG5ld1ZhbHVlKT0ib25TYXR1cmF0aW9uSW5wdXQoJGV2ZW50KSIgLz5cbiAgICAgIDxpbnB1dCB0eXBlPSJudW1iZXIiIHBhdHRlcm49IlswLTldKiIgbWluPSIwIiBtYXg9IjEwMCIgW3RleHRdIFtyZ109IjEwMCIgW3ZhbHVlXT0iaHNsYVRleHQ/LmwiIChrZXl1cC5lbnRlcik9Im9uQWNjZXB0Q29sb3IoJGV2ZW50KSIgKG5ld1ZhbHVlKT0ib25MaWdodG5lc3NJbnB1dCgkZXZlbnQpIiAvPlxuICAgICAgPGlucHV0ICpuZ0lmPSJjcEFscGhhQ2hhbm5lbCE9PVwnZGlzYWJsZWRcJyIgdHlwZT0ibnVtYmVyIiBwYXR0ZXJuPSJbMC05XSsoW1xcLixdWzAtOV17MSwyfSk/IiBtaW49IjAiIG1heD0iMSIgc3RlcD0iMC4xIiBbdGV4dF0gW3JnXT0iMSIgW3ZhbHVlXT0iaHNsYVRleHQ/LmEiIChrZXl1cC5lbnRlcik9Im9uQWNjZXB0Q29sb3IoJGV2ZW50KSIgKG5ld1ZhbHVlKT0ib25BbHBoYUlucHV0KCRldmVudCkiIC8+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPSJib3giPlxuICAgICAgPGRpdj5IPC9kaXY+PGRpdj5TPC9kaXY+PGRpdj5MPC9kaXY+PGRpdiAqbmdJZj0iY3BBbHBoYUNoYW5uZWwhPT1cJ2Rpc2FibGVkXCciPkE8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPGRpdiAqbmdJZj0iIWNwRGlzYWJsZUlucHV0ICYmIChjcENvbG9yTW9kZSB8fMKgMSkgPT09IDEgIiBbc3R5bGUuZGlzcGxheV09ImZvcm1hdCAhPT0gMSA/IFwnbm9uZVwnIDogXCdibG9ja1wnIiBjbGFzcz0icmdiYS10ZXh0Ij5cbiAgICA8ZGl2IGNsYXNzPSJib3giPlxuICAgICAgPGlucHV0IHR5cGU9Im51bWJlciIgcGF0dGVybj0iWzAtOV0qIiBtaW49IjAiIG1heD0iMjU1IiBbdGV4dF0gW3JnXT0iMjU1IiBbdmFsdWVdPSJyZ2JhVGV4dD8uciIgKGtleXVwLmVudGVyKT0ib25BY2NlcHRDb2xvcigkZXZlbnQpIiAobmV3VmFsdWUpPSJvblJlZElucHV0KCRldmVudCkiIC8+XG4gICAgICA8aW5wdXQgdHlwZT0ibnVtYmVyIiBwYXR0ZXJuPSJbMC05XSoiIG1pbj0iMCIgbWF4PSIyNTUiIFt0ZXh0XSBbcmddPSIyNTUiIFt2YWx1ZV09InJnYmFUZXh0Py5nIiAoa2V5dXAuZW50ZXIpPSJvbkFjY2VwdENvbG9yKCRldmVudCkiIChuZXdWYWx1ZSk9Im9uR3JlZW5JbnB1dCgkZXZlbnQpIiAvPlxuICAgICAgPGlucHV0IHR5cGU9Im51bWJlciIgcGF0dGVybj0iWzAtOV0qIiBtaW49IjAiIG1heD0iMjU1IiBbdGV4dF0gW3JnXT0iMjU1IiBbdmFsdWVdPSJyZ2JhVGV4dD8uYiIgKGtleXVwLmVudGVyKT0ib25BY2NlcHRDb2xvcigkZXZlbnQpIiAobmV3VmFsdWUpPSJvbkJsdWVJbnB1dCgkZXZlbnQpIiAvPlxuICAgICAgPGlucHV0ICpuZ0lmPSJjcEFscGhhQ2hhbm5lbCE9PVwnZGlzYWJsZWRcJyIgdHlwZT0ibnVtYmVyIiBwYXR0ZXJuPSJbMC05XSsoW1xcLixdWzAtOV17MSwyfSk/IiBtaW49IjAiIG1heD0iMSIgc3RlcD0iMC4xIiBbdGV4dF0gW3JnXT0iMSIgW3ZhbHVlXT0icmdiYVRleHQ/LmEiIChrZXl1cC5lbnRlcik9Im9uQWNjZXB0Q29sb3IoJGV2ZW50KSIgKG5ld1ZhbHVlKT0ib25BbHBoYUlucHV0KCRldmVudCkiIC8+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPSJib3giPlxuICAgICAgPGRpdj5SPC9kaXY+PGRpdj5HPC9kaXY+PGRpdj5CPC9kaXY+PGRpdiAqbmdJZj0iY3BBbHBoYUNoYW5uZWwhPT1cJ2Rpc2FibGVkXCciID5BPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxkaXYgKm5nSWY9IiFjcERpc2FibGVJbnB1dCAmJiAoY3BDb2xvck1vZGUgfHzCoDEpID09PSAxIiBjbGFzcz0iaGV4LXRleHQiIFtjbGFzcy5oZXgtYWxwaGFdPSJjcEFscGhhQ2hhbm5lbD09PVwnZm9yY2VkXCciXG4gICAgW3N0eWxlLmRpc3BsYXldPSJmb3JtYXQgIT09IDAgPyBcJ25vbmVcJyA6IFwnYmxvY2tcJyI+XG4gICAgPGRpdiBjbGFzcz0iYm94Ij5cbiAgICAgIDxpbnB1dCBbdGV4dF0gW3ZhbHVlXT0iaGV4VGV4dCIgKGJsdXIpPSJvbkhleElucHV0KG51bGwpIiAoa2V5dXAuZW50ZXIpPSJvbkFjY2VwdENvbG9yKCRldmVudCkiIChuZXdWYWx1ZSk9Im9uSGV4SW5wdXQoJGV2ZW50KSIvPlxuICAgICAgPGlucHV0ICpuZ0lmPSJjcEFscGhhQ2hhbm5lbD09PVwnZm9yY2VkXCciIHR5cGU9Im51bWJlciIgcGF0dGVybj0iWzAtOV0rKFtcXC4sXVswLTldezEsMn0pPyIgbWluPSIwIiBtYXg9IjEiIHN0ZXA9IjAuMSIgW3RleHRdIFtyZ109IjEiIFt2YWx1ZV09ImhleEFscGhhIiAoa2V5dXAuZW50ZXIpPSJvbkFjY2VwdENvbG9yKCRldmVudCkiIChuZXdWYWx1ZSk9Im9uQWxwaGFJbnB1dCgkZXZlbnQpIi8+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPSJib3giPlxuICAgICAgPGRpdj5IZXg8L2Rpdj5cbiAgICAgIDxkaXYgKm5nSWY9ImNwQWxwaGFDaGFubmVsPT09XCdmb3JjZWRcJyI+QTwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8ZGl2ICpuZ0lmPSIhY3BEaXNhYmxlSW5wdXQgJiYgKGNwQ29sb3JNb2RlIHx8wqAxKSA9PT0gMiIgY2xhc3M9InZhbHVlLXRleHQiPlxuICAgIDxkaXYgY2xhc3M9ImJveCI+XG4gICAgICA8aW5wdXQgdHlwZT0ibnVtYmVyIiBwYXR0ZXJuPSJbMC05XSoiIG1pbj0iMCIgbWF4PSIxMDAiIFt0ZXh0XSBbcmddPSIxMDAiIFt2YWx1ZV09ImhzbGFUZXh0Py5sIiAoa2V5dXAuZW50ZXIpPSJvbkFjY2VwdENvbG9yKCRldmVudCkiIChuZXdWYWx1ZSk9Im9uVmFsdWVJbnB1dCgkZXZlbnQpIiAvPlxuICAgICAgPGlucHV0ICpuZ0lmPSJjcEFscGhhQ2hhbm5lbCE9PVwnZGlzYWJsZWRcJyIgdHlwZT0ibnVtYmVyIiBwYXR0ZXJuPSJbMC05XSsoW1xcLixdWzAtOV17MSwyfSk/IiBtaW49IjAiIG1heD0iMSIgc3RlcD0iMC4xIiAgW3RleHRdIFtyZ109IjEiIFt2YWx1ZV09ImhzbGFUZXh0Py5hIiAoa2V5dXAuZW50ZXIpPSJvbkFjY2VwdENvbG9yKCRldmVudCkiIChuZXdWYWx1ZSk9Im9uQWxwaGFJbnB1dCgkZXZlbnQpIiAvPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz0iYm94Ij5cbiAgICAgIDxkaXY+VjwvZGl2PjxkaXY+QTwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8ZGl2ICpuZ0lmPSIhY3BEaXNhYmxlSW5wdXQgJiYgKGNwQ29sb3JNb2RlIHx8wqAxKSA9PT0gMSIgY2xhc3M9InR5cGUtcG9saWN5Ij5cbiAgICA8c3BhbiBjbGFzcz0idHlwZS1wb2xpY3ktYXJyb3ciIChjbGljayk9Im9uRm9ybWF0VG9nZ2xlKC0xKSI+PC9zcGFuPlxuICAgIDxzcGFuIGNsYXNzPSJ0eXBlLXBvbGljeS1hcnJvdyIgKGNsaWNrKT0ib25Gb3JtYXRUb2dnbGUoMSkiPjwvc3Bhbj5cbiAgPC9kaXY+XG5cbiAgPGRpdiAqbmdJZj0iY3BQcmVzZXRDb2xvcnM/Lmxlbmd0aCB8fCBjcEFkZENvbG9yQnV0dG9uIiBjbGFzcz0icHJlc2V0LWFyZWEiPlxuICAgIDxocj5cblxuICAgIDxkaXYgY2xhc3M9InByZXNldC1sYWJlbCI+e3tjcFByZXNldExhYmVsfX08L2Rpdj5cblxuICAgIDxkaXYgKm5nSWY9ImNwUHJlc2V0Q29sb3JzPy5sZW5ndGgiIGNsYXNzPSJ7e2NwUHJlc2V0Q29sb3JzQ2xhc3N9fSI+XG4gICAgICA8ZGl2ICpuZ0Zvcj0ibGV0IGNvbG9yIG9mIGNwUHJlc2V0Q29sb3JzIiBjbGFzcz0icHJlc2V0LWNvbG9yIiBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT0iY29sb3IiIChjbGljayk9InNldENvbG9yRnJvbVN0cmluZyhjb2xvcikiPlxuICAgICAgICA8c3BhbiAqbmdJZj0iY3BBZGRDb2xvckJ1dHRvbiIgY2xhc3M9Int7Y3BSZW1vdmVDb2xvckJ1dHRvbkNsYXNzfX0iIChjbGljayk9Im9uUmVtb3ZlUHJlc2V0Q29sb3IoJGV2ZW50LCBjb2xvcikiPjwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiAqbmdJZj0iIWNwUHJlc2V0Q29sb3JzPy5sZW5ndGggJiYgY3BBZGRDb2xvckJ1dHRvbiIgY2xhc3M9Int7Y3BQcmVzZXRFbXB0eU1lc3NhZ2VDbGFzc319Ij57e2NwUHJlc2V0RW1wdHlNZXNzYWdlfX08L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPGRpdiAqbmdJZj0iY3BPS0J1dHRvbiB8fCBjcENhbmNlbEJ1dHRvbiIgY2xhc3M9ImJ1dHRvbi1hcmVhIj5cbiAgICA8YnV0dG9uICpuZ0lmPSJjcENhbmNlbEJ1dHRvbiIgdHlwZT0iYnV0dG9uIiBjbGFzcz0ie3tjcENhbmNlbEJ1dHRvbkNsYXNzfX0iIChjbGljayk9Im9uQ2FuY2VsQ29sb3IoJGV2ZW50KSI+e3tjcENhbmNlbEJ1dHRvblRleHR9fTwvYnV0dG9uPlxuXG4gICAgPGJ1dHRvbiAqbmdJZj0iY3BPS0J1dHRvbiIgdHlwZT0iYnV0dG9uIiBjbGFzcz0ie3tjcE9LQnV0dG9uQ2xhc3N9fSIgKGNsaWNrKT0ib25BY2NlcHRDb2xvcigkZXZlbnQpIj57e2NwT0tCdXR0b25UZXh0fX08L2J1dHRvbj5cbiAgPC9kaXY+XG48L2Rpdj5cbicsZW5jYXBzdWxhdGlvbjpXbi5Ob25lLHN0eWxlczpbJy5jb2xvci1waWNrZXJ7LW1vei11c2VyLXNlbGVjdDpub25lOy1tcy11c2VyLXNlbGVjdDpub25lOy13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Ym9yZGVyOjFweCBzb2xpZCAjNzc3O2N1cnNvcjpkZWZhdWx0O2hlaWdodDphdXRvO3Bvc2l0aW9uOmFic29sdXRlO3VzZXItc2VsZWN0Om5vbmU7d2lkdGg6MjMwcHg7ei1pbmRleDoxMDAwfS5jb2xvci1waWNrZXIgKntib3gtc2l6aW5nOmJvcmRlci1ib3g7Zm9udC1zaXplOjExcHg7bWFyZ2luOjB9LmNvbG9yLXBpY2tlciBpbnB1dHtjb2xvcjojMDAwO2ZvbnQtc2l6ZToxM3B4O2hlaWdodDoyNnB4O21pbi13aWR0aDowO3RleHQtYWxpZ246Y2VudGVyO3dpZHRoOjB9LmNvbG9yLXBpY2tlciBpbnB1dDotbW96LXN1Ym1pdC1pbnZhbGlkLC5jb2xvci1waWNrZXIgaW5wdXQ6LW1vei11aS1pbnZhbGlkLC5jb2xvci1waWNrZXIgaW5wdXQ6aW52YWxpZHtib3gtc2hhZG93Om5vbmV9LmNvbG9yLXBpY2tlciBpbnB1dDo6LXdlYmtpdC1pbm5lci1zcGluLWJ1dHRvbiwuY29sb3ItcGlja2VyIGlucHV0Ojotd2Via2l0LW91dGVyLXNwaW4tYnV0dG9uey13ZWJraXQtYXBwZWFyYW5jZTpub25lO21hcmdpbjowfS5jb2xvci1waWNrZXIgLmFycm93e2JvcmRlci1zdHlsZTpzb2xpZDtoZWlnaHQ6MDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDowO3otaW5kZXg6OTk5OTk5fS5jb2xvci1waWNrZXIgLmFycm93LmFycm93LXRvcHtib3JkZXItY29sb3I6Izc3NyB0cmFuc3BhcmVudCB0cmFuc3BhcmVudDtib3JkZXItd2lkdGg6MTBweCA1cHg7bGVmdDo4cHh9LmNvbG9yLXBpY2tlciAuYXJyb3cuYXJyb3ctYm90dG9te2JvcmRlci1jb2xvcjp0cmFuc3BhcmVudCB0cmFuc3BhcmVudCAjNzc3O2JvcmRlci13aWR0aDoxMHB4IDVweDtsZWZ0OjhweDt0b3A6LTIwcHh9LmNvbG9yLXBpY2tlciAuYXJyb3cuYXJyb3ctbGVmdC10b3AsLmNvbG9yLXBpY2tlciAuYXJyb3cuYXJyb3ctdG9wLWxlZnR7Ym9yZGVyLWNvbG9yOnRyYW5zcGFyZW50IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50ICM3Nzc7Ym9yZGVyLXdpZHRoOjVweCAxMHB4O2JvdHRvbTo4cHg7cmlnaHQ6LTIxcHh9LmNvbG9yLXBpY2tlciAuYXJyb3cuYXJyb3ctcmlnaHQtdG9wLC5jb2xvci1waWNrZXIgLmFycm93LmFycm93LXRvcC1yaWdodHtib3JkZXItY29sb3I6dHJhbnNwYXJlbnQgIzc3NyB0cmFuc3BhcmVudCB0cmFuc3BhcmVudDtib3JkZXItd2lkdGg6NXB4IDEwcHg7Ym90dG9tOjhweDtsZWZ0Oi0yMHB4fS5jb2xvci1waWNrZXIgLmFycm93LmFycm93LWJvdHRvbS1sZWZ0LC5jb2xvci1waWNrZXIgLmFycm93LmFycm93LWxlZnQsLmNvbG9yLXBpY2tlciAuYXJyb3cuYXJyb3ctbGVmdC1ib3R0b217Ym9yZGVyLWNvbG9yOnRyYW5zcGFyZW50IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50ICM3Nzc7Ym9yZGVyLXdpZHRoOjVweCAxMHB4O3JpZ2h0Oi0yMXB4O3RvcDo4cHh9LmNvbG9yLXBpY2tlciAuYXJyb3cuYXJyb3ctYm90dG9tLXJpZ2h0LC5jb2xvci1waWNrZXIgLmFycm93LmFycm93LXJpZ2h0LC5jb2xvci1waWNrZXIgLmFycm93LmFycm93LXJpZ2h0LWJvdHRvbXtib3JkZXItY29sb3I6dHJhbnNwYXJlbnQgIzc3NyB0cmFuc3BhcmVudCB0cmFuc3BhcmVudDtib3JkZXItd2lkdGg6NXB4IDEwcHg7bGVmdDotMjBweDt0b3A6OHB4fS5jb2xvci1waWNrZXIgLmN1cnNvcntib3JkZXI6MnB4IHNvbGlkICMyMjI7Ym9yZGVyLXJhZGl1czo1MCU7Y3Vyc29yOmRlZmF1bHQ7aGVpZ2h0OjE2cHg7cG9zaXRpb246cmVsYXRpdmU7d2lkdGg6MTZweH0uY29sb3ItcGlja2VyIC5ib3h7ZGlzcGxheTpmbGV4O3BhZGRpbmc6NHB4IDhweH0uY29sb3ItcGlja2VyIC5sZWZ0e3BhZGRpbmc6MTZweCA4cHg7cG9zaXRpb246cmVsYXRpdmV9LmNvbG9yLXBpY2tlciAucmlnaHR7ZmxleDoxIDEgYXV0bztwYWRkaW5nOjEycHggOHB4fS5jb2xvci1waWNrZXIgLmJ1dHRvbi1hcmVhe3BhZGRpbmc6MCAxNnB4IDE2cHg7dGV4dC1hbGlnbjpyaWdodH0uY29sb3ItcGlja2VyIC5idXR0b24tYXJlYSBidXR0b257bWFyZ2luLWxlZnQ6OHB4fS5jb2xvci1waWNrZXIgLnByZXNldC1hcmVhe3BhZGRpbmc6NHB4IDE1cHh9LmNvbG9yLXBpY2tlciAucHJlc2V0LWFyZWEgLnByZXNldC1sYWJlbHtjb2xvcjojNTU1O2ZvbnQtc2l6ZToxMXB4O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjRweDt0ZXh0LWFsaWduOmxlZnQ7dGV4dC1vdmVyZmxvdzplbGxpcHNpczt3aGl0ZS1zcGFjZTpub3dyYXA7d2lkdGg6MTAwJX0uY29sb3ItcGlja2VyIC5wcmVzZXQtYXJlYSAucHJlc2V0LWNvbG9ye2JvcmRlcjoxcHggc29saWQgI2E5YTlhOTtib3JkZXItcmFkaXVzOjI1JTtjdXJzb3I6cG9pbnRlcjtkaXNwbGF5OmlubGluZS1ibG9jaztoZWlnaHQ6MThweDttYXJnaW46NHB4IDZweCA4cHg7cG9zaXRpb246cmVsYXRpdmU7d2lkdGg6MThweH0uY29sb3ItcGlja2VyIC5wcmVzZXQtYXJlYSAucHJlc2V0LWVtcHR5LW1lc3NhZ2V7Zm9udC1zdHlsZTppdGFsaWM7bWFyZ2luLWJvdHRvbTo4cHg7bWFyZ2luLXRvcDo0cHg7bWluLWhlaWdodDoxOHB4O3RleHQtYWxpZ246Y2VudGVyfS5jb2xvci1waWNrZXIgLmhleC10ZXh0e2ZvbnQtc2l6ZToxMXB4O3BhZGRpbmc6NHB4IDhweDt3aWR0aDoxMDAlfS5jb2xvci1waWNrZXIgLmhleC10ZXh0IC5ib3h7cGFkZGluZzowIDI0cHggOHB4IDhweH0uY29sb3ItcGlja2VyIC5oZXgtdGV4dCAuYm94IGRpdntjbGVhcjpsZWZ0O2NvbG9yOiM1NTU7ZmxleDoxIDEgYXV0bztmbG9hdDpsZWZ0O3RleHQtYWxpZ246Y2VudGVyfS5jb2xvci1waWNrZXIgLmhleC10ZXh0IC5ib3ggaW5wdXR7Ym9yZGVyOjFweCBzb2xpZCAjYTlhOWE5O2ZsZXg6MSAxIGF1dG87cGFkZGluZzoxcHh9LmNvbG9yLXBpY2tlciAuaGV4LWFscGhhIC5ib3ggZGl2OmZpcnN0LWNoaWxkLC5jb2xvci1waWNrZXIgLmhleC1hbHBoYSAuYm94IGlucHV0OmZpcnN0LWNoaWxke2ZsZXgtZ3JvdzozO21hcmdpbi1yaWdodDo4cHh9LmNvbG9yLXBpY2tlciAuY215ay10ZXh0LC5jb2xvci1waWNrZXIgLmhzbGEtdGV4dCwuY29sb3ItcGlja2VyIC5yZ2JhLXRleHQsLmNvbG9yLXBpY2tlciAudmFsdWUtdGV4dHtmb250LXNpemU6MTFweDtwYWRkaW5nOjRweCA4cHg7d2lkdGg6MTAwJX0uY29sb3ItcGlja2VyIC5jbXlrLXRleHQgLmJveCwuY29sb3ItcGlja2VyIC5oc2xhLXRleHQgLmJveCwuY29sb3ItcGlja2VyIC5yZ2JhLXRleHQgLmJveHtwYWRkaW5nOjAgMjRweCA4cHggOHB4fS5jb2xvci1waWNrZXIgLnZhbHVlLXRleHQgLmJveHtwYWRkaW5nOjAgOHB4IDhweH0uY29sb3ItcGlja2VyIC5jbXlrLXRleHQgLmJveCBkaXYsLmNvbG9yLXBpY2tlciAuaHNsYS10ZXh0IC5ib3ggZGl2LC5jb2xvci1waWNrZXIgLnJnYmEtdGV4dCAuYm94IGRpdiwuY29sb3ItcGlja2VyIC52YWx1ZS10ZXh0IC5ib3ggZGl2e2NvbG9yOiM1NTU7ZmxleDoxIDEgYXV0bzttYXJnaW4tcmlnaHQ6OHB4O3RleHQtYWxpZ246Y2VudGVyfS5jb2xvci1waWNrZXIgLmNteWstdGV4dCAuYm94IGRpdjpsYXN0LWNoaWxkLC5jb2xvci1waWNrZXIgLmhzbGEtdGV4dCAuYm94IGRpdjpsYXN0LWNoaWxkLC5jb2xvci1waWNrZXIgLnJnYmEtdGV4dCAuYm94IGRpdjpsYXN0LWNoaWxkLC5jb2xvci1waWNrZXIgLnZhbHVlLXRleHQgLmJveCBkaXY6bGFzdC1jaGlsZHttYXJnaW4tcmlnaHQ6MH0uY29sb3ItcGlja2VyIC5jbXlrLXRleHQgLmJveCBpbnB1dCwuY29sb3ItcGlja2VyIC5oc2xhLXRleHQgLmJveCBpbnB1dCwuY29sb3ItcGlja2VyIC5yZ2JhLXRleHQgLmJveCBpbnB1dCwuY29sb3ItcGlja2VyIC52YWx1ZS10ZXh0IC5ib3ggaW5wdXR7Ym9yZGVyOjFweCBzb2xpZCAjYTlhOWE5O2ZsZXg6MTtmbG9hdDpsZWZ0O21hcmdpbjowIDhweCAwIDA7cGFkZGluZzoxcHh9LmNvbG9yLXBpY2tlciAuY215ay10ZXh0IC5ib3ggaW5wdXQ6bGFzdC1jaGlsZCwuY29sb3ItcGlja2VyIC5oc2xhLXRleHQgLmJveCBpbnB1dDpsYXN0LWNoaWxkLC5jb2xvci1waWNrZXIgLnJnYmEtdGV4dCAuYm94IGlucHV0Omxhc3QtY2hpbGQsLmNvbG9yLXBpY2tlciAudmFsdWUtdGV4dCAuYm94IGlucHV0Omxhc3QtY2hpbGR7bWFyZ2luLXJpZ2h0OjB9LmNvbG9yLXBpY2tlciAuaHVlLWFscGhhe2FsaWduLWl0ZW1zOmNlbnRlcjttYXJnaW4tYm90dG9tOjNweH0uY29sb3ItcGlja2VyIC5odWV7YmFja2dyb3VuZC1pbWFnZTp1cmwoImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBSllBQUFBUUNBWUFBQUQwNklZbkFBQUFCbUpMUjBRQS93RC9BUCtndmFlVEFBQUFDWEJJV1hNQUFBc1RBQUFMRXdFQW1wd1lBQUFBQjNSSlRVVUg0QUlXRHdrVUZXYkNDQUFBQUZ4SlJFRlVhTjd0MGtFS2cwQVFBTUUyeDgzL24ycXU1cUNnRDFpRGhDb1lkcG5iUUM5YmJZMXFWTy9qdmM2azNhZDkxczcvN0YxL2NzZ1BydWp1UTE3QkRZU0ZzQkFXd2dKaElTeUVCY0pDV0FnTGhJV3dFQllJaTJmN0FyLzFUQ2dGSDJYOUFBQUFBRWxGVGtTdVFtQ0MiKTtkaXJlY3Rpb246bHRyfS5jb2xvci1waWNrZXIgLmh1ZSwuY29sb3ItcGlja2VyIC52YWx1ZXtiYWNrZ3JvdW5kLXNpemU6MTAwJSAxMDAlO2JvcmRlcjpub25lO2N1cnNvcjpwb2ludGVyO2hlaWdodDoxNnB4O21hcmdpbi1ib3R0b206MTZweDt3aWR0aDoxMDAlfS5jb2xvci1waWNrZXIgLnZhbHVle2JhY2tncm91bmQtaW1hZ2U6dXJsKCJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUpZQUFBQVFDQVlBQUFEMDZJWW5BQUFDVGtsRVFWUjQydTNTWVVjckFCaEE0VTJTa21SSk1tV1NKa2xLSmlXWlpwS1VKSnNrS1VtYVRGSW1LWk9Vek15U3BHUm1saVJOSmlsSlNwS1NKRXRtU3BJcG1XbVNkTzczNi82RCt4N09QM2dVQ29XQ3YxY3FsU1FsSlpHY25FeEtTZ3FwcWFta3BhV1JucDVPUmtZR21abVpxRlFxc3JLeXlNN09KaWNuaDl6Y1hOUnFOWGw1ZWVUbjU2UFJhQ2dvS0tDd3NKQ2lvaUswV2kzRnhjV1VsSlJRV2xwS1dWa1o1ZVhsVkZSVVVGbFppVTZubzZxcWl1cnFhbXBxYXFpdHJhV3VyZzY5WGs5OWZUMEdnd0dqMFVoRFF3T05qWTAwTlRYUjNOeE1TMHNMcmEydHRMVzEwZDdlanNsa3dtdzIwOUhSUVdkbkoxMWRYWFIzZDlQVDAwTnZieTk5ZlgzMDkvY3pNRERBNE9BZ0ZvdUZvYUVockZZcnc4UERqSXlNTURvNnl0allHRGFiamZIeGNTWW1KcGljbkdScWFncTczYzcwOURRek16UE16czR5TnpmSC9QdzhEb2NEcDlPSnkrWEM3WGF6c0xEQTR1SWlTMHRMTEM4dnM3S3l3dXJxS210cmEzZzhIcnhlTHo2ZkQ3L2Z6L3I2T2hzYkcyeHVicksxdGNYMjlqYUJRSUNkblIyQ3dTQzd1N3ZzN2UyeHY3L1B3Y0VCaDRlSEhCMGRjWHg4ek1uSkNhZW5wNXlkblhGK2ZzN0Z4UVdYbDVkY1hWMXhmWDNOemMwTnQ3ZTMzTjNkRVFxRnVMKy81K0hoZ1hBNFRDUVM0Zkh4a2Flbko1NmZuM2w1ZWVIMTlaVm9OTXJiMnh2djcrOThmSHdRaThXSXgrTjhmbjZTU0NUNCt2cmkrL3VibjU4ZmZuOS8rVmNLZ1NXd0JKYkFFbGdDUzJBSkxJRWxzQVNXd0JKWUFrdGdDU3lCSmJBRWxzQVNXQUpMWUFrc2dTV3dCSmJBRWxnQ1MyQUpMSUVsc1A0L1dIOEFtSjVaNmpIUzRoOEFBQUFBU1VWT1JLNUNZSUk9Iik7ZGlyZWN0aW9uOnJ0bH0uY29sb3ItcGlja2VyIC5hbHBoYXtiYWNrZ3JvdW5kLWltYWdlOnVybCgiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFKWUFBQUFRQ0FZQUFBRDA2SVluQUFBQUJtSkxSMFFBL3dEL0FQK2d2YWVUQUFBQUNYQklXWE1BQUFzVEFBQUxFd0VBbXB3WUFBQUFCM1JKVFVVSDRBSVdEd1lRbFpNYTNnQUFBV1ZKUkVGVWFON3RtRUdPNmpBUVJDc09BckhnQnB5QUpZR2pjR29jeEFtNEEySUhwbW9XRTBlQkgrZXptRmxOdlUwNnNoSjNXNlZFZWxXTVVRQUlJRjlmNnFacGltc0ExTFl0UzJ1RjUxL3UyN1lWQUZaVlJVa0VvR0hkUFYvc0ljYklFSUlrVWRJLzlYYTduZXl2NjErU1dGVVZBVkNTY3QwMFRXbjJmdjZ1MytFY2ZkM3RYenkvMCtuRVV1K1NQam8va3F6cm1pUXBTY042djk4WGV3ZkE4L2xNa2lMSjJXeEdTVW9wY1Q2Zk02VTBOWDkvZnJmYmpldjFXdGZybFpmTGhZZkRRUUhHL0FJT2xuR3dqSU5sSEN4akhDempZSm0vVEpXZEN3cXVKWHNlRkZ6R3dETk5laUtNT0pUTzh4UWREUWFlQjI5K0s5ZWZlTGFCbzlKN3ZkdnRKajFSakZGamZpdjdxdjk1dGp4LzdsZVNRZ2g5M2UxZmZNZUlwNk8rWVFqaG8vTjc5MXQxWFZPU1NJN04vL0srNC9Hb3hXTEJ4K1BCNS9PcDVYTEorLzNPbEpKV3F4VTNtODNvdnY1aUdmOEtqWU5sSEN4akhDempZQmtIeTVnZjVndXN2UVU3VTM3alRBQUFBQUJKUlU1RXJrSmdnZz09Iik7YmFja2dyb3VuZC1zaXplOjEwMCUgMTAwJTtib3JkZXI6bm9uZTtjdXJzb3I6cG9pbnRlcjtkaXJlY3Rpb246bHRyO2hlaWdodDoxNnB4O3dpZHRoOjEwMCV9LmNvbG9yLXBpY2tlciAudHlwZS1wb2xpY3l7YmFja2dyb3VuZC1pbWFnZTp1cmwoImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQklBQUFBZ0NBWUFBQUFmZkNqeEFBQUFCSE5DU1ZRSUNBZ0lmQWhraUFBQUFBbHdTRmx6QUFBQ2V3QUFBbnNCMDFDTzNBQUFBQmwwUlZoMFUyOW1kSGRoY21VQWQzZDNMbWx1YTNOallYQmxMbTl5WjV2dVBCb0FBQUlBU1VSQlZFaUo3Wlk5YXhSUkZJYWZzeE1TdHJMUUpwQWdwQkZoaStDOXcxWVNvMDBJNlJaL2c5dlpwQmYvUU9yNEd5UmdrU0tOU3JBYWRzWnFRR3dDa3VBV3lSWkpzeVN3dmhaN04vdmh6cmdiTEgzTGQ4NTk3amx6ejUwekpva3l4WEg4RHFEVmFyMHFpNnY4QmJJdHFTR3BFY2Z4ZGxtc0ZXWGt2WDhBZkFWV2czVUtQRW5UOUdLdWpNenNBRmdac1ZhQ04xVlRRZDc3WFVucmdFMWt2KzY5MzUyNjhXUnB6cm5IWnZZUldDN1l2QzNwUlpabDN3b3pxdFZxaXlIOUlnakFzcGtkMUdxMXhVSlF0VnJkQjlaS0lBT3RoZGcvUWM2NUxVazd3TklNb0NWSk84NjVyWUZoa3FqWDYvZDd2VjRHUEp3Qk1xb2ZVUlM1SkVrNkZZQmVyL2VlWWIvTW85V3dGblBPdlFiZUF2ZnVBQUs0Qk40c0FKdEFHL2dKSUVsbU51aUp5YmEzRUdObVppUGVadUVWbVZlbGwvWS82TitDekRuM0FYaEVPT283SHYvM0JlQXo4SXpRa01QbkpidVB4MXdDK3lZSjcvMG5ZSVA1Uy8wRkhLZHArcndDRUVYUlMvcmY1SGwxR3RiMk0waVNwQ09wQ1p6UEFUbVgxRXlTcEhNTEFzaXk3TWpNRG9IckdTRFhabmFZWmRuUndCaDdKOTF1dHdtY3pBQTZDYkczR2dQbGVYNGpxVUgvYTFDa3RxUkdudWMzaFNDQU1CMzJnS3Nwa0N0Z2IzS0NRTW1ramVQNFdOSlRock5OWnZhbDFXcHRUSXN2N0p0UTR0bUlkUmE4cVNvRXBXbDZZV1pOb0FOMHpLeFpOUGVocExTQlp2MnQrUTBDSjlsTG5BUlFMQUFBQUFCSlJVNUVya0pnZ2c9PSIpO2JhY2tncm91bmQtcG9zaXRpb246NTAlO2JhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDtiYWNrZ3JvdW5kLXNpemU6OHB4IDE2cHg7aGVpZ2h0OjI0cHg7cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6MTJweDt0b3A6MjE4cHg7d2lkdGg6MTZweH0uY29sb3ItcGlja2VyIC50eXBlLXBvbGljeSAudHlwZS1wb2xpY3ktYXJyb3d7ZGlzcGxheTpibG9jaztoZWlnaHQ6NTAlO3dpZHRoOjEwMCV9LmNvbG9yLXBpY2tlciAuc2VsZWN0ZWQtY29sb3J7Ym9yZGVyOjFweCBzb2xpZCAjYTlhOWE5O2JvcmRlci1yYWRpdXM6NTAlO2hlaWdodDo0MHB4O2xlZnQ6OHB4O3Bvc2l0aW9uOmFic29sdXRlO3RvcDoxNnB4O3dpZHRoOjQwcHh9LmNvbG9yLXBpY2tlciAuc2VsZWN0ZWQtY29sb3ItYmFja2dyb3VuZHtiYWNrZ3JvdW5kLWltYWdlOnVybCgiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDZ0FBQUFvQ0FZQUFBQ00vcmh0QUFBQWgwbEVRVlJZUisyVzBRbEFNUWdENjB6ZGZ3T2RxYThUbUkvd1FNcjVLMEk1YlpMSXpMT2EybnQzN1ZWVmJkK2REeDVvYmdDQzNLQkx3SjJmZjRQblZpZGtmK3VjSWh3ODBIUWFDTG8zRE1IM0NSSzNpRnNtQVdWbDZoUE5Ed3Q4RXZORTVxK1l1RVhjTWdrb25WTTZTZHlDb0V2QW5aOHYxSGp4ODE3TWlsbXhTVUI1cmRMSkR5Y1pnVUFaVWNoL0FBQUFBRWxGVGtTdVFtQ0MiKTtib3JkZXItcmFkaXVzOjUwJTtoZWlnaHQ6NDBweDt3aWR0aDo0MHB4fS5jb2xvci1waWNrZXIgLnNhdHVyYXRpb24tbGlnaHRuZXNze2JhY2tncm91bmQtaW1hZ2U6dXJsKCJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQU9ZQUFBQ0NDQVlBQUFCU0Q3VDNBQUFBQm1KTFIwUUEvd0QvQVArZ3ZhZVRBQUFBQ1hCSVdYTUFBQXNUQUFBTEV3RUFtcHdZQUFBQUIzUkpUVVVINEFJV0R3a3NQV1I2bGdBQUlBQkpSRUZVZU5ydG5WdVQ0N2dSckFITitQLy9Pci82MVk1d09OWjdtWjF1M1hBZUxNakpaR1pWZ2RLc2ZjNXhSM1MwUklJVVcrQ0h6Q3BjMk1jWW83WEd2M2V4N1VpWmQ1N3JqeXp6dit2KzMzWC9SLyszci9mN3ZSMzg2WStUdktOY2Yvd2RoVExQY3Y5cVUyd1pkNzR1dGgwdDE4MjFqa0laTFBjc0kvNm5XYTRYdnV0cXVVMFo4NW1ueDgwUy9aemdwbkxuT3RITnQ3L29meDFUS1hjU056Ti83cWJNUTNqdTdyTlFtTVlZZC80czJqOWFhK1ArZ0dhTWNacmIxTS90ZHJ2ZjcvZDJ2OTlQOS90OTNPLzNjYnZkeHUxMkc5ZnJkVnd1bDNFK244Yy8vL25QKzIrLy9YYjY2YWVmeGwvLyt0Zng1ei8vMllLNUFsMnJndmY0VXNicGRHckI1MmJBdkFyWHB1emptaXFBVlNHejVlRG1HWVh6aGJBWm1Dcm5temRkcFVVKzhZMWRBT1llWEN0RFV3VndWN1lDR0g2dUFteU1jWjlsNXZrVWFCUEdNVVo3L0o1dy83OTIvZnZ2OVhxOTMyNjNkci9mVHhQRUNlTUU4bks1ak0vUHovSFRUei9kdjMzN2R2cmxsMS9HUC83eGovRzN2LzF0L09VdmZ3a1Zzd29uZ2pkT3A5UHpIM1UzRDN6bVdHblpWWG40akNxczd3QzJCS1A0Lzh0QXprWnNvV3g2WHJxZUhaeW12cDRBQkNCSmhUUXdLZkRUOGd6clpDSXFpNUFoaUFDakJmRUIyclA4L1g2M01NN2Y2L1Y2djkvdjdYYTdiWUM4M1c3amNybHNWSElxNWZmdjMwKy8vZmJiK09XWFg4WlBQLzAwL3Y3M3Y0K2ZmLzc1SlN2YmV1K2JMMldNTWFGYkFscEJOTTg1UVgrY3Q2cW9TcWtQQXd1UWxCVktxR05GU1VPQUEzQm11N2dDNWhOT2QxNW5Td3ZBT1VXN0M0Z2lVQ1Y4U2duNUw5aE5GSXFUc3AwR3hJMHlzaW95akFqa1kvdEdKVkVweitmeitPV1hYKzdmdjM4Ly9mNzc3K1BidDIvajExOS9IVC8vL1BQNDlkZGZ4OGZIUndybVRqVjc3OUVYdTJweDJ4aGp3dGRKWlFjQVdRSVBMUElTc01KYVN3aUQ4Z3pJS3J3U3lBVEU1ajVuQWJSNWMxZEJVd0Jsc0VXVzBoNkxxaVlzcUZQQVF4Q3lSWjN3T1NBUnhtbFhNWDVrNjRwUWZ2djI3Zjc1K2RrK1BqNU9IeDhmNC92MzcrUGJ0Mi9qdDk5K0c5KytmUnNmSHgvamNybVVGTE8zMWdZRFdibHhSSXMvVHFmVDdvdXN4SnNBeFhBMkdjN1RBOVhkZ2Zkb0hiRnNqNzZYMisxV0FyZ0kxYWdlR3dBM3F1cHFvSHNtY2JJNkZ1OTNxdWdnRmE5ZDdMZUR0Z0tmQUZIQkorTkVCeUlrY0o1S2VydmRUbWhoR2NnSkpTWjV2bi8vZmorZnorMThQcDgrUHovSDUrZm5tR0QrL3Z2djQvdjM3K1BqNDJOOGZuNk8yKzFXczdKampQNndyYU1JNUU0Ulo4eDJ2VjVUU3drcXVvdFY3L2Q3VHo2SEZXc0QvcU5jZHcwQ1EzcS8zMjFjNjg2VHdEVklkYnV5NzN6TmxkaFNIYjhJMmtsWnpubStJbkJTNFU2bjAzMDJhQkZzTGhIREFLSlZKVmdsZkk5amh2dTUzVzUzc0xBTllOeEFpREE2TUNlVUh4OGY5K3YxMmk2WFM3dGNMcWNaVzU3UDV5ZVk4L2Z6ODNPY3orZm5zU21ZVXlrbldFRzg1V0JzdDlzdHpTTHlNZGZyOVFpMDhpWTE1VVowTGxER0xoUjNvNXpLMmo3T1BVVEQwRStuVTN0azdYYi8xNk5GYmhsb0FNdVkxempMVU9PM0JLZUlEZStaOHMzL0o0Z0ZvNFRNNWpQbXVSZzI4Zm9VS0tWU3dvMTZUZ0E1bnB5d2NXTEhnWWwvUHo4LzczLzYwNS9hYjcvOTFtNjNXN3RjTGllMHNaajRtYW81Z1R5Zno4OEUwZjErajhFY1l6d1RQRUcyY3FqeWZITkYwTThmdXFFaWFPVm5SelpaUU5oNWZ3UXlIZy9IREdmSm84OVExemIvcXV1NVhDNjc3M0kyWEtmVHFkL3Y5K2Qzd3VxV3ZhL1lUZFVkRVYzZmhJdi9WaXlwczZZRTN4M3I0M0s1YkpRUzY2emF4VkdGc3ZkKy8vajRhRisvZm0zZnYzOXZ0OXV0ZmYzNnRmMysrKy90ZHJ1ZHZuMzdadU5MQmFhQ01nVXpDK3JaUmlGb3d4VXVKSThZTXFjQ3A5T3BxNXZhZ2FZVTZsR0pBMVhRcWVqY2h3NkNqMEd3NW5ZQnJHdzAxQTJPMjA2bjA0QkdvdU5OeVRmcC9Gd0VsaFVleTZuWHJJS3c3UVFXZGR4dU4ybGRMNWZMODM5Z1NQRjhhaHUvSnZCTzQ4Q1BTdXFNZjhWcDkvUDUzTDU4K2RMdTkzczduOC90ZnI4LzM5L3Y5L2I1K1RraFBKM1A1Nm1RNDM2L2orL2Z2Ky9pU2diemVyMCtBWngvNSs4OGJ2Nk9NZGE2UzV6NmtkMjFmWUM5ZHh2N2NJSkoyZDlBT1MzMGZQTXp5SGlUTThCNERGNlhVbFlIcDRLUVczVysxdDc3TU5CMXZHSHhXcTdYYTd2Zjc4K3k1L041QStIMWV0Mjl4dVA1ZGJZdHlhUnU0QWtzYlBxNjkzNmZqUnpYUnhCYlByL2IrYjE4K2ZLbGpUSGFCQkJmbjgvbjAvMStIMSsrZkJubjh6bTBzQjhmSDV1NGNyNUd1QmhNVmswRUVuOVJzY3RnVmhNK2l4bEp0TUEyM1I4QjZ5eXNBc3RCT2dGWElLS0NNSWdUb01xTkV1MmZZTUg3enRjNzMyZFFLa0NqMXl0QVp0WTBLeDhwSXI4R0dKK0FUM1YrMkhpcmhsKytmQm1YeTJXejczdytiMTdQOHArZm44L3RVd0dWbGVWa1R5VWI2OERrZmF5V1k0enhOUmloVTRFcExKUFpWcksrdTdKNC9tZ2ZLcWVMVzlYMlJFV2xJdEwxZGl5bmJERGIzK2pYZ1lqUXFuMHJyeFdjK05rSUxQN0Y3eEliTXZ4N3ZWNTN4NDB4bmxiV0pGMTJaU2FnL04wcFc2dCtaem1PTXpIamFqS3dEZm9uZDc4ellUZGZxMTh1cDk3enIycTh2M0lpb0JwclJ0QmwwRVo5b2c1V0JSR09kT0hqSWpYRjdVb3RGYmdPV25YeklKeXpZdmpHNUlZZ3NtTU94SGt6OE9zTVNyVk5XZXE1VDhEYU9jYkV2MU9kNXJiczlhTzdZdk1ldDYzRWtGKytmTUV4cStNUmw0L0w1YkxaTi8rZXorZm5aNkthenVNcVhTUVZPNXNwSlhmbEhBSXplcy94SnNlY2tSSmlETW9nOWQ2VmZScnFYTXI2S3BWVjI3alJ3SmFjR292T0FNMXpNZFFNbndLMUF1Yks2M2tkQ0NodkkxQzdnMHo5bmYvRCtYemUyVmo4SDdHeDRQOWR1UWxzWUNycXlOOFhxRzNIbS8xME9qM2p3L24rY3Jsc3R1TStqUG1teFQyZFR1UHo4M1B6dDJwbjFYc0VIWC9iblBhVnFWbWgweHdPdDBvNlhMTEFIZVBVVTIwM3dIZmNyc3BDd21WM1RyeUI1czBNc2VlZzk3eC9Cd3pDakJsYkIrcFJBUGxhMEJWUXVUNlY2UUhkQmxqM2QwS0cxNDdiK0RxeFFlVXltRE80M1c0ZFFhcitUSWp3bUFkMHo4L2g2NXZmMC95THYzUGI1WExwcnUveWREbzlzN0VUMEkrUGo2ZEtLOVZVRUllS1dRV1BBT3JKOExLZDR2RSt0OTFZM2U3VUZsV2F0ZzJWd0puYitIUG10dm0vc2ZLNTkvT2FXRjN4L2VQMVVQSHZBNUREWURwWVhmYjBkcnYxVjJEa0JreHR3L3RFV1ZWbFhXZEM5cEZZczUvamZoOWRTLzE2dlc3czZsVEcrVGZxc3hTSkh4a1hYcS9YZHIxZXU0THNmRDZQM3ZzVDNONzdEa0wrelBtNWpTZEtMNHpSM0F4UWQ2ckhrTGtZbFNvd3NycTd6bnp1NndTd2RzTUpPWG1BNWZCY2p4dGdNR0JZSGxyNXpva2h0c01DVGdYTFFPVzRYQzZkRXlFTXByTDhtQVF6WFJnZHVpeDJ5WnpvcnhrWXNEbjNoQjFWZU1MR3NYc1Z0Z2wycFc4UzNzdmswdnc3UjRoTmFIdnY0Y0FDbDVIRnp3SUgwS2M2enU0WGpEUFIvanBBVnhXek8xWGsyRERiM3ZUY3hlR1UxaVdaSGttSURXemlXS3ZpckNKNERyYXZzNklKL0dHNmNUcVdkWER5K2ZBclFEVlZrTHFrVmpBb1pJSVRkbW1JcVh3cWE5NU4zK01HWW9aUWRSVk5PNTNZMXhSa2hPMTZ2WTdldTUwN0NhOWxKbmJHcHhPZW1RaFN3L0FRc21tcDV6VTlCaVU4RzZ3dlg3Nk02L1U2UGo0K2RvMEJ6NENwZ2lrblRVZURxd2xLQm1nM3U0T1ZqcloxQStyQWNnYWVqV3E2ZUpDdkNZRkRPTlN3T2dIWDRFUVJ3OGx4YnpET2RFSzZnWjNIazFiKzhnMm8xSkZ0S1h5di9mRWRUWHVXaldYZEFaaUJwNkFEZURyQ0ZpaW03QjZaRm5lZUk3R3ZtL1BNa1VEWDY3Vzd4SThiMEQ3L3Y4ZEE5cWZONW9hQ2Y3NFdaakgwbWYxY21mWTFZMEpVRm1WclRXdTh1emtOY0x0RWo3dTVGWEJUa2ZDNkdPQTVxOFlNeE84S1Z2RjZzQVZHZGNyVWJzS09EY1FLa0xNT01kbWx4dW02NDJZclBtMjZBbGhaVzFZQjFSK3JyR3N3RThUYVlBV2VVTXhkZitXandTdloyRWYzeXRPeWZuNStQcFZQQWFxT240M010TkJxdm1qanhiak00bFpqWlk0Z3FOTUk1a3RhVy9zWUtOd1MrOWxGUXpHaWhtTUNLUGE3K1owVjZFYjBHUm1vYnRwWDhKbGpXdTVGTUxONWphNmhHOWt3UWdacWY1KzFOSDVVeHprRlJlQ2RXaEo4WGRsR1VreE83SFJsWVJtNG1WTzQzVzd0ZXIxMlRQSkV3L3JtRU4zTDVTS0hJV1pnOW16K3BVb0tPWXE1YkpUSmRYMmdtZTFVY3hNWlFGYUVRSWxIY3QzMk0rWTFCekdrR3V6Zml5QU45eit1Z3BsWjFzeW1DckRDWVlrR3hEVHBJOVJ6Qnkwckh5ZURVQzFuV2FlVWFEOW40eGtOeVlNQkRadHpaM0IrK2ZKbFkyMVhGRE9jQVJKbGFiT3lpUzN1Q3BMSTlqclpqQ0RrYVZ2Y0NDandvZ25LU2hXZHpYWldsWk12VlRnRDhMcHFsQ0xycWdiY0IrcVl3cmdLWXBUMGNjQ3FiS3lDVmFsa0VhYm4vRnlub2dDclBLZnFmNTF4SjdzR0IyWlhjWm14b1NPenRqeDMwMERaaTdhMC8yQUlSMFVsQmFnOVN1RHc2S2NBemxhQjd2SFp2V3BqSzkwZHlycTZiS3lEVVpRYlIwQjA1YmlMUWtISWNTVW1nSUsrU3d1cWdIQ25vaW8yUlFVMXlqK0JuQnk5cHBoVktMR3lDN1p6RksxcHhXSytFOEloVkNXTE4vdUx0blVVNGF5b1lMb2FBTno4RmR0YVN2WTRwVjBCRVcybHM2MWN6cWxsQktwVHlLZ01BaHJaMWNkYzFSUk90UG12V05rZGNLWjdaS3hhV2ppUExKTXBwN09aS3hBK3JxRy9vSkxqeGYwcG5KbHFMb0RabzNneVUwbUtHeXMydGFLZWNqL2QxQytySlNwbEJxbFR5QXFnUitEOEtqS2xtUkwyZ3RVY0FkQ3RzTCtpakNOVDFvcXFxa0gyT0hFYkc1c0RGblVnNUFhK3lMb3UyVlUxcHRqMVMyWlFxdjFPUlpOOUlXelJmZ2FSQnhLb0JFOFVXeXFsSkZ0ckljMEF4TmpTamVkOTlDVFkvWERmU3pDejVNMElab1ZFc1duUEZOVHNsOG9vVkMxVHpiR2dxRlpORFNnVndLSysxc0dETUtxeFpDV0dWTUR5c2lFcjFqVlNRSlVZd2o1aUhPbFRoZEh0NDRTUWc5Q04rbmw4RDkwTk1JZ0FkZ3I0NkpxUmlSOUk4dlJkRnZicjE3bS95eFVNS2pOTE1pVlVBRHd1MkNXR2hoaStGNTVUV005TTljb2d6bXMxZG5NNHVPRi9MQUVZV2RjcW5NN3lGbXlxM0lmd21PUk9kN1kxaUZXdE9qb1k4VG80MW1UVjVJeXNnRkZ1UnpzYldGR2JOSUlKQ0R2MWRPbzRsWkc3aldCd1JGdFZUS3VXeWVDQnlKS09hbjhvWjNlcDlYZGRObDB0RHVheXdMejljWFBZZURBQTBTcGtCTzlzYlZjVE9WV2xkUHY0dXl6RWt6eEh0anZvbkhvU2tGRVdOb28xZDhEaGNRcHV0ZDJwcE5vbjRCem9BaUoxaEJGUWcwZFZ0ZGJHSEhEUVd1c2htTkVRdWtMTTJRTzFHMlk4YmdUWHFGaGNCSmo3RWpQZ2NQdHM4VVM4cVBwUEIvZFh6bk9oNVo0Mzh0ekg1ZWM2UWdyT0tyUlJmS215c0JtVURCK1BoWWFiTWxWUEVSK0dDU0lUVHpyN2FtMnRBckgzYmdjRXpQSm0rY3I1ako0Tm5ITkZEVnJGWGNJNUxlOWs1Sm53K2JlZGJWK0ZmUnpaSUhhT09hT3NMWTAvN1VHczU4RGpyR3dLTUlNRklHek9FVzEvakdzZEF0Q042aEVBSTRoQmU5WVhlUlJPQlNWUEFWUEFxdklNNWJ4NWhWS1dBTVA2ekJSeTNpZXNjcmlkVmRGQmluQnhYRG5HMkdSWTJYYkN2cDFsaHZHdE85Qnh1NWg5MDhYUXU0MmxuU0FyTUZkaXpNaW04dXdSQ3hQR25uT1M4bHdwbmJPaURxVEFqc3JSTi9QY29BU2NDYmFBQ3FWTTQweWxuampUQnMrYndXbEFHMjMvVUtiZGtpd0tXSVFQR3pXYWN6cG9TbHhQRWo4MjJjTldrcFM3Rnl6c0RycXBmZ3BHM2phaHcydmdiYVNRQXh1TFdaWXQ3Snp5TmU4Sm9acE5BY3ZERk9kdzB3cVlUOUFLMXJaei9EZGJTbExQcDByeUl4Z1FKbEs5QVpsRXE3SU9YcG9oZzlQSWhyQ25nODhKc094aVY0WldBWWZnNHNpa3gvOGt5Mlo5bDg2MnVxd3Jmc2NJSDgrdWdUbVZHeWlkZGVWWVVnRU1uNEdaemcxNEV3SXNoOXN4MmNLS2lXWFJldU9FNWd6R09RZ2RsUktWVmRsZXZxYjI3OVhxMFFuc3RzMlZEYUJPMGNvZXpzcnVXdEhBcHU2c0tHNElCaE4wYUdVMmtMck1LR1JUTjNIbWJDRHdLVjE0enZrTUVERzRRZlpWc3BWbGFOVTJtaGM1VEVaM04xaC96cVRoZXVMcFcwNVpXVEdWamIzZGJuTm14S1pCbk44SnFpZGFWTEtBT3lBUk5MUytNQjU0WjIrVmFxb01MS3JvVkJsbmdlZm5UUEFjb0hOV0NTdmxmQThDSTBIRW1CTkJuQmxYeU1yelU3QTdXVm05NFBQcVEyZ21xS3grV0RHc252aWxtY1NPQkpxT0sxbll5QUl6dUF5ZXNxM1VkU0szS2ZXY1lLRDk1SG1mWU9VM3FzZXIyQ3RZRVVBK0ZwZnFkTnZnUEJaVUJoRHJHT05SVmxRc2g4ckxjYVVDeWtIRzBPT1V3VGxMQnJzaDVzb0VNR2V6aTFFNEhSVnQxaWNwNXdaRUZYZGliQ2tHOFk4dlg3NXNiTzRFMGlvbTl6K2hqU2lPZnkzRGhwWEl0cFZoRStVR1Fkdm9XanRDaG1yR0hmNFlBektnQk5uR3R1SnhGQ2VHZGhVQWZRTExLOGtCWUFQNmd2RkpaYWpNRzNYa3ljeThLdUMwcTRFeXltd3R3ZHhkdjJNMG1JQnRLMExLbmY2NDBqMDBBdXE0Z1VrZFdHbGhzMjJxSmM2ZFpDc0wxOW94bmxUSkc0U1lWUklHcEQ4VFBGQnVNNk9FbGJTMXBsZGlkNG1HQXlONlpJdXBiQzViWEpOOWZkcGJUaFN4TFVhSThJRzFYSVlCeFczVGpzNktRb3NLY3hmeGNRbWRud1JHTTEwR25GY0N5MlhZdW5MTXlBa2RnazRtZVBpY3pzTHlndGhjQnV0NmdvT3FTN1lWRlhBRExqYW9zQjZzNm9mY1pXQVpTSVJZcVNVa2l6WXd0dFlhYjN2VU9ROXcySFJ4SUlnOFd3UlZlRTY4eGk0VXRMM3pScGh4cGx6d3VacmNxWUNxMUkzalBJNWRuSkl5Z0VvaE1iUHFWSlN6cnd6eEJKVHM1ek4rUmVVU2d4aWtQUVZGM0pWQmVOUXhiSEVOckVNTnZFZEZaVlY5bEg5K09SR0VzTlpRcHlUTmM0QzNBRzdYRjRuZ3pxK0RyTzJ6YnVhYU9YZ2RhRmNka0VvdG9TRkJWWDJxSjBDOE9XWmVHNEtHbHBnaEEwWGZUT1BDcVYycXF3UTI2UVdmRjJQTUxoSTJ3MWxWQWEyYVBzWWQwemEyNU1RUndnY1pONnVRRENpK1p4aUQ0WEVNMmtaeE9UNDFGblpuYVJsY3Bab3V6bFJxcWRiUVZXb3BRb1NCNThSVjUwbEJOckhpL0F3WFM1THJ3RFZscFkzRmMzQnlpWUdjNTJUcmlzdDZrT1hkd0luQVF0SnBwNVFjaHlhcXVZT1Y3U3UrZnhWTWFWM2RjMFJFMlM2bVVZMGdMdDJwTWNZcXJLSVE5dzJsMWdwUVVNdFFZY21tYnQ1RFROeGRoblVDalFxdGJLOVNVU3p2ckMwbW1oaEUxZTJGUzIrb3h5cHkvWkFTdXRrbXRqeDN2Y0JDMjRQWDY1bmJxa0JDUmhmalM5a0lZUG5lZThjTWFnVk9oSS8zVDFmQW1kdEFXWnNDc3dUSkNrUVZOYTBxV0tTS1BPcEhBVWhEOURyYlZjeW9Za3dxaHZoMTd2WUFheVhMUXlLR1lkeGxVREZwNDk0ckJYUmpZZ08xN0REWWV0TklVai9lenA2UzBsbmxwRXdzV21KTWtPd3NLWGVaS0VBaklIbjBFUUpJU2FSQmNPNlVNSU56N3AvYkVqam53NGZ0K3htRHZrc3hYNEcycklyaXM3cWFlS3dBRk1QMk9pN240Y3JpdVp3dHBTVXdwZkx4U25PUlNySXF1c2M1WkZhWHlzcVJXamlaMkR5QVdFSUwzNXRWU29RRWxGQUNqT2VHR1NFN0FIRVFnZG8vTFN2Q09nR0J2a3hzbURidmxTM0ZwNXZoYUIyVEFHcVJLcktLTXJoTFZwYUd6RVZqWjBPUXhEaGFDVEErUXlSUjFkMTVhUXpySm50TDNSaWJzaXBqRzZqbGdMNHlxYlMwc05ZZzFlODR2aGJCVnJFbEs2NENVY1dZWERmS3hocEl1eGlWSlpVeHNiTXkvdVJCS1ROUlE0a1EzTGRSWUxTMHJKalJQbFRQcVk2Z2RKc0VEYythUVhBbitIZ3NOVUNiUnVGME9qMHp3bkE3YldEa2JoTzVFbnMwMHFlUWhTMWxhQk1sNU0vY0FheHNMRjhyS3lxbCtUZjdFTExFR3UvaXhpaW1kQ3ZvMFRqZnBqS3dhZ2dlbjRlaDV2N0xva0xLYkx1eXZIaGNaRzhkaEdyRUR4N0hnOTNacHBKRjdxQnFPM2lWdmVYRURRTkluemVvZThZcTZlUGFaQloySnZpTTNXMlVBR290ZWtSQ0FHcTRFa0YxWDNET25SMTF5UnNCTDF0UmEwUFZjWmlORlhaMmMzNEZza3ZvbUluUVE2bHpwSm9aYkp4azQzTndLSkZCcXVKU3NyQnlIeWR4S09uVHhRQVNCbVMzaitKTW5zSFNsYTNFYzZLOVZXb0pWbjl6Zmp3T003aHFZQUFxSlF3RTJhM25BNDhKMlFHZWdSa3BaTml2U1kreXMzRWtLZDRvSkl3c3ZJSGwzY1dnTHQ1azROSDZPbXRMV2RwdXJPa3dFTXVwWWM3ZU10RFJoT2NJMnVpNUpoVkl6WHpMeXRvL0dBUHVab3lvOHdrb2R1VmdKZ2xDdDdPaEdiZ0lENE1xNHNpKzYzelVTMUZ1RkZYRmxxeWFqMmVtSGxMTWNCcVl1MEZNdVIyOEJiQjdsT3hSTVNpQ1FYRmhDS3V3a2haK3BZRGlHU2dic0tLVjhNaVNSc3VIU0lXTTlya2xSaUlsWlp1cVhqc1FLOG9vWUpNZ3EzSktXVmtoSGJoc1Z4RlV6dGhPV1BrWWlqY2J4NTRJS3NTZFQrdUxyM2NyR0t5b1lnRmlHUjlpQms0a2Zsb1VYK0pJbFFSUXFhYm1wZ25ocXRwUXBiNlJWUTFXSDVEbnJTNGhFb0dacWFlclEyZGhGYno4WGVQeFNobURibzcwZUlTam9vck8ydks4U0pYSTRTVW1FVTR6V0tEelVEdFdUWXc3eFhsYlNURWo0RlJnN3pLbktvR1JBTHYwR3M5VGdjMUJwQ3l3R1pSUUF0cVZ6MnhyQmNBTXpFcGZad0ZTYTJHNVcwUUJGalNNYXBXQUVGYTNIY0dON0N4RHpFQ3lJa0o5N3F3cnFXTlRXVm84NzZQUHNqUGtqMnd2Z3JvTTVsTFpLTUVUS1ZxbC9Ddm5XVkZpRmEvU3pKVVF3a29ac3I2N1k2dmxTUlYzLzJ0bU5UT1kzdm5heFl3TXVvUEtxZHpSMXc3SXFIeW1sUHhhQVRoZlU3S28yWlhZajRBWUpITCtrTmRLd1JRWUVTVFJhNWZzVVovclZDMVRNVHlXVnlZb3FOdHV6YUhzTXl2MnR2b2FyeGRmcXdZZ1UxYXhGby9jbnFsMUZHc3FLK3VBUk9WOEJYNEdVOFdjWlRBVGkycTdRY3lpME8wVitHaFdCTU5SVWtuOEgxU3NXVkU1QnkzR2kwRUNxVWVKb0JmQXREYTRhbWtkWEczN0FHUDVHZ2ViODRwN1VhenBvS1J6ZEZ6ZVE4SGtvSEd4cHJLeS9IcG01dDEycDQ3SjZ4VFlERXo3dUlORVhTdXhZWHZGc2tZQWMreVN4SDlzZjVmdEt6VTZJYndWQmNVR2c1ZTVGTUNFWFNFclpSMHdHYXlWMTl3b005Z3VQalRxSmRWVHFSNHVFNG5KbkxsZFdWa0VDQ1pMZDJWTEYreHRhbWV4N0lwaXJpU0RVcHZycG45bHJ3R01DSHlwcE1IK3BzNkxJTHN1RkdVajFYRU9YaXFicVNIUFVLbkNscFdWNjhrcXRVUlZORFk0VE5hb2N5a29ZZVRVNW5nR0VRYS9TMURubkU0QWVYTWNLakhQQW1GVmpDQkVOYWV5TFZOSGZyM3B4OHhVc3RKOTRoSXBmSDRIS0UvZURhQXJLNmxTeVZWRmJkdDFneFRJVmszcHBwVmxGWGk0cEVoVkJUT2JxdW9oVTg1TUxYbjFpYWh2VWtISmpTQ01jMDF0TEZ2ZVZWQngwRG9kTTZqZnRDdTdET3RJell4cmMwcXAxSkdQMmF5WUZ6MkdiNkh2TXJPOGNuR3RWNkdqbTN1SW1TZkQyR3BXSzZ1b3diWkdNeEZLUUNvMXBPTXRjTVhGcFJzdCtoWEdvQW9tRjNzU1RCR2dUZ2xiQktXd3NRM3RacWFZU3AwWjFDaW1SRFdGY0NKVVBZSjAwQkk1RmtLWU5vaWZ1UXhtTjg4U1dWWFdMTWFVcXFxZ0MwQm1RSlI2c2szdTlOQ2Y2allMWHhBZnFzWUVnVkxBaFJZMkF0Z3RmbFpORm1GeWh4ZHJMa0FkV2xrNEQ4OE0yaXhIeWVwSWRoTUhyRy9pUjFaR3RxME1HcGJEYlJQWU9YZVNZMU02Tnk0WnN0dkdTa3RLK1hiRlBBVGoyRDM3MXNhUEVzQU1YaFhyc1owa20vWFN0a2hoTXlCZnNhNnVYRlplMlZDZStZTXIxK0dLZ3dyUXlOWXExVlJyQitFaXpBb3c2TnNkTktjeVZFa1llTTczeXM2cTRrQUhwNkJpRmtsVGtJclZDNW9ZVjd1endPR0N6NFVKMFN0cTJsV01KeTR3dGIrUmV0TDZ0WkZpY25KbUJ3NVVqQ3ZYWE1aVkpYMk1Ra2JmK1hONUVXZDc4Vno4L0pFc01aVEJpS056c20xaW5MUlVRNzRINE5pZGFxSTY4ajVzQUZneGNSdmVDN2llTEpYZlFZeGpaWjJDc2lXRmV3WlhKbUJJbFoxdGR0clg0aFN1YXRlS3NvL1JaT3RPS1cybm1xMW9UemVLNmRSV0FXdTJOUlZiNGhxMFNYbTFHdnR1Z0hyYnI1SVhxbVNrdGc1Q3VERTJNU2xQd3NZNWtORTJXcDNBcWlaYldWTEF4aUJGKzJpQlpidU5qNk1CNnJzTUxDN0Z5YXNhWUR5bzdLa29QeUV0dzNwRU1YZlB2eEFKaTJqQVFRZ2pyejByTElaU1dabElvTmh3ZDV4SzRBUjltWU5qV0FhTHJudUltSmVCVk45ekJPUk9iVnZicittVFRmRlNFSkxTUm5IbzdoRUpvSWk4TUZxanhtdmdtRjVVUlp6NHpMRmdaWjhDdHUyWDdnZ1ZjY0ttOWdWeElzT0hxeFhnTk1LbkZXWlluZjFkQm5PaGF5WHExN1F3RmxXVzA5ZU5LeVZKRm1YcWFPTkdBNWFDZWdNYkozVVVrR1kxaWMzbktXZ2pxOHFmVllHUUcxZ1J0NnJzNjJhNkhpcXFVT3FkZXNLNU5tWDRuR29mSm9pRTFkMGRGOWxWVmt2VDEva0VFYWFDb1lPd0ZwY1Zjb0xNKzc2NjlQeEM5cldxa3RIMHNXVVlsZDBWQ3B1Qlovc3RWUmNHZ3k5V1gyK1UxUXRoaTlTekFxU3h6WnN5K09pRnpCWW55U0dWNkdrdTQ0ckQ4QkNPWkJWM0J2RDUrQUtSSE53TUVzQjZFekhuSnBrVEFlaVVsRUdrY0VDZUI2R0RaVHA1WUVKVGx2ZHJrbnhZalRsbE1rZk50WHdEak03dVZqSzVKWFVVbjQzcnJxcEsyanl0YXhIVzBNNUc4REM4cnRITVlzN0tTZ2R1VlFNR1RZRnFGdlZTNnJrRDNzREo0NmFmZFlGd29xMTFBT0tDQkxodndvVWdjOElHQU55Y1I2a25acmRKUGRzdXhueWpmZDNGb3ZUbFJNZEVkdE9sNUNNVjVFSHNYUUJpczdUT3d2SURaYUdqMlZucGJoN2NwSzYzVndZRU1Md3Fianp5bDY5OXNhd0ZGa0YxeXFqVVUzMUhmQzZzVzFaRlZGdVhWWFZnejlrZUVhdzB5czFsV2ZtK2F6UUFRU1dBK2hLWVZmc1pqUG5jQWNVQjlvSWF5eS9VWlhSTmNrREdqaTc3R3NXYnZCbzZ0UHJXUHFPeVZrQlVxK0lOZXFwek5kWXMvdTBpZmg1cW1wcUlXKzMzSlZTVWN3WTcwS0w0VTlsWWRVNmxqdFNsczdsbWZpOWczWXplUWZWa2FHRmFWM09EQ25hRDJOOHdzRURGa2xFM1J6TTNaZ2hkWWtXSHNzenE3MEZJZWNuS2tWa3Q4ZXpNelJxOWJrR3VLb2pSTEJWU29kM1kxeVBxS2dZVzdKUlFUUFZ5eTV4SVlMak9neGdUNTJSS0pVWTFkT3JJaVJkNGZ1dFF4L0E1QWNTbUVqejB2Rldya0x6dmJXQXU5SE9XYkdneEZrMVZOVHBuQktrNlRnd2lzSS9IY3hZWFAxdUFXTzcyVUxGbEJUcSthU3UyVlRVczZocnhNMkNGK2hFb3IxVklBOVptRlVhYWIxbFNTZ1pzVnM0c3h6SGxWTG9KSHI5SDREaE9OVGtJMVhDMC93aVkyTm9XQUc1UmxuSEZucTZvTGNjcFFkZE11Si9PMTdKVkE1T0hMaTBCcUN6dHE3WTErK3VjQ2Q5OHFMSThNSUhCVi9jS2p4UVRtZTNoRkJTM015Q3FuRHN1eW0ybzgwSGp2RkZUdHJVUm1OYUdKc21WYWhJbWpUc1VYS3RRWlRBVnM3TXZ2OC8rZnpVclpBWGNMSjZNNGtvZTZYUDBiNlNtV1dORHp5VXBROGJsK0x0V3g0dHVxWjM2Y1JZVjN5dVZ4UE53dklpcWlRQ1NtdTdzcmdUelI2bmt5aHBDYXJYd0Z5MXZHZDVpUDJjWTA2bEZyNU5qaGhnMVk2K05CMjhmdGJLODNzOHJmN2tMSmJLd0RGUGJMZzI1YTBBZFpKRWlxcjVwaGl4S01EbFJVdGNzc3ExaHJpTHFHb0gremVOZ1ZtOU9lbWpzRVRWOEpkRjBOSG5rSUZ4V1kxT0I0WXJwN3J0V0o3TmdBQUFQWGtsRVFWUTNvTnM1bnBseVZmOHUyRm9MdTFKckh2ZWFaV1FqcUFrc2h0RmEyZ3pzU0czWnBrYnZnM0hhZkY5c2xQUGxsZGpGbEs4MEd5c204TXI0TVBobmVOV0VOUEdqQUlwbWlsVFBBVGRUUlRYbENCWUhZQVF1UHdBMzZ4SXBXdEdONHEzWTJNaGlHc1VwdVNTbmxFSlJEOFBvckM3Q0ZZVncrRjUxcVRoZ2FieHNUeFd6Q0dZMFpTc2IzbGZxQXkwT1BOak55OHhpUVFLc0hZRlEySEJaVnZWYkJ1cTNtMW9XS2FqcWFvbnNNNnVaVXI2Q2pYV05aMGw1RTNoM2pVUm1hNmtQM01KSWl5MUxtK2thaFFxNDFOMmlaamE1c2p0bExZTlpIWnJINnFVR200dk1iRHA2UncyQ0ZtdnV5RmtyQmNDeU10RnFCYUVDbXNIb0s5QloyTEEvbEpjUnFTYURxbmFXYnJaZEdhejNETGdJdkJsbjR3b0d6dGJ5Skdxc2x3eGtoaEhyVGpUWUZYQ3RPb0tTOHVMZG9mVmRBYk95bEdVNm5sWXBYV1p0czRuWEJxNld4Sml0TU5va0hVSm5ibkpwbFFtK2FHcFkyYTVHTVYyUUQxaFJ1YkJQRktkdW1mNU9Ia0xIejBGOWx1RTVrakJqUmEwbkZFNUNVR3FIdzMyTW1qWjZ4a2dJTlZuU25aMVZaU3RLMnFLbFJhTGxRZ0s3dVRxN0pGWEp3TSszU09FS3loWk5JK3RKMEk1cU1ZeTlrMnFKRDdkVldkcUtYYTBDS05SMENjamcrQjJJWXUyZmNCWkpaa01GZ00xMXIwWDkyd2lsZ2hGR2d6Vm5leGxxQjd4TDltUzI5U2lZVVZZMm5YT1pqTkJSc3lEc1FQUldXNWhyWjRYY2RDNEhWV1JiamdKcjRzRm9mSzVTempRN3JoSTFVZWJkUGRFYmo2c3FJdlRaUVo1dmEwOHJBQnNBVzBVeGVXeXRBazdBMktKOVpweHpDaW9CMjRYRnRZQWVYWXhyNmFuU3FoTGdwcEVxV2JHd0x1blRnclYrSWpXbEwyOWxqYUFsNEVRTUdzRXJwNGFwZVppcXV3UlhMWEFxT0NlcnUzMm1teWRjNm9XVFNXcEZBR2R6ZVRCOFJUSFZNRXRsTTkwQ2JiUUNZaFBqcTNlZ1lyMUZHZFlJUWppdURHWjV6Wi9Bem9iS0dPeUx4dGk2YzRSd3R2MmFueVdsTElDbmxMaHhKUlh0NkE1ZWJEQldGTk9OYnhXWjJkMDJtbnU0UzlZRUNwZXBwVjF6U1dSQld4SFl6Vkl2MUNYU291d3FxWDNqQkJCRFpkWVFicFRRVzRaUWxTOHI1a0g0c3VTUm1nMisrM0pOMTB4MVBhQW1Fa210WWxFZGVHcEpFTTZrT3VDcUNSMjJvU3VqajVJVjJIZFQwemo1cHJMS1RqWEZBUGpkUWx5cTd4SUJ4QVFQNXlNY3pHNFZ4QUt3MG42aWxaMlFCY2UycEx1bGt1eHhxbm9JekZmZ3F5cWppbDlTMVZOd0JyRm1leWVvcHM4eU9qWlV5YlpkZlM4Q3VhVElKdW16czV0T0RhTnRMcEZEUS9QY0pHd2VMaG1lTDFuQjBLcWlVRFNjc2lVVkQ4OURpM0h0ckt0U1VMdzNSTGl5Z1pEKzdzRjhKVE9iZ1lzckd2RE5VRlJHbDFpeTBMbDFZa1VjMmFKWU1vZzkyMEk4cVc2WURDZzFNcWswSkhKRktYa2JnYlJyZUkrcXBZTk9aSHJWY0RVYmE3cGpzcGhTSk50SzZ1cGdSTkFWb09TMG11Z0JlTjRiSVpnSGh1UFovczFFTmFYNktzVnIrWU5yaDFOYjdpcFIwUEU1emJOUmVnQ2JySFJVdzZZZjA3ZExCSmwxZjhLQjlhczJWMW5OcUFzbDYyTEJCaGVod2FsZXJrSG1CMUpGSUVaS1NFdXNkbDVKUWoxbkpsSFhTQ0YzNDJnSjlDWUdyWGVsa25KSVhxVlA4c0QrcXRwbENSM1hIMnFmS3EweWdNcCtLblZrS3hObFo4bTJZa0lsVk1pQ25YVXdsN3F6bkJLU3ZRejNtM1B0Nm9RYlhPNWI1Rml4Q2gvZkh4VVFXL0FFY0s2ekNOcUtRbkw5c3l3cW1LdXd2cVNZelQvYVBWTk5wVnlodlJXMjFhcWNpQ3NqZFd2QndJTFV2aDVWeUN6YldvQzFwSmpKNjgwQ1dzbCt1ZEtCNlQ1UndHMW1sb2hubHBiZzQ3aXo1VTloYTBGR3RtUkxGWUJ0Tzk5eTk3QXAweitaRFRBb2c2a1NMWnNNSGcvSUZra2dwNkNwdlUyVTBjWVZTZG5ta2p3QmRPbVhieFRXTld6dUliaXBNaW9WeEVja1pFb2FoU09peTJNM0swamNDMUxoVkR3YXFHMFp2a2NXcUNuckc0R0l4eWtycWxiV2R3NkxReUJhWlI4SG1MUkloUVdzSHN3RDQyWlhWTE5rZjlsK0ZsVzBIVlEybHdGc0MvWjFGZHpsUVIwS2FQZm8rRmRmdSsvZHdWUklDdTFDR1I3QUVJaUFoYytBWlVGMGtPQmFQeG1VcWc0aTY0dlFuVTRuRkRZSjlOeisxZlZYdmVIOXFtcitrUElMeDhvS2NSVi9CRmJ4YkUwSk1UMGtTRDR3NkwvbE5ZOG9jc3FhZ1ZkVTNBM01qeGh4Y0d1cXpzUEg0aXJwYW93MXE2T3lyVmp2cDlOcGM1OUU5MUxsZGJvWVZ6SldkaW1XZkFXMlNORUtjRGFYMkZtQkxMQS91S3hsbWhoNjEzSXMxVVJRQXBiS2Z0dHd4TDAycTZPbng1cFF4U2JQb2pBZyt2NWhBbk42TEhWUkRYSXN2S3RSamlTMHFKVXlaVEFYVmJBSzgyRWxGSldhUWRWb3FVQzFVbnQ3QlZhVFF1ZE02U3VxZXhqUUpONCswaWNheHYvdXRiS3Y4M0VUYlQ4SDhnamNPS3hPSm1iVWE2T09WWGh0M2RGWTZySHY5WG9OekZMY2VFQTFvOCtwS20wTEFIUEhaMnJZS2pGcTBoZlpGaXhzcUhKZ0QzZUQ1bitVMGtiMW1GalhrbjJsdk1TU09zTkUvQ2RJQUtGMFN5dHE2dXJPSFVONWd3ZzRHWm9zZ2JtZ2dNNXVjcmEycXJTMklnMWNiaUJCY3hZemd6VUROTEN2TDhHYlpYTnA2T1J5M0xtUytLazgzelJJQUs2QTFpb0thMkk5TmFwSXVpVUZkZkM5NzY2UEZaVXRxVXI2S2JXayt6WlUxYS9acklYRXp0cmpUT2Z6N2h3S3ppQ2VYSWFyYUh0YlpJTXorMnBHZ2F6Q213NHFXQUZ2RWRob2RZcDBYcTBwVjdHMVlXWVdiTzRxaEdxNDIrWjhCWXRyTFd2bHVOUHBaQWVhRkZTMXZ1YlBnYmd4c3FjcG5BYXN6Qm92S2FGb0RROEJHdGpmVU9sNE5BRzJubVFWMDRmZUpndW12WDJmc3JRRVdaZ2hMMEpuVmRZa24zRE9aSWVSTjg2UnFQV0Ntc3ZHVnFFTVJud3hRQXh3UzhFTVlvM0l6bVkyK0JDY0xwNE1LaXV5dWhJbWFtbGJaRmNOb05sN3RwK1JIZDE4WmpRSVJLeVhkRlJoTjk4L2h5S3F3WFdObzdPMXdpYVhvSE4xMDhSRVpaV0VxNmdybklmanplZzhqZFJmMVhFTDRra1hhNWJCakt4b0thbGpCamVIbFZ4UTRHYXljcFc0bERPQUt0blR4SEF0T2Z6T3Rad0hBTTdzcVZYa1Y2eXU2a2FwMW5Ia1hLcVdGLzRYSHFqZW5OS3FCanBSM2wxY2gzRWpnMStFc2dkUWhzZEcwQjRGTTlzV0FWV3B1QXlpd1RQbGVaeHQ5VnlaVlMycVhmUmVXcVRBaWxwcjlBcG9XVGp4eW1pdDdOd1Y0SlRyaVp5T0E5QjBrN0hGZlVMb3VybUtZSFZuUlF2cUdMNUhNSGRxRmNSMnFXcG1jSzZlVHd4MmRpcFdydmlEaWxyK2ZLV3EzT1dSV2RIS3dBNGV1OHdqY2hiZVJ6RmlscWpqWk4zdWZDcGZrSjAvc2NWcG5ZazZMMFBJNzdseGRXQ1o4N1dpV203Qi9BR3F1UVNudWpHS3NCOENKbWlKcThxMXBLSVZXeXFPaVRLNjZyMThCTjhyNzQvQUU3MWZkQzN5UFMyTXhkT3BuRTF0bFZ4RDlKbVZPb2dnTityNFBqQVhWRlBhM0VnNWpWSkdGVlVHTm9sSDIwR1ZyVUI3Qk95U1dxNldxWVFkV1I5MnBjRk1ZTXdja2JTZ0NLQ3FENjdEaWlXdTFnOE1RQzlCeWZjRnFXMUwrakw3MTRxTkN1em5vU3h0MGRhMmd0V04xRzhGMEJLME5OMG51aW1lbFVGOWRJZEFmak80NFVUM0NqUUxvVWVMSEpGVE8zZ21wUnVJSU92d0JRQ2JxTmVvM3F0WjlpRjZ4VksxM0dSbG80enFpbXErQ0dkVGlSMXVSWThvcWdFMDJoWkJhNzlrWlhQTXF1eFJIS2xhMnNhWldONG1ScVpVajB2TENLaGtqS25xT1FITnVTWlZKb0t2QXFTMXdwRXF1dldEQzFCMnlwd3JDUHNSTUVQVlRPRE1MSk1EdjZxZUtYd2kySllWNVNxNHFLeXZnR3NIQ0xpdWoyalI1OVY4Z01xU0oyRkpaUlhFSFZSSGozc0ZQcmN0Nk9wcWxXMUdwYXRRZHQwR3Z3Zk02bjYzSW5zR1ZGaEpHYUJxZ3FxSVY2SXNYbGxaZ3lTUHE0UjNibnQzd2k1Y3YrY04yeXFRTFcxVDk1S1lWc1dXdEtrNGNCOVc1M1dRUWZsUVlSNldsNEhhSlpqdlZFMEQ1eXZxK1JLZ1pDczVxZEJFUDVzRDk0Y0F2UUxsU2dOYVNNQXRIeDg4QnVOUTQxemRGc1gzMHpLYmNzME1MRC9paGtwUXpsMHdpVHFLTFRmYkttQ215WUlDbkswSWJhaWVDNENHOWlTeUxRN2NJTUdRd2F1NlRLb3E2MEFwbDNXTjQwTFpwY2ExQ0tLSzlWUXl5SUVuOHcwRjhGNkNMMmg4bzNpeEd3QzdzN0VXekNPcW1jQXBZeFlENGpzQXpWUzBzbDJ0OThwQTd2cktvcGhDVlNvbmJZcGdINm12U24yNHBUQlY0c2R0VjNCdE1xNWs4MnkrSUFEdlVKMHVBbGtDVlR4SWFQbStVTnUvcWtWNEYxVHpIWENHclhJQXFJdEJLeXBxSzk5VnRBT1ZzNjRPNE9iWDdwSExWQ3BZSGNSbXd2TFI3VHZZQUtCQk41OExHVnpEdUZ6K2hRYldnbmNReUNaQWsrVmJzUFNvdWY5MzI2MWlaZ21mQ3B3UmJBdnFtU3FyaVUyUHdoamFvT3lZcXRJZWdWWFZpVHNteXRhNmJHeVNwWTNneVJycEl5QWVhV0REeHRwc1h3S3lhbE1ES05QN1lCWE1xRXNrVXNpMnVDOEZOQVB4QUtUVmZUMW82VnpNMEUwakYrMXJXY1V1SHZkeWc3dmdvRnBsWDhIcHZIcE1DT01SVVBIelprSW5zcWxGS05YL0VJTzUyRTBTeFN6T3dvYjJWbVJMVzVEMVhJVTByYmdNMUF6V2d5QzdmZThHN3hVQUsvdGFFQmF0N2x1cXR5UDdFbXNhSlFPajVGK21yblpmQ3VZQ2ZCVUFXd1NoeWQ2cE1ZL3ZBSEcxVXFPWXBiSS9neTVUMENNS20rVU8zZ0Z1Qzg1ZGdmRFZlZ3VQRGZJVHJJQkxzTHJjZ2RoM0NGZ0ZaamFLSjRJdjNGOEFORXF2dXhSMXRWS09nTG9DYTFqeGJvQkFrajZ2N2ovaWNGYkE3ZjRyZlJuUURMUlZpRzEzaTB2cUJRcllWcUJiQURaVDBacGlIb1N6dlFwb3BLSUZTM3NFMUhmQldsSFhkMEg3TG5BcnF2b3VnTXRsakhCZ1puaDNFb3ovQktqTE1MNFoyQXEwK2hFSnI5amFWVUJidk56Q0lVaXJvQzdBV21tRnc0bzVBSzNNdEI1VnlwWk1TRmdzMDVKeUdWd2x3QnFzRUdBQWEyWlUxQ2pVZXhYR3NFNHJLcmlpbEJ2RnpPS0tvM0F1QXJvRTZRRlFVM3U4WXBOWHdTNWsrMVRadDVVcndvdU40S2lVRXcrazNaV0RwMVJYSE5ScVhiMjFUczM5OTQ1eVpTZzNWblpGTlE5Q0YzWGVaeXI1RGdCWEtpd0NNYTJNeGVURFlYZ1AxRnNmOVFOS1pjMGs4MVJKazNyNkVRM3JDbUJWeUxMNzVFaloxcElWREhvRnRpT0FIb0IwQmRUVnlscUJzS0tLUytBZUJYSlZMWStDWEFTdUd2Ty9BdXE3R3VFakRmR0tnMW9LYTF6L2RtbWk5STlTVUdOaGwwQXRmdWxIQWF3b1lyblNrbU5YQVZ1R0VockVWWHZVRitBNUN0MlBxTk9qRGV0eW5hNENtZVVvbG1lWExONEFxN0M1U2oxMFE3eWpnbCt0NkNOeFNSSG1JNVgrQ3B3cmVZQjNRZmRxbmE0cTIxS2RCdWM0R29ac240OVpPT2lWaW53SHFLOVd6anZnZXdlRWgyQVU1K3Z0eFo5Q2Q5V3FraDQ5VjE4RTVvajZ2VnluMFJTdEF5R0lPNWVkWFJLZDVCMFZHVlhxMnlyM3hZcCs1VXQrQzRRSjRQMU4zMzlwUU1qUmVqajR2Yi9EY3I2clFjM08vMHJqbXRacGVZQ0JpQ0hmQ2VtUmJOaGJLL3BOVVBjM3dmS3k1ZjJEN09sTDMvdVBodmUvb1U0VDBGOGYrVk5NMnZ5b2l2MGpLK0tIUWZkSHErMGJuY3o0b3o3My8rWTZMYkt3MW8vNUI3ZU9mMVJsLzBkdTlCOXRuLzlidnJmL2ordjBoNnR0bjJ0cC9yLzQ4MTl5NC96djUzOTF1dnp6ZndEaWZ6NnBoVDFNUGdBQUFBQkpSVTVFcmtKZ2dnPT0iKTtiYWNrZ3JvdW5kLXNpemU6MTAwJSAxMDAlO2JvcmRlcjpub25lO2N1cnNvcjpwb2ludGVyO2RpcmVjdGlvbjpsdHI7aGVpZ2h0OjEzMHB4O3RvdWNoLWFjdGlvbjptYW5pcHVsYXRpb247d2lkdGg6MTAwJX0uY29sb3ItcGlja2VyIC5jcC1hZGQtY29sb3ItYnV0dG9uLWNsYXNze2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7Ym9yZGVyOjA7Y3Vyc29yOnBvaW50ZXI7ZGlzcGxheTppbmxpbmU7bWFyZ2luOjNweCAtM3B4O3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZX0uY29sb3ItcGlja2VyIC5jcC1hZGQtY29sb3ItYnV0dG9uLWNsYXNzOmhvdmVye3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmV9LmNvbG9yLXBpY2tlciAuY3AtYWRkLWNvbG9yLWJ1dHRvbi1jbGFzczpkaXNhYmxlZHtjb2xvcjojOTk5O2N1cnNvcjpub3QtYWxsb3dlZH0uY29sb3ItcGlja2VyIC5jcC1hZGQtY29sb3ItYnV0dG9uLWNsYXNzOmRpc2FibGVkOmhvdmVye3RleHQtZGVjb3JhdGlvbjpub25lfS5jb2xvci1waWNrZXIgLmNwLXJlbW92ZS1jb2xvci1idXR0b24tY2xhc3N7YmFja2dyb3VuZDojZmZmO2JvcmRlci1yYWRpdXM6NTAlO2JveC1zaGFkb3c6MXB4IDFweCA1cHggIzMzMztjdXJzb3I6cG9pbnRlcjtkaXNwbGF5OmJsb2NrO2hlaWdodDoxMHB4O3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0Oi01cHg7dGV4dC1hbGlnbjpjZW50ZXI7dG9wOi01cHg7d2lkdGg6MTBweH0uY29sb3ItcGlja2VyIC5jcC1yZW1vdmUtY29sb3ItYnV0dG9uLWNsYXNzOmJlZm9yZXtib3R0b206My41cHg7Y29udGVudDoieCI7ZGlzcGxheTppbmxpbmUtYmxvY2s7Zm9udC1zaXplOjEwcHg7cG9zaXRpb246cmVsYXRpdmV9J119XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpLaH0se3R5cGU6T2J9LHt0eXBlOng1fV19KSx7aGFuZGxlRXNjOlt7dHlwZTpUXyxhcmdzOlsiZG9jdW1lbnQ6a2V5dXAuZXNjIixbIiRldmVudCJdXX1dLGhhbmRsZUVudGVyOlt7dHlwZTpUXyxhcmdzOlsiZG9jdW1lbnQ6a2V5dXAuZW50ZXIiLFsiJGV2ZW50Il1dfV0sZGlhbG9nRWxlbWVudDpbe3R5cGU6YXIsYXJnczpbImRpYWxvZ1BvcHVwIix7c3RhdGljOiEwfV19XSxodWVTbGlkZXI6W3t0eXBlOmFyLGFyZ3M6WyJodWVTbGlkZXIiLHtzdGF0aWM6ITB9XX1dLGFscGhhU2xpZGVyOlt7dHlwZTphcixhcmdzOlsiYWxwaGFTbGlkZXIiLHtzdGF0aWM6ITB9XX1dfSk7Y2xhc3MgUDV7Y29uc3RydWN0b3IodCxlLG4sbyxpLGEpe3RoaXMuaW5qZWN0b3I9dCx0aGlzLmNmcj1lLHRoaXMuYXBwUmVmPW4sdGhpcy52Y1JlZj1vLHRoaXMuZWxSZWY9aSx0aGlzLl9zZXJ2aWNlPWEsdGhpcy5kaWFsb2dDcmVhdGVkPSExLHRoaXMuaWdub3JlQ2hhbmdlcz0hMSx0aGlzLnZpZXdBdHRhY2hlZFRvQXBwUmVmPSExLHRoaXMuY3BXaWR0aD0iMjMwcHgiLHRoaXMuY3BIZWlnaHQ9ImF1dG8iLHRoaXMuY3BUb2dnbGU9ITEsdGhpcy5jcERpc2FibGVkPSExLHRoaXMuY3BJZ25vcmVkRWxlbWVudHM9W10sdGhpcy5jcEZhbGxiYWNrQ29sb3I9IiIsdGhpcy5jcENvbG9yTW9kZT0iY29sb3IiLHRoaXMuY3BDbXlrRW5hYmxlZD0hMSx0aGlzLmNwT3V0cHV0Rm9ybWF0PSJhdXRvIix0aGlzLmNwQWxwaGFDaGFubmVsPSJlbmFibGVkIix0aGlzLmNwRGlzYWJsZUlucHV0PSExLHRoaXMuY3BEaWFsb2dEaXNwbGF5PSJwb3B1cCIsdGhpcy5jcFNhdmVDbGlja091dHNpZGU9ITAsdGhpcy5jcENsb3NlQ2xpY2tPdXRzaWRlPSEwLHRoaXMuY3BVc2VSb290Vmlld0NvbnRhaW5lcj0hMSx0aGlzLmNwUG9zaXRpb249ImF1dG8iLHRoaXMuY3BQb3NpdGlvbk9mZnNldD0iMCUiLHRoaXMuY3BQb3NpdGlvblJlbGF0aXZlVG9BcnJvdz0hMSx0aGlzLmNwT0tCdXR0b249ITEsdGhpcy5jcE9LQnV0dG9uVGV4dD0iT0siLHRoaXMuY3BPS0J1dHRvbkNsYXNzPSJjcC1vay1idXR0b24tY2xhc3MiLHRoaXMuY3BDYW5jZWxCdXR0b249ITEsdGhpcy5jcENhbmNlbEJ1dHRvblRleHQ9IkNhbmNlbCIsdGhpcy5jcENhbmNlbEJ1dHRvbkNsYXNzPSJjcC1jYW5jZWwtYnV0dG9uLWNsYXNzIix0aGlzLmNwUHJlc2V0TGFiZWw9IlByZXNldCBjb2xvcnMiLHRoaXMuY3BQcmVzZXRDb2xvcnNDbGFzcz0iY3AtcHJlc2V0LWNvbG9ycy1jbGFzcyIsdGhpcy5jcE1heFByZXNldENvbG9yc0xlbmd0aD02LHRoaXMuY3BQcmVzZXRFbXB0eU1lc3NhZ2U9Ik5vIGNvbG9ycyBhZGRlZCIsdGhpcy5jcFByZXNldEVtcHR5TWVzc2FnZUNsYXNzPSJwcmVzZXQtZW1wdHktbWVzc2FnZSIsdGhpcy5jcEFkZENvbG9yQnV0dG9uPSExLHRoaXMuY3BBZGRDb2xvckJ1dHRvblRleHQ9IkFkZCBjb2xvciIsdGhpcy5jcEFkZENvbG9yQnV0dG9uQ2xhc3M9ImNwLWFkZC1jb2xvci1idXR0b24tY2xhc3MiLHRoaXMuY3BSZW1vdmVDb2xvckJ1dHRvbkNsYXNzPSJjcC1yZW1vdmUtY29sb3ItYnV0dG9uLWNsYXNzIix0aGlzLmNwSW5wdXRDaGFuZ2U9bmV3IFN5KCEwKSx0aGlzLmNwVG9nZ2xlQ2hhbmdlPW5ldyBTeSghMCksdGhpcy5jcFNsaWRlckNoYW5nZT1uZXcgU3koITApLHRoaXMuY3BTbGlkZXJEcmFnRW5kPW5ldyBTeSghMCksdGhpcy5jcFNsaWRlckRyYWdTdGFydD1uZXcgU3koITApLHRoaXMuY29sb3JQaWNrZXJPcGVuPW5ldyBTeSghMCksdGhpcy5jb2xvclBpY2tlckNsb3NlPW5ldyBTeSghMCksdGhpcy5jb2xvclBpY2tlckNhbmNlbD1uZXcgU3koITApLHRoaXMuY29sb3JQaWNrZXJTZWxlY3Q9bmV3IFN5KCEwKSx0aGlzLmNvbG9yUGlja2VyQ2hhbmdlPW5ldyBTeSghMSksdGhpcy5jcENteWtDb2xvckNoYW5nZT1uZXcgU3koITApLHRoaXMuY3BQcmVzZXRDb2xvcnNDaGFuZ2U9bmV3IFN5KCEwKX1oYW5kbGVDbGljaygpe3RoaXMuaW5wdXRGb2N1cygpfWhhbmRsZUZvY3VzKCl7dGhpcy5pbnB1dEZvY3VzKCl9aGFuZGxlSW5wdXQodCl7dGhpcy5pbnB1dENoYW5nZSh0KX1uZ09uRGVzdHJveSgpe251bGwhPXRoaXMuY21wUmVmJiYodGhpcy52aWV3QXR0YWNoZWRUb0FwcFJlZiYmdGhpcy5hcHBSZWYuZGV0YWNoVmlldyh0aGlzLmNtcFJlZi5ob3N0VmlldyksdGhpcy5jbXBSZWYuZGVzdHJveSgpLHRoaXMuY21wUmVmPW51bGwsdGhpcy5kaWFsb2c9bnVsbCl9bmdPbkNoYW5nZXModCl7dC5jcFRvZ2dsZSYmIXRoaXMuY3BEaXNhYmxlZCYmKHQuY3BUb2dnbGUuY3VycmVudFZhbHVlP3RoaXMub3BlbkRpYWxvZygpOnQuY3BUb2dnbGUuY3VycmVudFZhbHVlfHx0aGlzLmNsb3NlRGlhbG9nKCkpLHQuY29sb3JQaWNrZXImJih0aGlzLmRpYWxvZyYmIXRoaXMuaWdub3JlQ2hhbmdlcyYmKCJpbmxpbmUiPT09dGhpcy5jcERpYWxvZ0Rpc3BsYXkmJnRoaXMuZGlhbG9nLnNldEluaXRpYWxDb2xvcih0LmNvbG9yUGlja2VyLmN1cnJlbnRWYWx1ZSksdGhpcy5kaWFsb2cuc2V0Q29sb3JGcm9tU3RyaW5nKHQuY29sb3JQaWNrZXIuY3VycmVudFZhbHVlLCExKSx0aGlzLmNwVXNlUm9vdFZpZXdDb250YWluZXImJiJpbmxpbmUiIT09dGhpcy5jcERpYWxvZ0Rpc3BsYXkmJnRoaXMuY21wUmVmLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKSksdGhpcy5pZ25vcmVDaGFuZ2VzPSExKSwodC5jcFByZXNldExhYmVsfHx0LmNwUHJlc2V0Q29sb3JzKSYmdGhpcy5kaWFsb2cmJnRoaXMuZGlhbG9nLnNldFByZXNldENvbmZpZyh0aGlzLmNwUHJlc2V0TGFiZWwsdGhpcy5jcFByZXNldENvbG9ycyl9b3BlbkRpYWxvZygpe2lmKHRoaXMuZGlhbG9nQ3JlYXRlZCl0aGlzLmRpYWxvZyYmdGhpcy5kaWFsb2cub3BlbkRpYWxvZyh0aGlzLmNvbG9yUGlja2VyKTtlbHNle2xldCB0PXRoaXMudmNSZWY7aWYodGhpcy5kaWFsb2dDcmVhdGVkPSEwLHRoaXMudmlld0F0dGFjaGVkVG9BcHBSZWY9ITEsdGhpcy5jcFVzZVJvb3RWaWV3Q29udGFpbmVyJiYiaW5saW5lIiE9PXRoaXMuY3BEaWFsb2dEaXNwbGF5KXtjb25zdCBlPXRoaXMuaW5qZWN0b3IuZ2V0KHRoaXMuYXBwUmVmLmNvbXBvbmVudFR5cGVzWzBdLE5wLk5VTEwpO2UhPT1OcC5OVUxMPyh0PWUudmNSZWZ8fGUudmlld0NvbnRhaW5lclJlZnx8dGhpcy52Y1JlZix0PT09dGhpcy52Y1JlZiYmY29uc29sZS53YXJuKCJZb3UgYXJlIHVzaW5nIGNwVXNlUm9vdFZpZXdDb250YWluZXIsIGJ1dCB0aGUgcm9vdCBjb21wb25lbnQgaXMgbm90IGV4cG9zaW5nIHZpZXdDb250YWluZXJSZWYhUGxlYXNlIGV4cG9zZSBpdCBieSBhZGRpbmcgJ3B1YmxpYyB2Y1JlZjogVmlld0NvbnRhaW5lclJlZicgdG8gdGhlIGNvbnN0cnVjdG9yLiIpKTp0aGlzLnZpZXdBdHRhY2hlZFRvQXBwUmVmPSEwfWNvbnN0IGU9dGhpcy5jZnIucmVzb2x2ZUNvbXBvbmVudEZhY3RvcnkoTzUpO2lmKHRoaXMudmlld0F0dGFjaGVkVG9BcHBSZWYpdGhpcy5jbXBSZWY9ZS5jcmVhdGUodGhpcy5pbmplY3RvciksdGhpcy5hcHBSZWYuYXR0YWNoVmlldyh0aGlzLmNtcFJlZi5ob3N0VmlldyksZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0aGlzLmNtcFJlZi5ob3N0Vmlldy5yb290Tm9kZXNbMF0pO2Vsc2V7Y29uc3Qgbj1mZi5mcm9tUmVzb2x2ZWRQcm92aWRlcnMoW10sdC5wYXJlbnRJbmplY3Rvcik7dGhpcy5jbXBSZWY9dC5jcmVhdGVDb21wb25lbnQoZSwwLG4sW10pfXRoaXMuY21wUmVmLmluc3RhbmNlLnNldHVwRGlhbG9nKHRoaXMsdGhpcy5lbFJlZix0aGlzLmNvbG9yUGlja2VyLHRoaXMuY3BXaWR0aCx0aGlzLmNwSGVpZ2h0LHRoaXMuY3BEaWFsb2dEaXNwbGF5LHRoaXMuY3BGYWxsYmFja0NvbG9yLHRoaXMuY3BDb2xvck1vZGUsdGhpcy5jcENteWtFbmFibGVkLHRoaXMuY3BBbHBoYUNoYW5uZWwsdGhpcy5jcE91dHB1dEZvcm1hdCx0aGlzLmNwRGlzYWJsZUlucHV0LHRoaXMuY3BJZ25vcmVkRWxlbWVudHMsdGhpcy5jcFNhdmVDbGlja091dHNpZGUsdGhpcy5jcENsb3NlQ2xpY2tPdXRzaWRlLHRoaXMuY3BVc2VSb290Vmlld0NvbnRhaW5lcix0aGlzLmNwUG9zaXRpb24sdGhpcy5jcFBvc2l0aW9uT2Zmc2V0LHRoaXMuY3BQb3NpdGlvblJlbGF0aXZlVG9BcnJvdyx0aGlzLmNwUHJlc2V0TGFiZWwsdGhpcy5jcFByZXNldENvbG9ycyx0aGlzLmNwUHJlc2V0Q29sb3JzQ2xhc3MsdGhpcy5jcE1heFByZXNldENvbG9yc0xlbmd0aCx0aGlzLmNwUHJlc2V0RW1wdHlNZXNzYWdlLHRoaXMuY3BQcmVzZXRFbXB0eU1lc3NhZ2VDbGFzcyx0aGlzLmNwT0tCdXR0b24sdGhpcy5jcE9LQnV0dG9uQ2xhc3MsdGhpcy5jcE9LQnV0dG9uVGV4dCx0aGlzLmNwQ2FuY2VsQnV0dG9uLHRoaXMuY3BDYW5jZWxCdXR0b25DbGFzcyx0aGlzLmNwQ2FuY2VsQnV0dG9uVGV4dCx0aGlzLmNwQWRkQ29sb3JCdXR0b24sdGhpcy5jcEFkZENvbG9yQnV0dG9uQ2xhc3MsdGhpcy5jcEFkZENvbG9yQnV0dG9uVGV4dCx0aGlzLmNwUmVtb3ZlQ29sb3JCdXR0b25DbGFzcyx0aGlzLmVsUmVmKSx0aGlzLmRpYWxvZz10aGlzLmNtcFJlZi5pbnN0YW5jZSx0aGlzLnZjUmVmIT09dCYmdGhpcy5jbXBSZWYuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpfX1jbG9zZURpYWxvZygpe3RoaXMuZGlhbG9nJiYicG9wdXAiPT09dGhpcy5jcERpYWxvZ0Rpc3BsYXkmJnRoaXMuZGlhbG9nLmNsb3NlRGlhbG9nKCl9Y215a0NoYW5nZWQodCl7dGhpcy5jcENteWtDb2xvckNoYW5nZS5lbWl0KHQpfXN0YXRlQ2hhbmdlZCh0KXt0aGlzLmNwVG9nZ2xlQ2hhbmdlLmVtaXQodCksdD90aGlzLmNvbG9yUGlja2VyT3Blbi5lbWl0KHRoaXMuY29sb3JQaWNrZXIpOnRoaXMuY29sb3JQaWNrZXJDbG9zZS5lbWl0KHRoaXMuY29sb3JQaWNrZXIpfWNvbG9yQ2hhbmdlZCh0LGU9ITApe3RoaXMuaWdub3JlQ2hhbmdlcz1lLHRoaXMuY29sb3JQaWNrZXJDaGFuZ2UuZW1pdCh0KX1jb2xvclNlbGVjdGVkKHQpe3RoaXMuY29sb3JQaWNrZXJTZWxlY3QuZW1pdCh0KX1jb2xvckNhbmNlbGVkKCl7dGhpcy5jb2xvclBpY2tlckNhbmNlbC5lbWl0KCl9aW5wdXRGb2N1cygpe2NvbnN0IHQ9dGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LGU9dGhpcy5jcElnbm9yZWRFbGVtZW50cy5maWx0ZXIoKGU9PmU9PT10KSk7dGhpcy5jcERpc2FibGVkfHxlLmxlbmd0aHx8KCJ1bmRlZmluZWQiIT10eXBlb2YgZG9jdW1lbnQmJnQ9PT1kb2N1bWVudC5hY3RpdmVFbGVtZW50P3RoaXMub3BlbkRpYWxvZygpOnRoaXMuZGlhbG9nJiZ0aGlzLmRpYWxvZy5zaG93P3RoaXMuY2xvc2VEaWFsb2coKTp0aGlzLm9wZW5EaWFsb2coKSl9aW5wdXRDaGFuZ2UodCl7dGhpcy5kaWFsb2c/dGhpcy5kaWFsb2cuc2V0Q29sb3JGcm9tU3RyaW5nKHQudGFyZ2V0LnZhbHVlLCEwKToodGhpcy5jb2xvclBpY2tlcj10LnRhcmdldC52YWx1ZSx0aGlzLmNvbG9yUGlja2VyQ2hhbmdlLmVtaXQodGhpcy5jb2xvclBpY2tlcikpfWlucHV0Q2hhbmdlZCh0KXt0aGlzLmNwSW5wdXRDaGFuZ2UuZW1pdCh0KX1zbGlkZXJDaGFuZ2VkKHQpe3RoaXMuY3BTbGlkZXJDaGFuZ2UuZW1pdCh0KX1zbGlkZXJEcmFnRW5kKHQpe3RoaXMuY3BTbGlkZXJEcmFnRW5kLmVtaXQodCl9c2xpZGVyRHJhZ1N0YXJ0KHQpe3RoaXMuY3BTbGlkZXJEcmFnU3RhcnQuZW1pdCh0KX1wcmVzZXRDb2xvcnNDaGFuZ2VkKHQpe3RoaXMuY3BQcmVzZXRDb2xvcnNDaGFuZ2UuZW1pdCh0KX19UDUuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFA1KShnZihOcCksZ2YoR2gpLGdmKEhDKSxnZihGYiksZ2YoS2gpLGdmKHg1KSl9LFA1Lsm1ZGlyPWhvKHt0eXBlOlA1LHNlbGVjdG9yczpbWyIiLCJjb2xvclBpY2tlciIsIiJdXSxob3N0QmluZGluZ3M6ZnVuY3Rpb24gdChlLG4pezEmZSYmUmYoImNsaWNrIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLmhhbmRsZUNsaWNrKCl9KSkoImZvY3VzIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLmhhbmRsZUZvY3VzKCl9KSkoImlucHV0IiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5oYW5kbGVJbnB1dChlKX0pKX0saW5wdXRzOntjcFdpZHRoOiJjcFdpZHRoIixjcEhlaWdodDoiY3BIZWlnaHQiLGNwVG9nZ2xlOiJjcFRvZ2dsZSIsY3BEaXNhYmxlZDoiY3BEaXNhYmxlZCIsY3BJZ25vcmVkRWxlbWVudHM6ImNwSWdub3JlZEVsZW1lbnRzIixjcEZhbGxiYWNrQ29sb3I6ImNwRmFsbGJhY2tDb2xvciIsY3BDb2xvck1vZGU6ImNwQ29sb3JNb2RlIixjcENteWtFbmFibGVkOiJjcENteWtFbmFibGVkIixjcE91dHB1dEZvcm1hdDoiY3BPdXRwdXRGb3JtYXQiLGNwQWxwaGFDaGFubmVsOiJjcEFscGhhQ2hhbm5lbCIsY3BEaXNhYmxlSW5wdXQ6ImNwRGlzYWJsZUlucHV0IixjcERpYWxvZ0Rpc3BsYXk6ImNwRGlhbG9nRGlzcGxheSIsY3BTYXZlQ2xpY2tPdXRzaWRlOiJjcFNhdmVDbGlja091dHNpZGUiLGNwQ2xvc2VDbGlja091dHNpZGU6ImNwQ2xvc2VDbGlja091dHNpZGUiLGNwVXNlUm9vdFZpZXdDb250YWluZXI6ImNwVXNlUm9vdFZpZXdDb250YWluZXIiLGNwUG9zaXRpb246ImNwUG9zaXRpb24iLGNwUG9zaXRpb25PZmZzZXQ6ImNwUG9zaXRpb25PZmZzZXQiLGNwUG9zaXRpb25SZWxhdGl2ZVRvQXJyb3c6ImNwUG9zaXRpb25SZWxhdGl2ZVRvQXJyb3ciLGNwT0tCdXR0b246ImNwT0tCdXR0b24iLGNwT0tCdXR0b25UZXh0OiJjcE9LQnV0dG9uVGV4dCIsY3BPS0J1dHRvbkNsYXNzOiJjcE9LQnV0dG9uQ2xhc3MiLGNwQ2FuY2VsQnV0dG9uOiJjcENhbmNlbEJ1dHRvbiIsY3BDYW5jZWxCdXR0b25UZXh0OiJjcENhbmNlbEJ1dHRvblRleHQiLGNwQ2FuY2VsQnV0dG9uQ2xhc3M6ImNwQ2FuY2VsQnV0dG9uQ2xhc3MiLGNwUHJlc2V0TGFiZWw6ImNwUHJlc2V0TGFiZWwiLGNwUHJlc2V0Q29sb3JzQ2xhc3M6ImNwUHJlc2V0Q29sb3JzQ2xhc3MiLGNwTWF4UHJlc2V0Q29sb3JzTGVuZ3RoOiJjcE1heFByZXNldENvbG9yc0xlbmd0aCIsY3BQcmVzZXRFbXB0eU1lc3NhZ2U6ImNwUHJlc2V0RW1wdHlNZXNzYWdlIixjcFByZXNldEVtcHR5TWVzc2FnZUNsYXNzOiJjcFByZXNldEVtcHR5TWVzc2FnZUNsYXNzIixjcEFkZENvbG9yQnV0dG9uOiJjcEFkZENvbG9yQnV0dG9uIixjcEFkZENvbG9yQnV0dG9uVGV4dDoiY3BBZGRDb2xvckJ1dHRvblRleHQiLGNwQWRkQ29sb3JCdXR0b25DbGFzczoiY3BBZGRDb2xvckJ1dHRvbkNsYXNzIixjcFJlbW92ZUNvbG9yQnV0dG9uQ2xhc3M6ImNwUmVtb3ZlQ29sb3JCdXR0b25DbGFzcyIsY29sb3JQaWNrZXI6ImNvbG9yUGlja2VyIixjcFByZXNldENvbG9yczoiY3BQcmVzZXRDb2xvcnMifSxvdXRwdXRzOntjcElucHV0Q2hhbmdlOiJjcElucHV0Q2hhbmdlIixjcFRvZ2dsZUNoYW5nZToiY3BUb2dnbGVDaGFuZ2UiLGNwU2xpZGVyQ2hhbmdlOiJjcFNsaWRlckNoYW5nZSIsY3BTbGlkZXJEcmFnRW5kOiJjcFNsaWRlckRyYWdFbmQiLGNwU2xpZGVyRHJhZ1N0YXJ0OiJjcFNsaWRlckRyYWdTdGFydCIsY29sb3JQaWNrZXJPcGVuOiJjb2xvclBpY2tlck9wZW4iLGNvbG9yUGlja2VyQ2xvc2U6ImNvbG9yUGlja2VyQ2xvc2UiLGNvbG9yUGlja2VyQ2FuY2VsOiJjb2xvclBpY2tlckNhbmNlbCIsY29sb3JQaWNrZXJTZWxlY3Q6ImNvbG9yUGlja2VyU2VsZWN0Iixjb2xvclBpY2tlckNoYW5nZToiY29sb3JQaWNrZXJDaGFuZ2UiLGNwQ215a0NvbG9yQ2hhbmdlOiJjcENteWtDb2xvckNoYW5nZSIsY3BQcmVzZXRDb2xvcnNDaGFuZ2U6ImNwUHJlc2V0Q29sb3JzQ2hhbmdlIn0sZXhwb3J0QXM6WyJuZ3hDb2xvclBpY2tlciJdLGZlYXR1cmVzOltxb119KSxQNS5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOk5wfSx7dHlwZTpHaH0se3R5cGU6SEN9LHt0eXBlOkZifSx7dHlwZTpLaH0se3R5cGU6eDV9XSxQNS5wcm9wRGVjb3JhdG9ycz17Y29sb3JQaWNrZXI6W3t0eXBlOlJffV0sY3BXaWR0aDpbe3R5cGU6Ul99XSxjcEhlaWdodDpbe3R5cGU6Ul99XSxjcFRvZ2dsZTpbe3R5cGU6Ul99XSxjcERpc2FibGVkOlt7dHlwZTpSX31dLGNwSWdub3JlZEVsZW1lbnRzOlt7dHlwZTpSX31dLGNwRmFsbGJhY2tDb2xvcjpbe3R5cGU6Ul99XSxjcENvbG9yTW9kZTpbe3R5cGU6Ul99XSxjcENteWtFbmFibGVkOlt7dHlwZTpSX31dLGNwT3V0cHV0Rm9ybWF0Olt7dHlwZTpSX31dLGNwQWxwaGFDaGFubmVsOlt7dHlwZTpSX31dLGNwRGlzYWJsZUlucHV0Olt7dHlwZTpSX31dLGNwRGlhbG9nRGlzcGxheTpbe3R5cGU6Ul99XSxjcFNhdmVDbGlja091dHNpZGU6W3t0eXBlOlJffV0sY3BDbG9zZUNsaWNrT3V0c2lkZTpbe3R5cGU6Ul99XSxjcFVzZVJvb3RWaWV3Q29udGFpbmVyOlt7dHlwZTpSX31dLGNwUG9zaXRpb246W3t0eXBlOlJffV0sY3BQb3NpdGlvbk9mZnNldDpbe3R5cGU6Ul99XSxjcFBvc2l0aW9uUmVsYXRpdmVUb0Fycm93Olt7dHlwZTpSX31dLGNwT0tCdXR0b246W3t0eXBlOlJffV0sY3BPS0J1dHRvblRleHQ6W3t0eXBlOlJffV0sY3BPS0J1dHRvbkNsYXNzOlt7dHlwZTpSX31dLGNwQ2FuY2VsQnV0dG9uOlt7dHlwZTpSX31dLGNwQ2FuY2VsQnV0dG9uVGV4dDpbe3R5cGU6Ul99XSxjcENhbmNlbEJ1dHRvbkNsYXNzOlt7dHlwZTpSX31dLGNwUHJlc2V0TGFiZWw6W3t0eXBlOlJffV0sY3BQcmVzZXRDb2xvcnM6W3t0eXBlOlJffV0sY3BQcmVzZXRDb2xvcnNDbGFzczpbe3R5cGU6Ul99XSxjcE1heFByZXNldENvbG9yc0xlbmd0aDpbe3R5cGU6Ul99XSxjcFByZXNldEVtcHR5TWVzc2FnZTpbe3R5cGU6Ul99XSxjcFByZXNldEVtcHR5TWVzc2FnZUNsYXNzOlt7dHlwZTpSX31dLGNwQWRkQ29sb3JCdXR0b246W3t0eXBlOlJffV0sY3BBZGRDb2xvckJ1dHRvblRleHQ6W3t0eXBlOlJffV0sY3BBZGRDb2xvckJ1dHRvbkNsYXNzOlt7dHlwZTpSX31dLGNwUmVtb3ZlQ29sb3JCdXR0b25DbGFzczpbe3R5cGU6Ul99XSxjcElucHV0Q2hhbmdlOlt7dHlwZTpFX31dLGNwVG9nZ2xlQ2hhbmdlOlt7dHlwZTpFX31dLGNwU2xpZGVyQ2hhbmdlOlt7dHlwZTpFX31dLGNwU2xpZGVyRHJhZ0VuZDpbe3R5cGU6RV99XSxjcFNsaWRlckRyYWdTdGFydDpbe3R5cGU6RV99XSxjb2xvclBpY2tlck9wZW46W3t0eXBlOkVffV0sY29sb3JQaWNrZXJDbG9zZTpbe3R5cGU6RV99XSxjb2xvclBpY2tlckNhbmNlbDpbe3R5cGU6RV99XSxjb2xvclBpY2tlclNlbGVjdDpbe3R5cGU6RV99XSxjb2xvclBpY2tlckNoYW5nZTpbe3R5cGU6RV99XSxjcENteWtDb2xvckNoYW5nZTpbe3R5cGU6RV99XSxjcFByZXNldENvbG9yc0NoYW5nZTpbe3R5cGU6RV99XSxoYW5kbGVDbGljazpbe3R5cGU6VF8sYXJnczpbImNsaWNrIl19XSxoYW5kbGVGb2N1czpbe3R5cGU6VF8sYXJnczpbImZvY3VzIl19XSxoYW5kbGVJbnB1dDpbe3R5cGU6VF8sYXJnczpbImlucHV0IixbIiRldmVudCJdXX1dfSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKFA1LFt7dHlwZTprXyxhcmdzOlt7c2VsZWN0b3I6Iltjb2xvclBpY2tlcl0iLGV4cG9ydEFzOiJuZ3hDb2xvclBpY2tlciJ9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpOcH0se3R5cGU6R2h9LHt0eXBlOkhDfSx7dHlwZTpGYn0se3R5cGU6S2h9LHt0eXBlOng1fV19KSx7Y3BXaWR0aDpbe3R5cGU6Ul99XSxjcEhlaWdodDpbe3R5cGU6Ul99XSxjcFRvZ2dsZTpbe3R5cGU6Ul99XSxjcERpc2FibGVkOlt7dHlwZTpSX31dLGNwSWdub3JlZEVsZW1lbnRzOlt7dHlwZTpSX31dLGNwRmFsbGJhY2tDb2xvcjpbe3R5cGU6Ul99XSxjcENvbG9yTW9kZTpbe3R5cGU6Ul99XSxjcENteWtFbmFibGVkOlt7dHlwZTpSX31dLGNwT3V0cHV0Rm9ybWF0Olt7dHlwZTpSX31dLGNwQWxwaGFDaGFubmVsOlt7dHlwZTpSX31dLGNwRGlzYWJsZUlucHV0Olt7dHlwZTpSX31dLGNwRGlhbG9nRGlzcGxheTpbe3R5cGU6Ul99XSxjcFNhdmVDbGlja091dHNpZGU6W3t0eXBlOlJffV0sY3BDbG9zZUNsaWNrT3V0c2lkZTpbe3R5cGU6Ul99XSxjcFVzZVJvb3RWaWV3Q29udGFpbmVyOlt7dHlwZTpSX31dLGNwUG9zaXRpb246W3t0eXBlOlJffV0sY3BQb3NpdGlvbk9mZnNldDpbe3R5cGU6Ul99XSxjcFBvc2l0aW9uUmVsYXRpdmVUb0Fycm93Olt7dHlwZTpSX31dLGNwT0tCdXR0b246W3t0eXBlOlJffV0sY3BPS0J1dHRvblRleHQ6W3t0eXBlOlJffV0sY3BPS0J1dHRvbkNsYXNzOlt7dHlwZTpSX31dLGNwQ2FuY2VsQnV0dG9uOlt7dHlwZTpSX31dLGNwQ2FuY2VsQnV0dG9uVGV4dDpbe3R5cGU6Ul99XSxjcENhbmNlbEJ1dHRvbkNsYXNzOlt7dHlwZTpSX31dLGNwUHJlc2V0TGFiZWw6W3t0eXBlOlJffV0sY3BQcmVzZXRDb2xvcnNDbGFzczpbe3R5cGU6Ul99XSxjcE1heFByZXNldENvbG9yc0xlbmd0aDpbe3R5cGU6Ul99XSxjcFByZXNldEVtcHR5TWVzc2FnZTpbe3R5cGU6Ul99XSxjcFByZXNldEVtcHR5TWVzc2FnZUNsYXNzOlt7dHlwZTpSX31dLGNwQWRkQ29sb3JCdXR0b246W3t0eXBlOlJffV0sY3BBZGRDb2xvckJ1dHRvblRleHQ6W3t0eXBlOlJffV0sY3BBZGRDb2xvckJ1dHRvbkNsYXNzOlt7dHlwZTpSX31dLGNwUmVtb3ZlQ29sb3JCdXR0b25DbGFzczpbe3R5cGU6Ul99XSxjcElucHV0Q2hhbmdlOlt7dHlwZTpFX31dLGNwVG9nZ2xlQ2hhbmdlOlt7dHlwZTpFX31dLGNwU2xpZGVyQ2hhbmdlOlt7dHlwZTpFX31dLGNwU2xpZGVyRHJhZ0VuZDpbe3R5cGU6RV99XSxjcFNsaWRlckRyYWdTdGFydDpbe3R5cGU6RV99XSxjb2xvclBpY2tlck9wZW46W3t0eXBlOkVffV0sY29sb3JQaWNrZXJDbG9zZTpbe3R5cGU6RV99XSxjb2xvclBpY2tlckNhbmNlbDpbe3R5cGU6RV99XSxjb2xvclBpY2tlclNlbGVjdDpbe3R5cGU6RV99XSxjb2xvclBpY2tlckNoYW5nZTpbe3R5cGU6RV99XSxjcENteWtDb2xvckNoYW5nZTpbe3R5cGU6RV99XSxjcFByZXNldENvbG9yc0NoYW5nZTpbe3R5cGU6RV99XSxoYW5kbGVDbGljazpbe3R5cGU6VF8sYXJnczpbImNsaWNrIl19XSxoYW5kbGVGb2N1czpbe3R5cGU6VF8sYXJnczpbImZvY3VzIl19XSxoYW5kbGVJbnB1dDpbe3R5cGU6VF8sYXJnczpbImlucHV0IixbIiRldmVudCJdXX1dLGNvbG9yUGlja2VyOlt7dHlwZTpSX31dLGNwUHJlc2V0Q29sb3JzOlt7dHlwZTpSX31dfSk7Y2xhc3MgdzV7fXc1Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHx3NSl9LHc1Lsm1bW9kPWZvKHt0eXBlOnc1fSksdzUuybVpbmo9RG4oe3Byb3ZpZGVyczpbeDVdLGltcG9ydHM6W1tyeF1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYih3NSxbe3R5cGU6TF8sYXJnczpbe2ltcG9ydHM6W3J4XSxleHBvcnRzOltQNV0scHJvdmlkZXJzOlt4NV0sZGVjbGFyYXRpb25zOltPNSxQNSxfNSxDNV0sZW50cnlDb21wb25lbnRzOltPNV19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZ1byh3NSx7ZGVjbGFyYXRpb25zOmZ1bmN0aW9uKCl7cmV0dXJuW081LFA1LF81LEM1XX0saW1wb3J0czpmdW5jdGlvbigpe3JldHVybltyeF19LGV4cG9ydHM6ZnVuY3Rpb24oKXtyZXR1cm5bUDVdfX0pO2NvbnN0IGs1PVsiZmlsdGVyIl07ZnVuY3Rpb24gUzUodCxlKXsxJnQmJlBmKDApfWZ1bmN0aW9uIEQ1KHQsZSl7MSZ0JiZQZigwKX1jb25zdCBSNT1mdW5jdGlvbih0KXtyZXR1cm57aXRlbTp0fX07ZnVuY3Rpb24gRTUodCxlKXtpZigxJnQmJih4ZigwKSxIbSgxLEQ1LDEsMCwibmctY29udGFpbmVyIiwxMiksT2YoKSksMiZ0KXtjb25zdCB0PWUuJGltcGxpY2l0O3pmKCk7Y29uc3Qgbj1GbSgxNCk7RGMoMSksYmYoIm5nVGVtcGxhdGVPdXRsZXQiLG4pKCJuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dCIsaXkoMixSNSx0KSl9fWZ1bmN0aW9uIEE1KHQsZSl7MSZ0JiYoQ2YoMCwiZGl2IiwxMyksdmYoMSwibWF0LXNwaW5uZXIiLDE0KSxNZigpKX1mdW5jdGlvbiBUNSh0LGUpezEmdCYmKENmKDAsImRpdiIsMTUpLFB1KDEsIk5vIFJ1bnMiKSxNZigpKX1mdW5jdGlvbiBONSh0LGUpe2lmKDEmdCYmKENmKDAsImRpdiIsMTUpLENmKDEsInNwYW4iKSxQdSgyLCdObyBydW5zIG1hdGNoICInKSxDZigzLCJjb2RlIiksUHUoNCksTWYoKSxQdSg1LCciJyksTWYoKSxNZigpKSwyJnQpe2NvbnN0IHQ9emYoKTtEYyg0KSx3dSh0LnJlZ2V4RmlsdGVyKX19Y29uc3QgejU9ZnVuY3Rpb24oKXtyZXR1cm5bNSwxMCwyMF19O2Z1bmN0aW9uIEk1KHQsZSl7aWYoMSZ0KXtjb25zdCB0PXdmKCk7Q2YoMCwibWF0LXBhZ2luYXRvciIsMTYpLFJmKCJwYWdlIiwoZnVuY3Rpb24gZShuKXtQaSh0KTtyZXR1cm4gemYoKS5vblBhZ2luYXRpb25DaGFuZ2UuZW1pdChuKX0pKSxNZigpfWlmKDImdCl7Y29uc3QgdD16ZigpO2JmKCJwYWdlU2l6ZU9wdGlvbnMiLG95KDQsejUpKSgicGFnZUluZGV4Iix0LnBhZ2luYXRpb25PcHRpb24ucGFnZUluZGV4KSgicGFnZVNpemUiLHQucGFnaW5hdGlvbk9wdGlvbi5wYWdlU2l6ZSkoImxlbmd0aCIsdC5maWx0ZXJlZEl0ZW1zTGVuZ3RoKX19ZnVuY3Rpb24gSDUodCxlKXtpZigxJnQpe2NvbnN0IHQ9d2YoKTtDZigwLCJtYXQtY2hlY2tib3giLDI2KSxSZigiY2hhbmdlIiwoZnVuY3Rpb24gZSgpe1BpKHQpO3JldHVybiB6ZigzKS5oYW5kbGVQYWdlVG9nZ2xlKCl9KSksTWYoKX1pZigyJnQpe2NvbnN0IHQ9emYoMyk7YmYoImNoZWNrZWQiLHQuYWxsUGFnZUl0ZW1zU2VsZWN0ZWQoKSkoImluZGV0ZXJtaW5hdGUiLCF0LmFsbFBhZ2VJdGVtc1NlbGVjdGVkKCkmJnQuc29tZVBhZ2VJdGVtc1NlbGVjdGVkKCkpfX1jb25zdCBGNT1mdW5jdGlvbih0KXtyZXR1cm57dHlwZTp0fX07ZnVuY3Rpb24gTDUodCxlKXtpZigxJnQmJihDZigwLCJzcGFuIiwyNyksUHUoMSwiRXhwZXJpbWVudCIpLE1mKCkpLDImdCl7Y29uc3QgdD16ZigzKTtiZigibWF0LXNvcnQtaGVhZGVyIixpeSgxLEY1LHQuU29ydFR5cGUuRVhQRVJJTUVOVF9OQU1FKSl9fWZ1bmN0aW9uIEI1KHQsZSl7aWYoMSZ0JiYoQ2YoMCwic3BhbiIsMjcpLFB1KDEsIlJ1biIpLE1mKCkpLDImdCl7Y29uc3QgdD16ZigzKTtiZigibWF0LXNvcnQtaGVhZGVyIixpeSgxLEY1LHQuU29ydFR5cGUuUlVOX05BTUUpKX19ZnVuY3Rpb24gVjUodCxlKXtpZigxJnQmJnZmKDAsInJ1bnMtZ3JvdXAtbWVudS1idXR0b24iLDI5KSwyJnQpe2JmKCJleHBlcmltZW50SWRzIix6Zig0KS5leHBlcmltZW50SWRzKX19ZnVuY3Rpb24gajUodCxlKXtpZigxJnQmJihDZigwLCJzcGFuIiksSG0oMSxWNSwxLDEsInJ1bnMtZ3JvdXAtbWVudS1idXR0b24iLDI4KSxNZigpKSwyJnQpe2NvbnN0IHQ9emYoMyk7RGMoMSksYmYoIm5nSWYiLHQuc2hvd0dyb3VwQ29udHJvbCl9fWNvbnN0IFU1PWZ1bmN0aW9uKHQpe3JldHVyblsiY29sdW1uIix0XX07ZnVuY3Rpb24gVzUodCxlKXtpZigxJnQmJihDZigwLCJzcGFuIiwyMSkseGYoMSwyMiksSG0oMixINSwxLDIsIm1hdC1jaGVja2JveCIsMjMpLEhtKDMsTDUsMiwzLCJzcGFuIiwyNCksSG0oNCxCNSwyLDMsInNwYW4iLDI0KSxIbSg1LGo1LDIsMSwic3BhbiIsMjUpLE9mKCksTWYoKSksMiZ0KXtjb25zdCB0PWUuJGltcGxpY2l0LG49emYoMik7YmYoIm5nQ2xhc3MiLGl5KDYsVTUsInRiLWNvbHVtbi0iK3QpKSxEYygxKSxiZigibmdTd2l0Y2giLHQpLERjKDEpLGJmKCJuZ1N3aXRjaENhc2UiLG4uUnVuc1RhYmxlQ29sdW1uLkNIRUNLQk9YKSxEYygxKSxiZigibmdTd2l0Y2hDYXNlIixuLlJ1bnNUYWJsZUNvbHVtbi5FWFBFUklNRU5UX05BTUUpLERjKDEpLGJmKCJuZ1N3aXRjaENhc2UiLG4uUnVuc1RhYmxlQ29sdW1uLlJVTl9OQU1FKSxEYygxKSxiZigibmdTd2l0Y2hDYXNlIixuLlJ1bnNUYWJsZUNvbHVtbi5SVU5fQ09MT1IpfX1mdW5jdGlvbiBHNSh0LGUpe2lmKDEmdCl7Y29uc3QgdD13ZigpO3hmKDApLENmKDEsImRpdiIsMzgpLFJmKCJjbGljayIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIGUuc3RvcFByb3BhZ2F0aW9uKCl9KSksQ2YoMiwidGItcmFuZ2UtaW5wdXQiLDM5KSxSZigidmFsdWUiLChmdW5jdGlvbiBlKG4pe1BpKHQpO2NvbnN0IG89emYoMikuJGltcGxpY2l0O3JldHVybiB6ZigyKS5oYW5kbGVIcGFyYW1JbnRlcnZhbENoYW5nZWQobyxuKX0pKSxNZigpLE1mKCksT2YoKX1pZigyJnQpe2NvbnN0IHQ9emYoMikuJGltcGxpY2l0O0RjKDIpLGJmKCJtaW4iLHQuZmlsdGVyLm1pblZhbHVlKSgibWF4Iix0LmZpbHRlci5tYXhWYWx1ZSkoImxvd2VyVmFsdWUiLHQuZmlsdGVyLmZpbHRlckxvd2VyVmFsdWUpKCJ1cHBlclZhbHVlIix0LmZpbHRlci5maWx0ZXJVcHBlclZhbHVlKX19ZnVuY3Rpb24gWTUodCxlKXtpZigxJnQpe2NvbnN0IHQ9d2YoKTtDZigwLCJkaXYiLDQxKSxSZigiY2xpY2siLChmdW5jdGlvbiB0KGUpe3JldHVybiBlLnN0b3BQcm9wYWdhdGlvbigpfSkpLENmKDEsIm1hdC1jaGVja2JveCIsMzcpLFJmKCJjaGFuZ2UiLChmdW5jdGlvbiBlKCl7Y29uc3Qgbj1QaSh0KS4kaW1wbGljaXQsbz16ZigzKS4kaW1wbGljaXQ7cmV0dXJuIHpmKDIpLmhhbmRsZUhwYXJhbURpc2NyZXRlQ2hhbmdlZChvLG4pfSkpLENmKDIsInNwYW4iKSxQdSgzKSxNZigpLE1mKCksTWYoKX1pZigyJnQpe2NvbnN0IHQ9ZS4kaW1wbGljaXQsbj16ZigzKS4kaW1wbGljaXQ7RGMoMSksYmYoImNoZWNrZWQiLG4uZmlsdGVyLmZpbHRlclZhbHVlcy5pbmNsdWRlcyh0KSksRGMoMiksd3UodCl9fWZ1bmN0aW9uIHE1KHQsZSl7aWYoMSZ0JiYoeGYoMCksSG0oMSxZNSw0LDIsImRpdiIsNDApLE9mKCkpLDImdCl7Y29uc3QgdD16ZigyKS4kaW1wbGljaXQ7RGMoMSksYmYoIm5nRm9yT2YiLHQuZmlsdGVyLnBvc3NpYmxlVmFsdWVzKX19ZnVuY3Rpb24gWjUodCxlKXtpZigxJnQpe2NvbnN0IHQ9d2YoKTt4ZigwKSxDZigxLCJidXR0b24iLDMzKSxSZigiY2xpY2siLChmdW5jdGlvbiB0KGUpe3JldHVybiBlLnN0b3BQcm9wYWdhdGlvbigpfSkpLHZmKDIsIm1hdC1pY29uIiwzNCksTWYoKSxDZigzLCJtYXQtbWVudSIsbnVsbCwzNSksQ2YoNSwiZGl2IiwzNiksUmYoImNsaWNrIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gZS5zdG9wUHJvcGFnYXRpb24oKX0pKSxDZig2LCJtYXQtY2hlY2tib3giLDM3KSxSZigiY2hhbmdlIiwoZnVuY3Rpb24gZSgpe1BpKHQpO2NvbnN0IG49emYoKS4kaW1wbGljaXQ7cmV0dXJuIHpmKDIpLmhhbmRsZUhwYXJhbUluY2x1ZGVVbmRlZmluZWRUb2dnbGVkKG4pfSkpLENmKDcsInNwYW4iKSxQdSg4LCIoc2hvdyBlbXB0eSB2YWx1ZSkiKSxNZigpLE1mKCksTWYoKSxIbSg5LEc1LDMsNCwibmctY29udGFpbmVyIiwzMiksSG0oMTAscTUsMiwxLCJuZy1jb250YWluZXIiLDMyKSxNZigpLE9mKCl9aWYoMiZ0KXtjb25zdCB0PUZtKDQpLGU9emYoKS4kaW1wbGljaXQsbj16ZigyKTtEYygxKSxiZigibWF0TWVudVRyaWdnZXJGb3IiLHQpLHltKCJhcmlhLWxhYmVsIiwiRmlsdGVyIGhwYXJhbSAiKyhlLmRpc3BsYXlOYW1lfHxlLm5hbWUpKSxEYyg1KSxiZigiY2hlY2tlZCIsZS5maWx0ZXIuaW5jbHVkZVVuZGVmaW5lZCksRGMoMyksYmYoIm5nSWYiLGUuZmlsdGVyLnR5cGU9PT1uLkRvbWFpblR5cGUuSU5URVJWQUwpLERjKDEpLGJmKCJuZ0lmIixlLmZpbHRlci50eXBlPT09bi5Eb21haW5UeXBlLkRJU0NSRVRFKX19Y29uc3QgWDU9ZnVuY3Rpb24odCxlKXtyZXR1cm57dHlwZTp0LG5hbWU6ZX19O2Z1bmN0aW9uIEs1KHQsZSl7aWYoMSZ0JiYoQ2YoMCwic3BhbiIsMzApLENmKDEsInNwYW4iLDMxKSxQdSgyKSxNZigpLEhtKDMsWjUsMTEsNSwibmctY29udGFpbmVyIiwzMiksTWYoKSksMiZ0KXtjb25zdCB0PWUuJGltcGxpY2l0LG49emYoMik7YmYoIm1hdC1zb3J0LWhlYWRlciIsYXkoMyxYNSxuLlNvcnRUeXBlLkhQQVJBTSx0Lm5hbWUpKSxEYygyKSx3dSh0LmRpc3BsYXlOYW1lfHx0Lm5hbWUpLERjKDEpLGJmKCJuZ0lmIix0LmZpbHRlcil9fWZ1bmN0aW9uIEo1KHQsZSl7aWYoMSZ0KXtjb25zdCB0PXdmKCk7eGYoMCksQ2YoMSwiYnV0dG9uIiwzMyksUmYoImNsaWNrIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gZS5zdG9wUHJvcGFnYXRpb24oKX0pKSx2ZigyLCJtYXQtaWNvbiIsMzQpLE1mKCksQ2YoMywibWF0LW1lbnUiLG51bGwsMzUpLENmKDUsImRpdiIsMzYpLFJmKCJjbGljayIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIGUuc3RvcFByb3BhZ2F0aW9uKCl9KSksQ2YoNiwibWF0LWNoZWNrYm94IiwzNyksUmYoImNoYW5nZSIsKGZ1bmN0aW9uIGUoKXtQaSh0KTtjb25zdCBuPXpmKCkuJGltcGxpY2l0O3JldHVybiB6ZigyKS5oYW5kbGVNZXRyaWNJbmNsdWRlVW5kZWZpbmVkQ2hhbmdlZChuKX0pKSxDZig3LCJzcGFuIiksUHUoOCwiKHNob3cgZW1wdHkgdmFsdWUpIiksTWYoKSxNZigpLE1mKCksQ2YoOSwiZGl2IiwzOCksUmYoImNsaWNrIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gZS5zdG9wUHJvcGFnYXRpb24oKX0pKSxDZigxMCwidGItcmFuZ2UtaW5wdXQiLDM5KSxSZigidmFsdWUiLChmdW5jdGlvbiBlKG4pe1BpKHQpO2NvbnN0IG89emYoKS4kaW1wbGljaXQ7cmV0dXJuIHpmKDIpLmhhbmRsZU1ldHJpY0ZpbHRlckNoYW5nZWQobyxuKX0pKSxNZigpLE1mKCksTWYoKSxPZigpfWlmKDImdCl7Y29uc3QgdD1GbSg0KSxlPXpmKCkuJGltcGxpY2l0O0RjKDEpLGJmKCJtYXRNZW51VHJpZ2dlckZvciIsdCkseW0oImFyaWEtbGFiZWwiLCJGaWx0ZXIgbWV0cmljICIrKGUuZGlzcGxheU5hbWV8fGUudGFnKSksRGMoNSksYmYoImNoZWNrZWQiLGUuZmlsdGVyLmluY2x1ZGVVbmRlZmluZWQpLERjKDQpLGJmKCJtaW4iLGUuZmlsdGVyLm1pblZhbHVlKSgibWF4IixlLmZpbHRlci5tYXhWYWx1ZSkoImxvd2VyVmFsdWUiLGUuZmlsdGVyLmZpbHRlckxvd2VyVmFsdWUpKCJ1cHBlclZhbHVlIixlLmZpbHRlci5maWx0ZXJVcHBlclZhbHVlKX19Y29uc3QgUTU9ZnVuY3Rpb24odCxlKXtyZXR1cm57dHlwZTp0LHRhZzplfX07ZnVuY3Rpb24gJDUodCxlKXtpZigxJnQmJihDZigwLCJzcGFuIiwzMCksQ2YoMSwic3BhbiIsMzEpLFB1KDIpLE1mKCksSG0oMyxKNSwxMSw3LCJuZy1jb250YWluZXIiLDMyKSxNZigpKSwyJnQpe2NvbnN0IHQ9ZS4kaW1wbGljaXQsbj16ZigyKTtiZigibWF0LXNvcnQtaGVhZGVyIixheSgzLFE1LG4uU29ydFR5cGUuTUVUUklDLHQudGFnKSksRGMoMiksd3UodC5kaXNwbGF5TmFtZXx8dC50YWcpLERjKDEpLGJmKCJuZ0lmIix0LmZpbHRlcil9fWZ1bmN0aW9uIHQ0KHQsZSl7aWYoMSZ0KXtjb25zdCB0PXdmKCk7Q2YoMCwiZGl2IiwxNyksQ2YoMSwiZGl2IiwxOCksUmYoIm1hdFNvcnRDaGFuZ2UiLChmdW5jdGlvbiBlKG4pe1BpKHQpO3JldHVybiB6ZigpLmhhbmRsZVNvcnRDaGFuZ2Uobil9KSksSG0oMixXNSw2LDgsInNwYW4iLDE5KSxIbSgzLEs1LDQsNiwic3BhbiIsMjApLEhtKDQsJDUsNCw2LCJzcGFuIiwyMCksTWYoKSxNZigpfWlmKDImdCl7Y29uc3QgdD16ZigpO0RjKDEpLGJmKCJtYXRTb3J0QWN0aXZlIix0LnNvcnRPcHRpb24uY29sdW1uKSxEYygxKSxiZigibmdGb3JPZiIsdC5jb2x1bW5zKSxEYygxKSxiZigibmdGb3JPZiIsdC5ocGFyYW1Db2x1bW5zKSgibmdGb3JUcmFja0J5Iix0LnRyYWNrQnlIcGFyYW1Db2x1bW4pLERjKDEpLGJmKCJuZ0Zvck9mIix0Lm1ldHJpY0NvbHVtbnMpKCJuZ0ZvclRyYWNrQnkiLHQudHJhY2tCeU1ldHJpY0NvbHVtbil9fWZ1bmN0aW9uIGU0KHQsZSl7aWYoMSZ0KXtjb25zdCB0PXdmKCk7Q2YoMCwic3BhbiIpLENmKDEsIm1hdC1jaGVja2JveCIsMzcpLFJmKCJjaGFuZ2UiLChmdW5jdGlvbiBlKCl7UGkodCk7Y29uc3Qgbj16ZigyKS5pdGVtO3JldHVybiB6ZigpLm9uU2VsZWN0aW9uVG9nZ2xlLmVtaXQobil9KSksTWYoKSxNZigpfWlmKDImdCl7Y29uc3QgdD16ZigyKS5pdGVtO0RjKDEpLGJmKCJjaGVja2VkIix0LnNlbGVjdGVkKX19ZnVuY3Rpb24gbjQodCxlKXtpZigxJnQmJnZmKDAsInRiLWV4cGVyaW1lbnQtYWxpYXMiLDQ4KSwyJnQpe2JmKCJhbGlhcyIsemYoMikuaXRlbS5leHBlcmltZW50QWxpYXMpfX1mdW5jdGlvbiBvNCh0LGUpe2lmKDEmdCYmKENmKDAsInNwYW4iLDMxKSxQdSgxKSxNZigpKSwyJnQpe2NvbnN0IHQ9emYoMikuaXRlbTtEYygxKSx3dSh0LnJ1bi5uYW1lKX19Y29uc3QgaTQ9ZnVuY3Rpb24odCl7cmV0dXJueyJydW4tY29sb3Itc3dhdGNoIjohMCwibm8tY29sb3IiOnR9fTtmdW5jdGlvbiBhNCh0LGUpe2lmKDEmdCl7Y29uc3QgdD13ZigpO0NmKDAsInNwYW4iKSxDZigxLCJidXR0b24iLDQ5KSxSZigiY29sb3JQaWNrZXJDaGFuZ2UiLChmdW5jdGlvbiBlKG4pe1BpKHQpO2NvbnN0IG89emYoMikuaXRlbTtyZXR1cm4gemYoKS5vblJ1bkNvbG9yQ2hhbmdlLmVtaXQoe3J1bklkOm8ucnVuLmlkLG5ld0NvbG9yOm59KX0pKSxNZigpLE1mKCl9aWYoMiZ0KXtjb25zdCB0PXpmKDIpLml0ZW07RGMoMSksbHUoImJhY2tncm91bmQiLHQucnVuQ29sb3IpLGJmKCJuZ0NsYXNzIixpeSg4LGk0LCF0LnJ1bkNvbG9yKSkoImNvbG9yUGlja2VyIix0LnJ1bkNvbG9yKSgiY3BEaWFsb2dEaXNwbGF5IiwicG9wdXAiKSgiY3BQb3NpdGlvbk9mZnNldCIsLTIwKSgiY3BVc2VSb290Vmlld0NvbnRhaW5lciIsITApKCJjcE91dHB1dEZvcm1hdCIsImhleCIpfX1mdW5jdGlvbiByNCh0LGUpe2lmKDEmdCYmKENmKDAsInNwYW4iLDQ1KSx4ZigxLDIyKSxIbSgyLGU0LDIsMSwic3BhbiIsMjUpLEhtKDMsbjQsMSwxLCJ0Yi1leHBlcmltZW50LWFsaWFzIiw0NiksSG0oNCxvNCwyLDEsInNwYW4iLDQ3KSxIbSg1LGE0LDIsMTAsInNwYW4iLDI1KSxPZigpLE1mKCkpLDImdCl7Y29uc3QgdD1lLiRpbXBsaWNpdCxuPXpmKDIpO2JmKCJuZ0NsYXNzIixpeSg2LFU1LCJ0Yi1jb2x1bW4tIit0KSksRGMoMSksYmYoIm5nU3dpdGNoIix0KSxEYygxKSxiZigibmdTd2l0Y2hDYXNlIixuLlJ1bnNUYWJsZUNvbHVtbi5DSEVDS0JPWCksRGMoMSksYmYoIm5nU3dpdGNoQ2FzZSIsbi5SdW5zVGFibGVDb2x1bW4uRVhQRVJJTUVOVF9OQU1FKSxEYygxKSxiZigibmdTd2l0Y2hDYXNlIixuLlJ1bnNUYWJsZUNvbHVtbi5SVU5fTkFNRSksRGMoMSksYmYoIm5nU3dpdGNoQ2FzZSIsbi5SdW5zVGFibGVDb2x1bW4uUlVOX0NPTE9SKX19ZnVuY3Rpb24gczQodCxlKXtpZigxJnQmJihDZigwLCJzcGFuIiw1MCksUHUoMSksTWYoKSksMiZ0KXtjb25zdCB0PWUuJGltcGxpY2l0LG49emYoKS5pdGVtO0RjKDEpLHd1KG4uaHBhcmFtcy5nZXQodC5uYW1lKSl9fWZ1bmN0aW9uIGw0KHQsZSl7aWYoMSZ0JiYoQ2YoMCwic3BhbiIsNTApLFB1KDEpLE1mKCkpLDImdCl7Y29uc3QgdD1lLiRpbXBsaWNpdCxuPXpmKCkuaXRlbTtEYygxKSx3dShuLm1ldHJpY3MuZ2V0KHQudGFnKSl9fWZ1bmN0aW9uIGM0KHQsZSl7aWYoMSZ0JiYoQ2YoMCwiZGl2Iiw0MiksSG0oMSxyNCw2LDgsInNwYW4iLDQzKSxIbSgyLHM0LDIsMSwic3BhbiIsNDQpLEhtKDMsbDQsMiwxLCJzcGFuIiw0NCksTWYoKSksMiZ0KXtjb25zdCB0PWUuaXRlbSxuPXpmKCk7eW0oImRhdGEtaWQiLHQucnVuLmlkKSxEYygxKSxiZigibmdGb3JPZiIsbi5jb2x1bW5zKSxEYygxKSxiZigibmdGb3JPZiIsbi5ocGFyYW1Db2x1bW5zKSxEYygxKSxiZigibmdGb3JPZiIsbi5tZXRyaWNDb2x1bW5zKX19Y2xhc3MgZDQgZXh0ZW5kcyBYMHtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5pdGVtc1BlclBhZ2VMYWJlbD0iU2hvdyBydW5zOiJ9fWQ0Lsm1ZmFjPShmdW5jdGlvbigpe2xldCB0O3JldHVybiBmdW5jdGlvbiBlKG4pe3JldHVybih0fHwodD1VYShkNCkpKShufHxkNCl9fSkoKSxkNC7JtXByb3Y9U24oe3Rva2VuOmQ0LGZhY3Rvcnk6ZDQuybVmYWN9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKGQ0LFt7dHlwZTpVbX1dLG51bGwsbnVsbCk7Y2xhc3MgcDR7Y29uc3RydWN0b3IoKXt0aGlzLmRhdGFTb3VyY2U9bmV3IEQzLHRoaXMuRG9tYWluVHlwZT1rVCx0aGlzLlJ1bnNUYWJsZUNvbHVtbj14MCx0aGlzLlNvcnRUeXBlPUZ6LHRoaXMub25SZWdleEZpbHRlckNoYW5nZT1uZXcgU3ksdGhpcy5vblNlbGVjdGlvblRvZ2dsZT1uZXcgU3ksdGhpcy5vblBhZ2VTZWxlY3Rpb25Ub2dnbGU9bmV3IFN5LHRoaXMub25QYWdpbmF0aW9uQ2hhbmdlPW5ldyBTeSx0aGlzLm9uU29ydENoYW5nZT1uZXcgU3ksdGhpcy5vblJ1bkNvbG9yQ2hhbmdlPW5ldyBTeSx0aGlzLm9uSHBhcmFtRGlzY3JldGVGaWx0ZXJDaGFuZ2VkPW5ldyBTeSx0aGlzLm9uSHBhcmFtSW50ZXJ2YWxGaWx0ZXJDaGFuZ2VkPW5ldyBTeSx0aGlzLm9uTWV0cmljRmlsdGVyQ2hhbmdlZD1uZXcgU3l9bmdPbkNoYW5nZXMoKXt0aGlzLmRhdGFTb3VyY2UuZGF0YT10aGlzLnBhZ2VJdGVtc31nZXRIcGFyYW1Db2x1bW5JZCh0KXtyZXR1cm5gaDoke3QubmFtZX1gfWdldE1ldHJpY0NvbHVtbklkKHQpe3JldHVybmBtOiR7dC50YWd9YH1nZXRDb2x1bW5JZHMoKXtyZXR1cm5bLi4udGhpcy5jb2x1bW5zLC4uLnRoaXMuaHBhcmFtQ29sdW1ucy5tYXAodGhpcy5nZXRIcGFyYW1Db2x1bW5JZCksLi4udGhpcy5tZXRyaWNDb2x1bW5zLm1hcCh0aGlzLmdldE1ldHJpY0NvbHVtbklkKV19YWxsUGFnZUl0ZW1zU2VsZWN0ZWQoKXtyZXR1cm4gQm9vbGVhbih0aGlzLnBhZ2VJdGVtcy5sZW5ndGgpJiZ0aGlzLnBhZ2VJdGVtcy5ldmVyeSgodD0+dC5zZWxlY3RlZCkpfXNvbWVQYWdlSXRlbXNTZWxlY3RlZCgpe3JldHVybiB0aGlzLnBhZ2VJdGVtcy5zb21lKCh0PT50LnNlbGVjdGVkKSl9aGFuZGxlUGFnZVRvZ2dsZSgpe3RoaXMub25QYWdlU2VsZWN0aW9uVG9nZ2xlLmVtaXQoe2l0ZW1zOnRoaXMucGFnZUl0ZW1zfSl9aGFuZGxlU29ydENoYW5nZSh0KXtsZXQgZTtzd2l0Y2godC5kaXJlY3Rpb24pe2Nhc2UiYXNjIjplPXZJLkFTQzticmVhaztjYXNlImRlc2MiOmU9dkkuREVTQzticmVhaztkZWZhdWx0OmU9dkkuVU5TRVR9dGhpcy5vblNvcnRDaGFuZ2UuZW1pdCh7a2V5OnQuYWN0aXZlLGRpcmVjdGlvbjplfSl9b25GaWx0ZXJLZXlVcCh0KXt0aGlzLm9uUmVnZXhGaWx0ZXJDaGFuZ2UuZW1pdCh0LnRhcmdldC52YWx1ZSl9dGFibGVUcmFja0J5KHQsZSl7cmV0dXJuIGUucnVuLmlkfWhhbmRsZUhwYXJhbUluY2x1ZGVVbmRlZmluZWRUb2dnbGVkKHQpe2NvbnN0e25hbWU6ZSxmaWx0ZXI6bn09dDtpZighbil0aHJvdyBuZXcgUmFuZ2VFcnJvcigiSW52YXJpYW50IGVycm9yOiByZXF1aXJlIGZpbHRlciB0byBleGlzdCBmb3IgaXQgdG8gY2hhbmdlIik7bi50eXBlPT09a1QuRElTQ1JFVEU/dGhpcy5vbkhwYXJhbURpc2NyZXRlRmlsdGVyQ2hhbmdlZC5lbWl0KHtocGFyYW1OYW1lOmUsaW5jbHVkZVVuZGVmaW5lZDohbi5pbmNsdWRlVW5kZWZpbmVkLGZpbHRlclZhbHVlczpuLmZpbHRlclZhbHVlc30pOnRoaXMub25IcGFyYW1JbnRlcnZhbEZpbHRlckNoYW5nZWQuZW1pdCh7bmFtZTplLGluY2x1ZGVVbmRlZmluZWQ6IW4uaW5jbHVkZVVuZGVmaW5lZCxmaWx0ZXJMb3dlclZhbHVlOm4uZmlsdGVyTG93ZXJWYWx1ZSxmaWx0ZXJVcHBlclZhbHVlOm4uZmlsdGVyVXBwZXJWYWx1ZX0pfWhhbmRsZUhwYXJhbUludGVydmFsQ2hhbmdlZCh0LGUpe2NvbnN0e25hbWU6bixmaWx0ZXI6b309dDtpZighbyl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiSW52YXJpYW50IGVycm9yOiByZXF1aXJlIGZpbHRlciB0byBleGlzdCBmb3IgaXQgdG8gY2hhbmdlIik7dGhpcy5vbkhwYXJhbUludGVydmFsRmlsdGVyQ2hhbmdlZC5lbWl0KHtuYW1lOm4saW5jbHVkZVVuZGVmaW5lZDpvLmluY2x1ZGVVbmRlZmluZWQsZmlsdGVyTG93ZXJWYWx1ZTplLmxvd2VyVmFsdWUsZmlsdGVyVXBwZXJWYWx1ZTplLnVwcGVyVmFsdWV9KX1oYW5kbGVIcGFyYW1EaXNjcmV0ZUNoYW5nZWQodCxlKXtjb25zdHtuYW1lOm4sZmlsdGVyOm99PXQ7aWYoIW8pdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkludmFyaWFudCBlcnJvcjogcmVxdWlyZSBmaWx0ZXIgdG8gZXhpc3QgZm9yIGl0IHRvIGNoYW5nZSIpO2lmKG8udHlwZSE9PWtULkRJU0NSRVRFKXRocm93IG5ldyBSYW5nZUVycm9yKGBJbnZhcmlhbnQgZXJyb3I6IGV4cGVjdGVkIGRpc2NyZXRlIGRvbWFpbiBmb3IgJHtufWApO2NvbnN0IGk9bmV3IFNldChbLi4uby5maWx0ZXJWYWx1ZXNdKTtpLmhhcyhlKT9pLmRlbGV0ZShlKTppLmFkZChlKSx0aGlzLm9uSHBhcmFtRGlzY3JldGVGaWx0ZXJDaGFuZ2VkLmVtaXQoe2hwYXJhbU5hbWU6bixpbmNsdWRlVW5kZWZpbmVkOm8uaW5jbHVkZVVuZGVmaW5lZCxmaWx0ZXJWYWx1ZXM6Wy4uLmldfSl9aGFuZGxlTWV0cmljSW5jbHVkZVVuZGVmaW5lZENoYW5nZWQodCl7aWYoIXQuZmlsdGVyKXRocm93IG5ldyBSYW5nZUVycm9yKCJJbnZhcmlhbnQgZXJyb3I6IHJlcXVpcmUgZmlsdGVyIHRvIGV4aXN0IGZvciBpdCB0byBjaGFuZ2UiKTt0aGlzLm9uTWV0cmljRmlsdGVyQ2hhbmdlZC5lbWl0KHtuYW1lOnQudGFnLGluY2x1ZGVVbmRlZmluZWQ6IXQuZmlsdGVyLmluY2x1ZGVVbmRlZmluZWQsZmlsdGVyTG93ZXJWYWx1ZTp0LmZpbHRlci5maWx0ZXJMb3dlclZhbHVlLGZpbHRlclVwcGVyVmFsdWU6dC5maWx0ZXIuZmlsdGVyVXBwZXJWYWx1ZX0pfWhhbmRsZU1ldHJpY0ZpbHRlckNoYW5nZWQodCxlKXtpZighdC5maWx0ZXIpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkludmFyaWFudCBlcnJvcjogcmVxdWlyZSBmaWx0ZXIgdG8gZXhpc3QgZm9yIGl0IHRvIGNoYW5nZSIpO3RoaXMub25NZXRyaWNGaWx0ZXJDaGFuZ2VkLmVtaXQoe25hbWU6dC50YWcsaW5jbHVkZVVuZGVmaW5lZDp0LmZpbHRlci5pbmNsdWRlVW5kZWZpbmVkLGZpbHRlckxvd2VyVmFsdWU6ZS5sb3dlclZhbHVlLGZpbHRlclVwcGVyVmFsdWU6ZS51cHBlclZhbHVlfSl9dHJhY2tCeUhwYXJhbUNvbHVtbih0KXtyZXR1cm4gdC5uYW1lfXRyYWNrQnlNZXRyaWNDb2x1bW4odCl7cmV0dXJuIHQudGFnfX1wNC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8cDQpfSxwNC7JtWNtcD1zbyh7dHlwZTpwNCxzZWxlY3RvcnM6W1sicnVucy10YWJsZS1jb21wb25lbnQiXV0sdmlld1F1ZXJ5OmZ1bmN0aW9uIHQoZSxuKXtpZigxJmUmJihWeShrNSw3LEtoKSxWeShlMSw3KSxWeShyMSw3KSksMiZlKXtsZXQgdDtCeSh0PVV5KCkpJiYobi5maWx0ZXI9dC5maXJzdCksQnkodD1VeSgpKSYmKG4ucGFnaW5hdG9yPXQuZmlyc3QpLEJ5KHQ9VXkoKSkmJihuLnNvcnQ9dC5maXJzdCl9fSxob3N0VmFyczoyLGhvc3RCaW5kaW5nczpmdW5jdGlvbiB0KGUsbil7MiZlJiZjdSgiZmxleC1sYXlvdXQiLG4udXNlRmxleGlibGVMYXlvdXQpfSxpbnB1dHM6e2V4cGVyaW1lbnRJZHM6ImV4cGVyaW1lbnRJZHMiLHNob3dFeHBlcmltZW50TmFtZToic2hvd0V4cGVyaW1lbnROYW1lIixjb2x1bW5zOiJjb2x1bW5zIixocGFyYW1Db2x1bW5zOiJocGFyYW1Db2x1bW5zIixtZXRyaWNDb2x1bW5zOiJtZXRyaWNDb2x1bW5zIixhbGxJdGVtc0xlbmd0aDoiYWxsSXRlbXNMZW5ndGgiLGZpbHRlcmVkSXRlbXNMZW5ndGg6ImZpbHRlcmVkSXRlbXNMZW5ndGgiLHVzZUZsZXhpYmxlTGF5b3V0OiJ1c2VGbGV4aWJsZUxheW91dCIsdXNlUGFnaW5hdGlvbjoidXNlUGFnaW5hdGlvbiIsc2hvd0dyb3VwQ29udHJvbDoic2hvd0dyb3VwQ29udHJvbCIscGFnZUl0ZW1zOiJwYWdlSXRlbXMiLGxvYWRpbmc6ImxvYWRpbmciLG51bVNlbGVjdGVkSXRlbXM6Im51bVNlbGVjdGVkSXRlbXMiLHNvcnRPcHRpb246InNvcnRPcHRpb24iLHBhZ2luYXRpb25PcHRpb246InBhZ2luYXRpb25PcHRpb24iLHJlZ2V4RmlsdGVyOiJyZWdleEZpbHRlciJ9LG91dHB1dHM6e29uUmVnZXhGaWx0ZXJDaGFuZ2U6Im9uUmVnZXhGaWx0ZXJDaGFuZ2UiLG9uU2VsZWN0aW9uVG9nZ2xlOiJvblNlbGVjdGlvblRvZ2dsZSIsb25QYWdlU2VsZWN0aW9uVG9nZ2xlOiJvblBhZ2VTZWxlY3Rpb25Ub2dnbGUiLG9uUGFnaW5hdGlvbkNoYW5nZToib25QYWdpbmF0aW9uQ2hhbmdlIixvblNvcnRDaGFuZ2U6Im9uU29ydENoYW5nZSIsb25SdW5Db2xvckNoYW5nZToib25SdW5Db2xvckNoYW5nZSIsb25IcGFyYW1EaXNjcmV0ZUZpbHRlckNoYW5nZWQ6Im9uSHBhcmFtRGlzY3JldGVGaWx0ZXJDaGFuZ2VkIixvbkhwYXJhbUludGVydmFsRmlsdGVyQ2hhbmdlZDoib25IcGFyYW1JbnRlcnZhbEZpbHRlckNoYW5nZWQiLG9uTWV0cmljRmlsdGVyQ2hhbmdlZDoib25NZXRyaWNGaWx0ZXJDaGFuZ2VkIn0sZmVhdHVyZXM6W2poKFt7cHJvdmlkZTpYMCx1c2VDbGFzczpkNH1dKSxxb10sZGVjbHM6MTUsdmFyczo4LGNvbnN0czpbWzEsImZpbHRlci1yb3ciXSxbInBsYWNlaG9sZGVyIiwiRmlsdGVyIHJ1bnMgKHJlZ2V4KSIsMSwicnVuLWZpbHRlciIsMywidmFsdWUiLCJrZXl1cCJdLFsxLCJ0YWJsZS1jb250YWluZXIiXSxbInJvbGUiLCJ0YWJsZSJdLFs0LCJuZ1RlbXBsYXRlT3V0bGV0Il0sWyJyb2xlIiwicm93Z3JvdXAiLDEsInJvd3MiXSxbNCwibmdGb3IiLCJuZ0Zvck9mIiwibmdGb3JUcmFja0J5Il0sWyJjbGFzcyIsImxvYWRpbmciLDQsIm5nSWYiXSxbImNsYXNzIiwibm8tcnVucyIsNCwibmdJZiJdLFsic2hvd0ZpcnN0TGFzdEJ1dHRvbnMiLCIiLDMsInBhZ2VTaXplT3B0aW9ucyIsInBhZ2VJbmRleCIsInBhZ2VTaXplIiwibGVuZ3RoIiwicGFnZSIsNCwibmdJZiJdLFsiaGVhZGVyIiwiIl0sWyJyb3ciLCIiXSxbNCwibmdUZW1wbGF0ZU91dGxldCIsIm5nVGVtcGxhdGVPdXRsZXRDb250ZXh0Il0sWzEsImxvYWRpbmciXSxbIm1vZGUiLCJpbmRldGVybWluYXRlIiwiZGlhbWV0ZXIiLCIyOCJdLFsxLCJuby1ydW5zIl0sWyJzaG93Rmlyc3RMYXN0QnV0dG9ucyIsIiIsMywicGFnZVNpemVPcHRpb25zIiwicGFnZUluZGV4IiwicGFnZVNpemUiLCJsZW5ndGgiLCJwYWdlIl0sWyJyb2xlIiwicm93Z3JvdXAiLDEsImhlYWRlciJdLFsibWF0U29ydCIsIiIsInJvbGUiLCJyb3ciLDMsIm1hdFNvcnRBY3RpdmUiLCJtYXRTb3J0Q2hhbmdlIl0sWyJyb2xlIiwiY29sdW1uaGVhZGVyIiwzLCJuZ0NsYXNzIiw0LCJuZ0ZvciIsIm5nRm9yT2YiXSxbInJvbGUiLCJjb2x1bW5oZWFkZXIiLCJjbGFzcyIsImNvbHVtbiIsMywibWF0LXNvcnQtaGVhZGVyIiw0LCJuZ0ZvciIsIm5nRm9yT2YiLCJuZ0ZvclRyYWNrQnkiXSxbInJvbGUiLCJjb2x1bW5oZWFkZXIiLDMsIm5nQ2xhc3MiXSxbMywibmdTd2l0Y2giXSxbMywiY2hlY2tlZCIsImluZGV0ZXJtaW5hdGUiLCJjaGFuZ2UiLDQsIm5nU3dpdGNoQ2FzZSJdLFszLCJtYXQtc29ydC1oZWFkZXIiLDQsIm5nU3dpdGNoQ2FzZSJdLFs0LCJuZ1N3aXRjaENhc2UiXSxbMywiY2hlY2tlZCIsImluZGV0ZXJtaW5hdGUiLCJjaGFuZ2UiXSxbMywibWF0LXNvcnQtaGVhZGVyIl0sWzMsImV4cGVyaW1lbnRJZHMiLDQsIm5nSWYiXSxbMywiZXhwZXJpbWVudElkcyJdLFsicm9sZSIsImNvbHVtbmhlYWRlciIsMSwiY29sdW1uIiwzLCJtYXQtc29ydC1oZWFkZXIiXSxbMSwibmFtZSJdLFs0LCJuZ0lmIl0sWyJtYXQtaWNvbi1idXR0b24iLCIiLDMsIm1hdE1lbnVUcmlnZ2VyRm9yIiwiY2xpY2siXSxbInN2Z0ljb24iLCJmaWx0ZXJfYWx0XzI0cHgiXSxbImZpbHRlck1lbnUiLCJtYXRNZW51Il0sWyJtYXQtbWVudS1pdGVtIiwiIiwicm9sZSIsIm1lbnVpdGVtY2hlY2tib3giLCJkaXNhYmxlUmlwcGxlIiwiIiwxLCJmaWx0ZXItbWVudS1jaGVja2JveC1yb3ciLDMsImNsaWNrIl0sWzMsImNoZWNrZWQiLCJjaGFuZ2UiXSxbImRpc2FibGVSaXBwbGUiLCIiLCJtYXQtbWVudS1pdGVtIiwiIiwxLCJyYW5nZS1pbnB1dC1jb250YWluZXIiLDMsImNsaWNrIl0sWzMsIm1pbiIsIm1heCIsImxvd2VyVmFsdWUiLCJ1cHBlclZhbHVlIiwidmFsdWUiXSxbIm1hdC1tZW51LWl0ZW0iLCIiLCJjbGFzcyIsImZpbHRlci1tZW51LWNoZWNrYm94LXJvdyIsInJvbGUiLCJtZW51aXRlbWNoZWNrYm94IiwzLCJjbGljayIsNCwibmdGb3IiLCJuZ0Zvck9mIl0sWyJtYXQtbWVudS1pdGVtIiwiIiwicm9sZSIsIm1lbnVpdGVtY2hlY2tib3giLDEsImZpbHRlci1tZW51LWNoZWNrYm94LXJvdyIsMywiY2xpY2siXSxbInJvbGUiLCJyb3ciXSxbInJvbGUiLCJjZWxsIiwzLCJuZ0NsYXNzIiw0LCJuZ0ZvciIsIm5nRm9yT2YiXSxbInJvbGUiLCJjZWxsIiwiY2xhc3MiLCJjb2x1bW4iLDQsIm5nRm9yIiwibmdGb3JPZiJdLFsicm9sZSIsImNlbGwiLDMsIm5nQ2xhc3MiXSxbMywiYWxpYXMiLDQsIm5nU3dpdGNoQ2FzZSJdLFsiY2xhc3MiLCJuYW1lIiw0LCJuZ1N3aXRjaENhc2UiXSxbMywiYWxpYXMiXSxbMywibmdDbGFzcyIsImNvbG9yUGlja2VyIiwiY3BEaWFsb2dEaXNwbGF5IiwiY3BQb3NpdGlvbk9mZnNldCIsImNwVXNlUm9vdFZpZXdDb250YWluZXIiLCJjcE91dHB1dEZvcm1hdCIsImNvbG9yUGlja2VyQ2hhbmdlIl0sWyJyb2xlIiwiY2VsbCIsMSwiY29sdW1uIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXtpZigxJmUmJihDZigwLCJkaXYiLDApLENmKDEsInRiLWZpbHRlci1pbnB1dCIsMSksUmYoImtleXVwIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5vbkZpbHRlcktleVVwKGUpfSkpLE1mKCksTWYoKSxDZigyLCJkaXYiLDIpLENmKDMsImRpdiIsMyksSG0oNCxTNSwxLDAsIm5nLWNvbnRhaW5lciIsNCksQ2YoNSwiZGl2Iiw1KSxIbSg2LEU1LDIsNCwibmctY29udGFpbmVyIiw2KSxNZigpLE1mKCksSG0oNyxBNSwyLDAsImRpdiIsNyksSG0oOCxUNSwyLDAsImRpdiIsOCksSG0oOSxONSw2LDEsImRpdiIsOCksTWYoKSxIbSgxMCxJNSwxLDUsIm1hdC1wYWdpbmF0b3IiLDkpLEhtKDExLHQ0LDUsNiwibmctdGVtcGxhdGUiLG51bGwsMTAscXkpLEhtKDEzLGM0LDQsNCwibmctdGVtcGxhdGUiLG51bGwsMTEscXkpKSwyJmUpe2NvbnN0IHQ9Rm0oMTIpO0RjKDEpLExmKCJ2YWx1ZSIsbi5yZWdleEZpbHRlciksRGMoMyksYmYoIm5nVGVtcGxhdGVPdXRsZXQiLHQpLERjKDIpLGJmKCJuZ0Zvck9mIixuLnBhZ2VJdGVtcykoIm5nRm9yVHJhY2tCeSIsbi50YWJsZVRyYWNrQnkpLERjKDEpLGJmKCJuZ0lmIixuLmxvYWRpbmcpLERjKDEpLGJmKCJuZ0lmIiwhbi5sb2FkaW5nJiYwPT09bi5hbGxJdGVtc0xlbmd0aCksRGMoMSksYmYoIm5nSWYiLCFuLmxvYWRpbmcmJm4uYWxsSXRlbXNMZW5ndGg+MCYmMD09PW4uZmlsdGVyZWRJdGVtc0xlbmd0aCksRGMoMSksYmYoIm5nSWYiLG4udXNlUGFnaW5hdGlvbil9fSxkaXJlY3RpdmVzOltaMyxJdix4dixQdixhMixlMSxyMSxDdixEdixSdixiWixmMSxTMixOTCxxcSxNcSxqcSxIcSxFMixIMixQNV0sc3R5bGVzOlsnLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjEycHg7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtYmFkZ2Utc21hbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6OXB4fS5tYXQtYmFkZ2UtbGFyZ2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweH0ubWF0LWgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1oZWFkbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMjRweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNnB4LzI4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNXB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC44MykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtaDZbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuNjcpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWJvZHktc3Ryb25nW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjAgMCAxMnB4fS5tYXQtc21hbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDEycHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjMwMCAxMTJweC8xMTJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDVlbTttYXJnaW46MCAwIDU2cHh9Lm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDU2cHgvNTZweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDJlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDQ1cHgvNDhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDA1ZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAzNHB4LzQwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDY0cHh9Lm1hdC1ib3R0b20tc2hlZXQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhcmQtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjIwcHh9Lm1hdC1jYXJkLXN1YnRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXJkLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNoZWNrYm94LWxheW91dFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoyNHB4fS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtdHJhaWxpbmctaWNvbi5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MThweH0ubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1oZWFkZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9vdGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2FsZW5kYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhbGVuZGFyLWJvZHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxM3B4fS5tYXQtY2FsZW5kYXItYm9keS1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FsZW5kYXItcGVyaW9kLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRoW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo0MDB9Lm1hdC1kaWFsb2ctdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDoxLjEyNTtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE1MCU7bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS41ZW07d2lkdGg6MS41ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNWVtIDA7Ym9yZGVyLXRvcDouODQzNzVlbSBzb2xpZCB0cmFuc3BhcmVudH0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTAuODQzNzVlbTtwYWRkaW5nLXRvcDouODQzNzVlbX0ubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo3NSU7bWFyZ2luLXRvcDouNjY2NjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjc5MTY2NjY2NjdlbSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNDM3NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMnB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTJlbSkgc2NhbGUoMC43NSl9fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi4yNWVtIDAgLjc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMDkzNzVlbTttYXJnaW4tdG9wOi0wLjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjFlbSAwIDFlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS44NDM3NWVtO21hcmdpbi10b3A6LTAuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9aW5wdXQubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LTAuMDYyNWVtfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweH0ubWF0LXJhZGlvLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW19Lm1hdC1zbGlkZS10b2dnbGUtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXN0ZXAtc3ViLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDpub3JtYWx9Lm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRhYi1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowfS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMHB4O3BhZGRpbmctdG9wOjZweDtwYWRkaW5nLWJvdHRvbTo2cHh9Lm1hdC10b29sdGlwLWhhbmRzZXRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHh9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1zaW1wbGUtc25hY2tiYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjE7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo1MDB9Lm1hdC10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW5lc3RlZC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweH0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmVtcHR5KXt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKX0ubWF0LXJpcHBsZS5tYXQtcmlwcGxlLXVuYm91bmRlZFtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6dmlzaWJsZX0ubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItcmFkaXVzOjUwJTtwb2ludGVyLWV2ZW50czpub25lO3RyYW5zaXRpb246b3BhY2l0eSx0cmFuc2Zvcm0gMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO3RyYW5zZm9ybTpzY2FsZSgwKX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6bm9uZX0uY2RrLXZpc3VhbGx5LWhpZGRlbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjA7Y2xpcDpyZWN0KDAgMCAwIDApO2hlaWdodDoxcHg7bWFyZ2luOi0xcHg7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxcHg7d2hpdGUtc3BhY2U6bm93cmFwO291dGxpbmU6MDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb2ludGVyLWV2ZW50czpub25lO3RvcDowO2xlZnQ6MDtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXTplbXB0eXtkaXNwbGF5Om5vbmV9LmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1wYW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtwb2ludGVyLWV2ZW50czphdXRvO2JveC1zaXppbmc6Ym9yZGVyLWJveDt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O21heC13aWR0aDoxMDAlO21heC1oZWlnaHQ6MTAwJX0uY2RrLW92ZXJsYXktYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO2xlZnQ6MDtyaWdodDowO3otaW5kZXg6MTAwMDtwb2ludGVyLWV2ZW50czphdXRvOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudDt0cmFuc2l0aW9uOm9wYWNpdHkgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSk7b3BhY2l0eTowfS5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjF9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAuY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTouNn0uY2RrLW92ZXJsYXktZGFyay1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4zMil9LmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MH0uY2RrLW92ZXJsYXktY29ubmVjdGVkLXBvc2l0aW9uLWJvdW5kaW5nLWJveFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bWluLXdpZHRoOjFweDttaW4taGVpZ2h0OjFweH0uY2RrLWdsb2JhbC1zY3JvbGxibG9ja1tfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7d2lkdGg6MTAwJTtvdmVyZmxvdy15OnNjcm9sbH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemVbX25nY29udGVudC0lQ09NUCVde3Jlc2l6ZTpub25lfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmdbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OmF1dG8gIWltcG9ydGFudDtvdmVyZmxvdzpoaWRkZW4gIWltcG9ydGFudH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nLWZpcmVmb3hbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OjAgIWltcG9ydGFudH1Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0e31Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZHt9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbHthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnQgMHMgMW1zfS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCg6LXdlYmtpdC1hdXRvZmlsbCl7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZCAwcyAxbXN9Lm1hdC1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtbWRjLWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9W19uZ2hvc3QtJUNPTVAlXXtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2ZvbnQtc2l6ZToxM3B4O292ZXJmbG93OmhpZGRlbn0uZmlsdGVyLXJvd1tfbmdjb250ZW50LSVDT01QJV17ZmxleDpub25lfS50YWJsZS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2NvbnRhaW46bGF5b3V0IHBhaW50O2ZsZXgtZ3JvdzoxO21heC13aWR0aDoxMDAlO292ZXJmbG93LXg6YXV0bztvdmVyZmxvdy15OmF1dG87d2lsbC1jaGFuZ2U6dHJhbnNmb3JtLHNjcm9sbC1wb3NpdGlvbn0uZmxleC1sYXlvdXRbX25naG9zdC0lQ09NUCVdICAgLm5hbWVbX25nY29udGVudC0lQ09NUCVde3dvcmQtYnJlYWs6YnJlYWstd29yZDtvdmVyZmxvdy13cmFwOmJyZWFrLXdvcmR9LmZsZXgtbGF5b3V0W19uZ2hvc3QtJUNPTVAlXSAgIG1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVde2JvcmRlci10b3A6MXB4IHNvbGlkICNlYmViZWI7cGFkZGluZy1ib3R0b206MTJweH1ib2R5LmRhcmstbW9kZSAgIC5mbGV4LWxheW91dFtfbmdob3N0LSVDT01QJV0gICBtYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItdG9wOjFweCBzb2xpZCAjNTU1fVtyb2xlPXRhYmxlXVtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTp0YWJsZTt3aWR0aDoxMDAlfVtyb2xlPXRhYmxlXVtfbmdjb250ZW50LSVDT01QJV0gICAuaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXB9W3JvbGU9dGFibGVdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgW3JvbGU9Y29sdW1uaGVhZGVyXVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmZmO3Bvc2l0aW9uOnN0aWNreTt0b3A6MDt6LWluZGV4OjF9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgW3JvbGU9dGFibGVdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgW3JvbGU9Y29sdW1uaGVhZGVyXVtfbmdjb250ZW50LSVDT01QJV0sIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIFtyb2xlPXRhYmxlXVtfbmdjb250ZW50LSVDT01QJV0gICAuaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIFtyb2xlPWNvbHVtbmhlYWRlcl1bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6IzMwMzAzMH1bcm9sZT10YWJsZV1bX25nY29udGVudC0lQ09NUCVdICAgW3JvbGU9cm93XVtfbmdjb250ZW50LSVDT01QJV17Y29udGFpbjpzdHJpY3Q7ZGlzcGxheTp0YWJsZS1yb3c7aGVpZ2h0OjQzcHh9W3JvbGU9dGFibGVdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIFtyb2xlPXJvd11bX25nY29udGVudC0lQ09NUCVdICAgLmNvbHVtbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2ViZWJlYjtkaXNwbGF5OnRhYmxlLWNlbGw7cGFkZGluZzo1cHg7dmVydGljYWwtYWxpZ246bWlkZGxlfWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIFtyb2xlPXRhYmxlXVtfbmdjb250ZW50LSVDT01QJV0gICBbcm9sZT1yb3ddW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jb2x1bW5bX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICBbcm9sZT10YWJsZV1bX25nY29udGVudC0lQ09NUCVdICAgW3JvbGU9cm93XVtfbmdjb250ZW50LSVDT01QJV0gICAuY29sdW1uW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjNTU1fVtyb2xlPXRhYmxlXVtfbmdjb250ZW50LSVDT01QJV0gICBbcm9sZT1yb3ddW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jb2x1bW5bX25nY29udGVudC0lQ09NUCVdOmZpcnN0LWNoaWxke3BhZGRpbmctbGVmdDoyNHB4fVtyb2xlPXRhYmxlXVtfbmdjb250ZW50LSVDT01QJV0gICBbcm9sZT1yb3ddW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jb2x1bW5bX25nY29udGVudC0lQ09NUCVdOmxhc3QtY2hpbGR7cGFkZGluZy1yaWdodDoyNHB4fVtyb2xlPXJvd2dyb3VwXVtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTp0YWJsZS1yb3ctZ3JvdXB9W3JvbGU9cm93Z3JvdXBdLmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTp0YWJsZS1oZWFkZXItZ3JvdXB9LmxvYWRpbmdbX25nY29udGVudC0lQ09NUCVdLCAubm8tcnVuc1tfbmdjb250ZW50LSVDT01QJV17YWxpZ24taXRlbXM6Y2VudGVyO2JvcmRlcjowO2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNlYmViZWI7ZGlzcGxheTpmbGV4O2hlaWdodDo0OHB4O3BhZGRpbmc6MCAyNHB4fWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC5sb2FkaW5nW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLmxvYWRpbmdbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1ib3R0b206MXB4IHNvbGlkICM1NTV9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgLm5vLXJ1bnNbX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAubm8tcnVuc1tfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWJvdHRvbToxcHggc29saWQgIzU1NX0ubG9hZGluZ1tfbmdjb250ZW50LSVDT01QJV17anVzdGlmeS1jb250ZW50OmNlbnRlcn0uc2VsZWN0LWFsbFtfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MTJweDtwYWRkaW5nLXRvcDoxMnB4fS5zZWxlY3QtYWxsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdLCAuc2VsZWN0LWFsbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuNjt0ZXh0LWFsaWduOmxlZnR9LnNlbGVjdC1hbGwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV0gICBidXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjUwMDtwYWRkaW5nOjAgNHB4fS5maWx0ZXItcm93W19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjZWJlYmViO2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7aGVpZ2h0OjQ4cHg7cGFkZGluZzowIDE2cHggMCAyMXB4fWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC5maWx0ZXItcm93W19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLmZpbHRlci1yb3dbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1ib3R0b206MXB4IHNvbGlkICM1NTV9LmZpbHRlci1yb3dbX25nY29udGVudC0lQ09NUCVdICAgdGItZmlsdGVyLWlucHV0W19uZ2NvbnRlbnQtJUNPTVAlXXtmbGV4LWdyb3c6MX0udGItY29sdW1uLWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXSwgLnRiLWNvbHVtbi1ydW5fY29sb3JbX25nY29udGVudC0lQ09NUCVde3dpZHRoOjIwcHh9LnRiLWNvbHVtbi1ydW5fY29sb3JbX25nY29udGVudC0lQ09NUCVde3RleHQtYWxpZ246Y2VudGVyfS5ydW4tY29sb3Itc3dhdGNoW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItcmFkaXVzOjEwMCU7Ym9yZGVyOjFweCBzb2xpZCAjZWJlYmViO2hlaWdodDoyMHB4O3dpZHRoOjIwcHg7b3V0bGluZTpub25lfS5ydW4tY29sb3Itc3dhdGNoLm5vLWNvbG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6I2M2Y2FkMTtib3JkZXItd2lkdGg6MnB4fS5yYW5nZS1pbnB1dC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDphdXRvfVtfbmdob3N0LSVDT01QJV0gICAgIG1hdC1wYWdpbmF0b3IgbWF0LWZvcm0tZmllbGR7bWFyZ2luOjB9LmZpbHRlci1tZW51LWNoZWNrYm94LXJvd1tfbmdjb250ZW50LSVDT01QJV0gICBtYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVdICAgICBsYWJlbHtkaXNwbGF5OmZsZXg7aGVpZ2h0OjEwMCU7YWxpZ24taXRlbXM6Y2VudGVyfS5maWx0ZXItbWVudS1jaGVja2JveC1yb3dbX25nY29udGVudC0lQ09NUCVdICAgbWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXSAgICAgbGFiZWwgLm1hdC1jaGVja2JveC1pbm5lci1jb250YWluZXJ7bWFyZ2luLWxlZnQ6MH0uZmlsdGVyLW1lbnUtY2hlY2tib3gtcm93W19uZ2NvbnRlbnQtJUNPTVAlXSAgIG1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV0gICAgIGxhYmVsIC5tYXQtY2hlY2tib3gtbGFiZWx7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXN9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgbWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV0sIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIG1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6IzMwMzAzMH0nXSxjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIocDQsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoicnVucy10YWJsZS1jb21wb25lbnQiLHRlbXBsYXRlVXJsOiJydW5zX3RhYmxlX2NvbXBvbmVudC5uZy5odG1sIixob3N0OnsiW2NsYXNzLmZsZXgtbGF5b3V0XSI6InVzZUZsZXhpYmxlTGF5b3V0In0sc3R5bGVVcmxzOlsicnVuc190YWJsZV9jb21wb25lbnQuY3NzIl0sY2hhbmdlRGV0ZWN0aW9uOmpuLk9uUHVzaCxwcm92aWRlcnM6W3twcm92aWRlOlgwLHVzZUNsYXNzOmQ0fV19XX1dLG51bGwse2V4cGVyaW1lbnRJZHM6W3t0eXBlOlJffV0sc2hvd0V4cGVyaW1lbnROYW1lOlt7dHlwZTpSX31dLGNvbHVtbnM6W3t0eXBlOlJffV0saHBhcmFtQ29sdW1uczpbe3R5cGU6Ul99XSxtZXRyaWNDb2x1bW5zOlt7dHlwZTpSX31dLGFsbEl0ZW1zTGVuZ3RoOlt7dHlwZTpSX31dLGZpbHRlcmVkSXRlbXNMZW5ndGg6W3t0eXBlOlJffV0sdXNlRmxleGlibGVMYXlvdXQ6W3t0eXBlOlJffV0sdXNlUGFnaW5hdGlvbjpbe3R5cGU6Ul99XSxzaG93R3JvdXBDb250cm9sOlt7dHlwZTpSX31dLHBhZ2VJdGVtczpbe3R5cGU6Ul99XSxsb2FkaW5nOlt7dHlwZTpSX31dLG51bVNlbGVjdGVkSXRlbXM6W3t0eXBlOlJffV0sc29ydE9wdGlvbjpbe3R5cGU6Ul99XSxwYWdpbmF0aW9uT3B0aW9uOlt7dHlwZTpSX31dLHJlZ2V4RmlsdGVyOlt7dHlwZTpSX31dLG9uUmVnZXhGaWx0ZXJDaGFuZ2U6W3t0eXBlOkVffV0sb25TZWxlY3Rpb25Ub2dnbGU6W3t0eXBlOkVffV0sb25QYWdlU2VsZWN0aW9uVG9nZ2xlOlt7dHlwZTpFX31dLG9uUGFnaW5hdGlvbkNoYW5nZTpbe3R5cGU6RV99XSxvblNvcnRDaGFuZ2U6W3t0eXBlOkVffV0sb25SdW5Db2xvckNoYW5nZTpbe3R5cGU6RV99XSxvbkhwYXJhbURpc2NyZXRlRmlsdGVyQ2hhbmdlZDpbe3R5cGU6RV99XSxvbkhwYXJhbUludGVydmFsRmlsdGVyQ2hhbmdlZDpbe3R5cGU6RV99XSxvbk1ldHJpY0ZpbHRlckNoYW5nZWQ6W3t0eXBlOkVffV0sZmlsdGVyOlt7dHlwZTphcixhcmdzOlsiZmlsdGVyIix7c3RhdGljOiEwLHJlYWQ6S2h9XX1dLHBhZ2luYXRvcjpbe3R5cGU6YXIsYXJnczpbZTEse3N0YXRpYzohMH1dfV0sc29ydDpbe3R5cGU6YXIsYXJnczpbcjEse3N0YXRpYzohMH1dfV19KTtjb25zdCBtND1iUyhLeiwodD0+dC5zdGF0ZT09PVVFLkxPQURJTkcpKTtmdW5jdGlvbiBmNCh0LGUpe3N3aXRjaChlLnR5cGUpe2Nhc2UgRnouRVhQRVJJTUVOVF9OQU1FOnJldHVyblt0LmV4cGVyaW1lbnRBbGlhcyx0LnJ1bi5uYW1lLHQucnVuLmlkXTtjYXNlIEZ6LlJVTl9OQU1FOnJldHVyblt0LnJ1bi5uYW1lLHQuZXhwZXJpbWVudEFsaWFzLHQucnVuLmlkXTtjYXNlIEZ6LkhQQVJBTTpyZXR1cm5bdC5ocGFyYW1zLmdldChlLm5hbWUpLHQucnVuLm5hbWUsdC5leHBlcmltZW50QWxpYXMsdC5ydW4uaWRdO2Nhc2UgRnouTUVUUklDOnJldHVyblt0Lm1ldHJpY3MuZ2V0KGUudGFnKSx0LnJ1bi5uYW1lLHQuZXhwZXJpbWVudEFsaWFzLHQucnVuLmlkXTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcihgTm90IHlldCBpbXBsZW1lbnRlZDogJHtlfWApfX1mdW5jdGlvbiB1NCh0LGUpe2lmKHZvaWQgMD09PWUpcmV0dXJuIHQuaW5jbHVkZVVuZGVmaW5lZDtpZih0LnR5cGU9PT1rVC5ESVNDUkVURSl7cmV0dXJuIHQuZmlsdGVyVmFsdWVzLmluY2x1ZGVzKGUpfXJldHVybiB0LnR5cGU9PT1rVC5JTlRFUlZBTCYmKHQuZmlsdGVyTG93ZXJWYWx1ZTw9ZSYmZTw9dC5maWx0ZXJVcHBlclZhbHVlKX1jbGFzcyBnNHtjb25zdHJ1Y3Rvcih0KXt0aGlzLnN0b3JlPXQsdGhpcy5sb2FkaW5nJD1udWxsLHRoaXMuaHBhcmFtQ29sdW1ucyQ9enQoW10pLHRoaXMubWV0cmljQ29sdW1ucyQ9enQoW10pLHRoaXMudXNlRmxleGlibGVMYXlvdXQ9ITEsdGhpcy51c2VQYWdpbmF0aW9uPSExLHRoaXMuY29sdW1ucz1beDAuUlVOX05BTUVdLHRoaXMuc2hvd0hwYXJhbXNBbmRNZXRyaWNzPSExLHRoaXMuc29ydE9wdGlvbiQ9dGhpcy5zdG9yZS5zZWxlY3Qob0kpLHRoaXMucGFnaW5hdGlvbk9wdGlvbiQ9dGhpcy5zdG9yZS5zZWxlY3QobkkpLHRoaXMucmVnZXhGaWx0ZXIkPXRoaXMuc3RvcmUuc2VsZWN0KHRJKSx0aGlzLm5nVW5zdWJzY3JpYmU9bmV3IEJ9aXNFeHBlcmltZW50TmFtZVZpc2libGUoKXtyZXR1cm4gdGhpcy5jb2x1bW5zLnNvbWUoKHQ9PnQ9PT14MC5FWFBFUklNRU5UX05BTUUpKX1uZ09uSW5pdCgpe2NvbnN0IHQ9S3QodGhpcy5leHBlcmltZW50SWRzLm1hcCgodD0+dGhpcy5nZXRSdW5UYWJsZUl0ZW1zRm9yRXhwZXJpbWVudCh0KSkpKS5waXBlKFZ0KCh0PT5bXS5jb25jYXQoLi4udCkpKSk7dGhpcy5hbGxVbnNvcnRlZFJ1blRhYmxlSXRlbXMkPXQucGlwZShqZSh0aGlzLm5nVW5zdWJzY3JpYmUpLEZlKDEpKSx0aGlzLmFsbEl0ZW1zTGVuZ3RoJD10aGlzLmFsbFVuc29ydGVkUnVuVGFibGVJdGVtcyQucGlwZShWdCgodD0+dC5sZW5ndGgpKSk7Y29uc3QgZT10aGlzLmdldEZpbHRlcmVkSXRlbXMkKHRoaXMuYWxsVW5zb3J0ZWRSdW5UYWJsZUl0ZW1zJCkucGlwZShqZSh0aGlzLm5nVW5zdWJzY3JpYmUpLEZlKDEpKTt0aGlzLmZpbHRlcmVkSXRlbXNMZW5ndGgkPWUucGlwZShWdCgodD0+dC5sZW5ndGgpKSksdGhpcy5wYWdlSXRlbXMkPXRoaXMuc29ydGVkQW5kU2xpY2VkSXRlbXMkKGUpLHRoaXMubnVtU2VsZWN0ZWRJdGVtcyQ9dGhpcy5hbGxVbnNvcnRlZFJ1blRhYmxlSXRlbXMkLnBpcGUoVnQoKHQ9PnQucmVkdWNlKCgodCxlKT0+dCtOdW1iZXIoZS5zZWxlY3RlZCkpLDApKSkpO2NvbnN0IG49dGhpcy5leHBlcmltZW50SWRzLm1hcCgodD0+dGhpcy5zdG9yZS5zZWxlY3QobTQse2V4cGVyaW1lbnRJZDp0fSkpKTtpZih0aGlzLmxvYWRpbmckPUt0KG4pLnBpcGUoVnQoKHQ9PnQuc29tZSgodD0+dCkpKSkpLHRoaXMuc2hvd0hwYXJhbXNBbmRNZXRyaWNzKXtjb25zdCB0PXRoaXMuc3RvcmUuc2VsZWN0KEQwLHtleHBlcmltZW50SWRzOnRoaXMuZXhwZXJpbWVudElkc30pO3RoaXMuaHBhcmFtQ29sdW1ucyQ9S3QoW3RoaXMuc3RvcmUuc2VsZWN0KHcwLHRoaXMuZXhwZXJpbWVudElkcyksdF0pLnBpcGUoVnQoKChbdCx7aHBhcmFtczplfV0pPT5lLm1hcCgoKHtuYW1lOmUsZGlzcGxheU5hbWU6bn0pPT57Y29uc3Qgbz10LmdldChlKTtpZighbyl0aHJvdyBuZXcgUmFuZ2VFcnJvcihgSW52YXJpYW50IGVycm9yOiBhIGZpbHRlciBmb3IgJHtlfSBtdXN0IGV4aXN0IHdoZW4gdGhlIGhwYXJhbSBleGlzdHNgKTtyZXR1cm57ZGlzcGxheU5hbWU6bixuYW1lOmUsZmlsdGVyOm99fSkpKSkpLHRoaXMubWV0cmljQ29sdW1ucyQ9S3QoW3RoaXMuc3RvcmUuc2VsZWN0KFMwLHRoaXMuZXhwZXJpbWVudElkcyksdF0pLnBpcGUoVnQoKChbdCx7bWV0cmljczplfV0pPT5lLm1hcCgoKHt0YWc6ZSxkaXNwbGF5TmFtZTpufSk9Pntjb25zdCBvPXQuZ2V0KGUpO2lmKCFvKXRocm93IG5ldyBSYW5nZUVycm9yKGBJbnZhcmlhbnQgZXJyb3I6IGEgZmlsdGVyIGZvciAke2V9IG11c3QgZXhpc3Qgd2hlbiB0aGUgbWV0cmljIGV4aXN0c2ApO3JldHVybntkaXNwbGF5TmFtZTpuLHRhZzplLGZpbHRlcjpvfX0pKSkpKX1pZih0aGlzLmNvbHVtbnMuaW5jbHVkZXMoeDAuQ0hFQ0tCT1gpKXt0aGlzLnN0b3JlLnNlbGVjdChoUikucGlwZShqZSh0aGlzLm5nVW5zdWJzY3JpYmUpLHdlKCgodCxlKT0+eEQodCxlKSkpLFZlKCgoKT0+dC5waXBlKHVlKCh0PT50Lmxlbmd0aD41MDApKSx2ZSgxKSkpKSkuc3Vic2NyaWJlKCgoKT0+e3RoaXMuc3RvcmUuZGlzcGF0Y2goR0koe2xvY2FsaXplZE1lc3NhZ2U6IlRoZSBudW1iZXIgb2YgcnVucyBleGNlZWRzIDUwMC4gTmV3IHJ1bnMgYXJlIHVuc2VsZWN0ZWQgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMuIn0pKX0pKX10aGlzLnNob3dHcm91cENvbnRyb2wkPXRoaXMuc3RvcmUuc2VsZWN0KGpEKS5waXBlKFZ0KCh0PT50JiZ0aGlzLmNvbHVtbnMuaW5jbHVkZXMoeDAuUlVOX0NPTE9SKSkpKSx0aGlzLnN0b3JlLmRpc3BhdGNoKHZUKHtleHBlcmltZW50SWRzOnRoaXMuZXhwZXJpbWVudElkc30pKX1uZ09uRGVzdHJveSgpe3RoaXMubmdVbnN1YnNjcmliZS5uZXh0KCksdGhpcy5uZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCl9Z2V0RmlsdGVyZWRJdGVtcyQodCl7cmV0dXJuIEt0KFt0LHRoaXMuc3RvcmUuc2VsZWN0KHRJKV0pLnBpcGUoVnQoKChbdCxlXSk9PntpZighZSlyZXR1cm4gdDtjb25zdCBuPXRoaXMuY29sdW1ucy5pbmNsdWRlcyh4MC5FWFBFUklNRU5UX05BTUUpO3JldHVybiB0LmZpbHRlcigodD0+eUkoe3J1bk5hbWU6dC5ydW4ubmFtZSxleHBlcmltZW50QWxpYXM6dC5leHBlcmltZW50QWxpYXN9LGUsbikpKX0pKSxWZSgodD0+dGhpcy5zaG93SHBhcmFtc0FuZE1ldHJpY3M/S3QodGhpcy5zdG9yZS5zZWxlY3QodzAsdGhpcy5leHBlcmltZW50SWRzKSx0aGlzLnN0b3JlLnNlbGVjdChTMCx0aGlzLmV4cGVyaW1lbnRJZHMpKS5waXBlKFZ0KCgoW2Usbl0pPT50LmZpbHRlcigoKHtocGFyYW1zOnQsbWV0cmljczpvfSk9PlsuLi5lLmVudHJpZXMoKV0uZXZlcnkoKChbZSxuXSk9PnU0KG4sdC5nZXQoZSkpKSkmJlsuLi5uLmVudHJpZXMoKV0uZXZlcnkoKChbdCxlXSk9PnU0KGUsby5nZXQodCkpKSkpKSkpKTp6dCh0KSkpKX1zb3J0ZWRBbmRTbGljZWRJdGVtcyQodCl7Y29uc3QgZT1LdChbdCx0aGlzLnN0b3JlLnNlbGVjdChvSSldKS5waXBlKFZ0KCgoW3QsZV0pPT4oZnVuY3Rpb24gbih0LGUpe2NvbnN0IG49ZS5rZXksbz1bLi4udF07cmV0dXJuIG51bGw9PT1ufHxlLmRpcmVjdGlvbj09PXZJLlVOU0VUfHxvLnNvcnQoKCh0LG8pPT57Y29uc3QgaT1mNCh0LG4pLGE9ZjQobyxuKTtpZihpLmxlbmd0aCE9PWEubGVuZ3RoKXRocm93IG5ldyBFcnJvcihgSW52YXJpYW50IGVycm9yOiBhIGdpdmVuIHNvcnQgc2hvdWxkIHJlc3VsdCBpbiBzYW1lIG51bWJlciBvZiBpdGVtczogJHtlfWApO2ZvcihsZXQgdD0wO3Q8aS5sZW5ndGg7dCsrKXtjb25zdCBuPWlbdF0sbz1hW3RdO2lmKG4hPT1vKXtpZih2b2lkIDA9PT1ufHx2b2lkIDA9PT1vKXJldHVybiB2b2lkIDA9PT1vPy0xOjE7aWYodHlwZW9mIG4hPXR5cGVvZiBvKXRocm93IG5ldyBFcnJvcihgQ2Fubm90IGNvbXBhcmUgdmFsdWVzIG9mIGRpZmZlcmVudCB0eXBlczogJHt0eXBlb2Ygbn0gdnMuICR7dHlwZW9mIG99YCk7cmV0dXJuIG48bz09KGUuZGlyZWN0aW9uPT09dkkuQVNDKT8tMToxfX1yZXR1cm4gMH0pKSxvfSkodCxlKSkpKTtyZXR1cm4gS3QoW2UsdGhpcy5zdG9yZS5zZWxlY3QobkkpXSkucGlwZShWdCgoKFt0LGVdKT0+e2lmKCF0aGlzLnVzZVBhZ2luYXRpb24pcmV0dXJuIHQuc2xpY2UoKTtjb25zdHtwYWdlU2l6ZTpuLHBhZ2VJbmRleDpvfT1lO3JldHVybiB0LnNsaWNlKG8qbiwobysxKSpuKX0pKSxCZShbXSkpfWdldFJ1blRhYmxlSXRlbXNGb3JFeHBlcmltZW50KHQpe3JldHVybiBLdChbdGhpcy5zdG9yZS5zZWxlY3QocXose2V4cGVyaW1lbnRJZDp0fSksdGhpcy5zdG9yZS5zZWxlY3QocVQse2V4cGVyaW1lbnRJZDp0fSksdGhpcy5zdG9yZS5zZWxlY3QoX0kpLHRoaXMuc3RvcmUuc2VsZWN0KENJKSx0aGlzLnN0b3JlLnNlbGVjdChPUildKS5waXBlKFZ0KCgoW2UsbixvLGksYV0pPT5lLm1hcCgoZT0+e2NvbnN0IHI9bmV3IE1hcDsoZS5ocGFyYW1zfHxbXSkuZm9yRWFjaCgodD0+e3Iuc2V0KHQubmFtZSx0LnZhbHVlKX0pKTtjb25zdCBzPW5ldyBNYXA7cmV0dXJuKGUubWV0cmljc3x8W10pLmZvckVhY2goKHQ9PntzLnNldCh0LnRhZyx0LnZhbHVlKX0pKSx7cnVuOmUsZXhwZXJpbWVudE5hbWU6KG51bGw9PW4/dm9pZCAwOm4ubmFtZSl8fCIiLGV4cGVyaW1lbnRBbGlhczphW3RdLHNlbGVjdGVkOkJvb2xlYW4obyYmby5nZXQoZS5pZCkpLHJ1bkNvbG9yOmlbZS5pZF0saHBhcmFtczpyLG1ldHJpY3M6c319KSkpKSl9b25SdW5TZWxlY3Rpb25Ub2dnbGUodCl7dGhpcy5zdG9yZS5kaXNwYXRjaChoVCh7ZXhwZXJpbWVudElkczp0aGlzLmV4cGVyaW1lbnRJZHMscnVuSWQ6dC5ydW4uaWR9KSl9b25QYWdlU2VsZWN0aW9uVG9nZ2xlKHQpe2NvbnN0e2l0ZW1zOmV9PXQsbj1lLm1hcCgoKHtydW46dH0pPT50LmlkKSk7dGhpcy5zdG9yZS5kaXNwYXRjaChiVCh7ZXhwZXJpbWVudElkczp0aGlzLmV4cGVyaW1lbnRJZHMscnVuSWRzOm59KSl9b25QYWdpbmF0aW9uQ2hhbmdlKHQpe2lmKCF0aGlzLnVzZVBhZ2luYXRpb24pdGhyb3cgbmV3IEVycm9yKCJQYWdpbmF0aW9uIGV2ZW50cyBjYW5ub3QgYmUgZGlzcGF0Y2hlZCB3aGVuIHBhZ2luYXRpb24gaXMgZGlzYWJsZWQiKTtjb25zdHtwYWdlSW5kZXg6ZSxwYWdlU2l6ZTpufT10O3RoaXMuc3RvcmUuZGlzcGF0Y2goeVQoe3BhZ2VJbmRleDplLHBhZ2VTaXplOm59KSl9b25Tb3J0Q2hhbmdlKHQpe3RoaXMuc3RvcmUuZGlzcGF0Y2goX1QodCkpfW9uUmVnZXhGaWx0ZXJDaGFuZ2UodCl7dGhpcy5zdG9yZS5kaXNwYXRjaChDVCh7cmVnZXhTdHJpbmc6dH0pKX1vblJ1bkNvbG9yQ2hhbmdlKHtydW5JZDp0LG5ld0NvbG9yOmV9KXt0aGlzLnN0b3JlLmRpc3BhdGNoKE1UKHtydW5JZDp0LG5ld0NvbG9yOmV9KSl9b25IcGFyYW1EaXNjcmV0ZUZpbHRlckNoYW5nZWQodCl7Y29uc3R7aHBhcmFtTmFtZTplLGZpbHRlclZhbHVlczpuLGluY2x1ZGVVbmRlZmluZWQ6b309dDt0aGlzLnN0b3JlLmRpc3BhdGNoKERUKHtleHBlcmltZW50SWRzOnRoaXMuZXhwZXJpbWVudElkcyxocGFyYW1OYW1lOmUsZmlsdGVyVmFsdWVzOm4saW5jbHVkZVVuZGVmaW5lZDpvfSkpfW9uSHBhcmFtSW50ZXJ2YWxGaWx0ZXJDaGFuZ2VkKHQpe2NvbnN0e25hbWU6ZSxmaWx0ZXJMb3dlclZhbHVlOm4sZmlsdGVyVXBwZXJWYWx1ZTpvLGluY2x1ZGVVbmRlZmluZWQ6aX09dDt0aGlzLnN0b3JlLmRpc3BhdGNoKFJUKHtleHBlcmltZW50SWRzOnRoaXMuZXhwZXJpbWVudElkcyxocGFyYW1OYW1lOmUsZmlsdGVyTG93ZXJWYWx1ZTpuLGZpbHRlclVwcGVyVmFsdWU6byxpbmNsdWRlVW5kZWZpbmVkOml9KSl9b25NZXRyaWNGaWx0ZXJDaGFuZ2VkKHQpe2NvbnN0e25hbWU6ZSxpbmNsdWRlVW5kZWZpbmVkOm4sZmlsdGVyTG93ZXJWYWx1ZTpvLGZpbHRlclVwcGVyVmFsdWU6aX09dDt0aGlzLnN0b3JlLmRpc3BhdGNoKEVUKHtleHBlcmltZW50SWRzOnRoaXMuZXhwZXJpbWVudElkcyxtZXRyaWNUYWc6ZSxpbmNsdWRlVW5kZWZpbmVkOm4sZmlsdGVyTG93ZXJWYWx1ZTpvLGZpbHRlclVwcGVyVmFsdWU6aX0pKX19ZzQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGc0KShnZihpUykpfSxnNC7JtWNtcD1zbyh7dHlwZTpnNCxzZWxlY3RvcnM6W1sicnVucy10YWJsZSJdXSxob3N0VmFyczoyLGhvc3RCaW5kaW5nczpmdW5jdGlvbiB0KGUsbil7MiZlJiZjdSgiZmxleC1sYXlvdXQiLG4udXNlRmxleGlibGVMYXlvdXQpfSxpbnB1dHM6e3VzZUZsZXhpYmxlTGF5b3V0OiJ1c2VGbGV4aWJsZUxheW91dCIsdXNlUGFnaW5hdGlvbjoidXNlUGFnaW5hdGlvbiIsY29sdW1uczoiY29sdW1ucyIsZXhwZXJpbWVudElkczoiZXhwZXJpbWVudElkcyIsc2hvd0hwYXJhbXNBbmRNZXRyaWNzOiJzaG93SHBhcmFtc0FuZE1ldHJpY3MifSxkZWNsczoxMix2YXJzOjM4LGNvbnN0czpbWzMsImV4cGVyaW1lbnRJZHMiLCJ1c2VGbGV4aWJsZUxheW91dCIsIm51bVNlbGVjdGVkSXRlbXMiLCJjb2x1bW5zIiwiaHBhcmFtQ29sdW1ucyIsIm1ldHJpY0NvbHVtbnMiLCJzaG93RXhwZXJpbWVudE5hbWUiLCJwYWdlSXRlbXMiLCJmaWx0ZXJlZEl0ZW1zTGVuZ3RoIiwiYWxsSXRlbXNMZW5ndGgiLCJsb2FkaW5nIiwicGFnaW5hdGlvbk9wdGlvbiIsInJlZ2V4RmlsdGVyIiwic2hvd0dyb3VwQ29udHJvbCIsInNvcnRPcHRpb24iLCJ1c2VQYWdpbmF0aW9uIiwib25TZWxlY3Rpb25Ub2dnbGUiLCJvblBhZ2VTZWxlY3Rpb25Ub2dnbGUiLCJvblBhZ2luYXRpb25DaGFuZ2UiLCJvblJlZ2V4RmlsdGVyQ2hhbmdlIiwib25Tb3J0Q2hhbmdlIiwib25SdW5Db2xvckNoYW5nZSIsIm9uSHBhcmFtSW50ZXJ2YWxGaWx0ZXJDaGFuZ2VkIiwib25IcGFyYW1EaXNjcmV0ZUZpbHRlckNoYW5nZWQiLCJvbk1ldHJpY0ZpbHRlckNoYW5nZWQiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKENmKDAsInJ1bnMtdGFibGUtY29tcG9uZW50IiwwKSxSZigib25TZWxlY3Rpb25Ub2dnbGUiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLm9uUnVuU2VsZWN0aW9uVG9nZ2xlKGUpfSkpKCJvblBhZ2VTZWxlY3Rpb25Ub2dnbGUiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLm9uUGFnZVNlbGVjdGlvblRvZ2dsZShlKX0pKSgib25QYWdpbmF0aW9uQ2hhbmdlIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5vblBhZ2luYXRpb25DaGFuZ2UoZSl9KSkoIm9uUmVnZXhGaWx0ZXJDaGFuZ2UiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLm9uUmVnZXhGaWx0ZXJDaGFuZ2UoZSl9KSkoIm9uU29ydENoYW5nZSIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4ub25Tb3J0Q2hhbmdlKGUpfSkpKCJvblJ1bkNvbG9yQ2hhbmdlIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5vblJ1bkNvbG9yQ2hhbmdlKGUpfSkpKCJvbkhwYXJhbUludGVydmFsRmlsdGVyQ2hhbmdlZCIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4ub25IcGFyYW1JbnRlcnZhbEZpbHRlckNoYW5nZWQoZSl9KSkoIm9uSHBhcmFtRGlzY3JldGVGaWx0ZXJDaGFuZ2VkIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5vbkhwYXJhbURpc2NyZXRlRmlsdGVyQ2hhbmdlZChlKX0pKSgib25NZXRyaWNGaWx0ZXJDaGFuZ2VkIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5vbk1ldHJpY0ZpbHRlckNoYW5nZWQoZSl9KSksX3koMSwiYXN5bmMiKSxfeSgyLCJhc3luYyIpLF95KDMsImFzeW5jIiksX3koNCwiYXN5bmMiKSxfeSg1LCJhc3luYyIpLF95KDYsImFzeW5jIiksX3koNywiYXN5bmMiKSxfeSg4LCJhc3luYyIpLF95KDksImFzeW5jIiksX3koMTAsImFzeW5jIiksX3koMTEsImFzeW5jIiksTWYoKSksMiZlJiZiZigiZXhwZXJpbWVudElkcyIsbi5leHBlcmltZW50SWRzKSgidXNlRmxleGlibGVMYXlvdXQiLG4udXNlRmxleGlibGVMYXlvdXQpKCJudW1TZWxlY3RlZEl0ZW1zIixDeSgxLDE2LG4ubnVtU2VsZWN0ZWRJdGVtcyQpKSgiY29sdW1ucyIsbi5jb2x1bW5zKSgiaHBhcmFtQ29sdW1ucyIsQ3koMiwxOCxuLmhwYXJhbUNvbHVtbnMkKSkoIm1ldHJpY0NvbHVtbnMiLEN5KDMsMjAsbi5tZXRyaWNDb2x1bW5zJCkpKCJzaG93RXhwZXJpbWVudE5hbWUiLG4uaXNFeHBlcmltZW50TmFtZVZpc2libGUoKSkoInBhZ2VJdGVtcyIsQ3koNCwyMixuLnBhZ2VJdGVtcyQpKSgiZmlsdGVyZWRJdGVtc0xlbmd0aCIsQ3koNSwyNCxuLmZpbHRlcmVkSXRlbXNMZW5ndGgkKSkoImFsbEl0ZW1zTGVuZ3RoIixDeSg2LDI2LG4uYWxsSXRlbXNMZW5ndGgkKSkoImxvYWRpbmciLEN5KDcsMjgsbi5sb2FkaW5nJCkpKCJwYWdpbmF0aW9uT3B0aW9uIixDeSg4LDMwLG4ucGFnaW5hdGlvbk9wdGlvbiQpKSgicmVnZXhGaWx0ZXIiLEN5KDksMzIsbi5yZWdleEZpbHRlciQpKSgic2hvd0dyb3VwQ29udHJvbCIsQ3koMTAsMzQsbi5zaG93R3JvdXBDb250cm9sJCkpKCJzb3J0T3B0aW9uIixDeSgxMSwzNixuLnNvcnRPcHRpb24kKSkoInVzZVBhZ2luYXRpb24iLG4udXNlUGFnaW5hdGlvbil9LGRpcmVjdGl2ZXM6W3A0XSxwaXBlczpbVnZdLHN0eWxlczpbIi5mbGV4LWxheW91dFtfbmdob3N0LSVDT01QJV0ge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgfVxuXG4gICAgICAuZmxleC1sYXlvdXRbX25naG9zdC0lQ09NUCVdICAgID4gcnVucy10YWJsZS1jb21wb25lbnRbX25nY29udGVudC0lQ09NUCVdIHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICB9Il0sY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKGc0LFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6InJ1bnMtdGFibGUiLHRlbXBsYXRlOidcbiAgICA8cnVucy10YWJsZS1jb21wb25lbnRcbiAgICAgIFtleHBlcmltZW50SWRzXT0iZXhwZXJpbWVudElkcyJcbiAgICAgIFt1c2VGbGV4aWJsZUxheW91dF09InVzZUZsZXhpYmxlTGF5b3V0IlxuICAgICAgW251bVNlbGVjdGVkSXRlbXNdPSJudW1TZWxlY3RlZEl0ZW1zJCB8IGFzeW5jIlxuICAgICAgW2NvbHVtbnNdPSJjb2x1bW5zIlxuICAgICAgW2hwYXJhbUNvbHVtbnNdPSJocGFyYW1Db2x1bW5zJCB8IGFzeW5jIlxuICAgICAgW21ldHJpY0NvbHVtbnNdPSJtZXRyaWNDb2x1bW5zJCB8IGFzeW5jIlxuICAgICAgW3Nob3dFeHBlcmltZW50TmFtZV09ImlzRXhwZXJpbWVudE5hbWVWaXNpYmxlKCkiXG4gICAgICBbcGFnZUl0ZW1zXT0icGFnZUl0ZW1zJCB8IGFzeW5jIlxuICAgICAgW2ZpbHRlcmVkSXRlbXNMZW5ndGhdPSJmaWx0ZXJlZEl0ZW1zTGVuZ3RoJCB8IGFzeW5jIlxuICAgICAgW2FsbEl0ZW1zTGVuZ3RoXT0iYWxsSXRlbXNMZW5ndGgkIHwgYXN5bmMiXG4gICAgICBbbG9hZGluZ109ImxvYWRpbmckIHwgYXN5bmMiXG4gICAgICBbcGFnaW5hdGlvbk9wdGlvbl09InBhZ2luYXRpb25PcHRpb24kIHwgYXN5bmMiXG4gICAgICBbcmVnZXhGaWx0ZXJdPSJyZWdleEZpbHRlciQgfCBhc3luYyJcbiAgICAgIFtzaG93R3JvdXBDb250cm9sXT0ic2hvd0dyb3VwQ29udHJvbCQgfCBhc3luYyJcbiAgICAgIFtzb3J0T3B0aW9uXT0ic29ydE9wdGlvbiQgfCBhc3luYyJcbiAgICAgIFt1c2VQYWdpbmF0aW9uXT0idXNlUGFnaW5hdGlvbiJcbiAgICAgIChvblNlbGVjdGlvblRvZ2dsZSk9Im9uUnVuU2VsZWN0aW9uVG9nZ2xlKCRldmVudCkiXG4gICAgICAob25QYWdlU2VsZWN0aW9uVG9nZ2xlKT0ib25QYWdlU2VsZWN0aW9uVG9nZ2xlKCRldmVudCkiXG4gICAgICAob25QYWdpbmF0aW9uQ2hhbmdlKT0ib25QYWdpbmF0aW9uQ2hhbmdlKCRldmVudCkiXG4gICAgICAob25SZWdleEZpbHRlckNoYW5nZSk9Im9uUmVnZXhGaWx0ZXJDaGFuZ2UoJGV2ZW50KSJcbiAgICAgIChvblNvcnRDaGFuZ2UpPSJvblNvcnRDaGFuZ2UoJGV2ZW50KSJcbiAgICAgIChvblJ1bkNvbG9yQ2hhbmdlKT0ib25SdW5Db2xvckNoYW5nZSgkZXZlbnQpIlxuICAgICAgKG9uSHBhcmFtSW50ZXJ2YWxGaWx0ZXJDaGFuZ2VkKT0ib25IcGFyYW1JbnRlcnZhbEZpbHRlckNoYW5nZWQoJGV2ZW50KSJcbiAgICAgIChvbkhwYXJhbURpc2NyZXRlRmlsdGVyQ2hhbmdlZCk9Im9uSHBhcmFtRGlzY3JldGVGaWx0ZXJDaGFuZ2VkKCRldmVudCkiXG4gICAgICAob25NZXRyaWNGaWx0ZXJDaGFuZ2VkKT0ib25NZXRyaWNGaWx0ZXJDaGFuZ2VkKCRldmVudCkiXG4gICAgPjwvcnVucy10YWJsZS1jb21wb25lbnQ+XG4gICcsaG9zdDp7IltjbGFzcy5mbGV4LWxheW91dF0iOiJ1c2VGbGV4aWJsZUxheW91dCJ9LHN0eWxlczpbIlxuICAgICAgOmhvc3QuZmxleC1sYXlvdXQge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgfVxuXG4gICAgICA6aG9zdC5mbGV4LWxheW91dCA+IHJ1bnMtdGFibGUtY29tcG9uZW50IHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICB9XG4gICAgIl0sY2hhbmdlRGV0ZWN0aW9uOmpuLk9uUHVzaH1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmlTfV19KSx7dXNlRmxleGlibGVMYXlvdXQ6W3t0eXBlOlJffV0sdXNlUGFnaW5hdGlvbjpbe3R5cGU6Ul99XSxjb2x1bW5zOlt7dHlwZTpSX31dLGV4cGVyaW1lbnRJZHM6W3t0eXBlOlJffV0sc2hvd0hwYXJhbXNBbmRNZXRyaWNzOlt7dHlwZTpSX31dfSk7Y2xhc3MgaDR7fWg0Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxoNCl9LGg0Lsm1Y21wPXNvKHt0eXBlOmg0LHNlbGVjdG9yczpbWyJydW5zLXNlbGVjdG9yLWNvbXBvbmVudCJdXSxpbnB1dHM6e2V4cGVyaW1lbnRJZHM6ImV4cGVyaW1lbnRJZHMiLHNob3dIcGFyYW1zQW5kTWV0cmljczoic2hvd0hwYXJhbXNBbmRNZXRyaWNzIixjb2x1bW5zOiJjb2x1bW5zIn0sZGVjbHM6MSx2YXJzOjQsY29uc3RzOltbMywidXNlRmxleGlibGVMYXlvdXQiLCJjb2x1bW5zIiwiZXhwZXJpbWVudElkcyIsInNob3dIcGFyYW1zQW5kTWV0cmljcyJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiZ2ZigwLCJydW5zLXRhYmxlIiwwKSwyJmUmJmJmKCJ1c2VGbGV4aWJsZUxheW91dCIsITApKCJjb2x1bW5zIixuLmNvbHVtbnMpKCJleHBlcmltZW50SWRzIixuLmV4cGVyaW1lbnRJZHMpKCJzaG93SHBhcmFtc0FuZE1ldHJpY3MiLG4uc2hvd0hwYXJhbXNBbmRNZXRyaWNzKX0sZGlyZWN0aXZlczpbZzRdLHN0eWxlczpbInJ1bnMtdGFibGVbX25nY29udGVudC0lQ09NUCVdIHtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgfSJdLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihoNCxbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJydW5zLXNlbGVjdG9yLWNvbXBvbmVudCIsdGVtcGxhdGU6J1xuICAgIDxydW5zLXRhYmxlXG4gICAgICBbdXNlRmxleGlibGVMYXlvdXRdPSJ0cnVlIlxuICAgICAgW2NvbHVtbnNdPSJjb2x1bW5zIlxuICAgICAgW2V4cGVyaW1lbnRJZHNdPSJleHBlcmltZW50SWRzIlxuICAgICAgW3Nob3dIcGFyYW1zQW5kTWV0cmljc109InNob3dIcGFyYW1zQW5kTWV0cmljcyJcbiAgICA+PC9ydW5zLXRhYmxlPlxuICAnLHN0eWxlczpbIlxuICAgICAgcnVucy10YWJsZSB7XG4gICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgIH1cbiAgICAiXSxjaGFuZ2VEZXRlY3Rpb246am4uT25QdXNofV19XSxudWxsLHtleHBlcmltZW50SWRzOlt7dHlwZTpSX31dLHNob3dIcGFyYW1zQW5kTWV0cmljczpbe3R5cGU6Ul99XSxjb2x1bW5zOlt7dHlwZTpSX31dfSk7Y2xhc3MgYjR7Y29uc3RydWN0b3IodCl7dGhpcy5zdG9yZT10LHRoaXMuZXhwZXJpbWVudElkcyQ9dGhpcy5zdG9yZS5zZWxlY3QoeFIpLnBpcGUoVnQoKHQ9Pm51bGwhPXQ/dDpbXSkpKSx0aGlzLmNvbHVtbnMkPXRoaXMuc3RvcmUuc2VsZWN0KHhSKS5waXBlKFZ0KCh0PT5beDAuQ0hFQ0tCT1gseDAuUlVOX05BTUUsdCYmdC5sZW5ndGg+MT94MC5FWFBFUklNRU5UX05BTUU6bnVsbCx4MC5SVU5fQ09MT1JdLmZpbHRlcigodD0+bnVsbCE9PXQpKSkpKX19YjQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGI0KShnZihpUykpfSxiNC7JtWNtcD1zbyh7dHlwZTpiNCxzZWxlY3RvcnM6W1sicnVucy1zZWxlY3RvciJdXSxpbnB1dHM6e3Nob3dIcGFyYW1zQW5kTWV0cmljczoic2hvd0hwYXJhbXNBbmRNZXRyaWNzIn0sZGVjbHM6Myx2YXJzOjcsY29uc3RzOltbMywiZXhwZXJpbWVudElkcyIsImNvbHVtbnMiLCJzaG93SHBhcmFtc0FuZE1ldHJpY3MiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKHZmKDAsInJ1bnMtc2VsZWN0b3ItY29tcG9uZW50IiwwKSxfeSgxLCJhc3luYyIpLF95KDIsImFzeW5jIikpLDImZSYmYmYoImV4cGVyaW1lbnRJZHMiLEN5KDEsMyxuLmV4cGVyaW1lbnRJZHMkKSkoImNvbHVtbnMiLEN5KDIsNSxuLmNvbHVtbnMkKSkoInNob3dIcGFyYW1zQW5kTWV0cmljcyIsbi5zaG93SHBhcmFtc0FuZE1ldHJpY3MpfSxkaXJlY3RpdmVzOltoNF0scGlwZXM6W1Z2XSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKGI0LFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6InJ1bnMtc2VsZWN0b3IiLHRlbXBsYXRlOidcbiAgICA8cnVucy1zZWxlY3Rvci1jb21wb25lbnRcbiAgICAgIFtleHBlcmltZW50SWRzXT0iZXhwZXJpbWVudElkcyQgfCBhc3luYyJcbiAgICAgIFtjb2x1bW5zXT0iY29sdW1ucyQgfCBhc3luYyJcbiAgICAgIFtzaG93SHBhcmFtc0FuZE1ldHJpY3NdPSJzaG93SHBhcmFtc0FuZE1ldHJpY3MiXG4gICAgPjwvcnVucy1zZWxlY3Rvci1jb21wb25lbnQ+XG4gICcsY2hhbmdlRGV0ZWN0aW9uOmpuLk9uUHVzaH1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmlTfV19KSx7c2hvd0hwYXJhbXNBbmRNZXRyaWNzOlt7dHlwZTpSX31dfSk7Y29uc3QgeTQ9bmV3IFdlYWtNYXA7Y2xhc3MgXzR7Y29uc3RydWN0b3IodCxlKXt0aGlzLnJvb3Q9dCx0aGlzLmJ1ZmZlcj1lLHRoaXMuZGVzdHJveWVkVGFyZ2V0cz1uZXcgV2Vha1NldH1pbml0aWFsaXplKHQpe3ZhciBlO2lmKHRoaXMuaW50ZXJzZWN0aW9uT2JzZXJ2ZXIpcmV0dXJuO3RoaXMuaW50ZXJzZWN0aW9uQ2FsbGJhY2s9dDtjb25zdCBuPXt0aHJlc2hvbGQ6MCxyb290Om51bGwhPT0oZT10aGlzLnJvb3QpJiZ2b2lkIDAhPT1lP2U6bnVsbH07dGhpcy5idWZmZXImJihuLnJvb3RNYXJnaW49dGhpcy5idWZmZXIpLHRoaXMuaW50ZXJzZWN0aW9uT2JzZXJ2ZXI9bmV3IEludGVyc2VjdGlvbk9ic2VydmVyKHRoaXMub25DYXJkSW50ZXJzZWN0aW9uLmJpbmQodGhpcyksbil9YWRkKHQpe3RoaXMuZW5zdXJlSW5pdGlhbGl6ZWQoKSYmdGhpcy5pbnRlcnNlY3Rpb25PYnNlcnZlci5vYnNlcnZlKHQpfXdpbGxEZXN0cm95KHQpe3RoaXMuZW5zdXJlSW5pdGlhbGl6ZWQoKSYmdGhpcy5kZXN0cm95ZWRUYXJnZXRzLmFkZCh0KX1lbnN1cmVJbml0aWFsaXplZCgpe2lmKCF0aGlzLmludGVyc2VjdGlvbk9ic2VydmVyKXRocm93IG5ldyBFcnJvcigiQ2FyZE9ic2VydmVyIG11c3QgYmUgaW5pdGlhbGl6ZWQgYmVmb3JlIHVzZSIpO3JldHVybiEwfW9uQ2FyZEludGVyc2VjdGlvbih0KXt0LnNvcnQoKCh0LGUpPT50LnRpbWUtZS50aW1lKSk7Y29uc3QgZT1uZXcgU2V0LG49bmV3IFNldDtmb3IoY29uc3R7aXNJbnRlcnNlY3Rpbmc6byx0YXJnZXQ6aX1vZiB0KW8/KGUuYWRkKGkpLG4uZGVsZXRlKGkpKTooZS5kZWxldGUoaSksbi5hZGQoaSkpLHRoaXMuZGVzdHJveWVkVGFyZ2V0cy5oYXMoaSkmJiFvJiYodGhpcy5kZXN0cm95ZWRUYXJnZXRzLmRlbGV0ZShpKSx0aGlzLmludGVyc2VjdGlvbk9ic2VydmVyLnVub2JzZXJ2ZShpKSk7dGhpcy5pbnRlcnNlY3Rpb25DYWxsYmFjayhlLG4pfW9uQ2FyZEludGVyc2VjdGlvbkZvclRlc3QodCl7dGhpcy5vbkNhcmRJbnRlcnNlY3Rpb24odCl9fWNsYXNzIEM0e2NvbnN0cnVjdG9yKHQsZSl7dGhpcy5ob3N0PXQsdGhpcy5zdG9yZT1lfW9uQ2FyZEludGVyc2VjdGlvbih0LGUpe2NvbnN0IG49Wy4uLnRdLm1hcCgodD0+e2NvbnN0IGU9eTQuZ2V0KHQpO2lmKCFlKXRocm93IG5ldyBFcnJvcigiQSBDYXJkT2JzZXJ2ZXIgZWxlbWVudCBtdXN0IGhhdmUgYW4gYXNzb2NpYXRlZCBlbGVtZW50IGlkIGFuZCBjYXJkIGlkLiIpO3JldHVybntlbGVtZW50SWQ6ZS5lbGVtZW50SWQsY2FyZElkOmUuY2FyZElkfX0pKSxvPVsuLi5lXS5tYXAoKHQ9Pntjb25zdCBlPXk0LmdldCh0KTtpZighZSl0aHJvdyBuZXcgRXJyb3IoIkEgQ2FyZE9ic2VydmVyIGVsZW1lbnQgbXVzdCBoYXZlIGFuIGFzc29jaWF0ZWQgZWxlbWVudCBpZCBhbmQgY2FyZCBpZC4iKTtyZXR1cm57ZWxlbWVudElkOmUuZWxlbWVudElkLGNhcmRJZDplLmNhcmRJZH19KSk7dGhpcy5zdG9yZS5kaXNwYXRjaChFQSh7ZW50ZXJlZENhcmRzOm4sZXhpdGVkQ2FyZHM6b30pKX1uZ09uSW5pdCgpe2NvbnN0IHQ9dGhpcy5ob3N0Lm5hdGl2ZUVsZW1lbnQ7eTQuc2V0KHQse2VsZW1lbnRJZDooYjArKyxTeW1ib2woYjApKSxjYXJkSWQ6dGhpcy5jYXJkSWR9KSx0aGlzLmNhcmRPYnNlcnZlcnx8KHRoaXMuY2FyZE9ic2VydmVyPW5ldyBfNCksdGhpcy5jYXJkT2JzZXJ2ZXIuaW5pdGlhbGl6ZSh0aGlzLm9uQ2FyZEludGVyc2VjdGlvbi5iaW5kKHRoaXMpKSx0aGlzLmNhcmRPYnNlcnZlci5hZGQodCl9bmdPbkRlc3Ryb3koKXt0aGlzLmNhcmRPYnNlcnZlciYmdGhpcy5jYXJkT2JzZXJ2ZXIud2lsbERlc3Ryb3kodGhpcy5ob3N0Lm5hdGl2ZUVsZW1lbnQpfWhvc3RGb3JUZXN0KCl7cmV0dXJuIHRoaXMuaG9zdH19ZnVuY3Rpb24gTTQodCxlKXsxJnQmJnZmKDAsIm1hdC1pY29uIiw3KX1mdW5jdGlvbiB2NCh0LGUpe2lmKDEmdCYmKENmKDAsIm1hdC1vcHRpb24iLDgpLFB1KDEpLE1mKCkpLDImdCl7Y29uc3QgdD1lLiRpbXBsaWNpdDtiZigidmFsdWUiLHQpLHltKCJ0aXRsZSIsdCksRGMoMSksd3UodCl9fWZ1bmN0aW9uIHg0KHQsZSl7aWYoMSZ0JiYoQ2YoMCwiZGl2Iiw5KSxDZigxLCJlbSIpLFB1KDIpLF95KDMsIm51bWJlciIpLE1mKCksTWYoKSksMiZ0KXtjb25zdCB0PXpmKCk7RGMoMiksa3UoImFuZCAiLEN5KDMsMSx0LmNvbXBsZXRpb25zLmxlbmd0aC0yNSksIiBtb3JlIHRhZ3MgbWF0Y2hlZCIpfX1DNC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8QzQpKGdmKEtoKSxnZihpUykpfSxDNC7JtWRpcj1obyh7dHlwZTpDNCxzZWxlY3RvcnM6W1siIiwiY2FyZExhenlMb2FkZXIiLCIiXV0saW5wdXRzOntjYXJkSWQ6WyJjYXJkTGF6eUxvYWRlciIsImNhcmRJZCJdLGNhcmRPYnNlcnZlcjoiY2FyZE9ic2VydmVyIn19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKEM0LFt7dHlwZTprXyxhcmdzOlt7c2VsZWN0b3I6IltjYXJkTGF6eUxvYWRlcl0ifV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6S2h9LHt0eXBlOmlTfV19KSx7Y2FyZElkOlt7dHlwZTpSXyxhcmdzOlsiY2FyZExhenlMb2FkZXIiXX1dLGNhcmRPYnNlcnZlcjpbe3R5cGU6Ul99XX0pO2NsYXNzIE80e2NvbnN0cnVjdG9yKCl7dGhpcy5vblJlZ2V4RmlsdGVyVmFsdWVDaGFuZ2U9bmV3IFN5fW9uQ29tcGxldGlvbkFjY2VwdGVkKHQpe3RoaXMub25SZWdleEZpbHRlclZhbHVlQ2hhbmdlLmVtaXQoKGZ1bmN0aW9uIGUodCl7cmV0dXJuIHQucmVwbGFjZShrViwiXFwkJiIpfSkodCkpfX1PNC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8TzQpfSxPNC7JtWNtcD1zbyh7dHlwZTpPNCxzZWxlY3RvcnM6W1sibWV0cmljcy10YWctZmlsdGVyLWNvbXBvbmVudCJdXSxob3N0VmFyczoyLGhvc3RCaW5kaW5nczpmdW5jdGlvbiB0KGUsbil7MiZlJiZjdSgidmFsaWQiLG4uaXNSZWdleEZpbHRlclZhbGlkKX0saW5wdXRzOntyZWdleEZpbHRlclZhbHVlOiJyZWdleEZpbHRlclZhbHVlIixpc1JlZ2V4RmlsdGVyVmFsaWQ6ImlzUmVnZXhGaWx0ZXJWYWxpZCIsY29tcGxldGlvbnM6ImNvbXBsZXRpb25zIn0sb3V0cHV0czp7b25SZWdleEZpbHRlclZhbHVlQ2hhbmdlOiJvblJlZ2V4RmlsdGVyVmFsdWVDaGFuZ2UifSxkZWNsczo3LHZhcnM6NSxjb25zdHM6W1sxLCJ0YWctZmlsdGVyIl0sWyJwbGFjZWhvbGRlciIsIkZpbHRlciB0YWdzIChyZWdleCkiLDMsInZhbHVlIiwibWF0QXV0b2NvbXBsZXRlIiwiaW5wdXQiXSxbInN2Z0ljb24iLCJlcnJvcl8yNHB4IiwiY2xhc3MiLCJlcnJvci1pY29uIiwidGl0bGUiLCJJbnZhbGlkIHJlZ2V4IGZpbHRlci4gVGhlIHJlc3VsdCBtYXkgYmUgc3RhbGUuIiw0LCJuZ0lmIl0sWzEsInRhZy1vcHRpb25zIiwzLCJvcHRpb25TZWxlY3RlZCJdLFsiZmlsdGVyTWF0Y2hlcyIsIm1hdEF1dG9jb21wbGV0ZSJdLFsiY2xhc3MiLCJvcHRpb24iLDMsInZhbHVlIiw0LCJuZ0ZvciIsIm5nRm9yT2YiXSxbImNsYXNzIiwiYW5kLW1vcmUiLDQsIm5nSWYiXSxbInN2Z0ljb24iLCJlcnJvcl8yNHB4IiwidGl0bGUiLCJJbnZhbGlkIHJlZ2V4IGZpbHRlci4gVGhlIHJlc3VsdCBtYXkgYmUgc3RhbGUuIiwxLCJlcnJvci1pY29uIl0sWzEsIm9wdGlvbiIsMywidmFsdWUiXSxbMSwiYW5kLW1vcmUiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pe2lmKDEmZSYmKENmKDAsImRpdiIsMCksQ2YoMSwidGItZmlsdGVyLWlucHV0IiwxKSxSZigiaW5wdXQiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLm9uUmVnZXhGaWx0ZXJWYWx1ZUNoYW5nZS5lbWl0KGUudGFyZ2V0LnZhbHVlKX0pKSxNZigpLEhtKDIsTTQsMSwwLCJtYXQtaWNvbiIsMiksTWYoKSxDZigzLCJtYXQtYXV0b2NvbXBsZXRlIiwzLDQpLFJmKCJvcHRpb25TZWxlY3RlZCIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4ub25Db21wbGV0aW9uQWNjZXB0ZWQoZS5vcHRpb24udmFsdWUpfSkpLEhtKDUsdjQsMiwzLCJtYXQtb3B0aW9uIiw1KSxIbSg2LHg0LDQsMywiZGl2Iiw2KSxNZigpKSwyJmUpe2NvbnN0IHQ9Rm0oNCk7RGMoMSksYmYoInZhbHVlIixuLnJlZ2V4RmlsdGVyVmFsdWUpKCJtYXRBdXRvY29tcGxldGUiLHQpLERjKDEpLGJmKCJuZ0lmIiwhbi5pc1JlZ2V4RmlsdGVyVmFsaWQpLERjKDMpLGJmKCJuZ0Zvck9mIixudWxsPT1uLmNvbXBsZXRpb25zP251bGw6bi5jb21wbGV0aW9ucy5zbGljZSgwLDI1KSksRGMoMSksYmYoIm5nSWYiLChudWxsPT1uLmNvbXBsZXRpb25zP251bGw6bi5jb21wbGV0aW9ucy5sZW5ndGgpPjI1KX19LGRpcmVjdGl2ZXM6W1ozLFB2LEYzLHh2LE1xLFBMXSxwaXBlczpbJHZdLHN0eWxlczpbJy5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjlweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHh9Lm1hdC1oMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaGVhZGxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDI0cHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTVweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWg2W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1ib2R5LXN0cm9uZ1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYXJkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FyZC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MjRweH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNhbGVuZGFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZGlhbG9nLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVlbSAwO2JvcmRlci10b3A6Ljg0Mzc1ZW0gc29saWQgdHJhbnNwYXJlbnR9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17dG9wOi0wLjg0Mzc1ZW07cGFkZGluZy10b3A6Ljg0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6NzUlO21hcmdpbi10b3A6LjY2NjY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS43OTE2NjY2NjY3ZW0pfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjQzNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDJweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIzZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4yODEyNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LjU0MTY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS42NjY2NjY2NjY3ZW0pfUBtZWRpYSBwcmludHsubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjJlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjFlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyZW0pIHNjYWxlKDAuNzUpfX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouMjVlbSAwIC43NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjA5Mzc1ZW07bWFyZ2luLXRvcDotMC41ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoxZW0gMCAxZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuODQzNzVlbTttYXJnaW4tdG9wOi0wLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMiksIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fWlucHV0Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi0wLjA2MjVlbX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHh9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtfS5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1zdGVwLXN1Yi1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6bm9ybWFsfS5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1zdGVwLWxhYmVsLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10YWItZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MH0ubWF0LXRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTBweDtwYWRkaW5nLXRvcDo2cHg7cGFkZGluZy1ib3R0b206NnB4fS5tYXQtdG9vbHRpcC1oYW5kc2V0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4fS5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtc2ltcGxlLXNuYWNrYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHh9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoxO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjE0cHh9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV06bm90KDplbXB0eSl7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9Lm1hdC1yaXBwbGUubWF0LXJpcHBsZS11bmJvdW5kZWRbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OnZpc2libGV9Lm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJhZGl1czo1MCU7cG9pbnRlci1ldmVudHM6bm9uZTt0cmFuc2l0aW9uOm9wYWNpdHksdHJhbnNmb3JtIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTt0cmFuc2Zvcm06c2NhbGUoMCl9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9LmNkay12aXN1YWxseS1oaWRkZW5bX25nY29udGVudC0lQ09NUCVde2JvcmRlcjowO2NsaXA6cmVjdCgwIDAgMCAwKTtoZWlnaHQ6MXB4O21hcmdpbjotMXB4O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4O3doaXRlLXNwYWNlOm5vd3JhcDtvdXRsaW5lOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0sIC5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cG9pbnRlci1ldmVudHM6bm9uZTt0b3A6MDtsZWZ0OjA7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV06ZW1wdHl7ZGlzcGxheTpub25lfS5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktcGFuZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6YXV0bztib3gtc2l6aW5nOmJvcmRlci1ib3g7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDttYXgtd2lkdGg6MTAwJTttYXgtaGVpZ2h0OjEwMCV9LmNkay1vdmVybGF5LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDt6LWluZGV4OjEwMDA7cG9pbnRlci1ldmVudHM6YXV0bzstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnQ7dHJhbnNpdGlvbjpvcGFjaXR5IDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpO29wYWNpdHk6MH0uY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eToxfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6LjZ9LmNkay1vdmVybGF5LWRhcmstYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMzIpfS5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV0sIC5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWNvbm5lY3RlZC1wb3NpdGlvbi1ib3VuZGluZy1ib3hbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO21pbi13aWR0aDoxcHg7bWluLWhlaWdodDoxcHh9LmNkay1nbG9iYWwtc2Nyb2xsYmxvY2tbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3dpZHRoOjEwMCU7b3ZlcmZsb3cteTpzY3JvbGx9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplW19uZ2NvbnRlbnQtJUNPTVAlXXtyZXNpemU6bm9uZX10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDphdXRvICFpbXBvcnRhbnQ7b3ZlcmZsb3c6aGlkZGVuICFpbXBvcnRhbnR9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZy1maXJlZm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDowICFpbXBvcnRhbnR9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydHt9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmR7fS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGx7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0IDBzIDFtc30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOi13ZWJraXQtYXV0b2ZpbGwpe2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmQgMHMgMW1zfS5tYXQtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LW1kYy1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS50YWctZmlsdGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7cG9zaXRpb246cmVsYXRpdmV9dGItZmlsdGVyLWlucHV0W19uZ2NvbnRlbnQtJUNPTVAlXXtmbGV4LWdyb3c6MX1bX25naG9zdC0lQ09NUCVde2NvbG9yOiMyMTIxMjF9Ym9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVde2NvbG9yOiNmZmZ9W19uZ2hvc3QtJUNPTVAlXTpub3QoLnZhbGlkKXtjb2xvcjojYzYyODI4fVtfbmdob3N0LSVDT01QJV06bm90KC52YWxpZCkgICAuZXJyb3ItaWNvbltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2M2MjgyODtwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDowfSAgLnRhZy1vcHRpb25zIC5vcHRpb24sICAgLnRhZy1vcHRpb25zIC5hbmQtbW9yZXstd2Via2l0LWJveC1vcmllbnQ6dmVydGljYWw7LXdlYmtpdC1saW5lLWNsYW1wOjM7ZGlzcGxheTotd2Via2l0LWJveDtmb250LXNpemU6MTRweDtsaW5lLWhlaWdodDoxLjQ7cGFkZGluZzo4cHggMTZweH0gIC50YWctb3B0aW9ucyAuYW5kLW1vcmV7Y29sb3I6IzYxNjE2MX1ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICAgIC50YWctb3B0aW9ucyAuYW5kLW1vcmUsIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgICAgLnRhZy1vcHRpb25zIC5hbmQtbW9yZXtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KX0nXSxjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoTzQsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoibWV0cmljcy10YWctZmlsdGVyLWNvbXBvbmVudCIsdGVtcGxhdGVVcmw6ImZpbHRlcl9pbnB1dF9jb21wb25lbnQubmcuaHRtbCIsc3R5bGVVcmxzOlsiZmlsdGVyX2lucHV0X2NvbXBvbmVudC5jc3MiXSxjaGFuZ2VEZXRlY3Rpb246am4uT25QdXNofV19XSxudWxsLHtyZWdleEZpbHRlclZhbHVlOlt7dHlwZTpSX31dLGlzUmVnZXhGaWx0ZXJWYWxpZDpbe3R5cGU6QV8sYXJnczpbImNsYXNzLnZhbGlkIl19LHt0eXBlOlJffV0sY29tcGxldGlvbnM6W3t0eXBlOlJffV0sb25SZWdleEZpbHRlclZhbHVlQ2hhbmdlOlt7dHlwZTpFX31dfSk7Y2xhc3MgUDR7Y29uc3RydWN0b3IodCl7dGhpcy5zdG9yZT10LHRoaXMudGFnRmlsdGVyJD10aGlzLnN0b3JlLnNlbGVjdChQeiksdGhpcy5pc1RhZ0ZpbHRlclJlZ2V4VmFsaWQkPXRoaXMudGFnRmlsdGVyJC5waXBlKFZ0KCh0PT57dHJ5e3JldHVybiBuZXcgUmVnRXhwKHQpLCEwfWNhdGNoKHQpe3JldHVybiExfX0pKSksdGhpcy5jb21wbGV0aW9ucyQ9dGhpcy5zdG9yZS5zZWxlY3QoYXopLnBpcGUoX2UodGhpcy5zdG9yZS5zZWxlY3QoQXopKSxWdCgoKFt0LGVdKT0+dC5maWx0ZXIoKCh7cGx1Z2luOnR9KT0+IWUuc2l6ZXx8ZS5oYXModCkpKS5tYXAoKCh7dGFnOnR9KT0+dCkpKSksVnQoKHQ9PlsuLi5uZXcgU2V0KHQpXSkpLFZ0KCh0PT50LnNvcnQoWCQpKSksX2UodGhpcy5zdG9yZS5zZWxlY3QoUHopKSxWdCgoKFt0LGVdKT0+e3RyeXtyZXR1cm5bdCxuZXcgUmVnRXhwKGUsImkiKV19Y2F0Y2goZSl7cmV0dXJuW3QsbnVsbF19fSkpLHVlKCgoWyx0XSk9Pm51bGwhPT10KSksVnQoKChbdCxlXSk9PnQuZmlsdGVyKCh0PT5lLnRlc3QodCkpKSkpKX1vblRhZ0ZpbHRlckNoYW5nZSh0KXt0aGlzLnN0b3JlLmRpc3BhdGNoKFRBKHt0YWdGaWx0ZXI6dH0pKX19UDQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFA0KShnZihpUykpfSxQNC7JtWNtcD1zbyh7dHlwZTpQNCxzZWxlY3RvcnM6W1sibWV0cmljcy10YWctZmlsdGVyIl1dLGRlY2xzOjQsdmFyczo5LGNvbnN0czpbWzMsInJlZ2V4RmlsdGVyVmFsdWUiLCJpc1JlZ2V4RmlsdGVyVmFsaWQiLCJjb21wbGV0aW9ucyIsIm9uUmVnZXhGaWx0ZXJWYWx1ZUNoYW5nZSJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoQ2YoMCwibWV0cmljcy10YWctZmlsdGVyLWNvbXBvbmVudCIsMCksUmYoIm9uUmVnZXhGaWx0ZXJWYWx1ZUNoYW5nZSIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4ub25UYWdGaWx0ZXJDaGFuZ2UoZSl9KSksX3koMSwiYXN5bmMiKSxfeSgyLCJhc3luYyIpLF95KDMsImFzeW5jIiksTWYoKSksMiZlJiZiZigicmVnZXhGaWx0ZXJWYWx1ZSIsQ3koMSwzLG4udGFnRmlsdGVyJCkpKCJpc1JlZ2V4RmlsdGVyVmFsaWQiLEN5KDIsNSxuLmlzVGFnRmlsdGVyUmVnZXhWYWxpZCQpKSgiY29tcGxldGlvbnMiLEN5KDMsNyxuLmNvbXBsZXRpb25zJCkpfSxkaXJlY3RpdmVzOltPNF0scGlwZXM6W1Z2XSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKFA0LFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6Im1ldHJpY3MtdGFnLWZpbHRlciIsdGVtcGxhdGU6J1xuICAgIDxtZXRyaWNzLXRhZy1maWx0ZXItY29tcG9uZW50XG4gICAgICBbcmVnZXhGaWx0ZXJWYWx1ZV09InRhZ0ZpbHRlciQgfCBhc3luYyJcbiAgICAgIFtpc1JlZ2V4RmlsdGVyVmFsaWRdPSJpc1RhZ0ZpbHRlclJlZ2V4VmFsaWQkIHwgYXN5bmMiXG4gICAgICBbY29tcGxldGlvbnNdPSJjb21wbGV0aW9ucyQgfCBhc3luYyJcbiAgICAgIChvblJlZ2V4RmlsdGVyVmFsdWVDaGFuZ2UpPSJvblRhZ0ZpbHRlckNoYW5nZSgkZXZlbnQpIlxuICAgID48L21ldHJpY3MtdGFnLWZpbHRlci1jb21wb25lbnQ+XG4gICcsY2hhbmdlRGV0ZWN0aW9uOmpuLk9uUHVzaH1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmlTfV19KSxudWxsKTtjb25zdCB3ND1bImJ1dHRvbiJdLGs0PW5ldyBlcigiTUFUX0JVVFRPTl9UT0dHTEVfREVGQVVMVF9PUFRJT05TIiksUzQ9bmV3IGVyKCJNYXRCdXR0b25Ub2dnbGVHcm91cCIpLEQ0PXtwcm92aWRlOnhVLHVzZUV4aXN0aW5nOiRlKCgoKT0+QTQpKSxtdWx0aTohMH07bGV0IFI0PTA7Y2xhc3MgRTR7Y29uc3RydWN0b3IodCxlKXt0aGlzLnNvdXJjZT10LHRoaXMudmFsdWU9ZX19Y2xhc3MgQTR7Y29uc3RydWN0b3IodCxlKXt0aGlzLl9jaGFuZ2VEZXRlY3Rvcj10LHRoaXMuX3ZlcnRpY2FsPSExLHRoaXMuX211bHRpcGxlPSExLHRoaXMuX2Rpc2FibGVkPSExLHRoaXMuX2NvbnRyb2xWYWx1ZUFjY2Vzc29yQ2hhbmdlRm49KCk9Pnt9LHRoaXMuX29uVG91Y2hlZD0oKT0+e30sdGhpcy5fbmFtZT0ibWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXAtIitSNCsrLHRoaXMudmFsdWVDaGFuZ2U9bmV3IFN5LHRoaXMuY2hhbmdlPW5ldyBTeSx0aGlzLmFwcGVhcmFuY2U9ZSYmZS5hcHBlYXJhbmNlP2UuYXBwZWFyYW5jZToic3RhbmRhcmQifWdldCBuYW1lKCl7cmV0dXJuIHRoaXMuX25hbWV9c2V0IG5hbWUodCl7dGhpcy5fbmFtZT10LHRoaXMuX2J1dHRvblRvZ2dsZXMmJnRoaXMuX2J1dHRvblRvZ2dsZXMuZm9yRWFjaCgodD0+e3QubmFtZT10aGlzLl9uYW1lLHQuX21hcmtGb3JDaGVjaygpfSkpfWdldCB2ZXJ0aWNhbCgpe3JldHVybiB0aGlzLl92ZXJ0aWNhbH1zZXQgdmVydGljYWwodCl7dGhpcy5fdmVydGljYWw9ZUgodCl9Z2V0IHZhbHVlKCl7Y29uc3QgdD10aGlzLl9zZWxlY3Rpb25Nb2RlbD90aGlzLl9zZWxlY3Rpb25Nb2RlbC5zZWxlY3RlZDpbXTtyZXR1cm4gdGhpcy5tdWx0aXBsZT90Lm1hcCgodD0+dC52YWx1ZSkpOnRbMF0/dFswXS52YWx1ZTp2b2lkIDB9c2V0IHZhbHVlKHQpe3RoaXMuX3NldFNlbGVjdGlvbkJ5VmFsdWUodCksdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHRoaXMudmFsdWUpfWdldCBzZWxlY3RlZCgpe2NvbnN0IHQ9dGhpcy5fc2VsZWN0aW9uTW9kZWw/dGhpcy5fc2VsZWN0aW9uTW9kZWwuc2VsZWN0ZWQ6W107cmV0dXJuIHRoaXMubXVsdGlwbGU/dDp0WzBdfHxudWxsfWdldCBtdWx0aXBsZSgpe3JldHVybiB0aGlzLl9tdWx0aXBsZX1zZXQgbXVsdGlwbGUodCl7dGhpcy5fbXVsdGlwbGU9ZUgodCl9Z2V0IGRpc2FibGVkKCl7cmV0dXJuIHRoaXMuX2Rpc2FibGVkfXNldCBkaXNhYmxlZCh0KXt0aGlzLl9kaXNhYmxlZD1lSCh0KSx0aGlzLl9idXR0b25Ub2dnbGVzJiZ0aGlzLl9idXR0b25Ub2dnbGVzLmZvckVhY2goKHQ9PnQuX21hcmtGb3JDaGVjaygpKSl9bmdPbkluaXQoKXt0aGlzLl9zZWxlY3Rpb25Nb2RlbD1uZXcgakwodGhpcy5tdWx0aXBsZSx2b2lkIDAsITEpfW5nQWZ0ZXJDb250ZW50SW5pdCgpe3RoaXMuX3NlbGVjdGlvbk1vZGVsLnNlbGVjdCguLi50aGlzLl9idXR0b25Ub2dnbGVzLmZpbHRlcigodD0+dC5jaGVja2VkKSkpfXdyaXRlVmFsdWUodCl7dGhpcy52YWx1ZT10LHRoaXMuX2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpfXJlZ2lzdGVyT25DaGFuZ2UodCl7dGhpcy5fY29udHJvbFZhbHVlQWNjZXNzb3JDaGFuZ2VGbj10fXJlZ2lzdGVyT25Ub3VjaGVkKHQpe3RoaXMuX29uVG91Y2hlZD10fXNldERpc2FibGVkU3RhdGUodCl7dGhpcy5kaXNhYmxlZD10fV9lbWl0Q2hhbmdlRXZlbnQoKXtjb25zdCB0PXRoaXMuc2VsZWN0ZWQsZT1BcnJheS5pc0FycmF5KHQpP3RbdC5sZW5ndGgtMV06dCxuPW5ldyBFNChlLHRoaXMudmFsdWUpO3RoaXMuX2NvbnRyb2xWYWx1ZUFjY2Vzc29yQ2hhbmdlRm4obi52YWx1ZSksdGhpcy5jaGFuZ2UuZW1pdChuKX1fc3luY0J1dHRvblRvZ2dsZSh0LGUsbj0hMSxvPSExKXt0aGlzLm11bHRpcGxlfHwhdGhpcy5zZWxlY3RlZHx8dC5jaGVja2VkfHwodGhpcy5zZWxlY3RlZC5jaGVja2VkPSExKSx0aGlzLl9zZWxlY3Rpb25Nb2RlbD9lP3RoaXMuX3NlbGVjdGlvbk1vZGVsLnNlbGVjdCh0KTp0aGlzLl9zZWxlY3Rpb25Nb2RlbC5kZXNlbGVjdCh0KTpvPSEwLG8/UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKCk9PnRoaXMuX3VwZGF0ZU1vZGVsVmFsdWUobikpKTp0aGlzLl91cGRhdGVNb2RlbFZhbHVlKG4pfV9pc1NlbGVjdGVkKHQpe3JldHVybiB0aGlzLl9zZWxlY3Rpb25Nb2RlbCYmdGhpcy5fc2VsZWN0aW9uTW9kZWwuaXNTZWxlY3RlZCh0KX1faXNQcmVjaGVja2VkKHQpe3JldHVybiB2b2lkIDAhPT10aGlzLl9yYXdWYWx1ZSYmKHRoaXMubXVsdGlwbGUmJkFycmF5LmlzQXJyYXkodGhpcy5fcmF3VmFsdWUpP3RoaXMuX3Jhd1ZhbHVlLnNvbWUoKGU9Pm51bGwhPXQudmFsdWUmJmU9PT10LnZhbHVlKSk6dC52YWx1ZT09PXRoaXMuX3Jhd1ZhbHVlKX1fc2V0U2VsZWN0aW9uQnlWYWx1ZSh0KXtpZih0aGlzLl9yYXdWYWx1ZT10LHRoaXMuX2J1dHRvblRvZ2dsZXMpaWYodGhpcy5tdWx0aXBsZSYmdCl7aWYoIUFycmF5LmlzQXJyYXkodCkmJigidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSl0aHJvdyBFcnJvcigiVmFsdWUgbXVzdCBiZSBhbiBhcnJheSBpbiBtdWx0aXBsZS1zZWxlY3Rpb24gbW9kZS4iKTt0aGlzLl9jbGVhclNlbGVjdGlvbigpLHQuZm9yRWFjaCgodD0+dGhpcy5fc2VsZWN0VmFsdWUodCkpKX1lbHNlIHRoaXMuX2NsZWFyU2VsZWN0aW9uKCksdGhpcy5fc2VsZWN0VmFsdWUodCl9X2NsZWFyU2VsZWN0aW9uKCl7dGhpcy5fc2VsZWN0aW9uTW9kZWwuY2xlYXIoKSx0aGlzLl9idXR0b25Ub2dnbGVzLmZvckVhY2goKHQ9PnQuY2hlY2tlZD0hMSkpfV9zZWxlY3RWYWx1ZSh0KXtjb25zdCBlPXRoaXMuX2J1dHRvblRvZ2dsZXMuZmluZCgoZT0+bnVsbCE9ZS52YWx1ZSYmZS52YWx1ZT09PXQpKTtlJiYoZS5jaGVja2VkPSEwLHRoaXMuX3NlbGVjdGlvbk1vZGVsLnNlbGVjdChlKSl9X3VwZGF0ZU1vZGVsVmFsdWUodCl7dCYmdGhpcy5fZW1pdENoYW5nZUV2ZW50KCksdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHRoaXMudmFsdWUpfX1BNC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8QTQpKGdmKE9iKSxnZihrNCw4KSl9LEE0Lsm1ZGlyPWhvKHt0eXBlOkE0LHNlbGVjdG9yczpbWyJtYXQtYnV0dG9uLXRvZ2dsZS1ncm91cCJdXSxjb250ZW50UXVlcmllczpmdW5jdGlvbiB0KGUsbixvKXtpZigxJmUmJmp5KG8sTjQsNSksMiZlKXtsZXQgdDtCeSh0PVV5KCkpJiYobi5fYnV0dG9uVG9nZ2xlcz10KX19LGhvc3RBdHRyczpbInJvbGUiLCJncm91cCIsMSwibWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXAiXSxob3N0VmFyczo1LGhvc3RCaW5kaW5nczpmdW5jdGlvbiB0KGUsbil7MiZlJiYoeW0oImFyaWEtZGlzYWJsZWQiLG4uZGlzYWJsZWQpLGN1KCJtYXQtYnV0dG9uLXRvZ2dsZS12ZXJ0aWNhbCIsbi52ZXJ0aWNhbCkoIm1hdC1idXR0b24tdG9nZ2xlLWdyb3VwLWFwcGVhcmFuY2Utc3RhbmRhcmQiLCJzdGFuZGFyZCI9PT1uLmFwcGVhcmFuY2UpKX0saW5wdXRzOnthcHBlYXJhbmNlOiJhcHBlYXJhbmNlIixuYW1lOiJuYW1lIix2ZXJ0aWNhbDoidmVydGljYWwiLHZhbHVlOiJ2YWx1ZSIsbXVsdGlwbGU6Im11bHRpcGxlIixkaXNhYmxlZDoiZGlzYWJsZWQifSxvdXRwdXRzOnt2YWx1ZUNoYW5nZToidmFsdWVDaGFuZ2UiLGNoYW5nZToiY2hhbmdlIn0sZXhwb3J0QXM6WyJtYXRCdXR0b25Ub2dnbGVHcm91cCJdLGZlYXR1cmVzOltqaChbRDQse3Byb3ZpZGU6UzQsdXNlRXhpc3Rpbmc6QTR9XSldfSksQTQuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpPYn0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltrNF19XX1dLEE0LnByb3BEZWNvcmF0b3JzPXtfYnV0dG9uVG9nZ2xlczpbe3R5cGU6b3IsYXJnczpbJGUoKCgpPT5ONCkpLHtkZXNjZW5kYW50czohMH1dfV0sYXBwZWFyYW5jZTpbe3R5cGU6Ul99XSxuYW1lOlt7dHlwZTpSX31dLHZlcnRpY2FsOlt7dHlwZTpSX31dLHZhbHVlOlt7dHlwZTpSX31dLHZhbHVlQ2hhbmdlOlt7dHlwZTpFX31dLG11bHRpcGxlOlt7dHlwZTpSX31dLGRpc2FibGVkOlt7dHlwZTpSX31dLGNoYW5nZTpbe3R5cGU6RV99XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihBNCxbe3R5cGU6a18sYXJnczpbe3NlbGVjdG9yOiJtYXQtYnV0dG9uLXRvZ2dsZS1ncm91cCIscHJvdmlkZXJzOltENCx7cHJvdmlkZTpTNCx1c2VFeGlzdGluZzpBNH1dLGhvc3Q6e3JvbGU6Imdyb3VwIixjbGFzczoibWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXAiLCJbYXR0ci5hcmlhLWRpc2FibGVkXSI6ImRpc2FibGVkIiwiW2NsYXNzLm1hdC1idXR0b24tdG9nZ2xlLXZlcnRpY2FsXSI6InZlcnRpY2FsIiwiW2NsYXNzLm1hdC1idXR0b24tdG9nZ2xlLWdyb3VwLWFwcGVhcmFuY2Utc3RhbmRhcmRdIjonYXBwZWFyYW5jZSA9PT0gInN0YW5kYXJkIid9LGV4cG9ydEFzOiJtYXRCdXR0b25Ub2dnbGVHcm91cCJ9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpPYn0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltrNF19XX1dfSkse3ZhbHVlQ2hhbmdlOlt7dHlwZTpFX31dLGNoYW5nZTpbe3R5cGU6RV99XSxhcHBlYXJhbmNlOlt7dHlwZTpSX31dLG5hbWU6W3t0eXBlOlJffV0sdmVydGljYWw6W3t0eXBlOlJffV0sdmFsdWU6W3t0eXBlOlJffV0sbXVsdGlwbGU6W3t0eXBlOlJffV0sZGlzYWJsZWQ6W3t0eXBlOlJffV0sX2J1dHRvblRvZ2dsZXM6W3t0eXBlOm9yLGFyZ3M6WyRlKCgoKT0+TjQpKSx7ZGVzY2VuZGFudHM6ITB9XX1dfSk7Y29uc3QgVDQ9SEYoY2xhc3N7fSk7Y2xhc3MgTjQgZXh0ZW5kcyBUNHtjb25zdHJ1Y3Rvcih0LGUsbixvLGksYSl7c3VwZXIoKSx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZj1lLHRoaXMuX2VsZW1lbnRSZWY9bix0aGlzLl9mb2N1c01vbml0b3I9byx0aGlzLl9pc1NpbmdsZVNlbGVjdG9yPSExLHRoaXMuX2NoZWNrZWQ9ITEsdGhpcy5hcmlhTGFiZWxsZWRieT1udWxsLHRoaXMuX2Rpc2FibGVkPSExLHRoaXMuY2hhbmdlPW5ldyBTeTtjb25zdCByPU51bWJlcihpKTt0aGlzLnRhYkluZGV4PXJ8fDA9PT1yP3I6bnVsbCx0aGlzLmJ1dHRvblRvZ2dsZUdyb3VwPXQsdGhpcy5hcHBlYXJhbmNlPWEmJmEuYXBwZWFyYW5jZT9hLmFwcGVhcmFuY2U6InN0YW5kYXJkIn1nZXQgYnV0dG9uSWQoKXtyZXR1cm5gJHt0aGlzLmlkfS1idXR0b25gfWdldCBhcHBlYXJhbmNlKCl7cmV0dXJuIHRoaXMuYnV0dG9uVG9nZ2xlR3JvdXA/dGhpcy5idXR0b25Ub2dnbGVHcm91cC5hcHBlYXJhbmNlOnRoaXMuX2FwcGVhcmFuY2V9c2V0IGFwcGVhcmFuY2UodCl7dGhpcy5fYXBwZWFyYW5jZT10fWdldCBjaGVja2VkKCl7cmV0dXJuIHRoaXMuYnV0dG9uVG9nZ2xlR3JvdXA/dGhpcy5idXR0b25Ub2dnbGVHcm91cC5faXNTZWxlY3RlZCh0aGlzKTp0aGlzLl9jaGVja2VkfXNldCBjaGVja2VkKHQpe2NvbnN0IGU9ZUgodCk7ZSE9PXRoaXMuX2NoZWNrZWQmJih0aGlzLl9jaGVja2VkPWUsdGhpcy5idXR0b25Ub2dnbGVHcm91cCYmdGhpcy5idXR0b25Ub2dnbGVHcm91cC5fc3luY0J1dHRvblRvZ2dsZSh0aGlzLHRoaXMuX2NoZWNrZWQpLHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpKX1nZXQgZGlzYWJsZWQoKXtyZXR1cm4gdGhpcy5fZGlzYWJsZWR8fHRoaXMuYnV0dG9uVG9nZ2xlR3JvdXAmJnRoaXMuYnV0dG9uVG9nZ2xlR3JvdXAuZGlzYWJsZWR9c2V0IGRpc2FibGVkKHQpe3RoaXMuX2Rpc2FibGVkPWVIKHQpfW5nT25Jbml0KCl7Y29uc3QgdD10aGlzLmJ1dHRvblRvZ2dsZUdyb3VwO3RoaXMuX2lzU2luZ2xlU2VsZWN0b3I9dCYmIXQubXVsdGlwbGUsdGhpcy5pZD10aGlzLmlkfHwibWF0LWJ1dHRvbi10b2dnbGUtIitSNCsrLHRoaXMuX2lzU2luZ2xlU2VsZWN0b3ImJih0aGlzLm5hbWU9dC5uYW1lKSx0JiYodC5faXNQcmVjaGVja2VkKHRoaXMpP3RoaXMuY2hlY2tlZD0hMDp0Ll9pc1NlbGVjdGVkKHRoaXMpIT09dGhpcy5fY2hlY2tlZCYmdC5fc3luY0J1dHRvblRvZ2dsZSh0aGlzLHRoaXMuX2NoZWNrZWQpKX1uZ0FmdGVyVmlld0luaXQoKXt0aGlzLl9mb2N1c01vbml0b3IubW9uaXRvcih0aGlzLl9lbGVtZW50UmVmLCEwKX1uZ09uRGVzdHJveSgpe2NvbnN0IHQ9dGhpcy5idXR0b25Ub2dnbGVHcm91cDt0aGlzLl9mb2N1c01vbml0b3Iuc3RvcE1vbml0b3JpbmcodGhpcy5fZWxlbWVudFJlZiksdCYmdC5faXNTZWxlY3RlZCh0aGlzKSYmdC5fc3luY0J1dHRvblRvZ2dsZSh0aGlzLCExLCExLCEwKX1mb2N1cyh0KXt0aGlzLl9idXR0b25FbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZm9jdXModCl9X29uQnV0dG9uQ2xpY2soKXtjb25zdCB0PSEhdGhpcy5faXNTaW5nbGVTZWxlY3Rvcnx8IXRoaXMuX2NoZWNrZWQ7dCE9PXRoaXMuX2NoZWNrZWQmJih0aGlzLl9jaGVja2VkPXQsdGhpcy5idXR0b25Ub2dnbGVHcm91cCYmKHRoaXMuYnV0dG9uVG9nZ2xlR3JvdXAuX3N5bmNCdXR0b25Ub2dnbGUodGhpcyx0aGlzLl9jaGVja2VkLCEwKSx0aGlzLmJ1dHRvblRvZ2dsZUdyb3VwLl9vblRvdWNoZWQoKSkpLHRoaXMuY2hhbmdlLmVtaXQobmV3IEU0KHRoaXMsdGhpcy52YWx1ZSkpfV9tYXJrRm9yQ2hlY2soKXt0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKX19TjQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fE40KShnZihTNCw4KSxnZihPYiksZ2YoS2gpLGdmKGZGKSxHYSgidGFiaW5kZXgiKSxnZihrNCw4KSl9LE40Lsm1Y21wPXNvKHt0eXBlOk40LHNlbGVjdG9yczpbWyJtYXQtYnV0dG9uLXRvZ2dsZSJdXSx2aWV3UXVlcnk6ZnVuY3Rpb24gdChlLG4pe2lmKDEmZSYmVnkodzQsNSksMiZlKXtsZXQgdDtCeSh0PVV5KCkpJiYobi5fYnV0dG9uRWxlbWVudD10LmZpcnN0KX19LGhvc3RBdHRyczpbInJvbGUiLCJwcmVzZW50YXRpb24iLDEsIm1hdC1idXR0b24tdG9nZ2xlIl0saG9zdFZhcnM6MTIsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJlJmKCJmb2N1cyIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5mb2N1cygpfSkpLDImZSYmKHltKCJhcmlhLWxhYmVsIixudWxsKSgiYXJpYS1sYWJlbGxlZGJ5IixudWxsKSgiaWQiLG4uaWQpKCJuYW1lIixudWxsKSxjdSgibWF0LWJ1dHRvbi10b2dnbGUtc3RhbmRhbG9uZSIsIW4uYnV0dG9uVG9nZ2xlR3JvdXApKCJtYXQtYnV0dG9uLXRvZ2dsZS1jaGVja2VkIixuLmNoZWNrZWQpKCJtYXQtYnV0dG9uLXRvZ2dsZS1kaXNhYmxlZCIsbi5kaXNhYmxlZCkoIm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmQiLCJzdGFuZGFyZCI9PT1uLmFwcGVhcmFuY2UpKX0saW5wdXRzOntkaXNhYmxlUmlwcGxlOiJkaXNhYmxlUmlwcGxlIixhcmlhTGFiZWxsZWRieTpbImFyaWEtbGFiZWxsZWRieSIsImFyaWFMYWJlbGxlZGJ5Il0sdGFiSW5kZXg6InRhYkluZGV4IixhcHBlYXJhbmNlOiJhcHBlYXJhbmNlIixjaGVja2VkOiJjaGVja2VkIixkaXNhYmxlZDoiZGlzYWJsZWQiLGlkOiJpZCIsbmFtZToibmFtZSIsYXJpYUxhYmVsOlsiYXJpYS1sYWJlbCIsImFyaWFMYWJlbCJdLHZhbHVlOiJ2YWx1ZSJ9LG91dHB1dHM6e2NoYW5nZToiY2hhbmdlIn0sZXhwb3J0QXM6WyJtYXRCdXR0b25Ub2dnbGUiXSxmZWF0dXJlczpbUXBdLG5nQ29udGVudFNlbGVjdG9yczpbIioiXSxkZWNsczo2LHZhcnM6OSxjb25zdHM6W1sidHlwZSIsImJ1dHRvbiIsMSwibWF0LWJ1dHRvbi10b2dnbGUtYnV0dG9uIiwibWF0LWZvY3VzLWluZGljYXRvciIsMywiaWQiLCJkaXNhYmxlZCIsImNsaWNrIl0sWyJidXR0b24iLCIiXSxbMSwibWF0LWJ1dHRvbi10b2dnbGUtbGFiZWwtY29udGVudCJdLFsxLCJtYXQtYnV0dG9uLXRvZ2dsZS1mb2N1cy1vdmVybGF5Il0sWyJtYXRSaXBwbGUiLCIiLDEsIm1hdC1idXR0b24tdG9nZ2xlLXJpcHBsZSIsMywibWF0UmlwcGxlVHJpZ2dlciIsIm1hdFJpcHBsZURpc2FibGVkIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXtpZigxJmUmJihIZigpLENmKDAsImJ1dHRvbiIsMCwxKSxSZigiY2xpY2siLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4uX29uQnV0dG9uQ2xpY2soKX0pKSxDZigyLCJzcGFuIiwyKSxGZigzKSxNZigpLE1mKCksdmYoNCwic3BhbiIsMyksdmYoNSwic3BhbiIsNCkpLDImZSl7Y29uc3QgdD1GbSgxKTtiZigiaWQiLG4uYnV0dG9uSWQpKCJkaXNhYmxlZCIsbi5kaXNhYmxlZHx8bnVsbCkseW0oInRhYmluZGV4IixuLmRpc2FibGVkPy0xOm4udGFiSW5kZXgpKCJhcmlhLXByZXNzZWQiLG4uY2hlY2tlZCkoIm5hbWUiLG4ubmFtZXx8bnVsbCkoImFyaWEtbGFiZWwiLG4uYXJpYUxhYmVsKSgiYXJpYS1sYWJlbGxlZGJ5IixuLmFyaWFMYWJlbGxlZGJ5KSxEYyg1KSxiZigibWF0UmlwcGxlVHJpZ2dlciIsdCkoIm1hdFJpcHBsZURpc2FibGVkIixuLmRpc2FibGVSaXBwbGV8fG4uZGlzYWJsZWQpfX0sZGlyZWN0aXZlczpbbUxdLHN0eWxlczpbIi5tYXQtYnV0dG9uLXRvZ2dsZS1zdGFuZGFsb25lLC5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cHtwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5OmlubGluZS1mbGV4O2ZsZXgtZGlyZWN0aW9uOnJvdzt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO2JvcmRlci1yYWRpdXM6MnB4Oy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudH0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtYnV0dG9uLXRvZ2dsZS1zdGFuZGFsb25lLC5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1idXR0b24tdG9nZ2xlLWdyb3Vwe291dGxpbmU6c29saWQgMXB4fS5tYXQtYnV0dG9uLXRvZ2dsZS1zdGFuZGFsb25lLm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmQsLm1hdC1idXR0b24tdG9nZ2xlLWdyb3VwLWFwcGVhcmFuY2Utc3RhbmRhcmR7Ym9yZGVyLXJhZGl1czo0cHh9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWJ1dHRvbi10b2dnbGUtc3RhbmRhbG9uZS5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkLC5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1idXR0b24tdG9nZ2xlLWdyb3VwLWFwcGVhcmFuY2Utc3RhbmRhcmR7b3V0bGluZTowfS5tYXQtYnV0dG9uLXRvZ2dsZS12ZXJ0aWNhbHtmbGV4LWRpcmVjdGlvbjpjb2x1bW59Lm1hdC1idXR0b24tdG9nZ2xlLXZlcnRpY2FsIC5tYXQtYnV0dG9uLXRvZ2dsZS1sYWJlbC1jb250ZW50e2Rpc3BsYXk6YmxvY2t9Lm1hdC1idXR0b24tdG9nZ2xle3doaXRlLXNwYWNlOm5vd3JhcDtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LWJ1dHRvbi10b2dnbGUgLm1hdC1pY29uIHN2Z3t2ZXJ0aWNhbC1hbGlnbjp0b3B9Lm1hdC1idXR0b24tdG9nZ2xlLmNkay1rZXlib2FyZC1mb2N1c2VkIC5tYXQtYnV0dG9uLXRvZ2dsZS1mb2N1cy1vdmVybGF5e29wYWNpdHk6MX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtYnV0dG9uLXRvZ2dsZS5jZGsta2V5Ym9hcmQtZm9jdXNlZCAubWF0LWJ1dHRvbi10b2dnbGUtZm9jdXMtb3ZlcmxheXtvcGFjaXR5Oi41fS5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkOm5vdCgubWF0LWJ1dHRvbi10b2dnbGUtZGlzYWJsZWQpOmhvdmVyIC5tYXQtYnV0dG9uLXRvZ2dsZS1mb2N1cy1vdmVybGF5e29wYWNpdHk6LjA0fS5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkLmNkay1rZXlib2FyZC1mb2N1c2VkOm5vdCgubWF0LWJ1dHRvbi10b2dnbGUtZGlzYWJsZWQpIC5tYXQtYnV0dG9uLXRvZ2dsZS1mb2N1cy1vdmVybGF5e29wYWNpdHk6LjEyfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmQuY2RrLWtleWJvYXJkLWZvY3VzZWQ6bm90KC5tYXQtYnV0dG9uLXRvZ2dsZS1kaXNhYmxlZCkgLm1hdC1idXR0b24tdG9nZ2xlLWZvY3VzLW92ZXJsYXl7b3BhY2l0eTouNX1AbWVkaWEoaG92ZXI6IG5vbmUpey5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkOm5vdCgubWF0LWJ1dHRvbi10b2dnbGUtZGlzYWJsZWQpOmhvdmVyIC5tYXQtYnV0dG9uLXRvZ2dsZS1mb2N1cy1vdmVybGF5e2Rpc3BsYXk6bm9uZX19Lm1hdC1idXR0b24tdG9nZ2xlLWxhYmVsLWNvbnRlbnR7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTstbXMtdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lO2Rpc3BsYXk6aW5saW5lLWJsb2NrO2xpbmUtaGVpZ2h0OjM2cHg7cGFkZGluZzowIDE2cHg7cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmQgLm1hdC1idXR0b24tdG9nZ2xlLWxhYmVsLWNvbnRlbnR7cGFkZGluZzowIDEycHh9Lm1hdC1idXR0b24tdG9nZ2xlLWxhYmVsLWNvbnRlbnQ+Knt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9Lm1hdC1idXR0b24tdG9nZ2xlLWZvY3VzLW92ZXJsYXl7Ym9yZGVyLXJhZGl1czppbmhlcml0O3BvaW50ZXItZXZlbnRzOm5vbmU7b3BhY2l0eTowO3RvcDowO2xlZnQ6MDtyaWdodDowO2JvdHRvbTowO3Bvc2l0aW9uOmFic29sdXRlfS5tYXQtYnV0dG9uLXRvZ2dsZS1jaGVja2VkIC5tYXQtYnV0dG9uLXRvZ2dsZS1mb2N1cy1vdmVybGF5e2JvcmRlci1ib3R0b206c29saWQgMzZweH0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtYnV0dG9uLXRvZ2dsZS1jaGVja2VkIC5tYXQtYnV0dG9uLXRvZ2dsZS1mb2N1cy1vdmVybGF5e29wYWNpdHk6LjU7aGVpZ2h0OjB9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWJ1dHRvbi10b2dnbGUtY2hlY2tlZC5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkIC5tYXQtYnV0dG9uLXRvZ2dsZS1mb2N1cy1vdmVybGF5e2JvcmRlci1ib3R0b206c29saWQgNTAwcHh9Lm1hdC1idXR0b24tdG9nZ2xlIC5tYXQtYnV0dG9uLXRvZ2dsZS1yaXBwbGV7dG9wOjA7bGVmdDowO3JpZ2h0OjA7Ym90dG9tOjA7cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6bm9uZX0ubWF0LWJ1dHRvbi10b2dnbGUtYnV0dG9ue2JvcmRlcjowO2JhY2tncm91bmQ6bm9uZTtjb2xvcjppbmhlcml0O3BhZGRpbmc6MDttYXJnaW46MDtmb250OmluaGVyaXQ7b3V0bGluZTpub25lO3dpZHRoOjEwMCU7Y3Vyc29yOnBvaW50ZXJ9Lm1hdC1idXR0b24tdG9nZ2xlLWRpc2FibGVkIC5tYXQtYnV0dG9uLXRvZ2dsZS1idXR0b257Y3Vyc29yOmRlZmF1bHR9Lm1hdC1idXR0b24tdG9nZ2xlLWJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lcntib3JkZXI6MH1cbiJdLGVuY2Fwc3VsYXRpb246MixjaGFuZ2VEZXRlY3Rpb246MH0pLE40LmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6QTQsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W1M0XX1dfSx7dHlwZTpPYn0se3R5cGU6S2h9LHt0eXBlOmZGfSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6JGEsYXJnczpbInRhYmluZGV4Il19XX0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltrNF19XX1dLE40LnByb3BEZWNvcmF0b3JzPXthcmlhTGFiZWw6W3t0eXBlOlJfLGFyZ3M6WyJhcmlhLWxhYmVsIl19XSxhcmlhTGFiZWxsZWRieTpbe3R5cGU6Ul8sYXJnczpbImFyaWEtbGFiZWxsZWRieSJdfV0sX2J1dHRvbkVsZW1lbnQ6W3t0eXBlOmFyLGFyZ3M6WyJidXR0b24iXX1dLGlkOlt7dHlwZTpSX31dLG5hbWU6W3t0eXBlOlJffV0sdmFsdWU6W3t0eXBlOlJffV0sdGFiSW5kZXg6W3t0eXBlOlJffV0sYXBwZWFyYW5jZTpbe3R5cGU6Ul99XSxjaGVja2VkOlt7dHlwZTpSX31dLGRpc2FibGVkOlt7dHlwZTpSX31dLGNoYW5nZTpbe3R5cGU6RV99XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihONCxbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJtYXQtYnV0dG9uLXRvZ2dsZSIsdGVtcGxhdGU6JzxidXR0b24gI2J1dHRvbiBjbGFzcz0ibWF0LWJ1dHRvbi10b2dnbGUtYnV0dG9uIG1hdC1mb2N1cy1pbmRpY2F0b3IiXG4gICAgICAgIHR5cGU9ImJ1dHRvbiJcbiAgICAgICAgW2lkXT0iYnV0dG9uSWQiXG4gICAgICAgIFthdHRyLnRhYmluZGV4XT0iZGlzYWJsZWQgPyAtMSA6IHRhYkluZGV4IlxuICAgICAgICBbYXR0ci5hcmlhLXByZXNzZWRdPSJjaGVja2VkIlxuICAgICAgICBbZGlzYWJsZWRdPSJkaXNhYmxlZCB8fCBudWxsIlxuICAgICAgICBbYXR0ci5uYW1lXT0ibmFtZSB8fCBudWxsIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT0iYXJpYUxhYmVsIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPSJhcmlhTGFiZWxsZWRieSJcbiAgICAgICAgKGNsaWNrKT0iX29uQnV0dG9uQ2xpY2soKSI+XG4gIDxzcGFuIGNsYXNzPSJtYXQtYnV0dG9uLXRvZ2dsZS1sYWJlbC1jb250ZW50Ij5cbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gIDwvc3Bhbj5cbjwvYnV0dG9uPlxuXG48c3BhbiBjbGFzcz0ibWF0LWJ1dHRvbi10b2dnbGUtZm9jdXMtb3ZlcmxheSI+PC9zcGFuPlxuPHNwYW4gY2xhc3M9Im1hdC1idXR0b24tdG9nZ2xlLXJpcHBsZSIgbWF0UmlwcGxlXG4gICAgIFttYXRSaXBwbGVUcmlnZ2VyXT0iYnV0dG9uIlxuICAgICBbbWF0UmlwcGxlRGlzYWJsZWRdPSJ0aGlzLmRpc2FibGVSaXBwbGUgfHwgdGhpcy5kaXNhYmxlZCI+XG48L3NwYW4+XG4nLGVuY2Fwc3VsYXRpb246V24uTm9uZSxleHBvcnRBczoibWF0QnV0dG9uVG9nZ2xlIixjaGFuZ2VEZXRlY3Rpb246am4uT25QdXNoLGlucHV0czpbImRpc2FibGVSaXBwbGUiXSxob3N0OnsiW2NsYXNzLm1hdC1idXR0b24tdG9nZ2xlLXN0YW5kYWxvbmVdIjoiIWJ1dHRvblRvZ2dsZUdyb3VwIiwiW2NsYXNzLm1hdC1idXR0b24tdG9nZ2xlLWNoZWNrZWRdIjoiY2hlY2tlZCIsIltjbGFzcy5tYXQtYnV0dG9uLXRvZ2dsZS1kaXNhYmxlZF0iOiJkaXNhYmxlZCIsIltjbGFzcy5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkXSI6J2FwcGVhcmFuY2UgPT09ICJzdGFuZGFyZCInLGNsYXNzOiJtYXQtYnV0dG9uLXRvZ2dsZSIsIlthdHRyLmFyaWEtbGFiZWxdIjoibnVsbCIsIlthdHRyLmFyaWEtbGFiZWxsZWRieV0iOiJudWxsIiwiW2F0dHIuaWRdIjoiaWQiLCJbYXR0ci5uYW1lXSI6Im51bGwiLCIoZm9jdXMpIjoiZm9jdXMoKSIscm9sZToicHJlc2VudGF0aW9uIn0sc3R5bGVzOlsiLm1hdC1idXR0b24tdG9nZ2xlLXN0YW5kYWxvbmUsLm1hdC1idXR0b24tdG9nZ2xlLWdyb3Vwe3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6aW5saW5lLWZsZXg7ZmxleC1kaXJlY3Rpb246cm93O3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47Ym9yZGVyLXJhZGl1czoycHg7LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50fS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1idXR0b24tdG9nZ2xlLXN0YW5kYWxvbmUsLmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXB7b3V0bGluZTpzb2xpZCAxcHh9Lm1hdC1idXR0b24tdG9nZ2xlLXN0YW5kYWxvbmUubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZCwubWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXAtYXBwZWFyYW5jZS1zdGFuZGFyZHtib3JkZXItcmFkaXVzOjRweH0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtYnV0dG9uLXRvZ2dsZS1zdGFuZGFsb25lLm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmQsLmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXAtYXBwZWFyYW5jZS1zdGFuZGFyZHtvdXRsaW5lOjB9Lm1hdC1idXR0b24tdG9nZ2xlLXZlcnRpY2Fse2ZsZXgtZGlyZWN0aW9uOmNvbHVtbn0ubWF0LWJ1dHRvbi10b2dnbGUtdmVydGljYWwgLm1hdC1idXR0b24tdG9nZ2xlLWxhYmVsLWNvbnRlbnR7ZGlzcGxheTpibG9ja30ubWF0LWJ1dHRvbi10b2dnbGV7d2hpdGUtc3BhY2U6bm93cmFwO3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtYnV0dG9uLXRvZ2dsZSAubWF0LWljb24gc3Zne3ZlcnRpY2FsLWFsaWduOnRvcH0ubWF0LWJ1dHRvbi10b2dnbGUuY2RrLWtleWJvYXJkLWZvY3VzZWQgLm1hdC1idXR0b24tdG9nZ2xlLWZvY3VzLW92ZXJsYXl7b3BhY2l0eToxfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1idXR0b24tdG9nZ2xlLmNkay1rZXlib2FyZC1mb2N1c2VkIC5tYXQtYnV0dG9uLXRvZ2dsZS1mb2N1cy1vdmVybGF5e29wYWNpdHk6LjV9Lm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmQ6bm90KC5tYXQtYnV0dG9uLXRvZ2dsZS1kaXNhYmxlZCk6aG92ZXIgLm1hdC1idXR0b24tdG9nZ2xlLWZvY3VzLW92ZXJsYXl7b3BhY2l0eTouMDR9Lm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmQuY2RrLWtleWJvYXJkLWZvY3VzZWQ6bm90KC5tYXQtYnV0dG9uLXRvZ2dsZS1kaXNhYmxlZCkgLm1hdC1idXR0b24tdG9nZ2xlLWZvY3VzLW92ZXJsYXl7b3BhY2l0eTouMTJ9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZC5jZGsta2V5Ym9hcmQtZm9jdXNlZDpub3QoLm1hdC1idXR0b24tdG9nZ2xlLWRpc2FibGVkKSAubWF0LWJ1dHRvbi10b2dnbGUtZm9jdXMtb3ZlcmxheXtvcGFjaXR5Oi41fUBtZWRpYShob3Zlcjogbm9uZSl7Lm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmQ6bm90KC5tYXQtYnV0dG9uLXRvZ2dsZS1kaXNhYmxlZCk6aG92ZXIgLm1hdC1idXR0b24tdG9nZ2xlLWZvY3VzLW92ZXJsYXl7ZGlzcGxheTpub25lfX0ubWF0LWJ1dHRvbi10b2dnbGUtbGFiZWwtY29udGVudHstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7LW1vei11c2VyLXNlbGVjdDpub25lOy1tcy11c2VyLXNlbGVjdDpub25lO3VzZXItc2VsZWN0Om5vbmU7ZGlzcGxheTppbmxpbmUtYmxvY2s7bGluZS1oZWlnaHQ6MzZweDtwYWRkaW5nOjAgMTZweDtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZCAubWF0LWJ1dHRvbi10b2dnbGUtbGFiZWwtY29udGVudHtwYWRkaW5nOjAgMTJweH0ubWF0LWJ1dHRvbi10b2dnbGUtbGFiZWwtY29udGVudD4qe3ZlcnRpY2FsLWFsaWduOm1pZGRsZX0ubWF0LWJ1dHRvbi10b2dnbGUtZm9jdXMtb3ZlcmxheXtib3JkZXItcmFkaXVzOmluaGVyaXQ7cG9pbnRlci1ldmVudHM6bm9uZTtvcGFjaXR5OjA7dG9wOjA7bGVmdDowO3JpZ2h0OjA7Ym90dG9tOjA7cG9zaXRpb246YWJzb2x1dGV9Lm1hdC1idXR0b24tdG9nZ2xlLWNoZWNrZWQgLm1hdC1idXR0b24tdG9nZ2xlLWZvY3VzLW92ZXJsYXl7Ym9yZGVyLWJvdHRvbTpzb2xpZCAzNnB4fS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1idXR0b24tdG9nZ2xlLWNoZWNrZWQgLm1hdC1idXR0b24tdG9nZ2xlLWZvY3VzLW92ZXJsYXl7b3BhY2l0eTouNTtoZWlnaHQ6MH0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtYnV0dG9uLXRvZ2dsZS1jaGVja2VkLm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmQgLm1hdC1idXR0b24tdG9nZ2xlLWZvY3VzLW92ZXJsYXl7Ym9yZGVyLWJvdHRvbTpzb2xpZCA1MDBweH0ubWF0LWJ1dHRvbi10b2dnbGUgLm1hdC1idXR0b24tdG9nZ2xlLXJpcHBsZXt0b3A6MDtsZWZ0OjA7cmlnaHQ6MDtib3R0b206MDtwb3NpdGlvbjphYnNvbHV0ZTtwb2ludGVyLWV2ZW50czpub25lfS5tYXQtYnV0dG9uLXRvZ2dsZS1idXR0b257Ym9yZGVyOjA7YmFja2dyb3VuZDpub25lO2NvbG9yOmluaGVyaXQ7cGFkZGluZzowO21hcmdpbjowO2ZvbnQ6aW5oZXJpdDtvdXRsaW5lOm5vbmU7d2lkdGg6MTAwJTtjdXJzb3I6cG9pbnRlcn0ubWF0LWJ1dHRvbi10b2dnbGUtZGlzYWJsZWQgLm1hdC1idXR0b24tdG9nZ2xlLWJ1dHRvbntjdXJzb3I6ZGVmYXVsdH0ubWF0LWJ1dHRvbi10b2dnbGUtYnV0dG9uOjotbW96LWZvY3VzLWlubmVye2JvcmRlcjowfVxuIl19XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpBNCxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpbUzRdfV19LHt0eXBlOk9ifSx7dHlwZTpLaH0se3R5cGU6ZkZ9LHt0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTokYSxhcmdzOlsidGFiaW5kZXgiXX1dfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W2s0XX1dfV19KSx7YXJpYUxhYmVsbGVkYnk6W3t0eXBlOlJfLGFyZ3M6WyJhcmlhLWxhYmVsbGVkYnkiXX1dLGNoYW5nZTpbe3R5cGU6RV99XSx0YWJJbmRleDpbe3R5cGU6Ul99XSxhcHBlYXJhbmNlOlt7dHlwZTpSX31dLGNoZWNrZWQ6W3t0eXBlOlJffV0sZGlzYWJsZWQ6W3t0eXBlOlJffV0saWQ6W3t0eXBlOlJffV0sbmFtZTpbe3R5cGU6Ul99XSxhcmlhTGFiZWw6W3t0eXBlOlJfLGFyZ3M6WyJhcmlhLWxhYmVsIl19XSxfYnV0dG9uRWxlbWVudDpbe3R5cGU6YXIsYXJnczpbImJ1dHRvbiJdfV0sdmFsdWU6W3t0eXBlOlJffV19KTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNsYXNzIHo0e316NC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8ejQpfSx6NC7JtW1vZD1mbyh7dHlwZTp6NH0pLHo0Lsm1aW5qPURuKHtpbXBvcnRzOltbTkYsZkxdLE5GXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoejQsW3t0eXBlOkxfLGFyZ3M6W3tpbXBvcnRzOltORixmTF0sZXhwb3J0czpbTkYsQTQsTjRdLGRlY2xhcmF0aW9uczpbQTQsTjRdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmdW8oejQse2RlY2xhcmF0aW9uczpmdW5jdGlvbigpe3JldHVybltBNCxONF19LGltcG9ydHM6ZnVuY3Rpb24oKXtyZXR1cm5bTkYsZkxdfSxleHBvcnRzOmZ1bmN0aW9uKCl7cmV0dXJuW05GLEE0LE40XX19KTtjb25zdCBJND0iL3NjYWxhcl9zdW1tYXJ5IjtmdW5jdGlvbiBINCh0LGUpe2xldCBuPXQ7cmV0dXJuIGUmJnQuc3RhcnRzV2l0aChlKyIvIikmJihuPXQuc2xpY2UoZS5sZW5ndGgrMSkpLG4uZW5kc1dpdGgoSTQpJiYobj1uLnNsaWNlKDAsLUk0Lmxlbmd0aCkpLG58fHR9ZnVuY3Rpb24gRjQodCxlKXtpZigxJnQmJihDZigwLCJzcGFuIiwyKSxQdSgxKSxNZigpKSwyJnQpe2NvbnN0IHQ9emYoKTtEYygxKSx3dSh0LmZpcnN0VGV4dFBhcnQoKSl9fWNsYXNzIEw0e3BhcnNlVmFsdWUoKXtjb25zdCB0PXRoaXMudmFsdWUubGFzdEluZGV4T2YoIi8iKTtyZXR1cm4tMT09PXQ/e2ZpcnN0OiIiLHNlY29uZDp0aGlzLnZhbHVlfTp7Zmlyc3Q6dGhpcy52YWx1ZS5zbGljZSgwLHQpLHNlY29uZDp0aGlzLnZhbHVlLnNsaWNlKHQpfX1maXJzdFRleHRQYXJ0KCl7cmV0dXJuIHRoaXMucGFyc2VWYWx1ZSgpLmZpcnN0fXNlY29uZFRleHRQYXJ0KCl7cmV0dXJuIHRoaXMucGFyc2VWYWx1ZSgpLnNlY29uZH19ZnVuY3Rpb24gQjQodCxlLG4pe3ZhciBvLGksYSxyO3JldHVybiB0LnN0YXJ0LnN0ZXA8PWUmJnQuZW5kJiZuPD10LmVuZC5zdGVwfHxlPD10LnN0YXJ0LnN0ZXAmJnQuc3RhcnQuc3RlcDw9bnx8dC5lbmQmJmU8PShudWxsPT09KG89dC5lbmQpfHx2b2lkIDA9PT1vP3ZvaWQgMDpvLnN0ZXApJiYobnVsbD09PShpPXQuZW5kKXx8dm9pZCAwPT09aT92b2lkIDA6aS5zdGVwKTw9bj97c3RhcnRTdGVwOnQuc3RhcnQuc3RlcCxlbmRTdGVwOm51bGwhPT0ocj1udWxsPT09KGE9dC5lbmQpfHx2b2lkIDA9PT1hP3ZvaWQgMDphLnN0ZXApJiZ2b2lkIDAhPT1yP3I6bnVsbCxjbGlwcGVkOiExfTpuPD10LnN0YXJ0LnN0ZXA/e3N0YXJ0U3RlcDpuLGVuZFN0ZXA6bnVsbCxjbGlwcGVkOiEwfTp7c3RhcnRTdGVwOmUsZW5kU3RlcDpudWxsLGNsaXBwZWQ6ITB9fWZ1bmN0aW9uIFY0KHQsZSl7aWYoMSZ0JiZ2ZigwLCJ0Yi1leHBlcmltZW50LWFsaWFzIiwyKSwyJnQpe2JmKCJhbGlhcyIsemYoKS5leHBlcmltZW50QWxpYXMpfX1mdW5jdGlvbiBqNCh0LGUpezEmdCYmKENmKDAsInNwYW4iKSxQdSgxLCIvIiksTWYoKSl9TDQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEw0KX0sTDQuybVjbXA9c28oe3R5cGU6TDQsc2VsZWN0b3JzOltbInRiLXRydW5jYXRlZC1wYXRoIl1dLGlucHV0czp7dmFsdWU6InZhbHVlIn0sZGVjbHM6Myx2YXJzOjIsY29uc3RzOltbImNsYXNzIiwiZmlyc3QtdGV4dC1wYXJ0Iiw0LCJuZ0lmIl0sWzEsInNlY29uZC10ZXh0LXBhcnQiXSxbMSwiZmlyc3QtdGV4dC1wYXJ0Il1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihIbSgwLEY0LDIsMSwic3BhbiIsMCksQ2YoMSwic3BhbiIsMSksUHUoMiksTWYoKSksMiZlJiYoYmYoIm5nSWYiLG4uZmlyc3RUZXh0UGFydCgpLmxlbmd0aD4wKSxEYygyKSx3dShuLnNlY29uZFRleHRQYXJ0KCkpKX0sZGlyZWN0aXZlczpbUHZdLHN0eWxlczpbIltfbmdob3N0LSVDT01QJV17ZGlzcGxheTppbmxpbmUtZmxleDt3aGl0ZS1zcGFjZTpub3dyYXB9LmZpcnN0LXRleHQtcGFydFtfbmdjb250ZW50LSVDT01QJV17ZmxleDoxIDEgNGNoO21heC13aWR0aDptYXgtY29udGVudH0uZmlyc3QtdGV4dC1wYXJ0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLnNlY29uZC10ZXh0LXBhcnRbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzfSJdfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihMNCxbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJ0Yi10cnVuY2F0ZWQtcGF0aCIsdGVtcGxhdGU6J1xuICAgIDxzcGFuICpuZ0lmPSJmaXJzdFRleHRQYXJ0KCkubGVuZ3RoID4gMCIgY2xhc3M9ImZpcnN0LXRleHQtcGFydCI+e3tcbiAgICAgIGZpcnN0VGV4dFBhcnQoKVxuICAgIH19PC9zcGFuPlxuICAgIDxzcGFuIGNsYXNzPSJzZWNvbmQtdGV4dC1wYXJ0Ij57eyBzZWNvbmRUZXh0UGFydCgpIH19PC9zcGFuPlxuICAnLHN0eWxlVXJsczpbInRydW5jYXRlZF9wYXRoX2NvbXBvbmVudC5jc3MiXX1dfV0sbnVsbCx7dmFsdWU6W3t0eXBlOlJffV19KTtjbGFzcyBVNHt9VTQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFU0KX0sVTQuybVjbXA9c28oe3R5cGU6VTQsc2VsZWN0b3JzOltbImNhcmQtcnVuLW5hbWUtY29tcG9uZW50Il1dLGlucHV0czp7bmFtZToibmFtZSIsZXhwZXJpbWVudEFsaWFzOiJleHBlcmltZW50QWxpYXMifSxkZWNsczo0LHZhcnM6Myxjb25zdHM6W1szLCJhbGlhcyIsNCwibmdJZiJdLFs0LCJuZ0lmIl0sWzMsImFsaWFzIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihIbSgwLFY0LDEsMSwidGItZXhwZXJpbWVudC1hbGlhcyIsMCksSG0oMSxqNCwyLDAsInNwYW4iLDEpLENmKDIsInNwYW4iKSxQdSgzKSxNZigpKSwyJmUmJihiZigibmdJZiIsbnVsbCE9bi5leHBlcmltZW50QWxpYXMpLERjKDEpLGJmKCJuZ0lmIixudWxsIT1uLmV4cGVyaW1lbnRBbGlhcyksRGMoMiksd3Uobi5uYW1lKSl9LGRpcmVjdGl2ZXM6W1B2LEgyXSxzdHlsZXM6WycubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTJweDtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1iYWRnZS1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo5cHh9Lm1hdC1iYWRnZS1sYXJnZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4fS5tYXQtaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWhlYWRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAyNHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE2cHgvMjhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE1cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjgzKS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1oNltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC42NykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtYm9keS1zdHJvbmdbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MCAwIDEycHh9Lm1hdC1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FwdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTJweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6MzAwIDExMnB4LzExMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wNWVtO21hcmdpbjowIDAgNTZweH0ubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNTZweC81NnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMmVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNDVweC80OHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMDVlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDM0cHgvNDBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgNjRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FyZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjBweH0ubWF0LWNhcmQtc3VidGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcmQtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2hlY2tib3gtbGF5b3V0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC10cmFpbGluZy1pY29uLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmUubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxOHB4fS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jYWxlbmRhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FsZW5kYXItYm9keVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEzcHh9Lm1hdC1jYWxlbmRhci1ib2R5LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgdGhbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWRpYWxvZy10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMTI1O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTUwJTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjVlbTt3aWR0aDoxLjVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW07bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi41ZW0gMDtib3JkZXItdG9wOi44NDM3NWVtIHNvbGlkIHRyYW5zcGFyZW50fS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3RvcDotMC44NDM3NWVtO3BhZGRpbmctdG9wOi44NDM3NWVtfS5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjc1JTttYXJnaW4tdG9wOi42NjY2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNzkxNjY2NjY2N2VtKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi40Mzc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAycHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyM2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMjgxMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi41NDE2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNjY2NjY2NjY2N2VtKX1AbWVkaWEgcHJpbnR7Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIyZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIxZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMmVtKSBzY2FsZSgwLjc1KX19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjI1ZW0gMCAuNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4wOTM3NWVtO21hcmdpbi10b3A6LTAuNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MWVtIDAgMWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjg0Mzc1ZW07bWFyZ2luLXRvcDotMC4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH1pbnB1dC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDotMC4wNjI1ZW19Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1wYWdlLXNpemVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4fS5tYXQtcmFkaW8tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3RbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbX0ubWF0LXNsaWRlLXRvZ2dsZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXN0ZXBwZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc3RlcC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtc3RlcC1zdWItbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0Om5vcm1hbH0ubWF0LXN0ZXAtbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtc3RlcC1sYWJlbC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdGFiLWdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjB9Lm1hdC10b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEwcHg7cGFkZGluZy10b3A6NnB4O3BhZGRpbmctYm90dG9tOjZweH0ubWF0LXRvb2x0aXAtaGFuZHNldFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7cGFkZGluZy10b3A6OHB4O3BhZGRpbmctYm90dG9tOjhweH0ubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTZweH0ubWF0LW9wdGdyb3VwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LXNpbXBsZS1zbmFja2Jhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4fS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbltfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MTtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRyZWVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbmVzdGVkLXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtc2l6ZToxNHB4fS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdOm5vdCg6ZW1wdHkpe3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApfS5tYXQtcmlwcGxlLm1hdC1yaXBwbGUtdW5ib3VuZGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzp2aXNpYmxlfS5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO2JvcmRlci1yYWRpdXM6NTAlO3BvaW50ZXItZXZlbnRzOm5vbmU7dHJhbnNpdGlvbjpvcGFjaXR5LHRyYW5zZm9ybSAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7dHJhbnNmb3JtOnNjYWxlKDApfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpub25lfS5jZGstdmlzdWFsbHktaGlkZGVuW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6MDtjbGlwOnJlY3QoMCAwIDAgMCk7aGVpZ2h0OjFweDttYXJnaW46LTFweDtvdmVyZmxvdzpoaWRkZW47cGFkZGluZzowO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjFweDt3aGl0ZS1zcGFjZTpub3dyYXA7b3V0bGluZTowOy13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BvaW50ZXItZXZlbnRzOm5vbmU7dG9wOjA7bGVmdDowO2hlaWdodDoxMDAlO3dpZHRoOjEwMCV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdOmVtcHR5e2Rpc3BsYXk6bm9uZX0uY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LXBhbmVbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3BvaW50ZXItZXZlbnRzOmF1dG87Ym94LXNpemluZzpib3JkZXItYm94O3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7bWF4LXdpZHRoOjEwMCU7bWF4LWhlaWdodDoxMDAlfS5jZGstb3ZlcmxheS1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7bGVmdDowO3JpZ2h0OjA7ei1pbmRleDoxMDAwO3BvaW50ZXItZXZlbnRzOmF1dG87LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50O3RyYW5zaXRpb246b3BhY2l0eSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKTtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5Oi42fS5jZGstb3ZlcmxheS1kYXJrLWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjMyKX0uY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTowfS5jZGstb3ZlcmxheS1jb25uZWN0ZWQtcG9zaXRpb24tYm91bmRpbmctYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjttaW4td2lkdGg6MXB4O21pbi1oZWlnaHQ6MXB4fS5jZGstZ2xvYmFsLXNjcm9sbGJsb2NrW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt3aWR0aDoxMDAlO292ZXJmbG93LXk6c2Nyb2xsfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZVtfbmdjb250ZW50LSVDT01QJV17cmVzaXplOm5vbmV9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZ1tfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6YXV0byAhaW1wb3J0YW50O292ZXJmbG93OmhpZGRlbiAhaW1wb3J0YW50fXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmctZmlyZWZveFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6MCAhaW1wb3J0YW50fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnR7fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5ke30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxse2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydCAwcyAxbXN9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06bm90KDotd2Via2l0LWF1dG9maWxsKXthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5kIDBzIDFtc30ubWF0LWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1tZGMtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX1bX25naG9zdC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Ym9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVde2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjcpfSddLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihVNCxbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJjYXJkLXJ1bi1uYW1lLWNvbXBvbmVudCIsdGVtcGxhdGU6Jzx0Yi1leHBlcmltZW50LWFsaWFzXG4gICAgICAqbmdJZj0iZXhwZXJpbWVudEFsaWFzICE9IG51bGwiXG4gICAgICBbYWxpYXNdPSJleHBlcmltZW50QWxpYXMiXG4gICAgPjwvdGItZXhwZXJpbWVudC1hbGlhcz5cbiAgICA8c3BhbiAqbmdJZj0iZXhwZXJpbWVudEFsaWFzICE9IG51bGwiPi88L3NwYW4+XG4gICAgPHNwYW4+e3sgbmFtZSB9fTwvc3Bhbj4nLHN0eWxlVXJsczpbInJ1bl9uYW1lX2NvbXBvbmVudC5jc3MiXSxjaGFuZ2VEZXRlY3Rpb246am4uT25QdXNofV19XSxudWxsLHtuYW1lOlt7dHlwZTpSX31dLGV4cGVyaW1lbnRBbGlhczpbe3R5cGU6Ul99XX0pO2NsYXNzIFc0e2NvbnN0cnVjdG9yKHQpe3RoaXMuc3RvcmU9dH1uZ09uSW5pdCgpe3RoaXMubmFtZSQ9S3QoW3RoaXMuc3RvcmUuc2VsZWN0KFl6LHtydW5JZDp0aGlzLnJ1bklkfSldKS5waXBlKFZ0KCgoW3RdKT0+KGZ1bmN0aW9uIGUodCxuLG8pe3ZhciBpO2lmKCFuJiYhbylyZXR1cm4gdDtsZXQgYT1udWxsIT09KGk9bnVsbD09bj92b2lkIDA6bi5uYW1lKSYmdm9pZCAwIT09aT9pOiIuLi4iO3JldHVybiBvJiYoYT1gWyR7by5hbGlhc051bWJlcn1dICR7by5hbGlhc1RleHR9LyR7YX1gKSxhfSkodGhpcy5ydW5JZCx0LG51bGwpKSkpLHRoaXMuZXhwZXJpbWVudEFsaWFzJD1LdChbdGhpcy5zdG9yZS5zZWxlY3QoR3ose3J1bklkOnRoaXMucnVuSWR9KSx0aGlzLnN0b3JlLnNlbGVjdChPUildKS5waXBlKFZ0KCgoW3QsZV0pPT50P2VbdF06bnVsbCkpKX19ZnVuY3Rpb24gRzQodCxlKXtpZigxJnQmJihDZigwLCJzcGFuIiwxNyksUHUoMSksX3koMiwibnVtYmVyIiksTWYoKSksMiZ0KXtjb25zdCB0PXpmKCk7RGMoMSksa3UoIlN0ZXAgIixDeSgyLDEsdC5zdGVwVmFsdWVzW3Quc3RlcEluZGV4XSksIiIpfX1mdW5jdGlvbiBZNCh0LGUpe2lmKDEmdCYmKENmKDAsInNwYW4iLDE4KSxQdSgxKSxfeSgyLCJudW1iZXIiKSxfeSgzLCJudW1iZXIiKSxNZigpKSwyJnQpe2NvbnN0IHQ9emYoKTtEYygxKSxTdSgiU2FtcGxlICIsQ3koMiwyLHQuc2FtcGxlKzEpLCIvIixDeSgzLDQsdC5udW1TYW1wbGUpLCIiKX19ZnVuY3Rpb24gcTQodCxlKXsxJnQmJnZmKDAsIm1hdC1zcGlubmVyIiwxOSl9VzQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFc0KShnZihpUykpfSxXNC7JtWNtcD1zbyh7dHlwZTpXNCxzZWxlY3RvcnM6W1siY2FyZC1ydW4tbmFtZSJdXSxpbnB1dHM6e3J1bklkOiJydW5JZCJ9LGRlY2xzOjQsdmFyczo5LGNvbnN0czpbWzMsIm5hbWUiLCJleHBlcmltZW50QWxpYXMiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKHZmKDAsImNhcmQtcnVuLW5hbWUtY29tcG9uZW50IiwwKSxfeSgxLCJhc3luYyIpLF95KDIsImFzeW5jIiksX3koMywiYXN5bmMiKSksMiZlJiYoYmYoIm5hbWUiLEN5KDEsMyxuLm5hbWUkKSkoImV4cGVyaW1lbnRBbGlhcyIsQ3koMyw3LG4uZXhwZXJpbWVudEFsaWFzJCkpLHltKCJ0aXRsZSIsQ3koMiw1LG4ubmFtZSQpKSl9LGRpcmVjdGl2ZXM6W1U0XSxwaXBlczpbVnZdLGVuY2Fwc3VsYXRpb246MixjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoVzQsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoiY2FyZC1ydW4tbmFtZSIsdGVtcGxhdGU6J1xuICAgIDxjYXJkLXJ1bi1uYW1lLWNvbXBvbmVudFxuICAgICAgW25hbWVdPSJuYW1lJCB8IGFzeW5jIlxuICAgICAgW2F0dHIudGl0bGVdPSJuYW1lJCB8IGFzeW5jIlxuICAgICAgW2V4cGVyaW1lbnRBbGlhc109ImV4cGVyaW1lbnRBbGlhcyQgfCBhc3luYyJcbiAgICA+PC9jYXJkLXJ1bi1uYW1lLWNvbXBvbmVudD5cbiAgJyxjaGFuZ2VEZXRlY3Rpb246am4uT25QdXNofV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6aVN9XX0pLHtydW5JZDpbe3R5cGU6Ul99XX0pO2NvbnN0IFo0PWZ1bmN0aW9uKHQpe3JldHVybntmaWx0ZXI6dH19O2Z1bmN0aW9uIFg0KHQsZSl7aWYoMSZ0KXtjb25zdCB0PXdmKCk7eGYoMCksQ2YoMSwiZGl2IiwyMCksQ2YoMiwibWF0LXNsaWRlciIsMjEpLFJmKCJpbnB1dCIsKGZ1bmN0aW9uIGUobil7UGkodCk7cmV0dXJuIHpmKCkub25TbGlkZXJJbnB1dChuKX0pKSxNZigpLE1mKCksQ2YoMywiZGl2IiwyMiksdmYoNCwiaW1nIiwyMyksTWYoKSxPZigpfWlmKDImdCl7Y29uc3QgdD16ZigpO0RjKDIpLGJmKCJkaXNhYmxlZCIsdC5zdGVwVmFsdWVzLmxlbmd0aDw9MSkoIm1pbiIsMCkoIm1heCIsdC5zdGVwVmFsdWVzLmxlbmd0aC0xKSgic3RlcCIsMSkoInRpY2tJbnRlcnZhbCIsMSkoInZhbHVlIix0LnN0ZXBJbmRleCksRGMoMiksQmYoImFsdCIsIkltYWdlIGF0IHN0ZXAgIix0LnN0ZXBWYWx1ZXNbdC5zdGVwSW5kZXhdLCIiKSxMZigic3JjIix0LmltYWdlVXJsLFhzKSxiZigibmdTdHlsZSIsaXkoOSxaNCx0LmNzc0ZpbHRlcigpKSl9fWZ1bmN0aW9uIEs0KHQsZSl7MSZ0JiYoQ2YoMCwiZGl2IiwyNSksUHUoMSwiIERhdGEgZmFpbGVkIHRvIGxvYWQuICIpLE1mKCkpfWZ1bmN0aW9uIEo0KHQsZSl7aWYoMSZ0JiZIbSgwLEs0LDIsMCwiZGl2IiwyNCksMiZ0KXtjb25zdCB0PXpmKCk7YmYoIm5nSWYiLHQubG9hZFN0YXRlPT09dC5EYXRhTG9hZFN0YXRlLkZBSUxFRCl9fWNvbnN0IFE0PWZ1bmN0aW9uKHQpe3JldHVybntiYWNrZ3JvdW5kQ29sb3I6dH19O2NsYXNzICQ0e2NvbnN0cnVjdG9yKCl7dGhpcy5EYXRhTG9hZFN0YXRlPVVFLHRoaXMub25BY3R1YWxTaXplVG9nZ2xlPW5ldyBTeSx0aGlzLnN0ZXBJbmRleENoYW5nZT1uZXcgU3ksdGhpcy5vblBpbkNsaWNrZWQ9bmV3IFN5fWNzc0ZpbHRlcigpe3JldHVybmBjb250cmFzdCgke3RoaXMuY29udHJhc3RJbk1pbGxpLzEwfSUpIGJyaWdodG5lc3MoJHt0aGlzLmJyaWdodG5lc3NJbk1pbGxpLzFlM30pYH1vblNsaWRlcklucHV0KHQpe3RoaXMuc3RlcEluZGV4Q2hhbmdlLmVtaXQodC52YWx1ZSl9fSQ0Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHwkNCl9LCQ0Lsm1Y21wPXNvKHt0eXBlOiQ0LHNlbGVjdG9yczpbWyJpbWFnZS1jYXJkLWNvbXBvbmVudCJdXSxob3N0VmFyczoyLGhvc3RCaW5kaW5nczpmdW5jdGlvbiB0KGUsbil7MiZlJiZjdSgiYWN0dWFsLXNpemUiLG4uc2hvd0FjdHVhbFNpemUpfSxpbnB1dHM6e2xvYWRTdGF0ZToibG9hZFN0YXRlIix0aXRsZToidGl0bGUiLHRhZzoidGFnIixydW5JZDoicnVuSWQiLHNhbXBsZToic2FtcGxlIixudW1TYW1wbGU6Im51bVNhbXBsZSIsaW1hZ2VVcmw6ImltYWdlVXJsIixzdGVwSW5kZXg6InN0ZXBJbmRleCIsc3RlcFZhbHVlczoic3RlcFZhbHVlcyIsYnJpZ2h0bmVzc0luTWlsbGk6ImJyaWdodG5lc3NJbk1pbGxpIixjb250cmFzdEluTWlsbGk6ImNvbnRyYXN0SW5NaWxsaSIsc2hvd0FjdHVhbFNpemU6InNob3dBY3R1YWxTaXplIixydW5Db2xvclNjYWxlOiJydW5Db2xvclNjYWxlIixhbGxvd1RvZ2dsZUFjdHVhbFNpemU6ImFsbG93VG9nZ2xlQWN0dWFsU2l6ZSIsaXNQaW5uZWQ6ImlzUGlubmVkIn0sb3V0cHV0czp7b25BY3R1YWxTaXplVG9nZ2xlOiJvbkFjdHVhbFNpemVUb2dnbGUiLHN0ZXBJbmRleENoYW5nZToic3RlcEluZGV4Q2hhbmdlIixvblBpbkNsaWNrZWQ6Im9uUGluQ2xpY2tlZCJ9LGRlY2xzOjE5LHZhcnM6MTQsY29uc3RzOmZ1bmN0aW9uKCl7bGV0IHQsZTtpZigidW5kZWZpbmVkIiE9dHlwZW9mIG5nSTE4bkNsb3N1cmVNb2RlJiZuZ0kxOG5DbG9zdXJlTW9kZSl7dD1nb29nLmdldE1zZygiUGluIGNhcmQiKX1lbHNlIHQ9JGxvY2FsaXplYDpBIGJ1dHRvbiB0byBwaW4gYSBjYXJkLuKQn2U2NjVkYzcxMmJkNWYxOGQ0ZGZhM2EyOWUxMjVkNTY1Y2M1MWUyZjbikJ83Mjg0NjA2NDI2MjM0Mzc1MzQ0OlBpbiBjYXJkYDtpZigidW5kZWZpbmVkIiE9dHlwZW9mIG5nSTE4bkNsb3N1cmVNb2RlJiZuZ0kxOG5DbG9zdXJlTW9kZSl7ZT1nb29nLmdldE1zZygiVG9nZ2xlIGFjdHVhbCBpbWFnZSBzaXplIil9ZWxzZSBlPSRsb2NhbGl6ZWA6QSBidXR0b24gb24gYW4gaW1hZ2UgY2FyZCB0aGF0IHRvZ2dsZXMgYWN0dWFsIGltYWdlIHNpemUu4pCfM2NhMDVlZjNhNmUzYTM3MDY1ZjVlMGY2OWM1ZDVhMjE3OGQ5MDc5MeKQnzc2MzUxMDE5MzY2NjQ3ODkxNDA6VG9nZ2xlIGFjdHVhbCBpbWFnZSBzaXplYDtyZXR1cm5bWzEsImhlYWRpbmciXSxbMSwibGluZSJdLFsxLCJ0YWciLDMsInRpdGxlIiwidmFsdWUiXSxbMSwiY29udHJvbHMiXSxbIm1hdC1pY29uLWJ1dHRvbiIsIiIsImFyaWEtbGFiZWwiLHQsMSwicGluLWJ1dHRvbiIsMywiY2xpY2siXSxbMywic3ZnSWNvbiJdLFsibWF0LWljb24tYnV0dG9uIiwiIiwiYXJpYS1sYWJlbCIsZSwidGl0bGUiLCJUb2dnbGUgYWN0dWFsIGltYWdlIHNpemUiLDMsImRpc2FibGVkIiwiY2xpY2siXSxbInN2Z0ljb24iLCJpbWFnZV9zZWFyY2hfMjRweCJdLFsxLCJydW4iXSxbMSwiZG90IiwzLCJuZ1N0eWxlIl0sWzEsInJ1bi10ZXh0IiwzLCJydW5JZCJdLFsxLCJtZXRhZGF0YSJdLFsiY2xhc3MiLCJzdGVwIiw0LCJuZ0lmIl0sWyJjbGFzcyIsInNhbXBsZSIsNCwibmdJZiJdLFsiY2xhc3MiLCJsb2FkaW5nIiwiZGlhbWV0ZXIiLCIxOCIsNCwibmdJZiJdLFs0LCJuZ0lmIiwibmdJZkVsc2UiXSxbIm5vSW1hZ2VEYXRhIiwiIl0sWzEsInN0ZXAiXSxbMSwic2FtcGxlIl0sWyJkaWFtZXRlciIsIjE4IiwxLCJsb2FkaW5nIl0sWzEsInNsaWRlci1yb3ciXSxbImNvbG9yIiwicHJpbWFyeSIsMSwic3RlcC1zbGlkZXIiLDMsImRpc2FibGVkIiwibWluIiwibWF4Iiwic3RlcCIsInRpY2tJbnRlcnZhbCIsInZhbHVlIiwiaW5wdXQiXSxbMSwiaW1nLWNvbnRhaW5lciJdLFszLCJhbHQiLCJzcmMiLCJuZ1N0eWxlIl0sWyJjbGFzcyIsImVtcHR5LW1lc3NhZ2UiLDQsIm5nSWYiXSxbMSwiZW1wdHktbWVzc2FnZSJdXX0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pe2lmKDEmZSYmKENmKDAsImRpdiIsMCksQ2YoMSwiZGl2IiwxKSx2ZigyLCJ0Yi10cnVuY2F0ZWQtcGF0aCIsMiksQ2YoMywic3BhbiIsMyksQ2YoNCwiYnV0dG9uIiw0KSxSZigiY2xpY2siLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4ub25QaW5DbGlja2VkLmVtaXQoIW4uaXNQaW5uZWQpfSkpLHZmKDUsIm1hdC1pY29uIiw1KSxNZigpLENmKDYsImJ1dHRvbiIsNiksUmYoImNsaWNrIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLm9uQWN0dWFsU2l6ZVRvZ2dsZS5lbWl0KCl9KSksdmYoNywibWF0LWljb24iLDcpLE1mKCksTWYoKSxNZigpLENmKDgsImRpdiIsMSksQ2YoOSwic3BhbiIsOCksdmYoMTAsInNwYW4iLDkpLHZmKDExLCJjYXJkLXJ1bi1uYW1lIiwxMCksTWYoKSxDZigxMiwiZGl2IiwxMSksSG0oMTMsRzQsMywzLCJzcGFuIiwxMiksSG0oMTQsWTQsNCw2LCJzcGFuIiwxMyksSG0oMTUscTQsMSwwLCJtYXQtc3Bpbm5lciIsMTQpLE1mKCksTWYoKSxNZigpLEhtKDE2LFg0LDUsMTEsIm5nLWNvbnRhaW5lciIsMTUpLEhtKDE3LEo0LDEsMSwibmctdGVtcGxhdGUiLG51bGwsMTYscXkpKSwyJmUpe2NvbnN0IHQ9Rm0oMTgpO0RjKDIpLExmKCJ0aXRsZSIsbi50YWcpLExmKCJ2YWx1ZSIsbi50aXRsZSksRGMoMikseW0oInRpdGxlIixuLmlzUGlubmVkPyJVbnBpbiBjYXJkIjoiUGluIGNhcmQiKSxEYygxKSxiZigic3ZnSWNvbiIsbi5pc1Bpbm5lZD8ia2VlcF8yNHB4Ijoia2VlcF9vdXRsaW5lXzI0cHgiKSxEYygxKSxiZigiZGlzYWJsZWQiLCFuLmFsbG93VG9nZ2xlQWN0dWFsU2l6ZSksRGMoNCksYmYoIm5nU3R5bGUiLGl5KDEyLFE0LG4ucnVuQ29sb3JTY2FsZShuLnJ1bklkKSkpLERjKDEpLGJmKCJydW5JZCIsbi5ydW5JZCksRGMoMiksYmYoIm5nSWYiLG51bGwhPT1uLnN0ZXBJbmRleCYmbi5zdGVwSW5kZXg8bi5zdGVwVmFsdWVzLmxlbmd0aCksRGMoMSksYmYoIm5nSWYiLG4ubnVtU2FtcGxlPjEpLERjKDEpLGJmKCJuZ0lmIixuLmxvYWRTdGF0ZT09PW4uRGF0YUxvYWRTdGF0ZS5MT0FESU5HKSxEYygxKSxiZigibmdJZiIsbnVsbCE9PW4uc3RlcEluZGV4JiZuLnN0ZXBJbmRleDxuLnN0ZXBWYWx1ZXMubGVuZ3RoKSgibmdJZkVsc2UiLHQpfX0sZGlyZWN0aXZlczpbTDQsTkwsTXEsenYsVzQsUHYsYTIsd0pdLHBpcGVzOlskdl0sc3R5bGVzOlsnLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjEycHg7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtYmFkZ2Utc21hbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6OXB4fS5tYXQtYmFkZ2UtbGFyZ2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweH0ubWF0LWgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1oZWFkbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMjRweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNnB4LzI4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNXB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC44MykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtaDZbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuNjcpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWJvZHktc3Ryb25nW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjAgMCAxMnB4fS5tYXQtc21hbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDEycHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjMwMCAxMTJweC8xMTJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDVlbTttYXJnaW46MCAwIDU2cHh9Lm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDU2cHgvNTZweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDJlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDQ1cHgvNDhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDA1ZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAzNHB4LzQwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDY0cHh9Lm1hdC1ib3R0b20tc2hlZXQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhcmQtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjIwcHh9Lm1hdC1jYXJkLXN1YnRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXJkLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNoZWNrYm94LWxheW91dFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoyNHB4fS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtdHJhaWxpbmctaWNvbi5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MThweH0ubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1oZWFkZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9vdGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2FsZW5kYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhbGVuZGFyLWJvZHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxM3B4fS5tYXQtY2FsZW5kYXItYm9keS1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FsZW5kYXItcGVyaW9kLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRoW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo0MDB9Lm1hdC1kaWFsb2ctdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDoxLjEyNTtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE1MCU7bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS41ZW07d2lkdGg6MS41ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNWVtIDA7Ym9yZGVyLXRvcDouODQzNzVlbSBzb2xpZCB0cmFuc3BhcmVudH0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTAuODQzNzVlbTtwYWRkaW5nLXRvcDouODQzNzVlbX0ubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo3NSU7bWFyZ2luLXRvcDouNjY2NjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjc5MTY2NjY2NjdlbSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNDM3NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMnB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTJlbSkgc2NhbGUoMC43NSl9fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi4yNWVtIDAgLjc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMDkzNzVlbTttYXJnaW4tdG9wOi0wLjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjFlbSAwIDFlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS44NDM3NWVtO21hcmdpbi10b3A6LTAuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9aW5wdXQubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LTAuMDYyNWVtfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweH0ubWF0LXJhZGlvLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW19Lm1hdC1zbGlkZS10b2dnbGUtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXN0ZXAtc3ViLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDpub3JtYWx9Lm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRhYi1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowfS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMHB4O3BhZGRpbmctdG9wOjZweDtwYWRkaW5nLWJvdHRvbTo2cHh9Lm1hdC10b29sdGlwLWhhbmRzZXRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHh9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1zaW1wbGUtc25hY2tiYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjE7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo1MDB9Lm1hdC10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW5lc3RlZC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweH0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmVtcHR5KXt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKX0ubWF0LXJpcHBsZS5tYXQtcmlwcGxlLXVuYm91bmRlZFtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6dmlzaWJsZX0ubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItcmFkaXVzOjUwJTtwb2ludGVyLWV2ZW50czpub25lO3RyYW5zaXRpb246b3BhY2l0eSx0cmFuc2Zvcm0gMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO3RyYW5zZm9ybTpzY2FsZSgwKX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6bm9uZX0uY2RrLXZpc3VhbGx5LWhpZGRlbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjA7Y2xpcDpyZWN0KDAgMCAwIDApO2hlaWdodDoxcHg7bWFyZ2luOi0xcHg7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxcHg7d2hpdGUtc3BhY2U6bm93cmFwO291dGxpbmU6MDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb2ludGVyLWV2ZW50czpub25lO3RvcDowO2xlZnQ6MDtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXTplbXB0eXtkaXNwbGF5Om5vbmV9LmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1wYW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtwb2ludGVyLWV2ZW50czphdXRvO2JveC1zaXppbmc6Ym9yZGVyLWJveDt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O21heC13aWR0aDoxMDAlO21heC1oZWlnaHQ6MTAwJX0uY2RrLW92ZXJsYXktYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO2xlZnQ6MDtyaWdodDowO3otaW5kZXg6MTAwMDtwb2ludGVyLWV2ZW50czphdXRvOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudDt0cmFuc2l0aW9uOm9wYWNpdHkgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSk7b3BhY2l0eTowfS5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjF9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAuY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTouNn0uY2RrLW92ZXJsYXktZGFyay1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4zMil9LmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MH0uY2RrLW92ZXJsYXktY29ubmVjdGVkLXBvc2l0aW9uLWJvdW5kaW5nLWJveFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bWluLXdpZHRoOjFweDttaW4taGVpZ2h0OjFweH0uY2RrLWdsb2JhbC1zY3JvbGxibG9ja1tfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7d2lkdGg6MTAwJTtvdmVyZmxvdy15OnNjcm9sbH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemVbX25nY29udGVudC0lQ09NUCVde3Jlc2l6ZTpub25lfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmdbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OmF1dG8gIWltcG9ydGFudDtvdmVyZmxvdzpoaWRkZW4gIWltcG9ydGFudH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nLWZpcmVmb3hbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OjAgIWltcG9ydGFudH1Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0e31Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZHt9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbHthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnQgMHMgMW1zfS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCg6LXdlYmtpdC1hdXRvZmlsbCl7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZCAwcyAxbXN9Lm1hdC1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtbWRjLWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9W19uZ2hvc3QtJUNPTVAlXXtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2JveC1zaXppbmc6Ym9yZGVyLWJveDtoZWlnaHQ6MTAwJTtvdmVyZmxvdzphdXRvO3BhZGRpbmc6MTZweDtwYWRkaW5nLXRvcDo0cHh9LmFjdHVhbC1zaXplW19uZ2hvc3QtJUNPTVAlXXtoZWlnaHQ6YXV0b30uaGVhZGluZ1tfbmdjb250ZW50LSVDT01QJV17YWxpZ24taXRlbXM6Y2VudGVyO2ZvbnQtc2l6ZToxNHB4O21hcmdpbi1ib3R0b206NHB4O3Bvc2l0aW9uOnJlbGF0aXZlfS5saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXthbGlnbi1pdGVtczpjZW50ZXI7ZGlzcGxheTpncmlkO2dyaWQtdGVtcGxhdGUtY29sdW1uczoxZnIgbWF4LWNvbnRlbnR9Lm1ldGFkYXRhW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7ZmxleC13cmFwOndyYXA7Z2FwOjVweDtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1lbmQ7bWF4LXdpZHRoOjE3NXB4O3RleHQtYWxpZ246ZW5kfS50YWdbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OmhpZGRlbn0ucGluLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICBtYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjE4cHh9LnJ1bltfbmdjb250ZW50LSVDT01QJV17YWxpZ24tc2VsZjpiYXNlbGluZTtkaXNwbGF5OmZsZXg7b3ZlcmZsb3c6aGlkZGVuO3doaXRlLXNwYWNlOm5vd3JhcH0ucnVuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5kb3RbX25nY29udGVudC0lQ09NUCVde2ZsZXg6bm9uZTtkaXNwbGF5OmlubGluZS1ibG9jazt3aWR0aDoxM3B4O2hlaWdodDoxM3B4O2JvcmRlci1yYWRpdXM6NTAlO21hcmdpbi1yaWdodDo0cHh9LnJ1bltfbmdjb250ZW50LSVDT01QJV0gICAucnVuLXRleHRbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO21heC13aWR0aDoxMjBweH0ucnVuW19uZ2NvbnRlbnQtJUNPTVAlXSwgLnNhbXBsZVtfbmdjb250ZW50LSVDT01QJV0sIC5zdGVwW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxO2ZvbnQtc2l6ZToxM3B4fWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC5ydW5bX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAucnVuW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KX1ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICAuc2FtcGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLnNhbXBsZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNyl9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgLnN0ZXBbX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAuc3RlcFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNyl9LmNvbnRyb2xzW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxO3doaXRlLXNwYWNlOm5vd3JhcDtqdXN0aWZ5LXNlbGY6ZmxleC1lbmQ7ZmxleC1zaHJpbms6MDttYXJnaW4tcmlnaHQ6LTEycHh9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgLmNvbnRyb2xzW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLmNvbnRyb2xzW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KX0uaW1nLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17ZmxleDoxIDEgMDtvdmVyZmxvdy15OmF1dG87cG9zaXRpb246cmVsYXRpdmV9LmltZy1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdICAgaW1nW19uZ2NvbnRlbnQtJUNPTVAlXXtpbWFnZS1yZW5kZXJpbmc6LW1vei1jcmlzcC1lZGdlcztpbWFnZS1yZW5kZXJpbmc6cGl4ZWxhdGVkfS5hY3R1YWwtc2l6ZVtfbmdob3N0LSVDT01QJV0gICAuaW1nLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6YXV0bztmbGV4Om5vbmV9W19uZ2hvc3QtJUNPTVAlXTpub3QoLmFjdHVhbC1zaXplKSAgIGltZ1tfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7bWF4LWhlaWdodDoxMDAlO21heC13aWR0aDoxMDAlO3dpZHRoOmF1dG87aGVpZ2h0OjEwMCU7b2JqZWN0LWZpdDpjb250YWlufS5zbGlkZXItcm93W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2hlaWdodDoyNHB4fS5zdGVwLXNsaWRlcltfbmdjb250ZW50LSVDT01QJV17ZmxleDoxfVtfbmdob3N0LSVDT01QJV0gICAgIC5tYXQtc2xpZGVyLW1pbi12YWx1ZSAubWF0LXNsaWRlci10aHVtYntiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9LmVtcHR5LW1lc3NhZ2VbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6MWVtO2ZvbnQtc2l6ZToxM3B4fSddLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYigkNCxbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJpbWFnZS1jYXJkLWNvbXBvbmVudCIsdGVtcGxhdGVVcmw6ImltYWdlX2NhcmRfY29tcG9uZW50Lm5nLmh0bWwiLHN0eWxlVXJsczpbImltYWdlX2NhcmRfY29tcG9uZW50LmNzcyJdLGhvc3Q6eyJbY2xhc3MuYWN0dWFsLXNpemVdIjoic2hvd0FjdHVhbFNpemUifSxjaGFuZ2VEZXRlY3Rpb246am4uT25QdXNofV19XSxudWxsLHtsb2FkU3RhdGU6W3t0eXBlOlJffV0sdGl0bGU6W3t0eXBlOlJffV0sdGFnOlt7dHlwZTpSX31dLHJ1bklkOlt7dHlwZTpSX31dLHNhbXBsZTpbe3R5cGU6Ul99XSxudW1TYW1wbGU6W3t0eXBlOlJffV0saW1hZ2VVcmw6W3t0eXBlOlJffV0sc3RlcEluZGV4Olt7dHlwZTpSX31dLHN0ZXBWYWx1ZXM6W3t0eXBlOlJffV0sYnJpZ2h0bmVzc0luTWlsbGk6W3t0eXBlOlJffV0sY29udHJhc3RJbk1pbGxpOlt7dHlwZTpSX31dLHNob3dBY3R1YWxTaXplOlt7dHlwZTpSX31dLHJ1bkNvbG9yU2NhbGU6W3t0eXBlOlJffV0sYWxsb3dUb2dnbGVBY3R1YWxTaXplOlt7dHlwZTpSX31dLGlzUGlubmVkOlt7dHlwZTpSX31dLG9uQWN0dWFsU2l6ZVRvZ2dsZTpbe3R5cGU6RV99XSxzdGVwSW5kZXhDaGFuZ2U6W3t0eXBlOkVffV0sb25QaW5DbGlja2VkOlt7dHlwZTpFX31dfSk7Y2xhc3MgdDZ7Y29uc3RydWN0b3IodCxlKXt0aGlzLnN0b3JlPXQsdGhpcy5kYXRhU291cmNlPWUsdGhpcy5mdWxsV2lkdGhDaGFuZ2VkPW5ldyBTeSx0aGlzLnBpblN0YXRlQ2hhbmdlZD1uZXcgU3ksdGhpcy5icmlnaHRuZXNzSW5NaWxsaSQ9dGhpcy5zdG9yZS5zZWxlY3QodnopLHRoaXMuY29udHJhc3RJbk1pbGxpJD10aGlzLnN0b3JlLnNlbGVjdCh4eiksdGhpcy5hY3R1YWxTaXplR2xvYmFsU2V0dGluZyQ9dGhpcy5zdG9yZS5zZWxlY3QoT3opLHRoaXMuc2hvd0FjdHVhbFNpemU9ITEsdGhpcy5hY3R1YWxTaXplVWlUb2dnbGVkPSExLHRoaXMuYWN0dWFsU2l6ZVVpVG9nZ2xlU3ViamVjdD1uZXcgaih0aGlzLmFjdHVhbFNpemVVaVRvZ2dsZWQpLHRoaXMubmdVbnN1YnNjcmliZT1uZXcgQn1vblN0ZXBJbmRleENoYW5nZWQodCl7dGhpcy5zdG9yZS5kaXNwYXRjaChBQSh7Y2FyZElkOnRoaXMuY2FyZElkLHN0ZXBJbmRleDp0fSkpfWlzSW1hZ2VDYXJkTWV0YWRhdGEodCl7Y29uc3R7cGx1Z2luOmV9PXQ7cmV0dXJuIGU9PT1LVC5JTUFHRVN9b25BY3R1YWxTaXplVG9nZ2xlKCl7dGhpcy5hY3R1YWxTaXplVWlUb2dnbGVkPSF0aGlzLmFjdHVhbFNpemVVaVRvZ2dsZWQsdGhpcy5hY3R1YWxTaXplVWlUb2dnbGVTdWJqZWN0Lm5leHQodGhpcy5hY3R1YWxTaXplVWlUb2dnbGVkKX1uZ09uSW5pdCgpe0t0KFt0aGlzLmFjdHVhbFNpemVHbG9iYWxTZXR0aW5nJCx0aGlzLmFjdHVhbFNpemVVaVRvZ2dsZVN1YmplY3RdKS5waXBlKGplKHRoaXMubmdVbnN1YnNjcmliZSksV2UoKChbdCxlXSk9Pnt0aGlzLnNob3dBY3R1YWxTaXplPXR8fGUsdGhpcy5mdWxsV2lkdGhDaGFuZ2VkLmVtaXQodGhpcy5zaG93QWN0dWFsU2l6ZSl9KSkpLnN1YnNjcmliZSgoKCk9Pnt9KSk7Y29uc3QgdD10aGlzLnN0b3JlLnNlbGVjdChueix0aGlzLmNhcmRJZCkucGlwZShqZSh0aGlzLm5nVW5zdWJzY3JpYmUpLHVlKCh0PT4hIXQmJnRoaXMuaXNJbWFnZUNhcmRNZXRhZGF0YSh0KSkpLFZ0KCh0PT50KSksRmUoMSkpLGU9S3QoW3QsdGhpcy5zdG9yZS5zZWxlY3QodHosdGhpcy5jYXJkSWQpXSkucGlwZShqZSh0aGlzLm5nVW5zdWJzY3JpYmUpLFZ0KCgoW3QsZV0pPT57Y29uc3Qgbj10LnJ1bklkO3JldHVybiBlJiZlLmhhc093blByb3BlcnR5KG4pP2Vbbl06W119KSksd2UoKCh0LGUpPT50Lmxlbmd0aD09PWUubGVuZ3RoJiYwPT09dC5sZW5ndGh8fHQ9PT1lKSksRmUoMSkpO3RoaXMuc3RlcEluZGV4JD10aGlzLnN0b3JlLnNlbGVjdChyeix0aGlzLmNhcmRJZCksdGhpcy5sb2FkU3RhdGUkPXRoaXMuc3RvcmUuc2VsZWN0KCROLHRoaXMuY2FyZElkKTtjb25zdCBuPUt0KFtlLHRoaXMuc3RlcEluZGV4JF0pLnBpcGUoVnQoKChbdCxlXSk9Pm51bGwhPT1lJiZ0W2VdP3RbZV06bnVsbCkpKTt0aGlzLnRhZyQ9dC5waXBlKFZ0KCh0PT50LnRhZykpKSx0aGlzLnRpdGxlJD10aGlzLnRhZyQucGlwZShWdCgodD0+SDQodCx0aGlzLmdyb3VwTmFtZSkpKSksdGhpcy5ydW5JZCQ9dC5waXBlKFZ0KCh0PT50LnJ1bklkKSkpLHRoaXMuc2FtcGxlJD10LnBpcGUoVnQoKHQ9PnQuc2FtcGxlKSkpLHRoaXMubnVtU2FtcGxlJD10LnBpcGUoVnQoKHQ9PnQubnVtU2FtcGxlKSkpLHRoaXMuaW1hZ2VVcmwkPW4ucGlwZShWdCgodD0+dD90aGlzLmRhdGFTb3VyY2UuaW1hZ2VVcmwodC5pbWFnZUlkKTpudWxsKSkpLHRoaXMuc3RlcFZhbHVlcyQ9ZS5waXBlKFZ0KCh0PT50Lm1hcCgodD0+dC5zdGVwKSkpKSksdGhpcy5pc1Bpbm5lZCQ9dGhpcy5zdG9yZS5zZWxlY3QoZHosdGhpcy5jYXJkSWQpfW5nT25EZXN0cm95KCl7dGhpcy5uZ1Vuc3Vic2NyaWJlLm5leHQoKSx0aGlzLm5nVW5zdWJzY3JpYmUuY29tcGxldGUoKX19dmFyIGU2LG42LG82O2Z1bmN0aW9uIGk2KHQsZSl7MSZ0JiYoQ2YoMCwic3BhbiIpLFB1KDEsInNjYWxhciIpLE1mKCkpfWZ1bmN0aW9uIGE2KHQsZSl7MSZ0JiYoQ2YoMCwic3BhbiIpLFB1KDEsImhpc3RvZ3JhbSIpLE1mKCkpfWZ1bmN0aW9uIHI2KHQsZSl7MSZ0JiYoQ2YoMCwic3BhbiIpLFB1KDEsInVua25vd24iKSxNZigpKX1mdW5jdGlvbiBzNih0LGUpe2lmKDEmdCYmKHhmKDAsMTMpLEhtKDEsaTYsMiwwLCJzcGFuIiwxNCksSG0oMixhNiwyLDAsInNwYW4iLDE0KSxIbSgzLHI2LDIsMCwic3BhbiIsMTUpLE9mKCkpLDImdCl7Y29uc3QgdD16ZigyKTtiZigibmdTd2l0Y2giLHQuY2FyZE1ldGFkYXRhLnBsdWdpbiksRGMoMSksYmYoIm5nU3dpdGNoQ2FzZSIsdC5QbHVnaW5UeXBlLlNDQUxBUlMpLERjKDEpLGJmKCJuZ1N3aXRjaENhc2UiLHQuUGx1Z2luVHlwZS5ISVNUT0dSQU1TKX19ZnVuY3Rpb24gbDYodCxlKXsxJnQmJlBmKDApfWZ1bmN0aW9uIGM2KHQsZSl7aWYoMSZ0JiYoQ2YoMCwib3B0aW9uIiwxNiksUHUoMSksTWYoKSksMiZ0KXtjb25zdCB0PWUuJGltcGxpY2l0O2JmKCJ2YWx1ZSIsdC5pZCksRGMoMSksd3UodC5uYW1lKX19ZnVuY3Rpb24gZDYodCxlKXtpZigxJnQpe2NvbnN0IHQ9d2YoKTt4ZigwKSxDZigxLCJoMiIpLEhtKDIsczYsNCwzLCJuZy10ZW1wbGF0ZSIsbnVsbCwyLHF5KSxDZig0LCJzcGFuIiksUHUoNSwiRG93bmxvYWTCoCIpLE1mKCksSG0oNixsNiwxLDAsIm5nLWNvbnRhaW5lciIsMyksQ2YoNywic3BhbiIpLFB1KDgsIsKgZGF0YSBmb3LCoCIpLE1mKCksQ2YoOSwiY29kZSIsNCksUHUoMTApLE1mKCksTWYoKSxDZigxMSwibWF0LWRpYWxvZy1jb250ZW50IiksQ2YoMTIsIm1hdC1mb3JtLWZpZWxkIiw1KSxDZigxMywibWF0LWxhYmVsIiksUHUoMTQsIlNlbGVjdCBhIHJ1biB0byBkb3dubG9hZCBhIGRhdGEgZm9yIGEgc2VyaWVzIiksTWYoKSxDZigxNSwic2VsZWN0Iiw2KSxSZigiY2hhbmdlIiwoZnVuY3Rpb24gZShuKXtQaSh0KTtyZXR1cm4gemYoKS5ydW5TZWxlY3RlZC5lbWl0KG4udGFyZ2V0LnZhbHVlKX0pKSxDZigxNiwib3B0aW9uIiw3KSxQdSgxNywiLSIpLE1mKCksSG0oMTgsYzYsMiwyLCJvcHRpb24iLDgpLE1mKCksTWYoKSxDZigxOSwiZGl2Iiw5KSxDZigyMCwic3BhbiIpLFB1KDIxLCJEb3dubG9hZCBhc+KApiIpLE1mKCksUHUoMjIsIsKgIiksQ2YoMjMsImEiLDEwKSxQdSgyNCwiSlNPTiIpLE1mKCksQ2YoMjUsImEiLDEwKSxQdSgyNiwiQ1NWIiksTWYoKSxNZigpLE1mKCksQ2YoMjcsIm1hdC1kaWFsb2ctYWN0aW9ucyIsMTEpLENmKDI4LCJidXR0b24iLDEyKSxQdSgyOSwiQ2xvc2UiKSxNZigpLE1mKCksT2YoKX1pZigyJnQpe2NvbnN0IHQ9Rm0oMyksZT16ZigpO0RjKDYpLGJmKCJuZ1RlbXBsYXRlT3V0bGV0Iix0KSxEYygzKSxiZigidGl0bGUiLGUuY2FyZE1ldGFkYXRhLnRhZyksRGMoMSksd3UoZS5jYXJkTWV0YWRhdGEudGFnKSxEYyg1KSxiZigidmFsdWUiLGUuc2VsZWN0ZWRSdW5JZHx8IiIpLERjKDEpLGJmKCJ2YWx1ZSIsIiIpLERjKDIpLGJmKCJuZ0Zvck9mIixlLnJ1bnMpLERjKDUpLGJmKCJkaXNhYmxlZCIsIWUuZG93bmxvYWRVcmxKc29uKSgiZG93bmxvYWQiLGUuZ2V0RG93bmxvYWROYW1lKCJqc29uIikpLHltKCJocmVmIixlLmRvd25sb2FkVXJsSnNvbixYcyksRGMoMiksYmYoImRpc2FibGVkIiwhZS5kb3dubG9hZFVybENzdikoImRvd25sb2FkIixlLmdldERvd25sb2FkTmFtZSgiY3N2IikpLHltKCJocmVmIixlLmRvd25sb2FkVXJsQ3N2LFhzKX19ZnVuY3Rpb24gcDYodCxlKXsxJnQmJlB1KDAsIkxvYWRpbmcuLi4iKX10Ni7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8dDYpKGdmKGlTKSxnZihhTikpfSx0Ni7JtWNtcD1zbyh7dHlwZTp0NixzZWxlY3RvcnM6W1siaW1hZ2UtY2FyZCJdXSxpbnB1dHM6e2NhcmRJZDoiY2FyZElkIixncm91cE5hbWU6Imdyb3VwTmFtZSIscnVuQ29sb3JTY2FsZToicnVuQ29sb3JTY2FsZSJ9LG91dHB1dHM6e2Z1bGxXaWR0aENoYW5nZWQ6ImZ1bGxXaWR0aENoYW5nZWQiLHBpblN0YXRlQ2hhbmdlZDoicGluU3RhdGVDaGFuZ2VkIn0sZGVjbHM6MTQsdmFyczo0MSxjb25zdHM6W1szLCJsb2FkU3RhdGUiLCJ0aXRsZSIsInRhZyIsInJ1bklkIiwic2FtcGxlIiwibnVtU2FtcGxlIiwiaW1hZ2VVcmwiLCJzdGVwSW5kZXgiLCJzdGVwVmFsdWVzIiwiYnJpZ2h0bmVzc0luTWlsbGkiLCJjb250cmFzdEluTWlsbGkiLCJydW5Db2xvclNjYWxlIiwic2hvd0FjdHVhbFNpemUiLCJhbGxvd1RvZ2dsZUFjdHVhbFNpemUiLCJpc1Bpbm5lZCIsInN0ZXBJbmRleENoYW5nZSIsIm9uQWN0dWFsU2l6ZVRvZ2dsZSIsIm9uUGluQ2xpY2tlZCJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoQ2YoMCwiaW1hZ2UtY2FyZC1jb21wb25lbnQiLDApLFJmKCJzdGVwSW5kZXhDaGFuZ2UiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLm9uU3RlcEluZGV4Q2hhbmdlZChlKX0pKSgib25BY3R1YWxTaXplVG9nZ2xlIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLm9uQWN0dWFsU2l6ZVRvZ2dsZSgpfSkpKCJvblBpbkNsaWNrZWQiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLnBpblN0YXRlQ2hhbmdlZC5lbWl0KGUpfSkpLF95KDEsImFzeW5jIiksX3koMiwiYXN5bmMiKSxfeSgzLCJhc3luYyIpLF95KDQsImFzeW5jIiksX3koNSwiYXN5bmMiKSxfeSg2LCJhc3luYyIpLF95KDcsImFzeW5jIiksX3koOCwiYXN5bmMiKSxfeSg5LCJhc3luYyIpLF95KDEwLCJhc3luYyIpLF95KDExLCJhc3luYyIpLF95KDEyLCJhc3luYyIpLF95KDEzLCJhc3luYyIpLE1mKCkpLDImZSYmYmYoImxvYWRTdGF0ZSIsQ3koMSwxNSxuLmxvYWRTdGF0ZSQpKSgidGl0bGUiLEN5KDIsMTcsbi50aXRsZSQpKSgidGFnIixDeSgzLDE5LG4udGFnJCkpKCJydW5JZCIsQ3koNCwyMSxuLnJ1bklkJCkpKCJzYW1wbGUiLEN5KDUsMjMsbi5zYW1wbGUkKSkoIm51bVNhbXBsZSIsQ3koNiwyNSxuLm51bVNhbXBsZSQpKSgiaW1hZ2VVcmwiLEN5KDcsMjcsbi5pbWFnZVVybCQpKSgic3RlcEluZGV4IixDeSg4LDI5LG4uc3RlcEluZGV4JCkpKCJzdGVwVmFsdWVzIixDeSg5LDMxLG4uc3RlcFZhbHVlcyQpKSgiYnJpZ2h0bmVzc0luTWlsbGkiLEN5KDEwLDMzLG4uYnJpZ2h0bmVzc0luTWlsbGkkKSkoImNvbnRyYXN0SW5NaWxsaSIsQ3koMTEsMzUsbi5jb250cmFzdEluTWlsbGkkKSkoInJ1bkNvbG9yU2NhbGUiLG4ucnVuQ29sb3JTY2FsZSkoInNob3dBY3R1YWxTaXplIixuLnNob3dBY3R1YWxTaXplKSgiYWxsb3dUb2dnbGVBY3R1YWxTaXplIiwhMT09PUN5KDEyLDM3LG4uYWN0dWFsU2l6ZUdsb2JhbFNldHRpbmckKSkoImlzUGlubmVkIixDeSgxMywzOSxuLmlzUGlubmVkJCkpfSxkaXJlY3RpdmVzOlskNF0scGlwZXM6W1Z2XSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKHQ2LFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6ImltYWdlLWNhcmQiLHRlbXBsYXRlOidcbiAgICA8aW1hZ2UtY2FyZC1jb21wb25lbnRcbiAgICAgIFtsb2FkU3RhdGVdPSJsb2FkU3RhdGUkIHwgYXN5bmMiXG4gICAgICBbdGl0bGVdPSJ0aXRsZSQgfCBhc3luYyJcbiAgICAgIFt0YWddPSJ0YWckIHwgYXN5bmMiXG4gICAgICBbcnVuSWRdPSJydW5JZCQgfCBhc3luYyJcbiAgICAgIFtzYW1wbGVdPSJzYW1wbGUkIHwgYXN5bmMiXG4gICAgICBbbnVtU2FtcGxlXT0ibnVtU2FtcGxlJCB8IGFzeW5jIlxuICAgICAgW2ltYWdlVXJsXT0iaW1hZ2VVcmwkIHwgYXN5bmMiXG4gICAgICBbc3RlcEluZGV4XT0ic3RlcEluZGV4JCB8IGFzeW5jIlxuICAgICAgW3N0ZXBWYWx1ZXNdPSJzdGVwVmFsdWVzJCB8IGFzeW5jIlxuICAgICAgKHN0ZXBJbmRleENoYW5nZSk9Im9uU3RlcEluZGV4Q2hhbmdlZCgkZXZlbnQpIlxuICAgICAgW2JyaWdodG5lc3NJbk1pbGxpXT0iYnJpZ2h0bmVzc0luTWlsbGkkIHwgYXN5bmMiXG4gICAgICBbY29udHJhc3RJbk1pbGxpXT0iY29udHJhc3RJbk1pbGxpJCB8IGFzeW5jIlxuICAgICAgW3J1bkNvbG9yU2NhbGVdPSJydW5Db2xvclNjYWxlIlxuICAgICAgW3Nob3dBY3R1YWxTaXplXT0ic2hvd0FjdHVhbFNpemUiXG4gICAgICBbYWxsb3dUb2dnbGVBY3R1YWxTaXplXT0iKGFjdHVhbFNpemVHbG9iYWxTZXR0aW5nJCB8IGFzeW5jKSA9PT0gZmFsc2UiXG4gICAgICBbaXNQaW5uZWRdPSJpc1Bpbm5lZCQgfCBhc3luYyJcbiAgICAgIChvbkFjdHVhbFNpemVUb2dnbGUpPSJvbkFjdHVhbFNpemVUb2dnbGUoKSJcbiAgICAgIChvblBpbkNsaWNrZWQpPSJwaW5TdGF0ZUNoYW5nZWQuZW1pdCgkZXZlbnQpIlxuICAgID48L2ltYWdlLWNhcmQtY29tcG9uZW50PlxuICAnLGNoYW5nZURldGVjdGlvbjpqbi5PblB1c2h9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTppU30se3R5cGU6YU59XX0pLHtjYXJkSWQ6W3t0eXBlOlJffV0sZ3JvdXBOYW1lOlt7dHlwZTpSX31dLHJ1bkNvbG9yU2NhbGU6W3t0eXBlOlJffV0sZnVsbFdpZHRoQ2hhbmdlZDpbe3R5cGU6RV99XSxwaW5TdGF0ZUNoYW5nZWQ6W3t0eXBlOkVffV19KSwoZnVuY3Rpb24odCl7dFt0LlNWRz0wXT0iU1ZHIix0W3QuV0VCR0w9MV09IldFQkdMIn0pKGU2fHwoZTY9e30pKSwoZnVuY3Rpb24odCl7dFt0LkxJTkVBUj0wXT0iTElORUFSIix0W3QuTE9HMTA9MV09IkxPRzEwIix0W3QuVElNRT0yXT0iVElNRSJ9KShuNnx8KG42PXt9KSk7Y2xhc3MgbTZ7Y29uc3RydWN0b3IoKXt0aGlzLnJ1blNlbGVjdGVkPW5ldyBTeSx0aGlzLlBsdWdpblR5cGU9S1R9Z2V0RG93bmxvYWROYW1lKHQpe2NvbnN0IGU9dGhpcy5ydW5zLmZpbmQoKHQ9PnQuaWQ9PT10aGlzLnNlbGVjdGVkUnVuSWQpKTtyZXR1cm4gZT9gJHtlLm5hbWV9LiR7dH1gOiIifX1tNi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8bTYpfSxtNi7JtWNtcD1zbyh7dHlwZTptNixzZWxlY3RvcnM6W1siZGF0YV9kb3dubG9hZF9kaWFsb2dfY29tcG9uZW50Il1dLGlucHV0czp7Y2FyZE1ldGFkYXRhOiJjYXJkTWV0YWRhdGEiLHJ1bnM6InJ1bnMiLHNlbGVjdGVkUnVuSWQ6InNlbGVjdGVkUnVuSWQiLGRvd25sb2FkVXJsQ3N2OiJkb3dubG9hZFVybENzdiIsZG93bmxvYWRVcmxKc29uOiJkb3dubG9hZFVybEpzb24ifSxvdXRwdXRzOntydW5TZWxlY3RlZDoicnVuU2VsZWN0ZWQifSxkZWNsczozLHZhcnM6Mixjb25zdHM6W1s0LCJuZ0lmIiwibmdJZkVsc2UiXSxbIm5vQ2FyZE1ldGFkYXRhIiwiIl0sWyJkYXRhTmFtZSIsIiJdLFs0LCJuZ1RlbXBsYXRlT3V0bGV0Il0sWzEsInRhZy1uYW1lIiwzLCJ0aXRsZSJdLFsiYXBwZWFyYW5jZSIsImZpbGwiLDEsInJ1bi1zZWxlY3RvciJdLFsibWF0TmF0aXZlQ29udHJvbCIsIiIsIm5hbWUiLCJydW4iLCJjZGtGb2N1c0luaXRpYWwiLCIiLCJyZXF1aXJlZCIsIiIsMywidmFsdWUiLCJjaGFuZ2UiXSxbInNlbGVjdGVkIiwiIiwzLCJ2YWx1ZSJdLFszLCJ2YWx1ZSIsNCwibmdGb3IiLCJuZ0Zvck9mIl0sWzEsImRvd25sb2FkLWNvbnRyb2xzIl0sWyJtYXQtc3Ryb2tlZC1idXR0b24iLCIiLDMsImRpc2FibGVkIiwiZG93bmxvYWQiXSxbImFsaWduIiwiZW5kIl0sWyJtYXQtYnV0dG9uIiwiIiwibWF0LWRpYWxvZy1jbG9zZSIsIiJdLFszLCJuZ1N3aXRjaCJdLFs0LCJuZ1N3aXRjaENhc2UiXSxbNCwiTmdTd2l0Y2hEZWZhdWx0Il0sWzMsInZhbHVlIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXtpZigxJmUmJihIbSgwLGQ2LDMwLDEyLCJuZy1jb250YWluZXIiLDApLEhtKDEscDYsMSwwLCJuZy10ZW1wbGF0ZSIsbnVsbCwxLHF5KSksMiZlKXtjb25zdCB0PUZtKDIpO2JmKCJuZ0lmIixuLmNhcmRNZXRhZGF0YSkoIm5nSWZFbHNlIix0KX19LGRpcmVjdGl2ZXM6W1B2LEl2LCRZLF9VLGNVLEFaLGtHLEVHLHh2LHpMLHRxLE5MLEpZLER2LFJ2XSxzdHlsZXM6WycubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTJweDtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1iYWRnZS1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo5cHh9Lm1hdC1iYWRnZS1sYXJnZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4fS5tYXQtaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWhlYWRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAyNHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE2cHgvMjhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE1cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjgzKS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1oNltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC42NykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtYm9keS1zdHJvbmdbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MCAwIDEycHh9Lm1hdC1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FwdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTJweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6MzAwIDExMnB4LzExMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wNWVtO21hcmdpbjowIDAgNTZweH0ubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNTZweC81NnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMmVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNDVweC80OHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMDVlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDM0cHgvNDBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgNjRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FyZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjBweH0ubWF0LWNhcmQtc3VidGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcmQtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2hlY2tib3gtbGF5b3V0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC10cmFpbGluZy1pY29uLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmUubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxOHB4fS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jYWxlbmRhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FsZW5kYXItYm9keVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEzcHh9Lm1hdC1jYWxlbmRhci1ib2R5LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgdGhbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWRpYWxvZy10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMTI1O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTUwJTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjVlbTt3aWR0aDoxLjVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW07bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi41ZW0gMDtib3JkZXItdG9wOi44NDM3NWVtIHNvbGlkIHRyYW5zcGFyZW50fS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3RvcDotMC44NDM3NWVtO3BhZGRpbmctdG9wOi44NDM3NWVtfS5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjc1JTttYXJnaW4tdG9wOi42NjY2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNzkxNjY2NjY2N2VtKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi40Mzc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAycHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyM2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMjgxMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi41NDE2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNjY2NjY2NjY2N2VtKX1AbWVkaWEgcHJpbnR7Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIyZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIxZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMmVtKSBzY2FsZSgwLjc1KX19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjI1ZW0gMCAuNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4wOTM3NWVtO21hcmdpbi10b3A6LTAuNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MWVtIDAgMWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjg0Mzc1ZW07bWFyZ2luLXRvcDotMC4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH1pbnB1dC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDotMC4wNjI1ZW19Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1wYWdlLXNpemVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4fS5tYXQtcmFkaW8tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3RbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbX0ubWF0LXNsaWRlLXRvZ2dsZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXN0ZXBwZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc3RlcC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtc3RlcC1zdWItbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0Om5vcm1hbH0ubWF0LXN0ZXAtbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtc3RlcC1sYWJlbC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdGFiLWdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjB9Lm1hdC10b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEwcHg7cGFkZGluZy10b3A6NnB4O3BhZGRpbmctYm90dG9tOjZweH0ubWF0LXRvb2x0aXAtaGFuZHNldFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7cGFkZGluZy10b3A6OHB4O3BhZGRpbmctYm90dG9tOjhweH0ubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTZweH0ubWF0LW9wdGdyb3VwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LXNpbXBsZS1zbmFja2Jhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4fS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbltfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MTtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRyZWVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbmVzdGVkLXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtc2l6ZToxNHB4fS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdOm5vdCg6ZW1wdHkpe3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApfS5tYXQtcmlwcGxlLm1hdC1yaXBwbGUtdW5ib3VuZGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzp2aXNpYmxlfS5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO2JvcmRlci1yYWRpdXM6NTAlO3BvaW50ZXItZXZlbnRzOm5vbmU7dHJhbnNpdGlvbjpvcGFjaXR5LHRyYW5zZm9ybSAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7dHJhbnNmb3JtOnNjYWxlKDApfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpub25lfS5jZGstdmlzdWFsbHktaGlkZGVuW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6MDtjbGlwOnJlY3QoMCAwIDAgMCk7aGVpZ2h0OjFweDttYXJnaW46LTFweDtvdmVyZmxvdzpoaWRkZW47cGFkZGluZzowO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjFweDt3aGl0ZS1zcGFjZTpub3dyYXA7b3V0bGluZTowOy13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BvaW50ZXItZXZlbnRzOm5vbmU7dG9wOjA7bGVmdDowO2hlaWdodDoxMDAlO3dpZHRoOjEwMCV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdOmVtcHR5e2Rpc3BsYXk6bm9uZX0uY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LXBhbmVbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3BvaW50ZXItZXZlbnRzOmF1dG87Ym94LXNpemluZzpib3JkZXItYm94O3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7bWF4LXdpZHRoOjEwMCU7bWF4LWhlaWdodDoxMDAlfS5jZGstb3ZlcmxheS1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7bGVmdDowO3JpZ2h0OjA7ei1pbmRleDoxMDAwO3BvaW50ZXItZXZlbnRzOmF1dG87LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50O3RyYW5zaXRpb246b3BhY2l0eSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKTtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5Oi42fS5jZGstb3ZlcmxheS1kYXJrLWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjMyKX0uY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTowfS5jZGstb3ZlcmxheS1jb25uZWN0ZWQtcG9zaXRpb24tYm91bmRpbmctYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjttaW4td2lkdGg6MXB4O21pbi1oZWlnaHQ6MXB4fS5jZGstZ2xvYmFsLXNjcm9sbGJsb2NrW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt3aWR0aDoxMDAlO292ZXJmbG93LXk6c2Nyb2xsfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZVtfbmdjb250ZW50LSVDT01QJV17cmVzaXplOm5vbmV9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZ1tfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6YXV0byAhaW1wb3J0YW50O292ZXJmbG93OmhpZGRlbiAhaW1wb3J0YW50fXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmctZmlyZWZveFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6MCAhaW1wb3J0YW50fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnR7fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5ke30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxse2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydCAwcyAxbXN9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06bm90KDotd2Via2l0LWF1dG9maWxsKXthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5kIDBzIDFtc30ubWF0LWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1tZGMtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX1oMltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEuMjVlbTtvdmVyZmxvdy13cmFwOmJyZWFrLXdvcmR9LnJ1bi1zZWxlY3Rvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOi45ZW07d2lkdGg6MTAwJX0uZG93bmxvYWQtY29udHJvbHNbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTouOWVtfS5kb3dubG9hZC1jb250cm9sc1tfbmdjb250ZW50LSVDT01QJV0gICBhW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46M3B4IDEwcHggM3B4IDB9J10sY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKG02LFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6ImRhdGFfZG93bmxvYWRfZGlhbG9nX2NvbXBvbmVudCIsdGVtcGxhdGVVcmw6ImRhdGFfZG93bmxvYWRfZGlhbG9nX2NvbXBvbmVudC5uZy5odG1sIixzdHlsZVVybHM6WyJkYXRhX2Rvd25sb2FkX2RpYWxvZ19jb21wb25lbnQuY3NzIl0sY2hhbmdlRGV0ZWN0aW9uOmpuLk9uUHVzaH1dfV0sbnVsbCx7Y2FyZE1ldGFkYXRhOlt7dHlwZTpSX31dLHJ1bnM6W3t0eXBlOlJffV0sc2VsZWN0ZWRSdW5JZDpbe3R5cGU6Ul99XSxkb3dubG9hZFVybENzdjpbe3R5cGU6Ul99XSxkb3dubG9hZFVybEpzb246W3t0eXBlOlJffV0scnVuU2VsZWN0ZWQ6W3t0eXBlOkVffV19KTtjbGFzcyBmNntjb25zdHJ1Y3Rvcih0LGUsbil7dGhpcy5zZWxlY3RlZFJ1bklkJD1uZXcgaihudWxsKSx0aGlzLmNhcmRNZXRhZGF0YSQ9dC5zZWxlY3Qobnosbi5jYXJkSWQpLnBpcGUodWUoKHQ9PkJvb2xlYW4odCkpKSksdGhpcy5kb3dubG9hZFVybENzdiQ9S3QoW3Quc2VsZWN0KG56LG4uY2FyZElkKSx0aGlzLnNlbGVjdGVkUnVuSWQkXSkucGlwZShWdCgoKFt0LG5dKT0+dCYmbj9lLmRvd25sb2FkVXJsKHQucGx1Z2luLHQudGFnLG4sImNzdiIpOm51bGwpKSxCZShudWxsKSksdGhpcy5kb3dubG9hZFVybEpzb24kPUt0KFt0LnNlbGVjdChueixuLmNhcmRJZCksdGhpcy5zZWxlY3RlZFJ1bklkJF0pLnBpcGUoVnQoKChbdCxuXSk9PnQmJm4/ZS5kb3dubG9hZFVybCh0LnBsdWdpbix0LnRhZyxuLCJqc29uIik6bnVsbCkpLEJlKG51bGwpKSx0aGlzLnJ1bnMkPUt0KFt0LnNlbGVjdChYeiksdC5zZWxlY3QodHosbi5jYXJkSWQpXSkucGlwZShWdCgoKFt0LGVdKT0+ZT9PYmplY3Qua2V5cyhlKS5tYXAoKGU9PnQuZ2V0KGUpKSkuZmlsdGVyKEJvb2xlYW4pOltdKSkpfX1mdW5jdGlvbiB1Nih0LGUpe3JldHVybiB0PGU/LTE6dD5lPzE6dD49ZT8wOk5hTn1mdW5jdGlvbiBnNih0KXtyZXR1cm4gMT09PXQubGVuZ3RoJiYodD0oZnVuY3Rpb24gZSh0KXtyZXR1cm4gZnVuY3Rpb24oZSxuKXtyZXR1cm4gdTYodChlKSxuKX19KSh0KSkse2xlZnQ6ZnVuY3Rpb24oZSxuLG8saSl7Zm9yKG51bGw9PW8mJihvPTApLG51bGw9PWkmJihpPWUubGVuZ3RoKTtvPGk7KXt2YXIgYT1vK2k+Pj4xO3QoZVthXSxuKTwwP289YSsxOmk9YX1yZXR1cm4gb30scmlnaHQ6ZnVuY3Rpb24oZSxuLG8saSl7Zm9yKG51bGw9PW8mJihvPTApLG51bGw9PWkmJihpPWUubGVuZ3RoKTtvPGk7KXt2YXIgYT1vK2k+Pj4xO3QoZVthXSxuKT4wP2k9YTpvPWErMX1yZXR1cm4gb319fWY2Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxmNikoZ2YoaVMpLGdmKGFOKSxnZihVWSkpfSxmNi7JtWNtcD1zbyh7dHlwZTpmNixzZWxlY3RvcnM6W1siZGF0YV9kb3dubG9hZF9kaWFsb2ciXV0sZGVjbHM6Nix2YXJzOjE1LGNvbnN0czpbWzMsImNhcmRNZXRhZGF0YSIsInJ1bnMiLCJzZWxlY3RlZFJ1bklkIiwiZG93bmxvYWRVcmxDc3YiLCJkb3dubG9hZFVybEpzb24iLCJydW5TZWxlY3RlZCJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoQ2YoMCwiZGF0YV9kb3dubG9hZF9kaWFsb2dfY29tcG9uZW50IiwwKSxSZigicnVuU2VsZWN0ZWQiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLnNlbGVjdGVkUnVuSWQkLm5leHQoZSl9KSksX3koMSwiYXN5bmMiKSxfeSgyLCJhc3luYyIpLF95KDMsImFzeW5jIiksX3koNCwiYXN5bmMiKSxfeSg1LCJhc3luYyIpLE1mKCkpLDImZSYmYmYoImNhcmRNZXRhZGF0YSIsQ3koMSw1LG4uY2FyZE1ldGFkYXRhJCkpKCJydW5zIixDeSgyLDcsbi5ydW5zJCkpKCJzZWxlY3RlZFJ1bklkIixDeSgzLDksbi5zZWxlY3RlZFJ1bklkJCkpKCJkb3dubG9hZFVybENzdiIsQ3koNCwxMSxuLmRvd25sb2FkVXJsQ3N2JCkpKCJkb3dubG9hZFVybEpzb24iLEN5KDUsMTMsbi5kb3dubG9hZFVybEpzb24kKSl9LGRpcmVjdGl2ZXM6W202XSxwaXBlczpbVnZdLGVuY2Fwc3VsYXRpb246MixjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoZjYsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoiZGF0YV9kb3dubG9hZF9kaWFsb2ciLHRlbXBsYXRlOic8ZGF0YV9kb3dubG9hZF9kaWFsb2dfY29tcG9uZW50XG4gICAgW2NhcmRNZXRhZGF0YV09ImNhcmRNZXRhZGF0YSQgfCBhc3luYyJcbiAgICBbcnVuc109InJ1bnMkIHwgYXN5bmMiXG4gICAgW3NlbGVjdGVkUnVuSWRdPSJzZWxlY3RlZFJ1bklkJCB8IGFzeW5jIlxuICAgIFtkb3dubG9hZFVybENzdl09ImRvd25sb2FkVXJsQ3N2JCB8IGFzeW5jIlxuICAgIFtkb3dubG9hZFVybEpzb25dPSJkb3dubG9hZFVybEpzb24kIHwgYXN5bmMiXG4gICAgKHJ1blNlbGVjdGVkKT0ic2VsZWN0ZWRSdW5JZCQubmV4dCgkZXZlbnQpIlxuICA+PC9kYXRhX2Rvd25sb2FkX2RpYWxvZ19jb21wb25lbnQ+JyxjaGFuZ2VEZXRlY3Rpb246am4uT25QdXNofV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6aVN9LHt0eXBlOmFOfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbVVldfV19XX0pLG51bGwpLChmdW5jdGlvbih0KXt0W3QuT1JJR0lOQUw9MF09Ik9SSUdJTkFMIix0W3QuREVSSVZFRD0xXT0iREVSSVZFRCJ9KShvNnx8KG82PXt9KSk7dmFyIGg2PWc2KHU2KS5yaWdodDtmdW5jdGlvbiBiNih0LGUpe3ZhciBuLG8saSxhPXQubGVuZ3RoLHI9LTE7aWYobnVsbD09ZSl7Zm9yKDsrK3I8YTspaWYobnVsbCE9KG49dFtyXSkmJm4+PW4pZm9yKG89aT1uOysrcjxhOyludWxsIT0obj10W3JdKSYmKG8+biYmKG89biksaTxuJiYoaT1uKSl9ZWxzZSBmb3IoOysrcjxhOylpZihudWxsIT0obj1lKHRbcl0scix0KSkmJm4+PW4pZm9yKG89aT1uOysrcjxhOyludWxsIT0obj1lKHRbcl0scix0KSkmJihvPm4mJihvPW4pLGk8biYmKGk9bikpO3JldHVybltvLGldfXZhciB5Nj1BcnJheS5wcm90b3R5cGUuc2xpY2U7ZnVuY3Rpb24gXzYodCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHR9fWZ1bmN0aW9uIEM2KHQpe3JldHVybiB0fWZ1bmN0aW9uIE02KHQsZSxuKXt0PSt0LGU9K2Usbj0oaT1hcmd1bWVudHMubGVuZ3RoKTwyPyhlPXQsdD0wLDEpOmk8Mz8xOituO2Zvcih2YXIgbz0tMSxpPTB8TWF0aC5tYXgoMCxNYXRoLmNlaWwoKGUtdCkvbikpLGE9bmV3IEFycmF5KGkpOysrbzxpOylhW29dPXQrbypuO3JldHVybiBhfXZhciB2Nj1NYXRoLnNxcnQoNTApLHg2PU1hdGguc3FydCgxMCksTzY9TWF0aC5zcXJ0KDIpO2Z1bmN0aW9uIFA2KHQsZSxuKXt2YXIgbyxpLGEscixzPS0xO2lmKG49K24sKHQ9K3QpPT09KGU9K2UpJiZuPjApcmV0dXJuW3RdO2lmKChvPWU8dCkmJihpPXQsdD1lLGU9aSksMD09PShyPXc2KHQsZSxuKSl8fCFpc0Zpbml0ZShyKSlyZXR1cm5bXTtpZihyPjApZm9yKHQ9TWF0aC5jZWlsKHQvciksZT1NYXRoLmZsb29yKGUvciksYT1uZXcgQXJyYXkoaT1NYXRoLmNlaWwoZS10KzEpKTsrK3M8aTspYVtzXT0odCtzKSpyO2Vsc2UgZm9yKHQ9TWF0aC5mbG9vcih0KnIpLGU9TWF0aC5jZWlsKGUqciksYT1uZXcgQXJyYXkoaT1NYXRoLmNlaWwodC1lKzEpKTsrK3M8aTspYVtzXT0odC1zKS9yO3JldHVybiBvJiZhLnJldmVyc2UoKSxhfWZ1bmN0aW9uIHc2KHQsZSxuKXt2YXIgbz0oZS10KS9NYXRoLm1heCgwLG4pLGk9TWF0aC5mbG9vcihNYXRoLmxvZyhvKS9NYXRoLkxOMTApLGE9by9NYXRoLnBvdygxMCxpKTtyZXR1cm4gaT49MD8oYT49djY/MTA6YT49eDY/NTphPj1PNj8yOjEpKk1hdGgucG93KDEwLGkpOi1NYXRoLnBvdygxMCwtaSkvKGE+PXY2PzEwOmE+PXg2PzU6YT49TzY/MjoxKX1mdW5jdGlvbiBrNih0LGUsbil7dmFyIG89TWF0aC5hYnMoZS10KS9NYXRoLm1heCgwLG4pLGk9TWF0aC5wb3coMTAsTWF0aC5mbG9vcihNYXRoLmxvZyhvKS9NYXRoLkxOMTApKSxhPW8vaTtyZXR1cm4gYT49djY/aSo9MTA6YT49eDY/aSo9NTphPj1PNiYmKGkqPTIpLGU8dD8taTppfWZ1bmN0aW9uIFM2KHQpe3JldHVybiBNYXRoLmNlaWwoTWF0aC5sb2codC5sZW5ndGgpL01hdGguTE4yKSsxfWZ1bmN0aW9uIEQ2KCl7dmFyIHQ9QzYsZT1iNixuPVM2O2Z1bmN0aW9uIG8obyl7dmFyIGksYSxyPW8ubGVuZ3RoLHM9bmV3IEFycmF5KHIpO2ZvcihpPTA7aTxyOysraSlzW2ldPXQob1tpXSxpLG8pO3ZhciBsPWUocyksYz1sWzBdLGQ9bFsxXSxwPW4ocyxjLGQpO0FycmF5LmlzQXJyYXkocCl8fChwPWs2KGMsZCxwKSxwPU02KE1hdGguY2VpbChjL3ApKnAsZCxwKSk7Zm9yKHZhciBtPXAubGVuZ3RoO3BbMF08PWM7KXAuc2hpZnQoKSwtLW07Zm9yKDtwW20tMV0+ZDspcC5wb3AoKSwtLW07dmFyIGYsdT1uZXcgQXJyYXkobSsxKTtmb3IoaT0wO2k8PW07KytpKShmPXVbaV09W10pLngwPWk+MD9wW2ktMV06YyxmLngxPWk8bT9wW2ldOmQ7Zm9yKGk9MDtpPHI7KytpKWM8PShhPXNbaV0pJiZhPD1kJiZ1W2g2KHAsYSwwLG0pXS5wdXNoKG9baV0pO3JldHVybiB1fXJldHVybiBvLnZhbHVlPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PSJmdW5jdGlvbiI9PXR5cGVvZiBlP2U6XzYoZSksbyk6dH0sby5kb21haW49ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpfNihbdFswXSx0WzFdXSksbyk6ZX0sby50aHJlc2hvbGRzPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6QXJyYXkuaXNBcnJheSh0KT9fNih5Ni5jYWxsKHQpKTpfNih0KSxvKTpufSxvfXZhciBSNj1BcnJheS5wcm90b3R5cGUuc2xpY2U7ZnVuY3Rpb24gRTYodCl7cmV0dXJuIHR9dmFyIEE2PTFlLTY7ZnVuY3Rpb24gVDYodCl7cmV0dXJuInRyYW5zbGF0ZSgiKyh0Ky41KSsiLDApIn1mdW5jdGlvbiBONih0KXtyZXR1cm4idHJhbnNsYXRlKDAsIisodCsuNSkrIikifWZ1bmN0aW9uIHo2KHQpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4rdChlKX19ZnVuY3Rpb24gSTYodCl7dmFyIGU9TWF0aC5tYXgoMCx0LmJhbmR3aWR0aCgpLTEpLzI7cmV0dXJuIHQucm91bmQoKSYmKGU9TWF0aC5yb3VuZChlKSksZnVuY3Rpb24obil7cmV0dXJuK3QobikrZX19ZnVuY3Rpb24gSDYoKXtyZXR1cm4hdGhpcy5fX2F4aXN9ZnVuY3Rpb24gRjYodCxlKXt2YXIgbj1bXSxvPW51bGwsaT1udWxsLGE9NixyPTYscz0zLGw9MT09PXR8fDQ9PT10Py0xOjEsYz00PT09dHx8Mj09PXQ/IngiOiJ5IixkPTE9PT10fHwzPT09dD9UNjpONjtmdW5jdGlvbiBwKHApe3ZhciBtPW51bGw9PW8/ZS50aWNrcz9lLnRpY2tzLmFwcGx5KGUsbik6ZS5kb21haW4oKTpvLGY9bnVsbD09aT9lLnRpY2tGb3JtYXQ/ZS50aWNrRm9ybWF0LmFwcGx5KGUsbik6RTY6aSx1PU1hdGgubWF4KGEsMCkrcyxnPWUucmFuZ2UoKSxoPStnWzBdKy41LGI9K2dbZy5sZW5ndGgtMV0rLjUseT0oZS5iYW5kd2lkdGg/STY6ejYpKGUuY29weSgpKSxfPXAuc2VsZWN0aW9uP3Auc2VsZWN0aW9uKCk6cCxDPV8uc2VsZWN0QWxsKCIuZG9tYWluIikuZGF0YShbbnVsbF0pLE09Xy5zZWxlY3RBbGwoIi50aWNrIikuZGF0YShtLGUpLm9yZGVyKCksdj1NLmV4aXQoKSx4PU0uZW50ZXIoKS5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsInRpY2siKSxPPU0uc2VsZWN0KCJsaW5lIiksUD1NLnNlbGVjdCgidGV4dCIpO0M9Qy5tZXJnZShDLmVudGVyKCkuaW5zZXJ0KCJwYXRoIiwiLnRpY2siKS5hdHRyKCJjbGFzcyIsImRvbWFpbiIpLmF0dHIoInN0cm9rZSIsImN1cnJlbnRDb2xvciIpKSxNPU0ubWVyZ2UoeCksTz1PLm1lcmdlKHguYXBwZW5kKCJsaW5lIikuYXR0cigic3Ryb2tlIiwiY3VycmVudENvbG9yIikuYXR0cihjKyIyIixsKmEpKSxQPVAubWVyZ2UoeC5hcHBlbmQoInRleHQiKS5hdHRyKCJmaWxsIiwiY3VycmVudENvbG9yIikuYXR0cihjLGwqdSkuYXR0cigiZHkiLDE9PT10PyIwZW0iOjM9PT10PyIwLjcxZW0iOiIwLjMyZW0iKSkscCE9PV8mJihDPUMudHJhbnNpdGlvbihwKSxNPU0udHJhbnNpdGlvbihwKSxPPU8udHJhbnNpdGlvbihwKSxQPVAudHJhbnNpdGlvbihwKSx2PXYudHJhbnNpdGlvbihwKS5hdHRyKCJvcGFjaXR5IixBNikuYXR0cigidHJhbnNmb3JtIiwoZnVuY3Rpb24odCl7cmV0dXJuIGlzRmluaXRlKHQ9eSh0KSk/ZCh0KTp0aGlzLmdldEF0dHJpYnV0ZSgidHJhbnNmb3JtIil9KSkseC5hdHRyKCJvcGFjaXR5IixBNikuYXR0cigidHJhbnNmb3JtIiwoZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5wYXJlbnROb2RlLl9fYXhpcztyZXR1cm4gZChlJiZpc0Zpbml0ZShlPWUodCkpP2U6eSh0KSl9KSkpLHYucmVtb3ZlKCksQy5hdHRyKCJkIiw0PT09dHx8Mj09dD9yPyJNIitsKnIrIiwiK2grIkgwLjVWIitiKyJIIitsKnI6Ik0wLjUsIitoKyJWIitiOnI/Ik0iK2grIiwiK2wqcisiVjAuNUgiK2IrIlYiK2wqcjoiTSIraCsiLDAuNUgiK2IpLE0uYXR0cigib3BhY2l0eSIsMSkuYXR0cigidHJhbnNmb3JtIiwoZnVuY3Rpb24odCl7cmV0dXJuIGQoeSh0KSl9KSksTy5hdHRyKGMrIjIiLGwqYSksUC5hdHRyKGMsbCp1KS50ZXh0KGYpLF8uZmlsdGVyKEg2KS5hdHRyKCJmaWxsIiwibm9uZSIpLmF0dHIoImZvbnQtc2l6ZSIsMTApLmF0dHIoImZvbnQtZmFtaWx5Iiwic2Fucy1zZXJpZiIpLmF0dHIoInRleHQtYW5jaG9yIiwyPT09dD8ic3RhcnQiOjQ9PT10PyJlbmQiOiJtaWRkbGUiKSxfLmVhY2goKGZ1bmN0aW9uKCl7dGhpcy5fX2F4aXM9eX0pKX1yZXR1cm4gcC5zY2FsZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT10LHApOmV9LHAudGlja3M9ZnVuY3Rpb24oKXtyZXR1cm4gbj1SNi5jYWxsKGFyZ3VtZW50cykscH0scC50aWNrQXJndW1lbnRzPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPW51bGw9PXQ/W106UjYuY2FsbCh0KSxwKTpuLnNsaWNlKCl9LHAudGlja1ZhbHVlcz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz1udWxsPT10P251bGw6UjYuY2FsbCh0KSxwKTpvJiZvLnNsaWNlKCl9LHAudGlja0Zvcm1hdD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT10LHApOml9LHAudGlja1NpemU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9cj0rdCxwKTphfSxwLnRpY2tTaXplSW5uZXI9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9K3QscCk6YX0scC50aWNrU2l6ZU91dGVyPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPSt0LHApOnJ9LHAudGlja1BhZGRpbmc9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9K3QscCk6c30scH1mdW5jdGlvbiBMNih0KXtyZXR1cm4gRjYoMix0KX1mdW5jdGlvbiBCNih0KXtyZXR1cm4gRjYoMyx0KX12YXIgVjY9e3ZhbHVlOmZ1bmN0aW9uKCl7fX07ZnVuY3Rpb24gajYoKXtmb3IodmFyIHQsZT0wLG49YXJndW1lbnRzLmxlbmd0aCxvPXt9O2U8bjsrK2Upe2lmKCEodD1hcmd1bWVudHNbZV0rIiIpfHx0IGluIG98fC9bXHMuXS8udGVzdCh0KSl0aHJvdyBuZXcgRXJyb3IoImlsbGVnYWwgdHlwZTogIit0KTtvW3RdPVtdfXJldHVybiBuZXcgVTYobyl9ZnVuY3Rpb24gVTYodCl7dGhpcy5fPXR9ZnVuY3Rpb24gVzYodCxlKXtyZXR1cm4gdC50cmltKCkuc3BsaXQoL158XHMrLykubWFwKChmdW5jdGlvbih0KXt2YXIgbj0iIixvPXQuaW5kZXhPZigiLiIpO2lmKG8+PTAmJihuPXQuc2xpY2UobysxKSx0PXQuc2xpY2UoMCxvKSksdCYmIWUuaGFzT3duUHJvcGVydHkodCkpdGhyb3cgbmV3IEVycm9yKCJ1bmtub3duIHR5cGU6ICIrdCk7cmV0dXJue3R5cGU6dCxuYW1lOm59fSkpfWZ1bmN0aW9uIEc2KHQsZSl7Zm9yKHZhciBuLG89MCxpPXQubGVuZ3RoO288aTsrK28paWYoKG49dFtvXSkubmFtZT09PWUpcmV0dXJuIG4udmFsdWV9ZnVuY3Rpb24gWTYodCxlLG4pe2Zvcih2YXIgbz0wLGk9dC5sZW5ndGg7bzxpOysrbylpZih0W29dLm5hbWU9PT1lKXt0W29dPVY2LHQ9dC5zbGljZSgwLG8pLmNvbmNhdCh0LnNsaWNlKG8rMSkpO2JyZWFrfXJldHVybiBudWxsIT1uJiZ0LnB1c2goe25hbWU6ZSx2YWx1ZTpufSksdH1VNi5wcm90b3R5cGU9ajYucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpVNixvbjpmdW5jdGlvbih0LGUpe3ZhciBuLG89dGhpcy5fLGk9VzYodCsiIixvKSxhPS0xLHI9aS5sZW5ndGg7aWYoIShhcmd1bWVudHMubGVuZ3RoPDIpKXtpZihudWxsIT1lJiYiZnVuY3Rpb24iIT10eXBlb2YgZSl0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgY2FsbGJhY2s6ICIrZSk7Zm9yKDsrK2E8cjspaWYobj0odD1pW2FdKS50eXBlKW9bbl09WTYob1tuXSx0Lm5hbWUsZSk7ZWxzZSBpZihudWxsPT1lKWZvcihuIGluIG8pb1tuXT1ZNihvW25dLHQubmFtZSxudWxsKTtyZXR1cm4gdGhpc31mb3IoOysrYTxyOylpZigobj0odD1pW2FdKS50eXBlKSYmKG49RzYob1tuXSx0Lm5hbWUpKSlyZXR1cm4gbn0sY29weTpmdW5jdGlvbigpe3ZhciB0PXt9LGU9dGhpcy5fO2Zvcih2YXIgbiBpbiBlKXRbbl09ZVtuXS5zbGljZSgpO3JldHVybiBuZXcgVTYodCl9LGNhbGw6ZnVuY3Rpb24odCxlKXtpZigobj1hcmd1bWVudHMubGVuZ3RoLTIpPjApZm9yKHZhciBuLG8saT1uZXcgQXJyYXkobiksYT0wO2E8bjsrK2EpaVthXT1hcmd1bWVudHNbYSsyXTtpZighdGhpcy5fLmhhc093blByb3BlcnR5KHQpKXRocm93IG5ldyBFcnJvcigidW5rbm93biB0eXBlOiAiK3QpO2ZvcihhPTAsbj0obz10aGlzLl9bdF0pLmxlbmd0aDthPG47KythKW9bYV0udmFsdWUuYXBwbHkoZSxpKX0sYXBwbHk6ZnVuY3Rpb24odCxlLG4pe2lmKCF0aGlzLl8uaGFzT3duUHJvcGVydHkodCkpdGhyb3cgbmV3IEVycm9yKCJ1bmtub3duIHR5cGU6ICIrdCk7Zm9yKHZhciBvPXRoaXMuX1t0XSxpPTAsYT1vLmxlbmd0aDtpPGE7KytpKW9baV0udmFsdWUuYXBwbHkoZSxuKX19O3ZhciBxNj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIsWjY9e3N2ZzoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLHhodG1sOnE2LHhsaW5rOiJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIix4bWw6Imh0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZSIseG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAveG1sbnMvIn07ZnVuY3Rpb24gWDYodCl7dmFyIGU9dCs9IiIsbj1lLmluZGV4T2YoIjoiKTtyZXR1cm4gbj49MCYmInhtbG5zIiE9PShlPXQuc2xpY2UoMCxuKSkmJih0PXQuc2xpY2UobisxKSksWjYuaGFzT3duUHJvcGVydHkoZSk/e3NwYWNlOlo2W2VdLGxvY2FsOnR9OnR9ZnVuY3Rpb24gSzYodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5vd25lckRvY3VtZW50LG49dGhpcy5uYW1lc3BhY2VVUkk7cmV0dXJuIG49PT1xNiYmZS5kb2N1bWVudEVsZW1lbnQubmFtZXNwYWNlVVJJPT09cTY/ZS5jcmVhdGVFbGVtZW50KHQpOmUuY3JlYXRlRWxlbWVudE5TKG4sdCl9fWZ1bmN0aW9uIEo2KHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0aGlzLm93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKHQuc3BhY2UsdC5sb2NhbCl9fWZ1bmN0aW9uIFE2KHQpe3ZhciBlPVg2KHQpO3JldHVybihlLmxvY2FsP0o2Oks2KShlKX1mdW5jdGlvbiAkNigpe31mdW5jdGlvbiB0Nyh0KXtyZXR1cm4gbnVsbD09dD8kNjpmdW5jdGlvbigpe3JldHVybiB0aGlzLnF1ZXJ5U2VsZWN0b3IodCl9fWZ1bmN0aW9uIGU3KCl7cmV0dXJuW119ZnVuY3Rpb24gbjcodCl7cmV0dXJuIG51bGw9PXQ/ZTc6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5xdWVyeVNlbGVjdG9yQWxsKHQpfX1mdW5jdGlvbiBvNyh0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tYXRjaGVzKHQpfX1mdW5jdGlvbiBpNyh0KXtyZXR1cm4gbmV3IEFycmF5KHQubGVuZ3RoKX1mdW5jdGlvbiBhNyh0LGUpe3RoaXMub3duZXJEb2N1bWVudD10Lm93bmVyRG9jdW1lbnQsdGhpcy5uYW1lc3BhY2VVUkk9dC5uYW1lc3BhY2VVUkksdGhpcy5fbmV4dD1udWxsLHRoaXMuX3BhcmVudD10LHRoaXMuX19kYXRhX189ZX1hNy5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOmE3LGFwcGVuZENoaWxkOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9wYXJlbnQuaW5zZXJ0QmVmb3JlKHQsdGhpcy5fbmV4dCl9LGluc2VydEJlZm9yZTpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLl9wYXJlbnQuaW5zZXJ0QmVmb3JlKHQsZSl9LHF1ZXJ5U2VsZWN0b3I6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3BhcmVudC5xdWVyeVNlbGVjdG9yKHQpfSxxdWVyeVNlbGVjdG9yQWxsOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9wYXJlbnQucXVlcnlTZWxlY3RvckFsbCh0KX19O2Z1bmN0aW9uIHI3KHQsZSxuLG8saSxhKXtmb3IodmFyIHIscz0wLGw9ZS5sZW5ndGgsYz1hLmxlbmd0aDtzPGM7KytzKShyPWVbc10pPyhyLl9fZGF0YV9fPWFbc10sb1tzXT1yKTpuW3NdPW5ldyBhNyh0LGFbc10pO2Zvcig7czxsOysrcykocj1lW3NdKSYmKGlbc109cil9ZnVuY3Rpb24gczcodCxlLG4sbyxpLGEscil7dmFyIHMsbCxjLGQ9e30scD1lLmxlbmd0aCxtPWEubGVuZ3RoLGY9bmV3IEFycmF5KHApO2ZvcihzPTA7czxwOysrcykobD1lW3NdKSYmKGZbc109Yz0iJCIrci5jYWxsKGwsbC5fX2RhdGFfXyxzLGUpLGMgaW4gZD9pW3NdPWw6ZFtjXT1sKTtmb3Iocz0wO3M8bTsrK3MpKGw9ZFtjPSIkIityLmNhbGwodCxhW3NdLHMsYSldKT8ob1tzXT1sLGwuX19kYXRhX189YVtzXSxkW2NdPW51bGwpOm5bc109bmV3IGE3KHQsYVtzXSk7Zm9yKHM9MDtzPHA7KytzKShsPWVbc10pJiZkW2Zbc11dPT09bCYmKGlbc109bCl9ZnVuY3Rpb24gbDcodCxlKXtyZXR1cm4gdDxlPy0xOnQ+ZT8xOnQ+PWU/MDpOYU59ZnVuY3Rpb24gYzcodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5yZW1vdmVBdHRyaWJ1dGUodCl9fWZ1bmN0aW9uIGQ3KHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMucmVtb3ZlQXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsKX19ZnVuY3Rpb24gcDcodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnNldEF0dHJpYnV0ZSh0LGUpfX1mdW5jdGlvbiBtNyh0LGUpe3JldHVybiBmdW5jdGlvbigpe3RoaXMuc2V0QXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsLGUpfX1mdW5jdGlvbiBmNyh0LGUpe3JldHVybiBmdW5jdGlvbigpe3ZhciBuPWUuYXBwbHkodGhpcyxhcmd1bWVudHMpO251bGw9PW4/dGhpcy5yZW1vdmVBdHRyaWJ1dGUodCk6dGhpcy5zZXRBdHRyaWJ1dGUodCxuKX19ZnVuY3Rpb24gdTcodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbj1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtudWxsPT1uP3RoaXMucmVtb3ZlQXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsKTp0aGlzLnNldEF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCxuKX19ZnVuY3Rpb24gZzcodCl7cmV0dXJuIHQub3duZXJEb2N1bWVudCYmdC5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3fHx0LmRvY3VtZW50JiZ0fHx0LmRlZmF1bHRWaWV3fWZ1bmN0aW9uIGg3KHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMuc3R5bGUucmVtb3ZlUHJvcGVydHkodCl9fWZ1bmN0aW9uIGI3KHQsZSxuKXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnN0eWxlLnNldFByb3BlcnR5KHQsZSxuKX19ZnVuY3Rpb24geTcodCxlLG4pe3JldHVybiBmdW5jdGlvbigpe3ZhciBvPWUuYXBwbHkodGhpcyxhcmd1bWVudHMpO251bGw9PW8/dGhpcy5zdHlsZS5yZW1vdmVQcm9wZXJ0eSh0KTp0aGlzLnN0eWxlLnNldFByb3BlcnR5KHQsbyxuKX19ZnVuY3Rpb24gXzcodCxlKXtyZXR1cm4gdC5zdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKGUpfHxnNyh0KS5nZXRDb21wdXRlZFN0eWxlKHQsbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZShlKX1mdW5jdGlvbiBDNyh0KXtyZXR1cm4gZnVuY3Rpb24oKXtkZWxldGUgdGhpc1t0XX19ZnVuY3Rpb24gTTcodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzW3RdPWV9fWZ1bmN0aW9uIHY3KHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG49ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7bnVsbD09bj9kZWxldGUgdGhpc1t0XTp0aGlzW3RdPW59fWZ1bmN0aW9uIHg3KHQpe3JldHVybiB0LnRyaW0oKS5zcGxpdCgvXnxccysvKX1mdW5jdGlvbiBPNyh0KXtyZXR1cm4gdC5jbGFzc0xpc3R8fG5ldyBQNyh0KX1mdW5jdGlvbiBQNyh0KXt0aGlzLl9ub2RlPXQsdGhpcy5fbmFtZXM9eDcodC5nZXRBdHRyaWJ1dGUoImNsYXNzIil8fCIiKX1mdW5jdGlvbiB3Nyh0LGUpe2Zvcih2YXIgbj1PNyh0KSxvPS0xLGk9ZS5sZW5ndGg7KytvPGk7KW4uYWRkKGVbb10pfWZ1bmN0aW9uIGs3KHQsZSl7Zm9yKHZhciBuPU83KHQpLG89LTEsaT1lLmxlbmd0aDsrK288aTspbi5yZW1vdmUoZVtvXSl9ZnVuY3Rpb24gUzcodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dzcodGhpcyx0KX19ZnVuY3Rpb24gRDcodCl7cmV0dXJuIGZ1bmN0aW9uKCl7azcodGhpcyx0KX19ZnVuY3Rpb24gUjcodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXsoZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk/dzc6azcpKHRoaXMsdCl9fWZ1bmN0aW9uIEU3KCl7dGhpcy50ZXh0Q29udGVudD0iIn1mdW5jdGlvbiBBNyh0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnRleHRDb250ZW50PXR9fWZ1bmN0aW9uIFQ3KHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciBlPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpO3RoaXMudGV4dENvbnRlbnQ9bnVsbD09ZT8iIjplfX1mdW5jdGlvbiBONygpe3RoaXMuaW5uZXJIVE1MPSIifWZ1bmN0aW9uIHo3KHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMuaW5uZXJIVE1MPXR9fWZ1bmN0aW9uIEk3KHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciBlPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpO3RoaXMuaW5uZXJIVE1MPW51bGw9PWU/IiI6ZX19ZnVuY3Rpb24gSDcoKXt0aGlzLm5leHRTaWJsaW5nJiZ0aGlzLnBhcmVudE5vZGUuYXBwZW5kQ2hpbGQodGhpcyl9ZnVuY3Rpb24gRjcoKXt0aGlzLnByZXZpb3VzU2libGluZyYmdGhpcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZSh0aGlzLHRoaXMucGFyZW50Tm9kZS5maXJzdENoaWxkKX1mdW5jdGlvbiBMNygpe3JldHVybiBudWxsfWZ1bmN0aW9uIEI3KCl7dmFyIHQ9dGhpcy5wYXJlbnROb2RlO3QmJnQucmVtb3ZlQ2hpbGQodGhpcyl9ZnVuY3Rpb24gVjcoKXt2YXIgdD10aGlzLmNsb25lTm9kZSghMSksZT10aGlzLnBhcmVudE5vZGU7cmV0dXJuIGU/ZS5pbnNlcnRCZWZvcmUodCx0aGlzLm5leHRTaWJsaW5nKTp0fWZ1bmN0aW9uIGo3KCl7dmFyIHQ9dGhpcy5jbG9uZU5vZGUoITApLGU9dGhpcy5wYXJlbnROb2RlO3JldHVybiBlP2UuaW5zZXJ0QmVmb3JlKHQsdGhpcy5uZXh0U2libGluZyk6dH1QNy5wcm90b3R5cGU9e2FkZDpmdW5jdGlvbih0KXt0aGlzLl9uYW1lcy5pbmRleE9mKHQpPDAmJih0aGlzLl9uYW1lcy5wdXNoKHQpLHRoaXMuX25vZGUuc2V0QXR0cmlidXRlKCJjbGFzcyIsdGhpcy5fbmFtZXMuam9pbigiICIpKSl9LHJlbW92ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLl9uYW1lcy5pbmRleE9mKHQpO2U+PTAmJih0aGlzLl9uYW1lcy5zcGxpY2UoZSwxKSx0aGlzLl9ub2RlLnNldEF0dHJpYnV0ZSgiY2xhc3MiLHRoaXMuX25hbWVzLmpvaW4oIiAiKSkpfSxjb250YWluczpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fbmFtZXMuaW5kZXhPZih0KT49MH19O3ZhciBVNz17fSxXNz1udWxsOyJ1bmRlZmluZWQiIT10eXBlb2YgZG9jdW1lbnQmJigib25tb3VzZWVudGVyImluIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudHx8KFU3PXttb3VzZWVudGVyOiJtb3VzZW92ZXIiLG1vdXNlbGVhdmU6Im1vdXNlb3V0In0pKTtmdW5jdGlvbiBHNyh0LGUsbil7cmV0dXJuIHQ9WTcodCxlLG4pLGZ1bmN0aW9uKGUpe3ZhciBuPWUucmVsYXRlZFRhcmdldDtuJiYobj09PXRoaXN8fDgmbi5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbih0aGlzKSl8fHQuY2FsbCh0aGlzLGUpfX1mdW5jdGlvbiBZNyh0LGUsbil7cmV0dXJuIGZ1bmN0aW9uKG8pe3ZhciBpPVc3O1c3PW87dHJ5e3QuY2FsbCh0aGlzLHRoaXMuX19kYXRhX18sZSxuKX1maW5hbGx5e1c3PWl9fX1mdW5jdGlvbiBxNyh0KXtyZXR1cm4gdC50cmltKCkuc3BsaXQoL158XHMrLykubWFwKChmdW5jdGlvbih0KXt2YXIgZT0iIixuPXQuaW5kZXhPZigiLiIpO3JldHVybiBuPj0wJiYoZT10LnNsaWNlKG4rMSksdD10LnNsaWNlKDAsbikpLHt0eXBlOnQsbmFtZTplfX0pKX1mdW5jdGlvbiBaNyh0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT10aGlzLl9fb247aWYoZSl7Zm9yKHZhciBuLG89MCxpPS0xLGE9ZS5sZW5ndGg7bzxhOysrbyluPWVbb10sdC50eXBlJiZuLnR5cGUhPT10LnR5cGV8fG4ubmFtZSE9PXQubmFtZT9lWysraV09bjp0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIobi50eXBlLG4ubGlzdGVuZXIsbi5jYXB0dXJlKTsrK2k/ZS5sZW5ndGg9aTpkZWxldGUgdGhpcy5fX29ufX19ZnVuY3Rpb24gWDcodCxlLG4pe3ZhciBvPVU3Lmhhc093blByb3BlcnR5KHQudHlwZSk/Rzc6WTc7cmV0dXJuIGZ1bmN0aW9uKGksYSxyKXt2YXIgcyxsPXRoaXMuX19vbixjPW8oZSxhLHIpO2lmKGwpZm9yKHZhciBkPTAscD1sLmxlbmd0aDtkPHA7KytkKWlmKChzPWxbZF0pLnR5cGU9PT10LnR5cGUmJnMubmFtZT09PXQubmFtZSlyZXR1cm4gdGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKHMudHlwZSxzLmxpc3RlbmVyLHMuY2FwdHVyZSksdGhpcy5hZGRFdmVudExpc3RlbmVyKHMudHlwZSxzLmxpc3RlbmVyPWMscy5jYXB0dXJlPW4pLHZvaWQocy52YWx1ZT1lKTt0aGlzLmFkZEV2ZW50TGlzdGVuZXIodC50eXBlLGMsbikscz17dHlwZTp0LnR5cGUsbmFtZTp0Lm5hbWUsdmFsdWU6ZSxsaXN0ZW5lcjpjLGNhcHR1cmU6bn0sbD9sLnB1c2gocyk6dGhpcy5fX29uPVtzXX19ZnVuY3Rpb24gSzcodCxlLG4pe3ZhciBvPWc3KHQpLGk9by5DdXN0b21FdmVudDsiZnVuY3Rpb24iPT10eXBlb2YgaT9pPW5ldyBpKGUsbik6KGk9by5kb2N1bWVudC5jcmVhdGVFdmVudCgiRXZlbnQiKSxuPyhpLmluaXRFdmVudChlLG4uYnViYmxlcyxuLmNhbmNlbGFibGUpLGkuZGV0YWlsPW4uZGV0YWlsKTppLmluaXRFdmVudChlLCExLCExKSksdC5kaXNwYXRjaEV2ZW50KGkpfWZ1bmN0aW9uIEo3KHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIEs3KHRoaXMsdCxlKX19ZnVuY3Rpb24gUTcodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gSzcodGhpcyx0LGUuYXBwbHkodGhpcyxhcmd1bWVudHMpKX19dmFyICQ3PVtudWxsXTtmdW5jdGlvbiB0OCh0LGUpe3RoaXMuX2dyb3Vwcz10LHRoaXMuX3BhcmVudHM9ZX1mdW5jdGlvbiBlOCgpe3JldHVybiBuZXcgdDgoW1tkb2N1bWVudC5kb2N1bWVudEVsZW1lbnRdXSwkNyl9ZnVuY3Rpb24gbjgodCl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0P25ldyB0OChbW2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3IodCldXSxbZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50XSk6bmV3IHQ4KFtbdF1dLCQ3KX1mdW5jdGlvbiBvOCgpe2Zvcih2YXIgdCxlPVc3O3Q9ZS5zb3VyY2VFdmVudDspZT10O3JldHVybiBlfWZ1bmN0aW9uIGk4KHQsZSl7dmFyIG49dC5vd25lclNWR0VsZW1lbnR8fHQ7aWYobi5jcmVhdGVTVkdQb2ludCl7dmFyIG89bi5jcmVhdGVTVkdQb2ludCgpO3JldHVybiBvLng9ZS5jbGllbnRYLG8ueT1lLmNsaWVudFksWyhvPW8ubWF0cml4VHJhbnNmb3JtKHQuZ2V0U2NyZWVuQ1RNKCkuaW52ZXJzZSgpKSkueCxvLnldfXZhciBpPXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7cmV0dXJuW2UuY2xpZW50WC1pLmxlZnQtdC5jbGllbnRMZWZ0LGUuY2xpZW50WS1pLnRvcC10LmNsaWVudFRvcF19ZnVuY3Rpb24gYTgodCl7dmFyIGU9bzgoKTtyZXR1cm4gZS5jaGFuZ2VkVG91Y2hlcyYmKGU9ZS5jaGFuZ2VkVG91Y2hlc1swXSksaTgodCxlKX1mdW5jdGlvbiByOCgpe1c3LnByZXZlbnREZWZhdWx0KCksVzcuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCl9ZnVuY3Rpb24gczgodCl7dmFyIGU9dC5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsbj1uOCh0KS5vbigiZHJhZ3N0YXJ0LmRyYWciLHI4LCEwKTsib25zZWxlY3RzdGFydCJpbiBlP24ub24oInNlbGVjdHN0YXJ0LmRyYWciLHI4LCEwKTooZS5fX25vc2VsZWN0PWUuc3R5bGUuTW96VXNlclNlbGVjdCxlLnN0eWxlLk1velVzZXJTZWxlY3Q9Im5vbmUiKX1mdW5jdGlvbiBsOCh0LGUpe3ZhciBuPXQuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LG89bjgodCkub24oImRyYWdzdGFydC5kcmFnIixudWxsKTtlJiYoby5vbigiY2xpY2suZHJhZyIscjgsITApLHNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7by5vbigiY2xpY2suZHJhZyIsbnVsbCl9KSwwKSksIm9uc2VsZWN0c3RhcnQiaW4gbj9vLm9uKCJzZWxlY3RzdGFydC5kcmFnIixudWxsKToobi5zdHlsZS5Nb3pVc2VyU2VsZWN0PW4uX19ub3NlbGVjdCxkZWxldGUgbi5fX25vc2VsZWN0KX1mdW5jdGlvbiBjOCh0LGUsbil7dC5wcm90b3R5cGU9ZS5wcm90b3R5cGU9bixuLmNvbnN0cnVjdG9yPXR9ZnVuY3Rpb24gZDgodCxlKXt2YXIgbj1PYmplY3QuY3JlYXRlKHQucHJvdG90eXBlKTtmb3IodmFyIG8gaW4gZSluW29dPWVbb107cmV0dXJuIG59ZnVuY3Rpb24gcDgoKXt9dDgucHJvdG90eXBlPWU4LnByb3RvdHlwZT17Y29uc3RydWN0b3I6dDgsc2VsZWN0OmZ1bmN0aW9uIG04KHQpeyJmdW5jdGlvbiIhPXR5cGVvZiB0JiYodD10Nyh0KSk7Zm9yKHZhciBlPXRoaXMuX2dyb3VwcyxuPWUubGVuZ3RoLG89bmV3IEFycmF5KG4pLGk9MDtpPG47KytpKWZvcih2YXIgYSxyLHM9ZVtpXSxsPXMubGVuZ3RoLGM9b1tpXT1uZXcgQXJyYXkobCksZD0wO2Q8bDsrK2QpKGE9c1tkXSkmJihyPXQuY2FsbChhLGEuX19kYXRhX18sZCxzKSkmJigiX19kYXRhX18iaW4gYSYmKHIuX19kYXRhX189YS5fX2RhdGFfXyksY1tkXT1yKTtyZXR1cm4gbmV3IHQ4KG8sdGhpcy5fcGFyZW50cyl9LHNlbGVjdEFsbDpmdW5jdGlvbiBmOCh0KXsiZnVuY3Rpb24iIT10eXBlb2YgdCYmKHQ9bjcodCkpO2Zvcih2YXIgZT10aGlzLl9ncm91cHMsbj1lLmxlbmd0aCxvPVtdLGk9W10sYT0wO2E8bjsrK2EpZm9yKHZhciByLHM9ZVthXSxsPXMubGVuZ3RoLGM9MDtjPGw7KytjKShyPXNbY10pJiYoby5wdXNoKHQuY2FsbChyLHIuX19kYXRhX18sYyxzKSksaS5wdXNoKHIpKTtyZXR1cm4gbmV3IHQ4KG8saSl9LGZpbHRlcjpmdW5jdGlvbiB1OCh0KXsiZnVuY3Rpb24iIT10eXBlb2YgdCYmKHQ9bzcodCkpO2Zvcih2YXIgZT10aGlzLl9ncm91cHMsbj1lLmxlbmd0aCxvPW5ldyBBcnJheShuKSxpPTA7aTxuOysraSlmb3IodmFyIGEscj1lW2ldLHM9ci5sZW5ndGgsbD1vW2ldPVtdLGM9MDtjPHM7KytjKShhPXJbY10pJiZ0LmNhbGwoYSxhLl9fZGF0YV9fLGMscikmJmwucHVzaChhKTtyZXR1cm4gbmV3IHQ4KG8sdGhpcy5fcGFyZW50cyl9LGRhdGE6ZnVuY3Rpb24gZzgodCxlKXtpZighdClyZXR1cm4gdT1uZXcgQXJyYXkodGhpcy5zaXplKCkpLGQ9LTEsdGhpcy5lYWNoKChmdW5jdGlvbih0KXt1WysrZF09dH0pKSx1O3ZhciBuPWU/czc6cjcsbz10aGlzLl9wYXJlbnRzLGk9dGhpcy5fZ3JvdXBzOyJmdW5jdGlvbiIhPXR5cGVvZiB0JiYodD0oZnVuY3Rpb24gYSh0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19KSh0KSk7Zm9yKHZhciByPWkubGVuZ3RoLHM9bmV3IEFycmF5KHIpLGw9bmV3IEFycmF5KHIpLGM9bmV3IEFycmF5KHIpLGQ9MDtkPHI7KytkKXt2YXIgcD1vW2RdLG09aVtkXSxmPW0ubGVuZ3RoLHU9dC5jYWxsKHAscCYmcC5fX2RhdGFfXyxkLG8pLGc9dS5sZW5ndGgsaD1sW2RdPW5ldyBBcnJheShnKSxiPXNbZF09bmV3IEFycmF5KGcpO24ocCxtLGgsYixjW2RdPW5ldyBBcnJheShmKSx1LGUpO2Zvcih2YXIgeSxfLEM9MCxNPTA7QzxnOysrQylpZih5PWhbQ10pe2ZvcihDPj1NJiYoTT1DKzEpOyEoXz1iW01dKSYmKytNPGc7KTt5Ll9uZXh0PV98fG51bGx9fXJldHVybihzPW5ldyB0OChzLG8pKS5fZW50ZXI9bCxzLl9leGl0PWMsc30sZW50ZXI6ZnVuY3Rpb24gaDgoKXtyZXR1cm4gbmV3IHQ4KHRoaXMuX2VudGVyfHx0aGlzLl9ncm91cHMubWFwKGk3KSx0aGlzLl9wYXJlbnRzKX0sZXhpdDpmdW5jdGlvbiBiOCgpe3JldHVybiBuZXcgdDgodGhpcy5fZXhpdHx8dGhpcy5fZ3JvdXBzLm1hcChpNyksdGhpcy5fcGFyZW50cyl9LGpvaW46ZnVuY3Rpb24geTgodCxlLG4pe3ZhciBvPXRoaXMuZW50ZXIoKSxpPXRoaXMsYT10aGlzLmV4aXQoKTtyZXR1cm4gbz0iZnVuY3Rpb24iPT10eXBlb2YgdD90KG8pOm8uYXBwZW5kKHQrIiIpLG51bGwhPWUmJihpPWUoaSkpLG51bGw9PW4/YS5yZW1vdmUoKTpuKGEpLG8mJmk/by5tZXJnZShpKS5vcmRlcigpOml9LG1lcmdlOmZ1bmN0aW9uIF84KHQpe2Zvcih2YXIgZT10aGlzLl9ncm91cHMsbj10Ll9ncm91cHMsbz1lLmxlbmd0aCxpPU1hdGgubWluKG8sbi5sZW5ndGgpLGE9bmV3IEFycmF5KG8pLHI9MDtyPGk7KytyKWZvcih2YXIgcyxsPWVbcl0sYz1uW3JdLGQ9bC5sZW5ndGgscD1hW3JdPW5ldyBBcnJheShkKSxtPTA7bTxkOysrbSkocz1sW21dfHxjW21dKSYmKHBbbV09cyk7Zm9yKDtyPG87KytyKWFbcl09ZVtyXTtyZXR1cm4gbmV3IHQ4KGEsdGhpcy5fcGFyZW50cyl9LG9yZGVyOmZ1bmN0aW9uIEM4KCl7Zm9yKHZhciB0PXRoaXMuX2dyb3VwcyxlPS0xLG49dC5sZW5ndGg7KytlPG47KWZvcih2YXIgbyxpPXRbZV0sYT1pLmxlbmd0aC0xLHI9aVthXTstLWE+PTA7KShvPWlbYV0pJiYociYmNF5vLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKHIpJiZyLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKG8scikscj1vKTtyZXR1cm4gdGhpc30sc29ydDpmdW5jdGlvbiBNOCh0KXtmdW5jdGlvbiBlKGUsbil7cmV0dXJuIGUmJm4/dChlLl9fZGF0YV9fLG4uX19kYXRhX18pOiFlLSFufXR8fCh0PWw3KTtmb3IodmFyIG49dGhpcy5fZ3JvdXBzLG89bi5sZW5ndGgsaT1uZXcgQXJyYXkobyksYT0wO2E8bzsrK2Epe2Zvcih2YXIgcixzPW5bYV0sbD1zLmxlbmd0aCxjPWlbYV09bmV3IEFycmF5KGwpLGQ9MDtkPGw7KytkKShyPXNbZF0pJiYoY1tkXT1yKTtjLnNvcnQoZSl9cmV0dXJuIG5ldyB0OChpLHRoaXMuX3BhcmVudHMpLm9yZGVyKCl9LGNhbGw6ZnVuY3Rpb24gdjgoKXt2YXIgdD1hcmd1bWVudHNbMF07cmV0dXJuIGFyZ3VtZW50c1swXT10aGlzLHQuYXBwbHkobnVsbCxhcmd1bWVudHMpLHRoaXN9LG5vZGVzOmZ1bmN0aW9uIHg4KCl7dmFyIHQ9bmV3IEFycmF5KHRoaXMuc2l6ZSgpKSxlPS0xO3JldHVybiB0aGlzLmVhY2goKGZ1bmN0aW9uKCl7dFsrK2VdPXRoaXN9KSksdH0sbm9kZTpmdW5jdGlvbiBPOCgpe2Zvcih2YXIgdD10aGlzLl9ncm91cHMsZT0wLG49dC5sZW5ndGg7ZTxuOysrZSlmb3IodmFyIG89dFtlXSxpPTAsYT1vLmxlbmd0aDtpPGE7KytpKXt2YXIgcj1vW2ldO2lmKHIpcmV0dXJuIHJ9cmV0dXJuIG51bGx9LHNpemU6ZnVuY3Rpb24gUDgoKXt2YXIgdD0wO3JldHVybiB0aGlzLmVhY2goKGZ1bmN0aW9uKCl7Kyt0fSkpLHR9LGVtcHR5OmZ1bmN0aW9uIHc4KCl7cmV0dXJuIXRoaXMubm9kZSgpfSxlYWNoOmZ1bmN0aW9uIGs4KHQpe2Zvcih2YXIgZT10aGlzLl9ncm91cHMsbj0wLG89ZS5sZW5ndGg7bjxvOysrbilmb3IodmFyIGksYT1lW25dLHI9MCxzPWEubGVuZ3RoO3I8czsrK3IpKGk9YVtyXSkmJnQuY2FsbChpLGkuX19kYXRhX18scixhKTtyZXR1cm4gdGhpc30sYXR0cjpmdW5jdGlvbiBTOCh0LGUpe3ZhciBuPVg2KHQpO2lmKGFyZ3VtZW50cy5sZW5ndGg8Mil7dmFyIG89dGhpcy5ub2RlKCk7cmV0dXJuIG4ubG9jYWw/by5nZXRBdHRyaWJ1dGVOUyhuLnNwYWNlLG4ubG9jYWwpOm8uZ2V0QXR0cmlidXRlKG4pfXJldHVybiB0aGlzLmVhY2goKG51bGw9PWU/bi5sb2NhbD9kNzpjNzoiZnVuY3Rpb24iPT10eXBlb2YgZT9uLmxvY2FsP3U3OmY3Om4ubG9jYWw/bTc6cDcpKG4sZSkpfSxzdHlsZTpmdW5jdGlvbiBEOCh0LGUsbil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg+MT90aGlzLmVhY2goKG51bGw9PWU/aDc6ImZ1bmN0aW9uIj09dHlwZW9mIGU/eTc6YjcpKHQsZSxudWxsPT1uPyIiOm4pKTpfNyh0aGlzLm5vZGUoKSx0KX0scHJvcGVydHk6ZnVuY3Rpb24gUjgodCxlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD4xP3RoaXMuZWFjaCgobnVsbD09ZT9DNzoiZnVuY3Rpb24iPT10eXBlb2YgZT92NzpNNykodCxlKSk6dGhpcy5ub2RlKClbdF19LGNsYXNzZWQ6ZnVuY3Rpb24gRTgodCxlKXt2YXIgbj14Nyh0KyIiKTtpZihhcmd1bWVudHMubGVuZ3RoPDIpe2Zvcih2YXIgbz1PNyh0aGlzLm5vZGUoKSksaT0tMSxhPW4ubGVuZ3RoOysraTxhOylpZighby5jb250YWlucyhuW2ldKSlyZXR1cm4hMTtyZXR1cm4hMH1yZXR1cm4gdGhpcy5lYWNoKCgiZnVuY3Rpb24iPT10eXBlb2YgZT9SNzplP1M3OkQ3KShuLGUpKX0sdGV4dDpmdW5jdGlvbiBBOCh0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90aGlzLmVhY2gobnVsbD09dD9FNzooImZ1bmN0aW9uIj09dHlwZW9mIHQ/VDc6QTcpKHQpKTp0aGlzLm5vZGUoKS50ZXh0Q29udGVudH0saHRtbDpmdW5jdGlvbiBUOCh0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90aGlzLmVhY2gobnVsbD09dD9ONzooImZ1bmN0aW9uIj09dHlwZW9mIHQ/STc6ejcpKHQpKTp0aGlzLm5vZGUoKS5pbm5lckhUTUx9LHJhaXNlOmZ1bmN0aW9uIE44KCl7cmV0dXJuIHRoaXMuZWFjaChINyl9LGxvd2VyOmZ1bmN0aW9uIHo4KCl7cmV0dXJuIHRoaXMuZWFjaChGNyl9LGFwcGVuZDpmdW5jdGlvbiBJOCh0KXt2YXIgZT0iZnVuY3Rpb24iPT10eXBlb2YgdD90OlE2KHQpO3JldHVybiB0aGlzLnNlbGVjdCgoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hcHBlbmRDaGlsZChlLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9KSl9LGluc2VydDpmdW5jdGlvbiBIOCh0LGUpe3ZhciBuPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6UTYodCksbz1udWxsPT1lP0w3OiJmdW5jdGlvbiI9PXR5cGVvZiBlP2U6dDcoZSk7cmV0dXJuIHRoaXMuc2VsZWN0KChmdW5jdGlvbigpe3JldHVybiB0aGlzLmluc2VydEJlZm9yZShuLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxvLmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8bnVsbCl9KSl9LHJlbW92ZTpmdW5jdGlvbiBGOCgpe3JldHVybiB0aGlzLmVhY2goQjcpfSxjbG9uZTpmdW5jdGlvbiBMOCh0KXtyZXR1cm4gdGhpcy5zZWxlY3QodD9qNzpWNyl9LGRhdHVtOmZ1bmN0aW9uIEI4KHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3RoaXMucHJvcGVydHkoIl9fZGF0YV9fIix0KTp0aGlzLm5vZGUoKS5fX2RhdGFfX30sb246ZnVuY3Rpb24gVjgodCxlLG4pe3ZhciBvLGksYT1xNyh0KyIiKSxyPWEubGVuZ3RoO2lmKCEoYXJndW1lbnRzLmxlbmd0aDwyKSl7Zm9yKHM9ZT9YNzpaNyxudWxsPT1uJiYobj0hMSksbz0wO288cjsrK28pdGhpcy5lYWNoKHMoYVtvXSxlLG4pKTtyZXR1cm4gdGhpc312YXIgcz10aGlzLm5vZGUoKS5fX29uO2lmKHMpZm9yKHZhciBsLGM9MCxkPXMubGVuZ3RoO2M8ZDsrK2MpZm9yKG89MCxsPXNbY107bzxyOysrbylpZigoaT1hW29dKS50eXBlPT09bC50eXBlJiZpLm5hbWU9PT1sLm5hbWUpcmV0dXJuIGwudmFsdWV9LGRpc3BhdGNoOmZ1bmN0aW9uIGo4KHQsZSl7cmV0dXJuIHRoaXMuZWFjaCgoImZ1bmN0aW9uIj09dHlwZW9mIGU/UTc6SjcpKHQsZSkpfX07dmFyIFU4PS43LFc4PTEvVTgsRzg9IlxccyooWystXT9cXGQrKVxccyoiLFk4PSJcXHMqKFsrLV0/XFxkKlxcLj9cXGQrKD86W2VFXVsrLV0/XFxkKyk/KVxccyoiLHE4PSJcXHMqKFsrLV0/XFxkKlxcLj9cXGQrKD86W2VFXVsrLV0/XFxkKyk/KSVcXHMqIixaOD0vXiMoWzAtOWEtZl17Myw4fSkkLyxYOD1uZXcgUmVnRXhwKCJecmdiXFwoIitbRzgsRzgsRzhdKyJcXCkkIiksSzg9bmV3IFJlZ0V4cCgiXnJnYlxcKCIrW3E4LHE4LHE4XSsiXFwpJCIpLEo4PW5ldyBSZWdFeHAoIl5yZ2JhXFwoIitbRzgsRzgsRzgsWThdKyJcXCkkIiksUTg9bmV3IFJlZ0V4cCgiXnJnYmFcXCgiK1txOCxxOCxxOCxZOF0rIlxcKSQiKSwkOD1uZXcgUmVnRXhwKCJeaHNsXFwoIitbWTgscTgscThdKyJcXCkkIiksdDk9bmV3IFJlZ0V4cCgiXmhzbGFcXCgiK1tZOCxxOCxxOCxZOF0rIlxcKSQiKSxlOT17YWxpY2VibHVlOjE1NzkyMzgzLGFudGlxdWV3aGl0ZToxNjQ0NDM3NSxhcXVhOjY1NTM1LGFxdWFtYXJpbmU6ODM4ODU2NCxhenVyZToxNTc5NDE3NSxiZWlnZToxNjExOTI2MCxiaXNxdWU6MTY3NzAyNDQsYmxhY2s6MCxibGFuY2hlZGFsbW9uZDoxNjc3MjA0NSxibHVlOjI1NSxibHVldmlvbGV0OjkwNTUyMDIsYnJvd246MTA4MjQyMzQsYnVybHl3b29kOjE0NTk2MjMxLGNhZGV0Ymx1ZTo2MjY2NTI4LGNoYXJ0cmV1c2U6ODM4ODM1MixjaG9jb2xhdGU6MTM3ODk0NzAsY29yYWw6MTY3NDQyNzIsY29ybmZsb3dlcmJsdWU6NjU5MTk4MSxjb3Juc2lsazoxNjc3NTM4OCxjcmltc29uOjE0NDIzMTAwLGN5YW46NjU1MzUsZGFya2JsdWU6MTM5LGRhcmtjeWFuOjM1NzIzLGRhcmtnb2xkZW5yb2Q6MTIwOTI5MzksZGFya2dyYXk6MTExMTkwMTcsZGFya2dyZWVuOjI1NjAwLGRhcmtncmV5OjExMTE5MDE3LGRhcmtraGFraToxMjQzMzI1OSxkYXJrbWFnZW50YTo5MTA5NjQzLGRhcmtvbGl2ZWdyZWVuOjU1OTc5OTksZGFya29yYW5nZToxNjc0NzUyMCxkYXJrb3JjaGlkOjEwMDQwMDEyLGRhcmtyZWQ6OTEwOTUwNCxkYXJrc2FsbW9uOjE1MzA4NDEwLGRhcmtzZWFncmVlbjo5NDE5OTE5LGRhcmtzbGF0ZWJsdWU6NDczNDM0NyxkYXJrc2xhdGVncmF5OjMxMDA0OTUsZGFya3NsYXRlZ3JleTozMTAwNDk1LGRhcmt0dXJxdW9pc2U6NTI5NDUsZGFya3Zpb2xldDo5Njk5NTM5LGRlZXBwaW5rOjE2NzE2OTQ3LGRlZXBza3libHVlOjQ5MTUxLGRpbWdyYXk6NjkwODI2NSxkaW1ncmV5OjY5MDgyNjUsZG9kZ2VyYmx1ZToyMDAzMTk5LGZpcmVicmljazoxMTY3NDE0NixmbG9yYWx3aGl0ZToxNjc3NTkyMCxmb3Jlc3RncmVlbjoyMjYzODQyLGZ1Y2hzaWE6MTY3MTE5MzUsZ2FpbnNib3JvOjE0NDc0NDYwLGdob3N0d2hpdGU6MTYzMTY2NzEsZ29sZDoxNjc2NjcyMCxnb2xkZW5yb2Q6MTQzMjkxMjAsZ3JheTo4NDIxNTA0LGdyZWVuOjMyNzY4LGdyZWVueWVsbG93OjExNDAzMDU1LGdyZXk6ODQyMTUwNCxob25leWRldzoxNTc5NDE2MCxob3RwaW5rOjE2NzM4NzQwLGluZGlhbnJlZDoxMzQ1ODUyNCxpbmRpZ286NDkxNTMzMCxpdm9yeToxNjc3NzIwMCxraGFraToxNTc4NzY2MCxsYXZlbmRlcjoxNTEzMjQxMCxsYXZlbmRlcmJsdXNoOjE2NzczMzY1LGxhd25ncmVlbjo4MTkwOTc2LGxlbW9uY2hpZmZvbjoxNjc3NTg4NSxsaWdodGJsdWU6MTEzOTMyNTQsbGlnaHRjb3JhbDoxNTc2MTUzNixsaWdodGN5YW46MTQ3NDU1OTksbGlnaHRnb2xkZW5yb2R5ZWxsb3c6MTY0NDgyMTAsbGlnaHRncmF5OjEzODgyMzIzLGxpZ2h0Z3JlZW46OTQ5ODI1NixsaWdodGdyZXk6MTM4ODIzMjMsbGlnaHRwaW5rOjE2NzU4NDY1LGxpZ2h0c2FsbW9uOjE2NzUyNzYyLGxpZ2h0c2VhZ3JlZW46MjE0Mjg5MCxsaWdodHNreWJsdWU6ODkwMDM0NixsaWdodHNsYXRlZ3JheTo3ODMzNzUzLGxpZ2h0c2xhdGVncmV5Ojc4MzM3NTMsbGlnaHRzdGVlbGJsdWU6MTE1ODQ3MzQsbGlnaHR5ZWxsb3c6MTY3NzcxODQsbGltZTo2NTI4MCxsaW1lZ3JlZW46MzMyOTMzMCxsaW5lbjoxNjQ0NTY3MCxtYWdlbnRhOjE2NzExOTM1LG1hcm9vbjo4Mzg4NjA4LG1lZGl1bWFxdWFtYXJpbmU6NjczNzMyMixtZWRpdW1ibHVlOjIwNSxtZWRpdW1vcmNoaWQ6MTIyMTE2NjcsbWVkaXVtcHVycGxlOjk2NjI2ODMsbWVkaXVtc2VhZ3JlZW46Mzk3ODA5NyxtZWRpdW1zbGF0ZWJsdWU6ODA4Nzc5MCxtZWRpdW1zcHJpbmdncmVlbjo2NDE1NCxtZWRpdW10dXJxdW9pc2U6NDc3MjMwMCxtZWRpdW12aW9sZXRyZWQ6MTMwNDcxNzMsbWlkbmlnaHRibHVlOjE2NDQ5MTIsbWludGNyZWFtOjE2MTIxODUwLG1pc3R5cm9zZToxNjc3MDI3Myxtb2NjYXNpbjoxNjc3MDIyOSxuYXZham93aGl0ZToxNjc2ODY4NSxuYXZ5OjEyOCxvbGRsYWNlOjE2NjQzNTU4LG9saXZlOjg0MjEzNzYsb2xpdmVkcmFiOjcwNDg3Mzksb3JhbmdlOjE2NzUzOTIwLG9yYW5nZXJlZDoxNjcyOTM0NCxvcmNoaWQ6MTQzMTU3MzQscGFsZWdvbGRlbnJvZDoxNTY1NzEzMCxwYWxlZ3JlZW46MTAwMjU4ODAscGFsZXR1cnF1b2lzZToxMTUyOTk2NixwYWxldmlvbGV0cmVkOjE0MzgxMjAzLHBhcGF5YXdoaXA6MTY3NzMwNzcscGVhY2hwdWZmOjE2NzY3NjczLHBlcnU6MTM0Njg5OTEscGluazoxNjc2MTAzNSxwbHVtOjE0NTI0NjM3LHBvd2RlcmJsdWU6MTE1OTE5MTAscHVycGxlOjgzODg3MzYscmViZWNjYXB1cnBsZTo2Njk3ODgxLHJlZDoxNjcxMTY4MCxyb3N5YnJvd246MTIzNTc1MTkscm95YWxibHVlOjQyODY5NDUsc2FkZGxlYnJvd246OTEyNzE4NyxzYWxtb246MTY0MTY4ODIsc2FuZHlicm93bjoxNjAzMjg2NCxzZWFncmVlbjozMDUwMzI3LHNlYXNoZWxsOjE2Nzc0NjM4LHNpZW5uYToxMDUwNjc5NyxzaWx2ZXI6MTI2MzIyNTYsc2t5Ymx1ZTo4OTAwMzMxLHNsYXRlYmx1ZTo2OTcwMDYxLHNsYXRlZ3JheTo3MzcyOTQ0LHNsYXRlZ3JleTo3MzcyOTQ0LHNub3c6MTY3NzU5MzAsc3ByaW5nZ3JlZW46NjU0MDcsc3RlZWxibHVlOjQ2MjA5ODAsdGFuOjEzODA4NzgwLHRlYWw6MzI4OTYsdGhpc3RsZToxNDIwNDg4OCx0b21hdG86MTY3MzcwOTUsdHVycXVvaXNlOjQyNTE4NTYsdmlvbGV0OjE1NjMxMDg2LHdoZWF0OjE2MTEzMzMxLHdoaXRlOjE2Nzc3MjE1LHdoaXRlc21va2U6MTYxMTkyODUseWVsbG93OjE2Nzc2OTYwLHllbGxvd2dyZWVuOjEwMTQ1MDc0fTtmdW5jdGlvbiBuOSgpe3JldHVybiB0aGlzLnJnYigpLmZvcm1hdEhleCgpfWZ1bmN0aW9uIG85KCl7cmV0dXJuIHRoaXMucmdiKCkuZm9ybWF0UmdiKCl9ZnVuY3Rpb24gaTkodCl7dmFyIGUsbjtyZXR1cm4gdD0odCsiIikudHJpbSgpLnRvTG93ZXJDYXNlKCksKGU9WjguZXhlYyh0KSk/KG49ZVsxXS5sZW5ndGgsZT1wYXJzZUludChlWzFdLDE2KSw2PT09bj9hOShlKTozPT09bj9uZXcgYzkoZT4+OCYxNXxlPj40JjI0MCxlPj40JjE1fDI0MCZlLCgxNSZlKTw8NHwxNSZlLDEpOjg9PT1uP3I5KGU+PjI0JjI1NSxlPj4xNiYyNTUsZT4+OCYyNTUsKDI1NSZlKS8yNTUpOjQ9PT1uP3I5KGU+PjEyJjE1fGU+PjgmMjQwLGU+PjgmMTV8ZT4+NCYyNDAsZT4+NCYxNXwyNDAmZSwoKDE1JmUpPDw0fDE1JmUpLzI1NSk6bnVsbCk6KGU9WDguZXhlYyh0KSk/bmV3IGM5KGVbMV0sZVsyXSxlWzNdLDEpOihlPUs4LmV4ZWModCkpP25ldyBjOSgyNTUqZVsxXS8xMDAsMjU1KmVbMl0vMTAwLDI1NSplWzNdLzEwMCwxKTooZT1KOC5leGVjKHQpKT9yOShlWzFdLGVbMl0sZVszXSxlWzRdKTooZT1ROC5leGVjKHQpKT9yOSgyNTUqZVsxXS8xMDAsMjU1KmVbMl0vMTAwLDI1NSplWzNdLzEwMCxlWzRdKTooZT0kOC5leGVjKHQpKT9mOShlWzFdLGVbMl0vMTAwLGVbM10vMTAwLDEpOihlPXQ5LmV4ZWModCkpP2Y5KGVbMV0sZVsyXS8xMDAsZVszXS8xMDAsZVs0XSk6ZTkuaGFzT3duUHJvcGVydHkodCk/YTkoZTlbdF0pOiJ0cmFuc3BhcmVudCI9PT10P25ldyBjOShOYU4sTmFOLE5hTiwwKTpudWxsfWZ1bmN0aW9uIGE5KHQpe3JldHVybiBuZXcgYzkodD4+MTYmMjU1LHQ+PjgmMjU1LDI1NSZ0LDEpfWZ1bmN0aW9uIHI5KHQsZSxuLG8pe3JldHVybiBvPD0wJiYodD1lPW49TmFOKSxuZXcgYzkodCxlLG4sbyl9ZnVuY3Rpb24gczkodCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBwOHx8KHQ9aTkodCkpLHQ/bmV3IGM5KCh0PXQucmdiKCkpLnIsdC5nLHQuYix0Lm9wYWNpdHkpOm5ldyBjOX1mdW5jdGlvbiBsOSh0LGUsbixvKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/czkodCk6bmV3IGM5KHQsZSxuLG51bGw9PW8/MTpvKX1mdW5jdGlvbiBjOSh0LGUsbixvKXt0aGlzLnI9K3QsdGhpcy5nPStlLHRoaXMuYj0rbix0aGlzLm9wYWNpdHk9K299ZnVuY3Rpb24gZDkoKXtyZXR1cm4iIyIrbTkodGhpcy5yKSttOSh0aGlzLmcpK205KHRoaXMuYil9ZnVuY3Rpb24gcDkoKXt2YXIgdD10aGlzLm9wYWNpdHk7cmV0dXJuKDE9PT0odD1pc05hTih0KT8xOk1hdGgubWF4KDAsTWF0aC5taW4oMSx0KSkpPyJyZ2IoIjoicmdiYSgiKStNYXRoLm1heCgwLE1hdGgubWluKDI1NSxNYXRoLnJvdW5kKHRoaXMucil8fDApKSsiLCAiK01hdGgubWF4KDAsTWF0aC5taW4oMjU1LE1hdGgucm91bmQodGhpcy5nKXx8MCkpKyIsICIrTWF0aC5tYXgoMCxNYXRoLm1pbigyNTUsTWF0aC5yb3VuZCh0aGlzLmIpfHwwKSkrKDE9PT10PyIpIjoiLCAiK3QrIikiKX1mdW5jdGlvbiBtOSh0KXtyZXR1cm4oKHQ9TWF0aC5tYXgoMCxNYXRoLm1pbigyNTUsTWF0aC5yb3VuZCh0KXx8MCkpKTwxNj8iMCI6IiIpK3QudG9TdHJpbmcoMTYpfWZ1bmN0aW9uIGY5KHQsZSxuLG8pe3JldHVybiBvPD0wP3Q9ZT1uPU5hTjpuPD0wfHxuPj0xP3Q9ZT1OYU46ZTw9MCYmKHQ9TmFOKSxuZXcgaDkodCxlLG4sbyl9ZnVuY3Rpb24gdTkodCl7aWYodCBpbnN0YW5jZW9mIGg5KXJldHVybiBuZXcgaDkodC5oLHQucyx0LmwsdC5vcGFjaXR5KTtpZih0IGluc3RhbmNlb2YgcDh8fCh0PWk5KHQpKSwhdClyZXR1cm4gbmV3IGg5O2lmKHQgaW5zdGFuY2VvZiBoOSlyZXR1cm4gdDt2YXIgZT0odD10LnJnYigpKS5yLzI1NSxuPXQuZy8yNTUsbz10LmIvMjU1LGk9TWF0aC5taW4oZSxuLG8pLGE9TWF0aC5tYXgoZSxuLG8pLHI9TmFOLHM9YS1pLGw9KGEraSkvMjtyZXR1cm4gcz8ocj1lPT09YT8obi1vKS9zKzYqKG48byk6bj09PWE/KG8tZSkvcysyOihlLW4pL3MrNCxzLz1sPC41P2EraToyLWEtaSxyKj02MCk6cz1sPjAmJmw8MT8wOnIsbmV3IGg5KHIscyxsLHQub3BhY2l0eSl9ZnVuY3Rpb24gZzkodCxlLG4sbyl7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP3U5KHQpOm5ldyBoOSh0LGUsbixudWxsPT1vPzE6byl9ZnVuY3Rpb24gaDkodCxlLG4sbyl7dGhpcy5oPSt0LHRoaXMucz0rZSx0aGlzLmw9K24sdGhpcy5vcGFjaXR5PStvfWZ1bmN0aW9uIGI5KHQsZSxuKXtyZXR1cm4gMjU1Kih0PDYwP2UrKG4tZSkqdC82MDp0PDE4MD9uOnQ8MjQwP2UrKG4tZSkqKDI0MC10KS82MDplKX1jOChwOCxpOSx7Y29weTpmdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LmFzc2lnbihuZXcgdGhpcy5jb25zdHJ1Y3Rvcix0aGlzLHQpfSxkaXNwbGF5YWJsZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnJnYigpLmRpc3BsYXlhYmxlKCl9LGhleDpuOSxmb3JtYXRIZXg6bjksZm9ybWF0SHNsOmZ1bmN0aW9uIHk5KCl7cmV0dXJuIHU5KHRoaXMpLmZvcm1hdEhzbCgpfSxmb3JtYXRSZ2I6bzksdG9TdHJpbmc6bzl9KSxjOChjOSxsOSxkOChwOCx7YnJpZ2h0ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9bnVsbD09dD9XODpNYXRoLnBvdyhXOCx0KSxuZXcgYzkodGhpcy5yKnQsdGhpcy5nKnQsdGhpcy5iKnQsdGhpcy5vcGFjaXR5KX0sZGFya2VyOmZ1bmN0aW9uKHQpe3JldHVybiB0PW51bGw9PXQ/VTg6TWF0aC5wb3coVTgsdCksbmV3IGM5KHRoaXMucip0LHRoaXMuZyp0LHRoaXMuYip0LHRoaXMub3BhY2l0eSl9LHJnYjpmdW5jdGlvbigpe3JldHVybiB0aGlzfSxkaXNwbGF5YWJsZTpmdW5jdGlvbigpe3JldHVybi0uNTw9dGhpcy5yJiZ0aGlzLnI8MjU1LjUmJi0uNTw9dGhpcy5nJiZ0aGlzLmc8MjU1LjUmJi0uNTw9dGhpcy5iJiZ0aGlzLmI8MjU1LjUmJjA8PXRoaXMub3BhY2l0eSYmdGhpcy5vcGFjaXR5PD0xfSxoZXg6ZDksZm9ybWF0SGV4OmQ5LGZvcm1hdFJnYjpwOSx0b1N0cmluZzpwOX0pKSxjOChoOSxnOSxkOChwOCx7YnJpZ2h0ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9bnVsbD09dD9XODpNYXRoLnBvdyhXOCx0KSxuZXcgaDkodGhpcy5oLHRoaXMucyx0aGlzLmwqdCx0aGlzLm9wYWNpdHkpfSxkYXJrZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9bnVsbD09dD9VODpNYXRoLnBvdyhVOCx0KSxuZXcgaDkodGhpcy5oLHRoaXMucyx0aGlzLmwqdCx0aGlzLm9wYWNpdHkpfSxyZ2I6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmglMzYwKzM2MCoodGhpcy5oPDApLGU9aXNOYU4odCl8fGlzTmFOKHRoaXMucyk/MDp0aGlzLnMsbj10aGlzLmwsbz1uKyhuPC41P246MS1uKSplLGk9MipuLW87cmV0dXJuIG5ldyBjOShiOSh0Pj0yNDA/dC0yNDA6dCsxMjAsaSxvKSxiOSh0LGksbyksYjkodDwxMjA/dCsyNDA6dC0xMjAsaSxvKSx0aGlzLm9wYWNpdHkpfSxkaXNwbGF5YWJsZTpmdW5jdGlvbigpe3JldHVybigwPD10aGlzLnMmJnRoaXMuczw9MXx8aXNOYU4odGhpcy5zKSkmJjA8PXRoaXMubCYmdGhpcy5sPD0xJiYwPD10aGlzLm9wYWNpdHkmJnRoaXMub3BhY2l0eTw9MX0sZm9ybWF0SHNsOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5vcGFjaXR5O3JldHVybigxPT09KHQ9aXNOYU4odCk/MTpNYXRoLm1heCgwLE1hdGgubWluKDEsdCkpKT8iaHNsKCI6ImhzbGEoIikrKHRoaXMuaHx8MCkrIiwgIisxMDAqKHRoaXMuc3x8MCkrIiUsICIrMTAwKih0aGlzLmx8fDApKyIlIisoMT09PXQ/IikiOiIsICIrdCsiKSIpfX0pKTt2YXIgXzk9TWF0aC5QSS8xODAsQzk9MTgwL01hdGguUEksTTk9Ljk2NDIyLHY5PS44MjUyMSx4OT00LzI5LE85PTYvMjksUDk9MypPOSpPOTtmdW5jdGlvbiB3OSh0KXtpZih0IGluc3RhbmNlb2YgazkpcmV0dXJuIG5ldyBrOSh0LmwsdC5hLHQuYix0Lm9wYWNpdHkpO2lmKHQgaW5zdGFuY2VvZiBOOSlyZXR1cm4gejkodCk7dCBpbnN0YW5jZW9mIGM5fHwodD1zOSh0KSk7dmFyIGUsbixvPUU5KHQuciksaT1FOSh0LmcpLGE9RTkodC5iKSxyPVM5KCguMjIyNTA0NSpvKy43MTY4Nzg2KmkrLjA2MDYxNjkqYSkvMSk7cmV0dXJuIG89PT1pJiZpPT09YT9lPW49cjooZT1TOSgoLjQzNjA3NDcqbysuMzg1MDY0OSppKy4xNDMwODA0KmEpL005KSxuPVM5KCguMDEzOTMyMipvKy4wOTcxMDQ1KmkrLjcxNDE3MzMqYSkvdjkpKSxuZXcgazkoMTE2KnItMTYsNTAwKihlLXIpLDIwMCooci1uKSx0Lm9wYWNpdHkpfWZ1bmN0aW9uIGs5KHQsZSxuLG8pe3RoaXMubD0rdCx0aGlzLmE9K2UsdGhpcy5iPStuLHRoaXMub3BhY2l0eT0rb31mdW5jdGlvbiBTOSh0KXtyZXR1cm4gdD4uMDA4ODU2NDUxNjc5MDM1NjMxP01hdGgucG93KHQsMS8zKTp0L1A5K3g5fWZ1bmN0aW9uIEQ5KHQpe3JldHVybiB0Pk85P3QqdCp0OlA5Kih0LXg5KX1mdW5jdGlvbiBSOSh0KXtyZXR1cm4gMjU1Kih0PD0uMDAzMTMwOD8xMi45Mip0OjEuMDU1Kk1hdGgucG93KHQsMS8yLjQpLS4wNTUpfWZ1bmN0aW9uIEU5KHQpe3JldHVybih0Lz0yNTUpPD0uMDQwNDU/dC8xMi45MjpNYXRoLnBvdygodCsuMDU1KS8xLjA1NSwyLjQpfWZ1bmN0aW9uIEE5KHQpe2lmKHQgaW5zdGFuY2VvZiBOOSlyZXR1cm4gbmV3IE45KHQuaCx0LmMsdC5sLHQub3BhY2l0eSk7aWYodCBpbnN0YW5jZW9mIGs5fHwodD13OSh0KSksMD09PXQuYSYmMD09PXQuYilyZXR1cm4gbmV3IE45KE5hTiwwPHQubCYmdC5sPDEwMD8wOk5hTix0LmwsdC5vcGFjaXR5KTt2YXIgZT1NYXRoLmF0YW4yKHQuYix0LmEpKkM5O3JldHVybiBuZXcgTjkoZTwwP2UrMzYwOmUsTWF0aC5zcXJ0KHQuYSp0LmErdC5iKnQuYiksdC5sLHQub3BhY2l0eSl9ZnVuY3Rpb24gVDkodCxlLG4sbyl7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP0E5KHQpOm5ldyBOOSh0LGUsbixudWxsPT1vPzE6byl9ZnVuY3Rpb24gTjkodCxlLG4sbyl7dGhpcy5oPSt0LHRoaXMuYz0rZSx0aGlzLmw9K24sdGhpcy5vcGFjaXR5PStvfWZ1bmN0aW9uIHo5KHQpe2lmKGlzTmFOKHQuaCkpcmV0dXJuIG5ldyBrOSh0LmwsMCwwLHQub3BhY2l0eSk7dmFyIGU9dC5oKl85O3JldHVybiBuZXcgazkodC5sLE1hdGguY29zKGUpKnQuYyxNYXRoLnNpbihlKSp0LmMsdC5vcGFjaXR5KX1mdW5jdGlvbiBJOSh0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19ZnVuY3Rpb24gSDkodCxlKXtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIHQrbiplfX1mdW5jdGlvbiBGOSh0LGUpe3ZhciBuPWUtdDtyZXR1cm4gbj9IOSh0LG4+MTgwfHxuPC0xODA/bi0zNjAqTWF0aC5yb3VuZChuLzM2MCk6bik6STkoaXNOYU4odCk/ZTp0KX1mdW5jdGlvbiBMOSh0KXtyZXR1cm4gMT09KHQ9K3QpP0I5OmZ1bmN0aW9uKGUsbil7cmV0dXJuIG4tZT8oZnVuY3Rpb24gbyh0LGUsbil7cmV0dXJuIHQ9TWF0aC5wb3codCxuKSxlPU1hdGgucG93KGUsbiktdCxuPTEvbixmdW5jdGlvbihvKXtyZXR1cm4gTWF0aC5wb3codCtvKmUsbil9fSkoZSxuLHQpOkk5KGlzTmFOKGUpP246ZSl9fWZ1bmN0aW9uIEI5KHQsZSl7dmFyIG49ZS10O3JldHVybiBuP0g5KHQsbik6STkoaXNOYU4odCk/ZTp0KX1jOChrOSwoZnVuY3Rpb24gVjkodCxlLG4sbyl7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP3c5KHQpOm5ldyBrOSh0LGUsbixudWxsPT1vPzE6byl9KSxkOChwOCx7YnJpZ2h0ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBrOSh0aGlzLmwrMTgqKG51bGw9PXQ/MTp0KSx0aGlzLmEsdGhpcy5iLHRoaXMub3BhY2l0eSl9LGRhcmtlcjpmdW5jdGlvbih0KXtyZXR1cm4gbmV3IGs5KHRoaXMubC0xOCoobnVsbD09dD8xOnQpLHRoaXMuYSx0aGlzLmIsdGhpcy5vcGFjaXR5KX0scmdiOmZ1bmN0aW9uKCl7dmFyIHQ9KHRoaXMubCsxNikvMTE2LGU9aXNOYU4odGhpcy5hKT90OnQrdGhpcy5hLzUwMCxuPWlzTmFOKHRoaXMuYik/dDp0LXRoaXMuYi8yMDA7cmV0dXJuIG5ldyBjOShSOSgzLjEzMzg1NjEqKGU9TTkqRDkoZSkpLTEuNjE2ODY2NyoodD0xKkQ5KHQpKS0uNDkwNjE0Nioobj12OSpEOShuKSkpLFI5KC0uOTc4NzY4NCplKzEuOTE2MTQxNSp0Ky4wMzM0NTQqbiksUjkoLjA3MTk0NTMqZS0uMjI4OTkxNCp0KzEuNDA1MjQyNypuKSx0aGlzLm9wYWNpdHkpfX0pKSxjOChOOSxUOSxkOChwOCx7YnJpZ2h0ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBOOSh0aGlzLmgsdGhpcy5jLHRoaXMubCsxOCoobnVsbD09dD8xOnQpLHRoaXMub3BhY2l0eSl9LGRhcmtlcjpmdW5jdGlvbih0KXtyZXR1cm4gbmV3IE45KHRoaXMuaCx0aGlzLmMsdGhpcy5sLTE4KihudWxsPT10PzE6dCksdGhpcy5vcGFjaXR5KX0scmdiOmZ1bmN0aW9uKCl7cmV0dXJuIHo5KHRoaXMpLnJnYigpfX0pKTt2YXIgajk9KGZ1bmN0aW9uIHQoZSl7dmFyIG49TDkoZSk7ZnVuY3Rpb24gbyh0LGUpe3ZhciBvPW4oKHQ9bDkodCkpLnIsKGU9bDkoZSkpLnIpLGk9bih0LmcsZS5nKSxhPW4odC5iLGUuYikscj1COSh0Lm9wYWNpdHksZS5vcGFjaXR5KTtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIHQucj1vKGUpLHQuZz1pKGUpLHQuYj1hKGUpLHQub3BhY2l0eT1yKGUpLHQrIiJ9fXJldHVybiBvLmdhbW1hPXQsb30pKDEpO3ZhciBVOT0oZnVuY3Rpb24gRzkodCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciBuLG8saT1lLmxlbmd0aCxhPW5ldyBBcnJheShpKSxyPW5ldyBBcnJheShpKSxzPW5ldyBBcnJheShpKTtmb3Iobj0wO248aTsrK24pbz1sOShlW25dKSxhW25dPW8ucnx8MCxyW25dPW8uZ3x8MCxzW25dPW8uYnx8MDtyZXR1cm4gYT10KGEpLHI9dChyKSxzPXQocyksby5vcGFjaXR5PTEsZnVuY3Rpb24odCl7cmV0dXJuIG8ucj1hKHQpLG8uZz1yKHQpLG8uYj1zKHQpLG8rIiJ9fX0pKChmdW5jdGlvbiBXOSh0KXt2YXIgZT10Lmxlbmd0aC0xO3JldHVybiBmdW5jdGlvbihuKXt2YXIgbz1uPD0wP249MDpuPj0xPyhuPTEsZS0xKTpNYXRoLmZsb29yKG4qZSksaT10W29dLGE9dFtvKzFdO3JldHVybihmdW5jdGlvbiByKHQsZSxuLG8saSl7dmFyIGE9dCp0LHI9YSp0O3JldHVybigoMS0zKnQrMyphLXIpKmUrKDQtNiphKzMqcikqbisoMSszKnQrMyphLTMqcikqbytyKmkpLzZ9KSgobi1vL2UpKmUsbz4wP3Rbby0xXToyKmktYSxpLGEsbzxlLTE/dFtvKzJdOjIqYS1pKX19KSk7ZnVuY3Rpb24gWTkodCxlKXtlfHwoZT1bXSk7dmFyIG4sbz10P01hdGgubWluKGUubGVuZ3RoLHQubGVuZ3RoKTowLGk9ZS5zbGljZSgpO3JldHVybiBmdW5jdGlvbihhKXtmb3Iobj0wO248bzsrK24paVtuXT10W25dKigxLWEpK2Vbbl0qYTtyZXR1cm4gaX19ZnVuY3Rpb24gcTkodCxlKXt2YXIgbixvPWU/ZS5sZW5ndGg6MCxpPXQ/TWF0aC5taW4obyx0Lmxlbmd0aCk6MCxhPW5ldyBBcnJheShpKSxyPW5ldyBBcnJheShvKTtmb3Iobj0wO248aTsrK24pYVtuXT10dHQodFtuXSxlW25dKTtmb3IoO248bzsrK24pcltuXT1lW25dO3JldHVybiBmdW5jdGlvbih0KXtmb3Iobj0wO248aTsrK24pcltuXT1hW25dKHQpO3JldHVybiByfX1mdW5jdGlvbiBaOSh0LGUpe3ZhciBuPW5ldyBEYXRlO3JldHVybiB0PSt0LGU9K2UsZnVuY3Rpb24obyl7cmV0dXJuIG4uc2V0VGltZSh0KigxLW8pK2Uqbyksbn19ZnVuY3Rpb24gWDkodCxlKXtyZXR1cm4gdD0rdCxlPStlLGZ1bmN0aW9uKG4pe3JldHVybiB0KigxLW4pK2Uqbn19ZnVuY3Rpb24gSzkodCxlKXt2YXIgbixvPXt9LGk9e307Zm9yKG4gaW4gbnVsbCE9PXQmJiJvYmplY3QiPT10eXBlb2YgdHx8KHQ9e30pLG51bGwhPT1lJiYib2JqZWN0Ij09dHlwZW9mIGV8fChlPXt9KSxlKW4gaW4gdD9vW25dPXR0dCh0W25dLGVbbl0pOmlbbl09ZVtuXTtyZXR1cm4gZnVuY3Rpb24odCl7Zm9yKG4gaW4gbylpW25dPW9bbl0odCk7cmV0dXJuIGl9fXZhciBKOT0vWy0rXT8oPzpcZCtcLj9cZCp8XC4/XGQrKSg/OltlRV1bLStdP1xkKyk/L2csUTk9bmV3IFJlZ0V4cChKOS5zb3VyY2UsImciKTtmdW5jdGlvbiAkOSh0LGUpe3ZhciBuLG8saSxhPUo5Lmxhc3RJbmRleD1ROS5sYXN0SW5kZXg9MCxyPS0xLHM9W10sbD1bXTtmb3IodCs9IiIsZSs9IiI7KG49SjkuZXhlYyh0KSkmJihvPVE5LmV4ZWMoZSkpOykoaT1vLmluZGV4KT5hJiYoaT1lLnNsaWNlKGEsaSksc1tyXT9zW3JdKz1pOnNbKytyXT1pKSwobj1uWzBdKT09PShvPW9bMF0pP3Nbcl0/c1tyXSs9bzpzWysrcl09bzooc1srK3JdPW51bGwsbC5wdXNoKHtpOnIseDpYOShuLG8pfSkpLGE9UTkubGFzdEluZGV4O3JldHVybiBhPGUubGVuZ3RoJiYoaT1lLnNsaWNlKGEpLHNbcl0/c1tyXSs9aTpzWysrcl09aSkscy5sZW5ndGg8Mj9sWzBdPyhmdW5jdGlvbiBjKHQpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gdChlKSsiIn19KShsWzBdLngpOihmdW5jdGlvbiBkKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0fX0pKGUpOihlPWwubGVuZ3RoLGZ1bmN0aW9uKHQpe2Zvcih2YXIgbixvPTA7bzxlOysrbylzWyhuPWxbb10pLmldPW4ueCh0KTtyZXR1cm4gcy5qb2luKCIiKX0pfWZ1bmN0aW9uIHR0dCh0LGUpe3ZhciBuLG89dHlwZW9mIGU7cmV0dXJuIG51bGw9PWV8fCJib29sZWFuIj09PW8/STkoZSk6KCJudW1iZXIiPT09bz9YOToic3RyaW5nIj09PW8/KG49aTkoZSkpPyhlPW4sajkpOiQ5OmUgaW5zdGFuY2VvZiBpOT9qOTplIGluc3RhbmNlb2YgRGF0ZT9aOTooZnVuY3Rpb24gaSh0KXtyZXR1cm4gQXJyYXlCdWZmZXIuaXNWaWV3KHQpJiYhKHQgaW5zdGFuY2VvZiBEYXRhVmlldyl9KShlKT9ZOTpBcnJheS5pc0FycmF5KGUpP3E5OiJmdW5jdGlvbiIhPXR5cGVvZiBlLnZhbHVlT2YmJiJmdW5jdGlvbiIhPXR5cGVvZiBlLnRvU3RyaW5nfHxpc05hTihlKT9LOTpYOSkodCxlKX1mdW5jdGlvbiBldHQodCxlKXtyZXR1cm4gdD0rdCxlPStlLGZ1bmN0aW9uKG4pe3JldHVybiBNYXRoLnJvdW5kKHQqKDEtbikrZSpuKX19dmFyIG50dCxvdHQsaXR0LGF0dCxydHQ9MTgwL01hdGguUEksc3R0PXt0cmFuc2xhdGVYOjAsdHJhbnNsYXRlWTowLHJvdGF0ZTowLHNrZXdYOjAsc2NhbGVYOjEsc2NhbGVZOjF9O2Z1bmN0aW9uIGx0dCh0LGUsbixvLGksYSl7dmFyIHIscyxsO3JldHVybihyPU1hdGguc3FydCh0KnQrZSplKSkmJih0Lz1yLGUvPXIpLChsPXQqbitlKm8pJiYobi09dCpsLG8tPWUqbCksKHM9TWF0aC5zcXJ0KG4qbitvKm8pKSYmKG4vPXMsby89cyxsLz1zKSx0Km88ZSpuJiYodD0tdCxlPS1lLGw9LWwscj0tcikse3RyYW5zbGF0ZVg6aSx0cmFuc2xhdGVZOmEscm90YXRlOk1hdGguYXRhbjIoZSx0KSpydHQsc2tld1g6TWF0aC5hdGFuKGwpKnJ0dCxzY2FsZVg6cixzY2FsZVk6c319ZnVuY3Rpb24gY3R0KHQsZSxuLG8pe2Z1bmN0aW9uIGkodCl7cmV0dXJuIHQubGVuZ3RoP3QucG9wKCkrIiAiOiIifXJldHVybiBmdW5jdGlvbihhLHIpe3ZhciBzPVtdLGw9W107cmV0dXJuIGE9dChhKSxyPXQociksKGZ1bmN0aW9uIGModCxvLGksYSxyLHMpe2lmKHQhPT1pfHxvIT09YSl7dmFyIGw9ci5wdXNoKCJ0cmFuc2xhdGUoIixudWxsLGUsbnVsbCxuKTtzLnB1c2goe2k6bC00LHg6WDkodCxpKX0se2k6bC0yLHg6WDkobyxhKX0pfWVsc2UoaXx8YSkmJnIucHVzaCgidHJhbnNsYXRlKCIraStlK2Erbil9KShhLnRyYW5zbGF0ZVgsYS50cmFuc2xhdGVZLHIudHJhbnNsYXRlWCxyLnRyYW5zbGF0ZVkscyxsKSwoZnVuY3Rpb24gZCh0LGUsbixhKXt0IT09ZT8odC1lPjE4MD9lKz0zNjA6ZS10PjE4MCYmKHQrPTM2MCksYS5wdXNoKHtpOm4ucHVzaChpKG4pKyJyb3RhdGUoIixudWxsLG8pLTIseDpYOSh0LGUpfSkpOmUmJm4ucHVzaChpKG4pKyJyb3RhdGUoIitlK28pfSkoYS5yb3RhdGUsci5yb3RhdGUscyxsKSwoZnVuY3Rpb24gcCh0LGUsbixhKXt0IT09ZT9hLnB1c2goe2k6bi5wdXNoKGkobikrInNrZXdYKCIsbnVsbCxvKS0yLHg6WDkodCxlKX0pOmUmJm4ucHVzaChpKG4pKyJza2V3WCgiK2Urbyl9KShhLnNrZXdYLHIuc2tld1gscyxsKSwoZnVuY3Rpb24gbSh0LGUsbixvLGEscil7aWYodCE9PW58fGUhPT1vKXt2YXIgcz1hLnB1c2goaShhKSsic2NhbGUoIixudWxsLCIsIixudWxsLCIpIik7ci5wdXNoKHtpOnMtNCx4Olg5KHQsbil9LHtpOnMtMix4Olg5KGUsbyl9KX1lbHNlIDE9PT1uJiYxPT09b3x8YS5wdXNoKGkoYSkrInNjYWxlKCIrbisiLCIrbysiKSIpfSkoYS5zY2FsZVgsYS5zY2FsZVksci5zY2FsZVgsci5zY2FsZVkscyxsKSxhPXI9bnVsbCxmdW5jdGlvbih0KXtmb3IodmFyIGUsbj0tMSxvPWwubGVuZ3RoOysrbjxvOylzWyhlPWxbbl0pLmldPWUueCh0KTtyZXR1cm4gcy5qb2luKCIiKX19fXZhciBkdHQ9Y3R0KChmdW5jdGlvbiBwdHQodCl7cmV0dXJuIm5vbmUiPT09dD9zdHQ6KG50dHx8KG50dD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJESVYiKSxvdHQ9ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LGl0dD1kb2N1bWVudC5kZWZhdWx0VmlldyksbnR0LnN0eWxlLnRyYW5zZm9ybT10LHQ9aXR0LmdldENvbXB1dGVkU3R5bGUob3R0LmFwcGVuZENoaWxkKG50dCksbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgidHJhbnNmb3JtIiksb3R0LnJlbW92ZUNoaWxkKG50dCksbHR0KCsodD10LnNsaWNlKDcsLTEpLnNwbGl0KCIsIikpWzBdLCt0WzFdLCt0WzJdLCt0WzNdLCt0WzRdLCt0WzVdKSl9KSwicHgsICIsInB4KSIsImRlZykiKSxtdHQ9Y3R0KChmdW5jdGlvbiBmdHQodCl7cmV0dXJuIG51bGw9PXQ/c3R0OihhdHR8fChhdHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsImciKSksYXR0LnNldEF0dHJpYnV0ZSgidHJhbnNmb3JtIix0KSwodD1hdHQudHJhbnNmb3JtLmJhc2VWYWwuY29uc29saWRhdGUoKSk/bHR0KCh0PXQubWF0cml4KS5hLHQuYix0LmMsdC5kLHQuZSx0LmYpOnN0dCl9KSwiLCAiLCIpIiwiKSIpO3ZhciB1dHQ9KGZ1bmN0aW9uIGd0dCh0KXtyZXR1cm4gZnVuY3Rpb24oZSxuKXt2YXIgbz10KChlPWc5KGUpKS5oLChuPWc5KG4pKS5oKSxpPUI5KGUucyxuLnMpLGE9QjkoZS5sLG4ubCkscj1COShlLm9wYWNpdHksbi5vcGFjaXR5KTtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIGUuaD1vKHQpLGUucz1pKHQpLGUubD1hKHQpLGUub3BhY2l0eT1yKHQpLGUrIiJ9fX0pKEY5KTt2YXIgaHR0LGJ0dCx5dHQ9KGZ1bmN0aW9uIF90dCh0KXtyZXR1cm4gZnVuY3Rpb24oZSxuKXt2YXIgbz10KChlPVQ5KGUpKS5oLChuPVQ5KG4pKS5oKSxpPUI5KGUuYyxuLmMpLGE9QjkoZS5sLG4ubCkscj1COShlLm9wYWNpdHksbi5vcGFjaXR5KTtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIGUuaD1vKHQpLGUuYz1pKHQpLGUubD1hKHQpLGUub3BhY2l0eT1yKHQpLGUrIiJ9fX0pKEY5KSxDdHQ9MCxNdHQ9MCx2dHQ9MCx4dHQ9MCxPdHQ9MCxQdHQ9MCx3dHQ9Im9iamVjdCI9PXR5cGVvZiBwZXJmb3JtYW5jZSYmcGVyZm9ybWFuY2Uubm93P3BlcmZvcm1hbmNlOkRhdGUsa3R0PSJvYmplY3QiPT10eXBlb2Ygd2luZG93JiZ3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lP3dpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUuYmluZCh3aW5kb3cpOmZ1bmN0aW9uKHQpe3NldFRpbWVvdXQodCwxNyl9O2Z1bmN0aW9uIFN0dCgpe3JldHVybiBPdHR8fChrdHQoRHR0KSxPdHQ9d3R0Lm5vdygpK1B0dCl9ZnVuY3Rpb24gRHR0KCl7T3R0PTB9ZnVuY3Rpb24gUnR0KCl7dGhpcy5fY2FsbD10aGlzLl90aW1lPXRoaXMuX25leHQ9bnVsbH1mdW5jdGlvbiBFdHQodCxlLG4pe3ZhciBvPW5ldyBSdHQ7cmV0dXJuIG8ucmVzdGFydCh0LGUsbiksb31mdW5jdGlvbiBBdHQoKXtPdHQ9KHh0dD13dHQubm93KCkpK1B0dCxDdHQ9TXR0PTA7dHJ5eyEoZnVuY3Rpb24gdCgpe1N0dCgpLCsrQ3R0O2Zvcih2YXIgdCxlPWh0dDtlOykodD1PdHQtZS5fdGltZSk+PTAmJmUuX2NhbGwuY2FsbChudWxsLHQpLGU9ZS5fbmV4dDstLUN0dH0pKCl9ZmluYWxseXtDdHQ9MCwoZnVuY3Rpb24gZSgpe3ZhciB0LGUsbj1odHQsbz0xLzA7Zm9yKDtuOyluLl9jYWxsPyhvPm4uX3RpbWUmJihvPW4uX3RpbWUpLHQ9bixuPW4uX25leHQpOihlPW4uX25leHQsbi5fbmV4dD1udWxsLG49dD90Ll9uZXh0PWU6aHR0PWUpO2J0dD10LE50dChvKX0pKCksT3R0PTB9fWZ1bmN0aW9uIFR0dCgpe3ZhciB0PXd0dC5ub3coKSxlPXQteHR0O2U+MWUzJiYoUHR0LT1lLHh0dD10KX1mdW5jdGlvbiBOdHQodCl7Q3R0fHwoTXR0JiYoTXR0PWNsZWFyVGltZW91dChNdHQpKSx0LU90dD4yND8odDwxLzAmJihNdHQ9c2V0VGltZW91dChBdHQsdC13dHQubm93KCktUHR0KSksdnR0JiYodnR0PWNsZWFySW50ZXJ2YWwodnR0KSkpOih2dHR8fCh4dHQ9d3R0Lm5vdygpLHZ0dD1zZXRJbnRlcnZhbChUdHQsMWUzKSksQ3R0PTEsa3R0KEF0dCkpKX1mdW5jdGlvbiB6dHQodCxlLG4pe3ZhciBvPW5ldyBSdHQ7cmV0dXJuIG8ucmVzdGFydCgoZnVuY3Rpb24obil7by5zdG9wKCksdChuK2UpfSksZT1udWxsPT1lPzA6K2Usbiksb31SdHQucHJvdG90eXBlPUV0dC5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOlJ0dCxyZXN0YXJ0OmZ1bmN0aW9uKHQsZSxuKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCl0aHJvdyBuZXcgVHlwZUVycm9yKCJjYWxsYmFjayBpcyBub3QgYSBmdW5jdGlvbiIpO249KG51bGw9PW4/U3R0KCk6K24pKyhudWxsPT1lPzA6K2UpLHRoaXMuX25leHR8fGJ0dD09PXRoaXN8fChidHQ/YnR0Ll9uZXh0PXRoaXM6aHR0PXRoaXMsYnR0PXRoaXMpLHRoaXMuX2NhbGw9dCx0aGlzLl90aW1lPW4sTnR0KCl9LHN0b3A6ZnVuY3Rpb24oKXt0aGlzLl9jYWxsJiYodGhpcy5fY2FsbD1udWxsLHRoaXMuX3RpbWU9MS8wLE50dCgpKX19O3ZhciBJdHQ9ajYoInN0YXJ0IiwiZW5kIiwiY2FuY2VsIiwiaW50ZXJydXB0IiksSHR0PVtdO2Z1bmN0aW9uIEZ0dCh0LGUsbixvLGksYSl7dmFyIHI9dC5fX3RyYW5zaXRpb247aWYocil7aWYobiBpbiByKXJldHVybn1lbHNlIHQuX190cmFuc2l0aW9uPXt9OyEoZnVuY3Rpb24gcyh0LGUsbil7dmFyIG8saT10Ll9fdHJhbnNpdGlvbjtmdW5jdGlvbiBhKHQpe24uc3RhdGU9MSxuLnRpbWVyLnJlc3RhcnQocixuLmRlbGF5LG4udGltZSksbi5kZWxheTw9dCYmcih0LW4uZGVsYXkpfWZ1bmN0aW9uIHIoYSl7dmFyIGMsZCxwLG07aWYoMSE9PW4uc3RhdGUpcmV0dXJuIGwoKTtmb3IoYyBpbiBpKWlmKChtPWlbY10pLm5hbWU9PT1uLm5hbWUpe2lmKDM9PT1tLnN0YXRlKXJldHVybiB6dHQocik7ND09PW0uc3RhdGU/KG0uc3RhdGU9NixtLnRpbWVyLnN0b3AoKSxtLm9uLmNhbGwoImludGVycnVwdCIsdCx0Ll9fZGF0YV9fLG0uaW5kZXgsbS5ncm91cCksZGVsZXRlIGlbY10pOitjPGUmJihtLnN0YXRlPTYsbS50aW1lci5zdG9wKCksbS5vbi5jYWxsKCJjYW5jZWwiLHQsdC5fX2RhdGFfXyxtLmluZGV4LG0uZ3JvdXApLGRlbGV0ZSBpW2NdKX1pZih6dHQoKGZ1bmN0aW9uKCl7Mz09PW4uc3RhdGUmJihuLnN0YXRlPTQsbi50aW1lci5yZXN0YXJ0KHMsbi5kZWxheSxuLnRpbWUpLHMoYSkpfSkpLG4uc3RhdGU9MixuLm9uLmNhbGwoInN0YXJ0Iix0LHQuX19kYXRhX18sbi5pbmRleCxuLmdyb3VwKSwyPT09bi5zdGF0ZSl7Zm9yKG4uc3RhdGU9MyxvPW5ldyBBcnJheShwPW4udHdlZW4ubGVuZ3RoKSxjPTAsZD0tMTtjPHA7KytjKShtPW4udHdlZW5bY10udmFsdWUuY2FsbCh0LHQuX19kYXRhX18sbi5pbmRleCxuLmdyb3VwKSkmJihvWysrZF09bSk7by5sZW5ndGg9ZCsxfX1mdW5jdGlvbiBzKGUpe2Zvcih2YXIgaT1lPG4uZHVyYXRpb24/bi5lYXNlLmNhbGwobnVsbCxlL24uZHVyYXRpb24pOihuLnRpbWVyLnJlc3RhcnQobCksbi5zdGF0ZT01LDEpLGE9LTEscj1vLmxlbmd0aDsrK2E8cjspb1thXS5jYWxsKHQsaSk7NT09PW4uc3RhdGUmJihuLm9uLmNhbGwoImVuZCIsdCx0Ll9fZGF0YV9fLG4uaW5kZXgsbi5ncm91cCksbCgpKX1mdW5jdGlvbiBsKCl7Zm9yKHZhciBvIGluIG4uc3RhdGU9NixuLnRpbWVyLnN0b3AoKSxkZWxldGUgaVtlXSxpKXJldHVybjtkZWxldGUgdC5fX3RyYW5zaXRpb259aVtlXT1uLG4udGltZXI9RXR0KGEsMCxuLnRpbWUpfSkodCxuLHtuYW1lOmUsaW5kZXg6byxncm91cDppLG9uOkl0dCx0d2VlbjpIdHQsdGltZTphLnRpbWUsZGVsYXk6YS5kZWxheSxkdXJhdGlvbjphLmR1cmF0aW9uLGVhc2U6YS5lYXNlLHRpbWVyOm51bGwsc3RhdGU6MH0pfWZ1bmN0aW9uIEx0dCh0LGUpe3ZhciBuPVZ0dCh0LGUpO2lmKG4uc3RhdGU+MCl0aHJvdyBuZXcgRXJyb3IoInRvbyBsYXRlOyBhbHJlYWR5IHNjaGVkdWxlZCIpO3JldHVybiBufWZ1bmN0aW9uIEJ0dCh0LGUpe3ZhciBuPVZ0dCh0LGUpO2lmKG4uc3RhdGU+Myl0aHJvdyBuZXcgRXJyb3IoInRvbyBsYXRlOyBhbHJlYWR5IHJ1bm5pbmciKTtyZXR1cm4gbn1mdW5jdGlvbiBWdHQodCxlKXt2YXIgbj10Ll9fdHJhbnNpdGlvbjtpZighbnx8IShuPW5bZV0pKXRocm93IG5ldyBFcnJvcigidHJhbnNpdGlvbiBub3QgZm91bmQiKTtyZXR1cm4gbn1mdW5jdGlvbiBqdHQodCxlKXt2YXIgbixvLGksYT10Ll9fdHJhbnNpdGlvbixyPSEwO2lmKGEpe2ZvcihpIGluIGU9bnVsbD09ZT9udWxsOmUrIiIsYSkobj1hW2ldKS5uYW1lPT09ZT8obz1uLnN0YXRlPjImJm4uc3RhdGU8NSxuLnN0YXRlPTYsbi50aW1lci5zdG9wKCksbi5vbi5jYWxsKG8/ImludGVycnVwdCI6ImNhbmNlbCIsdCx0Ll9fZGF0YV9fLG4uaW5kZXgsbi5ncm91cCksZGVsZXRlIGFbaV0pOnI9ITE7ciYmZGVsZXRlIHQuX190cmFuc2l0aW9ufX1mdW5jdGlvbiBVdHQodCxlKXt2YXIgbixvO3JldHVybiBmdW5jdGlvbigpe3ZhciBpPUJ0dCh0aGlzLHQpLGE9aS50d2VlbjtpZihhIT09bilmb3IodmFyIHI9MCxzPShvPW49YSkubGVuZ3RoO3I8czsrK3IpaWYob1tyXS5uYW1lPT09ZSl7KG89by5zbGljZSgpKS5zcGxpY2UociwxKTticmVha31pLnR3ZWVuPW99fWZ1bmN0aW9uIFd0dCh0LGUsbil7dmFyIG8saTtpZigiZnVuY3Rpb24iIT10eXBlb2Ygbil0aHJvdyBuZXcgRXJyb3I7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGE9QnR0KHRoaXMsdCkscj1hLnR3ZWVuO2lmKHIhPT1vKXtpPShvPXIpLnNsaWNlKCk7Zm9yKHZhciBzPXtuYW1lOmUsdmFsdWU6bn0sbD0wLGM9aS5sZW5ndGg7bDxjOysrbClpZihpW2xdLm5hbWU9PT1lKXtpW2xdPXM7YnJlYWt9bD09PWMmJmkucHVzaChzKX1hLnR3ZWVuPWl9fWZ1bmN0aW9uIEd0dCh0LGUsbil7dmFyIG89dC5faWQ7cmV0dXJuIHQuZWFjaCgoZnVuY3Rpb24oKXt2YXIgdD1CdHQodGhpcyxvKTsodC52YWx1ZXx8KHQudmFsdWU9e30pKVtlXT1uLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0pKSxmdW5jdGlvbih0KXtyZXR1cm4gVnR0KHQsbykudmFsdWVbZV19fWZ1bmN0aW9uIFl0dCh0LGUpe3ZhciBuO3JldHVybigibnVtYmVyIj09dHlwZW9mIGU/WDk6ZSBpbnN0YW5jZW9mIGk5P2o5OihuPWk5KGUpKT8oZT1uLGo5KTokOSkodCxlKX1mdW5jdGlvbiBxdHQodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5yZW1vdmVBdHRyaWJ1dGUodCl9fWZ1bmN0aW9uIFp0dCh0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnJlbW92ZUF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCl9fWZ1bmN0aW9uIFh0dCh0LGUsbil7dmFyIG8saSxhPW4rIiI7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHI9dGhpcy5nZXRBdHRyaWJ1dGUodCk7cmV0dXJuIHI9PT1hP251bGw6cj09PW8/aTppPWUobz1yLG4pfX1mdW5jdGlvbiBLdHQodCxlLG4pe3ZhciBvLGksYT1uKyIiO3JldHVybiBmdW5jdGlvbigpe3ZhciByPXRoaXMuZ2V0QXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsKTtyZXR1cm4gcj09PWE/bnVsbDpyPT09bz9pOmk9ZShvPXIsbil9fWZ1bmN0aW9uIEp0dCh0LGUsbil7dmFyIG8saSxhO3JldHVybiBmdW5jdGlvbigpe3ZhciByLHMsbD1uKHRoaXMpO2lmKG51bGwhPWwpcmV0dXJuKHI9dGhpcy5nZXRBdHRyaWJ1dGUodCkpPT09KHM9bCsiIik/bnVsbDpyPT09byYmcz09PWk/YTooaT1zLGE9ZShvPXIsbCkpO3RoaXMucmVtb3ZlQXR0cmlidXRlKHQpfX1mdW5jdGlvbiBRdHQodCxlLG4pe3ZhciBvLGksYTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgcixzLGw9bih0aGlzKTtpZihudWxsIT1sKXJldHVybihyPXRoaXMuZ2V0QXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsKSk9PT0ocz1sKyIiKT9udWxsOnI9PT1vJiZzPT09aT9hOihpPXMsYT1lKG89cixsKSk7dGhpcy5yZW1vdmVBdHRyaWJ1dGVOUyh0LnNwYWNlLHQubG9jYWwpfX1mdW5jdGlvbiAkdHQodCxlKXtyZXR1cm4gZnVuY3Rpb24obil7dGhpcy5zZXRBdHRyaWJ1dGUodCxlLmNhbGwodGhpcyxuKSl9fWZ1bmN0aW9uIHRldCh0LGUpe3JldHVybiBmdW5jdGlvbihuKXt0aGlzLnNldEF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCxlLmNhbGwodGhpcyxuKSl9fWZ1bmN0aW9uIGVldCh0LGUpe3ZhciBuLG87ZnVuY3Rpb24gaSgpe3ZhciBpPWUuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBpIT09byYmKG49KG89aSkmJnRldCh0LGkpKSxufXJldHVybiBpLl92YWx1ZT1lLGl9ZnVuY3Rpb24gbmV0KHQsZSl7dmFyIG4sbztmdW5jdGlvbiBpKCl7dmFyIGk9ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIGkhPT1vJiYobj0obz1pKSYmJHR0KHQsaSkpLG59cmV0dXJuIGkuX3ZhbHVlPWUsaX1mdW5jdGlvbiBvZXQodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXtMdHQodGhpcyx0KS5kZWxheT0rZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fWZ1bmN0aW9uIGlldCh0LGUpe3JldHVybiBlPStlLGZ1bmN0aW9uKCl7THR0KHRoaXMsdCkuZGVsYXk9ZX19ZnVuY3Rpb24gYWV0KHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7QnR0KHRoaXMsdCkuZHVyYXRpb249K2UuYXBwbHkodGhpcyxhcmd1bWVudHMpfX1mdW5jdGlvbiByZXQodCxlKXtyZXR1cm4gZT0rZSxmdW5jdGlvbigpe0J0dCh0aGlzLHQpLmR1cmF0aW9uPWV9fWZ1bmN0aW9uIHNldCh0LGUpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBlKXRocm93IG5ldyBFcnJvcjtyZXR1cm4gZnVuY3Rpb24oKXtCdHQodGhpcyx0KS5lYXNlPWV9fWZ1bmN0aW9uIGNldCh0LGUsbil7dmFyIG8saSxhPShmdW5jdGlvbiByKHQpe3JldHVybih0KyIiKS50cmltKCkuc3BsaXQoL158XHMrLykuZXZlcnkoKGZ1bmN0aW9uKHQpe3ZhciBlPXQuaW5kZXhPZigiLiIpO3JldHVybiBlPj0wJiYodD10LnNsaWNlKDAsZSkpLCF0fHwic3RhcnQiPT09dH0pKX0pKGUpP0x0dDpCdHQ7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHI9YSh0aGlzLHQpLHM9ci5vbjtzIT09byYmKGk9KG89cykuY29weSgpKS5vbihlLG4pLHIub249aX19dmFyIGRldD1lOC5wcm90b3R5cGUuY29uc3RydWN0b3I7ZnVuY3Rpb24gcGV0KHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMuc3R5bGUucmVtb3ZlUHJvcGVydHkodCl9fWZ1bmN0aW9uIG1ldCh0LGUsbil7cmV0dXJuIGZ1bmN0aW9uKG8pe3RoaXMuc3R5bGUuc2V0UHJvcGVydHkodCxlLmNhbGwodGhpcyxvKSxuKX19ZnVuY3Rpb24gZmV0KHQsZSxuKXt2YXIgbyxpO2Z1bmN0aW9uIGEoKXt2YXIgYT1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gYSE9PWkmJihvPShpPWEpJiZtZXQodCxhLG4pKSxvfXJldHVybiBhLl92YWx1ZT1lLGF9ZnVuY3Rpb24gdWV0KHQpe3JldHVybiBmdW5jdGlvbihlKXt0aGlzLnRleHRDb250ZW50PXQuY2FsbCh0aGlzLGUpfX1mdW5jdGlvbiBnZXQodCl7dmFyIGUsbjtmdW5jdGlvbiBvKCl7dmFyIG89dC5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIG8hPT1uJiYoZT0obj1vKSYmdWV0KG8pKSxlfXJldHVybiBvLl92YWx1ZT10LG99dmFyIGhldD0wO2Z1bmN0aW9uIGJldCh0LGUsbixvKXt0aGlzLl9ncm91cHM9dCx0aGlzLl9wYXJlbnRzPWUsdGhpcy5fbmFtZT1uLHRoaXMuX2lkPW99ZnVuY3Rpb24geWV0KCl7cmV0dXJuKytoZXR9dmFyIF9ldD1lOC5wcm90b3R5cGU7YmV0LnByb3RvdHlwZT17Y29uc3RydWN0b3I6YmV0LHNlbGVjdDpmdW5jdGlvbiBDZXQodCl7dmFyIGU9dGhpcy5fbmFtZSxuPXRoaXMuX2lkOyJmdW5jdGlvbiIhPXR5cGVvZiB0JiYodD10Nyh0KSk7Zm9yKHZhciBvPXRoaXMuX2dyb3VwcyxpPW8ubGVuZ3RoLGE9bmV3IEFycmF5KGkpLHI9MDtyPGk7KytyKWZvcih2YXIgcyxsLGM9b1tyXSxkPWMubGVuZ3RoLHA9YVtyXT1uZXcgQXJyYXkoZCksbT0wO208ZDsrK20pKHM9Y1ttXSkmJihsPXQuY2FsbChzLHMuX19kYXRhX18sbSxjKSkmJigiX19kYXRhX18iaW4gcyYmKGwuX19kYXRhX189cy5fX2RhdGFfXykscFttXT1sLEZ0dChwW21dLGUsbixtLHAsVnR0KHMsbikpKTtyZXR1cm4gbmV3IGJldChhLHRoaXMuX3BhcmVudHMsZSxuKX0sc2VsZWN0QWxsOmZ1bmN0aW9uIE1ldCh0KXt2YXIgZT10aGlzLl9uYW1lLG49dGhpcy5faWQ7ImZ1bmN0aW9uIiE9dHlwZW9mIHQmJih0PW43KHQpKTtmb3IodmFyIG89dGhpcy5fZ3JvdXBzLGk9by5sZW5ndGgsYT1bXSxyPVtdLHM9MDtzPGk7KytzKWZvcih2YXIgbCxjPW9bc10sZD1jLmxlbmd0aCxwPTA7cDxkOysrcClpZihsPWNbcF0pe2Zvcih2YXIgbSxmPXQuY2FsbChsLGwuX19kYXRhX18scCxjKSx1PVZ0dChsLG4pLGc9MCxoPWYubGVuZ3RoO2c8aDsrK2cpKG09ZltnXSkmJkZ0dChtLGUsbixnLGYsdSk7YS5wdXNoKGYpLHIucHVzaChsKX1yZXR1cm4gbmV3IGJldChhLHIsZSxuKX0sZmlsdGVyOmZ1bmN0aW9uIHZldCh0KXsiZnVuY3Rpb24iIT10eXBlb2YgdCYmKHQ9bzcodCkpO2Zvcih2YXIgZT10aGlzLl9ncm91cHMsbj1lLmxlbmd0aCxvPW5ldyBBcnJheShuKSxpPTA7aTxuOysraSlmb3IodmFyIGEscj1lW2ldLHM9ci5sZW5ndGgsbD1vW2ldPVtdLGM9MDtjPHM7KytjKShhPXJbY10pJiZ0LmNhbGwoYSxhLl9fZGF0YV9fLGMscikmJmwucHVzaChhKTtyZXR1cm4gbmV3IGJldChvLHRoaXMuX3BhcmVudHMsdGhpcy5fbmFtZSx0aGlzLl9pZCl9LG1lcmdlOmZ1bmN0aW9uIHhldCh0KXtpZih0Ll9pZCE9PXRoaXMuX2lkKXRocm93IG5ldyBFcnJvcjtmb3IodmFyIGU9dGhpcy5fZ3JvdXBzLG49dC5fZ3JvdXBzLG89ZS5sZW5ndGgsaT1NYXRoLm1pbihvLG4ubGVuZ3RoKSxhPW5ldyBBcnJheShvKSxyPTA7cjxpOysrcilmb3IodmFyIHMsbD1lW3JdLGM9bltyXSxkPWwubGVuZ3RoLHA9YVtyXT1uZXcgQXJyYXkoZCksbT0wO208ZDsrK20pKHM9bFttXXx8Y1ttXSkmJihwW21dPXMpO2Zvcig7cjxvOysrcilhW3JdPWVbcl07cmV0dXJuIG5ldyBiZXQoYSx0aGlzLl9wYXJlbnRzLHRoaXMuX25hbWUsdGhpcy5faWQpfSxzZWxlY3Rpb246ZnVuY3Rpb24gT2V0KCl7cmV0dXJuIG5ldyBkZXQodGhpcy5fZ3JvdXBzLHRoaXMuX3BhcmVudHMpfSx0cmFuc2l0aW9uOmZ1bmN0aW9uIFBldCgpe2Zvcih2YXIgdD10aGlzLl9uYW1lLGU9dGhpcy5faWQsbj15ZXQoKSxvPXRoaXMuX2dyb3VwcyxpPW8ubGVuZ3RoLGE9MDthPGk7KythKWZvcih2YXIgcixzPW9bYV0sbD1zLmxlbmd0aCxjPTA7YzxsOysrYylpZihyPXNbY10pe3ZhciBkPVZ0dChyLGUpO0Z0dChyLHQsbixjLHMse3RpbWU6ZC50aW1lK2QuZGVsYXkrZC5kdXJhdGlvbixkZWxheTowLGR1cmF0aW9uOmQuZHVyYXRpb24sZWFzZTpkLmVhc2V9KX1yZXR1cm4gbmV3IGJldChvLHRoaXMuX3BhcmVudHMsdCxuKX0sY2FsbDpfZXQuY2FsbCxub2RlczpfZXQubm9kZXMsbm9kZTpfZXQubm9kZSxzaXplOl9ldC5zaXplLGVtcHR5Ol9ldC5lbXB0eSxlYWNoOl9ldC5lYWNoLG9uOmZ1bmN0aW9uIHdldCh0LGUpe3ZhciBuPXRoaXMuX2lkO3JldHVybiBhcmd1bWVudHMubGVuZ3RoPDI/VnR0KHRoaXMubm9kZSgpLG4pLm9uLm9uKHQpOnRoaXMuZWFjaChjZXQobix0LGUpKX0sYXR0cjpmdW5jdGlvbiBrZXQodCxlKXt2YXIgbj1YNih0KSxvPSJ0cmFuc2Zvcm0iPT09bj9tdHQ6WXR0O3JldHVybiB0aGlzLmF0dHJUd2Vlbih0LCJmdW5jdGlvbiI9PXR5cGVvZiBlPyhuLmxvY2FsP1F0dDpKdHQpKG4sbyxHdHQodGhpcywiYXR0ci4iK3QsZSkpOm51bGw9PWU/KG4ubG9jYWw/WnR0OnF0dCkobik6KG4ubG9jYWw/S3R0Olh0dCkobixvLGUpKX0sYXR0clR3ZWVuOmZ1bmN0aW9uIERldCh0LGUpe3ZhciBuPSJhdHRyLiIrdDtpZihhcmd1bWVudHMubGVuZ3RoPDIpcmV0dXJuKG49dGhpcy50d2VlbihuKSkmJm4uX3ZhbHVlO2lmKG51bGw9PWUpcmV0dXJuIHRoaXMudHdlZW4obixudWxsKTtpZigiZnVuY3Rpb24iIT10eXBlb2YgZSl0aHJvdyBuZXcgRXJyb3I7dmFyIG89WDYodCk7cmV0dXJuIHRoaXMudHdlZW4obiwoby5sb2NhbD9lZXQ6bmV0KShvLGUpKX0sc3R5bGU6ZnVuY3Rpb24gUmV0KHQsZSxuKXt2YXIgbz0idHJhbnNmb3JtIj09KHQrPSIiKT9kdHQ6WXR0O3JldHVybiBudWxsPT1lP3RoaXMuc3R5bGVUd2Vlbih0LChmdW5jdGlvbiBpKHQsZSl7dmFyIG4sbyxpO3JldHVybiBmdW5jdGlvbigpe3ZhciBhPV83KHRoaXMsdCkscj0odGhpcy5zdHlsZS5yZW1vdmVQcm9wZXJ0eSh0KSxfNyh0aGlzLHQpKTtyZXR1cm4gYT09PXI/bnVsbDphPT09biYmcj09PW8/aTppPWUobj1hLG89cil9fSkodCxvKSkub24oImVuZC5zdHlsZS4iK3QscGV0KHQpKToiZnVuY3Rpb24iPT10eXBlb2YgZT90aGlzLnN0eWxlVHdlZW4odCwoZnVuY3Rpb24gcih0LGUsbil7dmFyIG8saSxhO3JldHVybiBmdW5jdGlvbigpe3ZhciByPV83KHRoaXMsdCkscz1uKHRoaXMpLGw9cysiIjtyZXR1cm4gbnVsbD09cyYmKHRoaXMuc3R5bGUucmVtb3ZlUHJvcGVydHkodCksbD1zPV83KHRoaXMsdCkpLHI9PT1sP251bGw6cj09PW8mJmw9PT1pP2E6KGk9bCxhPWUobz1yLHMpKX19KSh0LG8sR3R0KHRoaXMsInN0eWxlLiIrdCxlKSkpLmVhY2goKGZ1bmN0aW9uIGEodCxlKXt2YXIgbixvLGksYSxyPSJzdHlsZS4iK2Uscz0iZW5kLiIrcjtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbD1CdHQodGhpcyx0KSxjPWwub24sZD1udWxsPT1sLnZhbHVlW3JdP2F8fChhPXBldChlKSk6dm9pZCAwO2M9PT1uJiZpPT09ZHx8KG89KG49YykuY29weSgpKS5vbihzLGk9ZCksbC5vbj1vfX0pKHRoaXMuX2lkLHQpKTp0aGlzLnN0eWxlVHdlZW4odCwoZnVuY3Rpb24gcyh0LGUsbil7dmFyIG8saSxhPW4rIiI7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHI9XzcodGhpcyx0KTtyZXR1cm4gcj09PWE/bnVsbDpyPT09bz9pOmk9ZShvPXIsbil9fSkodCxvLGUpLG4pLm9uKCJlbmQuc3R5bGUuIit0LG51bGwpfSxzdHlsZVR3ZWVuOmZ1bmN0aW9uIEVldCh0LGUsbil7dmFyIG89InN0eWxlLiIrKHQrPSIiKTtpZihhcmd1bWVudHMubGVuZ3RoPDIpcmV0dXJuKG89dGhpcy50d2VlbihvKSkmJm8uX3ZhbHVlO2lmKG51bGw9PWUpcmV0dXJuIHRoaXMudHdlZW4obyxudWxsKTtpZigiZnVuY3Rpb24iIT10eXBlb2YgZSl0aHJvdyBuZXcgRXJyb3I7cmV0dXJuIHRoaXMudHdlZW4obyxmZXQodCxlLG51bGw9PW4/IiI6bikpfSx0ZXh0OmZ1bmN0aW9uIEFldCh0KXtyZXR1cm4gdGhpcy50d2VlbigidGV4dCIsImZ1bmN0aW9uIj09dHlwZW9mIHQ/KGZ1bmN0aW9uIGUodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGU9dCh0aGlzKTt0aGlzLnRleHRDb250ZW50PW51bGw9PWU/IiI6ZX19KShHdHQodGhpcywidGV4dCIsdCkpOihmdW5jdGlvbiBuKHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMudGV4dENvbnRlbnQ9dH19KShudWxsPT10PyIiOnQrIiIpKX0sdGV4dFR3ZWVuOmZ1bmN0aW9uIFRldCh0KXt2YXIgZT0idGV4dCI7aWYoYXJndW1lbnRzLmxlbmd0aDwxKXJldHVybihlPXRoaXMudHdlZW4oZSkpJiZlLl92YWx1ZTtpZihudWxsPT10KXJldHVybiB0aGlzLnR3ZWVuKGUsbnVsbCk7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQpdGhyb3cgbmV3IEVycm9yO3JldHVybiB0aGlzLnR3ZWVuKGUsZ2V0KHQpKX0scmVtb3ZlOmZ1bmN0aW9uIE5ldCgpe3JldHVybiB0aGlzLm9uKCJlbmQucmVtb3ZlIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgdD10aGlzLnBhcmVudE5vZGU7Zm9yKHZhciBuIGluIHRoaXMuX190cmFuc2l0aW9uKWlmKCtuIT09ZSlyZXR1cm47dCYmdC5yZW1vdmVDaGlsZCh0aGlzKX19KSh0aGlzLl9pZCkpfSx0d2VlbjpmdW5jdGlvbiB6ZXQodCxlKXt2YXIgbj10aGlzLl9pZDtpZih0Kz0iIixhcmd1bWVudHMubGVuZ3RoPDIpe2Zvcih2YXIgbyxpPVZ0dCh0aGlzLm5vZGUoKSxuKS50d2VlbixhPTAscj1pLmxlbmd0aDthPHI7KythKWlmKChvPWlbYV0pLm5hbWU9PT10KXJldHVybiBvLnZhbHVlO3JldHVybiBudWxsfXJldHVybiB0aGlzLmVhY2goKG51bGw9PWU/VXR0Old0dCkobix0LGUpKX0sZGVsYXk6ZnVuY3Rpb24gSWV0KHQpe3ZhciBlPXRoaXMuX2lkO3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3RoaXMuZWFjaCgoImZ1bmN0aW9uIj09dHlwZW9mIHQ/b2V0OmlldCkoZSx0KSk6VnR0KHRoaXMubm9kZSgpLGUpLmRlbGF5fSxkdXJhdGlvbjpmdW5jdGlvbiBIZXQodCl7dmFyIGU9dGhpcy5faWQ7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5lYWNoKCgiZnVuY3Rpb24iPT10eXBlb2YgdD9hZXQ6cmV0KShlLHQpKTpWdHQodGhpcy5ub2RlKCksZSkuZHVyYXRpb259LGVhc2U6ZnVuY3Rpb24gRmV0KHQpe3ZhciBlPXRoaXMuX2lkO3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3RoaXMuZWFjaChzZXQoZSx0KSk6VnR0KHRoaXMubm9kZSgpLGUpLmVhc2V9LGVuZDpmdW5jdGlvbiBMZXQoKXt2YXIgdCxlLG49dGhpcyxvPW4uX2lkLGk9bi5zaXplKCk7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihhLHIpe3ZhciBzPXt2YWx1ZTpyfSxsPXt2YWx1ZTpmdW5jdGlvbigpezA9PS0taSYmYSgpfX07bi5lYWNoKChmdW5jdGlvbigpe3ZhciBuPUJ0dCh0aGlzLG8pLGk9bi5vbjtpIT09dCYmKChlPSh0PWkpLmNvcHkoKSkuXy5jYW5jZWwucHVzaChzKSxlLl8uaW50ZXJydXB0LnB1c2gocyksZS5fLmVuZC5wdXNoKGwpKSxuLm9uPWV9KSl9KSl9fTt2YXIgQmV0PXt0aW1lOm51bGwsZGVsYXk6MCxkdXJhdGlvbjoyNTAsZWFzZTpmdW5jdGlvbiBWZXQodCl7cmV0dXJuKCh0Kj0yKTw9MT90KnQqdDoodC09MikqdCp0KzIpLzJ9fTtmdW5jdGlvbiBqZXQodCxlKXtmb3IodmFyIG47IShuPXQuX190cmFuc2l0aW9uKXx8IShuPW5bZV0pOylpZighKHQ9dC5wYXJlbnROb2RlKSlyZXR1cm4gQmV0LnRpbWU9U3R0KCksQmV0O3JldHVybiBufWZ1bmN0aW9uIFVldCh0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19ZnVuY3Rpb24gV2V0KHQsZSxuKXt0aGlzLnRhcmdldD10LHRoaXMudHlwZT1lLHRoaXMuc2VsZWN0aW9uPW59ZnVuY3Rpb24gR2V0KCl7Vzcuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCl9ZnVuY3Rpb24gWWV0KCl7VzcucHJldmVudERlZmF1bHQoKSxXNy5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKX1lOC5wcm90b3R5cGUuaW50ZXJydXB0PWZ1bmN0aW9uIHFldCh0KXtyZXR1cm4gdGhpcy5lYWNoKChmdW5jdGlvbigpe2p0dCh0aGlzLHQpfSkpfSxlOC5wcm90b3R5cGUudHJhbnNpdGlvbj1mdW5jdGlvbiBaZXQodCl7dmFyIGUsbjt0IGluc3RhbmNlb2YgYmV0PyhlPXQuX2lkLHQ9dC5fbmFtZSk6KGU9eWV0KCksKG49QmV0KS50aW1lPVN0dCgpLHQ9bnVsbD09dD9udWxsOnQrIiIpO2Zvcih2YXIgbz10aGlzLl9ncm91cHMsaT1vLmxlbmd0aCxhPTA7YTxpOysrYSlmb3IodmFyIHIscz1vW2FdLGw9cy5sZW5ndGgsYz0wO2M8bDsrK2MpKHI9c1tjXSkmJkZ0dChyLHQsZSxjLHMsbnx8amV0KHIsZSkpO3JldHVybiBuZXcgYmV0KG8sdGhpcy5fcGFyZW50cyx0LGUpfTt2YXIgWGV0PXtuYW1lOiJkcmFnIn0sS2V0PXtuYW1lOiJzcGFjZSJ9LEpldD17bmFtZToiaGFuZGxlIn0sUWV0PXtuYW1lOiJjZW50ZXIifTtmdW5jdGlvbiAkZXQodCl7cmV0dXJuWyt0WzBdLCt0WzFdXX1mdW5jdGlvbiB0bnQodCl7cmV0dXJuWyRldCh0WzBdKSwkZXQodFsxXSldfWZ1bmN0aW9uIGVudCh0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuKGZ1bmN0aW9uIG4odCxlLG8pe2FyZ3VtZW50cy5sZW5ndGg8MyYmKG89ZSxlPW84KCkuY2hhbmdlZFRvdWNoZXMpO2Zvcih2YXIgaSxhPTAscj1lP2UubGVuZ3RoOjA7YTxyOysrYSlpZigoaT1lW2FdKS5pZGVudGlmaWVyPT09bylyZXR1cm4gaTgodCxpKTtyZXR1cm4gbnVsbH0pKGUsVzcudG91Y2hlcyx0KX19dmFyIG5udD17bmFtZToieCIsaGFuZGxlczpbInciLCJlIl0ubWFwKGNudCksaW5wdXQ6ZnVuY3Rpb24odCxlKXtyZXR1cm4gbnVsbD09dD9udWxsOltbK3RbMF0sZVswXVsxXV0sWyt0WzFdLGVbMV1bMV1dXX0sb3V0cHV0OmZ1bmN0aW9uKHQpe3JldHVybiB0JiZbdFswXVswXSx0WzFdWzBdXX19LG9udD17bmFtZToieSIsaGFuZGxlczpbIm4iLCJzIl0ubWFwKGNudCksaW5wdXQ6ZnVuY3Rpb24odCxlKXtyZXR1cm4gbnVsbD09dD9udWxsOltbZVswXVswXSwrdFswXV0sW2VbMV1bMF0sK3RbMV1dXX0sb3V0cHV0OmZ1bmN0aW9uKHQpe3JldHVybiB0JiZbdFswXVsxXSx0WzFdWzFdXX19LGludD17b3ZlcmxheToiY3Jvc3NoYWlyIixzZWxlY3Rpb246Im1vdmUiLG46Im5zLXJlc2l6ZSIsZToiZXctcmVzaXplIixzOiJucy1yZXNpemUiLHc6ImV3LXJlc2l6ZSIsbnc6Im53c2UtcmVzaXplIixuZToibmVzdy1yZXNpemUiLHNlOiJud3NlLXJlc2l6ZSIsc3c6Im5lc3ctcmVzaXplIn0sYW50PXtlOiJ3Iix3OiJlIixudzoibmUiLG5lOiJudyIsc2U6InN3Iixzdzoic2UifSxybnQ9e246InMiLHM6Im4iLG53OiJzdyIsbmU6InNlIixzZToibmUiLHN3OiJudyJ9LHNudD17b3ZlcmxheToxLHNlbGVjdGlvbjoxLG46bnVsbCxlOjEsczpudWxsLHc6LTEsbnc6LTEsbmU6MSxzZToxLHN3Oi0xfSxsbnQ9e292ZXJsYXk6MSxzZWxlY3Rpb246MSxuOi0xLGU6bnVsbCxzOjEsdzpudWxsLG53Oi0xLG5lOi0xLHNlOjEsc3c6MX07ZnVuY3Rpb24gY250KHQpe3JldHVybnt0eXBlOnR9fWZ1bmN0aW9uIGRudCgpe3JldHVybiFXNy5jdHJsS2V5JiYhVzcuYnV0dG9ufWZ1bmN0aW9uIHBudCgpe3ZhciB0PXRoaXMub3duZXJTVkdFbGVtZW50fHx0aGlzO3JldHVybiB0Lmhhc0F0dHJpYnV0ZSgidmlld0JveCIpP1tbKHQ9dC52aWV3Qm94LmJhc2VWYWwpLngsdC55XSxbdC54K3Qud2lkdGgsdC55K3QuaGVpZ2h0XV06W1swLDBdLFt0LndpZHRoLmJhc2VWYWwudmFsdWUsdC5oZWlnaHQuYmFzZVZhbC52YWx1ZV1dfWZ1bmN0aW9uIG1udCgpe3JldHVybiBuYXZpZ2F0b3IubWF4VG91Y2hQb2ludHN8fCJvbnRvdWNoc3RhcnQiaW4gdGhpc31mdW5jdGlvbiBmbnQodCl7Zm9yKDshdC5fX2JydXNoOylpZighKHQ9dC5wYXJlbnROb2RlKSlyZXR1cm47cmV0dXJuIHQuX19icnVzaH1mdW5jdGlvbiB1bnQodCl7cmV0dXJuIHRbMF1bMF09PT10WzFdWzBdfHx0WzBdWzFdPT09dFsxXVsxXX1mdW5jdGlvbiBnbnQoKXtyZXR1cm4oZnVuY3Rpb24gdChlKXt2YXIgbixvPXBudCxpPWRudCxhPW1udCxyPSEwLHM9ajYoInN0YXJ0IiwiYnJ1c2giLCJlbmQiKSxsPTY7ZnVuY3Rpb24gYyh0KXt2YXIgbj10LnByb3BlcnR5KCJfX2JydXNoIixoKS5zZWxlY3RBbGwoIi5vdmVybGF5IikuZGF0YShbY250KCJvdmVybGF5IildKTtuLmVudGVyKCkuYXBwZW5kKCJyZWN0IikuYXR0cigiY2xhc3MiLCJvdmVybGF5IikuYXR0cigicG9pbnRlci1ldmVudHMiLCJhbGwiKS5hdHRyKCJjdXJzb3IiLGludC5vdmVybGF5KS5tZXJnZShuKS5lYWNoKChmdW5jdGlvbigpe3ZhciB0PWZudCh0aGlzKS5leHRlbnQ7bjgodGhpcykuYXR0cigieCIsdFswXVswXSkuYXR0cigieSIsdFswXVsxXSkuYXR0cigid2lkdGgiLHRbMV1bMF0tdFswXVswXSkuYXR0cigiaGVpZ2h0Iix0WzFdWzFdLXRbMF1bMV0pfSkpLHQuc2VsZWN0QWxsKCIuc2VsZWN0aW9uIikuZGF0YShbY250KCJzZWxlY3Rpb24iKV0pLmVudGVyKCkuYXBwZW5kKCJyZWN0IikuYXR0cigiY2xhc3MiLCJzZWxlY3Rpb24iKS5hdHRyKCJjdXJzb3IiLGludC5zZWxlY3Rpb24pLmF0dHIoImZpbGwiLCIjNzc3IikuYXR0cigiZmlsbC1vcGFjaXR5IiwuMykuYXR0cigic3Ryb2tlIiwiI2ZmZiIpLmF0dHIoInNoYXBlLXJlbmRlcmluZyIsImNyaXNwRWRnZXMiKTt2YXIgbz10LnNlbGVjdEFsbCgiLmhhbmRsZSIpLmRhdGEoZS5oYW5kbGVzLChmdW5jdGlvbih0KXtyZXR1cm4gdC50eXBlfSkpO28uZXhpdCgpLnJlbW92ZSgpLG8uZW50ZXIoKS5hcHBlbmQoInJlY3QiKS5hdHRyKCJjbGFzcyIsKGZ1bmN0aW9uKHQpe3JldHVybiJoYW5kbGUgaGFuZGxlLS0iK3QudHlwZX0pKS5hdHRyKCJjdXJzb3IiLChmdW5jdGlvbih0KXtyZXR1cm4gaW50W3QudHlwZV19KSksdC5lYWNoKGQpLmF0dHIoImZpbGwiLCJub25lIikuYXR0cigicG9pbnRlci1ldmVudHMiLCJhbGwiKS5vbigibW91c2Vkb3duLmJydXNoIixmKS5maWx0ZXIoYSkub24oInRvdWNoc3RhcnQuYnJ1c2giLGYpLm9uKCJ0b3VjaG1vdmUuYnJ1c2giLHUpLm9uKCJ0b3VjaGVuZC5icnVzaCB0b3VjaGNhbmNlbC5icnVzaCIsZykuc3R5bGUoInRvdWNoLWFjdGlvbiIsIm5vbmUiKS5zdHlsZSgiLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yIiwicmdiYSgwLDAsMCwwKSIpfWZ1bmN0aW9uIGQoKXt2YXIgdD1uOCh0aGlzKSxlPWZudCh0aGlzKS5zZWxlY3Rpb247ZT8odC5zZWxlY3RBbGwoIi5zZWxlY3Rpb24iKS5zdHlsZSgiZGlzcGxheSIsbnVsbCkuYXR0cigieCIsZVswXVswXSkuYXR0cigieSIsZVswXVsxXSkuYXR0cigid2lkdGgiLGVbMV1bMF0tZVswXVswXSkuYXR0cigiaGVpZ2h0IixlWzFdWzFdLWVbMF1bMV0pLHQuc2VsZWN0QWxsKCIuaGFuZGxlIikuc3R5bGUoImRpc3BsYXkiLG51bGwpLmF0dHIoIngiLChmdW5jdGlvbih0KXtyZXR1cm4iZSI9PT10LnR5cGVbdC50eXBlLmxlbmd0aC0xXT9lWzFdWzBdLWwvMjplWzBdWzBdLWwvMn0pKS5hdHRyKCJ5IiwoZnVuY3Rpb24odCl7cmV0dXJuInMiPT09dC50eXBlWzBdP2VbMV1bMV0tbC8yOmVbMF1bMV0tbC8yfSkpLmF0dHIoIndpZHRoIiwoZnVuY3Rpb24odCl7cmV0dXJuIm4iPT09dC50eXBlfHwicyI9PT10LnR5cGU/ZVsxXVswXS1lWzBdWzBdK2w6bH0pKS5hdHRyKCJoZWlnaHQiLChmdW5jdGlvbih0KXtyZXR1cm4iZSI9PT10LnR5cGV8fCJ3Ij09PXQudHlwZT9lWzFdWzFdLWVbMF1bMV0rbDpsfSkpKTp0LnNlbGVjdEFsbCgiLnNlbGVjdGlvbiwuaGFuZGxlIikuc3R5bGUoImRpc3BsYXkiLCJub25lIikuYXR0cigieCIsbnVsbCkuYXR0cigieSIsbnVsbCkuYXR0cigid2lkdGgiLG51bGwpLmF0dHIoImhlaWdodCIsbnVsbCl9ZnVuY3Rpb24gcCh0LGUsbil7dmFyIG89dC5fX2JydXNoLmVtaXR0ZXI7cmV0dXJuIW98fG4mJm8uY2xlYW4/bmV3IG0odCxlLG4pOm99ZnVuY3Rpb24gbSh0LGUsbil7dGhpcy50aGF0PXQsdGhpcy5hcmdzPWUsdGhpcy5zdGF0ZT10Ll9fYnJ1c2gsdGhpcy5hY3RpdmU9MCx0aGlzLmNsZWFuPW59ZnVuY3Rpb24gZigpe2lmKCghbnx8VzcudG91Y2hlcykmJmkuYXBwbHkodGhpcyxhcmd1bWVudHMpKXt2YXIgdCxvLGEscyxsLGMsbSxmLHUsZyxoLGI9dGhpcyx5PVc3LnRhcmdldC5fX2RhdGFfXy50eXBlLF89InNlbGVjdGlvbiI9PT0ociYmVzcubWV0YUtleT95PSJvdmVybGF5Ijp5KT9YZXQ6ciYmVzcuYWx0S2V5P1FldDpKZXQsQz1lPT09b250P251bGw6c250W3ldLE09ZT09PW5udD9udWxsOmxudFt5XSx2PWZudChiKSx4PXYuZXh0ZW50LE89di5zZWxlY3Rpb24sUD14WzBdWzBdLHc9eFswXVsxXSxrPXhbMV1bMF0sUz14WzFdWzFdLEQ9MCxSPTAsRT1DJiZNJiZyJiZXNy5zaGlmdEtleSxBPVc3LnRvdWNoZXM/ZW50KFc3LmNoYW5nZWRUb3VjaGVzWzBdLmlkZW50aWZpZXIpOmE4LFQ9QShiKSxOPVQsej1wKGIsYXJndW1lbnRzLCEwKS5iZWZvcmVzdGFydCgpOyJvdmVybGF5Ij09PXk/KE8mJih1PSEwKSx2LnNlbGVjdGlvbj1PPVtbdD1lPT09b250P1A6VFswXSxhPWU9PT1ubnQ/dzpUWzFdXSxbbD1lPT09b250P2s6dCxtPWU9PT1ubnQ/UzphXV0pOih0PU9bMF1bMF0sYT1PWzBdWzFdLGw9T1sxXVswXSxtPU9bMV1bMV0pLG89dCxzPWEsYz1sLGY9bTt2YXIgST1uOChiKS5hdHRyKCJwb2ludGVyLWV2ZW50cyIsIm5vbmUiKSxIPUkuc2VsZWN0QWxsKCIub3ZlcmxheSIpLmF0dHIoImN1cnNvciIsaW50W3ldKTtpZihXNy50b3VjaGVzKXoubW92ZWQ9TCx6LmVuZGVkPVY7ZWxzZXt2YXIgRj1uOChXNy52aWV3KS5vbigibW91c2Vtb3ZlLmJydXNoIixMLCEwKS5vbigibW91c2V1cC5icnVzaCIsViwhMCk7ciYmRi5vbigia2V5ZG93bi5icnVzaCIsaiwhMCkub24oImtleXVwLmJydXNoIixVLCEwKSxzOChXNy52aWV3KX1HZXQoKSxqdHQoYiksZC5jYWxsKGIpLHouc3RhcnQoKX1mdW5jdGlvbiBMKCl7dmFyIHQ9QShiKTshRXx8Z3x8aHx8KE1hdGguYWJzKHRbMF0tTlswXSk+TWF0aC5hYnModFsxXS1OWzFdKT9oPSEwOmc9ITApLE49dCx1PSEwLFlldCgpLEIoKX1mdW5jdGlvbiBCKCl7dmFyIGU7c3dpdGNoKEQ9TlswXS1UWzBdLFI9TlsxXS1UWzFdLF8pe2Nhc2UgS2V0OmNhc2UgWGV0OkMmJihEPU1hdGgubWF4KFAtdCxNYXRoLm1pbihrLWwsRCkpLG89dCtELGM9bCtEKSxNJiYoUj1NYXRoLm1heCh3LWEsTWF0aC5taW4oUy1tLFIpKSxzPWErUixmPW0rUik7YnJlYWs7Y2FzZSBKZXQ6QzwwPyhEPU1hdGgubWF4KFAtdCxNYXRoLm1pbihrLXQsRCkpLG89dCtELGM9bCk6Qz4wJiYoRD1NYXRoLm1heChQLWwsTWF0aC5taW4oay1sLEQpKSxvPXQsYz1sK0QpLE08MD8oUj1NYXRoLm1heCh3LWEsTWF0aC5taW4oUy1hLFIpKSxzPWErUixmPW0pOk0+MCYmKFI9TWF0aC5tYXgody1tLE1hdGgubWluKFMtbSxSKSkscz1hLGY9bStSKTticmVhaztjYXNlIFFldDpDJiYobz1NYXRoLm1heChQLE1hdGgubWluKGssdC1EKkMpKSxjPU1hdGgubWF4KFAsTWF0aC5taW4oayxsK0QqQykpKSxNJiYocz1NYXRoLm1heCh3LE1hdGgubWluKFMsYS1SKk0pKSxmPU1hdGgubWF4KHcsTWF0aC5taW4oUyxtK1IqTSkpKX1jPG8mJihDKj0tMSxlPXQsdD1sLGw9ZSxlPW8sbz1jLGM9ZSx5IGluIGFudCYmSC5hdHRyKCJjdXJzb3IiLGludFt5PWFudFt5XV0pKSxmPHMmJihNKj0tMSxlPWEsYT1tLG09ZSxlPXMscz1mLGY9ZSx5IGluIHJudCYmSC5hdHRyKCJjdXJzb3IiLGludFt5PXJudFt5XV0pKSx2LnNlbGVjdGlvbiYmKE89di5zZWxlY3Rpb24pLGcmJihvPU9bMF1bMF0sYz1PWzFdWzBdKSxoJiYocz1PWzBdWzFdLGY9T1sxXVsxXSksT1swXVswXT09PW8mJk9bMF1bMV09PT1zJiZPWzFdWzBdPT09YyYmT1sxXVsxXT09PWZ8fCh2LnNlbGVjdGlvbj1bW28sc10sW2MsZl1dLGQuY2FsbChiKSx6LmJydXNoKCkpfWZ1bmN0aW9uIFYoKXtpZihHZXQoKSxXNy50b3VjaGVzKXtpZihXNy50b3VjaGVzLmxlbmd0aClyZXR1cm47biYmY2xlYXJUaW1lb3V0KG4pLG49c2V0VGltZW91dCgoZnVuY3Rpb24oKXtuPW51bGx9KSw1MDApfWVsc2UgbDgoVzcudmlldyx1KSxGLm9uKCJrZXlkb3duLmJydXNoIGtleXVwLmJydXNoIG1vdXNlbW92ZS5icnVzaCBtb3VzZXVwLmJydXNoIixudWxsKTtJLmF0dHIoInBvaW50ZXItZXZlbnRzIiwiYWxsIiksSC5hdHRyKCJjdXJzb3IiLGludC5vdmVybGF5KSx2LnNlbGVjdGlvbiYmKE89di5zZWxlY3Rpb24pLHVudChPKSYmKHYuc2VsZWN0aW9uPW51bGwsZC5jYWxsKGIpKSx6LmVuZCgpfWZ1bmN0aW9uIGooKXtzd2l0Y2goVzcua2V5Q29kZSl7Y2FzZSAxNjpFPUMmJk07YnJlYWs7Y2FzZSAxODpfPT09SmV0JiYoQyYmKGw9Yy1EKkMsdD1vK0QqQyksTSYmKG09Zi1SKk0sYT1zK1IqTSksXz1RZXQsQigpKTticmVhaztjYXNlIDMyOl8hPT1KZXQmJl8hPT1RZXR8fChDPDA/bD1jLUQ6Qz4wJiYodD1vLUQpLE08MD9tPWYtUjpNPjAmJihhPXMtUiksXz1LZXQsSC5hdHRyKCJjdXJzb3IiLGludC5zZWxlY3Rpb24pLEIoKSk7YnJlYWs7ZGVmYXVsdDpyZXR1cm59WWV0KCl9ZnVuY3Rpb24gVSgpe3N3aXRjaChXNy5rZXlDb2RlKXtjYXNlIDE2OkUmJihnPWg9RT0hMSxCKCkpO2JyZWFrO2Nhc2UgMTg6Xz09PVFldCYmKEM8MD9sPWM6Qz4wJiYodD1vKSxNPDA/bT1mOk0+MCYmKGE9cyksXz1KZXQsQigpKTticmVhaztjYXNlIDMyOl89PT1LZXQmJihXNy5hbHRLZXk/KEMmJihsPWMtRCpDLHQ9bytEKkMpLE0mJihtPWYtUipNLGE9cytSKk0pLF89UWV0KTooQzwwP2w9YzpDPjAmJih0PW8pLE08MD9tPWY6TT4wJiYoYT1zKSxfPUpldCksSC5hdHRyKCJjdXJzb3IiLGludFt5XSksQigpKTticmVhaztkZWZhdWx0OnJldHVybn1ZZXQoKX19ZnVuY3Rpb24gdSgpe3AodGhpcyxhcmd1bWVudHMpLm1vdmVkKCl9ZnVuY3Rpb24gZygpe3AodGhpcyxhcmd1bWVudHMpLmVuZGVkKCl9ZnVuY3Rpb24gaCgpe3ZhciB0PXRoaXMuX19icnVzaHx8e3NlbGVjdGlvbjpudWxsfTtyZXR1cm4gdC5leHRlbnQ9dG50KG8uYXBwbHkodGhpcyxhcmd1bWVudHMpKSx0LmRpbT1lLHR9cmV0dXJuIGMubW92ZT1mdW5jdGlvbih0LG4pe3Quc2VsZWN0aW9uP3Qub24oInN0YXJ0LmJydXNoIiwoZnVuY3Rpb24oKXtwKHRoaXMsYXJndW1lbnRzKS5iZWZvcmVzdGFydCgpLnN0YXJ0KCl9KSkub24oImludGVycnVwdC5icnVzaCBlbmQuYnJ1c2giLChmdW5jdGlvbigpe3AodGhpcyxhcmd1bWVudHMpLmVuZCgpfSkpLnR3ZWVuKCJicnVzaCIsKGZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxvPXQuX19icnVzaCxpPXAodCxhcmd1bWVudHMpLGE9by5zZWxlY3Rpb24scj1lLmlucHV0KCJmdW5jdGlvbiI9PXR5cGVvZiBuP24uYXBwbHkodGhpcyxhcmd1bWVudHMpOm4sby5leHRlbnQpLHM9dHR0KGEscik7ZnVuY3Rpb24gbChlKXtvLnNlbGVjdGlvbj0xPT09ZSYmbnVsbD09PXI/bnVsbDpzKGUpLGQuY2FsbCh0KSxpLmJydXNoKCl9cmV0dXJuIG51bGwhPT1hJiZudWxsIT09cj9sOmwoMSl9KSk6dC5lYWNoKChmdW5jdGlvbigpe3ZhciB0PXRoaXMsbz1hcmd1bWVudHMsaT10Ll9fYnJ1c2gsYT1lLmlucHV0KCJmdW5jdGlvbiI9PXR5cGVvZiBuP24uYXBwbHkodCxvKTpuLGkuZXh0ZW50KSxyPXAodCxvKS5iZWZvcmVzdGFydCgpO2p0dCh0KSxpLnNlbGVjdGlvbj1udWxsPT09YT9udWxsOmEsZC5jYWxsKHQpLHIuc3RhcnQoKS5icnVzaCgpLmVuZCgpfSkpfSxjLmNsZWFyPWZ1bmN0aW9uKHQpe2MubW92ZSh0LG51bGwpfSxtLnByb3RvdHlwZT17YmVmb3Jlc3RhcnQ6ZnVuY3Rpb24oKXtyZXR1cm4gMT09Kyt0aGlzLmFjdGl2ZSYmKHRoaXMuc3RhdGUuZW1pdHRlcj10aGlzLHRoaXMuc3RhcnRpbmc9ITApLHRoaXN9LHN0YXJ0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc3RhcnRpbmc/KHRoaXMuc3RhcnRpbmc9ITEsdGhpcy5lbWl0KCJzdGFydCIpKTp0aGlzLmVtaXQoImJydXNoIiksdGhpc30sYnJ1c2g6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lbWl0KCJicnVzaCIpLHRoaXN9LGVuZDpmdW5jdGlvbigpe3JldHVybiAwPT0tLXRoaXMuYWN0aXZlJiYoZGVsZXRlIHRoaXMuc3RhdGUuZW1pdHRlcix0aGlzLmVtaXQoImVuZCIpKSx0aGlzfSxlbWl0OmZ1bmN0aW9uKHQpeyEoZnVuY3Rpb24gbih0LGUsbyxpKXt2YXIgYT1XNzt0LnNvdXJjZUV2ZW50PVc3LFc3PXQ7dHJ5e3JldHVybiBlLmFwcGx5KG8saSl9ZmluYWxseXtXNz1hfX0pKG5ldyBXZXQoYyx0LGUub3V0cHV0KHRoaXMuc3RhdGUuc2VsZWN0aW9uKSkscy5hcHBseSxzLFt0LHRoaXMudGhhdCx0aGlzLmFyZ3NdKX19LGMuZXh0ZW50PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6VWV0KHRudCh0KSksYyk6b30sYy5maWx0ZXI9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpVZXQoISF0KSxjKTppfSxjLnRvdWNoYWJsZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT0iZnVuY3Rpb24iPT10eXBlb2YgdD90OlVldCghIXQpLGMpOmF9LGMuaGFuZGxlU2l6ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obD0rdCxjKTpsfSxjLmtleU1vZGlmaWVycz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj0hIXQsYyk6cn0sYy5vbj1mdW5jdGlvbigpe3ZhciB0PXMub24uYXBwbHkocyxhcmd1bWVudHMpO3JldHVybiB0PT09cz9jOnR9LGN9KShvbnQpfXZhciBobnQ9TWF0aC5QSSxibnQ9MipobnQseW50PTFlLTYsX250PWJudC15bnQ7ZnVuY3Rpb24gQ250KCl7dGhpcy5feDA9dGhpcy5feTA9dGhpcy5feDE9dGhpcy5feTE9bnVsbCx0aGlzLl89IiJ9ZnVuY3Rpb24gTW50KCl7cmV0dXJuIG5ldyBDbnR9Q250LnByb3RvdHlwZT1NbnQucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpDbnQsbW92ZVRvOmZ1bmN0aW9uKHQsZSl7dGhpcy5fKz0iTSIrKHRoaXMuX3gwPXRoaXMuX3gxPSt0KSsiLCIrKHRoaXMuX3kwPXRoaXMuX3kxPStlKX0sY2xvc2VQYXRoOmZ1bmN0aW9uKCl7bnVsbCE9PXRoaXMuX3gxJiYodGhpcy5feDE9dGhpcy5feDAsdGhpcy5feTE9dGhpcy5feTAsdGhpcy5fKz0iWiIpfSxsaW5lVG86ZnVuY3Rpb24odCxlKXt0aGlzLl8rPSJMIisodGhpcy5feDE9K3QpKyIsIisodGhpcy5feTE9K2UpfSxxdWFkcmF0aWNDdXJ2ZVRvOmZ1bmN0aW9uKHQsZSxuLG8pe3RoaXMuXys9IlEiKyArdCsiLCIrICtlKyIsIisodGhpcy5feDE9K24pKyIsIisodGhpcy5feTE9K28pfSxiZXppZXJDdXJ2ZVRvOmZ1bmN0aW9uKHQsZSxuLG8saSxhKXt0aGlzLl8rPSJDIisgK3QrIiwiKyArZSsiLCIrICtuKyIsIisgK28rIiwiKyh0aGlzLl94MT0raSkrIiwiKyh0aGlzLl95MT0rYSl9LGFyY1RvOmZ1bmN0aW9uKHQsZSxuLG8saSl7dmFyIGE9dGhpcy5feDEscj10aGlzLl95MSxzPShuPStuKS0odD0rdCksbD0obz0rbyktKGU9K2UpLGM9YS10LGQ9ci1lLHA9YypjK2QqZDtpZigoaT0raSk8MCl0aHJvdyBuZXcgRXJyb3IoIm5lZ2F0aXZlIHJhZGl1czogIitpKTtpZihudWxsPT09dGhpcy5feDEpdGhpcy5fKz0iTSIrKHRoaXMuX3gxPXQpKyIsIisodGhpcy5feTE9ZSk7ZWxzZSBpZihwPnludClpZihNYXRoLmFicyhkKnMtbCpjKT55bnQmJmkpe3ZhciBtPW4tYSxmPW8tcix1PXMqcytsKmwsZz1tKm0rZipmLGg9TWF0aC5zcXJ0KHUpLGI9TWF0aC5zcXJ0KHApLHk9aSpNYXRoLnRhbigoaG50LU1hdGguYWNvcygodStwLWcpLygyKmgqYikpKS8yKSxfPXkvYixDPXkvaDtNYXRoLmFicyhfLTEpPnludCYmKHRoaXMuXys9IkwiKyh0K18qYykrIiwiKyhlK18qZCkpLHRoaXMuXys9IkEiK2krIiwiK2krIiwwLDAsIisgKyhkKm0+YypmKSsiLCIrKHRoaXMuX3gxPXQrQypzKSsiLCIrKHRoaXMuX3kxPWUrQypsKX1lbHNlIHRoaXMuXys9IkwiKyh0aGlzLl94MT10KSsiLCIrKHRoaXMuX3kxPWUpO2Vsc2U7fSxhcmM6ZnVuY3Rpb24odCxlLG4sbyxpLGEpe3Q9K3QsZT0rZSxhPSEhYTt2YXIgcj0obj0rbikqTWF0aC5jb3Mobykscz1uKk1hdGguc2luKG8pLGw9dCtyLGM9ZStzLGQ9MV5hLHA9YT9vLWk6aS1vO2lmKG48MCl0aHJvdyBuZXcgRXJyb3IoIm5lZ2F0aXZlIHJhZGl1czogIituKTtudWxsPT09dGhpcy5feDE/dGhpcy5fKz0iTSIrbCsiLCIrYzooTWF0aC5hYnModGhpcy5feDEtbCk+eW50fHxNYXRoLmFicyh0aGlzLl95MS1jKT55bnQpJiYodGhpcy5fKz0iTCIrbCsiLCIrYyksbiYmKHA8MCYmKHA9cCVibnQrYm50KSxwPl9udD90aGlzLl8rPSJBIituKyIsIituKyIsMCwxLCIrZCsiLCIrKHQtcikrIiwiKyhlLXMpKyJBIituKyIsIituKyIsMCwxLCIrZCsiLCIrKHRoaXMuX3gxPWwpKyIsIisodGhpcy5feTE9Yyk6cD55bnQmJih0aGlzLl8rPSJBIituKyIsIituKyIsMCwiKyArKHA+PWhudCkrIiwiK2QrIiwiKyh0aGlzLl94MT10K24qTWF0aC5jb3MoaSkpKyIsIisodGhpcy5feTE9ZStuKk1hdGguc2luKGkpKSkpfSxyZWN0OmZ1bmN0aW9uKHQsZSxuLG8pe3RoaXMuXys9Ik0iKyh0aGlzLl94MD10aGlzLl94MT0rdCkrIiwiKyh0aGlzLl95MD10aGlzLl95MT0rZSkrImgiKyArbisidiIrICtvKyJoIistbisiWiJ9LHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX319O3ZhciB2bnQ9IiQiO2Z1bmN0aW9uIHhudCgpe31mdW5jdGlvbiBPbnQodCxlKXt2YXIgbj1uZXcgeG50O2lmKHQgaW5zdGFuY2VvZiB4bnQpdC5lYWNoKChmdW5jdGlvbih0LGUpe24uc2V0KGUsdCl9KSk7ZWxzZSBpZihBcnJheS5pc0FycmF5KHQpKXt2YXIgbyxpPS0xLGE9dC5sZW5ndGg7aWYobnVsbD09ZSlmb3IoOysraTxhOyluLnNldChpLHRbaV0pO2Vsc2UgZm9yKDsrK2k8YTspbi5zZXQoZShvPXRbaV0saSx0KSxvKX1lbHNlIGlmKHQpZm9yKHZhciByIGluIHQpbi5zZXQocix0W3JdKTtyZXR1cm4gbn1mdW5jdGlvbiBQbnQoKXt9eG50LnByb3RvdHlwZT1PbnQucHJvdG90eXBlPXtjb25zdHJ1Y3Rvcjp4bnQsaGFzOmZ1bmN0aW9uKHQpe3JldHVybiB2bnQrdCBpbiB0aGlzfSxnZXQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXNbdm50K3RdfSxzZXQ6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpc1t2bnQrdF09ZSx0aGlzfSxyZW1vdmU6ZnVuY3Rpb24odCl7dmFyIGU9dm50K3Q7cmV0dXJuIGUgaW4gdGhpcyYmZGVsZXRlIHRoaXNbZV19LGNsZWFyOmZ1bmN0aW9uKCl7Zm9yKHZhciB0IGluIHRoaXMpdFswXT09PXZudCYmZGVsZXRlIHRoaXNbdF19LGtleXM6ZnVuY3Rpb24oKXt2YXIgdD1bXTtmb3IodmFyIGUgaW4gdGhpcyllWzBdPT09dm50JiZ0LnB1c2goZS5zbGljZSgxKSk7cmV0dXJuIHR9LHZhbHVlczpmdW5jdGlvbigpe3ZhciB0PVtdO2Zvcih2YXIgZSBpbiB0aGlzKWVbMF09PT12bnQmJnQucHVzaCh0aGlzW2VdKTtyZXR1cm4gdH0sZW50cmllczpmdW5jdGlvbigpe3ZhciB0PVtdO2Zvcih2YXIgZSBpbiB0aGlzKWVbMF09PT12bnQmJnQucHVzaCh7a2V5OmUuc2xpY2UoMSksdmFsdWU6dGhpc1tlXX0pO3JldHVybiB0fSxzaXplOmZ1bmN0aW9uKCl7dmFyIHQ9MDtmb3IodmFyIGUgaW4gdGhpcyllWzBdPT09dm50JiYrK3Q7cmV0dXJuIHR9LGVtcHR5OmZ1bmN0aW9uKCl7Zm9yKHZhciB0IGluIHRoaXMpaWYodFswXT09PXZudClyZXR1cm4hMTtyZXR1cm4hMH0sZWFjaDpmdW5jdGlvbih0KXtmb3IodmFyIGUgaW4gdGhpcyllWzBdPT09dm50JiZ0KHRoaXNbZV0sZS5zbGljZSgxKSx0aGlzKX19O3ZhciB3bnQ9T250LnByb3RvdHlwZTtmdW5jdGlvbiBrbnQodCxlKXtpZigobj0odD1lP3QudG9FeHBvbmVudGlhbChlLTEpOnQudG9FeHBvbmVudGlhbCgpKS5pbmRleE9mKCJlIikpPDApcmV0dXJuIG51bGw7dmFyIG4sbz10LnNsaWNlKDAsbik7cmV0dXJuW28ubGVuZ3RoPjE/b1swXStvLnNsaWNlKDIpOm8sK3Quc2xpY2UobisxKV19ZnVuY3Rpb24gU250KHQpe3JldHVybih0PWtudChNYXRoLmFicyh0KSkpP3RbMV06TmFOfVBudC5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOlBudCxoYXM6d250LmhhcyxhZGQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXNbdm50Kyh0Kz0iIildPXQsdGhpc30scmVtb3ZlOndudC5yZW1vdmUsY2xlYXI6d250LmNsZWFyLHZhbHVlczp3bnQua2V5cyxzaXplOndudC5zaXplLGVtcHR5OndudC5lbXB0eSxlYWNoOndudC5lYWNofTt2YXIgRG50LFJudD0vXig/OiguKT8oWzw+PV5dKSk/KFsrXC0oIF0pPyhbJCNdKT8oMCk/KFxkKyk/KCwpPyhcLlxkKyk/KH4pPyhbYS16JV0pPyQvaTtmdW5jdGlvbiBFbnQodCl7aWYoIShlPVJudC5leGVjKHQpKSl0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgZm9ybWF0OiAiK3QpO3ZhciBlO3JldHVybiBuZXcgQW50KHtmaWxsOmVbMV0sYWxpZ246ZVsyXSxzaWduOmVbM10sc3ltYm9sOmVbNF0semVybzplWzVdLHdpZHRoOmVbNl0sY29tbWE6ZVs3XSxwcmVjaXNpb246ZVs4XSYmZVs4XS5zbGljZSgxKSx0cmltOmVbOV0sdHlwZTplWzEwXX0pfWZ1bmN0aW9uIEFudCh0KXt0aGlzLmZpbGw9dm9pZCAwPT09dC5maWxsPyIgIjp0LmZpbGwrIiIsdGhpcy5hbGlnbj12b2lkIDA9PT10LmFsaWduPyI+Ijp0LmFsaWduKyIiLHRoaXMuc2lnbj12b2lkIDA9PT10LnNpZ24/Ii0iOnQuc2lnbisiIix0aGlzLnN5bWJvbD12b2lkIDA9PT10LnN5bWJvbD8iIjp0LnN5bWJvbCsiIix0aGlzLnplcm89ISF0Lnplcm8sdGhpcy53aWR0aD12b2lkIDA9PT10LndpZHRoP3ZvaWQgMDordC53aWR0aCx0aGlzLmNvbW1hPSEhdC5jb21tYSx0aGlzLnByZWNpc2lvbj12b2lkIDA9PT10LnByZWNpc2lvbj92b2lkIDA6K3QucHJlY2lzaW9uLHRoaXMudHJpbT0hIXQudHJpbSx0aGlzLnR5cGU9dm9pZCAwPT09dC50eXBlPyIiOnQudHlwZSsiIn1mdW5jdGlvbiBUbnQodCxlKXt2YXIgbj1rbnQodCxlKTtpZighbilyZXR1cm4gdCsiIjt2YXIgbz1uWzBdLGk9blsxXTtyZXR1cm4gaTwwPyIwLiIrbmV3IEFycmF5KC1pKS5qb2luKCIwIikrbzpvLmxlbmd0aD5pKzE/by5zbGljZSgwLGkrMSkrIi4iK28uc2xpY2UoaSsxKTpvK25ldyBBcnJheShpLW8ubGVuZ3RoKzIpLmpvaW4oIjAiKX1FbnQucHJvdG90eXBlPUFudC5wcm90b3R5cGUsQW50LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmZpbGwrdGhpcy5hbGlnbit0aGlzLnNpZ24rdGhpcy5zeW1ib2wrKHRoaXMuemVybz8iMCI6IiIpKyh2b2lkIDA9PT10aGlzLndpZHRoPyIiOk1hdGgubWF4KDEsMHx0aGlzLndpZHRoKSkrKHRoaXMuY29tbWE/IiwiOiIiKSsodm9pZCAwPT09dGhpcy5wcmVjaXNpb24/IiI6Ii4iK01hdGgubWF4KDAsMHx0aGlzLnByZWNpc2lvbikpKyh0aGlzLnRyaW0/In4iOiIiKSt0aGlzLnR5cGV9O3ZhciBObnQ9eyIlIjpmdW5jdGlvbih0LGUpe3JldHVybigxMDAqdCkudG9GaXhlZChlKX0sYjpmdW5jdGlvbih0KXtyZXR1cm4gTWF0aC5yb3VuZCh0KS50b1N0cmluZygyKX0sYzpmdW5jdGlvbih0KXtyZXR1cm4gdCsiIn0sZDpmdW5jdGlvbiB6bnQodCl7cmV0dXJuIE1hdGguYWJzKHQ9TWF0aC5yb3VuZCh0KSk+PTFlMjE/dC50b0xvY2FsZVN0cmluZygiZW4iKS5yZXBsYWNlKC8sL2csIiIpOnQudG9TdHJpbmcoMTApfSxlOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQudG9FeHBvbmVudGlhbChlKX0sZjpmdW5jdGlvbih0LGUpe3JldHVybiB0LnRvRml4ZWQoZSl9LGc6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC50b1ByZWNpc2lvbihlKX0sbzpmdW5jdGlvbih0KXtyZXR1cm4gTWF0aC5yb3VuZCh0KS50b1N0cmluZyg4KX0scDpmdW5jdGlvbih0LGUpe3JldHVybiBUbnQoMTAwKnQsZSl9LHI6VG50LHM6ZnVuY3Rpb24gSW50KHQsZSl7dmFyIG49a250KHQsZSk7aWYoIW4pcmV0dXJuIHQrIiI7dmFyIG89blswXSxpPW5bMV0sYT1pLShEbnQ9MypNYXRoLm1heCgtOCxNYXRoLm1pbig4LE1hdGguZmxvb3IoaS8zKSkpKSsxLHI9by5sZW5ndGg7cmV0dXJuIGE9PT1yP286YT5yP28rbmV3IEFycmF5KGEtcisxKS5qb2luKCIwIik6YT4wP28uc2xpY2UoMCxhKSsiLiIrby5zbGljZShhKToiMC4iK25ldyBBcnJheSgxLWEpLmpvaW4oIjAiKStrbnQodCxNYXRoLm1heCgwLGUrYS0xKSlbMF19LFg6ZnVuY3Rpb24odCl7cmV0dXJuIE1hdGgucm91bmQodCkudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCl9LHg6ZnVuY3Rpb24odCl7cmV0dXJuIE1hdGgucm91bmQodCkudG9TdHJpbmcoMTYpfX07ZnVuY3Rpb24gSG50KHQpe3JldHVybiB0fXZhciBGbnQsTG50LEJudCxWbnQ9QXJyYXkucHJvdG90eXBlLm1hcCxqbnQ9WyJ5IiwieiIsImEiLCJmIiwicCIsIm4iLCLCtSIsIm0iLCIiLCJrIiwiTSIsIkciLCJUIiwiUCIsIkUiLCJaIiwiWSJdO2Z1bmN0aW9uIFVudCh0KXt2YXIgZT12b2lkIDA9PT10Lmdyb3VwaW5nfHx2b2lkIDA9PT10LnRob3VzYW5kcz9IbnQ6KGZ1bmN0aW9uIG4odCxlKXtyZXR1cm4gZnVuY3Rpb24obixvKXtmb3IodmFyIGk9bi5sZW5ndGgsYT1bXSxyPTAscz10WzBdLGw9MDtpPjAmJnM+MCYmKGwrcysxPm8mJihzPU1hdGgubWF4KDEsby1sKSksYS5wdXNoKG4uc3Vic3RyaW5nKGktPXMsaStzKSksISgobCs9cysxKT5vKSk7KXM9dFtyPShyKzEpJXQubGVuZ3RoXTtyZXR1cm4gYS5yZXZlcnNlKCkuam9pbihlKX19KShWbnQuY2FsbCh0Lmdyb3VwaW5nLE51bWJlciksdC50aG91c2FuZHMrIiIpLG89dm9pZCAwPT09dC5jdXJyZW5jeT8iIjp0LmN1cnJlbmN5WzBdKyIiLGk9dm9pZCAwPT09dC5jdXJyZW5jeT8iIjp0LmN1cnJlbmN5WzFdKyIiLGE9dm9pZCAwPT09dC5kZWNpbWFsPyIuIjp0LmRlY2ltYWwrIiIscj12b2lkIDA9PT10Lm51bWVyYWxzP0hudDooZnVuY3Rpb24gcyh0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIGUucmVwbGFjZSgvWzAtOV0vZywoZnVuY3Rpb24oZSl7cmV0dXJuIHRbK2VdfSkpfX0pKFZudC5jYWxsKHQubnVtZXJhbHMsU3RyaW5nKSksbD12b2lkIDA9PT10LnBlcmNlbnQ/IiUiOnQucGVyY2VudCsiIixjPXZvaWQgMD09PXQubWludXM/Ii0iOnQubWludXMrIiIsZD12b2lkIDA9PT10Lm5hbj8iTmFOIjp0Lm5hbisiIjtmdW5jdGlvbiBwKHQpe3ZhciBuPSh0PUVudCh0KSkuZmlsbCxzPXQuYWxpZ24scD10LnNpZ24sbT10LnN5bWJvbCxmPXQuemVybyx1PXQud2lkdGgsZz10LmNvbW1hLGg9dC5wcmVjaXNpb24sYj10LnRyaW0seT10LnR5cGU7Im4iPT09eT8oZz0hMCx5PSJnIik6Tm50W3ldfHwodm9pZCAwPT09aCYmKGg9MTIpLGI9ITAseT0iZyIpLChmfHwiMCI9PT1uJiYiPSI9PT1zKSYmKGY9ITAsbj0iMCIscz0iPSIpO3ZhciBfPSIkIj09PW0/bzoiIyI9PT1tJiYvW2JveFhdLy50ZXN0KHkpPyIwIit5LnRvTG93ZXJDYXNlKCk6IiIsQz0iJCI9PT1tP2k6L1slcF0vLnRlc3QoeSk/bDoiIixNPU5udFt5XSx2PS9bZGVmZ3BycyVdLy50ZXN0KHkpO2Z1bmN0aW9uIHgodCl7dmFyIG8saSxsLG09Xyx4PUM7aWYoImMiPT09eSl4PU0odCkreCx0PSIiO2Vsc2V7dmFyIE89KHQ9K3QpPDB8fDEvdDwwO2lmKHQ9aXNOYU4odCk/ZDpNKE1hdGguYWJzKHQpLGgpLGImJih0PShmdW5jdGlvbiBQKHQpe3Q6Zm9yKHZhciBlLG49dC5sZW5ndGgsbz0xLGk9LTE7bzxuOysrbylzd2l0Y2godFtvXSl7Y2FzZSIuIjppPWU9bzticmVhaztjYXNlIjAiOjA9PT1pJiYoaT1vKSxlPW87YnJlYWs7ZGVmYXVsdDppZighK3Rbb10pYnJlYWsgdDtpPjAmJihpPTApfXJldHVybiBpPjA/dC5zbGljZSgwLGkpK3Quc2xpY2UoZSsxKTp0fSkodCkpLE8mJjA9PSt0JiYiKyIhPT1wJiYoTz0hMSksbT0oTz8iKCI9PT1wP3A6YzoiLSI9PT1wfHwiKCI9PT1wPyIiOnApK20seD0oInMiPT09eT9qbnRbOCtEbnQvM106IiIpK3grKE8mJiIoIj09PXA/IikiOiIiKSx2KWZvcihvPS0xLGk9dC5sZW5ndGg7KytvPGk7KWlmKDQ4PihsPXQuY2hhckNvZGVBdChvKSl8fGw+NTcpe3g9KDQ2PT09bD9hK3Quc2xpY2UobysxKTp0LnNsaWNlKG8pKSt4LHQ9dC5zbGljZSgwLG8pO2JyZWFrfX1nJiYhZiYmKHQ9ZSh0LDEvMCkpO3ZhciB3PW0ubGVuZ3RoK3QubGVuZ3RoK3gubGVuZ3RoLGs9dzx1P25ldyBBcnJheSh1LXcrMSkuam9pbihuKToiIjtzd2l0Y2goZyYmZiYmKHQ9ZShrK3Qsay5sZW5ndGg/dS14Lmxlbmd0aDoxLzApLGs9IiIpLHMpe2Nhc2UiPCI6dD1tK3QreCtrO2JyZWFrO2Nhc2UiPSI6dD1tK2srdCt4O2JyZWFrO2Nhc2UiXiI6dD1rLnNsaWNlKDAsdz1rLmxlbmd0aD4+MSkrbSt0K3gray5zbGljZSh3KTticmVhaztkZWZhdWx0OnQ9ayttK3QreH1yZXR1cm4gcih0KX1yZXR1cm4gaD12b2lkIDA9PT1oPzY6L1tncHJzXS8udGVzdCh5KT9NYXRoLm1heCgxLE1hdGgubWluKDIxLGgpKTpNYXRoLm1heCgwLE1hdGgubWluKDIwLGgpKSx4LnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHQrIiJ9LHh9cmV0dXJue2Zvcm1hdDpwLGZvcm1hdFByZWZpeDpmdW5jdGlvbiBtKHQsZSl7dmFyIG49cCgoKHQ9RW50KHQpKS50eXBlPSJmIix0KSksbz0zKk1hdGgubWF4KC04LE1hdGgubWluKDgsTWF0aC5mbG9vcihTbnQoZSkvMykpKSxpPU1hdGgucG93KDEwLC1vKSxhPWpudFs4K28vM107cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBuKGkqdCkrYX19fX1mdW5jdGlvbiBXbnQodCxlKXtzd2l0Y2goYXJndW1lbnRzLmxlbmd0aCl7Y2FzZSAwOmJyZWFrO2Nhc2UgMTp0aGlzLnJhbmdlKHQpO2JyZWFrO2RlZmF1bHQ6dGhpcy5yYW5nZShlKS5kb21haW4odCl9cmV0dXJuIHRoaXN9IShmdW5jdGlvbiBHbnQodCl7cmV0dXJuIEZudD1VbnQodCksTG50PUZudC5mb3JtYXQsQm50PUZudC5mb3JtYXRQcmVmaXgsRm50fSkoe2RlY2ltYWw6Ii4iLHRob3VzYW5kczoiLCIsZ3JvdXBpbmc6WzNdLGN1cnJlbmN5OlsiJCIsIiJdLG1pbnVzOiItIn0pO3ZhciBZbnQ9QXJyYXkucHJvdG90eXBlLHFudD1ZbnQubWFwLFpudD1ZbnQuc2xpY2UsWG50PXtuYW1lOiJpbXBsaWNpdCJ9O2Z1bmN0aW9uIEtudCgpe3ZhciB0PU9udCgpLGU9W10sbj1bXSxvPVhudDtmdW5jdGlvbiBpKGkpe3ZhciBhPWkrIiIscj10LmdldChhKTtpZighcil7aWYobyE9PVhudClyZXR1cm4gbzt0LnNldChhLHI9ZS5wdXNoKGkpKX1yZXR1cm4gblsoci0xKSVuLmxlbmd0aF19cmV0dXJuIGkuZG9tYWluPWZ1bmN0aW9uKG4pe2lmKCFhcmd1bWVudHMubGVuZ3RoKXJldHVybiBlLnNsaWNlKCk7ZT1bXSx0PU9udCgpO2Zvcih2YXIgbyxhLHI9LTEscz1uLmxlbmd0aDsrK3I8czspdC5oYXMoYT0obz1uW3JdKSsiIil8fHQuc2V0KGEsZS5wdXNoKG8pKTtyZXR1cm4gaX0saS5yYW5nZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj1abnQuY2FsbCh0KSxpKTpuLnNsaWNlKCl9LGkudW5rbm93bj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz10LGkpOm99LGkuY29weT1mdW5jdGlvbigpe3JldHVybiBLbnQoZSxuKS51bmtub3duKG8pfSxXbnQuYXBwbHkoaSxhcmd1bWVudHMpLGl9ZnVuY3Rpb24gSm50KCl7dmFyIHQsZSxuPUtudCgpLnVua25vd24odm9pZCAwKSxvPW4uZG9tYWluLGk9bi5yYW5nZSxhPVswLDFdLHI9ITEscz0wLGw9MCxjPS41O2Z1bmN0aW9uIGQoKXt2YXIgbj1vKCkubGVuZ3RoLGQ9YVsxXTxhWzBdLHA9YVtkLTBdLG09YVsxLWRdO3Q9KG0tcCkvTWF0aC5tYXgoMSxuLXMrMipsKSxyJiYodD1NYXRoLmZsb29yKHQpKSxwKz0obS1wLXQqKG4tcykpKmMsZT10KigxLXMpLHImJihwPU1hdGgucm91bmQocCksZT1NYXRoLnJvdW5kKGUpKTt2YXIgZj1NNihuKS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiBwK3QqZX0pKTtyZXR1cm4gaShkP2YucmV2ZXJzZSgpOmYpfXJldHVybiBkZWxldGUgbi51bmtub3duLG4uZG9tYWluPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvKHQpLGQoKSk6bygpfSxuLnJhbmdlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPVsrdFswXSwrdFsxXV0sZCgpKTphLnNsaWNlKCl9LG4ucmFuZ2VSb3VuZD1mdW5jdGlvbih0KXtyZXR1cm4gYT1bK3RbMF0sK3RbMV1dLHI9ITAsZCgpfSxuLmJhbmR3aWR0aD1mdW5jdGlvbigpe3JldHVybiBlfSxuLnN0ZXA9ZnVuY3Rpb24oKXtyZXR1cm4gdH0sbi5yb3VuZD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj0hIXQsZCgpKTpyfSxuLnBhZGRpbmc9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9TWF0aC5taW4oMSxsPSt0KSxkKCkpOnN9LG4ucGFkZGluZ0lubmVyPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhzPU1hdGgubWluKDEsdCksZCgpKTpzfSxuLnBhZGRpbmdPdXRlcj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obD0rdCxkKCkpOmx9LG4uYWxpZ249ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGM9TWF0aC5tYXgoMCxNYXRoLm1pbigxLHQpKSxkKCkpOmN9LG4uY29weT1mdW5jdGlvbigpe3JldHVybiBKbnQobygpLGEpLnJvdW5kKHIpLnBhZGRpbmdJbm5lcihzKS5wYWRkaW5nT3V0ZXIobCkuYWxpZ24oYyl9LFdudC5hcHBseShkKCksYXJndW1lbnRzKX1mdW5jdGlvbiBRbnQodCl7dmFyIGU9dC5jb3B5O3JldHVybiB0LnBhZGRpbmc9dC5wYWRkaW5nT3V0ZXIsZGVsZXRlIHQucGFkZGluZ0lubmVyLGRlbGV0ZSB0LnBhZGRpbmdPdXRlcix0LmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gUW50KGUoKSl9LHR9ZnVuY3Rpb24gJG50KCl7cmV0dXJuIFFudChKbnQuYXBwbHkobnVsbCxhcmd1bWVudHMpLnBhZGRpbmdJbm5lcigxKSl9ZnVuY3Rpb24gdG90KHQpe3JldHVybit0fXZhciBlb3Q9WzAsMV07ZnVuY3Rpb24gbm90KHQpe3JldHVybiB0fWZ1bmN0aW9uIG9vdCh0LGUpe3JldHVybihlLT10PSt0KT9mdW5jdGlvbihuKXtyZXR1cm4obi10KS9lfTooZnVuY3Rpb24gbih0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19KShpc05hTihlKT9OYU46LjUpfWZ1bmN0aW9uIGlvdCh0KXt2YXIgZSxuPXRbMF0sbz10W3QubGVuZ3RoLTFdO3JldHVybiBuPm8mJihlPW4sbj1vLG89ZSksZnVuY3Rpb24odCl7cmV0dXJuIE1hdGgubWF4KG4sTWF0aC5taW4obyx0KSl9fWZ1bmN0aW9uIGFvdCh0LGUsbil7dmFyIG89dFswXSxpPXRbMV0sYT1lWzBdLHI9ZVsxXTtyZXR1cm4gaTxvPyhvPW9vdChpLG8pLGE9bihyLGEpKToobz1vb3QobyxpKSxhPW4oYSxyKSksZnVuY3Rpb24odCl7cmV0dXJuIGEobyh0KSl9fWZ1bmN0aW9uIHJvdCh0LGUsbil7dmFyIG89TWF0aC5taW4odC5sZW5ndGgsZS5sZW5ndGgpLTEsaT1uZXcgQXJyYXkobyksYT1uZXcgQXJyYXkobykscj0tMTtmb3IodFtvXTx0WzBdJiYodD10LnNsaWNlKCkucmV2ZXJzZSgpLGU9ZS5zbGljZSgpLnJldmVyc2UoKSk7KytyPG87KWlbcl09b290KHRbcl0sdFtyKzFdKSxhW3JdPW4oZVtyXSxlW3IrMV0pO3JldHVybiBmdW5jdGlvbihlKXt2YXIgbj1oNih0LGUsMSxvKS0xO3JldHVybiBhW25dKGlbbl0oZSkpfX1mdW5jdGlvbiBzb3QodCxlKXtyZXR1cm4gZS5kb21haW4odC5kb21haW4oKSkucmFuZ2UodC5yYW5nZSgpKS5pbnRlcnBvbGF0ZSh0LmludGVycG9sYXRlKCkpLmNsYW1wKHQuY2xhbXAoKSkudW5rbm93bih0LnVua25vd24oKSl9ZnVuY3Rpb24gbG90KCl7dmFyIHQsZSxuLG8saSxhLHI9ZW90LHM9ZW90LGw9dHR0LGM9bm90O2Z1bmN0aW9uIGQoKXtyZXR1cm4gbz1NYXRoLm1pbihyLmxlbmd0aCxzLmxlbmd0aCk+Mj9yb3Q6YW90LGk9YT1udWxsLHB9ZnVuY3Rpb24gcChlKXtyZXR1cm4gaXNOYU4oZT0rZSk/bjooaXx8KGk9byhyLm1hcCh0KSxzLGwpKSkodChjKGUpKSl9cmV0dXJuIHAuaW52ZXJ0PWZ1bmN0aW9uKG4pe3JldHVybiBjKGUoKGF8fChhPW8ocyxyLm1hcCh0KSxYOSkpKShuKSkpfSxwLmRvbWFpbj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj1xbnQuY2FsbCh0LHRvdCksYz09PW5vdHx8KGM9aW90KHIpKSxkKCkpOnIuc2xpY2UoKX0scC5yYW5nZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocz1abnQuY2FsbCh0KSxkKCkpOnMuc2xpY2UoKX0scC5yYW5nZVJvdW5kPWZ1bmN0aW9uKHQpe3JldHVybiBzPVpudC5jYWxsKHQpLGw9ZXR0LGQoKX0scC5jbGFtcD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYz10P2lvdChyKTpub3QscCk6YyE9PW5vdH0scC5pbnRlcnBvbGF0ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obD10LGQoKSk6bH0scC51bmtub3duPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPXQscCk6bn0sZnVuY3Rpb24obixvKXtyZXR1cm4gdD1uLGU9byxkKCl9fWZ1bmN0aW9uIGNvdCh0LGUpe3JldHVybiBsb3QoKSh0LGUpfWZ1bmN0aW9uIGRvdCh0LGUsbixvKXt2YXIgaSxhPWs2KHQsZSxuKTtzd2l0Y2goKG89RW50KG51bGw9PW8/IixmIjpvKSkudHlwZSl7Y2FzZSJzIjp2YXIgcj1NYXRoLm1heChNYXRoLmFicyh0KSxNYXRoLmFicyhlKSk7cmV0dXJuIG51bGwhPW8ucHJlY2lzaW9ufHxpc05hTihpPShmdW5jdGlvbiBzKHQsZSl7cmV0dXJuIE1hdGgubWF4KDAsMypNYXRoLm1heCgtOCxNYXRoLm1pbig4LE1hdGguZmxvb3IoU250KGUpLzMpKSktU250KE1hdGguYWJzKHQpKSl9KShhLHIpKXx8KG8ucHJlY2lzaW9uPWkpLEJudChvLHIpO2Nhc2UiIjpjYXNlImUiOmNhc2UiZyI6Y2FzZSJwIjpjYXNlInIiOm51bGwhPW8ucHJlY2lzaW9ufHxpc05hTihpPShmdW5jdGlvbiBsKHQsZSl7cmV0dXJuIHQ9TWF0aC5hYnModCksZT1NYXRoLmFicyhlKS10LE1hdGgubWF4KDAsU250KGUpLVNudCh0KSkrMX0pKGEsTWF0aC5tYXgoTWF0aC5hYnModCksTWF0aC5hYnMoZSkpKSl8fChvLnByZWNpc2lvbj1pLSgiZSI9PT1vLnR5cGUpKTticmVhaztjYXNlImYiOmNhc2UiJSI6bnVsbCE9by5wcmVjaXNpb258fGlzTmFOKGk9KGZ1bmN0aW9uIGModCl7cmV0dXJuIE1hdGgubWF4KDAsLVNudChNYXRoLmFicyh0KSkpfSkoYSkpfHwoby5wcmVjaXNpb249aS0yKigiJSI9PT1vLnR5cGUpKX1yZXR1cm4gTG50KG8pfWZ1bmN0aW9uIHBvdCh0KXt2YXIgZT10LmRvbWFpbjtyZXR1cm4gdC50aWNrcz1mdW5jdGlvbih0KXt2YXIgbj1lKCk7cmV0dXJuIFA2KG5bMF0sbltuLmxlbmd0aC0xXSxudWxsPT10PzEwOnQpfSx0LnRpY2tGb3JtYXQ9ZnVuY3Rpb24odCxuKXt2YXIgbz1lKCk7cmV0dXJuIGRvdChvWzBdLG9bby5sZW5ndGgtMV0sbnVsbD09dD8xMDp0LG4pfSx0Lm5pY2U9ZnVuY3Rpb24obil7bnVsbD09biYmKG49MTApO3ZhciBvLGk9ZSgpLGE9MCxyPWkubGVuZ3RoLTEscz1pW2FdLGw9aVtyXTtyZXR1cm4gbDxzJiYobz1zLHM9bCxsPW8sbz1hLGE9cixyPW8pLChvPXc2KHMsbCxuKSk+MD9vPXc2KHM9TWF0aC5mbG9vcihzL28pKm8sbD1NYXRoLmNlaWwobC9vKSpvLG4pOm88MCYmKG89dzYocz1NYXRoLmNlaWwocypvKS9vLGw9TWF0aC5mbG9vcihsKm8pL28sbikpLG8+MD8oaVthXT1NYXRoLmZsb29yKHMvbykqbyxpW3JdPU1hdGguY2VpbChsL28pKm8sZShpKSk6bzwwJiYoaVthXT1NYXRoLmNlaWwocypvKS9vLGlbcl09TWF0aC5mbG9vcihsKm8pL28sZShpKSksdH0sdH1mdW5jdGlvbiBtb3QoKXt2YXIgdD1jb3Qobm90LG5vdCk7cmV0dXJuIHQuY29weT1mdW5jdGlvbigpe3JldHVybiBzb3QodCxtb3QoKSl9LFdudC5hcHBseSh0LGFyZ3VtZW50cykscG90KHQpfWZ1bmN0aW9uIGZvdCh0LGUpe3ZhciBuLG89MCxpPSh0PXQuc2xpY2UoKSkubGVuZ3RoLTEsYT10W29dLHI9dFtpXTtyZXR1cm4gcjxhJiYobj1vLG89aSxpPW4sbj1hLGE9cixyPW4pLHRbb109ZS5mbG9vcihhKSx0W2ldPWUuY2VpbChyKSx0fWZ1bmN0aW9uIHVvdCh0KXtyZXR1cm4gTWF0aC5sb2codCl9ZnVuY3Rpb24gZ290KHQpe3JldHVybiBNYXRoLmV4cCh0KX1mdW5jdGlvbiBob3QodCl7cmV0dXJuLU1hdGgubG9nKC10KX1mdW5jdGlvbiBib3QodCl7cmV0dXJuLU1hdGguZXhwKC10KX1mdW5jdGlvbiB5b3QodCl7cmV0dXJuIGlzRmluaXRlKHQpPysoIjFlIit0KTp0PDA/MDp0fWZ1bmN0aW9uIF9vdCh0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuLXQoLWUpfX1mdW5jdGlvbiBDb3QodCl7dmFyIGUsbixvPXQodW90LGdvdCksaT1vLmRvbWFpbixhPTEwO2Z1bmN0aW9uIHIoKXtyZXR1cm4gZT0oZnVuY3Rpb24gcih0KXtyZXR1cm4gdD09PU1hdGguRT9NYXRoLmxvZzoxMD09PXQmJk1hdGgubG9nMTB8fDI9PT10JiZNYXRoLmxvZzJ8fCh0PU1hdGgubG9nKHQpLGZ1bmN0aW9uKGUpe3JldHVybiBNYXRoLmxvZyhlKS90fSl9KShhKSxuPShmdW5jdGlvbiBzKHQpe3JldHVybiAxMD09PXQ/eW90OnQ9PT1NYXRoLkU/TWF0aC5leHA6ZnVuY3Rpb24oZSl7cmV0dXJuIE1hdGgucG93KHQsZSl9fSkoYSksaSgpWzBdPDA/KGU9X290KGUpLG49X290KG4pLHQoaG90LGJvdCkpOnQodW90LGdvdCksb31yZXR1cm4gby5iYXNlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPSt0LHIoKSk6YX0sby5kb21haW49ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGkodCkscigpKTppKCl9LG8udGlja3M9ZnVuY3Rpb24odCl7dmFyIG8scj1pKCkscz1yWzBdLGw9cltyLmxlbmd0aC0xXTsobz1sPHMpJiYobT1zLHM9bCxsPW0pO3ZhciBjLGQscCxtPWUocyksZj1lKGwpLHU9bnVsbD09dD8xMDordCxnPVtdO2lmKCEoYSUxKSYmZi1tPHUpe2lmKG09TWF0aC5yb3VuZChtKS0xLGY9TWF0aC5yb3VuZChmKSsxLHM+MCl7Zm9yKDttPGY7KyttKWZvcihkPTEsYz1uKG0pO2Q8YTsrK2QpaWYoISgocD1jKmQpPHMpKXtpZihwPmwpYnJlYWs7Zy5wdXNoKHApfX1lbHNlIGZvcig7bTxmOysrbSlmb3IoZD1hLTEsYz1uKG0pO2Q+PTE7LS1kKWlmKCEoKHA9YypkKTxzKSl7aWYocD5sKWJyZWFrO2cucHVzaChwKX19ZWxzZSBnPVA2KG0sZixNYXRoLm1pbihmLW0sdSkpLm1hcChuKTtyZXR1cm4gbz9nLnJldmVyc2UoKTpnfSxvLnRpY2tGb3JtYXQ9ZnVuY3Rpb24odCxpKXtpZihudWxsPT1pJiYoaT0xMD09PWE/Ii4wZSI6IiwiKSwiZnVuY3Rpb24iIT10eXBlb2YgaSYmKGk9TG50KGkpKSx0PT09MS8wKXJldHVybiBpO251bGw9PXQmJih0PTEwKTt2YXIgcj1NYXRoLm1heCgxLGEqdC9vLnRpY2tzKCkubGVuZ3RoKTtyZXR1cm4gZnVuY3Rpb24odCl7dmFyIG89dC9uKE1hdGgucm91bmQoZSh0KSkpO3JldHVybiBvKmE8YS0uNSYmKG8qPWEpLG88PXI/aSh0KToiIn19LG8ubmljZT1mdW5jdGlvbigpe3JldHVybiBpKGZvdChpKCkse2Zsb29yOmZ1bmN0aW9uKHQpe3JldHVybiBuKE1hdGguZmxvb3IoZSh0KSkpfSxjZWlsOmZ1bmN0aW9uKHQpe3JldHVybiBuKE1hdGguY2VpbChlKHQpKSl9fSkpfSxvfWZ1bmN0aW9uIE1vdCgpe3ZhciB0PUNvdChsb3QoKSkuZG9tYWluKFsxLDEwXSk7cmV0dXJuIHQuY29weT1mdW5jdGlvbigpe3JldHVybiBzb3QodCxNb3QoKSkuYmFzZSh0LmJhc2UoKSl9LFdudC5hcHBseSh0LGFyZ3VtZW50cyksdH12YXIgdm90PW5ldyBEYXRlLHhvdD1uZXcgRGF0ZTtmdW5jdGlvbiBPb3QodCxlLG4sbyl7ZnVuY3Rpb24gaShlKXtyZXR1cm4gdChlPTA9PT1hcmd1bWVudHMubGVuZ3RoP25ldyBEYXRlOm5ldyBEYXRlKCtlKSksZX1yZXR1cm4gaS5mbG9vcj1mdW5jdGlvbihlKXtyZXR1cm4gdChlPW5ldyBEYXRlKCtlKSksZX0saS5jZWlsPWZ1bmN0aW9uKG4pe3JldHVybiB0KG49bmV3IERhdGUobi0xKSksZShuLDEpLHQobiksbn0saS5yb3VuZD1mdW5jdGlvbih0KXt2YXIgZT1pKHQpLG49aS5jZWlsKHQpO3JldHVybiB0LWU8bi10P2U6bn0saS5vZmZzZXQ9ZnVuY3Rpb24odCxuKXtyZXR1cm4gZSh0PW5ldyBEYXRlKCt0KSxudWxsPT1uPzE6TWF0aC5mbG9vcihuKSksdH0saS5yYW5nZT1mdW5jdGlvbihuLG8sYSl7dmFyIHIscz1bXTtpZihuPWkuY2VpbChuKSxhPW51bGw9PWE/MTpNYXRoLmZsb29yKGEpLCEobjxvJiZhPjApKXJldHVybiBzO2Rve3MucHVzaChyPW5ldyBEYXRlKCtuKSksZShuLGEpLHQobil9d2hpbGUocjxuJiZuPG8pO3JldHVybiBzfSxpLmZpbHRlcj1mdW5jdGlvbihuKXtyZXR1cm4gT290KChmdW5jdGlvbihlKXtpZihlPj1lKWZvcig7dChlKSwhbihlKTspZS5zZXRUaW1lKGUtMSl9KSwoZnVuY3Rpb24odCxvKXtpZih0Pj10KWlmKG88MClmb3IoOysrbzw9MDspZm9yKDtlKHQsLTEpLCFuKHQpOyk7ZWxzZSBmb3IoOy0tbz49MDspZm9yKDtlKHQsMSksIW4odCk7KTt9KSl9LG4mJihpLmNvdW50PWZ1bmN0aW9uKGUsbyl7cmV0dXJuIHZvdC5zZXRUaW1lKCtlKSx4b3Quc2V0VGltZSgrbyksdCh2b3QpLHQoeG90KSxNYXRoLmZsb29yKG4odm90LHhvdCkpfSxpLmV2ZXJ5PWZ1bmN0aW9uKHQpe3JldHVybiB0PU1hdGguZmxvb3IodCksaXNGaW5pdGUodCkmJnQ+MD90PjE/aS5maWx0ZXIobz9mdW5jdGlvbihlKXtyZXR1cm4gbyhlKSV0PT0wfTpmdW5jdGlvbihlKXtyZXR1cm4gaS5jb3VudCgwLGUpJXQ9PTB9KTppOm51bGx9KSxpfXZhciBQb3Q9T290KChmdW5jdGlvbigpe30pLChmdW5jdGlvbih0LGUpe3Quc2V0VGltZSgrdCtlKX0pLChmdW5jdGlvbih0LGUpe3JldHVybiBlLXR9KSk7UG90LmV2ZXJ5PWZ1bmN0aW9uKHQpe3JldHVybiB0PU1hdGguZmxvb3IodCksaXNGaW5pdGUodCkmJnQ+MD90PjE/T290KChmdW5jdGlvbihlKXtlLnNldFRpbWUoTWF0aC5mbG9vcihlL3QpKnQpfSksKGZ1bmN0aW9uKGUsbil7ZS5zZXRUaW1lKCtlK24qdCl9KSwoZnVuY3Rpb24oZSxuKXtyZXR1cm4obi1lKS90fSkpOlBvdDpudWxsfTt2YXIgd290PVBvdCxrb3Q9MWUzLFNvdD02ZTQsRG90PTM2ZTUsUm90PTg2NGU1LEVvdD02MDQ4ZTUsQW90PU9vdCgoZnVuY3Rpb24odCl7dC5zZXRUaW1lKHQtdC5nZXRNaWxsaXNlY29uZHMoKSl9KSwoZnVuY3Rpb24odCxlKXt0LnNldFRpbWUoK3QrZSprb3QpfSksKGZ1bmN0aW9uKHQsZSl7cmV0dXJuKGUtdCkva290fSksKGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldFVUQ1NlY29uZHMoKX0pKSxUb3Q9T290KChmdW5jdGlvbih0KXt0LnNldFRpbWUodC10LmdldE1pbGxpc2Vjb25kcygpLXQuZ2V0U2Vjb25kcygpKmtvdCl9KSwoZnVuY3Rpb24odCxlKXt0LnNldFRpbWUoK3QrZSpTb3QpfSksKGZ1bmN0aW9uKHQsZSl7cmV0dXJuKGUtdCkvU290fSksKGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldE1pbnV0ZXMoKX0pKSxOb3Q9T290KChmdW5jdGlvbih0KXt0LnNldFRpbWUodC10LmdldE1pbGxpc2Vjb25kcygpLXQuZ2V0U2Vjb25kcygpKmtvdC10LmdldE1pbnV0ZXMoKSpTb3QpfSksKGZ1bmN0aW9uKHQsZSl7dC5zZXRUaW1lKCt0K2UqRG90KX0pLChmdW5jdGlvbih0LGUpe3JldHVybihlLXQpL0RvdH0pLChmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXRIb3VycygpfSkpLHpvdD1Pb3QoKGZ1bmN0aW9uKHQpe3Quc2V0SG91cnMoMCwwLDAsMCl9KSwoZnVuY3Rpb24odCxlKXt0LnNldERhdGUodC5nZXREYXRlKCkrZSl9KSwoZnVuY3Rpb24odCxlKXtyZXR1cm4oZS10LShlLmdldFRpbWV6b25lT2Zmc2V0KCktdC5nZXRUaW1lem9uZU9mZnNldCgpKSpTb3QpL1JvdH0pLChmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXREYXRlKCktMX0pKTtmdW5jdGlvbiBJb3QodCl7cmV0dXJuIE9vdCgoZnVuY3Rpb24oZSl7ZS5zZXREYXRlKGUuZ2V0RGF0ZSgpLShlLmdldERheSgpKzctdCklNyksZS5zZXRIb3VycygwLDAsMCwwKX0pLChmdW5jdGlvbih0LGUpe3Quc2V0RGF0ZSh0LmdldERhdGUoKSs3KmUpfSksKGZ1bmN0aW9uKHQsZSl7cmV0dXJuKGUtdC0oZS5nZXRUaW1lem9uZU9mZnNldCgpLXQuZ2V0VGltZXpvbmVPZmZzZXQoKSkqU290KS9Fb3R9KSl9dmFyIEhvdD1Jb3QoMCksRm90PUlvdCgxKTtJb3QoMiksSW90KDMpO3ZhciBMb3Q9SW90KDQpO0lvdCg1KSxJb3QoNik7dmFyIEJvdD1Pb3QoKGZ1bmN0aW9uKHQpe3Quc2V0RGF0ZSgxKSx0LnNldEhvdXJzKDAsMCwwLDApfSksKGZ1bmN0aW9uKHQsZSl7dC5zZXRNb250aCh0LmdldE1vbnRoKCkrZSl9KSwoZnVuY3Rpb24odCxlKXtyZXR1cm4gZS5nZXRNb250aCgpLXQuZ2V0TW9udGgoKSsxMiooZS5nZXRGdWxsWWVhcigpLXQuZ2V0RnVsbFllYXIoKSl9KSwoZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0TW9udGgoKX0pKSxWb3Q9T290KChmdW5jdGlvbih0KXt0LnNldE1vbnRoKDAsMSksdC5zZXRIb3VycygwLDAsMCwwKX0pLChmdW5jdGlvbih0LGUpe3Quc2V0RnVsbFllYXIodC5nZXRGdWxsWWVhcigpK2UpfSksKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUuZ2V0RnVsbFllYXIoKS10LmdldEZ1bGxZZWFyKCl9KSwoZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0RnVsbFllYXIoKX0pKTtWb3QuZXZlcnk9ZnVuY3Rpb24odCl7cmV0dXJuIGlzRmluaXRlKHQ9TWF0aC5mbG9vcih0KSkmJnQ+MD9Pb3QoKGZ1bmN0aW9uKGUpe2Uuc2V0RnVsbFllYXIoTWF0aC5mbG9vcihlLmdldEZ1bGxZZWFyKCkvdCkqdCksZS5zZXRNb250aCgwLDEpLGUuc2V0SG91cnMoMCwwLDAsMCl9KSwoZnVuY3Rpb24oZSxuKXtlLnNldEZ1bGxZZWFyKGUuZ2V0RnVsbFllYXIoKStuKnQpfSkpOm51bGx9O3ZhciBqb3Q9Vm90LFVvdD1Pb3QoKGZ1bmN0aW9uKHQpe3Quc2V0VVRDSG91cnMoMCwwLDAsMCl9KSwoZnVuY3Rpb24odCxlKXt0LnNldFVUQ0RhdGUodC5nZXRVVENEYXRlKCkrZSl9KSwoZnVuY3Rpb24odCxlKXtyZXR1cm4oZS10KS9Sb3R9KSwoZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0VVRDRGF0ZSgpLTF9KSk7ZnVuY3Rpb24gV290KHQpe3JldHVybiBPb3QoKGZ1bmN0aW9uKGUpe2Uuc2V0VVRDRGF0ZShlLmdldFVUQ0RhdGUoKS0oZS5nZXRVVENEYXkoKSs3LXQpJTcpLGUuc2V0VVRDSG91cnMoMCwwLDAsMCl9KSwoZnVuY3Rpb24odCxlKXt0LnNldFVUQ0RhdGUodC5nZXRVVENEYXRlKCkrNyplKX0pLChmdW5jdGlvbih0LGUpe3JldHVybihlLXQpL0VvdH0pKX12YXIgR290PVdvdCgwKSxZb3Q9V290KDEpO1dvdCgyKSxXb3QoMyk7dmFyIHFvdD1Xb3QoNCk7V290KDUpLFdvdCg2KTt2YXIgWm90PU9vdCgoZnVuY3Rpb24odCl7dC5zZXRVVENNb250aCgwLDEpLHQuc2V0VVRDSG91cnMoMCwwLDAsMCl9KSwoZnVuY3Rpb24odCxlKXt0LnNldFVUQ0Z1bGxZZWFyKHQuZ2V0VVRDRnVsbFllYXIoKStlKX0pLChmdW5jdGlvbih0LGUpe3JldHVybiBlLmdldFVUQ0Z1bGxZZWFyKCktdC5nZXRVVENGdWxsWWVhcigpfSksKGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldFVUQ0Z1bGxZZWFyKCl9KSk7Wm90LmV2ZXJ5PWZ1bmN0aW9uKHQpe3JldHVybiBpc0Zpbml0ZSh0PU1hdGguZmxvb3IodCkpJiZ0PjA/T290KChmdW5jdGlvbihlKXtlLnNldFVUQ0Z1bGxZZWFyKE1hdGguZmxvb3IoZS5nZXRVVENGdWxsWWVhcigpL3QpKnQpLGUuc2V0VVRDTW9udGgoMCwxKSxlLnNldFVUQ0hvdXJzKDAsMCwwLDApfSksKGZ1bmN0aW9uKGUsbil7ZS5zZXRVVENGdWxsWWVhcihlLmdldFVUQ0Z1bGxZZWFyKCkrbip0KX0pKTpudWxsfTt2YXIgWG90PVpvdDtmdW5jdGlvbiBLb3QodCl7aWYoMDw9dC55JiZ0Lnk8MTAwKXt2YXIgZT1uZXcgRGF0ZSgtMSx0Lm0sdC5kLHQuSCx0Lk0sdC5TLHQuTCk7cmV0dXJuIGUuc2V0RnVsbFllYXIodC55KSxlfXJldHVybiBuZXcgRGF0ZSh0LnksdC5tLHQuZCx0LkgsdC5NLHQuUyx0LkwpfWZ1bmN0aW9uIEpvdCh0KXtpZigwPD10LnkmJnQueTwxMDApe3ZhciBlPW5ldyBEYXRlKERhdGUuVVRDKC0xLHQubSx0LmQsdC5ILHQuTSx0LlMsdC5MKSk7cmV0dXJuIGUuc2V0VVRDRnVsbFllYXIodC55KSxlfXJldHVybiBuZXcgRGF0ZShEYXRlLlVUQyh0LnksdC5tLHQuZCx0LkgsdC5NLHQuUyx0LkwpKX1mdW5jdGlvbiBRb3QodCxlLG4pe3JldHVybnt5OnQsbTplLGQ6bixIOjAsTTowLFM6MCxMOjB9fXZhciAkb3QsdGl0LGVpdD17Ii0iOiIiLF86IiAiLDA6IjAifSxuaXQ9L15ccypcZCsvLG9pdD0vXiUvLGlpdD0vW1xcXiQqKz98W1xdKCkue31dL2c7ZnVuY3Rpb24gYWl0KHQsZSxuKXt2YXIgbz10PDA/Ii0iOiIiLGk9KG8/LXQ6dCkrIiIsYT1pLmxlbmd0aDtyZXR1cm4gbysoYTxuP25ldyBBcnJheShuLWErMSkuam9pbihlKStpOmkpfWZ1bmN0aW9uIHJpdCh0KXtyZXR1cm4gdC5yZXBsYWNlKGlpdCwiXFwkJiIpfWZ1bmN0aW9uIHNpdCh0KXtyZXR1cm4gbmV3IFJlZ0V4cCgiXig/OiIrdC5tYXAocml0KS5qb2luKCJ8IikrIikiLCJpIil9ZnVuY3Rpb24gbGl0KHQpe2Zvcih2YXIgZT17fSxuPS0xLG89dC5sZW5ndGg7KytuPG87KWVbdFtuXS50b0xvd2VyQ2FzZSgpXT1uO3JldHVybiBlfWZ1bmN0aW9uIGNpdCh0LGUsbil7dmFyIG89bml0LmV4ZWMoZS5zbGljZShuLG4rMSkpO3JldHVybiBvPyh0Lnc9K29bMF0sbitvWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gZGl0KHQsZSxuKXt2YXIgbz1uaXQuZXhlYyhlLnNsaWNlKG4sbisxKSk7cmV0dXJuIG8/KHQudT0rb1swXSxuK29bMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBwaXQodCxlLG4pe3ZhciBvPW5pdC5leGVjKGUuc2xpY2UobixuKzIpKTtyZXR1cm4gbz8odC5VPStvWzBdLG4rb1swXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIG1pdCh0LGUsbil7dmFyIG89bml0LmV4ZWMoZS5zbGljZShuLG4rMikpO3JldHVybiBvPyh0LlY9K29bMF0sbitvWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gZml0KHQsZSxuKXt2YXIgbz1uaXQuZXhlYyhlLnNsaWNlKG4sbisyKSk7cmV0dXJuIG8/KHQuVz0rb1swXSxuK29bMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiB1aXQodCxlLG4pe3ZhciBvPW5pdC5leGVjKGUuc2xpY2UobixuKzQpKTtyZXR1cm4gbz8odC55PStvWzBdLG4rb1swXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIGdpdCh0LGUsbil7dmFyIG89bml0LmV4ZWMoZS5zbGljZShuLG4rMikpO3JldHVybiBvPyh0Lnk9K29bMF0rKCtvWzBdPjY4PzE5MDA6MmUzKSxuK29bMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBoaXQodCxlLG4pe3ZhciBvPS9eKFopfChbKy1dXGRcZCkoPzo6PyhcZFxkKSk/Ly5leGVjKGUuc2xpY2UobixuKzYpKTtyZXR1cm4gbz8odC5aPW9bMV0/MDotKG9bMl0rKG9bM118fCIwMCIpKSxuK29bMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBiaXQodCxlLG4pe3ZhciBvPW5pdC5leGVjKGUuc2xpY2UobixuKzEpKTtyZXR1cm4gbz8odC5xPTMqb1swXS0zLG4rb1swXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIHlpdCh0LGUsbil7dmFyIG89bml0LmV4ZWMoZS5zbGljZShuLG4rMikpO3JldHVybiBvPyh0Lm09b1swXS0xLG4rb1swXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIF9pdCh0LGUsbil7dmFyIG89bml0LmV4ZWMoZS5zbGljZShuLG4rMikpO3JldHVybiBvPyh0LmQ9K29bMF0sbitvWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gQ2l0KHQsZSxuKXt2YXIgbz1uaXQuZXhlYyhlLnNsaWNlKG4sbiszKSk7cmV0dXJuIG8/KHQubT0wLHQuZD0rb1swXSxuK29bMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBNaXQodCxlLG4pe3ZhciBvPW5pdC5leGVjKGUuc2xpY2UobixuKzIpKTtyZXR1cm4gbz8odC5IPStvWzBdLG4rb1swXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIHZpdCh0LGUsbil7dmFyIG89bml0LmV4ZWMoZS5zbGljZShuLG4rMikpO3JldHVybiBvPyh0Lk09K29bMF0sbitvWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24geGl0KHQsZSxuKXt2YXIgbz1uaXQuZXhlYyhlLnNsaWNlKG4sbisyKSk7cmV0dXJuIG8/KHQuUz0rb1swXSxuK29bMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBPaXQodCxlLG4pe3ZhciBvPW5pdC5leGVjKGUuc2xpY2UobixuKzMpKTtyZXR1cm4gbz8odC5MPStvWzBdLG4rb1swXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIFBpdCh0LGUsbil7dmFyIG89bml0LmV4ZWMoZS5zbGljZShuLG4rNikpO3JldHVybiBvPyh0Lkw9TWF0aC5mbG9vcihvWzBdLzFlMyksbitvWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gd2l0KHQsZSxuKXt2YXIgbz1vaXQuZXhlYyhlLnNsaWNlKG4sbisxKSk7cmV0dXJuIG8/bitvWzBdLmxlbmd0aDotMX1mdW5jdGlvbiBraXQodCxlLG4pe3ZhciBvPW5pdC5leGVjKGUuc2xpY2UobikpO3JldHVybiBvPyh0LlE9K29bMF0sbitvWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gU2l0KHQsZSxuKXt2YXIgbz1uaXQuZXhlYyhlLnNsaWNlKG4pKTtyZXR1cm4gbz8odC5zPStvWzBdLG4rb1swXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIERpdCh0LGUpe3JldHVybiBhaXQodC5nZXREYXRlKCksZSwyKX1mdW5jdGlvbiBSaXQodCxlKXtyZXR1cm4gYWl0KHQuZ2V0SG91cnMoKSxlLDIpfWZ1bmN0aW9uIEVpdCh0LGUpe3JldHVybiBhaXQodC5nZXRIb3VycygpJTEyfHwxMixlLDIpfWZ1bmN0aW9uIEFpdCh0LGUpe3JldHVybiBhaXQoMSt6b3QuY291bnQoam90KHQpLHQpLGUsMyl9ZnVuY3Rpb24gVGl0KHQsZSl7cmV0dXJuIGFpdCh0LmdldE1pbGxpc2Vjb25kcygpLGUsMyl9ZnVuY3Rpb24gTml0KHQsZSl7cmV0dXJuIFRpdCh0LGUpKyIwMDAifWZ1bmN0aW9uIHppdCh0LGUpe3JldHVybiBhaXQodC5nZXRNb250aCgpKzEsZSwyKX1mdW5jdGlvbiBJaXQodCxlKXtyZXR1cm4gYWl0KHQuZ2V0TWludXRlcygpLGUsMil9ZnVuY3Rpb24gSGl0KHQsZSl7cmV0dXJuIGFpdCh0LmdldFNlY29uZHMoKSxlLDIpfWZ1bmN0aW9uIEZpdCh0KXt2YXIgZT10LmdldERheSgpO3JldHVybiAwPT09ZT83OmV9ZnVuY3Rpb24gTGl0KHQsZSl7cmV0dXJuIGFpdChIb3QuY291bnQoam90KHQpLTEsdCksZSwyKX1mdW5jdGlvbiBCaXQodCl7dmFyIGU9dC5nZXREYXkoKTtyZXR1cm4gZT49NHx8MD09PWU/TG90KHQpOkxvdC5jZWlsKHQpfWZ1bmN0aW9uIFZpdCh0LGUpe3JldHVybiB0PUJpdCh0KSxhaXQoTG90LmNvdW50KGpvdCh0KSx0KSsoND09PWpvdCh0KS5nZXREYXkoKSksZSwyKX1mdW5jdGlvbiBqaXQodCl7cmV0dXJuIHQuZ2V0RGF5KCl9ZnVuY3Rpb24gVWl0KHQsZSl7cmV0dXJuIGFpdChGb3QuY291bnQoam90KHQpLTEsdCksZSwyKX1mdW5jdGlvbiBXaXQodCxlKXtyZXR1cm4gYWl0KHQuZ2V0RnVsbFllYXIoKSUxMDAsZSwyKX1mdW5jdGlvbiBHaXQodCxlKXtyZXR1cm4gYWl0KCh0PUJpdCh0KSkuZ2V0RnVsbFllYXIoKSUxMDAsZSwyKX1mdW5jdGlvbiBZaXQodCxlKXtyZXR1cm4gYWl0KHQuZ2V0RnVsbFllYXIoKSUxZTQsZSw0KX1mdW5jdGlvbiBxaXQodCxlKXt2YXIgbj10LmdldERheSgpO3JldHVybiBhaXQoKHQ9bj49NHx8MD09PW4/TG90KHQpOkxvdC5jZWlsKHQpKS5nZXRGdWxsWWVhcigpJTFlNCxlLDQpfWZ1bmN0aW9uIFppdCh0KXt2YXIgZT10LmdldFRpbWV6b25lT2Zmc2V0KCk7cmV0dXJuKGU+MD8iLSI6KGUqPS0xLCIrIikpK2FpdChlLzYwfDAsIjAiLDIpK2FpdChlJTYwLCIwIiwyKX1mdW5jdGlvbiBYaXQodCxlKXtyZXR1cm4gYWl0KHQuZ2V0VVRDRGF0ZSgpLGUsMil9ZnVuY3Rpb24gS2l0KHQsZSl7cmV0dXJuIGFpdCh0LmdldFVUQ0hvdXJzKCksZSwyKX1mdW5jdGlvbiBKaXQodCxlKXtyZXR1cm4gYWl0KHQuZ2V0VVRDSG91cnMoKSUxMnx8MTIsZSwyKX1mdW5jdGlvbiBRaXQodCxlKXtyZXR1cm4gYWl0KDErVW90LmNvdW50KFhvdCh0KSx0KSxlLDMpfWZ1bmN0aW9uICRpdCh0LGUpe3JldHVybiBhaXQodC5nZXRVVENNaWxsaXNlY29uZHMoKSxlLDMpfWZ1bmN0aW9uIHRhdCh0LGUpe3JldHVybiAkaXQodCxlKSsiMDAwIn1mdW5jdGlvbiBlYXQodCxlKXtyZXR1cm4gYWl0KHQuZ2V0VVRDTW9udGgoKSsxLGUsMil9ZnVuY3Rpb24gbmF0KHQsZSl7cmV0dXJuIGFpdCh0LmdldFVUQ01pbnV0ZXMoKSxlLDIpfWZ1bmN0aW9uIG9hdCh0LGUpe3JldHVybiBhaXQodC5nZXRVVENTZWNvbmRzKCksZSwyKX1mdW5jdGlvbiBpYXQodCl7dmFyIGU9dC5nZXRVVENEYXkoKTtyZXR1cm4gMD09PWU/NzplfWZ1bmN0aW9uIGFhdCh0LGUpe3JldHVybiBhaXQoR290LmNvdW50KFhvdCh0KS0xLHQpLGUsMil9ZnVuY3Rpb24gcmF0KHQpe3ZhciBlPXQuZ2V0VVRDRGF5KCk7cmV0dXJuIGU+PTR8fDA9PT1lP3FvdCh0KTpxb3QuY2VpbCh0KX1mdW5jdGlvbiBzYXQodCxlKXtyZXR1cm4gdD1yYXQodCksYWl0KHFvdC5jb3VudChYb3QodCksdCkrKDQ9PT1Yb3QodCkuZ2V0VVRDRGF5KCkpLGUsMil9ZnVuY3Rpb24gbGF0KHQpe3JldHVybiB0LmdldFVUQ0RheSgpfWZ1bmN0aW9uIGNhdCh0LGUpe3JldHVybiBhaXQoWW90LmNvdW50KFhvdCh0KS0xLHQpLGUsMil9ZnVuY3Rpb24gZGF0KHQsZSl7cmV0dXJuIGFpdCh0LmdldFVUQ0Z1bGxZZWFyKCklMTAwLGUsMil9ZnVuY3Rpb24gcGF0KHQsZSl7cmV0dXJuIGFpdCgodD1yYXQodCkpLmdldFVUQ0Z1bGxZZWFyKCklMTAwLGUsMil9ZnVuY3Rpb24gbWF0KHQsZSl7cmV0dXJuIGFpdCh0LmdldFVUQ0Z1bGxZZWFyKCklMWU0LGUsNCl9ZnVuY3Rpb24gZmF0KHQsZSl7dmFyIG49dC5nZXRVVENEYXkoKTtyZXR1cm4gYWl0KCh0PW4+PTR8fDA9PT1uP3FvdCh0KTpxb3QuY2VpbCh0KSkuZ2V0VVRDRnVsbFllYXIoKSUxZTQsZSw0KX1mdW5jdGlvbiB1YXQoKXtyZXR1cm4iKzAwMDAifWZ1bmN0aW9uIGdhdCgpe3JldHVybiIlIn1mdW5jdGlvbiBoYXQodCl7cmV0dXJuK3R9ZnVuY3Rpb24gYmF0KHQpe3JldHVybiBNYXRoLmZsb29yKCt0LzFlMyl9IShmdW5jdGlvbiB5YXQodCl7cmV0dXJuICRvdD0oZnVuY3Rpb24gZSh0KXt2YXIgZT10LmRhdGVUaW1lLG49dC5kYXRlLG89dC50aW1lLGk9dC5wZXJpb2RzLGE9dC5kYXlzLHI9dC5zaG9ydERheXMscz10Lm1vbnRocyxsPXQuc2hvcnRNb250aHMsYz1zaXQoaSksZD1saXQoaSkscD1zaXQoYSksbT1saXQoYSksZj1zaXQociksdT1saXQociksZz1zaXQocyksaD1saXQocyksYj1zaXQobCkseT1saXQobCksXz17YTpmdW5jdGlvbiBDKHQpe3JldHVybiByW3QuZ2V0RGF5KCldfSxBOmZ1bmN0aW9uIE0odCl7cmV0dXJuIGFbdC5nZXREYXkoKV19LGI6ZnVuY3Rpb24gdih0KXtyZXR1cm4gbFt0LmdldE1vbnRoKCldfSxCOmZ1bmN0aW9uIHgodCl7cmV0dXJuIHNbdC5nZXRNb250aCgpXX0sYzpudWxsLGQ6RGl0LGU6RGl0LGY6Tml0LGc6R2l0LEc6cWl0LEg6Uml0LEk6RWl0LGo6QWl0LEw6VGl0LG06eml0LE06SWl0LHA6ZnVuY3Rpb24gTyh0KXtyZXR1cm4gaVsrKHQuZ2V0SG91cnMoKT49MTIpXX0scTpmdW5jdGlvbiBQKHQpe3JldHVybiAxK35+KHQuZ2V0TW9udGgoKS8zKX0sUTpoYXQsczpiYXQsUzpIaXQsdTpGaXQsVTpMaXQsVjpWaXQsdzpqaXQsVzpVaXQseDpudWxsLFg6bnVsbCx5OldpdCxZOllpdCxaOlppdCwiJSI6Z2F0fSx3PXthOmZ1bmN0aW9uIGsodCl7cmV0dXJuIHJbdC5nZXRVVENEYXkoKV19LEE6ZnVuY3Rpb24gUyh0KXtyZXR1cm4gYVt0LmdldFVUQ0RheSgpXX0sYjpmdW5jdGlvbiBEKHQpe3JldHVybiBsW3QuZ2V0VVRDTW9udGgoKV19LEI6ZnVuY3Rpb24gUih0KXtyZXR1cm4gc1t0LmdldFVUQ01vbnRoKCldfSxjOm51bGwsZDpYaXQsZTpYaXQsZjp0YXQsZzpwYXQsRzpmYXQsSDpLaXQsSTpKaXQsajpRaXQsTDokaXQsbTplYXQsTTpuYXQscDpmdW5jdGlvbiBFKHQpe3JldHVybiBpWysodC5nZXRVVENIb3VycygpPj0xMildfSxxOmZ1bmN0aW9uIEEodCl7cmV0dXJuIDErfn4odC5nZXRVVENNb250aCgpLzMpfSxROmhhdCxzOmJhdCxTOm9hdCx1OmlhdCxVOmFhdCxWOnNhdCx3OmxhdCxXOmNhdCx4Om51bGwsWDpudWxsLHk6ZGF0LFk6bWF0LFo6dWF0LCIlIjpnYXR9LFQ9e2E6ZnVuY3Rpb24gTih0LGUsbil7dmFyIG89Zi5leGVjKGUuc2xpY2UobikpO3JldHVybiBvPyh0Lnc9dVtvWzBdLnRvTG93ZXJDYXNlKCldLG4rb1swXS5sZW5ndGgpOi0xfSxBOmZ1bmN0aW9uIHoodCxlLG4pe3ZhciBvPXAuZXhlYyhlLnNsaWNlKG4pKTtyZXR1cm4gbz8odC53PW1bb1swXS50b0xvd2VyQ2FzZSgpXSxuK29bMF0ubGVuZ3RoKTotMX0sYjpmdW5jdGlvbiBJKHQsZSxuKXt2YXIgbz1iLmV4ZWMoZS5zbGljZShuKSk7cmV0dXJuIG8/KHQubT15W29bMF0udG9Mb3dlckNhc2UoKV0sbitvWzBdLmxlbmd0aCk6LTF9LEI6ZnVuY3Rpb24gSCh0LGUsbil7dmFyIG89Zy5leGVjKGUuc2xpY2UobikpO3JldHVybiBvPyh0Lm09aFtvWzBdLnRvTG93ZXJDYXNlKCldLG4rb1swXS5sZW5ndGgpOi0xfSxjOmZ1bmN0aW9uIEYodCxuLG8pe3JldHVybiBXKHQsZSxuLG8pfSxkOl9pdCxlOl9pdCxmOlBpdCxnOmdpdCxHOnVpdCxIOk1pdCxJOk1pdCxqOkNpdCxMOk9pdCxtOnlpdCxNOnZpdCxwOmZ1bmN0aW9uIEwodCxlLG4pe3ZhciBvPWMuZXhlYyhlLnNsaWNlKG4pKTtyZXR1cm4gbz8odC5wPWRbb1swXS50b0xvd2VyQ2FzZSgpXSxuK29bMF0ubGVuZ3RoKTotMX0scTpiaXQsUTpraXQsczpTaXQsUzp4aXQsdTpkaXQsVTpwaXQsVjptaXQsdzpjaXQsVzpmaXQseDpmdW5jdGlvbiBCKHQsZSxvKXtyZXR1cm4gVyh0LG4sZSxvKX0sWDpmdW5jdGlvbiBWKHQsZSxuKXtyZXR1cm4gVyh0LG8sZSxuKX0seTpnaXQsWTp1aXQsWjpoaXQsIiUiOndpdH07ZnVuY3Rpb24gaih0LGUpe3JldHVybiBmdW5jdGlvbihuKXt2YXIgbyxpLGEscj1bXSxzPS0xLGw9MCxjPXQubGVuZ3RoO2ZvcihuIGluc3RhbmNlb2YgRGF0ZXx8KG49bmV3IERhdGUoK24pKTsrK3M8YzspMzc9PT10LmNoYXJDb2RlQXQocykmJihyLnB1c2godC5zbGljZShsLHMpKSxudWxsIT0oaT1laXRbbz10LmNoYXJBdCgrK3MpXSk/bz10LmNoYXJBdCgrK3MpOmk9ImUiPT09bz8iICI6IjAiLChhPWVbb10pJiYobz1hKG4saSkpLHIucHVzaChvKSxsPXMrMSk7cmV0dXJuIHIucHVzaCh0LnNsaWNlKGwscykpLHIuam9pbigiIil9fWZ1bmN0aW9uIFUodCxlKXtyZXR1cm4gZnVuY3Rpb24obil7dmFyIG8saSxhPVFvdCgxOTAwLHZvaWQgMCwxKTtpZihXKGEsdCxuKz0iIiwwKSE9bi5sZW5ndGgpcmV0dXJuIG51bGw7aWYoIlEiaW4gYSlyZXR1cm4gbmV3IERhdGUoYS5RKTtpZigicyJpbiBhKXJldHVybiBuZXcgRGF0ZSgxZTMqYS5zKygiTCJpbiBhP2EuTDowKSk7aWYoZSYmISgiWiJpbiBhKSYmKGEuWj0wKSwicCJpbiBhJiYoYS5IPWEuSCUxMisxMiphLnApLHZvaWQgMD09PWEubSYmKGEubT0icSJpbiBhP2EucTowKSwiViJpbiBhKXtpZihhLlY8MXx8YS5WPjUzKXJldHVybiBudWxsOyJ3ImluIGF8fChhLnc9MSksIloiaW4gYT8oaT0obz1Kb3QoUW90KGEueSwwLDEpKSkuZ2V0VVRDRGF5KCksbz1pPjR8fDA9PT1pP1lvdC5jZWlsKG8pOllvdChvKSxvPVVvdC5vZmZzZXQobyw3KihhLlYtMSkpLGEueT1vLmdldFVUQ0Z1bGxZZWFyKCksYS5tPW8uZ2V0VVRDTW9udGgoKSxhLmQ9by5nZXRVVENEYXRlKCkrKGEudys2KSU3KTooaT0obz1Lb3QoUW90KGEueSwwLDEpKSkuZ2V0RGF5KCksbz1pPjR8fDA9PT1pP0ZvdC5jZWlsKG8pOkZvdChvKSxvPXpvdC5vZmZzZXQobyw3KihhLlYtMSkpLGEueT1vLmdldEZ1bGxZZWFyKCksYS5tPW8uZ2V0TW9udGgoKSxhLmQ9by5nZXREYXRlKCkrKGEudys2KSU3KX1lbHNlKCJXImluIGF8fCJVImluIGEpJiYoInciaW4gYXx8KGEudz0idSJpbiBhP2EudSU3OiJXImluIGE/MTowKSxpPSJaImluIGE/Sm90KFFvdChhLnksMCwxKSkuZ2V0VVRDRGF5KCk6S290KFFvdChhLnksMCwxKSkuZ2V0RGF5KCksYS5tPTAsYS5kPSJXImluIGE/KGEudys2KSU3KzcqYS5XLShpKzUpJTc6YS53KzcqYS5VLShpKzYpJTcpO3JldHVybiJaImluIGE/KGEuSCs9YS5aLzEwMHwwLGEuTSs9YS5aJTEwMCxKb3QoYSkpOktvdChhKX19ZnVuY3Rpb24gVyh0LGUsbixvKXtmb3IodmFyIGksYSxyPTAscz1lLmxlbmd0aCxsPW4ubGVuZ3RoO3I8czspe2lmKG8+PWwpcmV0dXJuLTE7aWYoMzc9PT0oaT1lLmNoYXJDb2RlQXQocisrKSkpe2lmKGk9ZS5jaGFyQXQocisrKSwhKGE9VFtpIGluIGVpdD9lLmNoYXJBdChyKyspOmldKXx8KG89YSh0LG4sbykpPDApcmV0dXJuLTF9ZWxzZSBpZihpIT1uLmNoYXJDb2RlQXQobysrKSlyZXR1cm4tMX1yZXR1cm4gb31yZXR1cm4gXy54PWoobixfKSxfLlg9aihvLF8pLF8uYz1qKGUsXyksdy54PWoobix3KSx3Llg9aihvLHcpLHcuYz1qKGUsdykse2Zvcm1hdDpmdW5jdGlvbih0KXt2YXIgZT1qKHQrPSIiLF8pO3JldHVybiBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHR9LGV9LHBhcnNlOmZ1bmN0aW9uKHQpe3ZhciBlPVUodCs9IiIsITEpO3JldHVybiBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHR9LGV9LHV0Y0Zvcm1hdDpmdW5jdGlvbih0KXt2YXIgZT1qKHQrPSIiLHcpO3JldHVybiBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHR9LGV9LHV0Y1BhcnNlOmZ1bmN0aW9uKHQpe3ZhciBlPVUodCs9IiIsITApO3JldHVybiBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHR9LGV9fX0pKHQpLHRpdD0kb3QuZm9ybWF0LCRvdH0pKHtkYXRlVGltZToiJXgsICVYIixkYXRlOiIlLW0vJS1kLyVZIix0aW1lOiIlLUk6JU06JVMgJXAiLHBlcmlvZHM6WyJBTSIsIlBNIl0sZGF5czpbIlN1bmRheSIsIk1vbmRheSIsIlR1ZXNkYXkiLCJXZWRuZXNkYXkiLCJUaHVyc2RheSIsIkZyaWRheSIsIlNhdHVyZGF5Il0sc2hvcnREYXlzOlsiU3VuIiwiTW9uIiwiVHVlIiwiV2VkIiwiVGh1IiwiRnJpIiwiU2F0Il0sbW9udGhzOlsiSmFudWFyeSIsIkZlYnJ1YXJ5IiwiTWFyY2giLCJBcHJpbCIsIk1heSIsIkp1bmUiLCJKdWx5IiwiQXVndXN0IiwiU2VwdGVtYmVyIiwiT2N0b2JlciIsIk5vdmVtYmVyIiwiRGVjZW1iZXIiXSxzaG9ydE1vbnRoczpbIkphbiIsIkZlYiIsIk1hciIsIkFwciIsIk1heSIsIkp1biIsIkp1bCIsIkF1ZyIsIlNlcCIsIk9jdCIsIk5vdiIsIkRlYyJdfSk7dmFyIF9hdD0xZTMsQ2F0PTZlNCxNYXQ9MzZlNSx2YXQ9ODY0ZTUseGF0PTI1OTJlNixPYXQ9MzE1MzZlNjtmdW5jdGlvbiBQYXQodCl7cmV0dXJuIG5ldyBEYXRlKHQpfWZ1bmN0aW9uIHdhdCh0KXtyZXR1cm4gdCBpbnN0YW5jZW9mIERhdGU/K3Q6K25ldyBEYXRlKCt0KX1mdW5jdGlvbiBrYXQodCxlLG4sbyxpLGEscixzLGwpe3ZhciBjPWNvdChub3Qsbm90KSxkPWMuaW52ZXJ0LHA9Yy5kb21haW4sbT1sKCIuJUwiKSxmPWwoIjolUyIpLHU9bCgiJUk6JU0iKSxnPWwoIiVJICVwIiksaD1sKCIlYSAlZCIpLGI9bCgiJWIgJWQiKSx5PWwoIiVCIiksXz1sKCIlWSIpLEM9W1tyLDEsX2F0XSxbciw1LDVlM10sW3IsMTUsMTVlM10sW3IsMzAsM2U0XSxbYSwxLENhdF0sW2EsNSwzZTVdLFthLDE1LDllNV0sW2EsMzAsMThlNV0sW2ksMSxNYXRdLFtpLDMsMTA4ZTVdLFtpLDYsMjE2ZTVdLFtpLDEyLDQzMmU1XSxbbywxLHZhdF0sW28sMiwxNzI4ZTVdLFtuLDEsNjA0OGU1XSxbZSwxLHhhdF0sW2UsMyw3Nzc2ZTZdLFt0LDEsT2F0XV07ZnVuY3Rpb24gTShzKXtyZXR1cm4ocihzKTxzP206YShzKTxzP2Y6aShzKTxzP3U6byhzKTxzP2c6ZShzKTxzP24ocyk8cz9oOmI6dChzKTxzP3k6Xykocyl9ZnVuY3Rpb24gdihlLG4sbyxpKXtpZihudWxsPT1lJiYoZT0xMCksIm51bWJlciI9PXR5cGVvZiBlKXt2YXIgYT1NYXRoLmFicyhvLW4pL2Uscj1nNigoZnVuY3Rpb24odCl7cmV0dXJuIHRbMl19KSkucmlnaHQoQyxhKTtyPT09Qy5sZW5ndGg/KGk9azYobi9PYXQsby9PYXQsZSksZT10KTpyPyhpPShyPUNbYS9DW3ItMV1bMl08Q1tyXVsyXS9hP3ItMTpyXSlbMV0sZT1yWzBdKTooaT1NYXRoLm1heChrNihuLG8sZSksMSksZT1zKX1yZXR1cm4gbnVsbD09aT9lOmUuZXZlcnkoaSl9cmV0dXJuIGMuaW52ZXJ0PWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgRGF0ZShkKHQpKX0sYy5kb21haW49ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/cChxbnQuY2FsbCh0LHdhdCkpOnAoKS5tYXAoUGF0KX0sYy50aWNrcz1mdW5jdGlvbih0LGUpe3ZhciBuLG89cCgpLGk9b1swXSxhPW9bby5sZW5ndGgtMV0scj1hPGk7cmV0dXJuIHImJihuPWksaT1hLGE9biksbj0obj12KHQsaSxhLGUpKT9uLnJhbmdlKGksYSsxKTpbXSxyP24ucmV2ZXJzZSgpOm59LGMudGlja0Zvcm1hdD1mdW5jdGlvbih0LGUpe3JldHVybiBudWxsPT1lP006bChlKX0sYy5uaWNlPWZ1bmN0aW9uKHQsZSl7dmFyIG49cCgpO3JldHVybih0PXYodCxuWzBdLG5bbi5sZW5ndGgtMV0sZSkpP3AoZm90KG4sdCkpOmN9LGMuY29weT1mdW5jdGlvbigpe3JldHVybiBzb3QoYyxrYXQodCxlLG4sbyxpLGEscixzLGwpKX0sY31mdW5jdGlvbiBTYXQoKXtyZXR1cm4gV250LmFwcGx5KGthdChqb3QsQm90LEhvdCx6b3QsTm90LFRvdCxBb3Qsd290LHRpdCkuZG9tYWluKFtuZXcgRGF0ZSgyZTMsMCwxKSxuZXcgRGF0ZSgyZTMsMCwyKV0pLGFyZ3VtZW50cyl9ZnVuY3Rpb24gRGF0KHQpe2Zvcih2YXIgZT10Lmxlbmd0aC82fDAsbj1uZXcgQXJyYXkoZSksbz0wO288ZTspbltvXT0iIyIrdC5zbGljZSg2Km8sNiorK28pO3JldHVybiBufWZ1bmN0aW9uIFJhdCh0KXtyZXR1cm4gVTkodFt0Lmxlbmd0aC0xXSl9dmFyIEVhdD1SYXQobmV3IEFycmF5KDMpLmNvbmNhdCgiZGVlYmY3OWVjYWUxMzE4MmJkIiwiZWZmM2ZmYmRkN2U3NmJhZWQ2MjE3MWI1IiwiZWZmM2ZmYmRkN2U3NmJhZWQ2MzE4MmJkMDg1MTljIiwiZWZmM2ZmYzZkYmVmOWVjYWUxNmJhZWQ2MzE4MmJkMDg1MTljIiwiZWZmM2ZmYzZkYmVmOWVjYWUxNmJhZWQ2NDI5MmM2MjE3MWI1MDg0NTk0IiwiZjdmYmZmZGVlYmY3YzZkYmVmOWVjYWUxNmJhZWQ2NDI5MmM2MjE3MWI1MDg0NTk0IiwiZjdmYmZmZGVlYmY3YzZkYmVmOWVjYWUxNmJhZWQ2NDI5MmM2MjE3MWI1MDg1MTljMDgzMDZiIikubWFwKERhdCkpLEFhdD1SYXQobmV3IEFycmF5KDMpLmNvbmNhdCgiZjBmMGYwYmRiZGJkNjM2MzYzIiwiZjdmN2Y3Y2NjY2NjOTY5Njk2NTI1MjUyIiwiZjdmN2Y3Y2NjY2NjOTY5Njk2NjM2MzYzMjUyNTI1IiwiZjdmN2Y3ZDlkOWQ5YmRiZGJkOTY5Njk2NjM2MzYzMjUyNTI1IiwiZjdmN2Y3ZDlkOWQ5YmRiZGJkOTY5Njk2NzM3MzczNTI1MjUyMjUyNTI1IiwiZmZmZmZmZjBmMGYwZDlkOWQ5YmRiZGJkOTY5Njk2NzM3MzczNTI1MjUyMjUyNTI1IiwiZmZmZmZmZjBmMGYwZDlkOWQ5YmRiZGJkOTY5Njk2NzM3MzczNTI1MjUyMjUyNTI1MDAwMDAwIikubWFwKERhdCkpLFRhdD1SYXQobmV3IEFycmF5KDMpLmNvbmNhdCgiZmVlMGQyZmM5MjcyZGUyZDI2IiwiZmVlNWQ5ZmNhZTkxZmI2YTRhY2IxODFkIiwiZmVlNWQ5ZmNhZTkxZmI2YTRhZGUyZDI2YTUwZjE1IiwiZmVlNWQ5ZmNiYmExZmM5MjcyZmI2YTRhZGUyZDI2YTUwZjE1IiwiZmVlNWQ5ZmNiYmExZmM5MjcyZmI2YTRhZWYzYjJjY2IxODFkOTkwMDBkIiwiZmZmNWYwZmVlMGQyZmNiYmExZmM5MjcyZmI2YTRhZWYzYjJjY2IxODFkOTkwMDBkIiwiZmZmNWYwZmVlMGQyZmNiYmExZmM5MjcyZmI2YTRhZWYzYjJjY2IxODFkYTUwZjE1NjcwMDBkIikubWFwKERhdCkpO2Z1bmN0aW9uIE5hdCh0KXtyZXR1cm4gZnVuY3Rpb24gZSgpe3JldHVybiB0fX1mdW5jdGlvbiB6YXQodCl7dGhpcy5fY29udGV4dD10fWZ1bmN0aW9uIElhdCh0KXtyZXR1cm4gbmV3IHphdCh0KX1mdW5jdGlvbiBIYXQodCl7cmV0dXJuIHRbMF19ZnVuY3Rpb24gRmF0KHQpe3JldHVybiB0WzFdfWZ1bmN0aW9uIExhdCgpe3ZhciB0PUhhdCxlPUZhdCxuPU5hdCghMCksbz1udWxsLGk9SWF0LGE9bnVsbDtmdW5jdGlvbiByKHIpe3ZhciBzLGwsYyxkPXIubGVuZ3RoLHA9ITE7Zm9yKG51bGw9PW8mJihhPWkoYz1NbnQoKSkpLHM9MDtzPD1kOysrcykhKHM8ZCYmbihsPXJbc10scyxyKSk9PT1wJiYoKHA9IXApP2EubGluZVN0YXJ0KCk6YS5saW5lRW5kKCkpLHAmJmEucG9pbnQoK3QobCxzLHIpLCtlKGwscyxyKSk7aWYoYylyZXR1cm4gYT1udWxsLGMrIiJ8fG51bGx9cmV0dXJuIHIueD1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0iZnVuY3Rpb24iPT10eXBlb2YgZT9lOk5hdCgrZSkscik6dH0sci55PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6TmF0KCt0KSxyKTplfSxyLmRlZmluZWQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpOYXQoISF0KSxyKTpufSxyLmN1cnZlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPXQsbnVsbCE9byYmKGE9aShvKSkscik6aX0sci5jb250ZXh0PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhudWxsPT10P289YT1udWxsOmE9aShvPXQpLHIpOm99LHJ9ZnVuY3Rpb24gQmF0KHQsZSxuKXt0Ll9jb250ZXh0LmJlemllckN1cnZlVG8odC5feDErdC5fayoodC5feDItdC5feDApLHQuX3kxK3QuX2sqKHQuX3kyLXQuX3kwKSx0Ll94Mit0Ll9rKih0Ll94MS1lKSx0Ll95Mit0Ll9rKih0Ll95MS1uKSx0Ll94Mix0Ll95Mil9ZnVuY3Rpb24gVmF0KHQsZSl7dGhpcy5fY29udGV4dD10LHRoaXMuX2s9KDEtZSkvNn1mdW5jdGlvbiBqYXQodCxlKXt0aGlzLl9jb250ZXh0PXQsdGhpcy5fYWxwaGE9ZX16YXQucHJvdG90eXBlPXthcmVhU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPTB9LGFyZWFFbmQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPU5hTn0sbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fcG9pbnQ9MH0sbGluZUVuZDpmdW5jdGlvbigpeyh0aGlzLl9saW5lfHwwIT09dGhpcy5fbGluZSYmMT09PXRoaXMuX3BvaW50KSYmdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKSx0aGlzLl9saW5lPTEtdGhpcy5fbGluZX0scG9pbnQ6ZnVuY3Rpb24odCxlKXtzd2l0Y2godD0rdCxlPStlLHRoaXMuX3BvaW50KXtjYXNlIDA6dGhpcy5fcG9pbnQ9MSx0aGlzLl9saW5lP3RoaXMuX2NvbnRleHQubGluZVRvKHQsZSk6dGhpcy5fY29udGV4dC5tb3ZlVG8odCxlKTticmVhaztjYXNlIDE6dGhpcy5fcG9pbnQ9MjtkZWZhdWx0OnRoaXMuX2NvbnRleHQubGluZVRvKHQsZSl9fX0sVmF0LnByb3RvdHlwZT17YXJlYVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fbGluZT0wfSxhcmVhRW5kOmZ1bmN0aW9uKCl7dGhpcy5fbGluZT1OYU59LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3gwPXRoaXMuX3gxPXRoaXMuX3gyPXRoaXMuX3kwPXRoaXMuX3kxPXRoaXMuX3kyPU5hTix0aGlzLl9wb2ludD0wfSxsaW5lRW5kOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuX3BvaW50KXtjYXNlIDI6dGhpcy5fY29udGV4dC5saW5lVG8odGhpcy5feDIsdGhpcy5feTIpO2JyZWFrO2Nhc2UgMzpCYXQodGhpcyx0aGlzLl94MSx0aGlzLl95MSl9KHRoaXMuX2xpbmV8fDAhPT10aGlzLl9saW5lJiYxPT09dGhpcy5fcG9pbnQpJiZ0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpLHRoaXMuX2xpbmU9MS10aGlzLl9saW5lfSxwb2ludDpmdW5jdGlvbih0LGUpe3N3aXRjaCh0PSt0LGU9K2UsdGhpcy5fcG9pbnQpe2Nhc2UgMDp0aGlzLl9wb2ludD0xLHRoaXMuX2xpbmU/dGhpcy5fY29udGV4dC5saW5lVG8odCxlKTp0aGlzLl9jb250ZXh0Lm1vdmVUbyh0LGUpO2JyZWFrO2Nhc2UgMTp0aGlzLl9wb2ludD0yLHRoaXMuX3gxPXQsdGhpcy5feTE9ZTticmVhaztjYXNlIDI6dGhpcy5fcG9pbnQ9MztkZWZhdWx0OkJhdCh0aGlzLHQsZSl9dGhpcy5feDA9dGhpcy5feDEsdGhpcy5feDE9dGhpcy5feDIsdGhpcy5feDI9dCx0aGlzLl95MD10aGlzLl95MSx0aGlzLl95MT10aGlzLl95Mix0aGlzLl95Mj1lfX0samF0LnByb3RvdHlwZT17YXJlYVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fbGluZT0wfSxhcmVhRW5kOmZ1bmN0aW9uKCl7dGhpcy5fbGluZT1OYU59LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3gwPXRoaXMuX3gxPXRoaXMuX3gyPXRoaXMuX3kwPXRoaXMuX3kxPXRoaXMuX3kyPU5hTix0aGlzLl9sMDFfYT10aGlzLl9sMTJfYT10aGlzLl9sMjNfYT10aGlzLl9sMDFfMmE9dGhpcy5fbDEyXzJhPXRoaXMuX2wyM18yYT10aGlzLl9wb2ludD0wfSxsaW5lRW5kOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuX3BvaW50KXtjYXNlIDI6dGhpcy5fY29udGV4dC5saW5lVG8odGhpcy5feDIsdGhpcy5feTIpO2JyZWFrO2Nhc2UgMzp0aGlzLnBvaW50KHRoaXMuX3gyLHRoaXMuX3kyKX0odGhpcy5fbGluZXx8MCE9PXRoaXMuX2xpbmUmJjE9PT10aGlzLl9wb2ludCkmJnRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCksdGhpcy5fbGluZT0xLXRoaXMuX2xpbmV9LHBvaW50OmZ1bmN0aW9uKHQsZSl7aWYodD0rdCxlPStlLHRoaXMuX3BvaW50KXt2YXIgbj10aGlzLl94Mi10LG89dGhpcy5feTItZTt0aGlzLl9sMjNfYT1NYXRoLnNxcnQodGhpcy5fbDIzXzJhPU1hdGgucG93KG4qbitvKm8sdGhpcy5fYWxwaGEpKX1zd2l0Y2godGhpcy5fcG9pbnQpe2Nhc2UgMDp0aGlzLl9wb2ludD0xLHRoaXMuX2xpbmU/dGhpcy5fY29udGV4dC5saW5lVG8odCxlKTp0aGlzLl9jb250ZXh0Lm1vdmVUbyh0LGUpO2JyZWFrO2Nhc2UgMTp0aGlzLl9wb2ludD0yO2JyZWFrO2Nhc2UgMjp0aGlzLl9wb2ludD0zO2RlZmF1bHQ6IShmdW5jdGlvbiBpKHQsZSxuKXt2YXIgbz10Ll94MSxpPXQuX3kxLGE9dC5feDIscj10Ll95MjtpZih0Ll9sMDFfYT4xZS0xMil7dmFyIHM9Mip0Ll9sMDFfMmErMyp0Ll9sMDFfYSp0Ll9sMTJfYSt0Ll9sMTJfMmEsbD0zKnQuX2wwMV9hKih0Ll9sMDFfYSt0Ll9sMTJfYSk7bz0obypzLXQuX3gwKnQuX2wxMl8yYSt0Ll94Mip0Ll9sMDFfMmEpL2wsaT0oaSpzLXQuX3kwKnQuX2wxMl8yYSt0Ll95Mip0Ll9sMDFfMmEpL2x9aWYodC5fbDIzX2E+MWUtMTIpe3ZhciBjPTIqdC5fbDIzXzJhKzMqdC5fbDIzX2EqdC5fbDEyX2ErdC5fbDEyXzJhLGQ9Myp0Ll9sMjNfYSoodC5fbDIzX2ErdC5fbDEyX2EpO2E9KGEqYyt0Ll94MSp0Ll9sMjNfMmEtZSp0Ll9sMTJfMmEpL2Qscj0ocipjK3QuX3kxKnQuX2wyM18yYS1uKnQuX2wxMl8yYSkvZH10Ll9jb250ZXh0LmJlemllckN1cnZlVG8obyxpLGEscix0Ll94Mix0Ll95Mil9KSh0aGlzLHQsZSl9dGhpcy5fbDAxX2E9dGhpcy5fbDEyX2EsdGhpcy5fbDEyX2E9dGhpcy5fbDIzX2EsdGhpcy5fbDAxXzJhPXRoaXMuX2wxMl8yYSx0aGlzLl9sMTJfMmE9dGhpcy5fbDIzXzJhLHRoaXMuX3gwPXRoaXMuX3gxLHRoaXMuX3gxPXRoaXMuX3gyLHRoaXMuX3gyPXQsdGhpcy5feTA9dGhpcy5feTEsdGhpcy5feTE9dGhpcy5feTIsdGhpcy5feTI9ZX19O3ZhciBVYXQ9KGZ1bmN0aW9uIHQoZSl7ZnVuY3Rpb24gbih0KXtyZXR1cm4gZT9uZXcgamF0KHQsZSk6bmV3IFZhdCh0LDApfXJldHVybiBuLmFscGhhPWZ1bmN0aW9uKGUpe3JldHVybiB0KCtlKX0sbn0pKC41KTtjb25zdCBXYXQ9MWU0LEdhdD0uMDAxLFlhdD1MbnQoIi4yfmUiKSxxYXQ9TG50KCIuNH5yIiksWmF0PUxudCgiLH4iKTtmdW5jdGlvbiBYYXQodCl7aWYoMD09PXQpcmV0dXJuIjAiO2NvbnN0IGU9TWF0aC5hYnModCk7cmV0dXJuIGU+PVdhdHx8ZTxHYXQ/WWF0KHQpOnFhdCh0KX1jb25zdCBLYXQ9e2Zvcm1hdFRpY2s6WGF0LGZvcm1hdFNob3J0OlhhdCxmb3JtYXRSZWFkYWJsZSh0KXtjb25zdCBlPU1hdGguYWJzKHQpO3JldHVybiBlPj1XYXR8fGU8R2F0P1lhdCh0KTpaYXQodCl9LGZvcm1hdExvbmc6WmF0fSxKYXQ9bmV3IEludGwuTnVtYmVyRm9ybWF0KHZvaWQgMCx7bWF4aW11bUZyYWN0aW9uRGlnaXRzOjN9KTtmdW5jdGlvbiBRYXQodCl7cmV0dXJuIEphdC5mb3JtYXQodCl9Y29uc3QgJGF0PXtmb3JtYXRUaWNrOlFhdCxmb3JtYXRTaG9ydDpRYXQsZm9ybWF0UmVhZGFibGU6UWF0LGZvcm1hdExvbmc6UWF0fSx0cnQ9TG50KCIwLjN+cyIpLGVydD1MbnQoIiwuM35mIik7ZnVuY3Rpb24gbnJ0KHQpe2NvbnN0IGU9TWF0aC5hYnModCk7cmV0dXJuIGU+PVdhdHx8ZTxHYXQ/dHJ0KHQpOmVydCh0KX1jb25zdCBvcnQ9e2Zvcm1hdFRpY2s6bnJ0LGZvcm1hdFNob3J0Om5ydCxmb3JtYXRSZWFkYWJsZTpucnQsZm9ybWF0TG9uZzpucnR9LGlydD0xZTMsYXJ0PTZlNCxycnQ9MzZlNSxzcnQ9ODY0ZTUsbHJ0PTMxNTM2ZTYsY3J0PUxudCgiLjR+Iik7ZnVuY3Rpb24gZHJ0KHQpe2lmKDA9PT10KXJldHVybiIwIjtsZXQgZT1NYXRoLnNpZ24odCk+MD8iIjoiLSI7Y29uc3Qgbj1NYXRoLmFicyh0KTtyZXR1cm4gZSs9bjxpcnQ/YCR7Y3J0KG4pfSBtc2A6bjxhcnQ/YCR7Y3J0KG4vaXJ0KX0gc2VjYDpuPHJydD9gJHtjcnQobi9hcnQpfSBtaW5gOm48c3J0P2Ake2NydChuL3JydCl9IGhyYDpuPGxydD9gJHtjcnQobi9zcnQpfSBkYXlgOmAke2NydChuL2xydCl9IHlyYCxlfWNvbnN0IHBydD17Zm9ybWF0VGljazpkcnQsZm9ybWF0U2hvcnQ6ZHJ0LGZvcm1hdFJlYWRhYmxlOmRydCxmb3JtYXRMb25nOmRydH0sbXJ0PVNhdCgpLnRpY2tGb3JtYXQoKTtsZXQgZnJ0O2NvbnN0IHVydD17Zm9ybWF0VGljazp0PT5tcnQobmV3IERhdGUodCkpLGZvcm1hdFNob3J0OnQ9Pm5ldyBEYXRlKHQpLnRvTG9jYWxlU3RyaW5nKGZydCx7eWVhcjoibnVtZXJpYyIsbW9udGg6InNob3J0IixkYXk6Im51bWVyaWMiLGhvdXI6Im51bWVyaWMiLG1pbnV0ZToibnVtZXJpYyIsc2Vjb25kOiJudW1lcmljIn0pLGZvcm1hdFJlYWRhYmxlOnQ9Pm5ldyBEYXRlKHQpLnRvTG9jYWxlU3RyaW5nKGZydCx7eWVhcjoibnVtZXJpYyIsbW9udGg6InNob3J0IixkYXk6Im51bWVyaWMiLGhvdXI6Im51bWVyaWMiLG1pbnV0ZToibnVtZXJpYyIsc2Vjb25kOiJudW1lcmljIix0aW1lWm9uZU5hbWU6InNob3J0In0pLGZvcm1hdExvbmc6dD0+bmV3IERhdGUodCkudG9Mb2NhbGVTdHJpbmcoZnJ0LHt5ZWFyOiJudW1lcmljIixtb250aDoibG9uZyIsZGF5OiJudW1lcmljIixob3VyOiJudW1lcmljIixtaW51dGU6Im51bWVyaWMiLHNlY29uZDoibnVtZXJpYyIsdGltZVpvbmVOYW1lOiJzaG9ydCIsZnJhY3Rpb25hbFNlY29uZERpZ2l0czozfSl9O2Z1bmN0aW9uIGdydCh0KXtzd2l0Y2godCl7Y2FzZSBuNi5MSU5FQVI6cmV0dXJuIG5ldyBocnQ7Y2FzZSBuNi5MT0cxMDpyZXR1cm4gbmV3IGJydDtjYXNlIG42LlRJTUU6cmV0dXJuIG5ldyB5cnQ7ZGVmYXVsdDp0aHJvdyBuZXcgUmFuZ2VFcnJvcihgU2NhbGVUeXBlICR7dH0gbm90IHN1cHBvcnRlZC5gKX19Y2xhc3MgaHJ0e2NvbnN0cnVjdG9yKCl7dGhpcy5kZWZhdWx0Rm9ybWF0dGVyPUthdH10cmFuc2Zvcm0odCxlLG4pe2NvbnN0W28saV09dCxhPWktbyxbcixzXT1lO3JldHVybiAwPT09YT9yOihzLXIpL2EqKG4tbykrcn1mb3J3YXJkKHQsZSxuKXtyZXR1cm4gdGhpcy50cmFuc2Zvcm0odCxlLG4pfXJldmVyc2UodCxlLG4pe3JldHVybiB0aGlzLnRyYW5zZm9ybShlLHQsbil9bmljZURvbWFpbih0KXtsZXRbZSxuXT10O2lmKG48ZSl0aHJvdyBuZXcgRXJyb3IoIlVuZXhwZWN0ZWQgaW5wdXQ6IG1pbiBpcyBsYXJnZXIgdGhhbiBtYXgiKTtpZihuPT09ZSlyZXR1cm4gMD09PWU/Wy0xLDFdOmU8MD9bMiplLDBdOlswLDIqZV07Y29uc3Qgbz1tb3QoKSxpPS4wNSoobi1lK051bWJlci5FUFNJTE9OKSxbYSxyXT1vLmRvbWFpbihbZS1pLG4raV0pLm5pY2UoKS5kb21haW4oKTtyZXR1cm5bYSxyXX10aWNrcyh0LGUpe3JldHVybiBtb3QoKS5kb21haW4odCkudGlja3MoZSl9aXNTYWZlTnVtYmVyKHQpe3JldHVybiBOdW1iZXIuaXNGaW5pdGUodCl9fWNsYXNzIGJydHtjb25zdHJ1Y3Rvcigpe3RoaXMuZGVmYXVsdEZvcm1hdHRlcj1LYXR9dHJhbnNmb3JtKHQpe3JldHVybiBNYXRoLmxvZzEwKHQ+MD90Ok51bWJlci5NSU5fVkFMVUUpfXVudHJhbnNmb3JtKHQpe3JldHVybiBNYXRoLmV4cCh0L01hdGguTE9HMTBFKX1mb3J3YXJkKHQsZSxuKXtpZihuPD0wKXJldHVybiBlWzBdO2NvbnN0W28saV09dCxbYSxyXT1lLHM9dGhpcy50cmFuc2Zvcm0obyksbD10aGlzLnRyYW5zZm9ybShpKS1zLGM9ci1hO3JldHVybiBuPXRoaXMudHJhbnNmb3JtKG4pLGMvKGwrTnVtYmVyLkVQU0lMT04pKihuLXMpK2F9cmV2ZXJzZSh0LGUsbil7Y29uc3RbbyxpXT10LFthLHJdPWUscz10aGlzLnRyYW5zZm9ybShvKSxsPXRoaXMudHJhbnNmb3JtKGkpO3JldHVybiB0aGlzLnVudHJhbnNmb3JtKChsLXMpLyhyLWErTnVtYmVyLkVQU0lMT04pKihuLWEpK3MpfW5pY2VEb21haW4odCl7Y29uc3RbZSxuXT10O2lmKGU+bil0aHJvdyBuZXcgRXJyb3IoIlVuZXhwZWN0ZWQgaW5wdXQ6IG1pbiBpcyBsYXJnZXIgdGhhbiBtYXgiKTtjb25zdCBvPU1hdGgubWF4KGUsTnVtYmVyLk1JTl9WQUxVRSksaT1NYXRoLm1heChuLE51bWJlci5NSU5fVkFMVUUpO3JldHVybiBuPD0wP1tOdW1iZXIuTUlOX1ZBTFVFLDFdOltNYXRoLm1heChOdW1iZXIuTUlOX1ZBTFVFLC41Km8pLDIqaV19dGlja3ModCxlKXtjb25zdCBuPXRbMF08PTA/TnVtYmVyLk1JTl9WQUxVRTp0WzBdLG89dFsxXTw9MD9OdW1iZXIuTUlOX1ZBTFVFOnRbMV0saT1Nb3QoKS5kb21haW4oW24sb10pLnRpY2tzKGUpO3JldHVybiBpLmxlbmd0aD9pOnR9aXNTYWZlTnVtYmVyKHQpe3JldHVybiBOdW1iZXIuaXNGaW5pdGUodCkmJnQ+MH19Y2xhc3MgeXJ0e2NvbnN0cnVjdG9yKCl7dGhpcy5zY2FsZT1TYXQoKSx0aGlzLmRlZmF1bHRGb3JtYXR0ZXI9dXJ0fWZvcndhcmQodCxlLG4pe3JldHVybiB0aGlzLnNjYWxlLmRvbWFpbih0KS5yYW5nZShlKShuKX1yZXZlcnNlKHQsZSxuKXtyZXR1cm4gdGhpcy5zY2FsZS5kb21haW4odCkucmFuZ2UoZSkuaW52ZXJ0KG4pLmdldFRpbWUoKX1uaWNlRG9tYWluKHQpe2NvbnN0W2Usbl09dGhpcy5zY2FsZS5kb21haW4odCkubmljZSgpLmRvbWFpbigpO3JldHVybltlLmdldFRpbWUoKSxuLmdldFRpbWUoKV19dGlja3ModCxlKXtyZXR1cm4gdGhpcy5zY2FsZS5kb21haW4odCkudGlja3MoZSkubWFwKCh0PT50LmdldFRpbWUoKSkpfWlzU2FmZU51bWJlcih0KXtyZXR1cm4gTnVtYmVyLmlzRmluaXRlKHQpfX1sZXQgX3J0PSExO2lmKHNlbGYuaGFzT3duUHJvcGVydHkoIldlYkdMMlJlbmRlcmluZ0NvbnRleHQiKSYmc2VsZi5oYXNPd25Qcm9wZXJ0eSgiZG9jdW1lbnQiKSl7Y29uc3QgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKTt0LmFkZEV2ZW50TGlzdGVuZXIoIndlYmdsY29udGV4dGNyZWF0aW9uZXJyb3IiLCgoKT0+e19ydD0hMX0pKTtjb25zdCBlPXQuZ2V0Q29udGV4dCgid2ViZ2wyIik7X3J0PUJvb2xlYW4oZSl9ZnVuY3Rpb24gQ3J0KCl7cmV0dXJuIHNlbGYuaGFzT3duUHJvcGVydHkoIk9mZnNjcmVlbkNhbnZhcyIpfWZ1bmN0aW9uIE1ydCh0LGUpe2lmKHQubGVuZ3RoIT09ZS5sZW5ndGgpcmV0dXJuITE7Zm9yKGxldCBuPTA7bjx0Lmxlbmd0aDtuKyspaWYodFtuXSE9PWVbbl0pcmV0dXJuITE7cmV0dXJuITB9Y2xhc3MgdnJ0e2NvbnN0cnVjdG9yKCl7dGhpcy54U2NhbGU9Z3J0KG42LkxJTkVBUiksdGhpcy55U2NhbGU9Z3J0KG42LkxJTkVBUiksdGhpcy5kb21Db250YWluZXJSZWN0PXt4OjAsd2lkdGg6MSx5OjAsaGVpZ2h0OjF9LHRoaXMubGFzdFVwZGF0ZWQ9MCx0aGlzLmN1cnJlbnRWaWV3Qm94UmVjdD17eDowLHdpZHRoOjEseTowLGhlaWdodDoxfX1nZXRVcGRhdGVJZGVudGlmaWVyKCl7cmV0dXJuIHRoaXMubGFzdFVwZGF0ZWR9dXBkYXRlSWRlbnRpZmllcigpe3RoaXMubGFzdFVwZGF0ZWQrK31pc1lBeGlzUG9pbnRlZERvd24oKXtyZXR1cm4hMH1zZXRYU2NhbGUodCl7dGhpcy54U2NhbGU9dCx0aGlzLnVwZGF0ZUlkZW50aWZpZXIoKX1zZXRZU2NhbGUodCl7dGhpcy55U2NhbGU9dCx0aGlzLnVwZGF0ZUlkZW50aWZpZXIoKX1nZXRDdXJyZW50Vmlld0JveFJlY3QoKXtyZXR1cm4gdGhpcy5jdXJyZW50Vmlld0JveFJlY3R9c2V0Vmlld0JveFJlY3QodCl7dGhpcy5jdXJyZW50Vmlld0JveFJlY3Q9dCx0aGlzLnVwZGF0ZUlkZW50aWZpZXIoKX1zZXREb21Db250YWluZXJSZWN0KHQpe3RoaXMuZG9tQ29udGFpbmVyUmVjdD10LHRoaXMudXBkYXRlSWRlbnRpZmllcigpfXRyYW5zZm9ybURhdGFUb1VpQ29vcmQodCxlKXtjb25zdCBuPXQsbz0oZnVuY3Rpb24gaSh0KXtyZXR1cm57eDpbdC54LHQueCt0LndpZHRoXSx5Olt0LnksdC55K3QuaGVpZ2h0XX19KSh0aGlzLmN1cnJlbnRWaWV3Qm94UmVjdCk7cmV0dXJuW3RoaXMueFNjYWxlLmZvcndhcmQoby54LFtuLngsbi54K24ud2lkdGhdLGVbMF0pLHRoaXMueVNjYWxlLmZvcndhcmQoby55LHRoaXMuaXNZQXhpc1BvaW50ZWREb3duKCk/W24ueStuLmhlaWdodCxuLnldOltuLnksbi55K24uaGVpZ2h0XSxlWzFdKV19fWZ1bmN0aW9uIHhydCh0LGUsbixvKXtjb25zdHtjb2xvcjppLHZpc2libGU6YSxvcGFjaXR5OnJ9PW87bGV0IHM9dDtyZXR1cm4gc3x8YT8ocz1udWxsIT1zP3M6ZSgpLHM9bihzKSxzLnN0eWxlLmRpc3BsYXk9YT8iIjoibm9uZSIscy5zdHlsZS5zdHJva2U9aSxzLnN0eWxlLm9wYWNpdHk9U3RyaW5nKG51bGwhPXI/cjoxKSxzKTpudWxsfWNsYXNzIE9ydHtjb25zdHJ1Y3Rvcih0KXt0aGlzLnN2Zz10fWZsdXNoKCl7fW9uUmVzaXplKHQpe31kZXN0cm95T2JqZWN0KHQpe3RoaXMuc3ZnLnJlbW92ZUNoaWxkKHQuZG9tKX1zZXRVc2VEYXJrTW9kZSh0KXt9Y3JlYXRlUGF0aERTdHJpbmcodCl7aWYoIXQubGVuZ3RoKXJldHVybiIiO2NvbnN0IGU9bmV3IEFycmF5KHQubGVuZ3RoLzIpO2VbMF09YE0ke3RbMF19LCR7dFsxXX1gO2ZvcihsZXQgbj0xO248dC5sZW5ndGgvMjtuKyspZVtuXT1gTCR7dFsyKm5dfSwke3RbMipuKzFdfWA7cmV0dXJuIGUuam9pbigiIil9Y3JlYXRlT3JVcGRhdGVMaW5lT2JqZWN0KHQsZSxuKXtjb25zdCBvPXhydChudWxsPT10P3ZvaWQgMDp0LmRvbSwoKCk9Pntjb25zdCB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCJwYXRoIik7dC5zdHlsZS5maWxsPSJub25lIjtjb25zdCBuPXRoaXMuY3JlYXRlUGF0aERTdHJpbmcoZSk7cmV0dXJuIHQuc2V0QXR0cmlidXRlKCJkIixuKSx0aGlzLnN2Zy5hcHBlbmRDaGlsZCh0KSx0fSksKG49PntpZighKG51bGw9PXQ/dm9pZCAwOnQuZGF0YSl8fCFNcnQoZSxudWxsPT10P3ZvaWQgMDp0LmRhdGEpKXtjb25zdCB0PXRoaXMuY3JlYXRlUGF0aERTdHJpbmcoZSk7bi5zZXRBdHRyaWJ1dGUoImQiLHQpfXJldHVybiBufSksbik7cmV0dXJuIG51bGw9PT1vP251bGw6KG8uc3R5bGUuc3Ryb2tlV2lkdGg9U3RyaW5nKG4ud2lkdGgpLHtkb206byxkYXRhOmV9KX1jcmVhdGVPclVwZGF0ZVRyaWFuZ2xlT2JqZWN0KHQsZSxuKXtjb25zdHtzaXplOm8sY29sb3I6aX09bixhPW8qTWF0aC5zcXJ0KDMpLzIscj1uZXcgRmxvYXQzMkFycmF5KFtlLngtby8yLGUueSthLzMsZS54K28vMixlLnkrYS8zLGUueCxlLnktMiphLzNdKSxzPXhydChudWxsPT10P3ZvaWQgMDp0LmRvbSwoKCk9Pntjb25zdCB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCJwYXRoIik7dC5jbGFzc0xpc3QuYWRkKCJ0cmlhbmdsZSIpLHQuc3R5bGUuZmlsbD0ibm9uZSI7Y29uc3QgZT10aGlzLmNyZWF0ZVBhdGhEU3RyaW5nKHIpO3JldHVybiB0LnNldEF0dHJpYnV0ZSgiZCIsZSsiWiIpLHRoaXMuc3ZnLmFwcGVuZENoaWxkKHQpLHR9KSwodD0+e2NvbnN0IGU9dGhpcy5jcmVhdGVQYXRoRFN0cmluZyhyKTtyZXR1cm4gdC5zZXRBdHRyaWJ1dGUoImQiLGUrIloiKSx0fSksbik7cmV0dXJuIG51bGw9PT1zP251bGw6KHMuc3R5bGUuZmlsbD1pLHtkb206cyxkYXRhOnJ9KX1jcmVhdGVPclVwZGF0ZUNpcmNsZU9iamVjdCh0LGUsbil7Y29uc3R7Y29sb3I6byxyYWRpdXM6aX09bixhPXhydChudWxsPT10P3ZvaWQgMDp0LmRvbSwoKCk9Pntjb25zdCB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCJjaXJjbGUiKTtyZXR1cm4gdC5zdHlsZS5maWxsPW8sdC5zZXRBdHRyaWJ1dGUoImN4IixTdHJpbmcoZS54KSksdC5zZXRBdHRyaWJ1dGUoImN5IixTdHJpbmcoZS55KSksdC5zZXRBdHRyaWJ1dGUoInIiLFN0cmluZyhpKSksdGhpcy5zdmcuYXBwZW5kQ2hpbGQodCksdH0pLCh0PT4odC5zdHlsZS5maWxsPW8sdC5zZXRBdHRyaWJ1dGUoImN4IixTdHJpbmcoZS54KSksdC5zZXRBdHRyaWJ1dGUoImN5IixTdHJpbmcoZS55KSksdC5zZXRBdHRyaWJ1dGUoInIiLFN0cmluZyhpKSksdCkpLG4pO3JldHVybiBudWxsPT09YT9udWxsOntkb206YSxkYXRhOmV9fWNyZWF0ZU9yVXBkYXRlVHJhcGV6b2lkT2JqZWN0KHQsZSxuLG8pe2lmKGUueSE9PW4ueSl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiSW5wdXQgZXJyb3I6IHN0YXJ0LnkgIT0gZW5kLnkuIik7Y29uc3R7YWx0aXR1ZGU6aSxjb2xvcjphfT1vLHI9Mi9NYXRoLnNxcnQoMykqaSxzPW5ldyBGbG9hdDMyQXJyYXkoW2UueC1yLzIsZS55K2kvMixlLngsZS55LWkvMixuLngsbi55LWkvMixuLngrci8yLG4ueStpLzJdKSxsPXhydChudWxsPT10P3ZvaWQgMDp0LmRvbSwoKCk9Pntjb25zdCB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCJwYXRoIik7dC5jbGFzc0xpc3QuYWRkKCJ0cmFwZXpvaWQiKSx0LnN0eWxlLmZpbGw9Im5vbmUiO2NvbnN0IGU9dGhpcy5jcmVhdGVQYXRoRFN0cmluZyhzKTtyZXR1cm4gdC5zZXRBdHRyaWJ1dGUoImQiLGUrIloiKSx0aGlzLnN2Zy5hcHBlbmRDaGlsZCh0KSx0fSksKHQ9Pntjb25zdCBlPXRoaXMuY3JlYXRlUGF0aERTdHJpbmcocyk7cmV0dXJuIHQuc2V0QXR0cmlidXRlKCJkIixlKyJaIiksdH0pLG8pO3JldHVybiBudWxsPT09bD9udWxsOihsLnN0eWxlLmZpbGw9YSx7ZG9tOmwsZGF0YTpzfSl9ZGlzcG9zZSgpe319Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCAyMDEwLTIwMjEgVGhyZWUuanMgQXV0aG9ycwogICAgICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVAogICAgICovY29uc3QgUHJ0PTEwMCx3cnQ9MzAxLGtydD0zMDIsU3J0PTMwNixEcnQ9MWUzLFJydD0xMDAxLEVydD0xMDAyLEFydD0xMDAzLFRydD0xMDA2LE5ydD0xMDA4LHpydD0xMDA5LElydD0xMDEyLEhydD0xMDE0LEZydD0xMDE1LExydD0xMDE2LEJydD0xMDIwLFZydD0xMDIyLGpydD0xMDIzLFVydD0xMDI2LFdydD0xMDI3LEdydD0yMzAwLFlydD0yMzAxLHFydD0yMzAyLFpydD0yNDAwLFhydD0yNDAxLEtydD0yNDAyLEpydD0yNTAwLFFydD0zZTMsJHJ0PTMwMDEsdHN0PTMwMDcsZXN0PTMwMDIsbnN0PTc2ODAsb3N0PTM1MDQ0LGlzdD0zNTA0OCxhc3Q9IjMwMCBlcyI7Y2xhc3MgcnN0e2FkZEV2ZW50TGlzdGVuZXIodCxlKXt2b2lkIDA9PT10aGlzLl9saXN0ZW5lcnMmJih0aGlzLl9saXN0ZW5lcnM9e30pO2NvbnN0IG49dGhpcy5fbGlzdGVuZXJzO3ZvaWQgMD09PW5bdF0mJihuW3RdPVtdKSwtMT09PW5bdF0uaW5kZXhPZihlKSYmblt0XS5wdXNoKGUpfWhhc0V2ZW50TGlzdGVuZXIodCxlKXtpZih2b2lkIDA9PT10aGlzLl9saXN0ZW5lcnMpcmV0dXJuITE7Y29uc3Qgbj10aGlzLl9saXN0ZW5lcnM7cmV0dXJuIHZvaWQgMCE9PW5bdF0mJi0xIT09blt0XS5pbmRleE9mKGUpfXJlbW92ZUV2ZW50TGlzdGVuZXIodCxlKXtpZih2b2lkIDA9PT10aGlzLl9saXN0ZW5lcnMpcmV0dXJuO2NvbnN0IG49dGhpcy5fbGlzdGVuZXJzW3RdO2lmKHZvaWQgMCE9PW4pe2NvbnN0IHQ9bi5pbmRleE9mKGUpOy0xIT09dCYmbi5zcGxpY2UodCwxKX19ZGlzcGF0Y2hFdmVudCh0KXtpZih2b2lkIDA9PT10aGlzLl9saXN0ZW5lcnMpcmV0dXJuO2NvbnN0IGU9dGhpcy5fbGlzdGVuZXJzW3QudHlwZV07aWYodm9pZCAwIT09ZSl7dC50YXJnZXQ9dGhpcztjb25zdCBuPWUuc2xpY2UoMCk7Zm9yKGxldCBlPTAsbz1uLmxlbmd0aDtlPG87ZSsrKW5bZV0uY2FsbCh0aGlzLHQpO3QudGFyZ2V0PW51bGx9fX1jb25zdCBzc3Q9W107Zm9yKGxldCB0PTA7dDwyNTY7dCsrKXNzdFt0XT0odDwxNj8iMCI6IiIpK3QudG9TdHJpbmcoMTYpO2NvbnN0IGxzdD1NYXRoLlBJLzE4MCxjc3Q9MTgwL01hdGguUEk7ZnVuY3Rpb24gZHN0KCl7Y29uc3QgdD00Mjk0OTY3Mjk1Kk1hdGgucmFuZG9tKCl8MCxlPTQyOTQ5NjcyOTUqTWF0aC5yYW5kb20oKXwwLG49NDI5NDk2NzI5NSpNYXRoLnJhbmRvbSgpfDAsbz00Mjk0OTY3Mjk1Kk1hdGgucmFuZG9tKCl8MDtyZXR1cm4oc3N0WzI1NSZ0XStzc3RbdD4+OCYyNTVdK3NzdFt0Pj4xNiYyNTVdK3NzdFt0Pj4yNCYyNTVdKyItIitzc3RbMjU1JmVdK3NzdFtlPj44JjI1NV0rIi0iK3NzdFtlPj4xNiYxNXw2NF0rc3N0W2U+PjI0JjI1NV0rIi0iK3NzdFs2MyZufDEyOF0rc3N0W24+PjgmMjU1XSsiLSIrc3N0W24+PjE2JjI1NV0rc3N0W24+PjI0JjI1NV0rc3N0WzI1NSZvXStzc3Rbbz4+OCYyNTVdK3NzdFtvPj4xNiYyNTVdK3NzdFtvPj4yNCYyNTVdKS50b1VwcGVyQ2FzZSgpfWZ1bmN0aW9uIHBzdCh0LGUsbil7cmV0dXJuIE1hdGgubWF4KGUsTWF0aC5taW4obix0KSl9ZnVuY3Rpb24gbXN0KHQsZSxuKXtyZXR1cm4oMS1uKSp0K24qZX1mdW5jdGlvbiBmc3QodCl7cmV0dXJuIDA9PSh0JnQtMSkmJjAhPT10fWZ1bmN0aW9uIHVzdCh0KXtyZXR1cm4gTWF0aC5wb3coMixNYXRoLmZsb29yKE1hdGgubG9nKHQpL01hdGguTE4yKSl9Y2xhc3MgZ3N0e2NvbnN0cnVjdG9yKHQ9MCxlPTApe3RoaXMueD10LHRoaXMueT1lfWdldCB3aWR0aCgpe3JldHVybiB0aGlzLnh9c2V0IHdpZHRoKHQpe3RoaXMueD10fWdldCBoZWlnaHQoKXtyZXR1cm4gdGhpcy55fXNldCBoZWlnaHQodCl7dGhpcy55PXR9c2V0KHQsZSl7cmV0dXJuIHRoaXMueD10LHRoaXMueT1lLHRoaXN9c2V0U2NhbGFyKHQpe3JldHVybiB0aGlzLng9dCx0aGlzLnk9dCx0aGlzfXNldFgodCl7cmV0dXJuIHRoaXMueD10LHRoaXN9c2V0WSh0KXtyZXR1cm4gdGhpcy55PXQsdGhpc31zZXRDb21wb25lbnQodCxlKXtzd2l0Y2godCl7Y2FzZSAwOnRoaXMueD1lO2JyZWFrO2Nhc2UgMTp0aGlzLnk9ZTticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiaW5kZXggaXMgb3V0IG9mIHJhbmdlOiAiK3QpfXJldHVybiB0aGlzfWdldENvbXBvbmVudCh0KXtzd2l0Y2godCl7Y2FzZSAwOnJldHVybiB0aGlzLng7Y2FzZSAxOnJldHVybiB0aGlzLnk7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoImluZGV4IGlzIG91dCBvZiByYW5nZTogIit0KX19Y2xvbmUoKXtyZXR1cm4gbmV3IHRoaXMuY29uc3RydWN0b3IodGhpcy54LHRoaXMueSl9Y29weSh0KXtyZXR1cm4gdGhpcy54PXQueCx0aGlzLnk9dC55LHRoaXN9YWRkKHQsZSl7cmV0dXJuIHZvaWQgMCE9PWU/KGNvbnNvbGUud2FybigiVEhSRUUuVmVjdG9yMjogLmFkZCgpIG5vdyBvbmx5IGFjY2VwdHMgb25lIGFyZ3VtZW50LiBVc2UgLmFkZFZlY3RvcnMoIGEsIGIgKSBpbnN0ZWFkLiIpLHRoaXMuYWRkVmVjdG9ycyh0LGUpKToodGhpcy54Kz10LngsdGhpcy55Kz10LnksdGhpcyl9YWRkU2NhbGFyKHQpe3JldHVybiB0aGlzLngrPXQsdGhpcy55Kz10LHRoaXN9YWRkVmVjdG9ycyh0LGUpe3JldHVybiB0aGlzLng9dC54K2UueCx0aGlzLnk9dC55K2UueSx0aGlzfWFkZFNjYWxlZFZlY3Rvcih0LGUpe3JldHVybiB0aGlzLngrPXQueCplLHRoaXMueSs9dC55KmUsdGhpc31zdWIodCxlKXtyZXR1cm4gdm9pZCAwIT09ZT8oY29uc29sZS53YXJuKCJUSFJFRS5WZWN0b3IyOiAuc3ViKCkgbm93IG9ubHkgYWNjZXB0cyBvbmUgYXJndW1lbnQuIFVzZSAuc3ViVmVjdG9ycyggYSwgYiApIGluc3RlYWQuIiksdGhpcy5zdWJWZWN0b3JzKHQsZSkpOih0aGlzLngtPXQueCx0aGlzLnktPXQueSx0aGlzKX1zdWJTY2FsYXIodCl7cmV0dXJuIHRoaXMueC09dCx0aGlzLnktPXQsdGhpc31zdWJWZWN0b3JzKHQsZSl7cmV0dXJuIHRoaXMueD10LngtZS54LHRoaXMueT10LnktZS55LHRoaXN9bXVsdGlwbHkodCl7cmV0dXJuIHRoaXMueCo9dC54LHRoaXMueSo9dC55LHRoaXN9bXVsdGlwbHlTY2FsYXIodCl7cmV0dXJuIHRoaXMueCo9dCx0aGlzLnkqPXQsdGhpc31kaXZpZGUodCl7cmV0dXJuIHRoaXMueC89dC54LHRoaXMueS89dC55LHRoaXN9ZGl2aWRlU2NhbGFyKHQpe3JldHVybiB0aGlzLm11bHRpcGx5U2NhbGFyKDEvdCl9YXBwbHlNYXRyaXgzKHQpe2NvbnN0IGU9dGhpcy54LG49dGhpcy55LG89dC5lbGVtZW50cztyZXR1cm4gdGhpcy54PW9bMF0qZStvWzNdKm4rb1s2XSx0aGlzLnk9b1sxXSplK29bNF0qbitvWzddLHRoaXN9bWluKHQpe3JldHVybiB0aGlzLng9TWF0aC5taW4odGhpcy54LHQueCksdGhpcy55PU1hdGgubWluKHRoaXMueSx0LnkpLHRoaXN9bWF4KHQpe3JldHVybiB0aGlzLng9TWF0aC5tYXgodGhpcy54LHQueCksdGhpcy55PU1hdGgubWF4KHRoaXMueSx0LnkpLHRoaXN9Y2xhbXAodCxlKXtyZXR1cm4gdGhpcy54PU1hdGgubWF4KHQueCxNYXRoLm1pbihlLngsdGhpcy54KSksdGhpcy55PU1hdGgubWF4KHQueSxNYXRoLm1pbihlLnksdGhpcy55KSksdGhpc31jbGFtcFNjYWxhcih0LGUpe3JldHVybiB0aGlzLng9TWF0aC5tYXgodCxNYXRoLm1pbihlLHRoaXMueCkpLHRoaXMueT1NYXRoLm1heCh0LE1hdGgubWluKGUsdGhpcy55KSksdGhpc31jbGFtcExlbmd0aCh0LGUpe2NvbnN0IG49dGhpcy5sZW5ndGgoKTtyZXR1cm4gdGhpcy5kaXZpZGVTY2FsYXIobnx8MSkubXVsdGlwbHlTY2FsYXIoTWF0aC5tYXgodCxNYXRoLm1pbihlLG4pKSl9Zmxvb3IoKXtyZXR1cm4gdGhpcy54PU1hdGguZmxvb3IodGhpcy54KSx0aGlzLnk9TWF0aC5mbG9vcih0aGlzLnkpLHRoaXN9Y2VpbCgpe3JldHVybiB0aGlzLng9TWF0aC5jZWlsKHRoaXMueCksdGhpcy55PU1hdGguY2VpbCh0aGlzLnkpLHRoaXN9cm91bmQoKXtyZXR1cm4gdGhpcy54PU1hdGgucm91bmQodGhpcy54KSx0aGlzLnk9TWF0aC5yb3VuZCh0aGlzLnkpLHRoaXN9cm91bmRUb1plcm8oKXtyZXR1cm4gdGhpcy54PXRoaXMueDwwP01hdGguY2VpbCh0aGlzLngpOk1hdGguZmxvb3IodGhpcy54KSx0aGlzLnk9dGhpcy55PDA/TWF0aC5jZWlsKHRoaXMueSk6TWF0aC5mbG9vcih0aGlzLnkpLHRoaXN9bmVnYXRlKCl7cmV0dXJuIHRoaXMueD0tdGhpcy54LHRoaXMueT0tdGhpcy55LHRoaXN9ZG90KHQpe3JldHVybiB0aGlzLngqdC54K3RoaXMueSp0Lnl9Y3Jvc3ModCl7cmV0dXJuIHRoaXMueCp0LnktdGhpcy55KnQueH1sZW5ndGhTcSgpe3JldHVybiB0aGlzLngqdGhpcy54K3RoaXMueSp0aGlzLnl9bGVuZ3RoKCl7cmV0dXJuIE1hdGguc3FydCh0aGlzLngqdGhpcy54K3RoaXMueSp0aGlzLnkpfW1hbmhhdHRhbkxlbmd0aCgpe3JldHVybiBNYXRoLmFicyh0aGlzLngpK01hdGguYWJzKHRoaXMueSl9bm9ybWFsaXplKCl7cmV0dXJuIHRoaXMuZGl2aWRlU2NhbGFyKHRoaXMubGVuZ3RoKCl8fDEpfWFuZ2xlKCl7cmV0dXJuIE1hdGguYXRhbjIoLXRoaXMueSwtdGhpcy54KStNYXRoLlBJfWRpc3RhbmNlVG8odCl7cmV0dXJuIE1hdGguc3FydCh0aGlzLmRpc3RhbmNlVG9TcXVhcmVkKHQpKX1kaXN0YW5jZVRvU3F1YXJlZCh0KXtjb25zdCBlPXRoaXMueC10Lngsbj10aGlzLnktdC55O3JldHVybiBlKmUrbipufW1hbmhhdHRhbkRpc3RhbmNlVG8odCl7cmV0dXJuIE1hdGguYWJzKHRoaXMueC10LngpK01hdGguYWJzKHRoaXMueS10LnkpfXNldExlbmd0aCh0KXtyZXR1cm4gdGhpcy5ub3JtYWxpemUoKS5tdWx0aXBseVNjYWxhcih0KX1sZXJwKHQsZSl7cmV0dXJuIHRoaXMueCs9KHQueC10aGlzLngpKmUsdGhpcy55Kz0odC55LXRoaXMueSkqZSx0aGlzfWxlcnBWZWN0b3JzKHQsZSxuKXtyZXR1cm4gdGhpcy54PXQueCsoZS54LXQueCkqbix0aGlzLnk9dC55KyhlLnktdC55KSpuLHRoaXN9ZXF1YWxzKHQpe3JldHVybiB0Lng9PT10aGlzLngmJnQueT09PXRoaXMueX1mcm9tQXJyYXkodCxlPTApe3JldHVybiB0aGlzLng9dFtlXSx0aGlzLnk9dFtlKzFdLHRoaXN9dG9BcnJheSh0PVtdLGU9MCl7cmV0dXJuIHRbZV09dGhpcy54LHRbZSsxXT10aGlzLnksdH1mcm9tQnVmZmVyQXR0cmlidXRlKHQsZSxuKXtyZXR1cm4gdm9pZCAwIT09biYmY29uc29sZS53YXJuKCJUSFJFRS5WZWN0b3IyOiBvZmZzZXQgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIC5mcm9tQnVmZmVyQXR0cmlidXRlKCkuIiksdGhpcy54PXQuZ2V0WChlKSx0aGlzLnk9dC5nZXRZKGUpLHRoaXN9cm90YXRlQXJvdW5kKHQsZSl7Y29uc3Qgbj1NYXRoLmNvcyhlKSxvPU1hdGguc2luKGUpLGk9dGhpcy54LXQueCxhPXRoaXMueS10Lnk7cmV0dXJuIHRoaXMueD1pKm4tYSpvK3QueCx0aGlzLnk9aSpvK2Eqbit0LnksdGhpc31yYW5kb20oKXtyZXR1cm4gdGhpcy54PU1hdGgucmFuZG9tKCksdGhpcy55PU1hdGgucmFuZG9tKCksdGhpc319Z3N0LnByb3RvdHlwZS5pc1ZlY3RvcjI9ITA7Y2xhc3MgaHN0e2NvbnN0cnVjdG9yKCl7dGhpcy5lbGVtZW50cz1bMSwwLDAsMCwxLDAsMCwwLDFdLGFyZ3VtZW50cy5sZW5ndGg+MCYmY29uc29sZS5lcnJvcigiVEhSRUUuTWF0cml4MzogdGhlIGNvbnN0cnVjdG9yIG5vIGxvbmdlciByZWFkcyBhcmd1bWVudHMuIHVzZSAuc2V0KCkgaW5zdGVhZC4iKX1zZXQodCxlLG4sbyxpLGEscixzLGwpe2NvbnN0IGM9dGhpcy5lbGVtZW50cztyZXR1cm4gY1swXT10LGNbMV09byxjWzJdPXIsY1szXT1lLGNbNF09aSxjWzVdPXMsY1s2XT1uLGNbN109YSxjWzhdPWwsdGhpc31pZGVudGl0eSgpe3JldHVybiB0aGlzLnNldCgxLDAsMCwwLDEsMCwwLDAsMSksdGhpc31jb3B5KHQpe2NvbnN0IGU9dGhpcy5lbGVtZW50cyxuPXQuZWxlbWVudHM7cmV0dXJuIGVbMF09blswXSxlWzFdPW5bMV0sZVsyXT1uWzJdLGVbM109blszXSxlWzRdPW5bNF0sZVs1XT1uWzVdLGVbNl09bls2XSxlWzddPW5bN10sZVs4XT1uWzhdLHRoaXN9ZXh0cmFjdEJhc2lzKHQsZSxuKXtyZXR1cm4gdC5zZXRGcm9tTWF0cml4M0NvbHVtbih0aGlzLDApLGUuc2V0RnJvbU1hdHJpeDNDb2x1bW4odGhpcywxKSxuLnNldEZyb21NYXRyaXgzQ29sdW1uKHRoaXMsMiksdGhpc31zZXRGcm9tTWF0cml4NCh0KXtjb25zdCBlPXQuZWxlbWVudHM7cmV0dXJuIHRoaXMuc2V0KGVbMF0sZVs0XSxlWzhdLGVbMV0sZVs1XSxlWzldLGVbMl0sZVs2XSxlWzEwXSksdGhpc31tdWx0aXBseSh0KXtyZXR1cm4gdGhpcy5tdWx0aXBseU1hdHJpY2VzKHRoaXMsdCl9cHJlbXVsdGlwbHkodCl7cmV0dXJuIHRoaXMubXVsdGlwbHlNYXRyaWNlcyh0LHRoaXMpfW11bHRpcGx5TWF0cmljZXModCxlKXtjb25zdCBuPXQuZWxlbWVudHMsbz1lLmVsZW1lbnRzLGk9dGhpcy5lbGVtZW50cyxhPW5bMF0scj1uWzNdLHM9bls2XSxsPW5bMV0sYz1uWzRdLGQ9bls3XSxwPW5bMl0sbT1uWzVdLGY9bls4XSx1PW9bMF0sZz1vWzNdLGg9b1s2XSxiPW9bMV0seT1vWzRdLF89b1s3XSxDPW9bMl0sTT1vWzVdLHY9b1s4XTtyZXR1cm4gaVswXT1hKnUrcipiK3MqQyxpWzNdPWEqZytyKnkrcypNLGlbNl09YSpoK3IqXytzKnYsaVsxXT1sKnUrYypiK2QqQyxpWzRdPWwqZytjKnkrZCpNLGlbN109bCpoK2MqXytkKnYsaVsyXT1wKnUrbSpiK2YqQyxpWzVdPXAqZyttKnkrZipNLGlbOF09cCpoK20qXytmKnYsdGhpc31tdWx0aXBseVNjYWxhcih0KXtjb25zdCBlPXRoaXMuZWxlbWVudHM7cmV0dXJuIGVbMF0qPXQsZVszXSo9dCxlWzZdKj10LGVbMV0qPXQsZVs0XSo9dCxlWzddKj10LGVbMl0qPXQsZVs1XSo9dCxlWzhdKj10LHRoaXN9ZGV0ZXJtaW5hbnQoKXtjb25zdCB0PXRoaXMuZWxlbWVudHMsZT10WzBdLG49dFsxXSxvPXRbMl0saT10WzNdLGE9dFs0XSxyPXRbNV0scz10WzZdLGw9dFs3XSxjPXRbOF07cmV0dXJuIGUqYSpjLWUqcipsLW4qaSpjK24qcipzK28qaSpsLW8qYSpzfWludmVydCgpe2NvbnN0IHQ9dGhpcy5lbGVtZW50cyxlPXRbMF0sbj10WzFdLG89dFsyXSxpPXRbM10sYT10WzRdLHI9dFs1XSxzPXRbNl0sbD10WzddLGM9dFs4XSxkPWMqYS1yKmwscD1yKnMtYyppLG09bCppLWEqcyxmPWUqZCtuKnArbyptO2lmKDA9PT1mKXJldHVybiB0aGlzLnNldCgwLDAsMCwwLDAsMCwwLDAsMCk7Y29uc3QgdT0xL2Y7cmV0dXJuIHRbMF09ZCp1LHRbMV09KG8qbC1jKm4pKnUsdFsyXT0ocipuLW8qYSkqdSx0WzNdPXAqdSx0WzRdPShjKmUtbypzKSp1LHRbNV09KG8qaS1yKmUpKnUsdFs2XT1tKnUsdFs3XT0obipzLWwqZSkqdSx0WzhdPShhKmUtbippKSp1LHRoaXN9dHJhbnNwb3NlKCl7bGV0IHQ7Y29uc3QgZT10aGlzLmVsZW1lbnRzO3JldHVybiB0PWVbMV0sZVsxXT1lWzNdLGVbM109dCx0PWVbMl0sZVsyXT1lWzZdLGVbNl09dCx0PWVbNV0sZVs1XT1lWzddLGVbN109dCx0aGlzfWdldE5vcm1hbE1hdHJpeCh0KXtyZXR1cm4gdGhpcy5zZXRGcm9tTWF0cml4NCh0KS5pbnZlcnQoKS50cmFuc3Bvc2UoKX10cmFuc3Bvc2VJbnRvQXJyYXkodCl7Y29uc3QgZT10aGlzLmVsZW1lbnRzO3JldHVybiB0WzBdPWVbMF0sdFsxXT1lWzNdLHRbMl09ZVs2XSx0WzNdPWVbMV0sdFs0XT1lWzRdLHRbNV09ZVs3XSx0WzZdPWVbMl0sdFs3XT1lWzVdLHRbOF09ZVs4XSx0aGlzfXNldFV2VHJhbnNmb3JtKHQsZSxuLG8saSxhLHIpe2NvbnN0IHM9TWF0aC5jb3MoaSksbD1NYXRoLnNpbihpKTtyZXR1cm4gdGhpcy5zZXQobipzLG4qbCwtbioocyphK2wqcikrYSt0LC1vKmwsbypzLC1vKigtbCphK3MqcikrcitlLDAsMCwxKSx0aGlzfXNjYWxlKHQsZSl7Y29uc3Qgbj10aGlzLmVsZW1lbnRzO3JldHVybiBuWzBdKj10LG5bM10qPXQsbls2XSo9dCxuWzFdKj1lLG5bNF0qPWUsbls3XSo9ZSx0aGlzfXJvdGF0ZSh0KXtjb25zdCBlPU1hdGguY29zKHQpLG49TWF0aC5zaW4odCksbz10aGlzLmVsZW1lbnRzLGk9b1swXSxhPW9bM10scj1vWzZdLHM9b1sxXSxsPW9bNF0sYz1vWzddO3JldHVybiBvWzBdPWUqaStuKnMsb1szXT1lKmErbipsLG9bNl09ZSpyK24qYyxvWzFdPS1uKmkrZSpzLG9bNF09LW4qYStlKmwsb1s3XT0tbipyK2UqYyx0aGlzfXRyYW5zbGF0ZSh0LGUpe2NvbnN0IG49dGhpcy5lbGVtZW50cztyZXR1cm4gblswXSs9dCpuWzJdLG5bM10rPXQqbls1XSxuWzZdKz10Km5bOF0sblsxXSs9ZSpuWzJdLG5bNF0rPWUqbls1XSxuWzddKz1lKm5bOF0sdGhpc31lcXVhbHModCl7Y29uc3QgZT10aGlzLmVsZW1lbnRzLG49dC5lbGVtZW50cztmb3IobGV0IHQ9MDt0PDk7dCsrKWlmKGVbdF0hPT1uW3RdKXJldHVybiExO3JldHVybiEwfWZyb21BcnJheSh0LGU9MCl7Zm9yKGxldCBuPTA7bjw5O24rKyl0aGlzLmVsZW1lbnRzW25dPXRbbitlXTtyZXR1cm4gdGhpc310b0FycmF5KHQ9W10sZT0wKXtjb25zdCBuPXRoaXMuZWxlbWVudHM7cmV0dXJuIHRbZV09blswXSx0W2UrMV09blsxXSx0W2UrMl09blsyXSx0W2UrM109blszXSx0W2UrNF09bls0XSx0W2UrNV09bls1XSx0W2UrNl09bls2XSx0W2UrN109bls3XSx0W2UrOF09bls4XSx0fWNsb25lKCl7cmV0dXJuKG5ldyB0aGlzLmNvbnN0cnVjdG9yKS5mcm9tQXJyYXkodGhpcy5lbGVtZW50cyl9fWxldCBic3Q7aHN0LnByb3RvdHlwZS5pc01hdHJpeDM9ITA7Y2xhc3MgeXN0e3N0YXRpYyBnZXREYXRhVVJMKHQpe2lmKC9eZGF0YTovaS50ZXN0KHQuc3JjKSlyZXR1cm4gdC5zcmM7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBIVE1MQ2FudmFzRWxlbWVudClyZXR1cm4gdC5zcmM7bGV0IGU7aWYodCBpbnN0YW5jZW9mIEhUTUxDYW52YXNFbGVtZW50KWU9dDtlbHNle3ZvaWQgMD09PWJzdCYmKGJzdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiLCJjYW52YXMiKSksYnN0LndpZHRoPXQud2lkdGgsYnN0LmhlaWdodD10LmhlaWdodDtjb25zdCBuPWJzdC5nZXRDb250ZXh0KCIyZCIpO3QgaW5zdGFuY2VvZiBJbWFnZURhdGE/bi5wdXRJbWFnZURhdGEodCwwLDApOm4uZHJhd0ltYWdlKHQsMCwwLHQud2lkdGgsdC5oZWlnaHQpLGU9YnN0fXJldHVybiBlLndpZHRoPjIwNDh8fGUuaGVpZ2h0PjIwNDg/KGNvbnNvbGUud2FybigiVEhSRUUuSW1hZ2VVdGlscy5nZXREYXRhVVJMOiBJbWFnZSBjb252ZXJ0ZWQgdG8ganBnIGZvciBwZXJmb3JtYW5jZSByZWFzb25zIix0KSxlLnRvRGF0YVVSTCgiaW1hZ2UvanBlZyIsLjYpKTplLnRvRGF0YVVSTCgiaW1hZ2UvcG5nIil9fWxldCBfc3Q9MDtjbGFzcyBDc3QgZXh0ZW5kcyByc3R7Y29uc3RydWN0b3IodD1Dc3QuREVGQVVMVF9JTUFHRSxlPUNzdC5ERUZBVUxUX01BUFBJTkcsbj0xMDAxLG89MTAwMSxpPTEwMDYsYT0xMDA4LHI9MTAyMyxzPTEwMDksbD0xLGM9M2UzKXtzdXBlcigpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJpZCIse3ZhbHVlOl9zdCsrfSksdGhpcy51dWlkPWRzdCgpLHRoaXMubmFtZT0iIix0aGlzLmltYWdlPXQsdGhpcy5taXBtYXBzPVtdLHRoaXMubWFwcGluZz1lLHRoaXMud3JhcFM9bix0aGlzLndyYXBUPW8sdGhpcy5tYWdGaWx0ZXI9aSx0aGlzLm1pbkZpbHRlcj1hLHRoaXMuYW5pc290cm9weT1sLHRoaXMuZm9ybWF0PXIsdGhpcy5pbnRlcm5hbEZvcm1hdD1udWxsLHRoaXMudHlwZT1zLHRoaXMub2Zmc2V0PW5ldyBnc3QoMCwwKSx0aGlzLnJlcGVhdD1uZXcgZ3N0KDEsMSksdGhpcy5jZW50ZXI9bmV3IGdzdCgwLDApLHRoaXMucm90YXRpb249MCx0aGlzLm1hdHJpeEF1dG9VcGRhdGU9ITAsdGhpcy5tYXRyaXg9bmV3IGhzdCx0aGlzLmdlbmVyYXRlTWlwbWFwcz0hMCx0aGlzLnByZW11bHRpcGx5QWxwaGE9ITEsdGhpcy5mbGlwWT0hMCx0aGlzLnVucGFja0FsaWdubWVudD00LHRoaXMuZW5jb2Rpbmc9Yyx0aGlzLnZlcnNpb249MCx0aGlzLm9uVXBkYXRlPW51bGwsdGhpcy5pc1JlbmRlclRhcmdldFRleHR1cmU9ITF9dXBkYXRlTWF0cml4KCl7dGhpcy5tYXRyaXguc2V0VXZUcmFuc2Zvcm0odGhpcy5vZmZzZXQueCx0aGlzLm9mZnNldC55LHRoaXMucmVwZWF0LngsdGhpcy5yZXBlYXQueSx0aGlzLnJvdGF0aW9uLHRoaXMuY2VudGVyLngsdGhpcy5jZW50ZXIueSl9Y2xvbmUoKXtyZXR1cm4obmV3IHRoaXMuY29uc3RydWN0b3IpLmNvcHkodGhpcyl9Y29weSh0KXtyZXR1cm4gdGhpcy5uYW1lPXQubmFtZSx0aGlzLmltYWdlPXQuaW1hZ2UsdGhpcy5taXBtYXBzPXQubWlwbWFwcy5zbGljZSgwKSx0aGlzLm1hcHBpbmc9dC5tYXBwaW5nLHRoaXMud3JhcFM9dC53cmFwUyx0aGlzLndyYXBUPXQud3JhcFQsdGhpcy5tYWdGaWx0ZXI9dC5tYWdGaWx0ZXIsdGhpcy5taW5GaWx0ZXI9dC5taW5GaWx0ZXIsdGhpcy5hbmlzb3Ryb3B5PXQuYW5pc290cm9weSx0aGlzLmZvcm1hdD10LmZvcm1hdCx0aGlzLmludGVybmFsRm9ybWF0PXQuaW50ZXJuYWxGb3JtYXQsdGhpcy50eXBlPXQudHlwZSx0aGlzLm9mZnNldC5jb3B5KHQub2Zmc2V0KSx0aGlzLnJlcGVhdC5jb3B5KHQucmVwZWF0KSx0aGlzLmNlbnRlci5jb3B5KHQuY2VudGVyKSx0aGlzLnJvdGF0aW9uPXQucm90YXRpb24sdGhpcy5tYXRyaXhBdXRvVXBkYXRlPXQubWF0cml4QXV0b1VwZGF0ZSx0aGlzLm1hdHJpeC5jb3B5KHQubWF0cml4KSx0aGlzLmdlbmVyYXRlTWlwbWFwcz10LmdlbmVyYXRlTWlwbWFwcyx0aGlzLnByZW11bHRpcGx5QWxwaGE9dC5wcmVtdWx0aXBseUFscGhhLHRoaXMuZmxpcFk9dC5mbGlwWSx0aGlzLnVucGFja0FsaWdubWVudD10LnVucGFja0FsaWdubWVudCx0aGlzLmVuY29kaW5nPXQuZW5jb2RpbmcsdGhpc310b0pTT04odCl7Y29uc3QgZT12b2lkIDA9PT10fHwic3RyaW5nIj09dHlwZW9mIHQ7aWYoIWUmJnZvaWQgMCE9PXQudGV4dHVyZXNbdGhpcy51dWlkXSlyZXR1cm4gdC50ZXh0dXJlc1t0aGlzLnV1aWRdO2NvbnN0IG49e21ldGFkYXRhOnt2ZXJzaW9uOjQuNSx0eXBlOiJUZXh0dXJlIixnZW5lcmF0b3I6IlRleHR1cmUudG9KU09OIn0sdXVpZDp0aGlzLnV1aWQsbmFtZTp0aGlzLm5hbWUsbWFwcGluZzp0aGlzLm1hcHBpbmcscmVwZWF0Olt0aGlzLnJlcGVhdC54LHRoaXMucmVwZWF0LnldLG9mZnNldDpbdGhpcy5vZmZzZXQueCx0aGlzLm9mZnNldC55XSxjZW50ZXI6W3RoaXMuY2VudGVyLngsdGhpcy5jZW50ZXIueV0scm90YXRpb246dGhpcy5yb3RhdGlvbix3cmFwOlt0aGlzLndyYXBTLHRoaXMud3JhcFRdLGZvcm1hdDp0aGlzLmZvcm1hdCx0eXBlOnRoaXMudHlwZSxlbmNvZGluZzp0aGlzLmVuY29kaW5nLG1pbkZpbHRlcjp0aGlzLm1pbkZpbHRlcixtYWdGaWx0ZXI6dGhpcy5tYWdGaWx0ZXIsYW5pc290cm9weTp0aGlzLmFuaXNvdHJvcHksZmxpcFk6dGhpcy5mbGlwWSxwcmVtdWx0aXBseUFscGhhOnRoaXMucHJlbXVsdGlwbHlBbHBoYSx1bnBhY2tBbGlnbm1lbnQ6dGhpcy51bnBhY2tBbGlnbm1lbnR9O2lmKHZvaWQgMCE9PXRoaXMuaW1hZ2Upe2NvbnN0IG89dGhpcy5pbWFnZTtpZih2b2lkIDA9PT1vLnV1aWQmJihvLnV1aWQ9ZHN0KCkpLCFlJiZ2b2lkIDA9PT10LmltYWdlc1tvLnV1aWRdKXtsZXQgZTtpZihBcnJheS5pc0FycmF5KG8pKXtlPVtdO2ZvcihsZXQgdD0wLG49by5sZW5ndGg7dDxuO3QrKyllLnB1c2goTXN0KG9bdF0uaXNEYXRhVGV4dHVyZT9vW3RdLmltYWdlOm9bdF0pKX1lbHNlIGU9TXN0KG8pO3QuaW1hZ2VzW28udXVpZF09e3V1aWQ6by51dWlkLHVybDplfX1uLmltYWdlPW8udXVpZH1yZXR1cm4gZXx8KHQudGV4dHVyZXNbdGhpcy51dWlkXT1uKSxufWRpc3Bvc2UoKXt0aGlzLmRpc3BhdGNoRXZlbnQoe3R5cGU6ImRpc3Bvc2UifSl9dHJhbnNmb3JtVXYodCl7aWYoMzAwIT09dGhpcy5tYXBwaW5nKXJldHVybiB0O2lmKHQuYXBwbHlNYXRyaXgzKHRoaXMubWF0cml4KSx0Lng8MHx8dC54PjEpc3dpdGNoKHRoaXMud3JhcFMpe2Nhc2UgRHJ0OnQueD10LngtTWF0aC5mbG9vcih0LngpO2JyZWFrO2Nhc2UgUnJ0OnQueD10Lng8MD8wOjE7YnJlYWs7Y2FzZSBFcnQ6dC54PTE9PT1NYXRoLmFicyhNYXRoLmZsb29yKHQueCklMik/TWF0aC5jZWlsKHQueCktdC54OnQueC1NYXRoLmZsb29yKHQueCl9aWYodC55PDB8fHQueT4xKXN3aXRjaCh0aGlzLndyYXBUKXtjYXNlIERydDp0Lnk9dC55LU1hdGguZmxvb3IodC55KTticmVhaztjYXNlIFJydDp0Lnk9dC55PDA/MDoxO2JyZWFrO2Nhc2UgRXJ0OnQueT0xPT09TWF0aC5hYnMoTWF0aC5mbG9vcih0LnkpJTIpP01hdGguY2VpbCh0LnkpLXQueTp0LnktTWF0aC5mbG9vcih0LnkpfXJldHVybiB0aGlzLmZsaXBZJiYodC55PTEtdC55KSx0fXNldCBuZWVkc1VwZGF0ZSh0KXshMD09PXQmJnRoaXMudmVyc2lvbisrfX1mdW5jdGlvbiBNc3QodCl7cmV0dXJuInVuZGVmaW5lZCIhPXR5cGVvZiBIVE1MSW1hZ2VFbGVtZW50JiZ0IGluc3RhbmNlb2YgSFRNTEltYWdlRWxlbWVudHx8InVuZGVmaW5lZCIhPXR5cGVvZiBIVE1MQ2FudmFzRWxlbWVudCYmdCBpbnN0YW5jZW9mIEhUTUxDYW52YXNFbGVtZW50fHwidW5kZWZpbmVkIiE9dHlwZW9mIEltYWdlQml0bWFwJiZ0IGluc3RhbmNlb2YgSW1hZ2VCaXRtYXA/eXN0LmdldERhdGFVUkwodCk6dC5kYXRhP3tkYXRhOkFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHQuZGF0YSksd2lkdGg6dC53aWR0aCxoZWlnaHQ6dC5oZWlnaHQsdHlwZTp0LmRhdGEuY29uc3RydWN0b3IubmFtZX06KGNvbnNvbGUud2FybigiVEhSRUUuVGV4dHVyZTogVW5hYmxlIHRvIHNlcmlhbGl6ZSBUZXh0dXJlLiIpLHt9KX1Dc3QuREVGQVVMVF9JTUFHRT12b2lkIDAsQ3N0LkRFRkFVTFRfTUFQUElORz0zMDAsQ3N0LnByb3RvdHlwZS5pc1RleHR1cmU9ITA7Y2xhc3MgdnN0e2NvbnN0cnVjdG9yKHQ9MCxlPTAsbj0wLG89MSl7dGhpcy54PXQsdGhpcy55PWUsdGhpcy56PW4sdGhpcy53PW99Z2V0IHdpZHRoKCl7cmV0dXJuIHRoaXMuen1zZXQgd2lkdGgodCl7dGhpcy56PXR9Z2V0IGhlaWdodCgpe3JldHVybiB0aGlzLnd9c2V0IGhlaWdodCh0KXt0aGlzLnc9dH1zZXQodCxlLG4sbyl7cmV0dXJuIHRoaXMueD10LHRoaXMueT1lLHRoaXMuej1uLHRoaXMudz1vLHRoaXN9c2V0U2NhbGFyKHQpe3JldHVybiB0aGlzLng9dCx0aGlzLnk9dCx0aGlzLno9dCx0aGlzLnc9dCx0aGlzfXNldFgodCl7cmV0dXJuIHRoaXMueD10LHRoaXN9c2V0WSh0KXtyZXR1cm4gdGhpcy55PXQsdGhpc31zZXRaKHQpe3JldHVybiB0aGlzLno9dCx0aGlzfXNldFcodCl7cmV0dXJuIHRoaXMudz10LHRoaXN9c2V0Q29tcG9uZW50KHQsZSl7c3dpdGNoKHQpe2Nhc2UgMDp0aGlzLng9ZTticmVhaztjYXNlIDE6dGhpcy55PWU7YnJlYWs7Y2FzZSAyOnRoaXMuej1lO2JyZWFrO2Nhc2UgMzp0aGlzLnc9ZTticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiaW5kZXggaXMgb3V0IG9mIHJhbmdlOiAiK3QpfXJldHVybiB0aGlzfWdldENvbXBvbmVudCh0KXtzd2l0Y2godCl7Y2FzZSAwOnJldHVybiB0aGlzLng7Y2FzZSAxOnJldHVybiB0aGlzLnk7Y2FzZSAyOnJldHVybiB0aGlzLno7Y2FzZSAzOnJldHVybiB0aGlzLnc7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoImluZGV4IGlzIG91dCBvZiByYW5nZTogIit0KX19Y2xvbmUoKXtyZXR1cm4gbmV3IHRoaXMuY29uc3RydWN0b3IodGhpcy54LHRoaXMueSx0aGlzLnosdGhpcy53KX1jb3B5KHQpe3JldHVybiB0aGlzLng9dC54LHRoaXMueT10LnksdGhpcy56PXQueix0aGlzLnc9dm9pZCAwIT09dC53P3QudzoxLHRoaXN9YWRkKHQsZSl7cmV0dXJuIHZvaWQgMCE9PWU/KGNvbnNvbGUud2FybigiVEhSRUUuVmVjdG9yNDogLmFkZCgpIG5vdyBvbmx5IGFjY2VwdHMgb25lIGFyZ3VtZW50LiBVc2UgLmFkZFZlY3RvcnMoIGEsIGIgKSBpbnN0ZWFkLiIpLHRoaXMuYWRkVmVjdG9ycyh0LGUpKToodGhpcy54Kz10LngsdGhpcy55Kz10LnksdGhpcy56Kz10LnosdGhpcy53Kz10LncsdGhpcyl9YWRkU2NhbGFyKHQpe3JldHVybiB0aGlzLngrPXQsdGhpcy55Kz10LHRoaXMueis9dCx0aGlzLncrPXQsdGhpc31hZGRWZWN0b3JzKHQsZSl7cmV0dXJuIHRoaXMueD10LngrZS54LHRoaXMueT10LnkrZS55LHRoaXMuej10LnorZS56LHRoaXMudz10LncrZS53LHRoaXN9YWRkU2NhbGVkVmVjdG9yKHQsZSl7cmV0dXJuIHRoaXMueCs9dC54KmUsdGhpcy55Kz10LnkqZSx0aGlzLnorPXQueiplLHRoaXMudys9dC53KmUsdGhpc31zdWIodCxlKXtyZXR1cm4gdm9pZCAwIT09ZT8oY29uc29sZS53YXJuKCJUSFJFRS5WZWN0b3I0OiAuc3ViKCkgbm93IG9ubHkgYWNjZXB0cyBvbmUgYXJndW1lbnQuIFVzZSAuc3ViVmVjdG9ycyggYSwgYiApIGluc3RlYWQuIiksdGhpcy5zdWJWZWN0b3JzKHQsZSkpOih0aGlzLngtPXQueCx0aGlzLnktPXQueSx0aGlzLnotPXQueix0aGlzLnctPXQudyx0aGlzKX1zdWJTY2FsYXIodCl7cmV0dXJuIHRoaXMueC09dCx0aGlzLnktPXQsdGhpcy56LT10LHRoaXMudy09dCx0aGlzfXN1YlZlY3RvcnModCxlKXtyZXR1cm4gdGhpcy54PXQueC1lLngsdGhpcy55PXQueS1lLnksdGhpcy56PXQuei1lLnosdGhpcy53PXQudy1lLncsdGhpc31tdWx0aXBseSh0KXtyZXR1cm4gdGhpcy54Kj10LngsdGhpcy55Kj10LnksdGhpcy56Kj10LnosdGhpcy53Kj10LncsdGhpc31tdWx0aXBseVNjYWxhcih0KXtyZXR1cm4gdGhpcy54Kj10LHRoaXMueSo9dCx0aGlzLnoqPXQsdGhpcy53Kj10LHRoaXN9YXBwbHlNYXRyaXg0KHQpe2NvbnN0IGU9dGhpcy54LG49dGhpcy55LG89dGhpcy56LGk9dGhpcy53LGE9dC5lbGVtZW50cztyZXR1cm4gdGhpcy54PWFbMF0qZSthWzRdKm4rYVs4XSpvK2FbMTJdKmksdGhpcy55PWFbMV0qZSthWzVdKm4rYVs5XSpvK2FbMTNdKmksdGhpcy56PWFbMl0qZSthWzZdKm4rYVsxMF0qbythWzE0XSppLHRoaXMudz1hWzNdKmUrYVs3XSpuK2FbMTFdKm8rYVsxNV0qaSx0aGlzfWRpdmlkZVNjYWxhcih0KXtyZXR1cm4gdGhpcy5tdWx0aXBseVNjYWxhcigxL3QpfXNldEF4aXNBbmdsZUZyb21RdWF0ZXJuaW9uKHQpe3RoaXMudz0yKk1hdGguYWNvcyh0LncpO2NvbnN0IGU9TWF0aC5zcXJ0KDEtdC53KnQudyk7cmV0dXJuIGU8MWUtND8odGhpcy54PTEsdGhpcy55PTAsdGhpcy56PTApOih0aGlzLng9dC54L2UsdGhpcy55PXQueS9lLHRoaXMuej10LnovZSksdGhpc31zZXRBeGlzQW5nbGVGcm9tUm90YXRpb25NYXRyaXgodCl7bGV0IGUsbixvLGk7Y29uc3QgYT0uMDEscj0uMSxzPXQuZWxlbWVudHMsbD1zWzBdLGM9c1s0XSxkPXNbOF0scD1zWzFdLG09c1s1XSxmPXNbOV0sdT1zWzJdLGc9c1s2XSxoPXNbMTBdO2lmKE1hdGguYWJzKGMtcCk8YSYmTWF0aC5hYnMoZC11KTxhJiZNYXRoLmFicyhmLWcpPGEpe2lmKE1hdGguYWJzKGMrcCk8ciYmTWF0aC5hYnMoZCt1KTxyJiZNYXRoLmFicyhmK2cpPHImJk1hdGguYWJzKGwrbStoLTMpPHIpcmV0dXJuIHRoaXMuc2V0KDEsMCwwLDApLHRoaXM7ZT1NYXRoLlBJO2NvbnN0IHQ9KGwrMSkvMixzPShtKzEpLzIsYj0oaCsxKS8yLHk9KGMrcCkvNCxfPShkK3UpLzQsQz0oZitnKS80O3JldHVybiB0PnMmJnQ+Yj90PGE/KG49MCxvPS43MDcxMDY3ODEsaT0uNzA3MTA2NzgxKToobj1NYXRoLnNxcnQodCksbz15L24saT1fL24pOnM+Yj9zPGE/KG49LjcwNzEwNjc4MSxvPTAsaT0uNzA3MTA2NzgxKToobz1NYXRoLnNxcnQocyksbj15L28saT1DL28pOmI8YT8obj0uNzA3MTA2NzgxLG89LjcwNzEwNjc4MSxpPTApOihpPU1hdGguc3FydChiKSxuPV8vaSxvPUMvaSksdGhpcy5zZXQobixvLGksZSksdGhpc31sZXQgYj1NYXRoLnNxcnQoKGctZikqKGctZikrKGQtdSkqKGQtdSkrKHAtYykqKHAtYykpO3JldHVybiBNYXRoLmFicyhiKTwuMDAxJiYoYj0xKSx0aGlzLng9KGctZikvYix0aGlzLnk9KGQtdSkvYix0aGlzLno9KHAtYykvYix0aGlzLnc9TWF0aC5hY29zKChsK20raC0xKS8yKSx0aGlzfW1pbih0KXtyZXR1cm4gdGhpcy54PU1hdGgubWluKHRoaXMueCx0LngpLHRoaXMueT1NYXRoLm1pbih0aGlzLnksdC55KSx0aGlzLno9TWF0aC5taW4odGhpcy56LHQueiksdGhpcy53PU1hdGgubWluKHRoaXMudyx0LncpLHRoaXN9bWF4KHQpe3JldHVybiB0aGlzLng9TWF0aC5tYXgodGhpcy54LHQueCksdGhpcy55PU1hdGgubWF4KHRoaXMueSx0LnkpLHRoaXMuej1NYXRoLm1heCh0aGlzLnosdC56KSx0aGlzLnc9TWF0aC5tYXgodGhpcy53LHQudyksdGhpc31jbGFtcCh0LGUpe3JldHVybiB0aGlzLng9TWF0aC5tYXgodC54LE1hdGgubWluKGUueCx0aGlzLngpKSx0aGlzLnk9TWF0aC5tYXgodC55LE1hdGgubWluKGUueSx0aGlzLnkpKSx0aGlzLno9TWF0aC5tYXgodC56LE1hdGgubWluKGUueix0aGlzLnopKSx0aGlzLnc9TWF0aC5tYXgodC53LE1hdGgubWluKGUudyx0aGlzLncpKSx0aGlzfWNsYW1wU2NhbGFyKHQsZSl7cmV0dXJuIHRoaXMueD1NYXRoLm1heCh0LE1hdGgubWluKGUsdGhpcy54KSksdGhpcy55PU1hdGgubWF4KHQsTWF0aC5taW4oZSx0aGlzLnkpKSx0aGlzLno9TWF0aC5tYXgodCxNYXRoLm1pbihlLHRoaXMueikpLHRoaXMudz1NYXRoLm1heCh0LE1hdGgubWluKGUsdGhpcy53KSksdGhpc31jbGFtcExlbmd0aCh0LGUpe2NvbnN0IG49dGhpcy5sZW5ndGgoKTtyZXR1cm4gdGhpcy5kaXZpZGVTY2FsYXIobnx8MSkubXVsdGlwbHlTY2FsYXIoTWF0aC5tYXgodCxNYXRoLm1pbihlLG4pKSl9Zmxvb3IoKXtyZXR1cm4gdGhpcy54PU1hdGguZmxvb3IodGhpcy54KSx0aGlzLnk9TWF0aC5mbG9vcih0aGlzLnkpLHRoaXMuej1NYXRoLmZsb29yKHRoaXMueiksdGhpcy53PU1hdGguZmxvb3IodGhpcy53KSx0aGlzfWNlaWwoKXtyZXR1cm4gdGhpcy54PU1hdGguY2VpbCh0aGlzLngpLHRoaXMueT1NYXRoLmNlaWwodGhpcy55KSx0aGlzLno9TWF0aC5jZWlsKHRoaXMueiksdGhpcy53PU1hdGguY2VpbCh0aGlzLncpLHRoaXN9cm91bmQoKXtyZXR1cm4gdGhpcy54PU1hdGgucm91bmQodGhpcy54KSx0aGlzLnk9TWF0aC5yb3VuZCh0aGlzLnkpLHRoaXMuej1NYXRoLnJvdW5kKHRoaXMueiksdGhpcy53PU1hdGgucm91bmQodGhpcy53KSx0aGlzfXJvdW5kVG9aZXJvKCl7cmV0dXJuIHRoaXMueD10aGlzLng8MD9NYXRoLmNlaWwodGhpcy54KTpNYXRoLmZsb29yKHRoaXMueCksdGhpcy55PXRoaXMueTwwP01hdGguY2VpbCh0aGlzLnkpOk1hdGguZmxvb3IodGhpcy55KSx0aGlzLno9dGhpcy56PDA/TWF0aC5jZWlsKHRoaXMueik6TWF0aC5mbG9vcih0aGlzLnopLHRoaXMudz10aGlzLnc8MD9NYXRoLmNlaWwodGhpcy53KTpNYXRoLmZsb29yKHRoaXMudyksdGhpc31uZWdhdGUoKXtyZXR1cm4gdGhpcy54PS10aGlzLngsdGhpcy55PS10aGlzLnksdGhpcy56PS10aGlzLnosdGhpcy53PS10aGlzLncsdGhpc31kb3QodCl7cmV0dXJuIHRoaXMueCp0LngrdGhpcy55KnQueSt0aGlzLnoqdC56K3RoaXMudyp0Lnd9bGVuZ3RoU3EoKXtyZXR1cm4gdGhpcy54KnRoaXMueCt0aGlzLnkqdGhpcy55K3RoaXMueip0aGlzLnordGhpcy53KnRoaXMud31sZW5ndGgoKXtyZXR1cm4gTWF0aC5zcXJ0KHRoaXMueCp0aGlzLngrdGhpcy55KnRoaXMueSt0aGlzLnoqdGhpcy56K3RoaXMudyp0aGlzLncpfW1hbmhhdHRhbkxlbmd0aCgpe3JldHVybiBNYXRoLmFicyh0aGlzLngpK01hdGguYWJzKHRoaXMueSkrTWF0aC5hYnModGhpcy56KStNYXRoLmFicyh0aGlzLncpfW5vcm1hbGl6ZSgpe3JldHVybiB0aGlzLmRpdmlkZVNjYWxhcih0aGlzLmxlbmd0aCgpfHwxKX1zZXRMZW5ndGgodCl7cmV0dXJuIHRoaXMubm9ybWFsaXplKCkubXVsdGlwbHlTY2FsYXIodCl9bGVycCh0LGUpe3JldHVybiB0aGlzLngrPSh0LngtdGhpcy54KSplLHRoaXMueSs9KHQueS10aGlzLnkpKmUsdGhpcy56Kz0odC56LXRoaXMueikqZSx0aGlzLncrPSh0LnctdGhpcy53KSplLHRoaXN9bGVycFZlY3RvcnModCxlLG4pe3JldHVybiB0aGlzLng9dC54KyhlLngtdC54KSpuLHRoaXMueT10LnkrKGUueS10LnkpKm4sdGhpcy56PXQueisoZS56LXQueikqbix0aGlzLnc9dC53KyhlLnctdC53KSpuLHRoaXN9ZXF1YWxzKHQpe3JldHVybiB0Lng9PT10aGlzLngmJnQueT09PXRoaXMueSYmdC56PT09dGhpcy56JiZ0Lnc9PT10aGlzLnd9ZnJvbUFycmF5KHQsZT0wKXtyZXR1cm4gdGhpcy54PXRbZV0sdGhpcy55PXRbZSsxXSx0aGlzLno9dFtlKzJdLHRoaXMudz10W2UrM10sdGhpc310b0FycmF5KHQ9W10sZT0wKXtyZXR1cm4gdFtlXT10aGlzLngsdFtlKzFdPXRoaXMueSx0W2UrMl09dGhpcy56LHRbZSszXT10aGlzLncsdH1mcm9tQnVmZmVyQXR0cmlidXRlKHQsZSxuKXtyZXR1cm4gdm9pZCAwIT09biYmY29uc29sZS53YXJuKCJUSFJFRS5WZWN0b3I0OiBvZmZzZXQgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIC5mcm9tQnVmZmVyQXR0cmlidXRlKCkuIiksdGhpcy54PXQuZ2V0WChlKSx0aGlzLnk9dC5nZXRZKGUpLHRoaXMuej10LmdldFooZSksdGhpcy53PXQuZ2V0VyhlKSx0aGlzfXJhbmRvbSgpe3JldHVybiB0aGlzLng9TWF0aC5yYW5kb20oKSx0aGlzLnk9TWF0aC5yYW5kb20oKSx0aGlzLno9TWF0aC5yYW5kb20oKSx0aGlzLnc9TWF0aC5yYW5kb20oKSx0aGlzfX12c3QucHJvdG90eXBlLmlzVmVjdG9yND0hMDtjbGFzcyB4c3QgZXh0ZW5kcyByc3R7Y29uc3RydWN0b3IodCxlLG49e30pe3N1cGVyKCksdGhpcy53aWR0aD10LHRoaXMuaGVpZ2h0PWUsdGhpcy5kZXB0aD0xLHRoaXMuc2Npc3Nvcj1uZXcgdnN0KDAsMCx0LGUpLHRoaXMuc2Npc3NvclRlc3Q9ITEsdGhpcy52aWV3cG9ydD1uZXcgdnN0KDAsMCx0LGUpLHRoaXMudGV4dHVyZT1uZXcgQ3N0KHZvaWQgMCxuLm1hcHBpbmcsbi53cmFwUyxuLndyYXBULG4ubWFnRmlsdGVyLG4ubWluRmlsdGVyLG4uZm9ybWF0LG4udHlwZSxuLmFuaXNvdHJvcHksbi5lbmNvZGluZyksdGhpcy50ZXh0dXJlLmlzUmVuZGVyVGFyZ2V0VGV4dHVyZT0hMCx0aGlzLnRleHR1cmUuaW1hZ2U9e3dpZHRoOnQsaGVpZ2h0OmUsZGVwdGg6MX0sdGhpcy50ZXh0dXJlLmdlbmVyYXRlTWlwbWFwcz12b2lkIDAhPT1uLmdlbmVyYXRlTWlwbWFwcyYmbi5nZW5lcmF0ZU1pcG1hcHMsdGhpcy50ZXh0dXJlLm1pbkZpbHRlcj12b2lkIDAhPT1uLm1pbkZpbHRlcj9uLm1pbkZpbHRlcjpUcnQsdGhpcy5kZXB0aEJ1ZmZlcj12b2lkIDA9PT1uLmRlcHRoQnVmZmVyfHxuLmRlcHRoQnVmZmVyLHRoaXMuc3RlbmNpbEJ1ZmZlcj12b2lkIDAhPT1uLnN0ZW5jaWxCdWZmZXImJm4uc3RlbmNpbEJ1ZmZlcix0aGlzLmRlcHRoVGV4dHVyZT12b2lkIDAhPT1uLmRlcHRoVGV4dHVyZT9uLmRlcHRoVGV4dHVyZTpudWxsfXNldFRleHR1cmUodCl7dC5pbWFnZT17d2lkdGg6dGhpcy53aWR0aCxoZWlnaHQ6dGhpcy5oZWlnaHQsZGVwdGg6dGhpcy5kZXB0aH0sdGhpcy50ZXh0dXJlPXR9c2V0U2l6ZSh0LGUsbj0xKXt0aGlzLndpZHRoPT09dCYmdGhpcy5oZWlnaHQ9PT1lJiZ0aGlzLmRlcHRoPT09bnx8KHRoaXMud2lkdGg9dCx0aGlzLmhlaWdodD1lLHRoaXMuZGVwdGg9bix0aGlzLnRleHR1cmUuaW1hZ2Uud2lkdGg9dCx0aGlzLnRleHR1cmUuaW1hZ2UuaGVpZ2h0PWUsdGhpcy50ZXh0dXJlLmltYWdlLmRlcHRoPW4sdGhpcy5kaXNwb3NlKCkpLHRoaXMudmlld3BvcnQuc2V0KDAsMCx0LGUpLHRoaXMuc2Npc3Nvci5zZXQoMCwwLHQsZSl9Y2xvbmUoKXtyZXR1cm4obmV3IHRoaXMuY29uc3RydWN0b3IpLmNvcHkodGhpcyl9Y29weSh0KXtyZXR1cm4gdGhpcy53aWR0aD10LndpZHRoLHRoaXMuaGVpZ2h0PXQuaGVpZ2h0LHRoaXMuZGVwdGg9dC5kZXB0aCx0aGlzLnZpZXdwb3J0LmNvcHkodC52aWV3cG9ydCksdGhpcy50ZXh0dXJlPXQudGV4dHVyZS5jbG9uZSgpLHRoaXMudGV4dHVyZS5pbWFnZT17Li4udGhpcy50ZXh0dXJlLmltYWdlfSx0aGlzLmRlcHRoQnVmZmVyPXQuZGVwdGhCdWZmZXIsdGhpcy5zdGVuY2lsQnVmZmVyPXQuc3RlbmNpbEJ1ZmZlcix0aGlzLmRlcHRoVGV4dHVyZT10LmRlcHRoVGV4dHVyZSx0aGlzfWRpc3Bvc2UoKXt0aGlzLmRpc3BhdGNoRXZlbnQoe3R5cGU6ImRpc3Bvc2UifSl9fXhzdC5wcm90b3R5cGUuaXNXZWJHTFJlbmRlclRhcmdldD0hMDsoY2xhc3MgZXh0ZW5kcyB4c3R7Y29uc3RydWN0b3IodCxlLG4pe3N1cGVyKHQsZSk7Y29uc3Qgbz10aGlzLnRleHR1cmU7dGhpcy50ZXh0dXJlPVtdO2ZvcihsZXQgdD0wO3Q8bjt0KyspdGhpcy50ZXh0dXJlW3RdPW8uY2xvbmUoKX1zZXRTaXplKHQsZSxuPTEpe2lmKHRoaXMud2lkdGghPT10fHx0aGlzLmhlaWdodCE9PWV8fHRoaXMuZGVwdGghPT1uKXt0aGlzLndpZHRoPXQsdGhpcy5oZWlnaHQ9ZSx0aGlzLmRlcHRoPW47Zm9yKGxldCBvPTAsaT10aGlzLnRleHR1cmUubGVuZ3RoO288aTtvKyspdGhpcy50ZXh0dXJlW29dLmltYWdlLndpZHRoPXQsdGhpcy50ZXh0dXJlW29dLmltYWdlLmhlaWdodD1lLHRoaXMudGV4dHVyZVtvXS5pbWFnZS5kZXB0aD1uO3RoaXMuZGlzcG9zZSgpfXJldHVybiB0aGlzLnZpZXdwb3J0LnNldCgwLDAsdCxlKSx0aGlzLnNjaXNzb3Iuc2V0KDAsMCx0LGUpLHRoaXN9Y29weSh0KXt0aGlzLmRpc3Bvc2UoKSx0aGlzLndpZHRoPXQud2lkdGgsdGhpcy5oZWlnaHQ9dC5oZWlnaHQsdGhpcy5kZXB0aD10LmRlcHRoLHRoaXMudmlld3BvcnQuc2V0KDAsMCx0aGlzLndpZHRoLHRoaXMuaGVpZ2h0KSx0aGlzLnNjaXNzb3Iuc2V0KDAsMCx0aGlzLndpZHRoLHRoaXMuaGVpZ2h0KSx0aGlzLmRlcHRoQnVmZmVyPXQuZGVwdGhCdWZmZXIsdGhpcy5zdGVuY2lsQnVmZmVyPXQuc3RlbmNpbEJ1ZmZlcix0aGlzLmRlcHRoVGV4dHVyZT10LmRlcHRoVGV4dHVyZSx0aGlzLnRleHR1cmUubGVuZ3RoPTA7Zm9yKGxldCBlPTAsbj10LnRleHR1cmUubGVuZ3RoO2U8bjtlKyspdGhpcy50ZXh0dXJlW2VdPXQudGV4dHVyZVtlXS5jbG9uZSgpO3JldHVybiB0aGlzfX0pLnByb3RvdHlwZS5pc1dlYkdMTXVsdGlwbGVSZW5kZXJUYXJnZXRzPSEwO2NsYXNzIE9zdCBleHRlbmRzIHhzdHtjb25zdHJ1Y3Rvcih0LGUsbil7c3VwZXIodCxlLG4pLHRoaXMuc2FtcGxlcz00fWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkuY2FsbCh0aGlzLHQpLHRoaXMuc2FtcGxlcz10LnNhbXBsZXMsdGhpc319T3N0LnByb3RvdHlwZS5pc1dlYkdMTXVsdGlzYW1wbGVSZW5kZXJUYXJnZXQ9ITA7Y2xhc3MgUHN0e2NvbnN0cnVjdG9yKHQ9MCxlPTAsbj0wLG89MSl7dGhpcy5feD10LHRoaXMuX3k9ZSx0aGlzLl96PW4sdGhpcy5fdz1vfXN0YXRpYyBzbGVycCh0LGUsbixvKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5RdWF0ZXJuaW9uOiBTdGF0aWMgLnNsZXJwKCkgaGFzIGJlZW4gZGVwcmVjYXRlZC4gVXNlIHFtLnNsZXJwUXVhdGVybmlvbnMoIHFhLCBxYiwgdCApIGluc3RlYWQuIiksbi5zbGVycFF1YXRlcm5pb25zKHQsZSxvKX1zdGF0aWMgc2xlcnBGbGF0KHQsZSxuLG8saSxhLHIpe2xldCBzPW5bbyswXSxsPW5bbysxXSxjPW5bbysyXSxkPW5bbyszXTtjb25zdCBwPWlbYSswXSxtPWlbYSsxXSxmPWlbYSsyXSx1PWlbYSszXTtpZigwPT09cilyZXR1cm4gdFtlKzBdPXMsdFtlKzFdPWwsdFtlKzJdPWMsdm9pZCh0W2UrM109ZCk7aWYoMT09PXIpcmV0dXJuIHRbZSswXT1wLHRbZSsxXT1tLHRbZSsyXT1mLHZvaWQodFtlKzNdPXUpO2lmKGQhPT11fHxzIT09cHx8bCE9PW18fGMhPT1mKXtsZXQgdD0xLXI7Y29uc3QgZT1zKnArbCptK2MqZitkKnUsbj1lPj0wPzE6LTEsbz0xLWUqZTtpZihvPk51bWJlci5FUFNJTE9OKXtjb25zdCBpPU1hdGguc3FydChvKSxhPU1hdGguYXRhbjIoaSxlKm4pO3Q9TWF0aC5zaW4odCphKS9pLHI9TWF0aC5zaW4ociphKS9pfWNvbnN0IGk9cipuO2lmKHM9cyp0K3AqaSxsPWwqdCttKmksYz1jKnQrZippLGQ9ZCp0K3UqaSx0PT09MS1yKXtjb25zdCB0PTEvTWF0aC5zcXJ0KHMqcytsKmwrYypjK2QqZCk7cyo9dCxsKj10LGMqPXQsZCo9dH19dFtlXT1zLHRbZSsxXT1sLHRbZSsyXT1jLHRbZSszXT1kfXN0YXRpYyBtdWx0aXBseVF1YXRlcm5pb25zRmxhdCh0LGUsbixvLGksYSl7Y29uc3Qgcj1uW29dLHM9bltvKzFdLGw9bltvKzJdLGM9bltvKzNdLGQ9aVthXSxwPWlbYSsxXSxtPWlbYSsyXSxmPWlbYSszXTtyZXR1cm4gdFtlXT1yKmYrYypkK3MqbS1sKnAsdFtlKzFdPXMqZitjKnArbCpkLXIqbSx0W2UrMl09bCpmK2MqbStyKnAtcypkLHRbZSszXT1jKmYtcipkLXMqcC1sKm0sdH1nZXQgeCgpe3JldHVybiB0aGlzLl94fXNldCB4KHQpe3RoaXMuX3g9dCx0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKCl9Z2V0IHkoKXtyZXR1cm4gdGhpcy5feX1zZXQgeSh0KXt0aGlzLl95PXQsdGhpcy5fb25DaGFuZ2VDYWxsYmFjaygpfWdldCB6KCl7cmV0dXJuIHRoaXMuX3p9c2V0IHoodCl7dGhpcy5fej10LHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2soKX1nZXQgdygpe3JldHVybiB0aGlzLl93fXNldCB3KHQpe3RoaXMuX3c9dCx0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKCl9c2V0KHQsZSxuLG8pe3JldHVybiB0aGlzLl94PXQsdGhpcy5feT1lLHRoaXMuX3o9bix0aGlzLl93PW8sdGhpcy5fb25DaGFuZ2VDYWxsYmFjaygpLHRoaXN9Y2xvbmUoKXtyZXR1cm4gbmV3IHRoaXMuY29uc3RydWN0b3IodGhpcy5feCx0aGlzLl95LHRoaXMuX3osdGhpcy5fdyl9Y29weSh0KXtyZXR1cm4gdGhpcy5feD10LngsdGhpcy5feT10LnksdGhpcy5fej10LnosdGhpcy5fdz10LncsdGhpcy5fb25DaGFuZ2VDYWxsYmFjaygpLHRoaXN9c2V0RnJvbUV1bGVyKHQsZSl7aWYoIXR8fCF0LmlzRXVsZXIpdGhyb3cgbmV3IEVycm9yKCJUSFJFRS5RdWF0ZXJuaW9uOiAuc2V0RnJvbUV1bGVyKCkgbm93IGV4cGVjdHMgYW4gRXVsZXIgcm90YXRpb24gcmF0aGVyIHRoYW4gYSBWZWN0b3IzIGFuZCBvcmRlci4iKTtjb25zdCBuPXQuX3gsbz10Ll95LGk9dC5feixhPXQuX29yZGVyLHI9TWF0aC5jb3Mscz1NYXRoLnNpbixsPXIobi8yKSxjPXIoby8yKSxkPXIoaS8yKSxwPXMobi8yKSxtPXMoby8yKSxmPXMoaS8yKTtzd2l0Y2goYSl7Y2FzZSJYWVoiOnRoaXMuX3g9cCpjKmQrbCptKmYsdGhpcy5feT1sKm0qZC1wKmMqZix0aGlzLl96PWwqYypmK3AqbSpkLHRoaXMuX3c9bCpjKmQtcCptKmY7YnJlYWs7Y2FzZSJZWFoiOnRoaXMuX3g9cCpjKmQrbCptKmYsdGhpcy5feT1sKm0qZC1wKmMqZix0aGlzLl96PWwqYypmLXAqbSpkLHRoaXMuX3c9bCpjKmQrcCptKmY7YnJlYWs7Y2FzZSJaWFkiOnRoaXMuX3g9cCpjKmQtbCptKmYsdGhpcy5feT1sKm0qZCtwKmMqZix0aGlzLl96PWwqYypmK3AqbSpkLHRoaXMuX3c9bCpjKmQtcCptKmY7YnJlYWs7Y2FzZSJaWVgiOnRoaXMuX3g9cCpjKmQtbCptKmYsdGhpcy5feT1sKm0qZCtwKmMqZix0aGlzLl96PWwqYypmLXAqbSpkLHRoaXMuX3c9bCpjKmQrcCptKmY7YnJlYWs7Y2FzZSJZWlgiOnRoaXMuX3g9cCpjKmQrbCptKmYsdGhpcy5feT1sKm0qZCtwKmMqZix0aGlzLl96PWwqYypmLXAqbSpkLHRoaXMuX3c9bCpjKmQtcCptKmY7YnJlYWs7Y2FzZSJYWlkiOnRoaXMuX3g9cCpjKmQtbCptKmYsdGhpcy5feT1sKm0qZC1wKmMqZix0aGlzLl96PWwqYypmK3AqbSpkLHRoaXMuX3c9bCpjKmQrcCptKmY7YnJlYWs7ZGVmYXVsdDpjb25zb2xlLndhcm4oIlRIUkVFLlF1YXRlcm5pb246IC5zZXRGcm9tRXVsZXIoKSBlbmNvdW50ZXJlZCBhbiB1bmtub3duIG9yZGVyOiAiK2EpfXJldHVybiExIT09ZSYmdGhpcy5fb25DaGFuZ2VDYWxsYmFjaygpLHRoaXN9c2V0RnJvbUF4aXNBbmdsZSh0LGUpe2NvbnN0IG49ZS8yLG89TWF0aC5zaW4obik7cmV0dXJuIHRoaXMuX3g9dC54Km8sdGhpcy5feT10Lnkqbyx0aGlzLl96PXQueipvLHRoaXMuX3c9TWF0aC5jb3MobiksdGhpcy5fb25DaGFuZ2VDYWxsYmFjaygpLHRoaXN9c2V0RnJvbVJvdGF0aW9uTWF0cml4KHQpe2NvbnN0IGU9dC5lbGVtZW50cyxuPWVbMF0sbz1lWzRdLGk9ZVs4XSxhPWVbMV0scj1lWzVdLHM9ZVs5XSxsPWVbMl0sYz1lWzZdLGQ9ZVsxMF0scD1uK3IrZDtpZihwPjApe2NvbnN0IHQ9LjUvTWF0aC5zcXJ0KHArMSk7dGhpcy5fdz0uMjUvdCx0aGlzLl94PShjLXMpKnQsdGhpcy5feT0oaS1sKSp0LHRoaXMuX3o9KGEtbykqdH1lbHNlIGlmKG4+ciYmbj5kKXtjb25zdCB0PTIqTWF0aC5zcXJ0KDErbi1yLWQpO3RoaXMuX3c9KGMtcykvdCx0aGlzLl94PS4yNSp0LHRoaXMuX3k9KG8rYSkvdCx0aGlzLl96PShpK2wpL3R9ZWxzZSBpZihyPmQpe2NvbnN0IHQ9MipNYXRoLnNxcnQoMStyLW4tZCk7dGhpcy5fdz0oaS1sKS90LHRoaXMuX3g9KG8rYSkvdCx0aGlzLl95PS4yNSp0LHRoaXMuX3o9KHMrYykvdH1lbHNle2NvbnN0IHQ9MipNYXRoLnNxcnQoMStkLW4tcik7dGhpcy5fdz0oYS1vKS90LHRoaXMuX3g9KGkrbCkvdCx0aGlzLl95PShzK2MpL3QsdGhpcy5fej0uMjUqdH1yZXR1cm4gdGhpcy5fb25DaGFuZ2VDYWxsYmFjaygpLHRoaXN9c2V0RnJvbVVuaXRWZWN0b3JzKHQsZSl7bGV0IG49dC5kb3QoZSkrMTtyZXR1cm4gbjxOdW1iZXIuRVBTSUxPTj8obj0wLE1hdGguYWJzKHQueCk+TWF0aC5hYnModC56KT8odGhpcy5feD0tdC55LHRoaXMuX3k9dC54LHRoaXMuX3o9MCx0aGlzLl93PW4pOih0aGlzLl94PTAsdGhpcy5feT0tdC56LHRoaXMuX3o9dC55LHRoaXMuX3c9bikpOih0aGlzLl94PXQueSplLnotdC56KmUueSx0aGlzLl95PXQueiplLngtdC54KmUueix0aGlzLl96PXQueCplLnktdC55KmUueCx0aGlzLl93PW4pLHRoaXMubm9ybWFsaXplKCl9YW5nbGVUbyh0KXtyZXR1cm4gMipNYXRoLmFjb3MoTWF0aC5hYnMocHN0KHRoaXMuZG90KHQpLC0xLDEpKSl9cm90YXRlVG93YXJkcyh0LGUpe2NvbnN0IG49dGhpcy5hbmdsZVRvKHQpO2lmKDA9PT1uKXJldHVybiB0aGlzO2NvbnN0IG89TWF0aC5taW4oMSxlL24pO3JldHVybiB0aGlzLnNsZXJwKHQsbyksdGhpc31pZGVudGl0eSgpe3JldHVybiB0aGlzLnNldCgwLDAsMCwxKX1pbnZlcnQoKXtyZXR1cm4gdGhpcy5jb25qdWdhdGUoKX1jb25qdWdhdGUoKXtyZXR1cm4gdGhpcy5feCo9LTEsdGhpcy5feSo9LTEsdGhpcy5feio9LTEsdGhpcy5fb25DaGFuZ2VDYWxsYmFjaygpLHRoaXN9ZG90KHQpe3JldHVybiB0aGlzLl94KnQuX3grdGhpcy5feSp0Ll95K3RoaXMuX3oqdC5feit0aGlzLl93KnQuX3d9bGVuZ3RoU3EoKXtyZXR1cm4gdGhpcy5feCp0aGlzLl94K3RoaXMuX3kqdGhpcy5feSt0aGlzLl96KnRoaXMuX3ordGhpcy5fdyp0aGlzLl93fWxlbmd0aCgpe3JldHVybiBNYXRoLnNxcnQodGhpcy5feCp0aGlzLl94K3RoaXMuX3kqdGhpcy5feSt0aGlzLl96KnRoaXMuX3ordGhpcy5fdyp0aGlzLl93KX1ub3JtYWxpemUoKXtsZXQgdD10aGlzLmxlbmd0aCgpO3JldHVybiAwPT09dD8odGhpcy5feD0wLHRoaXMuX3k9MCx0aGlzLl96PTAsdGhpcy5fdz0xKToodD0xL3QsdGhpcy5feD10aGlzLl94KnQsdGhpcy5feT10aGlzLl95KnQsdGhpcy5fej10aGlzLl96KnQsdGhpcy5fdz10aGlzLl93KnQpLHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2soKSx0aGlzfW11bHRpcGx5KHQsZSl7cmV0dXJuIHZvaWQgMCE9PWU/KGNvbnNvbGUud2FybigiVEhSRUUuUXVhdGVybmlvbjogLm11bHRpcGx5KCkgbm93IG9ubHkgYWNjZXB0cyBvbmUgYXJndW1lbnQuIFVzZSAubXVsdGlwbHlRdWF0ZXJuaW9ucyggYSwgYiApIGluc3RlYWQuIiksdGhpcy5tdWx0aXBseVF1YXRlcm5pb25zKHQsZSkpOnRoaXMubXVsdGlwbHlRdWF0ZXJuaW9ucyh0aGlzLHQpfXByZW11bHRpcGx5KHQpe3JldHVybiB0aGlzLm11bHRpcGx5UXVhdGVybmlvbnModCx0aGlzKX1tdWx0aXBseVF1YXRlcm5pb25zKHQsZSl7Y29uc3Qgbj10Ll94LG89dC5feSxpPXQuX3osYT10Ll93LHI9ZS5feCxzPWUuX3ksbD1lLl96LGM9ZS5fdztyZXR1cm4gdGhpcy5feD1uKmMrYSpyK28qbC1pKnMsdGhpcy5feT1vKmMrYSpzK2kqci1uKmwsdGhpcy5fej1pKmMrYSpsK24qcy1vKnIsdGhpcy5fdz1hKmMtbipyLW8qcy1pKmwsdGhpcy5fb25DaGFuZ2VDYWxsYmFjaygpLHRoaXN9c2xlcnAodCxlKXtpZigwPT09ZSlyZXR1cm4gdGhpcztpZigxPT09ZSlyZXR1cm4gdGhpcy5jb3B5KHQpO2NvbnN0IG49dGhpcy5feCxvPXRoaXMuX3ksaT10aGlzLl96LGE9dGhpcy5fdztsZXQgcj1hKnQuX3crbip0Ll94K28qdC5feStpKnQuX3o7aWYocjwwPyh0aGlzLl93PS10Ll93LHRoaXMuX3g9LXQuX3gsdGhpcy5feT0tdC5feSx0aGlzLl96PS10Ll96LHI9LXIpOnRoaXMuY29weSh0KSxyPj0xKXJldHVybiB0aGlzLl93PWEsdGhpcy5feD1uLHRoaXMuX3k9byx0aGlzLl96PWksdGhpcztjb25zdCBzPTEtcipyO2lmKHM8PU51bWJlci5FUFNJTE9OKXtjb25zdCB0PTEtZTtyZXR1cm4gdGhpcy5fdz10KmErZSp0aGlzLl93LHRoaXMuX3g9dCpuK2UqdGhpcy5feCx0aGlzLl95PXQqbytlKnRoaXMuX3ksdGhpcy5fej10KmkrZSp0aGlzLl96LHRoaXMubm9ybWFsaXplKCksdGhpcy5fb25DaGFuZ2VDYWxsYmFjaygpLHRoaXN9Y29uc3QgbD1NYXRoLnNxcnQocyksYz1NYXRoLmF0YW4yKGwsciksZD1NYXRoLnNpbigoMS1lKSpjKS9sLHA9TWF0aC5zaW4oZSpjKS9sO3JldHVybiB0aGlzLl93PWEqZCt0aGlzLl93KnAsdGhpcy5feD1uKmQrdGhpcy5feCpwLHRoaXMuX3k9bypkK3RoaXMuX3kqcCx0aGlzLl96PWkqZCt0aGlzLl96KnAsdGhpcy5fb25DaGFuZ2VDYWxsYmFjaygpLHRoaXN9c2xlcnBRdWF0ZXJuaW9ucyh0LGUsbil7dGhpcy5jb3B5KHQpLnNsZXJwKGUsbil9ZXF1YWxzKHQpe3JldHVybiB0Ll94PT09dGhpcy5feCYmdC5feT09PXRoaXMuX3kmJnQuX3o9PT10aGlzLl96JiZ0Ll93PT09dGhpcy5fd31mcm9tQXJyYXkodCxlPTApe3JldHVybiB0aGlzLl94PXRbZV0sdGhpcy5feT10W2UrMV0sdGhpcy5fej10W2UrMl0sdGhpcy5fdz10W2UrM10sdGhpcy5fb25DaGFuZ2VDYWxsYmFjaygpLHRoaXN9dG9BcnJheSh0PVtdLGU9MCl7cmV0dXJuIHRbZV09dGhpcy5feCx0W2UrMV09dGhpcy5feSx0W2UrMl09dGhpcy5feix0W2UrM109dGhpcy5fdyx0fWZyb21CdWZmZXJBdHRyaWJ1dGUodCxlKXtyZXR1cm4gdGhpcy5feD10LmdldFgoZSksdGhpcy5feT10LmdldFkoZSksdGhpcy5fej10LmdldFooZSksdGhpcy5fdz10LmdldFcoZSksdGhpc31fb25DaGFuZ2UodCl7cmV0dXJuIHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2s9dCx0aGlzfV9vbkNoYW5nZUNhbGxiYWNrKCl7fX1Qc3QucHJvdG90eXBlLmlzUXVhdGVybmlvbj0hMDtjbGFzcyB3c3R7Y29uc3RydWN0b3IodD0wLGU9MCxuPTApe3RoaXMueD10LHRoaXMueT1lLHRoaXMuej1ufXNldCh0LGUsbil7cmV0dXJuIHZvaWQgMD09PW4mJihuPXRoaXMueiksdGhpcy54PXQsdGhpcy55PWUsdGhpcy56PW4sdGhpc31zZXRTY2FsYXIodCl7cmV0dXJuIHRoaXMueD10LHRoaXMueT10LHRoaXMuej10LHRoaXN9c2V0WCh0KXtyZXR1cm4gdGhpcy54PXQsdGhpc31zZXRZKHQpe3JldHVybiB0aGlzLnk9dCx0aGlzfXNldFoodCl7cmV0dXJuIHRoaXMuej10LHRoaXN9c2V0Q29tcG9uZW50KHQsZSl7c3dpdGNoKHQpe2Nhc2UgMDp0aGlzLng9ZTticmVhaztjYXNlIDE6dGhpcy55PWU7YnJlYWs7Y2FzZSAyOnRoaXMuej1lO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJpbmRleCBpcyBvdXQgb2YgcmFuZ2U6ICIrdCl9cmV0dXJuIHRoaXN9Z2V0Q29tcG9uZW50KHQpe3N3aXRjaCh0KXtjYXNlIDA6cmV0dXJuIHRoaXMueDtjYXNlIDE6cmV0dXJuIHRoaXMueTtjYXNlIDI6cmV0dXJuIHRoaXMuejtkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiaW5kZXggaXMgb3V0IG9mIHJhbmdlOiAiK3QpfX1jbG9uZSgpe3JldHVybiBuZXcgdGhpcy5jb25zdHJ1Y3Rvcih0aGlzLngsdGhpcy55LHRoaXMueil9Y29weSh0KXtyZXR1cm4gdGhpcy54PXQueCx0aGlzLnk9dC55LHRoaXMuej10LnosdGhpc31hZGQodCxlKXtyZXR1cm4gdm9pZCAwIT09ZT8oY29uc29sZS53YXJuKCJUSFJFRS5WZWN0b3IzOiAuYWRkKCkgbm93IG9ubHkgYWNjZXB0cyBvbmUgYXJndW1lbnQuIFVzZSAuYWRkVmVjdG9ycyggYSwgYiApIGluc3RlYWQuIiksdGhpcy5hZGRWZWN0b3JzKHQsZSkpOih0aGlzLngrPXQueCx0aGlzLnkrPXQueSx0aGlzLnorPXQueix0aGlzKX1hZGRTY2FsYXIodCl7cmV0dXJuIHRoaXMueCs9dCx0aGlzLnkrPXQsdGhpcy56Kz10LHRoaXN9YWRkVmVjdG9ycyh0LGUpe3JldHVybiB0aGlzLng9dC54K2UueCx0aGlzLnk9dC55K2UueSx0aGlzLno9dC56K2Uueix0aGlzfWFkZFNjYWxlZFZlY3Rvcih0LGUpe3JldHVybiB0aGlzLngrPXQueCplLHRoaXMueSs9dC55KmUsdGhpcy56Kz10LnoqZSx0aGlzfXN1Yih0LGUpe3JldHVybiB2b2lkIDAhPT1lPyhjb25zb2xlLndhcm4oIlRIUkVFLlZlY3RvcjM6IC5zdWIoKSBub3cgb25seSBhY2NlcHRzIG9uZSBhcmd1bWVudC4gVXNlIC5zdWJWZWN0b3JzKCBhLCBiICkgaW5zdGVhZC4iKSx0aGlzLnN1YlZlY3RvcnModCxlKSk6KHRoaXMueC09dC54LHRoaXMueS09dC55LHRoaXMuei09dC56LHRoaXMpfXN1YlNjYWxhcih0KXtyZXR1cm4gdGhpcy54LT10LHRoaXMueS09dCx0aGlzLnotPXQsdGhpc31zdWJWZWN0b3JzKHQsZSl7cmV0dXJuIHRoaXMueD10LngtZS54LHRoaXMueT10LnktZS55LHRoaXMuej10LnotZS56LHRoaXN9bXVsdGlwbHkodCxlKXtyZXR1cm4gdm9pZCAwIT09ZT8oY29uc29sZS53YXJuKCJUSFJFRS5WZWN0b3IzOiAubXVsdGlwbHkoKSBub3cgb25seSBhY2NlcHRzIG9uZSBhcmd1bWVudC4gVXNlIC5tdWx0aXBseVZlY3RvcnMoIGEsIGIgKSBpbnN0ZWFkLiIpLHRoaXMubXVsdGlwbHlWZWN0b3JzKHQsZSkpOih0aGlzLngqPXQueCx0aGlzLnkqPXQueSx0aGlzLnoqPXQueix0aGlzKX1tdWx0aXBseVNjYWxhcih0KXtyZXR1cm4gdGhpcy54Kj10LHRoaXMueSo9dCx0aGlzLnoqPXQsdGhpc31tdWx0aXBseVZlY3RvcnModCxlKXtyZXR1cm4gdGhpcy54PXQueCplLngsdGhpcy55PXQueSplLnksdGhpcy56PXQueiplLnosdGhpc31hcHBseUV1bGVyKHQpe3JldHVybiB0JiZ0LmlzRXVsZXJ8fGNvbnNvbGUuZXJyb3IoIlRIUkVFLlZlY3RvcjM6IC5hcHBseUV1bGVyKCkgbm93IGV4cGVjdHMgYW4gRXVsZXIgcm90YXRpb24gcmF0aGVyIHRoYW4gYSBWZWN0b3IzIGFuZCBvcmRlci4iKSx0aGlzLmFwcGx5UXVhdGVybmlvbihTc3Quc2V0RnJvbUV1bGVyKHQpKX1hcHBseUF4aXNBbmdsZSh0LGUpe3JldHVybiB0aGlzLmFwcGx5UXVhdGVybmlvbihTc3Quc2V0RnJvbUF4aXNBbmdsZSh0LGUpKX1hcHBseU1hdHJpeDModCl7Y29uc3QgZT10aGlzLngsbj10aGlzLnksbz10aGlzLnosaT10LmVsZW1lbnRzO3JldHVybiB0aGlzLng9aVswXSplK2lbM10qbitpWzZdKm8sdGhpcy55PWlbMV0qZStpWzRdKm4raVs3XSpvLHRoaXMuej1pWzJdKmUraVs1XSpuK2lbOF0qbyx0aGlzfWFwcGx5Tm9ybWFsTWF0cml4KHQpe3JldHVybiB0aGlzLmFwcGx5TWF0cml4Myh0KS5ub3JtYWxpemUoKX1hcHBseU1hdHJpeDQodCl7Y29uc3QgZT10aGlzLngsbj10aGlzLnksbz10aGlzLnosaT10LmVsZW1lbnRzLGE9MS8oaVszXSplK2lbN10qbitpWzExXSpvK2lbMTVdKTtyZXR1cm4gdGhpcy54PShpWzBdKmUraVs0XSpuK2lbOF0qbytpWzEyXSkqYSx0aGlzLnk9KGlbMV0qZStpWzVdKm4raVs5XSpvK2lbMTNdKSphLHRoaXMuej0oaVsyXSplK2lbNl0qbitpWzEwXSpvK2lbMTRdKSphLHRoaXN9YXBwbHlRdWF0ZXJuaW9uKHQpe2NvbnN0IGU9dGhpcy54LG49dGhpcy55LG89dGhpcy56LGk9dC54LGE9dC55LHI9dC56LHM9dC53LGw9cyplK2Eqby1yKm4sYz1zKm4rciplLWkqbyxkPXMqbytpKm4tYSplLHA9LWkqZS1hKm4tcipvO3JldHVybiB0aGlzLng9bCpzK3AqLWkrYyotci1kKi1hLHRoaXMueT1jKnMrcCotYStkKi1pLWwqLXIsdGhpcy56PWQqcytwKi1yK2wqLWEtYyotaSx0aGlzfXByb2plY3QodCl7cmV0dXJuIHRoaXMuYXBwbHlNYXRyaXg0KHQubWF0cml4V29ybGRJbnZlcnNlKS5hcHBseU1hdHJpeDQodC5wcm9qZWN0aW9uTWF0cml4KX11bnByb2plY3QodCl7cmV0dXJuIHRoaXMuYXBwbHlNYXRyaXg0KHQucHJvamVjdGlvbk1hdHJpeEludmVyc2UpLmFwcGx5TWF0cml4NCh0Lm1hdHJpeFdvcmxkKX10cmFuc2Zvcm1EaXJlY3Rpb24odCl7Y29uc3QgZT10aGlzLngsbj10aGlzLnksbz10aGlzLnosaT10LmVsZW1lbnRzO3JldHVybiB0aGlzLng9aVswXSplK2lbNF0qbitpWzhdKm8sdGhpcy55PWlbMV0qZStpWzVdKm4raVs5XSpvLHRoaXMuej1pWzJdKmUraVs2XSpuK2lbMTBdKm8sdGhpcy5ub3JtYWxpemUoKX1kaXZpZGUodCl7cmV0dXJuIHRoaXMueC89dC54LHRoaXMueS89dC55LHRoaXMuei89dC56LHRoaXN9ZGl2aWRlU2NhbGFyKHQpe3JldHVybiB0aGlzLm11bHRpcGx5U2NhbGFyKDEvdCl9bWluKHQpe3JldHVybiB0aGlzLng9TWF0aC5taW4odGhpcy54LHQueCksdGhpcy55PU1hdGgubWluKHRoaXMueSx0LnkpLHRoaXMuej1NYXRoLm1pbih0aGlzLnosdC56KSx0aGlzfW1heCh0KXtyZXR1cm4gdGhpcy54PU1hdGgubWF4KHRoaXMueCx0LngpLHRoaXMueT1NYXRoLm1heCh0aGlzLnksdC55KSx0aGlzLno9TWF0aC5tYXgodGhpcy56LHQueiksdGhpc31jbGFtcCh0LGUpe3JldHVybiB0aGlzLng9TWF0aC5tYXgodC54LE1hdGgubWluKGUueCx0aGlzLngpKSx0aGlzLnk9TWF0aC5tYXgodC55LE1hdGgubWluKGUueSx0aGlzLnkpKSx0aGlzLno9TWF0aC5tYXgodC56LE1hdGgubWluKGUueix0aGlzLnopKSx0aGlzfWNsYW1wU2NhbGFyKHQsZSl7cmV0dXJuIHRoaXMueD1NYXRoLm1heCh0LE1hdGgubWluKGUsdGhpcy54KSksdGhpcy55PU1hdGgubWF4KHQsTWF0aC5taW4oZSx0aGlzLnkpKSx0aGlzLno9TWF0aC5tYXgodCxNYXRoLm1pbihlLHRoaXMueikpLHRoaXN9Y2xhbXBMZW5ndGgodCxlKXtjb25zdCBuPXRoaXMubGVuZ3RoKCk7cmV0dXJuIHRoaXMuZGl2aWRlU2NhbGFyKG58fDEpLm11bHRpcGx5U2NhbGFyKE1hdGgubWF4KHQsTWF0aC5taW4oZSxuKSkpfWZsb29yKCl7cmV0dXJuIHRoaXMueD1NYXRoLmZsb29yKHRoaXMueCksdGhpcy55PU1hdGguZmxvb3IodGhpcy55KSx0aGlzLno9TWF0aC5mbG9vcih0aGlzLnopLHRoaXN9Y2VpbCgpe3JldHVybiB0aGlzLng9TWF0aC5jZWlsKHRoaXMueCksdGhpcy55PU1hdGguY2VpbCh0aGlzLnkpLHRoaXMuej1NYXRoLmNlaWwodGhpcy56KSx0aGlzfXJvdW5kKCl7cmV0dXJuIHRoaXMueD1NYXRoLnJvdW5kKHRoaXMueCksdGhpcy55PU1hdGgucm91bmQodGhpcy55KSx0aGlzLno9TWF0aC5yb3VuZCh0aGlzLnopLHRoaXN9cm91bmRUb1plcm8oKXtyZXR1cm4gdGhpcy54PXRoaXMueDwwP01hdGguY2VpbCh0aGlzLngpOk1hdGguZmxvb3IodGhpcy54KSx0aGlzLnk9dGhpcy55PDA/TWF0aC5jZWlsKHRoaXMueSk6TWF0aC5mbG9vcih0aGlzLnkpLHRoaXMuej10aGlzLno8MD9NYXRoLmNlaWwodGhpcy56KTpNYXRoLmZsb29yKHRoaXMueiksdGhpc31uZWdhdGUoKXtyZXR1cm4gdGhpcy54PS10aGlzLngsdGhpcy55PS10aGlzLnksdGhpcy56PS10aGlzLnosdGhpc31kb3QodCl7cmV0dXJuIHRoaXMueCp0LngrdGhpcy55KnQueSt0aGlzLnoqdC56fWxlbmd0aFNxKCl7cmV0dXJuIHRoaXMueCp0aGlzLngrdGhpcy55KnRoaXMueSt0aGlzLnoqdGhpcy56fWxlbmd0aCgpe3JldHVybiBNYXRoLnNxcnQodGhpcy54KnRoaXMueCt0aGlzLnkqdGhpcy55K3RoaXMueip0aGlzLnopfW1hbmhhdHRhbkxlbmd0aCgpe3JldHVybiBNYXRoLmFicyh0aGlzLngpK01hdGguYWJzKHRoaXMueSkrTWF0aC5hYnModGhpcy56KX1ub3JtYWxpemUoKXtyZXR1cm4gdGhpcy5kaXZpZGVTY2FsYXIodGhpcy5sZW5ndGgoKXx8MSl9c2V0TGVuZ3RoKHQpe3JldHVybiB0aGlzLm5vcm1hbGl6ZSgpLm11bHRpcGx5U2NhbGFyKHQpfWxlcnAodCxlKXtyZXR1cm4gdGhpcy54Kz0odC54LXRoaXMueCkqZSx0aGlzLnkrPSh0LnktdGhpcy55KSplLHRoaXMueis9KHQuei10aGlzLnopKmUsdGhpc31sZXJwVmVjdG9ycyh0LGUsbil7cmV0dXJuIHRoaXMueD10LngrKGUueC10LngpKm4sdGhpcy55PXQueSsoZS55LXQueSkqbix0aGlzLno9dC56KyhlLnotdC56KSpuLHRoaXN9Y3Jvc3ModCxlKXtyZXR1cm4gdm9pZCAwIT09ZT8oY29uc29sZS53YXJuKCJUSFJFRS5WZWN0b3IzOiAuY3Jvc3MoKSBub3cgb25seSBhY2NlcHRzIG9uZSBhcmd1bWVudC4gVXNlIC5jcm9zc1ZlY3RvcnMoIGEsIGIgKSBpbnN0ZWFkLiIpLHRoaXMuY3Jvc3NWZWN0b3JzKHQsZSkpOnRoaXMuY3Jvc3NWZWN0b3JzKHRoaXMsdCl9Y3Jvc3NWZWN0b3JzKHQsZSl7Y29uc3Qgbj10Lngsbz10LnksaT10LnosYT1lLngscj1lLnkscz1lLno7cmV0dXJuIHRoaXMueD1vKnMtaSpyLHRoaXMueT1pKmEtbipzLHRoaXMuej1uKnItbyphLHRoaXN9cHJvamVjdE9uVmVjdG9yKHQpe2NvbnN0IGU9dC5sZW5ndGhTcSgpO2lmKDA9PT1lKXJldHVybiB0aGlzLnNldCgwLDAsMCk7Y29uc3Qgbj10LmRvdCh0aGlzKS9lO3JldHVybiB0aGlzLmNvcHkodCkubXVsdGlwbHlTY2FsYXIobil9cHJvamVjdE9uUGxhbmUodCl7cmV0dXJuIGtzdC5jb3B5KHRoaXMpLnByb2plY3RPblZlY3Rvcih0KSx0aGlzLnN1Yihrc3QpfXJlZmxlY3QodCl7cmV0dXJuIHRoaXMuc3ViKGtzdC5jb3B5KHQpLm11bHRpcGx5U2NhbGFyKDIqdGhpcy5kb3QodCkpKX1hbmdsZVRvKHQpe2NvbnN0IGU9TWF0aC5zcXJ0KHRoaXMubGVuZ3RoU3EoKSp0Lmxlbmd0aFNxKCkpO2lmKDA9PT1lKXJldHVybiBNYXRoLlBJLzI7Y29uc3Qgbj10aGlzLmRvdCh0KS9lO3JldHVybiBNYXRoLmFjb3MocHN0KG4sLTEsMSkpfWRpc3RhbmNlVG8odCl7cmV0dXJuIE1hdGguc3FydCh0aGlzLmRpc3RhbmNlVG9TcXVhcmVkKHQpKX1kaXN0YW5jZVRvU3F1YXJlZCh0KXtjb25zdCBlPXRoaXMueC10Lngsbj10aGlzLnktdC55LG89dGhpcy56LXQuejtyZXR1cm4gZSplK24qbitvKm99bWFuaGF0dGFuRGlzdGFuY2VUbyh0KXtyZXR1cm4gTWF0aC5hYnModGhpcy54LXQueCkrTWF0aC5hYnModGhpcy55LXQueSkrTWF0aC5hYnModGhpcy56LXQueil9c2V0RnJvbVNwaGVyaWNhbCh0KXtyZXR1cm4gdGhpcy5zZXRGcm9tU3BoZXJpY2FsQ29vcmRzKHQucmFkaXVzLHQucGhpLHQudGhldGEpfXNldEZyb21TcGhlcmljYWxDb29yZHModCxlLG4pe2NvbnN0IG89TWF0aC5zaW4oZSkqdDtyZXR1cm4gdGhpcy54PW8qTWF0aC5zaW4obiksdGhpcy55PU1hdGguY29zKGUpKnQsdGhpcy56PW8qTWF0aC5jb3MobiksdGhpc31zZXRGcm9tQ3lsaW5kcmljYWwodCl7cmV0dXJuIHRoaXMuc2V0RnJvbUN5bGluZHJpY2FsQ29vcmRzKHQucmFkaXVzLHQudGhldGEsdC55KX1zZXRGcm9tQ3lsaW5kcmljYWxDb29yZHModCxlLG4pe3JldHVybiB0aGlzLng9dCpNYXRoLnNpbihlKSx0aGlzLnk9bix0aGlzLno9dCpNYXRoLmNvcyhlKSx0aGlzfXNldEZyb21NYXRyaXhQb3NpdGlvbih0KXtjb25zdCBlPXQuZWxlbWVudHM7cmV0dXJuIHRoaXMueD1lWzEyXSx0aGlzLnk9ZVsxM10sdGhpcy56PWVbMTRdLHRoaXN9c2V0RnJvbU1hdHJpeFNjYWxlKHQpe2NvbnN0IGU9dGhpcy5zZXRGcm9tTWF0cml4Q29sdW1uKHQsMCkubGVuZ3RoKCksbj10aGlzLnNldEZyb21NYXRyaXhDb2x1bW4odCwxKS5sZW5ndGgoKSxvPXRoaXMuc2V0RnJvbU1hdHJpeENvbHVtbih0LDIpLmxlbmd0aCgpO3JldHVybiB0aGlzLng9ZSx0aGlzLnk9bix0aGlzLno9byx0aGlzfXNldEZyb21NYXRyaXhDb2x1bW4odCxlKXtyZXR1cm4gdGhpcy5mcm9tQXJyYXkodC5lbGVtZW50cyw0KmUpfXNldEZyb21NYXRyaXgzQ29sdW1uKHQsZSl7cmV0dXJuIHRoaXMuZnJvbUFycmF5KHQuZWxlbWVudHMsMyplKX1lcXVhbHModCl7cmV0dXJuIHQueD09PXRoaXMueCYmdC55PT09dGhpcy55JiZ0Lno9PT10aGlzLnp9ZnJvbUFycmF5KHQsZT0wKXtyZXR1cm4gdGhpcy54PXRbZV0sdGhpcy55PXRbZSsxXSx0aGlzLno9dFtlKzJdLHRoaXN9dG9BcnJheSh0PVtdLGU9MCl7cmV0dXJuIHRbZV09dGhpcy54LHRbZSsxXT10aGlzLnksdFtlKzJdPXRoaXMueix0fWZyb21CdWZmZXJBdHRyaWJ1dGUodCxlLG4pe3JldHVybiB2b2lkIDAhPT1uJiZjb25zb2xlLndhcm4oIlRIUkVFLlZlY3RvcjM6IG9mZnNldCBoYXMgYmVlbiByZW1vdmVkIGZyb20gLmZyb21CdWZmZXJBdHRyaWJ1dGUoKS4iKSx0aGlzLng9dC5nZXRYKGUpLHRoaXMueT10LmdldFkoZSksdGhpcy56PXQuZ2V0WihlKSx0aGlzfXJhbmRvbSgpe3JldHVybiB0aGlzLng9TWF0aC5yYW5kb20oKSx0aGlzLnk9TWF0aC5yYW5kb20oKSx0aGlzLno9TWF0aC5yYW5kb20oKSx0aGlzfX13c3QucHJvdG90eXBlLmlzVmVjdG9yMz0hMDtjb25zdCBrc3Q9bmV3IHdzdCxTc3Q9bmV3IFBzdDtjbGFzcyBEc3R7Y29uc3RydWN0b3IodD1uZXcgd3N0KDEvMCwxLzAsMS8wKSxlPW5ldyB3c3QoLTEvMCwtMS8wLC0xLzApKXt0aGlzLm1pbj10LHRoaXMubWF4PWV9c2V0KHQsZSl7cmV0dXJuIHRoaXMubWluLmNvcHkodCksdGhpcy5tYXguY29weShlKSx0aGlzfXNldEZyb21BcnJheSh0KXtsZXQgZT0xLzAsbj0xLzAsbz0xLzAsaT0tMS8wLGE9LTEvMCxyPS0xLzA7Zm9yKGxldCBzPTAsbD10Lmxlbmd0aDtzPGw7cys9Myl7Y29uc3QgbD10W3NdLGM9dFtzKzFdLGQ9dFtzKzJdO2w8ZSYmKGU9bCksYzxuJiYobj1jKSxkPG8mJihvPWQpLGw+aSYmKGk9bCksYz5hJiYoYT1jKSxkPnImJihyPWQpfXJldHVybiB0aGlzLm1pbi5zZXQoZSxuLG8pLHRoaXMubWF4LnNldChpLGEsciksdGhpc31zZXRGcm9tQnVmZmVyQXR0cmlidXRlKHQpe2xldCBlPTEvMCxuPTEvMCxvPTEvMCxpPS0xLzAsYT0tMS8wLHI9LTEvMDtmb3IobGV0IHM9MCxsPXQuY291bnQ7czxsO3MrKyl7Y29uc3QgbD10LmdldFgocyksYz10LmdldFkocyksZD10LmdldFoocyk7bDxlJiYoZT1sKSxjPG4mJihuPWMpLGQ8byYmKG89ZCksbD5pJiYoaT1sKSxjPmEmJihhPWMpLGQ+ciYmKHI9ZCl9cmV0dXJuIHRoaXMubWluLnNldChlLG4sbyksdGhpcy5tYXguc2V0KGksYSxyKSx0aGlzfXNldEZyb21Qb2ludHModCl7dGhpcy5tYWtlRW1wdHkoKTtmb3IobGV0IGU9MCxuPXQubGVuZ3RoO2U8bjtlKyspdGhpcy5leHBhbmRCeVBvaW50KHRbZV0pO3JldHVybiB0aGlzfXNldEZyb21DZW50ZXJBbmRTaXplKHQsZSl7Y29uc3Qgbj1Fc3QuY29weShlKS5tdWx0aXBseVNjYWxhciguNSk7cmV0dXJuIHRoaXMubWluLmNvcHkodCkuc3ViKG4pLHRoaXMubWF4LmNvcHkodCkuYWRkKG4pLHRoaXN9c2V0RnJvbU9iamVjdCh0KXtyZXR1cm4gdGhpcy5tYWtlRW1wdHkoKSx0aGlzLmV4cGFuZEJ5T2JqZWN0KHQpfWNsb25lKCl7cmV0dXJuKG5ldyB0aGlzLmNvbnN0cnVjdG9yKS5jb3B5KHRoaXMpfWNvcHkodCl7cmV0dXJuIHRoaXMubWluLmNvcHkodC5taW4pLHRoaXMubWF4LmNvcHkodC5tYXgpLHRoaXN9bWFrZUVtcHR5KCl7cmV0dXJuIHRoaXMubWluLng9dGhpcy5taW4ueT10aGlzLm1pbi56PTEvMCx0aGlzLm1heC54PXRoaXMubWF4Lnk9dGhpcy5tYXguej0tMS8wLHRoaXN9aXNFbXB0eSgpe3JldHVybiB0aGlzLm1heC54PHRoaXMubWluLnh8fHRoaXMubWF4Lnk8dGhpcy5taW4ueXx8dGhpcy5tYXguejx0aGlzLm1pbi56fWdldENlbnRlcih0KXtyZXR1cm4gdGhpcy5pc0VtcHR5KCk/dC5zZXQoMCwwLDApOnQuYWRkVmVjdG9ycyh0aGlzLm1pbix0aGlzLm1heCkubXVsdGlwbHlTY2FsYXIoLjUpfWdldFNpemUodCl7cmV0dXJuIHRoaXMuaXNFbXB0eSgpP3Quc2V0KDAsMCwwKTp0LnN1YlZlY3RvcnModGhpcy5tYXgsdGhpcy5taW4pfWV4cGFuZEJ5UG9pbnQodCl7cmV0dXJuIHRoaXMubWluLm1pbih0KSx0aGlzLm1heC5tYXgodCksdGhpc31leHBhbmRCeVZlY3Rvcih0KXtyZXR1cm4gdGhpcy5taW4uc3ViKHQpLHRoaXMubWF4LmFkZCh0KSx0aGlzfWV4cGFuZEJ5U2NhbGFyKHQpe3JldHVybiB0aGlzLm1pbi5hZGRTY2FsYXIoLXQpLHRoaXMubWF4LmFkZFNjYWxhcih0KSx0aGlzfWV4cGFuZEJ5T2JqZWN0KHQpe3QudXBkYXRlV29ybGRNYXRyaXgoITEsITEpO2NvbnN0IGU9dC5nZW9tZXRyeTt2b2lkIDAhPT1lJiYobnVsbD09PWUuYm91bmRpbmdCb3gmJmUuY29tcHV0ZUJvdW5kaW5nQm94KCksQXN0LmNvcHkoZS5ib3VuZGluZ0JveCksQXN0LmFwcGx5TWF0cml4NCh0Lm1hdHJpeFdvcmxkKSx0aGlzLnVuaW9uKEFzdCkpO2NvbnN0IG49dC5jaGlsZHJlbjtmb3IobGV0IHQ9MCxlPW4ubGVuZ3RoO3Q8ZTt0KyspdGhpcy5leHBhbmRCeU9iamVjdChuW3RdKTtyZXR1cm4gdGhpc31jb250YWluc1BvaW50KHQpe3JldHVybiEodC54PHRoaXMubWluLnh8fHQueD50aGlzLm1heC54fHx0Lnk8dGhpcy5taW4ueXx8dC55PnRoaXMubWF4Lnl8fHQuejx0aGlzLm1pbi56fHx0Lno+dGhpcy5tYXgueil9Y29udGFpbnNCb3godCl7cmV0dXJuIHRoaXMubWluLng8PXQubWluLngmJnQubWF4Lng8PXRoaXMubWF4LngmJnRoaXMubWluLnk8PXQubWluLnkmJnQubWF4Lnk8PXRoaXMubWF4LnkmJnRoaXMubWluLno8PXQubWluLnomJnQubWF4Lno8PXRoaXMubWF4Lnp9Z2V0UGFyYW1ldGVyKHQsZSl7cmV0dXJuIGUuc2V0KCh0LngtdGhpcy5taW4ueCkvKHRoaXMubWF4LngtdGhpcy5taW4ueCksKHQueS10aGlzLm1pbi55KS8odGhpcy5tYXgueS10aGlzLm1pbi55KSwodC56LXRoaXMubWluLnopLyh0aGlzLm1heC56LXRoaXMubWluLnopKX1pbnRlcnNlY3RzQm94KHQpe3JldHVybiEodC5tYXgueDx0aGlzLm1pbi54fHx0Lm1pbi54PnRoaXMubWF4Lnh8fHQubWF4Lnk8dGhpcy5taW4ueXx8dC5taW4ueT50aGlzLm1heC55fHx0Lm1heC56PHRoaXMubWluLnp8fHQubWluLno+dGhpcy5tYXgueil9aW50ZXJzZWN0c1NwaGVyZSh0KXtyZXR1cm4gdGhpcy5jbGFtcFBvaW50KHQuY2VudGVyLEVzdCksRXN0LmRpc3RhbmNlVG9TcXVhcmVkKHQuY2VudGVyKTw9dC5yYWRpdXMqdC5yYWRpdXN9aW50ZXJzZWN0c1BsYW5lKHQpe2xldCBlLG47cmV0dXJuIHQubm9ybWFsLng+MD8oZT10Lm5vcm1hbC54KnRoaXMubWluLngsbj10Lm5vcm1hbC54KnRoaXMubWF4LngpOihlPXQubm9ybWFsLngqdGhpcy5tYXgueCxuPXQubm9ybWFsLngqdGhpcy5taW4ueCksdC5ub3JtYWwueT4wPyhlKz10Lm5vcm1hbC55KnRoaXMubWluLnksbis9dC5ub3JtYWwueSp0aGlzLm1heC55KTooZSs9dC5ub3JtYWwueSp0aGlzLm1heC55LG4rPXQubm9ybWFsLnkqdGhpcy5taW4ueSksdC5ub3JtYWwuej4wPyhlKz10Lm5vcm1hbC56KnRoaXMubWluLnosbis9dC5ub3JtYWwueip0aGlzLm1heC56KTooZSs9dC5ub3JtYWwueip0aGlzLm1heC56LG4rPXQubm9ybWFsLnoqdGhpcy5taW4ueiksZTw9LXQuY29uc3RhbnQmJm4+PS10LmNvbnN0YW50fWludGVyc2VjdHNUcmlhbmdsZSh0KXtpZih0aGlzLmlzRW1wdHkoKSlyZXR1cm4hMTt0aGlzLmdldENlbnRlcihMc3QpLEJzdC5zdWJWZWN0b3JzKHRoaXMubWF4LExzdCksVHN0LnN1YlZlY3RvcnModC5hLExzdCksTnN0LnN1YlZlY3RvcnModC5iLExzdCksenN0LnN1YlZlY3RvcnModC5jLExzdCksSXN0LnN1YlZlY3RvcnMoTnN0LFRzdCksSHN0LnN1YlZlY3RvcnMoenN0LE5zdCksRnN0LnN1YlZlY3RvcnMoVHN0LHpzdCk7bGV0IGU9WzAsLUlzdC56LElzdC55LDAsLUhzdC56LEhzdC55LDAsLUZzdC56LEZzdC55LElzdC56LDAsLUlzdC54LEhzdC56LDAsLUhzdC54LEZzdC56LDAsLUZzdC54LC1Jc3QueSxJc3QueCwwLC1Ic3QueSxIc3QueCwwLC1Gc3QueSxGc3QueCwwXTtyZXR1cm4hIVVzdChlLFRzdCxOc3QsenN0LEJzdCkmJihlPVsxLDAsMCwwLDEsMCwwLDAsMV0sISFVc3QoZSxUc3QsTnN0LHpzdCxCc3QpJiYoVnN0LmNyb3NzVmVjdG9ycyhJc3QsSHN0KSxlPVtWc3QueCxWc3QueSxWc3Quel0sVXN0KGUsVHN0LE5zdCx6c3QsQnN0KSkpfWNsYW1wUG9pbnQodCxlKXtyZXR1cm4gZS5jb3B5KHQpLmNsYW1wKHRoaXMubWluLHRoaXMubWF4KX1kaXN0YW5jZVRvUG9pbnQodCl7cmV0dXJuIEVzdC5jb3B5KHQpLmNsYW1wKHRoaXMubWluLHRoaXMubWF4KS5zdWIodCkubGVuZ3RoKCl9Z2V0Qm91bmRpbmdTcGhlcmUodCl7cmV0dXJuIHRoaXMuZ2V0Q2VudGVyKHQuY2VudGVyKSx0LnJhZGl1cz0uNSp0aGlzLmdldFNpemUoRXN0KS5sZW5ndGgoKSx0fWludGVyc2VjdCh0KXtyZXR1cm4gdGhpcy5taW4ubWF4KHQubWluKSx0aGlzLm1heC5taW4odC5tYXgpLHRoaXMuaXNFbXB0eSgpJiZ0aGlzLm1ha2VFbXB0eSgpLHRoaXN9dW5pb24odCl7cmV0dXJuIHRoaXMubWluLm1pbih0Lm1pbiksdGhpcy5tYXgubWF4KHQubWF4KSx0aGlzfWFwcGx5TWF0cml4NCh0KXtyZXR1cm4gdGhpcy5pc0VtcHR5KCl8fChSc3RbMF0uc2V0KHRoaXMubWluLngsdGhpcy5taW4ueSx0aGlzLm1pbi56KS5hcHBseU1hdHJpeDQodCksUnN0WzFdLnNldCh0aGlzLm1pbi54LHRoaXMubWluLnksdGhpcy5tYXgueikuYXBwbHlNYXRyaXg0KHQpLFJzdFsyXS5zZXQodGhpcy5taW4ueCx0aGlzLm1heC55LHRoaXMubWluLnopLmFwcGx5TWF0cml4NCh0KSxSc3RbM10uc2V0KHRoaXMubWluLngsdGhpcy5tYXgueSx0aGlzLm1heC56KS5hcHBseU1hdHJpeDQodCksUnN0WzRdLnNldCh0aGlzLm1heC54LHRoaXMubWluLnksdGhpcy5taW4ueikuYXBwbHlNYXRyaXg0KHQpLFJzdFs1XS5zZXQodGhpcy5tYXgueCx0aGlzLm1pbi55LHRoaXMubWF4LnopLmFwcGx5TWF0cml4NCh0KSxSc3RbNl0uc2V0KHRoaXMubWF4LngsdGhpcy5tYXgueSx0aGlzLm1pbi56KS5hcHBseU1hdHJpeDQodCksUnN0WzddLnNldCh0aGlzLm1heC54LHRoaXMubWF4LnksdGhpcy5tYXgueikuYXBwbHlNYXRyaXg0KHQpLHRoaXMuc2V0RnJvbVBvaW50cyhSc3QpKSx0aGlzfXRyYW5zbGF0ZSh0KXtyZXR1cm4gdGhpcy5taW4uYWRkKHQpLHRoaXMubWF4LmFkZCh0KSx0aGlzfWVxdWFscyh0KXtyZXR1cm4gdC5taW4uZXF1YWxzKHRoaXMubWluKSYmdC5tYXguZXF1YWxzKHRoaXMubWF4KX19RHN0LnByb3RvdHlwZS5pc0JveDM9ITA7Y29uc3QgUnN0PVtuZXcgd3N0LG5ldyB3c3QsbmV3IHdzdCxuZXcgd3N0LG5ldyB3c3QsbmV3IHdzdCxuZXcgd3N0LG5ldyB3c3RdLEVzdD1uZXcgd3N0LEFzdD1uZXcgRHN0LFRzdD1uZXcgd3N0LE5zdD1uZXcgd3N0LHpzdD1uZXcgd3N0LElzdD1uZXcgd3N0LEhzdD1uZXcgd3N0LEZzdD1uZXcgd3N0LExzdD1uZXcgd3N0LEJzdD1uZXcgd3N0LFZzdD1uZXcgd3N0LGpzdD1uZXcgd3N0O2Z1bmN0aW9uIFVzdCh0LGUsbixvLGkpe2ZvcihsZXQgYT0wLHI9dC5sZW5ndGgtMzthPD1yO2ErPTMpe2pzdC5mcm9tQXJyYXkodCxhKTtjb25zdCByPWkueCpNYXRoLmFicyhqc3QueCkraS55Kk1hdGguYWJzKGpzdC55KStpLnoqTWF0aC5hYnMoanN0LnopLHM9ZS5kb3QoanN0KSxsPW4uZG90KGpzdCksYz1vLmRvdChqc3QpO2lmKE1hdGgubWF4KC1NYXRoLm1heChzLGwsYyksTWF0aC5taW4ocyxsLGMpKT5yKXJldHVybiExfXJldHVybiEwfWNvbnN0IFdzdD1uZXcgRHN0LEdzdD1uZXcgd3N0LFlzdD1uZXcgd3N0LHFzdD1uZXcgd3N0O2NsYXNzIFpzdHtjb25zdHJ1Y3Rvcih0PW5ldyB3c3QsZT0tMSl7dGhpcy5jZW50ZXI9dCx0aGlzLnJhZGl1cz1lfXNldCh0LGUpe3JldHVybiB0aGlzLmNlbnRlci5jb3B5KHQpLHRoaXMucmFkaXVzPWUsdGhpc31zZXRGcm9tUG9pbnRzKHQsZSl7Y29uc3Qgbj10aGlzLmNlbnRlcjt2b2lkIDAhPT1lP24uY29weShlKTpXc3Quc2V0RnJvbVBvaW50cyh0KS5nZXRDZW50ZXIobik7bGV0IG89MDtmb3IobGV0IGU9MCxpPXQubGVuZ3RoO2U8aTtlKyspbz1NYXRoLm1heChvLG4uZGlzdGFuY2VUb1NxdWFyZWQodFtlXSkpO3JldHVybiB0aGlzLnJhZGl1cz1NYXRoLnNxcnQobyksdGhpc31jb3B5KHQpe3JldHVybiB0aGlzLmNlbnRlci5jb3B5KHQuY2VudGVyKSx0aGlzLnJhZGl1cz10LnJhZGl1cyx0aGlzfWlzRW1wdHkoKXtyZXR1cm4gdGhpcy5yYWRpdXM8MH1tYWtlRW1wdHkoKXtyZXR1cm4gdGhpcy5jZW50ZXIuc2V0KDAsMCwwKSx0aGlzLnJhZGl1cz0tMSx0aGlzfWNvbnRhaW5zUG9pbnQodCl7cmV0dXJuIHQuZGlzdGFuY2VUb1NxdWFyZWQodGhpcy5jZW50ZXIpPD10aGlzLnJhZGl1cyp0aGlzLnJhZGl1c31kaXN0YW5jZVRvUG9pbnQodCl7cmV0dXJuIHQuZGlzdGFuY2VUbyh0aGlzLmNlbnRlciktdGhpcy5yYWRpdXN9aW50ZXJzZWN0c1NwaGVyZSh0KXtjb25zdCBlPXRoaXMucmFkaXVzK3QucmFkaXVzO3JldHVybiB0LmNlbnRlci5kaXN0YW5jZVRvU3F1YXJlZCh0aGlzLmNlbnRlcik8PWUqZX1pbnRlcnNlY3RzQm94KHQpe3JldHVybiB0LmludGVyc2VjdHNTcGhlcmUodGhpcyl9aW50ZXJzZWN0c1BsYW5lKHQpe3JldHVybiBNYXRoLmFicyh0LmRpc3RhbmNlVG9Qb2ludCh0aGlzLmNlbnRlcikpPD10aGlzLnJhZGl1c31jbGFtcFBvaW50KHQsZSl7Y29uc3Qgbj10aGlzLmNlbnRlci5kaXN0YW5jZVRvU3F1YXJlZCh0KTtyZXR1cm4gZS5jb3B5KHQpLG4+dGhpcy5yYWRpdXMqdGhpcy5yYWRpdXMmJihlLnN1Yih0aGlzLmNlbnRlcikubm9ybWFsaXplKCksZS5tdWx0aXBseVNjYWxhcih0aGlzLnJhZGl1cykuYWRkKHRoaXMuY2VudGVyKSksZX1nZXRCb3VuZGluZ0JveCh0KXtyZXR1cm4gdGhpcy5pc0VtcHR5KCk/KHQubWFrZUVtcHR5KCksdCk6KHQuc2V0KHRoaXMuY2VudGVyLHRoaXMuY2VudGVyKSx0LmV4cGFuZEJ5U2NhbGFyKHRoaXMucmFkaXVzKSx0KX1hcHBseU1hdHJpeDQodCl7cmV0dXJuIHRoaXMuY2VudGVyLmFwcGx5TWF0cml4NCh0KSx0aGlzLnJhZGl1cz10aGlzLnJhZGl1cyp0LmdldE1heFNjYWxlT25BeGlzKCksdGhpc310cmFuc2xhdGUodCl7cmV0dXJuIHRoaXMuY2VudGVyLmFkZCh0KSx0aGlzfWV4cGFuZEJ5UG9pbnQodCl7cXN0LnN1YlZlY3RvcnModCx0aGlzLmNlbnRlcik7Y29uc3QgZT1xc3QubGVuZ3RoU3EoKTtpZihlPnRoaXMucmFkaXVzKnRoaXMucmFkaXVzKXtjb25zdCB0PU1hdGguc3FydChlKSxuPS41Kih0LXRoaXMucmFkaXVzKTt0aGlzLmNlbnRlci5hZGQocXN0Lm11bHRpcGx5U2NhbGFyKG4vdCkpLHRoaXMucmFkaXVzKz1ufXJldHVybiB0aGlzfXVuaW9uKHQpe3JldHVybiBZc3Quc3ViVmVjdG9ycyh0LmNlbnRlcix0aGlzLmNlbnRlcikubm9ybWFsaXplKCkubXVsdGlwbHlTY2FsYXIodC5yYWRpdXMpLHRoaXMuZXhwYW5kQnlQb2ludChHc3QuY29weSh0LmNlbnRlcikuYWRkKFlzdCkpLHRoaXMuZXhwYW5kQnlQb2ludChHc3QuY29weSh0LmNlbnRlcikuc3ViKFlzdCkpLHRoaXN9ZXF1YWxzKHQpe3JldHVybiB0LmNlbnRlci5lcXVhbHModGhpcy5jZW50ZXIpJiZ0LnJhZGl1cz09PXRoaXMucmFkaXVzfWNsb25lKCl7cmV0dXJuKG5ldyB0aGlzLmNvbnN0cnVjdG9yKS5jb3B5KHRoaXMpfX1jb25zdCBYc3Q9bmV3IHdzdCxLc3Q9bmV3IHdzdCxKc3Q9bmV3IHdzdCxRc3Q9bmV3IHdzdCwkc3Q9bmV3IHdzdCx0bHQ9bmV3IHdzdCxlbHQ9bmV3IHdzdDtjbGFzcyBubHR7Y29uc3RydWN0b3IodD1uZXcgd3N0LGU9bmV3IHdzdCgwLDAsLTEpKXt0aGlzLm9yaWdpbj10LHRoaXMuZGlyZWN0aW9uPWV9c2V0KHQsZSl7cmV0dXJuIHRoaXMub3JpZ2luLmNvcHkodCksdGhpcy5kaXJlY3Rpb24uY29weShlKSx0aGlzfWNvcHkodCl7cmV0dXJuIHRoaXMub3JpZ2luLmNvcHkodC5vcmlnaW4pLHRoaXMuZGlyZWN0aW9uLmNvcHkodC5kaXJlY3Rpb24pLHRoaXN9YXQodCxlKXtyZXR1cm4gZS5jb3B5KHRoaXMuZGlyZWN0aW9uKS5tdWx0aXBseVNjYWxhcih0KS5hZGQodGhpcy5vcmlnaW4pfWxvb2tBdCh0KXtyZXR1cm4gdGhpcy5kaXJlY3Rpb24uY29weSh0KS5zdWIodGhpcy5vcmlnaW4pLm5vcm1hbGl6ZSgpLHRoaXN9cmVjYXN0KHQpe3JldHVybiB0aGlzLm9yaWdpbi5jb3B5KHRoaXMuYXQodCxYc3QpKSx0aGlzfWNsb3Nlc3RQb2ludFRvUG9pbnQodCxlKXtlLnN1YlZlY3RvcnModCx0aGlzLm9yaWdpbik7Y29uc3Qgbj1lLmRvdCh0aGlzLmRpcmVjdGlvbik7cmV0dXJuIG48MD9lLmNvcHkodGhpcy5vcmlnaW4pOmUuY29weSh0aGlzLmRpcmVjdGlvbikubXVsdGlwbHlTY2FsYXIobikuYWRkKHRoaXMub3JpZ2luKX1kaXN0YW5jZVRvUG9pbnQodCl7cmV0dXJuIE1hdGguc3FydCh0aGlzLmRpc3RhbmNlU3FUb1BvaW50KHQpKX1kaXN0YW5jZVNxVG9Qb2ludCh0KXtjb25zdCBlPVhzdC5zdWJWZWN0b3JzKHQsdGhpcy5vcmlnaW4pLmRvdCh0aGlzLmRpcmVjdGlvbik7cmV0dXJuIGU8MD90aGlzLm9yaWdpbi5kaXN0YW5jZVRvU3F1YXJlZCh0KTooWHN0LmNvcHkodGhpcy5kaXJlY3Rpb24pLm11bHRpcGx5U2NhbGFyKGUpLmFkZCh0aGlzLm9yaWdpbiksWHN0LmRpc3RhbmNlVG9TcXVhcmVkKHQpKX1kaXN0YW5jZVNxVG9TZWdtZW50KHQsZSxuLG8pe0tzdC5jb3B5KHQpLmFkZChlKS5tdWx0aXBseVNjYWxhciguNSksSnN0LmNvcHkoZSkuc3ViKHQpLm5vcm1hbGl6ZSgpLFFzdC5jb3B5KHRoaXMub3JpZ2luKS5zdWIoS3N0KTtjb25zdCBpPS41KnQuZGlzdGFuY2VUbyhlKSxhPS10aGlzLmRpcmVjdGlvbi5kb3QoSnN0KSxyPVFzdC5kb3QodGhpcy5kaXJlY3Rpb24pLHM9LVFzdC5kb3QoSnN0KSxsPVFzdC5sZW5ndGhTcSgpLGM9TWF0aC5hYnMoMS1hKmEpO2xldCBkLHAsbSxmO2lmKGM+MClpZihkPWEqcy1yLHA9YSpyLXMsZj1pKmMsZD49MClpZihwPj0tZilpZihwPD1mKXtjb25zdCB0PTEvYztkKj10LHAqPXQsbT1kKihkK2EqcCsyKnIpK3AqKGEqZCtwKzIqcykrbH1lbHNlIHA9aSxkPU1hdGgubWF4KDAsLShhKnArcikpLG09LWQqZCtwKihwKzIqcykrbDtlbHNlIHA9LWksZD1NYXRoLm1heCgwLC0oYSpwK3IpKSxtPS1kKmQrcCoocCsyKnMpK2w7ZWxzZSBwPD0tZj8oZD1NYXRoLm1heCgwLC0oLWEqaStyKSkscD1kPjA/LWk6TWF0aC5taW4oTWF0aC5tYXgoLWksLXMpLGkpLG09LWQqZCtwKihwKzIqcykrbCk6cDw9Zj8oZD0wLHA9TWF0aC5taW4oTWF0aC5tYXgoLWksLXMpLGkpLG09cCoocCsyKnMpK2wpOihkPU1hdGgubWF4KDAsLShhKmkrcikpLHA9ZD4wP2k6TWF0aC5taW4oTWF0aC5tYXgoLWksLXMpLGkpLG09LWQqZCtwKihwKzIqcykrbCk7ZWxzZSBwPWE+MD8taTppLGQ9TWF0aC5tYXgoMCwtKGEqcCtyKSksbT0tZCpkK3AqKHArMipzKStsO3JldHVybiBuJiZuLmNvcHkodGhpcy5kaXJlY3Rpb24pLm11bHRpcGx5U2NhbGFyKGQpLmFkZCh0aGlzLm9yaWdpbiksbyYmby5jb3B5KEpzdCkubXVsdGlwbHlTY2FsYXIocCkuYWRkKEtzdCksbX1pbnRlcnNlY3RTcGhlcmUodCxlKXtYc3Quc3ViVmVjdG9ycyh0LmNlbnRlcix0aGlzLm9yaWdpbik7Y29uc3Qgbj1Yc3QuZG90KHRoaXMuZGlyZWN0aW9uKSxvPVhzdC5kb3QoWHN0KS1uKm4saT10LnJhZGl1cyp0LnJhZGl1cztpZihvPmkpcmV0dXJuIG51bGw7Y29uc3QgYT1NYXRoLnNxcnQoaS1vKSxyPW4tYSxzPW4rYTtyZXR1cm4gcjwwJiZzPDA/bnVsbDp0aGlzLmF0KHI8MD9zOnIsZSl9aW50ZXJzZWN0c1NwaGVyZSh0KXtyZXR1cm4gdGhpcy5kaXN0YW5jZVNxVG9Qb2ludCh0LmNlbnRlcik8PXQucmFkaXVzKnQucmFkaXVzfWRpc3RhbmNlVG9QbGFuZSh0KXtjb25zdCBlPXQubm9ybWFsLmRvdCh0aGlzLmRpcmVjdGlvbik7aWYoMD09PWUpcmV0dXJuIDA9PT10LmRpc3RhbmNlVG9Qb2ludCh0aGlzLm9yaWdpbik/MDpudWxsO2NvbnN0IG49LSh0aGlzLm9yaWdpbi5kb3QodC5ub3JtYWwpK3QuY29uc3RhbnQpL2U7cmV0dXJuIG4+PTA/bjpudWxsfWludGVyc2VjdFBsYW5lKHQsZSl7Y29uc3Qgbj10aGlzLmRpc3RhbmNlVG9QbGFuZSh0KTtyZXR1cm4gbnVsbD09PW4/bnVsbDp0aGlzLmF0KG4sZSl9aW50ZXJzZWN0c1BsYW5lKHQpe2NvbnN0IGU9dC5kaXN0YW5jZVRvUG9pbnQodGhpcy5vcmlnaW4pO2lmKDA9PT1lKXJldHVybiEwO3JldHVybiB0Lm5vcm1hbC5kb3QodGhpcy5kaXJlY3Rpb24pKmU8MH1pbnRlcnNlY3RCb3godCxlKXtsZXQgbixvLGksYSxyLHM7Y29uc3QgbD0xL3RoaXMuZGlyZWN0aW9uLngsYz0xL3RoaXMuZGlyZWN0aW9uLnksZD0xL3RoaXMuZGlyZWN0aW9uLnoscD10aGlzLm9yaWdpbjtyZXR1cm4gbD49MD8obj0odC5taW4ueC1wLngpKmwsbz0odC5tYXgueC1wLngpKmwpOihuPSh0Lm1heC54LXAueCkqbCxvPSh0Lm1pbi54LXAueCkqbCksYz49MD8oaT0odC5taW4ueS1wLnkpKmMsYT0odC5tYXgueS1wLnkpKmMpOihpPSh0Lm1heC55LXAueSkqYyxhPSh0Lm1pbi55LXAueSkqYyksbj5hfHxpPm8/bnVsbDooKGk+bnx8biE9bikmJihuPWkpLChhPG98fG8hPW8pJiYobz1hKSxkPj0wPyhyPSh0Lm1pbi56LXAueikqZCxzPSh0Lm1heC56LXAueikqZCk6KHI9KHQubWF4LnotcC56KSpkLHM9KHQubWluLnotcC56KSpkKSxuPnN8fHI+bz9udWxsOigocj5ufHxuIT1uKSYmKG49ciksKHM8b3x8byE9bykmJihvPXMpLG88MD9udWxsOnRoaXMuYXQobj49MD9uOm8sZSkpKX1pbnRlcnNlY3RzQm94KHQpe3JldHVybiBudWxsIT09dGhpcy5pbnRlcnNlY3RCb3godCxYc3QpfWludGVyc2VjdFRyaWFuZ2xlKHQsZSxuLG8saSl7JHN0LnN1YlZlY3RvcnMoZSx0KSx0bHQuc3ViVmVjdG9ycyhuLHQpLGVsdC5jcm9zc1ZlY3RvcnMoJHN0LHRsdCk7bGV0IGEscj10aGlzLmRpcmVjdGlvbi5kb3QoZWx0KTtpZihyPjApe2lmKG8pcmV0dXJuIG51bGw7YT0xfWVsc2V7aWYoIShyPDApKXJldHVybiBudWxsO2E9LTEscj0tcn1Rc3Quc3ViVmVjdG9ycyh0aGlzLm9yaWdpbix0KTtjb25zdCBzPWEqdGhpcy5kaXJlY3Rpb24uZG90KHRsdC5jcm9zc1ZlY3RvcnMoUXN0LHRsdCkpO2lmKHM8MClyZXR1cm4gbnVsbDtjb25zdCBsPWEqdGhpcy5kaXJlY3Rpb24uZG90KCRzdC5jcm9zcyhRc3QpKTtpZihsPDApcmV0dXJuIG51bGw7aWYocytsPnIpcmV0dXJuIG51bGw7Y29uc3QgYz0tYSpRc3QuZG90KGVsdCk7cmV0dXJuIGM8MD9udWxsOnRoaXMuYXQoYy9yLGkpfWFwcGx5TWF0cml4NCh0KXtyZXR1cm4gdGhpcy5vcmlnaW4uYXBwbHlNYXRyaXg0KHQpLHRoaXMuZGlyZWN0aW9uLnRyYW5zZm9ybURpcmVjdGlvbih0KSx0aGlzfWVxdWFscyh0KXtyZXR1cm4gdC5vcmlnaW4uZXF1YWxzKHRoaXMub3JpZ2luKSYmdC5kaXJlY3Rpb24uZXF1YWxzKHRoaXMuZGlyZWN0aW9uKX1jbG9uZSgpe3JldHVybihuZXcgdGhpcy5jb25zdHJ1Y3RvcikuY29weSh0aGlzKX19Y2xhc3Mgb2x0e2NvbnN0cnVjdG9yKCl7dGhpcy5lbGVtZW50cz1bMSwwLDAsMCwwLDEsMCwwLDAsMCwxLDAsMCwwLDAsMV0sYXJndW1lbnRzLmxlbmd0aD4wJiZjb25zb2xlLmVycm9yKCJUSFJFRS5NYXRyaXg0OiB0aGUgY29uc3RydWN0b3Igbm8gbG9uZ2VyIHJlYWRzIGFyZ3VtZW50cy4gdXNlIC5zZXQoKSBpbnN0ZWFkLiIpfXNldCh0LGUsbixvLGksYSxyLHMsbCxjLGQscCxtLGYsdSxnKXtjb25zdCBoPXRoaXMuZWxlbWVudHM7cmV0dXJuIGhbMF09dCxoWzRdPWUsaFs4XT1uLGhbMTJdPW8saFsxXT1pLGhbNV09YSxoWzldPXIsaFsxM109cyxoWzJdPWwsaFs2XT1jLGhbMTBdPWQsaFsxNF09cCxoWzNdPW0saFs3XT1mLGhbMTFdPXUsaFsxNV09Zyx0aGlzfWlkZW50aXR5KCl7cmV0dXJuIHRoaXMuc2V0KDEsMCwwLDAsMCwxLDAsMCwwLDAsMSwwLDAsMCwwLDEpLHRoaXN9Y2xvbmUoKXtyZXR1cm4obmV3IG9sdCkuZnJvbUFycmF5KHRoaXMuZWxlbWVudHMpfWNvcHkodCl7Y29uc3QgZT10aGlzLmVsZW1lbnRzLG49dC5lbGVtZW50cztyZXR1cm4gZVswXT1uWzBdLGVbMV09blsxXSxlWzJdPW5bMl0sZVszXT1uWzNdLGVbNF09bls0XSxlWzVdPW5bNV0sZVs2XT1uWzZdLGVbN109bls3XSxlWzhdPW5bOF0sZVs5XT1uWzldLGVbMTBdPW5bMTBdLGVbMTFdPW5bMTFdLGVbMTJdPW5bMTJdLGVbMTNdPW5bMTNdLGVbMTRdPW5bMTRdLGVbMTVdPW5bMTVdLHRoaXN9Y29weVBvc2l0aW9uKHQpe2NvbnN0IGU9dGhpcy5lbGVtZW50cyxuPXQuZWxlbWVudHM7cmV0dXJuIGVbMTJdPW5bMTJdLGVbMTNdPW5bMTNdLGVbMTRdPW5bMTRdLHRoaXN9c2V0RnJvbU1hdHJpeDModCl7Y29uc3QgZT10LmVsZW1lbnRzO3JldHVybiB0aGlzLnNldChlWzBdLGVbM10sZVs2XSwwLGVbMV0sZVs0XSxlWzddLDAsZVsyXSxlWzVdLGVbOF0sMCwwLDAsMCwxKSx0aGlzfWV4dHJhY3RCYXNpcyh0LGUsbil7cmV0dXJuIHQuc2V0RnJvbU1hdHJpeENvbHVtbih0aGlzLDApLGUuc2V0RnJvbU1hdHJpeENvbHVtbih0aGlzLDEpLG4uc2V0RnJvbU1hdHJpeENvbHVtbih0aGlzLDIpLHRoaXN9bWFrZUJhc2lzKHQsZSxuKXtyZXR1cm4gdGhpcy5zZXQodC54LGUueCxuLngsMCx0LnksZS55LG4ueSwwLHQueixlLnosbi56LDAsMCwwLDAsMSksdGhpc31leHRyYWN0Um90YXRpb24odCl7Y29uc3QgZT10aGlzLmVsZW1lbnRzLG49dC5lbGVtZW50cyxvPTEvaWx0LnNldEZyb21NYXRyaXhDb2x1bW4odCwwKS5sZW5ndGgoKSxpPTEvaWx0LnNldEZyb21NYXRyaXhDb2x1bW4odCwxKS5sZW5ndGgoKSxhPTEvaWx0LnNldEZyb21NYXRyaXhDb2x1bW4odCwyKS5sZW5ndGgoKTtyZXR1cm4gZVswXT1uWzBdKm8sZVsxXT1uWzFdKm8sZVsyXT1uWzJdKm8sZVszXT0wLGVbNF09bls0XSppLGVbNV09bls1XSppLGVbNl09bls2XSppLGVbN109MCxlWzhdPW5bOF0qYSxlWzldPW5bOV0qYSxlWzEwXT1uWzEwXSphLGVbMTFdPTAsZVsxMl09MCxlWzEzXT0wLGVbMTRdPTAsZVsxNV09MSx0aGlzfW1ha2VSb3RhdGlvbkZyb21FdWxlcih0KXt0JiZ0LmlzRXVsZXJ8fGNvbnNvbGUuZXJyb3IoIlRIUkVFLk1hdHJpeDQ6IC5tYWtlUm90YXRpb25Gcm9tRXVsZXIoKSBub3cgZXhwZWN0cyBhIEV1bGVyIHJvdGF0aW9uIHJhdGhlciB0aGFuIGEgVmVjdG9yMyBhbmQgb3JkZXIuIik7Y29uc3QgZT10aGlzLmVsZW1lbnRzLG49dC54LG89dC55LGk9dC56LGE9TWF0aC5jb3Mobikscj1NYXRoLnNpbihuKSxzPU1hdGguY29zKG8pLGw9TWF0aC5zaW4obyksYz1NYXRoLmNvcyhpKSxkPU1hdGguc2luKGkpO2lmKCJYWVoiPT09dC5vcmRlcil7Y29uc3QgdD1hKmMsbj1hKmQsbz1yKmMsaT1yKmQ7ZVswXT1zKmMsZVs0XT0tcypkLGVbOF09bCxlWzFdPW4rbypsLGVbNV09dC1pKmwsZVs5XT0tcipzLGVbMl09aS10KmwsZVs2XT1vK24qbCxlWzEwXT1hKnN9ZWxzZSBpZigiWVhaIj09PXQub3JkZXIpe2NvbnN0IHQ9cypjLG49cypkLG89bCpjLGk9bCpkO2VbMF09dCtpKnIsZVs0XT1vKnItbixlWzhdPWEqbCxlWzFdPWEqZCxlWzVdPWEqYyxlWzldPS1yLGVbMl09bipyLW8sZVs2XT1pK3QqcixlWzEwXT1hKnN9ZWxzZSBpZigiWlhZIj09PXQub3JkZXIpe2NvbnN0IHQ9cypjLG49cypkLG89bCpjLGk9bCpkO2VbMF09dC1pKnIsZVs0XT0tYSpkLGVbOF09bytuKnIsZVsxXT1uK28qcixlWzVdPWEqYyxlWzldPWktdCpyLGVbMl09LWEqbCxlWzZdPXIsZVsxMF09YSpzfWVsc2UgaWYoIlpZWCI9PT10Lm9yZGVyKXtjb25zdCB0PWEqYyxuPWEqZCxvPXIqYyxpPXIqZDtlWzBdPXMqYyxlWzRdPW8qbC1uLGVbOF09dCpsK2ksZVsxXT1zKmQsZVs1XT1pKmwrdCxlWzldPW4qbC1vLGVbMl09LWwsZVs2XT1yKnMsZVsxMF09YSpzfWVsc2UgaWYoIllaWCI9PT10Lm9yZGVyKXtjb25zdCB0PWEqcyxuPWEqbCxvPXIqcyxpPXIqbDtlWzBdPXMqYyxlWzRdPWktdCpkLGVbOF09bypkK24sZVsxXT1kLGVbNV09YSpjLGVbOV09LXIqYyxlWzJdPS1sKmMsZVs2XT1uKmQrbyxlWzEwXT10LWkqZH1lbHNlIGlmKCJYWlkiPT09dC5vcmRlcil7Y29uc3QgdD1hKnMsbj1hKmwsbz1yKnMsaT1yKmw7ZVswXT1zKmMsZVs0XT0tZCxlWzhdPWwqYyxlWzFdPXQqZCtpLGVbNV09YSpjLGVbOV09bipkLW8sZVsyXT1vKmQtbixlWzZdPXIqYyxlWzEwXT1pKmQrdH1yZXR1cm4gZVszXT0wLGVbN109MCxlWzExXT0wLGVbMTJdPTAsZVsxM109MCxlWzE0XT0wLGVbMTVdPTEsdGhpc31tYWtlUm90YXRpb25Gcm9tUXVhdGVybmlvbih0KXtyZXR1cm4gdGhpcy5jb21wb3NlKHJsdCx0LHNsdCl9bG9va0F0KHQsZSxuKXtjb25zdCBvPXRoaXMuZWxlbWVudHM7cmV0dXJuIGRsdC5zdWJWZWN0b3JzKHQsZSksMD09PWRsdC5sZW5ndGhTcSgpJiYoZGx0Lno9MSksZGx0Lm5vcm1hbGl6ZSgpLGxsdC5jcm9zc1ZlY3RvcnMobixkbHQpLDA9PT1sbHQubGVuZ3RoU3EoKSYmKDE9PT1NYXRoLmFicyhuLnopP2RsdC54Kz0xZS00OmRsdC56Kz0xZS00LGRsdC5ub3JtYWxpemUoKSxsbHQuY3Jvc3NWZWN0b3JzKG4sZGx0KSksbGx0Lm5vcm1hbGl6ZSgpLGNsdC5jcm9zc1ZlY3RvcnMoZGx0LGxsdCksb1swXT1sbHQueCxvWzRdPWNsdC54LG9bOF09ZGx0Lngsb1sxXT1sbHQueSxvWzVdPWNsdC55LG9bOV09ZGx0Lnksb1syXT1sbHQueixvWzZdPWNsdC56LG9bMTBdPWRsdC56LHRoaXN9bXVsdGlwbHkodCxlKXtyZXR1cm4gdm9pZCAwIT09ZT8oY29uc29sZS53YXJuKCJUSFJFRS5NYXRyaXg0OiAubXVsdGlwbHkoKSBub3cgb25seSBhY2NlcHRzIG9uZSBhcmd1bWVudC4gVXNlIC5tdWx0aXBseU1hdHJpY2VzKCBhLCBiICkgaW5zdGVhZC4iKSx0aGlzLm11bHRpcGx5TWF0cmljZXModCxlKSk6dGhpcy5tdWx0aXBseU1hdHJpY2VzKHRoaXMsdCl9cHJlbXVsdGlwbHkodCl7cmV0dXJuIHRoaXMubXVsdGlwbHlNYXRyaWNlcyh0LHRoaXMpfW11bHRpcGx5TWF0cmljZXModCxlKXtjb25zdCBuPXQuZWxlbWVudHMsbz1lLmVsZW1lbnRzLGk9dGhpcy5lbGVtZW50cyxhPW5bMF0scj1uWzRdLHM9bls4XSxsPW5bMTJdLGM9blsxXSxkPW5bNV0scD1uWzldLG09blsxM10sZj1uWzJdLHU9bls2XSxnPW5bMTBdLGg9blsxNF0sYj1uWzNdLHk9bls3XSxfPW5bMTFdLEM9blsxNV0sTT1vWzBdLHY9b1s0XSx4PW9bOF0sTz1vWzEyXSxQPW9bMV0sdz1vWzVdLGs9b1s5XSxTPW9bMTNdLEQ9b1syXSxSPW9bNl0sRT1vWzEwXSxBPW9bMTRdLFQ9b1szXSxOPW9bN10sej1vWzExXSxJPW9bMTVdO3JldHVybiBpWzBdPWEqTStyKlArcypEK2wqVCxpWzRdPWEqdityKncrcypSK2wqTixpWzhdPWEqeCtyKmsrcypFK2wqeixpWzEyXT1hKk8rcipTK3MqQStsKkksaVsxXT1jKk0rZCpQK3AqRCttKlQsaVs1XT1jKnYrZCp3K3AqUittKk4saVs5XT1jKngrZCprK3AqRSttKnosaVsxM109YypPK2QqUytwKkErbSpJLGlbMl09ZipNK3UqUCtnKkQraCpULGlbNl09Zip2K3UqdytnKlIraCpOLGlbMTBdPWYqeCt1KmsrZypFK2gqeixpWzE0XT1mKk8rdSpTK2cqQStoKkksaVszXT1iKk0reSpQK18qRCtDKlQsaVs3XT1iKnYreSp3K18qUitDKk4saVsxMV09Yip4K3kqaytfKkUrQyp6LGlbMTVdPWIqTyt5KlMrXypBK0MqSSx0aGlzfW11bHRpcGx5U2NhbGFyKHQpe2NvbnN0IGU9dGhpcy5lbGVtZW50cztyZXR1cm4gZVswXSo9dCxlWzRdKj10LGVbOF0qPXQsZVsxMl0qPXQsZVsxXSo9dCxlWzVdKj10LGVbOV0qPXQsZVsxM10qPXQsZVsyXSo9dCxlWzZdKj10LGVbMTBdKj10LGVbMTRdKj10LGVbM10qPXQsZVs3XSo9dCxlWzExXSo9dCxlWzE1XSo9dCx0aGlzfWRldGVybWluYW50KCl7Y29uc3QgdD10aGlzLmVsZW1lbnRzLGU9dFswXSxuPXRbNF0sbz10WzhdLGk9dFsxMl0sYT10WzFdLHI9dFs1XSxzPXRbOV0sbD10WzEzXSxjPXRbMl0sZD10WzZdLHA9dFsxMF0sbT10WzE0XTtyZXR1cm4gdFszXSooK2kqcypkLW8qbCpkLWkqcipwK24qbCpwK28qciptLW4qcyptKSt0WzddKigrZSpzKm0tZSpsKnAraSphKnAtbyphKm0rbypsKmMtaSpzKmMpK3RbMTFdKigrZSpsKmQtZSpyKm0taSphKmQrbiphKm0raSpyKmMtbipsKmMpK3RbMTVdKigtbypyKmMtZSpzKmQrZSpyKnArbyphKmQtbiphKnArbipzKmMpfXRyYW5zcG9zZSgpe2NvbnN0IHQ9dGhpcy5lbGVtZW50cztsZXQgZTtyZXR1cm4gZT10WzFdLHRbMV09dFs0XSx0WzRdPWUsZT10WzJdLHRbMl09dFs4XSx0WzhdPWUsZT10WzZdLHRbNl09dFs5XSx0WzldPWUsZT10WzNdLHRbM109dFsxMl0sdFsxMl09ZSxlPXRbN10sdFs3XT10WzEzXSx0WzEzXT1lLGU9dFsxMV0sdFsxMV09dFsxNF0sdFsxNF09ZSx0aGlzfXNldFBvc2l0aW9uKHQsZSxuKXtjb25zdCBvPXRoaXMuZWxlbWVudHM7cmV0dXJuIHQuaXNWZWN0b3IzPyhvWzEyXT10Lngsb1sxM109dC55LG9bMTRdPXQueik6KG9bMTJdPXQsb1sxM109ZSxvWzE0XT1uKSx0aGlzfWludmVydCgpe2NvbnN0IHQ9dGhpcy5lbGVtZW50cyxlPXRbMF0sbj10WzFdLG89dFsyXSxpPXRbM10sYT10WzRdLHI9dFs1XSxzPXRbNl0sbD10WzddLGM9dFs4XSxkPXRbOV0scD10WzEwXSxtPXRbMTFdLGY9dFsxMl0sdT10WzEzXSxnPXRbMTRdLGg9dFsxNV0sYj1kKmcqbC11KnAqbCt1KnMqbS1yKmcqbS1kKnMqaCtyKnAqaCx5PWYqcCpsLWMqZypsLWYqcyptK2EqZyptK2MqcypoLWEqcCpoLF89Yyp1KmwtZipkKmwrZipyKm0tYSp1Km0tYypyKmgrYSpkKmgsQz1mKmQqcy1jKnUqcy1mKnIqcCthKnUqcCtjKnIqZy1hKmQqZyxNPWUqYituKnkrbypfK2kqQztpZigwPT09TSlyZXR1cm4gdGhpcy5zZXQoMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCk7Y29uc3Qgdj0xL007cmV0dXJuIHRbMF09Yip2LHRbMV09KHUqcCppLWQqZyppLXUqbyptK24qZyptK2QqbypoLW4qcCpoKSp2LHRbMl09KHIqZyppLXUqcyppK3UqbypsLW4qZypsLXIqbypoK24qcypoKSp2LHRbM109KGQqcyppLXIqcCppLWQqbypsK24qcCpsK3IqbyptLW4qcyptKSp2LHRbNF09eSp2LHRbNV09KGMqZyppLWYqcCppK2YqbyptLWUqZyptLWMqbypoK2UqcCpoKSp2LHRbNl09KGYqcyppLWEqZyppLWYqbypsK2UqZypsK2EqbypoLWUqcypoKSp2LHRbN109KGEqcCppLWMqcyppK2MqbypsLWUqcCpsLWEqbyptK2UqcyptKSp2LHRbOF09Xyp2LHRbOV09KGYqZCppLWMqdSppLWYqbiptK2UqdSptK2MqbipoLWUqZCpoKSp2LHRbMTBdPShhKnUqaS1mKnIqaStmKm4qbC1lKnUqbC1hKm4qaCtlKnIqaCkqdix0WzExXT0oYypyKmktYSpkKmktYypuKmwrZSpkKmwrYSpuKm0tZSpyKm0pKnYsdFsxMl09Qyp2LHRbMTNdPShjKnUqby1mKmQqbytmKm4qcC1lKnUqcC1jKm4qZytlKmQqZykqdix0WzE0XT0oZipyKm8tYSp1Km8tZipuKnMrZSp1KnMrYSpuKmctZSpyKmcpKnYsdFsxNV09KGEqZCpvLWMqcipvK2MqbipzLWUqZCpzLWEqbipwK2UqcipwKSp2LHRoaXN9c2NhbGUodCl7Y29uc3QgZT10aGlzLmVsZW1lbnRzLG49dC54LG89dC55LGk9dC56O3JldHVybiBlWzBdKj1uLGVbNF0qPW8sZVs4XSo9aSxlWzFdKj1uLGVbNV0qPW8sZVs5XSo9aSxlWzJdKj1uLGVbNl0qPW8sZVsxMF0qPWksZVszXSo9bixlWzddKj1vLGVbMTFdKj1pLHRoaXN9Z2V0TWF4U2NhbGVPbkF4aXMoKXtjb25zdCB0PXRoaXMuZWxlbWVudHM7cmV0dXJuIE1hdGguc3FydChNYXRoLm1heCh0WzBdKnRbMF0rdFsxXSp0WzFdK3RbMl0qdFsyXSx0WzRdKnRbNF0rdFs1XSp0WzVdK3RbNl0qdFs2XSx0WzhdKnRbOF0rdFs5XSp0WzldK3RbMTBdKnRbMTBdKSl9bWFrZVRyYW5zbGF0aW9uKHQsZSxuKXtyZXR1cm4gdGhpcy5zZXQoMSwwLDAsdCwwLDEsMCxlLDAsMCwxLG4sMCwwLDAsMSksdGhpc31tYWtlUm90YXRpb25YKHQpe2NvbnN0IGU9TWF0aC5jb3ModCksbj1NYXRoLnNpbih0KTtyZXR1cm4gdGhpcy5zZXQoMSwwLDAsMCwwLGUsLW4sMCwwLG4sZSwwLDAsMCwwLDEpLHRoaXN9bWFrZVJvdGF0aW9uWSh0KXtjb25zdCBlPU1hdGguY29zKHQpLG49TWF0aC5zaW4odCk7cmV0dXJuIHRoaXMuc2V0KGUsMCxuLDAsMCwxLDAsMCwtbiwwLGUsMCwwLDAsMCwxKSx0aGlzfW1ha2VSb3RhdGlvbloodCl7Y29uc3QgZT1NYXRoLmNvcyh0KSxuPU1hdGguc2luKHQpO3JldHVybiB0aGlzLnNldChlLC1uLDAsMCxuLGUsMCwwLDAsMCwxLDAsMCwwLDAsMSksdGhpc31tYWtlUm90YXRpb25BeGlzKHQsZSl7Y29uc3Qgbj1NYXRoLmNvcyhlKSxvPU1hdGguc2luKGUpLGk9MS1uLGE9dC54LHI9dC55LHM9dC56LGw9aSphLGM9aSpyO3JldHVybiB0aGlzLnNldChsKmErbixsKnItbypzLGwqcytvKnIsMCxsKnIrbypzLGMqcituLGMqcy1vKmEsMCxsKnMtbypyLGMqcytvKmEsaSpzKnMrbiwwLDAsMCwwLDEpLHRoaXN9bWFrZVNjYWxlKHQsZSxuKXtyZXR1cm4gdGhpcy5zZXQodCwwLDAsMCwwLGUsMCwwLDAsMCxuLDAsMCwwLDAsMSksdGhpc31tYWtlU2hlYXIodCxlLG4sbyxpLGEpe3JldHVybiB0aGlzLnNldCgxLG4saSwwLHQsMSxhLDAsZSxvLDEsMCwwLDAsMCwxKSx0aGlzfWNvbXBvc2UodCxlLG4pe2NvbnN0IG89dGhpcy5lbGVtZW50cyxpPWUuX3gsYT1lLl95LHI9ZS5feixzPWUuX3csbD1pK2ksYz1hK2EsZD1yK3IscD1pKmwsbT1pKmMsZj1pKmQsdT1hKmMsZz1hKmQsaD1yKmQsYj1zKmwseT1zKmMsXz1zKmQsQz1uLngsTT1uLnksdj1uLno7cmV0dXJuIG9bMF09KDEtKHUraCkpKkMsb1sxXT0obStfKSpDLG9bMl09KGYteSkqQyxvWzNdPTAsb1s0XT0obS1fKSpNLG9bNV09KDEtKHAraCkpKk0sb1s2XT0oZytiKSpNLG9bN109MCxvWzhdPShmK3kpKnYsb1s5XT0oZy1iKSp2LG9bMTBdPSgxLShwK3UpKSp2LG9bMTFdPTAsb1sxMl09dC54LG9bMTNdPXQueSxvWzE0XT10Lnosb1sxNV09MSx0aGlzfWRlY29tcG9zZSh0LGUsbil7Y29uc3Qgbz10aGlzLmVsZW1lbnRzO2xldCBpPWlsdC5zZXQob1swXSxvWzFdLG9bMl0pLmxlbmd0aCgpO2NvbnN0IGE9aWx0LnNldChvWzRdLG9bNV0sb1s2XSkubGVuZ3RoKCkscj1pbHQuc2V0KG9bOF0sb1s5XSxvWzEwXSkubGVuZ3RoKCk7dGhpcy5kZXRlcm1pbmFudCgpPDAmJihpPS1pKSx0Lng9b1sxMl0sdC55PW9bMTNdLHQuej1vWzE0XSxhbHQuY29weSh0aGlzKTtjb25zdCBzPTEvaSxsPTEvYSxjPTEvcjtyZXR1cm4gYWx0LmVsZW1lbnRzWzBdKj1zLGFsdC5lbGVtZW50c1sxXSo9cyxhbHQuZWxlbWVudHNbMl0qPXMsYWx0LmVsZW1lbnRzWzRdKj1sLGFsdC5lbGVtZW50c1s1XSo9bCxhbHQuZWxlbWVudHNbNl0qPWwsYWx0LmVsZW1lbnRzWzhdKj1jLGFsdC5lbGVtZW50c1s5XSo9YyxhbHQuZWxlbWVudHNbMTBdKj1jLGUuc2V0RnJvbVJvdGF0aW9uTWF0cml4KGFsdCksbi54PWksbi55PWEsbi56PXIsdGhpc31tYWtlUGVyc3BlY3RpdmUodCxlLG4sbyxpLGEpe3ZvaWQgMD09PWEmJmNvbnNvbGUud2FybigiVEhSRUUuTWF0cml4NDogLm1ha2VQZXJzcGVjdGl2ZSgpIGhhcyBiZWVuIHJlZGVmaW5lZCBhbmQgaGFzIGEgbmV3IHNpZ25hdHVyZS4gUGxlYXNlIGNoZWNrIHRoZSBkb2NzLiIpO2NvbnN0IHI9dGhpcy5lbGVtZW50cyxzPTIqaS8obi1vKSxsPShlK3QpLyhlLXQpLGM9KG4rbykvKG4tbyksZD0tKGEraSkvKGEtaSkscD0tMiphKmkvKGEtaSk7cmV0dXJuIHJbMF09MippLyhlLXQpLHJbNF09MCxyWzhdPWwsclsxMl09MCxyWzFdPTAscls1XT1zLHJbOV09YyxyWzEzXT0wLHJbMl09MCxyWzZdPTAsclsxMF09ZCxyWzE0XT1wLHJbM109MCxyWzddPTAsclsxMV09LTEsclsxNV09MCx0aGlzfW1ha2VPcnRob2dyYXBoaWModCxlLG4sbyxpLGEpe2NvbnN0IHI9dGhpcy5lbGVtZW50cyxzPTEvKGUtdCksbD0xLyhuLW8pLGM9MS8oYS1pKSxkPShlK3QpKnMscD0obitvKSpsLG09KGEraSkqYztyZXR1cm4gclswXT0yKnMscls0XT0wLHJbOF09MCxyWzEyXT0tZCxyWzFdPTAscls1XT0yKmwscls5XT0wLHJbMTNdPS1wLHJbMl09MCxyWzZdPTAsclsxMF09LTIqYyxyWzE0XT0tbSxyWzNdPTAscls3XT0wLHJbMTFdPTAsclsxNV09MSx0aGlzfWVxdWFscyh0KXtjb25zdCBlPXRoaXMuZWxlbWVudHMsbj10LmVsZW1lbnRzO2ZvcihsZXQgdD0wO3Q8MTY7dCsrKWlmKGVbdF0hPT1uW3RdKXJldHVybiExO3JldHVybiEwfWZyb21BcnJheSh0LGU9MCl7Zm9yKGxldCBuPTA7bjwxNjtuKyspdGhpcy5lbGVtZW50c1tuXT10W24rZV07cmV0dXJuIHRoaXN9dG9BcnJheSh0PVtdLGU9MCl7Y29uc3Qgbj10aGlzLmVsZW1lbnRzO3JldHVybiB0W2VdPW5bMF0sdFtlKzFdPW5bMV0sdFtlKzJdPW5bMl0sdFtlKzNdPW5bM10sdFtlKzRdPW5bNF0sdFtlKzVdPW5bNV0sdFtlKzZdPW5bNl0sdFtlKzddPW5bN10sdFtlKzhdPW5bOF0sdFtlKzldPW5bOV0sdFtlKzEwXT1uWzEwXSx0W2UrMTFdPW5bMTFdLHRbZSsxMl09blsxMl0sdFtlKzEzXT1uWzEzXSx0W2UrMTRdPW5bMTRdLHRbZSsxNV09blsxNV0sdH19b2x0LnByb3RvdHlwZS5pc01hdHJpeDQ9ITA7Y29uc3QgaWx0PW5ldyB3c3QsYWx0PW5ldyBvbHQscmx0PW5ldyB3c3QoMCwwLDApLHNsdD1uZXcgd3N0KDEsMSwxKSxsbHQ9bmV3IHdzdCxjbHQ9bmV3IHdzdCxkbHQ9bmV3IHdzdCxwbHQ9bmV3IG9sdCxtbHQ9bmV3IFBzdDtjbGFzcyBmbHR7Y29uc3RydWN0b3IodD0wLGU9MCxuPTAsbz1mbHQuRGVmYXVsdE9yZGVyKXt0aGlzLl94PXQsdGhpcy5feT1lLHRoaXMuX3o9bix0aGlzLl9vcmRlcj1vfWdldCB4KCl7cmV0dXJuIHRoaXMuX3h9c2V0IHgodCl7dGhpcy5feD10LHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2soKX1nZXQgeSgpe3JldHVybiB0aGlzLl95fXNldCB5KHQpe3RoaXMuX3k9dCx0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKCl9Z2V0IHooKXtyZXR1cm4gdGhpcy5fen1zZXQgeih0KXt0aGlzLl96PXQsdGhpcy5fb25DaGFuZ2VDYWxsYmFjaygpfWdldCBvcmRlcigpe3JldHVybiB0aGlzLl9vcmRlcn1zZXQgb3JkZXIodCl7dGhpcy5fb3JkZXI9dCx0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKCl9c2V0KHQsZSxuLG89dGhpcy5fb3JkZXIpe3JldHVybiB0aGlzLl94PXQsdGhpcy5feT1lLHRoaXMuX3o9bix0aGlzLl9vcmRlcj1vLHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2soKSx0aGlzfWNsb25lKCl7cmV0dXJuIG5ldyB0aGlzLmNvbnN0cnVjdG9yKHRoaXMuX3gsdGhpcy5feSx0aGlzLl96LHRoaXMuX29yZGVyKX1jb3B5KHQpe3JldHVybiB0aGlzLl94PXQuX3gsdGhpcy5feT10Ll95LHRoaXMuX3o9dC5feix0aGlzLl9vcmRlcj10Ll9vcmRlcix0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKCksdGhpc31zZXRGcm9tUm90YXRpb25NYXRyaXgodCxlPXRoaXMuX29yZGVyLG49ITApe2NvbnN0IG89dC5lbGVtZW50cyxpPW9bMF0sYT1vWzRdLHI9b1s4XSxzPW9bMV0sbD1vWzVdLGM9b1s5XSxkPW9bMl0scD1vWzZdLG09b1sxMF07c3dpdGNoKGUpe2Nhc2UiWFlaIjp0aGlzLl95PU1hdGguYXNpbihwc3QociwtMSwxKSksTWF0aC5hYnMocik8Ljk5OTk5OTk/KHRoaXMuX3g9TWF0aC5hdGFuMigtYyxtKSx0aGlzLl96PU1hdGguYXRhbjIoLWEsaSkpOih0aGlzLl94PU1hdGguYXRhbjIocCxsKSx0aGlzLl96PTApO2JyZWFrO2Nhc2UiWVhaIjp0aGlzLl94PU1hdGguYXNpbigtcHN0KGMsLTEsMSkpLE1hdGguYWJzKGMpPC45OTk5OTk5Pyh0aGlzLl95PU1hdGguYXRhbjIocixtKSx0aGlzLl96PU1hdGguYXRhbjIocyxsKSk6KHRoaXMuX3k9TWF0aC5hdGFuMigtZCxpKSx0aGlzLl96PTApO2JyZWFrO2Nhc2UiWlhZIjp0aGlzLl94PU1hdGguYXNpbihwc3QocCwtMSwxKSksTWF0aC5hYnMocCk8Ljk5OTk5OTk/KHRoaXMuX3k9TWF0aC5hdGFuMigtZCxtKSx0aGlzLl96PU1hdGguYXRhbjIoLWEsbCkpOih0aGlzLl95PTAsdGhpcy5fej1NYXRoLmF0YW4yKHMsaSkpO2JyZWFrO2Nhc2UiWllYIjp0aGlzLl95PU1hdGguYXNpbigtcHN0KGQsLTEsMSkpLE1hdGguYWJzKGQpPC45OTk5OTk5Pyh0aGlzLl94PU1hdGguYXRhbjIocCxtKSx0aGlzLl96PU1hdGguYXRhbjIocyxpKSk6KHRoaXMuX3g9MCx0aGlzLl96PU1hdGguYXRhbjIoLWEsbCkpO2JyZWFrO2Nhc2UiWVpYIjp0aGlzLl96PU1hdGguYXNpbihwc3QocywtMSwxKSksTWF0aC5hYnMocyk8Ljk5OTk5OTk/KHRoaXMuX3g9TWF0aC5hdGFuMigtYyxsKSx0aGlzLl95PU1hdGguYXRhbjIoLWQsaSkpOih0aGlzLl94PTAsdGhpcy5feT1NYXRoLmF0YW4yKHIsbSkpO2JyZWFrO2Nhc2UiWFpZIjp0aGlzLl96PU1hdGguYXNpbigtcHN0KGEsLTEsMSkpLE1hdGguYWJzKGEpPC45OTk5OTk5Pyh0aGlzLl94PU1hdGguYXRhbjIocCxsKSx0aGlzLl95PU1hdGguYXRhbjIocixpKSk6KHRoaXMuX3g9TWF0aC5hdGFuMigtYyxtKSx0aGlzLl95PTApO2JyZWFrO2RlZmF1bHQ6Y29uc29sZS53YXJuKCJUSFJFRS5FdWxlcjogLnNldEZyb21Sb3RhdGlvbk1hdHJpeCgpIGVuY291bnRlcmVkIGFuIHVua25vd24gb3JkZXI6ICIrZSl9cmV0dXJuIHRoaXMuX29yZGVyPWUsITA9PT1uJiZ0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKCksdGhpc31zZXRGcm9tUXVhdGVybmlvbih0LGUsbil7cmV0dXJuIHBsdC5tYWtlUm90YXRpb25Gcm9tUXVhdGVybmlvbih0KSx0aGlzLnNldEZyb21Sb3RhdGlvbk1hdHJpeChwbHQsZSxuKX1zZXRGcm9tVmVjdG9yMyh0LGU9dGhpcy5fb3JkZXIpe3JldHVybiB0aGlzLnNldCh0LngsdC55LHQueixlKX1yZW9yZGVyKHQpe3JldHVybiBtbHQuc2V0RnJvbUV1bGVyKHRoaXMpLHRoaXMuc2V0RnJvbVF1YXRlcm5pb24obWx0LHQpfWVxdWFscyh0KXtyZXR1cm4gdC5feD09PXRoaXMuX3gmJnQuX3k9PT10aGlzLl95JiZ0Ll96PT09dGhpcy5feiYmdC5fb3JkZXI9PT10aGlzLl9vcmRlcn1mcm9tQXJyYXkodCl7cmV0dXJuIHRoaXMuX3g9dFswXSx0aGlzLl95PXRbMV0sdGhpcy5fej10WzJdLHZvaWQgMCE9PXRbM10mJih0aGlzLl9vcmRlcj10WzNdKSx0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKCksdGhpc310b0FycmF5KHQ9W10sZT0wKXtyZXR1cm4gdFtlXT10aGlzLl94LHRbZSsxXT10aGlzLl95LHRbZSsyXT10aGlzLl96LHRbZSszXT10aGlzLl9vcmRlcix0fXRvVmVjdG9yMyh0KXtyZXR1cm4gdD90LnNldCh0aGlzLl94LHRoaXMuX3ksdGhpcy5feik6bmV3IHdzdCh0aGlzLl94LHRoaXMuX3ksdGhpcy5feil9X29uQ2hhbmdlKHQpe3JldHVybiB0aGlzLl9vbkNoYW5nZUNhbGxiYWNrPXQsdGhpc31fb25DaGFuZ2VDYWxsYmFjaygpe319Zmx0LnByb3RvdHlwZS5pc0V1bGVyPSEwLGZsdC5EZWZhdWx0T3JkZXI9IlhZWiIsZmx0LlJvdGF0aW9uT3JkZXJzPVsiWFlaIiwiWVpYIiwiWlhZIiwiWFpZIiwiWVhaIiwiWllYIl07Y2xhc3MgdWx0e2NvbnN0cnVjdG9yKCl7dGhpcy5tYXNrPTF9c2V0KHQpe3RoaXMubWFzaz0xPDx0fDB9ZW5hYmxlKHQpe3RoaXMubWFza3w9MTw8dHwwfWVuYWJsZUFsbCgpe3RoaXMubWFzaz0tMX10b2dnbGUodCl7dGhpcy5tYXNrXj0xPDx0fDB9ZGlzYWJsZSh0KXt0aGlzLm1hc2smPX4oMTw8dHwwKX1kaXNhYmxlQWxsKCl7dGhpcy5tYXNrPTB9dGVzdCh0KXtyZXR1cm4gMCE9KHRoaXMubWFzayZ0Lm1hc2spfX1sZXQgZ2x0PTA7Y29uc3QgaGx0PW5ldyB3c3QsYmx0PW5ldyBQc3QseWx0PW5ldyBvbHQsX2x0PW5ldyB3c3QsQ2x0PW5ldyB3c3QsTWx0PW5ldyB3c3Qsdmx0PW5ldyBQc3QseGx0PW5ldyB3c3QoMSwwLDApLE9sdD1uZXcgd3N0KDAsMSwwKSxQbHQ9bmV3IHdzdCgwLDAsMSksd2x0PXt0eXBlOiJhZGRlZCJ9LGtsdD17dHlwZToicmVtb3ZlZCJ9O2NsYXNzIFNsdCBleHRlbmRzIHJzdHtjb25zdHJ1Y3Rvcigpe3N1cGVyKCksT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsImlkIix7dmFsdWU6Z2x0Kyt9KSx0aGlzLnV1aWQ9ZHN0KCksdGhpcy5uYW1lPSIiLHRoaXMudHlwZT0iT2JqZWN0M0QiLHRoaXMucGFyZW50PW51bGwsdGhpcy5jaGlsZHJlbj1bXSx0aGlzLnVwPVNsdC5EZWZhdWx0VXAuY2xvbmUoKTtjb25zdCB0PW5ldyB3c3QsZT1uZXcgZmx0LG49bmV3IFBzdCxvPW5ldyB3c3QoMSwxLDEpO2UuX29uQ2hhbmdlKChmdW5jdGlvbiBpKCl7bi5zZXRGcm9tRXVsZXIoZSwhMSl9KSksbi5fb25DaGFuZ2UoKGZ1bmN0aW9uIGEoKXtlLnNldEZyb21RdWF0ZXJuaW9uKG4sdm9pZCAwLCExKX0pKSxPYmplY3QuZGVmaW5lUHJvcGVydGllcyh0aGlzLHtwb3NpdGlvbjp7Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITAsdmFsdWU6dH0scm90YXRpb246e2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwLHZhbHVlOmV9LHF1YXRlcm5pb246e2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwLHZhbHVlOm59LHNjYWxlOntjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMCx2YWx1ZTpvfSxtb2RlbFZpZXdNYXRyaXg6e3ZhbHVlOm5ldyBvbHR9LG5vcm1hbE1hdHJpeDp7dmFsdWU6bmV3IGhzdH19KSx0aGlzLm1hdHJpeD1uZXcgb2x0LHRoaXMubWF0cml4V29ybGQ9bmV3IG9sdCx0aGlzLm1hdHJpeEF1dG9VcGRhdGU9U2x0LkRlZmF1bHRNYXRyaXhBdXRvVXBkYXRlLHRoaXMubWF0cml4V29ybGROZWVkc1VwZGF0ZT0hMSx0aGlzLmxheWVycz1uZXcgdWx0LHRoaXMudmlzaWJsZT0hMCx0aGlzLmNhc3RTaGFkb3c9ITEsdGhpcy5yZWNlaXZlU2hhZG93PSExLHRoaXMuZnJ1c3R1bUN1bGxlZD0hMCx0aGlzLnJlbmRlck9yZGVyPTAsdGhpcy5hbmltYXRpb25zPVtdLHRoaXMudXNlckRhdGE9e319b25CZWZvcmVSZW5kZXIoKXt9b25BZnRlclJlbmRlcigpe31hcHBseU1hdHJpeDQodCl7dGhpcy5tYXRyaXhBdXRvVXBkYXRlJiZ0aGlzLnVwZGF0ZU1hdHJpeCgpLHRoaXMubWF0cml4LnByZW11bHRpcGx5KHQpLHRoaXMubWF0cml4LmRlY29tcG9zZSh0aGlzLnBvc2l0aW9uLHRoaXMucXVhdGVybmlvbix0aGlzLnNjYWxlKX1hcHBseVF1YXRlcm5pb24odCl7cmV0dXJuIHRoaXMucXVhdGVybmlvbi5wcmVtdWx0aXBseSh0KSx0aGlzfXNldFJvdGF0aW9uRnJvbUF4aXNBbmdsZSh0LGUpe3RoaXMucXVhdGVybmlvbi5zZXRGcm9tQXhpc0FuZ2xlKHQsZSl9c2V0Um90YXRpb25Gcm9tRXVsZXIodCl7dGhpcy5xdWF0ZXJuaW9uLnNldEZyb21FdWxlcih0LCEwKX1zZXRSb3RhdGlvbkZyb21NYXRyaXgodCl7dGhpcy5xdWF0ZXJuaW9uLnNldEZyb21Sb3RhdGlvbk1hdHJpeCh0KX1zZXRSb3RhdGlvbkZyb21RdWF0ZXJuaW9uKHQpe3RoaXMucXVhdGVybmlvbi5jb3B5KHQpfXJvdGF0ZU9uQXhpcyh0LGUpe3JldHVybiBibHQuc2V0RnJvbUF4aXNBbmdsZSh0LGUpLHRoaXMucXVhdGVybmlvbi5tdWx0aXBseShibHQpLHRoaXN9cm90YXRlT25Xb3JsZEF4aXModCxlKXtyZXR1cm4gYmx0LnNldEZyb21BeGlzQW5nbGUodCxlKSx0aGlzLnF1YXRlcm5pb24ucHJlbXVsdGlwbHkoYmx0KSx0aGlzfXJvdGF0ZVgodCl7cmV0dXJuIHRoaXMucm90YXRlT25BeGlzKHhsdCx0KX1yb3RhdGVZKHQpe3JldHVybiB0aGlzLnJvdGF0ZU9uQXhpcyhPbHQsdCl9cm90YXRlWih0KXtyZXR1cm4gdGhpcy5yb3RhdGVPbkF4aXMoUGx0LHQpfXRyYW5zbGF0ZU9uQXhpcyh0LGUpe3JldHVybiBobHQuY29weSh0KS5hcHBseVF1YXRlcm5pb24odGhpcy5xdWF0ZXJuaW9uKSx0aGlzLnBvc2l0aW9uLmFkZChobHQubXVsdGlwbHlTY2FsYXIoZSkpLHRoaXN9dHJhbnNsYXRlWCh0KXtyZXR1cm4gdGhpcy50cmFuc2xhdGVPbkF4aXMoeGx0LHQpfXRyYW5zbGF0ZVkodCl7cmV0dXJuIHRoaXMudHJhbnNsYXRlT25BeGlzKE9sdCx0KX10cmFuc2xhdGVaKHQpe3JldHVybiB0aGlzLnRyYW5zbGF0ZU9uQXhpcyhQbHQsdCl9bG9jYWxUb1dvcmxkKHQpe3JldHVybiB0LmFwcGx5TWF0cml4NCh0aGlzLm1hdHJpeFdvcmxkKX13b3JsZFRvTG9jYWwodCl7cmV0dXJuIHQuYXBwbHlNYXRyaXg0KHlsdC5jb3B5KHRoaXMubWF0cml4V29ybGQpLmludmVydCgpKX1sb29rQXQodCxlLG4pe3QuaXNWZWN0b3IzP19sdC5jb3B5KHQpOl9sdC5zZXQodCxlLG4pO2NvbnN0IG89dGhpcy5wYXJlbnQ7dGhpcy51cGRhdGVXb3JsZE1hdHJpeCghMCwhMSksQ2x0LnNldEZyb21NYXRyaXhQb3NpdGlvbih0aGlzLm1hdHJpeFdvcmxkKSx0aGlzLmlzQ2FtZXJhfHx0aGlzLmlzTGlnaHQ/eWx0Lmxvb2tBdChDbHQsX2x0LHRoaXMudXApOnlsdC5sb29rQXQoX2x0LENsdCx0aGlzLnVwKSx0aGlzLnF1YXRlcm5pb24uc2V0RnJvbVJvdGF0aW9uTWF0cml4KHlsdCksbyYmKHlsdC5leHRyYWN0Um90YXRpb24oby5tYXRyaXhXb3JsZCksYmx0LnNldEZyb21Sb3RhdGlvbk1hdHJpeCh5bHQpLHRoaXMucXVhdGVybmlvbi5wcmVtdWx0aXBseShibHQuaW52ZXJ0KCkpKX1hZGQodCl7aWYoYXJndW1lbnRzLmxlbmd0aD4xKXtmb3IobGV0IHQ9MDt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXRoaXMuYWRkKGFyZ3VtZW50c1t0XSk7cmV0dXJuIHRoaXN9cmV0dXJuIHQ9PT10aGlzPyhjb25zb2xlLmVycm9yKCJUSFJFRS5PYmplY3QzRC5hZGQ6IG9iamVjdCBjYW4ndCBiZSBhZGRlZCBhcyBhIGNoaWxkIG9mIGl0c2VsZi4iLHQpLHRoaXMpOih0JiZ0LmlzT2JqZWN0M0Q/KG51bGwhPT10LnBhcmVudCYmdC5wYXJlbnQucmVtb3ZlKHQpLHQucGFyZW50PXRoaXMsdGhpcy5jaGlsZHJlbi5wdXNoKHQpLHQuZGlzcGF0Y2hFdmVudCh3bHQpKTpjb25zb2xlLmVycm9yKCJUSFJFRS5PYmplY3QzRC5hZGQ6IG9iamVjdCBub3QgYW4gaW5zdGFuY2Ugb2YgVEhSRUUuT2JqZWN0M0QuIix0KSx0aGlzKX1yZW1vdmUodCl7aWYoYXJndW1lbnRzLmxlbmd0aD4xKXtmb3IobGV0IHQ9MDt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXRoaXMucmVtb3ZlKGFyZ3VtZW50c1t0XSk7cmV0dXJuIHRoaXN9Y29uc3QgZT10aGlzLmNoaWxkcmVuLmluZGV4T2YodCk7cmV0dXJuLTEhPT1lJiYodC5wYXJlbnQ9bnVsbCx0aGlzLmNoaWxkcmVuLnNwbGljZShlLDEpLHQuZGlzcGF0Y2hFdmVudChrbHQpKSx0aGlzfXJlbW92ZUZyb21QYXJlbnQoKXtjb25zdCB0PXRoaXMucGFyZW50O3JldHVybiBudWxsIT09dCYmdC5yZW1vdmUodGhpcyksdGhpc31jbGVhcigpe2ZvcihsZXQgdD0wO3Q8dGhpcy5jaGlsZHJlbi5sZW5ndGg7dCsrKXtjb25zdCBlPXRoaXMuY2hpbGRyZW5bdF07ZS5wYXJlbnQ9bnVsbCxlLmRpc3BhdGNoRXZlbnQoa2x0KX1yZXR1cm4gdGhpcy5jaGlsZHJlbi5sZW5ndGg9MCx0aGlzfWF0dGFjaCh0KXtyZXR1cm4gdGhpcy51cGRhdGVXb3JsZE1hdHJpeCghMCwhMSkseWx0LmNvcHkodGhpcy5tYXRyaXhXb3JsZCkuaW52ZXJ0KCksbnVsbCE9PXQucGFyZW50JiYodC5wYXJlbnQudXBkYXRlV29ybGRNYXRyaXgoITAsITEpLHlsdC5tdWx0aXBseSh0LnBhcmVudC5tYXRyaXhXb3JsZCkpLHQuYXBwbHlNYXRyaXg0KHlsdCksdGhpcy5hZGQodCksdC51cGRhdGVXb3JsZE1hdHJpeCghMSwhMCksdGhpc31nZXRPYmplY3RCeUlkKHQpe3JldHVybiB0aGlzLmdldE9iamVjdEJ5UHJvcGVydHkoImlkIix0KX1nZXRPYmplY3RCeU5hbWUodCl7cmV0dXJuIHRoaXMuZ2V0T2JqZWN0QnlQcm9wZXJ0eSgibmFtZSIsdCl9Z2V0T2JqZWN0QnlQcm9wZXJ0eSh0LGUpe2lmKHRoaXNbdF09PT1lKXJldHVybiB0aGlzO2ZvcihsZXQgbj0wLG89dGhpcy5jaGlsZHJlbi5sZW5ndGg7bjxvO24rKyl7Y29uc3Qgbz10aGlzLmNoaWxkcmVuW25dLmdldE9iamVjdEJ5UHJvcGVydHkodCxlKTtpZih2b2lkIDAhPT1vKXJldHVybiBvfX1nZXRXb3JsZFBvc2l0aW9uKHQpe3JldHVybiB0aGlzLnVwZGF0ZVdvcmxkTWF0cml4KCEwLCExKSx0LnNldEZyb21NYXRyaXhQb3NpdGlvbih0aGlzLm1hdHJpeFdvcmxkKX1nZXRXb3JsZFF1YXRlcm5pb24odCl7cmV0dXJuIHRoaXMudXBkYXRlV29ybGRNYXRyaXgoITAsITEpLHRoaXMubWF0cml4V29ybGQuZGVjb21wb3NlKENsdCx0LE1sdCksdH1nZXRXb3JsZFNjYWxlKHQpe3JldHVybiB0aGlzLnVwZGF0ZVdvcmxkTWF0cml4KCEwLCExKSx0aGlzLm1hdHJpeFdvcmxkLmRlY29tcG9zZShDbHQsdmx0LHQpLHR9Z2V0V29ybGREaXJlY3Rpb24odCl7dGhpcy51cGRhdGVXb3JsZE1hdHJpeCghMCwhMSk7Y29uc3QgZT10aGlzLm1hdHJpeFdvcmxkLmVsZW1lbnRzO3JldHVybiB0LnNldChlWzhdLGVbOV0sZVsxMF0pLm5vcm1hbGl6ZSgpfXJheWNhc3QoKXt9dHJhdmVyc2UodCl7dCh0aGlzKTtjb25zdCBlPXRoaXMuY2hpbGRyZW47Zm9yKGxldCBuPTAsbz1lLmxlbmd0aDtuPG87bisrKWVbbl0udHJhdmVyc2UodCl9dHJhdmVyc2VWaXNpYmxlKHQpe2lmKCExPT09dGhpcy52aXNpYmxlKXJldHVybjt0KHRoaXMpO2NvbnN0IGU9dGhpcy5jaGlsZHJlbjtmb3IobGV0IG49MCxvPWUubGVuZ3RoO248bztuKyspZVtuXS50cmF2ZXJzZVZpc2libGUodCl9dHJhdmVyc2VBbmNlc3RvcnModCl7Y29uc3QgZT10aGlzLnBhcmVudDtudWxsIT09ZSYmKHQoZSksZS50cmF2ZXJzZUFuY2VzdG9ycyh0KSl9dXBkYXRlTWF0cml4KCl7dGhpcy5tYXRyaXguY29tcG9zZSh0aGlzLnBvc2l0aW9uLHRoaXMucXVhdGVybmlvbix0aGlzLnNjYWxlKSx0aGlzLm1hdHJpeFdvcmxkTmVlZHNVcGRhdGU9ITB9dXBkYXRlTWF0cml4V29ybGQodCl7dGhpcy5tYXRyaXhBdXRvVXBkYXRlJiZ0aGlzLnVwZGF0ZU1hdHJpeCgpLCh0aGlzLm1hdHJpeFdvcmxkTmVlZHNVcGRhdGV8fHQpJiYobnVsbD09PXRoaXMucGFyZW50P3RoaXMubWF0cml4V29ybGQuY29weSh0aGlzLm1hdHJpeCk6dGhpcy5tYXRyaXhXb3JsZC5tdWx0aXBseU1hdHJpY2VzKHRoaXMucGFyZW50Lm1hdHJpeFdvcmxkLHRoaXMubWF0cml4KSx0aGlzLm1hdHJpeFdvcmxkTmVlZHNVcGRhdGU9ITEsdD0hMCk7Y29uc3QgZT10aGlzLmNoaWxkcmVuO2ZvcihsZXQgbj0wLG89ZS5sZW5ndGg7bjxvO24rKyllW25dLnVwZGF0ZU1hdHJpeFdvcmxkKHQpfXVwZGF0ZVdvcmxkTWF0cml4KHQsZSl7Y29uc3Qgbj10aGlzLnBhcmVudDtpZighMD09PXQmJm51bGwhPT1uJiZuLnVwZGF0ZVdvcmxkTWF0cml4KCEwLCExKSx0aGlzLm1hdHJpeEF1dG9VcGRhdGUmJnRoaXMudXBkYXRlTWF0cml4KCksbnVsbD09PXRoaXMucGFyZW50P3RoaXMubWF0cml4V29ybGQuY29weSh0aGlzLm1hdHJpeCk6dGhpcy5tYXRyaXhXb3JsZC5tdWx0aXBseU1hdHJpY2VzKHRoaXMucGFyZW50Lm1hdHJpeFdvcmxkLHRoaXMubWF0cml4KSwhMD09PWUpe2NvbnN0IHQ9dGhpcy5jaGlsZHJlbjtmb3IobGV0IGU9MCxuPXQubGVuZ3RoO2U8bjtlKyspdFtlXS51cGRhdGVXb3JsZE1hdHJpeCghMSwhMCl9fXRvSlNPTih0KXtjb25zdCBlPXZvaWQgMD09PXR8fCJzdHJpbmciPT10eXBlb2YgdCxuPXt9O2UmJih0PXtnZW9tZXRyaWVzOnt9LG1hdGVyaWFsczp7fSx0ZXh0dXJlczp7fSxpbWFnZXM6e30sc2hhcGVzOnt9LHNrZWxldG9uczp7fSxhbmltYXRpb25zOnt9fSxuLm1ldGFkYXRhPXt2ZXJzaW9uOjQuNSx0eXBlOiJPYmplY3QiLGdlbmVyYXRvcjoiT2JqZWN0M0QudG9KU09OIn0pO2NvbnN0IG89e307ZnVuY3Rpb24gaShlLG4pe3JldHVybiB2b2lkIDA9PT1lW24udXVpZF0mJihlW24udXVpZF09bi50b0pTT04odCkpLG4udXVpZH1pZihvLnV1aWQ9dGhpcy51dWlkLG8udHlwZT10aGlzLnR5cGUsIiIhPT10aGlzLm5hbWUmJihvLm5hbWU9dGhpcy5uYW1lKSwhMD09PXRoaXMuY2FzdFNoYWRvdyYmKG8uY2FzdFNoYWRvdz0hMCksITA9PT10aGlzLnJlY2VpdmVTaGFkb3cmJihvLnJlY2VpdmVTaGFkb3c9ITApLCExPT09dGhpcy52aXNpYmxlJiYoby52aXNpYmxlPSExKSwhMT09PXRoaXMuZnJ1c3R1bUN1bGxlZCYmKG8uZnJ1c3R1bUN1bGxlZD0hMSksMCE9PXRoaXMucmVuZGVyT3JkZXImJihvLnJlbmRlck9yZGVyPXRoaXMucmVuZGVyT3JkZXIpLCJ7fSIhPT1KU09OLnN0cmluZ2lmeSh0aGlzLnVzZXJEYXRhKSYmKG8udXNlckRhdGE9dGhpcy51c2VyRGF0YSksby5sYXllcnM9dGhpcy5sYXllcnMubWFzayxvLm1hdHJpeD10aGlzLm1hdHJpeC50b0FycmF5KCksITE9PT10aGlzLm1hdHJpeEF1dG9VcGRhdGUmJihvLm1hdHJpeEF1dG9VcGRhdGU9ITEpLHRoaXMuaXNJbnN0YW5jZWRNZXNoJiYoby50eXBlPSJJbnN0YW5jZWRNZXNoIixvLmNvdW50PXRoaXMuY291bnQsby5pbnN0YW5jZU1hdHJpeD10aGlzLmluc3RhbmNlTWF0cml4LnRvSlNPTigpLG51bGwhPT10aGlzLmluc3RhbmNlQ29sb3ImJihvLmluc3RhbmNlQ29sb3I9dGhpcy5pbnN0YW5jZUNvbG9yLnRvSlNPTigpKSksdGhpcy5pc1NjZW5lKXRoaXMuYmFja2dyb3VuZCYmKHRoaXMuYmFja2dyb3VuZC5pc0NvbG9yP28uYmFja2dyb3VuZD10aGlzLmJhY2tncm91bmQudG9KU09OKCk6dGhpcy5iYWNrZ3JvdW5kLmlzVGV4dHVyZSYmKG8uYmFja2dyb3VuZD10aGlzLmJhY2tncm91bmQudG9KU09OKHQpLnV1aWQpKSx0aGlzLmVudmlyb25tZW50JiZ0aGlzLmVudmlyb25tZW50LmlzVGV4dHVyZSYmKG8uZW52aXJvbm1lbnQ9dGhpcy5lbnZpcm9ubWVudC50b0pTT04odCkudXVpZCk7ZWxzZSBpZih0aGlzLmlzTWVzaHx8dGhpcy5pc0xpbmV8fHRoaXMuaXNQb2ludHMpe28uZ2VvbWV0cnk9aSh0Lmdlb21ldHJpZXMsdGhpcy5nZW9tZXRyeSk7Y29uc3QgZT10aGlzLmdlb21ldHJ5LnBhcmFtZXRlcnM7aWYodm9pZCAwIT09ZSYmdm9pZCAwIT09ZS5zaGFwZXMpe2NvbnN0IG49ZS5zaGFwZXM7aWYoQXJyYXkuaXNBcnJheShuKSlmb3IobGV0IGU9MCxvPW4ubGVuZ3RoO2U8bztlKyspe2kodC5zaGFwZXMsbltlXSl9ZWxzZSBpKHQuc2hhcGVzLG4pfX1pZih0aGlzLmlzU2tpbm5lZE1lc2gmJihvLmJpbmRNb2RlPXRoaXMuYmluZE1vZGUsby5iaW5kTWF0cml4PXRoaXMuYmluZE1hdHJpeC50b0FycmF5KCksdm9pZCAwIT09dGhpcy5za2VsZXRvbiYmKGkodC5za2VsZXRvbnMsdGhpcy5za2VsZXRvbiksby5za2VsZXRvbj10aGlzLnNrZWxldG9uLnV1aWQpKSx2b2lkIDAhPT10aGlzLm1hdGVyaWFsKWlmKEFycmF5LmlzQXJyYXkodGhpcy5tYXRlcmlhbCkpe2NvbnN0IGU9W107Zm9yKGxldCBuPTAsbz10aGlzLm1hdGVyaWFsLmxlbmd0aDtuPG87bisrKWUucHVzaChpKHQubWF0ZXJpYWxzLHRoaXMubWF0ZXJpYWxbbl0pKTtvLm1hdGVyaWFsPWV9ZWxzZSBvLm1hdGVyaWFsPWkodC5tYXRlcmlhbHMsdGhpcy5tYXRlcmlhbCk7aWYodGhpcy5jaGlsZHJlbi5sZW5ndGg+MCl7by5jaGlsZHJlbj1bXTtmb3IobGV0IGU9MDtlPHRoaXMuY2hpbGRyZW4ubGVuZ3RoO2UrKylvLmNoaWxkcmVuLnB1c2godGhpcy5jaGlsZHJlbltlXS50b0pTT04odCkub2JqZWN0KX1pZih0aGlzLmFuaW1hdGlvbnMubGVuZ3RoPjApe28uYW5pbWF0aW9ucz1bXTtmb3IobGV0IGU9MDtlPHRoaXMuYW5pbWF0aW9ucy5sZW5ndGg7ZSsrKXtvLmFuaW1hdGlvbnMucHVzaChpKHQuYW5pbWF0aW9ucyx0aGlzLmFuaW1hdGlvbnNbZV0pKX19aWYoZSl7Y29uc3QgZT1hKHQuZ2VvbWV0cmllcyksbz1hKHQubWF0ZXJpYWxzKSxpPWEodC50ZXh0dXJlcykscj1hKHQuaW1hZ2VzKSxzPWEodC5zaGFwZXMpLGw9YSh0LnNrZWxldG9ucyksYz1hKHQuYW5pbWF0aW9ucyk7ZS5sZW5ndGg+MCYmKG4uZ2VvbWV0cmllcz1lKSxvLmxlbmd0aD4wJiYobi5tYXRlcmlhbHM9byksaS5sZW5ndGg+MCYmKG4udGV4dHVyZXM9aSksci5sZW5ndGg+MCYmKG4uaW1hZ2VzPXIpLHMubGVuZ3RoPjAmJihuLnNoYXBlcz1zKSxsLmxlbmd0aD4wJiYobi5za2VsZXRvbnM9bCksYy5sZW5ndGg+MCYmKG4uYW5pbWF0aW9ucz1jKX1yZXR1cm4gbi5vYmplY3Q9byxuO2Z1bmN0aW9uIGEodCl7Y29uc3QgZT1bXTtmb3IoY29uc3QgbiBpbiB0KXtjb25zdCBvPXRbbl07ZGVsZXRlIG8ubWV0YWRhdGEsZS5wdXNoKG8pfXJldHVybiBlfX1jbG9uZSh0KXtyZXR1cm4obmV3IHRoaXMuY29uc3RydWN0b3IpLmNvcHkodGhpcyx0KX1jb3B5KHQsZT0hMCl7aWYodGhpcy5uYW1lPXQubmFtZSx0aGlzLnVwLmNvcHkodC51cCksdGhpcy5wb3NpdGlvbi5jb3B5KHQucG9zaXRpb24pLHRoaXMucm90YXRpb24ub3JkZXI9dC5yb3RhdGlvbi5vcmRlcix0aGlzLnF1YXRlcm5pb24uY29weSh0LnF1YXRlcm5pb24pLHRoaXMuc2NhbGUuY29weSh0LnNjYWxlKSx0aGlzLm1hdHJpeC5jb3B5KHQubWF0cml4KSx0aGlzLm1hdHJpeFdvcmxkLmNvcHkodC5tYXRyaXhXb3JsZCksdGhpcy5tYXRyaXhBdXRvVXBkYXRlPXQubWF0cml4QXV0b1VwZGF0ZSx0aGlzLm1hdHJpeFdvcmxkTmVlZHNVcGRhdGU9dC5tYXRyaXhXb3JsZE5lZWRzVXBkYXRlLHRoaXMubGF5ZXJzLm1hc2s9dC5sYXllcnMubWFzayx0aGlzLnZpc2libGU9dC52aXNpYmxlLHRoaXMuY2FzdFNoYWRvdz10LmNhc3RTaGFkb3csdGhpcy5yZWNlaXZlU2hhZG93PXQucmVjZWl2ZVNoYWRvdyx0aGlzLmZydXN0dW1DdWxsZWQ9dC5mcnVzdHVtQ3VsbGVkLHRoaXMucmVuZGVyT3JkZXI9dC5yZW5kZXJPcmRlcix0aGlzLnVzZXJEYXRhPUpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodC51c2VyRGF0YSkpLCEwPT09ZSlmb3IobGV0IGU9MDtlPHQuY2hpbGRyZW4ubGVuZ3RoO2UrKyl7dGhpcy5hZGQodC5jaGlsZHJlbltlXS5jbG9uZSgpKX1yZXR1cm4gdGhpc319U2x0LkRlZmF1bHRVcD1uZXcgd3N0KDAsMSwwKSxTbHQuRGVmYXVsdE1hdHJpeEF1dG9VcGRhdGU9ITAsU2x0LnByb3RvdHlwZS5pc09iamVjdDNEPSEwO2NvbnN0IERsdD1uZXcgd3N0LFJsdD1uZXcgd3N0LEVsdD1uZXcgd3N0LEFsdD1uZXcgd3N0LFRsdD1uZXcgd3N0LE5sdD1uZXcgd3N0LHpsdD1uZXcgd3N0LElsdD1uZXcgd3N0LEhsdD1uZXcgd3N0LEZsdD1uZXcgd3N0O2NsYXNzIExsdHtjb25zdHJ1Y3Rvcih0PW5ldyB3c3QsZT1uZXcgd3N0LG49bmV3IHdzdCl7dGhpcy5hPXQsdGhpcy5iPWUsdGhpcy5jPW59c3RhdGljIGdldE5vcm1hbCh0LGUsbixvKXtvLnN1YlZlY3RvcnMobixlKSxEbHQuc3ViVmVjdG9ycyh0LGUpLG8uY3Jvc3MoRGx0KTtjb25zdCBpPW8ubGVuZ3RoU3EoKTtyZXR1cm4gaT4wP28ubXVsdGlwbHlTY2FsYXIoMS9NYXRoLnNxcnQoaSkpOm8uc2V0KDAsMCwwKX1zdGF0aWMgZ2V0QmFyeWNvb3JkKHQsZSxuLG8saSl7RGx0LnN1YlZlY3RvcnMobyxlKSxSbHQuc3ViVmVjdG9ycyhuLGUpLEVsdC5zdWJWZWN0b3JzKHQsZSk7Y29uc3QgYT1EbHQuZG90KERsdCkscj1EbHQuZG90KFJsdCkscz1EbHQuZG90KEVsdCksbD1SbHQuZG90KFJsdCksYz1SbHQuZG90KEVsdCksZD1hKmwtcipyO2lmKDA9PT1kKXJldHVybiBpLnNldCgtMiwtMSwtMSk7Y29uc3QgcD0xL2QsbT0obCpzLXIqYykqcCxmPShhKmMtcipzKSpwO3JldHVybiBpLnNldCgxLW0tZixmLG0pfXN0YXRpYyBjb250YWluc1BvaW50KHQsZSxuLG8pe3JldHVybiB0aGlzLmdldEJhcnljb29yZCh0LGUsbixvLEFsdCksQWx0Lng+PTAmJkFsdC55Pj0wJiZBbHQueCtBbHQueTw9MX1zdGF0aWMgZ2V0VVYodCxlLG4sbyxpLGEscixzKXtyZXR1cm4gdGhpcy5nZXRCYXJ5Y29vcmQodCxlLG4sbyxBbHQpLHMuc2V0KDAsMCkscy5hZGRTY2FsZWRWZWN0b3IoaSxBbHQueCkscy5hZGRTY2FsZWRWZWN0b3IoYSxBbHQueSkscy5hZGRTY2FsZWRWZWN0b3IocixBbHQueiksc31zdGF0aWMgaXNGcm9udEZhY2luZyh0LGUsbixvKXtyZXR1cm4gRGx0LnN1YlZlY3RvcnMobixlKSxSbHQuc3ViVmVjdG9ycyh0LGUpLERsdC5jcm9zcyhSbHQpLmRvdChvKTwwfXNldCh0LGUsbil7cmV0dXJuIHRoaXMuYS5jb3B5KHQpLHRoaXMuYi5jb3B5KGUpLHRoaXMuYy5jb3B5KG4pLHRoaXN9c2V0RnJvbVBvaW50c0FuZEluZGljZXModCxlLG4sbyl7cmV0dXJuIHRoaXMuYS5jb3B5KHRbZV0pLHRoaXMuYi5jb3B5KHRbbl0pLHRoaXMuYy5jb3B5KHRbb10pLHRoaXN9Y2xvbmUoKXtyZXR1cm4obmV3IHRoaXMuY29uc3RydWN0b3IpLmNvcHkodGhpcyl9Y29weSh0KXtyZXR1cm4gdGhpcy5hLmNvcHkodC5hKSx0aGlzLmIuY29weSh0LmIpLHRoaXMuYy5jb3B5KHQuYyksdGhpc31nZXRBcmVhKCl7cmV0dXJuIERsdC5zdWJWZWN0b3JzKHRoaXMuYyx0aGlzLmIpLFJsdC5zdWJWZWN0b3JzKHRoaXMuYSx0aGlzLmIpLC41KkRsdC5jcm9zcyhSbHQpLmxlbmd0aCgpfWdldE1pZHBvaW50KHQpe3JldHVybiB0LmFkZFZlY3RvcnModGhpcy5hLHRoaXMuYikuYWRkKHRoaXMuYykubXVsdGlwbHlTY2FsYXIoMS8zKX1nZXROb3JtYWwodCl7cmV0dXJuIExsdC5nZXROb3JtYWwodGhpcy5hLHRoaXMuYix0aGlzLmMsdCl9Z2V0UGxhbmUodCl7cmV0dXJuIHQuc2V0RnJvbUNvcGxhbmFyUG9pbnRzKHRoaXMuYSx0aGlzLmIsdGhpcy5jKX1nZXRCYXJ5Y29vcmQodCxlKXtyZXR1cm4gTGx0LmdldEJhcnljb29yZCh0LHRoaXMuYSx0aGlzLmIsdGhpcy5jLGUpfWdldFVWKHQsZSxuLG8saSl7cmV0dXJuIExsdC5nZXRVVih0LHRoaXMuYSx0aGlzLmIsdGhpcy5jLGUsbixvLGkpfWNvbnRhaW5zUG9pbnQodCl7cmV0dXJuIExsdC5jb250YWluc1BvaW50KHQsdGhpcy5hLHRoaXMuYix0aGlzLmMpfWlzRnJvbnRGYWNpbmcodCl7cmV0dXJuIExsdC5pc0Zyb250RmFjaW5nKHRoaXMuYSx0aGlzLmIsdGhpcy5jLHQpfWludGVyc2VjdHNCb3godCl7cmV0dXJuIHQuaW50ZXJzZWN0c1RyaWFuZ2xlKHRoaXMpfWNsb3Nlc3RQb2ludFRvUG9pbnQodCxlKXtjb25zdCBuPXRoaXMuYSxvPXRoaXMuYixpPXRoaXMuYztsZXQgYSxyO1RsdC5zdWJWZWN0b3JzKG8sbiksTmx0LnN1YlZlY3RvcnMoaSxuKSxJbHQuc3ViVmVjdG9ycyh0LG4pO2NvbnN0IHM9VGx0LmRvdChJbHQpLGw9Tmx0LmRvdChJbHQpO2lmKHM8PTAmJmw8PTApcmV0dXJuIGUuY29weShuKTtIbHQuc3ViVmVjdG9ycyh0LG8pO2NvbnN0IGM9VGx0LmRvdChIbHQpLGQ9Tmx0LmRvdChIbHQpO2lmKGM+PTAmJmQ8PWMpcmV0dXJuIGUuY29weShvKTtjb25zdCBwPXMqZC1jKmw7aWYocDw9MCYmcz49MCYmYzw9MClyZXR1cm4gYT1zLyhzLWMpLGUuY29weShuKS5hZGRTY2FsZWRWZWN0b3IoVGx0LGEpO0ZsdC5zdWJWZWN0b3JzKHQsaSk7Y29uc3QgbT1UbHQuZG90KEZsdCksZj1ObHQuZG90KEZsdCk7aWYoZj49MCYmbTw9ZilyZXR1cm4gZS5jb3B5KGkpO2NvbnN0IHU9bSpsLXMqZjtpZih1PD0wJiZsPj0wJiZmPD0wKXJldHVybiByPWwvKGwtZiksZS5jb3B5KG4pLmFkZFNjYWxlZFZlY3RvcihObHQscik7Y29uc3QgZz1jKmYtbSpkO2lmKGc8PTAmJmQtYz49MCYmbS1mPj0wKXJldHVybiB6bHQuc3ViVmVjdG9ycyhpLG8pLHI9KGQtYykvKGQtYysobS1mKSksZS5jb3B5KG8pLmFkZFNjYWxlZFZlY3Rvcih6bHQscik7Y29uc3QgaD0xLyhnK3UrcCk7cmV0dXJuIGE9dSpoLHI9cCpoLGUuY29weShuKS5hZGRTY2FsZWRWZWN0b3IoVGx0LGEpLmFkZFNjYWxlZFZlY3RvcihObHQscil9ZXF1YWxzKHQpe3JldHVybiB0LmEuZXF1YWxzKHRoaXMuYSkmJnQuYi5lcXVhbHModGhpcy5iKSYmdC5jLmVxdWFscyh0aGlzLmMpfX1sZXQgQmx0PTA7Y2xhc3MgVmx0IGV4dGVuZHMgcnN0e2NvbnN0cnVjdG9yKCl7c3VwZXIoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywiaWQiLHt2YWx1ZTpCbHQrK30pLHRoaXMudXVpZD1kc3QoKSx0aGlzLm5hbWU9IiIsdGhpcy50eXBlPSJNYXRlcmlhbCIsdGhpcy5mb2c9ITAsdGhpcy5ibGVuZGluZz0xLHRoaXMuc2lkZT0wLHRoaXMudmVydGV4Q29sb3JzPSExLHRoaXMub3BhY2l0eT0xLHRoaXMudHJhbnNwYXJlbnQ9ITEsdGhpcy5ibGVuZFNyYz0yMDQsdGhpcy5ibGVuZERzdD0yMDUsdGhpcy5ibGVuZEVxdWF0aW9uPVBydCx0aGlzLmJsZW5kU3JjQWxwaGE9bnVsbCx0aGlzLmJsZW5kRHN0QWxwaGE9bnVsbCx0aGlzLmJsZW5kRXF1YXRpb25BbHBoYT1udWxsLHRoaXMuZGVwdGhGdW5jPTMsdGhpcy5kZXB0aFRlc3Q9ITAsdGhpcy5kZXB0aFdyaXRlPSEwLHRoaXMuc3RlbmNpbFdyaXRlTWFzaz0yNTUsdGhpcy5zdGVuY2lsRnVuYz01MTksdGhpcy5zdGVuY2lsUmVmPTAsdGhpcy5zdGVuY2lsRnVuY01hc2s9MjU1LHRoaXMuc3RlbmNpbEZhaWw9bnN0LHRoaXMuc3RlbmNpbFpGYWlsPW5zdCx0aGlzLnN0ZW5jaWxaUGFzcz1uc3QsdGhpcy5zdGVuY2lsV3JpdGU9ITEsdGhpcy5jbGlwcGluZ1BsYW5lcz1udWxsLHRoaXMuY2xpcEludGVyc2VjdGlvbj0hMSx0aGlzLmNsaXBTaGFkb3dzPSExLHRoaXMuc2hhZG93U2lkZT1udWxsLHRoaXMuY29sb3JXcml0ZT0hMCx0aGlzLnByZWNpc2lvbj1udWxsLHRoaXMucG9seWdvbk9mZnNldD0hMSx0aGlzLnBvbHlnb25PZmZzZXRGYWN0b3I9MCx0aGlzLnBvbHlnb25PZmZzZXRVbml0cz0wLHRoaXMuZGl0aGVyaW5nPSExLHRoaXMuYWxwaGFUZXN0PTAsdGhpcy5hbHBoYVRvQ292ZXJhZ2U9ITEsdGhpcy5wcmVtdWx0aXBsaWVkQWxwaGE9ITEsdGhpcy52aXNpYmxlPSEwLHRoaXMudG9uZU1hcHBlZD0hMCx0aGlzLnVzZXJEYXRhPXt9LHRoaXMudmVyc2lvbj0wfW9uQnVpbGQoKXt9b25CZWZvcmVDb21waWxlKCl7fWN1c3RvbVByb2dyYW1DYWNoZUtleSgpe3JldHVybiB0aGlzLm9uQmVmb3JlQ29tcGlsZS50b1N0cmluZygpfXNldFZhbHVlcyh0KXtpZih2b2lkIDAhPT10KWZvcihjb25zdCBlIGluIHQpe2NvbnN0IG49dFtlXTtpZih2b2lkIDA9PT1uKXtjb25zb2xlLndhcm4oIlRIUkVFLk1hdGVyaWFsOiAnIitlKyInIHBhcmFtZXRlciBpcyB1bmRlZmluZWQuIik7Y29udGludWV9aWYoInNoYWRpbmciPT09ZSl7Y29uc29sZS53YXJuKCJUSFJFRS4iK3RoaXMudHlwZSsiOiAuc2hhZGluZyBoYXMgYmVlbiByZW1vdmVkLiBVc2UgdGhlIGJvb2xlYW4gLmZsYXRTaGFkaW5nIGluc3RlYWQuIiksdGhpcy5mbGF0U2hhZGluZz0xPT09bjtjb250aW51ZX1jb25zdCBvPXRoaXNbZV07dm9pZCAwIT09bz9vJiZvLmlzQ29sb3I/by5zZXQobik6byYmby5pc1ZlY3RvcjMmJm4mJm4uaXNWZWN0b3IzP28uY29weShuKTp0aGlzW2VdPW46Y29uc29sZS53YXJuKCJUSFJFRS4iK3RoaXMudHlwZSsiOiAnIitlKyInIGlzIG5vdCBhIHByb3BlcnR5IG9mIHRoaXMgbWF0ZXJpYWwuIil9fXRvSlNPTih0KXtjb25zdCBlPXZvaWQgMD09PXR8fCJzdHJpbmciPT10eXBlb2YgdDtlJiYodD17dGV4dHVyZXM6e30saW1hZ2VzOnt9fSk7Y29uc3Qgbj17bWV0YWRhdGE6e3ZlcnNpb246NC41LHR5cGU6Ik1hdGVyaWFsIixnZW5lcmF0b3I6Ik1hdGVyaWFsLnRvSlNPTiJ9fTtmdW5jdGlvbiBvKHQpe2NvbnN0IGU9W107Zm9yKGNvbnN0IG4gaW4gdCl7Y29uc3Qgbz10W25dO2RlbGV0ZSBvLm1ldGFkYXRhLGUucHVzaChvKX1yZXR1cm4gZX1pZihuLnV1aWQ9dGhpcy51dWlkLG4udHlwZT10aGlzLnR5cGUsIiIhPT10aGlzLm5hbWUmJihuLm5hbWU9dGhpcy5uYW1lKSx0aGlzLmNvbG9yJiZ0aGlzLmNvbG9yLmlzQ29sb3ImJihuLmNvbG9yPXRoaXMuY29sb3IuZ2V0SGV4KCkpLHZvaWQgMCE9PXRoaXMucm91Z2huZXNzJiYobi5yb3VnaG5lc3M9dGhpcy5yb3VnaG5lc3MpLHZvaWQgMCE9PXRoaXMubWV0YWxuZXNzJiYobi5tZXRhbG5lc3M9dGhpcy5tZXRhbG5lc3MpLHRoaXMuc2hlZW4mJnRoaXMuc2hlZW4uaXNDb2xvciYmKG4uc2hlZW49dGhpcy5zaGVlbi5nZXRIZXgoKSksdGhpcy5lbWlzc2l2ZSYmdGhpcy5lbWlzc2l2ZS5pc0NvbG9yJiYobi5lbWlzc2l2ZT10aGlzLmVtaXNzaXZlLmdldEhleCgpKSx0aGlzLmVtaXNzaXZlSW50ZW5zaXR5JiYxIT09dGhpcy5lbWlzc2l2ZUludGVuc2l0eSYmKG4uZW1pc3NpdmVJbnRlbnNpdHk9dGhpcy5lbWlzc2l2ZUludGVuc2l0eSksdGhpcy5zcGVjdWxhciYmdGhpcy5zcGVjdWxhci5pc0NvbG9yJiYobi5zcGVjdWxhcj10aGlzLnNwZWN1bGFyLmdldEhleCgpKSx2b2lkIDAhPT10aGlzLnNwZWN1bGFySW50ZW5zaXR5JiYobi5zcGVjdWxhckludGVuc2l0eT10aGlzLnNwZWN1bGFySW50ZW5zaXR5KSx0aGlzLnNwZWN1bGFyVGludCYmdGhpcy5zcGVjdWxhclRpbnQuaXNDb2xvciYmKG4uc3BlY3VsYXJUaW50PXRoaXMuc3BlY3VsYXJUaW50LmdldEhleCgpKSx2b2lkIDAhPT10aGlzLnNoaW5pbmVzcyYmKG4uc2hpbmluZXNzPXRoaXMuc2hpbmluZXNzKSx2b2lkIDAhPT10aGlzLmNsZWFyY29hdCYmKG4uY2xlYXJjb2F0PXRoaXMuY2xlYXJjb2F0KSx2b2lkIDAhPT10aGlzLmNsZWFyY29hdFJvdWdobmVzcyYmKG4uY2xlYXJjb2F0Um91Z2huZXNzPXRoaXMuY2xlYXJjb2F0Um91Z2huZXNzKSx0aGlzLmNsZWFyY29hdE1hcCYmdGhpcy5jbGVhcmNvYXRNYXAuaXNUZXh0dXJlJiYobi5jbGVhcmNvYXRNYXA9dGhpcy5jbGVhcmNvYXRNYXAudG9KU09OKHQpLnV1aWQpLHRoaXMuY2xlYXJjb2F0Um91Z2huZXNzTWFwJiZ0aGlzLmNsZWFyY29hdFJvdWdobmVzc01hcC5pc1RleHR1cmUmJihuLmNsZWFyY29hdFJvdWdobmVzc01hcD10aGlzLmNsZWFyY29hdFJvdWdobmVzc01hcC50b0pTT04odCkudXVpZCksdGhpcy5jbGVhcmNvYXROb3JtYWxNYXAmJnRoaXMuY2xlYXJjb2F0Tm9ybWFsTWFwLmlzVGV4dHVyZSYmKG4uY2xlYXJjb2F0Tm9ybWFsTWFwPXRoaXMuY2xlYXJjb2F0Tm9ybWFsTWFwLnRvSlNPTih0KS51dWlkLG4uY2xlYXJjb2F0Tm9ybWFsU2NhbGU9dGhpcy5jbGVhcmNvYXROb3JtYWxTY2FsZS50b0FycmF5KCkpLHRoaXMubWFwJiZ0aGlzLm1hcC5pc1RleHR1cmUmJihuLm1hcD10aGlzLm1hcC50b0pTT04odCkudXVpZCksdGhpcy5tYXRjYXAmJnRoaXMubWF0Y2FwLmlzVGV4dHVyZSYmKG4ubWF0Y2FwPXRoaXMubWF0Y2FwLnRvSlNPTih0KS51dWlkKSx0aGlzLmFscGhhTWFwJiZ0aGlzLmFscGhhTWFwLmlzVGV4dHVyZSYmKG4uYWxwaGFNYXA9dGhpcy5hbHBoYU1hcC50b0pTT04odCkudXVpZCksdGhpcy5saWdodE1hcCYmdGhpcy5saWdodE1hcC5pc1RleHR1cmUmJihuLmxpZ2h0TWFwPXRoaXMubGlnaHRNYXAudG9KU09OKHQpLnV1aWQsbi5saWdodE1hcEludGVuc2l0eT10aGlzLmxpZ2h0TWFwSW50ZW5zaXR5KSx0aGlzLmFvTWFwJiZ0aGlzLmFvTWFwLmlzVGV4dHVyZSYmKG4uYW9NYXA9dGhpcy5hb01hcC50b0pTT04odCkudXVpZCxuLmFvTWFwSW50ZW5zaXR5PXRoaXMuYW9NYXBJbnRlbnNpdHkpLHRoaXMuYnVtcE1hcCYmdGhpcy5idW1wTWFwLmlzVGV4dHVyZSYmKG4uYnVtcE1hcD10aGlzLmJ1bXBNYXAudG9KU09OKHQpLnV1aWQsbi5idW1wU2NhbGU9dGhpcy5idW1wU2NhbGUpLHRoaXMubm9ybWFsTWFwJiZ0aGlzLm5vcm1hbE1hcC5pc1RleHR1cmUmJihuLm5vcm1hbE1hcD10aGlzLm5vcm1hbE1hcC50b0pTT04odCkudXVpZCxuLm5vcm1hbE1hcFR5cGU9dGhpcy5ub3JtYWxNYXBUeXBlLG4ubm9ybWFsU2NhbGU9dGhpcy5ub3JtYWxTY2FsZS50b0FycmF5KCkpLHRoaXMuZGlzcGxhY2VtZW50TWFwJiZ0aGlzLmRpc3BsYWNlbWVudE1hcC5pc1RleHR1cmUmJihuLmRpc3BsYWNlbWVudE1hcD10aGlzLmRpc3BsYWNlbWVudE1hcC50b0pTT04odCkudXVpZCxuLmRpc3BsYWNlbWVudFNjYWxlPXRoaXMuZGlzcGxhY2VtZW50U2NhbGUsbi5kaXNwbGFjZW1lbnRCaWFzPXRoaXMuZGlzcGxhY2VtZW50QmlhcyksdGhpcy5yb3VnaG5lc3NNYXAmJnRoaXMucm91Z2huZXNzTWFwLmlzVGV4dHVyZSYmKG4ucm91Z2huZXNzTWFwPXRoaXMucm91Z2huZXNzTWFwLnRvSlNPTih0KS51dWlkKSx0aGlzLm1ldGFsbmVzc01hcCYmdGhpcy5tZXRhbG5lc3NNYXAuaXNUZXh0dXJlJiYobi5tZXRhbG5lc3NNYXA9dGhpcy5tZXRhbG5lc3NNYXAudG9KU09OKHQpLnV1aWQpLHRoaXMuZW1pc3NpdmVNYXAmJnRoaXMuZW1pc3NpdmVNYXAuaXNUZXh0dXJlJiYobi5lbWlzc2l2ZU1hcD10aGlzLmVtaXNzaXZlTWFwLnRvSlNPTih0KS51dWlkKSx0aGlzLnNwZWN1bGFyTWFwJiZ0aGlzLnNwZWN1bGFyTWFwLmlzVGV4dHVyZSYmKG4uc3BlY3VsYXJNYXA9dGhpcy5zcGVjdWxhck1hcC50b0pTT04odCkudXVpZCksdGhpcy5zcGVjdWxhckludGVuc2l0eU1hcCYmdGhpcy5zcGVjdWxhckludGVuc2l0eU1hcC5pc1RleHR1cmUmJihuLnNwZWN1bGFySW50ZW5zaXR5TWFwPXRoaXMuc3BlY3VsYXJJbnRlbnNpdHlNYXAudG9KU09OKHQpLnV1aWQpLHRoaXMuc3BlY3VsYXJUaW50TWFwJiZ0aGlzLnNwZWN1bGFyVGludE1hcC5pc1RleHR1cmUmJihuLnNwZWN1bGFyVGludE1hcD10aGlzLnNwZWN1bGFyVGludE1hcC50b0pTT04odCkudXVpZCksdGhpcy5lbnZNYXAmJnRoaXMuZW52TWFwLmlzVGV4dHVyZSYmKG4uZW52TWFwPXRoaXMuZW52TWFwLnRvSlNPTih0KS51dWlkLHZvaWQgMCE9PXRoaXMuY29tYmluZSYmKG4uY29tYmluZT10aGlzLmNvbWJpbmUpKSx2b2lkIDAhPT10aGlzLmVudk1hcEludGVuc2l0eSYmKG4uZW52TWFwSW50ZW5zaXR5PXRoaXMuZW52TWFwSW50ZW5zaXR5KSx2b2lkIDAhPT10aGlzLnJlZmxlY3Rpdml0eSYmKG4ucmVmbGVjdGl2aXR5PXRoaXMucmVmbGVjdGl2aXR5KSx2b2lkIDAhPT10aGlzLnJlZnJhY3Rpb25SYXRpbyYmKG4ucmVmcmFjdGlvblJhdGlvPXRoaXMucmVmcmFjdGlvblJhdGlvKSx0aGlzLmdyYWRpZW50TWFwJiZ0aGlzLmdyYWRpZW50TWFwLmlzVGV4dHVyZSYmKG4uZ3JhZGllbnRNYXA9dGhpcy5ncmFkaWVudE1hcC50b0pTT04odCkudXVpZCksdm9pZCAwIT09dGhpcy50cmFuc21pc3Npb24mJihuLnRyYW5zbWlzc2lvbj10aGlzLnRyYW5zbWlzc2lvbiksdGhpcy50cmFuc21pc3Npb25NYXAmJnRoaXMudHJhbnNtaXNzaW9uTWFwLmlzVGV4dHVyZSYmKG4udHJhbnNtaXNzaW9uTWFwPXRoaXMudHJhbnNtaXNzaW9uTWFwLnRvSlNPTih0KS51dWlkKSx2b2lkIDAhPT10aGlzLnRoaWNrbmVzcyYmKG4udGhpY2tuZXNzPXRoaXMudGhpY2tuZXNzKSx0aGlzLnRoaWNrbmVzc01hcCYmdGhpcy50aGlja25lc3NNYXAuaXNUZXh0dXJlJiYobi50aGlja25lc3NNYXA9dGhpcy50aGlja25lc3NNYXAudG9KU09OKHQpLnV1aWQpLHZvaWQgMCE9PXRoaXMuYXR0ZW51YXRpb25EaXN0YW5jZSYmKG4uYXR0ZW51YXRpb25EaXN0YW5jZT10aGlzLmF0dGVudWF0aW9uRGlzdGFuY2UpLHZvaWQgMCE9PXRoaXMuYXR0ZW51YXRpb25UaW50JiYobi5hdHRlbnVhdGlvblRpbnQ9dGhpcy5hdHRlbnVhdGlvblRpbnQuZ2V0SGV4KCkpLHZvaWQgMCE9PXRoaXMuc2l6ZSYmKG4uc2l6ZT10aGlzLnNpemUpLG51bGwhPT10aGlzLnNoYWRvd1NpZGUmJihuLnNoYWRvd1NpZGU9dGhpcy5zaGFkb3dTaWRlKSx2b2lkIDAhPT10aGlzLnNpemVBdHRlbnVhdGlvbiYmKG4uc2l6ZUF0dGVudWF0aW9uPXRoaXMuc2l6ZUF0dGVudWF0aW9uKSwxIT09dGhpcy5ibGVuZGluZyYmKG4uYmxlbmRpbmc9dGhpcy5ibGVuZGluZyksMCE9PXRoaXMuc2lkZSYmKG4uc2lkZT10aGlzLnNpZGUpLHRoaXMudmVydGV4Q29sb3JzJiYobi52ZXJ0ZXhDb2xvcnM9ITApLHRoaXMub3BhY2l0eTwxJiYobi5vcGFjaXR5PXRoaXMub3BhY2l0eSksITA9PT10aGlzLnRyYW5zcGFyZW50JiYobi50cmFuc3BhcmVudD10aGlzLnRyYW5zcGFyZW50KSxuLmRlcHRoRnVuYz10aGlzLmRlcHRoRnVuYyxuLmRlcHRoVGVzdD10aGlzLmRlcHRoVGVzdCxuLmRlcHRoV3JpdGU9dGhpcy5kZXB0aFdyaXRlLG4uY29sb3JXcml0ZT10aGlzLmNvbG9yV3JpdGUsbi5zdGVuY2lsV3JpdGU9dGhpcy5zdGVuY2lsV3JpdGUsbi5zdGVuY2lsV3JpdGVNYXNrPXRoaXMuc3RlbmNpbFdyaXRlTWFzayxuLnN0ZW5jaWxGdW5jPXRoaXMuc3RlbmNpbEZ1bmMsbi5zdGVuY2lsUmVmPXRoaXMuc3RlbmNpbFJlZixuLnN0ZW5jaWxGdW5jTWFzaz10aGlzLnN0ZW5jaWxGdW5jTWFzayxuLnN0ZW5jaWxGYWlsPXRoaXMuc3RlbmNpbEZhaWwsbi5zdGVuY2lsWkZhaWw9dGhpcy5zdGVuY2lsWkZhaWwsbi5zdGVuY2lsWlBhc3M9dGhpcy5zdGVuY2lsWlBhc3MsdGhpcy5yb3RhdGlvbiYmMCE9PXRoaXMucm90YXRpb24mJihuLnJvdGF0aW9uPXRoaXMucm90YXRpb24pLCEwPT09dGhpcy5wb2x5Z29uT2Zmc2V0JiYobi5wb2x5Z29uT2Zmc2V0PSEwKSwwIT09dGhpcy5wb2x5Z29uT2Zmc2V0RmFjdG9yJiYobi5wb2x5Z29uT2Zmc2V0RmFjdG9yPXRoaXMucG9seWdvbk9mZnNldEZhY3RvciksMCE9PXRoaXMucG9seWdvbk9mZnNldFVuaXRzJiYobi5wb2x5Z29uT2Zmc2V0VW5pdHM9dGhpcy5wb2x5Z29uT2Zmc2V0VW5pdHMpLHRoaXMubGluZXdpZHRoJiYxIT09dGhpcy5saW5ld2lkdGgmJihuLmxpbmV3aWR0aD10aGlzLmxpbmV3aWR0aCksdm9pZCAwIT09dGhpcy5kYXNoU2l6ZSYmKG4uZGFzaFNpemU9dGhpcy5kYXNoU2l6ZSksdm9pZCAwIT09dGhpcy5nYXBTaXplJiYobi5nYXBTaXplPXRoaXMuZ2FwU2l6ZSksdm9pZCAwIT09dGhpcy5zY2FsZSYmKG4uc2NhbGU9dGhpcy5zY2FsZSksITA9PT10aGlzLmRpdGhlcmluZyYmKG4uZGl0aGVyaW5nPSEwKSx0aGlzLmFscGhhVGVzdD4wJiYobi5hbHBoYVRlc3Q9dGhpcy5hbHBoYVRlc3QpLCEwPT09dGhpcy5hbHBoYVRvQ292ZXJhZ2UmJihuLmFscGhhVG9Db3ZlcmFnZT10aGlzLmFscGhhVG9Db3ZlcmFnZSksITA9PT10aGlzLnByZW11bHRpcGxpZWRBbHBoYSYmKG4ucHJlbXVsdGlwbGllZEFscGhhPXRoaXMucHJlbXVsdGlwbGllZEFscGhhKSwhMD09PXRoaXMud2lyZWZyYW1lJiYobi53aXJlZnJhbWU9dGhpcy53aXJlZnJhbWUpLHRoaXMud2lyZWZyYW1lTGluZXdpZHRoPjEmJihuLndpcmVmcmFtZUxpbmV3aWR0aD10aGlzLndpcmVmcmFtZUxpbmV3aWR0aCksInJvdW5kIiE9PXRoaXMud2lyZWZyYW1lTGluZWNhcCYmKG4ud2lyZWZyYW1lTGluZWNhcD10aGlzLndpcmVmcmFtZUxpbmVjYXApLCJyb3VuZCIhPT10aGlzLndpcmVmcmFtZUxpbmVqb2luJiYobi53aXJlZnJhbWVMaW5lam9pbj10aGlzLndpcmVmcmFtZUxpbmVqb2luKSwhMD09PXRoaXMuZmxhdFNoYWRpbmcmJihuLmZsYXRTaGFkaW5nPXRoaXMuZmxhdFNoYWRpbmcpLCExPT09dGhpcy52aXNpYmxlJiYobi52aXNpYmxlPSExKSwhMT09PXRoaXMudG9uZU1hcHBlZCYmKG4udG9uZU1hcHBlZD0hMSksInt9IiE9PUpTT04uc3RyaW5naWZ5KHRoaXMudXNlckRhdGEpJiYobi51c2VyRGF0YT10aGlzLnVzZXJEYXRhKSxlKXtjb25zdCBlPW8odC50ZXh0dXJlcyksaT1vKHQuaW1hZ2VzKTtlLmxlbmd0aD4wJiYobi50ZXh0dXJlcz1lKSxpLmxlbmd0aD4wJiYobi5pbWFnZXM9aSl9cmV0dXJuIG59Y2xvbmUoKXtyZXR1cm4obmV3IHRoaXMuY29uc3RydWN0b3IpLmNvcHkodGhpcyl9Y29weSh0KXt0aGlzLm5hbWU9dC5uYW1lLHRoaXMuZm9nPXQuZm9nLHRoaXMuYmxlbmRpbmc9dC5ibGVuZGluZyx0aGlzLnNpZGU9dC5zaWRlLHRoaXMudmVydGV4Q29sb3JzPXQudmVydGV4Q29sb3JzLHRoaXMub3BhY2l0eT10Lm9wYWNpdHksdGhpcy50cmFuc3BhcmVudD10LnRyYW5zcGFyZW50LHRoaXMuYmxlbmRTcmM9dC5ibGVuZFNyYyx0aGlzLmJsZW5kRHN0PXQuYmxlbmREc3QsdGhpcy5ibGVuZEVxdWF0aW9uPXQuYmxlbmRFcXVhdGlvbix0aGlzLmJsZW5kU3JjQWxwaGE9dC5ibGVuZFNyY0FscGhhLHRoaXMuYmxlbmREc3RBbHBoYT10LmJsZW5kRHN0QWxwaGEsdGhpcy5ibGVuZEVxdWF0aW9uQWxwaGE9dC5ibGVuZEVxdWF0aW9uQWxwaGEsdGhpcy5kZXB0aEZ1bmM9dC5kZXB0aEZ1bmMsdGhpcy5kZXB0aFRlc3Q9dC5kZXB0aFRlc3QsdGhpcy5kZXB0aFdyaXRlPXQuZGVwdGhXcml0ZSx0aGlzLnN0ZW5jaWxXcml0ZU1hc2s9dC5zdGVuY2lsV3JpdGVNYXNrLHRoaXMuc3RlbmNpbEZ1bmM9dC5zdGVuY2lsRnVuYyx0aGlzLnN0ZW5jaWxSZWY9dC5zdGVuY2lsUmVmLHRoaXMuc3RlbmNpbEZ1bmNNYXNrPXQuc3RlbmNpbEZ1bmNNYXNrLHRoaXMuc3RlbmNpbEZhaWw9dC5zdGVuY2lsRmFpbCx0aGlzLnN0ZW5jaWxaRmFpbD10LnN0ZW5jaWxaRmFpbCx0aGlzLnN0ZW5jaWxaUGFzcz10LnN0ZW5jaWxaUGFzcyx0aGlzLnN0ZW5jaWxXcml0ZT10LnN0ZW5jaWxXcml0ZTtjb25zdCBlPXQuY2xpcHBpbmdQbGFuZXM7bGV0IG49bnVsbDtpZihudWxsIT09ZSl7Y29uc3QgdD1lLmxlbmd0aDtuPW5ldyBBcnJheSh0KTtmb3IobGV0IG89MDtvIT09dDsrK28pbltvXT1lW29dLmNsb25lKCl9cmV0dXJuIHRoaXMuY2xpcHBpbmdQbGFuZXM9bix0aGlzLmNsaXBJbnRlcnNlY3Rpb249dC5jbGlwSW50ZXJzZWN0aW9uLHRoaXMuY2xpcFNoYWRvd3M9dC5jbGlwU2hhZG93cyx0aGlzLnNoYWRvd1NpZGU9dC5zaGFkb3dTaWRlLHRoaXMuY29sb3JXcml0ZT10LmNvbG9yV3JpdGUsdGhpcy5wcmVjaXNpb249dC5wcmVjaXNpb24sdGhpcy5wb2x5Z29uT2Zmc2V0PXQucG9seWdvbk9mZnNldCx0aGlzLnBvbHlnb25PZmZzZXRGYWN0b3I9dC5wb2x5Z29uT2Zmc2V0RmFjdG9yLHRoaXMucG9seWdvbk9mZnNldFVuaXRzPXQucG9seWdvbk9mZnNldFVuaXRzLHRoaXMuZGl0aGVyaW5nPXQuZGl0aGVyaW5nLHRoaXMuYWxwaGFUZXN0PXQuYWxwaGFUZXN0LHRoaXMuYWxwaGFUb0NvdmVyYWdlPXQuYWxwaGFUb0NvdmVyYWdlLHRoaXMucHJlbXVsdGlwbGllZEFscGhhPXQucHJlbXVsdGlwbGllZEFscGhhLHRoaXMudmlzaWJsZT10LnZpc2libGUsdGhpcy50b25lTWFwcGVkPXQudG9uZU1hcHBlZCx0aGlzLnVzZXJEYXRhPUpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodC51c2VyRGF0YSkpLHRoaXN9ZGlzcG9zZSgpe3RoaXMuZGlzcGF0Y2hFdmVudCh7dHlwZToiZGlzcG9zZSJ9KX1zZXQgbmVlZHNVcGRhdGUodCl7ITA9PT10JiZ0aGlzLnZlcnNpb24rK319Vmx0LnByb3RvdHlwZS5pc01hdGVyaWFsPSEwO2NvbnN0IGpsdD17YWxpY2VibHVlOjE1NzkyMzgzLGFudGlxdWV3aGl0ZToxNjQ0NDM3NSxhcXVhOjY1NTM1LGFxdWFtYXJpbmU6ODM4ODU2NCxhenVyZToxNTc5NDE3NSxiZWlnZToxNjExOTI2MCxiaXNxdWU6MTY3NzAyNDQsYmxhY2s6MCxibGFuY2hlZGFsbW9uZDoxNjc3MjA0NSxibHVlOjI1NSxibHVldmlvbGV0OjkwNTUyMDIsYnJvd246MTA4MjQyMzQsYnVybHl3b29kOjE0NTk2MjMxLGNhZGV0Ymx1ZTo2MjY2NTI4LGNoYXJ0cmV1c2U6ODM4ODM1MixjaG9jb2xhdGU6MTM3ODk0NzAsY29yYWw6MTY3NDQyNzIsY29ybmZsb3dlcmJsdWU6NjU5MTk4MSxjb3Juc2lsazoxNjc3NTM4OCxjcmltc29uOjE0NDIzMTAwLGN5YW46NjU1MzUsZGFya2JsdWU6MTM5LGRhcmtjeWFuOjM1NzIzLGRhcmtnb2xkZW5yb2Q6MTIwOTI5MzksZGFya2dyYXk6MTExMTkwMTcsZGFya2dyZWVuOjI1NjAwLGRhcmtncmV5OjExMTE5MDE3LGRhcmtraGFraToxMjQzMzI1OSxkYXJrbWFnZW50YTo5MTA5NjQzLGRhcmtvbGl2ZWdyZWVuOjU1OTc5OTksZGFya29yYW5nZToxNjc0NzUyMCxkYXJrb3JjaGlkOjEwMDQwMDEyLGRhcmtyZWQ6OTEwOTUwNCxkYXJrc2FsbW9uOjE1MzA4NDEwLGRhcmtzZWFncmVlbjo5NDE5OTE5LGRhcmtzbGF0ZWJsdWU6NDczNDM0NyxkYXJrc2xhdGVncmF5OjMxMDA0OTUsZGFya3NsYXRlZ3JleTozMTAwNDk1LGRhcmt0dXJxdW9pc2U6NTI5NDUsZGFya3Zpb2xldDo5Njk5NTM5LGRlZXBwaW5rOjE2NzE2OTQ3LGRlZXBza3libHVlOjQ5MTUxLGRpbWdyYXk6NjkwODI2NSxkaW1ncmV5OjY5MDgyNjUsZG9kZ2VyYmx1ZToyMDAzMTk5LGZpcmVicmljazoxMTY3NDE0NixmbG9yYWx3aGl0ZToxNjc3NTkyMCxmb3Jlc3RncmVlbjoyMjYzODQyLGZ1Y2hzaWE6MTY3MTE5MzUsZ2FpbnNib3JvOjE0NDc0NDYwLGdob3N0d2hpdGU6MTYzMTY2NzEsZ29sZDoxNjc2NjcyMCxnb2xkZW5yb2Q6MTQzMjkxMjAsZ3JheTo4NDIxNTA0LGdyZWVuOjMyNzY4LGdyZWVueWVsbG93OjExNDAzMDU1LGdyZXk6ODQyMTUwNCxob25leWRldzoxNTc5NDE2MCxob3RwaW5rOjE2NzM4NzQwLGluZGlhbnJlZDoxMzQ1ODUyNCxpbmRpZ286NDkxNTMzMCxpdm9yeToxNjc3NzIwMCxraGFraToxNTc4NzY2MCxsYXZlbmRlcjoxNTEzMjQxMCxsYXZlbmRlcmJsdXNoOjE2NzczMzY1LGxhd25ncmVlbjo4MTkwOTc2LGxlbW9uY2hpZmZvbjoxNjc3NTg4NSxsaWdodGJsdWU6MTEzOTMyNTQsbGlnaHRjb3JhbDoxNTc2MTUzNixsaWdodGN5YW46MTQ3NDU1OTksbGlnaHRnb2xkZW5yb2R5ZWxsb3c6MTY0NDgyMTAsbGlnaHRncmF5OjEzODgyMzIzLGxpZ2h0Z3JlZW46OTQ5ODI1NixsaWdodGdyZXk6MTM4ODIzMjMsbGlnaHRwaW5rOjE2NzU4NDY1LGxpZ2h0c2FsbW9uOjE2NzUyNzYyLGxpZ2h0c2VhZ3JlZW46MjE0Mjg5MCxsaWdodHNreWJsdWU6ODkwMDM0NixsaWdodHNsYXRlZ3JheTo3ODMzNzUzLGxpZ2h0c2xhdGVncmV5Ojc4MzM3NTMsbGlnaHRzdGVlbGJsdWU6MTE1ODQ3MzQsbGlnaHR5ZWxsb3c6MTY3NzcxODQsbGltZTo2NTI4MCxsaW1lZ3JlZW46MzMyOTMzMCxsaW5lbjoxNjQ0NTY3MCxtYWdlbnRhOjE2NzExOTM1LG1hcm9vbjo4Mzg4NjA4LG1lZGl1bWFxdWFtYXJpbmU6NjczNzMyMixtZWRpdW1ibHVlOjIwNSxtZWRpdW1vcmNoaWQ6MTIyMTE2NjcsbWVkaXVtcHVycGxlOjk2NjI2ODMsbWVkaXVtc2VhZ3JlZW46Mzk3ODA5NyxtZWRpdW1zbGF0ZWJsdWU6ODA4Nzc5MCxtZWRpdW1zcHJpbmdncmVlbjo2NDE1NCxtZWRpdW10dXJxdW9pc2U6NDc3MjMwMCxtZWRpdW12aW9sZXRyZWQ6MTMwNDcxNzMsbWlkbmlnaHRibHVlOjE2NDQ5MTIsbWludGNyZWFtOjE2MTIxODUwLG1pc3R5cm9zZToxNjc3MDI3Myxtb2NjYXNpbjoxNjc3MDIyOSxuYXZham93aGl0ZToxNjc2ODY4NSxuYXZ5OjEyOCxvbGRsYWNlOjE2NjQzNTU4LG9saXZlOjg0MjEzNzYsb2xpdmVkcmFiOjcwNDg3Mzksb3JhbmdlOjE2NzUzOTIwLG9yYW5nZXJlZDoxNjcyOTM0NCxvcmNoaWQ6MTQzMTU3MzQscGFsZWdvbGRlbnJvZDoxNTY1NzEzMCxwYWxlZ3JlZW46MTAwMjU4ODAscGFsZXR1cnF1b2lzZToxMTUyOTk2NixwYWxldmlvbGV0cmVkOjE0MzgxMjAzLHBhcGF5YXdoaXA6MTY3NzMwNzcscGVhY2hwdWZmOjE2NzY3NjczLHBlcnU6MTM0Njg5OTEscGluazoxNjc2MTAzNSxwbHVtOjE0NTI0NjM3LHBvd2RlcmJsdWU6MTE1OTE5MTAscHVycGxlOjgzODg3MzYscmViZWNjYXB1cnBsZTo2Njk3ODgxLHJlZDoxNjcxMTY4MCxyb3N5YnJvd246MTIzNTc1MTkscm95YWxibHVlOjQyODY5NDUsc2FkZGxlYnJvd246OTEyNzE4NyxzYWxtb246MTY0MTY4ODIsc2FuZHlicm93bjoxNjAzMjg2NCxzZWFncmVlbjozMDUwMzI3LHNlYXNoZWxsOjE2Nzc0NjM4LHNpZW5uYToxMDUwNjc5NyxzaWx2ZXI6MTI2MzIyNTYsc2t5Ymx1ZTo4OTAwMzMxLHNsYXRlYmx1ZTo2OTcwMDYxLHNsYXRlZ3JheTo3MzcyOTQ0LHNsYXRlZ3JleTo3MzcyOTQ0LHNub3c6MTY3NzU5MzAsc3ByaW5nZ3JlZW46NjU0MDcsc3RlZWxibHVlOjQ2MjA5ODAsdGFuOjEzODA4NzgwLHRlYWw6MzI4OTYsdGhpc3RsZToxNDIwNDg4OCx0b21hdG86MTY3MzcwOTUsdHVycXVvaXNlOjQyNTE4NTYsdmlvbGV0OjE1NjMxMDg2LHdoZWF0OjE2MTEzMzMxLHdoaXRlOjE2Nzc3MjE1LHdoaXRlc21va2U6MTYxMTkyODUseWVsbG93OjE2Nzc2OTYwLHllbGxvd2dyZWVuOjEwMTQ1MDc0fSxVbHQ9e2g6MCxzOjAsbDowfSxXbHQ9e2g6MCxzOjAsbDowfTtmdW5jdGlvbiBHbHQodCxlLG4pe3JldHVybiBuPDAmJihuKz0xKSxuPjEmJihuLT0xKSxuPDEvNj90KzYqKGUtdCkqbjpuPC41P2U6bjwyLzM/dCs2KihlLXQpKigyLzMtbik6dH1mdW5jdGlvbiBZbHQodCl7cmV0dXJuIHQ8LjA0MDQ1Py4wNzczOTkzODA4KnQ6TWF0aC5wb3coLjk0Nzg2NzI5ODYqdCsuMDUyMTMyNzAxNCwyLjQpfWZ1bmN0aW9uIHFsdCh0KXtyZXR1cm4gdDwuMDAzMTMwOD8xMi45Mip0OjEuMDU1Kk1hdGgucG93KHQsLjQxNjY2KS0uMDU1fWNsYXNzIFpsdHtjb25zdHJ1Y3Rvcih0LGUsbil7cmV0dXJuIHZvaWQgMD09PWUmJnZvaWQgMD09PW4/dGhpcy5zZXQodCk6dGhpcy5zZXRSR0IodCxlLG4pfXNldCh0KXtyZXR1cm4gdCYmdC5pc0NvbG9yP3RoaXMuY29weSh0KToibnVtYmVyIj09dHlwZW9mIHQ/dGhpcy5zZXRIZXgodCk6InN0cmluZyI9PXR5cGVvZiB0JiZ0aGlzLnNldFN0eWxlKHQpLHRoaXN9c2V0U2NhbGFyKHQpe3JldHVybiB0aGlzLnI9dCx0aGlzLmc9dCx0aGlzLmI9dCx0aGlzfXNldEhleCh0KXtyZXR1cm4gdD1NYXRoLmZsb29yKHQpLHRoaXMucj0odD4+MTYmMjU1KS8yNTUsdGhpcy5nPSh0Pj44JjI1NSkvMjU1LHRoaXMuYj0oMjU1JnQpLzI1NSx0aGlzfXNldFJHQih0LGUsbil7cmV0dXJuIHRoaXMucj10LHRoaXMuZz1lLHRoaXMuYj1uLHRoaXN9c2V0SFNMKHQsZSxuKXtpZih0PShmdW5jdGlvbiBvKHQsZSl7cmV0dXJuKHQlZStlKSVlfSkodCwxKSxlPXBzdChlLDAsMSksbj1wc3QobiwwLDEpLDA9PT1lKXRoaXMucj10aGlzLmc9dGhpcy5iPW47ZWxzZXtjb25zdCBvPW48PS41P24qKDErZSk6bitlLW4qZSxpPTIqbi1vO3RoaXMucj1HbHQoaSxvLHQrMS8zKSx0aGlzLmc9R2x0KGksbyx0KSx0aGlzLmI9R2x0KGksbyx0LTEvMyl9cmV0dXJuIHRoaXN9c2V0U3R5bGUodCl7ZnVuY3Rpb24gZShlKXt2b2lkIDAhPT1lJiZwYXJzZUZsb2F0KGUpPDEmJmNvbnNvbGUud2FybigiVEhSRUUuQ29sb3I6IEFscGhhIGNvbXBvbmVudCBvZiAiK3QrIiB3aWxsIGJlIGlnbm9yZWQuIil9bGV0IG47aWYobj0vXigoPzpyZ2J8aHNsKWE/KVwoKFteXCldKilcKS8uZXhlYyh0KSl7bGV0IHQ7Y29uc3Qgbz1uWzJdO3N3aXRjaChuWzFdKXtjYXNlInJnYiI6Y2FzZSJyZ2JhIjppZih0PS9eXHMqKFxkKylccyosXHMqKFxkKylccyosXHMqKFxkKylccyooPzosXHMqKFxkKlwuP1xkKylccyopPyQvLmV4ZWMobykpcmV0dXJuIHRoaXMucj1NYXRoLm1pbigyNTUscGFyc2VJbnQodFsxXSwxMCkpLzI1NSx0aGlzLmc9TWF0aC5taW4oMjU1LHBhcnNlSW50KHRbMl0sMTApKS8yNTUsdGhpcy5iPU1hdGgubWluKDI1NSxwYXJzZUludCh0WzNdLDEwKSkvMjU1LGUodFs0XSksdGhpcztpZih0PS9eXHMqKFxkKylcJVxzKixccyooXGQrKVwlXHMqLFxzKihcZCspXCVccyooPzosXHMqKFxkKlwuP1xkKylccyopPyQvLmV4ZWMobykpcmV0dXJuIHRoaXMucj1NYXRoLm1pbigxMDAscGFyc2VJbnQodFsxXSwxMCkpLzEwMCx0aGlzLmc9TWF0aC5taW4oMTAwLHBhcnNlSW50KHRbMl0sMTApKS8xMDAsdGhpcy5iPU1hdGgubWluKDEwMCxwYXJzZUludCh0WzNdLDEwKSkvMTAwLGUodFs0XSksdGhpczticmVhaztjYXNlImhzbCI6Y2FzZSJoc2xhIjppZih0PS9eXHMqKFxkKlwuP1xkKylccyosXHMqKFxkKylcJVxzKixccyooXGQrKVwlXHMqKD86LFxzKihcZCpcLj9cZCspXHMqKT8kLy5leGVjKG8pKXtjb25zdCBuPXBhcnNlRmxvYXQodFsxXSkvMzYwLG89cGFyc2VJbnQodFsyXSwxMCkvMTAwLGk9cGFyc2VJbnQodFszXSwxMCkvMTAwO3JldHVybiBlKHRbNF0pLHRoaXMuc2V0SFNMKG4sbyxpKX19fWVsc2UgaWYobj0vXlwjKFtBLUZhLWZcZF0rKSQvLmV4ZWModCkpe2NvbnN0IHQ9blsxXSxlPXQubGVuZ3RoO2lmKDM9PT1lKXJldHVybiB0aGlzLnI9cGFyc2VJbnQodC5jaGFyQXQoMCkrdC5jaGFyQXQoMCksMTYpLzI1NSx0aGlzLmc9cGFyc2VJbnQodC5jaGFyQXQoMSkrdC5jaGFyQXQoMSksMTYpLzI1NSx0aGlzLmI9cGFyc2VJbnQodC5jaGFyQXQoMikrdC5jaGFyQXQoMiksMTYpLzI1NSx0aGlzO2lmKDY9PT1lKXJldHVybiB0aGlzLnI9cGFyc2VJbnQodC5jaGFyQXQoMCkrdC5jaGFyQXQoMSksMTYpLzI1NSx0aGlzLmc9cGFyc2VJbnQodC5jaGFyQXQoMikrdC5jaGFyQXQoMyksMTYpLzI1NSx0aGlzLmI9cGFyc2VJbnQodC5jaGFyQXQoNCkrdC5jaGFyQXQoNSksMTYpLzI1NSx0aGlzfXJldHVybiB0JiZ0Lmxlbmd0aD4wP3RoaXMuc2V0Q29sb3JOYW1lKHQpOnRoaXN9c2V0Q29sb3JOYW1lKHQpe2NvbnN0IGU9amx0W3QudG9Mb3dlckNhc2UoKV07cmV0dXJuIHZvaWQgMCE9PWU/dGhpcy5zZXRIZXgoZSk6Y29uc29sZS53YXJuKCJUSFJFRS5Db2xvcjogVW5rbm93biBjb2xvciAiK3QpLHRoaXN9Y2xvbmUoKXtyZXR1cm4gbmV3IHRoaXMuY29uc3RydWN0b3IodGhpcy5yLHRoaXMuZyx0aGlzLmIpfWNvcHkodCl7cmV0dXJuIHRoaXMucj10LnIsdGhpcy5nPXQuZyx0aGlzLmI9dC5iLHRoaXN9Y29weUdhbW1hVG9MaW5lYXIodCxlPTIpe3JldHVybiB0aGlzLnI9TWF0aC5wb3codC5yLGUpLHRoaXMuZz1NYXRoLnBvdyh0LmcsZSksdGhpcy5iPU1hdGgucG93KHQuYixlKSx0aGlzfWNvcHlMaW5lYXJUb0dhbW1hKHQsZT0yKXtjb25zdCBuPWU+MD8xL2U6MTtyZXR1cm4gdGhpcy5yPU1hdGgucG93KHQucixuKSx0aGlzLmc9TWF0aC5wb3codC5nLG4pLHRoaXMuYj1NYXRoLnBvdyh0LmIsbiksdGhpc31jb252ZXJ0R2FtbWFUb0xpbmVhcih0KXtyZXR1cm4gdGhpcy5jb3B5R2FtbWFUb0xpbmVhcih0aGlzLHQpLHRoaXN9Y29udmVydExpbmVhclRvR2FtbWEodCl7cmV0dXJuIHRoaXMuY29weUxpbmVhclRvR2FtbWEodGhpcyx0KSx0aGlzfWNvcHlTUkdCVG9MaW5lYXIodCl7cmV0dXJuIHRoaXMucj1ZbHQodC5yKSx0aGlzLmc9WWx0KHQuZyksdGhpcy5iPVlsdCh0LmIpLHRoaXN9Y29weUxpbmVhclRvU1JHQih0KXtyZXR1cm4gdGhpcy5yPXFsdCh0LnIpLHRoaXMuZz1xbHQodC5nKSx0aGlzLmI9cWx0KHQuYiksdGhpc31jb252ZXJ0U1JHQlRvTGluZWFyKCl7cmV0dXJuIHRoaXMuY29weVNSR0JUb0xpbmVhcih0aGlzKSx0aGlzfWNvbnZlcnRMaW5lYXJUb1NSR0IoKXtyZXR1cm4gdGhpcy5jb3B5TGluZWFyVG9TUkdCKHRoaXMpLHRoaXN9Z2V0SGV4KCl7cmV0dXJuIDI1NSp0aGlzLnI8PDE2XjI1NSp0aGlzLmc8PDheMjU1KnRoaXMuYjw8MH1nZXRIZXhTdHJpbmcoKXtyZXR1cm4oIjAwMDAwMCIrdGhpcy5nZXRIZXgoKS50b1N0cmluZygxNikpLnNsaWNlKC02KX1nZXRIU0wodCl7Y29uc3QgZT10aGlzLnIsbj10aGlzLmcsbz10aGlzLmIsaT1NYXRoLm1heChlLG4sbyksYT1NYXRoLm1pbihlLG4sbyk7bGV0IHIscztjb25zdCBsPShhK2kpLzI7aWYoYT09PWkpcj0wLHM9MDtlbHNle2NvbnN0IHQ9aS1hO3N3aXRjaChzPWw8PS41P3QvKGkrYSk6dC8oMi1pLWEpLGkpe2Nhc2UgZTpyPShuLW8pL3QrKG48bz82OjApO2JyZWFrO2Nhc2UgbjpyPShvLWUpL3QrMjticmVhaztjYXNlIG86cj0oZS1uKS90KzR9ci89Nn1yZXR1cm4gdC5oPXIsdC5zPXMsdC5sPWwsdH1nZXRTdHlsZSgpe3JldHVybiJyZ2IoIisoMjU1KnRoaXMucnwwKSsiLCIrKDI1NSp0aGlzLmd8MCkrIiwiKygyNTUqdGhpcy5ifDApKyIpIn1vZmZzZXRIU0wodCxlLG4pe3JldHVybiB0aGlzLmdldEhTTChVbHQpLFVsdC5oKz10LFVsdC5zKz1lLFVsdC5sKz1uLHRoaXMuc2V0SFNMKFVsdC5oLFVsdC5zLFVsdC5sKSx0aGlzfWFkZCh0KXtyZXR1cm4gdGhpcy5yKz10LnIsdGhpcy5nKz10LmcsdGhpcy5iKz10LmIsdGhpc31hZGRDb2xvcnModCxlKXtyZXR1cm4gdGhpcy5yPXQucitlLnIsdGhpcy5nPXQuZytlLmcsdGhpcy5iPXQuYitlLmIsdGhpc31hZGRTY2FsYXIodCl7cmV0dXJuIHRoaXMucis9dCx0aGlzLmcrPXQsdGhpcy5iKz10LHRoaXN9c3ViKHQpe3JldHVybiB0aGlzLnI9TWF0aC5tYXgoMCx0aGlzLnItdC5yKSx0aGlzLmc9TWF0aC5tYXgoMCx0aGlzLmctdC5nKSx0aGlzLmI9TWF0aC5tYXgoMCx0aGlzLmItdC5iKSx0aGlzfW11bHRpcGx5KHQpe3JldHVybiB0aGlzLnIqPXQucix0aGlzLmcqPXQuZyx0aGlzLmIqPXQuYix0aGlzfW11bHRpcGx5U2NhbGFyKHQpe3JldHVybiB0aGlzLnIqPXQsdGhpcy5nKj10LHRoaXMuYio9dCx0aGlzfWxlcnAodCxlKXtyZXR1cm4gdGhpcy5yKz0odC5yLXRoaXMucikqZSx0aGlzLmcrPSh0LmctdGhpcy5nKSplLHRoaXMuYis9KHQuYi10aGlzLmIpKmUsdGhpc31sZXJwQ29sb3JzKHQsZSxuKXtyZXR1cm4gdGhpcy5yPXQucisoZS5yLXQucikqbix0aGlzLmc9dC5nKyhlLmctdC5nKSpuLHRoaXMuYj10LmIrKGUuYi10LmIpKm4sdGhpc31sZXJwSFNMKHQsZSl7dGhpcy5nZXRIU0woVWx0KSx0LmdldEhTTChXbHQpO2NvbnN0IG49bXN0KFVsdC5oLFdsdC5oLGUpLG89bXN0KFVsdC5zLFdsdC5zLGUpLGk9bXN0KFVsdC5sLFdsdC5sLGUpO3JldHVybiB0aGlzLnNldEhTTChuLG8saSksdGhpc31lcXVhbHModCl7cmV0dXJuIHQucj09PXRoaXMuciYmdC5nPT09dGhpcy5nJiZ0LmI9PT10aGlzLmJ9ZnJvbUFycmF5KHQsZT0wKXtyZXR1cm4gdGhpcy5yPXRbZV0sdGhpcy5nPXRbZSsxXSx0aGlzLmI9dFtlKzJdLHRoaXN9dG9BcnJheSh0PVtdLGU9MCl7cmV0dXJuIHRbZV09dGhpcy5yLHRbZSsxXT10aGlzLmcsdFtlKzJdPXRoaXMuYix0fWZyb21CdWZmZXJBdHRyaWJ1dGUodCxlKXtyZXR1cm4gdGhpcy5yPXQuZ2V0WChlKSx0aGlzLmc9dC5nZXRZKGUpLHRoaXMuYj10LmdldFooZSksITA9PT10Lm5vcm1hbGl6ZWQmJih0aGlzLnIvPTI1NSx0aGlzLmcvPTI1NSx0aGlzLmIvPTI1NSksdGhpc310b0pTT04oKXtyZXR1cm4gdGhpcy5nZXRIZXgoKX19Wmx0Lk5BTUVTPWpsdCxabHQucHJvdG90eXBlLmlzQ29sb3I9ITAsWmx0LnByb3RvdHlwZS5yPTEsWmx0LnByb3RvdHlwZS5nPTEsWmx0LnByb3RvdHlwZS5iPTE7Y2xhc3MgWGx0IGV4dGVuZHMgVmx0e2NvbnN0cnVjdG9yKHQpe3N1cGVyKCksdGhpcy50eXBlPSJNZXNoQmFzaWNNYXRlcmlhbCIsdGhpcy5jb2xvcj1uZXcgWmx0KDE2Nzc3MjE1KSx0aGlzLm1hcD1udWxsLHRoaXMubGlnaHRNYXA9bnVsbCx0aGlzLmxpZ2h0TWFwSW50ZW5zaXR5PTEsdGhpcy5hb01hcD1udWxsLHRoaXMuYW9NYXBJbnRlbnNpdHk9MSx0aGlzLnNwZWN1bGFyTWFwPW51bGwsdGhpcy5hbHBoYU1hcD1udWxsLHRoaXMuZW52TWFwPW51bGwsdGhpcy5jb21iaW5lPTAsdGhpcy5yZWZsZWN0aXZpdHk9MSx0aGlzLnJlZnJhY3Rpb25SYXRpbz0uOTgsdGhpcy53aXJlZnJhbWU9ITEsdGhpcy53aXJlZnJhbWVMaW5ld2lkdGg9MSx0aGlzLndpcmVmcmFtZUxpbmVjYXA9InJvdW5kIix0aGlzLndpcmVmcmFtZUxpbmVqb2luPSJyb3VuZCIsdGhpcy5zZXRWYWx1ZXModCl9Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLmNvbG9yLmNvcHkodC5jb2xvciksdGhpcy5tYXA9dC5tYXAsdGhpcy5saWdodE1hcD10LmxpZ2h0TWFwLHRoaXMubGlnaHRNYXBJbnRlbnNpdHk9dC5saWdodE1hcEludGVuc2l0eSx0aGlzLmFvTWFwPXQuYW9NYXAsdGhpcy5hb01hcEludGVuc2l0eT10LmFvTWFwSW50ZW5zaXR5LHRoaXMuc3BlY3VsYXJNYXA9dC5zcGVjdWxhck1hcCx0aGlzLmFscGhhTWFwPXQuYWxwaGFNYXAsdGhpcy5lbnZNYXA9dC5lbnZNYXAsdGhpcy5jb21iaW5lPXQuY29tYmluZSx0aGlzLnJlZmxlY3Rpdml0eT10LnJlZmxlY3Rpdml0eSx0aGlzLnJlZnJhY3Rpb25SYXRpbz10LnJlZnJhY3Rpb25SYXRpbyx0aGlzLndpcmVmcmFtZT10LndpcmVmcmFtZSx0aGlzLndpcmVmcmFtZUxpbmV3aWR0aD10LndpcmVmcmFtZUxpbmV3aWR0aCx0aGlzLndpcmVmcmFtZUxpbmVjYXA9dC53aXJlZnJhbWVMaW5lY2FwLHRoaXMud2lyZWZyYW1lTGluZWpvaW49dC53aXJlZnJhbWVMaW5lam9pbix0aGlzfX1YbHQucHJvdG90eXBlLmlzTWVzaEJhc2ljTWF0ZXJpYWw9ITA7Y29uc3QgS2x0PW5ldyB3c3QsSmx0PW5ldyBnc3Q7Y2xhc3MgUWx0e2NvbnN0cnVjdG9yKHQsZSxuKXtpZihBcnJheS5pc0FycmF5KHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIlRIUkVFLkJ1ZmZlckF0dHJpYnV0ZTogYXJyYXkgc2hvdWxkIGJlIGEgVHlwZWQgQXJyYXkuIik7dGhpcy5uYW1lPSIiLHRoaXMuYXJyYXk9dCx0aGlzLml0ZW1TaXplPWUsdGhpcy5jb3VudD12b2lkIDAhPT10P3QubGVuZ3RoL2U6MCx0aGlzLm5vcm1hbGl6ZWQ9ITA9PT1uLHRoaXMudXNhZ2U9b3N0LHRoaXMudXBkYXRlUmFuZ2U9e29mZnNldDowLGNvdW50Oi0xfSx0aGlzLnZlcnNpb249MH1vblVwbG9hZENhbGxiYWNrKCl7fXNldCBuZWVkc1VwZGF0ZSh0KXshMD09PXQmJnRoaXMudmVyc2lvbisrfXNldFVzYWdlKHQpe3JldHVybiB0aGlzLnVzYWdlPXQsdGhpc31jb3B5KHQpe3JldHVybiB0aGlzLm5hbWU9dC5uYW1lLHRoaXMuYXJyYXk9bmV3IHQuYXJyYXkuY29uc3RydWN0b3IodC5hcnJheSksdGhpcy5pdGVtU2l6ZT10Lml0ZW1TaXplLHRoaXMuY291bnQ9dC5jb3VudCx0aGlzLm5vcm1hbGl6ZWQ9dC5ub3JtYWxpemVkLHRoaXMudXNhZ2U9dC51c2FnZSx0aGlzfWNvcHlBdCh0LGUsbil7dCo9dGhpcy5pdGVtU2l6ZSxuKj1lLml0ZW1TaXplO2ZvcihsZXQgbz0wLGk9dGhpcy5pdGVtU2l6ZTtvPGk7bysrKXRoaXMuYXJyYXlbdCtvXT1lLmFycmF5W24rb107cmV0dXJuIHRoaXN9Y29weUFycmF5KHQpe3JldHVybiB0aGlzLmFycmF5LnNldCh0KSx0aGlzfWNvcHlDb2xvcnNBcnJheSh0KXtjb25zdCBlPXRoaXMuYXJyYXk7bGV0IG49MDtmb3IobGV0IG89MCxpPXQubGVuZ3RoO288aTtvKyspe2xldCBpPXRbb107dm9pZCAwPT09aSYmKGNvbnNvbGUud2FybigiVEhSRUUuQnVmZmVyQXR0cmlidXRlLmNvcHlDb2xvcnNBcnJheSgpOiBjb2xvciBpcyB1bmRlZmluZWQiLG8pLGk9bmV3IFpsdCksZVtuKytdPWkucixlW24rK109aS5nLGVbbisrXT1pLmJ9cmV0dXJuIHRoaXN9Y29weVZlY3RvcjJzQXJyYXkodCl7Y29uc3QgZT10aGlzLmFycmF5O2xldCBuPTA7Zm9yKGxldCBvPTAsaT10Lmxlbmd0aDtvPGk7bysrKXtsZXQgaT10W29dO3ZvaWQgMD09PWkmJihjb25zb2xlLndhcm4oIlRIUkVFLkJ1ZmZlckF0dHJpYnV0ZS5jb3B5VmVjdG9yMnNBcnJheSgpOiB2ZWN0b3IgaXMgdW5kZWZpbmVkIixvKSxpPW5ldyBnc3QpLGVbbisrXT1pLngsZVtuKytdPWkueX1yZXR1cm4gdGhpc31jb3B5VmVjdG9yM3NBcnJheSh0KXtjb25zdCBlPXRoaXMuYXJyYXk7bGV0IG49MDtmb3IobGV0IG89MCxpPXQubGVuZ3RoO288aTtvKyspe2xldCBpPXRbb107dm9pZCAwPT09aSYmKGNvbnNvbGUud2FybigiVEhSRUUuQnVmZmVyQXR0cmlidXRlLmNvcHlWZWN0b3Izc0FycmF5KCk6IHZlY3RvciBpcyB1bmRlZmluZWQiLG8pLGk9bmV3IHdzdCksZVtuKytdPWkueCxlW24rK109aS55LGVbbisrXT1pLnp9cmV0dXJuIHRoaXN9Y29weVZlY3RvcjRzQXJyYXkodCl7Y29uc3QgZT10aGlzLmFycmF5O2xldCBuPTA7Zm9yKGxldCBvPTAsaT10Lmxlbmd0aDtvPGk7bysrKXtsZXQgaT10W29dO3ZvaWQgMD09PWkmJihjb25zb2xlLndhcm4oIlRIUkVFLkJ1ZmZlckF0dHJpYnV0ZS5jb3B5VmVjdG9yNHNBcnJheSgpOiB2ZWN0b3IgaXMgdW5kZWZpbmVkIixvKSxpPW5ldyB2c3QpLGVbbisrXT1pLngsZVtuKytdPWkueSxlW24rK109aS56LGVbbisrXT1pLnd9cmV0dXJuIHRoaXN9YXBwbHlNYXRyaXgzKHQpe2lmKDI9PT10aGlzLml0ZW1TaXplKWZvcihsZXQgZT0wLG49dGhpcy5jb3VudDtlPG47ZSsrKUpsdC5mcm9tQnVmZmVyQXR0cmlidXRlKHRoaXMsZSksSmx0LmFwcGx5TWF0cml4Myh0KSx0aGlzLnNldFhZKGUsSmx0LngsSmx0LnkpO2Vsc2UgaWYoMz09PXRoaXMuaXRlbVNpemUpZm9yKGxldCBlPTAsbj10aGlzLmNvdW50O2U8bjtlKyspS2x0LmZyb21CdWZmZXJBdHRyaWJ1dGUodGhpcyxlKSxLbHQuYXBwbHlNYXRyaXgzKHQpLHRoaXMuc2V0WFlaKGUsS2x0LngsS2x0LnksS2x0LnopO3JldHVybiB0aGlzfWFwcGx5TWF0cml4NCh0KXtmb3IobGV0IGU9MCxuPXRoaXMuY291bnQ7ZTxuO2UrKylLbHQueD10aGlzLmdldFgoZSksS2x0Lnk9dGhpcy5nZXRZKGUpLEtsdC56PXRoaXMuZ2V0WihlKSxLbHQuYXBwbHlNYXRyaXg0KHQpLHRoaXMuc2V0WFlaKGUsS2x0LngsS2x0LnksS2x0LnopO3JldHVybiB0aGlzfWFwcGx5Tm9ybWFsTWF0cml4KHQpe2ZvcihsZXQgZT0wLG49dGhpcy5jb3VudDtlPG47ZSsrKUtsdC54PXRoaXMuZ2V0WChlKSxLbHQueT10aGlzLmdldFkoZSksS2x0Lno9dGhpcy5nZXRaKGUpLEtsdC5hcHBseU5vcm1hbE1hdHJpeCh0KSx0aGlzLnNldFhZWihlLEtsdC54LEtsdC55LEtsdC56KTtyZXR1cm4gdGhpc310cmFuc2Zvcm1EaXJlY3Rpb24odCl7Zm9yKGxldCBlPTAsbj10aGlzLmNvdW50O2U8bjtlKyspS2x0Lng9dGhpcy5nZXRYKGUpLEtsdC55PXRoaXMuZ2V0WShlKSxLbHQuej10aGlzLmdldFooZSksS2x0LnRyYW5zZm9ybURpcmVjdGlvbih0KSx0aGlzLnNldFhZWihlLEtsdC54LEtsdC55LEtsdC56KTtyZXR1cm4gdGhpc31zZXQodCxlPTApe3JldHVybiB0aGlzLmFycmF5LnNldCh0LGUpLHRoaXN9Z2V0WCh0KXtyZXR1cm4gdGhpcy5hcnJheVt0KnRoaXMuaXRlbVNpemVdfXNldFgodCxlKXtyZXR1cm4gdGhpcy5hcnJheVt0KnRoaXMuaXRlbVNpemVdPWUsdGhpc31nZXRZKHQpe3JldHVybiB0aGlzLmFycmF5W3QqdGhpcy5pdGVtU2l6ZSsxXX1zZXRZKHQsZSl7cmV0dXJuIHRoaXMuYXJyYXlbdCp0aGlzLml0ZW1TaXplKzFdPWUsdGhpc31nZXRaKHQpe3JldHVybiB0aGlzLmFycmF5W3QqdGhpcy5pdGVtU2l6ZSsyXX1zZXRaKHQsZSl7cmV0dXJuIHRoaXMuYXJyYXlbdCp0aGlzLml0ZW1TaXplKzJdPWUsdGhpc31nZXRXKHQpe3JldHVybiB0aGlzLmFycmF5W3QqdGhpcy5pdGVtU2l6ZSszXX1zZXRXKHQsZSl7cmV0dXJuIHRoaXMuYXJyYXlbdCp0aGlzLml0ZW1TaXplKzNdPWUsdGhpc31zZXRYWSh0LGUsbil7cmV0dXJuIHRoaXMuYXJyYXlbKHQqPXRoaXMuaXRlbVNpemUpKzBdPWUsdGhpcy5hcnJheVt0KzFdPW4sdGhpc31zZXRYWVoodCxlLG4sbyl7cmV0dXJuIHRoaXMuYXJyYXlbKHQqPXRoaXMuaXRlbVNpemUpKzBdPWUsdGhpcy5hcnJheVt0KzFdPW4sdGhpcy5hcnJheVt0KzJdPW8sdGhpc31zZXRYWVpXKHQsZSxuLG8saSl7cmV0dXJuIHRoaXMuYXJyYXlbKHQqPXRoaXMuaXRlbVNpemUpKzBdPWUsdGhpcy5hcnJheVt0KzFdPW4sdGhpcy5hcnJheVt0KzJdPW8sdGhpcy5hcnJheVt0KzNdPWksdGhpc31vblVwbG9hZCh0KXtyZXR1cm4gdGhpcy5vblVwbG9hZENhbGxiYWNrPXQsdGhpc31jbG9uZSgpe3JldHVybiBuZXcgdGhpcy5jb25zdHJ1Y3Rvcih0aGlzLmFycmF5LHRoaXMuaXRlbVNpemUpLmNvcHkodGhpcyl9dG9KU09OKCl7Y29uc3QgdD17aXRlbVNpemU6dGhpcy5pdGVtU2l6ZSx0eXBlOnRoaXMuYXJyYXkuY29uc3RydWN0b3IubmFtZSxhcnJheTpBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0aGlzLmFycmF5KSxub3JtYWxpemVkOnRoaXMubm9ybWFsaXplZH07cmV0dXJuIiIhPT10aGlzLm5hbWUmJih0Lm5hbWU9dGhpcy5uYW1lKSx0aGlzLnVzYWdlIT09b3N0JiYodC51c2FnZT10aGlzLnVzYWdlKSwwPT09dGhpcy51cGRhdGVSYW5nZS5vZmZzZXQmJi0xPT09dGhpcy51cGRhdGVSYW5nZS5jb3VudHx8KHQudXBkYXRlUmFuZ2U9dGhpcy51cGRhdGVSYW5nZSksdH19UWx0LnByb3RvdHlwZS5pc0J1ZmZlckF0dHJpYnV0ZT0hMDtjbGFzcyAkbHQgZXh0ZW5kcyBRbHR7Y29uc3RydWN0b3IodCxlLG4pe3N1cGVyKG5ldyBVaW50MTZBcnJheSh0KSxlLG4pfX1jbGFzcyB0Y3QgZXh0ZW5kcyBRbHR7Y29uc3RydWN0b3IodCxlLG4pe3N1cGVyKG5ldyBVaW50MzJBcnJheSh0KSxlLG4pfX0oY2xhc3MgZXh0ZW5kcyBRbHR7Y29uc3RydWN0b3IodCxlLG4pe3N1cGVyKG5ldyBVaW50MTZBcnJheSh0KSxlLG4pfX0pLnByb3RvdHlwZS5pc0Zsb2F0MTZCdWZmZXJBdHRyaWJ1dGU9ITA7Y2xhc3MgZWN0IGV4dGVuZHMgUWx0e2NvbnN0cnVjdG9yKHQsZSxuKXtzdXBlcihuZXcgRmxvYXQzMkFycmF5KHQpLGUsbil9fWZ1bmN0aW9uIG5jdCh0KXtpZigwPT09dC5sZW5ndGgpcmV0dXJuLTEvMDtsZXQgZT10WzBdO2ZvcihsZXQgbj0xLG89dC5sZW5ndGg7bjxvOysrbil0W25dPmUmJihlPXRbbl0pO3JldHVybiBlfWxldCBvY3Q9MDtjb25zdCBpY3Q9bmV3IG9sdCxhY3Q9bmV3IFNsdCxyY3Q9bmV3IHdzdCxzY3Q9bmV3IERzdCxsY3Q9bmV3IERzdCxjY3Q9bmV3IHdzdDtjbGFzcyBkY3QgZXh0ZW5kcyByc3R7Y29uc3RydWN0b3IoKXtzdXBlcigpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJpZCIse3ZhbHVlOm9jdCsrfSksdGhpcy51dWlkPWRzdCgpLHRoaXMubmFtZT0iIix0aGlzLnR5cGU9IkJ1ZmZlckdlb21ldHJ5Iix0aGlzLmluZGV4PW51bGwsdGhpcy5hdHRyaWJ1dGVzPXt9LHRoaXMubW9ycGhBdHRyaWJ1dGVzPXt9LHRoaXMubW9ycGhUYXJnZXRzUmVsYXRpdmU9ITEsdGhpcy5ncm91cHM9W10sdGhpcy5ib3VuZGluZ0JveD1udWxsLHRoaXMuYm91bmRpbmdTcGhlcmU9bnVsbCx0aGlzLmRyYXdSYW5nZT17c3RhcnQ6MCxjb3VudDoxLzB9LHRoaXMudXNlckRhdGE9e319Z2V0SW5kZXgoKXtyZXR1cm4gdGhpcy5pbmRleH1zZXRJbmRleCh0KXtyZXR1cm4gdGhpcy5pbmRleD1BcnJheS5pc0FycmF5KHQpP25ldyhuY3QodCk+NjU1MzU/dGN0OiRsdCkodCwxKTp0LHRoaXN9Z2V0QXR0cmlidXRlKHQpe3JldHVybiB0aGlzLmF0dHJpYnV0ZXNbdF19c2V0QXR0cmlidXRlKHQsZSl7cmV0dXJuIHRoaXMuYXR0cmlidXRlc1t0XT1lLHRoaXN9ZGVsZXRlQXR0cmlidXRlKHQpe3JldHVybiBkZWxldGUgdGhpcy5hdHRyaWJ1dGVzW3RdLHRoaXN9aGFzQXR0cmlidXRlKHQpe3JldHVybiB2b2lkIDAhPT10aGlzLmF0dHJpYnV0ZXNbdF19YWRkR3JvdXAodCxlLG49MCl7dGhpcy5ncm91cHMucHVzaCh7c3RhcnQ6dCxjb3VudDplLG1hdGVyaWFsSW5kZXg6bn0pfWNsZWFyR3JvdXBzKCl7dGhpcy5ncm91cHM9W119c2V0RHJhd1JhbmdlKHQsZSl7dGhpcy5kcmF3UmFuZ2Uuc3RhcnQ9dCx0aGlzLmRyYXdSYW5nZS5jb3VudD1lfWFwcGx5TWF0cml4NCh0KXtjb25zdCBlPXRoaXMuYXR0cmlidXRlcy5wb3NpdGlvbjt2b2lkIDAhPT1lJiYoZS5hcHBseU1hdHJpeDQodCksZS5uZWVkc1VwZGF0ZT0hMCk7Y29uc3Qgbj10aGlzLmF0dHJpYnV0ZXMubm9ybWFsO2lmKHZvaWQgMCE9PW4pe2NvbnN0IGU9KG5ldyBoc3QpLmdldE5vcm1hbE1hdHJpeCh0KTtuLmFwcGx5Tm9ybWFsTWF0cml4KGUpLG4ubmVlZHNVcGRhdGU9ITB9Y29uc3Qgbz10aGlzLmF0dHJpYnV0ZXMudGFuZ2VudDtyZXR1cm4gdm9pZCAwIT09byYmKG8udHJhbnNmb3JtRGlyZWN0aW9uKHQpLG8ubmVlZHNVcGRhdGU9ITApLG51bGwhPT10aGlzLmJvdW5kaW5nQm94JiZ0aGlzLmNvbXB1dGVCb3VuZGluZ0JveCgpLG51bGwhPT10aGlzLmJvdW5kaW5nU3BoZXJlJiZ0aGlzLmNvbXB1dGVCb3VuZGluZ1NwaGVyZSgpLHRoaXN9YXBwbHlRdWF0ZXJuaW9uKHQpe3JldHVybiBpY3QubWFrZVJvdGF0aW9uRnJvbVF1YXRlcm5pb24odCksdGhpcy5hcHBseU1hdHJpeDQoaWN0KSx0aGlzfXJvdGF0ZVgodCl7cmV0dXJuIGljdC5tYWtlUm90YXRpb25YKHQpLHRoaXMuYXBwbHlNYXRyaXg0KGljdCksdGhpc31yb3RhdGVZKHQpe3JldHVybiBpY3QubWFrZVJvdGF0aW9uWSh0KSx0aGlzLmFwcGx5TWF0cml4NChpY3QpLHRoaXN9cm90YXRlWih0KXtyZXR1cm4gaWN0Lm1ha2VSb3RhdGlvbloodCksdGhpcy5hcHBseU1hdHJpeDQoaWN0KSx0aGlzfXRyYW5zbGF0ZSh0LGUsbil7cmV0dXJuIGljdC5tYWtlVHJhbnNsYXRpb24odCxlLG4pLHRoaXMuYXBwbHlNYXRyaXg0KGljdCksdGhpc31zY2FsZSh0LGUsbil7cmV0dXJuIGljdC5tYWtlU2NhbGUodCxlLG4pLHRoaXMuYXBwbHlNYXRyaXg0KGljdCksdGhpc31sb29rQXQodCl7cmV0dXJuIGFjdC5sb29rQXQodCksYWN0LnVwZGF0ZU1hdHJpeCgpLHRoaXMuYXBwbHlNYXRyaXg0KGFjdC5tYXRyaXgpLHRoaXN9Y2VudGVyKCl7cmV0dXJuIHRoaXMuY29tcHV0ZUJvdW5kaW5nQm94KCksdGhpcy5ib3VuZGluZ0JveC5nZXRDZW50ZXIocmN0KS5uZWdhdGUoKSx0aGlzLnRyYW5zbGF0ZShyY3QueCxyY3QueSxyY3QueiksdGhpc31zZXRGcm9tUG9pbnRzKHQpe2NvbnN0IGU9W107Zm9yKGxldCBuPTAsbz10Lmxlbmd0aDtuPG87bisrKXtjb25zdCBvPXRbbl07ZS5wdXNoKG8ueCxvLnksby56fHwwKX1yZXR1cm4gdGhpcy5zZXRBdHRyaWJ1dGUoInBvc2l0aW9uIixuZXcgZWN0KGUsMykpLHRoaXN9Y29tcHV0ZUJvdW5kaW5nQm94KCl7bnVsbD09PXRoaXMuYm91bmRpbmdCb3gmJih0aGlzLmJvdW5kaW5nQm94PW5ldyBEc3QpO2NvbnN0IHQ9dGhpcy5hdHRyaWJ1dGVzLnBvc2l0aW9uLGU9dGhpcy5tb3JwaEF0dHJpYnV0ZXMucG9zaXRpb247aWYodCYmdC5pc0dMQnVmZmVyQXR0cmlidXRlKXJldHVybiBjb25zb2xlLmVycm9yKCdUSFJFRS5CdWZmZXJHZW9tZXRyeS5jb21wdXRlQm91bmRpbmdCb3goKTogR0xCdWZmZXJBdHRyaWJ1dGUgcmVxdWlyZXMgYSBtYW51YWwgYm91bmRpbmcgYm94LiBBbHRlcm5hdGl2ZWx5IHNldCAibWVzaC5mcnVzdHVtQ3VsbGVkIiB0byAiZmFsc2UiLicsdGhpcyksdm9pZCB0aGlzLmJvdW5kaW5nQm94LnNldChuZXcgd3N0KC0xLzAsLTEvMCwtMS8wKSxuZXcgd3N0KDEvMCwxLzAsMS8wKSk7aWYodm9pZCAwIT09dCl7aWYodGhpcy5ib3VuZGluZ0JveC5zZXRGcm9tQnVmZmVyQXR0cmlidXRlKHQpLGUpZm9yKGxldCB0PTAsbj1lLmxlbmd0aDt0PG47dCsrKXtzY3Quc2V0RnJvbUJ1ZmZlckF0dHJpYnV0ZShlW3RdKSx0aGlzLm1vcnBoVGFyZ2V0c1JlbGF0aXZlPyhjY3QuYWRkVmVjdG9ycyh0aGlzLmJvdW5kaW5nQm94Lm1pbixzY3QubWluKSx0aGlzLmJvdW5kaW5nQm94LmV4cGFuZEJ5UG9pbnQoY2N0KSxjY3QuYWRkVmVjdG9ycyh0aGlzLmJvdW5kaW5nQm94Lm1heCxzY3QubWF4KSx0aGlzLmJvdW5kaW5nQm94LmV4cGFuZEJ5UG9pbnQoY2N0KSk6KHRoaXMuYm91bmRpbmdCb3guZXhwYW5kQnlQb2ludChzY3QubWluKSx0aGlzLmJvdW5kaW5nQm94LmV4cGFuZEJ5UG9pbnQoc2N0Lm1heCkpfX1lbHNlIHRoaXMuYm91bmRpbmdCb3gubWFrZUVtcHR5KCk7KGlzTmFOKHRoaXMuYm91bmRpbmdCb3gubWluLngpfHxpc05hTih0aGlzLmJvdW5kaW5nQm94Lm1pbi55KXx8aXNOYU4odGhpcy5ib3VuZGluZ0JveC5taW4ueikpJiZjb25zb2xlLmVycm9yKCdUSFJFRS5CdWZmZXJHZW9tZXRyeS5jb21wdXRlQm91bmRpbmdCb3goKTogQ29tcHV0ZWQgbWluL21heCBoYXZlIE5hTiB2YWx1ZXMuIFRoZSAicG9zaXRpb24iIGF0dHJpYnV0ZSBpcyBsaWtlbHkgdG8gaGF2ZSBOYU4gdmFsdWVzLicsdGhpcyl9Y29tcHV0ZUJvdW5kaW5nU3BoZXJlKCl7bnVsbD09PXRoaXMuYm91bmRpbmdTcGhlcmUmJih0aGlzLmJvdW5kaW5nU3BoZXJlPW5ldyBac3QpO2NvbnN0IHQ9dGhpcy5hdHRyaWJ1dGVzLnBvc2l0aW9uLGU9dGhpcy5tb3JwaEF0dHJpYnV0ZXMucG9zaXRpb247aWYodCYmdC5pc0dMQnVmZmVyQXR0cmlidXRlKXJldHVybiBjb25zb2xlLmVycm9yKCdUSFJFRS5CdWZmZXJHZW9tZXRyeS5jb21wdXRlQm91bmRpbmdTcGhlcmUoKTogR0xCdWZmZXJBdHRyaWJ1dGUgcmVxdWlyZXMgYSBtYW51YWwgYm91bmRpbmcgc3BoZXJlLiBBbHRlcm5hdGl2ZWx5IHNldCAibWVzaC5mcnVzdHVtQ3VsbGVkIiB0byAiZmFsc2UiLicsdGhpcyksdm9pZCB0aGlzLmJvdW5kaW5nU3BoZXJlLnNldChuZXcgd3N0LDEvMCk7aWYodCl7Y29uc3Qgbj10aGlzLmJvdW5kaW5nU3BoZXJlLmNlbnRlcjtpZihzY3Quc2V0RnJvbUJ1ZmZlckF0dHJpYnV0ZSh0KSxlKWZvcihsZXQgdD0wLG49ZS5sZW5ndGg7dDxuO3QrKyl7bGN0LnNldEZyb21CdWZmZXJBdHRyaWJ1dGUoZVt0XSksdGhpcy5tb3JwaFRhcmdldHNSZWxhdGl2ZT8oY2N0LmFkZFZlY3RvcnMoc2N0Lm1pbixsY3QubWluKSxzY3QuZXhwYW5kQnlQb2ludChjY3QpLGNjdC5hZGRWZWN0b3JzKHNjdC5tYXgsbGN0Lm1heCksc2N0LmV4cGFuZEJ5UG9pbnQoY2N0KSk6KHNjdC5leHBhbmRCeVBvaW50KGxjdC5taW4pLHNjdC5leHBhbmRCeVBvaW50KGxjdC5tYXgpKX1zY3QuZ2V0Q2VudGVyKG4pO2xldCBvPTA7Zm9yKGxldCBlPTAsaT10LmNvdW50O2U8aTtlKyspY2N0LmZyb21CdWZmZXJBdHRyaWJ1dGUodCxlKSxvPU1hdGgubWF4KG8sbi5kaXN0YW5jZVRvU3F1YXJlZChjY3QpKTtpZihlKWZvcihsZXQgaT0wLGE9ZS5sZW5ndGg7aTxhO2krKyl7Y29uc3QgYT1lW2ldLHI9dGhpcy5tb3JwaFRhcmdldHNSZWxhdGl2ZTtmb3IobGV0IGU9MCxpPWEuY291bnQ7ZTxpO2UrKyljY3QuZnJvbUJ1ZmZlckF0dHJpYnV0ZShhLGUpLHImJihyY3QuZnJvbUJ1ZmZlckF0dHJpYnV0ZSh0LGUpLGNjdC5hZGQocmN0KSksbz1NYXRoLm1heChvLG4uZGlzdGFuY2VUb1NxdWFyZWQoY2N0KSl9dGhpcy5ib3VuZGluZ1NwaGVyZS5yYWRpdXM9TWF0aC5zcXJ0KG8pLGlzTmFOKHRoaXMuYm91bmRpbmdTcGhlcmUucmFkaXVzKSYmY29uc29sZS5lcnJvcignVEhSRUUuQnVmZmVyR2VvbWV0cnkuY29tcHV0ZUJvdW5kaW5nU3BoZXJlKCk6IENvbXB1dGVkIHJhZGl1cyBpcyBOYU4uIFRoZSAicG9zaXRpb24iIGF0dHJpYnV0ZSBpcyBsaWtlbHkgdG8gaGF2ZSBOYU4gdmFsdWVzLicsdGhpcyl9fWNvbXB1dGVGYWNlTm9ybWFscygpe31jb21wdXRlVGFuZ2VudHMoKXtjb25zdCB0PXRoaXMuaW5kZXgsZT10aGlzLmF0dHJpYnV0ZXM7aWYobnVsbD09PXR8fHZvaWQgMD09PWUucG9zaXRpb258fHZvaWQgMD09PWUubm9ybWFsfHx2b2lkIDA9PT1lLnV2KXJldHVybiB2b2lkIGNvbnNvbGUuZXJyb3IoIlRIUkVFLkJ1ZmZlckdlb21ldHJ5OiAuY29tcHV0ZVRhbmdlbnRzKCkgZmFpbGVkLiBNaXNzaW5nIHJlcXVpcmVkIGF0dHJpYnV0ZXMgKGluZGV4LCBwb3NpdGlvbiwgbm9ybWFsIG9yIHV2KSIpO2NvbnN0IG49dC5hcnJheSxvPWUucG9zaXRpb24uYXJyYXksaT1lLm5vcm1hbC5hcnJheSxhPWUudXYuYXJyYXkscj1vLmxlbmd0aC8zO3ZvaWQgMD09PWUudGFuZ2VudCYmdGhpcy5zZXRBdHRyaWJ1dGUoInRhbmdlbnQiLG5ldyBRbHQobmV3IEZsb2F0MzJBcnJheSg0KnIpLDQpKTtjb25zdCBzPWUudGFuZ2VudC5hcnJheSxsPVtdLGM9W107Zm9yKGxldCB0PTA7dDxyO3QrKylsW3RdPW5ldyB3c3QsY1t0XT1uZXcgd3N0O2NvbnN0IGQ9bmV3IHdzdCxwPW5ldyB3c3QsbT1uZXcgd3N0LGY9bmV3IGdzdCx1PW5ldyBnc3QsZz1uZXcgZ3N0LGg9bmV3IHdzdCxiPW5ldyB3c3Q7ZnVuY3Rpb24geSh0LGUsbil7ZC5mcm9tQXJyYXkobywzKnQpLHAuZnJvbUFycmF5KG8sMyplKSxtLmZyb21BcnJheShvLDMqbiksZi5mcm9tQXJyYXkoYSwyKnQpLHUuZnJvbUFycmF5KGEsMiplKSxnLmZyb21BcnJheShhLDIqbikscC5zdWIoZCksbS5zdWIoZCksdS5zdWIoZiksZy5zdWIoZik7Y29uc3QgaT0xLyh1LngqZy55LWcueCp1LnkpO2lzRmluaXRlKGkpJiYoaC5jb3B5KHApLm11bHRpcGx5U2NhbGFyKGcueSkuYWRkU2NhbGVkVmVjdG9yKG0sLXUueSkubXVsdGlwbHlTY2FsYXIoaSksYi5jb3B5KG0pLm11bHRpcGx5U2NhbGFyKHUueCkuYWRkU2NhbGVkVmVjdG9yKHAsLWcueCkubXVsdGlwbHlTY2FsYXIoaSksbFt0XS5hZGQoaCksbFtlXS5hZGQoaCksbFtuXS5hZGQoaCksY1t0XS5hZGQoYiksY1tlXS5hZGQoYiksY1tuXS5hZGQoYikpfWxldCBfPXRoaXMuZ3JvdXBzOzA9PT1fLmxlbmd0aCYmKF89W3tzdGFydDowLGNvdW50Om4ubGVuZ3RofV0pO2ZvcihsZXQgdD0wLGU9Xy5sZW5ndGg7dDxlOysrdCl7Y29uc3QgZT1fW3RdLG89ZS5zdGFydDtmb3IobGV0IHQ9byxpPW8rZS5jb3VudDt0PGk7dCs9Myl5KG5bdCswXSxuW3QrMV0sblt0KzJdKX1jb25zdCBDPW5ldyB3c3QsTT1uZXcgd3N0LHY9bmV3IHdzdCx4PW5ldyB3c3Q7ZnVuY3Rpb24gTyh0KXt2LmZyb21BcnJheShpLDMqdCkseC5jb3B5KHYpO2NvbnN0IGU9bFt0XTtDLmNvcHkoZSksQy5zdWIodi5tdWx0aXBseVNjYWxhcih2LmRvdChlKSkpLm5vcm1hbGl6ZSgpLE0uY3Jvc3NWZWN0b3JzKHgsZSk7Y29uc3Qgbj1NLmRvdChjW3RdKTwwPy0xOjE7c1s0KnRdPUMueCxzWzQqdCsxXT1DLnksc1s0KnQrMl09Qy56LHNbNCp0KzNdPW59Zm9yKGxldCB0PTAsZT1fLmxlbmd0aDt0PGU7Kyt0KXtjb25zdCBlPV9bdF0sbz1lLnN0YXJ0O2ZvcihsZXQgdD1vLGk9bytlLmNvdW50O3Q8aTt0Kz0zKU8oblt0KzBdKSxPKG5bdCsxXSksTyhuW3QrMl0pfX1jb21wdXRlVmVydGV4Tm9ybWFscygpe2NvbnN0IHQ9dGhpcy5pbmRleCxlPXRoaXMuZ2V0QXR0cmlidXRlKCJwb3NpdGlvbiIpO2lmKHZvaWQgMCE9PWUpe2xldCBuPXRoaXMuZ2V0QXR0cmlidXRlKCJub3JtYWwiKTtpZih2b2lkIDA9PT1uKW49bmV3IFFsdChuZXcgRmxvYXQzMkFycmF5KDMqZS5jb3VudCksMyksdGhpcy5zZXRBdHRyaWJ1dGUoIm5vcm1hbCIsbik7ZWxzZSBmb3IobGV0IHQ9MCxlPW4uY291bnQ7dDxlO3QrKyluLnNldFhZWih0LDAsMCwwKTtjb25zdCBvPW5ldyB3c3QsaT1uZXcgd3N0LGE9bmV3IHdzdCxyPW5ldyB3c3Qscz1uZXcgd3N0LGw9bmV3IHdzdCxjPW5ldyB3c3QsZD1uZXcgd3N0O2lmKHQpZm9yKGxldCBwPTAsbT10LmNvdW50O3A8bTtwKz0zKXtjb25zdCBtPXQuZ2V0WChwKzApLGY9dC5nZXRYKHArMSksdT10LmdldFgocCsyKTtvLmZyb21CdWZmZXJBdHRyaWJ1dGUoZSxtKSxpLmZyb21CdWZmZXJBdHRyaWJ1dGUoZSxmKSxhLmZyb21CdWZmZXJBdHRyaWJ1dGUoZSx1KSxjLnN1YlZlY3RvcnMoYSxpKSxkLnN1YlZlY3RvcnMobyxpKSxjLmNyb3NzKGQpLHIuZnJvbUJ1ZmZlckF0dHJpYnV0ZShuLG0pLHMuZnJvbUJ1ZmZlckF0dHJpYnV0ZShuLGYpLGwuZnJvbUJ1ZmZlckF0dHJpYnV0ZShuLHUpLHIuYWRkKGMpLHMuYWRkKGMpLGwuYWRkKGMpLG4uc2V0WFlaKG0sci54LHIueSxyLnopLG4uc2V0WFlaKGYscy54LHMueSxzLnopLG4uc2V0WFlaKHUsbC54LGwueSxsLnopfWVsc2UgZm9yKGxldCB0PTAscj1lLmNvdW50O3Q8cjt0Kz0zKW8uZnJvbUJ1ZmZlckF0dHJpYnV0ZShlLHQrMCksaS5mcm9tQnVmZmVyQXR0cmlidXRlKGUsdCsxKSxhLmZyb21CdWZmZXJBdHRyaWJ1dGUoZSx0KzIpLGMuc3ViVmVjdG9ycyhhLGkpLGQuc3ViVmVjdG9ycyhvLGkpLGMuY3Jvc3MoZCksbi5zZXRYWVoodCswLGMueCxjLnksYy56KSxuLnNldFhZWih0KzEsYy54LGMueSxjLnopLG4uc2V0WFlaKHQrMixjLngsYy55LGMueik7dGhpcy5ub3JtYWxpemVOb3JtYWxzKCksbi5uZWVkc1VwZGF0ZT0hMH19bWVyZ2UodCxlKXtpZighdHx8IXQuaXNCdWZmZXJHZW9tZXRyeSlyZXR1cm4gdm9pZCBjb25zb2xlLmVycm9yKCJUSFJFRS5CdWZmZXJHZW9tZXRyeS5tZXJnZSgpOiBnZW9tZXRyeSBub3QgYW4gaW5zdGFuY2Ugb2YgVEhSRUUuQnVmZmVyR2VvbWV0cnkuIix0KTt2b2lkIDA9PT1lJiYoZT0wLGNvbnNvbGUud2FybigiVEhSRUUuQnVmZmVyR2VvbWV0cnkubWVyZ2UoKTogT3ZlcndyaXRpbmcgb3JpZ2luYWwgZ2VvbWV0cnksIHN0YXJ0aW5nIGF0IG9mZnNldD0wLiBVc2UgQnVmZmVyR2VvbWV0cnlVdGlscy5tZXJnZUJ1ZmZlckdlb21ldHJpZXMoKSBmb3IgbG9zc2xlc3MgbWVyZ2UuIikpO2NvbnN0IG49dGhpcy5hdHRyaWJ1dGVzO2Zvcihjb25zdCBvIGluIG4pe2lmKHZvaWQgMD09PXQuYXR0cmlidXRlc1tvXSljb250aW51ZTtjb25zdCBpPW5bb10uYXJyYXksYT10LmF0dHJpYnV0ZXNbb10scj1hLmFycmF5LHM9YS5pdGVtU2l6ZSplLGw9TWF0aC5taW4oci5sZW5ndGgsaS5sZW5ndGgtcyk7Zm9yKGxldCB0PTAsZT1zO3Q8bDt0KyssZSsrKWlbZV09clt0XX1yZXR1cm4gdGhpc31ub3JtYWxpemVOb3JtYWxzKCl7Y29uc3QgdD10aGlzLmF0dHJpYnV0ZXMubm9ybWFsO2ZvcihsZXQgZT0wLG49dC5jb3VudDtlPG47ZSsrKWNjdC5mcm9tQnVmZmVyQXR0cmlidXRlKHQsZSksY2N0Lm5vcm1hbGl6ZSgpLHQuc2V0WFlaKGUsY2N0LngsY2N0LnksY2N0LnopfXRvTm9uSW5kZXhlZCgpe2Z1bmN0aW9uIHQodCxlKXtjb25zdCBuPXQuYXJyYXksbz10Lml0ZW1TaXplLGk9dC5ub3JtYWxpemVkLGE9bmV3IG4uY29uc3RydWN0b3IoZS5sZW5ndGgqbyk7bGV0IHI9MCxzPTA7Zm9yKGxldCBpPTAsbD1lLmxlbmd0aDtpPGw7aSsrKXtyPXQuaXNJbnRlcmxlYXZlZEJ1ZmZlckF0dHJpYnV0ZT9lW2ldKnQuZGF0YS5zdHJpZGUrdC5vZmZzZXQ6ZVtpXSpvO2ZvcihsZXQgdD0wO3Q8bzt0KyspYVtzKytdPW5bcisrXX1yZXR1cm4gbmV3IFFsdChhLG8saSl9aWYobnVsbD09PXRoaXMuaW5kZXgpcmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuQnVmZmVyR2VvbWV0cnkudG9Ob25JbmRleGVkKCk6IEJ1ZmZlckdlb21ldHJ5IGlzIGFscmVhZHkgbm9uLWluZGV4ZWQuIiksdGhpcztjb25zdCBlPW5ldyBkY3Qsbj10aGlzLmluZGV4LmFycmF5LG89dGhpcy5hdHRyaWJ1dGVzO2Zvcihjb25zdCBpIGluIG8pe2NvbnN0IGE9dChvW2ldLG4pO2Uuc2V0QXR0cmlidXRlKGksYSl9Y29uc3QgaT10aGlzLm1vcnBoQXR0cmlidXRlcztmb3IoY29uc3QgbyBpbiBpKXtjb25zdCBhPVtdLHI9aVtvXTtmb3IobGV0IGU9MCxvPXIubGVuZ3RoO2U8bztlKyspe2NvbnN0IG89dChyW2VdLG4pO2EucHVzaChvKX1lLm1vcnBoQXR0cmlidXRlc1tvXT1hfWUubW9ycGhUYXJnZXRzUmVsYXRpdmU9dGhpcy5tb3JwaFRhcmdldHNSZWxhdGl2ZTtjb25zdCBhPXRoaXMuZ3JvdXBzO2ZvcihsZXQgdD0wLG49YS5sZW5ndGg7dDxuO3QrKyl7Y29uc3Qgbj1hW3RdO2UuYWRkR3JvdXAobi5zdGFydCxuLmNvdW50LG4ubWF0ZXJpYWxJbmRleCl9cmV0dXJuIGV9dG9KU09OKCl7Y29uc3QgdD17bWV0YWRhdGE6e3ZlcnNpb246NC41LHR5cGU6IkJ1ZmZlckdlb21ldHJ5IixnZW5lcmF0b3I6IkJ1ZmZlckdlb21ldHJ5LnRvSlNPTiJ9fTtpZih0LnV1aWQ9dGhpcy51dWlkLHQudHlwZT10aGlzLnR5cGUsIiIhPT10aGlzLm5hbWUmJih0Lm5hbWU9dGhpcy5uYW1lKSxPYmplY3Qua2V5cyh0aGlzLnVzZXJEYXRhKS5sZW5ndGg+MCYmKHQudXNlckRhdGE9dGhpcy51c2VyRGF0YSksdm9pZCAwIT09dGhpcy5wYXJhbWV0ZXJzKXtjb25zdCBlPXRoaXMucGFyYW1ldGVycztmb3IoY29uc3QgbiBpbiBlKXZvaWQgMCE9PWVbbl0mJih0W25dPWVbbl0pO3JldHVybiB0fXQuZGF0YT17YXR0cmlidXRlczp7fX07Y29uc3QgZT10aGlzLmluZGV4O251bGwhPT1lJiYodC5kYXRhLmluZGV4PXt0eXBlOmUuYXJyYXkuY29uc3RydWN0b3IubmFtZSxhcnJheTpBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChlLmFycmF5KX0pO2NvbnN0IG49dGhpcy5hdHRyaWJ1dGVzO2Zvcihjb25zdCBlIGluIG4pe3QuZGF0YS5hdHRyaWJ1dGVzW2VdPW5bZV0udG9KU09OKHQuZGF0YSl9Y29uc3Qgbz17fTtsZXQgaT0hMTtmb3IoY29uc3QgZSBpbiB0aGlzLm1vcnBoQXR0cmlidXRlcyl7Y29uc3Qgbj10aGlzLm1vcnBoQXR0cmlidXRlc1tlXSxhPVtdO2ZvcihsZXQgZT0wLG89bi5sZW5ndGg7ZTxvO2UrKyl7YS5wdXNoKG5bZV0udG9KU09OKHQuZGF0YSkpfWEubGVuZ3RoPjAmJihvW2VdPWEsaT0hMCl9aSYmKHQuZGF0YS5tb3JwaEF0dHJpYnV0ZXM9byx0LmRhdGEubW9ycGhUYXJnZXRzUmVsYXRpdmU9dGhpcy5tb3JwaFRhcmdldHNSZWxhdGl2ZSk7Y29uc3QgYT10aGlzLmdyb3VwczthLmxlbmd0aD4wJiYodC5kYXRhLmdyb3Vwcz1KU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGEpKSk7Y29uc3Qgcj10aGlzLmJvdW5kaW5nU3BoZXJlO3JldHVybiBudWxsIT09ciYmKHQuZGF0YS5ib3VuZGluZ1NwaGVyZT17Y2VudGVyOnIuY2VudGVyLnRvQXJyYXkoKSxyYWRpdXM6ci5yYWRpdXN9KSx0fWNsb25lKCl7cmV0dXJuKG5ldyBkY3QpLmNvcHkodGhpcyl9Y29weSh0KXt0aGlzLmluZGV4PW51bGwsdGhpcy5hdHRyaWJ1dGVzPXt9LHRoaXMubW9ycGhBdHRyaWJ1dGVzPXt9LHRoaXMuZ3JvdXBzPVtdLHRoaXMuYm91bmRpbmdCb3g9bnVsbCx0aGlzLmJvdW5kaW5nU3BoZXJlPW51bGw7Y29uc3QgZT17fTt0aGlzLm5hbWU9dC5uYW1lO2NvbnN0IG49dC5pbmRleDtudWxsIT09biYmdGhpcy5zZXRJbmRleChuLmNsb25lKGUpKTtjb25zdCBvPXQuYXR0cmlidXRlcztmb3IoY29uc3QgdCBpbiBvKXt0aGlzLnNldEF0dHJpYnV0ZSh0LG9bdF0uY2xvbmUoZSkpfWNvbnN0IGk9dC5tb3JwaEF0dHJpYnV0ZXM7Zm9yKGNvbnN0IHQgaW4gaSl7Y29uc3Qgbj1bXSxvPWlbdF07Zm9yKGxldCB0PTAsaT1vLmxlbmd0aDt0PGk7dCsrKW4ucHVzaChvW3RdLmNsb25lKGUpKTt0aGlzLm1vcnBoQXR0cmlidXRlc1t0XT1ufXRoaXMubW9ycGhUYXJnZXRzUmVsYXRpdmU9dC5tb3JwaFRhcmdldHNSZWxhdGl2ZTtjb25zdCBhPXQuZ3JvdXBzO2ZvcihsZXQgdD0wLGU9YS5sZW5ndGg7dDxlO3QrKyl7Y29uc3QgZT1hW3RdO3RoaXMuYWRkR3JvdXAoZS5zdGFydCxlLmNvdW50LGUubWF0ZXJpYWxJbmRleCl9Y29uc3Qgcj10LmJvdW5kaW5nQm94O251bGwhPT1yJiYodGhpcy5ib3VuZGluZ0JveD1yLmNsb25lKCkpO2NvbnN0IHM9dC5ib3VuZGluZ1NwaGVyZTtyZXR1cm4gbnVsbCE9PXMmJih0aGlzLmJvdW5kaW5nU3BoZXJlPXMuY2xvbmUoKSksdGhpcy5kcmF3UmFuZ2Uuc3RhcnQ9dC5kcmF3UmFuZ2Uuc3RhcnQsdGhpcy5kcmF3UmFuZ2UuY291bnQ9dC5kcmF3UmFuZ2UuY291bnQsdGhpcy51c2VyRGF0YT10LnVzZXJEYXRhLHRoaXN9ZGlzcG9zZSgpe3RoaXMuZGlzcGF0Y2hFdmVudCh7dHlwZToiZGlzcG9zZSJ9KX19ZGN0LnByb3RvdHlwZS5pc0J1ZmZlckdlb21ldHJ5PSEwO2NvbnN0IHBjdD1uZXcgb2x0LG1jdD1uZXcgbmx0LGZjdD1uZXcgWnN0LHVjdD1uZXcgd3N0LGdjdD1uZXcgd3N0LGhjdD1uZXcgd3N0LGJjdD1uZXcgd3N0LHljdD1uZXcgd3N0LF9jdD1uZXcgd3N0LENjdD1uZXcgd3N0LE1jdD1uZXcgd3N0LHZjdD1uZXcgd3N0LHhjdD1uZXcgZ3N0LE9jdD1uZXcgZ3N0LFBjdD1uZXcgZ3N0LHdjdD1uZXcgd3N0LGtjdD1uZXcgd3N0O2NsYXNzIFNjdCBleHRlbmRzIFNsdHtjb25zdHJ1Y3Rvcih0PW5ldyBkY3QsZT1uZXcgWGx0KXtzdXBlcigpLHRoaXMudHlwZT0iTWVzaCIsdGhpcy5nZW9tZXRyeT10LHRoaXMubWF0ZXJpYWw9ZSx0aGlzLnVwZGF0ZU1vcnBoVGFyZ2V0cygpfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdm9pZCAwIT09dC5tb3JwaFRhcmdldEluZmx1ZW5jZXMmJih0aGlzLm1vcnBoVGFyZ2V0SW5mbHVlbmNlcz10Lm1vcnBoVGFyZ2V0SW5mbHVlbmNlcy5zbGljZSgpKSx2b2lkIDAhPT10Lm1vcnBoVGFyZ2V0RGljdGlvbmFyeSYmKHRoaXMubW9ycGhUYXJnZXREaWN0aW9uYXJ5PU9iamVjdC5hc3NpZ24oe30sdC5tb3JwaFRhcmdldERpY3Rpb25hcnkpKSx0aGlzLm1hdGVyaWFsPXQubWF0ZXJpYWwsdGhpcy5nZW9tZXRyeT10Lmdlb21ldHJ5LHRoaXN9dXBkYXRlTW9ycGhUYXJnZXRzKCl7Y29uc3QgdD10aGlzLmdlb21ldHJ5O2lmKHQuaXNCdWZmZXJHZW9tZXRyeSl7Y29uc3QgZT10Lm1vcnBoQXR0cmlidXRlcyxuPU9iamVjdC5rZXlzKGUpO2lmKG4ubGVuZ3RoPjApe2NvbnN0IHQ9ZVtuWzBdXTtpZih2b2lkIDAhPT10KXt0aGlzLm1vcnBoVGFyZ2V0SW5mbHVlbmNlcz1bXSx0aGlzLm1vcnBoVGFyZ2V0RGljdGlvbmFyeT17fTtmb3IobGV0IGU9MCxuPXQubGVuZ3RoO2U8bjtlKyspe2NvbnN0IG49dFtlXS5uYW1lfHxTdHJpbmcoZSk7dGhpcy5tb3JwaFRhcmdldEluZmx1ZW5jZXMucHVzaCgwKSx0aGlzLm1vcnBoVGFyZ2V0RGljdGlvbmFyeVtuXT1lfX19fWVsc2V7Y29uc3QgZT10Lm1vcnBoVGFyZ2V0czt2b2lkIDAhPT1lJiZlLmxlbmd0aD4wJiZjb25zb2xlLmVycm9yKCJUSFJFRS5NZXNoLnVwZGF0ZU1vcnBoVGFyZ2V0cygpIG5vIGxvbmdlciBzdXBwb3J0cyBUSFJFRS5HZW9tZXRyeS4gVXNlIFRIUkVFLkJ1ZmZlckdlb21ldHJ5IGluc3RlYWQuIil9fXJheWNhc3QodCxlKXtjb25zdCBuPXRoaXMuZ2VvbWV0cnksbz10aGlzLm1hdGVyaWFsLGk9dGhpcy5tYXRyaXhXb3JsZDtpZih2b2lkIDA9PT1vKXJldHVybjtpZihudWxsPT09bi5ib3VuZGluZ1NwaGVyZSYmbi5jb21wdXRlQm91bmRpbmdTcGhlcmUoKSxmY3QuY29weShuLmJvdW5kaW5nU3BoZXJlKSxmY3QuYXBwbHlNYXRyaXg0KGkpLCExPT09dC5yYXkuaW50ZXJzZWN0c1NwaGVyZShmY3QpKXJldHVybjtpZihwY3QuY29weShpKS5pbnZlcnQoKSxtY3QuY29weSh0LnJheSkuYXBwbHlNYXRyaXg0KHBjdCksbnVsbCE9PW4uYm91bmRpbmdCb3gmJiExPT09bWN0LmludGVyc2VjdHNCb3gobi5ib3VuZGluZ0JveCkpcmV0dXJuO2xldCBhO2lmKG4uaXNCdWZmZXJHZW9tZXRyeSl7Y29uc3QgaT1uLmluZGV4LHI9bi5hdHRyaWJ1dGVzLnBvc2l0aW9uLHM9bi5tb3JwaEF0dHJpYnV0ZXMucG9zaXRpb24sbD1uLm1vcnBoVGFyZ2V0c1JlbGF0aXZlLGM9bi5hdHRyaWJ1dGVzLnV2LGQ9bi5hdHRyaWJ1dGVzLnV2MixwPW4uZ3JvdXBzLG09bi5kcmF3UmFuZ2U7aWYobnVsbCE9PWkpaWYoQXJyYXkuaXNBcnJheShvKSlmb3IobGV0IG49MCxmPXAubGVuZ3RoO248ZjtuKyspe2NvbnN0IGY9cFtuXSx1PW9bZi5tYXRlcmlhbEluZGV4XTtmb3IobGV0IG49TWF0aC5tYXgoZi5zdGFydCxtLnN0YXJ0KSxvPU1hdGgubWluKGYuc3RhcnQrZi5jb3VudCxtLnN0YXJ0K20uY291bnQpO248bztuKz0zKXtjb25zdCBvPWkuZ2V0WChuKSxwPWkuZ2V0WChuKzEpLG09aS5nZXRYKG4rMik7YT1EY3QodGhpcyx1LHQsbWN0LHIscyxsLGMsZCxvLHAsbSksYSYmKGEuZmFjZUluZGV4PU1hdGguZmxvb3Iobi8zKSxhLmZhY2UubWF0ZXJpYWxJbmRleD1mLm1hdGVyaWFsSW5kZXgsZS5wdXNoKGEpKX19ZWxzZXtmb3IobGV0IG49TWF0aC5tYXgoMCxtLnN0YXJ0KSxwPU1hdGgubWluKGkuY291bnQsbS5zdGFydCttLmNvdW50KTtuPHA7bis9Myl7Y29uc3QgcD1pLmdldFgobiksbT1pLmdldFgobisxKSxmPWkuZ2V0WChuKzIpO2E9RGN0KHRoaXMsbyx0LG1jdCxyLHMsbCxjLGQscCxtLGYpLGEmJihhLmZhY2VJbmRleD1NYXRoLmZsb29yKG4vMyksZS5wdXNoKGEpKX19ZWxzZSBpZih2b2lkIDAhPT1yKWlmKEFycmF5LmlzQXJyYXkobykpZm9yKGxldCBuPTAsaT1wLmxlbmd0aDtuPGk7bisrKXtjb25zdCBpPXBbbl0sZj1vW2kubWF0ZXJpYWxJbmRleF07Zm9yKGxldCBuPU1hdGgubWF4KGkuc3RhcnQsbS5zdGFydCksbz1NYXRoLm1pbihpLnN0YXJ0K2kuY291bnQsbS5zdGFydCttLmNvdW50KTtuPG87bis9Myl7YT1EY3QodGhpcyxmLHQsbWN0LHIscyxsLGMsZCxuLG4rMSxuKzIpLGEmJihhLmZhY2VJbmRleD1NYXRoLmZsb29yKG4vMyksYS5mYWNlLm1hdGVyaWFsSW5kZXg9aS5tYXRlcmlhbEluZGV4LGUucHVzaChhKSl9fWVsc2V7Zm9yKGxldCBuPU1hdGgubWF4KDAsbS5zdGFydCksaT1NYXRoLm1pbihyLmNvdW50LG0uc3RhcnQrbS5jb3VudCk7bjxpO24rPTMpe2E9RGN0KHRoaXMsbyx0LG1jdCxyLHMsbCxjLGQsbixuKzEsbisyKSxhJiYoYS5mYWNlSW5kZXg9TWF0aC5mbG9vcihuLzMpLGUucHVzaChhKSl9fX1lbHNlIG4uaXNHZW9tZXRyeSYmY29uc29sZS5lcnJvcigiVEhSRUUuTWVzaC5yYXljYXN0KCkgbm8gbG9uZ2VyIHN1cHBvcnRzIFRIUkVFLkdlb21ldHJ5LiBVc2UgVEhSRUUuQnVmZmVyR2VvbWV0cnkgaW5zdGVhZC4iKX19ZnVuY3Rpb24gRGN0KHQsZSxuLG8saSxhLHIscyxsLGMsZCxwKXt1Y3QuZnJvbUJ1ZmZlckF0dHJpYnV0ZShpLGMpLGdjdC5mcm9tQnVmZmVyQXR0cmlidXRlKGksZCksaGN0LmZyb21CdWZmZXJBdHRyaWJ1dGUoaSxwKTtjb25zdCBtPXQubW9ycGhUYXJnZXRJbmZsdWVuY2VzO2lmKGEmJm0pe0NjdC5zZXQoMCwwLDApLE1jdC5zZXQoMCwwLDApLHZjdC5zZXQoMCwwLDApO2ZvcihsZXQgdD0wLGU9YS5sZW5ndGg7dDxlO3QrKyl7Y29uc3QgZT1tW3RdLG49YVt0XTswIT09ZSYmKGJjdC5mcm9tQnVmZmVyQXR0cmlidXRlKG4sYykseWN0LmZyb21CdWZmZXJBdHRyaWJ1dGUobixkKSxfY3QuZnJvbUJ1ZmZlckF0dHJpYnV0ZShuLHApLHI/KENjdC5hZGRTY2FsZWRWZWN0b3IoYmN0LGUpLE1jdC5hZGRTY2FsZWRWZWN0b3IoeWN0LGUpLHZjdC5hZGRTY2FsZWRWZWN0b3IoX2N0LGUpKTooQ2N0LmFkZFNjYWxlZFZlY3RvcihiY3Quc3ViKHVjdCksZSksTWN0LmFkZFNjYWxlZFZlY3Rvcih5Y3Quc3ViKGdjdCksZSksdmN0LmFkZFNjYWxlZFZlY3RvcihfY3Quc3ViKGhjdCksZSkpKX11Y3QuYWRkKENjdCksZ2N0LmFkZChNY3QpLGhjdC5hZGQodmN0KX10LmlzU2tpbm5lZE1lc2gmJih0LmJvbmVUcmFuc2Zvcm0oYyx1Y3QpLHQuYm9uZVRyYW5zZm9ybShkLGdjdCksdC5ib25lVHJhbnNmb3JtKHAsaGN0KSk7Y29uc3QgZj0oZnVuY3Rpb24gdSh0LGUsbixvLGksYSxyLHMpe2xldCBsO2lmKGw9MT09PWUuc2lkZT9vLmludGVyc2VjdFRyaWFuZ2xlKHIsYSxpLCEwLHMpOm8uaW50ZXJzZWN0VHJpYW5nbGUoaSxhLHIsMiE9PWUuc2lkZSxzKSxudWxsPT09bClyZXR1cm4gbnVsbDtrY3QuY29weShzKSxrY3QuYXBwbHlNYXRyaXg0KHQubWF0cml4V29ybGQpO2NvbnN0IGM9bi5yYXkub3JpZ2luLmRpc3RhbmNlVG8oa2N0KTtyZXR1cm4gYzxuLm5lYXJ8fGM+bi5mYXI/bnVsbDp7ZGlzdGFuY2U6Yyxwb2ludDprY3QuY2xvbmUoKSxvYmplY3Q6dH19KSh0LGUsbixvLHVjdCxnY3QsaGN0LHdjdCk7aWYoZil7cyYmKHhjdC5mcm9tQnVmZmVyQXR0cmlidXRlKHMsYyksT2N0LmZyb21CdWZmZXJBdHRyaWJ1dGUocyxkKSxQY3QuZnJvbUJ1ZmZlckF0dHJpYnV0ZShzLHApLGYudXY9TGx0LmdldFVWKHdjdCx1Y3QsZ2N0LGhjdCx4Y3QsT2N0LFBjdCxuZXcgZ3N0KSksbCYmKHhjdC5mcm9tQnVmZmVyQXR0cmlidXRlKGwsYyksT2N0LmZyb21CdWZmZXJBdHRyaWJ1dGUobCxkKSxQY3QuZnJvbUJ1ZmZlckF0dHJpYnV0ZShsLHApLGYudXYyPUxsdC5nZXRVVih3Y3QsdWN0LGdjdCxoY3QseGN0LE9jdCxQY3QsbmV3IGdzdCkpO2NvbnN0IHQ9e2E6YyxiOmQsYzpwLG5vcm1hbDpuZXcgd3N0LG1hdGVyaWFsSW5kZXg6MH07TGx0LmdldE5vcm1hbCh1Y3QsZ2N0LGhjdCx0Lm5vcm1hbCksZi5mYWNlPXR9cmV0dXJuIGZ9U2N0LnByb3RvdHlwZS5pc01lc2g9ITA7Y2xhc3MgUmN0IGV4dGVuZHMgZGN0e2NvbnN0cnVjdG9yKHQ9MSxlPTEsbj0xLG89MSxpPTEsYT0xKXtzdXBlcigpLHRoaXMudHlwZT0iQm94R2VvbWV0cnkiLHRoaXMucGFyYW1ldGVycz17d2lkdGg6dCxoZWlnaHQ6ZSxkZXB0aDpuLHdpZHRoU2VnbWVudHM6byxoZWlnaHRTZWdtZW50czppLGRlcHRoU2VnbWVudHM6YX07Y29uc3Qgcj10aGlzO289TWF0aC5mbG9vcihvKSxpPU1hdGguZmxvb3IoaSksYT1NYXRoLmZsb29yKGEpO2NvbnN0IHM9W10sbD1bXSxjPVtdLGQ9W107bGV0IHA9MCxtPTA7ZnVuY3Rpb24gZih0LGUsbixvLGksYSxmLHUsZyxoLGIpe2NvbnN0IHk9YS9nLF89Zi9oLEM9YS8yLE09Zi8yLHY9dS8yLHg9ZysxLE89aCsxO2xldCBQPTAsdz0wO2NvbnN0IGs9bmV3IHdzdDtmb3IobGV0IGE9MDthPE87YSsrKXtjb25zdCByPWEqXy1NO2ZvcihsZXQgcz0wO3M8eDtzKyspe2tbdF09KHMqeS1DKSpvLGtbZV09cippLGtbbl09dixsLnB1c2goay54LGsueSxrLnopLGtbdF09MCxrW2VdPTAsa1tuXT11PjA/MTotMSxjLnB1c2goay54LGsueSxrLnopLGQucHVzaChzL2cpLGQucHVzaCgxLWEvaCksUCs9MX19Zm9yKGxldCB0PTA7dDxoO3QrKylmb3IobGV0IGU9MDtlPGc7ZSsrKXtjb25zdCBuPXArZSt4Kih0KzEpLG89cCsoZSsxKSt4Kih0KzEpLGk9cCsoZSsxKSt4KnQ7cy5wdXNoKHArZSt4KnQsbixpKSxzLnB1c2gobixvLGkpLHcrPTZ9ci5hZGRHcm91cChtLHcsYiksbSs9dyxwKz1QfWYoInoiLCJ5IiwieCIsLTEsLTEsbixlLHQsYSxpLDApLGYoInoiLCJ5IiwieCIsMSwtMSxuLGUsLXQsYSxpLDEpLGYoIngiLCJ6IiwieSIsMSwxLHQsbixlLG8sYSwyKSxmKCJ4IiwieiIsInkiLDEsLTEsdCxuLC1lLG8sYSwzKSxmKCJ4IiwieSIsInoiLDEsLTEsdCxlLG4sbyxpLDQpLGYoIngiLCJ5IiwieiIsLTEsLTEsdCxlLC1uLG8saSw1KSx0aGlzLnNldEluZGV4KHMpLHRoaXMuc2V0QXR0cmlidXRlKCJwb3NpdGlvbiIsbmV3IGVjdChsLDMpKSx0aGlzLnNldEF0dHJpYnV0ZSgibm9ybWFsIixuZXcgZWN0KGMsMykpLHRoaXMuc2V0QXR0cmlidXRlKCJ1diIsbmV3IGVjdChkLDIpKX1zdGF0aWMgZnJvbUpTT04odCl7cmV0dXJuIG5ldyBSY3QodC53aWR0aCx0LmhlaWdodCx0LmRlcHRoLHQud2lkdGhTZWdtZW50cyx0LmhlaWdodFNlZ21lbnRzLHQuZGVwdGhTZWdtZW50cyl9fWZ1bmN0aW9uIEVjdCh0KXtjb25zdCBlPXt9O2Zvcihjb25zdCBuIGluIHQpe2Vbbl09e307Zm9yKGNvbnN0IG8gaW4gdFtuXSl7Y29uc3QgaT10W25dW29dO2Vbbl1bb109aSYmKGkuaXNDb2xvcnx8aS5pc01hdHJpeDN8fGkuaXNNYXRyaXg0fHxpLmlzVmVjdG9yMnx8aS5pc1ZlY3RvcjN8fGkuaXNWZWN0b3I0fHxpLmlzVGV4dHVyZXx8aS5pc1F1YXRlcm5pb24pP2kuY2xvbmUoKTpBcnJheS5pc0FycmF5KGkpP2kuc2xpY2UoKTppfX1yZXR1cm4gZX1mdW5jdGlvbiBBY3QodCl7Y29uc3QgZT17fTtmb3IobGV0IG49MDtuPHQubGVuZ3RoO24rKyl7Y29uc3Qgbz1FY3QodFtuXSk7Zm9yKGNvbnN0IHQgaW4gbyllW3RdPW9bdF19cmV0dXJuIGV9Y29uc3QgVGN0PXtjbG9uZTpFY3QsbWVyZ2U6QWN0fTtjbGFzcyBOY3QgZXh0ZW5kcyBWbHR7Y29uc3RydWN0b3IodCl7c3VwZXIoKSx0aGlzLnR5cGU9IlNoYWRlck1hdGVyaWFsIix0aGlzLmRlZmluZXM9e30sdGhpcy51bmlmb3Jtcz17fSx0aGlzLnZlcnRleFNoYWRlcj0idm9pZCBtYWluKCkge1xuXHRnbF9Qb3NpdGlvbiA9IHByb2plY3Rpb25NYXRyaXggKiBtb2RlbFZpZXdNYXRyaXggKiB2ZWM0KCBwb3NpdGlvbiwgMS4wICk7XG59Iix0aGlzLmZyYWdtZW50U2hhZGVyPSJ2b2lkIG1haW4oKSB7XG5cdGdsX0ZyYWdDb2xvciA9IHZlYzQoIDEuMCwgMC4wLCAwLjAsIDEuMCApO1xufSIsdGhpcy5saW5ld2lkdGg9MSx0aGlzLndpcmVmcmFtZT0hMSx0aGlzLndpcmVmcmFtZUxpbmV3aWR0aD0xLHRoaXMuZm9nPSExLHRoaXMubGlnaHRzPSExLHRoaXMuY2xpcHBpbmc9ITEsdGhpcy5leHRlbnNpb25zPXtkZXJpdmF0aXZlczohMSxmcmFnRGVwdGg6ITEsZHJhd0J1ZmZlcnM6ITEsc2hhZGVyVGV4dHVyZUxPRDohMX0sdGhpcy5kZWZhdWx0QXR0cmlidXRlVmFsdWVzPXtjb2xvcjpbMSwxLDFdLHV2OlswLDBdLHV2MjpbMCwwXX0sdGhpcy5pbmRleDBBdHRyaWJ1dGVOYW1lPXZvaWQgMCx0aGlzLnVuaWZvcm1zTmVlZFVwZGF0ZT0hMSx0aGlzLmdsc2xWZXJzaW9uPW51bGwsdm9pZCAwIT09dCYmKHZvaWQgMCE9PXQuYXR0cmlidXRlcyYmY29uc29sZS5lcnJvcigiVEhSRUUuU2hhZGVyTWF0ZXJpYWw6IGF0dHJpYnV0ZXMgc2hvdWxkIG5vdyBiZSBkZWZpbmVkIGluIFRIUkVFLkJ1ZmZlckdlb21ldHJ5IGluc3RlYWQuIiksdGhpcy5zZXRWYWx1ZXModCkpfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5mcmFnbWVudFNoYWRlcj10LmZyYWdtZW50U2hhZGVyLHRoaXMudmVydGV4U2hhZGVyPXQudmVydGV4U2hhZGVyLHRoaXMudW5pZm9ybXM9RWN0KHQudW5pZm9ybXMpLHRoaXMuZGVmaW5lcz1PYmplY3QuYXNzaWduKHt9LHQuZGVmaW5lcyksdGhpcy53aXJlZnJhbWU9dC53aXJlZnJhbWUsdGhpcy53aXJlZnJhbWVMaW5ld2lkdGg9dC53aXJlZnJhbWVMaW5ld2lkdGgsdGhpcy5saWdodHM9dC5saWdodHMsdGhpcy5jbGlwcGluZz10LmNsaXBwaW5nLHRoaXMuZXh0ZW5zaW9ucz1PYmplY3QuYXNzaWduKHt9LHQuZXh0ZW5zaW9ucyksdGhpcy5nbHNsVmVyc2lvbj10Lmdsc2xWZXJzaW9uLHRoaXN9dG9KU09OKHQpe2NvbnN0IGU9c3VwZXIudG9KU09OKHQpO2UuZ2xzbFZlcnNpb249dGhpcy5nbHNsVmVyc2lvbixlLnVuaWZvcm1zPXt9O2Zvcihjb25zdCBuIGluIHRoaXMudW5pZm9ybXMpe2NvbnN0IG89dGhpcy51bmlmb3Jtc1tuXS52YWx1ZTtlLnVuaWZvcm1zW25dPW8mJm8uaXNUZXh0dXJlP3t0eXBlOiJ0Iix2YWx1ZTpvLnRvSlNPTih0KS51dWlkfTpvJiZvLmlzQ29sb3I/e3R5cGU6ImMiLHZhbHVlOm8uZ2V0SGV4KCl9Om8mJm8uaXNWZWN0b3IyP3t0eXBlOiJ2MiIsdmFsdWU6by50b0FycmF5KCl9Om8mJm8uaXNWZWN0b3IzP3t0eXBlOiJ2MyIsdmFsdWU6by50b0FycmF5KCl9Om8mJm8uaXNWZWN0b3I0P3t0eXBlOiJ2NCIsdmFsdWU6by50b0FycmF5KCl9Om8mJm8uaXNNYXRyaXgzP3t0eXBlOiJtMyIsdmFsdWU6by50b0FycmF5KCl9Om8mJm8uaXNNYXRyaXg0P3t0eXBlOiJtNCIsdmFsdWU6by50b0FycmF5KCl9Ont2YWx1ZTpvfX1PYmplY3Qua2V5cyh0aGlzLmRlZmluZXMpLmxlbmd0aD4wJiYoZS5kZWZpbmVzPXRoaXMuZGVmaW5lcyksZS52ZXJ0ZXhTaGFkZXI9dGhpcy52ZXJ0ZXhTaGFkZXIsZS5mcmFnbWVudFNoYWRlcj10aGlzLmZyYWdtZW50U2hhZGVyO2NvbnN0IG49e307Zm9yKGNvbnN0IHQgaW4gdGhpcy5leHRlbnNpb25zKSEwPT09dGhpcy5leHRlbnNpb25zW3RdJiYoblt0XT0hMCk7cmV0dXJuIE9iamVjdC5rZXlzKG4pLmxlbmd0aD4wJiYoZS5leHRlbnNpb25zPW4pLGV9fU5jdC5wcm90b3R5cGUuaXNTaGFkZXJNYXRlcmlhbD0hMDtjbGFzcyB6Y3QgZXh0ZW5kcyBTbHR7Y29uc3RydWN0b3IoKXtzdXBlcigpLHRoaXMudHlwZT0iQ2FtZXJhIix0aGlzLm1hdHJpeFdvcmxkSW52ZXJzZT1uZXcgb2x0LHRoaXMucHJvamVjdGlvbk1hdHJpeD1uZXcgb2x0LHRoaXMucHJvamVjdGlvbk1hdHJpeEludmVyc2U9bmV3IG9sdH1jb3B5KHQsZSl7cmV0dXJuIHN1cGVyLmNvcHkodCxlKSx0aGlzLm1hdHJpeFdvcmxkSW52ZXJzZS5jb3B5KHQubWF0cml4V29ybGRJbnZlcnNlKSx0aGlzLnByb2plY3Rpb25NYXRyaXguY29weSh0LnByb2plY3Rpb25NYXRyaXgpLHRoaXMucHJvamVjdGlvbk1hdHJpeEludmVyc2UuY29weSh0LnByb2plY3Rpb25NYXRyaXhJbnZlcnNlKSx0aGlzfWdldFdvcmxkRGlyZWN0aW9uKHQpe3RoaXMudXBkYXRlV29ybGRNYXRyaXgoITAsITEpO2NvbnN0IGU9dGhpcy5tYXRyaXhXb3JsZC5lbGVtZW50cztyZXR1cm4gdC5zZXQoLWVbOF0sLWVbOV0sLWVbMTBdKS5ub3JtYWxpemUoKX11cGRhdGVNYXRyaXhXb3JsZCh0KXtzdXBlci51cGRhdGVNYXRyaXhXb3JsZCh0KSx0aGlzLm1hdHJpeFdvcmxkSW52ZXJzZS5jb3B5KHRoaXMubWF0cml4V29ybGQpLmludmVydCgpfXVwZGF0ZVdvcmxkTWF0cml4KHQsZSl7c3VwZXIudXBkYXRlV29ybGRNYXRyaXgodCxlKSx0aGlzLm1hdHJpeFdvcmxkSW52ZXJzZS5jb3B5KHRoaXMubWF0cml4V29ybGQpLmludmVydCgpfWNsb25lKCl7cmV0dXJuKG5ldyB0aGlzLmNvbnN0cnVjdG9yKS5jb3B5KHRoaXMpfX16Y3QucHJvdG90eXBlLmlzQ2FtZXJhPSEwO2NsYXNzIEljdCBleHRlbmRzIHpjdHtjb25zdHJ1Y3Rvcih0PTUwLGU9MSxuPS4xLG89MmUzKXtzdXBlcigpLHRoaXMudHlwZT0iUGVyc3BlY3RpdmVDYW1lcmEiLHRoaXMuZm92PXQsdGhpcy56b29tPTEsdGhpcy5uZWFyPW4sdGhpcy5mYXI9byx0aGlzLmZvY3VzPTEwLHRoaXMuYXNwZWN0PWUsdGhpcy52aWV3PW51bGwsdGhpcy5maWxtR2F1Z2U9MzUsdGhpcy5maWxtT2Zmc2V0PTAsdGhpcy51cGRhdGVQcm9qZWN0aW9uTWF0cml4KCl9Y29weSh0LGUpe3JldHVybiBzdXBlci5jb3B5KHQsZSksdGhpcy5mb3Y9dC5mb3YsdGhpcy56b29tPXQuem9vbSx0aGlzLm5lYXI9dC5uZWFyLHRoaXMuZmFyPXQuZmFyLHRoaXMuZm9jdXM9dC5mb2N1cyx0aGlzLmFzcGVjdD10LmFzcGVjdCx0aGlzLnZpZXc9bnVsbD09PXQudmlldz9udWxsOk9iamVjdC5hc3NpZ24oe30sdC52aWV3KSx0aGlzLmZpbG1HYXVnZT10LmZpbG1HYXVnZSx0aGlzLmZpbG1PZmZzZXQ9dC5maWxtT2Zmc2V0LHRoaXN9c2V0Rm9jYWxMZW5ndGgodCl7Y29uc3QgZT0uNSp0aGlzLmdldEZpbG1IZWlnaHQoKS90O3RoaXMuZm92PTIqY3N0Kk1hdGguYXRhbihlKSx0aGlzLnVwZGF0ZVByb2plY3Rpb25NYXRyaXgoKX1nZXRGb2NhbExlbmd0aCgpe2NvbnN0IHQ9TWF0aC50YW4oLjUqbHN0KnRoaXMuZm92KTtyZXR1cm4uNSp0aGlzLmdldEZpbG1IZWlnaHQoKS90fWdldEVmZmVjdGl2ZUZPVigpe3JldHVybiAyKmNzdCpNYXRoLmF0YW4oTWF0aC50YW4oLjUqbHN0KnRoaXMuZm92KS90aGlzLnpvb20pfWdldEZpbG1XaWR0aCgpe3JldHVybiB0aGlzLmZpbG1HYXVnZSpNYXRoLm1pbih0aGlzLmFzcGVjdCwxKX1nZXRGaWxtSGVpZ2h0KCl7cmV0dXJuIHRoaXMuZmlsbUdhdWdlL01hdGgubWF4KHRoaXMuYXNwZWN0LDEpfXNldFZpZXdPZmZzZXQodCxlLG4sbyxpLGEpe3RoaXMuYXNwZWN0PXQvZSxudWxsPT09dGhpcy52aWV3JiYodGhpcy52aWV3PXtlbmFibGVkOiEwLGZ1bGxXaWR0aDoxLGZ1bGxIZWlnaHQ6MSxvZmZzZXRYOjAsb2Zmc2V0WTowLHdpZHRoOjEsaGVpZ2h0OjF9KSx0aGlzLnZpZXcuZW5hYmxlZD0hMCx0aGlzLnZpZXcuZnVsbFdpZHRoPXQsdGhpcy52aWV3LmZ1bGxIZWlnaHQ9ZSx0aGlzLnZpZXcub2Zmc2V0WD1uLHRoaXMudmlldy5vZmZzZXRZPW8sdGhpcy52aWV3LndpZHRoPWksdGhpcy52aWV3LmhlaWdodD1hLHRoaXMudXBkYXRlUHJvamVjdGlvbk1hdHJpeCgpfWNsZWFyVmlld09mZnNldCgpe251bGwhPT10aGlzLnZpZXcmJih0aGlzLnZpZXcuZW5hYmxlZD0hMSksdGhpcy51cGRhdGVQcm9qZWN0aW9uTWF0cml4KCl9dXBkYXRlUHJvamVjdGlvbk1hdHJpeCgpe2NvbnN0IHQ9dGhpcy5uZWFyO2xldCBlPXQqTWF0aC50YW4oLjUqbHN0KnRoaXMuZm92KS90aGlzLnpvb20sbj0yKmUsbz10aGlzLmFzcGVjdCpuLGk9LS41Km87Y29uc3QgYT10aGlzLnZpZXc7aWYobnVsbCE9PXRoaXMudmlldyYmdGhpcy52aWV3LmVuYWJsZWQpe2NvbnN0IHQ9YS5mdWxsV2lkdGgscj1hLmZ1bGxIZWlnaHQ7aSs9YS5vZmZzZXRYKm8vdCxlLT1hLm9mZnNldFkqbi9yLG8qPWEud2lkdGgvdCxuKj1hLmhlaWdodC9yfWNvbnN0IHI9dGhpcy5maWxtT2Zmc2V0OzAhPT1yJiYoaSs9dCpyL3RoaXMuZ2V0RmlsbVdpZHRoKCkpLHRoaXMucHJvamVjdGlvbk1hdHJpeC5tYWtlUGVyc3BlY3RpdmUoaSxpK28sZSxlLW4sdCx0aGlzLmZhciksdGhpcy5wcm9qZWN0aW9uTWF0cml4SW52ZXJzZS5jb3B5KHRoaXMucHJvamVjdGlvbk1hdHJpeCkuaW52ZXJ0KCl9dG9KU09OKHQpe2NvbnN0IGU9c3VwZXIudG9KU09OKHQpO3JldHVybiBlLm9iamVjdC5mb3Y9dGhpcy5mb3YsZS5vYmplY3Quem9vbT10aGlzLnpvb20sZS5vYmplY3QubmVhcj10aGlzLm5lYXIsZS5vYmplY3QuZmFyPXRoaXMuZmFyLGUub2JqZWN0LmZvY3VzPXRoaXMuZm9jdXMsZS5vYmplY3QuYXNwZWN0PXRoaXMuYXNwZWN0LG51bGwhPT10aGlzLnZpZXcmJihlLm9iamVjdC52aWV3PU9iamVjdC5hc3NpZ24oe30sdGhpcy52aWV3KSksZS5vYmplY3QuZmlsbUdhdWdlPXRoaXMuZmlsbUdhdWdlLGUub2JqZWN0LmZpbG1PZmZzZXQ9dGhpcy5maWxtT2Zmc2V0LGV9fUljdC5wcm90b3R5cGUuaXNQZXJzcGVjdGl2ZUNhbWVyYT0hMDtjb25zdCBIY3Q9OTA7Y2xhc3MgRmN0IGV4dGVuZHMgU2x0e2NvbnN0cnVjdG9yKHQsZSxuKXtpZihzdXBlcigpLHRoaXMudHlwZT0iQ3ViZUNhbWVyYSIsITAhPT1uLmlzV2ViR0xDdWJlUmVuZGVyVGFyZ2V0KXJldHVybiB2b2lkIGNvbnNvbGUuZXJyb3IoIlRIUkVFLkN1YmVDYW1lcmE6IFRoZSBjb25zdHJ1Y3RvciBub3cgZXhwZWN0cyBhbiBpbnN0YW5jZSBvZiBXZWJHTEN1YmVSZW5kZXJUYXJnZXQgYXMgdGhpcmQgcGFyYW1ldGVyLiIpO3RoaXMucmVuZGVyVGFyZ2V0PW47Y29uc3Qgbz1uZXcgSWN0KEhjdCwxLHQsZSk7by5sYXllcnM9dGhpcy5sYXllcnMsby51cC5zZXQoMCwtMSwwKSxvLmxvb2tBdChuZXcgd3N0KDEsMCwwKSksdGhpcy5hZGQobyk7Y29uc3QgaT1uZXcgSWN0KEhjdCwxLHQsZSk7aS5sYXllcnM9dGhpcy5sYXllcnMsaS51cC5zZXQoMCwtMSwwKSxpLmxvb2tBdChuZXcgd3N0KC0xLDAsMCkpLHRoaXMuYWRkKGkpO2NvbnN0IGE9bmV3IEljdChIY3QsMSx0LGUpO2EubGF5ZXJzPXRoaXMubGF5ZXJzLGEudXAuc2V0KDAsMCwxKSxhLmxvb2tBdChuZXcgd3N0KDAsMSwwKSksdGhpcy5hZGQoYSk7Y29uc3Qgcj1uZXcgSWN0KEhjdCwxLHQsZSk7ci5sYXllcnM9dGhpcy5sYXllcnMsci51cC5zZXQoMCwwLC0xKSxyLmxvb2tBdChuZXcgd3N0KDAsLTEsMCkpLHRoaXMuYWRkKHIpO2NvbnN0IHM9bmV3IEljdChIY3QsMSx0LGUpO3MubGF5ZXJzPXRoaXMubGF5ZXJzLHMudXAuc2V0KDAsLTEsMCkscy5sb29rQXQobmV3IHdzdCgwLDAsMSkpLHRoaXMuYWRkKHMpO2NvbnN0IGw9bmV3IEljdChIY3QsMSx0LGUpO2wubGF5ZXJzPXRoaXMubGF5ZXJzLGwudXAuc2V0KDAsLTEsMCksbC5sb29rQXQobmV3IHdzdCgwLDAsLTEpKSx0aGlzLmFkZChsKX11cGRhdGUodCxlKXtudWxsPT09dGhpcy5wYXJlbnQmJnRoaXMudXBkYXRlTWF0cml4V29ybGQoKTtjb25zdCBuPXRoaXMucmVuZGVyVGFyZ2V0LFtvLGksYSxyLHMsbF09dGhpcy5jaGlsZHJlbixjPXQueHIuZW5hYmxlZCxkPXQuZ2V0UmVuZGVyVGFyZ2V0KCk7dC54ci5lbmFibGVkPSExO2NvbnN0IHA9bi50ZXh0dXJlLmdlbmVyYXRlTWlwbWFwcztuLnRleHR1cmUuZ2VuZXJhdGVNaXBtYXBzPSExLHQuc2V0UmVuZGVyVGFyZ2V0KG4sMCksdC5yZW5kZXIoZSxvKSx0LnNldFJlbmRlclRhcmdldChuLDEpLHQucmVuZGVyKGUsaSksdC5zZXRSZW5kZXJUYXJnZXQobiwyKSx0LnJlbmRlcihlLGEpLHQuc2V0UmVuZGVyVGFyZ2V0KG4sMyksdC5yZW5kZXIoZSxyKSx0LnNldFJlbmRlclRhcmdldChuLDQpLHQucmVuZGVyKGUscyksbi50ZXh0dXJlLmdlbmVyYXRlTWlwbWFwcz1wLHQuc2V0UmVuZGVyVGFyZ2V0KG4sNSksdC5yZW5kZXIoZSxsKSx0LnNldFJlbmRlclRhcmdldChkKSx0LnhyLmVuYWJsZWQ9Y319Y2xhc3MgTGN0IGV4dGVuZHMgQ3N0e2NvbnN0cnVjdG9yKHQsZSxuLG8saSxhLHIscyxsLGMpe3N1cGVyKHQ9dm9pZCAwIT09dD90OltdLGU9dm9pZCAwIT09ZT9lOndydCxuLG8saSxhLHI9dm9pZCAwIT09cj9yOlZydCxzLGwsYyksdGhpcy5mbGlwWT0hMX1nZXQgaW1hZ2VzKCl7cmV0dXJuIHRoaXMuaW1hZ2V9c2V0IGltYWdlcyh0KXt0aGlzLmltYWdlPXR9fUxjdC5wcm90b3R5cGUuaXNDdWJlVGV4dHVyZT0hMDtjbGFzcyBCY3QgZXh0ZW5kcyB4c3R7Y29uc3RydWN0b3IodCxlLG4pe051bWJlci5pc0ludGVnZXIoZSkmJihjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMQ3ViZVJlbmRlclRhcmdldDogY29uc3RydWN0b3Igc2lnbmF0dXJlIGlzIG5vdyBXZWJHTEN1YmVSZW5kZXJUYXJnZXQoIHNpemUsIG9wdGlvbnMgKSIpLGU9biksc3VwZXIodCx0LGUpLHRoaXMudGV4dHVyZT1uZXcgTGN0KHZvaWQgMCwoZT1lfHx7fSkubWFwcGluZyxlLndyYXBTLGUud3JhcFQsZS5tYWdGaWx0ZXIsZS5taW5GaWx0ZXIsZS5mb3JtYXQsZS50eXBlLGUuYW5pc290cm9weSxlLmVuY29kaW5nKSx0aGlzLnRleHR1cmUuaXNSZW5kZXJUYXJnZXRUZXh0dXJlPSEwLHRoaXMudGV4dHVyZS5nZW5lcmF0ZU1pcG1hcHM9dm9pZCAwIT09ZS5nZW5lcmF0ZU1pcG1hcHMmJmUuZ2VuZXJhdGVNaXBtYXBzLHRoaXMudGV4dHVyZS5taW5GaWx0ZXI9dm9pZCAwIT09ZS5taW5GaWx0ZXI/ZS5taW5GaWx0ZXI6VHJ0LHRoaXMudGV4dHVyZS5fbmVlZHNGbGlwRW52TWFwPSExfWZyb21FcXVpcmVjdGFuZ3VsYXJUZXh0dXJlKHQsZSl7dGhpcy50ZXh0dXJlLnR5cGU9ZS50eXBlLHRoaXMudGV4dHVyZS5mb3JtYXQ9anJ0LHRoaXMudGV4dHVyZS5lbmNvZGluZz1lLmVuY29kaW5nLHRoaXMudGV4dHVyZS5nZW5lcmF0ZU1pcG1hcHM9ZS5nZW5lcmF0ZU1pcG1hcHMsdGhpcy50ZXh0dXJlLm1pbkZpbHRlcj1lLm1pbkZpbHRlcix0aGlzLnRleHR1cmUubWFnRmlsdGVyPWUubWFnRmlsdGVyO2NvbnN0IG49e3VuaWZvcm1zOnt0RXF1aXJlY3Q6e3ZhbHVlOm51bGx9fSx2ZXJ0ZXhTaGFkZXI6IlxuXG5cdFx0XHRcdHZhcnlpbmcgdmVjMyB2V29ybGREaXJlY3Rpb247XG5cblx0XHRcdFx0dmVjMyB0cmFuc2Zvcm1EaXJlY3Rpb24oIGluIHZlYzMgZGlyLCBpbiBtYXQ0IG1hdHJpeCApIHtcblxuXHRcdFx0XHRcdHJldHVybiBub3JtYWxpemUoICggbWF0cml4ICogdmVjNCggZGlyLCAwLjAgKSApLnh5eiApO1xuXG5cdFx0XHRcdH1cblxuXHRcdFx0XHR2b2lkIG1haW4oKSB7XG5cblx0XHRcdFx0XHR2V29ybGREaXJlY3Rpb24gPSB0cmFuc2Zvcm1EaXJlY3Rpb24oIHBvc2l0aW9uLCBtb2RlbE1hdHJpeCApO1xuXG5cdFx0XHRcdFx0I2luY2x1ZGUgPGJlZ2luX3ZlcnRleD5cblx0XHRcdFx0XHQjaW5jbHVkZSA8cHJvamVjdF92ZXJ0ZXg+XG5cblx0XHRcdFx0fVxuXHRcdFx0IixmcmFnbWVudFNoYWRlcjoiXG5cblx0XHRcdFx0dW5pZm9ybSBzYW1wbGVyMkQgdEVxdWlyZWN0O1xuXG5cdFx0XHRcdHZhcnlpbmcgdmVjMyB2V29ybGREaXJlY3Rpb247XG5cblx0XHRcdFx0I2luY2x1ZGUgPGNvbW1vbj5cblxuXHRcdFx0XHR2b2lkIG1haW4oKSB7XG5cblx0XHRcdFx0XHR2ZWMzIGRpcmVjdGlvbiA9IG5vcm1hbGl6ZSggdldvcmxkRGlyZWN0aW9uICk7XG5cblx0XHRcdFx0XHR2ZWMyIHNhbXBsZVVWID0gZXF1aXJlY3RVdiggZGlyZWN0aW9uICk7XG5cblx0XHRcdFx0XHRnbF9GcmFnQ29sb3IgPSB0ZXh0dXJlMkQoIHRFcXVpcmVjdCwgc2FtcGxlVVYgKTtcblxuXHRcdFx0XHR9XG5cdFx0XHQifSxvPW5ldyBSY3QoNSw1LDUpLGk9bmV3IE5jdCh7bmFtZToiQ3ViZW1hcEZyb21FcXVpcmVjdCIsdW5pZm9ybXM6RWN0KG4udW5pZm9ybXMpLHZlcnRleFNoYWRlcjpuLnZlcnRleFNoYWRlcixmcmFnbWVudFNoYWRlcjpuLmZyYWdtZW50U2hhZGVyLHNpZGU6MSxibGVuZGluZzowfSk7aS51bmlmb3Jtcy50RXF1aXJlY3QudmFsdWU9ZTtjb25zdCBhPW5ldyBTY3QobyxpKSxyPWUubWluRmlsdGVyO2UubWluRmlsdGVyPT09TnJ0JiYoZS5taW5GaWx0ZXI9VHJ0KTtyZXR1cm4gbmV3IEZjdCgxLDEwLHRoaXMpLnVwZGF0ZSh0LGEpLGUubWluRmlsdGVyPXIsYS5nZW9tZXRyeS5kaXNwb3NlKCksYS5tYXRlcmlhbC5kaXNwb3NlKCksdGhpc31jbGVhcih0LGUsbixvKXtjb25zdCBpPXQuZ2V0UmVuZGVyVGFyZ2V0KCk7Zm9yKGxldCBpPTA7aTw2O2krKyl0LnNldFJlbmRlclRhcmdldCh0aGlzLGkpLHQuY2xlYXIoZSxuLG8pO3Quc2V0UmVuZGVyVGFyZ2V0KGkpfX1CY3QucHJvdG90eXBlLmlzV2ViR0xDdWJlUmVuZGVyVGFyZ2V0PSEwO2NvbnN0IFZjdD1uZXcgd3N0LGpjdD1uZXcgd3N0LFVjdD1uZXcgaHN0O2NsYXNzIFdjdHtjb25zdHJ1Y3Rvcih0PW5ldyB3c3QoMSwwLDApLGU9MCl7dGhpcy5ub3JtYWw9dCx0aGlzLmNvbnN0YW50PWV9c2V0KHQsZSl7cmV0dXJuIHRoaXMubm9ybWFsLmNvcHkodCksdGhpcy5jb25zdGFudD1lLHRoaXN9c2V0Q29tcG9uZW50cyh0LGUsbixvKXtyZXR1cm4gdGhpcy5ub3JtYWwuc2V0KHQsZSxuKSx0aGlzLmNvbnN0YW50PW8sdGhpc31zZXRGcm9tTm9ybWFsQW5kQ29wbGFuYXJQb2ludCh0LGUpe3JldHVybiB0aGlzLm5vcm1hbC5jb3B5KHQpLHRoaXMuY29uc3RhbnQ9LWUuZG90KHRoaXMubm9ybWFsKSx0aGlzfXNldEZyb21Db3BsYW5hclBvaW50cyh0LGUsbil7Y29uc3Qgbz1WY3Quc3ViVmVjdG9ycyhuLGUpLmNyb3NzKGpjdC5zdWJWZWN0b3JzKHQsZSkpLm5vcm1hbGl6ZSgpO3JldHVybiB0aGlzLnNldEZyb21Ob3JtYWxBbmRDb3BsYW5hclBvaW50KG8sdCksdGhpc31jb3B5KHQpe3JldHVybiB0aGlzLm5vcm1hbC5jb3B5KHQubm9ybWFsKSx0aGlzLmNvbnN0YW50PXQuY29uc3RhbnQsdGhpc31ub3JtYWxpemUoKXtjb25zdCB0PTEvdGhpcy5ub3JtYWwubGVuZ3RoKCk7cmV0dXJuIHRoaXMubm9ybWFsLm11bHRpcGx5U2NhbGFyKHQpLHRoaXMuY29uc3RhbnQqPXQsdGhpc31uZWdhdGUoKXtyZXR1cm4gdGhpcy5jb25zdGFudCo9LTEsdGhpcy5ub3JtYWwubmVnYXRlKCksdGhpc31kaXN0YW5jZVRvUG9pbnQodCl7cmV0dXJuIHRoaXMubm9ybWFsLmRvdCh0KSt0aGlzLmNvbnN0YW50fWRpc3RhbmNlVG9TcGhlcmUodCl7cmV0dXJuIHRoaXMuZGlzdGFuY2VUb1BvaW50KHQuY2VudGVyKS10LnJhZGl1c31wcm9qZWN0UG9pbnQodCxlKXtyZXR1cm4gZS5jb3B5KHRoaXMubm9ybWFsKS5tdWx0aXBseVNjYWxhcigtdGhpcy5kaXN0YW5jZVRvUG9pbnQodCkpLmFkZCh0KX1pbnRlcnNlY3RMaW5lKHQsZSl7Y29uc3Qgbj10LmRlbHRhKFZjdCksbz10aGlzLm5vcm1hbC5kb3Qobik7aWYoMD09PW8pcmV0dXJuIDA9PT10aGlzLmRpc3RhbmNlVG9Qb2ludCh0LnN0YXJ0KT9lLmNvcHkodC5zdGFydCk6bnVsbDtjb25zdCBpPS0odC5zdGFydC5kb3QodGhpcy5ub3JtYWwpK3RoaXMuY29uc3RhbnQpL287cmV0dXJuIGk8MHx8aT4xP251bGw6ZS5jb3B5KG4pLm11bHRpcGx5U2NhbGFyKGkpLmFkZCh0LnN0YXJ0KX1pbnRlcnNlY3RzTGluZSh0KXtjb25zdCBlPXRoaXMuZGlzdGFuY2VUb1BvaW50KHQuc3RhcnQpLG49dGhpcy5kaXN0YW5jZVRvUG9pbnQodC5lbmQpO3JldHVybiBlPDAmJm4+MHx8bjwwJiZlPjB9aW50ZXJzZWN0c0JveCh0KXtyZXR1cm4gdC5pbnRlcnNlY3RzUGxhbmUodGhpcyl9aW50ZXJzZWN0c1NwaGVyZSh0KXtyZXR1cm4gdC5pbnRlcnNlY3RzUGxhbmUodGhpcyl9Y29wbGFuYXJQb2ludCh0KXtyZXR1cm4gdC5jb3B5KHRoaXMubm9ybWFsKS5tdWx0aXBseVNjYWxhcigtdGhpcy5jb25zdGFudCl9YXBwbHlNYXRyaXg0KHQsZSl7Y29uc3Qgbj1lfHxVY3QuZ2V0Tm9ybWFsTWF0cml4KHQpLG89dGhpcy5jb3BsYW5hclBvaW50KFZjdCkuYXBwbHlNYXRyaXg0KHQpLGk9dGhpcy5ub3JtYWwuYXBwbHlNYXRyaXgzKG4pLm5vcm1hbGl6ZSgpO3JldHVybiB0aGlzLmNvbnN0YW50PS1vLmRvdChpKSx0aGlzfXRyYW5zbGF0ZSh0KXtyZXR1cm4gdGhpcy5jb25zdGFudC09dC5kb3QodGhpcy5ub3JtYWwpLHRoaXN9ZXF1YWxzKHQpe3JldHVybiB0Lm5vcm1hbC5lcXVhbHModGhpcy5ub3JtYWwpJiZ0LmNvbnN0YW50PT09dGhpcy5jb25zdGFudH1jbG9uZSgpe3JldHVybihuZXcgdGhpcy5jb25zdHJ1Y3RvcikuY29weSh0aGlzKX19V2N0LnByb3RvdHlwZS5pc1BsYW5lPSEwO2NvbnN0IEdjdD1uZXcgWnN0LFljdD1uZXcgd3N0O2NsYXNzIHFjdHtjb25zdHJ1Y3Rvcih0PW5ldyBXY3QsZT1uZXcgV2N0LG49bmV3IFdjdCxvPW5ldyBXY3QsaT1uZXcgV2N0LGE9bmV3IFdjdCl7dGhpcy5wbGFuZXM9W3QsZSxuLG8saSxhXX1zZXQodCxlLG4sbyxpLGEpe2NvbnN0IHI9dGhpcy5wbGFuZXM7cmV0dXJuIHJbMF0uY29weSh0KSxyWzFdLmNvcHkoZSksclsyXS5jb3B5KG4pLHJbM10uY29weShvKSxyWzRdLmNvcHkoaSkscls1XS5jb3B5KGEpLHRoaXN9Y29weSh0KXtjb25zdCBlPXRoaXMucGxhbmVzO2ZvcihsZXQgbj0wO248NjtuKyspZVtuXS5jb3B5KHQucGxhbmVzW25dKTtyZXR1cm4gdGhpc31zZXRGcm9tUHJvamVjdGlvbk1hdHJpeCh0KXtjb25zdCBlPXRoaXMucGxhbmVzLG49dC5lbGVtZW50cyxvPW5bMF0saT1uWzFdLGE9blsyXSxyPW5bM10scz1uWzRdLGw9bls1XSxjPW5bNl0sZD1uWzddLHA9bls4XSxtPW5bOV0sZj1uWzEwXSx1PW5bMTFdLGc9blsxMl0saD1uWzEzXSxiPW5bMTRdLHk9blsxNV07cmV0dXJuIGVbMF0uc2V0Q29tcG9uZW50cyhyLW8sZC1zLHUtcCx5LWcpLm5vcm1hbGl6ZSgpLGVbMV0uc2V0Q29tcG9uZW50cyhyK28sZCtzLHUrcCx5K2cpLm5vcm1hbGl6ZSgpLGVbMl0uc2V0Q29tcG9uZW50cyhyK2ksZCtsLHUrbSx5K2gpLm5vcm1hbGl6ZSgpLGVbM10uc2V0Q29tcG9uZW50cyhyLWksZC1sLHUtbSx5LWgpLm5vcm1hbGl6ZSgpLGVbNF0uc2V0Q29tcG9uZW50cyhyLWEsZC1jLHUtZix5LWIpLm5vcm1hbGl6ZSgpLGVbNV0uc2V0Q29tcG9uZW50cyhyK2EsZCtjLHUrZix5K2IpLm5vcm1hbGl6ZSgpLHRoaXN9aW50ZXJzZWN0c09iamVjdCh0KXtjb25zdCBlPXQuZ2VvbWV0cnk7cmV0dXJuIG51bGw9PT1lLmJvdW5kaW5nU3BoZXJlJiZlLmNvbXB1dGVCb3VuZGluZ1NwaGVyZSgpLEdjdC5jb3B5KGUuYm91bmRpbmdTcGhlcmUpLmFwcGx5TWF0cml4NCh0Lm1hdHJpeFdvcmxkKSx0aGlzLmludGVyc2VjdHNTcGhlcmUoR2N0KX1pbnRlcnNlY3RzU3ByaXRlKHQpe3JldHVybiBHY3QuY2VudGVyLnNldCgwLDAsMCksR2N0LnJhZGl1cz0uNzA3MTA2NzgxMTg2NTQ3NixHY3QuYXBwbHlNYXRyaXg0KHQubWF0cml4V29ybGQpLHRoaXMuaW50ZXJzZWN0c1NwaGVyZShHY3QpfWludGVyc2VjdHNTcGhlcmUodCl7Y29uc3QgZT10aGlzLnBsYW5lcyxuPXQuY2VudGVyLG89LXQucmFkaXVzO2ZvcihsZXQgdD0wO3Q8Njt0Kyspe2lmKGVbdF0uZGlzdGFuY2VUb1BvaW50KG4pPG8pcmV0dXJuITF9cmV0dXJuITB9aW50ZXJzZWN0c0JveCh0KXtjb25zdCBlPXRoaXMucGxhbmVzO2ZvcihsZXQgbj0wO248NjtuKyspe2NvbnN0IG89ZVtuXTtpZihZY3QueD1vLm5vcm1hbC54PjA/dC5tYXgueDp0Lm1pbi54LFljdC55PW8ubm9ybWFsLnk+MD90Lm1heC55OnQubWluLnksWWN0Lno9by5ub3JtYWwuej4wP3QubWF4Lno6dC5taW4ueixvLmRpc3RhbmNlVG9Qb2ludChZY3QpPDApcmV0dXJuITF9cmV0dXJuITB9Y29udGFpbnNQb2ludCh0KXtjb25zdCBlPXRoaXMucGxhbmVzO2ZvcihsZXQgbj0wO248NjtuKyspaWYoZVtuXS5kaXN0YW5jZVRvUG9pbnQodCk8MClyZXR1cm4hMTtyZXR1cm4hMH1jbG9uZSgpe3JldHVybihuZXcgdGhpcy5jb25zdHJ1Y3RvcikuY29weSh0aGlzKX19ZnVuY3Rpb24gWmN0KCl7bGV0IHQ9bnVsbCxlPSExLG49bnVsbCxvPW51bGw7ZnVuY3Rpb24gaShlLGEpe24oZSxhKSxvPXQucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGkpfXJldHVybntzdGFydDpmdW5jdGlvbigpeyEwIT09ZSYmbnVsbCE9PW4mJihvPXQucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGkpLGU9ITApfSxzdG9wOmZ1bmN0aW9uKCl7dC5jYW5jZWxBbmltYXRpb25GcmFtZShvKSxlPSExfSxzZXRBbmltYXRpb25Mb29wOmZ1bmN0aW9uKHQpe249dH0sc2V0Q29udGV4dDpmdW5jdGlvbihlKXt0PWV9fX1mdW5jdGlvbiBYY3QodCxlKXtjb25zdCBuPWUuaXNXZWJHTDIsbz1uZXcgV2Vha01hcDtyZXR1cm57Z2V0OmZ1bmN0aW9uIGkodCl7cmV0dXJuIHQuaXNJbnRlcmxlYXZlZEJ1ZmZlckF0dHJpYnV0ZSYmKHQ9dC5kYXRhKSxvLmdldCh0KX0scmVtb3ZlOmZ1bmN0aW9uIGEoZSl7ZS5pc0ludGVybGVhdmVkQnVmZmVyQXR0cmlidXRlJiYoZT1lLmRhdGEpO2NvbnN0IG49by5nZXQoZSk7biYmKHQuZGVsZXRlQnVmZmVyKG4uYnVmZmVyKSxvLmRlbGV0ZShlKSl9LHVwZGF0ZTpmdW5jdGlvbiByKGUsaSl7aWYoZS5pc0dMQnVmZmVyQXR0cmlidXRlKXtjb25zdCB0PW8uZ2V0KGUpO3JldHVybiB2b2lkKCghdHx8dC52ZXJzaW9uPGUudmVyc2lvbikmJm8uc2V0KGUse2J1ZmZlcjplLmJ1ZmZlcix0eXBlOmUudHlwZSxieXRlc1BlckVsZW1lbnQ6ZS5lbGVtZW50U2l6ZSx2ZXJzaW9uOmUudmVyc2lvbn0pKX1lLmlzSW50ZXJsZWF2ZWRCdWZmZXJBdHRyaWJ1dGUmJihlPWUuZGF0YSk7Y29uc3QgYT1vLmdldChlKTt2b2lkIDA9PT1hP28uc2V0KGUsKGZ1bmN0aW9uIHIoZSxvKXtjb25zdCBpPWUuYXJyYXksYT1lLnVzYWdlLHI9dC5jcmVhdGVCdWZmZXIoKTt0LmJpbmRCdWZmZXIobyxyKSx0LmJ1ZmZlckRhdGEobyxpLGEpLGUub25VcGxvYWRDYWxsYmFjaygpO2xldCBzPTUxMjY7cmV0dXJuIGkgaW5zdGFuY2VvZiBGbG9hdDMyQXJyYXk/cz01MTI2OmkgaW5zdGFuY2VvZiBGbG9hdDY0QXJyYXk/Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTEF0dHJpYnV0ZXM6IFVuc3VwcG9ydGVkIGRhdGEgYnVmZmVyIGZvcm1hdDogRmxvYXQ2NEFycmF5LiIpOmkgaW5zdGFuY2VvZiBVaW50MTZBcnJheT9lLmlzRmxvYXQxNkJ1ZmZlckF0dHJpYnV0ZT9uP3M9NTEzMTpjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMQXR0cmlidXRlczogVXNhZ2Ugb2YgRmxvYXQxNkJ1ZmZlckF0dHJpYnV0ZSByZXF1aXJlcyBXZWJHTDIuIik6cz01MTIzOmkgaW5zdGFuY2VvZiBJbnQxNkFycmF5P3M9NTEyMjppIGluc3RhbmNlb2YgVWludDMyQXJyYXk/cz01MTI1OmkgaW5zdGFuY2VvZiBJbnQzMkFycmF5P3M9NTEyNDppIGluc3RhbmNlb2YgSW50OEFycmF5P3M9NTEyMDooaSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXl8fGkgaW5zdGFuY2VvZiBVaW50OENsYW1wZWRBcnJheSkmJihzPTUxMjEpLHtidWZmZXI6cix0eXBlOnMsYnl0ZXNQZXJFbGVtZW50OmkuQllURVNfUEVSX0VMRU1FTlQsdmVyc2lvbjplLnZlcnNpb259fSkoZSxpKSk6YS52ZXJzaW9uPGUudmVyc2lvbiYmKCEoZnVuY3Rpb24gcyhlLG8saSl7Y29uc3QgYT1vLmFycmF5LHI9by51cGRhdGVSYW5nZTt0LmJpbmRCdWZmZXIoaSxlKSwtMT09PXIuY291bnQ/dC5idWZmZXJTdWJEYXRhKGksMCxhKToobj90LmJ1ZmZlclN1YkRhdGEoaSxyLm9mZnNldCphLkJZVEVTX1BFUl9FTEVNRU5ULGEsci5vZmZzZXQsci5jb3VudCk6dC5idWZmZXJTdWJEYXRhKGksci5vZmZzZXQqYS5CWVRFU19QRVJfRUxFTUVOVCxhLnN1YmFycmF5KHIub2Zmc2V0LHIub2Zmc2V0K3IuY291bnQpKSxyLmNvdW50PS0xKX0pKGEuYnVmZmVyLGUsaSksYS52ZXJzaW9uPWUudmVyc2lvbil9fX1jbGFzcyBLY3QgZXh0ZW5kcyBkY3R7Y29uc3RydWN0b3IodD0xLGU9MSxuPTEsbz0xKXtzdXBlcigpLHRoaXMudHlwZT0iUGxhbmVHZW9tZXRyeSIsdGhpcy5wYXJhbWV0ZXJzPXt3aWR0aDp0LGhlaWdodDplLHdpZHRoU2VnbWVudHM6bixoZWlnaHRTZWdtZW50czpvfTtjb25zdCBpPXQvMixhPWUvMixyPU1hdGguZmxvb3Iobikscz1NYXRoLmZsb29yKG8pLGw9cisxLGM9cysxLGQ9dC9yLHA9ZS9zLG09W10sZj1bXSx1PVtdLGc9W107Zm9yKGxldCB0PTA7dDxjO3QrKyl7Y29uc3QgZT10KnAtYTtmb3IobGV0IG49MDtuPGw7bisrKXtmLnB1c2gobipkLWksLWUsMCksdS5wdXNoKDAsMCwxKSxnLnB1c2gobi9yKSxnLnB1c2goMS10L3MpfX1mb3IobGV0IHQ9MDt0PHM7dCsrKWZvcihsZXQgZT0wO2U8cjtlKyspe2NvbnN0IG49ZStsKih0KzEpLG89ZSsxK2wqKHQrMSksaT1lKzErbCp0O20ucHVzaChlK2wqdCxuLGkpLG0ucHVzaChuLG8saSl9dGhpcy5zZXRJbmRleChtKSx0aGlzLnNldEF0dHJpYnV0ZSgicG9zaXRpb24iLG5ldyBlY3QoZiwzKSksdGhpcy5zZXRBdHRyaWJ1dGUoIm5vcm1hbCIsbmV3IGVjdCh1LDMpKSx0aGlzLnNldEF0dHJpYnV0ZSgidXYiLG5ldyBlY3QoZywyKSl9c3RhdGljIGZyb21KU09OKHQpe3JldHVybiBuZXcgS2N0KHQud2lkdGgsdC5oZWlnaHQsdC53aWR0aFNlZ21lbnRzLHQuaGVpZ2h0U2VnbWVudHMpfX1jb25zdCBKY3Q9e2FscGhhbWFwX2ZyYWdtZW50OiIjaWZkZWYgVVNFX0FMUEhBTUFQXG5cdGRpZmZ1c2VDb2xvci5hICo9IHRleHR1cmUyRCggYWxwaGFNYXAsIHZVdiApLmc7XG4jZW5kaWYiLGFscGhhbWFwX3BhcnNfZnJhZ21lbnQ6IiNpZmRlZiBVU0VfQUxQSEFNQVBcblx0dW5pZm9ybSBzYW1wbGVyMkQgYWxwaGFNYXA7XG4jZW5kaWYiLGFscGhhdGVzdF9mcmFnbWVudDoiI2lmZGVmIEFMUEhBVEVTVFxuXHRpZiAoIGRpZmZ1c2VDb2xvci5hIDwgQUxQSEFURVNUICkgZGlzY2FyZDtcbiNlbmRpZiIsYW9tYXBfZnJhZ21lbnQ6IiNpZmRlZiBVU0VfQU9NQVBcblx0ZmxvYXQgYW1iaWVudE9jY2x1c2lvbiA9ICggdGV4dHVyZTJEKCBhb01hcCwgdlV2MiApLnIgLSAxLjAgKSAqIGFvTWFwSW50ZW5zaXR5ICsgMS4wO1xuXHRyZWZsZWN0ZWRMaWdodC5pbmRpcmVjdERpZmZ1c2UgKj0gYW1iaWVudE9jY2x1c2lvbjtcblx0I2lmIGRlZmluZWQoIFVTRV9FTlZNQVAgKSAmJiBkZWZpbmVkKCBTVEFOREFSRCApXG5cdFx0ZmxvYXQgZG90TlYgPSBzYXR1cmF0ZSggZG90KCBnZW9tZXRyeS5ub3JtYWwsIGdlb21ldHJ5LnZpZXdEaXIgKSApO1xuXHRcdHJlZmxlY3RlZExpZ2h0LmluZGlyZWN0U3BlY3VsYXIgKj0gY29tcHV0ZVNwZWN1bGFyT2NjbHVzaW9uKCBkb3ROViwgYW1iaWVudE9jY2x1c2lvbiwgbWF0ZXJpYWwuc3BlY3VsYXJSb3VnaG5lc3MgKTtcblx0I2VuZGlmXG4jZW5kaWYiLGFvbWFwX3BhcnNfZnJhZ21lbnQ6IiNpZmRlZiBVU0VfQU9NQVBcblx0dW5pZm9ybSBzYW1wbGVyMkQgYW9NYXA7XG5cdHVuaWZvcm0gZmxvYXQgYW9NYXBJbnRlbnNpdHk7XG4jZW5kaWYiLGJlZ2luX3ZlcnRleDoidmVjMyB0cmFuc2Zvcm1lZCA9IHZlYzMoIHBvc2l0aW9uICk7IixiZWdpbm5vcm1hbF92ZXJ0ZXg6InZlYzMgb2JqZWN0Tm9ybWFsID0gdmVjMyggbm9ybWFsICk7XG4jaWZkZWYgVVNFX1RBTkdFTlRcblx0dmVjMyBvYmplY3RUYW5nZW50ID0gdmVjMyggdGFuZ2VudC54eXogKTtcbiNlbmRpZiIsYnNkZnM6InZlYzIgaW50ZWdyYXRlU3BlY3VsYXJCUkRGKCBjb25zdCBpbiBmbG9hdCBkb3ROViwgY29uc3QgaW4gZmxvYXQgcm91Z2huZXNzICkge1xuXHRjb25zdCB2ZWM0IGMwID0gdmVjNCggLSAxLCAtIDAuMDI3NSwgLSAwLjU3MiwgMC4wMjIgKTtcblx0Y29uc3QgdmVjNCBjMSA9IHZlYzQoIDEsIDAuMDQyNSwgMS4wNCwgLSAwLjA0ICk7XG5cdHZlYzQgciA9IHJvdWdobmVzcyAqIGMwICsgYzE7XG5cdGZsb2F0IGEwMDQgPSBtaW4oIHIueCAqIHIueCwgZXhwMiggLSA5LjI4ICogZG90TlYgKSApICogci54ICsgci55O1xuXHRyZXR1cm4gdmVjMiggLTEuMDQsIDEuMDQgKSAqIGEwMDQgKyByLnp3O1xufVxuZmxvYXQgcHVuY3R1YWxMaWdodEludGVuc2l0eVRvSXJyYWRpYW5jZUZhY3RvciggY29uc3QgaW4gZmxvYXQgbGlnaHREaXN0YW5jZSwgY29uc3QgaW4gZmxvYXQgY3V0b2ZmRGlzdGFuY2UsIGNvbnN0IGluIGZsb2F0IGRlY2F5RXhwb25lbnQgKSB7XG4jaWYgZGVmaW5lZCAoIFBIWVNJQ0FMTFlfQ09SUkVDVF9MSUdIVFMgKVxuXHRmbG9hdCBkaXN0YW5jZUZhbGxvZmYgPSAxLjAgLyBtYXgoIHBvdyggbGlnaHREaXN0YW5jZSwgZGVjYXlFeHBvbmVudCApLCAwLjAxICk7XG5cdGlmKCBjdXRvZmZEaXN0YW5jZSA+IDAuMCApIHtcblx0XHRkaXN0YW5jZUZhbGxvZmYgKj0gcG93Miggc2F0dXJhdGUoIDEuMCAtIHBvdzQoIGxpZ2h0RGlzdGFuY2UgLyBjdXRvZmZEaXN0YW5jZSApICkgKTtcblx0fVxuXHRyZXR1cm4gZGlzdGFuY2VGYWxsb2ZmO1xuI2Vsc2Vcblx0aWYoIGN1dG9mZkRpc3RhbmNlID4gMC4wICYmIGRlY2F5RXhwb25lbnQgPiAwLjAgKSB7XG5cdFx0cmV0dXJuIHBvdyggc2F0dXJhdGUoIC1saWdodERpc3RhbmNlIC8gY3V0b2ZmRGlzdGFuY2UgKyAxLjAgKSwgZGVjYXlFeHBvbmVudCApO1xuXHR9XG5cdHJldHVybiAxLjA7XG4jZW5kaWZcbn1cbnZlYzMgQlJERl9EaWZmdXNlX0xhbWJlcnQoIGNvbnN0IGluIHZlYzMgZGlmZnVzZUNvbG9yICkge1xuXHRyZXR1cm4gUkVDSVBST0NBTF9QSSAqIGRpZmZ1c2VDb2xvcjtcbn1cbnZlYzMgRl9TY2hsaWNrKCBjb25zdCBpbiB2ZWMzIGYwLCBjb25zdCBpbiB2ZWMzIGY5MCwgY29uc3QgaW4gZmxvYXQgZG90VkggKSB7XG5cdGZsb2F0IGZyZXNuZWwgPSBleHAyKCAoIC01LjU1NDczICogZG90VkggLSA2Ljk4MzE2ICkgKiBkb3RWSCApO1xuXHRyZXR1cm4gKCBmOTAgLSBmMCApICogZnJlc25lbCArIGYwO1xufVxudmVjMyBGX1NjaGxpY2tfUm91Z2huZXNzRGVwZW5kZW50KCBjb25zdCBpbiB2ZWMzIEYwLCBjb25zdCBpbiBmbG9hdCBkb3ROViwgY29uc3QgaW4gZmxvYXQgcm91Z2huZXNzICkge1xuXHRmbG9hdCBmcmVzbmVsID0gZXhwMiggKCAtNS41NTQ3MyAqIGRvdE5WIC0gNi45ODMxNiApICogZG90TlYgKTtcblx0dmVjMyBGciA9IG1heCggdmVjMyggMS4wIC0gcm91Z2huZXNzICksIEYwICkgLSBGMDtcblx0cmV0dXJuIEZyICogZnJlc25lbCArIEYwO1xufVxuZmxvYXQgR19HR1hfU21pdGgoIGNvbnN0IGluIGZsb2F0IGFscGhhLCBjb25zdCBpbiBmbG9hdCBkb3ROTCwgY29uc3QgaW4gZmxvYXQgZG90TlYgKSB7XG5cdGZsb2F0IGEyID0gcG93MiggYWxwaGEgKTtcblx0ZmxvYXQgZ2wgPSBkb3ROTCArIHNxcnQoIGEyICsgKCAxLjAgLSBhMiApICogcG93MiggZG90TkwgKSApO1xuXHRmbG9hdCBndiA9IGRvdE5WICsgc3FydCggYTIgKyAoIDEuMCAtIGEyICkgKiBwb3cyKCBkb3ROViApICk7XG5cdHJldHVybiAxLjAgLyAoIGdsICogZ3YgKTtcbn1cbmZsb2F0IEdfR0dYX1NtaXRoQ29ycmVsYXRlZCggY29uc3QgaW4gZmxvYXQgYWxwaGEsIGNvbnN0IGluIGZsb2F0IGRvdE5MLCBjb25zdCBpbiBmbG9hdCBkb3ROViApIHtcblx0ZmxvYXQgYTIgPSBwb3cyKCBhbHBoYSApO1xuXHRmbG9hdCBndiA9IGRvdE5MICogc3FydCggYTIgKyAoIDEuMCAtIGEyICkgKiBwb3cyKCBkb3ROViApICk7XG5cdGZsb2F0IGdsID0gZG90TlYgKiBzcXJ0KCBhMiArICggMS4wIC0gYTIgKSAqIHBvdzIoIGRvdE5MICkgKTtcblx0cmV0dXJuIDAuNSAvIG1heCggZ3YgKyBnbCwgRVBTSUxPTiApO1xufVxuZmxvYXQgRF9HR1goIGNvbnN0IGluIGZsb2F0IGFscGhhLCBjb25zdCBpbiBmbG9hdCBkb3ROSCApIHtcblx0ZmxvYXQgYTIgPSBwb3cyKCBhbHBoYSApO1xuXHRmbG9hdCBkZW5vbSA9IHBvdzIoIGRvdE5IICkgKiAoIGEyIC0gMS4wICkgKyAxLjA7XG5cdHJldHVybiBSRUNJUFJPQ0FMX1BJICogYTIgLyBwb3cyKCBkZW5vbSApO1xufVxudmVjMyBCUkRGX1NwZWN1bGFyX0dHWCggY29uc3QgaW4gSW5jaWRlbnRMaWdodCBpbmNpZGVudExpZ2h0LCBjb25zdCBpbiB2ZWMzIHZpZXdEaXIsIGNvbnN0IGluIHZlYzMgbm9ybWFsLCBjb25zdCBpbiB2ZWMzIGYwLCBjb25zdCBpbiB2ZWMzIGY5MCwgY29uc3QgaW4gZmxvYXQgcm91Z2huZXNzICkge1xuXHRmbG9hdCBhbHBoYSA9IHBvdzIoIHJvdWdobmVzcyApO1xuXHR2ZWMzIGhhbGZEaXIgPSBub3JtYWxpemUoIGluY2lkZW50TGlnaHQuZGlyZWN0aW9uICsgdmlld0RpciApO1xuXHRmbG9hdCBkb3ROTCA9IHNhdHVyYXRlKCBkb3QoIG5vcm1hbCwgaW5jaWRlbnRMaWdodC5kaXJlY3Rpb24gKSApO1xuXHRmbG9hdCBkb3ROViA9IHNhdHVyYXRlKCBkb3QoIG5vcm1hbCwgdmlld0RpciApICk7XG5cdGZsb2F0IGRvdE5IID0gc2F0dXJhdGUoIGRvdCggbm9ybWFsLCBoYWxmRGlyICkgKTtcblx0ZmxvYXQgZG90TEggPSBzYXR1cmF0ZSggZG90KCBpbmNpZGVudExpZ2h0LmRpcmVjdGlvbiwgaGFsZkRpciApICk7XG5cdHZlYzMgRiA9IEZfU2NobGljayggZjAsIGY5MCwgZG90TEggKTtcblx0ZmxvYXQgRyA9IEdfR0dYX1NtaXRoQ29ycmVsYXRlZCggYWxwaGEsIGRvdE5MLCBkb3ROViApO1xuXHRmbG9hdCBEID0gRF9HR1goIGFscGhhLCBkb3ROSCApO1xuXHRyZXR1cm4gRiAqICggRyAqIEQgKTtcbn1cbnZlYzIgTFRDX1V2KCBjb25zdCBpbiB2ZWMzIE4sIGNvbnN0IGluIHZlYzMgViwgY29uc3QgaW4gZmxvYXQgcm91Z2huZXNzICkge1xuXHRjb25zdCBmbG9hdCBMVVRfU0laRSA9IDY0LjA7XG5cdGNvbnN0IGZsb2F0IExVVF9TQ0FMRSA9ICggTFVUX1NJWkUgLSAxLjAgKSAvIExVVF9TSVpFO1xuXHRjb25zdCBmbG9hdCBMVVRfQklBUyA9IDAuNSAvIExVVF9TSVpFO1xuXHRmbG9hdCBkb3ROViA9IHNhdHVyYXRlKCBkb3QoIE4sIFYgKSApO1xuXHR2ZWMyIHV2ID0gdmVjMiggcm91Z2huZXNzLCBzcXJ0KCAxLjAgLSBkb3ROViApICk7XG5cdHV2ID0gdXYgKiBMVVRfU0NBTEUgKyBMVVRfQklBUztcblx0cmV0dXJuIHV2O1xufVxuZmxvYXQgTFRDX0NsaXBwZWRTcGhlcmVGb3JtRmFjdG9yKCBjb25zdCBpbiB2ZWMzIGYgKSB7XG5cdGZsb2F0IGwgPSBsZW5ndGgoIGYgKTtcblx0cmV0dXJuIG1heCggKCBsICogbCArIGYueiApIC8gKCBsICsgMS4wICksIDAuMCApO1xufVxudmVjMyBMVENfRWRnZVZlY3RvckZvcm1GYWN0b3IoIGNvbnN0IGluIHZlYzMgdjEsIGNvbnN0IGluIHZlYzMgdjIgKSB7XG5cdGZsb2F0IHggPSBkb3QoIHYxLCB2MiApO1xuXHRmbG9hdCB5ID0gYWJzKCB4ICk7XG5cdGZsb2F0IGEgPSAwLjg1NDM5ODUgKyAoIDAuNDk2NTE1NSArIDAuMDE0NTIwNiAqIHkgKSAqIHk7XG5cdGZsb2F0IGIgPSAzLjQxNzU5NDAgKyAoIDQuMTYxNjcyNCArIHkgKSAqIHk7XG5cdGZsb2F0IHYgPSBhIC8gYjtcblx0ZmxvYXQgdGhldGFfc2ludGhldGEgPSAoIHggPiAwLjAgKSA/IHYgOiAwLjUgKiBpbnZlcnNlc3FydCggbWF4KCAxLjAgLSB4ICogeCwgMWUtNyApICkgLSB2O1xuXHRyZXR1cm4gY3Jvc3MoIHYxLCB2MiApICogdGhldGFfc2ludGhldGE7XG59XG52ZWMzIExUQ19FdmFsdWF0ZSggY29uc3QgaW4gdmVjMyBOLCBjb25zdCBpbiB2ZWMzIFYsIGNvbnN0IGluIHZlYzMgUCwgY29uc3QgaW4gbWF0MyBtSW52LCBjb25zdCBpbiB2ZWMzIHJlY3RDb29yZHNbIDQgXSApIHtcblx0dmVjMyB2MSA9IHJlY3RDb29yZHNbIDEgXSAtIHJlY3RDb29yZHNbIDAgXTtcblx0dmVjMyB2MiA9IHJlY3RDb29yZHNbIDMgXSAtIHJlY3RDb29yZHNbIDAgXTtcblx0dmVjMyBsaWdodE5vcm1hbCA9IGNyb3NzKCB2MSwgdjIgKTtcblx0aWYoIGRvdCggbGlnaHROb3JtYWwsIFAgLSByZWN0Q29vcmRzWyAwIF0gKSA8IDAuMCApIHJldHVybiB2ZWMzKCAwLjAgKTtcblx0dmVjMyBUMSwgVDI7XG5cdFQxID0gbm9ybWFsaXplKCBWIC0gTiAqIGRvdCggViwgTiApICk7XG5cdFQyID0gLSBjcm9zcyggTiwgVDEgKTtcblx0bWF0MyBtYXQgPSBtSW52ICogdHJhbnNwb3NlTWF0MyggbWF0MyggVDEsIFQyLCBOICkgKTtcblx0dmVjMyBjb29yZHNbIDQgXTtcblx0Y29vcmRzWyAwIF0gPSBtYXQgKiAoIHJlY3RDb29yZHNbIDAgXSAtIFAgKTtcblx0Y29vcmRzWyAxIF0gPSBtYXQgKiAoIHJlY3RDb29yZHNbIDEgXSAtIFAgKTtcblx0Y29vcmRzWyAyIF0gPSBtYXQgKiAoIHJlY3RDb29yZHNbIDIgXSAtIFAgKTtcblx0Y29vcmRzWyAzIF0gPSBtYXQgKiAoIHJlY3RDb29yZHNbIDMgXSAtIFAgKTtcblx0Y29vcmRzWyAwIF0gPSBub3JtYWxpemUoIGNvb3Jkc1sgMCBdICk7XG5cdGNvb3Jkc1sgMSBdID0gbm9ybWFsaXplKCBjb29yZHNbIDEgXSApO1xuXHRjb29yZHNbIDIgXSA9IG5vcm1hbGl6ZSggY29vcmRzWyAyIF0gKTtcblx0Y29vcmRzWyAzIF0gPSBub3JtYWxpemUoIGNvb3Jkc1sgMyBdICk7XG5cdHZlYzMgdmVjdG9yRm9ybUZhY3RvciA9IHZlYzMoIDAuMCApO1xuXHR2ZWN0b3JGb3JtRmFjdG9yICs9IExUQ19FZGdlVmVjdG9yRm9ybUZhY3RvciggY29vcmRzWyAwIF0sIGNvb3Jkc1sgMSBdICk7XG5cdHZlY3RvckZvcm1GYWN0b3IgKz0gTFRDX0VkZ2VWZWN0b3JGb3JtRmFjdG9yKCBjb29yZHNbIDEgXSwgY29vcmRzWyAyIF0gKTtcblx0dmVjdG9yRm9ybUZhY3RvciArPSBMVENfRWRnZVZlY3RvckZvcm1GYWN0b3IoIGNvb3Jkc1sgMiBdLCBjb29yZHNbIDMgXSApO1xuXHR2ZWN0b3JGb3JtRmFjdG9yICs9IExUQ19FZGdlVmVjdG9yRm9ybUZhY3RvciggY29vcmRzWyAzIF0sIGNvb3Jkc1sgMCBdICk7XG5cdGZsb2F0IHJlc3VsdCA9IExUQ19DbGlwcGVkU3BoZXJlRm9ybUZhY3RvciggdmVjdG9yRm9ybUZhY3RvciApO1xuXHRyZXR1cm4gdmVjMyggcmVzdWx0ICk7XG59XG52ZWMzIEJSREZfU3BlY3VsYXJfR0dYX0Vudmlyb25tZW50KCBjb25zdCBpbiB2ZWMzIHZpZXdEaXIsIGNvbnN0IGluIHZlYzMgbm9ybWFsLCBjb25zdCBpbiB2ZWMzIHNwZWN1bGFyQ29sb3IsIGNvbnN0IGluIGZsb2F0IHJvdWdobmVzcyApIHtcblx0ZmxvYXQgZG90TlYgPSBzYXR1cmF0ZSggZG90KCBub3JtYWwsIHZpZXdEaXIgKSApO1xuXHR2ZWMyIGJyZGYgPSBpbnRlZ3JhdGVTcGVjdWxhckJSREYoIGRvdE5WLCByb3VnaG5lc3MgKTtcblx0cmV0dXJuIHNwZWN1bGFyQ29sb3IgKiBicmRmLnggKyBicmRmLnk7XG59XG52b2lkIEJSREZfU3BlY3VsYXJfTXVsdGlzY2F0dGVyaW5nX0Vudmlyb25tZW50KCBjb25zdCBpbiBHZW9tZXRyaWNDb250ZXh0IGdlb21ldHJ5LCBjb25zdCBpbiB2ZWMzIHNwZWN1bGFyQ29sb3IsIGNvbnN0IGluIGZsb2F0IHJvdWdobmVzcywgaW5vdXQgdmVjMyBzaW5nbGVTY2F0dGVyLCBpbm91dCB2ZWMzIG11bHRpU2NhdHRlciApIHtcblx0ZmxvYXQgZG90TlYgPSBzYXR1cmF0ZSggZG90KCBnZW9tZXRyeS5ub3JtYWwsIGdlb21ldHJ5LnZpZXdEaXIgKSApO1xuXHR2ZWMzIEYgPSBGX1NjaGxpY2tfUm91Z2huZXNzRGVwZW5kZW50KCBzcGVjdWxhckNvbG9yLCBkb3ROViwgcm91Z2huZXNzICk7XG5cdHZlYzIgYnJkZiA9IGludGVncmF0ZVNwZWN1bGFyQlJERiggZG90TlYsIHJvdWdobmVzcyApO1xuXHR2ZWMzIEZzc0VzcyA9IEYgKiBicmRmLnggKyBicmRmLnk7XG5cdGZsb2F0IEVzcyA9IGJyZGYueCArIGJyZGYueTtcblx0ZmxvYXQgRW1zID0gMS4wIC0gRXNzO1xuXHR2ZWMzIEZhdmcgPSBzcGVjdWxhckNvbG9yICsgKCAxLjAgLSBzcGVjdWxhckNvbG9yICkgKiAwLjA0NzYxOTtcdHZlYzMgRm1zID0gRnNzRXNzICogRmF2ZyAvICggMS4wIC0gRW1zICogRmF2ZyApO1xuXHRzaW5nbGVTY2F0dGVyICs9IEZzc0Vzcztcblx0bXVsdGlTY2F0dGVyICs9IEZtcyAqIEVtcztcbn1cbmZsb2F0IEdfQmxpbm5QaG9uZ19JbXBsaWNpdCggKSB7XG5cdHJldHVybiAwLjI1O1xufVxuZmxvYXQgRF9CbGlublBob25nKCBjb25zdCBpbiBmbG9hdCBzaGluaW5lc3MsIGNvbnN0IGluIGZsb2F0IGRvdE5IICkge1xuXHRyZXR1cm4gUkVDSVBST0NBTF9QSSAqICggc2hpbmluZXNzICogMC41ICsgMS4wICkgKiBwb3coIGRvdE5ILCBzaGluaW5lc3MgKTtcbn1cbnZlYzMgQlJERl9TcGVjdWxhcl9CbGlublBob25nKCBjb25zdCBpbiBJbmNpZGVudExpZ2h0IGluY2lkZW50TGlnaHQsIGNvbnN0IGluIEdlb21ldHJpY0NvbnRleHQgZ2VvbWV0cnksIGNvbnN0IGluIHZlYzMgc3BlY3VsYXJDb2xvciwgY29uc3QgaW4gZmxvYXQgc2hpbmluZXNzICkge1xuXHR2ZWMzIGhhbGZEaXIgPSBub3JtYWxpemUoIGluY2lkZW50TGlnaHQuZGlyZWN0aW9uICsgZ2VvbWV0cnkudmlld0RpciApO1xuXHRmbG9hdCBkb3ROSCA9IHNhdHVyYXRlKCBkb3QoIGdlb21ldHJ5Lm5vcm1hbCwgaGFsZkRpciApICk7XG5cdGZsb2F0IGRvdExIID0gc2F0dXJhdGUoIGRvdCggaW5jaWRlbnRMaWdodC5kaXJlY3Rpb24sIGhhbGZEaXIgKSApO1xuXHR2ZWMzIEYgPSBGX1NjaGxpY2soIHNwZWN1bGFyQ29sb3IsIHZlYzMoIDEuMCApLCBkb3RMSCApO1xuXHRmbG9hdCBHID0gR19CbGlublBob25nX0ltcGxpY2l0KCApO1xuXHRmbG9hdCBEID0gRF9CbGlublBob25nKCBzaGluaW5lc3MsIGRvdE5IICk7XG5cdHJldHVybiBGICogKCBHICogRCApO1xufVxuZmxvYXQgR0dYUm91Z2huZXNzVG9CbGlubkV4cG9uZW50KCBjb25zdCBpbiBmbG9hdCBnZ3hSb3VnaG5lc3MgKSB7XG5cdHJldHVybiAoIDIuMCAvIHBvdzIoIGdneFJvdWdobmVzcyArIDAuMDAwMSApIC0gMi4wICk7XG59XG5mbG9hdCBCbGlubkV4cG9uZW50VG9HR1hSb3VnaG5lc3MoIGNvbnN0IGluIGZsb2F0IGJsaW5uRXhwb25lbnQgKSB7XG5cdHJldHVybiBzcXJ0KCAyLjAgLyAoIGJsaW5uRXhwb25lbnQgKyAyLjAgKSApO1xufVxuI2lmIGRlZmluZWQoIFVTRV9TSEVFTiApXG5mbG9hdCBEX0NoYXJsaWUoZmxvYXQgcm91Z2huZXNzLCBmbG9hdCBOb0gpIHtcblx0ZmxvYXQgaW52QWxwaGEgPSAxLjAgLyByb3VnaG5lc3M7XG5cdGZsb2F0IGNvczJoID0gTm9IICogTm9IO1xuXHRmbG9hdCBzaW4yaCA9IG1heCgxLjAgLSBjb3MyaCwgMC4wMDc4MTI1KTtcdHJldHVybiAoMi4wICsgaW52QWxwaGEpICogcG93KHNpbjJoLCBpbnZBbHBoYSAqIDAuNSkgLyAoMi4wICogUEkpO1xufVxuZmxvYXQgVl9OZXViZWx0KGZsb2F0IE5vViwgZmxvYXQgTm9MKSB7XG5cdHJldHVybiBzYXR1cmF0ZSgxLjAgLyAoNC4wICogKE5vTCArIE5vViAtIE5vTCAqIE5vVikpKTtcbn1cbnZlYzMgQlJERl9TcGVjdWxhcl9TaGVlbiggY29uc3QgaW4gZmxvYXQgcm91Z2huZXNzLCBjb25zdCBpbiB2ZWMzIEwsIGNvbnN0IGluIEdlb21ldHJpY0NvbnRleHQgZ2VvbWV0cnksIHZlYzMgc3BlY3VsYXJDb2xvciApIHtcblx0dmVjMyBOID0gZ2VvbWV0cnkubm9ybWFsO1xuXHR2ZWMzIFYgPSBnZW9tZXRyeS52aWV3RGlyO1xuXHR2ZWMzIEggPSBub3JtYWxpemUoIFYgKyBMICk7XG5cdGZsb2F0IGRvdE5IID0gc2F0dXJhdGUoIGRvdCggTiwgSCApICk7XG5cdHJldHVybiBzcGVjdWxhckNvbG9yICogRF9DaGFybGllKCByb3VnaG5lc3MsIGRvdE5IICkgKiBWX05ldWJlbHQoIGRvdChOLCBWKSwgZG90KE4sIEwpICk7XG59XG4jZW5kaWYiLGJ1bXBtYXBfcGFyc19mcmFnbWVudDoiI2lmZGVmIFVTRV9CVU1QTUFQXG5cdHVuaWZvcm0gc2FtcGxlcjJEIGJ1bXBNYXA7XG5cdHVuaWZvcm0gZmxvYXQgYnVtcFNjYWxlO1xuXHR2ZWMyIGRIZHh5X2Z3ZCgpIHtcblx0XHR2ZWMyIGRTVGR4ID0gZEZkeCggdlV2ICk7XG5cdFx0dmVjMiBkU1RkeSA9IGRGZHkoIHZVdiApO1xuXHRcdGZsb2F0IEhsbCA9IGJ1bXBTY2FsZSAqIHRleHR1cmUyRCggYnVtcE1hcCwgdlV2ICkueDtcblx0XHRmbG9hdCBkQnggPSBidW1wU2NhbGUgKiB0ZXh0dXJlMkQoIGJ1bXBNYXAsIHZVdiArIGRTVGR4ICkueCAtIEhsbDtcblx0XHRmbG9hdCBkQnkgPSBidW1wU2NhbGUgKiB0ZXh0dXJlMkQoIGJ1bXBNYXAsIHZVdiArIGRTVGR5ICkueCAtIEhsbDtcblx0XHRyZXR1cm4gdmVjMiggZEJ4LCBkQnkgKTtcblx0fVxuXHR2ZWMzIHBlcnR1cmJOb3JtYWxBcmIoIHZlYzMgc3VyZl9wb3MsIHZlYzMgc3VyZl9ub3JtLCB2ZWMyIGRIZHh5LCBmbG9hdCBmYWNlRGlyZWN0aW9uICkge1xuXHRcdHZlYzMgdlNpZ21hWCA9IHZlYzMoIGRGZHgoIHN1cmZfcG9zLnggKSwgZEZkeCggc3VyZl9wb3MueSApLCBkRmR4KCBzdXJmX3Bvcy56ICkgKTtcblx0XHR2ZWMzIHZTaWdtYVkgPSB2ZWMzKCBkRmR5KCBzdXJmX3Bvcy54ICksIGRGZHkoIHN1cmZfcG9zLnkgKSwgZEZkeSggc3VyZl9wb3MueiApICk7XG5cdFx0dmVjMyB2TiA9IHN1cmZfbm9ybTtcblx0XHR2ZWMzIFIxID0gY3Jvc3MoIHZTaWdtYVksIHZOICk7XG5cdFx0dmVjMyBSMiA9IGNyb3NzKCB2TiwgdlNpZ21hWCApO1xuXHRcdGZsb2F0IGZEZXQgPSBkb3QoIHZTaWdtYVgsIFIxICkgKiBmYWNlRGlyZWN0aW9uO1xuXHRcdHZlYzMgdkdyYWQgPSBzaWduKCBmRGV0ICkgKiAoIGRIZHh5LnggKiBSMSArIGRIZHh5LnkgKiBSMiApO1xuXHRcdHJldHVybiBub3JtYWxpemUoIGFicyggZkRldCApICogc3VyZl9ub3JtIC0gdkdyYWQgKTtcblx0fVxuI2VuZGlmIixjbGlwcGluZ19wbGFuZXNfZnJhZ21lbnQ6IiNpZiBOVU1fQ0xJUFBJTkdfUExBTkVTID4gMFxuXHR2ZWM0IHBsYW5lO1xuXHQjcHJhZ21hIHVucm9sbF9sb29wX3N0YXJ0XG5cdGZvciAoIGludCBpID0gMDsgaSA8IFVOSU9OX0NMSVBQSU5HX1BMQU5FUzsgaSArKyApIHtcblx0XHRwbGFuZSA9IGNsaXBwaW5nUGxhbmVzWyBpIF07XG5cdFx0aWYgKCBkb3QoIHZDbGlwUG9zaXRpb24sIHBsYW5lLnh5eiApID4gcGxhbmUudyApIGRpc2NhcmQ7XG5cdH1cblx0I3ByYWdtYSB1bnJvbGxfbG9vcF9lbmRcblx0I2lmIFVOSU9OX0NMSVBQSU5HX1BMQU5FUyA8IE5VTV9DTElQUElOR19QTEFORVNcblx0XHRib29sIGNsaXBwZWQgPSB0cnVlO1xuXHRcdCNwcmFnbWEgdW5yb2xsX2xvb3Bfc3RhcnRcblx0XHRmb3IgKCBpbnQgaSA9IFVOSU9OX0NMSVBQSU5HX1BMQU5FUzsgaSA8IE5VTV9DTElQUElOR19QTEFORVM7IGkgKysgKSB7XG5cdFx0XHRwbGFuZSA9IGNsaXBwaW5nUGxhbmVzWyBpIF07XG5cdFx0XHRjbGlwcGVkID0gKCBkb3QoIHZDbGlwUG9zaXRpb24sIHBsYW5lLnh5eiApID4gcGxhbmUudyApICYmIGNsaXBwZWQ7XG5cdFx0fVxuXHRcdCNwcmFnbWEgdW5yb2xsX2xvb3BfZW5kXG5cdFx0aWYgKCBjbGlwcGVkICkgZGlzY2FyZDtcblx0I2VuZGlmXG4jZW5kaWYiLGNsaXBwaW5nX3BsYW5lc19wYXJzX2ZyYWdtZW50OiIjaWYgTlVNX0NMSVBQSU5HX1BMQU5FUyA+IDBcblx0dmFyeWluZyB2ZWMzIHZDbGlwUG9zaXRpb247XG5cdHVuaWZvcm0gdmVjNCBjbGlwcGluZ1BsYW5lc1sgTlVNX0NMSVBQSU5HX1BMQU5FUyBdO1xuI2VuZGlmIixjbGlwcGluZ19wbGFuZXNfcGFyc192ZXJ0ZXg6IiNpZiBOVU1fQ0xJUFBJTkdfUExBTkVTID4gMFxuXHR2YXJ5aW5nIHZlYzMgdkNsaXBQb3NpdGlvbjtcbiNlbmRpZiIsY2xpcHBpbmdfcGxhbmVzX3ZlcnRleDoiI2lmIE5VTV9DTElQUElOR19QTEFORVMgPiAwXG5cdHZDbGlwUG9zaXRpb24gPSAtIG12UG9zaXRpb24ueHl6O1xuI2VuZGlmIixjb2xvcl9mcmFnbWVudDoiI2lmIGRlZmluZWQoIFVTRV9DT0xPUl9BTFBIQSApXG5cdGRpZmZ1c2VDb2xvciAqPSB2Q29sb3I7XG4jZWxpZiBkZWZpbmVkKCBVU0VfQ09MT1IgKVxuXHRkaWZmdXNlQ29sb3IucmdiICo9IHZDb2xvcjtcbiNlbmRpZiIsY29sb3JfcGFyc19mcmFnbWVudDoiI2lmIGRlZmluZWQoIFVTRV9DT0xPUl9BTFBIQSApXG5cdHZhcnlpbmcgdmVjNCB2Q29sb3I7XG4jZWxpZiBkZWZpbmVkKCBVU0VfQ09MT1IgKVxuXHR2YXJ5aW5nIHZlYzMgdkNvbG9yO1xuI2VuZGlmIixjb2xvcl9wYXJzX3ZlcnRleDoiI2lmIGRlZmluZWQoIFVTRV9DT0xPUl9BTFBIQSApXG5cdHZhcnlpbmcgdmVjNCB2Q29sb3I7XG4jZWxpZiBkZWZpbmVkKCBVU0VfQ09MT1IgKSB8fCBkZWZpbmVkKCBVU0VfSU5TVEFOQ0lOR19DT0xPUiApXG5cdHZhcnlpbmcgdmVjMyB2Q29sb3I7XG4jZW5kaWYiLGNvbG9yX3ZlcnRleDoiI2lmIGRlZmluZWQoIFVTRV9DT0xPUl9BTFBIQSApXG5cdHZDb2xvciA9IHZlYzQoIDEuMCApO1xuI2VsaWYgZGVmaW5lZCggVVNFX0NPTE9SICkgfHwgZGVmaW5lZCggVVNFX0lOU1RBTkNJTkdfQ09MT1IgKVxuXHR2Q29sb3IgPSB2ZWMzKCAxLjAgKTtcbiNlbmRpZlxuI2lmZGVmIFVTRV9DT0xPUlxuXHR2Q29sb3IgKj0gY29sb3I7XG4jZW5kaWZcbiNpZmRlZiBVU0VfSU5TVEFOQ0lOR19DT0xPUlxuXHR2Q29sb3IueHl6ICo9IGluc3RhbmNlQ29sb3IueHl6O1xuI2VuZGlmIixjb21tb246IiNkZWZpbmUgUEkgMy4xNDE1OTI2NTM1ODk3OTNcbiNkZWZpbmUgUEkyIDYuMjgzMTg1MzA3MTc5NTg2XG4jZGVmaW5lIFBJX0hBTEYgMS41NzA3OTYzMjY3OTQ4OTY2XG4jZGVmaW5lIFJFQ0lQUk9DQUxfUEkgMC4zMTgzMDk4ODYxODM3OTA3XG4jZGVmaW5lIFJFQ0lQUk9DQUxfUEkyIDAuMTU5MTU0OTQzMDkxODk1MzVcbiNkZWZpbmUgRVBTSUxPTiAxZS02XG4jaWZuZGVmIHNhdHVyYXRlXG4jZGVmaW5lIHNhdHVyYXRlKGEpIGNsYW1wKCBhLCAwLjAsIDEuMCApXG4jZW5kaWZcbiNkZWZpbmUgd2hpdGVDb21wbGVtZW50KGEpICggMS4wIC0gc2F0dXJhdGUoIGEgKSApXG5mbG9hdCBwb3cyKCBjb25zdCBpbiBmbG9hdCB4ICkgeyByZXR1cm4geCp4OyB9XG5mbG9hdCBwb3czKCBjb25zdCBpbiBmbG9hdCB4ICkgeyByZXR1cm4geCp4Kng7IH1cbmZsb2F0IHBvdzQoIGNvbnN0IGluIGZsb2F0IHggKSB7IGZsb2F0IHgyID0geCp4OyByZXR1cm4geDIqeDI7IH1cbmZsb2F0IGF2ZXJhZ2UoIGNvbnN0IGluIHZlYzMgY29sb3IgKSB7IHJldHVybiBkb3QoIGNvbG9yLCB2ZWMzKCAwLjMzMzMgKSApOyB9XG5oaWdocCBmbG9hdCByYW5kKCBjb25zdCBpbiB2ZWMyIHV2ICkge1xuXHRjb25zdCBoaWdocCBmbG9hdCBhID0gMTIuOTg5OCwgYiA9IDc4LjIzMywgYyA9IDQzNzU4LjU0NTM7XG5cdGhpZ2hwIGZsb2F0IGR0ID0gZG90KCB1di54eSwgdmVjMiggYSxiICkgKSwgc24gPSBtb2QoIGR0LCBQSSApO1xuXHRyZXR1cm4gZnJhY3Qoc2luKHNuKSAqIGMpO1xufVxuI2lmZGVmIEhJR0hfUFJFQ0lTSU9OXG5cdGZsb2F0IHByZWNpc2lvblNhZmVMZW5ndGgoIHZlYzMgdiApIHsgcmV0dXJuIGxlbmd0aCggdiApOyB9XG4jZWxzZVxuXHRmbG9hdCBtYXgzKCB2ZWMzIHYgKSB7IHJldHVybiBtYXgoIG1heCggdi54LCB2LnkgKSwgdi56ICk7IH1cblx0ZmxvYXQgcHJlY2lzaW9uU2FmZUxlbmd0aCggdmVjMyB2ICkge1xuXHRcdGZsb2F0IG1heENvbXBvbmVudCA9IG1heDMoIGFicyggdiApICk7XG5cdFx0cmV0dXJuIGxlbmd0aCggdiAvIG1heENvbXBvbmVudCApICogbWF4Q29tcG9uZW50O1xuXHR9XG4jZW5kaWZcbnN0cnVjdCBJbmNpZGVudExpZ2h0IHtcblx0dmVjMyBjb2xvcjtcblx0dmVjMyBkaXJlY3Rpb247XG5cdGJvb2wgdmlzaWJsZTtcbn07XG5zdHJ1Y3QgUmVmbGVjdGVkTGlnaHQge1xuXHR2ZWMzIGRpcmVjdERpZmZ1c2U7XG5cdHZlYzMgZGlyZWN0U3BlY3VsYXI7XG5cdHZlYzMgaW5kaXJlY3REaWZmdXNlO1xuXHR2ZWMzIGluZGlyZWN0U3BlY3VsYXI7XG59O1xuc3RydWN0IEdlb21ldHJpY0NvbnRleHQge1xuXHR2ZWMzIHBvc2l0aW9uO1xuXHR2ZWMzIG5vcm1hbDtcblx0dmVjMyB2aWV3RGlyO1xuI2lmZGVmIENMRUFSQ09BVFxuXHR2ZWMzIGNsZWFyY29hdE5vcm1hbDtcbiNlbmRpZlxufTtcbnZlYzMgdHJhbnNmb3JtRGlyZWN0aW9uKCBpbiB2ZWMzIGRpciwgaW4gbWF0NCBtYXRyaXggKSB7XG5cdHJldHVybiBub3JtYWxpemUoICggbWF0cml4ICogdmVjNCggZGlyLCAwLjAgKSApLnh5eiApO1xufVxudmVjMyBpbnZlcnNlVHJhbnNmb3JtRGlyZWN0aW9uKCBpbiB2ZWMzIGRpciwgaW4gbWF0NCBtYXRyaXggKSB7XG5cdHJldHVybiBub3JtYWxpemUoICggdmVjNCggZGlyLCAwLjAgKSAqIG1hdHJpeCApLnh5eiApO1xufVxudmVjMyBwcm9qZWN0T25QbGFuZShpbiB2ZWMzIHBvaW50LCBpbiB2ZWMzIHBvaW50T25QbGFuZSwgaW4gdmVjMyBwbGFuZU5vcm1hbCApIHtcblx0ZmxvYXQgZGlzdGFuY2UgPSBkb3QoIHBsYW5lTm9ybWFsLCBwb2ludCAtIHBvaW50T25QbGFuZSApO1xuXHRyZXR1cm4gLSBkaXN0YW5jZSAqIHBsYW5lTm9ybWFsICsgcG9pbnQ7XG59XG5mbG9hdCBzaWRlT2ZQbGFuZSggaW4gdmVjMyBwb2ludCwgaW4gdmVjMyBwb2ludE9uUGxhbmUsIGluIHZlYzMgcGxhbmVOb3JtYWwgKSB7XG5cdHJldHVybiBzaWduKCBkb3QoIHBvaW50IC0gcG9pbnRPblBsYW5lLCBwbGFuZU5vcm1hbCApICk7XG59XG52ZWMzIGxpbmVQbGFuZUludGVyc2VjdCggaW4gdmVjMyBwb2ludE9uTGluZSwgaW4gdmVjMyBsaW5lRGlyZWN0aW9uLCBpbiB2ZWMzIHBvaW50T25QbGFuZSwgaW4gdmVjMyBwbGFuZU5vcm1hbCApIHtcblx0cmV0dXJuIGxpbmVEaXJlY3Rpb24gKiAoIGRvdCggcGxhbmVOb3JtYWwsIHBvaW50T25QbGFuZSAtIHBvaW50T25MaW5lICkgLyBkb3QoIHBsYW5lTm9ybWFsLCBsaW5lRGlyZWN0aW9uICkgKSArIHBvaW50T25MaW5lO1xufVxubWF0MyB0cmFuc3Bvc2VNYXQzKCBjb25zdCBpbiBtYXQzIG0gKSB7XG5cdG1hdDMgdG1wO1xuXHR0bXBbIDAgXSA9IHZlYzMoIG1bIDAgXS54LCBtWyAxIF0ueCwgbVsgMiBdLnggKTtcblx0dG1wWyAxIF0gPSB2ZWMzKCBtWyAwIF0ueSwgbVsgMSBdLnksIG1bIDIgXS55ICk7XG5cdHRtcFsgMiBdID0gdmVjMyggbVsgMCBdLnosIG1bIDEgXS56LCBtWyAyIF0ueiApO1xuXHRyZXR1cm4gdG1wO1xufVxuZmxvYXQgbGluZWFyVG9SZWxhdGl2ZUx1bWluYW5jZSggY29uc3QgaW4gdmVjMyBjb2xvciApIHtcblx0dmVjMyB3ZWlnaHRzID0gdmVjMyggMC4yMTI2LCAwLjcxNTIsIDAuMDcyMiApO1xuXHRyZXR1cm4gZG90KCB3ZWlnaHRzLCBjb2xvci5yZ2IgKTtcbn1cbmJvb2wgaXNQZXJzcGVjdGl2ZU1hdHJpeCggbWF0NCBtICkge1xuXHRyZXR1cm4gbVsgMiBdWyAzIF0gPT0gLSAxLjA7XG59XG52ZWMyIGVxdWlyZWN0VXYoIGluIHZlYzMgZGlyICkge1xuXHRmbG9hdCB1ID0gYXRhbiggZGlyLnosIGRpci54ICkgKiBSRUNJUFJPQ0FMX1BJMiArIDAuNTtcblx0ZmxvYXQgdiA9IGFzaW4oIGNsYW1wKCBkaXIueSwgLSAxLjAsIDEuMCApICkgKiBSRUNJUFJPQ0FMX1BJICsgMC41O1xuXHRyZXR1cm4gdmVjMiggdSwgdiApO1xufSIsY3ViZV91dl9yZWZsZWN0aW9uX2ZyYWdtZW50OiIjaWZkZWYgRU5WTUFQX1RZUEVfQ1VCRV9VVlxuXHQjZGVmaW5lIGN1YmVVVl9tYXhNaXBMZXZlbCA4LjBcblx0I2RlZmluZSBjdWJlVVZfbWluTWlwTGV2ZWwgNC4wXG5cdCNkZWZpbmUgY3ViZVVWX21heFRpbGVTaXplIDI1Ni4wXG5cdCNkZWZpbmUgY3ViZVVWX21pblRpbGVTaXplIDE2LjBcblx0ZmxvYXQgZ2V0RmFjZSggdmVjMyBkaXJlY3Rpb24gKSB7XG5cdFx0dmVjMyBhYnNEaXJlY3Rpb24gPSBhYnMoIGRpcmVjdGlvbiApO1xuXHRcdGZsb2F0IGZhY2UgPSAtIDEuMDtcblx0XHRpZiAoIGFic0RpcmVjdGlvbi54ID4gYWJzRGlyZWN0aW9uLnogKSB7XG5cdFx0XHRpZiAoIGFic0RpcmVjdGlvbi54ID4gYWJzRGlyZWN0aW9uLnkgKVxuXHRcdFx0XHRmYWNlID0gZGlyZWN0aW9uLnggPiAwLjAgPyAwLjAgOiAzLjA7XG5cdFx0XHRlbHNlXG5cdFx0XHRcdGZhY2UgPSBkaXJlY3Rpb24ueSA+IDAuMCA/IDEuMCA6IDQuMDtcblx0XHR9IGVsc2Uge1xuXHRcdFx0aWYgKCBhYnNEaXJlY3Rpb24ueiA+IGFic0RpcmVjdGlvbi55IClcblx0XHRcdFx0ZmFjZSA9IGRpcmVjdGlvbi56ID4gMC4wID8gMi4wIDogNS4wO1xuXHRcdFx0ZWxzZVxuXHRcdFx0XHRmYWNlID0gZGlyZWN0aW9uLnkgPiAwLjAgPyAxLjAgOiA0LjA7XG5cdFx0fVxuXHRcdHJldHVybiBmYWNlO1xuXHR9XG5cdHZlYzIgZ2V0VVYoIHZlYzMgZGlyZWN0aW9uLCBmbG9hdCBmYWNlICkge1xuXHRcdHZlYzIgdXY7XG5cdFx0aWYgKCBmYWNlID09IDAuMCApIHtcblx0XHRcdHV2ID0gdmVjMiggZGlyZWN0aW9uLnosIGRpcmVjdGlvbi55ICkgLyBhYnMoIGRpcmVjdGlvbi54ICk7XG5cdFx0fSBlbHNlIGlmICggZmFjZSA9PSAxLjAgKSB7XG5cdFx0XHR1diA9IHZlYzIoIC0gZGlyZWN0aW9uLngsIC0gZGlyZWN0aW9uLnogKSAvIGFicyggZGlyZWN0aW9uLnkgKTtcblx0XHR9IGVsc2UgaWYgKCBmYWNlID09IDIuMCApIHtcblx0XHRcdHV2ID0gdmVjMiggLSBkaXJlY3Rpb24ueCwgZGlyZWN0aW9uLnkgKSAvIGFicyggZGlyZWN0aW9uLnogKTtcblx0XHR9IGVsc2UgaWYgKCBmYWNlID09IDMuMCApIHtcblx0XHRcdHV2ID0gdmVjMiggLSBkaXJlY3Rpb24ueiwgZGlyZWN0aW9uLnkgKSAvIGFicyggZGlyZWN0aW9uLnggKTtcblx0XHR9IGVsc2UgaWYgKCBmYWNlID09IDQuMCApIHtcblx0XHRcdHV2ID0gdmVjMiggLSBkaXJlY3Rpb24ueCwgZGlyZWN0aW9uLnogKSAvIGFicyggZGlyZWN0aW9uLnkgKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dXYgPSB2ZWMyKCBkaXJlY3Rpb24ueCwgZGlyZWN0aW9uLnkgKSAvIGFicyggZGlyZWN0aW9uLnogKTtcblx0XHR9XG5cdFx0cmV0dXJuIDAuNSAqICggdXYgKyAxLjAgKTtcblx0fVxuXHR2ZWMzIGJpbGluZWFyQ3ViZVVWKCBzYW1wbGVyMkQgZW52TWFwLCB2ZWMzIGRpcmVjdGlvbiwgZmxvYXQgbWlwSW50ICkge1xuXHRcdGZsb2F0IGZhY2UgPSBnZXRGYWNlKCBkaXJlY3Rpb24gKTtcblx0XHRmbG9hdCBmaWx0ZXJJbnQgPSBtYXgoIGN1YmVVVl9taW5NaXBMZXZlbCAtIG1pcEludCwgMC4wICk7XG5cdFx0bWlwSW50ID0gbWF4KCBtaXBJbnQsIGN1YmVVVl9taW5NaXBMZXZlbCApO1xuXHRcdGZsb2F0IGZhY2VTaXplID0gZXhwMiggbWlwSW50ICk7XG5cdFx0ZmxvYXQgdGV4ZWxTaXplID0gMS4wIC8gKCAzLjAgKiBjdWJlVVZfbWF4VGlsZVNpemUgKTtcblx0XHR2ZWMyIHV2ID0gZ2V0VVYoIGRpcmVjdGlvbiwgZmFjZSApICogKCBmYWNlU2l6ZSAtIDEuMCApO1xuXHRcdHZlYzIgZiA9IGZyYWN0KCB1diApO1xuXHRcdHV2ICs9IDAuNSAtIGY7XG5cdFx0aWYgKCBmYWNlID4gMi4wICkge1xuXHRcdFx0dXYueSArPSBmYWNlU2l6ZTtcblx0XHRcdGZhY2UgLT0gMy4wO1xuXHRcdH1cblx0XHR1di54ICs9IGZhY2UgKiBmYWNlU2l6ZTtcblx0XHRpZiAoIG1pcEludCA8IGN1YmVVVl9tYXhNaXBMZXZlbCApIHtcblx0XHRcdHV2LnkgKz0gMi4wICogY3ViZVVWX21heFRpbGVTaXplO1xuXHRcdH1cblx0XHR1di55ICs9IGZpbHRlckludCAqIDIuMCAqIGN1YmVVVl9taW5UaWxlU2l6ZTtcblx0XHR1di54ICs9IDMuMCAqIG1heCggMC4wLCBjdWJlVVZfbWF4VGlsZVNpemUgLSAyLjAgKiBmYWNlU2l6ZSApO1xuXHRcdHV2ICo9IHRleGVsU2l6ZTtcblx0XHR2ZWMzIHRsID0gZW52TWFwVGV4ZWxUb0xpbmVhciggdGV4dHVyZTJEKCBlbnZNYXAsIHV2ICkgKS5yZ2I7XG5cdFx0dXYueCArPSB0ZXhlbFNpemU7XG5cdFx0dmVjMyB0ciA9IGVudk1hcFRleGVsVG9MaW5lYXIoIHRleHR1cmUyRCggZW52TWFwLCB1diApICkucmdiO1xuXHRcdHV2LnkgKz0gdGV4ZWxTaXplO1xuXHRcdHZlYzMgYnIgPSBlbnZNYXBUZXhlbFRvTGluZWFyKCB0ZXh0dXJlMkQoIGVudk1hcCwgdXYgKSApLnJnYjtcblx0XHR1di54IC09IHRleGVsU2l6ZTtcblx0XHR2ZWMzIGJsID0gZW52TWFwVGV4ZWxUb0xpbmVhciggdGV4dHVyZTJEKCBlbnZNYXAsIHV2ICkgKS5yZ2I7XG5cdFx0dmVjMyB0bSA9IG1peCggdGwsIHRyLCBmLnggKTtcblx0XHR2ZWMzIGJtID0gbWl4KCBibCwgYnIsIGYueCApO1xuXHRcdHJldHVybiBtaXgoIHRtLCBibSwgZi55ICk7XG5cdH1cblx0I2RlZmluZSByMCAxLjBcblx0I2RlZmluZSB2MCAwLjMzOVxuXHQjZGVmaW5lIG0wIC0gMi4wXG5cdCNkZWZpbmUgcjEgMC44XG5cdCNkZWZpbmUgdjEgMC4yNzZcblx0I2RlZmluZSBtMSAtIDEuMFxuXHQjZGVmaW5lIHI0IDAuNFxuXHQjZGVmaW5lIHY0IDAuMDQ2XG5cdCNkZWZpbmUgbTQgMi4wXG5cdCNkZWZpbmUgcjUgMC4zMDVcblx0I2RlZmluZSB2NSAwLjAxNlxuXHQjZGVmaW5lIG01IDMuMFxuXHQjZGVmaW5lIHI2IDAuMjFcblx0I2RlZmluZSB2NiAwLjAwMzhcblx0I2RlZmluZSBtNiA0LjBcblx0ZmxvYXQgcm91Z2huZXNzVG9NaXAoIGZsb2F0IHJvdWdobmVzcyApIHtcblx0XHRmbG9hdCBtaXAgPSAwLjA7XG5cdFx0aWYgKCByb3VnaG5lc3MgPj0gcjEgKSB7XG5cdFx0XHRtaXAgPSAoIHIwIC0gcm91Z2huZXNzICkgKiAoIG0xIC0gbTAgKSAvICggcjAgLSByMSApICsgbTA7XG5cdFx0fSBlbHNlIGlmICggcm91Z2huZXNzID49IHI0ICkge1xuXHRcdFx0bWlwID0gKCByMSAtIHJvdWdobmVzcyApICogKCBtNCAtIG0xICkgLyAoIHIxIC0gcjQgKSArIG0xO1xuXHRcdH0gZWxzZSBpZiAoIHJvdWdobmVzcyA+PSByNSApIHtcblx0XHRcdG1pcCA9ICggcjQgLSByb3VnaG5lc3MgKSAqICggbTUgLSBtNCApIC8gKCByNCAtIHI1ICkgKyBtNDtcblx0XHR9IGVsc2UgaWYgKCByb3VnaG5lc3MgPj0gcjYgKSB7XG5cdFx0XHRtaXAgPSAoIHI1IC0gcm91Z2huZXNzICkgKiAoIG02IC0gbTUgKSAvICggcjUgLSByNiApICsgbTU7XG5cdFx0fSBlbHNlIHtcblx0XHRcdG1pcCA9IC0gMi4wICogbG9nMiggMS4xNiAqIHJvdWdobmVzcyApO1x0XHR9XG5cdFx0cmV0dXJuIG1pcDtcblx0fVxuXHR2ZWM0IHRleHR1cmVDdWJlVVYoIHNhbXBsZXIyRCBlbnZNYXAsIHZlYzMgc2FtcGxlRGlyLCBmbG9hdCByb3VnaG5lc3MgKSB7XG5cdFx0ZmxvYXQgbWlwID0gY2xhbXAoIHJvdWdobmVzc1RvTWlwKCByb3VnaG5lc3MgKSwgbTAsIGN1YmVVVl9tYXhNaXBMZXZlbCApO1xuXHRcdGZsb2F0IG1pcEYgPSBmcmFjdCggbWlwICk7XG5cdFx0ZmxvYXQgbWlwSW50ID0gZmxvb3IoIG1pcCApO1xuXHRcdHZlYzMgY29sb3IwID0gYmlsaW5lYXJDdWJlVVYoIGVudk1hcCwgc2FtcGxlRGlyLCBtaXBJbnQgKTtcblx0XHRpZiAoIG1pcEYgPT0gMC4wICkge1xuXHRcdFx0cmV0dXJuIHZlYzQoIGNvbG9yMCwgMS4wICk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHZlYzMgY29sb3IxID0gYmlsaW5lYXJDdWJlVVYoIGVudk1hcCwgc2FtcGxlRGlyLCBtaXBJbnQgKyAxLjAgKTtcblx0XHRcdHJldHVybiB2ZWM0KCBtaXgoIGNvbG9yMCwgY29sb3IxLCBtaXBGICksIDEuMCApO1xuXHRcdH1cblx0fVxuI2VuZGlmIixkZWZhdWx0bm9ybWFsX3ZlcnRleDoidmVjMyB0cmFuc2Zvcm1lZE5vcm1hbCA9IG9iamVjdE5vcm1hbDtcbiNpZmRlZiBVU0VfSU5TVEFOQ0lOR1xuXHRtYXQzIG0gPSBtYXQzKCBpbnN0YW5jZU1hdHJpeCApO1xuXHR0cmFuc2Zvcm1lZE5vcm1hbCAvPSB2ZWMzKCBkb3QoIG1bIDAgXSwgbVsgMCBdICksIGRvdCggbVsgMSBdLCBtWyAxIF0gKSwgZG90KCBtWyAyIF0sIG1bIDIgXSApICk7XG5cdHRyYW5zZm9ybWVkTm9ybWFsID0gbSAqIHRyYW5zZm9ybWVkTm9ybWFsO1xuI2VuZGlmXG50cmFuc2Zvcm1lZE5vcm1hbCA9IG5vcm1hbE1hdHJpeCAqIHRyYW5zZm9ybWVkTm9ybWFsO1xuI2lmZGVmIEZMSVBfU0lERURcblx0dHJhbnNmb3JtZWROb3JtYWwgPSAtIHRyYW5zZm9ybWVkTm9ybWFsO1xuI2VuZGlmXG4jaWZkZWYgVVNFX1RBTkdFTlRcblx0dmVjMyB0cmFuc2Zvcm1lZFRhbmdlbnQgPSAoIG1vZGVsVmlld01hdHJpeCAqIHZlYzQoIG9iamVjdFRhbmdlbnQsIDAuMCApICkueHl6O1xuXHQjaWZkZWYgRkxJUF9TSURFRFxuXHRcdHRyYW5zZm9ybWVkVGFuZ2VudCA9IC0gdHJhbnNmb3JtZWRUYW5nZW50O1xuXHQjZW5kaWZcbiNlbmRpZiIsZGlzcGxhY2VtZW50bWFwX3BhcnNfdmVydGV4OiIjaWZkZWYgVVNFX0RJU1BMQUNFTUVOVE1BUFxuXHR1bmlmb3JtIHNhbXBsZXIyRCBkaXNwbGFjZW1lbnRNYXA7XG5cdHVuaWZvcm0gZmxvYXQgZGlzcGxhY2VtZW50U2NhbGU7XG5cdHVuaWZvcm0gZmxvYXQgZGlzcGxhY2VtZW50QmlhcztcbiNlbmRpZiIsZGlzcGxhY2VtZW50bWFwX3ZlcnRleDoiI2lmZGVmIFVTRV9ESVNQTEFDRU1FTlRNQVBcblx0dHJhbnNmb3JtZWQgKz0gbm9ybWFsaXplKCBvYmplY3ROb3JtYWwgKSAqICggdGV4dHVyZTJEKCBkaXNwbGFjZW1lbnRNYXAsIHZVdiApLnggKiBkaXNwbGFjZW1lbnRTY2FsZSArIGRpc3BsYWNlbWVudEJpYXMgKTtcbiNlbmRpZiIsZW1pc3NpdmVtYXBfZnJhZ21lbnQ6IiNpZmRlZiBVU0VfRU1JU1NJVkVNQVBcblx0dmVjNCBlbWlzc2l2ZUNvbG9yID0gdGV4dHVyZTJEKCBlbWlzc2l2ZU1hcCwgdlV2ICk7XG5cdGVtaXNzaXZlQ29sb3IucmdiID0gZW1pc3NpdmVNYXBUZXhlbFRvTGluZWFyKCBlbWlzc2l2ZUNvbG9yICkucmdiO1xuXHR0b3RhbEVtaXNzaXZlUmFkaWFuY2UgKj0gZW1pc3NpdmVDb2xvci5yZ2I7XG4jZW5kaWYiLGVtaXNzaXZlbWFwX3BhcnNfZnJhZ21lbnQ6IiNpZmRlZiBVU0VfRU1JU1NJVkVNQVBcblx0dW5pZm9ybSBzYW1wbGVyMkQgZW1pc3NpdmVNYXA7XG4jZW5kaWYiLGVuY29kaW5nc19mcmFnbWVudDoiZ2xfRnJhZ0NvbG9yID0gbGluZWFyVG9PdXRwdXRUZXhlbCggZ2xfRnJhZ0NvbG9yICk7IixlbmNvZGluZ3NfcGFyc19mcmFnbWVudDoiXG52ZWM0IExpbmVhclRvTGluZWFyKCBpbiB2ZWM0IHZhbHVlICkge1xuXHRyZXR1cm4gdmFsdWU7XG59XG52ZWM0IEdhbW1hVG9MaW5lYXIoIGluIHZlYzQgdmFsdWUsIGluIGZsb2F0IGdhbW1hRmFjdG9yICkge1xuXHRyZXR1cm4gdmVjNCggcG93KCB2YWx1ZS5yZ2IsIHZlYzMoIGdhbW1hRmFjdG9yICkgKSwgdmFsdWUuYSApO1xufVxudmVjNCBMaW5lYXJUb0dhbW1hKCBpbiB2ZWM0IHZhbHVlLCBpbiBmbG9hdCBnYW1tYUZhY3RvciApIHtcblx0cmV0dXJuIHZlYzQoIHBvdyggdmFsdWUucmdiLCB2ZWMzKCAxLjAgLyBnYW1tYUZhY3RvciApICksIHZhbHVlLmEgKTtcbn1cbnZlYzQgc1JHQlRvTGluZWFyKCBpbiB2ZWM0IHZhbHVlICkge1xuXHRyZXR1cm4gdmVjNCggbWl4KCBwb3coIHZhbHVlLnJnYiAqIDAuOTQ3ODY3Mjk4NiArIHZlYzMoIDAuMDUyMTMyNzAxNCApLCB2ZWMzKCAyLjQgKSApLCB2YWx1ZS5yZ2IgKiAwLjA3NzM5OTM4MDgsIHZlYzMoIGxlc3NUaGFuRXF1YWwoIHZhbHVlLnJnYiwgdmVjMyggMC4wNDA0NSApICkgKSApLCB2YWx1ZS5hICk7XG59XG52ZWM0IExpbmVhclRvc1JHQiggaW4gdmVjNCB2YWx1ZSApIHtcblx0cmV0dXJuIHZlYzQoIG1peCggcG93KCB2YWx1ZS5yZ2IsIHZlYzMoIDAuNDE2NjYgKSApICogMS4wNTUgLSB2ZWMzKCAwLjA1NSApLCB2YWx1ZS5yZ2IgKiAxMi45MiwgdmVjMyggbGVzc1RoYW5FcXVhbCggdmFsdWUucmdiLCB2ZWMzKCAwLjAwMzEzMDggKSApICkgKSwgdmFsdWUuYSApO1xufVxudmVjNCBSR0JFVG9MaW5lYXIoIGluIHZlYzQgdmFsdWUgKSB7XG5cdHJldHVybiB2ZWM0KCB2YWx1ZS5yZ2IgKiBleHAyKCB2YWx1ZS5hICogMjU1LjAgLSAxMjguMCApLCAxLjAgKTtcbn1cbnZlYzQgTGluZWFyVG9SR0JFKCBpbiB2ZWM0IHZhbHVlICkge1xuXHRmbG9hdCBtYXhDb21wb25lbnQgPSBtYXgoIG1heCggdmFsdWUuciwgdmFsdWUuZyApLCB2YWx1ZS5iICk7XG5cdGZsb2F0IGZFeHAgPSBjbGFtcCggY2VpbCggbG9nMiggbWF4Q29tcG9uZW50ICkgKSwgLTEyOC4wLCAxMjcuMCApO1xuXHRyZXR1cm4gdmVjNCggdmFsdWUucmdiIC8gZXhwMiggZkV4cCApLCAoIGZFeHAgKyAxMjguMCApIC8gMjU1LjAgKTtcbn1cbnZlYzQgUkdCTVRvTGluZWFyKCBpbiB2ZWM0IHZhbHVlLCBpbiBmbG9hdCBtYXhSYW5nZSApIHtcblx0cmV0dXJuIHZlYzQoIHZhbHVlLnJnYiAqIHZhbHVlLmEgKiBtYXhSYW5nZSwgMS4wICk7XG59XG52ZWM0IExpbmVhclRvUkdCTSggaW4gdmVjNCB2YWx1ZSwgaW4gZmxvYXQgbWF4UmFuZ2UgKSB7XG5cdGZsb2F0IG1heFJHQiA9IG1heCggdmFsdWUuciwgbWF4KCB2YWx1ZS5nLCB2YWx1ZS5iICkgKTtcblx0ZmxvYXQgTSA9IGNsYW1wKCBtYXhSR0IgLyBtYXhSYW5nZSwgMC4wLCAxLjAgKTtcblx0TSA9IGNlaWwoIE0gKiAyNTUuMCApIC8gMjU1LjA7XG5cdHJldHVybiB2ZWM0KCB2YWx1ZS5yZ2IgLyAoIE0gKiBtYXhSYW5nZSApLCBNICk7XG59XG52ZWM0IFJHQkRUb0xpbmVhciggaW4gdmVjNCB2YWx1ZSwgaW4gZmxvYXQgbWF4UmFuZ2UgKSB7XG5cdHJldHVybiB2ZWM0KCB2YWx1ZS5yZ2IgKiAoICggbWF4UmFuZ2UgLyAyNTUuMCApIC8gdmFsdWUuYSApLCAxLjAgKTtcbn1cbnZlYzQgTGluZWFyVG9SR0JEKCBpbiB2ZWM0IHZhbHVlLCBpbiBmbG9hdCBtYXhSYW5nZSApIHtcblx0ZmxvYXQgbWF4UkdCID0gbWF4KCB2YWx1ZS5yLCBtYXgoIHZhbHVlLmcsIHZhbHVlLmIgKSApO1xuXHRmbG9hdCBEID0gbWF4KCBtYXhSYW5nZSAvIG1heFJHQiwgMS4wICk7XG5cdEQgPSBjbGFtcCggZmxvb3IoIEQgKSAvIDI1NS4wLCAwLjAsIDEuMCApO1xuXHRyZXR1cm4gdmVjNCggdmFsdWUucmdiICogKCBEICogKCAyNTUuMCAvIG1heFJhbmdlICkgKSwgRCApO1xufVxuY29uc3QgbWF0MyBjTG9nTHV2TSA9IG1hdDMoIDAuMjIwOSwgMC4zMzkwLCAwLjQxODQsIDAuMTEzOCwgMC42NzgwLCAwLjczMTksIDAuMDEwMiwgMC4xMTMwLCAwLjI5NjkgKTtcbnZlYzQgTGluZWFyVG9Mb2dMdXYoIGluIHZlYzQgdmFsdWUgKSB7XG5cdHZlYzMgWHBfWV9YWVpwID0gY0xvZ0x1dk0gKiB2YWx1ZS5yZ2I7XG5cdFhwX1lfWFlacCA9IG1heCggWHBfWV9YWVpwLCB2ZWMzKCAxZS02LCAxZS02LCAxZS02ICkgKTtcblx0dmVjNCB2UmVzdWx0O1xuXHR2UmVzdWx0Lnh5ID0gWHBfWV9YWVpwLnh5IC8gWHBfWV9YWVpwLno7XG5cdGZsb2F0IExlID0gMi4wICogbG9nMihYcF9ZX1hZWnAueSkgKyAxMjcuMDtcblx0dlJlc3VsdC53ID0gZnJhY3QoIExlICk7XG5cdHZSZXN1bHQueiA9ICggTGUgLSAoIGZsb29yKCB2UmVzdWx0LncgKiAyNTUuMCApICkgLyAyNTUuMCApIC8gMjU1LjA7XG5cdHJldHVybiB2UmVzdWx0O1xufVxuY29uc3QgbWF0MyBjTG9nTHV2SW52ZXJzZU0gPSBtYXQzKCA2LjAwMTQsIC0yLjcwMDgsIC0xLjc5OTYsIC0xLjMzMjAsIDMuMTAyOSwgLTUuNzcyMSwgMC4zMDA4LCAtMS4wODgyLCA1LjYyNjggKTtcbnZlYzQgTG9nTHV2VG9MaW5lYXIoIGluIHZlYzQgdmFsdWUgKSB7XG5cdGZsb2F0IExlID0gdmFsdWUueiAqIDI1NS4wICsgdmFsdWUudztcblx0dmVjMyBYcF9ZX1hZWnA7XG5cdFhwX1lfWFlacC55ID0gZXhwMiggKCBMZSAtIDEyNy4wICkgLyAyLjAgKTtcblx0WHBfWV9YWVpwLnogPSBYcF9ZX1hZWnAueSAvIHZhbHVlLnk7XG5cdFhwX1lfWFlacC54ID0gdmFsdWUueCAqIFhwX1lfWFlacC56O1xuXHR2ZWMzIHZSR0IgPSBjTG9nTHV2SW52ZXJzZU0gKiBYcF9ZX1hZWnAucmdiO1xuXHRyZXR1cm4gdmVjNCggbWF4KCB2UkdCLCAwLjAgKSwgMS4wICk7XG59IixlbnZtYXBfZnJhZ21lbnQ6IiNpZmRlZiBVU0VfRU5WTUFQXG5cdCNpZmRlZiBFTlZfV09STERQT1Ncblx0XHR2ZWMzIGNhbWVyYVRvRnJhZztcblx0XHRpZiAoIGlzT3J0aG9ncmFwaGljICkge1xuXHRcdFx0Y2FtZXJhVG9GcmFnID0gbm9ybWFsaXplKCB2ZWMzKCAtIHZpZXdNYXRyaXhbIDAgXVsgMiBdLCAtIHZpZXdNYXRyaXhbIDEgXVsgMiBdLCAtIHZpZXdNYXRyaXhbIDIgXVsgMiBdICkgKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Y2FtZXJhVG9GcmFnID0gbm9ybWFsaXplKCB2V29ybGRQb3NpdGlvbiAtIGNhbWVyYVBvc2l0aW9uICk7XG5cdFx0fVxuXHRcdHZlYzMgd29ybGROb3JtYWwgPSBpbnZlcnNlVHJhbnNmb3JtRGlyZWN0aW9uKCBub3JtYWwsIHZpZXdNYXRyaXggKTtcblx0XHQjaWZkZWYgRU5WTUFQX01PREVfUkVGTEVDVElPTlxuXHRcdFx0dmVjMyByZWZsZWN0VmVjID0gcmVmbGVjdCggY2FtZXJhVG9GcmFnLCB3b3JsZE5vcm1hbCApO1xuXHRcdCNlbHNlXG5cdFx0XHR2ZWMzIHJlZmxlY3RWZWMgPSByZWZyYWN0KCBjYW1lcmFUb0ZyYWcsIHdvcmxkTm9ybWFsLCByZWZyYWN0aW9uUmF0aW8gKTtcblx0XHQjZW5kaWZcblx0I2Vsc2Vcblx0XHR2ZWMzIHJlZmxlY3RWZWMgPSB2UmVmbGVjdDtcblx0I2VuZGlmXG5cdCNpZmRlZiBFTlZNQVBfVFlQRV9DVUJFXG5cdFx0dmVjNCBlbnZDb2xvciA9IHRleHR1cmVDdWJlKCBlbnZNYXAsIHZlYzMoIGZsaXBFbnZNYXAgKiByZWZsZWN0VmVjLngsIHJlZmxlY3RWZWMueXogKSApO1xuXHQjZWxpZiBkZWZpbmVkKCBFTlZNQVBfVFlQRV9DVUJFX1VWIClcblx0XHR2ZWM0IGVudkNvbG9yID0gdGV4dHVyZUN1YmVVViggZW52TWFwLCByZWZsZWN0VmVjLCAwLjAgKTtcblx0I2Vsc2Vcblx0XHR2ZWM0IGVudkNvbG9yID0gdmVjNCggMC4wICk7XG5cdCNlbmRpZlxuXHQjaWZuZGVmIEVOVk1BUF9UWVBFX0NVQkVfVVZcblx0XHRlbnZDb2xvciA9IGVudk1hcFRleGVsVG9MaW5lYXIoIGVudkNvbG9yICk7XG5cdCNlbmRpZlxuXHQjaWZkZWYgRU5WTUFQX0JMRU5ESU5HX01VTFRJUExZXG5cdFx0b3V0Z29pbmdMaWdodCA9IG1peCggb3V0Z29pbmdMaWdodCwgb3V0Z29pbmdMaWdodCAqIGVudkNvbG9yLnh5eiwgc3BlY3VsYXJTdHJlbmd0aCAqIHJlZmxlY3Rpdml0eSApO1xuXHQjZWxpZiBkZWZpbmVkKCBFTlZNQVBfQkxFTkRJTkdfTUlYIClcblx0XHRvdXRnb2luZ0xpZ2h0ID0gbWl4KCBvdXRnb2luZ0xpZ2h0LCBlbnZDb2xvci54eXosIHNwZWN1bGFyU3RyZW5ndGggKiByZWZsZWN0aXZpdHkgKTtcblx0I2VsaWYgZGVmaW5lZCggRU5WTUFQX0JMRU5ESU5HX0FERCApXG5cdFx0b3V0Z29pbmdMaWdodCArPSBlbnZDb2xvci54eXogKiBzcGVjdWxhclN0cmVuZ3RoICogcmVmbGVjdGl2aXR5O1xuXHQjZW5kaWZcbiNlbmRpZiIsZW52bWFwX2NvbW1vbl9wYXJzX2ZyYWdtZW50OiIjaWZkZWYgVVNFX0VOVk1BUFxuXHR1bmlmb3JtIGZsb2F0IGVudk1hcEludGVuc2l0eTtcblx0dW5pZm9ybSBmbG9hdCBmbGlwRW52TWFwO1xuXHR1bmlmb3JtIGludCBtYXhNaXBMZXZlbDtcblx0I2lmZGVmIEVOVk1BUF9UWVBFX0NVQkVcblx0XHR1bmlmb3JtIHNhbXBsZXJDdWJlIGVudk1hcDtcblx0I2Vsc2Vcblx0XHR1bmlmb3JtIHNhbXBsZXIyRCBlbnZNYXA7XG5cdCNlbmRpZlxuXHRcbiNlbmRpZiIsZW52bWFwX3BhcnNfZnJhZ21lbnQ6IiNpZmRlZiBVU0VfRU5WTUFQXG5cdHVuaWZvcm0gZmxvYXQgcmVmbGVjdGl2aXR5O1xuXHQjaWYgZGVmaW5lZCggVVNFX0JVTVBNQVAgKSB8fCBkZWZpbmVkKCBVU0VfTk9STUFMTUFQICkgfHwgZGVmaW5lZCggUEhPTkcgKVxuXHRcdCNkZWZpbmUgRU5WX1dPUkxEUE9TXG5cdCNlbmRpZlxuXHQjaWZkZWYgRU5WX1dPUkxEUE9TXG5cdFx0dmFyeWluZyB2ZWMzIHZXb3JsZFBvc2l0aW9uO1xuXHRcdHVuaWZvcm0gZmxvYXQgcmVmcmFjdGlvblJhdGlvO1xuXHQjZWxzZVxuXHRcdHZhcnlpbmcgdmVjMyB2UmVmbGVjdDtcblx0I2VuZGlmXG4jZW5kaWYiLGVudm1hcF9wYXJzX3ZlcnRleDoiI2lmZGVmIFVTRV9FTlZNQVBcblx0I2lmIGRlZmluZWQoIFVTRV9CVU1QTUFQICkgfHwgZGVmaW5lZCggVVNFX05PUk1BTE1BUCApIHx8ZGVmaW5lZCggUEhPTkcgKVxuXHRcdCNkZWZpbmUgRU5WX1dPUkxEUE9TXG5cdCNlbmRpZlxuXHQjaWZkZWYgRU5WX1dPUkxEUE9TXG5cdFx0XG5cdFx0dmFyeWluZyB2ZWMzIHZXb3JsZFBvc2l0aW9uO1xuXHQjZWxzZVxuXHRcdHZhcnlpbmcgdmVjMyB2UmVmbGVjdDtcblx0XHR1bmlmb3JtIGZsb2F0IHJlZnJhY3Rpb25SYXRpbztcblx0I2VuZGlmXG4jZW5kaWYiLGVudm1hcF9waHlzaWNhbF9wYXJzX2ZyYWdtZW50OiIjaWYgZGVmaW5lZCggVVNFX0VOVk1BUCApXG5cdCNpZmRlZiBFTlZNQVBfTU9ERV9SRUZSQUNUSU9OXG5cdFx0dW5pZm9ybSBmbG9hdCByZWZyYWN0aW9uUmF0aW87XG5cdCNlbmRpZlxuXHR2ZWMzIGdldExpZ2h0UHJvYmVJbmRpcmVjdElycmFkaWFuY2UoIGNvbnN0IGluIEdlb21ldHJpY0NvbnRleHQgZ2VvbWV0cnksIGNvbnN0IGluIGludCBtYXhNSVBMZXZlbCApIHtcblx0XHR2ZWMzIHdvcmxkTm9ybWFsID0gaW52ZXJzZVRyYW5zZm9ybURpcmVjdGlvbiggZ2VvbWV0cnkubm9ybWFsLCB2aWV3TWF0cml4ICk7XG5cdFx0I2lmZGVmIEVOVk1BUF9UWVBFX0NVQkVcblx0XHRcdHZlYzMgcXVlcnlWZWMgPSB2ZWMzKCBmbGlwRW52TWFwICogd29ybGROb3JtYWwueCwgd29ybGROb3JtYWwueXogKTtcblx0XHRcdCNpZmRlZiBURVhUVVJFX0xPRF9FWFRcblx0XHRcdFx0dmVjNCBlbnZNYXBDb2xvciA9IHRleHR1cmVDdWJlTG9kRVhUKCBlbnZNYXAsIHF1ZXJ5VmVjLCBmbG9hdCggbWF4TUlQTGV2ZWwgKSApO1xuXHRcdFx0I2Vsc2Vcblx0XHRcdFx0dmVjNCBlbnZNYXBDb2xvciA9IHRleHR1cmVDdWJlKCBlbnZNYXAsIHF1ZXJ5VmVjLCBmbG9hdCggbWF4TUlQTGV2ZWwgKSApO1xuXHRcdFx0I2VuZGlmXG5cdFx0XHRlbnZNYXBDb2xvci5yZ2IgPSBlbnZNYXBUZXhlbFRvTGluZWFyKCBlbnZNYXBDb2xvciApLnJnYjtcblx0XHQjZWxpZiBkZWZpbmVkKCBFTlZNQVBfVFlQRV9DVUJFX1VWIClcblx0XHRcdHZlYzQgZW52TWFwQ29sb3IgPSB0ZXh0dXJlQ3ViZVVWKCBlbnZNYXAsIHdvcmxkTm9ybWFsLCAxLjAgKTtcblx0XHQjZWxzZVxuXHRcdFx0dmVjNCBlbnZNYXBDb2xvciA9IHZlYzQoIDAuMCApO1xuXHRcdCNlbmRpZlxuXHRcdHJldHVybiBQSSAqIGVudk1hcENvbG9yLnJnYiAqIGVudk1hcEludGVuc2l0eTtcblx0fVxuXHRmbG9hdCBnZXRTcGVjdWxhck1JUExldmVsKCBjb25zdCBpbiBmbG9hdCByb3VnaG5lc3MsIGNvbnN0IGluIGludCBtYXhNSVBMZXZlbCApIHtcblx0XHRmbG9hdCBtYXhNSVBMZXZlbFNjYWxhciA9IGZsb2F0KCBtYXhNSVBMZXZlbCApO1xuXHRcdGZsb2F0IHNpZ21hID0gUEkgKiByb3VnaG5lc3MgKiByb3VnaG5lc3MgLyAoIDEuMCArIHJvdWdobmVzcyApO1xuXHRcdGZsb2F0IGRlc2lyZWRNSVBMZXZlbCA9IG1heE1JUExldmVsU2NhbGFyICsgbG9nMiggc2lnbWEgKTtcblx0XHRyZXR1cm4gY2xhbXAoIGRlc2lyZWRNSVBMZXZlbCwgMC4wLCBtYXhNSVBMZXZlbFNjYWxhciApO1xuXHR9XG5cdHZlYzMgZ2V0TGlnaHRQcm9iZUluZGlyZWN0UmFkaWFuY2UoIGNvbnN0IGluIHZlYzMgdmlld0RpciwgY29uc3QgaW4gdmVjMyBub3JtYWwsIGNvbnN0IGluIGZsb2F0IHJvdWdobmVzcywgY29uc3QgaW4gaW50IG1heE1JUExldmVsICkge1xuXHRcdCNpZmRlZiBFTlZNQVBfTU9ERV9SRUZMRUNUSU9OXG5cdFx0XHR2ZWMzIHJlZmxlY3RWZWMgPSByZWZsZWN0KCAtdmlld0Rpciwgbm9ybWFsICk7XG5cdFx0XHRyZWZsZWN0VmVjID0gbm9ybWFsaXplKCBtaXgoIHJlZmxlY3RWZWMsIG5vcm1hbCwgcm91Z2huZXNzICogcm91Z2huZXNzKSApO1xuXHRcdCNlbHNlXG5cdFx0XHR2ZWMzIHJlZmxlY3RWZWMgPSByZWZyYWN0KCAtdmlld0Rpciwgbm9ybWFsLCByZWZyYWN0aW9uUmF0aW8gKTtcblx0XHQjZW5kaWZcblx0XHRyZWZsZWN0VmVjID0gaW52ZXJzZVRyYW5zZm9ybURpcmVjdGlvbiggcmVmbGVjdFZlYywgdmlld01hdHJpeCApO1xuXHRcdGZsb2F0IHNwZWN1bGFyTUlQTGV2ZWwgPSBnZXRTcGVjdWxhck1JUExldmVsKCByb3VnaG5lc3MsIG1heE1JUExldmVsICk7XG5cdFx0I2lmZGVmIEVOVk1BUF9UWVBFX0NVQkVcblx0XHRcdHZlYzMgcXVlcnlSZWZsZWN0VmVjID0gdmVjMyggZmxpcEVudk1hcCAqIHJlZmxlY3RWZWMueCwgcmVmbGVjdFZlYy55eiApO1xuXHRcdFx0I2lmZGVmIFRFWFRVUkVfTE9EX0VYVFxuXHRcdFx0XHR2ZWM0IGVudk1hcENvbG9yID0gdGV4dHVyZUN1YmVMb2RFWFQoIGVudk1hcCwgcXVlcnlSZWZsZWN0VmVjLCBzcGVjdWxhck1JUExldmVsICk7XG5cdFx0XHQjZWxzZVxuXHRcdFx0XHR2ZWM0IGVudk1hcENvbG9yID0gdGV4dHVyZUN1YmUoIGVudk1hcCwgcXVlcnlSZWZsZWN0VmVjLCBzcGVjdWxhck1JUExldmVsICk7XG5cdFx0XHQjZW5kaWZcblx0XHRcdGVudk1hcENvbG9yLnJnYiA9IGVudk1hcFRleGVsVG9MaW5lYXIoIGVudk1hcENvbG9yICkucmdiO1xuXHRcdCNlbGlmIGRlZmluZWQoIEVOVk1BUF9UWVBFX0NVQkVfVVYgKVxuXHRcdFx0dmVjNCBlbnZNYXBDb2xvciA9IHRleHR1cmVDdWJlVVYoIGVudk1hcCwgcmVmbGVjdFZlYywgcm91Z2huZXNzICk7XG5cdFx0I2VuZGlmXG5cdFx0cmV0dXJuIGVudk1hcENvbG9yLnJnYiAqIGVudk1hcEludGVuc2l0eTtcblx0fVxuI2VuZGlmIixlbnZtYXBfdmVydGV4OiIjaWZkZWYgVVNFX0VOVk1BUFxuXHQjaWZkZWYgRU5WX1dPUkxEUE9TXG5cdFx0dldvcmxkUG9zaXRpb24gPSB3b3JsZFBvc2l0aW9uLnh5ejtcblx0I2Vsc2Vcblx0XHR2ZWMzIGNhbWVyYVRvVmVydGV4O1xuXHRcdGlmICggaXNPcnRob2dyYXBoaWMgKSB7XG5cdFx0XHRjYW1lcmFUb1ZlcnRleCA9IG5vcm1hbGl6ZSggdmVjMyggLSB2aWV3TWF0cml4WyAwIF1bIDIgXSwgLSB2aWV3TWF0cml4WyAxIF1bIDIgXSwgLSB2aWV3TWF0cml4WyAyIF1bIDIgXSApICk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGNhbWVyYVRvVmVydGV4ID0gbm9ybWFsaXplKCB3b3JsZFBvc2l0aW9uLnh5eiAtIGNhbWVyYVBvc2l0aW9uICk7XG5cdFx0fVxuXHRcdHZlYzMgd29ybGROb3JtYWwgPSBpbnZlcnNlVHJhbnNmb3JtRGlyZWN0aW9uKCB0cmFuc2Zvcm1lZE5vcm1hbCwgdmlld01hdHJpeCApO1xuXHRcdCNpZmRlZiBFTlZNQVBfTU9ERV9SRUZMRUNUSU9OXG5cdFx0XHR2UmVmbGVjdCA9IHJlZmxlY3QoIGNhbWVyYVRvVmVydGV4LCB3b3JsZE5vcm1hbCApO1xuXHRcdCNlbHNlXG5cdFx0XHR2UmVmbGVjdCA9IHJlZnJhY3QoIGNhbWVyYVRvVmVydGV4LCB3b3JsZE5vcm1hbCwgcmVmcmFjdGlvblJhdGlvICk7XG5cdFx0I2VuZGlmXG5cdCNlbmRpZlxuI2VuZGlmIixmb2dfdmVydGV4OiIjaWZkZWYgVVNFX0ZPR1xuXHRmb2dEZXB0aCA9IC0gbXZQb3NpdGlvbi56O1xuI2VuZGlmIixmb2dfcGFyc192ZXJ0ZXg6IiNpZmRlZiBVU0VfRk9HXG5cdHZhcnlpbmcgZmxvYXQgZm9nRGVwdGg7XG4jZW5kaWYiLGZvZ19mcmFnbWVudDoiI2lmZGVmIFVTRV9GT0dcblx0I2lmZGVmIEZPR19FWFAyXG5cdFx0ZmxvYXQgZm9nRmFjdG9yID0gMS4wIC0gZXhwKCAtIGZvZ0RlbnNpdHkgKiBmb2dEZW5zaXR5ICogZm9nRGVwdGggKiBmb2dEZXB0aCApO1xuXHQjZWxzZVxuXHRcdGZsb2F0IGZvZ0ZhY3RvciA9IHNtb290aHN0ZXAoIGZvZ05lYXIsIGZvZ0ZhciwgZm9nRGVwdGggKTtcblx0I2VuZGlmXG5cdGdsX0ZyYWdDb2xvci5yZ2IgPSBtaXgoIGdsX0ZyYWdDb2xvci5yZ2IsIGZvZ0NvbG9yLCBmb2dGYWN0b3IgKTtcbiNlbmRpZiIsZm9nX3BhcnNfZnJhZ21lbnQ6IiNpZmRlZiBVU0VfRk9HXG5cdHVuaWZvcm0gdmVjMyBmb2dDb2xvcjtcblx0dmFyeWluZyBmbG9hdCBmb2dEZXB0aDtcblx0I2lmZGVmIEZPR19FWFAyXG5cdFx0dW5pZm9ybSBmbG9hdCBmb2dEZW5zaXR5O1xuXHQjZWxzZVxuXHRcdHVuaWZvcm0gZmxvYXQgZm9nTmVhcjtcblx0XHR1bmlmb3JtIGZsb2F0IGZvZ0Zhcjtcblx0I2VuZGlmXG4jZW5kaWYiLGdyYWRpZW50bWFwX3BhcnNfZnJhZ21lbnQ6IiNpZmRlZiBVU0VfR1JBRElFTlRNQVBcblx0dW5pZm9ybSBzYW1wbGVyMkQgZ3JhZGllbnRNYXA7XG4jZW5kaWZcbnZlYzMgZ2V0R3JhZGllbnRJcnJhZGlhbmNlKCB2ZWMzIG5vcm1hbCwgdmVjMyBsaWdodERpcmVjdGlvbiApIHtcblx0ZmxvYXQgZG90TkwgPSBkb3QoIG5vcm1hbCwgbGlnaHREaXJlY3Rpb24gKTtcblx0dmVjMiBjb29yZCA9IHZlYzIoIGRvdE5MICogMC41ICsgMC41LCAwLjAgKTtcblx0I2lmZGVmIFVTRV9HUkFESUVOVE1BUFxuXHRcdHJldHVybiB0ZXh0dXJlMkQoIGdyYWRpZW50TWFwLCBjb29yZCApLnJnYjtcblx0I2Vsc2Vcblx0XHRyZXR1cm4gKCBjb29yZC54IDwgMC43ICkgPyB2ZWMzKCAwLjcgKSA6IHZlYzMoIDEuMCApO1xuXHQjZW5kaWZcbn0iLGxpZ2h0bWFwX2ZyYWdtZW50OiIjaWZkZWYgVVNFX0xJR0hUTUFQXG5cdHZlYzQgbGlnaHRNYXBUZXhlbD0gdGV4dHVyZTJEKCBsaWdodE1hcCwgdlV2MiApO1xuXHRyZWZsZWN0ZWRMaWdodC5pbmRpcmVjdERpZmZ1c2UgKz0gUEkgKiBsaWdodE1hcFRleGVsVG9MaW5lYXIoIGxpZ2h0TWFwVGV4ZWwgKS5yZ2IgKiBsaWdodE1hcEludGVuc2l0eTtcbiNlbmRpZiIsbGlnaHRtYXBfcGFyc19mcmFnbWVudDoiI2lmZGVmIFVTRV9MSUdIVE1BUFxuXHR1bmlmb3JtIHNhbXBsZXIyRCBsaWdodE1hcDtcblx0dW5pZm9ybSBmbG9hdCBsaWdodE1hcEludGVuc2l0eTtcbiNlbmRpZiIsbGlnaHRzX2xhbWJlcnRfdmVydGV4OiJ2ZWMzIGRpZmZ1c2UgPSB2ZWMzKCAxLjAgKTtcbkdlb21ldHJpY0NvbnRleHQgZ2VvbWV0cnk7XG5nZW9tZXRyeS5wb3NpdGlvbiA9IG12UG9zaXRpb24ueHl6O1xuZ2VvbWV0cnkubm9ybWFsID0gbm9ybWFsaXplKCB0cmFuc2Zvcm1lZE5vcm1hbCApO1xuZ2VvbWV0cnkudmlld0RpciA9ICggaXNPcnRob2dyYXBoaWMgKSA/IHZlYzMoIDAsIDAsIDEgKSA6IG5vcm1hbGl6ZSggLW12UG9zaXRpb24ueHl6ICk7XG5HZW9tZXRyaWNDb250ZXh0IGJhY2tHZW9tZXRyeTtcbmJhY2tHZW9tZXRyeS5wb3NpdGlvbiA9IGdlb21ldHJ5LnBvc2l0aW9uO1xuYmFja0dlb21ldHJ5Lm5vcm1hbCA9IC1nZW9tZXRyeS5ub3JtYWw7XG5iYWNrR2VvbWV0cnkudmlld0RpciA9IGdlb21ldHJ5LnZpZXdEaXI7XG52TGlnaHRGcm9udCA9IHZlYzMoIDAuMCApO1xudkluZGlyZWN0RnJvbnQgPSB2ZWMzKCAwLjAgKTtcbiNpZmRlZiBET1VCTEVfU0lERURcblx0dkxpZ2h0QmFjayA9IHZlYzMoIDAuMCApO1xuXHR2SW5kaXJlY3RCYWNrID0gdmVjMyggMC4wICk7XG4jZW5kaWZcbkluY2lkZW50TGlnaHQgZGlyZWN0TGlnaHQ7XG5mbG9hdCBkb3ROTDtcbnZlYzMgZGlyZWN0TGlnaHRDb2xvcl9EaWZmdXNlO1xudkluZGlyZWN0RnJvbnQgKz0gZ2V0QW1iaWVudExpZ2h0SXJyYWRpYW5jZSggYW1iaWVudExpZ2h0Q29sb3IgKTtcbnZJbmRpcmVjdEZyb250ICs9IGdldExpZ2h0UHJvYmVJcnJhZGlhbmNlKCBsaWdodFByb2JlLCBnZW9tZXRyeSApO1xuI2lmZGVmIERPVUJMRV9TSURFRFxuXHR2SW5kaXJlY3RCYWNrICs9IGdldEFtYmllbnRMaWdodElycmFkaWFuY2UoIGFtYmllbnRMaWdodENvbG9yICk7XG5cdHZJbmRpcmVjdEJhY2sgKz0gZ2V0TGlnaHRQcm9iZUlycmFkaWFuY2UoIGxpZ2h0UHJvYmUsIGJhY2tHZW9tZXRyeSApO1xuI2VuZGlmXG4jaWYgTlVNX1BPSU5UX0xJR0hUUyA+IDBcblx0I3ByYWdtYSB1bnJvbGxfbG9vcF9zdGFydFxuXHRmb3IgKCBpbnQgaSA9IDA7IGkgPCBOVU1fUE9JTlRfTElHSFRTOyBpICsrICkge1xuXHRcdGdldFBvaW50RGlyZWN0TGlnaHRJcnJhZGlhbmNlKCBwb2ludExpZ2h0c1sgaSBdLCBnZW9tZXRyeSwgZGlyZWN0TGlnaHQgKTtcblx0XHRkb3ROTCA9IGRvdCggZ2VvbWV0cnkubm9ybWFsLCBkaXJlY3RMaWdodC5kaXJlY3Rpb24gKTtcblx0XHRkaXJlY3RMaWdodENvbG9yX0RpZmZ1c2UgPSBQSSAqIGRpcmVjdExpZ2h0LmNvbG9yO1xuXHRcdHZMaWdodEZyb250ICs9IHNhdHVyYXRlKCBkb3ROTCApICogZGlyZWN0TGlnaHRDb2xvcl9EaWZmdXNlO1xuXHRcdCNpZmRlZiBET1VCTEVfU0lERURcblx0XHRcdHZMaWdodEJhY2sgKz0gc2F0dXJhdGUoIC1kb3ROTCApICogZGlyZWN0TGlnaHRDb2xvcl9EaWZmdXNlO1xuXHRcdCNlbmRpZlxuXHR9XG5cdCNwcmFnbWEgdW5yb2xsX2xvb3BfZW5kXG4jZW5kaWZcbiNpZiBOVU1fU1BPVF9MSUdIVFMgPiAwXG5cdCNwcmFnbWEgdW5yb2xsX2xvb3Bfc3RhcnRcblx0Zm9yICggaW50IGkgPSAwOyBpIDwgTlVNX1NQT1RfTElHSFRTOyBpICsrICkge1xuXHRcdGdldFNwb3REaXJlY3RMaWdodElycmFkaWFuY2UoIHNwb3RMaWdodHNbIGkgXSwgZ2VvbWV0cnksIGRpcmVjdExpZ2h0ICk7XG5cdFx0ZG90TkwgPSBkb3QoIGdlb21ldHJ5Lm5vcm1hbCwgZGlyZWN0TGlnaHQuZGlyZWN0aW9uICk7XG5cdFx0ZGlyZWN0TGlnaHRDb2xvcl9EaWZmdXNlID0gUEkgKiBkaXJlY3RMaWdodC5jb2xvcjtcblx0XHR2TGlnaHRGcm9udCArPSBzYXR1cmF0ZSggZG90TkwgKSAqIGRpcmVjdExpZ2h0Q29sb3JfRGlmZnVzZTtcblx0XHQjaWZkZWYgRE9VQkxFX1NJREVEXG5cdFx0XHR2TGlnaHRCYWNrICs9IHNhdHVyYXRlKCAtZG90TkwgKSAqIGRpcmVjdExpZ2h0Q29sb3JfRGlmZnVzZTtcblx0XHQjZW5kaWZcblx0fVxuXHQjcHJhZ21hIHVucm9sbF9sb29wX2VuZFxuI2VuZGlmXG4jaWYgTlVNX0RJUl9MSUdIVFMgPiAwXG5cdCNwcmFnbWEgdW5yb2xsX2xvb3Bfc3RhcnRcblx0Zm9yICggaW50IGkgPSAwOyBpIDwgTlVNX0RJUl9MSUdIVFM7IGkgKysgKSB7XG5cdFx0Z2V0RGlyZWN0aW9uYWxEaXJlY3RMaWdodElycmFkaWFuY2UoIGRpcmVjdGlvbmFsTGlnaHRzWyBpIF0sIGdlb21ldHJ5LCBkaXJlY3RMaWdodCApO1xuXHRcdGRvdE5MID0gZG90KCBnZW9tZXRyeS5ub3JtYWwsIGRpcmVjdExpZ2h0LmRpcmVjdGlvbiApO1xuXHRcdGRpcmVjdExpZ2h0Q29sb3JfRGlmZnVzZSA9IFBJICogZGlyZWN0TGlnaHQuY29sb3I7XG5cdFx0dkxpZ2h0RnJvbnQgKz0gc2F0dXJhdGUoIGRvdE5MICkgKiBkaXJlY3RMaWdodENvbG9yX0RpZmZ1c2U7XG5cdFx0I2lmZGVmIERPVUJMRV9TSURFRFxuXHRcdFx0dkxpZ2h0QmFjayArPSBzYXR1cmF0ZSggLWRvdE5MICkgKiBkaXJlY3RMaWdodENvbG9yX0RpZmZ1c2U7XG5cdFx0I2VuZGlmXG5cdH1cblx0I3ByYWdtYSB1bnJvbGxfbG9vcF9lbmRcbiNlbmRpZlxuI2lmIE5VTV9IRU1JX0xJR0hUUyA+IDBcblx0I3ByYWdtYSB1bnJvbGxfbG9vcF9zdGFydFxuXHRmb3IgKCBpbnQgaSA9IDA7IGkgPCBOVU1fSEVNSV9MSUdIVFM7IGkgKysgKSB7XG5cdFx0dkluZGlyZWN0RnJvbnQgKz0gZ2V0SGVtaXNwaGVyZUxpZ2h0SXJyYWRpYW5jZSggaGVtaXNwaGVyZUxpZ2h0c1sgaSBdLCBnZW9tZXRyeSApO1xuXHRcdCNpZmRlZiBET1VCTEVfU0lERURcblx0XHRcdHZJbmRpcmVjdEJhY2sgKz0gZ2V0SGVtaXNwaGVyZUxpZ2h0SXJyYWRpYW5jZSggaGVtaXNwaGVyZUxpZ2h0c1sgaSBdLCBiYWNrR2VvbWV0cnkgKTtcblx0XHQjZW5kaWZcblx0fVxuXHQjcHJhZ21hIHVucm9sbF9sb29wX2VuZFxuI2VuZGlmIixsaWdodHNfcGFyc19iZWdpbjoidW5pZm9ybSBib29sIHJlY2VpdmVTaGFkb3c7XG51bmlmb3JtIHZlYzMgYW1iaWVudExpZ2h0Q29sb3I7XG51bmlmb3JtIHZlYzMgbGlnaHRQcm9iZVsgOSBdO1xudmVjMyBzaEdldElycmFkaWFuY2VBdCggaW4gdmVjMyBub3JtYWwsIGluIHZlYzMgc2hDb2VmZmljaWVudHNbIDkgXSApIHtcblx0ZmxvYXQgeCA9IG5vcm1hbC54LCB5ID0gbm9ybWFsLnksIHogPSBub3JtYWwuejtcblx0dmVjMyByZXN1bHQgPSBzaENvZWZmaWNpZW50c1sgMCBdICogMC44ODYyMjc7XG5cdHJlc3VsdCArPSBzaENvZWZmaWNpZW50c1sgMSBdICogMi4wICogMC41MTE2NjQgKiB5O1xuXHRyZXN1bHQgKz0gc2hDb2VmZmljaWVudHNbIDIgXSAqIDIuMCAqIDAuNTExNjY0ICogejtcblx0cmVzdWx0ICs9IHNoQ29lZmZpY2llbnRzWyAzIF0gKiAyLjAgKiAwLjUxMTY2NCAqIHg7XG5cdHJlc3VsdCArPSBzaENvZWZmaWNpZW50c1sgNCBdICogMi4wICogMC40MjkwNDMgKiB4ICogeTtcblx0cmVzdWx0ICs9IHNoQ29lZmZpY2llbnRzWyA1IF0gKiAyLjAgKiAwLjQyOTA0MyAqIHkgKiB6O1xuXHRyZXN1bHQgKz0gc2hDb2VmZmljaWVudHNbIDYgXSAqICggMC43NDMxMjUgKiB6ICogeiAtIDAuMjQ3NzA4ICk7XG5cdHJlc3VsdCArPSBzaENvZWZmaWNpZW50c1sgNyBdICogMi4wICogMC40MjkwNDMgKiB4ICogejtcblx0cmVzdWx0ICs9IHNoQ29lZmZpY2llbnRzWyA4IF0gKiAwLjQyOTA0MyAqICggeCAqIHggLSB5ICogeSApO1xuXHRyZXR1cm4gcmVzdWx0O1xufVxudmVjMyBnZXRMaWdodFByb2JlSXJyYWRpYW5jZSggY29uc3QgaW4gdmVjMyBsaWdodFByb2JlWyA5IF0sIGNvbnN0IGluIEdlb21ldHJpY0NvbnRleHQgZ2VvbWV0cnkgKSB7XG5cdHZlYzMgd29ybGROb3JtYWwgPSBpbnZlcnNlVHJhbnNmb3JtRGlyZWN0aW9uKCBnZW9tZXRyeS5ub3JtYWwsIHZpZXdNYXRyaXggKTtcblx0dmVjMyBpcnJhZGlhbmNlID0gc2hHZXRJcnJhZGlhbmNlQXQoIHdvcmxkTm9ybWFsLCBsaWdodFByb2JlICk7XG5cdHJldHVybiBpcnJhZGlhbmNlO1xufVxudmVjMyBnZXRBbWJpZW50TGlnaHRJcnJhZGlhbmNlKCBjb25zdCBpbiB2ZWMzIGFtYmllbnRMaWdodENvbG9yICkge1xuXHR2ZWMzIGlycmFkaWFuY2UgPSBhbWJpZW50TGlnaHRDb2xvcjtcblx0I2lmbmRlZiBQSFlTSUNBTExZX0NPUlJFQ1RfTElHSFRTXG5cdFx0aXJyYWRpYW5jZSAqPSBQSTtcblx0I2VuZGlmXG5cdHJldHVybiBpcnJhZGlhbmNlO1xufVxuI2lmIE5VTV9ESVJfTElHSFRTID4gMFxuXHRzdHJ1Y3QgRGlyZWN0aW9uYWxMaWdodCB7XG5cdFx0dmVjMyBkaXJlY3Rpb247XG5cdFx0dmVjMyBjb2xvcjtcblx0fTtcblx0dW5pZm9ybSBEaXJlY3Rpb25hbExpZ2h0IGRpcmVjdGlvbmFsTGlnaHRzWyBOVU1fRElSX0xJR0hUUyBdO1xuXHR2b2lkIGdldERpcmVjdGlvbmFsRGlyZWN0TGlnaHRJcnJhZGlhbmNlKCBjb25zdCBpbiBEaXJlY3Rpb25hbExpZ2h0IGRpcmVjdGlvbmFsTGlnaHQsIGNvbnN0IGluIEdlb21ldHJpY0NvbnRleHQgZ2VvbWV0cnksIG91dCBJbmNpZGVudExpZ2h0IGRpcmVjdExpZ2h0ICkge1xuXHRcdGRpcmVjdExpZ2h0LmNvbG9yID0gZGlyZWN0aW9uYWxMaWdodC5jb2xvcjtcblx0XHRkaXJlY3RMaWdodC5kaXJlY3Rpb24gPSBkaXJlY3Rpb25hbExpZ2h0LmRpcmVjdGlvbjtcblx0XHRkaXJlY3RMaWdodC52aXNpYmxlID0gdHJ1ZTtcblx0fVxuI2VuZGlmXG4jaWYgTlVNX1BPSU5UX0xJR0hUUyA+IDBcblx0c3RydWN0IFBvaW50TGlnaHQge1xuXHRcdHZlYzMgcG9zaXRpb247XG5cdFx0dmVjMyBjb2xvcjtcblx0XHRmbG9hdCBkaXN0YW5jZTtcblx0XHRmbG9hdCBkZWNheTtcblx0fTtcblx0dW5pZm9ybSBQb2ludExpZ2h0IHBvaW50TGlnaHRzWyBOVU1fUE9JTlRfTElHSFRTIF07XG5cdHZvaWQgZ2V0UG9pbnREaXJlY3RMaWdodElycmFkaWFuY2UoIGNvbnN0IGluIFBvaW50TGlnaHQgcG9pbnRMaWdodCwgY29uc3QgaW4gR2VvbWV0cmljQ29udGV4dCBnZW9tZXRyeSwgb3V0IEluY2lkZW50TGlnaHQgZGlyZWN0TGlnaHQgKSB7XG5cdFx0dmVjMyBsVmVjdG9yID0gcG9pbnRMaWdodC5wb3NpdGlvbiAtIGdlb21ldHJ5LnBvc2l0aW9uO1xuXHRcdGRpcmVjdExpZ2h0LmRpcmVjdGlvbiA9IG5vcm1hbGl6ZSggbFZlY3RvciApO1xuXHRcdGZsb2F0IGxpZ2h0RGlzdGFuY2UgPSBsZW5ndGgoIGxWZWN0b3IgKTtcblx0XHRkaXJlY3RMaWdodC5jb2xvciA9IHBvaW50TGlnaHQuY29sb3I7XG5cdFx0ZGlyZWN0TGlnaHQuY29sb3IgKj0gcHVuY3R1YWxMaWdodEludGVuc2l0eVRvSXJyYWRpYW5jZUZhY3RvciggbGlnaHREaXN0YW5jZSwgcG9pbnRMaWdodC5kaXN0YW5jZSwgcG9pbnRMaWdodC5kZWNheSApO1xuXHRcdGRpcmVjdExpZ2h0LnZpc2libGUgPSAoIGRpcmVjdExpZ2h0LmNvbG9yICE9IHZlYzMoIDAuMCApICk7XG5cdH1cbiNlbmRpZlxuI2lmIE5VTV9TUE9UX0xJR0hUUyA+IDBcblx0c3RydWN0IFNwb3RMaWdodCB7XG5cdFx0dmVjMyBwb3NpdGlvbjtcblx0XHR2ZWMzIGRpcmVjdGlvbjtcblx0XHR2ZWMzIGNvbG9yO1xuXHRcdGZsb2F0IGRpc3RhbmNlO1xuXHRcdGZsb2F0IGRlY2F5O1xuXHRcdGZsb2F0IGNvbmVDb3M7XG5cdFx0ZmxvYXQgcGVudW1icmFDb3M7XG5cdH07XG5cdHVuaWZvcm0gU3BvdExpZ2h0IHNwb3RMaWdodHNbIE5VTV9TUE9UX0xJR0hUUyBdO1xuXHR2b2lkIGdldFNwb3REaXJlY3RMaWdodElycmFkaWFuY2UoIGNvbnN0IGluIFNwb3RMaWdodCBzcG90TGlnaHQsIGNvbnN0IGluIEdlb21ldHJpY0NvbnRleHQgZ2VvbWV0cnksIG91dCBJbmNpZGVudExpZ2h0IGRpcmVjdExpZ2h0ICkge1xuXHRcdHZlYzMgbFZlY3RvciA9IHNwb3RMaWdodC5wb3NpdGlvbiAtIGdlb21ldHJ5LnBvc2l0aW9uO1xuXHRcdGRpcmVjdExpZ2h0LmRpcmVjdGlvbiA9IG5vcm1hbGl6ZSggbFZlY3RvciApO1xuXHRcdGZsb2F0IGxpZ2h0RGlzdGFuY2UgPSBsZW5ndGgoIGxWZWN0b3IgKTtcblx0XHRmbG9hdCBhbmdsZUNvcyA9IGRvdCggZGlyZWN0TGlnaHQuZGlyZWN0aW9uLCBzcG90TGlnaHQuZGlyZWN0aW9uICk7XG5cdFx0aWYgKCBhbmdsZUNvcyA+IHNwb3RMaWdodC5jb25lQ29zICkge1xuXHRcdFx0ZmxvYXQgc3BvdEVmZmVjdCA9IHNtb290aHN0ZXAoIHNwb3RMaWdodC5jb25lQ29zLCBzcG90TGlnaHQucGVudW1icmFDb3MsIGFuZ2xlQ29zICk7XG5cdFx0XHRkaXJlY3RMaWdodC5jb2xvciA9IHNwb3RMaWdodC5jb2xvcjtcblx0XHRcdGRpcmVjdExpZ2h0LmNvbG9yICo9IHNwb3RFZmZlY3QgKiBwdW5jdHVhbExpZ2h0SW50ZW5zaXR5VG9JcnJhZGlhbmNlRmFjdG9yKCBsaWdodERpc3RhbmNlLCBzcG90TGlnaHQuZGlzdGFuY2UsIHNwb3RMaWdodC5kZWNheSApO1xuXHRcdFx0ZGlyZWN0TGlnaHQudmlzaWJsZSA9IHRydWU7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGRpcmVjdExpZ2h0LmNvbG9yID0gdmVjMyggMC4wICk7XG5cdFx0XHRkaXJlY3RMaWdodC52aXNpYmxlID0gZmFsc2U7XG5cdFx0fVxuXHR9XG4jZW5kaWZcbiNpZiBOVU1fUkVDVF9BUkVBX0xJR0hUUyA+IDBcblx0c3RydWN0IFJlY3RBcmVhTGlnaHQge1xuXHRcdHZlYzMgY29sb3I7XG5cdFx0dmVjMyBwb3NpdGlvbjtcblx0XHR2ZWMzIGhhbGZXaWR0aDtcblx0XHR2ZWMzIGhhbGZIZWlnaHQ7XG5cdH07XG5cdHVuaWZvcm0gc2FtcGxlcjJEIGx0Y18xO1x0dW5pZm9ybSBzYW1wbGVyMkQgbHRjXzI7XG5cdHVuaWZvcm0gUmVjdEFyZWFMaWdodCByZWN0QXJlYUxpZ2h0c1sgTlVNX1JFQ1RfQVJFQV9MSUdIVFMgXTtcbiNlbmRpZlxuI2lmIE5VTV9IRU1JX0xJR0hUUyA+IDBcblx0c3RydWN0IEhlbWlzcGhlcmVMaWdodCB7XG5cdFx0dmVjMyBkaXJlY3Rpb247XG5cdFx0dmVjMyBza3lDb2xvcjtcblx0XHR2ZWMzIGdyb3VuZENvbG9yO1xuXHR9O1xuXHR1bmlmb3JtIEhlbWlzcGhlcmVMaWdodCBoZW1pc3BoZXJlTGlnaHRzWyBOVU1fSEVNSV9MSUdIVFMgXTtcblx0dmVjMyBnZXRIZW1pc3BoZXJlTGlnaHRJcnJhZGlhbmNlKCBjb25zdCBpbiBIZW1pc3BoZXJlTGlnaHQgaGVtaUxpZ2h0LCBjb25zdCBpbiBHZW9tZXRyaWNDb250ZXh0IGdlb21ldHJ5ICkge1xuXHRcdGZsb2F0IGRvdE5MID0gZG90KCBnZW9tZXRyeS5ub3JtYWwsIGhlbWlMaWdodC5kaXJlY3Rpb24gKTtcblx0XHRmbG9hdCBoZW1pRGlmZnVzZVdlaWdodCA9IDAuNSAqIGRvdE5MICsgMC41O1xuXHRcdHZlYzMgaXJyYWRpYW5jZSA9IG1peCggaGVtaUxpZ2h0Lmdyb3VuZENvbG9yLCBoZW1pTGlnaHQuc2t5Q29sb3IsIGhlbWlEaWZmdXNlV2VpZ2h0ICk7XG5cdFx0I2lmbmRlZiBQSFlTSUNBTExZX0NPUlJFQ1RfTElHSFRTXG5cdFx0XHRpcnJhZGlhbmNlICo9IFBJO1xuXHRcdCNlbmRpZlxuXHRcdHJldHVybiBpcnJhZGlhbmNlO1xuXHR9XG4jZW5kaWYiLGxpZ2h0c190b29uX2ZyYWdtZW50OiJUb29uTWF0ZXJpYWwgbWF0ZXJpYWw7XG5tYXRlcmlhbC5kaWZmdXNlQ29sb3IgPSBkaWZmdXNlQ29sb3IucmdiOyIsbGlnaHRzX3Rvb25fcGFyc19mcmFnbWVudDoidmFyeWluZyB2ZWMzIHZWaWV3UG9zaXRpb247XG4jaWZuZGVmIEZMQVRfU0hBREVEXG5cdHZhcnlpbmcgdmVjMyB2Tm9ybWFsO1xuI2VuZGlmXG5zdHJ1Y3QgVG9vbk1hdGVyaWFsIHtcblx0dmVjMyBkaWZmdXNlQ29sb3I7XG59O1xudm9pZCBSRV9EaXJlY3RfVG9vbiggY29uc3QgaW4gSW5jaWRlbnRMaWdodCBkaXJlY3RMaWdodCwgY29uc3QgaW4gR2VvbWV0cmljQ29udGV4dCBnZW9tZXRyeSwgY29uc3QgaW4gVG9vbk1hdGVyaWFsIG1hdGVyaWFsLCBpbm91dCBSZWZsZWN0ZWRMaWdodCByZWZsZWN0ZWRMaWdodCApIHtcblx0dmVjMyBpcnJhZGlhbmNlID0gZ2V0R3JhZGllbnRJcnJhZGlhbmNlKCBnZW9tZXRyeS5ub3JtYWwsIGRpcmVjdExpZ2h0LmRpcmVjdGlvbiApICogZGlyZWN0TGlnaHQuY29sb3I7XG5cdCNpZm5kZWYgUEhZU0lDQUxMWV9DT1JSRUNUX0xJR0hUU1xuXHRcdGlycmFkaWFuY2UgKj0gUEk7XG5cdCNlbmRpZlxuXHRyZWZsZWN0ZWRMaWdodC5kaXJlY3REaWZmdXNlICs9IGlycmFkaWFuY2UgKiBCUkRGX0RpZmZ1c2VfTGFtYmVydCggbWF0ZXJpYWwuZGlmZnVzZUNvbG9yICk7XG59XG52b2lkIFJFX0luZGlyZWN0RGlmZnVzZV9Ub29uKCBjb25zdCBpbiB2ZWMzIGlycmFkaWFuY2UsIGNvbnN0IGluIEdlb21ldHJpY0NvbnRleHQgZ2VvbWV0cnksIGNvbnN0IGluIFRvb25NYXRlcmlhbCBtYXRlcmlhbCwgaW5vdXQgUmVmbGVjdGVkTGlnaHQgcmVmbGVjdGVkTGlnaHQgKSB7XG5cdHJlZmxlY3RlZExpZ2h0LmluZGlyZWN0RGlmZnVzZSArPSBpcnJhZGlhbmNlICogQlJERl9EaWZmdXNlX0xhbWJlcnQoIG1hdGVyaWFsLmRpZmZ1c2VDb2xvciApO1xufVxuI2RlZmluZSBSRV9EaXJlY3RcdFx0XHRcdFJFX0RpcmVjdF9Ub29uXG4jZGVmaW5lIFJFX0luZGlyZWN0RGlmZnVzZVx0XHRSRV9JbmRpcmVjdERpZmZ1c2VfVG9vblxuI2RlZmluZSBNYXRlcmlhbF9MaWdodFByb2JlTE9EKCBtYXRlcmlhbCApXHQoMCkiLGxpZ2h0c19waG9uZ19mcmFnbWVudDoiQmxpbm5QaG9uZ01hdGVyaWFsIG1hdGVyaWFsO1xubWF0ZXJpYWwuZGlmZnVzZUNvbG9yID0gZGlmZnVzZUNvbG9yLnJnYjtcbm1hdGVyaWFsLnNwZWN1bGFyQ29sb3IgPSBzcGVjdWxhcjtcbm1hdGVyaWFsLnNwZWN1bGFyU2hpbmluZXNzID0gc2hpbmluZXNzO1xubWF0ZXJpYWwuc3BlY3VsYXJTdHJlbmd0aCA9IHNwZWN1bGFyU3RyZW5ndGg7IixsaWdodHNfcGhvbmdfcGFyc19mcmFnbWVudDoidmFyeWluZyB2ZWMzIHZWaWV3UG9zaXRpb247XG4jaWZuZGVmIEZMQVRfU0hBREVEXG5cdHZhcnlpbmcgdmVjMyB2Tm9ybWFsO1xuI2VuZGlmXG5zdHJ1Y3QgQmxpbm5QaG9uZ01hdGVyaWFsIHtcblx0dmVjMyBkaWZmdXNlQ29sb3I7XG5cdHZlYzMgc3BlY3VsYXJDb2xvcjtcblx0ZmxvYXQgc3BlY3VsYXJTaGluaW5lc3M7XG5cdGZsb2F0IHNwZWN1bGFyU3RyZW5ndGg7XG59O1xudm9pZCBSRV9EaXJlY3RfQmxpbm5QaG9uZyggY29uc3QgaW4gSW5jaWRlbnRMaWdodCBkaXJlY3RMaWdodCwgY29uc3QgaW4gR2VvbWV0cmljQ29udGV4dCBnZW9tZXRyeSwgY29uc3QgaW4gQmxpbm5QaG9uZ01hdGVyaWFsIG1hdGVyaWFsLCBpbm91dCBSZWZsZWN0ZWRMaWdodCByZWZsZWN0ZWRMaWdodCApIHtcblx0ZmxvYXQgZG90TkwgPSBzYXR1cmF0ZSggZG90KCBnZW9tZXRyeS5ub3JtYWwsIGRpcmVjdExpZ2h0LmRpcmVjdGlvbiApICk7XG5cdHZlYzMgaXJyYWRpYW5jZSA9IGRvdE5MICogZGlyZWN0TGlnaHQuY29sb3I7XG5cdCNpZm5kZWYgUEhZU0lDQUxMWV9DT1JSRUNUX0xJR0hUU1xuXHRcdGlycmFkaWFuY2UgKj0gUEk7XG5cdCNlbmRpZlxuXHRyZWZsZWN0ZWRMaWdodC5kaXJlY3REaWZmdXNlICs9IGlycmFkaWFuY2UgKiBCUkRGX0RpZmZ1c2VfTGFtYmVydCggbWF0ZXJpYWwuZGlmZnVzZUNvbG9yICk7XG5cdHJlZmxlY3RlZExpZ2h0LmRpcmVjdFNwZWN1bGFyICs9IGlycmFkaWFuY2UgKiBCUkRGX1NwZWN1bGFyX0JsaW5uUGhvbmcoIGRpcmVjdExpZ2h0LCBnZW9tZXRyeSwgbWF0ZXJpYWwuc3BlY3VsYXJDb2xvciwgbWF0ZXJpYWwuc3BlY3VsYXJTaGluaW5lc3MgKSAqIG1hdGVyaWFsLnNwZWN1bGFyU3RyZW5ndGg7XG59XG52b2lkIFJFX0luZGlyZWN0RGlmZnVzZV9CbGlublBob25nKCBjb25zdCBpbiB2ZWMzIGlycmFkaWFuY2UsIGNvbnN0IGluIEdlb21ldHJpY0NvbnRleHQgZ2VvbWV0cnksIGNvbnN0IGluIEJsaW5uUGhvbmdNYXRlcmlhbCBtYXRlcmlhbCwgaW5vdXQgUmVmbGVjdGVkTGlnaHQgcmVmbGVjdGVkTGlnaHQgKSB7XG5cdHJlZmxlY3RlZExpZ2h0LmluZGlyZWN0RGlmZnVzZSArPSBpcnJhZGlhbmNlICogQlJERl9EaWZmdXNlX0xhbWJlcnQoIG1hdGVyaWFsLmRpZmZ1c2VDb2xvciApO1xufVxuI2RlZmluZSBSRV9EaXJlY3RcdFx0XHRcdFJFX0RpcmVjdF9CbGlublBob25nXG4jZGVmaW5lIFJFX0luZGlyZWN0RGlmZnVzZVx0XHRSRV9JbmRpcmVjdERpZmZ1c2VfQmxpbm5QaG9uZ1xuI2RlZmluZSBNYXRlcmlhbF9MaWdodFByb2JlTE9EKCBtYXRlcmlhbCApXHQoMCkiLGxpZ2h0c19waHlzaWNhbF9mcmFnbWVudDoiUGh5c2ljYWxNYXRlcmlhbCBtYXRlcmlhbDtcbm1hdGVyaWFsLmRpZmZ1c2VDb2xvciA9IGRpZmZ1c2VDb2xvci5yZ2IgKiAoIDEuMCAtIG1ldGFsbmVzc0ZhY3RvciApO1xudmVjMyBkeHkgPSBtYXgoIGFicyggZEZkeCggZ2VvbWV0cnlOb3JtYWwgKSApLCBhYnMoIGRGZHkoIGdlb21ldHJ5Tm9ybWFsICkgKSApO1xuZmxvYXQgZ2VvbWV0cnlSb3VnaG5lc3MgPSBtYXgoIG1heCggZHh5LngsIGR4eS55ICksIGR4eS56ICk7XG5tYXRlcmlhbC5zcGVjdWxhclJvdWdobmVzcyA9IG1heCggcm91Z2huZXNzRmFjdG9yLCAwLjA1MjUgKTttYXRlcmlhbC5zcGVjdWxhclJvdWdobmVzcyArPSBnZW9tZXRyeVJvdWdobmVzcztcbm1hdGVyaWFsLnNwZWN1bGFyUm91Z2huZXNzID0gbWluKCBtYXRlcmlhbC5zcGVjdWxhclJvdWdobmVzcywgMS4wICk7XG4jaWZkZWYgUkVGTEVDVElWSVRZXG5cdCNpZmRlZiBTUEVDVUxBUlxuXHRcdHZlYzMgc3BlY3VsYXJJbnRlbnNpdHlGYWN0b3IgPSB2ZWMzKCBzcGVjdWxhckludGVuc2l0eSApO1xuXHRcdHZlYzMgc3BlY3VsYXJUaW50RmFjdG9yID0gc3BlY3VsYXJUaW50O1xuXHRcdCNpZmRlZiBVU0VfU1BFQ1VMQVJJTlRFTlNJVFlNQVBcblx0XHRcdHNwZWN1bGFySW50ZW5zaXR5RmFjdG9yICo9IHRleHR1cmUyRCggc3BlY3VsYXJJbnRlbnNpdHlNYXAsIHZVdiApLmE7XG5cdFx0I2VuZGlmXG5cdFx0I2lmZGVmIFVTRV9TUEVDVUxBUlRJTlRNQVBcblx0XHRcdHNwZWN1bGFyVGludEZhY3RvciAqPSBzcGVjdWxhclRpbnRNYXBUZXhlbFRvTGluZWFyKCB0ZXh0dXJlMkQoIHNwZWN1bGFyVGludE1hcCwgdlV2ICkgKS5yZ2I7XG5cdFx0I2VuZGlmXG5cdFx0bWF0ZXJpYWwuc3BlY3VsYXJDb2xvckY5MCA9IG1peCggc3BlY3VsYXJJbnRlbnNpdHlGYWN0b3IsIHZlYzMoIDEuMCApLCBtZXRhbG5lc3NGYWN0b3IgKTtcblx0I2Vsc2Vcblx0XHR2ZWMzIHNwZWN1bGFySW50ZW5zaXR5RmFjdG9yID0gdmVjMyggMS4wICk7XG5cdFx0dmVjMyBzcGVjdWxhclRpbnRGYWN0b3IgPSB2ZWMzKCAxLjAgKTtcblx0XHRtYXRlcmlhbC5zcGVjdWxhckNvbG9yRjkwID0gdmVjMyggMS4wICk7XG5cdCNlbmRpZlxuXHRtYXRlcmlhbC5zcGVjdWxhckNvbG9yID0gbWl4KCBtaW4oIHZlYzMoIE1BWElNVU1fU1BFQ1VMQVJfQ09FRkZJQ0lFTlQgKiBwb3cyKCByZWZsZWN0aXZpdHkgKSApICogc3BlY3VsYXJUaW50RmFjdG9yLCB2ZWMzKCAxLjAgKSApICogc3BlY3VsYXJJbnRlbnNpdHlGYWN0b3IsIGRpZmZ1c2VDb2xvci5yZ2IsIG1ldGFsbmVzc0ZhY3RvciApO1xuI2Vsc2Vcblx0bWF0ZXJpYWwuc3BlY3VsYXJDb2xvciA9IG1peCggdmVjMyggREVGQVVMVF9TUEVDVUxBUl9DT0VGRklDSUVOVCApLCBkaWZmdXNlQ29sb3IucmdiLCBtZXRhbG5lc3NGYWN0b3IgKTtcblx0bWF0ZXJpYWwuc3BlY3VsYXJDb2xvckY5MCA9IHZlYzMoIDEuMCApO1xuI2VuZGlmXG4jaWZkZWYgQ0xFQVJDT0FUXG5cdG1hdGVyaWFsLmNsZWFyY29hdCA9IGNsZWFyY29hdDtcblx0bWF0ZXJpYWwuY2xlYXJjb2F0Um91Z2huZXNzID0gY2xlYXJjb2F0Um91Z2huZXNzO1xuXHQjaWZkZWYgVVNFX0NMRUFSQ09BVE1BUFxuXHRcdG1hdGVyaWFsLmNsZWFyY29hdCAqPSB0ZXh0dXJlMkQoIGNsZWFyY29hdE1hcCwgdlV2ICkueDtcblx0I2VuZGlmXG5cdCNpZmRlZiBVU0VfQ0xFQVJDT0FUX1JPVUdITkVTU01BUFxuXHRcdG1hdGVyaWFsLmNsZWFyY29hdFJvdWdobmVzcyAqPSB0ZXh0dXJlMkQoIGNsZWFyY29hdFJvdWdobmVzc01hcCwgdlV2ICkueTtcblx0I2VuZGlmXG5cdG1hdGVyaWFsLmNsZWFyY29hdCA9IHNhdHVyYXRlKCBtYXRlcmlhbC5jbGVhcmNvYXQgKTtcdG1hdGVyaWFsLmNsZWFyY29hdFJvdWdobmVzcyA9IG1heCggbWF0ZXJpYWwuY2xlYXJjb2F0Um91Z2huZXNzLCAwLjA1MjUgKTtcblx0bWF0ZXJpYWwuY2xlYXJjb2F0Um91Z2huZXNzICs9IGdlb21ldHJ5Um91Z2huZXNzO1xuXHRtYXRlcmlhbC5jbGVhcmNvYXRSb3VnaG5lc3MgPSBtaW4oIG1hdGVyaWFsLmNsZWFyY29hdFJvdWdobmVzcywgMS4wICk7XG4jZW5kaWZcbiNpZmRlZiBVU0VfU0hFRU5cblx0bWF0ZXJpYWwuc2hlZW5Db2xvciA9IHNoZWVuO1xuI2VuZGlmIixsaWdodHNfcGh5c2ljYWxfcGFyc19mcmFnbWVudDoic3RydWN0IFBoeXNpY2FsTWF0ZXJpYWwge1xuXHR2ZWMzIGRpZmZ1c2VDb2xvcjtcblx0ZmxvYXQgc3BlY3VsYXJSb3VnaG5lc3M7XG5cdHZlYzMgc3BlY3VsYXJDb2xvcjtcblx0dmVjMyBzcGVjdWxhckNvbG9yRjkwO1xuI2lmZGVmIENMRUFSQ09BVFxuXHRmbG9hdCBjbGVhcmNvYXQ7XG5cdGZsb2F0IGNsZWFyY29hdFJvdWdobmVzcztcbiNlbmRpZlxuI2lmZGVmIFVTRV9TSEVFTlxuXHR2ZWMzIHNoZWVuQ29sb3I7XG4jZW5kaWZcbn07XG4jZGVmaW5lIE1BWElNVU1fU1BFQ1VMQVJfQ09FRkZJQ0lFTlQgMC4xNlxuI2RlZmluZSBERUZBVUxUX1NQRUNVTEFSX0NPRUZGSUNJRU5UIDAuMDRcbmZsb2F0IGNsZWFyY29hdERIUkFwcHJveCggY29uc3QgaW4gZmxvYXQgcm91Z2huZXNzLCBjb25zdCBpbiBmbG9hdCBkb3ROTCApIHtcblx0cmV0dXJuIERFRkFVTFRfU1BFQ1VMQVJfQ09FRkZJQ0lFTlQgKyAoIDEuMCAtIERFRkFVTFRfU1BFQ1VMQVJfQ09FRkZJQ0lFTlQgKSAqICggcG93KCAxLjAgLSBkb3ROTCwgNS4wICkgKiBwb3coIDEuMCAtIHJvdWdobmVzcywgMi4wICkgKTtcbn1cbiNpZiBOVU1fUkVDVF9BUkVBX0xJR0hUUyA+IDBcblx0dm9pZCBSRV9EaXJlY3RfUmVjdEFyZWFfUGh5c2ljYWwoIGNvbnN0IGluIFJlY3RBcmVhTGlnaHQgcmVjdEFyZWFMaWdodCwgY29uc3QgaW4gR2VvbWV0cmljQ29udGV4dCBnZW9tZXRyeSwgY29uc3QgaW4gUGh5c2ljYWxNYXRlcmlhbCBtYXRlcmlhbCwgaW5vdXQgUmVmbGVjdGVkTGlnaHQgcmVmbGVjdGVkTGlnaHQgKSB7XG5cdFx0dmVjMyBub3JtYWwgPSBnZW9tZXRyeS5ub3JtYWw7XG5cdFx0dmVjMyB2aWV3RGlyID0gZ2VvbWV0cnkudmlld0Rpcjtcblx0XHR2ZWMzIHBvc2l0aW9uID0gZ2VvbWV0cnkucG9zaXRpb247XG5cdFx0dmVjMyBsaWdodFBvcyA9IHJlY3RBcmVhTGlnaHQucG9zaXRpb247XG5cdFx0dmVjMyBoYWxmV2lkdGggPSByZWN0QXJlYUxpZ2h0LmhhbGZXaWR0aDtcblx0XHR2ZWMzIGhhbGZIZWlnaHQgPSByZWN0QXJlYUxpZ2h0LmhhbGZIZWlnaHQ7XG5cdFx0dmVjMyBsaWdodENvbG9yID0gcmVjdEFyZWFMaWdodC5jb2xvcjtcblx0XHRmbG9hdCByb3VnaG5lc3MgPSBtYXRlcmlhbC5zcGVjdWxhclJvdWdobmVzcztcblx0XHR2ZWMzIHJlY3RDb29yZHNbIDQgXTtcblx0XHRyZWN0Q29vcmRzWyAwIF0gPSBsaWdodFBvcyArIGhhbGZXaWR0aCAtIGhhbGZIZWlnaHQ7XHRcdHJlY3RDb29yZHNbIDEgXSA9IGxpZ2h0UG9zIC0gaGFsZldpZHRoIC0gaGFsZkhlaWdodDtcblx0XHRyZWN0Q29vcmRzWyAyIF0gPSBsaWdodFBvcyAtIGhhbGZXaWR0aCArIGhhbGZIZWlnaHQ7XG5cdFx0cmVjdENvb3Jkc1sgMyBdID0gbGlnaHRQb3MgKyBoYWxmV2lkdGggKyBoYWxmSGVpZ2h0O1xuXHRcdHZlYzIgdXYgPSBMVENfVXYoIG5vcm1hbCwgdmlld0Rpciwgcm91Z2huZXNzICk7XG5cdFx0dmVjNCB0MSA9IHRleHR1cmUyRCggbHRjXzEsIHV2ICk7XG5cdFx0dmVjNCB0MiA9IHRleHR1cmUyRCggbHRjXzIsIHV2ICk7XG5cdFx0bWF0MyBtSW52ID0gbWF0Myhcblx0XHRcdHZlYzMoIHQxLngsIDAsIHQxLnkgKSxcblx0XHRcdHZlYzMoICAgIDAsIDEsICAgIDAgKSxcblx0XHRcdHZlYzMoIHQxLnosIDAsIHQxLncgKVxuXHRcdCk7XG5cdFx0dmVjMyBmcmVzbmVsID0gKCBtYXRlcmlhbC5zcGVjdWxhckNvbG9yICogdDIueCArICggdmVjMyggMS4wICkgLSBtYXRlcmlhbC5zcGVjdWxhckNvbG9yICkgKiB0Mi55ICk7XG5cdFx0cmVmbGVjdGVkTGlnaHQuZGlyZWN0U3BlY3VsYXIgKz0gbGlnaHRDb2xvciAqIGZyZXNuZWwgKiBMVENfRXZhbHVhdGUoIG5vcm1hbCwgdmlld0RpciwgcG9zaXRpb24sIG1JbnYsIHJlY3RDb29yZHMgKTtcblx0XHRyZWZsZWN0ZWRMaWdodC5kaXJlY3REaWZmdXNlICs9IGxpZ2h0Q29sb3IgKiBtYXRlcmlhbC5kaWZmdXNlQ29sb3IgKiBMVENfRXZhbHVhdGUoIG5vcm1hbCwgdmlld0RpciwgcG9zaXRpb24sIG1hdDMoIDEuMCApLCByZWN0Q29vcmRzICk7XG5cdH1cbiNlbmRpZlxudm9pZCBSRV9EaXJlY3RfUGh5c2ljYWwoIGNvbnN0IGluIEluY2lkZW50TGlnaHQgZGlyZWN0TGlnaHQsIGNvbnN0IGluIEdlb21ldHJpY0NvbnRleHQgZ2VvbWV0cnksIGNvbnN0IGluIFBoeXNpY2FsTWF0ZXJpYWwgbWF0ZXJpYWwsIGlub3V0IFJlZmxlY3RlZExpZ2h0IHJlZmxlY3RlZExpZ2h0ICkge1xuXHRmbG9hdCBkb3ROTCA9IHNhdHVyYXRlKCBkb3QoIGdlb21ldHJ5Lm5vcm1hbCwgZGlyZWN0TGlnaHQuZGlyZWN0aW9uICkgKTtcblx0dmVjMyBpcnJhZGlhbmNlID0gZG90TkwgKiBkaXJlY3RMaWdodC5jb2xvcjtcblx0I2lmbmRlZiBQSFlTSUNBTExZX0NPUlJFQ1RfTElHSFRTXG5cdFx0aXJyYWRpYW5jZSAqPSBQSTtcblx0I2VuZGlmXG5cdCNpZmRlZiBDTEVBUkNPQVRcblx0XHRmbG9hdCBjY0RvdE5MID0gc2F0dXJhdGUoIGRvdCggZ2VvbWV0cnkuY2xlYXJjb2F0Tm9ybWFsLCBkaXJlY3RMaWdodC5kaXJlY3Rpb24gKSApO1xuXHRcdHZlYzMgY2NJcnJhZGlhbmNlID0gY2NEb3ROTCAqIGRpcmVjdExpZ2h0LmNvbG9yO1xuXHRcdCNpZm5kZWYgUEhZU0lDQUxMWV9DT1JSRUNUX0xJR0hUU1xuXHRcdFx0Y2NJcnJhZGlhbmNlICo9IFBJO1xuXHRcdCNlbmRpZlxuXHRcdGZsb2F0IGNsZWFyY29hdERIUiA9IG1hdGVyaWFsLmNsZWFyY29hdCAqIGNsZWFyY29hdERIUkFwcHJveCggbWF0ZXJpYWwuY2xlYXJjb2F0Um91Z2huZXNzLCBjY0RvdE5MICk7XG5cdFx0cmVmbGVjdGVkTGlnaHQuZGlyZWN0U3BlY3VsYXIgKz0gY2NJcnJhZGlhbmNlICogbWF0ZXJpYWwuY2xlYXJjb2F0ICogQlJERl9TcGVjdWxhcl9HR1goIGRpcmVjdExpZ2h0LCBnZW9tZXRyeS52aWV3RGlyLCBnZW9tZXRyeS5jbGVhcmNvYXROb3JtYWwsIHZlYzMoIERFRkFVTFRfU1BFQ1VMQVJfQ09FRkZJQ0lFTlQgKSwgdmVjMyggMS4wICksIG1hdGVyaWFsLmNsZWFyY29hdFJvdWdobmVzcyApO1xuXHQjZWxzZVxuXHRcdGZsb2F0IGNsZWFyY29hdERIUiA9IDAuMDtcblx0I2VuZGlmXG5cdCNpZmRlZiBVU0VfU0hFRU5cblx0XHRyZWZsZWN0ZWRMaWdodC5kaXJlY3RTcGVjdWxhciArPSAoIDEuMCAtIGNsZWFyY29hdERIUiApICogaXJyYWRpYW5jZSAqIEJSREZfU3BlY3VsYXJfU2hlZW4oXG5cdFx0XHRtYXRlcmlhbC5zcGVjdWxhclJvdWdobmVzcyxcblx0XHRcdGRpcmVjdExpZ2h0LmRpcmVjdGlvbixcblx0XHRcdGdlb21ldHJ5LFxuXHRcdFx0bWF0ZXJpYWwuc2hlZW5Db2xvclxuXHRcdCk7XG5cdCNlbHNlXG5cdFx0cmVmbGVjdGVkTGlnaHQuZGlyZWN0U3BlY3VsYXIgKz0gKCAxLjAgLSBjbGVhcmNvYXRESFIgKSAqIGlycmFkaWFuY2UgKiBCUkRGX1NwZWN1bGFyX0dHWCggZGlyZWN0TGlnaHQsIGdlb21ldHJ5LnZpZXdEaXIsIGdlb21ldHJ5Lm5vcm1hbCwgbWF0ZXJpYWwuc3BlY3VsYXJDb2xvciwgbWF0ZXJpYWwuc3BlY3VsYXJDb2xvckY5MCwgbWF0ZXJpYWwuc3BlY3VsYXJSb3VnaG5lc3MpO1xuXHQjZW5kaWZcblx0cmVmbGVjdGVkTGlnaHQuZGlyZWN0RGlmZnVzZSArPSAoIDEuMCAtIGNsZWFyY29hdERIUiApICogaXJyYWRpYW5jZSAqIEJSREZfRGlmZnVzZV9MYW1iZXJ0KCBtYXRlcmlhbC5kaWZmdXNlQ29sb3IgKTtcbn1cbnZvaWQgUkVfSW5kaXJlY3REaWZmdXNlX1BoeXNpY2FsKCBjb25zdCBpbiB2ZWMzIGlycmFkaWFuY2UsIGNvbnN0IGluIEdlb21ldHJpY0NvbnRleHQgZ2VvbWV0cnksIGNvbnN0IGluIFBoeXNpY2FsTWF0ZXJpYWwgbWF0ZXJpYWwsIGlub3V0IFJlZmxlY3RlZExpZ2h0IHJlZmxlY3RlZExpZ2h0ICkge1xuXHRyZWZsZWN0ZWRMaWdodC5pbmRpcmVjdERpZmZ1c2UgKz0gaXJyYWRpYW5jZSAqIEJSREZfRGlmZnVzZV9MYW1iZXJ0KCBtYXRlcmlhbC5kaWZmdXNlQ29sb3IgKTtcbn1cbnZvaWQgUkVfSW5kaXJlY3RTcGVjdWxhcl9QaHlzaWNhbCggY29uc3QgaW4gdmVjMyByYWRpYW5jZSwgY29uc3QgaW4gdmVjMyBpcnJhZGlhbmNlLCBjb25zdCBpbiB2ZWMzIGNsZWFyY29hdFJhZGlhbmNlLCBjb25zdCBpbiBHZW9tZXRyaWNDb250ZXh0IGdlb21ldHJ5LCBjb25zdCBpbiBQaHlzaWNhbE1hdGVyaWFsIG1hdGVyaWFsLCBpbm91dCBSZWZsZWN0ZWRMaWdodCByZWZsZWN0ZWRMaWdodCkge1xuXHQjaWZkZWYgQ0xFQVJDT0FUXG5cdFx0ZmxvYXQgY2NEb3ROViA9IHNhdHVyYXRlKCBkb3QoIGdlb21ldHJ5LmNsZWFyY29hdE5vcm1hbCwgZ2VvbWV0cnkudmlld0RpciApICk7XG5cdFx0cmVmbGVjdGVkTGlnaHQuaW5kaXJlY3RTcGVjdWxhciArPSBjbGVhcmNvYXRSYWRpYW5jZSAqIG1hdGVyaWFsLmNsZWFyY29hdCAqIEJSREZfU3BlY3VsYXJfR0dYX0Vudmlyb25tZW50KCBnZW9tZXRyeS52aWV3RGlyLCBnZW9tZXRyeS5jbGVhcmNvYXROb3JtYWwsIHZlYzMoIERFRkFVTFRfU1BFQ1VMQVJfQ09FRkZJQ0lFTlQgKSwgbWF0ZXJpYWwuY2xlYXJjb2F0Um91Z2huZXNzICk7XG5cdFx0ZmxvYXQgY2NEb3ROTCA9IGNjRG90TlY7XG5cdFx0ZmxvYXQgY2xlYXJjb2F0REhSID0gbWF0ZXJpYWwuY2xlYXJjb2F0ICogY2xlYXJjb2F0REhSQXBwcm94KCBtYXRlcmlhbC5jbGVhcmNvYXRSb3VnaG5lc3MsIGNjRG90TkwgKTtcblx0I2Vsc2Vcblx0XHRmbG9hdCBjbGVhcmNvYXRESFIgPSAwLjA7XG5cdCNlbmRpZlxuXHRmbG9hdCBjbGVhcmNvYXRJbnYgPSAxLjAgLSBjbGVhcmNvYXRESFI7XG5cdHZlYzMgc2luZ2xlU2NhdHRlcmluZyA9IHZlYzMoIDAuMCApO1xuXHR2ZWMzIG11bHRpU2NhdHRlcmluZyA9IHZlYzMoIDAuMCApO1xuXHR2ZWMzIGNvc2luZVdlaWdodGVkSXJyYWRpYW5jZSA9IGlycmFkaWFuY2UgKiBSRUNJUFJPQ0FMX1BJO1xuXHRCUkRGX1NwZWN1bGFyX011bHRpc2NhdHRlcmluZ19FbnZpcm9ubWVudCggZ2VvbWV0cnksIG1hdGVyaWFsLnNwZWN1bGFyQ29sb3IsIG1hdGVyaWFsLnNwZWN1bGFyUm91Z2huZXNzLCBzaW5nbGVTY2F0dGVyaW5nLCBtdWx0aVNjYXR0ZXJpbmcgKTtcblx0dmVjMyBkaWZmdXNlID0gbWF0ZXJpYWwuZGlmZnVzZUNvbG9yICogKCAxLjAgLSAoIHNpbmdsZVNjYXR0ZXJpbmcgKyBtdWx0aVNjYXR0ZXJpbmcgKSApO1xuXHRyZWZsZWN0ZWRMaWdodC5pbmRpcmVjdFNwZWN1bGFyICs9IGNsZWFyY29hdEludiAqIHJhZGlhbmNlICogc2luZ2xlU2NhdHRlcmluZztcblx0cmVmbGVjdGVkTGlnaHQuaW5kaXJlY3RTcGVjdWxhciArPSBtdWx0aVNjYXR0ZXJpbmcgKiBjb3NpbmVXZWlnaHRlZElycmFkaWFuY2U7XG5cdHJlZmxlY3RlZExpZ2h0LmluZGlyZWN0RGlmZnVzZSArPSBkaWZmdXNlICogY29zaW5lV2VpZ2h0ZWRJcnJhZGlhbmNlO1xufVxuI2RlZmluZSBSRV9EaXJlY3RcdFx0XHRcdFJFX0RpcmVjdF9QaHlzaWNhbFxuI2RlZmluZSBSRV9EaXJlY3RfUmVjdEFyZWFcdFx0UkVfRGlyZWN0X1JlY3RBcmVhX1BoeXNpY2FsXG4jZGVmaW5lIFJFX0luZGlyZWN0RGlmZnVzZVx0XHRSRV9JbmRpcmVjdERpZmZ1c2VfUGh5c2ljYWxcbiNkZWZpbmUgUkVfSW5kaXJlY3RTcGVjdWxhclx0XHRSRV9JbmRpcmVjdFNwZWN1bGFyX1BoeXNpY2FsXG5mbG9hdCBjb21wdXRlU3BlY3VsYXJPY2NsdXNpb24oIGNvbnN0IGluIGZsb2F0IGRvdE5WLCBjb25zdCBpbiBmbG9hdCBhbWJpZW50T2NjbHVzaW9uLCBjb25zdCBpbiBmbG9hdCByb3VnaG5lc3MgKSB7XG5cdHJldHVybiBzYXR1cmF0ZSggcG93KCBkb3ROViArIGFtYmllbnRPY2NsdXNpb24sIGV4cDIoIC0gMTYuMCAqIHJvdWdobmVzcyAtIDEuMCApICkgLSAxLjAgKyBhbWJpZW50T2NjbHVzaW9uICk7XG59IixsaWdodHNfZnJhZ21lbnRfYmVnaW46IlxuR2VvbWV0cmljQ29udGV4dCBnZW9tZXRyeTtcbmdlb21ldHJ5LnBvc2l0aW9uID0gLSB2Vmlld1Bvc2l0aW9uO1xuZ2VvbWV0cnkubm9ybWFsID0gbm9ybWFsO1xuZ2VvbWV0cnkudmlld0RpciA9ICggaXNPcnRob2dyYXBoaWMgKSA/IHZlYzMoIDAsIDAsIDEgKSA6IG5vcm1hbGl6ZSggdlZpZXdQb3NpdGlvbiApO1xuI2lmZGVmIENMRUFSQ09BVFxuXHRnZW9tZXRyeS5jbGVhcmNvYXROb3JtYWwgPSBjbGVhcmNvYXROb3JtYWw7XG4jZW5kaWZcbkluY2lkZW50TGlnaHQgZGlyZWN0TGlnaHQ7XG4jaWYgKCBOVU1fUE9JTlRfTElHSFRTID4gMCApICYmIGRlZmluZWQoIFJFX0RpcmVjdCApXG5cdFBvaW50TGlnaHQgcG9pbnRMaWdodDtcblx0I2lmIGRlZmluZWQoIFVTRV9TSEFET1dNQVAgKSAmJiBOVU1fUE9JTlRfTElHSFRfU0hBRE9XUyA+IDBcblx0UG9pbnRMaWdodFNoYWRvdyBwb2ludExpZ2h0U2hhZG93O1xuXHQjZW5kaWZcblx0I3ByYWdtYSB1bnJvbGxfbG9vcF9zdGFydFxuXHRmb3IgKCBpbnQgaSA9IDA7IGkgPCBOVU1fUE9JTlRfTElHSFRTOyBpICsrICkge1xuXHRcdHBvaW50TGlnaHQgPSBwb2ludExpZ2h0c1sgaSBdO1xuXHRcdGdldFBvaW50RGlyZWN0TGlnaHRJcnJhZGlhbmNlKCBwb2ludExpZ2h0LCBnZW9tZXRyeSwgZGlyZWN0TGlnaHQgKTtcblx0XHQjaWYgZGVmaW5lZCggVVNFX1NIQURPV01BUCApICYmICggVU5ST0xMRURfTE9PUF9JTkRFWCA8IE5VTV9QT0lOVF9MSUdIVF9TSEFET1dTIClcblx0XHRwb2ludExpZ2h0U2hhZG93ID0gcG9pbnRMaWdodFNoYWRvd3NbIGkgXTtcblx0XHRkaXJlY3RMaWdodC5jb2xvciAqPSBhbGwoIGJ2ZWMyKCBkaXJlY3RMaWdodC52aXNpYmxlLCByZWNlaXZlU2hhZG93ICkgKSA/IGdldFBvaW50U2hhZG93KCBwb2ludFNoYWRvd01hcFsgaSBdLCBwb2ludExpZ2h0U2hhZG93LnNoYWRvd01hcFNpemUsIHBvaW50TGlnaHRTaGFkb3cuc2hhZG93QmlhcywgcG9pbnRMaWdodFNoYWRvdy5zaGFkb3dSYWRpdXMsIHZQb2ludFNoYWRvd0Nvb3JkWyBpIF0sIHBvaW50TGlnaHRTaGFkb3cuc2hhZG93Q2FtZXJhTmVhciwgcG9pbnRMaWdodFNoYWRvdy5zaGFkb3dDYW1lcmFGYXIgKSA6IDEuMDtcblx0XHQjZW5kaWZcblx0XHRSRV9EaXJlY3QoIGRpcmVjdExpZ2h0LCBnZW9tZXRyeSwgbWF0ZXJpYWwsIHJlZmxlY3RlZExpZ2h0ICk7XG5cdH1cblx0I3ByYWdtYSB1bnJvbGxfbG9vcF9lbmRcbiNlbmRpZlxuI2lmICggTlVNX1NQT1RfTElHSFRTID4gMCApICYmIGRlZmluZWQoIFJFX0RpcmVjdCApXG5cdFNwb3RMaWdodCBzcG90TGlnaHQ7XG5cdCNpZiBkZWZpbmVkKCBVU0VfU0hBRE9XTUFQICkgJiYgTlVNX1NQT1RfTElHSFRfU0hBRE9XUyA+IDBcblx0U3BvdExpZ2h0U2hhZG93IHNwb3RMaWdodFNoYWRvdztcblx0I2VuZGlmXG5cdCNwcmFnbWEgdW5yb2xsX2xvb3Bfc3RhcnRcblx0Zm9yICggaW50IGkgPSAwOyBpIDwgTlVNX1NQT1RfTElHSFRTOyBpICsrICkge1xuXHRcdHNwb3RMaWdodCA9IHNwb3RMaWdodHNbIGkgXTtcblx0XHRnZXRTcG90RGlyZWN0TGlnaHRJcnJhZGlhbmNlKCBzcG90TGlnaHQsIGdlb21ldHJ5LCBkaXJlY3RMaWdodCApO1xuXHRcdCNpZiBkZWZpbmVkKCBVU0VfU0hBRE9XTUFQICkgJiYgKCBVTlJPTExFRF9MT09QX0lOREVYIDwgTlVNX1NQT1RfTElHSFRfU0hBRE9XUyApXG5cdFx0c3BvdExpZ2h0U2hhZG93ID0gc3BvdExpZ2h0U2hhZG93c1sgaSBdO1xuXHRcdGRpcmVjdExpZ2h0LmNvbG9yICo9IGFsbCggYnZlYzIoIGRpcmVjdExpZ2h0LnZpc2libGUsIHJlY2VpdmVTaGFkb3cgKSApID8gZ2V0U2hhZG93KCBzcG90U2hhZG93TWFwWyBpIF0sIHNwb3RMaWdodFNoYWRvdy5zaGFkb3dNYXBTaXplLCBzcG90TGlnaHRTaGFkb3cuc2hhZG93Qmlhcywgc3BvdExpZ2h0U2hhZG93LnNoYWRvd1JhZGl1cywgdlNwb3RTaGFkb3dDb29yZFsgaSBdICkgOiAxLjA7XG5cdFx0I2VuZGlmXG5cdFx0UkVfRGlyZWN0KCBkaXJlY3RMaWdodCwgZ2VvbWV0cnksIG1hdGVyaWFsLCByZWZsZWN0ZWRMaWdodCApO1xuXHR9XG5cdCNwcmFnbWEgdW5yb2xsX2xvb3BfZW5kXG4jZW5kaWZcbiNpZiAoIE5VTV9ESVJfTElHSFRTID4gMCApICYmIGRlZmluZWQoIFJFX0RpcmVjdCApXG5cdERpcmVjdGlvbmFsTGlnaHQgZGlyZWN0aW9uYWxMaWdodDtcblx0I2lmIGRlZmluZWQoIFVTRV9TSEFET1dNQVAgKSAmJiBOVU1fRElSX0xJR0hUX1NIQURPV1MgPiAwXG5cdERpcmVjdGlvbmFsTGlnaHRTaGFkb3cgZGlyZWN0aW9uYWxMaWdodFNoYWRvdztcblx0I2VuZGlmXG5cdCNwcmFnbWEgdW5yb2xsX2xvb3Bfc3RhcnRcblx0Zm9yICggaW50IGkgPSAwOyBpIDwgTlVNX0RJUl9MSUdIVFM7IGkgKysgKSB7XG5cdFx0ZGlyZWN0aW9uYWxMaWdodCA9IGRpcmVjdGlvbmFsTGlnaHRzWyBpIF07XG5cdFx0Z2V0RGlyZWN0aW9uYWxEaXJlY3RMaWdodElycmFkaWFuY2UoIGRpcmVjdGlvbmFsTGlnaHQsIGdlb21ldHJ5LCBkaXJlY3RMaWdodCApO1xuXHRcdCNpZiBkZWZpbmVkKCBVU0VfU0hBRE9XTUFQICkgJiYgKCBVTlJPTExFRF9MT09QX0lOREVYIDwgTlVNX0RJUl9MSUdIVF9TSEFET1dTIClcblx0XHRkaXJlY3Rpb25hbExpZ2h0U2hhZG93ID0gZGlyZWN0aW9uYWxMaWdodFNoYWRvd3NbIGkgXTtcblx0XHRkaXJlY3RMaWdodC5jb2xvciAqPSBhbGwoIGJ2ZWMyKCBkaXJlY3RMaWdodC52aXNpYmxlLCByZWNlaXZlU2hhZG93ICkgKSA/IGdldFNoYWRvdyggZGlyZWN0aW9uYWxTaGFkb3dNYXBbIGkgXSwgZGlyZWN0aW9uYWxMaWdodFNoYWRvdy5zaGFkb3dNYXBTaXplLCBkaXJlY3Rpb25hbExpZ2h0U2hhZG93LnNoYWRvd0JpYXMsIGRpcmVjdGlvbmFsTGlnaHRTaGFkb3cuc2hhZG93UmFkaXVzLCB2RGlyZWN0aW9uYWxTaGFkb3dDb29yZFsgaSBdICkgOiAxLjA7XG5cdFx0I2VuZGlmXG5cdFx0UkVfRGlyZWN0KCBkaXJlY3RMaWdodCwgZ2VvbWV0cnksIG1hdGVyaWFsLCByZWZsZWN0ZWRMaWdodCApO1xuXHR9XG5cdCNwcmFnbWEgdW5yb2xsX2xvb3BfZW5kXG4jZW5kaWZcbiNpZiAoIE5VTV9SRUNUX0FSRUFfTElHSFRTID4gMCApICYmIGRlZmluZWQoIFJFX0RpcmVjdF9SZWN0QXJlYSApXG5cdFJlY3RBcmVhTGlnaHQgcmVjdEFyZWFMaWdodDtcblx0I3ByYWdtYSB1bnJvbGxfbG9vcF9zdGFydFxuXHRmb3IgKCBpbnQgaSA9IDA7IGkgPCBOVU1fUkVDVF9BUkVBX0xJR0hUUzsgaSArKyApIHtcblx0XHRyZWN0QXJlYUxpZ2h0ID0gcmVjdEFyZWFMaWdodHNbIGkgXTtcblx0XHRSRV9EaXJlY3RfUmVjdEFyZWEoIHJlY3RBcmVhTGlnaHQsIGdlb21ldHJ5LCBtYXRlcmlhbCwgcmVmbGVjdGVkTGlnaHQgKTtcblx0fVxuXHQjcHJhZ21hIHVucm9sbF9sb29wX2VuZFxuI2VuZGlmXG4jaWYgZGVmaW5lZCggUkVfSW5kaXJlY3REaWZmdXNlIClcblx0dmVjMyBpYmxJcnJhZGlhbmNlID0gdmVjMyggMC4wICk7XG5cdHZlYzMgaXJyYWRpYW5jZSA9IGdldEFtYmllbnRMaWdodElycmFkaWFuY2UoIGFtYmllbnRMaWdodENvbG9yICk7XG5cdGlycmFkaWFuY2UgKz0gZ2V0TGlnaHRQcm9iZUlycmFkaWFuY2UoIGxpZ2h0UHJvYmUsIGdlb21ldHJ5ICk7XG5cdCNpZiAoIE5VTV9IRU1JX0xJR0hUUyA+IDAgKVxuXHRcdCNwcmFnbWEgdW5yb2xsX2xvb3Bfc3RhcnRcblx0XHRmb3IgKCBpbnQgaSA9IDA7IGkgPCBOVU1fSEVNSV9MSUdIVFM7IGkgKysgKSB7XG5cdFx0XHRpcnJhZGlhbmNlICs9IGdldEhlbWlzcGhlcmVMaWdodElycmFkaWFuY2UoIGhlbWlzcGhlcmVMaWdodHNbIGkgXSwgZ2VvbWV0cnkgKTtcblx0XHR9XG5cdFx0I3ByYWdtYSB1bnJvbGxfbG9vcF9lbmRcblx0I2VuZGlmXG4jZW5kaWZcbiNpZiBkZWZpbmVkKCBSRV9JbmRpcmVjdFNwZWN1bGFyIClcblx0dmVjMyByYWRpYW5jZSA9IHZlYzMoIDAuMCApO1xuXHR2ZWMzIGNsZWFyY29hdFJhZGlhbmNlID0gdmVjMyggMC4wICk7XG4jZW5kaWYiLGxpZ2h0c19mcmFnbWVudF9tYXBzOiIjaWYgZGVmaW5lZCggUkVfSW5kaXJlY3REaWZmdXNlIClcblx0I2lmZGVmIFVTRV9MSUdIVE1BUFxuXHRcdHZlYzQgbGlnaHRNYXBUZXhlbD0gdGV4dHVyZTJEKCBsaWdodE1hcCwgdlV2MiApO1xuXHRcdHZlYzMgbGlnaHRNYXBJcnJhZGlhbmNlID0gbGlnaHRNYXBUZXhlbFRvTGluZWFyKCBsaWdodE1hcFRleGVsICkucmdiICogbGlnaHRNYXBJbnRlbnNpdHk7XG5cdFx0I2lmbmRlZiBQSFlTSUNBTExZX0NPUlJFQ1RfTElHSFRTXG5cdFx0XHRsaWdodE1hcElycmFkaWFuY2UgKj0gUEk7XG5cdFx0I2VuZGlmXG5cdFx0aXJyYWRpYW5jZSArPSBsaWdodE1hcElycmFkaWFuY2U7XG5cdCNlbmRpZlxuXHQjaWYgZGVmaW5lZCggVVNFX0VOVk1BUCApICYmIGRlZmluZWQoIFNUQU5EQVJEICkgJiYgZGVmaW5lZCggRU5WTUFQX1RZUEVfQ1VCRV9VViApXG5cdFx0aWJsSXJyYWRpYW5jZSArPSBnZXRMaWdodFByb2JlSW5kaXJlY3RJcnJhZGlhbmNlKCBnZW9tZXRyeSwgbWF4TWlwTGV2ZWwgKTtcblx0I2VuZGlmXG4jZW5kaWZcbiNpZiBkZWZpbmVkKCBVU0VfRU5WTUFQICkgJiYgZGVmaW5lZCggUkVfSW5kaXJlY3RTcGVjdWxhciApXG5cdHJhZGlhbmNlICs9IGdldExpZ2h0UHJvYmVJbmRpcmVjdFJhZGlhbmNlKCBnZW9tZXRyeS52aWV3RGlyLCBnZW9tZXRyeS5ub3JtYWwsIG1hdGVyaWFsLnNwZWN1bGFyUm91Z2huZXNzLCBtYXhNaXBMZXZlbCApO1xuXHQjaWZkZWYgQ0xFQVJDT0FUXG5cdFx0Y2xlYXJjb2F0UmFkaWFuY2UgKz0gZ2V0TGlnaHRQcm9iZUluZGlyZWN0UmFkaWFuY2UoIGdlb21ldHJ5LnZpZXdEaXIsIGdlb21ldHJ5LmNsZWFyY29hdE5vcm1hbCwgbWF0ZXJpYWwuY2xlYXJjb2F0Um91Z2huZXNzLCBtYXhNaXBMZXZlbCApO1xuXHQjZW5kaWZcbiNlbmRpZiIsbGlnaHRzX2ZyYWdtZW50X2VuZDoiI2lmIGRlZmluZWQoIFJFX0luZGlyZWN0RGlmZnVzZSApXG5cdFJFX0luZGlyZWN0RGlmZnVzZSggaXJyYWRpYW5jZSwgZ2VvbWV0cnksIG1hdGVyaWFsLCByZWZsZWN0ZWRMaWdodCApO1xuI2VuZGlmXG4jaWYgZGVmaW5lZCggUkVfSW5kaXJlY3RTcGVjdWxhciApXG5cdFJFX0luZGlyZWN0U3BlY3VsYXIoIHJhZGlhbmNlLCBpYmxJcnJhZGlhbmNlLCBjbGVhcmNvYXRSYWRpYW5jZSwgZ2VvbWV0cnksIG1hdGVyaWFsLCByZWZsZWN0ZWRMaWdodCApO1xuI2VuZGlmIixsb2dkZXB0aGJ1Zl9mcmFnbWVudDoiI2lmIGRlZmluZWQoIFVTRV9MT0dERVBUSEJVRiApICYmIGRlZmluZWQoIFVTRV9MT0dERVBUSEJVRl9FWFQgKVxuXHRnbF9GcmFnRGVwdGhFWFQgPSB2SXNQZXJzcGVjdGl2ZSA9PSAwLjAgPyBnbF9GcmFnQ29vcmQueiA6IGxvZzIoIHZGcmFnRGVwdGggKSAqIGxvZ0RlcHRoQnVmRkMgKiAwLjU7XG4jZW5kaWYiLGxvZ2RlcHRoYnVmX3BhcnNfZnJhZ21lbnQ6IiNpZiBkZWZpbmVkKCBVU0VfTE9HREVQVEhCVUYgKSAmJiBkZWZpbmVkKCBVU0VfTE9HREVQVEhCVUZfRVhUIClcblx0dW5pZm9ybSBmbG9hdCBsb2dEZXB0aEJ1ZkZDO1xuXHR2YXJ5aW5nIGZsb2F0IHZGcmFnRGVwdGg7XG5cdHZhcnlpbmcgZmxvYXQgdklzUGVyc3BlY3RpdmU7XG4jZW5kaWYiLGxvZ2RlcHRoYnVmX3BhcnNfdmVydGV4OiIjaWZkZWYgVVNFX0xPR0RFUFRIQlVGXG5cdCNpZmRlZiBVU0VfTE9HREVQVEhCVUZfRVhUXG5cdFx0dmFyeWluZyBmbG9hdCB2RnJhZ0RlcHRoO1xuXHRcdHZhcnlpbmcgZmxvYXQgdklzUGVyc3BlY3RpdmU7XG5cdCNlbHNlXG5cdFx0dW5pZm9ybSBmbG9hdCBsb2dEZXB0aEJ1ZkZDO1xuXHQjZW5kaWZcbiNlbmRpZiIsbG9nZGVwdGhidWZfdmVydGV4OiIjaWZkZWYgVVNFX0xPR0RFUFRIQlVGXG5cdCNpZmRlZiBVU0VfTE9HREVQVEhCVUZfRVhUXG5cdFx0dkZyYWdEZXB0aCA9IDEuMCArIGdsX1Bvc2l0aW9uLnc7XG5cdFx0dklzUGVyc3BlY3RpdmUgPSBmbG9hdCggaXNQZXJzcGVjdGl2ZU1hdHJpeCggcHJvamVjdGlvbk1hdHJpeCApICk7XG5cdCNlbHNlXG5cdFx0aWYgKCBpc1BlcnNwZWN0aXZlTWF0cml4KCBwcm9qZWN0aW9uTWF0cml4ICkgKSB7XG5cdFx0XHRnbF9Qb3NpdGlvbi56ID0gbG9nMiggbWF4KCBFUFNJTE9OLCBnbF9Qb3NpdGlvbi53ICsgMS4wICkgKSAqIGxvZ0RlcHRoQnVmRkMgLSAxLjA7XG5cdFx0XHRnbF9Qb3NpdGlvbi56ICo9IGdsX1Bvc2l0aW9uLnc7XG5cdFx0fVxuXHQjZW5kaWZcbiNlbmRpZiIsbWFwX2ZyYWdtZW50OiIjaWZkZWYgVVNFX01BUFxuXHR2ZWM0IHRleGVsQ29sb3IgPSB0ZXh0dXJlMkQoIG1hcCwgdlV2ICk7XG5cdHRleGVsQ29sb3IgPSBtYXBUZXhlbFRvTGluZWFyKCB0ZXhlbENvbG9yICk7XG5cdGRpZmZ1c2VDb2xvciAqPSB0ZXhlbENvbG9yO1xuI2VuZGlmIixtYXBfcGFyc19mcmFnbWVudDoiI2lmZGVmIFVTRV9NQVBcblx0dW5pZm9ybSBzYW1wbGVyMkQgbWFwO1xuI2VuZGlmIixtYXBfcGFydGljbGVfZnJhZ21lbnQ6IiNpZiBkZWZpbmVkKCBVU0VfTUFQICkgfHwgZGVmaW5lZCggVVNFX0FMUEhBTUFQIClcblx0dmVjMiB1diA9ICggdXZUcmFuc2Zvcm0gKiB2ZWMzKCBnbF9Qb2ludENvb3JkLngsIDEuMCAtIGdsX1BvaW50Q29vcmQueSwgMSApICkueHk7XG4jZW5kaWZcbiNpZmRlZiBVU0VfTUFQXG5cdHZlYzQgbWFwVGV4ZWwgPSB0ZXh0dXJlMkQoIG1hcCwgdXYgKTtcblx0ZGlmZnVzZUNvbG9yICo9IG1hcFRleGVsVG9MaW5lYXIoIG1hcFRleGVsICk7XG4jZW5kaWZcbiNpZmRlZiBVU0VfQUxQSEFNQVBcblx0ZGlmZnVzZUNvbG9yLmEgKj0gdGV4dHVyZTJEKCBhbHBoYU1hcCwgdXYgKS5nO1xuI2VuZGlmIixtYXBfcGFydGljbGVfcGFyc19mcmFnbWVudDoiI2lmIGRlZmluZWQoIFVTRV9NQVAgKSB8fCBkZWZpbmVkKCBVU0VfQUxQSEFNQVAgKVxuXHR1bmlmb3JtIG1hdDMgdXZUcmFuc2Zvcm07XG4jZW5kaWZcbiNpZmRlZiBVU0VfTUFQXG5cdHVuaWZvcm0gc2FtcGxlcjJEIG1hcDtcbiNlbmRpZlxuI2lmZGVmIFVTRV9BTFBIQU1BUFxuXHR1bmlmb3JtIHNhbXBsZXIyRCBhbHBoYU1hcDtcbiNlbmRpZiIsbWV0YWxuZXNzbWFwX2ZyYWdtZW50OiJmbG9hdCBtZXRhbG5lc3NGYWN0b3IgPSBtZXRhbG5lc3M7XG4jaWZkZWYgVVNFX01FVEFMTkVTU01BUFxuXHR2ZWM0IHRleGVsTWV0YWxuZXNzID0gdGV4dHVyZTJEKCBtZXRhbG5lc3NNYXAsIHZVdiApO1xuXHRtZXRhbG5lc3NGYWN0b3IgKj0gdGV4ZWxNZXRhbG5lc3MuYjtcbiNlbmRpZiIsbWV0YWxuZXNzbWFwX3BhcnNfZnJhZ21lbnQ6IiNpZmRlZiBVU0VfTUVUQUxORVNTTUFQXG5cdHVuaWZvcm0gc2FtcGxlcjJEIG1ldGFsbmVzc01hcDtcbiNlbmRpZiIsbW9ycGhub3JtYWxfdmVydGV4OiIjaWZkZWYgVVNFX01PUlBITk9STUFMU1xuXHRvYmplY3ROb3JtYWwgKj0gbW9ycGhUYXJnZXRCYXNlSW5mbHVlbmNlO1xuXHRvYmplY3ROb3JtYWwgKz0gbW9ycGhOb3JtYWwwICogbW9ycGhUYXJnZXRJbmZsdWVuY2VzWyAwIF07XG5cdG9iamVjdE5vcm1hbCArPSBtb3JwaE5vcm1hbDEgKiBtb3JwaFRhcmdldEluZmx1ZW5jZXNbIDEgXTtcblx0b2JqZWN0Tm9ybWFsICs9IG1vcnBoTm9ybWFsMiAqIG1vcnBoVGFyZ2V0SW5mbHVlbmNlc1sgMiBdO1xuXHRvYmplY3ROb3JtYWwgKz0gbW9ycGhOb3JtYWwzICogbW9ycGhUYXJnZXRJbmZsdWVuY2VzWyAzIF07XG4jZW5kaWYiLG1vcnBodGFyZ2V0X3BhcnNfdmVydGV4OiIjaWZkZWYgVVNFX01PUlBIVEFSR0VUU1xuXHR1bmlmb3JtIGZsb2F0IG1vcnBoVGFyZ2V0QmFzZUluZmx1ZW5jZTtcblx0I2lmbmRlZiBVU0VfTU9SUEhOT1JNQUxTXG5cdFx0dW5pZm9ybSBmbG9hdCBtb3JwaFRhcmdldEluZmx1ZW5jZXNbIDggXTtcblx0I2Vsc2Vcblx0XHR1bmlmb3JtIGZsb2F0IG1vcnBoVGFyZ2V0SW5mbHVlbmNlc1sgNCBdO1xuXHQjZW5kaWZcbiNlbmRpZiIsbW9ycGh0YXJnZXRfdmVydGV4OiIjaWZkZWYgVVNFX01PUlBIVEFSR0VUU1xuXHR0cmFuc2Zvcm1lZCAqPSBtb3JwaFRhcmdldEJhc2VJbmZsdWVuY2U7XG5cdHRyYW5zZm9ybWVkICs9IG1vcnBoVGFyZ2V0MCAqIG1vcnBoVGFyZ2V0SW5mbHVlbmNlc1sgMCBdO1xuXHR0cmFuc2Zvcm1lZCArPSBtb3JwaFRhcmdldDEgKiBtb3JwaFRhcmdldEluZmx1ZW5jZXNbIDEgXTtcblx0dHJhbnNmb3JtZWQgKz0gbW9ycGhUYXJnZXQyICogbW9ycGhUYXJnZXRJbmZsdWVuY2VzWyAyIF07XG5cdHRyYW5zZm9ybWVkICs9IG1vcnBoVGFyZ2V0MyAqIG1vcnBoVGFyZ2V0SW5mbHVlbmNlc1sgMyBdO1xuXHQjaWZuZGVmIFVTRV9NT1JQSE5PUk1BTFNcblx0XHR0cmFuc2Zvcm1lZCArPSBtb3JwaFRhcmdldDQgKiBtb3JwaFRhcmdldEluZmx1ZW5jZXNbIDQgXTtcblx0XHR0cmFuc2Zvcm1lZCArPSBtb3JwaFRhcmdldDUgKiBtb3JwaFRhcmdldEluZmx1ZW5jZXNbIDUgXTtcblx0XHR0cmFuc2Zvcm1lZCArPSBtb3JwaFRhcmdldDYgKiBtb3JwaFRhcmdldEluZmx1ZW5jZXNbIDYgXTtcblx0XHR0cmFuc2Zvcm1lZCArPSBtb3JwaFRhcmdldDcgKiBtb3JwaFRhcmdldEluZmx1ZW5jZXNbIDcgXTtcblx0I2VuZGlmXG4jZW5kaWYiLG5vcm1hbF9mcmFnbWVudF9iZWdpbjoiZmxvYXQgZmFjZURpcmVjdGlvbiA9IGdsX0Zyb250RmFjaW5nID8gMS4wIDogLSAxLjA7XG4jaWZkZWYgRkxBVF9TSEFERURcblx0dmVjMyBmZHggPSB2ZWMzKCBkRmR4KCB2Vmlld1Bvc2l0aW9uLnggKSwgZEZkeCggdlZpZXdQb3NpdGlvbi55ICksIGRGZHgoIHZWaWV3UG9zaXRpb24ueiApICk7XG5cdHZlYzMgZmR5ID0gdmVjMyggZEZkeSggdlZpZXdQb3NpdGlvbi54ICksIGRGZHkoIHZWaWV3UG9zaXRpb24ueSApLCBkRmR5KCB2Vmlld1Bvc2l0aW9uLnogKSApO1xuXHR2ZWMzIG5vcm1hbCA9IG5vcm1hbGl6ZSggY3Jvc3MoIGZkeCwgZmR5ICkgKTtcbiNlbHNlXG5cdHZlYzMgbm9ybWFsID0gbm9ybWFsaXplKCB2Tm9ybWFsICk7XG5cdCNpZmRlZiBET1VCTEVfU0lERURcblx0XHRub3JtYWwgPSBub3JtYWwgKiBmYWNlRGlyZWN0aW9uO1xuXHQjZW5kaWZcblx0I2lmZGVmIFVTRV9UQU5HRU5UXG5cdFx0dmVjMyB0YW5nZW50ID0gbm9ybWFsaXplKCB2VGFuZ2VudCApO1xuXHRcdHZlYzMgYml0YW5nZW50ID0gbm9ybWFsaXplKCB2Qml0YW5nZW50ICk7XG5cdFx0I2lmZGVmIERPVUJMRV9TSURFRFxuXHRcdFx0dGFuZ2VudCA9IHRhbmdlbnQgKiBmYWNlRGlyZWN0aW9uO1xuXHRcdFx0Yml0YW5nZW50ID0gYml0YW5nZW50ICogZmFjZURpcmVjdGlvbjtcblx0XHQjZW5kaWZcblx0XHQjaWYgZGVmaW5lZCggVEFOR0VOVFNQQUNFX05PUk1BTE1BUCApIHx8IGRlZmluZWQoIFVTRV9DTEVBUkNPQVRfTk9STUFMTUFQIClcblx0XHRcdG1hdDMgdlRCTiA9IG1hdDMoIHRhbmdlbnQsIGJpdGFuZ2VudCwgbm9ybWFsICk7XG5cdFx0I2VuZGlmXG5cdCNlbmRpZlxuI2VuZGlmXG52ZWMzIGdlb21ldHJ5Tm9ybWFsID0gbm9ybWFsOyIsbm9ybWFsX2ZyYWdtZW50X21hcHM6IiNpZmRlZiBPQkpFQ1RTUEFDRV9OT1JNQUxNQVBcblx0bm9ybWFsID0gdGV4dHVyZTJEKCBub3JtYWxNYXAsIHZVdiApLnh5eiAqIDIuMCAtIDEuMDtcblx0I2lmZGVmIEZMSVBfU0lERURcblx0XHRub3JtYWwgPSAtIG5vcm1hbDtcblx0I2VuZGlmXG5cdCNpZmRlZiBET1VCTEVfU0lERURcblx0XHRub3JtYWwgPSBub3JtYWwgKiBmYWNlRGlyZWN0aW9uO1xuXHQjZW5kaWZcblx0bm9ybWFsID0gbm9ybWFsaXplKCBub3JtYWxNYXRyaXggKiBub3JtYWwgKTtcbiNlbGlmIGRlZmluZWQoIFRBTkdFTlRTUEFDRV9OT1JNQUxNQVAgKVxuXHR2ZWMzIG1hcE4gPSB0ZXh0dXJlMkQoIG5vcm1hbE1hcCwgdlV2ICkueHl6ICogMi4wIC0gMS4wO1xuXHRtYXBOLnh5ICo9IG5vcm1hbFNjYWxlO1xuXHQjaWZkZWYgVVNFX1RBTkdFTlRcblx0XHRub3JtYWwgPSBub3JtYWxpemUoIHZUQk4gKiBtYXBOICk7XG5cdCNlbHNlXG5cdFx0bm9ybWFsID0gcGVydHVyYk5vcm1hbDJBcmIoIC12Vmlld1Bvc2l0aW9uLCBub3JtYWwsIG1hcE4sIGZhY2VEaXJlY3Rpb24gKTtcblx0I2VuZGlmXG4jZWxpZiBkZWZpbmVkKCBVU0VfQlVNUE1BUCApXG5cdG5vcm1hbCA9IHBlcnR1cmJOb3JtYWxBcmIoIC12Vmlld1Bvc2l0aW9uLCBub3JtYWwsIGRIZHh5X2Z3ZCgpLCBmYWNlRGlyZWN0aW9uICk7XG4jZW5kaWYiLG5vcm1hbG1hcF9wYXJzX2ZyYWdtZW50OiIjaWZkZWYgVVNFX05PUk1BTE1BUFxuXHR1bmlmb3JtIHNhbXBsZXIyRCBub3JtYWxNYXA7XG5cdHVuaWZvcm0gdmVjMiBub3JtYWxTY2FsZTtcbiNlbmRpZlxuI2lmZGVmIE9CSkVDVFNQQUNFX05PUk1BTE1BUFxuXHR1bmlmb3JtIG1hdDMgbm9ybWFsTWF0cml4O1xuI2VuZGlmXG4jaWYgISBkZWZpbmVkICggVVNFX1RBTkdFTlQgKSAmJiAoIGRlZmluZWQgKCBUQU5HRU5UU1BBQ0VfTk9STUFMTUFQICkgfHwgZGVmaW5lZCAoIFVTRV9DTEVBUkNPQVRfTk9STUFMTUFQICkgKVxuXHR2ZWMzIHBlcnR1cmJOb3JtYWwyQXJiKCB2ZWMzIGV5ZV9wb3MsIHZlYzMgc3VyZl9ub3JtLCB2ZWMzIG1hcE4sIGZsb2F0IGZhY2VEaXJlY3Rpb24gKSB7XG5cdFx0dmVjMyBxMCA9IHZlYzMoIGRGZHgoIGV5ZV9wb3MueCApLCBkRmR4KCBleWVfcG9zLnkgKSwgZEZkeCggZXllX3Bvcy56ICkgKTtcblx0XHR2ZWMzIHExID0gdmVjMyggZEZkeSggZXllX3Bvcy54ICksIGRGZHkoIGV5ZV9wb3MueSApLCBkRmR5KCBleWVfcG9zLnogKSApO1xuXHRcdHZlYzIgc3QwID0gZEZkeCggdlV2LnN0ICk7XG5cdFx0dmVjMiBzdDEgPSBkRmR5KCB2VXYuc3QgKTtcblx0XHR2ZWMzIE4gPSBzdXJmX25vcm07XG5cdFx0dmVjMyBxMXBlcnAgPSBjcm9zcyggcTEsIE4gKTtcblx0XHR2ZWMzIHEwcGVycCA9IGNyb3NzKCBOLCBxMCApO1xuXHRcdHZlYzMgVCA9IHExcGVycCAqIHN0MC54ICsgcTBwZXJwICogc3QxLng7XG5cdFx0dmVjMyBCID0gcTFwZXJwICogc3QwLnkgKyBxMHBlcnAgKiBzdDEueTtcblx0XHRmbG9hdCBkZXQgPSBtYXgoIGRvdCggVCwgVCApLCBkb3QoIEIsIEIgKSApO1xuXHRcdGZsb2F0IHNjYWxlID0gKCBkZXQgPT0gMC4wICkgPyAwLjAgOiBmYWNlRGlyZWN0aW9uICogaW52ZXJzZXNxcnQoIGRldCApO1xuXHRcdHJldHVybiBub3JtYWxpemUoIFQgKiAoIG1hcE4ueCAqIHNjYWxlICkgKyBCICogKCBtYXBOLnkgKiBzY2FsZSApICsgTiAqIG1hcE4ueiApO1xuXHR9XG4jZW5kaWYiLGNsZWFyY29hdF9ub3JtYWxfZnJhZ21lbnRfYmVnaW46IiNpZmRlZiBDTEVBUkNPQVRcblx0dmVjMyBjbGVhcmNvYXROb3JtYWwgPSBnZW9tZXRyeU5vcm1hbDtcbiNlbmRpZiIsY2xlYXJjb2F0X25vcm1hbF9mcmFnbWVudF9tYXBzOiIjaWZkZWYgVVNFX0NMRUFSQ09BVF9OT1JNQUxNQVBcblx0dmVjMyBjbGVhcmNvYXRNYXBOID0gdGV4dHVyZTJEKCBjbGVhcmNvYXROb3JtYWxNYXAsIHZVdiApLnh5eiAqIDIuMCAtIDEuMDtcblx0Y2xlYXJjb2F0TWFwTi54eSAqPSBjbGVhcmNvYXROb3JtYWxTY2FsZTtcblx0I2lmZGVmIFVTRV9UQU5HRU5UXG5cdFx0Y2xlYXJjb2F0Tm9ybWFsID0gbm9ybWFsaXplKCB2VEJOICogY2xlYXJjb2F0TWFwTiApO1xuXHQjZWxzZVxuXHRcdGNsZWFyY29hdE5vcm1hbCA9IHBlcnR1cmJOb3JtYWwyQXJiKCAtIHZWaWV3UG9zaXRpb24sIGNsZWFyY29hdE5vcm1hbCwgY2xlYXJjb2F0TWFwTiwgZmFjZURpcmVjdGlvbiApO1xuXHQjZW5kaWZcbiNlbmRpZiIsY2xlYXJjb2F0X3BhcnNfZnJhZ21lbnQ6IiNpZmRlZiBVU0VfQ0xFQVJDT0FUTUFQXG5cdHVuaWZvcm0gc2FtcGxlcjJEIGNsZWFyY29hdE1hcDtcbiNlbmRpZlxuI2lmZGVmIFVTRV9DTEVBUkNPQVRfUk9VR0hORVNTTUFQXG5cdHVuaWZvcm0gc2FtcGxlcjJEIGNsZWFyY29hdFJvdWdobmVzc01hcDtcbiNlbmRpZlxuI2lmZGVmIFVTRV9DTEVBUkNPQVRfTk9STUFMTUFQXG5cdHVuaWZvcm0gc2FtcGxlcjJEIGNsZWFyY29hdE5vcm1hbE1hcDtcblx0dW5pZm9ybSB2ZWMyIGNsZWFyY29hdE5vcm1hbFNjYWxlO1xuI2VuZGlmIixwYWNraW5nOiJ2ZWMzIHBhY2tOb3JtYWxUb1JHQiggY29uc3QgaW4gdmVjMyBub3JtYWwgKSB7XG5cdHJldHVybiBub3JtYWxpemUoIG5vcm1hbCApICogMC41ICsgMC41O1xufVxudmVjMyB1bnBhY2tSR0JUb05vcm1hbCggY29uc3QgaW4gdmVjMyByZ2IgKSB7XG5cdHJldHVybiAyLjAgKiByZ2IueHl6IC0gMS4wO1xufVxuY29uc3QgZmxvYXQgUGFja1Vwc2NhbGUgPSAyNTYuIC8gMjU1Ljtjb25zdCBmbG9hdCBVbnBhY2tEb3duc2NhbGUgPSAyNTUuIC8gMjU2LjtcbmNvbnN0IHZlYzMgUGFja0ZhY3RvcnMgPSB2ZWMzKCAyNTYuICogMjU2LiAqIDI1Ni4sIDI1Ni4gKiAyNTYuLCAyNTYuICk7XG5jb25zdCB2ZWM0IFVucGFja0ZhY3RvcnMgPSBVbnBhY2tEb3duc2NhbGUgLyB2ZWM0KCBQYWNrRmFjdG9ycywgMS4gKTtcbmNvbnN0IGZsb2F0IFNoaWZ0UmlnaHQ4ID0gMS4gLyAyNTYuO1xudmVjNCBwYWNrRGVwdGhUb1JHQkEoIGNvbnN0IGluIGZsb2F0IHYgKSB7XG5cdHZlYzQgciA9IHZlYzQoIGZyYWN0KCB2ICogUGFja0ZhY3RvcnMgKSwgdiApO1xuXHRyLnl6dyAtPSByLnh5eiAqIFNoaWZ0UmlnaHQ4O1x0cmV0dXJuIHIgKiBQYWNrVXBzY2FsZTtcbn1cbmZsb2F0IHVucGFja1JHQkFUb0RlcHRoKCBjb25zdCBpbiB2ZWM0IHYgKSB7XG5cdHJldHVybiBkb3QoIHYsIFVucGFja0ZhY3RvcnMgKTtcbn1cbnZlYzQgcGFjazJIYWxmVG9SR0JBKCB2ZWMyIHYgKSB7XG5cdHZlYzQgciA9IHZlYzQoIHYueCwgZnJhY3QoIHYueCAqIDI1NS4wICksIHYueSwgZnJhY3QoIHYueSAqIDI1NS4wICkpO1xuXHRyZXR1cm4gdmVjNCggci54IC0gci55IC8gMjU1LjAsIHIueSwgci56IC0gci53IC8gMjU1LjAsIHIudyk7XG59XG52ZWMyIHVucGFja1JHQkFUbzJIYWxmKCB2ZWM0IHYgKSB7XG5cdHJldHVybiB2ZWMyKCB2LnggKyAoIHYueSAvIDI1NS4wICksIHYueiArICggdi53IC8gMjU1LjAgKSApO1xufVxuZmxvYXQgdmlld1pUb09ydGhvZ3JhcGhpY0RlcHRoKCBjb25zdCBpbiBmbG9hdCB2aWV3WiwgY29uc3QgaW4gZmxvYXQgbmVhciwgY29uc3QgaW4gZmxvYXQgZmFyICkge1xuXHRyZXR1cm4gKCB2aWV3WiArIG5lYXIgKSAvICggbmVhciAtIGZhciApO1xufVxuZmxvYXQgb3J0aG9ncmFwaGljRGVwdGhUb1ZpZXdaKCBjb25zdCBpbiBmbG9hdCBsaW5lYXJDbGlwWiwgY29uc3QgaW4gZmxvYXQgbmVhciwgY29uc3QgaW4gZmxvYXQgZmFyICkge1xuXHRyZXR1cm4gbGluZWFyQ2xpcFogKiAoIG5lYXIgLSBmYXIgKSAtIG5lYXI7XG59XG5mbG9hdCB2aWV3WlRvUGVyc3BlY3RpdmVEZXB0aCggY29uc3QgaW4gZmxvYXQgdmlld1osIGNvbnN0IGluIGZsb2F0IG5lYXIsIGNvbnN0IGluIGZsb2F0IGZhciApIHtcblx0cmV0dXJuICgoIG5lYXIgKyB2aWV3WiApICogZmFyICkgLyAoKCBmYXIgLSBuZWFyICkgKiB2aWV3WiApO1xufVxuZmxvYXQgcGVyc3BlY3RpdmVEZXB0aFRvVmlld1ooIGNvbnN0IGluIGZsb2F0IGludkNsaXBaLCBjb25zdCBpbiBmbG9hdCBuZWFyLCBjb25zdCBpbiBmbG9hdCBmYXIgKSB7XG5cdHJldHVybiAoIG5lYXIgKiBmYXIgKSAvICggKCBmYXIgLSBuZWFyICkgKiBpbnZDbGlwWiAtIGZhciApO1xufSIscHJlbXVsdGlwbGllZF9hbHBoYV9mcmFnbWVudDoiI2lmZGVmIFBSRU1VTFRJUExJRURfQUxQSEFcblx0Z2xfRnJhZ0NvbG9yLnJnYiAqPSBnbF9GcmFnQ29sb3IuYTtcbiNlbmRpZiIscHJvamVjdF92ZXJ0ZXg6InZlYzQgbXZQb3NpdGlvbiA9IHZlYzQoIHRyYW5zZm9ybWVkLCAxLjAgKTtcbiNpZmRlZiBVU0VfSU5TVEFOQ0lOR1xuXHRtdlBvc2l0aW9uID0gaW5zdGFuY2VNYXRyaXggKiBtdlBvc2l0aW9uO1xuI2VuZGlmXG5tdlBvc2l0aW9uID0gbW9kZWxWaWV3TWF0cml4ICogbXZQb3NpdGlvbjtcbmdsX1Bvc2l0aW9uID0gcHJvamVjdGlvbk1hdHJpeCAqIG12UG9zaXRpb247IixkaXRoZXJpbmdfZnJhZ21lbnQ6IiNpZmRlZiBESVRIRVJJTkdcblx0Z2xfRnJhZ0NvbG9yLnJnYiA9IGRpdGhlcmluZyggZ2xfRnJhZ0NvbG9yLnJnYiApO1xuI2VuZGlmIixkaXRoZXJpbmdfcGFyc19mcmFnbWVudDoiI2lmZGVmIERJVEhFUklOR1xuXHR2ZWMzIGRpdGhlcmluZyggdmVjMyBjb2xvciApIHtcblx0XHRmbG9hdCBncmlkX3Bvc2l0aW9uID0gcmFuZCggZ2xfRnJhZ0Nvb3JkLnh5ICk7XG5cdFx0dmVjMyBkaXRoZXJfc2hpZnRfUkdCID0gdmVjMyggMC4yNSAvIDI1NS4wLCAtMC4yNSAvIDI1NS4wLCAwLjI1IC8gMjU1LjAgKTtcblx0XHRkaXRoZXJfc2hpZnRfUkdCID0gbWl4KCAyLjAgKiBkaXRoZXJfc2hpZnRfUkdCLCAtMi4wICogZGl0aGVyX3NoaWZ0X1JHQiwgZ3JpZF9wb3NpdGlvbiApO1xuXHRcdHJldHVybiBjb2xvciArIGRpdGhlcl9zaGlmdF9SR0I7XG5cdH1cbiNlbmRpZiIscm91Z2huZXNzbWFwX2ZyYWdtZW50OiJmbG9hdCByb3VnaG5lc3NGYWN0b3IgPSByb3VnaG5lc3M7XG4jaWZkZWYgVVNFX1JPVUdITkVTU01BUFxuXHR2ZWM0IHRleGVsUm91Z2huZXNzID0gdGV4dHVyZTJEKCByb3VnaG5lc3NNYXAsIHZVdiApO1xuXHRyb3VnaG5lc3NGYWN0b3IgKj0gdGV4ZWxSb3VnaG5lc3MuZztcbiNlbmRpZiIscm91Z2huZXNzbWFwX3BhcnNfZnJhZ21lbnQ6IiNpZmRlZiBVU0VfUk9VR0hORVNTTUFQXG5cdHVuaWZvcm0gc2FtcGxlcjJEIHJvdWdobmVzc01hcDtcbiNlbmRpZiIsc2hhZG93bWFwX3BhcnNfZnJhZ21lbnQ6IiNpZmRlZiBVU0VfU0hBRE9XTUFQXG5cdCNpZiBOVU1fRElSX0xJR0hUX1NIQURPV1MgPiAwXG5cdFx0dW5pZm9ybSBzYW1wbGVyMkQgZGlyZWN0aW9uYWxTaGFkb3dNYXBbIE5VTV9ESVJfTElHSFRfU0hBRE9XUyBdO1xuXHRcdHZhcnlpbmcgdmVjNCB2RGlyZWN0aW9uYWxTaGFkb3dDb29yZFsgTlVNX0RJUl9MSUdIVF9TSEFET1dTIF07XG5cdFx0c3RydWN0IERpcmVjdGlvbmFsTGlnaHRTaGFkb3cge1xuXHRcdFx0ZmxvYXQgc2hhZG93Qmlhcztcblx0XHRcdGZsb2F0IHNoYWRvd05vcm1hbEJpYXM7XG5cdFx0XHRmbG9hdCBzaGFkb3dSYWRpdXM7XG5cdFx0XHR2ZWMyIHNoYWRvd01hcFNpemU7XG5cdFx0fTtcblx0XHR1bmlmb3JtIERpcmVjdGlvbmFsTGlnaHRTaGFkb3cgZGlyZWN0aW9uYWxMaWdodFNoYWRvd3NbIE5VTV9ESVJfTElHSFRfU0hBRE9XUyBdO1xuXHQjZW5kaWZcblx0I2lmIE5VTV9TUE9UX0xJR0hUX1NIQURPV1MgPiAwXG5cdFx0dW5pZm9ybSBzYW1wbGVyMkQgc3BvdFNoYWRvd01hcFsgTlVNX1NQT1RfTElHSFRfU0hBRE9XUyBdO1xuXHRcdHZhcnlpbmcgdmVjNCB2U3BvdFNoYWRvd0Nvb3JkWyBOVU1fU1BPVF9MSUdIVF9TSEFET1dTIF07XG5cdFx0c3RydWN0IFNwb3RMaWdodFNoYWRvdyB7XG5cdFx0XHRmbG9hdCBzaGFkb3dCaWFzO1xuXHRcdFx0ZmxvYXQgc2hhZG93Tm9ybWFsQmlhcztcblx0XHRcdGZsb2F0IHNoYWRvd1JhZGl1cztcblx0XHRcdHZlYzIgc2hhZG93TWFwU2l6ZTtcblx0XHR9O1xuXHRcdHVuaWZvcm0gU3BvdExpZ2h0U2hhZG93IHNwb3RMaWdodFNoYWRvd3NbIE5VTV9TUE9UX0xJR0hUX1NIQURPV1MgXTtcblx0I2VuZGlmXG5cdCNpZiBOVU1fUE9JTlRfTElHSFRfU0hBRE9XUyA+IDBcblx0XHR1bmlmb3JtIHNhbXBsZXIyRCBwb2ludFNoYWRvd01hcFsgTlVNX1BPSU5UX0xJR0hUX1NIQURPV1MgXTtcblx0XHR2YXJ5aW5nIHZlYzQgdlBvaW50U2hhZG93Q29vcmRbIE5VTV9QT0lOVF9MSUdIVF9TSEFET1dTIF07XG5cdFx0c3RydWN0IFBvaW50TGlnaHRTaGFkb3cge1xuXHRcdFx0ZmxvYXQgc2hhZG93Qmlhcztcblx0XHRcdGZsb2F0IHNoYWRvd05vcm1hbEJpYXM7XG5cdFx0XHRmbG9hdCBzaGFkb3dSYWRpdXM7XG5cdFx0XHR2ZWMyIHNoYWRvd01hcFNpemU7XG5cdFx0XHRmbG9hdCBzaGFkb3dDYW1lcmFOZWFyO1xuXHRcdFx0ZmxvYXQgc2hhZG93Q2FtZXJhRmFyO1xuXHRcdH07XG5cdFx0dW5pZm9ybSBQb2ludExpZ2h0U2hhZG93IHBvaW50TGlnaHRTaGFkb3dzWyBOVU1fUE9JTlRfTElHSFRfU0hBRE9XUyBdO1xuXHQjZW5kaWZcblx0ZmxvYXQgdGV4dHVyZTJEQ29tcGFyZSggc2FtcGxlcjJEIGRlcHRocywgdmVjMiB1diwgZmxvYXQgY29tcGFyZSApIHtcblx0XHRyZXR1cm4gc3RlcCggY29tcGFyZSwgdW5wYWNrUkdCQVRvRGVwdGgoIHRleHR1cmUyRCggZGVwdGhzLCB1diApICkgKTtcblx0fVxuXHR2ZWMyIHRleHR1cmUyRERpc3RyaWJ1dGlvbiggc2FtcGxlcjJEIHNoYWRvdywgdmVjMiB1diApIHtcblx0XHRyZXR1cm4gdW5wYWNrUkdCQVRvMkhhbGYoIHRleHR1cmUyRCggc2hhZG93LCB1diApICk7XG5cdH1cblx0ZmxvYXQgVlNNU2hhZG93IChzYW1wbGVyMkQgc2hhZG93LCB2ZWMyIHV2LCBmbG9hdCBjb21wYXJlICl7XG5cdFx0ZmxvYXQgb2NjbHVzaW9uID0gMS4wO1xuXHRcdHZlYzIgZGlzdHJpYnV0aW9uID0gdGV4dHVyZTJERGlzdHJpYnV0aW9uKCBzaGFkb3csIHV2ICk7XG5cdFx0ZmxvYXQgaGFyZF9zaGFkb3cgPSBzdGVwKCBjb21wYXJlICwgZGlzdHJpYnV0aW9uLnggKTtcblx0XHRpZiAoaGFyZF9zaGFkb3cgIT0gMS4wICkge1xuXHRcdFx0ZmxvYXQgZGlzdGFuY2UgPSBjb21wYXJlIC0gZGlzdHJpYnV0aW9uLnggO1xuXHRcdFx0ZmxvYXQgdmFyaWFuY2UgPSBtYXgoIDAuMDAwMDAsIGRpc3RyaWJ1dGlvbi55ICogZGlzdHJpYnV0aW9uLnkgKTtcblx0XHRcdGZsb2F0IHNvZnRuZXNzX3Byb2JhYmlsaXR5ID0gdmFyaWFuY2UgLyAodmFyaWFuY2UgKyBkaXN0YW5jZSAqIGRpc3RhbmNlICk7XHRcdFx0c29mdG5lc3NfcHJvYmFiaWxpdHkgPSBjbGFtcCggKCBzb2Z0bmVzc19wcm9iYWJpbGl0eSAtIDAuMyApIC8gKCAwLjk1IC0gMC4zICksIDAuMCwgMS4wICk7XHRcdFx0b2NjbHVzaW9uID0gY2xhbXAoIG1heCggaGFyZF9zaGFkb3csIHNvZnRuZXNzX3Byb2JhYmlsaXR5ICksIDAuMCwgMS4wICk7XG5cdFx0fVxuXHRcdHJldHVybiBvY2NsdXNpb247XG5cdH1cblx0ZmxvYXQgZ2V0U2hhZG93KCBzYW1wbGVyMkQgc2hhZG93TWFwLCB2ZWMyIHNoYWRvd01hcFNpemUsIGZsb2F0IHNoYWRvd0JpYXMsIGZsb2F0IHNoYWRvd1JhZGl1cywgdmVjNCBzaGFkb3dDb29yZCApIHtcblx0XHRmbG9hdCBzaGFkb3cgPSAxLjA7XG5cdFx0c2hhZG93Q29vcmQueHl6IC89IHNoYWRvd0Nvb3JkLnc7XG5cdFx0c2hhZG93Q29vcmQueiArPSBzaGFkb3dCaWFzO1xuXHRcdGJ2ZWM0IGluRnJ1c3R1bVZlYyA9IGJ2ZWM0ICggc2hhZG93Q29vcmQueCA+PSAwLjAsIHNoYWRvd0Nvb3JkLnggPD0gMS4wLCBzaGFkb3dDb29yZC55ID49IDAuMCwgc2hhZG93Q29vcmQueSA8PSAxLjAgKTtcblx0XHRib29sIGluRnJ1c3R1bSA9IGFsbCggaW5GcnVzdHVtVmVjICk7XG5cdFx0YnZlYzIgZnJ1c3R1bVRlc3RWZWMgPSBidmVjMiggaW5GcnVzdHVtLCBzaGFkb3dDb29yZC56IDw9IDEuMCApO1xuXHRcdGJvb2wgZnJ1c3R1bVRlc3QgPSBhbGwoIGZydXN0dW1UZXN0VmVjICk7XG5cdFx0aWYgKCBmcnVzdHVtVGVzdCApIHtcblx0XHQjaWYgZGVmaW5lZCggU0hBRE9XTUFQX1RZUEVfUENGIClcblx0XHRcdHZlYzIgdGV4ZWxTaXplID0gdmVjMiggMS4wICkgLyBzaGFkb3dNYXBTaXplO1xuXHRcdFx0ZmxvYXQgZHgwID0gLSB0ZXhlbFNpemUueCAqIHNoYWRvd1JhZGl1cztcblx0XHRcdGZsb2F0IGR5MCA9IC0gdGV4ZWxTaXplLnkgKiBzaGFkb3dSYWRpdXM7XG5cdFx0XHRmbG9hdCBkeDEgPSArIHRleGVsU2l6ZS54ICogc2hhZG93UmFkaXVzO1xuXHRcdFx0ZmxvYXQgZHkxID0gKyB0ZXhlbFNpemUueSAqIHNoYWRvd1JhZGl1cztcblx0XHRcdGZsb2F0IGR4MiA9IGR4MCAvIDIuMDtcblx0XHRcdGZsb2F0IGR5MiA9IGR5MCAvIDIuMDtcblx0XHRcdGZsb2F0IGR4MyA9IGR4MSAvIDIuMDtcblx0XHRcdGZsb2F0IGR5MyA9IGR5MSAvIDIuMDtcblx0XHRcdHNoYWRvdyA9IChcblx0XHRcdFx0dGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBzaGFkb3dDb29yZC54eSArIHZlYzIoIGR4MCwgZHkwICksIHNoYWRvd0Nvb3JkLnogKSArXG5cdFx0XHRcdHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgc2hhZG93Q29vcmQueHkgKyB2ZWMyKCAwLjAsIGR5MCApLCBzaGFkb3dDb29yZC56ICkgK1xuXHRcdFx0XHR0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHNoYWRvd0Nvb3JkLnh5ICsgdmVjMiggZHgxLCBkeTAgKSwgc2hhZG93Q29vcmQueiApICtcblx0XHRcdFx0dGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBzaGFkb3dDb29yZC54eSArIHZlYzIoIGR4MiwgZHkyICksIHNoYWRvd0Nvb3JkLnogKSArXG5cdFx0XHRcdHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgc2hhZG93Q29vcmQueHkgKyB2ZWMyKCAwLjAsIGR5MiApLCBzaGFkb3dDb29yZC56ICkgK1xuXHRcdFx0XHR0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHNoYWRvd0Nvb3JkLnh5ICsgdmVjMiggZHgzLCBkeTIgKSwgc2hhZG93Q29vcmQueiApICtcblx0XHRcdFx0dGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBzaGFkb3dDb29yZC54eSArIHZlYzIoIGR4MCwgMC4wICksIHNoYWRvd0Nvb3JkLnogKSArXG5cdFx0XHRcdHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgc2hhZG93Q29vcmQueHkgKyB2ZWMyKCBkeDIsIDAuMCApLCBzaGFkb3dDb29yZC56ICkgK1xuXHRcdFx0XHR0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHNoYWRvd0Nvb3JkLnh5LCBzaGFkb3dDb29yZC56ICkgK1xuXHRcdFx0XHR0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHNoYWRvd0Nvb3JkLnh5ICsgdmVjMiggZHgzLCAwLjAgKSwgc2hhZG93Q29vcmQueiApICtcblx0XHRcdFx0dGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBzaGFkb3dDb29yZC54eSArIHZlYzIoIGR4MSwgMC4wICksIHNoYWRvd0Nvb3JkLnogKSArXG5cdFx0XHRcdHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgc2hhZG93Q29vcmQueHkgKyB2ZWMyKCBkeDIsIGR5MyApLCBzaGFkb3dDb29yZC56ICkgK1xuXHRcdFx0XHR0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHNoYWRvd0Nvb3JkLnh5ICsgdmVjMiggMC4wLCBkeTMgKSwgc2hhZG93Q29vcmQueiApICtcblx0XHRcdFx0dGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBzaGFkb3dDb29yZC54eSArIHZlYzIoIGR4MywgZHkzICksIHNoYWRvd0Nvb3JkLnogKSArXG5cdFx0XHRcdHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgc2hhZG93Q29vcmQueHkgKyB2ZWMyKCBkeDAsIGR5MSApLCBzaGFkb3dDb29yZC56ICkgK1xuXHRcdFx0XHR0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHNoYWRvd0Nvb3JkLnh5ICsgdmVjMiggMC4wLCBkeTEgKSwgc2hhZG93Q29vcmQueiApICtcblx0XHRcdFx0dGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBzaGFkb3dDb29yZC54eSArIHZlYzIoIGR4MSwgZHkxICksIHNoYWRvd0Nvb3JkLnogKVxuXHRcdFx0KSAqICggMS4wIC8gMTcuMCApO1xuXHRcdCNlbGlmIGRlZmluZWQoIFNIQURPV01BUF9UWVBFX1BDRl9TT0ZUIClcblx0XHRcdHZlYzIgdGV4ZWxTaXplID0gdmVjMiggMS4wICkgLyBzaGFkb3dNYXBTaXplO1xuXHRcdFx0ZmxvYXQgZHggPSB0ZXhlbFNpemUueDtcblx0XHRcdGZsb2F0IGR5ID0gdGV4ZWxTaXplLnk7XG5cdFx0XHR2ZWMyIHV2ID0gc2hhZG93Q29vcmQueHk7XG5cdFx0XHR2ZWMyIGYgPSBmcmFjdCggdXYgKiBzaGFkb3dNYXBTaXplICsgMC41ICk7XG5cdFx0XHR1diAtPSBmICogdGV4ZWxTaXplO1xuXHRcdFx0c2hhZG93ID0gKFxuXHRcdFx0XHR0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHV2LCBzaGFkb3dDb29yZC56ICkgK1xuXHRcdFx0XHR0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHV2ICsgdmVjMiggZHgsIDAuMCApLCBzaGFkb3dDb29yZC56ICkgK1xuXHRcdFx0XHR0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHV2ICsgdmVjMiggMC4wLCBkeSApLCBzaGFkb3dDb29yZC56ICkgK1xuXHRcdFx0XHR0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHV2ICsgdGV4ZWxTaXplLCBzaGFkb3dDb29yZC56ICkgK1xuXHRcdFx0XHRtaXgoIHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgdXYgKyB2ZWMyKCAtZHgsIDAuMCApLCBzaGFkb3dDb29yZC56ICksIFxuXHRcdFx0XHRcdCB0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHV2ICsgdmVjMiggMi4wICogZHgsIDAuMCApLCBzaGFkb3dDb29yZC56ICksXG5cdFx0XHRcdFx0IGYueCApICtcblx0XHRcdFx0bWl4KCB0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHV2ICsgdmVjMiggLWR4LCBkeSApLCBzaGFkb3dDb29yZC56ICksIFxuXHRcdFx0XHRcdCB0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHV2ICsgdmVjMiggMi4wICogZHgsIGR5ICksIHNoYWRvd0Nvb3JkLnogKSxcblx0XHRcdFx0XHQgZi54ICkgK1xuXHRcdFx0XHRtaXgoIHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgdXYgKyB2ZWMyKCAwLjAsIC1keSApLCBzaGFkb3dDb29yZC56ICksIFxuXHRcdFx0XHRcdCB0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHV2ICsgdmVjMiggMC4wLCAyLjAgKiBkeSApLCBzaGFkb3dDb29yZC56ICksXG5cdFx0XHRcdFx0IGYueSApICtcblx0XHRcdFx0bWl4KCB0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHV2ICsgdmVjMiggZHgsIC1keSApLCBzaGFkb3dDb29yZC56ICksIFxuXHRcdFx0XHRcdCB0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHV2ICsgdmVjMiggZHgsIDIuMCAqIGR5ICksIHNoYWRvd0Nvb3JkLnogKSxcblx0XHRcdFx0XHQgZi55ICkgK1xuXHRcdFx0XHRtaXgoIG1peCggdGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCB1diArIHZlYzIoIC1keCwgLWR5ICksIHNoYWRvd0Nvb3JkLnogKSwgXG5cdFx0XHRcdFx0XHQgIHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgdXYgKyB2ZWMyKCAyLjAgKiBkeCwgLWR5ICksIHNoYWRvd0Nvb3JkLnogKSxcblx0XHRcdFx0XHRcdCAgZi54ICksXG5cdFx0XHRcdFx0IG1peCggdGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCB1diArIHZlYzIoIC1keCwgMi4wICogZHkgKSwgc2hhZG93Q29vcmQueiApLCBcblx0XHRcdFx0XHRcdCAgdGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCB1diArIHZlYzIoIDIuMCAqIGR4LCAyLjAgKiBkeSApLCBzaGFkb3dDb29yZC56ICksXG5cdFx0XHRcdFx0XHQgIGYueCApLFxuXHRcdFx0XHRcdCBmLnkgKVxuXHRcdFx0KSAqICggMS4wIC8gOS4wICk7XG5cdFx0I2VsaWYgZGVmaW5lZCggU0hBRE9XTUFQX1RZUEVfVlNNIClcblx0XHRcdHNoYWRvdyA9IFZTTVNoYWRvdyggc2hhZG93TWFwLCBzaGFkb3dDb29yZC54eSwgc2hhZG93Q29vcmQueiApO1xuXHRcdCNlbHNlXG5cdFx0XHRzaGFkb3cgPSB0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHNoYWRvd0Nvb3JkLnh5LCBzaGFkb3dDb29yZC56ICk7XG5cdFx0I2VuZGlmXG5cdFx0fVxuXHRcdHJldHVybiBzaGFkb3c7XG5cdH1cblx0dmVjMiBjdWJlVG9VViggdmVjMyB2LCBmbG9hdCB0ZXhlbFNpemVZICkge1xuXHRcdHZlYzMgYWJzViA9IGFicyggdiApO1xuXHRcdGZsb2F0IHNjYWxlVG9DdWJlID0gMS4wIC8gbWF4KCBhYnNWLngsIG1heCggYWJzVi55LCBhYnNWLnogKSApO1xuXHRcdGFic1YgKj0gc2NhbGVUb0N1YmU7XG5cdFx0diAqPSBzY2FsZVRvQ3ViZSAqICggMS4wIC0gMi4wICogdGV4ZWxTaXplWSApO1xuXHRcdHZlYzIgcGxhbmFyID0gdi54eTtcblx0XHRmbG9hdCBhbG1vc3RBVGV4ZWwgPSAxLjUgKiB0ZXhlbFNpemVZO1xuXHRcdGZsb2F0IGFsbW9zdE9uZSA9IDEuMCAtIGFsbW9zdEFUZXhlbDtcblx0XHRpZiAoIGFic1YueiA+PSBhbG1vc3RPbmUgKSB7XG5cdFx0XHRpZiAoIHYueiA+IDAuMCApXG5cdFx0XHRcdHBsYW5hci54ID0gNC4wIC0gdi54O1xuXHRcdH0gZWxzZSBpZiAoIGFic1YueCA+PSBhbG1vc3RPbmUgKSB7XG5cdFx0XHRmbG9hdCBzaWduWCA9IHNpZ24oIHYueCApO1xuXHRcdFx0cGxhbmFyLnggPSB2LnogKiBzaWduWCArIDIuMCAqIHNpZ25YO1xuXHRcdH0gZWxzZSBpZiAoIGFic1YueSA+PSBhbG1vc3RPbmUgKSB7XG5cdFx0XHRmbG9hdCBzaWduWSA9IHNpZ24oIHYueSApO1xuXHRcdFx0cGxhbmFyLnggPSB2LnggKyAyLjAgKiBzaWduWSArIDIuMDtcblx0XHRcdHBsYW5hci55ID0gdi56ICogc2lnblkgLSAyLjA7XG5cdFx0fVxuXHRcdHJldHVybiB2ZWMyKCAwLjEyNSwgMC4yNSApICogcGxhbmFyICsgdmVjMiggMC4zNzUsIDAuNzUgKTtcblx0fVxuXHRmbG9hdCBnZXRQb2ludFNoYWRvdyggc2FtcGxlcjJEIHNoYWRvd01hcCwgdmVjMiBzaGFkb3dNYXBTaXplLCBmbG9hdCBzaGFkb3dCaWFzLCBmbG9hdCBzaGFkb3dSYWRpdXMsIHZlYzQgc2hhZG93Q29vcmQsIGZsb2F0IHNoYWRvd0NhbWVyYU5lYXIsIGZsb2F0IHNoYWRvd0NhbWVyYUZhciApIHtcblx0XHR2ZWMyIHRleGVsU2l6ZSA9IHZlYzIoIDEuMCApIC8gKCBzaGFkb3dNYXBTaXplICogdmVjMiggNC4wLCAyLjAgKSApO1xuXHRcdHZlYzMgbGlnaHRUb1Bvc2l0aW9uID0gc2hhZG93Q29vcmQueHl6O1xuXHRcdGZsb2F0IGRwID0gKCBsZW5ndGgoIGxpZ2h0VG9Qb3NpdGlvbiApIC0gc2hhZG93Q2FtZXJhTmVhciApIC8gKCBzaGFkb3dDYW1lcmFGYXIgLSBzaGFkb3dDYW1lcmFOZWFyICk7XHRcdGRwICs9IHNoYWRvd0JpYXM7XG5cdFx0dmVjMyBiZDNEID0gbm9ybWFsaXplKCBsaWdodFRvUG9zaXRpb24gKTtcblx0XHQjaWYgZGVmaW5lZCggU0hBRE9XTUFQX1RZUEVfUENGICkgfHwgZGVmaW5lZCggU0hBRE9XTUFQX1RZUEVfUENGX1NPRlQgKSB8fCBkZWZpbmVkKCBTSEFET1dNQVBfVFlQRV9WU00gKVxuXHRcdFx0dmVjMiBvZmZzZXQgPSB2ZWMyKCAtIDEsIDEgKSAqIHNoYWRvd1JhZGl1cyAqIHRleGVsU2l6ZS55O1xuXHRcdFx0cmV0dXJuIChcblx0XHRcdFx0dGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBjdWJlVG9VViggYmQzRCArIG9mZnNldC54eXksIHRleGVsU2l6ZS55ICksIGRwICkgK1xuXHRcdFx0XHR0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIGN1YmVUb1VWKCBiZDNEICsgb2Zmc2V0Lnl5eSwgdGV4ZWxTaXplLnkgKSwgZHAgKSArXG5cdFx0XHRcdHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgY3ViZVRvVVYoIGJkM0QgKyBvZmZzZXQueHl4LCB0ZXhlbFNpemUueSApLCBkcCApICtcblx0XHRcdFx0dGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBjdWJlVG9VViggYmQzRCArIG9mZnNldC55eXgsIHRleGVsU2l6ZS55ICksIGRwICkgK1xuXHRcdFx0XHR0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIGN1YmVUb1VWKCBiZDNELCB0ZXhlbFNpemUueSApLCBkcCApICtcblx0XHRcdFx0dGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBjdWJlVG9VViggYmQzRCArIG9mZnNldC54eHksIHRleGVsU2l6ZS55ICksIGRwICkgK1xuXHRcdFx0XHR0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIGN1YmVUb1VWKCBiZDNEICsgb2Zmc2V0Lnl4eSwgdGV4ZWxTaXplLnkgKSwgZHAgKSArXG5cdFx0XHRcdHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgY3ViZVRvVVYoIGJkM0QgKyBvZmZzZXQueHh4LCB0ZXhlbFNpemUueSApLCBkcCApICtcblx0XHRcdFx0dGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBjdWJlVG9VViggYmQzRCArIG9mZnNldC55eHgsIHRleGVsU2l6ZS55ICksIGRwIClcblx0XHRcdCkgKiAoIDEuMCAvIDkuMCApO1xuXHRcdCNlbHNlXG5cdFx0XHRyZXR1cm4gdGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBjdWJlVG9VViggYmQzRCwgdGV4ZWxTaXplLnkgKSwgZHAgKTtcblx0XHQjZW5kaWZcblx0fVxuI2VuZGlmIixzaGFkb3dtYXBfcGFyc192ZXJ0ZXg6IiNpZmRlZiBVU0VfU0hBRE9XTUFQXG5cdCNpZiBOVU1fRElSX0xJR0hUX1NIQURPV1MgPiAwXG5cdFx0dW5pZm9ybSBtYXQ0IGRpcmVjdGlvbmFsU2hhZG93TWF0cml4WyBOVU1fRElSX0xJR0hUX1NIQURPV1MgXTtcblx0XHR2YXJ5aW5nIHZlYzQgdkRpcmVjdGlvbmFsU2hhZG93Q29vcmRbIE5VTV9ESVJfTElHSFRfU0hBRE9XUyBdO1xuXHRcdHN0cnVjdCBEaXJlY3Rpb25hbExpZ2h0U2hhZG93IHtcblx0XHRcdGZsb2F0IHNoYWRvd0JpYXM7XG5cdFx0XHRmbG9hdCBzaGFkb3dOb3JtYWxCaWFzO1xuXHRcdFx0ZmxvYXQgc2hhZG93UmFkaXVzO1xuXHRcdFx0dmVjMiBzaGFkb3dNYXBTaXplO1xuXHRcdH07XG5cdFx0dW5pZm9ybSBEaXJlY3Rpb25hbExpZ2h0U2hhZG93IGRpcmVjdGlvbmFsTGlnaHRTaGFkb3dzWyBOVU1fRElSX0xJR0hUX1NIQURPV1MgXTtcblx0I2VuZGlmXG5cdCNpZiBOVU1fU1BPVF9MSUdIVF9TSEFET1dTID4gMFxuXHRcdHVuaWZvcm0gbWF0NCBzcG90U2hhZG93TWF0cml4WyBOVU1fU1BPVF9MSUdIVF9TSEFET1dTIF07XG5cdFx0dmFyeWluZyB2ZWM0IHZTcG90U2hhZG93Q29vcmRbIE5VTV9TUE9UX0xJR0hUX1NIQURPV1MgXTtcblx0XHRzdHJ1Y3QgU3BvdExpZ2h0U2hhZG93IHtcblx0XHRcdGZsb2F0IHNoYWRvd0JpYXM7XG5cdFx0XHRmbG9hdCBzaGFkb3dOb3JtYWxCaWFzO1xuXHRcdFx0ZmxvYXQgc2hhZG93UmFkaXVzO1xuXHRcdFx0dmVjMiBzaGFkb3dNYXBTaXplO1xuXHRcdH07XG5cdFx0dW5pZm9ybSBTcG90TGlnaHRTaGFkb3cgc3BvdExpZ2h0U2hhZG93c1sgTlVNX1NQT1RfTElHSFRfU0hBRE9XUyBdO1xuXHQjZW5kaWZcblx0I2lmIE5VTV9QT0lOVF9MSUdIVF9TSEFET1dTID4gMFxuXHRcdHVuaWZvcm0gbWF0NCBwb2ludFNoYWRvd01hdHJpeFsgTlVNX1BPSU5UX0xJR0hUX1NIQURPV1MgXTtcblx0XHR2YXJ5aW5nIHZlYzQgdlBvaW50U2hhZG93Q29vcmRbIE5VTV9QT0lOVF9MSUdIVF9TSEFET1dTIF07XG5cdFx0c3RydWN0IFBvaW50TGlnaHRTaGFkb3cge1xuXHRcdFx0ZmxvYXQgc2hhZG93Qmlhcztcblx0XHRcdGZsb2F0IHNoYWRvd05vcm1hbEJpYXM7XG5cdFx0XHRmbG9hdCBzaGFkb3dSYWRpdXM7XG5cdFx0XHR2ZWMyIHNoYWRvd01hcFNpemU7XG5cdFx0XHRmbG9hdCBzaGFkb3dDYW1lcmFOZWFyO1xuXHRcdFx0ZmxvYXQgc2hhZG93Q2FtZXJhRmFyO1xuXHRcdH07XG5cdFx0dW5pZm9ybSBQb2ludExpZ2h0U2hhZG93IHBvaW50TGlnaHRTaGFkb3dzWyBOVU1fUE9JTlRfTElHSFRfU0hBRE9XUyBdO1xuXHQjZW5kaWZcbiNlbmRpZiIsc2hhZG93bWFwX3ZlcnRleDoiI2lmZGVmIFVTRV9TSEFET1dNQVBcblx0I2lmIE5VTV9ESVJfTElHSFRfU0hBRE9XUyA+IDAgfHwgTlVNX1NQT1RfTElHSFRfU0hBRE9XUyA+IDAgfHwgTlVNX1BPSU5UX0xJR0hUX1NIQURPV1MgPiAwXG5cdFx0dmVjMyBzaGFkb3dXb3JsZE5vcm1hbCA9IGludmVyc2VUcmFuc2Zvcm1EaXJlY3Rpb24oIHRyYW5zZm9ybWVkTm9ybWFsLCB2aWV3TWF0cml4ICk7XG5cdFx0dmVjNCBzaGFkb3dXb3JsZFBvc2l0aW9uO1xuXHQjZW5kaWZcblx0I2lmIE5VTV9ESVJfTElHSFRfU0hBRE9XUyA+IDBcblx0I3ByYWdtYSB1bnJvbGxfbG9vcF9zdGFydFxuXHRmb3IgKCBpbnQgaSA9IDA7IGkgPCBOVU1fRElSX0xJR0hUX1NIQURPV1M7IGkgKysgKSB7XG5cdFx0c2hhZG93V29ybGRQb3NpdGlvbiA9IHdvcmxkUG9zaXRpb24gKyB2ZWM0KCBzaGFkb3dXb3JsZE5vcm1hbCAqIGRpcmVjdGlvbmFsTGlnaHRTaGFkb3dzWyBpIF0uc2hhZG93Tm9ybWFsQmlhcywgMCApO1xuXHRcdHZEaXJlY3Rpb25hbFNoYWRvd0Nvb3JkWyBpIF0gPSBkaXJlY3Rpb25hbFNoYWRvd01hdHJpeFsgaSBdICogc2hhZG93V29ybGRQb3NpdGlvbjtcblx0fVxuXHQjcHJhZ21hIHVucm9sbF9sb29wX2VuZFxuXHQjZW5kaWZcblx0I2lmIE5VTV9TUE9UX0xJR0hUX1NIQURPV1MgPiAwXG5cdCNwcmFnbWEgdW5yb2xsX2xvb3Bfc3RhcnRcblx0Zm9yICggaW50IGkgPSAwOyBpIDwgTlVNX1NQT1RfTElHSFRfU0hBRE9XUzsgaSArKyApIHtcblx0XHRzaGFkb3dXb3JsZFBvc2l0aW9uID0gd29ybGRQb3NpdGlvbiArIHZlYzQoIHNoYWRvd1dvcmxkTm9ybWFsICogc3BvdExpZ2h0U2hhZG93c1sgaSBdLnNoYWRvd05vcm1hbEJpYXMsIDAgKTtcblx0XHR2U3BvdFNoYWRvd0Nvb3JkWyBpIF0gPSBzcG90U2hhZG93TWF0cml4WyBpIF0gKiBzaGFkb3dXb3JsZFBvc2l0aW9uO1xuXHR9XG5cdCNwcmFnbWEgdW5yb2xsX2xvb3BfZW5kXG5cdCNlbmRpZlxuXHQjaWYgTlVNX1BPSU5UX0xJR0hUX1NIQURPV1MgPiAwXG5cdCNwcmFnbWEgdW5yb2xsX2xvb3Bfc3RhcnRcblx0Zm9yICggaW50IGkgPSAwOyBpIDwgTlVNX1BPSU5UX0xJR0hUX1NIQURPV1M7IGkgKysgKSB7XG5cdFx0c2hhZG93V29ybGRQb3NpdGlvbiA9IHdvcmxkUG9zaXRpb24gKyB2ZWM0KCBzaGFkb3dXb3JsZE5vcm1hbCAqIHBvaW50TGlnaHRTaGFkb3dzWyBpIF0uc2hhZG93Tm9ybWFsQmlhcywgMCApO1xuXHRcdHZQb2ludFNoYWRvd0Nvb3JkWyBpIF0gPSBwb2ludFNoYWRvd01hdHJpeFsgaSBdICogc2hhZG93V29ybGRQb3NpdGlvbjtcblx0fVxuXHQjcHJhZ21hIHVucm9sbF9sb29wX2VuZFxuXHQjZW5kaWZcbiNlbmRpZiIsc2hhZG93bWFza19wYXJzX2ZyYWdtZW50OiJmbG9hdCBnZXRTaGFkb3dNYXNrKCkge1xuXHRmbG9hdCBzaGFkb3cgPSAxLjA7XG5cdCNpZmRlZiBVU0VfU0hBRE9XTUFQXG5cdCNpZiBOVU1fRElSX0xJR0hUX1NIQURPV1MgPiAwXG5cdERpcmVjdGlvbmFsTGlnaHRTaGFkb3cgZGlyZWN0aW9uYWxMaWdodDtcblx0I3ByYWdtYSB1bnJvbGxfbG9vcF9zdGFydFxuXHRmb3IgKCBpbnQgaSA9IDA7IGkgPCBOVU1fRElSX0xJR0hUX1NIQURPV1M7IGkgKysgKSB7XG5cdFx0ZGlyZWN0aW9uYWxMaWdodCA9IGRpcmVjdGlvbmFsTGlnaHRTaGFkb3dzWyBpIF07XG5cdFx0c2hhZG93ICo9IHJlY2VpdmVTaGFkb3cgPyBnZXRTaGFkb3coIGRpcmVjdGlvbmFsU2hhZG93TWFwWyBpIF0sIGRpcmVjdGlvbmFsTGlnaHQuc2hhZG93TWFwU2l6ZSwgZGlyZWN0aW9uYWxMaWdodC5zaGFkb3dCaWFzLCBkaXJlY3Rpb25hbExpZ2h0LnNoYWRvd1JhZGl1cywgdkRpcmVjdGlvbmFsU2hhZG93Q29vcmRbIGkgXSApIDogMS4wO1xuXHR9XG5cdCNwcmFnbWEgdW5yb2xsX2xvb3BfZW5kXG5cdCNlbmRpZlxuXHQjaWYgTlVNX1NQT1RfTElHSFRfU0hBRE9XUyA+IDBcblx0U3BvdExpZ2h0U2hhZG93IHNwb3RMaWdodDtcblx0I3ByYWdtYSB1bnJvbGxfbG9vcF9zdGFydFxuXHRmb3IgKCBpbnQgaSA9IDA7IGkgPCBOVU1fU1BPVF9MSUdIVF9TSEFET1dTOyBpICsrICkge1xuXHRcdHNwb3RMaWdodCA9IHNwb3RMaWdodFNoYWRvd3NbIGkgXTtcblx0XHRzaGFkb3cgKj0gcmVjZWl2ZVNoYWRvdyA/IGdldFNoYWRvdyggc3BvdFNoYWRvd01hcFsgaSBdLCBzcG90TGlnaHQuc2hhZG93TWFwU2l6ZSwgc3BvdExpZ2h0LnNoYWRvd0JpYXMsIHNwb3RMaWdodC5zaGFkb3dSYWRpdXMsIHZTcG90U2hhZG93Q29vcmRbIGkgXSApIDogMS4wO1xuXHR9XG5cdCNwcmFnbWEgdW5yb2xsX2xvb3BfZW5kXG5cdCNlbmRpZlxuXHQjaWYgTlVNX1BPSU5UX0xJR0hUX1NIQURPV1MgPiAwXG5cdFBvaW50TGlnaHRTaGFkb3cgcG9pbnRMaWdodDtcblx0I3ByYWdtYSB1bnJvbGxfbG9vcF9zdGFydFxuXHRmb3IgKCBpbnQgaSA9IDA7IGkgPCBOVU1fUE9JTlRfTElHSFRfU0hBRE9XUzsgaSArKyApIHtcblx0XHRwb2ludExpZ2h0ID0gcG9pbnRMaWdodFNoYWRvd3NbIGkgXTtcblx0XHRzaGFkb3cgKj0gcmVjZWl2ZVNoYWRvdyA/IGdldFBvaW50U2hhZG93KCBwb2ludFNoYWRvd01hcFsgaSBdLCBwb2ludExpZ2h0LnNoYWRvd01hcFNpemUsIHBvaW50TGlnaHQuc2hhZG93QmlhcywgcG9pbnRMaWdodC5zaGFkb3dSYWRpdXMsIHZQb2ludFNoYWRvd0Nvb3JkWyBpIF0sIHBvaW50TGlnaHQuc2hhZG93Q2FtZXJhTmVhciwgcG9pbnRMaWdodC5zaGFkb3dDYW1lcmFGYXIgKSA6IDEuMDtcblx0fVxuXHQjcHJhZ21hIHVucm9sbF9sb29wX2VuZFxuXHQjZW5kaWZcblx0I2VuZGlmXG5cdHJldHVybiBzaGFkb3c7XG59Iixza2luYmFzZV92ZXJ0ZXg6IiNpZmRlZiBVU0VfU0tJTk5JTkdcblx0bWF0NCBib25lTWF0WCA9IGdldEJvbmVNYXRyaXgoIHNraW5JbmRleC54ICk7XG5cdG1hdDQgYm9uZU1hdFkgPSBnZXRCb25lTWF0cml4KCBza2luSW5kZXgueSApO1xuXHRtYXQ0IGJvbmVNYXRaID0gZ2V0Qm9uZU1hdHJpeCggc2tpbkluZGV4LnogKTtcblx0bWF0NCBib25lTWF0VyA9IGdldEJvbmVNYXRyaXgoIHNraW5JbmRleC53ICk7XG4jZW5kaWYiLHNraW5uaW5nX3BhcnNfdmVydGV4OiIjaWZkZWYgVVNFX1NLSU5OSU5HXG5cdHVuaWZvcm0gbWF0NCBiaW5kTWF0cml4O1xuXHR1bmlmb3JtIG1hdDQgYmluZE1hdHJpeEludmVyc2U7XG5cdCNpZmRlZiBCT05FX1RFWFRVUkVcblx0XHR1bmlmb3JtIGhpZ2hwIHNhbXBsZXIyRCBib25lVGV4dHVyZTtcblx0XHR1bmlmb3JtIGludCBib25lVGV4dHVyZVNpemU7XG5cdFx0bWF0NCBnZXRCb25lTWF0cml4KCBjb25zdCBpbiBmbG9hdCBpICkge1xuXHRcdFx0ZmxvYXQgaiA9IGkgKiA0LjA7XG5cdFx0XHRmbG9hdCB4ID0gbW9kKCBqLCBmbG9hdCggYm9uZVRleHR1cmVTaXplICkgKTtcblx0XHRcdGZsb2F0IHkgPSBmbG9vciggaiAvIGZsb2F0KCBib25lVGV4dHVyZVNpemUgKSApO1xuXHRcdFx0ZmxvYXQgZHggPSAxLjAgLyBmbG9hdCggYm9uZVRleHR1cmVTaXplICk7XG5cdFx0XHRmbG9hdCBkeSA9IDEuMCAvIGZsb2F0KCBib25lVGV4dHVyZVNpemUgKTtcblx0XHRcdHkgPSBkeSAqICggeSArIDAuNSApO1xuXHRcdFx0dmVjNCB2MSA9IHRleHR1cmUyRCggYm9uZVRleHR1cmUsIHZlYzIoIGR4ICogKCB4ICsgMC41ICksIHkgKSApO1xuXHRcdFx0dmVjNCB2MiA9IHRleHR1cmUyRCggYm9uZVRleHR1cmUsIHZlYzIoIGR4ICogKCB4ICsgMS41ICksIHkgKSApO1xuXHRcdFx0dmVjNCB2MyA9IHRleHR1cmUyRCggYm9uZVRleHR1cmUsIHZlYzIoIGR4ICogKCB4ICsgMi41ICksIHkgKSApO1xuXHRcdFx0dmVjNCB2NCA9IHRleHR1cmUyRCggYm9uZVRleHR1cmUsIHZlYzIoIGR4ICogKCB4ICsgMy41ICksIHkgKSApO1xuXHRcdFx0bWF0NCBib25lID0gbWF0NCggdjEsIHYyLCB2MywgdjQgKTtcblx0XHRcdHJldHVybiBib25lO1xuXHRcdH1cblx0I2Vsc2Vcblx0XHR1bmlmb3JtIG1hdDQgYm9uZU1hdHJpY2VzWyBNQVhfQk9ORVMgXTtcblx0XHRtYXQ0IGdldEJvbmVNYXRyaXgoIGNvbnN0IGluIGZsb2F0IGkgKSB7XG5cdFx0XHRtYXQ0IGJvbmUgPSBib25lTWF0cmljZXNbIGludChpKSBdO1xuXHRcdFx0cmV0dXJuIGJvbmU7XG5cdFx0fVxuXHQjZW5kaWZcbiNlbmRpZiIsc2tpbm5pbmdfdmVydGV4OiIjaWZkZWYgVVNFX1NLSU5OSU5HXG5cdHZlYzQgc2tpblZlcnRleCA9IGJpbmRNYXRyaXggKiB2ZWM0KCB0cmFuc2Zvcm1lZCwgMS4wICk7XG5cdHZlYzQgc2tpbm5lZCA9IHZlYzQoIDAuMCApO1xuXHRza2lubmVkICs9IGJvbmVNYXRYICogc2tpblZlcnRleCAqIHNraW5XZWlnaHQueDtcblx0c2tpbm5lZCArPSBib25lTWF0WSAqIHNraW5WZXJ0ZXggKiBza2luV2VpZ2h0Lnk7XG5cdHNraW5uZWQgKz0gYm9uZU1hdFogKiBza2luVmVydGV4ICogc2tpbldlaWdodC56O1xuXHRza2lubmVkICs9IGJvbmVNYXRXICogc2tpblZlcnRleCAqIHNraW5XZWlnaHQudztcblx0dHJhbnNmb3JtZWQgPSAoIGJpbmRNYXRyaXhJbnZlcnNlICogc2tpbm5lZCApLnh5ejtcbiNlbmRpZiIsc2tpbm5vcm1hbF92ZXJ0ZXg6IiNpZmRlZiBVU0VfU0tJTk5JTkdcblx0bWF0NCBza2luTWF0cml4ID0gbWF0NCggMC4wICk7XG5cdHNraW5NYXRyaXggKz0gc2tpbldlaWdodC54ICogYm9uZU1hdFg7XG5cdHNraW5NYXRyaXggKz0gc2tpbldlaWdodC55ICogYm9uZU1hdFk7XG5cdHNraW5NYXRyaXggKz0gc2tpbldlaWdodC56ICogYm9uZU1hdFo7XG5cdHNraW5NYXRyaXggKz0gc2tpbldlaWdodC53ICogYm9uZU1hdFc7XG5cdHNraW5NYXRyaXggPSBiaW5kTWF0cml4SW52ZXJzZSAqIHNraW5NYXRyaXggKiBiaW5kTWF0cml4O1xuXHRvYmplY3ROb3JtYWwgPSB2ZWM0KCBza2luTWF0cml4ICogdmVjNCggb2JqZWN0Tm9ybWFsLCAwLjAgKSApLnh5ejtcblx0I2lmZGVmIFVTRV9UQU5HRU5UXG5cdFx0b2JqZWN0VGFuZ2VudCA9IHZlYzQoIHNraW5NYXRyaXggKiB2ZWM0KCBvYmplY3RUYW5nZW50LCAwLjAgKSApLnh5ejtcblx0I2VuZGlmXG4jZW5kaWYiLHNwZWN1bGFybWFwX2ZyYWdtZW50OiJmbG9hdCBzcGVjdWxhclN0cmVuZ3RoO1xuI2lmZGVmIFVTRV9TUEVDVUxBUk1BUFxuXHR2ZWM0IHRleGVsU3BlY3VsYXIgPSB0ZXh0dXJlMkQoIHNwZWN1bGFyTWFwLCB2VXYgKTtcblx0c3BlY3VsYXJTdHJlbmd0aCA9IHRleGVsU3BlY3VsYXIucjtcbiNlbHNlXG5cdHNwZWN1bGFyU3RyZW5ndGggPSAxLjA7XG4jZW5kaWYiLHNwZWN1bGFybWFwX3BhcnNfZnJhZ21lbnQ6IiNpZmRlZiBVU0VfU1BFQ1VMQVJNQVBcblx0dW5pZm9ybSBzYW1wbGVyMkQgc3BlY3VsYXJNYXA7XG4jZW5kaWYiLHRvbmVtYXBwaW5nX2ZyYWdtZW50OiIjaWYgZGVmaW5lZCggVE9ORV9NQVBQSU5HIClcblx0Z2xfRnJhZ0NvbG9yLnJnYiA9IHRvbmVNYXBwaW5nKCBnbF9GcmFnQ29sb3IucmdiICk7XG4jZW5kaWYiLHRvbmVtYXBwaW5nX3BhcnNfZnJhZ21lbnQ6IiNpZm5kZWYgc2F0dXJhdGVcbiNkZWZpbmUgc2F0dXJhdGUoYSkgY2xhbXAoIGEsIDAuMCwgMS4wIClcbiNlbmRpZlxudW5pZm9ybSBmbG9hdCB0b25lTWFwcGluZ0V4cG9zdXJlO1xudmVjMyBMaW5lYXJUb25lTWFwcGluZyggdmVjMyBjb2xvciApIHtcblx0cmV0dXJuIHRvbmVNYXBwaW5nRXhwb3N1cmUgKiBjb2xvcjtcbn1cbnZlYzMgUmVpbmhhcmRUb25lTWFwcGluZyggdmVjMyBjb2xvciApIHtcblx0Y29sb3IgKj0gdG9uZU1hcHBpbmdFeHBvc3VyZTtcblx0cmV0dXJuIHNhdHVyYXRlKCBjb2xvciAvICggdmVjMyggMS4wICkgKyBjb2xvciApICk7XG59XG52ZWMzIE9wdGltaXplZENpbmVvblRvbmVNYXBwaW5nKCB2ZWMzIGNvbG9yICkge1xuXHRjb2xvciAqPSB0b25lTWFwcGluZ0V4cG9zdXJlO1xuXHRjb2xvciA9IG1heCggdmVjMyggMC4wICksIGNvbG9yIC0gMC4wMDQgKTtcblx0cmV0dXJuIHBvdyggKCBjb2xvciAqICggNi4yICogY29sb3IgKyAwLjUgKSApIC8gKCBjb2xvciAqICggNi4yICogY29sb3IgKyAxLjcgKSArIDAuMDYgKSwgdmVjMyggMi4yICkgKTtcbn1cbnZlYzMgUlJUQW5kT0RURml0KCB2ZWMzIHYgKSB7XG5cdHZlYzMgYSA9IHYgKiAoIHYgKyAwLjAyNDU3ODYgKSAtIDAuMDAwMDkwNTM3O1xuXHR2ZWMzIGIgPSB2ICogKCAwLjk4MzcyOSAqIHYgKyAwLjQzMjk1MTAgKSArIDAuMjM4MDgxO1xuXHRyZXR1cm4gYSAvIGI7XG59XG52ZWMzIEFDRVNGaWxtaWNUb25lTWFwcGluZyggdmVjMyBjb2xvciApIHtcblx0Y29uc3QgbWF0MyBBQ0VTSW5wdXRNYXQgPSBtYXQzKFxuXHRcdHZlYzMoIDAuNTk3MTksIDAuMDc2MDAsIDAuMDI4NDAgKSxcdFx0dmVjMyggMC4zNTQ1OCwgMC45MDgzNCwgMC4xMzM4MyApLFxuXHRcdHZlYzMoIDAuMDQ4MjMsIDAuMDE1NjYsIDAuODM3NzcgKVxuXHQpO1xuXHRjb25zdCBtYXQzIEFDRVNPdXRwdXRNYXQgPSBtYXQzKFxuXHRcdHZlYzMoICAxLjYwNDc1LCAtMC4xMDIwOCwgLTAuMDAzMjcgKSxcdFx0dmVjMyggLTAuNTMxMDgsICAxLjEwODEzLCAtMC4wNzI3NiApLFxuXHRcdHZlYzMoIC0wLjA3MzY3LCAtMC4wMDYwNSwgIDEuMDc2MDIgKVxuXHQpO1xuXHRjb2xvciAqPSB0b25lTWFwcGluZ0V4cG9zdXJlIC8gMC42O1xuXHRjb2xvciA9IEFDRVNJbnB1dE1hdCAqIGNvbG9yO1xuXHRjb2xvciA9IFJSVEFuZE9EVEZpdCggY29sb3IgKTtcblx0Y29sb3IgPSBBQ0VTT3V0cHV0TWF0ICogY29sb3I7XG5cdHJldHVybiBzYXR1cmF0ZSggY29sb3IgKTtcbn1cbnZlYzMgQ3VzdG9tVG9uZU1hcHBpbmcoIHZlYzMgY29sb3IgKSB7IHJldHVybiBjb2xvcjsgfSIsdHJhbnNtaXNzaW9uX2ZyYWdtZW50OiIjaWZkZWYgVVNFX1RSQU5TTUlTU0lPTlxuXHRmbG9hdCB0cmFuc21pc3Npb25GYWN0b3IgPSB0cmFuc21pc3Npb247XG5cdGZsb2F0IHRoaWNrbmVzc0ZhY3RvciA9IHRoaWNrbmVzcztcblx0I2lmZGVmIFVTRV9UUkFOU01JU1NJT05NQVBcblx0XHR0cmFuc21pc3Npb25GYWN0b3IgKj0gdGV4dHVyZTJEKCB0cmFuc21pc3Npb25NYXAsIHZVdiApLnI7XG5cdCNlbmRpZlxuXHQjaWZkZWYgVVNFX1RISUNLTkVTU01BUFxuXHRcdHRoaWNrbmVzc0ZhY3RvciAqPSB0ZXh0dXJlMkQoIHRoaWNrbmVzc01hcCwgdlV2ICkuZztcblx0I2VuZGlmXG5cdHZlYzMgcG9zID0gdldvcmxkUG9zaXRpb24ueHl6IC8gdldvcmxkUG9zaXRpb24udztcblx0dmVjMyB2ID0gbm9ybWFsaXplKCBjYW1lcmFQb3NpdGlvbiAtIHBvcyApO1xuXHR2ZWMzIG4gPSBpbnZlcnNlVHJhbnNmb3JtRGlyZWN0aW9uKCBub3JtYWwsIHZpZXdNYXRyaXggKTtcblx0ZmxvYXQgaW9yID0gKCAxLjAgKyAwLjQgKiByZWZsZWN0aXZpdHkgKSAvICggMS4wIC0gMC40ICogcmVmbGVjdGl2aXR5ICk7XG5cdHZlYzMgdHJhbnNtaXNzaW9uID0gdHJhbnNtaXNzaW9uRmFjdG9yICogZ2V0SUJMVm9sdW1lUmVmcmFjdGlvbihcblx0XHRuLCB2LCByb3VnaG5lc3NGYWN0b3IsIG1hdGVyaWFsLmRpZmZ1c2VDb2xvciwgbWF0ZXJpYWwuc3BlY3VsYXJDb2xvcixcblx0XHRwb3MsIG1vZGVsTWF0cml4LCB2aWV3TWF0cml4LCBwcm9qZWN0aW9uTWF0cml4LCBpb3IsIHRoaWNrbmVzc0ZhY3Rvcixcblx0XHRhdHRlbnVhdGlvblRpbnQsIGF0dGVudWF0aW9uRGlzdGFuY2UgKTtcblx0dG90YWxEaWZmdXNlID0gbWl4KCB0b3RhbERpZmZ1c2UsIHRyYW5zbWlzc2lvbiwgdHJhbnNtaXNzaW9uRmFjdG9yICk7XG4jZW5kaWYiLHRyYW5zbWlzc2lvbl9wYXJzX2ZyYWdtZW50OiIjaWZkZWYgVVNFX1RSQU5TTUlTU0lPTlxuXHQjaWZkZWYgVVNFX1RSQU5TTUlTU0lPTk1BUFxuXHRcdHVuaWZvcm0gc2FtcGxlcjJEIHRyYW5zbWlzc2lvbk1hcDtcblx0I2VuZGlmXG5cdCNpZmRlZiBVU0VfVEhJQ0tORVNTTUFQXG5cdFx0dW5pZm9ybSBzYW1wbGVyMkQgdGhpY2tuZXNzTWFwO1xuXHQjZW5kaWZcblx0dW5pZm9ybSB2ZWMyIHRyYW5zbWlzc2lvblNhbXBsZXJTaXplO1xuXHR1bmlmb3JtIHNhbXBsZXIyRCB0cmFuc21pc3Npb25TYW1wbGVyTWFwO1xuXHR1bmlmb3JtIG1hdDQgbW9kZWxNYXRyaXg7XG5cdHVuaWZvcm0gbWF0NCBwcm9qZWN0aW9uTWF0cml4O1xuXHR2YXJ5aW5nIHZlYzQgdldvcmxkUG9zaXRpb247XG5cdHZlYzMgZ2V0Vm9sdW1lVHJhbnNtaXNzaW9uUmF5KHZlYzMgbiwgdmVjMyB2LCBmbG9hdCB0aGlja25lc3MsIGZsb2F0IGlvciwgbWF0NCBtb2RlbE1hdHJpeCkge1xuXHRcdHZlYzMgcmVmcmFjdGlvblZlY3RvciA9IHJlZnJhY3QoLXYsIG5vcm1hbGl6ZShuKSwgMS4wIC8gaW9yKTtcblx0XHR2ZWMzIG1vZGVsU2NhbGU7XG5cdFx0bW9kZWxTY2FsZS54ID0gbGVuZ3RoKHZlYzMobW9kZWxNYXRyaXhbMF0ueHl6KSk7XG5cdFx0bW9kZWxTY2FsZS55ID0gbGVuZ3RoKHZlYzMobW9kZWxNYXRyaXhbMV0ueHl6KSk7XG5cdFx0bW9kZWxTY2FsZS56ID0gbGVuZ3RoKHZlYzMobW9kZWxNYXRyaXhbMl0ueHl6KSk7XG5cdFx0cmV0dXJuIG5vcm1hbGl6ZShyZWZyYWN0aW9uVmVjdG9yKSAqIHRoaWNrbmVzcyAqIG1vZGVsU2NhbGU7XG5cdH1cblx0ZmxvYXQgYXBwbHlJb3JUb1JvdWdobmVzcyhmbG9hdCByb3VnaG5lc3MsIGZsb2F0IGlvcikge1xuXHRcdHJldHVybiByb3VnaG5lc3MgKiBjbGFtcChpb3IgKiAyLjAgLSAyLjAsIDAuMCwgMS4wKTtcblx0fVxuXHR2ZWMzIGdldFRyYW5zbWlzc2lvblNhbXBsZSh2ZWMyIGZyYWdDb29yZCwgZmxvYXQgcm91Z2huZXNzLCBmbG9hdCBpb3IpIHtcblx0XHRmbG9hdCBmcmFtZWJ1ZmZlckxvZCA9IGxvZzIodHJhbnNtaXNzaW9uU2FtcGxlclNpemUueCkgKiBhcHBseUlvclRvUm91Z2huZXNzKHJvdWdobmVzcywgaW9yKTtcblx0XHRyZXR1cm4gdGV4dHVyZTJETG9kRVhUKHRyYW5zbWlzc2lvblNhbXBsZXJNYXAsIGZyYWdDb29yZC54eSwgZnJhbWVidWZmZXJMb2QpLnJnYjtcblx0fVxuXHR2ZWMzIGFwcGx5Vm9sdW1lQXR0ZW51YXRpb24odmVjMyByYWRpYW5jZSwgZmxvYXQgdHJhbnNtaXNzaW9uRGlzdGFuY2UsIHZlYzMgYXR0ZW51YXRpb25Db2xvciwgZmxvYXQgYXR0ZW51YXRpb25EaXN0YW5jZSkge1xuXHRcdGlmIChhdHRlbnVhdGlvbkRpc3RhbmNlID09IDAuMCkge1xuXHRcdFx0cmV0dXJuIHJhZGlhbmNlO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR2ZWMzIGF0dGVudWF0aW9uQ29lZmZpY2llbnQgPSAtbG9nKGF0dGVudWF0aW9uQ29sb3IpIC8gYXR0ZW51YXRpb25EaXN0YW5jZTtcblx0XHRcdHZlYzMgdHJhbnNtaXR0YW5jZSA9IGV4cCgtYXR0ZW51YXRpb25Db2VmZmljaWVudCAqIHRyYW5zbWlzc2lvbkRpc3RhbmNlKTtcdFx0XHRyZXR1cm4gdHJhbnNtaXR0YW5jZSAqIHJhZGlhbmNlO1xuXHRcdH1cblx0fVxuXHR2ZWMzIGdldElCTFZvbHVtZVJlZnJhY3Rpb24odmVjMyBuLCB2ZWMzIHYsIGZsb2F0IHBlcmNlcHR1YWxSb3VnaG5lc3MsIHZlYzMgYmFzZUNvbG9yLCB2ZWMzIHNwZWN1bGFyQ29sb3IsXG5cdFx0dmVjMyBwb3NpdGlvbiwgbWF0NCBtb2RlbE1hdHJpeCwgbWF0NCB2aWV3TWF0cml4LCBtYXQ0IHByb2pNYXRyaXgsIGZsb2F0IGlvciwgZmxvYXQgdGhpY2tuZXNzLFxuXHRcdHZlYzMgYXR0ZW51YXRpb25Db2xvciwgZmxvYXQgYXR0ZW51YXRpb25EaXN0YW5jZSkge1xuXHRcdHZlYzMgdHJhbnNtaXNzaW9uUmF5ID0gZ2V0Vm9sdW1lVHJhbnNtaXNzaW9uUmF5KG4sIHYsIHRoaWNrbmVzcywgaW9yLCBtb2RlbE1hdHJpeCk7XG5cdFx0dmVjMyByZWZyYWN0ZWRSYXlFeGl0ID0gcG9zaXRpb24gKyB0cmFuc21pc3Npb25SYXk7XG5cdFx0dmVjNCBuZGNQb3MgPSBwcm9qTWF0cml4ICogdmlld01hdHJpeCAqIHZlYzQocmVmcmFjdGVkUmF5RXhpdCwgMS4wKTtcblx0XHR2ZWMyIHJlZnJhY3Rpb25Db29yZHMgPSBuZGNQb3MueHkgLyBuZGNQb3Mudztcblx0XHRyZWZyYWN0aW9uQ29vcmRzICs9IDEuMDtcblx0XHRyZWZyYWN0aW9uQ29vcmRzIC89IDIuMDtcblx0XHR2ZWMzIHRyYW5zbWl0dGVkTGlnaHQgPSBnZXRUcmFuc21pc3Npb25TYW1wbGUocmVmcmFjdGlvbkNvb3JkcywgcGVyY2VwdHVhbFJvdWdobmVzcywgaW9yKTtcblx0XHR2ZWMzIGF0dGVudWF0ZWRDb2xvciA9IGFwcGx5Vm9sdW1lQXR0ZW51YXRpb24odHJhbnNtaXR0ZWRMaWdodCwgbGVuZ3RoKHRyYW5zbWlzc2lvblJheSksIGF0dGVudWF0aW9uQ29sb3IsIGF0dGVudWF0aW9uRGlzdGFuY2UpO1xuXHRcdHJldHVybiAoMS4wIC0gc3BlY3VsYXJDb2xvcikgKiBhdHRlbnVhdGVkQ29sb3IgKiBiYXNlQ29sb3I7XG5cdH1cbiNlbmRpZiIsdXZfcGFyc19mcmFnbWVudDoiI2lmICggZGVmaW5lZCggVVNFX1VWICkgJiYgISBkZWZpbmVkKCBVVlNfVkVSVEVYX09OTFkgKSApXG5cdHZhcnlpbmcgdmVjMiB2VXY7XG4jZW5kaWYiLHV2X3BhcnNfdmVydGV4OiIjaWZkZWYgVVNFX1VWXG5cdCNpZmRlZiBVVlNfVkVSVEVYX09OTFlcblx0XHR2ZWMyIHZVdjtcblx0I2Vsc2Vcblx0XHR2YXJ5aW5nIHZlYzIgdlV2O1xuXHQjZW5kaWZcblx0dW5pZm9ybSBtYXQzIHV2VHJhbnNmb3JtO1xuI2VuZGlmIix1dl92ZXJ0ZXg6IiNpZmRlZiBVU0VfVVZcblx0dlV2ID0gKCB1dlRyYW5zZm9ybSAqIHZlYzMoIHV2LCAxICkgKS54eTtcbiNlbmRpZiIsdXYyX3BhcnNfZnJhZ21lbnQ6IiNpZiBkZWZpbmVkKCBVU0VfTElHSFRNQVAgKSB8fCBkZWZpbmVkKCBVU0VfQU9NQVAgKVxuXHR2YXJ5aW5nIHZlYzIgdlV2MjtcbiNlbmRpZiIsdXYyX3BhcnNfdmVydGV4OiIjaWYgZGVmaW5lZCggVVNFX0xJR0hUTUFQICkgfHwgZGVmaW5lZCggVVNFX0FPTUFQIClcblx0YXR0cmlidXRlIHZlYzIgdXYyO1xuXHR2YXJ5aW5nIHZlYzIgdlV2Mjtcblx0dW5pZm9ybSBtYXQzIHV2MlRyYW5zZm9ybTtcbiNlbmRpZiIsdXYyX3ZlcnRleDoiI2lmIGRlZmluZWQoIFVTRV9MSUdIVE1BUCApIHx8IGRlZmluZWQoIFVTRV9BT01BUCApXG5cdHZVdjIgPSAoIHV2MlRyYW5zZm9ybSAqIHZlYzMoIHV2MiwgMSApICkueHk7XG4jZW5kaWYiLHdvcmxkcG9zX3ZlcnRleDoiI2lmIGRlZmluZWQoIFVTRV9FTlZNQVAgKSB8fCBkZWZpbmVkKCBESVNUQU5DRSApIHx8IGRlZmluZWQgKCBVU0VfU0hBRE9XTUFQICkgfHwgZGVmaW5lZCAoIFVTRV9UUkFOU01JU1NJT04gKVxuXHR2ZWM0IHdvcmxkUG9zaXRpb24gPSB2ZWM0KCB0cmFuc2Zvcm1lZCwgMS4wICk7XG5cdCNpZmRlZiBVU0VfSU5TVEFOQ0lOR1xuXHRcdHdvcmxkUG9zaXRpb24gPSBpbnN0YW5jZU1hdHJpeCAqIHdvcmxkUG9zaXRpb247XG5cdCNlbmRpZlxuXHR3b3JsZFBvc2l0aW9uID0gbW9kZWxNYXRyaXggKiB3b3JsZFBvc2l0aW9uO1xuI2VuZGlmIixiYWNrZ3JvdW5kX2ZyYWc6InVuaWZvcm0gc2FtcGxlcjJEIHQyRDtcbnZhcnlpbmcgdmVjMiB2VXY7XG52b2lkIG1haW4oKSB7XG5cdHZlYzQgdGV4Q29sb3IgPSB0ZXh0dXJlMkQoIHQyRCwgdlV2ICk7XG5cdGdsX0ZyYWdDb2xvciA9IG1hcFRleGVsVG9MaW5lYXIoIHRleENvbG9yICk7XG5cdCNpbmNsdWRlIDx0b25lbWFwcGluZ19mcmFnbWVudD5cblx0I2luY2x1ZGUgPGVuY29kaW5nc19mcmFnbWVudD5cbn0iLGJhY2tncm91bmRfdmVydDoidmFyeWluZyB2ZWMyIHZVdjtcbnVuaWZvcm0gbWF0MyB1dlRyYW5zZm9ybTtcbnZvaWQgbWFpbigpIHtcblx0dlV2ID0gKCB1dlRyYW5zZm9ybSAqIHZlYzMoIHV2LCAxICkgKS54eTtcblx0Z2xfUG9zaXRpb24gPSB2ZWM0KCBwb3NpdGlvbi54eSwgMS4wLCAxLjAgKTtcbn0iLGN1YmVfZnJhZzoiI2luY2x1ZGUgPGVudm1hcF9jb21tb25fcGFyc19mcmFnbWVudD5cbnVuaWZvcm0gZmxvYXQgb3BhY2l0eTtcbnZhcnlpbmcgdmVjMyB2V29ybGREaXJlY3Rpb247XG4jaW5jbHVkZSA8Y3ViZV91dl9yZWZsZWN0aW9uX2ZyYWdtZW50Plxudm9pZCBtYWluKCkge1xuXHR2ZWMzIHZSZWZsZWN0ID0gdldvcmxkRGlyZWN0aW9uO1xuXHQjaW5jbHVkZSA8ZW52bWFwX2ZyYWdtZW50PlxuXHRnbF9GcmFnQ29sb3IgPSBlbnZDb2xvcjtcblx0Z2xfRnJhZ0NvbG9yLmEgKj0gb3BhY2l0eTtcblx0I2luY2x1ZGUgPHRvbmVtYXBwaW5nX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8ZW5jb2RpbmdzX2ZyYWdtZW50PlxufSIsY3ViZV92ZXJ0OiJ2YXJ5aW5nIHZlYzMgdldvcmxkRGlyZWN0aW9uO1xuI2luY2x1ZGUgPGNvbW1vbj5cbnZvaWQgbWFpbigpIHtcblx0dldvcmxkRGlyZWN0aW9uID0gdHJhbnNmb3JtRGlyZWN0aW9uKCBwb3NpdGlvbiwgbW9kZWxNYXRyaXggKTtcblx0I2luY2x1ZGUgPGJlZ2luX3ZlcnRleD5cblx0I2luY2x1ZGUgPHByb2plY3RfdmVydGV4PlxuXHRnbF9Qb3NpdGlvbi56ID0gZ2xfUG9zaXRpb24udztcbn0iLGRlcHRoX2ZyYWc6IiNpZiBERVBUSF9QQUNLSU5HID09IDMyMDBcblx0dW5pZm9ybSBmbG9hdCBvcGFjaXR5O1xuI2VuZGlmXG4jaW5jbHVkZSA8Y29tbW9uPlxuI2luY2x1ZGUgPHBhY2tpbmc+XG4jaW5jbHVkZSA8dXZfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxhbHBoYW1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3BhcnNfZnJhZ21lbnQ+XG52YXJ5aW5nIHZlYzIgdkhpZ2hQcmVjaXNpb25aVztcbnZvaWQgbWFpbigpIHtcblx0I2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19mcmFnbWVudD5cblx0dmVjNCBkaWZmdXNlQ29sb3IgPSB2ZWM0KCAxLjAgKTtcblx0I2lmIERFUFRIX1BBQ0tJTkcgPT0gMzIwMFxuXHRcdGRpZmZ1c2VDb2xvci5hID0gb3BhY2l0eTtcblx0I2VuZGlmXG5cdCNpbmNsdWRlIDxtYXBfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxhbHBoYW1hcF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGFscGhhdGVzdF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGxvZ2RlcHRoYnVmX2ZyYWdtZW50PlxuXHRmbG9hdCBmcmFnQ29vcmRaID0gMC41ICogdkhpZ2hQcmVjaXNpb25aV1swXSAvIHZIaWdoUHJlY2lzaW9uWldbMV0gKyAwLjU7XG5cdCNpZiBERVBUSF9QQUNLSU5HID09IDMyMDBcblx0XHRnbF9GcmFnQ29sb3IgPSB2ZWM0KCB2ZWMzKCAxLjAgLSBmcmFnQ29vcmRaICksIG9wYWNpdHkgKTtcblx0I2VsaWYgREVQVEhfUEFDS0lORyA9PSAzMjAxXG5cdFx0Z2xfRnJhZ0NvbG9yID0gcGFja0RlcHRoVG9SR0JBKCBmcmFnQ29vcmRaICk7XG5cdCNlbmRpZlxufSIsZGVwdGhfdmVydDoiI2luY2x1ZGUgPGNvbW1vbj5cbiNpbmNsdWRlIDx1dl9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxkaXNwbGFjZW1lbnRtYXBfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8bW9ycGh0YXJnZXRfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8c2tpbm5pbmdfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8bG9nZGVwdGhidWZfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3BhcnNfdmVydGV4PlxudmFyeWluZyB2ZWMyIHZIaWdoUHJlY2lzaW9uWlc7XG52b2lkIG1haW4oKSB7XG5cdCNpbmNsdWRlIDx1dl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxza2luYmFzZV92ZXJ0ZXg+XG5cdCNpZmRlZiBVU0VfRElTUExBQ0VNRU5UTUFQXG5cdFx0I2luY2x1ZGUgPGJlZ2lubm9ybWFsX3ZlcnRleD5cblx0XHQjaW5jbHVkZSA8bW9ycGhub3JtYWxfdmVydGV4PlxuXHRcdCNpbmNsdWRlIDxza2lubm9ybWFsX3ZlcnRleD5cblx0I2VuZGlmXG5cdCNpbmNsdWRlIDxiZWdpbl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxtb3JwaHRhcmdldF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxza2lubmluZ192ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxkaXNwbGFjZW1lbnRtYXBfdmVydGV4PlxuXHQjaW5jbHVkZSA8cHJvamVjdF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfdmVydGV4PlxuXHR2SGlnaFByZWNpc2lvblpXID0gZ2xfUG9zaXRpb24uenc7XG59IixkaXN0YW5jZVJHQkFfZnJhZzoiI2RlZmluZSBESVNUQU5DRVxudW5pZm9ybSB2ZWMzIHJlZmVyZW5jZVBvc2l0aW9uO1xudW5pZm9ybSBmbG9hdCBuZWFyRGlzdGFuY2U7XG51bmlmb3JtIGZsb2F0IGZhckRpc3RhbmNlO1xudmFyeWluZyB2ZWMzIHZXb3JsZFBvc2l0aW9uO1xuI2luY2x1ZGUgPGNvbW1vbj5cbiNpbmNsdWRlIDxwYWNraW5nPlxuI2luY2x1ZGUgPHV2X3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8bWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8YWxwaGFtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfcGFyc19mcmFnbWVudD5cbnZvaWQgbWFpbiAoKSB7XG5cdCNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfZnJhZ21lbnQ+XG5cdHZlYzQgZGlmZnVzZUNvbG9yID0gdmVjNCggMS4wICk7XG5cdCNpbmNsdWRlIDxtYXBfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxhbHBoYW1hcF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGFscGhhdGVzdF9mcmFnbWVudD5cblx0ZmxvYXQgZGlzdCA9IGxlbmd0aCggdldvcmxkUG9zaXRpb24gLSByZWZlcmVuY2VQb3NpdGlvbiApO1xuXHRkaXN0ID0gKCBkaXN0IC0gbmVhckRpc3RhbmNlICkgLyAoIGZhckRpc3RhbmNlIC0gbmVhckRpc3RhbmNlICk7XG5cdGRpc3QgPSBzYXR1cmF0ZSggZGlzdCApO1xuXHRnbF9GcmFnQ29sb3IgPSBwYWNrRGVwdGhUb1JHQkEoIGRpc3QgKTtcbn0iLGRpc3RhbmNlUkdCQV92ZXJ0OiIjZGVmaW5lIERJU1RBTkNFXG52YXJ5aW5nIHZlYzMgdldvcmxkUG9zaXRpb247XG4jaW5jbHVkZSA8Y29tbW9uPlxuI2luY2x1ZGUgPHV2X3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGRpc3BsYWNlbWVudG1hcF9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxtb3JwaHRhcmdldF9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxza2lubmluZ19wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfcGFyc192ZXJ0ZXg+XG52b2lkIG1haW4oKSB7XG5cdCNpbmNsdWRlIDx1dl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxza2luYmFzZV92ZXJ0ZXg+XG5cdCNpZmRlZiBVU0VfRElTUExBQ0VNRU5UTUFQXG5cdFx0I2luY2x1ZGUgPGJlZ2lubm9ybWFsX3ZlcnRleD5cblx0XHQjaW5jbHVkZSA8bW9ycGhub3JtYWxfdmVydGV4PlxuXHRcdCNpbmNsdWRlIDxza2lubm9ybWFsX3ZlcnRleD5cblx0I2VuZGlmXG5cdCNpbmNsdWRlIDxiZWdpbl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxtb3JwaHRhcmdldF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxza2lubmluZ192ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxkaXNwbGFjZW1lbnRtYXBfdmVydGV4PlxuXHQjaW5jbHVkZSA8cHJvamVjdF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDx3b3JsZHBvc192ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfdmVydGV4PlxuXHR2V29ybGRQb3NpdGlvbiA9IHdvcmxkUG9zaXRpb24ueHl6O1xufSIsZXF1aXJlY3RfZnJhZzoidW5pZm9ybSBzYW1wbGVyMkQgdEVxdWlyZWN0O1xudmFyeWluZyB2ZWMzIHZXb3JsZERpcmVjdGlvbjtcbiNpbmNsdWRlIDxjb21tb24+XG52b2lkIG1haW4oKSB7XG5cdHZlYzMgZGlyZWN0aW9uID0gbm9ybWFsaXplKCB2V29ybGREaXJlY3Rpb24gKTtcblx0dmVjMiBzYW1wbGVVViA9IGVxdWlyZWN0VXYoIGRpcmVjdGlvbiApO1xuXHR2ZWM0IHRleENvbG9yID0gdGV4dHVyZTJEKCB0RXF1aXJlY3QsIHNhbXBsZVVWICk7XG5cdGdsX0ZyYWdDb2xvciA9IG1hcFRleGVsVG9MaW5lYXIoIHRleENvbG9yICk7XG5cdCNpbmNsdWRlIDx0b25lbWFwcGluZ19mcmFnbWVudD5cblx0I2luY2x1ZGUgPGVuY29kaW5nc19mcmFnbWVudD5cbn0iLGVxdWlyZWN0X3ZlcnQ6InZhcnlpbmcgdmVjMyB2V29ybGREaXJlY3Rpb247XG4jaW5jbHVkZSA8Y29tbW9uPlxudm9pZCBtYWluKCkge1xuXHR2V29ybGREaXJlY3Rpb24gPSB0cmFuc2Zvcm1EaXJlY3Rpb24oIHBvc2l0aW9uLCBtb2RlbE1hdHJpeCApO1xuXHQjaW5jbHVkZSA8YmVnaW5fdmVydGV4PlxuXHQjaW5jbHVkZSA8cHJvamVjdF92ZXJ0ZXg+XG59IixsaW5lZGFzaGVkX2ZyYWc6InVuaWZvcm0gdmVjMyBkaWZmdXNlO1xudW5pZm9ybSBmbG9hdCBvcGFjaXR5O1xudW5pZm9ybSBmbG9hdCBkYXNoU2l6ZTtcbnVuaWZvcm0gZmxvYXQgdG90YWxTaXplO1xudmFyeWluZyBmbG9hdCB2TGluZURpc3RhbmNlO1xuI2luY2x1ZGUgPGNvbW1vbj5cbiNpbmNsdWRlIDxjb2xvcl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGZvZ19wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3BhcnNfZnJhZ21lbnQ+XG52b2lkIG1haW4oKSB7XG5cdCNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfZnJhZ21lbnQ+XG5cdGlmICggbW9kKCB2TGluZURpc3RhbmNlLCB0b3RhbFNpemUgKSA+IGRhc2hTaXplICkge1xuXHRcdGRpc2NhcmQ7XG5cdH1cblx0dmVjMyBvdXRnb2luZ0xpZ2h0ID0gdmVjMyggMC4wICk7XG5cdHZlYzQgZGlmZnVzZUNvbG9yID0gdmVjNCggZGlmZnVzZSwgb3BhY2l0eSApO1xuXHQjaW5jbHVkZSA8bG9nZGVwdGhidWZfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxjb2xvcl9mcmFnbWVudD5cblx0b3V0Z29pbmdMaWdodCA9IGRpZmZ1c2VDb2xvci5yZ2I7XG5cdGdsX0ZyYWdDb2xvciA9IHZlYzQoIG91dGdvaW5nTGlnaHQsIGRpZmZ1c2VDb2xvci5hICk7XG5cdCNpbmNsdWRlIDx0b25lbWFwcGluZ19mcmFnbWVudD5cblx0I2luY2x1ZGUgPGVuY29kaW5nc19mcmFnbWVudD5cblx0I2luY2x1ZGUgPGZvZ19mcmFnbWVudD5cblx0I2luY2x1ZGUgPHByZW11bHRpcGxpZWRfYWxwaGFfZnJhZ21lbnQ+XG59IixsaW5lZGFzaGVkX3ZlcnQ6InVuaWZvcm0gZmxvYXQgc2NhbGU7XG5hdHRyaWJ1dGUgZmxvYXQgbGluZURpc3RhbmNlO1xudmFyeWluZyBmbG9hdCB2TGluZURpc3RhbmNlO1xuI2luY2x1ZGUgPGNvbW1vbj5cbiNpbmNsdWRlIDxjb2xvcl9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxmb2dfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8bW9ycGh0YXJnZXRfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8bG9nZGVwdGhidWZfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3BhcnNfdmVydGV4Plxudm9pZCBtYWluKCkge1xuXHR2TGluZURpc3RhbmNlID0gc2NhbGUgKiBsaW5lRGlzdGFuY2U7XG5cdCNpbmNsdWRlIDxjb2xvcl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxiZWdpbl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxtb3JwaHRhcmdldF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxwcm9qZWN0X3ZlcnRleD5cblx0I2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3ZlcnRleD5cblx0I2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc192ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxmb2dfdmVydGV4PlxufSIsbWVzaGJhc2ljX2ZyYWc6InVuaWZvcm0gdmVjMyBkaWZmdXNlO1xudW5pZm9ybSBmbG9hdCBvcGFjaXR5O1xuI2lmbmRlZiBGTEFUX1NIQURFRFxuXHR2YXJ5aW5nIHZlYzMgdk5vcm1hbDtcbiNlbmRpZlxuI2luY2x1ZGUgPGNvbW1vbj5cbiNpbmNsdWRlIDxkaXRoZXJpbmdfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxjb2xvcl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPHV2X3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8dXYyX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8bWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8YWxwaGFtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxhb21hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGxpZ2h0bWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8ZW52bWFwX2NvbW1vbl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGVudm1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGN1YmVfdXZfcmVmbGVjdGlvbl9mcmFnbWVudD5cbiNpbmNsdWRlIDxmb2dfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxzcGVjdWxhcm1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3BhcnNfZnJhZ21lbnQ+XG52b2lkIG1haW4oKSB7XG5cdCNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfZnJhZ21lbnQ+XG5cdHZlYzQgZGlmZnVzZUNvbG9yID0gdmVjNCggZGlmZnVzZSwgb3BhY2l0eSApO1xuXHQjaW5jbHVkZSA8bG9nZGVwdGhidWZfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxtYXBfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxjb2xvcl9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGFscGhhbWFwX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8YWxwaGF0ZXN0X2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8c3BlY3VsYXJtYXBfZnJhZ21lbnQ+XG5cdFJlZmxlY3RlZExpZ2h0IHJlZmxlY3RlZExpZ2h0ID0gUmVmbGVjdGVkTGlnaHQoIHZlYzMoIDAuMCApLCB2ZWMzKCAwLjAgKSwgdmVjMyggMC4wICksIHZlYzMoIDAuMCApICk7XG5cdCNpZmRlZiBVU0VfTElHSFRNQVBcblx0XG5cdFx0dmVjNCBsaWdodE1hcFRleGVsPSB0ZXh0dXJlMkQoIGxpZ2h0TWFwLCB2VXYyICk7XG5cdFx0cmVmbGVjdGVkTGlnaHQuaW5kaXJlY3REaWZmdXNlICs9IGxpZ2h0TWFwVGV4ZWxUb0xpbmVhciggbGlnaHRNYXBUZXhlbCApLnJnYiAqIGxpZ2h0TWFwSW50ZW5zaXR5O1xuXHQjZWxzZVxuXHRcdHJlZmxlY3RlZExpZ2h0LmluZGlyZWN0RGlmZnVzZSArPSB2ZWMzKCAxLjAgKTtcblx0I2VuZGlmXG5cdCNpbmNsdWRlIDxhb21hcF9mcmFnbWVudD5cblx0cmVmbGVjdGVkTGlnaHQuaW5kaXJlY3REaWZmdXNlICo9IGRpZmZ1c2VDb2xvci5yZ2I7XG5cdHZlYzMgb3V0Z29pbmdMaWdodCA9IHJlZmxlY3RlZExpZ2h0LmluZGlyZWN0RGlmZnVzZTtcblx0I2luY2x1ZGUgPGVudm1hcF9mcmFnbWVudD5cblx0Z2xfRnJhZ0NvbG9yID0gdmVjNCggb3V0Z29pbmdMaWdodCwgZGlmZnVzZUNvbG9yLmEgKTtcblx0I2luY2x1ZGUgPHRvbmVtYXBwaW5nX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8ZW5jb2RpbmdzX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8Zm9nX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8cHJlbXVsdGlwbGllZF9hbHBoYV9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGRpdGhlcmluZ19mcmFnbWVudD5cbn0iLG1lc2hiYXNpY192ZXJ0OiIjaW5jbHVkZSA8Y29tbW9uPlxuI2luY2x1ZGUgPHV2X3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPHV2Ml9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxlbnZtYXBfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8Y29sb3JfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8Zm9nX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPG1vcnBodGFyZ2V0X3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPHNraW5uaW5nX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19wYXJzX3ZlcnRleD5cbnZvaWQgbWFpbigpIHtcblx0I2luY2x1ZGUgPHV2X3ZlcnRleD5cblx0I2luY2x1ZGUgPHV2Ml92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxjb2xvcl92ZXJ0ZXg+XG5cdCNpZiBkZWZpbmVkICggVVNFX0VOVk1BUCApIHx8IGRlZmluZWQgKCBVU0VfU0tJTk5JTkcgKVxuXHRcdCNpbmNsdWRlIDxiZWdpbm5vcm1hbF92ZXJ0ZXg+XG5cdFx0I2luY2x1ZGUgPG1vcnBobm9ybWFsX3ZlcnRleD5cblx0XHQjaW5jbHVkZSA8c2tpbmJhc2VfdmVydGV4PlxuXHRcdCNpbmNsdWRlIDxza2lubm9ybWFsX3ZlcnRleD5cblx0XHQjaW5jbHVkZSA8ZGVmYXVsdG5vcm1hbF92ZXJ0ZXg+XG5cdCNlbmRpZlxuXHQjaW5jbHVkZSA8YmVnaW5fdmVydGV4PlxuXHQjaW5jbHVkZSA8bW9ycGh0YXJnZXRfdmVydGV4PlxuXHQjaW5jbHVkZSA8c2tpbm5pbmdfdmVydGV4PlxuXHQjaW5jbHVkZSA8cHJvamVjdF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfdmVydGV4PlxuXHQjaW5jbHVkZSA8d29ybGRwb3NfdmVydGV4PlxuXHQjaW5jbHVkZSA8ZW52bWFwX3ZlcnRleD5cblx0I2luY2x1ZGUgPGZvZ192ZXJ0ZXg+XG59IixtZXNobGFtYmVydF9mcmFnOiJ1bmlmb3JtIHZlYzMgZGlmZnVzZTtcbnVuaWZvcm0gdmVjMyBlbWlzc2l2ZTtcbnVuaWZvcm0gZmxvYXQgb3BhY2l0eTtcbnZhcnlpbmcgdmVjMyB2TGlnaHRGcm9udDtcbnZhcnlpbmcgdmVjMyB2SW5kaXJlY3RGcm9udDtcbiNpZmRlZiBET1VCTEVfU0lERURcblx0dmFyeWluZyB2ZWMzIHZMaWdodEJhY2s7XG5cdHZhcnlpbmcgdmVjMyB2SW5kaXJlY3RCYWNrO1xuI2VuZGlmXG4jaW5jbHVkZSA8Y29tbW9uPlxuI2luY2x1ZGUgPHBhY2tpbmc+XG4jaW5jbHVkZSA8ZGl0aGVyaW5nX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8Y29sb3JfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDx1dl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPHV2Ml9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPG1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGFscGhhbWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8YW9tYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxsaWdodG1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGVtaXNzaXZlbWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8ZW52bWFwX2NvbW1vbl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGVudm1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGN1YmVfdXZfcmVmbGVjdGlvbl9mcmFnbWVudD5cbiNpbmNsdWRlIDxic2Rmcz5cbiNpbmNsdWRlIDxsaWdodHNfcGFyc19iZWdpbj5cbiNpbmNsdWRlIDxmb2dfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxzaGFkb3dtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxzaGFkb3dtYXNrX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8c3BlY3VsYXJtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19wYXJzX2ZyYWdtZW50Plxudm9pZCBtYWluKCkge1xuXHQjaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX2ZyYWdtZW50PlxuXHR2ZWM0IGRpZmZ1c2VDb2xvciA9IHZlYzQoIGRpZmZ1c2UsIG9wYWNpdHkgKTtcblx0UmVmbGVjdGVkTGlnaHQgcmVmbGVjdGVkTGlnaHQgPSBSZWZsZWN0ZWRMaWdodCggdmVjMyggMC4wICksIHZlYzMoIDAuMCApLCB2ZWMzKCAwLjAgKSwgdmVjMyggMC4wICkgKTtcblx0dmVjMyB0b3RhbEVtaXNzaXZlUmFkaWFuY2UgPSBlbWlzc2l2ZTtcblx0I2luY2x1ZGUgPGxvZ2RlcHRoYnVmX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8bWFwX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8Y29sb3JfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxhbHBoYW1hcF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGFscGhhdGVzdF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPHNwZWN1bGFybWFwX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8ZW1pc3NpdmVtYXBfZnJhZ21lbnQ+XG5cdCNpZmRlZiBET1VCTEVfU0lERURcblx0XHRyZWZsZWN0ZWRMaWdodC5pbmRpcmVjdERpZmZ1c2UgKz0gKCBnbF9Gcm9udEZhY2luZyApID8gdkluZGlyZWN0RnJvbnQgOiB2SW5kaXJlY3RCYWNrO1xuXHQjZWxzZVxuXHRcdHJlZmxlY3RlZExpZ2h0LmluZGlyZWN0RGlmZnVzZSArPSB2SW5kaXJlY3RGcm9udDtcblx0I2VuZGlmXG5cdCNpbmNsdWRlIDxsaWdodG1hcF9mcmFnbWVudD5cblx0cmVmbGVjdGVkTGlnaHQuaW5kaXJlY3REaWZmdXNlICo9IEJSREZfRGlmZnVzZV9MYW1iZXJ0KCBkaWZmdXNlQ29sb3IucmdiICk7XG5cdCNpZmRlZiBET1VCTEVfU0lERURcblx0XHRyZWZsZWN0ZWRMaWdodC5kaXJlY3REaWZmdXNlID0gKCBnbF9Gcm9udEZhY2luZyApID8gdkxpZ2h0RnJvbnQgOiB2TGlnaHRCYWNrO1xuXHQjZWxzZVxuXHRcdHJlZmxlY3RlZExpZ2h0LmRpcmVjdERpZmZ1c2UgPSB2TGlnaHRGcm9udDtcblx0I2VuZGlmXG5cdHJlZmxlY3RlZExpZ2h0LmRpcmVjdERpZmZ1c2UgKj0gQlJERl9EaWZmdXNlX0xhbWJlcnQoIGRpZmZ1c2VDb2xvci5yZ2IgKSAqIGdldFNoYWRvd01hc2soKTtcblx0I2luY2x1ZGUgPGFvbWFwX2ZyYWdtZW50PlxuXHR2ZWMzIG91dGdvaW5nTGlnaHQgPSByZWZsZWN0ZWRMaWdodC5kaXJlY3REaWZmdXNlICsgcmVmbGVjdGVkTGlnaHQuaW5kaXJlY3REaWZmdXNlICsgdG90YWxFbWlzc2l2ZVJhZGlhbmNlO1xuXHQjaW5jbHVkZSA8ZW52bWFwX2ZyYWdtZW50PlxuXHRnbF9GcmFnQ29sb3IgPSB2ZWM0KCBvdXRnb2luZ0xpZ2h0LCBkaWZmdXNlQ29sb3IuYSApO1xuXHQjaW5jbHVkZSA8dG9uZW1hcHBpbmdfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxlbmNvZGluZ3NfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxmb2dfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxwcmVtdWx0aXBsaWVkX2FscGhhX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8ZGl0aGVyaW5nX2ZyYWdtZW50PlxufSIsbWVzaGxhbWJlcnRfdmVydDoiI2RlZmluZSBMQU1CRVJUXG52YXJ5aW5nIHZlYzMgdkxpZ2h0RnJvbnQ7XG52YXJ5aW5nIHZlYzMgdkluZGlyZWN0RnJvbnQ7XG4jaWZkZWYgRE9VQkxFX1NJREVEXG5cdHZhcnlpbmcgdmVjMyB2TGlnaHRCYWNrO1xuXHR2YXJ5aW5nIHZlYzMgdkluZGlyZWN0QmFjaztcbiNlbmRpZlxuI2luY2x1ZGUgPGNvbW1vbj5cbiNpbmNsdWRlIDx1dl9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDx1djJfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8ZW52bWFwX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGJzZGZzPlxuI2luY2x1ZGUgPGxpZ2h0c19wYXJzX2JlZ2luPlxuI2luY2x1ZGUgPGNvbG9yX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGZvZ19wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxtb3JwaHRhcmdldF9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxza2lubmluZ19wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxzaGFkb3dtYXBfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8bG9nZGVwdGhidWZfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3BhcnNfdmVydGV4Plxudm9pZCBtYWluKCkge1xuXHQjaW5jbHVkZSA8dXZfdmVydGV4PlxuXHQjaW5jbHVkZSA8dXYyX3ZlcnRleD5cblx0I2luY2x1ZGUgPGNvbG9yX3ZlcnRleD5cblx0I2luY2x1ZGUgPGJlZ2lubm9ybWFsX3ZlcnRleD5cblx0I2luY2x1ZGUgPG1vcnBobm9ybWFsX3ZlcnRleD5cblx0I2luY2x1ZGUgPHNraW5iYXNlX3ZlcnRleD5cblx0I2luY2x1ZGUgPHNraW5ub3JtYWxfdmVydGV4PlxuXHQjaW5jbHVkZSA8ZGVmYXVsdG5vcm1hbF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxiZWdpbl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxtb3JwaHRhcmdldF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxza2lubmluZ192ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxwcm9qZWN0X3ZlcnRleD5cblx0I2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3ZlcnRleD5cblx0I2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc192ZXJ0ZXg+XG5cdCNpbmNsdWRlIDx3b3JsZHBvc192ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxlbnZtYXBfdmVydGV4PlxuXHQjaW5jbHVkZSA8bGlnaHRzX2xhbWJlcnRfdmVydGV4PlxuXHQjaW5jbHVkZSA8c2hhZG93bWFwX3ZlcnRleD5cblx0I2luY2x1ZGUgPGZvZ192ZXJ0ZXg+XG59IixtZXNobWF0Y2FwX2ZyYWc6IiNkZWZpbmUgTUFUQ0FQXG51bmlmb3JtIHZlYzMgZGlmZnVzZTtcbnVuaWZvcm0gZmxvYXQgb3BhY2l0eTtcbnVuaWZvcm0gc2FtcGxlcjJEIG1hdGNhcDtcbnZhcnlpbmcgdmVjMyB2Vmlld1Bvc2l0aW9uO1xuI2lmbmRlZiBGTEFUX1NIQURFRFxuXHR2YXJ5aW5nIHZlYzMgdk5vcm1hbDtcblx0I2lmZGVmIFVTRV9UQU5HRU5UXG5cdFx0dmFyeWluZyB2ZWMzIHZUYW5nZW50O1xuXHRcdHZhcnlpbmcgdmVjMyB2Qml0YW5nZW50O1xuXHQjZW5kaWZcbiNlbmRpZlxuI2luY2x1ZGUgPGNvbW1vbj5cbiNpbmNsdWRlIDxkaXRoZXJpbmdfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxjb2xvcl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPHV2X3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8bWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8YWxwaGFtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxmb2dfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxidW1wbWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8bm9ybWFsbWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8bG9nZGVwdGhidWZfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfcGFyc19mcmFnbWVudD5cbnZvaWQgbWFpbigpIHtcblx0I2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19mcmFnbWVudD5cblx0dmVjNCBkaWZmdXNlQ29sb3IgPSB2ZWM0KCBkaWZmdXNlLCBvcGFjaXR5ICk7XG5cdCNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9mcmFnbWVudD5cblx0I2luY2x1ZGUgPG1hcF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGNvbG9yX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8YWxwaGFtYXBfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxhbHBoYXRlc3RfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxub3JtYWxfZnJhZ21lbnRfYmVnaW4+XG5cdCNpbmNsdWRlIDxub3JtYWxfZnJhZ21lbnRfbWFwcz5cblx0dmVjMyB2aWV3RGlyID0gbm9ybWFsaXplKCB2Vmlld1Bvc2l0aW9uICk7XG5cdHZlYzMgeCA9IG5vcm1hbGl6ZSggdmVjMyggdmlld0Rpci56LCAwLjAsIC0gdmlld0Rpci54ICkgKTtcblx0dmVjMyB5ID0gY3Jvc3MoIHZpZXdEaXIsIHggKTtcblx0dmVjMiB1diA9IHZlYzIoIGRvdCggeCwgbm9ybWFsICksIGRvdCggeSwgbm9ybWFsICkgKSAqIDAuNDk1ICsgMC41O1xuXHQjaWZkZWYgVVNFX01BVENBUFxuXHRcdHZlYzQgbWF0Y2FwQ29sb3IgPSB0ZXh0dXJlMkQoIG1hdGNhcCwgdXYgKTtcblx0XHRtYXRjYXBDb2xvciA9IG1hdGNhcFRleGVsVG9MaW5lYXIoIG1hdGNhcENvbG9yICk7XG5cdCNlbHNlXG5cdFx0dmVjNCBtYXRjYXBDb2xvciA9IHZlYzQoIDEuMCApO1xuXHQjZW5kaWZcblx0dmVjMyBvdXRnb2luZ0xpZ2h0ID0gZGlmZnVzZUNvbG9yLnJnYiAqIG1hdGNhcENvbG9yLnJnYjtcblx0Z2xfRnJhZ0NvbG9yID0gdmVjNCggb3V0Z29pbmdMaWdodCwgZGlmZnVzZUNvbG9yLmEgKTtcblx0I2luY2x1ZGUgPHRvbmVtYXBwaW5nX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8ZW5jb2RpbmdzX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8Zm9nX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8cHJlbXVsdGlwbGllZF9hbHBoYV9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGRpdGhlcmluZ19mcmFnbWVudD5cbn0iLG1lc2htYXRjYXBfdmVydDoiI2RlZmluZSBNQVRDQVBcbnZhcnlpbmcgdmVjMyB2Vmlld1Bvc2l0aW9uO1xuI2lmbmRlZiBGTEFUX1NIQURFRFxuXHR2YXJ5aW5nIHZlYzMgdk5vcm1hbDtcblx0I2lmZGVmIFVTRV9UQU5HRU5UXG5cdFx0dmFyeWluZyB2ZWMzIHZUYW5nZW50O1xuXHRcdHZhcnlpbmcgdmVjMyB2Qml0YW5nZW50O1xuXHQjZW5kaWZcbiNlbmRpZlxuI2luY2x1ZGUgPGNvbW1vbj5cbiNpbmNsdWRlIDx1dl9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxjb2xvcl9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxkaXNwbGFjZW1lbnRtYXBfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8Zm9nX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPG1vcnBodGFyZ2V0X3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPHNraW5uaW5nX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19wYXJzX3ZlcnRleD5cbnZvaWQgbWFpbigpIHtcblx0I2luY2x1ZGUgPHV2X3ZlcnRleD5cblx0I2luY2x1ZGUgPGNvbG9yX3ZlcnRleD5cblx0I2luY2x1ZGUgPGJlZ2lubm9ybWFsX3ZlcnRleD5cblx0I2luY2x1ZGUgPG1vcnBobm9ybWFsX3ZlcnRleD5cblx0I2luY2x1ZGUgPHNraW5iYXNlX3ZlcnRleD5cblx0I2luY2x1ZGUgPHNraW5ub3JtYWxfdmVydGV4PlxuXHQjaW5jbHVkZSA8ZGVmYXVsdG5vcm1hbF92ZXJ0ZXg+XG5cdCNpZm5kZWYgRkxBVF9TSEFERURcblx0XHR2Tm9ybWFsID0gbm9ybWFsaXplKCB0cmFuc2Zvcm1lZE5vcm1hbCApO1xuXHRcdCNpZmRlZiBVU0VfVEFOR0VOVFxuXHRcdFx0dlRhbmdlbnQgPSBub3JtYWxpemUoIHRyYW5zZm9ybWVkVGFuZ2VudCApO1xuXHRcdFx0dkJpdGFuZ2VudCA9IG5vcm1hbGl6ZSggY3Jvc3MoIHZOb3JtYWwsIHZUYW5nZW50ICkgKiB0YW5nZW50LncgKTtcblx0XHQjZW5kaWZcblx0I2VuZGlmXG5cdCNpbmNsdWRlIDxiZWdpbl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxtb3JwaHRhcmdldF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxza2lubmluZ192ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxkaXNwbGFjZW1lbnRtYXBfdmVydGV4PlxuXHQjaW5jbHVkZSA8cHJvamVjdF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfdmVydGV4PlxuXHQjaW5jbHVkZSA8Zm9nX3ZlcnRleD5cblx0dlZpZXdQb3NpdGlvbiA9IC0gbXZQb3NpdGlvbi54eXo7XG59IixtZXNodG9vbl9mcmFnOiIjZGVmaW5lIFRPT05cbnVuaWZvcm0gdmVjMyBkaWZmdXNlO1xudW5pZm9ybSB2ZWMzIGVtaXNzaXZlO1xudW5pZm9ybSBmbG9hdCBvcGFjaXR5O1xuI2luY2x1ZGUgPGNvbW1vbj5cbiNpbmNsdWRlIDxwYWNraW5nPlxuI2luY2x1ZGUgPGRpdGhlcmluZ19wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGNvbG9yX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8dXZfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDx1djJfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxhbHBoYW1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGFvbWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8bGlnaHRtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxlbWlzc2l2ZW1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGdyYWRpZW50bWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8Zm9nX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8YnNkZnM+XG4jaW5jbHVkZSA8bGlnaHRzX3BhcnNfYmVnaW4+XG4jaW5jbHVkZSA8bGlnaHRzX3Rvb25fcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxzaGFkb3dtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxidW1wbWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8bm9ybWFsbWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8bG9nZGVwdGhidWZfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfcGFyc19mcmFnbWVudD5cbnZvaWQgbWFpbigpIHtcblx0I2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19mcmFnbWVudD5cblx0dmVjNCBkaWZmdXNlQ29sb3IgPSB2ZWM0KCBkaWZmdXNlLCBvcGFjaXR5ICk7XG5cdFJlZmxlY3RlZExpZ2h0IHJlZmxlY3RlZExpZ2h0ID0gUmVmbGVjdGVkTGlnaHQoIHZlYzMoIDAuMCApLCB2ZWMzKCAwLjAgKSwgdmVjMyggMC4wICksIHZlYzMoIDAuMCApICk7XG5cdHZlYzMgdG90YWxFbWlzc2l2ZVJhZGlhbmNlID0gZW1pc3NpdmU7XG5cdCNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9mcmFnbWVudD5cblx0I2luY2x1ZGUgPG1hcF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGNvbG9yX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8YWxwaGFtYXBfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxhbHBoYXRlc3RfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxub3JtYWxfZnJhZ21lbnRfYmVnaW4+XG5cdCNpbmNsdWRlIDxub3JtYWxfZnJhZ21lbnRfbWFwcz5cblx0I2luY2x1ZGUgPGVtaXNzaXZlbWFwX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8bGlnaHRzX3Rvb25fZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxsaWdodHNfZnJhZ21lbnRfYmVnaW4+XG5cdCNpbmNsdWRlIDxsaWdodHNfZnJhZ21lbnRfbWFwcz5cblx0I2luY2x1ZGUgPGxpZ2h0c19mcmFnbWVudF9lbmQ+XG5cdCNpbmNsdWRlIDxhb21hcF9mcmFnbWVudD5cblx0dmVjMyBvdXRnb2luZ0xpZ2h0ID0gcmVmbGVjdGVkTGlnaHQuZGlyZWN0RGlmZnVzZSArIHJlZmxlY3RlZExpZ2h0LmluZGlyZWN0RGlmZnVzZSArIHRvdGFsRW1pc3NpdmVSYWRpYW5jZTtcblx0Z2xfRnJhZ0NvbG9yID0gdmVjNCggb3V0Z29pbmdMaWdodCwgZGlmZnVzZUNvbG9yLmEgKTtcblx0I2luY2x1ZGUgPHRvbmVtYXBwaW5nX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8ZW5jb2RpbmdzX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8Zm9nX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8cHJlbXVsdGlwbGllZF9hbHBoYV9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGRpdGhlcmluZ19mcmFnbWVudD5cbn0iLG1lc2h0b29uX3ZlcnQ6IiNkZWZpbmUgVE9PTlxudmFyeWluZyB2ZWMzIHZWaWV3UG9zaXRpb247XG4jaWZuZGVmIEZMQVRfU0hBREVEXG5cdHZhcnlpbmcgdmVjMyB2Tm9ybWFsO1xuI2VuZGlmXG4jaW5jbHVkZSA8Y29tbW9uPlxuI2luY2x1ZGUgPHV2X3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPHV2Ml9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxkaXNwbGFjZW1lbnRtYXBfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8Y29sb3JfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8Zm9nX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPG1vcnBodGFyZ2V0X3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPHNraW5uaW5nX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPHNoYWRvd21hcF9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfcGFyc192ZXJ0ZXg+XG52b2lkIG1haW4oKSB7XG5cdCNpbmNsdWRlIDx1dl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDx1djJfdmVydGV4PlxuXHQjaW5jbHVkZSA8Y29sb3JfdmVydGV4PlxuXHQjaW5jbHVkZSA8YmVnaW5ub3JtYWxfdmVydGV4PlxuXHQjaW5jbHVkZSA8bW9ycGhub3JtYWxfdmVydGV4PlxuXHQjaW5jbHVkZSA8c2tpbmJhc2VfdmVydGV4PlxuXHQjaW5jbHVkZSA8c2tpbm5vcm1hbF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxkZWZhdWx0bm9ybWFsX3ZlcnRleD5cbiNpZm5kZWYgRkxBVF9TSEFERURcblx0dk5vcm1hbCA9IG5vcm1hbGl6ZSggdHJhbnNmb3JtZWROb3JtYWwgKTtcbiNlbmRpZlxuXHQjaW5jbHVkZSA8YmVnaW5fdmVydGV4PlxuXHQjaW5jbHVkZSA8bW9ycGh0YXJnZXRfdmVydGV4PlxuXHQjaW5jbHVkZSA8c2tpbm5pbmdfdmVydGV4PlxuXHQjaW5jbHVkZSA8ZGlzcGxhY2VtZW50bWFwX3ZlcnRleD5cblx0I2luY2x1ZGUgPHByb2plY3RfdmVydGV4PlxuXHQjaW5jbHVkZSA8bG9nZGVwdGhidWZfdmVydGV4PlxuXHQjaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3ZlcnRleD5cblx0dlZpZXdQb3NpdGlvbiA9IC0gbXZQb3NpdGlvbi54eXo7XG5cdCNpbmNsdWRlIDx3b3JsZHBvc192ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxzaGFkb3dtYXBfdmVydGV4PlxuXHQjaW5jbHVkZSA8Zm9nX3ZlcnRleD5cbn0iLG1lc2hwaG9uZ19mcmFnOiIjZGVmaW5lIFBIT05HXG51bmlmb3JtIHZlYzMgZGlmZnVzZTtcbnVuaWZvcm0gdmVjMyBlbWlzc2l2ZTtcbnVuaWZvcm0gdmVjMyBzcGVjdWxhcjtcbnVuaWZvcm0gZmxvYXQgc2hpbmluZXNzO1xudW5pZm9ybSBmbG9hdCBvcGFjaXR5O1xuI2luY2x1ZGUgPGNvbW1vbj5cbiNpbmNsdWRlIDxwYWNraW5nPlxuI2luY2x1ZGUgPGRpdGhlcmluZ19wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGNvbG9yX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8dXZfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDx1djJfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxhbHBoYW1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGFvbWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8bGlnaHRtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxlbWlzc2l2ZW1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGVudm1hcF9jb21tb25fcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxlbnZtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxjdWJlX3V2X3JlZmxlY3Rpb25fZnJhZ21lbnQ+XG4jaW5jbHVkZSA8Zm9nX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8YnNkZnM+XG4jaW5jbHVkZSA8bGlnaHRzX3BhcnNfYmVnaW4+XG4jaW5jbHVkZSA8bGlnaHRzX3Bob25nX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8c2hhZG93bWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8YnVtcG1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPG5vcm1hbG1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPHNwZWN1bGFybWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8bG9nZGVwdGhidWZfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfcGFyc19mcmFnbWVudD5cbnZvaWQgbWFpbigpIHtcblx0I2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19mcmFnbWVudD5cblx0dmVjNCBkaWZmdXNlQ29sb3IgPSB2ZWM0KCBkaWZmdXNlLCBvcGFjaXR5ICk7XG5cdFJlZmxlY3RlZExpZ2h0IHJlZmxlY3RlZExpZ2h0ID0gUmVmbGVjdGVkTGlnaHQoIHZlYzMoIDAuMCApLCB2ZWMzKCAwLjAgKSwgdmVjMyggMC4wICksIHZlYzMoIDAuMCApICk7XG5cdHZlYzMgdG90YWxFbWlzc2l2ZVJhZGlhbmNlID0gZW1pc3NpdmU7XG5cdCNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9mcmFnbWVudD5cblx0I2luY2x1ZGUgPG1hcF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGNvbG9yX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8YWxwaGFtYXBfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxhbHBoYXRlc3RfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxzcGVjdWxhcm1hcF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPG5vcm1hbF9mcmFnbWVudF9iZWdpbj5cblx0I2luY2x1ZGUgPG5vcm1hbF9mcmFnbWVudF9tYXBzPlxuXHQjaW5jbHVkZSA8ZW1pc3NpdmVtYXBfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxsaWdodHNfcGhvbmdfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxsaWdodHNfZnJhZ21lbnRfYmVnaW4+XG5cdCNpbmNsdWRlIDxsaWdodHNfZnJhZ21lbnRfbWFwcz5cblx0I2luY2x1ZGUgPGxpZ2h0c19mcmFnbWVudF9lbmQ+XG5cdCNpbmNsdWRlIDxhb21hcF9mcmFnbWVudD5cblx0dmVjMyBvdXRnb2luZ0xpZ2h0ID0gcmVmbGVjdGVkTGlnaHQuZGlyZWN0RGlmZnVzZSArIHJlZmxlY3RlZExpZ2h0LmluZGlyZWN0RGlmZnVzZSArIHJlZmxlY3RlZExpZ2h0LmRpcmVjdFNwZWN1bGFyICsgcmVmbGVjdGVkTGlnaHQuaW5kaXJlY3RTcGVjdWxhciArIHRvdGFsRW1pc3NpdmVSYWRpYW5jZTtcblx0I2luY2x1ZGUgPGVudm1hcF9mcmFnbWVudD5cblx0Z2xfRnJhZ0NvbG9yID0gdmVjNCggb3V0Z29pbmdMaWdodCwgZGlmZnVzZUNvbG9yLmEgKTtcblx0I2luY2x1ZGUgPHRvbmVtYXBwaW5nX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8ZW5jb2RpbmdzX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8Zm9nX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8cHJlbXVsdGlwbGllZF9hbHBoYV9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGRpdGhlcmluZ19mcmFnbWVudD5cbn0iLG1lc2hwaG9uZ192ZXJ0OiIjZGVmaW5lIFBIT05HXG52YXJ5aW5nIHZlYzMgdlZpZXdQb3NpdGlvbjtcbiNpZm5kZWYgRkxBVF9TSEFERURcblx0dmFyeWluZyB2ZWMzIHZOb3JtYWw7XG4jZW5kaWZcbiNpbmNsdWRlIDxjb21tb24+XG4jaW5jbHVkZSA8dXZfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8dXYyX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGRpc3BsYWNlbWVudG1hcF9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxlbnZtYXBfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8Y29sb3JfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8Zm9nX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPG1vcnBodGFyZ2V0X3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPHNraW5uaW5nX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPHNoYWRvd21hcF9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfcGFyc192ZXJ0ZXg+XG52b2lkIG1haW4oKSB7XG5cdCNpbmNsdWRlIDx1dl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDx1djJfdmVydGV4PlxuXHQjaW5jbHVkZSA8Y29sb3JfdmVydGV4PlxuXHQjaW5jbHVkZSA8YmVnaW5ub3JtYWxfdmVydGV4PlxuXHQjaW5jbHVkZSA8bW9ycGhub3JtYWxfdmVydGV4PlxuXHQjaW5jbHVkZSA8c2tpbmJhc2VfdmVydGV4PlxuXHQjaW5jbHVkZSA8c2tpbm5vcm1hbF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxkZWZhdWx0bm9ybWFsX3ZlcnRleD5cbiNpZm5kZWYgRkxBVF9TSEFERURcblx0dk5vcm1hbCA9IG5vcm1hbGl6ZSggdHJhbnNmb3JtZWROb3JtYWwgKTtcbiNlbmRpZlxuXHQjaW5jbHVkZSA8YmVnaW5fdmVydGV4PlxuXHQjaW5jbHVkZSA8bW9ycGh0YXJnZXRfdmVydGV4PlxuXHQjaW5jbHVkZSA8c2tpbm5pbmdfdmVydGV4PlxuXHQjaW5jbHVkZSA8ZGlzcGxhY2VtZW50bWFwX3ZlcnRleD5cblx0I2luY2x1ZGUgPHByb2plY3RfdmVydGV4PlxuXHQjaW5jbHVkZSA8bG9nZGVwdGhidWZfdmVydGV4PlxuXHQjaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3ZlcnRleD5cblx0dlZpZXdQb3NpdGlvbiA9IC0gbXZQb3NpdGlvbi54eXo7XG5cdCNpbmNsdWRlIDx3b3JsZHBvc192ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxlbnZtYXBfdmVydGV4PlxuXHQjaW5jbHVkZSA8c2hhZG93bWFwX3ZlcnRleD5cblx0I2luY2x1ZGUgPGZvZ192ZXJ0ZXg+XG59IixtZXNocGh5c2ljYWxfZnJhZzoiI2RlZmluZSBTVEFOREFSRFxuI2lmZGVmIFBIWVNJQ0FMXG5cdCNkZWZpbmUgUkVGTEVDVElWSVRZXG5cdCNkZWZpbmUgQ0xFQVJDT0FUXG5cdCNkZWZpbmUgU1BFQ1VMQVJcbiNlbmRpZlxudW5pZm9ybSB2ZWMzIGRpZmZ1c2U7XG51bmlmb3JtIHZlYzMgZW1pc3NpdmU7XG51bmlmb3JtIGZsb2F0IHJvdWdobmVzcztcbnVuaWZvcm0gZmxvYXQgbWV0YWxuZXNzO1xudW5pZm9ybSBmbG9hdCBvcGFjaXR5O1xuI2lmZGVmIFVTRV9UUkFOU01JU1NJT05cblx0dW5pZm9ybSBmbG9hdCB0cmFuc21pc3Npb247XG5cdHVuaWZvcm0gZmxvYXQgdGhpY2tuZXNzO1xuXHR1bmlmb3JtIGZsb2F0IGF0dGVudWF0aW9uRGlzdGFuY2U7XG5cdHVuaWZvcm0gdmVjMyBhdHRlbnVhdGlvblRpbnQ7XG4jZW5kaWZcbiNpZmRlZiBSRUZMRUNUSVZJVFlcblx0dW5pZm9ybSBmbG9hdCByZWZsZWN0aXZpdHk7XG4jZW5kaWZcbiNpZmRlZiBTUEVDVUxBUlxuXHR1bmlmb3JtIGZsb2F0IHNwZWN1bGFySW50ZW5zaXR5O1xuXHR1bmlmb3JtIHZlYzMgc3BlY3VsYXJUaW50O1xuXHQjaWZkZWYgVVNFX1NQRUNVTEFSSU5URU5TSVRZTUFQXG5cdFx0dW5pZm9ybSBzYW1wbGVyMkQgc3BlY3VsYXJJbnRlbnNpdHlNYXA7XG5cdCNlbmRpZlxuXHQjaWZkZWYgVVNFX1NQRUNVTEFSVElOVE1BUFxuXHRcdHVuaWZvcm0gc2FtcGxlcjJEIHNwZWN1bGFyVGludE1hcDtcblx0I2VuZGlmXG4jZW5kaWZcbiNpZmRlZiBDTEVBUkNPQVRcblx0dW5pZm9ybSBmbG9hdCBjbGVhcmNvYXQ7XG5cdHVuaWZvcm0gZmxvYXQgY2xlYXJjb2F0Um91Z2huZXNzO1xuI2VuZGlmXG4jaWZkZWYgVVNFX1NIRUVOXG5cdHVuaWZvcm0gdmVjMyBzaGVlbjtcbiNlbmRpZlxudmFyeWluZyB2ZWMzIHZWaWV3UG9zaXRpb247XG4jaWZuZGVmIEZMQVRfU0hBREVEXG5cdHZhcnlpbmcgdmVjMyB2Tm9ybWFsO1xuXHQjaWZkZWYgVVNFX1RBTkdFTlRcblx0XHR2YXJ5aW5nIHZlYzMgdlRhbmdlbnQ7XG5cdFx0dmFyeWluZyB2ZWMzIHZCaXRhbmdlbnQ7XG5cdCNlbmRpZlxuI2VuZGlmXG4jaW5jbHVkZSA8Y29tbW9uPlxuI2luY2x1ZGUgPHBhY2tpbmc+XG4jaW5jbHVkZSA8ZGl0aGVyaW5nX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8Y29sb3JfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDx1dl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPHV2Ml9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPG1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGFscGhhbWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8YW9tYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxsaWdodG1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGVtaXNzaXZlbWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8YnNkZnM+XG4jaW5jbHVkZSA8dHJhbnNtaXNzaW9uX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8Y3ViZV91dl9yZWZsZWN0aW9uX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGVudm1hcF9jb21tb25fcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxlbnZtYXBfcGh5c2ljYWxfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxmb2dfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxsaWdodHNfcGFyc19iZWdpbj5cbiNpbmNsdWRlIDxsaWdodHNfcGh5c2ljYWxfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxzaGFkb3dtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxidW1wbWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8bm9ybWFsbWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8Y2xlYXJjb2F0X3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8cm91Z2huZXNzbWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8bWV0YWxuZXNzbWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8bG9nZGVwdGhidWZfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfcGFyc19mcmFnbWVudD5cbnZvaWQgbWFpbigpIHtcblx0I2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19mcmFnbWVudD5cblx0dmVjNCBkaWZmdXNlQ29sb3IgPSB2ZWM0KCBkaWZmdXNlLCBvcGFjaXR5ICk7XG5cdFJlZmxlY3RlZExpZ2h0IHJlZmxlY3RlZExpZ2h0ID0gUmVmbGVjdGVkTGlnaHQoIHZlYzMoIDAuMCApLCB2ZWMzKCAwLjAgKSwgdmVjMyggMC4wICksIHZlYzMoIDAuMCApICk7XG5cdHZlYzMgdG90YWxFbWlzc2l2ZVJhZGlhbmNlID0gZW1pc3NpdmU7XG5cdCNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9mcmFnbWVudD5cblx0I2luY2x1ZGUgPG1hcF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGNvbG9yX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8YWxwaGFtYXBfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxhbHBoYXRlc3RfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxyb3VnaG5lc3NtYXBfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxtZXRhbG5lc3NtYXBfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxub3JtYWxfZnJhZ21lbnRfYmVnaW4+XG5cdCNpbmNsdWRlIDxub3JtYWxfZnJhZ21lbnRfbWFwcz5cblx0I2luY2x1ZGUgPGNsZWFyY29hdF9ub3JtYWxfZnJhZ21lbnRfYmVnaW4+XG5cdCNpbmNsdWRlIDxjbGVhcmNvYXRfbm9ybWFsX2ZyYWdtZW50X21hcHM+XG5cdCNpbmNsdWRlIDxlbWlzc2l2ZW1hcF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGxpZ2h0c19waHlzaWNhbF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGxpZ2h0c19mcmFnbWVudF9iZWdpbj5cblx0I2luY2x1ZGUgPGxpZ2h0c19mcmFnbWVudF9tYXBzPlxuXHQjaW5jbHVkZSA8bGlnaHRzX2ZyYWdtZW50X2VuZD5cblx0I2luY2x1ZGUgPGFvbWFwX2ZyYWdtZW50PlxuXHR2ZWMzIHRvdGFsRGlmZnVzZSA9IHJlZmxlY3RlZExpZ2h0LmRpcmVjdERpZmZ1c2UgKyByZWZsZWN0ZWRMaWdodC5pbmRpcmVjdERpZmZ1c2U7XG5cdHZlYzMgdG90YWxTcGVjdWxhciA9IHJlZmxlY3RlZExpZ2h0LmRpcmVjdFNwZWN1bGFyICsgcmVmbGVjdGVkTGlnaHQuaW5kaXJlY3RTcGVjdWxhcjtcblx0I2luY2x1ZGUgPHRyYW5zbWlzc2lvbl9mcmFnbWVudD5cblx0dmVjMyBvdXRnb2luZ0xpZ2h0ID0gdG90YWxEaWZmdXNlICsgdG90YWxTcGVjdWxhciArIHRvdGFsRW1pc3NpdmVSYWRpYW5jZTtcblx0Z2xfRnJhZ0NvbG9yID0gdmVjNCggb3V0Z29pbmdMaWdodCwgZGlmZnVzZUNvbG9yLmEgKTtcblx0I2luY2x1ZGUgPHRvbmVtYXBwaW5nX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8ZW5jb2RpbmdzX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8Zm9nX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8cHJlbXVsdGlwbGllZF9hbHBoYV9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGRpdGhlcmluZ19mcmFnbWVudD5cbn0iLG1lc2hwaHlzaWNhbF92ZXJ0OiIjZGVmaW5lIFNUQU5EQVJEXG52YXJ5aW5nIHZlYzMgdlZpZXdQb3NpdGlvbjtcbiNpZm5kZWYgRkxBVF9TSEFERURcblx0dmFyeWluZyB2ZWMzIHZOb3JtYWw7XG5cdCNpZmRlZiBVU0VfVEFOR0VOVFxuXHRcdHZhcnlpbmcgdmVjMyB2VGFuZ2VudDtcblx0XHR2YXJ5aW5nIHZlYzMgdkJpdGFuZ2VudDtcblx0I2VuZGlmXG4jZW5kaWZcbiNpZmRlZiBVU0VfVFJBTlNNSVNTSU9OXG5cdHZhcnlpbmcgdmVjNCB2V29ybGRQb3NpdGlvbjtcbiNlbmRpZlxuI2luY2x1ZGUgPGNvbW1vbj5cbiNpbmNsdWRlIDx1dl9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDx1djJfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8ZGlzcGxhY2VtZW50bWFwX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGNvbG9yX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGZvZ19wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxtb3JwaHRhcmdldF9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxza2lubmluZ19wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxzaGFkb3dtYXBfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8bG9nZGVwdGhidWZfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3BhcnNfdmVydGV4Plxudm9pZCBtYWluKCkge1xuXHQjaW5jbHVkZSA8dXZfdmVydGV4PlxuXHQjaW5jbHVkZSA8dXYyX3ZlcnRleD5cblx0I2luY2x1ZGUgPGNvbG9yX3ZlcnRleD5cblx0I2luY2x1ZGUgPGJlZ2lubm9ybWFsX3ZlcnRleD5cblx0I2luY2x1ZGUgPG1vcnBobm9ybWFsX3ZlcnRleD5cblx0I2luY2x1ZGUgPHNraW5iYXNlX3ZlcnRleD5cblx0I2luY2x1ZGUgPHNraW5ub3JtYWxfdmVydGV4PlxuXHQjaW5jbHVkZSA8ZGVmYXVsdG5vcm1hbF92ZXJ0ZXg+XG4jaWZuZGVmIEZMQVRfU0hBREVEXG5cdHZOb3JtYWwgPSBub3JtYWxpemUoIHRyYW5zZm9ybWVkTm9ybWFsICk7XG5cdCNpZmRlZiBVU0VfVEFOR0VOVFxuXHRcdHZUYW5nZW50ID0gbm9ybWFsaXplKCB0cmFuc2Zvcm1lZFRhbmdlbnQgKTtcblx0XHR2Qml0YW5nZW50ID0gbm9ybWFsaXplKCBjcm9zcyggdk5vcm1hbCwgdlRhbmdlbnQgKSAqIHRhbmdlbnQudyApO1xuXHQjZW5kaWZcbiNlbmRpZlxuXHQjaW5jbHVkZSA8YmVnaW5fdmVydGV4PlxuXHQjaW5jbHVkZSA8bW9ycGh0YXJnZXRfdmVydGV4PlxuXHQjaW5jbHVkZSA8c2tpbm5pbmdfdmVydGV4PlxuXHQjaW5jbHVkZSA8ZGlzcGxhY2VtZW50bWFwX3ZlcnRleD5cblx0I2luY2x1ZGUgPHByb2plY3RfdmVydGV4PlxuXHQjaW5jbHVkZSA8bG9nZGVwdGhidWZfdmVydGV4PlxuXHQjaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3ZlcnRleD5cblx0dlZpZXdQb3NpdGlvbiA9IC0gbXZQb3NpdGlvbi54eXo7XG5cdCNpbmNsdWRlIDx3b3JsZHBvc192ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxzaGFkb3dtYXBfdmVydGV4PlxuXHQjaW5jbHVkZSA8Zm9nX3ZlcnRleD5cbiNpZmRlZiBVU0VfVFJBTlNNSVNTSU9OXG5cdHZXb3JsZFBvc2l0aW9uID0gd29ybGRQb3NpdGlvbjtcbiNlbmRpZlxufSIsbm9ybWFsX2ZyYWc6IiNkZWZpbmUgTk9STUFMXG51bmlmb3JtIGZsb2F0IG9wYWNpdHk7XG4jaWYgZGVmaW5lZCggRkxBVF9TSEFERUQgKSB8fCBkZWZpbmVkKCBVU0VfQlVNUE1BUCApIHx8IGRlZmluZWQoIFRBTkdFTlRTUEFDRV9OT1JNQUxNQVAgKVxuXHR2YXJ5aW5nIHZlYzMgdlZpZXdQb3NpdGlvbjtcbiNlbmRpZlxuI2lmbmRlZiBGTEFUX1NIQURFRFxuXHR2YXJ5aW5nIHZlYzMgdk5vcm1hbDtcblx0I2lmZGVmIFVTRV9UQU5HRU5UXG5cdFx0dmFyeWluZyB2ZWMzIHZUYW5nZW50O1xuXHRcdHZhcnlpbmcgdmVjMyB2Qml0YW5nZW50O1xuXHQjZW5kaWZcbiNlbmRpZlxuI2luY2x1ZGUgPHBhY2tpbmc+XG4jaW5jbHVkZSA8dXZfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxidW1wbWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8bm9ybWFsbWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8bG9nZGVwdGhidWZfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfcGFyc19mcmFnbWVudD5cbnZvaWQgbWFpbigpIHtcblx0I2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19mcmFnbWVudD5cblx0I2luY2x1ZGUgPGxvZ2RlcHRoYnVmX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8bm9ybWFsX2ZyYWdtZW50X2JlZ2luPlxuXHQjaW5jbHVkZSA8bm9ybWFsX2ZyYWdtZW50X21hcHM+XG5cdGdsX0ZyYWdDb2xvciA9IHZlYzQoIHBhY2tOb3JtYWxUb1JHQiggbm9ybWFsICksIG9wYWNpdHkgKTtcbn0iLG5vcm1hbF92ZXJ0OiIjZGVmaW5lIE5PUk1BTFxuI2lmIGRlZmluZWQoIEZMQVRfU0hBREVEICkgfHwgZGVmaW5lZCggVVNFX0JVTVBNQVAgKSB8fCBkZWZpbmVkKCBUQU5HRU5UU1BBQ0VfTk9STUFMTUFQIClcblx0dmFyeWluZyB2ZWMzIHZWaWV3UG9zaXRpb247XG4jZW5kaWZcbiNpZm5kZWYgRkxBVF9TSEFERURcblx0dmFyeWluZyB2ZWMzIHZOb3JtYWw7XG5cdCNpZmRlZiBVU0VfVEFOR0VOVFxuXHRcdHZhcnlpbmcgdmVjMyB2VGFuZ2VudDtcblx0XHR2YXJ5aW5nIHZlYzMgdkJpdGFuZ2VudDtcblx0I2VuZGlmXG4jZW5kaWZcbiNpbmNsdWRlIDxjb21tb24+XG4jaW5jbHVkZSA8dXZfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8ZGlzcGxhY2VtZW50bWFwX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPG1vcnBodGFyZ2V0X3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPHNraW5uaW5nX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19wYXJzX3ZlcnRleD5cbnZvaWQgbWFpbigpIHtcblx0I2luY2x1ZGUgPHV2X3ZlcnRleD5cblx0I2luY2x1ZGUgPGJlZ2lubm9ybWFsX3ZlcnRleD5cblx0I2luY2x1ZGUgPG1vcnBobm9ybWFsX3ZlcnRleD5cblx0I2luY2x1ZGUgPHNraW5iYXNlX3ZlcnRleD5cblx0I2luY2x1ZGUgPHNraW5ub3JtYWxfdmVydGV4PlxuXHQjaW5jbHVkZSA8ZGVmYXVsdG5vcm1hbF92ZXJ0ZXg+XG4jaWZuZGVmIEZMQVRfU0hBREVEXG5cdHZOb3JtYWwgPSBub3JtYWxpemUoIHRyYW5zZm9ybWVkTm9ybWFsICk7XG5cdCNpZmRlZiBVU0VfVEFOR0VOVFxuXHRcdHZUYW5nZW50ID0gbm9ybWFsaXplKCB0cmFuc2Zvcm1lZFRhbmdlbnQgKTtcblx0XHR2Qml0YW5nZW50ID0gbm9ybWFsaXplKCBjcm9zcyggdk5vcm1hbCwgdlRhbmdlbnQgKSAqIHRhbmdlbnQudyApO1xuXHQjZW5kaWZcbiNlbmRpZlxuXHQjaW5jbHVkZSA8YmVnaW5fdmVydGV4PlxuXHQjaW5jbHVkZSA8bW9ycGh0YXJnZXRfdmVydGV4PlxuXHQjaW5jbHVkZSA8c2tpbm5pbmdfdmVydGV4PlxuXHQjaW5jbHVkZSA8ZGlzcGxhY2VtZW50bWFwX3ZlcnRleD5cblx0I2luY2x1ZGUgPHByb2plY3RfdmVydGV4PlxuXHQjaW5jbHVkZSA8bG9nZGVwdGhidWZfdmVydGV4PlxuXHQjaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3ZlcnRleD5cbiNpZiBkZWZpbmVkKCBGTEFUX1NIQURFRCApIHx8IGRlZmluZWQoIFVTRV9CVU1QTUFQICkgfHwgZGVmaW5lZCggVEFOR0VOVFNQQUNFX05PUk1BTE1BUCApXG5cdHZWaWV3UG9zaXRpb24gPSAtIG12UG9zaXRpb24ueHl6O1xuI2VuZGlmXG59Iixwb2ludHNfZnJhZzoidW5pZm9ybSB2ZWMzIGRpZmZ1c2U7XG51bmlmb3JtIGZsb2F0IG9wYWNpdHk7XG4jaW5jbHVkZSA8Y29tbW9uPlxuI2luY2x1ZGUgPGNvbG9yX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8bWFwX3BhcnRpY2xlX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8Zm9nX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8bG9nZGVwdGhidWZfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfcGFyc19mcmFnbWVudD5cbnZvaWQgbWFpbigpIHtcblx0I2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19mcmFnbWVudD5cblx0dmVjMyBvdXRnb2luZ0xpZ2h0ID0gdmVjMyggMC4wICk7XG5cdHZlYzQgZGlmZnVzZUNvbG9yID0gdmVjNCggZGlmZnVzZSwgb3BhY2l0eSApO1xuXHQjaW5jbHVkZSA8bG9nZGVwdGhidWZfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxtYXBfcGFydGljbGVfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxjb2xvcl9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGFscGhhdGVzdF9mcmFnbWVudD5cblx0b3V0Z29pbmdMaWdodCA9IGRpZmZ1c2VDb2xvci5yZ2I7XG5cdGdsX0ZyYWdDb2xvciA9IHZlYzQoIG91dGdvaW5nTGlnaHQsIGRpZmZ1c2VDb2xvci5hICk7XG5cdCNpbmNsdWRlIDx0b25lbWFwcGluZ19mcmFnbWVudD5cblx0I2luY2x1ZGUgPGVuY29kaW5nc19mcmFnbWVudD5cblx0I2luY2x1ZGUgPGZvZ19mcmFnbWVudD5cblx0I2luY2x1ZGUgPHByZW11bHRpcGxpZWRfYWxwaGFfZnJhZ21lbnQ+XG59Iixwb2ludHNfdmVydDoidW5pZm9ybSBmbG9hdCBzaXplO1xudW5pZm9ybSBmbG9hdCBzY2FsZTtcbiNpbmNsdWRlIDxjb21tb24+XG4jaW5jbHVkZSA8Y29sb3JfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8Zm9nX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPG1vcnBodGFyZ2V0X3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19wYXJzX3ZlcnRleD5cbnZvaWQgbWFpbigpIHtcblx0I2luY2x1ZGUgPGNvbG9yX3ZlcnRleD5cblx0I2luY2x1ZGUgPGJlZ2luX3ZlcnRleD5cblx0I2luY2x1ZGUgPG1vcnBodGFyZ2V0X3ZlcnRleD5cblx0I2luY2x1ZGUgPHByb2plY3RfdmVydGV4PlxuXHRnbF9Qb2ludFNpemUgPSBzaXplO1xuXHQjaWZkZWYgVVNFX1NJWkVBVFRFTlVBVElPTlxuXHRcdGJvb2wgaXNQZXJzcGVjdGl2ZSA9IGlzUGVyc3BlY3RpdmVNYXRyaXgoIHByb2plY3Rpb25NYXRyaXggKTtcblx0XHRpZiAoIGlzUGVyc3BlY3RpdmUgKSBnbF9Qb2ludFNpemUgKj0gKCBzY2FsZSAvIC0gbXZQb3NpdGlvbi56ICk7XG5cdCNlbmRpZlxuXHQjaW5jbHVkZSA8bG9nZGVwdGhidWZfdmVydGV4PlxuXHQjaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3ZlcnRleD5cblx0I2luY2x1ZGUgPHdvcmxkcG9zX3ZlcnRleD5cblx0I2luY2x1ZGUgPGZvZ192ZXJ0ZXg+XG59IixzaGFkb3dfZnJhZzoidW5pZm9ybSB2ZWMzIGNvbG9yO1xudW5pZm9ybSBmbG9hdCBvcGFjaXR5O1xuI2luY2x1ZGUgPGNvbW1vbj5cbiNpbmNsdWRlIDxwYWNraW5nPlxuI2luY2x1ZGUgPGZvZ19wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGJzZGZzPlxuI2luY2x1ZGUgPGxpZ2h0c19wYXJzX2JlZ2luPlxuI2luY2x1ZGUgPHNoYWRvd21hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPHNoYWRvd21hc2tfcGFyc19mcmFnbWVudD5cbnZvaWQgbWFpbigpIHtcblx0Z2xfRnJhZ0NvbG9yID0gdmVjNCggY29sb3IsIG9wYWNpdHkgKiAoIDEuMCAtIGdldFNoYWRvd01hc2soKSApICk7XG5cdCNpbmNsdWRlIDx0b25lbWFwcGluZ19mcmFnbWVudD5cblx0I2luY2x1ZGUgPGVuY29kaW5nc19mcmFnbWVudD5cblx0I2luY2x1ZGUgPGZvZ19mcmFnbWVudD5cbn0iLHNoYWRvd192ZXJ0OiIjaW5jbHVkZSA8Y29tbW9uPlxuI2luY2x1ZGUgPGZvZ19wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxzaGFkb3dtYXBfcGFyc192ZXJ0ZXg+XG52b2lkIG1haW4oKSB7XG5cdCNpbmNsdWRlIDxiZWdpbl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxwcm9qZWN0X3ZlcnRleD5cblx0I2luY2x1ZGUgPHdvcmxkcG9zX3ZlcnRleD5cblx0I2luY2x1ZGUgPGJlZ2lubm9ybWFsX3ZlcnRleD5cblx0I2luY2x1ZGUgPG1vcnBobm9ybWFsX3ZlcnRleD5cblx0I2luY2x1ZGUgPHNraW5iYXNlX3ZlcnRleD5cblx0I2luY2x1ZGUgPHNraW5ub3JtYWxfdmVydGV4PlxuXHQjaW5jbHVkZSA8ZGVmYXVsdG5vcm1hbF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxzaGFkb3dtYXBfdmVydGV4PlxuXHQjaW5jbHVkZSA8Zm9nX3ZlcnRleD5cbn0iLHNwcml0ZV9mcmFnOiJ1bmlmb3JtIHZlYzMgZGlmZnVzZTtcbnVuaWZvcm0gZmxvYXQgb3BhY2l0eTtcbiNpbmNsdWRlIDxjb21tb24+XG4jaW5jbHVkZSA8dXZfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxhbHBoYW1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGZvZ19wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3BhcnNfZnJhZ21lbnQ+XG52b2lkIG1haW4oKSB7XG5cdCNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfZnJhZ21lbnQ+XG5cdHZlYzMgb3V0Z29pbmdMaWdodCA9IHZlYzMoIDAuMCApO1xuXHR2ZWM0IGRpZmZ1c2VDb2xvciA9IHZlYzQoIGRpZmZ1c2UsIG9wYWNpdHkgKTtcblx0I2luY2x1ZGUgPGxvZ2RlcHRoYnVmX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8bWFwX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8YWxwaGFtYXBfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxhbHBoYXRlc3RfZnJhZ21lbnQ+XG5cdG91dGdvaW5nTGlnaHQgPSBkaWZmdXNlQ29sb3IucmdiO1xuXHRnbF9GcmFnQ29sb3IgPSB2ZWM0KCBvdXRnb2luZ0xpZ2h0LCBkaWZmdXNlQ29sb3IuYSApO1xuXHQjaW5jbHVkZSA8dG9uZW1hcHBpbmdfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxlbmNvZGluZ3NfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxmb2dfZnJhZ21lbnQ+XG59IixzcHJpdGVfdmVydDoidW5pZm9ybSBmbG9hdCByb3RhdGlvbjtcbnVuaWZvcm0gdmVjMiBjZW50ZXI7XG4jaW5jbHVkZSA8Y29tbW9uPlxuI2luY2x1ZGUgPHV2X3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGZvZ19wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfcGFyc192ZXJ0ZXg+XG52b2lkIG1haW4oKSB7XG5cdCNpbmNsdWRlIDx1dl92ZXJ0ZXg+XG5cdHZlYzQgbXZQb3NpdGlvbiA9IG1vZGVsVmlld01hdHJpeCAqIHZlYzQoIDAuMCwgMC4wLCAwLjAsIDEuMCApO1xuXHR2ZWMyIHNjYWxlO1xuXHRzY2FsZS54ID0gbGVuZ3RoKCB2ZWMzKCBtb2RlbE1hdHJpeFsgMCBdLngsIG1vZGVsTWF0cml4WyAwIF0ueSwgbW9kZWxNYXRyaXhbIDAgXS56ICkgKTtcblx0c2NhbGUueSA9IGxlbmd0aCggdmVjMyggbW9kZWxNYXRyaXhbIDEgXS54LCBtb2RlbE1hdHJpeFsgMSBdLnksIG1vZGVsTWF0cml4WyAxIF0ueiApICk7XG5cdCNpZm5kZWYgVVNFX1NJWkVBVFRFTlVBVElPTlxuXHRcdGJvb2wgaXNQZXJzcGVjdGl2ZSA9IGlzUGVyc3BlY3RpdmVNYXRyaXgoIHByb2plY3Rpb25NYXRyaXggKTtcblx0XHRpZiAoIGlzUGVyc3BlY3RpdmUgKSBzY2FsZSAqPSAtIG12UG9zaXRpb24uejtcblx0I2VuZGlmXG5cdHZlYzIgYWxpZ25lZFBvc2l0aW9uID0gKCBwb3NpdGlvbi54eSAtICggY2VudGVyIC0gdmVjMiggMC41ICkgKSApICogc2NhbGU7XG5cdHZlYzIgcm90YXRlZFBvc2l0aW9uO1xuXHRyb3RhdGVkUG9zaXRpb24ueCA9IGNvcyggcm90YXRpb24gKSAqIGFsaWduZWRQb3NpdGlvbi54IC0gc2luKCByb3RhdGlvbiApICogYWxpZ25lZFBvc2l0aW9uLnk7XG5cdHJvdGF0ZWRQb3NpdGlvbi55ID0gc2luKCByb3RhdGlvbiApICogYWxpZ25lZFBvc2l0aW9uLnggKyBjb3MoIHJvdGF0aW9uICkgKiBhbGlnbmVkUG9zaXRpb24ueTtcblx0bXZQb3NpdGlvbi54eSArPSByb3RhdGVkUG9zaXRpb247XG5cdGdsX1Bvc2l0aW9uID0gcHJvamVjdGlvbk1hdHJpeCAqIG12UG9zaXRpb247XG5cdCNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfdmVydGV4PlxuXHQjaW5jbHVkZSA8Zm9nX3ZlcnRleD5cbn0ifSxRY3Q9e2NvbW1vbjp7ZGlmZnVzZTp7dmFsdWU6bmV3IFpsdCgxNjc3NzIxNSl9LG9wYWNpdHk6e3ZhbHVlOjF9LG1hcDp7dmFsdWU6bnVsbH0sdXZUcmFuc2Zvcm06e3ZhbHVlOm5ldyBoc3R9LHV2MlRyYW5zZm9ybTp7dmFsdWU6bmV3IGhzdH0sYWxwaGFNYXA6e3ZhbHVlOm51bGx9fSxzcGVjdWxhcm1hcDp7c3BlY3VsYXJNYXA6e3ZhbHVlOm51bGx9fSxlbnZtYXA6e2Vudk1hcDp7dmFsdWU6bnVsbH0sZmxpcEVudk1hcDp7dmFsdWU6LTF9LHJlZmxlY3Rpdml0eTp7dmFsdWU6MX0scmVmcmFjdGlvblJhdGlvOnt2YWx1ZTouOTh9LG1heE1pcExldmVsOnt2YWx1ZTowfX0sYW9tYXA6e2FvTWFwOnt2YWx1ZTpudWxsfSxhb01hcEludGVuc2l0eTp7dmFsdWU6MX19LGxpZ2h0bWFwOntsaWdodE1hcDp7dmFsdWU6bnVsbH0sbGlnaHRNYXBJbnRlbnNpdHk6e3ZhbHVlOjF9fSxlbWlzc2l2ZW1hcDp7ZW1pc3NpdmVNYXA6e3ZhbHVlOm51bGx9fSxidW1wbWFwOntidW1wTWFwOnt2YWx1ZTpudWxsfSxidW1wU2NhbGU6e3ZhbHVlOjF9fSxub3JtYWxtYXA6e25vcm1hbE1hcDp7dmFsdWU6bnVsbH0sbm9ybWFsU2NhbGU6e3ZhbHVlOm5ldyBnc3QoMSwxKX19LGRpc3BsYWNlbWVudG1hcDp7ZGlzcGxhY2VtZW50TWFwOnt2YWx1ZTpudWxsfSxkaXNwbGFjZW1lbnRTY2FsZTp7dmFsdWU6MX0sZGlzcGxhY2VtZW50Qmlhczp7dmFsdWU6MH19LHJvdWdobmVzc21hcDp7cm91Z2huZXNzTWFwOnt2YWx1ZTpudWxsfX0sbWV0YWxuZXNzbWFwOnttZXRhbG5lc3NNYXA6e3ZhbHVlOm51bGx9fSxncmFkaWVudG1hcDp7Z3JhZGllbnRNYXA6e3ZhbHVlOm51bGx9fSxmb2c6e2ZvZ0RlbnNpdHk6e3ZhbHVlOjI1ZS01fSxmb2dOZWFyOnt2YWx1ZToxfSxmb2dGYXI6e3ZhbHVlOjJlM30sZm9nQ29sb3I6e3ZhbHVlOm5ldyBabHQoMTY3NzcyMTUpfX0sbGlnaHRzOnthbWJpZW50TGlnaHRDb2xvcjp7dmFsdWU6W119LGxpZ2h0UHJvYmU6e3ZhbHVlOltdfSxkaXJlY3Rpb25hbExpZ2h0czp7dmFsdWU6W10scHJvcGVydGllczp7ZGlyZWN0aW9uOnt9LGNvbG9yOnt9fX0sZGlyZWN0aW9uYWxMaWdodFNoYWRvd3M6e3ZhbHVlOltdLHByb3BlcnRpZXM6e3NoYWRvd0JpYXM6e30sc2hhZG93Tm9ybWFsQmlhczp7fSxzaGFkb3dSYWRpdXM6e30sc2hhZG93TWFwU2l6ZTp7fX19LGRpcmVjdGlvbmFsU2hhZG93TWFwOnt2YWx1ZTpbXX0sZGlyZWN0aW9uYWxTaGFkb3dNYXRyaXg6e3ZhbHVlOltdfSxzcG90TGlnaHRzOnt2YWx1ZTpbXSxwcm9wZXJ0aWVzOntjb2xvcjp7fSxwb3NpdGlvbjp7fSxkaXJlY3Rpb246e30sZGlzdGFuY2U6e30sY29uZUNvczp7fSxwZW51bWJyYUNvczp7fSxkZWNheTp7fX19LHNwb3RMaWdodFNoYWRvd3M6e3ZhbHVlOltdLHByb3BlcnRpZXM6e3NoYWRvd0JpYXM6e30sc2hhZG93Tm9ybWFsQmlhczp7fSxzaGFkb3dSYWRpdXM6e30sc2hhZG93TWFwU2l6ZTp7fX19LHNwb3RTaGFkb3dNYXA6e3ZhbHVlOltdfSxzcG90U2hhZG93TWF0cml4Ont2YWx1ZTpbXX0scG9pbnRMaWdodHM6e3ZhbHVlOltdLHByb3BlcnRpZXM6e2NvbG9yOnt9LHBvc2l0aW9uOnt9LGRlY2F5Ont9LGRpc3RhbmNlOnt9fX0scG9pbnRMaWdodFNoYWRvd3M6e3ZhbHVlOltdLHByb3BlcnRpZXM6e3NoYWRvd0JpYXM6e30sc2hhZG93Tm9ybWFsQmlhczp7fSxzaGFkb3dSYWRpdXM6e30sc2hhZG93TWFwU2l6ZTp7fSxzaGFkb3dDYW1lcmFOZWFyOnt9LHNoYWRvd0NhbWVyYUZhcjp7fX19LHBvaW50U2hhZG93TWFwOnt2YWx1ZTpbXX0scG9pbnRTaGFkb3dNYXRyaXg6e3ZhbHVlOltdfSxoZW1pc3BoZXJlTGlnaHRzOnt2YWx1ZTpbXSxwcm9wZXJ0aWVzOntkaXJlY3Rpb246e30sc2t5Q29sb3I6e30sZ3JvdW5kQ29sb3I6e319fSxyZWN0QXJlYUxpZ2h0czp7dmFsdWU6W10scHJvcGVydGllczp7Y29sb3I6e30scG9zaXRpb246e30sd2lkdGg6e30saGVpZ2h0Ont9fX0sbHRjXzE6e3ZhbHVlOm51bGx9LGx0Y18yOnt2YWx1ZTpudWxsfX0scG9pbnRzOntkaWZmdXNlOnt2YWx1ZTpuZXcgWmx0KDE2Nzc3MjE1KX0sb3BhY2l0eTp7dmFsdWU6MX0sc2l6ZTp7dmFsdWU6MX0sc2NhbGU6e3ZhbHVlOjF9LG1hcDp7dmFsdWU6bnVsbH0sYWxwaGFNYXA6e3ZhbHVlOm51bGx9LHV2VHJhbnNmb3JtOnt2YWx1ZTpuZXcgaHN0fX0sc3ByaXRlOntkaWZmdXNlOnt2YWx1ZTpuZXcgWmx0KDE2Nzc3MjE1KX0sb3BhY2l0eTp7dmFsdWU6MX0sY2VudGVyOnt2YWx1ZTpuZXcgZ3N0KC41LC41KX0scm90YXRpb246e3ZhbHVlOjB9LG1hcDp7dmFsdWU6bnVsbH0sYWxwaGFNYXA6e3ZhbHVlOm51bGx9LHV2VHJhbnNmb3JtOnt2YWx1ZTpuZXcgaHN0fX19LCRjdD17YmFzaWM6e3VuaWZvcm1zOkFjdChbUWN0LmNvbW1vbixRY3Quc3BlY3VsYXJtYXAsUWN0LmVudm1hcCxRY3QuYW9tYXAsUWN0LmxpZ2h0bWFwLFFjdC5mb2ddKSx2ZXJ0ZXhTaGFkZXI6SmN0Lm1lc2hiYXNpY192ZXJ0LGZyYWdtZW50U2hhZGVyOkpjdC5tZXNoYmFzaWNfZnJhZ30sbGFtYmVydDp7dW5pZm9ybXM6QWN0KFtRY3QuY29tbW9uLFFjdC5zcGVjdWxhcm1hcCxRY3QuZW52bWFwLFFjdC5hb21hcCxRY3QubGlnaHRtYXAsUWN0LmVtaXNzaXZlbWFwLFFjdC5mb2csUWN0LmxpZ2h0cyx7ZW1pc3NpdmU6e3ZhbHVlOm5ldyBabHQoMCl9fV0pLHZlcnRleFNoYWRlcjpKY3QubWVzaGxhbWJlcnRfdmVydCxmcmFnbWVudFNoYWRlcjpKY3QubWVzaGxhbWJlcnRfZnJhZ30scGhvbmc6e3VuaWZvcm1zOkFjdChbUWN0LmNvbW1vbixRY3Quc3BlY3VsYXJtYXAsUWN0LmVudm1hcCxRY3QuYW9tYXAsUWN0LmxpZ2h0bWFwLFFjdC5lbWlzc2l2ZW1hcCxRY3QuYnVtcG1hcCxRY3Qubm9ybWFsbWFwLFFjdC5kaXNwbGFjZW1lbnRtYXAsUWN0LmZvZyxRY3QubGlnaHRzLHtlbWlzc2l2ZTp7dmFsdWU6bmV3IFpsdCgwKX0sc3BlY3VsYXI6e3ZhbHVlOm5ldyBabHQoMTExODQ4MSl9LHNoaW5pbmVzczp7dmFsdWU6MzB9fV0pLHZlcnRleFNoYWRlcjpKY3QubWVzaHBob25nX3ZlcnQsZnJhZ21lbnRTaGFkZXI6SmN0Lm1lc2hwaG9uZ19mcmFnfSxzdGFuZGFyZDp7dW5pZm9ybXM6QWN0KFtRY3QuY29tbW9uLFFjdC5lbnZtYXAsUWN0LmFvbWFwLFFjdC5saWdodG1hcCxRY3QuZW1pc3NpdmVtYXAsUWN0LmJ1bXBtYXAsUWN0Lm5vcm1hbG1hcCxRY3QuZGlzcGxhY2VtZW50bWFwLFFjdC5yb3VnaG5lc3NtYXAsUWN0Lm1ldGFsbmVzc21hcCxRY3QuZm9nLFFjdC5saWdodHMse2VtaXNzaXZlOnt2YWx1ZTpuZXcgWmx0KDApfSxyb3VnaG5lc3M6e3ZhbHVlOjF9LG1ldGFsbmVzczp7dmFsdWU6MH0sZW52TWFwSW50ZW5zaXR5Ont2YWx1ZToxfX1dKSx2ZXJ0ZXhTaGFkZXI6SmN0Lm1lc2hwaHlzaWNhbF92ZXJ0LGZyYWdtZW50U2hhZGVyOkpjdC5tZXNocGh5c2ljYWxfZnJhZ30sdG9vbjp7dW5pZm9ybXM6QWN0KFtRY3QuY29tbW9uLFFjdC5hb21hcCxRY3QubGlnaHRtYXAsUWN0LmVtaXNzaXZlbWFwLFFjdC5idW1wbWFwLFFjdC5ub3JtYWxtYXAsUWN0LmRpc3BsYWNlbWVudG1hcCxRY3QuZ3JhZGllbnRtYXAsUWN0LmZvZyxRY3QubGlnaHRzLHtlbWlzc2l2ZTp7dmFsdWU6bmV3IFpsdCgwKX19XSksdmVydGV4U2hhZGVyOkpjdC5tZXNodG9vbl92ZXJ0LGZyYWdtZW50U2hhZGVyOkpjdC5tZXNodG9vbl9mcmFnfSxtYXRjYXA6e3VuaWZvcm1zOkFjdChbUWN0LmNvbW1vbixRY3QuYnVtcG1hcCxRY3Qubm9ybWFsbWFwLFFjdC5kaXNwbGFjZW1lbnRtYXAsUWN0LmZvZyx7bWF0Y2FwOnt2YWx1ZTpudWxsfX1dKSx2ZXJ0ZXhTaGFkZXI6SmN0Lm1lc2htYXRjYXBfdmVydCxmcmFnbWVudFNoYWRlcjpKY3QubWVzaG1hdGNhcF9mcmFnfSxwb2ludHM6e3VuaWZvcm1zOkFjdChbUWN0LnBvaW50cyxRY3QuZm9nXSksdmVydGV4U2hhZGVyOkpjdC5wb2ludHNfdmVydCxmcmFnbWVudFNoYWRlcjpKY3QucG9pbnRzX2ZyYWd9LGRhc2hlZDp7dW5pZm9ybXM6QWN0KFtRY3QuY29tbW9uLFFjdC5mb2cse3NjYWxlOnt2YWx1ZToxfSxkYXNoU2l6ZTp7dmFsdWU6MX0sdG90YWxTaXplOnt2YWx1ZToyfX1dKSx2ZXJ0ZXhTaGFkZXI6SmN0LmxpbmVkYXNoZWRfdmVydCxmcmFnbWVudFNoYWRlcjpKY3QubGluZWRhc2hlZF9mcmFnfSxkZXB0aDp7dW5pZm9ybXM6QWN0KFtRY3QuY29tbW9uLFFjdC5kaXNwbGFjZW1lbnRtYXBdKSx2ZXJ0ZXhTaGFkZXI6SmN0LmRlcHRoX3ZlcnQsZnJhZ21lbnRTaGFkZXI6SmN0LmRlcHRoX2ZyYWd9LG5vcm1hbDp7dW5pZm9ybXM6QWN0KFtRY3QuY29tbW9uLFFjdC5idW1wbWFwLFFjdC5ub3JtYWxtYXAsUWN0LmRpc3BsYWNlbWVudG1hcCx7b3BhY2l0eTp7dmFsdWU6MX19XSksdmVydGV4U2hhZGVyOkpjdC5ub3JtYWxfdmVydCxmcmFnbWVudFNoYWRlcjpKY3Qubm9ybWFsX2ZyYWd9LHNwcml0ZTp7dW5pZm9ybXM6QWN0KFtRY3Quc3ByaXRlLFFjdC5mb2ddKSx2ZXJ0ZXhTaGFkZXI6SmN0LnNwcml0ZV92ZXJ0LGZyYWdtZW50U2hhZGVyOkpjdC5zcHJpdGVfZnJhZ30sYmFja2dyb3VuZDp7dW5pZm9ybXM6e3V2VHJhbnNmb3JtOnt2YWx1ZTpuZXcgaHN0fSx0MkQ6e3ZhbHVlOm51bGx9fSx2ZXJ0ZXhTaGFkZXI6SmN0LmJhY2tncm91bmRfdmVydCxmcmFnbWVudFNoYWRlcjpKY3QuYmFja2dyb3VuZF9mcmFnfSxjdWJlOnt1bmlmb3JtczpBY3QoW1FjdC5lbnZtYXAse29wYWNpdHk6e3ZhbHVlOjF9fV0pLHZlcnRleFNoYWRlcjpKY3QuY3ViZV92ZXJ0LGZyYWdtZW50U2hhZGVyOkpjdC5jdWJlX2ZyYWd9LGVxdWlyZWN0Ont1bmlmb3Jtczp7dEVxdWlyZWN0Ont2YWx1ZTpudWxsfX0sdmVydGV4U2hhZGVyOkpjdC5lcXVpcmVjdF92ZXJ0LGZyYWdtZW50U2hhZGVyOkpjdC5lcXVpcmVjdF9mcmFnfSxkaXN0YW5jZVJHQkE6e3VuaWZvcm1zOkFjdChbUWN0LmNvbW1vbixRY3QuZGlzcGxhY2VtZW50bWFwLHtyZWZlcmVuY2VQb3NpdGlvbjp7dmFsdWU6bmV3IHdzdH0sbmVhckRpc3RhbmNlOnt2YWx1ZToxfSxmYXJEaXN0YW5jZTp7dmFsdWU6MWUzfX1dKSx2ZXJ0ZXhTaGFkZXI6SmN0LmRpc3RhbmNlUkdCQV92ZXJ0LGZyYWdtZW50U2hhZGVyOkpjdC5kaXN0YW5jZVJHQkFfZnJhZ30sc2hhZG93Ont1bmlmb3JtczpBY3QoW1FjdC5saWdodHMsUWN0LmZvZyx7Y29sb3I6e3ZhbHVlOm5ldyBabHQoMCl9LG9wYWNpdHk6e3ZhbHVlOjF9fV0pLHZlcnRleFNoYWRlcjpKY3Quc2hhZG93X3ZlcnQsZnJhZ21lbnRTaGFkZXI6SmN0LnNoYWRvd19mcmFnfX07ZnVuY3Rpb24gdGR0KHQsZSxuLG8saSl7Y29uc3QgYT1uZXcgWmx0KDApO2xldCByLHMsbD0wLGM9bnVsbCxkPTAscD1udWxsO2Z1bmN0aW9uIG0odCxlKXtuLmJ1ZmZlcnMuY29sb3Iuc2V0Q2xlYXIodC5yLHQuZyx0LmIsZSxpKX1yZXR1cm57Z2V0Q2xlYXJDb2xvcjpmdW5jdGlvbigpe3JldHVybiBhfSxzZXRDbGVhckNvbG9yOmZ1bmN0aW9uKHQsZT0xKXthLnNldCh0KSxsPWUsbShhLGwpfSxnZXRDbGVhckFscGhhOmZ1bmN0aW9uKCl7cmV0dXJuIGx9LHNldENsZWFyQWxwaGE6ZnVuY3Rpb24odCl7bD10LG0oYSxsKX0scmVuZGVyOmZ1bmN0aW9uIGYobixpKXtsZXQgZj0hMSx1PSEwPT09aS5pc1NjZW5lP2kuYmFja2dyb3VuZDpudWxsO3UmJnUuaXNUZXh0dXJlJiYodT1lLmdldCh1KSk7Y29uc3QgZz10LnhyLGg9Zy5nZXRTZXNzaW9uJiZnLmdldFNlc3Npb24oKTtoJiYiYWRkaXRpdmUiPT09aC5lbnZpcm9ubWVudEJsZW5kTW9kZSYmKHU9bnVsbCksbnVsbD09PXU/bShhLGwpOnUmJnUuaXNDb2xvciYmKG0odSwxKSxmPSEwKSwodC5hdXRvQ2xlYXJ8fGYpJiZ0LmNsZWFyKHQuYXV0b0NsZWFyQ29sb3IsdC5hdXRvQ2xlYXJEZXB0aCx0LmF1dG9DbGVhclN0ZW5jaWwpLHUmJih1LmlzQ3ViZVRleHR1cmV8fHUubWFwcGluZz09PVNydCk/KHZvaWQgMD09PXMmJihzPW5ldyBTY3QobmV3IFJjdCgxLDEsMSksbmV3IE5jdCh7bmFtZToiQmFja2dyb3VuZEN1YmVNYXRlcmlhbCIsdW5pZm9ybXM6RWN0KCRjdC5jdWJlLnVuaWZvcm1zKSx2ZXJ0ZXhTaGFkZXI6JGN0LmN1YmUudmVydGV4U2hhZGVyLGZyYWdtZW50U2hhZGVyOiRjdC5jdWJlLmZyYWdtZW50U2hhZGVyLHNpZGU6MSxkZXB0aFRlc3Q6ITEsZGVwdGhXcml0ZTohMSxmb2c6ITF9KSkscy5nZW9tZXRyeS5kZWxldGVBdHRyaWJ1dGUoIm5vcm1hbCIpLHMuZ2VvbWV0cnkuZGVsZXRlQXR0cmlidXRlKCJ1diIpLHMub25CZWZvcmVSZW5kZXI9ZnVuY3Rpb24odCxlLG4pe3RoaXMubWF0cml4V29ybGQuY29weVBvc2l0aW9uKG4ubWF0cml4V29ybGQpfSxPYmplY3QuZGVmaW5lUHJvcGVydHkocy5tYXRlcmlhbCwiZW52TWFwIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudW5pZm9ybXMuZW52TWFwLnZhbHVlfX0pLG8udXBkYXRlKHMpKSxzLm1hdGVyaWFsLnVuaWZvcm1zLmVudk1hcC52YWx1ZT11LHMubWF0ZXJpYWwudW5pZm9ybXMuZmxpcEVudk1hcC52YWx1ZT11LmlzQ3ViZVRleHR1cmUmJiExPT09dS5pc1JlbmRlclRhcmdldFRleHR1cmU/LTE6MSxjPT09dSYmZD09PXUudmVyc2lvbiYmcD09PXQudG9uZU1hcHBpbmd8fChzLm1hdGVyaWFsLm5lZWRzVXBkYXRlPSEwLGM9dSxkPXUudmVyc2lvbixwPXQudG9uZU1hcHBpbmcpLG4udW5zaGlmdChzLHMuZ2VvbWV0cnkscy5tYXRlcmlhbCwwLDAsbnVsbCkpOnUmJnUuaXNUZXh0dXJlJiYodm9pZCAwPT09ciYmKHI9bmV3IFNjdChuZXcgS2N0KDIsMiksbmV3IE5jdCh7bmFtZToiQmFja2dyb3VuZE1hdGVyaWFsIix1bmlmb3JtczpFY3QoJGN0LmJhY2tncm91bmQudW5pZm9ybXMpLHZlcnRleFNoYWRlcjokY3QuYmFja2dyb3VuZC52ZXJ0ZXhTaGFkZXIsZnJhZ21lbnRTaGFkZXI6JGN0LmJhY2tncm91bmQuZnJhZ21lbnRTaGFkZXIsc2lkZTowLGRlcHRoVGVzdDohMSxkZXB0aFdyaXRlOiExLGZvZzohMX0pKSxyLmdlb21ldHJ5LmRlbGV0ZUF0dHJpYnV0ZSgibm9ybWFsIiksT2JqZWN0LmRlZmluZVByb3BlcnR5KHIubWF0ZXJpYWwsIm1hcCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnVuaWZvcm1zLnQyRC52YWx1ZX19KSxvLnVwZGF0ZShyKSksci5tYXRlcmlhbC51bmlmb3Jtcy50MkQudmFsdWU9dSwhMD09PXUubWF0cml4QXV0b1VwZGF0ZSYmdS51cGRhdGVNYXRyaXgoKSxyLm1hdGVyaWFsLnVuaWZvcm1zLnV2VHJhbnNmb3JtLnZhbHVlLmNvcHkodS5tYXRyaXgpLGM9PT11JiZkPT09dS52ZXJzaW9uJiZwPT09dC50b25lTWFwcGluZ3x8KHIubWF0ZXJpYWwubmVlZHNVcGRhdGU9ITAsYz11LGQ9dS52ZXJzaW9uLHA9dC50b25lTWFwcGluZyksbi51bnNoaWZ0KHIsci5nZW9tZXRyeSxyLm1hdGVyaWFsLDAsMCxudWxsKSl9fX1mdW5jdGlvbiBlZHQodCxlLG4sbyl7Y29uc3QgaT10LmdldFBhcmFtZXRlcigzNDkyMSksYT1vLmlzV2ViR0wyP251bGw6ZS5nZXQoIk9FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0Iikscj1vLmlzV2ViR0wyfHxudWxsIT09YSxzPXt9LGw9bShudWxsKTtsZXQgYz1sO2Z1bmN0aW9uIGQoZSl7cmV0dXJuIG8uaXNXZWJHTDI/dC5iaW5kVmVydGV4QXJyYXkoZSk6YS5iaW5kVmVydGV4QXJyYXlPRVMoZSl9ZnVuY3Rpb24gcChlKXtyZXR1cm4gby5pc1dlYkdMMj90LmRlbGV0ZVZlcnRleEFycmF5KGUpOmEuZGVsZXRlVmVydGV4QXJyYXlPRVMoZSl9ZnVuY3Rpb24gbSh0KXtjb25zdCBlPVtdLG49W10sbz1bXTtmb3IobGV0IHQ9MDt0PGk7dCsrKWVbdF09MCxuW3RdPTAsb1t0XT0wO3JldHVybntnZW9tZXRyeTpudWxsLHByb2dyYW06bnVsbCx3aXJlZnJhbWU6ITEsbmV3QXR0cmlidXRlczplLGVuYWJsZWRBdHRyaWJ1dGVzOm4sYXR0cmlidXRlRGl2aXNvcnM6byxvYmplY3Q6dCxhdHRyaWJ1dGVzOnt9LGluZGV4Om51bGx9fWZ1bmN0aW9uIGYoKXtjb25zdCB0PWMubmV3QXR0cmlidXRlcztmb3IobGV0IGU9MCxuPXQubGVuZ3RoO2U8bjtlKyspdFtlXT0wfWZ1bmN0aW9uIHUodCl7Zyh0LDApfWZ1bmN0aW9uIGcobixpKXtjb25zdCBhPWMuZW5hYmxlZEF0dHJpYnV0ZXMscj1jLmF0dHJpYnV0ZURpdmlzb3JzO2lmKGMubmV3QXR0cmlidXRlc1tuXT0xLDA9PT1hW25dJiYodC5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShuKSxhW25dPTEpLHJbbl0hPT1pKXsoby5pc1dlYkdMMj90OmUuZ2V0KCJBTkdMRV9pbnN0YW5jZWRfYXJyYXlzIikpW28uaXNXZWJHTDI/InZlcnRleEF0dHJpYkRpdmlzb3IiOiJ2ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUiXShuLGkpLHJbbl09aX19ZnVuY3Rpb24gaCgpe2NvbnN0IGU9Yy5uZXdBdHRyaWJ1dGVzLG49Yy5lbmFibGVkQXR0cmlidXRlcztmb3IobGV0IG89MCxpPW4ubGVuZ3RoO288aTtvKyspbltvXSE9PWVbb10mJih0LmRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheShvKSxuW29dPTApfWZ1bmN0aW9uIGIoZSxuLGksYSxyLHMpeyEwIT09by5pc1dlYkdMMnx8NTEyNCE9PWkmJjUxMjUhPT1pP3QudmVydGV4QXR0cmliUG9pbnRlcihlLG4saSxhLHIscyk6dC52ZXJ0ZXhBdHRyaWJJUG9pbnRlcihlLG4saSxyLHMpfWZ1bmN0aW9uIHkoKXtfKCksYyE9PWwmJihjPWwsZChjLm9iamVjdCkpfWZ1bmN0aW9uIF8oKXtsLmdlb21ldHJ5PW51bGwsbC5wcm9ncmFtPW51bGwsbC53aXJlZnJhbWU9ITF9cmV0dXJue3NldHVwOmZ1bmN0aW9uIEMoaSxsLHAseSxfKXtsZXQgQz0hMTtpZihyKXtjb25zdCBlPShmdW5jdGlvbiBNKGUsbixpKXtjb25zdCByPSEwPT09aS53aXJlZnJhbWU7bGV0IGw9c1tlLmlkXTt2b2lkIDA9PT1sJiYobD17fSxzW2UuaWRdPWwpO2xldCBjPWxbbi5pZF07dm9pZCAwPT09YyYmKGM9e30sbFtuLmlkXT1jKTtsZXQgZD1jW3JdO3ZvaWQgMD09PWQmJihkPW0oKGZ1bmN0aW9uIHAoKXtyZXR1cm4gby5pc1dlYkdMMj90LmNyZWF0ZVZlcnRleEFycmF5KCk6YS5jcmVhdGVWZXJ0ZXhBcnJheU9FUygpfSkoKSksY1tyXT1kKTtyZXR1cm4gZH0pKHkscCxsKTtjIT09ZSYmKGM9ZSxkKGMub2JqZWN0KSksQz0oZnVuY3Rpb24gdih0LGUpe2NvbnN0IG49Yy5hdHRyaWJ1dGVzLG89dC5hdHRyaWJ1dGVzO2xldCBpPTA7Zm9yKGNvbnN0IHQgaW4gbyl7Y29uc3QgZT1uW3RdLGE9b1t0XTtpZih2b2lkIDA9PT1lKXJldHVybiEwO2lmKGUuYXR0cmlidXRlIT09YSlyZXR1cm4hMDtpZihlLmRhdGEhPT1hLmRhdGEpcmV0dXJuITA7aSsrfXJldHVybiBjLmF0dHJpYnV0ZXNOdW0hPT1pfHxjLmluZGV4IT09ZX0pKHksXyksQyYmKGZ1bmN0aW9uIHgodCxlKXtjb25zdCBuPXt9LG89dC5hdHRyaWJ1dGVzO2xldCBpPTA7Zm9yKGNvbnN0IHQgaW4gbyl7Y29uc3QgZT1vW3RdLGE9e307YS5hdHRyaWJ1dGU9ZSxlLmRhdGEmJihhLmRhdGE9ZS5kYXRhKSxuW3RdPWEsaSsrfWMuYXR0cmlidXRlcz1uLGMuYXR0cmlidXRlc051bT1pLGMuaW5kZXg9ZX0pKHksXyl9ZWxzZXtjb25zdCB0PSEwPT09bC53aXJlZnJhbWU7Yy5nZW9tZXRyeT09PXkuaWQmJmMucHJvZ3JhbT09PXAuaWQmJmMud2lyZWZyYW1lPT09dHx8KGMuZ2VvbWV0cnk9eS5pZCxjLnByb2dyYW09cC5pZCxjLndpcmVmcmFtZT10LEM9ITApfSEwPT09aS5pc0luc3RhbmNlZE1lc2gmJihDPSEwKSxudWxsIT09XyYmbi51cGRhdGUoXywzNDk2MyksQyYmKCEoZnVuY3Rpb24gTyhpLGEscixzKXtpZighMT09PW8uaXNXZWJHTDImJihpLmlzSW5zdGFuY2VkTWVzaHx8cy5pc0luc3RhbmNlZEJ1ZmZlckdlb21ldHJ5KSYmbnVsbD09PWUuZ2V0KCJBTkdMRV9pbnN0YW5jZWRfYXJyYXlzIikpcmV0dXJuO2YoKTtjb25zdCBsPXMuYXR0cmlidXRlcyxjPXIuZ2V0QXR0cmlidXRlcygpLGQ9YS5kZWZhdWx0QXR0cmlidXRlVmFsdWVzO2Zvcihjb25zdCBlIGluIGMpe2NvbnN0IG89Y1tlXTtpZihvPj0wKXtjb25zdCBhPWxbZV07aWYodm9pZCAwIT09YSl7Y29uc3QgZT1hLm5vcm1hbGl6ZWQsaT1hLml0ZW1TaXplLHI9bi5nZXQoYSk7aWYodm9pZCAwPT09ciljb250aW51ZTtjb25zdCBsPXIuYnVmZmVyLGM9ci50eXBlLGQ9ci5ieXRlc1BlckVsZW1lbnQ7aWYoYS5pc0ludGVybGVhdmVkQnVmZmVyQXR0cmlidXRlKXtjb25zdCBuPWEuZGF0YSxyPW4uc3RyaWRlLHA9YS5vZmZzZXQ7biYmbi5pc0luc3RhbmNlZEludGVybGVhdmVkQnVmZmVyPyhnKG8sbi5tZXNoUGVyQXR0cmlidXRlKSx2b2lkIDA9PT1zLl9tYXhJbnN0YW5jZUNvdW50JiYocy5fbWF4SW5zdGFuY2VDb3VudD1uLm1lc2hQZXJBdHRyaWJ1dGUqbi5jb3VudCkpOnUobyksdC5iaW5kQnVmZmVyKDM0OTYyLGwpLGIobyxpLGMsZSxyKmQscCpkKX1lbHNlIGEuaXNJbnN0YW5jZWRCdWZmZXJBdHRyaWJ1dGU/KGcobyxhLm1lc2hQZXJBdHRyaWJ1dGUpLHZvaWQgMD09PXMuX21heEluc3RhbmNlQ291bnQmJihzLl9tYXhJbnN0YW5jZUNvdW50PWEubWVzaFBlckF0dHJpYnV0ZSphLmNvdW50KSk6dShvKSx0LmJpbmRCdWZmZXIoMzQ5NjIsbCksYihvLGksYyxlLDAsMCl9ZWxzZSBpZigiaW5zdGFuY2VNYXRyaXgiPT09ZSl7Y29uc3QgZT1uLmdldChpLmluc3RhbmNlTWF0cml4KTtpZih2b2lkIDA9PT1lKWNvbnRpbnVlO2NvbnN0IGE9ZS5idWZmZXIscj1lLnR5cGU7ZyhvKzAsMSksZyhvKzEsMSksZyhvKzIsMSksZyhvKzMsMSksdC5iaW5kQnVmZmVyKDM0OTYyLGEpLHQudmVydGV4QXR0cmliUG9pbnRlcihvKzAsNCxyLCExLDY0LDApLHQudmVydGV4QXR0cmliUG9pbnRlcihvKzEsNCxyLCExLDY0LDE2KSx0LnZlcnRleEF0dHJpYlBvaW50ZXIobysyLDQsciwhMSw2NCwzMiksdC52ZXJ0ZXhBdHRyaWJQb2ludGVyKG8rMyw0LHIsITEsNjQsNDgpfWVsc2UgaWYoImluc3RhbmNlQ29sb3IiPT09ZSl7Y29uc3QgZT1uLmdldChpLmluc3RhbmNlQ29sb3IpO2lmKHZvaWQgMD09PWUpY29udGludWU7Y29uc3QgYT1lLmJ1ZmZlcixyPWUudHlwZTtnKG8sMSksdC5iaW5kQnVmZmVyKDM0OTYyLGEpLHQudmVydGV4QXR0cmliUG9pbnRlcihvLDMsciwhMSwxMiwwKX1lbHNlIGlmKHZvaWQgMCE9PWQpe2NvbnN0IG49ZFtlXTtpZih2b2lkIDAhPT1uKXN3aXRjaChuLmxlbmd0aCl7Y2FzZSAyOnQudmVydGV4QXR0cmliMmZ2KG8sbik7YnJlYWs7Y2FzZSAzOnQudmVydGV4QXR0cmliM2Z2KG8sbik7YnJlYWs7Y2FzZSA0OnQudmVydGV4QXR0cmliNGZ2KG8sbik7YnJlYWs7ZGVmYXVsdDp0LnZlcnRleEF0dHJpYjFmdihvLG4pfX19fWgoKX0pKGksbCxwLHkpLG51bGwhPT1fJiZ0LmJpbmRCdWZmZXIoMzQ5NjMsbi5nZXQoXykuYnVmZmVyKSl9LHJlc2V0OnkscmVzZXREZWZhdWx0U3RhdGU6XyxkaXNwb3NlOmZ1bmN0aW9uIE0oKXt5KCk7Zm9yKGNvbnN0IHQgaW4gcyl7Y29uc3QgZT1zW3RdO2Zvcihjb25zdCB0IGluIGUpe2NvbnN0IG49ZVt0XTtmb3IoY29uc3QgdCBpbiBuKXAoblt0XS5vYmplY3QpLGRlbGV0ZSBuW3RdO2RlbGV0ZSBlW3RdfWRlbGV0ZSBzW3RdfX0scmVsZWFzZVN0YXRlc09mR2VvbWV0cnk6ZnVuY3Rpb24gdih0KXtpZih2b2lkIDA9PT1zW3QuaWRdKXJldHVybjtjb25zdCBlPXNbdC5pZF07Zm9yKGNvbnN0IHQgaW4gZSl7Y29uc3Qgbj1lW3RdO2Zvcihjb25zdCB0IGluIG4pcChuW3RdLm9iamVjdCksZGVsZXRlIG5bdF07ZGVsZXRlIGVbdF19ZGVsZXRlIHNbdC5pZF19LHJlbGVhc2VTdGF0ZXNPZlByb2dyYW06ZnVuY3Rpb24geCh0KXtmb3IoY29uc3QgZSBpbiBzKXtjb25zdCBuPXNbZV07aWYodm9pZCAwPT09blt0LmlkXSljb250aW51ZTtjb25zdCBvPW5bdC5pZF07Zm9yKGNvbnN0IHQgaW4gbylwKG9bdF0ub2JqZWN0KSxkZWxldGUgb1t0XTtkZWxldGUgblt0LmlkXX19LGluaXRBdHRyaWJ1dGVzOmYsZW5hYmxlQXR0cmlidXRlOnUsZGlzYWJsZVVudXNlZEF0dHJpYnV0ZXM6aH19ZnVuY3Rpb24gbmR0KHQsZSxuLG8pe2NvbnN0IGk9by5pc1dlYkdMMjtsZXQgYTt0aGlzLnNldE1vZGU9ZnVuY3Rpb24gcih0KXthPXR9LHRoaXMucmVuZGVyPWZ1bmN0aW9uIHMoZSxvKXt0LmRyYXdBcnJheXMoYSxlLG8pLG4udXBkYXRlKG8sYSwxKX0sdGhpcy5yZW5kZXJJbnN0YW5jZXM9ZnVuY3Rpb24gbChvLHIscyl7aWYoMD09PXMpcmV0dXJuO2xldCBsLGM7aWYoaSlsPXQsYz0iZHJhd0FycmF5c0luc3RhbmNlZCI7ZWxzZSBpZihsPWUuZ2V0KCJBTkdMRV9pbnN0YW5jZWRfYXJyYXlzIiksYz0iZHJhd0FycmF5c0luc3RhbmNlZEFOR0xFIixudWxsPT09bClyZXR1cm4gdm9pZCBjb25zb2xlLmVycm9yKCJUSFJFRS5XZWJHTEJ1ZmZlclJlbmRlcmVyOiB1c2luZyBUSFJFRS5JbnN0YW5jZWRCdWZmZXJHZW9tZXRyeSBidXQgaGFyZHdhcmUgZG9lcyBub3Qgc3VwcG9ydCBleHRlbnNpb24gQU5HTEVfaW5zdGFuY2VkX2FycmF5cy4iKTtsW2NdKGEsbyxyLHMpLG4udXBkYXRlKHIsYSxzKX19ZnVuY3Rpb24gb2R0KHQsZSxuKXtsZXQgbztmdW5jdGlvbiBpKGUpe2lmKCJoaWdocCI9PT1lKXtpZih0LmdldFNoYWRlclByZWNpc2lvbkZvcm1hdCgzNTYzMywzNjMzOCkucHJlY2lzaW9uPjAmJnQuZ2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KDM1NjMyLDM2MzM4KS5wcmVjaXNpb24+MClyZXR1cm4iaGlnaHAiO2U9Im1lZGl1bXAifXJldHVybiJtZWRpdW1wIj09PWUmJnQuZ2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KDM1NjMzLDM2MzM3KS5wcmVjaXNpb24+MCYmdC5nZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQoMzU2MzIsMzYzMzcpLnByZWNpc2lvbj4wPyJtZWRpdW1wIjoibG93cCJ9Y29uc3QgYT0idW5kZWZpbmVkIiE9dHlwZW9mIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQmJnQgaW5zdGFuY2VvZiBXZWJHTDJSZW5kZXJpbmdDb250ZXh0fHwidW5kZWZpbmVkIiE9dHlwZW9mIFdlYkdMMkNvbXB1dGVSZW5kZXJpbmdDb250ZXh0JiZ0IGluc3RhbmNlb2YgV2ViR0wyQ29tcHV0ZVJlbmRlcmluZ0NvbnRleHQ7bGV0IHI9dm9pZCAwIT09bi5wcmVjaXNpb24/bi5wcmVjaXNpb246ImhpZ2hwIjtjb25zdCBzPWkocik7cyE9PXImJihjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IixyLCJub3Qgc3VwcG9ydGVkLCB1c2luZyIscywiaW5zdGVhZC4iKSxyPXMpO2NvbnN0IGw9YXx8ZS5oYXMoIldFQkdMX2RyYXdfYnVmZmVycyIpLGM9ITA9PT1uLmxvZ2FyaXRobWljRGVwdGhCdWZmZXIsZD10LmdldFBhcmFtZXRlcigzNDkzMCkscD10LmdldFBhcmFtZXRlcigzNTY2MCksbT10LmdldFBhcmFtZXRlcigzMzc5KSxmPXQuZ2V0UGFyYW1ldGVyKDM0MDc2KSx1PXQuZ2V0UGFyYW1ldGVyKDM0OTIxKSxnPXQuZ2V0UGFyYW1ldGVyKDM2MzQ3KSxoPXQuZ2V0UGFyYW1ldGVyKDM2MzQ4KSxiPXQuZ2V0UGFyYW1ldGVyKDM2MzQ5KSx5PXA+MCxfPWF8fGUuaGFzKCJPRVNfdGV4dHVyZV9mbG9hdCIpO3JldHVybntpc1dlYkdMMjphLGRyYXdCdWZmZXJzOmwsZ2V0TWF4QW5pc290cm9weTpmdW5jdGlvbiBDKCl7aWYodm9pZCAwIT09bylyZXR1cm4gbztpZighMD09PWUuaGFzKCJFWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMiKSl7Y29uc3Qgbj1lLmdldCgiRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIik7bz10LmdldFBhcmFtZXRlcihuLk1BWF9URVhUVVJFX01BWF9BTklTT1RST1BZX0VYVCl9ZWxzZSBvPTA7cmV0dXJuIG99LGdldE1heFByZWNpc2lvbjppLHByZWNpc2lvbjpyLGxvZ2FyaXRobWljRGVwdGhCdWZmZXI6YyxtYXhUZXh0dXJlczpkLG1heFZlcnRleFRleHR1cmVzOnAsbWF4VGV4dHVyZVNpemU6bSxtYXhDdWJlbWFwU2l6ZTpmLG1heEF0dHJpYnV0ZXM6dSxtYXhWZXJ0ZXhVbmlmb3JtczpnLG1heFZhcnlpbmdzOmgsbWF4RnJhZ21lbnRVbmlmb3JtczpiLHZlcnRleFRleHR1cmVzOnksZmxvYXRGcmFnbWVudFRleHR1cmVzOl8sZmxvYXRWZXJ0ZXhUZXh0dXJlczp5JiZfLG1heFNhbXBsZXM6YT90LmdldFBhcmFtZXRlcigzNjE4Myk6MH19ZnVuY3Rpb24gaWR0KHQpe2NvbnN0IGU9dGhpcztsZXQgbj1udWxsLG89MCxpPSExLGE9ITE7Y29uc3Qgcj1uZXcgV2N0LHM9bmV3IGhzdCxsPXt2YWx1ZTpudWxsLG5lZWRzVXBkYXRlOiExfTtmdW5jdGlvbiBjKCl7bC52YWx1ZSE9PW4mJihsLnZhbHVlPW4sbC5uZWVkc1VwZGF0ZT1vPjApLGUubnVtUGxhbmVzPW8sZS5udW1JbnRlcnNlY3Rpb249MH1mdW5jdGlvbiBkKHQsbixvLGkpe2NvbnN0IGE9bnVsbCE9PXQ/dC5sZW5ndGg6MDtsZXQgYz1udWxsO2lmKDAhPT1hKXtpZihjPWwudmFsdWUsITAhPT1pfHxudWxsPT09Yyl7Y29uc3QgZT1vKzQqYSxpPW4ubWF0cml4V29ybGRJbnZlcnNlO3MuZ2V0Tm9ybWFsTWF0cml4KGkpLChudWxsPT09Y3x8Yy5sZW5ndGg8ZSkmJihjPW5ldyBGbG9hdDMyQXJyYXkoZSkpO2ZvcihsZXQgZT0wLG49bztlIT09YTsrK2Usbis9NClyLmNvcHkodFtlXSkuYXBwbHlNYXRyaXg0KGkscyksci5ub3JtYWwudG9BcnJheShjLG4pLGNbbiszXT1yLmNvbnN0YW50fWwudmFsdWU9YyxsLm5lZWRzVXBkYXRlPSEwfXJldHVybiBlLm51bVBsYW5lcz1hLGUubnVtSW50ZXJzZWN0aW9uPTAsY310aGlzLnVuaWZvcm09bCx0aGlzLm51bVBsYW5lcz0wLHRoaXMubnVtSW50ZXJzZWN0aW9uPTAsdGhpcy5pbml0PWZ1bmN0aW9uKHQsZSxhKXtjb25zdCByPTAhPT10Lmxlbmd0aHx8ZXx8MCE9PW98fGk7cmV0dXJuIGk9ZSxuPWQodCxhLDApLG89dC5sZW5ndGgscn0sdGhpcy5iZWdpblNoYWRvd3M9ZnVuY3Rpb24oKXthPSEwLGQobnVsbCl9LHRoaXMuZW5kU2hhZG93cz1mdW5jdGlvbigpe2E9ITEsYygpfSx0aGlzLnNldFN0YXRlPWZ1bmN0aW9uKGUscixzKXtjb25zdCBwPWUuY2xpcHBpbmdQbGFuZXMsbT1lLmNsaXBJbnRlcnNlY3Rpb24sZj1lLmNsaXBTaGFkb3dzLHU9dC5nZXQoZSk7aWYoIWl8fG51bGw9PT1wfHwwPT09cC5sZW5ndGh8fGEmJiFmKWE/ZChudWxsKTpjKCk7ZWxzZXtjb25zdCB0PWE/MDpvLGU9NCp0O2xldCBpPXUuY2xpcHBpbmdTdGF0ZXx8bnVsbDtsLnZhbHVlPWksaT1kKHAscixlLHMpO2ZvcihsZXQgdD0wO3QhPT1lOysrdClpW3RdPW5bdF07dS5jbGlwcGluZ1N0YXRlPWksdGhpcy5udW1JbnRlcnNlY3Rpb249bT90aGlzLm51bVBsYW5lczowLHRoaXMubnVtUGxhbmVzKz10fX19ZnVuY3Rpb24gYWR0KHQpe2xldCBlPW5ldyBXZWFrTWFwO2Z1bmN0aW9uIG4odCxlKXtyZXR1cm4gMzAzPT09ZT90Lm1hcHBpbmc9d3J0OjMwND09PWUmJih0Lm1hcHBpbmc9a3J0KSx0fWZ1bmN0aW9uIG8odCl7Y29uc3Qgbj10LnRhcmdldDtuLnJlbW92ZUV2ZW50TGlzdGVuZXIoImRpc3Bvc2UiLG8pO2NvbnN0IGk9ZS5nZXQobik7dm9pZCAwIT09aSYmKGUuZGVsZXRlKG4pLGkuZGlzcG9zZSgpKX1yZXR1cm57Z2V0OmZ1bmN0aW9uIGkoYSl7aWYoYSYmYS5pc1RleHR1cmUmJiExPT09YS5pc1JlbmRlclRhcmdldFRleHR1cmUpe2NvbnN0IGk9YS5tYXBwaW5nO2lmKDMwMz09PWl8fDMwND09PWkpe2lmKGUuaGFzKGEpKXtyZXR1cm4gbihlLmdldChhKS50ZXh0dXJlLGEubWFwcGluZyl9e2NvbnN0IGk9YS5pbWFnZTtpZihpJiZpLmhlaWdodD4wKXtjb25zdCByPXQuZ2V0UmVuZGVyVGFyZ2V0KCkscz1uZXcgQmN0KGkuaGVpZ2h0LzIpO3JldHVybiBzLmZyb21FcXVpcmVjdGFuZ3VsYXJUZXh0dXJlKHQsYSksZS5zZXQoYSxzKSx0LnNldFJlbmRlclRhcmdldChyKSxhLmFkZEV2ZW50TGlzdGVuZXIoImRpc3Bvc2UiLG8pLG4ocy50ZXh0dXJlLGEubWFwcGluZyl9cmV0dXJuIG51bGx9fX1yZXR1cm4gYX0sZGlzcG9zZTpmdW5jdGlvbiBhKCl7ZT1uZXcgV2Vha01hcH19fSRjdC5waHlzaWNhbD17dW5pZm9ybXM6QWN0KFskY3Quc3RhbmRhcmQudW5pZm9ybXMse2NsZWFyY29hdDp7dmFsdWU6MH0sY2xlYXJjb2F0TWFwOnt2YWx1ZTpudWxsfSxjbGVhcmNvYXRSb3VnaG5lc3M6e3ZhbHVlOjB9LGNsZWFyY29hdFJvdWdobmVzc01hcDp7dmFsdWU6bnVsbH0sY2xlYXJjb2F0Tm9ybWFsU2NhbGU6e3ZhbHVlOm5ldyBnc3QoMSwxKX0sY2xlYXJjb2F0Tm9ybWFsTWFwOnt2YWx1ZTpudWxsfSxzaGVlbjp7dmFsdWU6bmV3IFpsdCgwKX0sdHJhbnNtaXNzaW9uOnt2YWx1ZTowfSx0cmFuc21pc3Npb25NYXA6e3ZhbHVlOm51bGx9LHRyYW5zbWlzc2lvblNhbXBsZXJTaXplOnt2YWx1ZTpuZXcgZ3N0fSx0cmFuc21pc3Npb25TYW1wbGVyTWFwOnt2YWx1ZTpudWxsfSx0aGlja25lc3M6e3ZhbHVlOjB9LHRoaWNrbmVzc01hcDp7dmFsdWU6bnVsbH0sYXR0ZW51YXRpb25EaXN0YW5jZTp7dmFsdWU6MH0sYXR0ZW51YXRpb25UaW50Ont2YWx1ZTpuZXcgWmx0KDApfSxzcGVjdWxhckludGVuc2l0eTp7dmFsdWU6MH0sc3BlY3VsYXJJbnRlbnNpdHlNYXA6e3ZhbHVlOm51bGx9LHNwZWN1bGFyVGludDp7dmFsdWU6bmV3IFpsdCgxLDEsMSl9LHNwZWN1bGFyVGludE1hcDp7dmFsdWU6bnVsbH19XSksdmVydGV4U2hhZGVyOkpjdC5tZXNocGh5c2ljYWxfdmVydCxmcmFnbWVudFNoYWRlcjpKY3QubWVzaHBoeXNpY2FsX2ZyYWd9O2NsYXNzIHJkdCBleHRlbmRzIHpjdHtjb25zdHJ1Y3Rvcih0PS0xLGU9MSxuPTEsbz0tMSxpPS4xLGE9MmUzKXtzdXBlcigpLHRoaXMudHlwZT0iT3J0aG9ncmFwaGljQ2FtZXJhIix0aGlzLnpvb209MSx0aGlzLnZpZXc9bnVsbCx0aGlzLmxlZnQ9dCx0aGlzLnJpZ2h0PWUsdGhpcy50b3A9bix0aGlzLmJvdHRvbT1vLHRoaXMubmVhcj1pLHRoaXMuZmFyPWEsdGhpcy51cGRhdGVQcm9qZWN0aW9uTWF0cml4KCl9Y29weSh0LGUpe3JldHVybiBzdXBlci5jb3B5KHQsZSksdGhpcy5sZWZ0PXQubGVmdCx0aGlzLnJpZ2h0PXQucmlnaHQsdGhpcy50b3A9dC50b3AsdGhpcy5ib3R0b209dC5ib3R0b20sdGhpcy5uZWFyPXQubmVhcix0aGlzLmZhcj10LmZhcix0aGlzLnpvb209dC56b29tLHRoaXMudmlldz1udWxsPT09dC52aWV3P251bGw6T2JqZWN0LmFzc2lnbih7fSx0LnZpZXcpLHRoaXN9c2V0Vmlld09mZnNldCh0LGUsbixvLGksYSl7bnVsbD09PXRoaXMudmlldyYmKHRoaXMudmlldz17ZW5hYmxlZDohMCxmdWxsV2lkdGg6MSxmdWxsSGVpZ2h0OjEsb2Zmc2V0WDowLG9mZnNldFk6MCx3aWR0aDoxLGhlaWdodDoxfSksdGhpcy52aWV3LmVuYWJsZWQ9ITAsdGhpcy52aWV3LmZ1bGxXaWR0aD10LHRoaXMudmlldy5mdWxsSGVpZ2h0PWUsdGhpcy52aWV3Lm9mZnNldFg9bix0aGlzLnZpZXcub2Zmc2V0WT1vLHRoaXMudmlldy53aWR0aD1pLHRoaXMudmlldy5oZWlnaHQ9YSx0aGlzLnVwZGF0ZVByb2plY3Rpb25NYXRyaXgoKX1jbGVhclZpZXdPZmZzZXQoKXtudWxsIT09dGhpcy52aWV3JiYodGhpcy52aWV3LmVuYWJsZWQ9ITEpLHRoaXMudXBkYXRlUHJvamVjdGlvbk1hdHJpeCgpfXVwZGF0ZVByb2plY3Rpb25NYXRyaXgoKXtjb25zdCB0PSh0aGlzLnJpZ2h0LXRoaXMubGVmdCkvKDIqdGhpcy56b29tKSxlPSh0aGlzLnRvcC10aGlzLmJvdHRvbSkvKDIqdGhpcy56b29tKSxuPSh0aGlzLnJpZ2h0K3RoaXMubGVmdCkvMixvPSh0aGlzLnRvcCt0aGlzLmJvdHRvbSkvMjtsZXQgaT1uLXQsYT1uK3Qscj1vK2Uscz1vLWU7aWYobnVsbCE9PXRoaXMudmlldyYmdGhpcy52aWV3LmVuYWJsZWQpe2NvbnN0IHQ9KHRoaXMucmlnaHQtdGhpcy5sZWZ0KS90aGlzLnZpZXcuZnVsbFdpZHRoL3RoaXMuem9vbSxlPSh0aGlzLnRvcC10aGlzLmJvdHRvbSkvdGhpcy52aWV3LmZ1bGxIZWlnaHQvdGhpcy56b29tO2krPXQqdGhpcy52aWV3Lm9mZnNldFgsYT1pK3QqdGhpcy52aWV3LndpZHRoLHItPWUqdGhpcy52aWV3Lm9mZnNldFkscz1yLWUqdGhpcy52aWV3LmhlaWdodH10aGlzLnByb2plY3Rpb25NYXRyaXgubWFrZU9ydGhvZ3JhcGhpYyhpLGEscixzLHRoaXMubmVhcix0aGlzLmZhciksdGhpcy5wcm9qZWN0aW9uTWF0cml4SW52ZXJzZS5jb3B5KHRoaXMucHJvamVjdGlvbk1hdHJpeCkuaW52ZXJ0KCl9dG9KU09OKHQpe2NvbnN0IGU9c3VwZXIudG9KU09OKHQpO3JldHVybiBlLm9iamVjdC56b29tPXRoaXMuem9vbSxlLm9iamVjdC5sZWZ0PXRoaXMubGVmdCxlLm9iamVjdC5yaWdodD10aGlzLnJpZ2h0LGUub2JqZWN0LnRvcD10aGlzLnRvcCxlLm9iamVjdC5ib3R0b209dGhpcy5ib3R0b20sZS5vYmplY3QubmVhcj10aGlzLm5lYXIsZS5vYmplY3QuZmFyPXRoaXMuZmFyLG51bGwhPT10aGlzLnZpZXcmJihlLm9iamVjdC52aWV3PU9iamVjdC5hc3NpZ24oe30sdGhpcy52aWV3KSksZX19cmR0LnByb3RvdHlwZS5pc09ydGhvZ3JhcGhpY0NhbWVyYT0hMDtjbGFzcyBzZHQgZXh0ZW5kcyBOY3R7Y29uc3RydWN0b3IodCl7c3VwZXIodCksdGhpcy50eXBlPSJSYXdTaGFkZXJNYXRlcmlhbCJ9fXNkdC5wcm90b3R5cGUuaXNSYXdTaGFkZXJNYXRlcmlhbD0hMDtjb25zdCBsZHQ9TWF0aC5wb3coMiw4KSxjZHQ9Wy4xMjUsLjIxNSwuMzUsLjQ0NiwuNTI2LC41ODJdLGRkdD01K2NkdC5sZW5ndGgscGR0PTIwLG1kdD17W1FydF06MCxbJHJ0XToxLFtlc3RdOjIsMzAwNDozLDMwMDU6NCwzMDA2OjUsW3RzdF06Nn0sZmR0PW5ldyBYbHQoe3NpZGU6MSxkZXB0aFdyaXRlOiExLGRlcHRoVGVzdDohMX0pLHVkdD1uZXcgU2N0KG5ldyBSY3QsZmR0KSxnZHQ9bmV3IHJkdCx7X2xvZFBsYW5lczpoZHQsX3NpemVMb2RzOmJkdCxfc2lnbWFzOnlkdH09a2R0KCksX2R0PW5ldyBabHQ7bGV0IENkdD1udWxsO2NvbnN0IE1kdD0oMStNYXRoLnNxcnQoNSkpLzIsdmR0PTEvTWR0LHhkdD1bbmV3IHdzdCgxLDEsMSksbmV3IHdzdCgtMSwxLDEpLG5ldyB3c3QoMSwxLC0xKSxuZXcgd3N0KC0xLDEsLTEpLG5ldyB3c3QoMCxNZHQsdmR0KSxuZXcgd3N0KDAsTWR0LC12ZHQpLG5ldyB3c3QodmR0LDAsTWR0KSxuZXcgd3N0KC12ZHQsMCxNZHQpLG5ldyB3c3QoTWR0LHZkdCwwKSxuZXcgd3N0KC1NZHQsdmR0LDApXTtmdW5jdGlvbiBPZHQodCl7Y29uc3QgZT1NYXRoLm1heCh0LnIsdC5nLHQuYiksbj1NYXRoLm1pbihNYXRoLm1heChNYXRoLmNlaWwoTWF0aC5sb2cyKGUpKSwtMTI4KSwxMjcpO3QubXVsdGlwbHlTY2FsYXIoTWF0aC5wb3coMiwtbikpO3JldHVybihuKzEyOCkvMjU1fWNsYXNzIFBkdHtjb25zdHJ1Y3Rvcih0KXt0aGlzLl9yZW5kZXJlcj10LHRoaXMuX3BpbmdQb25nUmVuZGVyVGFyZ2V0PW51bGwsdGhpcy5fYmx1ck1hdGVyaWFsPShmdW5jdGlvbiBlKHQpe2NvbnN0IGU9bmV3IEZsb2F0MzJBcnJheSh0KSxuPW5ldyB3c3QoMCwxLDApO3JldHVybiBuZXcgc2R0KHtuYW1lOiJTcGhlcmljYWxHYXVzc2lhbkJsdXIiLGRlZmluZXM6e246dH0sdW5pZm9ybXM6e2Vudk1hcDp7dmFsdWU6bnVsbH0sc2FtcGxlczp7dmFsdWU6MX0sd2VpZ2h0czp7dmFsdWU6ZX0sbGF0aXR1ZGluYWw6e3ZhbHVlOiExfSxkVGhldGE6e3ZhbHVlOjB9LG1pcEludDp7dmFsdWU6MH0scG9sZUF4aXM6e3ZhbHVlOm59LGlucHV0RW5jb2Rpbmc6e3ZhbHVlOm1kdFszZTNdfSxvdXRwdXRFbmNvZGluZzp7dmFsdWU6bWR0WzNlM119fSx2ZXJ0ZXhTaGFkZXI6QWR0KCksZnJhZ21lbnRTaGFkZXI6YFxuXG5cdFx0XHRwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcblx0XHRcdHByZWNpc2lvbiBtZWRpdW1wIGludDtcblxuXHRcdFx0dmFyeWluZyB2ZWMzIHZPdXRwdXREaXJlY3Rpb247XG5cblx0XHRcdHVuaWZvcm0gc2FtcGxlcjJEIGVudk1hcDtcblx0XHRcdHVuaWZvcm0gaW50IHNhbXBsZXM7XG5cdFx0XHR1bmlmb3JtIGZsb2F0IHdlaWdodHNbIG4gXTtcblx0XHRcdHVuaWZvcm0gYm9vbCBsYXRpdHVkaW5hbDtcblx0XHRcdHVuaWZvcm0gZmxvYXQgZFRoZXRhO1xuXHRcdFx0dW5pZm9ybSBmbG9hdCBtaXBJbnQ7XG5cdFx0XHR1bmlmb3JtIHZlYzMgcG9sZUF4aXM7XG5cblx0XHRcdCR7VGR0KCl9XG5cblx0XHRcdCNkZWZpbmUgRU5WTUFQX1RZUEVfQ1VCRV9VVlxuXHRcdFx0I2luY2x1ZGUgPGN1YmVfdXZfcmVmbGVjdGlvbl9mcmFnbWVudD5cblxuXHRcdFx0dmVjMyBnZXRTYW1wbGUoIGZsb2F0IHRoZXRhLCB2ZWMzIGF4aXMgKSB7XG5cblx0XHRcdFx0ZmxvYXQgY29zVGhldGEgPSBjb3MoIHRoZXRhICk7XG5cdFx0XHRcdC8vIFJvZHJpZ3VlcycgYXhpcy1hbmdsZSByb3RhdGlvblxuXHRcdFx0XHR2ZWMzIHNhbXBsZURpcmVjdGlvbiA9IHZPdXRwdXREaXJlY3Rpb24gKiBjb3NUaGV0YVxuXHRcdFx0XHRcdCsgY3Jvc3MoIGF4aXMsIHZPdXRwdXREaXJlY3Rpb24gKSAqIHNpbiggdGhldGEgKVxuXHRcdFx0XHRcdCsgYXhpcyAqIGRvdCggYXhpcywgdk91dHB1dERpcmVjdGlvbiApICogKCAxLjAgLSBjb3NUaGV0YSApO1xuXG5cdFx0XHRcdHJldHVybiBiaWxpbmVhckN1YmVVViggZW52TWFwLCBzYW1wbGVEaXJlY3Rpb24sIG1pcEludCApO1xuXG5cdFx0XHR9XG5cblx0XHRcdHZvaWQgbWFpbigpIHtcblxuXHRcdFx0XHR2ZWMzIGF4aXMgPSBsYXRpdHVkaW5hbCA/IHBvbGVBeGlzIDogY3Jvc3MoIHBvbGVBeGlzLCB2T3V0cHV0RGlyZWN0aW9uICk7XG5cblx0XHRcdFx0aWYgKCBhbGwoIGVxdWFsKCBheGlzLCB2ZWMzKCAwLjAgKSApICkgKSB7XG5cblx0XHRcdFx0XHRheGlzID0gdmVjMyggdk91dHB1dERpcmVjdGlvbi56LCAwLjAsIC0gdk91dHB1dERpcmVjdGlvbi54ICk7XG5cblx0XHRcdFx0fVxuXG5cdFx0XHRcdGF4aXMgPSBub3JtYWxpemUoIGF4aXMgKTtcblxuXHRcdFx0XHRnbF9GcmFnQ29sb3IgPSB2ZWM0KCAwLjAsIDAuMCwgMC4wLCAxLjAgKTtcblx0XHRcdFx0Z2xfRnJhZ0NvbG9yLnJnYiArPSB3ZWlnaHRzWyAwIF0gKiBnZXRTYW1wbGUoIDAuMCwgYXhpcyApO1xuXG5cdFx0XHRcdGZvciAoIGludCBpID0gMTsgaSA8IG47IGkrKyApIHtcblxuXHRcdFx0XHRcdGlmICggaSA+PSBzYW1wbGVzICkge1xuXG5cdFx0XHRcdFx0XHRicmVhaztcblxuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdGZsb2F0IHRoZXRhID0gZFRoZXRhICogZmxvYXQoIGkgKTtcblx0XHRcdFx0XHRnbF9GcmFnQ29sb3IucmdiICs9IHdlaWdodHNbIGkgXSAqIGdldFNhbXBsZSggLTEuMCAqIHRoZXRhLCBheGlzICk7XG5cdFx0XHRcdFx0Z2xfRnJhZ0NvbG9yLnJnYiArPSB3ZWlnaHRzWyBpIF0gKiBnZXRTYW1wbGUoIHRoZXRhLCBheGlzICk7XG5cblx0XHRcdFx0fVxuXG5cdFx0XHRcdGdsX0ZyYWdDb2xvciA9IGxpbmVhclRvT3V0cHV0VGV4ZWwoIGdsX0ZyYWdDb2xvciApO1xuXG5cdFx0XHR9XG5cdFx0YCxibGVuZGluZzowLGRlcHRoVGVzdDohMSxkZXB0aFdyaXRlOiExfSl9KShwZHQpLHRoaXMuX2VxdWlyZWN0U2hhZGVyPW51bGwsdGhpcy5fY3ViZW1hcFNoYWRlcj1udWxsLHRoaXMuX2NvbXBpbGVNYXRlcmlhbCh0aGlzLl9ibHVyTWF0ZXJpYWwpfWZyb21TY2VuZSh0LGU9MCxuPS4xLG89MTAwKXtDZHQ9dGhpcy5fcmVuZGVyZXIuZ2V0UmVuZGVyVGFyZ2V0KCk7Y29uc3QgaT10aGlzLl9hbGxvY2F0ZVRhcmdldHMoKTtyZXR1cm4gdGhpcy5fc2NlbmVUb0N1YmVVVih0LG4sbyxpKSxlPjAmJnRoaXMuX2JsdXIoaSwwLDAsZSksdGhpcy5fYXBwbHlQTVJFTShpKSx0aGlzLl9jbGVhbnVwKGkpLGl9ZnJvbUVxdWlyZWN0YW5ndWxhcih0KXtyZXR1cm4gdGhpcy5fZnJvbVRleHR1cmUodCl9ZnJvbUN1YmVtYXAodCl7cmV0dXJuIHRoaXMuX2Zyb21UZXh0dXJlKHQpfWNvbXBpbGVDdWJlbWFwU2hhZGVyKCl7bnVsbD09PXRoaXMuX2N1YmVtYXBTaGFkZXImJih0aGlzLl9jdWJlbWFwU2hhZGVyPUVkdCgpLHRoaXMuX2NvbXBpbGVNYXRlcmlhbCh0aGlzLl9jdWJlbWFwU2hhZGVyKSl9Y29tcGlsZUVxdWlyZWN0YW5ndWxhclNoYWRlcigpe251bGw9PT10aGlzLl9lcXVpcmVjdFNoYWRlciYmKHRoaXMuX2VxdWlyZWN0U2hhZGVyPVJkdCgpLHRoaXMuX2NvbXBpbGVNYXRlcmlhbCh0aGlzLl9lcXVpcmVjdFNoYWRlcikpfWRpc3Bvc2UoKXt0aGlzLl9ibHVyTWF0ZXJpYWwuZGlzcG9zZSgpLG51bGwhPT10aGlzLl9jdWJlbWFwU2hhZGVyJiZ0aGlzLl9jdWJlbWFwU2hhZGVyLmRpc3Bvc2UoKSxudWxsIT09dGhpcy5fZXF1aXJlY3RTaGFkZXImJnRoaXMuX2VxdWlyZWN0U2hhZGVyLmRpc3Bvc2UoKTtmb3IobGV0IHQ9MDt0PGhkdC5sZW5ndGg7dCsrKWhkdFt0XS5kaXNwb3NlKCl9X2NsZWFudXAodCl7dGhpcy5fcGluZ1BvbmdSZW5kZXJUYXJnZXQuZGlzcG9zZSgpLHRoaXMuX3JlbmRlcmVyLnNldFJlbmRlclRhcmdldChDZHQpLHQuc2Npc3NvclRlc3Q9ITEsRGR0KHQsMCwwLHQud2lkdGgsdC5oZWlnaHQpfV9mcm9tVGV4dHVyZSh0KXtDZHQ9dGhpcy5fcmVuZGVyZXIuZ2V0UmVuZGVyVGFyZ2V0KCk7Y29uc3QgZT10aGlzLl9hbGxvY2F0ZVRhcmdldHModCk7cmV0dXJuIHRoaXMuX3RleHR1cmVUb0N1YmVVVih0LGUpLHRoaXMuX2FwcGx5UE1SRU0oZSksdGhpcy5fY2xlYW51cChlKSxlfV9hbGxvY2F0ZVRhcmdldHModCl7Y29uc3QgZT17bWFnRmlsdGVyOkFydCxtaW5GaWx0ZXI6QXJ0LGdlbmVyYXRlTWlwbWFwczohMSx0eXBlOnpydCxmb3JtYXQ6MTAyMyxlbmNvZGluZzp3ZHQodCk/dC5lbmNvZGluZzplc3QsZGVwdGhCdWZmZXI6ITF9LG49U2R0KGUpO3JldHVybiBuLmRlcHRoQnVmZmVyPSF0LHRoaXMuX3BpbmdQb25nUmVuZGVyVGFyZ2V0PVNkdChlKSxufV9jb21waWxlTWF0ZXJpYWwodCl7Y29uc3QgZT1uZXcgU2N0KGhkdFswXSx0KTt0aGlzLl9yZW5kZXJlci5jb21waWxlKGUsZ2R0KX1fc2NlbmVUb0N1YmVVVih0LGUsbixvKXtjb25zdCBpPW5ldyBJY3QoOTAsMSxlLG4pLGE9WzEsLTEsMSwxLDEsMV0scj1bMSwxLDEsLTEsLTEsLTFdLHM9dGhpcy5fcmVuZGVyZXIsbD1zLmF1dG9DbGVhcixjPXMub3V0cHV0RW5jb2RpbmcsZD1zLnRvbmVNYXBwaW5nO3MuZ2V0Q2xlYXJDb2xvcihfZHQpLHMudG9uZU1hcHBpbmc9MCxzLm91dHB1dEVuY29kaW5nPVFydCxzLmF1dG9DbGVhcj0hMTtsZXQgcD0hMTtjb25zdCBtPXQuYmFja2dyb3VuZDtpZihtKXtpZihtLmlzQ29sb3Ipe2ZkdC5jb2xvci5jb3B5KG0pLmNvbnZlcnRTUkdCVG9MaW5lYXIoKSx0LmJhY2tncm91bmQ9bnVsbDtjb25zdCBlPU9kdChmZHQuY29sb3IpO2ZkdC5vcGFjaXR5PWUscD0hMH19ZWxzZXtmZHQuY29sb3IuY29weShfZHQpLmNvbnZlcnRTUkdCVG9MaW5lYXIoKTtjb25zdCB0PU9kdChmZHQuY29sb3IpO2ZkdC5vcGFjaXR5PXQscD0hMH1mb3IobGV0IGU9MDtlPDY7ZSsrKXtjb25zdCBuPWUlMzswPT1uPyhpLnVwLnNldCgwLGFbZV0sMCksaS5sb29rQXQocltlXSwwLDApKToxPT1uPyhpLnVwLnNldCgwLDAsYVtlXSksaS5sb29rQXQoMCxyW2VdLDApKTooaS51cC5zZXQoMCxhW2VdLDApLGkubG9va0F0KDAsMCxyW2VdKSksRGR0KG8sbipsZHQsZT4yP2xkdDowLGxkdCxsZHQpLHMuc2V0UmVuZGVyVGFyZ2V0KG8pLHAmJnMucmVuZGVyKHVkdCxpKSxzLnJlbmRlcih0LGkpfXMudG9uZU1hcHBpbmc9ZCxzLm91dHB1dEVuY29kaW5nPWMscy5hdXRvQ2xlYXI9bH1fdGV4dHVyZVRvQ3ViZVVWKHQsZSl7Y29uc3Qgbj10aGlzLl9yZW5kZXJlcjt0LmlzQ3ViZVRleHR1cmU/bnVsbD09dGhpcy5fY3ViZW1hcFNoYWRlciYmKHRoaXMuX2N1YmVtYXBTaGFkZXI9RWR0KCkpOm51bGw9PXRoaXMuX2VxdWlyZWN0U2hhZGVyJiYodGhpcy5fZXF1aXJlY3RTaGFkZXI9UmR0KCkpO2NvbnN0IG89dC5pc0N1YmVUZXh0dXJlP3RoaXMuX2N1YmVtYXBTaGFkZXI6dGhpcy5fZXF1aXJlY3RTaGFkZXIsaT1uZXcgU2N0KGhkdFswXSxvKSxhPW8udW5pZm9ybXM7YS5lbnZNYXAudmFsdWU9dCx0LmlzQ3ViZVRleHR1cmV8fGEudGV4ZWxTaXplLnZhbHVlLnNldCgxL3QuaW1hZ2Uud2lkdGgsMS90LmltYWdlLmhlaWdodCksYS5pbnB1dEVuY29kaW5nLnZhbHVlPW1kdFt0LmVuY29kaW5nXSxhLm91dHB1dEVuY29kaW5nLnZhbHVlPW1kdFtlLnRleHR1cmUuZW5jb2RpbmddLERkdChlLDAsMCwzKmxkdCwyKmxkdCksbi5zZXRSZW5kZXJUYXJnZXQoZSksbi5yZW5kZXIoaSxnZHQpfV9hcHBseVBNUkVNKHQpe2NvbnN0IGU9dGhpcy5fcmVuZGVyZXIsbj1lLmF1dG9DbGVhcjtlLmF1dG9DbGVhcj0hMTtmb3IobGV0IGU9MTtlPGRkdDtlKyspe2NvbnN0IG49TWF0aC5zcXJ0KHlkdFtlXSp5ZHRbZV0teWR0W2UtMV0qeWR0W2UtMV0pO3RoaXMuX2JsdXIodCxlLTEsZSxuLHhkdFsoZS0xKSV4ZHQubGVuZ3RoXSl9ZS5hdXRvQ2xlYXI9bn1fYmx1cih0LGUsbixvLGkpe2NvbnN0IGE9dGhpcy5fcGluZ1BvbmdSZW5kZXJUYXJnZXQ7dGhpcy5faGFsZkJsdXIodCxhLGUsbixvLCJsYXRpdHVkaW5hbCIsaSksdGhpcy5faGFsZkJsdXIoYSx0LG4sbixvLCJsb25naXR1ZGluYWwiLGkpfV9oYWxmQmx1cih0LGUsbixvLGksYSxyKXtjb25zdCBzPXRoaXMuX3JlbmRlcmVyLGw9dGhpcy5fYmx1ck1hdGVyaWFsOyJsYXRpdHVkaW5hbCIhPT1hJiYibG9uZ2l0dWRpbmFsIiE9PWEmJmNvbnNvbGUuZXJyb3IoImJsdXIgZGlyZWN0aW9uIG11c3QgYmUgZWl0aGVyIGxhdGl0dWRpbmFsIG9yIGxvbmdpdHVkaW5hbCEiKTtjb25zdCBjPW5ldyBTY3QoaGR0W29dLGwpLGQ9bC51bmlmb3JtcyxwPWJkdFtuXS0xLG09aXNGaW5pdGUoaSk/TWF0aC5QSS8oMipwKToyKk1hdGguUEkvMzksZj1pL20sdT1pc0Zpbml0ZShpKT8xK01hdGguZmxvb3IoMypmKTpwZHQ7dT5wZHQmJmNvbnNvbGUud2Fybihgc2lnbWFSYWRpYW5zLCAke2l9LCBpcyB0b28gbGFyZ2UgYW5kIHdpbGwgY2xpcCwgYXMgaXQgcmVxdWVzdGVkICR7dX0gc2FtcGxlcyB3aGVuIHRoZSBtYXhpbXVtIGlzIHNldCB0byAyMGApO2NvbnN0IGc9W107bGV0IGg9MDtmb3IobGV0IHQ9MDt0PHBkdDsrK3Qpe2NvbnN0IGU9dC9mLG49TWF0aC5leHAoLWUqZS8yKTtnLnB1c2gobiksMD09dD9oKz1uOnQ8dSYmKGgrPTIqbil9Zm9yKGxldCB0PTA7dDxnLmxlbmd0aDt0KyspZ1t0XT1nW3RdL2g7ZC5lbnZNYXAudmFsdWU9dC50ZXh0dXJlLGQuc2FtcGxlcy52YWx1ZT11LGQud2VpZ2h0cy52YWx1ZT1nLGQubGF0aXR1ZGluYWwudmFsdWU9ImxhdGl0dWRpbmFsIj09PWEsciYmKGQucG9sZUF4aXMudmFsdWU9ciksZC5kVGhldGEudmFsdWU9bSxkLm1pcEludC52YWx1ZT04LW4sZC5pbnB1dEVuY29kaW5nLnZhbHVlPW1kdFt0LnRleHR1cmUuZW5jb2RpbmddLGQub3V0cHV0RW5jb2RpbmcudmFsdWU9bWR0W3QudGV4dHVyZS5lbmNvZGluZ107Y29uc3QgYj1iZHRbb107RGR0KGUsMypNYXRoLm1heCgwLGxkdC0yKmIpLCgwPT09bz8wOjIqbGR0KSsyKmIqKG8+ND9vLTgrNDowKSwzKmIsMipiKSxzLnNldFJlbmRlclRhcmdldChlKSxzLnJlbmRlcihjLGdkdCl9fWZ1bmN0aW9uIHdkdCh0KXtyZXR1cm4gdm9pZCAwIT09dCYmdC50eXBlPT09enJ0JiYodC5lbmNvZGluZz09PVFydHx8dC5lbmNvZGluZz09PSRydHx8dC5lbmNvZGluZz09PXRzdCl9ZnVuY3Rpb24ga2R0KCl7Y29uc3QgdD1bXSxlPVtdLG49W107bGV0IG89ODtmb3IobGV0IGk9MDtpPGRkdDtpKyspe2NvbnN0IGE9TWF0aC5wb3coMixvKTtlLnB1c2goYSk7bGV0IHI9MS9hO2k+ND9yPWNkdFtpLTgrNC0xXTowPT1pJiYocj0wKSxuLnB1c2gocik7Y29uc3Qgcz0xLyhhLTEpLGw9LXMvMixjPTErcy8yLGQ9W2wsbCxjLGwsYyxjLGwsbCxjLGMsbCxjXSxwPTYsbT02LGY9Myx1PTIsZz0xLGg9bmV3IEZsb2F0MzJBcnJheShmKm0qcCksYj1uZXcgRmxvYXQzMkFycmF5KHUqbSpwKSx5PW5ldyBGbG9hdDMyQXJyYXkoZyptKnApO2ZvcihsZXQgdD0wO3Q8cDt0Kyspe2NvbnN0IGU9dCUzKjIvMy0xLG49dD4yPzA6LTE7aC5zZXQoW2UsbiwwLGUrMi8zLG4sMCxlKzIvMyxuKzEsMCxlLG4sMCxlKzIvMyxuKzEsMCxlLG4rMSwwXSxmKm0qdCksYi5zZXQoZCx1Km0qdCk7eS5zZXQoW3QsdCx0LHQsdCx0XSxnKm0qdCl9Y29uc3QgXz1uZXcgZGN0O18uc2V0QXR0cmlidXRlKCJwb3NpdGlvbiIsbmV3IFFsdChoLGYpKSxfLnNldEF0dHJpYnV0ZSgidXYiLG5ldyBRbHQoYix1KSksXy5zZXRBdHRyaWJ1dGUoImZhY2VJbmRleCIsbmV3IFFsdCh5LGcpKSx0LnB1c2goXyksbz40JiZvLS19cmV0dXJue19sb2RQbGFuZXM6dCxfc2l6ZUxvZHM6ZSxfc2lnbWFzOm59fWZ1bmN0aW9uIFNkdCh0KXtjb25zdCBlPW5ldyB4c3QoMypsZHQsMypsZHQsdCk7cmV0dXJuIGUudGV4dHVyZS5tYXBwaW5nPVNydCxlLnRleHR1cmUubmFtZT0iUE1SRU0uY3ViZVV2IixlLnNjaXNzb3JUZXN0PSEwLGV9ZnVuY3Rpb24gRGR0KHQsZSxuLG8saSl7dC52aWV3cG9ydC5zZXQoZSxuLG8saSksdC5zY2lzc29yLnNldChlLG4sbyxpKX1mdW5jdGlvbiBSZHQoKXtjb25zdCB0PW5ldyBnc3QoMSwxKTtyZXR1cm4gbmV3IHNkdCh7bmFtZToiRXF1aXJlY3Rhbmd1bGFyVG9DdWJlVVYiLHVuaWZvcm1zOntlbnZNYXA6e3ZhbHVlOm51bGx9LHRleGVsU2l6ZTp7dmFsdWU6dH0saW5wdXRFbmNvZGluZzp7dmFsdWU6bWR0WzNlM119LG91dHB1dEVuY29kaW5nOnt2YWx1ZTptZHRbM2UzXX19LHZlcnRleFNoYWRlcjpBZHQoKSxmcmFnbWVudFNoYWRlcjpgXG5cblx0XHRcdHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuXHRcdFx0cHJlY2lzaW9uIG1lZGl1bXAgaW50O1xuXG5cdFx0XHR2YXJ5aW5nIHZlYzMgdk91dHB1dERpcmVjdGlvbjtcblxuXHRcdFx0dW5pZm9ybSBzYW1wbGVyMkQgZW52TWFwO1xuXHRcdFx0dW5pZm9ybSB2ZWMyIHRleGVsU2l6ZTtcblxuXHRcdFx0JHtUZHQoKX1cblxuXHRcdFx0I2luY2x1ZGUgPGNvbW1vbj5cblxuXHRcdFx0dm9pZCBtYWluKCkge1xuXG5cdFx0XHRcdGdsX0ZyYWdDb2xvciA9IHZlYzQoIDAuMCwgMC4wLCAwLjAsIDEuMCApO1xuXG5cdFx0XHRcdHZlYzMgb3V0cHV0RGlyZWN0aW9uID0gbm9ybWFsaXplKCB2T3V0cHV0RGlyZWN0aW9uICk7XG5cdFx0XHRcdHZlYzIgdXYgPSBlcXVpcmVjdFV2KCBvdXRwdXREaXJlY3Rpb24gKTtcblxuXHRcdFx0XHR2ZWMyIGYgPSBmcmFjdCggdXYgLyB0ZXhlbFNpemUgLSAwLjUgKTtcblx0XHRcdFx0dXYgLT0gZiAqIHRleGVsU2l6ZTtcblx0XHRcdFx0dmVjMyB0bCA9IGVudk1hcFRleGVsVG9MaW5lYXIoIHRleHR1cmUyRCAoIGVudk1hcCwgdXYgKSApLnJnYjtcblx0XHRcdFx0dXYueCArPSB0ZXhlbFNpemUueDtcblx0XHRcdFx0dmVjMyB0ciA9IGVudk1hcFRleGVsVG9MaW5lYXIoIHRleHR1cmUyRCAoIGVudk1hcCwgdXYgKSApLnJnYjtcblx0XHRcdFx0dXYueSArPSB0ZXhlbFNpemUueTtcblx0XHRcdFx0dmVjMyBiciA9IGVudk1hcFRleGVsVG9MaW5lYXIoIHRleHR1cmUyRCAoIGVudk1hcCwgdXYgKSApLnJnYjtcblx0XHRcdFx0dXYueCAtPSB0ZXhlbFNpemUueDtcblx0XHRcdFx0dmVjMyBibCA9IGVudk1hcFRleGVsVG9MaW5lYXIoIHRleHR1cmUyRCAoIGVudk1hcCwgdXYgKSApLnJnYjtcblxuXHRcdFx0XHR2ZWMzIHRtID0gbWl4KCB0bCwgdHIsIGYueCApO1xuXHRcdFx0XHR2ZWMzIGJtID0gbWl4KCBibCwgYnIsIGYueCApO1xuXHRcdFx0XHRnbF9GcmFnQ29sb3IucmdiID0gbWl4KCB0bSwgYm0sIGYueSApO1xuXG5cdFx0XHRcdGdsX0ZyYWdDb2xvciA9IGxpbmVhclRvT3V0cHV0VGV4ZWwoIGdsX0ZyYWdDb2xvciApO1xuXG5cdFx0XHR9XG5cdFx0YCxibGVuZGluZzowLGRlcHRoVGVzdDohMSxkZXB0aFdyaXRlOiExfSl9ZnVuY3Rpb24gRWR0KCl7cmV0dXJuIG5ldyBzZHQoe25hbWU6IkN1YmVtYXBUb0N1YmVVViIsdW5pZm9ybXM6e2Vudk1hcDp7dmFsdWU6bnVsbH0saW5wdXRFbmNvZGluZzp7dmFsdWU6bWR0WzNlM119LG91dHB1dEVuY29kaW5nOnt2YWx1ZTptZHRbM2UzXX19LHZlcnRleFNoYWRlcjpBZHQoKSxmcmFnbWVudFNoYWRlcjpgXG5cblx0XHRcdHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuXHRcdFx0cHJlY2lzaW9uIG1lZGl1bXAgaW50O1xuXG5cdFx0XHR2YXJ5aW5nIHZlYzMgdk91dHB1dERpcmVjdGlvbjtcblxuXHRcdFx0dW5pZm9ybSBzYW1wbGVyQ3ViZSBlbnZNYXA7XG5cblx0XHRcdCR7VGR0KCl9XG5cblx0XHRcdHZvaWQgbWFpbigpIHtcblxuXHRcdFx0XHRnbF9GcmFnQ29sb3IgPSB2ZWM0KCAwLjAsIDAuMCwgMC4wLCAxLjAgKTtcblx0XHRcdFx0Z2xfRnJhZ0NvbG9yLnJnYiA9IGVudk1hcFRleGVsVG9MaW5lYXIoIHRleHR1cmVDdWJlKCBlbnZNYXAsIHZlYzMoIC0gdk91dHB1dERpcmVjdGlvbi54LCB2T3V0cHV0RGlyZWN0aW9uLnl6ICkgKSApLnJnYjtcblx0XHRcdFx0Z2xfRnJhZ0NvbG9yID0gbGluZWFyVG9PdXRwdXRUZXhlbCggZ2xfRnJhZ0NvbG9yICk7XG5cblx0XHRcdH1cblx0XHRgLGJsZW5kaW5nOjAsZGVwdGhUZXN0OiExLGRlcHRoV3JpdGU6ITF9KX1mdW5jdGlvbiBBZHQoKXtyZXR1cm4iXG5cblx0XHRwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcblx0XHRwcmVjaXNpb24gbWVkaXVtcCBpbnQ7XG5cblx0XHRhdHRyaWJ1dGUgdmVjMyBwb3NpdGlvbjtcblx0XHRhdHRyaWJ1dGUgdmVjMiB1djtcblx0XHRhdHRyaWJ1dGUgZmxvYXQgZmFjZUluZGV4O1xuXG5cdFx0dmFyeWluZyB2ZWMzIHZPdXRwdXREaXJlY3Rpb247XG5cblx0XHQvLyBSSCBjb29yZGluYXRlIHN5c3RlbTsgUE1SRU0gZmFjZS1pbmRleGluZyBjb252ZW50aW9uXG5cdFx0dmVjMyBnZXREaXJlY3Rpb24oIHZlYzIgdXYsIGZsb2F0IGZhY2UgKSB7XG5cblx0XHRcdHV2ID0gMi4wICogdXYgLSAxLjA7XG5cblx0XHRcdHZlYzMgZGlyZWN0aW9uID0gdmVjMyggdXYsIDEuMCApO1xuXG5cdFx0XHRpZiAoIGZhY2UgPT0gMC4wICkge1xuXG5cdFx0XHRcdGRpcmVjdGlvbiA9IGRpcmVjdGlvbi56eXg7IC8vICggMSwgdiwgdSApIHBvcyB4XG5cblx0XHRcdH0gZWxzZSBpZiAoIGZhY2UgPT0gMS4wICkge1xuXG5cdFx0XHRcdGRpcmVjdGlvbiA9IGRpcmVjdGlvbi54enk7XG5cdFx0XHRcdGRpcmVjdGlvbi54eiAqPSAtMS4wOyAvLyAoIC11LCAxLCAtdiApIHBvcyB5XG5cblx0XHRcdH0gZWxzZSBpZiAoIGZhY2UgPT0gMi4wICkge1xuXG5cdFx0XHRcdGRpcmVjdGlvbi54ICo9IC0xLjA7IC8vICggLXUsIHYsIDEgKSBwb3MgelxuXG5cdFx0XHR9IGVsc2UgaWYgKCBmYWNlID09IDMuMCApIHtcblxuXHRcdFx0XHRkaXJlY3Rpb24gPSBkaXJlY3Rpb24uenl4O1xuXHRcdFx0XHRkaXJlY3Rpb24ueHogKj0gLTEuMDsgLy8gKCAtMSwgdiwgLXUgKSBuZWcgeFxuXG5cdFx0XHR9IGVsc2UgaWYgKCBmYWNlID09IDQuMCApIHtcblxuXHRcdFx0XHRkaXJlY3Rpb24gPSBkaXJlY3Rpb24ueHp5O1xuXHRcdFx0XHRkaXJlY3Rpb24ueHkgKj0gLTEuMDsgLy8gKCAtdSwgLTEsIHYgKSBuZWcgeVxuXG5cdFx0XHR9IGVsc2UgaWYgKCBmYWNlID09IDUuMCApIHtcblxuXHRcdFx0XHRkaXJlY3Rpb24ueiAqPSAtMS4wOyAvLyAoIHUsIHYsIC0xICkgbmVnIHpcblxuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gZGlyZWN0aW9uO1xuXG5cdFx0fVxuXG5cdFx0dm9pZCBtYWluKCkge1xuXG5cdFx0XHR2T3V0cHV0RGlyZWN0aW9uID0gZ2V0RGlyZWN0aW9uKCB1diwgZmFjZUluZGV4ICk7XG5cdFx0XHRnbF9Qb3NpdGlvbiA9IHZlYzQoIHBvc2l0aW9uLCAxLjAgKTtcblxuXHRcdH1cblx0In1mdW5jdGlvbiBUZHQoKXtyZXR1cm4iXG5cblx0XHR1bmlmb3JtIGludCBpbnB1dEVuY29kaW5nO1xuXHRcdHVuaWZvcm0gaW50IG91dHB1dEVuY29kaW5nO1xuXG5cdFx0I2luY2x1ZGUgPGVuY29kaW5nc19wYXJzX2ZyYWdtZW50PlxuXG5cdFx0dmVjNCBpbnB1dFRleGVsVG9MaW5lYXIoIHZlYzQgdmFsdWUgKSB7XG5cblx0XHRcdGlmICggaW5wdXRFbmNvZGluZyA9PSAwICkge1xuXG5cdFx0XHRcdHJldHVybiB2YWx1ZTtcblxuXHRcdFx0fSBlbHNlIGlmICggaW5wdXRFbmNvZGluZyA9PSAxICkge1xuXG5cdFx0XHRcdHJldHVybiBzUkdCVG9MaW5lYXIoIHZhbHVlICk7XG5cblx0XHRcdH0gZWxzZSBpZiAoIGlucHV0RW5jb2RpbmcgPT0gMiApIHtcblxuXHRcdFx0XHRyZXR1cm4gUkdCRVRvTGluZWFyKCB2YWx1ZSApO1xuXG5cdFx0XHR9IGVsc2UgaWYgKCBpbnB1dEVuY29kaW5nID09IDMgKSB7XG5cblx0XHRcdFx0cmV0dXJuIFJHQk1Ub0xpbmVhciggdmFsdWUsIDcuMCApO1xuXG5cdFx0XHR9IGVsc2UgaWYgKCBpbnB1dEVuY29kaW5nID09IDQgKSB7XG5cblx0XHRcdFx0cmV0dXJuIFJHQk1Ub0xpbmVhciggdmFsdWUsIDE2LjAgKTtcblxuXHRcdFx0fSBlbHNlIGlmICggaW5wdXRFbmNvZGluZyA9PSA1ICkge1xuXG5cdFx0XHRcdHJldHVybiBSR0JEVG9MaW5lYXIoIHZhbHVlLCAyNTYuMCApO1xuXG5cdFx0XHR9IGVsc2Uge1xuXG5cdFx0XHRcdHJldHVybiBHYW1tYVRvTGluZWFyKCB2YWx1ZSwgMi4yICk7XG5cblx0XHRcdH1cblxuXHRcdH1cblxuXHRcdHZlYzQgbGluZWFyVG9PdXRwdXRUZXhlbCggdmVjNCB2YWx1ZSApIHtcblxuXHRcdFx0aWYgKCBvdXRwdXRFbmNvZGluZyA9PSAwICkge1xuXG5cdFx0XHRcdHJldHVybiB2YWx1ZTtcblxuXHRcdFx0fSBlbHNlIGlmICggb3V0cHV0RW5jb2RpbmcgPT0gMSApIHtcblxuXHRcdFx0XHRyZXR1cm4gTGluZWFyVG9zUkdCKCB2YWx1ZSApO1xuXG5cdFx0XHR9IGVsc2UgaWYgKCBvdXRwdXRFbmNvZGluZyA9PSAyICkge1xuXG5cdFx0XHRcdHJldHVybiBMaW5lYXJUb1JHQkUoIHZhbHVlICk7XG5cblx0XHRcdH0gZWxzZSBpZiAoIG91dHB1dEVuY29kaW5nID09IDMgKSB7XG5cblx0XHRcdFx0cmV0dXJuIExpbmVhclRvUkdCTSggdmFsdWUsIDcuMCApO1xuXG5cdFx0XHR9IGVsc2UgaWYgKCBvdXRwdXRFbmNvZGluZyA9PSA0ICkge1xuXG5cdFx0XHRcdHJldHVybiBMaW5lYXJUb1JHQk0oIHZhbHVlLCAxNi4wICk7XG5cblx0XHRcdH0gZWxzZSBpZiAoIG91dHB1dEVuY29kaW5nID09IDUgKSB7XG5cblx0XHRcdFx0cmV0dXJuIExpbmVhclRvUkdCRCggdmFsdWUsIDI1Ni4wICk7XG5cblx0XHRcdH0gZWxzZSB7XG5cblx0XHRcdFx0cmV0dXJuIExpbmVhclRvR2FtbWEoIHZhbHVlLCAyLjIgKTtcblxuXHRcdFx0fVxuXG5cdFx0fVxuXG5cdFx0dmVjNCBlbnZNYXBUZXhlbFRvTGluZWFyKCB2ZWM0IGNvbG9yICkge1xuXG5cdFx0XHRyZXR1cm4gaW5wdXRUZXhlbFRvTGluZWFyKCBjb2xvciApO1xuXG5cdFx0fVxuXHQifWZ1bmN0aW9uIE5kdCh0KXtsZXQgZT1uZXcgV2Vha01hcCxuPW51bGw7ZnVuY3Rpb24gbyh0KXtjb25zdCBuPXQudGFyZ2V0O24ucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZGlzcG9zZSIsbyk7Y29uc3QgaT1lLmdldChuKTt2b2lkIDAhPT1pJiYoaS5kZWxldGUobiksaS5kaXNwb3NlKCkpfXJldHVybntnZXQ6ZnVuY3Rpb24gaShhKXtpZihhJiZhLmlzVGV4dHVyZSYmITE9PT1hLmlzUmVuZGVyVGFyZ2V0VGV4dHVyZSl7Y29uc3QgaT1hLm1hcHBpbmcscj0zMDM9PT1pfHwzMDQ9PT1pLHM9aT09PXdydHx8aT09PWtydDtpZihyfHxzKXtpZihlLmhhcyhhKSlyZXR1cm4gZS5nZXQoYSkudGV4dHVyZTt7Y29uc3QgaT1hLmltYWdlO2lmKHImJmkmJmkuaGVpZ2h0PjB8fHMmJmkmJihmdW5jdGlvbiByKHQpe2xldCBlPTA7Y29uc3Qgbj02O2ZvcihsZXQgbz0wO288bjtvKyspdm9pZCAwIT09dFtvXSYmZSsrO3JldHVybiBlPT09bn0pKGkpKXtjb25zdCBpPXQuZ2V0UmVuZGVyVGFyZ2V0KCk7bnVsbD09PW4mJihuPW5ldyBQZHQodCkpO2NvbnN0IHM9cj9uLmZyb21FcXVpcmVjdGFuZ3VsYXIoYSk6bi5mcm9tQ3ViZW1hcChhKTtyZXR1cm4gZS5zZXQoYSxzKSx0LnNldFJlbmRlclRhcmdldChpKSxhLmFkZEV2ZW50TGlzdGVuZXIoImRpc3Bvc2UiLG8pLHMudGV4dHVyZX1yZXR1cm4gbnVsbH19fXJldHVybiBhfSxkaXNwb3NlOmZ1bmN0aW9uIGEoKXtlPW5ldyBXZWFrTWFwLG51bGwhPT1uJiYobi5kaXNwb3NlKCksbj1udWxsKX19fWZ1bmN0aW9uIHpkdCh0KXtjb25zdCBlPXt9O2Z1bmN0aW9uIG4obil7aWYodm9pZCAwIT09ZVtuXSlyZXR1cm4gZVtuXTtsZXQgbztzd2l0Y2gobil7Y2FzZSJXRUJHTF9kZXB0aF90ZXh0dXJlIjpvPXQuZ2V0RXh0ZW5zaW9uKCJXRUJHTF9kZXB0aF90ZXh0dXJlIil8fHQuZ2V0RXh0ZW5zaW9uKCJNT1pfV0VCR0xfZGVwdGhfdGV4dHVyZSIpfHx0LmdldEV4dGVuc2lvbigiV0VCS0lUX1dFQkdMX2RlcHRoX3RleHR1cmUiKTticmVhaztjYXNlIkVYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyI6bz10LmdldEV4dGVuc2lvbigiRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIil8fHQuZ2V0RXh0ZW5zaW9uKCJNT1pfRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIil8fHQuZ2V0RXh0ZW5zaW9uKCJXRUJLSVRfRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIik7YnJlYWs7Y2FzZSJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfczN0YyI6bz10LmdldEV4dGVuc2lvbigiV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3MzdGMiKXx8dC5nZXRFeHRlbnNpb24oIk1PWl9XRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfczN0YyIpfHx0LmdldEV4dGVuc2lvbigiV0VCS0lUX1dFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9zM3RjIik7YnJlYWs7Y2FzZSJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfcHZydGMiOm89dC5nZXRFeHRlbnNpb24oIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9wdnJ0YyIpfHx0LmdldEV4dGVuc2lvbigiV0VCS0lUX1dFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9wdnJ0YyIpO2JyZWFrO2RlZmF1bHQ6bz10LmdldEV4dGVuc2lvbihuKX1yZXR1cm4gZVtuXT1vLG99cmV0dXJue2hhczpmdW5jdGlvbih0KXtyZXR1cm4gbnVsbCE9PW4odCl9LGluaXQ6ZnVuY3Rpb24odCl7dC5pc1dlYkdMMj9uKCJFWFRfY29sb3JfYnVmZmVyX2Zsb2F0Iik6KG4oIldFQkdMX2RlcHRoX3RleHR1cmUiKSxuKCJPRVNfdGV4dHVyZV9mbG9hdCIpLG4oIk9FU190ZXh0dXJlX2hhbGZfZmxvYXQiKSxuKCJPRVNfdGV4dHVyZV9oYWxmX2Zsb2F0X2xpbmVhciIpLG4oIk9FU19zdGFuZGFyZF9kZXJpdmF0aXZlcyIpLG4oIk9FU19lbGVtZW50X2luZGV4X3VpbnQiKSxuKCJPRVNfdmVydGV4X2FycmF5X29iamVjdCIpLG4oIkFOR0xFX2luc3RhbmNlZF9hcnJheXMiKSksbigiT0VTX3RleHR1cmVfZmxvYXRfbGluZWFyIiksbigiRVhUX2NvbG9yX2J1ZmZlcl9oYWxmX2Zsb2F0Iil9LGdldDpmdW5jdGlvbih0KXtjb25zdCBlPW4odCk7cmV0dXJuIG51bGw9PT1lJiZjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6ICIrdCsiIGV4dGVuc2lvbiBub3Qgc3VwcG9ydGVkLiIpLGV9fX1mdW5jdGlvbiBJZHQodCxlLG4sbyl7Y29uc3QgaT17fSxhPW5ldyBXZWFrTWFwO2Z1bmN0aW9uIHIodCl7Y29uc3Qgcz10LnRhcmdldDtudWxsIT09cy5pbmRleCYmZS5yZW1vdmUocy5pbmRleCk7Zm9yKGNvbnN0IHQgaW4gcy5hdHRyaWJ1dGVzKWUucmVtb3ZlKHMuYXR0cmlidXRlc1t0XSk7cy5yZW1vdmVFdmVudExpc3RlbmVyKCJkaXNwb3NlIixyKSxkZWxldGUgaVtzLmlkXTtjb25zdCBsPWEuZ2V0KHMpO2wmJihlLnJlbW92ZShsKSxhLmRlbGV0ZShzKSksby5yZWxlYXNlU3RhdGVzT2ZHZW9tZXRyeShzKSwhMD09PXMuaXNJbnN0YW5jZWRCdWZmZXJHZW9tZXRyeSYmZGVsZXRlIHMuX21heEluc3RhbmNlQ291bnQsbi5tZW1vcnkuZ2VvbWV0cmllcy0tfWZ1bmN0aW9uIHModCl7Y29uc3Qgbj1bXSxvPXQuaW5kZXgsaT10LmF0dHJpYnV0ZXMucG9zaXRpb247bGV0IHI9MDtpZihudWxsIT09byl7Y29uc3QgdD1vLmFycmF5O3I9by52ZXJzaW9uO2ZvcihsZXQgZT0wLG89dC5sZW5ndGg7ZTxvO2UrPTMpe2NvbnN0IG89dFtlKzBdLGk9dFtlKzFdLGE9dFtlKzJdO24ucHVzaChvLGksaSxhLGEsbyl9fWVsc2V7cj1pLnZlcnNpb247Zm9yKGxldCB0PTAsZT1pLmFycmF5Lmxlbmd0aC8zLTE7dDxlO3QrPTMpe2NvbnN0IGU9dCswLG89dCsxLGk9dCsyO24ucHVzaChlLG8sbyxpLGksZSl9fWNvbnN0IHM9bmV3KG5jdChuKT42NTUzNT90Y3Q6JGx0KShuLDEpO3MudmVyc2lvbj1yO2NvbnN0IGw9YS5nZXQodCk7bCYmZS5yZW1vdmUobCksYS5zZXQodCxzKX1yZXR1cm57Z2V0OmZ1bmN0aW9uIGwodCxlKXtyZXR1cm4hMD09PWlbZS5pZF18fChlLmFkZEV2ZW50TGlzdGVuZXIoImRpc3Bvc2UiLHIpLGlbZS5pZF09ITAsbi5tZW1vcnkuZ2VvbWV0cmllcysrKSxlfSx1cGRhdGU6ZnVuY3Rpb24gYyh0KXtjb25zdCBuPXQuYXR0cmlidXRlcztmb3IoY29uc3QgdCBpbiBuKWUudXBkYXRlKG5bdF0sMzQ5NjIpO2NvbnN0IG89dC5tb3JwaEF0dHJpYnV0ZXM7Zm9yKGNvbnN0IHQgaW4gbyl7Y29uc3Qgbj1vW3RdO2ZvcihsZXQgdD0wLG89bi5sZW5ndGg7dDxvO3QrKyllLnVwZGF0ZShuW3RdLDM0OTYyKX19LGdldFdpcmVmcmFtZUF0dHJpYnV0ZTpmdW5jdGlvbiBkKHQpe2NvbnN0IGU9YS5nZXQodCk7aWYoZSl7Y29uc3Qgbj10LmluZGV4O251bGwhPT1uJiZlLnZlcnNpb248bi52ZXJzaW9uJiZzKHQpfWVsc2Ugcyh0KTtyZXR1cm4gYS5nZXQodCl9fX1mdW5jdGlvbiBIZHQodCxlLG4sbyl7Y29uc3QgaT1vLmlzV2ViR0wyO2xldCBhLHIsczt0aGlzLnNldE1vZGU9ZnVuY3Rpb24gbCh0KXthPXR9LHRoaXMuc2V0SW5kZXg9ZnVuY3Rpb24gYyh0KXtyPXQudHlwZSxzPXQuYnl0ZXNQZXJFbGVtZW50fSx0aGlzLnJlbmRlcj1mdW5jdGlvbiBkKGUsbyl7dC5kcmF3RWxlbWVudHMoYSxvLHIsZSpzKSxuLnVwZGF0ZShvLGEsMSl9LHRoaXMucmVuZGVySW5zdGFuY2VzPWZ1bmN0aW9uIHAobyxsLGMpe2lmKDA9PT1jKXJldHVybjtsZXQgZCxwO2lmKGkpZD10LHA9ImRyYXdFbGVtZW50c0luc3RhbmNlZCI7ZWxzZSBpZihkPWUuZ2V0KCJBTkdMRV9pbnN0YW5jZWRfYXJyYXlzIikscD0iZHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUiLG51bGw9PT1kKXJldHVybiB2b2lkIGNvbnNvbGUuZXJyb3IoIlRIUkVFLldlYkdMSW5kZXhlZEJ1ZmZlclJlbmRlcmVyOiB1c2luZyBUSFJFRS5JbnN0YW5jZWRCdWZmZXJHZW9tZXRyeSBidXQgaGFyZHdhcmUgZG9lcyBub3Qgc3VwcG9ydCBleHRlbnNpb24gQU5HTEVfaW5zdGFuY2VkX2FycmF5cy4iKTtkW3BdKGEsbCxyLG8qcyxjKSxuLnVwZGF0ZShsLGEsYyl9fWZ1bmN0aW9uIEZkdCh0KXtjb25zdCBlPXtmcmFtZTowLGNhbGxzOjAsdHJpYW5nbGVzOjAscG9pbnRzOjAsbGluZXM6MH07cmV0dXJue21lbW9yeTp7Z2VvbWV0cmllczowLHRleHR1cmVzOjB9LHJlbmRlcjplLHByb2dyYW1zOm51bGwsYXV0b1Jlc2V0OiEwLHJlc2V0OmZ1bmN0aW9uIG4oKXtlLmZyYW1lKyssZS5jYWxscz0wLGUudHJpYW5nbGVzPTAsZS5wb2ludHM9MCxlLmxpbmVzPTB9LHVwZGF0ZTpmdW5jdGlvbiBvKHQsbixpKXtzd2l0Y2goZS5jYWxscysrLG4pe2Nhc2UgNDplLnRyaWFuZ2xlcys9aSoodC8zKTticmVhaztjYXNlIDE6ZS5saW5lcys9aSoodC8yKTticmVhaztjYXNlIDM6ZS5saW5lcys9aSoodC0xKTticmVhaztjYXNlIDI6ZS5saW5lcys9aSp0O2JyZWFrO2Nhc2UgMDplLnBvaW50cys9aSp0O2JyZWFrO2RlZmF1bHQ6Y29uc29sZS5lcnJvcigiVEhSRUUuV2ViR0xJbmZvOiBVbmtub3duIGRyYXcgbW9kZToiLG4pfX19fWZ1bmN0aW9uIExkdCh0LGUpe3JldHVybiB0WzBdLWVbMF19ZnVuY3Rpb24gQmR0KHQsZSl7cmV0dXJuIE1hdGguYWJzKGVbMV0pLU1hdGguYWJzKHRbMV0pfWZ1bmN0aW9uIFZkdCh0KXtjb25zdCBlPXt9LG49bmV3IEZsb2F0MzJBcnJheSg4KSxvPVtdO2ZvcihsZXQgdD0wO3Q8ODt0Kyspb1t0XT1bdCwwXTtyZXR1cm57dXBkYXRlOmZ1bmN0aW9uIGkoYSxyLHMsbCl7Y29uc3QgYz1hLm1vcnBoVGFyZ2V0SW5mbHVlbmNlcyxkPXZvaWQgMD09PWM/MDpjLmxlbmd0aDtsZXQgcD1lW3IuaWRdO2lmKHZvaWQgMD09PXB8fHAubGVuZ3RoIT09ZCl7cD1bXTtmb3IobGV0IHQ9MDt0PGQ7dCsrKXBbdF09W3QsMF07ZVtyLmlkXT1wfWZvcihsZXQgdD0wO3Q8ZDt0Kyspe2NvbnN0IGU9cFt0XTtlWzBdPXQsZVsxXT1jW3RdfXAuc29ydChCZHQpO2ZvcihsZXQgdD0wO3Q8ODt0KyspdDxkJiZwW3RdWzFdPyhvW3RdWzBdPXBbdF1bMF0sb1t0XVsxXT1wW3RdWzFdKToob1t0XVswXT1OdW1iZXIuTUFYX1NBRkVfSU5URUdFUixvW3RdWzFdPTApO28uc29ydChMZHQpO2NvbnN0IG09ci5tb3JwaEF0dHJpYnV0ZXMucG9zaXRpb24sZj1yLm1vcnBoQXR0cmlidXRlcy5ub3JtYWw7bGV0IHU9MDtmb3IobGV0IHQ9MDt0PDg7dCsrKXtjb25zdCBlPW9bdF0saT1lWzBdLGE9ZVsxXTtpIT09TnVtYmVyLk1BWF9TQUZFX0lOVEVHRVImJmE/KG0mJnIuZ2V0QXR0cmlidXRlKCJtb3JwaFRhcmdldCIrdCkhPT1tW2ldJiZyLnNldEF0dHJpYnV0ZSgibW9ycGhUYXJnZXQiK3QsbVtpXSksZiYmci5nZXRBdHRyaWJ1dGUoIm1vcnBoTm9ybWFsIit0KSE9PWZbaV0mJnIuc2V0QXR0cmlidXRlKCJtb3JwaE5vcm1hbCIrdCxmW2ldKSxuW3RdPWEsdSs9YSk6KG0mJiEwPT09ci5oYXNBdHRyaWJ1dGUoIm1vcnBoVGFyZ2V0Iit0KSYmci5kZWxldGVBdHRyaWJ1dGUoIm1vcnBoVGFyZ2V0Iit0KSxmJiYhMD09PXIuaGFzQXR0cmlidXRlKCJtb3JwaE5vcm1hbCIrdCkmJnIuZGVsZXRlQXR0cmlidXRlKCJtb3JwaE5vcm1hbCIrdCksblt0XT0wKX1jb25zdCBnPXIubW9ycGhUYXJnZXRzUmVsYXRpdmU/MToxLXU7bC5nZXRVbmlmb3JtcygpLnNldFZhbHVlKHQsIm1vcnBoVGFyZ2V0QmFzZUluZmx1ZW5jZSIsZyksbC5nZXRVbmlmb3JtcygpLnNldFZhbHVlKHQsIm1vcnBoVGFyZ2V0SW5mbHVlbmNlcyIsbil9fX1mdW5jdGlvbiBqZHQodCxlLG4sbyl7bGV0IGk9bmV3IFdlYWtNYXA7ZnVuY3Rpb24gYSh0KXtjb25zdCBlPXQudGFyZ2V0O2UucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZGlzcG9zZSIsYSksbi5yZW1vdmUoZS5pbnN0YW5jZU1hdHJpeCksbnVsbCE9PWUuaW5zdGFuY2VDb2xvciYmbi5yZW1vdmUoZS5pbnN0YW5jZUNvbG9yKX1yZXR1cm57dXBkYXRlOmZ1bmN0aW9uIHIodCl7Y29uc3Qgcj1vLnJlbmRlci5mcmFtZSxzPWUuZ2V0KHQsdC5nZW9tZXRyeSk7cmV0dXJuIGkuZ2V0KHMpIT09ciYmKGUudXBkYXRlKHMpLGkuc2V0KHMscikpLHQuaXNJbnN0YW5jZWRNZXNoJiYoITE9PT10Lmhhc0V2ZW50TGlzdGVuZXIoImRpc3Bvc2UiLGEpJiZ0LmFkZEV2ZW50TGlzdGVuZXIoImRpc3Bvc2UiLGEpLG4udXBkYXRlKHQuaW5zdGFuY2VNYXRyaXgsMzQ5NjIpLG51bGwhPT10Lmluc3RhbmNlQ29sb3ImJm4udXBkYXRlKHQuaW5zdGFuY2VDb2xvciwzNDk2MikpLHN9LGRpc3Bvc2U6ZnVuY3Rpb24gcygpe2k9bmV3IFdlYWtNYXB9fX1jbGFzcyBVZHQgZXh0ZW5kcyBDc3R7Y29uc3RydWN0b3IodD1udWxsLGU9MSxuPTEsbz0xKXtzdXBlcihudWxsKSx0aGlzLmltYWdlPXtkYXRhOnQsd2lkdGg6ZSxoZWlnaHQ6bixkZXB0aDpvfSx0aGlzLm1hZ0ZpbHRlcj1BcnQsdGhpcy5taW5GaWx0ZXI9QXJ0LHRoaXMud3JhcFI9UnJ0LHRoaXMuZ2VuZXJhdGVNaXBtYXBzPSExLHRoaXMuZmxpcFk9ITEsdGhpcy51bnBhY2tBbGlnbm1lbnQ9MSx0aGlzLm5lZWRzVXBkYXRlPSEwfX1VZHQucHJvdG90eXBlLmlzRGF0YVRleHR1cmUyREFycmF5PSEwO2NsYXNzIFdkdCBleHRlbmRzIENzdHtjb25zdHJ1Y3Rvcih0PW51bGwsZT0xLG49MSxvPTEpe3N1cGVyKG51bGwpLHRoaXMuaW1hZ2U9e2RhdGE6dCx3aWR0aDplLGhlaWdodDpuLGRlcHRoOm99LHRoaXMubWFnRmlsdGVyPUFydCx0aGlzLm1pbkZpbHRlcj1BcnQsdGhpcy53cmFwUj1ScnQsdGhpcy5nZW5lcmF0ZU1pcG1hcHM9ITEsdGhpcy5mbGlwWT0hMSx0aGlzLnVucGFja0FsaWdubWVudD0xLHRoaXMubmVlZHNVcGRhdGU9ITB9fVdkdC5wcm90b3R5cGUuaXNEYXRhVGV4dHVyZTNEPSEwO2NvbnN0IEdkdD1uZXcgQ3N0LFlkdD1uZXcgVWR0LHFkdD1uZXcgV2R0LFpkdD1uZXcgTGN0LFhkdD1bXSxLZHQ9W10sSmR0PW5ldyBGbG9hdDMyQXJyYXkoMTYpLFFkdD1uZXcgRmxvYXQzMkFycmF5KDkpLCRkdD1uZXcgRmxvYXQzMkFycmF5KDQpO2Z1bmN0aW9uIHRwdCh0LGUsbil7Y29uc3Qgbz10WzBdO2lmKG88PTB8fG8+MClyZXR1cm4gdDtjb25zdCBpPWUqbjtsZXQgYT1YZHRbaV07aWYodm9pZCAwPT09YSYmKGE9bmV3IEZsb2F0MzJBcnJheShpKSxYZHRbaV09YSksMCE9PWUpe28udG9BcnJheShhLDApO2ZvcihsZXQgbz0xLGk9MDtvIT09ZTsrK28paSs9bix0W29dLnRvQXJyYXkoYSxpKX1yZXR1cm4gYX1mdW5jdGlvbiBlcHQodCxlKXtpZih0Lmxlbmd0aCE9PWUubGVuZ3RoKXJldHVybiExO2ZvcihsZXQgbj0wLG89dC5sZW5ndGg7bjxvO24rKylpZih0W25dIT09ZVtuXSlyZXR1cm4hMTtyZXR1cm4hMH1mdW5jdGlvbiBucHQodCxlKXtmb3IobGV0IG49MCxvPWUubGVuZ3RoO248bztuKyspdFtuXT1lW25dfWZ1bmN0aW9uIG9wdCh0LGUpe2xldCBuPUtkdFtlXTt2b2lkIDA9PT1uJiYobj1uZXcgSW50MzJBcnJheShlKSxLZHRbZV09bik7Zm9yKGxldCBvPTA7byE9PWU7KytvKW5bb109dC5hbGxvY2F0ZVRleHR1cmVVbml0KCk7cmV0dXJuIG59ZnVuY3Rpb24gaXB0KHQsZSl7Y29uc3Qgbj10aGlzLmNhY2hlO25bMF0hPT1lJiYodC51bmlmb3JtMWYodGhpcy5hZGRyLGUpLG5bMF09ZSl9ZnVuY3Rpb24gYXB0KHQsZSl7Y29uc3Qgbj10aGlzLmNhY2hlO2lmKHZvaWQgMCE9PWUueCluWzBdPT09ZS54JiZuWzFdPT09ZS55fHwodC51bmlmb3JtMmYodGhpcy5hZGRyLGUueCxlLnkpLG5bMF09ZS54LG5bMV09ZS55KTtlbHNle2lmKGVwdChuLGUpKXJldHVybjt0LnVuaWZvcm0yZnYodGhpcy5hZGRyLGUpLG5wdChuLGUpfX1mdW5jdGlvbiBycHQodCxlKXtjb25zdCBuPXRoaXMuY2FjaGU7aWYodm9pZCAwIT09ZS54KW5bMF09PT1lLngmJm5bMV09PT1lLnkmJm5bMl09PT1lLnp8fCh0LnVuaWZvcm0zZih0aGlzLmFkZHIsZS54LGUueSxlLnopLG5bMF09ZS54LG5bMV09ZS55LG5bMl09ZS56KTtlbHNlIGlmKHZvaWQgMCE9PWUuciluWzBdPT09ZS5yJiZuWzFdPT09ZS5nJiZuWzJdPT09ZS5ifHwodC51bmlmb3JtM2YodGhpcy5hZGRyLGUucixlLmcsZS5iKSxuWzBdPWUucixuWzFdPWUuZyxuWzJdPWUuYik7ZWxzZXtpZihlcHQobixlKSlyZXR1cm47dC51bmlmb3JtM2Z2KHRoaXMuYWRkcixlKSxucHQobixlKX19ZnVuY3Rpb24gc3B0KHQsZSl7Y29uc3Qgbj10aGlzLmNhY2hlO2lmKHZvaWQgMCE9PWUueCluWzBdPT09ZS54JiZuWzFdPT09ZS55JiZuWzJdPT09ZS56JiZuWzNdPT09ZS53fHwodC51bmlmb3JtNGYodGhpcy5hZGRyLGUueCxlLnksZS56LGUudyksblswXT1lLngsblsxXT1lLnksblsyXT1lLnosblszXT1lLncpO2Vsc2V7aWYoZXB0KG4sZSkpcmV0dXJuO3QudW5pZm9ybTRmdih0aGlzLmFkZHIsZSksbnB0KG4sZSl9fWZ1bmN0aW9uIGxwdCh0LGUpe2NvbnN0IG49dGhpcy5jYWNoZSxvPWUuZWxlbWVudHM7aWYodm9pZCAwPT09byl7aWYoZXB0KG4sZSkpcmV0dXJuO3QudW5pZm9ybU1hdHJpeDJmdih0aGlzLmFkZHIsITEsZSksbnB0KG4sZSl9ZWxzZXtpZihlcHQobixvKSlyZXR1cm47JGR0LnNldChvKSx0LnVuaWZvcm1NYXRyaXgyZnYodGhpcy5hZGRyLCExLCRkdCksbnB0KG4sbyl9fWZ1bmN0aW9uIGNwdCh0LGUpe2NvbnN0IG49dGhpcy5jYWNoZSxvPWUuZWxlbWVudHM7aWYodm9pZCAwPT09byl7aWYoZXB0KG4sZSkpcmV0dXJuO3QudW5pZm9ybU1hdHJpeDNmdih0aGlzLmFkZHIsITEsZSksbnB0KG4sZSl9ZWxzZXtpZihlcHQobixvKSlyZXR1cm47UWR0LnNldChvKSx0LnVuaWZvcm1NYXRyaXgzZnYodGhpcy5hZGRyLCExLFFkdCksbnB0KG4sbyl9fWZ1bmN0aW9uIGRwdCh0LGUpe2NvbnN0IG49dGhpcy5jYWNoZSxvPWUuZWxlbWVudHM7aWYodm9pZCAwPT09byl7aWYoZXB0KG4sZSkpcmV0dXJuO3QudW5pZm9ybU1hdHJpeDRmdih0aGlzLmFkZHIsITEsZSksbnB0KG4sZSl9ZWxzZXtpZihlcHQobixvKSlyZXR1cm47SmR0LnNldChvKSx0LnVuaWZvcm1NYXRyaXg0ZnYodGhpcy5hZGRyLCExLEpkdCksbnB0KG4sbyl9fWZ1bmN0aW9uIHBwdCh0LGUpe2NvbnN0IG49dGhpcy5jYWNoZTtuWzBdIT09ZSYmKHQudW5pZm9ybTFpKHRoaXMuYWRkcixlKSxuWzBdPWUpfWZ1bmN0aW9uIG1wdCh0LGUpe2NvbnN0IG49dGhpcy5jYWNoZTtlcHQobixlKXx8KHQudW5pZm9ybTJpdih0aGlzLmFkZHIsZSksbnB0KG4sZSkpfWZ1bmN0aW9uIGZwdCh0LGUpe2NvbnN0IG49dGhpcy5jYWNoZTtlcHQobixlKXx8KHQudW5pZm9ybTNpdih0aGlzLmFkZHIsZSksbnB0KG4sZSkpfWZ1bmN0aW9uIHVwdCh0LGUpe2NvbnN0IG49dGhpcy5jYWNoZTtlcHQobixlKXx8KHQudW5pZm9ybTRpdih0aGlzLmFkZHIsZSksbnB0KG4sZSkpfWZ1bmN0aW9uIGdwdCh0LGUpe2NvbnN0IG49dGhpcy5jYWNoZTtuWzBdIT09ZSYmKHQudW5pZm9ybTF1aSh0aGlzLmFkZHIsZSksblswXT1lKX1mdW5jdGlvbiBocHQodCxlKXtjb25zdCBuPXRoaXMuY2FjaGU7ZXB0KG4sZSl8fCh0LnVuaWZvcm0ydWl2KHRoaXMuYWRkcixlKSxucHQobixlKSl9ZnVuY3Rpb24gYnB0KHQsZSl7Y29uc3Qgbj10aGlzLmNhY2hlO2VwdChuLGUpfHwodC51bmlmb3JtM3Vpdih0aGlzLmFkZHIsZSksbnB0KG4sZSkpfWZ1bmN0aW9uIHlwdCh0LGUpe2NvbnN0IG49dGhpcy5jYWNoZTtlcHQobixlKXx8KHQudW5pZm9ybTR1aXYodGhpcy5hZGRyLGUpLG5wdChuLGUpKX1mdW5jdGlvbiBfcHQodCxlLG4pe2NvbnN0IG89dGhpcy5jYWNoZSxpPW4uYWxsb2NhdGVUZXh0dXJlVW5pdCgpO29bMF0hPT1pJiYodC51bmlmb3JtMWkodGhpcy5hZGRyLGkpLG9bMF09aSksbi5zYWZlU2V0VGV4dHVyZTJEKGV8fEdkdCxpKX1mdW5jdGlvbiBDcHQodCxlLG4pe2NvbnN0IG89dGhpcy5jYWNoZSxpPW4uYWxsb2NhdGVUZXh0dXJlVW5pdCgpO29bMF0hPT1pJiYodC51bmlmb3JtMWkodGhpcy5hZGRyLGkpLG9bMF09aSksbi5zZXRUZXh0dXJlM0QoZXx8cWR0LGkpfWZ1bmN0aW9uIE1wdCh0LGUsbil7Y29uc3Qgbz10aGlzLmNhY2hlLGk9bi5hbGxvY2F0ZVRleHR1cmVVbml0KCk7b1swXSE9PWkmJih0LnVuaWZvcm0xaSh0aGlzLmFkZHIsaSksb1swXT1pKSxuLnNhZmVTZXRUZXh0dXJlQ3ViZShlfHxaZHQsaSl9ZnVuY3Rpb24gdnB0KHQsZSxuKXtjb25zdCBvPXRoaXMuY2FjaGUsaT1uLmFsbG9jYXRlVGV4dHVyZVVuaXQoKTtvWzBdIT09aSYmKHQudW5pZm9ybTFpKHRoaXMuYWRkcixpKSxvWzBdPWkpLG4uc2V0VGV4dHVyZTJEQXJyYXkoZXx8WWR0LGkpfWZ1bmN0aW9uIHhwdCh0LGUpe3QudW5pZm9ybTFmdih0aGlzLmFkZHIsZSl9ZnVuY3Rpb24gT3B0KHQsZSl7Y29uc3Qgbj10cHQoZSx0aGlzLnNpemUsMik7dC51bmlmb3JtMmZ2KHRoaXMuYWRkcixuKX1mdW5jdGlvbiBQcHQodCxlKXtjb25zdCBuPXRwdChlLHRoaXMuc2l6ZSwzKTt0LnVuaWZvcm0zZnYodGhpcy5hZGRyLG4pfWZ1bmN0aW9uIHdwdCh0LGUpe2NvbnN0IG49dHB0KGUsdGhpcy5zaXplLDQpO3QudW5pZm9ybTRmdih0aGlzLmFkZHIsbil9ZnVuY3Rpb24ga3B0KHQsZSl7Y29uc3Qgbj10cHQoZSx0aGlzLnNpemUsNCk7dC51bmlmb3JtTWF0cml4MmZ2KHRoaXMuYWRkciwhMSxuKX1mdW5jdGlvbiBTcHQodCxlKXtjb25zdCBuPXRwdChlLHRoaXMuc2l6ZSw5KTt0LnVuaWZvcm1NYXRyaXgzZnYodGhpcy5hZGRyLCExLG4pfWZ1bmN0aW9uIERwdCh0LGUpe2NvbnN0IG49dHB0KGUsdGhpcy5zaXplLDE2KTt0LnVuaWZvcm1NYXRyaXg0ZnYodGhpcy5hZGRyLCExLG4pfWZ1bmN0aW9uIFJwdCh0LGUpe3QudW5pZm9ybTFpdih0aGlzLmFkZHIsZSl9ZnVuY3Rpb24gRXB0KHQsZSl7dC51bmlmb3JtMml2KHRoaXMuYWRkcixlKX1mdW5jdGlvbiBBcHQodCxlKXt0LnVuaWZvcm0zaXYodGhpcy5hZGRyLGUpfWZ1bmN0aW9uIFRwdCh0LGUpe3QudW5pZm9ybTRpdih0aGlzLmFkZHIsZSl9ZnVuY3Rpb24gTnB0KHQsZSl7dC51bmlmb3JtMXVpdih0aGlzLmFkZHIsZSl9ZnVuY3Rpb24genB0KHQsZSl7dC51bmlmb3JtMnVpdih0aGlzLmFkZHIsZSl9ZnVuY3Rpb24gSXB0KHQsZSl7dC51bmlmb3JtM3Vpdih0aGlzLmFkZHIsZSl9ZnVuY3Rpb24gSHB0KHQsZSl7dC51bmlmb3JtNHVpdih0aGlzLmFkZHIsZSl9ZnVuY3Rpb24gRnB0KHQsZSxuKXtjb25zdCBvPWUubGVuZ3RoLGk9b3B0KG4sbyk7dC51bmlmb3JtMWl2KHRoaXMuYWRkcixpKTtmb3IobGV0IHQ9MDt0IT09bzsrK3Qpbi5zYWZlU2V0VGV4dHVyZTJEKGVbdF18fEdkdCxpW3RdKX1mdW5jdGlvbiBMcHQodCxlLG4pe2NvbnN0IG89ZS5sZW5ndGgsaT1vcHQobixvKTt0LnVuaWZvcm0xaXYodGhpcy5hZGRyLGkpO2ZvcihsZXQgdD0wO3QhPT1vOysrdCluLnNhZmVTZXRUZXh0dXJlQ3ViZShlW3RdfHxaZHQsaVt0XSl9ZnVuY3Rpb24gQnB0KHQsZSxuKXt0aGlzLmlkPXQsdGhpcy5hZGRyPW4sdGhpcy5jYWNoZT1bXSx0aGlzLnNldFZhbHVlPShmdW5jdGlvbiBvKHQpe3N3aXRjaCh0KXtjYXNlIDUxMjY6cmV0dXJuIGlwdDtjYXNlIDM1NjY0OnJldHVybiBhcHQ7Y2FzZSAzNTY2NTpyZXR1cm4gcnB0O2Nhc2UgMzU2NjY6cmV0dXJuIHNwdDtjYXNlIDM1Njc0OnJldHVybiBscHQ7Y2FzZSAzNTY3NTpyZXR1cm4gY3B0O2Nhc2UgMzU2NzY6cmV0dXJuIGRwdDtjYXNlIDUxMjQ6Y2FzZSAzNTY3MDpyZXR1cm4gcHB0O2Nhc2UgMzU2Njc6Y2FzZSAzNTY3MTpyZXR1cm4gbXB0O2Nhc2UgMzU2Njg6Y2FzZSAzNTY3MjpyZXR1cm4gZnB0O2Nhc2UgMzU2Njk6Y2FzZSAzNTY3MzpyZXR1cm4gdXB0O2Nhc2UgNTEyNTpyZXR1cm4gZ3B0O2Nhc2UgMzYyOTQ6cmV0dXJuIGhwdDtjYXNlIDM2Mjk1OnJldHVybiBicHQ7Y2FzZSAzNjI5NjpyZXR1cm4geXB0O2Nhc2UgMzU2Nzg6Y2FzZSAzNjE5ODpjYXNlIDM2Mjk4OmNhc2UgMzYzMDY6Y2FzZSAzNTY4MjpyZXR1cm4gX3B0O2Nhc2UgMzU2Nzk6Y2FzZSAzNjI5OTpjYXNlIDM2MzA3OnJldHVybiBDcHQ7Y2FzZSAzNTY4MDpjYXNlIDM2MzAwOmNhc2UgMzYzMDg6Y2FzZSAzNjI5MzpyZXR1cm4gTXB0O2Nhc2UgMzYyODk6Y2FzZSAzNjMwMzpjYXNlIDM2MzExOmNhc2UgMzYyOTI6cmV0dXJuIHZwdH19KShlLnR5cGUpfWZ1bmN0aW9uIFZwdCh0LGUsbil7dGhpcy5pZD10LHRoaXMuYWRkcj1uLHRoaXMuY2FjaGU9W10sdGhpcy5zaXplPWUuc2l6ZSx0aGlzLnNldFZhbHVlPShmdW5jdGlvbiBvKHQpe3N3aXRjaCh0KXtjYXNlIDUxMjY6cmV0dXJuIHhwdDtjYXNlIDM1NjY0OnJldHVybiBPcHQ7Y2FzZSAzNTY2NTpyZXR1cm4gUHB0O2Nhc2UgMzU2NjY6cmV0dXJuIHdwdDtjYXNlIDM1Njc0OnJldHVybiBrcHQ7Y2FzZSAzNTY3NTpyZXR1cm4gU3B0O2Nhc2UgMzU2NzY6cmV0dXJuIERwdDtjYXNlIDUxMjQ6Y2FzZSAzNTY3MDpyZXR1cm4gUnB0O2Nhc2UgMzU2Njc6Y2FzZSAzNTY3MTpyZXR1cm4gRXB0O2Nhc2UgMzU2Njg6Y2FzZSAzNTY3MjpyZXR1cm4gQXB0O2Nhc2UgMzU2Njk6Y2FzZSAzNTY3MzpyZXR1cm4gVHB0O2Nhc2UgNTEyNTpyZXR1cm4gTnB0O2Nhc2UgMzYyOTQ6cmV0dXJuIHpwdDtjYXNlIDM2Mjk1OnJldHVybiBJcHQ7Y2FzZSAzNjI5NjpyZXR1cm4gSHB0O2Nhc2UgMzU2Nzg6Y2FzZSAzNjE5ODpjYXNlIDM2Mjk4OmNhc2UgMzYzMDY6Y2FzZSAzNTY4MjpyZXR1cm4gRnB0O2Nhc2UgMzU2ODA6Y2FzZSAzNjMwMDpjYXNlIDM2MzA4OmNhc2UgMzYyOTM6cmV0dXJuIExwdH19KShlLnR5cGUpfWZ1bmN0aW9uIGpwdCh0KXt0aGlzLmlkPXQsdGhpcy5zZXE9W10sdGhpcy5tYXA9e319VnB0LnByb3RvdHlwZS51cGRhdGVDYWNoZT1mdW5jdGlvbih0KXtjb25zdCBlPXRoaXMuY2FjaGU7dCBpbnN0YW5jZW9mIEZsb2F0MzJBcnJheSYmZS5sZW5ndGghPT10Lmxlbmd0aCYmKHRoaXMuY2FjaGU9bmV3IEZsb2F0MzJBcnJheSh0Lmxlbmd0aCkpLG5wdChlLHQpfSxqcHQucHJvdG90eXBlLnNldFZhbHVlPWZ1bmN0aW9uKHQsZSxuKXtjb25zdCBvPXRoaXMuc2VxO2ZvcihsZXQgaT0wLGE9by5sZW5ndGg7aSE9PWE7KytpKXtjb25zdCBhPW9baV07YS5zZXRWYWx1ZSh0LGVbYS5pZF0sbil9fTtjb25zdCBVcHQ9LyhcdyspKFxdKT8oXFt8XC4pPy9nO2Z1bmN0aW9uIFdwdCh0LGUpe3Quc2VxLnB1c2goZSksdC5tYXBbZS5pZF09ZX1mdW5jdGlvbiBHcHQodCxlLG4pe2NvbnN0IG89dC5uYW1lLGk9by5sZW5ndGg7Zm9yKFVwdC5sYXN0SW5kZXg9MDs7KXtjb25zdCBhPVVwdC5leGVjKG8pLHI9VXB0Lmxhc3RJbmRleDtsZXQgcz1hWzFdO2NvbnN0IGw9YVszXTtpZigiXSI9PT1hWzJdJiYoc3w9MCksdm9pZCAwPT09bHx8IlsiPT09bCYmcisyPT09aSl7V3B0KG4sdm9pZCAwPT09bD9uZXcgQnB0KHMsdCxlKTpuZXcgVnB0KHMsdCxlKSk7YnJlYWt9e2xldCB0PW4ubWFwW3NdO3ZvaWQgMD09PXQmJih0PW5ldyBqcHQocyksV3B0KG4sdCkpLG49dH19fWZ1bmN0aW9uIFlwdCh0LGUpe3RoaXMuc2VxPVtdLHRoaXMubWFwPXt9O2NvbnN0IG49dC5nZXRQcm9ncmFtUGFyYW1ldGVyKGUsMzU3MTgpO2ZvcihsZXQgbz0wO288bjsrK28pe2NvbnN0IG49dC5nZXRBY3RpdmVVbmlmb3JtKGUsbyk7R3B0KG4sdC5nZXRVbmlmb3JtTG9jYXRpb24oZSxuLm5hbWUpLHRoaXMpfX1mdW5jdGlvbiBxcHQodCxlLG4pe2NvbnN0IG89dC5jcmVhdGVTaGFkZXIoZSk7cmV0dXJuIHQuc2hhZGVyU291cmNlKG8sbiksdC5jb21waWxlU2hhZGVyKG8pLG99WXB0LnByb3RvdHlwZS5zZXRWYWx1ZT1mdW5jdGlvbih0LGUsbixvKXtjb25zdCBpPXRoaXMubWFwW2VdO3ZvaWQgMCE9PWkmJmkuc2V0VmFsdWUodCxuLG8pfSxZcHQucHJvdG90eXBlLnNldE9wdGlvbmFsPWZ1bmN0aW9uKHQsZSxuKXtjb25zdCBvPWVbbl07dm9pZCAwIT09byYmdGhpcy5zZXRWYWx1ZSh0LG4sbyl9LFlwdC51cGxvYWQ9ZnVuY3Rpb24odCxlLG4sbyl7Zm9yKGxldCBpPTAsYT1lLmxlbmd0aDtpIT09YTsrK2kpe2NvbnN0IGE9ZVtpXSxyPW5bYS5pZF07ITEhPT1yLm5lZWRzVXBkYXRlJiZhLnNldFZhbHVlKHQsci52YWx1ZSxvKX19LFlwdC5zZXFXaXRoVmFsdWU9ZnVuY3Rpb24odCxlKXtjb25zdCBuPVtdO2ZvcihsZXQgbz0wLGk9dC5sZW5ndGg7byE9PWk7KytvKXtjb25zdCBpPXRbb107aS5pZCBpbiBlJiZuLnB1c2goaSl9cmV0dXJuIG59O2xldCBacHQ9MDtmdW5jdGlvbiBYcHQodCl7c3dpdGNoKHQpe2Nhc2UgUXJ0OnJldHVyblsiTGluZWFyIiwiKCB2YWx1ZSApIl07Y2FzZSAkcnQ6cmV0dXJuWyJzUkdCIiwiKCB2YWx1ZSApIl07Y2FzZSBlc3Q6cmV0dXJuWyJSR0JFIiwiKCB2YWx1ZSApIl07Y2FzZSAzMDA0OnJldHVyblsiUkdCTSIsIiggdmFsdWUsIDcuMCApIl07Y2FzZSAzMDA1OnJldHVyblsiUkdCTSIsIiggdmFsdWUsIDE2LjAgKSJdO2Nhc2UgMzAwNjpyZXR1cm5bIlJHQkQiLCIoIHZhbHVlLCAyNTYuMCApIl07Y2FzZSB0c3Q6cmV0dXJuWyJHYW1tYSIsIiggdmFsdWUsIGZsb2F0KCBHQU1NQV9GQUNUT1IgKSApIl07Y2FzZSAzMDAzOnJldHVyblsiTG9nTHV2IiwiKCB2YWx1ZSApIl07ZGVmYXVsdDpyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFByb2dyYW06IFVuc3VwcG9ydGVkIGVuY29kaW5nOiIsdCksWyJMaW5lYXIiLCIoIHZhbHVlICkiXX19ZnVuY3Rpb24gS3B0KHQsZSxuKXtjb25zdCBvPXQuZ2V0U2hhZGVyUGFyYW1ldGVyKGUsMzU3MTMpLGk9dC5nZXRTaGFkZXJJbmZvTG9nKGUpLnRyaW0oKTtpZihvJiYiIj09PWkpcmV0dXJuIiI7cmV0dXJuIlRIUkVFLldlYkdMU2hhZGVyOiBnbC5nZXRTaGFkZXJJbmZvTG9nKCkgIituKyJcbiIraSsoZnVuY3Rpb24gYSh0KXtjb25zdCBlPXQuc3BsaXQoIlxuIik7Zm9yKGxldCB0PTA7dDxlLmxlbmd0aDt0KyspZVt0XT10KzErIjogIitlW3RdO3JldHVybiBlLmpvaW4oIlxuIil9KSh0LmdldFNoYWRlclNvdXJjZShlKSl9ZnVuY3Rpb24gSnB0KHQsZSl7Y29uc3Qgbj1YcHQoZSk7cmV0dXJuInZlYzQgIit0KyIoIHZlYzQgdmFsdWUgKSB7IHJldHVybiAiK25bMF0rIlRvTGluZWFyIituWzFdKyI7IH0ifWZ1bmN0aW9uIFFwdCh0LGUpe2NvbnN0IG49WHB0KGUpO3JldHVybiJ2ZWM0ICIrdCsiKCB2ZWM0IHZhbHVlICkgeyByZXR1cm4gTGluZWFyVG8iK25bMF0rblsxXSsiOyB9In1mdW5jdGlvbiAkcHQodCxlKXtsZXQgbjtzd2l0Y2goZSl7Y2FzZSAxOm49IkxpbmVhciI7YnJlYWs7Y2FzZSAyOm49IlJlaW5oYXJkIjticmVhaztjYXNlIDM6bj0iT3B0aW1pemVkQ2luZW9uIjticmVhaztjYXNlIDQ6bj0iQUNFU0ZpbG1pYyI7YnJlYWs7Y2FzZSA1Om49IkN1c3RvbSI7YnJlYWs7ZGVmYXVsdDpjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUHJvZ3JhbTogVW5zdXBwb3J0ZWQgdG9uZU1hcHBpbmc6IixlKSxuPSJMaW5lYXIifXJldHVybiJ2ZWMzICIrdCsiKCB2ZWMzIGNvbG9yICkgeyByZXR1cm4gIituKyJUb25lTWFwcGluZyggY29sb3IgKTsgfSJ9ZnVuY3Rpb24gdG10KHQpe3JldHVybiIiIT09dH1mdW5jdGlvbiBlbXQodCxlKXtyZXR1cm4gdC5yZXBsYWNlKC9OVU1fRElSX0xJR0hUUy9nLGUubnVtRGlyTGlnaHRzKS5yZXBsYWNlKC9OVU1fU1BPVF9MSUdIVFMvZyxlLm51bVNwb3RMaWdodHMpLnJlcGxhY2UoL05VTV9SRUNUX0FSRUFfTElHSFRTL2csZS5udW1SZWN0QXJlYUxpZ2h0cykucmVwbGFjZSgvTlVNX1BPSU5UX0xJR0hUUy9nLGUubnVtUG9pbnRMaWdodHMpLnJlcGxhY2UoL05VTV9IRU1JX0xJR0hUUy9nLGUubnVtSGVtaUxpZ2h0cykucmVwbGFjZSgvTlVNX0RJUl9MSUdIVF9TSEFET1dTL2csZS5udW1EaXJMaWdodFNoYWRvd3MpLnJlcGxhY2UoL05VTV9TUE9UX0xJR0hUX1NIQURPV1MvZyxlLm51bVNwb3RMaWdodFNoYWRvd3MpLnJlcGxhY2UoL05VTV9QT0lOVF9MSUdIVF9TSEFET1dTL2csZS5udW1Qb2ludExpZ2h0U2hhZG93cyl9ZnVuY3Rpb24gbm10KHQsZSl7cmV0dXJuIHQucmVwbGFjZSgvTlVNX0NMSVBQSU5HX1BMQU5FUy9nLGUubnVtQ2xpcHBpbmdQbGFuZXMpLnJlcGxhY2UoL1VOSU9OX0NMSVBQSU5HX1BMQU5FUy9nLGUubnVtQ2xpcHBpbmdQbGFuZXMtZS5udW1DbGlwSW50ZXJzZWN0aW9uKX1jb25zdCBvbXQ9L15bIFx0XSojaW5jbHVkZSArPChbXHdcZC4vXSspPi9nbTtmdW5jdGlvbiBpbXQodCl7cmV0dXJuIHQucmVwbGFjZShvbXQsYW10KX1mdW5jdGlvbiBhbXQodCxlKXtjb25zdCBuPUpjdFtlXTtpZih2b2lkIDA9PT1uKXRocm93IG5ldyBFcnJvcigiQ2FuIG5vdCByZXNvbHZlICNpbmNsdWRlIDwiK2UrIj4iKTtyZXR1cm4gaW10KG4pfWNvbnN0IHJtdD0vI3ByYWdtYSB1bnJvbGxfbG9vcFtcc10rP2ZvciBcKCBpbnQgaSBcPSAoXGQrKVw7IGkgPCAoXGQrKVw7IGkgXCtcKyBcKSBceyhbXHNcU10rPykoPz1cfSlcfS9nLHNtdD0vI3ByYWdtYSB1bnJvbGxfbG9vcF9zdGFydFxzK2ZvclxzKlwoXHMqaW50XHMraVxzKj1ccyooXGQrKVxzKjtccyppXHMqPFxzKihcZCspXHMqO1xzKmlccypcK1wrXHMqXClccyp7KFtcc1xTXSs/KX1ccysjcHJhZ21hIHVucm9sbF9sb29wX2VuZC9nO2Z1bmN0aW9uIGxtdCh0KXtyZXR1cm4gdC5yZXBsYWNlKHNtdCxkbXQpLnJlcGxhY2Uocm10LGNtdCl9ZnVuY3Rpb24gY210KHQsZSxuLG8pe3JldHVybiBjb25zb2xlLndhcm4oIldlYkdMUHJvZ3JhbTogI3ByYWdtYSB1bnJvbGxfbG9vcCBzaGFkZXIgc3ludGF4IGlzIGRlcHJlY2F0ZWQuIFBsZWFzZSB1c2UgI3ByYWdtYSB1bnJvbGxfbG9vcF9zdGFydCBzeW50YXggaW5zdGVhZC4iKSxkbXQodCxlLG4sbyl9ZnVuY3Rpb24gZG10KHQsZSxuLG8pe2xldCBpPSIiO2ZvcihsZXQgdD1wYXJzZUludChlKTt0PHBhcnNlSW50KG4pO3QrKylpKz1vLnJlcGxhY2UoL1xbXHMqaVxzKlxdL2csIlsgIit0KyIgXSIpLnJlcGxhY2UoL1VOUk9MTEVEX0xPT1BfSU5ERVgvZyx0KTtyZXR1cm4gaX1mdW5jdGlvbiBwbXQodCl7bGV0IGU9InByZWNpc2lvbiAiK3QucHJlY2lzaW9uKyIgZmxvYXQ7XG5wcmVjaXNpb24gIit0LnByZWNpc2lvbisiIGludDsiO3JldHVybiJoaWdocCI9PT10LnByZWNpc2lvbj9lKz0iXG4jZGVmaW5lIEhJR0hfUFJFQ0lTSU9OIjoibWVkaXVtcCI9PT10LnByZWNpc2lvbj9lKz0iXG4jZGVmaW5lIE1FRElVTV9QUkVDSVNJT04iOiJsb3dwIj09PXQucHJlY2lzaW9uJiYoZSs9IlxuI2RlZmluZSBMT1dfUFJFQ0lTSU9OIiksZX1mdW5jdGlvbiBtbXQodCxlLG4sbyl7Y29uc3QgaT10LmdldENvbnRleHQoKSxhPW4uZGVmaW5lcztsZXQgcj1uLnZlcnRleFNoYWRlcixzPW4uZnJhZ21lbnRTaGFkZXI7Y29uc3QgbD0oZnVuY3Rpb24gYyh0KXtsZXQgZT0iU0hBRE9XTUFQX1RZUEVfQkFTSUMiO3JldHVybiAxPT09dC5zaGFkb3dNYXBUeXBlP2U9IlNIQURPV01BUF9UWVBFX1BDRiI6Mj09PXQuc2hhZG93TWFwVHlwZT9lPSJTSEFET1dNQVBfVFlQRV9QQ0ZfU09GVCI6Mz09PXQuc2hhZG93TWFwVHlwZSYmKGU9IlNIQURPV01BUF9UWVBFX1ZTTSIpLGV9KShuKSxkPShmdW5jdGlvbiBwKHQpe2xldCBlPSJFTlZNQVBfVFlQRV9DVUJFIjtpZih0LmVudk1hcClzd2l0Y2godC5lbnZNYXBNb2RlKXtjYXNlIHdydDpjYXNlIGtydDplPSJFTlZNQVBfVFlQRV9DVUJFIjticmVhaztjYXNlIFNydDpjYXNlIDMwNzplPSJFTlZNQVBfVFlQRV9DVUJFX1VWIn1yZXR1cm4gZX0pKG4pLG09KGZ1bmN0aW9uIGYodCl7bGV0IGU9IkVOVk1BUF9NT0RFX1JFRkxFQ1RJT04iO2lmKHQuZW52TWFwKXN3aXRjaCh0LmVudk1hcE1vZGUpe2Nhc2Uga3J0OmNhc2UgMzA3OmU9IkVOVk1BUF9NT0RFX1JFRlJBQ1RJT04ifXJldHVybiBlfSkobiksdT0oZnVuY3Rpb24gZyh0KXtsZXQgZT0iRU5WTUFQX0JMRU5ESU5HX05PTkUiO2lmKHQuZW52TWFwKXN3aXRjaCh0LmNvbWJpbmUpe2Nhc2UgMDplPSJFTlZNQVBfQkxFTkRJTkdfTVVMVElQTFkiO2JyZWFrO2Nhc2UgMTplPSJFTlZNQVBfQkxFTkRJTkdfTUlYIjticmVhaztjYXNlIDI6ZT0iRU5WTUFQX0JMRU5ESU5HX0FERCJ9cmV0dXJuIGV9KShuKSxoPXQuZ2FtbWFGYWN0b3I+MD90LmdhbW1hRmFjdG9yOjEsYj1uLmlzV2ViR0wyPyIiOihmdW5jdGlvbiB5KHQpe3JldHVyblt0LmV4dGVuc2lvbkRlcml2YXRpdmVzfHx0LmVudk1hcEN1YmVVVnx8dC5idW1wTWFwfHx0LnRhbmdlbnRTcGFjZU5vcm1hbE1hcHx8dC5jbGVhcmNvYXROb3JtYWxNYXB8fHQuZmxhdFNoYWRpbmd8fCJwaHlzaWNhbCI9PT10LnNoYWRlcklEPyIjZXh0ZW5zaW9uIEdMX09FU19zdGFuZGFyZF9kZXJpdmF0aXZlcyA6IGVuYWJsZSI6IiIsKHQuZXh0ZW5zaW9uRnJhZ0RlcHRofHx0LmxvZ2FyaXRobWljRGVwdGhCdWZmZXIpJiZ0LnJlbmRlcmVyRXh0ZW5zaW9uRnJhZ0RlcHRoPyIjZXh0ZW5zaW9uIEdMX0VYVF9mcmFnX2RlcHRoIDogZW5hYmxlIjoiIix0LmV4dGVuc2lvbkRyYXdCdWZmZXJzJiZ0LnJlbmRlcmVyRXh0ZW5zaW9uRHJhd0J1ZmZlcnM/IiNleHRlbnNpb24gR0xfRVhUX2RyYXdfYnVmZmVycyA6IHJlcXVpcmUiOiIiLCh0LmV4dGVuc2lvblNoYWRlclRleHR1cmVMT0R8fHQuZW52TWFwfHx0LnRyYW5zbWlzc2lvbj4wKSYmdC5yZW5kZXJlckV4dGVuc2lvblNoYWRlclRleHR1cmVMb2Q/IiNleHRlbnNpb24gR0xfRVhUX3NoYWRlcl90ZXh0dXJlX2xvZCA6IGVuYWJsZSI6IiJdLmZpbHRlcih0bXQpLmpvaW4oIlxuIil9KShuKSxfPShmdW5jdGlvbiBDKHQpe2NvbnN0IGU9W107Zm9yKGNvbnN0IG4gaW4gdCl7Y29uc3Qgbz10W25dOyExIT09byYmZS5wdXNoKCIjZGVmaW5lICIrbisiICIrbyl9cmV0dXJuIGUuam9pbigiXG4iKX0pKGEpLE09aS5jcmVhdGVQcm9ncmFtKCk7bGV0IHYseCxPPW4uZ2xzbFZlcnNpb24/IiN2ZXJzaW9uICIrbi5nbHNsVmVyc2lvbisiXG4iOiIiO24uaXNSYXdTaGFkZXJNYXRlcmlhbD8odj1bX10uZmlsdGVyKHRtdCkuam9pbigiXG4iKSx2Lmxlbmd0aD4wJiYodis9IlxuIikseD1bYixfXS5maWx0ZXIodG10KS5qb2luKCJcbiIpLHgubGVuZ3RoPjAmJih4Kz0iXG4iKSk6KHY9W3BtdChuKSwiI2RlZmluZSBTSEFERVJfTkFNRSAiK24uc2hhZGVyTmFtZSxfLG4uaW5zdGFuY2luZz8iI2RlZmluZSBVU0VfSU5TVEFOQ0lORyI6IiIsbi5pbnN0YW5jaW5nQ29sb3I/IiNkZWZpbmUgVVNFX0lOU1RBTkNJTkdfQ09MT1IiOiIiLG4uc3VwcG9ydHNWZXJ0ZXhUZXh0dXJlcz8iI2RlZmluZSBWRVJURVhfVEVYVFVSRVMiOiIiLCIjZGVmaW5lIEdBTU1BX0ZBQ1RPUiAiK2gsIiNkZWZpbmUgTUFYX0JPTkVTICIrbi5tYXhCb25lcyxuLnVzZUZvZyYmbi5mb2c/IiNkZWZpbmUgVVNFX0ZPRyI6IiIsbi51c2VGb2cmJm4uZm9nRXhwMj8iI2RlZmluZSBGT0dfRVhQMiI6IiIsbi5tYXA/IiNkZWZpbmUgVVNFX01BUCI6IiIsbi5lbnZNYXA/IiNkZWZpbmUgVVNFX0VOVk1BUCI6IiIsbi5lbnZNYXA/IiNkZWZpbmUgIittOiIiLG4ubGlnaHRNYXA/IiNkZWZpbmUgVVNFX0xJR0hUTUFQIjoiIixuLmFvTWFwPyIjZGVmaW5lIFVTRV9BT01BUCI6IiIsbi5lbWlzc2l2ZU1hcD8iI2RlZmluZSBVU0VfRU1JU1NJVkVNQVAiOiIiLG4uYnVtcE1hcD8iI2RlZmluZSBVU0VfQlVNUE1BUCI6IiIsbi5ub3JtYWxNYXA/IiNkZWZpbmUgVVNFX05PUk1BTE1BUCI6IiIsbi5ub3JtYWxNYXAmJm4ub2JqZWN0U3BhY2VOb3JtYWxNYXA/IiNkZWZpbmUgT0JKRUNUU1BBQ0VfTk9STUFMTUFQIjoiIixuLm5vcm1hbE1hcCYmbi50YW5nZW50U3BhY2VOb3JtYWxNYXA/IiNkZWZpbmUgVEFOR0VOVFNQQUNFX05PUk1BTE1BUCI6IiIsbi5jbGVhcmNvYXRNYXA/IiNkZWZpbmUgVVNFX0NMRUFSQ09BVE1BUCI6IiIsbi5jbGVhcmNvYXRSb3VnaG5lc3NNYXA/IiNkZWZpbmUgVVNFX0NMRUFSQ09BVF9ST1VHSE5FU1NNQVAiOiIiLG4uY2xlYXJjb2F0Tm9ybWFsTWFwPyIjZGVmaW5lIFVTRV9DTEVBUkNPQVRfTk9STUFMTUFQIjoiIixuLmRpc3BsYWNlbWVudE1hcCYmbi5zdXBwb3J0c1ZlcnRleFRleHR1cmVzPyIjZGVmaW5lIFVTRV9ESVNQTEFDRU1FTlRNQVAiOiIiLG4uc3BlY3VsYXJNYXA/IiNkZWZpbmUgVVNFX1NQRUNVTEFSTUFQIjoiIixuLnNwZWN1bGFySW50ZW5zaXR5TWFwPyIjZGVmaW5lIFVTRV9TUEVDVUxBUklOVEVOU0lUWU1BUCI6IiIsbi5zcGVjdWxhclRpbnRNYXA/IiNkZWZpbmUgVVNFX1NQRUNVTEFSVElOVE1BUCI6IiIsbi5yb3VnaG5lc3NNYXA/IiNkZWZpbmUgVVNFX1JPVUdITkVTU01BUCI6IiIsbi5tZXRhbG5lc3NNYXA/IiNkZWZpbmUgVVNFX01FVEFMTkVTU01BUCI6IiIsbi5hbHBoYU1hcD8iI2RlZmluZSBVU0VfQUxQSEFNQVAiOiIiLG4udHJhbnNtaXNzaW9uPyIjZGVmaW5lIFVTRV9UUkFOU01JU1NJT04iOiIiLG4udHJhbnNtaXNzaW9uTWFwPyIjZGVmaW5lIFVTRV9UUkFOU01JU1NJT05NQVAiOiIiLG4udGhpY2tuZXNzTWFwPyIjZGVmaW5lIFVTRV9USElDS05FU1NNQVAiOiIiLG4udmVydGV4VGFuZ2VudHM/IiNkZWZpbmUgVVNFX1RBTkdFTlQiOiIiLG4udmVydGV4Q29sb3JzPyIjZGVmaW5lIFVTRV9DT0xPUiI6IiIsbi52ZXJ0ZXhBbHBoYXM/IiNkZWZpbmUgVVNFX0NPTE9SX0FMUEhBIjoiIixuLnZlcnRleFV2cz8iI2RlZmluZSBVU0VfVVYiOiIiLG4udXZzVmVydGV4T25seT8iI2RlZmluZSBVVlNfVkVSVEVYX09OTFkiOiIiLG4uZmxhdFNoYWRpbmc/IiNkZWZpbmUgRkxBVF9TSEFERUQiOiIiLG4uc2tpbm5pbmc/IiNkZWZpbmUgVVNFX1NLSU5OSU5HIjoiIixuLnVzZVZlcnRleFRleHR1cmU/IiNkZWZpbmUgQk9ORV9URVhUVVJFIjoiIixuLm1vcnBoVGFyZ2V0cz8iI2RlZmluZSBVU0VfTU9SUEhUQVJHRVRTIjoiIixuLm1vcnBoTm9ybWFscyYmITE9PT1uLmZsYXRTaGFkaW5nPyIjZGVmaW5lIFVTRV9NT1JQSE5PUk1BTFMiOiIiLG4uZG91YmxlU2lkZWQ/IiNkZWZpbmUgRE9VQkxFX1NJREVEIjoiIixuLmZsaXBTaWRlZD8iI2RlZmluZSBGTElQX1NJREVEIjoiIixuLnNoYWRvd01hcEVuYWJsZWQ/IiNkZWZpbmUgVVNFX1NIQURPV01BUCI6IiIsbi5zaGFkb3dNYXBFbmFibGVkPyIjZGVmaW5lICIrbDoiIixuLnNpemVBdHRlbnVhdGlvbj8iI2RlZmluZSBVU0VfU0laRUFUVEVOVUFUSU9OIjoiIixuLmxvZ2FyaXRobWljRGVwdGhCdWZmZXI/IiNkZWZpbmUgVVNFX0xPR0RFUFRIQlVGIjoiIixuLmxvZ2FyaXRobWljRGVwdGhCdWZmZXImJm4ucmVuZGVyZXJFeHRlbnNpb25GcmFnRGVwdGg/IiNkZWZpbmUgVVNFX0xPR0RFUFRIQlVGX0VYVCI6IiIsInVuaWZvcm0gbWF0NCBtb2RlbE1hdHJpeDsiLCJ1bmlmb3JtIG1hdDQgbW9kZWxWaWV3TWF0cml4OyIsInVuaWZvcm0gbWF0NCBwcm9qZWN0aW9uTWF0cml4OyIsInVuaWZvcm0gbWF0NCB2aWV3TWF0cml4OyIsInVuaWZvcm0gbWF0MyBub3JtYWxNYXRyaXg7IiwidW5pZm9ybSB2ZWMzIGNhbWVyYVBvc2l0aW9uOyIsInVuaWZvcm0gYm9vbCBpc09ydGhvZ3JhcGhpYzsiLCIjaWZkZWYgVVNFX0lOU1RBTkNJTkciLCJcdGF0dHJpYnV0ZSBtYXQ0IGluc3RhbmNlTWF0cml4OyIsIiNlbmRpZiIsIiNpZmRlZiBVU0VfSU5TVEFOQ0lOR19DT0xPUiIsIlx0YXR0cmlidXRlIHZlYzMgaW5zdGFuY2VDb2xvcjsiLCIjZW5kaWYiLCJhdHRyaWJ1dGUgdmVjMyBwb3NpdGlvbjsiLCJhdHRyaWJ1dGUgdmVjMyBub3JtYWw7IiwiYXR0cmlidXRlIHZlYzIgdXY7IiwiI2lmZGVmIFVTRV9UQU5HRU5UIiwiXHRhdHRyaWJ1dGUgdmVjNCB0YW5nZW50OyIsIiNlbmRpZiIsIiNpZiBkZWZpbmVkKCBVU0VfQ09MT1JfQUxQSEEgKSIsIlx0YXR0cmlidXRlIHZlYzQgY29sb3I7IiwiI2VsaWYgZGVmaW5lZCggVVNFX0NPTE9SICkiLCJcdGF0dHJpYnV0ZSB2ZWMzIGNvbG9yOyIsIiNlbmRpZiIsIiNpZmRlZiBVU0VfTU9SUEhUQVJHRVRTIiwiXHRhdHRyaWJ1dGUgdmVjMyBtb3JwaFRhcmdldDA7IiwiXHRhdHRyaWJ1dGUgdmVjMyBtb3JwaFRhcmdldDE7IiwiXHRhdHRyaWJ1dGUgdmVjMyBtb3JwaFRhcmdldDI7IiwiXHRhdHRyaWJ1dGUgdmVjMyBtb3JwaFRhcmdldDM7IiwiXHQjaWZkZWYgVVNFX01PUlBITk9STUFMUyIsIlx0XHRhdHRyaWJ1dGUgdmVjMyBtb3JwaE5vcm1hbDA7IiwiXHRcdGF0dHJpYnV0ZSB2ZWMzIG1vcnBoTm9ybWFsMTsiLCJcdFx0YXR0cmlidXRlIHZlYzMgbW9ycGhOb3JtYWwyOyIsIlx0XHRhdHRyaWJ1dGUgdmVjMyBtb3JwaE5vcm1hbDM7IiwiXHQjZWxzZSIsIlx0XHRhdHRyaWJ1dGUgdmVjMyBtb3JwaFRhcmdldDQ7IiwiXHRcdGF0dHJpYnV0ZSB2ZWMzIG1vcnBoVGFyZ2V0NTsiLCJcdFx0YXR0cmlidXRlIHZlYzMgbW9ycGhUYXJnZXQ2OyIsIlx0XHRhdHRyaWJ1dGUgdmVjMyBtb3JwaFRhcmdldDc7IiwiXHQjZW5kaWYiLCIjZW5kaWYiLCIjaWZkZWYgVVNFX1NLSU5OSU5HIiwiXHRhdHRyaWJ1dGUgdmVjNCBza2luSW5kZXg7IiwiXHRhdHRyaWJ1dGUgdmVjNCBza2luV2VpZ2h0OyIsIiNlbmRpZiIsIlxuIl0uZmlsdGVyKHRtdCkuam9pbigiXG4iKSx4PVtiLHBtdChuKSwiI2RlZmluZSBTSEFERVJfTkFNRSAiK24uc2hhZGVyTmFtZSxfLG4uYWxwaGFUZXN0PyIjZGVmaW5lIEFMUEhBVEVTVCAiK24uYWxwaGFUZXN0KyhuLmFscGhhVGVzdCUxPyIiOiIuMCIpOiIiLCIjZGVmaW5lIEdBTU1BX0ZBQ1RPUiAiK2gsbi51c2VGb2cmJm4uZm9nPyIjZGVmaW5lIFVTRV9GT0ciOiIiLG4udXNlRm9nJiZuLmZvZ0V4cDI/IiNkZWZpbmUgRk9HX0VYUDIiOiIiLG4ubWFwPyIjZGVmaW5lIFVTRV9NQVAiOiIiLG4ubWF0Y2FwPyIjZGVmaW5lIFVTRV9NQVRDQVAiOiIiLG4uZW52TWFwPyIjZGVmaW5lIFVTRV9FTlZNQVAiOiIiLG4uZW52TWFwPyIjZGVmaW5lICIrZDoiIixuLmVudk1hcD8iI2RlZmluZSAiK206IiIsbi5lbnZNYXA/IiNkZWZpbmUgIit1OiIiLG4ubGlnaHRNYXA/IiNkZWZpbmUgVVNFX0xJR0hUTUFQIjoiIixuLmFvTWFwPyIjZGVmaW5lIFVTRV9BT01BUCI6IiIsbi5lbWlzc2l2ZU1hcD8iI2RlZmluZSBVU0VfRU1JU1NJVkVNQVAiOiIiLG4uYnVtcE1hcD8iI2RlZmluZSBVU0VfQlVNUE1BUCI6IiIsbi5ub3JtYWxNYXA/IiNkZWZpbmUgVVNFX05PUk1BTE1BUCI6IiIsbi5ub3JtYWxNYXAmJm4ub2JqZWN0U3BhY2VOb3JtYWxNYXA/IiNkZWZpbmUgT0JKRUNUU1BBQ0VfTk9STUFMTUFQIjoiIixuLm5vcm1hbE1hcCYmbi50YW5nZW50U3BhY2VOb3JtYWxNYXA/IiNkZWZpbmUgVEFOR0VOVFNQQUNFX05PUk1BTE1BUCI6IiIsbi5jbGVhcmNvYXRNYXA/IiNkZWZpbmUgVVNFX0NMRUFSQ09BVE1BUCI6IiIsbi5jbGVhcmNvYXRSb3VnaG5lc3NNYXA/IiNkZWZpbmUgVVNFX0NMRUFSQ09BVF9ST1VHSE5FU1NNQVAiOiIiLG4uY2xlYXJjb2F0Tm9ybWFsTWFwPyIjZGVmaW5lIFVTRV9DTEVBUkNPQVRfTk9STUFMTUFQIjoiIixuLnNwZWN1bGFyTWFwPyIjZGVmaW5lIFVTRV9TUEVDVUxBUk1BUCI6IiIsbi5zcGVjdWxhckludGVuc2l0eU1hcD8iI2RlZmluZSBVU0VfU1BFQ1VMQVJJTlRFTlNJVFlNQVAiOiIiLG4uc3BlY3VsYXJUaW50TWFwPyIjZGVmaW5lIFVTRV9TUEVDVUxBUlRJTlRNQVAiOiIiLG4ucm91Z2huZXNzTWFwPyIjZGVmaW5lIFVTRV9ST1VHSE5FU1NNQVAiOiIiLG4ubWV0YWxuZXNzTWFwPyIjZGVmaW5lIFVTRV9NRVRBTE5FU1NNQVAiOiIiLG4uYWxwaGFNYXA/IiNkZWZpbmUgVVNFX0FMUEhBTUFQIjoiIixuLnNoZWVuPyIjZGVmaW5lIFVTRV9TSEVFTiI6IiIsbi50cmFuc21pc3Npb24/IiNkZWZpbmUgVVNFX1RSQU5TTUlTU0lPTiI6IiIsbi50cmFuc21pc3Npb25NYXA/IiNkZWZpbmUgVVNFX1RSQU5TTUlTU0lPTk1BUCI6IiIsbi50aGlja25lc3NNYXA/IiNkZWZpbmUgVVNFX1RISUNLTkVTU01BUCI6IiIsbi52ZXJ0ZXhUYW5nZW50cz8iI2RlZmluZSBVU0VfVEFOR0VOVCI6IiIsbi52ZXJ0ZXhDb2xvcnN8fG4uaW5zdGFuY2luZ0NvbG9yPyIjZGVmaW5lIFVTRV9DT0xPUiI6IiIsbi52ZXJ0ZXhBbHBoYXM/IiNkZWZpbmUgVVNFX0NPTE9SX0FMUEhBIjoiIixuLnZlcnRleFV2cz8iI2RlZmluZSBVU0VfVVYiOiIiLG4udXZzVmVydGV4T25seT8iI2RlZmluZSBVVlNfVkVSVEVYX09OTFkiOiIiLG4uZ3JhZGllbnRNYXA/IiNkZWZpbmUgVVNFX0dSQURJRU5UTUFQIjoiIixuLmZsYXRTaGFkaW5nPyIjZGVmaW5lIEZMQVRfU0hBREVEIjoiIixuLmRvdWJsZVNpZGVkPyIjZGVmaW5lIERPVUJMRV9TSURFRCI6IiIsbi5mbGlwU2lkZWQ/IiNkZWZpbmUgRkxJUF9TSURFRCI6IiIsbi5zaGFkb3dNYXBFbmFibGVkPyIjZGVmaW5lIFVTRV9TSEFET1dNQVAiOiIiLG4uc2hhZG93TWFwRW5hYmxlZD8iI2RlZmluZSAiK2w6IiIsbi5wcmVtdWx0aXBsaWVkQWxwaGE/IiNkZWZpbmUgUFJFTVVMVElQTElFRF9BTFBIQSI6IiIsbi5waHlzaWNhbGx5Q29ycmVjdExpZ2h0cz8iI2RlZmluZSBQSFlTSUNBTExZX0NPUlJFQ1RfTElHSFRTIjoiIixuLmxvZ2FyaXRobWljRGVwdGhCdWZmZXI/IiNkZWZpbmUgVVNFX0xPR0RFUFRIQlVGIjoiIixuLmxvZ2FyaXRobWljRGVwdGhCdWZmZXImJm4ucmVuZGVyZXJFeHRlbnNpb25GcmFnRGVwdGg/IiNkZWZpbmUgVVNFX0xPR0RFUFRIQlVGX0VYVCI6IiIsKG4uZXh0ZW5zaW9uU2hhZGVyVGV4dHVyZUxPRHx8bi5lbnZNYXApJiZuLnJlbmRlcmVyRXh0ZW5zaW9uU2hhZGVyVGV4dHVyZUxvZD8iI2RlZmluZSBURVhUVVJFX0xPRF9FWFQiOiIiLCJ1bmlmb3JtIG1hdDQgdmlld01hdHJpeDsiLCJ1bmlmb3JtIHZlYzMgY2FtZXJhUG9zaXRpb247IiwidW5pZm9ybSBib29sIGlzT3J0aG9ncmFwaGljOyIsMCE9PW4udG9uZU1hcHBpbmc/IiNkZWZpbmUgVE9ORV9NQVBQSU5HIjoiIiwwIT09bi50b25lTWFwcGluZz9KY3QudG9uZW1hcHBpbmdfcGFyc19mcmFnbWVudDoiIiwwIT09bi50b25lTWFwcGluZz8kcHQoInRvbmVNYXBwaW5nIixuLnRvbmVNYXBwaW5nKToiIixuLmRpdGhlcmluZz8iI2RlZmluZSBESVRIRVJJTkciOiIiLEpjdC5lbmNvZGluZ3NfcGFyc19mcmFnbWVudCxuLm1hcD9KcHQoIm1hcFRleGVsVG9MaW5lYXIiLG4ubWFwRW5jb2RpbmcpOiIiLG4ubWF0Y2FwP0pwdCgibWF0Y2FwVGV4ZWxUb0xpbmVhciIsbi5tYXRjYXBFbmNvZGluZyk6IiIsbi5lbnZNYXA/SnB0KCJlbnZNYXBUZXhlbFRvTGluZWFyIixuLmVudk1hcEVuY29kaW5nKToiIixuLmVtaXNzaXZlTWFwP0pwdCgiZW1pc3NpdmVNYXBUZXhlbFRvTGluZWFyIixuLmVtaXNzaXZlTWFwRW5jb2RpbmcpOiIiLG4uc3BlY3VsYXJUaW50TWFwP0pwdCgic3BlY3VsYXJUaW50TWFwVGV4ZWxUb0xpbmVhciIsbi5zcGVjdWxhclRpbnRNYXBFbmNvZGluZyk6IiIsbi5saWdodE1hcD9KcHQoImxpZ2h0TWFwVGV4ZWxUb0xpbmVhciIsbi5saWdodE1hcEVuY29kaW5nKToiIixRcHQoImxpbmVhclRvT3V0cHV0VGV4ZWwiLG4ub3V0cHV0RW5jb2RpbmcpLG4uZGVwdGhQYWNraW5nPyIjZGVmaW5lIERFUFRIX1BBQ0tJTkcgIituLmRlcHRoUGFja2luZzoiIiwiXG4iXS5maWx0ZXIodG10KS5qb2luKCJcbiIpKSxyPWltdChyKSxyPWVtdChyLG4pLHI9bm10KHIsbikscz1pbXQocykscz1lbXQocyxuKSxzPW5tdChzLG4pLHI9bG10KHIpLHM9bG10KHMpLG4uaXNXZWJHTDImJiEwIT09bi5pc1Jhd1NoYWRlck1hdGVyaWFsJiYoTz0iI3ZlcnNpb24gMzAwIGVzXG4iLHY9WyIjZGVmaW5lIGF0dHJpYnV0ZSBpbiIsIiNkZWZpbmUgdmFyeWluZyBvdXQiLCIjZGVmaW5lIHRleHR1cmUyRCB0ZXh0dXJlIl0uam9pbigiXG4iKSsiXG4iK3YseD1bIiNkZWZpbmUgdmFyeWluZyBpbiIsbi5nbHNsVmVyc2lvbj09PWFzdD8iIjoib3V0IGhpZ2hwIHZlYzQgcGNfZnJhZ0NvbG9yOyIsbi5nbHNsVmVyc2lvbj09PWFzdD8iIjoiI2RlZmluZSBnbF9GcmFnQ29sb3IgcGNfZnJhZ0NvbG9yIiwiI2RlZmluZSBnbF9GcmFnRGVwdGhFWFQgZ2xfRnJhZ0RlcHRoIiwiI2RlZmluZSB0ZXh0dXJlMkQgdGV4dHVyZSIsIiNkZWZpbmUgdGV4dHVyZUN1YmUgdGV4dHVyZSIsIiNkZWZpbmUgdGV4dHVyZTJEUHJvaiB0ZXh0dXJlUHJvaiIsIiNkZWZpbmUgdGV4dHVyZTJETG9kRVhUIHRleHR1cmVMb2QiLCIjZGVmaW5lIHRleHR1cmUyRFByb2pMb2RFWFQgdGV4dHVyZVByb2pMb2QiLCIjZGVmaW5lIHRleHR1cmVDdWJlTG9kRVhUIHRleHR1cmVMb2QiLCIjZGVmaW5lIHRleHR1cmUyREdyYWRFWFQgdGV4dHVyZUdyYWQiLCIjZGVmaW5lIHRleHR1cmUyRFByb2pHcmFkRVhUIHRleHR1cmVQcm9qR3JhZCIsIiNkZWZpbmUgdGV4dHVyZUN1YmVHcmFkRVhUIHRleHR1cmVHcmFkIl0uam9pbigiXG4iKSsiXG4iK3gpO2NvbnN0IFA9Tyt4K3Msdz1xcHQoaSwzNTYzMyxPK3Yrciksaz1xcHQoaSwzNTYzMixQKTtpZihpLmF0dGFjaFNoYWRlcihNLHcpLGkuYXR0YWNoU2hhZGVyKE0sayksdm9pZCAwIT09bi5pbmRleDBBdHRyaWJ1dGVOYW1lP2kuYmluZEF0dHJpYkxvY2F0aW9uKE0sMCxuLmluZGV4MEF0dHJpYnV0ZU5hbWUpOiEwPT09bi5tb3JwaFRhcmdldHMmJmkuYmluZEF0dHJpYkxvY2F0aW9uKE0sMCwicG9zaXRpb24iKSxpLmxpbmtQcm9ncmFtKE0pLHQuZGVidWcuY2hlY2tTaGFkZXJFcnJvcnMpe2NvbnN0IHQ9aS5nZXRQcm9ncmFtSW5mb0xvZyhNKS50cmltKCksZT1pLmdldFNoYWRlckluZm9Mb2codykudHJpbSgpLG49aS5nZXRTaGFkZXJJbmZvTG9nKGspLnRyaW0oKTtsZXQgbz0hMCxhPSEwO2lmKCExPT09aS5nZXRQcm9ncmFtUGFyYW1ldGVyKE0sMzU3MTQpKXtvPSExO2NvbnN0IGU9S3B0KGksdywidmVydGV4Iiksbj1LcHQoaSxrLCJmcmFnbWVudCIpO2NvbnNvbGUuZXJyb3IoIlRIUkVFLldlYkdMUHJvZ3JhbTogc2hhZGVyIGVycm9yOiAiLGkuZ2V0RXJyb3IoKSwiMzU3MTUiLGkuZ2V0UHJvZ3JhbVBhcmFtZXRlcihNLDM1NzE1KSwiZ2wuZ2V0UHJvZ3JhbUluZm9Mb2ciLHQsZSxuKX1lbHNlIiIhPT10P2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xQcm9ncmFtOiBnbC5nZXRQcm9ncmFtSW5mb0xvZygpIix0KToiIiE9PWUmJiIiIT09bnx8KGE9ITEpO2EmJih0aGlzLmRpYWdub3N0aWNzPXtydW5uYWJsZTpvLHByb2dyYW1Mb2c6dCx2ZXJ0ZXhTaGFkZXI6e2xvZzplLHByZWZpeDp2fSxmcmFnbWVudFNoYWRlcjp7bG9nOm4scHJlZml4Onh9fSl9bGV0IFMsRDtyZXR1cm4gaS5kZWxldGVTaGFkZXIodyksaS5kZWxldGVTaGFkZXIoayksdGhpcy5nZXRVbmlmb3Jtcz1mdW5jdGlvbigpe3JldHVybiB2b2lkIDA9PT1TJiYoUz1uZXcgWXB0KGksTSkpLFN9LHRoaXMuZ2V0QXR0cmlidXRlcz1mdW5jdGlvbigpe3JldHVybiB2b2lkIDA9PT1EJiYoRD0oZnVuY3Rpb24gdChlLG4pe2NvbnN0IG89e30saT1lLmdldFByb2dyYW1QYXJhbWV0ZXIobiwzNTcyMSk7Zm9yKGxldCB0PTA7dDxpO3QrKyl7Y29uc3QgaT1lLmdldEFjdGl2ZUF0dHJpYihuLHQpLm5hbWU7b1tpXT1lLmdldEF0dHJpYkxvY2F0aW9uKG4saSl9cmV0dXJuIG99KShpLE0pKSxEfSx0aGlzLmRlc3Ryb3k9ZnVuY3Rpb24oKXtvLnJlbGVhc2VTdGF0ZXNPZlByb2dyYW0odGhpcyksaS5kZWxldGVQcm9ncmFtKE0pLHRoaXMucHJvZ3JhbT12b2lkIDB9LHRoaXMubmFtZT1uLnNoYWRlck5hbWUsdGhpcy5pZD1acHQrKyx0aGlzLmNhY2hlS2V5PWUsdGhpcy51c2VkVGltZXM9MSx0aGlzLnByb2dyYW09TSx0aGlzLnZlcnRleFNoYWRlcj13LHRoaXMuZnJhZ21lbnRTaGFkZXI9ayx0aGlzfWZ1bmN0aW9uIGZtdCh0LGUsbixvLGksYSxyKXtjb25zdCBzPVtdLGw9aS5pc1dlYkdMMixjPWkubG9nYXJpdGhtaWNEZXB0aEJ1ZmZlcixkPWkuZmxvYXRWZXJ0ZXhUZXh0dXJlcyxwPWkubWF4VmVydGV4VW5pZm9ybXMsbT1pLnZlcnRleFRleHR1cmVzO2xldCBmPWkucHJlY2lzaW9uO2NvbnN0IHU9e01lc2hEZXB0aE1hdGVyaWFsOiJkZXB0aCIsTWVzaERpc3RhbmNlTWF0ZXJpYWw6ImRpc3RhbmNlUkdCQSIsTWVzaE5vcm1hbE1hdGVyaWFsOiJub3JtYWwiLE1lc2hCYXNpY01hdGVyaWFsOiJiYXNpYyIsTWVzaExhbWJlcnRNYXRlcmlhbDoibGFtYmVydCIsTWVzaFBob25nTWF0ZXJpYWw6InBob25nIixNZXNoVG9vbk1hdGVyaWFsOiJ0b29uIixNZXNoU3RhbmRhcmRNYXRlcmlhbDoicGh5c2ljYWwiLE1lc2hQaHlzaWNhbE1hdGVyaWFsOiJwaHlzaWNhbCIsTWVzaE1hdGNhcE1hdGVyaWFsOiJtYXRjYXAiLExpbmVCYXNpY01hdGVyaWFsOiJiYXNpYyIsTGluZURhc2hlZE1hdGVyaWFsOiJkYXNoZWQiLFBvaW50c01hdGVyaWFsOiJwb2ludHMiLFNoYWRvd01hdGVyaWFsOiJzaGFkb3ciLFNwcml0ZU1hdGVyaWFsOiJzcHJpdGUifSxnPVsicHJlY2lzaW9uIiwiaXNXZWJHTDIiLCJzdXBwb3J0c1ZlcnRleFRleHR1cmVzIiwib3V0cHV0RW5jb2RpbmciLCJpbnN0YW5jaW5nIiwiaW5zdGFuY2luZ0NvbG9yIiwibWFwIiwibWFwRW5jb2RpbmciLCJtYXRjYXAiLCJtYXRjYXBFbmNvZGluZyIsImVudk1hcCIsImVudk1hcE1vZGUiLCJlbnZNYXBFbmNvZGluZyIsImVudk1hcEN1YmVVViIsImxpZ2h0TWFwIiwibGlnaHRNYXBFbmNvZGluZyIsImFvTWFwIiwiZW1pc3NpdmVNYXAiLCJlbWlzc2l2ZU1hcEVuY29kaW5nIiwiYnVtcE1hcCIsIm5vcm1hbE1hcCIsIm9iamVjdFNwYWNlTm9ybWFsTWFwIiwidGFuZ2VudFNwYWNlTm9ybWFsTWFwIiwiY2xlYXJjb2F0TWFwIiwiY2xlYXJjb2F0Um91Z2huZXNzTWFwIiwiY2xlYXJjb2F0Tm9ybWFsTWFwIiwiZGlzcGxhY2VtZW50TWFwIiwic3BlY3VsYXJNYXAiLCJzcGVjdWxhckludGVuc2l0eU1hcCIsInNwZWN1bGFyVGludE1hcCIsInNwZWN1bGFyVGludE1hcEVuY29kaW5nIiwicm91Z2huZXNzTWFwIiwibWV0YWxuZXNzTWFwIiwiZ3JhZGllbnRNYXAiLCJhbHBoYU1hcCIsImNvbWJpbmUiLCJ2ZXJ0ZXhDb2xvcnMiLCJ2ZXJ0ZXhBbHBoYXMiLCJ2ZXJ0ZXhUYW5nZW50cyIsInZlcnRleFV2cyIsInV2c1ZlcnRleE9ubHkiLCJmb2ciLCJ1c2VGb2ciLCJmb2dFeHAyIiwiZmxhdFNoYWRpbmciLCJzaXplQXR0ZW51YXRpb24iLCJsb2dhcml0aG1pY0RlcHRoQnVmZmVyIiwic2tpbm5pbmciLCJtYXhCb25lcyIsInVzZVZlcnRleFRleHR1cmUiLCJtb3JwaFRhcmdldHMiLCJtb3JwaE5vcm1hbHMiLCJwcmVtdWx0aXBsaWVkQWxwaGEiLCJudW1EaXJMaWdodHMiLCJudW1Qb2ludExpZ2h0cyIsIm51bVNwb3RMaWdodHMiLCJudW1IZW1pTGlnaHRzIiwibnVtUmVjdEFyZWFMaWdodHMiLCJudW1EaXJMaWdodFNoYWRvd3MiLCJudW1Qb2ludExpZ2h0U2hhZG93cyIsIm51bVNwb3RMaWdodFNoYWRvd3MiLCJzaGFkb3dNYXBFbmFibGVkIiwic2hhZG93TWFwVHlwZSIsInRvbmVNYXBwaW5nIiwicGh5c2ljYWxseUNvcnJlY3RMaWdodHMiLCJhbHBoYVRlc3QiLCJkb3VibGVTaWRlZCIsImZsaXBTaWRlZCIsIm51bUNsaXBwaW5nUGxhbmVzIiwibnVtQ2xpcEludGVyc2VjdGlvbiIsImRlcHRoUGFja2luZyIsImRpdGhlcmluZyIsInNoZWVuIiwidHJhbnNtaXNzaW9uIiwidHJhbnNtaXNzaW9uTWFwIiwidGhpY2tuZXNzTWFwIl07ZnVuY3Rpb24gaCh0KXtsZXQgZTtyZXR1cm4gdCYmdC5pc1RleHR1cmU/ZT10LmVuY29kaW5nOnQmJnQuaXNXZWJHTFJlbmRlclRhcmdldD8oY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFByb2dyYW1zLmdldFRleHR1cmVFbmNvZGluZ0Zyb21NYXA6IGRvbid0IHVzZSByZW5kZXIgdGFyZ2V0cyBhcyB0ZXh0dXJlcy4gVXNlIHRoZWlyIC50ZXh0dXJlIHByb3BlcnR5IGluc3RlYWQuIiksZT10LnRleHR1cmUuZW5jb2RpbmcpOmU9UXJ0LGV9cmV0dXJue2dldFBhcmFtZXRlcnM6ZnVuY3Rpb24gYihhLHMsZyx5LF8pe2NvbnN0IEM9eS5mb2csTT0oYS5pc01lc2hTdGFuZGFyZE1hdGVyaWFsP246ZSkuZ2V0KGEuZW52TWFwfHwoYS5pc01lc2hTdGFuZGFyZE1hdGVyaWFsP3kuZW52aXJvbm1lbnQ6bnVsbCkpLHY9dVthLnR5cGVdLHg9Xy5pc1NraW5uZWRNZXNoPyhmdW5jdGlvbiBPKHQpe2NvbnN0IGU9dC5za2VsZXRvbi5ib25lcztpZihkKXJldHVybiAxMDI0O3tjb25zdCB0PU1hdGguZmxvb3IoKHAtMjApLzQpLG49TWF0aC5taW4odCxlLmxlbmd0aCk7cmV0dXJuIG48ZS5sZW5ndGg/KGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogU2tlbGV0b24gaGFzICIrZS5sZW5ndGgrIiBib25lcy4gVGhpcyBHUFUgc3VwcG9ydHMgIituKyIuIiksMCk6bn19KShfKTowO2xldCBQLHc7aWYobnVsbCE9PWEucHJlY2lzaW9uJiYoZj1pLmdldE1heFByZWNpc2lvbihhLnByZWNpc2lvbiksZiE9PWEucHJlY2lzaW9uJiZjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUHJvZ3JhbS5nZXRQYXJhbWV0ZXJzOiIsYS5wcmVjaXNpb24sIm5vdCBzdXBwb3J0ZWQsIHVzaW5nIixmLCJpbnN0ZWFkLiIpKSx2KXtjb25zdCB0PSRjdFt2XTtQPXQudmVydGV4U2hhZGVyLHc9dC5mcmFnbWVudFNoYWRlcn1lbHNlIFA9YS52ZXJ0ZXhTaGFkZXIsdz1hLmZyYWdtZW50U2hhZGVyO2NvbnN0IGs9dC5nZXRSZW5kZXJUYXJnZXQoKTtyZXR1cm57aXNXZWJHTDI6bCxzaGFkZXJJRDp2LHNoYWRlck5hbWU6YS50eXBlLHZlcnRleFNoYWRlcjpQLGZyYWdtZW50U2hhZGVyOncsZGVmaW5lczphLmRlZmluZXMsaXNSYXdTaGFkZXJNYXRlcmlhbDohMD09PWEuaXNSYXdTaGFkZXJNYXRlcmlhbCxnbHNsVmVyc2lvbjphLmdsc2xWZXJzaW9uLHByZWNpc2lvbjpmLGluc3RhbmNpbmc6ITA9PT1fLmlzSW5zdGFuY2VkTWVzaCxpbnN0YW5jaW5nQ29sb3I6ITA9PT1fLmlzSW5zdGFuY2VkTWVzaCYmbnVsbCE9PV8uaW5zdGFuY2VDb2xvcixzdXBwb3J0c1ZlcnRleFRleHR1cmVzOm0sb3V0cHV0RW5jb2Rpbmc6bnVsbCE9PWs/aChrLnRleHR1cmUpOnQub3V0cHV0RW5jb2RpbmcsbWFwOiEhYS5tYXAsbWFwRW5jb2Rpbmc6aChhLm1hcCksbWF0Y2FwOiEhYS5tYXRjYXAsbWF0Y2FwRW5jb2Rpbmc6aChhLm1hdGNhcCksZW52TWFwOiEhTSxlbnZNYXBNb2RlOk0mJk0ubWFwcGluZyxlbnZNYXBFbmNvZGluZzpoKE0pLGVudk1hcEN1YmVVVjohIU0mJihNLm1hcHBpbmc9PT1TcnR8fDMwNz09PU0ubWFwcGluZyksbGlnaHRNYXA6ISFhLmxpZ2h0TWFwLGxpZ2h0TWFwRW5jb2Rpbmc6aChhLmxpZ2h0TWFwKSxhb01hcDohIWEuYW9NYXAsZW1pc3NpdmVNYXA6ISFhLmVtaXNzaXZlTWFwLGVtaXNzaXZlTWFwRW5jb2Rpbmc6aChhLmVtaXNzaXZlTWFwKSxidW1wTWFwOiEhYS5idW1wTWFwLG5vcm1hbE1hcDohIWEubm9ybWFsTWFwLG9iamVjdFNwYWNlTm9ybWFsTWFwOjE9PT1hLm5vcm1hbE1hcFR5cGUsdGFuZ2VudFNwYWNlTm9ybWFsTWFwOjA9PT1hLm5vcm1hbE1hcFR5cGUsY2xlYXJjb2F0TWFwOiEhYS5jbGVhcmNvYXRNYXAsY2xlYXJjb2F0Um91Z2huZXNzTWFwOiEhYS5jbGVhcmNvYXRSb3VnaG5lc3NNYXAsY2xlYXJjb2F0Tm9ybWFsTWFwOiEhYS5jbGVhcmNvYXROb3JtYWxNYXAsZGlzcGxhY2VtZW50TWFwOiEhYS5kaXNwbGFjZW1lbnRNYXAscm91Z2huZXNzTWFwOiEhYS5yb3VnaG5lc3NNYXAsbWV0YWxuZXNzTWFwOiEhYS5tZXRhbG5lc3NNYXAsc3BlY3VsYXJNYXA6ISFhLnNwZWN1bGFyTWFwLHNwZWN1bGFySW50ZW5zaXR5TWFwOiEhYS5zcGVjdWxhckludGVuc2l0eU1hcCxzcGVjdWxhclRpbnRNYXA6ISFhLnNwZWN1bGFyVGludE1hcCxzcGVjdWxhclRpbnRNYXBFbmNvZGluZzpoKGEuc3BlY3VsYXJUaW50TWFwKSxhbHBoYU1hcDohIWEuYWxwaGFNYXAsZ3JhZGllbnRNYXA6ISFhLmdyYWRpZW50TWFwLHNoZWVuOiEhYS5zaGVlbix0cmFuc21pc3Npb246ISFhLnRyYW5zbWlzc2lvbix0cmFuc21pc3Npb25NYXA6ISFhLnRyYW5zbWlzc2lvbk1hcCx0aGlja25lc3NNYXA6ISFhLnRoaWNrbmVzc01hcCxjb21iaW5lOmEuY29tYmluZSx2ZXJ0ZXhUYW5nZW50czohIWEubm9ybWFsTWFwJiYhIV8uZ2VvbWV0cnkmJiEhXy5nZW9tZXRyeS5hdHRyaWJ1dGVzLnRhbmdlbnQsdmVydGV4Q29sb3JzOmEudmVydGV4Q29sb3JzLHZlcnRleEFscGhhczohMD09PWEudmVydGV4Q29sb3JzJiYhIV8uZ2VvbWV0cnkmJiEhXy5nZW9tZXRyeS5hdHRyaWJ1dGVzLmNvbG9yJiY0PT09Xy5nZW9tZXRyeS5hdHRyaWJ1dGVzLmNvbG9yLml0ZW1TaXplLHZlcnRleFV2czohIShhLm1hcHx8YS5idW1wTWFwfHxhLm5vcm1hbE1hcHx8YS5zcGVjdWxhck1hcHx8YS5hbHBoYU1hcHx8YS5lbWlzc2l2ZU1hcHx8YS5yb3VnaG5lc3NNYXB8fGEubWV0YWxuZXNzTWFwfHxhLmNsZWFyY29hdE1hcHx8YS5jbGVhcmNvYXRSb3VnaG5lc3NNYXB8fGEuY2xlYXJjb2F0Tm9ybWFsTWFwfHxhLmRpc3BsYWNlbWVudE1hcHx8YS50cmFuc21pc3Npb25NYXB8fGEudGhpY2tuZXNzTWFwfHxhLnNwZWN1bGFySW50ZW5zaXR5TWFwfHxhLnNwZWN1bGFyVGludE1hcCksdXZzVmVydGV4T25seTohKGEubWFwfHxhLmJ1bXBNYXB8fGEubm9ybWFsTWFwfHxhLnNwZWN1bGFyTWFwfHxhLmFscGhhTWFwfHxhLmVtaXNzaXZlTWFwfHxhLnJvdWdobmVzc01hcHx8YS5tZXRhbG5lc3NNYXB8fGEuY2xlYXJjb2F0Tm9ybWFsTWFwfHxhLnRyYW5zbWlzc2lvbnx8YS50cmFuc21pc3Npb25NYXB8fGEudGhpY2tuZXNzTWFwfHxhLnNwZWN1bGFySW50ZW5zaXR5TWFwfHxhLnNwZWN1bGFyVGludE1hcHx8IWEuZGlzcGxhY2VtZW50TWFwKSxmb2c6ISFDLHVzZUZvZzphLmZvZyxmb2dFeHAyOkMmJkMuaXNGb2dFeHAyLGZsYXRTaGFkaW5nOiEhYS5mbGF0U2hhZGluZyxzaXplQXR0ZW51YXRpb246YS5zaXplQXR0ZW51YXRpb24sbG9nYXJpdGhtaWNEZXB0aEJ1ZmZlcjpjLHNraW5uaW5nOiEwPT09Xy5pc1NraW5uZWRNZXNoJiZ4PjAsbWF4Qm9uZXM6eCx1c2VWZXJ0ZXhUZXh0dXJlOmQsbW9ycGhUYXJnZXRzOiEhXy5nZW9tZXRyeSYmISFfLmdlb21ldHJ5Lm1vcnBoQXR0cmlidXRlcy5wb3NpdGlvbixtb3JwaE5vcm1hbHM6ISFfLmdlb21ldHJ5JiYhIV8uZ2VvbWV0cnkubW9ycGhBdHRyaWJ1dGVzLm5vcm1hbCxudW1EaXJMaWdodHM6cy5kaXJlY3Rpb25hbC5sZW5ndGgsbnVtUG9pbnRMaWdodHM6cy5wb2ludC5sZW5ndGgsbnVtU3BvdExpZ2h0czpzLnNwb3QubGVuZ3RoLG51bVJlY3RBcmVhTGlnaHRzOnMucmVjdEFyZWEubGVuZ3RoLG51bUhlbWlMaWdodHM6cy5oZW1pLmxlbmd0aCxudW1EaXJMaWdodFNoYWRvd3M6cy5kaXJlY3Rpb25hbFNoYWRvd01hcC5sZW5ndGgsbnVtUG9pbnRMaWdodFNoYWRvd3M6cy5wb2ludFNoYWRvd01hcC5sZW5ndGgsbnVtU3BvdExpZ2h0U2hhZG93czpzLnNwb3RTaGFkb3dNYXAubGVuZ3RoLG51bUNsaXBwaW5nUGxhbmVzOnIubnVtUGxhbmVzLG51bUNsaXBJbnRlcnNlY3Rpb246ci5udW1JbnRlcnNlY3Rpb24sZGl0aGVyaW5nOmEuZGl0aGVyaW5nLHNoYWRvd01hcEVuYWJsZWQ6dC5zaGFkb3dNYXAuZW5hYmxlZCYmZy5sZW5ndGg+MCxzaGFkb3dNYXBUeXBlOnQuc2hhZG93TWFwLnR5cGUsdG9uZU1hcHBpbmc6YS50b25lTWFwcGVkP3QudG9uZU1hcHBpbmc6MCxwaHlzaWNhbGx5Q29ycmVjdExpZ2h0czp0LnBoeXNpY2FsbHlDb3JyZWN0TGlnaHRzLHByZW11bHRpcGxpZWRBbHBoYTphLnByZW11bHRpcGxpZWRBbHBoYSxhbHBoYVRlc3Q6YS5hbHBoYVRlc3QsZG91YmxlU2lkZWQ6Mj09PWEuc2lkZSxmbGlwU2lkZWQ6MT09PWEuc2lkZSxkZXB0aFBhY2tpbmc6dm9pZCAwIT09YS5kZXB0aFBhY2tpbmcmJmEuZGVwdGhQYWNraW5nLGluZGV4MEF0dHJpYnV0ZU5hbWU6YS5pbmRleDBBdHRyaWJ1dGVOYW1lLGV4dGVuc2lvbkRlcml2YXRpdmVzOmEuZXh0ZW5zaW9ucyYmYS5leHRlbnNpb25zLmRlcml2YXRpdmVzLGV4dGVuc2lvbkZyYWdEZXB0aDphLmV4dGVuc2lvbnMmJmEuZXh0ZW5zaW9ucy5mcmFnRGVwdGgsZXh0ZW5zaW9uRHJhd0J1ZmZlcnM6YS5leHRlbnNpb25zJiZhLmV4dGVuc2lvbnMuZHJhd0J1ZmZlcnMsZXh0ZW5zaW9uU2hhZGVyVGV4dHVyZUxPRDphLmV4dGVuc2lvbnMmJmEuZXh0ZW5zaW9ucy5zaGFkZXJUZXh0dXJlTE9ELHJlbmRlcmVyRXh0ZW5zaW9uRnJhZ0RlcHRoOmx8fG8uaGFzKCJFWFRfZnJhZ19kZXB0aCIpLHJlbmRlcmVyRXh0ZW5zaW9uRHJhd0J1ZmZlcnM6bHx8by5oYXMoIldFQkdMX2RyYXdfYnVmZmVycyIpLHJlbmRlcmVyRXh0ZW5zaW9uU2hhZGVyVGV4dHVyZUxvZDpsfHxvLmhhcygiRVhUX3NoYWRlcl90ZXh0dXJlX2xvZCIpLGN1c3RvbVByb2dyYW1DYWNoZUtleTphLmN1c3RvbVByb2dyYW1DYWNoZUtleSgpfX0sZ2V0UHJvZ3JhbUNhY2hlS2V5OmZ1bmN0aW9uIHkoZSl7Y29uc3Qgbj1bXTtpZihlLnNoYWRlcklEP24ucHVzaChlLnNoYWRlcklEKToobi5wdXNoKGUuZnJhZ21lbnRTaGFkZXIpLG4ucHVzaChlLnZlcnRleFNoYWRlcikpLHZvaWQgMCE9PWUuZGVmaW5lcylmb3IoY29uc3QgdCBpbiBlLmRlZmluZXMpbi5wdXNoKHQpLG4ucHVzaChlLmRlZmluZXNbdF0pO2lmKCExPT09ZS5pc1Jhd1NoYWRlck1hdGVyaWFsKXtmb3IobGV0IHQ9MDt0PGcubGVuZ3RoO3QrKyluLnB1c2goZVtnW3RdXSk7bi5wdXNoKHQub3V0cHV0RW5jb2RpbmcpLG4ucHVzaCh0LmdhbW1hRmFjdG9yKX1yZXR1cm4gbi5wdXNoKGUuY3VzdG9tUHJvZ3JhbUNhY2hlS2V5KSxuLmpvaW4oKX0sZ2V0VW5pZm9ybXM6ZnVuY3Rpb24gXyh0KXtjb25zdCBlPXVbdC50eXBlXTtsZXQgbjtpZihlKXtuPVRjdC5jbG9uZSgkY3RbZV0udW5pZm9ybXMpfWVsc2Ugbj10LnVuaWZvcm1zO3JldHVybiBufSxhY3F1aXJlUHJvZ3JhbTpmdW5jdGlvbiBDKGUsbil7bGV0IG87Zm9yKGxldCB0PTAsZT1zLmxlbmd0aDt0PGU7dCsrKXtjb25zdCBlPXNbdF07aWYoZS5jYWNoZUtleT09PW4pe289ZSwrK28udXNlZFRpbWVzO2JyZWFrfX1yZXR1cm4gdm9pZCAwPT09byYmKG89bmV3IG1tdCh0LG4sZSxhKSxzLnB1c2gobykpLG99LHJlbGVhc2VQcm9ncmFtOmZ1bmN0aW9uIE0odCl7aWYoMD09LS10LnVzZWRUaW1lcyl7Y29uc3QgZT1zLmluZGV4T2YodCk7c1tlXT1zW3MubGVuZ3RoLTFdLHMucG9wKCksdC5kZXN0cm95KCl9fSxwcm9ncmFtczpzfX1mdW5jdGlvbiB1bXQoKXtsZXQgdD1uZXcgV2Vha01hcDtyZXR1cm57Z2V0OmZ1bmN0aW9uIGUobil7bGV0IG89dC5nZXQobik7cmV0dXJuIHZvaWQgMD09PW8mJihvPXt9LHQuc2V0KG4sbykpLG99LHJlbW92ZTpmdW5jdGlvbiBuKGUpe3QuZGVsZXRlKGUpfSx1cGRhdGU6ZnVuY3Rpb24gbyhlLG4saSl7dC5nZXQoZSlbbl09aX0sZGlzcG9zZTpmdW5jdGlvbiBpKCl7dD1uZXcgV2Vha01hcH19fWZ1bmN0aW9uIGdtdCh0LGUpe3JldHVybiB0Lmdyb3VwT3JkZXIhPT1lLmdyb3VwT3JkZXI/dC5ncm91cE9yZGVyLWUuZ3JvdXBPcmRlcjp0LnJlbmRlck9yZGVyIT09ZS5yZW5kZXJPcmRlcj90LnJlbmRlck9yZGVyLWUucmVuZGVyT3JkZXI6dC5wcm9ncmFtIT09ZS5wcm9ncmFtP3QucHJvZ3JhbS5pZC1lLnByb2dyYW0uaWQ6dC5tYXRlcmlhbC5pZCE9PWUubWF0ZXJpYWwuaWQ/dC5tYXRlcmlhbC5pZC1lLm1hdGVyaWFsLmlkOnQueiE9PWUuej90LnotZS56OnQuaWQtZS5pZH1mdW5jdGlvbiBobXQodCxlKXtyZXR1cm4gdC5ncm91cE9yZGVyIT09ZS5ncm91cE9yZGVyP3QuZ3JvdXBPcmRlci1lLmdyb3VwT3JkZXI6dC5yZW5kZXJPcmRlciE9PWUucmVuZGVyT3JkZXI/dC5yZW5kZXJPcmRlci1lLnJlbmRlck9yZGVyOnQueiE9PWUuej9lLnotdC56OnQuaWQtZS5pZH1mdW5jdGlvbiBibXQodCl7Y29uc3QgZT1bXTtsZXQgbj0wO2NvbnN0IG89W10saT1bXSxhPVtdLHI9e2lkOi0xfTtmdW5jdGlvbiBzKG8saSxhLHMsbCxjKXtsZXQgZD1lW25dO2NvbnN0IHA9dC5nZXQoYSk7cmV0dXJuIHZvaWQgMD09PWQ/KGQ9e2lkOm8uaWQsb2JqZWN0Om8sZ2VvbWV0cnk6aSxtYXRlcmlhbDphLHByb2dyYW06cC5wcm9ncmFtfHxyLGdyb3VwT3JkZXI6cyxyZW5kZXJPcmRlcjpvLnJlbmRlck9yZGVyLHo6bCxncm91cDpjfSxlW25dPWQpOihkLmlkPW8uaWQsZC5vYmplY3Q9byxkLmdlb21ldHJ5PWksZC5tYXRlcmlhbD1hLGQucHJvZ3JhbT1wLnByb2dyYW18fHIsZC5ncm91cE9yZGVyPXMsZC5yZW5kZXJPcmRlcj1vLnJlbmRlck9yZGVyLGQuej1sLGQuZ3JvdXA9YyksbisrLGR9cmV0dXJue29wYXF1ZTpvLHRyYW5zbWlzc2l2ZTppLHRyYW5zcGFyZW50OmEsaW5pdDpmdW5jdGlvbiBsKCl7bj0wLG8ubGVuZ3RoPTAsaS5sZW5ndGg9MCxhLmxlbmd0aD0wfSxwdXNoOmZ1bmN0aW9uIGModCxlLG4scixsLGQpe2NvbnN0IHA9cyh0LGUsbixyLGwsZCk7bi50cmFuc21pc3Npb24+MD9pLnB1c2gocCk6ITA9PT1uLnRyYW5zcGFyZW50P2EucHVzaChwKTpvLnB1c2gocCl9LHVuc2hpZnQ6ZnVuY3Rpb24gZCh0LGUsbixyLGwsYyl7Y29uc3QgZD1zKHQsZSxuLHIsbCxjKTtuLnRyYW5zbWlzc2lvbj4wP2kudW5zaGlmdChkKTohMD09PW4udHJhbnNwYXJlbnQ/YS51bnNoaWZ0KGQpOm8udW5zaGlmdChkKX0sZmluaXNoOmZ1bmN0aW9uIHAoKXtmb3IobGV0IHQ9bixvPWUubGVuZ3RoO3Q8bzt0Kyspe2NvbnN0IG49ZVt0XTtpZihudWxsPT09bi5pZClicmVhaztuLmlkPW51bGwsbi5vYmplY3Q9bnVsbCxuLmdlb21ldHJ5PW51bGwsbi5tYXRlcmlhbD1udWxsLG4ucHJvZ3JhbT1udWxsLG4uZ3JvdXA9bnVsbH19LHNvcnQ6ZnVuY3Rpb24gbSh0LGUpe28ubGVuZ3RoPjEmJm8uc29ydCh0fHxnbXQpLGkubGVuZ3RoPjEmJmkuc29ydChlfHxobXQpLGEubGVuZ3RoPjEmJmEuc29ydChlfHxobXQpfX19ZnVuY3Rpb24geW10KHQpe2xldCBlPW5ldyBXZWFrTWFwO3JldHVybntnZXQ6ZnVuY3Rpb24gbihvLGkpe2xldCBhO3JldHVybiExPT09ZS5oYXMobyk/KGE9bmV3IGJtdCh0KSxlLnNldChvLFthXSkpOmk+PWUuZ2V0KG8pLmxlbmd0aD8oYT1uZXcgYm10KHQpLGUuZ2V0KG8pLnB1c2goYSkpOmE9ZS5nZXQobylbaV0sYX0sZGlzcG9zZTpmdW5jdGlvbiBvKCl7ZT1uZXcgV2Vha01hcH19fWZ1bmN0aW9uIF9tdCgpe2NvbnN0IHQ9e307cmV0dXJue2dldDpmdW5jdGlvbihlKXtpZih2b2lkIDAhPT10W2UuaWRdKXJldHVybiB0W2UuaWRdO2xldCBuO3N3aXRjaChlLnR5cGUpe2Nhc2UiRGlyZWN0aW9uYWxMaWdodCI6bj17ZGlyZWN0aW9uOm5ldyB3c3QsY29sb3I6bmV3IFpsdH07YnJlYWs7Y2FzZSJTcG90TGlnaHQiOm49e3Bvc2l0aW9uOm5ldyB3c3QsZGlyZWN0aW9uOm5ldyB3c3QsY29sb3I6bmV3IFpsdCxkaXN0YW5jZTowLGNvbmVDb3M6MCxwZW51bWJyYUNvczowLGRlY2F5OjB9O2JyZWFrO2Nhc2UiUG9pbnRMaWdodCI6bj17cG9zaXRpb246bmV3IHdzdCxjb2xvcjpuZXcgWmx0LGRpc3RhbmNlOjAsZGVjYXk6MH07YnJlYWs7Y2FzZSJIZW1pc3BoZXJlTGlnaHQiOm49e2RpcmVjdGlvbjpuZXcgd3N0LHNreUNvbG9yOm5ldyBabHQsZ3JvdW5kQ29sb3I6bmV3IFpsdH07YnJlYWs7Y2FzZSJSZWN0QXJlYUxpZ2h0IjpuPXtjb2xvcjpuZXcgWmx0LHBvc2l0aW9uOm5ldyB3c3QsaGFsZldpZHRoOm5ldyB3c3QsaGFsZkhlaWdodDpuZXcgd3N0fX1yZXR1cm4gdFtlLmlkXT1uLG59fX1sZXQgQ210PTA7ZnVuY3Rpb24gTW10KHQsZSl7cmV0dXJuKGUuY2FzdFNoYWRvdz8xOjApLSh0LmNhc3RTaGFkb3c/MTowKX1mdW5jdGlvbiB2bXQodCxlKXtjb25zdCBuPW5ldyBfbXQsbz0oZnVuY3Rpb24gaSgpe2NvbnN0IHQ9e307cmV0dXJue2dldDpmdW5jdGlvbihlKXtpZih2b2lkIDAhPT10W2UuaWRdKXJldHVybiB0W2UuaWRdO2xldCBuO3N3aXRjaChlLnR5cGUpe2Nhc2UiRGlyZWN0aW9uYWxMaWdodCI6Y2FzZSJTcG90TGlnaHQiOm49e3NoYWRvd0JpYXM6MCxzaGFkb3dOb3JtYWxCaWFzOjAsc2hhZG93UmFkaXVzOjEsc2hhZG93TWFwU2l6ZTpuZXcgZ3N0fTticmVhaztjYXNlIlBvaW50TGlnaHQiOm49e3NoYWRvd0JpYXM6MCxzaGFkb3dOb3JtYWxCaWFzOjAsc2hhZG93UmFkaXVzOjEsc2hhZG93TWFwU2l6ZTpuZXcgZ3N0LHNoYWRvd0NhbWVyYU5lYXI6MSxzaGFkb3dDYW1lcmFGYXI6MWUzfX1yZXR1cm4gdFtlLmlkXT1uLG59fX0pKCksYT17dmVyc2lvbjowLGhhc2g6e2RpcmVjdGlvbmFsTGVuZ3RoOi0xLHBvaW50TGVuZ3RoOi0xLHNwb3RMZW5ndGg6LTEscmVjdEFyZWFMZW5ndGg6LTEsaGVtaUxlbmd0aDotMSxudW1EaXJlY3Rpb25hbFNoYWRvd3M6LTEsbnVtUG9pbnRTaGFkb3dzOi0xLG51bVNwb3RTaGFkb3dzOi0xfSxhbWJpZW50OlswLDAsMF0scHJvYmU6W10sZGlyZWN0aW9uYWw6W10sZGlyZWN0aW9uYWxTaGFkb3c6W10sZGlyZWN0aW9uYWxTaGFkb3dNYXA6W10sZGlyZWN0aW9uYWxTaGFkb3dNYXRyaXg6W10sc3BvdDpbXSxzcG90U2hhZG93OltdLHNwb3RTaGFkb3dNYXA6W10sc3BvdFNoYWRvd01hdHJpeDpbXSxyZWN0QXJlYTpbXSxyZWN0QXJlYUxUQzE6bnVsbCxyZWN0QXJlYUxUQzI6bnVsbCxwb2ludDpbXSxwb2ludFNoYWRvdzpbXSxwb2ludFNoYWRvd01hcDpbXSxwb2ludFNoYWRvd01hdHJpeDpbXSxoZW1pOltdfTtmb3IobGV0IHQ9MDt0PDk7dCsrKWEucHJvYmUucHVzaChuZXcgd3N0KTtjb25zdCByPW5ldyB3c3Qscz1uZXcgb2x0LGw9bmV3IG9sdDtyZXR1cm57c2V0dXA6ZnVuY3Rpb24gYyhpKXtsZXQgcj0wLHM9MCxsPTA7Zm9yKGxldCB0PTA7dDw5O3QrKylhLnByb2JlW3RdLnNldCgwLDAsMCk7bGV0IGM9MCxkPTAscD0wLG09MCxmPTAsdT0wLGc9MCxoPTA7aS5zb3J0KE1tdCk7Zm9yKGxldCB0PTAsZT1pLmxlbmd0aDt0PGU7dCsrKXtjb25zdCBlPWlbdF0sYj1lLmNvbG9yLHk9ZS5pbnRlbnNpdHksXz1lLmRpc3RhbmNlLEM9ZS5zaGFkb3cmJmUuc2hhZG93Lm1hcD9lLnNoYWRvdy5tYXAudGV4dHVyZTpudWxsO2lmKGUuaXNBbWJpZW50TGlnaHQpcis9Yi5yKnkscys9Yi5nKnksbCs9Yi5iKnk7ZWxzZSBpZihlLmlzTGlnaHRQcm9iZSlmb3IobGV0IHQ9MDt0PDk7dCsrKWEucHJvYmVbdF0uYWRkU2NhbGVkVmVjdG9yKGUuc2guY29lZmZpY2llbnRzW3RdLHkpO2Vsc2UgaWYoZS5pc0RpcmVjdGlvbmFsTGlnaHQpe2NvbnN0IHQ9bi5nZXQoZSk7aWYodC5jb2xvci5jb3B5KGUuY29sb3IpLm11bHRpcGx5U2NhbGFyKGUuaW50ZW5zaXR5KSxlLmNhc3RTaGFkb3cpe2NvbnN0IHQ9ZS5zaGFkb3csbj1vLmdldChlKTtuLnNoYWRvd0JpYXM9dC5iaWFzLG4uc2hhZG93Tm9ybWFsQmlhcz10Lm5vcm1hbEJpYXMsbi5zaGFkb3dSYWRpdXM9dC5yYWRpdXMsbi5zaGFkb3dNYXBTaXplPXQubWFwU2l6ZSxhLmRpcmVjdGlvbmFsU2hhZG93W2NdPW4sYS5kaXJlY3Rpb25hbFNoYWRvd01hcFtjXT1DLGEuZGlyZWN0aW9uYWxTaGFkb3dNYXRyaXhbY109ZS5zaGFkb3cubWF0cml4LHUrK31hLmRpcmVjdGlvbmFsW2NdPXQsYysrfWVsc2UgaWYoZS5pc1Nwb3RMaWdodCl7Y29uc3QgdD1uLmdldChlKTtpZih0LnBvc2l0aW9uLnNldEZyb21NYXRyaXhQb3NpdGlvbihlLm1hdHJpeFdvcmxkKSx0LmNvbG9yLmNvcHkoYikubXVsdGlwbHlTY2FsYXIoeSksdC5kaXN0YW5jZT1fLHQuY29uZUNvcz1NYXRoLmNvcyhlLmFuZ2xlKSx0LnBlbnVtYnJhQ29zPU1hdGguY29zKGUuYW5nbGUqKDEtZS5wZW51bWJyYSkpLHQuZGVjYXk9ZS5kZWNheSxlLmNhc3RTaGFkb3cpe2NvbnN0IHQ9ZS5zaGFkb3csbj1vLmdldChlKTtuLnNoYWRvd0JpYXM9dC5iaWFzLG4uc2hhZG93Tm9ybWFsQmlhcz10Lm5vcm1hbEJpYXMsbi5zaGFkb3dSYWRpdXM9dC5yYWRpdXMsbi5zaGFkb3dNYXBTaXplPXQubWFwU2l6ZSxhLnNwb3RTaGFkb3dbcF09bixhLnNwb3RTaGFkb3dNYXBbcF09QyxhLnNwb3RTaGFkb3dNYXRyaXhbcF09ZS5zaGFkb3cubWF0cml4LGgrK31hLnNwb3RbcF09dCxwKyt9ZWxzZSBpZihlLmlzUmVjdEFyZWFMaWdodCl7Y29uc3QgdD1uLmdldChlKTt0LmNvbG9yLmNvcHkoYikubXVsdGlwbHlTY2FsYXIoeSksdC5oYWxmV2lkdGguc2V0KC41KmUud2lkdGgsMCwwKSx0LmhhbGZIZWlnaHQuc2V0KDAsLjUqZS5oZWlnaHQsMCksYS5yZWN0QXJlYVttXT10LG0rK31lbHNlIGlmKGUuaXNQb2ludExpZ2h0KXtjb25zdCB0PW4uZ2V0KGUpO2lmKHQuY29sb3IuY29weShlLmNvbG9yKS5tdWx0aXBseVNjYWxhcihlLmludGVuc2l0eSksdC5kaXN0YW5jZT1lLmRpc3RhbmNlLHQuZGVjYXk9ZS5kZWNheSxlLmNhc3RTaGFkb3cpe2NvbnN0IHQ9ZS5zaGFkb3csbj1vLmdldChlKTtuLnNoYWRvd0JpYXM9dC5iaWFzLG4uc2hhZG93Tm9ybWFsQmlhcz10Lm5vcm1hbEJpYXMsbi5zaGFkb3dSYWRpdXM9dC5yYWRpdXMsbi5zaGFkb3dNYXBTaXplPXQubWFwU2l6ZSxuLnNoYWRvd0NhbWVyYU5lYXI9dC5jYW1lcmEubmVhcixuLnNoYWRvd0NhbWVyYUZhcj10LmNhbWVyYS5mYXIsYS5wb2ludFNoYWRvd1tkXT1uLGEucG9pbnRTaGFkb3dNYXBbZF09QyxhLnBvaW50U2hhZG93TWF0cml4W2RdPWUuc2hhZG93Lm1hdHJpeCxnKyt9YS5wb2ludFtkXT10LGQrK31lbHNlIGlmKGUuaXNIZW1pc3BoZXJlTGlnaHQpe2NvbnN0IHQ9bi5nZXQoZSk7dC5za3lDb2xvci5jb3B5KGUuY29sb3IpLm11bHRpcGx5U2NhbGFyKHkpLHQuZ3JvdW5kQ29sb3IuY29weShlLmdyb3VuZENvbG9yKS5tdWx0aXBseVNjYWxhcih5KSxhLmhlbWlbZl09dCxmKyt9fW0+MCYmKGUuaXNXZWJHTDJ8fCEwPT09dC5oYXMoIk9FU190ZXh0dXJlX2Zsb2F0X2xpbmVhciIpPyhhLnJlY3RBcmVhTFRDMT1RY3QuTFRDX0ZMT0FUXzEsYS5yZWN0QXJlYUxUQzI9UWN0LkxUQ19GTE9BVF8yKTohMD09PXQuaGFzKCJPRVNfdGV4dHVyZV9oYWxmX2Zsb2F0X2xpbmVhciIpPyhhLnJlY3RBcmVhTFRDMT1RY3QuTFRDX0hBTEZfMSxhLnJlY3RBcmVhTFRDMj1RY3QuTFRDX0hBTEZfMik6Y29uc29sZS5lcnJvcigiVEhSRUUuV2ViR0xSZW5kZXJlcjogVW5hYmxlIHRvIHVzZSBSZWN0QXJlYUxpZ2h0LiBNaXNzaW5nIFdlYkdMIGV4dGVuc2lvbnMuIikpLGEuYW1iaWVudFswXT1yLGEuYW1iaWVudFsxXT1zLGEuYW1iaWVudFsyXT1sO2NvbnN0IGI9YS5oYXNoO2IuZGlyZWN0aW9uYWxMZW5ndGg9PT1jJiZiLnBvaW50TGVuZ3RoPT09ZCYmYi5zcG90TGVuZ3RoPT09cCYmYi5yZWN0QXJlYUxlbmd0aD09PW0mJmIuaGVtaUxlbmd0aD09PWYmJmIubnVtRGlyZWN0aW9uYWxTaGFkb3dzPT09dSYmYi5udW1Qb2ludFNoYWRvd3M9PT1nJiZiLm51bVNwb3RTaGFkb3dzPT09aHx8KGEuZGlyZWN0aW9uYWwubGVuZ3RoPWMsYS5zcG90Lmxlbmd0aD1wLGEucmVjdEFyZWEubGVuZ3RoPW0sYS5wb2ludC5sZW5ndGg9ZCxhLmhlbWkubGVuZ3RoPWYsYS5kaXJlY3Rpb25hbFNoYWRvdy5sZW5ndGg9dSxhLmRpcmVjdGlvbmFsU2hhZG93TWFwLmxlbmd0aD11LGEucG9pbnRTaGFkb3cubGVuZ3RoPWcsYS5wb2ludFNoYWRvd01hcC5sZW5ndGg9ZyxhLnNwb3RTaGFkb3cubGVuZ3RoPWgsYS5zcG90U2hhZG93TWFwLmxlbmd0aD1oLGEuZGlyZWN0aW9uYWxTaGFkb3dNYXRyaXgubGVuZ3RoPXUsYS5wb2ludFNoYWRvd01hdHJpeC5sZW5ndGg9ZyxhLnNwb3RTaGFkb3dNYXRyaXgubGVuZ3RoPWgsYi5kaXJlY3Rpb25hbExlbmd0aD1jLGIucG9pbnRMZW5ndGg9ZCxiLnNwb3RMZW5ndGg9cCxiLnJlY3RBcmVhTGVuZ3RoPW0sYi5oZW1pTGVuZ3RoPWYsYi5udW1EaXJlY3Rpb25hbFNoYWRvd3M9dSxiLm51bVBvaW50U2hhZG93cz1nLGIubnVtU3BvdFNoYWRvd3M9aCxhLnZlcnNpb249Q210KyspfSxzZXR1cFZpZXc6ZnVuY3Rpb24gZCh0LGUpe2xldCBuPTAsbz0wLGk9MCxjPTAsZD0wO2NvbnN0IHA9ZS5tYXRyaXhXb3JsZEludmVyc2U7Zm9yKGxldCBlPTAsbT10Lmxlbmd0aDtlPG07ZSsrKXtjb25zdCBtPXRbZV07aWYobS5pc0RpcmVjdGlvbmFsTGlnaHQpe2NvbnN0IHQ9YS5kaXJlY3Rpb25hbFtuXTt0LmRpcmVjdGlvbi5zZXRGcm9tTWF0cml4UG9zaXRpb24obS5tYXRyaXhXb3JsZCksci5zZXRGcm9tTWF0cml4UG9zaXRpb24obS50YXJnZXQubWF0cml4V29ybGQpLHQuZGlyZWN0aW9uLnN1YihyKSx0LmRpcmVjdGlvbi50cmFuc2Zvcm1EaXJlY3Rpb24ocCksbisrfWVsc2UgaWYobS5pc1Nwb3RMaWdodCl7Y29uc3QgdD1hLnNwb3RbaV07dC5wb3NpdGlvbi5zZXRGcm9tTWF0cml4UG9zaXRpb24obS5tYXRyaXhXb3JsZCksdC5wb3NpdGlvbi5hcHBseU1hdHJpeDQocCksdC5kaXJlY3Rpb24uc2V0RnJvbU1hdHJpeFBvc2l0aW9uKG0ubWF0cml4V29ybGQpLHIuc2V0RnJvbU1hdHJpeFBvc2l0aW9uKG0udGFyZ2V0Lm1hdHJpeFdvcmxkKSx0LmRpcmVjdGlvbi5zdWIociksdC5kaXJlY3Rpb24udHJhbnNmb3JtRGlyZWN0aW9uKHApLGkrK31lbHNlIGlmKG0uaXNSZWN0QXJlYUxpZ2h0KXtjb25zdCB0PWEucmVjdEFyZWFbY107dC5wb3NpdGlvbi5zZXRGcm9tTWF0cml4UG9zaXRpb24obS5tYXRyaXhXb3JsZCksdC5wb3NpdGlvbi5hcHBseU1hdHJpeDQocCksbC5pZGVudGl0eSgpLHMuY29weShtLm1hdHJpeFdvcmxkKSxzLnByZW11bHRpcGx5KHApLGwuZXh0cmFjdFJvdGF0aW9uKHMpLHQuaGFsZldpZHRoLnNldCguNSptLndpZHRoLDAsMCksdC5oYWxmSGVpZ2h0LnNldCgwLC41Km0uaGVpZ2h0LDApLHQuaGFsZldpZHRoLmFwcGx5TWF0cml4NChsKSx0LmhhbGZIZWlnaHQuYXBwbHlNYXRyaXg0KGwpLGMrK31lbHNlIGlmKG0uaXNQb2ludExpZ2h0KXtjb25zdCB0PWEucG9pbnRbb107dC5wb3NpdGlvbi5zZXRGcm9tTWF0cml4UG9zaXRpb24obS5tYXRyaXhXb3JsZCksdC5wb3NpdGlvbi5hcHBseU1hdHJpeDQocCksbysrfWVsc2UgaWYobS5pc0hlbWlzcGhlcmVMaWdodCl7Y29uc3QgdD1hLmhlbWlbZF07dC5kaXJlY3Rpb24uc2V0RnJvbU1hdHJpeFBvc2l0aW9uKG0ubWF0cml4V29ybGQpLHQuZGlyZWN0aW9uLnRyYW5zZm9ybURpcmVjdGlvbihwKSx0LmRpcmVjdGlvbi5ub3JtYWxpemUoKSxkKyt9fX0sc3RhdGU6YX19ZnVuY3Rpb24geG10KHQsZSl7Y29uc3Qgbj1uZXcgdm10KHQsZSksbz1bXSxpPVtdO3JldHVybntpbml0OmZ1bmN0aW9uIGEoKXtvLmxlbmd0aD0wLGkubGVuZ3RoPTB9LHN0YXRlOntsaWdodHNBcnJheTpvLHNoYWRvd3NBcnJheTppLGxpZ2h0czpufSxzZXR1cExpZ2h0czpmdW5jdGlvbiByKCl7bi5zZXR1cChvKX0sc2V0dXBMaWdodHNWaWV3OmZ1bmN0aW9uIHModCl7bi5zZXR1cFZpZXcobyx0KX0scHVzaExpZ2h0OmZ1bmN0aW9uIGwodCl7by5wdXNoKHQpfSxwdXNoU2hhZG93OmZ1bmN0aW9uIGModCl7aS5wdXNoKHQpfX19ZnVuY3Rpb24gT210KHQsZSl7bGV0IG49bmV3IFdlYWtNYXA7cmV0dXJue2dldDpmdW5jdGlvbiBvKGksYT0wKXtsZXQgcjtyZXR1cm4hMT09PW4uaGFzKGkpPyhyPW5ldyB4bXQodCxlKSxuLnNldChpLFtyXSkpOmE+PW4uZ2V0KGkpLmxlbmd0aD8ocj1uZXcgeG10KHQsZSksbi5nZXQoaSkucHVzaChyKSk6cj1uLmdldChpKVthXSxyfSxkaXNwb3NlOmZ1bmN0aW9uIGkoKXtuPW5ldyBXZWFrTWFwfX19Y2xhc3MgUG10IGV4dGVuZHMgVmx0e2NvbnN0cnVjdG9yKHQpe3N1cGVyKCksdGhpcy50eXBlPSJNZXNoRGVwdGhNYXRlcmlhbCIsdGhpcy5kZXB0aFBhY2tpbmc9MzIwMCx0aGlzLm1hcD1udWxsLHRoaXMuYWxwaGFNYXA9bnVsbCx0aGlzLmRpc3BsYWNlbWVudE1hcD1udWxsLHRoaXMuZGlzcGxhY2VtZW50U2NhbGU9MSx0aGlzLmRpc3BsYWNlbWVudEJpYXM9MCx0aGlzLndpcmVmcmFtZT0hMSx0aGlzLndpcmVmcmFtZUxpbmV3aWR0aD0xLHRoaXMuZm9nPSExLHRoaXMuc2V0VmFsdWVzKHQpfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5kZXB0aFBhY2tpbmc9dC5kZXB0aFBhY2tpbmcsdGhpcy5tYXA9dC5tYXAsdGhpcy5hbHBoYU1hcD10LmFscGhhTWFwLHRoaXMuZGlzcGxhY2VtZW50TWFwPXQuZGlzcGxhY2VtZW50TWFwLHRoaXMuZGlzcGxhY2VtZW50U2NhbGU9dC5kaXNwbGFjZW1lbnRTY2FsZSx0aGlzLmRpc3BsYWNlbWVudEJpYXM9dC5kaXNwbGFjZW1lbnRCaWFzLHRoaXMud2lyZWZyYW1lPXQud2lyZWZyYW1lLHRoaXMud2lyZWZyYW1lTGluZXdpZHRoPXQud2lyZWZyYW1lTGluZXdpZHRoLHRoaXN9fVBtdC5wcm90b3R5cGUuaXNNZXNoRGVwdGhNYXRlcmlhbD0hMDtjbGFzcyB3bXQgZXh0ZW5kcyBWbHR7Y29uc3RydWN0b3IodCl7c3VwZXIoKSx0aGlzLnR5cGU9Ik1lc2hEaXN0YW5jZU1hdGVyaWFsIix0aGlzLnJlZmVyZW5jZVBvc2l0aW9uPW5ldyB3c3QsdGhpcy5uZWFyRGlzdGFuY2U9MSx0aGlzLmZhckRpc3RhbmNlPTFlMyx0aGlzLm1hcD1udWxsLHRoaXMuYWxwaGFNYXA9bnVsbCx0aGlzLmRpc3BsYWNlbWVudE1hcD1udWxsLHRoaXMuZGlzcGxhY2VtZW50U2NhbGU9MSx0aGlzLmRpc3BsYWNlbWVudEJpYXM9MCx0aGlzLmZvZz0hMSx0aGlzLnNldFZhbHVlcyh0KX1jb3B5KHQpe3JldHVybiBzdXBlci5jb3B5KHQpLHRoaXMucmVmZXJlbmNlUG9zaXRpb24uY29weSh0LnJlZmVyZW5jZVBvc2l0aW9uKSx0aGlzLm5lYXJEaXN0YW5jZT10Lm5lYXJEaXN0YW5jZSx0aGlzLmZhckRpc3RhbmNlPXQuZmFyRGlzdGFuY2UsdGhpcy5tYXA9dC5tYXAsdGhpcy5hbHBoYU1hcD10LmFscGhhTWFwLHRoaXMuZGlzcGxhY2VtZW50TWFwPXQuZGlzcGxhY2VtZW50TWFwLHRoaXMuZGlzcGxhY2VtZW50U2NhbGU9dC5kaXNwbGFjZW1lbnRTY2FsZSx0aGlzLmRpc3BsYWNlbWVudEJpYXM9dC5kaXNwbGFjZW1lbnRCaWFzLHRoaXN9fXdtdC5wcm90b3R5cGUuaXNNZXNoRGlzdGFuY2VNYXRlcmlhbD0hMDtmdW5jdGlvbiBrbXQodCxlLG4pe2xldCBvPW5ldyBxY3Q7Y29uc3QgaT1uZXcgZ3N0LGE9bmV3IGdzdCxyPW5ldyB2c3Qscz1uZXcgUG10KHtkZXB0aFBhY2tpbmc6MzIwMX0pLGw9bmV3IHdtdCxjPXt9LGQ9bi5tYXhUZXh0dXJlU2l6ZSxwPXswOjEsMTowLDI6Mn0sbT1uZXcgTmN0KHtkZWZpbmVzOntTQU1QTEVfUkFURToyLzgsSEFMRl9TQU1QTEVfUkFURToxLzh9LHVuaWZvcm1zOntzaGFkb3dfcGFzczp7dmFsdWU6bnVsbH0scmVzb2x1dGlvbjp7dmFsdWU6bmV3IGdzdH0scmFkaXVzOnt2YWx1ZTo0fX0sdmVydGV4U2hhZGVyOiJ2b2lkIG1haW4oKSB7XG5cdGdsX1Bvc2l0aW9uID0gdmVjNCggcG9zaXRpb24sIDEuMCApO1xufSIsZnJhZ21lbnRTaGFkZXI6InVuaWZvcm0gc2FtcGxlcjJEIHNoYWRvd19wYXNzO1xudW5pZm9ybSB2ZWMyIHJlc29sdXRpb247XG51bmlmb3JtIGZsb2F0IHJhZGl1cztcbiNpbmNsdWRlIDxwYWNraW5nPlxudm9pZCBtYWluKCkge1xuXHRmbG9hdCBtZWFuID0gMC4wO1xuXHRmbG9hdCBzcXVhcmVkX21lYW4gPSAwLjA7XG5cdGZsb2F0IGRlcHRoID0gdW5wYWNrUkdCQVRvRGVwdGgoIHRleHR1cmUyRCggc2hhZG93X3Bhc3MsICggZ2xfRnJhZ0Nvb3JkLnh5ICkgLyByZXNvbHV0aW9uICkgKTtcblx0Zm9yICggZmxvYXQgaSA9IC0xLjA7IGkgPCAxLjAgOyBpICs9IFNBTVBMRV9SQVRFKSB7XG5cdFx0I2lmZGVmIEhPUklaT05UQUxfUEFTU1xuXHRcdFx0dmVjMiBkaXN0cmlidXRpb24gPSB1bnBhY2tSR0JBVG8ySGFsZiggdGV4dHVyZTJEKCBzaGFkb3dfcGFzcywgKCBnbF9GcmFnQ29vcmQueHkgKyB2ZWMyKCBpLCAwLjAgKSAqIHJhZGl1cyApIC8gcmVzb2x1dGlvbiApICk7XG5cdFx0XHRtZWFuICs9IGRpc3RyaWJ1dGlvbi54O1xuXHRcdFx0c3F1YXJlZF9tZWFuICs9IGRpc3RyaWJ1dGlvbi55ICogZGlzdHJpYnV0aW9uLnkgKyBkaXN0cmlidXRpb24ueCAqIGRpc3RyaWJ1dGlvbi54O1xuXHRcdCNlbHNlXG5cdFx0XHRmbG9hdCBkZXB0aCA9IHVucGFja1JHQkFUb0RlcHRoKCB0ZXh0dXJlMkQoIHNoYWRvd19wYXNzLCAoIGdsX0ZyYWdDb29yZC54eSArIHZlYzIoIDAuMCwgaSApICogcmFkaXVzICkgLyByZXNvbHV0aW9uICkgKTtcblx0XHRcdG1lYW4gKz0gZGVwdGg7XG5cdFx0XHRzcXVhcmVkX21lYW4gKz0gZGVwdGggKiBkZXB0aDtcblx0XHQjZW5kaWZcblx0fVxuXHRtZWFuID0gbWVhbiAqIEhBTEZfU0FNUExFX1JBVEU7XG5cdHNxdWFyZWRfbWVhbiA9IHNxdWFyZWRfbWVhbiAqIEhBTEZfU0FNUExFX1JBVEU7XG5cdGZsb2F0IHN0ZF9kZXYgPSBzcXJ0KCBzcXVhcmVkX21lYW4gLSBtZWFuICogbWVhbiApO1xuXHRnbF9GcmFnQ29sb3IgPSBwYWNrMkhhbGZUb1JHQkEoIHZlYzIoIG1lYW4sIHN0ZF9kZXYgKSApO1xufSJ9KSxmPW0uY2xvbmUoKTtmLmRlZmluZXMuSE9SSVpPTlRBTF9QQVNTPTE7Y29uc3QgdT1uZXcgZGN0O3Uuc2V0QXR0cmlidXRlKCJwb3NpdGlvbiIsbmV3IFFsdChuZXcgRmxvYXQzMkFycmF5KFstMSwtMSwuNSwzLC0xLC41LC0xLDMsLjVdKSwzKSk7Y29uc3QgZz1uZXcgU2N0KHUsbSksaD10aGlzO2Z1bmN0aW9uIGIobixvKXtjb25zdCBpPWUudXBkYXRlKGcpO20udW5pZm9ybXMuc2hhZG93X3Bhc3MudmFsdWU9bi5tYXAudGV4dHVyZSxtLnVuaWZvcm1zLnJlc29sdXRpb24udmFsdWU9bi5tYXBTaXplLG0udW5pZm9ybXMucmFkaXVzLnZhbHVlPW4ucmFkaXVzLHQuc2V0UmVuZGVyVGFyZ2V0KG4ubWFwUGFzcyksdC5jbGVhcigpLHQucmVuZGVyQnVmZmVyRGlyZWN0KG8sbnVsbCxpLG0sZyxudWxsKSxmLnVuaWZvcm1zLnNoYWRvd19wYXNzLnZhbHVlPW4ubWFwUGFzcy50ZXh0dXJlLGYudW5pZm9ybXMucmVzb2x1dGlvbi52YWx1ZT1uLm1hcFNpemUsZi51bmlmb3Jtcy5yYWRpdXMudmFsdWU9bi5yYWRpdXMsdC5zZXRSZW5kZXJUYXJnZXQobi5tYXApLHQuY2xlYXIoKSx0LnJlbmRlckJ1ZmZlckRpcmVjdChvLG51bGwsaSxmLGcsbnVsbCl9ZnVuY3Rpb24geShlLG4sbyxpLGEscixkKXtsZXQgbT1udWxsO2NvbnN0IGY9ITA9PT1pLmlzUG9pbnRMaWdodD9lLmN1c3RvbURpc3RhbmNlTWF0ZXJpYWw6ZS5jdXN0b21EZXB0aE1hdGVyaWFsO2lmKG09dm9pZCAwIT09Zj9mOiEwPT09aS5pc1BvaW50TGlnaHQ/bDpzLHQubG9jYWxDbGlwcGluZ0VuYWJsZWQmJiEwPT09by5jbGlwU2hhZG93cyYmMCE9PW8uY2xpcHBpbmdQbGFuZXMubGVuZ3RoKXtjb25zdCB0PW0udXVpZCxlPW8udXVpZDtsZXQgbj1jW3RdO3ZvaWQgMD09PW4mJihuPXt9LGNbdF09bik7bGV0IGk9bltlXTt2b2lkIDA9PT1pJiYoaT1tLmNsb25lKCksbltlXT1pKSxtPWl9cmV0dXJuIG0udmlzaWJsZT1vLnZpc2libGUsbS53aXJlZnJhbWU9by53aXJlZnJhbWUsbS5zaWRlPTM9PT1kP251bGwhPT1vLnNoYWRvd1NpZGU/by5zaGFkb3dTaWRlOm8uc2lkZTpudWxsIT09by5zaGFkb3dTaWRlP28uc2hhZG93U2lkZTpwW28uc2lkZV0sbS5jbGlwU2hhZG93cz1vLmNsaXBTaGFkb3dzLG0uY2xpcHBpbmdQbGFuZXM9by5jbGlwcGluZ1BsYW5lcyxtLmNsaXBJbnRlcnNlY3Rpb249by5jbGlwSW50ZXJzZWN0aW9uLG0ud2lyZWZyYW1lTGluZXdpZHRoPW8ud2lyZWZyYW1lTGluZXdpZHRoLG0ubGluZXdpZHRoPW8ubGluZXdpZHRoLCEwPT09aS5pc1BvaW50TGlnaHQmJiEwPT09bS5pc01lc2hEaXN0YW5jZU1hdGVyaWFsJiYobS5yZWZlcmVuY2VQb3NpdGlvbi5zZXRGcm9tTWF0cml4UG9zaXRpb24oaS5tYXRyaXhXb3JsZCksbS5uZWFyRGlzdGFuY2U9YSxtLmZhckRpc3RhbmNlPXIpLG19ZnVuY3Rpb24gXyhuLGksYSxyLHMpe2lmKCExPT09bi52aXNpYmxlKXJldHVybjtpZihuLmxheWVycy50ZXN0KGkubGF5ZXJzKSYmKG4uaXNNZXNofHxuLmlzTGluZXx8bi5pc1BvaW50cykmJihuLmNhc3RTaGFkb3d8fG4ucmVjZWl2ZVNoYWRvdyYmMz09PXMpJiYoIW4uZnJ1c3R1bUN1bGxlZHx8by5pbnRlcnNlY3RzT2JqZWN0KG4pKSl7bi5tb2RlbFZpZXdNYXRyaXgubXVsdGlwbHlNYXRyaWNlcyhhLm1hdHJpeFdvcmxkSW52ZXJzZSxuLm1hdHJpeFdvcmxkKTtjb25zdCBvPWUudXBkYXRlKG4pLGk9bi5tYXRlcmlhbDtpZihBcnJheS5pc0FycmF5KGkpKXtjb25zdCBlPW8uZ3JvdXBzO2ZvcihsZXQgbD0wLGM9ZS5sZW5ndGg7bDxjO2wrKyl7Y29uc3QgYz1lW2xdLGQ9aVtjLm1hdGVyaWFsSW5kZXhdO2lmKGQmJmQudmlzaWJsZSl7Y29uc3QgZT15KG4sMCxkLHIsYS5uZWFyLGEuZmFyLHMpO3QucmVuZGVyQnVmZmVyRGlyZWN0KGEsbnVsbCxvLGUsbixjKX19fWVsc2UgaWYoaS52aXNpYmxlKXtjb25zdCBlPXkobiwwLGkscixhLm5lYXIsYS5mYXIscyk7dC5yZW5kZXJCdWZmZXJEaXJlY3QoYSxudWxsLG8sZSxuLG51bGwpfX1jb25zdCBsPW4uY2hpbGRyZW47Zm9yKGxldCB0PTAsZT1sLmxlbmd0aDt0PGU7dCsrKV8obFt0XSxpLGEscixzKX10aGlzLmVuYWJsZWQ9ITEsdGhpcy5hdXRvVXBkYXRlPSEwLHRoaXMubmVlZHNVcGRhdGU9ITEsdGhpcy50eXBlPTEsdGhpcy5yZW5kZXI9ZnVuY3Rpb24oZSxuLHMpe2lmKCExPT09aC5lbmFibGVkKXJldHVybjtpZighMT09PWguYXV0b1VwZGF0ZSYmITE9PT1oLm5lZWRzVXBkYXRlKXJldHVybjtpZigwPT09ZS5sZW5ndGgpcmV0dXJuO2NvbnN0IGw9dC5nZXRSZW5kZXJUYXJnZXQoKSxjPXQuZ2V0QWN0aXZlQ3ViZUZhY2UoKSxwPXQuZ2V0QWN0aXZlTWlwbWFwTGV2ZWwoKSxtPXQuc3RhdGU7bS5zZXRCbGVuZGluZygwKSxtLmJ1ZmZlcnMuY29sb3Iuc2V0Q2xlYXIoMSwxLDEsMSksbS5idWZmZXJzLmRlcHRoLnNldFRlc3QoITApLG0uc2V0U2Npc3NvclRlc3QoITEpO2ZvcihsZXQgbD0wLGM9ZS5sZW5ndGg7bDxjO2wrKyl7Y29uc3QgYz1lW2xdLHA9Yy5zaGFkb3c7aWYodm9pZCAwPT09cCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFNoYWRvd01hcDoiLGMsImhhcyBubyBzaGFkb3cuIik7Y29udGludWV9aWYoITE9PT1wLmF1dG9VcGRhdGUmJiExPT09cC5uZWVkc1VwZGF0ZSljb250aW51ZTtpLmNvcHkocC5tYXBTaXplKTtjb25zdCBmPXAuZ2V0RnJhbWVFeHRlbnRzKCk7aWYoaS5tdWx0aXBseShmKSxhLmNvcHkocC5tYXBTaXplKSwoaS54PmR8fGkueT5kKSYmKGkueD5kJiYoYS54PU1hdGguZmxvb3IoZC9mLngpLGkueD1hLngqZi54LHAubWFwU2l6ZS54PWEueCksaS55PmQmJihhLnk9TWF0aC5mbG9vcihkL2YueSksaS55PWEueSpmLnkscC5tYXBTaXplLnk9YS55KSksbnVsbD09PXAubWFwJiYhcC5pc1BvaW50TGlnaHRTaGFkb3cmJjM9PT10aGlzLnR5cGUpe2NvbnN0IHQ9e21pbkZpbHRlcjpUcnQsbWFnRmlsdGVyOlRydCxmb3JtYXQ6anJ0fTtwLm1hcD1uZXcgeHN0KGkueCxpLnksdCkscC5tYXAudGV4dHVyZS5uYW1lPWMubmFtZSsiLnNoYWRvd01hcCIscC5tYXBQYXNzPW5ldyB4c3QoaS54LGkueSx0KSxwLmNhbWVyYS51cGRhdGVQcm9qZWN0aW9uTWF0cml4KCl9aWYobnVsbD09PXAubWFwKXtwLm1hcD1uZXcgeHN0KGkueCxpLnkse21pbkZpbHRlcjpBcnQsbWFnRmlsdGVyOkFydCxmb3JtYXQ6anJ0fSkscC5tYXAudGV4dHVyZS5uYW1lPWMubmFtZSsiLnNoYWRvd01hcCIscC5jYW1lcmEudXBkYXRlUHJvamVjdGlvbk1hdHJpeCgpfXQuc2V0UmVuZGVyVGFyZ2V0KHAubWFwKSx0LmNsZWFyKCk7Y29uc3QgdT1wLmdldFZpZXdwb3J0Q291bnQoKTtmb3IobGV0IHQ9MDt0PHU7dCsrKXtjb25zdCBlPXAuZ2V0Vmlld3BvcnQodCk7ci5zZXQoYS54KmUueCxhLnkqZS55LGEueCplLnosYS55KmUudyksbS52aWV3cG9ydChyKSxwLnVwZGF0ZU1hdHJpY2VzKGMsdCksbz1wLmdldEZydXN0dW0oKSxfKG4scyxwLmNhbWVyYSxjLHRoaXMudHlwZSl9cC5pc1BvaW50TGlnaHRTaGFkb3d8fDMhPT10aGlzLnR5cGV8fGIocCxzKSxwLm5lZWRzVXBkYXRlPSExfWgubmVlZHNVcGRhdGU9ITEsdC5zZXRSZW5kZXJUYXJnZXQobCxjLHApfX1mdW5jdGlvbiBTbXQodCxlLG4pe2NvbnN0IG89bi5pc1dlYkdMMjtjb25zdCBpPW5ldyhmdW5jdGlvbiBhKCl7bGV0IGU9ITE7Y29uc3Qgbj1uZXcgdnN0O2xldCBvPW51bGw7Y29uc3QgaT1uZXcgdnN0KDAsMCwwLDApO3JldHVybntzZXRNYXNrOmZ1bmN0aW9uKG4pe289PT1ufHxlfHwodC5jb2xvck1hc2sobixuLG4sbiksbz1uKX0sc2V0TG9ja2VkOmZ1bmN0aW9uKHQpe2U9dH0sc2V0Q2xlYXI6ZnVuY3Rpb24oZSxvLGEscixzKXshMD09PXMmJihlKj1yLG8qPXIsYSo9ciksbi5zZXQoZSxvLGEsciksITE9PT1pLmVxdWFscyhuKSYmKHQuY2xlYXJDb2xvcihlLG8sYSxyKSxpLmNvcHkobikpfSxyZXNldDpmdW5jdGlvbigpe2U9ITEsbz1udWxsLGkuc2V0KC0xLDAsMCwwKX19fSkscj1uZXcoZnVuY3Rpb24gcygpe2xldCBlPSExLG49bnVsbCxvPW51bGwsaT1udWxsO3JldHVybntzZXRUZXN0OmZ1bmN0aW9uKHQpe3Q/QigyOTI5KTpWKDI5MjkpfSxzZXRNYXNrOmZ1bmN0aW9uKG8pe249PT1vfHxlfHwodC5kZXB0aE1hc2sobyksbj1vKX0sc2V0RnVuYzpmdW5jdGlvbihlKXtpZihvIT09ZSl7aWYoZSlzd2l0Y2goZSl7Y2FzZSAwOnQuZGVwdGhGdW5jKDUxMik7YnJlYWs7Y2FzZSAxOnQuZGVwdGhGdW5jKDUxOSk7YnJlYWs7Y2FzZSAyOnQuZGVwdGhGdW5jKDUxMyk7YnJlYWs7Y2FzZSAzOnQuZGVwdGhGdW5jKDUxNSk7YnJlYWs7Y2FzZSA0OnQuZGVwdGhGdW5jKDUxNCk7YnJlYWs7Y2FzZSA1OnQuZGVwdGhGdW5jKDUxOCk7YnJlYWs7Y2FzZSA2OnQuZGVwdGhGdW5jKDUxNik7YnJlYWs7Y2FzZSA3OnQuZGVwdGhGdW5jKDUxNyk7YnJlYWs7ZGVmYXVsdDp0LmRlcHRoRnVuYyg1MTUpfWVsc2UgdC5kZXB0aEZ1bmMoNTE1KTtvPWV9fSxzZXRMb2NrZWQ6ZnVuY3Rpb24odCl7ZT10fSxzZXRDbGVhcjpmdW5jdGlvbihlKXtpIT09ZSYmKHQuY2xlYXJEZXB0aChlKSxpPWUpfSxyZXNldDpmdW5jdGlvbigpe2U9ITEsbj1udWxsLG89bnVsbCxpPW51bGx9fX0pLGw9bmV3KGZ1bmN0aW9uIGMoKXtsZXQgZT0hMSxuPW51bGwsbz1udWxsLGk9bnVsbCxhPW51bGwscj1udWxsLHM9bnVsbCxsPW51bGwsYz1udWxsO3JldHVybntzZXRUZXN0OmZ1bmN0aW9uKHQpe2V8fCh0P0IoMjk2MCk6VigyOTYwKSl9LHNldE1hc2s6ZnVuY3Rpb24obyl7bj09PW98fGV8fCh0LnN0ZW5jaWxNYXNrKG8pLG49byl9LHNldEZ1bmM6ZnVuY3Rpb24oZSxuLHIpe289PT1lJiZpPT09biYmYT09PXJ8fCh0LnN0ZW5jaWxGdW5jKGUsbixyKSxvPWUsaT1uLGE9cil9LHNldE9wOmZ1bmN0aW9uKGUsbixvKXtyPT09ZSYmcz09PW4mJmw9PT1vfHwodC5zdGVuY2lsT3AoZSxuLG8pLHI9ZSxzPW4sbD1vKX0sc2V0TG9ja2VkOmZ1bmN0aW9uKHQpe2U9dH0sc2V0Q2xlYXI6ZnVuY3Rpb24oZSl7YyE9PWUmJih0LmNsZWFyU3RlbmNpbChlKSxjPWUpfSxyZXNldDpmdW5jdGlvbigpe2U9ITEsbj1udWxsLG89bnVsbCxpPW51bGwsYT1udWxsLHI9bnVsbCxzPW51bGwsbD1udWxsLGM9bnVsbH19fSk7bGV0IGQ9e30scD1udWxsLG09e30sZj1udWxsLHU9ITEsZz1udWxsLGg9bnVsbCxiPW51bGwseT1udWxsLF89bnVsbCxDPW51bGwsTT1udWxsLHY9ITEseD1udWxsLE89bnVsbCxQPW51bGwsdz1udWxsLGs9bnVsbDtjb25zdCBTPXQuZ2V0UGFyYW1ldGVyKDM1NjYxKTtsZXQgRD0hMSxSPTA7Y29uc3QgRT10LmdldFBhcmFtZXRlcig3OTM4KTstMSE9PUUuaW5kZXhPZigiV2ViR0wiKT8oUj1wYXJzZUZsb2F0KC9eV2ViR0wgKFxkKS8uZXhlYyhFKVsxXSksRD1SPj0xKTotMSE9PUUuaW5kZXhPZigiT3BlbkdMIEVTIikmJihSPXBhcnNlRmxvYXQoL15PcGVuR0wgRVMgKFxkKS8uZXhlYyhFKVsxXSksRD1SPj0yKTtsZXQgQT1udWxsLFQ9e307Y29uc3QgTj10LmdldFBhcmFtZXRlcigzMDg4KSx6PXQuZ2V0UGFyYW1ldGVyKDI5NzgpLEk9KG5ldyB2c3QpLmZyb21BcnJheShOKSxIPShuZXcgdnN0KS5mcm9tQXJyYXkoeik7ZnVuY3Rpb24gRihlLG4sbyl7Y29uc3QgaT1uZXcgVWludDhBcnJheSg0KSxhPXQuY3JlYXRlVGV4dHVyZSgpO3QuYmluZFRleHR1cmUoZSxhKSx0LnRleFBhcmFtZXRlcmkoZSwxMDI0MSw5NzI4KSx0LnRleFBhcmFtZXRlcmkoZSwxMDI0MCw5NzI4KTtmb3IobGV0IGU9MDtlPG87ZSsrKXQudGV4SW1hZ2UyRChuK2UsMCw2NDA4LDEsMSwwLDY0MDgsNTEyMSxpKTtyZXR1cm4gYX1jb25zdCBMPXt9O2Z1bmN0aW9uIEIoZSl7ITAhPT1kW2VdJiYodC5lbmFibGUoZSksZFtlXT0hMCl9ZnVuY3Rpb24gVihlKXshMSE9PWRbZV0mJih0LmRpc2FibGUoZSksZFtlXT0hMSl9TFszNTUzXT1GKDM1NTMsMzU1MywxKSxMWzM0MDY3XT1GKDM0MDY3LDM0MDY5LDYpLGkuc2V0Q2xlYXIoMCwwLDAsMSksci5zZXRDbGVhcigxKSxsLnNldENsZWFyKDApLEIoMjkyOSksci5zZXRGdW5jKDMpLEcoITEpLFkoMSksQigyODg0KSxXKDApO2NvbnN0IGo9e1tQcnRdOjMyNzc0LDEwMTozMjc3OCwxMDI6MzI3Nzl9O2lmKG8palsxMDNdPTMyNzc1LGpbMTA0XT0zMjc3NjtlbHNle2NvbnN0IHQ9ZS5nZXQoIkVYVF9ibGVuZF9taW5tYXgiKTtudWxsIT09dCYmKGpbMTAzXT10Lk1JTl9FWFQsalsxMDRdPXQuTUFYX0VYVCl9Y29uc3QgVT17MjAwOjAsMjAxOjEsMjAyOjc2OCwyMDQ6NzcwLDIxMDo3NzYsMjA4Ojc3NCwyMDY6NzcyLDIwMzo3NjksMjA1Ojc3MSwyMDk6Nzc1LDIwNzo3NzN9O2Z1bmN0aW9uIFcoZSxuLG8saSxhLHIscyxsKXtpZigwIT09ZSl7aWYoITE9PT11JiYoQigzMDQyKSx1PSEwKSw1PT09ZSlhPWF8fG4scj1yfHxvLHM9c3x8aSxuPT09aCYmYT09PV98fCh0LmJsZW5kRXF1YXRpb25TZXBhcmF0ZShqW25dLGpbYV0pLGg9bixfPWEpLG89PT1iJiZpPT09eSYmcj09PUMmJnM9PT1NfHwodC5ibGVuZEZ1bmNTZXBhcmF0ZShVW29dLFVbaV0sVVtyXSxVW3NdKSxiPW8seT1pLEM9cixNPXMpLGc9ZSx2PW51bGw7ZWxzZSBpZihlIT09Z3x8bCE9PXYpe2lmKGg9PT1QcnQmJl89PT1QcnR8fCh0LmJsZW5kRXF1YXRpb24oMzI3NzQpLGg9UHJ0LF89UHJ0KSxsKXN3aXRjaChlKXtjYXNlIDE6dC5ibGVuZEZ1bmNTZXBhcmF0ZSgxLDc3MSwxLDc3MSk7YnJlYWs7Y2FzZSAyOnQuYmxlbmRGdW5jKDEsMSk7YnJlYWs7Y2FzZSAzOnQuYmxlbmRGdW5jU2VwYXJhdGUoMCwwLDc2OSw3NzEpO2JyZWFrO2Nhc2UgNDp0LmJsZW5kRnVuY1NlcGFyYXRlKDAsNzY4LDAsNzcwKTticmVhaztkZWZhdWx0OmNvbnNvbGUuZXJyb3IoIlRIUkVFLldlYkdMU3RhdGU6IEludmFsaWQgYmxlbmRpbmc6ICIsZSl9ZWxzZSBzd2l0Y2goZSl7Y2FzZSAxOnQuYmxlbmRGdW5jU2VwYXJhdGUoNzcwLDc3MSwxLDc3MSk7YnJlYWs7Y2FzZSAyOnQuYmxlbmRGdW5jKDc3MCwxKTticmVhaztjYXNlIDM6dC5ibGVuZEZ1bmMoMCw3NjkpO2JyZWFrO2Nhc2UgNDp0LmJsZW5kRnVuYygwLDc2OCk7YnJlYWs7ZGVmYXVsdDpjb25zb2xlLmVycm9yKCJUSFJFRS5XZWJHTFN0YXRlOiBJbnZhbGlkIGJsZW5kaW5nOiAiLGUpfWI9bnVsbCx5PW51bGwsQz1udWxsLE09bnVsbCxnPWUsdj1sfX1lbHNlITA9PT11JiYoVigzMDQyKSx1PSExKX1mdW5jdGlvbiBHKGUpe3ghPT1lJiYodC5mcm9udEZhY2UoZT8yMzA0OjIzMDUpLHg9ZSl9ZnVuY3Rpb24gWShlKXswIT09ZT8oQigyODg0KSxlIT09TyYmdC5jdWxsRmFjZSgxPT09ZT8xMDI5OjI9PT1lPzEwMjg6MTAzMikpOlYoMjg4NCksTz1lfWZ1bmN0aW9uIHEoZSxuLG8pe2U/KEIoMzI4MjMpLHc9PT1uJiZrPT09b3x8KHQucG9seWdvbk9mZnNldChuLG8pLHc9bixrPW8pKTpWKDMyODIzKX1mdW5jdGlvbiBaKGUpe3ZvaWQgMD09PWUmJihlPTMzOTg0K1MtMSksQSE9PWUmJih0LmFjdGl2ZVRleHR1cmUoZSksQT1lKX1yZXR1cm57YnVmZmVyczp7Y29sb3I6aSxkZXB0aDpyLHN0ZW5jaWw6bH0sZW5hYmxlOkIsZGlzYWJsZTpWLGJpbmRGcmFtZWJ1ZmZlcjpmdW5jdGlvbiBYKGUsbil7cmV0dXJuIG51bGw9PT1uJiZudWxsIT09cCYmKG49cCksbVtlXSE9PW4mJih0LmJpbmRGcmFtZWJ1ZmZlcihlLG4pLG1bZV09bixvJiYoMzYwMDk9PT1lJiYobVszNjE2MF09biksMzYxNjA9PT1lJiYobVszNjAwOV09bikpLCEwKX0sYmluZFhSRnJhbWVidWZmZXI6ZnVuY3Rpb24gSyhlKXtlIT09cCYmKHQuYmluZEZyYW1lYnVmZmVyKDM2MTYwLGUpLHA9ZSl9LHVzZVByb2dyYW06ZnVuY3Rpb24gSihlKXtyZXR1cm4gZiE9PWUmJih0LnVzZVByb2dyYW0oZSksZj1lLCEwKX0sc2V0QmxlbmRpbmc6VyxzZXRNYXRlcmlhbDpmdW5jdGlvbiBRKHQsZSl7Mj09PXQuc2lkZT9WKDI4ODQpOkIoMjg4NCk7bGV0IG49MT09PXQuc2lkZTtlJiYobj0hbiksRyhuKSwxPT09dC5ibGVuZGluZyYmITE9PT10LnRyYW5zcGFyZW50P1coMCk6Vyh0LmJsZW5kaW5nLHQuYmxlbmRFcXVhdGlvbix0LmJsZW5kU3JjLHQuYmxlbmREc3QsdC5ibGVuZEVxdWF0aW9uQWxwaGEsdC5ibGVuZFNyY0FscGhhLHQuYmxlbmREc3RBbHBoYSx0LnByZW11bHRpcGxpZWRBbHBoYSksci5zZXRGdW5jKHQuZGVwdGhGdW5jKSxyLnNldFRlc3QodC5kZXB0aFRlc3QpLHIuc2V0TWFzayh0LmRlcHRoV3JpdGUpLGkuc2V0TWFzayh0LmNvbG9yV3JpdGUpO2NvbnN0IG89dC5zdGVuY2lsV3JpdGU7bC5zZXRUZXN0KG8pLG8mJihsLnNldE1hc2sodC5zdGVuY2lsV3JpdGVNYXNrKSxsLnNldEZ1bmModC5zdGVuY2lsRnVuYyx0LnN0ZW5jaWxSZWYsdC5zdGVuY2lsRnVuY01hc2spLGwuc2V0T3AodC5zdGVuY2lsRmFpbCx0LnN0ZW5jaWxaRmFpbCx0LnN0ZW5jaWxaUGFzcykpLHEodC5wb2x5Z29uT2Zmc2V0LHQucG9seWdvbk9mZnNldEZhY3Rvcix0LnBvbHlnb25PZmZzZXRVbml0cyksITA9PT10LmFscGhhVG9Db3ZlcmFnZT9CKDMyOTI2KTpWKDMyOTI2KX0sc2V0RmxpcFNpZGVkOkcsc2V0Q3VsbEZhY2U6WSxzZXRMaW5lV2lkdGg6ZnVuY3Rpb24gJChlKXtlIT09UCYmKEQmJnQubGluZVdpZHRoKGUpLFA9ZSl9LHNldFBvbHlnb25PZmZzZXQ6cSxzZXRTY2lzc29yVGVzdDpmdW5jdGlvbiB0dCh0KXt0P0IoMzA4OSk6VigzMDg5KX0sYWN0aXZlVGV4dHVyZTpaLGJpbmRUZXh0dXJlOmZ1bmN0aW9uIGV0KGUsbil7bnVsbD09PUEmJlooKTtsZXQgbz1UW0FdO3ZvaWQgMD09PW8mJihvPXt0eXBlOnZvaWQgMCx0ZXh0dXJlOnZvaWQgMH0sVFtBXT1vKSxvLnR5cGU9PT1lJiZvLnRleHR1cmU9PT1ufHwodC5iaW5kVGV4dHVyZShlLG58fExbZV0pLG8udHlwZT1lLG8udGV4dHVyZT1uKX0sdW5iaW5kVGV4dHVyZTpmdW5jdGlvbiBudCgpe2NvbnN0IGU9VFtBXTt2b2lkIDAhPT1lJiZ2b2lkIDAhPT1lLnR5cGUmJih0LmJpbmRUZXh0dXJlKGUudHlwZSxudWxsKSxlLnR5cGU9dm9pZCAwLGUudGV4dHVyZT12b2lkIDApfSxjb21wcmVzc2VkVGV4SW1hZ2UyRDpmdW5jdGlvbiBvdCgpe3RyeXt0LmNvbXByZXNzZWRUZXhJbWFnZTJELmFwcGx5KHQsYXJndW1lbnRzKX1jYXRjaCh0KXtjb25zb2xlLmVycm9yKCJUSFJFRS5XZWJHTFN0YXRlOiIsdCl9fSx0ZXhJbWFnZTJEOmZ1bmN0aW9uIGl0KCl7dHJ5e3QudGV4SW1hZ2UyRC5hcHBseSh0LGFyZ3VtZW50cyl9Y2F0Y2godCl7Y29uc29sZS5lcnJvcigiVEhSRUUuV2ViR0xTdGF0ZToiLHQpfX0sdGV4SW1hZ2UzRDpmdW5jdGlvbiBhdCgpe3RyeXt0LnRleEltYWdlM0QuYXBwbHkodCxhcmd1bWVudHMpfWNhdGNoKHQpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLldlYkdMU3RhdGU6Iix0KX19LHNjaXNzb3I6ZnVuY3Rpb24gcnQoZSl7ITE9PT1JLmVxdWFscyhlKSYmKHQuc2Npc3NvcihlLngsZS55LGUueixlLncpLEkuY29weShlKSl9LHZpZXdwb3J0OmZ1bmN0aW9uIHN0KGUpeyExPT09SC5lcXVhbHMoZSkmJih0LnZpZXdwb3J0KGUueCxlLnksZS56LGUudyksSC5jb3B5KGUpKX0scmVzZXQ6ZnVuY3Rpb24gbHQoKXt0LmRpc2FibGUoMzA0MiksdC5kaXNhYmxlKDI4ODQpLHQuZGlzYWJsZSgyOTI5KSx0LmRpc2FibGUoMzI4MjMpLHQuZGlzYWJsZSgzMDg5KSx0LmRpc2FibGUoMjk2MCksdC5kaXNhYmxlKDMyOTI2KSx0LmJsZW5kRXF1YXRpb24oMzI3NzQpLHQuYmxlbmRGdW5jKDEsMCksdC5ibGVuZEZ1bmNTZXBhcmF0ZSgxLDAsMSwwKSx0LmNvbG9yTWFzayghMCwhMCwhMCwhMCksdC5jbGVhckNvbG9yKDAsMCwwLDApLHQuZGVwdGhNYXNrKCEwKSx0LmRlcHRoRnVuYyg1MTMpLHQuY2xlYXJEZXB0aCgxKSx0LnN0ZW5jaWxNYXNrKDQyOTQ5NjcyOTUpLHQuc3RlbmNpbEZ1bmMoNTE5LDAsNDI5NDk2NzI5NSksdC5zdGVuY2lsT3AoNzY4MCw3NjgwLDc2ODApLHQuY2xlYXJTdGVuY2lsKDApLHQuY3VsbEZhY2UoMTAyOSksdC5mcm9udEZhY2UoMjMwNSksdC5wb2x5Z29uT2Zmc2V0KDAsMCksdC5hY3RpdmVUZXh0dXJlKDMzOTg0KSx0LmJpbmRGcmFtZWJ1ZmZlcigzNjE2MCxudWxsKSwhMD09PW8mJih0LmJpbmRGcmFtZWJ1ZmZlcigzNjAwOSxudWxsKSx0LmJpbmRGcmFtZWJ1ZmZlcigzNjAwOCxudWxsKSksdC51c2VQcm9ncmFtKG51bGwpLHQubGluZVdpZHRoKDEpLHQuc2Npc3NvcigwLDAsdC5jYW52YXMud2lkdGgsdC5jYW52YXMuaGVpZ2h0KSx0LnZpZXdwb3J0KDAsMCx0LmNhbnZhcy53aWR0aCx0LmNhbnZhcy5oZWlnaHQpLGQ9e30sQT1udWxsLFQ9e30scD1udWxsLG09e30sZj1udWxsLHU9ITEsZz1udWxsLGg9bnVsbCxiPW51bGwseT1udWxsLF89bnVsbCxDPW51bGwsTT1udWxsLHY9ITEseD1udWxsLE89bnVsbCxQPW51bGwsdz1udWxsLGs9bnVsbCxJLnNldCgwLDAsdC5jYW52YXMud2lkdGgsdC5jYW52YXMuaGVpZ2h0KSxILnNldCgwLDAsdC5jYW52YXMud2lkdGgsdC5jYW52YXMuaGVpZ2h0KSxpLnJlc2V0KCksci5yZXNldCgpLGwucmVzZXQoKX19fWZ1bmN0aW9uIERtdCh0LGUsbixvLGksYSxyKXtjb25zdCBzPWkuaXNXZWJHTDIsbD1pLm1heFRleHR1cmVzLGM9aS5tYXhDdWJlbWFwU2l6ZSxkPWkubWF4VGV4dHVyZVNpemUscD1pLm1heFNhbXBsZXMsbT1uZXcgV2Vha01hcDtsZXQgZix1PSExO3RyeXt1PSJ1bmRlZmluZWQiIT10eXBlb2YgT2Zmc2NyZWVuQ2FudmFzJiZudWxsIT09bmV3IE9mZnNjcmVlbkNhbnZhcygxLDEpLmdldENvbnRleHQoIjJkIil9Y2F0Y2godCl7fWZ1bmN0aW9uIGcodCxlKXtyZXR1cm4gdT9uZXcgT2Zmc2NyZWVuQ2FudmFzKHQsZSk6ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiwiY2FudmFzIil9ZnVuY3Rpb24gaCh0LGUsbixvKXtsZXQgaT0xO2lmKCh0LndpZHRoPm98fHQuaGVpZ2h0Pm8pJiYoaT1vL01hdGgubWF4KHQud2lkdGgsdC5oZWlnaHQpKSxpPDF8fCEwPT09ZSl7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBIVE1MSW1hZ2VFbGVtZW50JiZ0IGluc3RhbmNlb2YgSFRNTEltYWdlRWxlbWVudHx8InVuZGVmaW5lZCIhPXR5cGVvZiBIVE1MQ2FudmFzRWxlbWVudCYmdCBpbnN0YW5jZW9mIEhUTUxDYW52YXNFbGVtZW50fHwidW5kZWZpbmVkIiE9dHlwZW9mIEltYWdlQml0bWFwJiZ0IGluc3RhbmNlb2YgSW1hZ2VCaXRtYXApe2NvbnN0IG89ZT91c3Q6TWF0aC5mbG9vcixhPW8oaSp0LndpZHRoKSxyPW8oaSp0LmhlaWdodCk7dm9pZCAwPT09ZiYmKGY9ZyhhLHIpKTtjb25zdCBzPW4/ZyhhLHIpOmY7cy53aWR0aD1hLHMuaGVpZ2h0PXI7cmV0dXJuIHMuZ2V0Q29udGV4dCgiMmQiKS5kcmF3SW1hZ2UodCwwLDAsYSxyKSxjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IFRleHR1cmUgaGFzIGJlZW4gcmVzaXplZCBmcm9tICgiK3Qud2lkdGgrIngiK3QuaGVpZ2h0KyIpIHRvICgiK2ErIngiK3IrIikuIiksc31yZXR1cm4iZGF0YSJpbiB0JiZjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IEltYWdlIGluIERhdGFUZXh0dXJlIGlzIHRvbyBiaWcgKCIrdC53aWR0aCsieCIrdC5oZWlnaHQrIikuIiksdH1yZXR1cm4gdH1mdW5jdGlvbiBiKHQpe3JldHVybiBmc3QodC53aWR0aCkmJmZzdCh0LmhlaWdodCl9ZnVuY3Rpb24geSh0LGUpe3JldHVybiB0LmdlbmVyYXRlTWlwbWFwcyYmZSYmdC5taW5GaWx0ZXIhPT1BcnQmJnQubWluRmlsdGVyIT09VHJ0fWZ1bmN0aW9uIF8oZSxuLGksYSxyPTEpe3QuZ2VuZXJhdGVNaXBtYXAoZSk7by5nZXQobikuX19tYXhNaXBMZXZlbD1NYXRoLmxvZzIoTWF0aC5tYXgoaSxhLHIpKX1mdW5jdGlvbiBDKG4sbyxpKXtpZighMT09PXMpcmV0dXJuIG87aWYobnVsbCE9PW4pe2lmKHZvaWQgMCE9PXRbbl0pcmV0dXJuIHRbbl07Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiBBdHRlbXB0IHRvIHVzZSBub24tZXhpc3RpbmcgV2ViR0wgaW50ZXJuYWwgZm9ybWF0ICciK24rIiciKX1sZXQgYT1vO3JldHVybiA2NDAzPT09byYmKDUxMjY9PT1pJiYoYT0zMzMyNiksNTEzMT09PWkmJihhPTMzMzI1KSw1MTIxPT09aSYmKGE9MzMzMjEpKSw2NDA3PT09byYmKDUxMjY9PT1pJiYoYT0zNDgzNyksNTEzMT09PWkmJihhPTM0ODQzKSw1MTIxPT09aSYmKGE9MzI4NDkpKSw2NDA4PT09byYmKDUxMjY9PT1pJiYoYT0zNDgzNiksNTEzMT09PWkmJihhPTM0ODQyKSw1MTIxPT09aSYmKGE9MzI4NTYpKSwzMzMyNSE9PWEmJjMzMzI2IT09YSYmMzQ4NDIhPT1hJiYzNDgzNiE9PWF8fGUuZ2V0KCJFWFRfY29sb3JfYnVmZmVyX2Zsb2F0IiksYX1mdW5jdGlvbiBNKHQpe3JldHVybiB0PT09QXJ0fHwxMDA0PT09dHx8MTAwNT09PXQ/OTcyODo5NzI5fWZ1bmN0aW9uIHYoZSl7Y29uc3Qgbj1lLnRhcmdldDtuLnJlbW92ZUV2ZW50TGlzdGVuZXIoImRpc3Bvc2UiLHYpLChmdW5jdGlvbiBpKGUpe2NvbnN0IG49by5nZXQoZSk7aWYodm9pZCAwPT09bi5fX3dlYmdsSW5pdClyZXR1cm47dC5kZWxldGVUZXh0dXJlKG4uX193ZWJnbFRleHR1cmUpLG8ucmVtb3ZlKGUpfSkobiksbi5pc1ZpZGVvVGV4dHVyZSYmbS5kZWxldGUobiksci5tZW1vcnkudGV4dHVyZXMtLX1mdW5jdGlvbiB4KGUpe2NvbnN0IG49ZS50YXJnZXQ7bi5yZW1vdmVFdmVudExpc3RlbmVyKCJkaXNwb3NlIix4KSwoZnVuY3Rpb24gaShlKXtjb25zdCBuPWUudGV4dHVyZSxpPW8uZ2V0KGUpLGE9by5nZXQobik7aWYoIWUpcmV0dXJuO3ZvaWQgMCE9PWEuX193ZWJnbFRleHR1cmUmJih0LmRlbGV0ZVRleHR1cmUoYS5fX3dlYmdsVGV4dHVyZSksci5tZW1vcnkudGV4dHVyZXMtLSk7ZS5kZXB0aFRleHR1cmUmJmUuZGVwdGhUZXh0dXJlLmRpc3Bvc2UoKTtpZihlLmlzV2ViR0xDdWJlUmVuZGVyVGFyZ2V0KWZvcihsZXQgZT0wO2U8NjtlKyspdC5kZWxldGVGcmFtZWJ1ZmZlcihpLl9fd2ViZ2xGcmFtZWJ1ZmZlcltlXSksaS5fX3dlYmdsRGVwdGhidWZmZXImJnQuZGVsZXRlUmVuZGVyYnVmZmVyKGkuX193ZWJnbERlcHRoYnVmZmVyW2VdKTtlbHNlIHQuZGVsZXRlRnJhbWVidWZmZXIoaS5fX3dlYmdsRnJhbWVidWZmZXIpLGkuX193ZWJnbERlcHRoYnVmZmVyJiZ0LmRlbGV0ZVJlbmRlcmJ1ZmZlcihpLl9fd2ViZ2xEZXB0aGJ1ZmZlciksaS5fX3dlYmdsTXVsdGlzYW1wbGVkRnJhbWVidWZmZXImJnQuZGVsZXRlRnJhbWVidWZmZXIoaS5fX3dlYmdsTXVsdGlzYW1wbGVkRnJhbWVidWZmZXIpLGkuX193ZWJnbENvbG9yUmVuZGVyYnVmZmVyJiZ0LmRlbGV0ZVJlbmRlcmJ1ZmZlcihpLl9fd2ViZ2xDb2xvclJlbmRlcmJ1ZmZlciksaS5fX3dlYmdsRGVwdGhSZW5kZXJidWZmZXImJnQuZGVsZXRlUmVuZGVyYnVmZmVyKGkuX193ZWJnbERlcHRoUmVuZGVyYnVmZmVyKTtpZihlLmlzV2ViR0xNdWx0aXBsZVJlbmRlclRhcmdldHMpZm9yKGxldCBlPTAsaT1uLmxlbmd0aDtlPGk7ZSsrKXtjb25zdCBpPW8uZ2V0KG5bZV0pO2kuX193ZWJnbFRleHR1cmUmJih0LmRlbGV0ZVRleHR1cmUoaS5fX3dlYmdsVGV4dHVyZSksci5tZW1vcnkudGV4dHVyZXMtLSksby5yZW1vdmUobltlXSl9by5yZW1vdmUobiksby5yZW1vdmUoZSl9KShuKX1sZXQgTz0wO2Z1bmN0aW9uIFAodCxlKXtjb25zdCBpPW8uZ2V0KHQpO2lmKHQuaXNWaWRlb1RleHR1cmUmJihmdW5jdGlvbiBhKHQpe2NvbnN0IGU9ci5yZW5kZXIuZnJhbWU7bS5nZXQodCkhPT1lJiYobS5zZXQodCxlKSx0LnVwZGF0ZSgpKX0pKHQpLHQudmVyc2lvbj4wJiZpLl9fdmVyc2lvbiE9PXQudmVyc2lvbil7Y29uc3Qgbj10LmltYWdlO2lmKHZvaWQgMD09PW4pY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiBUZXh0dXJlIG1hcmtlZCBmb3IgdXBkYXRlIGJ1dCBpbWFnZSBpcyB1bmRlZmluZWQiKTtlbHNle2lmKCExIT09bi5jb21wbGV0ZSlyZXR1cm4gdm9pZCBFKGksdCxlKTtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IFRleHR1cmUgbWFya2VkIGZvciB1cGRhdGUgYnV0IGltYWdlIGlzIGluY29tcGxldGUiKX19bi5hY3RpdmVUZXh0dXJlKDMzOTg0K2UpLG4uYmluZFRleHR1cmUoMzU1MyxpLl9fd2ViZ2xUZXh0dXJlKX1mdW5jdGlvbiB3KGUsaSl7Y29uc3Qgcj1vLmdldChlKTtlLnZlcnNpb24+MCYmci5fX3ZlcnNpb24hPT1lLnZlcnNpb24/KGZ1bmN0aW9uIGwoZSxvLGkpe2lmKDYhPT1vLmltYWdlLmxlbmd0aClyZXR1cm47UihlLG8pLG4uYWN0aXZlVGV4dHVyZSgzMzk4NCtpKSxuLmJpbmRUZXh0dXJlKDM0MDY3LGUuX193ZWJnbFRleHR1cmUpLHQucGl4ZWxTdG9yZWkoMzc0NDAsby5mbGlwWSksdC5waXhlbFN0b3JlaSgzNzQ0MSxvLnByZW11bHRpcGx5QWxwaGEpLHQucGl4ZWxTdG9yZWkoMzMxNyxvLnVucGFja0FsaWdubWVudCksdC5waXhlbFN0b3JlaSgzNzQ0MywwKTtjb25zdCByPW8mJihvLmlzQ29tcHJlc3NlZFRleHR1cmV8fG8uaW1hZ2VbMF0uaXNDb21wcmVzc2VkVGV4dHVyZSksbD1vLmltYWdlWzBdJiZvLmltYWdlWzBdLmlzRGF0YVRleHR1cmUsZD1bXTtmb3IobGV0IHQ9MDt0PDY7dCsrKWRbdF09cnx8bD9sP28uaW1hZ2VbdF0uaW1hZ2U6by5pbWFnZVt0XTpoKG8uaW1hZ2VbdF0sITEsITAsYyk7Y29uc3QgcD1kWzBdLG09YihwKXx8cyxmPWEuY29udmVydChvLmZvcm1hdCksdT1hLmNvbnZlcnQoby50eXBlKSxnPUMoby5pbnRlcm5hbEZvcm1hdCxmLHUpO2xldCBNO2lmKEQoMzQwNjcsbyxtKSxyKXtmb3IobGV0IHQ9MDt0PDY7dCsrKXtNPWRbdF0ubWlwbWFwcztmb3IobGV0IGU9MDtlPE0ubGVuZ3RoO2UrKyl7Y29uc3QgaT1NW2VdO28uZm9ybWF0IT09anJ0JiZvLmZvcm1hdCE9PVZydD9udWxsIT09Zj9uLmNvbXByZXNzZWRUZXhJbWFnZTJEKDM0MDY5K3QsZSxnLGkud2lkdGgsaS5oZWlnaHQsMCxpLmRhdGEpOmNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogQXR0ZW1wdCB0byBsb2FkIHVuc3VwcG9ydGVkIGNvbXByZXNzZWQgdGV4dHVyZSBmb3JtYXQgaW4gLnNldFRleHR1cmVDdWJlKCkiKTpuLnRleEltYWdlMkQoMzQwNjkrdCxlLGcsaS53aWR0aCxpLmhlaWdodCwwLGYsdSxpLmRhdGEpfX1lLl9fbWF4TWlwTGV2ZWw9TS5sZW5ndGgtMX1lbHNle009by5taXBtYXBzO2ZvcihsZXQgdD0wO3Q8Njt0KyspaWYobCl7bi50ZXhJbWFnZTJEKDM0MDY5K3QsMCxnLGRbdF0ud2lkdGgsZFt0XS5oZWlnaHQsMCxmLHUsZFt0XS5kYXRhKTtmb3IobGV0IGU9MDtlPE0ubGVuZ3RoO2UrKyl7Y29uc3Qgbz1NW2VdLmltYWdlW3RdLmltYWdlO24udGV4SW1hZ2UyRCgzNDA2OSt0LGUrMSxnLG8ud2lkdGgsby5oZWlnaHQsMCxmLHUsby5kYXRhKX19ZWxzZXtuLnRleEltYWdlMkQoMzQwNjkrdCwwLGcsZix1LGRbdF0pO2ZvcihsZXQgZT0wO2U8TS5sZW5ndGg7ZSsrKXtuLnRleEltYWdlMkQoMzQwNjkrdCxlKzEsZyxmLHUsTVtlXS5pbWFnZVt0XSl9fWUuX19tYXhNaXBMZXZlbD1NLmxlbmd0aH15KG8sbSkmJl8oMzQwNjcsbyxwLndpZHRoLHAuaGVpZ2h0KTtlLl9fdmVyc2lvbj1vLnZlcnNpb24sby5vblVwZGF0ZSYmby5vblVwZGF0ZShvKX0pKHIsZSxpKToobi5hY3RpdmVUZXh0dXJlKDMzOTg0K2kpLG4uYmluZFRleHR1cmUoMzQwNjcsci5fX3dlYmdsVGV4dHVyZSkpfWNvbnN0IGs9e1tEcnRdOjEwNDk3LFtScnRdOjMzMDcxLFtFcnRdOjMzNjQ4fSxTPXtbQXJ0XTo5NzI4LDEwMDQ6OTk4NCwxMDA1Ojk5ODYsW1RydF06OTcyOSwxMDA3Ojk5ODUsW05ydF06OTk4N307ZnVuY3Rpb24gRChuLGEscil7aWYocj8odC50ZXhQYXJhbWV0ZXJpKG4sMTAyNDIsa1thLndyYXBTXSksdC50ZXhQYXJhbWV0ZXJpKG4sMTAyNDMsa1thLndyYXBUXSksMzI4NzkhPT1uJiYzNTg2NiE9PW58fHQudGV4UGFyYW1ldGVyaShuLDMyODgyLGtbYS53cmFwUl0pLHQudGV4UGFyYW1ldGVyaShuLDEwMjQwLFNbYS5tYWdGaWx0ZXJdKSx0LnRleFBhcmFtZXRlcmkobiwxMDI0MSxTW2EubWluRmlsdGVyXSkpOih0LnRleFBhcmFtZXRlcmkobiwxMDI0MiwzMzA3MSksdC50ZXhQYXJhbWV0ZXJpKG4sMTAyNDMsMzMwNzEpLDMyODc5IT09biYmMzU4NjYhPT1ufHx0LnRleFBhcmFtZXRlcmkobiwzMjg4MiwzMzA3MSksYS53cmFwUz09PVJydCYmYS53cmFwVD09PVJydHx8Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiBUZXh0dXJlIGlzIG5vdCBwb3dlciBvZiB0d28uIFRleHR1cmUud3JhcFMgYW5kIFRleHR1cmUud3JhcFQgc2hvdWxkIGJlIHNldCB0byBUSFJFRS5DbGFtcFRvRWRnZVdyYXBwaW5nLiIpLHQudGV4UGFyYW1ldGVyaShuLDEwMjQwLE0oYS5tYWdGaWx0ZXIpKSx0LnRleFBhcmFtZXRlcmkobiwxMDI0MSxNKGEubWluRmlsdGVyKSksYS5taW5GaWx0ZXIhPT1BcnQmJmEubWluRmlsdGVyIT09VHJ0JiZjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IFRleHR1cmUgaXMgbm90IHBvd2VyIG9mIHR3by4gVGV4dHVyZS5taW5GaWx0ZXIgc2hvdWxkIGJlIHNldCB0byBUSFJFRS5OZWFyZXN0RmlsdGVyIG9yIFRIUkVFLkxpbmVhckZpbHRlci4iKSksITA9PT1lLmhhcygiRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIikpe2NvbnN0IHI9ZS5nZXQoIkVYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyIpO2lmKGEudHlwZT09PUZydCYmITE9PT1lLmhhcygiT0VTX3RleHR1cmVfZmxvYXRfbGluZWFyIikpcmV0dXJuO2lmKCExPT09cyYmYS50eXBlPT09THJ0JiYhMT09PWUuaGFzKCJPRVNfdGV4dHVyZV9oYWxmX2Zsb2F0X2xpbmVhciIpKXJldHVybjsoYS5hbmlzb3Ryb3B5PjF8fG8uZ2V0KGEpLl9fY3VycmVudEFuaXNvdHJvcHkpJiYodC50ZXhQYXJhbWV0ZXJmKG4sci5URVhUVVJFX01BWF9BTklTT1RST1BZX0VYVCxNYXRoLm1pbihhLmFuaXNvdHJvcHksaS5nZXRNYXhBbmlzb3Ryb3B5KCkpKSxvLmdldChhKS5fX2N1cnJlbnRBbmlzb3Ryb3B5PWEuYW5pc290cm9weSl9fWZ1bmN0aW9uIFIoZSxuKXt2b2lkIDA9PT1lLl9fd2ViZ2xJbml0JiYoZS5fX3dlYmdsSW5pdD0hMCxuLmFkZEV2ZW50TGlzdGVuZXIoImRpc3Bvc2UiLHYpLGUuX193ZWJnbFRleHR1cmU9dC5jcmVhdGVUZXh0dXJlKCksci5tZW1vcnkudGV4dHVyZXMrKyl9ZnVuY3Rpb24gRShlLG8saSl7bGV0IHI9MzU1MztvLmlzRGF0YVRleHR1cmUyREFycmF5JiYocj0zNTg2Niksby5pc0RhdGFUZXh0dXJlM0QmJihyPTMyODc5KSxSKGUsbyksbi5hY3RpdmVUZXh0dXJlKDMzOTg0K2kpLG4uYmluZFRleHR1cmUocixlLl9fd2ViZ2xUZXh0dXJlKSx0LnBpeGVsU3RvcmVpKDM3NDQwLG8uZmxpcFkpLHQucGl4ZWxTdG9yZWkoMzc0NDEsby5wcmVtdWx0aXBseUFscGhhKSx0LnBpeGVsU3RvcmVpKDMzMTcsby51bnBhY2tBbGlnbm1lbnQpLHQucGl4ZWxTdG9yZWkoMzc0NDMsMCk7Y29uc3QgbD0oZnVuY3Rpb24gYyh0KXtyZXR1cm4hcyYmKHQud3JhcFMhPT1ScnR8fHQud3JhcFQhPT1ScnR8fHQubWluRmlsdGVyIT09QXJ0JiZ0Lm1pbkZpbHRlciE9PVRydCl9KShvKSYmITE9PT1iKG8uaW1hZ2UpLHA9aChvLmltYWdlLGwsITEsZCksbT1iKHApfHxzLGY9YS5jb252ZXJ0KG8uZm9ybWF0KTtsZXQgdSxnPWEuY29udmVydChvLnR5cGUpLE09QyhvLmludGVybmFsRm9ybWF0LGYsZyk7RChyLG8sbSk7Y29uc3Qgdj1vLm1pcG1hcHM7aWYoby5pc0RlcHRoVGV4dHVyZSlNPTY0MDIscz9NPW8udHlwZT09PUZydD8zNjAxMjpvLnR5cGU9PT1IcnQ/MzMxOTA6by50eXBlPT09QnJ0PzM1MDU2OjMzMTg5Om8udHlwZT09PUZydCYmY29uc29sZS5lcnJvcigiV2ViR0xSZW5kZXJlcjogRmxvYXRpbmcgcG9pbnQgZGVwdGggdGV4dHVyZSByZXF1aXJlcyBXZWJHTDIuIiksby5mb3JtYXQ9PT1VcnQmJjY0MDI9PT1NJiZvLnR5cGUhPT1JcnQmJm8udHlwZSE9PUhydCYmKGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogVXNlIFVuc2lnbmVkU2hvcnRUeXBlIG9yIFVuc2lnbmVkSW50VHlwZSBmb3IgRGVwdGhGb3JtYXQgRGVwdGhUZXh0dXJlLiIpLG8udHlwZT1JcnQsZz1hLmNvbnZlcnQoby50eXBlKSksby5mb3JtYXQ9PT1XcnQmJjY0MDI9PT1NJiYoTT0zNDA0MSxvLnR5cGUhPT1CcnQmJihjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IFVzZSBVbnNpZ25lZEludDI0OFR5cGUgZm9yIERlcHRoU3RlbmNpbEZvcm1hdCBEZXB0aFRleHR1cmUuIiksby50eXBlPUJydCxnPWEuY29udmVydChvLnR5cGUpKSksbi50ZXhJbWFnZTJEKDM1NTMsMCxNLHAud2lkdGgscC5oZWlnaHQsMCxmLGcsbnVsbCk7ZWxzZSBpZihvLmlzRGF0YVRleHR1cmUpaWYodi5sZW5ndGg+MCYmbSl7Zm9yKGxldCB0PTAsZT12Lmxlbmd0aDt0PGU7dCsrKXU9dlt0XSxuLnRleEltYWdlMkQoMzU1Myx0LE0sdS53aWR0aCx1LmhlaWdodCwwLGYsZyx1LmRhdGEpO28uZ2VuZXJhdGVNaXBtYXBzPSExLGUuX19tYXhNaXBMZXZlbD12Lmxlbmd0aC0xfWVsc2Ugbi50ZXhJbWFnZTJEKDM1NTMsMCxNLHAud2lkdGgscC5oZWlnaHQsMCxmLGcscC5kYXRhKSxlLl9fbWF4TWlwTGV2ZWw9MDtlbHNlIGlmKG8uaXNDb21wcmVzc2VkVGV4dHVyZSl7Zm9yKGxldCB0PTAsZT12Lmxlbmd0aDt0PGU7dCsrKXU9dlt0XSxvLmZvcm1hdCE9PWpydCYmby5mb3JtYXQhPT1WcnQ/bnVsbCE9PWY/bi5jb21wcmVzc2VkVGV4SW1hZ2UyRCgzNTUzLHQsTSx1LndpZHRoLHUuaGVpZ2h0LDAsdS5kYXRhKTpjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IEF0dGVtcHQgdG8gbG9hZCB1bnN1cHBvcnRlZCBjb21wcmVzc2VkIHRleHR1cmUgZm9ybWF0IGluIC51cGxvYWRUZXh0dXJlKCkiKTpuLnRleEltYWdlMkQoMzU1Myx0LE0sdS53aWR0aCx1LmhlaWdodCwwLGYsZyx1LmRhdGEpO2UuX19tYXhNaXBMZXZlbD12Lmxlbmd0aC0xfWVsc2UgaWYoby5pc0RhdGFUZXh0dXJlMkRBcnJheSluLnRleEltYWdlM0QoMzU4NjYsMCxNLHAud2lkdGgscC5oZWlnaHQscC5kZXB0aCwwLGYsZyxwLmRhdGEpLGUuX19tYXhNaXBMZXZlbD0wO2Vsc2UgaWYoby5pc0RhdGFUZXh0dXJlM0Qpbi50ZXhJbWFnZTNEKDMyODc5LDAsTSxwLndpZHRoLHAuaGVpZ2h0LHAuZGVwdGgsMCxmLGcscC5kYXRhKSxlLl9fbWF4TWlwTGV2ZWw9MDtlbHNlIGlmKHYubGVuZ3RoPjAmJm0pe2ZvcihsZXQgdD0wLGU9di5sZW5ndGg7dDxlO3QrKyl1PXZbdF0sbi50ZXhJbWFnZTJEKDM1NTMsdCxNLGYsZyx1KTtvLmdlbmVyYXRlTWlwbWFwcz0hMSxlLl9fbWF4TWlwTGV2ZWw9di5sZW5ndGgtMX1lbHNlIG4udGV4SW1hZ2UyRCgzNTUzLDAsTSxmLGcscCksZS5fX21heE1pcExldmVsPTA7eShvLG0pJiZfKHIsbyxwLndpZHRoLHAuaGVpZ2h0KSxlLl9fdmVyc2lvbj1vLnZlcnNpb24sby5vblVwZGF0ZSYmby5vblVwZGF0ZShvKX1mdW5jdGlvbiBBKGUsaSxyLHMsbCl7Y29uc3QgYz1hLmNvbnZlcnQoci5mb3JtYXQpLGQ9YS5jb252ZXJ0KHIudHlwZSkscD1DKHIuaW50ZXJuYWxGb3JtYXQsYyxkKTszMjg3OT09PWx8fDM1ODY2PT09bD9uLnRleEltYWdlM0QobCwwLHAsaS53aWR0aCxpLmhlaWdodCxpLmRlcHRoLDAsYyxkLG51bGwpOm4udGV4SW1hZ2UyRChsLDAscCxpLndpZHRoLGkuaGVpZ2h0LDAsYyxkLG51bGwpLG4uYmluZEZyYW1lYnVmZmVyKDM2MTYwLGUpLHQuZnJhbWVidWZmZXJUZXh0dXJlMkQoMzYxNjAscyxsLG8uZ2V0KHIpLl9fd2ViZ2xUZXh0dXJlLDApLG4uYmluZEZyYW1lYnVmZmVyKDM2MTYwLG51bGwpfWZ1bmN0aW9uIFQoZSxuLG8pe2lmKHQuYmluZFJlbmRlcmJ1ZmZlcigzNjE2MSxlKSxuLmRlcHRoQnVmZmVyJiYhbi5zdGVuY2lsQnVmZmVyKXtsZXQgaT0zMzE4OTtpZihvKXtjb25zdCBlPW4uZGVwdGhUZXh0dXJlO2UmJmUuaXNEZXB0aFRleHR1cmUmJihlLnR5cGU9PT1GcnQ/aT0zNjAxMjplLnR5cGU9PT1IcnQmJihpPTMzMTkwKSk7Y29uc3Qgbz16KG4pO3QucmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKDM2MTYxLG8saSxuLndpZHRoLG4uaGVpZ2h0KX1lbHNlIHQucmVuZGVyYnVmZmVyU3RvcmFnZSgzNjE2MSxpLG4ud2lkdGgsbi5oZWlnaHQpO3QuZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoMzYxNjAsMzYwOTYsMzYxNjEsZSl9ZWxzZSBpZihuLmRlcHRoQnVmZmVyJiZuLnN0ZW5jaWxCdWZmZXIpe2lmKG8pe2NvbnN0IGU9eihuKTt0LnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSgzNjE2MSxlLDM1MDU2LG4ud2lkdGgsbi5oZWlnaHQpfWVsc2UgdC5yZW5kZXJidWZmZXJTdG9yYWdlKDM2MTYxLDM0MDQxLG4ud2lkdGgsbi5oZWlnaHQpO3QuZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoMzYxNjAsMzMzMDYsMzYxNjEsZSl9ZWxzZXtjb25zdCBlPSEwPT09bi5pc1dlYkdMTXVsdGlwbGVSZW5kZXJUYXJnZXRzP24udGV4dHVyZVswXTpuLnRleHR1cmUsaT1hLmNvbnZlcnQoZS5mb3JtYXQpLHI9YS5jb252ZXJ0KGUudHlwZSkscz1DKGUuaW50ZXJuYWxGb3JtYXQsaSxyKTtpZihvKXtjb25zdCBlPXoobik7dC5yZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUoMzYxNjEsZSxzLG4ud2lkdGgsbi5oZWlnaHQpfWVsc2UgdC5yZW5kZXJidWZmZXJTdG9yYWdlKDM2MTYxLHMsbi53aWR0aCxuLmhlaWdodCl9dC5iaW5kUmVuZGVyYnVmZmVyKDM2MTYxLG51bGwpfWZ1bmN0aW9uIE4oZSl7Y29uc3QgaT1vLmdldChlKSxhPSEwPT09ZS5pc1dlYkdMQ3ViZVJlbmRlclRhcmdldDtpZihlLmRlcHRoVGV4dHVyZSl7aWYoYSl0aHJvdyBuZXcgRXJyb3IoInRhcmdldC5kZXB0aFRleHR1cmUgbm90IHN1cHBvcnRlZCBpbiBDdWJlIHJlbmRlciB0YXJnZXRzIik7IShmdW5jdGlvbiByKGUsaSl7aWYoaSYmaS5pc1dlYkdMQ3ViZVJlbmRlclRhcmdldCl0aHJvdyBuZXcgRXJyb3IoIkRlcHRoIFRleHR1cmUgd2l0aCBjdWJlIHJlbmRlciB0YXJnZXRzIGlzIG5vdCBzdXBwb3J0ZWQiKTtpZihuLmJpbmRGcmFtZWJ1ZmZlcigzNjE2MCxlKSwhaS5kZXB0aFRleHR1cmV8fCFpLmRlcHRoVGV4dHVyZS5pc0RlcHRoVGV4dHVyZSl0aHJvdyBuZXcgRXJyb3IoInJlbmRlclRhcmdldC5kZXB0aFRleHR1cmUgbXVzdCBiZSBhbiBpbnN0YW5jZSBvZiBUSFJFRS5EZXB0aFRleHR1cmUiKTtvLmdldChpLmRlcHRoVGV4dHVyZSkuX193ZWJnbFRleHR1cmUmJmkuZGVwdGhUZXh0dXJlLmltYWdlLndpZHRoPT09aS53aWR0aCYmaS5kZXB0aFRleHR1cmUuaW1hZ2UuaGVpZ2h0PT09aS5oZWlnaHR8fChpLmRlcHRoVGV4dHVyZS5pbWFnZS53aWR0aD1pLndpZHRoLGkuZGVwdGhUZXh0dXJlLmltYWdlLmhlaWdodD1pLmhlaWdodCxpLmRlcHRoVGV4dHVyZS5uZWVkc1VwZGF0ZT0hMCksUChpLmRlcHRoVGV4dHVyZSwwKTtjb25zdCBhPW8uZ2V0KGkuZGVwdGhUZXh0dXJlKS5fX3dlYmdsVGV4dHVyZTtpZihpLmRlcHRoVGV4dHVyZS5mb3JtYXQ9PT1VcnQpdC5mcmFtZWJ1ZmZlclRleHR1cmUyRCgzNjE2MCwzNjA5NiwzNTUzLGEsMCk7ZWxzZXtpZihpLmRlcHRoVGV4dHVyZS5mb3JtYXQhPT1XcnQpdGhyb3cgbmV3IEVycm9yKCJVbmtub3duIGRlcHRoVGV4dHVyZSBmb3JtYXQiKTt0LmZyYW1lYnVmZmVyVGV4dHVyZTJEKDM2MTYwLDMzMzA2LDM1NTMsYSwwKX19KShpLl9fd2ViZ2xGcmFtZWJ1ZmZlcixlKX1lbHNlIGlmKGEpe2kuX193ZWJnbERlcHRoYnVmZmVyPVtdO2ZvcihsZXQgbz0wO288NjtvKyspbi5iaW5kRnJhbWVidWZmZXIoMzYxNjAsaS5fX3dlYmdsRnJhbWVidWZmZXJbb10pLGkuX193ZWJnbERlcHRoYnVmZmVyW29dPXQuY3JlYXRlUmVuZGVyYnVmZmVyKCksVChpLl9fd2ViZ2xEZXB0aGJ1ZmZlcltvXSxlLCExKX1lbHNlIG4uYmluZEZyYW1lYnVmZmVyKDM2MTYwLGkuX193ZWJnbEZyYW1lYnVmZmVyKSxpLl9fd2ViZ2xEZXB0aGJ1ZmZlcj10LmNyZWF0ZVJlbmRlcmJ1ZmZlcigpLFQoaS5fX3dlYmdsRGVwdGhidWZmZXIsZSwhMSk7bi5iaW5kRnJhbWVidWZmZXIoMzYxNjAsbnVsbCl9ZnVuY3Rpb24geih0KXtyZXR1cm4gcyYmdC5pc1dlYkdMTXVsdGlzYW1wbGVSZW5kZXJUYXJnZXQ/TWF0aC5taW4ocCx0LnNhbXBsZXMpOjB9bGV0IEk9ITEsSD0hMTt0aGlzLmFsbG9jYXRlVGV4dHVyZVVuaXQ9ZnVuY3Rpb24gRigpe2NvbnN0IHQ9TztyZXR1cm4gdD49bCYmY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFRleHR1cmVzOiBUcnlpbmcgdG8gdXNlICIrdCsiIHRleHR1cmUgdW5pdHMgd2hpbGUgdGhpcyBHUFUgc3VwcG9ydHMgb25seSAiK2wpLE8rPTEsdH0sdGhpcy5yZXNldFRleHR1cmVVbml0cz1mdW5jdGlvbiBMKCl7Tz0wfSx0aGlzLnNldFRleHR1cmUyRD1QLHRoaXMuc2V0VGV4dHVyZTJEQXJyYXk9ZnVuY3Rpb24gQih0LGUpe2NvbnN0IGk9by5nZXQodCk7dC52ZXJzaW9uPjAmJmkuX192ZXJzaW9uIT09dC52ZXJzaW9uP0UoaSx0LGUpOihuLmFjdGl2ZVRleHR1cmUoMzM5ODQrZSksbi5iaW5kVGV4dHVyZSgzNTg2NixpLl9fd2ViZ2xUZXh0dXJlKSl9LHRoaXMuc2V0VGV4dHVyZTNEPWZ1bmN0aW9uIFYodCxlKXtjb25zdCBpPW8uZ2V0KHQpO3QudmVyc2lvbj4wJiZpLl9fdmVyc2lvbiE9PXQudmVyc2lvbj9FKGksdCxlKToobi5hY3RpdmVUZXh0dXJlKDMzOTg0K2UpLG4uYmluZFRleHR1cmUoMzI4NzksaS5fX3dlYmdsVGV4dHVyZSkpfSx0aGlzLnNldFRleHR1cmVDdWJlPXcsdGhpcy5zZXR1cFJlbmRlclRhcmdldD1mdW5jdGlvbiBqKGUpe2NvbnN0IGw9ZS50ZXh0dXJlLGM9by5nZXQoZSksZD1vLmdldChsKTtlLmFkZEV2ZW50TGlzdGVuZXIoImRpc3Bvc2UiLHgpLCEwIT09ZS5pc1dlYkdMTXVsdGlwbGVSZW5kZXJUYXJnZXRzJiYoZC5fX3dlYmdsVGV4dHVyZT10LmNyZWF0ZVRleHR1cmUoKSxkLl9fdmVyc2lvbj1sLnZlcnNpb24sci5tZW1vcnkudGV4dHVyZXMrKyk7Y29uc3QgcD0hMD09PWUuaXNXZWJHTEN1YmVSZW5kZXJUYXJnZXQsbT0hMD09PWUuaXNXZWJHTE11bHRpcGxlUmVuZGVyVGFyZ2V0cyxmPSEwPT09ZS5pc1dlYkdMTXVsdGlzYW1wbGVSZW5kZXJUYXJnZXQsdT1sLmlzRGF0YVRleHR1cmUzRHx8bC5pc0RhdGFUZXh0dXJlMkRBcnJheSxnPWIoZSl8fHM7aWYoIXN8fGwuZm9ybWF0IT09VnJ0fHxsLnR5cGUhPT1GcnQmJmwudHlwZSE9PUxydHx8KGwuZm9ybWF0PWpydCxjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IFJlbmRlcmluZyB0byB0ZXh0dXJlcyB3aXRoIFJHQiBmb3JtYXQgaXMgbm90IHN1cHBvcnRlZC4gVXNpbmcgUkdCQSBmb3JtYXQgaW5zdGVhZC4iKSkscCl7Yy5fX3dlYmdsRnJhbWVidWZmZXI9W107Zm9yKGxldCBlPTA7ZTw2O2UrKyljLl9fd2ViZ2xGcmFtZWJ1ZmZlcltlXT10LmNyZWF0ZUZyYW1lYnVmZmVyKCl9ZWxzZSBpZihjLl9fd2ViZ2xGcmFtZWJ1ZmZlcj10LmNyZWF0ZUZyYW1lYnVmZmVyKCksbSlpZihpLmRyYXdCdWZmZXJzKXtjb25zdCBuPWUudGV4dHVyZTtmb3IobGV0IGU9MCxpPW4ubGVuZ3RoO2U8aTtlKyspe2NvbnN0IGk9by5nZXQobltlXSk7dm9pZCAwPT09aS5fX3dlYmdsVGV4dHVyZSYmKGkuX193ZWJnbFRleHR1cmU9dC5jcmVhdGVUZXh0dXJlKCksci5tZW1vcnkudGV4dHVyZXMrKyl9fWVsc2UgY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiBXZWJHTE11bHRpcGxlUmVuZGVyVGFyZ2V0cyBjYW4gb25seSBiZSB1c2VkIHdpdGggV2ViR0wyIG9yIFdFQkdMX2RyYXdfYnVmZmVycyBleHRlbnNpb24uIik7ZWxzZSBpZihmKWlmKHMpe2MuX193ZWJnbE11bHRpc2FtcGxlZEZyYW1lYnVmZmVyPXQuY3JlYXRlRnJhbWVidWZmZXIoKSxjLl9fd2ViZ2xDb2xvclJlbmRlcmJ1ZmZlcj10LmNyZWF0ZVJlbmRlcmJ1ZmZlcigpLHQuYmluZFJlbmRlcmJ1ZmZlcigzNjE2MSxjLl9fd2ViZ2xDb2xvclJlbmRlcmJ1ZmZlcik7Y29uc3Qgbz1hLmNvbnZlcnQobC5mb3JtYXQpLGk9YS5jb252ZXJ0KGwudHlwZSkscj1DKGwuaW50ZXJuYWxGb3JtYXQsbyxpKSxzPXooZSk7dC5yZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUoMzYxNjEscyxyLGUud2lkdGgsZS5oZWlnaHQpLG4uYmluZEZyYW1lYnVmZmVyKDM2MTYwLGMuX193ZWJnbE11bHRpc2FtcGxlZEZyYW1lYnVmZmVyKSx0LmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKDM2MTYwLDM2MDY0LDM2MTYxLGMuX193ZWJnbENvbG9yUmVuZGVyYnVmZmVyKSx0LmJpbmRSZW5kZXJidWZmZXIoMzYxNjEsbnVsbCksZS5kZXB0aEJ1ZmZlciYmKGMuX193ZWJnbERlcHRoUmVuZGVyYnVmZmVyPXQuY3JlYXRlUmVuZGVyYnVmZmVyKCksVChjLl9fd2ViZ2xEZXB0aFJlbmRlcmJ1ZmZlcixlLCEwKSksbi5iaW5kRnJhbWVidWZmZXIoMzYxNjAsbnVsbCl9ZWxzZSBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IFdlYkdMTXVsdGlzYW1wbGVSZW5kZXJUYXJnZXQgY2FuIG9ubHkgYmUgdXNlZCB3aXRoIFdlYkdMMi4iKTtpZihwKXtuLmJpbmRUZXh0dXJlKDM0MDY3LGQuX193ZWJnbFRleHR1cmUpLEQoMzQwNjcsbCxnKTtmb3IobGV0IHQ9MDt0PDY7dCsrKUEoYy5fX3dlYmdsRnJhbWVidWZmZXJbdF0sZSxsLDM2MDY0LDM0MDY5K3QpO3kobCxnKSYmXygzNDA2NyxsLGUud2lkdGgsZS5oZWlnaHQpLG4uYmluZFRleHR1cmUoMzQwNjcsbnVsbCl9ZWxzZSBpZihtKXtjb25zdCB0PWUudGV4dHVyZTtmb3IobGV0IGk9MCxhPXQubGVuZ3RoO2k8YTtpKyspe2NvbnN0IGE9dFtpXSxyPW8uZ2V0KGEpO24uYmluZFRleHR1cmUoMzU1MyxyLl9fd2ViZ2xUZXh0dXJlKSxEKDM1NTMsYSxnKSxBKGMuX193ZWJnbEZyYW1lYnVmZmVyLGUsYSwzNjA2NCtpLDM1NTMpLHkoYSxnKSYmXygzNTUzLGEsZS53aWR0aCxlLmhlaWdodCl9bi5iaW5kVGV4dHVyZSgzNTUzLG51bGwpfWVsc2V7bGV0IHQ9MzU1MztpZih1KWlmKHMpe3Q9bC5pc0RhdGFUZXh0dXJlM0Q/MzI4Nzk6MzU4NjZ9ZWxzZSBjb25zb2xlLndhcm4oIlRIUkVFLkRhdGFUZXh0dXJlM0QgYW5kIFRIUkVFLkRhdGFUZXh0dXJlMkRBcnJheSBvbmx5IHN1cHBvcnRlZCB3aXRoIFdlYkdMMi4iKTtuLmJpbmRUZXh0dXJlKHQsZC5fX3dlYmdsVGV4dHVyZSksRCh0LGwsZyksQShjLl9fd2ViZ2xGcmFtZWJ1ZmZlcixlLGwsMzYwNjQsdCkseShsLGcpJiZfKHQsbCxlLndpZHRoLGUuaGVpZ2h0LGUuZGVwdGgpLG4uYmluZFRleHR1cmUodCxudWxsKX1lLmRlcHRoQnVmZmVyJiZOKGUpfSx0aGlzLnVwZGF0ZVJlbmRlclRhcmdldE1pcG1hcD1mdW5jdGlvbiBVKHQpe2NvbnN0IGU9Yih0KXx8cyxpPSEwPT09dC5pc1dlYkdMTXVsdGlwbGVSZW5kZXJUYXJnZXRzP3QudGV4dHVyZTpbdC50ZXh0dXJlXTtmb3IobGV0IGE9MCxyPWkubGVuZ3RoO2E8cjthKyspe2NvbnN0IHI9aVthXTtpZih5KHIsZSkpe2NvbnN0IGU9dC5pc1dlYkdMQ3ViZVJlbmRlclRhcmdldD8zNDA2NzozNTUzLGk9by5nZXQocikuX193ZWJnbFRleHR1cmU7bi5iaW5kVGV4dHVyZShlLGkpLF8oZSxyLHQud2lkdGgsdC5oZWlnaHQpLG4uYmluZFRleHR1cmUoZSxudWxsKX19fSx0aGlzLnVwZGF0ZU11bHRpc2FtcGxlUmVuZGVyVGFyZ2V0PWZ1bmN0aW9uIFcoZSl7aWYoZS5pc1dlYkdMTXVsdGlzYW1wbGVSZW5kZXJUYXJnZXQpaWYocyl7Y29uc3QgaT1lLndpZHRoLGE9ZS5oZWlnaHQ7bGV0IHI9MTYzODQ7ZS5kZXB0aEJ1ZmZlciYmKHJ8PTI1NiksZS5zdGVuY2lsQnVmZmVyJiYocnw9MTAyNCk7Y29uc3Qgcz1vLmdldChlKTtuLmJpbmRGcmFtZWJ1ZmZlcigzNjAwOCxzLl9fd2ViZ2xNdWx0aXNhbXBsZWRGcmFtZWJ1ZmZlciksbi5iaW5kRnJhbWVidWZmZXIoMzYwMDkscy5fX3dlYmdsRnJhbWVidWZmZXIpLHQuYmxpdEZyYW1lYnVmZmVyKDAsMCxpLGEsMCwwLGksYSxyLDk3MjgpLG4uYmluZEZyYW1lYnVmZmVyKDM2MDA4LG51bGwpLG4uYmluZEZyYW1lYnVmZmVyKDM2MDA5LHMuX193ZWJnbE11bHRpc2FtcGxlZEZyYW1lYnVmZmVyKX1lbHNlIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogV2ViR0xNdWx0aXNhbXBsZVJlbmRlclRhcmdldCBjYW4gb25seSBiZSB1c2VkIHdpdGggV2ViR0wyLiIpfSx0aGlzLnNhZmVTZXRUZXh0dXJlMkQ9ZnVuY3Rpb24gRyh0LGUpe3QmJnQuaXNXZWJHTFJlbmRlclRhcmdldCYmKCExPT09SSYmKGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xUZXh0dXJlcy5zYWZlU2V0VGV4dHVyZTJEOiBkb24ndCB1c2UgcmVuZGVyIHRhcmdldHMgYXMgdGV4dHVyZXMuIFVzZSB0aGVpciAudGV4dHVyZSBwcm9wZXJ0eSBpbnN0ZWFkLiIpLEk9ITApLHQ9dC50ZXh0dXJlKSxQKHQsZSl9LHRoaXMuc2FmZVNldFRleHR1cmVDdWJlPWZ1bmN0aW9uIFkodCxlKXt0JiZ0LmlzV2ViR0xDdWJlUmVuZGVyVGFyZ2V0JiYoITE9PT1IJiYoY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFRleHR1cmVzLnNhZmVTZXRUZXh0dXJlQ3ViZTogZG9uJ3QgdXNlIGN1YmUgcmVuZGVyIHRhcmdldHMgYXMgdGV4dHVyZXMuIFVzZSB0aGVpciAudGV4dHVyZSBwcm9wZXJ0eSBpbnN0ZWFkLiIpLEg9ITApLHQ9dC50ZXh0dXJlKSx3KHQsZSl9fWZ1bmN0aW9uIFJtdCh0LGUsbil7Y29uc3Qgbz1uLmlzV2ViR0wyO3JldHVybntjb252ZXJ0OmZ1bmN0aW9uIGkodCl7bGV0IG47aWYodD09PXpydClyZXR1cm4gNTEyMTtpZigxMDE3PT09dClyZXR1cm4gMzI4MTk7aWYoMTAxOD09PXQpcmV0dXJuIDMyODIwO2lmKDEwMTk9PT10KXJldHVybiAzMzYzNTtpZigxMDEwPT09dClyZXR1cm4gNTEyMDtpZigxMDExPT09dClyZXR1cm4gNTEyMjtpZih0PT09SXJ0KXJldHVybiA1MTIzO2lmKDEwMTM9PT10KXJldHVybiA1MTI0O2lmKHQ9PT1IcnQpcmV0dXJuIDUxMjU7aWYodD09PUZydClyZXR1cm4gNTEyNjtpZih0PT09THJ0KXJldHVybiBvPzUxMzE6KG49ZS5nZXQoIk9FU190ZXh0dXJlX2hhbGZfZmxvYXQiKSxudWxsIT09bj9uLkhBTEZfRkxPQVRfT0VTOm51bGwpO2lmKDEwMjE9PT10KXJldHVybiA2NDA2O2lmKHQ9PT1WcnQpcmV0dXJuIDY0MDc7aWYodD09PWpydClyZXR1cm4gNjQwODtpZigxMDI0PT09dClyZXR1cm4gNjQwOTtpZigxMDI1PT09dClyZXR1cm4gNjQxMDtpZih0PT09VXJ0KXJldHVybiA2NDAyO2lmKHQ9PT1XcnQpcmV0dXJuIDM0MDQxO2lmKDEwMjg9PT10KXJldHVybiA2NDAzO2lmKDEwMjk9PT10KXJldHVybiAzNjI0NDtpZigxMDMwPT09dClyZXR1cm4gMzMzMTk7aWYoMTAzMT09PXQpcmV0dXJuIDMzMzIwO2lmKDEwMzI9PT10KXJldHVybiAzNjI0ODtpZigxMDMzPT09dClyZXR1cm4gMzYyNDk7aWYoMzM3NzY9PT10fHwzMzc3Nz09PXR8fDMzNzc4PT09dHx8MzM3Nzk9PT10KXtpZihuPWUuZ2V0KCJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfczN0YyIpLG51bGw9PT1uKXJldHVybiBudWxsO2lmKDMzNzc2PT09dClyZXR1cm4gbi5DT01QUkVTU0VEX1JHQl9TM1RDX0RYVDFfRVhUO2lmKDMzNzc3PT09dClyZXR1cm4gbi5DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVDtpZigzMzc3OD09PXQpcmV0dXJuIG4uQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUM19FWFQ7aWYoMzM3Nzk9PT10KXJldHVybiBuLkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDVfRVhUfWlmKDM1ODQwPT09dHx8MzU4NDE9PT10fHwzNTg0Mj09PXR8fDM1ODQzPT09dCl7aWYobj1lLmdldCgiV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3B2cnRjIiksbnVsbD09PW4pcmV0dXJuIG51bGw7aWYoMzU4NDA9PT10KXJldHVybiBuLkNPTVBSRVNTRURfUkdCX1BWUlRDXzRCUFBWMV9JTUc7aWYoMzU4NDE9PT10KXJldHVybiBuLkNPTVBSRVNTRURfUkdCX1BWUlRDXzJCUFBWMV9JTUc7aWYoMzU4NDI9PT10KXJldHVybiBuLkNPTVBSRVNTRURfUkdCQV9QVlJUQ180QlBQVjFfSU1HO2lmKDM1ODQzPT09dClyZXR1cm4gbi5DT01QUkVTU0VEX1JHQkFfUFZSVENfMkJQUFYxX0lNR31pZigzNjE5Nj09PXQpcmV0dXJuIG49ZS5nZXQoIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9ldGMxIiksbnVsbCE9PW4/bi5DT01QUkVTU0VEX1JHQl9FVEMxX1dFQkdMOm51bGw7aWYoKDM3NDkyPT09dHx8Mzc0OTY9PT10KSYmKG49ZS5nZXQoIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9ldGMiKSxudWxsIT09bikpe2lmKDM3NDkyPT09dClyZXR1cm4gbi5DT01QUkVTU0VEX1JHQjhfRVRDMjtpZigzNzQ5Nj09PXQpcmV0dXJuIG4uQ09NUFJFU1NFRF9SR0JBOF9FVEMyX0VBQ31yZXR1cm4gMzc4MDg9PT10fHwzNzgwOT09PXR8fDM3ODEwPT09dHx8Mzc4MTE9PT10fHwzNzgxMj09PXR8fDM3ODEzPT09dHx8Mzc4MTQ9PT10fHwzNzgxNT09PXR8fDM3ODE2PT09dHx8Mzc4MTc9PT10fHwzNzgxOD09PXR8fDM3ODE5PT09dHx8Mzc4MjA9PT10fHwzNzgyMT09PXR8fDM3ODQwPT09dHx8Mzc4NDE9PT10fHwzNzg0Mj09PXR8fDM3ODQzPT09dHx8Mzc4NDQ9PT10fHwzNzg0NT09PXR8fDM3ODQ2PT09dHx8Mzc4NDc9PT10fHwzNzg0OD09PXR8fDM3ODQ5PT09dHx8Mzc4NTA9PT10fHwzNzg1MT09PXR8fDM3ODUyPT09dHx8Mzc4NTM9PT10PyhuPWUuZ2V0KCJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfYXN0YyIpLG51bGwhPT1uP3Q6bnVsbCk6MzY0OTI9PT10PyhuPWUuZ2V0KCJFWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9icHRjIiksbnVsbCE9PW4/dDpudWxsKTp0PT09QnJ0P28/MzQwNDI6KG49ZS5nZXQoIldFQkdMX2RlcHRoX3RleHR1cmUiKSxudWxsIT09bj9uLlVOU0lHTkVEX0lOVF8yNF84X1dFQkdMOm51bGwpOnZvaWQgMH19fWNsYXNzIEVtdCBleHRlbmRzIEljdHtjb25zdHJ1Y3Rvcih0PVtdKXtzdXBlcigpLHRoaXMuY2FtZXJhcz10fX1FbXQucHJvdG90eXBlLmlzQXJyYXlDYW1lcmE9ITA7Y2xhc3MgQW10IGV4dGVuZHMgU2x0e2NvbnN0cnVjdG9yKCl7c3VwZXIoKSx0aGlzLnR5cGU9Ikdyb3VwIn19QW10LnByb3RvdHlwZS5pc0dyb3VwPSEwO2NvbnN0IFRtdD17dHlwZToibW92ZSJ9O2NsYXNzIE5tdHtjb25zdHJ1Y3Rvcigpe3RoaXMuX3RhcmdldFJheT1udWxsLHRoaXMuX2dyaXA9bnVsbCx0aGlzLl9oYW5kPW51bGx9Z2V0SGFuZFNwYWNlKCl7cmV0dXJuIG51bGw9PT10aGlzLl9oYW5kJiYodGhpcy5faGFuZD1uZXcgQW10LHRoaXMuX2hhbmQubWF0cml4QXV0b1VwZGF0ZT0hMSx0aGlzLl9oYW5kLnZpc2libGU9ITEsdGhpcy5faGFuZC5qb2ludHM9e30sdGhpcy5faGFuZC5pbnB1dFN0YXRlPXtwaW5jaGluZzohMX0pLHRoaXMuX2hhbmR9Z2V0VGFyZ2V0UmF5U3BhY2UoKXtyZXR1cm4gbnVsbD09PXRoaXMuX3RhcmdldFJheSYmKHRoaXMuX3RhcmdldFJheT1uZXcgQW10LHRoaXMuX3RhcmdldFJheS5tYXRyaXhBdXRvVXBkYXRlPSExLHRoaXMuX3RhcmdldFJheS52aXNpYmxlPSExLHRoaXMuX3RhcmdldFJheS5oYXNMaW5lYXJWZWxvY2l0eT0hMSx0aGlzLl90YXJnZXRSYXkubGluZWFyVmVsb2NpdHk9bmV3IHdzdCx0aGlzLl90YXJnZXRSYXkuaGFzQW5ndWxhclZlbG9jaXR5PSExLHRoaXMuX3RhcmdldFJheS5hbmd1bGFyVmVsb2NpdHk9bmV3IHdzdCksdGhpcy5fdGFyZ2V0UmF5fWdldEdyaXBTcGFjZSgpe3JldHVybiBudWxsPT09dGhpcy5fZ3JpcCYmKHRoaXMuX2dyaXA9bmV3IEFtdCx0aGlzLl9ncmlwLm1hdHJpeEF1dG9VcGRhdGU9ITEsdGhpcy5fZ3JpcC52aXNpYmxlPSExLHRoaXMuX2dyaXAuaGFzTGluZWFyVmVsb2NpdHk9ITEsdGhpcy5fZ3JpcC5saW5lYXJWZWxvY2l0eT1uZXcgd3N0LHRoaXMuX2dyaXAuaGFzQW5ndWxhclZlbG9jaXR5PSExLHRoaXMuX2dyaXAuYW5ndWxhclZlbG9jaXR5PW5ldyB3c3QpLHRoaXMuX2dyaXB9ZGlzcGF0Y2hFdmVudCh0KXtyZXR1cm4gbnVsbCE9PXRoaXMuX3RhcmdldFJheSYmdGhpcy5fdGFyZ2V0UmF5LmRpc3BhdGNoRXZlbnQodCksbnVsbCE9PXRoaXMuX2dyaXAmJnRoaXMuX2dyaXAuZGlzcGF0Y2hFdmVudCh0KSxudWxsIT09dGhpcy5faGFuZCYmdGhpcy5faGFuZC5kaXNwYXRjaEV2ZW50KHQpLHRoaXN9ZGlzY29ubmVjdCh0KXtyZXR1cm4gdGhpcy5kaXNwYXRjaEV2ZW50KHt0eXBlOiJkaXNjb25uZWN0ZWQiLGRhdGE6dH0pLG51bGwhPT10aGlzLl90YXJnZXRSYXkmJih0aGlzLl90YXJnZXRSYXkudmlzaWJsZT0hMSksbnVsbCE9PXRoaXMuX2dyaXAmJih0aGlzLl9ncmlwLnZpc2libGU9ITEpLG51bGwhPT10aGlzLl9oYW5kJiYodGhpcy5faGFuZC52aXNpYmxlPSExKSx0aGlzfXVwZGF0ZSh0LGUsbil7bGV0IG89bnVsbCxpPW51bGwsYT1udWxsO2NvbnN0IHI9dGhpcy5fdGFyZ2V0UmF5LHM9dGhpcy5fZ3JpcCxsPXRoaXMuX2hhbmQ7aWYodCYmInZpc2libGUtYmx1cnJlZCIhPT1lLnNlc3Npb24udmlzaWJpbGl0eVN0YXRlKWlmKG51bGwhPT1yJiYobz1lLmdldFBvc2UodC50YXJnZXRSYXlTcGFjZSxuKSxudWxsIT09byYmKHIubWF0cml4LmZyb21BcnJheShvLnRyYW5zZm9ybS5tYXRyaXgpLHIubWF0cml4LmRlY29tcG9zZShyLnBvc2l0aW9uLHIucm90YXRpb24sci5zY2FsZSksby5saW5lYXJWZWxvY2l0eT8oci5oYXNMaW5lYXJWZWxvY2l0eT0hMCxyLmxpbmVhclZlbG9jaXR5LmNvcHkoby5saW5lYXJWZWxvY2l0eSkpOnIuaGFzTGluZWFyVmVsb2NpdHk9ITEsby5hbmd1bGFyVmVsb2NpdHk/KHIuaGFzQW5ndWxhclZlbG9jaXR5PSEwLHIuYW5ndWxhclZlbG9jaXR5LmNvcHkoby5hbmd1bGFyVmVsb2NpdHkpKTpyLmhhc0FuZ3VsYXJWZWxvY2l0eT0hMSx0aGlzLmRpc3BhdGNoRXZlbnQoVG10KSkpLGwmJnQuaGFuZCl7YT0hMDtmb3IoY29uc3QgbyBvZiB0LmhhbmQudmFsdWVzKCkpe2NvbnN0IHQ9ZS5nZXRKb2ludFBvc2UobyxuKTtpZih2b2lkIDA9PT1sLmpvaW50c1tvLmpvaW50TmFtZV0pe2NvbnN0IHQ9bmV3IEFtdDt0Lm1hdHJpeEF1dG9VcGRhdGU9ITEsdC52aXNpYmxlPSExLGwuam9pbnRzW28uam9pbnROYW1lXT10LGwuYWRkKHQpfWNvbnN0IGk9bC5qb2ludHNbby5qb2ludE5hbWVdO251bGwhPT10JiYoaS5tYXRyaXguZnJvbUFycmF5KHQudHJhbnNmb3JtLm1hdHJpeCksaS5tYXRyaXguZGVjb21wb3NlKGkucG9zaXRpb24saS5yb3RhdGlvbixpLnNjYWxlKSxpLmpvaW50UmFkaXVzPXQucmFkaXVzKSxpLnZpc2libGU9bnVsbCE9PXR9Y29uc3Qgbz1sLmpvaW50c1siaW5kZXgtZmluZ2VyLXRpcCJdLnBvc2l0aW9uLmRpc3RhbmNlVG8obC5qb2ludHNbInRodW1iLXRpcCJdLnBvc2l0aW9uKSxpPS4wMixyPS4wMDU7bC5pbnB1dFN0YXRlLnBpbmNoaW5nJiZvPmkrcj8obC5pbnB1dFN0YXRlLnBpbmNoaW5nPSExLHRoaXMuZGlzcGF0Y2hFdmVudCh7dHlwZToicGluY2hlbmQiLGhhbmRlZG5lc3M6dC5oYW5kZWRuZXNzLHRhcmdldDp0aGlzfSkpOiFsLmlucHV0U3RhdGUucGluY2hpbmcmJm88PWktciYmKGwuaW5wdXRTdGF0ZS5waW5jaGluZz0hMCx0aGlzLmRpc3BhdGNoRXZlbnQoe3R5cGU6InBpbmNoc3RhcnQiLGhhbmRlZG5lc3M6dC5oYW5kZWRuZXNzLHRhcmdldDp0aGlzfSkpfWVsc2UgbnVsbCE9PXMmJnQuZ3JpcFNwYWNlJiYoaT1lLmdldFBvc2UodC5ncmlwU3BhY2UsbiksbnVsbCE9PWkmJihzLm1hdHJpeC5mcm9tQXJyYXkoaS50cmFuc2Zvcm0ubWF0cml4KSxzLm1hdHJpeC5kZWNvbXBvc2Uocy5wb3NpdGlvbixzLnJvdGF0aW9uLHMuc2NhbGUpLGkubGluZWFyVmVsb2NpdHk/KHMuaGFzTGluZWFyVmVsb2NpdHk9ITAscy5saW5lYXJWZWxvY2l0eS5jb3B5KGkubGluZWFyVmVsb2NpdHkpKTpzLmhhc0xpbmVhclZlbG9jaXR5PSExLGkuYW5ndWxhclZlbG9jaXR5PyhzLmhhc0FuZ3VsYXJWZWxvY2l0eT0hMCxzLmFuZ3VsYXJWZWxvY2l0eS5jb3B5KGkuYW5ndWxhclZlbG9jaXR5KSk6cy5oYXNBbmd1bGFyVmVsb2NpdHk9ITEpKTtyZXR1cm4gbnVsbCE9PXImJihyLnZpc2libGU9bnVsbCE9PW8pLG51bGwhPT1zJiYocy52aXNpYmxlPW51bGwhPT1pKSxudWxsIT09bCYmKGwudmlzaWJsZT1udWxsIT09YSksdGhpc319Y2xhc3Mgem10IGV4dGVuZHMgcnN0e2NvbnN0cnVjdG9yKHQsZSl7c3VwZXIoKTtjb25zdCBuPXRoaXMsbz10LnN0YXRlO2xldCBpPW51bGwsYT0xLHI9bnVsbCxzPSJsb2NhbC1mbG9vciIsbD1udWxsLGM9bnVsbCxkPW51bGwscD1udWxsLG09bnVsbDtjb25zdCBmPVtdLHU9bmV3IE1hcCxnPW5ldyBJY3Q7Zy5sYXllcnMuZW5hYmxlKDEpLGcudmlld3BvcnQ9bmV3IHZzdDtjb25zdCBoPW5ldyBJY3Q7aC5sYXllcnMuZW5hYmxlKDIpLGgudmlld3BvcnQ9bmV3IHZzdDtjb25zdCBiPVtnLGhdLHk9bmV3IEVtdDt5LmxheWVycy5lbmFibGUoMSkseS5sYXllcnMuZW5hYmxlKDIpO2xldCBfPW51bGwsQz1udWxsO2Z1bmN0aW9uIE0odCl7Y29uc3QgZT11LmdldCh0LmlucHV0U291cmNlKTtlJiZlLmRpc3BhdGNoRXZlbnQoe3R5cGU6dC50eXBlLGRhdGE6dC5pbnB1dFNvdXJjZX0pfWZ1bmN0aW9uIHYoKXt1LmZvckVhY2goKGZ1bmN0aW9uKHQsZSl7dC5kaXNjb25uZWN0KGUpfSkpLHUuY2xlYXIoKSxfPW51bGwsQz1udWxsLG8uYmluZFhSRnJhbWVidWZmZXIobnVsbCksdC5zZXRSZW5kZXJUYXJnZXQodC5nZXRSZW5kZXJUYXJnZXQoKSksUy5zdG9wKCksbi5pc1ByZXNlbnRpbmc9ITEsbi5kaXNwYXRjaEV2ZW50KHt0eXBlOiJzZXNzaW9uZW5kIn0pfWZ1bmN0aW9uIHgodCl7Y29uc3QgZT1pLmlucHV0U291cmNlcztmb3IobGV0IHQ9MDt0PGYubGVuZ3RoO3QrKyl1LnNldChlW3RdLGZbdF0pO2ZvcihsZXQgZT0wO2U8dC5yZW1vdmVkLmxlbmd0aDtlKyspe2NvbnN0IG49dC5yZW1vdmVkW2VdLG89dS5nZXQobik7byYmKG8uZGlzcGF0Y2hFdmVudCh7dHlwZToiZGlzY29ubmVjdGVkIixkYXRhOm59KSx1LmRlbGV0ZShuKSl9Zm9yKGxldCBlPTA7ZTx0LmFkZGVkLmxlbmd0aDtlKyspe2NvbnN0IG49dC5hZGRlZFtlXSxvPXUuZ2V0KG4pO28mJm8uZGlzcGF0Y2hFdmVudCh7dHlwZToiY29ubmVjdGVkIixkYXRhOm59KX19dGhpcy5jYW1lcmFBdXRvVXBkYXRlPSEwLHRoaXMuZW5hYmxlZD0hMSx0aGlzLmlzUHJlc2VudGluZz0hMSx0aGlzLmdldENvbnRyb2xsZXI9ZnVuY3Rpb24odCl7bGV0IGU9Zlt0XTtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9bmV3IE5tdCxmW3RdPWUpLGUuZ2V0VGFyZ2V0UmF5U3BhY2UoKX0sdGhpcy5nZXRDb250cm9sbGVyR3JpcD1mdW5jdGlvbih0KXtsZXQgZT1mW3RdO3JldHVybiB2b2lkIDA9PT1lJiYoZT1uZXcgTm10LGZbdF09ZSksZS5nZXRHcmlwU3BhY2UoKX0sdGhpcy5nZXRIYW5kPWZ1bmN0aW9uKHQpe2xldCBlPWZbdF07cmV0dXJuIHZvaWQgMD09PWUmJihlPW5ldyBObXQsZlt0XT1lKSxlLmdldEhhbmRTcGFjZSgpfSx0aGlzLnNldEZyYW1lYnVmZmVyU2NhbGVGYWN0b3I9ZnVuY3Rpb24odCl7YT10LCEwPT09bi5pc1ByZXNlbnRpbmcmJmNvbnNvbGUud2FybigiVEhSRUUuV2ViWFJNYW5hZ2VyOiBDYW5ub3QgY2hhbmdlIGZyYW1lYnVmZmVyIHNjYWxlIHdoaWxlIHByZXNlbnRpbmcuIil9LHRoaXMuc2V0UmVmZXJlbmNlU3BhY2VUeXBlPWZ1bmN0aW9uKHQpe3M9dCwhMD09PW4uaXNQcmVzZW50aW5nJiZjb25zb2xlLndhcm4oIlRIUkVFLldlYlhSTWFuYWdlcjogQ2Fubm90IGNoYW5nZSByZWZlcmVuY2Ugc3BhY2UgdHlwZSB3aGlsZSBwcmVzZW50aW5nLiIpfSx0aGlzLmdldFJlZmVyZW5jZVNwYWNlPWZ1bmN0aW9uKCl7cmV0dXJuIHJ9LHRoaXMuZ2V0U2Vzc2lvbj1mdW5jdGlvbigpe3JldHVybiBpfSx0aGlzLnNldFNlc3Npb249YXN5bmMgZnVuY3Rpb24odCl7aWYoaT10LG51bGwhPT1pKXtpLmFkZEV2ZW50TGlzdGVuZXIoInNlbGVjdCIsTSksaS5hZGRFdmVudExpc3RlbmVyKCJzZWxlY3RzdGFydCIsTSksaS5hZGRFdmVudExpc3RlbmVyKCJzZWxlY3RlbmQiLE0pLGkuYWRkRXZlbnRMaXN0ZW5lcigic3F1ZWV6ZSIsTSksaS5hZGRFdmVudExpc3RlbmVyKCJzcXVlZXplc3RhcnQiLE0pLGkuYWRkRXZlbnRMaXN0ZW5lcigic3F1ZWV6ZWVuZCIsTSksaS5hZGRFdmVudExpc3RlbmVyKCJlbmQiLHYpLGkuYWRkRXZlbnRMaXN0ZW5lcigiaW5wdXRzb3VyY2VzY2hhbmdlIix4KTtjb25zdCB0PWUuZ2V0Q29udGV4dEF0dHJpYnV0ZXMoKTtpZighMCE9PXQueHJDb21wYXRpYmxlJiZhd2FpdCBlLm1ha2VYUkNvbXBhdGlibGUoKSx2b2lkIDA9PT1pLnJlbmRlclN0YXRlLmxheWVycyl7bT1uZXcgWFJXZWJHTExheWVyKGksZSx7YW50aWFsaWFzOnQuYW50aWFsaWFzLGFscGhhOnQuYWxwaGEsZGVwdGg6dC5kZXB0aCxzdGVuY2lsOnQuc3RlbmNpbCxmcmFtZWJ1ZmZlclNjYWxlRmFjdG9yOmF9KSxpLnVwZGF0ZVJlbmRlclN0YXRlKHtiYXNlTGF5ZXI6bX0pfWVsc2V7bGV0IG49MDtpZih0LmFudGlhbGlhcyl7bT1uZXcgWFJXZWJHTExheWVyKGksZSx7YW50aWFsaWFzOiEwLGFscGhhOnQuYWxwaGEsZGVwdGg6dC5kZXB0aCxzdGVuY2lsOnQuc3RlbmNpbCxmcmFtZWJ1ZmZlclNjYWxlRmFjdG9yOmF9KSxpLnVwZGF0ZVJlbmRlclN0YXRlKHtsYXllcnM6W21dfSl9ZWxzZXt0LmRlcHRoJiYobj10LnN0ZW5jaWw/MzQwNDE6NjQwMik7Y29uc3Qgbz17Y29sb3JGb3JtYXQ6dC5hbHBoYT82NDA4OjY0MDcsZGVwdGhGb3JtYXQ6bixzY2FsZUZhY3RvcjphfTtjPW5ldyBYUldlYkdMQmluZGluZyhpLGUpLHA9Yy5jcmVhdGVQcm9qZWN0aW9uTGF5ZXIobyksZD1lLmNyZWF0ZUZyYW1lYnVmZmVyKCksaS51cGRhdGVSZW5kZXJTdGF0ZSh7bGF5ZXJzOltwXX0pfX1yPWF3YWl0IGkucmVxdWVzdFJlZmVyZW5jZVNwYWNlKHMpLFMuc2V0Q29udGV4dChpKSxTLnN0YXJ0KCksbi5pc1ByZXNlbnRpbmc9ITAsbi5kaXNwYXRjaEV2ZW50KHt0eXBlOiJzZXNzaW9uc3RhcnQifSl9fTtjb25zdCBPPW5ldyB3c3QsUD1uZXcgd3N0O2Z1bmN0aW9uIHcodCxlKXtudWxsPT09ZT90Lm1hdHJpeFdvcmxkLmNvcHkodC5tYXRyaXgpOnQubWF0cml4V29ybGQubXVsdGlwbHlNYXRyaWNlcyhlLm1hdHJpeFdvcmxkLHQubWF0cml4KSx0Lm1hdHJpeFdvcmxkSW52ZXJzZS5jb3B5KHQubWF0cml4V29ybGQpLmludmVydCgpfXRoaXMudXBkYXRlQ2FtZXJhPWZ1bmN0aW9uKHQpe2lmKG51bGw9PT1pKXJldHVybjt5Lm5lYXI9aC5uZWFyPWcubmVhcj10Lm5lYXIseS5mYXI9aC5mYXI9Zy5mYXI9dC5mYXIsXz09PXkubmVhciYmQz09PXkuZmFyfHwoaS51cGRhdGVSZW5kZXJTdGF0ZSh7ZGVwdGhOZWFyOnkubmVhcixkZXB0aEZhcjp5LmZhcn0pLF89eS5uZWFyLEM9eS5mYXIpO2NvbnN0IGU9dC5wYXJlbnQsbj15LmNhbWVyYXM7dyh5LGUpO2ZvcihsZXQgdD0wO3Q8bi5sZW5ndGg7dCsrKXcoblt0XSxlKTt5Lm1hdHJpeFdvcmxkLmRlY29tcG9zZSh5LnBvc2l0aW9uLHkucXVhdGVybmlvbix5LnNjYWxlKSx0LnBvc2l0aW9uLmNvcHkoeS5wb3NpdGlvbiksdC5xdWF0ZXJuaW9uLmNvcHkoeS5xdWF0ZXJuaW9uKSx0LnNjYWxlLmNvcHkoeS5zY2FsZSksdC5tYXRyaXguY29weSh5Lm1hdHJpeCksdC5tYXRyaXhXb3JsZC5jb3B5KHkubWF0cml4V29ybGQpO2NvbnN0IG89dC5jaGlsZHJlbjtmb3IobGV0IHQ9MCxlPW8ubGVuZ3RoO3Q8ZTt0Kyspb1t0XS51cGRhdGVNYXRyaXhXb3JsZCghMCk7Mj09PW4ubGVuZ3RoPyhmdW5jdGlvbiBhKHQsZSxuKXtPLnNldEZyb21NYXRyaXhQb3NpdGlvbihlLm1hdHJpeFdvcmxkKSxQLnNldEZyb21NYXRyaXhQb3NpdGlvbihuLm1hdHJpeFdvcmxkKTtjb25zdCBvPU8uZGlzdGFuY2VUbyhQKSxpPWUucHJvamVjdGlvbk1hdHJpeC5lbGVtZW50cyxhPW4ucHJvamVjdGlvbk1hdHJpeC5lbGVtZW50cyxyPWlbMTRdLyhpWzEwXS0xKSxzPWlbMTRdLyhpWzEwXSsxKSxsPShpWzldKzEpL2lbNV0sYz0oaVs5XS0xKS9pWzVdLGQ9KGlbOF0tMSkvaVswXSxwPShhWzhdKzEpL2FbMF0sbT1yKmQsZj1yKnAsdT1vLygtZCtwKSxnPXUqLWQ7ZS5tYXRyaXhXb3JsZC5kZWNvbXBvc2UodC5wb3NpdGlvbix0LnF1YXRlcm5pb24sdC5zY2FsZSksdC50cmFuc2xhdGVYKGcpLHQudHJhbnNsYXRlWih1KSx0Lm1hdHJpeFdvcmxkLmNvbXBvc2UodC5wb3NpdGlvbix0LnF1YXRlcm5pb24sdC5zY2FsZSksdC5tYXRyaXhXb3JsZEludmVyc2UuY29weSh0Lm1hdHJpeFdvcmxkKS5pbnZlcnQoKTtjb25zdCBoPXIrdSxiPXMrdTt0LnByb2plY3Rpb25NYXRyaXgubWFrZVBlcnNwZWN0aXZlKG0tZyxmKyhvLWcpLGwqcy9iKmgsYypzL2IqaCxoLGIpfSkoeSxnLGgpOnkucHJvamVjdGlvbk1hdHJpeC5jb3B5KGcucHJvamVjdGlvbk1hdHJpeCl9LHRoaXMuZ2V0Q2FtZXJhPWZ1bmN0aW9uKCl7cmV0dXJuIHl9LHRoaXMuZ2V0Rm92ZWF0aW9uPWZ1bmN0aW9uKCl7cmV0dXJuIG51bGwhPT1wP3AuZml4ZWRGb3ZlYXRpb246bnVsbCE9PW0/bS5maXhlZEZvdmVhdGlvbjp2b2lkIDB9LHRoaXMuc2V0Rm92ZWF0aW9uPWZ1bmN0aW9uKHQpe251bGwhPT1wJiYocC5maXhlZEZvdmVhdGlvbj10KSxudWxsIT09bSYmdm9pZCAwIT09bS5maXhlZEZvdmVhdGlvbiYmKG0uZml4ZWRGb3ZlYXRpb249dCl9O2xldCBrPW51bGw7Y29uc3QgUz1uZXcgWmN0O1Muc2V0QW5pbWF0aW9uTG9vcCgoZnVuY3Rpb24gRCh0LG4pe2lmKGw9bi5nZXRWaWV3ZXJQb3NlKHIpLG51bGwhPT1sKXtjb25zdCB0PWwudmlld3M7bnVsbCE9PW0mJm8uYmluZFhSRnJhbWVidWZmZXIobS5mcmFtZWJ1ZmZlcik7bGV0IG49ITE7dC5sZW5ndGghPT15LmNhbWVyYXMubGVuZ3RoJiYoeS5jYW1lcmFzLmxlbmd0aD0wLG49ITApO2ZvcihsZXQgaT0wO2k8dC5sZW5ndGg7aSsrKXtjb25zdCBhPXRbaV07bGV0IHI9bnVsbDtpZihudWxsIT09bSlyPW0uZ2V0Vmlld3BvcnQoYSk7ZWxzZXtjb25zdCB0PWMuZ2V0Vmlld1N1YkltYWdlKHAsYSk7by5iaW5kWFJGcmFtZWJ1ZmZlcihkKSx2b2lkIDAhPT10LmRlcHRoU3RlbmNpbFRleHR1cmUmJmUuZnJhbWVidWZmZXJUZXh0dXJlMkQoMzYxNjAsMzYwOTYsMzU1Myx0LmRlcHRoU3RlbmNpbFRleHR1cmUsMCksZS5mcmFtZWJ1ZmZlclRleHR1cmUyRCgzNjE2MCwzNjA2NCwzNTUzLHQuY29sb3JUZXh0dXJlLDApLHI9dC52aWV3cG9ydH1jb25zdCBzPWJbaV07cy5tYXRyaXguZnJvbUFycmF5KGEudHJhbnNmb3JtLm1hdHJpeCkscy5wcm9qZWN0aW9uTWF0cml4LmZyb21BcnJheShhLnByb2plY3Rpb25NYXRyaXgpLHMudmlld3BvcnQuc2V0KHIueCxyLnksci53aWR0aCxyLmhlaWdodCksMD09PWkmJnkubWF0cml4LmNvcHkocy5tYXRyaXgpLCEwPT09biYmeS5jYW1lcmFzLnB1c2gocyl9fWNvbnN0IGE9aS5pbnB1dFNvdXJjZXM7Zm9yKGxldCB0PTA7dDxmLmxlbmd0aDt0Kyspe2ZbdF0udXBkYXRlKGFbdF0sbixyKX1rJiZrKHQsbil9KSksdGhpcy5zZXRBbmltYXRpb25Mb29wPWZ1bmN0aW9uKHQpe2s9dH0sdGhpcy5kaXNwb3NlPWZ1bmN0aW9uKCl7fX19ZnVuY3Rpb24gSW10KHQpe2Z1bmN0aW9uIGUoZSxuKXtlLm9wYWNpdHkudmFsdWU9bi5vcGFjaXR5LG4uY29sb3ImJmUuZGlmZnVzZS52YWx1ZS5jb3B5KG4uY29sb3IpLG4uZW1pc3NpdmUmJmUuZW1pc3NpdmUudmFsdWUuY29weShuLmVtaXNzaXZlKS5tdWx0aXBseVNjYWxhcihuLmVtaXNzaXZlSW50ZW5zaXR5KSxuLm1hcCYmKGUubWFwLnZhbHVlPW4ubWFwKSxuLmFscGhhTWFwJiYoZS5hbHBoYU1hcC52YWx1ZT1uLmFscGhhTWFwKSxuLnNwZWN1bGFyTWFwJiYoZS5zcGVjdWxhck1hcC52YWx1ZT1uLnNwZWN1bGFyTWFwKTtjb25zdCBvPXQuZ2V0KG4pLmVudk1hcDtpZihvKXtlLmVudk1hcC52YWx1ZT1vLGUuZmxpcEVudk1hcC52YWx1ZT1vLmlzQ3ViZVRleHR1cmUmJiExPT09by5pc1JlbmRlclRhcmdldFRleHR1cmU/LTE6MSxlLnJlZmxlY3Rpdml0eS52YWx1ZT1uLnJlZmxlY3Rpdml0eSxlLnJlZnJhY3Rpb25SYXRpby52YWx1ZT1uLnJlZnJhY3Rpb25SYXRpbztjb25zdCBpPXQuZ2V0KG8pLl9fbWF4TWlwTGV2ZWw7dm9pZCAwIT09aSYmKGUubWF4TWlwTGV2ZWwudmFsdWU9aSl9bGV0IGksYTtuLmxpZ2h0TWFwJiYoZS5saWdodE1hcC52YWx1ZT1uLmxpZ2h0TWFwLGUubGlnaHRNYXBJbnRlbnNpdHkudmFsdWU9bi5saWdodE1hcEludGVuc2l0eSksbi5hb01hcCYmKGUuYW9NYXAudmFsdWU9bi5hb01hcCxlLmFvTWFwSW50ZW5zaXR5LnZhbHVlPW4uYW9NYXBJbnRlbnNpdHkpLG4ubWFwP2k9bi5tYXA6bi5zcGVjdWxhck1hcD9pPW4uc3BlY3VsYXJNYXA6bi5kaXNwbGFjZW1lbnRNYXA/aT1uLmRpc3BsYWNlbWVudE1hcDpuLm5vcm1hbE1hcD9pPW4ubm9ybWFsTWFwOm4uYnVtcE1hcD9pPW4uYnVtcE1hcDpuLnJvdWdobmVzc01hcD9pPW4ucm91Z2huZXNzTWFwOm4ubWV0YWxuZXNzTWFwP2k9bi5tZXRhbG5lc3NNYXA6bi5hbHBoYU1hcD9pPW4uYWxwaGFNYXA6bi5lbWlzc2l2ZU1hcD9pPW4uZW1pc3NpdmVNYXA6bi5jbGVhcmNvYXRNYXA/aT1uLmNsZWFyY29hdE1hcDpuLmNsZWFyY29hdE5vcm1hbE1hcD9pPW4uY2xlYXJjb2F0Tm9ybWFsTWFwOm4uY2xlYXJjb2F0Um91Z2huZXNzTWFwP2k9bi5jbGVhcmNvYXRSb3VnaG5lc3NNYXA6bi5zcGVjdWxhckludGVuc2l0eU1hcD9pPW4uc3BlY3VsYXJJbnRlbnNpdHlNYXA6bi5zcGVjdWxhclRpbnRNYXAmJihpPW4uc3BlY3VsYXJUaW50TWFwKSx2b2lkIDAhPT1pJiYoaS5pc1dlYkdMUmVuZGVyVGFyZ2V0JiYoaT1pLnRleHR1cmUpLCEwPT09aS5tYXRyaXhBdXRvVXBkYXRlJiZpLnVwZGF0ZU1hdHJpeCgpLGUudXZUcmFuc2Zvcm0udmFsdWUuY29weShpLm1hdHJpeCkpLG4uYW9NYXA/YT1uLmFvTWFwOm4ubGlnaHRNYXAmJihhPW4ubGlnaHRNYXApLHZvaWQgMCE9PWEmJihhLmlzV2ViR0xSZW5kZXJUYXJnZXQmJihhPWEudGV4dHVyZSksITA9PT1hLm1hdHJpeEF1dG9VcGRhdGUmJmEudXBkYXRlTWF0cml4KCksZS51djJUcmFuc2Zvcm0udmFsdWUuY29weShhLm1hdHJpeCkpfWZ1bmN0aW9uIG4oZSxuKXtlLnJvdWdobmVzcy52YWx1ZT1uLnJvdWdobmVzcyxlLm1ldGFsbmVzcy52YWx1ZT1uLm1ldGFsbmVzcyxuLnJvdWdobmVzc01hcCYmKGUucm91Z2huZXNzTWFwLnZhbHVlPW4ucm91Z2huZXNzTWFwKSxuLm1ldGFsbmVzc01hcCYmKGUubWV0YWxuZXNzTWFwLnZhbHVlPW4ubWV0YWxuZXNzTWFwKSxuLmVtaXNzaXZlTWFwJiYoZS5lbWlzc2l2ZU1hcC52YWx1ZT1uLmVtaXNzaXZlTWFwKSxuLmJ1bXBNYXAmJihlLmJ1bXBNYXAudmFsdWU9bi5idW1wTWFwLGUuYnVtcFNjYWxlLnZhbHVlPW4uYnVtcFNjYWxlLDE9PT1uLnNpZGUmJihlLmJ1bXBTY2FsZS52YWx1ZSo9LTEpKSxuLm5vcm1hbE1hcCYmKGUubm9ybWFsTWFwLnZhbHVlPW4ubm9ybWFsTWFwLGUubm9ybWFsU2NhbGUudmFsdWUuY29weShuLm5vcm1hbFNjYWxlKSwxPT09bi5zaWRlJiZlLm5vcm1hbFNjYWxlLnZhbHVlLm5lZ2F0ZSgpKSxuLmRpc3BsYWNlbWVudE1hcCYmKGUuZGlzcGxhY2VtZW50TWFwLnZhbHVlPW4uZGlzcGxhY2VtZW50TWFwLGUuZGlzcGxhY2VtZW50U2NhbGUudmFsdWU9bi5kaXNwbGFjZW1lbnRTY2FsZSxlLmRpc3BsYWNlbWVudEJpYXMudmFsdWU9bi5kaXNwbGFjZW1lbnRCaWFzKTt0LmdldChuKS5lbnZNYXAmJihlLmVudk1hcEludGVuc2l0eS52YWx1ZT1uLmVudk1hcEludGVuc2l0eSl9cmV0dXJue3JlZnJlc2hGb2dVbmlmb3JtczpmdW5jdGlvbiBvKHQsZSl7dC5mb2dDb2xvci52YWx1ZS5jb3B5KGUuY29sb3IpLGUuaXNGb2c/KHQuZm9nTmVhci52YWx1ZT1lLm5lYXIsdC5mb2dGYXIudmFsdWU9ZS5mYXIpOmUuaXNGb2dFeHAyJiYodC5mb2dEZW5zaXR5LnZhbHVlPWUuZGVuc2l0eSl9LHJlZnJlc2hNYXRlcmlhbFVuaWZvcm1zOmZ1bmN0aW9uIGkodCxvLGEscixzKXtvLmlzTWVzaEJhc2ljTWF0ZXJpYWw/ZSh0LG8pOm8uaXNNZXNoTGFtYmVydE1hdGVyaWFsPyhlKHQsbyksKGZ1bmN0aW9uIGwodCxlKXtlLmVtaXNzaXZlTWFwJiYodC5lbWlzc2l2ZU1hcC52YWx1ZT1lLmVtaXNzaXZlTWFwKX0pKHQsbykpOm8uaXNNZXNoVG9vbk1hdGVyaWFsPyhlKHQsbyksKGZ1bmN0aW9uIGModCxlKXtlLmdyYWRpZW50TWFwJiYodC5ncmFkaWVudE1hcC52YWx1ZT1lLmdyYWRpZW50TWFwKTtlLmVtaXNzaXZlTWFwJiYodC5lbWlzc2l2ZU1hcC52YWx1ZT1lLmVtaXNzaXZlTWFwKTtlLmJ1bXBNYXAmJih0LmJ1bXBNYXAudmFsdWU9ZS5idW1wTWFwLHQuYnVtcFNjYWxlLnZhbHVlPWUuYnVtcFNjYWxlLDE9PT1lLnNpZGUmJih0LmJ1bXBTY2FsZS52YWx1ZSo9LTEpKTtlLm5vcm1hbE1hcCYmKHQubm9ybWFsTWFwLnZhbHVlPWUubm9ybWFsTWFwLHQubm9ybWFsU2NhbGUudmFsdWUuY29weShlLm5vcm1hbFNjYWxlKSwxPT09ZS5zaWRlJiZ0Lm5vcm1hbFNjYWxlLnZhbHVlLm5lZ2F0ZSgpKTtlLmRpc3BsYWNlbWVudE1hcCYmKHQuZGlzcGxhY2VtZW50TWFwLnZhbHVlPWUuZGlzcGxhY2VtZW50TWFwLHQuZGlzcGxhY2VtZW50U2NhbGUudmFsdWU9ZS5kaXNwbGFjZW1lbnRTY2FsZSx0LmRpc3BsYWNlbWVudEJpYXMudmFsdWU9ZS5kaXNwbGFjZW1lbnRCaWFzKX0pKHQsbykpOm8uaXNNZXNoUGhvbmdNYXRlcmlhbD8oZSh0LG8pLChmdW5jdGlvbiBkKHQsZSl7dC5zcGVjdWxhci52YWx1ZS5jb3B5KGUuc3BlY3VsYXIpLHQuc2hpbmluZXNzLnZhbHVlPU1hdGgubWF4KGUuc2hpbmluZXNzLDFlLTQpLGUuZW1pc3NpdmVNYXAmJih0LmVtaXNzaXZlTWFwLnZhbHVlPWUuZW1pc3NpdmVNYXApO2UuYnVtcE1hcCYmKHQuYnVtcE1hcC52YWx1ZT1lLmJ1bXBNYXAsdC5idW1wU2NhbGUudmFsdWU9ZS5idW1wU2NhbGUsMT09PWUuc2lkZSYmKHQuYnVtcFNjYWxlLnZhbHVlKj0tMSkpO2Uubm9ybWFsTWFwJiYodC5ub3JtYWxNYXAudmFsdWU9ZS5ub3JtYWxNYXAsdC5ub3JtYWxTY2FsZS52YWx1ZS5jb3B5KGUubm9ybWFsU2NhbGUpLDE9PT1lLnNpZGUmJnQubm9ybWFsU2NhbGUudmFsdWUubmVnYXRlKCkpO2UuZGlzcGxhY2VtZW50TWFwJiYodC5kaXNwbGFjZW1lbnRNYXAudmFsdWU9ZS5kaXNwbGFjZW1lbnRNYXAsdC5kaXNwbGFjZW1lbnRTY2FsZS52YWx1ZT1lLmRpc3BsYWNlbWVudFNjYWxlLHQuZGlzcGxhY2VtZW50Qmlhcy52YWx1ZT1lLmRpc3BsYWNlbWVudEJpYXMpfSkodCxvKSk6by5pc01lc2hTdGFuZGFyZE1hdGVyaWFsPyhlKHQsbyksby5pc01lc2hQaHlzaWNhbE1hdGVyaWFsPyhmdW5jdGlvbiBwKHQsZSxvKXtuKHQsZSksdC5yZWZsZWN0aXZpdHkudmFsdWU9ZS5yZWZsZWN0aXZpdHksdC5jbGVhcmNvYXQudmFsdWU9ZS5jbGVhcmNvYXQsdC5jbGVhcmNvYXRSb3VnaG5lc3MudmFsdWU9ZS5jbGVhcmNvYXRSb3VnaG5lc3MsZS5zaGVlbiYmdC5zaGVlbi52YWx1ZS5jb3B5KGUuc2hlZW4pO2UuY2xlYXJjb2F0TWFwJiYodC5jbGVhcmNvYXRNYXAudmFsdWU9ZS5jbGVhcmNvYXRNYXApO2UuY2xlYXJjb2F0Um91Z2huZXNzTWFwJiYodC5jbGVhcmNvYXRSb3VnaG5lc3NNYXAudmFsdWU9ZS5jbGVhcmNvYXRSb3VnaG5lc3NNYXApO2UuY2xlYXJjb2F0Tm9ybWFsTWFwJiYodC5jbGVhcmNvYXROb3JtYWxTY2FsZS52YWx1ZS5jb3B5KGUuY2xlYXJjb2F0Tm9ybWFsU2NhbGUpLHQuY2xlYXJjb2F0Tm9ybWFsTWFwLnZhbHVlPWUuY2xlYXJjb2F0Tm9ybWFsTWFwLDE9PT1lLnNpZGUmJnQuY2xlYXJjb2F0Tm9ybWFsU2NhbGUudmFsdWUubmVnYXRlKCkpO3QudHJhbnNtaXNzaW9uLnZhbHVlPWUudHJhbnNtaXNzaW9uLGUudHJhbnNtaXNzaW9uTWFwJiYodC50cmFuc21pc3Npb25NYXAudmFsdWU9ZS50cmFuc21pc3Npb25NYXApO2UudHJhbnNtaXNzaW9uPjAmJih0LnRyYW5zbWlzc2lvblNhbXBsZXJNYXAudmFsdWU9by50ZXh0dXJlLHQudHJhbnNtaXNzaW9uU2FtcGxlclNpemUudmFsdWUuc2V0KG8ud2lkdGgsby5oZWlnaHQpKTt0LnRoaWNrbmVzcy52YWx1ZT1lLnRoaWNrbmVzcyxlLnRoaWNrbmVzc01hcCYmKHQudGhpY2tuZXNzTWFwLnZhbHVlPWUudGhpY2tuZXNzTWFwKTt0LmF0dGVudWF0aW9uRGlzdGFuY2UudmFsdWU9ZS5hdHRlbnVhdGlvbkRpc3RhbmNlLHQuYXR0ZW51YXRpb25UaW50LnZhbHVlLmNvcHkoZS5hdHRlbnVhdGlvblRpbnQpLHQuc3BlY3VsYXJJbnRlbnNpdHkudmFsdWU9ZS5zcGVjdWxhckludGVuc2l0eSx0LnNwZWN1bGFyVGludC52YWx1ZS5jb3B5KGUuc3BlY3VsYXJUaW50KSxlLnNwZWN1bGFySW50ZW5zaXR5TWFwJiYodC5zcGVjdWxhckludGVuc2l0eU1hcC52YWx1ZT1lLnNwZWN1bGFySW50ZW5zaXR5TWFwKTtlLnNwZWN1bGFyVGludE1hcCYmKHQuc3BlY3VsYXJUaW50TWFwLnZhbHVlPWUuc3BlY3VsYXJUaW50TWFwKX0pKHQsbyxzKTpuKHQsbykpOm8uaXNNZXNoTWF0Y2FwTWF0ZXJpYWw/KGUodCxvKSwoZnVuY3Rpb24gbSh0LGUpe2UubWF0Y2FwJiYodC5tYXRjYXAudmFsdWU9ZS5tYXRjYXApO2UuYnVtcE1hcCYmKHQuYnVtcE1hcC52YWx1ZT1lLmJ1bXBNYXAsdC5idW1wU2NhbGUudmFsdWU9ZS5idW1wU2NhbGUsMT09PWUuc2lkZSYmKHQuYnVtcFNjYWxlLnZhbHVlKj0tMSkpO2Uubm9ybWFsTWFwJiYodC5ub3JtYWxNYXAudmFsdWU9ZS5ub3JtYWxNYXAsdC5ub3JtYWxTY2FsZS52YWx1ZS5jb3B5KGUubm9ybWFsU2NhbGUpLDE9PT1lLnNpZGUmJnQubm9ybWFsU2NhbGUudmFsdWUubmVnYXRlKCkpO2UuZGlzcGxhY2VtZW50TWFwJiYodC5kaXNwbGFjZW1lbnRNYXAudmFsdWU9ZS5kaXNwbGFjZW1lbnRNYXAsdC5kaXNwbGFjZW1lbnRTY2FsZS52YWx1ZT1lLmRpc3BsYWNlbWVudFNjYWxlLHQuZGlzcGxhY2VtZW50Qmlhcy52YWx1ZT1lLmRpc3BsYWNlbWVudEJpYXMpfSkodCxvKSk6by5pc01lc2hEZXB0aE1hdGVyaWFsPyhlKHQsbyksKGZ1bmN0aW9uIGYodCxlKXtlLmRpc3BsYWNlbWVudE1hcCYmKHQuZGlzcGxhY2VtZW50TWFwLnZhbHVlPWUuZGlzcGxhY2VtZW50TWFwLHQuZGlzcGxhY2VtZW50U2NhbGUudmFsdWU9ZS5kaXNwbGFjZW1lbnRTY2FsZSx0LmRpc3BsYWNlbWVudEJpYXMudmFsdWU9ZS5kaXNwbGFjZW1lbnRCaWFzKX0pKHQsbykpOm8uaXNNZXNoRGlzdGFuY2VNYXRlcmlhbD8oZSh0LG8pLChmdW5jdGlvbiB1KHQsZSl7ZS5kaXNwbGFjZW1lbnRNYXAmJih0LmRpc3BsYWNlbWVudE1hcC52YWx1ZT1lLmRpc3BsYWNlbWVudE1hcCx0LmRpc3BsYWNlbWVudFNjYWxlLnZhbHVlPWUuZGlzcGxhY2VtZW50U2NhbGUsdC5kaXNwbGFjZW1lbnRCaWFzLnZhbHVlPWUuZGlzcGxhY2VtZW50Qmlhcyk7dC5yZWZlcmVuY2VQb3NpdGlvbi52YWx1ZS5jb3B5KGUucmVmZXJlbmNlUG9zaXRpb24pLHQubmVhckRpc3RhbmNlLnZhbHVlPWUubmVhckRpc3RhbmNlLHQuZmFyRGlzdGFuY2UudmFsdWU9ZS5mYXJEaXN0YW5jZX0pKHQsbykpOm8uaXNNZXNoTm9ybWFsTWF0ZXJpYWw/KGUodCxvKSwoZnVuY3Rpb24gZyh0LGUpe2UuYnVtcE1hcCYmKHQuYnVtcE1hcC52YWx1ZT1lLmJ1bXBNYXAsdC5idW1wU2NhbGUudmFsdWU9ZS5idW1wU2NhbGUsMT09PWUuc2lkZSYmKHQuYnVtcFNjYWxlLnZhbHVlKj0tMSkpO2Uubm9ybWFsTWFwJiYodC5ub3JtYWxNYXAudmFsdWU9ZS5ub3JtYWxNYXAsdC5ub3JtYWxTY2FsZS52YWx1ZS5jb3B5KGUubm9ybWFsU2NhbGUpLDE9PT1lLnNpZGUmJnQubm9ybWFsU2NhbGUudmFsdWUubmVnYXRlKCkpO2UuZGlzcGxhY2VtZW50TWFwJiYodC5kaXNwbGFjZW1lbnRNYXAudmFsdWU9ZS5kaXNwbGFjZW1lbnRNYXAsdC5kaXNwbGFjZW1lbnRTY2FsZS52YWx1ZT1lLmRpc3BsYWNlbWVudFNjYWxlLHQuZGlzcGxhY2VtZW50Qmlhcy52YWx1ZT1lLmRpc3BsYWNlbWVudEJpYXMpfSkodCxvKSk6by5pc0xpbmVCYXNpY01hdGVyaWFsPyghKGZ1bmN0aW9uIGgodCxlKXt0LmRpZmZ1c2UudmFsdWUuY29weShlLmNvbG9yKSx0Lm9wYWNpdHkudmFsdWU9ZS5vcGFjaXR5fSkodCxvKSxvLmlzTGluZURhc2hlZE1hdGVyaWFsJiYoZnVuY3Rpb24gYih0LGUpe3QuZGFzaFNpemUudmFsdWU9ZS5kYXNoU2l6ZSx0LnRvdGFsU2l6ZS52YWx1ZT1lLmRhc2hTaXplK2UuZ2FwU2l6ZSx0LnNjYWxlLnZhbHVlPWUuc2NhbGV9KSh0LG8pKTpvLmlzUG9pbnRzTWF0ZXJpYWw/KGZ1bmN0aW9uIHkodCxlLG4sbyl7dC5kaWZmdXNlLnZhbHVlLmNvcHkoZS5jb2xvciksdC5vcGFjaXR5LnZhbHVlPWUub3BhY2l0eSx0LnNpemUudmFsdWU9ZS5zaXplKm4sdC5zY2FsZS52YWx1ZT0uNSpvLGUubWFwJiYodC5tYXAudmFsdWU9ZS5tYXApO2UuYWxwaGFNYXAmJih0LmFscGhhTWFwLnZhbHVlPWUuYWxwaGFNYXApO2xldCBpO2UubWFwP2k9ZS5tYXA6ZS5hbHBoYU1hcCYmKGk9ZS5hbHBoYU1hcCk7dm9pZCAwIT09aSYmKCEwPT09aS5tYXRyaXhBdXRvVXBkYXRlJiZpLnVwZGF0ZU1hdHJpeCgpLHQudXZUcmFuc2Zvcm0udmFsdWUuY29weShpLm1hdHJpeCkpfSkodCxvLGEscik6by5pc1Nwcml0ZU1hdGVyaWFsPyhmdW5jdGlvbiBfKHQsZSl7dC5kaWZmdXNlLnZhbHVlLmNvcHkoZS5jb2xvciksdC5vcGFjaXR5LnZhbHVlPWUub3BhY2l0eSx0LnJvdGF0aW9uLnZhbHVlPWUucm90YXRpb24sZS5tYXAmJih0Lm1hcC52YWx1ZT1lLm1hcCk7ZS5hbHBoYU1hcCYmKHQuYWxwaGFNYXAudmFsdWU9ZS5hbHBoYU1hcCk7bGV0IG47ZS5tYXA/bj1lLm1hcDplLmFscGhhTWFwJiYobj1lLmFscGhhTWFwKTt2b2lkIDAhPT1uJiYoITA9PT1uLm1hdHJpeEF1dG9VcGRhdGUmJm4udXBkYXRlTWF0cml4KCksdC51dlRyYW5zZm9ybS52YWx1ZS5jb3B5KG4ubWF0cml4KSl9KSh0LG8pOm8uaXNTaGFkb3dNYXRlcmlhbD8odC5jb2xvci52YWx1ZS5jb3B5KG8uY29sb3IpLHQub3BhY2l0eS52YWx1ZT1vLm9wYWNpdHkpOm8uaXNTaGFkZXJNYXRlcmlhbCYmKG8udW5pZm9ybXNOZWVkVXBkYXRlPSExKX19fWZ1bmN0aW9uIEhtdCh0PXt9KXtjb25zdCBlPXZvaWQgMCE9PXQuY2FudmFzP3QuY2FudmFzOihmdW5jdGlvbiBuKCl7Y29uc3QgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiLCJjYW52YXMiKTtyZXR1cm4gdC5zdHlsZS5kaXNwbGF5PSJibG9jayIsdH0pKCksbz12b2lkIDAhPT10LmNvbnRleHQ/dC5jb250ZXh0Om51bGwsaT12b2lkIDAhPT10LmFscGhhJiZ0LmFscGhhLGE9dm9pZCAwPT09dC5kZXB0aHx8dC5kZXB0aCxyPXZvaWQgMD09PXQuc3RlbmNpbHx8dC5zdGVuY2lsLHM9dm9pZCAwIT09dC5hbnRpYWxpYXMmJnQuYW50aWFsaWFzLGw9dm9pZCAwPT09dC5wcmVtdWx0aXBsaWVkQWxwaGF8fHQucHJlbXVsdGlwbGllZEFscGhhLGM9dm9pZCAwIT09dC5wcmVzZXJ2ZURyYXdpbmdCdWZmZXImJnQucHJlc2VydmVEcmF3aW5nQnVmZmVyLGQ9dm9pZCAwIT09dC5wb3dlclByZWZlcmVuY2U/dC5wb3dlclByZWZlcmVuY2U6ImRlZmF1bHQiLHA9dm9pZCAwIT09dC5mYWlsSWZNYWpvclBlcmZvcm1hbmNlQ2F2ZWF0JiZ0LmZhaWxJZk1ham9yUGVyZm9ybWFuY2VDYXZlYXQ7bGV0IG09bnVsbCxmPW51bGw7Y29uc3QgdT1bXSxnPVtdO3RoaXMuZG9tRWxlbWVudD1lLHRoaXMuZGVidWc9e2NoZWNrU2hhZGVyRXJyb3JzOiEwfSx0aGlzLmF1dG9DbGVhcj0hMCx0aGlzLmF1dG9DbGVhckNvbG9yPSEwLHRoaXMuYXV0b0NsZWFyRGVwdGg9ITAsdGhpcy5hdXRvQ2xlYXJTdGVuY2lsPSEwLHRoaXMuc29ydE9iamVjdHM9ITAsdGhpcy5jbGlwcGluZ1BsYW5lcz1bXSx0aGlzLmxvY2FsQ2xpcHBpbmdFbmFibGVkPSExLHRoaXMuZ2FtbWFGYWN0b3I9Mix0aGlzLm91dHB1dEVuY29kaW5nPVFydCx0aGlzLnBoeXNpY2FsbHlDb3JyZWN0TGlnaHRzPSExLHRoaXMudG9uZU1hcHBpbmc9MCx0aGlzLnRvbmVNYXBwaW5nRXhwb3N1cmU9MTtjb25zdCBoPXRoaXM7bGV0IGI9ITEseT0wLF89MCxDPW51bGwsTT0tMSx2PW51bGw7Y29uc3QgeD1uZXcgdnN0LE89bmV3IHZzdDtsZXQgUD1udWxsLHc9ZS53aWR0aCxrPWUuaGVpZ2h0LFM9MSxEPW51bGwsUj1udWxsO2NvbnN0IEU9bmV3IHZzdCgwLDAsdyxrKSxBPW5ldyB2c3QoMCwwLHcsayk7bGV0IFQ9ITE7Y29uc3QgTj1bXSx6PW5ldyBxY3Q7bGV0IEk9ITEsSD0hMSxGPW51bGw7Y29uc3QgTD1uZXcgb2x0LEI9bmV3IHdzdCxWPXtiYWNrZ3JvdW5kOm51bGwsZm9nOm51bGwsZW52aXJvbm1lbnQ6bnVsbCxvdmVycmlkZU1hdGVyaWFsOm51bGwsaXNTY2VuZTohMH07ZnVuY3Rpb24gaigpe3JldHVybiBudWxsPT09Qz9TOjF9bGV0IFUsVyxHLFkscSxaLFgsSyxKLFEsJCx0dCxldCxudCxvdCxpdCxhdCxydCxzdCxsdCxjdCxkdCxwdCxtdD1vO2Z1bmN0aW9uIGZ0KHQsbil7Zm9yKGxldCBvPTA7bzx0Lmxlbmd0aDtvKyspe2NvbnN0IGk9ZS5nZXRDb250ZXh0KHRbb10sbik7aWYobnVsbCE9PWkpcmV0dXJuIGl9cmV0dXJuIG51bGx9dHJ5e2NvbnN0IHQ9e2FscGhhOmksZGVwdGg6YSxzdGVuY2lsOnIsYW50aWFsaWFzOnMscHJlbXVsdGlwbGllZEFscGhhOmwscHJlc2VydmVEcmF3aW5nQnVmZmVyOmMscG93ZXJQcmVmZXJlbmNlOmQsZmFpbElmTWFqb3JQZXJmb3JtYW5jZUNhdmVhdDpwfTtpZihlLmFkZEV2ZW50TGlzdGVuZXIoIndlYmdsY29udGV4dGxvc3QiLGh0LCExKSxlLmFkZEV2ZW50TGlzdGVuZXIoIndlYmdsY29udGV4dHJlc3RvcmVkIixidCwhMSksbnVsbD09PW10KXtjb25zdCBlPVsid2ViZ2wyIiwid2ViZ2wiLCJleHBlcmltZW50YWwtd2ViZ2wiXTtpZighMD09PWguaXNXZWJHTDFSZW5kZXJlciYmZS5zaGlmdCgpLG10PWZ0KGUsdCksbnVsbD09PW10KXRocm93IGZ0KGUpP25ldyBFcnJvcigiRXJyb3IgY3JlYXRpbmcgV2ViR0wgY29udGV4dCB3aXRoIHlvdXIgc2VsZWN0ZWQgYXR0cmlidXRlcy4iKTpuZXcgRXJyb3IoIkVycm9yIGNyZWF0aW5nIFdlYkdMIGNvbnRleHQuIil9dm9pZCAwPT09bXQuZ2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0JiYobXQuZ2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0PWZ1bmN0aW9uKCl7cmV0dXJue3JhbmdlTWluOjEscmFuZ2VNYXg6MSxwcmVjaXNpb246MX19KX1jYXRjaCh0KXt0aHJvdyBjb25zb2xlLmVycm9yKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAiK3QubWVzc2FnZSksdH1mdW5jdGlvbiB1dCgpe1U9bmV3IHpkdChtdCksVz1uZXcgb2R0KG10LFUsdCksVS5pbml0KFcpLGR0PW5ldyBSbXQobXQsVSxXKSxHPW5ldyBTbXQobXQsVSxXKSxOWzBdPTEwMjksWT1uZXcgRmR0KG10KSxxPW5ldyB1bXQsWj1uZXcgRG10KG10LFUsRyxxLFcsZHQsWSksWD1uZXcgYWR0KGgpLEs9bmV3IE5kdChoKSxKPW5ldyBYY3QobXQsVykscHQ9bmV3IGVkdChtdCxVLEosVyksUT1uZXcgSWR0KG10LEosWSxwdCksJD1uZXcgamR0KG10LFEsSixZKSxzdD1uZXcgVmR0KG10KSxpdD1uZXcgaWR0KHEpLHR0PW5ldyBmbXQoaCxYLEssVSxXLHB0LGl0KSxldD1uZXcgSW10KHEpLG50PW5ldyB5bXQocSksb3Q9bmV3IE9tdChVLFcpLHJ0PW5ldyB0ZHQoaCxYLEcsJCxsKSxhdD1uZXcga210KGgsJCxXKSxsdD1uZXcgbmR0KG10LFUsWSxXKSxjdD1uZXcgSGR0KG10LFUsWSxXKSxZLnByb2dyYW1zPXR0LnByb2dyYW1zLGguY2FwYWJpbGl0aWVzPVcsaC5leHRlbnNpb25zPVUsaC5wcm9wZXJ0aWVzPXEsaC5yZW5kZXJMaXN0cz1udCxoLnNoYWRvd01hcD1hdCxoLnN0YXRlPUcsaC5pbmZvPVl9dXQoKTtjb25zdCBndD1uZXcgem10KGgsbXQpO2Z1bmN0aW9uIGh0KHQpe3QucHJldmVudERlZmF1bHQoKSxjb25zb2xlLmxvZygiVEhSRUUuV2ViR0xSZW5kZXJlcjogQ29udGV4dCBMb3N0LiIpLGI9ITB9ZnVuY3Rpb24gYnQoKXtjb25zb2xlLmxvZygiVEhSRUUuV2ViR0xSZW5kZXJlcjogQ29udGV4dCBSZXN0b3JlZC4iKSxiPSExO2NvbnN0IHQ9WS5hdXRvUmVzZXQsZT1hdC5lbmFibGVkLG49YXQuYXV0b1VwZGF0ZSxvPWF0Lm5lZWRzVXBkYXRlLGk9YXQudHlwZTt1dCgpLFkuYXV0b1Jlc2V0PXQsYXQuZW5hYmxlZD1lLGF0LmF1dG9VcGRhdGU9bixhdC5uZWVkc1VwZGF0ZT1vLGF0LnR5cGU9aX1mdW5jdGlvbiB5dCh0KXtjb25zdCBlPXQudGFyZ2V0O2UucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZGlzcG9zZSIseXQpLChmdW5jdGlvbiBuKHQpeyhmdW5jdGlvbiBlKHQpe2NvbnN0IGU9cS5nZXQodCkucHJvZ3JhbXM7dm9pZCAwIT09ZSYmZS5mb3JFYWNoKChmdW5jdGlvbih0KXt0dC5yZWxlYXNlUHJvZ3JhbSh0KX0pKX0pKHQpLHEucmVtb3ZlKHQpfSkoZSl9dGhpcy54cj1ndCx0aGlzLmdldENvbnRleHQ9ZnVuY3Rpb24oKXtyZXR1cm4gbXR9LHRoaXMuZ2V0Q29udGV4dEF0dHJpYnV0ZXM9ZnVuY3Rpb24oKXtyZXR1cm4gbXQuZ2V0Q29udGV4dEF0dHJpYnV0ZXMoKX0sdGhpcy5mb3JjZUNvbnRleHRMb3NzPWZ1bmN0aW9uKCl7Y29uc3QgdD1VLmdldCgiV0VCR0xfbG9zZV9jb250ZXh0Iik7dCYmdC5sb3NlQ29udGV4dCgpfSx0aGlzLmZvcmNlQ29udGV4dFJlc3RvcmU9ZnVuY3Rpb24oKXtjb25zdCB0PVUuZ2V0KCJXRUJHTF9sb3NlX2NvbnRleHQiKTt0JiZ0LnJlc3RvcmVDb250ZXh0KCl9LHRoaXMuZ2V0UGl4ZWxSYXRpbz1mdW5jdGlvbigpe3JldHVybiBTfSx0aGlzLnNldFBpeGVsUmF0aW89ZnVuY3Rpb24odCl7dm9pZCAwIT09dCYmKFM9dCx0aGlzLnNldFNpemUodyxrLCExKSl9LHRoaXMuZ2V0U2l6ZT1mdW5jdGlvbih0KXtyZXR1cm4gdC5zZXQodyxrKX0sdGhpcy5zZXRTaXplPWZ1bmN0aW9uKHQsbixvKXtndC5pc1ByZXNlbnRpbmc/Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiBDYW4ndCBjaGFuZ2Ugc2l6ZSB3aGlsZSBWUiBkZXZpY2UgaXMgcHJlc2VudGluZy4iKToodz10LGs9bixlLndpZHRoPU1hdGguZmxvb3IodCpTKSxlLmhlaWdodD1NYXRoLmZsb29yKG4qUyksITEhPT1vJiYoZS5zdHlsZS53aWR0aD10KyJweCIsZS5zdHlsZS5oZWlnaHQ9bisicHgiKSx0aGlzLnNldFZpZXdwb3J0KDAsMCx0LG4pKX0sdGhpcy5nZXREcmF3aW5nQnVmZmVyU2l6ZT1mdW5jdGlvbih0KXtyZXR1cm4gdC5zZXQodypTLGsqUykuZmxvb3IoKX0sdGhpcy5zZXREcmF3aW5nQnVmZmVyU2l6ZT1mdW5jdGlvbih0LG4sbyl7dz10LGs9bixTPW8sZS53aWR0aD1NYXRoLmZsb29yKHQqbyksZS5oZWlnaHQ9TWF0aC5mbG9vcihuKm8pLHRoaXMuc2V0Vmlld3BvcnQoMCwwLHQsbil9LHRoaXMuZ2V0Q3VycmVudFZpZXdwb3J0PWZ1bmN0aW9uKHQpe3JldHVybiB0LmNvcHkoeCl9LHRoaXMuZ2V0Vmlld3BvcnQ9ZnVuY3Rpb24odCl7cmV0dXJuIHQuY29weShFKX0sdGhpcy5zZXRWaWV3cG9ydD1mdW5jdGlvbih0LGUsbixvKXt0LmlzVmVjdG9yND9FLnNldCh0LngsdC55LHQueix0LncpOkUuc2V0KHQsZSxuLG8pLEcudmlld3BvcnQoeC5jb3B5KEUpLm11bHRpcGx5U2NhbGFyKFMpLmZsb29yKCkpfSx0aGlzLmdldFNjaXNzb3I9ZnVuY3Rpb24odCl7cmV0dXJuIHQuY29weShBKX0sdGhpcy5zZXRTY2lzc29yPWZ1bmN0aW9uKHQsZSxuLG8pe3QuaXNWZWN0b3I0P0Euc2V0KHQueCx0LnksdC56LHQudyk6QS5zZXQodCxlLG4sbyksRy5zY2lzc29yKE8uY29weShBKS5tdWx0aXBseVNjYWxhcihTKS5mbG9vcigpKX0sdGhpcy5nZXRTY2lzc29yVGVzdD1mdW5jdGlvbigpe3JldHVybiBUfSx0aGlzLnNldFNjaXNzb3JUZXN0PWZ1bmN0aW9uKHQpe0cuc2V0U2Npc3NvclRlc3QoVD10KX0sdGhpcy5zZXRPcGFxdWVTb3J0PWZ1bmN0aW9uKHQpe0Q9dH0sdGhpcy5zZXRUcmFuc3BhcmVudFNvcnQ9ZnVuY3Rpb24odCl7Uj10fSx0aGlzLmdldENsZWFyQ29sb3I9ZnVuY3Rpb24odCl7cmV0dXJuIHQuY29weShydC5nZXRDbGVhckNvbG9yKCkpfSx0aGlzLnNldENsZWFyQ29sb3I9ZnVuY3Rpb24oKXtydC5zZXRDbGVhckNvbG9yLmFwcGx5KHJ0LGFyZ3VtZW50cyl9LHRoaXMuZ2V0Q2xlYXJBbHBoYT1mdW5jdGlvbigpe3JldHVybiBydC5nZXRDbGVhckFscGhhKCl9LHRoaXMuc2V0Q2xlYXJBbHBoYT1mdW5jdGlvbigpe3J0LnNldENsZWFyQWxwaGEuYXBwbHkocnQsYXJndW1lbnRzKX0sdGhpcy5jbGVhcj1mdW5jdGlvbih0LGUsbil7bGV0IG89MDsodm9pZCAwPT09dHx8dCkmJihvfD0xNjM4NCksKHZvaWQgMD09PWV8fGUpJiYob3w9MjU2KSwodm9pZCAwPT09bnx8bikmJihvfD0xMDI0KSxtdC5jbGVhcihvKX0sdGhpcy5jbGVhckNvbG9yPWZ1bmN0aW9uKCl7dGhpcy5jbGVhcighMCwhMSwhMSl9LHRoaXMuY2xlYXJEZXB0aD1mdW5jdGlvbigpe3RoaXMuY2xlYXIoITEsITAsITEpfSx0aGlzLmNsZWFyU3RlbmNpbD1mdW5jdGlvbigpe3RoaXMuY2xlYXIoITEsITEsITApfSx0aGlzLmRpc3Bvc2U9ZnVuY3Rpb24oKXtlLnJlbW92ZUV2ZW50TGlzdGVuZXIoIndlYmdsY29udGV4dGxvc3QiLGh0LCExKSxlLnJlbW92ZUV2ZW50TGlzdGVuZXIoIndlYmdsY29udGV4dHJlc3RvcmVkIixidCwhMSksbnQuZGlzcG9zZSgpLG90LmRpc3Bvc2UoKSxxLmRpc3Bvc2UoKSxYLmRpc3Bvc2UoKSxLLmRpc3Bvc2UoKSwkLmRpc3Bvc2UoKSxwdC5kaXNwb3NlKCksZ3QuZGlzcG9zZSgpLGd0LnJlbW92ZUV2ZW50TGlzdGVuZXIoInNlc3Npb25zdGFydCIsQ3QpLGd0LnJlbW92ZUV2ZW50TGlzdGVuZXIoInNlc3Npb25lbmQiLE10KSxGJiYoRi5kaXNwb3NlKCksRj1udWxsKSx2dC5zdG9wKCl9LHRoaXMucmVuZGVyQnVmZmVySW1tZWRpYXRlPWZ1bmN0aW9uKHQsZSl7cHQuaW5pdEF0dHJpYnV0ZXMoKTtjb25zdCBuPXEuZ2V0KHQpO3QuaGFzUG9zaXRpb25zJiYhbi5wb3NpdGlvbiYmKG4ucG9zaXRpb249bXQuY3JlYXRlQnVmZmVyKCkpLHQuaGFzTm9ybWFscyYmIW4ubm9ybWFsJiYobi5ub3JtYWw9bXQuY3JlYXRlQnVmZmVyKCkpLHQuaGFzVXZzJiYhbi51diYmKG4udXY9bXQuY3JlYXRlQnVmZmVyKCkpLHQuaGFzQ29sb3JzJiYhbi5jb2xvciYmKG4uY29sb3I9bXQuY3JlYXRlQnVmZmVyKCkpO2NvbnN0IG89ZS5nZXRBdHRyaWJ1dGVzKCk7dC5oYXNQb3NpdGlvbnMmJihtdC5iaW5kQnVmZmVyKDM0OTYyLG4ucG9zaXRpb24pLG10LmJ1ZmZlckRhdGEoMzQ5NjIsdC5wb3NpdGlvbkFycmF5LDM1MDQ4KSxwdC5lbmFibGVBdHRyaWJ1dGUoby5wb3NpdGlvbiksbXQudmVydGV4QXR0cmliUG9pbnRlcihvLnBvc2l0aW9uLDMsNTEyNiwhMSwwLDApKSx0Lmhhc05vcm1hbHMmJihtdC5iaW5kQnVmZmVyKDM0OTYyLG4ubm9ybWFsKSxtdC5idWZmZXJEYXRhKDM0OTYyLHQubm9ybWFsQXJyYXksMzUwNDgpLHB0LmVuYWJsZUF0dHJpYnV0ZShvLm5vcm1hbCksbXQudmVydGV4QXR0cmliUG9pbnRlcihvLm5vcm1hbCwzLDUxMjYsITEsMCwwKSksdC5oYXNVdnMmJihtdC5iaW5kQnVmZmVyKDM0OTYyLG4udXYpLG10LmJ1ZmZlckRhdGEoMzQ5NjIsdC51dkFycmF5LDM1MDQ4KSxwdC5lbmFibGVBdHRyaWJ1dGUoby51diksbXQudmVydGV4QXR0cmliUG9pbnRlcihvLnV2LDIsNTEyNiwhMSwwLDApKSx0Lmhhc0NvbG9ycyYmKG10LmJpbmRCdWZmZXIoMzQ5NjIsbi5jb2xvciksbXQuYnVmZmVyRGF0YSgzNDk2Mix0LmNvbG9yQXJyYXksMzUwNDgpLHB0LmVuYWJsZUF0dHJpYnV0ZShvLmNvbG9yKSxtdC52ZXJ0ZXhBdHRyaWJQb2ludGVyKG8uY29sb3IsMyw1MTI2LCExLDAsMCkpLHB0LmRpc2FibGVVbnVzZWRBdHRyaWJ1dGVzKCksbXQuZHJhd0FycmF5cyg0LDAsdC5jb3VudCksdC5jb3VudD0wfSx0aGlzLnJlbmRlckJ1ZmZlckRpcmVjdD1mdW5jdGlvbih0LGUsbixvLGksYSl7bnVsbD09PWUmJihlPVYpO2NvbnN0IHI9aS5pc01lc2gmJmkubWF0cml4V29ybGQuZGV0ZXJtaW5hbnQoKTwwLHM9U3QodCxlLG8saSk7Ry5zZXRNYXRlcmlhbChvLHIpO2xldCBsPW4uaW5kZXg7Y29uc3QgYz1uLmF0dHJpYnV0ZXMucG9zaXRpb247aWYobnVsbD09PWwpe2lmKHZvaWQgMD09PWN8fDA9PT1jLmNvdW50KXJldHVybn1lbHNlIGlmKDA9PT1sLmNvdW50KXJldHVybjtsZXQgZCxwPTE7ITA9PT1vLndpcmVmcmFtZSYmKGw9US5nZXRXaXJlZnJhbWVBdHRyaWJ1dGUobikscD0yKSx2b2lkIDA9PT1uLm1vcnBoQXR0cmlidXRlcy5wb3NpdGlvbiYmdm9pZCAwPT09bi5tb3JwaEF0dHJpYnV0ZXMubm9ybWFsfHxzdC51cGRhdGUoaSxuLG8scykscHQuc2V0dXAoaSxvLHMsbixsKTtsZXQgbT1sdDtudWxsIT09bCYmKGQ9Si5nZXQobCksbT1jdCxtLnNldEluZGV4KGQpKTtjb25zdCBmPW51bGwhPT1sP2wuY291bnQ6Yy5jb3VudCx1PW4uZHJhd1JhbmdlLnN0YXJ0KnAsZz1uLmRyYXdSYW5nZS5jb3VudCpwLGg9bnVsbCE9PWE/YS5zdGFydCpwOjAsYj1udWxsIT09YT9hLmNvdW50KnA6MS8wLHk9TWF0aC5tYXgodSxoKSxfPU1hdGgubWluKGYsdStnLGgrYiktMSxDPU1hdGgubWF4KDAsXy15KzEpO2lmKDAhPT1DKXtpZihpLmlzTWVzaCkhMD09PW8ud2lyZWZyYW1lPyhHLnNldExpbmVXaWR0aChvLndpcmVmcmFtZUxpbmV3aWR0aCpqKCkpLG0uc2V0TW9kZSgxKSk6bS5zZXRNb2RlKDQpO2Vsc2UgaWYoaS5pc0xpbmUpe2xldCB0PW8ubGluZXdpZHRoO3ZvaWQgMD09PXQmJih0PTEpLEcuc2V0TGluZVdpZHRoKHQqaigpKSxtLnNldE1vZGUoaS5pc0xpbmVTZWdtZW50cz8xOmkuaXNMaW5lTG9vcD8yOjMpfWVsc2UgaS5pc1BvaW50cz9tLnNldE1vZGUoMCk6aS5pc1Nwcml0ZSYmbS5zZXRNb2RlKDQpO2lmKGkuaXNJbnN0YW5jZWRNZXNoKW0ucmVuZGVySW5zdGFuY2VzKHksQyxpLmNvdW50KTtlbHNlIGlmKG4uaXNJbnN0YW5jZWRCdWZmZXJHZW9tZXRyeSl7Y29uc3QgdD1NYXRoLm1pbihuLmluc3RhbmNlQ291bnQsbi5fbWF4SW5zdGFuY2VDb3VudCk7bS5yZW5kZXJJbnN0YW5jZXMoeSxDLHQpfWVsc2UgbS5yZW5kZXIoeSxDKX19LHRoaXMuY29tcGlsZT1mdW5jdGlvbih0LGUpe2Y9b3QuZ2V0KHQpLGYuaW5pdCgpLGcucHVzaChmKSx0LnRyYXZlcnNlVmlzaWJsZSgoZnVuY3Rpb24odCl7dC5pc0xpZ2h0JiZ0LmxheWVycy50ZXN0KGUubGF5ZXJzKSYmKGYucHVzaExpZ2h0KHQpLHQuY2FzdFNoYWRvdyYmZi5wdXNoU2hhZG93KHQpKX0pKSxmLnNldHVwTGlnaHRzKCksdC50cmF2ZXJzZSgoZnVuY3Rpb24oZSl7Y29uc3Qgbj1lLm1hdGVyaWFsO2lmKG4paWYoQXJyYXkuaXNBcnJheShuKSlmb3IobGV0IG89MDtvPG4ubGVuZ3RoO28rKyl7d3QobltvXSx0LGUpfWVsc2Ugd3Qobix0LGUpfSkpLGcucG9wKCksZj1udWxsfTtsZXQgX3Q9bnVsbDtmdW5jdGlvbiBDdCgpe3Z0LnN0b3AoKX1mdW5jdGlvbiBNdCgpe3Z0LnN0YXJ0KCl9Y29uc3QgdnQ9bmV3IFpjdDtmdW5jdGlvbiB4dCh0LGUsbixvKXtpZighMT09PXQudmlzaWJsZSlyZXR1cm47aWYodC5sYXllcnMudGVzdChlLmxheWVycykpaWYodC5pc0dyb3VwKW49dC5yZW5kZXJPcmRlcjtlbHNlIGlmKHQuaXNMT0QpITA9PT10LmF1dG9VcGRhdGUmJnQudXBkYXRlKGUpO2Vsc2UgaWYodC5pc0xpZ2h0KWYucHVzaExpZ2h0KHQpLHQuY2FzdFNoYWRvdyYmZi5wdXNoU2hhZG93KHQpO2Vsc2UgaWYodC5pc1Nwcml0ZSl7aWYoIXQuZnJ1c3R1bUN1bGxlZHx8ei5pbnRlcnNlY3RzU3ByaXRlKHQpKXtvJiZCLnNldEZyb21NYXRyaXhQb3NpdGlvbih0Lm1hdHJpeFdvcmxkKS5hcHBseU1hdHJpeDQoTCk7Y29uc3QgZT0kLnVwZGF0ZSh0KSxpPXQubWF0ZXJpYWw7aS52aXNpYmxlJiZtLnB1c2godCxlLGksbixCLnosbnVsbCl9fWVsc2UgaWYodC5pc0ltbWVkaWF0ZVJlbmRlck9iamVjdClvJiZCLnNldEZyb21NYXRyaXhQb3NpdGlvbih0Lm1hdHJpeFdvcmxkKS5hcHBseU1hdHJpeDQoTCksbS5wdXNoKHQsbnVsbCx0Lm1hdGVyaWFsLG4sQi56LG51bGwpO2Vsc2UgaWYoKHQuaXNNZXNofHx0LmlzTGluZXx8dC5pc1BvaW50cykmJih0LmlzU2tpbm5lZE1lc2gmJnQuc2tlbGV0b24uZnJhbWUhPT1ZLnJlbmRlci5mcmFtZSYmKHQuc2tlbGV0b24udXBkYXRlKCksdC5za2VsZXRvbi5mcmFtZT1ZLnJlbmRlci5mcmFtZSksIXQuZnJ1c3R1bUN1bGxlZHx8ei5pbnRlcnNlY3RzT2JqZWN0KHQpKSl7byYmQi5zZXRGcm9tTWF0cml4UG9zaXRpb24odC5tYXRyaXhXb3JsZCkuYXBwbHlNYXRyaXg0KEwpO2NvbnN0IGU9JC51cGRhdGUodCksaT10Lm1hdGVyaWFsO2lmKEFycmF5LmlzQXJyYXkoaSkpe2NvbnN0IG89ZS5ncm91cHM7Zm9yKGxldCBhPTAscj1vLmxlbmd0aDthPHI7YSsrKXtjb25zdCByPW9bYV0scz1pW3IubWF0ZXJpYWxJbmRleF07cyYmcy52aXNpYmxlJiZtLnB1c2godCxlLHMsbixCLnoscil9fWVsc2UgaS52aXNpYmxlJiZtLnB1c2godCxlLGksbixCLnosbnVsbCl9Y29uc3QgaT10LmNoaWxkcmVuO2ZvcihsZXQgdD0wLGE9aS5sZW5ndGg7dDxhO3QrKyl4dChpW3RdLGUsbixvKX1mdW5jdGlvbiBPdCh0LGUsbil7Y29uc3Qgbz0hMD09PWUuaXNTY2VuZT9lLm92ZXJyaWRlTWF0ZXJpYWw6bnVsbDtpZihuLmlzQXJyYXlDYW1lcmEpe2NvbnN0IGk9bi5jYW1lcmFzO2ZvcihsZXQgbj0wLGE9aS5sZW5ndGg7bjxhO24rKyl7Y29uc3QgYT1pW25dO0cudmlld3BvcnQoeC5jb3B5KGEudmlld3BvcnQpKSxmLnNldHVwTGlnaHRzVmlldyhhKTtmb3IobGV0IG49MCxpPXQubGVuZ3RoO248aTtuKyspe2NvbnN0IGk9dFtuXSxyPWkub2JqZWN0LHM9aS5nZW9tZXRyeSxsPW51bGw9PT1vP2kubWF0ZXJpYWw6byxjPWkuZ3JvdXA7ci5sYXllcnMudGVzdChhLmxheWVycykmJlB0KHIsZSxhLHMsbCxjKX19fWVsc2UgZm9yKGxldCBpPTAsYT10Lmxlbmd0aDtpPGE7aSsrKXtjb25zdCBhPXRbaV07UHQoYS5vYmplY3QsZSxuLGEuZ2VvbWV0cnksbnVsbD09PW8/YS5tYXRlcmlhbDpvLGEuZ3JvdXApfX1mdW5jdGlvbiBQdCh0LGUsbixvLGksYSl7aWYodC5vbkJlZm9yZVJlbmRlcihoLGUsbixvLGksYSksdC5tb2RlbFZpZXdNYXRyaXgubXVsdGlwbHlNYXRyaWNlcyhuLm1hdHJpeFdvcmxkSW52ZXJzZSx0Lm1hdHJpeFdvcmxkKSx0Lm5vcm1hbE1hdHJpeC5nZXROb3JtYWxNYXRyaXgodC5tb2RlbFZpZXdNYXRyaXgpLHQuaXNJbW1lZGlhdGVSZW5kZXJPYmplY3Qpe2NvbnN0IG89U3QobixlLGksdCk7Ry5zZXRNYXRlcmlhbChpKSxwdC5yZXNldCgpLChmdW5jdGlvbiByKHQsZSl7dC5yZW5kZXIoKGZ1bmN0aW9uKHQpe2gucmVuZGVyQnVmZmVySW1tZWRpYXRlKHQsZSl9KSl9KSh0LG8pfWVsc2UhMD09PWkudHJhbnNwYXJlbnQmJjI9PT1pLnNpZGU/KGkuc2lkZT0xLGkubmVlZHNVcGRhdGU9ITAsaC5yZW5kZXJCdWZmZXJEaXJlY3QobixlLG8saSx0LGEpLGkuc2lkZT0wLGkubmVlZHNVcGRhdGU9ITAsaC5yZW5kZXJCdWZmZXJEaXJlY3QobixlLG8saSx0LGEpLGkuc2lkZT0yKTpoLnJlbmRlckJ1ZmZlckRpcmVjdChuLGUsbyxpLHQsYSk7dC5vbkFmdGVyUmVuZGVyKGgsZSxuLG8saSxhKX1mdW5jdGlvbiB3dCh0LGUsbil7ITAhPT1lLmlzU2NlbmUmJihlPVYpO2NvbnN0IG89cS5nZXQodCksaT1mLnN0YXRlLmxpZ2h0cyxhPWkuc3RhdGUudmVyc2lvbixyPXR0LmdldFBhcmFtZXRlcnModCxpLnN0YXRlLGYuc3RhdGUuc2hhZG93c0FycmF5LGUsbikscz10dC5nZXRQcm9ncmFtQ2FjaGVLZXkocik7bGV0IGw9by5wcm9ncmFtcztvLmVudmlyb25tZW50PXQuaXNNZXNoU3RhbmRhcmRNYXRlcmlhbD9lLmVudmlyb25tZW50Om51bGwsby5mb2c9ZS5mb2csby5lbnZNYXA9KHQuaXNNZXNoU3RhbmRhcmRNYXRlcmlhbD9LOlgpLmdldCh0LmVudk1hcHx8by5lbnZpcm9ubWVudCksdm9pZCAwPT09bCYmKHQuYWRkRXZlbnRMaXN0ZW5lcigiZGlzcG9zZSIseXQpLGw9bmV3IE1hcCxvLnByb2dyYW1zPWwpO2xldCBjPWwuZ2V0KHMpO2lmKHZvaWQgMCE9PWMpe2lmKG8uY3VycmVudFByb2dyYW09PT1jJiZvLmxpZ2h0c1N0YXRlVmVyc2lvbj09PWEpcmV0dXJuIGt0KHQsciksY31lbHNlIHIudW5pZm9ybXM9dHQuZ2V0VW5pZm9ybXModCksdC5vbkJ1aWxkKHIsaCksdC5vbkJlZm9yZUNvbXBpbGUocixoKSxjPXR0LmFjcXVpcmVQcm9ncmFtKHIscyksbC5zZXQocyxjKSxvLnVuaWZvcm1zPXIudW5pZm9ybXM7Y29uc3QgZD1vLnVuaWZvcm1zOyh0LmlzU2hhZGVyTWF0ZXJpYWx8fHQuaXNSYXdTaGFkZXJNYXRlcmlhbCkmJiEwIT09dC5jbGlwcGluZ3x8KGQuY2xpcHBpbmdQbGFuZXM9aXQudW5pZm9ybSksa3QodCxyKSxvLm5lZWRzTGlnaHRzPShmdW5jdGlvbiBwKHQpe3JldHVybiB0LmlzTWVzaExhbWJlcnRNYXRlcmlhbHx8dC5pc01lc2hUb29uTWF0ZXJpYWx8fHQuaXNNZXNoUGhvbmdNYXRlcmlhbHx8dC5pc01lc2hTdGFuZGFyZE1hdGVyaWFsfHx0LmlzU2hhZG93TWF0ZXJpYWx8fHQuaXNTaGFkZXJNYXRlcmlhbCYmITA9PT10LmxpZ2h0c30pKHQpLG8ubGlnaHRzU3RhdGVWZXJzaW9uPWEsby5uZWVkc0xpZ2h0cyYmKGQuYW1iaWVudExpZ2h0Q29sb3IudmFsdWU9aS5zdGF0ZS5hbWJpZW50LGQubGlnaHRQcm9iZS52YWx1ZT1pLnN0YXRlLnByb2JlLGQuZGlyZWN0aW9uYWxMaWdodHMudmFsdWU9aS5zdGF0ZS5kaXJlY3Rpb25hbCxkLmRpcmVjdGlvbmFsTGlnaHRTaGFkb3dzLnZhbHVlPWkuc3RhdGUuZGlyZWN0aW9uYWxTaGFkb3csZC5zcG90TGlnaHRzLnZhbHVlPWkuc3RhdGUuc3BvdCxkLnNwb3RMaWdodFNoYWRvd3MudmFsdWU9aS5zdGF0ZS5zcG90U2hhZG93LGQucmVjdEFyZWFMaWdodHMudmFsdWU9aS5zdGF0ZS5yZWN0QXJlYSxkLmx0Y18xLnZhbHVlPWkuc3RhdGUucmVjdEFyZWFMVEMxLGQubHRjXzIudmFsdWU9aS5zdGF0ZS5yZWN0QXJlYUxUQzIsZC5wb2ludExpZ2h0cy52YWx1ZT1pLnN0YXRlLnBvaW50LGQucG9pbnRMaWdodFNoYWRvd3MudmFsdWU9aS5zdGF0ZS5wb2ludFNoYWRvdyxkLmhlbWlzcGhlcmVMaWdodHMudmFsdWU9aS5zdGF0ZS5oZW1pLGQuZGlyZWN0aW9uYWxTaGFkb3dNYXAudmFsdWU9aS5zdGF0ZS5kaXJlY3Rpb25hbFNoYWRvd01hcCxkLmRpcmVjdGlvbmFsU2hhZG93TWF0cml4LnZhbHVlPWkuc3RhdGUuZGlyZWN0aW9uYWxTaGFkb3dNYXRyaXgsZC5zcG90U2hhZG93TWFwLnZhbHVlPWkuc3RhdGUuc3BvdFNoYWRvd01hcCxkLnNwb3RTaGFkb3dNYXRyaXgudmFsdWU9aS5zdGF0ZS5zcG90U2hhZG93TWF0cml4LGQucG9pbnRTaGFkb3dNYXAudmFsdWU9aS5zdGF0ZS5wb2ludFNoYWRvd01hcCxkLnBvaW50U2hhZG93TWF0cml4LnZhbHVlPWkuc3RhdGUucG9pbnRTaGFkb3dNYXRyaXgpO2NvbnN0IG09Yy5nZXRVbmlmb3JtcygpLHU9WXB0LnNlcVdpdGhWYWx1ZShtLnNlcSxkKTtyZXR1cm4gby5jdXJyZW50UHJvZ3JhbT1jLG8udW5pZm9ybXNMaXN0PXUsY31mdW5jdGlvbiBrdCh0LGUpe2NvbnN0IG49cS5nZXQodCk7bi5vdXRwdXRFbmNvZGluZz1lLm91dHB1dEVuY29kaW5nLG4uaW5zdGFuY2luZz1lLmluc3RhbmNpbmcsbi5za2lubmluZz1lLnNraW5uaW5nLG4ubW9ycGhUYXJnZXRzPWUubW9ycGhUYXJnZXRzLG4ubW9ycGhOb3JtYWxzPWUubW9ycGhOb3JtYWxzLG4ubnVtQ2xpcHBpbmdQbGFuZXM9ZS5udW1DbGlwcGluZ1BsYW5lcyxuLm51bUludGVyc2VjdGlvbj1lLm51bUNsaXBJbnRlcnNlY3Rpb24sbi52ZXJ0ZXhBbHBoYXM9ZS52ZXJ0ZXhBbHBoYXMsbi52ZXJ0ZXhUYW5nZW50cz1lLnZlcnRleFRhbmdlbnRzfWZ1bmN0aW9uIFN0KHQsZSxuLG8peyEwIT09ZS5pc1NjZW5lJiYoZT1WKSxaLnJlc2V0VGV4dHVyZVVuaXRzKCk7Y29uc3QgaT1lLmZvZyxhPW51bGw9PT1DP2gub3V0cHV0RW5jb2Rpbmc6Qy50ZXh0dXJlLmVuY29kaW5nLHI9KG4uaXNNZXNoU3RhbmRhcmRNYXRlcmlhbD9LOlgpLmdldChuLmVudk1hcHx8KG4uaXNNZXNoU3RhbmRhcmRNYXRlcmlhbD9lLmVudmlyb25tZW50Om51bGwpKSxzPSEwPT09bi52ZXJ0ZXhDb2xvcnMmJiEhby5nZW9tZXRyeSYmISFvLmdlb21ldHJ5LmF0dHJpYnV0ZXMuY29sb3ImJjQ9PT1vLmdlb21ldHJ5LmF0dHJpYnV0ZXMuY29sb3IuaXRlbVNpemUsbD0hIW8uZ2VvbWV0cnkmJiEhby5nZW9tZXRyeS5hdHRyaWJ1dGVzLnRhbmdlbnQsYz0hIW8uZ2VvbWV0cnkmJiEhby5nZW9tZXRyeS5tb3JwaEF0dHJpYnV0ZXMucG9zaXRpb24sZD0hIW8uZ2VvbWV0cnkmJiEhby5nZW9tZXRyeS5tb3JwaEF0dHJpYnV0ZXMubm9ybWFsLHA9cS5nZXQobiksbT1mLnN0YXRlLmxpZ2h0cztpZighMD09PUkmJighMD09PUh8fHQhPT12KSl7aXQuc2V0U3RhdGUobix0LHQ9PT12JiZuLmlkPT09TSl9bGV0IHU9ITE7bi52ZXJzaW9uPT09cC5fX3ZlcnNpb24/cC5uZWVkc0xpZ2h0cyYmcC5saWdodHNTdGF0ZVZlcnNpb24hPT1tLnN0YXRlLnZlcnNpb258fHAub3V0cHV0RW5jb2RpbmchPT1hfHxvLmlzSW5zdGFuY2VkTWVzaCYmITE9PT1wLmluc3RhbmNpbmc/dT0hMDpvLmlzSW5zdGFuY2VkTWVzaHx8ITAhPT1wLmluc3RhbmNpbmc/by5pc1NraW5uZWRNZXNoJiYhMT09PXAuc2tpbm5pbmc/dT0hMDpvLmlzU2tpbm5lZE1lc2h8fCEwIT09cC5za2lubmluZz9wLmVudk1hcCE9PXJ8fG4uZm9nJiZwLmZvZyE9PWk/dT0hMDp2b2lkIDA9PT1wLm51bUNsaXBwaW5nUGxhbmVzfHxwLm51bUNsaXBwaW5nUGxhbmVzPT09aXQubnVtUGxhbmVzJiZwLm51bUludGVyc2VjdGlvbj09PWl0Lm51bUludGVyc2VjdGlvbj8ocC52ZXJ0ZXhBbHBoYXMhPT1zfHxwLnZlcnRleFRhbmdlbnRzIT09bHx8cC5tb3JwaFRhcmdldHMhPT1jfHxwLm1vcnBoTm9ybWFscyE9PWQpJiYodT0hMCk6dT0hMDp1PSEwOnU9ITA6KHU9ITAscC5fX3ZlcnNpb249bi52ZXJzaW9uKTtsZXQgZz1wLmN1cnJlbnRQcm9ncmFtOyEwPT09dSYmKGc9d3QobixlLG8pKTtsZXQgYj0hMSx5PSExLF89ITE7Y29uc3QgeD1nLmdldFVuaWZvcm1zKCksTz1wLnVuaWZvcm1zO2lmKEcudXNlUHJvZ3JhbShnLnByb2dyYW0pJiYoYj0hMCx5PSEwLF89ITApLG4uaWQhPT1NJiYoTT1uLmlkLHk9ITApLGJ8fHYhPT10KXtpZih4LnNldFZhbHVlKG10LCJwcm9qZWN0aW9uTWF0cml4Iix0LnByb2plY3Rpb25NYXRyaXgpLFcubG9nYXJpdGhtaWNEZXB0aEJ1ZmZlciYmeC5zZXRWYWx1ZShtdCwibG9nRGVwdGhCdWZGQyIsMi8oTWF0aC5sb2codC5mYXIrMSkvTWF0aC5MTjIpKSx2IT09dCYmKHY9dCx5PSEwLF89ITApLG4uaXNTaGFkZXJNYXRlcmlhbHx8bi5pc01lc2hQaG9uZ01hdGVyaWFsfHxuLmlzTWVzaFRvb25NYXRlcmlhbHx8bi5pc01lc2hTdGFuZGFyZE1hdGVyaWFsfHxuLmVudk1hcCl7Y29uc3QgZT14Lm1hcC5jYW1lcmFQb3NpdGlvbjt2b2lkIDAhPT1lJiZlLnNldFZhbHVlKG10LEIuc2V0RnJvbU1hdHJpeFBvc2l0aW9uKHQubWF0cml4V29ybGQpKX0obi5pc01lc2hQaG9uZ01hdGVyaWFsfHxuLmlzTWVzaFRvb25NYXRlcmlhbHx8bi5pc01lc2hMYW1iZXJ0TWF0ZXJpYWx8fG4uaXNNZXNoQmFzaWNNYXRlcmlhbHx8bi5pc01lc2hTdGFuZGFyZE1hdGVyaWFsfHxuLmlzU2hhZGVyTWF0ZXJpYWwpJiZ4LnNldFZhbHVlKG10LCJpc09ydGhvZ3JhcGhpYyIsITA9PT10LmlzT3J0aG9ncmFwaGljQ2FtZXJhKSwobi5pc01lc2hQaG9uZ01hdGVyaWFsfHxuLmlzTWVzaFRvb25NYXRlcmlhbHx8bi5pc01lc2hMYW1iZXJ0TWF0ZXJpYWx8fG4uaXNNZXNoQmFzaWNNYXRlcmlhbHx8bi5pc01lc2hTdGFuZGFyZE1hdGVyaWFsfHxuLmlzU2hhZGVyTWF0ZXJpYWx8fG4uaXNTaGFkb3dNYXRlcmlhbHx8by5pc1NraW5uZWRNZXNoKSYmeC5zZXRWYWx1ZShtdCwidmlld01hdHJpeCIsdC5tYXRyaXhXb3JsZEludmVyc2UpfWlmKG8uaXNTa2lubmVkTWVzaCl7eC5zZXRPcHRpb25hbChtdCxvLCJiaW5kTWF0cml4IikseC5zZXRPcHRpb25hbChtdCxvLCJiaW5kTWF0cml4SW52ZXJzZSIpO2NvbnN0IHQ9by5za2VsZXRvbjt0JiYoVy5mbG9hdFZlcnRleFRleHR1cmVzPyhudWxsPT09dC5ib25lVGV4dHVyZSYmdC5jb21wdXRlQm9uZVRleHR1cmUoKSx4LnNldFZhbHVlKG10LCJib25lVGV4dHVyZSIsdC5ib25lVGV4dHVyZSxaKSx4LnNldFZhbHVlKG10LCJib25lVGV4dHVyZVNpemUiLHQuYm9uZVRleHR1cmVTaXplKSk6eC5zZXRPcHRpb25hbChtdCx0LCJib25lTWF0cmljZXMiKSl9cmV0dXJuKHl8fHAucmVjZWl2ZVNoYWRvdyE9PW8ucmVjZWl2ZVNoYWRvdykmJihwLnJlY2VpdmVTaGFkb3c9by5yZWNlaXZlU2hhZG93LHguc2V0VmFsdWUobXQsInJlY2VpdmVTaGFkb3ciLG8ucmVjZWl2ZVNoYWRvdykpLHkmJih4LnNldFZhbHVlKG10LCJ0b25lTWFwcGluZ0V4cG9zdXJlIixoLnRvbmVNYXBwaW5nRXhwb3N1cmUpLHAubmVlZHNMaWdodHMmJihmdW5jdGlvbiBQKHQsZSl7dC5hbWJpZW50TGlnaHRDb2xvci5uZWVkc1VwZGF0ZT1lLHQubGlnaHRQcm9iZS5uZWVkc1VwZGF0ZT1lLHQuZGlyZWN0aW9uYWxMaWdodHMubmVlZHNVcGRhdGU9ZSx0LmRpcmVjdGlvbmFsTGlnaHRTaGFkb3dzLm5lZWRzVXBkYXRlPWUsdC5wb2ludExpZ2h0cy5uZWVkc1VwZGF0ZT1lLHQucG9pbnRMaWdodFNoYWRvd3MubmVlZHNVcGRhdGU9ZSx0LnNwb3RMaWdodHMubmVlZHNVcGRhdGU9ZSx0LnNwb3RMaWdodFNoYWRvd3MubmVlZHNVcGRhdGU9ZSx0LnJlY3RBcmVhTGlnaHRzLm5lZWRzVXBkYXRlPWUsdC5oZW1pc3BoZXJlTGlnaHRzLm5lZWRzVXBkYXRlPWV9KShPLF8pLGkmJm4uZm9nJiZldC5yZWZyZXNoRm9nVW5pZm9ybXMoTyxpKSxldC5yZWZyZXNoTWF0ZXJpYWxVbmlmb3JtcyhPLG4sUyxrLEYpLFlwdC51cGxvYWQobXQscC51bmlmb3Jtc0xpc3QsTyxaKSksbi5pc1NoYWRlck1hdGVyaWFsJiYhMD09PW4udW5pZm9ybXNOZWVkVXBkYXRlJiYoWXB0LnVwbG9hZChtdCxwLnVuaWZvcm1zTGlzdCxPLFopLG4udW5pZm9ybXNOZWVkVXBkYXRlPSExKSxuLmlzU3ByaXRlTWF0ZXJpYWwmJnguc2V0VmFsdWUobXQsImNlbnRlciIsby5jZW50ZXIpLHguc2V0VmFsdWUobXQsIm1vZGVsVmlld01hdHJpeCIsby5tb2RlbFZpZXdNYXRyaXgpLHguc2V0VmFsdWUobXQsIm5vcm1hbE1hdHJpeCIsby5ub3JtYWxNYXRyaXgpLHguc2V0VmFsdWUobXQsIm1vZGVsTWF0cml4IixvLm1hdHJpeFdvcmxkKSxnfXZ0LnNldEFuaW1hdGlvbkxvb3AoKGZ1bmN0aW9uIER0KHQpe190JiZfdCh0KX0pKSwidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdyYmdnQuc2V0Q29udGV4dCh3aW5kb3cpLHRoaXMuc2V0QW5pbWF0aW9uTG9vcD1mdW5jdGlvbih0KXtfdD10LGd0LnNldEFuaW1hdGlvbkxvb3AodCksbnVsbD09PXQ/dnQuc3RvcCgpOnZ0LnN0YXJ0KCl9LGd0LmFkZEV2ZW50TGlzdGVuZXIoInNlc3Npb25zdGFydCIsQ3QpLGd0LmFkZEV2ZW50TGlzdGVuZXIoInNlc3Npb25lbmQiLE10KSx0aGlzLnJlbmRlcj1mdW5jdGlvbih0LGUpe2lmKHZvaWQgMCE9PWUmJiEwIT09ZS5pc0NhbWVyYSlyZXR1cm4gdm9pZCBjb25zb2xlLmVycm9yKCJUSFJFRS5XZWJHTFJlbmRlcmVyLnJlbmRlcjogY2FtZXJhIGlzIG5vdCBhbiBpbnN0YW5jZSBvZiBUSFJFRS5DYW1lcmEuIik7aWYoITA9PT1iKXJldHVybjshMD09PXQuYXV0b1VwZGF0ZSYmdC51cGRhdGVNYXRyaXhXb3JsZCgpLG51bGw9PT1lLnBhcmVudCYmZS51cGRhdGVNYXRyaXhXb3JsZCgpLCEwPT09Z3QuZW5hYmxlZCYmITA9PT1ndC5pc1ByZXNlbnRpbmcmJighMD09PWd0LmNhbWVyYUF1dG9VcGRhdGUmJmd0LnVwZGF0ZUNhbWVyYShlKSxlPWd0LmdldENhbWVyYSgpKSwhMD09PXQuaXNTY2VuZSYmdC5vbkJlZm9yZVJlbmRlcihoLHQsZSxDKSxmPW90LmdldCh0LGcubGVuZ3RoKSxmLmluaXQoKSxnLnB1c2goZiksTC5tdWx0aXBseU1hdHJpY2VzKGUucHJvamVjdGlvbk1hdHJpeCxlLm1hdHJpeFdvcmxkSW52ZXJzZSksei5zZXRGcm9tUHJvamVjdGlvbk1hdHJpeChMKSxIPXRoaXMubG9jYWxDbGlwcGluZ0VuYWJsZWQsST1pdC5pbml0KHRoaXMuY2xpcHBpbmdQbGFuZXMsSCxlKSxtPW50LmdldCh0LHUubGVuZ3RoKSxtLmluaXQoKSx1LnB1c2gobSkseHQodCxlLDAsaC5zb3J0T2JqZWN0cyksbS5maW5pc2goKSwhMD09PWguc29ydE9iamVjdHMmJm0uc29ydChELFIpLCEwPT09SSYmaXQuYmVnaW5TaGFkb3dzKCk7YXQucmVuZGVyKGYuc3RhdGUuc2hhZG93c0FycmF5LHQsZSksZi5zZXR1cExpZ2h0cygpLGYuc2V0dXBMaWdodHNWaWV3KGUpLCEwPT09SSYmaXQuZW5kU2hhZG93cygpLCEwPT09dGhpcy5pbmZvLmF1dG9SZXNldCYmdGhpcy5pbmZvLnJlc2V0KCkscnQucmVuZGVyKG0sdCk7Y29uc3Qgbj1tLm9wYXF1ZSxvPW0udHJhbnNtaXNzaXZlLGk9bS50cmFuc3BhcmVudDtuLmxlbmd0aD4wJiZPdChuLHQsZSksby5sZW5ndGg+MCYmKGZ1bmN0aW9uIGEodCxlLG4sbyl7aWYobnVsbD09PUYpe0Y9bmV3KCEwPT09cyYmITA9PT1XLmlzV2ViR0wyP09zdDp4c3QpKDEwMjQsMTAyNCx7Z2VuZXJhdGVNaXBtYXBzOiEwLHR5cGU6bnVsbCE9PWR0LmNvbnZlcnQoTHJ0KT9McnQ6enJ0LG1pbkZpbHRlcjpOcnQsbWFnRmlsdGVyOkFydCx3cmFwUzpScnQsd3JhcFQ6UnJ0fSl9Y29uc3QgaT1oLmdldFJlbmRlclRhcmdldCgpO2guc2V0UmVuZGVyVGFyZ2V0KEYpLGguY2xlYXIoKTtjb25zdCBhPWgudG9uZU1hcHBpbmc7aC50b25lTWFwcGluZz0wLE90KHQsbixvKSxoLnRvbmVNYXBwaW5nPWEsWi51cGRhdGVNdWx0aXNhbXBsZVJlbmRlclRhcmdldChGKSxaLnVwZGF0ZVJlbmRlclRhcmdldE1pcG1hcChGKSxoLnNldFJlbmRlclRhcmdldChpKSxPdChlLG4sbyl9KShuLG8sdCxlKSxpLmxlbmd0aD4wJiZPdChpLHQsZSksbnVsbCE9PUMmJihaLnVwZGF0ZU11bHRpc2FtcGxlUmVuZGVyVGFyZ2V0KEMpLFoudXBkYXRlUmVuZGVyVGFyZ2V0TWlwbWFwKEMpKSwhMD09PXQuaXNTY2VuZSYmdC5vbkFmdGVyUmVuZGVyKGgsdCxlKSxHLmJ1ZmZlcnMuZGVwdGguc2V0VGVzdCghMCksRy5idWZmZXJzLmRlcHRoLnNldE1hc2soITApLEcuYnVmZmVycy5jb2xvci5zZXRNYXNrKCEwKSxHLnNldFBvbHlnb25PZmZzZXQoITEpLHB0LnJlc2V0RGVmYXVsdFN0YXRlKCksTT0tMSx2PW51bGwsZy5wb3AoKSxmPWcubGVuZ3RoPjA/Z1tnLmxlbmd0aC0xXTpudWxsLHUucG9wKCksbT11Lmxlbmd0aD4wP3VbdS5sZW5ndGgtMV06bnVsbH0sdGhpcy5nZXRBY3RpdmVDdWJlRmFjZT1mdW5jdGlvbigpe3JldHVybiB5fSx0aGlzLmdldEFjdGl2ZU1pcG1hcExldmVsPWZ1bmN0aW9uKCl7cmV0dXJuIF99LHRoaXMuZ2V0UmVuZGVyVGFyZ2V0PWZ1bmN0aW9uKCl7cmV0dXJuIEN9LHRoaXMuc2V0UmVuZGVyVGFyZ2V0PWZ1bmN0aW9uKHQsZT0wLG49MCl7Qz10LHk9ZSxfPW4sdCYmdm9pZCAwPT09cS5nZXQodCkuX193ZWJnbEZyYW1lYnVmZmVyJiZaLnNldHVwUmVuZGVyVGFyZ2V0KHQpO2xldCBvPW51bGwsaT0hMSxhPSExO2lmKHQpe2NvbnN0IG49dC50ZXh0dXJlOyhuLmlzRGF0YVRleHR1cmUzRHx8bi5pc0RhdGFUZXh0dXJlMkRBcnJheSkmJihhPSEwKTtjb25zdCByPXEuZ2V0KHQpLl9fd2ViZ2xGcmFtZWJ1ZmZlcjt0LmlzV2ViR0xDdWJlUmVuZGVyVGFyZ2V0PyhvPXJbZV0saT0hMCk6bz10LmlzV2ViR0xNdWx0aXNhbXBsZVJlbmRlclRhcmdldD9xLmdldCh0KS5fX3dlYmdsTXVsdGlzYW1wbGVkRnJhbWVidWZmZXI6cix4LmNvcHkodC52aWV3cG9ydCksTy5jb3B5KHQuc2Npc3NvciksUD10LnNjaXNzb3JUZXN0fWVsc2UgeC5jb3B5KEUpLm11bHRpcGx5U2NhbGFyKFMpLmZsb29yKCksTy5jb3B5KEEpLm11bHRpcGx5U2NhbGFyKFMpLmZsb29yKCksUD1UO2lmKEcuYmluZEZyYW1lYnVmZmVyKDM2MTYwLG8pJiZXLmRyYXdCdWZmZXJzKXtsZXQgZT0hMTtpZih0KWlmKHQuaXNXZWJHTE11bHRpcGxlUmVuZGVyVGFyZ2V0cyl7Y29uc3Qgbj10LnRleHR1cmU7aWYoTi5sZW5ndGghPT1uLmxlbmd0aHx8MzYwNjQhPT1OWzBdKXtmb3IobGV0IHQ9MCxlPW4ubGVuZ3RoO3Q8ZTt0KyspTlt0XT0zNjA2NCt0O04ubGVuZ3RoPW4ubGVuZ3RoLGU9ITB9fWVsc2UgMT09PU4ubGVuZ3RoJiYzNjA2ND09PU5bMF18fChOWzBdPTM2MDY0LE4ubGVuZ3RoPTEsZT0hMCk7ZWxzZSAxPT09Ti5sZW5ndGgmJjEwMjk9PT1OWzBdfHwoTlswXT0xMDI5LE4ubGVuZ3RoPTEsZT0hMCk7ZSYmKFcuaXNXZWJHTDI/bXQuZHJhd0J1ZmZlcnMoTik6VS5nZXQoIldFQkdMX2RyYXdfYnVmZmVycyIpLmRyYXdCdWZmZXJzV0VCR0woTikpfWlmKEcudmlld3BvcnQoeCksRy5zY2lzc29yKE8pLEcuc2V0U2Npc3NvclRlc3QoUCksaSl7Y29uc3Qgbz1xLmdldCh0LnRleHR1cmUpO210LmZyYW1lYnVmZmVyVGV4dHVyZTJEKDM2MTYwLDM2MDY0LDM0MDY5K2Usby5fX3dlYmdsVGV4dHVyZSxuKX1lbHNlIGlmKGEpe2NvbnN0IG89cS5nZXQodC50ZXh0dXJlKTttdC5mcmFtZWJ1ZmZlclRleHR1cmVMYXllcigzNjE2MCwzNjA2NCxvLl9fd2ViZ2xUZXh0dXJlLG58fDAsZXx8MCl9fSx0aGlzLnJlYWRSZW5kZXJUYXJnZXRQaXhlbHM9ZnVuY3Rpb24odCxlLG4sbyxpLGEscil7aWYoIXR8fCF0LmlzV2ViR0xSZW5kZXJUYXJnZXQpcmV0dXJuIHZvaWQgY29uc29sZS5lcnJvcigiVEhSRUUuV2ViR0xSZW5kZXJlci5yZWFkUmVuZGVyVGFyZ2V0UGl4ZWxzOiByZW5kZXJUYXJnZXQgaXMgbm90IFRIUkVFLldlYkdMUmVuZGVyVGFyZ2V0LiIpO2xldCBzPXEuZ2V0KHQpLl9fd2ViZ2xGcmFtZWJ1ZmZlcjtpZih0LmlzV2ViR0xDdWJlUmVuZGVyVGFyZ2V0JiZ2b2lkIDAhPT1yJiYocz1zW3JdKSxzKXtHLmJpbmRGcmFtZWJ1ZmZlcigzNjE2MCxzKTt0cnl7Y29uc3Qgcj10LnRleHR1cmUscz1yLmZvcm1hdCxsPXIudHlwZTtpZihzIT09anJ0JiZkdC5jb252ZXJ0KHMpIT09bXQuZ2V0UGFyYW1ldGVyKDM1NzM5KSlyZXR1cm4gdm9pZCBjb25zb2xlLmVycm9yKCJUSFJFRS5XZWJHTFJlbmRlcmVyLnJlYWRSZW5kZXJUYXJnZXRQaXhlbHM6IHJlbmRlclRhcmdldCBpcyBub3QgaW4gUkdCQSBvciBpbXBsZW1lbnRhdGlvbiBkZWZpbmVkIGZvcm1hdC4iKTtjb25zdCBjPWw9PT1McnQmJihVLmhhcygiRVhUX2NvbG9yX2J1ZmZlcl9oYWxmX2Zsb2F0Iil8fFcuaXNXZWJHTDImJlUuaGFzKCJFWFRfY29sb3JfYnVmZmVyX2Zsb2F0IikpO2lmKCEobD09PXpydHx8ZHQuY29udmVydChsKT09PW10LmdldFBhcmFtZXRlcigzNTczOCl8fGw9PT1GcnQmJihXLmlzV2ViR0wyfHxVLmhhcygiT0VTX3RleHR1cmVfZmxvYXQiKXx8VS5oYXMoIldFQkdMX2NvbG9yX2J1ZmZlcl9mbG9hdCIpKXx8YykpcmV0dXJuIHZvaWQgY29uc29sZS5lcnJvcigiVEhSRUUuV2ViR0xSZW5kZXJlci5yZWFkUmVuZGVyVGFyZ2V0UGl4ZWxzOiByZW5kZXJUYXJnZXQgaXMgbm90IGluIFVuc2lnbmVkQnl0ZVR5cGUgb3IgaW1wbGVtZW50YXRpb24gZGVmaW5lZCB0eXBlLiIpOzM2MDUzPT09bXQuY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cygzNjE2MCk/ZT49MCYmZTw9dC53aWR0aC1vJiZuPj0wJiZuPD10LmhlaWdodC1pJiZtdC5yZWFkUGl4ZWxzKGUsbixvLGksZHQuY29udmVydChzKSxkdC5jb252ZXJ0KGwpLGEpOmNvbnNvbGUuZXJyb3IoIlRIUkVFLldlYkdMUmVuZGVyZXIucmVhZFJlbmRlclRhcmdldFBpeGVsczogcmVhZFBpeGVscyBmcm9tIHJlbmRlclRhcmdldCBmYWlsZWQuIEZyYW1lYnVmZmVyIG5vdCBjb21wbGV0ZS4iKX1maW5hbGx5e2NvbnN0IHQ9bnVsbCE9PUM/cS5nZXQoQykuX193ZWJnbEZyYW1lYnVmZmVyOm51bGw7Ry5iaW5kRnJhbWVidWZmZXIoMzYxNjAsdCl9fX0sdGhpcy5jb3B5RnJhbWVidWZmZXJUb1RleHR1cmU9ZnVuY3Rpb24odCxlLG49MCl7Y29uc3Qgbz1NYXRoLnBvdygyLC1uKSxpPU1hdGguZmxvb3IoZS5pbWFnZS53aWR0aCpvKSxhPU1hdGguZmxvb3IoZS5pbWFnZS5oZWlnaHQqbyk7bGV0IHI9ZHQuY29udmVydChlLmZvcm1hdCk7Vy5pc1dlYkdMMiYmKDY0MDc9PT1yJiYocj0zMjg0OSksNjQwOD09PXImJihyPTMyODU2KSksWi5zZXRUZXh0dXJlMkQoZSwwKSxtdC5jb3B5VGV4SW1hZ2UyRCgzNTUzLG4scix0LngsdC55LGksYSwwKSxHLnVuYmluZFRleHR1cmUoKX0sdGhpcy5jb3B5VGV4dHVyZVRvVGV4dHVyZT1mdW5jdGlvbih0LGUsbixvPTApe2NvbnN0IGk9ZS5pbWFnZS53aWR0aCxhPWUuaW1hZ2UuaGVpZ2h0LHI9ZHQuY29udmVydChuLmZvcm1hdCkscz1kdC5jb252ZXJ0KG4udHlwZSk7Wi5zZXRUZXh0dXJlMkQobiwwKSxtdC5waXhlbFN0b3JlaSgzNzQ0MCxuLmZsaXBZKSxtdC5waXhlbFN0b3JlaSgzNzQ0MSxuLnByZW11bHRpcGx5QWxwaGEpLG10LnBpeGVsU3RvcmVpKDMzMTcsbi51bnBhY2tBbGlnbm1lbnQpLGUuaXNEYXRhVGV4dHVyZT9tdC50ZXhTdWJJbWFnZTJEKDM1NTMsbyx0LngsdC55LGksYSxyLHMsZS5pbWFnZS5kYXRhKTplLmlzQ29tcHJlc3NlZFRleHR1cmU/bXQuY29tcHJlc3NlZFRleFN1YkltYWdlMkQoMzU1MyxvLHQueCx0LnksZS5taXBtYXBzWzBdLndpZHRoLGUubWlwbWFwc1swXS5oZWlnaHQscixlLm1pcG1hcHNbMF0uZGF0YSk6bXQudGV4U3ViSW1hZ2UyRCgzNTUzLG8sdC54LHQueSxyLHMsZS5pbWFnZSksMD09PW8mJm4uZ2VuZXJhdGVNaXBtYXBzJiZtdC5nZW5lcmF0ZU1pcG1hcCgzNTUzKSxHLnVuYmluZFRleHR1cmUoKX0sdGhpcy5jb3B5VGV4dHVyZVRvVGV4dHVyZTNEPWZ1bmN0aW9uKHQsZSxuLG8saT0wKXtpZihoLmlzV2ViR0wxUmVuZGVyZXIpcmV0dXJuIHZvaWQgY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyLmNvcHlUZXh0dXJlVG9UZXh0dXJlM0Q6IGNhbiBvbmx5IGJlIHVzZWQgd2l0aCBXZWJHTDIuIik7Y29uc3QgYT10Lm1heC54LXQubWluLngrMSxyPXQubWF4LnktdC5taW4ueSsxLHM9dC5tYXguei10Lm1pbi56KzEsbD1kdC5jb252ZXJ0KG8uZm9ybWF0KSxjPWR0LmNvbnZlcnQoby50eXBlKTtsZXQgZDtpZihvLmlzRGF0YVRleHR1cmUzRClaLnNldFRleHR1cmUzRChvLDApLGQ9MzI4Nzk7ZWxzZXtpZighby5pc0RhdGFUZXh0dXJlMkRBcnJheSlyZXR1cm4gdm9pZCBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXIuY29weVRleHR1cmVUb1RleHR1cmUzRDogb25seSBzdXBwb3J0cyBUSFJFRS5EYXRhVGV4dHVyZTNEIGFuZCBUSFJFRS5EYXRhVGV4dHVyZTJEQXJyYXkuIik7Wi5zZXRUZXh0dXJlMkRBcnJheShvLDApLGQ9MzU4NjZ9bXQucGl4ZWxTdG9yZWkoMzc0NDAsby5mbGlwWSksbXQucGl4ZWxTdG9yZWkoMzc0NDEsby5wcmVtdWx0aXBseUFscGhhKSxtdC5waXhlbFN0b3JlaSgzMzE3LG8udW5wYWNrQWxpZ25tZW50KTtjb25zdCBwPW10LmdldFBhcmFtZXRlcigzMzE0KSxtPW10LmdldFBhcmFtZXRlcigzMjg3OCksZj1tdC5nZXRQYXJhbWV0ZXIoMzMxNiksdT1tdC5nZXRQYXJhbWV0ZXIoMzMxNSksZz1tdC5nZXRQYXJhbWV0ZXIoMzI4NzcpLGI9bi5pc0NvbXByZXNzZWRUZXh0dXJlP24ubWlwbWFwc1swXTpuLmltYWdlO210LnBpeGVsU3RvcmVpKDMzMTQsYi53aWR0aCksbXQucGl4ZWxTdG9yZWkoMzI4NzgsYi5oZWlnaHQpLG10LnBpeGVsU3RvcmVpKDMzMTYsdC5taW4ueCksbXQucGl4ZWxTdG9yZWkoMzMxNSx0Lm1pbi55KSxtdC5waXhlbFN0b3JlaSgzMjg3Nyx0Lm1pbi56KSxuLmlzRGF0YVRleHR1cmV8fG4uaXNEYXRhVGV4dHVyZTNEP210LnRleFN1YkltYWdlM0QoZCxpLGUueCxlLnksZS56LGEscixzLGwsYyxiLmRhdGEpOm4uaXNDb21wcmVzc2VkVGV4dHVyZT8oY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyLmNvcHlUZXh0dXJlVG9UZXh0dXJlM0Q6IHVudGVzdGVkIHN1cHBvcnQgZm9yIGNvbXByZXNzZWQgc3JjVGV4dHVyZS4iKSxtdC5jb21wcmVzc2VkVGV4U3ViSW1hZ2UzRChkLGksZS54LGUueSxlLnosYSxyLHMsbCxiLmRhdGEpKTptdC50ZXhTdWJJbWFnZTNEKGQsaSxlLngsZS55LGUueixhLHIscyxsLGMsYiksbXQucGl4ZWxTdG9yZWkoMzMxNCxwKSxtdC5waXhlbFN0b3JlaSgzMjg3OCxtKSxtdC5waXhlbFN0b3JlaSgzMzE2LGYpLG10LnBpeGVsU3RvcmVpKDMzMTUsdSksbXQucGl4ZWxTdG9yZWkoMzI4NzcsZyksMD09PWkmJm8uZ2VuZXJhdGVNaXBtYXBzJiZtdC5nZW5lcmF0ZU1pcG1hcChkKSxHLnVuYmluZFRleHR1cmUoKX0sdGhpcy5pbml0VGV4dHVyZT1mdW5jdGlvbih0KXtaLnNldFRleHR1cmUyRCh0LDApLEcudW5iaW5kVGV4dHVyZSgpfSx0aGlzLnJlc2V0U3RhdGU9ZnVuY3Rpb24oKXt5PTAsXz0wLEM9bnVsbCxHLnJlc2V0KCkscHQucmVzZXQoKX0sInVuZGVmaW5lZCIhPXR5cGVvZiBfX1RIUkVFX0RFVlRPT0xTX18mJl9fVEhSRUVfREVWVE9PTFNfXy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgib2JzZXJ2ZSIse2RldGFpbDp0aGlzfSkpfShjbGFzcyBleHRlbmRzIEhtdHt9KS5wcm90b3R5cGUuaXNXZWJHTDFSZW5kZXJlcj0hMDtjbGFzcyBGbXQgZXh0ZW5kcyBTbHR7Y29uc3RydWN0b3IoKXtzdXBlcigpLHRoaXMudHlwZT0iU2NlbmUiLHRoaXMuYmFja2dyb3VuZD1udWxsLHRoaXMuZW52aXJvbm1lbnQ9bnVsbCx0aGlzLmZvZz1udWxsLHRoaXMub3ZlcnJpZGVNYXRlcmlhbD1udWxsLHRoaXMuYXV0b1VwZGF0ZT0hMCwidW5kZWZpbmVkIiE9dHlwZW9mIF9fVEhSRUVfREVWVE9PTFNfXyYmX19USFJFRV9ERVZUT09MU19fLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJvYnNlcnZlIix7ZGV0YWlsOnRoaXN9KSl9Y29weSh0LGUpe3JldHVybiBzdXBlci5jb3B5KHQsZSksbnVsbCE9PXQuYmFja2dyb3VuZCYmKHRoaXMuYmFja2dyb3VuZD10LmJhY2tncm91bmQuY2xvbmUoKSksbnVsbCE9PXQuZW52aXJvbm1lbnQmJih0aGlzLmVudmlyb25tZW50PXQuZW52aXJvbm1lbnQuY2xvbmUoKSksbnVsbCE9PXQuZm9nJiYodGhpcy5mb2c9dC5mb2cuY2xvbmUoKSksbnVsbCE9PXQub3ZlcnJpZGVNYXRlcmlhbCYmKHRoaXMub3ZlcnJpZGVNYXRlcmlhbD10Lm92ZXJyaWRlTWF0ZXJpYWwuY2xvbmUoKSksdGhpcy5hdXRvVXBkYXRlPXQuYXV0b1VwZGF0ZSx0aGlzLm1hdHJpeEF1dG9VcGRhdGU9dC5tYXRyaXhBdXRvVXBkYXRlLHRoaXN9dG9KU09OKHQpe2NvbnN0IGU9c3VwZXIudG9KU09OKHQpO3JldHVybiBudWxsIT09dGhpcy5mb2cmJihlLm9iamVjdC5mb2c9dGhpcy5mb2cudG9KU09OKCkpLGV9fUZtdC5wcm90b3R5cGUuaXNTY2VuZT0hMDtjbGFzcyBMbXR7Y29uc3RydWN0b3IodCxlKXt0aGlzLmFycmF5PXQsdGhpcy5zdHJpZGU9ZSx0aGlzLmNvdW50PXZvaWQgMCE9PXQ/dC5sZW5ndGgvZTowLHRoaXMudXNhZ2U9b3N0LHRoaXMudXBkYXRlUmFuZ2U9e29mZnNldDowLGNvdW50Oi0xfSx0aGlzLnZlcnNpb249MCx0aGlzLnV1aWQ9ZHN0KCl9b25VcGxvYWRDYWxsYmFjaygpe31zZXQgbmVlZHNVcGRhdGUodCl7ITA9PT10JiZ0aGlzLnZlcnNpb24rK31zZXRVc2FnZSh0KXtyZXR1cm4gdGhpcy51c2FnZT10LHRoaXN9Y29weSh0KXtyZXR1cm4gdGhpcy5hcnJheT1uZXcgdC5hcnJheS5jb25zdHJ1Y3Rvcih0LmFycmF5KSx0aGlzLmNvdW50PXQuY291bnQsdGhpcy5zdHJpZGU9dC5zdHJpZGUsdGhpcy51c2FnZT10LnVzYWdlLHRoaXN9Y29weUF0KHQsZSxuKXt0Kj10aGlzLnN0cmlkZSxuKj1lLnN0cmlkZTtmb3IobGV0IG89MCxpPXRoaXMuc3RyaWRlO288aTtvKyspdGhpcy5hcnJheVt0K29dPWUuYXJyYXlbbitvXTtyZXR1cm4gdGhpc31zZXQodCxlPTApe3JldHVybiB0aGlzLmFycmF5LnNldCh0LGUpLHRoaXN9Y2xvbmUodCl7dm9pZCAwPT09dC5hcnJheUJ1ZmZlcnMmJih0LmFycmF5QnVmZmVycz17fSksdm9pZCAwPT09dGhpcy5hcnJheS5idWZmZXIuX3V1aWQmJih0aGlzLmFycmF5LmJ1ZmZlci5fdXVpZD1kc3QoKSksdm9pZCAwPT09dC5hcnJheUJ1ZmZlcnNbdGhpcy5hcnJheS5idWZmZXIuX3V1aWRdJiYodC5hcnJheUJ1ZmZlcnNbdGhpcy5hcnJheS5idWZmZXIuX3V1aWRdPXRoaXMuYXJyYXkuc2xpY2UoMCkuYnVmZmVyKTtjb25zdCBlPW5ldyB0aGlzLmFycmF5LmNvbnN0cnVjdG9yKHQuYXJyYXlCdWZmZXJzW3RoaXMuYXJyYXkuYnVmZmVyLl91dWlkXSksbj1uZXcgdGhpcy5jb25zdHJ1Y3RvcihlLHRoaXMuc3RyaWRlKTtyZXR1cm4gbi5zZXRVc2FnZSh0aGlzLnVzYWdlKSxufW9uVXBsb2FkKHQpe3JldHVybiB0aGlzLm9uVXBsb2FkQ2FsbGJhY2s9dCx0aGlzfXRvSlNPTih0KXtyZXR1cm4gdm9pZCAwPT09dC5hcnJheUJ1ZmZlcnMmJih0LmFycmF5QnVmZmVycz17fSksdm9pZCAwPT09dGhpcy5hcnJheS5idWZmZXIuX3V1aWQmJih0aGlzLmFycmF5LmJ1ZmZlci5fdXVpZD1kc3QoKSksdm9pZCAwPT09dC5hcnJheUJ1ZmZlcnNbdGhpcy5hcnJheS5idWZmZXIuX3V1aWRdJiYodC5hcnJheUJ1ZmZlcnNbdGhpcy5hcnJheS5idWZmZXIuX3V1aWRdPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKG5ldyBVaW50MzJBcnJheSh0aGlzLmFycmF5LmJ1ZmZlcikpKSx7dXVpZDp0aGlzLnV1aWQsYnVmZmVyOnRoaXMuYXJyYXkuYnVmZmVyLl91dWlkLHR5cGU6dGhpcy5hcnJheS5jb25zdHJ1Y3Rvci5uYW1lLHN0cmlkZTp0aGlzLnN0cmlkZX19fUxtdC5wcm90b3R5cGUuaXNJbnRlcmxlYXZlZEJ1ZmZlcj0hMDtjb25zdCBCbXQ9bmV3IHdzdDtjbGFzcyBWbXR7Y29uc3RydWN0b3IodCxlLG4sbz0hMSl7dGhpcy5uYW1lPSIiLHRoaXMuZGF0YT10LHRoaXMuaXRlbVNpemU9ZSx0aGlzLm9mZnNldD1uLHRoaXMubm9ybWFsaXplZD0hMD09PW99Z2V0IGNvdW50KCl7cmV0dXJuIHRoaXMuZGF0YS5jb3VudH1nZXQgYXJyYXkoKXtyZXR1cm4gdGhpcy5kYXRhLmFycmF5fXNldCBuZWVkc1VwZGF0ZSh0KXt0aGlzLmRhdGEubmVlZHNVcGRhdGU9dH1hcHBseU1hdHJpeDQodCl7Zm9yKGxldCBlPTAsbj10aGlzLmRhdGEuY291bnQ7ZTxuO2UrKylCbXQueD10aGlzLmdldFgoZSksQm10Lnk9dGhpcy5nZXRZKGUpLEJtdC56PXRoaXMuZ2V0WihlKSxCbXQuYXBwbHlNYXRyaXg0KHQpLHRoaXMuc2V0WFlaKGUsQm10LngsQm10LnksQm10LnopO3JldHVybiB0aGlzfWFwcGx5Tm9ybWFsTWF0cml4KHQpe2ZvcihsZXQgZT0wLG49dGhpcy5jb3VudDtlPG47ZSsrKUJtdC54PXRoaXMuZ2V0WChlKSxCbXQueT10aGlzLmdldFkoZSksQm10Lno9dGhpcy5nZXRaKGUpLEJtdC5hcHBseU5vcm1hbE1hdHJpeCh0KSx0aGlzLnNldFhZWihlLEJtdC54LEJtdC55LEJtdC56KTtyZXR1cm4gdGhpc310cmFuc2Zvcm1EaXJlY3Rpb24odCl7Zm9yKGxldCBlPTAsbj10aGlzLmNvdW50O2U8bjtlKyspQm10Lng9dGhpcy5nZXRYKGUpLEJtdC55PXRoaXMuZ2V0WShlKSxCbXQuej10aGlzLmdldFooZSksQm10LnRyYW5zZm9ybURpcmVjdGlvbih0KSx0aGlzLnNldFhZWihlLEJtdC54LEJtdC55LEJtdC56KTtyZXR1cm4gdGhpc31zZXRYKHQsZSl7cmV0dXJuIHRoaXMuZGF0YS5hcnJheVt0KnRoaXMuZGF0YS5zdHJpZGUrdGhpcy5vZmZzZXRdPWUsdGhpc31zZXRZKHQsZSl7cmV0dXJuIHRoaXMuZGF0YS5hcnJheVt0KnRoaXMuZGF0YS5zdHJpZGUrdGhpcy5vZmZzZXQrMV09ZSx0aGlzfXNldFoodCxlKXtyZXR1cm4gdGhpcy5kYXRhLmFycmF5W3QqdGhpcy5kYXRhLnN0cmlkZSt0aGlzLm9mZnNldCsyXT1lLHRoaXN9c2V0Vyh0LGUpe3JldHVybiB0aGlzLmRhdGEuYXJyYXlbdCp0aGlzLmRhdGEuc3RyaWRlK3RoaXMub2Zmc2V0KzNdPWUsdGhpc31nZXRYKHQpe3JldHVybiB0aGlzLmRhdGEuYXJyYXlbdCp0aGlzLmRhdGEuc3RyaWRlK3RoaXMub2Zmc2V0XX1nZXRZKHQpe3JldHVybiB0aGlzLmRhdGEuYXJyYXlbdCp0aGlzLmRhdGEuc3RyaWRlK3RoaXMub2Zmc2V0KzFdfWdldFoodCl7cmV0dXJuIHRoaXMuZGF0YS5hcnJheVt0KnRoaXMuZGF0YS5zdHJpZGUrdGhpcy5vZmZzZXQrMl19Z2V0Vyh0KXtyZXR1cm4gdGhpcy5kYXRhLmFycmF5W3QqdGhpcy5kYXRhLnN0cmlkZSt0aGlzLm9mZnNldCszXX1zZXRYWSh0LGUsbil7cmV0dXJuIHRoaXMuZGF0YS5hcnJheVsodD10KnRoaXMuZGF0YS5zdHJpZGUrdGhpcy5vZmZzZXQpKzBdPWUsdGhpcy5kYXRhLmFycmF5W3QrMV09bix0aGlzfXNldFhZWih0LGUsbixvKXtyZXR1cm4gdGhpcy5kYXRhLmFycmF5Wyh0PXQqdGhpcy5kYXRhLnN0cmlkZSt0aGlzLm9mZnNldCkrMF09ZSx0aGlzLmRhdGEuYXJyYXlbdCsxXT1uLHRoaXMuZGF0YS5hcnJheVt0KzJdPW8sdGhpc31zZXRYWVpXKHQsZSxuLG8saSl7cmV0dXJuIHRoaXMuZGF0YS5hcnJheVsodD10KnRoaXMuZGF0YS5zdHJpZGUrdGhpcy5vZmZzZXQpKzBdPWUsdGhpcy5kYXRhLmFycmF5W3QrMV09bix0aGlzLmRhdGEuYXJyYXlbdCsyXT1vLHRoaXMuZGF0YS5hcnJheVt0KzNdPWksdGhpc31jbG9uZSh0KXtpZih2b2lkIDA9PT10KXtjb25zb2xlLmxvZygiVEhSRUUuSW50ZXJsZWF2ZWRCdWZmZXJBdHRyaWJ1dGUuY2xvbmUoKTogQ2xvbmluZyBhbiBpbnRlcmxhdmVkIGJ1ZmZlciBhdHRyaWJ1dGUgd2lsbCBkZWludGVybGVhdmUgYnVmZmVyIGRhdGEuIik7Y29uc3QgdD1bXTtmb3IobGV0IGU9MDtlPHRoaXMuY291bnQ7ZSsrKXtjb25zdCBuPWUqdGhpcy5kYXRhLnN0cmlkZSt0aGlzLm9mZnNldDtmb3IobGV0IGU9MDtlPHRoaXMuaXRlbVNpemU7ZSsrKXQucHVzaCh0aGlzLmRhdGEuYXJyYXlbbitlXSl9cmV0dXJuIG5ldyBRbHQobmV3IHRoaXMuYXJyYXkuY29uc3RydWN0b3IodCksdGhpcy5pdGVtU2l6ZSx0aGlzLm5vcm1hbGl6ZWQpfXJldHVybiB2b2lkIDA9PT10LmludGVybGVhdmVkQnVmZmVycyYmKHQuaW50ZXJsZWF2ZWRCdWZmZXJzPXt9KSx2b2lkIDA9PT10LmludGVybGVhdmVkQnVmZmVyc1t0aGlzLmRhdGEudXVpZF0mJih0LmludGVybGVhdmVkQnVmZmVyc1t0aGlzLmRhdGEudXVpZF09dGhpcy5kYXRhLmNsb25lKHQpKSxuZXcgVm10KHQuaW50ZXJsZWF2ZWRCdWZmZXJzW3RoaXMuZGF0YS51dWlkXSx0aGlzLml0ZW1TaXplLHRoaXMub2Zmc2V0LHRoaXMubm9ybWFsaXplZCl9dG9KU09OKHQpe2lmKHZvaWQgMD09PXQpe2NvbnNvbGUubG9nKCJUSFJFRS5JbnRlcmxlYXZlZEJ1ZmZlckF0dHJpYnV0ZS50b0pTT04oKTogU2VyaWFsaXppbmcgYW4gaW50ZXJsYXZlZCBidWZmZXIgYXR0cmlidXRlIHdpbGwgZGVpbnRlcmxlYXZlIGJ1ZmZlciBkYXRhLiIpO2NvbnN0IHQ9W107Zm9yKGxldCBlPTA7ZTx0aGlzLmNvdW50O2UrKyl7Y29uc3Qgbj1lKnRoaXMuZGF0YS5zdHJpZGUrdGhpcy5vZmZzZXQ7Zm9yKGxldCBlPTA7ZTx0aGlzLml0ZW1TaXplO2UrKyl0LnB1c2godGhpcy5kYXRhLmFycmF5W24rZV0pfXJldHVybntpdGVtU2l6ZTp0aGlzLml0ZW1TaXplLHR5cGU6dGhpcy5hcnJheS5jb25zdHJ1Y3Rvci5uYW1lLGFycmF5OnQsbm9ybWFsaXplZDp0aGlzLm5vcm1hbGl6ZWR9fXJldHVybiB2b2lkIDA9PT10LmludGVybGVhdmVkQnVmZmVycyYmKHQuaW50ZXJsZWF2ZWRCdWZmZXJzPXt9KSx2b2lkIDA9PT10LmludGVybGVhdmVkQnVmZmVyc1t0aGlzLmRhdGEudXVpZF0mJih0LmludGVybGVhdmVkQnVmZmVyc1t0aGlzLmRhdGEudXVpZF09dGhpcy5kYXRhLnRvSlNPTih0KSkse2lzSW50ZXJsZWF2ZWRCdWZmZXJBdHRyaWJ1dGU6ITAsaXRlbVNpemU6dGhpcy5pdGVtU2l6ZSxkYXRhOnRoaXMuZGF0YS51dWlkLG9mZnNldDp0aGlzLm9mZnNldCxub3JtYWxpemVkOnRoaXMubm9ybWFsaXplZH19fVZtdC5wcm90b3R5cGUuaXNJbnRlcmxlYXZlZEJ1ZmZlckF0dHJpYnV0ZT0hMDtjbGFzcyBqbXQgZXh0ZW5kcyBWbHR7Y29uc3RydWN0b3IodCl7c3VwZXIoKSx0aGlzLnR5cGU9IlNwcml0ZU1hdGVyaWFsIix0aGlzLmNvbG9yPW5ldyBabHQoMTY3NzcyMTUpLHRoaXMubWFwPW51bGwsdGhpcy5hbHBoYU1hcD1udWxsLHRoaXMucm90YXRpb249MCx0aGlzLnNpemVBdHRlbnVhdGlvbj0hMCx0aGlzLnRyYW5zcGFyZW50PSEwLHRoaXMuc2V0VmFsdWVzKHQpfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5jb2xvci5jb3B5KHQuY29sb3IpLHRoaXMubWFwPXQubWFwLHRoaXMuYWxwaGFNYXA9dC5hbHBoYU1hcCx0aGlzLnJvdGF0aW9uPXQucm90YXRpb24sdGhpcy5zaXplQXR0ZW51YXRpb249dC5zaXplQXR0ZW51YXRpb24sdGhpc319bGV0IFVtdDtqbXQucHJvdG90eXBlLmlzU3ByaXRlTWF0ZXJpYWw9ITA7Y29uc3QgV210PW5ldyB3c3QsR210PW5ldyB3c3QsWW10PW5ldyB3c3QscW10PW5ldyBnc3QsWm10PW5ldyBnc3QsWG10PW5ldyBvbHQsS210PW5ldyB3c3QsSm10PW5ldyB3c3QsUW10PW5ldyB3c3QsJG10PW5ldyBnc3QsdGZ0PW5ldyBnc3QsZWZ0PW5ldyBnc3Q7ZnVuY3Rpb24gbmZ0KHQsZSxuLG8saSxhKXtxbXQuc3ViVmVjdG9ycyh0LG4pLmFkZFNjYWxhciguNSkubXVsdGlwbHkobyksdm9pZCAwIT09aT8oWm10Lng9YSpxbXQueC1pKnFtdC55LFptdC55PWkqcW10LngrYSpxbXQueSk6Wm10LmNvcHkocW10KSx0LmNvcHkoZSksdC54Kz1abXQueCx0LnkrPVptdC55LHQuYXBwbHlNYXRyaXg0KFhtdCl9KGNsYXNzIGV4dGVuZHMgU2x0e2NvbnN0cnVjdG9yKHQpe2lmKHN1cGVyKCksdGhpcy50eXBlPSJTcHJpdGUiLHZvaWQgMD09PVVtdCl7VW10PW5ldyBkY3Q7Y29uc3QgdD1uZXcgRmxvYXQzMkFycmF5KFstLjUsLS41LDAsMCwwLC41LC0uNSwwLDEsMCwuNSwuNSwwLDEsMSwtLjUsLjUsMCwwLDFdKSxlPW5ldyBMbXQodCw1KTtVbXQuc2V0SW5kZXgoWzAsMSwyLDAsMiwzXSksVW10LnNldEF0dHJpYnV0ZSgicG9zaXRpb24iLG5ldyBWbXQoZSwzLDAsITEpKSxVbXQuc2V0QXR0cmlidXRlKCJ1diIsbmV3IFZtdChlLDIsMywhMSkpfXRoaXMuZ2VvbWV0cnk9VW10LHRoaXMubWF0ZXJpYWw9dm9pZCAwIT09dD90Om5ldyBqbXQsdGhpcy5jZW50ZXI9bmV3IGdzdCguNSwuNSl9cmF5Y2FzdCh0LGUpe251bGw9PT10LmNhbWVyYSYmY29uc29sZS5lcnJvcignVEhSRUUuU3ByaXRlOiAiUmF5Y2FzdGVyLmNhbWVyYSIgbmVlZHMgdG8gYmUgc2V0IGluIG9yZGVyIHRvIHJheWNhc3QgYWdhaW5zdCBzcHJpdGVzLicpLEdtdC5zZXRGcm9tTWF0cml4U2NhbGUodGhpcy5tYXRyaXhXb3JsZCksWG10LmNvcHkodC5jYW1lcmEubWF0cml4V29ybGQpLHRoaXMubW9kZWxWaWV3TWF0cml4Lm11bHRpcGx5TWF0cmljZXModC5jYW1lcmEubWF0cml4V29ybGRJbnZlcnNlLHRoaXMubWF0cml4V29ybGQpLFltdC5zZXRGcm9tTWF0cml4UG9zaXRpb24odGhpcy5tb2RlbFZpZXdNYXRyaXgpLHQuY2FtZXJhLmlzUGVyc3BlY3RpdmVDYW1lcmEmJiExPT09dGhpcy5tYXRlcmlhbC5zaXplQXR0ZW51YXRpb24mJkdtdC5tdWx0aXBseVNjYWxhcigtWW10LnopO2NvbnN0IG49dGhpcy5tYXRlcmlhbC5yb3RhdGlvbjtsZXQgbyxpOzAhPT1uJiYoaT1NYXRoLmNvcyhuKSxvPU1hdGguc2luKG4pKTtjb25zdCBhPXRoaXMuY2VudGVyO25mdChLbXQuc2V0KC0uNSwtLjUsMCksWW10LGEsR210LG8saSksbmZ0KEptdC5zZXQoLjUsLS41LDApLFltdCxhLEdtdCxvLGkpLG5mdChRbXQuc2V0KC41LC41LDApLFltdCxhLEdtdCxvLGkpLCRtdC5zZXQoMCwwKSx0ZnQuc2V0KDEsMCksZWZ0LnNldCgxLDEpO2xldCByPXQucmF5LmludGVyc2VjdFRyaWFuZ2xlKEttdCxKbXQsUW10LCExLFdtdCk7aWYobnVsbD09PXImJihuZnQoSm10LnNldCgtLjUsLjUsMCksWW10LGEsR210LG8saSksdGZ0LnNldCgwLDEpLHI9dC5yYXkuaW50ZXJzZWN0VHJpYW5nbGUoS210LFFtdCxKbXQsITEsV210KSxudWxsPT09cikpcmV0dXJuO2NvbnN0IHM9dC5yYXkub3JpZ2luLmRpc3RhbmNlVG8oV210KTtzPHQubmVhcnx8cz50LmZhcnx8ZS5wdXNoKHtkaXN0YW5jZTpzLHBvaW50OldtdC5jbG9uZSgpLHV2OkxsdC5nZXRVVihXbXQsS210LEptdCxRbXQsJG10LHRmdCxlZnQsbmV3IGdzdCksZmFjZTpudWxsLG9iamVjdDp0aGlzfSl9Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx2b2lkIDAhPT10LmNlbnRlciYmdGhpcy5jZW50ZXIuY29weSh0LmNlbnRlciksdGhpcy5tYXRlcmlhbD10Lm1hdGVyaWFsLHRoaXN9fSkucHJvdG90eXBlLmlzU3ByaXRlPSEwO2NvbnN0IG9mdD1uZXcgd3N0LGlmdD1uZXcgdnN0LGFmdD1uZXcgdnN0LHJmdD1uZXcgd3N0LHNmdD1uZXcgb2x0O2NsYXNzIGxmdCBleHRlbmRzIFNjdHtjb25zdHJ1Y3Rvcih0LGUpe3N1cGVyKHQsZSksdGhpcy50eXBlPSJTa2lubmVkTWVzaCIsdGhpcy5iaW5kTW9kZT0iYXR0YWNoZWQiLHRoaXMuYmluZE1hdHJpeD1uZXcgb2x0LHRoaXMuYmluZE1hdHJpeEludmVyc2U9bmV3IG9sdH1jb3B5KHQpe3JldHVybiBzdXBlci5jb3B5KHQpLHRoaXMuYmluZE1vZGU9dC5iaW5kTW9kZSx0aGlzLmJpbmRNYXRyaXguY29weSh0LmJpbmRNYXRyaXgpLHRoaXMuYmluZE1hdHJpeEludmVyc2UuY29weSh0LmJpbmRNYXRyaXhJbnZlcnNlKSx0aGlzLnNrZWxldG9uPXQuc2tlbGV0b24sdGhpc31iaW5kKHQsZSl7dGhpcy5za2VsZXRvbj10LHZvaWQgMD09PWUmJih0aGlzLnVwZGF0ZU1hdHJpeFdvcmxkKCEwKSx0aGlzLnNrZWxldG9uLmNhbGN1bGF0ZUludmVyc2VzKCksZT10aGlzLm1hdHJpeFdvcmxkKSx0aGlzLmJpbmRNYXRyaXguY29weShlKSx0aGlzLmJpbmRNYXRyaXhJbnZlcnNlLmNvcHkoZSkuaW52ZXJ0KCl9cG9zZSgpe3RoaXMuc2tlbGV0b24ucG9zZSgpfW5vcm1hbGl6ZVNraW5XZWlnaHRzKCl7Y29uc3QgdD1uZXcgdnN0LGU9dGhpcy5nZW9tZXRyeS5hdHRyaWJ1dGVzLnNraW5XZWlnaHQ7Zm9yKGxldCBuPTAsbz1lLmNvdW50O248bztuKyspe3QueD1lLmdldFgobiksdC55PWUuZ2V0WShuKSx0Lno9ZS5nZXRaKG4pLHQudz1lLmdldFcobik7Y29uc3Qgbz0xL3QubWFuaGF0dGFuTGVuZ3RoKCk7byE9PTEvMD90Lm11bHRpcGx5U2NhbGFyKG8pOnQuc2V0KDEsMCwwLDApLGUuc2V0WFlaVyhuLHQueCx0LnksdC56LHQudyl9fXVwZGF0ZU1hdHJpeFdvcmxkKHQpe3N1cGVyLnVwZGF0ZU1hdHJpeFdvcmxkKHQpLCJhdHRhY2hlZCI9PT10aGlzLmJpbmRNb2RlP3RoaXMuYmluZE1hdHJpeEludmVyc2UuY29weSh0aGlzLm1hdHJpeFdvcmxkKS5pbnZlcnQoKToiZGV0YWNoZWQiPT09dGhpcy5iaW5kTW9kZT90aGlzLmJpbmRNYXRyaXhJbnZlcnNlLmNvcHkodGhpcy5iaW5kTWF0cml4KS5pbnZlcnQoKTpjb25zb2xlLndhcm4oIlRIUkVFLlNraW5uZWRNZXNoOiBVbnJlY29nbml6ZWQgYmluZE1vZGU6ICIrdGhpcy5iaW5kTW9kZSl9Ym9uZVRyYW5zZm9ybSh0LGUpe2NvbnN0IG49dGhpcy5za2VsZXRvbixvPXRoaXMuZ2VvbWV0cnk7aWZ0LmZyb21CdWZmZXJBdHRyaWJ1dGUoby5hdHRyaWJ1dGVzLnNraW5JbmRleCx0KSxhZnQuZnJvbUJ1ZmZlckF0dHJpYnV0ZShvLmF0dHJpYnV0ZXMuc2tpbldlaWdodCx0KSxvZnQuZnJvbUJ1ZmZlckF0dHJpYnV0ZShvLmF0dHJpYnV0ZXMucG9zaXRpb24sdCkuYXBwbHlNYXRyaXg0KHRoaXMuYmluZE1hdHJpeCksZS5zZXQoMCwwLDApO2ZvcihsZXQgdD0wO3Q8NDt0Kyspe2NvbnN0IG89YWZ0LmdldENvbXBvbmVudCh0KTtpZigwIT09byl7Y29uc3QgaT1pZnQuZ2V0Q29tcG9uZW50KHQpO3NmdC5tdWx0aXBseU1hdHJpY2VzKG4uYm9uZXNbaV0ubWF0cml4V29ybGQsbi5ib25lSW52ZXJzZXNbaV0pLGUuYWRkU2NhbGVkVmVjdG9yKHJmdC5jb3B5KG9mdCkuYXBwbHlNYXRyaXg0KHNmdCksbyl9fXJldHVybiBlLmFwcGx5TWF0cml4NCh0aGlzLmJpbmRNYXRyaXhJbnZlcnNlKX19bGZ0LnByb3RvdHlwZS5pc1NraW5uZWRNZXNoPSEwOyhjbGFzcyBleHRlbmRzIFNsdHtjb25zdHJ1Y3Rvcigpe3N1cGVyKCksdGhpcy50eXBlPSJCb25lIn19KS5wcm90b3R5cGUuaXNCb25lPSEwOyhjbGFzcyBleHRlbmRzIENzdHtjb25zdHJ1Y3Rvcih0PW51bGwsZT0xLG49MSxvLGksYSxyLHMsbD0xMDAzLGM9MTAwMyxkLHApe3N1cGVyKG51bGwsYSxyLHMsbCxjLG8saSxkLHApLHRoaXMuaW1hZ2U9e2RhdGE6dCx3aWR0aDplLGhlaWdodDpufSx0aGlzLm1hZ0ZpbHRlcj1sLHRoaXMubWluRmlsdGVyPWMsdGhpcy5nZW5lcmF0ZU1pcG1hcHM9ITEsdGhpcy5mbGlwWT0hMSx0aGlzLnVucGFja0FsaWdubWVudD0xLHRoaXMubmVlZHNVcGRhdGU9ITB9fSkucHJvdG90eXBlLmlzRGF0YVRleHR1cmU9ITA7Y29uc3QgY2Z0PW5ldyBvbHQsZGZ0PW5ldyBvbHQscGZ0PVtdLG1mdD1uZXcgU2N0OyhjbGFzcyBleHRlbmRzIFNjdHtjb25zdHJ1Y3Rvcih0LGUsbil7c3VwZXIodCxlKSx0aGlzLmluc3RhbmNlTWF0cml4PW5ldyBRbHQobmV3IEZsb2F0MzJBcnJheSgxNipuKSwxNiksdGhpcy5pbnN0YW5jZUNvbG9yPW51bGwsdGhpcy5jb3VudD1uLHRoaXMuZnJ1c3R1bUN1bGxlZD0hMX1jb3B5KHQpe3JldHVybiBzdXBlci5jb3B5KHQpLHRoaXMuaW5zdGFuY2VNYXRyaXguY29weSh0Lmluc3RhbmNlTWF0cml4KSxudWxsIT09dC5pbnN0YW5jZUNvbG9yJiYodGhpcy5pbnN0YW5jZUNvbG9yPXQuaW5zdGFuY2VDb2xvci5jbG9uZSgpKSx0aGlzLmNvdW50PXQuY291bnQsdGhpc31nZXRDb2xvckF0KHQsZSl7ZS5mcm9tQXJyYXkodGhpcy5pbnN0YW5jZUNvbG9yLmFycmF5LDMqdCl9Z2V0TWF0cml4QXQodCxlKXtlLmZyb21BcnJheSh0aGlzLmluc3RhbmNlTWF0cml4LmFycmF5LDE2KnQpfXJheWNhc3QodCxlKXtjb25zdCBuPXRoaXMubWF0cml4V29ybGQsbz10aGlzLmNvdW50O2lmKG1mdC5nZW9tZXRyeT10aGlzLmdlb21ldHJ5LG1mdC5tYXRlcmlhbD10aGlzLm1hdGVyaWFsLHZvaWQgMCE9PW1mdC5tYXRlcmlhbClmb3IobGV0IGk9MDtpPG87aSsrKXt0aGlzLmdldE1hdHJpeEF0KGksY2Z0KSxkZnQubXVsdGlwbHlNYXRyaWNlcyhuLGNmdCksbWZ0Lm1hdHJpeFdvcmxkPWRmdCxtZnQucmF5Y2FzdCh0LHBmdCk7Zm9yKGxldCB0PTAsbj1wZnQubGVuZ3RoO3Q8bjt0Kyspe2NvbnN0IG49cGZ0W3RdO24uaW5zdGFuY2VJZD1pLG4ub2JqZWN0PXRoaXMsZS5wdXNoKG4pfXBmdC5sZW5ndGg9MH19c2V0Q29sb3JBdCh0LGUpe251bGw9PT10aGlzLmluc3RhbmNlQ29sb3ImJih0aGlzLmluc3RhbmNlQ29sb3I9bmV3IFFsdChuZXcgRmxvYXQzMkFycmF5KDMqdGhpcy5pbnN0YW5jZU1hdHJpeC5jb3VudCksMykpLGUudG9BcnJheSh0aGlzLmluc3RhbmNlQ29sb3IuYXJyYXksMyp0KX1zZXRNYXRyaXhBdCh0LGUpe2UudG9BcnJheSh0aGlzLmluc3RhbmNlTWF0cml4LmFycmF5LDE2KnQpfXVwZGF0ZU1vcnBoVGFyZ2V0cygpe31kaXNwb3NlKCl7dGhpcy5kaXNwYXRjaEV2ZW50KHt0eXBlOiJkaXNwb3NlIn0pfX0pLnByb3RvdHlwZS5pc0luc3RhbmNlZE1lc2g9ITA7Y2xhc3MgZmZ0IGV4dGVuZHMgVmx0e2NvbnN0cnVjdG9yKHQpe3N1cGVyKCksdGhpcy50eXBlPSJMaW5lQmFzaWNNYXRlcmlhbCIsdGhpcy5jb2xvcj1uZXcgWmx0KDE2Nzc3MjE1KSx0aGlzLmxpbmV3aWR0aD0xLHRoaXMubGluZWNhcD0icm91bmQiLHRoaXMubGluZWpvaW49InJvdW5kIix0aGlzLnNldFZhbHVlcyh0KX1jb3B5KHQpe3JldHVybiBzdXBlci5jb3B5KHQpLHRoaXMuY29sb3IuY29weSh0LmNvbG9yKSx0aGlzLmxpbmV3aWR0aD10LmxpbmV3aWR0aCx0aGlzLmxpbmVjYXA9dC5saW5lY2FwLHRoaXMubGluZWpvaW49dC5saW5lam9pbix0aGlzfX1mZnQucHJvdG90eXBlLmlzTGluZUJhc2ljTWF0ZXJpYWw9ITA7Y29uc3QgdWZ0PW5ldyB3c3QsZ2Z0PW5ldyB3c3QsaGZ0PW5ldyBvbHQsYmZ0PW5ldyBubHQseWZ0PW5ldyBac3Q7Y2xhc3MgX2Z0IGV4dGVuZHMgU2x0e2NvbnN0cnVjdG9yKHQ9bmV3IGRjdCxlPW5ldyBmZnQpe3N1cGVyKCksdGhpcy50eXBlPSJMaW5lIix0aGlzLmdlb21ldHJ5PXQsdGhpcy5tYXRlcmlhbD1lLHRoaXMudXBkYXRlTW9ycGhUYXJnZXRzKCl9Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLm1hdGVyaWFsPXQubWF0ZXJpYWwsdGhpcy5nZW9tZXRyeT10Lmdlb21ldHJ5LHRoaXN9Y29tcHV0ZUxpbmVEaXN0YW5jZXMoKXtjb25zdCB0PXRoaXMuZ2VvbWV0cnk7aWYodC5pc0J1ZmZlckdlb21ldHJ5KWlmKG51bGw9PT10LmluZGV4KXtjb25zdCBlPXQuYXR0cmlidXRlcy5wb3NpdGlvbixuPVswXTtmb3IobGV0IHQ9MSxvPWUuY291bnQ7dDxvO3QrKyl1ZnQuZnJvbUJ1ZmZlckF0dHJpYnV0ZShlLHQtMSksZ2Z0LmZyb21CdWZmZXJBdHRyaWJ1dGUoZSx0KSxuW3RdPW5bdC0xXSxuW3RdKz11ZnQuZGlzdGFuY2VUbyhnZnQpO3Quc2V0QXR0cmlidXRlKCJsaW5lRGlzdGFuY2UiLG5ldyBlY3QobiwxKSl9ZWxzZSBjb25zb2xlLndhcm4oIlRIUkVFLkxpbmUuY29tcHV0ZUxpbmVEaXN0YW5jZXMoKTogQ29tcHV0YXRpb24gb25seSBwb3NzaWJsZSB3aXRoIG5vbi1pbmRleGVkIEJ1ZmZlckdlb21ldHJ5LiIpO2Vsc2UgdC5pc0dlb21ldHJ5JiZjb25zb2xlLmVycm9yKCJUSFJFRS5MaW5lLmNvbXB1dGVMaW5lRGlzdGFuY2VzKCkgbm8gbG9uZ2VyIHN1cHBvcnRzIFRIUkVFLkdlb21ldHJ5LiBVc2UgVEhSRUUuQnVmZmVyR2VvbWV0cnkgaW5zdGVhZC4iKTtyZXR1cm4gdGhpc31yYXljYXN0KHQsZSl7Y29uc3Qgbj10aGlzLmdlb21ldHJ5LG89dGhpcy5tYXRyaXhXb3JsZCxpPXQucGFyYW1zLkxpbmUudGhyZXNob2xkLGE9bi5kcmF3UmFuZ2U7aWYobnVsbD09PW4uYm91bmRpbmdTcGhlcmUmJm4uY29tcHV0ZUJvdW5kaW5nU3BoZXJlKCkseWZ0LmNvcHkobi5ib3VuZGluZ1NwaGVyZSkseWZ0LmFwcGx5TWF0cml4NChvKSx5ZnQucmFkaXVzKz1pLCExPT09dC5yYXkuaW50ZXJzZWN0c1NwaGVyZSh5ZnQpKXJldHVybjtoZnQuY29weShvKS5pbnZlcnQoKSxiZnQuY29weSh0LnJheSkuYXBwbHlNYXRyaXg0KGhmdCk7Y29uc3Qgcj1pLygodGhpcy5zY2FsZS54K3RoaXMuc2NhbGUueSt0aGlzLnNjYWxlLnopLzMpLHM9cipyLGw9bmV3IHdzdCxjPW5ldyB3c3QsZD1uZXcgd3N0LHA9bmV3IHdzdCxtPXRoaXMuaXNMaW5lU2VnbWVudHM/MjoxO2lmKG4uaXNCdWZmZXJHZW9tZXRyeSl7Y29uc3Qgbz1uLmluZGV4LGk9bi5hdHRyaWJ1dGVzLnBvc2l0aW9uO2lmKG51bGwhPT1vKXtmb3IobGV0IG49TWF0aC5tYXgoMCxhLnN0YXJ0KSxyPU1hdGgubWluKG8uY291bnQsYS5zdGFydCthLmNvdW50KS0xO248cjtuKz1tKXtjb25zdCBhPW8uZ2V0WChuKSxyPW8uZ2V0WChuKzEpO2wuZnJvbUJ1ZmZlckF0dHJpYnV0ZShpLGEpLGMuZnJvbUJ1ZmZlckF0dHJpYnV0ZShpLHIpO2lmKGJmdC5kaXN0YW5jZVNxVG9TZWdtZW50KGwsYyxwLGQpPnMpY29udGludWU7cC5hcHBseU1hdHJpeDQodGhpcy5tYXRyaXhXb3JsZCk7Y29uc3QgbT10LnJheS5vcmlnaW4uZGlzdGFuY2VUbyhwKTttPHQubmVhcnx8bT50LmZhcnx8ZS5wdXNoKHtkaXN0YW5jZTptLHBvaW50OmQuY2xvbmUoKS5hcHBseU1hdHJpeDQodGhpcy5tYXRyaXhXb3JsZCksaW5kZXg6bixmYWNlOm51bGwsZmFjZUluZGV4Om51bGwsb2JqZWN0OnRoaXN9KX19ZWxzZXtmb3IobGV0IG49TWF0aC5tYXgoMCxhLnN0YXJ0KSxvPU1hdGgubWluKGkuY291bnQsYS5zdGFydCthLmNvdW50KS0xO248bztuKz1tKXtsLmZyb21CdWZmZXJBdHRyaWJ1dGUoaSxuKSxjLmZyb21CdWZmZXJBdHRyaWJ1dGUoaSxuKzEpO2lmKGJmdC5kaXN0YW5jZVNxVG9TZWdtZW50KGwsYyxwLGQpPnMpY29udGludWU7cC5hcHBseU1hdHJpeDQodGhpcy5tYXRyaXhXb3JsZCk7Y29uc3Qgbz10LnJheS5vcmlnaW4uZGlzdGFuY2VUbyhwKTtvPHQubmVhcnx8bz50LmZhcnx8ZS5wdXNoKHtkaXN0YW5jZTpvLHBvaW50OmQuY2xvbmUoKS5hcHBseU1hdHJpeDQodGhpcy5tYXRyaXhXb3JsZCksaW5kZXg6bixmYWNlOm51bGwsZmFjZUluZGV4Om51bGwsb2JqZWN0OnRoaXN9KX19fWVsc2Ugbi5pc0dlb21ldHJ5JiZjb25zb2xlLmVycm9yKCJUSFJFRS5MaW5lLnJheWNhc3QoKSBubyBsb25nZXIgc3VwcG9ydHMgVEhSRUUuR2VvbWV0cnkuIFVzZSBUSFJFRS5CdWZmZXJHZW9tZXRyeSBpbnN0ZWFkLiIpfXVwZGF0ZU1vcnBoVGFyZ2V0cygpe2NvbnN0IHQ9dGhpcy5nZW9tZXRyeTtpZih0LmlzQnVmZmVyR2VvbWV0cnkpe2NvbnN0IGU9dC5tb3JwaEF0dHJpYnV0ZXMsbj1PYmplY3Qua2V5cyhlKTtpZihuLmxlbmd0aD4wKXtjb25zdCB0PWVbblswXV07aWYodm9pZCAwIT09dCl7dGhpcy5tb3JwaFRhcmdldEluZmx1ZW5jZXM9W10sdGhpcy5tb3JwaFRhcmdldERpY3Rpb25hcnk9e307Zm9yKGxldCBlPTAsbj10Lmxlbmd0aDtlPG47ZSsrKXtjb25zdCBuPXRbZV0ubmFtZXx8U3RyaW5nKGUpO3RoaXMubW9ycGhUYXJnZXRJbmZsdWVuY2VzLnB1c2goMCksdGhpcy5tb3JwaFRhcmdldERpY3Rpb25hcnlbbl09ZX19fX1lbHNle2NvbnN0IGU9dC5tb3JwaFRhcmdldHM7dm9pZCAwIT09ZSYmZS5sZW5ndGg+MCYmY29uc29sZS5lcnJvcigiVEhSRUUuTGluZS51cGRhdGVNb3JwaFRhcmdldHMoKSBkb2VzIG5vdCBzdXBwb3J0IFRIUkVFLkdlb21ldHJ5LiBVc2UgVEhSRUUuQnVmZmVyR2VvbWV0cnkgaW5zdGVhZC4iKX19fV9mdC5wcm90b3R5cGUuaXNMaW5lPSEwO2NvbnN0IENmdD1uZXcgd3N0LE1mdD1uZXcgd3N0O2NsYXNzIHZmdCBleHRlbmRzIF9mdHtjb25zdHJ1Y3Rvcih0LGUpe3N1cGVyKHQsZSksdGhpcy50eXBlPSJMaW5lU2VnbWVudHMifWNvbXB1dGVMaW5lRGlzdGFuY2VzKCl7Y29uc3QgdD10aGlzLmdlb21ldHJ5O2lmKHQuaXNCdWZmZXJHZW9tZXRyeSlpZihudWxsPT09dC5pbmRleCl7Y29uc3QgZT10LmF0dHJpYnV0ZXMucG9zaXRpb24sbj1bXTtmb3IobGV0IHQ9MCxvPWUuY291bnQ7dDxvO3QrPTIpQ2Z0LmZyb21CdWZmZXJBdHRyaWJ1dGUoZSx0KSxNZnQuZnJvbUJ1ZmZlckF0dHJpYnV0ZShlLHQrMSksblt0XT0wPT09dD8wOm5bdC0xXSxuW3QrMV09blt0XStDZnQuZGlzdGFuY2VUbyhNZnQpO3Quc2V0QXR0cmlidXRlKCJsaW5lRGlzdGFuY2UiLG5ldyBlY3QobiwxKSl9ZWxzZSBjb25zb2xlLndhcm4oIlRIUkVFLkxpbmVTZWdtZW50cy5jb21wdXRlTGluZURpc3RhbmNlcygpOiBDb21wdXRhdGlvbiBvbmx5IHBvc3NpYmxlIHdpdGggbm9uLWluZGV4ZWQgQnVmZmVyR2VvbWV0cnkuIik7ZWxzZSB0LmlzR2VvbWV0cnkmJmNvbnNvbGUuZXJyb3IoIlRIUkVFLkxpbmVTZWdtZW50cy5jb21wdXRlTGluZURpc3RhbmNlcygpIG5vIGxvbmdlciBzdXBwb3J0cyBUSFJFRS5HZW9tZXRyeS4gVXNlIFRIUkVFLkJ1ZmZlckdlb21ldHJ5IGluc3RlYWQuIik7cmV0dXJuIHRoaXN9fXZmdC5wcm90b3R5cGUuaXNMaW5lU2VnbWVudHM9ITA7KGNsYXNzIGV4dGVuZHMgX2Z0e2NvbnN0cnVjdG9yKHQsZSl7c3VwZXIodCxlKSx0aGlzLnR5cGU9IkxpbmVMb29wIn19KS5wcm90b3R5cGUuaXNMaW5lTG9vcD0hMDtjbGFzcyB4ZnQgZXh0ZW5kcyBWbHR7Y29uc3RydWN0b3IodCl7c3VwZXIoKSx0aGlzLnR5cGU9IlBvaW50c01hdGVyaWFsIix0aGlzLmNvbG9yPW5ldyBabHQoMTY3NzcyMTUpLHRoaXMubWFwPW51bGwsdGhpcy5hbHBoYU1hcD1udWxsLHRoaXMuc2l6ZT0xLHRoaXMuc2l6ZUF0dGVudWF0aW9uPSEwLHRoaXMuc2V0VmFsdWVzKHQpfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5jb2xvci5jb3B5KHQuY29sb3IpLHRoaXMubWFwPXQubWFwLHRoaXMuYWxwaGFNYXA9dC5hbHBoYU1hcCx0aGlzLnNpemU9dC5zaXplLHRoaXMuc2l6ZUF0dGVudWF0aW9uPXQuc2l6ZUF0dGVudWF0aW9uLHRoaXN9fXhmdC5wcm90b3R5cGUuaXNQb2ludHNNYXRlcmlhbD0hMDtjb25zdCBPZnQ9bmV3IG9sdCxQZnQ9bmV3IG5sdCx3ZnQ9bmV3IFpzdCxrZnQ9bmV3IHdzdDtmdW5jdGlvbiBTZnQodCxlLG4sbyxpLGEscil7Y29uc3Qgcz1QZnQuZGlzdGFuY2VTcVRvUG9pbnQodCk7aWYoczxuKXtjb25zdCBuPW5ldyB3c3Q7UGZ0LmNsb3Nlc3RQb2ludFRvUG9pbnQodCxuKSxuLmFwcGx5TWF0cml4NChvKTtjb25zdCBsPWkucmF5Lm9yaWdpbi5kaXN0YW5jZVRvKG4pO2lmKGw8aS5uZWFyfHxsPmkuZmFyKXJldHVybjthLnB1c2goe2Rpc3RhbmNlOmwsZGlzdGFuY2VUb1JheTpNYXRoLnNxcnQocykscG9pbnQ6bixpbmRleDplLGZhY2U6bnVsbCxvYmplY3Q6cn0pfX0oY2xhc3MgZXh0ZW5kcyBTbHR7Y29uc3RydWN0b3IodD1uZXcgZGN0LGU9bmV3IHhmdCl7c3VwZXIoKSx0aGlzLnR5cGU9IlBvaW50cyIsdGhpcy5nZW9tZXRyeT10LHRoaXMubWF0ZXJpYWw9ZSx0aGlzLnVwZGF0ZU1vcnBoVGFyZ2V0cygpfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5tYXRlcmlhbD10Lm1hdGVyaWFsLHRoaXMuZ2VvbWV0cnk9dC5nZW9tZXRyeSx0aGlzfXJheWNhc3QodCxlKXtjb25zdCBuPXRoaXMuZ2VvbWV0cnksbz10aGlzLm1hdHJpeFdvcmxkLGk9dC5wYXJhbXMuUG9pbnRzLnRocmVzaG9sZCxhPW4uZHJhd1JhbmdlO2lmKG51bGw9PT1uLmJvdW5kaW5nU3BoZXJlJiZuLmNvbXB1dGVCb3VuZGluZ1NwaGVyZSgpLHdmdC5jb3B5KG4uYm91bmRpbmdTcGhlcmUpLHdmdC5hcHBseU1hdHJpeDQobyksd2Z0LnJhZGl1cys9aSwhMT09PXQucmF5LmludGVyc2VjdHNTcGhlcmUod2Z0KSlyZXR1cm47T2Z0LmNvcHkobykuaW52ZXJ0KCksUGZ0LmNvcHkodC5yYXkpLmFwcGx5TWF0cml4NChPZnQpO2NvbnN0IHI9aS8oKHRoaXMuc2NhbGUueCt0aGlzLnNjYWxlLnkrdGhpcy5zY2FsZS56KS8zKSxzPXIqcjtpZihuLmlzQnVmZmVyR2VvbWV0cnkpe2NvbnN0IGk9bi5pbmRleCxyPW4uYXR0cmlidXRlcy5wb3NpdGlvbjtpZihudWxsIT09aSl7Zm9yKGxldCBuPU1hdGgubWF4KDAsYS5zdGFydCksbD1NYXRoLm1pbihpLmNvdW50LGEuc3RhcnQrYS5jb3VudCk7bjxsO24rKyl7Y29uc3QgYT1pLmdldFgobik7a2Z0LmZyb21CdWZmZXJBdHRyaWJ1dGUocixhKSxTZnQoa2Z0LGEscyxvLHQsZSx0aGlzKX19ZWxzZXtmb3IobGV0IG49TWF0aC5tYXgoMCxhLnN0YXJ0KSxpPU1hdGgubWluKHIuY291bnQsYS5zdGFydCthLmNvdW50KTtuPGk7bisrKWtmdC5mcm9tQnVmZmVyQXR0cmlidXRlKHIsbiksU2Z0KGtmdCxuLHMsbyx0LGUsdGhpcyl9fWVsc2UgY29uc29sZS5lcnJvcigiVEhSRUUuUG9pbnRzLnJheWNhc3QoKSBubyBsb25nZXIgc3VwcG9ydHMgVEhSRUUuR2VvbWV0cnkuIFVzZSBUSFJFRS5CdWZmZXJHZW9tZXRyeSBpbnN0ZWFkLiIpfXVwZGF0ZU1vcnBoVGFyZ2V0cygpe2NvbnN0IHQ9dGhpcy5nZW9tZXRyeTtpZih0LmlzQnVmZmVyR2VvbWV0cnkpe2NvbnN0IGU9dC5tb3JwaEF0dHJpYnV0ZXMsbj1PYmplY3Qua2V5cyhlKTtpZihuLmxlbmd0aD4wKXtjb25zdCB0PWVbblswXV07aWYodm9pZCAwIT09dCl7dGhpcy5tb3JwaFRhcmdldEluZmx1ZW5jZXM9W10sdGhpcy5tb3JwaFRhcmdldERpY3Rpb25hcnk9e307Zm9yKGxldCBlPTAsbj10Lmxlbmd0aDtlPG47ZSsrKXtjb25zdCBuPXRbZV0ubmFtZXx8U3RyaW5nKGUpO3RoaXMubW9ycGhUYXJnZXRJbmZsdWVuY2VzLnB1c2goMCksdGhpcy5tb3JwaFRhcmdldERpY3Rpb25hcnlbbl09ZX19fX1lbHNle2NvbnN0IGU9dC5tb3JwaFRhcmdldHM7dm9pZCAwIT09ZSYmZS5sZW5ndGg+MCYmY29uc29sZS5lcnJvcigiVEhSRUUuUG9pbnRzLnVwZGF0ZU1vcnBoVGFyZ2V0cygpIGRvZXMgbm90IHN1cHBvcnQgVEhSRUUuR2VvbWV0cnkuIFVzZSBUSFJFRS5CdWZmZXJHZW9tZXRyeSBpbnN0ZWFkLiIpfX19KS5wcm90b3R5cGUuaXNQb2ludHM9ITA7KGNsYXNzIGV4dGVuZHMgQ3N0e2NvbnN0cnVjdG9yKHQsZSxuLG8saSxhLHIscyxsKXtzdXBlcih0LGUsbixvLGksYSxyLHMsbCksdGhpcy5mb3JtYXQ9dm9pZCAwIT09cj9yOlZydCx0aGlzLm1pbkZpbHRlcj12b2lkIDAhPT1hP2E6VHJ0LHRoaXMubWFnRmlsdGVyPXZvaWQgMCE9PWk/aTpUcnQsdGhpcy5nZW5lcmF0ZU1pcG1hcHM9ITE7Y29uc3QgYz10aGlzOyJyZXF1ZXN0VmlkZW9GcmFtZUNhbGxiYWNrImluIHQmJnQucmVxdWVzdFZpZGVvRnJhbWVDYWxsYmFjaygoZnVuY3Rpb24gZSgpe2MubmVlZHNVcGRhdGU9ITAsdC5yZXF1ZXN0VmlkZW9GcmFtZUNhbGxiYWNrKGUpfSkpfWNsb25lKCl7cmV0dXJuIG5ldyB0aGlzLmNvbnN0cnVjdG9yKHRoaXMuaW1hZ2UpLmNvcHkodGhpcyl9dXBkYXRlKCl7Y29uc3QgdD10aGlzLmltYWdlOyExPT09InJlcXVlc3RWaWRlb0ZyYW1lQ2FsbGJhY2siaW4gdCYmdC5yZWFkeVN0YXRlPj10LkhBVkVfQ1VSUkVOVF9EQVRBJiYodGhpcy5uZWVkc1VwZGF0ZT0hMCl9fSkucHJvdG90eXBlLmlzVmlkZW9UZXh0dXJlPSEwOyhjbGFzcyBleHRlbmRzIENzdHtjb25zdHJ1Y3Rvcih0LGUsbixvLGksYSxyLHMsbCxjLGQscCl7c3VwZXIobnVsbCxhLHIscyxsLGMsbyxpLGQscCksdGhpcy5pbWFnZT17d2lkdGg6ZSxoZWlnaHQ6bn0sdGhpcy5taXBtYXBzPXQsdGhpcy5mbGlwWT0hMSx0aGlzLmdlbmVyYXRlTWlwbWFwcz0hMX19KS5wcm90b3R5cGUuaXNDb21wcmVzc2VkVGV4dHVyZT0hMDsoY2xhc3MgZXh0ZW5kcyBDc3R7Y29uc3RydWN0b3IodCxlLG4sbyxpLGEscixzLGwpe3N1cGVyKHQsZSxuLG8saSxhLHIscyxsKSx0aGlzLm5lZWRzVXBkYXRlPSEwfX0pLnByb3RvdHlwZS5pc0NhbnZhc1RleHR1cmU9ITA7KGNsYXNzIGV4dGVuZHMgQ3N0e2NvbnN0cnVjdG9yKHQsZSxuLG8saSxhLHIscyxsLGMpe2lmKChjPXZvaWQgMCE9PWM/YzpVcnQpIT09VXJ0JiZjIT09V3J0KXRocm93IG5ldyBFcnJvcigiRGVwdGhUZXh0dXJlIGZvcm1hdCBtdXN0IGJlIGVpdGhlciBUSFJFRS5EZXB0aEZvcm1hdCBvciBUSFJFRS5EZXB0aFN0ZW5jaWxGb3JtYXQiKTt2b2lkIDA9PT1uJiZjPT09VXJ0JiYobj1JcnQpLHZvaWQgMD09PW4mJmM9PT1XcnQmJihuPUJydCksc3VwZXIobnVsbCxvLGksYSxyLHMsYyxuLGwpLHRoaXMuaW1hZ2U9e3dpZHRoOnQsaGVpZ2h0OmV9LHRoaXMubWFnRmlsdGVyPXZvaWQgMCE9PXI/cjpBcnQsdGhpcy5taW5GaWx0ZXI9dm9pZCAwIT09cz9zOkFydCx0aGlzLmZsaXBZPSExLHRoaXMuZ2VuZXJhdGVNaXBtYXBzPSExfX0pLnByb3RvdHlwZS5pc0RlcHRoVGV4dHVyZT0hMDtjbGFzcyBEZnQgZXh0ZW5kcyBkY3R7Y29uc3RydWN0b3IodD0xLGU9OCxuPTAsbz0yKk1hdGguUEkpe3N1cGVyKCksdGhpcy50eXBlPSJDaXJjbGVHZW9tZXRyeSIsdGhpcy5wYXJhbWV0ZXJzPXtyYWRpdXM6dCxzZWdtZW50czplLHRoZXRhU3RhcnQ6bix0aGV0YUxlbmd0aDpvfSxlPU1hdGgubWF4KDMsZSk7Y29uc3QgaT1bXSxhPVtdLHI9W10scz1bXSxsPW5ldyB3c3QsYz1uZXcgZ3N0O2EucHVzaCgwLDAsMCksci5wdXNoKDAsMCwxKSxzLnB1c2goLjUsLjUpO2ZvcihsZXQgaT0wLGQ9MztpPD1lO2krKyxkKz0zKXtjb25zdCBwPW4raS9lKm87bC54PXQqTWF0aC5jb3MocCksbC55PXQqTWF0aC5zaW4ocCksYS5wdXNoKGwueCxsLnksbC56KSxyLnB1c2goMCwwLDEpLGMueD0oYVtkXS90KzEpLzIsYy55PShhW2QrMV0vdCsxKS8yLHMucHVzaChjLngsYy55KX1mb3IobGV0IHQ9MTt0PD1lO3QrKylpLnB1c2godCx0KzEsMCk7dGhpcy5zZXRJbmRleChpKSx0aGlzLnNldEF0dHJpYnV0ZSgicG9zaXRpb24iLG5ldyBlY3QoYSwzKSksdGhpcy5zZXRBdHRyaWJ1dGUoIm5vcm1hbCIsbmV3IGVjdChyLDMpKSx0aGlzLnNldEF0dHJpYnV0ZSgidXYiLG5ldyBlY3QocywyKSl9c3RhdGljIGZyb21KU09OKHQpe3JldHVybiBuZXcgRGZ0KHQucmFkaXVzLHQuc2VnbWVudHMsdC50aGV0YVN0YXJ0LHQudGhldGFMZW5ndGgpfX1uZXcgd3N0LG5ldyB3c3QsbmV3IHdzdCxuZXcgTGx0O2NsYXNzIFJmdHtjb25zdHJ1Y3Rvcigpe3RoaXMudHlwZT0iQ3VydmUiLHRoaXMuYXJjTGVuZ3RoRGl2aXNpb25zPTIwMH1nZXRQb2ludCgpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLkN1cnZlOiAuZ2V0UG9pbnQoKSBub3QgaW1wbGVtZW50ZWQuIiksbnVsbH1nZXRQb2ludEF0KHQsZSl7Y29uc3Qgbj10aGlzLmdldFV0b1RtYXBwaW5nKHQpO3JldHVybiB0aGlzLmdldFBvaW50KG4sZSl9Z2V0UG9pbnRzKHQ9NSl7Y29uc3QgZT1bXTtmb3IobGV0IG49MDtuPD10O24rKyllLnB1c2godGhpcy5nZXRQb2ludChuL3QpKTtyZXR1cm4gZX1nZXRTcGFjZWRQb2ludHModD01KXtjb25zdCBlPVtdO2ZvcihsZXQgbj0wO248PXQ7bisrKWUucHVzaCh0aGlzLmdldFBvaW50QXQobi90KSk7cmV0dXJuIGV9Z2V0TGVuZ3RoKCl7Y29uc3QgdD10aGlzLmdldExlbmd0aHMoKTtyZXR1cm4gdFt0Lmxlbmd0aC0xXX1nZXRMZW5ndGhzKHQ9dGhpcy5hcmNMZW5ndGhEaXZpc2lvbnMpe2lmKHRoaXMuY2FjaGVBcmNMZW5ndGhzJiZ0aGlzLmNhY2hlQXJjTGVuZ3Rocy5sZW5ndGg9PT10KzEmJiF0aGlzLm5lZWRzVXBkYXRlKXJldHVybiB0aGlzLmNhY2hlQXJjTGVuZ3Roczt0aGlzLm5lZWRzVXBkYXRlPSExO2NvbnN0IGU9W107bGV0IG4sbz10aGlzLmdldFBvaW50KDApLGk9MDtlLnB1c2goMCk7Zm9yKGxldCBhPTE7YTw9dDthKyspbj10aGlzLmdldFBvaW50KGEvdCksaSs9bi5kaXN0YW5jZVRvKG8pLGUucHVzaChpKSxvPW47cmV0dXJuIHRoaXMuY2FjaGVBcmNMZW5ndGhzPWUsZX11cGRhdGVBcmNMZW5ndGhzKCl7dGhpcy5uZWVkc1VwZGF0ZT0hMCx0aGlzLmdldExlbmd0aHMoKX1nZXRVdG9UbWFwcGluZyh0LGUpe2NvbnN0IG49dGhpcy5nZXRMZW5ndGhzKCk7bGV0IG89MDtjb25zdCBpPW4ubGVuZ3RoO2xldCBhO2E9ZXx8dCpuW2ktMV07bGV0IHIscz0wLGw9aS0xO2Zvcig7czw9bDspaWYobz1NYXRoLmZsb29yKHMrKGwtcykvMikscj1uW29dLWEscjwwKXM9bysxO2Vsc2V7aWYoIShyPjApKXtsPW87YnJlYWt9bD1vLTF9aWYobz1sLG5bb109PT1hKXJldHVybiBvLyhpLTEpO2NvbnN0IGM9bltvXTtyZXR1cm4obysoYS1jKS8obltvKzFdLWMpKS8oaS0xKX1nZXRUYW5nZW50KHQsZSl7Y29uc3Qgbj0xZS00O2xldCBvPXQtbixpPXQrbjtvPDAmJihvPTApLGk+MSYmKGk9MSk7Y29uc3QgYT10aGlzLmdldFBvaW50KG8pLHI9dGhpcy5nZXRQb2ludChpKSxzPWV8fChhLmlzVmVjdG9yMj9uZXcgZ3N0Om5ldyB3c3QpO3JldHVybiBzLmNvcHkocikuc3ViKGEpLm5vcm1hbGl6ZSgpLHN9Z2V0VGFuZ2VudEF0KHQsZSl7Y29uc3Qgbj10aGlzLmdldFV0b1RtYXBwaW5nKHQpO3JldHVybiB0aGlzLmdldFRhbmdlbnQobixlKX1jb21wdXRlRnJlbmV0RnJhbWVzKHQsZSl7Y29uc3Qgbj1uZXcgd3N0LG89W10saT1bXSxhPVtdLHI9bmV3IHdzdCxzPW5ldyBvbHQ7Zm9yKGxldCBlPTA7ZTw9dDtlKyspe29bZV09dGhpcy5nZXRUYW5nZW50QXQoZS90LG5ldyB3c3QpLG9bZV0ubm9ybWFsaXplKCl9aVswXT1uZXcgd3N0LGFbMF09bmV3IHdzdDtsZXQgbD1OdW1iZXIuTUFYX1ZBTFVFO2NvbnN0IGM9TWF0aC5hYnMob1swXS54KSxkPU1hdGguYWJzKG9bMF0ueSkscD1NYXRoLmFicyhvWzBdLnopO2M8PWwmJihsPWMsbi5zZXQoMSwwLDApKSxkPD1sJiYobD1kLG4uc2V0KDAsMSwwKSkscDw9bCYmbi5zZXQoMCwwLDEpLHIuY3Jvc3NWZWN0b3JzKG9bMF0sbikubm9ybWFsaXplKCksaVswXS5jcm9zc1ZlY3RvcnMob1swXSxyKSxhWzBdLmNyb3NzVmVjdG9ycyhvWzBdLGlbMF0pO2ZvcihsZXQgZT0xO2U8PXQ7ZSsrKXtpZihpW2VdPWlbZS0xXS5jbG9uZSgpLGFbZV09YVtlLTFdLmNsb25lKCksci5jcm9zc1ZlY3RvcnMob1tlLTFdLG9bZV0pLHIubGVuZ3RoKCk+TnVtYmVyLkVQU0lMT04pe3Iubm9ybWFsaXplKCk7Y29uc3QgdD1NYXRoLmFjb3MocHN0KG9bZS0xXS5kb3Qob1tlXSksLTEsMSkpO2lbZV0uYXBwbHlNYXRyaXg0KHMubWFrZVJvdGF0aW9uQXhpcyhyLHQpKX1hW2VdLmNyb3NzVmVjdG9ycyhvW2VdLGlbZV0pfWlmKCEwPT09ZSl7bGV0IGU9TWF0aC5hY29zKHBzdChpWzBdLmRvdChpW3RdKSwtMSwxKSk7ZS89dCxvWzBdLmRvdChyLmNyb3NzVmVjdG9ycyhpWzBdLGlbdF0pKT4wJiYoZT0tZSk7Zm9yKGxldCBuPTE7bjw9dDtuKyspaVtuXS5hcHBseU1hdHJpeDQocy5tYWtlUm90YXRpb25BeGlzKG9bbl0sZSpuKSksYVtuXS5jcm9zc1ZlY3RvcnMob1tuXSxpW25dKX1yZXR1cm57dGFuZ2VudHM6byxub3JtYWxzOmksYmlub3JtYWxzOmF9fWNsb25lKCl7cmV0dXJuKG5ldyB0aGlzLmNvbnN0cnVjdG9yKS5jb3B5KHRoaXMpfWNvcHkodCl7cmV0dXJuIHRoaXMuYXJjTGVuZ3RoRGl2aXNpb25zPXQuYXJjTGVuZ3RoRGl2aXNpb25zLHRoaXN9dG9KU09OKCl7Y29uc3QgdD17bWV0YWRhdGE6e3ZlcnNpb246NC41LHR5cGU6IkN1cnZlIixnZW5lcmF0b3I6IkN1cnZlLnRvSlNPTiJ9fTtyZXR1cm4gdC5hcmNMZW5ndGhEaXZpc2lvbnM9dGhpcy5hcmNMZW5ndGhEaXZpc2lvbnMsdC50eXBlPXRoaXMudHlwZSx0fWZyb21KU09OKHQpe3JldHVybiB0aGlzLmFyY0xlbmd0aERpdmlzaW9ucz10LmFyY0xlbmd0aERpdmlzaW9ucyx0aGlzfX1jbGFzcyBFZnQgZXh0ZW5kcyBSZnR7Y29uc3RydWN0b3IodD0wLGU9MCxuPTEsbz0xLGk9MCxhPTIqTWF0aC5QSSxyPSExLHM9MCl7c3VwZXIoKSx0aGlzLnR5cGU9IkVsbGlwc2VDdXJ2ZSIsdGhpcy5hWD10LHRoaXMuYVk9ZSx0aGlzLnhSYWRpdXM9bix0aGlzLnlSYWRpdXM9byx0aGlzLmFTdGFydEFuZ2xlPWksdGhpcy5hRW5kQW5nbGU9YSx0aGlzLmFDbG9ja3dpc2U9cix0aGlzLmFSb3RhdGlvbj1zfWdldFBvaW50KHQsZSl7Y29uc3Qgbj1lfHxuZXcgZ3N0LG89MipNYXRoLlBJO2xldCBpPXRoaXMuYUVuZEFuZ2xlLXRoaXMuYVN0YXJ0QW5nbGU7Y29uc3QgYT1NYXRoLmFicyhpKTxOdW1iZXIuRVBTSUxPTjtmb3IoO2k8MDspaSs9bztmb3IoO2k+bzspaS09bztpPE51bWJlci5FUFNJTE9OJiYoaT1hPzA6byksITAhPT10aGlzLmFDbG9ja3dpc2V8fGF8fChpPT09bz9pPS1vOmktPW8pO2NvbnN0IHI9dGhpcy5hU3RhcnRBbmdsZSt0Kmk7bGV0IHM9dGhpcy5hWCt0aGlzLnhSYWRpdXMqTWF0aC5jb3MociksbD10aGlzLmFZK3RoaXMueVJhZGl1cypNYXRoLnNpbihyKTtpZigwIT09dGhpcy5hUm90YXRpb24pe2NvbnN0IHQ9TWF0aC5jb3ModGhpcy5hUm90YXRpb24pLGU9TWF0aC5zaW4odGhpcy5hUm90YXRpb24pLG49cy10aGlzLmFYLG89bC10aGlzLmFZO3M9bip0LW8qZSt0aGlzLmFYLGw9biplK28qdCt0aGlzLmFZfXJldHVybiBuLnNldChzLGwpfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5hWD10LmFYLHRoaXMuYVk9dC5hWSx0aGlzLnhSYWRpdXM9dC54UmFkaXVzLHRoaXMueVJhZGl1cz10LnlSYWRpdXMsdGhpcy5hU3RhcnRBbmdsZT10LmFTdGFydEFuZ2xlLHRoaXMuYUVuZEFuZ2xlPXQuYUVuZEFuZ2xlLHRoaXMuYUNsb2Nrd2lzZT10LmFDbG9ja3dpc2UsdGhpcy5hUm90YXRpb249dC5hUm90YXRpb24sdGhpc310b0pTT04oKXtjb25zdCB0PXN1cGVyLnRvSlNPTigpO3JldHVybiB0LmFYPXRoaXMuYVgsdC5hWT10aGlzLmFZLHQueFJhZGl1cz10aGlzLnhSYWRpdXMsdC55UmFkaXVzPXRoaXMueVJhZGl1cyx0LmFTdGFydEFuZ2xlPXRoaXMuYVN0YXJ0QW5nbGUsdC5hRW5kQW5nbGU9dGhpcy5hRW5kQW5nbGUsdC5hQ2xvY2t3aXNlPXRoaXMuYUNsb2Nrd2lzZSx0LmFSb3RhdGlvbj10aGlzLmFSb3RhdGlvbix0fWZyb21KU09OKHQpe3JldHVybiBzdXBlci5mcm9tSlNPTih0KSx0aGlzLmFYPXQuYVgsdGhpcy5hWT10LmFZLHRoaXMueFJhZGl1cz10LnhSYWRpdXMsdGhpcy55UmFkaXVzPXQueVJhZGl1cyx0aGlzLmFTdGFydEFuZ2xlPXQuYVN0YXJ0QW5nbGUsdGhpcy5hRW5kQW5nbGU9dC5hRW5kQW5nbGUsdGhpcy5hQ2xvY2t3aXNlPXQuYUNsb2Nrd2lzZSx0aGlzLmFSb3RhdGlvbj10LmFSb3RhdGlvbix0aGlzfX1FZnQucHJvdG90eXBlLmlzRWxsaXBzZUN1cnZlPSEwO2NsYXNzIEFmdCBleHRlbmRzIEVmdHtjb25zdHJ1Y3Rvcih0LGUsbixvLGksYSl7c3VwZXIodCxlLG4sbixvLGksYSksdGhpcy50eXBlPSJBcmNDdXJ2ZSJ9fWZ1bmN0aW9uIFRmdCgpe2xldCB0PTAsZT0wLG49MCxvPTA7ZnVuY3Rpb24gaShpLGEscixzKXt0PWksZT1yLG49LTMqaSszKmEtMipyLXMsbz0yKmktMiphK3Irc31yZXR1cm57aW5pdENhdG11bGxSb206ZnVuY3Rpb24odCxlLG4sbyxhKXtpKGUsbixhKihuLXQpLGEqKG8tZSkpfSxpbml0Tm9udW5pZm9ybUNhdG11bGxSb206ZnVuY3Rpb24odCxlLG4sbyxhLHIscyl7bGV0IGw9KGUtdCkvYS0obi10KS8oYStyKSsobi1lKS9yLGM9KG4tZSkvci0oby1lKS8ocitzKSsoby1uKS9zO2wqPXIsYyo9cixpKGUsbixsLGMpfSxjYWxjOmZ1bmN0aW9uKGkpe2NvbnN0IGE9aSppO3JldHVybiB0K2UqaStuKmErbyooYSppKX19fUFmdC5wcm90b3R5cGUuaXNBcmNDdXJ2ZT0hMDtjb25zdCBOZnQ9bmV3IHdzdCx6ZnQ9bmV3IFRmdCxJZnQ9bmV3IFRmdCxIZnQ9bmV3IFRmdDtjbGFzcyBGZnQgZXh0ZW5kcyBSZnR7Y29uc3RydWN0b3IodD1bXSxlPSExLG49ImNlbnRyaXBldGFsIixvPS41KXtzdXBlcigpLHRoaXMudHlwZT0iQ2F0bXVsbFJvbUN1cnZlMyIsdGhpcy5wb2ludHM9dCx0aGlzLmNsb3NlZD1lLHRoaXMuY3VydmVUeXBlPW4sdGhpcy50ZW5zaW9uPW99Z2V0UG9pbnQodCxlPW5ldyB3c3Qpe2NvbnN0IG49ZSxvPXRoaXMucG9pbnRzLGk9by5sZW5ndGgsYT0oaS0odGhpcy5jbG9zZWQ/MDoxKSkqdDtsZXQgcixzLGw9TWF0aC5mbG9vcihhKSxjPWEtbDt0aGlzLmNsb3NlZD9sKz1sPjA/MDooTWF0aC5mbG9vcihNYXRoLmFicyhsKS9pKSsxKSppOjA9PT1jJiZsPT09aS0xJiYobD1pLTIsYz0xKSx0aGlzLmNsb3NlZHx8bD4wP3I9b1sobC0xKSVpXTooTmZ0LnN1YlZlY3RvcnMob1swXSxvWzFdKS5hZGQob1swXSkscj1OZnQpO2NvbnN0IGQ9b1tsJWldLHA9b1sobCsxKSVpXTtpZih0aGlzLmNsb3NlZHx8bCsyPGk/cz1vWyhsKzIpJWldOihOZnQuc3ViVmVjdG9ycyhvW2ktMV0sb1tpLTJdKS5hZGQob1tpLTFdKSxzPU5mdCksImNlbnRyaXBldGFsIj09PXRoaXMuY3VydmVUeXBlfHwiY2hvcmRhbCI9PT10aGlzLmN1cnZlVHlwZSl7Y29uc3QgdD0iY2hvcmRhbCI9PT10aGlzLmN1cnZlVHlwZT8uNTouMjU7bGV0IGU9TWF0aC5wb3coci5kaXN0YW5jZVRvU3F1YXJlZChkKSx0KSxuPU1hdGgucG93KGQuZGlzdGFuY2VUb1NxdWFyZWQocCksdCksbz1NYXRoLnBvdyhwLmRpc3RhbmNlVG9TcXVhcmVkKHMpLHQpO248MWUtNCYmKG49MSksZTwxZS00JiYoZT1uKSxvPDFlLTQmJihvPW4pLHpmdC5pbml0Tm9udW5pZm9ybUNhdG11bGxSb20oci54LGQueCxwLngscy54LGUsbixvKSxJZnQuaW5pdE5vbnVuaWZvcm1DYXRtdWxsUm9tKHIueSxkLnkscC55LHMueSxlLG4sbyksSGZ0LmluaXROb251bmlmb3JtQ2F0bXVsbFJvbShyLnosZC56LHAueixzLnosZSxuLG8pfWVsc2UiY2F0bXVsbHJvbSI9PT10aGlzLmN1cnZlVHlwZSYmKHpmdC5pbml0Q2F0bXVsbFJvbShyLngsZC54LHAueCxzLngsdGhpcy50ZW5zaW9uKSxJZnQuaW5pdENhdG11bGxSb20oci55LGQueSxwLnkscy55LHRoaXMudGVuc2lvbiksSGZ0LmluaXRDYXRtdWxsUm9tKHIueixkLnoscC56LHMueix0aGlzLnRlbnNpb24pKTtyZXR1cm4gbi5zZXQoemZ0LmNhbGMoYyksSWZ0LmNhbGMoYyksSGZ0LmNhbGMoYykpLG59Y29weSh0KXtzdXBlci5jb3B5KHQpLHRoaXMucG9pbnRzPVtdO2ZvcihsZXQgZT0wLG49dC5wb2ludHMubGVuZ3RoO2U8bjtlKyspe3RoaXMucG9pbnRzLnB1c2godC5wb2ludHNbZV0uY2xvbmUoKSl9cmV0dXJuIHRoaXMuY2xvc2VkPXQuY2xvc2VkLHRoaXMuY3VydmVUeXBlPXQuY3VydmVUeXBlLHRoaXMudGVuc2lvbj10LnRlbnNpb24sdGhpc310b0pTT04oKXtjb25zdCB0PXN1cGVyLnRvSlNPTigpO3QucG9pbnRzPVtdO2ZvcihsZXQgZT0wLG49dGhpcy5wb2ludHMubGVuZ3RoO2U8bjtlKyspe3QucG9pbnRzLnB1c2godGhpcy5wb2ludHNbZV0udG9BcnJheSgpKX1yZXR1cm4gdC5jbG9zZWQ9dGhpcy5jbG9zZWQsdC5jdXJ2ZVR5cGU9dGhpcy5jdXJ2ZVR5cGUsdC50ZW5zaW9uPXRoaXMudGVuc2lvbix0fWZyb21KU09OKHQpe3N1cGVyLmZyb21KU09OKHQpLHRoaXMucG9pbnRzPVtdO2ZvcihsZXQgZT0wLG49dC5wb2ludHMubGVuZ3RoO2U8bjtlKyspe2NvbnN0IG49dC5wb2ludHNbZV07dGhpcy5wb2ludHMucHVzaCgobmV3IHdzdCkuZnJvbUFycmF5KG4pKX1yZXR1cm4gdGhpcy5jbG9zZWQ9dC5jbG9zZWQsdGhpcy5jdXJ2ZVR5cGU9dC5jdXJ2ZVR5cGUsdGhpcy50ZW5zaW9uPXQudGVuc2lvbix0aGlzfX1mdW5jdGlvbiBMZnQodCxlLG4sbyxpKXtjb25zdCBhPS41KihvLWUpLHI9LjUqKGktbikscz10KnQ7cmV0dXJuKDIqbi0yKm8rYStyKSoodCpzKSsoLTMqbiszKm8tMiphLXIpKnMrYSp0K259ZnVuY3Rpb24gQmZ0KHQsZSxuLG8pe3JldHVybihmdW5jdGlvbiBpKHQsZSl7Y29uc3Qgbj0xLXQ7cmV0dXJuIG4qbiplfSkodCxlKSsoZnVuY3Rpb24gYSh0LGUpe3JldHVybiAyKigxLXQpKnQqZX0pKHQsbikrKGZ1bmN0aW9uIHIodCxlKXtyZXR1cm4gdCp0KmV9KSh0LG8pfWZ1bmN0aW9uIFZmdCh0LGUsbixvLGkpe3JldHVybihmdW5jdGlvbiBhKHQsZSl7Y29uc3Qgbj0xLXQ7cmV0dXJuIG4qbipuKmV9KSh0LGUpKyhmdW5jdGlvbiByKHQsZSl7Y29uc3Qgbj0xLXQ7cmV0dXJuIDMqbipuKnQqZX0pKHQsbikrKGZ1bmN0aW9uIHModCxlKXtyZXR1cm4gMyooMS10KSp0KnQqZX0pKHQsbykrKGZ1bmN0aW9uIGwodCxlKXtyZXR1cm4gdCp0KnQqZX0pKHQsaSl9RmZ0LnByb3RvdHlwZS5pc0NhdG11bGxSb21DdXJ2ZTM9ITA7Y2xhc3MgamZ0IGV4dGVuZHMgUmZ0e2NvbnN0cnVjdG9yKHQ9bmV3IGdzdCxlPW5ldyBnc3Qsbj1uZXcgZ3N0LG89bmV3IGdzdCl7c3VwZXIoKSx0aGlzLnR5cGU9IkN1YmljQmV6aWVyQ3VydmUiLHRoaXMudjA9dCx0aGlzLnYxPWUsdGhpcy52Mj1uLHRoaXMudjM9b31nZXRQb2ludCh0LGU9bmV3IGdzdCl7Y29uc3Qgbj1lLG89dGhpcy52MCxpPXRoaXMudjEsYT10aGlzLnYyLHI9dGhpcy52MztyZXR1cm4gbi5zZXQoVmZ0KHQsby54LGkueCxhLngsci54KSxWZnQodCxvLnksaS55LGEueSxyLnkpKSxufWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy52MC5jb3B5KHQudjApLHRoaXMudjEuY29weSh0LnYxKSx0aGlzLnYyLmNvcHkodC52MiksdGhpcy52My5jb3B5KHQudjMpLHRoaXN9dG9KU09OKCl7Y29uc3QgdD1zdXBlci50b0pTT04oKTtyZXR1cm4gdC52MD10aGlzLnYwLnRvQXJyYXkoKSx0LnYxPXRoaXMudjEudG9BcnJheSgpLHQudjI9dGhpcy52Mi50b0FycmF5KCksdC52Mz10aGlzLnYzLnRvQXJyYXkoKSx0fWZyb21KU09OKHQpe3JldHVybiBzdXBlci5mcm9tSlNPTih0KSx0aGlzLnYwLmZyb21BcnJheSh0LnYwKSx0aGlzLnYxLmZyb21BcnJheSh0LnYxKSx0aGlzLnYyLmZyb21BcnJheSh0LnYyKSx0aGlzLnYzLmZyb21BcnJheSh0LnYzKSx0aGlzfX1qZnQucHJvdG90eXBlLmlzQ3ViaWNCZXppZXJDdXJ2ZT0hMDtjbGFzcyBVZnQgZXh0ZW5kcyBSZnR7Y29uc3RydWN0b3IodD1uZXcgd3N0LGU9bmV3IHdzdCxuPW5ldyB3c3Qsbz1uZXcgd3N0KXtzdXBlcigpLHRoaXMudHlwZT0iQ3ViaWNCZXppZXJDdXJ2ZTMiLHRoaXMudjA9dCx0aGlzLnYxPWUsdGhpcy52Mj1uLHRoaXMudjM9b31nZXRQb2ludCh0LGU9bmV3IHdzdCl7Y29uc3Qgbj1lLG89dGhpcy52MCxpPXRoaXMudjEsYT10aGlzLnYyLHI9dGhpcy52MztyZXR1cm4gbi5zZXQoVmZ0KHQsby54LGkueCxhLngsci54KSxWZnQodCxvLnksaS55LGEueSxyLnkpLFZmdCh0LG8ueixpLnosYS56LHIueikpLG59Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLnYwLmNvcHkodC52MCksdGhpcy52MS5jb3B5KHQudjEpLHRoaXMudjIuY29weSh0LnYyKSx0aGlzLnYzLmNvcHkodC52MyksdGhpc310b0pTT04oKXtjb25zdCB0PXN1cGVyLnRvSlNPTigpO3JldHVybiB0LnYwPXRoaXMudjAudG9BcnJheSgpLHQudjE9dGhpcy52MS50b0FycmF5KCksdC52Mj10aGlzLnYyLnRvQXJyYXkoKSx0LnYzPXRoaXMudjMudG9BcnJheSgpLHR9ZnJvbUpTT04odCl7cmV0dXJuIHN1cGVyLmZyb21KU09OKHQpLHRoaXMudjAuZnJvbUFycmF5KHQudjApLHRoaXMudjEuZnJvbUFycmF5KHQudjEpLHRoaXMudjIuZnJvbUFycmF5KHQudjIpLHRoaXMudjMuZnJvbUFycmF5KHQudjMpLHRoaXN9fVVmdC5wcm90b3R5cGUuaXNDdWJpY0JlemllckN1cnZlMz0hMDtjbGFzcyBXZnQgZXh0ZW5kcyBSZnR7Y29uc3RydWN0b3IodD1uZXcgZ3N0LGU9bmV3IGdzdCl7c3VwZXIoKSx0aGlzLnR5cGU9IkxpbmVDdXJ2ZSIsdGhpcy52MT10LHRoaXMudjI9ZX1nZXRQb2ludCh0LGU9bmV3IGdzdCl7Y29uc3Qgbj1lO3JldHVybiAxPT09dD9uLmNvcHkodGhpcy52Mik6KG4uY29weSh0aGlzLnYyKS5zdWIodGhpcy52MSksbi5tdWx0aXBseVNjYWxhcih0KS5hZGQodGhpcy52MSkpLG59Z2V0UG9pbnRBdCh0LGUpe3JldHVybiB0aGlzLmdldFBvaW50KHQsZSl9Z2V0VGFuZ2VudCh0LGUpe2NvbnN0IG49ZXx8bmV3IGdzdDtyZXR1cm4gbi5jb3B5KHRoaXMudjIpLnN1Yih0aGlzLnYxKS5ub3JtYWxpemUoKSxufWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy52MS5jb3B5KHQudjEpLHRoaXMudjIuY29weSh0LnYyKSx0aGlzfXRvSlNPTigpe2NvbnN0IHQ9c3VwZXIudG9KU09OKCk7cmV0dXJuIHQudjE9dGhpcy52MS50b0FycmF5KCksdC52Mj10aGlzLnYyLnRvQXJyYXkoKSx0fWZyb21KU09OKHQpe3JldHVybiBzdXBlci5mcm9tSlNPTih0KSx0aGlzLnYxLmZyb21BcnJheSh0LnYxKSx0aGlzLnYyLmZyb21BcnJheSh0LnYyKSx0aGlzfX1XZnQucHJvdG90eXBlLmlzTGluZUN1cnZlPSEwO2NsYXNzIEdmdCBleHRlbmRzIFJmdHtjb25zdHJ1Y3Rvcih0PW5ldyBnc3QsZT1uZXcgZ3N0LG49bmV3IGdzdCl7c3VwZXIoKSx0aGlzLnR5cGU9IlF1YWRyYXRpY0JlemllckN1cnZlIix0aGlzLnYwPXQsdGhpcy52MT1lLHRoaXMudjI9bn1nZXRQb2ludCh0LGU9bmV3IGdzdCl7Y29uc3Qgbj1lLG89dGhpcy52MCxpPXRoaXMudjEsYT10aGlzLnYyO3JldHVybiBuLnNldChCZnQodCxvLngsaS54LGEueCksQmZ0KHQsby55LGkueSxhLnkpKSxufWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy52MC5jb3B5KHQudjApLHRoaXMudjEuY29weSh0LnYxKSx0aGlzLnYyLmNvcHkodC52MiksdGhpc310b0pTT04oKXtjb25zdCB0PXN1cGVyLnRvSlNPTigpO3JldHVybiB0LnYwPXRoaXMudjAudG9BcnJheSgpLHQudjE9dGhpcy52MS50b0FycmF5KCksdC52Mj10aGlzLnYyLnRvQXJyYXkoKSx0fWZyb21KU09OKHQpe3JldHVybiBzdXBlci5mcm9tSlNPTih0KSx0aGlzLnYwLmZyb21BcnJheSh0LnYwKSx0aGlzLnYxLmZyb21BcnJheSh0LnYxKSx0aGlzLnYyLmZyb21BcnJheSh0LnYyKSx0aGlzfX1HZnQucHJvdG90eXBlLmlzUXVhZHJhdGljQmV6aWVyQ3VydmU9ITA7Y2xhc3MgWWZ0IGV4dGVuZHMgUmZ0e2NvbnN0cnVjdG9yKHQ9bmV3IHdzdCxlPW5ldyB3c3Qsbj1uZXcgd3N0KXtzdXBlcigpLHRoaXMudHlwZT0iUXVhZHJhdGljQmV6aWVyQ3VydmUzIix0aGlzLnYwPXQsdGhpcy52MT1lLHRoaXMudjI9bn1nZXRQb2ludCh0LGU9bmV3IHdzdCl7Y29uc3Qgbj1lLG89dGhpcy52MCxpPXRoaXMudjEsYT10aGlzLnYyO3JldHVybiBuLnNldChCZnQodCxvLngsaS54LGEueCksQmZ0KHQsby55LGkueSxhLnkpLEJmdCh0LG8ueixpLnosYS56KSksbn1jb3B5KHQpe3JldHVybiBzdXBlci5jb3B5KHQpLHRoaXMudjAuY29weSh0LnYwKSx0aGlzLnYxLmNvcHkodC52MSksdGhpcy52Mi5jb3B5KHQudjIpLHRoaXN9dG9KU09OKCl7Y29uc3QgdD1zdXBlci50b0pTT04oKTtyZXR1cm4gdC52MD10aGlzLnYwLnRvQXJyYXkoKSx0LnYxPXRoaXMudjEudG9BcnJheSgpLHQudjI9dGhpcy52Mi50b0FycmF5KCksdH1mcm9tSlNPTih0KXtyZXR1cm4gc3VwZXIuZnJvbUpTT04odCksdGhpcy52MC5mcm9tQXJyYXkodC52MCksdGhpcy52MS5mcm9tQXJyYXkodC52MSksdGhpcy52Mi5mcm9tQXJyYXkodC52MiksdGhpc319WWZ0LnByb3RvdHlwZS5pc1F1YWRyYXRpY0JlemllckN1cnZlMz0hMDtjbGFzcyBxZnQgZXh0ZW5kcyBSZnR7Y29uc3RydWN0b3IodD1bXSl7c3VwZXIoKSx0aGlzLnR5cGU9IlNwbGluZUN1cnZlIix0aGlzLnBvaW50cz10fWdldFBvaW50KHQsZT1uZXcgZ3N0KXtjb25zdCBuPWUsbz10aGlzLnBvaW50cyxpPShvLmxlbmd0aC0xKSp0LGE9TWF0aC5mbG9vcihpKSxyPWktYSxzPW9bMD09PWE/YTphLTFdLGw9b1thXSxjPW9bYT5vLmxlbmd0aC0yP28ubGVuZ3RoLTE6YSsxXSxkPW9bYT5vLmxlbmd0aC0zP28ubGVuZ3RoLTE6YSsyXTtyZXR1cm4gbi5zZXQoTGZ0KHIscy54LGwueCxjLngsZC54KSxMZnQocixzLnksbC55LGMueSxkLnkpKSxufWNvcHkodCl7c3VwZXIuY29weSh0KSx0aGlzLnBvaW50cz1bXTtmb3IobGV0IGU9MCxuPXQucG9pbnRzLmxlbmd0aDtlPG47ZSsrKXt0aGlzLnBvaW50cy5wdXNoKHQucG9pbnRzW2VdLmNsb25lKCkpfXJldHVybiB0aGlzfXRvSlNPTigpe2NvbnN0IHQ9c3VwZXIudG9KU09OKCk7dC5wb2ludHM9W107Zm9yKGxldCBlPTAsbj10aGlzLnBvaW50cy5sZW5ndGg7ZTxuO2UrKyl7dC5wb2ludHMucHVzaCh0aGlzLnBvaW50c1tlXS50b0FycmF5KCkpfXJldHVybiB0fWZyb21KU09OKHQpe3N1cGVyLmZyb21KU09OKHQpLHRoaXMucG9pbnRzPVtdO2ZvcihsZXQgZT0wLG49dC5wb2ludHMubGVuZ3RoO2U8bjtlKyspe2NvbnN0IG49dC5wb2ludHNbZV07dGhpcy5wb2ludHMucHVzaCgobmV3IGdzdCkuZnJvbUFycmF5KG4pKX1yZXR1cm4gdGhpc319cWZ0LnByb3RvdHlwZS5pc1NwbGluZUN1cnZlPSEwO3ZhciBaZnQ9T2JqZWN0LmZyZWV6ZSh7X19wcm90b19fOm51bGwsQXJjQ3VydmU6QWZ0LENhdG11bGxSb21DdXJ2ZTM6RmZ0LEN1YmljQmV6aWVyQ3VydmU6amZ0LEN1YmljQmV6aWVyQ3VydmUzOlVmdCxFbGxpcHNlQ3VydmU6RWZ0LExpbmVDdXJ2ZTpXZnQsTGluZUN1cnZlMzpjbGFzcyBleHRlbmRzIFJmdHtjb25zdHJ1Y3Rvcih0PW5ldyB3c3QsZT1uZXcgd3N0KXtzdXBlcigpLHRoaXMudHlwZT0iTGluZUN1cnZlMyIsdGhpcy5pc0xpbmVDdXJ2ZTM9ITAsdGhpcy52MT10LHRoaXMudjI9ZX1nZXRQb2ludCh0LGU9bmV3IHdzdCl7Y29uc3Qgbj1lO3JldHVybiAxPT09dD9uLmNvcHkodGhpcy52Mik6KG4uY29weSh0aGlzLnYyKS5zdWIodGhpcy52MSksbi5tdWx0aXBseVNjYWxhcih0KS5hZGQodGhpcy52MSkpLG59Z2V0UG9pbnRBdCh0LGUpe3JldHVybiB0aGlzLmdldFBvaW50KHQsZSl9Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLnYxLmNvcHkodC52MSksdGhpcy52Mi5jb3B5KHQudjIpLHRoaXN9dG9KU09OKCl7Y29uc3QgdD1zdXBlci50b0pTT04oKTtyZXR1cm4gdC52MT10aGlzLnYxLnRvQXJyYXkoKSx0LnYyPXRoaXMudjIudG9BcnJheSgpLHR9ZnJvbUpTT04odCl7cmV0dXJuIHN1cGVyLmZyb21KU09OKHQpLHRoaXMudjEuZnJvbUFycmF5KHQudjEpLHRoaXMudjIuZnJvbUFycmF5KHQudjIpLHRoaXN9fSxRdWFkcmF0aWNCZXppZXJDdXJ2ZTpHZnQsUXVhZHJhdGljQmV6aWVyQ3VydmUzOllmdCxTcGxpbmVDdXJ2ZTpxZnR9KTtjb25zdCBYZnQ9ZnVuY3Rpb24odCxlLG49Mil7Y29uc3Qgbz1lJiZlLmxlbmd0aCxpPW8/ZVswXSpuOnQubGVuZ3RoO2xldCBhPUtmdCh0LDAsaSxuLCEwKTtjb25zdCByPVtdO2lmKCFhfHxhLm5leHQ9PT1hLnByZXYpcmV0dXJuIHI7bGV0IHMsbCxjLGQscCxtLGY7aWYobyYmKGE9KGZ1bmN0aW9uIHUodCxlLG4sbyl7Y29uc3QgaT1bXTtsZXQgYSxyLHMsbCxjO2ZvcihhPTAscj1lLmxlbmd0aDthPHI7YSsrKXM9ZVthXSpvLGw9YTxyLTE/ZVthKzFdKm86dC5sZW5ndGgsYz1LZnQodCxzLGwsbywhMSksYz09PWMubmV4dCYmKGMuc3RlaW5lcj0hMCksaS5wdXNoKHN1dChjKSk7Zm9yKGkuc29ydChvdXQpLGE9MDthPGkubGVuZ3RoO2ErKylpdXQoaVthXSxuKSxuPUpmdChuLG4ubmV4dCk7cmV0dXJuIG59KSh0LGUsYSxuKSksdC5sZW5ndGg+ODAqbil7cz1jPXRbMF0sbD1kPXRbMV07Zm9yKGxldCBlPW47ZTxpO2UrPW4pcD10W2VdLG09dFtlKzFdLHA8cyYmKHM9cCksbTxsJiYobD1tKSxwPmMmJihjPXApLG0+ZCYmKGQ9bSk7Zj1NYXRoLm1heChjLXMsZC1sKSxmPTAhPT1mPzEvZjowfXJldHVybiBRZnQoYSxyLG4scyxsLGYpLHJ9O2Z1bmN0aW9uIEtmdCh0LGUsbixvLGkpe2xldCBhLHI7aWYoaT09PShmdW5jdGlvbiBzKHQsZSxuLG8pe2xldCBpPTA7Zm9yKGxldCBhPWUscj1uLW87YTxuO2ErPW8paSs9KHRbcl0tdFthXSkqKHRbYSsxXSt0W3IrMV0pLHI9YTtyZXR1cm4gaX0pKHQsZSxuLG8pPjApZm9yKGE9ZTthPG47YSs9bylyPWJ1dChhLHRbYV0sdFthKzFdLHIpO2Vsc2UgZm9yKGE9bi1vO2E+PWU7YS09bylyPWJ1dChhLHRbYV0sdFthKzFdLHIpO3JldHVybiByJiZwdXQocixyLm5leHQpJiYoeXV0KHIpLHI9ci5uZXh0KSxyfWZ1bmN0aW9uIEpmdCh0LGUpe2lmKCF0KXJldHVybiB0O2V8fChlPXQpO2xldCBuLG89dDtkb3tpZihuPSExLG8uc3RlaW5lcnx8IXB1dChvLG8ubmV4dCkmJjAhPT1kdXQoby5wcmV2LG8sby5uZXh0KSlvPW8ubmV4dDtlbHNle2lmKHl1dChvKSxvPWU9by5wcmV2LG89PT1vLm5leHQpYnJlYWs7bj0hMH19d2hpbGUobnx8byE9PWUpO3JldHVybiBlfWZ1bmN0aW9uIFFmdCh0LGUsbixvLGksYSxyKXtpZighdClyZXR1cm47IXImJmEmJihmdW5jdGlvbiBzKHQsZSxuLG8pe2xldCBpPXQ7ZG97bnVsbD09PWkueiYmKGkuej1ydXQoaS54LGkueSxlLG4sbykpLGkucHJldlo9aS5wcmV2LGkubmV4dFo9aS5uZXh0LGk9aS5uZXh0fXdoaWxlKGkhPT10KTtpLnByZXZaLm5leHRaPW51bGwsaS5wcmV2Wj1udWxsLChmdW5jdGlvbiBhKHQpe2xldCBlLG4sbyxpLGEscixzLGwsYz0xO2Rve2ZvcihuPXQsdD1udWxsLGE9bnVsbCxyPTA7bjspe2ZvcihyKyssbz1uLHM9MCxlPTA7ZTxjJiYocysrLG89by5uZXh0WixvKTtlKyspO2ZvcihsPWM7cz4wfHxsPjAmJm87KTAhPT1zJiYoMD09PWx8fCFvfHxuLno8PW8ueik/KGk9bixuPW4ubmV4dFoscy0tKTooaT1vLG89by5uZXh0WixsLS0pLGE/YS5uZXh0Wj1pOnQ9aSxpLnByZXZaPWEsYT1pO249b31hLm5leHRaPW51bGwsYyo9Mn13aGlsZShyPjEpO3JldHVybiB0fSkoaSl9KSh0LG8saSxhKTtsZXQgbCxjLGQ9dDtmb3IoO3QucHJldiE9PXQubmV4dDspaWYobD10LnByZXYsYz10Lm5leHQsYT90dXQodCxvLGksYSk6JGZ0KHQpKWUucHVzaChsLmkvbiksZS5wdXNoKHQuaS9uKSxlLnB1c2goYy5pL24pLHl1dCh0KSx0PWMubmV4dCxkPWMubmV4dDtlbHNlIGlmKCh0PWMpPT09ZCl7cj8xPT09cj9RZnQodD1ldXQoSmZ0KHQpLGUsbiksZSxuLG8saSxhLDIpOjI9PT1yJiZudXQodCxlLG4sbyxpLGEpOlFmdChKZnQodCksZSxuLG8saSxhLDEpO2JyZWFrfX1mdW5jdGlvbiAkZnQodCl7Y29uc3QgZT10LnByZXYsbj10LG89dC5uZXh0O2lmKGR1dChlLG4sbyk+PTApcmV0dXJuITE7bGV0IGk9dC5uZXh0Lm5leHQ7Zm9yKDtpIT09dC5wcmV2Oyl7aWYobHV0KGUueCxlLnksbi54LG4ueSxvLngsby55LGkueCxpLnkpJiZkdXQoaS5wcmV2LGksaS5uZXh0KT49MClyZXR1cm4hMTtpPWkubmV4dH1yZXR1cm4hMH1mdW5jdGlvbiB0dXQodCxlLG4sbyl7Y29uc3QgaT10LnByZXYsYT10LHI9dC5uZXh0O2lmKGR1dChpLGEscik+PTApcmV0dXJuITE7Y29uc3Qgcz1pLng+YS54P2kueD5yLng/aS54OnIueDphLng+ci54P2EueDpyLngsbD1pLnk+YS55P2kueT5yLnk/aS55OnIueTphLnk+ci55P2EueTpyLnksYz1ydXQoaS54PGEueD9pLng8ci54P2kueDpyLng6YS54PHIueD9hLng6ci54LGkueTxhLnk/aS55PHIueT9pLnk6ci55OmEueTxyLnk/YS55OnIueSxlLG4sbyksZD1ydXQocyxsLGUsbixvKTtsZXQgcD10LnByZXZaLG09dC5uZXh0Wjtmb3IoO3AmJnAuej49YyYmbSYmbS56PD1kOyl7aWYocCE9PXQucHJldiYmcCE9PXQubmV4dCYmbHV0KGkueCxpLnksYS54LGEueSxyLngsci55LHAueCxwLnkpJiZkdXQocC5wcmV2LHAscC5uZXh0KT49MClyZXR1cm4hMTtpZihwPXAucHJldlosbSE9PXQucHJldiYmbSE9PXQubmV4dCYmbHV0KGkueCxpLnksYS54LGEueSxyLngsci55LG0ueCxtLnkpJiZkdXQobS5wcmV2LG0sbS5uZXh0KT49MClyZXR1cm4hMTttPW0ubmV4dFp9Zm9yKDtwJiZwLno+PWM7KXtpZihwIT09dC5wcmV2JiZwIT09dC5uZXh0JiZsdXQoaS54LGkueSxhLngsYS55LHIueCxyLnkscC54LHAueSkmJmR1dChwLnByZXYscCxwLm5leHQpPj0wKXJldHVybiExO3A9cC5wcmV2Wn1mb3IoO20mJm0uejw9ZDspe2lmKG0hPT10LnByZXYmJm0hPT10Lm5leHQmJmx1dChpLngsaS55LGEueCxhLnksci54LHIueSxtLngsbS55KSYmZHV0KG0ucHJldixtLG0ubmV4dCk+PTApcmV0dXJuITE7bT1tLm5leHRafXJldHVybiEwfWZ1bmN0aW9uIGV1dCh0LGUsbil7bGV0IG89dDtkb3tjb25zdCBpPW8ucHJldixhPW8ubmV4dC5uZXh0OyFwdXQoaSxhKSYmbXV0KGksbyxvLm5leHQsYSkmJmd1dChpLGEpJiZndXQoYSxpKSYmKGUucHVzaChpLmkvbiksZS5wdXNoKG8uaS9uKSxlLnB1c2goYS5pL24pLHl1dChvKSx5dXQoby5uZXh0KSxvPXQ9YSksbz1vLm5leHR9d2hpbGUobyE9PXQpO3JldHVybiBKZnQobyl9ZnVuY3Rpb24gbnV0KHQsZSxuLG8saSxhKXtsZXQgcj10O2Rve2xldCB0PXIubmV4dC5uZXh0O2Zvcig7dCE9PXIucHJldjspe2lmKHIuaSE9PXQuaSYmY3V0KHIsdCkpe2xldCBzPWh1dChyLHQpO3JldHVybiByPUpmdChyLHIubmV4dCkscz1KZnQocyxzLm5leHQpLFFmdChyLGUsbixvLGksYSksdm9pZCBRZnQocyxlLG4sbyxpLGEpfXQ9dC5uZXh0fXI9ci5uZXh0fXdoaWxlKHIhPT10KX1mdW5jdGlvbiBvdXQodCxlKXtyZXR1cm4gdC54LWUueH1mdW5jdGlvbiBpdXQodCxlKXtpZihlPShmdW5jdGlvbiBuKHQsZSl7bGV0IG49ZTtjb25zdCBvPXQueCxpPXQueTtsZXQgYSxyPS0xLzA7ZG97aWYoaTw9bi55JiZpPj1uLm5leHQueSYmbi5uZXh0LnkhPT1uLnkpe2NvbnN0IHQ9bi54KyhpLW4ueSkqKG4ubmV4dC54LW4ueCkvKG4ubmV4dC55LW4ueSk7aWYodDw9byYmdD5yKXtpZihyPXQsdD09PW8pe2lmKGk9PT1uLnkpcmV0dXJuIG47aWYoaT09PW4ubmV4dC55KXJldHVybiBuLm5leHR9YT1uLng8bi5uZXh0Lng/bjpuLm5leHR9fW49bi5uZXh0fXdoaWxlKG4hPT1lKTtpZighYSlyZXR1cm4gbnVsbDtpZihvPT09cilyZXR1cm4gYTtjb25zdCBzPWEsbD1hLngsYz1hLnk7bGV0IGQscD0xLzA7bj1hO2Rve28+PW4ueCYmbi54Pj1sJiZvIT09bi54JiZsdXQoaTxjP286cixpLGwsYyxpPGM/cjpvLGksbi54LG4ueSkmJihkPU1hdGguYWJzKGktbi55KS8oby1uLngpLGd1dChuLHQpJiYoZDxwfHxkPT09cCYmKG4ueD5hLnh8fG4ueD09PWEueCYmYXV0KGEsbikpKSYmKGE9bixwPWQpKSxuPW4ubmV4dH13aGlsZShuIT09cyk7cmV0dXJuIGF9KSh0LGUpKXtjb25zdCBuPWh1dChlLHQpO0pmdChlLGUubmV4dCksSmZ0KG4sbi5uZXh0KX19ZnVuY3Rpb24gYXV0KHQsZSl7cmV0dXJuIGR1dCh0LnByZXYsdCxlLnByZXYpPDAmJmR1dChlLm5leHQsdCx0Lm5leHQpPDB9ZnVuY3Rpb24gcnV0KHQsZSxuLG8saSl7cmV0dXJuKHQ9MTQzMTY1NTc2NSYoKHQ9ODU4OTkzNDU5JigodD0yNTI2NDUxMzUmKCh0PTE2NzExOTM1JigodD0zMjc2NyoodC1uKSppKXx0PDw4KSl8dDw8NCkpfHQ8PDIpKXx0PDwxKSl8KGU9MTQzMTY1NTc2NSYoKGU9ODU4OTkzNDU5JigoZT0yNTI2NDUxMzUmKChlPTE2NzExOTM1JigoZT0zMjc2NyooZS1vKSppKXxlPDw4KSl8ZTw8NCkpfGU8PDIpKXxlPDwxKSk8PDF9ZnVuY3Rpb24gc3V0KHQpe2xldCBlPXQsbj10O2RveyhlLng8bi54fHxlLng9PT1uLngmJmUueTxuLnkpJiYobj1lKSxlPWUubmV4dH13aGlsZShlIT09dCk7cmV0dXJuIG59ZnVuY3Rpb24gbHV0KHQsZSxuLG8saSxhLHIscyl7cmV0dXJuKGktcikqKGUtcyktKHQtcikqKGEtcyk+PTAmJih0LXIpKihvLXMpLShuLXIpKihlLXMpPj0wJiYobi1yKSooYS1zKS0oaS1yKSooby1zKT49MH1mdW5jdGlvbiBjdXQodCxlKXtyZXR1cm4gdC5uZXh0LmkhPT1lLmkmJnQucHJldi5pIT09ZS5pJiYhKGZ1bmN0aW9uIG4odCxlKXtsZXQgbj10O2Rve2lmKG4uaSE9PXQuaSYmbi5uZXh0LmkhPT10LmkmJm4uaSE9PWUuaSYmbi5uZXh0LmkhPT1lLmkmJm11dChuLG4ubmV4dCx0LGUpKXJldHVybiEwO249bi5uZXh0fXdoaWxlKG4hPT10KTtyZXR1cm4hMX0pKHQsZSkmJihndXQodCxlKSYmZ3V0KGUsdCkmJihmdW5jdGlvbiBvKHQsZSl7bGV0IG49dCxvPSExO2NvbnN0IGk9KHQueCtlLngpLzIsYT0odC55K2UueSkvMjtkb3tuLnk+YSE9bi5uZXh0Lnk+YSYmbi5uZXh0LnkhPT1uLnkmJmk8KG4ubmV4dC54LW4ueCkqKGEtbi55KS8obi5uZXh0Lnktbi55KStuLngmJihvPSFvKSxuPW4ubmV4dH13aGlsZShuIT09dCk7cmV0dXJuIG99KSh0LGUpJiYoZHV0KHQucHJldix0LGUucHJldil8fGR1dCh0LGUucHJldixlKSl8fHB1dCh0LGUpJiZkdXQodC5wcmV2LHQsdC5uZXh0KT4wJiZkdXQoZS5wcmV2LGUsZS5uZXh0KT4wKX1mdW5jdGlvbiBkdXQodCxlLG4pe3JldHVybihlLnktdC55KSoobi54LWUueCktKGUueC10LngpKihuLnktZS55KX1mdW5jdGlvbiBwdXQodCxlKXtyZXR1cm4gdC54PT09ZS54JiZ0Lnk9PT1lLnl9ZnVuY3Rpb24gbXV0KHQsZSxuLG8pe2NvbnN0IGk9dXV0KGR1dCh0LGUsbikpLGE9dXV0KGR1dCh0LGUsbykpLHI9dXV0KGR1dChuLG8sdCkpLHM9dXV0KGR1dChuLG8sZSkpO3JldHVybiBpIT09YSYmciE9PXN8fCghKDAhPT1pfHwhZnV0KHQsbixlKSl8fCghKDAhPT1hfHwhZnV0KHQsbyxlKSl8fCghKDAhPT1yfHwhZnV0KG4sdCxvKSl8fCEoMCE9PXN8fCFmdXQobixlLG8pKSkpKX1mdW5jdGlvbiBmdXQodCxlLG4pe3JldHVybiBlLng8PU1hdGgubWF4KHQueCxuLngpJiZlLng+PU1hdGgubWluKHQueCxuLngpJiZlLnk8PU1hdGgubWF4KHQueSxuLnkpJiZlLnk+PU1hdGgubWluKHQueSxuLnkpfWZ1bmN0aW9uIHV1dCh0KXtyZXR1cm4gdD4wPzE6dDwwPy0xOjB9ZnVuY3Rpb24gZ3V0KHQsZSl7cmV0dXJuIGR1dCh0LnByZXYsdCx0Lm5leHQpPDA/ZHV0KHQsZSx0Lm5leHQpPj0wJiZkdXQodCx0LnByZXYsZSk+PTA6ZHV0KHQsZSx0LnByZXYpPDB8fGR1dCh0LHQubmV4dCxlKTwwfWZ1bmN0aW9uIGh1dCh0LGUpe2NvbnN0IG49bmV3IF91dCh0LmksdC54LHQueSksbz1uZXcgX3V0KGUuaSxlLngsZS55KSxpPXQubmV4dCxhPWUucHJldjtyZXR1cm4gdC5uZXh0PWUsZS5wcmV2PXQsbi5uZXh0PWksaS5wcmV2PW4sby5uZXh0PW4sbi5wcmV2PW8sYS5uZXh0PW8sby5wcmV2PWEsb31mdW5jdGlvbiBidXQodCxlLG4sbyl7Y29uc3QgaT1uZXcgX3V0KHQsZSxuKTtyZXR1cm4gbz8oaS5uZXh0PW8ubmV4dCxpLnByZXY9byxvLm5leHQucHJldj1pLG8ubmV4dD1pKTooaS5wcmV2PWksaS5uZXh0PWkpLGl9ZnVuY3Rpb24geXV0KHQpe3QubmV4dC5wcmV2PXQucHJldix0LnByZXYubmV4dD10Lm5leHQsdC5wcmV2WiYmKHQucHJldloubmV4dFo9dC5uZXh0WiksdC5uZXh0WiYmKHQubmV4dFoucHJldlo9dC5wcmV2Wil9ZnVuY3Rpb24gX3V0KHQsZSxuKXt0aGlzLmk9dCx0aGlzLng9ZSx0aGlzLnk9bix0aGlzLnByZXY9bnVsbCx0aGlzLm5leHQ9bnVsbCx0aGlzLno9bnVsbCx0aGlzLnByZXZaPW51bGwsdGhpcy5uZXh0Wj1udWxsLHRoaXMuc3RlaW5lcj0hMX1jbGFzcyBDdXR7c3RhdGljIGFyZWEodCl7Y29uc3QgZT10Lmxlbmd0aDtsZXQgbj0wO2ZvcihsZXQgbz1lLTEsaT0wO2k8ZTtvPWkrKyluKz10W29dLngqdFtpXS55LXRbaV0ueCp0W29dLnk7cmV0dXJuLjUqbn1zdGF0aWMgaXNDbG9ja1dpc2UodCl7cmV0dXJuIEN1dC5hcmVhKHQpPDB9c3RhdGljIHRyaWFuZ3VsYXRlU2hhcGUodCxlKXtjb25zdCBuPVtdLG89W10saT1bXTtNdXQodCksdnV0KG4sdCk7bGV0IGE9dC5sZW5ndGg7ZS5mb3JFYWNoKE11dCk7Zm9yKGxldCB0PTA7dDxlLmxlbmd0aDt0Kyspby5wdXNoKGEpLGErPWVbdF0ubGVuZ3RoLHZ1dChuLGVbdF0pO2NvbnN0IHI9WGZ0KG4sbyk7Zm9yKGxldCB0PTA7dDxyLmxlbmd0aDt0Kz0zKWkucHVzaChyLnNsaWNlKHQsdCszKSk7cmV0dXJuIGl9fWZ1bmN0aW9uIE11dCh0KXtjb25zdCBlPXQubGVuZ3RoO2U+MiYmdFtlLTFdLmVxdWFscyh0WzBdKSYmdC5wb3AoKX1mdW5jdGlvbiB2dXQodCxlKXtmb3IobGV0IG49MDtuPGUubGVuZ3RoO24rKyl0LnB1c2goZVtuXS54KSx0LnB1c2goZVtuXS55KX1jbGFzcyB4dXQgZXh0ZW5kcyBkY3R7Y29uc3RydWN0b3IodCxlKXtzdXBlcigpLHRoaXMudHlwZT0iRXh0cnVkZUdlb21ldHJ5Iix0aGlzLnBhcmFtZXRlcnM9e3NoYXBlczp0LG9wdGlvbnM6ZX0sdD1BcnJheS5pc0FycmF5KHQpP3Q6W3RdO2NvbnN0IG49dGhpcyxvPVtdLGk9W107Zm9yKGxldCBlPTAsbj10Lmxlbmd0aDtlPG47ZSsrKXthKHRbZV0pfWZ1bmN0aW9uIGEodCl7Y29uc3QgYT1bXSxyPXZvaWQgMCE9PWUuY3VydmVTZWdtZW50cz9lLmN1cnZlU2VnbWVudHM6MTIscz12b2lkIDAhPT1lLnN0ZXBzP2Uuc3RlcHM6MTtsZXQgbD12b2lkIDAhPT1lLmRlcHRoP2UuZGVwdGg6MTAwLGM9dm9pZCAwPT09ZS5iZXZlbEVuYWJsZWR8fGUuYmV2ZWxFbmFibGVkLGQ9dm9pZCAwIT09ZS5iZXZlbFRoaWNrbmVzcz9lLmJldmVsVGhpY2tuZXNzOjYscD12b2lkIDAhPT1lLmJldmVsU2l6ZT9lLmJldmVsU2l6ZTpkLTIsbT12b2lkIDAhPT1lLmJldmVsT2Zmc2V0P2UuYmV2ZWxPZmZzZXQ6MCxmPXZvaWQgMCE9PWUuYmV2ZWxTZWdtZW50cz9lLmJldmVsU2VnbWVudHM6Mztjb25zdCB1PWUuZXh0cnVkZVBhdGgsZz12b2lkIDAhPT1lLlVWR2VuZXJhdG9yP2UuVVZHZW5lcmF0b3I6T3V0O3ZvaWQgMCE9PWUuYW1vdW50JiYoY29uc29sZS53YXJuKCJUSFJFRS5FeHRydWRlQnVmZmVyR2VvbWV0cnk6IGFtb3VudCBoYXMgYmVlbiByZW5hbWVkIHRvIGRlcHRoLiIpLGw9ZS5hbW91bnQpO2xldCBoLGIseSxfLEMsTT0hMTt1JiYoaD11LmdldFNwYWNlZFBvaW50cyhzKSxNPSEwLGM9ITEsYj11LmNvbXB1dGVGcmVuZXRGcmFtZXMocywhMSkseT1uZXcgd3N0LF89bmV3IHdzdCxDPW5ldyB3c3QpLGN8fChmPTAsZD0wLHA9MCxtPTApO2NvbnN0IHY9dC5leHRyYWN0UG9pbnRzKHIpO2xldCB4PXYuc2hhcGU7Y29uc3QgTz12LmhvbGVzO2lmKCFDdXQuaXNDbG9ja1dpc2UoeCkpe3g9eC5yZXZlcnNlKCk7Zm9yKGxldCB0PTAsZT1PLmxlbmd0aDt0PGU7dCsrKXtjb25zdCBlPU9bdF07Q3V0LmlzQ2xvY2tXaXNlKGUpJiYoT1t0XT1lLnJldmVyc2UoKSl9fWNvbnN0IFA9Q3V0LnRyaWFuZ3VsYXRlU2hhcGUoeCxPKSx3PXg7Zm9yKGxldCB0PTAsZT1PLmxlbmd0aDt0PGU7dCsrKXt4PXguY29uY2F0KE9bdF0pfWZ1bmN0aW9uIGsodCxlLG4pe3JldHVybiBlfHxjb25zb2xlLmVycm9yKCJUSFJFRS5FeHRydWRlR2VvbWV0cnk6IHZlYyBkb2VzIG5vdCBleGlzdCIpLGUuY2xvbmUoKS5tdWx0aXBseVNjYWxhcihuKS5hZGQodCl9Y29uc3QgUz14Lmxlbmd0aCxEPVAubGVuZ3RoO2Z1bmN0aW9uIFIodCxlLG4pe2xldCBvLGksYTtjb25zdCByPXQueC1lLngscz10LnktZS55LGw9bi54LXQueCxjPW4ueS10LnksZD1yKnIrcypzO2lmKE1hdGguYWJzKHIqYy1zKmwpPk51bWJlci5FUFNJTE9OKXtjb25zdCBwPU1hdGguc3FydChkKSxtPU1hdGguc3FydChsKmwrYypjKSxmPWUueC1zL3AsdT1lLnkrci9wLGc9KChuLngtYy9tLWYpKmMtKG4ueStsL20tdSkqbCkvKHIqYy1zKmwpO289ZityKmctdC54LGk9dStzKmctdC55O2NvbnN0IGg9bypvK2kqaTtpZihoPD0yKXJldHVybiBuZXcgZ3N0KG8saSk7YT1NYXRoLnNxcnQoaC8yKX1lbHNle2xldCB0PSExO3I+TnVtYmVyLkVQU0lMT04/bD5OdW1iZXIuRVBTSUxPTiYmKHQ9ITApOnI8LU51bWJlci5FUFNJTE9OP2w8LU51bWJlci5FUFNJTE9OJiYodD0hMCk6TWF0aC5zaWduKHMpPT09TWF0aC5zaWduKGMpJiYodD0hMCksdD8obz0tcyxpPXIsYT1NYXRoLnNxcnQoZCkpOihvPXIsaT1zLGE9TWF0aC5zcXJ0KGQvMikpfXJldHVybiBuZXcgZ3N0KG8vYSxpL2EpfWNvbnN0IEU9W107Zm9yKGxldCB0PTAsZT13Lmxlbmd0aCxuPWUtMSxvPXQrMTt0PGU7dCsrLG4rKyxvKyspbj09PWUmJihuPTApLG89PT1lJiYobz0wKSxFW3RdPVIod1t0XSx3W25dLHdbb10pO2NvbnN0IEE9W107bGV0IFQsTj1FLmNvbmNhdCgpO2ZvcihsZXQgdD0wLGU9Ty5sZW5ndGg7dDxlO3QrKyl7Y29uc3QgZT1PW3RdO1Q9W107Zm9yKGxldCB0PTAsbj1lLmxlbmd0aCxvPW4tMSxpPXQrMTt0PG47dCsrLG8rKyxpKyspbz09PW4mJihvPTApLGk9PT1uJiYoaT0wKSxUW3RdPVIoZVt0XSxlW29dLGVbaV0pO0EucHVzaChUKSxOPU4uY29uY2F0KFQpfWZvcihsZXQgdD0wO3Q8Zjt0Kyspe2NvbnN0IGU9dC9mLG49ZCpNYXRoLmNvcyhlKk1hdGguUEkvMiksbz1wKk1hdGguc2luKGUqTWF0aC5QSS8yKSttO2ZvcihsZXQgdD0wLGU9dy5sZW5ndGg7dDxlO3QrKyl7Y29uc3QgZT1rKHdbdF0sRVt0XSxvKTtIKGUueCxlLnksLW4pfWZvcihsZXQgdD0wLGU9Ty5sZW5ndGg7dDxlO3QrKyl7Y29uc3QgZT1PW3RdO1Q9QVt0XTtmb3IobGV0IHQ9MCxpPWUubGVuZ3RoO3Q8aTt0Kyspe2NvbnN0IGk9ayhlW3RdLFRbdF0sbyk7SChpLngsaS55LC1uKX19fWNvbnN0IHo9cCttO2ZvcihsZXQgdD0wO3Q8Uzt0Kyspe2NvbnN0IGU9Yz9rKHhbdF0sTlt0XSx6KTp4W3RdO00/KF8uY29weShiLm5vcm1hbHNbMF0pLm11bHRpcGx5U2NhbGFyKGUueCkseS5jb3B5KGIuYmlub3JtYWxzWzBdKS5tdWx0aXBseVNjYWxhcihlLnkpLEMuY29weShoWzBdKS5hZGQoXykuYWRkKHkpLEgoQy54LEMueSxDLnopKTpIKGUueCxlLnksMCl9Zm9yKGxldCB0PTE7dDw9czt0KyspZm9yKGxldCBlPTA7ZTxTO2UrKyl7Y29uc3Qgbj1jP2soeFtlXSxOW2VdLHopOnhbZV07TT8oXy5jb3B5KGIubm9ybWFsc1t0XSkubXVsdGlwbHlTY2FsYXIobi54KSx5LmNvcHkoYi5iaW5vcm1hbHNbdF0pLm11bHRpcGx5U2NhbGFyKG4ueSksQy5jb3B5KGhbdF0pLmFkZChfKS5hZGQoeSksSChDLngsQy55LEMueikpOkgobi54LG4ueSxsL3MqdCl9Zm9yKGxldCB0PWYtMTt0Pj0wO3QtLSl7Y29uc3QgZT10L2Ysbj1kKk1hdGguY29zKGUqTWF0aC5QSS8yKSxvPXAqTWF0aC5zaW4oZSpNYXRoLlBJLzIpK207Zm9yKGxldCB0PTAsZT13Lmxlbmd0aDt0PGU7dCsrKXtjb25zdCBlPWsod1t0XSxFW3RdLG8pO0goZS54LGUueSxsK24pfWZvcihsZXQgdD0wLGU9Ty5sZW5ndGg7dDxlO3QrKyl7Y29uc3QgZT1PW3RdO1Q9QVt0XTtmb3IobGV0IHQ9MCxpPWUubGVuZ3RoO3Q8aTt0Kyspe2NvbnN0IGk9ayhlW3RdLFRbdF0sbyk7TT9IKGkueCxpLnkraFtzLTFdLnksaFtzLTFdLngrbik6SChpLngsaS55LGwrbil9fX1mdW5jdGlvbiBJKHQsZSl7bGV0IG49dC5sZW5ndGg7Zm9yKDstLW4+PTA7KXtjb25zdCBvPW47bGV0IGk9bi0xO2k8MCYmKGk9dC5sZW5ndGgtMSk7Zm9yKGxldCB0PTAsbj1zKzIqZjt0PG47dCsrKXtjb25zdCBuPVMqdCxhPVMqKHQrMSk7TChlK28rbixlK2krbixlK2krYSxlK28rYSl9fX1mdW5jdGlvbiBIKHQsZSxuKXthLnB1c2godCksYS5wdXNoKGUpLGEucHVzaChuKX1mdW5jdGlvbiBGKHQsZSxpKXtCKHQpLEIoZSksQihpKTtjb25zdCBhPW8ubGVuZ3RoLzMscj1nLmdlbmVyYXRlVG9wVVYobixvLGEtMyxhLTIsYS0xKTtWKHJbMF0pLFYoclsxXSksVihyWzJdKX1mdW5jdGlvbiBMKHQsZSxpLGEpe0IodCksQihlKSxCKGEpLEIoZSksQihpKSxCKGEpO2NvbnN0IHI9by5sZW5ndGgvMyxzPWcuZ2VuZXJhdGVTaWRlV2FsbFVWKG4sbyxyLTYsci0zLHItMixyLTEpO1Yoc1swXSksVihzWzFdKSxWKHNbM10pLFYoc1sxXSksVihzWzJdKSxWKHNbM10pfWZ1bmN0aW9uIEIodCl7by5wdXNoKGFbMyp0KzBdKSxvLnB1c2goYVszKnQrMV0pLG8ucHVzaChhWzMqdCsyXSl9ZnVuY3Rpb24gVih0KXtpLnB1c2godC54KSxpLnB1c2godC55KX0hKGZ1bmN0aW9uIGooKXtjb25zdCB0PW8ubGVuZ3RoLzM7aWYoYyl7bGV0IHQ9MCxlPVMqdDtmb3IobGV0IHQ9MDt0PEQ7dCsrKXtjb25zdCBuPVBbdF07RihuWzJdK2UsblsxXStlLG5bMF0rZSl9dD1zKzIqZixlPVMqdDtmb3IobGV0IHQ9MDt0PEQ7dCsrKXtjb25zdCBuPVBbdF07RihuWzBdK2UsblsxXStlLG5bMl0rZSl9fWVsc2V7Zm9yKGxldCB0PTA7dDxEO3QrKyl7Y29uc3QgZT1QW3RdO0YoZVsyXSxlWzFdLGVbMF0pfWZvcihsZXQgdD0wO3Q8RDt0Kyspe2NvbnN0IGU9UFt0XTtGKGVbMF0rUypzLGVbMV0rUypzLGVbMl0rUypzKX19bi5hZGRHcm91cCh0LG8ubGVuZ3RoLzMtdCwwKX0pKCksKGZ1bmN0aW9uIFUoKXtjb25zdCB0PW8ubGVuZ3RoLzM7bGV0IGU9MDtJKHcsZSksZSs9dy5sZW5ndGg7Zm9yKGxldCB0PTAsbj1PLmxlbmd0aDt0PG47dCsrKXtjb25zdCBuPU9bdF07SShuLGUpLGUrPW4ubGVuZ3RofW4uYWRkR3JvdXAodCxvLmxlbmd0aC8zLXQsMSl9KSgpfXRoaXMuc2V0QXR0cmlidXRlKCJwb3NpdGlvbiIsbmV3IGVjdChvLDMpKSx0aGlzLnNldEF0dHJpYnV0ZSgidXYiLG5ldyBlY3QoaSwyKSksdGhpcy5jb21wdXRlVmVydGV4Tm9ybWFscygpfXRvSlNPTigpe2NvbnN0IHQ9c3VwZXIudG9KU09OKCk7cmV0dXJuKGZ1bmN0aW9uIGUodCxuLG8pe2lmKG8uc2hhcGVzPVtdLEFycmF5LmlzQXJyYXkodCkpZm9yKGxldCBlPTAsbj10Lmxlbmd0aDtlPG47ZSsrKXtvLnNoYXBlcy5wdXNoKHRbZV0udXVpZCl9ZWxzZSBvLnNoYXBlcy5wdXNoKHQudXVpZCk7dm9pZCAwIT09bi5leHRydWRlUGF0aCYmKG8ub3B0aW9ucy5leHRydWRlUGF0aD1uLmV4dHJ1ZGVQYXRoLnRvSlNPTigpKTtyZXR1cm4gb30pKHRoaXMucGFyYW1ldGVycy5zaGFwZXMsdGhpcy5wYXJhbWV0ZXJzLm9wdGlvbnMsdCl9c3RhdGljIGZyb21KU09OKHQsZSl7Y29uc3Qgbj1bXTtmb3IobGV0IG89MCxpPXQuc2hhcGVzLmxlbmd0aDtvPGk7bysrKXtuLnB1c2goZVt0LnNoYXBlc1tvXV0pfWNvbnN0IG89dC5vcHRpb25zLmV4dHJ1ZGVQYXRoO3JldHVybiB2b2lkIDAhPT1vJiYodC5vcHRpb25zLmV4dHJ1ZGVQYXRoPShuZXcgWmZ0W28udHlwZV0pLmZyb21KU09OKG8pKSxuZXcgeHV0KG4sdC5vcHRpb25zKX19Y29uc3QgT3V0PXtnZW5lcmF0ZVRvcFVWOmZ1bmN0aW9uKHQsZSxuLG8saSl7Y29uc3QgYT1lWzMqb10scj1lWzMqbysxXSxzPWVbMyppXSxsPWVbMyppKzFdO3JldHVybltuZXcgZ3N0KGVbMypuXSxlWzMqbisxXSksbmV3IGdzdChhLHIpLG5ldyBnc3QocyxsKV19LGdlbmVyYXRlU2lkZVdhbGxVVjpmdW5jdGlvbih0LGUsbixvLGksYSl7Y29uc3Qgcj1lWzMqbl0scz1lWzMqbisxXSxsPWVbMypuKzJdLGM9ZVszKm9dLGQ9ZVszKm8rMV0scD1lWzMqbysyXSxtPWVbMyppXSxmPWVbMyppKzFdLHU9ZVszKmkrMl0sZz1lWzMqYV0saD1lWzMqYSsxXSxiPWVbMyphKzJdO3JldHVybiBNYXRoLmFicyhzLWQpPE1hdGguYWJzKHItYyk/W25ldyBnc3QociwxLWwpLG5ldyBnc3QoYywxLXApLG5ldyBnc3QobSwxLXUpLG5ldyBnc3QoZywxLWIpXTpbbmV3IGdzdChzLDEtbCksbmV3IGdzdChkLDEtcCksbmV3IGdzdChmLDEtdSksbmV3IGdzdChoLDEtYildfX07Y2xhc3MgUHV0IGV4dGVuZHMgZGN0e2NvbnN0cnVjdG9yKHQsZT0xMil7c3VwZXIoKSx0aGlzLnR5cGU9IlNoYXBlR2VvbWV0cnkiLHRoaXMucGFyYW1ldGVycz17c2hhcGVzOnQsY3VydmVTZWdtZW50czplfTtjb25zdCBuPVtdLG89W10saT1bXSxhPVtdO2xldCByPTAscz0wO2lmKCExPT09QXJyYXkuaXNBcnJheSh0KSlsKHQpO2Vsc2UgZm9yKGxldCBlPTA7ZTx0Lmxlbmd0aDtlKyspbCh0W2VdKSx0aGlzLmFkZEdyb3VwKHIscyxlKSxyKz1zLHM9MDtmdW5jdGlvbiBsKHQpe2NvbnN0IHI9by5sZW5ndGgvMyxsPXQuZXh0cmFjdFBvaW50cyhlKTtsZXQgYz1sLnNoYXBlO2NvbnN0IGQ9bC5ob2xlczshMT09PUN1dC5pc0Nsb2NrV2lzZShjKSYmKGM9Yy5yZXZlcnNlKCkpO2ZvcihsZXQgdD0wLGU9ZC5sZW5ndGg7dDxlO3QrKyl7Y29uc3QgZT1kW3RdOyEwPT09Q3V0LmlzQ2xvY2tXaXNlKGUpJiYoZFt0XT1lLnJldmVyc2UoKSl9Y29uc3QgcD1DdXQudHJpYW5ndWxhdGVTaGFwZShjLGQpO2ZvcihsZXQgdD0wLGU9ZC5sZW5ndGg7dDxlO3QrKyl7Yz1jLmNvbmNhdChkW3RdKX1mb3IobGV0IHQ9MCxlPWMubGVuZ3RoO3Q8ZTt0Kyspe2NvbnN0IGU9Y1t0XTtvLnB1c2goZS54LGUueSwwKSxpLnB1c2goMCwwLDEpLGEucHVzaChlLngsZS55KX1mb3IobGV0IHQ9MCxlPXAubGVuZ3RoO3Q8ZTt0Kyspe2NvbnN0IGU9cFt0XTtuLnB1c2goZVswXStyLGVbMV0rcixlWzJdK3IpLHMrPTN9fXRoaXMuc2V0SW5kZXgobiksdGhpcy5zZXRBdHRyaWJ1dGUoInBvc2l0aW9uIixuZXcgZWN0KG8sMykpLHRoaXMuc2V0QXR0cmlidXRlKCJub3JtYWwiLG5ldyBlY3QoaSwzKSksdGhpcy5zZXRBdHRyaWJ1dGUoInV2IixuZXcgZWN0KGEsMikpfXRvSlNPTigpe2NvbnN0IHQ9c3VwZXIudG9KU09OKCk7cmV0dXJuKGZ1bmN0aW9uIGUodCxuKXtpZihuLnNoYXBlcz1bXSxBcnJheS5pc0FycmF5KHQpKWZvcihsZXQgZT0wLG89dC5sZW5ndGg7ZTxvO2UrKyl7bi5zaGFwZXMucHVzaCh0W2VdLnV1aWQpfWVsc2Ugbi5zaGFwZXMucHVzaCh0LnV1aWQpO3JldHVybiBufSkodGhpcy5wYXJhbWV0ZXJzLnNoYXBlcyx0KX1zdGF0aWMgZnJvbUpTT04odCxlKXtjb25zdCBuPVtdO2ZvcihsZXQgbz0wLGk9dC5zaGFwZXMubGVuZ3RoO288aTtvKyspe24ucHVzaChlW3Quc2hhcGVzW29dXSl9cmV0dXJuIG5ldyBQdXQobix0LmN1cnZlU2VnbWVudHMpfX0oY2xhc3MgZXh0ZW5kcyBWbHR7Y29uc3RydWN0b3IodCl7c3VwZXIoKSx0aGlzLnR5cGU9IlNoYWRvd01hdGVyaWFsIix0aGlzLmNvbG9yPW5ldyBabHQoMCksdGhpcy50cmFuc3BhcmVudD0hMCx0aGlzLnNldFZhbHVlcyh0KX1jb3B5KHQpe3JldHVybiBzdXBlci5jb3B5KHQpLHRoaXMuY29sb3IuY29weSh0LmNvbG9yKSx0aGlzfX0pLnByb3RvdHlwZS5pc1NoYWRvd01hdGVyaWFsPSEwO2NsYXNzIHd1dCBleHRlbmRzIFZsdHtjb25zdHJ1Y3Rvcih0KXtzdXBlcigpLHRoaXMuZGVmaW5lcz17U1RBTkRBUkQ6IiJ9LHRoaXMudHlwZT0iTWVzaFN0YW5kYXJkTWF0ZXJpYWwiLHRoaXMuY29sb3I9bmV3IFpsdCgxNjc3NzIxNSksdGhpcy5yb3VnaG5lc3M9MSx0aGlzLm1ldGFsbmVzcz0wLHRoaXMubWFwPW51bGwsdGhpcy5saWdodE1hcD1udWxsLHRoaXMubGlnaHRNYXBJbnRlbnNpdHk9MSx0aGlzLmFvTWFwPW51bGwsdGhpcy5hb01hcEludGVuc2l0eT0xLHRoaXMuZW1pc3NpdmU9bmV3IFpsdCgwKSx0aGlzLmVtaXNzaXZlSW50ZW5zaXR5PTEsdGhpcy5lbWlzc2l2ZU1hcD1udWxsLHRoaXMuYnVtcE1hcD1udWxsLHRoaXMuYnVtcFNjYWxlPTEsdGhpcy5ub3JtYWxNYXA9bnVsbCx0aGlzLm5vcm1hbE1hcFR5cGU9MCx0aGlzLm5vcm1hbFNjYWxlPW5ldyBnc3QoMSwxKSx0aGlzLmRpc3BsYWNlbWVudE1hcD1udWxsLHRoaXMuZGlzcGxhY2VtZW50U2NhbGU9MSx0aGlzLmRpc3BsYWNlbWVudEJpYXM9MCx0aGlzLnJvdWdobmVzc01hcD1udWxsLHRoaXMubWV0YWxuZXNzTWFwPW51bGwsdGhpcy5hbHBoYU1hcD1udWxsLHRoaXMuZW52TWFwPW51bGwsdGhpcy5lbnZNYXBJbnRlbnNpdHk9MSx0aGlzLnJlZnJhY3Rpb25SYXRpbz0uOTgsdGhpcy53aXJlZnJhbWU9ITEsdGhpcy53aXJlZnJhbWVMaW5ld2lkdGg9MSx0aGlzLndpcmVmcmFtZUxpbmVjYXA9InJvdW5kIix0aGlzLndpcmVmcmFtZUxpbmVqb2luPSJyb3VuZCIsdGhpcy5mbGF0U2hhZGluZz0hMSx0aGlzLnNldFZhbHVlcyh0KX1jb3B5KHQpe3JldHVybiBzdXBlci5jb3B5KHQpLHRoaXMuZGVmaW5lcz17U1RBTkRBUkQ6IiJ9LHRoaXMuY29sb3IuY29weSh0LmNvbG9yKSx0aGlzLnJvdWdobmVzcz10LnJvdWdobmVzcyx0aGlzLm1ldGFsbmVzcz10Lm1ldGFsbmVzcyx0aGlzLm1hcD10Lm1hcCx0aGlzLmxpZ2h0TWFwPXQubGlnaHRNYXAsdGhpcy5saWdodE1hcEludGVuc2l0eT10LmxpZ2h0TWFwSW50ZW5zaXR5LHRoaXMuYW9NYXA9dC5hb01hcCx0aGlzLmFvTWFwSW50ZW5zaXR5PXQuYW9NYXBJbnRlbnNpdHksdGhpcy5lbWlzc2l2ZS5jb3B5KHQuZW1pc3NpdmUpLHRoaXMuZW1pc3NpdmVNYXA9dC5lbWlzc2l2ZU1hcCx0aGlzLmVtaXNzaXZlSW50ZW5zaXR5PXQuZW1pc3NpdmVJbnRlbnNpdHksdGhpcy5idW1wTWFwPXQuYnVtcE1hcCx0aGlzLmJ1bXBTY2FsZT10LmJ1bXBTY2FsZSx0aGlzLm5vcm1hbE1hcD10Lm5vcm1hbE1hcCx0aGlzLm5vcm1hbE1hcFR5cGU9dC5ub3JtYWxNYXBUeXBlLHRoaXMubm9ybWFsU2NhbGUuY29weSh0Lm5vcm1hbFNjYWxlKSx0aGlzLmRpc3BsYWNlbWVudE1hcD10LmRpc3BsYWNlbWVudE1hcCx0aGlzLmRpc3BsYWNlbWVudFNjYWxlPXQuZGlzcGxhY2VtZW50U2NhbGUsdGhpcy5kaXNwbGFjZW1lbnRCaWFzPXQuZGlzcGxhY2VtZW50Qmlhcyx0aGlzLnJvdWdobmVzc01hcD10LnJvdWdobmVzc01hcCx0aGlzLm1ldGFsbmVzc01hcD10Lm1ldGFsbmVzc01hcCx0aGlzLmFscGhhTWFwPXQuYWxwaGFNYXAsdGhpcy5lbnZNYXA9dC5lbnZNYXAsdGhpcy5lbnZNYXBJbnRlbnNpdHk9dC5lbnZNYXBJbnRlbnNpdHksdGhpcy5yZWZyYWN0aW9uUmF0aW89dC5yZWZyYWN0aW9uUmF0aW8sdGhpcy53aXJlZnJhbWU9dC53aXJlZnJhbWUsdGhpcy53aXJlZnJhbWVMaW5ld2lkdGg9dC53aXJlZnJhbWVMaW5ld2lkdGgsdGhpcy53aXJlZnJhbWVMaW5lY2FwPXQud2lyZWZyYW1lTGluZWNhcCx0aGlzLndpcmVmcmFtZUxpbmVqb2luPXQud2lyZWZyYW1lTGluZWpvaW4sdGhpcy5mbGF0U2hhZGluZz10LmZsYXRTaGFkaW5nLHRoaXN9fXd1dC5wcm90b3R5cGUuaXNNZXNoU3RhbmRhcmRNYXRlcmlhbD0hMDsoY2xhc3MgZXh0ZW5kcyB3dXR7Y29uc3RydWN0b3IodCl7c3VwZXIoKSx0aGlzLmRlZmluZXM9e1NUQU5EQVJEOiIiLFBIWVNJQ0FMOiIifSx0aGlzLnR5cGU9Ik1lc2hQaHlzaWNhbE1hdGVyaWFsIix0aGlzLmNsZWFyY29hdD0wLHRoaXMuY2xlYXJjb2F0TWFwPW51bGwsdGhpcy5jbGVhcmNvYXRSb3VnaG5lc3M9MCx0aGlzLmNsZWFyY29hdFJvdWdobmVzc01hcD1udWxsLHRoaXMuY2xlYXJjb2F0Tm9ybWFsU2NhbGU9bmV3IGdzdCgxLDEpLHRoaXMuY2xlYXJjb2F0Tm9ybWFsTWFwPW51bGwsdGhpcy5yZWZsZWN0aXZpdHk9LjUsT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsImlvciIse2dldDpmdW5jdGlvbigpe3JldHVybigxKy40KnRoaXMucmVmbGVjdGl2aXR5KS8oMS0uNCp0aGlzLnJlZmxlY3Rpdml0eSl9LHNldDpmdW5jdGlvbih0KXt0aGlzLnJlZmxlY3Rpdml0eT1wc3QoMi41Kih0LTEpLyh0KzEpLDAsMSl9fSksdGhpcy5zaGVlbj1udWxsLHRoaXMudHJhbnNtaXNzaW9uPTAsdGhpcy50cmFuc21pc3Npb25NYXA9bnVsbCx0aGlzLnRoaWNrbmVzcz0uMDEsdGhpcy50aGlja25lc3NNYXA9bnVsbCx0aGlzLmF0dGVudWF0aW9uRGlzdGFuY2U9MCx0aGlzLmF0dGVudWF0aW9uVGludD1uZXcgWmx0KDEsMSwxKSx0aGlzLnNwZWN1bGFySW50ZW5zaXR5PTEsdGhpcy5zcGVjdWxhckludGVuc2l0eU1hcD1udWxsLHRoaXMuc3BlY3VsYXJUaW50PW5ldyBabHQoMSwxLDEpLHRoaXMuc3BlY3VsYXJUaW50TWFwPW51bGwsdGhpcy5zZXRWYWx1ZXModCl9Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLmRlZmluZXM9e1NUQU5EQVJEOiIiLFBIWVNJQ0FMOiIifSx0aGlzLmNsZWFyY29hdD10LmNsZWFyY29hdCx0aGlzLmNsZWFyY29hdE1hcD10LmNsZWFyY29hdE1hcCx0aGlzLmNsZWFyY29hdFJvdWdobmVzcz10LmNsZWFyY29hdFJvdWdobmVzcyx0aGlzLmNsZWFyY29hdFJvdWdobmVzc01hcD10LmNsZWFyY29hdFJvdWdobmVzc01hcCx0aGlzLmNsZWFyY29hdE5vcm1hbE1hcD10LmNsZWFyY29hdE5vcm1hbE1hcCx0aGlzLmNsZWFyY29hdE5vcm1hbFNjYWxlLmNvcHkodC5jbGVhcmNvYXROb3JtYWxTY2FsZSksdGhpcy5yZWZsZWN0aXZpdHk9dC5yZWZsZWN0aXZpdHksdGhpcy5zaGVlbj10LnNoZWVuPyh0aGlzLnNoZWVufHxuZXcgWmx0KS5jb3B5KHQuc2hlZW4pOm51bGwsdGhpcy50cmFuc21pc3Npb249dC50cmFuc21pc3Npb24sdGhpcy50cmFuc21pc3Npb25NYXA9dC50cmFuc21pc3Npb25NYXAsdGhpcy50aGlja25lc3M9dC50aGlja25lc3MsdGhpcy50aGlja25lc3NNYXA9dC50aGlja25lc3NNYXAsdGhpcy5hdHRlbnVhdGlvbkRpc3RhbmNlPXQuYXR0ZW51YXRpb25EaXN0YW5jZSx0aGlzLmF0dGVudWF0aW9uVGludC5jb3B5KHQuYXR0ZW51YXRpb25UaW50KSx0aGlzLnNwZWN1bGFySW50ZW5zaXR5PXQuc3BlY3VsYXJJbnRlbnNpdHksdGhpcy5zcGVjdWxhckludGVuc2l0eU1hcD10LnNwZWN1bGFySW50ZW5zaXR5TWFwLHRoaXMuc3BlY3VsYXJUaW50LmNvcHkodC5zcGVjdWxhclRpbnQpLHRoaXMuc3BlY3VsYXJUaW50TWFwPXQuc3BlY3VsYXJUaW50TWFwLHRoaXN9fSkucHJvdG90eXBlLmlzTWVzaFBoeXNpY2FsTWF0ZXJpYWw9ITA7KGNsYXNzIGV4dGVuZHMgVmx0e2NvbnN0cnVjdG9yKHQpe3N1cGVyKCksdGhpcy50eXBlPSJNZXNoUGhvbmdNYXRlcmlhbCIsdGhpcy5jb2xvcj1uZXcgWmx0KDE2Nzc3MjE1KSx0aGlzLnNwZWN1bGFyPW5ldyBabHQoMTExODQ4MSksdGhpcy5zaGluaW5lc3M9MzAsdGhpcy5tYXA9bnVsbCx0aGlzLmxpZ2h0TWFwPW51bGwsdGhpcy5saWdodE1hcEludGVuc2l0eT0xLHRoaXMuYW9NYXA9bnVsbCx0aGlzLmFvTWFwSW50ZW5zaXR5PTEsdGhpcy5lbWlzc2l2ZT1uZXcgWmx0KDApLHRoaXMuZW1pc3NpdmVJbnRlbnNpdHk9MSx0aGlzLmVtaXNzaXZlTWFwPW51bGwsdGhpcy5idW1wTWFwPW51bGwsdGhpcy5idW1wU2NhbGU9MSx0aGlzLm5vcm1hbE1hcD1udWxsLHRoaXMubm9ybWFsTWFwVHlwZT0wLHRoaXMubm9ybWFsU2NhbGU9bmV3IGdzdCgxLDEpLHRoaXMuZGlzcGxhY2VtZW50TWFwPW51bGwsdGhpcy5kaXNwbGFjZW1lbnRTY2FsZT0xLHRoaXMuZGlzcGxhY2VtZW50Qmlhcz0wLHRoaXMuc3BlY3VsYXJNYXA9bnVsbCx0aGlzLmFscGhhTWFwPW51bGwsdGhpcy5lbnZNYXA9bnVsbCx0aGlzLmNvbWJpbmU9MCx0aGlzLnJlZmxlY3Rpdml0eT0xLHRoaXMucmVmcmFjdGlvblJhdGlvPS45OCx0aGlzLndpcmVmcmFtZT0hMSx0aGlzLndpcmVmcmFtZUxpbmV3aWR0aD0xLHRoaXMud2lyZWZyYW1lTGluZWNhcD0icm91bmQiLHRoaXMud2lyZWZyYW1lTGluZWpvaW49InJvdW5kIix0aGlzLmZsYXRTaGFkaW5nPSExLHRoaXMuc2V0VmFsdWVzKHQpfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5jb2xvci5jb3B5KHQuY29sb3IpLHRoaXMuc3BlY3VsYXIuY29weSh0LnNwZWN1bGFyKSx0aGlzLnNoaW5pbmVzcz10LnNoaW5pbmVzcyx0aGlzLm1hcD10Lm1hcCx0aGlzLmxpZ2h0TWFwPXQubGlnaHRNYXAsdGhpcy5saWdodE1hcEludGVuc2l0eT10LmxpZ2h0TWFwSW50ZW5zaXR5LHRoaXMuYW9NYXA9dC5hb01hcCx0aGlzLmFvTWFwSW50ZW5zaXR5PXQuYW9NYXBJbnRlbnNpdHksdGhpcy5lbWlzc2l2ZS5jb3B5KHQuZW1pc3NpdmUpLHRoaXMuZW1pc3NpdmVNYXA9dC5lbWlzc2l2ZU1hcCx0aGlzLmVtaXNzaXZlSW50ZW5zaXR5PXQuZW1pc3NpdmVJbnRlbnNpdHksdGhpcy5idW1wTWFwPXQuYnVtcE1hcCx0aGlzLmJ1bXBTY2FsZT10LmJ1bXBTY2FsZSx0aGlzLm5vcm1hbE1hcD10Lm5vcm1hbE1hcCx0aGlzLm5vcm1hbE1hcFR5cGU9dC5ub3JtYWxNYXBUeXBlLHRoaXMubm9ybWFsU2NhbGUuY29weSh0Lm5vcm1hbFNjYWxlKSx0aGlzLmRpc3BsYWNlbWVudE1hcD10LmRpc3BsYWNlbWVudE1hcCx0aGlzLmRpc3BsYWNlbWVudFNjYWxlPXQuZGlzcGxhY2VtZW50U2NhbGUsdGhpcy5kaXNwbGFjZW1lbnRCaWFzPXQuZGlzcGxhY2VtZW50Qmlhcyx0aGlzLnNwZWN1bGFyTWFwPXQuc3BlY3VsYXJNYXAsdGhpcy5hbHBoYU1hcD10LmFscGhhTWFwLHRoaXMuZW52TWFwPXQuZW52TWFwLHRoaXMuY29tYmluZT10LmNvbWJpbmUsdGhpcy5yZWZsZWN0aXZpdHk9dC5yZWZsZWN0aXZpdHksdGhpcy5yZWZyYWN0aW9uUmF0aW89dC5yZWZyYWN0aW9uUmF0aW8sdGhpcy53aXJlZnJhbWU9dC53aXJlZnJhbWUsdGhpcy53aXJlZnJhbWVMaW5ld2lkdGg9dC53aXJlZnJhbWVMaW5ld2lkdGgsdGhpcy53aXJlZnJhbWVMaW5lY2FwPXQud2lyZWZyYW1lTGluZWNhcCx0aGlzLndpcmVmcmFtZUxpbmVqb2luPXQud2lyZWZyYW1lTGluZWpvaW4sdGhpcy5mbGF0U2hhZGluZz10LmZsYXRTaGFkaW5nLHRoaXN9fSkucHJvdG90eXBlLmlzTWVzaFBob25nTWF0ZXJpYWw9ITA7KGNsYXNzIGV4dGVuZHMgVmx0e2NvbnN0cnVjdG9yKHQpe3N1cGVyKCksdGhpcy5kZWZpbmVzPXtUT09OOiIifSx0aGlzLnR5cGU9Ik1lc2hUb29uTWF0ZXJpYWwiLHRoaXMuY29sb3I9bmV3IFpsdCgxNjc3NzIxNSksdGhpcy5tYXA9bnVsbCx0aGlzLmdyYWRpZW50TWFwPW51bGwsdGhpcy5saWdodE1hcD1udWxsLHRoaXMubGlnaHRNYXBJbnRlbnNpdHk9MSx0aGlzLmFvTWFwPW51bGwsdGhpcy5hb01hcEludGVuc2l0eT0xLHRoaXMuZW1pc3NpdmU9bmV3IFpsdCgwKSx0aGlzLmVtaXNzaXZlSW50ZW5zaXR5PTEsdGhpcy5lbWlzc2l2ZU1hcD1udWxsLHRoaXMuYnVtcE1hcD1udWxsLHRoaXMuYnVtcFNjYWxlPTEsdGhpcy5ub3JtYWxNYXA9bnVsbCx0aGlzLm5vcm1hbE1hcFR5cGU9MCx0aGlzLm5vcm1hbFNjYWxlPW5ldyBnc3QoMSwxKSx0aGlzLmRpc3BsYWNlbWVudE1hcD1udWxsLHRoaXMuZGlzcGxhY2VtZW50U2NhbGU9MSx0aGlzLmRpc3BsYWNlbWVudEJpYXM9MCx0aGlzLmFscGhhTWFwPW51bGwsdGhpcy53aXJlZnJhbWU9ITEsdGhpcy53aXJlZnJhbWVMaW5ld2lkdGg9MSx0aGlzLndpcmVmcmFtZUxpbmVjYXA9InJvdW5kIix0aGlzLndpcmVmcmFtZUxpbmVqb2luPSJyb3VuZCIsdGhpcy5zZXRWYWx1ZXModCl9Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLmNvbG9yLmNvcHkodC5jb2xvciksdGhpcy5tYXA9dC5tYXAsdGhpcy5ncmFkaWVudE1hcD10LmdyYWRpZW50TWFwLHRoaXMubGlnaHRNYXA9dC5saWdodE1hcCx0aGlzLmxpZ2h0TWFwSW50ZW5zaXR5PXQubGlnaHRNYXBJbnRlbnNpdHksdGhpcy5hb01hcD10LmFvTWFwLHRoaXMuYW9NYXBJbnRlbnNpdHk9dC5hb01hcEludGVuc2l0eSx0aGlzLmVtaXNzaXZlLmNvcHkodC5lbWlzc2l2ZSksdGhpcy5lbWlzc2l2ZU1hcD10LmVtaXNzaXZlTWFwLHRoaXMuZW1pc3NpdmVJbnRlbnNpdHk9dC5lbWlzc2l2ZUludGVuc2l0eSx0aGlzLmJ1bXBNYXA9dC5idW1wTWFwLHRoaXMuYnVtcFNjYWxlPXQuYnVtcFNjYWxlLHRoaXMubm9ybWFsTWFwPXQubm9ybWFsTWFwLHRoaXMubm9ybWFsTWFwVHlwZT10Lm5vcm1hbE1hcFR5cGUsdGhpcy5ub3JtYWxTY2FsZS5jb3B5KHQubm9ybWFsU2NhbGUpLHRoaXMuZGlzcGxhY2VtZW50TWFwPXQuZGlzcGxhY2VtZW50TWFwLHRoaXMuZGlzcGxhY2VtZW50U2NhbGU9dC5kaXNwbGFjZW1lbnRTY2FsZSx0aGlzLmRpc3BsYWNlbWVudEJpYXM9dC5kaXNwbGFjZW1lbnRCaWFzLHRoaXMuYWxwaGFNYXA9dC5hbHBoYU1hcCx0aGlzLndpcmVmcmFtZT10LndpcmVmcmFtZSx0aGlzLndpcmVmcmFtZUxpbmV3aWR0aD10LndpcmVmcmFtZUxpbmV3aWR0aCx0aGlzLndpcmVmcmFtZUxpbmVjYXA9dC53aXJlZnJhbWVMaW5lY2FwLHRoaXMud2lyZWZyYW1lTGluZWpvaW49dC53aXJlZnJhbWVMaW5lam9pbix0aGlzfX0pLnByb3RvdHlwZS5pc01lc2hUb29uTWF0ZXJpYWw9ITA7KGNsYXNzIGV4dGVuZHMgVmx0e2NvbnN0cnVjdG9yKHQpe3N1cGVyKCksdGhpcy50eXBlPSJNZXNoTm9ybWFsTWF0ZXJpYWwiLHRoaXMuYnVtcE1hcD1udWxsLHRoaXMuYnVtcFNjYWxlPTEsdGhpcy5ub3JtYWxNYXA9bnVsbCx0aGlzLm5vcm1hbE1hcFR5cGU9MCx0aGlzLm5vcm1hbFNjYWxlPW5ldyBnc3QoMSwxKSx0aGlzLmRpc3BsYWNlbWVudE1hcD1udWxsLHRoaXMuZGlzcGxhY2VtZW50U2NhbGU9MSx0aGlzLmRpc3BsYWNlbWVudEJpYXM9MCx0aGlzLndpcmVmcmFtZT0hMSx0aGlzLndpcmVmcmFtZUxpbmV3aWR0aD0xLHRoaXMuZm9nPSExLHRoaXMuZmxhdFNoYWRpbmc9ITEsdGhpcy5zZXRWYWx1ZXModCl9Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLmJ1bXBNYXA9dC5idW1wTWFwLHRoaXMuYnVtcFNjYWxlPXQuYnVtcFNjYWxlLHRoaXMubm9ybWFsTWFwPXQubm9ybWFsTWFwLHRoaXMubm9ybWFsTWFwVHlwZT10Lm5vcm1hbE1hcFR5cGUsdGhpcy5ub3JtYWxTY2FsZS5jb3B5KHQubm9ybWFsU2NhbGUpLHRoaXMuZGlzcGxhY2VtZW50TWFwPXQuZGlzcGxhY2VtZW50TWFwLHRoaXMuZGlzcGxhY2VtZW50U2NhbGU9dC5kaXNwbGFjZW1lbnRTY2FsZSx0aGlzLmRpc3BsYWNlbWVudEJpYXM9dC5kaXNwbGFjZW1lbnRCaWFzLHRoaXMud2lyZWZyYW1lPXQud2lyZWZyYW1lLHRoaXMud2lyZWZyYW1lTGluZXdpZHRoPXQud2lyZWZyYW1lTGluZXdpZHRoLHRoaXMuZmxhdFNoYWRpbmc9dC5mbGF0U2hhZGluZyx0aGlzfX0pLnByb3RvdHlwZS5pc01lc2hOb3JtYWxNYXRlcmlhbD0hMDsoY2xhc3MgZXh0ZW5kcyBWbHR7Y29uc3RydWN0b3IodCl7c3VwZXIoKSx0aGlzLnR5cGU9Ik1lc2hMYW1iZXJ0TWF0ZXJpYWwiLHRoaXMuY29sb3I9bmV3IFpsdCgxNjc3NzIxNSksdGhpcy5tYXA9bnVsbCx0aGlzLmxpZ2h0TWFwPW51bGwsdGhpcy5saWdodE1hcEludGVuc2l0eT0xLHRoaXMuYW9NYXA9bnVsbCx0aGlzLmFvTWFwSW50ZW5zaXR5PTEsdGhpcy5lbWlzc2l2ZT1uZXcgWmx0KDApLHRoaXMuZW1pc3NpdmVJbnRlbnNpdHk9MSx0aGlzLmVtaXNzaXZlTWFwPW51bGwsdGhpcy5zcGVjdWxhck1hcD1udWxsLHRoaXMuYWxwaGFNYXA9bnVsbCx0aGlzLmVudk1hcD1udWxsLHRoaXMuY29tYmluZT0wLHRoaXMucmVmbGVjdGl2aXR5PTEsdGhpcy5yZWZyYWN0aW9uUmF0aW89Ljk4LHRoaXMud2lyZWZyYW1lPSExLHRoaXMud2lyZWZyYW1lTGluZXdpZHRoPTEsdGhpcy53aXJlZnJhbWVMaW5lY2FwPSJyb3VuZCIsdGhpcy53aXJlZnJhbWVMaW5lam9pbj0icm91bmQiLHRoaXMuc2V0VmFsdWVzKHQpfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5jb2xvci5jb3B5KHQuY29sb3IpLHRoaXMubWFwPXQubWFwLHRoaXMubGlnaHRNYXA9dC5saWdodE1hcCx0aGlzLmxpZ2h0TWFwSW50ZW5zaXR5PXQubGlnaHRNYXBJbnRlbnNpdHksdGhpcy5hb01hcD10LmFvTWFwLHRoaXMuYW9NYXBJbnRlbnNpdHk9dC5hb01hcEludGVuc2l0eSx0aGlzLmVtaXNzaXZlLmNvcHkodC5lbWlzc2l2ZSksdGhpcy5lbWlzc2l2ZU1hcD10LmVtaXNzaXZlTWFwLHRoaXMuZW1pc3NpdmVJbnRlbnNpdHk9dC5lbWlzc2l2ZUludGVuc2l0eSx0aGlzLnNwZWN1bGFyTWFwPXQuc3BlY3VsYXJNYXAsdGhpcy5hbHBoYU1hcD10LmFscGhhTWFwLHRoaXMuZW52TWFwPXQuZW52TWFwLHRoaXMuY29tYmluZT10LmNvbWJpbmUsdGhpcy5yZWZsZWN0aXZpdHk9dC5yZWZsZWN0aXZpdHksdGhpcy5yZWZyYWN0aW9uUmF0aW89dC5yZWZyYWN0aW9uUmF0aW8sdGhpcy53aXJlZnJhbWU9dC53aXJlZnJhbWUsdGhpcy53aXJlZnJhbWVMaW5ld2lkdGg9dC53aXJlZnJhbWVMaW5ld2lkdGgsdGhpcy53aXJlZnJhbWVMaW5lY2FwPXQud2lyZWZyYW1lTGluZWNhcCx0aGlzLndpcmVmcmFtZUxpbmVqb2luPXQud2lyZWZyYW1lTGluZWpvaW4sdGhpc319KS5wcm90b3R5cGUuaXNNZXNoTGFtYmVydE1hdGVyaWFsPSEwOyhjbGFzcyBleHRlbmRzIFZsdHtjb25zdHJ1Y3Rvcih0KXtzdXBlcigpLHRoaXMuZGVmaW5lcz17TUFUQ0FQOiIifSx0aGlzLnR5cGU9Ik1lc2hNYXRjYXBNYXRlcmlhbCIsdGhpcy5jb2xvcj1uZXcgWmx0KDE2Nzc3MjE1KSx0aGlzLm1hdGNhcD1udWxsLHRoaXMubWFwPW51bGwsdGhpcy5idW1wTWFwPW51bGwsdGhpcy5idW1wU2NhbGU9MSx0aGlzLm5vcm1hbE1hcD1udWxsLHRoaXMubm9ybWFsTWFwVHlwZT0wLHRoaXMubm9ybWFsU2NhbGU9bmV3IGdzdCgxLDEpLHRoaXMuZGlzcGxhY2VtZW50TWFwPW51bGwsdGhpcy5kaXNwbGFjZW1lbnRTY2FsZT0xLHRoaXMuZGlzcGxhY2VtZW50Qmlhcz0wLHRoaXMuYWxwaGFNYXA9bnVsbCx0aGlzLmZsYXRTaGFkaW5nPSExLHRoaXMuc2V0VmFsdWVzKHQpfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5kZWZpbmVzPXtNQVRDQVA6IiJ9LHRoaXMuY29sb3IuY29weSh0LmNvbG9yKSx0aGlzLm1hdGNhcD10Lm1hdGNhcCx0aGlzLm1hcD10Lm1hcCx0aGlzLmJ1bXBNYXA9dC5idW1wTWFwLHRoaXMuYnVtcFNjYWxlPXQuYnVtcFNjYWxlLHRoaXMubm9ybWFsTWFwPXQubm9ybWFsTWFwLHRoaXMubm9ybWFsTWFwVHlwZT10Lm5vcm1hbE1hcFR5cGUsdGhpcy5ub3JtYWxTY2FsZS5jb3B5KHQubm9ybWFsU2NhbGUpLHRoaXMuZGlzcGxhY2VtZW50TWFwPXQuZGlzcGxhY2VtZW50TWFwLHRoaXMuZGlzcGxhY2VtZW50U2NhbGU9dC5kaXNwbGFjZW1lbnRTY2FsZSx0aGlzLmRpc3BsYWNlbWVudEJpYXM9dC5kaXNwbGFjZW1lbnRCaWFzLHRoaXMuYWxwaGFNYXA9dC5hbHBoYU1hcCx0aGlzLmZsYXRTaGFkaW5nPXQuZmxhdFNoYWRpbmcsdGhpc319KS5wcm90b3R5cGUuaXNNZXNoTWF0Y2FwTWF0ZXJpYWw9ITA7KGNsYXNzIGV4dGVuZHMgZmZ0e2NvbnN0cnVjdG9yKHQpe3N1cGVyKCksdGhpcy50eXBlPSJMaW5lRGFzaGVkTWF0ZXJpYWwiLHRoaXMuc2NhbGU9MSx0aGlzLmRhc2hTaXplPTMsdGhpcy5nYXBTaXplPTEsdGhpcy5zZXRWYWx1ZXModCl9Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLnNjYWxlPXQuc2NhbGUsdGhpcy5kYXNoU2l6ZT10LmRhc2hTaXplLHRoaXMuZ2FwU2l6ZT10LmdhcFNpemUsdGhpc319KS5wcm90b3R5cGUuaXNMaW5lRGFzaGVkTWF0ZXJpYWw9ITA7Y29uc3Qga3V0PXthcnJheVNsaWNlOmZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4ga3V0LmlzVHlwZWRBcnJheSh0KT9uZXcgdC5jb25zdHJ1Y3Rvcih0LnN1YmFycmF5KGUsdm9pZCAwIT09bj9uOnQubGVuZ3RoKSk6dC5zbGljZShlLG4pfSxjb252ZXJ0QXJyYXk6ZnVuY3Rpb24odCxlLG4pe3JldHVybiF0fHwhbiYmdC5jb25zdHJ1Y3Rvcj09PWU/dDoibnVtYmVyIj09dHlwZW9mIGUuQllURVNfUEVSX0VMRU1FTlQ/bmV3IGUodCk6QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwodCl9LGlzVHlwZWRBcnJheTpmdW5jdGlvbih0KXtyZXR1cm4gQXJyYXlCdWZmZXIuaXNWaWV3KHQpJiYhKHQgaW5zdGFuY2VvZiBEYXRhVmlldyl9LGdldEtleWZyYW1lT3JkZXI6ZnVuY3Rpb24odCl7Y29uc3QgZT10Lmxlbmd0aCxuPW5ldyBBcnJheShlKTtmb3IobGV0IHQ9MDt0IT09ZTsrK3Qpblt0XT10O3JldHVybiBuLnNvcnQoKGZ1bmN0aW9uIG8oZSxuKXtyZXR1cm4gdFtlXS10W25dfSkpLG59LHNvcnRlZEFycmF5OmZ1bmN0aW9uKHQsZSxuKXtjb25zdCBvPXQubGVuZ3RoLGk9bmV3IHQuY29uc3RydWN0b3Iobyk7Zm9yKGxldCBhPTAscj0wO3IhPT1vOysrYSl7Y29uc3Qgbz1uW2FdKmU7Zm9yKGxldCBuPTA7biE9PWU7KytuKWlbcisrXT10W28rbl19cmV0dXJuIGl9LGZsYXR0ZW5KU09OOmZ1bmN0aW9uKHQsZSxuLG8pe2xldCBpPTEsYT10WzBdO2Zvcig7dm9pZCAwIT09YSYmdm9pZCAwPT09YVtvXTspYT10W2krK107aWYodm9pZCAwPT09YSlyZXR1cm47bGV0IHI9YVtvXTtpZih2b2lkIDAhPT1yKWlmKEFycmF5LmlzQXJyYXkocikpZG97cj1hW29dLHZvaWQgMCE9PXImJihlLnB1c2goYS50aW1lKSxuLnB1c2guYXBwbHkobixyKSksYT10W2krK119d2hpbGUodm9pZCAwIT09YSk7ZWxzZSBpZih2b2lkIDAhPT1yLnRvQXJyYXkpZG97cj1hW29dLHZvaWQgMCE9PXImJihlLnB1c2goYS50aW1lKSxyLnRvQXJyYXkobixuLmxlbmd0aCkpLGE9dFtpKytdfXdoaWxlKHZvaWQgMCE9PWEpO2Vsc2UgZG97cj1hW29dLHZvaWQgMCE9PXImJihlLnB1c2goYS50aW1lKSxuLnB1c2gocikpLGE9dFtpKytdfXdoaWxlKHZvaWQgMCE9PWEpfSxzdWJjbGlwOmZ1bmN0aW9uKHQsZSxuLG8saT0zMCl7Y29uc3QgYT10LmNsb25lKCk7YS5uYW1lPWU7Y29uc3Qgcj1bXTtmb3IobGV0IHQ9MDt0PGEudHJhY2tzLmxlbmd0aDsrK3Qpe2NvbnN0IGU9YS50cmFja3NbdF0scz1lLmdldFZhbHVlU2l6ZSgpLGw9W10sYz1bXTtmb3IobGV0IHQ9MDt0PGUudGltZXMubGVuZ3RoOysrdCl7Y29uc3QgYT1lLnRpbWVzW3RdKmk7aWYoIShhPG58fGE+PW8pKXtsLnB1c2goZS50aW1lc1t0XSk7Zm9yKGxldCBuPTA7bjxzOysrbiljLnB1c2goZS52YWx1ZXNbdCpzK25dKX19MCE9PWwubGVuZ3RoJiYoZS50aW1lcz1rdXQuY29udmVydEFycmF5KGwsZS50aW1lcy5jb25zdHJ1Y3RvciksZS52YWx1ZXM9a3V0LmNvbnZlcnRBcnJheShjLGUudmFsdWVzLmNvbnN0cnVjdG9yKSxyLnB1c2goZSkpfWEudHJhY2tzPXI7bGV0IHM9MS8wO2ZvcihsZXQgdD0wO3Q8YS50cmFja3MubGVuZ3RoOysrdClzPmEudHJhY2tzW3RdLnRpbWVzWzBdJiYocz1hLnRyYWNrc1t0XS50aW1lc1swXSk7Zm9yKGxldCB0PTA7dDxhLnRyYWNrcy5sZW5ndGg7Kyt0KWEudHJhY2tzW3RdLnNoaWZ0KC0xKnMpO3JldHVybiBhLnJlc2V0RHVyYXRpb24oKSxhfSxtYWtlQ2xpcEFkZGl0aXZlOmZ1bmN0aW9uKHQsZT0wLG49dCxvPTMwKXtvPD0wJiYobz0zMCk7Y29uc3QgaT1uLnRyYWNrcy5sZW5ndGgsYT1lL287Zm9yKGxldCBlPTA7ZTxpOysrZSl7Y29uc3Qgbz1uLnRyYWNrc1tlXSxpPW8uVmFsdWVUeXBlTmFtZTtpZigiYm9vbCI9PT1pfHwic3RyaW5nIj09PWkpY29udGludWU7Y29uc3Qgcj10LnRyYWNrcy5maW5kKChmdW5jdGlvbih0KXtyZXR1cm4gdC5uYW1lPT09by5uYW1lJiZ0LlZhbHVlVHlwZU5hbWU9PT1pfSkpO2lmKHZvaWQgMD09PXIpY29udGludWU7bGV0IHM9MDtjb25zdCBsPW8uZ2V0VmFsdWVTaXplKCk7by5jcmVhdGVJbnRlcnBvbGFudC5pc0ludGVycG9sYW50RmFjdG9yeU1ldGhvZEdMVEZDdWJpY1NwbGluZSYmKHM9bC8zKTtsZXQgYz0wO2NvbnN0IGQ9ci5nZXRWYWx1ZVNpemUoKTtyLmNyZWF0ZUludGVycG9sYW50LmlzSW50ZXJwb2xhbnRGYWN0b3J5TWV0aG9kR0xURkN1YmljU3BsaW5lJiYoYz1kLzMpO2NvbnN0IHA9by50aW1lcy5sZW5ndGgtMTtsZXQgbTtpZihhPD1vLnRpbWVzWzBdKXttPWt1dC5hcnJheVNsaWNlKG8udmFsdWVzLHMsbC1zKX1lbHNlIGlmKGE+PW8udGltZXNbcF0pe2NvbnN0IHQ9cCpsK3M7bT1rdXQuYXJyYXlTbGljZShvLnZhbHVlcyx0LHQrbC1zKX1lbHNle2NvbnN0IHQ9by5jcmVhdGVJbnRlcnBvbGFudCgpLGU9cyxuPWwtczt0LmV2YWx1YXRlKGEpLG09a3V0LmFycmF5U2xpY2UodC5yZXN1bHRCdWZmZXIsZSxuKX1pZigicXVhdGVybmlvbiI9PT1pKXsobmV3IFBzdCkuZnJvbUFycmF5KG0pLm5vcm1hbGl6ZSgpLmNvbmp1Z2F0ZSgpLnRvQXJyYXkobSl9Y29uc3QgZj1yLnRpbWVzLmxlbmd0aDtmb3IobGV0IHQ9MDt0PGY7Kyt0KXtjb25zdCBlPXQqZCtjO2lmKCJxdWF0ZXJuaW9uIj09PWkpUHN0Lm11bHRpcGx5UXVhdGVybmlvbnNGbGF0KHIudmFsdWVzLGUsbSwwLHIudmFsdWVzLGUpO2Vsc2V7Y29uc3QgdD1kLTIqYztmb3IobGV0IG49MDtuPHQ7KytuKXIudmFsdWVzW2Urbl0tPW1bbl19fX1yZXR1cm4gdC5ibGVuZE1vZGU9MjUwMSx0fX07Y2xhc3MgU3V0e2NvbnN0cnVjdG9yKHQsZSxuLG8pe3RoaXMucGFyYW1ldGVyUG9zaXRpb25zPXQsdGhpcy5fY2FjaGVkSW5kZXg9MCx0aGlzLnJlc3VsdEJ1ZmZlcj12b2lkIDAhPT1vP286bmV3IGUuY29uc3RydWN0b3IobiksdGhpcy5zYW1wbGVWYWx1ZXM9ZSx0aGlzLnZhbHVlU2l6ZT1uLHRoaXMuc2V0dGluZ3M9bnVsbCx0aGlzLkRlZmF1bHRTZXR0aW5nc189e319ZXZhbHVhdGUodCl7Y29uc3QgZT10aGlzLnBhcmFtZXRlclBvc2l0aW9ucztsZXQgbj10aGlzLl9jYWNoZWRJbmRleCxvPWVbbl0saT1lW24tMV07dDp7ZTp7bGV0IGE7bjp7bzppZighKHQ8bykpe2ZvcihsZXQgYT1uKzI7Oyl7aWYodm9pZCAwPT09byl7aWYodDxpKWJyZWFrIG87cmV0dXJuIG49ZS5sZW5ndGgsdGhpcy5fY2FjaGVkSW5kZXg9bix0aGlzLmFmdGVyRW5kXyhuLTEsdCxpKX1pZihuPT09YSlicmVhaztpZihpPW8sbz1lWysrbl0sdDxvKWJyZWFrIGV9YT1lLmxlbmd0aDticmVhayBufWlmKHQ+PWkpYnJlYWsgdDt7Y29uc3Qgcj1lWzFdO3Q8ciYmKG49MixpPXIpO2ZvcihsZXQgYT1uLTI7Oyl7aWYodm9pZCAwPT09aSlyZXR1cm4gdGhpcy5fY2FjaGVkSW5kZXg9MCx0aGlzLmJlZm9yZVN0YXJ0XygwLHQsbyk7aWYobj09PWEpYnJlYWs7aWYobz1pLGk9ZVstLW4tMV0sdD49aSlicmVhayBlfWE9bixuPTB9fWZvcig7bjxhOyl7Y29uc3Qgbz1uK2E+Pj4xO3Q8ZVtvXT9hPW86bj1vKzF9aWYobz1lW25dLGk9ZVtuLTFdLHZvaWQgMD09PWkpcmV0dXJuIHRoaXMuX2NhY2hlZEluZGV4PTAsdGhpcy5iZWZvcmVTdGFydF8oMCx0LG8pO2lmKHZvaWQgMD09PW8pcmV0dXJuIG49ZS5sZW5ndGgsdGhpcy5fY2FjaGVkSW5kZXg9bix0aGlzLmFmdGVyRW5kXyhuLTEsaSx0KX10aGlzLl9jYWNoZWRJbmRleD1uLHRoaXMuaW50ZXJ2YWxDaGFuZ2VkXyhuLGksbyl9cmV0dXJuIHRoaXMuaW50ZXJwb2xhdGVfKG4saSx0LG8pfWdldFNldHRpbmdzXygpe3JldHVybiB0aGlzLnNldHRpbmdzfHx0aGlzLkRlZmF1bHRTZXR0aW5nc199Y29weVNhbXBsZVZhbHVlXyh0KXtjb25zdCBlPXRoaXMucmVzdWx0QnVmZmVyLG49dGhpcy5zYW1wbGVWYWx1ZXMsbz10aGlzLnZhbHVlU2l6ZSxpPXQqbztmb3IobGV0IHQ9MDt0IT09bzsrK3QpZVt0XT1uW2krdF07cmV0dXJuIGV9aW50ZXJwb2xhdGVfKCl7dGhyb3cgbmV3IEVycm9yKCJjYWxsIHRvIGFic3RyYWN0IG1ldGhvZCIpfWludGVydmFsQ2hhbmdlZF8oKXt9fVN1dC5wcm90b3R5cGUuYmVmb3JlU3RhcnRfPVN1dC5wcm90b3R5cGUuY29weVNhbXBsZVZhbHVlXyxTdXQucHJvdG90eXBlLmFmdGVyRW5kXz1TdXQucHJvdG90eXBlLmNvcHlTYW1wbGVWYWx1ZV87Y2xhc3MgRHV0IGV4dGVuZHMgU3V0e2NvbnN0cnVjdG9yKHQsZSxuLG8pe3N1cGVyKHQsZSxuLG8pLHRoaXMuX3dlaWdodFByZXY9LTAsdGhpcy5fb2Zmc2V0UHJldj0tMCx0aGlzLl93ZWlnaHROZXh0PS0wLHRoaXMuX29mZnNldE5leHQ9LTAsdGhpcy5EZWZhdWx0U2V0dGluZ3NfPXtlbmRpbmdTdGFydDpacnQsZW5kaW5nRW5kOlpydH19aW50ZXJ2YWxDaGFuZ2VkXyh0LGUsbil7Y29uc3Qgbz10aGlzLnBhcmFtZXRlclBvc2l0aW9ucztsZXQgaT10LTIsYT10KzEscj1vW2ldLHM9b1thXTtpZih2b2lkIDA9PT1yKXN3aXRjaCh0aGlzLmdldFNldHRpbmdzXygpLmVuZGluZ1N0YXJ0KXtjYXNlIFhydDppPXQscj0yKmUtbjticmVhaztjYXNlIEtydDppPW8ubGVuZ3RoLTIscj1lK29baV0tb1tpKzFdO2JyZWFrO2RlZmF1bHQ6aT10LHI9bn1pZih2b2lkIDA9PT1zKXN3aXRjaCh0aGlzLmdldFNldHRpbmdzXygpLmVuZGluZ0VuZCl7Y2FzZSBYcnQ6YT10LHM9MipuLWU7YnJlYWs7Y2FzZSBLcnQ6YT0xLHM9bitvWzFdLW9bMF07YnJlYWs7ZGVmYXVsdDphPXQtMSxzPWV9Y29uc3QgbD0uNSoobi1lKSxjPXRoaXMudmFsdWVTaXplO3RoaXMuX3dlaWdodFByZXY9bC8oZS1yKSx0aGlzLl93ZWlnaHROZXh0PWwvKHMtbiksdGhpcy5fb2Zmc2V0UHJldj1pKmMsdGhpcy5fb2Zmc2V0TmV4dD1hKmN9aW50ZXJwb2xhdGVfKHQsZSxuLG8pe2NvbnN0IGk9dGhpcy5yZXN1bHRCdWZmZXIsYT10aGlzLnNhbXBsZVZhbHVlcyxyPXRoaXMudmFsdWVTaXplLHM9dCpyLGw9cy1yLGM9dGhpcy5fb2Zmc2V0UHJldixkPXRoaXMuX29mZnNldE5leHQscD10aGlzLl93ZWlnaHRQcmV2LG09dGhpcy5fd2VpZ2h0TmV4dCxmPShuLWUpLyhvLWUpLHU9ZipmLGc9dSpmLGg9LXAqZysyKnAqdS1wKmYsYj0oMStwKSpnKygtMS41LTIqcCkqdSsoLS41K3ApKmYrMSx5PSgtMS1tKSpnKygxLjUrbSkqdSsuNSpmLF89bSpnLW0qdTtmb3IobGV0IHQ9MDt0IT09cjsrK3QpaVt0XT1oKmFbYyt0XStiKmFbbCt0XSt5KmFbcyt0XStfKmFbZCt0XTtyZXR1cm4gaX19Y2xhc3MgUnV0IGV4dGVuZHMgU3V0e2NvbnN0cnVjdG9yKHQsZSxuLG8pe3N1cGVyKHQsZSxuLG8pfWludGVycG9sYXRlXyh0LGUsbixvKXtjb25zdCBpPXRoaXMucmVzdWx0QnVmZmVyLGE9dGhpcy5zYW1wbGVWYWx1ZXMscj10aGlzLnZhbHVlU2l6ZSxzPXQqcixsPXMtcixjPShuLWUpLyhvLWUpLGQ9MS1jO2ZvcihsZXQgdD0wO3QhPT1yOysrdClpW3RdPWFbbCt0XSpkK2Fbcyt0XSpjO3JldHVybiBpfX1jbGFzcyBFdXQgZXh0ZW5kcyBTdXR7Y29uc3RydWN0b3IodCxlLG4sbyl7c3VwZXIodCxlLG4sbyl9aW50ZXJwb2xhdGVfKHQpe3JldHVybiB0aGlzLmNvcHlTYW1wbGVWYWx1ZV8odC0xKX19Y2xhc3MgQXV0e2NvbnN0cnVjdG9yKHQsZSxuLG8pe2lmKHZvaWQgMD09PXQpdGhyb3cgbmV3IEVycm9yKCJUSFJFRS5LZXlmcmFtZVRyYWNrOiB0cmFjayBuYW1lIGlzIHVuZGVmaW5lZCIpO2lmKHZvaWQgMD09PWV8fDA9PT1lLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoIlRIUkVFLktleWZyYW1lVHJhY2s6IG5vIGtleWZyYW1lcyBpbiB0cmFjayBuYW1lZCAiK3QpO3RoaXMubmFtZT10LHRoaXMudGltZXM9a3V0LmNvbnZlcnRBcnJheShlLHRoaXMuVGltZUJ1ZmZlclR5cGUpLHRoaXMudmFsdWVzPWt1dC5jb252ZXJ0QXJyYXkobix0aGlzLlZhbHVlQnVmZmVyVHlwZSksdGhpcy5zZXRJbnRlcnBvbGF0aW9uKG98fHRoaXMuRGVmYXVsdEludGVycG9sYXRpb24pfXN0YXRpYyB0b0pTT04odCl7Y29uc3QgZT10LmNvbnN0cnVjdG9yO2xldCBuO2lmKGUudG9KU09OIT09dGhpcy50b0pTT04pbj1lLnRvSlNPTih0KTtlbHNle249e25hbWU6dC5uYW1lLHRpbWVzOmt1dC5jb252ZXJ0QXJyYXkodC50aW1lcyxBcnJheSksdmFsdWVzOmt1dC5jb252ZXJ0QXJyYXkodC52YWx1ZXMsQXJyYXkpfTtjb25zdCBlPXQuZ2V0SW50ZXJwb2xhdGlvbigpO2UhPT10LkRlZmF1bHRJbnRlcnBvbGF0aW9uJiYobi5pbnRlcnBvbGF0aW9uPWUpfXJldHVybiBuLnR5cGU9dC5WYWx1ZVR5cGVOYW1lLG59SW50ZXJwb2xhbnRGYWN0b3J5TWV0aG9kRGlzY3JldGUodCl7cmV0dXJuIG5ldyBFdXQodGhpcy50aW1lcyx0aGlzLnZhbHVlcyx0aGlzLmdldFZhbHVlU2l6ZSgpLHQpfUludGVycG9sYW50RmFjdG9yeU1ldGhvZExpbmVhcih0KXtyZXR1cm4gbmV3IFJ1dCh0aGlzLnRpbWVzLHRoaXMudmFsdWVzLHRoaXMuZ2V0VmFsdWVTaXplKCksdCl9SW50ZXJwb2xhbnRGYWN0b3J5TWV0aG9kU21vb3RoKHQpe3JldHVybiBuZXcgRHV0KHRoaXMudGltZXMsdGhpcy52YWx1ZXMsdGhpcy5nZXRWYWx1ZVNpemUoKSx0KX1zZXRJbnRlcnBvbGF0aW9uKHQpe2xldCBlO3N3aXRjaCh0KXtjYXNlIEdydDplPXRoaXMuSW50ZXJwb2xhbnRGYWN0b3J5TWV0aG9kRGlzY3JldGU7YnJlYWs7Y2FzZSBZcnQ6ZT10aGlzLkludGVycG9sYW50RmFjdG9yeU1ldGhvZExpbmVhcjticmVhaztjYXNlIHFydDplPXRoaXMuSW50ZXJwb2xhbnRGYWN0b3J5TWV0aG9kU21vb3RofWlmKHZvaWQgMD09PWUpe2NvbnN0IGU9InVuc3VwcG9ydGVkIGludGVycG9sYXRpb24gZm9yICIrdGhpcy5WYWx1ZVR5cGVOYW1lKyIga2V5ZnJhbWUgdHJhY2sgbmFtZWQgIit0aGlzLm5hbWU7aWYodm9pZCAwPT09dGhpcy5jcmVhdGVJbnRlcnBvbGFudCl7aWYodD09PXRoaXMuRGVmYXVsdEludGVycG9sYXRpb24pdGhyb3cgbmV3IEVycm9yKGUpO3RoaXMuc2V0SW50ZXJwb2xhdGlvbih0aGlzLkRlZmF1bHRJbnRlcnBvbGF0aW9uKX1yZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5LZXlmcmFtZVRyYWNrOiIsZSksdGhpc31yZXR1cm4gdGhpcy5jcmVhdGVJbnRlcnBvbGFudD1lLHRoaXN9Z2V0SW50ZXJwb2xhdGlvbigpe3N3aXRjaCh0aGlzLmNyZWF0ZUludGVycG9sYW50KXtjYXNlIHRoaXMuSW50ZXJwb2xhbnRGYWN0b3J5TWV0aG9kRGlzY3JldGU6cmV0dXJuIEdydDtjYXNlIHRoaXMuSW50ZXJwb2xhbnRGYWN0b3J5TWV0aG9kTGluZWFyOnJldHVybiBZcnQ7Y2FzZSB0aGlzLkludGVycG9sYW50RmFjdG9yeU1ldGhvZFNtb290aDpyZXR1cm4gcXJ0fX1nZXRWYWx1ZVNpemUoKXtyZXR1cm4gdGhpcy52YWx1ZXMubGVuZ3RoL3RoaXMudGltZXMubGVuZ3RofXNoaWZ0KHQpe2lmKDAhPT10KXtjb25zdCBlPXRoaXMudGltZXM7Zm9yKGxldCBuPTAsbz1lLmxlbmd0aDtuIT09bzsrK24pZVtuXSs9dH1yZXR1cm4gdGhpc31zY2FsZSh0KXtpZigxIT09dCl7Y29uc3QgZT10aGlzLnRpbWVzO2ZvcihsZXQgbj0wLG89ZS5sZW5ndGg7biE9PW87KytuKWVbbl0qPXR9cmV0dXJuIHRoaXN9dHJpbSh0LGUpe2NvbnN0IG49dGhpcy50aW1lcyxvPW4ubGVuZ3RoO2xldCBpPTAsYT1vLTE7Zm9yKDtpIT09byYmbltpXTx0OykrK2k7Zm9yKDstMSE9PWEmJm5bYV0+ZTspLS1hO2lmKCsrYSwwIT09aXx8YSE9PW8pe2k+PWEmJihhPU1hdGgubWF4KGEsMSksaT1hLTEpO2NvbnN0IHQ9dGhpcy5nZXRWYWx1ZVNpemUoKTt0aGlzLnRpbWVzPWt1dC5hcnJheVNsaWNlKG4saSxhKSx0aGlzLnZhbHVlcz1rdXQuYXJyYXlTbGljZSh0aGlzLnZhbHVlcyxpKnQsYSp0KX1yZXR1cm4gdGhpc312YWxpZGF0ZSgpe2xldCB0PSEwO2NvbnN0IGU9dGhpcy5nZXRWYWx1ZVNpemUoKTtlLU1hdGguZmxvb3IoZSkhPTAmJihjb25zb2xlLmVycm9yKCJUSFJFRS5LZXlmcmFtZVRyYWNrOiBJbnZhbGlkIHZhbHVlIHNpemUgaW4gdHJhY2suIix0aGlzKSx0PSExKTtjb25zdCBuPXRoaXMudGltZXMsbz10aGlzLnZhbHVlcyxpPW4ubGVuZ3RoOzA9PT1pJiYoY29uc29sZS5lcnJvcigiVEhSRUUuS2V5ZnJhbWVUcmFjazogVHJhY2sgaXMgZW1wdHkuIix0aGlzKSx0PSExKTtsZXQgYT1udWxsO2ZvcihsZXQgZT0wO2UhPT1pO2UrKyl7Y29uc3Qgbz1uW2VdO2lmKCJudW1iZXIiPT10eXBlb2YgbyYmaXNOYU4obykpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLktleWZyYW1lVHJhY2s6IFRpbWUgaXMgbm90IGEgdmFsaWQgbnVtYmVyLiIsdGhpcyxlLG8pLHQ9ITE7YnJlYWt9aWYobnVsbCE9PWEmJmE+byl7Y29uc29sZS5lcnJvcigiVEhSRUUuS2V5ZnJhbWVUcmFjazogT3V0IG9mIG9yZGVyIGtleXMuIix0aGlzLGUsbyxhKSx0PSExO2JyZWFrfWE9b31pZih2b2lkIDAhPT1vJiZrdXQuaXNUeXBlZEFycmF5KG8pKWZvcihsZXQgZT0wLG49by5sZW5ndGg7ZSE9PW47KytlKXtjb25zdCBuPW9bZV07aWYoaXNOYU4obikpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLktleWZyYW1lVHJhY2s6IFZhbHVlIGlzIG5vdCBhIHZhbGlkIG51bWJlci4iLHRoaXMsZSxuKSx0PSExO2JyZWFrfX1yZXR1cm4gdH1vcHRpbWl6ZSgpe2NvbnN0IHQ9a3V0LmFycmF5U2xpY2UodGhpcy50aW1lcyksZT1rdXQuYXJyYXlTbGljZSh0aGlzLnZhbHVlcyksbj10aGlzLmdldFZhbHVlU2l6ZSgpLG89dGhpcy5nZXRJbnRlcnBvbGF0aW9uKCk9PT1xcnQsaT10Lmxlbmd0aC0xO2xldCBhPTE7Zm9yKGxldCByPTE7cjxpOysrcil7bGV0IGk9ITE7Y29uc3Qgcz10W3JdO2lmKHMhPT10W3IrMV0mJigxIT09cnx8cyE9PXRbMF0pKWlmKG8paT0hMDtlbHNle2NvbnN0IHQ9cipuLG89dC1uLGE9dCtuO2ZvcihsZXQgcj0wO3IhPT1uOysrcil7Y29uc3Qgbj1lW3Qrcl07aWYobiE9PWVbbytyXXx8biE9PWVbYStyXSl7aT0hMDticmVha319fWlmKGkpe2lmKHIhPT1hKXt0W2FdPXRbcl07Y29uc3Qgbz1yKm4saT1hKm47Zm9yKGxldCB0PTA7dCE9PW47Kyt0KWVbaSt0XT1lW28rdF19KythfX1pZihpPjApe3RbYV09dFtpXTtmb3IobGV0IHQ9aSpuLG89YSpuLHI9MDtyIT09bjsrK3IpZVtvK3JdPWVbdCtyXTsrK2F9cmV0dXJuIGEhPT10Lmxlbmd0aD8odGhpcy50aW1lcz1rdXQuYXJyYXlTbGljZSh0LDAsYSksdGhpcy52YWx1ZXM9a3V0LmFycmF5U2xpY2UoZSwwLGEqbikpOih0aGlzLnRpbWVzPXQsdGhpcy52YWx1ZXM9ZSksdGhpc31jbG9uZSgpe2NvbnN0IHQ9a3V0LmFycmF5U2xpY2UodGhpcy50aW1lcywwKSxlPWt1dC5hcnJheVNsaWNlKHRoaXMudmFsdWVzLDApLG49bmV3KDAsdGhpcy5jb25zdHJ1Y3RvcikodGhpcy5uYW1lLHQsZSk7cmV0dXJuIG4uY3JlYXRlSW50ZXJwb2xhbnQ9dGhpcy5jcmVhdGVJbnRlcnBvbGFudCxufX1BdXQucHJvdG90eXBlLlRpbWVCdWZmZXJUeXBlPUZsb2F0MzJBcnJheSxBdXQucHJvdG90eXBlLlZhbHVlQnVmZmVyVHlwZT1GbG9hdDMyQXJyYXksQXV0LnByb3RvdHlwZS5EZWZhdWx0SW50ZXJwb2xhdGlvbj1ZcnQ7Y2xhc3MgVHV0IGV4dGVuZHMgQXV0e31UdXQucHJvdG90eXBlLlZhbHVlVHlwZU5hbWU9ImJvb2wiLFR1dC5wcm90b3R5cGUuVmFsdWVCdWZmZXJUeXBlPUFycmF5LFR1dC5wcm90b3R5cGUuRGVmYXVsdEludGVycG9sYXRpb249R3J0LFR1dC5wcm90b3R5cGUuSW50ZXJwb2xhbnRGYWN0b3J5TWV0aG9kTGluZWFyPXZvaWQgMCxUdXQucHJvdG90eXBlLkludGVycG9sYW50RmFjdG9yeU1ldGhvZFNtb290aD12b2lkIDA7Y2xhc3MgTnV0IGV4dGVuZHMgQXV0e31OdXQucHJvdG90eXBlLlZhbHVlVHlwZU5hbWU9ImNvbG9yIjtjbGFzcyB6dXQgZXh0ZW5kcyBBdXR7fXp1dC5wcm90b3R5cGUuVmFsdWVUeXBlTmFtZT0ibnVtYmVyIjtjbGFzcyBJdXQgZXh0ZW5kcyBTdXR7Y29uc3RydWN0b3IodCxlLG4sbyl7c3VwZXIodCxlLG4sbyl9aW50ZXJwb2xhdGVfKHQsZSxuLG8pe2NvbnN0IGk9dGhpcy5yZXN1bHRCdWZmZXIsYT10aGlzLnNhbXBsZVZhbHVlcyxyPXRoaXMudmFsdWVTaXplLHM9KG4tZSkvKG8tZSk7bGV0IGw9dCpyO2ZvcihsZXQgdD1sK3I7bCE9PXQ7bCs9NClQc3Quc2xlcnBGbGF0KGksMCxhLGwtcixhLGwscyk7cmV0dXJuIGl9fWNsYXNzIEh1dCBleHRlbmRzIEF1dHtJbnRlcnBvbGFudEZhY3RvcnlNZXRob2RMaW5lYXIodCl7cmV0dXJuIG5ldyBJdXQodGhpcy50aW1lcyx0aGlzLnZhbHVlcyx0aGlzLmdldFZhbHVlU2l6ZSgpLHQpfX1IdXQucHJvdG90eXBlLlZhbHVlVHlwZU5hbWU9InF1YXRlcm5pb24iLEh1dC5wcm90b3R5cGUuRGVmYXVsdEludGVycG9sYXRpb249WXJ0LEh1dC5wcm90b3R5cGUuSW50ZXJwb2xhbnRGYWN0b3J5TWV0aG9kU21vb3RoPXZvaWQgMDtjbGFzcyBGdXQgZXh0ZW5kcyBBdXR7fUZ1dC5wcm90b3R5cGUuVmFsdWVUeXBlTmFtZT0ic3RyaW5nIixGdXQucHJvdG90eXBlLlZhbHVlQnVmZmVyVHlwZT1BcnJheSxGdXQucHJvdG90eXBlLkRlZmF1bHRJbnRlcnBvbGF0aW9uPUdydCxGdXQucHJvdG90eXBlLkludGVycG9sYW50RmFjdG9yeU1ldGhvZExpbmVhcj12b2lkIDAsRnV0LnByb3RvdHlwZS5JbnRlcnBvbGFudEZhY3RvcnlNZXRob2RTbW9vdGg9dm9pZCAwO2NsYXNzIEx1dCBleHRlbmRzIEF1dHt9THV0LnByb3RvdHlwZS5WYWx1ZVR5cGVOYW1lPSJ2ZWN0b3IiO2NsYXNzIEJ1dHtjb25zdHJ1Y3Rvcih0LGU9LTEsbixvPTI1MDApe3RoaXMubmFtZT10LHRoaXMudHJhY2tzPW4sdGhpcy5kdXJhdGlvbj1lLHRoaXMuYmxlbmRNb2RlPW8sdGhpcy51dWlkPWRzdCgpLHRoaXMuZHVyYXRpb248MCYmdGhpcy5yZXNldER1cmF0aW9uKCl9c3RhdGljIHBhcnNlKHQpe2NvbnN0IGU9W10sbj10LnRyYWNrcyxvPTEvKHQuZnBzfHwxKTtmb3IobGV0IHQ9MCxpPW4ubGVuZ3RoO3QhPT1pOysrdCllLnB1c2goVnV0KG5bdF0pLnNjYWxlKG8pKTtjb25zdCBpPW5ldyB0aGlzKHQubmFtZSx0LmR1cmF0aW9uLGUsdC5ibGVuZE1vZGUpO3JldHVybiBpLnV1aWQ9dC51dWlkLGl9c3RhdGljIHRvSlNPTih0KXtjb25zdCBlPVtdLG49dC50cmFja3Msbz17bmFtZTp0Lm5hbWUsZHVyYXRpb246dC5kdXJhdGlvbix0cmFja3M6ZSx1dWlkOnQudXVpZCxibGVuZE1vZGU6dC5ibGVuZE1vZGV9O2ZvcihsZXQgdD0wLG89bi5sZW5ndGg7dCE9PW87Kyt0KWUucHVzaChBdXQudG9KU09OKG5bdF0pKTtyZXR1cm4gb31zdGF0aWMgQ3JlYXRlRnJvbU1vcnBoVGFyZ2V0U2VxdWVuY2UodCxlLG4sbyl7Y29uc3QgaT1lLmxlbmd0aCxhPVtdO2ZvcihsZXQgdD0wO3Q8aTt0Kyspe2xldCByPVtdLHM9W107ci5wdXNoKCh0K2ktMSklaSx0LCh0KzEpJWkpLHMucHVzaCgwLDEsMCk7Y29uc3QgbD1rdXQuZ2V0S2V5ZnJhbWVPcmRlcihyKTtyPWt1dC5zb3J0ZWRBcnJheShyLDEsbCkscz1rdXQuc29ydGVkQXJyYXkocywxLGwpLG98fDAhPT1yWzBdfHwoci5wdXNoKGkpLHMucHVzaChzWzBdKSksYS5wdXNoKG5ldyB6dXQoIi5tb3JwaFRhcmdldEluZmx1ZW5jZXNbIitlW3RdLm5hbWUrIl0iLHIscykuc2NhbGUoMS9uKSl9cmV0dXJuIG5ldyB0aGlzKHQsLTEsYSl9c3RhdGljIGZpbmRCeU5hbWUodCxlKXtsZXQgbj10O2lmKCFBcnJheS5pc0FycmF5KHQpKXtjb25zdCBlPXQ7bj1lLmdlb21ldHJ5JiZlLmdlb21ldHJ5LmFuaW1hdGlvbnN8fGUuYW5pbWF0aW9uc31mb3IobGV0IHQ9MDt0PG4ubGVuZ3RoO3QrKylpZihuW3RdLm5hbWU9PT1lKXJldHVybiBuW3RdO3JldHVybiBudWxsfXN0YXRpYyBDcmVhdGVDbGlwc0Zyb21Nb3JwaFRhcmdldFNlcXVlbmNlcyh0LGUsbil7Y29uc3Qgbz17fSxpPS9eKFtcdy1dKj8pKFtcZF0rKSQvO2ZvcihsZXQgZT0wLG49dC5sZW5ndGg7ZTxuO2UrKyl7Y29uc3Qgbj10W2VdLGE9bi5uYW1lLm1hdGNoKGkpO2lmKGEmJmEubGVuZ3RoPjEpe2NvbnN0IHQ9YVsxXTtsZXQgZT1vW3RdO2V8fChvW3RdPWU9W10pLGUucHVzaChuKX19Y29uc3QgYT1bXTtmb3IoY29uc3QgdCBpbiBvKWEucHVzaCh0aGlzLkNyZWF0ZUZyb21Nb3JwaFRhcmdldFNlcXVlbmNlKHQsb1t0XSxlLG4pKTtyZXR1cm4gYX1zdGF0aWMgcGFyc2VBbmltYXRpb24odCxlKXtpZighdClyZXR1cm4gY29uc29sZS5lcnJvcigiVEhSRUUuQW5pbWF0aW9uQ2xpcDogTm8gYW5pbWF0aW9uIGluIEpTT05Mb2FkZXIgZGF0YS4iKSxudWxsO2NvbnN0IG49ZnVuY3Rpb24odCxlLG4sbyxpKXtpZigwIT09bi5sZW5ndGgpe2NvbnN0IGE9W10scj1bXTtrdXQuZmxhdHRlbkpTT04obixhLHIsbyksMCE9PWEubGVuZ3RoJiZpLnB1c2gobmV3IHQoZSxhLHIpKX19LG89W10saT10Lm5hbWV8fCJkZWZhdWx0IixhPXQuZnBzfHwzMCxyPXQuYmxlbmRNb2RlO2xldCBzPXQubGVuZ3RofHwtMTtjb25zdCBsPXQuaGllcmFyY2h5fHxbXTtmb3IobGV0IHQ9MDt0PGwubGVuZ3RoO3QrKyl7Y29uc3QgaT1sW3RdLmtleXM7aWYoaSYmMCE9PWkubGVuZ3RoKWlmKGlbMF0ubW9ycGhUYXJnZXRzKXtjb25zdCB0PXt9O2xldCBlO2ZvcihlPTA7ZTxpLmxlbmd0aDtlKyspaWYoaVtlXS5tb3JwaFRhcmdldHMpZm9yKGxldCBuPTA7bjxpW2VdLm1vcnBoVGFyZ2V0cy5sZW5ndGg7bisrKXRbaVtlXS5tb3JwaFRhcmdldHNbbl1dPS0xO2Zvcihjb25zdCBuIGluIHQpe2NvbnN0IHQ9W10sYT1bXTtmb3IobGV0IG89MDtvIT09aVtlXS5tb3JwaFRhcmdldHMubGVuZ3RoOysrbyl7Y29uc3Qgbz1pW2VdO3QucHVzaChvLnRpbWUpLGEucHVzaChvLm1vcnBoVGFyZ2V0PT09bj8xOjApfW8ucHVzaChuZXcgenV0KCIubW9ycGhUYXJnZXRJbmZsdWVuY2VbIituKyJdIix0LGEpKX1zPXQubGVuZ3RoKihhfHwxKX1lbHNle2NvbnN0IGE9Ii5ib25lc1siK2VbdF0ubmFtZSsiXSI7bihMdXQsYSsiLnBvc2l0aW9uIixpLCJwb3MiLG8pLG4oSHV0LGErIi5xdWF0ZXJuaW9uIixpLCJyb3QiLG8pLG4oTHV0LGErIi5zY2FsZSIsaSwic2NsIixvKX19aWYoMD09PW8ubGVuZ3RoKXJldHVybiBudWxsO3JldHVybiBuZXcgdGhpcyhpLHMsbyxyKX1yZXNldER1cmF0aW9uKCl7bGV0IHQ9MDtmb3IobGV0IGU9MCxuPXRoaXMudHJhY2tzLmxlbmd0aDtlIT09bjsrK2Upe2NvbnN0IG49dGhpcy50cmFja3NbZV07dD1NYXRoLm1heCh0LG4udGltZXNbbi50aW1lcy5sZW5ndGgtMV0pfXJldHVybiB0aGlzLmR1cmF0aW9uPXQsdGhpc310cmltKCl7Zm9yKGxldCB0PTA7dDx0aGlzLnRyYWNrcy5sZW5ndGg7dCsrKXRoaXMudHJhY2tzW3RdLnRyaW0oMCx0aGlzLmR1cmF0aW9uKTtyZXR1cm4gdGhpc312YWxpZGF0ZSgpe2xldCB0PSEwO2ZvcihsZXQgZT0wO2U8dGhpcy50cmFja3MubGVuZ3RoO2UrKyl0PXQmJnRoaXMudHJhY2tzW2VdLnZhbGlkYXRlKCk7cmV0dXJuIHR9b3B0aW1pemUoKXtmb3IobGV0IHQ9MDt0PHRoaXMudHJhY2tzLmxlbmd0aDt0KyspdGhpcy50cmFja3NbdF0ub3B0aW1pemUoKTtyZXR1cm4gdGhpc31jbG9uZSgpe2NvbnN0IHQ9W107Zm9yKGxldCBlPTA7ZTx0aGlzLnRyYWNrcy5sZW5ndGg7ZSsrKXQucHVzaCh0aGlzLnRyYWNrc1tlXS5jbG9uZSgpKTtyZXR1cm4gbmV3IHRoaXMuY29uc3RydWN0b3IodGhpcy5uYW1lLHRoaXMuZHVyYXRpb24sdCx0aGlzLmJsZW5kTW9kZSl9dG9KU09OKCl7cmV0dXJuIHRoaXMuY29uc3RydWN0b3IudG9KU09OKHRoaXMpfX1mdW5jdGlvbiBWdXQodCl7aWYodm9pZCAwPT09dC50eXBlKXRocm93IG5ldyBFcnJvcigiVEhSRUUuS2V5ZnJhbWVUcmFjazogdHJhY2sgdHlwZSB1bmRlZmluZWQsIGNhbiBub3QgcGFyc2UiKTtjb25zdCBlPShmdW5jdGlvbiBuKHQpe3N3aXRjaCh0LnRvTG93ZXJDYXNlKCkpe2Nhc2Uic2NhbGFyIjpjYXNlImRvdWJsZSI6Y2FzZSJmbG9hdCI6Y2FzZSJudW1iZXIiOmNhc2UiaW50ZWdlciI6cmV0dXJuIHp1dDtjYXNlInZlY3RvciI6Y2FzZSJ2ZWN0b3IyIjpjYXNlInZlY3RvcjMiOmNhc2UidmVjdG9yNCI6cmV0dXJuIEx1dDtjYXNlImNvbG9yIjpyZXR1cm4gTnV0O2Nhc2UicXVhdGVybmlvbiI6cmV0dXJuIEh1dDtjYXNlImJvb2wiOmNhc2UiYm9vbGVhbiI6cmV0dXJuIFR1dDtjYXNlInN0cmluZyI6cmV0dXJuIEZ1dH10aHJvdyBuZXcgRXJyb3IoIlRIUkVFLktleWZyYW1lVHJhY2s6IFVuc3VwcG9ydGVkIHR5cGVOYW1lOiAiK3QpfSkodC50eXBlKTtpZih2b2lkIDA9PT10LnRpbWVzKXtjb25zdCBlPVtdLG49W107a3V0LmZsYXR0ZW5KU09OKHQua2V5cyxlLG4sInZhbHVlIiksdC50aW1lcz1lLHQudmFsdWVzPW59cmV0dXJuIHZvaWQgMCE9PWUucGFyc2U/ZS5wYXJzZSh0KTpuZXcgZSh0Lm5hbWUsdC50aW1lcyx0LnZhbHVlcyx0LmludGVycG9sYXRpb24pfWNvbnN0IGp1dD17ZW5hYmxlZDohMSxmaWxlczp7fSxhZGQ6ZnVuY3Rpb24odCxlKXshMSE9PXRoaXMuZW5hYmxlZCYmKHRoaXMuZmlsZXNbdF09ZSl9LGdldDpmdW5jdGlvbih0KXtpZighMSE9PXRoaXMuZW5hYmxlZClyZXR1cm4gdGhpcy5maWxlc1t0XX0scmVtb3ZlOmZ1bmN0aW9uKHQpe2RlbGV0ZSB0aGlzLmZpbGVzW3RdfSxjbGVhcjpmdW5jdGlvbigpe3RoaXMuZmlsZXM9e319fTtjb25zdCBVdXQ9bmV3IGNsYXNze2NvbnN0cnVjdG9yKHQsZSxuKXtjb25zdCBvPXRoaXM7bGV0IGksYT0hMSxyPTAscz0wO2NvbnN0IGw9W107dGhpcy5vblN0YXJ0PXZvaWQgMCx0aGlzLm9uTG9hZD10LHRoaXMub25Qcm9ncmVzcz1lLHRoaXMub25FcnJvcj1uLHRoaXMuaXRlbVN0YXJ0PWZ1bmN0aW9uKHQpe3MrKywhMT09PWEmJnZvaWQgMCE9PW8ub25TdGFydCYmby5vblN0YXJ0KHQscixzKSxhPSEwfSx0aGlzLml0ZW1FbmQ9ZnVuY3Rpb24odCl7cisrLHZvaWQgMCE9PW8ub25Qcm9ncmVzcyYmby5vblByb2dyZXNzKHQscixzKSxyPT09cyYmKGE9ITEsdm9pZCAwIT09by5vbkxvYWQmJm8ub25Mb2FkKCkpfSx0aGlzLml0ZW1FcnJvcj1mdW5jdGlvbih0KXt2b2lkIDAhPT1vLm9uRXJyb3ImJm8ub25FcnJvcih0KX0sdGhpcy5yZXNvbHZlVVJMPWZ1bmN0aW9uKHQpe3JldHVybiBpP2kodCk6dH0sdGhpcy5zZXRVUkxNb2RpZmllcj1mdW5jdGlvbih0KXtyZXR1cm4gaT10LHRoaXN9LHRoaXMuYWRkSGFuZGxlcj1mdW5jdGlvbih0LGUpe3JldHVybiBsLnB1c2godCxlKSx0aGlzfSx0aGlzLnJlbW92ZUhhbmRsZXI9ZnVuY3Rpb24odCl7Y29uc3QgZT1sLmluZGV4T2YodCk7cmV0dXJuLTEhPT1lJiZsLnNwbGljZShlLDIpLHRoaXN9LHRoaXMuZ2V0SGFuZGxlcj1mdW5jdGlvbih0KXtmb3IobGV0IGU9MCxuPWwubGVuZ3RoO2U8bjtlKz0yKXtjb25zdCBuPWxbZV0sbz1sW2UrMV07aWYobi5nbG9iYWwmJihuLmxhc3RJbmRleD0wKSxuLnRlc3QodCkpcmV0dXJuIG99cmV0dXJuIG51bGx9fX07Y2xhc3MgV3V0e2NvbnN0cnVjdG9yKHQpe3RoaXMubWFuYWdlcj12b2lkIDAhPT10P3Q6VXV0LHRoaXMuY3Jvc3NPcmlnaW49ImFub255bW91cyIsdGhpcy53aXRoQ3JlZGVudGlhbHM9ITEsdGhpcy5wYXRoPSIiLHRoaXMucmVzb3VyY2VQYXRoPSIiLHRoaXMucmVxdWVzdEhlYWRlcj17fX1sb2FkKCl7fWxvYWRBc3luYyh0LGUpe2NvbnN0IG49dGhpcztyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKG8saSl7bi5sb2FkKHQsbyxlLGkpfSkpfXBhcnNlKCl7fXNldENyb3NzT3JpZ2luKHQpe3JldHVybiB0aGlzLmNyb3NzT3JpZ2luPXQsdGhpc31zZXRXaXRoQ3JlZGVudGlhbHModCl7cmV0dXJuIHRoaXMud2l0aENyZWRlbnRpYWxzPXQsdGhpc31zZXRQYXRoKHQpe3JldHVybiB0aGlzLnBhdGg9dCx0aGlzfXNldFJlc291cmNlUGF0aCh0KXtyZXR1cm4gdGhpcy5yZXNvdXJjZVBhdGg9dCx0aGlzfXNldFJlcXVlc3RIZWFkZXIodCl7cmV0dXJuIHRoaXMucmVxdWVzdEhlYWRlcj10LHRoaXN9fWNvbnN0IEd1dD17fTtjbGFzcyBZdXQgZXh0ZW5kcyBXdXR7Y29uc3RydWN0b3IodCl7c3VwZXIodCl9bG9hZCh0LGUsbixvKXt2b2lkIDA9PT10JiYodD0iIiksdm9pZCAwIT09dGhpcy5wYXRoJiYodD10aGlzLnBhdGgrdCksdD10aGlzLm1hbmFnZXIucmVzb2x2ZVVSTCh0KTtjb25zdCBpPXRoaXMsYT1qdXQuZ2V0KHQpO2lmKHZvaWQgMCE9PWEpcmV0dXJuIGkubWFuYWdlci5pdGVtU3RhcnQodCksc2V0VGltZW91dCgoZnVuY3Rpb24oKXtlJiZlKGEpLGkubWFuYWdlci5pdGVtRW5kKHQpfSksMCksYTtpZih2b2lkIDAhPT1HdXRbdF0pcmV0dXJuIHZvaWQgR3V0W3RdLnB1c2goe29uTG9hZDplLG9uUHJvZ3Jlc3M6bixvbkVycm9yOm99KTtjb25zdCByPXQubWF0Y2goL15kYXRhOiguKj8pKDtiYXNlNjQpPywoLiopJC8pO2xldCBzO2lmKHIpe2NvbnN0IG49clsxXSxhPSEhclsyXTtsZXQgcz1yWzNdO3M9ZGVjb2RlVVJJQ29tcG9uZW50KHMpLGEmJihzPWF0b2IocykpO3RyeXtsZXQgbztjb25zdCBhPSh0aGlzLnJlc3BvbnNlVHlwZXx8IiIpLnRvTG93ZXJDYXNlKCk7c3dpdGNoKGEpe2Nhc2UiYXJyYXlidWZmZXIiOmNhc2UiYmxvYiI6Y29uc3QgdD1uZXcgVWludDhBcnJheShzLmxlbmd0aCk7Zm9yKGxldCBlPTA7ZTxzLmxlbmd0aDtlKyspdFtlXT1zLmNoYXJDb2RlQXQoZSk7bz0iYmxvYiI9PT1hP25ldyBCbG9iKFt0LmJ1ZmZlcl0se3R5cGU6bn0pOnQuYnVmZmVyO2JyZWFrO2Nhc2UiZG9jdW1lbnQiOmNvbnN0IGU9bmV3IERPTVBhcnNlcjtvPWUucGFyc2VGcm9tU3RyaW5nKHMsbik7YnJlYWs7Y2FzZSJqc29uIjpvPUpTT04ucGFyc2Uocyk7YnJlYWs7ZGVmYXVsdDpvPXN9c2V0VGltZW91dCgoZnVuY3Rpb24oKXtlJiZlKG8pLGkubWFuYWdlci5pdGVtRW5kKHQpfSksMCl9Y2F0Y2goZSl7c2V0VGltZW91dCgoZnVuY3Rpb24oKXtvJiZvKGUpLGkubWFuYWdlci5pdGVtRXJyb3IodCksaS5tYW5hZ2VyLml0ZW1FbmQodCl9KSwwKX19ZWxzZXtHdXRbdF09W10sR3V0W3RdLnB1c2goe29uTG9hZDplLG9uUHJvZ3Jlc3M6bixvbkVycm9yOm99KSxzPW5ldyBYTUxIdHRwUmVxdWVzdCxzLm9wZW4oIkdFVCIsdCwhMCkscy5hZGRFdmVudExpc3RlbmVyKCJsb2FkIiwoZnVuY3Rpb24oZSl7Y29uc3Qgbj10aGlzLnJlc3BvbnNlLG89R3V0W3RdO2lmKGRlbGV0ZSBHdXRbdF0sMjAwPT09dGhpcy5zdGF0dXN8fDA9PT10aGlzLnN0YXR1cyl7MD09PXRoaXMuc3RhdHVzJiZjb25zb2xlLndhcm4oIlRIUkVFLkZpbGVMb2FkZXI6IEhUVFAgU3RhdHVzIDAgcmVjZWl2ZWQuIiksanV0LmFkZCh0LG4pO2ZvcihsZXQgdD0wLGU9by5sZW5ndGg7dDxlO3QrKyl7Y29uc3QgZT1vW3RdO2Uub25Mb2FkJiZlLm9uTG9hZChuKX1pLm1hbmFnZXIuaXRlbUVuZCh0KX1lbHNle2ZvcihsZXQgdD0wLG49by5sZW5ndGg7dDxuO3QrKyl7Y29uc3Qgbj1vW3RdO24ub25FcnJvciYmbi5vbkVycm9yKGUpfWkubWFuYWdlci5pdGVtRXJyb3IodCksaS5tYW5hZ2VyLml0ZW1FbmQodCl9fSksITEpLHMuYWRkRXZlbnRMaXN0ZW5lcigicHJvZ3Jlc3MiLChmdW5jdGlvbihlKXtjb25zdCBuPUd1dFt0XTtmb3IobGV0IHQ9MCxvPW4ubGVuZ3RoO3Q8bzt0Kyspe2NvbnN0IG89blt0XTtvLm9uUHJvZ3Jlc3MmJm8ub25Qcm9ncmVzcyhlKX19KSwhMSkscy5hZGRFdmVudExpc3RlbmVyKCJlcnJvciIsKGZ1bmN0aW9uKGUpe2NvbnN0IG49R3V0W3RdO2RlbGV0ZSBHdXRbdF07Zm9yKGxldCB0PTAsbz1uLmxlbmd0aDt0PG87dCsrKXtjb25zdCBvPW5bdF07by5vbkVycm9yJiZvLm9uRXJyb3IoZSl9aS5tYW5hZ2VyLml0ZW1FcnJvcih0KSxpLm1hbmFnZXIuaXRlbUVuZCh0KX0pLCExKSxzLmFkZEV2ZW50TGlzdGVuZXIoImFib3J0IiwoZnVuY3Rpb24oZSl7Y29uc3Qgbj1HdXRbdF07ZGVsZXRlIEd1dFt0XTtmb3IobGV0IHQ9MCxvPW4ubGVuZ3RoO3Q8bzt0Kyspe2NvbnN0IG89blt0XTtvLm9uRXJyb3ImJm8ub25FcnJvcihlKX1pLm1hbmFnZXIuaXRlbUVycm9yKHQpLGkubWFuYWdlci5pdGVtRW5kKHQpfSksITEpLHZvaWQgMCE9PXRoaXMucmVzcG9uc2VUeXBlJiYocy5yZXNwb25zZVR5cGU9dGhpcy5yZXNwb25zZVR5cGUpLHZvaWQgMCE9PXRoaXMud2l0aENyZWRlbnRpYWxzJiYocy53aXRoQ3JlZGVudGlhbHM9dGhpcy53aXRoQ3JlZGVudGlhbHMpLHMub3ZlcnJpZGVNaW1lVHlwZSYmcy5vdmVycmlkZU1pbWVUeXBlKHZvaWQgMCE9PXRoaXMubWltZVR5cGU/dGhpcy5taW1lVHlwZToidGV4dC9wbGFpbiIpO2Zvcihjb25zdCB0IGluIHRoaXMucmVxdWVzdEhlYWRlcilzLnNldFJlcXVlc3RIZWFkZXIodCx0aGlzLnJlcXVlc3RIZWFkZXJbdF0pO3Muc2VuZChudWxsKX1yZXR1cm4gaS5tYW5hZ2VyLml0ZW1TdGFydCh0KSxzfXNldFJlc3BvbnNlVHlwZSh0KXtyZXR1cm4gdGhpcy5yZXNwb25zZVR5cGU9dCx0aGlzfXNldE1pbWVUeXBlKHQpe3JldHVybiB0aGlzLm1pbWVUeXBlPXQsdGhpc319Y2xhc3MgcXV0IGV4dGVuZHMgV3V0e2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQpfWxvYWQodCxlLG4sbyl7dm9pZCAwIT09dGhpcy5wYXRoJiYodD10aGlzLnBhdGgrdCksdD10aGlzLm1hbmFnZXIucmVzb2x2ZVVSTCh0KTtjb25zdCBpPXRoaXMsYT1qdXQuZ2V0KHQpO2lmKHZvaWQgMCE9PWEpcmV0dXJuIGkubWFuYWdlci5pdGVtU3RhcnQodCksc2V0VGltZW91dCgoZnVuY3Rpb24oKXtlJiZlKGEpLGkubWFuYWdlci5pdGVtRW5kKHQpfSksMCksYTtjb25zdCByPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIsImltZyIpO2Z1bmN0aW9uIHMoKXtyLnJlbW92ZUV2ZW50TGlzdGVuZXIoImxvYWQiLHMsITEpLHIucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZXJyb3IiLGwsITEpLGp1dC5hZGQodCx0aGlzKSxlJiZlKHRoaXMpLGkubWFuYWdlci5pdGVtRW5kKHQpfWZ1bmN0aW9uIGwoZSl7ci5yZW1vdmVFdmVudExpc3RlbmVyKCJsb2FkIixzLCExKSxyLnJlbW92ZUV2ZW50TGlzdGVuZXIoImVycm9yIixsLCExKSxvJiZvKGUpLGkubWFuYWdlci5pdGVtRXJyb3IodCksaS5tYW5hZ2VyLml0ZW1FbmQodCl9cmV0dXJuIHIuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIscywhMSksci5hZGRFdmVudExpc3RlbmVyKCJlcnJvciIsbCwhMSksImRhdGE6IiE9PXQuc3Vic3RyKDAsNSkmJnZvaWQgMCE9PXRoaXMuY3Jvc3NPcmlnaW4mJihyLmNyb3NzT3JpZ2luPXRoaXMuY3Jvc3NPcmlnaW4pLGkubWFuYWdlci5pdGVtU3RhcnQodCksci5zcmM9dCxyfX1jbGFzcyBadXQgZXh0ZW5kcyBXdXR7Y29uc3RydWN0b3IodCl7c3VwZXIodCl9bG9hZCh0LGUsbixvKXtjb25zdCBpPW5ldyBMY3QsYT1uZXcgcXV0KHRoaXMubWFuYWdlcik7YS5zZXRDcm9zc09yaWdpbih0aGlzLmNyb3NzT3JpZ2luKSxhLnNldFBhdGgodGhpcy5wYXRoKTtsZXQgcj0wO2Z1bmN0aW9uIHMobil7YS5sb2FkKHRbbl0sKGZ1bmN0aW9uKHQpe2kuaW1hZ2VzW25dPXQscisrLDY9PT1yJiYoaS5uZWVkc1VwZGF0ZT0hMCxlJiZlKGkpKX0pLHZvaWQgMCxvKX1mb3IobGV0IGU9MDtlPHQubGVuZ3RoOysrZSlzKGUpO3JldHVybiBpfX1jbGFzcyBYdXQgZXh0ZW5kcyBXdXR7Y29uc3RydWN0b3IodCl7c3VwZXIodCl9bG9hZCh0LGUsbixvKXtjb25zdCBpPW5ldyBDc3QsYT1uZXcgcXV0KHRoaXMubWFuYWdlcik7cmV0dXJuIGEuc2V0Q3Jvc3NPcmlnaW4odGhpcy5jcm9zc09yaWdpbiksYS5zZXRQYXRoKHRoaXMucGF0aCksYS5sb2FkKHQsKGZ1bmN0aW9uKG4pe2kuaW1hZ2U9bjtjb25zdCBvPXQuc2VhcmNoKC9cLmpwZT9nKCR8XD8pL2kpPjB8fDA9PT10LnNlYXJjaCgvXmRhdGFcOmltYWdlXC9qcGVnLyk7aS5mb3JtYXQ9bz9WcnQ6anJ0LGkubmVlZHNVcGRhdGU9ITAsdm9pZCAwIT09ZSYmZShpKX0pLG4sbyksaX19Y2xhc3MgS3V0IGV4dGVuZHMgUmZ0e2NvbnN0cnVjdG9yKCl7c3VwZXIoKSx0aGlzLnR5cGU9IkN1cnZlUGF0aCIsdGhpcy5jdXJ2ZXM9W10sdGhpcy5hdXRvQ2xvc2U9ITF9YWRkKHQpe3RoaXMuY3VydmVzLnB1c2godCl9Y2xvc2VQYXRoKCl7Y29uc3QgdD10aGlzLmN1cnZlc1swXS5nZXRQb2ludCgwKSxlPXRoaXMuY3VydmVzW3RoaXMuY3VydmVzLmxlbmd0aC0xXS5nZXRQb2ludCgxKTt0LmVxdWFscyhlKXx8dGhpcy5jdXJ2ZXMucHVzaChuZXcgV2Z0KGUsdCkpfWdldFBvaW50KHQpe2NvbnN0IGU9dCp0aGlzLmdldExlbmd0aCgpLG49dGhpcy5nZXRDdXJ2ZUxlbmd0aHMoKTtsZXQgbz0wO2Zvcig7bzxuLmxlbmd0aDspe2lmKG5bb10+PWUpe2NvbnN0IHQ9bltvXS1lLGk9dGhpcy5jdXJ2ZXNbb10sYT1pLmdldExlbmd0aCgpO3JldHVybiBpLmdldFBvaW50QXQoMD09PWE/MDoxLXQvYSl9bysrfXJldHVybiBudWxsfWdldExlbmd0aCgpe2NvbnN0IHQ9dGhpcy5nZXRDdXJ2ZUxlbmd0aHMoKTtyZXR1cm4gdFt0Lmxlbmd0aC0xXX11cGRhdGVBcmNMZW5ndGhzKCl7dGhpcy5uZWVkc1VwZGF0ZT0hMCx0aGlzLmNhY2hlTGVuZ3Rocz1udWxsLHRoaXMuZ2V0Q3VydmVMZW5ndGhzKCl9Z2V0Q3VydmVMZW5ndGhzKCl7aWYodGhpcy5jYWNoZUxlbmd0aHMmJnRoaXMuY2FjaGVMZW5ndGhzLmxlbmd0aD09PXRoaXMuY3VydmVzLmxlbmd0aClyZXR1cm4gdGhpcy5jYWNoZUxlbmd0aHM7Y29uc3QgdD1bXTtsZXQgZT0wO2ZvcihsZXQgbj0wLG89dGhpcy5jdXJ2ZXMubGVuZ3RoO248bztuKyspZSs9dGhpcy5jdXJ2ZXNbbl0uZ2V0TGVuZ3RoKCksdC5wdXNoKGUpO3JldHVybiB0aGlzLmNhY2hlTGVuZ3Rocz10LHR9Z2V0U3BhY2VkUG9pbnRzKHQ9NDApe2NvbnN0IGU9W107Zm9yKGxldCBuPTA7bjw9dDtuKyspZS5wdXNoKHRoaXMuZ2V0UG9pbnQobi90KSk7cmV0dXJuIHRoaXMuYXV0b0Nsb3NlJiZlLnB1c2goZVswXSksZX1nZXRQb2ludHModD0xMil7Y29uc3QgZT1bXTtsZXQgbjtmb3IobGV0IG89MCxpPXRoaXMuY3VydmVzO288aS5sZW5ndGg7bysrKXtjb25zdCBhPWlbb10scj1hLmdldFBvaW50cyhhJiZhLmlzRWxsaXBzZUN1cnZlPzIqdDphJiYoYS5pc0xpbmVDdXJ2ZXx8YS5pc0xpbmVDdXJ2ZTMpPzE6YSYmYS5pc1NwbGluZUN1cnZlP3QqYS5wb2ludHMubGVuZ3RoOnQpO2ZvcihsZXQgdD0wO3Q8ci5sZW5ndGg7dCsrKXtjb25zdCBvPXJbdF07biYmbi5lcXVhbHMobyl8fChlLnB1c2gobyksbj1vKX19cmV0dXJuIHRoaXMuYXV0b0Nsb3NlJiZlLmxlbmd0aD4xJiYhZVtlLmxlbmd0aC0xXS5lcXVhbHMoZVswXSkmJmUucHVzaChlWzBdKSxlfWNvcHkodCl7c3VwZXIuY29weSh0KSx0aGlzLmN1cnZlcz1bXTtmb3IobGV0IGU9MCxuPXQuY3VydmVzLmxlbmd0aDtlPG47ZSsrKXt0aGlzLmN1cnZlcy5wdXNoKHQuY3VydmVzW2VdLmNsb25lKCkpfXJldHVybiB0aGlzLmF1dG9DbG9zZT10LmF1dG9DbG9zZSx0aGlzfXRvSlNPTigpe2NvbnN0IHQ9c3VwZXIudG9KU09OKCk7dC5hdXRvQ2xvc2U9dGhpcy5hdXRvQ2xvc2UsdC5jdXJ2ZXM9W107Zm9yKGxldCBlPTAsbj10aGlzLmN1cnZlcy5sZW5ndGg7ZTxuO2UrKyl7dC5jdXJ2ZXMucHVzaCh0aGlzLmN1cnZlc1tlXS50b0pTT04oKSl9cmV0dXJuIHR9ZnJvbUpTT04odCl7c3VwZXIuZnJvbUpTT04odCksdGhpcy5hdXRvQ2xvc2U9dC5hdXRvQ2xvc2UsdGhpcy5jdXJ2ZXM9W107Zm9yKGxldCBlPTAsbj10LmN1cnZlcy5sZW5ndGg7ZTxuO2UrKyl7Y29uc3Qgbj10LmN1cnZlc1tlXTt0aGlzLmN1cnZlcy5wdXNoKChuZXcgWmZ0W24udHlwZV0pLmZyb21KU09OKG4pKX1yZXR1cm4gdGhpc319Y2xhc3MgSnV0IGV4dGVuZHMgS3V0e2NvbnN0cnVjdG9yKHQpe3N1cGVyKCksdGhpcy50eXBlPSJQYXRoIix0aGlzLmN1cnJlbnRQb2ludD1uZXcgZ3N0LHQmJnRoaXMuc2V0RnJvbVBvaW50cyh0KX1zZXRGcm9tUG9pbnRzKHQpe3RoaXMubW92ZVRvKHRbMF0ueCx0WzBdLnkpO2ZvcihsZXQgZT0xLG49dC5sZW5ndGg7ZTxuO2UrKyl0aGlzLmxpbmVUbyh0W2VdLngsdFtlXS55KTtyZXR1cm4gdGhpc31tb3ZlVG8odCxlKXtyZXR1cm4gdGhpcy5jdXJyZW50UG9pbnQuc2V0KHQsZSksdGhpc31saW5lVG8odCxlKXtjb25zdCBuPW5ldyBXZnQodGhpcy5jdXJyZW50UG9pbnQuY2xvbmUoKSxuZXcgZ3N0KHQsZSkpO3JldHVybiB0aGlzLmN1cnZlcy5wdXNoKG4pLHRoaXMuY3VycmVudFBvaW50LnNldCh0LGUpLHRoaXN9cXVhZHJhdGljQ3VydmVUbyh0LGUsbixvKXtjb25zdCBpPW5ldyBHZnQodGhpcy5jdXJyZW50UG9pbnQuY2xvbmUoKSxuZXcgZ3N0KHQsZSksbmV3IGdzdChuLG8pKTtyZXR1cm4gdGhpcy5jdXJ2ZXMucHVzaChpKSx0aGlzLmN1cnJlbnRQb2ludC5zZXQobixvKSx0aGlzfWJlemllckN1cnZlVG8odCxlLG4sbyxpLGEpe2NvbnN0IHI9bmV3IGpmdCh0aGlzLmN1cnJlbnRQb2ludC5jbG9uZSgpLG5ldyBnc3QodCxlKSxuZXcgZ3N0KG4sbyksbmV3IGdzdChpLGEpKTtyZXR1cm4gdGhpcy5jdXJ2ZXMucHVzaChyKSx0aGlzLmN1cnJlbnRQb2ludC5zZXQoaSxhKSx0aGlzfXNwbGluZVRocnUodCl7Y29uc3QgZT1bdGhpcy5jdXJyZW50UG9pbnQuY2xvbmUoKV0uY29uY2F0KHQpLG49bmV3IHFmdChlKTtyZXR1cm4gdGhpcy5jdXJ2ZXMucHVzaChuKSx0aGlzLmN1cnJlbnRQb2ludC5jb3B5KHRbdC5sZW5ndGgtMV0pLHRoaXN9YXJjKHQsZSxuLG8saSxhKXtyZXR1cm4gdGhpcy5hYnNhcmModCt0aGlzLmN1cnJlbnRQb2ludC54LGUrdGhpcy5jdXJyZW50UG9pbnQueSxuLG8saSxhKSx0aGlzfWFic2FyYyh0LGUsbixvLGksYSl7cmV0dXJuIHRoaXMuYWJzZWxsaXBzZSh0LGUsbixuLG8saSxhKSx0aGlzfWVsbGlwc2UodCxlLG4sbyxpLGEscixzKXtyZXR1cm4gdGhpcy5hYnNlbGxpcHNlKHQrdGhpcy5jdXJyZW50UG9pbnQueCxlK3RoaXMuY3VycmVudFBvaW50LnksbixvLGksYSxyLHMpLHRoaXN9YWJzZWxsaXBzZSh0LGUsbixvLGksYSxyLHMpe2NvbnN0IGw9bmV3IEVmdCh0LGUsbixvLGksYSxyLHMpO2lmKHRoaXMuY3VydmVzLmxlbmd0aD4wKXtjb25zdCB0PWwuZ2V0UG9pbnQoMCk7dC5lcXVhbHModGhpcy5jdXJyZW50UG9pbnQpfHx0aGlzLmxpbmVUbyh0LngsdC55KX10aGlzLmN1cnZlcy5wdXNoKGwpO2NvbnN0IGM9bC5nZXRQb2ludCgxKTtyZXR1cm4gdGhpcy5jdXJyZW50UG9pbnQuY29weShjKSx0aGlzfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5jdXJyZW50UG9pbnQuY29weSh0LmN1cnJlbnRQb2ludCksdGhpc310b0pTT04oKXtjb25zdCB0PXN1cGVyLnRvSlNPTigpO3JldHVybiB0LmN1cnJlbnRQb2ludD10aGlzLmN1cnJlbnRQb2ludC50b0FycmF5KCksdH1mcm9tSlNPTih0KXtyZXR1cm4gc3VwZXIuZnJvbUpTT04odCksdGhpcy5jdXJyZW50UG9pbnQuZnJvbUFycmF5KHQuY3VycmVudFBvaW50KSx0aGlzfX1jbGFzcyBRdXQgZXh0ZW5kcyBKdXR7Y29uc3RydWN0b3IodCl7c3VwZXIodCksdGhpcy51dWlkPWRzdCgpLHRoaXMudHlwZT0iU2hhcGUiLHRoaXMuaG9sZXM9W119Z2V0UG9pbnRzSG9sZXModCl7Y29uc3QgZT1bXTtmb3IobGV0IG49MCxvPXRoaXMuaG9sZXMubGVuZ3RoO248bztuKyspZVtuXT10aGlzLmhvbGVzW25dLmdldFBvaW50cyh0KTtyZXR1cm4gZX1leHRyYWN0UG9pbnRzKHQpe3JldHVybntzaGFwZTp0aGlzLmdldFBvaW50cyh0KSxob2xlczp0aGlzLmdldFBvaW50c0hvbGVzKHQpfX1jb3B5KHQpe3N1cGVyLmNvcHkodCksdGhpcy5ob2xlcz1bXTtmb3IobGV0IGU9MCxuPXQuaG9sZXMubGVuZ3RoO2U8bjtlKyspe3RoaXMuaG9sZXMucHVzaCh0LmhvbGVzW2VdLmNsb25lKCkpfXJldHVybiB0aGlzfXRvSlNPTigpe2NvbnN0IHQ9c3VwZXIudG9KU09OKCk7dC51dWlkPXRoaXMudXVpZCx0LmhvbGVzPVtdO2ZvcihsZXQgZT0wLG49dGhpcy5ob2xlcy5sZW5ndGg7ZTxuO2UrKyl7dC5ob2xlcy5wdXNoKHRoaXMuaG9sZXNbZV0udG9KU09OKCkpfXJldHVybiB0fWZyb21KU09OKHQpe3N1cGVyLmZyb21KU09OKHQpLHRoaXMudXVpZD10LnV1aWQsdGhpcy5ob2xlcz1bXTtmb3IobGV0IGU9MCxuPXQuaG9sZXMubGVuZ3RoO2U8bjtlKyspe2NvbnN0IG49dC5ob2xlc1tlXTt0aGlzLmhvbGVzLnB1c2goKG5ldyBKdXQpLmZyb21KU09OKG4pKX1yZXR1cm4gdGhpc319Y2xhc3MgJHV0IGV4dGVuZHMgU2x0e2NvbnN0cnVjdG9yKHQsZT0xKXtzdXBlcigpLHRoaXMudHlwZT0iTGlnaHQiLHRoaXMuY29sb3I9bmV3IFpsdCh0KSx0aGlzLmludGVuc2l0eT1lfWRpc3Bvc2UoKXt9Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLmNvbG9yLmNvcHkodC5jb2xvciksdGhpcy5pbnRlbnNpdHk9dC5pbnRlbnNpdHksdGhpc310b0pTT04odCl7Y29uc3QgZT1zdXBlci50b0pTT04odCk7cmV0dXJuIGUub2JqZWN0LmNvbG9yPXRoaXMuY29sb3IuZ2V0SGV4KCksZS5vYmplY3QuaW50ZW5zaXR5PXRoaXMuaW50ZW5zaXR5LHZvaWQgMCE9PXRoaXMuZ3JvdW5kQ29sb3ImJihlLm9iamVjdC5ncm91bmRDb2xvcj10aGlzLmdyb3VuZENvbG9yLmdldEhleCgpKSx2b2lkIDAhPT10aGlzLmRpc3RhbmNlJiYoZS5vYmplY3QuZGlzdGFuY2U9dGhpcy5kaXN0YW5jZSksdm9pZCAwIT09dGhpcy5hbmdsZSYmKGUub2JqZWN0LmFuZ2xlPXRoaXMuYW5nbGUpLHZvaWQgMCE9PXRoaXMuZGVjYXkmJihlLm9iamVjdC5kZWNheT10aGlzLmRlY2F5KSx2b2lkIDAhPT10aGlzLnBlbnVtYnJhJiYoZS5vYmplY3QucGVudW1icmE9dGhpcy5wZW51bWJyYSksdm9pZCAwIT09dGhpcy5zaGFkb3cmJihlLm9iamVjdC5zaGFkb3c9dGhpcy5zaGFkb3cudG9KU09OKCkpLGV9fSR1dC5wcm90b3R5cGUuaXNMaWdodD0hMDsoY2xhc3MgZXh0ZW5kcyAkdXR7Y29uc3RydWN0b3IodCxlLG4pe3N1cGVyKHQsbiksdGhpcy50eXBlPSJIZW1pc3BoZXJlTGlnaHQiLHRoaXMucG9zaXRpb24uY29weShTbHQuRGVmYXVsdFVwKSx0aGlzLnVwZGF0ZU1hdHJpeCgpLHRoaXMuZ3JvdW5kQ29sb3I9bmV3IFpsdChlKX1jb3B5KHQpe3JldHVybiAkdXQucHJvdG90eXBlLmNvcHkuY2FsbCh0aGlzLHQpLHRoaXMuZ3JvdW5kQ29sb3IuY29weSh0Lmdyb3VuZENvbG9yKSx0aGlzfX0pLnByb3RvdHlwZS5pc0hlbWlzcGhlcmVMaWdodD0hMDtjb25zdCB0Z3Q9bmV3IG9sdCxlZ3Q9bmV3IHdzdCxuZ3Q9bmV3IHdzdDtjbGFzcyBvZ3R7Y29uc3RydWN0b3IodCl7dGhpcy5jYW1lcmE9dCx0aGlzLmJpYXM9MCx0aGlzLm5vcm1hbEJpYXM9MCx0aGlzLnJhZGl1cz0xLHRoaXMubWFwU2l6ZT1uZXcgZ3N0KDUxMiw1MTIpLHRoaXMubWFwPW51bGwsdGhpcy5tYXBQYXNzPW51bGwsdGhpcy5tYXRyaXg9bmV3IG9sdCx0aGlzLmF1dG9VcGRhdGU9ITAsdGhpcy5uZWVkc1VwZGF0ZT0hMSx0aGlzLl9mcnVzdHVtPW5ldyBxY3QsdGhpcy5fZnJhbWVFeHRlbnRzPW5ldyBnc3QoMSwxKSx0aGlzLl92aWV3cG9ydENvdW50PTEsdGhpcy5fdmlld3BvcnRzPVtuZXcgdnN0KDAsMCwxLDEpXX1nZXRWaWV3cG9ydENvdW50KCl7cmV0dXJuIHRoaXMuX3ZpZXdwb3J0Q291bnR9Z2V0RnJ1c3R1bSgpe3JldHVybiB0aGlzLl9mcnVzdHVtfXVwZGF0ZU1hdHJpY2VzKHQpe2NvbnN0IGU9dGhpcy5jYW1lcmEsbj10aGlzLm1hdHJpeDtlZ3Quc2V0RnJvbU1hdHJpeFBvc2l0aW9uKHQubWF0cml4V29ybGQpLGUucG9zaXRpb24uY29weShlZ3QpLG5ndC5zZXRGcm9tTWF0cml4UG9zaXRpb24odC50YXJnZXQubWF0cml4V29ybGQpLGUubG9va0F0KG5ndCksZS51cGRhdGVNYXRyaXhXb3JsZCgpLHRndC5tdWx0aXBseU1hdHJpY2VzKGUucHJvamVjdGlvbk1hdHJpeCxlLm1hdHJpeFdvcmxkSW52ZXJzZSksdGhpcy5fZnJ1c3R1bS5zZXRGcm9tUHJvamVjdGlvbk1hdHJpeCh0Z3QpLG4uc2V0KC41LDAsMCwuNSwwLC41LDAsLjUsMCwwLC41LC41LDAsMCwwLDEpLG4ubXVsdGlwbHkoZS5wcm9qZWN0aW9uTWF0cml4KSxuLm11bHRpcGx5KGUubWF0cml4V29ybGRJbnZlcnNlKX1nZXRWaWV3cG9ydCh0KXtyZXR1cm4gdGhpcy5fdmlld3BvcnRzW3RdfWdldEZyYW1lRXh0ZW50cygpe3JldHVybiB0aGlzLl9mcmFtZUV4dGVudHN9ZGlzcG9zZSgpe3RoaXMubWFwJiZ0aGlzLm1hcC5kaXNwb3NlKCksdGhpcy5tYXBQYXNzJiZ0aGlzLm1hcFBhc3MuZGlzcG9zZSgpfWNvcHkodCl7cmV0dXJuIHRoaXMuY2FtZXJhPXQuY2FtZXJhLmNsb25lKCksdGhpcy5iaWFzPXQuYmlhcyx0aGlzLnJhZGl1cz10LnJhZGl1cyx0aGlzLm1hcFNpemUuY29weSh0Lm1hcFNpemUpLHRoaXN9Y2xvbmUoKXtyZXR1cm4obmV3IHRoaXMuY29uc3RydWN0b3IpLmNvcHkodGhpcyl9dG9KU09OKCl7Y29uc3QgdD17fTtyZXR1cm4gMCE9PXRoaXMuYmlhcyYmKHQuYmlhcz10aGlzLmJpYXMpLDAhPT10aGlzLm5vcm1hbEJpYXMmJih0Lm5vcm1hbEJpYXM9dGhpcy5ub3JtYWxCaWFzKSwxIT09dGhpcy5yYWRpdXMmJih0LnJhZGl1cz10aGlzLnJhZGl1cyksNTEyPT09dGhpcy5tYXBTaXplLngmJjUxMj09PXRoaXMubWFwU2l6ZS55fHwodC5tYXBTaXplPXRoaXMubWFwU2l6ZS50b0FycmF5KCkpLHQuY2FtZXJhPXRoaXMuY2FtZXJhLnRvSlNPTighMSkub2JqZWN0LGRlbGV0ZSB0LmNhbWVyYS5tYXRyaXgsdH19Y2xhc3MgaWd0IGV4dGVuZHMgb2d0e2NvbnN0cnVjdG9yKCl7c3VwZXIobmV3IEljdCg1MCwxLC41LDUwMCkpLHRoaXMuZm9jdXM9MX11cGRhdGVNYXRyaWNlcyh0KXtjb25zdCBlPXRoaXMuY2FtZXJhLG49Mipjc3QqdC5hbmdsZSp0aGlzLmZvY3VzLG89dGhpcy5tYXBTaXplLndpZHRoL3RoaXMubWFwU2l6ZS5oZWlnaHQsaT10LmRpc3RhbmNlfHxlLmZhcjtuPT09ZS5mb3YmJm89PT1lLmFzcGVjdCYmaT09PWUuZmFyfHwoZS5mb3Y9bixlLmFzcGVjdD1vLGUuZmFyPWksZS51cGRhdGVQcm9qZWN0aW9uTWF0cml4KCkpLHN1cGVyLnVwZGF0ZU1hdHJpY2VzKHQpfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5mb2N1cz10LmZvY3VzLHRoaXN9fWlndC5wcm90b3R5cGUuaXNTcG90TGlnaHRTaGFkb3c9ITA7KGNsYXNzIGV4dGVuZHMgJHV0e2NvbnN0cnVjdG9yKHQsZSxuPTAsbz1NYXRoLlBJLzMsaT0wLGE9MSl7c3VwZXIodCxlKSx0aGlzLnR5cGU9IlNwb3RMaWdodCIsdGhpcy5wb3NpdGlvbi5jb3B5KFNsdC5EZWZhdWx0VXApLHRoaXMudXBkYXRlTWF0cml4KCksdGhpcy50YXJnZXQ9bmV3IFNsdCx0aGlzLmRpc3RhbmNlPW4sdGhpcy5hbmdsZT1vLHRoaXMucGVudW1icmE9aSx0aGlzLmRlY2F5PWEsdGhpcy5zaGFkb3c9bmV3IGlndH1nZXQgcG93ZXIoKXtyZXR1cm4gdGhpcy5pbnRlbnNpdHkqTWF0aC5QSX1zZXQgcG93ZXIodCl7dGhpcy5pbnRlbnNpdHk9dC9NYXRoLlBJfWRpc3Bvc2UoKXt0aGlzLnNoYWRvdy5kaXNwb3NlKCl9Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLmRpc3RhbmNlPXQuZGlzdGFuY2UsdGhpcy5hbmdsZT10LmFuZ2xlLHRoaXMucGVudW1icmE9dC5wZW51bWJyYSx0aGlzLmRlY2F5PXQuZGVjYXksdGhpcy50YXJnZXQ9dC50YXJnZXQuY2xvbmUoKSx0aGlzLnNoYWRvdz10LnNoYWRvdy5jbG9uZSgpLHRoaXN9fSkucHJvdG90eXBlLmlzU3BvdExpZ2h0PSEwO2NvbnN0IGFndD1uZXcgb2x0LHJndD1uZXcgd3N0LHNndD1uZXcgd3N0O2NsYXNzIGxndCBleHRlbmRzIG9ndHtjb25zdHJ1Y3Rvcigpe3N1cGVyKG5ldyBJY3QoOTAsMSwuNSw1MDApKSx0aGlzLl9mcmFtZUV4dGVudHM9bmV3IGdzdCg0LDIpLHRoaXMuX3ZpZXdwb3J0Q291bnQ9Nix0aGlzLl92aWV3cG9ydHM9W25ldyB2c3QoMiwxLDEsMSksbmV3IHZzdCgwLDEsMSwxKSxuZXcgdnN0KDMsMSwxLDEpLG5ldyB2c3QoMSwxLDEsMSksbmV3IHZzdCgzLDAsMSwxKSxuZXcgdnN0KDEsMCwxLDEpXSx0aGlzLl9jdWJlRGlyZWN0aW9ucz1bbmV3IHdzdCgxLDAsMCksbmV3IHdzdCgtMSwwLDApLG5ldyB3c3QoMCwwLDEpLG5ldyB3c3QoMCwwLC0xKSxuZXcgd3N0KDAsMSwwKSxuZXcgd3N0KDAsLTEsMCldLHRoaXMuX2N1YmVVcHM9W25ldyB3c3QoMCwxLDApLG5ldyB3c3QoMCwxLDApLG5ldyB3c3QoMCwxLDApLG5ldyB3c3QoMCwxLDApLG5ldyB3c3QoMCwwLDEpLG5ldyB3c3QoMCwwLC0xKV19dXBkYXRlTWF0cmljZXModCxlPTApe2NvbnN0IG49dGhpcy5jYW1lcmEsbz10aGlzLm1hdHJpeCxpPXQuZGlzdGFuY2V8fG4uZmFyO2khPT1uLmZhciYmKG4uZmFyPWksbi51cGRhdGVQcm9qZWN0aW9uTWF0cml4KCkpLHJndC5zZXRGcm9tTWF0cml4UG9zaXRpb24odC5tYXRyaXhXb3JsZCksbi5wb3NpdGlvbi5jb3B5KHJndCksc2d0LmNvcHkobi5wb3NpdGlvbiksc2d0LmFkZCh0aGlzLl9jdWJlRGlyZWN0aW9uc1tlXSksbi51cC5jb3B5KHRoaXMuX2N1YmVVcHNbZV0pLG4ubG9va0F0KHNndCksbi51cGRhdGVNYXRyaXhXb3JsZCgpLG8ubWFrZVRyYW5zbGF0aW9uKC1yZ3QueCwtcmd0LnksLXJndC56KSxhZ3QubXVsdGlwbHlNYXRyaWNlcyhuLnByb2plY3Rpb25NYXRyaXgsbi5tYXRyaXhXb3JsZEludmVyc2UpLHRoaXMuX2ZydXN0dW0uc2V0RnJvbVByb2plY3Rpb25NYXRyaXgoYWd0KX19bGd0LnByb3RvdHlwZS5pc1BvaW50TGlnaHRTaGFkb3c9ITA7KGNsYXNzIGV4dGVuZHMgJHV0e2NvbnN0cnVjdG9yKHQsZSxuPTAsbz0xKXtzdXBlcih0LGUpLHRoaXMudHlwZT0iUG9pbnRMaWdodCIsdGhpcy5kaXN0YW5jZT1uLHRoaXMuZGVjYXk9byx0aGlzLnNoYWRvdz1uZXcgbGd0fWdldCBwb3dlcigpe3JldHVybiA0KnRoaXMuaW50ZW5zaXR5Kk1hdGguUEl9c2V0IHBvd2VyKHQpe3RoaXMuaW50ZW5zaXR5PXQvKDQqTWF0aC5QSSl9ZGlzcG9zZSgpe3RoaXMuc2hhZG93LmRpc3Bvc2UoKX1jb3B5KHQpe3JldHVybiBzdXBlci5jb3B5KHQpLHRoaXMuZGlzdGFuY2U9dC5kaXN0YW5jZSx0aGlzLmRlY2F5PXQuZGVjYXksdGhpcy5zaGFkb3c9dC5zaGFkb3cuY2xvbmUoKSx0aGlzfX0pLnByb3RvdHlwZS5pc1BvaW50TGlnaHQ9ITA7Y2xhc3MgY2d0IGV4dGVuZHMgb2d0e2NvbnN0cnVjdG9yKCl7c3VwZXIobmV3IHJkdCgtNSw1LDUsLTUsLjUsNTAwKSl9fWNndC5wcm90b3R5cGUuaXNEaXJlY3Rpb25hbExpZ2h0U2hhZG93PSEwOyhjbGFzcyBleHRlbmRzICR1dHtjb25zdHJ1Y3Rvcih0LGUpe3N1cGVyKHQsZSksdGhpcy50eXBlPSJEaXJlY3Rpb25hbExpZ2h0Iix0aGlzLnBvc2l0aW9uLmNvcHkoU2x0LkRlZmF1bHRVcCksdGhpcy51cGRhdGVNYXRyaXgoKSx0aGlzLnRhcmdldD1uZXcgU2x0LHRoaXMuc2hhZG93PW5ldyBjZ3R9ZGlzcG9zZSgpe3RoaXMuc2hhZG93LmRpc3Bvc2UoKX1jb3B5KHQpe3JldHVybiBzdXBlci5jb3B5KHQpLHRoaXMudGFyZ2V0PXQudGFyZ2V0LmNsb25lKCksdGhpcy5zaGFkb3c9dC5zaGFkb3cuY2xvbmUoKSx0aGlzfX0pLnByb3RvdHlwZS5pc0RpcmVjdGlvbmFsTGlnaHQ9ITA7KGNsYXNzIGV4dGVuZHMgJHV0e2NvbnN0cnVjdG9yKHQsZSl7c3VwZXIodCxlKSx0aGlzLnR5cGU9IkFtYmllbnRMaWdodCJ9fSkucHJvdG90eXBlLmlzQW1iaWVudExpZ2h0PSEwOyhjbGFzcyBleHRlbmRzICR1dHtjb25zdHJ1Y3Rvcih0LGUsbj0xMCxvPTEwKXtzdXBlcih0LGUpLHRoaXMudHlwZT0iUmVjdEFyZWFMaWdodCIsdGhpcy53aWR0aD1uLHRoaXMuaGVpZ2h0PW99Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLndpZHRoPXQud2lkdGgsdGhpcy5oZWlnaHQ9dC5oZWlnaHQsdGhpc310b0pTT04odCl7Y29uc3QgZT1zdXBlci50b0pTT04odCk7cmV0dXJuIGUub2JqZWN0LndpZHRoPXRoaXMud2lkdGgsZS5vYmplY3QuaGVpZ2h0PXRoaXMuaGVpZ2h0LGV9fSkucHJvdG90eXBlLmlzUmVjdEFyZWFMaWdodD0hMDtjbGFzcyBkZ3R7Y29uc3RydWN0b3IoKXt0aGlzLmNvZWZmaWNpZW50cz1bXTtmb3IobGV0IHQ9MDt0PDk7dCsrKXRoaXMuY29lZmZpY2llbnRzLnB1c2gobmV3IHdzdCl9c2V0KHQpe2ZvcihsZXQgZT0wO2U8OTtlKyspdGhpcy5jb2VmZmljaWVudHNbZV0uY29weSh0W2VdKTtyZXR1cm4gdGhpc316ZXJvKCl7Zm9yKGxldCB0PTA7dDw5O3QrKyl0aGlzLmNvZWZmaWNpZW50c1t0XS5zZXQoMCwwLDApO3JldHVybiB0aGlzfWdldEF0KHQsZSl7Y29uc3Qgbj10Lngsbz10LnksaT10LnosYT10aGlzLmNvZWZmaWNpZW50cztyZXR1cm4gZS5jb3B5KGFbMF0pLm11bHRpcGx5U2NhbGFyKC4yODIwOTUpLGUuYWRkU2NhbGVkVmVjdG9yKGFbMV0sLjQ4ODYwMypvKSxlLmFkZFNjYWxlZFZlY3RvcihhWzJdLC40ODg2MDMqaSksZS5hZGRTY2FsZWRWZWN0b3IoYVszXSwuNDg4NjAzKm4pLGUuYWRkU2NhbGVkVmVjdG9yKGFbNF0sbipvKjEuMDkyNTQ4KSxlLmFkZFNjYWxlZFZlY3RvcihhWzVdLG8qaSoxLjA5MjU0OCksZS5hZGRTY2FsZWRWZWN0b3IoYVs2XSwuMzE1MzkyKigzKmkqaS0xKSksZS5hZGRTY2FsZWRWZWN0b3IoYVs3XSxuKmkqMS4wOTI1NDgpLGUuYWRkU2NhbGVkVmVjdG9yKGFbOF0sLjU0NjI3NCoobipuLW8qbykpLGV9Z2V0SXJyYWRpYW5jZUF0KHQsZSl7Y29uc3Qgbj10Lngsbz10LnksaT10LnosYT10aGlzLmNvZWZmaWNpZW50cztyZXR1cm4gZS5jb3B5KGFbMF0pLm11bHRpcGx5U2NhbGFyKC44ODYyMjcpLGUuYWRkU2NhbGVkVmVjdG9yKGFbMV0sMS4wMjMzMjgqbyksZS5hZGRTY2FsZWRWZWN0b3IoYVsyXSwxLjAyMzMyOCppKSxlLmFkZFNjYWxlZFZlY3RvcihhWzNdLDEuMDIzMzI4Km4pLGUuYWRkU2NhbGVkVmVjdG9yKGFbNF0sLjg1ODA4NipuKm8pLGUuYWRkU2NhbGVkVmVjdG9yKGFbNV0sLjg1ODA4NipvKmkpLGUuYWRkU2NhbGVkVmVjdG9yKGFbNl0sLjc0MzEyNSppKmktLjI0NzcwOCksZS5hZGRTY2FsZWRWZWN0b3IoYVs3XSwuODU4MDg2Km4qaSksZS5hZGRTY2FsZWRWZWN0b3IoYVs4XSwuNDI5MDQzKihuKm4tbypvKSksZX1hZGQodCl7Zm9yKGxldCBlPTA7ZTw5O2UrKyl0aGlzLmNvZWZmaWNpZW50c1tlXS5hZGQodC5jb2VmZmljaWVudHNbZV0pO3JldHVybiB0aGlzfWFkZFNjYWxlZFNIKHQsZSl7Zm9yKGxldCBuPTA7bjw5O24rKyl0aGlzLmNvZWZmaWNpZW50c1tuXS5hZGRTY2FsZWRWZWN0b3IodC5jb2VmZmljaWVudHNbbl0sZSk7cmV0dXJuIHRoaXN9c2NhbGUodCl7Zm9yKGxldCBlPTA7ZTw5O2UrKyl0aGlzLmNvZWZmaWNpZW50c1tlXS5tdWx0aXBseVNjYWxhcih0KTtyZXR1cm4gdGhpc31sZXJwKHQsZSl7Zm9yKGxldCBuPTA7bjw5O24rKyl0aGlzLmNvZWZmaWNpZW50c1tuXS5sZXJwKHQuY29lZmZpY2llbnRzW25dLGUpO3JldHVybiB0aGlzfWVxdWFscyh0KXtmb3IobGV0IGU9MDtlPDk7ZSsrKWlmKCF0aGlzLmNvZWZmaWNpZW50c1tlXS5lcXVhbHModC5jb2VmZmljaWVudHNbZV0pKXJldHVybiExO3JldHVybiEwfWNvcHkodCl7cmV0dXJuIHRoaXMuc2V0KHQuY29lZmZpY2llbnRzKX1jbG9uZSgpe3JldHVybihuZXcgdGhpcy5jb25zdHJ1Y3RvcikuY29weSh0aGlzKX1mcm9tQXJyYXkodCxlPTApe2NvbnN0IG49dGhpcy5jb2VmZmljaWVudHM7Zm9yKGxldCBvPTA7bzw5O28rKyluW29dLmZyb21BcnJheSh0LGUrMypvKTtyZXR1cm4gdGhpc310b0FycmF5KHQ9W10sZT0wKXtjb25zdCBuPXRoaXMuY29lZmZpY2llbnRzO2ZvcihsZXQgbz0wO288OTtvKyspbltvXS50b0FycmF5KHQsZSszKm8pO3JldHVybiB0fXN0YXRpYyBnZXRCYXNpc0F0KHQsZSl7Y29uc3Qgbj10Lngsbz10LnksaT10Lno7ZVswXT0uMjgyMDk1LGVbMV09LjQ4ODYwMypvLGVbMl09LjQ4ODYwMyppLGVbM109LjQ4ODYwMypuLGVbNF09MS4wOTI1NDgqbipvLGVbNV09MS4wOTI1NDgqbyppLGVbNl09LjMxNTM5MiooMyppKmktMSksZVs3XT0xLjA5MjU0OCpuKmksZVs4XT0uNTQ2Mjc0KihuKm4tbypvKX19ZGd0LnByb3RvdHlwZS5pc1NwaGVyaWNhbEhhcm1vbmljczM9ITA7Y2xhc3MgcGd0IGV4dGVuZHMgJHV0e2NvbnN0cnVjdG9yKHQ9bmV3IGRndCxlPTEpe3N1cGVyKHZvaWQgMCxlKSx0aGlzLnNoPXR9Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLnNoLmNvcHkodC5zaCksdGhpc31mcm9tSlNPTih0KXtyZXR1cm4gdGhpcy5pbnRlbnNpdHk9dC5pbnRlbnNpdHksdGhpcy5zaC5mcm9tQXJyYXkodC5zaCksdGhpc310b0pTT04odCl7Y29uc3QgZT1zdXBlci50b0pTT04odCk7cmV0dXJuIGUub2JqZWN0LnNoPXRoaXMuc2gudG9BcnJheSgpLGV9fXBndC5wcm90b3R5cGUuaXNMaWdodFByb2JlPSEwOyhjbGFzcyBleHRlbmRzIGRjdHtjb25zdHJ1Y3Rvcigpe3N1cGVyKCksdGhpcy50eXBlPSJJbnN0YW5jZWRCdWZmZXJHZW9tZXRyeSIsdGhpcy5pbnN0YW5jZUNvdW50PTEvMH1jb3B5KHQpe3JldHVybiBzdXBlci5jb3B5KHQpLHRoaXMuaW5zdGFuY2VDb3VudD10Lmluc3RhbmNlQ291bnQsdGhpc31jbG9uZSgpe3JldHVybihuZXcgdGhpcy5jb25zdHJ1Y3RvcikuY29weSh0aGlzKX10b0pTT04oKXtjb25zdCB0PXN1cGVyLnRvSlNPTih0aGlzKTtyZXR1cm4gdC5pbnN0YW5jZUNvdW50PXRoaXMuaW5zdGFuY2VDb3VudCx0LmlzSW5zdGFuY2VkQnVmZmVyR2VvbWV0cnk9ITAsdH19KS5wcm90b3R5cGUuaXNJbnN0YW5jZWRCdWZmZXJHZW9tZXRyeT0hMDsoY2xhc3MgZXh0ZW5kcyBRbHR7Y29uc3RydWN0b3IodCxlLG4sbz0xKXsibnVtYmVyIj09dHlwZW9mIG4mJihvPW4sbj0hMSxjb25zb2xlLmVycm9yKCJUSFJFRS5JbnN0YW5jZWRCdWZmZXJBdHRyaWJ1dGU6IFRoZSBjb25zdHJ1Y3RvciBub3cgZXhwZWN0cyBub3JtYWxpemVkIGFzIHRoZSB0aGlyZCBhcmd1bWVudC4iKSksc3VwZXIodCxlLG4pLHRoaXMubWVzaFBlckF0dHJpYnV0ZT1vfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5tZXNoUGVyQXR0cmlidXRlPXQubWVzaFBlckF0dHJpYnV0ZSx0aGlzfXRvSlNPTigpe2NvbnN0IHQ9c3VwZXIudG9KU09OKCk7cmV0dXJuIHQubWVzaFBlckF0dHJpYnV0ZT10aGlzLm1lc2hQZXJBdHRyaWJ1dGUsdC5pc0luc3RhbmNlZEJ1ZmZlckF0dHJpYnV0ZT0hMCx0fX0pLnByb3RvdHlwZS5pc0luc3RhbmNlZEJ1ZmZlckF0dHJpYnV0ZT0hMDtsZXQgbWd0OyhjbGFzcyBleHRlbmRzIFd1dHtjb25zdHJ1Y3Rvcih0KXtzdXBlcih0KSwidW5kZWZpbmVkIj09dHlwZW9mIGNyZWF0ZUltYWdlQml0bWFwJiZjb25zb2xlLndhcm4oIlRIUkVFLkltYWdlQml0bWFwTG9hZGVyOiBjcmVhdGVJbWFnZUJpdG1hcCgpIG5vdCBzdXBwb3J0ZWQuIiksInVuZGVmaW5lZCI9PXR5cGVvZiBmZXRjaCYmY29uc29sZS53YXJuKCJUSFJFRS5JbWFnZUJpdG1hcExvYWRlcjogZmV0Y2goKSBub3Qgc3VwcG9ydGVkLiIpLHRoaXMub3B0aW9ucz17cHJlbXVsdGlwbHlBbHBoYToibm9uZSJ9fXNldE9wdGlvbnModCl7cmV0dXJuIHRoaXMub3B0aW9ucz10LHRoaXN9bG9hZCh0LGUsbixvKXt2b2lkIDA9PT10JiYodD0iIiksdm9pZCAwIT09dGhpcy5wYXRoJiYodD10aGlzLnBhdGgrdCksdD10aGlzLm1hbmFnZXIucmVzb2x2ZVVSTCh0KTtjb25zdCBpPXRoaXMsYT1qdXQuZ2V0KHQpO2lmKHZvaWQgMCE9PWEpcmV0dXJuIGkubWFuYWdlci5pdGVtU3RhcnQodCksc2V0VGltZW91dCgoZnVuY3Rpb24oKXtlJiZlKGEpLGkubWFuYWdlci5pdGVtRW5kKHQpfSksMCksYTtjb25zdCByPXt9O3IuY3JlZGVudGlhbHM9ImFub255bW91cyI9PT10aGlzLmNyb3NzT3JpZ2luPyJzYW1lLW9yaWdpbiI6ImluY2x1ZGUiLHIuaGVhZGVycz10aGlzLnJlcXVlc3RIZWFkZXIsZmV0Y2godCxyKS50aGVuKChmdW5jdGlvbih0KXtyZXR1cm4gdC5ibG9iKCl9KSkudGhlbigoZnVuY3Rpb24odCl7cmV0dXJuIGNyZWF0ZUltYWdlQml0bWFwKHQsT2JqZWN0LmFzc2lnbihpLm9wdGlvbnMse2NvbG9yU3BhY2VDb252ZXJzaW9uOiJub25lIn0pKX0pKS50aGVuKChmdW5jdGlvbihuKXtqdXQuYWRkKHQsbiksZSYmZShuKSxpLm1hbmFnZXIuaXRlbUVuZCh0KX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7byYmbyhlKSxpLm1hbmFnZXIuaXRlbUVycm9yKHQpLGkubWFuYWdlci5pdGVtRW5kKHQpfSkpLGkubWFuYWdlci5pdGVtU3RhcnQodCl9fSkucHJvdG90eXBlLmlzSW1hZ2VCaXRtYXBMb2FkZXI9ITA7Y29uc3QgZmd0PWZ1bmN0aW9uKCl7cmV0dXJuIHZvaWQgMD09PW1ndCYmKG1ndD1uZXcod2luZG93LkF1ZGlvQ29udGV4dHx8d2luZG93LndlYmtpdEF1ZGlvQ29udGV4dCkpLG1ndH07Y2xhc3MgdWd0IGV4dGVuZHMgV3V0e2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQpfWxvYWQodCxlLG4sbyl7Y29uc3QgaT10aGlzLGE9bmV3IFl1dCh0aGlzLm1hbmFnZXIpO2Euc2V0UmVzcG9uc2VUeXBlKCJhcnJheWJ1ZmZlciIpLGEuc2V0UGF0aCh0aGlzLnBhdGgpLGEuc2V0UmVxdWVzdEhlYWRlcih0aGlzLnJlcXVlc3RIZWFkZXIpLGEuc2V0V2l0aENyZWRlbnRpYWxzKHRoaXMud2l0aENyZWRlbnRpYWxzKSxhLmxvYWQodCwoZnVuY3Rpb24obil7dHJ5e2NvbnN0IHQ9bi5zbGljZSgwKTtmZ3QoKS5kZWNvZGVBdWRpb0RhdGEodCwoZnVuY3Rpb24odCl7ZSh0KX0pKX1jYXRjaChlKXtvP28oZSk6Y29uc29sZS5lcnJvcihlKSxpLm1hbmFnZXIuaXRlbUVycm9yKHQpfX0pLG4sbyl9fShjbGFzcyBleHRlbmRzIHBndHtjb25zdHJ1Y3Rvcih0LGUsbj0xKXtzdXBlcih2b2lkIDAsbik7Y29uc3Qgbz0obmV3IFpsdCkuc2V0KHQpLGk9KG5ldyBabHQpLnNldChlKSxhPW5ldyB3c3Qoby5yLG8uZyxvLmIpLHI9bmV3IHdzdChpLnIsaS5nLGkuYikscz1NYXRoLnNxcnQoTWF0aC5QSSksbD1zKk1hdGguc3FydCguNzUpO3RoaXMuc2guY29lZmZpY2llbnRzWzBdLmNvcHkoYSkuYWRkKHIpLm11bHRpcGx5U2NhbGFyKHMpLHRoaXMuc2guY29lZmZpY2llbnRzWzFdLmNvcHkoYSkuc3ViKHIpLm11bHRpcGx5U2NhbGFyKGwpfX0pLnByb3RvdHlwZS5pc0hlbWlzcGhlcmVMaWdodFByb2JlPSEwOyhjbGFzcyBleHRlbmRzIHBndHtjb25zdHJ1Y3Rvcih0LGU9MSl7c3VwZXIodm9pZCAwLGUpO2NvbnN0IG49KG5ldyBabHQpLnNldCh0KTt0aGlzLnNoLmNvZWZmaWNpZW50c1swXS5zZXQobi5yLG4uZyxuLmIpLm11bHRpcGx5U2NhbGFyKDIqTWF0aC5zcXJ0KE1hdGguUEkpKX19KS5wcm90b3R5cGUuaXNBbWJpZW50TGlnaHRQcm9iZT0hMDtjbGFzcyBnZ3R7Y29uc3RydWN0b3IodCxlLG4pe2xldCBvLGksYTtzd2l0Y2godGhpcy5iaW5kaW5nPXQsdGhpcy52YWx1ZVNpemU9bixlKXtjYXNlInF1YXRlcm5pb24iOm89dGhpcy5fc2xlcnAsaT10aGlzLl9zbGVycEFkZGl0aXZlLGE9dGhpcy5fc2V0QWRkaXRpdmVJZGVudGl0eVF1YXRlcm5pb24sdGhpcy5idWZmZXI9bmV3IEZsb2F0NjRBcnJheSg2Km4pLHRoaXMuX3dvcmtJbmRleD01O2JyZWFrO2Nhc2Uic3RyaW5nIjpjYXNlImJvb2wiOm89dGhpcy5fc2VsZWN0LGk9dGhpcy5fc2VsZWN0LGE9dGhpcy5fc2V0QWRkaXRpdmVJZGVudGl0eU90aGVyLHRoaXMuYnVmZmVyPW5ldyBBcnJheSg1Km4pO2JyZWFrO2RlZmF1bHQ6bz10aGlzLl9sZXJwLGk9dGhpcy5fbGVycEFkZGl0aXZlLGE9dGhpcy5fc2V0QWRkaXRpdmVJZGVudGl0eU51bWVyaWMsdGhpcy5idWZmZXI9bmV3IEZsb2F0NjRBcnJheSg1Km4pfXRoaXMuX21peEJ1ZmZlclJlZ2lvbj1vLHRoaXMuX21peEJ1ZmZlclJlZ2lvbkFkZGl0aXZlPWksdGhpcy5fc2V0SWRlbnRpdHk9YSx0aGlzLl9vcmlnSW5kZXg9Myx0aGlzLl9hZGRJbmRleD00LHRoaXMuY3VtdWxhdGl2ZVdlaWdodD0wLHRoaXMuY3VtdWxhdGl2ZVdlaWdodEFkZGl0aXZlPTAsdGhpcy51c2VDb3VudD0wLHRoaXMucmVmZXJlbmNlQ291bnQ9MH1hY2N1bXVsYXRlKHQsZSl7Y29uc3Qgbj10aGlzLmJ1ZmZlcixvPXRoaXMudmFsdWVTaXplLGk9dCpvK287bGV0IGE9dGhpcy5jdW11bGF0aXZlV2VpZ2h0O2lmKDA9PT1hKXtmb3IobGV0IHQ9MDt0IT09bzsrK3QpbltpK3RdPW5bdF07YT1lfWVsc2V7YSs9ZTt0aGlzLl9taXhCdWZmZXJSZWdpb24obixpLDAsZS9hLG8pfXRoaXMuY3VtdWxhdGl2ZVdlaWdodD1hfWFjY3VtdWxhdGVBZGRpdGl2ZSh0KXtjb25zdCBlPXRoaXMuYnVmZmVyLG49dGhpcy52YWx1ZVNpemUsbz1uKnRoaXMuX2FkZEluZGV4OzA9PT10aGlzLmN1bXVsYXRpdmVXZWlnaHRBZGRpdGl2ZSYmdGhpcy5fc2V0SWRlbnRpdHkoKSx0aGlzLl9taXhCdWZmZXJSZWdpb25BZGRpdGl2ZShlLG8sMCx0LG4pLHRoaXMuY3VtdWxhdGl2ZVdlaWdodEFkZGl0aXZlKz10fWFwcGx5KHQpe2NvbnN0IGU9dGhpcy52YWx1ZVNpemUsbj10aGlzLmJ1ZmZlcixvPXQqZStlLGk9dGhpcy5jdW11bGF0aXZlV2VpZ2h0LGE9dGhpcy5jdW11bGF0aXZlV2VpZ2h0QWRkaXRpdmUscj10aGlzLmJpbmRpbmc7aWYodGhpcy5jdW11bGF0aXZlV2VpZ2h0PTAsdGhpcy5jdW11bGF0aXZlV2VpZ2h0QWRkaXRpdmU9MCxpPDEpe3RoaXMuX21peEJ1ZmZlclJlZ2lvbihuLG8sZSp0aGlzLl9vcmlnSW5kZXgsMS1pLGUpfWE+MCYmdGhpcy5fbWl4QnVmZmVyUmVnaW9uQWRkaXRpdmUobixvLHRoaXMuX2FkZEluZGV4KmUsMSxlKTtmb3IobGV0IHQ9ZSxpPWUrZTt0IT09aTsrK3QpaWYoblt0XSE9PW5bdCtlXSl7ci5zZXRWYWx1ZShuLG8pO2JyZWFrfX1zYXZlT3JpZ2luYWxTdGF0ZSgpe2NvbnN0IHQ9dGhpcy5idWZmZXIsZT10aGlzLnZhbHVlU2l6ZSxuPWUqdGhpcy5fb3JpZ0luZGV4O3RoaXMuYmluZGluZy5nZXRWYWx1ZSh0LG4pO2ZvcihsZXQgbz1lLGk9bjtvIT09aTsrK28pdFtvXT10W24rbyVlXTt0aGlzLl9zZXRJZGVudGl0eSgpLHRoaXMuY3VtdWxhdGl2ZVdlaWdodD0wLHRoaXMuY3VtdWxhdGl2ZVdlaWdodEFkZGl0aXZlPTB9cmVzdG9yZU9yaWdpbmFsU3RhdGUoKXt0aGlzLmJpbmRpbmcuc2V0VmFsdWUodGhpcy5idWZmZXIsMyp0aGlzLnZhbHVlU2l6ZSl9X3NldEFkZGl0aXZlSWRlbnRpdHlOdW1lcmljKCl7Y29uc3QgdD10aGlzLl9hZGRJbmRleCp0aGlzLnZhbHVlU2l6ZSxlPXQrdGhpcy52YWx1ZVNpemU7Zm9yKGxldCBuPXQ7bjxlO24rKyl0aGlzLmJ1ZmZlcltuXT0wfV9zZXRBZGRpdGl2ZUlkZW50aXR5UXVhdGVybmlvbigpe3RoaXMuX3NldEFkZGl0aXZlSWRlbnRpdHlOdW1lcmljKCksdGhpcy5idWZmZXJbdGhpcy5fYWRkSW5kZXgqdGhpcy52YWx1ZVNpemUrM109MX1fc2V0QWRkaXRpdmVJZGVudGl0eU90aGVyKCl7Y29uc3QgdD10aGlzLl9vcmlnSW5kZXgqdGhpcy52YWx1ZVNpemUsZT10aGlzLl9hZGRJbmRleCp0aGlzLnZhbHVlU2l6ZTtmb3IobGV0IG49MDtuPHRoaXMudmFsdWVTaXplO24rKyl0aGlzLmJ1ZmZlcltlK25dPXRoaXMuYnVmZmVyW3Qrbl19X3NlbGVjdCh0LGUsbixvLGkpe2lmKG8+PS41KWZvcihsZXQgbz0wO28hPT1pOysrbyl0W2Urb109dFtuK29dfV9zbGVycCh0LGUsbixvKXtQc3Quc2xlcnBGbGF0KHQsZSx0LGUsdCxuLG8pfV9zbGVycEFkZGl0aXZlKHQsZSxuLG8saSl7Y29uc3QgYT10aGlzLl93b3JrSW5kZXgqaTtQc3QubXVsdGlwbHlRdWF0ZXJuaW9uc0ZsYXQodCxhLHQsZSx0LG4pLFBzdC5zbGVycEZsYXQodCxlLHQsZSx0LGEsbyl9X2xlcnAodCxlLG4sbyxpKXtjb25zdCBhPTEtbztmb3IobGV0IHI9MDtyIT09aTsrK3Ipe2NvbnN0IGk9ZStyO3RbaV09dFtpXSphK3RbbityXSpvfX1fbGVycEFkZGl0aXZlKHQsZSxuLG8saSl7Zm9yKGxldCBhPTA7YSE9PWk7KythKXtjb25zdCBpPWUrYTt0W2ldPXRbaV0rdFtuK2FdKm99fX1jb25zdCBoZ3Q9IlxcW1xcXVxcLjpcXC8iLGJndD1uZXcgUmVnRXhwKCJbXFxbXFxdXFwuOlxcL10iLCJnIikseWd0PSJbXlxcW1xcXVxcLjpcXC9dIixfZ3Q9IlteIitoZ3QucmVwbGFjZSgiXFwuIiwiIikrIl0iLENndD0vKCg/OldDK1tcLzpdKSopLy5zb3VyY2UucmVwbGFjZSgiV0MiLHlndCksTWd0PS8oV0NPRCspPy8uc291cmNlLnJlcGxhY2UoIldDT0QiLF9ndCksdmd0PS8oPzpcLihXQyspKD86XFsoLispXF0pPyk/Ly5zb3VyY2UucmVwbGFjZSgiV0MiLHlndCkseGd0PS9cLihXQyspKD86XFsoLispXF0pPy8uc291cmNlLnJlcGxhY2UoIldDIix5Z3QpLE9ndD1uZXcgUmVnRXhwKCJeIitDZ3QrTWd0K3ZndCt4Z3QrIiQiKSxQZ3Q9WyJtYXRlcmlhbCIsIm1hdGVyaWFscyIsImJvbmVzIl07Y2xhc3Mgd2d0e2NvbnN0cnVjdG9yKHQsZSxuKXt0aGlzLnBhdGg9ZSx0aGlzLnBhcnNlZFBhdGg9bnx8d2d0LnBhcnNlVHJhY2tOYW1lKGUpLHRoaXMubm9kZT13Z3QuZmluZE5vZGUodCx0aGlzLnBhcnNlZFBhdGgubm9kZU5hbWUpfHx0LHRoaXMucm9vdE5vZGU9dCx0aGlzLmdldFZhbHVlPXRoaXMuX2dldFZhbHVlX3VuYm91bmQsdGhpcy5zZXRWYWx1ZT10aGlzLl9zZXRWYWx1ZV91bmJvdW5kfXN0YXRpYyBjcmVhdGUodCxlLG4pe3JldHVybiB0JiZ0LmlzQW5pbWF0aW9uT2JqZWN0R3JvdXA/bmV3IHdndC5Db21wb3NpdGUodCxlLG4pOm5ldyB3Z3QodCxlLG4pfXN0YXRpYyBzYW5pdGl6ZU5vZGVOYW1lKHQpe3JldHVybiB0LnJlcGxhY2UoL1xzL2csIl8iKS5yZXBsYWNlKGJndCwiIil9c3RhdGljIHBhcnNlVHJhY2tOYW1lKHQpe2NvbnN0IGU9T2d0LmV4ZWModCk7aWYoIWUpdGhyb3cgbmV3IEVycm9yKCJQcm9wZXJ0eUJpbmRpbmc6IENhbm5vdCBwYXJzZSB0cmFja05hbWU6ICIrdCk7Y29uc3Qgbj17bm9kZU5hbWU6ZVsyXSxvYmplY3ROYW1lOmVbM10sb2JqZWN0SW5kZXg6ZVs0XSxwcm9wZXJ0eU5hbWU6ZVs1XSxwcm9wZXJ0eUluZGV4OmVbNl19LG89bi5ub2RlTmFtZSYmbi5ub2RlTmFtZS5sYXN0SW5kZXhPZigiLiIpO2lmKHZvaWQgMCE9PW8mJi0xIT09byl7Y29uc3QgdD1uLm5vZGVOYW1lLnN1YnN0cmluZyhvKzEpOy0xIT09UGd0LmluZGV4T2YodCkmJihuLm5vZGVOYW1lPW4ubm9kZU5hbWUuc3Vic3RyaW5nKDAsbyksbi5vYmplY3ROYW1lPXQpfWlmKG51bGw9PT1uLnByb3BlcnR5TmFtZXx8MD09PW4ucHJvcGVydHlOYW1lLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoIlByb3BlcnR5QmluZGluZzogY2FuIG5vdCBwYXJzZSBwcm9wZXJ0eU5hbWUgZnJvbSB0cmFja05hbWU6ICIrdCk7cmV0dXJuIG59c3RhdGljIGZpbmROb2RlKHQsZSl7aWYoIWV8fCIiPT09ZXx8Ii4iPT09ZXx8LTE9PT1lfHxlPT09dC5uYW1lfHxlPT09dC51dWlkKXJldHVybiB0O2lmKHQuc2tlbGV0b24pe2NvbnN0IG49dC5za2VsZXRvbi5nZXRCb25lQnlOYW1lKGUpO2lmKHZvaWQgMCE9PW4pcmV0dXJuIG59aWYodC5jaGlsZHJlbil7Y29uc3Qgbj1mdW5jdGlvbih0KXtmb3IobGV0IG89MDtvPHQubGVuZ3RoO28rKyl7Y29uc3QgaT10W29dO2lmKGkubmFtZT09PWV8fGkudXVpZD09PWUpcmV0dXJuIGk7Y29uc3QgYT1uKGkuY2hpbGRyZW4pO2lmKGEpcmV0dXJuIGF9cmV0dXJuIG51bGx9LG89bih0LmNoaWxkcmVuKTtpZihvKXJldHVybiBvfXJldHVybiBudWxsfV9nZXRWYWx1ZV91bmF2YWlsYWJsZSgpe31fc2V0VmFsdWVfdW5hdmFpbGFibGUoKXt9X2dldFZhbHVlX2RpcmVjdCh0LGUpe3RbZV09dGhpcy5ub2RlW3RoaXMucHJvcGVydHlOYW1lXX1fZ2V0VmFsdWVfYXJyYXkodCxlKXtjb25zdCBuPXRoaXMucmVzb2x2ZWRQcm9wZXJ0eTtmb3IobGV0IG89MCxpPW4ubGVuZ3RoO28hPT1pOysrbyl0W2UrK109bltvXX1fZ2V0VmFsdWVfYXJyYXlFbGVtZW50KHQsZSl7dFtlXT10aGlzLnJlc29sdmVkUHJvcGVydHlbdGhpcy5wcm9wZXJ0eUluZGV4XX1fZ2V0VmFsdWVfdG9BcnJheSh0LGUpe3RoaXMucmVzb2x2ZWRQcm9wZXJ0eS50b0FycmF5KHQsZSl9X3NldFZhbHVlX2RpcmVjdCh0LGUpe3RoaXMudGFyZ2V0T2JqZWN0W3RoaXMucHJvcGVydHlOYW1lXT10W2VdfV9zZXRWYWx1ZV9kaXJlY3Rfc2V0TmVlZHNVcGRhdGUodCxlKXt0aGlzLnRhcmdldE9iamVjdFt0aGlzLnByb3BlcnR5TmFtZV09dFtlXSx0aGlzLnRhcmdldE9iamVjdC5uZWVkc1VwZGF0ZT0hMH1fc2V0VmFsdWVfZGlyZWN0X3NldE1hdHJpeFdvcmxkTmVlZHNVcGRhdGUodCxlKXt0aGlzLnRhcmdldE9iamVjdFt0aGlzLnByb3BlcnR5TmFtZV09dFtlXSx0aGlzLnRhcmdldE9iamVjdC5tYXRyaXhXb3JsZE5lZWRzVXBkYXRlPSEwfV9zZXRWYWx1ZV9hcnJheSh0LGUpe2NvbnN0IG49dGhpcy5yZXNvbHZlZFByb3BlcnR5O2ZvcihsZXQgbz0wLGk9bi5sZW5ndGg7byE9PWk7KytvKW5bb109dFtlKytdfV9zZXRWYWx1ZV9hcnJheV9zZXROZWVkc1VwZGF0ZSh0LGUpe2NvbnN0IG49dGhpcy5yZXNvbHZlZFByb3BlcnR5O2ZvcihsZXQgbz0wLGk9bi5sZW5ndGg7byE9PWk7KytvKW5bb109dFtlKytdO3RoaXMudGFyZ2V0T2JqZWN0Lm5lZWRzVXBkYXRlPSEwfV9zZXRWYWx1ZV9hcnJheV9zZXRNYXRyaXhXb3JsZE5lZWRzVXBkYXRlKHQsZSl7Y29uc3Qgbj10aGlzLnJlc29sdmVkUHJvcGVydHk7Zm9yKGxldCBvPTAsaT1uLmxlbmd0aDtvIT09aTsrK28pbltvXT10W2UrK107dGhpcy50YXJnZXRPYmplY3QubWF0cml4V29ybGROZWVkc1VwZGF0ZT0hMH1fc2V0VmFsdWVfYXJyYXlFbGVtZW50KHQsZSl7dGhpcy5yZXNvbHZlZFByb3BlcnR5W3RoaXMucHJvcGVydHlJbmRleF09dFtlXX1fc2V0VmFsdWVfYXJyYXlFbGVtZW50X3NldE5lZWRzVXBkYXRlKHQsZSl7dGhpcy5yZXNvbHZlZFByb3BlcnR5W3RoaXMucHJvcGVydHlJbmRleF09dFtlXSx0aGlzLnRhcmdldE9iamVjdC5uZWVkc1VwZGF0ZT0hMH1fc2V0VmFsdWVfYXJyYXlFbGVtZW50X3NldE1hdHJpeFdvcmxkTmVlZHNVcGRhdGUodCxlKXt0aGlzLnJlc29sdmVkUHJvcGVydHlbdGhpcy5wcm9wZXJ0eUluZGV4XT10W2VdLHRoaXMudGFyZ2V0T2JqZWN0Lm1hdHJpeFdvcmxkTmVlZHNVcGRhdGU9ITB9X3NldFZhbHVlX2Zyb21BcnJheSh0LGUpe3RoaXMucmVzb2x2ZWRQcm9wZXJ0eS5mcm9tQXJyYXkodCxlKX1fc2V0VmFsdWVfZnJvbUFycmF5X3NldE5lZWRzVXBkYXRlKHQsZSl7dGhpcy5yZXNvbHZlZFByb3BlcnR5LmZyb21BcnJheSh0LGUpLHRoaXMudGFyZ2V0T2JqZWN0Lm5lZWRzVXBkYXRlPSEwfV9zZXRWYWx1ZV9mcm9tQXJyYXlfc2V0TWF0cml4V29ybGROZWVkc1VwZGF0ZSh0LGUpe3RoaXMucmVzb2x2ZWRQcm9wZXJ0eS5mcm9tQXJyYXkodCxlKSx0aGlzLnRhcmdldE9iamVjdC5tYXRyaXhXb3JsZE5lZWRzVXBkYXRlPSEwfV9nZXRWYWx1ZV91bmJvdW5kKHQsZSl7dGhpcy5iaW5kKCksdGhpcy5nZXRWYWx1ZSh0LGUpfV9zZXRWYWx1ZV91bmJvdW5kKHQsZSl7dGhpcy5iaW5kKCksdGhpcy5zZXRWYWx1ZSh0LGUpfWJpbmQoKXtsZXQgdD10aGlzLm5vZGU7Y29uc3QgZT10aGlzLnBhcnNlZFBhdGgsbj1lLm9iamVjdE5hbWUsbz1lLnByb3BlcnR5TmFtZTtsZXQgaT1lLnByb3BlcnR5SW5kZXg7aWYodHx8KHQ9d2d0LmZpbmROb2RlKHRoaXMucm9vdE5vZGUsZS5ub2RlTmFtZSl8fHRoaXMucm9vdE5vZGUsdGhpcy5ub2RlPXQpLHRoaXMuZ2V0VmFsdWU9dGhpcy5fZ2V0VmFsdWVfdW5hdmFpbGFibGUsdGhpcy5zZXRWYWx1ZT10aGlzLl9zZXRWYWx1ZV91bmF2YWlsYWJsZSwhdClyZXR1cm4gdm9pZCBjb25zb2xlLmVycm9yKCJUSFJFRS5Qcm9wZXJ0eUJpbmRpbmc6IFRyeWluZyB0byB1cGRhdGUgbm9kZSBmb3IgdHJhY2s6ICIrdGhpcy5wYXRoKyIgYnV0IGl0IHdhc24ndCBmb3VuZC4iKTtpZihuKXtsZXQgbz1lLm9iamVjdEluZGV4O3N3aXRjaChuKXtjYXNlIm1hdGVyaWFscyI6aWYoIXQubWF0ZXJpYWwpcmV0dXJuIHZvaWQgY29uc29sZS5lcnJvcigiVEhSRUUuUHJvcGVydHlCaW5kaW5nOiBDYW4gbm90IGJpbmQgdG8gbWF0ZXJpYWwgYXMgbm9kZSBkb2VzIG5vdCBoYXZlIGEgbWF0ZXJpYWwuIix0aGlzKTtpZighdC5tYXRlcmlhbC5tYXRlcmlhbHMpcmV0dXJuIHZvaWQgY29uc29sZS5lcnJvcigiVEhSRUUuUHJvcGVydHlCaW5kaW5nOiBDYW4gbm90IGJpbmQgdG8gbWF0ZXJpYWwubWF0ZXJpYWxzIGFzIG5vZGUubWF0ZXJpYWwgZG9lcyBub3QgaGF2ZSBhIG1hdGVyaWFscyBhcnJheS4iLHRoaXMpO3Q9dC5tYXRlcmlhbC5tYXRlcmlhbHM7YnJlYWs7Y2FzZSJib25lcyI6aWYoIXQuc2tlbGV0b24pcmV0dXJuIHZvaWQgY29uc29sZS5lcnJvcigiVEhSRUUuUHJvcGVydHlCaW5kaW5nOiBDYW4gbm90IGJpbmQgdG8gYm9uZXMgYXMgbm9kZSBkb2VzIG5vdCBoYXZlIGEgc2tlbGV0b24uIix0aGlzKTt0PXQuc2tlbGV0b24uYm9uZXM7Zm9yKGxldCBlPTA7ZTx0Lmxlbmd0aDtlKyspaWYodFtlXS5uYW1lPT09byl7bz1lO2JyZWFrfWJyZWFrO2RlZmF1bHQ6aWYodm9pZCAwPT09dFtuXSlyZXR1cm4gdm9pZCBjb25zb2xlLmVycm9yKCJUSFJFRS5Qcm9wZXJ0eUJpbmRpbmc6IENhbiBub3QgYmluZCB0byBvYmplY3ROYW1lIG9mIG5vZGUgdW5kZWZpbmVkLiIsdGhpcyk7dD10W25dfWlmKHZvaWQgMCE9PW8pe2lmKHZvaWQgMD09PXRbb10pcmV0dXJuIHZvaWQgY29uc29sZS5lcnJvcigiVEhSRUUuUHJvcGVydHlCaW5kaW5nOiBUcnlpbmcgdG8gYmluZCB0byBvYmplY3RJbmRleCBvZiBvYmplY3ROYW1lLCBidXQgaXMgdW5kZWZpbmVkLiIsdGhpcyx0KTt0PXRbb119fWNvbnN0IGE9dFtvXTtpZih2b2lkIDA9PT1hKXtyZXR1cm4gdm9pZCBjb25zb2xlLmVycm9yKCJUSFJFRS5Qcm9wZXJ0eUJpbmRpbmc6IFRyeWluZyB0byB1cGRhdGUgcHJvcGVydHkgZm9yIHRyYWNrOiAiK2Uubm9kZU5hbWUrIi4iK28rIiBidXQgaXQgd2Fzbid0IGZvdW5kLiIsdCl9bGV0IHI9dGhpcy5WZXJzaW9uaW5nLk5vbmU7dGhpcy50YXJnZXRPYmplY3Q9dCx2b2lkIDAhPT10Lm5lZWRzVXBkYXRlP3I9dGhpcy5WZXJzaW9uaW5nLk5lZWRzVXBkYXRlOnZvaWQgMCE9PXQubWF0cml4V29ybGROZWVkc1VwZGF0ZSYmKHI9dGhpcy5WZXJzaW9uaW5nLk1hdHJpeFdvcmxkTmVlZHNVcGRhdGUpO2xldCBzPXRoaXMuQmluZGluZ1R5cGUuRGlyZWN0O2lmKHZvaWQgMCE9PWkpe2lmKCJtb3JwaFRhcmdldEluZmx1ZW5jZXMiPT09byl7aWYoIXQuZ2VvbWV0cnkpcmV0dXJuIHZvaWQgY29uc29sZS5lcnJvcigiVEhSRUUuUHJvcGVydHlCaW5kaW5nOiBDYW4gbm90IGJpbmQgdG8gbW9ycGhUYXJnZXRJbmZsdWVuY2VzIGJlY2F1c2Ugbm9kZSBkb2VzIG5vdCBoYXZlIGEgZ2VvbWV0cnkuIix0aGlzKTtpZighdC5nZW9tZXRyeS5pc0J1ZmZlckdlb21ldHJ5KXJldHVybiB2b2lkIGNvbnNvbGUuZXJyb3IoIlRIUkVFLlByb3BlcnR5QmluZGluZzogQ2FuIG5vdCBiaW5kIHRvIG1vcnBoVGFyZ2V0SW5mbHVlbmNlcyBvbiBUSFJFRS5HZW9tZXRyeS4gVXNlIFRIUkVFLkJ1ZmZlckdlb21ldHJ5IGluc3RlYWQuIix0aGlzKTtpZighdC5nZW9tZXRyeS5tb3JwaEF0dHJpYnV0ZXMpcmV0dXJuIHZvaWQgY29uc29sZS5lcnJvcigiVEhSRUUuUHJvcGVydHlCaW5kaW5nOiBDYW4gbm90IGJpbmQgdG8gbW9ycGhUYXJnZXRJbmZsdWVuY2VzIGJlY2F1c2Ugbm9kZSBkb2VzIG5vdCBoYXZlIGEgZ2VvbWV0cnkubW9ycGhBdHRyaWJ1dGVzLiIsdGhpcyk7dm9pZCAwIT09dC5tb3JwaFRhcmdldERpY3Rpb25hcnlbaV0mJihpPXQubW9ycGhUYXJnZXREaWN0aW9uYXJ5W2ldKX1zPXRoaXMuQmluZGluZ1R5cGUuQXJyYXlFbGVtZW50LHRoaXMucmVzb2x2ZWRQcm9wZXJ0eT1hLHRoaXMucHJvcGVydHlJbmRleD1pfWVsc2Ugdm9pZCAwIT09YS5mcm9tQXJyYXkmJnZvaWQgMCE9PWEudG9BcnJheT8ocz10aGlzLkJpbmRpbmdUeXBlLkhhc0Zyb21Ub0FycmF5LHRoaXMucmVzb2x2ZWRQcm9wZXJ0eT1hKTpBcnJheS5pc0FycmF5KGEpPyhzPXRoaXMuQmluZGluZ1R5cGUuRW50aXJlQXJyYXksdGhpcy5yZXNvbHZlZFByb3BlcnR5PWEpOnRoaXMucHJvcGVydHlOYW1lPW87dGhpcy5nZXRWYWx1ZT10aGlzLkdldHRlckJ5QmluZGluZ1R5cGVbc10sdGhpcy5zZXRWYWx1ZT10aGlzLlNldHRlckJ5QmluZGluZ1R5cGVBbmRWZXJzaW9uaW5nW3NdW3JdfXVuYmluZCgpe3RoaXMubm9kZT1udWxsLHRoaXMuZ2V0VmFsdWU9dGhpcy5fZ2V0VmFsdWVfdW5ib3VuZCx0aGlzLnNldFZhbHVlPXRoaXMuX3NldFZhbHVlX3VuYm91bmR9fXdndC5Db21wb3NpdGU9Y2xhc3N7Y29uc3RydWN0b3IodCxlLG4pe2NvbnN0IG89bnx8d2d0LnBhcnNlVHJhY2tOYW1lKGUpO3RoaXMuX3RhcmdldEdyb3VwPXQsdGhpcy5fYmluZGluZ3M9dC5zdWJzY3JpYmVfKGUsbyl9Z2V0VmFsdWUodCxlKXt0aGlzLmJpbmQoKTtjb25zdCBuPXRoaXMuX2JpbmRpbmdzW3RoaXMuX3RhcmdldEdyb3VwLm5DYWNoZWRPYmplY3RzX107dm9pZCAwIT09biYmbi5nZXRWYWx1ZSh0LGUpfXNldFZhbHVlKHQsZSl7Y29uc3Qgbj10aGlzLl9iaW5kaW5ncztmb3IobGV0IG89dGhpcy5fdGFyZ2V0R3JvdXAubkNhY2hlZE9iamVjdHNfLGk9bi5sZW5ndGg7byE9PWk7KytvKW5bb10uc2V0VmFsdWUodCxlKX1iaW5kKCl7Y29uc3QgdD10aGlzLl9iaW5kaW5ncztmb3IobGV0IGU9dGhpcy5fdGFyZ2V0R3JvdXAubkNhY2hlZE9iamVjdHNfLG49dC5sZW5ndGg7ZSE9PW47KytlKXRbZV0uYmluZCgpfXVuYmluZCgpe2NvbnN0IHQ9dGhpcy5fYmluZGluZ3M7Zm9yKGxldCBlPXRoaXMuX3RhcmdldEdyb3VwLm5DYWNoZWRPYmplY3RzXyxuPXQubGVuZ3RoO2UhPT1uOysrZSl0W2VdLnVuYmluZCgpfX0sd2d0LnByb3RvdHlwZS5CaW5kaW5nVHlwZT17RGlyZWN0OjAsRW50aXJlQXJyYXk6MSxBcnJheUVsZW1lbnQ6MixIYXNGcm9tVG9BcnJheTozfSx3Z3QucHJvdG90eXBlLlZlcnNpb25pbmc9e05vbmU6MCxOZWVkc1VwZGF0ZToxLE1hdHJpeFdvcmxkTmVlZHNVcGRhdGU6Mn0sd2d0LnByb3RvdHlwZS5HZXR0ZXJCeUJpbmRpbmdUeXBlPVt3Z3QucHJvdG90eXBlLl9nZXRWYWx1ZV9kaXJlY3Qsd2d0LnByb3RvdHlwZS5fZ2V0VmFsdWVfYXJyYXksd2d0LnByb3RvdHlwZS5fZ2V0VmFsdWVfYXJyYXlFbGVtZW50LHdndC5wcm90b3R5cGUuX2dldFZhbHVlX3RvQXJyYXldLHdndC5wcm90b3R5cGUuU2V0dGVyQnlCaW5kaW5nVHlwZUFuZFZlcnNpb25pbmc9W1t3Z3QucHJvdG90eXBlLl9zZXRWYWx1ZV9kaXJlY3Qsd2d0LnByb3RvdHlwZS5fc2V0VmFsdWVfZGlyZWN0X3NldE5lZWRzVXBkYXRlLHdndC5wcm90b3R5cGUuX3NldFZhbHVlX2RpcmVjdF9zZXRNYXRyaXhXb3JsZE5lZWRzVXBkYXRlXSxbd2d0LnByb3RvdHlwZS5fc2V0VmFsdWVfYXJyYXksd2d0LnByb3RvdHlwZS5fc2V0VmFsdWVfYXJyYXlfc2V0TmVlZHNVcGRhdGUsd2d0LnByb3RvdHlwZS5fc2V0VmFsdWVfYXJyYXlfc2V0TWF0cml4V29ybGROZWVkc1VwZGF0ZV0sW3dndC5wcm90b3R5cGUuX3NldFZhbHVlX2FycmF5RWxlbWVudCx3Z3QucHJvdG90eXBlLl9zZXRWYWx1ZV9hcnJheUVsZW1lbnRfc2V0TmVlZHNVcGRhdGUsd2d0LnByb3RvdHlwZS5fc2V0VmFsdWVfYXJyYXlFbGVtZW50X3NldE1hdHJpeFdvcmxkTmVlZHNVcGRhdGVdLFt3Z3QucHJvdG90eXBlLl9zZXRWYWx1ZV9mcm9tQXJyYXksd2d0LnByb3RvdHlwZS5fc2V0VmFsdWVfZnJvbUFycmF5X3NldE5lZWRzVXBkYXRlLHdndC5wcm90b3R5cGUuX3NldFZhbHVlX2Zyb21BcnJheV9zZXRNYXRyaXhXb3JsZE5lZWRzVXBkYXRlXV07Y2xhc3Mga2d0e2NvbnN0cnVjdG9yKHQsZSxuPW51bGwsbz1lLmJsZW5kTW9kZSl7dGhpcy5fbWl4ZXI9dCx0aGlzLl9jbGlwPWUsdGhpcy5fbG9jYWxSb290PW4sdGhpcy5ibGVuZE1vZGU9bztjb25zdCBpPWUudHJhY2tzLGE9aS5sZW5ndGgscj1uZXcgQXJyYXkoYSkscz17ZW5kaW5nU3RhcnQ6WnJ0LGVuZGluZ0VuZDpacnR9O2ZvcihsZXQgdD0wO3QhPT1hOysrdCl7Y29uc3QgZT1pW3RdLmNyZWF0ZUludGVycG9sYW50KG51bGwpO3JbdF09ZSxlLnNldHRpbmdzPXN9dGhpcy5faW50ZXJwb2xhbnRTZXR0aW5ncz1zLHRoaXMuX2ludGVycG9sYW50cz1yLHRoaXMuX3Byb3BlcnR5QmluZGluZ3M9bmV3IEFycmF5KGEpLHRoaXMuX2NhY2hlSW5kZXg9bnVsbCx0aGlzLl9ieUNsaXBDYWNoZUluZGV4PW51bGwsdGhpcy5fdGltZVNjYWxlSW50ZXJwb2xhbnQ9bnVsbCx0aGlzLl93ZWlnaHRJbnRlcnBvbGFudD1udWxsLHRoaXMubG9vcD0yMjAxLHRoaXMuX2xvb3BDb3VudD0tMSx0aGlzLl9zdGFydFRpbWU9bnVsbCx0aGlzLnRpbWU9MCx0aGlzLnRpbWVTY2FsZT0xLHRoaXMuX2VmZmVjdGl2ZVRpbWVTY2FsZT0xLHRoaXMud2VpZ2h0PTEsdGhpcy5fZWZmZWN0aXZlV2VpZ2h0PTEsdGhpcy5yZXBldGl0aW9ucz0xLzAsdGhpcy5wYXVzZWQ9ITEsdGhpcy5lbmFibGVkPSEwLHRoaXMuY2xhbXBXaGVuRmluaXNoZWQ9ITEsdGhpcy56ZXJvU2xvcGVBdFN0YXJ0PSEwLHRoaXMuemVyb1Nsb3BlQXRFbmQ9ITB9cGxheSgpe3JldHVybiB0aGlzLl9taXhlci5fYWN0aXZhdGVBY3Rpb24odGhpcyksdGhpc31zdG9wKCl7cmV0dXJuIHRoaXMuX21peGVyLl9kZWFjdGl2YXRlQWN0aW9uKHRoaXMpLHRoaXMucmVzZXQoKX1yZXNldCgpe3JldHVybiB0aGlzLnBhdXNlZD0hMSx0aGlzLmVuYWJsZWQ9ITAsdGhpcy50aW1lPTAsdGhpcy5fbG9vcENvdW50PS0xLHRoaXMuX3N0YXJ0VGltZT1udWxsLHRoaXMuc3RvcEZhZGluZygpLnN0b3BXYXJwaW5nKCl9aXNSdW5uaW5nKCl7cmV0dXJuIHRoaXMuZW5hYmxlZCYmIXRoaXMucGF1c2VkJiYwIT09dGhpcy50aW1lU2NhbGUmJm51bGw9PT10aGlzLl9zdGFydFRpbWUmJnRoaXMuX21peGVyLl9pc0FjdGl2ZUFjdGlvbih0aGlzKX1pc1NjaGVkdWxlZCgpe3JldHVybiB0aGlzLl9taXhlci5faXNBY3RpdmVBY3Rpb24odGhpcyl9c3RhcnRBdCh0KXtyZXR1cm4gdGhpcy5fc3RhcnRUaW1lPXQsdGhpc31zZXRMb29wKHQsZSl7cmV0dXJuIHRoaXMubG9vcD10LHRoaXMucmVwZXRpdGlvbnM9ZSx0aGlzfXNldEVmZmVjdGl2ZVdlaWdodCh0KXtyZXR1cm4gdGhpcy53ZWlnaHQ9dCx0aGlzLl9lZmZlY3RpdmVXZWlnaHQ9dGhpcy5lbmFibGVkP3Q6MCx0aGlzLnN0b3BGYWRpbmcoKX1nZXRFZmZlY3RpdmVXZWlnaHQoKXtyZXR1cm4gdGhpcy5fZWZmZWN0aXZlV2VpZ2h0fWZhZGVJbih0KXtyZXR1cm4gdGhpcy5fc2NoZWR1bGVGYWRpbmcodCwwLDEpfWZhZGVPdXQodCl7cmV0dXJuIHRoaXMuX3NjaGVkdWxlRmFkaW5nKHQsMSwwKX1jcm9zc0ZhZGVGcm9tKHQsZSxuKXtpZih0LmZhZGVPdXQoZSksdGhpcy5mYWRlSW4oZSksbil7Y29uc3Qgbj10aGlzLl9jbGlwLmR1cmF0aW9uLG89dC5fY2xpcC5kdXJhdGlvbixpPW4vbzt0LndhcnAoMSxvL24sZSksdGhpcy53YXJwKGksMSxlKX1yZXR1cm4gdGhpc31jcm9zc0ZhZGVUbyh0LGUsbil7cmV0dXJuIHQuY3Jvc3NGYWRlRnJvbSh0aGlzLGUsbil9c3RvcEZhZGluZygpe2NvbnN0IHQ9dGhpcy5fd2VpZ2h0SW50ZXJwb2xhbnQ7cmV0dXJuIG51bGwhPT10JiYodGhpcy5fd2VpZ2h0SW50ZXJwb2xhbnQ9bnVsbCx0aGlzLl9taXhlci5fdGFrZUJhY2tDb250cm9sSW50ZXJwb2xhbnQodCkpLHRoaXN9c2V0RWZmZWN0aXZlVGltZVNjYWxlKHQpe3JldHVybiB0aGlzLnRpbWVTY2FsZT10LHRoaXMuX2VmZmVjdGl2ZVRpbWVTY2FsZT10aGlzLnBhdXNlZD8wOnQsdGhpcy5zdG9wV2FycGluZygpfWdldEVmZmVjdGl2ZVRpbWVTY2FsZSgpe3JldHVybiB0aGlzLl9lZmZlY3RpdmVUaW1lU2NhbGV9c2V0RHVyYXRpb24odCl7cmV0dXJuIHRoaXMudGltZVNjYWxlPXRoaXMuX2NsaXAuZHVyYXRpb24vdCx0aGlzLnN0b3BXYXJwaW5nKCl9c3luY1dpdGgodCl7cmV0dXJuIHRoaXMudGltZT10LnRpbWUsdGhpcy50aW1lU2NhbGU9dC50aW1lU2NhbGUsdGhpcy5zdG9wV2FycGluZygpfWhhbHQodCl7cmV0dXJuIHRoaXMud2FycCh0aGlzLl9lZmZlY3RpdmVUaW1lU2NhbGUsMCx0KX13YXJwKHQsZSxuKXtjb25zdCBvPXRoaXMuX21peGVyLGk9by50aW1lLGE9dGhpcy50aW1lU2NhbGU7bGV0IHI9dGhpcy5fdGltZVNjYWxlSW50ZXJwb2xhbnQ7bnVsbD09PXImJihyPW8uX2xlbmRDb250cm9sSW50ZXJwb2xhbnQoKSx0aGlzLl90aW1lU2NhbGVJbnRlcnBvbGFudD1yKTtjb25zdCBzPXIucGFyYW1ldGVyUG9zaXRpb25zLGw9ci5zYW1wbGVWYWx1ZXM7cmV0dXJuIHNbMF09aSxzWzFdPWkrbixsWzBdPXQvYSxsWzFdPWUvYSx0aGlzfXN0b3BXYXJwaW5nKCl7Y29uc3QgdD10aGlzLl90aW1lU2NhbGVJbnRlcnBvbGFudDtyZXR1cm4gbnVsbCE9PXQmJih0aGlzLl90aW1lU2NhbGVJbnRlcnBvbGFudD1udWxsLHRoaXMuX21peGVyLl90YWtlQmFja0NvbnRyb2xJbnRlcnBvbGFudCh0KSksdGhpc31nZXRNaXhlcigpe3JldHVybiB0aGlzLl9taXhlcn1nZXRDbGlwKCl7cmV0dXJuIHRoaXMuX2NsaXB9Z2V0Um9vdCgpe3JldHVybiB0aGlzLl9sb2NhbFJvb3R8fHRoaXMuX21peGVyLl9yb290fV91cGRhdGUodCxlLG4sbyl7aWYoIXRoaXMuZW5hYmxlZClyZXR1cm4gdm9pZCB0aGlzLl91cGRhdGVXZWlnaHQodCk7Y29uc3QgaT10aGlzLl9zdGFydFRpbWU7aWYobnVsbCE9PWkpe2NvbnN0IG89KHQtaSkqbjtpZihvPDB8fDA9PT1uKXJldHVybjt0aGlzLl9zdGFydFRpbWU9bnVsbCxlPW4qb31lKj10aGlzLl91cGRhdGVUaW1lU2NhbGUodCk7Y29uc3QgYT10aGlzLl91cGRhdGVUaW1lKGUpLHI9dGhpcy5fdXBkYXRlV2VpZ2h0KHQpO2lmKHI+MCl7Y29uc3QgdD10aGlzLl9pbnRlcnBvbGFudHMsZT10aGlzLl9wcm9wZXJ0eUJpbmRpbmdzO3N3aXRjaCh0aGlzLmJsZW5kTW9kZSl7Y2FzZSAyNTAxOmZvcihsZXQgbj0wLG89dC5sZW5ndGg7biE9PW87KytuKXRbbl0uZXZhbHVhdGUoYSksZVtuXS5hY2N1bXVsYXRlQWRkaXRpdmUocik7YnJlYWs7Y2FzZSBKcnQ6ZGVmYXVsdDpmb3IobGV0IG49MCxpPXQubGVuZ3RoO24hPT1pOysrbil0W25dLmV2YWx1YXRlKGEpLGVbbl0uYWNjdW11bGF0ZShvLHIpfX19X3VwZGF0ZVdlaWdodCh0KXtsZXQgZT0wO2lmKHRoaXMuZW5hYmxlZCl7ZT10aGlzLndlaWdodDtjb25zdCBuPXRoaXMuX3dlaWdodEludGVycG9sYW50O2lmKG51bGwhPT1uKXtjb25zdCBvPW4uZXZhbHVhdGUodClbMF07ZSo9byx0Pm4ucGFyYW1ldGVyUG9zaXRpb25zWzFdJiYodGhpcy5zdG9wRmFkaW5nKCksMD09PW8mJih0aGlzLmVuYWJsZWQ9ITEpKX19cmV0dXJuIHRoaXMuX2VmZmVjdGl2ZVdlaWdodD1lLGV9X3VwZGF0ZVRpbWVTY2FsZSh0KXtsZXQgZT0wO2lmKCF0aGlzLnBhdXNlZCl7ZT10aGlzLnRpbWVTY2FsZTtjb25zdCBuPXRoaXMuX3RpbWVTY2FsZUludGVycG9sYW50O2lmKG51bGwhPT1uKXtlKj1uLmV2YWx1YXRlKHQpWzBdLHQ+bi5wYXJhbWV0ZXJQb3NpdGlvbnNbMV0mJih0aGlzLnN0b3BXYXJwaW5nKCksMD09PWU/dGhpcy5wYXVzZWQ9ITA6dGhpcy50aW1lU2NhbGU9ZSl9fXJldHVybiB0aGlzLl9lZmZlY3RpdmVUaW1lU2NhbGU9ZSxlfV91cGRhdGVUaW1lKHQpe2NvbnN0IGU9dGhpcy5fY2xpcC5kdXJhdGlvbixuPXRoaXMubG9vcDtsZXQgbz10aGlzLnRpbWUrdCxpPXRoaXMuX2xvb3BDb3VudDtjb25zdCBhPTIyMDI9PT1uO2lmKDA9PT10KXJldHVybi0xPT09aT9vOmEmJjE9PSgxJmkpP2UtbzpvO2lmKDIyMDA9PT1uKXstMT09PWkmJih0aGlzLl9sb29wQ291bnQ9MCx0aGlzLl9zZXRFbmRpbmdzKCEwLCEwLCExKSk7dDp7aWYobz49ZSlvPWU7ZWxzZXtpZighKG88MCkpe3RoaXMudGltZT1vO2JyZWFrIHR9bz0wfXRoaXMuY2xhbXBXaGVuRmluaXNoZWQ/dGhpcy5wYXVzZWQ9ITA6dGhpcy5lbmFibGVkPSExLHRoaXMudGltZT1vLHRoaXMuX21peGVyLmRpc3BhdGNoRXZlbnQoe3R5cGU6ImZpbmlzaGVkIixhY3Rpb246dGhpcyxkaXJlY3Rpb246dDwwPy0xOjF9KX19ZWxzZXtpZigtMT09PWkmJih0Pj0wPyhpPTAsdGhpcy5fc2V0RW5kaW5ncyghMCwwPT09dGhpcy5yZXBldGl0aW9ucyxhKSk6dGhpcy5fc2V0RW5kaW5ncygwPT09dGhpcy5yZXBldGl0aW9ucywhMCxhKSksbz49ZXx8bzwwKXtjb25zdCBuPU1hdGguZmxvb3Ioby9lKTtvLT1lKm4saSs9TWF0aC5hYnMobik7Y29uc3Qgcj10aGlzLnJlcGV0aXRpb25zLWk7aWYocjw9MCl0aGlzLmNsYW1wV2hlbkZpbmlzaGVkP3RoaXMucGF1c2VkPSEwOnRoaXMuZW5hYmxlZD0hMSxvPXQ+MD9lOjAsdGhpcy50aW1lPW8sdGhpcy5fbWl4ZXIuZGlzcGF0Y2hFdmVudCh7dHlwZToiZmluaXNoZWQiLGFjdGlvbjp0aGlzLGRpcmVjdGlvbjp0PjA/MTotMX0pO2Vsc2V7aWYoMT09PXIpe2NvbnN0IGU9dDwwO3RoaXMuX3NldEVuZGluZ3MoZSwhZSxhKX1lbHNlIHRoaXMuX3NldEVuZGluZ3MoITEsITEsYSk7dGhpcy5fbG9vcENvdW50PWksdGhpcy50aW1lPW8sdGhpcy5fbWl4ZXIuZGlzcGF0Y2hFdmVudCh7dHlwZToibG9vcCIsYWN0aW9uOnRoaXMsbG9vcERlbHRhOm59KX19ZWxzZSB0aGlzLnRpbWU9bztpZihhJiYxPT0oMSZpKSlyZXR1cm4gZS1vfXJldHVybiBvfV9zZXRFbmRpbmdzKHQsZSxuKXtjb25zdCBvPXRoaXMuX2ludGVycG9sYW50U2V0dGluZ3M7bj8oby5lbmRpbmdTdGFydD1YcnQsby5lbmRpbmdFbmQ9WHJ0KTooby5lbmRpbmdTdGFydD10P3RoaXMuemVyb1Nsb3BlQXRTdGFydD9YcnQ6WnJ0OktydCxvLmVuZGluZ0VuZD1lP3RoaXMuemVyb1Nsb3BlQXRFbmQ/WHJ0OlpydDpLcnQpfV9zY2hlZHVsZUZhZGluZyh0LGUsbil7Y29uc3Qgbz10aGlzLl9taXhlcixpPW8udGltZTtsZXQgYT10aGlzLl93ZWlnaHRJbnRlcnBvbGFudDtudWxsPT09YSYmKGE9by5fbGVuZENvbnRyb2xJbnRlcnBvbGFudCgpLHRoaXMuX3dlaWdodEludGVycG9sYW50PWEpO2NvbnN0IHI9YS5wYXJhbWV0ZXJQb3NpdGlvbnMscz1hLnNhbXBsZVZhbHVlcztyZXR1cm4gclswXT1pLHNbMF09ZSxyWzFdPWkrdCxzWzFdPW4sdGhpc319KGNsYXNzIGV4dGVuZHMgcnN0e2NvbnN0cnVjdG9yKHQpe3N1cGVyKCksdGhpcy5fcm9vdD10LHRoaXMuX2luaXRNZW1vcnlNYW5hZ2VyKCksdGhpcy5fYWNjdUluZGV4PTAsdGhpcy50aW1lPTAsdGhpcy50aW1lU2NhbGU9MX1fYmluZEFjdGlvbih0LGUpe2NvbnN0IG49dC5fbG9jYWxSb290fHx0aGlzLl9yb290LG89dC5fY2xpcC50cmFja3MsaT1vLmxlbmd0aCxhPXQuX3Byb3BlcnR5QmluZGluZ3Mscj10Ll9pbnRlcnBvbGFudHMscz1uLnV1aWQsbD10aGlzLl9iaW5kaW5nc0J5Um9vdEFuZE5hbWU7bGV0IGM9bFtzXTt2b2lkIDA9PT1jJiYoYz17fSxsW3NdPWMpO2ZvcihsZXQgdD0wO3QhPT1pOysrdCl7Y29uc3QgaT1vW3RdLGw9aS5uYW1lO2xldCBkPWNbbF07aWYodm9pZCAwIT09ZClhW3RdPWQ7ZWxzZXtpZihkPWFbdF0sdm9pZCAwIT09ZCl7bnVsbD09PWQuX2NhY2hlSW5kZXgmJigrK2QucmVmZXJlbmNlQ291bnQsdGhpcy5fYWRkSW5hY3RpdmVCaW5kaW5nKGQscyxsKSk7Y29udGludWV9ZD1uZXcgZ2d0KHdndC5jcmVhdGUobixsLGUmJmUuX3Byb3BlcnR5QmluZGluZ3NbdF0uYmluZGluZy5wYXJzZWRQYXRoKSxpLlZhbHVlVHlwZU5hbWUsaS5nZXRWYWx1ZVNpemUoKSksKytkLnJlZmVyZW5jZUNvdW50LHRoaXMuX2FkZEluYWN0aXZlQmluZGluZyhkLHMsbCksYVt0XT1kfXJbdF0ucmVzdWx0QnVmZmVyPWQuYnVmZmVyfX1fYWN0aXZhdGVBY3Rpb24odCl7aWYoIXRoaXMuX2lzQWN0aXZlQWN0aW9uKHQpKXtpZihudWxsPT09dC5fY2FjaGVJbmRleCl7Y29uc3QgZT0odC5fbG9jYWxSb290fHx0aGlzLl9yb290KS51dWlkLG49dC5fY2xpcC51dWlkLG89dGhpcy5fYWN0aW9uc0J5Q2xpcFtuXTt0aGlzLl9iaW5kQWN0aW9uKHQsbyYmby5rbm93bkFjdGlvbnNbMF0pLHRoaXMuX2FkZEluYWN0aXZlQWN0aW9uKHQsbixlKX1jb25zdCBlPXQuX3Byb3BlcnR5QmluZGluZ3M7Zm9yKGxldCB0PTAsbj1lLmxlbmd0aDt0IT09bjsrK3Qpe2NvbnN0IG49ZVt0XTswPT1uLnVzZUNvdW50KysmJih0aGlzLl9sZW5kQmluZGluZyhuKSxuLnNhdmVPcmlnaW5hbFN0YXRlKCkpfXRoaXMuX2xlbmRBY3Rpb24odCl9fV9kZWFjdGl2YXRlQWN0aW9uKHQpe2lmKHRoaXMuX2lzQWN0aXZlQWN0aW9uKHQpKXtjb25zdCBlPXQuX3Byb3BlcnR5QmluZGluZ3M7Zm9yKGxldCB0PTAsbj1lLmxlbmd0aDt0IT09bjsrK3Qpe2NvbnN0IG49ZVt0XTswPT0tLW4udXNlQ291bnQmJihuLnJlc3RvcmVPcmlnaW5hbFN0YXRlKCksdGhpcy5fdGFrZUJhY2tCaW5kaW5nKG4pKX10aGlzLl90YWtlQmFja0FjdGlvbih0KX19X2luaXRNZW1vcnlNYW5hZ2VyKCl7dGhpcy5fYWN0aW9ucz1bXSx0aGlzLl9uQWN0aXZlQWN0aW9ucz0wLHRoaXMuX2FjdGlvbnNCeUNsaXA9e30sdGhpcy5fYmluZGluZ3M9W10sdGhpcy5fbkFjdGl2ZUJpbmRpbmdzPTAsdGhpcy5fYmluZGluZ3NCeVJvb3RBbmROYW1lPXt9LHRoaXMuX2NvbnRyb2xJbnRlcnBvbGFudHM9W10sdGhpcy5fbkFjdGl2ZUNvbnRyb2xJbnRlcnBvbGFudHM9MDtjb25zdCB0PXRoaXM7dGhpcy5zdGF0cz17YWN0aW9uczp7Z2V0IHRvdGFsKCl7cmV0dXJuIHQuX2FjdGlvbnMubGVuZ3RofSxnZXQgaW5Vc2UoKXtyZXR1cm4gdC5fbkFjdGl2ZUFjdGlvbnN9fSxiaW5kaW5nczp7Z2V0IHRvdGFsKCl7cmV0dXJuIHQuX2JpbmRpbmdzLmxlbmd0aH0sZ2V0IGluVXNlKCl7cmV0dXJuIHQuX25BY3RpdmVCaW5kaW5nc319LGNvbnRyb2xJbnRlcnBvbGFudHM6e2dldCB0b3RhbCgpe3JldHVybiB0Ll9jb250cm9sSW50ZXJwb2xhbnRzLmxlbmd0aH0sZ2V0IGluVXNlKCl7cmV0dXJuIHQuX25BY3RpdmVDb250cm9sSW50ZXJwb2xhbnRzfX19fV9pc0FjdGl2ZUFjdGlvbih0KXtjb25zdCBlPXQuX2NhY2hlSW5kZXg7cmV0dXJuIG51bGwhPT1lJiZlPHRoaXMuX25BY3RpdmVBY3Rpb25zfV9hZGRJbmFjdGl2ZUFjdGlvbih0LGUsbil7Y29uc3Qgbz10aGlzLl9hY3Rpb25zLGk9dGhpcy5fYWN0aW9uc0J5Q2xpcDtsZXQgYT1pW2VdO2lmKHZvaWQgMD09PWEpYT17a25vd25BY3Rpb25zOlt0XSxhY3Rpb25CeVJvb3Q6e319LHQuX2J5Q2xpcENhY2hlSW5kZXg9MCxpW2VdPWE7ZWxzZXtjb25zdCBlPWEua25vd25BY3Rpb25zO3QuX2J5Q2xpcENhY2hlSW5kZXg9ZS5sZW5ndGgsZS5wdXNoKHQpfXQuX2NhY2hlSW5kZXg9by5sZW5ndGgsby5wdXNoKHQpLGEuYWN0aW9uQnlSb290W25dPXR9X3JlbW92ZUluYWN0aXZlQWN0aW9uKHQpe2NvbnN0IGU9dGhpcy5fYWN0aW9ucyxuPWVbZS5sZW5ndGgtMV0sbz10Ll9jYWNoZUluZGV4O24uX2NhY2hlSW5kZXg9byxlW29dPW4sZS5wb3AoKSx0Ll9jYWNoZUluZGV4PW51bGw7Y29uc3QgaT10Ll9jbGlwLnV1aWQsYT10aGlzLl9hY3Rpb25zQnlDbGlwLHI9YVtpXSxzPXIua25vd25BY3Rpb25zLGw9c1tzLmxlbmd0aC0xXSxjPXQuX2J5Q2xpcENhY2hlSW5kZXg7bC5fYnlDbGlwQ2FjaGVJbmRleD1jLHNbY109bCxzLnBvcCgpLHQuX2J5Q2xpcENhY2hlSW5kZXg9bnVsbDtkZWxldGUgci5hY3Rpb25CeVJvb3RbKHQuX2xvY2FsUm9vdHx8dGhpcy5fcm9vdCkudXVpZF0sMD09PXMubGVuZ3RoJiZkZWxldGUgYVtpXSx0aGlzLl9yZW1vdmVJbmFjdGl2ZUJpbmRpbmdzRm9yQWN0aW9uKHQpfV9yZW1vdmVJbmFjdGl2ZUJpbmRpbmdzRm9yQWN0aW9uKHQpe2NvbnN0IGU9dC5fcHJvcGVydHlCaW5kaW5ncztmb3IobGV0IHQ9MCxuPWUubGVuZ3RoO3QhPT1uOysrdCl7Y29uc3Qgbj1lW3RdOzA9PS0tbi5yZWZlcmVuY2VDb3VudCYmdGhpcy5fcmVtb3ZlSW5hY3RpdmVCaW5kaW5nKG4pfX1fbGVuZEFjdGlvbih0KXtjb25zdCBlPXRoaXMuX2FjdGlvbnMsbj10Ll9jYWNoZUluZGV4LG89dGhpcy5fbkFjdGl2ZUFjdGlvbnMrKyxpPWVbb107dC5fY2FjaGVJbmRleD1vLGVbb109dCxpLl9jYWNoZUluZGV4PW4sZVtuXT1pfV90YWtlQmFja0FjdGlvbih0KXtjb25zdCBlPXRoaXMuX2FjdGlvbnMsbj10Ll9jYWNoZUluZGV4LG89LS10aGlzLl9uQWN0aXZlQWN0aW9ucyxpPWVbb107dC5fY2FjaGVJbmRleD1vLGVbb109dCxpLl9jYWNoZUluZGV4PW4sZVtuXT1pfV9hZGRJbmFjdGl2ZUJpbmRpbmcodCxlLG4pe2NvbnN0IG89dGhpcy5fYmluZGluZ3NCeVJvb3RBbmROYW1lLGk9dGhpcy5fYmluZGluZ3M7bGV0IGE9b1tlXTt2b2lkIDA9PT1hJiYoYT17fSxvW2VdPWEpLGFbbl09dCx0Ll9jYWNoZUluZGV4PWkubGVuZ3RoLGkucHVzaCh0KX1fcmVtb3ZlSW5hY3RpdmVCaW5kaW5nKHQpe2NvbnN0IGU9dGhpcy5fYmluZGluZ3Msbj10LmJpbmRpbmcsbz1uLnJvb3ROb2RlLnV1aWQsaT1uLnBhdGgsYT10aGlzLl9iaW5kaW5nc0J5Um9vdEFuZE5hbWUscj1hW29dLHM9ZVtlLmxlbmd0aC0xXSxsPXQuX2NhY2hlSW5kZXg7cy5fY2FjaGVJbmRleD1sLGVbbF09cyxlLnBvcCgpLGRlbGV0ZSByW2ldLDA9PT1PYmplY3Qua2V5cyhyKS5sZW5ndGgmJmRlbGV0ZSBhW29dfV9sZW5kQmluZGluZyh0KXtjb25zdCBlPXRoaXMuX2JpbmRpbmdzLG49dC5fY2FjaGVJbmRleCxvPXRoaXMuX25BY3RpdmVCaW5kaW5ncysrLGk9ZVtvXTt0Ll9jYWNoZUluZGV4PW8sZVtvXT10LGkuX2NhY2hlSW5kZXg9bixlW25dPWl9X3Rha2VCYWNrQmluZGluZyh0KXtjb25zdCBlPXRoaXMuX2JpbmRpbmdzLG49dC5fY2FjaGVJbmRleCxvPS0tdGhpcy5fbkFjdGl2ZUJpbmRpbmdzLGk9ZVtvXTt0Ll9jYWNoZUluZGV4PW8sZVtvXT10LGkuX2NhY2hlSW5kZXg9bixlW25dPWl9X2xlbmRDb250cm9sSW50ZXJwb2xhbnQoKXtjb25zdCB0PXRoaXMuX2NvbnRyb2xJbnRlcnBvbGFudHMsZT10aGlzLl9uQWN0aXZlQ29udHJvbEludGVycG9sYW50cysrO2xldCBuPXRbZV07cmV0dXJuIHZvaWQgMD09PW4mJihuPW5ldyBSdXQobmV3IEZsb2F0MzJBcnJheSgyKSxuZXcgRmxvYXQzMkFycmF5KDIpLDEsdGhpcy5fY29udHJvbEludGVycG9sYW50c1Jlc3VsdEJ1ZmZlciksbi5fX2NhY2hlSW5kZXg9ZSx0W2VdPW4pLG59X3Rha2VCYWNrQ29udHJvbEludGVycG9sYW50KHQpe2NvbnN0IGU9dGhpcy5fY29udHJvbEludGVycG9sYW50cyxuPXQuX19jYWNoZUluZGV4LG89LS10aGlzLl9uQWN0aXZlQ29udHJvbEludGVycG9sYW50cyxpPWVbb107dC5fX2NhY2hlSW5kZXg9byxlW29dPXQsaS5fX2NhY2hlSW5kZXg9bixlW25dPWl9Y2xpcEFjdGlvbih0LGUsbil7Y29uc3Qgbz1lfHx0aGlzLl9yb290LGk9by51dWlkO2xldCBhPSJzdHJpbmciPT10eXBlb2YgdD9CdXQuZmluZEJ5TmFtZShvLHQpOnQ7Y29uc3Qgcj1udWxsIT09YT9hLnV1aWQ6dCxzPXRoaXMuX2FjdGlvbnNCeUNsaXBbcl07bGV0IGw9bnVsbDtpZih2b2lkIDA9PT1uJiYobj1udWxsIT09YT9hLmJsZW5kTW9kZTpKcnQpLHZvaWQgMCE9PXMpe2NvbnN0IHQ9cy5hY3Rpb25CeVJvb3RbaV07aWYodm9pZCAwIT09dCYmdC5ibGVuZE1vZGU9PT1uKXJldHVybiB0O2w9cy5rbm93bkFjdGlvbnNbMF0sbnVsbD09PWEmJihhPWwuX2NsaXApfWlmKG51bGw9PT1hKXJldHVybiBudWxsO2NvbnN0IGM9bmV3IGtndCh0aGlzLGEsZSxuKTtyZXR1cm4gdGhpcy5fYmluZEFjdGlvbihjLGwpLHRoaXMuX2FkZEluYWN0aXZlQWN0aW9uKGMscixpKSxjfWV4aXN0aW5nQWN0aW9uKHQsZSl7Y29uc3Qgbj1lfHx0aGlzLl9yb290LG89bi51dWlkLGk9InN0cmluZyI9PXR5cGVvZiB0P0J1dC5maW5kQnlOYW1lKG4sdCk6dCxhPXRoaXMuX2FjdGlvbnNCeUNsaXBbaT9pLnV1aWQ6dF07cmV0dXJuIHZvaWQgMCE9PWEmJmEuYWN0aW9uQnlSb290W29dfHxudWxsfXN0b3BBbGxBY3Rpb24oKXtjb25zdCB0PXRoaXMuX2FjdGlvbnM7Zm9yKGxldCBlPXRoaXMuX25BY3RpdmVBY3Rpb25zLTE7ZT49MDstLWUpdFtlXS5zdG9wKCk7cmV0dXJuIHRoaXN9dXBkYXRlKHQpe2NvbnN0IGU9dGhpcy5fYWN0aW9ucyxuPXRoaXMuX25BY3RpdmVBY3Rpb25zLG89dGhpcy50aW1lKz10Kj10aGlzLnRpbWVTY2FsZSxpPU1hdGguc2lnbih0KSxhPXRoaXMuX2FjY3VJbmRleF49MTtmb3IobGV0IHI9MDtyIT09bjsrK3Ipe2Vbcl0uX3VwZGF0ZShvLHQsaSxhKX1jb25zdCByPXRoaXMuX2JpbmRpbmdzLHM9dGhpcy5fbkFjdGl2ZUJpbmRpbmdzO2ZvcihsZXQgdD0wO3QhPT1zOysrdClyW3RdLmFwcGx5KGEpO3JldHVybiB0aGlzfXNldFRpbWUodCl7dGhpcy50aW1lPTA7Zm9yKGxldCB0PTA7dDx0aGlzLl9hY3Rpb25zLmxlbmd0aDt0KyspdGhpcy5fYWN0aW9uc1t0XS50aW1lPTA7cmV0dXJuIHRoaXMudXBkYXRlKHQpfWdldFJvb3QoKXtyZXR1cm4gdGhpcy5fcm9vdH11bmNhY2hlQ2xpcCh0KXtjb25zdCBlPXRoaXMuX2FjdGlvbnMsbj10LnV1aWQsbz10aGlzLl9hY3Rpb25zQnlDbGlwLGk9b1tuXTtpZih2b2lkIDAhPT1pKXtjb25zdCB0PWkua25vd25BY3Rpb25zO2ZvcihsZXQgbj0wLG89dC5sZW5ndGg7biE9PW87KytuKXtjb25zdCBvPXRbbl07dGhpcy5fZGVhY3RpdmF0ZUFjdGlvbihvKTtjb25zdCBpPW8uX2NhY2hlSW5kZXgsYT1lW2UubGVuZ3RoLTFdO28uX2NhY2hlSW5kZXg9bnVsbCxvLl9ieUNsaXBDYWNoZUluZGV4PW51bGwsYS5fY2FjaGVJbmRleD1pLGVbaV09YSxlLnBvcCgpLHRoaXMuX3JlbW92ZUluYWN0aXZlQmluZGluZ3NGb3JBY3Rpb24obyl9ZGVsZXRlIG9bbl19fXVuY2FjaGVSb290KHQpe2NvbnN0IGU9dC51dWlkLG49dGhpcy5fYWN0aW9uc0J5Q2xpcDtmb3IoY29uc3QgdCBpbiBuKXtjb25zdCBvPW5bdF0uYWN0aW9uQnlSb290W2VdO3ZvaWQgMCE9PW8mJih0aGlzLl9kZWFjdGl2YXRlQWN0aW9uKG8pLHRoaXMuX3JlbW92ZUluYWN0aXZlQWN0aW9uKG8pKX1jb25zdCBvPXRoaXMuX2JpbmRpbmdzQnlSb290QW5kTmFtZVtlXTtpZih2b2lkIDAhPT1vKWZvcihjb25zdCB0IGluIG8pe2NvbnN0IGU9b1t0XTtlLnJlc3RvcmVPcmlnaW5hbFN0YXRlKCksdGhpcy5fcmVtb3ZlSW5hY3RpdmVCaW5kaW5nKGUpfX11bmNhY2hlQWN0aW9uKHQsZSl7Y29uc3Qgbj10aGlzLmV4aXN0aW5nQWN0aW9uKHQsZSk7bnVsbCE9PW4mJih0aGlzLl9kZWFjdGl2YXRlQWN0aW9uKG4pLHRoaXMuX3JlbW92ZUluYWN0aXZlQWN0aW9uKG4pKX19KS5wcm90b3R5cGUuX2NvbnRyb2xJbnRlcnBvbGFudHNSZXN1bHRCdWZmZXI9bmV3IEZsb2F0MzJBcnJheSgxKTsoY2xhc3MgZXh0ZW5kcyBMbXR7Y29uc3RydWN0b3IodCxlLG49MSl7c3VwZXIodCxlKSx0aGlzLm1lc2hQZXJBdHRyaWJ1dGU9bn1jb3B5KHQpe3JldHVybiBzdXBlci5jb3B5KHQpLHRoaXMubWVzaFBlckF0dHJpYnV0ZT10Lm1lc2hQZXJBdHRyaWJ1dGUsdGhpc31jbG9uZSh0KXtjb25zdCBlPXN1cGVyLmNsb25lKHQpO3JldHVybiBlLm1lc2hQZXJBdHRyaWJ1dGU9dGhpcy5tZXNoUGVyQXR0cmlidXRlLGV9dG9KU09OKHQpe2NvbnN0IGU9c3VwZXIudG9KU09OKHQpO3JldHVybiBlLmlzSW5zdGFuY2VkSW50ZXJsZWF2ZWRCdWZmZXI9ITAsZS5tZXNoUGVyQXR0cmlidXRlPXRoaXMubWVzaFBlckF0dHJpYnV0ZSxlfX0pLnByb3RvdHlwZS5pc0luc3RhbmNlZEludGVybGVhdmVkQnVmZmVyPSEwOyhjbGFzcyBleHRlbmRzIFNsdHtjb25zdHJ1Y3Rvcih0KXtzdXBlcigpLHRoaXMubWF0ZXJpYWw9dCx0aGlzLnJlbmRlcj1mdW5jdGlvbigpe30sdGhpcy5oYXNQb3NpdGlvbnM9ITEsdGhpcy5oYXNOb3JtYWxzPSExLHRoaXMuaGFzQ29sb3JzPSExLHRoaXMuaGFzVXZzPSExLHRoaXMucG9zaXRpb25BcnJheT1udWxsLHRoaXMubm9ybWFsQXJyYXk9bnVsbCx0aGlzLmNvbG9yQXJyYXk9bnVsbCx0aGlzLnV2QXJyYXk9bnVsbCx0aGlzLmNvdW50PTB9fSkucHJvdG90eXBlLmlzSW1tZWRpYXRlUmVuZGVyT2JqZWN0PSEwO2NvbnN0IFNndD1uZXcgd3N0LERndD1uZXcgb2x0LFJndD1uZXcgb2x0O2Z1bmN0aW9uIEVndCh0KXtjb25zdCBlPVtdO3QmJnQuaXNCb25lJiZlLnB1c2godCk7Zm9yKGxldCBuPTA7bjx0LmNoaWxkcmVuLmxlbmd0aDtuKyspZS5wdXNoLmFwcGx5KGUsRWd0KHQuY2hpbGRyZW5bbl0pKTtyZXR1cm4gZX1jb25zdCBBZ3Q9bmV3IEZsb2F0MzJBcnJheSgxKTtmdW5jdGlvbiBUZ3QodCxlLG4pe2lmKDE9PT1uKXJldHVybiBuZXcgWmx0KGUpO2NvbnN0IG89ZzkoZSk7aWYoIW8pdGhyb3cgbmV3IEVycm9yKGBkMyBmYWlsZWQgdG8gcmVjb2duaXplIHRoZSBjb2xvcjogJHtlfWApO3JldHVybiBuZXcgWmx0KHV0dChvLHQpKDEtbikpfXZhciBOZ3Qsemd0O2Z1bmN0aW9uIElndCh0LGUpe2NvbnN0IG49ZS5sZW5ndGgvMjtsZXQgbz10LmF0dHJpYnV0ZXMucG9zaXRpb247byYmby5jb3VudD09PTMqbnx8KG89bmV3IFFsdChuZXcgRmxvYXQzMkFycmF5KDMqbiksMyksdC5zZXRBdHRyaWJ1dGUoInBvc2l0aW9uIixvKSk7Y29uc3QgaT1vLmFycmF5O2ZvcihsZXQgdD0wO3Q8bjt0KyspaVszKnRdPWVbMip0XSxpWzMqdCsxXT1lWzIqdCsxXTtvLm5lZWRzVXBkYXRlPSEwLHQuc2V0RHJhd1JhbmdlKDAsMypuKSx0LmNvbXB1dGVCb3VuZGluZ1NwaGVyZSgpfWZ1bmN0aW9uIEhndCh0LGUsbil7Y29uc3Qgbz1NYXRoLm1heChlLmxlbmd0aC8yLTEsMCksaT0yKm8qMyxhPTMqaTtsZXQgcj10LmF0dHJpYnV0ZXMucG9zaXRpb247ciYmci5jb3VudD09PWl8fChyPW5ldyBRbHQobmV3IEZsb2F0MzJBcnJheShhKSwzKSx0LnNldEF0dHJpYnV0ZSgicG9zaXRpb24iLHIpKTtjb25zdCBzPXIuYXJyYXk7Zm9yKGxldCB0PTA7dDxvO3QrKyl7Y29uc3RbbyxpLGEscl09W2VbMip0XSxlWzIqdCsxXSxlWzIqdCsyXSxlWzIqdCszXV0sbD1uZXcgZ3N0KG8saSksYz1uZXcgZ3N0KGEsciksZD1uZXcgZ3N0KGEtbyxyLWkpLHA9bmV3IGdzdCgtZC55LGQueCkuc2V0TGVuZ3RoKG4vMiksbT1sLmNsb25lKCkuYWRkKHApLGY9bC5jbG9uZSgpLnN1YihwKSx1PWMuY2xvbmUoKS5hZGQocCksZz1jLmNsb25lKCkuc3ViKHApLGg9W20ueCxtLnksMCxmLngsZi55LDAsdS54LHUueSwwLHUueCx1LnksMCxmLngsZi55LDAsZy54LGcueSwwXTtzLnNldChoLHQqaC5sZW5ndGgpfXIubmVlZHNVcGRhdGU9ITAsdC5zZXREcmF3UmFuZ2UoMCxhKSx0LmNvbXB1dGVCb3VuZGluZ1NwaGVyZSgpfWZ1bmN0aW9uIEZndCh0LGUsbixvKXtjb25zdHt2aXNpYmxlOmksY29sb3I6YSxvcGFjaXR5OnJ9PW87aWYoQXJyYXkuaXNBcnJheShlLm1hdGVyaWFsKSl0aHJvdyBuZXcgRXJyb3IoIkludmFyaWFudCBlcnJvcjogb25seSBleHBlY3Qgb25lIG1hdGVyaWFsIG9uIGFuIG9iamVjdCIpO2NvbnN0IHM9ZS5tYXRlcmlhbDtpZihzLnZpc2libGUhPT1pJiYocy52aXNpYmxlPWkscy5uZWVkc1VwZGF0ZT0hMCksIWkpcmV0dXJuITE7Y29uc3QgbD1UZ3QodCxhLG51bGwhPXI/cjoxKSxjPW4oZS5nZW9tZXRyeSk7ZS5nZW9tZXRyeSE9PWMmJihlLmdlb21ldHJ5PWMpO3JldHVybiBzLmNvbG9yLmVxdWFscyhsKXx8KHMuY29sb3Iuc2V0KGwpLHMubmVlZHNVcGRhdGU9ITApLCEwfW5ldyBJbnQzMkFycmF5KEFndC5idWZmZXIpLFJmdC5jcmVhdGU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gY29uc29sZS5sb2coIlRIUkVFLkN1cnZlLmNyZWF0ZSgpIGhhcyBiZWVuIGRlcHJlY2F0ZWQiKSx0LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKFJmdC5wcm90b3R5cGUpLHQucHJvdG90eXBlLmNvbnN0cnVjdG9yPXQsdC5wcm90b3R5cGUuZ2V0UG9pbnQ9ZSx0fSxKdXQucHJvdG90eXBlLmZyb21Qb2ludHM9ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuUGF0aDogLmZyb21Qb2ludHMoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5zZXRGcm9tUG9pbnRzKCkuIiksdGhpcy5zZXRGcm9tUG9pbnRzKHQpfSxjbGFzcyBleHRlbmRzIHZmdHtjb25zdHJ1Y3Rvcih0PTEwLGU9MTAsbj00NDczOTI0LG89ODk0Nzg0OCl7bj1uZXcgWmx0KG4pLG89bmV3IFpsdChvKTtjb25zdCBpPWUvMixhPXQvZSxyPXQvMixzPVtdLGw9W107Zm9yKGxldCB0PTAsYz0wLGQ9LXI7dDw9ZTt0KyssZCs9YSl7cy5wdXNoKC1yLDAsZCxyLDAsZCkscy5wdXNoKGQsMCwtcixkLDAscik7Y29uc3QgZT10PT09aT9uOm87ZS50b0FycmF5KGwsYyksYys9MyxlLnRvQXJyYXkobCxjKSxjKz0zLGUudG9BcnJheShsLGMpLGMrPTMsZS50b0FycmF5KGwsYyksYys9M31jb25zdCBjPW5ldyBkY3Q7Yy5zZXRBdHRyaWJ1dGUoInBvc2l0aW9uIixuZXcgZWN0KHMsMykpLGMuc2V0QXR0cmlidXRlKCJjb2xvciIsbmV3IGVjdChsLDMpKTtzdXBlcihjLG5ldyBmZnQoe3ZlcnRleENvbG9yczohMCx0b25lTWFwcGVkOiExfSkpLHRoaXMudHlwZT0iR3JpZEhlbHBlciJ9fS5wcm90b3R5cGUuc2V0Q29sb3JzPWZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuR3JpZEhlbHBlcjogc2V0Q29sb3JzKCkgaGFzIGJlZW4gZGVwcmVjYXRlZCwgcGFzcyB0aGVtIGluIHRoZSBjb25zdHJ1Y3RvciBpbnN0ZWFkLiIpfSxjbGFzcyBleHRlbmRzIHZmdHtjb25zdHJ1Y3Rvcih0KXtjb25zdCBlPUVndCh0KSxuPW5ldyBkY3Qsbz1bXSxpPVtdLGE9bmV3IFpsdCgwLDAsMSkscj1uZXcgWmx0KDAsMSwwKTtmb3IobGV0IHQ9MDt0PGUubGVuZ3RoO3QrKyl7Y29uc3Qgbj1lW3RdO24ucGFyZW50JiZuLnBhcmVudC5pc0JvbmUmJihvLnB1c2goMCwwLDApLG8ucHVzaCgwLDAsMCksaS5wdXNoKGEucixhLmcsYS5iKSxpLnB1c2goci5yLHIuZyxyLmIpKX1uLnNldEF0dHJpYnV0ZSgicG9zaXRpb24iLG5ldyBlY3QobywzKSksbi5zZXRBdHRyaWJ1dGUoImNvbG9yIixuZXcgZWN0KGksMykpO3N1cGVyKG4sbmV3IGZmdCh7dmVydGV4Q29sb3JzOiEwLGRlcHRoVGVzdDohMSxkZXB0aFdyaXRlOiExLHRvbmVNYXBwZWQ6ITEsdHJhbnNwYXJlbnQ6ITB9KSksdGhpcy50eXBlPSJTa2VsZXRvbkhlbHBlciIsdGhpcy5pc1NrZWxldG9uSGVscGVyPSEwLHRoaXMucm9vdD10LHRoaXMuYm9uZXM9ZSx0aGlzLm1hdHJpeD10Lm1hdHJpeFdvcmxkLHRoaXMubWF0cml4QXV0b1VwZGF0ZT0hMX11cGRhdGVNYXRyaXhXb3JsZCh0KXtjb25zdCBlPXRoaXMuYm9uZXMsbj10aGlzLmdlb21ldHJ5LG89bi5nZXRBdHRyaWJ1dGUoInBvc2l0aW9uIik7Umd0LmNvcHkodGhpcy5yb290Lm1hdHJpeFdvcmxkKS5pbnZlcnQoKTtmb3IobGV0IHQ9MCxuPTA7dDxlLmxlbmd0aDt0Kyspe2NvbnN0IGk9ZVt0XTtpLnBhcmVudCYmaS5wYXJlbnQuaXNCb25lJiYoRGd0Lm11bHRpcGx5TWF0cmljZXMoUmd0LGkubWF0cml4V29ybGQpLFNndC5zZXRGcm9tTWF0cml4UG9zaXRpb24oRGd0KSxvLnNldFhZWihuLFNndC54LFNndC55LFNndC56KSxEZ3QubXVsdGlwbHlNYXRyaWNlcyhSZ3QsaS5wYXJlbnQubWF0cml4V29ybGQpLFNndC5zZXRGcm9tTWF0cml4UG9zaXRpb24oRGd0KSxvLnNldFhZWihuKzEsU2d0LngsU2d0LnksU2d0LnopLG4rPTIpfW4uZ2V0QXR0cmlidXRlKCJwb3NpdGlvbiIpLm5lZWRzVXBkYXRlPSEwLHN1cGVyLnVwZGF0ZU1hdHJpeFdvcmxkKHQpfX0ucHJvdG90eXBlLnVwZGF0ZT1mdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLlNrZWxldG9uSGVscGVyOiB1cGRhdGUoKSBubyBsb25nZXIgbmVlZHMgdG8gYmUgY2FsbGVkLiIpfSxXdXQucHJvdG90eXBlLmV4dHJhY3RVcmxCYXNlPWZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLkxvYWRlcjogLmV4dHJhY3RVcmxCYXNlKCkgaGFzIGJlZW4gZGVwcmVjYXRlZC4gVXNlIFRIUkVFLkxvYWRlclV0aWxzLmV4dHJhY3RVcmxCYXNlKCkgaW5zdGVhZC4iKSxjbGFzc3tzdGF0aWMgZGVjb2RlVGV4dCh0KXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIFRleHREZWNvZGVyKXJldHVybihuZXcgVGV4dERlY29kZXIpLmRlY29kZSh0KTtsZXQgZT0iIjtmb3IobGV0IG49MCxvPXQubGVuZ3RoO248bztuKyspZSs9U3RyaW5nLmZyb21DaGFyQ29kZSh0W25dKTt0cnl7cmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChlc2NhcGUoZSkpfWNhdGNoKHQpe3JldHVybiBlfX1zdGF0aWMgZXh0cmFjdFVybEJhc2UodCl7Y29uc3QgZT10Lmxhc3RJbmRleE9mKCIvIik7cmV0dXJuLTE9PT1lPyIuLyI6dC5zdWJzdHIoMCxlKzEpfX0uZXh0cmFjdFVybEJhc2UodCl9LFd1dC5IYW5kbGVycz17YWRkOmZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuTG9hZGVyOiBIYW5kbGVycy5hZGQoKSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgTG9hZGluZ01hbmFnZXIuYWRkSGFuZGxlcigpIGluc3RlYWQuIil9LGdldDpmdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLkxvYWRlcjogSGFuZGxlcnMuZ2V0KCkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIExvYWRpbmdNYW5hZ2VyLmdldEhhbmRsZXIoKSBpbnN0ZWFkLiIpfX0sRHN0LnByb3RvdHlwZS5jZW50ZXI9ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuQm94MzogLmNlbnRlcigpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmdldENlbnRlcigpLiIpLHRoaXMuZ2V0Q2VudGVyKHQpfSxEc3QucHJvdG90eXBlLmVtcHR5PWZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuQm94MzogLmVtcHR5KCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuaXNFbXB0eSgpLiIpLHRoaXMuaXNFbXB0eSgpfSxEc3QucHJvdG90eXBlLmlzSW50ZXJzZWN0aW9uQm94PWZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLkJveDM6IC5pc0ludGVyc2VjdGlvbkJveCgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmludGVyc2VjdHNCb3goKS4iKSx0aGlzLmludGVyc2VjdHNCb3godCl9LERzdC5wcm90b3R5cGUuaXNJbnRlcnNlY3Rpb25TcGhlcmU9ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuQm94MzogLmlzSW50ZXJzZWN0aW9uU3BoZXJlKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuaW50ZXJzZWN0c1NwaGVyZSgpLiIpLHRoaXMuaW50ZXJzZWN0c1NwaGVyZSh0KX0sRHN0LnByb3RvdHlwZS5zaXplPWZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLkJveDM6IC5zaXplKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuZ2V0U2l6ZSgpLiIpLHRoaXMuZ2V0U2l6ZSh0KX0sWnN0LnByb3RvdHlwZS5lbXB0eT1mdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlNwaGVyZTogLmVtcHR5KCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuaXNFbXB0eSgpLiIpLHRoaXMuaXNFbXB0eSgpfSxxY3QucHJvdG90eXBlLnNldEZyb21NYXRyaXg9ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuRnJ1c3R1bTogLnNldEZyb21NYXRyaXgoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5zZXRGcm9tUHJvamVjdGlvbk1hdHJpeCgpLiIpLHRoaXMuc2V0RnJvbVByb2plY3Rpb25NYXRyaXgodCl9LGhzdC5wcm90b3R5cGUuZmxhdHRlblRvQXJyYXlPZmZzZXQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5NYXRyaXgzOiAuZmxhdHRlblRvQXJyYXlPZmZzZXQoKSBoYXMgYmVlbiBkZXByZWNhdGVkLiBVc2UgLnRvQXJyYXkoKSBpbnN0ZWFkLiIpLHRoaXMudG9BcnJheSh0LGUpfSxoc3QucHJvdG90eXBlLm11bHRpcGx5VmVjdG9yMz1mdW5jdGlvbih0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5NYXRyaXgzOiAubXVsdGlwbHlWZWN0b3IzKCkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIHZlY3Rvci5hcHBseU1hdHJpeDMoIG1hdHJpeCApIGluc3RlYWQuIiksdC5hcHBseU1hdHJpeDModGhpcyl9LGhzdC5wcm90b3R5cGUubXVsdGlwbHlWZWN0b3IzQXJyYXk9ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5NYXRyaXgzOiAubXVsdGlwbHlWZWN0b3IzQXJyYXkoKSBoYXMgYmVlbiByZW1vdmVkLiIpfSxoc3QucHJvdG90eXBlLmFwcGx5VG9CdWZmZXJBdHRyaWJ1dGU9ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuTWF0cml4MzogLmFwcGx5VG9CdWZmZXJBdHRyaWJ1dGUoKSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgYXR0cmlidXRlLmFwcGx5TWF0cml4MyggbWF0cml4ICkgaW5zdGVhZC4iKSx0LmFwcGx5TWF0cml4Myh0aGlzKX0saHN0LnByb3RvdHlwZS5hcHBseVRvVmVjdG9yM0FycmF5PWZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuTWF0cml4MzogLmFwcGx5VG9WZWN0b3IzQXJyYXkoKSBoYXMgYmVlbiByZW1vdmVkLiIpfSxoc3QucHJvdG90eXBlLmdldEludmVyc2U9ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuTWF0cml4MzogLmdldEludmVyc2UoKSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgbWF0cml4SW52LmNvcHkoIG1hdHJpeCApLmludmVydCgpOyBpbnN0ZWFkLiIpLHRoaXMuY29weSh0KS5pbnZlcnQoKX0sb2x0LnByb3RvdHlwZS5leHRyYWN0UG9zaXRpb249ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuTWF0cml4NDogLmV4dHJhY3RQb3NpdGlvbigpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmNvcHlQb3NpdGlvbigpLiIpLHRoaXMuY29weVBvc2l0aW9uKHQpfSxvbHQucHJvdG90eXBlLmZsYXR0ZW5Ub0FycmF5T2Zmc2V0PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuTWF0cml4NDogLmZsYXR0ZW5Ub0FycmF5T2Zmc2V0KCkgaGFzIGJlZW4gZGVwcmVjYXRlZC4gVXNlIC50b0FycmF5KCkgaW5zdGVhZC4iKSx0aGlzLnRvQXJyYXkodCxlKX0sb2x0LnByb3RvdHlwZS5nZXRQb3NpdGlvbj1mdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLk1hdHJpeDQ6IC5nZXRQb3NpdGlvbigpIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBWZWN0b3IzLnNldEZyb21NYXRyaXhQb3NpdGlvbiggbWF0cml4ICkgaW5zdGVhZC4iKSwobmV3IHdzdCkuc2V0RnJvbU1hdHJpeENvbHVtbih0aGlzLDMpfSxvbHQucHJvdG90eXBlLnNldFJvdGF0aW9uRnJvbVF1YXRlcm5pb249ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuTWF0cml4NDogLnNldFJvdGF0aW9uRnJvbVF1YXRlcm5pb24oKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5tYWtlUm90YXRpb25Gcm9tUXVhdGVybmlvbigpLiIpLHRoaXMubWFrZVJvdGF0aW9uRnJvbVF1YXRlcm5pb24odCl9LG9sdC5wcm90b3R5cGUubXVsdGlwbHlUb0FycmF5PWZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5NYXRyaXg0OiAubXVsdGlwbHlUb0FycmF5KCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX0sb2x0LnByb3RvdHlwZS5tdWx0aXBseVZlY3RvcjM9ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuTWF0cml4NDogLm11bHRpcGx5VmVjdG9yMygpIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSB2ZWN0b3IuYXBwbHlNYXRyaXg0KCBtYXRyaXggKSBpbnN0ZWFkLiIpLHQuYXBwbHlNYXRyaXg0KHRoaXMpfSxvbHQucHJvdG90eXBlLm11bHRpcGx5VmVjdG9yND1mdW5jdGlvbih0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5NYXRyaXg0OiAubXVsdGlwbHlWZWN0b3I0KCkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIHZlY3Rvci5hcHBseU1hdHJpeDQoIG1hdHJpeCApIGluc3RlYWQuIiksdC5hcHBseU1hdHJpeDQodGhpcyl9LG9sdC5wcm90b3R5cGUubXVsdGlwbHlWZWN0b3IzQXJyYXk9ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5NYXRyaXg0OiAubXVsdGlwbHlWZWN0b3IzQXJyYXkoKSBoYXMgYmVlbiByZW1vdmVkLiIpfSxvbHQucHJvdG90eXBlLnJvdGF0ZUF4aXM9ZnVuY3Rpb24odCl7Y29uc29sZS53YXJuKCJUSFJFRS5NYXRyaXg0OiAucm90YXRlQXhpcygpIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBWZWN0b3IzLnRyYW5zZm9ybURpcmVjdGlvbiggbWF0cml4ICkgaW5zdGVhZC4iKSx0LnRyYW5zZm9ybURpcmVjdGlvbih0aGlzKX0sb2x0LnByb3RvdHlwZS5jcm9zc1ZlY3Rvcj1mdW5jdGlvbih0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5NYXRyaXg0OiAuY3Jvc3NWZWN0b3IoKSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgdmVjdG9yLmFwcGx5TWF0cml4NCggbWF0cml4ICkgaW5zdGVhZC4iKSx0LmFwcGx5TWF0cml4NCh0aGlzKX0sb2x0LnByb3RvdHlwZS50cmFuc2xhdGU9ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5NYXRyaXg0OiAudHJhbnNsYXRlKCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX0sb2x0LnByb3RvdHlwZS5yb3RhdGVYPWZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuTWF0cml4NDogLnJvdGF0ZVgoKSBoYXMgYmVlbiByZW1vdmVkLiIpfSxvbHQucHJvdG90eXBlLnJvdGF0ZVk9ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5NYXRyaXg0OiAucm90YXRlWSgpIGhhcyBiZWVuIHJlbW92ZWQuIil9LG9sdC5wcm90b3R5cGUucm90YXRlWj1mdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLk1hdHJpeDQ6IC5yb3RhdGVaKCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX0sb2x0LnByb3RvdHlwZS5yb3RhdGVCeUF4aXM9ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5NYXRyaXg0OiAucm90YXRlQnlBeGlzKCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX0sb2x0LnByb3RvdHlwZS5hcHBseVRvQnVmZmVyQXR0cmlidXRlPWZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLk1hdHJpeDQ6IC5hcHBseVRvQnVmZmVyQXR0cmlidXRlKCkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIGF0dHJpYnV0ZS5hcHBseU1hdHJpeDQoIG1hdHJpeCApIGluc3RlYWQuIiksdC5hcHBseU1hdHJpeDQodGhpcyl9LG9sdC5wcm90b3R5cGUuYXBwbHlUb1ZlY3RvcjNBcnJheT1mdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLk1hdHJpeDQ6IC5hcHBseVRvVmVjdG9yM0FycmF5KCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX0sb2x0LnByb3RvdHlwZS5tYWtlRnJ1c3R1bT1mdW5jdGlvbih0LGUsbixvLGksYSl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuTWF0cml4NDogLm1ha2VGcnVzdHVtKCkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIC5tYWtlUGVyc3BlY3RpdmUoIGxlZnQsIHJpZ2h0LCB0b3AsIGJvdHRvbSwgbmVhciwgZmFyICkgaW5zdGVhZC4iKSx0aGlzLm1ha2VQZXJzcGVjdGl2ZSh0LGUsbyxuLGksYSl9LG9sdC5wcm90b3R5cGUuZ2V0SW52ZXJzZT1mdW5jdGlvbih0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5NYXRyaXg0OiAuZ2V0SW52ZXJzZSgpIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBtYXRyaXhJbnYuY29weSggbWF0cml4ICkuaW52ZXJ0KCk7IGluc3RlYWQuIiksdGhpcy5jb3B5KHQpLmludmVydCgpfSxXY3QucHJvdG90eXBlLmlzSW50ZXJzZWN0aW9uTGluZT1mdW5jdGlvbih0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5QbGFuZTogLmlzSW50ZXJzZWN0aW9uTGluZSgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmludGVyc2VjdHNMaW5lKCkuIiksdGhpcy5pbnRlcnNlY3RzTGluZSh0KX0sUHN0LnByb3RvdHlwZS5tdWx0aXBseVZlY3RvcjM9ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuUXVhdGVybmlvbjogLm11bHRpcGx5VmVjdG9yMygpIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBpcyBub3cgdmVjdG9yLmFwcGx5UXVhdGVybmlvbiggcXVhdGVybmlvbiApIGluc3RlYWQuIiksdC5hcHBseVF1YXRlcm5pb24odGhpcyl9LFBzdC5wcm90b3R5cGUuaW52ZXJzZT1mdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlF1YXRlcm5pb246IC5pbnZlcnNlKCkgaGFzIGJlZW4gcmVuYW1lZCB0byBpbnZlcnQoKS4iKSx0aGlzLmludmVydCgpfSxubHQucHJvdG90eXBlLmlzSW50ZXJzZWN0aW9uQm94PWZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlJheTogLmlzSW50ZXJzZWN0aW9uQm94KCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuaW50ZXJzZWN0c0JveCgpLiIpLHRoaXMuaW50ZXJzZWN0c0JveCh0KX0sbmx0LnByb3RvdHlwZS5pc0ludGVyc2VjdGlvblBsYW5lPWZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlJheTogLmlzSW50ZXJzZWN0aW9uUGxhbmUoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5pbnRlcnNlY3RzUGxhbmUoKS4iKSx0aGlzLmludGVyc2VjdHNQbGFuZSh0KX0sbmx0LnByb3RvdHlwZS5pc0ludGVyc2VjdGlvblNwaGVyZT1mdW5jdGlvbih0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5SYXk6IC5pc0ludGVyc2VjdGlvblNwaGVyZSgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmludGVyc2VjdHNTcGhlcmUoKS4iKSx0aGlzLmludGVyc2VjdHNTcGhlcmUodCl9LExsdC5wcm90b3R5cGUuYXJlYT1mdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlRyaWFuZ2xlOiAuYXJlYSgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmdldEFyZWEoKS4iKSx0aGlzLmdldEFyZWEoKX0sTGx0LnByb3RvdHlwZS5iYXJ5Y29vcmRGcm9tUG9pbnQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5UcmlhbmdsZTogLmJhcnljb29yZEZyb21Qb2ludCgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmdldEJhcnljb29yZCgpLiIpLHRoaXMuZ2V0QmFyeWNvb3JkKHQsZSl9LExsdC5wcm90b3R5cGUubWlkcG9pbnQ9ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuVHJpYW5nbGU6IC5taWRwb2ludCgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmdldE1pZHBvaW50KCkuIiksdGhpcy5nZXRNaWRwb2ludCh0KX0sTGx0LnByb3RvdHlwZW5vcm1hbD1mdW5jdGlvbih0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5UcmlhbmdsZTogLm5vcm1hbCgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmdldE5vcm1hbCgpLiIpLHRoaXMuZ2V0Tm9ybWFsKHQpfSxMbHQucHJvdG90eXBlLnBsYW5lPWZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlRyaWFuZ2xlOiAucGxhbmUoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5nZXRQbGFuZSgpLiIpLHRoaXMuZ2V0UGxhbmUodCl9LExsdC5iYXJ5Y29vcmRGcm9tUG9pbnQ9ZnVuY3Rpb24odCxlLG4sbyxpKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5UcmlhbmdsZTogLmJhcnljb29yZEZyb21Qb2ludCgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmdldEJhcnljb29yZCgpLiIpLExsdC5nZXRCYXJ5Y29vcmQodCxlLG4sbyxpKX0sTGx0Lm5vcm1hbD1mdW5jdGlvbih0LGUsbixvKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5UcmlhbmdsZTogLm5vcm1hbCgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmdldE5vcm1hbCgpLiIpLExsdC5nZXROb3JtYWwodCxlLG4sbyl9LFF1dC5wcm90b3R5cGUuZXh0cmFjdEFsbFBvaW50cz1mdW5jdGlvbih0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5TaGFwZTogLmV4dHJhY3RBbGxQb2ludHMoKSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgLmV4dHJhY3RQb2ludHMoKSBpbnN0ZWFkLiIpLHRoaXMuZXh0cmFjdFBvaW50cyh0KX0sUXV0LnByb3RvdHlwZS5leHRydWRlPWZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlNoYXBlOiAuZXh0cnVkZSgpIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBFeHRydWRlR2VvbWV0cnkoKSBpbnN0ZWFkLiIpLG5ldyB4dXQodGhpcyx0KX0sUXV0LnByb3RvdHlwZS5tYWtlR2VvbWV0cnk9ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuU2hhcGU6IC5tYWtlR2VvbWV0cnkoKSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgU2hhcGVHZW9tZXRyeSgpIGluc3RlYWQuIiksbmV3IFB1dCh0aGlzLHQpfSxnc3QucHJvdG90eXBlLmZyb21BdHRyaWJ1dGU9ZnVuY3Rpb24odCxlLG4pe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlZlY3RvcjI6IC5mcm9tQXR0cmlidXRlKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuZnJvbUJ1ZmZlckF0dHJpYnV0ZSgpLiIpLHRoaXMuZnJvbUJ1ZmZlckF0dHJpYnV0ZSh0LGUsbil9LGdzdC5wcm90b3R5cGUuZGlzdGFuY2VUb01hbmhhdHRhbj1mdW5jdGlvbih0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5WZWN0b3IyOiAuZGlzdGFuY2VUb01hbmhhdHRhbigpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLm1hbmhhdHRhbkRpc3RhbmNlVG8oKS4iKSx0aGlzLm1hbmhhdHRhbkRpc3RhbmNlVG8odCl9LGdzdC5wcm90b3R5cGUubGVuZ3RoTWFuaGF0dGFuPWZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuVmVjdG9yMjogLmxlbmd0aE1hbmhhdHRhbigpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLm1hbmhhdHRhbkxlbmd0aCgpLiIpLHRoaXMubWFuaGF0dGFuTGVuZ3RoKCl9LHdzdC5wcm90b3R5cGUuc2V0RXVsZXJGcm9tUm90YXRpb25NYXRyaXg9ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5WZWN0b3IzOiAuc2V0RXVsZXJGcm9tUm90YXRpb25NYXRyaXgoKSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgRXVsZXIuc2V0RnJvbVJvdGF0aW9uTWF0cml4KCkgaW5zdGVhZC4iKX0sd3N0LnByb3RvdHlwZS5zZXRFdWxlckZyb21RdWF0ZXJuaW9uPWZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuVmVjdG9yMzogLnNldEV1bGVyRnJvbVF1YXRlcm5pb24oKSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgRXVsZXIuc2V0RnJvbVF1YXRlcm5pb24oKSBpbnN0ZWFkLiIpfSx3c3QucHJvdG90eXBlLmdldFBvc2l0aW9uRnJvbU1hdHJpeD1mdW5jdGlvbih0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5WZWN0b3IzOiAuZ2V0UG9zaXRpb25Gcm9tTWF0cml4KCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuc2V0RnJvbU1hdHJpeFBvc2l0aW9uKCkuIiksdGhpcy5zZXRGcm9tTWF0cml4UG9zaXRpb24odCl9LHdzdC5wcm90b3R5cGUuZ2V0U2NhbGVGcm9tTWF0cml4PWZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlZlY3RvcjM6IC5nZXRTY2FsZUZyb21NYXRyaXgoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5zZXRGcm9tTWF0cml4U2NhbGUoKS4iKSx0aGlzLnNldEZyb21NYXRyaXhTY2FsZSh0KX0sd3N0LnByb3RvdHlwZS5nZXRDb2x1bW5Gcm9tTWF0cml4PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuVmVjdG9yMzogLmdldENvbHVtbkZyb21NYXRyaXgoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5zZXRGcm9tTWF0cml4Q29sdW1uKCkuIiksdGhpcy5zZXRGcm9tTWF0cml4Q29sdW1uKGUsdCl9LHdzdC5wcm90b3R5cGUuYXBwbHlQcm9qZWN0aW9uPWZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlZlY3RvcjM6IC5hcHBseVByb2plY3Rpb24oKSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgLmFwcGx5TWF0cml4NCggbSApIGluc3RlYWQuIiksdGhpcy5hcHBseU1hdHJpeDQodCl9LHdzdC5wcm90b3R5cGUuZnJvbUF0dHJpYnV0ZT1mdW5jdGlvbih0LGUsbil7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuVmVjdG9yMzogLmZyb21BdHRyaWJ1dGUoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5mcm9tQnVmZmVyQXR0cmlidXRlKCkuIiksdGhpcy5mcm9tQnVmZmVyQXR0cmlidXRlKHQsZSxuKX0sd3N0LnByb3RvdHlwZS5kaXN0YW5jZVRvTWFuaGF0dGFuPWZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlZlY3RvcjM6IC5kaXN0YW5jZVRvTWFuaGF0dGFuKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAubWFuaGF0dGFuRGlzdGFuY2VUbygpLiIpLHRoaXMubWFuaGF0dGFuRGlzdGFuY2VUbyh0KX0sd3N0LnByb3RvdHlwZS5sZW5ndGhNYW5oYXR0YW49ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5WZWN0b3IzOiAubGVuZ3RoTWFuaGF0dGFuKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAubWFuaGF0dGFuTGVuZ3RoKCkuIiksdGhpcy5tYW5oYXR0YW5MZW5ndGgoKX0sdnN0LnByb3RvdHlwZS5mcm9tQXR0cmlidXRlPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5WZWN0b3I0OiAuZnJvbUF0dHJpYnV0ZSgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmZyb21CdWZmZXJBdHRyaWJ1dGUoKS4iKSx0aGlzLmZyb21CdWZmZXJBdHRyaWJ1dGUodCxlLG4pfSx2c3QucHJvdG90eXBlLmxlbmd0aE1hbmhhdHRhbj1mdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlZlY3RvcjQ6IC5sZW5ndGhNYW5oYXR0YW4oKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5tYW5oYXR0YW5MZW5ndGgoKS4iKSx0aGlzLm1hbmhhdHRhbkxlbmd0aCgpfSxTbHQucHJvdG90eXBlLmdldENoaWxkQnlOYW1lPWZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLk9iamVjdDNEOiAuZ2V0Q2hpbGRCeU5hbWUoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5nZXRPYmplY3RCeU5hbWUoKS4iKSx0aGlzLmdldE9iamVjdEJ5TmFtZSh0KX0sU2x0LnByb3RvdHlwZS5yZW5kZXJEZXB0aD1mdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuT2JqZWN0M0Q6IC5yZW5kZXJEZXB0aCBoYXMgYmVlbiByZW1vdmVkLiBVc2UgLnJlbmRlck9yZGVyLCBpbnN0ZWFkLiIpfSxTbHQucHJvdG90eXBlLnRyYW5zbGF0ZT1mdW5jdGlvbih0LGUpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLk9iamVjdDNEOiAudHJhbnNsYXRlKCkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIC50cmFuc2xhdGVPbkF4aXMoIGF4aXMsIGRpc3RhbmNlICkgaW5zdGVhZC4iKSx0aGlzLnRyYW5zbGF0ZU9uQXhpcyhlLHQpfSxTbHQucHJvdG90eXBlLmdldFdvcmxkUm90YXRpb249ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5PYmplY3QzRDogLmdldFdvcmxkUm90YXRpb24oKSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgVEhSRUUuT2JqZWN0M0QuZ2V0V29ybGRRdWF0ZXJuaW9uKCB0YXJnZXQgKSBpbnN0ZWFkLiIpfSxTbHQucHJvdG90eXBlLmFwcGx5TWF0cml4PWZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLk9iamVjdDNEOiAuYXBwbHlNYXRyaXgoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5hcHBseU1hdHJpeDQoKS4iKSx0aGlzLmFwcGx5TWF0cml4NCh0KX0sT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoU2x0LnByb3RvdHlwZSx7ZXVsZXJPcmRlcjp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuT2JqZWN0M0Q6IC5ldWxlck9yZGVyIGlzIG5vdyAucm90YXRpb24ub3JkZXIuIiksdGhpcy5yb3RhdGlvbi5vcmRlcn0sc2V0OmZ1bmN0aW9uKHQpe2NvbnNvbGUud2FybigiVEhSRUUuT2JqZWN0M0Q6IC5ldWxlck9yZGVyIGlzIG5vdyAucm90YXRpb24ub3JkZXIuIiksdGhpcy5yb3RhdGlvbi5vcmRlcj10fX0sdXNlUXVhdGVybmlvbjp7Z2V0OmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5PYmplY3QzRDogLnVzZVF1YXRlcm5pb24gaGFzIGJlZW4gcmVtb3ZlZC4gVGhlIGxpYnJhcnkgbm93IHVzZXMgcXVhdGVybmlvbnMgYnkgZGVmYXVsdC4iKX0sc2V0OmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5PYmplY3QzRDogLnVzZVF1YXRlcm5pb24gaGFzIGJlZW4gcmVtb3ZlZC4gVGhlIGxpYnJhcnkgbm93IHVzZXMgcXVhdGVybmlvbnMgYnkgZGVmYXVsdC4iKX19fSksU2N0LnByb3RvdHlwZS5zZXREcmF3TW9kZT1mdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLk1lc2g6IC5zZXREcmF3TW9kZSgpIGhhcyBiZWVuIHJlbW92ZWQuIFRoZSByZW5kZXJlciBub3cgYWx3YXlzIGFzc3VtZXMgVEhSRUUuVHJpYW5nbGVzRHJhd01vZGUuIFRyYW5zZm9ybSB5b3VyIGdlb21ldHJ5IHZpYSBCdWZmZXJHZW9tZXRyeVV0aWxzLnRvVHJpYW5nbGVzRHJhd01vZGUoKSBpZiBuZWNlc3NhcnkuIil9LE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKFNjdC5wcm90b3R5cGUse2RyYXdNb2RlOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS5lcnJvcigiVEhSRUUuTWVzaDogLmRyYXdNb2RlIGhhcyBiZWVuIHJlbW92ZWQuIFRoZSByZW5kZXJlciBub3cgYWx3YXlzIGFzc3VtZXMgVEhSRUUuVHJpYW5nbGVzRHJhd01vZGUuIiksMH0sc2V0OmZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuTWVzaDogLmRyYXdNb2RlIGhhcyBiZWVuIHJlbW92ZWQuIFRoZSByZW5kZXJlciBub3cgYWx3YXlzIGFzc3VtZXMgVEhSRUUuVHJpYW5nbGVzRHJhd01vZGUuIFRyYW5zZm9ybSB5b3VyIGdlb21ldHJ5IHZpYSBCdWZmZXJHZW9tZXRyeVV0aWxzLnRvVHJpYW5nbGVzRHJhd01vZGUoKSBpZiBuZWNlc3NhcnkuIil9fX0pLGxmdC5wcm90b3R5cGUuaW5pdEJvbmVzPWZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuU2tpbm5lZE1lc2g6IGluaXRCb25lcygpIGhhcyBiZWVuIHJlbW92ZWQuIil9LEljdC5wcm90b3R5cGUuc2V0TGVucz1mdW5jdGlvbih0LGUpe2NvbnNvbGUud2FybigiVEhSRUUuUGVyc3BlY3RpdmVDYW1lcmEuc2V0TGVucyBpcyBkZXByZWNhdGVkLiBVc2UgLnNldEZvY2FsTGVuZ3RoIGFuZCAuZmlsbUdhdWdlIGZvciBhIHBob3RvZ3JhcGhpYyBzZXR1cC4iKSx2b2lkIDAhPT1lJiYodGhpcy5maWxtR2F1Z2U9ZSksdGhpcy5zZXRGb2NhbExlbmd0aCh0KX0sT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoJHV0LnByb3RvdHlwZSx7b25seVNoYWRvdzp7c2V0OmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5MaWdodDogLm9ubHlTaGFkb3cgaGFzIGJlZW4gcmVtb3ZlZC4iKX19LHNoYWRvd0NhbWVyYUZvdjp7c2V0OmZ1bmN0aW9uKHQpe2NvbnNvbGUud2FybigiVEhSRUUuTGlnaHQ6IC5zaGFkb3dDYW1lcmFGb3YgaXMgbm93IC5zaGFkb3cuY2FtZXJhLmZvdi4iKSx0aGlzLnNoYWRvdy5jYW1lcmEuZm92PXR9fSxzaGFkb3dDYW1lcmFMZWZ0OntzZXQ6ZnVuY3Rpb24odCl7Y29uc29sZS53YXJuKCJUSFJFRS5MaWdodDogLnNoYWRvd0NhbWVyYUxlZnQgaXMgbm93IC5zaGFkb3cuY2FtZXJhLmxlZnQuIiksdGhpcy5zaGFkb3cuY2FtZXJhLmxlZnQ9dH19LHNoYWRvd0NhbWVyYVJpZ2h0OntzZXQ6ZnVuY3Rpb24odCl7Y29uc29sZS53YXJuKCJUSFJFRS5MaWdodDogLnNoYWRvd0NhbWVyYVJpZ2h0IGlzIG5vdyAuc2hhZG93LmNhbWVyYS5yaWdodC4iKSx0aGlzLnNoYWRvdy5jYW1lcmEucmlnaHQ9dH19LHNoYWRvd0NhbWVyYVRvcDp7c2V0OmZ1bmN0aW9uKHQpe2NvbnNvbGUud2FybigiVEhSRUUuTGlnaHQ6IC5zaGFkb3dDYW1lcmFUb3AgaXMgbm93IC5zaGFkb3cuY2FtZXJhLnRvcC4iKSx0aGlzLnNoYWRvdy5jYW1lcmEudG9wPXR9fSxzaGFkb3dDYW1lcmFCb3R0b206e3NldDpmdW5jdGlvbih0KXtjb25zb2xlLndhcm4oIlRIUkVFLkxpZ2h0OiAuc2hhZG93Q2FtZXJhQm90dG9tIGlzIG5vdyAuc2hhZG93LmNhbWVyYS5ib3R0b20uIiksdGhpcy5zaGFkb3cuY2FtZXJhLmJvdHRvbT10fX0sc2hhZG93Q2FtZXJhTmVhcjp7c2V0OmZ1bmN0aW9uKHQpe2NvbnNvbGUud2FybigiVEhSRUUuTGlnaHQ6IC5zaGFkb3dDYW1lcmFOZWFyIGlzIG5vdyAuc2hhZG93LmNhbWVyYS5uZWFyLiIpLHRoaXMuc2hhZG93LmNhbWVyYS5uZWFyPXR9fSxzaGFkb3dDYW1lcmFGYXI6e3NldDpmdW5jdGlvbih0KXtjb25zb2xlLndhcm4oIlRIUkVFLkxpZ2h0OiAuc2hhZG93Q2FtZXJhRmFyIGlzIG5vdyAuc2hhZG93LmNhbWVyYS5mYXIuIiksdGhpcy5zaGFkb3cuY2FtZXJhLmZhcj10fX0sc2hhZG93Q2FtZXJhVmlzaWJsZTp7c2V0OmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5MaWdodDogLnNoYWRvd0NhbWVyYVZpc2libGUgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIG5ldyBUSFJFRS5DYW1lcmFIZWxwZXIoIGxpZ2h0LnNoYWRvdy5jYW1lcmEgKSBpbnN0ZWFkLiIpfX0sc2hhZG93Qmlhczp7c2V0OmZ1bmN0aW9uKHQpe2NvbnNvbGUud2FybigiVEhSRUUuTGlnaHQ6IC5zaGFkb3dCaWFzIGlzIG5vdyAuc2hhZG93LmJpYXMuIiksdGhpcy5zaGFkb3cuYmlhcz10fX0sc2hhZG93RGFya25lc3M6e3NldDpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuTGlnaHQ6IC5zaGFkb3dEYXJrbmVzcyBoYXMgYmVlbiByZW1vdmVkLiIpfX0sc2hhZG93TWFwV2lkdGg6e3NldDpmdW5jdGlvbih0KXtjb25zb2xlLndhcm4oIlRIUkVFLkxpZ2h0OiAuc2hhZG93TWFwV2lkdGggaXMgbm93IC5zaGFkb3cubWFwU2l6ZS53aWR0aC4iKSx0aGlzLnNoYWRvdy5tYXBTaXplLndpZHRoPXR9fSxzaGFkb3dNYXBIZWlnaHQ6e3NldDpmdW5jdGlvbih0KXtjb25zb2xlLndhcm4oIlRIUkVFLkxpZ2h0OiAuc2hhZG93TWFwSGVpZ2h0IGlzIG5vdyAuc2hhZG93Lm1hcFNpemUuaGVpZ2h0LiIpLHRoaXMuc2hhZG93Lm1hcFNpemUuaGVpZ2h0PXR9fX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKFFsdC5wcm90b3R5cGUse2xlbmd0aDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuQnVmZmVyQXR0cmlidXRlOiAubGVuZ3RoIGhhcyBiZWVuIGRlcHJlY2F0ZWQuIFVzZSAuY291bnQgaW5zdGVhZC4iKSx0aGlzLmFycmF5Lmxlbmd0aH19LGR5bmFtaWM6e2dldDpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLkJ1ZmZlckF0dHJpYnV0ZTogLmR5bmFtaWMgaGFzIGJlZW4gZGVwcmVjYXRlZC4gVXNlIC51c2FnZSBpbnN0ZWFkLiIpLHRoaXMudXNhZ2U9PT1pc3R9LHNldDpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuQnVmZmVyQXR0cmlidXRlOiAuZHluYW1pYyBoYXMgYmVlbiBkZXByZWNhdGVkLiBVc2UgLnVzYWdlIGluc3RlYWQuIiksdGhpcy5zZXRVc2FnZShpc3QpfX19KSxRbHQucHJvdG90eXBlLnNldER5bmFtaWM9ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuQnVmZmVyQXR0cmlidXRlOiAuc2V0RHluYW1pYygpIGhhcyBiZWVuIGRlcHJlY2F0ZWQuIFVzZSAuc2V0VXNhZ2UoKSBpbnN0ZWFkLiIpLHRoaXMuc2V0VXNhZ2UoITA9PT10P2lzdDpvc3QpLHRoaXN9LFFsdC5wcm90b3R5cGUuY29weUluZGljZXNBcnJheT1mdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLkJ1ZmZlckF0dHJpYnV0ZTogLmNvcHlJbmRpY2VzQXJyYXkoKSBoYXMgYmVlbiByZW1vdmVkLiIpfSxRbHQucHJvdG90eXBlLnNldEFycmF5PWZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuQnVmZmVyQXR0cmlidXRlOiAuc2V0QXJyYXkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIEJ1ZmZlckdlb21ldHJ5IC5zZXRBdHRyaWJ1dGUgdG8gcmVwbGFjZS9yZXNpemUgYXR0cmlidXRlIGJ1ZmZlcnMiKX0sZGN0LnByb3RvdHlwZS5hZGRJbmRleD1mdW5jdGlvbih0KXtjb25zb2xlLndhcm4oIlRIUkVFLkJ1ZmZlckdlb21ldHJ5OiAuYWRkSW5kZXgoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5zZXRJbmRleCgpLiIpLHRoaXMuc2V0SW5kZXgodCl9LGRjdC5wcm90b3R5cGUuYWRkQXR0cmlidXRlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuQnVmZmVyR2VvbWV0cnk6IC5hZGRBdHRyaWJ1dGUoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5zZXRBdHRyaWJ1dGUoKS4iKSxlJiZlLmlzQnVmZmVyQXR0cmlidXRlfHxlJiZlLmlzSW50ZXJsZWF2ZWRCdWZmZXJBdHRyaWJ1dGU/ImluZGV4Ij09PXQ/KGNvbnNvbGUud2FybigiVEhSRUUuQnVmZmVyR2VvbWV0cnkuYWRkQXR0cmlidXRlOiBVc2UgLnNldEluZGV4KCkgZm9yIGluZGV4IGF0dHJpYnV0ZS4iKSx0aGlzLnNldEluZGV4KGUpLHRoaXMpOnRoaXMuc2V0QXR0cmlidXRlKHQsZSk6KGNvbnNvbGUud2FybigiVEhSRUUuQnVmZmVyR2VvbWV0cnk6IC5hZGRBdHRyaWJ1dGUoKSBub3cgZXhwZWN0cyAoIG5hbWUsIGF0dHJpYnV0ZSApLiIpLHRoaXMuc2V0QXR0cmlidXRlKHQsbmV3IFFsdChhcmd1bWVudHNbMV0sYXJndW1lbnRzWzJdKSkpfSxkY3QucHJvdG90eXBlLmFkZERyYXdDYWxsPWZ1bmN0aW9uKHQsZSxuKXt2b2lkIDAhPT1uJiZjb25zb2xlLndhcm4oIlRIUkVFLkJ1ZmZlckdlb21ldHJ5OiAuYWRkRHJhd0NhbGwoKSBubyBsb25nZXIgc3VwcG9ydHMgaW5kZXhPZmZzZXQuIiksY29uc29sZS53YXJuKCJUSFJFRS5CdWZmZXJHZW9tZXRyeTogLmFkZERyYXdDYWxsKCkgaXMgbm93IC5hZGRHcm91cCgpLiIpLHRoaXMuYWRkR3JvdXAodCxlKX0sZGN0LnByb3RvdHlwZS5jbGVhckRyYXdDYWxscz1mdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuQnVmZmVyR2VvbWV0cnk6IC5jbGVhckRyYXdDYWxscygpIGlzIG5vdyAuY2xlYXJHcm91cHMoKS4iKSx0aGlzLmNsZWFyR3JvdXBzKCl9LGRjdC5wcm90b3R5cGUuY29tcHV0ZU9mZnNldHM9ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLkJ1ZmZlckdlb21ldHJ5OiAuY29tcHV0ZU9mZnNldHMoKSBoYXMgYmVlbiByZW1vdmVkLiIpfSxkY3QucHJvdG90eXBlLnJlbW92ZUF0dHJpYnV0ZT1mdW5jdGlvbih0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5CdWZmZXJHZW9tZXRyeTogLnJlbW92ZUF0dHJpYnV0ZSgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmRlbGV0ZUF0dHJpYnV0ZSgpLiIpLHRoaXMuZGVsZXRlQXR0cmlidXRlKHQpfSxkY3QucHJvdG90eXBlLmFwcGx5TWF0cml4PWZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLkJ1ZmZlckdlb21ldHJ5OiAuYXBwbHlNYXRyaXgoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5hcHBseU1hdHJpeDQoKS4iKSx0aGlzLmFwcGx5TWF0cml4NCh0KX0sT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZGN0LnByb3RvdHlwZSx7ZHJhd2NhbGxzOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS5lcnJvcigiVEhSRUUuQnVmZmVyR2VvbWV0cnk6IC5kcmF3Y2FsbHMgaGFzIGJlZW4gcmVuYW1lZCB0byAuZ3JvdXBzLiIpLHRoaXMuZ3JvdXBzfX0sb2Zmc2V0czp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuQnVmZmVyR2VvbWV0cnk6IC5vZmZzZXRzIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmdyb3Vwcy4iKSx0aGlzLmdyb3Vwc319fSksTG10LnByb3RvdHlwZS5zZXREeW5hbWljPWZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLkludGVybGVhdmVkQnVmZmVyOiAuc2V0RHluYW1pYygpIGhhcyBiZWVuIGRlcHJlY2F0ZWQuIFVzZSAuc2V0VXNhZ2UoKSBpbnN0ZWFkLiIpLHRoaXMuc2V0VXNhZ2UoITA9PT10P2lzdDpvc3QpLHRoaXN9LExtdC5wcm90b3R5cGUuc2V0QXJyYXk9ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5JbnRlcmxlYXZlZEJ1ZmZlcjogLnNldEFycmF5IGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBCdWZmZXJHZW9tZXRyeSAuc2V0QXR0cmlidXRlIHRvIHJlcGxhY2UvcmVzaXplIGF0dHJpYnV0ZSBidWZmZXJzIil9LHh1dC5wcm90b3R5cGUuZ2V0QXJyYXlzPWZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuRXh0cnVkZUdlb21ldHJ5OiAuZ2V0QXJyYXlzKCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX0seHV0LnByb3RvdHlwZS5hZGRTaGFwZUxpc3Q9ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5FeHRydWRlR2VvbWV0cnk6IC5hZGRTaGFwZUxpc3QoKSBoYXMgYmVlbiByZW1vdmVkLiIpfSx4dXQucHJvdG90eXBlLmFkZFNoYXBlPWZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuRXh0cnVkZUdlb21ldHJ5OiAuYWRkU2hhcGUoKSBoYXMgYmVlbiByZW1vdmVkLiIpfSxGbXQucHJvdG90eXBlLmRpc3Bvc2U9ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5TY2VuZTogLmRpc3Bvc2UoKSBoYXMgYmVlbiByZW1vdmVkLiIpfSxPYmplY3QuZGVmaW5lUHJvcGVydGllcyhWbHQucHJvdG90eXBlLHt3cmFwQXJvdW5kOntnZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLk1hdGVyaWFsOiAud3JhcEFyb3VuZCBoYXMgYmVlbiByZW1vdmVkLiIpfSxzZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLk1hdGVyaWFsOiAud3JhcEFyb3VuZCBoYXMgYmVlbiByZW1vdmVkLiIpfX0sb3ZlcmRyYXc6e2dldDpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuTWF0ZXJpYWw6IC5vdmVyZHJhdyBoYXMgYmVlbiByZW1vdmVkLiIpfSxzZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLk1hdGVyaWFsOiAub3ZlcmRyYXcgaGFzIGJlZW4gcmVtb3ZlZC4iKX19LHdyYXBSR0I6e2dldDpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLk1hdGVyaWFsOiAud3JhcFJHQiBoYXMgYmVlbiByZW1vdmVkLiIpLG5ldyBabHR9fSxzaGFkaW5nOntnZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS4iK3RoaXMudHlwZSsiOiAuc2hhZGluZyBoYXMgYmVlbiByZW1vdmVkLiBVc2UgdGhlIGJvb2xlYW4gLmZsYXRTaGFkaW5nIGluc3RlYWQuIil9LHNldDpmdW5jdGlvbih0KXtjb25zb2xlLndhcm4oIlRIUkVFLiIrdGhpcy50eXBlKyI6IC5zaGFkaW5nIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSB0aGUgYm9vbGVhbiAuZmxhdFNoYWRpbmcgaW5zdGVhZC4iKSx0aGlzLmZsYXRTaGFkaW5nPTE9PT10fX0sc3RlbmNpbE1hc2s6e2dldDpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLiIrdGhpcy50eXBlKyI6IC5zdGVuY2lsTWFzayBoYXMgYmVlbiByZW1vdmVkLiBVc2UgLnN0ZW5jaWxGdW5jTWFzayBpbnN0ZWFkLiIpLHRoaXMuc3RlbmNpbEZ1bmNNYXNrfSxzZXQ6ZnVuY3Rpb24odCl7Y29uc29sZS53YXJuKCJUSFJFRS4iK3RoaXMudHlwZSsiOiAuc3RlbmNpbE1hc2sgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIC5zdGVuY2lsRnVuY01hc2sgaW5zdGVhZC4iKSx0aGlzLnN0ZW5jaWxGdW5jTWFzaz10fX0sdmVydGV4VGFuZ2VudHM6e2dldDpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuIit0aGlzLnR5cGUrIjogLnZlcnRleFRhbmdlbnRzIGhhcyBiZWVuIHJlbW92ZWQuIil9LHNldDpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuIit0aGlzLnR5cGUrIjogLnZlcnRleFRhbmdlbnRzIGhhcyBiZWVuIHJlbW92ZWQuIil9fX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKE5jdC5wcm90b3R5cGUse2Rlcml2YXRpdmVzOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5TaGFkZXJNYXRlcmlhbDogLmRlcml2YXRpdmVzIGhhcyBiZWVuIG1vdmVkIHRvIC5leHRlbnNpb25zLmRlcml2YXRpdmVzLiIpLHRoaXMuZXh0ZW5zaW9ucy5kZXJpdmF0aXZlc30sc2V0OmZ1bmN0aW9uKHQpe2NvbnNvbGUud2FybigiVEhSRUUuIFNoYWRlck1hdGVyaWFsOiAuZGVyaXZhdGl2ZXMgaGFzIGJlZW4gbW92ZWQgdG8gLmV4dGVuc2lvbnMuZGVyaXZhdGl2ZXMuIiksdGhpcy5leHRlbnNpb25zLmRlcml2YXRpdmVzPXR9fX0pLEhtdC5wcm90b3R5cGUuY2xlYXJUYXJnZXQ9ZnVuY3Rpb24odCxlLG4sbyl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuY2xlYXJUYXJnZXQoKSBoYXMgYmVlbiBkZXByZWNhdGVkLiBVc2UgLnNldFJlbmRlclRhcmdldCgpIGFuZCAuY2xlYXIoKSBpbnN0ZWFkLiIpLHRoaXMuc2V0UmVuZGVyVGFyZ2V0KHQpLHRoaXMuY2xlYXIoZSxuLG8pfSxIbXQucHJvdG90eXBlLmFuaW1hdGU9ZnVuY3Rpb24odCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuYW5pbWF0ZSgpIGlzIG5vdyAuc2V0QW5pbWF0aW9uTG9vcCgpLiIpLHRoaXMuc2V0QW5pbWF0aW9uTG9vcCh0KX0sSG10LnByb3RvdHlwZS5nZXRDdXJyZW50UmVuZGVyVGFyZ2V0PWZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLmdldEN1cnJlbnRSZW5kZXJUYXJnZXQoKSBpcyBub3cgLmdldFJlbmRlclRhcmdldCgpLiIpLHRoaXMuZ2V0UmVuZGVyVGFyZ2V0KCl9LEhtdC5wcm90b3R5cGUuZ2V0TWF4QW5pc290cm9weT1mdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5nZXRNYXhBbmlzb3Ryb3B5KCkgaXMgbm93IC5jYXBhYmlsaXRpZXMuZ2V0TWF4QW5pc290cm9weSgpLiIpLHRoaXMuY2FwYWJpbGl0aWVzLmdldE1heEFuaXNvdHJvcHkoKX0sSG10LnByb3RvdHlwZS5nZXRQcmVjaXNpb249ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuZ2V0UHJlY2lzaW9uKCkgaXMgbm93IC5jYXBhYmlsaXRpZXMucHJlY2lzaW9uLiIpLHRoaXMuY2FwYWJpbGl0aWVzLnByZWNpc2lvbn0sSG10LnByb3RvdHlwZS5yZXNldEdMU3RhdGU9ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAucmVzZXRHTFN0YXRlKCkgaXMgbm93IC5zdGF0ZS5yZXNldCgpLiIpLHRoaXMuc3RhdGUucmVzZXQoKX0sSG10LnByb3RvdHlwZS5zdXBwb3J0c0Zsb2F0VGV4dHVyZXM9ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuc3VwcG9ydHNGbG9hdFRleHR1cmVzKCkgaXMgbm93IC5leHRlbnNpb25zLmdldCggJ09FU190ZXh0dXJlX2Zsb2F0JyApLiIpLHRoaXMuZXh0ZW5zaW9ucy5nZXQoIk9FU190ZXh0dXJlX2Zsb2F0Iil9LEhtdC5wcm90b3R5cGUuc3VwcG9ydHNIYWxmRmxvYXRUZXh0dXJlcz1mdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5zdXBwb3J0c0hhbGZGbG9hdFRleHR1cmVzKCkgaXMgbm93IC5leHRlbnNpb25zLmdldCggJ09FU190ZXh0dXJlX2hhbGZfZmxvYXQnICkuIiksdGhpcy5leHRlbnNpb25zLmdldCgiT0VTX3RleHR1cmVfaGFsZl9mbG9hdCIpfSxIbXQucHJvdG90eXBlLnN1cHBvcnRzU3RhbmRhcmREZXJpdmF0aXZlcz1mdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5zdXBwb3J0c1N0YW5kYXJkRGVyaXZhdGl2ZXMoKSBpcyBub3cgLmV4dGVuc2lvbnMuZ2V0KCAnT0VTX3N0YW5kYXJkX2Rlcml2YXRpdmVzJyApLiIpLHRoaXMuZXh0ZW5zaW9ucy5nZXQoIk9FU19zdGFuZGFyZF9kZXJpdmF0aXZlcyIpfSxIbXQucHJvdG90eXBlLnN1cHBvcnRzQ29tcHJlc3NlZFRleHR1cmVTM1RDPWZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnN1cHBvcnRzQ29tcHJlc3NlZFRleHR1cmVTM1RDKCkgaXMgbm93IC5leHRlbnNpb25zLmdldCggJ1dFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9zM3RjJyApLiIpLHRoaXMuZXh0ZW5zaW9ucy5nZXQoIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9zM3RjIil9LEhtdC5wcm90b3R5cGUuc3VwcG9ydHNDb21wcmVzc2VkVGV4dHVyZVBWUlRDPWZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnN1cHBvcnRzQ29tcHJlc3NlZFRleHR1cmVQVlJUQygpIGlzIG5vdyAuZXh0ZW5zaW9ucy5nZXQoICdXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfcHZydGMnICkuIiksdGhpcy5leHRlbnNpb25zLmdldCgiV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3B2cnRjIil9LEhtdC5wcm90b3R5cGUuc3VwcG9ydHNCbGVuZE1pbk1heD1mdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5zdXBwb3J0c0JsZW5kTWluTWF4KCkgaXMgbm93IC5leHRlbnNpb25zLmdldCggJ0VYVF9ibGVuZF9taW5tYXgnICkuIiksdGhpcy5leHRlbnNpb25zLmdldCgiRVhUX2JsZW5kX21pbm1heCIpfSxIbXQucHJvdG90eXBlLnN1cHBvcnRzVmVydGV4VGV4dHVyZXM9ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuc3VwcG9ydHNWZXJ0ZXhUZXh0dXJlcygpIGlzIG5vdyAuY2FwYWJpbGl0aWVzLnZlcnRleFRleHR1cmVzLiIpLHRoaXMuY2FwYWJpbGl0aWVzLnZlcnRleFRleHR1cmVzfSxIbXQucHJvdG90eXBlLnN1cHBvcnRzSW5zdGFuY2VkQXJyYXlzPWZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnN1cHBvcnRzSW5zdGFuY2VkQXJyYXlzKCkgaXMgbm93IC5leHRlbnNpb25zLmdldCggJ0FOR0xFX2luc3RhbmNlZF9hcnJheXMnICkuIiksdGhpcy5leHRlbnNpb25zLmdldCgiQU5HTEVfaW5zdGFuY2VkX2FycmF5cyIpfSxIbXQucHJvdG90eXBlLmVuYWJsZVNjaXNzb3JUZXN0PWZ1bmN0aW9uKHQpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLmVuYWJsZVNjaXNzb3JUZXN0KCkgaXMgbm93IC5zZXRTY2lzc29yVGVzdCgpLiIpLHRoaXMuc2V0U2Npc3NvclRlc3QodCl9LEhtdC5wcm90b3R5cGUuaW5pdE1hdGVyaWFsPWZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuaW5pdE1hdGVyaWFsKCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX0sSG10LnByb3RvdHlwZS5hZGRQcmVQbHVnaW49ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5hZGRQcmVQbHVnaW4oKSBoYXMgYmVlbiByZW1vdmVkLiIpfSxIbXQucHJvdG90eXBlLmFkZFBvc3RQbHVnaW49ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5hZGRQb3N0UGx1Z2luKCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX0sSG10LnByb3RvdHlwZS51cGRhdGVTaGFkb3dNYXA9ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC51cGRhdGVTaGFkb3dNYXAoKSBoYXMgYmVlbiByZW1vdmVkLiIpfSxIbXQucHJvdG90eXBlLnNldEZhY2VDdWxsaW5nPWZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuc2V0RmFjZUN1bGxpbmcoKSBoYXMgYmVlbiByZW1vdmVkLiIpfSxIbXQucHJvdG90eXBlLmFsbG9jVGV4dHVyZVVuaXQ9ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5hbGxvY1RleHR1cmVVbml0KCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX0sSG10LnByb3RvdHlwZS5zZXRUZXh0dXJlPWZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuc2V0VGV4dHVyZSgpIGhhcyBiZWVuIHJlbW92ZWQuIil9LEhtdC5wcm90b3R5cGUuc2V0VGV4dHVyZTJEPWZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuc2V0VGV4dHVyZTJEKCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX0sSG10LnByb3RvdHlwZS5zZXRUZXh0dXJlQ3ViZT1mdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnNldFRleHR1cmVDdWJlKCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX0sSG10LnByb3RvdHlwZS5nZXRBY3RpdmVNaXBNYXBMZXZlbD1mdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5nZXRBY3RpdmVNaXBNYXBMZXZlbCgpIGlzIG5vdyAuZ2V0QWN0aXZlTWlwbWFwTGV2ZWwoKS4iKSx0aGlzLmdldEFjdGl2ZU1pcG1hcExldmVsKCl9LE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKEhtdC5wcm90b3R5cGUse3NoYWRvd01hcEVuYWJsZWQ6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnNoYWRvd01hcC5lbmFibGVkfSxzZXQ6ZnVuY3Rpb24odCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuc2hhZG93TWFwRW5hYmxlZCBpcyBub3cgLnNoYWRvd01hcC5lbmFibGVkLiIpLHRoaXMuc2hhZG93TWFwLmVuYWJsZWQ9dH19LHNoYWRvd01hcFR5cGU6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnNoYWRvd01hcC50eXBlfSxzZXQ6ZnVuY3Rpb24odCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuc2hhZG93TWFwVHlwZSBpcyBub3cgLnNoYWRvd01hcC50eXBlLiIpLHRoaXMuc2hhZG93TWFwLnR5cGU9dH19LHNoYWRvd01hcEN1bGxGYWNlOntnZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5zaGFkb3dNYXBDdWxsRmFjZSBoYXMgYmVlbiByZW1vdmVkLiBTZXQgTWF0ZXJpYWwuc2hhZG93U2lkZSBpbnN0ZWFkLiIpfSxzZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5zaGFkb3dNYXBDdWxsRmFjZSBoYXMgYmVlbiByZW1vdmVkLiBTZXQgTWF0ZXJpYWwuc2hhZG93U2lkZSBpbnN0ZWFkLiIpfX0sY29udGV4dDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLmNvbnRleHQgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIC5nZXRDb250ZXh0KCkgaW5zdGVhZC4iKSx0aGlzLmdldENvbnRleHQoKX19LHZyOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAudnIgaGFzIGJlZW4gcmVuYW1lZCB0byAueHIiKSx0aGlzLnhyfX0sZ2FtbWFJbnB1dDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLmdhbW1hSW5wdXQgaGFzIGJlZW4gcmVtb3ZlZC4gU2V0IHRoZSBlbmNvZGluZyBmb3IgdGV4dHVyZXMgdmlhIFRleHR1cmUuZW5jb2RpbmcgaW5zdGVhZC4iKSwhMX0sc2V0OmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuZ2FtbWFJbnB1dCBoYXMgYmVlbiByZW1vdmVkLiBTZXQgdGhlIGVuY29kaW5nIGZvciB0ZXh0dXJlcyB2aWEgVGV4dHVyZS5lbmNvZGluZyBpbnN0ZWFkLiIpfX0sZ2FtbWFPdXRwdXQ6e2dldDpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5nYW1tYU91dHB1dCBoYXMgYmVlbiByZW1vdmVkLiBTZXQgV2ViR0xSZW5kZXJlci5vdXRwdXRFbmNvZGluZyBpbnN0ZWFkLiIpLCExfSxzZXQ6ZnVuY3Rpb24odCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuZ2FtbWFPdXRwdXQgaGFzIGJlZW4gcmVtb3ZlZC4gU2V0IFdlYkdMUmVuZGVyZXIub3V0cHV0RW5jb2RpbmcgaW5zdGVhZC4iKSx0aGlzLm91dHB1dEVuY29kaW5nPSEwPT09dD8kcnQ6UXJ0fX0sdG9uZU1hcHBpbmdXaGl0ZVBvaW50OntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAudG9uZU1hcHBpbmdXaGl0ZVBvaW50IGhhcyBiZWVuIHJlbW92ZWQuIiksMX0sc2V0OmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAudG9uZU1hcHBpbmdXaGl0ZVBvaW50IGhhcyBiZWVuIHJlbW92ZWQuIil9fX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGttdC5wcm90b3R5cGUse2N1bGxGYWNlOntnZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5zaGFkb3dNYXAuY3VsbEZhY2UgaGFzIGJlZW4gcmVtb3ZlZC4gU2V0IE1hdGVyaWFsLnNoYWRvd1NpZGUgaW5zdGVhZC4iKX0sc2V0OmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuc2hhZG93TWFwLmN1bGxGYWNlIGhhcyBiZWVuIHJlbW92ZWQuIFNldCBNYXRlcmlhbC5zaGFkb3dTaWRlIGluc3RlYWQuIil9fSxyZW5kZXJSZXZlcnNlU2lkZWQ6e2dldDpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnNoYWRvd01hcC5yZW5kZXJSZXZlcnNlU2lkZWQgaGFzIGJlZW4gcmVtb3ZlZC4gU2V0IE1hdGVyaWFsLnNoYWRvd1NpZGUgaW5zdGVhZC4iKX0sc2V0OmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuc2hhZG93TWFwLnJlbmRlclJldmVyc2VTaWRlZCBoYXMgYmVlbiByZW1vdmVkLiBTZXQgTWF0ZXJpYWwuc2hhZG93U2lkZSBpbnN0ZWFkLiIpfX0scmVuZGVyU2luZ2xlU2lkZWQ6e2dldDpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnNoYWRvd01hcC5yZW5kZXJTaW5nbGVTaWRlZCBoYXMgYmVlbiByZW1vdmVkLiBTZXQgTWF0ZXJpYWwuc2hhZG93U2lkZSBpbnN0ZWFkLiIpfSxzZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5zaGFkb3dNYXAucmVuZGVyU2luZ2xlU2lkZWQgaGFzIGJlZW4gcmVtb3ZlZC4gU2V0IE1hdGVyaWFsLnNoYWRvd1NpZGUgaW5zdGVhZC4iKX19fSksT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoeHN0LnByb3RvdHlwZSx7d3JhcFM6e2dldDpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyVGFyZ2V0OiAud3JhcFMgaXMgbm93IC50ZXh0dXJlLndyYXBTLiIpLHRoaXMudGV4dHVyZS53cmFwU30sc2V0OmZ1bmN0aW9uKHQpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJUYXJnZXQ6IC53cmFwUyBpcyBub3cgLnRleHR1cmUud3JhcFMuIiksdGhpcy50ZXh0dXJlLndyYXBTPXR9fSx3cmFwVDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJUYXJnZXQ6IC53cmFwVCBpcyBub3cgLnRleHR1cmUud3JhcFQuIiksdGhpcy50ZXh0dXJlLndyYXBUfSxzZXQ6ZnVuY3Rpb24odCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlclRhcmdldDogLndyYXBUIGlzIG5vdyAudGV4dHVyZS53cmFwVC4iKSx0aGlzLnRleHR1cmUud3JhcFQ9dH19LG1hZ0ZpbHRlcjp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJUYXJnZXQ6IC5tYWdGaWx0ZXIgaXMgbm93IC50ZXh0dXJlLm1hZ0ZpbHRlci4iKSx0aGlzLnRleHR1cmUubWFnRmlsdGVyfSxzZXQ6ZnVuY3Rpb24odCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlclRhcmdldDogLm1hZ0ZpbHRlciBpcyBub3cgLnRleHR1cmUubWFnRmlsdGVyLiIpLHRoaXMudGV4dHVyZS5tYWdGaWx0ZXI9dH19LG1pbkZpbHRlcjp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJUYXJnZXQ6IC5taW5GaWx0ZXIgaXMgbm93IC50ZXh0dXJlLm1pbkZpbHRlci4iKSx0aGlzLnRleHR1cmUubWluRmlsdGVyfSxzZXQ6ZnVuY3Rpb24odCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlclRhcmdldDogLm1pbkZpbHRlciBpcyBub3cgLnRleHR1cmUubWluRmlsdGVyLiIpLHRoaXMudGV4dHVyZS5taW5GaWx0ZXI9dH19LGFuaXNvdHJvcHk6e2dldDpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyVGFyZ2V0OiAuYW5pc290cm9weSBpcyBub3cgLnRleHR1cmUuYW5pc290cm9weS4iKSx0aGlzLnRleHR1cmUuYW5pc290cm9weX0sc2V0OmZ1bmN0aW9uKHQpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJUYXJnZXQ6IC5hbmlzb3Ryb3B5IGlzIG5vdyAudGV4dHVyZS5hbmlzb3Ryb3B5LiIpLHRoaXMudGV4dHVyZS5hbmlzb3Ryb3B5PXR9fSxvZmZzZXQ6e2dldDpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyVGFyZ2V0OiAub2Zmc2V0IGlzIG5vdyAudGV4dHVyZS5vZmZzZXQuIiksdGhpcy50ZXh0dXJlLm9mZnNldH0sc2V0OmZ1bmN0aW9uKHQpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJUYXJnZXQ6IC5vZmZzZXQgaXMgbm93IC50ZXh0dXJlLm9mZnNldC4iKSx0aGlzLnRleHR1cmUub2Zmc2V0PXR9fSxyZXBlYXQ6e2dldDpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyVGFyZ2V0OiAucmVwZWF0IGlzIG5vdyAudGV4dHVyZS5yZXBlYXQuIiksdGhpcy50ZXh0dXJlLnJlcGVhdH0sc2V0OmZ1bmN0aW9uKHQpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJUYXJnZXQ6IC5yZXBlYXQgaXMgbm93IC50ZXh0dXJlLnJlcGVhdC4iKSx0aGlzLnRleHR1cmUucmVwZWF0PXR9fSxmb3JtYXQ6e2dldDpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyVGFyZ2V0OiAuZm9ybWF0IGlzIG5vdyAudGV4dHVyZS5mb3JtYXQuIiksdGhpcy50ZXh0dXJlLmZvcm1hdH0sc2V0OmZ1bmN0aW9uKHQpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJUYXJnZXQ6IC5mb3JtYXQgaXMgbm93IC50ZXh0dXJlLmZvcm1hdC4iKSx0aGlzLnRleHR1cmUuZm9ybWF0PXR9fSx0eXBlOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlclRhcmdldDogLnR5cGUgaXMgbm93IC50ZXh0dXJlLnR5cGUuIiksdGhpcy50ZXh0dXJlLnR5cGV9LHNldDpmdW5jdGlvbih0KXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyVGFyZ2V0OiAudHlwZSBpcyBub3cgLnRleHR1cmUudHlwZS4iKSx0aGlzLnRleHR1cmUudHlwZT10fX0sZ2VuZXJhdGVNaXBtYXBzOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlclRhcmdldDogLmdlbmVyYXRlTWlwbWFwcyBpcyBub3cgLnRleHR1cmUuZ2VuZXJhdGVNaXBtYXBzLiIpLHRoaXMudGV4dHVyZS5nZW5lcmF0ZU1pcG1hcHN9LHNldDpmdW5jdGlvbih0KXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyVGFyZ2V0OiAuZ2VuZXJhdGVNaXBtYXBzIGlzIG5vdyAudGV4dHVyZS5nZW5lcmF0ZU1pcG1hcHMuIiksdGhpcy50ZXh0dXJlLmdlbmVyYXRlTWlwbWFwcz10fX19KSxjbGFzcyBleHRlbmRzIFNsdHtjb25zdHJ1Y3Rvcih0KXtzdXBlcigpLHRoaXMudHlwZT0iQXVkaW8iLHRoaXMubGlzdGVuZXI9dCx0aGlzLmNvbnRleHQ9dC5jb250ZXh0LHRoaXMuZ2Fpbj10aGlzLmNvbnRleHQuY3JlYXRlR2FpbigpLHRoaXMuZ2Fpbi5jb25uZWN0KHQuZ2V0SW5wdXQoKSksdGhpcy5hdXRvcGxheT0hMSx0aGlzLmJ1ZmZlcj1udWxsLHRoaXMuZGV0dW5lPTAsdGhpcy5sb29wPSExLHRoaXMubG9vcFN0YXJ0PTAsdGhpcy5sb29wRW5kPTAsdGhpcy5vZmZzZXQ9MCx0aGlzLmR1cmF0aW9uPXZvaWQgMCx0aGlzLnBsYXliYWNrUmF0ZT0xLHRoaXMuaXNQbGF5aW5nPSExLHRoaXMuaGFzUGxheWJhY2tDb250cm9sPSEwLHRoaXMuc291cmNlPW51bGwsdGhpcy5zb3VyY2VUeXBlPSJlbXB0eSIsdGhpcy5fc3RhcnRlZEF0PTAsdGhpcy5fcHJvZ3Jlc3M9MCx0aGlzLl9jb25uZWN0ZWQ9ITEsdGhpcy5maWx0ZXJzPVtdfWdldE91dHB1dCgpe3JldHVybiB0aGlzLmdhaW59c2V0Tm9kZVNvdXJjZSh0KXtyZXR1cm4gdGhpcy5oYXNQbGF5YmFja0NvbnRyb2w9ITEsdGhpcy5zb3VyY2VUeXBlPSJhdWRpb05vZGUiLHRoaXMuc291cmNlPXQsdGhpcy5jb25uZWN0KCksdGhpc31zZXRNZWRpYUVsZW1lbnRTb3VyY2UodCl7cmV0dXJuIHRoaXMuaGFzUGxheWJhY2tDb250cm9sPSExLHRoaXMuc291cmNlVHlwZT0ibWVkaWFOb2RlIix0aGlzLnNvdXJjZT10aGlzLmNvbnRleHQuY3JlYXRlTWVkaWFFbGVtZW50U291cmNlKHQpLHRoaXMuY29ubmVjdCgpLHRoaXN9c2V0TWVkaWFTdHJlYW1Tb3VyY2UodCl7cmV0dXJuIHRoaXMuaGFzUGxheWJhY2tDb250cm9sPSExLHRoaXMuc291cmNlVHlwZT0ibWVkaWFTdHJlYW1Ob2RlIix0aGlzLnNvdXJjZT10aGlzLmNvbnRleHQuY3JlYXRlTWVkaWFTdHJlYW1Tb3VyY2UodCksdGhpcy5jb25uZWN0KCksdGhpc31zZXRCdWZmZXIodCl7cmV0dXJuIHRoaXMuYnVmZmVyPXQsdGhpcy5zb3VyY2VUeXBlPSJidWZmZXIiLHRoaXMuYXV0b3BsYXkmJnRoaXMucGxheSgpLHRoaXN9cGxheSh0PTApe2lmKCEwPT09dGhpcy5pc1BsYXlpbmcpcmV0dXJuIHZvaWQgY29uc29sZS53YXJuKCJUSFJFRS5BdWRpbzogQXVkaW8gaXMgYWxyZWFkeSBwbGF5aW5nLiIpO2lmKCExPT09dGhpcy5oYXNQbGF5YmFja0NvbnRyb2wpcmV0dXJuIHZvaWQgY29uc29sZS53YXJuKCJUSFJFRS5BdWRpbzogdGhpcyBBdWRpbyBoYXMgbm8gcGxheWJhY2sgY29udHJvbC4iKTt0aGlzLl9zdGFydGVkQXQ9dGhpcy5jb250ZXh0LmN1cnJlbnRUaW1lK3Q7Y29uc3QgZT10aGlzLmNvbnRleHQuY3JlYXRlQnVmZmVyU291cmNlKCk7cmV0dXJuIGUuYnVmZmVyPXRoaXMuYnVmZmVyLGUubG9vcD10aGlzLmxvb3AsZS5sb29wU3RhcnQ9dGhpcy5sb29wU3RhcnQsZS5sb29wRW5kPXRoaXMubG9vcEVuZCxlLm9uZW5kZWQ9dGhpcy5vbkVuZGVkLmJpbmQodGhpcyksZS5zdGFydCh0aGlzLl9zdGFydGVkQXQsdGhpcy5fcHJvZ3Jlc3MrdGhpcy5vZmZzZXQsdGhpcy5kdXJhdGlvbiksdGhpcy5pc1BsYXlpbmc9ITAsdGhpcy5zb3VyY2U9ZSx0aGlzLnNldERldHVuZSh0aGlzLmRldHVuZSksdGhpcy5zZXRQbGF5YmFja1JhdGUodGhpcy5wbGF5YmFja1JhdGUpLHRoaXMuY29ubmVjdCgpfXBhdXNlKCl7aWYoITEhPT10aGlzLmhhc1BsYXliYWNrQ29udHJvbClyZXR1cm4hMD09PXRoaXMuaXNQbGF5aW5nJiYodGhpcy5fcHJvZ3Jlc3MrPU1hdGgubWF4KHRoaXMuY29udGV4dC5jdXJyZW50VGltZS10aGlzLl9zdGFydGVkQXQsMCkqdGhpcy5wbGF5YmFja1JhdGUsITA9PT10aGlzLmxvb3AmJih0aGlzLl9wcm9ncmVzcz10aGlzLl9wcm9ncmVzcyUodGhpcy5kdXJhdGlvbnx8dGhpcy5idWZmZXIuZHVyYXRpb24pKSx0aGlzLnNvdXJjZS5zdG9wKCksdGhpcy5zb3VyY2Uub25lbmRlZD1udWxsLHRoaXMuaXNQbGF5aW5nPSExKSx0aGlzO2NvbnNvbGUud2FybigiVEhSRUUuQXVkaW86IHRoaXMgQXVkaW8gaGFzIG5vIHBsYXliYWNrIGNvbnRyb2wuIil9c3RvcCgpe2lmKCExIT09dGhpcy5oYXNQbGF5YmFja0NvbnRyb2wpcmV0dXJuIHRoaXMuX3Byb2dyZXNzPTAsdGhpcy5zb3VyY2Uuc3RvcCgpLHRoaXMuc291cmNlLm9uZW5kZWQ9bnVsbCx0aGlzLmlzUGxheWluZz0hMSx0aGlzO2NvbnNvbGUud2FybigiVEhSRUUuQXVkaW86IHRoaXMgQXVkaW8gaGFzIG5vIHBsYXliYWNrIGNvbnRyb2wuIil9Y29ubmVjdCgpe2lmKHRoaXMuZmlsdGVycy5sZW5ndGg+MCl7dGhpcy5zb3VyY2UuY29ubmVjdCh0aGlzLmZpbHRlcnNbMF0pO2ZvcihsZXQgdD0xLGU9dGhpcy5maWx0ZXJzLmxlbmd0aDt0PGU7dCsrKXRoaXMuZmlsdGVyc1t0LTFdLmNvbm5lY3QodGhpcy5maWx0ZXJzW3RdKTt0aGlzLmZpbHRlcnNbdGhpcy5maWx0ZXJzLmxlbmd0aC0xXS5jb25uZWN0KHRoaXMuZ2V0T3V0cHV0KCkpfWVsc2UgdGhpcy5zb3VyY2UuY29ubmVjdCh0aGlzLmdldE91dHB1dCgpKTtyZXR1cm4gdGhpcy5fY29ubmVjdGVkPSEwLHRoaXN9ZGlzY29ubmVjdCgpe2lmKHRoaXMuZmlsdGVycy5sZW5ndGg+MCl7dGhpcy5zb3VyY2UuZGlzY29ubmVjdCh0aGlzLmZpbHRlcnNbMF0pO2ZvcihsZXQgdD0xLGU9dGhpcy5maWx0ZXJzLmxlbmd0aDt0PGU7dCsrKXRoaXMuZmlsdGVyc1t0LTFdLmRpc2Nvbm5lY3QodGhpcy5maWx0ZXJzW3RdKTt0aGlzLmZpbHRlcnNbdGhpcy5maWx0ZXJzLmxlbmd0aC0xXS5kaXNjb25uZWN0KHRoaXMuZ2V0T3V0cHV0KCkpfWVsc2UgdGhpcy5zb3VyY2UuZGlzY29ubmVjdCh0aGlzLmdldE91dHB1dCgpKTtyZXR1cm4gdGhpcy5fY29ubmVjdGVkPSExLHRoaXN9Z2V0RmlsdGVycygpe3JldHVybiB0aGlzLmZpbHRlcnN9c2V0RmlsdGVycyh0KXtyZXR1cm4gdHx8KHQ9W10pLCEwPT09dGhpcy5fY29ubmVjdGVkPyh0aGlzLmRpc2Nvbm5lY3QoKSx0aGlzLmZpbHRlcnM9dC5zbGljZSgpLHRoaXMuY29ubmVjdCgpKTp0aGlzLmZpbHRlcnM9dC5zbGljZSgpLHRoaXN9c2V0RGV0dW5lKHQpe2lmKHRoaXMuZGV0dW5lPXQsdm9pZCAwIT09dGhpcy5zb3VyY2UuZGV0dW5lKXJldHVybiEwPT09dGhpcy5pc1BsYXlpbmcmJnRoaXMuc291cmNlLmRldHVuZS5zZXRUYXJnZXRBdFRpbWUodGhpcy5kZXR1bmUsdGhpcy5jb250ZXh0LmN1cnJlbnRUaW1lLC4wMSksdGhpc31nZXREZXR1bmUoKXtyZXR1cm4gdGhpcy5kZXR1bmV9Z2V0RmlsdGVyKCl7cmV0dXJuIHRoaXMuZ2V0RmlsdGVycygpWzBdfXNldEZpbHRlcih0KXtyZXR1cm4gdGhpcy5zZXRGaWx0ZXJzKHQ/W3RdOltdKX1zZXRQbGF5YmFja1JhdGUodCl7aWYoITEhPT10aGlzLmhhc1BsYXliYWNrQ29udHJvbClyZXR1cm4gdGhpcy5wbGF5YmFja1JhdGU9dCwhMD09PXRoaXMuaXNQbGF5aW5nJiZ0aGlzLnNvdXJjZS5wbGF5YmFja1JhdGUuc2V0VGFyZ2V0QXRUaW1lKHRoaXMucGxheWJhY2tSYXRlLHRoaXMuY29udGV4dC5jdXJyZW50VGltZSwuMDEpLHRoaXM7Y29uc29sZS53YXJuKCJUSFJFRS5BdWRpbzogdGhpcyBBdWRpbyBoYXMgbm8gcGxheWJhY2sgY29udHJvbC4iKX1nZXRQbGF5YmFja1JhdGUoKXtyZXR1cm4gdGhpcy5wbGF5YmFja1JhdGV9b25FbmRlZCgpe3RoaXMuaXNQbGF5aW5nPSExfWdldExvb3AoKXtyZXR1cm4hMT09PXRoaXMuaGFzUGxheWJhY2tDb250cm9sPyhjb25zb2xlLndhcm4oIlRIUkVFLkF1ZGlvOiB0aGlzIEF1ZGlvIGhhcyBubyBwbGF5YmFjayBjb250cm9sLiIpLCExKTp0aGlzLmxvb3B9c2V0TG9vcCh0KXtpZighMSE9PXRoaXMuaGFzUGxheWJhY2tDb250cm9sKXJldHVybiB0aGlzLmxvb3A9dCwhMD09PXRoaXMuaXNQbGF5aW5nJiYodGhpcy5zb3VyY2UubG9vcD10aGlzLmxvb3ApLHRoaXM7Y29uc29sZS53YXJuKCJUSFJFRS5BdWRpbzogdGhpcyBBdWRpbyBoYXMgbm8gcGxheWJhY2sgY29udHJvbC4iKX1zZXRMb29wU3RhcnQodCl7cmV0dXJuIHRoaXMubG9vcFN0YXJ0PXQsdGhpc31zZXRMb29wRW5kKHQpe3JldHVybiB0aGlzLmxvb3BFbmQ9dCx0aGlzfWdldFZvbHVtZSgpe3JldHVybiB0aGlzLmdhaW4uZ2Fpbi52YWx1ZX1zZXRWb2x1bWUodCl7cmV0dXJuIHRoaXMuZ2Fpbi5nYWluLnNldFRhcmdldEF0VGltZSh0LHRoaXMuY29udGV4dC5jdXJyZW50VGltZSwuMDEpLHRoaXN9fS5wcm90b3R5cGUubG9hZD1mdW5jdGlvbih0KXtjb25zb2xlLndhcm4oIlRIUkVFLkF1ZGlvOiAubG9hZCBoYXMgYmVlbiBkZXByZWNhdGVkLiBVc2UgVEhSRUUuQXVkaW9Mb2FkZXIgaW5zdGVhZC4iKTtjb25zdCBlPXRoaXM7cmV0dXJuKG5ldyB1Z3QpLmxvYWQodCwoZnVuY3Rpb24odCl7ZS5zZXRCdWZmZXIodCl9KSksdGhpc30sRmN0LnByb3RvdHlwZS51cGRhdGVDdWJlTWFwPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuQ3ViZUNhbWVyYTogLnVwZGF0ZUN1YmVNYXAoKSBpcyBub3cgLnVwZGF0ZSgpLiIpLHRoaXMudXBkYXRlKHQsZSl9LEZjdC5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24odCxlLG4sbyl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuQ3ViZUNhbWVyYTogLmNsZWFyKCkgaXMgbm93IC5yZW5kZXJUYXJnZXQuY2xlYXIoKS4iKSx0aGlzLnJlbmRlclRhcmdldC5jbGVhcih0LGUsbixvKX0seXN0LmNyb3NzT3JpZ2luPXZvaWQgMCx5c3QubG9hZFRleHR1cmU9ZnVuY3Rpb24odCxlLG4sbyl7Y29uc29sZS53YXJuKCJUSFJFRS5JbWFnZVV0aWxzLmxvYWRUZXh0dXJlIGhhcyBiZWVuIGRlcHJlY2F0ZWQuIFVzZSBUSFJFRS5UZXh0dXJlTG9hZGVyKCkgaW5zdGVhZC4iKTtjb25zdCBpPW5ldyBYdXQ7aS5zZXRDcm9zc09yaWdpbih0aGlzLmNyb3NzT3JpZ2luKTtjb25zdCBhPWkubG9hZCh0LG4sdm9pZCAwLG8pO3JldHVybiBlJiYoYS5tYXBwaW5nPWUpLGF9LHlzdC5sb2FkVGV4dHVyZUN1YmU9ZnVuY3Rpb24odCxlLG4sbyl7Y29uc29sZS53YXJuKCJUSFJFRS5JbWFnZVV0aWxzLmxvYWRUZXh0dXJlQ3ViZSBoYXMgYmVlbiBkZXByZWNhdGVkLiBVc2UgVEhSRUUuQ3ViZVRleHR1cmVMb2FkZXIoKSBpbnN0ZWFkLiIpO2NvbnN0IGk9bmV3IFp1dDtpLnNldENyb3NzT3JpZ2luKHRoaXMuY3Jvc3NPcmlnaW4pO2NvbnN0IGE9aS5sb2FkKHQsbix2b2lkIDAsbyk7cmV0dXJuIGUmJihhLm1hcHBpbmc9ZSksYX0seXN0LmxvYWRDb21wcmVzc2VkVGV4dHVyZT1mdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLkltYWdlVXRpbHMubG9hZENvbXByZXNzZWRUZXh0dXJlIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBUSFJFRS5ERFNMb2FkZXIgaW5zdGVhZC4iKX0seXN0LmxvYWRDb21wcmVzc2VkVGV4dHVyZUN1YmU9ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5JbWFnZVV0aWxzLmxvYWRDb21wcmVzc2VkVGV4dHVyZUN1YmUgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIFRIUkVFLkREU0xvYWRlciBpbnN0ZWFkLiIpfSwidW5kZWZpbmVkIiE9dHlwZW9mIF9fVEhSRUVfREVWVE9PTFNfXyYmX19USFJFRV9ERVZUT09MU19fLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJyZWdpc3RlciIse2RldGFpbDp7cmV2aXNpb246IjEzMSJ9fSkpLCJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93JiYod2luZG93Ll9fVEhSRUVfXz9jb25zb2xlLndhcm4oIldBUk5JTkc6IE11bHRpcGxlIGluc3RhbmNlcyBvZiBUaHJlZS5qcyBiZWluZyBpbXBvcnRlZC4iKTp3aW5kb3cuX19USFJFRV9fPSIxMzEiKSwoZnVuY3Rpb24odCl7dFt0LkNJUkNMRT0wXT0iQ0lSQ0xFIix0W3QuTElORT0xXT0iTElORSIsdFt0LlRSSUFOR0xFPTJdPSJUUklBTkdMRSIsdFt0LlRSQVBFWk9JRD0zXT0iVFJBUEVaT0lEIn0pKE5ndHx8KE5ndD17fSkpO2NsYXNzIExndHtjb25zdHJ1Y3Rvcih0LGUsbixvKXt0aGlzLmNvb3JkaW5hdG9yPWUsdGhpcy5zY2VuZT1uZXcgRm10LHRoaXMuYmFja2dyb3VuZENvbG9yPSIjZmZmIixDcnQoKSYmdCBpbnN0YW5jZW9mIE9mZnNjcmVlbkNhbnZhcyYmKHQuc3R5bGU9dC5zdHlsZXx8e30pLG8mJnQuYWRkRXZlbnRMaXN0ZW5lcigid2ViZ2xjb250ZXh0bG9zdCIsbyksdGhpcy5yZW5kZXJlcj1uZXcgSG10KHtjYW52YXM6dCxjb250ZXh0OnQuZ2V0Q29udGV4dCgid2ViZ2wyIix7YW50aWFsaWFzOiEwLHByZWNpc2lvbjoiaGlnaHAiLGFscGhhOiEwfSl9KSx0aGlzLnJlbmRlcmVyLnNldFBpeGVsUmF0aW8obil9b25SZXNpemUodCl7dGhpcy5yZW5kZXJlci5zZXRTaXplKHQud2lkdGgsdC5oZWlnaHQpfWRlc3Ryb3lPYmplY3QodCl7Y29uc3QgZT10Lm9iajNkO2lmKHRoaXMuc2NlbmUucmVtb3ZlKGUpLGUgaW5zdGFuY2VvZiBTY3Qpe2UuZ2VvbWV0cnkuZGlzcG9zZSgpO2NvbnN0IHQ9QXJyYXkuaXNBcnJheShlLm1hdGVyaWFsKT9lLm1hdGVyaWFsOltlLm1hdGVyaWFsXTtmb3IoY29uc3QgZSBvZiB0KWUuZGlzcG9zZSgpfX1zZXRVc2VEYXJrTW9kZSh0KXt0aGlzLmJhY2tncm91bmRDb2xvcj10PyIjMzAzMDMwIjoiI2ZmZiJ9Y3JlYXRlT3JVcGRhdGVMaW5lT2JqZWN0KHQsZSxuKXt2YXIgbztpZighdCYmIW4udmlzaWJsZSlyZXR1cm4gbnVsbDtjb25zdHt2aXNpYmxlOmksd2lkdGg6YX09bjtpZighdCl7Y29uc3QgdD1UZ3QodGhpcy5iYWNrZ3JvdW5kQ29sb3Isbi5jb2xvcixudWxsIT09KG89bi5vcGFjaXR5KSYmdm9pZCAwIT09bz9vOjEpLHI9bmV3IGRjdCxzPW5ldyBmZnQoe2NvbG9yOnR9KSxsPW5ldyBTY3QocixzKTtyZXR1cm4gcy52aXNpYmxlPWksSGd0KHIsZSxhKSx0aGlzLnNjZW5lLmFkZChsKSx7dHlwZTpOZ3QuTElORSxkYXRhOmUsb2JqM2Q6bCx3aWR0aDphfX1jb25zdHtkYXRhOnIsb2JqM2Q6cyx3aWR0aDpsfT10O3JldHVybiBGZ3QodGhpcy5iYWNrZ3JvdW5kQ29sb3IscywodD0+KGE9PT1sJiZyJiZNcnQocixlKXx8SGd0KHQsZSxhKSx0KSksbik/e3R5cGU6Tmd0LkxJTkUsZGF0YTplLG9iajNkOnMsd2lkdGg6YX06dH1jcmVhdGVNZXNoKHQsZSl7aWYoIWUudmlzaWJsZSlyZXR1cm4gbnVsbDtjb25zdHt2aXNpYmxlOm4sY29sb3I6byxvcGFjaXR5Oml9PWUsYT1UZ3QodGhpcy5iYWNrZ3JvdW5kQ29sb3IsbyxudWxsIT1pP2k6MSkscj1uZXcgWGx0KHtjb2xvcjphLHZpc2libGU6bn0pO3JldHVybiBuZXcgU2N0KHQscil9Y3JlYXRlT3JVcGRhdGVUcmlhbmdsZU9iamVjdCh0LGUsbil7Y29uc3R7c2l6ZTpvfT1uLGk9bypNYXRoLnNxcnQoMykvMixhPW5ldyBGbG9hdDMyQXJyYXkoW2UueC1vLzIsZS55LWkvMyxlLngrby8yLGUueS1pLzMsZS54LGUueSsyKmkvM10pO2lmKCF0KXtjb25zdCB0PW5ldyBkY3Q7SWd0KHQsYSk7Y29uc3Qgbz10aGlzLmNyZWF0ZU1lc2godCxuKTtyZXR1cm4gbnVsbD09PW8/bnVsbDoodGhpcy5zY2VuZS5hZGQobykse3R5cGU6Tmd0LlRSSUFOR0xFLGRhdGE6ZSxvYmozZDpvfSl9cmV0dXJuIEZndCh0aGlzLmJhY2tncm91bmRDb2xvcix0Lm9iajNkLCh0PT4oSWd0KHQsYSksdCkpLG4pP3t0eXBlOk5ndC5UUklBTkdMRSxkYXRhOmUsb2JqM2Q6dC5vYmozZH06dH1jcmVhdGVPclVwZGF0ZUNpcmNsZU9iamVjdCh0LGUsbil7Y29uc3R7cmFkaXVzOm99PW4saT1uZXcgRGZ0KG4ucmFkaXVzKTtpZighdCl7Y29uc3QgdD10aGlzLmNyZWF0ZU1lc2goaSxuKTtyZXR1cm4gbnVsbD09PXQ/bnVsbDoodC5wb3NpdGlvbi5zZXQoZS54LGUueSwwKSx0aGlzLnNjZW5lLmFkZCh0KSx7dHlwZTpOZ3QuQ0lSQ0xFLGRhdGE6e2xvYzplLHJhZGl1czpvfSxvYmozZDp0fSl9cmV0dXJuIEZndCh0aGlzLmJhY2tncm91bmRDb2xvcix0Lm9iajNkLCgoKT0+aSksbik/KHQub2JqM2QucG9zaXRpb24uc2V0KGUueCxlLnksMCkse3R5cGU6Tmd0LkNJUkNMRSxkYXRhOntsb2M6ZSxyYWRpdXM6b30sb2JqM2Q6dC5vYmozZH0pOnR9Y3JlYXRlT3JVcGRhdGVUcmFwZXpvaWRPYmplY3QodCxlLG4sbyl7aWYoZS55IT09bi55KXRocm93IG5ldyBSYW5nZUVycm9yKCJJbnB1dCBlcnJvcjogc3RhcnQueSAhPSBlbmQueS4iKTtjb25zdHthbHRpdHVkZTppfT1vLGE9Mi9NYXRoLnNxcnQoMykqaSxyPW5ldyBRdXQoW25ldyBnc3QoZS54LWEvMixlLnktaS8yKSxuZXcgZ3N0KGUueCxlLnkraS8yKSxuZXcgZ3N0KG4ueCxuLnkraS8yKSxuZXcgZ3N0KG4ueCthLzIsbi55LWkvMildKTtyLmF1dG9DbG9zZT0hMDtjb25zdCBzPW5ldyBQdXQocik7aWYoIXQpe2NvbnN0IHQ9dGhpcy5jcmVhdGVNZXNoKHMsbyk7cmV0dXJuIG51bGw9PT10P251bGw6KHRoaXMuc2NlbmUuYWRkKHQpLHt0eXBlOk5ndC5UUkFQRVpPSUQsZGF0YTpbZSxuXSxvYmozZDp0fSl9cmV0dXJuIEZndCh0aGlzLmJhY2tncm91bmRDb2xvcix0Lm9iajNkLCgoKT0+cyksbyk/e3R5cGU6Tmd0LlRSQVBFWk9JRCxkYXRhOltlLG5dLG9iajNkOnQub2JqM2R9OnR9Zmx1c2goKXt0aGlzLnJlbmRlcmVyLnJlbmRlcih0aGlzLnNjZW5lLHRoaXMuY29vcmRpbmF0b3IuZ2V0Q2FtZXJhKCkpfWRpc3Bvc2UoKXt0aGlzLnJlbmRlcmVyLmRpc3Bvc2UoKX19Y2xhc3MgQmd0e2NvbnN0cnVjdG9yKHQsZSl7dGhpcy5yZW5kZXJDYWNoZT10LHRoaXMucmVuZGVyZXI9ZX1zZXRMaW5lKHQsZSxuKXtjb25zdCBvPXRoaXMucmVuZGVyZXIuY3JlYXRlT3JVcGRhdGVMaW5lT2JqZWN0KHRoaXMucmVuZGVyQ2FjaGUuZ2V0RnJvbVByZXZpb3VzRnJhbWUodCksZSxuKTtvJiZ0aGlzLnJlbmRlckNhY2hlLnNldFRvQ3VycmVudEZyYW1lKHQsbyl9c2V0VHJpYW5nbGUodCxlLG4pe2NvbnN0IG89dGhpcy5yZW5kZXJlci5jcmVhdGVPclVwZGF0ZVRyaWFuZ2xlT2JqZWN0KHRoaXMucmVuZGVyQ2FjaGUuZ2V0RnJvbVByZXZpb3VzRnJhbWUodCksZSxuKTtvJiZ0aGlzLnJlbmRlckNhY2hlLnNldFRvQ3VycmVudEZyYW1lKHQsbyl9c2V0Q2lyY2xlKHQsZSxuKXtjb25zdCBvPXRoaXMucmVuZGVyZXIuY3JlYXRlT3JVcGRhdGVDaXJjbGVPYmplY3QodGhpcy5yZW5kZXJDYWNoZS5nZXRGcm9tUHJldmlvdXNGcmFtZSh0KSxlLG4pO28mJnRoaXMucmVuZGVyQ2FjaGUuc2V0VG9DdXJyZW50RnJhbWUodCxvKX1zZXRUcmFwZXpvaWQodCxlLG4sbyl7Y29uc3QgaT10aGlzLnJlbmRlcmVyLmNyZWF0ZU9yVXBkYXRlVHJhcGV6b2lkT2JqZWN0KHRoaXMucmVuZGVyQ2FjaGUuZ2V0RnJvbVByZXZpb3VzRnJhbWUodCksZSxuLG8pO2kmJnRoaXMucmVuZGVyQ2FjaGUuc2V0VG9DdXJyZW50RnJhbWUodCxpKX19Y2xhc3MgVmd0e2NvbnN0cnVjdG9yKCl7dGhpcy5wcmV2RnJhbWVDYWNoZT1uZXcgTWFwLHRoaXMuY3VyckZyYW1lQ2FjaGU9bmV3IE1hcH1nZXRGcm9tUHJldmlvdXNGcmFtZSh0KXtjb25zdCBlPXRoaXMucHJldkZyYW1lQ2FjaGUuZ2V0KHQpO3JldHVybiBudWxsIT1lP2U6bnVsbH1zZXRUb0N1cnJlbnRGcmFtZSh0LGUpe3RoaXMuY3VyckZyYW1lQ2FjaGUuc2V0KHQsZSl9ZmluYWxpemVGcmFtZUFuZEdldFJlbW92ZWQoKXtjb25zdCB0PVtdO2Zvcihjb25zdFtlLG5db2YgdGhpcy5wcmV2RnJhbWVDYWNoZS5lbnRyaWVzKCkpdGhpcy5jdXJyRnJhbWVDYWNoZS5oYXMoZSl8fHQucHVzaChuKTtyZXR1cm4gdGhpcy5wcmV2RnJhbWVDYWNoZT10aGlzLmN1cnJGcmFtZUNhY2hlLHRoaXMuY3VyckZyYW1lQ2FjaGU9bmV3IE1hcCx0fX0hKGZ1bmN0aW9uKHQpe3RbdC5OVU1CRVI9MF09Ik5VTUJFUiIsdFt0Lk5BTj0xXT0iTkFOIn0pKHpndHx8KHpndD17fSkpO2NsYXNzIGpndCBleHRlbmRzIGNsYXNze2NvbnN0cnVjdG9yKHQpe3RoaXMucmF3U2VyaWVzRGF0YT1bXSx0aGlzLnNlcmllcz1bXSx0aGlzLnBhaW50RGlydHk9ITAsdGhpcy5yZW5kZXJDYWNoZT1uZXcgVmd0LHRoaXMuY29vcmRpbmF0ZUlkZW50aWZpZXI9bnVsbCx0aGlzLmxheW91dD17eDowLHdpZHRoOjEseTowLGhlaWdodDoxfSx0aGlzLmdldE1ldGFkYXRhTWFwSW1wbD10LmdldE1ldGFkYXRhTWFwLHRoaXMuY29vcmRpbmF0b3I9dC5jb29yZGluYXRvcix0aGlzLnJlbmRlcmVyPXQucmVuZGVyZXIsdGhpcy5wYWludEJydXNoPW5ldyBCZ3QodGhpcy5yZW5kZXJDYWNoZSx0aGlzLnJlbmRlcmVyKX1zZXRMYXlvdXRSZWN0KHQpe3RoaXMubGF5b3V0Lng9PT10LngmJnRoaXMubGF5b3V0LndpZHRoPT09dC53aWR0aCYmdGhpcy5sYXlvdXQueT09PXQueSYmdGhpcy5sYXlvdXQuaGVpZ2h0PT09dC5oZWlnaHR8fCh0aGlzLnBhaW50RGlydHk9ITApLHRoaXMubGF5b3V0PXR9Z2V0TGF5b3V0UmVjdCgpe3JldHVybiB0aGlzLmxheW91dH1nZXRNZXRhZGF0YU1hcCgpe3JldHVybiB0aGlzLmdldE1ldGFkYXRhTWFwSW1wbCgpfW1hcmtBc1BhaW50RGlydHkoKXt0aGlzLnBhaW50RGlydHk9ITB9cmVuZGVyKCl7aWYodGhpcy50cmFuc2Zvcm1Db29yZGluYXRlc0lmU3RhbGUoKSx0aGlzLnBhaW50RGlydHkpe3RoaXMucmVkcmF3KCk7Zm9yKGNvbnN0IHQgb2YgdGhpcy5yZW5kZXJDYWNoZS5maW5hbGl6ZUZyYW1lQW5kR2V0UmVtb3ZlZCgpKXRoaXMucmVuZGVyZXIuZGVzdHJveU9iamVjdCh0KTt0aGlzLnBhaW50RGlydHk9ITF9fWlzQ29vcmRpbmF0ZVVwZGF0ZWQoKXtyZXR1cm4gdGhpcy5jb29yZGluYXRvci5nZXRVcGRhdGVJZGVudGlmaWVyKCkhPT10aGlzLmNvb3JkaW5hdGVJZGVudGlmaWVyfWNsZWFyQ29vcmRpbmF0ZUlkZW50aWZpZXIoKXt0aGlzLmNvb3JkaW5hdGVJZGVudGlmaWVyPW51bGx9c2V0RGF0YSh0KXt0aGlzLmNsZWFyQ29vcmRpbmF0ZUlkZW50aWZpZXIoKSx0aGlzLnJhd1Nlcmllc0RhdGE9dH10cmFuc2Zvcm1Db29yZGluYXRlc0lmU3RhbGUoKXtpZighdGhpcy5pc0Nvb3JkaW5hdGVVcGRhdGVkKCkpcmV0dXJuO2NvbnN0IHQ9dGhpcy5nZXRMYXlvdXRSZWN0KCk7dGhpcy5zZXJpZXM9bmV3IEFycmF5KHRoaXMucmF3U2VyaWVzRGF0YS5sZW5ndGgpO2ZvcihsZXQgZT0wO2U8dGhpcy5yYXdTZXJpZXNEYXRhLmxlbmd0aDtlKyspe2NvbnN0IG49dGhpcy5yYXdTZXJpZXNEYXRhW2VdO3RoaXMuc2VyaWVzW2VdPXtpZDpuLmlkLHBvbHlsaW5lOm5ldyBGbG9hdDMyQXJyYXkoMipuLnBvaW50cy5sZW5ndGgpfTtmb3IobGV0IG89MDtvPG4ucG9pbnRzLmxlbmd0aDtvKyspe2NvbnN0W2ksYV09dGhpcy5jb29yZGluYXRvci50cmFuc2Zvcm1EYXRhVG9VaUNvb3JkKHQsW24ucG9pbnRzW29dLngsbi5wb2ludHNbb10ueV0pO3RoaXMuc2VyaWVzW2VdLnBvbHlsaW5lWzIqb109aSx0aGlzLnNlcmllc1tlXS5wb2x5bGluZVsyKm8rMV09YX19dGhpcy5jb29yZGluYXRlSWRlbnRpZmllcj10aGlzLmNvb3JkaW5hdG9yLmdldFVwZGF0ZUlkZW50aWZpZXIoKSx0aGlzLm1hcmtBc1BhaW50RGlydHkoKX19e3JlY29yZFBhcnRpdGlvbih0LGUsbil7cmV0dXJuIHQ/e3R5cGU6emd0Lk5VTUJFUixwb2x5bGluZTplfTp7dHlwZTp6Z3QuTkFOLHBvbHlsaW5lOmUubWFwKCgodCxlKT0+aXNOYU4odCk/ZSUyPT0wP24ueDpuLnk6dCkpfX1wYXJ0aXRpb25Qb2x5bGluZSh0KXtjb25zdCBlPVtdO2xldCBuPTAsbz0hMTtjb25zdCBpPXRoaXMuY29vcmRpbmF0b3IudHJhbnNmb3JtRGF0YVRvVWlDb29yZCh0aGlzLmdldExheW91dFJlY3QoKSxbMCwwXSksYT17eDppWzBdLHk6aVsxXX07bGV0IHI9bnVsbDtmb3IobGV0IGk9MDtpPHQubGVuZ3RoO2krPTIpe2NvbnN0IGE9dFtpXSxzPXRbaSsxXSxsPWlzTmFOKGEpfHxpc05hTihzKTtsIT09byYmbiE9PWkmJihlLnB1c2godGhpcy5yZWNvcmRQYXJ0aXRpb24oIW8sdC5zbGljZShuLGkpLG51bGw9PT1yP3t4OmEseTpzfTpyKSksbj1pKSxsfHwocj17eDphLHk6c30pLG89bH1yZXR1cm4gbiE9PXQubGVuZ3RoLTEmJmUucHVzaCh0aGlzLnJlY29yZFBhcnRpdGlvbighbyx0LnNsaWNlKG4sdC5sZW5ndGgpLG51bGwhPXI/cjphKSksZX1yZWRyYXcoKXt2YXIgdCxlLG47Zm9yKGNvbnN0IG8gb2YgdGhpcy5zZXJpZXMpe2NvbnN0IGk9dGhpcy5nZXRNZXRhZGF0YU1hcCgpW28uaWRdO2lmKCFpKWNvbnRpbnVlO2lmKG8ucG9seWxpbmUubGVuZ3RoJTIhPTApdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgaGF2ZSBvZGQgbGVuZ3RoLWVkIHBvbHlsaW5lOiAke28ucG9seWxpbmUubGVuZ3RofWApO2NvbnN0IGE9dGhpcy5wYXJ0aXRpb25Qb2x5bGluZShvLnBvbHlsaW5lKTtmb3IoY29uc3Rbcix7dHlwZTpzLHBvbHlsaW5lOmx9XW9mIGEuZW50cmllcygpKWlmKHM9PT16Z3QuTlVNQkVSKTI9PT1sLmxlbmd0aD90aGlzLnBhaW50QnJ1c2guc2V0Q2lyY2xlKEpTT04uc3RyaW5naWZ5KFsiY2lyY2xlIixvLmlkLHJdKSx7eDpsWzBdLHk6bFsxXX0se2NvbG9yOmkuY29sb3IsdmlzaWJsZTppLnZpc2libGUsb3BhY2l0eTpudWxsIT09KHQ9aS5vcGFjaXR5KSYmdm9pZCAwIT09dD90OjEscmFkaXVzOjR9KTp0aGlzLnBhaW50QnJ1c2guc2V0TGluZShKU09OLnN0cmluZ2lmeShbImxpbmUiLG8uaWQscl0pLGwse2NvbG9yOmkuY29sb3IsdmlzaWJsZTppLnZpc2libGUsb3BhY2l0eTpudWxsIT09KGU9aS5vcGFjaXR5KSYmdm9pZCAwIT09ZT9lOjEsd2lkdGg6Mn0pO2Vsc2UgaWYoIWkuYXV4KWZvcihsZXQgdD0wO3Q8bC5sZW5ndGg7dCs9Mil0aGlzLnBhaW50QnJ1c2guc2V0VHJpYW5nbGUoSlNPTi5zdHJpbmdpZnkoWyJOYU4iLG8uaWQsbFt0XSxsW3QrMV1dKSx7eDpsW3RdLHk6bFt0KzFdfSx7Y29sb3I6aS5jb2xvcix2aXNpYmxlOmkudmlzaWJsZSxvcGFjaXR5Om51bGwhPT0obj1pLm9wYWNpdHkpJiZ2b2lkIDAhPT1uP246MSxzaXplOjEyfSl9fX1jbGFzcyBVZ3QgZXh0ZW5kcyB2cnR7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMuY2FtZXJhPW5ldyByZHQoMCwxZTMsMWUzLDAsMCwxMDApfWlzWUF4aXNQb2ludGVkRG93bigpe3JldHVybiExfXNldERvbUNvbnRhaW5lclJlY3QodCl7c3VwZXIuc2V0RG9tQ29udGFpbmVyUmVjdCh0KSx0aGlzLmNhbWVyYS5sZWZ0PXQueCx0aGlzLmNhbWVyYS5yaWdodD10LngrdC53aWR0aCx0aGlzLmNhbWVyYS50b3A9dC55K3QuaGVpZ2h0LHRoaXMuY2FtZXJhLmJvdHRvbT10LnksdGhpcy5jYW1lcmEudXBkYXRlUHJvamVjdGlvbk1hdHJpeCgpfWdldENhbWVyYSgpe3JldHVybiB0aGlzLmNhbWVyYX19Y29uc3QgV2d0PXQ9PnNlbGYucmVxdWVzdEFuaW1hdGlvbkZyYW1lKHQpO2NsYXNzIEdndHtjb25zdHJ1Y3Rvcih0KXtzd2l0Y2godGhpcy5tZXRhZGF0YU1hcD17fSx0aGlzLnNob3VsZFJlcGFpbnQ9ITEsdGhpcy5jYWxsYmFja3M9dC5jYWxsYmFja3MsdC50eXBlKXtjYXNlIGU2LlNWRzp0aGlzLmNvb3JkaW5hdG9yPW5ldyB2cnQsdGhpcy5yZW5kZXJlcj1uZXcgT3J0KHQuY29udGFpbmVyKTticmVhaztjYXNlIGU2LldFQkdMOntjb25zdCBlPW5ldyBVZ3Q7dGhpcy5jb29yZGluYXRvcj1lLHRoaXMucmVuZGVyZXI9bmV3IExndCh0LmNvbnRhaW5lcixlLHQuZGV2aWNlUGl4ZWxSYXRpbyx0LmNhbGxiYWNrcy5vbkNvbnRleHRMb3N0KTticmVha319dGhpcy5yZW5kZXJlci5zZXRVc2VEYXJrTW9kZSh0LnVzZURhcmtNb2RlKSx0aGlzLnNlcmllc0xpbmVWaWV3PW5ldyBqZ3Qoe3JlbmRlcmVyOnRoaXMucmVuZGVyZXIsY29vcmRpbmF0b3I6dGhpcy5jb29yZGluYXRvcixnZXRNZXRhZGF0YU1hcDooKT0+dGhpcy5tZXRhZGF0YU1hcH0pLHRoaXMucmVzaXplKHQuZG9tRGltZW5zaW9uKX1kaXNwb3NlKCl7fXNldFhTY2FsZVR5cGUodCl7dGhpcy5jb29yZGluYXRvci5zZXRYU2NhbGUoZ3J0KHQpKSx0aGlzLnNjaGVkdWxlUmVwYWludCgpfXNldFlTY2FsZVR5cGUodCl7dGhpcy5jb29yZGluYXRvci5zZXRZU2NhbGUoZ3J0KHQpKSx0aGlzLnNjaGVkdWxlUmVwYWludCgpfXJlc2l6ZSh0KXt0aGlzLmNvb3JkaW5hdG9yLnNldERvbUNvbnRhaW5lclJlY3QoT2JqZWN0LmFzc2lnbih7eDowLHk6MH0sdCkpLHRoaXMucmVuZGVyZXIub25SZXNpemUoT2JqZWN0LmFzc2lnbih7eDowLHk6MH0sdCkpLHRoaXMuc2VyaWVzTGluZVZpZXcuc2V0TGF5b3V0UmVjdChPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3g6MCx5OjB9KSksdGhpcy5zY2hlZHVsZVJlcGFpbnQoKX1zZXRNZXRhZGF0YSh0KXtsZXQgZT0hMTtPYmplY3QuZW50cmllcyh0KS5mb3JFYWNoKCgoW3Qsbl0pPT57Y29uc3Qgbz10aGlzLm1ldGFkYXRhTWFwW3RdO28mJm4uY29sb3I9PT1vLmNvbG9yJiZuLnZpc2libGU9PT1vLnZpc2libGUmJm4ub3BhY2l0eT09PW8ub3BhY2l0eXx8KGU9ITApLHRoaXMubWV0YWRhdGFNYXBbdF09bn0pKSxlJiZ0aGlzLnNlcmllc0xpbmVWaWV3Lm1hcmtBc1BhaW50RGlydHkoKSx0aGlzLnNjaGVkdWxlUmVwYWludCgpfXNldFZpZXdCb3godCl7dGhpcy5jb29yZGluYXRvci5zZXRWaWV3Qm94UmVjdCh7eDp0LnhbMF0sd2lkdGg6dC54WzFdLXQueFswXSx5OnQueVswXSxoZWlnaHQ6dC55WzFdLXQueVswXX0pLHRoaXMuc2NoZWR1bGVSZXBhaW50KCl9c2V0RGF0YSh0KXt0aGlzLnNlcmllc0xpbmVWaWV3LnNldERhdGEodCksdGhpcy5zY2hlZHVsZVJlcGFpbnQoKX1zZXRVc2VEYXJrTW9kZSh0KXt0aGlzLnJlbmRlcmVyLnNldFVzZURhcmtNb2RlKHQpLHRoaXMuc2VyaWVzTGluZVZpZXcubWFya0FzUGFpbnREaXJ0eSgpLHRoaXMuc2NoZWR1bGVSZXBhaW50KCl9c2NoZWR1bGVSZXBhaW50KCl7dGhpcy5zaG91bGRSZXBhaW50fHwodGhpcy5zaG91bGRSZXBhaW50PSEwLFdndCgoKCk9Pnt0aGlzLnJlcGFpbnQoKSx0aGlzLnNob3VsZFJlcGFpbnQ9ITF9KSkpfXJlcGFpbnQoKXt0aGlzLnNlcmllc0xpbmVWaWV3LnJlbmRlcigpLHRoaXMucmVuZGVyZXIuZmx1c2goKSx0aGlzLmNhbGxiYWNrcy5vbkRyYXdFbmQoKX19dmFyIFlndCxxZ3Q7ZnVuY3Rpb24gWmd0KHQpe2lmKHQuaW5jbHVkZXMoIi8iKSl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiV29ya2VyIGZhY3Rvcnkgb25seSBhbGxvd3MgZmlsZSBuYW1lIGFuZCBubyByZXNvdXJjZSBwYXRoLiIpO3JldHVybiBuZXcgV29ya2VyKHQpfSEoZnVuY3Rpb24odCl7dFt0LlNFUklFU19EQVRBX1VQREFURUQ9MF09IlNFUklFU19EQVRBX1VQREFURUQiLHRbdC5TRVJJRVNfTUVUQURBVEFfQ0hBTkdFRD0xXT0iU0VSSUVTX01FVEFEQVRBX0NIQU5HRUQiLHRbdC5TQ0FMRV9VUERBVEVEPTJdPSJTQ0FMRV9VUERBVEVEIix0W3QuVklFV19CT1hfVVBEQVRFRD0zXT0iVklFV19CT1hfVVBEQVRFRCIsdFt0LklOSVQ9NF09IklOSVQiLHRbdC5ET01fUkVTSVpFRD01XT0iRE9NX1JFU0laRUQiLHRbdC5EQVJLX01PREVfVVBEQVRFRD02XT0iREFSS19NT0RFX1VQREFURUQiLHRbdC5ESVNQT1NFRD03XT0iRElTUE9TRUQifSkoWWd0fHwoWWd0PXt9KSksKGZ1bmN0aW9uKHQpe3RbdC5PTl9SRURSQVdfRU5EPTBdPSJPTl9SRURSQVdfRU5EIix0W3QuT05fQ09OVEVYVF9MT1NUPTFdPSJPTl9DT05URVhUX0xPU1QifSkocWd0fHwocWd0PXt9KSk7Y2xhc3MgWGd0e2NvbnN0cnVjdG9yKHQpe2lmKHRoaXMuY2FsbGJhY2tzPXQuY2FsbGJhY2tzLHQudHlwZSE9PWU2LldFQkdMKXRocm93IG5ldyBSYW5nZUVycm9yKGBDYW5ub3QgdXNlIG5vbiBXRUJHTCByZW5kZXJlciBmb3IgdGhlIG9mZnNjcmVlbiBsaW5lIGNoYXJ0LiBSZWNlaXZlZCAke2U2W3QudHlwZV19IGApO2NvbnN0IGU9bmV3IE1lc3NhZ2VDaGFubmVsO2UucG9ydDEub25tZXNzYWdlPXQ9Pnt0aGlzLm9uTWVzc2FnZUZyb21Xb3JrZXIodC5kYXRhKX0sdGhpcy50eE1lc3NhZ2VQb3J0PWUucG9ydDE7Y29uc3Qgbj10LmNvbnRhaW5lci50cmFuc2ZlckNvbnRyb2xUb09mZnNjcmVlbigpO3RoaXMud29ya2VySW5zdGFuY2U9WGd0LndvcmtlclBvb2wuZ2V0TmV4dCgpO2NvbnN0IG89e3R5cGU6WWd0LklOSVQsY2FudmFzOm4sZGV2aWNlUGl4ZWxSYXRpbzp3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbyxkaW06dC5kb21EaW1lbnNpb24scmVuZGVyZXJUeXBlOnQudHlwZSx1c2VEYXJrTW9kZTp0LnVzZURhcmtNb2RlfTt0aGlzLndvcmtlckluc3RhbmNlLnBvc3RNZXNzYWdlKG8sW24sZS5wb3J0Ml0pfWRpc3Bvc2UoKXt0aGlzLnNlbmRNZXNzYWdlKHt0eXBlOllndC5ESVNQT1NFRH0pLHRoaXMud29ya2VySW5zdGFuY2UuZnJlZSgpLHRoaXMudHhNZXNzYWdlUG9ydC5jbG9zZSgpfXNldFhTY2FsZVR5cGUodCl7dGhpcy5zZW5kTWVzc2FnZSh7dHlwZTpZZ3QuU0NBTEVfVVBEQVRFRCxheGlzOiJ4IixzY2FsZVR5cGU6dH0pfXNldFlTY2FsZVR5cGUodCl7dGhpcy5zZW5kTWVzc2FnZSh7dHlwZTpZZ3QuU0NBTEVfVVBEQVRFRCxheGlzOiJ5IixzY2FsZVR5cGU6dH0pfXJlc2l6ZSh0KXt0aGlzLnNlbmRNZXNzYWdlKHt0eXBlOllndC5ET01fUkVTSVpFRCxkaW06dH0pfXNldE1ldGFkYXRhKHQpe3RoaXMuc2VuZE1lc3NhZ2Uoe3R5cGU6WWd0LlNFUklFU19NRVRBREFUQV9DSEFOR0VELG1ldGFkYXRhOnR9KX1zZXRWaWV3Qm94KHQpe3RoaXMuc2VuZE1lc3NhZ2Uoe3R5cGU6WWd0LlZJRVdfQk9YX1VQREFURUQsZXh0ZW50OnR9KX1zZXREYXRhKHQpe2NvbnN0IGU9KGZ1bmN0aW9uIG4odCl7Y29uc3QgZT10LnJlZHVjZSgoKHQsZSk9PnQrZS5wb2ludHMubGVuZ3RoKSwwKTtsZXQgbj0wO2NvbnN0IG89bmV3IEZsb2F0NjRBcnJheSgyKmUpLGk9W107Zm9yKGNvbnN0IGUgb2YgdCl7aS5wdXNoKHtpZDplLmlkLGxlbmd0aDplLnBvaW50cy5sZW5ndGh9KTtmb3IobGV0IHQ9MDt0PGUucG9pbnRzLmxlbmd0aDt0Kyspb1tuKytdPWUucG9pbnRzW3RdLngsb1tuKytdPWUucG9pbnRzW3RdLnl9cmV0dXJue2lkc0FuZExlbmd0aHM6aSxmbGF0dGVuZWRTZXJpZXM6by5idWZmZXJ9fSkodCk7dGhpcy5zZW5kTWVzc2FnZSh7dHlwZTpZZ3QuU0VSSUVTX0RBVEFfVVBEQVRFRCxjb21wYWN0RGF0YVNlcmllczplfSxbZS5mbGF0dGVuZWRTZXJpZXNdKX1zZXRVc2VEYXJrTW9kZSh0KXt0aGlzLnNlbmRNZXNzYWdlKHt0eXBlOllndC5EQVJLX01PREVfVVBEQVRFRCx1c2VEYXJrTW9kZTp0fSl9c2VuZE1lc3NhZ2UodCxlKXtlP3RoaXMudHhNZXNzYWdlUG9ydC5wb3N0TWVzc2FnZSh0LGUpOnRoaXMudHhNZXNzYWdlUG9ydC5wb3N0TWVzc2FnZSh0KX1vbk1lc3NhZ2VGcm9tV29ya2VyKHQpe3N3aXRjaCh0LnR5cGUpe2Nhc2UgcWd0Lk9OX1JFRFJBV19FTkQ6dGhpcy5jYWxsYmFja3Mub25EcmF3RW5kKCk7YnJlYWs7Y2FzZSBxZ3QuT05fQ09OVEVYVF9MT1NUOnRoaXMuY2FsbGJhY2tzLm9uQ29udGV4dExvc3QoKX19fWZ1bmN0aW9uIEtndCh0KXtzd2l0Y2godCl7Y2FzZSBlNi5TVkc6cmV0dXJuIGU2LlNWRztjYXNlIGU2LldFQkdMOnJldHVybihmdW5jdGlvbiBlKCl7cmV0dXJuIF9ydH0pKCk/ZTYuV0VCR0w6ZTYuU1ZHO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKGBVbmtub3duIHJlbmRlcmVyVHlwZTogJHt0fWApfX1mdW5jdGlvbiBKZ3QodCxlKXtyZXR1cm4ieCI9PT1lP1swLHQud2lkdGhdOlt0LmhlaWdodCwwXX1mdW5jdGlvbiBRZ3QodCxlKXtjb25zdCBuPU1hdGguZmxvb3IodC81MCk7cmV0dXJuIE1hdGgubWluKG4sZSl9ZnVuY3Rpb24gJGd0KHQsZSl7aWYoMSZ0JiYob2EoKSx2ZigwLCJsaW5lIiwyKSksMiZ0KXtjb25zdCB0PWUuJGltcGxpY2l0LG49emYoKTtjdSgiemVybyIsMD09PXQpLHltKCJ4MSIsbi5nZXREb21YKHQpKSgieDIiLG4uZ2V0RG9tWCh0KSkoInkyIixuLmRvbURpbS5oZWlnaHQpfX1mdW5jdGlvbiB0aHQodCxlKXtpZigxJnQmJihvYSgpLHZmKDAsImxpbmUiLDMpKSwyJnQpe2NvbnN0IHQ9ZS4kaW1wbGljaXQsbj16ZigpO2N1KCJ6ZXJvIiwwPT09dCkseW0oInkxIixuLmdldERvbVkodCkpKCJ4MiIsbi5kb21EaW0ud2lkdGgpKCJ5MiIsbi5nZXREb21ZKHQpKX19WGd0LndvcmtlclBvb2w9bmV3IGNsYXNze2NvbnN0cnVjdG9yKHQsZT0xMCxuPVpndCl7dGhpcy53b3JrZXJSZXNvdXJjZVBhdGg9dCx0aGlzLm1heFBvb2xTaXplPWUsdGhpcy53b3JrZXJGYWN0b3J5PW4sdGhpcy53b3JrZXJzPVtdfWdldE5leHQoKXtsZXQgdDtpZih0aGlzLndvcmtlcnMuZXZlcnkoKCh7YWN0aXZlQ291bnQ6dH0pPT50PjApKSYmdGhpcy53b3JrZXJzLmxlbmd0aDx0aGlzLm1heFBvb2xTaXplKXtjb25zdCBlPXRoaXMud29ya2VyRmFjdG9yeSh0aGlzLndvcmtlclJlc291cmNlUGF0aCk7dD17YWN0aXZlQ291bnQ6MCxwb3N0TWVzc2FnZToodCxuKT0+e2UucG9zdE1lc3NhZ2UodCxuKX0sZnJlZTooKT0+e3QuYWN0aXZlQ291bnQ9TWF0aC5tYXgodC5hY3RpdmVDb3VudC0xLDApfX0sdGhpcy53b3JrZXJzLnB1c2godCl9ZWxzZXtjb25zdCBlPXRoaXMud29ya2Vycy5tYXAoKCh7YWN0aXZlQ291bnQ6dH0pPT50KSksbj1lLmluZGV4T2YoTWF0aC5taW4oLi4uZSkpO3Q9dGhpcy53b3JrZXJzW25dfXJldHVybiB0LmFjdGl2ZUNvdW50KyssdH19KCJjaGFydF93b3JrZXIuanM/X2ZpbGVfaGFzaD01YTE3YmUwYSIpO2NsYXNzIGVodHtnZXREb21YKHQpe3JldHVybiB0aGlzLnhTY2FsZS5mb3J3YXJkKHRoaXMudmlld0V4dGVudC54LEpndCh0aGlzLmRvbURpbSwieCIpLHQpfWdldERvbVkodCl7cmV0dXJuIHRoaXMueVNjYWxlLmZvcndhcmQodGhpcy52aWV3RXh0ZW50LnksSmd0KHRoaXMuZG9tRGltLCJ5IiksdCl9Z2V0WFRpY2tzKCl7cmV0dXJuIHRoaXMueFNjYWxlLnRpY2tzKHRoaXMudmlld0V4dGVudC54LFFndCh0aGlzLmRvbURpbS53aWR0aCx0aGlzLnhHcmlkQ291bnQpKX1nZXRZVGlja3MoKXtyZXR1cm4gdGhpcy55U2NhbGUudGlja3ModGhpcy52aWV3RXh0ZW50LnksUWd0KHRoaXMuZG9tRGltLmhlaWdodCx0aGlzLnlHcmlkQ291bnQpKX19ZnVuY3Rpb24gbmh0KHQsZSxuLG8saSxhKXtsZXQgcjtzd2l0Y2godC5kZWx0YU1vZGUpe2Nhc2UgV2hlZWxFdmVudC5ET01fREVMVEFfUElYRUw6cj0xO2JyZWFrO2Nhc2UgV2hlZWxFdmVudC5ET01fREVMVEFfTElORTpyPTg7YnJlYWs7Y2FzZSBXaGVlbEV2ZW50LkRPTV9ERUxUQV9QQUdFOnI9MjA7YnJlYWs7ZGVmYXVsdDpyPTEsY29uc29sZS53YXJuKGBVbmtub3duIFdoZWVsRXZlbnQgZGVsdGFNb2RlOiAke3QuZGVsdGFNb2RlfS5gKX1jb25zdCBzPXQuZGVsdGFZKnIsbD1zPDA/TWF0aC5tYXgocypvLC0uOTUpOnMqbyx7d2lkdGg6YyxoZWlnaHQ6ZH09bixwPVtpLnJldmVyc2UoZS54LFswLGNdLC10Lm9mZnNldFgqbCksaS5yZXZlcnNlKGUueCxbMCxjXSxjKyhjLXQub2Zmc2V0WCkqbCldLG09W2EucmV2ZXJzZShlLnksW2QsMF0sLXQub2Zmc2V0WSpsKSxhLnJldmVyc2UoZS55LFtkLDBdLGQrKGQtdC5vZmZzZXRZKSpsKV07cmV0dXJue3g6cFsxXTxwWzBdP1twWzFdLHBbMF1dOnAseTptWzFdPG1bMF0/W21bMV0sbVswXV06bX19ZWh0Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxlaHQpfSxlaHQuybVjbXA9c28oe3R5cGU6ZWh0LHNlbGVjdG9yczpbWyJsaW5lLWNoYXJ0LWdyaWQtdmlldyJdXSxpbnB1dHM6e3ZpZXdFeHRlbnQ6InZpZXdFeHRlbnQiLHhTY2FsZToieFNjYWxlIix4R3JpZENvdW50OiJ4R3JpZENvdW50Iix5U2NhbGU6InlTY2FsZSIseUdyaWRDb3VudDoieUdyaWRDb3VudCIsZG9tRGltOiJkb21EaW0ifSxkZWNsczozLHZhcnM6Mixjb25zdHM6W1sieTEiLCIwIiwzLCJ6ZXJvIiw0LCJuZ0ZvciIsIm5nRm9yT2YiXSxbIngxIiwiMCIsMywiemVybyIsNCwibmdGb3IiLCJuZ0Zvck9mIl0sWyJ5MSIsIjAiXSxbIngxIiwiMCJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYob2EoKSxDZigwLCJzdmciKSxIbSgxLCRndCwxLDUsImxpbmUiLDApLEhtKDIsdGh0LDEsNSwibGluZSIsMSksTWYoKSksMiZlJiYoRGMoMSksYmYoIm5nRm9yT2YiLG4uZ2V0WFRpY2tzKCkpLERjKDEpLGJmKCJuZ0Zvck9mIixuLmdldFlUaWNrcygpKSl9LGRpcmVjdGl2ZXM6W3h2XSxzdHlsZXM6WyJbX25naG9zdC0lQ09NUCVdIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgIH1cblxuICAgICAgc3ZnW19uZ2NvbnRlbnQtJUNPTVAlXSB7XG4gICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICB9XG5cbiAgICAgIGxpbmVbX25nY29udGVudC0lQ09NUCVdIHtcbiAgICAgICAgc3Ryb2tlOiAjY2NjO1xuICAgICAgICBzdHJva2Utd2lkdGg6IDFweDtcbiAgICAgIH1cblxuICAgICAgLnplcm9bX25nY29udGVudC0lQ09NUCVdIHtcbiAgICAgICAgc3Ryb2tlOiAjYWFhO1xuICAgICAgICBzdHJva2Utd2lkdGg6IDEuNXB4O1xuICAgICAgfSJdLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihlaHQsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoibGluZS1jaGFydC1ncmlkLXZpZXciLHRlbXBsYXRlOic8c3ZnPlxuICAgIDxsaW5lXG4gICAgICAqbmdGb3I9ImxldCB0aWNrIG9mIGdldFhUaWNrcygpIlxuICAgICAgW2NsYXNzLnplcm9dPSJ0aWNrID09PSAwIlxuICAgICAgW2F0dHIueDFdPSJnZXREb21YKHRpY2spIlxuICAgICAgeTE9IjAiXG4gICAgICBbYXR0ci54Ml09ImdldERvbVgodGljaykiXG4gICAgICBbYXR0ci55Ml09ImRvbURpbS5oZWlnaHQiXG4gICAgPjwvbGluZT5cbiAgICA8bGluZVxuICAgICAgKm5nRm9yPSJsZXQgdGljayBvZiBnZXRZVGlja3MoKSJcbiAgICAgIFtjbGFzcy56ZXJvXT0idGljayA9PT0gMCJcbiAgICAgIHgxPSIwIlxuICAgICAgW2F0dHIueTFdPSJnZXREb21ZKHRpY2spIlxuICAgICAgW2F0dHIueDJdPSJkb21EaW0ud2lkdGgiXG4gICAgICBbYXR0ci55Ml09ImdldERvbVkodGljaykiXG4gICAgPjwvbGluZT5cbiAgPC9zdmc+JyxzdHlsZXM6WyJcbiAgICAgIDpob3N0IHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgIH1cblxuICAgICAgc3ZnIHtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgIH1cblxuICAgICAgbGluZSB7XG4gICAgICAgIHN0cm9rZTogI2NjYztcbiAgICAgICAgc3Ryb2tlLXdpZHRoOiAxcHg7XG4gICAgICB9XG5cbiAgICAgIC56ZXJvIHtcbiAgICAgICAgc3Ryb2tlOiAjYWFhO1xuICAgICAgICBzdHJva2Utd2lkdGg6IDEuNXB4O1xuICAgICAgfVxuICAgICJdLGNoYW5nZURldGVjdGlvbjpqbi5PblB1c2h9XX1dLG51bGwse3ZpZXdFeHRlbnQ6W3t0eXBlOlJffV0seFNjYWxlOlt7dHlwZTpSX31dLHhHcmlkQ291bnQ6W3t0eXBlOlJffV0seVNjYWxlOlt7dHlwZTpSX31dLHlHcmlkQ291bnQ6W3t0eXBlOlJffV0sZG9tRGltOlt7dHlwZTpSX31dfSk7Y29uc3Qgb2h0PVsiZG90cyJdO2Z1bmN0aW9uIGlodCh0LGUpe2lmKDEmdCYmKG9hKCksdmYoMCwiY2lyY2xlIiwxMikpLDImdCl7Y29uc3QgdD16ZigpLiRpbXBsaWNpdCxlPXpmKDIpO3ltKCJjeCIsZS5nZXREb21YKHQucG9pbnQueCkpKCJjeSIsZS5nZXREb21ZKHQucG9pbnQueSkpKCJmaWxsIix0Lm1ldGFkYXRhLmNvbG9yKX19ZnVuY3Rpb24gYWh0KHQsZSl7aWYoMSZ0JiYob2EoKSx4ZigwKSxIbSgxLGlodCwxLDMsImNpcmNsZSIsMTEpLE9mKCkpLDImdCl7Y29uc3QgdD1lLiRpbXBsaWNpdCxuPXpmKDIpO0RjKDEpLGJmKCJuZ0lmIixuLnNob3VsZFJlbmRlclRvb2x0aXBQb2ludCh0LnBvaW50KSl9fWZ1bmN0aW9uIHJodCh0LGUpe2lmKDEmdCYmKG9hKCkseGYoMCksSG0oMSxhaHQsMiwxLCJuZy1jb250YWluZXIiLDEwKSxPZigpKSwyJnQpe2NvbnN0IHQ9emYoKTtEYygxKSxiZigibmdGb3JPZiIsdC5jdXJzb3JlZERhdGEpKCJuZ0ZvclRyYWNrQnkiLHQudHJhY2tCeVNlcmllc05hbWUpfX1mdW5jdGlvbiBzaHQodCxlKXtpZigxJnQmJihvYSgpLHZmKDAsInJlY3QiLDEzKSksMiZ0KXtjb25zdCB0PXpmKCk7eW0oIngiLHQuem9vbUJveEluVWlDb29yZGluYXRlLngpKCJ3aWR0aCIsdC56b29tQm94SW5VaUNvb3JkaW5hdGUud2lkdGgpKCJ5Iix0Lnpvb21Cb3hJblVpQ29vcmRpbmF0ZS55KSgiaGVpZ2h0Iix0Lnpvb21Cb3hJblVpQ29vcmRpbmF0ZS5oZWlnaHQpfX1jb25zdCBsaHQ9ZnVuY3Rpb24odCxlKXtyZXR1cm57ZGF0YTp0LGN1cnNvckxvY2F0aW9uSW5EYXRhQ29vcmQ6ZX19O2Z1bmN0aW9uIGNodCh0LGUpe2lmKDEmdCYmKENmKDAsImRpdiIsMTQpLFBmKDEsMTUpLE1mKCkpLDImdCl7Y29uc3QgdD16ZigpLGU9Rm0oMTEpO0RjKDEpLGJmKCJuZ1RlbXBsYXRlT3V0bGV0Iix0LnRvb2x0aXBUZW1wbGF0ZT90LnRvb2x0aXBUZW1wbGF0ZTplKSgibmdUZW1wbGF0ZU91dGxldENvbnRleHQiLGF5KDIsbGh0LHQuY3Vyc29yZWREYXRhLHQuY3Vyc29yTG9jYXRpb25JbkRhdGFDb29yZCkpfX1mdW5jdGlvbiBkaHQodCxlKXtpZigxJnQmJih4ZigwKSxDZigxLCJ0ciIsMTcpLENmKDIsInRkIiwxOCksdmYoMywic3BhbiIpLE1mKCksQ2YoNCwidGQiLDE5KSxQdSg1KSxNZigpLENmKDYsInRkIiksUHUoNyksTWYoKSxDZig4LCJ0ZCIpLFB1KDkpLE1mKCksTWYoKSxPZigpKSwyJnQpe2NvbnN0IHQ9ZS4kaW1wbGljaXQ7RGMoMyksbHUoImJhY2tncm91bmQtY29sb3IiLHQubWV0YWRhdGEuY29sb3IpLERjKDIpLHd1KHQubWV0YWRhdGEuZGlzcGxheU5hbWUpLERjKDIpLHd1KHQucG9pbnQueSksRGMoMiksd3UodC5wb2ludC54KX19ZnVuY3Rpb24gcGh0KHQsZSl7aWYoMSZ0JiYoQ2YoMCwidGFibGUiKSxDZigxLCJ0aGVhZCIpLENmKDIsInRyIiksdmYoMywidGgiLDE2KSxDZig0LCJ0aCIpLFB1KDUsIk5hbWUiKSxNZigpLENmKDYsInRoIiksUHUoNywiWSIpLE1mKCksQ2YoOCwidGgiKSxQdSg5LCJYIiksTWYoKSxNZigpLE1mKCksQ2YoMTAsInRib2R5IiksSG0oMTEsZGh0LDEwLDUsIm5nLWNvbnRhaW5lciIsMTApLE1mKCksTWYoKSksMiZ0KXtjb25zdCB0PWUuZGF0YSxuPXpmKCk7RGMoMTEpLGJmKCJuZ0Zvck9mIix0KSgibmdGb3JUcmFja0J5IixuLnRyYWNrQnlTZXJpZXNOYW1lKX19dmFyIG1odDshKGZ1bmN0aW9uKHQpe3RbdC5OT05FPTBdPSJOT05FIix0W3QuRFJBR19aT09NSU5HPTFdPSJEUkFHX1pPT01JTkciLHRbdC5TQ1JPTExfWk9PTUlORz0yXT0iU0NST0xMX1pPT01JTkciLHRbdC5QQU5OSU5HPTNdPSJQQU5OSU5HIn0pKG1odHx8KG1odD17fSkpO2Z1bmN0aW9uIGZodCh0KXtyZXR1cm4gdC5zY3JvbGxTdHJhdGVnaWVzLnJlcG9zaXRpb24oKX1jbGFzcyB1aHR7Y29uc3RydWN0b3IodCxlKXt0aGlzLmNoYW5nZURldGVjdG9yPXQsdGhpcy5zY3JvbGxTdHJhdGVneT1lLHRoaXMub25WaWV3RXh0ZW50Q2hhbmdlPW5ldyBTeSx0aGlzLm9uVmlld0V4dGVudFJlc2V0PW5ldyBTeSx0aGlzLkludGVyYWN0aW9uU3RhdGU9bWh0LHRoaXMuc3RhdGU9bWh0Lk5PTkUsdGhpcy5zcGVjaWFsS2V5UHJlc3NlZD0hMSx0aGlzLnpvb21Cb3hJblVpQ29vcmRpbmF0ZT17eDowLHdpZHRoOjAsaGVpZ2h0OjAseTowfSx0aGlzLnRvb2x0aXBQb3NpdGlvbnM9W3tvZmZzZXRZOjUsb3JpZ2luWDoic3RhcnQiLG92ZXJsYXlYOiJzdGFydCIsb3JpZ2luWToiYm90dG9tIixvdmVybGF5WToidG9wIn0se29mZnNldFk6NSxvcmlnaW5YOiJlbmQiLG92ZXJsYXlYOiJlbmQiLG9yaWdpblk6ImJvdHRvbSIsb3ZlcmxheVk6InRvcCJ9LHtvZmZzZXRZOi0xNSxvcmlnaW5YOiJzdGFydCIsb3ZlcmxheVg6InN0YXJ0IixvcmlnaW5ZOiJ0b3AiLG92ZXJsYXlZOiJib3R0b20ifSx7b2Zmc2V0WTotMTUsb3JpZ2luWDoiZW5kIixvdmVybGF5WDoiZW5kIixvcmlnaW5ZOiJ0b3AiLG92ZXJsYXlZOiJib3R0b20ifSx7b2Zmc2V0WDo1LG9yaWdpblg6ImVuZCIsb3ZlcmxheVg6InN0YXJ0IixvcmlnaW5ZOiJ0b3AiLG92ZXJsYXlZOiJ0b3AifSx7b2Zmc2V0WDotNSxvcmlnaW5YOiJzdGFydCIsb3ZlcmxheVg6ImVuZCIsb3JpZ2luWToidG9wIixvdmVybGF5WToidG9wIn1dLHRoaXMuY3Vyc29yTG9jYXRpb25JbkRhdGFDb29yZD1udWxsLHRoaXMuY3Vyc29yZWREYXRhPVtdLHRoaXMudG9vbHRpcERpc3BsYXlBdHRhY2hlZD0hMSx0aGlzLnNob3dab29tSW5zdHJ1Y3Rpb249ITEsdGhpcy5kcmFnU3RhcnRDb29yZD1udWxsLHRoaXMuaXNDdXJzb3JJbnNpZGU9ITEsdGhpcy5uZ1Vuc3Vic2NyaWJlPW5ldyBCfW5nQWZ0ZXJWaWV3SW5pdCgpe2xlKHRoaXMuZG90c0NvbnRhaW5lci5uYXRpdmVFbGVtZW50LCJkYmxjbGljayIse3Bhc3NpdmU6ITB9KS5waXBlKGplKHRoaXMubmdVbnN1YnNjcmliZSkpLnN1YnNjcmliZSgoKCk9Pnt0aGlzLm9uVmlld0V4dGVudFJlc2V0LmVtaXQoKSx0aGlzLnN0YXRlPW1odC5OT05FLHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCl9KSksbGUod2luZG93LCJrZXlkb3duIix7cGFzc2l2ZTohMH0pLnBpcGUoamUodGhpcy5uZ1Vuc3Vic2NyaWJlKSkuc3Vic2NyaWJlKCh0PT57Y29uc3QgZT10aGlzLnNob3VsZFBhbih0KTtlIT09dGhpcy5zcGVjaWFsS2V5UHJlc3NlZCYmKHRoaXMuc3BlY2lhbEtleVByZXNzZWQ9ZSx0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpKX0pKSxsZSh3aW5kb3csImtleXVwIix7cGFzc2l2ZTohMH0pLnBpcGUoamUodGhpcy5uZ1Vuc3Vic2NyaWJlKSkuc3Vic2NyaWJlKCh0PT57Y29uc3QgZT10aGlzLnNob3VsZFBhbih0KTtlIT09dGhpcy5zcGVjaWFsS2V5UHJlc3NlZCYmKHRoaXMuc3BlY2lhbEtleVByZXNzZWQ9ZSx0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpKX0pKSxsZSh0aGlzLmRvdHNDb250YWluZXIubmF0aXZlRWxlbWVudCwibW91c2Vkb3duIix7cGFzc2l2ZTohMH0pLnBpcGUoamUodGhpcy5uZ1Vuc3Vic2NyaWJlKSkuc3Vic2NyaWJlKCh0PT57Y29uc3QgZT10aGlzLnN0YXRlLG49dGhpcy5zaG91bGRQYW4odCk/bWh0LlBBTk5JTkc6bWh0LkRSQUdfWk9PTUlORztlPT09bWh0Lk5PTkUmJm49PT1taHQuRFJBR19aT09NSU5HJiYodGhpcy5kcmFnU3RhcnRDb29yZD17eDp0Lm9mZnNldFgseTp0Lm9mZnNldFl9LHRoaXMuem9vbUJveEluVWlDb29yZGluYXRlPXt4OnQub2Zmc2V0WCx3aWR0aDowLHk6dC5vZmZzZXRZLGhlaWdodDowfSksZSE9PW4mJih0aGlzLnN0YXRlPW4sdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKSl9KSksbGUodGhpcy5kb3RzQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQsIm1vdXNldXAiLHtwYXNzaXZlOiEwfSkucGlwZShqZSh0aGlzLm5nVW5zdWJzY3JpYmUpKS5zdWJzY3JpYmUoKHQ9Pntjb25zdCBlPSh0LmJ1dHRvbnMmaDAuTEVGVCk9PT1oMC5MRUZUO3RoaXMuZHJhZ1N0YXJ0Q29vcmQ9bnVsbDtjb25zdCBuPXRoaXMuem9vbUJveEluVWlDb29yZGluYXRlO2lmKCFlJiZ0aGlzLnN0YXRlPT09bWh0LkRSQUdfWk9PTUlORyYmbi53aWR0aD4wJiZuLmhlaWdodD4wKXtjb25zdCB0PXRoaXMuZ2V0RGF0YVgobi54KSxlPXRoaXMuZ2V0RGF0YVgobi54K24ud2lkdGgpLG89dGhpcy5nZXREYXRhWShuLnkrbi5oZWlnaHQpLGk9dGhpcy5nZXREYXRhWShuLnkpO3RoaXMub25WaWV3RXh0ZW50Q2hhbmdlLmVtaXQoe2RhdGFFeHRlbnQ6e3g6W3QsZV0seTpbbyxpXX19KX10aGlzLnN0YXRlIT09bWh0Lk5PTkUmJih0aGlzLnN0YXRlPW1odC5OT05FLHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCkpfSkpLGxlKHRoaXMuZG90c0NvbnRhaW5lci5uYXRpdmVFbGVtZW50LCJtb3VzZWVudGVyIix7cGFzc2l2ZTohMH0pLnBpcGUoamUodGhpcy5uZ1Vuc3Vic2NyaWJlKSkuc3Vic2NyaWJlKCh0PT57dGhpcy5pc0N1cnNvckluc2lkZT0hMCx0aGlzLnVwZGF0ZVRvb2x0aXAodCksdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKX0pKSxsZSh0aGlzLmRvdHNDb250YWluZXIubmF0aXZlRWxlbWVudCwibW91c2VsZWF2ZSIse3Bhc3NpdmU6ITB9KS5waXBlKGplKHRoaXMubmdVbnN1YnNjcmliZSkpLnN1YnNjcmliZSgodD0+e3RoaXMuZHJhZ1N0YXJ0Q29vcmQ9bnVsbCx0aGlzLmlzQ3Vyc29ySW5zaWRlPSExLHRoaXMudXBkYXRlVG9vbHRpcCh0KSx0aGlzLnN0YXRlPW1odC5OT05FLHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCl9KSksbGUodGhpcy5kb3RzQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQsIm1vdXNlbW92ZSIse3Bhc3NpdmU6ITB9KS5waXBlKGplKHRoaXMubmdVbnN1YnNjcmliZSkpLnN1YnNjcmliZSgodD0+e3N3aXRjaCh0aGlzLnN0YXRlKXtjYXNlIG1odC5TQ1JPTExfWk9PTUlORzp0aGlzLnN0YXRlPW1odC5OT05FLHRoaXMudXBkYXRlVG9vbHRpcCh0KSx0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO2JyZWFrO2Nhc2UgbWh0Lk5PTkU6dGhpcy51cGRhdGVUb29sdGlwKHQpLHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7YnJlYWs7Y2FzZSBtaHQuUEFOTklORzp7Y29uc3QgZT0tdC5tb3ZlbWVudFgsbj0tdC5tb3ZlbWVudFkse3dpZHRoOm8saGVpZ2h0Oml9PXRoaXMuZG9tRGltLGE9dGhpcy5nZXREYXRhWChlKSxyPXRoaXMuZ2V0RGF0YVgobytlKSxzPXRoaXMuZ2V0RGF0YVkoaStuKSxsPXRoaXMuZ2V0RGF0YVkobik7dGhpcy5vblZpZXdFeHRlbnRDaGFuZ2UuZW1pdCh7ZGF0YUV4dGVudDp7eDpbYSxyXSx5OltzLGxdfX0pO2JyZWFrfWNhc2UgbWh0LkRSQUdfWk9PTUlORzp7aWYoIXRoaXMuZHJhZ1N0YXJ0Q29vcmQpYnJlYWs7Y29uc3QgZT1bdGhpcy5kcmFnU3RhcnRDb29yZC54LHQub2Zmc2V0WF0sbj1bdGhpcy5kcmFnU3RhcnRDb29yZC55LHQub2Zmc2V0WV07dGhpcy56b29tQm94SW5VaUNvb3JkaW5hdGU9e3g6TWF0aC5taW4oLi4uZSksd2lkdGg6TWF0aC5tYXgoLi4uZSktTWF0aC5taW4oLi4uZSkseTpNYXRoLm1pbiguLi5uKSxoZWlnaHQ6TWF0aC5tYXgoLi4ubiktTWF0aC5taW4oLi4ubil9fXRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCl9fSkpLGxlKHRoaXMuZG90c0NvbnRhaW5lci5uYXRpdmVFbGVtZW50LCJ3aGVlbCIse3Bhc3NpdmU6ITF9KS5waXBlKGplKHRoaXMubmdVbnN1YnNjcmliZSksVmUoKHQ9Pntjb25zdCBlPSF0LmN0cmxLZXkmJiF0LnNoaWZ0S2V5JiZ0LmFsdEtleTtyZXR1cm4gdGhpcy5zaG93Wm9vbUluc3RydWN0aW9uPSFlLHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCksZT8odC5wcmV2ZW50RGVmYXVsdCgpLHp0KHQpKTpkZSgzZTMpLnBpcGUoV2UoKCgpPT57dGhpcy5zaG93Wm9vbUluc3RydWN0aW9uPSExLHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCl9KSksVnQoKCgpPT5udWxsKSkpfSkpLHVlKCh0PT5Cb29sZWFuKHQpKSkpLnN1YnNjcmliZSgodD0+e3RoaXMub25WaWV3RXh0ZW50Q2hhbmdlLmVtaXQoe2RhdGFFeHRlbnQ6bmh0KHQsdGhpcy52aWV3RXh0ZW50LHRoaXMuZG9tRGltLC4wMSx0aGlzLnhTY2FsZSx0aGlzLnlTY2FsZSl9KSx0aGlzLnN0YXRlIT09bWh0LlNDUk9MTF9aT09NSU5HJiYodGhpcy5zdGF0ZT1taHQuU0NST0xMX1pPT01JTkcsdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKSl9KSl9bmdPbkNoYW5nZXMoKXt0aGlzLnVwZGF0ZUN1cnNvcmVkRGF0YUFuZFRvb2x0aXBWaXNpYmlsaXR5KCl9bmdPbkRlc3Ryb3koKXt0aGlzLm5nVW5zdWJzY3JpYmUubmV4dCgpLHRoaXMubmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpfXNob3VsZFBhbih0KXtjb25zdCBlPXQuc2hpZnRLZXl8fHQuYWx0S2V5O2lmKHQgaW5zdGFuY2VvZiBLZXlib2FyZEV2ZW50KXJldHVybiBlO2NvbnN0IG49KHQuYnV0dG9ucyZoMC5MRUZUKT09PWgwLkxFRlQsbz0odC5idXR0b25zJmgwLk1JRERMRSk9PT1oMC5NSURETEU7cmV0dXJuISghbiYmIW8pJiYobyYmIW58fGUpfXRyYWNrQnlTZXJpZXNOYW1lKHQsZSl7cmV0dXJuIGUuaWR9Z2V0RG9tWCh0KXtyZXR1cm4gdGhpcy54U2NhbGUuZm9yd2FyZCh0aGlzLnZpZXdFeHRlbnQueCxKZ3QodGhpcy5kb21EaW0sIngiKSx0KX1nZXREYXRhWCh0KXtyZXR1cm4gdGhpcy54U2NhbGUucmV2ZXJzZSh0aGlzLnZpZXdFeHRlbnQueCxKZ3QodGhpcy5kb21EaW0sIngiKSx0KX1nZXREb21ZKHQpe3JldHVybiB0aGlzLnlTY2FsZS5mb3J3YXJkKHRoaXMudmlld0V4dGVudC55LEpndCh0aGlzLmRvbURpbSwieSIpLHQpfWdldERhdGFZKHQpe3JldHVybiB0aGlzLnlTY2FsZS5yZXZlcnNlKHRoaXMudmlld0V4dGVudC55LEpndCh0aGlzLmRvbURpbSwieSIpLHQpfXNob3VsZFJlbmRlclRvb2x0aXBQb2ludCh0KXtyZXR1cm4gbnVsbCE9PXQmJiFpc05hTih0LngpJiYhaXNOYU4odC55KX11cGRhdGVUb29sdGlwKHQpe3RoaXMuY3Vyc29yTG9jYXRpb25JbkRhdGFDb29yZD17eDp0aGlzLmdldERhdGFYKHQub2Zmc2V0WCkseTp0aGlzLmdldERhdGFZKHQub2Zmc2V0WSl9LHRoaXMudXBkYXRlQ3Vyc29yZWREYXRhQW5kVG9vbHRpcFZpc2liaWxpdHkoKX1vblRvb2x0aXBEaXNwbGF5RGV0YWNoZWQoKXt0aGlzLnRvb2x0aXBEaXNwbGF5QXR0YWNoZWQ9ITF9dXBkYXRlQ3Vyc29yZWREYXRhQW5kVG9vbHRpcFZpc2liaWxpdHkoKXtjb25zdCB0PXRoaXMuY3Vyc29yTG9jYXRpb25JbkRhdGFDb29yZDtpZihudWxsPT09dClyZXR1cm4gdGhpcy5jdXJzb3JlZERhdGE9W10sdm9pZCh0aGlzLnRvb2x0aXBEaXNwbGF5QXR0YWNoZWQ9ITEpO3RoaXMuY3Vyc29yZWREYXRhPXRoaXMuaXNDdXJzb3JJbnNpZGU/dGhpcy5zZXJpZXNEYXRhLm1hcCgodD0+KHtzZXJpZXNEYXR1bTp0LG1ldGFkYXRhOnRoaXMuc2VyaWVzTWV0YWRhdGFNYXBbdC5pZF19KSkpLmZpbHRlcigoKHttZXRhZGF0YTp0fSk9PnQmJnQudmlzaWJsZSYmIUJvb2xlYW4odC5hdXgpKSkubWFwKCgoe3Nlcmllc0RhdHVtOmUsbWV0YWRhdGE6bn0pPT57Y29uc3Qgbz0oZnVuY3Rpb24gaSh0LGUpe2NvbnN0IG49TWF0aC5taW4oaDYodC5tYXAoKCh7eDp0fSk9PnQpKSxlKSx0Lmxlbmd0aC0xKSxvPU1hdGgubWF4KDAsbi0xKTtyZXR1cm4gTWF0aC5hYnModFtvXS54LWUpLU1hdGguYWJzKHRbbl0ueC1lKTw9MD9vOm59KShlLnBvaW50cyx0LngpO3JldHVybntpZDplLmlkLGNsb3Nlc3RQb2ludEluZGV4Om8scG9pbnQ6ZS5wb2ludHNbb10sbWV0YWRhdGE6bn19KSkuZmlsdGVyKCh0PT50KSk6W10sdGhpcy50b29sdGlwRGlzcGxheUF0dGFjaGVkPUJvb2xlYW4odGhpcy5jdXJzb3JlZERhdGEubGVuZ3RoKX19dWh0Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHx1aHQpKGdmKE9iKSxnZihPQikpfSx1aHQuybVjbXA9c28oe3R5cGU6dWh0LHNlbGVjdG9yczpbWyJsaW5lLWNoYXJ0LWludGVyYWN0aXZlLXZpZXciXV0sdmlld1F1ZXJ5OmZ1bmN0aW9uIHQoZSxuKXtpZigxJmUmJihWeShvaHQsNyxLaCksVnkodFYsNSkpLDImZSl7bGV0IHQ7QnkodD1VeSgpKSYmKG4uZG90c0NvbnRhaW5lcj10LmZpcnN0KSxCeSh0PVV5KCkpJiYobi5vdmVybGF5PXQuZmlyc3QpfX0saG9zdFZhcnM6Mixob3N0QmluZGluZ3M6ZnVuY3Rpb24gdChlLG4pezImZSYmY3UoInNob3ctem9vbS1pbnN0cnVjdGlvbiIsbi5zaG93Wm9vbUluc3RydWN0aW9uKX0saW5wdXRzOntzZXJpZXNEYXRhOiJzZXJpZXNEYXRhIixzZXJpZXNNZXRhZGF0YU1hcDoic2VyaWVzTWV0YWRhdGFNYXAiLHZpZXdFeHRlbnQ6InZpZXdFeHRlbnQiLHhTY2FsZToieFNjYWxlIix5U2NhbGU6InlTY2FsZSIsZG9tRGltOiJkb21EaW0iLHRvb2x0aXBPcmlnaW5FbDoidG9vbHRpcE9yaWdpbkVsIix0b29sdGlwVGVtcGxhdGU6InRvb2x0aXBUZW1wbGF0ZSJ9LG91dHB1dHM6e29uVmlld0V4dGVudENoYW5nZToib25WaWV3RXh0ZW50Q2hhbmdlIixvblZpZXdFeHRlbnRSZXNldDoib25WaWV3RXh0ZW50UmVzZXQifSxmZWF0dXJlczpbamgoW3twcm92aWRlOk9CLHVzZUZhY3Rvcnk6Zmh0LGRlcHM6W0tCXX1dKSxxb10sZGVjbHM6MTIsdmFyczoxNSxjb25zdHM6W1sxLCJkb3RzIl0sWyJkb3RzIiwiIl0sWzQsIm5nSWYiXSxbImNsYXNzIiwiem9vbS1ib3giLDQsIm5nSWYiXSxbMSwiem9vbS1pbnN0cnVjdGlvbiJdLFsxLCJpbnN0cnVjdGlvbi1jb250ZW50Il0sWyJjZGtPdmVybGF5T3JpZ2luIiwiIiwxLCJ0b29sdGlwLW9yaWdpbiJdLFsidG9vbHRpcE9yaWdpbiIsImNka092ZXJsYXlPcmlnaW4iXSxbImNka0Nvbm5lY3RlZE92ZXJsYXkiLCIiLDMsImNka0Nvbm5lY3RlZE92ZXJsYXlPcmlnaW4iLCJjZGtDb25uZWN0ZWRPdmVybGF5T3BlbiIsImNka0Nvbm5lY3RlZE92ZXJsYXlQb3NpdGlvbnMiLCJjZGtDb25uZWN0ZWRPdmVybGF5U2Nyb2xsU3RyYXRlZ3kiLCJjZGtDb25uZWN0ZWRPdmVybGF5TG9ja1Bvc2l0aW9uIiwiY2RrQ29ubmVjdGVkT3ZlcmxheUZsZXhpYmxlRGltZW5zaW9ucyIsImNka0Nvbm5lY3RlZE92ZXJsYXlHcm93QWZ0ZXJPcGVuIiwiZGV0YWNoIl0sWyJkZWZhdWx0VG9vbHRpcCIsIiJdLFs0LCJuZ0ZvciIsIm5nRm9yT2YiLCJuZ0ZvclRyYWNrQnkiXSxbInIiLCI0Iiw0LCJuZ0lmIl0sWyJyIiwiNCJdLFsxLCJ6b29tLWJveCJdLFsxLCJ0b29sdGlwLWNvbnRhaW5lciJdLFszLCJuZ1RlbXBsYXRlT3V0bGV0IiwibmdUZW1wbGF0ZU91dGxldENvbnRleHQiXSxbMSwiY2lyY2xlLWhlYWRlciJdLFsxLCJ0b29sdGlwLXJvdyJdLFsxLCJ0b29sdGlwLXJvdy1jaXJjbGUiXSxbMSwibmFtZSJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYob2EoKSxDZigwLCJzdmciLDAsMSksSG0oMixyaHQsMiwyLCJuZy1jb250YWluZXIiLDIpLEhtKDMsc2h0LDEsNCwicmVjdCIsMyksTWYoKSxhYSgpLENmKDQsImRpdiIsNCksQ2YoNSwic3BhbiIsNSksUHUoNiwiQWx0ICsgU2Nyb2xsIHRvIFpvb20iKSxNZigpLE1mKCksdmYoNywiZGl2Iiw2LDcpLEhtKDksY2h0LDIsNSwibmctdGVtcGxhdGUiLDgpLFJmKCJkZXRhY2giLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4ub25Ub29sdGlwRGlzcGxheURldGFjaGVkKCl9KSksSG0oMTAscGh0LDEyLDIsIm5nLXRlbXBsYXRlIixudWxsLDkscXkpKSwyJmUmJihjdSgicGFubmFibGUiLG4uc3BlY2lhbEtleVByZXNzZWQpKCJkcmFnZ2FibGUiLG4uc3RhdGU9PT1uLkludGVyYWN0aW9uU3RhdGUuTk9ORXx8bi5zdGF0ZT09PW4uSW50ZXJhY3Rpb25TdGF0ZS5EUkFHX1pPT01JTkcpKCJwYW5uaW5nIixuLnN0YXRlPT09bi5JbnRlcmFjdGlvblN0YXRlLlBBTk5JTkcpLERjKDIpLGJmKCJuZ0lmIixuLnN0YXRlPT09bi5JbnRlcmFjdGlvblN0YXRlLk5PTkUpLERjKDEpLGJmKCJuZ0lmIixuLnN0YXRlPT09bi5JbnRlcmFjdGlvblN0YXRlLkRSQUdfWk9PTUlORyksRGMoNiksYmYoImNka0Nvbm5lY3RlZE92ZXJsYXlPcmlnaW4iLG4udG9vbHRpcE9yaWdpbkVsKSgiY2RrQ29ubmVjdGVkT3ZlcmxheU9wZW4iLG4udG9vbHRpcERpc3BsYXlBdHRhY2hlZCYmbi5zdGF0ZT09PW4uSW50ZXJhY3Rpb25TdGF0ZS5OT05FKSgiY2RrQ29ubmVjdGVkT3ZlcmxheVBvc2l0aW9ucyIsbi50b29sdGlwUG9zaXRpb25zKSgiY2RrQ29ubmVjdGVkT3ZlcmxheVNjcm9sbFN0cmF0ZWd5IixuLnNjcm9sbFN0cmF0ZWd5KSgiY2RrQ29ubmVjdGVkT3ZlcmxheUxvY2tQb3NpdGlvbiIsITEpKCJjZGtDb25uZWN0ZWRPdmVybGF5RmxleGlibGVEaW1lbnNpb25zIiwhMCkoImNka0Nvbm5lY3RlZE92ZXJsYXlHcm93QWZ0ZXJPcGVuIiwhMCkpfSxkaXJlY3RpdmVzOltQdiwkQix0Vix4dixJdl0sc3R5bGVzOlsiW19uZ2hvc3QtJUNPTVAlXXtkaXNwbGF5OmZsZXg7cG9zaXRpb246cmVsYXRpdmU7dXNlci1zZWxlY3Q6bm9uZX0uZG90c1tfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uZG90cy5kcmFnZ2FibGVbX25nY29udGVudC0lQ09NUCVde2N1cnNvcjpjcm9zc2hhaXJ9LmRvdHMucGFubmFibGVbX25nY29udGVudC0lQ09NUCVde2N1cnNvcjpncmFifS5kb3RzLnBhbm5pbmdbX25nY29udGVudC0lQ09NUCVde2N1cnNvcjpncmFiYmluZ30udG9vbHRpcC1yb3ctY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXXthbGlnbi1pdGVtczpjZW50ZXI7ZGlzcGxheTppbmxpbmUtZmxleDtoZWlnaHQ6MTJweDt3aWR0aDoxMnB4fS50b29sdGlwLXJvdy1jaXJjbGVbX25nY29udGVudC0lQ09NUCVdID4gc3Bhbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLXJhZGl1czo1MCU7Ym9yZGVyOjFweCBzb2xpZCByZ2JhKDI1NSwyNTUsMjU1LC42KTtkaXNwbGF5OmlubGluZS1ibG9jaztoZWlnaHQ6MTBweDt3aWR0aDoxMHB4fS50b29sdGlwLW9yaWdpbltfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjA7bGVmdDowO3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0OjB9LnRvb2x0aXAtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjg1KTtib3JkZXItcmFkaXVzOjRweDtjb2xvcjojZmZmO2NvbnRhaW46cGFpbnQgc3R5bGUgbGF5b3V0O2ZvbnQtc2l6ZTouOWVtO292ZXJmbG93OmF1dG87cGFkZGluZzo1cHg7cG9pbnRlci1ldmVudHM6bm9uZTt3aWR0aDoxMDAlfXRoW19uZ2NvbnRlbnQtJUNPTVAlXSwgdGRbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDVweDt0ZXh0LWFsaWduOmxlZnR9dGhbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjUwMDtwYWRkaW5nLWJvdHRvbTo1cHh9Lnpvb20tYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmaWxsLW9wYWNpdHk6LjAzO2ZpbGw6IzAwMDtzdHJva2U6I2NjY30uem9vbS1pbnN0cnVjdGlvbltfbmdjb250ZW50LSVDT01QJV17YWxpZ24taXRlbXM6Y2VudGVyO2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2xlZnQ6MDtvcGFjaXR5OjA7cG9pbnRlci1ldmVudHM6bm9uZTtwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDowO3RvcDoxMHB4O3RyYW5zaXRpb246b3BhY2l0eSAuNXM7ei1pbmRleDoxfS5pbnN0cnVjdGlvbi1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjYpO2JvcmRlci1yYWRpdXM6NXB4O2NvbG9yOiNmZmY7cGFkZGluZzo1cHggMTBweDt1c2VyLXNlbGVjdDpub25lfS5zaG93LXpvb20taW5zdHJ1Y3Rpb25bX25naG9zdC0lQ09NUCVdICAgLnpvb20taW5zdHJ1Y3Rpb25bX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MX0iXSxjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIodWh0LFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6ImxpbmUtY2hhcnQtaW50ZXJhY3RpdmUtdmlldyIsdGVtcGxhdGVVcmw6Ii4vbGluZV9jaGFydF9pbnRlcmFjdGl2ZV92aWV3Lm5nLmh0bWwiLHN0eWxlVXJsczpbIi4vbGluZV9jaGFydF9pbnRlcmFjdGl2ZV92aWV3LmNzcyJdLGNoYW5nZURldGVjdGlvbjpqbi5PblB1c2gscHJvdmlkZXJzOlt7cHJvdmlkZTpPQix1c2VGYWN0b3J5OmZodCxkZXBzOltLQl19XX1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOk9ifSx7dHlwZTpPQn1dfSkse2RvdHNDb250YWluZXI6W3t0eXBlOmFyLGFyZ3M6WyJkb3RzIix7c3RhdGljOiEwLHJlYWQ6S2h9XX1dLG92ZXJsYXk6W3t0eXBlOmFyLGFyZ3M6W3RWXX1dLHNlcmllc0RhdGE6W3t0eXBlOlJffV0sc2VyaWVzTWV0YWRhdGFNYXA6W3t0eXBlOlJffV0sdmlld0V4dGVudDpbe3R5cGU6Ul99XSx4U2NhbGU6W3t0eXBlOlJffV0seVNjYWxlOlt7dHlwZTpSX31dLGRvbURpbTpbe3R5cGU6Ul99XSx0b29sdGlwT3JpZ2luRWw6W3t0eXBlOlJffV0sdG9vbHRpcFRlbXBsYXRlOlt7dHlwZTpSX31dLG9uVmlld0V4dGVudENoYW5nZTpbe3R5cGU6RV99XSxvblZpZXdFeHRlbnRSZXNldDpbe3R5cGU6RV99XSxzaG93Wm9vbUluc3RydWN0aW9uOlt7dHlwZTpBXyxhcmdzOlsiY2xhc3Muc2hvdy16b29tLWluc3RydWN0aW9uIl19XX0pO2Z1bmN0aW9uIGdodCh0LGUsbixvKXtyZXR1cm57bWFqb3I6W10sbWlub3I6dC50aWNrcyhvLG4pLm1hcCgodD0+KHt2YWx1ZTp0LHRpY2tGb3JtYXR0ZWRTdHJpbmc6ZS5mb3JtYXRUaWNrKHQpfSkpKX19ZnVuY3Rpb24gaGh0KHQsZSxuLG8pe2NvbnN0W2ksYV09byxyPU1hdGguYWJzKGEtaSk7aWYocj4uMDAxKXJldHVybiBnaHQodCxlLG4sbyk7Y29uc3Qgcz10LnRpY2tzKFtpLGFdLG4pLGw9dC50aWNrcyhbaSxhXSwyKSxjPVtdO2xldCBkPShmdW5jdGlvbiBwKHQpe2NvbnN0IGU9dC50b0V4cG9uZW50aWFsKCkuc3BsaXQoImUtIiwyKTtyZXR1cm4gMj09PWUubGVuZ3RoP051bWJlcihlWzFdKS0xOjB9KShyKTtyPDEmJmwuZXZlcnkoKHQ9Pntjb25zdCBlPU1hdGguYWJzKHQpO3JldHVybiBlPj0wJiZlPDF9KSkmJihkKz0xKTtjb25zdCBtPW5ldyBNYXA7Zm9yKGNvbnN0IHQgb2YgbCl7Y29uc3RbbixvPSIiXT1TdHJpbmcodCkuc3BsaXQoIi4iLDIpLGk9TnVtYmVyKG4rIi4iK28uc2xpY2UoMCxkKSk7bS5zZXQoaSx7c3RhcnQ6aSx0aWNrRm9ybWF0dGVkU3RyaW5nOjA9PT1pPyLigJQiOmUuZm9ybWF0UmVhZGFibGUoaSl9KX1jb25zdCBmPTEwKk1hdGgucG93KDEwLC1kKTtmb3IoY29uc3QgdCBvZiBzKWZvcihjb25zdCBuIG9mWy4uLm0ua2V5cygpXS5yZXZlcnNlKCkpe2NvbnN0IG89dC1uO2lmKG8+PTAmJm88Zil7aWYoMD09PW4pYy5wdXNoKHt2YWx1ZTp0LHRpY2tGb3JtYXR0ZWRTdHJpbmc6ZS5mb3JtYXRUaWNrKHQpfSk7ZWxzZXtjb25zdCBlPVN0cmluZyh0KS5zbGljZShTdHJpbmcobikubGVuZ3RoKTtjLnB1c2goe3ZhbHVlOnQsdGlja0Zvcm1hdHRlZFN0cmluZzpg4oCmJHtlfHwiMCJ9YH0pfWJyZWFrfX1yZXR1cm57bWFqb3I6QXJyYXkuZnJvbShtLnZhbHVlcygpKSxtaW5vcjpjfX1jb25zdCBiaHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIikuZ2V0Q29udGV4dCgiMmQiKTtmdW5jdGlvbiB5aHQodCxlKXtpZigxJnQmJihvYSgpLENmKDAsImciLDE3KSxDZigxLCJ0ZXh0IiksUHUoMiksTWYoKSxDZigzLCJ0aXRsZSIpLFB1KDQpLE1mKCksTWYoKSksMiZ0KXtjb25zdCB0PWUuJGltcGxpY2l0LG49emYoKTtEYygxKSxsdSgiZm9udCIsbi5heGlzRm9udCkseW0oIngiLG4udGV4dFhQb3NpdGlvbih0LnZhbHVlKSkoInkiLG4udGV4dFlQb3NpdGlvbih0LnZhbHVlKSksRGMoMSksa3UoIiAiLHQudGlja0Zvcm1hdHRlZFN0cmluZywiICIpLERjKDIpLHd1KG4uZ2V0Rm9ybWF0dGVyKCkuZm9ybWF0TG9uZyh0LnZhbHVlKSl9fWZ1bmN0aW9uIF9odCh0LGUpe2lmKDEmdCYmKENmKDAsInNwYW4iLDIwKSxDZigxLCJzcGFuIiksUHUoMiksTWYoKSxNZigpKSwyJnQpe2NvbnN0IHQ9ZS4kaW1wbGljaXQsbj1lLmluZGV4LG89ZS5sYXN0LGk9emYoMik7bHUoImxlZnQiLGkuZ2V0TWFqb3JYUG9zaXRpb24odCksInB4IikoIndpZHRoIixpLmdldE1ham9yV2lkdGhTdHJpbmcodCxvLGkubWFqb3JUaWNrc1tuKzFdKSkoImJvdHRvbSIsaS5nZXRNYWpvcllQb3NpdGlvbih0KSwicHgiKSgiaGVpZ2h0IixpLmdldE1ham9ySGVpZ2h0U3RyaW5nKHQsbyxpLm1ham9yVGlja3NbbisxXSkpKCJmb250IixpLmF4aXNGb250KSxjdSgibWFqb3ItbGFiZWwiLCEwKSgibGFzdCIsbyksYmYoInRpdGxlIixpLmdldEZvcm1hdHRlcigpLmZvcm1hdExvbmcodC5zdGFydCkpLERjKDIpLHd1KHQudGlja0Zvcm1hdHRlZFN0cmluZyl9fWZ1bmN0aW9uIENodCh0LGUpe2lmKDEmdCYmKENmKDAsImRpdiIsMTgpLEhtKDEsX2h0LDMsMTYsInNwYW4iLDE5KSxNZigpKSwyJnQpe2NvbnN0IHQ9emYoKTtEYygxKSxiZigibmdGb3JPZiIsdC5tYWpvclRpY2tzKSgibmdGb3JUcmFja0J5Iix0LnRyYWNrQnlNYWpvclRpY2spfX1jbGFzcyBNaHR7Y29uc3RydWN0b3IoKXt0aGlzLm9uVmlld0V4dGVudENoYW5nZT1uZXcgU3ksdGhpcy5lZGl0TWVudU9wZW5lZD0hMSx0aGlzLm1ham9yVGlja3M9W10sdGhpcy5taW5vclRpY2tzPVtdfW5nT25DaGFuZ2VzKCl7bGV0IHQ9bnVsbDtjb25zdCBlPVFndCgieCI9PT10aGlzLmF4aXM/dGhpcy5kb21EaW0ud2lkdGg6dGhpcy5kb21EaW0uaGVpZ2h0LHRoaXMuZ3JpZENvdW50KTt0PXRoaXMuc2NhbGUgaW5zdGFuY2VvZiBocnQ/aGh0KHRoaXMuc2NhbGUsdGhpcy5nZXRGb3JtYXR0ZXIoKSxlLHRoaXMuYXhpc0V4dGVudCk6dGhpcy5zY2FsZSBpbnN0YW5jZW9mIHlydD8oZnVuY3Rpb24gbih0LGUsbyxpKXtjb25zdFthLHJdPWk7bGV0IHM9dC50aWNrcyhpLDIpO2lmKHItYT49ODY0ZTV8fHMubGVuZ3RoPjIpcmV0dXJuIGdodCh0LGUsbyxpKTtjb25zdCBsPXQudGlja3MoaSxvKTtyZXR1cm57bWFqb3I6cy5tYXAoKHQ9Pih7c3RhcnQ6dCx0aWNrRm9ybWF0dGVkU3RyaW5nOmUuZm9ybWF0U2hvcnQodCl9KSkpLG1pbm9yOmwubWFwKCh0PT4oe3ZhbHVlOnQsdGlja0Zvcm1hdHRlZFN0cmluZzplLmZvcm1hdFRpY2sodCl9KSkpfX0pKHRoaXMuc2NhbGUsdGhpcy5nZXRGb3JtYXR0ZXIoKSxlLHRoaXMuYXhpc0V4dGVudCk6Z2h0KHRoaXMuc2NhbGUsdGhpcy5nZXRGb3JtYXR0ZXIoKSxlLHRoaXMuYXhpc0V4dGVudCksdGhpcy5tYWpvclRpY2tzPXQubWFqb3IsdGhpcy5taW5vclRpY2tzPShmdW5jdGlvbiBvKHQsZSxuLGksYT01KXtpZighdC5sZW5ndGh8fCFiaHQpcmV0dXJuIHQ7Y29uc3Qgcj0ieCI9PT1uPzE6LTE7bGV0IHM9bnVsbDtyZXR1cm4gdC5maWx0ZXIoKHQ9Pntjb25zdCBvPWUodCk7Ymh0LmZvbnQ9aTtjb25zdCBsPWJodC5tZWFzdXJlVGV4dCh0LnRpY2tGb3JtYXR0ZWRTdHJpbmcpLGM9IngiPT09bj9sLndpZHRoOmwuYWN0dWFsQm91bmRpbmdCb3hBc2NlbnQtbC5hY3R1YWxCb3VuZGluZ0JveERlc2NlbnQ7cmV0dXJuIG51bGw9PT1zPyEobytyKmM8MHx8KHM9bytyKmMsMCkpOiEocioocytyKmEtbyk+MHx8KHM9bytyKmMsMCkpfSkpfSkodC5taW5vciwodD0+dGhpcy5nZXREb21Qb3ModC52YWx1ZSkpLHRoaXMuYXhpcywiMTFweCBSb2JvdG8sIHNhbnMtc2VyaWYiKX1nZXRGb3JtYXR0ZXIoKXt2YXIgdDtyZXR1cm4gbnVsbCE9PSh0PXRoaXMuY3VzdG9tRm9ybWF0dGVyKSYmdm9pZCAwIT09dD90OnRoaXMuc2NhbGUuZGVmYXVsdEZvcm1hdHRlcn10cmFja0J5TWlub3JUaWNrKHQpe3JldHVybiB0LnZhbHVlfXRyYWNrQnlNYWpvclRpY2sodCl7cmV0dXJuIHQuc3RhcnR9Z2V0RG9tUG9zKHQpe3JldHVybiB0aGlzLnNjYWxlLmZvcndhcmQodGhpcy5heGlzRXh0ZW50LEpndCh0aGlzLmRvbURpbSx0aGlzLmF4aXMpLHQpfXRleHRYUG9zaXRpb24odCl7cmV0dXJuIngiPT09dGhpcy5heGlzP1N0cmluZyh0aGlzLmdldERvbVBvcyh0KSk6IjEwMCUifXRleHRZUG9zaXRpb24odCl7cmV0dXJuIngiPT09dGhpcy5heGlzPyIiOlN0cmluZyh0aGlzLmdldERvbVBvcyh0KSl9Z2V0TWFqb3JYUG9zaXRpb24odCl7cmV0dXJuInkiPT09dGhpcy5heGlzPzA6TWF0aC5taW4odGhpcy5kb21EaW0ud2lkdGgsTWF0aC5tYXgoMCx0aGlzLmdldERvbVBvcyh0LnN0YXJ0KSkpfWdldE1ham9yV2lkdGhTdHJpbmcodCxlLG4pe3JldHVybiJ5Ij09PXRoaXMuYXhpcz8iIjooZXx8IW4/dGhpcy5kb21EaW0ud2lkdGg6dGhpcy5nZXRNYWpvclhQb3NpdGlvbihuKSktdGhpcy5nZXRNYWpvclhQb3NpdGlvbih0KSsicHgifWdldE1ham9yWVBvc2l0aW9uKHQpe3JldHVybiJ4Ij09PXRoaXMuYXhpcz8wOnRoaXMuZG9tRGltLmhlaWdodC1NYXRoLm1pbih0aGlzLmRvbURpbS5oZWlnaHQsTWF0aC5tYXgoMCx0aGlzLmdldERvbVBvcyh0LnN0YXJ0KSkpfWdldE1ham9ySGVpZ2h0U3RyaW5nKHQsZSxuKXtyZXR1cm4ieCI9PT10aGlzLmF4aXM/IiI6KGV8fCFuP3RoaXMuZG9tRGltLmhlaWdodDp0aGlzLmdldE1ham9yWVBvc2l0aW9uKG4pKS10aGlzLmdldE1ham9yWVBvc2l0aW9uKHQpKyJweCJ9a2V5ZG93blByZXZlbnRDbG9zZSh0KXsiRXNjYXBlIiE9PXQua2V5JiZ0LnN0b3BQcm9wYWdhdGlvbigpfWV4dGVudENoYW5nZWQodCxlKXtsZXQgbj1OdW1iZXIodCksbz1OdW1iZXIoZSk7aWYobzxuKXtjb25zdCB0PW47bj1vLG89dH1OdW1iZXIuaXNGaW5pdGUobikmJk51bWJlci5pc0Zpbml0ZShvKSYmdGhpcy5vblZpZXdFeHRlbnRDaGFuZ2UuZW1pdChbbixvXSl9b25BeGlzVXBkYXRlTWVudU9wZW4odCxlLG4pe3QudmFsdWU9U3RyaW5nKG5bMF0pLGUudmFsdWU9U3RyaW5nKG5bMV0pLHQuZm9jdXMoKX1zZXRFZGl0TWVudU9wZW5lZCh0KXt0aGlzLmVkaXRNZW51T3BlbmVkPXR9fU1odC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8TWh0KX0sTWh0Lsm1Y21wPXNvKHt0eXBlOk1odCxzZWxlY3RvcnM6W1sibGluZS1jaGFydC1heGlzIl1dLGlucHV0czp7YXhpc0V4dGVudDoiYXhpc0V4dGVudCIsYXhpczoiYXhpcyIsc2NhbGU6InNjYWxlIixncmlkQ291bnQ6ImdyaWRDb3VudCIsZG9tRGltOiJkb21EaW0iLGN1c3RvbUZvcm1hdHRlcjoiY3VzdG9tRm9ybWF0dGVyIn0sb3V0cHV0czp7b25WaWV3RXh0ZW50Q2hhbmdlOiJvblZpZXdFeHRlbnRDaGFuZ2UifSxmZWF0dXJlczpbcW9dLGRlY2xzOjI2LHZhcnM6MTMsY29uc3RzOltbMSwibGluZSJdLFsxLCJtaW5vciJdLFsxLCJ0aWNrcyJdLFsiY2xhc3MiLCJtaW5vci10aWNrLWxhYmVsIiw0LCJuZ0ZvciIsIm5nRm9yT2YiLCJuZ0ZvclRyYWNrQnkiXSxbIm1hdC1pY29uLWJ1dHRvbiIsIiIsInRpdGxlIiwiQ2xpY2sgdG8gbWFudWFsbHkgc2V0IG1pbiAmIG1heCB2YWx1ZXMiLDMsIm1hdE1lbnVUcmlnZ2VyRm9yIiwibWVudU9wZW5lZCIsIm1lbnVDbG9zZWQiXSxbIm1hdE1lbnVUcmlnZ2VyIiwibWF0TWVudVRyaWdnZXIiXSxbInN2Z0ljb24iLCJlZGl0XzI0cHgiXSxbImNsYXNzIiwibWFqb3IgdGlja3MiLDQsIm5nSWYiXSxbInhQb3NpdGlvbiIsImJlZm9yZSIsMywieVBvc2l0aW9uIl0sWyJtYW51YWxDb250cm9sIiwibWF0TWVudSJdLFsxLCJleHRlbnQtZWRpdC1pbnB1dCIsMywiY2xpY2siLCJrZXlkb3duIl0sWyJ0eXBlIiwibnVtYmVyIiwzLCJ2YWx1ZSJdLFsibWluSW5wdXQiLCIiXSxbIm1heElucHV0IiwiIl0sWzEsImV4dGVudC1lZGl0LWNvbnRyb2wiLDMsImtleWRvd24iXSxbIm1hdC1yYWlzZWQtYnV0dG9uIiwiIiwiY29sb3IiLCJwcmltYXJ5IiwxLCJleHRlbnQtZWRpdC1jaGFuZ2UiLDMsImNsaWNrIl0sWyJtYXQtc3Ryb2tlZC1idXR0b24iLCIiLDEsImV4dGVudC1lZGl0LWNhbmNlbCIsMywiY2xpY2siXSxbMSwibWlub3ItdGljay1sYWJlbCJdLFsxLCJtYWpvciIsInRpY2tzIl0sWzMsIm1ham9yLWxhYmVsIiwibGFzdCIsImxlZnQiLCJ3aWR0aCIsImJvdHRvbSIsImhlaWdodCIsImZvbnQiLCJ0aXRsZSIsNCwibmdGb3IiLCJuZ0Zvck9mIiwibmdGb3JUcmFja0J5Il0sWzMsInRpdGxlIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXtpZigxJmUpe2NvbnN0IHQ9d2YoKTtDZigwLCJkaXYiKSx2ZigxLCJkaXYiLDApLENmKDIsImRpdiIsMSksb2EoKSxDZigzLCJzdmciLDIpLEhtKDQseWh0LDUsNiwiZyIsMyksTWYoKSxhYSgpLENmKDUsImJ1dHRvbiIsNCw1KSxSZigibWVudU9wZW5lZCIsKGZ1bmN0aW9uIGUoKXtQaSh0KTtjb25zdCBvPUZtKDE1KSxpPUZtKDIwKTtyZXR1cm4gbi5vbkF4aXNVcGRhdGVNZW51T3BlbihvLGksbi5heGlzRXh0ZW50KSxuLnNldEVkaXRNZW51T3BlbmVkKCEwKX0pKSgibWVudUNsb3NlZCIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5zZXRFZGl0TWVudU9wZW5lZCghMSl9KSksdmYoNywibWF0LWljb24iLDYpLE1mKCksTWYoKSxIbSg4LENodCwyLDIsImRpdiIsNyksTWYoKSxDZig5LCJtYXQtbWVudSIsOCw5KSxDZigxMSwiZGl2IiwxMCksUmYoImNsaWNrIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gZS5zdG9wUHJvcGFnYXRpb24oKX0pKSgia2V5ZG93biIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4ua2V5ZG93blByZXZlbnRDbG9zZShlKX0pKSxDZigxMiwibGFiZWwiKSxQdSgxMywibWluIiksTWYoKSx2ZigxNCwiaW5wdXQiLDExLDEyKSxNZigpLENmKDE2LCJkaXYiLDEwKSxSZigiY2xpY2siLChmdW5jdGlvbiB0KGUpe3JldHVybiBlLnN0b3BQcm9wYWdhdGlvbigpfSkpKCJrZXlkb3duIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5rZXlkb3duUHJldmVudENsb3NlKGUpfSkpLENmKDE3LCJsYWJlbCIpLFB1KDE4LCJtYXgiKSxNZigpLHZmKDE5LCJpbnB1dCIsMTEsMTMpLE1mKCksQ2YoMjEsImRpdiIsMTQpLFJmKCJrZXlkb3duIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5rZXlkb3duUHJldmVudENsb3NlKGUpfSkpLENmKDIyLCJidXR0b24iLDE1KSxSZigiY2xpY2siLChmdW5jdGlvbiBlKCl7UGkodCk7Y29uc3Qgbz1GbSgxNSksaT1GbSgyMCksYT1GbSg2KTtyZXR1cm4gbi5leHRlbnRDaGFuZ2VkKG8udmFsdWUsaS52YWx1ZSksYS5jbG9zZU1lbnUoKX0pKSxQdSgyMywiIENoYW5nZSAiKSxNZigpLENmKDI0LCJidXR0b24iLDE2KSxSZigiY2xpY2siLChmdW5jdGlvbiBlKCl7UGkodCk7cmV0dXJuIEZtKDYpLmNsb3NlTWVudSgpfSkpLFB1KDI1LCIgQ2FuY2VsICIpLE1mKCksTWYoKSxNZigpfWlmKDImZSl7Y29uc3QgdD1GbSgxMCk7bXUobi5heGlzKyItYXhpcyBheGlzIiksRGMoNCksYmYoIm5nRm9yT2YiLG4ubWlub3JUaWNrcykoIm5nRm9yVHJhY2tCeSIsbi50cmFja0J5TWlub3JUaWNrKSxEYygxKSxjdSgiZXh0ZW50LWVkaXQtYnV0dG9uIiwhMCkoImV4dGVudC1lZGl0LW1lbnUtb3BlbmVkIixuLmVkaXRNZW51T3BlbmVkKSxiZigibWF0TWVudVRyaWdnZXJGb3IiLHQpLERjKDMpLGJmKCJuZ0lmIixuLm1ham9yVGlja3MubGVuZ3RoKSxEYygxKSxiZigieVBvc2l0aW9uIiwieSI9PT1uLmF4aXM/ImFib3ZlIjoiYmVsb3ciKSxEYyg1KSxiZigidmFsdWUiLG4uYXhpc0V4dGVudFswXSksRGMoNSksYmYoInZhbHVlIixuLmF4aXNFeHRlbnRbMV0pfX0sZGlyZWN0aXZlczpbeHYsTkwscXEsTXEsUHYsanFdLHN0eWxlczpbJy5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjlweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHh9Lm1hdC1oMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaGVhZGxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDI0cHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTVweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWg2W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1ib2R5LXN0cm9uZ1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYXJkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FyZC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MjRweH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNhbGVuZGFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZGlhbG9nLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVlbSAwO2JvcmRlci10b3A6Ljg0Mzc1ZW0gc29saWQgdHJhbnNwYXJlbnR9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17dG9wOi0wLjg0Mzc1ZW07cGFkZGluZy10b3A6Ljg0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6NzUlO21hcmdpbi10b3A6LjY2NjY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS43OTE2NjY2NjY3ZW0pfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjQzNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDJweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIzZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4yODEyNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LjU0MTY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS42NjY2NjY2NjY3ZW0pfUBtZWRpYSBwcmludHsubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjJlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjFlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyZW0pIHNjYWxlKDAuNzUpfX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouMjVlbSAwIC43NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjA5Mzc1ZW07bWFyZ2luLXRvcDotMC41ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoxZW0gMCAxZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuODQzNzVlbTttYXJnaW4tdG9wOi0wLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMiksIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fWlucHV0Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi0wLjA2MjVlbX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHh9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtfS5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1zdGVwLXN1Yi1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6bm9ybWFsfS5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1zdGVwLWxhYmVsLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10YWItZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MH0ubWF0LXRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTBweDtwYWRkaW5nLXRvcDo2cHg7cGFkZGluZy1ib3R0b206NnB4fS5tYXQtdG9vbHRpcC1oYW5kc2V0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4fS5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtc2ltcGxlLXNuYWNrYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHh9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoxO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjE0cHh9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV06bm90KDplbXB0eSl7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9Lm1hdC1yaXBwbGUubWF0LXJpcHBsZS11bmJvdW5kZWRbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OnZpc2libGV9Lm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJhZGl1czo1MCU7cG9pbnRlci1ldmVudHM6bm9uZTt0cmFuc2l0aW9uOm9wYWNpdHksdHJhbnNmb3JtIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTt0cmFuc2Zvcm06c2NhbGUoMCl9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9LmNkay12aXN1YWxseS1oaWRkZW5bX25nY29udGVudC0lQ09NUCVde2JvcmRlcjowO2NsaXA6cmVjdCgwIDAgMCAwKTtoZWlnaHQ6MXB4O21hcmdpbjotMXB4O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4O3doaXRlLXNwYWNlOm5vd3JhcDtvdXRsaW5lOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0sIC5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cG9pbnRlci1ldmVudHM6bm9uZTt0b3A6MDtsZWZ0OjA7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV06ZW1wdHl7ZGlzcGxheTpub25lfS5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktcGFuZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6YXV0bztib3gtc2l6aW5nOmJvcmRlci1ib3g7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDttYXgtd2lkdGg6MTAwJTttYXgtaGVpZ2h0OjEwMCV9LmNkay1vdmVybGF5LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDt6LWluZGV4OjEwMDA7cG9pbnRlci1ldmVudHM6YXV0bzstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnQ7dHJhbnNpdGlvbjpvcGFjaXR5IDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpO29wYWNpdHk6MH0uY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eToxfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6LjZ9LmNkay1vdmVybGF5LWRhcmstYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMzIpfS5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV0sIC5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWNvbm5lY3RlZC1wb3NpdGlvbi1ib3VuZGluZy1ib3hbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO21pbi13aWR0aDoxcHg7bWluLWhlaWdodDoxcHh9LmNkay1nbG9iYWwtc2Nyb2xsYmxvY2tbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3dpZHRoOjEwMCU7b3ZlcmZsb3cteTpzY3JvbGx9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplW19uZ2NvbnRlbnQtJUNPTVAlXXtyZXNpemU6bm9uZX10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDphdXRvICFpbXBvcnRhbnQ7b3ZlcmZsb3c6aGlkZGVuICFpbXBvcnRhbnR9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZy1maXJlZm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDowICFpbXBvcnRhbnR9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydHt9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmR7fS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGx7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0IDBzIDFtc30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOi13ZWJraXQtYXV0b2ZpbGwpe2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmQgMHMgMW1zfS5tYXQtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LW1kYy1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfVtfbmdob3N0LSVDT01QJV17Y29udGFpbjpzdHJpY3Q7ZGlzcGxheTpmbGV4O292ZXJmbG93OmhpZGRlbn0ubWFqb3ItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCB0ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtmaWxsOmN1cnJlbnRDb2xvcjtmb250LXNpemU6MTFweDt1c2VyLXNlbGVjdDpub25lfS5heGlzW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0ubWFqb3JbX25nY29udGVudC0lQ09NUCVdLCAubWlub3JbX25nY29udGVudC0lQ09NUCVde2ZsZXg6MSAwO292ZXJmbG93OmhpZGRlbn0ubGluZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojYWFhO2ZsZXg6MCAwIDFweDtqdXN0aWZ5LWNvbnRlbnQ6c3RyZXRjaH0udGlja3NbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxMDAlO3Bvc2l0aW9uOnJlbGF0aXZlO3dpZHRoOjEwMCV9LngtYXhpc1tfbmdjb250ZW50LSVDT01QJV17ZmxleC1kaXJlY3Rpb246Y29sdW1ufS54LWF4aXNbX25nY29udGVudC0lQ09NUCVdICAgLmxpbmVbX25nY29udGVudC0lQ09NUCVde21hcmdpbi1ib3R0b206M3B4fS54LWF4aXNbX25nY29udGVudC0lQ09NUCVdICAgdGV4dFtfbmdjb250ZW50LSVDT01QJV17ZG9taW5hbnQtYmFzZWxpbmU6dGV4dC1iZWZvcmUtZWRnZTt0ZXh0LWFuY2hvcjptaWRkbGV9LngtYXhpc1tfbmdjb250ZW50LSVDT01QJV0gICAudGlja3NbX25nY29udGVudC0lQ09NUCVdey13ZWJraXQtbWFzay1pbWFnZTpsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsICMwMDAwIDAlLCAjMDAwIDEwJSwgIzAwMCA5MCUsICMwMDAwIDEwMCUpO21hc2staW1hZ2U6bGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCAjMDAwMCAwJSwgIzAwMCAxMCUsICMwMDAgOTAlLCAjMDAwMCAxMDAlKX0ueS1heGlzW19uZ2NvbnRlbnQtJUNPTVAlXXtmbGV4LWRpcmVjdGlvbjpyb3ctcmV2ZXJzZX0ueS1heGlzW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tbGVmdDo1cHh9LnktYXhpc1tfbmdjb250ZW50LSVDT01QJV0gICB0ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtkb21pbmFudC1iYXNlbGluZTpjZW50cmFsO3RleHQtYW5jaG9yOmVuZH0ueS1heGlzW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC50aWNrc1tfbmdjb250ZW50LSVDT01QJV17LXdlYmtpdC1tYXNrLWltYWdlOmxpbmVhci1ncmFkaWVudCh0byBib3R0b20sICMwMDAwIDAlLCAjMDAwIDEwJSwgIzAwMCA5MCUsICMwMDAwIDEwMCUpO21hc2staW1hZ2U6bGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgIzAwMDAgMCUsICMwMDAgMTAlLCAjMDAwIDkwJSwgIzAwMDAgMTAwJSl9LmV4dGVudC1lZGl0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZWVlO2ZvbnQtc2l6ZTowO2hlaWdodDoyNHB4O2xpbmUtaGVpZ2h0OjI0cHg7cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6NXB4O3RvcDo1cHg7dmlzaWJpbGl0eTpoaWRkZW47d2lkdGg6MjRweH0uZXh0ZW50LWVkaXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIG1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MTZweDt3aWR0aDoxNnB4O2xpbmUtaGVpZ2h0OjE2cHh9LmV4dGVudC1lZGl0LWlucHV0W19uZ2NvbnRlbnQtJUNPTVAlXXthbGlnbi1pdGVtczpjZW50ZXI7Y29sdW1uLWdhcDo1cHg7ZGlzcGxheTpncmlkO2ZvbnQtc2l6ZToxMnB4O2dyaWQtdGVtcGxhdGUtY29sdW1uczozMHB4IG1pbm1heChhdXRvLCAxMDBweCk7aGVpZ2h0OjMwcHg7bWFyZ2luOjEwcHggMjBweH0uZXh0ZW50LWVkaXQtaW5wdXRbX25nY29udGVudC0lQ09NUCVdICAgaW5wdXRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6aW5oZXJpdDtib3JkZXItcmFkaXVzOjRweDtib3JkZXItc3R5bGU6c29saWQ7Y29sb3I6aW5oZXJpdH0uZXh0ZW50LWVkaXQtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV17YWxpZ24taXRlbXM6Y2VudGVyO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpyb3ctcmV2ZXJzZTtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1lbmQ7bWFyZ2luOjEwcHggMjBweH0uZXh0ZW50LWVkaXQtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV0gICBidXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2hlaWdodDozMHB4O2xpbmUtaGVpZ2h0OjEuNDttYXJnaW4tbGVmdDo1cHg7cGFkZGluZzowIDEwcHh9LmF4aXNbX25nY29udGVudC0lQ09NUCVdOmhvdmVyICAgLmV4dGVudC1lZGl0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5heGlzW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cy13aXRoaW4gICAuZXh0ZW50LWVkaXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmV4dGVudC1lZGl0LW1lbnUtb3BlbmVkW19uZ2NvbnRlbnQtJUNPTVAlXXt2aXNpYmlsaXR5OnZpc2libGV9Lm1ham9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZTtvdmVyZmxvdzpoaWRkZW47Y29udGFpbjpzdHJpY3R9Lm1ham9yW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYWpvci1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17YWxpZ24taXRlbXM6Y2VudGVyO2JveC1zaXppbmc6Ym9yZGVyLWJveDtkaXNwbGF5OmlubGluZS1mbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXI7b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOmFic29sdXRlO3doaXRlLXNwYWNlOm5vd3JhcH0ubWFqb3JbX25nY29udGVudC0lQ09NUCVdICAgLm1ham9yLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHNwYW5bX25nY29udGVudC0lQ09NUCVde21heC13aWR0aDoxMDAlfS54LWF4aXNbX25nY29udGVudC0lQ09NUCVdICAgLm1ham9yLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItbGVmdDoxcHggc29saWQgIzllOWU5ZTtwYWRkaW5nOjAgNXB4fS54LWF4aXNbX25nY29udGVudC0lQ09NUCVdICAgLm1ham9yLWxhYmVsLmxhc3RbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1yaWdodDoxcHggc29saWQgIzllOWU5ZX0ueS1heGlzW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYWpvci1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWJvdHRvbToxcHggc29saWQgIzllOWU5ZTtoZWlnaHQ6MTAwJTtwYWRkaW5nOjVweCAwO3dpZHRoOjEwMCV9LnktYXhpc1tfbmdjb250ZW50LSVDT01QJV0gICAubWFqb3ItbGFiZWwubGFzdFtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLXRvcDoxcHggc29saWQgIzllOWU5ZX0ueS1heGlzW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYWpvci1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0gPiBzcGFuW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06cm90YXRlKC05MGRlZyk7dHJhbnNmb3JtLW9yaWdpbjpjZW50ZXJ9J10sY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKE1odCxbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJsaW5lLWNoYXJ0LWF4aXMiLHRlbXBsYXRlVXJsOiJsaW5lX2NoYXJ0X2F4aXNfdmlldy5uZy5odG1sIixzdHlsZVVybHM6WyJsaW5lX2NoYXJ0X2F4aXNfdmlldy5jc3MiXSxjaGFuZ2VEZXRlY3Rpb246am4uT25QdXNofV19XSxudWxsLHtheGlzRXh0ZW50Olt7dHlwZTpSX31dLGF4aXM6W3t0eXBlOlJffV0sc2NhbGU6W3t0eXBlOlJffV0sZ3JpZENvdW50Olt7dHlwZTpSX31dLGRvbURpbTpbe3R5cGU6Ul99XSxjdXN0b21Gb3JtYXR0ZXI6W3t0eXBlOlJffV0sb25WaWV3RXh0ZW50Q2hhbmdlOlt7dHlwZTpFX31dfSk7Y29uc3Qgdmh0PVsic2VyaWVzVmlldyJdLHhodD1bInhBeGlzIl0sT2h0PVsieUF4aXMiXSxQaHQ9WyJjaGFydEVsIl07ZnVuY3Rpb24gd2h0KHQsZSl7aWYoMSZ0JiZ2ZigwLCJsaW5lLWNoYXJ0LWdyaWQtdmlldyIsMTUpLDImdCl7Y29uc3QgdD16ZigpO2JmKCJ2aWV3RXh0ZW50Iix0LnZpZXdCb3gpKCJ4U2NhbGUiLHQueFNjYWxlKSgieVNjYWxlIix0LnlTY2FsZSkoInhHcmlkQ291bnQiLHQuWF9HUklEX0NPVU5UKSgieUdyaWRDb3VudCIsdC5ZX0dSSURfQ09VTlQpKCJkb21EaW0iLHQuZG9tRGltZW5zaW9ucy5tYWluKX19ZnVuY3Rpb24ga2h0KHQsZSl7MSZ0JiYob2EoKSx2ZigwLCJzdmciLG51bGwsMTYpKX1mdW5jdGlvbiBTaHQodCxlKXsxJnQmJnZmKDAsImNhbnZhcyIsbnVsbCwxNil9ZnVuY3Rpb24gRGh0KHQsZSl7aWYoMSZ0JiYoeGYoMCksSG0oMSxraHQsMiwwLCJzdmciLDUpLEhtKDIsU2h0LDIsMCwiY2FudmFzIiw1KSxPZigpKSwyJnQpe2NvbnN0IHQ9emYoKTtEYygxKSxiZigibmdJZiIsdC5nZXRSZW5kZXJlclR5cGUoKT09PXQuUmVuZGVyZXJUeXBlLlNWRyksRGMoMSksYmYoIm5nSWYiLHQuZ2V0UmVuZGVyZXJUeXBlKCk9PT10LlJlbmRlcmVyVHlwZS5XRUJHTCl9fWZ1bmN0aW9uIFJodCh0LGUpe2lmKDEmdCl7Y29uc3QgdD13ZigpO0NmKDAsImxpbmUtY2hhcnQtaW50ZXJhY3RpdmUtdmlldyIsMTcpLFJmKCJvblZpZXdFeHRlbnRDaGFuZ2UiLChmdW5jdGlvbiBlKG4pe1BpKHQpO3JldHVybiB6ZigpLm9uVmlld0JveENoYW5nZWQobil9KSkoIm9uVmlld0V4dGVudFJlc2V0IiwoZnVuY3Rpb24gZSgpe1BpKHQpO3JldHVybiB6ZigpLnZpZXdCb3hSZXNldCgpfSkpLE1mKCl9aWYoMiZ0KXtjb25zdCB0PXpmKCksZT1GbSgxKTtiZigic2VyaWVzRGF0YSIsdC5zZXJpZXNEYXRhKSgic2VyaWVzTWV0YWRhdGFNYXAiLHQuc2VyaWVzTWV0YWRhdGFNYXApKCJ2aWV3RXh0ZW50Iix0LnZpZXdCb3gpKCJ4U2NhbGUiLHQueFNjYWxlKSgieVNjYWxlIix0LnlTY2FsZSkoInRvb2x0aXBPcmlnaW5FbCIsZSkoImRvbURpbSIsdC5kb21EaW1lbnNpb25zLm1haW4pKCJ0b29sdGlwVGVtcGxhdGUiLHQudG9vbHRpcFRlbXBsYXRlKX19Y29uc3QgRWh0PWZ1bmN0aW9uKHQsZSxuLG8pe3JldHVybnt4U2NhbGU6dCx5U2NhbGU6ZSxkb21EaW1lbnNpb246bix2aWV3RXh0ZW50Om99fTtmdW5jdGlvbiBBaHQodCxlKXtpZigxJnQmJihDZigwLCJkaXYiLDE4KSxQZigxLDE5KSxNZigpKSwyJnQpe2NvbnN0IHQ9emYoKTtEYygxKSxiZigibmdUZW1wbGF0ZU91dGxldCIsdC5jdXN0b21WaXNUZW1wbGF0ZSkoIm5nVGVtcGxhdGVPdXRsZXRDb250ZXh0IixzeSgyLEVodCx0LnhTY2FsZSx0LnlTY2FsZSx0LmRvbURpbWVuc2lvbnMubWFpbix0LnZpZXdCb3gpKX19ZnVuY3Rpb24gVGh0KHQsZSl7aWYoMSZ0KXtjb25zdCB0PXdmKCk7Q2YoMCwibGluZS1jaGFydC1heGlzIiwyMCksUmYoIm9uVmlld0V4dGVudENoYW5nZSIsKGZ1bmN0aW9uIGUobil7UGkodCk7cmV0dXJuIHpmKCkub25WaWV3Qm94Q2hhbmdlZEZyb21BeGlzKG4sInkiKX0pKSxNZigpfWlmKDImdCl7Y29uc3QgdD16ZigpO2JmKCJheGlzRXh0ZW50Iix0LnZpZXdCb3gueSkoImN1c3RvbUZvcm1hdHRlciIsdC5jdXN0b21ZRm9ybWF0dGVyKSgiZG9tRGltIix0LmRvbURpbWVuc2lvbnMueUF4aXMpKCJncmlkQ291bnQiLHQuWV9HUklEX0NPVU5UKSgic2NhbGUiLHQueVNjYWxlKX19ZnVuY3Rpb24gTmh0KHQsZSl7aWYoMSZ0KXtjb25zdCB0PXdmKCk7Q2YoMCwibGluZS1jaGFydC1heGlzIiwyMSksUmYoIm9uVmlld0V4dGVudENoYW5nZSIsKGZ1bmN0aW9uIGUobil7UGkodCk7cmV0dXJuIHpmKCkub25WaWV3Qm94Q2hhbmdlZEZyb21BeGlzKG4sIngiKX0pKSxNZigpfWlmKDImdCl7Y29uc3QgdD16ZigpO2JmKCJheGlzRXh0ZW50Iix0LnZpZXdCb3gueCkoImN1c3RvbUZvcm1hdHRlciIsdC5jdXN0b21YRm9ybWF0dGVyKSgiZG9tRGltIix0LmRvbURpbWVuc2lvbnMueEF4aXMpKCJncmlkQ291bnQiLHQuWF9HUklEX0NPVU5UKSgic2NhbGUiLHQueFNjYWxlKX19Y29uc3Qgemh0PWZ1bmN0aW9uKHQsZSxuLG8saSl7cmV0dXJue3hTY2FsZTp0LHlTY2FsZTplLGRvbURpbWVuc2lvbjpuLHZpZXdFeHRlbnQ6byxmb3JtYXR0ZXI6aX19O2Z1bmN0aW9uIElodCh0LGUpe2lmKDEmdCYmKENmKDAsImRpdiIsMTgpLFBmKDEsMTkpLE1mKCkpLDImdCl7Y29uc3QgdD16ZigpO0RjKDEpLGJmKCJuZ1RlbXBsYXRlT3V0bGV0Iix0LmN1c3RvbVhBeGlzVGVtcGxhdGUpKCJuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dCIsbHkoMix6aHQsdC54U2NhbGUsdC55U2NhbGUsdC5kb21EaW1lbnNpb25zLnhBeGlzLHQudmlld0JveCx0LmN1c3RvbVhGb3JtYXR0ZXJ8fHQueFNjYWxlLmRlZmF1bHRGb3JtYXR0ZXIpKX19ZnVuY3Rpb24gSGh0KHQsZSl7MSZ0JiYoQ2YoMCwiZGl2IiwyMiksdmYoMSwic3BhbiIsMjMpLE1mKCkpfWNvbnN0IEZodD1mdW5jdGlvbih0LGUpe3JldHVybntjb250YWluZXI6ITAsImRhcmstbW9kZSI6dCwibGluZS1vbmx5LW1vZGUiOmV9fSxMaHQ9e3g6WzAsMV0seTpbMCwxXX07Y2xhc3MgQmh0e2NvbnN0cnVjdG9yKHQpe3RoaXMuY2hhbmdlRGV0ZWN0b3I9dCx0aGlzLlJlbmRlcmVyVHlwZT1lNix0aGlzLnVzZURhcmtNb2RlPSExLHRoaXMucHJlZmVycmVkUmVuZGVyZXJUeXBlPWU2LldFQkdMLHRoaXMueFNjYWxlVHlwZT1uNi5MSU5FQVIsdGhpcy55U2NhbGVUeXBlPW42LkxJTkVBUix0aGlzLmxpbmVPbmx5PSExLHRoaXMub25WaWV3Qm94T3ZlcnJpZGRlbj1uZXcgVygxKSx0aGlzLmlnbm9yZVlPdXRsaWVycz0hMSx0aGlzLllfR1JJRF9DT1VOVD02LHRoaXMuWF9HUklEX0NPVU5UPTEwLHRoaXMueFNjYWxlPWdydCh0aGlzLnhTY2FsZVR5cGUpLHRoaXMueVNjYWxlPWdydCh0aGlzLnhTY2FsZVR5cGUpLHRoaXMudmlld0JveD1MaHQsdGhpcy5kb21EaW1lbnNpb25zPXttYWluOnt3aWR0aDowLGhlaWdodDowfSx4QXhpczp7d2lkdGg6MCxoZWlnaHQ6MH0seUF4aXM6e3dpZHRoOjAsaGVpZ2h0OjB9fSx0aGlzLnNob3dDaGFydFJlbmRlcmVyRWxlbWVudD0hMCx0aGlzLmxpbmVDaGFydD1udWxsLHRoaXMuaXNEYXRhVXBkYXRlZD0hMSx0aGlzLmlzTWV0YWRhdGFVcGRhdGVkPSExLHRoaXMuaXNGaXhlZFZpZXdCb3hVcGRhdGVkPSExLHRoaXMuaXNWaWV3Qm94T3ZlcnJpZGRlbj0hMSx0aGlzLnVzZURhcmtNb2RlVXBkYXRlZD0hMSx0aGlzLmlzVmlld0JveENoYW5nZWQ9ITAsdGhpcy5zY2FsZVVwZGF0ZWQ9ITAsdGhpcy5pc1JlbmRlcmluZ0NvbnRleHRMb3N0PSExfW5nT25Jbml0KCl7dGhpcy5vblZpZXdCb3hPdmVycmlkZGVuLm5leHQodGhpcy5pc1ZpZXdCb3hPdmVycmlkZGVuKX1uZ09uQ2hhbmdlcyh0KXt0LnhTY2FsZVR5cGUmJih0aGlzLnhTY2FsZT1ncnQodGhpcy54U2NhbGVUeXBlKSx0aGlzLnNjYWxlVXBkYXRlZD0hMCksdC55U2NhbGVUeXBlJiYodGhpcy55U2NhbGU9Z3J0KHRoaXMueVNjYWxlVHlwZSksdGhpcy5zY2FsZVVwZGF0ZWQ9ITApLHQuc2VyaWVzRGF0YSYmKHRoaXMuaXNEYXRhVXBkYXRlZD0hMCksdC5maXhlZFZpZXdCb3gmJih0aGlzLmlzRml4ZWRWaWV3Qm94VXBkYXRlZD0hMCksdC5zZXJpZXNNZXRhZGF0YU1hcCYmKHRoaXMuaXNNZXRhZGF0YVVwZGF0ZWQ9ITApLHQudXNlRGFya01vZGUmJih0aGlzLnVzZURhcmtNb2RlVXBkYXRlZD0hMCksdGhpcy5zY2FsZVVwZGF0ZWQmJnRoaXMuc2V0SXNWaWV3Qm94T3ZlcnJpZGRlbighMSksdGhpcy5pc1ZpZXdCb3hDaGFuZ2VkPXRoaXMuaXNWaWV3Qm94Q2hhbmdlZHx8dGhpcy5zY2FsZVVwZGF0ZWR8fCF0aGlzLmlzVmlld0JveE92ZXJyaWRkZW4mJnRoaXMuc2hvdWxkVXBkYXRlRGVmYXVsdFZpZXdCb3godCksdGhpcy51cGRhdGVMaW5lQ2hhcnQoKX1uZ0FmdGVyVmlld0luaXQoKXt0aGlzLmluaXRpYWxpemVDaGFydCgpLHRoaXMudXBkYXRlTGluZUNoYXJ0KCksdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCl9cmVjb3ZlclJlbmRlcmVySWZOZWVkZWQoKXt0aGlzLmlzUmVuZGVyaW5nQ29udGV4dExvc3QmJiF0aGlzLmRpc2FibGVVcGRhdGUmJih0aGlzLnNob3dDaGFydFJlbmRlcmVyRWxlbWVudD0hMSx0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKSx0aGlzLnNob3dDaGFydFJlbmRlcmVyRWxlbWVudD0hMCx0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKSx0aGlzLmluaXRpYWxpemVDaGFydCgpLHRoaXMuc2NhbGVVcGRhdGVkPSEwLHRoaXMuaXNNZXRhZGF0YVVwZGF0ZWQ9ITAsdGhpcy5pc0RhdGFVcGRhdGVkPSEwLHRoaXMudXNlRGFya01vZGVVcGRhdGVkPSEwLHRoaXMuaXNGaXhlZFZpZXdCb3hVcGRhdGVkPSEwLHRoaXMuaXNWaWV3Qm94Q2hhbmdlZD0hMCx0aGlzLmlzUmVuZGVyaW5nQ29udGV4dExvc3Q9ITEpfW9uVmlld1Jlc2l6ZSgpe3RoaXMubGluZUNoYXJ0JiYodGhpcy5yZWFkQW5kVXBkYXRlRG9tRGltZW5zaW9ucygpLHRoaXMubGluZUNoYXJ0LnJlc2l6ZSh0aGlzLmRvbURpbWVuc2lvbnMubWFpbiksdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCkpfXNob3VsZFVwZGF0ZURlZmF1bHRWaWV3Qm94KHQpe2lmKHQueFNjYWxlVHlwZXx8dC55U2NhbGVUeXBlfHx0Lmlnbm9yZVlPdXRsaWVycylyZXR1cm4hMDtpZih0LnNlcmllc0RhdGEpcmV0dXJuITA7Y29uc3QgZT10LnNlcmllc01ldGFkYXRhTWFwO2lmKGUpe2NvbnN0IHQ9ZS5wcmV2aW91c1ZhbHVlO2lmKE9iamVjdC5rZXlzKHRoaXMuc2VyaWVzTWV0YWRhdGFNYXApLmxlbmd0aCE9PU9iamVjdC5rZXlzKG51bGwhPXQ/dDp7fSkubGVuZ3RoKXJldHVybiEwO2Zvcihjb25zdFtlLG5db2YgT2JqZWN0LmVudHJpZXModGhpcy5zZXJpZXNNZXRhZGF0YU1hcCkpe2NvbnN0IG89dCYmdFtlXTtpZighb3x8bi52aXNpYmxlIT09by52aXNpYmxlKXJldHVybiEwfX1yZXR1cm4hMX1vbkNvbnRleHRMb3N0KCl7dGhpcy5pc1JlbmRlcmluZ0NvbnRleHRMb3N0PSEwLHRoaXMubGluZUNoYXJ0JiYodGhpcy5saW5lQ2hhcnQuZGlzcG9zZSgpLHRoaXMubGluZUNoYXJ0PW51bGwpfXRyaWdnZXJDb250ZXh0TG9zdEZvclRlc3QoKXt0aGlzLm9uQ29udGV4dExvc3QoKX1nZXRMaW5lQ2hhcnRGb3JUZXN0KCl7cmV0dXJuIHRoaXMubGluZUNoYXJ0fWluaXRpYWxpemVDaGFydCgpe3RoaXMubGluZUNoYXJ0JiZ0aGlzLmxpbmVDaGFydC5kaXNwb3NlKCk7Y29uc3QgdD10aGlzLmdldFJlbmRlcmVyVHlwZSgpLGU9e29uRHJhd0VuZDooKT0+e30sb25Db250ZXh0TG9zdDp0aGlzLm9uQ29udGV4dExvc3QuYmluZCh0aGlzKX07bGV0IG49bnVsbDtzd2l0Y2godGhpcy5yZWFkQW5kVXBkYXRlRG9tRGltZW5zaW9ucygpLHQpe2Nhc2UgZTYuU1ZHOm49e3R5cGU6ZTYuU1ZHLGNvbnRhaW5lcjp0aGlzLmNoYXJ0RWwubmF0aXZlRWxlbWVudCxjYWxsYmFja3M6ZSxkb21EaW1lbnNpb246dGhpcy5kb21EaW1lbnNpb25zLm1haW4sdXNlRGFya01vZGU6dGhpcy51c2VEYXJrTW9kZX07YnJlYWs7Y2FzZSBlNi5XRUJHTDpuPXt0eXBlOmU2LldFQkdMLGNvbnRhaW5lcjp0aGlzLmNoYXJ0RWwubmF0aXZlRWxlbWVudCxkZXZpY2VQaXhlbFJhdGlvOndpbmRvdy5kZXZpY2VQaXhlbFJhdGlvLGNhbGxiYWNrczplLGRvbURpbWVuc2lvbjp0aGlzLmRvbURpbWVuc2lvbnMubWFpbix1c2VEYXJrTW9kZTp0aGlzLnVzZURhcmtNb2RlfTticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcihgPGxpbmUtY2hhcnQ+IGRvZXMgbm90IHlldCBzdXBwb3J0IHJlbmRlcmVyVHlwZTogJHt0fWApfWNvbnN0IG89dCE9PWU2LlNWRyYmQ3J0KCk7dGhpcy5saW5lQ2hhcnQ9bmV3KG8/WGd0OkdndCkobil9bmdPbkRlc3Ryb3koKXt0aGlzLmxpbmVDaGFydCYmdGhpcy5saW5lQ2hhcnQuZGlzcG9zZSgpfWdldFJlbmRlcmVyVHlwZSgpe3JldHVybiBLZ3QodGhpcy5wcmVmZXJyZWRSZW5kZXJlclR5cGUpfXJlYWRBbmRVcGRhdGVEb21EaW1lbnNpb25zKCl7dGhpcy5kb21EaW1lbnNpb25zPXttYWluOnt3aWR0aDp0aGlzLnNlcmllc1ZpZXcubmF0aXZlRWxlbWVudC5jbGllbnRXaWR0aCxoZWlnaHQ6dGhpcy5zZXJpZXNWaWV3Lm5hdGl2ZUVsZW1lbnQuY2xpZW50SGVpZ2h0fSx4QXhpczp7d2lkdGg6dGhpcy54QXhpcy5uYXRpdmVFbGVtZW50LmNsaWVudFdpZHRoLGhlaWdodDp0aGlzLnhBeGlzLm5hdGl2ZUVsZW1lbnQuY2xpZW50SGVpZ2h0fSx5QXhpczp7d2lkdGg6dGhpcy55QXhpcy5uYXRpdmVFbGVtZW50LmNsaWVudFdpZHRoLGhlaWdodDp0aGlzLnlBeGlzLm5hdGl2ZUVsZW1lbnQuY2xpZW50SGVpZ2h0fX19dXBkYXRlTGluZUNoYXJ0KCl7dmFyIHQsZTtpZih0aGlzLnJlY292ZXJSZW5kZXJlcklmTmVlZGVkKCksIXRoaXMubGluZUNoYXJ0fHx0aGlzLmRpc2FibGVVcGRhdGUpcmV0dXJuO2lmKHRoaXMuc2NhbGVVcGRhdGVkJiYodGhpcy5zY2FsZVVwZGF0ZWQ9ITEsdGhpcy5saW5lQ2hhcnQuc2V0WFNjYWxlVHlwZSh0aGlzLnhTY2FsZVR5cGUpLHRoaXMubGluZUNoYXJ0LnNldFlTY2FsZVR5cGUodGhpcy55U2NhbGVUeXBlKSksdGhpcy5pc01ldGFkYXRhVXBkYXRlZCYmKHRoaXMuaXNNZXRhZGF0YVVwZGF0ZWQ9ITEsdGhpcy5saW5lQ2hhcnQuc2V0TWV0YWRhdGEodGhpcy5zZXJpZXNNZXRhZGF0YU1hcCkpLHRoaXMuaXNEYXRhVXBkYXRlZCYmKHRoaXMuaXNEYXRhVXBkYXRlZD0hMSx0aGlzLmxpbmVDaGFydC5zZXREYXRhKHRoaXMuc2VyaWVzRGF0YSkpLHRoaXMudXNlRGFya01vZGVVcGRhdGVkJiYodGhpcy51c2VEYXJrTW9kZVVwZGF0ZWQ9ITEsdGhpcy5saW5lQ2hhcnQuc2V0VXNlRGFya01vZGUodGhpcy51c2VEYXJrTW9kZSkpLCF0aGlzLmlzVmlld0JveE92ZXJyaWRkZW4mJnRoaXMuZml4ZWRWaWV3Qm94KXRoaXMudmlld0JveD10aGlzLmZpeGVkVmlld0JveDtlbHNlIGlmKCF0aGlzLmlzVmlld0JveE92ZXJyaWRkZW4mJnRoaXMuaXNWaWV3Qm94Q2hhbmdlZCl7Y29uc3Qgbj0oZnVuY3Rpb24gbyh0LGUsbixpLGEpe2xldCByPW51bGwscz1udWxsLGw9W107Zm9yKGNvbnN0e2lkOm4scG9pbnRzOm99b2YgdCl7Y29uc3QgdD1lW25dO2lmKHQmJiF0LmF1eCYmdC52aXNpYmxlKWZvcihsZXQgdD0wO3Q8by5sZW5ndGg7dCsrKXtjb25zdHt4OmUseTpufT1vW3RdO2koZSkmJihyPW51bGw9PT1yfHxlPHI/ZTpyLHM9bnVsbD09PXN8fGU+cz9lOnMpLGEobikmJmwucHVzaChuKX19bC5zb3J0KHU2KTtsZXQgYz1sWzBdLGQ9bFtsLmxlbmd0aC0xXTtyZXR1cm4gbiYmbC5sZW5ndGg+MiYmKGM9bFtNYXRoLmNlaWwoLjA1KihsLmxlbmd0aC0xKSldLGQ9bFtNYXRoLmZsb29yKC45NSoobC5sZW5ndGgtMSkpXSkse3g6bnVsbCE9PXImJm51bGwhPT1zP1tyLHNdOnZvaWQgMCx5OnZvaWQgMCE9PWMmJnZvaWQgMCE9PWQ/W2MsZF06dm9pZCAwfX0pKHRoaXMuc2VyaWVzRGF0YSx0aGlzLnNlcmllc01ldGFkYXRhTWFwLHRoaXMuaWdub3JlWU91dGxpZXJzLHRoaXMueFNjYWxlLmlzU2FmZU51bWJlcix0aGlzLnlTY2FsZS5pc1NhZmVOdW1iZXIpO3RoaXMudmlld0JveD17eDp0aGlzLnhTY2FsZS5uaWNlRG9tYWluKG51bGwhPT0odD1uLngpJiZ2b2lkIDAhPT10P3Q6TGh0LngpLHk6dGhpcy55U2NhbGUubmljZURvbWFpbihudWxsIT09KGU9bi55KSYmdm9pZCAwIT09ZT9lOkxodC55KX19KHRoaXMuaXNGaXhlZFZpZXdCb3hVcGRhdGVkfHx0aGlzLmlzVmlld0JveENoYW5nZWQpJiYodGhpcy5pc0ZpeGVkVmlld0JveFVwZGF0ZWQ9ITEsdGhpcy5pc1ZpZXdCb3hDaGFuZ2VkPSExLHRoaXMubGluZUNoYXJ0LnNldFZpZXdCb3godGhpcy52aWV3Qm94KSl9b25WaWV3Qm94Q2hhbmdlZCh7ZGF0YUV4dGVudDp0fSl7dGhpcy5zZXRJc1ZpZXdCb3hPdmVycmlkZGVuKCEwKSx0aGlzLmlzVmlld0JveENoYW5nZWQ9ITAsdGhpcy52aWV3Qm94PXQsdGhpcy51cGRhdGVMaW5lQ2hhcnQoKX12aWV3Qm94UmVzZXQoKXt0aGlzLnNldElzVmlld0JveE92ZXJyaWRkZW4oITEpLHRoaXMuaXNWaWV3Qm94Q2hhbmdlZD0hMCx0aGlzLnVwZGF0ZUxpbmVDaGFydCgpfXNldElzVmlld0JveE92ZXJyaWRkZW4odCl7Y29uc3QgZT10aGlzLmlzVmlld0JveE92ZXJyaWRkZW47dGhpcy5pc1ZpZXdCb3hPdmVycmlkZGVuPXQsZSE9PXQmJnRoaXMub25WaWV3Qm94T3ZlcnJpZGRlbi5uZXh0KHQpfWdldElzVmlld0JveE92ZXJyaWRkZW4oKXtyZXR1cm4gdGhpcy5vblZpZXdCb3hPdmVycmlkZGVufW9uVmlld0JveENoYW5nZWRGcm9tQXhpcyh0LGUpe2NvbnN0IG49T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHRoaXMudmlld0JveCkse1tlXTp0fSk7dGhpcy5vblZpZXdCb3hDaGFuZ2VkKHtkYXRhRXh0ZW50Om59KX19Qmh0Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxCaHQpKGdmKE9iKSl9LEJodC7JtWNtcD1zbyh7dHlwZTpCaHQsc2VsZWN0b3JzOltbImxpbmUtY2hhcnQiXV0sdmlld1F1ZXJ5OmZ1bmN0aW9uIHQoZSxuKXtpZigxJmUmJihWeSh2aHQsNyxLaCksVnkoeGh0LDcsS2gpLFZ5KE9odCw3LEtoKSxWeShQaHQsNSxLaCkpLDImZSl7bGV0IHQ7QnkodD1VeSgpKSYmKG4uc2VyaWVzVmlldz10LmZpcnN0KSxCeSh0PVV5KCkpJiYobi54QXhpcz10LmZpcnN0KSxCeSh0PVV5KCkpJiYobi55QXhpcz10LmZpcnN0KSxCeSh0PVV5KCkpJiYobi5jaGFydEVsPXQuZmlyc3QpfX0saW5wdXRzOntjdXN0b21WaXNUZW1wbGF0ZToiY3VzdG9tVmlzVGVtcGxhdGUiLGN1c3RvbVhBeGlzVGVtcGxhdGU6ImN1c3RvbVhBeGlzVGVtcGxhdGUiLHVzZURhcmtNb2RlOiJ1c2VEYXJrTW9kZSIscHJlZmVycmVkUmVuZGVyZXJUeXBlOiJwcmVmZXJyZWRSZW5kZXJlclR5cGUiLHNlcmllc0RhdGE6InNlcmllc0RhdGEiLGZpeGVkVmlld0JveDoiZml4ZWRWaWV3Qm94IixzZXJpZXNNZXRhZGF0YU1hcDoic2VyaWVzTWV0YWRhdGFNYXAiLHhTY2FsZVR5cGU6InhTY2FsZVR5cGUiLHlTY2FsZVR5cGU6InlTY2FsZVR5cGUiLGN1c3RvbVhGb3JtYXR0ZXI6ImN1c3RvbVhGb3JtYXR0ZXIiLGN1c3RvbVlGb3JtYXR0ZXI6ImN1c3RvbVlGb3JtYXR0ZXIiLHRvb2x0aXBUZW1wbGF0ZToidG9vbHRpcFRlbXBsYXRlIixsaW5lT25seToibGluZU9ubHkiLGRpc2FibGVVcGRhdGU6ImRpc2FibGVVcGRhdGUiLGlnbm9yZVlPdXRsaWVyczoiaWdub3JlWU91dGxpZXJzIn0sZmVhdHVyZXM6W3FvXSxkZWNsczoxNix2YXJzOjEzLGNvbnN0czpbWyJkZXRlY3RSZXNpemUiLCIiLCJjZGtPdmVybGF5T3JpZ2luIiwiIiwzLCJuZ0NsYXNzIiwicmVzaXplRXZlbnREZWJvdW5jZVBlcmlvZEluTXMiLCJvblJlc2l6ZSJdLFsib3ZlcmxheVRhcmdldCIsImNka092ZXJsYXlPcmlnaW4iXSxbMSwic2VyaWVzLXZpZXciXSxbInNlcmllc1ZpZXciLCIiXSxbMywidmlld0V4dGVudCIsInhTY2FsZSIsInlTY2FsZSIsInhHcmlkQ291bnQiLCJ5R3JpZENvdW50IiwiZG9tRGltIiw0LCJuZ0lmIl0sWzQsIm5nSWYiXSxbMywic2VyaWVzRGF0YSIsInNlcmllc01ldGFkYXRhTWFwIiwidmlld0V4dGVudCIsInhTY2FsZSIsInlTY2FsZSIsInRvb2x0aXBPcmlnaW5FbCIsImRvbURpbSIsInRvb2x0aXBUZW1wbGF0ZSIsIm9uVmlld0V4dGVudENoYW5nZSIsIm9uVmlld0V4dGVudFJlc2V0Iiw0LCJuZ0lmIl0sWyJjbGFzcyIsImN1c3RvbS12aXMiLDQsIm5nSWYiXSxbMSwieS1heGlzIl0sWyJ5QXhpcyIsIiJdLFsiYXhpcyIsInkiLDMsImF4aXNFeHRlbnQiLCJjdXN0b21Gb3JtYXR0ZXIiLCJkb21EaW0iLCJncmlkQ291bnQiLCJzY2FsZSIsIm9uVmlld0V4dGVudENoYW5nZSIsNCwibmdJZiJdLFsxLCJ4LWF4aXMiXSxbInhBeGlzIiwiIl0sWyJheGlzIiwieCIsMywiYXhpc0V4dGVudCIsImN1c3RvbUZvcm1hdHRlciIsImRvbURpbSIsImdyaWRDb3VudCIsInNjYWxlIiwib25WaWV3RXh0ZW50Q2hhbmdlIiw0LCJuZ0lmIl0sWyJjbGFzcyIsImRvdCIsNCwibmdJZiJdLFszLCJ2aWV3RXh0ZW50IiwieFNjYWxlIiwieVNjYWxlIiwieEdyaWRDb3VudCIsInlHcmlkQ291bnQiLCJkb21EaW0iXSxbImNoYXJ0RWwiLCIiXSxbMywic2VyaWVzRGF0YSIsInNlcmllc01ldGFkYXRhTWFwIiwidmlld0V4dGVudCIsInhTY2FsZSIsInlTY2FsZSIsInRvb2x0aXBPcmlnaW5FbCIsImRvbURpbSIsInRvb2x0aXBUZW1wbGF0ZSIsIm9uVmlld0V4dGVudENoYW5nZSIsIm9uVmlld0V4dGVudFJlc2V0Il0sWzEsImN1c3RvbS12aXMiXSxbMywibmdUZW1wbGF0ZU91dGxldCIsIm5nVGVtcGxhdGVPdXRsZXRDb250ZXh0Il0sWyJheGlzIiwieSIsMywiYXhpc0V4dGVudCIsImN1c3RvbUZvcm1hdHRlciIsImRvbURpbSIsImdyaWRDb3VudCIsInNjYWxlIiwib25WaWV3RXh0ZW50Q2hhbmdlIl0sWyJheGlzIiwieCIsMywiYXhpc0V4dGVudCIsImN1c3RvbUZvcm1hdHRlciIsImRvbURpbSIsImdyaWRDb3VudCIsInNjYWxlIiwib25WaWV3RXh0ZW50Q2hhbmdlIl0sWzEsImRvdCJdLFsxLCJyZWN0Il1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihDZigwLCJkaXYiLDAsMSksUmYoIm9uUmVzaXplIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLm9uVmlld1Jlc2l6ZSgpfSkpLENmKDIsImRpdiIsMiwzKSxIbSg0LHdodCwxLDYsImxpbmUtY2hhcnQtZ3JpZC12aWV3Iiw0KSxIbSg1LERodCwzLDIsIm5nLWNvbnRhaW5lciIsNSksSG0oNixSaHQsMSw4LCJsaW5lLWNoYXJ0LWludGVyYWN0aXZlLXZpZXciLDYpLEhtKDcsQWh0LDIsNywiZGl2Iiw3KSxNZigpLENmKDgsImRpdiIsOCw5KSxIbSgxMCxUaHQsMSw1LCJsaW5lLWNoYXJ0LWF4aXMiLDEwKSxNZigpLENmKDExLCJkaXYiLDExLDEyKSxIbSgxMyxOaHQsMSw1LCJsaW5lLWNoYXJ0LWF4aXMiLDEzKSxIbSgxNCxJaHQsMiw4LCJkaXYiLDcpLE1mKCksSG0oMTUsSGh0LDIsMCwiZGl2IiwxNCksTWYoKSksMiZlJiYoYmYoIm5nQ2xhc3MiLGF5KDEwLEZodCxuLnVzZURhcmtNb2RlLG4ubGluZU9ubHkpKSgicmVzaXplRXZlbnREZWJvdW5jZVBlcmlvZEluTXMiLDApLERjKDQpLGJmKCJuZ0lmIiwhbi5saW5lT25seSksRGMoMSksYmYoIm5nSWYiLG4uc2hvd0NoYXJ0UmVuZGVyZXJFbGVtZW50KSxEYygxKSxiZigibmdJZiIsIW4ubGluZU9ubHkpLERjKDEpLGJmKCJuZ0lmIixuLmN1c3RvbVZpc1RlbXBsYXRlKSxEYygzKSxiZigibmdJZiIsIW4ubGluZU9ubHkpLERjKDMpLGJmKCJuZ0lmIiwhbi5saW5lT25seSksRGMoMSksYmYoIm5nSWYiLG4uY3VzdG9tWEF4aXNUZW1wbGF0ZSksRGMoMSksYmYoIm5nSWYiLCFuLmxpbmVPbmx5KSl9LGRpcmVjdGl2ZXM6WyRRLCRCLEN2LFB2LGVodCx1aHQsSXYsTWh0XSxzdHlsZXM6WycubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTJweDtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1iYWRnZS1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo5cHh9Lm1hdC1iYWRnZS1sYXJnZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4fS5tYXQtaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWhlYWRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAyNHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE2cHgvMjhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE1cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjgzKS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1oNltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC42NykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtYm9keS1zdHJvbmdbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MCAwIDEycHh9Lm1hdC1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FwdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTJweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6MzAwIDExMnB4LzExMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wNWVtO21hcmdpbjowIDAgNTZweH0ubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNTZweC81NnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMmVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNDVweC80OHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMDVlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDM0cHgvNDBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgNjRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FyZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjBweH0ubWF0LWNhcmQtc3VidGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcmQtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2hlY2tib3gtbGF5b3V0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC10cmFpbGluZy1pY29uLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmUubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxOHB4fS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jYWxlbmRhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FsZW5kYXItYm9keVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEzcHh9Lm1hdC1jYWxlbmRhci1ib2R5LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgdGhbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWRpYWxvZy10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMTI1O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTUwJTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjVlbTt3aWR0aDoxLjVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW07bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi41ZW0gMDtib3JkZXItdG9wOi44NDM3NWVtIHNvbGlkIHRyYW5zcGFyZW50fS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3RvcDotMC44NDM3NWVtO3BhZGRpbmctdG9wOi44NDM3NWVtfS5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjc1JTttYXJnaW4tdG9wOi42NjY2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNzkxNjY2NjY2N2VtKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi40Mzc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAycHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyM2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMjgxMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi41NDE2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNjY2NjY2NjY2N2VtKX1AbWVkaWEgcHJpbnR7Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIyZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIxZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMmVtKSBzY2FsZSgwLjc1KX19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjI1ZW0gMCAuNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4wOTM3NWVtO21hcmdpbi10b3A6LTAuNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MWVtIDAgMWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjg0Mzc1ZW07bWFyZ2luLXRvcDotMC4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH1pbnB1dC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDotMC4wNjI1ZW19Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1wYWdlLXNpemVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4fS5tYXQtcmFkaW8tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3RbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbX0ubWF0LXNsaWRlLXRvZ2dsZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXN0ZXBwZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc3RlcC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtc3RlcC1zdWItbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0Om5vcm1hbH0ubWF0LXN0ZXAtbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtc3RlcC1sYWJlbC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdGFiLWdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjB9Lm1hdC10b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEwcHg7cGFkZGluZy10b3A6NnB4O3BhZGRpbmctYm90dG9tOjZweH0ubWF0LXRvb2x0aXAtaGFuZHNldFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7cGFkZGluZy10b3A6OHB4O3BhZGRpbmctYm90dG9tOjhweH0ubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTZweH0ubWF0LW9wdGdyb3VwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LXNpbXBsZS1zbmFja2Jhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4fS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbltfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MTtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRyZWVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbmVzdGVkLXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtc2l6ZToxNHB4fS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdOm5vdCg6ZW1wdHkpe3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApfS5tYXQtcmlwcGxlLm1hdC1yaXBwbGUtdW5ib3VuZGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzp2aXNpYmxlfS5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO2JvcmRlci1yYWRpdXM6NTAlO3BvaW50ZXItZXZlbnRzOm5vbmU7dHJhbnNpdGlvbjpvcGFjaXR5LHRyYW5zZm9ybSAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7dHJhbnNmb3JtOnNjYWxlKDApfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpub25lfS5jZGstdmlzdWFsbHktaGlkZGVuW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6MDtjbGlwOnJlY3QoMCAwIDAgMCk7aGVpZ2h0OjFweDttYXJnaW46LTFweDtvdmVyZmxvdzpoaWRkZW47cGFkZGluZzowO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjFweDt3aGl0ZS1zcGFjZTpub3dyYXA7b3V0bGluZTowOy13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BvaW50ZXItZXZlbnRzOm5vbmU7dG9wOjA7bGVmdDowO2hlaWdodDoxMDAlO3dpZHRoOjEwMCV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdOmVtcHR5e2Rpc3BsYXk6bm9uZX0uY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LXBhbmVbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3BvaW50ZXItZXZlbnRzOmF1dG87Ym94LXNpemluZzpib3JkZXItYm94O3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7bWF4LXdpZHRoOjEwMCU7bWF4LWhlaWdodDoxMDAlfS5jZGstb3ZlcmxheS1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7bGVmdDowO3JpZ2h0OjA7ei1pbmRleDoxMDAwO3BvaW50ZXItZXZlbnRzOmF1dG87LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50O3RyYW5zaXRpb246b3BhY2l0eSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKTtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5Oi42fS5jZGstb3ZlcmxheS1kYXJrLWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjMyKX0uY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTowfS5jZGstb3ZlcmxheS1jb25uZWN0ZWQtcG9zaXRpb24tYm91bmRpbmctYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjttaW4td2lkdGg6MXB4O21pbi1oZWlnaHQ6MXB4fS5jZGstZ2xvYmFsLXNjcm9sbGJsb2NrW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt3aWR0aDoxMDAlO292ZXJmbG93LXk6c2Nyb2xsfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZVtfbmdjb250ZW50LSVDT01QJV17cmVzaXplOm5vbmV9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZ1tfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6YXV0byAhaW1wb3J0YW50O292ZXJmbG93OmhpZGRlbiAhaW1wb3J0YW50fXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmctZmlyZWZveFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6MCAhaW1wb3J0YW50fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnR7fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5ke30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxse2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydCAwcyAxbXN9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06bm90KDotd2Via2l0LWF1dG9maWxsKXthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5kIDBzIDFtc30ubWF0LWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1tZGMtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX1bX25naG9zdC0lQ09NUCVde2NvbnRhaW46c3RyaWN0O2Rpc3BsYXk6aW5saW5lLWJsb2NrfVtfbmdob3N0LSVDT01QJV0gICAuY3VzdG9tLXZpc1tfbmdjb250ZW50LSVDT01QJV17cG9pbnRlci1ldmVudHM6bm9uZX0uY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOmluaGVyaXQ7ZGlzcGxheTpncmlkO2hlaWdodDoxMDAlO292ZXJmbG93OmhpZGRlbjt3aWR0aDoxMDAlO2dyaWQtdGVtcGxhdGUtYXJlYXM6InlheGlzIHNlcmllcyIgImRvdCB4YXhpcyI7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjUwcHggMWZyO2dyaWQtYXV0by1yb3dzOjFmciAzMHB4fS5jb250YWluZXIuZGFyay1tb2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmfS5jb250YWluZXIubGluZS1vbmx5LW1vZGVbX25nY29udGVudC0lQ09NUCVde2dyaWQtdGVtcGxhdGUtY29sdW1uczowIDFmcjtncmlkLWF1dG8tcm93czoxZnIgMH0uc2VyaWVzLXZpZXdbX25nY29udGVudC0lQ09NUCVde2dyaWQtYXJlYTpzZXJpZXM7cG9zaXRpb246cmVsYXRpdmU7b3ZlcmZsb3c6aGlkZGVufS5zZXJpZXMtdmlld1tfbmdjb250ZW50LSVDT01QJV0gICAuY3VzdG9tLXZpc1tfbmdjb250ZW50LSVDT01QJV0sIC5zZXJpZXMtdmlld1tfbmdjb250ZW50LSVDT01QJV0gICBjYW52YXNbX25nY29udGVudC0lQ09NUCVdLCAuc2VyaWVzLXZpZXdbX25nY29udGVudC0lQ09NUCVdICAgc3ZnW19uZ2NvbnRlbnQtJUNPTVAlXSwgLnNlcmllcy12aWV3W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGxpbmUtY2hhcnQtZ3JpZC12aWV3W19uZ2NvbnRlbnQtJUNPTVAlXSwgLnNlcmllcy12aWV3W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGxpbmUtY2hhcnQtaW50ZXJhY3RpdmUtdmlld1tfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEwMCU7bGVmdDowO3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO3dpZHRoOjEwMCV9LngtYXhpc1tfbmdjb250ZW50LSVDT01QJV0gICAuY3VzdG9tLXZpc1tfbmdjb250ZW50LSVDT01QJV0sIC55LWF4aXNbX25nY29udGVudC0lQ09NUCVdICAgLmN1c3RvbS12aXNbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxMDAlO2xlZnQ6MDtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7d2lkdGg6MTAwJTstd2Via2l0LW1hc2staW1hZ2U6bGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCAjMDAwMCAwJSwgIzAwMCAxMCUsICMwMDAgOTAlLCAjMDAwMCAxMDAlKTttYXNrLWltYWdlOmxpbmVhci1ncmFkaWVudCh0byByaWdodCwgIzAwMDAgMCUsICMwMDAgMTAlLCAjMDAwIDkwJSwgIzAwMDAgMTAwJSl9LngtYXhpc1tfbmdjb250ZW50LSVDT01QJV0gICBsaW5lLWNoYXJ0LWF4aXNbX25nY29udGVudC0lQ09NUCVdLCAueS1heGlzW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGxpbmUtY2hhcnQtYXhpc1tfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEwMCV9LngtYXhpc1tfbmdjb250ZW50LSVDT01QJV17Z3JpZC1hcmVhOnhheGlzO3Bvc2l0aW9uOnJlbGF0aXZlfS55LWF4aXNbX25nY29udGVudC0lQ09NUCVde2dyaWQtYXJlYTp5YXhpc30uZG90W19uZ2NvbnRlbnQtJUNPTVAlXXthbGlnbi1pdGVtczpmbGV4LXN0YXJ0O2Rpc3BsYXk6ZmxleDtncmlkLWFyZWE6ZG90O2p1c3RpZnktY29udGVudDpmbGV4LWVuZH0uZG90W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5yZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MXB4O3dpZHRoOjFweDtiYWNrZ3JvdW5kLWNvbG9yOiNhYWF9J10sY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKEJodCxbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJsaW5lLWNoYXJ0Iix0ZW1wbGF0ZVVybDoibGluZV9jaGFydF9jb21wb25lbnQubmcuaHRtbCIsc3R5bGVVcmxzOlsibGluZV9jaGFydF9jb21wb25lbnQuY3NzIl0sY2hhbmdlRGV0ZWN0aW9uOmpuLk9uUHVzaH1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOk9ifV19KSx7c2VyaWVzVmlldzpbe3R5cGU6YXIsYXJnczpbInNlcmllc1ZpZXciLHtzdGF0aWM6ITAscmVhZDpLaH1dfV0seEF4aXM6W3t0eXBlOmFyLGFyZ3M6WyJ4QXhpcyIse3N0YXRpYzohMCxyZWFkOktofV19XSx5QXhpczpbe3R5cGU6YXIsYXJnczpbInlBeGlzIix7c3RhdGljOiEwLHJlYWQ6S2h9XX1dLGNoYXJ0RWw6W3t0eXBlOmFyLGFyZ3M6WyJjaGFydEVsIix7c3RhdGljOiExLHJlYWQ6S2h9XX1dLGN1c3RvbVZpc1RlbXBsYXRlOlt7dHlwZTpSX31dLGN1c3RvbVhBeGlzVGVtcGxhdGU6W3t0eXBlOlJffV0sdXNlRGFya01vZGU6W3t0eXBlOlJffV0scHJlZmVycmVkUmVuZGVyZXJUeXBlOlt7dHlwZTpSX31dLHNlcmllc0RhdGE6W3t0eXBlOlJffV0sZml4ZWRWaWV3Qm94Olt7dHlwZTpSX31dLHNlcmllc01ldGFkYXRhTWFwOlt7dHlwZTpSX31dLHhTY2FsZVR5cGU6W3t0eXBlOlJffV0seVNjYWxlVHlwZTpbe3R5cGU6Ul99XSxjdXN0b21YRm9ybWF0dGVyOlt7dHlwZTpSX31dLGN1c3RvbVlGb3JtYXR0ZXI6W3t0eXBlOlJffV0sdG9vbHRpcFRlbXBsYXRlOlt7dHlwZTpSX31dLGxpbmVPbmx5Olt7dHlwZTpSX31dLGRpc2FibGVVcGRhdGU6W3t0eXBlOlJffV0saWdub3JlWU91dGxpZXJzOlt7dHlwZTpSX31dfSk7Y2xhc3MgVmh0e31WaHQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFZodCl9LFZodC7JtWNtcD1zbyh7dHlwZTpWaHQsc2VsZWN0b3JzOltbInZpcy1zZWxlY3RlZC10aW1lLWNsaXBwZWQiXV0saW5wdXRzOntzZWxlY3RlZFRpbWU6InNlbGVjdGVkVGltZSJ9LGRlY2xzOjEsdmFyczowLGNvbnN0czpbWyJzdmdJY29uIiwiaW5mb19vdXRsaW5lXzI0cHgiLCJ0aXRsZSIsIkxpbmtlZCBzdGVwIGlzIG5vdCBmb3VuZCBpbiB0aGlzIHZpc3VhbGl6YXRpb24uIFdlIGhpZ2hsaWdodGVkIHRoZSBjbG9zZXN0IHN0ZXAgZm9yIHlvdS4iXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmdmYoMCwibWF0LWljb24iLDApfSxkaXJlY3RpdmVzOltNcV0sc3R5bGVzOlsnLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjEycHg7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtYmFkZ2Utc21hbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6OXB4fS5tYXQtYmFkZ2UtbGFyZ2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweH0ubWF0LWgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1oZWFkbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMjRweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNnB4LzI4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNXB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC44MykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtaDZbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuNjcpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWJvZHktc3Ryb25nW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjAgMCAxMnB4fS5tYXQtc21hbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDEycHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjMwMCAxMTJweC8xMTJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDVlbTttYXJnaW46MCAwIDU2cHh9Lm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDU2cHgvNTZweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDJlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDQ1cHgvNDhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDA1ZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAzNHB4LzQwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDY0cHh9Lm1hdC1ib3R0b20tc2hlZXQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhcmQtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjIwcHh9Lm1hdC1jYXJkLXN1YnRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXJkLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNoZWNrYm94LWxheW91dFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoyNHB4fS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtdHJhaWxpbmctaWNvbi5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MThweH0ubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1oZWFkZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9vdGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2FsZW5kYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhbGVuZGFyLWJvZHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxM3B4fS5tYXQtY2FsZW5kYXItYm9keS1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FsZW5kYXItcGVyaW9kLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRoW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo0MDB9Lm1hdC1kaWFsb2ctdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDoxLjEyNTtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE1MCU7bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS41ZW07d2lkdGg6MS41ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNWVtIDA7Ym9yZGVyLXRvcDouODQzNzVlbSBzb2xpZCB0cmFuc3BhcmVudH0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTAuODQzNzVlbTtwYWRkaW5nLXRvcDouODQzNzVlbX0ubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo3NSU7bWFyZ2luLXRvcDouNjY2NjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjc5MTY2NjY2NjdlbSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNDM3NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMnB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTJlbSkgc2NhbGUoMC43NSl9fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi4yNWVtIDAgLjc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMDkzNzVlbTttYXJnaW4tdG9wOi0wLjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjFlbSAwIDFlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS44NDM3NWVtO21hcmdpbi10b3A6LTAuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9aW5wdXQubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LTAuMDYyNWVtfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweH0ubWF0LXJhZGlvLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW19Lm1hdC1zbGlkZS10b2dnbGUtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXN0ZXAtc3ViLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDpub3JtYWx9Lm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRhYi1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowfS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMHB4O3BhZGRpbmctdG9wOjZweDtwYWRkaW5nLWJvdHRvbTo2cHh9Lm1hdC10b29sdGlwLWhhbmRzZXRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHh9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1zaW1wbGUtc25hY2tiYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjE7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo1MDB9Lm1hdC10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW5lc3RlZC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweH0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmVtcHR5KXt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKX0ubWF0LXJpcHBsZS5tYXQtcmlwcGxlLXVuYm91bmRlZFtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6dmlzaWJsZX0ubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItcmFkaXVzOjUwJTtwb2ludGVyLWV2ZW50czpub25lO3RyYW5zaXRpb246b3BhY2l0eSx0cmFuc2Zvcm0gMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO3RyYW5zZm9ybTpzY2FsZSgwKX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6bm9uZX0uY2RrLXZpc3VhbGx5LWhpZGRlbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjA7Y2xpcDpyZWN0KDAgMCAwIDApO2hlaWdodDoxcHg7bWFyZ2luOi0xcHg7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxcHg7d2hpdGUtc3BhY2U6bm93cmFwO291dGxpbmU6MDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb2ludGVyLWV2ZW50czpub25lO3RvcDowO2xlZnQ6MDtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXTplbXB0eXtkaXNwbGF5Om5vbmV9LmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1wYW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtwb2ludGVyLWV2ZW50czphdXRvO2JveC1zaXppbmc6Ym9yZGVyLWJveDt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O21heC13aWR0aDoxMDAlO21heC1oZWlnaHQ6MTAwJX0uY2RrLW92ZXJsYXktYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO2xlZnQ6MDtyaWdodDowO3otaW5kZXg6MTAwMDtwb2ludGVyLWV2ZW50czphdXRvOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudDt0cmFuc2l0aW9uOm9wYWNpdHkgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSk7b3BhY2l0eTowfS5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjF9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAuY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTouNn0uY2RrLW92ZXJsYXktZGFyay1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4zMil9LmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MH0uY2RrLW92ZXJsYXktY29ubmVjdGVkLXBvc2l0aW9uLWJvdW5kaW5nLWJveFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bWluLXdpZHRoOjFweDttaW4taGVpZ2h0OjFweH0uY2RrLWdsb2JhbC1zY3JvbGxibG9ja1tfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7d2lkdGg6MTAwJTtvdmVyZmxvdy15OnNjcm9sbH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemVbX25nY29udGVudC0lQ09NUCVde3Jlc2l6ZTpub25lfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmdbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OmF1dG8gIWltcG9ydGFudDtvdmVyZmxvdzpoaWRkZW4gIWltcG9ydGFudH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nLWZpcmVmb3hbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OjAgIWltcG9ydGFudH1Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0e31Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZHt9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbHthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnQgMHMgMW1zfS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCg6LXdlYmtpdC1hdXRvZmlsbCl7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZCAwcyAxbXN9Lm1hdC1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtbWRjLWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9W19uZ2hvc3QtJUNPTVAlXXtjb2xvcjojZDMyZjJmO2hlaWdodDoxZW07bGluZS1oZWlnaHQ6MDt3aWR0aDoxZW19Ym9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVde2NvbG9yOiNkMzJmMmZ9W19uZ2hvc3QtJUNPTVAlXSAgIG1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlfSddLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihWaHQsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoidmlzLXNlbGVjdGVkLXRpbWUtY2xpcHBlZCIsdGVtcGxhdGU6J1xuICAgIDxtYXQtaWNvblxuICAgICAgc3ZnSWNvbj0iaW5mb19vdXRsaW5lXzI0cHgiXG4gICAgICB0aXRsZT0iTGlua2VkIHN0ZXAgaXMgbm90IGZvdW5kIGluIHRoaXMgdmlzdWFsaXphdGlvbi4gV2UgaGlnaGxpZ2h0ZWQgdGhlIGNsb3Nlc3Qgc3RlcCBmb3IgeW91LiJcbiAgICA+PC9tYXQtaWNvbj5cbiAgJyxzdHlsZVVybHM6WyJ2aXNfc2VsZWN0ZWRfdGltZV9jbGlwcGVkX2NvbXBvbmVudC5jc3MiXSxjaGFuZ2VEZXRlY3Rpb246am4uT25QdXNofV19XSxudWxsLHtzZWxlY3RlZFRpbWU6W3t0eXBlOlJffV19KTtjbGFzcyBqaHR7fWZ1bmN0aW9uIFVodCh0LGUpezEmdCYmdmYoMCwidmlzLXNlbGVjdGVkLXRpbWUtY2xpcHBlZCIpfWZ1bmN0aW9uIFdodCh0LGUpezEmdCYmdmYoMCwibWF0LXNwaW5uZXIiLDIzKX1mdW5jdGlvbiBHaHQodCxlKXsxJnQmJihDZigwLCJ0aCIpLFB1KDEsIlNtb290aGVkIiksTWYoKSl9ZnVuY3Rpb24gWWh0KHQsZSl7aWYoMSZ0JiYoeGYoMCksdmYoMSwidGItZXhwZXJpbWVudC1hbGlhcyIsMjkpLFB1KDIsIi8iKSxPZigpKSwyJnQpe2NvbnN0IHQ9emYoKS4kaW1wbGljaXQ7RGMoMSksYmYoImFsaWFzIix0Lm1ldGFkYXRhLmFsaWFzKX19ZnVuY3Rpb24gcWh0KHQsZSl7aWYoMSZ0JiYoQ2YoMCwidGQiKSxQdSgxKSxNZigpKSwyJnQpe2NvbnN0IHQ9emYoKS4kaW1wbGljaXQsZT16ZigyKTtEYygxKSxrdSgiICIsZS52YWx1ZUZvcm1hdHRlci5mb3JtYXRTaG9ydCh0LnBvaW50LnkpLCIgIil9fWZ1bmN0aW9uIFpodCh0LGUpe2lmKDEmdCYmKHhmKDApLENmKDEsInRyIiwyNyksQ2YoMiwidGQiLDI4KSx2ZigzLCJzcGFuIiksTWYoKSxDZig0LCJ0ZCIsMSksSG0oNSxZaHQsMywxLCJuZy1jb250YWluZXIiLDMpLFB1KDYpLE1mKCksSG0oNyxxaHQsMiwxLCJ0ZCIsMyksQ2YoOCwidGQiKSxQdSg5KSxNZigpLENmKDEwLCJ0ZCIpLFB1KDExKSxNZigpLENmKDEyLCJ0ZCIpLFB1KDEzKSxfeSgxNCwiZGF0ZSIpLE1mKCksQ2YoMTUsInRkIiksUHUoMTYpLE1mKCksTWYoKSxPZigpKSwyJnQpe2NvbnN0IHQ9ZS4kaW1wbGljaXQsbj16ZigyKTtEYygxKSxjdSgiY2xvc2VzdCIsdC5tZXRhZGF0YS5jbG9zZXN0KSxEYygyKSxsdSgiYmFja2dyb3VuZC1jb2xvciIsdC5tZXRhZGF0YS5jb2xvciksRGMoMiksYmYoIm5nSWYiLHQubWV0YWRhdGEuYWxpYXMpLERjKDEpLGt1KCIiLHQubWV0YWRhdGEuZGlzcGxheU5hbWUsIiAiKSxEYygxKSxiZigibmdJZiIsbi5zbW9vdGhpbmdFbmFibGVkKSxEYygyKSx3dShuLnZhbHVlRm9ybWF0dGVyLmZvcm1hdFNob3J0KHQucG9pbnQudmFsdWUpKSxEYygyKSx3dShuLnN0ZXBGb3JtYXR0ZXIuZm9ybWF0U2hvcnQodC5wb2ludC5zdGVwKSksRGMoMiksd3UoTXkoMTQsMTEsdC5wb2ludC53YWxsVGltZSwic2hvcnQiKSksRGMoMyksa3UoIiAiLG4ucmVsYXRpdmVYRm9ybWF0dGVyLmZvcm1hdFJlYWRhYmxlKHQucG9pbnQucmVsYXRpdmVUaW1lSW5NcyksIiAiKX19ZnVuY3Rpb24gWGh0KHQsZSl7aWYoMSZ0JiYoQ2YoMCwidGFibGUiLDI0KSxDZigxLCJ0aGVhZCIpLENmKDIsInRyIiksdmYoMywidGgiLDI1KSxDZig0LCJ0aCIpLFB1KDUsIlJ1biIpLE1mKCksSG0oNixHaHQsMiwwLCJ0aCIsMyksQ2YoNywidGgiKSxQdSg4LCJWYWx1ZSIpLE1mKCksQ2YoOSwidGgiKSxQdSgxMCwiU3RlcCIpLE1mKCksQ2YoMTEsInRoIiksUHUoMTIsIlRpbWUiKSxNZigpLENmKDEzLCJ0aCIpLFB1KDE0LCJSZWxhdGl2ZSIpLE1mKCksTWYoKSxNZigpLENmKDE1LCJ0Ym9keSIpLEhtKDE2LFpodCwxNywxNCwibmctY29udGFpbmVyIiwyNiksTWYoKSxNZigpKSwyJnQpe2NvbnN0IHQ9ZS5kYXRhLG49ZS5jdXJzb3JMb2NhdGlvbkluRGF0YUNvb3JkLG89emYoKTtEYyg2KSxiZigibmdJZiIsby5zbW9vdGhpbmdFbmFibGVkKSxEYygxMCksYmYoIm5nRm9yT2YiLG8uZ2V0Q3Vyc29yQXdhcmVUb29sdGlwRGF0YSh0LG4pKSgibmdGb3JUcmFja0J5IixvLnRyYWNrQnlUb29sdGlwRGF0dW0pfX1qaHQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGpodCl9LGpodC7JtWNtcD1zbyh7dHlwZTpqaHQsc2VsZWN0b3JzOltbImxpbmtlZC10aW1lLWZvYiJdXSxpbnB1dHM6e3N0ZXA6InN0ZXAifSxkZWNsczozLHZhcnM6Myx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoQ2YoMCwic3BhbiIpLFB1KDEpLF95KDIsIm51bWJlciIpLE1mKCkpLDImZSYmKERjKDEpLHd1KEN5KDIsMSxuLnN0ZXApKSl9LHBpcGVzOlskdl0sc3R5bGVzOlsnLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjEycHg7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtYmFkZ2Utc21hbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6OXB4fS5tYXQtYmFkZ2UtbGFyZ2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweH0ubWF0LWgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1oZWFkbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMjRweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNnB4LzI4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNXB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC44MykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtaDZbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuNjcpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWJvZHktc3Ryb25nW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjAgMCAxMnB4fS5tYXQtc21hbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDEycHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjMwMCAxMTJweC8xMTJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDVlbTttYXJnaW46MCAwIDU2cHh9Lm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDU2cHgvNTZweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDJlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDQ1cHgvNDhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDA1ZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAzNHB4LzQwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDY0cHh9Lm1hdC1ib3R0b20tc2hlZXQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhcmQtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjIwcHh9Lm1hdC1jYXJkLXN1YnRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXJkLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNoZWNrYm94LWxheW91dFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoyNHB4fS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtdHJhaWxpbmctaWNvbi5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MThweH0ubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1oZWFkZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9vdGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2FsZW5kYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhbGVuZGFyLWJvZHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxM3B4fS5tYXQtY2FsZW5kYXItYm9keS1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FsZW5kYXItcGVyaW9kLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRoW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo0MDB9Lm1hdC1kaWFsb2ctdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDoxLjEyNTtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE1MCU7bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS41ZW07d2lkdGg6MS41ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNWVtIDA7Ym9yZGVyLXRvcDouODQzNzVlbSBzb2xpZCB0cmFuc3BhcmVudH0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTAuODQzNzVlbTtwYWRkaW5nLXRvcDouODQzNzVlbX0ubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo3NSU7bWFyZ2luLXRvcDouNjY2NjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjc5MTY2NjY2NjdlbSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNDM3NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMnB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTJlbSkgc2NhbGUoMC43NSl9fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi4yNWVtIDAgLjc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMDkzNzVlbTttYXJnaW4tdG9wOi0wLjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjFlbSAwIDFlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS44NDM3NWVtO21hcmdpbi10b3A6LTAuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9aW5wdXQubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LTAuMDYyNWVtfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweH0ubWF0LXJhZGlvLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW19Lm1hdC1zbGlkZS10b2dnbGUtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXN0ZXAtc3ViLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDpub3JtYWx9Lm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRhYi1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowfS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMHB4O3BhZGRpbmctdG9wOjZweDtwYWRkaW5nLWJvdHRvbTo2cHh9Lm1hdC10b29sdGlwLWhhbmRzZXRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHh9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1zaW1wbGUtc25hY2tiYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjE7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo1MDB9Lm1hdC10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW5lc3RlZC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweH0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmVtcHR5KXt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKX0ubWF0LXJpcHBsZS5tYXQtcmlwcGxlLXVuYm91bmRlZFtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6dmlzaWJsZX0ubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItcmFkaXVzOjUwJTtwb2ludGVyLWV2ZW50czpub25lO3RyYW5zaXRpb246b3BhY2l0eSx0cmFuc2Zvcm0gMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO3RyYW5zZm9ybTpzY2FsZSgwKX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6bm9uZX0uY2RrLXZpc3VhbGx5LWhpZGRlbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjA7Y2xpcDpyZWN0KDAgMCAwIDApO2hlaWdodDoxcHg7bWFyZ2luOi0xcHg7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxcHg7d2hpdGUtc3BhY2U6bm93cmFwO291dGxpbmU6MDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb2ludGVyLWV2ZW50czpub25lO3RvcDowO2xlZnQ6MDtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXTplbXB0eXtkaXNwbGF5Om5vbmV9LmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1wYW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtwb2ludGVyLWV2ZW50czphdXRvO2JveC1zaXppbmc6Ym9yZGVyLWJveDt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O21heC13aWR0aDoxMDAlO21heC1oZWlnaHQ6MTAwJX0uY2RrLW92ZXJsYXktYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO2xlZnQ6MDtyaWdodDowO3otaW5kZXg6MTAwMDtwb2ludGVyLWV2ZW50czphdXRvOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudDt0cmFuc2l0aW9uOm9wYWNpdHkgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSk7b3BhY2l0eTowfS5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjF9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAuY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTouNn0uY2RrLW92ZXJsYXktZGFyay1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4zMil9LmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MH0uY2RrLW92ZXJsYXktY29ubmVjdGVkLXBvc2l0aW9uLWJvdW5kaW5nLWJveFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bWluLXdpZHRoOjFweDttaW4taGVpZ2h0OjFweH0uY2RrLWdsb2JhbC1zY3JvbGxibG9ja1tfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7d2lkdGg6MTAwJTtvdmVyZmxvdy15OnNjcm9sbH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemVbX25nY29udGVudC0lQ09NUCVde3Jlc2l6ZTpub25lfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmdbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OmF1dG8gIWltcG9ydGFudDtvdmVyZmxvdzpoaWRkZW4gIWltcG9ydGFudH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nLWZpcmVmb3hbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OjAgIWltcG9ydGFudH1Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0e31Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZHt9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbHthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnQgMHMgMW1zfS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCg6LXdlYmtpdC1hdXRvZmlsbCl7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZCAwcyAxbXN9Lm1hdC1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtbWRjLWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9W19uZ2hvc3QtJUNPTVAlXXtkaXNwbGF5OmlubGluZS1ibG9ja31zcGFuW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNlMGUwZTA7Ym9yZGVyLXJhZGl1czoyNXB4O2NvbG9yOmluaGVyaXQ7ZGlzcGxheTppbmxpbmUtYmxvY2s7Zm9udC1zaXplOjExcHg7cGFkZGluZzoycHggNXB4fXNwYW5bX25nY29udGVudC0lQ09NUCVdOmhvdmVyLCBzcGFuW19uZ2NvbnRlbnQtJUNPTVAlXTphY3RpdmV7Ym9yZGVyLWNvbG9yOiM2MTYxNjF9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgc3Bhbltfbmdjb250ZW50LSVDT01QJV0sIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIHNwYW5bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6IzYxNjE2MTtib3JkZXItY29sb3I6IzhlOThhM31ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICBzcGFuW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlciwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgc3Bhbltfbmdjb250ZW50LSVDT01QJV06aG92ZXIsIGJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIHNwYW5bX25nY29udGVudC0lQ09NUCVdOmFjdGl2ZSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgc3Bhbltfbmdjb250ZW50LSVDT01QJV06YWN0aXZle2JvcmRlci1jb2xvcjojZWVlfSddLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihqaHQsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoibGlua2VkLXRpbWUtZm9iIix0ZW1wbGF0ZToiPHNwYW4+e3sgc3RlcCB8IG51bWJlciB9fTwvc3Bhbj4iLHN0eWxlVXJsczpbImxpbmtlZF90aW1lX2ZvYl9jb21wb25lbnQuY3NzIl0sY2hhbmdlRGV0ZWN0aW9uOmpuLk9uUHVzaH1dfV0sbnVsbCx7c3RlcDpbe3R5cGU6Ul99XX0pO2NvbnN0IEtodD1mdW5jdGlvbih0KXtyZXR1cm5bMCx0XX0sSmh0PWZ1bmN0aW9uKCl7cmV0dXJueyJvdXQtb2Ytc2VsZWN0ZWQtdGltZSI6ITAsZW5kOiEwLHJhbmdlOiEwfX07ZnVuY3Rpb24gUWh0KHQsZSl7aWYoMSZ0JiZ2ZigwLCJkaXYiLDMwKSwyJnQpe2NvbnN0IHQ9emYoMiksZT10LnZpZXdFeHRlbnQsbj10LmRvbURpbWVuc2lvbixvPXQueFNjYWxlLGk9emYoKTtsdSgibGVmdCIsby5mb3J3YXJkKGUueCxpeSgzLEtodCxuLndpZHRoKSxpLnNlbGVjdGVkVGltZS5lbmRTdGVwKSsicHgiKSxiZigibmdDbGFzcyIsb3koNSxKaHQpKX19Y29uc3QgJGh0PWZ1bmN0aW9uKHQpe3JldHVyblt0LDBdfSx0YnQ9ZnVuY3Rpb24odCl7cmV0dXJueyJvdXQtb2Ytc2VsZWN0ZWQtdGltZSI6ITAsc3RhcnQ6ITAscmFuZ2U6dH19O2Z1bmN0aW9uIGVidCh0LGUpe2lmKDEmdCYmKHhmKDApLHZmKDEsImRpdiIsMzApLEhtKDIsUWh0LDEsNiwiZGl2IiwzMSksT2YoKSksMiZ0KXtjb25zdCB0PXpmKCksZT10LnZpZXdFeHRlbnQsbj10LmRvbURpbWVuc2lvbixvPXQueFNjYWxlLGk9emYoKTtEYygxKSxsdSgicmlnaHQiLG8uZm9yd2FyZChlLngsaXkoNCwkaHQsbi53aWR0aCksaS5zZWxlY3RlZFRpbWUuc3RhcnRTdGVwKSsicHgiKSxiZigibmdDbGFzcyIsaXkoNix0YnQsISFpLnNlbGVjdGVkVGltZS5lbmRTdGVwKSksRGMoMSksYmYoIm5nSWYiLGkuc2VsZWN0ZWRUaW1lLmVuZFN0ZXApfX1mdW5jdGlvbiBuYnQodCxlKXtpZigxJnQmJkhtKDAsZWJ0LDMsOCwibmctY29udGFpbmVyIiwzKSwyJnQpe2JmKCJuZ0lmIix6ZigpLnNlbGVjdGVkVGltZSl9fWZ1bmN0aW9uIG9idCh0LGUpe2lmKDEmdCYmKENmKDAsImRpdiIsMzIpLHZmKDEsImxpbmtlZC10aW1lLWZvYiIsMzMpLE1mKCkpLDImdCl7Y29uc3QgdD16ZigyKSxlPXQudmlld0V4dGVudCxuPXQuZG9tRGltZW5zaW9uLG89dC54U2NhbGUsaT16ZigpO2x1KCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIitvLmZvcndhcmQoZS54LGl5KDMsS2h0LG4ud2lkdGgpLGkuc2VsZWN0ZWRUaW1lLmVuZFN0ZXApKyJweCwgMCkiKSxEYygxKSxiZigic3RlcCIsaS5zZWxlY3RlZFRpbWUuZW5kU3RlcCl9fWZ1bmN0aW9uIGlidCh0LGUpe2lmKDEmdCYmKHhmKDApLENmKDEsImRpdiIsMzIpLHZmKDIsImxpbmtlZC10aW1lLWZvYiIsMzMpLE1mKCksSG0oMyxvYnQsMiw1LCJkaXYiLDM0KSxPZigpKSwyJnQpe2NvbnN0IHQ9emYoKSxlPXQudmlld0V4dGVudCxuPXQuZG9tRGltZW5zaW9uLG89dC54U2NhbGUsaT16ZigpO0RjKDEpLGx1KCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIitvLmZvcndhcmQoZS54LGl5KDQsS2h0LG4ud2lkdGgpLGkuc2VsZWN0ZWRUaW1lLnN0YXJ0U3RlcCkrInB4LCAwKSIpLERjKDEpLGJmKCJzdGVwIixpLnNlbGVjdGVkVGltZS5zdGFydFN0ZXApLERjKDEpLGJmKCJuZ0lmIixpLnNlbGVjdGVkVGltZS5lbmRTdGVwKX19ZnVuY3Rpb24gYWJ0KHQsZSl7aWYoMSZ0JiZIbSgwLGlidCw0LDYsIm5nLWNvbnRhaW5lciIsMyksMiZ0KXtiZigibmdJZiIsemYoKS5zZWxlY3RlZFRpbWUpfX1jbGFzcyByYnR7Y29uc3RydWN0b3IodCxlKXt0aGlzLnJlZj10LHRoaXMuZGlhbG9nPWUsdGhpcy5EYXRhTG9hZFN0YXRlPVVFLHRoaXMuUmVuZGVyZXJUeXBlPWU2LHRoaXMuU2NhbGVUeXBlPW42LHRoaXMub25GdWxsU2l6ZVRvZ2dsZT1uZXcgU3ksdGhpcy5vblBpbkNsaWNrZWQ9bmV3IFN5LHRoaXMueVNjYWxlVHlwZT1uNi5MSU5FQVIsdGhpcy5pc1ZpZXdCb3hPdmVycmlkZGVuPSExLHRoaXMucmVsYXRpdmVYRm9ybWF0dGVyPXBydCx0aGlzLnZhbHVlRm9ybWF0dGVyPUthdCx0aGlzLnN0ZXBGb3JtYXR0ZXI9JGF0fXRvZ2dsZVlTY2FsZVR5cGUoKXt0aGlzLnlTY2FsZVR5cGU9dGhpcy55U2NhbGVUeXBlPT09bjYuTElORUFSP242LkxPRzEwOm42LkxJTkVBUn1yZXNldERvbWFpbigpe3RoaXMubGluZUNoYXJ0JiZ0aGlzLmxpbmVDaGFydC52aWV3Qm94UmVzZXQoKX10cmFja0J5VG9vbHRpcERhdHVtKHQsZSl7cmV0dXJuIGUuaWR9Z2V0Q3VzdG9tWEZvcm1hdHRlcigpe3N3aXRjaCh0aGlzLnhBeGlzVHlwZSl7Y2FzZSBRVC5SRUxBVElWRTpyZXR1cm4gcHJ0O2Nhc2UgUVQuU1RFUDpyZXR1cm4gb3J0O2Nhc2UgUVQuV0FMTF9USU1FOmRlZmF1bHQ6cmV0dXJufX1nZXRDdXJzb3JBd2FyZVRvb2x0aXBEYXRhKHQsZSl7Y29uc3Qgbj10Lm1hcCgodD0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHttZXRhZGF0YTpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5tZXRhZGF0YSkse2Nsb3Nlc3Q6ITEsZGlzdFNxVG9DdXJzb3I6TWF0aC5oeXBvdCh0LnBvaW50LngtZS54LHQucG9pbnQueS1lLnkpfSl9KSkpO2xldCBvPTEvMCxpPTA7Zm9yKGxldCB0PTA7dDxuLmxlbmd0aDt0Kyspbz5uW3RdLm1ldGFkYXRhLmRpc3RTcVRvQ3Vyc29yJiYobz1uW3RdLm1ldGFkYXRhLmRpc3RTcVRvQ3Vyc29yLGk9dCk7c3dpdGNoKG4ubGVuZ3RoJiYobltpXS5tZXRhZGF0YS5jbG9zZXN0PSEwKSx0aGlzLnRvb2x0aXBTb3J0KXtjYXNlIEpULkFTQ0VORElORzpyZXR1cm4gbi5zb3J0KCgodCxlKT0+dC5wb2ludC55LWUucG9pbnQueSkpO2Nhc2UgSlQuREVTQ0VORElORzpyZXR1cm4gbi5zb3J0KCgodCxlKT0+ZS5wb2ludC55LXQucG9pbnQueSkpO2Nhc2UgSlQuTkVBUkVTVDpyZXR1cm4gbi5zb3J0KCgodCxlKT0+dC5tZXRhZGF0YS5kaXN0U3FUb0N1cnNvci1lLm1ldGFkYXRhLmRpc3RTcVRvQ3Vyc29yKSk7Y2FzZSBKVC5ERUZBVUxUOmNhc2UgSlQuQUxQSEFCRVRJQ0FMOnJldHVybiBuLnNvcnQoKCh0LGUpPT50Lm1ldGFkYXRhLmRpc3BsYXlOYW1lPGUubWV0YWRhdGEuZGlzcGxheU5hbWU/LTE6dC5tZXRhZGF0YS5kaXNwbGF5TmFtZT5lLm1ldGFkYXRhLmRpc3BsYXlOYW1lPzE6MCkpfX1vcGVuRGF0YURvd25sb2FkRGlhbG9nKCl7dGhpcy5kaWFsb2cub3Blbih0aGlzLkRhdGFEb3dubG9hZENvbXBvbmVudCx7ZGF0YTp7Y2FyZElkOnRoaXMuY2FyZElkfX0pfX1yYnQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHJidCkoZ2YoS2gpLGdmKFhZKSl9LHJidC7JtWNtcD1zbyh7dHlwZTpyYnQsc2VsZWN0b3JzOltbInNjYWxhci1jYXJkLWNvbXBvbmVudCJdXSx2aWV3UXVlcnk6ZnVuY3Rpb24gdChlLG4pe2lmKDEmZSYmVnkoQmh0LDUpLDImZSl7bGV0IHQ7QnkodD1VeSgpKSYmKG4ubGluZUNoYXJ0PXQuZmlyc3QpfX0saW5wdXRzOntjYXJkSWQ6ImNhcmRJZCIsY2hhcnRNZXRhZGF0YU1hcDoiY2hhcnRNZXRhZGF0YU1hcCIsRGF0YURvd25sb2FkQ29tcG9uZW50OiJEYXRhRG93bmxvYWRDb21wb25lbnQiLGRhdGFTZXJpZXM6ImRhdGFTZXJpZXMiLGlnbm9yZU91dGxpZXJzOiJpZ25vcmVPdXRsaWVycyIsaXNDYXJkVmlzaWJsZToiaXNDYXJkVmlzaWJsZSIsaXNQaW5uZWQ6ImlzUGlubmVkIixsb2FkU3RhdGU6ImxvYWRTdGF0ZSIsc2hvd0Z1bGxTaXplOiJzaG93RnVsbFNpemUiLHNtb290aGluZ0VuYWJsZWQ6InNtb290aGluZ0VuYWJsZWQiLHRhZzoidGFnIix0aXRsZToidGl0bGUiLHRvb2x0aXBTb3J0OiJ0b29sdGlwU29ydCIseEF4aXNUeXBlOiJ4QXhpc1R5cGUiLHhTY2FsZVR5cGU6InhTY2FsZVR5cGUiLHVzZURhcmtNb2RlOiJ1c2VEYXJrTW9kZSIsc2VsZWN0ZWRUaW1lOiJzZWxlY3RlZFRpbWUifSxvdXRwdXRzOntvbkZ1bGxTaXplVG9nZ2xlOiJvbkZ1bGxTaXplVG9nZ2xlIixvblBpbkNsaWNrZWQ6Im9uUGluQ2xpY2tlZCJ9LGRlY2xzOjM0LHZhcnM6MjYsY29uc3RzOmZ1bmN0aW9uKCl7bGV0IHQsZSxuLG8saTtpZigidW5kZWZpbmVkIiE9dHlwZW9mIG5nSTE4bkNsb3N1cmVNb2RlJiZuZ0kxOG5DbG9zdXJlTW9kZSl7dD1nb29nLmdldE1zZygiRml0IGxpbmUgY2hhcnQgZG9tYWlucyB0byBkYXRhIil9ZWxzZSB0PSRsb2NhbGl6ZWA6QSBidXR0b24gdGhhdCByZXNldHMgbGluZSBjaGFydCBkb21haW4gdG8gdGhlIGRhdGHikJ9lNjhhNTUyOTQxYWI0MjdhOTllNzQzN2UwODQ0M2YzMGFjNzFjY2Q24pCfMzgzMDY0NjUyMTA1ODI2ODU1ODpGaXQgbGluZSBjaGFydCBkb21haW5zIHRvIGRhdGFgO2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgbmdJMThuQ2xvc3VyZU1vZGUmJm5nSTE4bkNsb3N1cmVNb2RlKXtlPWdvb2cuZ2V0TXNnKCJQaW4gY2FyZCIpfWVsc2UgZT0kbG9jYWxpemVgOkEgYnV0dG9uIHRvIHBpbiBhIGNhcmQu4pCfZTY2NWRjNzEyYmQ1ZjE4ZDRkZmEzYTI5ZTEyNWQ1NjVjYzUxZTJmNuKQnzcyODQ2MDY0MjYyMzQzNzUzNDQ6UGluIGNhcmRgO2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgbmdJMThuQ2xvc3VyZU1vZGUmJm5nSTE4bkNsb3N1cmVNb2RlKXtuPWdvb2cuZ2V0TXNnKCJUb2dnbGUgZnVsbCBzaXplIG1vZGUiKX1lbHNlIG49JGxvY2FsaXplYDpBIGJ1dHRvbiBvbiBsaW5lIGNoYXJ0IHRoYXQgdG9nZ2xlcyBmdWxsIHNpemUgbW9kZS7ikJ9mYzhmNzY3ZDBiOWY5MzAxODdhMWJhZTM0NDc3YWQyODczNmVjZTMz4pCfOTE1NzIxNTYzNjM4OTI2NTk3OlRvZ2dsZSBmdWxsIHNpemUgbW9kZWA7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBuZ0kxOG5DbG9zdXJlTW9kZSYmbmdJMThuQ2xvc3VyZU1vZGUpe289Z29vZy5nZXRNc2coIk1vcmUgbGluZSBjaGFydCBvcHRpb25zIil9ZWxzZSBvPSRsb2NhbGl6ZWA6QW4gb3ZlcmZsb3cgbWVudSBidXR0b24gdGhhdCBvcGVucyBtb3JlIGxpbmUgY2hhcnQgb3B0aW9uc+KQn2IyNjBmYWI5NDZhMzA3N2NlMjBmZDI4ZTMzNjk3OWY1ODY3MjBlOGTikJ84NzgwNTM3NDAyMTAzMzY0MzU6TW9yZSBsaW5lIGNoYXJ0IG9wdGlvbnNgO2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgbmdJMThuQ2xvc3VyZU1vZGUmJm5nSTE4bkNsb3N1cmVNb2RlKXtpPWdvb2cuZ2V0TXNnKCJUb2dnbGUgWS1heGlzIGxvZyBzY2FsZSBvbiBsaW5lIGNoYXJ0Iil9ZWxzZSBpPSRsb2NhbGl6ZWA6QSBidXR0b24gdGhhdCB0b2dnbGVzIGxvZyBzY2FsZSBvbiB5LWF4aXMgb24gYSBsaW5lIGNoYXJ04pCfZmU5MWY5NmFiOWIzYmFjYTVhNDg5MTNmMmIwZmFlODQ0ODNkOTNlM+KQnzMzNzQ2NDU2MjA2Mzg4ODM5MjY6VG9nZ2xlIFktYXhpcyBsb2cgc2NhbGUgb24gbGluZSBjaGFydGA7cmV0dXJuW1sxLCJoZWFkaW5nIl0sWzEsIm5hbWUiXSxbMSwidGFnIiwzLCJ0aXRsZSIsInZhbHVlIl0sWzQsIm5nSWYiXSxbMSwiY29udHJvbHMiXSxbIm1hdC1pY29uLWJ1dHRvbiIsIiIsImFyaWEtbGFiZWwiLHQsMywiZGlzYWJsZWQiLCJ0aXRsZSIsImNsaWNrIl0sWyJzdmdJY29uIiwic2V0dGluZ3Nfb3ZlcnNjYW5fMjRweCJdLFsibWF0LWljb24tYnV0dG9uIiwiIiwiYXJpYS1sYWJlbCIsZSwxLCJwaW4tYnV0dG9uIiwzLCJjbGljayJdLFszLCJzdmdJY29uIl0sWyJtYXQtaWNvbi1idXR0b24iLCIiLCJhcmlhLWxhYmVsIixuLCJ0aXRsZSIsIlRvZ2dsZSBmdWxsIHNpemUgbW9kZSIsMywiY2xpY2siXSxbIm1hdC1pY29uLWJ1dHRvbiIsIiIsImFyaWEtbGFiZWwiLG8sInRpdGxlIiwiTW9yZSBsaW5lIGNoYXJ0IG9wdGlvbnMiLDMsIm1hdE1lbnVUcmlnZ2VyRm9yIl0sWyJzdmdJY29uIiwibW9yZV92ZXJ0XzI0cHgiXSxbIm1lbnUiLCJtYXRNZW51Il0sWyJtYXQtbWVudS1pdGVtIiwiIiwiYXJpYS1sYWJlbCIsaSwzLCJjbGljayJdLFsic3ZnSWNvbiIsImxpbmVfd2VpZ2h0XzI0cHgiXSxbIm1hdC1tZW51LWl0ZW0iLCIiLCJhcmlhLWxhYmVsIiwiT3BlbiBkaWFsb2cgdG8gZG93bmxvYWQgZGF0YSIsMywiY2xpY2siXSxbInN2Z0ljb24iLCJnZXRfYXBwXzI0cHgiXSxbMSwiY2hhcnQtY29udGFpbmVyIl0sWyJkaWFtZXRlciIsIjE4Iiw0LCJuZ0lmIl0sWzMsImRpc2FibGVVcGRhdGUiLCJwcmVmZXJyZWRSZW5kZXJlclR5cGUiLCJzZXJpZXNEYXRhIiwic2VyaWVzTWV0YWRhdGFNYXAiLCJ4U2NhbGVUeXBlIiwieVNjYWxlVHlwZSIsImN1c3RvbVhGb3JtYXR0ZXIiLCJpZ25vcmVZT3V0bGllcnMiLCJ0b29sdGlwVGVtcGxhdGUiLCJ1c2VEYXJrTW9kZSIsImN1c3RvbVZpc1RlbXBsYXRlIiwiY3VzdG9tWEF4aXNUZW1wbGF0ZSIsIm9uVmlld0JveE92ZXJyaWRkZW4iXSxbInRvb2x0aXAiLCIiXSxbImxpbmVDaGFydEN1c3RvbVZpcyIsIiJdLFsibGluZUNoYXJ0Q3VzdG9tWEF4aXNWaXMiLCIiXSxbImRpYW1ldGVyIiwiMTgiXSxbMSwidG9vbHRpcCJdLFsxLCJjaXJjbGUtaGVhZGVyIl0sWzQsIm5nRm9yIiwibmdGb3JPZiIsIm5nRm9yVHJhY2tCeSJdLFsxLCJ0b29sdGlwLXJvdyJdLFsxLCJ0b29sdGlwLXJvdy1jaXJjbGUiXSxbMywiYWxpYXMiXSxbMywibmdDbGFzcyJdLFszLCJuZ0NsYXNzIiwibGVmdCIsNCwibmdJZiJdLFsxLCJsaW5rZWQtdGltZS1mb2ItY29udGFpbmVyIl0sWzEsInNlbGVjdGVkLXRpbWUtZm9iIiwzLCJzdGVwIl0sWyJjbGFzcyIsImxpbmtlZC10aW1lLWZvYi1jb250YWluZXIiLDMsInRyYW5zZm9ybSIsNCwibmdJZiJdXX0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pe2lmKDEmZSYmKENmKDAsImRpdiIsMCksQ2YoMSwic3BhbiIsMSksdmYoMiwidGItdHJ1bmNhdGVkLXBhdGgiLDIpLEhtKDMsVWh0LDEsMCwidmlzLXNlbGVjdGVkLXRpbWUtY2xpcHBlZCIsMyksTWYoKSxDZig0LCJzcGFuIiw0KSxDZig1LCJidXR0b24iLDUpLFJmKCJjbGljayIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5yZXNldERvbWFpbigpfSkpLF95KDYsImFzeW5jIiksX3koNywiYXN5bmMiKSx2Zig4LCJtYXQtaWNvbiIsNiksTWYoKSxDZig5LCJidXR0b24iLDcpLFJmKCJjbGljayIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5vblBpbkNsaWNrZWQuZW1pdCghbi5pc1Bpbm5lZCl9KSksdmYoMTAsIm1hdC1pY29uIiw4KSxNZigpLENmKDExLCJidXR0b24iLDkpLFJmKCJjbGljayIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5vbkZ1bGxTaXplVG9nZ2xlLmVtaXQoKX0pKSx2ZigxMiwibWF0LWljb24iLDgpLE1mKCksQ2YoMTMsImJ1dHRvbiIsMTApLHZmKDE0LCJtYXQtaWNvbiIsMTEpLE1mKCksQ2YoMTUsIm1hdC1tZW51IixudWxsLDEyKSxDZigxNywiYnV0dG9uIiwxMyksUmYoImNsaWNrIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLnRvZ2dsZVlTY2FsZVR5cGUoKX0pKSx2ZigxOCwibWF0LWljb24iLDE0KSxDZigxOSwic3BhbiIpLFB1KDIwLCJUb2dnbGUgWS1heGlzIGxvZyBzY2FsZSIpLE1mKCksTWYoKSxDZigyMSwiYnV0dG9uIiwxNSksUmYoImNsaWNrIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLm9wZW5EYXRhRG93bmxvYWREaWFsb2coKX0pKSx2ZigyMiwibWF0LWljb24iLDE2KSxDZigyMywic3BhbiIpLFB1KDI0LCJEb3dubG9hZCBkYXRhIiksTWYoKSxNZigpLE1mKCksTWYoKSxNZigpLENmKDI1LCJkaXYiLDE3KSxIbSgyNixXaHQsMSwwLCJtYXQtc3Bpbm5lciIsMTgpLENmKDI3LCJsaW5lLWNoYXJ0IiwxOSksUmYoIm9uVmlld0JveE92ZXJyaWRkZW4iLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLmlzVmlld0JveE92ZXJyaWRkZW49ZX0pKSxNZigpLEhtKDI4LFhodCwxNywzLCJuZy10ZW1wbGF0ZSIsbnVsbCwyMCxxeSksTWYoKSxIbSgzMCxuYnQsMSwxLCJuZy10ZW1wbGF0ZSIsbnVsbCwyMSxxeSksSG0oMzIsYWJ0LDEsMSwibmctdGVtcGxhdGUiLG51bGwsMjIscXkpKSwyJmUpe2NvbnN0IHQ9Rm0oMTYpLGU9Rm0oMjkpLG89Rm0oMzEpLGk9Rm0oMzMpO0RjKDIpLExmKCJ0aXRsZSIsbi50YWcpLExmKCJ2YWx1ZSIsbi50aXRsZSksRGMoMSksYmYoIm5nSWYiLG4uc2VsZWN0ZWRUaW1lJiZuLnNlbGVjdGVkVGltZS5jbGlwcGVkKSxEYygyKSxiZigiZGlzYWJsZWQiLCFuLmxpbmVDaGFydHx8IUN5KDYsMjIsbi5saW5lQ2hhcnQuZ2V0SXNWaWV3Qm94T3ZlcnJpZGRlbigpKSkoInRpdGxlIixuLmxpbmVDaGFydCYmQ3koNywyNCxuLmxpbmVDaGFydC5nZXRJc1ZpZXdCb3hPdmVycmlkZGVuKCkpPyJMaW5lIGNoYXJ0IGlzIGFscmVhZHkgZml0dGVkIHRvIGRhdGEuIFdoZW4gZGF0YSB1cGRhdGVzLCB0aGUgbGluZSBjaGFydCB3aWxsIGF1dG8gZml0IHRvIGl0cyBkb21haW4uIjoiRml0IGxpbmUgY2hhcnQgZG9tYWlucyB0byBkYXRhIiksRGMoNCkseW0oInRpdGxlIixuLmlzUGlubmVkPyJVbnBpbiBjYXJkIjoiUGluIGNhcmQiKSxEYygxKSxiZigic3ZnSWNvbiIsbi5pc1Bpbm5lZD8ia2VlcF8yNHB4Ijoia2VlcF9vdXRsaW5lXzI0cHgiKSxEYygyKSxiZigic3ZnSWNvbiIsbi5zaG93RnVsbFNpemU/ImZ1bGxzY3JlZW5fZXhpdF8yNHB4IjoiZnVsbHNjcmVlbl8yNHB4IiksRGMoMSksYmYoIm1hdE1lbnVUcmlnZ2VyRm9yIix0KSxEYygxMyksYmYoIm5nSWYiLG4ubG9hZFN0YXRlPT09bi5EYXRhTG9hZFN0YXRlLkxPQURJTkcpLERjKDEpLGJmKCJkaXNhYmxlVXBkYXRlIiwhbi5pc0NhcmRWaXNpYmxlKSgicHJlZmVycmVkUmVuZGVyZXJUeXBlIixuLlJlbmRlcmVyVHlwZS5XRUJHTCkoInNlcmllc0RhdGEiLG4uZGF0YVNlcmllcykoInNlcmllc01ldGFkYXRhTWFwIixuLmNoYXJ0TWV0YWRhdGFNYXApKCJ4U2NhbGVUeXBlIixuLnhTY2FsZVR5cGUpKCJ5U2NhbGVUeXBlIixuLnlTY2FsZVR5cGUpKCJjdXN0b21YRm9ybWF0dGVyIixuLmdldEN1c3RvbVhGb3JtYXR0ZXIoKSkoImlnbm9yZVlPdXRsaWVycyIsbi5pZ25vcmVPdXRsaWVycykoInRvb2x0aXBUZW1wbGF0ZSIsZSkoInVzZURhcmtNb2RlIixuLnVzZURhcmtNb2RlKSgiY3VzdG9tVmlzVGVtcGxhdGUiLG8pKCJjdXN0b21YQXhpc1RlbXBsYXRlIixpKX19LGRpcmVjdGl2ZXM6W0w0LFB2LE5MLE1xLHFxLGpxLEhxLEJodCxWaHQsYTIseHYsSDIsQ3Ysamh0XSxwaXBlczpbVnYsWXZdLHN0eWxlczpbJy5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjlweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHh9Lm1hdC1oMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaGVhZGxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDI0cHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTVweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWg2W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1ib2R5LXN0cm9uZ1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYXJkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FyZC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MjRweH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNhbGVuZGFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZGlhbG9nLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVlbSAwO2JvcmRlci10b3A6Ljg0Mzc1ZW0gc29saWQgdHJhbnNwYXJlbnR9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17dG9wOi0wLjg0Mzc1ZW07cGFkZGluZy10b3A6Ljg0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6NzUlO21hcmdpbi10b3A6LjY2NjY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS43OTE2NjY2NjY3ZW0pfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjQzNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDJweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIzZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4yODEyNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LjU0MTY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS42NjY2NjY2NjY3ZW0pfUBtZWRpYSBwcmludHsubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjJlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjFlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyZW0pIHNjYWxlKDAuNzUpfX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouMjVlbSAwIC43NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjA5Mzc1ZW07bWFyZ2luLXRvcDotMC41ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoxZW0gMCAxZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuODQzNzVlbTttYXJnaW4tdG9wOi0wLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMiksIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fWlucHV0Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi0wLjA2MjVlbX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHh9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtfS5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1zdGVwLXN1Yi1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6bm9ybWFsfS5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1zdGVwLWxhYmVsLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10YWItZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MH0ubWF0LXRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTBweDtwYWRkaW5nLXRvcDo2cHg7cGFkZGluZy1ib3R0b206NnB4fS5tYXQtdG9vbHRpcC1oYW5kc2V0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4fS5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtc2ltcGxlLXNuYWNrYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHh9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoxO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjE0cHh9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV06bm90KDplbXB0eSl7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9Lm1hdC1yaXBwbGUubWF0LXJpcHBsZS11bmJvdW5kZWRbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OnZpc2libGV9Lm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJhZGl1czo1MCU7cG9pbnRlci1ldmVudHM6bm9uZTt0cmFuc2l0aW9uOm9wYWNpdHksdHJhbnNmb3JtIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTt0cmFuc2Zvcm06c2NhbGUoMCl9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9LmNkay12aXN1YWxseS1oaWRkZW5bX25nY29udGVudC0lQ09NUCVde2JvcmRlcjowO2NsaXA6cmVjdCgwIDAgMCAwKTtoZWlnaHQ6MXB4O21hcmdpbjotMXB4O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4O3doaXRlLXNwYWNlOm5vd3JhcDtvdXRsaW5lOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0sIC5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cG9pbnRlci1ldmVudHM6bm9uZTt0b3A6MDtsZWZ0OjA7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV06ZW1wdHl7ZGlzcGxheTpub25lfS5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktcGFuZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6YXV0bztib3gtc2l6aW5nOmJvcmRlci1ib3g7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDttYXgtd2lkdGg6MTAwJTttYXgtaGVpZ2h0OjEwMCV9LmNkay1vdmVybGF5LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDt6LWluZGV4OjEwMDA7cG9pbnRlci1ldmVudHM6YXV0bzstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnQ7dHJhbnNpdGlvbjpvcGFjaXR5IDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpO29wYWNpdHk6MH0uY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eToxfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6LjZ9LmNkay1vdmVybGF5LWRhcmstYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMzIpfS5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV0sIC5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWNvbm5lY3RlZC1wb3NpdGlvbi1ib3VuZGluZy1ib3hbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO21pbi13aWR0aDoxcHg7bWluLWhlaWdodDoxcHh9LmNkay1nbG9iYWwtc2Nyb2xsYmxvY2tbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3dpZHRoOjEwMCU7b3ZlcmZsb3cteTpzY3JvbGx9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplW19uZ2NvbnRlbnQtJUNPTVAlXXtyZXNpemU6bm9uZX10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDphdXRvICFpbXBvcnRhbnQ7b3ZlcmZsb3c6aGlkZGVuICFpbXBvcnRhbnR9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZy1maXJlZm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDowICFpbXBvcnRhbnR9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydHt9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmR7fS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGx7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0IDBzIDFtc30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOi13ZWJraXQtYXV0b2ZpbGwpe2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmQgMHMgMW1zfS5tYXQtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LW1kYy1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfVtfbmdob3N0LSVDT01QJV17ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtib3gtc2l6aW5nOmJvcmRlci1ib3g7aGVpZ2h0OjEwMCU7b3ZlcmZsb3c6YXV0bztwYWRkaW5nOjE2cHg7cGFkZGluZy10b3A6NHB4fS5oZWFkaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXthbGlnbi1pdGVtczpjZW50ZXI7ZGlzcGxheTpmbGV4O2ZvbnQtc2l6ZToxNHB4O2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO21hcmdpbi1ib3R0b206NHB4O3Bvc2l0aW9uOnJlbGF0aXZlfS5oZWFkaW5nW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5uYW1lW19uZ2NvbnRlbnQtJUNPTVAlXXthbGlnbi1pdGVtczpjZW50ZXI7ZGlzcGxheTpncmlkO2dhcDo1cHg7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOmF1dG8gYXV0b30uaGVhZGluZ1tfbmdjb250ZW50LSVDT01QJV0gICB2aXMtc2VsZWN0ZWQtdGltZS1jbGlwcGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MS4yZW07bGluZS1oZWlnaHQ6MH0udGFnW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzpoaWRkZW59LnBpbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgbWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxOHB4fS5jb250cm9sc1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MTt3aGl0ZS1zcGFjZTpub3dyYXA7ZmxleC1zaHJpbms6MDttYXJnaW4tcmlnaHQ6LTEycHh9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgLmNvbnRyb2xzW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLmNvbnRyb2xzW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KX0uY2hhcnQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZTtmbGV4OjF9LmNoYXJ0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0gICBtYXQtc3Bpbm5lcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6MTFweDt0b3A6MTFweH0uY2hhcnQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGxpbmUtY2hhcnRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6YmxvY2s7aGVpZ2h0OjEwMCV9LnRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1zcGFjaW5nOjRweDtmb250LXNpemU6MTNweH0udG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17dGV4dC1hbGlnbjpsZWZ0fS50b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC50b29sdGlwLXJvd1tfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwfS50b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC50b29sdGlwLXJvdy1jaXJjbGVbX25nY29udGVudC0lQ09NUCVde2FsaWduLWl0ZW1zOmNlbnRlcjtkaXNwbGF5OmlubGluZS1mbGV4O2hlaWdodDoxMnB4O3dpZHRoOjEycHh9LnRvb2x0aXBbX25nY29udGVudC0lQ09NUCVdICAgLnRvb2x0aXAtcm93LWNpcmNsZVtfbmdjb250ZW50LSVDT01QJV0gPiBzcGFuW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItcmFkaXVzOjUwJTtib3JkZXI6MXB4IHNvbGlkIHJnYmEoMjU1LDI1NSwyNTUsLjQpO2Rpc3BsYXk6aW5saW5lLWJsb2NrO2hlaWdodDoxMHB4O3dpZHRoOjEwcHh9LnRvb2x0aXBbX25nY29udGVudC0lQ09NUCVdICAgLmNsb3Nlc3RbX25nY29udGVudC0lQ09NUCVdICAgLnRvb2x0aXAtcm93LWNpcmNsZVtfbmdjb250ZW50LSVDT01QJV0gPiBzcGFuW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6I2ZmZjtib3gtc2hhZG93Omluc2V0IDAgMCAwIDFweCAjZmZmfS5vdXQtb2Ytc2VsZWN0ZWQtdGltZVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjAgZGFzaGVkIGN1cnJlbnRDb2xvcjtoZWlnaHQ6MTAwJTtwb3NpdGlvbjphYnNvbHV0ZX0ub3V0LW9mLXNlbGVjdGVkLXRpbWUuc3RhcnRbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1yaWdodC13aWR0aDoycHg7bWFyZ2luLWxlZnQ6LTFweH0ub3V0LW9mLXNlbGVjdGVkLXRpbWUuc3RhcnQucmFuZ2VbX25nY29udGVudC0lQ09NUCVde2xlZnQ6MH0ub3V0LW9mLXNlbGVjdGVkLXRpbWUuZW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItbGVmdC13aWR0aDoycHg7bWFyZ2luLXJpZ2h0Oi0xcHg7cmlnaHQ6MH0ub3V0LW9mLXNlbGVjdGVkLXRpbWUucmFuZ2VbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNSl9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgLm91dC1vZi1zZWxlY3RlZC10aW1lLnJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLm91dC1vZi1zZWxlY3RlZC10aW1lLnJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjQpfS5saW5rZWQtdGltZS1mb2ItY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmlubGluZS1ibG9jaztsZWZ0OjA7cG9zaXRpb246YWJzb2x1dGU7dG9wOjB9bGlua2VkLXRpbWUtZm9iW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWCgtNTAlKX0nXSxjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIocmJ0LFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6InNjYWxhci1jYXJkLWNvbXBvbmVudCIsdGVtcGxhdGVVcmw6InNjYWxhcl9jYXJkX2NvbXBvbmVudC5uZy5odG1sIixzdHlsZVVybHM6WyJzY2FsYXJfY2FyZF9jb21wb25lbnQuY3NzIl0sY2hhbmdlRGV0ZWN0aW9uOmpuLk9uUHVzaH1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOktofSx7dHlwZTpYWX1dfSkse2NhcmRJZDpbe3R5cGU6Ul99XSxjaGFydE1ldGFkYXRhTWFwOlt7dHlwZTpSX31dLERhdGFEb3dubG9hZENvbXBvbmVudDpbe3R5cGU6Ul99XSxkYXRhU2VyaWVzOlt7dHlwZTpSX31dLGlnbm9yZU91dGxpZXJzOlt7dHlwZTpSX31dLGlzQ2FyZFZpc2libGU6W3t0eXBlOlJffV0saXNQaW5uZWQ6W3t0eXBlOlJffV0sbG9hZFN0YXRlOlt7dHlwZTpSX31dLHNob3dGdWxsU2l6ZTpbe3R5cGU6Ul99XSxzbW9vdGhpbmdFbmFibGVkOlt7dHlwZTpSX31dLHRhZzpbe3R5cGU6Ul99XSx0aXRsZTpbe3R5cGU6Ul99XSx0b29sdGlwU29ydDpbe3R5cGU6Ul99XSx4QXhpc1R5cGU6W3t0eXBlOlJffV0seFNjYWxlVHlwZTpbe3R5cGU6Ul99XSx1c2VEYXJrTW9kZTpbe3R5cGU6Ul99XSxzZWxlY3RlZFRpbWU6W3t0eXBlOlJffV0sb25GdWxsU2l6ZVRvZ2dsZTpbe3R5cGU6RV99XSxvblBpbkNsaWNrZWQ6W3t0eXBlOkVffV0sbGluZUNoYXJ0Olt7dHlwZTphcixhcmdzOltCaHRdfV19KTtjbGFzcyBzYnR7Y29uc3RydWN0b3IodCxlKXt0aGlzLnJlZj10LHRoaXMuY2RrU2Nyb2xsYWJsZT1lLHRoaXMub25WaXNpYmlsaXR5Q2hhbmdlPW5ldyBTeSx0aGlzLm5nVW5zdWJzY3JpYmUkPW5ldyBCLHRoaXMub25FdmVudCQ9bmV3IEJ9bmdPbkluaXQoKXtjb25zdCB0PXtyb290OnRoaXMuY2RrU2Nyb2xsYWJsZT90aGlzLmNka1Njcm9sbGFibGUuZ2V0RWxlbWVudFJlZigpLm5hdGl2ZUVsZW1lbnQ6bnVsbH07dGhpcy5pbnRlcnNlY3Rpb25PYnNlcnZlck1hcmdpbiYmKHQucm9vdE1hcmdpbj10aGlzLmludGVyc2VjdGlvbk9ic2VydmVyTWFyZ2luKTtjb25zdCBlPW5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcigodD0+e3RoaXMub25FdmVudCQubmV4dCh0KX0pLHQpO2Uub2JzZXJ2ZSh0aGlzLnJlZi5uYXRpdmVFbGVtZW50KSx0aGlzLm5nVW5zdWJzY3JpYmUkLnN1YnNjcmliZSgoKCk9PntlLnVub2JzZXJ2ZSh0aGlzLnJlZi5uYXRpdmVFbGVtZW50KX0pKSx0aGlzLm9uRXZlbnQkLnBpcGUoamUodGhpcy5uZ1Vuc3Vic2NyaWJlJCkpLnN1YnNjcmliZSgodD0+e2NvbnN0IGU9dC5zbGljZSgtMSlbMF07dGhpcy5vblZpc2liaWxpdHlDaGFuZ2UuZW1pdCh7dmlzaWJsZTplLmlzSW50ZXJzZWN0aW5nfSl9KSl9bmdPbkRlc3Ryb3koKXt0aGlzLm5nVW5zdWJzY3JpYmUkLm5leHQoKSx0aGlzLm5nVW5zdWJzY3JpYmUkLmNvbXBsZXRlKCl9d2FpdEZvckV2ZW50Rm9yVGVzdE9ubHkoKXtyZXR1cm4gbmV3IFByb21pc2UoKHQ9PnRoaXMub25FdmVudCQucGlwZSh2ZSgxKSkuc3Vic2NyaWJlKCgoKT0+e3QoKX0pKSkpfX1mdW5jdGlvbiBsYnQodCxlKXtyZXR1cm4gdC5sZW5ndGg9PT1lLmxlbmd0aCYmdC5ldmVyeSgoKHQsbik9Pntjb25zdCBvPWVbbl0saT10LnBvaW50cyxhPW8ucG9pbnRzO3JldHVybiB0LnJ1bklkPT09by5ydW5JZCYmaS5sZW5ndGg9PT1hLmxlbmd0aCYmaS5ldmVyeSgoKHQsZSk9Pntjb25zdCBuPWFbZV07cmV0dXJuIHQueD09PW4ueCYmdC55PT09bi55fSkpfSkpfXNidC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8c2J0KShnZihLaCksZ2YoSkwsOCkpfSxzYnQuybVkaXI9aG8oe3R5cGU6c2J0LHNlbGVjdG9yczpbWyIiLCJvYnNlcnZlSW50ZXJzZWN0aW9uIiwiIl1dLGlucHV0czp7aW50ZXJzZWN0aW9uT2JzZXJ2ZXJNYXJnaW46ImludGVyc2VjdGlvbk9ic2VydmVyTWFyZ2luIn0sb3V0cHV0czp7b25WaXNpYmlsaXR5Q2hhbmdlOiJvblZpc2liaWxpdHlDaGFuZ2UifX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoc2J0LFt7dHlwZTprXyxhcmdzOlt7c2VsZWN0b3I6IltvYnNlcnZlSW50ZXJzZWN0aW9uXSJ9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpLaH0se3R5cGU6SkwsZGVjb3JhdG9yczpbe3R5cGU6QnJ9XX1dfSkse2ludGVyc2VjdGlvbk9ic2VydmVyTWFyZ2luOlt7dHlwZTpSX31dLG9uVmlzaWJpbGl0eUNoYW5nZTpbe3R5cGU6RV99XX0pO2NsYXNzIGNidHtjb25zdHJ1Y3Rvcih0KXt0aGlzLnN0b3JlPXQsdGhpcy5EYXRhRG93bmxvYWRDb21wb25lbnQ9ZjYsdGhpcy5mdWxsV2lkdGhDaGFuZ2VkPW5ldyBTeSx0aGlzLmZ1bGxIZWlnaHRDaGFuZ2VkPW5ldyBTeSx0aGlzLnBpblN0YXRlQ2hhbmdlZD1uZXcgU3ksdGhpcy5pc1Zpc2libGU9ITEsdGhpcy51c2VEYXJrTW9kZSQ9dGhpcy5zdG9yZS5zZWxlY3QoRkQpLHRoaXMuaWdub3JlT3V0bGllcnMkPXRoaXMuc3RvcmUuc2VsZWN0KGJ6KSx0aGlzLnRvb2x0aXBTb3J0JD10aGlzLnN0b3JlLnNlbGVjdChoeiksdGhpcy54QXhpc1R5cGUkPXRoaXMuc3RvcmUuc2VsZWN0KHl6KSx0aGlzLnhTY2FsZVR5cGUkPXRoaXMuc3RvcmUuc2VsZWN0KHl6KS5waXBlKFZ0KCh0PT57c3dpdGNoKHQpe2Nhc2UgUVQuU1RFUDpjYXNlIFFULlJFTEFUSVZFOnJldHVybiBuNi5MSU5FQVI7Y2FzZSBRVC5XQUxMX1RJTUU6cmV0dXJuIG42LlRJTUU7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgeEF4aXNUeXBlIGZvciBsaW5lIGNoYXJ0LiAke3R9YCl9fSkpKSx0aGlzLnNjYWxhclNtb290aGluZyQ9dGhpcy5zdG9yZS5zZWxlY3QoQ3opLHRoaXMuc21vb3RoaW5nRW5hYmxlZCQ9dGhpcy5zdG9yZS5zZWxlY3QoQ3opLnBpcGUoVnQoKHQ9PnQ+MCkpKSx0aGlzLnNob3dGdWxsU2l6ZT0hMSx0aGlzLm5nVW5zdWJzY3JpYmU9bmV3IEJ9b25WaXNpYmlsaXR5Q2hhbmdlKHt2aXNpYmxlOnR9KXt0aGlzLmlzVmlzaWJsZT10fWlzU2NhbGFyQ2FyZE1ldGFkYXRhKHQpe2NvbnN0e3BsdWdpbjplfT10O3JldHVybiBlPT09S1QuU0NBTEFSU31vbkZ1bGxTaXplVG9nZ2xlKCl7dGhpcy5zaG93RnVsbFNpemU9IXRoaXMuc2hvd0Z1bGxTaXplLHRoaXMuZnVsbFdpZHRoQ2hhbmdlZC5lbWl0KHRoaXMuc2hvd0Z1bGxTaXplKSx0aGlzLmZ1bGxIZWlnaHRDaGFuZ2VkLmVtaXQodGhpcy5zaG93RnVsbFNpemUpfW5nT25Jbml0KCl7Y29uc3QgdD10aGlzLnN0b3JlLnNlbGVjdChueix0aGlzLmNhcmRJZCkucGlwZSh1ZSgodD0+ISF0JiZ0aGlzLmlzU2NhbGFyQ2FyZE1ldGFkYXRhKHQpKSksVnQoKHQ9PnQpKSk7ZnVuY3Rpb24gZSh0KXtyZXR1cm4gSlNPTi5zdHJpbmdpZnkoWyJzbW9vdGhlZCIsdF0pfWNvbnN0IG49dGhpcy5zdG9yZS5zZWxlY3QodHosdGhpcy5jYXJkSWQpLnBpcGUoamUodGhpcy5uZ1Vuc3Vic2NyaWJlKSx1ZSgodD0+Qm9vbGVhbih0KSkpLFZ0KCh0PT50KSksRmUoMSkpLnBpcGUoX2UodGhpcy5zdG9yZS5zZWxlY3QoeXopKSxWdCgoKFt0LGVdKT0+T2JqZWN0LmtleXModCkubWFwKChuPT4oe3J1bklkOm4scG9pbnRzOnRoaXMuc3RlcFNlcmllc1RvTGluZVNlcmllcyh0W25dLGUpfSkpKSkpLHdlKGxidCkpLnBpcGUoX2UodGhpcy5zdG9yZS5zZWxlY3QoTXopKSxqZSh0aGlzLm5nVW5zdWJzY3JpYmUpLFZ0KCgoW3QsZV0pPT5lPyhmdW5jdGlvbiBuKHQpe3ZhciBlO2NvbnN0IG49W107Zm9yKGNvbnN0IG8gb2YgdCl7Y29uc3QgdD1bXTtsZXQgaT1OdW1iZXIuaXNGaW5pdGUobnVsbD09PShlPW8ucG9pbnRzWzBdKXx8dm9pZCAwPT09ZT92b2lkIDA6ZS54KT9vLnBvaW50c1swXS54Oi0xLzAsYT1bXTtmb3IoY29uc3QgZSBvZiBvLnBvaW50cylOdW1iZXIuaXNGaW5pdGUoZS54KT8oZS54PGkmJih0LnB1c2goe3Nlcmllc0lkOkpTT04uc3RyaW5naWZ5KFtvLnJ1bklkLHQubGVuZ3RoXSkscnVuSWQ6by5ydW5JZCxwb2ludHM6YX0pLGE9W10pLGEucHVzaChlKSxpPWUueCk6YS5wdXNoKGUpO3QucHVzaCh7c2VyaWVzSWQ6SlNPTi5zdHJpbmdpZnkoW28ucnVuSWQsdC5sZW5ndGhdKSxydW5JZDpvLnJ1bklkLHBvaW50czphfSk7Zm9yKGxldCBlPTA7ZTx0Lmxlbmd0aDtlKyspbi5wdXNoKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0W2VdKSx7cGFydGl0aW9uSW5kZXg6ZSxwYXJ0aXRpb25TaXplOnQubGVuZ3RofSkpfXJldHVybiBufSkodCk6dC5tYXAoKHQ9Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7c2VyaWVzSWQ6dC5ydW5JZCxwYXJ0aXRpb25JbmRleDowLHBhcnRpdGlvblNpemU6MX0pKSkpKSxWdCgodD0+dC5tYXAoKHQ9Pnt2YXIgZTtjb25zdCBuPW51bGw9PT0oZT10LnBvaW50c1swXSl8fHZvaWQgMD09PWU/dm9pZCAwOmUud2FsbFRpbWU7cmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7cG9pbnRzOnQucG9pbnRzLm1hcCgodD0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtyZWxhdGl2ZVRpbWVJbk1zOnQud2FsbFRpbWUtbn0pKSl9KX0pKSkpLF9lKHRoaXMuc3RvcmUuc2VsZWN0KHl6KSksVnQoKChbdCxlXSk9PnQubWFwKCh0PT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3BvaW50czp0LnBvaW50cy5tYXAoKHQ9PntsZXQgbjtzd2l0Y2goZSl7Y2FzZSBRVC5SRUxBVElWRTpuPXQucmVsYXRpdmVUaW1lSW5NczticmVhaztjYXNlIFFULldBTExfVElNRTpuPXQud2FsbFRpbWU7YnJlYWs7Y2FzZSBRVC5TVEVQOmRlZmF1bHQ6bj10LnN0ZXB9cmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7eDpufSl9KSl9KSkpKSksRmUoMSkpO3RoaXMuZGF0YVNlcmllcyQ9bi5waXBlKF9lKHRoaXMuc3RvcmUuc2VsZWN0KEN6KSksVmUoKChbdCxuXSk9Pntjb25zdCBvPXQubWFwKCgoe3Nlcmllc0lkOnQscG9pbnRzOmV9KT0+KHtpZDp0LHBvaW50czplfSkpKTtyZXR1cm4gbjw9MD96dChvKTpQdCgoZnVuY3Rpb24gaSh0LGUpe3ZhciBuO3JldHVybiBYVCh0aGlzLHZvaWQgMCx2b2lkIDAsKGZ1bmN0aW9uKigpe051bWJlci5pc0Zpbml0ZShlKXx8KGU9MCksZT1NYXRoLm1heCgwLE1hdGgubWluKGUsMSkpO2NvbnN0IG89W107Zm9yKGNvbnN0IGkgb2YgdCl7Y29uc3QgdD1udWxsPT09KG49aS5wb2ludHNbMF0pfHx2b2lkIDA9PT1uP3ZvaWQgMDpuLnk7aWYoaS5wb2ludHMuZXZlcnkoKGU9PmUueT09dCkpKXtvLnB1c2goaSk7Y29udGludWV9bGV0IGE9aS5wb2ludHMubGVuZ3RoPjA/MDpOYU4scj0wO2NvbnN0IHM9aS5wb2ludHMubWFwKCh0PT57Y29uc3Qgbj10Lnk7aWYoTnVtYmVyLmlzRmluaXRlKG4pKXthPWEqZSsoMS1lKSpuLHIrKztjb25zdCBvPTE9PT1lPzE6MS1NYXRoLnBvdyhlLHIpO3JldHVybnt4OnQueCx5OmEvb319cmV0dXJue3g6dC54LHk6bn19KSk7by5wdXNoKHtpZDppLmlkLHBvaW50czpzfSl9cmV0dXJuIG99KSl9KShvLG4pKS5waXBlKFZ0KCh0PT57Y29uc3Qgbj1vLm1hcCgoKG4sbyk9Pih7aWQ6ZShuLmlkKSxwb2ludHM6dFtvXS5wb2ludHMubWFwKCgoe3k6dH0sZSk9Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxuLnBvaW50c1tlXSkse3k6dH0pKSl9KSkpO3JldHVyblsuLi5vLC4uLm5dfSkpKX0pKSxCZShbXSkpLHRoaXMuc2VsZWN0ZWRUaW1lJD1LdChbbix0aGlzLnN0b3JlLnNlbGVjdChFeiksdGhpcy5zdG9yZS5zZWxlY3QoeXopXSkucGlwZShWdCgoKFt0LGUsbl0pPT57aWYobiE9PVFULlNURVB8fCFlKXJldHVybiBudWxsO2xldCBvPTEvMCxpPS0xLzA7Zm9yKGNvbnN0e3BvaW50czplfW9mIHQpZm9yKGNvbnN0IHQgb2YgZSlvPW8+dC54P3QueDpvLGk9aTx0Lng/dC54Omk7cmV0dXJuIEI0KGUsbyxpKX0pKSksdGhpcy5jaGFydE1ldGFkYXRhTWFwJD1uLnBpcGUoVmUoKHQ9Pkt0KHQubWFwKCh0PT50aGlzLmdldFJ1bkRpc3BsYXlOYW1lQW5kQWxpYXModC5ydW5JZCkucGlwZShWdCgoZT0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLGUpKSkpKSkpKSksX2UodGhpcy5zdG9yZS5zZWxlY3QoX0kpLHRoaXMuc3RvcmUuc2VsZWN0KENJKSx0aGlzLnN0b3JlLnNlbGVjdChDeikpLENlKDApLFZ0KCgoW3QsbixvLGldKT0+e3ZhciBhO2NvbnN0IHI9e30scz1pPjA7Zm9yKGNvbnN0IGUgb2YgdCl7Y29uc3R7c2VyaWVzSWQ6dCxydW5JZDppLGRpc3BsYXlOYW1lOnMsYWxpYXM6bCxwYXJ0aXRpb25JbmRleDpjLHBhcnRpdGlvblNpemU6ZH09ZTtyW3RdPXt0eXBlOm82Lk9SSUdJTkFMLGlkOnQsYWxpYXM6bCxkaXNwbGF5TmFtZTpkPjE/YCR7c306ICR7Y31gOnMsdmlzaWJsZTpCb29sZWFuKG4mJm4uZ2V0KGkpKSxjb2xvcjpudWxsIT09KGE9b1tpXSkmJnZvaWQgMCE9PWE/YToiI2ZmZiIsYXV4OiExLG9wYWNpdHk6MX19aWYoIXMpcmV0dXJuIHI7Zm9yKGNvbnN0W3Qsbl1vZiBPYmplY3QuZW50cmllcyhyKSl7Y29uc3Qgbz1lKHQpO3Jbb109T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LG4pLHtpZDpvLHR5cGU6bzYuREVSSVZFRCxhdXg6ITEsb3JpZ2luYWxTZXJpZXNJZDp0fSksbi5hdXg9ITAsbi5vcGFjaXR5PS4yNX1yZXR1cm4gcn0pKSxCZSh7fSkpLHRoaXMubG9hZFN0YXRlJD10aGlzLnN0b3JlLnNlbGVjdCgkTix0aGlzLmNhcmRJZCksdGhpcy50YWckPXQucGlwZShWdCgodD0+dC50YWcpKSksdGhpcy50aXRsZSQ9dGhpcy50YWckLnBpcGUoVnQoKHQ9Pkg0KHQsdGhpcy5ncm91cE5hbWUpKSkpLHRoaXMuaXNQaW5uZWQkPXRoaXMuc3RvcmUuc2VsZWN0KGR6LHRoaXMuY2FyZElkKX1uZ09uRGVzdHJveSgpe3RoaXMubmdVbnN1YnNjcmliZS5uZXh0KCksdGhpcy5uZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCl9Z2V0UnVuRGlzcGxheU5hbWVBbmRBbGlhcyh0KXtyZXR1cm4gS3QoW3RoaXMuc3RvcmUuc2VsZWN0KEd6LHtydW5JZDp0fSksdGhpcy5zdG9yZS5zZWxlY3QoT1IpLHRoaXMuc3RvcmUuc2VsZWN0KFl6LHtydW5JZDp0fSldKS5waXBlKFZ0KCgoW2UsbixvXSk9Pnt2YXIgaSxhO2NvbnN0IHI9bnVsbCE9PWUmJm51bGwhPT0oaT1uW2VdKSYmdm9pZCAwIT09aT9pOm51bGw7cmV0dXJue2Rpc3BsYXlOYW1lOm98fHI/bnVsbCE9PShhPW51bGw9PW8/dm9pZCAwOm8ubmFtZSkmJnZvaWQgMCE9PWE/YToiLi4uIjp0LGFsaWFzOnJ9fSkpKX1zdGVwU2VyaWVzVG9MaW5lU2VyaWVzKHQsZSl7Y29uc3Qgbj1lPT09UVQuU1RFUDtyZXR1cm4gdC5tYXAoKHQ9Pntjb25zdCBlPTFlMyp0LndhbGxUaW1lO3JldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3g6bj90LnN0ZXA6ZSx5OnQudmFsdWUsd2FsbFRpbWU6ZSxyZWxhdGl2ZVRpbWVJbk1zOjB9KX0pKX19Y2J0Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxjYnQpKGdmKGlTKSl9LGNidC7JtWNtcD1zbyh7dHlwZTpjYnQsc2VsZWN0b3JzOltbInNjYWxhci1jYXJkIl1dLGlucHV0czp7RGF0YURvd25sb2FkQ29tcG9uZW50OiJEYXRhRG93bmxvYWRDb21wb25lbnQiLGNhcmRJZDoiY2FyZElkIixncm91cE5hbWU6Imdyb3VwTmFtZSJ9LG91dHB1dHM6e2Z1bGxXaWR0aENoYW5nZWQ6ImZ1bGxXaWR0aENoYW5nZWQiLGZ1bGxIZWlnaHRDaGFuZ2VkOiJmdWxsSGVpZ2h0Q2hhbmdlZCIscGluU3RhdGVDaGFuZ2VkOiJwaW5TdGF0ZUNoYW5nZWQifSxkZWNsczoxNCx2YXJzOjQzLGNvbnN0czpbWyJvYnNlcnZlSW50ZXJzZWN0aW9uIiwiIiwzLCJjYXJkSWQiLCJjaGFydE1ldGFkYXRhTWFwIiwiRGF0YURvd25sb2FkQ29tcG9uZW50IiwiZGF0YVNlcmllcyIsImlnbm9yZU91dGxpZXJzIiwiaXNDYXJkVmlzaWJsZSIsImlzUGlubmVkIiwibG9hZFN0YXRlIiwic2hvd0Z1bGxTaXplIiwic21vb3RoaW5nRW5hYmxlZCIsInRhZyIsInRpdGxlIiwidG9vbHRpcFNvcnQiLCJ4QXhpc1R5cGUiLCJ4U2NhbGVUeXBlIiwidXNlRGFya01vZGUiLCJzZWxlY3RlZFRpbWUiLCJvbkZ1bGxTaXplVG9nZ2xlIiwib25QaW5DbGlja2VkIiwib25WaXNpYmlsaXR5Q2hhbmdlIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihDZigwLCJzY2FsYXItY2FyZC1jb21wb25lbnQiLDApLFJmKCJvbkZ1bGxTaXplVG9nZ2xlIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLm9uRnVsbFNpemVUb2dnbGUoKX0pKSgib25QaW5DbGlja2VkIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5waW5TdGF0ZUNoYW5nZWQuZW1pdChlKX0pKSgib25WaXNpYmlsaXR5Q2hhbmdlIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5vblZpc2liaWxpdHlDaGFuZ2UoZSl9KSksX3koMSwiYXN5bmMiKSxfeSgyLCJhc3luYyIpLF95KDMsImFzeW5jIiksX3koNCwiYXN5bmMiKSxfeSg1LCJhc3luYyIpLF95KDYsImFzeW5jIiksX3koNywiYXN5bmMiKSxfeSg4LCJhc3luYyIpLF95KDksImFzeW5jIiksX3koMTAsImFzeW5jIiksX3koMTEsImFzeW5jIiksX3koMTIsImFzeW5jIiksX3koMTMsImFzeW5jIiksTWYoKSksMiZlJiZiZigiY2FyZElkIixuLmNhcmRJZCkoImNoYXJ0TWV0YWRhdGFNYXAiLEN5KDEsMTcsbi5jaGFydE1ldGFkYXRhTWFwJCkpKCJEYXRhRG93bmxvYWRDb21wb25lbnQiLG4uRGF0YURvd25sb2FkQ29tcG9uZW50KSgiZGF0YVNlcmllcyIsQ3koMiwxOSxuLmRhdGFTZXJpZXMkKSkoImlnbm9yZU91dGxpZXJzIixDeSgzLDIxLG4uaWdub3JlT3V0bGllcnMkKSkoImlzQ2FyZFZpc2libGUiLG4uaXNWaXNpYmxlKSgiaXNQaW5uZWQiLEN5KDQsMjMsbi5pc1Bpbm5lZCQpKSgibG9hZFN0YXRlIixDeSg1LDI1LG4ubG9hZFN0YXRlJCkpKCJzaG93RnVsbFNpemUiLG4uc2hvd0Z1bGxTaXplKSgic21vb3RoaW5nRW5hYmxlZCIsQ3koNiwyNyxuLnNtb290aGluZ0VuYWJsZWQkKSkoInRhZyIsQ3koNywyOSxuLnRhZyQpKSgidGl0bGUiLEN5KDgsMzEsbi50aXRsZSQpKSgidG9vbHRpcFNvcnQiLEN5KDksMzMsbi50b29sdGlwU29ydCQpKSgieEF4aXNUeXBlIixDeSgxMCwzNSxuLnhBeGlzVHlwZSQpKSgieFNjYWxlVHlwZSIsQ3koMTEsMzcsbi54U2NhbGVUeXBlJCkpKCJ1c2VEYXJrTW9kZSIsQ3koMTIsMzksbi51c2VEYXJrTW9kZSQpKSgic2VsZWN0ZWRUaW1lIixDeSgxMyw0MSxuLnNlbGVjdGVkVGltZSQpKX0sZGlyZWN0aXZlczpbcmJ0LHNidF0scGlwZXM6W1Z2XSxzdHlsZXM6WyJbX25naG9zdC0lQ09NUCVdIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgIH0iXSxjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoY2J0LFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6InNjYWxhci1jYXJkIix0ZW1wbGF0ZTonXG4gICAgPHNjYWxhci1jYXJkLWNvbXBvbmVudFxuICAgICAgW2NhcmRJZF09ImNhcmRJZCJcbiAgICAgIFtjaGFydE1ldGFkYXRhTWFwXT0iY2hhcnRNZXRhZGF0YU1hcCQgfCBhc3luYyJcbiAgICAgIFtEYXRhRG93bmxvYWRDb21wb25lbnRdPSJEYXRhRG93bmxvYWRDb21wb25lbnQiXG4gICAgICBbZGF0YVNlcmllc109ImRhdGFTZXJpZXMkIHwgYXN5bmMiXG4gICAgICBbaWdub3JlT3V0bGllcnNdPSJpZ25vcmVPdXRsaWVycyQgfCBhc3luYyJcbiAgICAgIFtpc0NhcmRWaXNpYmxlXT0iaXNWaXNpYmxlIlxuICAgICAgW2lzUGlubmVkXT0iaXNQaW5uZWQkIHwgYXN5bmMiXG4gICAgICBbbG9hZFN0YXRlXT0ibG9hZFN0YXRlJCB8IGFzeW5jIlxuICAgICAgW3Nob3dGdWxsU2l6ZV09InNob3dGdWxsU2l6ZSJcbiAgICAgIFtzbW9vdGhpbmdFbmFibGVkXT0ic21vb3RoaW5nRW5hYmxlZCQgfCBhc3luYyJcbiAgICAgIFt0YWddPSJ0YWckIHwgYXN5bmMiXG4gICAgICBbdGl0bGVdPSJ0aXRsZSQgfCBhc3luYyJcbiAgICAgIFt0b29sdGlwU29ydF09InRvb2x0aXBTb3J0JCB8IGFzeW5jIlxuICAgICAgW3hBeGlzVHlwZV09InhBeGlzVHlwZSQgfCBhc3luYyJcbiAgICAgIFt4U2NhbGVUeXBlXT0ieFNjYWxlVHlwZSQgfCBhc3luYyJcbiAgICAgIFt1c2VEYXJrTW9kZV09InVzZURhcmtNb2RlJCB8IGFzeW5jIlxuICAgICAgW3NlbGVjdGVkVGltZV09InNlbGVjdGVkVGltZSQgfCBhc3luYyJcbiAgICAgIChvbkZ1bGxTaXplVG9nZ2xlKT0ib25GdWxsU2l6ZVRvZ2dsZSgpIlxuICAgICAgKG9uUGluQ2xpY2tlZCk9InBpblN0YXRlQ2hhbmdlZC5lbWl0KCRldmVudCkiXG4gICAgICBvYnNlcnZlSW50ZXJzZWN0aW9uXG4gICAgICAob25WaXNpYmlsaXR5Q2hhbmdlKT0ib25WaXNpYmlsaXR5Q2hhbmdlKCRldmVudCkiXG4gICAgPjwvc2NhbGFyLWNhcmQtY29tcG9uZW50PlxuICAnLHN0eWxlczpbIlxuICAgICAgOmhvc3Qge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgfVxuICAgICJdLGNoYW5nZURldGVjdGlvbjpqbi5PblB1c2h9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTppU31dfSkse0RhdGFEb3dubG9hZENvbXBvbmVudDpbe3R5cGU6Ul99XSxjYXJkSWQ6W3t0eXBlOlJffV0sZ3JvdXBOYW1lOlt7dHlwZTpSX31dLGZ1bGxXaWR0aENoYW5nZWQ6W3t0eXBlOkVffV0sZnVsbEhlaWdodENoYW5nZWQ6W3t0eXBlOkVffV0scGluU3RhdGVDaGFuZ2VkOlt7dHlwZTpFX31dfSk7ZnVuY3Rpb24gZGJ0KHQsZSxuKXtjb25zdCBvPVtdLHtsZWZ0OmkscmlnaHQ6YX09ZSxyPShhLWkpL247bGV0IHM9MCxsPTA7Zm9yKGxldCBlPTA7ZTxuO2UrKyl7Y29uc3QgYT1pK2UqcixjPWErcixkPWU9PT1uLTE7bGV0IHA9bDtmb3IobD0wO3M8dC5sZW5ndGg7KXtjb25zdCBlPXRbc10sbj1wYnQoZSxhLGMsIWQpO2lmKHArPW4uY3VycixsKz1uLm5leHQsZS54K2UuZHg+YylicmVhaztzKyt9by5wdXNoKHt4OmEsZHg6cix5OnB9KX1yZXR1cm4gb31mdW5jdGlvbiBwYnQodCxlLG4sbyl7Y29uc3QgaT10LngsYT10LngrdC5keDtpZihpPm58fGE8ZSlyZXR1cm57Y3VycjowLG5leHQ6MH07aWYoMD09PXQuZHgpcmV0dXJuIG8mJmE+PW4/e2N1cnI6MCxuZXh0OnQueX06e2N1cnI6dC55LG5leHQ6MH07Y29uc3Qgcj1NYXRoLm1pbihhLG4pLU1hdGgubWF4KGksZSk7cmV0dXJue2N1cnI6dC55KnIvdC5keCxuZXh0OjB9fWNvbnN0IG1idD1bIm1haW4iXSxmYnQ9WyJ4QXhpcyJdLHVidD1bInlBeGlzIl0sZ2J0PVsiY29udGVudCJdLGhidD1bImhpc3RvZ3JhbXMiXTtmdW5jdGlvbiBiYnQodCxlKXtpZigxJnQmJihvYSgpLENmKDAsImciKSxDZigxLCJ0ZXh0IiksUHUoMiksTWYoKSxNZigpKSwyJnQpe2NvbnN0IHQ9emYoKTtsdSgidHJhbnNmb3JtIix0LmdldENzc1RyYW5zbGF0ZVB4KHQudG9vbHRpcERhdGEueEF4aXMucG9zaXRpb24sOSkpLERjKDIpLHd1KHQudG9vbHRpcERhdGEueEF4aXMubGFiZWwpfX1mdW5jdGlvbiB5YnQodCxlKXtpZigxJnQmJihvYSgpLENmKDAsImciKSxDZigxLCJ0ZXh0IiksUHUoMiksTWYoKSxNZigpKSwyJnQpe2NvbnN0IHQ9emYoKTtsdSgidHJhbnNmb3JtIix0LmdldEdyb3VwVHJhbnNmb3JtKHQudG9vbHRpcERhdGEuY2xvc2VzdERhdHVtKSksRGMoMSkseW0oInkiLHQudG9vbHRpcERhdGEueUF4aXMucG9zaXRpb24pLERjKDEpLGt1KCIgIix0LnRvb2x0aXBEYXRhLnlBeGlzLmxhYmVsLCIgIil9fWZ1bmN0aW9uIF9idCh0LGUpe2lmKDEmdCYmKENmKDAsImRpdiIsMTYpLHZmKDEsImxpbmtlZC10aW1lLWZvYiIsMTcpLE1mKCkpLDImdCl7Y29uc3QgdD16ZigyKTtsdSgidHJhbnNmb3JtIix0LmdldENzc1RyYW5zbGF0ZVB4KDAsdC5zY2FsZXMudGVtcG9yYWxTY2FsZSh0LmxpbmtlZFRpbWUuZW5kU3RlcCkpKSxEYygxKSxiZigic3RlcCIsdC5saW5rZWRUaW1lLmVuZFN0ZXApfX1mdW5jdGlvbiBDYnQodCxlKXtpZigxJnQmJihvYSgpLGFhKCkseGYoMCksQ2YoMSwiZGl2IiwxNiksdmYoMiwibGlua2VkLXRpbWUtZm9iIiwxNyksTWYoKSxIbSgzLF9idCwyLDMsImRpdiIsMTgpLE9mKCkpLDImdCl7Y29uc3QgdD16ZigpO0RjKDEpLGx1KCJ0cmFuc2Zvcm0iLHQuZ2V0Q3NzVHJhbnNsYXRlUHgoMCx0LnNjYWxlcy50ZW1wb3JhbFNjYWxlKHQubGlua2VkVGltZS5zdGFydFN0ZXApKSksRGMoMSksYmYoInN0ZXAiLHQubGlua2VkVGltZS5zdGFydFN0ZXApLERjKDEpLGJmKCJuZ0lmIix0LmxpbmtlZFRpbWUuZW5kU3RlcCl9fWZ1bmN0aW9uIE1idCh0LGUpe2lmKDEmdCYmKG9hKCksQ2YoMCwiZyIpLHZmKDEsImxpbmUiLDE5KSxNZigpKSwyJnQpe2NvbnN0IHQ9ZS4kaW1wbGljaXQ7bHUoInRyYW5zZm9ybSIsemYoKS5nZXRDc3NUcmFuc2xhdGVQeCgwLHQpKX19ZnVuY3Rpb24gdmJ0KHQsZSl7MSZ0JiYob2EoKSx2ZigwLCJsaW5lIiwyMikpfWZ1bmN0aW9uIHhidCh0LGUpe2lmKDEmdCYmKG9hKCksdmYoMCwiY2lyY2xlIiwyMykpLDImdCl7Y29uc3QgdD16ZigpLiRpbXBsaWNpdCxlPXpmKCk7bHUoInRyYW5zZm9ybSIsZS5nZXRDc3NUcmFuc2xhdGVQeChlLmdldFVpQ29vcmRGcm9tQmluRm9yQ29udGVudChlLmdldENsb3Nlc3RCaW5Gcm9tQmluQ29vcmRpbmF0ZSh0LGUudG9vbHRpcERhdGEueFBvc2l0aW9uSW5CaW5Db29yZCkpLngsZS5nZXRVaUNvb3JkRnJvbUJpbkZvckNvbnRlbnQoZS5nZXRDbG9zZXN0QmluRnJvbUJpbkNvb3JkaW5hdGUodCxlLnRvb2x0aXBEYXRhLnhQb3NpdGlvbkluQmluQ29vcmQpKS55KSl9fWZ1bmN0aW9uIE9idCh0LGUpe2lmKDEmdCYmKG9hKCksQ2YoMCwiZyIpLEhtKDEsdmJ0LDEsMCwibGluZSIsMjApLHZmKDIsInBhdGgiKSxIbSgzLHhidCwxLDIsImNpcmNsZSIsMjEpLE1mKCkpLDImdCl7Y29uc3QgdD1lLiRpbXBsaWNpdCxuPXpmKCk7bHUoInRyYW5zZm9ybSIsbi5nZXRHcm91cFRyYW5zZm9ybSh0KSkoImNvbG9yIixuLmdldEhpc3RvZ3JhbUZpbGwodCkpLGN1KCJoaXN0b2dyYW0iLCEwKSgibm8tY29sb3IiLCFuLmlzRGF0dW1JbkxpbmtlZFRpbWVSYW5nZSh0KSksRGMoMSksYmYoIm5nSWYiLG4ubW9kZT09PW4uSGlzdG9ncmFtTW9kZS5PRkZTRVQpLERjKDEpLHltKCJkIixuLmdldEhpc3RvZ3JhbVBhdGgodCkpLERjKDEpLGJmKCJuZ0lmIixuLnRvb2x0aXBEYXRhKX19ZnVuY3Rpb24gUGJ0KHQsZSl7aWYoMSZ0JiYob2EoKSx2ZigwLCJjaXJjbGUiLDIzKSksMiZ0KXtjb25zdCB0PXpmKDIpO3ltKCJjeCIsdC5nZXRVaUNvb3JkRnJvbUJpbkZvckNvbnRlbnQodC50b29sdGlwRGF0YS5jbG9zZXN0QmluKS54KSgiY3kiLHQuZ2V0VWlDb29yZEZyb21CaW5Gb3JDb250ZW50KHQudG9vbHRpcERhdGEuY2xvc2VzdEJpbikueSl9fWZ1bmN0aW9uIHdidCh0LGUpe2lmKDEmdCYmKG9hKCksQ2YoMCwiZyIsNCksQ2YoMSwiZyIpLHZmKDIsInBhdGgiKSxIbSgzLFBidCwxLDIsImNpcmNsZSIsMjQpLE1mKCksQ2YoNCwiZyIsMjUpLENmKDUsInRleHQiLDI2KSxQdSg2KSxNZigpLE1mKCksTWYoKSksMiZ0KXtjb25zdCB0PXpmKCk7RGMoMSksbHUoInRyYW5zZm9ybSIsdC5nZXRHcm91cFRyYW5zZm9ybSh0LnRvb2x0aXBEYXRhLmNsb3Nlc3REYXR1bSkpLERjKDEpLHltKCJkIix0LmdldEhpc3RvZ3JhbVBhdGgodC50b29sdGlwRGF0YS5jbG9zZXN0RGF0dW0pKSxEYygxKSxiZigibmdJZiIsdC50b29sdGlwRGF0YS5jbG9zZXN0QmluKSxEYygxKSxsdSgidHJhbnNmb3JtIix0LmdldENzc1RyYW5zbGF0ZVB4KHQudG9vbHRpcERhdGEudmFsdWUucG9zaXRpb24ueCx0LnRvb2x0aXBEYXRhLnZhbHVlLnBvc2l0aW9uLnkpKSxEYygyKSx3dSh0LnRvb2x0aXBEYXRhLnZhbHVlLmxhYmVsKX19Y2xhc3Mga2J0e2NvbnN0cnVjdG9yKHQpe3RoaXMuY2hhbmdlRGV0ZWN0b3I9dCx0aGlzLm1vZGU9akUuT0ZGU0VULHRoaXMudGltZVByb3BlcnR5PVZFLlNURVAsdGhpcy5saW5rZWRUaW1lPW51bGwsdGhpcy5IaXN0b2dyYW1Nb2RlPWpFLHRoaXMuVGltZVByb3BlcnR5PVZFLHRoaXMudG9vbHRpcERhdGE9bnVsbCx0aGlzLm5nVW5zdWJzY3JpYmU9bmV3IEIsdGhpcy5sYXlvdXQ9e2hpc3RvZ3JhbUhlaWdodDowLGNvbnRlbnRDbGllbnRSZWN0OntoZWlnaHQ6MCx3aWR0aDowfX0sdGhpcy5zY2FsZXM9bnVsbCx0aGlzLmZvcm1hdHRlcnM9e2Jpbk51bWJlcjpMbnQoIi4zfnMiKSxjb3VudDpMbnQoIi4zbiIpLHdhbGxUaW1lOnRpdCgiJW0vJWQgJVgiKSxzdGVwOkxudCgiLjBmIikscmVsYXRpdmU6dD0+TG50KCIuMXIiKSh0LzM2ZTUpKyJoIn0sdGhpcy5kb21WaXNpYmxlPSExfW5nT25DaGFuZ2VzKCl7dGhpcy51cGRhdGVDaGFydElmVmlzaWJsZSgpfW5nT25EZXN0cm95KCl7dGhpcy5uZ1Vuc3Vic2NyaWJlLm5leHQoKSx0aGlzLm5nVW5zdWJzY3JpYmUuY29tcGxldGUoKX1uZ0FmdGVyVmlld0luaXQoKXtsZSh0aGlzLm1haW4ubmF0aXZlRWxlbWVudCwibW91c2Vtb3ZlIix7cGFzc2l2ZTohMH0pLnBpcGUoamUodGhpcy5uZ1Vuc3Vic2NyaWJlKSkuc3Vic2NyaWJlKCh0PT50aGlzLm9uTW91c2VNb3ZlKHQpKSl9Z2V0Q3NzVHJhbnNsYXRlUHgodCxlKXtyZXR1cm5gdHJhbnNsYXRlKCR7dH1weCwgJHtlfXB4KWB9Z2V0Q2xvc2VzdEJpbkZyb21CaW5Db29yZGluYXRlKHQsZSl7aWYoIXQuYmlucy5sZW5ndGgpcmV0dXJue3g6MCxkeDowLHk6MH07Y29uc3Qgbj10LmJpbnNbMF0sbz10LmJpbnMuc2xpY2UoLTEpWzBdO2lmKGU8bi54KXJldHVybiBuO2lmKGU+PW8ueCtvLmR4KXJldHVybiBvO3JldHVybiB0LmJpbnMuZmluZCgodD0+dC54PD1lJiZlPHQueCt0LmR4KSl9Z2V0VWlDb29yZEZyb21CaW5Gb3JDb250ZW50KHQpe3JldHVybiB0aGlzLnNjYWxlcz97eDp0aGlzLnNjYWxlcy5iaW5TY2FsZShSYnQodCkpLHk6dGhpcy5zY2FsZXMuY291bnRTY2FsZSh0LnkpfTp7eDowLHk6MH19Z2V0SGlzdG9ncmFtUGF0aCh0KXtpZighdGhpcy5zY2FsZXN8fCF0LmJpbnMubGVuZ3RoKXJldHVybiIiO2NvbnN0IGU9dGhpcy5zY2FsZXMuYmluU2NhbGUsbj10aGlzLnNjYWxlcy5jb3VudFNjYWxlLG89dC5iaW5zWzBdLGk9dC5iaW5zLnNsaWNlKC0xKVswXSxhPVtgTSR7ZShSYnQobykpfSwke24oMCl9YF07Zm9yKGNvbnN0IG8gb2YgdC5iaW5zKWEucHVzaChgTCR7ZShSYnQobykpfSwke24oby55KX1gKTtyZXR1cm4gYS5wdXNoKGBMJHtlKFJidChpKSl9LCR7bigwKX1gKSxhLmpvaW4oIiIpfXRyYWNrQnlXYWxsVGltZSh0KXtyZXR1cm4gdC53YWxsVGltZX1nZXRHcm91cFRyYW5zZm9ybSh0KXtyZXR1cm4gdGhpcy5zY2FsZXMmJnRoaXMubW9kZSE9PWpFLk9WRVJMQVk/dGhpcy5nZXRDc3NUcmFuc2xhdGVQeCgwLHRoaXMuc2NhbGVzLnRlbXBvcmFsU2NhbGUodGhpcy5nZXRUaW1lVmFsdWUodCkpKToiIn1pc0xpbmtlZFRpbWVFbmFibGVkKHQpe3JldHVybiBCb29sZWFuKHRoaXMubW9kZT09PWpFLk9GRlNFVCYmdGhpcy50aW1lUHJvcGVydHk9PT1WRS5TVEVQJiZ0aGlzLnNjYWxlcyYmdCl9aXNEYXR1bUluTGlua2VkVGltZVJhbmdlKHQpe3JldHVybiF0aGlzLmlzTGlua2VkVGltZUVuYWJsZWQodGhpcy5saW5rZWRUaW1lKXx8KG51bGw9PT10aGlzLmxpbmtlZFRpbWUuZW5kU3RlcD90aGlzLmxpbmtlZFRpbWUuc3RhcnRTdGVwPT09dC5zdGVwOnRoaXMubGlua2VkVGltZS5zdGFydFN0ZXA8PXQuc3RlcCYmdGhpcy5saW5rZWRUaW1lLmVuZFN0ZXA+PXQuc3RlcCl9Z2V0SGlzdG9ncmFtRmlsbCh0KXtyZXR1cm4gdGhpcy5zY2FsZXM/dGhpcy5zY2FsZXMuZDNDb2xvclNjYWxlKHRoaXMuZ2V0VGltZVZhbHVlKHQpKToiIn1nZXRHcmlkVGlja1lMb2NzKCl7aWYoIXRoaXMuc2NhbGVzfHx0aGlzLm1vZGU9PT1qRS5PRkZTRVQpcmV0dXJuW107Y29uc3QgdD10aGlzLnNjYWxlcy5jb3VudFNjYWxlO3JldHVybiB0LnRpY2tzKCkubWFwKChlPT50KGUpKSl9b25SZXNpemUoKXt0aGlzLnVwZGF0ZUNsaWVudFJlY3RzKCksdGhpcy51cGRhdGVDaGFydElmVmlzaWJsZSgpfW9uVmlzaWJpbGl0eUNoYW5nZSh7dmlzaWJsZTp0fSl7dGhpcy5kb21WaXNpYmxlPXQsdCYmKHRoaXMudXBkYXRlQ2xpZW50UmVjdHMoKSx0aGlzLnVwZGF0ZUNoYXJ0SWZWaXNpYmxlKCkpfWdldFRpbWVWYWx1ZSh0KXtzd2l0Y2godGhpcy50aW1lUHJvcGVydHkpe2Nhc2UgVkUuV0FMTF9USU1FOnJldHVybiB0LndhbGxUaW1lO2Nhc2UgVkUuU1RFUDpyZXR1cm4gdC5zdGVwO2Nhc2UgVkUuUkVMQVRJVkU6cmV0dXJuIHQud2FsbFRpbWUtdGhpcy5kYXRhWzBdLndhbGxUaW1lfX11cGRhdGVDbGllbnRSZWN0cygpe3RoaXMuY29udGVudCYmKHRoaXMubGF5b3V0LmNvbnRlbnRDbGllbnRSZWN0PXRoaXMuY29udGVudC5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHRoaXMubGF5b3V0Lmhpc3RvZ3JhbUhlaWdodD10aGlzLmxheW91dC5jb250ZW50Q2xpZW50UmVjdC5oZWlnaHQvMi41KX11cGRhdGVDaGFydElmVmlzaWJsZSgpe3RoaXMuZG9tVmlzaWJsZSYmKHRoaXMuc2NhbGVzPXRoaXMuY29tcHV0ZVNjYWxlcyh0aGlzLmRhdGEpLHRoaXMucmVuZGVyWEF4aXMoKSx0aGlzLnJlbmRlcllBeGlzKCksdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCkpfWNvbXB1dGVTY2FsZXModCl7Y29uc3R7d2lkdGg6ZSxoZWlnaHQ6bn09dGhpcy5sYXlvdXQuY29udGVudENsaWVudFJlY3Qse21pbjpvLG1heDppfT1EYnQodCwodD0+KGZ1bmN0aW9uIGUodCxuKXtyZXR1cm4gdC5yZWR1Y2UoKCh0LGUpPT5NYXRoLm1pbih0LG4oZSkpKSwxLzApfSkodC5iaW5zLCh0PT50LngpKSksKHQ9PlNidCh0LmJpbnMsKCh7eDp0LGR4OmV9KT0+dCtlKSkpKSxhPVNidCh0LCh0PT5TYnQodC5iaW5zLCgoe3k6dH0pPT50KSkpKSxyPW1vdCgpLmRvbWFpbihbbyxpXSkubmljZSgpLHM9dGhpcy5tb2RlIT09akUuT1ZFUkxBWSYmdGhpcy50aW1lUHJvcGVydHk9PVZFLldBTExfVElNRT9TYXQoKTptb3QoKSxsPXQubWFwKCh0PT50aGlzLmdldFRpbWVWYWx1ZSh0KSkpLHttaW46YyxtYXg6ZH09RGJ0KGwsKHQ9PnQpKSxwPVtjLGRdO3MuZG9tYWluKHApO2NvbnN0IG09bW90KCk7bS5kb21haW4oWzAsYV0pO2NvbnN0IGY9VDkodGhpcy5jb2xvcnx8IiMwMDAiKSx1PW1vdCgpO2lmKHUuZG9tYWluKHApLHIucmFuZ2UoWzAsZV0pLHUucmFuZ2UoW2YuYnJpZ2h0ZXIoKSxmLmRhcmtlcigpXSksdS5pbnRlcnBvbGF0ZSh5dHQpLHRoaXMubW9kZT09PWpFLk9WRVJMQVkpcy5yYW5nZShbbixuXSksbS5yYW5nZShbbiwwXSk7ZWxzZXtzLnJhbmdlKFtuLSh0aGlzLm1vZGU9PT1qRS5PRkZTRVQ/bi10aGlzLmxheW91dC5oaXN0b2dyYW1IZWlnaHQ6MCksbl0pLG0ucmFuZ2UoWzAsLXRoaXMubGF5b3V0Lmhpc3RvZ3JhbUhlaWdodF0pfXJldHVybntiaW5TY2FsZTpyLGQzQ29sb3JTY2FsZTp1LGNvdW50U2NhbGU6bSx0ZW1wb3JhbFNjYWxlOnN9fXJlbmRlclhBeGlzKCl7aWYoIXRoaXMuc2NhbGVzKXJldHVybjtjb25zdHt3aWR0aDp0fT10aGlzLmxheW91dC5jb250ZW50Q2xpZW50UmVjdCxlPUI2KHRoaXMuc2NhbGVzLmJpblNjYWxlKS50aWNrcyhNYXRoLm1heCgyLHQvMjApKTtlLnRpY2tGb3JtYXQodGhpcy5mb3JtYXR0ZXJzLmJpbk51bWJlciksZShuOCh0aGlzLnhBeGlzLm5hdGl2ZUVsZW1lbnQpKX1nZXRZQXhpc0Zvcm1hdHRlcigpe2lmKHRoaXMubW9kZT09PWpFLk9WRVJMQVkpcmV0dXJuIHRoaXMuZm9ybWF0dGVycy5jb3VudDtzd2l0Y2godGhpcy50aW1lUHJvcGVydHkpe2Nhc2UgVkUuV0FMTF9USU1FOnJldHVybiB0aGlzLmZvcm1hdHRlcnMud2FsbFRpbWU7Y2FzZSBWRS5TVEVQOnJldHVybiB0aGlzLmZvcm1hdHRlcnMuc3RlcDtjYXNlIFZFLlJFTEFUSVZFOnJldHVybiB0aGlzLmZvcm1hdHRlcnMucmVsYXRpdmU7ZGVmYXVsdDp0aHJvdyBSYW5nZUVycm9yKGBZIGF4aXMgZm9ybWF0dGVyIGZvciAke3RoaXMudGltZVByb3BlcnR5fSBtdXN0IGJlIGltcGxlbWVudGVkYCl9fXJlbmRlcllBeGlzKCl7aWYoIXRoaXMuc2NhbGVzKXJldHVybjtjb25zdCB0PXRoaXMubW9kZT09PWpFLk9WRVJMQVk/dGhpcy5zY2FsZXMuY291bnRTY2FsZTp0aGlzLnNjYWxlcy50ZW1wb3JhbFNjYWxlLHtoZWlnaHQ6ZX09dGhpcy5sYXlvdXQuY29udGVudENsaWVudFJlY3Qsbj1MNih0KS50aWNrcyhNYXRoLm1heCgyLGUvMTUpKTtuLnRpY2tGb3JtYXQodGhpcy5nZXRZQXhpc0Zvcm1hdHRlcigpKSxuKG44KHRoaXMueUF4aXMubmF0aXZlRWxlbWVudCkpfWZpbmRDbG9zZXN0RGF0dW1JbmRleCh0KXtsZXQgZT10LnRhcmdldCxuPWU7Zm9yKDtlJiZlIT09dGhpcy5oaXN0b2dyYW1zLm5hdGl2ZUVsZW1lbnQ7KW49ZSxlPWUucGFyZW50RWxlbWVudDtyZXR1cm4gZT9BcnJheS5mcm9tKGUuY2hpbGRyZW4pLmluZGV4T2Yobik6LTF9b25Nb3VzZU1vdmVGb3JUZXN0T25seSh0KXtyZXR1cm4gdGhpcy5vbk1vdXNlTW92ZSh0KX1vbk1vdXNlTW92ZSh0KXtpZighdGhpcy5zY2FsZXMpcmV0dXJuO2NvbnN0IGU9dC5vZmZzZXRYLG49dC5vZmZzZXRZLG89dGhpcy5maW5kQ2xvc2VzdERhdHVtSW5kZXgodCk7aWYobzwwKXJldHVybjtjb25zdCBpPXRoaXMuc2NhbGVzLmJpblNjYWxlLmludmVydChlKSxhPXRoaXMuZGF0YVtvXSxyPXRoaXMuZ2V0Q2xvc2VzdEJpbkZyb21CaW5Db29yZGluYXRlKGEsaSk7dGhpcy50b29sdGlwRGF0YT17dmFsdWU6e3Bvc2l0aW9uOnt4OmUseTpufSxsYWJlbDp0aGlzLm1vZGU9PT1qRS5PRkZTRVQ/dGhpcy5mb3JtYXR0ZXJzLmNvdW50KHIueSk6YFN0ZXA6ICR7dGhpcy5mb3JtYXR0ZXJzLnN0ZXAoYS5zdGVwKX1gfSx4QXhpczp7cG9zaXRpb246dGhpcy5nZXRVaUNvb3JkRnJvbUJpbkZvckNvbnRlbnQocikueCxsYWJlbDp0aGlzLmZvcm1hdHRlcnMuYmluTnVtYmVyKFJidChyKSl9LHlBeGlzOntwb3NpdGlvbjp0aGlzLnNjYWxlcy5jb3VudFNjYWxlKHRoaXMubW9kZT09PWpFLk9GRlNFVD8wOnIueSksbGFiZWw6dGhpcy5tb2RlPT09akUuT0ZGU0VUP3RoaXMuZ2V0WUF4aXNGb3JtYXR0ZXIoKSh0aGlzLmdldFRpbWVWYWx1ZShhKSk6dGhpcy5mb3JtYXR0ZXJzLmJpbk51bWJlcihyLnkpfSx4UG9zaXRpb25JbkJpbkNvb3JkOmksY2xvc2VzdERhdHVtOmEsY2xvc2VzdEJpbjpyfSx0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKX19ZnVuY3Rpb24gU2J0KHQsZSl7cmV0dXJuIHQucmVkdWNlKCgodCxuKT0+TWF0aC5tYXgodCxlKG4pKSksLTEvMCl9ZnVuY3Rpb24gRGJ0KHQsZSxuKXtufHwobj1lKTtsZXQgbz0xLzAsaT0tMS8wO2Zvcihjb25zdCBhIG9mIHQpbz1NYXRoLm1pbihvLGUoYSkpLGk9TWF0aC5tYXgoaSxuKGEpKTtyZXR1cm57bWluOm8sbWF4Oml9fWZ1bmN0aW9uIFJidCh0KXtyZXR1cm4gdC54Ky41KnQuZHh9ZnVuY3Rpb24gRWJ0KHQsZSl7MSZ0JiZ2ZigwLCJ2aXMtc2VsZWN0ZWQtdGltZS1jbGlwcGVkIil9ZnVuY3Rpb24gQWJ0KHQsZSl7MSZ0JiYoQ2YoMCwic3BhbiIsMTQpLHZmKDEsIm1hdC1zcGlubmVyIiwxNSksTWYoKSl9a2J0Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxrYnQpKGdmKE9iKSl9LGtidC7JtWNtcD1zbyh7dHlwZTprYnQsc2VsZWN0b3JzOltbInRiLWhpc3RvZ3JhbSJdXSx2aWV3UXVlcnk6ZnVuY3Rpb24gdChlLG4pe2lmKDEmZSYmKFZ5KG1idCw1KSxWeShmYnQsNSksVnkodWJ0LDUpLFZ5KGdidCw1KSxWeShoYnQsNSkpLDImZSl7bGV0IHQ7QnkodD1VeSgpKSYmKG4ubWFpbj10LmZpcnN0KSxCeSh0PVV5KCkpJiYobi54QXhpcz10LmZpcnN0KSxCeSh0PVV5KCkpJiYobi55QXhpcz10LmZpcnN0KSxCeSh0PVV5KCkpJiYobi5jb250ZW50PXQuZmlyc3QpLEJ5KHQ9VXkoKSkmJihuLmhpc3RvZ3JhbXM9dC5maXJzdCl9fSxpbnB1dHM6e21vZGU6Im1vZGUiLHRpbWVQcm9wZXJ0eToidGltZVByb3BlcnR5Iixjb2xvcjoiY29sb3IiLGRhdGE6ImRhdGEiLGxpbmtlZFRpbWU6ImxpbmtlZFRpbWUifSxmZWF0dXJlczpbcW9dLGRlY2xzOjIyLHZhcnM6MTcsY29uc3RzOltbImRldGVjdFJlc2l6ZSIsIiIsIm9ic2VydmVJbnRlcnNlY3Rpb24iLCIiLDMsIm9uUmVzaXplIiwib25WaXNpYmlsaXR5Q2hhbmdlIl0sWyJtYWluIiwiIl0sWzEsImF4aXMiLCJ4LWF4aXMiXSxbInhBeGlzIiwiIl0sWzEsInRvb2x0aXAiXSxbMywidHJhbnNmb3JtIiw0LCJuZ0lmIl0sWzEsImF4aXMiLCJ5LWF4aXMiXSxbInlBeGlzIiwiIl0sWzQsIm5nSWYiXSxbMSwiY29udGVudCJdLFsiY29udGVudCIsIiJdLFsxLCJncmlkIl0sWzMsInRyYW5zZm9ybSIsNCwibmdGb3IiLCJuZ0Zvck9mIl0sWyJoaXN0b2dyYW1zIiwiIl0sWzMsInRyYW5zZm9ybSIsImhpc3RvZ3JhbSIsIm5vLWNvbG9yIiwiY29sb3IiLDQsIm5nRm9yIiwibmdGb3JPZiIsIm5nRm9yVHJhY2tCeSJdLFsiY2xhc3MiLCJ0b29sdGlwIiw0LCJuZ0lmIl0sWzEsImxpbmtlZC10aW1lIl0sWzEsImxpbmtlZC10aW1lLWZvYiIsMywic3RlcCJdLFsiY2xhc3MiLCJsaW5rZWQtdGltZSIsMywidHJhbnNmb3JtIiw0LCJuZ0lmIl0sWyJ4MiIsIjEwMCUiLDEsInRpY2siXSxbImNsYXNzIiwiYmFzZWxpbmUiLCJ4MiIsIjEwMCUiLDQsIm5nSWYiXSxbInIiLCIyIiwzLCJ0cmFuc2Zvcm0iLDQsIm5nSWYiXSxbIngyIiwiMTAwJSIsMSwiYmFzZWxpbmUiXSxbInIiLCIyIl0sWyJyIiwiMiIsNCwibmdJZiJdLFsxLCJ2YWx1ZS1sYWJlbCJdLFsieCIsIjMiLCJ5IiwiLTMiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKENmKDAsImRpdiIsMCwxKSxSZigib25SZXNpemUiLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4ub25SZXNpemUoKX0pKSgib25WaXNpYmlsaXR5Q2hhbmdlIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5vblZpc2liaWxpdHlDaGFuZ2UoZSl9KSksb2EoKSxDZigyLCJzdmciLDIpLHZmKDMsImciLG51bGwsMyksQ2YoNSwiZyIsNCksSG0oNixiYnQsMywzLCJnIiw1KSxNZigpLE1mKCksYWEoKSxDZig3LCJkaXYiLDYpLG9hKCksQ2YoOCwic3ZnIiksdmYoOSwiZyIsbnVsbCw3KSxDZigxMSwiZyIsNCksSG0oMTIseWJ0LDMsNCwiZyIsNSksTWYoKSxNZigpLEhtKDEzLENidCw0LDQsIm5nLWNvbnRhaW5lciIsOCksTWYoKSxDZigxNCwic3ZnIiw5LDEwKSxDZigxNiwiZyIsMTEpLEhtKDE3LE1idCwyLDIsImciLDEyKSxNZigpLENmKDE4LCJnIixudWxsLDEzKSxIbSgyMCxPYnQsNCwxMSwiZyIsMTQpLE1mKCksSG0oMjEsd2J0LDcsNywiZyIsMTUpLE1mKCksTWYoKSksMiZlJiYobXUoIm1haW4gIituLm1vZGUrIiAiK24udGltZVByb3BlcnR5KSxEYyg2KSxiZigibmdJZiIsbi50b29sdGlwRGF0YSksRGMoNSksbHUoInRyYW5zZm9ybSIsbi5nZXRDc3NUcmFuc2xhdGVQeCg5LDApKSxEYygxKSxiZigibmdJZiIsbi50b29sdGlwRGF0YSksRGMoMSksYmYoIm5nSWYiLG4uaXNMaW5rZWRUaW1lRW5hYmxlZChuLmxpbmtlZFRpbWUpKSxEYyg0KSxiZigibmdGb3JPZiIsbi5nZXRHcmlkVGlja1lMb2NzKCkpLERjKDEpLGN1KCJoaXN0b2dyYW1zIiwhMCkoImxpbmtlZC10aW1lLWVuYWJsZWQiLG4ubGlua2VkVGltZSkoImxpbmtlZC10aW1lLXNpbmdsZS1zdGVwIixuLmxpbmtlZFRpbWUmJiFuLmxpbmtlZFRpbWUuZW5kU3RlcCksRGMoMiksYmYoIm5nRm9yT2YiLG4uZGF0YSkoIm5nRm9yVHJhY2tCeSIsbi50cmFja0J5V2FsbFRpbWUpLERjKDEpLGJmKCJuZ0lmIixuLnRvb2x0aXBEYXRhKSl9LGRpcmVjdGl2ZXM6WyRRLHNidCxQdix4dixqaHRdLHN0eWxlczpbJy5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjlweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHh9Lm1hdC1oMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaGVhZGxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDI0cHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTVweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWg2W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1ib2R5LXN0cm9uZ1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYXJkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FyZC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MjRweH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNhbGVuZGFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZGlhbG9nLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVlbSAwO2JvcmRlci10b3A6Ljg0Mzc1ZW0gc29saWQgdHJhbnNwYXJlbnR9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17dG9wOi0wLjg0Mzc1ZW07cGFkZGluZy10b3A6Ljg0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6NzUlO21hcmdpbi10b3A6LjY2NjY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS43OTE2NjY2NjY3ZW0pfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjQzNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDJweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIzZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4yODEyNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LjU0MTY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS42NjY2NjY2NjY3ZW0pfUBtZWRpYSBwcmludHsubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjJlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjFlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyZW0pIHNjYWxlKDAuNzUpfX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouMjVlbSAwIC43NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjA5Mzc1ZW07bWFyZ2luLXRvcDotMC41ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoxZW0gMCAxZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuODQzNzVlbTttYXJnaW4tdG9wOi0wLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMiksIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fWlucHV0Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi0wLjA2MjVlbX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHh9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtfS5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1zdGVwLXN1Yi1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6bm9ybWFsfS5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1zdGVwLWxhYmVsLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10YWItZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MH0ubWF0LXRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTBweDtwYWRkaW5nLXRvcDo2cHg7cGFkZGluZy1ib3R0b206NnB4fS5tYXQtdG9vbHRpcC1oYW5kc2V0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4fS5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtc2ltcGxlLXNuYWNrYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHh9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoxO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjE0cHh9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV06bm90KDplbXB0eSl7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9Lm1hdC1yaXBwbGUubWF0LXJpcHBsZS11bmJvdW5kZWRbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OnZpc2libGV9Lm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJhZGl1czo1MCU7cG9pbnRlci1ldmVudHM6bm9uZTt0cmFuc2l0aW9uOm9wYWNpdHksdHJhbnNmb3JtIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTt0cmFuc2Zvcm06c2NhbGUoMCl9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9LmNkay12aXN1YWxseS1oaWRkZW5bX25nY29udGVudC0lQ09NUCVde2JvcmRlcjowO2NsaXA6cmVjdCgwIDAgMCAwKTtoZWlnaHQ6MXB4O21hcmdpbjotMXB4O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4O3doaXRlLXNwYWNlOm5vd3JhcDtvdXRsaW5lOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0sIC5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cG9pbnRlci1ldmVudHM6bm9uZTt0b3A6MDtsZWZ0OjA7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV06ZW1wdHl7ZGlzcGxheTpub25lfS5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktcGFuZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6YXV0bztib3gtc2l6aW5nOmJvcmRlci1ib3g7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDttYXgtd2lkdGg6MTAwJTttYXgtaGVpZ2h0OjEwMCV9LmNkay1vdmVybGF5LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDt6LWluZGV4OjEwMDA7cG9pbnRlci1ldmVudHM6YXV0bzstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnQ7dHJhbnNpdGlvbjpvcGFjaXR5IDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpO29wYWNpdHk6MH0uY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eToxfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6LjZ9LmNkay1vdmVybGF5LWRhcmstYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMzIpfS5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV0sIC5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWNvbm5lY3RlZC1wb3NpdGlvbi1ib3VuZGluZy1ib3hbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO21pbi13aWR0aDoxcHg7bWluLWhlaWdodDoxcHh9LmNkay1nbG9iYWwtc2Nyb2xsYmxvY2tbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3dpZHRoOjEwMCU7b3ZlcmZsb3cteTpzY3JvbGx9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplW19uZ2NvbnRlbnQtJUNPTVAlXXtyZXNpemU6bm9uZX10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDphdXRvICFpbXBvcnRhbnQ7b3ZlcmZsb3c6aGlkZGVuICFpbXBvcnRhbnR9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZy1maXJlZm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDowICFpbXBvcnRhbnR9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydHt9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmR7fS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGx7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0IDBzIDFtc30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOi13ZWJraXQtYXV0b2ZpbGwpe2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmQgMHMgMW1zfS5tYXQtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LW1kYy1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfVtfbmdob3N0LSVDT01QJV0sIC5tYWluW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmlubGluZS1ibG9jaztoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlfVtfbmdob3N0LSVDT01QJV17Ym94LXNpemluZzpib3JkZXItYm94O3BhZGRpbmc6MTBweH0ubWFpbltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpncmlkO2dyaWQtdGVtcGxhdGUtYXJlYXM6ImNvbnRlbnQgeS1heGlzIiAieC1heGlzIC4iO2dyaWQtdGVtcGxhdGUtY29sdW1uczoxZnIgNTBweDtncmlkLXRlbXBsYXRlLXJvd3M6MWZyIDMwcHh9Lm1haW4ud2FsbF90aW1lW19uZ2NvbnRlbnQtJUNPTVAlXXtncmlkLXRlbXBsYXRlLWNvbHVtbnM6MWZyIDc1cHh9LnRvb2x0aXBbX25nY29udGVudC0lQ09NUCVdLCAuYmFzZWxpbmVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMwMDB9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgLnRvb2x0aXBbX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAudG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZn1ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICAuYmFzZWxpbmVbX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAuYmFzZWxpbmVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmZ9LmxpbmtlZC10aW1lLWZvYltfbmdjb250ZW50LSVDT01QJV0gICB0ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLnRvb2x0aXBbX25nY29udGVudC0lQ09NUCVdICAgdGV4dFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6Ym9sZDtmb250LXNpemU6MTBweH0ubGlua2VkLXRpbWUtZm9iW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRleHRbX25nY29udGVudC0lQ09NUCVdLCAubGlua2VkLXRpbWUtZm9iW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGNpcmNsZVtfbmdjb250ZW50LSVDT01QJV0sIC50b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRleHRbX25nY29udGVudC0lQ09NUCVdLCAudG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV0gICBjaXJjbGVbX25nY29udGVudC0lQ09NUCVde2ZpbGw6Y3VycmVudENvbG9yfS5saW5rZWQtdGltZS1mb2JbX25nY29udGVudC0lQ09NUCVdICAgLnZhbHVlLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLnRvb2x0aXBbX25nY29udGVudC0lQ09NUCVdICAgLnZhbHVlLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtkb21pbmFudC1iYXNlbGluZTppZGVvZ3JhcGhpYzt0ZXh0LWFuY2hvcjpzdGFydH0ubGlua2VkLXRpbWVbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6OXB4O3RvcDowO2hlaWdodDoxMDAlO3JpZ2h0OjB9LmxpbmtlZC10aW1lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5saW5rZWQtdGltZS1mb2JbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6aW5saW5lLWJsb2NrO3RyYW5zZm9ybTp0cmFuc2xhdGVZKC01MCUpfS5heGlzW19uZ2NvbnRlbnQtJUNPTVAlXSAgICB7Y29sb3I6IzYxNjE2MTtwb3NpdGlvbjpyZWxhdGl2ZTtvdmVyZmxvdzpoaWRkZW59Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgLmF4aXNbX25nY29udGVudC0lQ09NUCVdICAgICwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLmF4aXNbX25nY29udGVudC0lQ09NUCVdICAgIHtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KX0uYXhpc1tfbmdjb250ZW50LSVDT01QJV0gICAgIC5kb21haW4sIC5heGlzW19uZ2NvbnRlbnQtJUNPTVAlXSAgICAgLnRpY2sgdGV4dHtkaXNwbGF5Om5vbmV9LmF4aXNbX25nY29udGVudC0lQ09NUCVdICAgICAudGljazpudGgtY2hpbGQoMm4rMSkgdGV4dHtkaXNwbGF5OmluaXRpYWx9c3ZnW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlO3BvaW50ZXItZXZlbnRzOnZpc2libGVQYWludGVkfXN2Z1tfbmdjb250ZW50LSVDT01QJV0gICBsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgc3ZnW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGNpcmNsZVtfbmdjb250ZW50LSVDT01QJV0sIHN2Z1tfbmdjb250ZW50LSVDT01QJV0gICAudG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17cG9pbnRlci1ldmVudHM6bm9uZX1zdmdbX25nY29udGVudC0lQ09NUCVdICAgZ1tfbmdjb250ZW50LSVDT01QJV17d2lsbC1jaGFuZ2U6dHJhbnNmb3JtfS54LWF4aXNbX25nY29udGVudC0lQ09NUCVde2dyaWQtYXJlYTp4LWF4aXN9LngtYXhpc1tfbmdjb250ZW50LSVDT01QJV0gICAudG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17ZG9taW5hbnQtYmFzZWxpbmU6aGFuZ2luZzt0ZXh0LWFuY2hvcjptaWRkbGV9LnktYXhpc1tfbmdjb250ZW50LSVDT01QJV17Z3JpZC1hcmVhOnktYXhpczstd2Via2l0LW1hc2staW1hZ2U6bGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgIzAwMDAgMCUsICMwMDAgMTAlLCAjMDAwIDkwJSwgIzAwMDAgMTAwJSk7bWFzay1pbWFnZTpsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCAjMDAwMCAwJSwgIzAwMCAxMCUsICMwMDAgOTAlLCAjMDAwMCAxMDAlKX0ueS1heGlzW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC50b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtkb21pbmFudC1iYXNlbGluZTptaWRkbGU7dGV4dC1hbmNob3I6c3RhcnR9LmNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdICAgLnRpY2tbX25nY29udGVudC0lQ09NUCVdLCAuYXhpc1tfbmdjb250ZW50LSVDT01QJV0gICAgIC50aWNrIGxpbmV7c3Ryb2tlOiNkZGR9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgLmNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdICAgLnRpY2tbX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAuY29udGVudFtfbmdjb250ZW50LSVDT01QJV0gICAudGlja1tfbmdjb250ZW50LSVDT01QJV17c3Ryb2tlOiM1NTV9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgLmF4aXNbX25nY29udGVudC0lQ09NUCVdICAgICAudGljayBsaW5lLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAuYXhpc1tfbmdjb250ZW50LSVDT01QJV0gICAgIC50aWNrIGxpbmV7c3Ryb2tlOiM1NTV9LmNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2dyaWQtYXJlYTpjb250ZW50fS5jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC50aWNrW19uZ2NvbnRlbnQtJUNPTVAlXXtzdHJva2Utd2lkdGg6MXB4O3N0cm9rZS1kYXNoYXJyYXk6Mn0uY29udGVudFtfbmdjb250ZW50LSVDT01QJV0gICBjaXJjbGVbX25nY29udGVudC0lQ09NUCVdLCAuY29udGVudFtfbmdjb250ZW50LSVDT01QJV0gICBwYXRoW19uZ2NvbnRlbnQtJUNPTVAlXXtmaWxsOmN1cnJlbnRDb2xvcjtzdHJva2Utb3BhY2l0eTouNjtzdHJva2Utd2lkdGg6MXB4fS5jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGNpcmNsZVtfbmdjb250ZW50LSVDT01QJV17ZmlsdGVyOmRyb3Atc2hhZG93KDAgMCAxcHggcmdiYSgwLCAwLCAwLCAwLjYpKTtzdHJva2U6I2ZmZjt3aWxsLWNoYW5nZTp0cmFuc2Zvcm19LmNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdICAgLmJhc2VsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtzdHJva2Utb3BhY2l0eTouMTtzdHJva2Utd2lkdGg6MXB4O3N0cm9rZTpjdXJyZW50Q29sb3I7d2lkdGg6MTAwJX0uY29udGVudFtfbmdjb250ZW50LSVDT01QJV0gICAudG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV0gICBwYXRoW19uZ2NvbnRlbnQtJUNPTVAlXXtzdHJva2Utb3BhY2l0eToxO3N0cm9rZTpjdXJyZW50Q29sb3I7ZmlsbDp0cmFuc3BhcmVudH0uY29udGVudFtfbmdjb250ZW50LSVDT01QJV0gICAubm8tY29sb3JbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMjIxLDIyMSwyMjEsLjQpICFpbXBvcnRhbnR9LmNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm5vLWNvbG9yW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBhdGhbX25nY29udGVudC0lQ09NUCVde3N0cm9rZS1vcGFjaXR5Oi4yfWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC5jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5uby1jb2xvcltfbmdjb250ZW50LSVDT01QJV0sIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5uby1jb2xvcltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSg1MSw1MSw1MSwuNCkgIWltcG9ydGFudH0ub2Zmc2V0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5oaXN0b2dyYW1zW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBhdGhbX25nY29udGVudC0lQ09NUCVde3N0cm9rZTojZmZmfWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC5vZmZzZXRbX25nY29udGVudC0lQ09NUCVdICAgLmNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdICAgLmhpc3RvZ3JhbXNbX25nY29udGVudC0lQ09NUCVdICAgcGF0aFtfbmdjb250ZW50LSVDT01QJV0sIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5vZmZzZXRbX25nY29udGVudC0lQ09NUCVdICAgLmNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdICAgLmhpc3RvZ3JhbXNbX25nY29udGVudC0lQ09NUCVdICAgcGF0aFtfbmdjb250ZW50LSVDT01QJV17c3Ryb2tlOiM1NTV9Lm9mZnNldFtfbmdjb250ZW50LSVDT01QJV0gICAuY29udGVudFtfbmdjb250ZW50LSVDT01QJV0gICAuaGlzdG9ncmFtcy5saW5rZWQtdGltZS1zaW5nbGUtc3RlcFtfbmdjb250ZW50LSVDT01QJV0gICBbX25nY29udGVudC0lQ09NUCVdOm5vdCgubm8tY29sb3IpICAgcGF0aFtfbmdjb250ZW50LSVDT01QJV17c3Ryb2tlOiMwMDB9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgLm9mZnNldFtfbmdjb250ZW50LSVDT01QJV0gICAuY29udGVudFtfbmdjb250ZW50LSVDT01QJV0gICAuaGlzdG9ncmFtcy5saW5rZWQtdGltZS1zaW5nbGUtc3RlcFtfbmdjb250ZW50LSVDT01QJV0gICBbX25nY29udGVudC0lQ09NUCVdOm5vdCgubm8tY29sb3IpICAgcGF0aFtfbmdjb250ZW50LSVDT01QJV0sIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5vZmZzZXRbX25nY29udGVudC0lQ09NUCVdICAgLmNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdICAgLmhpc3RvZ3JhbXMubGlua2VkLXRpbWUtc2luZ2xlLXN0ZXBbX25nY29udGVudC0lQ09NUCVdICAgW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm5vLWNvbG9yKSAgIHBhdGhbX25nY29udGVudC0lQ09NUCVde3N0cm9rZTojZmZmfS5vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC54LWF4aXNbX25nY29udGVudC0lQ09NUCVdICAgICAudGljayBsaW5le2Rpc3BsYXk6bm9uZX0ub3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV0gICAuY29udGVudFtfbmdjb250ZW50LSVDT01QJV0gICBwYXRoW19uZ2NvbnRlbnQtJUNPTVAlXXtmaWxsLW9wYWNpdHk6MDtzdHJva2U6Y3VycmVudENvbG9yfS50b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdICAgY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9Lm1haW5bX25nY29udGVudC0lQ09NUCVdOmhvdmVyICAgLmNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdICAgY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1haW5bX25nY29udGVudC0lQ09NUCVdOmhvdmVyICAgLnRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6YmxvY2t9J10sY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKGtidCxbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJ0Yi1oaXN0b2dyYW0iLHRlbXBsYXRlVXJsOiJoaXN0b2dyYW1fY29tcG9uZW50Lm5nLmh0bWwiLHN0eWxlVXJsczpbImhpc3RvZ3JhbV9jb21wb25lbnQuY3NzIl0sY2hhbmdlRGV0ZWN0aW9uOmpuLk9uUHVzaH1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOk9ifV19KSx7bWFpbjpbe3R5cGU6YXIsYXJnczpbIm1haW4iXX1dLHhBeGlzOlt7dHlwZTphcixhcmdzOlsieEF4aXMiXX1dLHlBeGlzOlt7dHlwZTphcixhcmdzOlsieUF4aXMiXX1dLGNvbnRlbnQ6W3t0eXBlOmFyLGFyZ3M6WyJjb250ZW50Il19XSxoaXN0b2dyYW1zOlt7dHlwZTphcixhcmdzOlsiaGlzdG9ncmFtcyJdfV0sbW9kZTpbe3R5cGU6Ul99XSx0aW1lUHJvcGVydHk6W3t0eXBlOlJffV0sY29sb3I6W3t0eXBlOlJffV0sZGF0YTpbe3R5cGU6Ul99XSxsaW5rZWRUaW1lOlt7dHlwZTpSX31dfSk7Y29uc3QgVGJ0PWZ1bmN0aW9uKHQsZSl7cmV0dXJue3N0YXJ0U3RlcDp0LGVuZFN0ZXA6ZX19O2Z1bmN0aW9uIE5idCh0LGUpe2lmKDEmdCYmdmYoMCwidGItaGlzdG9ncmFtIiwxNiksMiZ0KXtjb25zdCB0PXpmKCk7YmYoImRhdGEiLHQuZGF0YSkoIm1vZGUiLHQubW9kZSkoInRpbWVQcm9wZXJ0eSIsdC50aW1lUHJvcGVydHkodC54QXhpc1R5cGUpKSgiY29sb3IiLHQucnVuQ29sb3JTY2FsZSh0LnJ1bklkKSkoImxpbmtlZFRpbWUiLHQuc2VsZWN0ZWRUaW1lP2F5KDUsVGJ0LHQuc2VsZWN0ZWRUaW1lLnN0YXJ0U3RlcCx0LnNlbGVjdGVkVGltZS5lbmRTdGVwKTpudWxsKX19ZnVuY3Rpb24gemJ0KHQsZSl7MSZ0JiYoQ2YoMCwiZGl2IiwxOCksUHUoMSwiIERhdGEgZmFpbGVkIHRvIGxvYWQuICIpLE1mKCkpfWZ1bmN0aW9uIElidCh0LGUpe2lmKDEmdCYmSG0oMCx6YnQsMiwwLCJkaXYiLDE3KSwyJnQpe2NvbnN0IHQ9emYoKTtiZigibmdJZiIsdC5sb2FkU3RhdGU9PT10LkRhdGFMb2FkU3RhdGUuRkFJTEVEKX19Y29uc3QgSGJ0PWZ1bmN0aW9uKHQpe3JldHVybntiYWNrZ3JvdW5kQ29sb3I6dH19O2NsYXNzIEZidHtjb25zdHJ1Y3Rvcigpe3RoaXMuRGF0YUxvYWRTdGF0ZT1VRSx0aGlzLm9uRnVsbFNpemVUb2dnbGU9bmV3IFN5LHRoaXMub25QaW5DbGlja2VkPW5ldyBTeX10aW1lUHJvcGVydHkodCl7c3dpdGNoKHQpe2Nhc2UgUVQuU1RFUDpyZXR1cm4gVkUuU1RFUDtjYXNlIFFULldBTExfVElNRTpyZXR1cm4gVkUuV0FMTF9USU1FO2Nhc2UgUVQuUkVMQVRJVkU6cmV0dXJuIFZFLlJFTEFUSVZFO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIHhBeGlzVHlwZSBmb3IgaGlzdG9ncmFtIHRpbWUgcHJvcGVydHkuIil9fX1GYnQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEZidCl9LEZidC7JtWNtcD1zbyh7dHlwZTpGYnQsc2VsZWN0b3JzOltbImhpc3RvZ3JhbS1jYXJkLWNvbXBvbmVudCJdXSxpbnB1dHM6e2xvYWRTdGF0ZToibG9hZFN0YXRlIix0aXRsZToidGl0bGUiLHRhZzoidGFnIixydW5JZDoicnVuSWQiLGRhdGE6ImRhdGEiLG1vZGU6Im1vZGUiLHhBeGlzVHlwZToieEF4aXNUeXBlIixydW5Db2xvclNjYWxlOiJydW5Db2xvclNjYWxlIixzaG93RnVsbFNpemU6InNob3dGdWxsU2l6ZSIsaXNQaW5uZWQ6ImlzUGlubmVkIixzZWxlY3RlZFRpbWU6InNlbGVjdGVkVGltZSJ9LG91dHB1dHM6e29uRnVsbFNpemVUb2dnbGU6Im9uRnVsbFNpemVUb2dnbGUiLG9uUGluQ2xpY2tlZDoib25QaW5DbGlja2VkIn0sZGVjbHM6MTYsdmFyczoxMyxjb25zdHM6ZnVuY3Rpb24oKXtsZXQgdCxlO2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgbmdJMThuQ2xvc3VyZU1vZGUmJm5nSTE4bkNsb3N1cmVNb2RlKXt0PWdvb2cuZ2V0TXNnKCJQaW4gY2FyZCIpfWVsc2UgdD0kbG9jYWxpemVgOkEgYnV0dG9uIHRvIHBpbiBhIGNhcmQu4pCfZTY2NWRjNzEyYmQ1ZjE4ZDRkZmEzYTI5ZTEyNWQ1NjVjYzUxZTJmNuKQnzcyODQ2MDY0MjYyMzQzNzUzNDQ6UGluIGNhcmRgO2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgbmdJMThuQ2xvc3VyZU1vZGUmJm5nSTE4bkNsb3N1cmVNb2RlKXtlPWdvb2cuZ2V0TXNnKCJUb2dnbGUgZnVsbCBzaXplIG1vZGUiKX1lbHNlIGU9JGxvY2FsaXplYDpBIGJ1dHRvbiBvbiBhIGhpc3RvZ3JhbSBjYXJkIHRoYXQgdG9nZ2xlcyBmdWxsIHNpemUgbW9kZS7ikJ9mYzhmNzY3ZDBiOWY5MzAxODdhMWJhZTM0NDc3YWQyODczNmVjZTMz4pCfOTE1NzIxNTYzNjM4OTI2NTk3OlRvZ2dsZSBmdWxsIHNpemUgbW9kZWA7cmV0dXJuW1sxLCJoZWFkaW5nIl0sWzEsInRhZyJdLFszLCJ0aXRsZSIsInZhbHVlIl0sWzQsIm5nSWYiXSxbMSwicnVuIl0sWzEsImRvdCIsMywibmdTdHlsZSJdLFsxLCJydW4tdGV4dCIsMywicnVuSWQiXSxbMSwiY29udHJvbHMiXSxbIm1hdC1pY29uLWJ1dHRvbiIsIiIsImFyaWEtbGFiZWwiLHQsMSwicGluLWJ1dHRvbiIsMywiY2xpY2siXSxbMywic3ZnSWNvbiJdLFsibWF0LWljb24tYnV0dG9uIiwiIiwiYXJpYS1sYWJlbCIsZSwidGl0bGUiLCJUb2dnbGUgZnVsbCBzaXplIG1vZGUiLDMsImNsaWNrIl0sWyJjbGFzcyIsInNwaW5uZXIiLDQsIm5nSWYiXSxbMywiZGF0YSIsIm1vZGUiLCJ0aW1lUHJvcGVydHkiLCJjb2xvciIsImxpbmtlZFRpbWUiLDQsIm5nSWYiLCJuZ0lmRWxzZSJdLFsibm9EYXRhIiwiIl0sWzEsInNwaW5uZXIiXSxbImRpYW1ldGVyIiwiMTgiXSxbMywiZGF0YSIsIm1vZGUiLCJ0aW1lUHJvcGVydHkiLCJjb2xvciIsImxpbmtlZFRpbWUiXSxbImNsYXNzIiwiZW1wdHktbWVzc2FnZSIsNCwibmdJZiJdLFsxLCJlbXB0eS1tZXNzYWdlIl1dfSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7aWYoMSZlJiYoQ2YoMCwiZGl2IiwwKSxDZigxLCJkaXYiLDEpLHZmKDIsInRiLXRydW5jYXRlZC1wYXRoIiwyKSxIbSgzLEVidCwxLDAsInZpcy1zZWxlY3RlZC10aW1lLWNsaXBwZWQiLDMpLE1mKCksQ2YoNCwiZGl2Iiw0KSx2Zig1LCJzcGFuIiw1KSx2Zig2LCJjYXJkLXJ1bi1uYW1lIiw2KSxNZigpLENmKDcsInNwYW4iLDcpLENmKDgsImJ1dHRvbiIsOCksUmYoImNsaWNrIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLm9uUGluQ2xpY2tlZC5lbWl0KCFuLmlzUGlubmVkKX0pKSx2Zig5LCJtYXQtaWNvbiIsOSksTWYoKSxDZigxMCwiYnV0dG9uIiwxMCksUmYoImNsaWNrIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLm9uRnVsbFNpemVUb2dnbGUuZW1pdCgpfSkpLHZmKDExLCJtYXQtaWNvbiIsOSksTWYoKSxNZigpLEhtKDEyLEFidCwyLDAsInNwYW4iLDExKSxNZigpLEhtKDEzLE5idCwxLDgsInRiLWhpc3RvZ3JhbSIsMTIpLEhtKDE0LElidCwxLDEsIm5nLXRlbXBsYXRlIixudWxsLDEzLHF5KSksMiZlKXtjb25zdCB0PUZtKDE1KTtEYygyKSxiZigidGl0bGUiLG4udGFnKSgidmFsdWUiLG4udGl0bGUpLERjKDEpLGJmKCJuZ0lmIixuLnNlbGVjdGVkVGltZSYmbi5zZWxlY3RlZFRpbWUuY2xpcHBlZCksRGMoMiksYmYoIm5nU3R5bGUiLGl5KDExLEhidCxuLnJ1bkNvbG9yU2NhbGUobi5ydW5JZCkpKSxEYygxKSxiZigicnVuSWQiLG4ucnVuSWQpLERjKDIpLHltKCJ0aXRsZSIsbi5pc1Bpbm5lZD8iVW5waW4gY2FyZCI6IlBpbiBjYXJkIiksRGMoMSksYmYoInN2Z0ljb24iLG4uaXNQaW5uZWQ/ImtlZXBfMjRweCI6ImtlZXBfb3V0bGluZV8yNHB4IiksRGMoMiksYmYoInN2Z0ljb24iLG4uc2hvd0Z1bGxTaXplPyJmdWxsc2NyZWVuX2V4aXRfMjRweCI6ImZ1bGxzY3JlZW5fMjRweCIpLERjKDEpLGJmKCJuZ0lmIixuLmxvYWRTdGF0ZT09PW4uRGF0YUxvYWRTdGF0ZS5MT0FESU5HKSxEYygxKSxiZigibmdJZiIsbi5kYXRhJiZuLmRhdGEubGVuZ3RoKSgibmdJZkVsc2UiLHQpfX0sZGlyZWN0aXZlczpbTDQsUHYsenYsVzQsTkwsTXEsVmh0LGEyLGtidF0sc3R5bGVzOlsnLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjEycHg7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtYmFkZ2Utc21hbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6OXB4fS5tYXQtYmFkZ2UtbGFyZ2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweH0ubWF0LWgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1oZWFkbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMjRweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNnB4LzI4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNXB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC44MykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtaDZbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuNjcpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWJvZHktc3Ryb25nW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjAgMCAxMnB4fS5tYXQtc21hbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDEycHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjMwMCAxMTJweC8xMTJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDVlbTttYXJnaW46MCAwIDU2cHh9Lm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDU2cHgvNTZweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDJlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDQ1cHgvNDhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDA1ZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAzNHB4LzQwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDY0cHh9Lm1hdC1ib3R0b20tc2hlZXQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhcmQtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjIwcHh9Lm1hdC1jYXJkLXN1YnRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXJkLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNoZWNrYm94LWxheW91dFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoyNHB4fS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtdHJhaWxpbmctaWNvbi5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MThweH0ubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1oZWFkZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9vdGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2FsZW5kYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhbGVuZGFyLWJvZHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxM3B4fS5tYXQtY2FsZW5kYXItYm9keS1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FsZW5kYXItcGVyaW9kLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRoW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo0MDB9Lm1hdC1kaWFsb2ctdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDoxLjEyNTtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE1MCU7bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS41ZW07d2lkdGg6MS41ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNWVtIDA7Ym9yZGVyLXRvcDouODQzNzVlbSBzb2xpZCB0cmFuc3BhcmVudH0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTAuODQzNzVlbTtwYWRkaW5nLXRvcDouODQzNzVlbX0ubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo3NSU7bWFyZ2luLXRvcDouNjY2NjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjc5MTY2NjY2NjdlbSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNDM3NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMnB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTJlbSkgc2NhbGUoMC43NSl9fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi4yNWVtIDAgLjc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMDkzNzVlbTttYXJnaW4tdG9wOi0wLjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjFlbSAwIDFlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS44NDM3NWVtO21hcmdpbi10b3A6LTAuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9aW5wdXQubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LTAuMDYyNWVtfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweH0ubWF0LXJhZGlvLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW19Lm1hdC1zbGlkZS10b2dnbGUtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXN0ZXAtc3ViLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDpub3JtYWx9Lm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRhYi1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowfS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMHB4O3BhZGRpbmctdG9wOjZweDtwYWRkaW5nLWJvdHRvbTo2cHh9Lm1hdC10b29sdGlwLWhhbmRzZXRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHh9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1zaW1wbGUtc25hY2tiYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjE7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo1MDB9Lm1hdC10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW5lc3RlZC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweH0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmVtcHR5KXt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKX0ubWF0LXJpcHBsZS5tYXQtcmlwcGxlLXVuYm91bmRlZFtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6dmlzaWJsZX0ubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItcmFkaXVzOjUwJTtwb2ludGVyLWV2ZW50czpub25lO3RyYW5zaXRpb246b3BhY2l0eSx0cmFuc2Zvcm0gMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO3RyYW5zZm9ybTpzY2FsZSgwKX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6bm9uZX0uY2RrLXZpc3VhbGx5LWhpZGRlbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjA7Y2xpcDpyZWN0KDAgMCAwIDApO2hlaWdodDoxcHg7bWFyZ2luOi0xcHg7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxcHg7d2hpdGUtc3BhY2U6bm93cmFwO291dGxpbmU6MDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb2ludGVyLWV2ZW50czpub25lO3RvcDowO2xlZnQ6MDtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXTplbXB0eXtkaXNwbGF5Om5vbmV9LmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1wYW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtwb2ludGVyLWV2ZW50czphdXRvO2JveC1zaXppbmc6Ym9yZGVyLWJveDt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O21heC13aWR0aDoxMDAlO21heC1oZWlnaHQ6MTAwJX0uY2RrLW92ZXJsYXktYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO2xlZnQ6MDtyaWdodDowO3otaW5kZXg6MTAwMDtwb2ludGVyLWV2ZW50czphdXRvOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudDt0cmFuc2l0aW9uOm9wYWNpdHkgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSk7b3BhY2l0eTowfS5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjF9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAuY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTouNn0uY2RrLW92ZXJsYXktZGFyay1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4zMil9LmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MH0uY2RrLW92ZXJsYXktY29ubmVjdGVkLXBvc2l0aW9uLWJvdW5kaW5nLWJveFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bWluLXdpZHRoOjFweDttaW4taGVpZ2h0OjFweH0uY2RrLWdsb2JhbC1zY3JvbGxibG9ja1tfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7d2lkdGg6MTAwJTtvdmVyZmxvdy15OnNjcm9sbH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemVbX25nY29udGVudC0lQ09NUCVde3Jlc2l6ZTpub25lfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmdbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OmF1dG8gIWltcG9ydGFudDtvdmVyZmxvdzpoaWRkZW4gIWltcG9ydGFudH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nLWZpcmVmb3hbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OjAgIWltcG9ydGFudH1Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0e31Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZHt9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbHthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnQgMHMgMW1zfS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCg6LXdlYmtpdC1hdXRvZmlsbCl7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZCAwcyAxbXN9Lm1hdC1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtbWRjLWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9W19uZ2hvc3QtJUNPTVAlXXtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2JveC1zaXppbmc6Ym9yZGVyLWJveDtoZWlnaHQ6MTAwJTtvdmVyZmxvdzphdXRvO3BhZGRpbmc6MTZweDtwYWRkaW5nLXRvcDo0cHh9LmhlYWRpbmdbX25nY29udGVudC0lQ09NUCVde2FsaWduLWl0ZW1zOmNlbnRlcjtkaXNwbGF5OmdyaWQ7Z3JpZC10ZW1wbGF0ZS1hcmVhczoidGFnIGNvbnRyb2xzIiAicnVuIHNwaW5uZXIiO2dyaWQtdGVtcGxhdGUtY29sdW1uczoxZnIgYXV0bztmb250LXNpemU6MTRweDttYXJnaW4tYm90dG9tOjRweH0udGFnW19uZ2NvbnRlbnQtJUNPTVAlXXthbGlnbi1pdGVtczpjZW50ZXI7ZGlzcGxheTpmbGV4O2dhcDo1cHg7Z3JpZC1hcmVhOnRhZztvdmVyZmxvdzpoaWRkZW59LnRhZ1tfbmdjb250ZW50LSVDT01QJV0gICB2aXMtc2VsZWN0ZWQtdGltZS1jbGlwcGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDowfS5waW4tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIG1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MThweH0ucnVuW19uZ2NvbnRlbnQtJUNPTVAlXXtncmlkLWFyZWE6cnVuO2Rpc3BsYXk6ZmxleDt3aGl0ZS1zcGFjZTpub3dyYXA7Zm9udC1zaXplOjEzcHh9LnJ1bltfbmdjb250ZW50LSVDT01QJV0gICAuZG90W19uZ2NvbnRlbnQtJUNPTVAlXXtmbGV4Om5vbmU7ZGlzcGxheTppbmxpbmUtYmxvY2s7d2lkdGg6MTNweDtoZWlnaHQ6MTNweDtib3JkZXItcmFkaXVzOjUwJTttYXJnaW4tcmlnaHQ6NHB4fS5ydW5bX25nY29udGVudC0lQ09NUCVdICAgLnJ1bi10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpczttYXgtd2lkdGg6MTIwcHh9LmNvbnRyb2xzW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxO3doaXRlLXNwYWNlOm5vd3JhcDtncmlkLWFyZWE6Y29udHJvbHM7anVzdGlmeS1zZWxmOmZsZXgtZW5kO2ZsZXgtc2hyaW5rOjA7bWFyZ2luLXJpZ2h0Oi0xMnB4fWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC5jb250cm9sc1tfbmdjb250ZW50LSVDT01QJV0sIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5jb250cm9sc1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNyl9LnNwaW5uZXJbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtncmlkLWFyZWE6c3Bpbm5lcjtoZWlnaHQ6MTAwJTtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO3Bvc2l0aW9uOnJlbGF0aXZlfW1hdC1zcGlubmVyW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MDtyaWdodDowO3Bvc2l0aW9uOmFic29sdXRlfXRiLWhpc3RvZ3JhbVtfbmdjb250ZW50LSVDT01QJV17ZmxleC1ncm93OjE7b3ZlcmZsb3c6aGlkZGVufS5lbXB0eS1tZXNzYWdlW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOjFlbTtmb250LXNpemU6MTNweH0nXSxjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoRmJ0LFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6Imhpc3RvZ3JhbS1jYXJkLWNvbXBvbmVudCIsdGVtcGxhdGVVcmw6Imhpc3RvZ3JhbV9jYXJkX2NvbXBvbmVudC5uZy5odG1sIixzdHlsZVVybHM6WyJoaXN0b2dyYW1fY2FyZF9jb21wb25lbnQuY3NzIl0sY2hhbmdlRGV0ZWN0aW9uOmpuLk9uUHVzaH1dfV0sbnVsbCx7bG9hZFN0YXRlOlt7dHlwZTpSX31dLHRpdGxlOlt7dHlwZTpSX31dLHRhZzpbe3R5cGU6Ul99XSxydW5JZDpbe3R5cGU6Ul99XSxkYXRhOlt7dHlwZTpSX31dLG1vZGU6W3t0eXBlOlJffV0seEF4aXNUeXBlOlt7dHlwZTpSX31dLHJ1bkNvbG9yU2NhbGU6W3t0eXBlOlJffV0sc2hvd0Z1bGxTaXplOlt7dHlwZTpSX31dLGlzUGlubmVkOlt7dHlwZTpSX31dLHNlbGVjdGVkVGltZTpbe3R5cGU6Ul99XSxvbkZ1bGxTaXplVG9nZ2xlOlt7dHlwZTpFX31dLG9uUGluQ2xpY2tlZDpbe3R5cGU6RV99XX0pO2NsYXNzIExidHtjb25zdHJ1Y3Rvcih0KXt0aGlzLnN0b3JlPXQsdGhpcy5mdWxsV2lkdGhDaGFuZ2VkPW5ldyBTeSx0aGlzLmZ1bGxIZWlnaHRDaGFuZ2VkPW5ldyBTeSx0aGlzLnBpblN0YXRlQ2hhbmdlZD1uZXcgU3ksdGhpcy5tb2RlJD10aGlzLnN0b3JlLnNlbGVjdChfeiksdGhpcy54QXhpc1R5cGUkPXRoaXMuc3RvcmUuc2VsZWN0KHl6KSx0aGlzLnNob3dGdWxsU2l6ZT0hMX1pc0hpc3RvZ3JhbUNhcmRNZXRhZGF0YSh0KXtjb25zdHtwbHVnaW46ZX09dDtyZXR1cm4gZT09PUtULkhJU1RPR1JBTVN9b25GdWxsU2l6ZVRvZ2dsZSgpe3RoaXMuc2hvd0Z1bGxTaXplPSF0aGlzLnNob3dGdWxsU2l6ZSx0aGlzLmZ1bGxXaWR0aENoYW5nZWQuZW1pdCh0aGlzLnNob3dGdWxsU2l6ZSksdGhpcy5mdWxsSGVpZ2h0Q2hhbmdlZC5lbWl0KHRoaXMuc2hvd0Z1bGxTaXplKX1uZ09uSW5pdCgpe2NvbnN0IHQ9dGhpcy5zdG9yZS5zZWxlY3QobnosdGhpcy5jYXJkSWQpLnBpcGUodWUoKHQ9PiEhdCYmdGhpcy5pc0hpc3RvZ3JhbUNhcmRNZXRhZGF0YSh0KSkpLFZ0KCh0PT50KSkpLGU9S3QoW3QsdGhpcy5zdG9yZS5zZWxlY3QodHosdGhpcy5jYXJkSWQpXSk7dGhpcy5kYXRhJD1lLnBpcGUoVnQoKChbdCxlXSk9Pntjb25zdCBuPXQucnVuSWQ7aWYoIWV8fCFlLmhhc093blByb3BlcnR5KG4pKXJldHVybltdO3JldHVybihmdW5jdGlvbiBvKHQsZT0zMCl7aWYoIXQubGVuZ3RofHxlPDEpcmV0dXJuW107Y29uc3Qgbj0oZnVuY3Rpb24gbyh0KXtsZXQgZT1udWxsLG49bnVsbDtmb3IoY29uc3R7YmluczpvfW9mIHQpe2lmKCFvLmxlbmd0aCljb250aW51ZTtjb25zdCB0PW9bby5sZW5ndGgtMV0saT1vWzBdLngsYT10LngrdC5keDsobnVsbD09PWV8fGk8ZSkmJihlPWkpLChudWxsPT09bnx8YT5uKSYmKG49YSl9cmV0dXJuIG51bGw9PT1lfHxudWxsPT09bj9udWxsOntsZWZ0OmUscmlnaHQ6bn19KSh0KTtyZXR1cm4gbiYmbi5sZWZ0PT09bi5yaWdodCYmKG4ucmlnaHQ9MS4xKm4ucmlnaHQrMSxuLmxlZnQ9bi5sZWZ0LzEuMS0xKSx0Lm1hcCgodD0+KHtzdGVwOnQuc3RlcCx3YWxsVGltZTp0LndhbGxUaW1lLGJpbnM6bj9kYnQodC5iaW5zLG4sZSk6W119KSkpfSkoZVtuXS5tYXAoKHQ9Pntjb25zdHt3YWxsVGltZTplLHN0ZXA6bn09dDtyZXR1cm57d2FsbFRpbWU6ZSxzdGVwOm4sYmluczp0LmJpbnMubWFwKCh0PT4oe3g6dC5taW4sZHg6dC5tYXgtdC5taW4seTp0LmNvdW50fSkpKX19KSkpfSkpKSx0aGlzLnNlbGVjdGVkVGltZSQ9dGhpcy5zdG9yZS5zZWxlY3QoRXopLnBpcGUoX2UodGhpcy5kYXRhJCksVnQoKChbdCxlXSk9PntpZighdClyZXR1cm4gbnVsbDtsZXQgbj0xLzAsbz0tMS8wO2Zvcihjb25zdCB0IG9mIGUpbj1NYXRoLm1pbih0LnN0ZXAsbiksbz1NYXRoLm1heCh0LnN0ZXAsbyk7cmV0dXJuIEI0KHQsbixvKX0pKSksdGhpcy5sb2FkU3RhdGUkPXRoaXMuc3RvcmUuc2VsZWN0KCROLHRoaXMuY2FyZElkKSx0aGlzLnRhZyQ9dC5waXBlKFZ0KCh0PT50LnRhZykpKSx0aGlzLnRpdGxlJD10aGlzLnRhZyQucGlwZShWdCgodD0+SDQodCx0aGlzLmdyb3VwTmFtZSkpKSksdGhpcy5ydW5JZCQ9dC5waXBlKFZ0KCh0PT50LnJ1bklkKSkpLHRoaXMuaXNQaW5uZWQkPXRoaXMuc3RvcmUuc2VsZWN0KGR6LHRoaXMuY2FyZElkKX19ZnVuY3Rpb24gQmJ0KHQsZSl7aWYoMSZ0KXtjb25zdCB0PXdmKCk7Q2YoMCwiaW1hZ2UtY2FyZCIsNiksUmYoImZ1bGxXaWR0aENoYW5nZWQiLChmdW5jdGlvbiBlKG4pe1BpKHQpO3JldHVybiB6ZigyKS5vbkZ1bGxXaWR0aENoYW5nZWQobil9KSkoInBpblN0YXRlQ2hhbmdlZCIsKGZ1bmN0aW9uIGUoKXtQaSh0KTtyZXR1cm4gemYoMikub25QaW5TdGF0ZUNoYW5nZWQoKX0pKSxNZigpfWlmKDImdCl7Y29uc3QgdD16ZigyKTtiZigiY2FyZElkIix0LmNhcmRJZCkoImdyb3VwTmFtZSIsdC5ncm91cE5hbWUpKCJydW5Db2xvclNjYWxlIix0LnJ1bkNvbG9yU2NhbGUpfX1mdW5jdGlvbiBWYnQodCxlKXtpZigxJnQpe2NvbnN0IHQ9d2YoKTtDZigwLCJzY2FsYXItY2FyZCIsNyksUmYoImZ1bGxXaWR0aENoYW5nZWQiLChmdW5jdGlvbiBlKG4pe1BpKHQpO3JldHVybiB6ZigyKS5vbkZ1bGxXaWR0aENoYW5nZWQobil9KSkoImZ1bGxIZWlnaHRDaGFuZ2VkIiwoZnVuY3Rpb24gZShuKXtQaSh0KTtyZXR1cm4gemYoMikub25GdWxsSGVpZ2h0Q2hhbmdlZChuKX0pKSgicGluU3RhdGVDaGFuZ2VkIiwoZnVuY3Rpb24gZSgpe1BpKHQpO3JldHVybiB6ZigyKS5vblBpblN0YXRlQ2hhbmdlZCgpfSkpLE1mKCl9aWYoMiZ0KXtjb25zdCB0PXpmKDIpO2JmKCJjYXJkSWQiLHQuY2FyZElkKSgiZ3JvdXBOYW1lIix0Lmdyb3VwTmFtZSl9fWZ1bmN0aW9uIGpidCh0LGUpe2lmKDEmdCl7Y29uc3QgdD13ZigpO0NmKDAsImhpc3RvZ3JhbS1jYXJkIiw4KSxSZigiZnVsbFdpZHRoQ2hhbmdlZCIsKGZ1bmN0aW9uIGUobil7UGkodCk7cmV0dXJuIHpmKDIpLm9uRnVsbFdpZHRoQ2hhbmdlZChuKX0pKSgiZnVsbEhlaWdodENoYW5nZWQiLChmdW5jdGlvbiBlKG4pe1BpKHQpO3JldHVybiB6ZigyKS5vbkZ1bGxIZWlnaHRDaGFuZ2VkKG4pfSkpKCJwaW5TdGF0ZUNoYW5nZWQiLChmdW5jdGlvbiBlKCl7UGkodCk7cmV0dXJuIHpmKDIpLm9uUGluU3RhdGVDaGFuZ2VkKCl9KSksTWYoKX1pZigyJnQpe2NvbnN0IHQ9emYoMik7YmYoImNhcmRJZCIsdC5jYXJkSWQpKCJncm91cE5hbWUiLHQuZ3JvdXBOYW1lKSgicnVuQ29sb3JTY2FsZSIsdC5ydW5Db2xvclNjYWxlKX19ZnVuY3Rpb24gVWJ0KHQsZSl7aWYoMSZ0JiYoQ2YoMCwiZGl2IiksUHUoMSksTWYoKSksMiZ0KXtjb25zdCB0PXpmKDIpO0RjKDEpLGt1KCJQbGFjZWhvbGRlciBlcnJvciBmb3I6ICIsdC5jYXJkSWQsIiIpfX1mdW5jdGlvbiBXYnQodCxlKXtpZigxJnQmJih4ZigwLDEpLEhtKDEsQmJ0LDEsMywiaW1hZ2UtY2FyZCIsMiksSG0oMixWYnQsMSwyLCJzY2FsYXItY2FyZCIsMyksSG0oMyxqYnQsMSwzLCJoaXN0b2dyYW0tY2FyZCIsNCksSG0oNCxVYnQsMiwxLCJkaXYiLDUpLE9mKCkpLDImdCl7Y29uc3QgdD16ZigpO2JmKCJuZ1N3aXRjaCIsdC5wbHVnaW5UeXBlKSxEYygxKSxiZigibmdTd2l0Y2hDYXNlIix0LlBsdWdpblR5cGUuSU1BR0VTKSxEYygxKSxiZigibmdTd2l0Y2hDYXNlIix0LlBsdWdpblR5cGUuU0NBTEFSUyksRGMoMSksYmYoIm5nU3dpdGNoQ2FzZSIsdC5QbHVnaW5UeXBlLkhJU1RPR1JBTVMpfX1MYnQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fExidCkoZ2YoaVMpKX0sTGJ0Lsm1Y21wPXNvKHt0eXBlOkxidCxzZWxlY3RvcnM6W1siaGlzdG9ncmFtLWNhcmQiXV0saW5wdXRzOntjYXJkSWQ6ImNhcmRJZCIsZ3JvdXBOYW1lOiJncm91cE5hbWUiLHJ1bkNvbG9yU2NhbGU6InJ1bkNvbG9yU2NhbGUifSxvdXRwdXRzOntmdWxsV2lkdGhDaGFuZ2VkOiJmdWxsV2lkdGhDaGFuZ2VkIixmdWxsSGVpZ2h0Q2hhbmdlZDoiZnVsbEhlaWdodENoYW5nZWQiLHBpblN0YXRlQ2hhbmdlZDoicGluU3RhdGVDaGFuZ2VkIn0sZGVjbHM6MTAsdmFyczoyOSxjb25zdHM6W1szLCJsb2FkU3RhdGUiLCJ0aXRsZSIsInRhZyIsInJ1bklkIiwiZGF0YSIsIm1vZGUiLCJ4QXhpc1R5cGUiLCJydW5Db2xvclNjYWxlIiwic2hvd0Z1bGxTaXplIiwiaXNQaW5uZWQiLCJzZWxlY3RlZFRpbWUiLCJvbkZ1bGxTaXplVG9nZ2xlIiwib25QaW5DbGlja2VkIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihDZigwLCJoaXN0b2dyYW0tY2FyZC1jb21wb25lbnQiLDApLFJmKCJvbkZ1bGxTaXplVG9nZ2xlIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLm9uRnVsbFNpemVUb2dnbGUoKX0pKSgib25QaW5DbGlja2VkIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5waW5TdGF0ZUNoYW5nZWQuZW1pdChlKX0pKSxfeSgxLCJhc3luYyIpLF95KDIsImFzeW5jIiksX3koMywiYXN5bmMiKSxfeSg0LCJhc3luYyIpLF95KDUsImFzeW5jIiksX3koNiwiYXN5bmMiKSxfeSg3LCJhc3luYyIpLF95KDgsImFzeW5jIiksX3koOSwiYXN5bmMiKSxNZigpKSwyJmUmJmJmKCJsb2FkU3RhdGUiLEN5KDEsMTEsbi5sb2FkU3RhdGUkKSkoInRpdGxlIixDeSgyLDEzLG4udGl0bGUkKSkoInRhZyIsQ3koMywxNSxuLnRhZyQpKSgicnVuSWQiLEN5KDQsMTcsbi5ydW5JZCQpKSgiZGF0YSIsQ3koNSwxOSxuLmRhdGEkKSkoIm1vZGUiLEN5KDYsMjEsbi5tb2RlJCkpKCJ4QXhpc1R5cGUiLEN5KDcsMjMsbi54QXhpc1R5cGUkKSkoInJ1bkNvbG9yU2NhbGUiLG4ucnVuQ29sb3JTY2FsZSkoInNob3dGdWxsU2l6ZSIsbi5zaG93RnVsbFNpemUpKCJpc1Bpbm5lZCIsQ3koOCwyNSxuLmlzUGlubmVkJCkpKCJzZWxlY3RlZFRpbWUiLEN5KDksMjcsbi5zZWxlY3RlZFRpbWUkKSl9LGRpcmVjdGl2ZXM6W0ZidF0scGlwZXM6W1Z2XSxzdHlsZXM6WyJbX25naG9zdC0lQ09NUCVdIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgIH0iXSxjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoTGJ0LFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6Imhpc3RvZ3JhbS1jYXJkIix0ZW1wbGF0ZTonXG4gICAgPGhpc3RvZ3JhbS1jYXJkLWNvbXBvbmVudFxuICAgICAgW2xvYWRTdGF0ZV09ImxvYWRTdGF0ZSQgfCBhc3luYyJcbiAgICAgIFt0aXRsZV09InRpdGxlJCB8IGFzeW5jIlxuICAgICAgW3RhZ109InRhZyQgfCBhc3luYyJcbiAgICAgIFtydW5JZF09InJ1bklkJCB8IGFzeW5jIlxuICAgICAgW2RhdGFdPSJkYXRhJCB8IGFzeW5jIlxuICAgICAgW21vZGVdPSJtb2RlJCB8IGFzeW5jIlxuICAgICAgW3hBeGlzVHlwZV09InhBeGlzVHlwZSQgfCBhc3luYyJcbiAgICAgIFtydW5Db2xvclNjYWxlXT0icnVuQ29sb3JTY2FsZSJcbiAgICAgIFtzaG93RnVsbFNpemVdPSJzaG93RnVsbFNpemUiXG4gICAgICBbaXNQaW5uZWRdPSJpc1Bpbm5lZCQgfCBhc3luYyJcbiAgICAgIFtzZWxlY3RlZFRpbWVdPSJzZWxlY3RlZFRpbWUkIHwgYXN5bmMiXG4gICAgICAob25GdWxsU2l6ZVRvZ2dsZSk9Im9uRnVsbFNpemVUb2dnbGUoKSJcbiAgICAgIChvblBpbkNsaWNrZWQpPSJwaW5TdGF0ZUNoYW5nZWQuZW1pdCgkZXZlbnQpIlxuICAgID48L2hpc3RvZ3JhbS1jYXJkLWNvbXBvbmVudD5cbiAgJyxzdHlsZXM6WyJcbiAgICAgIDpob3N0IHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgIH1cbiAgICAiXSxjaGFuZ2VEZXRlY3Rpb246am4uT25QdXNofV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6aVN9XX0pLHtjYXJkSWQ6W3t0eXBlOlJffV0sZ3JvdXBOYW1lOlt7dHlwZTpSX31dLHJ1bkNvbG9yU2NhbGU6W3t0eXBlOlJffV0sZnVsbFdpZHRoQ2hhbmdlZDpbe3R5cGU6RV99XSxmdWxsSGVpZ2h0Q2hhbmdlZDpbe3R5cGU6RV99XSxwaW5TdGF0ZUNoYW5nZWQ6W3t0eXBlOkVffV19KTtjbGFzcyBHYnR7Y29uc3RydWN0b3IoKXt0aGlzLlBsdWdpblR5cGU9S1QsdGhpcy5mdWxsV2lkdGhDaGFuZ2VkPW5ldyBTeSx0aGlzLmZ1bGxIZWlnaHRDaGFuZ2VkPW5ldyBTeSx0aGlzLnBpblN0YXRlQ2hhbmdlZD1uZXcgU3l9b25GdWxsV2lkdGhDaGFuZ2VkKHQpe3RoaXMuZnVsbFdpZHRoQ2hhbmdlZC5lbWl0KHQpfW9uRnVsbEhlaWdodENoYW5nZWQodCl7dGhpcy5mdWxsSGVpZ2h0Q2hhbmdlZC5lbWl0KHQpfW9uUGluU3RhdGVDaGFuZ2VkKCl7dGhpcy5waW5TdGF0ZUNoYW5nZWQuZW1pdCgpfX1HYnQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEdidCl9LEdidC7JtWNtcD1zbyh7dHlwZTpHYnQsc2VsZWN0b3JzOltbImNhcmQtdmlldy1jb21wb25lbnQiXV0saW5wdXRzOntpc0V2ZXJWaXNpYmxlOiJpc0V2ZXJWaXNpYmxlIixjYXJkSWQ6ImNhcmRJZCIsZ3JvdXBOYW1lOiJncm91cE5hbWUiLHBsdWdpblR5cGU6InBsdWdpblR5cGUiLHJ1bkNvbG9yU2NhbGU6InJ1bkNvbG9yU2NhbGUifSxvdXRwdXRzOntmdWxsV2lkdGhDaGFuZ2VkOiJmdWxsV2lkdGhDaGFuZ2VkIixmdWxsSGVpZ2h0Q2hhbmdlZDoiZnVsbEhlaWdodENoYW5nZWQiLHBpblN0YXRlQ2hhbmdlZDoicGluU3RhdGVDaGFuZ2VkIn0sZGVjbHM6MSx2YXJzOjEsY29uc3RzOltbMywibmdTd2l0Y2giLDQsIm5nSWYiXSxbMywibmdTd2l0Y2giXSxbMywiY2FyZElkIiwiZ3JvdXBOYW1lIiwicnVuQ29sb3JTY2FsZSIsImZ1bGxXaWR0aENoYW5nZWQiLCJwaW5TdGF0ZUNoYW5nZWQiLDQsIm5nU3dpdGNoQ2FzZSJdLFszLCJjYXJkSWQiLCJncm91cE5hbWUiLCJmdWxsV2lkdGhDaGFuZ2VkIiwiZnVsbEhlaWdodENoYW5nZWQiLCJwaW5TdGF0ZUNoYW5nZWQiLDQsIm5nU3dpdGNoQ2FzZSJdLFszLCJjYXJkSWQiLCJncm91cE5hbWUiLCJydW5Db2xvclNjYWxlIiwiZnVsbFdpZHRoQ2hhbmdlZCIsImZ1bGxIZWlnaHRDaGFuZ2VkIiwicGluU3RhdGVDaGFuZ2VkIiw0LCJuZ1N3aXRjaENhc2UiXSxbNCwibmdTd2l0Y2hEZWZhdWx0Il0sWzMsImNhcmRJZCIsImdyb3VwTmFtZSIsInJ1bkNvbG9yU2NhbGUiLCJmdWxsV2lkdGhDaGFuZ2VkIiwicGluU3RhdGVDaGFuZ2VkIl0sWzMsImNhcmRJZCIsImdyb3VwTmFtZSIsImZ1bGxXaWR0aENoYW5nZWQiLCJmdWxsSGVpZ2h0Q2hhbmdlZCIsInBpblN0YXRlQ2hhbmdlZCJdLFszLCJjYXJkSWQiLCJncm91cE5hbWUiLCJydW5Db2xvclNjYWxlIiwiZnVsbFdpZHRoQ2hhbmdlZCIsImZ1bGxIZWlnaHRDaGFuZ2VkIiwicGluU3RhdGVDaGFuZ2VkIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJkhtKDAsV2J0LDUsNCwibmctY29udGFpbmVyIiwwKSwyJmUmJmJmKCJuZ0lmIixuLmlzRXZlclZpc2libGUpfSxkaXJlY3RpdmVzOltQdixEdixSdixFdix0NixjYnQsTGJ0XSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKEdidCxbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJjYXJkLXZpZXctY29tcG9uZW50Iix0ZW1wbGF0ZVVybDoiY2FyZF92aWV3X2NvbXBvbmVudC5uZy5odG1sIixjaGFuZ2VEZXRlY3Rpb246am4uT25QdXNofV19XSxudWxsLHtpc0V2ZXJWaXNpYmxlOlt7dHlwZTpSX31dLGNhcmRJZDpbe3R5cGU6Ul99XSxncm91cE5hbWU6W3t0eXBlOlJffV0scGx1Z2luVHlwZTpbe3R5cGU6Ul99XSxydW5Db2xvclNjYWxlOlt7dHlwZTpSX31dLGZ1bGxXaWR0aENoYW5nZWQ6W3t0eXBlOkVffV0sZnVsbEhlaWdodENoYW5nZWQ6W3t0eXBlOkVffV0scGluU3RhdGVDaGFuZ2VkOlt7dHlwZTpFX31dfSk7Y2xhc3MgWWJ0e2NvbnN0cnVjdG9yKHQpe3RoaXMuc3RvcmU9dCx0aGlzLmlzRXZlclZpc2libGU9ITEsdGhpcy5zaG93RnVsbFdpZHRoPSExLHRoaXMuc2hvd0Z1bGxIZWlnaHQ9ITEsdGhpcy5ydW5Db2xvclNjYWxlJD10aGlzLnN0b3JlLnNlbGVjdChDSSkucGlwZShZZSgzNTAsdm9pZCAwLHtsZWFkaW5nOiEwLHRyYWlsaW5nOiEwfSksVnQoKHQ9PmU9PnQuaGFzT3duUHJvcGVydHkoZSk/dFtlXToiI2ZmZiIpKSl9b25WaXNpYmlsaXR5Q2hhbmdlKHt2aXNpYmxlOnR9KXt0aGlzLmlzRXZlclZpc2libGU9dGhpcy5pc0V2ZXJWaXNpYmxlfHx0fW9uRnVsbFdpZHRoQ2hhbmdlZCh0KXt0aGlzLnNob3dGdWxsV2lkdGg9dH1vbkZ1bGxIZWlnaHRDaGFuZ2VkKHQpe3RoaXMuc2hvd0Z1bGxIZWlnaHQ9dH1vblBpblN0YXRlQ2hhbmdlZCgpe3RoaXMuc3RvcmUuc2VsZWN0KGR6LHRoaXMuY2FyZElkKS5waXBlKHZlKDEpLHFlKHRoaXMuc3RvcmUuc2VsZWN0KG16KSkpLnN1YnNjcmliZSgoKFt0LGVdKT0+e3RoaXMuc3RvcmUuZGlzcGF0Y2goekEoe2NhcmRJZDp0aGlzLmNhcmRJZCxjYW5DcmVhdGVOZXdQaW5zOmUsd2FzUGlubmVkOnR9KSl9KSl9fWZ1bmN0aW9uIHFidCh0LGUpezEmdCYmUGYoMCl9ZnVuY3Rpb24gWmJ0KHQsZSl7aWYoMSZ0JiZ2ZigwLCJjYXJkLXZpZXciLDUpLDImdCl7Y29uc3QgdD1lLiRpbXBsaWNpdCxuPXpmKDIpO2JmKCJjYXJkSWQiLHQuY2FyZElkKSgiZ3JvdXBOYW1lIixuLmdyb3VwTmFtZSkoInBsdWdpblR5cGUiLHQucGx1Z2luKSgiY2FyZE9ic2VydmVyIixuLmNhcmRPYnNlcnZlcikoImNhcmRMYXp5TG9hZGVyIix0LmNhcmRJZCl9fWZ1bmN0aW9uIFhidCh0LGUpezEmdCYmUGYoMCl9WWJ0Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxZYnQpKGdmKGlTKSl9LFlidC7JtWNtcD1zbyh7dHlwZTpZYnQsc2VsZWN0b3JzOltbImNhcmQtdmlldyJdXSxob3N0VmFyczo0LGhvc3RCaW5kaW5nczpmdW5jdGlvbiB0KGUsbil7MiZlJiZjdSgiZnVsbC13aWR0aCIsbi5zaG93RnVsbFdpZHRoKSgiZnVsbC1oZWlnaHQiLG4uc2hvd0Z1bGxIZWlnaHQpfSxpbnB1dHM6e2NhcmRJZDoiY2FyZElkIixncm91cE5hbWU6Imdyb3VwTmFtZSIscGx1Z2luVHlwZToicGx1Z2luVHlwZSJ9LGRlY2xzOjIsdmFyczo3LGNvbnN0czpbWyJvYnNlcnZlSW50ZXJzZWN0aW9uIiwiIiwiaW50ZXJzZWN0aW9uT2JzZXJ2ZXJNYXJnaW4iLCIyMDBweCAyMDBweCAyMDBweCAyMDBweCIsMywiaXNFdmVyVmlzaWJsZSIsImNhcmRJZCIsImdyb3VwTmFtZSIsInBsdWdpblR5cGUiLCJydW5Db2xvclNjYWxlIiwiZnVsbFdpZHRoQ2hhbmdlZCIsImZ1bGxIZWlnaHRDaGFuZ2VkIiwicGluU3RhdGVDaGFuZ2VkIiwib25WaXNpYmlsaXR5Q2hhbmdlIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihDZigwLCJjYXJkLXZpZXctY29tcG9uZW50IiwwKSxSZigiZnVsbFdpZHRoQ2hhbmdlZCIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4ub25GdWxsV2lkdGhDaGFuZ2VkKGUpfSkpKCJmdWxsSGVpZ2h0Q2hhbmdlZCIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4ub25GdWxsSGVpZ2h0Q2hhbmdlZChlKX0pKSgicGluU3RhdGVDaGFuZ2VkIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLm9uUGluU3RhdGVDaGFuZ2VkKCl9KSkoIm9uVmlzaWJpbGl0eUNoYW5nZSIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4ub25WaXNpYmlsaXR5Q2hhbmdlKGUpfSkpLF95KDEsImFzeW5jIiksTWYoKSksMiZlJiZiZigiaXNFdmVyVmlzaWJsZSIsbi5pc0V2ZXJWaXNpYmxlKSgiY2FyZElkIixuLmNhcmRJZCkoImdyb3VwTmFtZSIsbi5ncm91cE5hbWUpKCJwbHVnaW5UeXBlIixuLnBsdWdpblR5cGUpKCJydW5Db2xvclNjYWxlIixDeSgxLDUsbi5ydW5Db2xvclNjYWxlJCkpfSxkaXJlY3RpdmVzOltHYnQsc2J0XSxwaXBlczpbVnZdLHN0eWxlczpbJy5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjlweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHh9Lm1hdC1oMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaGVhZGxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDI0cHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTVweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWg2W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1ib2R5LXN0cm9uZ1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYXJkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FyZC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MjRweH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNhbGVuZGFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZGlhbG9nLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVlbSAwO2JvcmRlci10b3A6Ljg0Mzc1ZW0gc29saWQgdHJhbnNwYXJlbnR9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17dG9wOi0wLjg0Mzc1ZW07cGFkZGluZy10b3A6Ljg0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6NzUlO21hcmdpbi10b3A6LjY2NjY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS43OTE2NjY2NjY3ZW0pfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjQzNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDJweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIzZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4yODEyNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LjU0MTY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS42NjY2NjY2NjY3ZW0pfUBtZWRpYSBwcmludHsubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjJlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjFlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyZW0pIHNjYWxlKDAuNzUpfX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouMjVlbSAwIC43NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjA5Mzc1ZW07bWFyZ2luLXRvcDotMC41ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoxZW0gMCAxZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuODQzNzVlbTttYXJnaW4tdG9wOi0wLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMiksIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fWlucHV0Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi0wLjA2MjVlbX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHh9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtfS5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1zdGVwLXN1Yi1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6bm9ybWFsfS5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1zdGVwLWxhYmVsLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10YWItZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MH0ubWF0LXRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTBweDtwYWRkaW5nLXRvcDo2cHg7cGFkZGluZy1ib3R0b206NnB4fS5tYXQtdG9vbHRpcC1oYW5kc2V0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4fS5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtc2ltcGxlLXNuYWNrYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHh9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoxO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjE0cHh9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV06bm90KDplbXB0eSl7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9Lm1hdC1yaXBwbGUubWF0LXJpcHBsZS11bmJvdW5kZWRbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OnZpc2libGV9Lm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJhZGl1czo1MCU7cG9pbnRlci1ldmVudHM6bm9uZTt0cmFuc2l0aW9uOm9wYWNpdHksdHJhbnNmb3JtIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTt0cmFuc2Zvcm06c2NhbGUoMCl9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9LmNkay12aXN1YWxseS1oaWRkZW5bX25nY29udGVudC0lQ09NUCVde2JvcmRlcjowO2NsaXA6cmVjdCgwIDAgMCAwKTtoZWlnaHQ6MXB4O21hcmdpbjotMXB4O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4O3doaXRlLXNwYWNlOm5vd3JhcDtvdXRsaW5lOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0sIC5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cG9pbnRlci1ldmVudHM6bm9uZTt0b3A6MDtsZWZ0OjA7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV06ZW1wdHl7ZGlzcGxheTpub25lfS5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktcGFuZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6YXV0bztib3gtc2l6aW5nOmJvcmRlci1ib3g7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDttYXgtd2lkdGg6MTAwJTttYXgtaGVpZ2h0OjEwMCV9LmNkay1vdmVybGF5LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDt6LWluZGV4OjEwMDA7cG9pbnRlci1ldmVudHM6YXV0bzstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnQ7dHJhbnNpdGlvbjpvcGFjaXR5IDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpO29wYWNpdHk6MH0uY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eToxfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6LjZ9LmNkay1vdmVybGF5LWRhcmstYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMzIpfS5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV0sIC5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWNvbm5lY3RlZC1wb3NpdGlvbi1ib3VuZGluZy1ib3hbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO21pbi13aWR0aDoxcHg7bWluLWhlaWdodDoxcHh9LmNkay1nbG9iYWwtc2Nyb2xsYmxvY2tbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3dpZHRoOjEwMCU7b3ZlcmZsb3cteTpzY3JvbGx9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplW19uZ2NvbnRlbnQtJUNPTVAlXXtyZXNpemU6bm9uZX10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDphdXRvICFpbXBvcnRhbnQ7b3ZlcmZsb3c6aGlkZGVuICFpbXBvcnRhbnR9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZy1maXJlZm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDowICFpbXBvcnRhbnR9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydHt9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmR7fS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGx7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0IDBzIDFtc30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOi13ZWJraXQtYXV0b2ZpbGwpe2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmQgMHMgMW1zfS5tYXQtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LW1kYy1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfVtfbmdob3N0LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmZmfWJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiMzMDMwMzB9J10sY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKFlidCxbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJjYXJkLXZpZXciLHRlbXBsYXRlOidcbiAgICA8Y2FyZC12aWV3LWNvbXBvbmVudFxuICAgICAgW2lzRXZlclZpc2libGVdPSJpc0V2ZXJWaXNpYmxlIlxuICAgICAgW2NhcmRJZF09ImNhcmRJZCJcbiAgICAgIFtncm91cE5hbWVdPSJncm91cE5hbWUiXG4gICAgICBbcGx1Z2luVHlwZV09InBsdWdpblR5cGUiXG4gICAgICBbcnVuQ29sb3JTY2FsZV09InJ1bkNvbG9yU2NhbGUkIHwgYXN5bmMiXG4gICAgICAoZnVsbFdpZHRoQ2hhbmdlZCk9Im9uRnVsbFdpZHRoQ2hhbmdlZCgkZXZlbnQpIlxuICAgICAgKGZ1bGxIZWlnaHRDaGFuZ2VkKT0ib25GdWxsSGVpZ2h0Q2hhbmdlZCgkZXZlbnQpIlxuICAgICAgKHBpblN0YXRlQ2hhbmdlZCk9Im9uUGluU3RhdGVDaGFuZ2VkKCkiXG4gICAgICBvYnNlcnZlSW50ZXJzZWN0aW9uXG4gICAgICBpbnRlcnNlY3Rpb25PYnNlcnZlck1hcmdpbj0iMjAwcHggMjAwcHggMjAwcHggMjAwcHgiXG4gICAgICAob25WaXNpYmlsaXR5Q2hhbmdlKT0ib25WaXNpYmlsaXR5Q2hhbmdlKCRldmVudCkiXG4gICAgPlxuICAgIDwvY2FyZC12aWV3LWNvbXBvbmVudD5cbiAgJyxzdHlsZVVybHM6WyJjYXJkX3ZpZXdfY29udGFpbmVyLmNzcyJdLGNoYW5nZURldGVjdGlvbjpqbi5PblB1c2h9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTppU31dfSkse2NhcmRJZDpbe3R5cGU6Ul99XSxncm91cE5hbWU6W3t0eXBlOlJffV0scGx1Z2luVHlwZTpbe3R5cGU6Ul99XSxzaG93RnVsbFdpZHRoOlt7dHlwZTpBXyxhcmdzOlsiY2xhc3MuZnVsbC13aWR0aCJdfV0sc2hvd0Z1bGxIZWlnaHQ6W3t0eXBlOkFfLGFyZ3M6WyJjbGFzcy5mdWxsLWhlaWdodCJdfV19KTtjb25zdCBLYnQ9ZnVuY3Rpb24oKXtyZXR1cm57aXNCb3R0b21Db250cm9sOiExfX0sSmJ0PWZ1bmN0aW9uKCl7cmV0dXJue2lzQm90dG9tQ29udHJvbDohMH19O2Z1bmN0aW9uIFFidCh0LGUpe2lmKDEmdCYmKENmKDAsImRpdiIpLEhtKDEscWJ0LDEsMCwibmctY29udGFpbmVyIiwyKSxDZigyLCJkaXYiLDMpLEhtKDMsWmJ0LDEsNSwiY2FyZC12aWV3Iiw0KSxNZigpLEhtKDQsWGJ0LDEsMCwibmctY29udGFpbmVyIiwyKSxNZigpKSwyJnQpe2NvbnN0IHQ9emYoKSxlPUZtKDIpO0RjKDEpLGJmKCJuZ1RlbXBsYXRlT3V0bGV0IixlKSgibmdUZW1wbGF0ZU91dGxldENvbnRleHQiLG95KDgsS2J0KSksRGMoMSksbHUoImdyaWQtdGVtcGxhdGUtY29sdW1ucyIsdC5ncmlkVGVtcGxhdGVDb2x1bW4pLERjKDEpLGJmKCJuZ0Zvck9mIix0LmNhcmRJZHNXaXRoTWV0YWRhdGEpKCJuZ0ZvclRyYWNrQnkiLHQudHJhY2tCeUNhcmRzKSxEYygxKSxiZigibmdUZW1wbGF0ZU91dGxldCIsZSkoIm5nVGVtcGxhdGVPdXRsZXRDb250ZXh0IixveSg5LEpidCkpfX1mdW5jdGlvbiAkYnQodCxlKXtpZigxJnQpe2NvbnN0IHQ9d2YoKTtDZigwLCJidXR0b24iLDExKSxSZigiY2xpY2siLChmdW5jdGlvbiBlKG4pe1BpKHQpO2NvbnN0IG89emYoMyk7cmV0dXJuIG8uaGFuZGxlUGFnZUNoYW5nZShvLnBhZ2VJbmRleC0xLG4udGFyZ2V0KX0pKSxQdSgxLCIgUHJldmlvdXMgIiksTWYoKX1pZigyJnQpe2JmKCJkaXNhYmxlZCIsMD09PXpmKDMpLnBhZ2VJbmRleCl9fWZ1bmN0aW9uIHR5dCh0LGUpe2lmKDEmdCl7Y29uc3QgdD13ZigpO0NmKDAsInNwYW4iLDE0KSxDZigxLCJpbnB1dCIsMTUpLFJmKCJpbnB1dCIsKGZ1bmN0aW9uIGUobil7UGkodCk7cmV0dXJuIHpmKDQpLm9uUGFnaW5hdGlvbklucHV0Q2hhbmdlKG4pfSkpKCJjaGFuZ2UiLChmdW5jdGlvbiBlKG4pe1BpKHQpO3JldHVybiB6Zig0KS5vblBhZ2luYXRpb25JbnB1dENoYW5nZShuKX0pKSxNZigpLFB1KDIpLE1mKCl9aWYoMiZ0KXtjb25zdCB0PXpmKDQpO0RjKDEpLGJmKCJ2YWx1ZSIsdC5wYWdlSW5kZXgrMSkoIm1heCIsdC5udW1QYWdlcyksRGMoMSksa3UoIiBvZiAiLHQubnVtUGFnZXMsIiIpfX1mdW5jdGlvbiBleXQodCxlKXtpZigxJnQpe2NvbnN0IHQ9d2YoKTtDZigwLCJzcGFuIiksSG0oMSx0eXQsMywzLCJzcGFuIiwxMiksQ2YoMiwiYnV0dG9uIiwxMyksUmYoImNsaWNrIiwoZnVuY3Rpb24gZShuKXtQaSh0KTtjb25zdCBvPXpmKDMpO3JldHVybiBvLmhhbmRsZVBhZ2VDaGFuZ2Uoby5wYWdlSW5kZXgrMSxuLnRhcmdldCl9KSksUHUoMywiIE5leHQgIiksTWYoKSxNZigpfWlmKDImdCl7Y29uc3QgdD16ZigyKS5pc0JvdHRvbUNvbnRyb2wsZT16ZigpO0RjKDEpLGJmKCJuZ0lmIixlLnNob3dQYWdpbmF0aW9uSW5wdXQodCkpLERjKDEpLGJmKCJkaXNhYmxlZCIsZS5wYWdlSW5kZXgrMT49ZS5udW1QYWdlcyl9fWZ1bmN0aW9uIG55dCh0LGUpe2lmKDEmdCYmKENmKDAsImRpdiIsNyksQ2YoMSwic3BhbiIsOCksSG0oMiwkYnQsMiwxLCJidXR0b24iLDkpLE1mKCksQ2YoMywic3BhbiIsMTApLEhtKDQsZXl0LDQsMiwic3BhbiIsMCksTWYoKSxNZigpKSwyJnQpe2NvbnN0IHQ9emYoMik7RGMoMiksYmYoIm5nSWYiLHQuc2hvd1BhZ2luYXRpb25Db250cm9scyksRGMoMiksYmYoIm5nSWYiLHQuc2hvd1BhZ2luYXRpb25Db250cm9scyl9fWZ1bmN0aW9uIG95dCh0LGUpe2lmKDEmdCYmSG0oMCxueXQsNSwyLCJkaXYiLDYpLDImdCl7YmYoIm5nSWYiLHpmKCkuc2hvd1BhZ2luYXRpb25Db250cm9scyl9fWNsYXNzIGl5dHtjb25zdHJ1Y3Rvcih0KXt0aGlzLmNka1Njcm9sbGFibGU9dCx0aGlzLlBsdWdpblR5cGU9S1QsdGhpcy5ncmlkVGVtcGxhdGVDb2x1bW49IiIsdGhpcy5wYWdlSW5kZXhDaGFuZ2VkPW5ldyBTeX1uZ09uSW5pdCgpe3RoaXMuaXNDYXJkV2lkdGhWYWxpZCh0aGlzLmNhcmRNaW5XaWR0aCkmJih0aGlzLmdyaWRUZW1wbGF0ZUNvbHVtbj1gcmVwZWF0KGF1dG8tZmlsbCwgbWlubWF4KCR7dGhpcy5jYXJkTWluV2lkdGh9cHgsIGF1dG8pKWApfW5nT25DaGFuZ2VzKHQpe2lmKHQuY2FyZE1pbldpZHRoKXtjb25zdCBlPXQuY2FyZE1pbldpZHRoLmN1cnJlbnRWYWx1ZTt0aGlzLmlzQ2FyZFdpZHRoVmFsaWQoZSk/KHRoaXMuY2FyZE1pbldpZHRoPWUsdGhpcy5ncmlkVGVtcGxhdGVDb2x1bW49YHJlcGVhdChhdXRvLWZpbGwsIG1pbm1heCgke3RoaXMuY2FyZE1pbldpZHRofXB4LCBhdXRvKSlgKTp0aGlzLmdyaWRUZW1wbGF0ZUNvbHVtbj0iIn19aXNDYXJkV2lkdGhWYWxpZCh0KXtyZXR1cm4gdCYmdD49MzM1JiZ0PD03MzV9c2hvd1BhZ2luYXRpb25JbnB1dCh0KXtyZXR1cm4gdH1oYW5kbGVQYWdlQ2hhbmdlKHQsZSl7Y29uc3Qgbj1lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcDtzZXRUaW1lb3V0KCgoKT0+e3RoaXMuc2Nyb2xsVG9LZWVwVGFyZ2V0UG9zaXRpb24oZSxuKX0pLDApLHRoaXMucGFnZUluZGV4Q2hhbmdlZC5lbWl0KHQpfXNjcm9sbFRvS2VlcFRhcmdldFBvc2l0aW9uKHQsZSl7dmFyIG47Y29uc3Qgbz1udWxsPT09KG49dGhpcy5jZGtTY3JvbGxhYmxlKXx8dm9pZCAwPT09bj92b2lkIDA6bi5nZXRFbGVtZW50UmVmKCkubmF0aXZlRWxlbWVudDtvJiZvLnNjcm9sbFRvKDAsdC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3AtZStvLnNjcm9sbFRvcCl9dHJhY2tCeUNhcmRzKHQsZSl7cmV0dXJuIGUuY2FyZElkfW9uUGFnaW5hdGlvbklucHV0Q2hhbmdlKHQpe2NvbnN0IGU9dC50YXJnZXQ7aWYoImlucHV0Ij09PXQudHlwZSYmIiI9PT1lLnZhbHVlKXJldHVybjtjb25zdCBuPU51bWJlcihlLnZhbHVlKS0xLG89TWF0aC5taW4oTWF0aC5tYXgoMCxuKSx0aGlzLm51bVBhZ2VzLTEpO2UudmFsdWUhPT1TdHJpbmcobysxKSYmKGUudmFsdWU9U3RyaW5nKG8rMSkpLHRoaXMuaGFuZGxlUGFnZUNoYW5nZShvLGUpfX1peXQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGl5dCkoZ2YoSkwsOCkpfSxpeXQuybVjbXA9c28oe3R5cGU6aXl0LHNlbGVjdG9yczpbWyJtZXRyaWNzLWNhcmQtZ3JpZC1jb21wb25lbnQiXV0saW5wdXRzOntpc0dyb3VwRXhwYW5kZWQ6ImlzR3JvdXBFeHBhbmRlZCIscGFnZUluZGV4OiJwYWdlSW5kZXgiLG51bVBhZ2VzOiJudW1QYWdlcyIsY2FyZElkc1dpdGhNZXRhZGF0YToiY2FyZElkc1dpdGhNZXRhZGF0YSIsY2FyZE1pbldpZHRoOiJjYXJkTWluV2lkdGgiLGNhcmRPYnNlcnZlcjoiY2FyZE9ic2VydmVyIixzaG93UGFnaW5hdGlvbkNvbnRyb2xzOiJzaG93UGFnaW5hdGlvbkNvbnRyb2xzIn0sb3V0cHV0czp7cGFnZUluZGV4Q2hhbmdlZDoicGFnZUluZGV4Q2hhbmdlZCJ9LGZlYXR1cmVzOltxb10sZGVjbHM6Myx2YXJzOjEsY29uc3RzOmZ1bmN0aW9uKCl7bGV0IHQsZTtpZigidW5kZWZpbmVkIiE9dHlwZW9mIG5nSTE4bkNsb3N1cmVNb2RlJiZuZ0kxOG5DbG9zdXJlTW9kZSl7dD1nb29nLmdldE1zZygiUHJldmlvdXMgcGFnZSIpfWVsc2UgdD0kbG9jYWxpemVgOkEgYnV0dG9uIHRoYXQgc2V0cyBhIGdyb3VwIHRvIHRoZSBwcmV2aW91cyBwYWdlLuKQnzU3NWU3ODJmZDI3ZjJlZTcwYTAzNGE3NzVlZmU5YWQxNjI0NzIyNTDikJ8zNjI5OTYwNTQ0ODc1MzYwMDQ2OlByZXZpb3VzIHBhZ2VgO2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgbmdJMThuQ2xvc3VyZU1vZGUmJm5nSTE4bkNsb3N1cmVNb2RlKXtlPWdvb2cuZ2V0TXNnKCJOZXh0IHBhZ2UiKX1lbHNlIGU9JGxvY2FsaXplYDpBIGJ1dHRvbiB0aGF0IHNldHMgYSBncm91cCB0byB0aGUgbmV4dCBwYWdlLuKQn2NlM2NlZmIxY2QwMDk5YWE1MDAzZGRhMTZlYzllYjIxZmQ4YmE3ODnikJ8zMzM3MzAxNjk0MjEwMjg3NTk1Ok5leHQgcGFnZWA7cmV0dXJuW1s0LCJuZ0lmIl0sWyJncm91cENvbnRyb2xzIiwiIl0sWzQsIm5nVGVtcGxhdGVPdXRsZXQiLCJuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dCJdLFsxLCJjYXJkLWdyaWQiXSxbMywiY2FyZElkIiwiZ3JvdXBOYW1lIiwicGx1Z2luVHlwZSIsImNhcmRPYnNlcnZlciIsImNhcmRMYXp5TG9hZGVyIiw0LCJuZ0ZvciIsIm5nRm9yT2YiLCJuZ0ZvclRyYWNrQnkiXSxbMywiY2FyZElkIiwiZ3JvdXBOYW1lIiwicGx1Z2luVHlwZSIsImNhcmRPYnNlcnZlciIsImNhcmRMYXp5TG9hZGVyIl0sWyJjbGFzcyIsImdyb3VwLWNvbnRyb2xzIiw0LCJuZ0lmIl0sWzEsImdyb3VwLWNvbnRyb2xzIl0sWzEsInByZXYtY29udGFpbmVyIl0sWyJjbGFzcyIsInByZXYgcGFnaW5hdGlvbi1idXR0b24iLCJtYXQtYnV0dG9uIiwiIiwiYXJpYS1sYWJlbCIsdCwzLCJkaXNhYmxlZCIsImNsaWNrIiw0LCJuZ0lmIl0sWzEsImlucHV0LWFuZC1uZXh0LWNvbnRhaW5lciJdLFsibWF0LWJ1dHRvbiIsIiIsImFyaWEtbGFiZWwiLHQsMSwicHJldiIsInBhZ2luYXRpb24tYnV0dG9uIiwzLCJkaXNhYmxlZCIsImNsaWNrIl0sWyJjbGFzcyIsInBhZ2luYXRpb24taW5wdXQiLDQsIm5nSWYiXSxbIm1hdC1idXR0b24iLCIiLCJhcmlhLWxhYmVsIixlLDEsIm5leHQiLCJwYWdpbmF0aW9uLWJ1dHRvbiIsMywiZGlzYWJsZWQiLCJjbGljayJdLFsxLCJwYWdpbmF0aW9uLWlucHV0Il0sWyJ0eXBlIiwibnVtYmVyIiwibWluIiwiMSIsMywidmFsdWUiLCJtYXgiLCJpbnB1dCIsImNoYW5nZSJdXX0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKEhtKDAsUWJ0LDUsMTAsImRpdiIsMCksSG0oMSxveXQsMSwxLCJuZy10ZW1wbGF0ZSIsbnVsbCwxLHF5KSksMiZlJiZiZigibmdJZiIsbi5pc0dyb3VwRXhwYW5kZWQpfSxkaXJlY3RpdmVzOltQdixJdix4dixZYnQsQzQsTkxdLHN0eWxlczpbJy5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjlweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHh9Lm1hdC1oMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaGVhZGxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDI0cHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTVweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWg2W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1ib2R5LXN0cm9uZ1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYXJkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FyZC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MjRweH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNhbGVuZGFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZGlhbG9nLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVlbSAwO2JvcmRlci10b3A6Ljg0Mzc1ZW0gc29saWQgdHJhbnNwYXJlbnR9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17dG9wOi0wLjg0Mzc1ZW07cGFkZGluZy10b3A6Ljg0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6NzUlO21hcmdpbi10b3A6LjY2NjY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS43OTE2NjY2NjY3ZW0pfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjQzNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDJweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIzZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4yODEyNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LjU0MTY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS42NjY2NjY2NjY3ZW0pfUBtZWRpYSBwcmludHsubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjJlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjFlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyZW0pIHNjYWxlKDAuNzUpfX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouMjVlbSAwIC43NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjA5Mzc1ZW07bWFyZ2luLXRvcDotMC41ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoxZW0gMCAxZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuODQzNzVlbTttYXJnaW4tdG9wOi0wLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMiksIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fWlucHV0Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi0wLjA2MjVlbX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHh9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtfS5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1zdGVwLXN1Yi1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6bm9ybWFsfS5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1zdGVwLWxhYmVsLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10YWItZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MH0ubWF0LXRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTBweDtwYWRkaW5nLXRvcDo2cHg7cGFkZGluZy1ib3R0b206NnB4fS5tYXQtdG9vbHRpcC1oYW5kc2V0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4fS5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtc2ltcGxlLXNuYWNrYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHh9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoxO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjE0cHh9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV06bm90KDplbXB0eSl7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9Lm1hdC1yaXBwbGUubWF0LXJpcHBsZS11bmJvdW5kZWRbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OnZpc2libGV9Lm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJhZGl1czo1MCU7cG9pbnRlci1ldmVudHM6bm9uZTt0cmFuc2l0aW9uOm9wYWNpdHksdHJhbnNmb3JtIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTt0cmFuc2Zvcm06c2NhbGUoMCl9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9LmNkay12aXN1YWxseS1oaWRkZW5bX25nY29udGVudC0lQ09NUCVde2JvcmRlcjowO2NsaXA6cmVjdCgwIDAgMCAwKTtoZWlnaHQ6MXB4O21hcmdpbjotMXB4O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4O3doaXRlLXNwYWNlOm5vd3JhcDtvdXRsaW5lOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0sIC5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cG9pbnRlci1ldmVudHM6bm9uZTt0b3A6MDtsZWZ0OjA7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV06ZW1wdHl7ZGlzcGxheTpub25lfS5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktcGFuZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6YXV0bztib3gtc2l6aW5nOmJvcmRlci1ib3g7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDttYXgtd2lkdGg6MTAwJTttYXgtaGVpZ2h0OjEwMCV9LmNkay1vdmVybGF5LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDt6LWluZGV4OjEwMDA7cG9pbnRlci1ldmVudHM6YXV0bzstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnQ7dHJhbnNpdGlvbjpvcGFjaXR5IDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpO29wYWNpdHk6MH0uY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eToxfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6LjZ9LmNkay1vdmVybGF5LWRhcmstYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMzIpfS5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV0sIC5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWNvbm5lY3RlZC1wb3NpdGlvbi1ib3VuZGluZy1ib3hbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO21pbi13aWR0aDoxcHg7bWluLWhlaWdodDoxcHh9LmNkay1nbG9iYWwtc2Nyb2xsYmxvY2tbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3dpZHRoOjEwMCU7b3ZlcmZsb3cteTpzY3JvbGx9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplW19uZ2NvbnRlbnQtJUNPTVAlXXtyZXNpemU6bm9uZX10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDphdXRvICFpbXBvcnRhbnQ7b3ZlcmZsb3c6aGlkZGVuICFpbXBvcnRhbnR9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZy1maXJlZm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDowICFpbXBvcnRhbnR9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydHt9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmR7fS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGx7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0IDBzIDFtc30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOi13ZWJraXQtYXV0b2ZpbGwpe2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmQgMHMgMW1zfS5tYXQtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LW1kYy1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfVtfbmdob3N0LSVDT01QJV17Y29udGFpbjpjb250ZW50fS5jYXJkLWdyaWRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6Z3JpZDtncmlkLXRlbXBsYXRlLWNvbHVtbnM6cmVwZWF0KGF1dG8tZmlsbCwgbWlubWF4KDMzNXB4LCBhdXRvKSk7Z2FwOjE2cHg7cGFkZGluZzoxNnB4fWNhcmQtdmlld1tfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjFweCBzb2xpZCAjZWJlYmViO2JvcmRlci1yYWRpdXM6NHB4O2JveC1zaXppbmc6Ym9yZGVyLWJveDtjb250YWluOnN0cmljdDtoZWlnaHQ6MTAwJTttaW4taGVpZ2h0OjMyMHB4fWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIGNhcmQtdmlld1tfbmdjb250ZW50LSVDT01QJV0sIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIGNhcmQtdmlld1tfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjFweCBzb2xpZCAjNTU1fWNhcmQtdmlldy5mdWxsLXdpZHRoW19uZ2NvbnRlbnQtJUNPTVAlXXtjb250YWluOmxheW91dCBwYWludDtncmlkLWNvbHVtbi1zdGFydDoxO2dyaWQtY29sdW1uLWVuZDotMX1jYXJkLXZpZXcuZnVsbC1oZWlnaHRbX25nY29udGVudC0lQ09NUCVde21pbi1oZWlnaHQ6NDgwcHh9Lmdyb3VwLWNvbnRyb2xzW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxO2Rpc3BsYXk6Z3JpZDthbGlnbi1pdGVtczpjZW50ZXI7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjFmciAxZnI7Z2FwOjE2cHg7cGFkZGluZzowIDE2cHh9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgLmdyb3VwLWNvbnRyb2xzW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLmdyb3VwLWNvbnRyb2xzW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KX0uZ3JvdXAtY29udHJvbHNbX25nY29udGVudC0lQ09NUCVdOmZpcnN0LW9mLXR5cGV7cGFkZGluZy10b3A6MTZweH0uZ3JvdXAtY29udHJvbHNbX25nY29udGVudC0lQ09NUCVdOmxhc3Qtb2YtdHlwZXtwYWRkaW5nLWJvdHRvbToxNnB4fS5wcmV2LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17anVzdGlmeS1zZWxmOmZsZXgtc3RhcnR9LmlucHV0LWFuZC1uZXh0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17anVzdGlmeS1zZWxmOmZsZXgtZW5kfS5wYWdpbmF0aW9uLWlucHV0W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tcmlnaHQ6MTZweH0ucGFnaW5hdGlvbi1pbnB1dFtfbmdjb250ZW50LSVDT01QJV0gICBpbnB1dFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDp0cmFuc3BhcmVudDtib3JkZXI6MXB4IHNvbGlkIGN1cnJlbnRDb2xvcjtjb2xvcjppbmhlcml0O2ZvbnQ6aW5oZXJpdH0ucGFnaW5hdGlvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjE7YmFja2dyb3VuZC1jb2xvcjojZmZmfWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC5wYWdpbmF0aW9uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5wYWdpbmF0aW9uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNyl9LnBhZ2luYXRpb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXTpkaXNhYmxlZHtjb2xvcjojNzU3NTc1fWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC5wYWdpbmF0aW9uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV06ZGlzYWJsZWQsIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5wYWdpbmF0aW9uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV06ZGlzYWJsZWR7Y29sb3I6IzYxNjE2MX0nXSxjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoaXl0LFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6Im1ldHJpY3MtY2FyZC1ncmlkLWNvbXBvbmVudCIsdGVtcGxhdGVVcmw6Ii4vY2FyZF9ncmlkX2NvbXBvbmVudC5uZy5odG1sIixzdHlsZVVybHM6WyIuL2NhcmRfZ3JpZF9jb21wb25lbnQuY3NzIl0sY2hhbmdlRGV0ZWN0aW9uOmpuLk9uUHVzaH1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOkpMLGRlY29yYXRvcnM6W3t0eXBlOkJyfV19XX0pLHtpc0dyb3VwRXhwYW5kZWQ6W3t0eXBlOlJffV0scGFnZUluZGV4Olt7dHlwZTpSX31dLG51bVBhZ2VzOlt7dHlwZTpSX31dLGNhcmRJZHNXaXRoTWV0YWRhdGE6W3t0eXBlOlJffV0sY2FyZE1pbldpZHRoOlt7dHlwZTpSX31dLGNhcmRPYnNlcnZlcjpbe3R5cGU6Ul99XSxzaG93UGFnaW5hdGlvbkNvbnRyb2xzOlt7dHlwZTpSX31dLHBhZ2VJbmRleENoYW5nZWQ6W3t0eXBlOkVffV19KTtjbGFzcyBheXR7Y29uc3RydWN0b3IodCl7dGhpcy5zdG9yZT10LHRoaXMuZ3JvdXBOYW1lPW51bGwsdGhpcy5ncm91cE5hbWUkPW5ldyBqKG51bGwpLHRoaXMucGFnZUluZGV4JD1uZXcgaigwKSx0aGlzLml0ZW1zJD1uZXcgaihbXSksdGhpcy5uZ1Vuc3Vic2NyaWJlPW5ldyBCLHRoaXMubnVtUGFnZXMkPUt0KFt0aGlzLml0ZW1zJCx0aGlzLnN0b3JlLnNlbGVjdChoSSldKS5waXBlKFZ0KCgoW3QsZV0pPT5NYXRoLmNlaWwodC5sZW5ndGgvZSkpKSksdGhpcy5pc0dyb3VwRXhwYW5kZWQkPXRoaXMuZ3JvdXBOYW1lJC5waXBlKFZlKCh0PT5udWxsIT09dD90aGlzLnN0b3JlLnNlbGVjdCh3eix0KTp6dCghMCkpKSksdGhpcy5zaG93UGFnaW5hdGlvbkNvbnRyb2xzJD10aGlzLm51bVBhZ2VzJC5waXBlKFZ0KCh0PT50PjEpKSksdGhpcy5ub3JtYWxpemVkUGFnZUluZGV4JD1LdChbdGhpcy5wYWdlSW5kZXgkLHRoaXMubnVtUGFnZXMkXSkucGlwZShqZSh0aGlzLm5nVW5zdWJzY3JpYmUpLFdlKCgoW3QsZV0pPT57MCE9PWUmJih0Pj1lP3RoaXMucGFnZUluZGV4JC5uZXh0KGUtMSk6dDwwJiZ0aGlzLnBhZ2VJbmRleCQubmV4dCgwKSl9KSksVnQoKChbdCxlXSk9Pk1hdGgubWluKE1hdGgubWF4KHQsMCksZS0xKSkpLEZlKDEpKSx0aGlzLnBhZ2VkSXRlbXMkPUt0KFt0aGlzLml0ZW1zJCx0aGlzLnN0b3JlLnNlbGVjdChoSSksdGhpcy5ub3JtYWxpemVkUGFnZUluZGV4JCx0aGlzLmlzR3JvdXBFeHBhbmRlZCRdKS5waXBlKFZ0KCgoW3QsZSxuLG9dKT0+dC5zbGljZShlKm4sZSpuKyhvP2U6MCkpKSkpLHRoaXMuY2FyZE1pbldpZHRoJD1LdChbdGhpcy5zdG9yZS5zZWxlY3QoZ3opLHRoaXMuc3RvcmUuc2VsZWN0KHFEKV0pLnBpcGUoVnQoKChbdCxlXSk9PmU/dDpudWxsKSkpfW5nT25DaGFuZ2VzKHQpe3QuY2FyZElkc1dpdGhNZXRhZGF0YSYmdGhpcy5pdGVtcyQubmV4dCh0aGlzLmNhcmRJZHNXaXRoTWV0YWRhdGEpLHQuZ3JvdXBOYW1lJiZ0aGlzLmdyb3VwTmFtZSQubmV4dCh0aGlzLmdyb3VwTmFtZSl9bmdPbkRlc3Ryb3koKXt0aGlzLm5nVW5zdWJzY3JpYmUubmV4dCgpLHRoaXMubmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpfW9uUGFnZUluZGV4Q2hhbmdlZCh0KXt0aGlzLnBhZ2VJbmRleCQubmV4dCh0KX19ZnVuY3Rpb24gcnl0KHQsZSl7aWYoMSZ0JiYoQ2YoMCwic3BhbiIsOCksUHUoMSksTWYoKSksMiZ0KXtjb25zdCB0PXpmKCk7RGMoMSksa3UoIiIsdC5jYXJkSWRzV2l0aE1ldGFkYXRhLmxlbmd0aCwiIGNhcmRzIil9fWZ1bmN0aW9uIHN5dCh0LGUpe2lmKDEmdCYmKENmKDAsInNwYW4iLDkpLFB1KDEsIk5ldyBjYXJkIHBpbm5lZCIpLE1mKCkpLDImdCl7eW0oImRhdGEtaWQiLGUuJGltcGxpY2l0KX19ZnVuY3Rpb24gbHl0KHQsZSl7aWYoMSZ0JiZ2ZigwLCJtZXRyaWNzLWNhcmQtZ3JpZCIsMTApLDImdCl7Y29uc3QgdD16ZigpO2JmKCJjYXJkSWRzV2l0aE1ldGFkYXRhIix0LmNhcmRJZHNXaXRoTWV0YWRhdGEpKCJjYXJkT2JzZXJ2ZXIiLHQuY2FyZE9ic2VydmVyKX19ZnVuY3Rpb24gY3l0KHQsZSl7MSZ0JiYoQ2YoMCwiZGl2IiwxMSksUHUoMSwiUGluIGNhcmRzIGZvciBhIHF1aWNrIHZpZXcgYW5kIGNvbXBhcmlzb24iKSxNZigpKX1heXQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGF5dCkoZ2YoaVMpKX0sYXl0Lsm1Y21wPXNvKHt0eXBlOmF5dCxzZWxlY3RvcnM6W1sibWV0cmljcy1jYXJkLWdyaWQiXV0saW5wdXRzOntncm91cE5hbWU6Imdyb3VwTmFtZSIsY2FyZElkc1dpdGhNZXRhZGF0YToiY2FyZElkc1dpdGhNZXRhZGF0YSIsY2FyZE9ic2VydmVyOiJjYXJkT2JzZXJ2ZXIifSxmZWF0dXJlczpbcW9dLGRlY2xzOjcsdmFyczoxOSxjb25zdHM6W1szLCJpc0dyb3VwRXhwYW5kZWQiLCJwYWdlSW5kZXgiLCJudW1QYWdlcyIsInNob3dQYWdpbmF0aW9uQ29udHJvbHMiLCJjYXJkSWRzV2l0aE1ldGFkYXRhIiwiY2FyZE1pbldpZHRoIiwiY2FyZE9ic2VydmVyIiwicGFnZUluZGV4Q2hhbmdlZCJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoQ2YoMCwibWV0cmljcy1jYXJkLWdyaWQtY29tcG9uZW50IiwwKSxSZigicGFnZUluZGV4Q2hhbmdlZCIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4ub25QYWdlSW5kZXhDaGFuZ2VkKGUpfSkpLF95KDEsImFzeW5jIiksX3koMiwiYXN5bmMiKSxfeSgzLCJhc3luYyIpLF95KDQsImFzeW5jIiksX3koNSwiYXN5bmMiKSxfeSg2LCJhc3luYyIpLE1mKCkpLDImZSYmYmYoImlzR3JvdXBFeHBhbmRlZCIsQ3koMSw3LG4uaXNHcm91cEV4cGFuZGVkJCkpKCJwYWdlSW5kZXgiLEN5KDIsOSxuLm5vcm1hbGl6ZWRQYWdlSW5kZXgkKSkoIm51bVBhZ2VzIixDeSgzLDExLG4ubnVtUGFnZXMkKSkoInNob3dQYWdpbmF0aW9uQ29udHJvbHMiLEN5KDQsMTMsbi5zaG93UGFnaW5hdGlvbkNvbnRyb2xzJCkpKCJjYXJkSWRzV2l0aE1ldGFkYXRhIixDeSg1LDE1LG4ucGFnZWRJdGVtcyQpKSgiY2FyZE1pbldpZHRoIixDeSg2LDE3LG4uY2FyZE1pbldpZHRoJCkpKCJjYXJkT2JzZXJ2ZXIiLG4uY2FyZE9ic2VydmVyKX0sZGlyZWN0aXZlczpbaXl0XSxwaXBlczpbVnZdLGVuY2Fwc3VsYXRpb246MixjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoYXl0LFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6Im1ldHJpY3MtY2FyZC1ncmlkIix0ZW1wbGF0ZTonXG4gICAgPG1ldHJpY3MtY2FyZC1ncmlkLWNvbXBvbmVudFxuICAgICAgW2lzR3JvdXBFeHBhbmRlZF09ImlzR3JvdXBFeHBhbmRlZCQgfCBhc3luYyJcbiAgICAgIFtwYWdlSW5kZXhdPSJub3JtYWxpemVkUGFnZUluZGV4JCB8IGFzeW5jIlxuICAgICAgW251bVBhZ2VzXT0ibnVtUGFnZXMkIHwgYXN5bmMiXG4gICAgICBbc2hvd1BhZ2luYXRpb25Db250cm9sc109InNob3dQYWdpbmF0aW9uQ29udHJvbHMkIHwgYXN5bmMiXG4gICAgICBbY2FyZElkc1dpdGhNZXRhZGF0YV09InBhZ2VkSXRlbXMkIHwgYXN5bmMiXG4gICAgICBbY2FyZE1pbldpZHRoXT0iY2FyZE1pbldpZHRoJCB8IGFzeW5jIlxuICAgICAgW2NhcmRPYnNlcnZlcl09ImNhcmRPYnNlcnZlciJcbiAgICAgIChwYWdlSW5kZXhDaGFuZ2VkKT0ib25QYWdlSW5kZXhDaGFuZ2VkKCRldmVudCkiXG4gICAgPlxuICAgIDwvbWV0cmljcy1jYXJkLWdyaWQtY29tcG9uZW50PlxuICAnLGNoYW5nZURldGVjdGlvbjpqbi5PblB1c2h9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTppU31dfSkse2dyb3VwTmFtZTpbe3R5cGU6Ul99XSxjYXJkSWRzV2l0aE1ldGFkYXRhOlt7dHlwZTpSX31dLGNhcmRPYnNlcnZlcjpbe3R5cGU6Ul99XX0pO2NsYXNzIGR5dHt9ZHl0Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxkeXQpfSxkeXQuybVjbXA9c28oe3R5cGU6ZHl0LHNlbGVjdG9yczpbWyJtZXRyaWNzLXBpbm5lZC12aWV3LWNvbXBvbmVudCJdXSxpbnB1dHM6e2NhcmRPYnNlcnZlcjoiY2FyZE9ic2VydmVyIixjYXJkSWRzV2l0aE1ldGFkYXRhOiJjYXJkSWRzV2l0aE1ldGFkYXRhIixuZXdDYXJkUGlubmVkSWRzOiJuZXdDYXJkUGlubmVkSWRzIn0sZGVjbHM6MTAsdmFyczo0LGNvbnN0czpbWzEsImdyb3VwLXRvb2xiYXIiXSxbInN2Z0ljb24iLCJrZWVwXzI0cHgiXSxbMSwiZ3JvdXAtdGV4dCJdLFsiYXJpYS1yb2xlIiwiaGVhZGluZyIsImFyaWEtbGV2ZWwiLCIzIiwxLCJncm91cC10aXRsZSJdLFsiY2xhc3MiLCJncm91cC1jYXJkLWNvdW50Iiw0LCJuZ0lmIl0sWyJjbGFzcyIsIm5ldy1jYXJkLXBpbm5lZCIsNCwibmdGb3IiLCJuZ0Zvck9mIl0sWzMsImNhcmRJZHNXaXRoTWV0YWRhdGEiLCJjYXJkT2JzZXJ2ZXIiLDQsIm5nSWYiLCJuZ0lmRWxzZSJdLFsiZW1wdHlQaW5uZWRWaWV3IiwiIl0sWzEsImdyb3VwLWNhcmQtY291bnQiXSxbMSwibmV3LWNhcmQtcGlubmVkIl0sWzMsImNhcmRJZHNXaXRoTWV0YWRhdGEiLCJjYXJkT2JzZXJ2ZXIiXSxbMSwiZW1wdHktbWVzc2FnZSJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7aWYoMSZlJiYoQ2YoMCwiZGl2IiwwKSx2ZigxLCJtYXQtaWNvbiIsMSksQ2YoMiwic3BhbiIsMiksQ2YoMywic3BhbiIsMyksUHUoNCwiUGlubmVkIiksTWYoKSxIbSg1LHJ5dCwyLDEsInNwYW4iLDQpLEhtKDYsc3l0LDIsMSwic3BhbiIsNSksTWYoKSxNZigpLEhtKDcsbHl0LDEsMiwibWV0cmljcy1jYXJkLWdyaWQiLDYpLEhtKDgsY3l0LDIsMCwibmctdGVtcGxhdGUiLG51bGwsNyxxeSkpLDImZSl7Y29uc3QgdD1GbSg5KTtEYyg1KSxiZigibmdJZiIsbi5jYXJkSWRzV2l0aE1ldGFkYXRhLmxlbmd0aD4xKSxEYygxKSxiZigibmdGb3JPZiIsbi5uZXdDYXJkUGlubmVkSWRzKSxEYygxKSxiZigibmdJZiIsbi5jYXJkSWRzV2l0aE1ldGFkYXRhLmxlbmd0aCkoIm5nSWZFbHNlIix0KX19LGRpcmVjdGl2ZXM6W01xLFB2LHh2LGF5dF0sc3R5bGVzOlsnLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjEycHg7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtYmFkZ2Utc21hbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6OXB4fS5tYXQtYmFkZ2UtbGFyZ2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweH0ubWF0LWgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1oZWFkbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMjRweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNnB4LzI4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNXB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC44MykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtaDZbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuNjcpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWJvZHktc3Ryb25nW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjAgMCAxMnB4fS5tYXQtc21hbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDEycHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjMwMCAxMTJweC8xMTJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDVlbTttYXJnaW46MCAwIDU2cHh9Lm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDU2cHgvNTZweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDJlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDQ1cHgvNDhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDA1ZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAzNHB4LzQwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDY0cHh9Lm1hdC1ib3R0b20tc2hlZXQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhcmQtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjIwcHh9Lm1hdC1jYXJkLXN1YnRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXJkLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNoZWNrYm94LWxheW91dFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoyNHB4fS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtdHJhaWxpbmctaWNvbi5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MThweH0ubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1oZWFkZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9vdGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2FsZW5kYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhbGVuZGFyLWJvZHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxM3B4fS5tYXQtY2FsZW5kYXItYm9keS1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FsZW5kYXItcGVyaW9kLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRoW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo0MDB9Lm1hdC1kaWFsb2ctdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDoxLjEyNTtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE1MCU7bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS41ZW07d2lkdGg6MS41ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNWVtIDA7Ym9yZGVyLXRvcDouODQzNzVlbSBzb2xpZCB0cmFuc3BhcmVudH0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTAuODQzNzVlbTtwYWRkaW5nLXRvcDouODQzNzVlbX0ubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo3NSU7bWFyZ2luLXRvcDouNjY2NjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjc5MTY2NjY2NjdlbSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNDM3NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMnB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTJlbSkgc2NhbGUoMC43NSl9fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi4yNWVtIDAgLjc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMDkzNzVlbTttYXJnaW4tdG9wOi0wLjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjFlbSAwIDFlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS44NDM3NWVtO21hcmdpbi10b3A6LTAuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9aW5wdXQubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LTAuMDYyNWVtfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweH0ubWF0LXJhZGlvLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW19Lm1hdC1zbGlkZS10b2dnbGUtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXN0ZXAtc3ViLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDpub3JtYWx9Lm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRhYi1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowfS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMHB4O3BhZGRpbmctdG9wOjZweDtwYWRkaW5nLWJvdHRvbTo2cHh9Lm1hdC10b29sdGlwLWhhbmRzZXRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHh9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1zaW1wbGUtc25hY2tiYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjE7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo1MDB9Lm1hdC10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW5lc3RlZC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweH0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmVtcHR5KXt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKX0ubWF0LXJpcHBsZS5tYXQtcmlwcGxlLXVuYm91bmRlZFtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6dmlzaWJsZX0ubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItcmFkaXVzOjUwJTtwb2ludGVyLWV2ZW50czpub25lO3RyYW5zaXRpb246b3BhY2l0eSx0cmFuc2Zvcm0gMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO3RyYW5zZm9ybTpzY2FsZSgwKX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6bm9uZX0uY2RrLXZpc3VhbGx5LWhpZGRlbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjA7Y2xpcDpyZWN0KDAgMCAwIDApO2hlaWdodDoxcHg7bWFyZ2luOi0xcHg7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxcHg7d2hpdGUtc3BhY2U6bm93cmFwO291dGxpbmU6MDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb2ludGVyLWV2ZW50czpub25lO3RvcDowO2xlZnQ6MDtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXTplbXB0eXtkaXNwbGF5Om5vbmV9LmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1wYW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtwb2ludGVyLWV2ZW50czphdXRvO2JveC1zaXppbmc6Ym9yZGVyLWJveDt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O21heC13aWR0aDoxMDAlO21heC1oZWlnaHQ6MTAwJX0uY2RrLW92ZXJsYXktYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO2xlZnQ6MDtyaWdodDowO3otaW5kZXg6MTAwMDtwb2ludGVyLWV2ZW50czphdXRvOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudDt0cmFuc2l0aW9uOm9wYWNpdHkgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSk7b3BhY2l0eTowfS5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjF9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAuY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTouNn0uY2RrLW92ZXJsYXktZGFyay1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4zMil9LmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MH0uY2RrLW92ZXJsYXktY29ubmVjdGVkLXBvc2l0aW9uLWJvdW5kaW5nLWJveFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bWluLXdpZHRoOjFweDttaW4taGVpZ2h0OjFweH0uY2RrLWdsb2JhbC1zY3JvbGxibG9ja1tfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7d2lkdGg6MTAwJTtvdmVyZmxvdy15OnNjcm9sbH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemVbX25nY29udGVudC0lQ09NUCVde3Jlc2l6ZTpub25lfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmdbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OmF1dG8gIWltcG9ydGFudDtvdmVyZmxvdzpoaWRkZW4gIWltcG9ydGFudH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nLWZpcmVmb3hbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OjAgIWltcG9ydGFudH1Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0e31Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZHt9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbHthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnQgMHMgMW1zfS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCg6LXdlYmtpdC1hdXRvZmlsbCl7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZCAwcyAxbXN9Lm1hdC1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtbWRjLWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9W19uZ2hvc3QtJUNPTVAlXSAgIC5ncm91cC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2ViZWJlYjthbGlnbi1pdGVtczpjZW50ZXI7YmFja2dyb3VuZC1jb2xvcjojZmZmO2Rpc3BsYXk6ZmxleDtmbGV4Om5vbmU7aGVpZ2h0OjQycHg7bWFyZ2luLWJvdHRvbTotMXB4O3BhZGRpbmc6MCAxNnB4O3Bvc2l0aW9uOnN0aWNreTt0b3A6MDt6LWluZGV4OjE7Ym94LXNoYWRvdzowcHggMnB4IDRweCAwcHggcmdiYSgwLDAsMCwuMTUpfWJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5ncm91cC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiMzMDMwMzB9Ym9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLmdyb3VwLXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1ib3R0b206MXB4IHNvbGlkICM1NTV9Ym9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLmdyb3VwLXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDJweCA0cHggMHB4IHJnYmEoMjU1LDI1NSwyNTUsLjE1KX1tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MTtmbGV4Om5vbmU7bWFyZ2luLXJpZ2h0OjVweH1ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICBtYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIG1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KX0uZ3JvdXAtdGV4dFtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmJhc2VsaW5lO2dhcDo2cHh9Lmdyb3VwLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lmdyb3VwLWNhcmQtY291bnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjQwMDtjb2xvcjojNjE2MTYxfWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC5ncm91cC1jYXJkLWNvdW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLmdyb3VwLWNhcmQtY291bnRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjcpfS5lbXB0eS1tZXNzYWdlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtc3R5bGU6aXRhbGljO3BhZGRpbmc6MTZweDt0ZXh0LWFsaWduOmNlbnRlcn1ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICAuZW1wdHktbWVzc2FnZVtfbmdjb250ZW50LSVDT01QJV0sIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5lbXB0eS1tZXNzYWdlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KX0ubmV3LWNhcmQtcGlubmVkW19uZ2NvbnRlbnQtJUNPTVAlXXthbmltYXRpb246cGlubmVkLXZpZXctZmFkZS1vdXQgM3MgbGluZWFyO2JhY2tncm91bmQ6I2Y0NDMzNjtib3JkZXItcmFkaXVzOjVweDtjb2xvcjojZmZmO2Rpc3BsYXk6aW5saW5lLWJsb2NrO2ZvbnQtc2l6ZToxM3B4O29wYWNpdHk6MDtwYWRkaW5nOjNweCA1cHh9QGtleWZyYW1lcyBwaW5uZWQtdmlldy1mYWRlLW91dHtmcm9te29wYWNpdHk6MX02NiV7b3BhY2l0eTouOTl9dG97b3BhY2l0eTowfX0nXSxjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoZHl0LFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6Im1ldHJpY3MtcGlubmVkLXZpZXctY29tcG9uZW50Iix0ZW1wbGF0ZTonXG4gICAgPGRpdiBjbGFzcz0iZ3JvdXAtdG9vbGJhciI+XG4gICAgICA8bWF0LWljb24gc3ZnSWNvbj0ia2VlcF8yNHB4Ij48L21hdC1pY29uPlxuICAgICAgPHNwYW4gY2xhc3M9Imdyb3VwLXRleHQiPlxuICAgICAgICA8c3BhbiBjbGFzcz0iZ3JvdXAtdGl0bGUiIGFyaWEtcm9sZT0iaGVhZGluZyIgYXJpYS1sZXZlbD0iMyJcbiAgICAgICAgICA+UGlubmVkPC9zcGFuXG4gICAgICAgID5cbiAgICAgICAgPHNwYW4gKm5nSWY9ImNhcmRJZHNXaXRoTWV0YWRhdGEubGVuZ3RoID4gMSIgY2xhc3M9Imdyb3VwLWNhcmQtY291bnQiXG4gICAgICAgICAgPnt7IGNhcmRJZHNXaXRoTWV0YWRhdGEubGVuZ3RoIH19IGNhcmRzPC9zcGFuXG4gICAgICAgID5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICAqbmdGb3I9ImxldCBpZCBvZiBuZXdDYXJkUGlubmVkSWRzIlxuICAgICAgICAgIFthdHRyLmRhdGEtaWRdPSJpZCJcbiAgICAgICAgICBjbGFzcz0ibmV3LWNhcmQtcGlubmVkIlxuICAgICAgICAgID5OZXcgY2FyZCBwaW5uZWQ8L3NwYW5cbiAgICAgICAgPlxuICAgICAgPC9zcGFuPlxuICAgIDwvZGl2PlxuICAgIDxtZXRyaWNzLWNhcmQtZ3JpZFxuICAgICAgKm5nSWY9ImNhcmRJZHNXaXRoTWV0YWRhdGEubGVuZ3RoOyBlbHNlIGVtcHR5UGlubmVkVmlldyJcbiAgICAgIFtjYXJkSWRzV2l0aE1ldGFkYXRhXT0iY2FyZElkc1dpdGhNZXRhZGF0YSJcbiAgICAgIFtjYXJkT2JzZXJ2ZXJdPSJjYXJkT2JzZXJ2ZXIiXG4gICAgPjwvbWV0cmljcy1jYXJkLWdyaWQ+XG4gICAgPG5nLXRlbXBsYXRlICNlbXB0eVBpbm5lZFZpZXc+XG4gICAgICA8ZGl2IGNsYXNzPSJlbXB0eS1tZXNzYWdlIj5QaW4gY2FyZHMgZm9yIGEgcXVpY2sgdmlldyBhbmQgY29tcGFyaXNvbjwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gICcsc3R5bGVVcmxzOlsicGlubmVkX3ZpZXdfY29tcG9uZW50LmNzcyJdLGNoYW5nZURldGVjdGlvbjpqbi5PblB1c2h9XX1dLG51bGwse2NhcmRPYnNlcnZlcjpbe3R5cGU6Ul99XSxjYXJkSWRzV2l0aE1ldGFkYXRhOlt7dHlwZTpSX31dLG5ld0NhcmRQaW5uZWRJZHM6W3t0eXBlOlJffV19KTtjbGFzcyBweXR7Y29uc3RydWN0b3IodCl7dGhpcy5zdG9yZT10LHRoaXMuY2FyZElkc1dpdGhNZXRhZGF0YSQ9dGhpcy5zdG9yZS5zZWxlY3QoY3opLnBpcGUoQmUoW10pKSx0aGlzLm5ld0NhcmRQaW5uZWRJZHMkPXRoaXMuc3RvcmUuc2VsZWN0KGN6KS5waXBlKExlKDEpLFZ0KCh0PT50Lm1hcCgodD0+dC5jYXJkSWQpKSkpLE5lKCksVnQoKChbdCxlXSk9Pntjb25zdCBuPW5ldyBTZXQodCksbz1uZXcgU2V0KGUpO2Zvcihjb25zdCB0IG9mIG8paWYoIW4uaGFzKHQpKXJldHVybiBEYXRlLm5vdygpO3JldHVybiBudWxsfSkpLEJlKG51bGwpLE5lKCksVnQoKChbdCxlXSk9Pm51bGw9PT10JiZudWxsPT09ZT9udWxsOm51bGw9PT1lP1t0XTpbZV0pKSx1ZSgodD0+bnVsbCE9PXQpKSxWdCgodD0+W3RbMF1dKSkpfX1weXQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHB5dCkoZ2YoaVMpKX0scHl0Lsm1Y21wPXNvKHt0eXBlOnB5dCxzZWxlY3RvcnM6W1sibWV0cmljcy1waW5uZWQtdmlldyJdXSxpbnB1dHM6e2NhcmRPYnNlcnZlcjoiY2FyZE9ic2VydmVyIn0sZGVjbHM6Myx2YXJzOjcsY29uc3RzOltbMywiY2FyZElkc1dpdGhNZXRhZGF0YSIsIm5ld0NhcmRQaW5uZWRJZHMiLCJjYXJkT2JzZXJ2ZXIiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKHZmKDAsIm1ldHJpY3MtcGlubmVkLXZpZXctY29tcG9uZW50IiwwKSxfeSgxLCJhc3luYyIpLF95KDIsImFzeW5jIikpLDImZSYmYmYoImNhcmRJZHNXaXRoTWV0YWRhdGEiLEN5KDEsMyxuLmNhcmRJZHNXaXRoTWV0YWRhdGEkKSkoIm5ld0NhcmRQaW5uZWRJZHMiLEN5KDIsNSxuLm5ld0NhcmRQaW5uZWRJZHMkKSkoImNhcmRPYnNlcnZlciIsbi5jYXJkT2JzZXJ2ZXIpfSxkaXJlY3RpdmVzOltkeXRdLHBpcGVzOltWdl0sZW5jYXBzdWxhdGlvbjoyLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihweXQsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoibWV0cmljcy1waW5uZWQtdmlldyIsdGVtcGxhdGU6J1xuICAgIDxtZXRyaWNzLXBpbm5lZC12aWV3LWNvbXBvbmVudFxuICAgICAgW2NhcmRJZHNXaXRoTWV0YWRhdGFdPSJjYXJkSWRzV2l0aE1ldGFkYXRhJCB8IGFzeW5jIlxuICAgICAgW25ld0NhcmRQaW5uZWRJZHNdPSJuZXdDYXJkUGlubmVkSWRzJCB8IGFzeW5jIlxuICAgICAgW2NhcmRPYnNlcnZlcl09ImNhcmRPYnNlcnZlciJcbiAgICA+PC9tZXRyaWNzLXBpbm5lZC12aWV3LWNvbXBvbmVudD5cbiAgJyxjaGFuZ2VEZXRlY3Rpb246am4uT25QdXNofV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6aVN9XX0pLHtjYXJkT2JzZXJ2ZXI6W3t0eXBlOlJffV19KTtjb25zdCBteXQ9YlMoYXosX0ksKCh0LGUpPT50LmZpbHRlcigodD0+IW9OKHQucGx1Z2luKXx8Qm9vbGVhbihlJiZlLmdldCh0LnJ1bklkKSkpKSkpLGZ5dD1iUyhteXQsKHQ9PnQuc29ydCgoKHQsZSk9PlgkKHQudGFnLGUudGFnKSkpKSk7ZnVuY3Rpb24gdXl0KHQsZSl7aWYoMSZ0JiYoQ2YoMCwic3BhbiIsNyksUHUoMSksX3koMiwibnVtYmVyIiksTWYoKSksMiZ0KXtjb25zdCB0PXpmKCk7RGMoMSksa3UoIiIsQ3koMiwxLHQubnVtYmVyT2ZDYXJkcyksIiBjYXJkcyIpfX1mdW5jdGlvbiBneXQodCxlKXsxJnQmJnZmKDAsIm1hdC1pY29uIiw4KX1mdW5jdGlvbiBoeXQodCxlKXsxJnQmJnZmKDAsIm1hdC1pY29uIiw5KX1jbGFzcyBieXR7Y29uc3RydWN0b3IoKXt0aGlzLmdyb3VwRXhwYW5zaW9uVG9nZ2xlZD1uZXcgU3l9fWJ5dC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8Ynl0KX0sYnl0Lsm1Y21wPXNvKHt0eXBlOmJ5dCxzZWxlY3RvcnM6W1sibWV0cmljcy1jYXJkLWdyb3VwLXRvb2xiYXItY29tcG9uZW50Il1dLGlucHV0czp7Z3JvdXBOYW1lOiJncm91cE5hbWUiLG51bWJlck9mQ2FyZHM6Im51bWJlck9mQ2FyZHMiLGlzR3JvdXBFeHBhbmRlZDoiaXNHcm91cEV4cGFuZGVkIn0sb3V0cHV0czp7Z3JvdXBFeHBhbnNpb25Ub2dnbGVkOiJncm91cEV4cGFuc2lvblRvZ2dsZWQifSxkZWNsczo5LHZhcnM6NSxjb25zdHM6ZnVuY3Rpb24oKXtsZXQgdDtpZigidW5kZWZpbmVkIiE9dHlwZW9mIG5nSTE4bkNsb3N1cmVNb2RlJiZuZ0kxOG5DbG9zdXJlTW9kZSl7dD1nb29nLmdldE1zZygiRXhwYW5kIGdyb3VwIil9ZWxzZSB0PSRsb2NhbGl6ZWA6QSBidXR0b24gdGhhdCBhbGxvd3MgdXNlciB0byBleHBhbmQgYSB0YWcgZ3JvdXAu4pCfZmZhYTExNDcxYjg3OGE2ZGZmZTJlNjhjNmYzNzA2NGE5ZTA3NDg1M+KQnzUzODYwNTQzMjUyNzQ3NzkyNTg6RXhwYW5kIGdyb3VwYDtyZXR1cm5bWyJhcmlhLWxhYmVsIix0LDEsImdyb3VwLXRvb2xiYXIiLDMsImNsaWNrIl0sWzEsImdyb3VwLXRpdGxlLXdyYXBwZXIiXSxbImFyaWEtcm9sZSIsImhlYWRpbmciLCJhcmlhLWxldmVsIiwiMyIsMSwiZ3JvdXAtdGl0bGUiLDMsInRpdGxlIl0sWyJjbGFzcyIsImdyb3VwLWNhcmQtY291bnQiLDQsIm5nSWYiXSxbMSwiZXhwYW5kLWdyb3VwLWljb24iXSxbInN2Z0ljb24iLCJleHBhbmRfbGVzc18yNHB4Iiw0LCJuZ0lmIiwibmdJZkVsc2UiXSxbImV4cGFuZE1vcmUiLCIiXSxbMSwiZ3JvdXAtY2FyZC1jb3VudCJdLFsic3ZnSWNvbiIsImV4cGFuZF9sZXNzXzI0cHgiXSxbInN2Z0ljb24iLCJleHBhbmRfbW9yZV8yNHB4Il1dfSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7aWYoMSZlJiYoQ2YoMCwiYnV0dG9uIiwwKSxSZigiY2xpY2siLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4uZ3JvdXBFeHBhbnNpb25Ub2dnbGVkLmVtaXQoKX0pKSxDZigxLCJzcGFuIiwxKSxDZigyLCJzcGFuIiwyKSxQdSgzKSxNZigpLEhtKDQsdXl0LDMsMywic3BhbiIsMyksTWYoKSxDZig1LCJzcGFuIiw0KSxIbSg2LGd5dCwxLDAsIm1hdC1pY29uIiw1KSxIbSg3LGh5dCwxLDAsIm5nLXRlbXBsYXRlIixudWxsLDYscXkpLE1mKCksTWYoKSksMiZlKXtjb25zdCB0PUZtKDgpO0RjKDIpLExmKCJ0aXRsZSIsbi5ncm91cE5hbWUpLERjKDEpLHd1KG4uZ3JvdXBOYW1lKSxEYygxKSxiZigibmdJZiIsbi5udW1iZXJPZkNhcmRzPjEpLERjKDIpLGJmKCJuZ0lmIixuLmlzR3JvdXBFeHBhbmRlZCkoIm5nSWZFbHNlIix0KX19LGRpcmVjdGl2ZXM6W1B2LE1xXSxwaXBlczpbJHZdLHN0eWxlczpbJy5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjlweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHh9Lm1hdC1oMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaGVhZGxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDI0cHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTVweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWg2W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1ib2R5LXN0cm9uZ1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYXJkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FyZC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MjRweH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNhbGVuZGFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZGlhbG9nLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVlbSAwO2JvcmRlci10b3A6Ljg0Mzc1ZW0gc29saWQgdHJhbnNwYXJlbnR9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17dG9wOi0wLjg0Mzc1ZW07cGFkZGluZy10b3A6Ljg0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6NzUlO21hcmdpbi10b3A6LjY2NjY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS43OTE2NjY2NjY3ZW0pfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjQzNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDJweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIzZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4yODEyNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LjU0MTY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS42NjY2NjY2NjY3ZW0pfUBtZWRpYSBwcmludHsubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjJlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjFlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyZW0pIHNjYWxlKDAuNzUpfX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouMjVlbSAwIC43NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjA5Mzc1ZW07bWFyZ2luLXRvcDotMC41ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoxZW0gMCAxZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuODQzNzVlbTttYXJnaW4tdG9wOi0wLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMiksIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fWlucHV0Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi0wLjA2MjVlbX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHh9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtfS5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1zdGVwLXN1Yi1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6bm9ybWFsfS5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1zdGVwLWxhYmVsLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10YWItZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MH0ubWF0LXRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTBweDtwYWRkaW5nLXRvcDo2cHg7cGFkZGluZy1ib3R0b206NnB4fS5tYXQtdG9vbHRpcC1oYW5kc2V0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4fS5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtc2ltcGxlLXNuYWNrYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHh9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoxO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjE0cHh9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV06bm90KDplbXB0eSl7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9Lm1hdC1yaXBwbGUubWF0LXJpcHBsZS11bmJvdW5kZWRbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OnZpc2libGV9Lm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJhZGl1czo1MCU7cG9pbnRlci1ldmVudHM6bm9uZTt0cmFuc2l0aW9uOm9wYWNpdHksdHJhbnNmb3JtIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTt0cmFuc2Zvcm06c2NhbGUoMCl9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9LmNkay12aXN1YWxseS1oaWRkZW5bX25nY29udGVudC0lQ09NUCVde2JvcmRlcjowO2NsaXA6cmVjdCgwIDAgMCAwKTtoZWlnaHQ6MXB4O21hcmdpbjotMXB4O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4O3doaXRlLXNwYWNlOm5vd3JhcDtvdXRsaW5lOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0sIC5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cG9pbnRlci1ldmVudHM6bm9uZTt0b3A6MDtsZWZ0OjA7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV06ZW1wdHl7ZGlzcGxheTpub25lfS5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktcGFuZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6YXV0bztib3gtc2l6aW5nOmJvcmRlci1ib3g7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDttYXgtd2lkdGg6MTAwJTttYXgtaGVpZ2h0OjEwMCV9LmNkay1vdmVybGF5LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDt6LWluZGV4OjEwMDA7cG9pbnRlci1ldmVudHM6YXV0bzstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnQ7dHJhbnNpdGlvbjpvcGFjaXR5IDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpO29wYWNpdHk6MH0uY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eToxfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6LjZ9LmNkay1vdmVybGF5LWRhcmstYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMzIpfS5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV0sIC5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWNvbm5lY3RlZC1wb3NpdGlvbi1ib3VuZGluZy1ib3hbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO21pbi13aWR0aDoxcHg7bWluLWhlaWdodDoxcHh9LmNkay1nbG9iYWwtc2Nyb2xsYmxvY2tbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3dpZHRoOjEwMCU7b3ZlcmZsb3cteTpzY3JvbGx9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplW19uZ2NvbnRlbnQtJUNPTVAlXXtyZXNpemU6bm9uZX10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDphdXRvICFpbXBvcnRhbnQ7b3ZlcmZsb3c6aGlkZGVuICFpbXBvcnRhbnR9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZy1maXJlZm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDowICFpbXBvcnRhbnR9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydHt9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmR7fS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGx7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0IDBzIDFtc30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOi13ZWJraXQtYXV0b2ZpbGwpe2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmQgMHMgMW1zfS5tYXQtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LW1kYy1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfVtfbmdob3N0LSVDT01QJV0gICAuZ3JvdXAtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmZmO2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNlYmViZWI7YWxpZ24taXRlbXM6Y2VudGVyO2JhY2tncm91bmQtY29sb3I6I2ZmZjtkaXNwbGF5OmZsZXg7ZmxleDpub25lO2hlaWdodDo0MnB4O21hcmdpbi1ib3R0b206LTFweDtwYWRkaW5nOjAgMTZweDtwb3NpdGlvbjpzdGlja3k7dG9wOjA7ei1pbmRleDoxO2JveC1zaGFkb3c6MHB4IDJweCA0cHggMHB4IHJnYmEoMCwwLDAsLjE1KX1ib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAuZ3JvdXAtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojMzAzMDMwfWJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5ncm91cC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjNTU1fWJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5ncm91cC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAycHggNHB4IDBweCByZ2JhKDI1NSwyNTUsMjU1LC4xNSl9W19uZ2hvc3QtJUNPTVAlXSAgIC5ncm91cC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6MDtib3JkZXItdG9wOjFweCBzb2xpZCAjZWJlYmViO2NvbG9yOiMyMTIxMjE7dG9wOi0xcHg7ZGlzcGxheTpmbGV4O3dpZHRoOjEwMCU7Zm9udDppbmhlcml0fWJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5ncm91cC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItdG9wOjFweCBzb2xpZCAjNTU1fWJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5ncm91cC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmfS5jYXJkLWdyb3VwOmZpcnN0LW9mLXR5cGUgICBbX25naG9zdC0lQ09NUCVdICAgLmdyb3VwLXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVde2JvcmRlci10b3A6MH1bX25naG9zdC0lQ09NUCVdICAgLmdyb3VwLXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdOmhvdmVye2N1cnNvcjpwb2ludGVyfS5leHBhbmQtZ3JvdXAtaWNvbltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX1ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICAuZXhwYW5kLWdyb3VwLWljb25bX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAuZXhwYW5kLWdyb3VwLWljb25bX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjcpfS5leHBhbmQtZ3JvdXAtaWNvbltfbmdjb250ZW50LSVDT01QJV06ZGlzYWJsZWR7Y29sb3I6Izc1NzU3NX1ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICAuZXhwYW5kLWdyb3VwLWljb25bX25nY29udGVudC0lQ09NUCVdOmRpc2FibGVkLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAuZXhwYW5kLWdyb3VwLWljb25bX25nY29udGVudC0lQ09NUCVdOmRpc2FibGVke2NvbG9yOiM2MTYxNjF9Lmdyb3VwLXRpdGxlLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2ZsZXgtZ3JvdzoxO3RleHQtYWxpZ246bGVmdH0uZ3JvdXAtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0uZ3JvdXAtY2FyZC1jb3VudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NDAwO2NvbG9yOiM2MTYxNjE7bWFyZ2luLWxlZnQ6NnB4fWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC5ncm91cC1jYXJkLWNvdW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLmdyb3VwLWNhcmQtY291bnRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjcpfSddLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihieXQsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoibWV0cmljcy1jYXJkLWdyb3VwLXRvb2xiYXItY29tcG9uZW50Iix0ZW1wbGF0ZTonXG4gICAgPGJ1dHRvblxuICAgICAgY2xhc3M9Imdyb3VwLXRvb2xiYXIiXG4gICAgICBpMThuLWFyaWEtbGFiZWw9IkEgYnV0dG9uIHRoYXQgYWxsb3dzIHVzZXIgdG8gZXhwYW5kIGEgdGFnIGdyb3VwLiJcbiAgICAgIGFyaWEtbGFiZWw9IkV4cGFuZCBncm91cCJcbiAgICAgIChjbGljayk9Imdyb3VwRXhwYW5zaW9uVG9nZ2xlZC5lbWl0KCkiXG4gICAgPlxuICAgICAgPHNwYW4gY2xhc3M9Imdyb3VwLXRpdGxlLXdyYXBwZXIiPlxuICAgICAgICA8c3BhblxuICAgICAgICAgIGNsYXNzPSJncm91cC10aXRsZSJcbiAgICAgICAgICBhcmlhLXJvbGU9ImhlYWRpbmciXG4gICAgICAgICAgYXJpYS1sZXZlbD0iMyJcbiAgICAgICAgICB0aXRsZT0ie3sgZ3JvdXBOYW1lIH19IlxuICAgICAgICAgID57eyBncm91cE5hbWUgfX08L3NwYW5cbiAgICAgICAgPlxuICAgICAgICA8c3BhbiAqbmdJZj0ibnVtYmVyT2ZDYXJkcyA+IDEiIGNsYXNzPSJncm91cC1jYXJkLWNvdW50IlxuICAgICAgICAgID57eyBudW1iZXJPZkNhcmRzIHwgbnVtYmVyIH19IGNhcmRzPC9zcGFuXG4gICAgICAgID5cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxzcGFuIGNsYXNzPSJleHBhbmQtZ3JvdXAtaWNvbiI+XG4gICAgICAgIDxtYXQtaWNvblxuICAgICAgICAgICpuZ0lmPSJpc0dyb3VwRXhwYW5kZWQ7IGVsc2UgZXhwYW5kTW9yZSJcbiAgICAgICAgICBzdmdJY29uPSJleHBhbmRfbGVzc18yNHB4IlxuICAgICAgICA+PC9tYXQtaWNvbj5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNleHBhbmRNb3JlPlxuICAgICAgICAgIDxtYXQtaWNvbiBzdmdJY29uPSJleHBhbmRfbW9yZV8yNHB4Ij48L21hdC1pY29uPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPC9zcGFuPlxuICAgIDwvYnV0dG9uPlxuICAnLHN0eWxlVXJsczpbImNhcmRfZ3JvdXBfdG9vbGJhcl9jb21wb25lbnQuY3NzIl0sY2hhbmdlRGV0ZWN0aW9uOmpuLk9uUHVzaH1dfV0sbnVsbCx7Z3JvdXBOYW1lOlt7dHlwZTpSX31dLG51bWJlck9mQ2FyZHM6W3t0eXBlOlJffV0saXNHcm91cEV4cGFuZGVkOlt7dHlwZTpSX31dLGdyb3VwRXhwYW5zaW9uVG9nZ2xlZDpbe3R5cGU6RV99XX0pO2NsYXNzIHl5dHtjb25zdHJ1Y3Rvcih0KXt0aGlzLnN0b3JlPXQsdGhpcy5ncm91cE5hbWU9bnVsbCx0aGlzLmlzR3JvdXBFeHBhbmRlZCQ9enQoITEpfW5nT25Jbml0KCl7dGhpcy5pc0dyb3VwRXhwYW5kZWQkPW51bGwhPT10aGlzLmdyb3VwTmFtZT90aGlzLnN0b3JlLnNlbGVjdCh3eix0aGlzLmdyb3VwTmFtZSk6enQoITEpfW9uR3JvdXBFeHBhbnNpb25Ub2dnbGVkKCl7aWYobnVsbD09PXRoaXMuZ3JvdXBOYW1lKXRocm93IG5ldyBSYW5nZUVycm9yKCJJbnZhcmlhbnQgZXJyb3I6IGV4cGFuc2lvbiBjYW5ub3QgYmUgdG9nZ2xlZCB3aGVuIGdyb3VwTmFtZSBpcyBudWxsIik7dGhpcy5zdG9yZS5kaXNwYXRjaChOQSh7dGFnR3JvdXA6dGhpcy5ncm91cE5hbWV9KSl9fWZ1bmN0aW9uIF95dCh0LGUpe2lmKDEmdCYmKENmKDAsImRpdiIsMSksdmYoMSwibWV0cmljcy1jYXJkLWdyb3VwLXRvb2xiYXIiLDIpLHZmKDIsIm1ldHJpY3MtY2FyZC1ncmlkIiwzKSxNZigpKSwyJnQpe2NvbnN0IHQ9ZS4kaW1wbGljaXQsbj16ZigpO0RjKDEpLGJmKCJudW1iZXJPZkNhcmRzIix0Lml0ZW1zLmxlbmd0aCkoImdyb3VwTmFtZSIsdC5ncm91cE5hbWUpLERjKDEpLGJmKCJjYXJkSWRzV2l0aE1ldGFkYXRhIix0Lml0ZW1zKSgiY2FyZE9ic2VydmVyIixuLmNhcmRPYnNlcnZlcikoImdyb3VwTmFtZSIsdC5ncm91cE5hbWUpfX15eXQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHl5dCkoZ2YoaVMpKX0seXl0Lsm1Y21wPXNvKHt0eXBlOnl5dCxzZWxlY3RvcnM6W1sibWV0cmljcy1jYXJkLWdyb3VwLXRvb2xiYXIiXV0saW5wdXRzOntncm91cE5hbWU6Imdyb3VwTmFtZSIsbnVtYmVyT2ZDYXJkczoibnVtYmVyT2ZDYXJkcyJ9LGRlY2xzOjIsdmFyczo1LGNvbnN0czpbWzMsIm51bWJlck9mQ2FyZHMiLCJpc0dyb3VwRXhwYW5kZWQiLCJncm91cE5hbWUiLCJncm91cEV4cGFuc2lvblRvZ2dsZWQiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKENmKDAsIm1ldHJpY3MtY2FyZC1ncm91cC10b29sYmFyLWNvbXBvbmVudCIsMCksUmYoImdyb3VwRXhwYW5zaW9uVG9nZ2xlZCIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5vbkdyb3VwRXhwYW5zaW9uVG9nZ2xlZCgpfSkpLF95KDEsImFzeW5jIiksTWYoKSksMiZlJiZiZigibnVtYmVyT2ZDYXJkcyIsbi5udW1iZXJPZkNhcmRzKSgiaXNHcm91cEV4cGFuZGVkIixDeSgxLDMsbi5pc0dyb3VwRXhwYW5kZWQkKSkoImdyb3VwTmFtZSIsbi5ncm91cE5hbWUpfSxkaXJlY3RpdmVzOltieXRdLHBpcGVzOltWdl0sZW5jYXBzdWxhdGlvbjoyLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYih5eXQsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoibWV0cmljcy1jYXJkLWdyb3VwLXRvb2xiYXIiLHRlbXBsYXRlOidcbiAgICA8bWV0cmljcy1jYXJkLWdyb3VwLXRvb2xiYXItY29tcG9uZW50XG4gICAgICBbbnVtYmVyT2ZDYXJkc109Im51bWJlck9mQ2FyZHMiXG4gICAgICBbaXNHcm91cEV4cGFuZGVkXT0iaXNHcm91cEV4cGFuZGVkJCB8IGFzeW5jIlxuICAgICAgW2dyb3VwTmFtZV09Imdyb3VwTmFtZSJcbiAgICAgIChncm91cEV4cGFuc2lvblRvZ2dsZWQpPSJvbkdyb3VwRXhwYW5zaW9uVG9nZ2xlZCgpIlxuICAgID48L21ldHJpY3MtY2FyZC1ncm91cC10b29sYmFyLWNvbXBvbmVudD5cbiAgJyxjaGFuZ2VEZXRlY3Rpb246am4uT25QdXNofV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6aVN9XX0pLHtncm91cE5hbWU6W3t0eXBlOlJffV0sbnVtYmVyT2ZDYXJkczpbe3R5cGU6Ul99XX0pO2NsYXNzIEN5dHtjb25zdHJ1Y3Rvcigpe3RoaXMuUGx1Z2luVHlwZT1LVH10cmFja0J5R3JvdXAodCxlKXtyZXR1cm4gZS5ncm91cE5hbWV9fUN5dC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8Q3l0KX0sQ3l0Lsm1Y21wPXNvKHt0eXBlOkN5dCxzZWxlY3RvcnM6W1sibWV0cmljcy1jYXJkLWdyb3Vwcy1jb21wb25lbnQiXV0saW5wdXRzOntjYXJkR3JvdXBzOiJjYXJkR3JvdXBzIixjYXJkT2JzZXJ2ZXI6ImNhcmRPYnNlcnZlciJ9LGRlY2xzOjEsdmFyczoyLGNvbnN0czpbWyJjbGFzcyIsImNhcmQtZ3JvdXAiLDQsIm5nRm9yIiwibmdGb3JPZiIsIm5nRm9yVHJhY2tCeSJdLFsxLCJjYXJkLWdyb3VwIl0sWzMsIm51bWJlck9mQ2FyZHMiLCJncm91cE5hbWUiXSxbMywiY2FyZElkc1dpdGhNZXRhZGF0YSIsImNhcmRPYnNlcnZlciIsImdyb3VwTmFtZSJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiZIbSgwLF95dCwzLDUsImRpdiIsMCksMiZlJiZiZigibmdGb3JPZiIsbi5jYXJkR3JvdXBzKSgibmdGb3JUcmFja0J5IixuLnRyYWNrQnlHcm91cCl9LGRpcmVjdGl2ZXM6W3h2LHl5dCxheXRdLHN0eWxlczpbJy5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjlweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHh9Lm1hdC1oMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaGVhZGxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDI0cHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTVweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWg2W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1ib2R5LXN0cm9uZ1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYXJkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FyZC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MjRweH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNhbGVuZGFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZGlhbG9nLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVlbSAwO2JvcmRlci10b3A6Ljg0Mzc1ZW0gc29saWQgdHJhbnNwYXJlbnR9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17dG9wOi0wLjg0Mzc1ZW07cGFkZGluZy10b3A6Ljg0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6NzUlO21hcmdpbi10b3A6LjY2NjY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS43OTE2NjY2NjY3ZW0pfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjQzNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDJweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIzZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4yODEyNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LjU0MTY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS42NjY2NjY2NjY3ZW0pfUBtZWRpYSBwcmludHsubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjJlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjFlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyZW0pIHNjYWxlKDAuNzUpfX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouMjVlbSAwIC43NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjA5Mzc1ZW07bWFyZ2luLXRvcDotMC41ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoxZW0gMCAxZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuODQzNzVlbTttYXJnaW4tdG9wOi0wLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMiksIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fWlucHV0Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi0wLjA2MjVlbX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHh9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtfS5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1zdGVwLXN1Yi1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6bm9ybWFsfS5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1zdGVwLWxhYmVsLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10YWItZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MH0ubWF0LXRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTBweDtwYWRkaW5nLXRvcDo2cHg7cGFkZGluZy1ib3R0b206NnB4fS5tYXQtdG9vbHRpcC1oYW5kc2V0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4fS5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtc2ltcGxlLXNuYWNrYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHh9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoxO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjE0cHh9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV06bm90KDplbXB0eSl7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9Lm1hdC1yaXBwbGUubWF0LXJpcHBsZS11bmJvdW5kZWRbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OnZpc2libGV9Lm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJhZGl1czo1MCU7cG9pbnRlci1ldmVudHM6bm9uZTt0cmFuc2l0aW9uOm9wYWNpdHksdHJhbnNmb3JtIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTt0cmFuc2Zvcm06c2NhbGUoMCl9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9LmNkay12aXN1YWxseS1oaWRkZW5bX25nY29udGVudC0lQ09NUCVde2JvcmRlcjowO2NsaXA6cmVjdCgwIDAgMCAwKTtoZWlnaHQ6MXB4O21hcmdpbjotMXB4O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4O3doaXRlLXNwYWNlOm5vd3JhcDtvdXRsaW5lOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0sIC5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cG9pbnRlci1ldmVudHM6bm9uZTt0b3A6MDtsZWZ0OjA7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV06ZW1wdHl7ZGlzcGxheTpub25lfS5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktcGFuZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6YXV0bztib3gtc2l6aW5nOmJvcmRlci1ib3g7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDttYXgtd2lkdGg6MTAwJTttYXgtaGVpZ2h0OjEwMCV9LmNkay1vdmVybGF5LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDt6LWluZGV4OjEwMDA7cG9pbnRlci1ldmVudHM6YXV0bzstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnQ7dHJhbnNpdGlvbjpvcGFjaXR5IDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpO29wYWNpdHk6MH0uY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eToxfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6LjZ9LmNkay1vdmVybGF5LWRhcmstYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMzIpfS5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV0sIC5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWNvbm5lY3RlZC1wb3NpdGlvbi1ib3VuZGluZy1ib3hbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO21pbi13aWR0aDoxcHg7bWluLWhlaWdodDoxcHh9LmNkay1nbG9iYWwtc2Nyb2xsYmxvY2tbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3dpZHRoOjEwMCU7b3ZlcmZsb3cteTpzY3JvbGx9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplW19uZ2NvbnRlbnQtJUNPTVAlXXtyZXNpemU6bm9uZX10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDphdXRvICFpbXBvcnRhbnQ7b3ZlcmZsb3c6aGlkZGVuICFpbXBvcnRhbnR9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZy1maXJlZm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDowICFpbXBvcnRhbnR9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydHt9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmR7fS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGx7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0IDBzIDFtc30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOi13ZWJraXQtYXV0b2ZpbGwpe2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmQgMHMgMW1zfS5tYXQtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LW1kYy1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfVtfbmdob3N0LSVDT01QJV0gICAuZ3JvdXAtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmZmO2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNlYmViZWI7YWxpZ24taXRlbXM6Y2VudGVyO2JhY2tncm91bmQtY29sb3I6I2ZmZjtkaXNwbGF5OmZsZXg7ZmxleDpub25lO2hlaWdodDo0MnB4O21hcmdpbi1ib3R0b206LTFweDtwYWRkaW5nOjAgMTZweDtwb3NpdGlvbjpzdGlja3k7dG9wOjA7ei1pbmRleDoxO2JveC1zaGFkb3c6MHB4IDJweCA0cHggMHB4IHJnYmEoMCwwLDAsLjE1KX1ib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAuZ3JvdXAtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojMzAzMDMwfWJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5ncm91cC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjNTU1fWJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5ncm91cC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAycHggNHB4IDBweCByZ2JhKDI1NSwyNTUsMjU1LC4xNSl9J10sY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKEN5dCxbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJtZXRyaWNzLWNhcmQtZ3JvdXBzLWNvbXBvbmVudCIsdGVtcGxhdGU6J1xuICAgIDxkaXZcbiAgICAgICpuZ0Zvcj0ibGV0IGdyb3VwIG9mIGNhcmRHcm91cHM7IHRyYWNrQnk6IHRyYWNrQnlHcm91cCJcbiAgICAgIGNsYXNzPSJjYXJkLWdyb3VwIlxuICAgID5cbiAgICAgIDxtZXRyaWNzLWNhcmQtZ3JvdXAtdG9vbGJhclxuICAgICAgICBbbnVtYmVyT2ZDYXJkc109Imdyb3VwLml0ZW1zLmxlbmd0aCJcbiAgICAgICAgW2dyb3VwTmFtZV09Imdyb3VwLmdyb3VwTmFtZSJcbiAgICAgID48L21ldHJpY3MtY2FyZC1ncm91cC10b29sYmFyPlxuICAgICAgPG1ldHJpY3MtY2FyZC1ncmlkXG4gICAgICAgIFtjYXJkSWRzV2l0aE1ldGFkYXRhXT0iZ3JvdXAuaXRlbXMiXG4gICAgICAgIFtjYXJkT2JzZXJ2ZXJdPSJjYXJkT2JzZXJ2ZXIiXG4gICAgICAgIFtncm91cE5hbWVdPSJncm91cC5ncm91cE5hbWUiXG4gICAgICA+PC9tZXRyaWNzLWNhcmQtZ3JpZD5cbiAgICA8L2Rpdj5cbiAgJyxzdHlsZVVybHM6WyJjYXJkX2dyb3Vwc19jb21wb25lbnQuY3NzIl0sY2hhbmdlRGV0ZWN0aW9uOmpuLk9uUHVzaH1dfV0sbnVsbCx7Y2FyZEdyb3Vwczpbe3R5cGU6Ul99XSxjYXJkT2JzZXJ2ZXI6W3t0eXBlOlJffV19KTtjbGFzcyBNeXR7Y29uc3RydWN0b3IodCl7dGhpcy5zdG9yZT10LHRoaXMuY2FyZEdyb3VwcyQ9dGhpcy5zdG9yZS5zZWxlY3QoZnl0KS5waXBlKF9lKHRoaXMuc3RvcmUuc2VsZWN0KEF6KSksVnQoKChbdCxlXSk9PmUuc2l6ZT90LmZpbHRlcigodD0+ZS5oYXModC5wbHVnaW4pKSk6dCkpLFZ0KCh0PT5aJCh0KSkpKX19ZnVuY3Rpb24gdnl0KHQsZSl7aWYoMSZ0JiYoQ2YoMCwic3BhbiIpLFB1KDEpLE1mKCkpLDImdCl7Y29uc3QgdD16ZigpO0RjKDEpLGt1KCIgYW5kICIsdC5nZXRQbHVnaW5UeXBlRmlsdGVyU3RyaW5nKHQucGx1Z2luVHlwZXMpLCIgdmlzdWFsaXphdGlvbiBmaWx0ZXIiKX19TXl0Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxNeXQpKGdmKGlTKSl9LE15dC7JtWNtcD1zbyh7dHlwZTpNeXQsc2VsZWN0b3JzOltbIm1ldHJpY3MtY2FyZC1ncm91cHMiXV0saW5wdXRzOntjYXJkT2JzZXJ2ZXI6ImNhcmRPYnNlcnZlciJ9LGRlY2xzOjIsdmFyczo0LGNvbnN0czpbWzMsImNhcmRHcm91cHMiLCJjYXJkT2JzZXJ2ZXIiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKHZmKDAsIm1ldHJpY3MtY2FyZC1ncm91cHMtY29tcG9uZW50IiwwKSxfeSgxLCJhc3luYyIpKSwyJmUmJmJmKCJjYXJkR3JvdXBzIixDeSgxLDIsbi5jYXJkR3JvdXBzJCkpKCJjYXJkT2JzZXJ2ZXIiLG4uY2FyZE9ic2VydmVyKX0sZGlyZWN0aXZlczpbQ3l0XSxwaXBlczpbVnZdLGVuY2Fwc3VsYXRpb246MixjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoTXl0LFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6Im1ldHJpY3MtY2FyZC1ncm91cHMiLHRlbXBsYXRlOidcbiAgICA8bWV0cmljcy1jYXJkLWdyb3Vwcy1jb21wb25lbnRcbiAgICAgIFtjYXJkR3JvdXBzXT0iY2FyZEdyb3VwcyQgfCBhc3luYyJcbiAgICAgIFtjYXJkT2JzZXJ2ZXJdPSJjYXJkT2JzZXJ2ZXIiXG4gICAgPjwvbWV0cmljcy1jYXJkLWdyb3Vwcy1jb21wb25lbnQ+XG4gICcsY2hhbmdlRGV0ZWN0aW9uOmpuLk9uUHVzaH1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmlTfV19KSx7Y2FyZE9ic2VydmVyOlt7dHlwZTpSX31dfSk7Y2xhc3MgeHl0e2NvbnN0cnVjdG9yKCl7dGhpcy5QbHVnaW5UeXBlPUtULHRoaXMubGlzdEZvcm1hdHRlcj1uZXcgSW50bC5MaXN0Rm9ybWF0KHZvaWQgMCx7c3R5bGU6ImxvbmciLHR5cGU6ImRpc2p1bmN0aW9uIn0pfWdldFBsdWdpblR5cGVGaWx0ZXJTdHJpbmcodCl7Y29uc3QgZT1bLi4udF0ubWFwKCh0PT57c3dpdGNoKHQpe2Nhc2UgS1QuU0NBTEFSUzpyZXR1cm4ic2NhbGFyIjtjYXNlIEtULklNQUdFUzpyZXR1cm4iaW1hZ2UiO2Nhc2UgS1QuSElTVE9HUkFNUzpyZXR1cm4iaGlzdG9ncmFtIjtkZWZhdWx0OnRocm93IG5ldyBSYW5nZUVycm9yKGBQbGVhc2UgaW1wbGVtZW50IGh1bWFuIHJlYWRhYmxlIG5hbWUgZm9yIHBsdWdpbiB0eXBlOiAke3R9YCl9fSkpO3JldHVybiB0aGlzLmxpc3RGb3JtYXR0ZXIuZm9ybWF0KGUpfX14eXQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHh5dCl9LHh5dC7JtWNtcD1zbyh7dHlwZTp4eXQsc2VsZWN0b3JzOltbIm1ldHJpY3MtZW1wdHktdGFnLW1hdGNoLWNvbXBvbmVudCJdXSxpbnB1dHM6e3BsdWdpblR5cGVzOiJwbHVnaW5UeXBlcyIsdGFnRmlsdGVyUmVnZXg6InRhZ0ZpbHRlclJlZ2V4Iix0YWdDb3VudHM6InRhZ0NvdW50cyJ9LGRlY2xzOjYsdmFyczo1LGNvbnN0czpbWzQsIm5nSWYiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKFB1KDAsIk5vIG1hdGNoZXMgZm9yIHRhZyBmaWx0ZXIgIiksQ2YoMSwiY29kZSIpLFB1KDIpLE1mKCksSG0oMyx2eXQsMiwxLCJzcGFuIiwwKSxQdSg0KSxfeSg1LCJudW1iZXIiKSksMiZlJiYoRGMoMiksa3UoIi8iLG4udGFnRmlsdGVyUmVnZXgsIi8iKSxEYygxKSxiZigibmdJZiIsbi5wbHVnaW5UeXBlcy5zaXplKSxEYygxKSxrdSgiIG91dCBvZiAiLEN5KDUsMyxuLnRhZ0NvdW50cyksIiB0YWdzLiIpKX0sZGlyZWN0aXZlczpbUHZdLHBpcGVzOlskdl0sZW5jYXBzdWxhdGlvbjoyLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYih4eXQsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoibWV0cmljcy1lbXB0eS10YWctbWF0Y2gtY29tcG9uZW50Iix0ZW1wbGF0ZTonTm8gbWF0Y2hlcyBmb3IgdGFnIGZpbHRlciA8Y29kZT4ve3sgdGFnRmlsdGVyUmVnZXggfX0vPC9jb2RlXG4gICAgPjxzcGFuICpuZ0lmPSJwbHVnaW5UeXBlcy5zaXplIj5cbiAgICAgIGFuZCB7eyBnZXRQbHVnaW5UeXBlRmlsdGVyU3RyaW5nKHBsdWdpblR5cGVzKSB9fSB2aXN1YWxpemF0aW9uXG4gICAgICBmaWx0ZXI8L3NwYW5cbiAgICA+XG4gICAgb3V0IG9mIHt7IHRhZ0NvdW50cyB8IG51bWJlciB9fSB0YWdzLicsY2hhbmdlRGV0ZWN0aW9uOmpuLk9uUHVzaH1dfV0sbnVsbCx7cGx1Z2luVHlwZXM6W3t0eXBlOlJffV0sdGFnRmlsdGVyUmVnZXg6W3t0eXBlOlJffV0sdGFnQ291bnRzOlt7dHlwZTpSX31dfSk7Y2xhc3MgT3l0e2NvbnN0cnVjdG9yKHQpe3RoaXMuc3RvcmU9dCx0aGlzLnBsdWdpblR5cGVzJD10aGlzLnN0b3JlLnNlbGVjdChBeiksdGhpcy50YWdGaWx0ZXJSZWdleCQ9dGhpcy5zdG9yZS5zZWxlY3QoUHopLHRoaXMudGFnQ291bnRzJD10aGlzLnN0b3JlLnNlbGVjdChmeXQpLnBpcGUoVnQoKHQ9Pm5ldyBTZXQodC5tYXAoKCh7dGFnOnR9KT0+dCkpKS5zaXplKSkpfX1mdW5jdGlvbiBQeXQodCxlKXtpZigxJnQmJihDZigwLCJzcGFuIiw2KSxQdSgxKSxfeSgyLCJudW1iZXIiKSxNZigpKSwyJnQpe2NvbnN0IHQ9emYoKTtEYygxKSxrdSgiIixDeSgyLDEsdC5jYXJkSWRzV2l0aE1ldGFkYXRhLmxlbmd0aCksIiBjYXJkcyIpfX1mdW5jdGlvbiB3eXQodCxlKXsxJnQmJnZmKDAsIm1ldHJpY3MtZW1wdHktdGFnLW1hdGNoIiw3KX1PeXQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fE95dCkoZ2YoaVMpKX0sT3l0Lsm1Y21wPXNvKHt0eXBlOk95dCxzZWxlY3RvcnM6W1sibWV0cmljcy1lbXB0eS10YWctbWF0Y2giXV0sZGVjbHM6NCx2YXJzOjksY29uc3RzOltbMywicGx1Z2luVHlwZXMiLCJ0YWdGaWx0ZXJSZWdleCIsInRhZ0NvdW50cyJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYodmYoMCwibWV0cmljcy1lbXB0eS10YWctbWF0Y2gtY29tcG9uZW50IiwwKSxfeSgxLCJhc3luYyIpLF95KDIsImFzeW5jIiksX3koMywiYXN5bmMiKSksMiZlJiZiZigicGx1Z2luVHlwZXMiLEN5KDEsMyxuLnBsdWdpblR5cGVzJCkpKCJ0YWdGaWx0ZXJSZWdleCIsQ3koMiw1LG4udGFnRmlsdGVyUmVnZXgkKSkoInRhZ0NvdW50cyIsQ3koMyw3LG4udGFnQ291bnRzJCkpfSxkaXJlY3RpdmVzOlt4eXRdLHBpcGVzOltWdl0sZW5jYXBzdWxhdGlvbjoyLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihPeXQsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoibWV0cmljcy1lbXB0eS10YWctbWF0Y2giLHRlbXBsYXRlOidcbiAgICA8bWV0cmljcy1lbXB0eS10YWctbWF0Y2gtY29tcG9uZW50XG4gICAgICBbcGx1Z2luVHlwZXNdPSJwbHVnaW5UeXBlcyQgfCBhc3luYyJcbiAgICAgIFt0YWdGaWx0ZXJSZWdleF09InRhZ0ZpbHRlclJlZ2V4JCB8IGFzeW5jIlxuICAgICAgW3RhZ0NvdW50c109InRhZ0NvdW50cyQgfCBhc3luYyJcbiAgICA+PC9tZXRyaWNzLWVtcHR5LXRhZy1tYXRjaC1jb21wb25lbnQ+XG4gICcsY2hhbmdlRGV0ZWN0aW9uOmpuLk9uUHVzaH1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmlTfV19KSxudWxsKTtjbGFzcyBreXR7fWt5dC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8a3l0KX0sa3l0Lsm1Y21wPXNvKHt0eXBlOmt5dCxzZWxlY3RvcnM6W1sibWV0cmljcy1maWx0ZXJlZC12aWV3LWNvbXBvbmVudCJdXSxpbnB1dHM6e2lzRW1wdHlNYXRjaDoiaXNFbXB0eU1hdGNoIixjYXJkT2JzZXJ2ZXI6ImNhcmRPYnNlcnZlciIsY2FyZElkc1dpdGhNZXRhZGF0YToiY2FyZElkc1dpdGhNZXRhZGF0YSJ9LGRlY2xzOjcsdmFyczo0LGNvbnN0czpbWzEsImdyb3VwLXRvb2xiYXIiXSxbMSwiZ3JvdXAtdGV4dCJdLFsiYXJpYS1yb2xlIiwiaGVhZGluZyIsImFyaWEtbGV2ZWwiLCIzIiwxLCJncm91cC10aXRsZSJdLFsiY2xhc3MiLCJncm91cC1jYXJkLWNvdW50Iiw0LCJuZ0lmIl0sWyJjbGFzcyIsIndhcm4iLDQsIm5nSWYiXSxbMywiY2FyZElkc1dpdGhNZXRhZGF0YSIsImNhcmRPYnNlcnZlciJdLFsxLCJncm91cC1jYXJkLWNvdW50Il0sWzEsIndhcm4iXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKENmKDAsImRpdiIsMCksQ2YoMSwic3BhbiIsMSksQ2YoMiwic3BhbiIsMiksUHUoMywiVGFncyBtYXRjaGluZyBmaWx0ZXIiKSxNZigpLEhtKDQsUHl0LDMsMywic3BhbiIsMyksTWYoKSxNZigpLEhtKDUsd3l0LDEsMCwibWV0cmljcy1lbXB0eS10YWctbWF0Y2giLDQpLHZmKDYsIm1ldHJpY3MtY2FyZC1ncmlkIiw1KSksMiZlJiYoRGMoNCksYmYoIm5nSWYiLG4uY2FyZElkc1dpdGhNZXRhZGF0YS5sZW5ndGg+MSksRGMoMSksYmYoIm5nSWYiLG4uaXNFbXB0eU1hdGNoKSxEYygxKSxiZigiY2FyZElkc1dpdGhNZXRhZGF0YSIsbi5jYXJkSWRzV2l0aE1ldGFkYXRhKSgiY2FyZE9ic2VydmVyIixuLmNhcmRPYnNlcnZlcikpfSxkaXJlY3RpdmVzOltQdixheXQsT3l0XSxwaXBlczpbJHZdLHN0eWxlczpbJy5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjlweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHh9Lm1hdC1oMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaGVhZGxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDI0cHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTVweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWg2W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1ib2R5LXN0cm9uZ1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYXJkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FyZC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MjRweH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNhbGVuZGFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZGlhbG9nLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVlbSAwO2JvcmRlci10b3A6Ljg0Mzc1ZW0gc29saWQgdHJhbnNwYXJlbnR9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17dG9wOi0wLjg0Mzc1ZW07cGFkZGluZy10b3A6Ljg0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6NzUlO21hcmdpbi10b3A6LjY2NjY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS43OTE2NjY2NjY3ZW0pfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjQzNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDJweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIzZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4yODEyNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LjU0MTY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS42NjY2NjY2NjY3ZW0pfUBtZWRpYSBwcmludHsubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjJlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjFlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyZW0pIHNjYWxlKDAuNzUpfX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouMjVlbSAwIC43NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjA5Mzc1ZW07bWFyZ2luLXRvcDotMC41ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoxZW0gMCAxZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuODQzNzVlbTttYXJnaW4tdG9wOi0wLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMiksIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fWlucHV0Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi0wLjA2MjVlbX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHh9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtfS5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1zdGVwLXN1Yi1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6bm9ybWFsfS5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1zdGVwLWxhYmVsLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10YWItZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MH0ubWF0LXRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTBweDtwYWRkaW5nLXRvcDo2cHg7cGFkZGluZy1ib3R0b206NnB4fS5tYXQtdG9vbHRpcC1oYW5kc2V0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4fS5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtc2ltcGxlLXNuYWNrYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHh9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoxO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjE0cHh9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV06bm90KDplbXB0eSl7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9Lm1hdC1yaXBwbGUubWF0LXJpcHBsZS11bmJvdW5kZWRbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OnZpc2libGV9Lm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJhZGl1czo1MCU7cG9pbnRlci1ldmVudHM6bm9uZTt0cmFuc2l0aW9uOm9wYWNpdHksdHJhbnNmb3JtIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTt0cmFuc2Zvcm06c2NhbGUoMCl9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9LmNkay12aXN1YWxseS1oaWRkZW5bX25nY29udGVudC0lQ09NUCVde2JvcmRlcjowO2NsaXA6cmVjdCgwIDAgMCAwKTtoZWlnaHQ6MXB4O21hcmdpbjotMXB4O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4O3doaXRlLXNwYWNlOm5vd3JhcDtvdXRsaW5lOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0sIC5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cG9pbnRlci1ldmVudHM6bm9uZTt0b3A6MDtsZWZ0OjA7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV06ZW1wdHl7ZGlzcGxheTpub25lfS5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktcGFuZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6YXV0bztib3gtc2l6aW5nOmJvcmRlci1ib3g7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDttYXgtd2lkdGg6MTAwJTttYXgtaGVpZ2h0OjEwMCV9LmNkay1vdmVybGF5LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDt6LWluZGV4OjEwMDA7cG9pbnRlci1ldmVudHM6YXV0bzstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnQ7dHJhbnNpdGlvbjpvcGFjaXR5IDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpO29wYWNpdHk6MH0uY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eToxfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6LjZ9LmNkay1vdmVybGF5LWRhcmstYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMzIpfS5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV0sIC5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWNvbm5lY3RlZC1wb3NpdGlvbi1ib3VuZGluZy1ib3hbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO21pbi13aWR0aDoxcHg7bWluLWhlaWdodDoxcHh9LmNkay1nbG9iYWwtc2Nyb2xsYmxvY2tbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3dpZHRoOjEwMCU7b3ZlcmZsb3cteTpzY3JvbGx9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplW19uZ2NvbnRlbnQtJUNPTVAlXXtyZXNpemU6bm9uZX10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDphdXRvICFpbXBvcnRhbnQ7b3ZlcmZsb3c6aGlkZGVuICFpbXBvcnRhbnR9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZy1maXJlZm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDowICFpbXBvcnRhbnR9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydHt9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmR7fS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGx7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0IDBzIDFtc30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOi13ZWJraXQtYXV0b2ZpbGwpe2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmQgMHMgMW1zfS5tYXQtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LW1kYy1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfVtfbmdob3N0LSVDT01QJV0gICAuZ3JvdXAtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmZmO2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNlYmViZWI7YWxpZ24taXRlbXM6Y2VudGVyO2JhY2tncm91bmQtY29sb3I6I2ZmZjtkaXNwbGF5OmZsZXg7ZmxleDpub25lO2hlaWdodDo0MnB4O21hcmdpbi1ib3R0b206LTFweDtwYWRkaW5nOjAgMTZweDtwb3NpdGlvbjpzdGlja3k7dG9wOjA7ei1pbmRleDoxO2JveC1zaGFkb3c6MHB4IDJweCA0cHggMHB4IHJnYmEoMCwwLDAsLjE1KX1ib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAuZ3JvdXAtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojMzAzMDMwfWJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5ncm91cC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjNTU1fWJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5ncm91cC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAycHggNHB4IDBweCByZ2JhKDI1NSwyNTUsMjU1LC4xNSl9Lmdyb3VwLXRleHRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpiYXNlbGluZX0uZ3JvdXAtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0uZ3JvdXAtY2FyZC1jb3VudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NDAwO2NvbG9yOiM2MTYxNjE7bWFyZ2luLWxlZnQ6NnB4fWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC5ncm91cC1jYXJkLWNvdW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLmdyb3VwLWNhcmQtY291bnRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjcpfW1ldHJpY3MtZW1wdHktdGFnLW1hdGNoW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtc3R5bGU6aXRhbGljO3BhZGRpbmc6MTZweDt0ZXh0LWFsaWduOmNlbnRlcjtkaXNwbGF5OmJsb2NrfWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIG1ldHJpY3MtZW1wdHktdGFnLW1hdGNoW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgbWV0cmljcy1lbXB0eS10YWctbWF0Y2hbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjcpfSddLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihreXQsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoibWV0cmljcy1maWx0ZXJlZC12aWV3LWNvbXBvbmVudCIsdGVtcGxhdGU6J1xuICAgIDxkaXYgY2xhc3M9Imdyb3VwLXRvb2xiYXIiPlxuICAgICAgPHNwYW4gY2xhc3M9Imdyb3VwLXRleHQiPlxuICAgICAgICA8c3BhbiBjbGFzcz0iZ3JvdXAtdGl0bGUiIGFyaWEtcm9sZT0iaGVhZGluZyIgYXJpYS1sZXZlbD0iMyJcbiAgICAgICAgICA+VGFncyBtYXRjaGluZyBmaWx0ZXI8L3NwYW5cbiAgICAgICAgPlxuICAgICAgICA8c3BhbiAqbmdJZj0iY2FyZElkc1dpdGhNZXRhZGF0YS5sZW5ndGggPiAxIiBjbGFzcz0iZ3JvdXAtY2FyZC1jb3VudCJcbiAgICAgICAgICA+e3sgY2FyZElkc1dpdGhNZXRhZGF0YS5sZW5ndGggfCBudW1iZXIgfX0gY2FyZHM8L3NwYW5cbiAgICAgICAgPlxuICAgICAgPC9zcGFuPlxuICAgIDwvZGl2PlxuICAgIDxtZXRyaWNzLWVtcHR5LXRhZy1tYXRjaFxuICAgICAgKm5nSWY9ImlzRW1wdHlNYXRjaCJcbiAgICAgIGNsYXNzPSJ3YXJuIlxuICAgID48L21ldHJpY3MtZW1wdHktdGFnLW1hdGNoPlxuICAgIDxtZXRyaWNzLWNhcmQtZ3JpZFxuICAgICAgW2NhcmRJZHNXaXRoTWV0YWRhdGFdPSJjYXJkSWRzV2l0aE1ldGFkYXRhIlxuICAgICAgW2NhcmRPYnNlcnZlcl09ImNhcmRPYnNlcnZlciJcbiAgICA+PC9tZXRyaWNzLWNhcmQtZ3JpZD5cbiAgJyxzdHlsZVVybHM6WyJmaWx0ZXJlZF92aWV3X2NvbXBvbmVudC5jc3MiXSxjaGFuZ2VEZXRlY3Rpb246am4uT25QdXNofV19XSxudWxsLHtpc0VtcHR5TWF0Y2g6W3t0eXBlOlJffV0sY2FyZE9ic2VydmVyOlt7dHlwZTpSX31dLGNhcmRJZHNXaXRoTWV0YWRhdGE6W3t0eXBlOlJffV19KTtjbGFzcyBTeXR7Y29uc3RydWN0b3IodCl7dGhpcy5zdG9yZT10LHRoaXMuY2FyZElkc1dpdGhNZXRhZGF0YSQ9dGhpcy5zdG9yZS5zZWxlY3QoZnl0KS5waXBlKF9lKHRoaXMuc3RvcmUuc2VsZWN0KEF6KSksVnQoKChbdCxlXSk9PmUuc2l6ZT90LmZpbHRlcigodD0+ZS5oYXModC5wbHVnaW4pKSk6dCkpLF9lKHRoaXMuc3RvcmUuc2VsZWN0KFB6KSksQ2UoMjAwKSxWdCgoKFt0LGVdKT0+e3RyeXtyZXR1cm57Y2FyZExpc3Q6dCxyZWdleDpuZXcgUmVnRXhwKGUsImkiKX19Y2F0Y2goZSl7cmV0dXJue2NhcmRMaXN0OnQscmVnZXg6bnVsbH19fSkpLHVlKCgoe3JlZ2V4OnR9KT0+bnVsbCE9PXQpKSxWdCgoKHtjYXJkTGlzdDp0LHJlZ2V4OmV9KT0+dC5maWx0ZXIoKCh7dGFnOnR9KT0+ZS50ZXN0KHQpKSkpKSx3ZSgoKHQsZSk9PnQubGVuZ3RoPT09ZS5sZW5ndGgmJnQuZXZlcnkoKCh0LG4pPT50LmNhcmRJZD09PWVbbl0uY2FyZElkKSkpKSxJZSgpLEJlKFtdKSksdGhpcy5pc0VtcHR5TWF0Y2gkPXRoaXMuY2FyZElkc1dpdGhNZXRhZGF0YSQucGlwZShfZSh0aGlzLnN0b3JlLnNlbGVjdChmeXQpKSxWdCgoKFt0LGVdKT0+Qm9vbGVhbihlLmxlbmd0aCkmJjA9PT10Lmxlbmd0aCkpKX19ZnVuY3Rpb24gRHl0KHQsZSl7aWYoMSZ0JiYoQ2YoMCwibWF0LW9wdGlvbiIsMiksUHUoMSksTWYoKSksMiZ0KXtjb25zdCB0PWUuJGltcGxpY2l0O2JmKCJ2YWx1ZSIsdC52YWx1ZSkoImRpc2FibGVkIix0LmRpc2FibGVkKSxEYygxKSxrdSgiICIsdC5kaXNwbGF5VGV4dCwiICIpfX1TeXQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFN5dCkoZ2YoaVMpKX0sU3l0Lsm1Y21wPXNvKHt0eXBlOlN5dCxzZWxlY3RvcnM6W1sibWV0cmljcy1maWx0ZXJlZC12aWV3Il1dLGlucHV0czp7Y2FyZE9ic2VydmVyOiJjYXJkT2JzZXJ2ZXIifSxkZWNsczozLHZhcnM6Nyxjb25zdHM6W1szLCJpc0VtcHR5TWF0Y2giLCJjYXJkSWRzV2l0aE1ldGFkYXRhIiwiY2FyZE9ic2VydmVyIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJih2ZigwLCJtZXRyaWNzLWZpbHRlcmVkLXZpZXctY29tcG9uZW50IiwwKSxfeSgxLCJhc3luYyIpLF95KDIsImFzeW5jIikpLDImZSYmYmYoImlzRW1wdHlNYXRjaCIsQ3koMSwzLG4uaXNFbXB0eU1hdGNoJCkpKCJjYXJkSWRzV2l0aE1ldGFkYXRhIixDeSgyLDUsbi5jYXJkSWRzV2l0aE1ldGFkYXRhJCkpKCJjYXJkT2JzZXJ2ZXIiLG4uY2FyZE9ic2VydmVyKX0sZGlyZWN0aXZlczpba3l0XSxwaXBlczpbVnZdLGVuY2Fwc3VsYXRpb246MixjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoU3l0LFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6Im1ldHJpY3MtZmlsdGVyZWQtdmlldyIsdGVtcGxhdGU6J1xuICAgIDxtZXRyaWNzLWZpbHRlcmVkLXZpZXctY29tcG9uZW50XG4gICAgICBbaXNFbXB0eU1hdGNoXT0iaXNFbXB0eU1hdGNoJCB8IGFzeW5jIlxuICAgICAgW2NhcmRJZHNXaXRoTWV0YWRhdGFdPSJjYXJkSWRzV2l0aE1ldGFkYXRhJCB8IGFzeW5jIlxuICAgICAgW2NhcmRPYnNlcnZlcl09ImNhcmRPYnNlcnZlciJcbiAgICA+PC9tZXRyaWNzLWZpbHRlcmVkLXZpZXctY29tcG9uZW50PlxuICAnLGNoYW5nZURldGVjdGlvbjpqbi5PblB1c2h9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTppU31dfSkse2NhcmRPYnNlcnZlcjpbe3R5cGU6Ul99XX0pO2NsYXNzIFJ5dHtjb25zdHJ1Y3Rvcigpe3RoaXMudmFsdWU9IiIsdGhpcy5vcHRpb25zPVtdLHRoaXMuc2VsZWN0aW9uQ2hhbmdlPW5ldyBTeX19ZnVuY3Rpb24gRXl0KHQsZSl7aWYoMSZ0KXtjb25zdCB0PXdmKCk7Q2YoMCwiZGl2IiwyMiksQ2YoMSwiZGl2IiwyMyksUHUoMiwiQ2FyZCBXaWR0aCIpLE1mKCksQ2YoMywiZGl2IiwxMCksQ2YoNCwibWF0LXNsaWRlciIsMjQpLFJmKCJpbnB1dCIsKGZ1bmN0aW9uIGUobil7UGkodCk7cmV0dXJuIHpmKCkuY2FyZFdpZHRoU2xpZGVyQ2hhbmdlZCQuZW1pdChuLnZhbHVlKX0pKSxNZigpLENmKDUsImJ1dHRvbiIsMjUpLFJmKCJjbGljayIsKGZ1bmN0aW9uIGUoKXtQaSh0KTtyZXR1cm4gemYoKS5jYXJkV2lkdGhSZXNldC5lbWl0KCl9KSksdmYoNiwibWF0LWljb24iLDI2KSxNZigpLE1mKCksTWYoKX1pZigyJnQpe2NvbnN0IHQ9emYoKTtEYyg0KSxiZigibWF4Iix0Lk1BWF9DQVJEX1dJRFRIX1NMSURFUl9WQUxVRSkoIm1pbiIsdC5NSU5fQ0FSRF9XSURUSF9TTElERVJfVkFMVUUpKCJzdGVwIiw1MCkoInZhbHVlIix0LmNhcmRNaW5XaWR0aCkoInRodW1iTGFiZWwiLCExKX19ZnVuY3Rpb24gQXl0KHQsZSl7aWYoMSZ0KXtjb25zdCB0PXdmKCk7Q2YoMCwibWF0LXNsaWRlciIsMzIpLFJmKCJpbnB1dCIsKGZ1bmN0aW9uIGUobil7UGkodCk7cmV0dXJuIHpmKDIpLm9uU3RlcFN0YXJ0Q2hhbmdlZChuLnZhbHVlKX0pKSxNZigpfWlmKDImdCl7Y29uc3QgdD16ZigyKTtiZigiZGlzYWJsZWQiLCF0LnNlbGVjdFRpbWVFbmFibGVkKSgibWluIix0LnN0ZXBNaW5NYXgubWluKSgibWF4Iix0LnN0ZXBNaW5NYXgubWF4KSgic3RlcCIsMSkoInZhbHVlIixudWxsPT10LnNlbGVjdGVkVGltZT9udWxsOnQuc2VsZWN0ZWRUaW1lLnN0YXJ0LnN0ZXApKCJ0aHVtYkxhYmVsIiwhMCl9fWZ1bmN0aW9uIFR5dCh0LGUpe2lmKDEmdCl7Y29uc3QgdD13ZigpO0NmKDAsInRiLXJhbmdlLWlucHV0IiwzMyksUmYoInZhbHVlIiwoZnVuY3Rpb24gZShuKXtQaSh0KTtyZXR1cm4gemYoMikub25TdGVwUmFuZ2VDaGFuZ2VkKG4pfSkpLE1mKCl9aWYoMiZ0KXtjb25zdCB0PXpmKDIpO2JmKCJtaW4iLHQuc3RlcE1pbk1heC5taW4pKCJtYXgiLHQuc3RlcE1pbk1heC5tYXgpKCJsb3dlclZhbHVlIixudWxsPT10LnNlbGVjdGVkVGltZT9udWxsOnQuc2VsZWN0ZWRUaW1lLnN0YXJ0LnN0ZXApKCJ1cHBlclZhbHVlIixudWxsPT10LnNlbGVjdGVkVGltZXx8bnVsbD09dC5zZWxlY3RlZFRpbWUuZW5kP251bGw6dC5zZWxlY3RlZFRpbWUuZW5kLnN0ZXApLHltKCJkaXNhYmxlZCIsIXQuc2VsZWN0VGltZUVuYWJsZWQpfX1mdW5jdGlvbiBOeXQodCxlKXtpZigxJnQpe2NvbnN0IHQ9d2YoKTtDZigwLCJkaXYiLDI3KSxDZigxLCJsYWJlbCIpLFB1KDIsIkxpbmsgdmlzdWFsaXphdGlvbiBieSBzdGVwIiksTWYoKSxDZigzLCJkaXYiLDI4KSxDZig0LCJkaXYiKSxDZig1LCJtYXQtY2hlY2tib3giLDE2KSxSZigiY2hhbmdlIiwoZnVuY3Rpb24gZSgpe1BpKHQpO3JldHVybiB6ZigpLnNlbGVjdFRpbWVFbmFibGVUb2dnbGVkLmVtaXQoKX0pKSxQdSg2LCJFbmFibGVkIiksTWYoKSxNZigpLENmKDcsImRpdiIpLENmKDgsIm1hdC1jaGVja2JveCIsMTYpLFJmKCJjaGFuZ2UiLChmdW5jdGlvbiBlKCl7UGkodCk7cmV0dXJuIHpmKCkudXNlUmFuZ2VTZWxlY3RUaW1lVG9nZ2xlZC5lbWl0KCl9KSksUHUoOSwiVXNlIHJhbmdlIiksTWYoKSxNZigpLENmKDEwLCJkaXYiLDI5KSxIbSgxMSxBeXQsMSw2LCJtYXQtc2xpZGVyIiwzMCksSG0oMTIsVHl0LDEsNSwibmctdGVtcGxhdGUiLG51bGwsMzEscXkpLE1mKCksTWYoKSxNZigpfWlmKDImdCl7Y29uc3QgdD1GbSgxMyksZT16ZigpO0RjKDUpLGJmKCJjaGVja2VkIixlLnNlbGVjdFRpbWVFbmFibGVkKSxEYygzKSxiZigiY2hlY2tlZCIsZS51c2VSYW5nZVNlbGVjdFRpbWUpLERjKDMpLGJmKCJuZ0lmIiwhZS51c2VSYW5nZVNlbGVjdFRpbWUpKCJuZ0lmRWxzZSIsdCl9fWZ1bmN0aW9uIHp5dCh0LGUpe2lmKDEmdCl7Y29uc3QgdD13ZigpO0NmKDAsInNlY3Rpb24iLDM0KSxDZigxLCJoMyIsMSksUHUoMiwiSW1hZ2VzIiksTWYoKSxDZigzLCJkaXYiLDM1KSxDZig0LCJkaXYiLDM2KSxQdSg1LCJCcmlnaHRuZXNzIiksTWYoKSxDZig2LCJkaXYiLDEwKSxDZig3LCJtYXQtc2xpZGVyIiwzNyksUmYoImlucHV0IiwoZnVuY3Rpb24gZShuKXtQaSh0KTtyZXR1cm4gemYoKS5pbWFnZUJyaWdodG5lc3NTbGlkZXJDaGFuZ2VkJC5lbWl0KG4udmFsdWUpfSkpLE1mKCksQ2YoOCwiYnV0dG9uIiwzOCksUmYoImNsaWNrIiwoZnVuY3Rpb24gZSgpe1BpKHQpO3JldHVybiB6ZigpLmltYWdlQnJpZ2h0bmVzc1Jlc2V0LmVtaXQoKX0pKSx2Zig5LCJtYXQtaWNvbiIsMjYpLE1mKCksTWYoKSxNZigpLENmKDEwLCJkaXYiLDM5KSxDZigxMSwiZGl2Iiw0MCksUHUoMTIsIkNvbnRyYXN0IiksTWYoKSxDZigxMywiZGl2IiwxMCksQ2YoMTQsIm1hdC1zbGlkZXIiLDQxKSxSZigiaW5wdXQiLChmdW5jdGlvbiBlKG4pe1BpKHQpO3JldHVybiB6ZigpLmltYWdlQ29udHJhc3RTbGlkZXJDaGFuZ2VkJC5lbWl0KG4udmFsdWUpfSkpLE1mKCksQ2YoMTUsImJ1dHRvbiIsNDIpLFJmKCJjbGljayIsKGZ1bmN0aW9uIGUoKXtQaSh0KTtyZXR1cm4gemYoKS5pbWFnZUNvbnRyYXN0UmVzZXQuZW1pdCgpfSkpLHZmKDE2LCJtYXQtaWNvbiIsMjYpLE1mKCksTWYoKSxNZigpLENmKDE3LCJkaXYiLDQzKSxDZigxOCwibWF0LWNoZWNrYm94IiwxNiksUmYoImNoYW5nZSIsKGZ1bmN0aW9uIGUobil7UGkodCk7cmV0dXJuIHpmKCkuaW1hZ2VTaG93QWN0dWFsU2l6ZUNoYW5nZWQuZW1pdChuLmNoZWNrZWQpfSkpLFB1KDE5LCJTaG93IGFjdHVhbCBpbWFnZSBzaXplIiksTWYoKSxNZigpLE1mKCl9aWYoMiZ0KXtjb25zdCB0PXpmKCk7RGMoNyksYmYoIm1heCIsMmUzKSgibWluIiwwKSgic3RlcCIsMTApKCJ2YWx1ZSIsdC5pbWFnZUJyaWdodG5lc3NJbk1pbGxpKSgidGh1bWJMYWJlbCIsITApKCJkaXNwbGF5V2l0aCIsdC5mb3JtYXRNaWxsaVRvWmVyb3RoKSxEYyg3KSxiZigibWF4Iiw1ZTMpKCJtaW4iLDApKCJzdGVwIiwxMCkoInZhbHVlIix0LmltYWdlQ29udHJhc3RJbk1pbGxpKSgidGh1bWJMYWJlbCIsITApKCJkaXNwbGF5V2l0aCIsdC5mb3JtYXRNaWxsaVRvWmVyb3RoKSxEYyg0KSxiZigiY2hlY2tlZCIsdC5pbWFnZVNob3dBY3R1YWxTaXplKX19Unl0Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxSeXQpfSxSeXQuybVjbXA9c28oe3R5cGU6Unl0LHNlbGVjdG9yczpbWyJ0Yi1kcm9wZG93biJdXSxpbnB1dHM6e3ZhbHVlOiJ2YWx1ZSIsb3B0aW9uczoib3B0aW9ucyJ9LG91dHB1dHM6e3NlbGVjdGlvbkNoYW5nZToic2VsZWN0aW9uQ2hhbmdlIn0sZGVjbHM6Mix2YXJzOjIsY29uc3RzOltbMywidmFsdWUiLCJzZWxlY3Rpb25DaGFuZ2UiXSxbMywidmFsdWUiLCJkaXNhYmxlZCIsNCwibmdGb3IiLCJuZ0Zvck9mIl0sWzMsInZhbHVlIiwiZGlzYWJsZWQiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKENmKDAsIm1hdC1zZWxlY3QiLDApLFJmKCJzZWxlY3Rpb25DaGFuZ2UiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLnNlbGVjdGlvbkNoYW5nZS5lbWl0KGUudmFsdWUpfSkpLEhtKDEsRHl0LDIsMywibWF0LW9wdGlvbiIsMSksTWYoKSksMiZlJiYoYmYoInZhbHVlIixuLnZhbHVlKSxEYygxKSxiZigibmdGb3JPZiIsbi5vcHRpb25zKSl9LGRpcmVjdGl2ZXM6W09ZLHh2LFBMXSxzdHlsZXM6WycubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTJweDtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1iYWRnZS1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo5cHh9Lm1hdC1iYWRnZS1sYXJnZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4fS5tYXQtaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWhlYWRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAyNHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE2cHgvMjhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE1cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjgzKS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1oNltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC42NykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtYm9keS1zdHJvbmdbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MCAwIDEycHh9Lm1hdC1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FwdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTJweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6MzAwIDExMnB4LzExMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wNWVtO21hcmdpbjowIDAgNTZweH0ubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNTZweC81NnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMmVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNDVweC80OHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMDVlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDM0cHgvNDBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgNjRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FyZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjBweH0ubWF0LWNhcmQtc3VidGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcmQtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2hlY2tib3gtbGF5b3V0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC10cmFpbGluZy1pY29uLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmUubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxOHB4fS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jYWxlbmRhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FsZW5kYXItYm9keVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEzcHh9Lm1hdC1jYWxlbmRhci1ib2R5LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgdGhbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWRpYWxvZy10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMTI1O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTUwJTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjVlbTt3aWR0aDoxLjVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW07bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi41ZW0gMDtib3JkZXItdG9wOi44NDM3NWVtIHNvbGlkIHRyYW5zcGFyZW50fS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3RvcDotMC44NDM3NWVtO3BhZGRpbmctdG9wOi44NDM3NWVtfS5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjc1JTttYXJnaW4tdG9wOi42NjY2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNzkxNjY2NjY2N2VtKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi40Mzc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAycHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyM2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMjgxMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi41NDE2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNjY2NjY2NjY2N2VtKX1AbWVkaWEgcHJpbnR7Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIyZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIxZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMmVtKSBzY2FsZSgwLjc1KX19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjI1ZW0gMCAuNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4wOTM3NWVtO21hcmdpbi10b3A6LTAuNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MWVtIDAgMWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjg0Mzc1ZW07bWFyZ2luLXRvcDotMC4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH1pbnB1dC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDotMC4wNjI1ZW19Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1wYWdlLXNpemVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4fS5tYXQtcmFkaW8tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3RbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbX0ubWF0LXNsaWRlLXRvZ2dsZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXN0ZXBwZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc3RlcC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtc3RlcC1zdWItbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0Om5vcm1hbH0ubWF0LXN0ZXAtbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtc3RlcC1sYWJlbC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdGFiLWdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjB9Lm1hdC10b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEwcHg7cGFkZGluZy10b3A6NnB4O3BhZGRpbmctYm90dG9tOjZweH0ubWF0LXRvb2x0aXAtaGFuZHNldFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7cGFkZGluZy10b3A6OHB4O3BhZGRpbmctYm90dG9tOjhweH0ubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTZweH0ubWF0LW9wdGdyb3VwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LXNpbXBsZS1zbmFja2Jhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4fS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbltfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MTtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRyZWVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbmVzdGVkLXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtc2l6ZToxNHB4fS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdOm5vdCg6ZW1wdHkpe3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApfS5tYXQtcmlwcGxlLm1hdC1yaXBwbGUtdW5ib3VuZGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzp2aXNpYmxlfS5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO2JvcmRlci1yYWRpdXM6NTAlO3BvaW50ZXItZXZlbnRzOm5vbmU7dHJhbnNpdGlvbjpvcGFjaXR5LHRyYW5zZm9ybSAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7dHJhbnNmb3JtOnNjYWxlKDApfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpub25lfS5jZGstdmlzdWFsbHktaGlkZGVuW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6MDtjbGlwOnJlY3QoMCAwIDAgMCk7aGVpZ2h0OjFweDttYXJnaW46LTFweDtvdmVyZmxvdzpoaWRkZW47cGFkZGluZzowO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjFweDt3aGl0ZS1zcGFjZTpub3dyYXA7b3V0bGluZTowOy13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BvaW50ZXItZXZlbnRzOm5vbmU7dG9wOjA7bGVmdDowO2hlaWdodDoxMDAlO3dpZHRoOjEwMCV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdOmVtcHR5e2Rpc3BsYXk6bm9uZX0uY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LXBhbmVbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3BvaW50ZXItZXZlbnRzOmF1dG87Ym94LXNpemluZzpib3JkZXItYm94O3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7bWF4LXdpZHRoOjEwMCU7bWF4LWhlaWdodDoxMDAlfS5jZGstb3ZlcmxheS1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7bGVmdDowO3JpZ2h0OjA7ei1pbmRleDoxMDAwO3BvaW50ZXItZXZlbnRzOmF1dG87LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50O3RyYW5zaXRpb246b3BhY2l0eSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKTtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5Oi42fS5jZGstb3ZlcmxheS1kYXJrLWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjMyKX0uY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTowfS5jZGstb3ZlcmxheS1jb25uZWN0ZWQtcG9zaXRpb24tYm91bmRpbmctYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjttaW4td2lkdGg6MXB4O21pbi1oZWlnaHQ6MXB4fS5jZGstZ2xvYmFsLXNjcm9sbGJsb2NrW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt3aWR0aDoxMDAlO292ZXJmbG93LXk6c2Nyb2xsfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZVtfbmdjb250ZW50LSVDT01QJV17cmVzaXplOm5vbmV9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZ1tfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6YXV0byAhaW1wb3J0YW50O292ZXJmbG93OmhpZGRlbiAhaW1wb3J0YW50fXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmctZmlyZWZveFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6MCAhaW1wb3J0YW50fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnR7fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5ke30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxse2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydCAwcyAxbXN9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06bm90KDotd2Via2l0LWF1dG9maWxsKXthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5kIDBzIDFtc30ubWF0LWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1tZGMtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX1tYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6MXB4IHNvbGlkICM4ZTk4YTM7Ym9yZGVyLXJhZGl1czozcHg7Ym94LXNpemluZzpib3JkZXItYm94O3BhZGRpbmc6NnB4fW1hdC1zZWxlY3RbX25nY29udGVudC0lQ09NUCVdOmZvY3Vze291dGxpbmUtY29sb3I6LXdlYmtpdC1mb2N1cy1yaW5nLWNvbG9yO291dGxpbmUtc3R5bGU6YXV0b30gIC5tYXQtc2VsZWN0LXBhbmVse21heC13aWR0aDo3MHZ3fSAgbWF0LW9wdGlvbi5tYXQtb3B0aW9ue2hlaWdodDphdXRvfSAgLm1hdC1vcHRpb24tdGV4dHt3aGl0ZS1zcGFjZTpub3JtYWw7d29yZC1icmVhazpicmVhay1hbGx9J119KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKFJ5dCxbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJ0Yi1kcm9wZG93biIsdGVtcGxhdGU6J1xuICAgIDxtYXQtc2VsZWN0XG4gICAgICBbdmFsdWVdPSJ2YWx1ZSJcbiAgICAgIChzZWxlY3Rpb25DaGFuZ2UpPSJzZWxlY3Rpb25DaGFuZ2UuZW1pdCgkZXZlbnQudmFsdWUpIlxuICAgID5cbiAgICAgIDxtYXQtb3B0aW9uXG4gICAgICAgICpuZ0Zvcj0ibGV0IG9wdGlvbiBvZiBvcHRpb25zIlxuICAgICAgICBbdmFsdWVdPSJvcHRpb24udmFsdWUiXG4gICAgICAgIFtkaXNhYmxlZF09Im9wdGlvbi5kaXNhYmxlZCJcbiAgICAgID5cbiAgICAgICAge3sgb3B0aW9uLmRpc3BsYXlUZXh0IH19XG4gICAgICA8L21hdC1vcHRpb24+XG4gICAgPC9tYXQtc2VsZWN0PlxuICAnLHN0eWxlVXJsczpbImRyb3Bkb3duX2NvbXBvbmVudC5jc3MiXX1dfV0sbnVsbCx7dmFsdWU6W3t0eXBlOlJffV0sb3B0aW9uczpbe3R5cGU6Ul99XSxzZWxlY3Rpb25DaGFuZ2U6W3t0eXBlOkVffV19KTtjb25zdCBJeXQ9MjUwO2NsYXNzIEh5dHtjb25zdHJ1Y3Rvcih0KXt0aGlzLmxvY2FsZT10LHRoaXMuc2VsZWN0VGltZUVuYWJsZVRvZ2dsZWQ9bmV3IFN5LHRoaXMudXNlUmFuZ2VTZWxlY3RUaW1lVG9nZ2xlZD1uZXcgU3ksdGhpcy5zZWxlY3RUaW1lQ2hhbmdlZD1uZXcgU3ksdGhpcy5Ub29sdGlwU29ydERyb3Bkb3duT3B0aW9ucz1be3ZhbHVlOkpULkFMUEhBQkVUSUNBTCxkaXNwbGF5VGV4dDoiQWxwaGFiZXRpY2FsIn0se3ZhbHVlOkpULkFTQ0VORElORyxkaXNwbGF5VGV4dDoiQXNjZW5kaW5nIn0se3ZhbHVlOkpULkRFU0NFTkRJTkcsZGlzcGxheVRleHQ6IkRlc2NlbmRpbmcifSx7dmFsdWU6SlQuTkVBUkVTVCxkaXNwbGF5VGV4dDoiTmVhcmVzdCJ9XSx0aGlzLnRvb2x0aXBTb3J0Q2hhbmdlZD1uZXcgU3ksdGhpcy5pZ25vcmVPdXRsaWVyc0NoYW5nZWQ9bmV3IFN5LHRoaXMuWEF4aXNUeXBlPVFULHRoaXMuWEF4aXNUeXBlRHJvcGRvd25PcHRpb25zPVt7dmFsdWU6UVQuU1RFUCxkaXNwbGF5VGV4dDoiU3RlcCJ9LHt2YWx1ZTpRVC5SRUxBVElWRSxkaXNwbGF5VGV4dDoiUmVsYXRpdmUifSx7dmFsdWU6UVQuV0FMTF9USU1FLGRpc3BsYXlUZXh0OiJXYWxsIn1dLHRoaXMueEF4aXNUeXBlQ2hhbmdlZD1uZXcgU3ksdGhpcy5NQVhfQ0FSRF9XSURUSF9TTElERVJfVkFMVUU9NzM1LHRoaXMuTUlOX0NBUkRfV0lEVEhfU0xJREVSX1ZBTFVFPTMzNSx0aGlzLmNhcmRXaWR0aFNsaWRlckNoYW5nZWQkPW5ldyBTeSx0aGlzLmNhcmRXaWR0aENoYW5nZWQ9dGhpcy5jYXJkV2lkdGhTbGlkZXJDaGFuZ2VkJC5waXBlKGdlKEl5dCkpLHRoaXMuY2FyZFdpZHRoUmVzZXQ9bmV3IFN5LHRoaXMuSGlzdG9ncmFtTW9kZURyb3Bkb3duT3B0aW9ucz1be3ZhbHVlOmpFLk9GRlNFVCxkaXNwbGF5VGV4dDoiT2Zmc2V0In0se3ZhbHVlOmpFLk9WRVJMQVksZGlzcGxheVRleHQ6Ik92ZXJsYXkifV0sdGhpcy5oaXN0b2dyYW1Nb2RlQ2hhbmdlZD1uZXcgU3ksdGhpcy5NQVhfU01PT1RISU5HX1ZBTFVFPS45OTksdGhpcy5NQVhfU01PT1RISU5HX1NMSURFUl9WQUxVRT0uOTksdGhpcy5zY2FsYXJTbW9vdGhpbmdDb250cm9sQ2hhbmdlZCQ9bmV3IFN5LHRoaXMuc2NhbGFyU21vb3RoaW5nQ2hhbmdlZD10aGlzLnNjYWxhclNtb290aGluZ0NvbnRyb2xDaGFuZ2VkJC5waXBlKGdlKEl5dCkpLHRoaXMuc2NhbGFyUGFydGl0aW9uWFRvZ2dsZWQ9bmV3IFN5LHRoaXMuaW1hZ2VCcmlnaHRuZXNzU2xpZGVyQ2hhbmdlZCQ9bmV3IFN5LHRoaXMuaW1hZ2VCcmlnaHRuZXNzSW5NaWxsaUNoYW5nZWQ9dGhpcy5pbWFnZUJyaWdodG5lc3NTbGlkZXJDaGFuZ2VkJC5waXBlKGdlKEl5dCkpLHRoaXMuaW1hZ2VCcmlnaHRuZXNzUmVzZXQ9bmV3IFN5LHRoaXMuaW1hZ2VDb250cmFzdFNsaWRlckNoYW5nZWQkPW5ldyBTeSx0aGlzLmltYWdlQ29udHJhc3RJbk1pbGxpQ2hhbmdlZD10aGlzLmltYWdlQ29udHJhc3RTbGlkZXJDaGFuZ2VkJC5waXBlKGdlKEl5dCkpLHRoaXMuaW1hZ2VDb250cmFzdFJlc2V0PW5ldyBTeSx0aGlzLmltYWdlU2hvd0FjdHVhbFNpemVDaGFuZ2VkPW5ldyBTeX1vblNjYWxhclNtb290aGluZ0lucHV0KHQpe2NvbnN0IGU9dC50YXJnZXQ7aWYoIWUudmFsdWUpcmV0dXJuO2NvbnN0IG49TWF0aC5taW4oTWF0aC5tYXgoMCxwYXJzZUZsb2F0KGUudmFsdWUpKSwuOTk5KTtuIT09cGFyc2VGbG9hdChlLnZhbHVlKSYmKGUudmFsdWU9U3RyaW5nKG4pKSx0aGlzLnNjYWxhclNtb290aGluZ0NvbnRyb2xDaGFuZ2VkJC5lbWl0KG4pfWZvcm1hdE1pbGxpVG9aZXJvdGgodCl7cmV0dXJuIGZ2KHQvMWUzLHRoaXMubG9jYWxlfHwiZW4tVVMiLCIxLjAtMiIpfW9uU3RlcFN0YXJ0Q2hhbmdlZCh0KXt0aGlzLnNlbGVjdFRpbWVDaGFuZ2VkLmVtaXQoe3N0YXJ0OntzdGVwOnR9LGVuZDpudWxsfSl9b25TdGVwUmFuZ2VDaGFuZ2VkKHtsb3dlclZhbHVlOnQsdXBwZXJWYWx1ZTplfSl7dGhpcy5zZWxlY3RUaW1lQ2hhbmdlZC5lbWl0KHtzdGFydDp7c3RlcDp0fSxlbmQ6e3N0ZXA6ZX19KX19SHl0Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxIeXQpKGdmKFFfKSl9LEh5dC7JtWNtcD1zbyh7dHlwZTpIeXQsc2VsZWN0b3JzOltbIm1ldHJpY3MtZGFzaGJvYXJkLXNldHRpbmdzLWNvbXBvbmVudCJdXSxpbnB1dHM6e2lzQ2FyZFdpZHRoU2V0dGluZ0VuYWJsZWQ6ImlzQ2FyZFdpZHRoU2V0dGluZ0VuYWJsZWQiLGlzTGlua2VkVGltZUZlYXR1cmVFbmFibGVkOiJpc0xpbmtlZFRpbWVGZWF0dXJlRW5hYmxlZCIsc2VsZWN0VGltZUVuYWJsZWQ6InNlbGVjdFRpbWVFbmFibGVkIix1c2VSYW5nZVNlbGVjdFRpbWU6InVzZVJhbmdlU2VsZWN0VGltZSIsc2VsZWN0ZWRUaW1lOiJzZWxlY3RlZFRpbWUiLHN0ZXBNaW5NYXg6InN0ZXBNaW5NYXgiLGlzSW1hZ2VTdXBwb3J0RW5hYmxlZDoiaXNJbWFnZVN1cHBvcnRFbmFibGVkIix0b29sdGlwU29ydDoidG9vbHRpcFNvcnQiLGlnbm9yZU91dGxpZXJzOiJpZ25vcmVPdXRsaWVycyIseEF4aXNUeXBlOiJ4QXhpc1R5cGUiLGNhcmRNaW5XaWR0aDoiY2FyZE1pbldpZHRoIixoaXN0b2dyYW1Nb2RlOiJoaXN0b2dyYW1Nb2RlIixzY2FsYXJTbW9vdGhpbmc6InNjYWxhclNtb290aGluZyIsc2NhbGFyUGFydGl0aW9uWDoic2NhbGFyUGFydGl0aW9uWCIsaW1hZ2VCcmlnaHRuZXNzSW5NaWxsaToiaW1hZ2VCcmlnaHRuZXNzSW5NaWxsaSIsaW1hZ2VDb250cmFzdEluTWlsbGk6ImltYWdlQ29udHJhc3RJbk1pbGxpIixpbWFnZVNob3dBY3R1YWxTaXplOiJpbWFnZVNob3dBY3R1YWxTaXplIn0sb3V0cHV0czp7c2VsZWN0VGltZUVuYWJsZVRvZ2dsZWQ6InNlbGVjdFRpbWVFbmFibGVUb2dnbGVkIix1c2VSYW5nZVNlbGVjdFRpbWVUb2dnbGVkOiJ1c2VSYW5nZVNlbGVjdFRpbWVUb2dnbGVkIixzZWxlY3RUaW1lQ2hhbmdlZDoic2VsZWN0VGltZUNoYW5nZWQiLHRvb2x0aXBTb3J0Q2hhbmdlZDoidG9vbHRpcFNvcnRDaGFuZ2VkIixpZ25vcmVPdXRsaWVyc0NoYW5nZWQ6Imlnbm9yZU91dGxpZXJzQ2hhbmdlZCIseEF4aXNUeXBlQ2hhbmdlZDoieEF4aXNUeXBlQ2hhbmdlZCIsY2FyZFdpZHRoQ2hhbmdlZDoiY2FyZFdpZHRoQ2hhbmdlZCIsY2FyZFdpZHRoUmVzZXQ6ImNhcmRXaWR0aFJlc2V0IixoaXN0b2dyYW1Nb2RlQ2hhbmdlZDoiaGlzdG9ncmFtTW9kZUNoYW5nZWQiLHNjYWxhclNtb290aGluZ0NoYW5nZWQ6InNjYWxhclNtb290aGluZ0NoYW5nZWQiLHNjYWxhclBhcnRpdGlvblhUb2dnbGVkOiJzY2FsYXJQYXJ0aXRpb25YVG9nZ2xlZCIsaW1hZ2VCcmlnaHRuZXNzSW5NaWxsaUNoYW5nZWQ6ImltYWdlQnJpZ2h0bmVzc0luTWlsbGlDaGFuZ2VkIixpbWFnZUJyaWdodG5lc3NSZXNldDoiaW1hZ2VCcmlnaHRuZXNzUmVzZXQiLGltYWdlQ29udHJhc3RJbk1pbGxpQ2hhbmdlZDoiaW1hZ2VDb250cmFzdEluTWlsbGlDaGFuZ2VkIixpbWFnZUNvbnRyYXN0UmVzZXQ6ImltYWdlQ29udHJhc3RSZXNldCIsaW1hZ2VTaG93QWN0dWFsU2l6ZUNoYW5nZWQ6ImltYWdlU2hvd0FjdHVhbFNpemVDaGFuZ2VkIn0sZGVjbHM6MzcsdmFyczoxOCxjb25zdHM6ZnVuY3Rpb24oKXtsZXQgdCxlLG47aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBuZ0kxOG5DbG9zdXJlTW9kZSYmbmdJMThuQ2xvc3VyZU1vZGUpe3Q9Z29vZy5nZXRNc2coIlJlc2V0IGNhcmQgd2lkdGgiKX1lbHNlIHQ9JGxvY2FsaXplYDpBIGJ1dHRvbiB0byByZXNldCB0aGUgY2FyZCB3aWR0aCBzZXR0aW5n4pCfY2NkYzk2YjAwM2ZiYmE5MGRiN2E2OTU5YjViMjZlM2NjNThmN2Q4MOKQnzUyMjMxMTEwNDc5NjgxMDI0NjY6UmVzZXQgY2FyZCB3aWR0aGA7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBuZ0kxOG5DbG9zdXJlTW9kZSYmbmdJMThuQ2xvc3VyZU1vZGUpe2U9Z29vZy5nZXRNc2coIlJlc2V0IGJyaWdodG5lc3MiKX1lbHNlIGU9JGxvY2FsaXplYDpBIGJ1dHRvbiB0byByZXNldCB0aGUgaW1hZ2UgYnJpZ2h0bmVzcyBzZXR0aW5n4pCfYzQ4MmIzYTQ3ZWEwOTc1ZmE4YmUwMWFmYjNmYmVjOWI3NjYyOGJkN+KQnzExODkxNjE4NTcyNDAzNzgzOTU6UmVzZXQgYnJpZ2h0bmVzc2A7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBuZ0kxOG5DbG9zdXJlTW9kZSYmbmdJMThuQ2xvc3VyZU1vZGUpe249Z29vZy5nZXRNc2coIlJlc2V0IGNvbnRyYXN0Iil9ZWxzZSBuPSRsb2NhbGl6ZWA6QSBidXR0b24gdG8gcmVzZXQgdGhlIGltYWdlIGNvbnRyYXN0IHNldHRpbmfikJ9lZDcxMmE4YjkyNzA0MWJlMTUyNTJiMjllYjUyMWViYjEzNzRiYWQ44pCfNTM3MDcwMzM0MjkyMzYxMTk1NTpSZXNldCBjb250cmFzdGA7cmV0dXJuW1sxLCJnZW5lcmFsIl0sWzEsInNlY3Rpb24tdGl0bGUiXSxbMSwiY29udHJvbC1yb3ciLCJ4LWF4aXMtdHlwZSJdLFsiaWQiLCJ4LWF4aXMtdHlwZS1sYWJlbCIsMSwiY29udHJvbC1uYW1lIl0sWzMsInZhbHVlIiwib3B0aW9ucyIsInNlbGVjdGlvbkNoYW5nZSJdLFsiY2xhc3MiLCJjb250cm9sLXJvdyBjYXJkLXdpZHRoIiw0LCJuZ0lmIl0sWyJjbGFzcyIsImNvbnRyb2wtcm93IGxpbmtlZC10aW1lIiw0LCJuZ0lmIl0sWzEsInNjYWxhcnMiXSxbMSwiY29udHJvbC1yb3ciLCJzY2FsYXJzLXNtb290aGluZyJdLFsiaWQiLCJzY2FsYXJzLXNtb290aGluZy1sYWJlbCIsMSwiY29udHJvbC1uYW1lIl0sWzEsInNsaWRlci1yb3ciXSxbImFyaWEtbGFiZWxsZWRieSIsInNjYWxhcnMtc21vb3RoaW5nLWxhYmVsIiwiY29sb3IiLCJwcmltYXJ5IiwzLCJtYXgiLCJtaW4iLCJzdGVwIiwidmFsdWUiLCJ0aHVtYkxhYmVsIiwiaW5wdXQiXSxbImFyaWEtbGFiZWxsZWRieSIsInNjYWxhcnMtc21vb3RoaW5nLWxhYmVsIiwidHlwZSIsIm51bWJlciIsIm1pbiIsIjAiLCJzdGVwIiwiMC4wMDEiLDEsInNsaWRlci1pbnB1dCIsMywibWF4IiwidmFsdWUiLCJpbnB1dCJdLFsxLCJjb250cm9sLXJvdyIsInRvb2x0aXAtc29ydCJdLFsxLCJjb250cm9sLW5hbWUiXSxbMSwiY29udHJvbC1yb3ciLCJzY2FsYXJzLWlnbm9yZS1vdXRsaWVycyJdLFszLCJjaGVja2VkIiwiY2hhbmdlIl0sWzEsImNvbnRyb2wtcm93Iiwic2NhbGFycy1wYXJ0aXRpb24teCJdLFsic3ZnSWNvbiIsImhlbHBfb3V0bGluZV8yNHB4IiwidGl0bGUiLCJOb24tbW9ub3RvbmljIHN0ZXBzIGNhbiBvY2N1ciB3aGVuIHJldXNpbmcgYSBsb2dkaXIgd2l0aCBtdWx0aXBsZSBzdW1tYXJ5IHdyaXRlcnMgYW5kIG92ZXJsYXBwaW5nIHN0ZXBzLiBMaW5lIGNoYXJ0cywgd2l0aG91dCB0aGlzIG9wdGlvbiBlbmFibGVkLCBjYW4gYXBwZWFyIHppZyB6YWdnZWQuIFRoaXMgaXMgY29tbW9uIHdoZW4gcmVzdGFydGluZyBmcm9tIGEgY2hlY2twb2ludC5cblxuV2hlbiBlbmFibGVkLCBhIG5vbi1tb25vdG9uaWMgdGltZSBzZXJpZXMgY29tcG9zZWQgb2YgTiBtb25vdG9uaWMgcGllY2VzIHdpbGwgYmUgc2hvd24gYXMgTiBtb25vdG9uaWMgbGluZXMuIiwxLCJpbmZvIl0sWzEsIkhpc3RvZ3JhbXMiXSxbMSwiY29udHJvbC1yb3ciLCJoaXN0b2dyYW0tbW9kZSJdLFsiY2xhc3MiLCJpbWFnZSIsNCwibmdJZiJdLFsxLCJjb250cm9sLXJvdyIsImNhcmQtd2lkdGgiXSxbImlkIiwiY2FyZC13aWR0aC1sYWJlbCIsMSwiY29udHJvbC1uYW1lIl0sWyJhcmlhLWxhYmVsbGVkYnkiLCJjYXJkLXdpZHRoLWxhYmVsIiwiY29sb3IiLCJwcmltYXJ5IiwzLCJtYXgiLCJtaW4iLCJzdGVwIiwidmFsdWUiLCJ0aHVtYkxhYmVsIiwiaW5wdXQiXSxbIm1hdC1pY29uLWJ1dHRvbiIsIiIsImFyaWEtbGFiZWwiLHQsInRpdGxlIiwiUmVzZXQgY2FyZCB3aWR0aCIsMSwicmVzZXQtYnV0dG9uIiwzLCJjbGljayJdLFsic3ZnSWNvbiIsInNldHRpbmdzX2JhY2t1cF9yZXN0b3JlXzI0cHgiXSxbMSwiY29udHJvbC1yb3ciLCJsaW5rZWQtdGltZSJdLFsxLCJjb250cm9scyJdLFsxLCJzdGVwLXNlbGVjdG9yIl0sWyJjb2xvciIsInByaW1hcnkiLDMsImRpc2FibGVkIiwibWluIiwibWF4Iiwic3RlcCIsInZhbHVlIiwidGh1bWJMYWJlbCIsImlucHV0Iiw0LCJuZ0lmIiwibmdJZkVsc2UiXSxbInJhbmdlIiwiIl0sWyJjb2xvciIsInByaW1hcnkiLDMsImRpc2FibGVkIiwibWluIiwibWF4Iiwic3RlcCIsInZhbHVlIiwidGh1bWJMYWJlbCIsImlucHV0Il0sWzMsIm1pbiIsIm1heCIsImxvd2VyVmFsdWUiLCJ1cHBlclZhbHVlIiwidmFsdWUiXSxbMSwiaW1hZ2UiXSxbMSwiY29udHJvbC1yb3ciLCJpbWFnZS1icmlnaHRuZXNzIl0sWyJpZCIsImltYWdlLWJyaWdodG5lc3MtbGFiZWwiLDEsImNvbnRyb2wtbmFtZSJdLFsiYXJpYS1sYWJlbGxlZGJ5IiwiaW1hZ2UtYnJpZ2h0bmVzcy1sYWJlbCIsImNvbG9yIiwicHJpbWFyeSIsMywibWF4IiwibWluIiwic3RlcCIsInZhbHVlIiwidGh1bWJMYWJlbCIsImRpc3BsYXlXaXRoIiwiaW5wdXQiXSxbIm1hdC1pY29uLWJ1dHRvbiIsIiIsImFyaWEtbGFiZWwiLGUsInRpdGxlIiwiUmVzZXQgYnJpZ2h0bmVzcyIsMSwicmVzZXQtYnV0dG9uIiwzLCJjbGljayJdLFsxLCJjb250cm9sLXJvdyIsImltYWdlLWNvbnRyYXN0Il0sWyJpZCIsImltYWdlLWNvbnN0cmFzdC1sYWJlbCIsMSwiY29udHJvbC1uYW1lIl0sWyJhcmlhLWxhYmVsbGVkYnkiLCJpbWFnZS1jb25zdHJhc3QtbGFiZWwiLCJjb2xvciIsInByaW1hcnkiLDMsIm1heCIsIm1pbiIsInN0ZXAiLCJ2YWx1ZSIsInRodW1iTGFiZWwiLCJkaXNwbGF5V2l0aCIsImlucHV0Il0sWyJtYXQtaWNvbi1idXR0b24iLCIiLCJhcmlhLWxhYmVsIixuLCJ0aXRsZSIsIlJlc2V0IGNvbnRyYXN0IiwxLCJyZXNldC1idXR0b24iLDMsImNsaWNrIl0sWzEsImNvbnRyb2wtcm93IiwiaW1hZ2Utc2hvdy1hY3R1YWwtc2l6ZSJdXX0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKENmKDAsInNlY3Rpb24iLDApLENmKDEsImgzIiwxKSxQdSgyLCJHZW5lcmFsIiksTWYoKSxDZigzLCJkaXYiLDIpLENmKDQsImRpdiIsMyksUHUoNSwiSG9yaXpvbnRhbCBBeGlzIiksTWYoKSxDZig2LCJ0Yi1kcm9wZG93biIsNCksUmYoInNlbGVjdGlvbkNoYW5nZSIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4ueEF4aXNUeXBlQ2hhbmdlZC5lbWl0KGUpfSkpLE1mKCksTWYoKSxIbSg3LEV5dCw3LDUsImRpdiIsNSksSG0oOCxOeXQsMTQsNCwiZGl2Iiw2KSxNZigpLENmKDksInNlY3Rpb24iLDcpLENmKDEwLCJoMyIsMSksUHUoMTEsIlNjYWxhcnMiKSxNZigpLENmKDEyLCJkaXYiLDgpLENmKDEzLCJkaXYiLDkpLFB1KDE0LCJTbW9vdGhpbmciKSxNZigpLENmKDE1LCJkaXYiLDEwKSxDZigxNiwibWF0LXNsaWRlciIsMTEpLFJmKCJpbnB1dCIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4uc2NhbGFyU21vb3RoaW5nQ29udHJvbENoYW5nZWQkLmVtaXQoZS52YWx1ZSl9KSksTWYoKSxDZigxNywiaW5wdXQiLDEyKSxSZigiaW5wdXQiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLm9uU2NhbGFyU21vb3RoaW5nSW5wdXQoZSl9KSksTWYoKSxNZigpLE1mKCksQ2YoMTgsImRpdiIsMTMpLENmKDE5LCJkaXYiLDE0KSxQdSgyMCwiVG9vbHRpcCBzb3J0aW5nIG1ldGhvZCIpLE1mKCksQ2YoMjEsInRiLWRyb3Bkb3duIiw0KSxSZigic2VsZWN0aW9uQ2hhbmdlIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi50b29sdGlwU29ydENoYW5nZWQuZW1pdChlKX0pKSxNZigpLE1mKCksQ2YoMjIsImRpdiIsMTUpLENmKDIzLCJtYXQtY2hlY2tib3giLDE2KSxSZigiY2hhbmdlIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5pZ25vcmVPdXRsaWVyc0NoYW5nZWQuZW1pdChlLmNoZWNrZWQpfSkpLFB1KDI0LCJJZ25vcmUgb3V0bGllcnMgaW4gY2hhcnQgc2NhbGluZyIpLE1mKCksTWYoKSxDZigyNSwiZGl2IiwxNyksQ2YoMjYsIm1hdC1jaGVja2JveCIsMTYpLFJmKCJjaGFuZ2UiLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4uc2NhbGFyUGFydGl0aW9uWFRvZ2dsZWQuZW1pdCgpfSkpLFB1KDI3LCJQYXJ0aXRpb24gbm9uLW1vbm90b25pYyBYIGF4aXMiKSxNZigpLHZmKDI4LCJtYXQtaWNvbiIsMTgpLE1mKCksTWYoKSxDZigyOSwic2VjdGlvbiIsMTkpLENmKDMwLCJoMyIsMSksUHUoMzEsIkhpc3RvZ3JhbXMiKSxNZigpLENmKDMyLCJkaXYiLDIwKSxDZigzMywiZGl2IiwxNCksUHUoMzQsIk1vZGUiKSxNZigpLENmKDM1LCJ0Yi1kcm9wZG93biIsNCksUmYoInNlbGVjdGlvbkNoYW5nZSIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4uaGlzdG9ncmFtTW9kZUNoYW5nZWQuZW1pdChlKX0pKSxNZigpLE1mKCksTWYoKSxIbSgzNix6eXQsMjAsMTMsInNlY3Rpb24iLDIxKSksMiZlJiYoRGMoNiksYmYoInZhbHVlIixuLnhBeGlzVHlwZSkoIm9wdGlvbnMiLG4uWEF4aXNUeXBlRHJvcGRvd25PcHRpb25zKSxEYygxKSxiZigibmdJZiIsbi5pc0NhcmRXaWR0aFNldHRpbmdFbmFibGVkKSxEYygxKSxiZigibmdJZiIsbi5pc0xpbmtlZFRpbWVGZWF0dXJlRW5hYmxlZCYmbi54QXhpc1R5cGU9PW4uWEF4aXNUeXBlLlNURVApLERjKDgpLGJmKCJtYXgiLG4uTUFYX1NNT09USElOR19TTElERVJfVkFMVUUpKCJtaW4iLDApKCJzdGVwIiwuMDEpKCJ2YWx1ZSIsbi5zY2FsYXJTbW9vdGhpbmcpKCJ0aHVtYkxhYmVsIiwhMCksRGMoMSksYmYoIm1heCIsbi5NQVhfU01PT1RISU5HX1ZBTFVFKSgidmFsdWUiLG4uc2NhbGFyU21vb3RoaW5nKSxEYyg0KSxiZigidmFsdWUiLG4udG9vbHRpcFNvcnQpKCJvcHRpb25zIixuLlRvb2x0aXBTb3J0RHJvcGRvd25PcHRpb25zKSxEYygyKSxiZigiY2hlY2tlZCIsbi5pZ25vcmVPdXRsaWVycyksRGMoMyksYmYoImNoZWNrZWQiLG4uc2NhbGFyUGFydGl0aW9uWCksRGMoOSksYmYoInZhbHVlIixuLmhpc3RvZ3JhbU1vZGUpKCJvcHRpb25zIixuLkhpc3RvZ3JhbU1vZGVEcm9wZG93bk9wdGlvbnMpLERjKDEpLGJmKCJuZ0lmIixuLmlzSW1hZ2VTdXBwb3J0RW5hYmxlZCkpfSxkaXJlY3RpdmVzOltSeXQsUHYsd0osYlosTXEsTkwsRTJdLHN0eWxlczpbJy5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjlweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHh9Lm1hdC1oMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaGVhZGxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDI0cHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTVweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWg2W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1ib2R5LXN0cm9uZ1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYXJkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FyZC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MjRweH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNhbGVuZGFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZGlhbG9nLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVlbSAwO2JvcmRlci10b3A6Ljg0Mzc1ZW0gc29saWQgdHJhbnNwYXJlbnR9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17dG9wOi0wLjg0Mzc1ZW07cGFkZGluZy10b3A6Ljg0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6NzUlO21hcmdpbi10b3A6LjY2NjY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS43OTE2NjY2NjY3ZW0pfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjQzNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDJweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIzZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4yODEyNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LjU0MTY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS42NjY2NjY2NjY3ZW0pfUBtZWRpYSBwcmludHsubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjJlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjFlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyZW0pIHNjYWxlKDAuNzUpfX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouMjVlbSAwIC43NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjA5Mzc1ZW07bWFyZ2luLXRvcDotMC41ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoxZW0gMCAxZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuODQzNzVlbTttYXJnaW4tdG9wOi0wLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMiksIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fWlucHV0Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi0wLjA2MjVlbX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHh9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtfS5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1zdGVwLXN1Yi1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6bm9ybWFsfS5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1zdGVwLWxhYmVsLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10YWItZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MH0ubWF0LXRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTBweDtwYWRkaW5nLXRvcDo2cHg7cGFkZGluZy1ib3R0b206NnB4fS5tYXQtdG9vbHRpcC1oYW5kc2V0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4fS5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtc2ltcGxlLXNuYWNrYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHh9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoxO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjE0cHh9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV06bm90KDplbXB0eSl7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9Lm1hdC1yaXBwbGUubWF0LXJpcHBsZS11bmJvdW5kZWRbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OnZpc2libGV9Lm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJhZGl1czo1MCU7cG9pbnRlci1ldmVudHM6bm9uZTt0cmFuc2l0aW9uOm9wYWNpdHksdHJhbnNmb3JtIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTt0cmFuc2Zvcm06c2NhbGUoMCl9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9LmNkay12aXN1YWxseS1oaWRkZW5bX25nY29udGVudC0lQ09NUCVde2JvcmRlcjowO2NsaXA6cmVjdCgwIDAgMCAwKTtoZWlnaHQ6MXB4O21hcmdpbjotMXB4O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4O3doaXRlLXNwYWNlOm5vd3JhcDtvdXRsaW5lOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0sIC5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cG9pbnRlci1ldmVudHM6bm9uZTt0b3A6MDtsZWZ0OjA7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV06ZW1wdHl7ZGlzcGxheTpub25lfS5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktcGFuZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6YXV0bztib3gtc2l6aW5nOmJvcmRlci1ib3g7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDttYXgtd2lkdGg6MTAwJTttYXgtaGVpZ2h0OjEwMCV9LmNkay1vdmVybGF5LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDt6LWluZGV4OjEwMDA7cG9pbnRlci1ldmVudHM6YXV0bzstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnQ7dHJhbnNpdGlvbjpvcGFjaXR5IDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpO29wYWNpdHk6MH0uY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eToxfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6LjZ9LmNkay1vdmVybGF5LWRhcmstYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMzIpfS5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV0sIC5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWNvbm5lY3RlZC1wb3NpdGlvbi1ib3VuZGluZy1ib3hbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO21pbi13aWR0aDoxcHg7bWluLWhlaWdodDoxcHh9LmNkay1nbG9iYWwtc2Nyb2xsYmxvY2tbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3dpZHRoOjEwMCU7b3ZlcmZsb3cteTpzY3JvbGx9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplW19uZ2NvbnRlbnQtJUNPTVAlXXtyZXNpemU6bm9uZX10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDphdXRvICFpbXBvcnRhbnQ7b3ZlcmZsb3c6aGlkZGVuICFpbXBvcnRhbnR9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZy1maXJlZm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDowICFpbXBvcnRhbnR9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydHt9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmR7fS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGx7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0IDBzIDFtc30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOi13ZWJraXQtYXV0b2ZpbGwpe2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmQgMHMgMW1zfS5tYXQtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LW1kYy1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfVtfbmdob3N0LSVDT01QJV17Y29sb3I6IzYxNjE2MTtmb250LXNpemU6MTJweH1ib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV17Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNyl9c2VjdGlvbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2ViZWJlYjtwYWRkaW5nOjE2cHh9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgc2VjdGlvbltfbmdjb250ZW50LSVDT01QJV0sIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIHNlY3Rpb25bX25nY29udGVudC0lQ09NUCVde2JvcmRlci1ib3R0b206MXB4IHNvbGlkICM1NTV9LnNlY3Rpb24tdGl0bGVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjE7dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlO2ZvbnQtd2VpZ2h0OjUwMDtmb250LXNpemU6MTNweDtsaW5lLWhlaWdodDpub3JtYWw7bWFyZ2luOjAgMCAxMnB4IDB9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgLnNlY3Rpb24tdGl0bGVbX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAuc2VjdGlvbi10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZn1zZWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jb250cm9sLXJvd1tfbmdjb250ZW50LSVDT01QJV06bm90KDpsYXN0LWNoaWxkKXttYXJnaW4tYm90dG9tOjEycHh9LmNvbnRyb2wtbmFtZVtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLWJvdHRvbTo4cHh9LnNsaWRlci1yb3dbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7aGVpZ2h0OjI4cHh9LnNsaWRlci1yb3dbX25nY29udGVudC0lQ09NUCVdICAgLnJlc2V0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLWxlZnQ6NnB4fS5zbGlkZXItcm93W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5zbGlkZXItaW5wdXRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6aW5oZXJpdDtib3JkZXI6MXB4IHNvbGlkICM4ZTk4YTM7Ym9yZGVyLXJhZGl1czoycHg7Ym94LXNpemluZzpib3JkZXItYm94O2NvbG9yOmluaGVyaXQ7aGVpZ2h0OjEwMCU7bWFyZ2luLWxlZnQ6MTJweDtwYWRkaW5nOjAgNHB4fWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC5zbGlkZXItcm93W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5zbGlkZXItaW5wdXRbX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAuc2xpZGVyLXJvd1tfbmdjb250ZW50LSVDT01QJV0gICAuc2xpZGVyLWlucHV0W19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6IzQyNTA2Nn0uc2NhbGFycy1zbW9vdGhpbmdbX25nY29udGVudC0lQ09NUCVdICAgLnNsaWRlci1pbnB1dFtfbmdjb250ZW50LSVDT01QJV17ZmxleDpub25lO3dpZHRoOjVlbX0uc2NhbGFycy1wYXJ0aXRpb24teFtfbmdjb250ZW50LSVDT01QJV17YWxpZ24taXRlbXM6Y2VudGVyO2Rpc3BsYXk6ZmxleH0uc2NhbGFycy1wYXJ0aXRpb24teFtfbmdjb250ZW50LSVDT01QJV0gICAuaW5mb1tfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjE1cHg7bWFyZ2luLWxlZnQ6NXB4O3dpZHRoOjE1cHh9bWF0LXNsaWRlcltfbmdjb250ZW50LSVDT01QJV17ZmxleDoxO21hcmdpbi1sZWZ0Oi04cHg7bWFyZ2luLXJpZ2h0Oi04cHh9dGItZHJvcGRvd25bX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6YmxvY2t9LmxpbmtlZC10aW1lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5zdGVwLXNlbGVjdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjAgMTBweH0ubGlua2VkLXRpbWVbX25nY29udGVudC0lQ09NUCVdICAgbWF0LXNsaWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5saW5rZWQtdGltZVtfbmdjb250ZW50LSVDT01QJV0gICB0Yi1yYW5nZS1pbnB1dFtfbmdjb250ZW50LSVDT01QJV17d2lkdGg6MTAwJX0ubGlua2VkLXRpbWVbX25nY29udGVudC0lQ09NUCVdICAgLmNvbnRyb2xzW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjVweH0nXSxjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoSHl0LFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6Im1ldHJpY3MtZGFzaGJvYXJkLXNldHRpbmdzLWNvbXBvbmVudCIsdGVtcGxhdGVVcmw6InNldHRpbmdzX3ZpZXdfY29tcG9uZW50Lm5nLmh0bWwiLGNoYW5nZURldGVjdGlvbjpqbi5PblB1c2gsc3R5bGVVcmxzOlsic2V0dGluZ3Nfdmlld19jb21wb25lbnQuY3NzIl19XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbUV9dfV19XX0pLHtpc0NhcmRXaWR0aFNldHRpbmdFbmFibGVkOlt7dHlwZTpSX31dLGlzTGlua2VkVGltZUZlYXR1cmVFbmFibGVkOlt7dHlwZTpSX31dLHNlbGVjdFRpbWVFbmFibGVkOlt7dHlwZTpSX31dLHVzZVJhbmdlU2VsZWN0VGltZTpbe3R5cGU6Ul99XSxzZWxlY3RlZFRpbWU6W3t0eXBlOlJffV0sc3RlcE1pbk1heDpbe3R5cGU6Ul99XSxzZWxlY3RUaW1lRW5hYmxlVG9nZ2xlZDpbe3R5cGU6RV99XSx1c2VSYW5nZVNlbGVjdFRpbWVUb2dnbGVkOlt7dHlwZTpFX31dLHNlbGVjdFRpbWVDaGFuZ2VkOlt7dHlwZTpFX31dLGlzSW1hZ2VTdXBwb3J0RW5hYmxlZDpbe3R5cGU6Ul99XSx0b29sdGlwU29ydDpbe3R5cGU6Ul99XSx0b29sdGlwU29ydENoYW5nZWQ6W3t0eXBlOkVffV0saWdub3JlT3V0bGllcnM6W3t0eXBlOlJffV0saWdub3JlT3V0bGllcnNDaGFuZ2VkOlt7dHlwZTpFX31dLHhBeGlzVHlwZTpbe3R5cGU6Ul99XSx4QXhpc1R5cGVDaGFuZ2VkOlt7dHlwZTpFX31dLGNhcmRNaW5XaWR0aDpbe3R5cGU6Ul99XSxjYXJkV2lkdGhDaGFuZ2VkOlt7dHlwZTpFX31dLGNhcmRXaWR0aFJlc2V0Olt7dHlwZTpFX31dLGhpc3RvZ3JhbU1vZGU6W3t0eXBlOlJffV0saGlzdG9ncmFtTW9kZUNoYW5nZWQ6W3t0eXBlOkVffV0sc2NhbGFyU21vb3RoaW5nOlt7dHlwZTpSX31dLHNjYWxhclNtb290aGluZ0NoYW5nZWQ6W3t0eXBlOkVffV0sc2NhbGFyUGFydGl0aW9uWDpbe3R5cGU6Ul99XSxzY2FsYXJQYXJ0aXRpb25YVG9nZ2xlZDpbe3R5cGU6RV99XSxpbWFnZUJyaWdodG5lc3NJbk1pbGxpOlt7dHlwZTpSX31dLGltYWdlQnJpZ2h0bmVzc0luTWlsbGlDaGFuZ2VkOlt7dHlwZTpFX31dLGltYWdlQnJpZ2h0bmVzc1Jlc2V0Olt7dHlwZTpFX31dLGltYWdlQ29udHJhc3RJbk1pbGxpOlt7dHlwZTpSX31dLGltYWdlQ29udHJhc3RJbk1pbGxpQ2hhbmdlZDpbe3R5cGU6RV99XSxpbWFnZUNvbnRyYXN0UmVzZXQ6W3t0eXBlOkVffV0saW1hZ2VTaG93QWN0dWFsU2l6ZTpbe3R5cGU6Ul99XSxpbWFnZVNob3dBY3R1YWxTaXplQ2hhbmdlZDpbe3R5cGU6RV99XX0pO2NsYXNzIEZ5dHtjb25zdHJ1Y3Rvcih0KXt0aGlzLnN0b3JlPXQsdGhpcy5pc0NhcmRXaWR0aFNldHRpbmdFbmFibGVkJD10aGlzLnN0b3JlLnNlbGVjdChxRCksdGhpcy5pc0xpbmtlZFRpbWVGZWF0dXJlRW5hYmxlZCQ9dGhpcy5zdG9yZS5zZWxlY3QoR0QpLHRoaXMuc2VsZWN0VGltZUVuYWJsZWQkPXRoaXMuc3RvcmUuc2VsZWN0KGt6KSx0aGlzLnVzZVJhbmdlU2VsZWN0VGltZSQ9dGhpcy5zdG9yZS5zZWxlY3QoU3opLHRoaXMuc2VsZWN0ZWRUaW1lJD10aGlzLnN0b3JlLnNlbGVjdChSeiksdGhpcy5zdGVwTWluTWF4JD10aGlzLnN0b3JlLnNlbGVjdChEeiksdGhpcy5pc0ltYWdlU3VwcG9ydEVuYWJsZWQkPXRoaXMuc3RvcmUuc2VsZWN0KE5EKS5waXBlKHVlKEJvb2xlYW4pLHZlKDEpLHFlKHRoaXMuc3RvcmUuc2VsZWN0KFdEKSksVnQoKChbLHRdKT0+dCkpKSx0aGlzLnRvb2x0aXBTb3J0JD10aGlzLnN0b3JlLnNlbGVjdChoeiksdGhpcy5pZ25vcmVPdXRsaWVycyQ9dGhpcy5zdG9yZS5zZWxlY3QoYnopLHRoaXMueEF4aXNUeXBlJD10aGlzLnN0b3JlLnNlbGVjdCh5eiksdGhpcy5jYXJkTWluV2lkdGgkPXRoaXMuc3RvcmUuc2VsZWN0KGd6KSx0aGlzLmhpc3RvZ3JhbU1vZGUkPXRoaXMuc3RvcmUuc2VsZWN0KF96KSx0aGlzLnNjYWxhclNtb290aGluZyQ9dGhpcy5zdG9yZS5zZWxlY3QoQ3opLHRoaXMuc2NhbGFyUGFydGl0aW9uWCQ9dGhpcy5zdG9yZS5zZWxlY3QoTXopLHRoaXMuaW1hZ2VCcmlnaHRuZXNzSW5NaWxsaSQ9dGhpcy5zdG9yZS5zZWxlY3QodnopLHRoaXMuaW1hZ2VDb250cmFzdEluTWlsbGkkPXRoaXMuc3RvcmUuc2VsZWN0KHh6KSx0aGlzLmltYWdlU2hvd0FjdHVhbFNpemUkPXRoaXMuc3RvcmUuc2VsZWN0KE96KX1vblRvb2x0aXBTb3J0Q2hhbmdlZCh0KXt0aGlzLnN0b3JlLmRpc3BhdGNoKGdBKHtzb3J0OnR9KSl9b25JZ25vcmVPdXRsaWVyc0NoYW5nZWQoKXt0aGlzLnN0b3JlLmRpc3BhdGNoKGhBKCkpfW9uWEF4aXNUeXBlQ2hhbmdlZCh0KXt0aGlzLnN0b3JlLmRpc3BhdGNoKGJBKHt4QXhpc1R5cGU6dH0pKX1vbkNhcmRXaWR0aENoYW5nZWQodCl7dGhpcy5zdG9yZS5kaXNwYXRjaCh5QSh7Y2FyZE1pbldpZHRoOnR9KSl9b25DYXJkV2lkdGhSZXNldCgpe3RoaXMuc3RvcmUuZGlzcGF0Y2goX0EoKSl9b25IaXN0b2dyYW1Nb2RlQ2hhbmdlZCh0KXt0aGlzLnN0b3JlLmRpc3BhdGNoKGtBKHtoaXN0b2dyYW1Nb2RlOnR9KSl9b25TY2FsYXJTbW9vdGhpbmdDaGFuZ2VkKHQpe3RoaXMuc3RvcmUuZGlzcGF0Y2goQ0Eoe3Ntb290aGluZzp0fSkpfW9uU2NhbGFyUGFydGl0aW9uWFRvZ2dsZWQoKXt0aGlzLnN0b3JlLmRpc3BhdGNoKE1BKCkpfW9uSW1hZ2VCcmlnaHRuZXNzSW5NaWxsaUNoYW5nZWQodCl7dGhpcy5zdG9yZS5kaXNwYXRjaCh2QSh7YnJpZ2h0bmVzc0luTWlsbGk6dH0pKX1vbkltYWdlQnJpZ2h0bmVzc1Jlc2V0KCl7dGhpcy5zdG9yZS5kaXNwYXRjaChPQSgpKX1vbkltYWdlQ29udHJhc3RSZXNldCgpe3RoaXMuc3RvcmUuZGlzcGF0Y2goUEEoKSl9b25JbWFnZUNvbnRyYXN0SW5NaWxsaUNoYW5nZWQodCl7dGhpcy5zdG9yZS5kaXNwYXRjaCh4QSh7Y29udHJhc3RJbk1pbGxpOnR9KSl9b25JbWFnZVNob3dBY3R1YWxTaXplQ2hhbmdlZCgpe3RoaXMuc3RvcmUuZGlzcGF0Y2god0EoKSl9b25TZWxlY3RUaW1lRW5hYmxlVG9nZ2xlZCgpe3RoaXMuc3RvcmUuZGlzcGF0Y2goQkEoKSl9b25Vc2VSYW5nZVNlbGVjdFRpbWVUb2dnbGVkKCl7dGhpcy5zdG9yZS5kaXNwYXRjaChWQSgpKX1vblNlbGVjdFRpbWVDaGFuZ2VkKHQpe3ZhciBlO3RoaXMuc3RvcmUuZGlzcGF0Y2goRkEoe3N0YXJ0U3RlcDp0LnN0YXJ0LnN0ZXAsZW5kU3RlcDpudWxsPT09KGU9dC5lbmQpfHx2b2lkIDA9PT1lP3ZvaWQgMDplLnN0ZXB9KSl9fUZ5dC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8Rnl0KShnZihpUykpfSxGeXQuybVjbXA9c28oe3R5cGU6Rnl0LHNlbGVjdG9yczpbWyJtZXRyaWNzLWRhc2hib2FyZC1zZXR0aW5ncyJdXSxkZWNsczoxOCx2YXJzOjUxLGNvbnN0czpbWzMsImlzSW1hZ2VTdXBwb3J0RW5hYmxlZCIsInRvb2x0aXBTb3J0IiwiaWdub3JlT3V0bGllcnMiLCJ4QXhpc1R5cGUiLCJpc0NhcmRXaWR0aFNldHRpbmdFbmFibGVkIiwiY2FyZE1pbldpZHRoIiwiaGlzdG9ncmFtTW9kZSIsInNjYWxhclNtb290aGluZyIsInNjYWxhclBhcnRpdGlvblgiLCJpbWFnZUJyaWdodG5lc3NJbk1pbGxpIiwiaW1hZ2VDb250cmFzdEluTWlsbGkiLCJpbWFnZVNob3dBY3R1YWxTaXplIiwiaXNMaW5rZWRUaW1lRmVhdHVyZUVuYWJsZWQiLCJzZWxlY3RUaW1lRW5hYmxlZCIsInNlbGVjdGVkVGltZSIsInVzZVJhbmdlU2VsZWN0VGltZSIsInN0ZXBNaW5NYXgiLCJ0b29sdGlwU29ydENoYW5nZWQiLCJpZ25vcmVPdXRsaWVyc0NoYW5nZWQiLCJ4QXhpc1R5cGVDaGFuZ2VkIiwiY2FyZFdpZHRoQ2hhbmdlZCIsImNhcmRXaWR0aFJlc2V0IiwiaGlzdG9ncmFtTW9kZUNoYW5nZWQiLCJzY2FsYXJTbW9vdGhpbmdDaGFuZ2VkIiwic2NhbGFyUGFydGl0aW9uWFRvZ2dsZWQiLCJpbWFnZUJyaWdodG5lc3NJbk1pbGxpQ2hhbmdlZCIsImltYWdlQnJpZ2h0bmVzc1Jlc2V0IiwiaW1hZ2VDb250cmFzdEluTWlsbGlDaGFuZ2VkIiwiaW1hZ2VDb250cmFzdFJlc2V0IiwiaW1hZ2VTaG93QWN0dWFsU2l6ZUNoYW5nZWQiLCJzZWxlY3RUaW1lRW5hYmxlVG9nZ2xlZCIsInVzZVJhbmdlU2VsZWN0VGltZVRvZ2dsZWQiLCJzZWxlY3RUaW1lQ2hhbmdlZCJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoQ2YoMCwibWV0cmljcy1kYXNoYm9hcmQtc2V0dGluZ3MtY29tcG9uZW50IiwwKSxSZigidG9vbHRpcFNvcnRDaGFuZ2VkIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5vblRvb2x0aXBTb3J0Q2hhbmdlZChlKX0pKSgiaWdub3JlT3V0bGllcnNDaGFuZ2VkIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLm9uSWdub3JlT3V0bGllcnNDaGFuZ2VkKCl9KSkoInhBeGlzVHlwZUNoYW5nZWQiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLm9uWEF4aXNUeXBlQ2hhbmdlZChlKX0pKSgiY2FyZFdpZHRoQ2hhbmdlZCIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4ub25DYXJkV2lkdGhDaGFuZ2VkKGUpfSkpKCJjYXJkV2lkdGhSZXNldCIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5vbkNhcmRXaWR0aFJlc2V0KCl9KSkoImhpc3RvZ3JhbU1vZGVDaGFuZ2VkIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5vbkhpc3RvZ3JhbU1vZGVDaGFuZ2VkKGUpfSkpKCJzY2FsYXJTbW9vdGhpbmdDaGFuZ2VkIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5vblNjYWxhclNtb290aGluZ0NoYW5nZWQoZSl9KSkoInNjYWxhclBhcnRpdGlvblhUb2dnbGVkIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLm9uU2NhbGFyUGFydGl0aW9uWFRvZ2dsZWQoKX0pKSgiaW1hZ2VCcmlnaHRuZXNzSW5NaWxsaUNoYW5nZWQiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLm9uSW1hZ2VCcmlnaHRuZXNzSW5NaWxsaUNoYW5nZWQoZSl9KSkoImltYWdlQnJpZ2h0bmVzc1Jlc2V0IiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLm9uSW1hZ2VCcmlnaHRuZXNzUmVzZXQoKX0pKSgiaW1hZ2VDb250cmFzdEluTWlsbGlDaGFuZ2VkIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5vbkltYWdlQ29udHJhc3RJbk1pbGxpQ2hhbmdlZChlKX0pKSgiaW1hZ2VDb250cmFzdFJlc2V0IiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLm9uSW1hZ2VDb250cmFzdFJlc2V0KCl9KSkoImltYWdlU2hvd0FjdHVhbFNpemVDaGFuZ2VkIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLm9uSW1hZ2VTaG93QWN0dWFsU2l6ZUNoYW5nZWQoKX0pKSgic2VsZWN0VGltZUVuYWJsZVRvZ2dsZWQiLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4ub25TZWxlY3RUaW1lRW5hYmxlVG9nZ2xlZCgpfSkpKCJ1c2VSYW5nZVNlbGVjdFRpbWVUb2dnbGVkIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLm9uVXNlUmFuZ2VTZWxlY3RUaW1lVG9nZ2xlZCgpfSkpKCJzZWxlY3RUaW1lQ2hhbmdlZCIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4ub25TZWxlY3RUaW1lQ2hhbmdlZChlKX0pKSxfeSgxLCJhc3luYyIpLF95KDIsImFzeW5jIiksX3koMywiYXN5bmMiKSxfeSg0LCJhc3luYyIpLF95KDUsImFzeW5jIiksX3koNiwiYXN5bmMiKSxfeSg3LCJhc3luYyIpLF95KDgsImFzeW5jIiksX3koOSwiYXN5bmMiKSxfeSgxMCwiYXN5bmMiKSxfeSgxMSwiYXN5bmMiKSxfeSgxMiwiYXN5bmMiKSxfeSgxMywiYXN5bmMiKSxfeSgxNCwiYXN5bmMiKSxfeSgxNSwiYXN5bmMiKSxfeSgxNiwiYXN5bmMiKSxfeSgxNywiYXN5bmMiKSxNZigpKSwyJmUmJmJmKCJpc0ltYWdlU3VwcG9ydEVuYWJsZWQiLEN5KDEsMTcsbi5pc0ltYWdlU3VwcG9ydEVuYWJsZWQkKSkoInRvb2x0aXBTb3J0IixDeSgyLDE5LG4udG9vbHRpcFNvcnQkKSkoImlnbm9yZU91dGxpZXJzIixDeSgzLDIxLG4uaWdub3JlT3V0bGllcnMkKSkoInhBeGlzVHlwZSIsQ3koNCwyMyxuLnhBeGlzVHlwZSQpKSgiaXNDYXJkV2lkdGhTZXR0aW5nRW5hYmxlZCIsQ3koNSwyNSxuLmlzQ2FyZFdpZHRoU2V0dGluZ0VuYWJsZWQkKSkoImNhcmRNaW5XaWR0aCIsQ3koNiwyNyxuLmNhcmRNaW5XaWR0aCQpKSgiaGlzdG9ncmFtTW9kZSIsQ3koNywyOSxuLmhpc3RvZ3JhbU1vZGUkKSkoInNjYWxhclNtb290aGluZyIsQ3koOCwzMSxuLnNjYWxhclNtb290aGluZyQpKSgic2NhbGFyUGFydGl0aW9uWCIsQ3koOSwzMyxuLnNjYWxhclBhcnRpdGlvblgkKSkoImltYWdlQnJpZ2h0bmVzc0luTWlsbGkiLEN5KDEwLDM1LG4uaW1hZ2VCcmlnaHRuZXNzSW5NaWxsaSQpKSgiaW1hZ2VDb250cmFzdEluTWlsbGkiLEN5KDExLDM3LG4uaW1hZ2VDb250cmFzdEluTWlsbGkkKSkoImltYWdlU2hvd0FjdHVhbFNpemUiLEN5KDEyLDM5LG4uaW1hZ2VTaG93QWN0dWFsU2l6ZSQpKSgiaXNMaW5rZWRUaW1lRmVhdHVyZUVuYWJsZWQiLEN5KDEzLDQxLG4uaXNMaW5rZWRUaW1lRmVhdHVyZUVuYWJsZWQkKSkoInNlbGVjdFRpbWVFbmFibGVkIixDeSgxNCw0MyxuLnNlbGVjdFRpbWVFbmFibGVkJCkpKCJzZWxlY3RlZFRpbWUiLEN5KDE1LDQ1LG4uc2VsZWN0ZWRUaW1lJCkpKCJ1c2VSYW5nZVNlbGVjdFRpbWUiLEN5KDE2LDQ3LG4udXNlUmFuZ2VTZWxlY3RUaW1lJCkpKCJzdGVwTWluTWF4IixDeSgxNyw0OSxuLnN0ZXBNaW5NYXgkKSl9LGRpcmVjdGl2ZXM6W0h5dF0scGlwZXM6W1Z2XSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKEZ5dCxbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJtZXRyaWNzLWRhc2hib2FyZC1zZXR0aW5ncyIsdGVtcGxhdGU6J1xuICAgIDxtZXRyaWNzLWRhc2hib2FyZC1zZXR0aW5ncy1jb21wb25lbnRcbiAgICAgIFtpc0ltYWdlU3VwcG9ydEVuYWJsZWRdPSJpc0ltYWdlU3VwcG9ydEVuYWJsZWQkIHwgYXN5bmMiXG4gICAgICBbdG9vbHRpcFNvcnRdPSJ0b29sdGlwU29ydCQgfCBhc3luYyJcbiAgICAgICh0b29sdGlwU29ydENoYW5nZWQpPSJvblRvb2x0aXBTb3J0Q2hhbmdlZCgkZXZlbnQpIlxuICAgICAgW2lnbm9yZU91dGxpZXJzXT0iaWdub3JlT3V0bGllcnMkIHwgYXN5bmMiXG4gICAgICAoaWdub3JlT3V0bGllcnNDaGFuZ2VkKT0ib25JZ25vcmVPdXRsaWVyc0NoYW5nZWQoKSJcbiAgICAgIFt4QXhpc1R5cGVdPSJ4QXhpc1R5cGUkIHwgYXN5bmMiXG4gICAgICAoeEF4aXNUeXBlQ2hhbmdlZCk9Im9uWEF4aXNUeXBlQ2hhbmdlZCgkZXZlbnQpIlxuICAgICAgW2lzQ2FyZFdpZHRoU2V0dGluZ0VuYWJsZWRdPSJpc0NhcmRXaWR0aFNldHRpbmdFbmFibGVkJCB8IGFzeW5jIlxuICAgICAgW2NhcmRNaW5XaWR0aF09ImNhcmRNaW5XaWR0aCQgfCBhc3luYyJcbiAgICAgIChjYXJkV2lkdGhDaGFuZ2VkKT0ib25DYXJkV2lkdGhDaGFuZ2VkKCRldmVudCkiXG4gICAgICAoY2FyZFdpZHRoUmVzZXQpPSJvbkNhcmRXaWR0aFJlc2V0KCkiXG4gICAgICBbaGlzdG9ncmFtTW9kZV09Imhpc3RvZ3JhbU1vZGUkIHwgYXN5bmMiXG4gICAgICAoaGlzdG9ncmFtTW9kZUNoYW5nZWQpPSJvbkhpc3RvZ3JhbU1vZGVDaGFuZ2VkKCRldmVudCkiXG4gICAgICBbc2NhbGFyU21vb3RoaW5nXT0ic2NhbGFyU21vb3RoaW5nJCB8IGFzeW5jIlxuICAgICAgKHNjYWxhclNtb290aGluZ0NoYW5nZWQpPSJvblNjYWxhclNtb290aGluZ0NoYW5nZWQoJGV2ZW50KSJcbiAgICAgIFtzY2FsYXJQYXJ0aXRpb25YXT0ic2NhbGFyUGFydGl0aW9uWCQgfCBhc3luYyJcbiAgICAgIChzY2FsYXJQYXJ0aXRpb25YVG9nZ2xlZCk9Im9uU2NhbGFyUGFydGl0aW9uWFRvZ2dsZWQoKSJcbiAgICAgIFtpbWFnZUJyaWdodG5lc3NJbk1pbGxpXT0iaW1hZ2VCcmlnaHRuZXNzSW5NaWxsaSQgfCBhc3luYyJcbiAgICAgIChpbWFnZUJyaWdodG5lc3NJbk1pbGxpQ2hhbmdlZCk9Im9uSW1hZ2VCcmlnaHRuZXNzSW5NaWxsaUNoYW5nZWQoJGV2ZW50KSJcbiAgICAgIChpbWFnZUJyaWdodG5lc3NSZXNldCk9Im9uSW1hZ2VCcmlnaHRuZXNzUmVzZXQoKSJcbiAgICAgIFtpbWFnZUNvbnRyYXN0SW5NaWxsaV09ImltYWdlQ29udHJhc3RJbk1pbGxpJCB8IGFzeW5jIlxuICAgICAgKGltYWdlQ29udHJhc3RJbk1pbGxpQ2hhbmdlZCk9Im9uSW1hZ2VDb250cmFzdEluTWlsbGlDaGFuZ2VkKCRldmVudCkiXG4gICAgICAoaW1hZ2VDb250cmFzdFJlc2V0KT0ib25JbWFnZUNvbnRyYXN0UmVzZXQoKSJcbiAgICAgIFtpbWFnZVNob3dBY3R1YWxTaXplXT0iaW1hZ2VTaG93QWN0dWFsU2l6ZSQgfCBhc3luYyJcbiAgICAgIChpbWFnZVNob3dBY3R1YWxTaXplQ2hhbmdlZCk9Im9uSW1hZ2VTaG93QWN0dWFsU2l6ZUNoYW5nZWQoKSJcbiAgICAgIFtpc0xpbmtlZFRpbWVGZWF0dXJlRW5hYmxlZF09ImlzTGlua2VkVGltZUZlYXR1cmVFbmFibGVkJCB8IGFzeW5jIlxuICAgICAgW3NlbGVjdFRpbWVFbmFibGVkXT0ic2VsZWN0VGltZUVuYWJsZWQkIHwgYXN5bmMiXG4gICAgICBbc2VsZWN0ZWRUaW1lXT0ic2VsZWN0ZWRUaW1lJCB8IGFzeW5jIlxuICAgICAgW3VzZVJhbmdlU2VsZWN0VGltZV09InVzZVJhbmdlU2VsZWN0VGltZSQgfCBhc3luYyJcbiAgICAgIFtzdGVwTWluTWF4XT0ic3RlcE1pbk1heCQgfCBhc3luYyJcbiAgICAgIChzZWxlY3RUaW1lRW5hYmxlVG9nZ2xlZCk9Im9uU2VsZWN0VGltZUVuYWJsZVRvZ2dsZWQoKSJcbiAgICAgICh1c2VSYW5nZVNlbGVjdFRpbWVUb2dnbGVkKT0ib25Vc2VSYW5nZVNlbGVjdFRpbWVUb2dnbGVkKCkiXG4gICAgICAoc2VsZWN0VGltZUNoYW5nZWQpPSJvblNlbGVjdFRpbWVDaGFuZ2VkKCRldmVudCkiXG4gICAgPlxuICAgIDwvbWV0cmljcy1kYXNoYm9hcmQtc2V0dGluZ3MtY29tcG9uZW50PlxuICAnLGNoYW5nZURldGVjdGlvbjpqbi5PblB1c2h9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTppU31dfSksbnVsbCk7Y2xhc3MgTHl0e31mdW5jdGlvbiBCeXQodCxlKXtpZigxJnQmJnZmKDAsIm1ldHJpY3MtZmlsdGVyZWQtdmlldyIsOSksMiZ0KXtiZigiY2FyZE9ic2VydmVyIix6ZigpLmNhcmRPYnNlcnZlcil9fWZ1bmN0aW9uIFZ5dCh0LGUpezEmdCYmKENmKDAsImRpdiIsMTIpLHZmKDEsIm1hdC1zcGlubmVyIiwxMyksTWYoKSl9ZnVuY3Rpb24ganl0KHQsZSl7aWYoMSZ0KXtjb25zdCB0PXdmKCk7Q2YoMCwiZGl2IiwxNCksQ2YoMSwiZGl2IiwxNSksQ2YoMiwiaDIiLDE2KSxQdSgzLCJTZXR0aW5ncyIpLE1mKCksQ2YoNCwiYnV0dG9uIiwxNyksUmYoImNsaWNrIiwoZnVuY3Rpb24gZSgpe1BpKHQpO3JldHVybiB6ZigpLm9uQ2xvc2VTaWRlcGFuZUJ1dHRvbkNsaWNrZWQuZW1pdCgpfSkpLHZmKDUsIm1hdC1pY29uIiwxOCksTWYoKSxNZigpLHZmKDYsIm1ldHJpY3MtZGFzaGJvYXJkLXJpZ2h0LXBhbmUiKSxNZigpfX1MeXQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEx5dCl9LEx5dC7JtWNtcD1zbyh7dHlwZTpMeXQsc2VsZWN0b3JzOltbIm1ldHJpY3MtZGFzaGJvYXJkLXJpZ2h0LXBhbmUiXV0sZGVjbHM6MSx2YXJzOjAsdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmdmYoMCwibWV0cmljcy1kYXNoYm9hcmQtc2V0dGluZ3MiKX0sZGlyZWN0aXZlczpbRnl0XSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKEx5dCxbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJtZXRyaWNzLWRhc2hib2FyZC1yaWdodC1wYW5lIix0ZW1wbGF0ZToiPG1ldHJpY3MtZGFzaGJvYXJkLXNldHRpbmdzPjwvbWV0cmljcy1kYXNoYm9hcmQtc2V0dGluZ3M+IixjaGFuZ2VEZXRlY3Rpb246am4uT25QdXNofV19XSxudWxsLG51bGwpO2NvbnN0IFV5dD1mdW5jdGlvbih0KXtyZXR1cm57Y2hlY2tlZDp0LCJzZXR0aW5ncy1idXR0b24iOiEwfX07Y2xhc3MgV3l0e2NvbnN0cnVjdG9yKHQpe3RoaXMuaG9zdD10LHRoaXMub25TZXR0aW5nc0J1dHRvbkNsaWNrZWQ9bmV3IFN5LHRoaXMub25DbG9zZVNpZGVwYW5lQnV0dG9uQ2xpY2tlZD1uZXcgU3ksdGhpcy5vblBsdWdpblR5cGVUb2dnbGVkPW5ldyBTeSx0aGlzLm9uUGx1Z2luVHlwZUFsbFRvZ2dsZWQ9bmV3IFN5LHRoaXMuUGx1Z2luVHlwZT1LVCx0aGlzLmNhcmRPYnNlcnZlcj1uZXcgXzQodGhpcy5ob3N0Lm5hdGl2ZUVsZW1lbnQsIjYwMHB4IDBweCA2MDBweCAwcHgiKX19V3l0Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxXeXQpKGdmKEtoKSl9LFd5dC7JtWNtcD1zbyh7dHlwZTpXeXQsc2VsZWN0b3JzOltbIm1ldHJpY3MtbWFpbi12aWV3LWNvbXBvbmVudCJdXSxpbnB1dHM6e3Nob3dGaWx0ZXJlZFZpZXc6InNob3dGaWx0ZXJlZFZpZXciLGlzU2lkZXBhbmVPcGVuOiJpc1NpZGVwYW5lT3BlbiIsZmlsdGVyZWRQbHVnaW5UeXBlczoiZmlsdGVyZWRQbHVnaW5UeXBlcyIsaW5pdGlhbFRhZ3NMb2FkaW5nOiJpbml0aWFsVGFnc0xvYWRpbmcifSxvdXRwdXRzOntvblNldHRpbmdzQnV0dG9uQ2xpY2tlZDoib25TZXR0aW5nc0J1dHRvbkNsaWNrZWQiLG9uQ2xvc2VTaWRlcGFuZUJ1dHRvbkNsaWNrZWQ6Im9uQ2xvc2VTaWRlcGFuZUJ1dHRvbkNsaWNrZWQiLG9uUGx1Z2luVHlwZVRvZ2dsZWQ6Im9uUGx1Z2luVHlwZVRvZ2dsZWQiLG9uUGx1Z2luVHlwZUFsbFRvZ2dsZWQ6Im9uUGx1Z2luVHlwZUFsbFRvZ2dsZWQifSxkZWNsczoyMix2YXJzOjIxLGNvbnN0czpmdW5jdGlvbigpe2xldCB0LGU7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBuZ0kxOG5DbG9zdXJlTW9kZSYmbmdJMThuQ2xvc3VyZU1vZGUpe3Q9Z29vZy5nZXRNc2coIlRvZ2dsZSBzZXR0aW5ncyBzaWRlIHBhbmUiKX1lbHNlIHQ9JGxvY2FsaXplYDpMYWJlbCBvbiBhIHRvb2xiYXIgYnV0dG9uIHRvIHRvZ2dsZSB0aGUgc2V0dGluZ3Mgc2lkZSBwYW5lLuKQn2QzNTE2ZGI2YmJlNjg2MGE1NWJlYWI2NmU0OTY5ZGFjNjI1YjhkNzLikJ83NjU5Mjg1NDQ1NTgwODM4OTI1OlRvZ2dsZSBzZXR0aW5ncyBzaWRlIHBhbmVgO2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgbmdJMThuQ2xvc3VyZU1vZGUmJm5nSTE4bkNsb3N1cmVNb2RlKXtlPWdvb2cuZ2V0TXNnKCJDbG9zZSBzaWRlIHBhbmUiKX1lbHNlIGU9JGxvY2FsaXplYDpMYWJlbCBvbiBhIGJ1dHRvbiB0byBjbG9zZSB0aGUgc2V0dGluZ3Mgc2lkZSBwYW5lLuKQnzA0NTIxZGMwYjZhNjVjZjVjMzgyOTQ0YzlhOGI0Yjg0NGEzZTk1OTjikJ84MTU2NzY2OTk3NzQ3MTY1ODcxOkNsb3NlIHNpZGUgcGFuZWA7cmV0dXJuW1sxLCJ0b29sYmFyIl0sWyJtdWx0aXBsZSIsIiIsImFwcGVhcmFuY2UiLCJzdGFuZGFyZCIsMSwiZmlsdGVyLXZpZXciXSxbIm1hdC1idXR0b24iLCIiLCJyb2xlIiwiY2hlY2tib3giLDEsImZpbHRlci12aWV3LWJ1dHRvbiIsMywiY2xpY2siXSxbMSwicmlnaHQtaXRlbXMiXSxbIm1hdC1zdHJva2VkLWJ1dHRvbiIsIiIsImFyaWEtbGFiZWwiLHQsMywibmdDbGFzcyIsImNsaWNrIl0sWyJzdmdJY29uIiwic2V0dGluZ3NfMjRweCJdLFsxLCJzcGxpdC1jb250ZW50Il0sWyJjZGtTY3JvbGxhYmxlIiwiIl0sWzMsImNhcmRPYnNlcnZlciIsNCwibmdJZiJdLFszLCJjYXJkT2JzZXJ2ZXIiXSxbImNsYXNzIiwibG9hZGluZy1jb250YWluZXIiLDQsIm5nSWYiXSxbImNsYXNzIiwic2lkZWJhciIsNCwibmdJZiJdLFsxLCJsb2FkaW5nLWNvbnRhaW5lciJdLFsiZGlhbWV0ZXIiLCIzNiJdLFsxLCJzaWRlYmFyIl0sWzEsImhlYWRlciJdLFsxLCJ0aXRsZSJdLFsibWF0LWljb24tYnV0dG9uIiwiIiwiYXJpYS1sYWJlbCIsZSwzLCJjbGljayJdLFsic3ZnSWNvbiIsImNsb3NlXzI0cHgiXV19LHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihDZigwLCJkaXYiLDApLHZmKDEsIm1ldHJpY3MtdGFnLWZpbHRlciIpLENmKDIsIm1hdC1idXR0b24tdG9nZ2xlLWdyb3VwIiwxKSxDZigzLCJidXR0b24iLDIpLFJmKCJjbGljayIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5vblBsdWdpblR5cGVBbGxUb2dnbGVkLmVtaXQoKX0pKSxQdSg0LCIgQWxsICIpLE1mKCksQ2YoNSwiYnV0dG9uIiwyKSxSZigiY2xpY2siLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4ub25QbHVnaW5UeXBlVG9nZ2xlZC5lbWl0KG4uUGx1Z2luVHlwZS5TQ0FMQVJTKX0pKSxQdSg2LCIgU2NhbGFycyAiKSxNZigpLENmKDcsImJ1dHRvbiIsMiksUmYoImNsaWNrIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLm9uUGx1Z2luVHlwZVRvZ2dsZWQuZW1pdChuLlBsdWdpblR5cGUuSU1BR0VTKX0pKSxQdSg4LCIgSW1hZ2UgIiksTWYoKSxDZig5LCJidXR0b24iLDIpLFJmKCJjbGljayIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5vblBsdWdpblR5cGVUb2dnbGVkLmVtaXQobi5QbHVnaW5UeXBlLkhJU1RPR1JBTVMpfSkpLFB1KDEwLCIgSGlzdG9ncmFtICIpLE1mKCksTWYoKSxDZigxMSwiZGl2IiwzKSxDZigxMiwiYnV0dG9uIiw0KSxSZigiY2xpY2siLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4ub25TZXR0aW5nc0J1dHRvbkNsaWNrZWQuZW1pdCgpfSkpLHZmKDEzLCJtYXQtaWNvbiIsNSksUHUoMTQsIiBTZXR0aW5ncyAiKSxNZigpLE1mKCksTWYoKSxDZigxNSwiZGl2Iiw2KSxDZigxNiwiZGl2Iiw3KSxIbSgxNyxCeXQsMSwxLCJtZXRyaWNzLWZpbHRlcmVkLXZpZXciLDgpLHZmKDE4LCJtZXRyaWNzLXBpbm5lZC12aWV3Iiw5KSxIbSgxOSxWeXQsMiwwLCJkaXYiLDEwKSx2ZigyMCwibWV0cmljcy1jYXJkLWdyb3VwcyIsOSksTWYoKSxIbSgyMSxqeXQsNywwLCJkaXYiLDExKSxNZigpKSwyJmUmJihEYygzKSx5bSgiYXJpYS1jaGVja2VkIiwwPT09bi5maWx0ZXJlZFBsdWdpblR5cGVzLnNpemUpLERjKDIpLHltKCJhcmlhLWNoZWNrZWQiLG4uZmlsdGVyZWRQbHVnaW5UeXBlcy5oYXMobi5QbHVnaW5UeXBlLlNDQUxBUlMpKSxEYygyKSx5bSgiYXJpYS1jaGVja2VkIixuLmZpbHRlcmVkUGx1Z2luVHlwZXMuaGFzKG4uUGx1Z2luVHlwZS5JTUFHRVMpKSxEYygyKSx5bSgiYXJpYS1jaGVja2VkIixuLmZpbHRlcmVkUGx1Z2luVHlwZXMuaGFzKG4uUGx1Z2luVHlwZS5ISVNUT0dSQU1TKSksRGMoMyksYmYoIm5nQ2xhc3MiLGl5KDE5LFV5dCxuLmlzU2lkZXBhbmVPcGVuKSkseW0oImFyaWEtcHJlc3NlZCIsbi5pc1NpZGVwYW5lT3BlbiksRGMoNCksY3UoIm1haW4iLCEwKSgiZmlsdGVyLXZpZXciLG4uc2hvd0ZpbHRlcmVkVmlldyksRGMoMSksYmYoIm5nSWYiLG4uc2hvd0ZpbHRlcmVkVmlldyksRGMoMSksbHUoImRpc3BsYXkiLG4uc2hvd0ZpbHRlcmVkVmlldz8ibm9uZSI6IiIpLGJmKCJjYXJkT2JzZXJ2ZXIiLG4uY2FyZE9ic2VydmVyKSxEYygxKSxiZigibmdJZiIsbi5pbml0aWFsVGFnc0xvYWRpbmcpLERjKDEpLGx1KCJkaXNwbGF5IixuLnNob3dGaWx0ZXJlZFZpZXc/Im5vbmUiOiIiKSxiZigiY2FyZE9ic2VydmVyIixuLmNhcmRPYnNlcnZlciksRGMoMSksYmYoIm5nSWYiLG4uaXNTaWRlcGFuZU9wZW4pKX0sZGlyZWN0aXZlczpbUDQsQTQsTkwsQ3YsTXEsSkwsUHYscHl0LE15dCxTeXQsYTIsTHl0XSxzdHlsZXM6WycubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTJweDtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1iYWRnZS1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo5cHh9Lm1hdC1iYWRnZS1sYXJnZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4fS5tYXQtaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWhlYWRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAyNHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE2cHgvMjhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE1cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjgzKS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1oNltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC42NykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtYm9keS1zdHJvbmdbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MCAwIDEycHh9Lm1hdC1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FwdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTJweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6MzAwIDExMnB4LzExMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wNWVtO21hcmdpbjowIDAgNTZweH0ubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNTZweC81NnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMmVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNDVweC80OHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMDVlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDM0cHgvNDBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgNjRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FyZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjBweH0ubWF0LWNhcmQtc3VidGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcmQtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2hlY2tib3gtbGF5b3V0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC10cmFpbGluZy1pY29uLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmUubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxOHB4fS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jYWxlbmRhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FsZW5kYXItYm9keVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEzcHh9Lm1hdC1jYWxlbmRhci1ib2R5LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgdGhbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWRpYWxvZy10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMTI1O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTUwJTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjVlbTt3aWR0aDoxLjVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW07bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi41ZW0gMDtib3JkZXItdG9wOi44NDM3NWVtIHNvbGlkIHRyYW5zcGFyZW50fS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3RvcDotMC44NDM3NWVtO3BhZGRpbmctdG9wOi44NDM3NWVtfS5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjc1JTttYXJnaW4tdG9wOi42NjY2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNzkxNjY2NjY2N2VtKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi40Mzc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAycHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyM2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMjgxMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi41NDE2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNjY2NjY2NjY2N2VtKX1AbWVkaWEgcHJpbnR7Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIyZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIxZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMmVtKSBzY2FsZSgwLjc1KX19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjI1ZW0gMCAuNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4wOTM3NWVtO21hcmdpbi10b3A6LTAuNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MWVtIDAgMWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjg0Mzc1ZW07bWFyZ2luLXRvcDotMC4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH1pbnB1dC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDotMC4wNjI1ZW19Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1wYWdlLXNpemVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4fS5tYXQtcmFkaW8tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3RbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbX0ubWF0LXNsaWRlLXRvZ2dsZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXN0ZXBwZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc3RlcC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtc3RlcC1zdWItbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0Om5vcm1hbH0ubWF0LXN0ZXAtbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtc3RlcC1sYWJlbC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdGFiLWdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjB9Lm1hdC10b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEwcHg7cGFkZGluZy10b3A6NnB4O3BhZGRpbmctYm90dG9tOjZweH0ubWF0LXRvb2x0aXAtaGFuZHNldFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7cGFkZGluZy10b3A6OHB4O3BhZGRpbmctYm90dG9tOjhweH0ubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTZweH0ubWF0LW9wdGdyb3VwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LXNpbXBsZS1zbmFja2Jhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4fS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbltfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MTtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRyZWVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbmVzdGVkLXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtc2l6ZToxNHB4fS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdOm5vdCg6ZW1wdHkpe3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApfS5tYXQtcmlwcGxlLm1hdC1yaXBwbGUtdW5ib3VuZGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzp2aXNpYmxlfS5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO2JvcmRlci1yYWRpdXM6NTAlO3BvaW50ZXItZXZlbnRzOm5vbmU7dHJhbnNpdGlvbjpvcGFjaXR5LHRyYW5zZm9ybSAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7dHJhbnNmb3JtOnNjYWxlKDApfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpub25lfS5jZGstdmlzdWFsbHktaGlkZGVuW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6MDtjbGlwOnJlY3QoMCAwIDAgMCk7aGVpZ2h0OjFweDttYXJnaW46LTFweDtvdmVyZmxvdzpoaWRkZW47cGFkZGluZzowO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjFweDt3aGl0ZS1zcGFjZTpub3dyYXA7b3V0bGluZTowOy13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BvaW50ZXItZXZlbnRzOm5vbmU7dG9wOjA7bGVmdDowO2hlaWdodDoxMDAlO3dpZHRoOjEwMCV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdOmVtcHR5e2Rpc3BsYXk6bm9uZX0uY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LXBhbmVbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3BvaW50ZXItZXZlbnRzOmF1dG87Ym94LXNpemluZzpib3JkZXItYm94O3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7bWF4LXdpZHRoOjEwMCU7bWF4LWhlaWdodDoxMDAlfS5jZGstb3ZlcmxheS1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7bGVmdDowO3JpZ2h0OjA7ei1pbmRleDoxMDAwO3BvaW50ZXItZXZlbnRzOmF1dG87LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50O3RyYW5zaXRpb246b3BhY2l0eSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKTtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5Oi42fS5jZGstb3ZlcmxheS1kYXJrLWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjMyKX0uY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTowfS5jZGstb3ZlcmxheS1jb25uZWN0ZWQtcG9zaXRpb24tYm91bmRpbmctYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjttaW4td2lkdGg6MXB4O21pbi1oZWlnaHQ6MXB4fS5jZGstZ2xvYmFsLXNjcm9sbGJsb2NrW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt3aWR0aDoxMDAlO292ZXJmbG93LXk6c2Nyb2xsfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZVtfbmdjb250ZW50LSVDT01QJV17cmVzaXplOm5vbmV9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZ1tfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6YXV0byAhaW1wb3J0YW50O292ZXJmbG93OmhpZGRlbiAhaW1wb3J0YW50fXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmctZmlyZWZveFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6MCAhaW1wb3J0YW50fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnR7fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5ke30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxse2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydCAwcyAxbXN9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06bm90KDotd2Via2l0LWF1dG9maWxsKXthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5kIDBzIDFtc30ubWF0LWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1tZGMtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX1bX25naG9zdC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47aGVpZ2h0OjEwMCV9LnRvb2xiYXJbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNlYmViZWI7ZmxleDpub25lO2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47aGVpZ2h0OjQ4cHg7cGFkZGluZzowIDE2cHh9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgLnRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAudG9vbGJhcltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWJvdHRvbToxcHggc29saWQgIzU1NX0udG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBtZXRyaWNzLXRhZy1maWx0ZXJbX25nY29udGVudC0lQ09NUCVde2ZsZXg6MSAxIDEwMHB4fS50b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5yaWdodC1pdGVtc1tfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWxlZnQ6MXB4IHNvbGlkICNlYmViZWI7bWFyZ2luLWxlZnQ6MTZweDtwYWRkaW5nLWxlZnQ6MTZweH1ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICAudG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICAucmlnaHQtaXRlbXNbX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAudG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICAucmlnaHQtaXRlbXNbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1sZWZ0OjFweCBzb2xpZCAjNTU1fS5maWx0ZXItdmlld1tfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLXJhZGl1czo0cHg7ZmxleDpub25lO21hcmdpbi1yaWdodDo1cHh9LmZpbHRlci12aWV3W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLXJhZGl1czowO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0Om5vcm1hbDtoZWlnaHQ6MjVweDtsaW5lLWhlaWdodDoyNXB4O21pbi13aWR0aDp1bnNldDtwYWRkaW5nOjAgMTJweH0uZmlsdGVyLXZpZXdbX25nY29udGVudC0lQ09NUCVdICAgYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSArIGJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWxlZnQ6MXB4IHNvbGlkICNlYmViZWJ9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgLmZpbHRlci12aWV3W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gKyBidXR0b25bX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAuZmlsdGVyLXZpZXdbX25nY29udGVudC0lQ09NUCVdICAgYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSArIGJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWxlZnQ6MXB4IHNvbGlkICM1NTV9LmZpbHRlci12aWV3W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGJ1dHRvblthcmlhLWNoZWNrZWQ9dHJ1ZV1bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2UwZTBlMH1ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICAuZmlsdGVyLXZpZXdbX25nY29udGVudC0lQ09NUCVdICAgYnV0dG9uW2FyaWEtY2hlY2tlZD10cnVlXVtfbmdjb250ZW50LSVDT01QJV0sIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5maWx0ZXItdmlld1tfbmdjb250ZW50LSVDT01QJV0gICBidXR0b25bYXJpYS1jaGVja2VkPXRydWVdW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiMyMTIxMjF9LnNwbGl0LWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtvdmVyZmxvdy15OmF1dG87ZmxleDoxfS5tYWluW19uZ2NvbnRlbnQtJUNPTVAlXSwgLnNpZGViYXJbX25nY29udGVudC0lQ09NUCVde2NvbnRhaW46c3RyaWN0O292ZXJmbG93LXg6aGlkZGVuO292ZXJmbG93LXk6YXV0bzt3aWxsLWNoYW5nZTp0cmFuc2Zvcm0sc2Nyb2xsLXBvc2l0aW9ufS5tYWluW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNWY2Zjc7ZmxleDoxIDE7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbn1ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICAubWFpbltfbmdjb250ZW50LSVDT01QJV0sIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5tYWluW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiMzYTNhM2F9Lm1haW5bX25nY29udGVudC0lQ09NUCVdICAgbWV0cmljcy1maWx0ZXJlZC12aWV3W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1haW5bX25nY29udGVudC0lQ09NUCVdICAgbWV0cmljcy1waW5uZWQtdmlld1tfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2ViZWJlYn1ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICAubWFpbltfbmdjb250ZW50LSVDT01QJV0gICBtZXRyaWNzLWZpbHRlcmVkLXZpZXdbX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAubWFpbltfbmdjb250ZW50LSVDT01QJV0gICBtZXRyaWNzLWZpbHRlcmVkLXZpZXdbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1ib3R0b206MXB4IHNvbGlkICM1NTV9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgLm1haW5bX25nY29udGVudC0lQ09NUCVdICAgbWV0cmljcy1waW5uZWQtdmlld1tfbmdjb250ZW50LSVDT01QJV0sIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5tYWluW19uZ2NvbnRlbnQtJUNPTVAlXSAgIG1ldHJpY3MtcGlubmVkLXZpZXdbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1ib3R0b206MXB4IHNvbGlkICM1NTV9Lm1haW4uZmlsdGVyLXZpZXdbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OmhpZGRlbn0ubWFpbi5maWx0ZXItdmlld1tfbmdjb250ZW50LSVDT01QJV0gICBtZXRyaWNzLWZpbHRlcmVkLXZpZXdbX25nY29udGVudC0lQ09NUCVde2NvbnRhaW46Y29udGVudDtvdmVyZmxvdzphdXRvO3dpbGwtY2hhbmdlOnRyYW5zZm9ybSxzY3JvbGwtcG9zaXRpb259LmxvYWRpbmctY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXthbGlnbi1pdGVtczpjZW50ZXI7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXI7bWFyZ2luOjIwcHggMH0uc2lkZWJhcltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWxlZnQ6MXB4IHNvbGlkICNlYmViZWI7ZmxleDowIDAgMjUwcHh9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgLnNpZGViYXJbX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAuc2lkZWJhcltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWxlZnQ6MXB4IHNvbGlkICM1NTV9LnNpZGViYXJbX25nY29udGVudC0lQ09NUCVdICAgLmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2ViZWJlYjtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO2hlaWdodDo0MnB4O3BhZGRpbmc6MCAxNnB4fWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC5zaWRlYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAuc2lkZWJhcltfbmdjb250ZW50LSVDT01QJV0gICAuaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjNTU1fS5zaWRlYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLnRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MThweDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6bm9ybWFsO21hcmdpbjowfVtfbmdob3N0LSVDT01QJV0gICAuc2V0dGluZ3MtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxO2Rpc3BsYXk6aW5saW5lLWZsZXh9Ym9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLnNldHRpbmdzLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNyl9W19uZ2hvc3QtJUNPTVAlXSAgIC5zZXR0aW5ncy1idXR0b24uY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZTBlMGUwO2JvcmRlci1jb2xvcjojZTBlMGUwfWJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5zZXR0aW5ncy1idXR0b24uY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojMjEyMTIxfVtfbmdob3N0LSVDT01QJV0gICAuc2V0dGluZ3MtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgICAgLm1hdC1idXR0b24td3JhcHBlcntkaXNwbGF5OmlubGluZS1mbGV4O2FsaWduLWl0ZW1zOmNlbnRlcn1bX25naG9zdC0lQ09NUCVdICAgLnNldHRpbmdzLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICBtYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXJpZ2h0OjRweH0nXSxjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoV3l0LFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6Im1ldHJpY3MtbWFpbi12aWV3LWNvbXBvbmVudCIsdGVtcGxhdGVVcmw6Im1haW5fdmlld19jb21wb25lbnQubmcuaHRtbCIsc3R5bGVVcmxzOlsibWFpbl92aWV3X2NvbXBvbmVudC5jc3MiXSxjaGFuZ2VEZXRlY3Rpb246am4uT25QdXNofV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6S2h9XX0pLHtzaG93RmlsdGVyZWRWaWV3Olt7dHlwZTpSX31dLGlzU2lkZXBhbmVPcGVuOlt7dHlwZTpSX31dLGZpbHRlcmVkUGx1Z2luVHlwZXM6W3t0eXBlOlJffV0saW5pdGlhbFRhZ3NMb2FkaW5nOlt7dHlwZTpSX31dLG9uU2V0dGluZ3NCdXR0b25DbGlja2VkOlt7dHlwZTpFX31dLG9uQ2xvc2VTaWRlcGFuZUJ1dHRvbkNsaWNrZWQ6W3t0eXBlOkVffV0sb25QbHVnaW5UeXBlVG9nZ2xlZDpbe3R5cGU6RV99XSxvblBsdWdpblR5cGVBbGxUb2dnbGVkOlt7dHlwZTpFX31dfSk7Y2xhc3MgR3l0e2NvbnN0cnVjdG9yKHQpe3RoaXMuc3RvcmU9dCx0aGlzLmlzU2lkZXBhbmVPcGVuJD10aGlzLnN0b3JlLnNlbGVjdChOeiksdGhpcy5pbml0aWFsVGFnc0xvYWRpbmckPXRoaXMuc3RvcmUuc2VsZWN0KEpOKS5waXBlKFVlKCh0PT5udWxsPT09dC5sYXN0TG9hZGVkVGltZUluTXMpLCEwKSxWdCgodD0+dC5zdGF0ZT09PVVFLkxPQURJTkcmJm51bGw9PT10Lmxhc3RMb2FkZWRUaW1lSW5NcykpKSx0aGlzLnNob3dGaWx0ZXJlZFZpZXckPXRoaXMuc3RvcmUuc2VsZWN0KFB6KS5waXBlKFZ0KCh0PT50Lmxlbmd0aD4wKSkpLHRoaXMuZmlsdGVyZWRQbHVnaW5UeXBlcyQ9dGhpcy5zdG9yZS5zZWxlY3QoQXopfW9uU2V0dGluZ3NCdXR0b25DbGlja2VkKCl7dGhpcy5zdG9yZS5kaXNwYXRjaChwQSgpKX1vbkNsb3NlU2lkZXBhbmVCdXR0b25DbGlja2VkKCl7dGhpcy5zdG9yZS5kaXNwYXRjaChkQSgpKX1vblBsdWdpblZpc2liaWxpdHlUb2dnbGVkKHQpe3RoaXMuc3RvcmUuZGlzcGF0Y2goSUEoe3BsdWdpbjp0fSkpfW9uU2hvd0FsbFBsdWdpbnMoKXt0aGlzLnN0b3JlLmRpc3BhdGNoKEhBKCkpfX1HeXQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEd5dCkoZ2YoaVMpKX0sR3l0Lsm1Y21wPXNvKHt0eXBlOkd5dCxzZWxlY3RvcnM6W1sibWV0cmljcy1tYWluLXZpZXciXV0sZGVjbHM6NSx2YXJzOjEyLGNvbnN0czpbWzMsInNob3dGaWx0ZXJlZFZpZXciLCJpc1NpZGVwYW5lT3BlbiIsImluaXRpYWxUYWdzTG9hZGluZyIsImZpbHRlcmVkUGx1Z2luVHlwZXMiLCJvblNldHRpbmdzQnV0dG9uQ2xpY2tlZCIsIm9uQ2xvc2VTaWRlcGFuZUJ1dHRvbkNsaWNrZWQiLCJvblBsdWdpblR5cGVUb2dnbGVkIiwib25QbHVnaW5UeXBlQWxsVG9nZ2xlZCJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoQ2YoMCwibWV0cmljcy1tYWluLXZpZXctY29tcG9uZW50IiwwKSxSZigib25TZXR0aW5nc0J1dHRvbkNsaWNrZWQiLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4ub25TZXR0aW5nc0J1dHRvbkNsaWNrZWQoKX0pKSgib25DbG9zZVNpZGVwYW5lQnV0dG9uQ2xpY2tlZCIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5vbkNsb3NlU2lkZXBhbmVCdXR0b25DbGlja2VkKCl9KSkoIm9uUGx1Z2luVHlwZVRvZ2dsZWQiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLm9uUGx1Z2luVmlzaWJpbGl0eVRvZ2dsZWQoZSl9KSkoIm9uUGx1Z2luVHlwZUFsbFRvZ2dsZWQiLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4ub25TaG93QWxsUGx1Z2lucygpfSkpLF95KDEsImFzeW5jIiksX3koMiwiYXN5bmMiKSxfeSgzLCJhc3luYyIpLF95KDQsImFzeW5jIiksTWYoKSksMiZlJiZiZigic2hvd0ZpbHRlcmVkVmlldyIsQ3koMSw0LG4uc2hvd0ZpbHRlcmVkVmlldyQpKSgiaXNTaWRlcGFuZU9wZW4iLEN5KDIsNixuLmlzU2lkZXBhbmVPcGVuJCkpKCJpbml0aWFsVGFnc0xvYWRpbmciLEN5KDMsOCxuLmluaXRpYWxUYWdzTG9hZGluZyQpKSgiZmlsdGVyZWRQbHVnaW5UeXBlcyIsQ3koNCwxMCxuLmZpbHRlcmVkUGx1Z2luVHlwZXMkKSl9LGRpcmVjdGl2ZXM6W1d5dF0scGlwZXM6W1Z2XSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKEd5dCxbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJtZXRyaWNzLW1haW4tdmlldyIsdGVtcGxhdGU6J1xuICAgIDxtZXRyaWNzLW1haW4tdmlldy1jb21wb25lbnRcbiAgICAgIFtzaG93RmlsdGVyZWRWaWV3XT0ic2hvd0ZpbHRlcmVkVmlldyQgfCBhc3luYyJcbiAgICAgIFtpc1NpZGVwYW5lT3Blbl09ImlzU2lkZXBhbmVPcGVuJCB8IGFzeW5jIlxuICAgICAgW2luaXRpYWxUYWdzTG9hZGluZ109ImluaXRpYWxUYWdzTG9hZGluZyQgfCBhc3luYyJcbiAgICAgIFtmaWx0ZXJlZFBsdWdpblR5cGVzXT0iZmlsdGVyZWRQbHVnaW5UeXBlcyQgfCBhc3luYyJcbiAgICAgIChvblNldHRpbmdzQnV0dG9uQ2xpY2tlZCk9Im9uU2V0dGluZ3NCdXR0b25DbGlja2VkKCkiXG4gICAgICAob25DbG9zZVNpZGVwYW5lQnV0dG9uQ2xpY2tlZCk9Im9uQ2xvc2VTaWRlcGFuZUJ1dHRvbkNsaWNrZWQoKSJcbiAgICAgIChvblBsdWdpblR5cGVUb2dnbGVkKT0ib25QbHVnaW5WaXNpYmlsaXR5VG9nZ2xlZCgkZXZlbnQpIlxuICAgICAgKG9uUGx1Z2luVHlwZUFsbFRvZ2dsZWQpPSJvblNob3dBbGxQbHVnaW5zKCkiXG4gICAgPjwvbWV0cmljcy1tYWluLXZpZXctY29tcG9uZW50PlxuICAnLGNoYW5nZURldGVjdGlvbjpqbi5PblB1c2h9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTppU31dfSksbnVsbCk7Y29uc3QgWXl0PW5ldyBlcigiW01ldHJpY3NdIE1FVFJJQ1NfUHJvbW8gTWVzc2FnZSBDb21wb25lbnQiKTtmdW5jdGlvbiBxeXQodCxlKXsxJnQmJih4ZigwKSxGZigxKSxPZigpKX1jbGFzcyBaeXR7Y29uc3RydWN0b3IodCxlKXt0aGlzLnZpZXdDb250YWluZXJSZWY9dCx0aGlzLmNvbXBvbmVudEZhY3RvcnlSZXNvbHZlcj1lfW5nT25Jbml0KCl7aWYodGhpcy5jdXN0b21pemFibGVDb21wb25lbnQpe2NvbnN0IHQ9dGhpcy5jb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIucmVzb2x2ZUNvbXBvbmVudEZhY3RvcnkodGhpcy5jdXN0b21pemFibGVDb21wb25lbnQuY29uc3RydWN0b3IpO3RoaXMudmlld0NvbnRhaW5lclJlZi5jcmVhdGVDb21wb25lbnQodCl9fX1aeXQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFp5dCkoZ2YoRmIpLGdmKEdoKSl9LFp5dC7JtWNtcD1zbyh7dHlwZTpaeXQsc2VsZWN0b3JzOltbInRiLWN1c3RvbWl6YXRpb24iXV0saW5wdXRzOntjdXN0b21pemFibGVDb21wb25lbnQ6ImN1c3RvbWl6YWJsZUNvbXBvbmVudCJ9LG5nQ29udGVudFNlbGVjdG9yczpbIioiXSxkZWNsczoxLHZhcnM6MSxjb25zdHM6W1s0LCJuZ0lmIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihIZigpLEhtKDAscXl0LDIsMCwibmctY29udGFpbmVyIiwwKSksMiZlJiZiZigibmdJZiIsIW4uY3VzdG9taXphYmxlQ29tcG9uZW50KX0sZGlyZWN0aXZlczpbUHZdLGVuY2Fwc3VsYXRpb246Mn0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoWnl0LFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6InRiLWN1c3RvbWl6YXRpb24iLHRlbXBsYXRlOidcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPSIhY3VzdG9taXphYmxlQ29tcG9uZW50Ij5cbiAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgJ31dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOkZifSx7dHlwZTpHaH1dfSkse2N1c3RvbWl6YWJsZUNvbXBvbmVudDpbe3R5cGU6Ul99XX0pO2NsYXNzIFh5dHtjb25zdHJ1Y3Rvcih0KXt0aGlzLmN1c3RvbVByb21vTWVzc2FnZT10LHRoaXMub25EaXNtaXNzPW5ldyBTeSx0aGlzLm9uR29Ub1NjYWxhcnM9bmV3IFN5fX1YeXQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFh5dCkoZ2YoWXl0LDgpKX0sWHl0Lsm1Y21wPXNvKHt0eXBlOlh5dCxzZWxlY3RvcnM6W1sibWV0cmljcy1wcm9tby1ub3RpY2UtY29tcG9uZW50Il1dLG91dHB1dHM6e29uRGlzbWlzczoib25EaXNtaXNzIixvbkdvVG9TY2FsYXJzOiJvbkdvVG9TY2FsYXJzIn0sZGVjbHM6Nyx2YXJzOjEsY29uc3RzOltbMSwibWVzc2FnZSIsMywiY3VzdG9taXphYmxlQ29tcG9uZW50Il0sWzEsImdvLXRvLXNjYWxhcnMiLDMsImNsaWNrIl0sWzEsImRpc21pc3MiLDMsImNsaWNrIl0sWyJpbmxpbmUiLCIiLCJzdmdJY29uIiwiY2xvc2VfMjRweCJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoQ2YoMCwidGItY3VzdG9taXphdGlvbiIsMCksUHUoMSwiIFdlbGNvbWUgdG8gbmV3IGRlZmF1bHQgZXhwZXJpZW5jZSBvZiBUZW5zb3JCb2FyZC4gVGltZSBTZXJpZXMgbGV0cyB5b3UgdmlldyBhbGwgdmlzdWFsaXphdGlvbnMgYXQgb25jZSwgcHV0IHRoZW0gc2lkZS1ieS1zaWRlIHdpdGggcGlucywgYW5kIGN1c3RvbWl6ZSBjb2xvcnMuIFNjYWxhcnMgYW5kIG90aGVyIHBsdWdpbnMgYXJlIHN0aWxsIGF2YWlsYWJsZS4gIiksQ2YoMiwiYnV0dG9uIiwxKSxSZigiY2xpY2siLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4ub25Hb1RvU2NhbGFycy5lbWl0KCl9KSksUHUoMywiIEdvIHRvIFNjYWxhcnMgcGx1Z2luIiksTWYoKSxQdSg0LCIuXG4iKSxNZigpLENmKDUsImJ1dHRvbiIsMiksUmYoImNsaWNrIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLm9uRGlzbWlzcy5lbWl0KCl9KSksdmYoNiwibWF0LWljb24iLDMpLE1mKCkpLDImZSYmYmYoImN1c3RvbWl6YWJsZUNvbXBvbmVudCIsbi5jdXN0b21Qcm9tb01lc3NhZ2UpfSxkaXJlY3RpdmVzOltaeXQsTXFdLHN0eWxlczpbJy5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjlweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHh9Lm1hdC1oMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaGVhZGxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDI0cHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTVweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWg2W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1ib2R5LXN0cm9uZ1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYXJkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FyZC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MjRweH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNhbGVuZGFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZGlhbG9nLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVlbSAwO2JvcmRlci10b3A6Ljg0Mzc1ZW0gc29saWQgdHJhbnNwYXJlbnR9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17dG9wOi0wLjg0Mzc1ZW07cGFkZGluZy10b3A6Ljg0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6NzUlO21hcmdpbi10b3A6LjY2NjY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS43OTE2NjY2NjY3ZW0pfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjQzNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDJweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIzZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4yODEyNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LjU0MTY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS42NjY2NjY2NjY3ZW0pfUBtZWRpYSBwcmludHsubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjJlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjFlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyZW0pIHNjYWxlKDAuNzUpfX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouMjVlbSAwIC43NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjA5Mzc1ZW07bWFyZ2luLXRvcDotMC41ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoxZW0gMCAxZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuODQzNzVlbTttYXJnaW4tdG9wOi0wLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMiksIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fWlucHV0Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi0wLjA2MjVlbX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHh9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtfS5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1zdGVwLXN1Yi1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6bm9ybWFsfS5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1zdGVwLWxhYmVsLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10YWItZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MH0ubWF0LXRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTBweDtwYWRkaW5nLXRvcDo2cHg7cGFkZGluZy1ib3R0b206NnB4fS5tYXQtdG9vbHRpcC1oYW5kc2V0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4fS5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtc2ltcGxlLXNuYWNrYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHh9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoxO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjE0cHh9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV06bm90KDplbXB0eSl7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9Lm1hdC1yaXBwbGUubWF0LXJpcHBsZS11bmJvdW5kZWRbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OnZpc2libGV9Lm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJhZGl1czo1MCU7cG9pbnRlci1ldmVudHM6bm9uZTt0cmFuc2l0aW9uOm9wYWNpdHksdHJhbnNmb3JtIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTt0cmFuc2Zvcm06c2NhbGUoMCl9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9LmNkay12aXN1YWxseS1oaWRkZW5bX25nY29udGVudC0lQ09NUCVde2JvcmRlcjowO2NsaXA6cmVjdCgwIDAgMCAwKTtoZWlnaHQ6MXB4O21hcmdpbjotMXB4O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4O3doaXRlLXNwYWNlOm5vd3JhcDtvdXRsaW5lOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0sIC5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cG9pbnRlci1ldmVudHM6bm9uZTt0b3A6MDtsZWZ0OjA7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV06ZW1wdHl7ZGlzcGxheTpub25lfS5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktcGFuZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6YXV0bztib3gtc2l6aW5nOmJvcmRlci1ib3g7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDttYXgtd2lkdGg6MTAwJTttYXgtaGVpZ2h0OjEwMCV9LmNkay1vdmVybGF5LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDt6LWluZGV4OjEwMDA7cG9pbnRlci1ldmVudHM6YXV0bzstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnQ7dHJhbnNpdGlvbjpvcGFjaXR5IDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpO29wYWNpdHk6MH0uY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eToxfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6LjZ9LmNkay1vdmVybGF5LWRhcmstYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMzIpfS5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV0sIC5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWNvbm5lY3RlZC1wb3NpdGlvbi1ib3VuZGluZy1ib3hbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO21pbi13aWR0aDoxcHg7bWluLWhlaWdodDoxcHh9LmNkay1nbG9iYWwtc2Nyb2xsYmxvY2tbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3dpZHRoOjEwMCU7b3ZlcmZsb3cteTpzY3JvbGx9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplW19uZ2NvbnRlbnQtJUNPTVAlXXtyZXNpemU6bm9uZX10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDphdXRvICFpbXBvcnRhbnQ7b3ZlcmZsb3c6aGlkZGVuICFpbXBvcnRhbnR9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZy1maXJlZm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDowICFpbXBvcnRhbnR9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydHt9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmR7fS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGx7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0IDBzIDFtc30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOi13ZWJraXQtYXV0b2ZpbGwpe2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmQgMHMgMW1zfS5tYXQtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LW1kYy1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfVtfbmdob3N0LSVDT01QJV17ZGlzcGxheTpmbGV4O2ZvbnQtc2l6ZToxNHB4O2dhcDo1cHg7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47bGluZS1oZWlnaHQ6MjBweDtwYWRkaW5nOjVweCAxMHB4fWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtib3JkZXI6MDtjb2xvcjppbmhlcml0O2N1cnNvcjpwb2ludGVyO2ZvbnQ6aW5oZXJpdDtwYWRkaW5nOjB9YnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXTpob3Zlcnt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lfXRiLWN1c3RvbWl6YXRpb25bX25nY29udGVudC0lQ09NUCVdICAgYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMTk3NmQyfS5kaXNtaXNzW19uZ2NvbnRlbnQtJUNPTVAlXXthbGlnbi1zZWxmOmJhc2VsaW5lO2ZsZXg6bm9uZTtoZWlnaHQ6MjBweDt3aWR0aDoyMHB4fSddLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihYeXQsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoibWV0cmljcy1wcm9tby1ub3RpY2UtY29tcG9uZW50Iix0ZW1wbGF0ZVVybDoibWV0cmljc19wcm9tb19ub3RpY2VfY29tcG9uZW50Lm5nLmh0bWwiLHN0eWxlVXJsczpbIm1ldHJpY3NfcHJvbW9fbm90aWNlX2NvbXBvbmVudC5jc3MiXSxjaGFuZ2VEZXRlY3Rpb246am4uT25QdXNofV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6Y3IsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W1l5dF19XX1dfSkse29uRGlzbWlzczpbe3R5cGU6RV99XSxvbkdvVG9TY2FsYXJzOlt7dHlwZTpFX31dfSk7Y2xhc3MgS3l0e2NvbnN0cnVjdG9yKHQpe3RoaXMuc3RvcmU9dH1vbkRpc21pc3MoKXt0aGlzLnN0b3JlLmRpc3BhdGNoKGpBKCkpfW9uR29Ub1NjYWxhcnMoKXt0aGlzLnN0b3JlLmRpc3BhdGNoKFVBKCkpfX1mdW5jdGlvbiBKeXQodCxlKXsxJnQmJnZmKDAsIm1ldHJpY3MtcHJvbW8tbm90aWNlIiwzKX1LeXQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEt5dCkoZ2YoaVMpKX0sS3l0Lsm1Y21wPXNvKHt0eXBlOkt5dCxzZWxlY3RvcnM6W1sibWV0cmljcy1wcm9tby1ub3RpY2UiXV0sZGVjbHM6MSx2YXJzOjAsY29uc3RzOltbMywib25EaXNtaXNzIiwib25Hb1RvU2NhbGFycyJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoQ2YoMCwibWV0cmljcy1wcm9tby1ub3RpY2UtY29tcG9uZW50IiwwKSxSZigib25EaXNtaXNzIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLm9uRGlzbWlzcygpfSkpKCJvbkdvVG9TY2FsYXJzIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLm9uR29Ub1NjYWxhcnMoKX0pKSxNZigpKX0sZGlyZWN0aXZlczpbWHl0XSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKEt5dCxbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJtZXRyaWNzLXByb21vLW5vdGljZSIsdGVtcGxhdGU6JzxtZXRyaWNzLXByb21vLW5vdGljZS1jb21wb25lbnRcbiAgICAob25EaXNtaXNzKT0ib25EaXNtaXNzKCkiXG4gICAgKG9uR29Ub1NjYWxhcnMpPSJvbkdvVG9TY2FsYXJzKCkiXG4gID48L21ldHJpY3MtcHJvbW8tbm90aWNlLWNvbXBvbmVudD4nLGNoYW5nZURldGVjdGlvbjpqbi5PblB1c2h9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTppU31dfSksbnVsbCk7Y2xhc3MgUXl0e2NvbnN0cnVjdG9yKHQpe3RoaXMuc3RvcmU9dCx0aGlzLmlzQnV0dGVyQmFyRW5hYmxlZCQ9dGhpcy5zdG9yZS5zZWxlY3QoWUQpLnBpcGUoX2UodGhpcy5zdG9yZS5zZWxlY3QoVHopKSxWdCgoKFt0LGVdKT0+dCYmZSkpKX19UXl0Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxReXQpKGdmKGlTKSl9LFF5dC7JtWNtcD1zbyh7dHlwZTpReXQsc2VsZWN0b3JzOltbIm1ldHJpY3MtZGFzaGJvYXJkIl1dLGRlY2xzOjUsdmFyczozLGNvbnN0czpbWyJjbGFzcyIsIm5vdGljZSIsNCwibmdJZiJdLFsic2lkZWJhciIsIiJdLFsibWFpbiIsIiJdLFsxLCJub3RpY2UiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKEhtKDAsSnl0LDEsMCwibWV0cmljcy1wcm9tby1ub3RpY2UiLDApLF95KDEsImFzeW5jIiksQ2YoMiwidGItZGFzaGJvYXJkLWxheW91dCIpLHZmKDMsInJ1bnMtc2VsZWN0b3IiLDEpLHZmKDQsIm1ldHJpY3MtbWFpbi12aWV3IiwyKSxNZigpKSwyJmUmJmJmKCJuZ0lmIixDeSgxLDEsbi5pc0J1dHRlckJhckVuYWJsZWQkKSl9LGRpcmVjdGl2ZXM6W1B2LHYwLGI0LEd5dCxLeXRdLHBpcGVzOltWdl0sc3R5bGVzOlsnLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjEycHg7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtYmFkZ2Utc21hbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6OXB4fS5tYXQtYmFkZ2UtbGFyZ2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweH0ubWF0LWgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1oZWFkbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMjRweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNnB4LzI4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNXB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC44MykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtaDZbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuNjcpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWJvZHktc3Ryb25nW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjAgMCAxMnB4fS5tYXQtc21hbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDEycHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjMwMCAxMTJweC8xMTJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDVlbTttYXJnaW46MCAwIDU2cHh9Lm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDU2cHgvNTZweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDJlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDQ1cHgvNDhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDA1ZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAzNHB4LzQwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDY0cHh9Lm1hdC1ib3R0b20tc2hlZXQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhcmQtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjIwcHh9Lm1hdC1jYXJkLXN1YnRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXJkLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNoZWNrYm94LWxheW91dFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoyNHB4fS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtdHJhaWxpbmctaWNvbi5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MThweH0ubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1oZWFkZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9vdGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2FsZW5kYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhbGVuZGFyLWJvZHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxM3B4fS5tYXQtY2FsZW5kYXItYm9keS1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FsZW5kYXItcGVyaW9kLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRoW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo0MDB9Lm1hdC1kaWFsb2ctdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDoxLjEyNTtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE1MCU7bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS41ZW07d2lkdGg6MS41ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNWVtIDA7Ym9yZGVyLXRvcDouODQzNzVlbSBzb2xpZCB0cmFuc3BhcmVudH0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTAuODQzNzVlbTtwYWRkaW5nLXRvcDouODQzNzVlbX0ubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo3NSU7bWFyZ2luLXRvcDouNjY2NjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjc5MTY2NjY2NjdlbSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNDM3NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMnB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTJlbSkgc2NhbGUoMC43NSl9fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi4yNWVtIDAgLjc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMDkzNzVlbTttYXJnaW4tdG9wOi0wLjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjFlbSAwIDFlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS44NDM3NWVtO21hcmdpbi10b3A6LTAuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9aW5wdXQubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LTAuMDYyNWVtfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweH0ubWF0LXJhZGlvLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW19Lm1hdC1zbGlkZS10b2dnbGUtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXN0ZXAtc3ViLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDpub3JtYWx9Lm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRhYi1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowfS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMHB4O3BhZGRpbmctdG9wOjZweDtwYWRkaW5nLWJvdHRvbTo2cHh9Lm1hdC10b29sdGlwLWhhbmRzZXRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHh9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1zaW1wbGUtc25hY2tiYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjE7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo1MDB9Lm1hdC10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW5lc3RlZC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweH0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmVtcHR5KXt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKX0ubWF0LXJpcHBsZS5tYXQtcmlwcGxlLXVuYm91bmRlZFtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6dmlzaWJsZX0ubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItcmFkaXVzOjUwJTtwb2ludGVyLWV2ZW50czpub25lO3RyYW5zaXRpb246b3BhY2l0eSx0cmFuc2Zvcm0gMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO3RyYW5zZm9ybTpzY2FsZSgwKX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6bm9uZX0uY2RrLXZpc3VhbGx5LWhpZGRlbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjA7Y2xpcDpyZWN0KDAgMCAwIDApO2hlaWdodDoxcHg7bWFyZ2luOi0xcHg7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxcHg7d2hpdGUtc3BhY2U6bm93cmFwO291dGxpbmU6MDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb2ludGVyLWV2ZW50czpub25lO3RvcDowO2xlZnQ6MDtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXTplbXB0eXtkaXNwbGF5Om5vbmV9LmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1wYW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtwb2ludGVyLWV2ZW50czphdXRvO2JveC1zaXppbmc6Ym9yZGVyLWJveDt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O21heC13aWR0aDoxMDAlO21heC1oZWlnaHQ6MTAwJX0uY2RrLW92ZXJsYXktYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO2xlZnQ6MDtyaWdodDowO3otaW5kZXg6MTAwMDtwb2ludGVyLWV2ZW50czphdXRvOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudDt0cmFuc2l0aW9uOm9wYWNpdHkgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSk7b3BhY2l0eTowfS5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjF9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAuY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTouNn0uY2RrLW92ZXJsYXktZGFyay1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4zMil9LmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MH0uY2RrLW92ZXJsYXktY29ubmVjdGVkLXBvc2l0aW9uLWJvdW5kaW5nLWJveFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bWluLXdpZHRoOjFweDttaW4taGVpZ2h0OjFweH0uY2RrLWdsb2JhbC1zY3JvbGxibG9ja1tfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7d2lkdGg6MTAwJTtvdmVyZmxvdy15OnNjcm9sbH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemVbX25nY29udGVudC0lQ09NUCVde3Jlc2l6ZTpub25lfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmdbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OmF1dG8gIWltcG9ydGFudDtvdmVyZmxvdzpoaWRkZW4gIWltcG9ydGFudH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nLWZpcmVmb3hbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OjAgIWltcG9ydGFudH1Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0e31Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZHt9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbHthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnQgMHMgMW1zfS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCg6LXdlYmtpdC1hdXRvZmlsbCl7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZCAwcyAxbXN9Lm1hdC1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtbWRjLWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9W19uZ2hvc3QtJUNPTVAlXXtjb250YWluOnN0cmljdDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2hlaWdodDoxMDAlO2p1c3RpZnktY29udGVudDpzdHJldGNoO292ZXJmbG93OmhpZGRlbn0ubm90aWNlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI0NSwxNTcsLjg1KTtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjZmZlYjNiO2NvbG9yOiMyMTIxMjE7ZGlzcGxheTpibG9jaztmbGV4OjAgMH10Yi1kYXNoYm9hcmQtbGF5b3V0W19uZ2NvbnRlbnQtJUNPTVAlXXtmbGV4OjEgMTtvdmVyZmxvdzpoaWRkZW59bmF2W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Ym9yZGVyLXJpZ2h0OjFweCBzb2xpZCAjZWJlYmViO2ZsZXg6bm9uZTt3aWR0aDozNDBweH1ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICBuYXZbX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICBuYXZbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6IzMwMzAzMDtib3JkZXItcmlnaHQtY29sb3I6IzU1NX1tZXRyaWNzLW1haW4tdmlld1tfbmdjb250ZW50LSVDT01QJV17ZmxleDoxIDF9J10sY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKFF5dCxbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJtZXRyaWNzLWRhc2hib2FyZCIsdGVtcGxhdGU6J1xuICAgIDxtZXRyaWNzLXByb21vLW5vdGljZVxuICAgICAgKm5nSWY9ImlzQnV0dGVyQmFyRW5hYmxlZCQgfCBhc3luYyJcbiAgICAgIGNsYXNzPSJub3RpY2UiXG4gICAgPjwvbWV0cmljcy1wcm9tby1ub3RpY2U+XG4gICAgPHRiLWRhc2hib2FyZC1sYXlvdXQ+XG4gICAgICA8cnVucy1zZWxlY3RvciBzaWRlYmFyPjwvcnVucy1zZWxlY3Rvcj5cbiAgICAgIDxtZXRyaWNzLW1haW4tdmlldyBtYWluPjwvbWV0cmljcy1tYWluLXZpZXc+XG4gICAgPC90Yi1kYXNoYm9hcmQtbGF5b3V0PlxuICAnLHN0eWxlVXJsczpbIm1ldHJpY3NfY29udGFpbmVyLmNzcyJdLGNoYW5nZURldGVjdGlvbjpqbi5PblB1c2h9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTppU31dfSksbnVsbCk7Y2xhc3MgJHl0e30keXQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fCR5dCl9LCR5dC7JtW1vZD1mbyh7dHlwZTokeXR9KSwkeXQuybVpbmo9RG4oe2ltcG9ydHM6W1tyeCx2cSxJTF1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYigkeXQsW3t0eXBlOkxfLGFyZ3M6W3tkZWNsYXJhdGlvbnM6W3YwXSxleHBvcnRzOlt2MF0saW1wb3J0czpbcngsdnEsSUxdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmdW8oJHl0LHtkZWNsYXJhdGlvbnM6W3YwXSxpbXBvcnRzOltyeCx2cSxJTF0sZXhwb3J0czpbdjBdfSk7Y2xhc3MgdF90e310X3QuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHRfdCl9LHRfdC7JtW1vZD1mbyh7dHlwZTp0X3R9KSx0X3QuybVpbmo9RG4oe2ltcG9ydHM6W1tyeF1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYih0X3QsW3t0eXBlOkxfLGFyZ3M6W3tpbXBvcnRzOltyeF0sZGVjbGFyYXRpb25zOltaeXRdLGV4cG9ydHM6W1p5dF19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZ1byh0X3Qse2RlY2xhcmF0aW9uczpbWnl0XSxpbXBvcnRzOltyeF0sZXhwb3J0czpbWnl0XX0pO2NsYXNzIGVfdHt9ZV90Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxlX3QpfSxlX3QuybVtb2Q9Zm8oe3R5cGU6ZV90fSksZV90Lsm1aW5qPURuKHt9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKGVfdCxbe3R5cGU6TF8sYXJnczpbe2V4cG9ydHM6W04yXSxkZWNsYXJhdGlvbnM6W04yXX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnVvKGVfdCx7ZGVjbGFyYXRpb25zOltOMl0sZXhwb3J0czpbTjJdfSk7Y2xhc3Mgbl90e31uX3QuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fG5fdCl9LG5fdC7JtW1vZD1mbyh7dHlwZTpuX3R9KSxuX3QuybVpbmo9RG4oe2ltcG9ydHM6W1tyeCxlX3RdXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIobl90LFt7dHlwZTpMXyxhcmdzOlt7aW1wb3J0czpbcngsZV90XSxleHBvcnRzOltIMl0sZGVjbGFyYXRpb25zOltIMl19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZ1byhuX3Qse2RlY2xhcmF0aW9uczpbSDJdLGltcG9ydHM6W3J4LGVfdF0sZXhwb3J0czpbSDJdfSk7Y2xhc3Mgb190e31vX3QuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fG9fdCl9LG9fdC7JtW1vZD1mbyh7dHlwZTpvX3R9KSxvX3QuybVpbmo9RG4oe2ltcG9ydHM6W1tyeCxxMyx2cV1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihvX3QsW3t0eXBlOkxfLGFyZ3M6W3tkZWNsYXJhdGlvbnM6W1ozXSxleHBvcnRzOltaM10saW1wb3J0czpbcngscTMsdnFdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmdW8ob190LHtkZWNsYXJhdGlvbnM6W1ozXSxpbXBvcnRzOltyeCxxMyx2cV0sZXhwb3J0czpbWjNdfSk7Y2xhc3MgaV90e31pX3QuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGlfdCl9LGlfdC7JtW1vZD1mbyh7dHlwZTppX3R9KSxpX3QuybVpbmo9RG4oe2ltcG9ydHM6W1tyeF1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihpX3QsW3t0eXBlOkxfLGFyZ3M6W3tpbXBvcnRzOltyeF0sZXhwb3J0czpbRTJdLGRlY2xhcmF0aW9uczpbRTJdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmdW8oaV90LHtkZWNsYXJhdGlvbnM6W0UyXSxpbXBvcnRzOltyeF0sZXhwb3J0czpbRTJdfSk7Y2xhc3MgYV90e31hX3QuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGFfdCl9LGFfdC7JtW1vZD1mbyh7dHlwZTphX3R9KSxhX3QuybVpbmo9RG4oe2ltcG9ydHM6W1t3NSxyeCxuX3Qsb190LENVLElMLE1aLG5xLFRaLHZxLFhxLG4xLHIyLHUxLGszLGlfdCxGVl1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihhX3QsW3t0eXBlOkxfLGFyZ3M6W3tpbXBvcnRzOlt3NSxyeCxuX3Qsb190LENVLElMLE1aLG5xLFRaLHZxLFhxLG4xLHIyLHUxLGszLGlfdCxGVl0sZXhwb3J0czpbZzRdLGVudHJ5Q29tcG9uZW50czpbeTJdLGRlY2xhcmF0aW9uczpbYjIseTIsazIsUzIscDQsZzRdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmdW8oYV90LHtkZWNsYXJhdGlvbnM6W2IyLHkyLGsyLFMyLHA0LGc0XSxpbXBvcnRzOlt3NSxyeCxuX3Qsb190LENVLElMLE1aLG5xLFRaLHZxLFhxLG4xLHIyLHUxLGszLGlfdCxGVl0sZXhwb3J0czpbZzRdfSk7Y2xhc3Mgcl90e31yX3QuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHJfdCl9LHJfdC7JtW1vZD1mbyh7dHlwZTpyX3R9KSxyX3QuybVpbmo9RG4oe2ltcG9ydHM6W1tyeCxhX3RdXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIocl90LFt7dHlwZTpMXyxhcmdzOlt7aW1wb3J0czpbcngsYV90XSxleHBvcnRzOltiNF0sZGVjbGFyYXRpb25zOltoNCxiNF19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZ1byhyX3Qse2RlY2xhcmF0aW9uczpbaDQsYjRdLGltcG9ydHM6W3J4LGFfdF0sZXhwb3J0czpbYjRdfSk7Y2xhc3Mgc190e31zX3QuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHNfdCl9LHNfdC7JtW1vZD1mbyh7dHlwZTpzX3R9KSxzX3QuybVpbmo9RG4oe30pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoc190LFt7dHlwZTpMXyxhcmdzOlt7ZXhwb3J0czpbc2J0XSxkZWNsYXJhdGlvbnM6W3NidF19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZ1byhzX3Qse2RlY2xhcmF0aW9uczpbc2J0XSxleHBvcnRzOltzYnRdfSk7Y2xhc3MgbF90e31sX3QuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGxfdCl9LGxfdC7JtW1vZD1mbyh7dHlwZTpsX3R9KSxsX3QuybVpbmo9RG4oe2ltcG9ydHM6W1tyeF1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihsX3QsW3t0eXBlOkxfLGFyZ3M6W3tkZWNsYXJhdGlvbnM6W2podF0sZXhwb3J0czpbamh0XSxpbXBvcnRzOltyeF19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZ1byhsX3Qse2RlY2xhcmF0aW9uczpbamh0XSxpbXBvcnRzOltyeF0sZXhwb3J0czpbamh0XX0pO2NsYXNzIGNfdHt9Y190Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxjX3QpfSxjX3QuybVtb2Q9Zm8oe3R5cGU6Y190fSksY190Lsm1aW5qPURuKHtpbXBvcnRzOltbcngsSCQsc190LGxfdF1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihjX3QsW3t0eXBlOkxfLGFyZ3M6W3tkZWNsYXJhdGlvbnM6W2tidF0sZXhwb3J0czpba2J0XSxpbXBvcnRzOltyeCxIJCxzX3QsbF90XX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnVvKGNfdCx7ZGVjbGFyYXRpb25zOltrYnRdLGltcG9ydHM6W3J4LEgkLHNfdCxsX3RdLGV4cG9ydHM6W2tidF19KTtjbGFzcyBkX3R7fWRfdC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8ZF90KX0sZF90Lsm1bW9kPWZvKHt0eXBlOmRfdH0pLGRfdC7JtWluaj1Ebih7aW1wb3J0czpbW3J4XV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKGRfdCxbe3R5cGU6TF8sYXJnczpbe2RlY2xhcmF0aW9uczpbTDRdLGV4cG9ydHM6W0w0XSxpbXBvcnRzOltyeF19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZ1byhkX3Qse2RlY2xhcmF0aW9uczpbTDRdLGltcG9ydHM6W3J4XSxleHBvcnRzOltMNF19KTtjbGFzcyBwX3R7fXBfdC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8cF90KX0scF90Lsm1bW9kPWZvKHt0eXBlOnBfdH0pLHBfdC7JtWluaj1Ebih7aW1wb3J0czpbW3J4LG5fdF1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihwX3QsW3t0eXBlOkxfLGFyZ3M6W3tkZWNsYXJhdGlvbnM6W1c0LFU0XSxleHBvcnRzOltXNF0saW1wb3J0czpbcngsbl90XX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnVvKHBfdCx7ZGVjbGFyYXRpb25zOltXNCxVNF0saW1wb3J0czpbcngsbl90XSxleHBvcnRzOltXNF19KTtjbGFzcyBtX3R7fW1fdC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8bV90KX0sbV90Lsm1bW9kPWZvKHt0eXBlOm1fdH0pLG1fdC7JtWluaj1Ebih7aW1wb3J0czpbW3J4LHZxXV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKG1fdCxbe3R5cGU6TF8sYXJnczpbe2RlY2xhcmF0aW9uczpbVmh0XSxleHBvcnRzOltWaHRdLGltcG9ydHM6W3J4LHZxXX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnVvKG1fdCx7ZGVjbGFyYXRpb25zOltWaHRdLGltcG9ydHM6W3J4LHZxXSxleHBvcnRzOltWaHRdfSk7Y2xhc3MgZl90e31mX3QuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGZfdCl9LGZfdC7JtW1vZD1mbyh7dHlwZTpmX3R9KSxmX3QuybVpbmo9RG4oe2ltcG9ydHM6W1tyeCxjX3QsSUwsdnEscjIscF90LGRfdCxtX3RdXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoZl90LFt7dHlwZTpMXyxhcmdzOlt7ZGVjbGFyYXRpb25zOltMYnQsRmJ0XSxleHBvcnRzOltMYnRdLGltcG9ydHM6W3J4LGNfdCxJTCx2cSxyMixwX3QsZF90LG1fdF19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZ1byhmX3Qse2RlY2xhcmF0aW9uczpbTGJ0LEZidF0saW1wb3J0czpbcngsY190LElMLHZxLHIyLHBfdCxkX3QsbV90XSxleHBvcnRzOltMYnRdfSk7Y2xhc3MgdV90e311X3QuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHVfdCl9LHVfdC7JtW1vZD1mbyh7dHlwZTp1X3R9KSx1X3QuybVpbmo9RG4oe2ltcG9ydHM6W1tyeCxJTCx2cSxyMixSSixwX3QsZF90XV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKHVfdCxbe3R5cGU6TF8sYXJnczpbe2RlY2xhcmF0aW9uczpbdDYsJDRdLGV4cG9ydHM6W3Q2XSxpbXBvcnRzOltyeCxJTCx2cSxyMixSSixwX3QsZF90XX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnVvKHVfdCx7ZGVjbGFyYXRpb25zOlt0NiwkNF0saW1wb3J0czpbcngsSUwsdnEscjIsUkoscF90LGRfdF0sZXhwb3J0czpbdDZdfSk7Y2xhc3MgZ190e31nX3QuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGdfdCl9LGdfdC7JtW1vZD1mbyh7dHlwZTpnX3R9KSxnX3QuybVpbmo9RG4oe2ltcG9ydHM6W1tyeCxvVixJTCx2cSxUWixYcV1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihnX3QsW3t0eXBlOkxfLGFyZ3M6W3tkZWNsYXJhdGlvbnM6W01odCx1aHQsZWh0XSxleHBvcnRzOltNaHQsdWh0LGVodF0saW1wb3J0czpbcngsb1YsSUwsdnEsVFosWHFdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmdW8oZ190LHtkZWNsYXJhdGlvbnM6W01odCx1aHQsZWh0XSxpbXBvcnRzOltyeCxvVixJTCx2cSxUWixYcV0sZXhwb3J0czpbTWh0LHVodCxlaHRdfSk7Y2xhc3MgaF90e31oX3QuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGhfdCl9LGhfdC7JtW1vZD1mbyh7dHlwZTpoX3R9KSxoX3QuybVpbmo9RG4oe2ltcG9ydHM6W1tyeCxvVixnX3QsSCRdXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoaF90LFt7dHlwZTpMXyxhcmdzOlt7ZGVjbGFyYXRpb25zOltCaHRdLGV4cG9ydHM6W0JodF0saW1wb3J0czpbcngsb1YsZ190LEgkXX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnVvKGhfdCx7ZGVjbGFyYXRpb25zOltCaHRdLGltcG9ydHM6W3J4LG9WLGdfdCxIJF0sZXhwb3J0czpbQmh0XX0pO2NsYXNzIGJfdHt9Yl90Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxiX3QpfSxiX3QuybVtb2Q9Zm8oe3R5cGU6Yl90fSksYl90Lsm1aW5qPURuKHtpbXBvcnRzOltbcngsdFksSUwsbnEsVFosUFksSE5dXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoYl90LFt7dHlwZTpMXyxhcmdzOlt7ZGVjbGFyYXRpb25zOltmNixtNl0sZXhwb3J0czpbZjZdLGltcG9ydHM6W3J4LHRZLElMLG5xLFRaLFBZLEhOXSxlbnRyeUNvbXBvbmVudHM6W2Y2XX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnVvKGJfdCx7ZGVjbGFyYXRpb25zOltmNixtNl0saW1wb3J0czpbcngsdFksSUwsbnEsVFosUFksSE5dLGV4cG9ydHM6W2Y2XX0pO2NsYXNzIHlfdHt9eV90Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHx5X3QpfSx5X3QuybVtb2Q9Zm8oe3R5cGU6eV90fSkseV90Lsm1aW5qPURuKHtpbXBvcnRzOltbcngsYl90LG5fdCxzX3QsaF90LGxfdCxJTCx2cSxYcSxyMixIJCxkX3QsbV90XV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKHlfdCxbe3R5cGU6TF8sYXJnczpbe2RlY2xhcmF0aW9uczpbY2J0LHJidF0sZXhwb3J0czpbY2J0XSxpbXBvcnRzOltyeCxiX3Qsbl90LHNfdCxoX3QsbF90LElMLHZxLFhxLHIyLEgkLGRfdCxtX3RdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmdW8oeV90LHtkZWNsYXJhdGlvbnM6W2NidCxyYnRdLGltcG9ydHM6W3J4LGJfdCxuX3Qsc190LGhfdCxsX3QsSUwsdnEsWHEscjIsSCQsZF90LG1fdF0sZXhwb3J0czpbY2J0XX0pO2NsYXNzIF9fdHt9X190Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxfX3QpfSxfX3QuybVtb2Q9Zm8oe3R5cGU6X190fSksX190Lsm1aW5qPURuKHtpbXBvcnRzOltbcngsdV90LHlfdCxmX3Qsc190XV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKF9fdCxbe3R5cGU6TF8sYXJnczpbe2RlY2xhcmF0aW9uczpbQzQsR2J0LFlidF0sZXhwb3J0czpbQzQsWWJ0XSxpbXBvcnRzOltyeCx1X3QseV90LGZfdCxzX3RdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmdW8oX190LHtkZWNsYXJhdGlvbnM6W0M0LEdidCxZYnRdLGltcG9ydHM6W3J4LHVfdCx5X3QsZl90LHNfdF0sZXhwb3J0czpbQzQsWWJ0XX0pO2NsYXNzIENfdHt9Q190Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxDX3QpfSxDX3QuybVtb2Q9Zm8oe3R5cGU6Q190fSksQ190Lsm1aW5qPURuKHtpbXBvcnRzOltbcngsUFldXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoQ190LFt7dHlwZTpMXyxhcmdzOlt7ZGVjbGFyYXRpb25zOltSeXRdLGV4cG9ydHM6W1J5dF0saW1wb3J0czpbcngsUFldfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmdW8oQ190LHtkZWNsYXJhdGlvbnM6W1J5dF0saW1wb3J0czpbcngsUFldLGV4cG9ydHM6W1J5dF19KTtjbGFzcyBNX3R7fU1fdC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8TV90KX0sTV90Lsm1bW9kPWZvKHt0eXBlOk1fdH0pLE1fdC7JtWluaj1Ebih7aW1wb3J0czpbW3J4LENfdCxJTCx6NCxNWix2cSxQWSxSSixJTixpX3RdXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoTV90LFt7dHlwZTpMXyxhcmdzOlt7ZGVjbGFyYXRpb25zOltMeXQsSHl0LEZ5dF0sZXhwb3J0czpbTHl0XSxpbXBvcnRzOltyeCxDX3QsSUwsejQsTVosdnEsUFksUkosSU4saV90XX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnVvKE1fdCx7ZGVjbGFyYXRpb25zOltMeXQsSHl0LEZ5dF0saW1wb3J0czpbcngsQ190LElMLHo0LE1aLHZxLFBZLFJKLElOLGlfdF0sZXhwb3J0czpbTHl0XX0pO2NsYXNzIHZfdHt9dl90Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHx2X3QpfSx2X3QuybVtb2Q9Zm8oe3R5cGU6dl90fSksdl90Lsm1aW5qPURuKHtpbXBvcnRzOltbX190LHJ4LG9fdCxxMyxJTCx6NCx2cSxUWixyMixNX3QsaUJdXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIodl90LFt7dHlwZTpMXyxhcmdzOlt7ZGVjbGFyYXRpb25zOltpeXQsYXl0LEN5dCxNeXQsYnl0LHl5dCx4eXQsT3l0LGt5dCxTeXQsV3l0LEd5dCxPNCxQNCxkeXQscHl0XSxleHBvcnRzOltHeXRdLGltcG9ydHM6W19fdCxyeCxvX3QscTMsSUwsejQsdnEsVFoscjIsTV90LGlCXX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnVvKHZfdCx7ZGVjbGFyYXRpb25zOltpeXQsYXl0LEN5dCxNeXQsYnl0LHl5dCx4eXQsT3l0LGt5dCxTeXQsV3l0LEd5dCxPNCxQNCxkeXQscHl0XSxpbXBvcnRzOltfX3Qscngsb190LHEzLElMLHo0LHZxLFRaLHIyLE1fdCxpQl0sZXhwb3J0czpbR3l0XX0pO2NsYXNzIHhfdHt9eF90Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHx4X3QpfSx4X3QuybVtb2Q9Zm8oe3R5cGU6eF90fSkseF90Lsm1aW5qPURuKHtpbXBvcnRzOltbcngsdF90LCR5dCx2X3QsdnEsTV90LHJfdF1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYih4X3QsW3t0eXBlOkxfLGFyZ3M6W3tkZWNsYXJhdGlvbnM6W1F5dCxYeXQsS3l0XSxleHBvcnRzOltReXRdLGltcG9ydHM6W3J4LHRfdCwkeXQsdl90LHZxLE1fdCxyX3RdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmdW8oeF90LHtkZWNsYXJhdGlvbnM6W1F5dCxYeXQsS3l0XSxpbXBvcnRzOltyeCx0X3QsJHl0LHZfdCx2cSxNX3Qscl90XSxleHBvcnRzOltReXRdfSk7ZnVuY3Rpb24gT190KCl7cmV0dXJuW3thY3Rpb25DcmVhdG9yOnpBLGFsZXJ0RnJvbUFjdGlvbjp0PT57Y29uc3R7d2FzUGlubmVkOmUsY2FuQ3JlYXRlTmV3UGluczpufT10O3JldHVybiBlfHxuP251bGw6e2xvY2FsaXplZE1lc3NhZ2U6Ik1heCBwaW4gbGltaXQgZXhjZWVkZWQuIFJlbW92ZSBleGlzdGluZyBwaW5zIGJlZm9yZSBhZGRpbmcgbW9yZS4gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS90ZW5zb3JmbG93L3RlbnNvcmJvYXJkL2lzc3Vlcy80MjQyIn19fV19ZnVuY3Rpb24gUF90KCl7cmV0dXJuIGJTKEN6LCh0PT4oe3NjYWxhclNtb290aGluZzp0fSkpKX1mdW5jdGlvbiB3X3QoKXtyZXR1cm4gYlMoYnosKHQ9Pih7aWdub3JlT3V0bGllcnM6dH0pKSl9ZnVuY3Rpb24ga190KCl7cmV0dXJuIGJTKGh6LCh0PT4oe3Rvb2x0aXBTb3J0U3RyaW5nOlN0cmluZyh0KX0pKSl9ZnVuY3Rpb24gU190KCl7cmV0dXJuIGJTKFR6LCh0PT4oe3RpbWVTZXJpZXNQcm9tb3Rpb25EaXNtaXNzZWQ6IXR9KSkpfWZ1bmN0aW9uIERfdCgpe3JldHVybiBiUyhOeiwodD0+KHt0aW1lU2VyaWVzU2V0dGluZ3NQYW5lT3BlbmVkOnR9KSkpfWZ1bmN0aW9uIFJfdCgpe3JldHVybiBiUyhneiwodD0+KHt0aW1lU2VyaWVzQ2FyZE1pbldpZHRoOnR9KSkpfWNsYXNzIEVfdHt9ZnVuY3Rpb24gQV90KHQpe3JldHVybiB0LnN0YXJ0c1dpdGgoImNvdW50QCIpfWZ1bmN0aW9uIFRfdCh0KXtyZXR1cm4gdC5zdGFydHNXaXRoKCJuUE1JQCIpfHx0LnN0YXJ0c1dpdGgoIm5QTUlfZGlmZkAiKX1mdW5jdGlvbiBOX3QodCl7cmV0dXJuIHQuc3RhcnRzV2l0aCgiblBNSUAiKX1mdW5jdGlvbiB6X3QodCl7cmV0dXJuIHQuc3BsaXQoIkAiLDIpWzFdfUVfdC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8RV90KX0sRV90Lsm1bW9kPWZvKHt0eXBlOkVfdH0pLEVfdC7JtWluaj1Ebih7cHJvdmlkZXJzOlt7cHJvdmlkZTpmMCx1c2VGYWN0b3J5OmcwLGRlcHM6W3UwXX0se3Byb3ZpZGU6dTAsdXNlVmFsdWU6WE59XSxpbXBvcnRzOltbcngsUlIsZFQsTVguZm9yUGx1Z2luKCRULFF5dCksSE4seF90LFRTLmZvckZlYXR1cmUoWk4sczAsZjApLGhELmZvckZlYXR1cmUoW20wXSksbVQucmVnaXN0ZXJBbGVydEFjdGlvbnMoT190KSx6Ui5kZWZpbmVHbG9iYWxTZXR0aW5nKFBfdCkselIuZGVmaW5lR2xvYmFsU2V0dGluZyh3X3QpLHpSLmRlZmluZUdsb2JhbFNldHRpbmcoa190KSx6Ui5kZWZpbmVHbG9iYWxTZXR0aW5nKFNfdCkselIuZGVmaW5lR2xvYmFsU2V0dGluZyhEX3QpLHpSLmRlZmluZUdsb2JhbFNldHRpbmcoUl90KV1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihFX3QsW3t0eXBlOkxfLGFyZ3M6W3tpbXBvcnRzOltyeCxSUixkVCxNWC5mb3JQbHVnaW4oJFQsUXl0KSxITix4X3QsVFMuZm9yRmVhdHVyZShaTixzMCxmMCksaEQuZm9yRmVhdHVyZShbbTBdKSxtVC5yZWdpc3RlckFsZXJ0QWN0aW9ucyhPX3QpLHpSLmRlZmluZUdsb2JhbFNldHRpbmcoUF90KSx6Ui5kZWZpbmVHbG9iYWxTZXR0aW5nKHdfdCkselIuZGVmaW5lR2xvYmFsU2V0dGluZyhrX3QpLHpSLmRlZmluZUdsb2JhbFNldHRpbmcoU190KSx6Ui5kZWZpbmVHbG9iYWxTZXR0aW5nKERfdCkselIuZGVmaW5lR2xvYmFsU2V0dGluZyhSX3QpXSxwcm92aWRlcnM6W3twcm92aWRlOmYwLHVzZUZhY3Rvcnk6ZzAsZGVwczpbdTBdfSx7cHJvdmlkZTp1MCx1c2VWYWx1ZTpYTn1dLGVudHJ5Q29tcG9uZW50czpbUXl0XX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnVvKEVfdCx7aW1wb3J0czpbcngsUlIsZFQsTVgsSE4seF90LEFTLGdELG1ULHpSLHpSLHpSLHpSLHpSLHpSXX0pO3ZhciBJX3Q9e30sSF90PXt9LEZfdD17fSxMX3Q9e30sQl90PV9PJiZfTy5fX3ZhbHVlc3x8ZnVuY3Rpb24odCl7dmFyIGU9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmdFtTeW1ib2wuaXRlcmF0b3JdLG49MDtyZXR1cm4gZT9lLmNhbGwodCk6e25leHQ6ZnVuY3Rpb24oKXtyZXR1cm4gdCYmbj49dC5sZW5ndGgmJih0PXZvaWQgMCkse3ZhbHVlOnQmJnRbbisrXSxkb25lOiF0fX19fTtmdW5jdGlvbiBWX3QodCxlKXtyZXR1cm4gTWF0aC5mbG9vcihlKCkqdCl9ZnVuY3Rpb24gal90KHQpe2Zvcih2YXIgZT1bXSxuPTA7bjx0O24rKyllLnB1c2godm9pZCAwKTtyZXR1cm4gZX1mdW5jdGlvbiBVX3QodCxlKXtyZXR1cm4gal90KHQpLm1hcCgoZnVuY3Rpb24oKXtyZXR1cm4gZX0pKX1mdW5jdGlvbiBXX3QodCl7cmV0dXJuIFVfdCh0LDApfWZ1bmN0aW9uIEdfdCh0KXtyZXR1cm4gdC5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQrZX0pKX1PYmplY3QuZGVmaW5lUHJvcGVydHkoTF90LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxMX3QudGF1UmFuZEludD1WX3QsTF90LnRhdVJhbmQ9ZnVuY3Rpb24gWV90KHQpe3JldHVybiB0KCl9LExfdC5ub3JtPWZ1bmN0aW9uIHFfdCh0KXt2YXIgZSxuLG89MDt0cnl7Zm9yKHZhciBpPUJfdCh0KSxhPWkubmV4dCgpOyFhLmRvbmU7YT1pLm5leHQoKSl7bys9TWF0aC5wb3coYS52YWx1ZSwyKX19Y2F0Y2godCl7ZT17ZXJyb3I6dH19ZmluYWxseXt0cnl7YSYmIWEuZG9uZSYmKG49aS5yZXR1cm4pJiZuLmNhbGwoaSl9ZmluYWxseXtpZihlKXRocm93IGUuZXJyb3J9fXJldHVybiBNYXRoLnNxcnQobyl9LExfdC5lbXB0eT1qX3QsTF90LnJhbmdlPWZ1bmN0aW9uIFpfdCh0KXtyZXR1cm4gal90KHQpLm1hcCgoZnVuY3Rpb24odCxlKXtyZXR1cm4gZX0pKX0sTF90LmZpbGxlZD1VX3QsTF90Lnplcm9zPVdfdCxMX3Qub25lcz1mdW5jdGlvbiBYX3QodCl7cmV0dXJuIFVfdCh0LDEpfSxMX3QubGluZWFyPWZ1bmN0aW9uIEtfdCh0LGUsbil7cmV0dXJuIGpfdChuKS5tYXAoKGZ1bmN0aW9uKG8saSl7cmV0dXJuIHQraSooKGUtdCkvKG4tMSkpfSkpfSxMX3Quc3VtPUdfdCxMX3QubWVhbj1mdW5jdGlvbiBKX3QodCl7cmV0dXJuIEdfdCh0KS90Lmxlbmd0aH0sTF90Lm1heD1mdW5jdGlvbiBRX3QodCl7Zm9yKHZhciBlPTAsbj0wO248dC5sZW5ndGg7bisrKWU9dFtuXT5lP3Rbbl06ZTtyZXR1cm4gZX0sTF90Lm1heDJkPWZ1bmN0aW9uICRfdCh0KXtmb3IodmFyIGU9MCxuPTA7bjx0Lmxlbmd0aDtuKyspZm9yKHZhciBvPTA7bzx0W25dLmxlbmd0aDtvKyspZT10W25dW29dPmU/dFtuXVtvXTplO3JldHVybiBlfSxMX3QucmVqZWN0aW9uU2FtcGxlPWZ1bmN0aW9uIHRDdCh0LGUsbil7Zm9yKHZhciBvPVdfdCh0KSxpPTA7aTx0O2krKylmb3IodmFyIGE9ITA7YTspe2Zvcih2YXIgcj1WX3QoZSxuKSxzPSExLGw9MDtsPGk7bCsrKWlmKHI9PT1vW2xdKXtzPSEwO2JyZWFrfXN8fChhPSExKSxvW2ldPXJ9cmV0dXJuIG99LExfdC5yZXNoYXBlMmQ9ZnVuY3Rpb24gZUN0KHQsZSxuKXt2YXIgbz1bXSxpPTA7aWYodC5sZW5ndGghPT1lKm4pdGhyb3cgbmV3IEVycm9yKCJBcnJheSBkaW1lbnNpb25zIG11c3QgbWF0Y2ggaW5wdXQgbGVuZ3RoLiIpO2Zvcih2YXIgYT0wO2E8ZTthKyspe2Zvcih2YXIgcj1bXSxzPTA7czxuO3MrKylyLnB1c2godFtpXSksaSs9MTtvLnB1c2gocil9cmV0dXJuIG99O3ZhciBuQ3Q9X08mJl9PLl9faW1wb3J0U3Rhcnx8ZnVuY3Rpb24odCl7aWYodCYmdC5fX2VzTW9kdWxlKXJldHVybiB0O3ZhciBlPXt9O2lmKG51bGwhPXQpZm9yKHZhciBuIGluIHQpT2JqZWN0Lmhhc093blByb3BlcnR5LmNhbGwodCxuKSYmKGVbbl09dFtuXSk7cmV0dXJuIGUuZGVmYXVsdD10LGV9O09iamVjdC5kZWZpbmVQcm9wZXJ0eShGX3QsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBvQ3Q9bkN0KExfdCk7ZnVuY3Rpb24gaUN0KHQsZSl7dmFyIG49ZnVuY3Rpb24obil7cmV0dXJuIG9DdC5lbXB0eSh0KS5tYXAoKGZ1bmN0aW9uKCl7cmV0dXJuIG9DdC5maWxsZWQoZSxuKX0pKX0sbz1bXTtyZXR1cm4gby5wdXNoKG4oLTEpKSxvLnB1c2gobigxLzApKSxvLnB1c2gobigwKSksb31mdW5jdGlvbiBhQ3QodCxlLG4sbyxpKXtlPU1hdGguZmxvb3IoZSk7dmFyIGE9dFswXVtlXTtpZihuPj10WzFdW2VdWzBdKXJldHVybiAwO2Zvcih2YXIgcj0wO3I8YS5sZW5ndGg7cisrKWlmKG89PT1hW3JdKXJldHVybiAwO3JldHVybiByQ3QodCxlLG4sbyxpKX1mdW5jdGlvbiByQ3QodCxlLG4sbyxpKXt2YXIgYT10WzBdW2VdLHI9dFsxXVtlXSxzPXRbMl1bZV07aWYobj49clswXSlyZXR1cm4gMDtyWzBdPW4sYVswXT1vLHNbMF09aTtmb3IodmFyIGw9MCxjPTA7Oyl7dmFyIGQ9MipsKzEscD1kKzEsbT10WzBdWzBdLmxlbmd0aDtpZihkPj1tKWJyZWFrO2lmKHA+PW0pe2lmKCEocltkXT5uKSlicmVhaztjPWR9ZWxzZSBpZihyW2RdPj1yW3BdKXtpZighKG48cltkXSkpYnJlYWs7Yz1kfWVsc2V7aWYoIShuPHJbcF0pKWJyZWFrO2M9cH1yW2xdPXJbY10sYVtsXT1hW2NdLHNbbF09c1tjXSxsPWN9cmV0dXJuIHJbbF09bixhW2xdPW8sc1tsXT1pLDF9ZnVuY3Rpb24gc0N0KHQsZSxuLG8pe2Zvcig7MipvKzE8bjspe3ZhciBpPTIqbysxLGE9aSsxLHI9bztpZih0W3JdPHRbaV0mJihyPWkpLGE8biYmdFtyXTx0W2FdJiYocj1hKSxyPT09bylicmVhazt2YXIgcz10W29dO3Rbb109dFtyXSx0W3JdPXM7dmFyIGw9ZVtvXTtlW29dPWVbcl0sZVtyXT1sLG89cn19Rl90Lm1ha2VIZWFwPWlDdCxGX3QucmVqZWN0aW9uU2FtcGxlPWZ1bmN0aW9uIGxDdCh0LGUsbil7Zm9yKHZhciBvPW9DdC56ZXJvcyh0KSxpPTA7aTx0O2krKyl7Zm9yKHZhciBhPSEwLHI9MDthOyl7cj1vQ3QudGF1UmFuZEludChlLG4pO2Zvcih2YXIgcz0hMSxsPTA7bDxpO2wrKylpZihyPT09b1tsXSl7cz0hMDticmVha31zfHwoYT0hMSl9b1tpXT1yfXJldHVybiBvfSxGX3QuaGVhcFB1c2g9YUN0LEZfdC51bmNoZWNrZWRIZWFwUHVzaD1yQ3QsRl90LmJ1aWxkQ2FuZGlkYXRlcz1mdW5jdGlvbiBjQ3QodCxlLG4sbyxpKXtmb3IodmFyIGE9aUN0KGUsbykscj0wO3I8ZTtyKyspZm9yKHZhciBzPTA7czxuO3MrKylpZighKHRbMF1bcl1bc108MCkpe3ZhciBsPXRbMF1bcl1bc10sYz10WzJdW3JdW3NdLGQ9b0N0LnRhdVJhbmQoaSk7YUN0KGEscixkLGwsYyksYUN0KGEsbCxkLHIsYyksdFsyXVtyXVtzXT0wfXJldHVybiBhfSxGX3QuZGVoZWFwU29ydD1mdW5jdGlvbiBkQ3QodCl7Zm9yKHZhciBlPXRbMF0sbj10WzFdLG89MDtvPGUubGVuZ3RoO28rKylmb3IodmFyIGk9ZVtvXSxhPW5bb10scj0wO3I8aS5sZW5ndGgtMTtyKyspe3ZhciBzPWkubGVuZ3RoLXItMSxsPWEubGVuZ3RoLXItMSxjPWlbMF07aVswXT1pW3NdLGlbc109Yzt2YXIgZD1hWzBdO2FbMF09YVtsXSxhW2xdPWQsc0N0KGEsaSxsLDApfXJldHVybntpbmRpY2VzOmUsd2VpZ2h0czpufX0sRl90LnNtYWxsZXN0RmxhZ2dlZD1mdW5jdGlvbiBwQ3QodCxlKXtmb3IodmFyIG49dFswXVtlXSxvPXRbMV1bZV0saT10WzJdW2VdLGE9MS8wLHI9LTEscz0wO3M+bi5sZW5ndGg7cysrKTE9PT1pW3NdJiZvW3NdPGEmJihhPW9bc10scj1zKTtyZXR1cm4gcj49MD8oaVtyXT0wLE1hdGguZmxvb3IobltyXSkpOi0xfTt2YXIgbUN0LGZDdD17fSx1Q3Q9X08mJl9PLl9fcmVhZHx8ZnVuY3Rpb24odCxlKXt2YXIgbj0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZ0W1N5bWJvbC5pdGVyYXRvcl07aWYoIW4pcmV0dXJuIHQ7dmFyIG8saSxhPW4uY2FsbCh0KSxyPVtdO3RyeXtmb3IoOyh2b2lkIDA9PT1lfHxlLS0gPjApJiYhKG89YS5uZXh0KCkpLmRvbmU7KXIucHVzaChvLnZhbHVlKX1jYXRjaCh0KXtpPXtlcnJvcjp0fX1maW5hbGx5e3RyeXtvJiYhby5kb25lJiYobj1hLnJldHVybikmJm4uY2FsbChhKX1maW5hbGx5e2lmKGkpdGhyb3cgaS5lcnJvcn19cmV0dXJuIHJ9LGdDdD1fTyYmX08uX192YWx1ZXN8fGZ1bmN0aW9uKHQpe3ZhciBlPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJnRbU3ltYm9sLml0ZXJhdG9yXSxuPTA7cmV0dXJuIGU/ZS5jYWxsKHQpOntuZXh0OmZ1bmN0aW9uKCl7cmV0dXJuIHQmJm4+PXQubGVuZ3RoJiYodD12b2lkIDApLHt2YWx1ZTp0JiZ0W24rK10sZG9uZTohdH19fX0saEN0PV9PJiZfTy5fX2ltcG9ydFN0YXJ8fGZ1bmN0aW9uKHQpe2lmKHQmJnQuX19lc01vZHVsZSlyZXR1cm4gdDt2YXIgZT17fTtpZihudWxsIT10KWZvcih2YXIgbiBpbiB0KU9iamVjdC5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsbikmJihlW25dPXRbbl0pO3JldHVybiBlLmRlZmF1bHQ9dCxlfTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZkN0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgYkN0PWhDdChMX3QpLHlDdD0oZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSxuLG8pe2lmKHRoaXMuZW50cmllcz1uZXcgTWFwLHRoaXMublJvd3M9MCx0aGlzLm5Db2xzPTAsdC5sZW5ndGghPT1lLmxlbmd0aHx8dC5sZW5ndGghPT1uLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoInJvd3MsIGNvbHMgYW5kIHZhbHVlcyBhcnJheXMgbXVzdCBhbGwgaGF2ZSB0aGUgc2FtZSBsZW5ndGgiKTt0aGlzLm5Sb3dzPW9bMF0sdGhpcy5uQ29scz1vWzFdO2Zvcih2YXIgaT0wO2k8bi5sZW5ndGg7aSsrKXt2YXIgYT10W2ldLHI9ZVtpXTt0aGlzLmNoZWNrRGltcyhhLHIpO3ZhciBzPXRoaXMubWFrZUtleShhLHIpO3RoaXMuZW50cmllcy5zZXQocyx7dmFsdWU6bltpXSxyb3c6YSxjb2w6cn0pfX1yZXR1cm4gdC5wcm90b3R5cGUubWFrZUtleT1mdW5jdGlvbih0LGUpe3JldHVybiB0KyI6IitlfSx0LnByb3RvdHlwZS5jaGVja0RpbXM9ZnVuY3Rpb24odCxlKXtpZighKHQ8dGhpcy5uUm93cyYmZTx0aGlzLm5Db2xzKSl0aHJvdyBuZXcgRXJyb3IoInJvdyBhbmQvb3IgY29sIHNwZWNpZmllZCBvdXRzaWRlIG9mIG1hdHJpeCBkaW1lbnNpb25zIil9LHQucHJvdG90eXBlLnNldD1mdW5jdGlvbih0LGUsbil7dGhpcy5jaGVja0RpbXModCxlKTt2YXIgbz10aGlzLm1ha2VLZXkodCxlKTt0aGlzLmVudHJpZXMuaGFzKG8pP3RoaXMuZW50cmllcy5nZXQobykudmFsdWU9bjp0aGlzLmVudHJpZXMuc2V0KG8se3ZhbHVlOm4scm93OnQsY29sOmV9KX0sdC5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQsZSxuKXt2b2lkIDA9PT1uJiYobj0wKSx0aGlzLmNoZWNrRGltcyh0LGUpO3ZhciBvPXRoaXMubWFrZUtleSh0LGUpO3JldHVybiB0aGlzLmVudHJpZXMuaGFzKG8pP3RoaXMuZW50cmllcy5nZXQobykudmFsdWU6bn0sdC5wcm90b3R5cGUuZ2V0QWxsPWZ1bmN0aW9uKHQpe3ZvaWQgMD09PXQmJih0PSEwKTt2YXIgZT1bXTtyZXR1cm4gdGhpcy5lbnRyaWVzLmZvckVhY2goKGZ1bmN0aW9uKHQpe2UucHVzaCh0KX0pKSx0JiZlLnNvcnQoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQucm93PT09ZS5yb3c/dC5jb2wtZS5jb2w6dC5yb3ctZS5yb3d9KSksZX0sdC5wcm90b3R5cGUuZ2V0RGltcz1mdW5jdGlvbigpe3JldHVyblt0aGlzLm5Sb3dzLHRoaXMubkNvbHNdfSx0LnByb3RvdHlwZS5nZXRSb3dzPWZ1bmN0aW9uKCl7cmV0dXJuIEFycmF5LmZyb20odGhpcy5lbnRyaWVzLChmdW5jdGlvbih0KXt2YXIgZT11Q3QodCwyKTtyZXR1cm4gZVsxXS5yb3d9KSl9LHQucHJvdG90eXBlLmdldENvbHM9ZnVuY3Rpb24oKXtyZXR1cm4gQXJyYXkuZnJvbSh0aGlzLmVudHJpZXMsKGZ1bmN0aW9uKHQpe3ZhciBlPXVDdCh0LDIpO3JldHVybiBlWzFdLmNvbH0pKX0sdC5wcm90b3R5cGUuZ2V0VmFsdWVzPWZ1bmN0aW9uKCl7cmV0dXJuIEFycmF5LmZyb20odGhpcy5lbnRyaWVzLChmdW5jdGlvbih0KXt2YXIgZT11Q3QodCwyKTtyZXR1cm4gZVsxXS52YWx1ZX0pKX0sdC5wcm90b3R5cGUuZm9yRWFjaD1mdW5jdGlvbih0KXt0aGlzLmVudHJpZXMuZm9yRWFjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIHQoZS52YWx1ZSxlLnJvdyxlLmNvbCl9KSl9LHQucHJvdG90eXBlLm1hcD1mdW5jdGlvbihlKXt2YXIgbj1bXTt0aGlzLmVudHJpZXMuZm9yRWFjaCgoZnVuY3Rpb24odCl7bi5wdXNoKGUodC52YWx1ZSx0LnJvdyx0LmNvbCkpfSkpO3ZhciBvPVt0aGlzLm5Sb3dzLHRoaXMubkNvbHNdO3JldHVybiBuZXcgdCh0aGlzLmdldFJvd3MoKSx0aGlzLmdldENvbHMoKSxuLG8pfSx0LnByb3RvdHlwZS50b0FycmF5PWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPWJDdC5lbXB0eSh0aGlzLm5Sb3dzKS5tYXAoKGZ1bmN0aW9uKCl7cmV0dXJuIGJDdC56ZXJvcyh0Lm5Db2xzKX0pKTtyZXR1cm4gdGhpcy5lbnRyaWVzLmZvckVhY2goKGZ1bmN0aW9uKHQpe2VbdC5yb3ddW3QuY29sXT10LnZhbHVlfSkpLGV9LHR9KSgpO2ZDdC5TcGFyc2VNYXRyaXg9eUN0LGZDdC50cmFuc3Bvc2U9ZnVuY3Rpb24gX0N0KHQpe3ZhciBlPVtdLG49W10sbz1bXTtyZXR1cm4gdC5mb3JFYWNoKChmdW5jdGlvbih0LGksYSl7ZS5wdXNoKGkpLG4ucHVzaChhKSxvLnB1c2godCl9KSksbmV3IHlDdChuLGUsbyxbdC5uQ29scyx0Lm5Sb3dzXSl9LGZDdC5pZGVudGl0eT1mdW5jdGlvbiBDQ3QodCl7Zm9yKHZhciBlPXVDdCh0LDEpWzBdLG49bmV3IHlDdChbXSxbXSxbXSx0KSxvPTA7bzxlO28rKyluLnNldChvLG8sMSk7cmV0dXJuIG59LGZDdC5wYWlyd2lzZU11bHRpcGx5PWZ1bmN0aW9uIE1DdCh0LGUpe3JldHVybiBEQ3QodCxlLChmdW5jdGlvbih0LGUpe3JldHVybiB0KmV9KSl9LGZDdC5hZGQ9ZnVuY3Rpb24gdkN0KHQsZSl7cmV0dXJuIERDdCh0LGUsKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQrZX0pKX0sZkN0LnN1YnRyYWN0PWZ1bmN0aW9uIHhDdCh0LGUpe3JldHVybiBEQ3QodCxlLChmdW5jdGlvbih0LGUpe3JldHVybiB0LWV9KSl9LGZDdC5tYXhpbXVtPWZ1bmN0aW9uIE9DdCh0LGUpe3JldHVybiBEQ3QodCxlLChmdW5jdGlvbih0LGUpe3JldHVybiB0PmU/dDplfSkpfSxmQ3QubXVsdGlwbHlTY2FsYXI9ZnVuY3Rpb24gUEN0KHQsZSl7cmV0dXJuIHQubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdCplfSkpfSxmQ3QuZWxpbWluYXRlWmVyb3M9ZnVuY3Rpb24gd0N0KHQpe2Zvcih2YXIgZT1uZXcgU2V0LG49dC5nZXRWYWx1ZXMoKSxvPXQuZ2V0Um93cygpLGk9dC5nZXRDb2xzKCksYT0wO2E8bi5sZW5ndGg7YSsrKTA9PT1uW2FdJiZlLmFkZChhKTt2YXIgcj1mdW5jdGlvbih0LG4pe3JldHVybiFlLmhhcyhuKX0scz1uLmZpbHRlcihyKSxsPW8uZmlsdGVyKHIpLGM9aS5maWx0ZXIocik7cmV0dXJuIG5ldyB5Q3QobCxjLHMsdC5nZXREaW1zKCkpfSxmQ3Qubm9ybWFsaXplPWZ1bmN0aW9uIGtDdCh0LGUpe3ZhciBuLG87dm9pZCAwPT09ZSYmKGU9ImwyIik7dmFyIGk9U0N0W2VdLGE9bmV3IE1hcDt0LmZvckVhY2goKGZ1bmN0aW9uKHQsZSxuKXt2YXIgbz1hLmdldChlKXx8W107by5wdXNoKG4pLGEuc2V0KGUsbyl9KSk7dmFyIHI9bmV3IHlDdChbXSxbXSxbXSx0LmdldERpbXMoKSkscz1mdW5jdGlvbihlKXtmb3IodmFyIG49YS5nZXQoZSkuc29ydCgpLG89bi5tYXAoKGZ1bmN0aW9uKG4pe3JldHVybiB0LmdldChlLG4pfSkpLHM9aShvKSxsPTA7bDxzLmxlbmd0aDtsKyspci5zZXQoZSxuW2xdLHNbbF0pfTt0cnl7Zm9yKHZhciBsPWdDdChhLmtleXMoKSksYz1sLm5leHQoKTshYy5kb25lO2M9bC5uZXh0KCkpe3MoYy52YWx1ZSl9fWNhdGNoKHQpe249e2Vycm9yOnR9fWZpbmFsbHl7dHJ5e2MmJiFjLmRvbmUmJihvPWwucmV0dXJuKSYmby5jYWxsKGwpfWZpbmFsbHl7aWYobil0aHJvdyBuLmVycm9yfX1yZXR1cm4gcn07dmFyIFNDdD0oKG1DdD17fSkubWF4PWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0tMS8wLG49MDtuPHQubGVuZ3RoO24rKyllPXRbbl0+ZT90W25dOmU7cmV0dXJuIHQubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC9lfSkpfSxtQ3QubDE9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPTAsbj0wO248dC5sZW5ndGg7bisrKWUrPXRbbl07cmV0dXJuIHQubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC9lfSkpfSxtQ3QubDI9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPTAsbj0wO248dC5sZW5ndGg7bisrKWUrPU1hdGgucG93KHRbbl0sMik7cmV0dXJuIHQubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gTWF0aC5zcXJ0KE1hdGgucG93KHQsMikvZSl9KSl9LG1DdCk7ZnVuY3Rpb24gREN0KHQsZSxuKXtmb3IodmFyIG89bmV3IFNldCxpPVtdLGE9W10scj1bXSxzPWZ1bmN0aW9uKG8scyl7aS5wdXNoKG8pLGEucHVzaChzKTt2YXIgbD1uKHQuZ2V0KG8scyksZS5nZXQobyxzKSk7ci5wdXNoKGwpfSxsPXQuZ2V0VmFsdWVzKCksYz10LmdldFJvd3MoKSxkPXQuZ2V0Q29scygpLHA9MDtwPGwubGVuZ3RoO3ArKyl7by5hZGQoKGc9Y1twXSkrIjoiKyhoPWRbcF0pKSxzKGcsaCl9dmFyIG09ZS5nZXRWYWx1ZXMoKSxmPWUuZ2V0Um93cygpLHU9ZS5nZXRDb2xzKCk7Zm9yKHA9MDtwPG0ubGVuZ3RoO3ArKyl7dmFyIGcsaDtvLmhhcygoZz1mW3BdKSsiOiIrKGg9dVtwXSkpfHxzKGcsaCl9cmV0dXJuIG5ldyB5Q3QoaSxhLHIsW3QublJvd3MsdC5uQ29sc10pfWZDdC5nZXRDU1I9ZnVuY3Rpb24gUkN0KHQpe3ZhciBlPVtdO3QuZm9yRWFjaCgoZnVuY3Rpb24odCxuLG8pe2UucHVzaCh7dmFsdWU6dCxyb3c6bixjb2w6b30pfSkpLGUuc29ydCgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5yb3c9PT1lLnJvdz90LmNvbC1lLmNvbDp0LnJvdy1lLnJvd30pKTtmb3IodmFyIG49W10sbz1bXSxpPVtdLGE9LTEscj0wO3I8ZS5sZW5ndGg7cisrKXt2YXIgcz1lW3JdLGw9cy5yb3csYz1zLmNvbCxkPXMudmFsdWU7bCE9PWEmJihhPWwsaS5wdXNoKHIpKSxuLnB1c2goYyksby5wdXNoKGQpfXJldHVybntpbmRpY2VzOm4sdmFsdWVzOm8saW5kcHRyOml9fTt2YXIgRUN0PXt9LEFDdD17fSxUQ3Q9X08mJl9PLl9fcmVhZHx8ZnVuY3Rpb24odCxlKXt2YXIgbj0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZ0W1N5bWJvbC5pdGVyYXRvcl07aWYoIW4pcmV0dXJuIHQ7dmFyIG8saSxhPW4uY2FsbCh0KSxyPVtdO3RyeXtmb3IoOyh2b2lkIDA9PT1lfHxlLS0gPjApJiYhKG89YS5uZXh0KCkpLmRvbmU7KXIucHVzaChvLnZhbHVlKX1jYXRjaCh0KXtpPXtlcnJvcjp0fX1maW5hbGx5e3RyeXtvJiYhby5kb25lJiYobj1hLnJldHVybikmJm4uY2FsbChhKX1maW5hbGx5e2lmKGkpdGhyb3cgaS5lcnJvcn19cmV0dXJuIHJ9LE5DdD1fTyYmX08uX19zcHJlYWR8fGZ1bmN0aW9uKCl7Zm9yKHZhciB0PVtdLGU9MDtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXQ9dC5jb25jYXQoVEN0KGFyZ3VtZW50c1tlXSkpO3JldHVybiB0fSx6Q3Q9X08mJl9PLl9fdmFsdWVzfHxmdW5jdGlvbih0KXt2YXIgZT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZ0W1N5bWJvbC5pdGVyYXRvcl0sbj0wO3JldHVybiBlP2UuY2FsbCh0KTp7bmV4dDpmdW5jdGlvbigpe3JldHVybiB0JiZuPj10Lmxlbmd0aCYmKHQ9dm9pZCAwKSx7dmFsdWU6dCYmdFtuKytdLGRvbmU6IXR9fX19LElDdD1fTyYmX08uX19pbXBvcnRTdGFyfHxmdW5jdGlvbih0KXtpZih0JiZ0Ll9fZXNNb2R1bGUpcmV0dXJuIHQ7dmFyIGU9e307aWYobnVsbCE9dClmb3IodmFyIG4gaW4gdClPYmplY3QuaGFzT3duUHJvcGVydHkuY2FsbCh0LG4pJiYoZVtuXT10W25dKTtyZXR1cm4gZS5kZWZhdWx0PXQsZX07T2JqZWN0LmRlZmluZVByb3BlcnR5KEFDdCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIEhDdD1JQ3QoTF90KSxGQ3Q9ZnVuY3Rpb24gRkN0KHQsZSxuLG8pe3RoaXMuaHlwZXJwbGFuZXM9dCx0aGlzLm9mZnNldHM9ZSx0aGlzLmNoaWxkcmVuPW4sdGhpcy5pbmRpY2VzPW99O2Z1bmN0aW9uIExDdCh0LGUsbixvLGkpe2lmKHZvaWQgMD09PW4mJihuPTMwKSxlLmxlbmd0aD5uKXt2YXIgYT0oZnVuY3Rpb24gcih0LGUsbil7Zm9yKHZhciBvPXRbMF0ubGVuZ3RoLGk9SEN0LnRhdVJhbmRJbnQoZS5sZW5ndGgsbiksYT1IQ3QudGF1UmFuZEludChlLmxlbmd0aCxuKSxyPWVbaV0scz1lW2E9KGErPWk9PT1hPzE6MCklZS5sZW5ndGhdLGw9MCxjPUhDdC56ZXJvcyhvKSxkPTA7ZDxjLmxlbmd0aDtkKyspY1tkXT10W3JdW2RdLXRbc11bZF0sbC09Y1tkXSoodFtyXVtkXSt0W3NdW2RdKS8yO3ZhciBwPTAsbT0wLGY9SEN0Lnplcm9zKGUubGVuZ3RoKTtmb3IoZD0wO2Q8ZS5sZW5ndGg7ZCsrKXtmb3IodmFyIHU9bCxnPTA7ZzxvO2crKyl1Kz1jW2ddKnRbZVtkXV1bZ107MD09PXU/KGZbZF09SEN0LnRhdVJhbmRJbnQoMixuKSwwPT09ZltkXT9wKz0xOm0rPTEpOnU+MD8oZltkXT0wLHArPTEpOihmW2RdPTEsbSs9MSl9dmFyIGg9SEN0Lnplcm9zKHApLGI9SEN0Lnplcm9zKG0pO3A9MCxtPTA7Zm9yKGQ9MDtkPGYubGVuZ3RoO2QrKykwPT09ZltkXT8oaFtwXT1lW2RdLHArPTEpOihiW21dPWVbZF0sbSs9MSk7cmV0dXJue2luZGljZXNMZWZ0OmgsaW5kaWNlc1JpZ2h0OmIsaHlwZXJwbGFuZTpjLG9mZnNldDpsfX0pKHQsZSxpKSxzPWEuaW5kaWNlc1JpZ2h0LGw9YS5oeXBlcnBsYW5lLGM9YS5vZmZzZXQ7cmV0dXJue2xlZnRDaGlsZDpMQ3QodCxhLmluZGljZXNMZWZ0LG4sbysxLGkpLHJpZ2h0Q2hpbGQ6TEN0KHQscyxuLG8rMSxpKSxpc0xlYWY6ITEsaHlwZXJwbGFuZTpsLG9mZnNldDpjfX1yZXR1cm57aW5kaWNlczplLGlzTGVhZjohMH19ZnVuY3Rpb24gQkN0KHQsZSxuLG8saSxhLHIpe3ZhciBzO2lmKHQuaXNMZWFmKXJldHVybiBvW2FdWzBdPS1yLChzPWlbcl0pLnNwbGljZS5hcHBseShzLE5DdChbMCx0LmluZGljZXMubGVuZ3RoXSx0LmluZGljZXMpKSx7bm9kZU51bTphLGxlYWZOdW06cis9MX07ZVthXT10Lmh5cGVycGxhbmUsblthXT10Lm9mZnNldCxvW2FdWzBdPWErMTt2YXIgbD1hLGM9QkN0KHQubGVmdENoaWxkLGUsbixvLGksYSsxLHIpO3JldHVybiByPWMubGVhZk51bSxvW2xdWzFdPShhPWMubm9kZU51bSkrMSx7bm9kZU51bTooYz1CQ3QodC5yaWdodENoaWxkLGUsbixvLGksYSsxLHIpKS5ub2RlTnVtLGxlYWZOdW06Yy5sZWFmTnVtfX1mdW5jdGlvbiBWQ3QodCl7cmV0dXJuIHQuaXNMZWFmPzE6MStWQ3QodC5sZWZ0Q2hpbGQpK1ZDdCh0LnJpZ2h0Q2hpbGQpfWZ1bmN0aW9uIGpDdCh0KXtyZXR1cm4gdC5pc0xlYWY/MTpqQ3QodC5sZWZ0Q2hpbGQpK2pDdCh0LnJpZ2h0Q2hpbGQpfWZ1bmN0aW9uIFVDdCh0LGUsbixvKXtmb3IodmFyIGk9ZSxhPTA7YTxuLmxlbmd0aDthKyspaSs9dFthXSpuW2FdO3JldHVybiAwPT09aT9IQ3QudGF1UmFuZEludCgyLG8pOmk+MD8wOjF9QUN0LkZsYXRUcmVlPUZDdCxBQ3QubWFrZUZvcmVzdD1mdW5jdGlvbiBXQ3QodCxlLG4sbyl7dmFyIGk9TWF0aC5tYXgoMTAsZSk7cmV0dXJuIEhDdC5yYW5nZShuKS5tYXAoKGZ1bmN0aW9uKGUsbil7cmV0dXJuKGZ1bmN0aW9uIGEodCxlLG4sbyl7dm9pZCAwPT09ZSYmKGU9MzApO3ZhciBpPUhDdC5yYW5nZSh0Lmxlbmd0aCk7cmV0dXJuIExDdCh0LGksZSxuLG8pfSkodCxpLG4sbyl9KSkubWFwKChmdW5jdGlvbih0KXtyZXR1cm4oZnVuY3Rpb24gZSh0LG4pe3ZhciBvPVZDdCh0KSxpPWpDdCh0KSxhPUhDdC5yYW5nZShvKS5tYXAoKGZ1bmN0aW9uKCl7cmV0dXJuIEhDdC56ZXJvcyh0Lmh5cGVycGxhbmU/dC5oeXBlcnBsYW5lLmxlbmd0aDowKX0pKSxyPUhDdC56ZXJvcyhvKSxzPUhDdC5yYW5nZShvKS5tYXAoKGZ1bmN0aW9uKCl7cmV0dXJuWy0xLC0xXX0pKSxsPUhDdC5yYW5nZShpKS5tYXAoKGZ1bmN0aW9uKCl7cmV0dXJuIEhDdC5yYW5nZShuKS5tYXAoKGZ1bmN0aW9uKCl7cmV0dXJuLTF9KSl9KSk7cmV0dXJuIEJDdCh0LGEscixzLGwsMCwwKSxuZXcgRkN0KGEscixzLGwpfSkodCxpKX0pKX0sQUN0Lm1ha2VMZWFmQXJyYXk9ZnVuY3Rpb24gR0N0KHQpe3ZhciBlLG47aWYodC5sZW5ndGg+MCl7dmFyIG89W107dHJ5e2Zvcih2YXIgaT16Q3QodCksYT1pLm5leHQoKTshYS5kb25lO2E9aS5uZXh0KCkpe28ucHVzaC5hcHBseShvLE5DdChhLnZhbHVlLmluZGljZXMpKX19Y2F0Y2godCl7ZT17ZXJyb3I6dH19ZmluYWxseXt0cnl7YSYmIWEuZG9uZSYmKG49aS5yZXR1cm4pJiZuLmNhbGwoaSl9ZmluYWxseXtpZihlKXRocm93IGUuZXJyb3J9fXJldHVybiBvfXJldHVybltbLTFdXX0sQUN0LnNlYXJjaEZsYXRUcmVlPWZ1bmN0aW9uIFlDdCh0LGUsbil7Zm9yKHZhciBvPTA7ZS5jaGlsZHJlbltvXVswXT4wOyl7bz0wPT09VUN0KGUuaHlwZXJwbGFuZXNbb10sZS5vZmZzZXRzW29dLHQsbik/ZS5jaGlsZHJlbltvXVswXTplLmNoaWxkcmVuW29dWzFdfXJldHVybiBlLmluZGljZXNbLTEqZS5jaGlsZHJlbltvXVswXV19O3ZhciBxQ3Q9X08mJl9PLl9fdmFsdWVzfHxmdW5jdGlvbih0KXt2YXIgZT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZ0W1N5bWJvbC5pdGVyYXRvcl0sbj0wO3JldHVybiBlP2UuY2FsbCh0KTp7bmV4dDpmdW5jdGlvbigpe3JldHVybiB0JiZuPj10Lmxlbmd0aCYmKHQ9dm9pZCAwKSx7dmFsdWU6dCYmdFtuKytdLGRvbmU6IXR9fX19LFpDdD1fTyYmX08uX19pbXBvcnRTdGFyfHxmdW5jdGlvbih0KXtpZih0JiZ0Ll9fZXNNb2R1bGUpcmV0dXJuIHQ7dmFyIGU9e307aWYobnVsbCE9dClmb3IodmFyIG4gaW4gdClPYmplY3QuaGFzT3duUHJvcGVydHkuY2FsbCh0LG4pJiYoZVtuXT10W25dKTtyZXR1cm4gZS5kZWZhdWx0PXQsZX07T2JqZWN0LmRlZmluZVByb3BlcnR5KEVDdCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIFhDdD1aQ3QoRl90KSxLQ3Q9WkN0KGZDdCksSkN0PVpDdChBQ3QpLFFDdD1aQ3QoTF90KTtFQ3QubWFrZU5ORGVzY2VudD1mdW5jdGlvbiAkQ3QodCxlKXtyZXR1cm4gZnVuY3Rpb24gbihvLGksYSxyLHMsbCxjLGQpe3ZvaWQgMD09PXImJihyPTEwKSx2b2lkIDA9PT1zJiYocz01MCksdm9pZCAwPT09bCYmKGw9LjAwMSksdm9pZCAwPT09YyYmKGM9LjUpLHZvaWQgMD09PWQmJihkPSEwKTtmb3IodmFyIHA9by5sZW5ndGgsbT1YQ3QubWFrZUhlYXAoby5sZW5ndGgsYSksZj0wO2Y8by5sZW5ndGg7ZisrKWZvcih2YXIgdT1YQ3QucmVqZWN0aW9uU2FtcGxlKGEsby5sZW5ndGgsZSksZz0wO2c8dS5sZW5ndGg7ZysrKXt2YXIgaD10KG9bZl0sb1t1W2ddXSk7WEN0LmhlYXBQdXNoKG0sZixoLHVbZ10sMSksWEN0LmhlYXBQdXNoKG0sdVtnXSxoLGYsMSl9aWYoZClmb3IodmFyIGI9MDtiPGkubGVuZ3RoO2IrKylmb3IoZj0wO2Y8aVtiXS5sZW5ndGgmJiEoaVtiXVtmXTwwKTtmKyspZm9yKGc9ZisxO2c8aVtiXS5sZW5ndGgmJiEoaVtiXVtnXTwwKTtnKyspe2g9dChvW2lbYl1bZl1dLG9baVtiXVtnXV0pO1hDdC5oZWFwUHVzaChtLGlbYl1bZl0saCxpW2JdW2ddLDEpLFhDdC5oZWFwUHVzaChtLGlbYl1bZ10saCxpW2JdW2ZdLDEpfWZvcihiPTA7YjxyO2IrKyl7dmFyIHk9WEN0LmJ1aWxkQ2FuZGlkYXRlcyhtLHAsYSxzLGUpLF89MDtmb3IoZj0wO2Y8cDtmKyspZm9yKGc9MDtnPHM7ZysrKXt2YXIgQz1NYXRoLmZsb29yKHlbMF1bZl1bZ10pO2lmKCEoQzwwfHxRQ3QudGF1UmFuZChlKTxjKSlmb3IodmFyIE09MDtNPHM7TSsrKXt2YXIgdj1NYXRoLmZsb29yKHlbMF1bZl1bTV0pO2lmKCEodjwwfHwheVsyXVtmXVtnXSYmIXlbMl1bZl1bTV0pKXtoPXQob1tDXSxvW3ZdKTtfKz1YQ3QuaGVhcFB1c2gobSxDLGgsdiwxKSxfKz1YQ3QuaGVhcFB1c2gobSx2LGgsQywxKX19fWlmKF88PWwqYSpvLmxlbmd0aClicmVha31yZXR1cm4gWEN0LmRlaGVhcFNvcnQobSl9fSxFQ3QubWFrZUluaXRpYWxpemF0aW9ucz1mdW5jdGlvbiB0TXQodCl7cmV0dXJue2luaXRGcm9tUmFuZG9tOmZ1bmN0aW9uIGUobixvLGksYSxyKXtmb3IodmFyIHM9MDtzPGkubGVuZ3RoO3MrKylmb3IodmFyIGw9UUN0LnJlamVjdGlvblNhbXBsZShuLG8ubGVuZ3RoLHIpLGM9MDtjPGwubGVuZ3RoO2MrKylpZighKGxbY108MCkpe3ZhciBkPXQob1tsW2NdXSxpW3NdKTtYQ3QuaGVhcFB1c2goYSxzLGQsbFtjXSwxKX19LGluaXRGcm9tVHJlZTpmdW5jdGlvbiBuKGUsbyxpLGEscil7Zm9yKHZhciBzPTA7czxpLmxlbmd0aDtzKyspZm9yKHZhciBsPUpDdC5zZWFyY2hGbGF0VHJlZShpW3NdLGUsciksYz0wO2M8bC5sZW5ndGg7YysrKXtpZihsW2NdPDApcmV0dXJuO3ZhciBkPXQob1tsW2NdXSxpW3NdKTtYQ3QuaGVhcFB1c2goYSxzLGQsbFtjXSwxKX19fX0sRUN0Lm1ha2VJbml0aWFsaXplZE5OU2VhcmNoPWZ1bmN0aW9uIGVNdCh0KXtyZXR1cm4gZnVuY3Rpb24gZShuLG8saSxhKXtmb3IodmFyIHIscyxsPUtDdC5nZXRDU1IobyksYz1sLmluZGljZXMsZD1sLmluZHB0cixwPTA7cDxhLmxlbmd0aDtwKyspZm9yKHZhciBtPW5ldyBTZXQoaVswXVtwXSk7Oyl7dmFyIGY9WEN0LnNtYWxsZXN0RmxhZ2dlZChpLHApO2lmKC0xPT09ZilicmVhazt2YXIgdT1jLnNsaWNlKGRbZl0sZFtmKzFdKTt0cnl7Zm9yKHZhciBnPXFDdCh1KSxoPWcubmV4dCgpOyFoLmRvbmU7aD1nLm5leHQoKSl7dmFyIGI9aC52YWx1ZTtpZihiIT09ZiYmLTEhPT1iJiYhbS5oYXMoYikpe3ZhciB5PXQobltiXSxhW3BdKTtYQ3QudW5jaGVja2VkSGVhcFB1c2goaSxwLHksYiwxKSxtLmFkZChiKX19fWNhdGNoKHQpe3I9e2Vycm9yOnR9fWZpbmFsbHl7dHJ5e2gmJiFoLmRvbmUmJihzPWcucmV0dXJuKSYmcy5jYWxsKGcpfWZpbmFsbHl7aWYocil0aHJvdyByLmVycm9yfX19cmV0dXJuIGl9fSxFQ3QuaW5pdGlhbGl6ZVNlYXJjaD1mdW5jdGlvbiBuTXQodCxlLG4sbyxpLGEscil7dmFyIHMsbCxjPVhDdC5tYWtlSGVhcChuLmxlbmd0aCxvKTtpZihpKG8sZSxuLGMsciksdCl0cnl7Zm9yKHZhciBkPXFDdCh0KSxwPWQubmV4dCgpOyFwLmRvbmU7cD1kLm5leHQoKSl7YShwLnZhbHVlLGUsbixjLHIpfX1jYXRjaCh0KXtzPXtlcnJvcjp0fX1maW5hbGx5e3RyeXtwJiYhcC5kb25lJiYobD1kLnJldHVybikmJmwuY2FsbChkKX1maW5hbGx5e2lmKHMpdGhyb3cgcy5lcnJvcn19cmV0dXJuIGN9O2NvbnN0IG9NdD1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nO2Z1bmN0aW9uIGlNdCh0KXtyZXR1cm4gb010LmNhbGwodCkuZW5kc1dpdGgoIkFycmF5XSIpfWZ1bmN0aW9uIGFNdCh0LGUsbil7bGV0IG89MDtjb25zdCBpPW4oZSk7Zm9yKGxldCBlPTA7ZTx0LngubGVuZ3RoO2UrKylvKz1NYXRoLmFicyh0LnlbZV0taSh0LnhbZV0pKTtyZXR1cm4gb31jb25zdCByTXQ9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZztmdW5jdGlvbiBzTXQodCl7cmV0dXJuIHJNdC5jYWxsKHQpLmVuZHNXaXRoKCJBcnJheV0iKX1mdW5jdGlvbiBsTXQodCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOnt9O2lmKCFzTXQodCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiaW5wdXQgbXVzdCBiZSBhbiBhcnJheSIpO2lmKDA9PT10Lmxlbmd0aCl0aHJvdyBuZXcgVHlwZUVycm9yKCJpbnB1dCBtdXN0IG5vdCBiZSBlbXB0eSIpO3ZhciBuPWUuZnJvbUluZGV4LG89dm9pZCAwPT09bj8wOm4saT1lLnRvSW5kZXgsYT12b2lkIDA9PT1pP3QubGVuZ3RoOmk7aWYobzwwfHxvPj10Lmxlbmd0aHx8IU51bWJlci5pc0ludGVnZXIobykpdGhyb3cgbmV3IEVycm9yKCJmcm9tSW5kZXggbXVzdCBiZSBhIHBvc2l0aXZlIGludGVnZXIgc21hbGxlciB0aGFuIGxlbmd0aCIpO2lmKGE8PW98fGE+dC5sZW5ndGh8fCFOdW1iZXIuaXNJbnRlZ2VyKGEpKXRocm93IG5ldyBFcnJvcigidG9JbmRleCBtdXN0IGJlIGFuIGludGVnZXIgZ3JlYXRlciB0aGFuIGZyb21JbmRleCBhbmQgYXQgbW9zdCBlcXVhbCB0byBsZW5ndGgiKTtmb3IodmFyIHI9dFtvXSxzPW8rMTtzPGE7cysrKXRbc10+ciYmKHI9dFtzXSk7cmV0dXJuIHJ9ZnVuY3Rpb24gY010KHQpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp7fTtpZighc010KHQpKXRocm93IG5ldyBUeXBlRXJyb3IoImlucHV0IG11c3QgYmUgYW4gYXJyYXkiKTtpZigwPT09dC5sZW5ndGgpdGhyb3cgbmV3IFR5cGVFcnJvcigiaW5wdXQgbXVzdCBub3QgYmUgZW1wdHkiKTt2YXIgbj1lLmZyb21JbmRleCxvPXZvaWQgMD09PW4/MDpuLGk9ZS50b0luZGV4LGE9dm9pZCAwPT09aT90Lmxlbmd0aDppO2lmKG88MHx8bz49dC5sZW5ndGh8fCFOdW1iZXIuaXNJbnRlZ2VyKG8pKXRocm93IG5ldyBFcnJvcigiZnJvbUluZGV4IG11c3QgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyIHNtYWxsZXIgdGhhbiBsZW5ndGgiKTtpZihhPD1vfHxhPnQubGVuZ3RofHwhTnVtYmVyLmlzSW50ZWdlcihhKSl0aHJvdyBuZXcgRXJyb3IoInRvSW5kZXggbXVzdCBiZSBhbiBpbnRlZ2VyIGdyZWF0ZXIgdGhhbiBmcm9tSW5kZXggYW5kIGF0IG1vc3QgZXF1YWwgdG8gbGVuZ3RoIik7Zm9yKHZhciByPXRbb10scz1vKzE7czxhO3MrKyl0W3NdPHImJihyPXRbc10pO3JldHVybiByfWZ1bmN0aW9uIGRNdCh0KXt2YXIgZSxuPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp7fTtpZighc010KHQpKXRocm93IG5ldyBUeXBlRXJyb3IoImlucHV0IG11c3QgYmUgYW4gYXJyYXkiKTtpZigwPT09dC5sZW5ndGgpdGhyb3cgbmV3IFR5cGVFcnJvcigiaW5wdXQgbXVzdCBub3QgYmUgZW1wdHkiKTtpZih2b2lkIDAhPT1uLm91dHB1dCl7aWYoIXNNdChuLm91dHB1dCkpdGhyb3cgbmV3IFR5cGVFcnJvcigib3V0cHV0IG9wdGlvbiBtdXN0IGJlIGFuIGFycmF5IGlmIHNwZWNpZmllZCIpO2U9bi5vdXRwdXR9ZWxzZSBlPW5ldyBBcnJheSh0Lmxlbmd0aCk7dmFyIG89Y010KHQpLGk9bE10KHQpO2lmKG89PT1pKXRocm93IG5ldyBSYW5nZUVycm9yKCJtaW5pbXVtIGFuZCBtYXhpbXVtIGlucHV0IHZhbHVlcyBhcmUgZXF1YWwuIENhbm5vdCByZXNjYWxlIGEgY29uc3RhbnQgYXJyYXkiKTt2YXIgYT1uLm1pbixyPXZvaWQgMD09PWE/bi5hdXRvTWluTWF4P286MDphLHM9bi5tYXgsbD12b2lkIDA9PT1zP24uYXV0b01pbk1heD9pOjE6cztpZihyPj1sKXRocm93IG5ldyBSYW5nZUVycm9yKCJtaW4gb3B0aW9uIG11c3QgYmUgc21hbGxlciB0aGFuIG1heCBvcHRpb24iKTtmb3IodmFyIGM9KGwtcikvKGktbyksZD0wO2Q8dC5sZW5ndGg7ZCsrKWVbZF09KHRbZF0tbykqYytyO3JldHVybiBlfWNvbnN0IHBNdD0iICIucmVwZWF0KDIpLG1NdD0iICIucmVwZWF0KDQpO2Z1bmN0aW9uIGZNdCh0LGU9e30pe2NvbnN0e21heFJvd3M6bj0xNSxtYXhDb2x1bW5zOm89MTAsbWF4TnVtU2l6ZTppPTh9PWU7cmV0dXJuYCR7dC5jb25zdHJ1Y3Rvci5uYW1lfSB7XG4ke3BNdH1bXG4ke21NdH0keyhmdW5jdGlvbiBhKHQsZSxuLG8pe2NvbnN0e3Jvd3M6aSxjb2x1bW5zOmF9PXQscj1NYXRoLm1pbihpLGUpLHM9TWF0aC5taW4oYSxuKSxsPVtdO2ZvcihsZXQgZT0wO2U8cjtlKyspe2xldCBuPVtdO2ZvcihsZXQgaT0wO2k8cztpKyspbi5wdXNoKHVNdCh0LmdldChlLGkpLG8pKTtsLnB1c2goYCR7bi5qb2luKCIgIil9YCl9cyE9PWEmJihsW2wubGVuZ3RoLTFdKz1gIC4uLiAke2Etbn0gbW9yZSBjb2x1bW5zYCk7ciE9PWkmJmwucHVzaChgLi4uICR7aS1lfSBtb3JlIHJvd3NgKTtyZXR1cm4gbC5qb2luKGBcbiR7bU10fWApfSkodCxuLG8saSl9XG4ke3BNdH1dXG4ke3BNdH1yb3dzOiAke3Qucm93c31cbiR7cE10fWNvbHVtbnM6ICR7dC5jb2x1bW5zfVxufWB9ZnVuY3Rpb24gdU10KHQsZSl7Y29uc3Qgbj1TdHJpbmcodCk7aWYobi5sZW5ndGg8PWUpcmV0dXJuIG4ucGFkRW5kKGUsIiAiKTtjb25zdCBvPXQudG9QcmVjaXNpb24oZS0yKTtpZihvLmxlbmd0aDw9ZSlyZXR1cm4gbztjb25zdCBpPXQudG9FeHBvbmVudGlhbChlLTIpLGE9aS5pbmRleE9mKCJlIikscj1pLnNsaWNlKGEpO3JldHVybiBpLnNsaWNlKDAsZS1yLmxlbmd0aCkrcn1mdW5jdGlvbiBnTXQodCxlLG4pe2lmKGU8MHx8ZT4obj90LnJvd3M6dC5yb3dzLTEpKXRocm93IG5ldyBSYW5nZUVycm9yKCJSb3cgaW5kZXggb3V0IG9mIHJhbmdlIil9ZnVuY3Rpb24gaE10KHQsZSxuKXtpZihlPDB8fGU+KG4/dC5jb2x1bW5zOnQuY29sdW1ucy0xKSl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiQ29sdW1uIGluZGV4IG91dCBvZiByYW5nZSIpfWZ1bmN0aW9uIGJNdCh0LGUpe2lmKGUudG8xREFycmF5JiYoZT1lLnRvMURBcnJheSgpKSxlLmxlbmd0aCE9PXQuY29sdW1ucyl0aHJvdyBuZXcgUmFuZ2VFcnJvcigidmVjdG9yIHNpemUgbXVzdCBiZSB0aGUgc2FtZSBhcyB0aGUgbnVtYmVyIG9mIGNvbHVtbnMiKTtyZXR1cm4gZX1mdW5jdGlvbiB5TXQodCxlKXtpZihlLnRvMURBcnJheSYmKGU9ZS50bzFEQXJyYXkoKSksZS5sZW5ndGghPT10LnJvd3MpdGhyb3cgbmV3IFJhbmdlRXJyb3IoInZlY3RvciBzaXplIG11c3QgYmUgdGhlIHNhbWUgYXMgdGhlIG51bWJlciBvZiByb3dzIik7cmV0dXJuIGV9ZnVuY3Rpb24gX010KHQsZSl7aWYoIm9iamVjdCIhPXR5cGVvZiBlKXRocm93IG5ldyBUeXBlRXJyb3IoInVuZXhwZWN0ZWQgdHlwZSBmb3Igcm93IGluZGljZXMiKTtpZihlLnNvbWUoKGU9PmU8MHx8ZT49dC5yb3dzKSkpdGhyb3cgbmV3IFJhbmdlRXJyb3IoInJvdyBpbmRpY2VzIGFyZSBvdXQgb2YgcmFuZ2UiKTtyZXR1cm4gQXJyYXkuaXNBcnJheShlKXx8KGU9QXJyYXkuZnJvbShlKSksZX1mdW5jdGlvbiBDTXQodCxlKXtpZigib2JqZWN0IiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcigidW5leHBlY3RlZCB0eXBlIGZvciBjb2x1bW4gaW5kaWNlcyIpO2lmKGUuc29tZSgoZT0+ZTwwfHxlPj10LmNvbHVtbnMpKSl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiY29sdW1uIGluZGljZXMgYXJlIG91dCBvZiByYW5nZSIpO3JldHVybiBBcnJheS5pc0FycmF5KGUpfHwoZT1BcnJheS5mcm9tKGUpKSxlfWZ1bmN0aW9uIE1NdCh0LGUsbixvLGkpe2lmKDUhPT1hcmd1bWVudHMubGVuZ3RoKXRocm93IG5ldyBSYW5nZUVycm9yKCJleHBlY3RlZCA0IGFyZ3VtZW50cyIpO2lmKHhNdCgic3RhcnRSb3ciLGUpLHhNdCgiZW5kUm93IixuKSx4TXQoInN0YXJ0Q29sdW1uIixvKSx4TXQoImVuZENvbHVtbiIsaSksZT5ufHxvPml8fGU8MHx8ZT49dC5yb3dzfHxuPDB8fG4+PXQucm93c3x8bzwwfHxvPj10LmNvbHVtbnN8fGk8MHx8aT49dC5jb2x1bW5zKXRocm93IG5ldyBSYW5nZUVycm9yKCJTdWJtYXRyaXggaW5kaWNlcyBhcmUgb3V0IG9mIHJhbmdlIil9ZnVuY3Rpb24gdk10KHQsZT0wKXtsZXQgbj1bXTtmb3IobGV0IG89MDtvPHQ7bysrKW4ucHVzaChlKTtyZXR1cm4gbn1mdW5jdGlvbiB4TXQodCxlKXtpZigibnVtYmVyIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcihgJHt0fSBtdXN0IGJlIGEgbnVtYmVyYCl9ZnVuY3Rpb24gT010KHQpe2lmKHQuaXNFbXB0eSgpKXRocm93IG5ldyBFcnJvcigiRW1wdHkgbWF0cml4IGhhcyBubyBlbGVtZW50cyB0byBpbmRleCIpfWNsYXNzIFBNdHtzdGF0aWMgZnJvbTFEQXJyYXkodCxlLG4pe2lmKHQqZSE9PW4ubGVuZ3RoKXRocm93IG5ldyBSYW5nZUVycm9yKCJkYXRhIGxlbmd0aCBkb2VzIG5vdCBtYXRjaCBnaXZlbiBkaW1lbnNpb25zIik7bGV0IG89bmV3IFNNdCh0LGUpO2ZvcihsZXQgaT0wO2k8dDtpKyspZm9yKGxldCB0PTA7dDxlO3QrKylvLnNldChpLHQsbltpKmUrdF0pO3JldHVybiBvfXN0YXRpYyByb3dWZWN0b3IodCl7bGV0IGU9bmV3IFNNdCgxLHQubGVuZ3RoKTtmb3IobGV0IG49MDtuPHQubGVuZ3RoO24rKyllLnNldCgwLG4sdFtuXSk7cmV0dXJuIGV9c3RhdGljIGNvbHVtblZlY3Rvcih0KXtsZXQgZT1uZXcgU010KHQubGVuZ3RoLDEpO2ZvcihsZXQgbj0wO248dC5sZW5ndGg7bisrKWUuc2V0KG4sMCx0W25dKTtyZXR1cm4gZX1zdGF0aWMgemVyb3ModCxlKXtyZXR1cm4gbmV3IFNNdCh0LGUpfXN0YXRpYyBvbmVzKHQsZSl7cmV0dXJuIG5ldyBTTXQodCxlKS5maWxsKDEpfXN0YXRpYyByYW5kKHQsZSxuPXt9KXtpZigib2JqZWN0IiE9dHlwZW9mIG4pdGhyb3cgbmV3IFR5cGVFcnJvcigib3B0aW9ucyBtdXN0IGJlIGFuIG9iamVjdCIpO2NvbnN0e3JhbmRvbTpvPU1hdGgucmFuZG9tfT1uO2xldCBpPW5ldyBTTXQodCxlKTtmb3IobGV0IG49MDtuPHQ7bisrKWZvcihsZXQgdD0wO3Q8ZTt0KyspaS5zZXQobix0LG8oKSk7cmV0dXJuIGl9c3RhdGljIHJhbmRJbnQodCxlLG49e30pe2lmKCJvYmplY3QiIT10eXBlb2Ygbil0aHJvdyBuZXcgVHlwZUVycm9yKCJvcHRpb25zIG11c3QgYmUgYW4gb2JqZWN0Iik7Y29uc3R7bWluOm89MCxtYXg6aT0xZTMscmFuZG9tOmE9TWF0aC5yYW5kb219PW47aWYoIU51bWJlci5pc0ludGVnZXIobykpdGhyb3cgbmV3IFR5cGVFcnJvcigibWluIG11c3QgYmUgYW4gaW50ZWdlciIpO2lmKCFOdW1iZXIuaXNJbnRlZ2VyKGkpKXRocm93IG5ldyBUeXBlRXJyb3IoIm1heCBtdXN0IGJlIGFuIGludGVnZXIiKTtpZihvPj1pKXRocm93IG5ldyBSYW5nZUVycm9yKCJtaW4gbXVzdCBiZSBzbWFsbGVyIHRoYW4gbWF4Iik7bGV0IHI9aS1vLHM9bmV3IFNNdCh0LGUpO2ZvcihsZXQgbj0wO248dDtuKyspZm9yKGxldCB0PTA7dDxlO3QrKyl7bGV0IGU9bytNYXRoLnJvdW5kKGEoKSpyKTtzLnNldChuLHQsZSl9cmV0dXJuIHN9c3RhdGljIGV5ZSh0LGUsbil7dm9pZCAwPT09ZSYmKGU9dCksdm9pZCAwPT09biYmKG49MSk7bGV0IG89TWF0aC5taW4odCxlKSxpPXRoaXMuemVyb3ModCxlKTtmb3IobGV0IHQ9MDt0PG87dCsrKWkuc2V0KHQsdCxuKTtyZXR1cm4gaX1zdGF0aWMgZGlhZyh0LGUsbil7bGV0IG89dC5sZW5ndGg7dm9pZCAwPT09ZSYmKGU9byksdm9pZCAwPT09biYmKG49ZSk7bGV0IGk9TWF0aC5taW4obyxlLG4pLGE9dGhpcy56ZXJvcyhlLG4pO2ZvcihsZXQgZT0wO2U8aTtlKyspYS5zZXQoZSxlLHRbZV0pO3JldHVybiBhfXN0YXRpYyBtaW4odCxlKXt0PXRoaXMuY2hlY2tNYXRyaXgodCksZT10aGlzLmNoZWNrTWF0cml4KGUpO2xldCBuPXQucm93cyxvPXQuY29sdW1ucyxpPW5ldyBTTXQobixvKTtmb3IobGV0IGE9MDthPG47YSsrKWZvcihsZXQgbj0wO248bztuKyspaS5zZXQoYSxuLE1hdGgubWluKHQuZ2V0KGEsbiksZS5nZXQoYSxuKSkpO3JldHVybiBpfXN0YXRpYyBtYXgodCxlKXt0PXRoaXMuY2hlY2tNYXRyaXgodCksZT10aGlzLmNoZWNrTWF0cml4KGUpO2xldCBuPXQucm93cyxvPXQuY29sdW1ucyxpPW5ldyB0aGlzKG4sbyk7Zm9yKGxldCBhPTA7YTxuO2ErKylmb3IobGV0IG49MDtuPG87bisrKWkuc2V0KGEsbixNYXRoLm1heCh0LmdldChhLG4pLGUuZ2V0KGEsbikpKTtyZXR1cm4gaX1zdGF0aWMgY2hlY2tNYXRyaXgodCl7cmV0dXJuIFBNdC5pc01hdHJpeCh0KT90Om5ldyBTTXQodCl9c3RhdGljIGlzTWF0cml4KHQpe3JldHVybiBudWxsIT10JiYiTWF0cml4Ij09PXQua2xhc3N9Z2V0IHNpemUoKXtyZXR1cm4gdGhpcy5yb3dzKnRoaXMuY29sdW1uc31hcHBseSh0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCl0aHJvdyBuZXcgVHlwZUVycm9yKCJjYWxsYmFjayBtdXN0IGJlIGEgZnVuY3Rpb24iKTtmb3IobGV0IGU9MDtlPHRoaXMucm93cztlKyspZm9yKGxldCBuPTA7bjx0aGlzLmNvbHVtbnM7bisrKXQuY2FsbCh0aGlzLGUsbik7cmV0dXJuIHRoaXN9dG8xREFycmF5KCl7bGV0IHQ9W107Zm9yKGxldCBlPTA7ZTx0aGlzLnJvd3M7ZSsrKWZvcihsZXQgbj0wO248dGhpcy5jb2x1bW5zO24rKyl0LnB1c2godGhpcy5nZXQoZSxuKSk7cmV0dXJuIHR9dG8yREFycmF5KCl7bGV0IHQ9W107Zm9yKGxldCBlPTA7ZTx0aGlzLnJvd3M7ZSsrKXt0LnB1c2goW10pO2ZvcihsZXQgbj0wO248dGhpcy5jb2x1bW5zO24rKyl0W2VdLnB1c2godGhpcy5nZXQoZSxuKSl9cmV0dXJuIHR9dG9KU09OKCl7cmV0dXJuIHRoaXMudG8yREFycmF5KCl9aXNSb3dWZWN0b3IoKXtyZXR1cm4gMT09PXRoaXMucm93c31pc0NvbHVtblZlY3Rvcigpe3JldHVybiAxPT09dGhpcy5jb2x1bW5zfWlzVmVjdG9yKCl7cmV0dXJuIDE9PT10aGlzLnJvd3N8fDE9PT10aGlzLmNvbHVtbnN9aXNTcXVhcmUoKXtyZXR1cm4gdGhpcy5yb3dzPT09dGhpcy5jb2x1bW5zfWlzRW1wdHkoKXtyZXR1cm4gMD09PXRoaXMucm93c3x8MD09PXRoaXMuY29sdW1uc31pc1N5bW1ldHJpYygpe2lmKHRoaXMuaXNTcXVhcmUoKSl7Zm9yKGxldCB0PTA7dDx0aGlzLnJvd3M7dCsrKWZvcihsZXQgZT0wO2U8PXQ7ZSsrKWlmKHRoaXMuZ2V0KHQsZSkhPT10aGlzLmdldChlLHQpKXJldHVybiExO3JldHVybiEwfXJldHVybiExfWlzRWNoZWxvbkZvcm0oKXtsZXQgdD0wLGU9MCxuPS0xLG89ITAsaT0hMTtmb3IoO3Q8dGhpcy5yb3dzJiZvOyl7Zm9yKGU9MCxpPSExO2U8dGhpcy5jb2x1bW5zJiYhMT09PWk7KTA9PT10aGlzLmdldCh0LGUpP2UrKzoxPT09dGhpcy5nZXQodCxlKSYmZT5uPyhpPSEwLG49ZSk6KG89ITEsaT0hMCk7dCsrfXJldHVybiBvfWlzUmVkdWNlZEVjaGVsb25Gb3JtKCl7bGV0IHQ9MCxlPTAsbj0tMSxvPSEwLGk9ITE7Zm9yKDt0PHRoaXMucm93cyYmbzspe2ZvcihlPTAsaT0hMTtlPHRoaXMuY29sdW1ucyYmITE9PT1pOykwPT09dGhpcy5nZXQodCxlKT9lKys6MT09PXRoaXMuZ2V0KHQsZSkmJmU+bj8oaT0hMCxuPWUpOihvPSExLGk9ITApO2ZvcihsZXQgbj1lKzE7bjx0aGlzLnJvd3M7bisrKTAhPT10aGlzLmdldCh0LG4pJiYobz0hMSk7dCsrfXJldHVybiBvfWVjaGVsb25Gb3JtKCl7bGV0IHQ9dGhpcy5jbG9uZSgpLGU9MCxuPTA7Zm9yKDtlPHQucm93cyYmbjx0LmNvbHVtbnM7KXtsZXQgbz1lO2ZvcihsZXQgaT1lO2k8dC5yb3dzO2krKyl0LmdldChpLG4pPnQuZ2V0KG8sbikmJihvPWkpO2lmKDA9PT10LmdldChvLG4pKW4rKztlbHNle3Quc3dhcFJvd3MoZSxvKTtsZXQgaT10LmdldChlLG4pO2ZvcihsZXQgbz1uO288dC5jb2x1bW5zO28rKyl0LnNldChlLG8sdC5nZXQoZSxvKS9pKTtmb3IobGV0IG89ZSsxO288dC5yb3dzO28rKyl7bGV0IGk9dC5nZXQobyxuKS90LmdldChlLG4pO3Quc2V0KG8sbiwwKTtmb3IobGV0IGE9bisxO2E8dC5jb2x1bW5zO2ErKyl0LnNldChvLGEsdC5nZXQobyxhKS10LmdldChlLGEpKmkpfWUrKyxuKyt9fXJldHVybiB0fXJlZHVjZWRFY2hlbG9uRm9ybSgpe2xldCB0PXRoaXMuZWNoZWxvbkZvcm0oKSxlPXQuY29sdW1ucyxuPXQucm93cyxvPW4tMTtmb3IoO28+PTA7KWlmKDA9PT10Lm1heFJvdyhvKSlvLS07ZWxzZXtsZXQgaT0wLGE9ITE7Zm9yKDtpPG4mJiExPT09YTspMT09PXQuZ2V0KG8saSk/YT0hMDppKys7Zm9yKGxldCBuPTA7bjxvO24rKyl7bGV0IGE9dC5nZXQobixpKTtmb3IobGV0IHI9aTtyPGU7cisrKXtsZXQgZT10LmdldChuLHIpLWEqdC5nZXQobyxyKTt0LnNldChuLHIsZSl9fW8tLX1yZXR1cm4gdH1zZXQoKXt0aHJvdyBuZXcgRXJyb3IoInNldCBtZXRob2QgaXMgdW5pbXBsZW1lbnRlZCIpfWdldCgpe3Rocm93IG5ldyBFcnJvcigiZ2V0IG1ldGhvZCBpcyB1bmltcGxlbWVudGVkIil9cmVwZWF0KHQ9e30pe2lmKCJvYmplY3QiIT10eXBlb2YgdCl0aHJvdyBuZXcgVHlwZUVycm9yKCJvcHRpb25zIG11c3QgYmUgYW4gb2JqZWN0Iik7Y29uc3R7cm93czplPTEsY29sdW1uczpuPTF9PXQ7aWYoIU51bWJlci5pc0ludGVnZXIoZSl8fGU8PTApdGhyb3cgbmV3IFR5cGVFcnJvcigicm93cyBtdXN0IGJlIGEgcG9zaXRpdmUgaW50ZWdlciIpO2lmKCFOdW1iZXIuaXNJbnRlZ2VyKG4pfHxuPD0wKXRocm93IG5ldyBUeXBlRXJyb3IoImNvbHVtbnMgbXVzdCBiZSBhIHBvc2l0aXZlIGludGVnZXIiKTtsZXQgbz1uZXcgU010KHRoaXMucm93cyplLHRoaXMuY29sdW1ucypuKTtmb3IobGV0IHQ9MDt0PGU7dCsrKWZvcihsZXQgZT0wO2U8bjtlKyspby5zZXRTdWJNYXRyaXgodGhpcyx0aGlzLnJvd3MqdCx0aGlzLmNvbHVtbnMqZSk7cmV0dXJuIG99ZmlsbCh0KXtmb3IobGV0IGU9MDtlPHRoaXMucm93cztlKyspZm9yKGxldCBuPTA7bjx0aGlzLmNvbHVtbnM7bisrKXRoaXMuc2V0KGUsbix0KTtyZXR1cm4gdGhpc31uZWcoKXtyZXR1cm4gdGhpcy5tdWxTKC0xKX1nZXRSb3codCl7Z010KHRoaXMsdCk7bGV0IGU9W107Zm9yKGxldCBuPTA7bjx0aGlzLmNvbHVtbnM7bisrKWUucHVzaCh0aGlzLmdldCh0LG4pKTtyZXR1cm4gZX1nZXRSb3dWZWN0b3IodCl7cmV0dXJuIFNNdC5yb3dWZWN0b3IodGhpcy5nZXRSb3codCkpfXNldFJvdyh0LGUpe2dNdCh0aGlzLHQpLGU9Yk10KHRoaXMsZSk7Zm9yKGxldCBuPTA7bjx0aGlzLmNvbHVtbnM7bisrKXRoaXMuc2V0KHQsbixlW25dKTtyZXR1cm4gdGhpc31zd2FwUm93cyh0LGUpe2dNdCh0aGlzLHQpLGdNdCh0aGlzLGUpO2ZvcihsZXQgbj0wO248dGhpcy5jb2x1bW5zO24rKyl7bGV0IG89dGhpcy5nZXQodCxuKTt0aGlzLnNldCh0LG4sdGhpcy5nZXQoZSxuKSksdGhpcy5zZXQoZSxuLG8pfXJldHVybiB0aGlzfWdldENvbHVtbih0KXtoTXQodGhpcyx0KTtsZXQgZT1bXTtmb3IobGV0IG49MDtuPHRoaXMucm93cztuKyspZS5wdXNoKHRoaXMuZ2V0KG4sdCkpO3JldHVybiBlfWdldENvbHVtblZlY3Rvcih0KXtyZXR1cm4gU010LmNvbHVtblZlY3Rvcih0aGlzLmdldENvbHVtbih0KSl9c2V0Q29sdW1uKHQsZSl7aE10KHRoaXMsdCksZT15TXQodGhpcyxlKTtmb3IobGV0IG49MDtuPHRoaXMucm93cztuKyspdGhpcy5zZXQobix0LGVbbl0pO3JldHVybiB0aGlzfXN3YXBDb2x1bW5zKHQsZSl7aE10KHRoaXMsdCksaE10KHRoaXMsZSk7Zm9yKGxldCBuPTA7bjx0aGlzLnJvd3M7bisrKXtsZXQgbz10aGlzLmdldChuLHQpO3RoaXMuc2V0KG4sdCx0aGlzLmdldChuLGUpKSx0aGlzLnNldChuLGUsbyl9cmV0dXJuIHRoaXN9YWRkUm93VmVjdG9yKHQpe3Q9Yk10KHRoaXMsdCk7Zm9yKGxldCBlPTA7ZTx0aGlzLnJvd3M7ZSsrKWZvcihsZXQgbj0wO248dGhpcy5jb2x1bW5zO24rKyl0aGlzLnNldChlLG4sdGhpcy5nZXQoZSxuKSt0W25dKTtyZXR1cm4gdGhpc31zdWJSb3dWZWN0b3IodCl7dD1iTXQodGhpcyx0KTtmb3IobGV0IGU9MDtlPHRoaXMucm93cztlKyspZm9yKGxldCBuPTA7bjx0aGlzLmNvbHVtbnM7bisrKXRoaXMuc2V0KGUsbix0aGlzLmdldChlLG4pLXRbbl0pO3JldHVybiB0aGlzfW11bFJvd1ZlY3Rvcih0KXt0PWJNdCh0aGlzLHQpO2ZvcihsZXQgZT0wO2U8dGhpcy5yb3dzO2UrKylmb3IobGV0IG49MDtuPHRoaXMuY29sdW1ucztuKyspdGhpcy5zZXQoZSxuLHRoaXMuZ2V0KGUsbikqdFtuXSk7cmV0dXJuIHRoaXN9ZGl2Um93VmVjdG9yKHQpe3Q9Yk10KHRoaXMsdCk7Zm9yKGxldCBlPTA7ZTx0aGlzLnJvd3M7ZSsrKWZvcihsZXQgbj0wO248dGhpcy5jb2x1bW5zO24rKyl0aGlzLnNldChlLG4sdGhpcy5nZXQoZSxuKS90W25dKTtyZXR1cm4gdGhpc31hZGRDb2x1bW5WZWN0b3IodCl7dD15TXQodGhpcyx0KTtmb3IobGV0IGU9MDtlPHRoaXMucm93cztlKyspZm9yKGxldCBuPTA7bjx0aGlzLmNvbHVtbnM7bisrKXRoaXMuc2V0KGUsbix0aGlzLmdldChlLG4pK3RbZV0pO3JldHVybiB0aGlzfXN1YkNvbHVtblZlY3Rvcih0KXt0PXlNdCh0aGlzLHQpO2ZvcihsZXQgZT0wO2U8dGhpcy5yb3dzO2UrKylmb3IobGV0IG49MDtuPHRoaXMuY29sdW1ucztuKyspdGhpcy5zZXQoZSxuLHRoaXMuZ2V0KGUsbiktdFtlXSk7cmV0dXJuIHRoaXN9bXVsQ29sdW1uVmVjdG9yKHQpe3Q9eU10KHRoaXMsdCk7Zm9yKGxldCBlPTA7ZTx0aGlzLnJvd3M7ZSsrKWZvcihsZXQgbj0wO248dGhpcy5jb2x1bW5zO24rKyl0aGlzLnNldChlLG4sdGhpcy5nZXQoZSxuKSp0W2VdKTtyZXR1cm4gdGhpc31kaXZDb2x1bW5WZWN0b3IodCl7dD15TXQodGhpcyx0KTtmb3IobGV0IGU9MDtlPHRoaXMucm93cztlKyspZm9yKGxldCBuPTA7bjx0aGlzLmNvbHVtbnM7bisrKXRoaXMuc2V0KGUsbix0aGlzLmdldChlLG4pL3RbZV0pO3JldHVybiB0aGlzfW11bFJvdyh0LGUpe2dNdCh0aGlzLHQpO2ZvcihsZXQgbj0wO248dGhpcy5jb2x1bW5zO24rKyl0aGlzLnNldCh0LG4sdGhpcy5nZXQodCxuKSplKTtyZXR1cm4gdGhpc31tdWxDb2x1bW4odCxlKXtoTXQodGhpcyx0KTtmb3IobGV0IG49MDtuPHRoaXMucm93cztuKyspdGhpcy5zZXQobix0LHRoaXMuZ2V0KG4sdCkqZSk7cmV0dXJuIHRoaXN9bWF4KCl7aWYodGhpcy5pc0VtcHR5KCkpcmV0dXJuIE5hTjtsZXQgdD10aGlzLmdldCgwLDApO2ZvcihsZXQgZT0wO2U8dGhpcy5yb3dzO2UrKylmb3IobGV0IG49MDtuPHRoaXMuY29sdW1ucztuKyspdGhpcy5nZXQoZSxuKT50JiYodD10aGlzLmdldChlLG4pKTtyZXR1cm4gdH1tYXhJbmRleCgpe09NdCh0aGlzKTtsZXQgdD10aGlzLmdldCgwLDApLGU9WzAsMF07Zm9yKGxldCBuPTA7bjx0aGlzLnJvd3M7bisrKWZvcihsZXQgbz0wO288dGhpcy5jb2x1bW5zO28rKyl0aGlzLmdldChuLG8pPnQmJih0PXRoaXMuZ2V0KG4sbyksZVswXT1uLGVbMV09byk7cmV0dXJuIGV9bWluKCl7aWYodGhpcy5pc0VtcHR5KCkpcmV0dXJuIE5hTjtsZXQgdD10aGlzLmdldCgwLDApO2ZvcihsZXQgZT0wO2U8dGhpcy5yb3dzO2UrKylmb3IobGV0IG49MDtuPHRoaXMuY29sdW1ucztuKyspdGhpcy5nZXQoZSxuKTx0JiYodD10aGlzLmdldChlLG4pKTtyZXR1cm4gdH1taW5JbmRleCgpe09NdCh0aGlzKTtsZXQgdD10aGlzLmdldCgwLDApLGU9WzAsMF07Zm9yKGxldCBuPTA7bjx0aGlzLnJvd3M7bisrKWZvcihsZXQgbz0wO288dGhpcy5jb2x1bW5zO28rKyl0aGlzLmdldChuLG8pPHQmJih0PXRoaXMuZ2V0KG4sbyksZVswXT1uLGVbMV09byk7cmV0dXJuIGV9bWF4Um93KHQpe2lmKGdNdCh0aGlzLHQpLHRoaXMuaXNFbXB0eSgpKXJldHVybiBOYU47bGV0IGU9dGhpcy5nZXQodCwwKTtmb3IobGV0IG49MTtuPHRoaXMuY29sdW1ucztuKyspdGhpcy5nZXQodCxuKT5lJiYoZT10aGlzLmdldCh0LG4pKTtyZXR1cm4gZX1tYXhSb3dJbmRleCh0KXtnTXQodGhpcyx0KSxPTXQodGhpcyk7bGV0IGU9dGhpcy5nZXQodCwwKSxuPVt0LDBdO2ZvcihsZXQgbz0xO288dGhpcy5jb2x1bW5zO28rKyl0aGlzLmdldCh0LG8pPmUmJihlPXRoaXMuZ2V0KHQsbyksblsxXT1vKTtyZXR1cm4gbn1taW5Sb3codCl7aWYoZ010KHRoaXMsdCksdGhpcy5pc0VtcHR5KCkpcmV0dXJuIE5hTjtsZXQgZT10aGlzLmdldCh0LDApO2ZvcihsZXQgbj0xO248dGhpcy5jb2x1bW5zO24rKyl0aGlzLmdldCh0LG4pPGUmJihlPXRoaXMuZ2V0KHQsbikpO3JldHVybiBlfW1pblJvd0luZGV4KHQpe2dNdCh0aGlzLHQpLE9NdCh0aGlzKTtsZXQgZT10aGlzLmdldCh0LDApLG49W3QsMF07Zm9yKGxldCBvPTE7bzx0aGlzLmNvbHVtbnM7bysrKXRoaXMuZ2V0KHQsbyk8ZSYmKGU9dGhpcy5nZXQodCxvKSxuWzFdPW8pO3JldHVybiBufW1heENvbHVtbih0KXtpZihoTXQodGhpcyx0KSx0aGlzLmlzRW1wdHkoKSlyZXR1cm4gTmFOO2xldCBlPXRoaXMuZ2V0KDAsdCk7Zm9yKGxldCBuPTE7bjx0aGlzLnJvd3M7bisrKXRoaXMuZ2V0KG4sdCk+ZSYmKGU9dGhpcy5nZXQobix0KSk7cmV0dXJuIGV9bWF4Q29sdW1uSW5kZXgodCl7aE10KHRoaXMsdCksT010KHRoaXMpO2xldCBlPXRoaXMuZ2V0KDAsdCksbj1bMCx0XTtmb3IobGV0IG89MTtvPHRoaXMucm93cztvKyspdGhpcy5nZXQobyx0KT5lJiYoZT10aGlzLmdldChvLHQpLG5bMF09byk7cmV0dXJuIG59bWluQ29sdW1uKHQpe2lmKGhNdCh0aGlzLHQpLHRoaXMuaXNFbXB0eSgpKXJldHVybiBOYU47bGV0IGU9dGhpcy5nZXQoMCx0KTtmb3IobGV0IG49MTtuPHRoaXMucm93cztuKyspdGhpcy5nZXQobix0KTxlJiYoZT10aGlzLmdldChuLHQpKTtyZXR1cm4gZX1taW5Db2x1bW5JbmRleCh0KXtoTXQodGhpcyx0KSxPTXQodGhpcyk7bGV0IGU9dGhpcy5nZXQoMCx0KSxuPVswLHRdO2ZvcihsZXQgbz0xO288dGhpcy5yb3dzO28rKyl0aGlzLmdldChvLHQpPGUmJihlPXRoaXMuZ2V0KG8sdCksblswXT1vKTtyZXR1cm4gbn1kaWFnKCl7bGV0IHQ9TWF0aC5taW4odGhpcy5yb3dzLHRoaXMuY29sdW1ucyksZT1bXTtmb3IobGV0IG49MDtuPHQ7bisrKWUucHVzaCh0aGlzLmdldChuLG4pKTtyZXR1cm4gZX1ub3JtKHQ9ImZyb2Jlbml1cyIpe2xldCBlPTA7aWYoIm1heCI9PT10KXJldHVybiB0aGlzLm1heCgpO2lmKCJmcm9iZW5pdXMiPT09dCl7Zm9yKGxldCB0PTA7dDx0aGlzLnJvd3M7dCsrKWZvcihsZXQgbj0wO248dGhpcy5jb2x1bW5zO24rKyllKz10aGlzLmdldCh0LG4pKnRoaXMuZ2V0KHQsbik7cmV0dXJuIE1hdGguc3FydChlKX10aHJvdyBuZXcgUmFuZ2VFcnJvcihgdW5rbm93biBub3JtIHR5cGU6ICR7dH1gKX1jdW11bGF0aXZlU3VtKCl7bGV0IHQ9MDtmb3IobGV0IGU9MDtlPHRoaXMucm93cztlKyspZm9yKGxldCBuPTA7bjx0aGlzLmNvbHVtbnM7bisrKXQrPXRoaXMuZ2V0KGUsbiksdGhpcy5zZXQoZSxuLHQpO3JldHVybiB0aGlzfWRvdCh0KXtQTXQuaXNNYXRyaXgodCkmJih0PXQudG8xREFycmF5KCkpO2xldCBlPXRoaXMudG8xREFycmF5KCk7aWYoZS5sZW5ndGghPT10Lmxlbmd0aCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigidmVjdG9ycyBkbyBub3QgaGF2ZSB0aGUgc2FtZSBzaXplIik7bGV0IG49MDtmb3IobGV0IG89MDtvPGUubGVuZ3RoO28rKyluKz1lW29dKnRbb107cmV0dXJuIG59bW11bCh0KXt0PVNNdC5jaGVja01hdHJpeCh0KTtsZXQgZT10aGlzLnJvd3Msbj10aGlzLmNvbHVtbnMsbz10LmNvbHVtbnMsaT1uZXcgU010KGUsbyksYT1uZXcgRmxvYXQ2NEFycmF5KG4pO2ZvcihsZXQgcj0wO3I8bztyKyspe2ZvcihsZXQgZT0wO2U8bjtlKyspYVtlXT10LmdldChlLHIpO2ZvcihsZXQgdD0wO3Q8ZTt0Kyspe2xldCBlPTA7Zm9yKGxldCBvPTA7bzxuO28rKyllKz10aGlzLmdldCh0LG8pKmFbb107aS5zZXQodCxyLGUpfX1yZXR1cm4gaX1zdHJhc3NlbjJ4Mih0KXt0PVNNdC5jaGVja01hdHJpeCh0KTtsZXQgZT1uZXcgU010KDIsMik7Y29uc3Qgbj10aGlzLmdldCgwLDApLG89dC5nZXQoMCwwKSxpPXRoaXMuZ2V0KDAsMSksYT10LmdldCgwLDEpLHI9dGhpcy5nZXQoMSwwKSxzPXQuZ2V0KDEsMCksbD10aGlzLmdldCgxLDEpLGM9dC5nZXQoMSwxKSxkPShuK2wpKihvK2MpLHA9KHIrbCkqbyxtPW4qKGEtYyksZj1sKihzLW8pLHU9KG4raSkqYyxnPW0rdSxoPXArZixiPWQtcCttKyhyLW4pKihvK2EpO3JldHVybiBlLnNldCgwLDAsZCtmLXUrKGktbCkqKHMrYykpLGUuc2V0KDAsMSxnKSxlLnNldCgxLDAsaCksZS5zZXQoMSwxLGIpLGV9c3RyYXNzZW4zeDModCl7dD1TTXQuY2hlY2tNYXRyaXgodCk7bGV0IGU9bmV3IFNNdCgzLDMpO2NvbnN0IG49dGhpcy5nZXQoMCwwKSxvPXRoaXMuZ2V0KDAsMSksaT10aGlzLmdldCgwLDIpLGE9dGhpcy5nZXQoMSwwKSxyPXRoaXMuZ2V0KDEsMSkscz10aGlzLmdldCgxLDIpLGw9dGhpcy5nZXQoMiwwKSxjPXRoaXMuZ2V0KDIsMSksZD10aGlzLmdldCgyLDIpLHA9dC5nZXQoMCwwKSxtPXQuZ2V0KDAsMSksZj10LmdldCgwLDIpLHU9dC5nZXQoMSwwKSxnPXQuZ2V0KDEsMSksaD10LmdldCgxLDIpLGI9dC5nZXQoMiwwKSx5PXQuZ2V0KDIsMSksXz10LmdldCgyLDIpLEM9KG4tYSkqKC1tK2cpLE09KC1uK2ErcikqKHAtbStnKSx2PShhK3IpKigtcCttKSx4PW4qcCxPPSgtbitsK2MpKihwLWYraCksUD0oLW4rbCkqKGYtaCksdz0obCtjKSooLXArZiksaz0oLWkrYytkKSooZytiLXkpLFM9KGktZCkqKGcteSksRD1pKmIsUj0oYytkKSooLWIreSksRT0oLWkrcitzKSooaCtiLV8pLEE9KGktcykqKGgtXyksVD0ocitzKSooLWIrXyksTj0obitvK2ktYS1yLWMtZCkqZytNK3YreCtrK0QrUix6PXgrTyt3KyhuK28raS1yLXMtbC1jKSpoK0QrRStULEk9QytyKigtcCttK3UtZy1oLWIrXykrTSt4K0QrRStBLEg9QytNK3YreCtzKnksRj1EK0UrQStUK2EqZixMPXgrTytQK2MqKC1wK2YrdS1nLWgtYit5KStrK1MrRCxCPWsrUytEK1IrbCptLFY9eCtPK1ArdytkKl87cmV0dXJuIGUuc2V0KDAsMCx4K0Qrbyp1KSxlLnNldCgwLDEsTiksZS5zZXQoMCwyLHopLGUuc2V0KDEsMCxJKSxlLnNldCgxLDEsSCksZS5zZXQoMSwyLEYpLGUuc2V0KDIsMCxMKSxlLnNldCgyLDEsQiksZS5zZXQoMiwyLFYpLGV9bW11bFN0cmFzc2VuKHQpe3Q9U010LmNoZWNrTWF0cml4KHQpO2xldCBlPXRoaXMuY2xvbmUoKSxuPWUucm93cyxvPWUuY29sdW1ucyxpPXQucm93cyxhPXQuY29sdW1ucztmdW5jdGlvbiByKHQsZSxuKXtpZih0LnJvd3M9PT1lJiZ0LmNvbHVtbnM9PT1uKXJldHVybiB0O3tsZXQgbz1QTXQuemVyb3MoZSxuKTtyZXR1cm4gbz1vLnNldFN1Yk1hdHJpeCh0LDAsMCksb319byE9PWkmJmNvbnNvbGUud2FybihgTXVsdGlwbHlpbmcgJHtufSB4ICR7b30gYW5kICR7aX0geCAke2F9IG1hdHJpeDogZGltZW5zaW9ucyBkbyBub3QgbWF0Y2guYCk7bGV0IHM9TWF0aC5tYXgobixpKSxsPU1hdGgubWF4KG8sYSk7cmV0dXJuIGU9cihlLHMsbCksKGZ1bmN0aW9uIHQoZSxuLG8saSl7aWYobzw9NTEyfHxpPD01MTIpcmV0dXJuIGUubW11bChuKTtvJTI9PTEmJmklMj09MT8oZT1yKGUsbysxLGkrMSksbj1yKG4sbysxLGkrMSkpOm8lMj09MT8oZT1yKGUsbysxLGkpLG49cihuLG8rMSxpKSk6aSUyPT0xJiYoZT1yKGUsbyxpKzEpLG49cihuLG8saSsxKSk7bGV0IGE9cGFyc2VJbnQoZS5yb3dzLzIsMTApLHM9cGFyc2VJbnQoZS5jb2x1bW5zLzIsMTApLGw9ZS5zdWJNYXRyaXgoMCxhLTEsMCxzLTEpLGM9bi5zdWJNYXRyaXgoMCxhLTEsMCxzLTEpLGQ9ZS5zdWJNYXRyaXgoMCxhLTEscyxlLmNvbHVtbnMtMSkscD1uLnN1Yk1hdHJpeCgwLGEtMSxzLG4uY29sdW1ucy0xKSxtPWUuc3ViTWF0cml4KGEsZS5yb3dzLTEsMCxzLTEpLGY9bi5zdWJNYXRyaXgoYSxuLnJvd3MtMSwwLHMtMSksdT1lLnN1Yk1hdHJpeChhLGUucm93cy0xLHMsZS5jb2x1bW5zLTEpLGc9bi5zdWJNYXRyaXgoYSxuLnJvd3MtMSxzLG4uY29sdW1ucy0xKSxoPXQoUE10LmFkZChsLHUpLFBNdC5hZGQoYyxnKSxhLHMpLGI9dChQTXQuYWRkKG0sdSksYyxhLHMpLHk9dChsLFBNdC5zdWIocCxnKSxhLHMpLF89dCh1LFBNdC5zdWIoZixjKSxhLHMpLEM9dChQTXQuYWRkKGwsZCksZyxhLHMpLE09dChQTXQuc3ViKG0sbCksUE10LmFkZChjLHApLGEscyksdj10KFBNdC5zdWIoZCx1KSxQTXQuYWRkKGYsZyksYSxzKSx4PVBNdC5hZGQoaCxfKTt4LnN1YihDKSx4LmFkZCh2KTtsZXQgTz1QTXQuYWRkKHksQyksUD1QTXQuYWRkKGIsXyksdz1QTXQuc3ViKGgsYik7dy5hZGQoeSksdy5hZGQoTSk7bGV0IGs9UE10Lnplcm9zKDIqeC5yb3dzLDIqeC5jb2x1bW5zKTtyZXR1cm4gaz1rLnNldFN1Yk1hdHJpeCh4LDAsMCksaz1rLnNldFN1Yk1hdHJpeChPLHgucm93cywwKSxrPWsuc2V0U3ViTWF0cml4KFAsMCx4LmNvbHVtbnMpLGs9ay5zZXRTdWJNYXRyaXgodyx4LnJvd3MseC5jb2x1bW5zKSxrLnN1Yk1hdHJpeCgwLG8tMSwwLGktMSl9KShlLHQ9cih0LHMsbCkscyxsKX1zY2FsZVJvd3ModD17fSl7aWYoIm9iamVjdCIhPXR5cGVvZiB0KXRocm93IG5ldyBUeXBlRXJyb3IoIm9wdGlvbnMgbXVzdCBiZSBhbiBvYmplY3QiKTtjb25zdHttaW46ZT0wLG1heDpuPTF9PXQ7aWYoIU51bWJlci5pc0Zpbml0ZShlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJtaW4gbXVzdCBiZSBhIG51bWJlciIpO2lmKCFOdW1iZXIuaXNGaW5pdGUobikpdGhyb3cgbmV3IFR5cGVFcnJvcigibWF4IG11c3QgYmUgYSBudW1iZXIiKTtpZihlPj1uKXRocm93IG5ldyBSYW5nZUVycm9yKCJtaW4gbXVzdCBiZSBzbWFsbGVyIHRoYW4gbWF4Iik7bGV0IG89bmV3IFNNdCh0aGlzLnJvd3MsdGhpcy5jb2x1bW5zKTtmb3IobGV0IHQ9MDt0PHRoaXMucm93czt0Kyspe2NvbnN0IGk9dGhpcy5nZXRSb3codCk7aS5sZW5ndGg+MCYmZE10KGkse21pbjplLG1heDpuLG91dHB1dDppfSksby5zZXRSb3codCxpKX1yZXR1cm4gb31zY2FsZUNvbHVtbnModD17fSl7aWYoIm9iamVjdCIhPXR5cGVvZiB0KXRocm93IG5ldyBUeXBlRXJyb3IoIm9wdGlvbnMgbXVzdCBiZSBhbiBvYmplY3QiKTtjb25zdHttaW46ZT0wLG1heDpuPTF9PXQ7aWYoIU51bWJlci5pc0Zpbml0ZShlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJtaW4gbXVzdCBiZSBhIG51bWJlciIpO2lmKCFOdW1iZXIuaXNGaW5pdGUobikpdGhyb3cgbmV3IFR5cGVFcnJvcigibWF4IG11c3QgYmUgYSBudW1iZXIiKTtpZihlPj1uKXRocm93IG5ldyBSYW5nZUVycm9yKCJtaW4gbXVzdCBiZSBzbWFsbGVyIHRoYW4gbWF4Iik7bGV0IG89bmV3IFNNdCh0aGlzLnJvd3MsdGhpcy5jb2x1bW5zKTtmb3IobGV0IHQ9MDt0PHRoaXMuY29sdW1uczt0Kyspe2NvbnN0IGk9dGhpcy5nZXRDb2x1bW4odCk7aS5sZW5ndGgmJmRNdChpLHttaW46ZSxtYXg6bixvdXRwdXQ6aX0pLG8uc2V0Q29sdW1uKHQsaSl9cmV0dXJuIG99ZmxpcFJvd3MoKXtjb25zdCB0PU1hdGguY2VpbCh0aGlzLmNvbHVtbnMvMik7Zm9yKGxldCBlPTA7ZTx0aGlzLnJvd3M7ZSsrKWZvcihsZXQgbj0wO248dDtuKyspe2xldCB0PXRoaXMuZ2V0KGUsbiksbz10aGlzLmdldChlLHRoaXMuY29sdW1ucy0xLW4pO3RoaXMuc2V0KGUsbixvKSx0aGlzLnNldChlLHRoaXMuY29sdW1ucy0xLW4sdCl9cmV0dXJuIHRoaXN9ZmxpcENvbHVtbnMoKXtjb25zdCB0PU1hdGguY2VpbCh0aGlzLnJvd3MvMik7Zm9yKGxldCBlPTA7ZTx0aGlzLmNvbHVtbnM7ZSsrKWZvcihsZXQgbj0wO248dDtuKyspe2xldCB0PXRoaXMuZ2V0KG4sZSksbz10aGlzLmdldCh0aGlzLnJvd3MtMS1uLGUpO3RoaXMuc2V0KG4sZSxvKSx0aGlzLnNldCh0aGlzLnJvd3MtMS1uLGUsdCl9cmV0dXJuIHRoaXN9a3JvbmVja2VyUHJvZHVjdCh0KXt0PVNNdC5jaGVja01hdHJpeCh0KTtsZXQgZT10aGlzLnJvd3Msbj10aGlzLmNvbHVtbnMsbz10LnJvd3MsaT10LmNvbHVtbnMsYT1uZXcgU010KGUqbyxuKmkpO2ZvcihsZXQgcj0wO3I8ZTtyKyspZm9yKGxldCBlPTA7ZTxuO2UrKylmb3IobGV0IG49MDtuPG87bisrKWZvcihsZXQgcz0wO3M8aTtzKyspYS5zZXQobypyK24saSplK3MsdGhpcy5nZXQocixlKSp0LmdldChuLHMpKTtyZXR1cm4gYX1rcm9uZWNrZXJTdW0odCl7aWYodD1TTXQuY2hlY2tNYXRyaXgodCksIXRoaXMuaXNTcXVhcmUoKXx8IXQuaXNTcXVhcmUoKSl0aHJvdyBuZXcgRXJyb3IoIktyb25lY2tlciBTdW0gbmVlZHMgdHdvIFNxdWFyZSBNYXRyaWNlcyIpO2xldCBlPXRoaXMucm93cyxuPXQucm93cyxvPXRoaXMua3JvbmVja2VyUHJvZHVjdChTTXQuZXllKG4sbikpLGk9U010LmV5ZShlLGUpLmtyb25lY2tlclByb2R1Y3QodCk7cmV0dXJuIG8uYWRkKGkpfXRyYW5zcG9zZSgpe2xldCB0PW5ldyBTTXQodGhpcy5jb2x1bW5zLHRoaXMucm93cyk7Zm9yKGxldCBlPTA7ZTx0aGlzLnJvd3M7ZSsrKWZvcihsZXQgbj0wO248dGhpcy5jb2x1bW5zO24rKyl0LnNldChuLGUsdGhpcy5nZXQoZSxuKSk7cmV0dXJuIHR9c29ydFJvd3ModD13TXQpe2ZvcihsZXQgZT0wO2U8dGhpcy5yb3dzO2UrKyl0aGlzLnNldFJvdyhlLHRoaXMuZ2V0Um93KGUpLnNvcnQodCkpO3JldHVybiB0aGlzfXNvcnRDb2x1bW5zKHQ9d010KXtmb3IobGV0IGU9MDtlPHRoaXMuY29sdW1ucztlKyspdGhpcy5zZXRDb2x1bW4oZSx0aGlzLmdldENvbHVtbihlKS5zb3J0KHQpKTtyZXR1cm4gdGhpc31zdWJNYXRyaXgodCxlLG4sbyl7TU10KHRoaXMsdCxlLG4sbyk7bGV0IGk9bmV3IFNNdChlLXQrMSxvLW4rMSk7Zm9yKGxldCBhPXQ7YTw9ZTthKyspZm9yKGxldCBlPW47ZTw9bztlKyspaS5zZXQoYS10LGUtbix0aGlzLmdldChhLGUpKTtyZXR1cm4gaX1zdWJNYXRyaXhSb3codCxlLG4pe2lmKHZvaWQgMD09PWUmJihlPTApLHZvaWQgMD09PW4mJihuPXRoaXMuY29sdW1ucy0xKSxlPm58fGU8MHx8ZT49dGhpcy5jb2x1bW5zfHxuPDB8fG4+PXRoaXMuY29sdW1ucyl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiQXJndW1lbnQgb3V0IG9mIHJhbmdlIik7bGV0IG89bmV3IFNNdCh0Lmxlbmd0aCxuLWUrMSk7Zm9yKGxldCBpPTA7aTx0Lmxlbmd0aDtpKyspZm9yKGxldCBhPWU7YTw9bjthKyspe2lmKHRbaV08MHx8dFtpXT49dGhpcy5yb3dzKXRocm93IG5ldyBSYW5nZUVycm9yKGBSb3cgaW5kZXggb3V0IG9mIHJhbmdlOiAke3RbaV19YCk7by5zZXQoaSxhLWUsdGhpcy5nZXQodFtpXSxhKSl9cmV0dXJuIG99c3ViTWF0cml4Q29sdW1uKHQsZSxuKXtpZih2b2lkIDA9PT1lJiYoZT0wKSx2b2lkIDA9PT1uJiYobj10aGlzLnJvd3MtMSksZT5ufHxlPDB8fGU+PXRoaXMucm93c3x8bjwwfHxuPj10aGlzLnJvd3MpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkFyZ3VtZW50IG91dCBvZiByYW5nZSIpO2xldCBvPW5ldyBTTXQobi1lKzEsdC5sZW5ndGgpO2ZvcihsZXQgaT0wO2k8dC5sZW5ndGg7aSsrKWZvcihsZXQgYT1lO2E8PW47YSsrKXtpZih0W2ldPDB8fHRbaV0+PXRoaXMuY29sdW1ucyl0aHJvdyBuZXcgUmFuZ2VFcnJvcihgQ29sdW1uIGluZGV4IG91dCBvZiByYW5nZTogJHt0W2ldfWApO28uc2V0KGEtZSxpLHRoaXMuZ2V0KGEsdFtpXSkpfXJldHVybiBvfXNldFN1Yk1hdHJpeCh0LGUsbil7aWYoKHQ9U010LmNoZWNrTWF0cml4KHQpKS5pc0VtcHR5KCkpcmV0dXJuIHRoaXM7TU10KHRoaXMsZSxlK3Qucm93cy0xLG4sbit0LmNvbHVtbnMtMSk7Zm9yKGxldCBvPTA7bzx0LnJvd3M7bysrKWZvcihsZXQgaT0wO2k8dC5jb2x1bW5zO2krKyl0aGlzLnNldChlK28sbitpLHQuZ2V0KG8saSkpO3JldHVybiB0aGlzfXNlbGVjdGlvbih0LGUpe2xldCBuPShmdW5jdGlvbiBvKHQsZSxuKXtyZXR1cm57cm93Ol9NdCh0LGUpLGNvbHVtbjpDTXQodCxuKX19KSh0aGlzLHQsZSksaT1uZXcgU010KHQubGVuZ3RoLGUubGVuZ3RoKTtmb3IobGV0IHQ9MDt0PG4ucm93Lmxlbmd0aDt0Kyspe2xldCBlPW4ucm93W3RdO2ZvcihsZXQgbz0wO288bi5jb2x1bW4ubGVuZ3RoO28rKyl7aS5zZXQodCxvLHRoaXMuZ2V0KGUsbi5jb2x1bW5bb10pKX19cmV0dXJuIGl9dHJhY2UoKXtsZXQgdD1NYXRoLm1pbih0aGlzLnJvd3MsdGhpcy5jb2x1bW5zKSxlPTA7Zm9yKGxldCBuPTA7bjx0O24rKyllKz10aGlzLmdldChuLG4pO3JldHVybiBlfWNsb25lKCl7bGV0IHQ9bmV3IFNNdCh0aGlzLnJvd3MsdGhpcy5jb2x1bW5zKTtmb3IobGV0IGU9MDtlPHRoaXMucm93cztlKyspZm9yKGxldCBuPTA7bjx0aGlzLmNvbHVtbnM7bisrKXQuc2V0KGUsbix0aGlzLmdldChlLG4pKTtyZXR1cm4gdH1zdW0odCl7c3dpdGNoKHQpe2Nhc2Uicm93IjpyZXR1cm4oZnVuY3Rpb24gZSh0KXtsZXQgZT12TXQodC5yb3dzKTtmb3IobGV0IG49MDtuPHQucm93czsrK24pZm9yKGxldCBvPTA7bzx0LmNvbHVtbnM7KytvKWVbbl0rPXQuZ2V0KG4sbyk7cmV0dXJuIGV9KSh0aGlzKTtjYXNlImNvbHVtbiI6cmV0dXJuKGZ1bmN0aW9uIG4odCl7bGV0IGU9dk10KHQuY29sdW1ucyk7Zm9yKGxldCBuPTA7bjx0LnJvd3M7KytuKWZvcihsZXQgbz0wO288dC5jb2x1bW5zOysrbyllW29dKz10LmdldChuLG8pO3JldHVybiBlfSkodGhpcyk7Y2FzZSB2b2lkIDA6cmV0dXJuKGZ1bmN0aW9uIG8odCl7bGV0IGU9MDtmb3IobGV0IG49MDtuPHQucm93cztuKyspZm9yKGxldCBvPTA7bzx0LmNvbHVtbnM7bysrKWUrPXQuZ2V0KG4sbyk7cmV0dXJuIGV9KSh0aGlzKTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcihgaW52YWxpZCBvcHRpb246ICR7dH1gKX19cHJvZHVjdCh0KXtzd2l0Y2godCl7Y2FzZSJyb3ciOnJldHVybihmdW5jdGlvbiBlKHQpe2xldCBlPXZNdCh0LnJvd3MsMSk7Zm9yKGxldCBuPTA7bjx0LnJvd3M7KytuKWZvcihsZXQgbz0wO288dC5jb2x1bW5zOysrbyllW25dKj10LmdldChuLG8pO3JldHVybiBlfSkodGhpcyk7Y2FzZSJjb2x1bW4iOnJldHVybihmdW5jdGlvbiBuKHQpe2xldCBlPXZNdCh0LmNvbHVtbnMsMSk7Zm9yKGxldCBuPTA7bjx0LnJvd3M7KytuKWZvcihsZXQgbz0wO288dC5jb2x1bW5zOysrbyllW29dKj10LmdldChuLG8pO3JldHVybiBlfSkodGhpcyk7Y2FzZSB2b2lkIDA6cmV0dXJuKGZ1bmN0aW9uIG8odCl7bGV0IGU9MTtmb3IobGV0IG49MDtuPHQucm93cztuKyspZm9yKGxldCBvPTA7bzx0LmNvbHVtbnM7bysrKWUqPXQuZ2V0KG4sbyk7cmV0dXJuIGV9KSh0aGlzKTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcihgaW52YWxpZCBvcHRpb246ICR7dH1gKX19bWVhbih0KXtjb25zdCBlPXRoaXMuc3VtKHQpO3N3aXRjaCh0KXtjYXNlInJvdyI6Zm9yKGxldCB0PTA7dDx0aGlzLnJvd3M7dCsrKWVbdF0vPXRoaXMuY29sdW1ucztyZXR1cm4gZTtjYXNlImNvbHVtbiI6Zm9yKGxldCB0PTA7dDx0aGlzLmNvbHVtbnM7dCsrKWVbdF0vPXRoaXMucm93cztyZXR1cm4gZTtjYXNlIHZvaWQgMDpyZXR1cm4gZS90aGlzLnNpemU7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoYGludmFsaWQgb3B0aW9uOiAke3R9YCl9fXZhcmlhbmNlKHQsZT17fSl7aWYoIm9iamVjdCI9PXR5cGVvZiB0JiYoZT10LHQ9dm9pZCAwKSwib2JqZWN0IiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcigib3B0aW9ucyBtdXN0IGJlIGFuIG9iamVjdCIpO2NvbnN0e3VuYmlhc2VkOm49ITAsbWVhbjpvPXRoaXMubWVhbih0KX09ZTtpZigiYm9vbGVhbiIhPXR5cGVvZiBuKXRocm93IG5ldyBUeXBlRXJyb3IoInVuYmlhc2VkIG11c3QgYmUgYSBib29sZWFuIik7c3dpdGNoKHQpe2Nhc2Uicm93IjppZighQXJyYXkuaXNBcnJheShvKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJtZWFuIG11c3QgYmUgYW4gYXJyYXkiKTtyZXR1cm4oZnVuY3Rpb24gZSh0LG4sbyl7Y29uc3QgaT10LnJvd3MsYT10LmNvbHVtbnMscj1bXTtmb3IobGV0IGU9MDtlPGk7ZSsrKXtsZXQgaT0wLHM9MCxsPTA7Zm9yKGxldCBuPTA7bjxhO24rKylsPXQuZ2V0KGUsbiktb1tlXSxpKz1sLHMrPWwqbDtyLnB1c2gobj8ocy1pKmkvYSkvKGEtMSk6KHMtaSppL2EpL2EpfXJldHVybiByfSkodGhpcyxuLG8pO2Nhc2UiY29sdW1uIjppZighQXJyYXkuaXNBcnJheShvKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJtZWFuIG11c3QgYmUgYW4gYXJyYXkiKTtyZXR1cm4oZnVuY3Rpb24gaSh0LGUsbil7Y29uc3Qgbz10LnJvd3MsaT10LmNvbHVtbnMsYT1bXTtmb3IobGV0IHI9MDtyPGk7cisrKXtsZXQgaT0wLHM9MCxsPTA7Zm9yKGxldCBlPTA7ZTxvO2UrKylsPXQuZ2V0KGUsciktbltyXSxpKz1sLHMrPWwqbDthLnB1c2goZT8ocy1pKmkvbykvKG8tMSk6KHMtaSppL28pL28pfXJldHVybiBhfSkodGhpcyxuLG8pO2Nhc2Ugdm9pZCAwOmlmKCJudW1iZXIiIT10eXBlb2Ygbyl0aHJvdyBuZXcgVHlwZUVycm9yKCJtZWFuIG11c3QgYmUgYSBudW1iZXIiKTtyZXR1cm4oZnVuY3Rpb24gYSh0LGUsbil7Y29uc3Qgbz10LnJvd3MsaT10LmNvbHVtbnMsYT1vKmk7bGV0IHI9MCxzPTAsbD0wO2ZvcihsZXQgZT0wO2U8bztlKyspZm9yKGxldCBvPTA7bzxpO28rKylsPXQuZ2V0KGUsbyktbixyKz1sLHMrPWwqbDtyZXR1cm4gZT8ocy1yKnIvYSkvKGEtMSk6KHMtcipyL2EpL2F9KSh0aGlzLG4sbyk7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoYGludmFsaWQgb3B0aW9uOiAke3R9YCl9fXN0YW5kYXJkRGV2aWF0aW9uKHQsZSl7Im9iamVjdCI9PXR5cGVvZiB0JiYoZT10LHQ9dm9pZCAwKTtjb25zdCBuPXRoaXMudmFyaWFuY2UodCxlKTtpZih2b2lkIDA9PT10KXJldHVybiBNYXRoLnNxcnQobik7Zm9yKGxldCB0PTA7dDxuLmxlbmd0aDt0Kyspblt0XT1NYXRoLnNxcnQoblt0XSk7cmV0dXJuIG59Y2VudGVyKHQsZT17fSl7aWYoIm9iamVjdCI9PXR5cGVvZiB0JiYoZT10LHQ9dm9pZCAwKSwib2JqZWN0IiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcigib3B0aW9ucyBtdXN0IGJlIGFuIG9iamVjdCIpO2NvbnN0e2NlbnRlcjpuPXRoaXMubWVhbih0KX09ZTtzd2l0Y2godCl7Y2FzZSJyb3ciOmlmKCFBcnJheS5pc0FycmF5KG4pKXRocm93IG5ldyBUeXBlRXJyb3IoImNlbnRlciBtdXN0IGJlIGFuIGFycmF5Iik7cmV0dXJuKGZ1bmN0aW9uIGUodCxuKXtmb3IobGV0IGU9MDtlPHQucm93cztlKyspZm9yKGxldCBvPTA7bzx0LmNvbHVtbnM7bysrKXQuc2V0KGUsbyx0LmdldChlLG8pLW5bZV0pfSkodGhpcyxuKSx0aGlzO2Nhc2UiY29sdW1uIjppZighQXJyYXkuaXNBcnJheShuKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJjZW50ZXIgbXVzdCBiZSBhbiBhcnJheSIpO3JldHVybihmdW5jdGlvbiBvKHQsZSl7Zm9yKGxldCBuPTA7bjx0LnJvd3M7bisrKWZvcihsZXQgbz0wO288dC5jb2x1bW5zO28rKyl0LnNldChuLG8sdC5nZXQobixvKS1lW29dKX0pKHRoaXMsbiksdGhpcztjYXNlIHZvaWQgMDppZigibnVtYmVyIiE9dHlwZW9mIG4pdGhyb3cgbmV3IFR5cGVFcnJvcigiY2VudGVyIG11c3QgYmUgYSBudW1iZXIiKTtyZXR1cm4oZnVuY3Rpb24gaSh0LGUpe2ZvcihsZXQgbj0wO248dC5yb3dzO24rKylmb3IobGV0IG89MDtvPHQuY29sdW1ucztvKyspdC5zZXQobixvLHQuZ2V0KG4sbyktZSl9KSh0aGlzLG4pLHRoaXM7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoYGludmFsaWQgb3B0aW9uOiAke3R9YCl9fXNjYWxlKHQsZT17fSl7aWYoIm9iamVjdCI9PXR5cGVvZiB0JiYoZT10LHQ9dm9pZCAwKSwib2JqZWN0IiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcigib3B0aW9ucyBtdXN0IGJlIGFuIG9iamVjdCIpO2xldCBuPWUuc2NhbGU7c3dpdGNoKHQpe2Nhc2Uicm93IjppZih2b2lkIDA9PT1uKW49KGZ1bmN0aW9uIGUodCl7Y29uc3QgZT1bXTtmb3IobGV0IG49MDtuPHQucm93cztuKyspe2xldCBvPTA7Zm9yKGxldCBlPTA7ZTx0LmNvbHVtbnM7ZSsrKW8rPU1hdGgucG93KHQuZ2V0KG4sZSksMikvKHQuY29sdW1ucy0xKTtlLnB1c2goTWF0aC5zcXJ0KG8pKX1yZXR1cm4gZX0pKHRoaXMpO2Vsc2UgaWYoIUFycmF5LmlzQXJyYXkobikpdGhyb3cgbmV3IFR5cGVFcnJvcigic2NhbGUgbXVzdCBiZSBhbiBhcnJheSIpO3JldHVybihmdW5jdGlvbiBvKHQsZSl7Zm9yKGxldCBuPTA7bjx0LnJvd3M7bisrKWZvcihsZXQgbz0wO288dC5jb2x1bW5zO28rKyl0LnNldChuLG8sdC5nZXQobixvKS9lW25dKX0pKHRoaXMsbiksdGhpcztjYXNlImNvbHVtbiI6aWYodm9pZCAwPT09biluPShmdW5jdGlvbiBpKHQpe2NvbnN0IGU9W107Zm9yKGxldCBuPTA7bjx0LmNvbHVtbnM7bisrKXtsZXQgbz0wO2ZvcihsZXQgZT0wO2U8dC5yb3dzO2UrKylvKz1NYXRoLnBvdyh0LmdldChlLG4pLDIpLyh0LnJvd3MtMSk7ZS5wdXNoKE1hdGguc3FydChvKSl9cmV0dXJuIGV9KSh0aGlzKTtlbHNlIGlmKCFBcnJheS5pc0FycmF5KG4pKXRocm93IG5ldyBUeXBlRXJyb3IoInNjYWxlIG11c3QgYmUgYW4gYXJyYXkiKTtyZXR1cm4oZnVuY3Rpb24gYSh0LGUpe2ZvcihsZXQgbj0wO248dC5yb3dzO24rKylmb3IobGV0IG89MDtvPHQuY29sdW1ucztvKyspdC5zZXQobixvLHQuZ2V0KG4sbykvZVtvXSl9KSh0aGlzLG4pLHRoaXM7Y2FzZSB2b2lkIDA6aWYodm9pZCAwPT09biluPShmdW5jdGlvbiByKHQpe2NvbnN0IGU9dC5zaXplLTE7bGV0IG49MDtmb3IobGV0IG89MDtvPHQuY29sdW1ucztvKyspZm9yKGxldCBpPTA7aTx0LnJvd3M7aSsrKW4rPU1hdGgucG93KHQuZ2V0KGksbyksMikvZTtyZXR1cm4gTWF0aC5zcXJ0KG4pfSkodGhpcyk7ZWxzZSBpZigibnVtYmVyIiE9dHlwZW9mIG4pdGhyb3cgbmV3IFR5cGVFcnJvcigic2NhbGUgbXVzdCBiZSBhIG51bWJlciIpO3JldHVybihmdW5jdGlvbiBzKHQsZSl7Zm9yKGxldCBuPTA7bjx0LnJvd3M7bisrKWZvcihsZXQgbz0wO288dC5jb2x1bW5zO28rKyl0LnNldChuLG8sdC5nZXQobixvKS9lKX0pKHRoaXMsbiksdGhpcztkZWZhdWx0OnRocm93IG5ldyBFcnJvcihgaW52YWxpZCBvcHRpb246ICR7dH1gKX19dG9TdHJpbmcodCl7cmV0dXJuIGZNdCh0aGlzLHQpfX1mdW5jdGlvbiB3TXQodCxlKXtyZXR1cm4gdC1lfVBNdC5wcm90b3R5cGUua2xhc3M9Ik1hdHJpeCIsInVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJihQTXQucHJvdG90eXBlW1N5bWJvbC5mb3IoIm5vZGVqcy51dGlsLmluc3BlY3QuY3VzdG9tIildPWZ1bmN0aW9uIGtNdCgpe3JldHVybiBmTXQodGhpcyl9KSxQTXQucmFuZG9tPVBNdC5yYW5kLFBNdC5yYW5kb21JbnQ9UE10LnJhbmRJbnQsUE10LmRpYWdvbmFsPVBNdC5kaWFnLFBNdC5wcm90b3R5cGUuZGlhZ29uYWw9UE10LnByb3RvdHlwZS5kaWFnLFBNdC5pZGVudGl0eT1QTXQuZXllLFBNdC5wcm90b3R5cGUubmVnYXRlPVBNdC5wcm90b3R5cGUubmVnLFBNdC5wcm90b3R5cGUudGVuc29yUHJvZHVjdD1QTXQucHJvdG90eXBlLmtyb25lY2tlclByb2R1Y3Q7Y2xhc3MgU010IGV4dGVuZHMgUE10e2NvbnN0cnVjdG9yKHQsZSl7aWYoc3VwZXIoKSxTTXQuaXNNYXRyaXgodCkpcmV0dXJuIHQuY2xvbmUoKTtpZihOdW1iZXIuaXNJbnRlZ2VyKHQpJiZ0Pj0wKXtpZih0aGlzLmRhdGE9W10sIShOdW1iZXIuaXNJbnRlZ2VyKGUpJiZlPj0wKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJuQ29sdW1ucyBtdXN0IGJlIGEgcG9zaXRpdmUgaW50ZWdlciIpO2ZvcihsZXQgbj0wO248dDtuKyspdGhpcy5kYXRhLnB1c2gobmV3IEZsb2F0NjRBcnJheShlKSl9ZWxzZXtpZighQXJyYXkuaXNBcnJheSh0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJGaXJzdCBhcmd1bWVudCBtdXN0IGJlIGEgcG9zaXRpdmUgbnVtYmVyIG9yIGFuIGFycmF5Iik7e2NvbnN0IG49dDtpZigibnVtYmVyIiE9dHlwZW9mKGU9KHQ9bi5sZW5ndGgpP25bMF0ubGVuZ3RoOjApKXRocm93IG5ldyBUeXBlRXJyb3IoIkRhdGEgbXVzdCBiZSBhIDJEIGFycmF5IHdpdGggYXQgbGVhc3Qgb25lIGVsZW1lbnQiKTt0aGlzLmRhdGE9W107Zm9yKGxldCBvPTA7bzx0O28rKyl7aWYobltvXS5sZW5ndGghPT1lKXRocm93IG5ldyBSYW5nZUVycm9yKCJJbmNvbnNpc3RlbnQgYXJyYXkgZGltZW5zaW9ucyIpO3RoaXMuZGF0YS5wdXNoKEZsb2F0NjRBcnJheS5mcm9tKG5bb10pKX19fXRoaXMucm93cz10LHRoaXMuY29sdW1ucz1lfXNldCh0LGUsbil7cmV0dXJuIHRoaXMuZGF0YVt0XVtlXT1uLHRoaXN9Z2V0KHQsZSl7cmV0dXJuIHRoaXMuZGF0YVt0XVtlXX1yZW1vdmVSb3codCl7cmV0dXJuIGdNdCh0aGlzLHQpLHRoaXMuZGF0YS5zcGxpY2UodCwxKSx0aGlzLnJvd3MtPTEsdGhpc31hZGRSb3codCxlKXtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9dCx0PXRoaXMucm93cyksZ010KHRoaXMsdCwhMCksZT1GbG9hdDY0QXJyYXkuZnJvbShiTXQodGhpcyxlKSksdGhpcy5kYXRhLnNwbGljZSh0LDAsZSksdGhpcy5yb3dzKz0xLHRoaXN9cmVtb3ZlQ29sdW1uKHQpe2hNdCh0aGlzLHQpO2ZvcihsZXQgZT0wO2U8dGhpcy5yb3dzO2UrKyl7Y29uc3Qgbj1uZXcgRmxvYXQ2NEFycmF5KHRoaXMuY29sdW1ucy0xKTtmb3IobGV0IG89MDtvPHQ7bysrKW5bb109dGhpcy5kYXRhW2VdW29dO2ZvcihsZXQgbz10KzE7bzx0aGlzLmNvbHVtbnM7bysrKW5bby0xXT10aGlzLmRhdGFbZV1bb107dGhpcy5kYXRhW2VdPW59cmV0dXJuIHRoaXMuY29sdW1ucy09MSx0aGlzfWFkZENvbHVtbih0LGUpe3ZvaWQgMD09PWUmJihlPXQsdD10aGlzLmNvbHVtbnMpLGhNdCh0aGlzLHQsITApLGU9eU10KHRoaXMsZSk7Zm9yKGxldCBuPTA7bjx0aGlzLnJvd3M7bisrKXtjb25zdCBvPW5ldyBGbG9hdDY0QXJyYXkodGhpcy5jb2x1bW5zKzEpO2xldCBpPTA7Zm9yKDtpPHQ7aSsrKW9baV09dGhpcy5kYXRhW25dW2ldO2ZvcihvW2krK109ZVtuXTtpPHRoaXMuY29sdW1ucysxO2krKylvW2ldPXRoaXMuZGF0YVtuXVtpLTFdO3RoaXMuZGF0YVtuXT1vfXJldHVybiB0aGlzLmNvbHVtbnMrPTEsdGhpc319IShmdW5jdGlvbiBETXQodCxlKXt0LnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24gdChlKXtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIGU/dGhpcy5hZGRTKGUpOnRoaXMuYWRkTShlKX0sdC5wcm90b3R5cGUuYWRkUz1mdW5jdGlvbiB0KGUpe2ZvcihsZXQgdD0wO3Q8dGhpcy5yb3dzO3QrKylmb3IobGV0IG49MDtuPHRoaXMuY29sdW1ucztuKyspdGhpcy5zZXQodCxuLHRoaXMuZ2V0KHQsbikrZSk7cmV0dXJuIHRoaXN9LHQucHJvdG90eXBlLmFkZE09ZnVuY3Rpb24gdChuKXtpZihuPWUuY2hlY2tNYXRyaXgobiksdGhpcy5yb3dzIT09bi5yb3dzfHx0aGlzLmNvbHVtbnMhPT1uLmNvbHVtbnMpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIk1hdHJpY2VzIGRpbWVuc2lvbnMgbXVzdCBiZSBlcXVhbCIpO2ZvcihsZXQgdD0wO3Q8dGhpcy5yb3dzO3QrKylmb3IobGV0IGU9MDtlPHRoaXMuY29sdW1ucztlKyspdGhpcy5zZXQodCxlLHRoaXMuZ2V0KHQsZSkrbi5nZXQodCxlKSk7cmV0dXJuIHRoaXN9LHQuYWRkPWZ1bmN0aW9uIHQobixvKXtyZXR1cm4gbmV3IGUobikuYWRkKG8pfSx0LnByb3RvdHlwZS5zdWI9ZnVuY3Rpb24gdChlKXtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIGU/dGhpcy5zdWJTKGUpOnRoaXMuc3ViTShlKX0sdC5wcm90b3R5cGUuc3ViUz1mdW5jdGlvbiB0KGUpe2ZvcihsZXQgdD0wO3Q8dGhpcy5yb3dzO3QrKylmb3IobGV0IG49MDtuPHRoaXMuY29sdW1ucztuKyspdGhpcy5zZXQodCxuLHRoaXMuZ2V0KHQsbiktZSk7cmV0dXJuIHRoaXN9LHQucHJvdG90eXBlLnN1Yk09ZnVuY3Rpb24gdChuKXtpZihuPWUuY2hlY2tNYXRyaXgobiksdGhpcy5yb3dzIT09bi5yb3dzfHx0aGlzLmNvbHVtbnMhPT1uLmNvbHVtbnMpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIk1hdHJpY2VzIGRpbWVuc2lvbnMgbXVzdCBiZSBlcXVhbCIpO2ZvcihsZXQgdD0wO3Q8dGhpcy5yb3dzO3QrKylmb3IobGV0IGU9MDtlPHRoaXMuY29sdW1ucztlKyspdGhpcy5zZXQodCxlLHRoaXMuZ2V0KHQsZSktbi5nZXQodCxlKSk7cmV0dXJuIHRoaXN9LHQuc3ViPWZ1bmN0aW9uIHQobixvKXtyZXR1cm4gbmV3IGUobikuc3ViKG8pfSx0LnByb3RvdHlwZS5zdWJ0cmFjdD10LnByb3RvdHlwZS5zdWIsdC5wcm90b3R5cGUuc3VidHJhY3RTPXQucHJvdG90eXBlLnN1YlMsdC5wcm90b3R5cGUuc3VidHJhY3RNPXQucHJvdG90eXBlLnN1Yk0sdC5zdWJ0cmFjdD10LnN1Yix0LnByb3RvdHlwZS5tdWw9ZnVuY3Rpb24gdChlKXtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIGU/dGhpcy5tdWxTKGUpOnRoaXMubXVsTShlKX0sdC5wcm90b3R5cGUubXVsUz1mdW5jdGlvbiB0KGUpe2ZvcihsZXQgdD0wO3Q8dGhpcy5yb3dzO3QrKylmb3IobGV0IG49MDtuPHRoaXMuY29sdW1ucztuKyspdGhpcy5zZXQodCxuLHRoaXMuZ2V0KHQsbikqZSk7cmV0dXJuIHRoaXN9LHQucHJvdG90eXBlLm11bE09ZnVuY3Rpb24gdChuKXtpZihuPWUuY2hlY2tNYXRyaXgobiksdGhpcy5yb3dzIT09bi5yb3dzfHx0aGlzLmNvbHVtbnMhPT1uLmNvbHVtbnMpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIk1hdHJpY2VzIGRpbWVuc2lvbnMgbXVzdCBiZSBlcXVhbCIpO2ZvcihsZXQgdD0wO3Q8dGhpcy5yb3dzO3QrKylmb3IobGV0IGU9MDtlPHRoaXMuY29sdW1ucztlKyspdGhpcy5zZXQodCxlLHRoaXMuZ2V0KHQsZSkqbi5nZXQodCxlKSk7cmV0dXJuIHRoaXN9LHQubXVsPWZ1bmN0aW9uIHQobixvKXtyZXR1cm4gbmV3IGUobikubXVsKG8pfSx0LnByb3RvdHlwZS5tdWx0aXBseT10LnByb3RvdHlwZS5tdWwsdC5wcm90b3R5cGUubXVsdGlwbHlTPXQucHJvdG90eXBlLm11bFMsdC5wcm90b3R5cGUubXVsdGlwbHlNPXQucHJvdG90eXBlLm11bE0sdC5tdWx0aXBseT10Lm11bCx0LnByb3RvdHlwZS5kaXY9ZnVuY3Rpb24gdChlKXtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIGU/dGhpcy5kaXZTKGUpOnRoaXMuZGl2TShlKX0sdC5wcm90b3R5cGUuZGl2Uz1mdW5jdGlvbiB0KGUpe2ZvcihsZXQgdD0wO3Q8dGhpcy5yb3dzO3QrKylmb3IobGV0IG49MDtuPHRoaXMuY29sdW1ucztuKyspdGhpcy5zZXQodCxuLHRoaXMuZ2V0KHQsbikvZSk7cmV0dXJuIHRoaXN9LHQucHJvdG90eXBlLmRpdk09ZnVuY3Rpb24gdChuKXtpZihuPWUuY2hlY2tNYXRyaXgobiksdGhpcy5yb3dzIT09bi5yb3dzfHx0aGlzLmNvbHVtbnMhPT1uLmNvbHVtbnMpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIk1hdHJpY2VzIGRpbWVuc2lvbnMgbXVzdCBiZSBlcXVhbCIpO2ZvcihsZXQgdD0wO3Q8dGhpcy5yb3dzO3QrKylmb3IobGV0IGU9MDtlPHRoaXMuY29sdW1ucztlKyspdGhpcy5zZXQodCxlLHRoaXMuZ2V0KHQsZSkvbi5nZXQodCxlKSk7cmV0dXJuIHRoaXN9LHQuZGl2PWZ1bmN0aW9uIHQobixvKXtyZXR1cm4gbmV3IGUobikuZGl2KG8pfSx0LnByb3RvdHlwZS5kaXZpZGU9dC5wcm90b3R5cGUuZGl2LHQucHJvdG90eXBlLmRpdmlkZVM9dC5wcm90b3R5cGUuZGl2Uyx0LnByb3RvdHlwZS5kaXZpZGVNPXQucHJvdG90eXBlLmRpdk0sdC5kaXZpZGU9dC5kaXYsdC5wcm90b3R5cGUubW9kPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiBlP3RoaXMubW9kUyhlKTp0aGlzLm1vZE0oZSl9LHQucHJvdG90eXBlLm1vZFM9ZnVuY3Rpb24gdChlKXtmb3IobGV0IHQ9MDt0PHRoaXMucm93czt0KyspZm9yKGxldCBuPTA7bjx0aGlzLmNvbHVtbnM7bisrKXRoaXMuc2V0KHQsbix0aGlzLmdldCh0LG4pJWUpO3JldHVybiB0aGlzfSx0LnByb3RvdHlwZS5tb2RNPWZ1bmN0aW9uIHQobil7aWYobj1lLmNoZWNrTWF0cml4KG4pLHRoaXMucm93cyE9PW4ucm93c3x8dGhpcy5jb2x1bW5zIT09bi5jb2x1bW5zKXRocm93IG5ldyBSYW5nZUVycm9yKCJNYXRyaWNlcyBkaW1lbnNpb25zIG11c3QgYmUgZXF1YWwiKTtmb3IobGV0IHQ9MDt0PHRoaXMucm93czt0KyspZm9yKGxldCBlPTA7ZTx0aGlzLmNvbHVtbnM7ZSsrKXRoaXMuc2V0KHQsZSx0aGlzLmdldCh0LGUpJW4uZ2V0KHQsZSkpO3JldHVybiB0aGlzfSx0Lm1vZD1mdW5jdGlvbiB0KG4sbyl7cmV0dXJuIG5ldyBlKG4pLm1vZChvKX0sdC5wcm90b3R5cGUubW9kdWx1cz10LnByb3RvdHlwZS5tb2QsdC5wcm90b3R5cGUubW9kdWx1c1M9dC5wcm90b3R5cGUubW9kUyx0LnByb3RvdHlwZS5tb2R1bHVzTT10LnByb3RvdHlwZS5tb2RNLHQubW9kdWx1cz10Lm1vZCx0LnByb3RvdHlwZS5hbmQ9ZnVuY3Rpb24gdChlKXtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIGU/dGhpcy5hbmRTKGUpOnRoaXMuYW5kTShlKX0sdC5wcm90b3R5cGUuYW5kUz1mdW5jdGlvbiB0KGUpe2ZvcihsZXQgdD0wO3Q8dGhpcy5yb3dzO3QrKylmb3IobGV0IG49MDtuPHRoaXMuY29sdW1ucztuKyspdGhpcy5zZXQodCxuLHRoaXMuZ2V0KHQsbikmZSk7cmV0dXJuIHRoaXN9LHQucHJvdG90eXBlLmFuZE09ZnVuY3Rpb24gdChuKXtpZihuPWUuY2hlY2tNYXRyaXgobiksdGhpcy5yb3dzIT09bi5yb3dzfHx0aGlzLmNvbHVtbnMhPT1uLmNvbHVtbnMpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIk1hdHJpY2VzIGRpbWVuc2lvbnMgbXVzdCBiZSBlcXVhbCIpO2ZvcihsZXQgdD0wO3Q8dGhpcy5yb3dzO3QrKylmb3IobGV0IGU9MDtlPHRoaXMuY29sdW1ucztlKyspdGhpcy5zZXQodCxlLHRoaXMuZ2V0KHQsZSkmbi5nZXQodCxlKSk7cmV0dXJuIHRoaXN9LHQuYW5kPWZ1bmN0aW9uIHQobixvKXtyZXR1cm4gbmV3IGUobikuYW5kKG8pfSx0LnByb3RvdHlwZS5vcj1mdW5jdGlvbiB0KGUpe3JldHVybiJudW1iZXIiPT10eXBlb2YgZT90aGlzLm9yUyhlKTp0aGlzLm9yTShlKX0sdC5wcm90b3R5cGUub3JTPWZ1bmN0aW9uIHQoZSl7Zm9yKGxldCB0PTA7dDx0aGlzLnJvd3M7dCsrKWZvcihsZXQgbj0wO248dGhpcy5jb2x1bW5zO24rKyl0aGlzLnNldCh0LG4sdGhpcy5nZXQodCxuKXxlKTtyZXR1cm4gdGhpc30sdC5wcm90b3R5cGUub3JNPWZ1bmN0aW9uIHQobil7aWYobj1lLmNoZWNrTWF0cml4KG4pLHRoaXMucm93cyE9PW4ucm93c3x8dGhpcy5jb2x1bW5zIT09bi5jb2x1bW5zKXRocm93IG5ldyBSYW5nZUVycm9yKCJNYXRyaWNlcyBkaW1lbnNpb25zIG11c3QgYmUgZXF1YWwiKTtmb3IobGV0IHQ9MDt0PHRoaXMucm93czt0KyspZm9yKGxldCBlPTA7ZTx0aGlzLmNvbHVtbnM7ZSsrKXRoaXMuc2V0KHQsZSx0aGlzLmdldCh0LGUpfG4uZ2V0KHQsZSkpO3JldHVybiB0aGlzfSx0Lm9yPWZ1bmN0aW9uIHQobixvKXtyZXR1cm4gbmV3IGUobikub3Iobyl9LHQucHJvdG90eXBlLnhvcj1mdW5jdGlvbiB0KGUpe3JldHVybiJudW1iZXIiPT10eXBlb2YgZT90aGlzLnhvclMoZSk6dGhpcy54b3JNKGUpfSx0LnByb3RvdHlwZS54b3JTPWZ1bmN0aW9uIHQoZSl7Zm9yKGxldCB0PTA7dDx0aGlzLnJvd3M7dCsrKWZvcihsZXQgbj0wO248dGhpcy5jb2x1bW5zO24rKyl0aGlzLnNldCh0LG4sdGhpcy5nZXQodCxuKV5lKTtyZXR1cm4gdGhpc30sdC5wcm90b3R5cGUueG9yTT1mdW5jdGlvbiB0KG4pe2lmKG49ZS5jaGVja01hdHJpeChuKSx0aGlzLnJvd3MhPT1uLnJvd3N8fHRoaXMuY29sdW1ucyE9PW4uY29sdW1ucyl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiTWF0cmljZXMgZGltZW5zaW9ucyBtdXN0IGJlIGVxdWFsIik7Zm9yKGxldCB0PTA7dDx0aGlzLnJvd3M7dCsrKWZvcihsZXQgZT0wO2U8dGhpcy5jb2x1bW5zO2UrKyl0aGlzLnNldCh0LGUsdGhpcy5nZXQodCxlKV5uLmdldCh0LGUpKTtyZXR1cm4gdGhpc30sdC54b3I9ZnVuY3Rpb24gdChuLG8pe3JldHVybiBuZXcgZShuKS54b3Iobyl9LHQucHJvdG90eXBlLmxlZnRTaGlmdD1mdW5jdGlvbiB0KGUpe3JldHVybiJudW1iZXIiPT10eXBlb2YgZT90aGlzLmxlZnRTaGlmdFMoZSk6dGhpcy5sZWZ0U2hpZnRNKGUpfSx0LnByb3RvdHlwZS5sZWZ0U2hpZnRTPWZ1bmN0aW9uIHQoZSl7Zm9yKGxldCB0PTA7dDx0aGlzLnJvd3M7dCsrKWZvcihsZXQgbj0wO248dGhpcy5jb2x1bW5zO24rKyl0aGlzLnNldCh0LG4sdGhpcy5nZXQodCxuKTw8ZSk7cmV0dXJuIHRoaXN9LHQucHJvdG90eXBlLmxlZnRTaGlmdE09ZnVuY3Rpb24gdChuKXtpZihuPWUuY2hlY2tNYXRyaXgobiksdGhpcy5yb3dzIT09bi5yb3dzfHx0aGlzLmNvbHVtbnMhPT1uLmNvbHVtbnMpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIk1hdHJpY2VzIGRpbWVuc2lvbnMgbXVzdCBiZSBlcXVhbCIpO2ZvcihsZXQgdD0wO3Q8dGhpcy5yb3dzO3QrKylmb3IobGV0IGU9MDtlPHRoaXMuY29sdW1ucztlKyspdGhpcy5zZXQodCxlLHRoaXMuZ2V0KHQsZSk8PG4uZ2V0KHQsZSkpO3JldHVybiB0aGlzfSx0LmxlZnRTaGlmdD1mdW5jdGlvbiB0KG4sbyl7cmV0dXJuIG5ldyBlKG4pLmxlZnRTaGlmdChvKX0sdC5wcm90b3R5cGUuc2lnblByb3BhZ2F0aW5nUmlnaHRTaGlmdD1mdW5jdGlvbiB0KGUpe3JldHVybiJudW1iZXIiPT10eXBlb2YgZT90aGlzLnNpZ25Qcm9wYWdhdGluZ1JpZ2h0U2hpZnRTKGUpOnRoaXMuc2lnblByb3BhZ2F0aW5nUmlnaHRTaGlmdE0oZSl9LHQucHJvdG90eXBlLnNpZ25Qcm9wYWdhdGluZ1JpZ2h0U2hpZnRTPWZ1bmN0aW9uIHQoZSl7Zm9yKGxldCB0PTA7dDx0aGlzLnJvd3M7dCsrKWZvcihsZXQgbj0wO248dGhpcy5jb2x1bW5zO24rKyl0aGlzLnNldCh0LG4sdGhpcy5nZXQodCxuKT4+ZSk7cmV0dXJuIHRoaXN9LHQucHJvdG90eXBlLnNpZ25Qcm9wYWdhdGluZ1JpZ2h0U2hpZnRNPWZ1bmN0aW9uIHQobil7aWYobj1lLmNoZWNrTWF0cml4KG4pLHRoaXMucm93cyE9PW4ucm93c3x8dGhpcy5jb2x1bW5zIT09bi5jb2x1bW5zKXRocm93IG5ldyBSYW5nZUVycm9yKCJNYXRyaWNlcyBkaW1lbnNpb25zIG11c3QgYmUgZXF1YWwiKTtmb3IobGV0IHQ9MDt0PHRoaXMucm93czt0KyspZm9yKGxldCBlPTA7ZTx0aGlzLmNvbHVtbnM7ZSsrKXRoaXMuc2V0KHQsZSx0aGlzLmdldCh0LGUpPj5uLmdldCh0LGUpKTtyZXR1cm4gdGhpc30sdC5zaWduUHJvcGFnYXRpbmdSaWdodFNoaWZ0PWZ1bmN0aW9uIHQobixvKXtyZXR1cm4gbmV3IGUobikuc2lnblByb3BhZ2F0aW5nUmlnaHRTaGlmdChvKX0sdC5wcm90b3R5cGUucmlnaHRTaGlmdD1mdW5jdGlvbiB0KGUpe3JldHVybiJudW1iZXIiPT10eXBlb2YgZT90aGlzLnJpZ2h0U2hpZnRTKGUpOnRoaXMucmlnaHRTaGlmdE0oZSl9LHQucHJvdG90eXBlLnJpZ2h0U2hpZnRTPWZ1bmN0aW9uIHQoZSl7Zm9yKGxldCB0PTA7dDx0aGlzLnJvd3M7dCsrKWZvcihsZXQgbj0wO248dGhpcy5jb2x1bW5zO24rKyl0aGlzLnNldCh0LG4sdGhpcy5nZXQodCxuKT4+PmUpO3JldHVybiB0aGlzfSx0LnByb3RvdHlwZS5yaWdodFNoaWZ0TT1mdW5jdGlvbiB0KG4pe2lmKG49ZS5jaGVja01hdHJpeChuKSx0aGlzLnJvd3MhPT1uLnJvd3N8fHRoaXMuY29sdW1ucyE9PW4uY29sdW1ucyl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiTWF0cmljZXMgZGltZW5zaW9ucyBtdXN0IGJlIGVxdWFsIik7Zm9yKGxldCB0PTA7dDx0aGlzLnJvd3M7dCsrKWZvcihsZXQgZT0wO2U8dGhpcy5jb2x1bW5zO2UrKyl0aGlzLnNldCh0LGUsdGhpcy5nZXQodCxlKT4+Pm4uZ2V0KHQsZSkpO3JldHVybiB0aGlzfSx0LnJpZ2h0U2hpZnQ9ZnVuY3Rpb24gdChuLG8pe3JldHVybiBuZXcgZShuKS5yaWdodFNoaWZ0KG8pfSx0LnByb3RvdHlwZS56ZXJvRmlsbFJpZ2h0U2hpZnQ9dC5wcm90b3R5cGUucmlnaHRTaGlmdCx0LnByb3RvdHlwZS56ZXJvRmlsbFJpZ2h0U2hpZnRTPXQucHJvdG90eXBlLnJpZ2h0U2hpZnRTLHQucHJvdG90eXBlLnplcm9GaWxsUmlnaHRTaGlmdE09dC5wcm90b3R5cGUucmlnaHRTaGlmdE0sdC56ZXJvRmlsbFJpZ2h0U2hpZnQ9dC5yaWdodFNoaWZ0LHQucHJvdG90eXBlLm5vdD1mdW5jdGlvbiB0KCl7Zm9yKGxldCB0PTA7dDx0aGlzLnJvd3M7dCsrKWZvcihsZXQgZT0wO2U8dGhpcy5jb2x1bW5zO2UrKyl0aGlzLnNldCh0LGUsfnRoaXMuZ2V0KHQsZSkpO3JldHVybiB0aGlzfSx0Lm5vdD1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcgZShuKS5ub3QoKX0sdC5wcm90b3R5cGUuYWJzPWZ1bmN0aW9uIHQoKXtmb3IobGV0IHQ9MDt0PHRoaXMucm93czt0KyspZm9yKGxldCBlPTA7ZTx0aGlzLmNvbHVtbnM7ZSsrKXRoaXMuc2V0KHQsZSxNYXRoLmFicyh0aGlzLmdldCh0LGUpKSk7cmV0dXJuIHRoaXN9LHQuYWJzPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyBlKG4pLmFicygpfSx0LnByb3RvdHlwZS5hY29zPWZ1bmN0aW9uIHQoKXtmb3IobGV0IHQ9MDt0PHRoaXMucm93czt0KyspZm9yKGxldCBlPTA7ZTx0aGlzLmNvbHVtbnM7ZSsrKXRoaXMuc2V0KHQsZSxNYXRoLmFjb3ModGhpcy5nZXQodCxlKSkpO3JldHVybiB0aGlzfSx0LmFjb3M9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3IGUobikuYWNvcygpfSx0LnByb3RvdHlwZS5hY29zaD1mdW5jdGlvbiB0KCl7Zm9yKGxldCB0PTA7dDx0aGlzLnJvd3M7dCsrKWZvcihsZXQgZT0wO2U8dGhpcy5jb2x1bW5zO2UrKyl0aGlzLnNldCh0LGUsTWF0aC5hY29zaCh0aGlzLmdldCh0LGUpKSk7cmV0dXJuIHRoaXN9LHQuYWNvc2g9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3IGUobikuYWNvc2goKX0sdC5wcm90b3R5cGUuYXNpbj1mdW5jdGlvbiB0KCl7Zm9yKGxldCB0PTA7dDx0aGlzLnJvd3M7dCsrKWZvcihsZXQgZT0wO2U8dGhpcy5jb2x1bW5zO2UrKyl0aGlzLnNldCh0LGUsTWF0aC5hc2luKHRoaXMuZ2V0KHQsZSkpKTtyZXR1cm4gdGhpc30sdC5hc2luPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyBlKG4pLmFzaW4oKX0sdC5wcm90b3R5cGUuYXNpbmg9ZnVuY3Rpb24gdCgpe2ZvcihsZXQgdD0wO3Q8dGhpcy5yb3dzO3QrKylmb3IobGV0IGU9MDtlPHRoaXMuY29sdW1ucztlKyspdGhpcy5zZXQodCxlLE1hdGguYXNpbmgodGhpcy5nZXQodCxlKSkpO3JldHVybiB0aGlzfSx0LmFzaW5oPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyBlKG4pLmFzaW5oKCl9LHQucHJvdG90eXBlLmF0YW49ZnVuY3Rpb24gdCgpe2ZvcihsZXQgdD0wO3Q8dGhpcy5yb3dzO3QrKylmb3IobGV0IGU9MDtlPHRoaXMuY29sdW1ucztlKyspdGhpcy5zZXQodCxlLE1hdGguYXRhbih0aGlzLmdldCh0LGUpKSk7cmV0dXJuIHRoaXN9LHQuYXRhbj1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcgZShuKS5hdGFuKCl9LHQucHJvdG90eXBlLmF0YW5oPWZ1bmN0aW9uIHQoKXtmb3IobGV0IHQ9MDt0PHRoaXMucm93czt0KyspZm9yKGxldCBlPTA7ZTx0aGlzLmNvbHVtbnM7ZSsrKXRoaXMuc2V0KHQsZSxNYXRoLmF0YW5oKHRoaXMuZ2V0KHQsZSkpKTtyZXR1cm4gdGhpc30sdC5hdGFuaD1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcgZShuKS5hdGFuaCgpfSx0LnByb3RvdHlwZS5jYnJ0PWZ1bmN0aW9uIHQoKXtmb3IobGV0IHQ9MDt0PHRoaXMucm93czt0KyspZm9yKGxldCBlPTA7ZTx0aGlzLmNvbHVtbnM7ZSsrKXRoaXMuc2V0KHQsZSxNYXRoLmNicnQodGhpcy5nZXQodCxlKSkpO3JldHVybiB0aGlzfSx0LmNicnQ9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3IGUobikuY2JydCgpfSx0LnByb3RvdHlwZS5jZWlsPWZ1bmN0aW9uIHQoKXtmb3IobGV0IHQ9MDt0PHRoaXMucm93czt0KyspZm9yKGxldCBlPTA7ZTx0aGlzLmNvbHVtbnM7ZSsrKXRoaXMuc2V0KHQsZSxNYXRoLmNlaWwodGhpcy5nZXQodCxlKSkpO3JldHVybiB0aGlzfSx0LmNlaWw9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3IGUobikuY2VpbCgpfSx0LnByb3RvdHlwZS5jbHozMj1mdW5jdGlvbiB0KCl7Zm9yKGxldCB0PTA7dDx0aGlzLnJvd3M7dCsrKWZvcihsZXQgZT0wO2U8dGhpcy5jb2x1bW5zO2UrKyl0aGlzLnNldCh0LGUsTWF0aC5jbHozMih0aGlzLmdldCh0LGUpKSk7cmV0dXJuIHRoaXN9LHQuY2x6MzI9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3IGUobikuY2x6MzIoKX0sdC5wcm90b3R5cGUuY29zPWZ1bmN0aW9uIHQoKXtmb3IobGV0IHQ9MDt0PHRoaXMucm93czt0KyspZm9yKGxldCBlPTA7ZTx0aGlzLmNvbHVtbnM7ZSsrKXRoaXMuc2V0KHQsZSxNYXRoLmNvcyh0aGlzLmdldCh0LGUpKSk7cmV0dXJuIHRoaXN9LHQuY29zPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyBlKG4pLmNvcygpfSx0LnByb3RvdHlwZS5jb3NoPWZ1bmN0aW9uIHQoKXtmb3IobGV0IHQ9MDt0PHRoaXMucm93czt0KyspZm9yKGxldCBlPTA7ZTx0aGlzLmNvbHVtbnM7ZSsrKXRoaXMuc2V0KHQsZSxNYXRoLmNvc2godGhpcy5nZXQodCxlKSkpO3JldHVybiB0aGlzfSx0LmNvc2g9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3IGUobikuY29zaCgpfSx0LnByb3RvdHlwZS5leHA9ZnVuY3Rpb24gdCgpe2ZvcihsZXQgdD0wO3Q8dGhpcy5yb3dzO3QrKylmb3IobGV0IGU9MDtlPHRoaXMuY29sdW1ucztlKyspdGhpcy5zZXQodCxlLE1hdGguZXhwKHRoaXMuZ2V0KHQsZSkpKTtyZXR1cm4gdGhpc30sdC5leHA9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3IGUobikuZXhwKCl9LHQucHJvdG90eXBlLmV4cG0xPWZ1bmN0aW9uIHQoKXtmb3IobGV0IHQ9MDt0PHRoaXMucm93czt0KyspZm9yKGxldCBlPTA7ZTx0aGlzLmNvbHVtbnM7ZSsrKXRoaXMuc2V0KHQsZSxNYXRoLmV4cG0xKHRoaXMuZ2V0KHQsZSkpKTtyZXR1cm4gdGhpc30sdC5leHBtMT1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcgZShuKS5leHBtMSgpfSx0LnByb3RvdHlwZS5mbG9vcj1mdW5jdGlvbiB0KCl7Zm9yKGxldCB0PTA7dDx0aGlzLnJvd3M7dCsrKWZvcihsZXQgZT0wO2U8dGhpcy5jb2x1bW5zO2UrKyl0aGlzLnNldCh0LGUsTWF0aC5mbG9vcih0aGlzLmdldCh0LGUpKSk7cmV0dXJuIHRoaXN9LHQuZmxvb3I9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3IGUobikuZmxvb3IoKX0sdC5wcm90b3R5cGUuZnJvdW5kPWZ1bmN0aW9uIHQoKXtmb3IobGV0IHQ9MDt0PHRoaXMucm93czt0KyspZm9yKGxldCBlPTA7ZTx0aGlzLmNvbHVtbnM7ZSsrKXRoaXMuc2V0KHQsZSxNYXRoLmZyb3VuZCh0aGlzLmdldCh0LGUpKSk7cmV0dXJuIHRoaXN9LHQuZnJvdW5kPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyBlKG4pLmZyb3VuZCgpfSx0LnByb3RvdHlwZS5sb2c9ZnVuY3Rpb24gdCgpe2ZvcihsZXQgdD0wO3Q8dGhpcy5yb3dzO3QrKylmb3IobGV0IGU9MDtlPHRoaXMuY29sdW1ucztlKyspdGhpcy5zZXQodCxlLE1hdGgubG9nKHRoaXMuZ2V0KHQsZSkpKTtyZXR1cm4gdGhpc30sdC5sb2c9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3IGUobikubG9nKCl9LHQucHJvdG90eXBlLmxvZzFwPWZ1bmN0aW9uIHQoKXtmb3IobGV0IHQ9MDt0PHRoaXMucm93czt0KyspZm9yKGxldCBlPTA7ZTx0aGlzLmNvbHVtbnM7ZSsrKXRoaXMuc2V0KHQsZSxNYXRoLmxvZzFwKHRoaXMuZ2V0KHQsZSkpKTtyZXR1cm4gdGhpc30sdC5sb2cxcD1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcgZShuKS5sb2cxcCgpfSx0LnByb3RvdHlwZS5sb2cxMD1mdW5jdGlvbiB0KCl7Zm9yKGxldCB0PTA7dDx0aGlzLnJvd3M7dCsrKWZvcihsZXQgZT0wO2U8dGhpcy5jb2x1bW5zO2UrKyl0aGlzLnNldCh0LGUsTWF0aC5sb2cxMCh0aGlzLmdldCh0LGUpKSk7cmV0dXJuIHRoaXN9LHQubG9nMTA9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3IGUobikubG9nMTAoKX0sdC5wcm90b3R5cGUubG9nMj1mdW5jdGlvbiB0KCl7Zm9yKGxldCB0PTA7dDx0aGlzLnJvd3M7dCsrKWZvcihsZXQgZT0wO2U8dGhpcy5jb2x1bW5zO2UrKyl0aGlzLnNldCh0LGUsTWF0aC5sb2cyKHRoaXMuZ2V0KHQsZSkpKTtyZXR1cm4gdGhpc30sdC5sb2cyPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyBlKG4pLmxvZzIoKX0sdC5wcm90b3R5cGUucm91bmQ9ZnVuY3Rpb24gdCgpe2ZvcihsZXQgdD0wO3Q8dGhpcy5yb3dzO3QrKylmb3IobGV0IGU9MDtlPHRoaXMuY29sdW1ucztlKyspdGhpcy5zZXQodCxlLE1hdGgucm91bmQodGhpcy5nZXQodCxlKSkpO3JldHVybiB0aGlzfSx0LnJvdW5kPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyBlKG4pLnJvdW5kKCl9LHQucHJvdG90eXBlLnNpZ249ZnVuY3Rpb24gdCgpe2ZvcihsZXQgdD0wO3Q8dGhpcy5yb3dzO3QrKylmb3IobGV0IGU9MDtlPHRoaXMuY29sdW1ucztlKyspdGhpcy5zZXQodCxlLE1hdGguc2lnbih0aGlzLmdldCh0LGUpKSk7cmV0dXJuIHRoaXN9LHQuc2lnbj1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcgZShuKS5zaWduKCl9LHQucHJvdG90eXBlLnNpbj1mdW5jdGlvbiB0KCl7Zm9yKGxldCB0PTA7dDx0aGlzLnJvd3M7dCsrKWZvcihsZXQgZT0wO2U8dGhpcy5jb2x1bW5zO2UrKyl0aGlzLnNldCh0LGUsTWF0aC5zaW4odGhpcy5nZXQodCxlKSkpO3JldHVybiB0aGlzfSx0LnNpbj1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcgZShuKS5zaW4oKX0sdC5wcm90b3R5cGUuc2luaD1mdW5jdGlvbiB0KCl7Zm9yKGxldCB0PTA7dDx0aGlzLnJvd3M7dCsrKWZvcihsZXQgZT0wO2U8dGhpcy5jb2x1bW5zO2UrKyl0aGlzLnNldCh0LGUsTWF0aC5zaW5oKHRoaXMuZ2V0KHQsZSkpKTtyZXR1cm4gdGhpc30sdC5zaW5oPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyBlKG4pLnNpbmgoKX0sdC5wcm90b3R5cGUuc3FydD1mdW5jdGlvbiB0KCl7Zm9yKGxldCB0PTA7dDx0aGlzLnJvd3M7dCsrKWZvcihsZXQgZT0wO2U8dGhpcy5jb2x1bW5zO2UrKyl0aGlzLnNldCh0LGUsTWF0aC5zcXJ0KHRoaXMuZ2V0KHQsZSkpKTtyZXR1cm4gdGhpc30sdC5zcXJ0PWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyBlKG4pLnNxcnQoKX0sdC5wcm90b3R5cGUudGFuPWZ1bmN0aW9uIHQoKXtmb3IobGV0IHQ9MDt0PHRoaXMucm93czt0KyspZm9yKGxldCBlPTA7ZTx0aGlzLmNvbHVtbnM7ZSsrKXRoaXMuc2V0KHQsZSxNYXRoLnRhbih0aGlzLmdldCh0LGUpKSk7cmV0dXJuIHRoaXN9LHQudGFuPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyBlKG4pLnRhbigpfSx0LnByb3RvdHlwZS50YW5oPWZ1bmN0aW9uIHQoKXtmb3IobGV0IHQ9MDt0PHRoaXMucm93czt0KyspZm9yKGxldCBlPTA7ZTx0aGlzLmNvbHVtbnM7ZSsrKXRoaXMuc2V0KHQsZSxNYXRoLnRhbmgodGhpcy5nZXQodCxlKSkpO3JldHVybiB0aGlzfSx0LnRhbmg9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3IGUobikudGFuaCgpfSx0LnByb3RvdHlwZS50cnVuYz1mdW5jdGlvbiB0KCl7Zm9yKGxldCB0PTA7dDx0aGlzLnJvd3M7dCsrKWZvcihsZXQgZT0wO2U8dGhpcy5jb2x1bW5zO2UrKyl0aGlzLnNldCh0LGUsTWF0aC50cnVuYyh0aGlzLmdldCh0LGUpKSk7cmV0dXJuIHRoaXN9LHQudHJ1bmM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3IGUobikudHJ1bmMoKX0sdC5wb3c9ZnVuY3Rpb24gdChuLG8pe3JldHVybiBuZXcgZShuKS5wb3cobyl9LHQucHJvdG90eXBlLnBvdz1mdW5jdGlvbiB0KGUpe3JldHVybiJudW1iZXIiPT10eXBlb2YgZT90aGlzLnBvd1MoZSk6dGhpcy5wb3dNKGUpfSx0LnByb3RvdHlwZS5wb3dTPWZ1bmN0aW9uIHQoZSl7Zm9yKGxldCB0PTA7dDx0aGlzLnJvd3M7dCsrKWZvcihsZXQgbj0wO248dGhpcy5jb2x1bW5zO24rKyl0aGlzLnNldCh0LG4sTWF0aC5wb3codGhpcy5nZXQodCxuKSxlKSk7cmV0dXJuIHRoaXN9LHQucHJvdG90eXBlLnBvd009ZnVuY3Rpb24gdChuKXtpZihuPWUuY2hlY2tNYXRyaXgobiksdGhpcy5yb3dzIT09bi5yb3dzfHx0aGlzLmNvbHVtbnMhPT1uLmNvbHVtbnMpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIk1hdHJpY2VzIGRpbWVuc2lvbnMgbXVzdCBiZSBlcXVhbCIpO2ZvcihsZXQgdD0wO3Q8dGhpcy5yb3dzO3QrKylmb3IobGV0IGU9MDtlPHRoaXMuY29sdW1ucztlKyspdGhpcy5zZXQodCxlLE1hdGgucG93KHRoaXMuZ2V0KHQsZSksbi5nZXQodCxlKSkpO3JldHVybiB0aGlzfX0pKFBNdCxTTXQpO2NsYXNzIFJNdCBleHRlbmRzIFBNdHtjb25zdHJ1Y3Rvcih0KXtzdXBlcigpLHRoaXMuZGF0YT10LHRoaXMucm93cz10Lmxlbmd0aCx0aGlzLmNvbHVtbnM9dFswXS5sZW5ndGh9c2V0KHQsZSxuKXtyZXR1cm4gdGhpcy5kYXRhW3RdW2VdPW4sdGhpc31nZXQodCxlKXtyZXR1cm4gdGhpcy5kYXRhW3RdW2VdfX1jbGFzcyBFTXR7Y29uc3RydWN0b3IodCl7bGV0IGUsbixvLGksYSxyLHMsbCxjLGQ9KHQ9Uk10LmNoZWNrTWF0cml4KHQpKS5jbG9uZSgpLHA9ZC5yb3dzLG09ZC5jb2x1bW5zLGY9bmV3IEZsb2F0NjRBcnJheShwKSx1PTE7Zm9yKGU9MDtlPHA7ZSsrKWZbZV09ZTtmb3IobD1uZXcgRmxvYXQ2NEFycmF5KHApLG49MDtuPG07bisrKXtmb3IoZT0wO2U8cDtlKyspbFtlXT1kLmdldChlLG4pO2ZvcihlPTA7ZTxwO2UrKyl7Zm9yKGM9TWF0aC5taW4oZSxuKSxhPTAsbz0wO288YztvKyspYSs9ZC5nZXQoZSxvKSpsW29dO2xbZV0tPWEsZC5zZXQoZSxuLGxbZV0pfWZvcihpPW4sZT1uKzE7ZTxwO2UrKylNYXRoLmFicyhsW2VdKT5NYXRoLmFicyhsW2ldKSYmKGk9ZSk7aWYoaSE9PW4pe2ZvcihvPTA7bzxtO28rKylyPWQuZ2V0KGksbyksZC5zZXQoaSxvLGQuZ2V0KG4sbykpLGQuc2V0KG4sbyxyKTtzPWZbaV0sZltpXT1mW25dLGZbbl09cyx1PS11fWlmKG48cCYmMCE9PWQuZ2V0KG4sbikpZm9yKGU9bisxO2U8cDtlKyspZC5zZXQoZSxuLGQuZ2V0KGUsbikvZC5nZXQobixuKSl9dGhpcy5MVT1kLHRoaXMucGl2b3RWZWN0b3I9Zix0aGlzLnBpdm90U2lnbj11fWlzU2luZ3VsYXIoKXtsZXQgdD10aGlzLkxVLGU9dC5jb2x1bW5zO2ZvcihsZXQgbj0wO248ZTtuKyspaWYoMD09PXQuZ2V0KG4sbikpcmV0dXJuITA7cmV0dXJuITF9c29sdmUodCl7dD1TTXQuY2hlY2tNYXRyaXgodCk7bGV0IGU9dGhpcy5MVTtpZihlLnJvd3MhPT10LnJvd3MpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIG1hdHJpeCBkaW1lbnNpb25zIik7aWYodGhpcy5pc1Npbmd1bGFyKCkpdGhyb3cgbmV3IEVycm9yKCJMVSBtYXRyaXggaXMgc2luZ3VsYXIiKTtsZXQgbixvLGksYT10LmNvbHVtbnMscj10LnN1Yk1hdHJpeFJvdyh0aGlzLnBpdm90VmVjdG9yLDAsYS0xKSxzPWUuY29sdW1ucztmb3IoaT0wO2k8cztpKyspZm9yKG49aSsxO248cztuKyspZm9yKG89MDtvPGE7bysrKXIuc2V0KG4sbyxyLmdldChuLG8pLXIuZ2V0KGksbykqZS5nZXQobixpKSk7Zm9yKGk9cy0xO2k+PTA7aS0tKXtmb3Iobz0wO288YTtvKyspci5zZXQoaSxvLHIuZ2V0KGksbykvZS5nZXQoaSxpKSk7Zm9yKG49MDtuPGk7bisrKWZvcihvPTA7bzxhO28rKylyLnNldChuLG8sci5nZXQobixvKS1yLmdldChpLG8pKmUuZ2V0KG4saSkpfXJldHVybiByfWdldCBkZXRlcm1pbmFudCgpe2xldCB0PXRoaXMuTFU7aWYoIXQuaXNTcXVhcmUoKSl0aHJvdyBuZXcgRXJyb3IoIk1hdHJpeCBtdXN0IGJlIHNxdWFyZSIpO2xldCBlPXRoaXMucGl2b3RTaWduLG49dC5jb2x1bW5zO2ZvcihsZXQgbz0wO288bjtvKyspZSo9dC5nZXQobyxvKTtyZXR1cm4gZX1nZXQgbG93ZXJUcmlhbmd1bGFyTWF0cml4KCl7bGV0IHQ9dGhpcy5MVSxlPXQucm93cyxuPXQuY29sdW1ucyxvPW5ldyBTTXQoZSxuKTtmb3IobGV0IGk9MDtpPGU7aSsrKWZvcihsZXQgZT0wO2U8bjtlKyspby5zZXQoaSxlLGk+ZT90LmdldChpLGUpOmk9PT1lPzE6MCk7cmV0dXJuIG99Z2V0IHVwcGVyVHJpYW5ndWxhck1hdHJpeCgpe2xldCB0PXRoaXMuTFUsZT10LnJvd3Msbj10LmNvbHVtbnMsbz1uZXcgU010KGUsbik7Zm9yKGxldCBpPTA7aTxlO2krKylmb3IobGV0IGU9MDtlPG47ZSsrKW8uc2V0KGksZSxpPD1lP3QuZ2V0KGksZSk6MCk7cmV0dXJuIG99Z2V0IHBpdm90UGVybXV0YXRpb25WZWN0b3IoKXtyZXR1cm4gQXJyYXkuZnJvbSh0aGlzLnBpdm90VmVjdG9yKX19ZnVuY3Rpb24gQU10KHQsZSl7bGV0IG49MDtyZXR1cm4gTWF0aC5hYnModCk+TWF0aC5hYnMoZSk/KG49ZS90LE1hdGguYWJzKHQpKk1hdGguc3FydCgxK24qbikpOjAhPT1lPyhuPXQvZSxNYXRoLmFicyhlKSpNYXRoLnNxcnQoMStuKm4pKTowfWNsYXNzIFRNdHtjb25zdHJ1Y3Rvcih0KXtsZXQgZSxuLG8saSxhPSh0PVJNdC5jaGVja01hdHJpeCh0KSkuY2xvbmUoKSxyPXQucm93cyxzPXQuY29sdW1ucyxsPW5ldyBGbG9hdDY0QXJyYXkocyk7Zm9yKG89MDtvPHM7bysrKXtsZXQgdD0wO2ZvcihlPW87ZTxyO2UrKyl0PUFNdCh0LGEuZ2V0KGUsbykpO2lmKDAhPT10KXtmb3IoYS5nZXQobyxvKTwwJiYodD0tdCksZT1vO2U8cjtlKyspYS5zZXQoZSxvLGEuZ2V0KGUsbykvdCk7Zm9yKGEuc2V0KG8sbyxhLmdldChvLG8pKzEpLG49bysxO248cztuKyspe2ZvcihpPTAsZT1vO2U8cjtlKyspaSs9YS5nZXQoZSxvKSphLmdldChlLG4pO2ZvcihpPS1pL2EuZ2V0KG8sbyksZT1vO2U8cjtlKyspYS5zZXQoZSxuLGEuZ2V0KGUsbikraSphLmdldChlLG8pKX19bFtvXT0tdH10aGlzLlFSPWEsdGhpcy5SZGlhZz1sfXNvbHZlKHQpe3Q9U010LmNoZWNrTWF0cml4KHQpO2xldCBlPXRoaXMuUVIsbj1lLnJvd3M7aWYodC5yb3dzIT09bil0aHJvdyBuZXcgRXJyb3IoIk1hdHJpeCByb3cgZGltZW5zaW9ucyBtdXN0IGFncmVlIik7aWYoIXRoaXMuaXNGdWxsUmFuaygpKXRocm93IG5ldyBFcnJvcigiTWF0cml4IGlzIHJhbmsgZGVmaWNpZW50Iik7bGV0IG8saSxhLHIscz10LmNvbHVtbnMsbD10LmNsb25lKCksYz1lLmNvbHVtbnM7Zm9yKGE9MDthPGM7YSsrKWZvcihpPTA7aTxzO2krKyl7Zm9yKHI9MCxvPWE7bzxuO28rKylyKz1lLmdldChvLGEpKmwuZ2V0KG8saSk7Zm9yKHI9LXIvZS5nZXQoYSxhKSxvPWE7bzxuO28rKylsLnNldChvLGksbC5nZXQobyxpKStyKmUuZ2V0KG8sYSkpfWZvcihhPWMtMTthPj0wO2EtLSl7Zm9yKGk9MDtpPHM7aSsrKWwuc2V0KGEsaSxsLmdldChhLGkpL3RoaXMuUmRpYWdbYV0pO2ZvcihvPTA7bzxhO28rKylmb3IoaT0wO2k8cztpKyspbC5zZXQobyxpLGwuZ2V0KG8saSktbC5nZXQoYSxpKSplLmdldChvLGEpKX1yZXR1cm4gbC5zdWJNYXRyaXgoMCxjLTEsMCxzLTEpfWlzRnVsbFJhbmsoKXtsZXQgdD10aGlzLlFSLmNvbHVtbnM7Zm9yKGxldCBlPTA7ZTx0O2UrKylpZigwPT09dGhpcy5SZGlhZ1tlXSlyZXR1cm4hMTtyZXR1cm4hMH1nZXQgdXBwZXJUcmlhbmd1bGFyTWF0cml4KCl7bGV0IHQsZSxuPXRoaXMuUVIsbz1uLmNvbHVtbnMsaT1uZXcgU010KG8sbyk7Zm9yKHQ9MDt0PG87dCsrKWZvcihlPTA7ZTxvO2UrKylpLnNldCh0LGUsdDxlP24uZ2V0KHQsZSk6dD09PWU/dGhpcy5SZGlhZ1t0XTowKTtyZXR1cm4gaX1nZXQgb3J0aG9nb25hbE1hdHJpeCgpe2xldCB0LGUsbixvLGk9dGhpcy5RUixhPWkucm93cyxyPWkuY29sdW1ucyxzPW5ldyBTTXQoYSxyKTtmb3Iobj1yLTE7bj49MDtuLS0pe2Zvcih0PTA7dDxhO3QrKylzLnNldCh0LG4sMCk7Zm9yKHMuc2V0KG4sbiwxKSxlPW47ZTxyO2UrKylpZigwIT09aS5nZXQobixuKSl7Zm9yKG89MCx0PW47dDxhO3QrKylvKz1pLmdldCh0LG4pKnMuZ2V0KHQsZSk7Zm9yKG89LW8vaS5nZXQobixuKSx0PW47dDxhO3QrKylzLnNldCh0LGUscy5nZXQodCxlKStvKmkuZ2V0KHQsbikpfX1yZXR1cm4gc319Y2xhc3MgTk10e2NvbnN0cnVjdG9yKHQsZT17fSl7aWYoKHQ9Uk10LmNoZWNrTWF0cml4KHQpKS5pc0VtcHR5KCkpdGhyb3cgbmV3IEVycm9yKCJNYXRyaXggbXVzdCBiZSBub24tZW1wdHkiKTtsZXQgbj10LnJvd3Msbz10LmNvbHVtbnM7Y29uc3R7Y29tcHV0ZUxlZnRTaW5ndWxhclZlY3RvcnM6aT0hMCxjb21wdXRlUmlnaHRTaW5ndWxhclZlY3RvcnM6YT0hMCxhdXRvVHJhbnNwb3NlOnI9ITF9PWU7bGV0IHMsbD1Cb29sZWFuKGkpLGM9Qm9vbGVhbihhKSxkPSExO2lmKG48bylpZihyKXtzPXQudHJhbnNwb3NlKCksbj1zLnJvd3Msbz1zLmNvbHVtbnMsZD0hMDtsZXQgZT1sO2w9YyxjPWV9ZWxzZSBzPXQuY2xvbmUoKSxjb25zb2xlLndhcm4oIkNvbXB1dGluZyBTVkQgb24gYSBtYXRyaXggd2l0aCBtb3JlIGNvbHVtbnMgdGhhbiByb3dzLiBDb25zaWRlciBlbmFibGluZyBhdXRvVHJhbnNwb3NlIik7ZWxzZSBzPXQuY2xvbmUoKTtsZXQgcD1NYXRoLm1pbihuLG8pLG09TWF0aC5taW4obisxLG8pLGY9bmV3IEZsb2F0NjRBcnJheShtKSx1PW5ldyBTTXQobixwKSxnPW5ldyBTTXQobyxvKSxoPW5ldyBGbG9hdDY0QXJyYXkobyksYj1uZXcgRmxvYXQ2NEFycmF5KG4pLHk9bmV3IEZsb2F0NjRBcnJheShtKTtmb3IobGV0IHQ9MDt0PG07dCsrKXlbdF09dDtsZXQgXz1NYXRoLm1pbihuLTEsbyksQz1NYXRoLm1heCgwLE1hdGgubWluKG8tMixuKSksTT1NYXRoLm1heChfLEMpO2ZvcihsZXQgdD0wO3Q8TTt0Kyspe2lmKHQ8Xyl7Zlt0XT0wO2ZvcihsZXQgZT10O2U8bjtlKyspZlt0XT1BTXQoZlt0XSxzLmdldChlLHQpKTtpZigwIT09Zlt0XSl7cy5nZXQodCx0KTwwJiYoZlt0XT0tZlt0XSk7Zm9yKGxldCBlPXQ7ZTxuO2UrKylzLnNldChlLHQscy5nZXQoZSx0KS9mW3RdKTtzLnNldCh0LHQscy5nZXQodCx0KSsxKX1mW3RdPS1mW3RdfWZvcihsZXQgZT10KzE7ZTxvO2UrKyl7aWYodDxfJiYwIT09Zlt0XSl7bGV0IG89MDtmb3IobGV0IGk9dDtpPG47aSsrKW8rPXMuZ2V0KGksdCkqcy5nZXQoaSxlKTtvPS1vL3MuZ2V0KHQsdCk7Zm9yKGxldCBpPXQ7aTxuO2krKylzLnNldChpLGUscy5nZXQoaSxlKStvKnMuZ2V0KGksdCkpfWhbZV09cy5nZXQodCxlKX1pZihsJiZ0PF8pZm9yKGxldCBlPXQ7ZTxuO2UrKyl1LnNldChlLHQscy5nZXQoZSx0KSk7aWYodDxDKXtoW3RdPTA7Zm9yKGxldCBlPXQrMTtlPG87ZSsrKWhbdF09QU10KGhbdF0saFtlXSk7aWYoMCE9PWhbdF0pe2hbdCsxXTwwJiYoaFt0XT0wLWhbdF0pO2ZvcihsZXQgZT10KzE7ZTxvO2UrKyloW2VdLz1oW3RdO2hbdCsxXSs9MX1pZihoW3RdPS1oW3RdLHQrMTxuJiYwIT09aFt0XSl7Zm9yKGxldCBlPXQrMTtlPG47ZSsrKWJbZV09MDtmb3IobGV0IGU9dCsxO2U8bjtlKyspZm9yKGxldCBuPXQrMTtuPG87bisrKWJbZV0rPWhbbl0qcy5nZXQoZSxuKTtmb3IobGV0IGU9dCsxO2U8bztlKyspe2xldCBvPS1oW2VdL2hbdCsxXTtmb3IobGV0IGk9dCsxO2k8bjtpKyspcy5zZXQoaSxlLHMuZ2V0KGksZSkrbypiW2ldKX19aWYoYylmb3IobGV0IGU9dCsxO2U8bztlKyspZy5zZXQoZSx0LGhbZV0pfX1sZXQgdj1NYXRoLm1pbihvLG4rMSk7aWYoXzxvJiYoZltfXT1zLmdldChfLF8pKSxuPHYmJihmW3YtMV09MCksQysxPHYmJihoW0NdPXMuZ2V0KEMsdi0xKSksaFt2LTFdPTAsbCl7Zm9yKGxldCB0PV87dDxwO3QrKyl7Zm9yKGxldCBlPTA7ZTxuO2UrKyl1LnNldChlLHQsMCk7dS5zZXQodCx0LDEpfWZvcihsZXQgdD1fLTE7dD49MDt0LS0paWYoMCE9PWZbdF0pe2ZvcihsZXQgZT10KzE7ZTxwO2UrKyl7bGV0IG89MDtmb3IobGV0IGk9dDtpPG47aSsrKW8rPXUuZ2V0KGksdCkqdS5nZXQoaSxlKTtvPS1vL3UuZ2V0KHQsdCk7Zm9yKGxldCBpPXQ7aTxuO2krKyl1LnNldChpLGUsdS5nZXQoaSxlKStvKnUuZ2V0KGksdCkpfWZvcihsZXQgZT10O2U8bjtlKyspdS5zZXQoZSx0LC11LmdldChlLHQpKTt1LnNldCh0LHQsMSt1LmdldCh0LHQpKTtmb3IobGV0IGU9MDtlPHQtMTtlKyspdS5zZXQoZSx0LDApfWVsc2V7Zm9yKGxldCBlPTA7ZTxuO2UrKyl1LnNldChlLHQsMCk7dS5zZXQodCx0LDEpfX1pZihjKWZvcihsZXQgdD1vLTE7dD49MDt0LS0pe2lmKHQ8QyYmMCE9PWhbdF0pZm9yKGxldCBlPXQrMTtlPG87ZSsrKXtsZXQgbj0wO2ZvcihsZXQgaT10KzE7aTxvO2krKyluKz1nLmdldChpLHQpKmcuZ2V0KGksZSk7bj0tbi9nLmdldCh0KzEsdCk7Zm9yKGxldCBpPXQrMTtpPG87aSsrKWcuc2V0KGksZSxnLmdldChpLGUpK24qZy5nZXQoaSx0KSl9Zm9yKGxldCBlPTA7ZTxvO2UrKylnLnNldChlLHQsMCk7Zy5zZXQodCx0LDEpfWxldCB4PXYtMSxPPU51bWJlci5FUFNJTE9OO2Zvcig7dj4wOyl7bGV0IHQsZTtmb3IodD12LTI7dD49LTEmJi0xIT09dDt0LS0pe2NvbnN0IGU9TnVtYmVyLk1JTl9WQUxVRStPKk1hdGguYWJzKGZbdF0rTWF0aC5hYnMoZlt0KzFdKSk7aWYoTWF0aC5hYnMoaFt0XSk8PWV8fE51bWJlci5pc05hTihoW3RdKSl7aFt0XT0wO2JyZWFrfX1pZih0PT09di0yKWU9NDtlbHNle2xldCBuO2ZvcihuPXYtMTtuPj10JiZuIT09dDtuLS0pe2xldCBlPShuIT09dj9NYXRoLmFicyhoW25dKTowKSsobiE9PXQrMT9NYXRoLmFicyhoW24tMV0pOjApO2lmKE1hdGguYWJzKGZbbl0pPD1PKmUpe2Zbbl09MDticmVha319bj09PXQ/ZT0zOm49PT12LTE/ZT0xOihlPTIsdD1uKX1zd2l0Y2godCsrLGUpe2Nhc2UgMTp7bGV0IGU9aFt2LTJdO2hbdi0yXT0wO2ZvcihsZXQgbj12LTI7bj49dDtuLS0pe2xldCBpPUFNdChmW25dLGUpLGE9ZltuXS9pLHI9ZS9pO2lmKGZbbl09aSxuIT09dCYmKGU9LXIqaFtuLTFdLGhbbi0xXT1hKmhbbi0xXSksYylmb3IobGV0IHQ9MDt0PG87dCsrKWk9YSpnLmdldCh0LG4pK3IqZy5nZXQodCx2LTEpLGcuc2V0KHQsdi0xLC1yKmcuZ2V0KHQsbikrYSpnLmdldCh0LHYtMSkpLGcuc2V0KHQsbixpKX1icmVha31jYXNlIDI6e2xldCBlPWhbdC0xXTtoW3QtMV09MDtmb3IobGV0IG89dDtvPHY7bysrKXtsZXQgaT1BTXQoZltvXSxlKSxhPWZbb10vaSxyPWUvaTtpZihmW29dPWksZT0tcipoW29dLGhbb109YSpoW29dLGwpZm9yKGxldCBlPTA7ZTxuO2UrKylpPWEqdS5nZXQoZSxvKStyKnUuZ2V0KGUsdC0xKSx1LnNldChlLHQtMSwtcip1LmdldChlLG8pK2EqdS5nZXQoZSx0LTEpKSx1LnNldChlLG8saSl9YnJlYWt9Y2FzZSAzOntjb25zdCBlPU1hdGgubWF4KE1hdGguYWJzKGZbdi0xXSksTWF0aC5hYnMoZlt2LTJdKSxNYXRoLmFicyhoW3YtMl0pLE1hdGguYWJzKGZbdF0pLE1hdGguYWJzKGhbdF0pKSxpPWZbdi0xXS9lLGE9Zlt2LTJdL2Uscj1oW3YtMl0vZSxzPWZbdF0vZSxkPWhbdF0vZSxwPSgoYStpKSooYS1pKStyKnIpLzIsbT1pKnIqKGkqcik7bGV0IGI9MDswPT09cCYmMD09PW18fChiPXA8MD8wLU1hdGguc3FydChwKnArbSk6TWF0aC5zcXJ0KHAqcCttKSxiPW0vKHArYikpO2xldCB5PShzK2kpKihzLWkpK2IsXz1zKmQ7Zm9yKGxldCBlPXQ7ZTx2LTE7ZSsrKXtsZXQgaT1BTXQoeSxfKTswPT09aSYmKGk9TnVtYmVyLk1JTl9WQUxVRSk7bGV0IGE9eS9pLHI9Xy9pO2lmKGUhPT10JiYoaFtlLTFdPWkpLHk9YSpmW2VdK3IqaFtlXSxoW2VdPWEqaFtlXS1yKmZbZV0sXz1yKmZbZSsxXSxmW2UrMV09YSpmW2UrMV0sYylmb3IobGV0IHQ9MDt0PG87dCsrKWk9YSpnLmdldCh0LGUpK3IqZy5nZXQodCxlKzEpLGcuc2V0KHQsZSsxLC1yKmcuZ2V0KHQsZSkrYSpnLmdldCh0LGUrMSkpLGcuc2V0KHQsZSxpKTtpZihpPUFNdCh5LF8pLDA9PT1pJiYoaT1OdW1iZXIuTUlOX1ZBTFVFKSxhPXkvaSxyPV8vaSxmW2VdPWkseT1hKmhbZV0rcipmW2UrMV0sZltlKzFdPS1yKmhbZV0rYSpmW2UrMV0sXz1yKmhbZSsxXSxoW2UrMV09YSpoW2UrMV0sbCYmZTxuLTEpZm9yKGxldCB0PTA7dDxuO3QrKylpPWEqdS5nZXQodCxlKStyKnUuZ2V0KHQsZSsxKSx1LnNldCh0LGUrMSwtcip1LmdldCh0LGUpK2EqdS5nZXQodCxlKzEpKSx1LnNldCh0LGUsaSl9aFt2LTJdPXk7YnJlYWt9Y2FzZSA0OmlmKGZbdF08PTAmJihmW3RdPWZbdF08MD8tZlt0XTowLGMpKWZvcihsZXQgZT0wO2U8PXg7ZSsrKWcuc2V0KGUsdCwtZy5nZXQoZSx0KSk7Zm9yKDt0PHgmJiEoZlt0XT49Zlt0KzFdKTspe2xldCBlPWZbdF07aWYoZlt0XT1mW3QrMV0sZlt0KzFdPWUsYyYmdDxvLTEpZm9yKGxldCBuPTA7bjxvO24rKyllPWcuZ2V0KG4sdCsxKSxnLnNldChuLHQrMSxnLmdldChuLHQpKSxnLnNldChuLHQsZSk7aWYobCYmdDxuLTEpZm9yKGxldCBvPTA7bzxuO28rKyllPXUuZ2V0KG8sdCsxKSx1LnNldChvLHQrMSx1LmdldChvLHQpKSx1LnNldChvLHQsZSk7dCsrfXYtLX19aWYoZCl7bGV0IHQ9ZztnPXUsdT10fXRoaXMubT1uLHRoaXMubj1vLHRoaXMucz1mLHRoaXMuVT11LHRoaXMuVj1nfXNvbHZlKHQpe2xldCBlPXQsbj10aGlzLnRocmVzaG9sZCxvPXRoaXMucy5sZW5ndGgsaT1TTXQuemVyb3MobyxvKTtmb3IobGV0IHQ9MDt0PG87dCsrKU1hdGguYWJzKHRoaXMuc1t0XSk8PW4/aS5zZXQodCx0LDApOmkuc2V0KHQsdCwxL3RoaXMuc1t0XSk7bGV0IGE9dGhpcy5VLHI9dGhpcy5yaWdodFNpbmd1bGFyVmVjdG9ycyxzPXIubW11bChpKSxsPXIucm93cyxjPWEucm93cyxkPVNNdC56ZXJvcyhsLGMpO2ZvcihsZXQgdD0wO3Q8bDt0KyspZm9yKGxldCBlPTA7ZTxjO2UrKyl7bGV0IG49MDtmb3IobGV0IGk9MDtpPG87aSsrKW4rPXMuZ2V0KHQsaSkqYS5nZXQoZSxpKTtkLnNldCh0LGUsbil9cmV0dXJuIGQubW11bChlKX1zb2x2ZUZvckRpYWdvbmFsKHQpe3JldHVybiB0aGlzLnNvbHZlKFNNdC5kaWFnKHQpKX1pbnZlcnNlKCl7bGV0IHQ9dGhpcy5WLGU9dGhpcy50aHJlc2hvbGQsbj10LnJvd3Msbz10LmNvbHVtbnMsaT1uZXcgU010KG4sdGhpcy5zLmxlbmd0aCk7Zm9yKGxldCBhPTA7YTxuO2ErKylmb3IobGV0IG49MDtuPG87bisrKU1hdGguYWJzKHRoaXMuc1tuXSk+ZSYmaS5zZXQoYSxuLHQuZ2V0KGEsbikvdGhpcy5zW25dKTtsZXQgYT10aGlzLlUscj1hLnJvd3Mscz1hLmNvbHVtbnMsbD1uZXcgU010KG4scik7Zm9yKGxldCB0PTA7dDxuO3QrKylmb3IobGV0IGU9MDtlPHI7ZSsrKXtsZXQgbj0wO2ZvcihsZXQgbz0wO288cztvKyspbis9aS5nZXQodCxvKSphLmdldChlLG8pO2wuc2V0KHQsZSxuKX1yZXR1cm4gbH1nZXQgY29uZGl0aW9uKCl7cmV0dXJuIHRoaXMuc1swXS90aGlzLnNbTWF0aC5taW4odGhpcy5tLHRoaXMubiktMV19Z2V0IG5vcm0yKCl7cmV0dXJuIHRoaXMuc1swXX1nZXQgcmFuaygpe2xldCB0PU1hdGgubWF4KHRoaXMubSx0aGlzLm4pKnRoaXMuc1swXSpOdW1iZXIuRVBTSUxPTixlPTAsbj10aGlzLnM7Zm9yKGxldCBvPTAsaT1uLmxlbmd0aDtvPGk7bysrKW5bb10+dCYmZSsrO3JldHVybiBlfWdldCBkaWFnb25hbCgpe3JldHVybiBBcnJheS5mcm9tKHRoaXMucyl9Z2V0IHRocmVzaG9sZCgpe3JldHVybiBOdW1iZXIuRVBTSUxPTi8yKk1hdGgubWF4KHRoaXMubSx0aGlzLm4pKnRoaXMuc1swXX1nZXQgbGVmdFNpbmd1bGFyVmVjdG9ycygpe3JldHVybiB0aGlzLlV9Z2V0IHJpZ2h0U2luZ3VsYXJWZWN0b3JzKCl7cmV0dXJuIHRoaXMuVn1nZXQgZGlhZ29uYWxNYXRyaXgoKXtyZXR1cm4gU010LmRpYWcodGhpcy5zKX19ZnVuY3Rpb24gek10KHQsZT0hMSl7cmV0dXJuIHQ9Uk10LmNoZWNrTWF0cml4KHQpLGU/bmV3IE5NdCh0KS5pbnZlcnNlKCk6KGZ1bmN0aW9uIG4odCxlLG89ITEpe3JldHVybiB0PVJNdC5jaGVja01hdHJpeCh0KSxlPVJNdC5jaGVja01hdHJpeChlKSxvP25ldyBOTXQodCkuc29sdmUoZSk6dC5pc1NxdWFyZSgpP25ldyBFTXQodCkuc29sdmUoZSk6bmV3IFRNdCh0KS5zb2x2ZShlKX0pKHQsU010LmV5ZSh0LnJvd3MpKX1mdW5jdGlvbiBJTXQodCxlLG4sbyxpKXtsZXQgYT1TTXQuZXllKGUubGVuZ3RoLGUubGVuZ3RoLG4qbypvKTtjb25zdCByPWkoZSk7bGV0IHM9bmV3IEZsb2F0NjRBcnJheSh0LngubGVuZ3RoKTtmb3IobGV0IGU9MDtlPHQueC5sZW5ndGg7ZSsrKXNbZV09cih0LnhbZV0pO2xldCBsPShmdW5jdGlvbiBjKHQsZSxuLG8saSl7Y29uc3QgYT1uLmxlbmd0aCxyPXQueC5sZW5ndGg7bGV0IHM9bmV3IEFycmF5KGEpO2ZvcihsZXQgbD0wO2w8YTtsKyspe3NbbF09bmV3IEFycmF5KHIpO2xldCBhPW4uc2xpY2UoKTthW2xdKz1vO2xldCBjPWkoYSk7Zm9yKGxldCBuPTA7bjxyO24rKylzW2xdW25dPWVbbl0tYyh0Lnhbbl0pfXJldHVybiBuZXcgU010KHMpfSkodCxzLGUsbyxpKSxkPShmdW5jdGlvbiBwKHQsZSl7Y29uc3Qgbj10LngubGVuZ3RoO2xldCBvPW5ldyBBcnJheShuKTtmb3IobGV0IGk9MDtpPG47aSsrKW9baV09W3QueVtpXS1lW2ldXTtyZXR1cm4gbmV3IFNNdChvKX0pKHQscyksbT16TXQoYS5hZGQobC5tbXVsKGwudHJhbnNwb3NlKCkpKSk7cmV0dXJuKGU9KGU9bmV3IFNNdChbZV0pKS5zdWIobS5tbXVsKGwpLm1tdWwoZCkubXVsKG8pLnRyYW5zcG9zZSgpKSkudG8xREFycmF5KCl9dmFyIEhNdD1DTyhPYmplY3QuZnJlZXplKHtfX3Byb3RvX186bnVsbCxkZWZhdWx0OmZ1bmN0aW9uIEZNdCh0LGUsbj17fSl7bGV0e21heEl0ZXJhdGlvbnM6bz0xMDAsZ3JhZGllbnREaWZmZXJlbmNlOmk9LjEsZGFtcGluZzphPTAsZXJyb3JUb2xlcmFuY2U6cj0uMDEsbWluVmFsdWVzOnMsbWF4VmFsdWVzOmwsaW5pdGlhbFZhbHVlczpjfT1uO2lmKGE8PTApdGhyb3cgbmV3IEVycm9yKCJUaGUgZGFtcGluZyBvcHRpb24gbXVzdCBiZSBhIHBvc2l0aXZlIG51bWJlciIpO2lmKCF0Lnh8fCF0LnkpdGhyb3cgbmV3IEVycm9yKCJUaGUgZGF0YSBwYXJhbWV0ZXIgbXVzdCBoYXZlIHggYW5kIHkgZWxlbWVudHMiKTtpZighaU10KHQueCl8fHQueC5sZW5ndGg8Mnx8IWlNdCh0LnkpfHx0LnkubGVuZ3RoPDIpdGhyb3cgbmV3IEVycm9yKCJUaGUgZGF0YSBwYXJhbWV0ZXIgZWxlbWVudHMgbXVzdCBiZSBhbiBhcnJheSB3aXRoIG1vcmUgdGhhbiAyIHBvaW50cyIpO2lmKHQueC5sZW5ndGghPT10LnkubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiVGhlIGRhdGEgcGFyYW1ldGVyIGVsZW1lbnRzIG11c3QgaGF2ZSB0aGUgc2FtZSBzaXplIik7bGV0IGQ9Y3x8bmV3IEFycmF5KGUubGVuZ3RoKS5maWxsKDEpLHA9ZC5sZW5ndGg7aWYobD1sfHxuZXcgQXJyYXkocCkuZmlsbChOdW1iZXIuTUFYX1NBRkVfSU5URUdFUikscz1zfHxuZXcgQXJyYXkocCkuZmlsbChOdW1iZXIuTUlOX1NBRkVfSU5URUdFUiksbC5sZW5ndGghPT1zLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoIm1pblZhbHVlcyBhbmQgbWF4VmFsdWVzIG11c3QgYmUgdGhlIHNhbWUgc2l6ZSIpO2lmKCFpTXQoZCkpdGhyb3cgbmV3IEVycm9yKCJpbml0aWFsVmFsdWVzIG11c3QgYmUgYW4gYXJyYXkiKTtsZXQgbSxmPWFNdCh0LGQsZSksdT1mPD1yO2ZvcihtPTA7bTxvJiYhdTttKyspe2Q9SU10KHQsZCxhLGksZSk7Zm9yKGxldCB0PTA7dDxwO3QrKylkW3RdPU1hdGgubWluKE1hdGgubWF4KHNbdF0sZFt0XSksbFt0XSk7aWYoZj1hTXQodCxkLGUpLGlzTmFOKGYpKWJyZWFrO3U9Zjw9cn1yZXR1cm57cGFyYW1ldGVyVmFsdWVzOmQscGFyYW1ldGVyRXJyb3I6ZixpdGVyYXRpb25zOm19fX0pKSxMTXQ9X08mJl9PLl9fYXdhaXRlcnx8ZnVuY3Rpb24odCxlLG4sbyl7cmV0dXJuIG5ldyhufHwobj1Qcm9taXNlKSkoKGZ1bmN0aW9uKGksYSl7ZnVuY3Rpb24gcih0KXt0cnl7bChvLm5leHQodCkpfWNhdGNoKHQpe2EodCl9fWZ1bmN0aW9uIHModCl7dHJ5e2woby50aHJvdyh0KSl9Y2F0Y2godCl7YSh0KX19ZnVuY3Rpb24gbCh0KXt0LmRvbmU/aSh0LnZhbHVlKTpuZXcgbigoZnVuY3Rpb24oZSl7ZSh0LnZhbHVlKX0pKS50aGVuKHIscyl9bCgobz1vLmFwcGx5KHQsZXx8W10pKS5uZXh0KCkpfSkpfSxCTXQ9X08mJl9PLl9fZ2VuZXJhdG9yfHxmdW5jdGlvbih0LGUpe3ZhciBuLG8saSxhLHI9e2xhYmVsOjAsc2VudDpmdW5jdGlvbigpe2lmKDEmaVswXSl0aHJvdyBpWzFdO3JldHVybiBpWzFdfSx0cnlzOltdLG9wczpbXX07cmV0dXJuIGE9e25leHQ6cygwKSx0aHJvdzpzKDEpLHJldHVybjpzKDIpfSwiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYoYVtTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSxhO2Z1bmN0aW9uIHMoYSl7cmV0dXJuIGZ1bmN0aW9uKHMpe3JldHVybihmdW5jdGlvbiBsKGEpe2lmKG4pdGhyb3cgbmV3IFR5cGVFcnJvcigiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLiIpO2Zvcig7cjspdHJ5e2lmKG49MSxvJiYoaT0yJmFbMF0/by5yZXR1cm46YVswXT9vLnRocm93fHwoKGk9by5yZXR1cm4pJiZpLmNhbGwobyksMCk6by5uZXh0KSYmIShpPWkuY2FsbChvLGFbMV0pKS5kb25lKXJldHVybiBpO3N3aXRjaChvPTAsaSYmKGE9WzImYVswXSxpLnZhbHVlXSksYVswXSl7Y2FzZSAwOmNhc2UgMTppPWE7YnJlYWs7Y2FzZSA0OnJldHVybiByLmxhYmVsKysse3ZhbHVlOmFbMV0sZG9uZTohMX07Y2FzZSA1OnIubGFiZWwrKyxvPWFbMV0sYT1bMF07Y29udGludWU7Y2FzZSA3OmE9ci5vcHMucG9wKCksci50cnlzLnBvcCgpO2NvbnRpbnVlO2RlZmF1bHQ6aWYoIShpPXIudHJ5cywoaT1pLmxlbmd0aD4wJiZpW2kubGVuZ3RoLTFdKXx8NiE9PWFbMF0mJjIhPT1hWzBdKSl7cj0wO2NvbnRpbnVlfWlmKDM9PT1hWzBdJiYoIWl8fGFbMV0+aVswXSYmYVsxXTxpWzNdKSl7ci5sYWJlbD1hWzFdO2JyZWFrfWlmKDY9PT1hWzBdJiZyLmxhYmVsPGlbMV0pe3IubGFiZWw9aVsxXSxpPWE7YnJlYWt9aWYoaSYmci5sYWJlbDxpWzJdKXtyLmxhYmVsPWlbMl0sci5vcHMucHVzaChhKTticmVha31pWzJdJiZyLm9wcy5wb3AoKSxyLnRyeXMucG9wKCk7Y29udGludWV9YT1lLmNhbGwodCxyKX1jYXRjaCh0KXthPVs2LHRdLG89MH1maW5hbGx5e249aT0wfWlmKDUmYVswXSl0aHJvdyBhWzFdO3JldHVybnt2YWx1ZTphWzBdP2FbMV06dm9pZCAwLGRvbmU6ITB9fSkoW2Esc10pfX19LFZNdD1fTyYmX08uX19yZWFkfHxmdW5jdGlvbih0LGUpe3ZhciBuPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJnRbU3ltYm9sLml0ZXJhdG9yXTtpZighbilyZXR1cm4gdDt2YXIgbyxpLGE9bi5jYWxsKHQpLHI9W107dHJ5e2Zvcig7KHZvaWQgMD09PWV8fGUtLSA+MCkmJiEobz1hLm5leHQoKSkuZG9uZTspci5wdXNoKG8udmFsdWUpfWNhdGNoKHQpe2k9e2Vycm9yOnR9fWZpbmFsbHl7dHJ5e28mJiFvLmRvbmUmJihuPWEucmV0dXJuKSYmbi5jYWxsKGEpfWZpbmFsbHl7aWYoaSl0aHJvdyBpLmVycm9yfX1yZXR1cm4gcn0sak10PV9PJiZfTy5fX3NwcmVhZHx8ZnVuY3Rpb24oKXtmb3IodmFyIHQ9W10sZT0wO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspdD10LmNvbmNhdChWTXQoYXJndW1lbnRzW2VdKSk7cmV0dXJuIHR9LFVNdD1fTyYmX08uX19pbXBvcnRTdGFyfHxmdW5jdGlvbih0KXtpZih0JiZ0Ll9fZXNNb2R1bGUpcmV0dXJuIHQ7dmFyIGU9e307aWYobnVsbCE9dClmb3IodmFyIG4gaW4gdClPYmplY3QuaGFzT3duUHJvcGVydHkuY2FsbCh0LG4pJiYoZVtuXT10W25dKTtyZXR1cm4gZS5kZWZhdWx0PXQsZX0sV010PV9PJiZfTy5fX2ltcG9ydERlZmF1bHR8fGZ1bmN0aW9uKHQpe3JldHVybiB0JiZ0Ll9fZXNNb2R1bGU/dDp7ZGVmYXVsdDp0fX07T2JqZWN0LmRlZmluZVByb3BlcnR5KEhfdCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIEdNdD1VTXQoRl90KSxZTXQ9VU10KGZDdCkscU10PVVNdChFQ3QpLFpNdD1VTXQoQUN0KSxYTXQ9VU10KExfdCksS010PVdNdChITXQpLEpNdD0xZS01LFFNdD0uMDAxLCRNdD0oZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe3ZvaWQgMD09PXQmJih0PXt9KTt2YXIgZT10aGlzO3RoaXMubGVhcm5pbmdSYXRlPTEsdGhpcy5sb2NhbENvbm5lY3Rpdml0eT0xLHRoaXMubWluRGlzdD0uMSx0aGlzLm5Db21wb25lbnRzPTIsdGhpcy5uRXBvY2hzPTAsdGhpcy5uTmVpZ2hib3JzPTE1LHRoaXMubmVnYXRpdmVTYW1wbGVSYXRlPTUsdGhpcy5yYW5kb209TWF0aC5yYW5kb20sdGhpcy5yZXB1bHNpb25TdHJlbmd0aD0xLHRoaXMuc2V0T3BNaXhSYXRpbz0xLHRoaXMuc3ByZWFkPTEsdGhpcy50cmFuc2Zvcm1RdWV1ZVNpemU9NCx0aGlzLnRhcmdldE1ldHJpYz0iY2F0ZWdvcmljYWwiLHRoaXMudGFyZ2V0V2VpZ2h0PS41LHRoaXMudGFyZ2V0Tk5laWdoYm9ycz10aGlzLm5OZWlnaGJvcnMsdGhpcy5kaXN0YW5jZUZuPXR2dCx0aGlzLmlzSW5pdGlhbGl6ZWQ9ITEsdGhpcy5ycEZvcmVzdD1bXSx0aGlzLmVtYmVkZGluZz1bXSx0aGlzLm9wdGltaXphdGlvblN0YXRlPW5ldyBudnQ7dmFyIG49ZnVuY3Rpb24obil7dm9pZCAwIT09dFtuXSYmKGVbbl09dFtuXSl9O24oImRpc3RhbmNlRm4iKSxuKCJsZWFybmluZ1JhdGUiKSxuKCJsb2NhbENvbm5lY3Rpdml0eSIpLG4oIm1pbkRpc3QiKSxuKCJuQ29tcG9uZW50cyIpLG4oIm5FcG9jaHMiKSxuKCJuTmVpZ2hib3JzIiksbigibmVnYXRpdmVTYW1wbGVSYXRlIiksbigicmFuZG9tIiksbigicmVwdWxzaW9uU3RyZW5ndGgiKSxuKCJzZXRPcE1peFJhdGlvIiksbigic3ByZWFkIiksbigidHJhbnNmb3JtUXVldWVTaXplIil9cmV0dXJuIHQucHJvdG90eXBlLmZpdD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5pbml0aWFsaXplRml0KHQpLHRoaXMub3B0aW1pemVMYXlvdXQoKSx0aGlzLmVtYmVkZGluZ30sdC5wcm90b3R5cGUuZml0QXN5bmM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9ZnVuY3Rpb24oKXtyZXR1cm4hMH0pLExNdCh0aGlzLHZvaWQgMCx2b2lkIDAsKGZ1bmN0aW9uKCl7cmV0dXJuIEJNdCh0aGlzLChmdW5jdGlvbihuKXtzd2l0Y2gobi5sYWJlbCl7Y2FzZSAwOnJldHVybiB0aGlzLmluaXRpYWxpemVGaXQodCksWzQsdGhpcy5vcHRpbWl6ZUxheW91dEFzeW5jKGUpXTtjYXNlIDE6cmV0dXJuIG4uc2VudCgpLFsyLHRoaXMuZW1iZWRkaW5nXX19KSl9KSl9LHQucHJvdG90eXBlLnNldFN1cGVydmlzZWRQcm9qZWN0aW9uPWZ1bmN0aW9uKHQsZSl7dm9pZCAwPT09ZSYmKGU9e30pLHRoaXMuWT10LHRoaXMudGFyZ2V0TWV0cmljPWUudGFyZ2V0TWV0cmljfHx0aGlzLnRhcmdldE1ldHJpYyx0aGlzLnRhcmdldFdlaWdodD1lLnRhcmdldFdlaWdodHx8dGhpcy50YXJnZXRXZWlnaHQsdGhpcy50YXJnZXROTmVpZ2hib3JzPWUudGFyZ2V0Tk5laWdoYm9yc3x8dGhpcy50YXJnZXROTmVpZ2hib3JzfSx0LnByb3RvdHlwZS5zZXRQcmVjb21wdXRlZEtOTj1mdW5jdGlvbih0LGUpe3RoaXMua25uSW5kaWNlcz10LHRoaXMua25uRGlzdGFuY2VzPWV9LHQucHJvdG90eXBlLmluaXRpYWxpemVGaXQ9ZnVuY3Rpb24odCl7aWYodC5sZW5ndGg8PXRoaXMubk5laWdoYm9ycyl0aHJvdyBuZXcgRXJyb3IoIk5vdCBlbm91Z2ggZGF0YSBwb2ludHMgKCIrdC5sZW5ndGgrIikgdG8gY3JlYXRlIG5OZWlnaGJvcnM6ICIrdGhpcy5uTmVpZ2hib3JzKyIuICBBZGQgbW9yZSBkYXRhIHBvaW50cyBvciBhZGp1c3QgdGhlIGNvbmZpZ3VyYXRpb24uIik7aWYodGhpcy5YPT09dCYmdGhpcy5pc0luaXRpYWxpemVkKXJldHVybiB0aGlzLmdldE5FcG9jaHMoKTtpZih0aGlzLlg9dCwhdGhpcy5rbm5JbmRpY2VzJiYhdGhpcy5rbm5EaXN0YW5jZXMpe3ZhciBlPXRoaXMubmVhcmVzdE5laWdoYm9ycyh0KTt0aGlzLmtubkluZGljZXM9ZS5rbm5JbmRpY2VzLHRoaXMua25uRGlzdGFuY2VzPWUua25uRGlzdGFuY2VzfXRoaXMuZ3JhcGg9dGhpcy5mdXp6eVNpbXBsaWNpYWxTZXQodCx0aGlzLm5OZWlnaGJvcnMsdGhpcy5zZXRPcE1peFJhdGlvKSx0aGlzLm1ha2VTZWFyY2hGbnMoKSx0aGlzLnNlYXJjaEdyYXBoPXRoaXMubWFrZVNlYXJjaEdyYXBoKHQpLHRoaXMucHJvY2Vzc0dyYXBoRm9yU3VwZXJ2aXNlZFByb2plY3Rpb24oKTt2YXIgbj10aGlzLmluaXRpYWxpemVTaW1wbGljaWFsU2V0RW1iZWRkaW5nKCksbz1uLnRhaWwsaT1uLmVwb2Noc1BlclNhbXBsZTtyZXR1cm4gdGhpcy5vcHRpbWl6YXRpb25TdGF0ZS5oZWFkPW4uaGVhZCx0aGlzLm9wdGltaXphdGlvblN0YXRlLnRhaWw9byx0aGlzLm9wdGltaXphdGlvblN0YXRlLmVwb2Noc1BlclNhbXBsZT1pLHRoaXMuaW5pdGlhbGl6ZU9wdGltaXphdGlvbigpLHRoaXMucHJlcGFyZUZvck9wdGltaXphdGlvbkxvb3AoKSx0aGlzLmlzSW5pdGlhbGl6ZWQ9ITAsdGhpcy5nZXRORXBvY2hzKCl9LHQucHJvdG90eXBlLm1ha2VTZWFyY2hGbnM9ZnVuY3Rpb24oKXt2YXIgdD1xTXQubWFrZUluaXRpYWxpemF0aW9ucyh0aGlzLmRpc3RhbmNlRm4pLGU9dC5pbml0RnJvbVJhbmRvbTt0aGlzLmluaXRGcm9tVHJlZT10LmluaXRGcm9tVHJlZSx0aGlzLmluaXRGcm9tUmFuZG9tPWUsdGhpcy5zZWFyY2g9cU10Lm1ha2VJbml0aWFsaXplZE5OU2VhcmNoKHRoaXMuZGlzdGFuY2VGbil9LHQucHJvdG90eXBlLm1ha2VTZWFyY2hHcmFwaD1mdW5jdGlvbih0KXtmb3IodmFyIGU9dGhpcy5rbm5JbmRpY2VzLG49dGhpcy5rbm5EaXN0YW5jZXMsbz1uZXcgWU10LlNwYXJzZU1hdHJpeChbXSxbXSxbXSxbdC5sZW5ndGgsdC5sZW5ndGhdKSxpPTA7aTxlLmxlbmd0aDtpKyspZm9yKHZhciBhPWVbaV0scj1uW2ldLHM9MDtzPGEubGVuZ3RoO3MrKyl7dmFyIGw9cltzXTtsPjAmJm8uc2V0KGksYVtzXSxsKX12YXIgYz1ZTXQudHJhbnNwb3NlKG8pO3JldHVybiBZTXQubWF4aW11bShvLGMpfSx0LnByb3RvdHlwZS50cmFuc2Zvcm09ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxuPXRoaXMuWDtpZih2b2lkIDA9PT1ufHwwPT09bi5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJObyBkYXRhIGhhcyBiZWVuIGZpdC4iKTt2YXIgbz1NYXRoLmZsb29yKHRoaXMubk5laWdoYm9ycyp0aGlzLnRyYW5zZm9ybVF1ZXVlU2l6ZSk7bz1NYXRoLm1pbihuLmxlbmd0aCxvKTt2YXIgaT1xTXQuaW5pdGlhbGl6ZVNlYXJjaCh0aGlzLnJwRm9yZXN0LG4sdCxvLHRoaXMuaW5pdEZyb21SYW5kb20sdGhpcy5pbml0RnJvbVRyZWUsdGhpcy5yYW5kb20pLGE9dGhpcy5zZWFyY2gobix0aGlzLnNlYXJjaEdyYXBoLGksdCkscj1HTXQuZGVoZWFwU29ydChhKSxzPXIuaW5kaWNlcyxsPXIud2VpZ2h0cztzPXMubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC5zbGljZSgwLGUubk5laWdoYm9ycyl9KSksbD1sLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQuc2xpY2UoMCxlLm5OZWlnaGJvcnMpfSkpO3ZhciBjPU1hdGgubWF4KDAsdGhpcy5sb2NhbENvbm5lY3Rpdml0eS0xKSxkPXRoaXMuc21vb3RoS05ORGlzdGFuY2UobCx0aGlzLm5OZWlnaGJvcnMsYykscD10aGlzLmNvbXB1dGVNZW1iZXJzaGlwU3RyZW5ndGhzKHMsbCxkLnNpZ21hcyxkLnJob3MpLG09bmV3IFlNdC5TcGFyc2VNYXRyaXgocC5yb3dzLHAuY29scyxwLnZhbHMsW3QubGVuZ3RoLG4ubGVuZ3RoXSksZj1ZTXQubm9ybWFsaXplKG0sImwxIiksdT1ZTXQuZ2V0Q1NSKGYpLGc9dC5sZW5ndGgsaD1sdnQoWE10LnJlc2hhcGUyZCh1LmluZGljZXMsZyx0aGlzLm5OZWlnaGJvcnMpLFhNdC5yZXNoYXBlMmQodS52YWx1ZXMsZyx0aGlzLm5OZWlnaGJvcnMpLHRoaXMuZW1iZWRkaW5nKSxiPXRoaXMubkVwb2Nocz90aGlzLm5FcG9jaHMvMzptLm5Sb3dzPD0xZTQ/MTAwOjMwLHk9bS5nZXRWYWx1ZXMoKS5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGU+dD9lOnR9KSwwKTttPW0ubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdDx5L2I/MDp0fSkpLG09WU10LmVsaW1pbmF0ZVplcm9zKG0pO3ZhciBfPXRoaXMubWFrZUVwb2Noc1BlclNhbXBsZShtLmdldFZhbHVlcygpLGIpLEM9bS5nZXRSb3dzKCksTT1tLmdldENvbHMoKTtyZXR1cm4gdGhpcy5hc3NpZ25PcHRpbWl6YXRpb25TdGF0ZVBhcmFtZXRlcnMoe2hlYWRFbWJlZGRpbmc6aCx0YWlsRW1iZWRkaW5nOnRoaXMuZW1iZWRkaW5nLGhlYWQ6Qyx0YWlsOk0sY3VycmVudEVwb2NoOjAsbkVwb2NoczpiLG5WZXJ0aWNlczptLmdldERpbXMoKVsxXSxlcG9jaHNQZXJTYW1wbGU6X30pLHRoaXMucHJlcGFyZUZvck9wdGltaXphdGlvbkxvb3AoKSx0aGlzLm9wdGltaXplTGF5b3V0KCl9LHQucHJvdG90eXBlLnByb2Nlc3NHcmFwaEZvclN1cGVydmlzZWRQcm9qZWN0aW9uPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5ZO2lmKHQpe2lmKHQubGVuZ3RoIT09dGhpcy5YLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoIkxlbmd0aCBvZiBYIGFuZCB5IG11c3QgYmUgZXF1YWwiKTtpZigiY2F0ZWdvcmljYWwiPT09dGhpcy50YXJnZXRNZXRyaWMpdGhpcy5ncmFwaD10aGlzLmNhdGVnb3JpY2FsU2ltcGxpY2lhbFNldEludGVyc2VjdGlvbih0aGlzLmdyYXBoLHQsdGhpcy50YXJnZXRXZWlnaHQ8MT8xLygxLXRoaXMudGFyZ2V0V2VpZ2h0KSoyLjU6MWUxMil9fSx0LnByb3RvdHlwZS5zdGVwPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5vcHRpbWl6YXRpb25TdGF0ZS5jdXJyZW50RXBvY2g7cmV0dXJuIHQ8dGhpcy5nZXRORXBvY2hzKCkmJnRoaXMub3B0aW1pemVMYXlvdXRTdGVwKHQpLHRoaXMub3B0aW1pemF0aW9uU3RhdGUuY3VycmVudEVwb2NofSx0LnByb3RvdHlwZS5nZXRFbWJlZGRpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lbWJlZGRpbmd9LHQucHJvdG90eXBlLm5lYXJlc3ROZWlnaGJvcnM9ZnVuY3Rpb24odCl7dmFyIGUsbj10aGlzLm5OZWlnaGJvcnMsbz1xTXQubWFrZU5ORGVzY2VudCh0aGlzLmRpc3RhbmNlRm4sdGhpcy5yYW5kb20pLGk9NStNYXRoLmZsb29yKC41PT09KGU9TWF0aC5wb3codC5sZW5ndGgsLjUpLzIwKT8wOk1hdGgucm91bmQoZSkpLGE9TWF0aC5tYXgoNSxNYXRoLmZsb29yKE1hdGgucm91bmQoKGZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLmxvZyh0KS9NYXRoLmxvZygyKX0pKHQubGVuZ3RoKSkpKTt0aGlzLnJwRm9yZXN0PVpNdC5tYWtlRm9yZXN0KHQsbixpLHRoaXMucmFuZG9tKTt2YXIgcj1vKHQsWk10Lm1ha2VMZWFmQXJyYXkodGhpcy5ycEZvcmVzdCksbixhKTtyZXR1cm57a25uSW5kaWNlczpyLmluZGljZXMsa25uRGlzdGFuY2VzOnIud2VpZ2h0c319LHQucHJvdG90eXBlLmZ1enp5U2ltcGxpY2lhbFNldD1mdW5jdGlvbih0LGUsbil7dm9pZCAwPT09biYmKG49MSk7dmFyIG89dGhpcyxpPW8ua25uSW5kaWNlcyxhPXZvaWQgMD09PWk/W106aSxyPW8ua25uRGlzdGFuY2VzLHM9dm9pZCAwPT09cj9bXTpyLGw9dGhpcy5zbW9vdGhLTk5EaXN0YW5jZShzLGUsby5sb2NhbENvbm5lY3Rpdml0eSksYz10aGlzLmNvbXB1dGVNZW1iZXJzaGlwU3RyZW5ndGhzKGEscyxsLnNpZ21hcyxsLnJob3MpLGQ9bmV3IFlNdC5TcGFyc2VNYXRyaXgoYy5yb3dzLGMuY29scyxjLnZhbHMsW3QubGVuZ3RoLHQubGVuZ3RoXSkscD1ZTXQudHJhbnNwb3NlKGQpLG09WU10LnBhaXJ3aXNlTXVsdGlwbHkoZCxwKSxmPVlNdC5zdWJ0cmFjdChZTXQuYWRkKGQscCksbSksdT1ZTXQubXVsdGlwbHlTY2FsYXIoZixuKSxnPVlNdC5tdWx0aXBseVNjYWxhcihtLDEtbik7cmV0dXJuIFlNdC5hZGQodSxnKX0sdC5wcm90b3R5cGUuY2F0ZWdvcmljYWxTaW1wbGljaWFsU2V0SW50ZXJzZWN0aW9uPWZ1bmN0aW9uKHQsZSxuLG8pe3ZvaWQgMD09PW8mJihvPTEpO3ZhciBpPXJ2dCh0LGUsbyxuKTtyZXR1cm4gc3Z0KGk9WU10LmVsaW1pbmF0ZVplcm9zKGkpKX0sdC5wcm90b3R5cGUuc21vb3RoS05ORGlzdGFuY2U9ZnVuY3Rpb24odCxlLG4sbyxpKXt2b2lkIDA9PT1uJiYobj0xKSx2b2lkIDA9PT1vJiYobz02NCksdm9pZCAwPT09aSYmKGk9MSk7Zm9yKHZhciBhPU1hdGgubG9nKGUpL01hdGgubG9nKDIpKmkscj1YTXQuemVyb3ModC5sZW5ndGgpLHM9WE10Lnplcm9zKHQubGVuZ3RoKSxsPTA7bDx0Lmxlbmd0aDtsKyspe3ZhciBjPTAsZD0xLzAscD0xLG09dFtsXSxmPW0uZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gdD4wfSkpO2lmKGYubGVuZ3RoPj1uKXt2YXIgdT1NYXRoLmZsb29yKG4pLGc9bi11O3U+MD8ocltsXT1mW3UtMV0sZz5KTXQmJihyW2xdKz1nKihmW3VdLWZbdS0xXSkpKTpyW2xdPWcqZlswXX1lbHNlIGYubGVuZ3RoPjAmJihyW2xdPVhNdC5tYXgoZikpO2Zvcih2YXIgaD0wO2g8bztoKyspe2Zvcih2YXIgYj0wLHk9MTt5PHRbbF0ubGVuZ3RoO3krKyl7dmFyIF89dFtsXVt5XS1yW2xdO2IrPV8+MD9NYXRoLmV4cCgtXy9wKToxfWlmKE1hdGguYWJzKGItYSk8Sk10KWJyZWFrO2I+YT9wPShjKyhkPXApKS8yOihjPXAsZD09PTEvMD9wKj0yOnA9KGMrZCkvMil9aWYoc1tsXT1wLHJbbF0+MCl7dmFyIEM9WE10Lm1lYW4obSk7c1tsXTxRTXQqQyYmKHNbbF09UU10KkMpfWVsc2V7dmFyIE09WE10Lm1lYW4odC5tYXAoWE10Lm1lYW4pKTtzW2xdPFFNdCpNJiYoc1tsXT1RTXQqTSl9fXJldHVybntzaWdtYXM6cyxyaG9zOnJ9fSx0LnByb3RvdHlwZS5jb21wdXRlTWVtYmVyc2hpcFN0cmVuZ3Rocz1mdW5jdGlvbih0LGUsbixvKXtmb3IodmFyIGk9dC5sZW5ndGgsYT10WzBdLmxlbmd0aCxyPVhNdC56ZXJvcyhpKmEpLHM9WE10Lnplcm9zKGkqYSksbD1YTXQuemVyb3MoaSphKSxjPTA7YzxpO2MrKylmb3IodmFyIGQ9MDtkPGE7ZCsrKXt2YXIgcD0wOy0xIT09dFtjXVtkXSYmKHA9dFtjXVtkXT09PWM/MDplW2NdW2RdLW9bY108PTA/MTpNYXRoLmV4cCgtKGVbY11bZF0tb1tjXSkvbltjXSkscltjKmErZF09YyxzW2MqYStkXT10W2NdW2RdLGxbYyphK2RdPXApfXJldHVybntyb3dzOnIsY29sczpzLHZhbHM6bH19LHQucHJvdG90eXBlLmluaXRpYWxpemVTaW1wbGljaWFsU2V0RW1iZWRkaW5nPWZ1bmN0aW9uKCl7Zm9yKHZhciB0PXRoaXMsZT10aGlzLmdldE5FcG9jaHMoKSxuPXRoaXMubkNvbXBvbmVudHMsbz10aGlzLmdyYXBoLmdldFZhbHVlcygpLGk9MCxhPTA7YTxvLmxlbmd0aDthKyspe2k8b1thXSYmKGk9b1thXSl9dmFyIHI9dGhpcy5ncmFwaC5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0PGkvZT8wOnR9KSk7dGhpcy5lbWJlZGRpbmc9WE10Lnplcm9zKHIublJvd3MpLm1hcCgoZnVuY3Rpb24oKXtyZXR1cm4gWE10Lnplcm9zKG4pLm1hcCgoZnVuY3Rpb24oKXtyZXR1cm4gMjAqWE10LnRhdVJhbmQodC5yYW5kb20pLTEwfSkpfSkpO3ZhciBzPVtdLGw9W10sYz1bXSxkPXIuZ2V0QWxsKCk7Zm9yKGE9MDthPGQubGVuZ3RoO2ErKyl7dmFyIHA9ZFthXTtwLnZhbHVlJiYocy5wdXNoKHAudmFsdWUpLGMucHVzaChwLnJvdyksbC5wdXNoKHAuY29sKSl9cmV0dXJue2hlYWQ6bCx0YWlsOmMsZXBvY2hzUGVyU2FtcGxlOnRoaXMubWFrZUVwb2Noc1BlclNhbXBsZShzLGUpfX0sdC5wcm90b3R5cGUubWFrZUVwb2Noc1BlclNhbXBsZT1mdW5jdGlvbih0LGUpe3ZhciBuPVhNdC5maWxsZWQodC5sZW5ndGgsLTEpLG89WE10Lm1heCh0KSxpPXQubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC9vKmV9KSk7cmV0dXJuIGkuZm9yRWFjaCgoZnVuY3Rpb24odCxvKXt0PjAmJihuW29dPWUvaVtvXSl9KSksbn0sdC5wcm90b3R5cGUuYXNzaWduT3B0aW1pemF0aW9uU3RhdGVQYXJhbWV0ZXJzPWZ1bmN0aW9uKHQpe09iamVjdC5hc3NpZ24odGhpcy5vcHRpbWl6YXRpb25TdGF0ZSx0KX0sdC5wcm90b3R5cGUucHJlcGFyZUZvck9wdGltaXphdGlvbkxvb3A9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dC5yZXB1bHNpb25TdHJlbmd0aCxuPXQubGVhcm5pbmdSYXRlLG89dC5uZWdhdGl2ZVNhbXBsZVJhdGUsaT10aGlzLm9wdGltaXphdGlvblN0YXRlLGE9aS5lcG9jaHNQZXJTYW1wbGUscj1pLmhlYWRFbWJlZGRpbmcscz1yWzBdLmxlbmd0aCxsPXIubGVuZ3RoPT09aS50YWlsRW1iZWRkaW5nLmxlbmd0aCxjPWEubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC9vfSkpLGQ9ak10KGMpLHA9ak10KGEpO3RoaXMuYXNzaWduT3B0aW1pemF0aW9uU3RhdGVQYXJhbWV0ZXJzKHtlcG9jaE9mTmV4dFNhbXBsZTpwLGVwb2NoT2ZOZXh0TmVnYXRpdmVTYW1wbGU6ZCxlcG9jaHNQZXJOZWdhdGl2ZVNhbXBsZTpjLG1vdmVPdGhlcjpsLGluaXRpYWxBbHBoYTpuLGFscGhhOm4sZ2FtbWE6ZSxkaW06c30pfSx0LnByb3RvdHlwZS5pbml0aWFsaXplT3B0aW1pemF0aW9uPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5lbWJlZGRpbmcsZT10aGlzLmVtYmVkZGluZyxuPXRoaXMub3B0aW1pemF0aW9uU3RhdGUsbz1uLmhlYWQsaT1uLnRhaWwsYT1uLmVwb2Noc1BlclNhbXBsZSxyPXRoaXMuZ2V0TkVwb2NocygpLHM9dGhpcy5ncmFwaC5uQ29scyxsPWF2dCh0aGlzLnNwcmVhZCx0aGlzLm1pbkRpc3QpO3RoaXMuYXNzaWduT3B0aW1pemF0aW9uU3RhdGVQYXJhbWV0ZXJzKHtoZWFkRW1iZWRkaW5nOnQsdGFpbEVtYmVkZGluZzplLGhlYWQ6byx0YWlsOmksZXBvY2hzUGVyU2FtcGxlOmEsYTpsLmEsYjpsLmIsbkVwb2NoczpyLG5WZXJ0aWNlczpzfSl9LHQucHJvdG90eXBlLm9wdGltaXplTGF5b3V0U3RlcD1mdW5jdGlvbih0KXtmb3IodmFyIGU9dGhpcy5vcHRpbWl6YXRpb25TdGF0ZSxuPWUuaGVhZCxvPWUudGFpbCxpPWUuaGVhZEVtYmVkZGluZyxhPWUudGFpbEVtYmVkZGluZyxyPWUuZXBvY2hzUGVyU2FtcGxlLHM9ZS5lcG9jaE9mTmV4dFNhbXBsZSxsPWUuZXBvY2hPZk5leHROZWdhdGl2ZVNhbXBsZSxjPWUuZXBvY2hzUGVyTmVnYXRpdmVTYW1wbGUsZD1lLm1vdmVPdGhlcixwPWUuaW5pdGlhbEFscGhhLG09ZS5hbHBoYSxmPWUuZ2FtbWEsdT1lLmEsZz1lLmIsaD1lLmRpbSxiPWUubkVwb2Nocyx5PWUublZlcnRpY2VzLF89MDtfPHIubGVuZ3RoO18rKylpZighKHNbX10+dCkpe3ZhciBDPW5bX10sTT1pW0NdLHY9YVtvW19dXSx4PWl2dChNLHYpLE89MDt4PjAmJihPPS0yKnUqZypNYXRoLnBvdyh4LGctMSksTy89dSpNYXRoLnBvdyh4LGcpKzEpO2Zvcih2YXIgUD0wO1A8aDtQKyspe3ZhciB3PW92dChPKihNW1BdLXZbUF0pLDQpO01bUF0rPXcqbSxkJiYodltQXSs9LXcqbSl9c1tfXSs9cltfXTtmb3IodmFyIGs9TWF0aC5mbG9vcigodC1sW19dKS9jW19dKSxTPTA7UzxrO1MrKyl7dmFyIEQ9WE10LnRhdVJhbmRJbnQoeSx0aGlzLnJhbmRvbSksUj1hW0RdLEU9aXZ0KE0sUiksQT0wO2lmKEU+MClBPTIqZipnLEEvPSguMDAxK0UpKih1Kk1hdGgucG93KEUsZykrMSk7ZWxzZSBpZihDPT09RCljb250aW51ZTtmb3IoUD0wO1A8aDtQKyspe3c9NDtBPjAmJih3PW92dChBKihNW1BdLVJbUF0pLDQpKSxNW1BdKz13Km19fWxbX10rPWsqY1tfXX1yZXR1cm4gZS5hbHBoYT1wKigxLXQvYiksZS5jdXJyZW50RXBvY2grPTEsaX0sdC5wcm90b3R5cGUub3B0aW1pemVMYXlvdXRBc3luYz1mdW5jdGlvbih0KXt2YXIgZT10aGlzO3JldHVybiB2b2lkIDA9PT10JiYodD1mdW5jdGlvbigpe3JldHVybiEwfSksbmV3IFByb21pc2UoKGZ1bmN0aW9uKG4sbyl7dmFyIGk9ZnVuY3Rpb24oKXtyZXR1cm4gTE10KGUsdm9pZCAwLHZvaWQgMCwoZnVuY3Rpb24oKXt2YXIgZSxhLHIscyxsO3JldHVybiBCTXQodGhpcywoZnVuY3Rpb24oYyl7dHJ5e2lmKGE9KGU9dGhpcy5vcHRpbWl6YXRpb25TdGF0ZSkubkVwb2Nocyx0aGlzLmVtYmVkZGluZz10aGlzLm9wdGltaXplTGF5b3V0U3RlcChlLmN1cnJlbnRFcG9jaCkscz0hMT09PXQocj10aGlzLm9wdGltaXphdGlvblN0YXRlLmN1cnJlbnRFcG9jaCksbD1yPT09YSxzfHxsKXJldHVyblsyLG4obCldO3NldFRpbWVvdXQoKGZ1bmN0aW9uKCl7cmV0dXJuIGkoKX0pLDApfWNhdGNoKHQpe28odCl9cmV0dXJuWzJdfSkpfSkpfTtzZXRUaW1lb3V0KChmdW5jdGlvbigpe3JldHVybiBpKCl9KSwwKX0pKX0sdC5wcm90b3R5cGUub3B0aW1pemVMYXlvdXQ9ZnVuY3Rpb24odCl7dm9pZCAwPT09dCYmKHQ9ZnVuY3Rpb24oKXtyZXR1cm4hMH0pO2Zvcih2YXIgZT0hMSxuPVtdOyFlOyl7dmFyIG89dGhpcy5vcHRpbWl6YXRpb25TdGF0ZSxpPW8ubkVwb2NocztuPXRoaXMub3B0aW1pemVMYXlvdXRTdGVwKG8uY3VycmVudEVwb2NoKTt2YXIgYT10aGlzLm9wdGltaXphdGlvblN0YXRlLmN1cnJlbnRFcG9jaCxyPSExPT09dChhKTtlPWE9PT1pfHxyfXJldHVybiBufSx0LnByb3RvdHlwZS5nZXRORXBvY2hzPWZ1bmN0aW9uKCl7aWYodGhpcy5uRXBvY2hzPjApcmV0dXJuIHRoaXMubkVwb2Noczt2YXIgdD10aGlzLmdyYXBoLm5Sb3dzO3JldHVybiB0PD0yNTAwPzUwMDp0PD01ZTM/NDAwOnQ8PTc1MDA/MzAwOjIwMH0sdH0pKCk7ZnVuY3Rpb24gdHZ0KHQsZSl7Zm9yKHZhciBuPTAsbz0wO288dC5sZW5ndGg7bysrKW4rPU1hdGgucG93KHRbb10tZVtvXSwyKTtyZXR1cm4gTWF0aC5zcXJ0KG4pfUhfdC5VTUFQPSRNdCxIX3QuZXVjbGlkZWFuPXR2dCxIX3QuY29zaW5lPWZ1bmN0aW9uIGV2dCh0LGUpe2Zvcih2YXIgbj0wLG89MCxpPTAsYT0wO2E8dC5sZW5ndGg7YSsrKW4rPXRbYV0qZVthXSxvKz1NYXRoLnBvdyh0W2FdLDIpLGkrPU1hdGgucG93KGVbYV0sMik7cmV0dXJuIDA9PT1vJiYwPT09aT8wOjA9PT1vfHwwPT09aT8xOjEtbi9NYXRoLnNxcnQobyppKX07dmFyIG52dD1mdW5jdGlvbiBudnQoKXt0aGlzLmN1cnJlbnRFcG9jaD0wLHRoaXMuaGVhZEVtYmVkZGluZz1bXSx0aGlzLnRhaWxFbWJlZGRpbmc9W10sdGhpcy5oZWFkPVtdLHRoaXMudGFpbD1bXSx0aGlzLmVwb2Noc1BlclNhbXBsZT1bXSx0aGlzLmVwb2NoT2ZOZXh0U2FtcGxlPVtdLHRoaXMuZXBvY2hPZk5leHROZWdhdGl2ZVNhbXBsZT1bXSx0aGlzLmVwb2Noc1Blck5lZ2F0aXZlU2FtcGxlPVtdLHRoaXMubW92ZU90aGVyPSEwLHRoaXMuaW5pdGlhbEFscGhhPTEsdGhpcy5hbHBoYT0xLHRoaXMuZ2FtbWE9MSx0aGlzLmE9MS41NzY5NDM0NjAzMTEzMDc3LHRoaXMuYj0uODk1MDYwODc3OTEwOTczMyx0aGlzLmRpbT0yLHRoaXMubkVwb2Nocz01MDAsdGhpcy5uVmVydGljZXM9MH07ZnVuY3Rpb24gb3Z0KHQsZSl7cmV0dXJuIHQ+ZT9lOnQ8LWU/LWU6dH1mdW5jdGlvbiBpdnQodCxlKXtmb3IodmFyIG49MCxvPTA7bzx0Lmxlbmd0aDtvKyspbis9TWF0aC5wb3codFtvXS1lW29dLDIpO3JldHVybiBufWZ1bmN0aW9uIGF2dCh0LGUpe3ZhciBuPVhNdC5saW5lYXIoMCwzKnQsMzAwKS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0PGU/MTp0fSkpLG89WE10Lnplcm9zKG4ubGVuZ3RoKS5tYXAoKGZ1bmN0aW9uKG8saSl7cmV0dXJuIG5baV0+PWU/TWF0aC5leHAoLShuW2ldLWUpL3QpOm99KSksaT1LTXQuZGVmYXVsdCh7eDpuLHk6b30sKGZ1bmN0aW9uKHQpe3ZhciBlPVZNdCh0LDIpLG49ZVswXSxvPWVbMV07cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiAxLygxK24qTWF0aC5wb3codCwyKm8pKX19KSx7ZGFtcGluZzoxLjUsaW5pdGlhbFZhbHVlczpbLjUsLjVdLGdyYWRpZW50RGlmZmVyZW5jZTouMSxtYXhJdGVyYXRpb25zOjEwMCxlcnJvclRvbGVyYW5jZTouMDF9KS5wYXJhbWV0ZXJWYWx1ZXMsYT1WTXQoaSwyKTtyZXR1cm57YTphWzBdLGI6YVsxXX19ZnVuY3Rpb24gcnZ0KHQsZSxuLG8pe3JldHVybiB2b2lkIDA9PT1uJiYobj0xKSx2b2lkIDA9PT1vJiYobz01KSx0Lm1hcCgoZnVuY3Rpb24odCxpLGEpe3JldHVybi0xPT09ZVtpXXx8LTE9PT1lW2FdP3QqTWF0aC5leHAoLW4pOmVbaV0hPT1lW2FdP3QqTWF0aC5leHAoLW8pOnR9KSl9ZnVuY3Rpb24gc3Z0KHQpe3Q9WU10Lm5vcm1hbGl6ZSh0LCJtYXgiKTt2YXIgZT1ZTXQudHJhbnNwb3NlKHQpLG49WU10LnBhaXJ3aXNlTXVsdGlwbHkoZSx0KTtyZXR1cm4gdD1ZTXQuYWRkKHQsWU10LnN1YnRyYWN0KGUsbikpLFlNdC5lbGltaW5hdGVaZXJvcyh0KX1mdW5jdGlvbiBsdnQodCxlLG4pe2Zvcih2YXIgbz1YTXQuemVyb3ModC5sZW5ndGgpLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIFhNdC56ZXJvcyhuWzBdLmxlbmd0aCl9KSksaT0wO2k8dC5sZW5ndGg7aSsrKWZvcih2YXIgYT0wO2E8dFswXS5sZW5ndGg7YSsrKWZvcih2YXIgcj0wO3I8blswXS5sZW5ndGg7cisrKXtvW2ldW3JdKz1lW2ldW2FdKm5bdFtpXVthXV1bcl19cmV0dXJuIG99ZnVuY3Rpb24gY3Z0KHQpe2xldCBlLG4sbz10Lmxlbmd0aDtmb3IoO287KW49TWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKm8tLSksZT10W29dLHRbb109dFtuXSx0W25dPWU7cmV0dXJuIHR9ZnVuY3Rpb24gZHZ0KHQsZSl7cmV0dXJuYCR7ZX0vJHt0fWB9SF90LmZpbmRBQlBhcmFtcz1hdnQsSF90LmZhc3RJbnRlcnNlY3Rpb249cnZ0LEhfdC5yZXNldExvY2FsQ29ubmVjdGl2aXR5PXN2dCxIX3QuaW5pdFRyYW5zZm9ybT1sdnQsT2JqZWN0LmRlZmluZVByb3BlcnR5KElfdCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksSV90LlVNQVA9SF90LlVNQVA7Y2xhc3MgcHZ0e2NvbnN0cnVjdG9yKHQpe3RoaXMuaHR0cD10LHRoaXMuaHR0cFBhdGhQcmVmaXg9ImRhdGEvcGx1Z2luL25wbWkifWZldGNoRGF0YSh0KXtyZXR1cm4gaWUodGhpcy5mZXRjaEFubm90YXRpb25zKHQpLHRoaXMuZmV0Y2hNZXRyaWNzKHQpLHRoaXMuZmV0Y2hWYWx1ZXModCksdGhpcy5mZXRjaEVtYmVkZGluZ3ModCkpLnBpcGUoVnQoKChbdCxlLG4sb10pPT57Y29uc3QgaT17fSxhPXt9O2xldCByLHM9MDtmb3IoY29uc3QgciBvZiBPYmplY3Qua2V5cyh0KSlmb3IoY29uc3QgbCBpbiB0W3JdKXtjb25zdCBjPXRbcl1bbF07T2JqZWN0LmtleXMobykubGVuZ3RoJiYhYVtjXSYmb1tyXVtsXSYmb1tyXVtsXS5zb21lKCh0PT4wIT09dCkpJiYoYVtjXT17dmVjdG9yOm9bcl1bbF0saW5kZXg6cyxuYW1lOmN9LHMrPTEpO2NvbnN0IGQ9bmV3IE1hcDtmb3IoY29uc3QgdCBpbiBlW3JdKXtjb25zdCBvPWVbcl1bdF0saT16X3Qobyk7bGV0IGE9ZC5nZXQoaSk7YXx8KGE9e25QTUlWYWx1ZTpudWxsLGNvdW50VmFsdWU6bnVsbCxhbm5vdGF0aW9uOmMsbWV0cmljOmkscnVuOnJ9LGQuc2V0KGksYSkpLEFfdChvKT9hLmNvdW50VmFsdWU9bltyXVtsXVt0XTpUX3QobykmJihhLm5QTUlWYWx1ZT1uW3JdW2xdW3RdKX1pW2NdPVsuLi5pW2NdP2lbY106W10sLi4uZC52YWx1ZXMoKV19cmV0dXJuIE9iamVjdC5rZXlzKGEpLmxlbmd0aCYmKHI9KGZ1bmN0aW9uIGwodCl7Y29uc3QgZT1PYmplY3Qua2V5cyh0KTtyZXR1cm57cG9pbnRzOnQscG9pbnRLZXlzOmUsc2h1ZmZsZWREYXRhSW5kaWNlczpjdnQoKG49ZS5sZW5ndGgsWy4uLm5ldyBBcnJheShuKV0ubWFwKCgodCxlKT0+ZSkpKSksaGFzVW1hcFJ1bjohMX07dmFyIG59KShhKSkse2Fubm90YXRpb25EYXRhOmksbWV0cmljczplLGVtYmVkZGluZ0RhdGFTZXQ6cn19KSksaGUoKHQ9PnQgaW5zdGFuY2VvZiBmRSYmNDAwPD10LnN0YXR1cyYmdC5zdGF0dXM8NTAwP3p0KHthbm5vdGF0aW9uRGF0YTp7fSxtZXRyaWNzOnt9LGVtYmVkZGluZ0RhdGFTZXQ6dm9pZCAwfSk6SXQodCkpKSl9ZmV0Y2hBbm5vdGF0aW9ucyh0KXtyZXR1cm4gaWUodC5tYXAoKHQ9PnRoaXMuaHR0cC5nZXQoYC9leHBlcmltZW50LyR7dH0vJHt0aGlzLmh0dHBQYXRoUHJlZml4fS9hbm5vdGF0aW9uc2ApLnBpcGUoVnQoKGU9PihmdW5jdGlvbiBuKHQsZSl7cmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyhPYmplY3QuZW50cmllcyh0KS5tYXAoKChbdCxuXSk9PltkdnQodCxlKSxuXSkpKX0pKGUsdCkpKSkpKSkucGlwZShWdCgodD0+e2xldCBlPXt9O2Zvcihjb25zdCBuIG9mIHQpZT1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sZSksbik7cmV0dXJuIGV9KSkpfWZldGNoTWV0cmljcyh0KXtyZXR1cm4gaWUodC5tYXAoKHQ9PnRoaXMuaHR0cC5nZXQoYC9leHBlcmltZW50LyR7dH0vJHt0aGlzLmh0dHBQYXRoUHJlZml4fS9tZXRyaWNzYCkucGlwZShWdCgoZT0+KGZ1bmN0aW9uIG4odCxlKXtyZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKE9iamVjdC5lbnRyaWVzKHQpLm1hcCgoKFt0LG5dKT0+W2R2dCh0LGUpLG5dKSkpfSkoZSx0KSkpKSkpKS5waXBlKFZ0KCh0PT57bGV0IGU9e307Zm9yKGNvbnN0IG4gb2YgdCllPU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxlKSxuKTtyZXR1cm4gZX0pKSl9ZmV0Y2hWYWx1ZXModCl7cmV0dXJuIGllKHQubWFwKCh0PT50aGlzLmh0dHAuZ2V0KGAvZXhwZXJpbWVudC8ke3R9LyR7dGhpcy5odHRwUGF0aFByZWZpeH0vdmFsdWVzYCkucGlwZShWdCgoZT0+KGZ1bmN0aW9uIG4odCxlKXtyZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKE9iamVjdC5lbnRyaWVzKHQpLm1hcCgoKFt0LG5dKT0+W2R2dCh0LGUpLG5dKSkpfSkoZSx0KSkpKSkpKS5waXBlKFZ0KCh0PT57bGV0IGU9e307Zm9yKGNvbnN0IG4gb2YgdCllPU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxlKSxuKTtyZXR1cm4gZX0pKSl9ZmV0Y2hFbWJlZGRpbmdzKHQpe3JldHVybiBpZSh0Lm1hcCgodD0+dGhpcy5odHRwLmdldChgL2V4cGVyaW1lbnQvJHt0fS8ke3RoaXMuaHR0cFBhdGhQcmVmaXh9L2VtYmVkZGluZ3NgKS5waXBlKFZ0KChlPT4oZnVuY3Rpb24gbih0LGUpe3JldHVybiBPYmplY3QuZnJvbUVudHJpZXMoT2JqZWN0LmVudHJpZXModCkubWFwKCgoW3Qsbl0pPT5bZHZ0KHQsZSksbl0pKSl9KShlLHQpKSkpKSkpLnBpcGUoVnQoKHQ9PntsZXQgZT17fTtmb3IoY29uc3QgbiBvZiB0KWU9T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGUpLG4pO3JldHVybiBlfSkpKX19cHZ0Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxwdnQpKFRyKEhFKSl9LHB2dC7JtXByb3Y9U24oe3Rva2VuOnB2dCxmYWN0b3J5OnB2dC7JtWZhY30pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIocHZ0LFt7dHlwZTpVbX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpIRX1dfSksbnVsbCk7Y2xhc3MgbXZ0e31tdnQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fG12dCl9LG12dC7JtW1vZD1mbyh7dHlwZTptdnR9KSxtdnQuybVpbmo9RG4oe3Byb3ZpZGVyczpbcHZ0XSxpbXBvcnRzOltbRkVdXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIobXZ0LFt7dHlwZTpMXyxhcmdzOlt7aW1wb3J0czpbRkVdLHByb3ZpZGVyczpbcHZ0XX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnVvKG12dCx7aW1wb3J0czpbRkVdfSk7Y29uc3QgZnZ0PV9rKCJbTlBNSV0gblBNSSBMb2FkZWQiKSx1dnQ9X2soIltOUE1JXSBuUE1JIFBsdWdpbiBEYXRhIFJlcXVlc3RlZCIpLGd2dD1faygiW05QTUldIG5QTUkgUGx1Z2luIERhdGEgTG9hZGVkIix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSksaHZ0PV9rKCJbTlBNSV0gblBNSSBQbHVnaW4gRGF0YSBSZXF1ZXN0IEZhaWxlZCIpLGJ2dD1faygiW05QTUldIEFkZGluZy9SZW1vdmluZyBBbm5vdGF0aW9ucyB0by9mcm9tIFNlbGVjdGVkIix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSkseXZ0PV9rKCJbTlBNSV0gQW5ub3RhdGlvbnMgU2V0Iix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSksX3Z0PV9rKCJbTlBNSV0gQ2xlYXJpbmcgdGhlIEFubm90YXRpb24gU2VsZWN0aW9uIiksQ3Z0PV9rKCJbTlBNSV0gQWRkaW5nL1JlbW92aW5nIEFubm90YXRpb25zIHRvL2Zyb20gRmxhZ2dlZCIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLE12dD1faygiW05QTUldIEFkZGluZy9SZW1vdmluZyBBbm5vdGF0aW9ucyB0by9mcm9tIEhpZGRlbiIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLHZ2dD1faygiW05QTUldIEFubm90YXRpb25zIFJlZ2V4IENoYW5nZWQiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSx4dnQ9X2soIltOUE1JXSBNZXRyaWNzIFJlZ2V4IENoYW5nZWQiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSxPdnQ9X2soIltOUE1JXSBNZXRyaWMgRmlsdGVyIEFkZGVkIix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSksUHZ0PV9rKCJbTlBNSV0gTWV0cmljIEZpbHRlciBSZW1vdmVkIix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSksd3Z0PV9rKCJbTlBNSV0gTWV0cmljIEZpbHRlciBDaGFuZ2VkIix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSksa3Z0PV9rKCJbTlBNSV0gQW5ub3RhdGlvbiBTb3J0IENoYW5nZWQiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSxTdnQ9X2soIltOUE1JXSBTaW1pbGFyaXR5IFNvcnQgQ2hhbmdlZCIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLER2dD1faygiW05QTUldIFRvZ2dsZSBQQyBFeHBhbmRlZCIpLFJ2dD1faygiW05QTUldIFRvZ2dsZSBBbm5vdGF0aW9ucyBFeHBhbmRlZCIpLEV2dD1faygiW05QTUldIFRvZ2dsZSBTaWRlYmFyIEV4cGFuZGVkIiksQXZ0PV9rKCJbTlBNSV0gU2hvdyBDb3VudHMgVG9nZ2xlZCIpLFR2dD1faygiW05QTUldIFNob3cgSGlkZGVuIEFubm90YXRpb25zIFRvZ2dsZWQiKSxOdnQ9X2soIltOUE1JXSBFbWJlZGRpbmdzIFZpZXcgVG9nZ2xlZCIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLHp2dD1faygiW05QTUldIFNpZGViYXIgV2lkdGggQ2hhbmdlZCIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLEl2dD1faygiW05QTUldIEVtYmVkZGluZ3MgU2lkZWJhciBXaWR0aCBDaGFuZ2VkIix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSksSHZ0PV9rKCJbTlBNSV0gRW1iZWRkaW5ncyBTaWRlYmFyIEV4cGFuZGVkIFRvZ2dsZWQiKSxGdnQ9X2soIltOUE1JXSBDaGFuZ2UgRW1iZWRkaW5nIERhdGFTZXQiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSxMdnQ9Im5wbWkiO3ZhciBCdnQsVnZ0LGp2dCxVdnQ7IShmdW5jdGlvbih0KXt0W3QuQU5EPTBdPSJBTkQifSkoQnZ0fHwoQnZ0PXt9KSksKGZ1bmN0aW9uKHQpe3RbdC5NRVRSSUM9MF09Ik1FVFJJQyIsdFt0Lk9QRVJBVE9SPTFdPSJPUEVSQVRPUiJ9KShWdnR8fChWdnQ9e30pKSwoZnVuY3Rpb24odCl7dFt0LkRFRkFVTFQ9MF09IkRFRkFVTFQiLHRbdC5FTUJFRERJTkdTPTFdPSJFTUJFRERJTkdTIn0pKGp2dHx8KGp2dD17fSkpLChmdW5jdGlvbih0KXt0W3QuREVTQ0VORElORz0wXT0iREVTQ0VORElORyIsdFt0LkFTQ0VORE5HPTFdPSJBU0NFTkRORyIsdFt0LlNJTUlMQVI9Ml09IlNJTUlMQVIiLHRbdC5ESVNTSU1JTEFSPTNdPSJESVNTSU1JTEFSIn0pKFV2dHx8KFV2dD17fSkpO2NvbnN0IFd2dD1fUyhMdnQpLEd2dD1iUyhXdnQsKHQ9PnQucGx1Z2luRGF0YUxvYWRlZC5zdGF0ZSkpLFl2dD1iUyhXdnQsKHQ9PnQuYW5ub3RhdGlvbkRhdGEpKSxxdnQ9YlMoV3Z0LCh0PT50LnJ1blRvTWV0cmljcykpLFp2dD1iUyhXdnQsKHQ9PnQuZW1iZWRkaW5nRGF0YVNldCkpLFh2dD1iUyhXdnQsKHQ9PnQuc2VsZWN0ZWRBbm5vdGF0aW9ucykpLEt2dD1iUyhXdnQsKHQ9PnQuZmxhZ2dlZEFubm90YXRpb25zKSksSnZ0PWJTKFd2dCwodD0+dC5oaWRkZW5Bbm5vdGF0aW9ucykpLFF2dD1iUyhXdnQsKHQ9PnQuYW5ub3RhdGlvbnNSZWdleCkpLCR2dD1iUyhXdnQsKHQ9PnQubWV0cmljc1JlZ2V4KSksdHh0PWJTKFd2dCwodD0+dC5tZXRyaWNBcml0aG1ldGljKSksZXh0PWJTKFd2dCwodD0+dC5tZXRyaWNGaWx0ZXJzKSksbnh0PWJTKFd2dCwodD0+dC5zb3J0KSksb3h0PWJTKFd2dCwodD0+dC5wY0V4cGFuZGVkKSksaXh0PWJTKFd2dCwodD0+dC5hbm5vdGF0aW9uc0V4cGFuZGVkKSksYXh0PWJTKFd2dCwodD0+dC5zaWRlYmFyRXhwYW5kZWQpKSxyeHQ9YlMoV3Z0LCh0PT50LnNob3dDb3VudHMpKSxzeHQ9YlMoV3Z0LCh0PT50LnNob3dIaWRkZW5Bbm5vdGF0aW9ucykpLGx4dD1iUyhXdnQsKHQ9PnQudmlld0FjdGl2ZSkpLGN4dD1iUyhXdnQsKHQ9PnQuc2lkZWJhcldpZHRoKSksZHh0PWJTKFd2dCwodD0+dC5lbWJlZGRpbmdzTWV0cmljKSkscHh0PWJTKFd2dCwodD0+dC5lbWJlZGRpbmdzU2lkZWJhcldpZHRoKSksbXh0PWJTKFd2dCwodD0+dC5lbWJlZGRpbmdzU2lkZWJhckV4cGFuZGVkKSk7Y2xhc3MgZnh0e2NvbnN0cnVjdG9yKHQsZSxuKXt0aGlzLmFjdGlvbnMkPXQsdGhpcy5zdG9yZT1lLHRoaXMuZGF0YVNvdXJjZT1uLHRoaXMubG9hZERhdGEkPVdTKCgoKT0+cGUodGhpcy5sb2FkUGx1Z2luRGF0YSgpKS5waXBlKFZ0KCgoKT0+KHt9KSkpKSkse2Rpc3BhdGNoOiExfSl9bG9hZFBsdWdpbkRhdGEoKXtyZXR1cm4gdGhpcy5hY3Rpb25zJC5waXBlKCRTKGZ2dCkscWUodGhpcy5zdG9yZS5zZWxlY3QoR3Z0KSx0aGlzLnN0b3JlLnNlbGVjdCh4UikpLHVlKCgoWyx0LGVdKT0+dCE9PVVFLkxPQURJTkcmJm51bGwhPT1lKSksV2UoKCgpPT50aGlzLnN0b3JlLmRpc3BhdGNoKHV2dCgpKSkpLCR0KCgoWywsdF0pPT50aGlzLmRhdGFTb3VyY2UuZmV0Y2hEYXRhKHQpLnBpcGUoV2UoKHQ9Pnt0aGlzLnN0b3JlLmRpc3BhdGNoKGd2dCh0KSl9KSksVnQoKCgpPT57fSkpLGhlKCgoKT0+KHRoaXMuc3RvcmUuZGlzcGF0Y2goaHZ0KCkpLGR0KSkpKSkpKX19Znh0Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxmeHQpKFRyKFFTKSxUcihpUyksVHIocHZ0KSl9LGZ4dC7JtXByb3Y9U24oe3Rva2VuOmZ4dCxmYWN0b3J5OmZ4dC7JtWZhY30pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoZnh0LFt7dHlwZTpVbX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpRU30se3R5cGU6aVN9LHt0eXBlOnB2dH1dfSksbnVsbCk7Y2xhc3MgdXh0e311eHQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHV4dCl9LHV4dC7JtWNtcD1zbyh7dHlwZTp1eHQsc2VsZWN0b3JzOltbIm5wbWktaW5hY3RpdmUtdmlldyJdXSxkZWNsczo2LHZhcnM6MCxjb25zdHM6W1sxLCJjb250YWluZXIiXSxbMSwidGl0bGUiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKENmKDAsImRpdiIpLENmKDEsImRpdiIsMCksQ2YoMiwiZGl2IiwxKSxQdSgzLCJuUE1JIGlzIGluYWN0aXZlIGJlY2F1c2Ugbm8gZGF0YSBpcyBhdmFpbGFibGUuIiksTWYoKSxDZig0LCJkaXYiKSxQdSg1LCIgVG8gdXNlIHRoZSBuUE1JLCBjYWxjdWxhdGUgblBNSSB2YWx1ZXMsIGFuZCBsb2cgdGhlbSB1c2luZyB0aGUgc3VtbWFyeSB3cml0ZXIuICIpLE1mKCksTWYoKSxNZigpKX0sc3R5bGVzOlsiLmNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0ge1xuICBoZWlnaHQ6IDEwMCU7XG4gIGZvbnQtZmFtaWx5OiBSb2JvdG87XG4gIGZvbnQtc2l6ZTogMTVweDtcbiAgcGFkZGluZzogNTBweDtcbn1cblxuLnRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSB7XG4gIGZvbnQtc2l6ZTogMTM1JTtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIG1hcmdpbi1ib3R0b206IDI1cHg7XG59Il19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKHV4dCxbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJucG1pLWluYWN0aXZlLXZpZXciLHRlbXBsYXRlVXJsOiIuL2luYWN0aXZlX2NvbXBvbmVudC5uZy5odG1sIixzdHlsZVVybHM6WyIuL2luYWN0aXZlX2NvbXBvbmVudC5jc3MiXX1dfV0sbnVsbCxudWxsKTtjb25zdCBneHQ9VlMoe3BsdWdpbkRhdGFMb2FkZWQ6e3N0YXRlOlVFLk5PVF9MT0FERUQsbGFzdExvYWRlZFRpbWVJbk1zOm51bGx9LGFubm90YXRpb25EYXRhOnt9LGVtYmVkZGluZ0RhdGFTZXQ6dm9pZCAwLHJ1blRvTWV0cmljczp7fSxzZWxlY3RlZEFubm90YXRpb25zOltdLGZsYWdnZWRBbm5vdGF0aW9uczpbXSxoaWRkZW5Bbm5vdGF0aW9uczpbXSxhbm5vdGF0aW9uc1JlZ2V4OiIiLG1ldHJpY3NSZWdleDoiIixtZXRyaWNBcml0aG1ldGljOltdLG1ldHJpY0ZpbHRlcnM6e30sc29ydDp7bWV0cmljOiIiLG9yZGVyOlV2dC5ERVNDRU5ESU5HfSxwY0V4cGFuZGVkOiEwLGFubm90YXRpb25zRXhwYW5kZWQ6ITAsc2lkZWJhckV4cGFuZGVkOiEwLHNob3dDb3VudHM6ITAsc2hvd0hpZGRlbkFubm90YXRpb25zOiExLHNpZGViYXJXaWR0aDozMDAsdmlld0FjdGl2ZTpqdnQuREVGQVVMVCxlbWJlZGRpbmdzTWV0cmljOiIiLGVtYmVkZGluZ3NTaWRlYmFyV2lkdGg6NTAwLGVtYmVkZGluZ3NTaWRlYmFyRXhwYW5kZWQ6ITB9LEJTKHV2dCwodD0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtwbHVnaW5EYXRhTG9hZGVkOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LnBsdWdpbkRhdGFMb2FkZWQpLHtzdGF0ZTpVRS5MT0FESU5HfSl9KSkpLEJTKGh2dCwodD0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtwbHVnaW5EYXRhTG9hZGVkOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LnBsdWdpbkRhdGFMb2FkZWQpLHtzdGF0ZTpVRS5GQUlMRUR9KX0pKSksQlMoZ3Z0LCgodCx7YW5ub3RhdGlvbkRhdGE6ZSxtZXRyaWNzOm4sZW1iZWRkaW5nRGF0YVNldDpvfSk9Pntjb25zdCBpPXt9O2Zvcihjb25zdCB0IGluIG4pe2lbdF09W107Zm9yKGNvbnN0IGUgb2Ygblt0XSlUX3QoZSkmJmlbdF0ucHVzaChlKX1yZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtydW5Ub01ldHJpY3M6aSxhbm5vdGF0aW9uRGF0YTplLGVtYmVkZGluZ0RhdGFTZXQ6byxwbHVnaW5EYXRhTG9hZGVkOntzdGF0ZTpVRS5MT0FERUQsbGFzdExvYWRlZFRpbWVJbk1zOkRhdGUubm93KCl9fSl9KSksQlMoYnZ0LCgodCx7YW5ub3RhdGlvbnM6ZX0pPT57Y29uc3Qgbj1uZXcgU2V0KFsuLi50LnNlbGVjdGVkQW5ub3RhdGlvbnMsLi4uZV0pO2lmKG4uc2l6ZT09PXQuc2VsZWN0ZWRBbm5vdGF0aW9ucy5sZW5ndGgpZm9yKGNvbnN0IHQgb2YgZSluLmRlbGV0ZSh0KTtyZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtzZWxlY3RlZEFubm90YXRpb25zOlsuLi5uXX0pfSkpLEJTKHl2dCwoKHQse2Fubm90YXRpb25zOmV9KT0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtzZWxlY3RlZEFubm90YXRpb25zOmV9KSkpLEJTKF92dCwodD0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtzZWxlY3RlZEFubm90YXRpb25zOltdfSkpKSxCUyhDdnQsKCh0LHthbm5vdGF0aW9uczplfSk9Pntjb25zdCBuPW5ldyBTZXQoWy4uLnQuZmxhZ2dlZEFubm90YXRpb25zLC4uLmVdKTtpZihuLnNpemU9PT10LmZsYWdnZWRBbm5vdGF0aW9ucy5sZW5ndGgpZm9yKGNvbnN0IHQgb2YgZSluLmRlbGV0ZSh0KTtyZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtmbGFnZ2VkQW5ub3RhdGlvbnM6Wy4uLm5dLHNlbGVjdGVkQW5ub3RhdGlvbnM6W119KX0pKSxCUyhNdnQsKCh0LHthbm5vdGF0aW9uczplfSk9Pntjb25zdCBuPW5ldyBTZXQoWy4uLnQuaGlkZGVuQW5ub3RhdGlvbnMsLi4uZV0pO2lmKG4uc2l6ZT09PXQuaGlkZGVuQW5ub3RhdGlvbnMubGVuZ3RoKWZvcihjb25zdCB0IG9mIGUpbi5kZWxldGUodCk7cmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7aGlkZGVuQW5ub3RhdGlvbnM6Wy4uLm5dLHNlbGVjdGVkQW5ub3RhdGlvbnM6W119KX0pKSxCUyh2dnQsKCh0LHtyZWdleDplfSk9Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7YW5ub3RhdGlvbnNSZWdleDplfSkpKSxCUyh4dnQsKCh0LHtyZWdleDplfSk9Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7bWV0cmljc1JlZ2V4OmV9KSkpLEJTKE92dCwoKHQse21ldHJpYzplfSk9PntpZih0Lm1ldHJpY0ZpbHRlcnNbZV0pcmV0dXJuIHQ7Y29uc3Qgbj1bXTtyZXR1cm4gMCE9PXQubWV0cmljQXJpdGhtZXRpYy5sZW5ndGgmJm4ucHVzaCh7a2luZDpWdnQuT1BFUkFUT1Isb3BlcmF0b3I6QnZ0LkFORH0pLG4ucHVzaCh7a2luZDpWdnQuTUVUUklDLG1ldHJpYzplfSksT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHttZXRyaWNBcml0aG1ldGljOlsuLi50Lm1ldHJpY0FyaXRobWV0aWMsLi4ubl0sbWV0cmljRmlsdGVyczpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5tZXRyaWNGaWx0ZXJzKSx7W2VdOnttYXg6MSxtaW46LTEsaW5jbHVkZU5hTjohMX19KSxzb3J0OnttZXRyaWM6ZSxvcmRlcjpVdnQuREVTQ0VORElOR319KX0pKSxCUyhQdnQsKCh0LHttZXRyaWM6ZX0pPT57aWYoIXQubWV0cmljRmlsdGVyc1tlXSlyZXR1cm4gdDtsZXQgbj0wLG89MCxpPTI7Y29uc3QgYT10Lm1ldHJpY0ZpbHRlcnMscj1lLHM9WlQoYSxbInN5bWJvbCI9PXR5cGVvZiByP3I6cisiIl0pO2Zvcihjb25zdCBvIGluIHQubWV0cmljQXJpdGhtZXRpYyl7Y29uc3QgaT10Lm1ldHJpY0FyaXRobWV0aWNbb107aS5raW5kPT09VnZ0Lk1FVFJJQyYmaS5tZXRyaWM9PT1lJiYobj1wYXJzZUludChvKSl9cmV0dXJuIDAhPT1uJiYobz1uLTEsaT1uKzEpLE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7bWV0cmljQXJpdGhtZXRpYzpbLi4udC5tZXRyaWNBcml0aG1ldGljLnNsaWNlKDAsbyksLi4udC5tZXRyaWNBcml0aG1ldGljLnNsaWNlKGkpXSxtZXRyaWNGaWx0ZXJzOnN9KX0pKSxCUyh3dnQsKCh0LHttZXRyaWM6ZSxtYXg6bixtaW46byxpbmNsdWRlTmFOOml9KT0+dC5tZXRyaWNGaWx0ZXJzW2VdP09iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7bWV0cmljRmlsdGVyczpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5tZXRyaWNGaWx0ZXJzKSx7W2VdOnttYXg6bixtaW46byxpbmNsdWRlTmFOOml9fSl9KTp0KSksQlMoa3Z0LCgodCx7bWV0cmljOmV9KT0+e2NvbnN0IG49e21ldHJpYzplLG9yZGVyOlV2dC5ERVNDRU5ESU5HfTtyZXR1cm4gdC5zb3J0Lm1ldHJpYz09PWUmJnQuc29ydC5vcmRlcj09PVV2dC5ERVNDRU5ESU5HJiYobi5vcmRlcj1VdnQuQVNDRU5ETkcpLE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7c29ydDpufSl9KSksQlMoU3Z0LCgodCx7YW5ub3RhdGlvbjplfSk9Pntjb25zdCBuPXttZXRyaWM6ZSxvcmRlcjpVdnQuU0lNSUxBUn07cmV0dXJuIHQuc29ydC5tZXRyaWM9PT1lJiZ0LnNvcnQub3JkZXI9PT1VdnQuU0lNSUxBUiYmKG4ub3JkZXI9VXZ0LkRJU1NJTUlMQVIpLE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7c29ydDpufSl9KSksQlMoRHZ0LCh0PT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3BjRXhwYW5kZWQ6IXQucGNFeHBhbmRlZH0pKSksQlMoUnZ0LCh0PT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse2Fubm90YXRpb25zRXhwYW5kZWQ6IXQuYW5ub3RhdGlvbnNFeHBhbmRlZH0pKSksQlMoRXZ0LCh0PT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3NpZGViYXJFeHBhbmRlZDohdC5zaWRlYmFyRXhwYW5kZWR9KSkpLEJTKEF2dCwodD0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtzaG93Q291bnRzOiF0LnNob3dDb3VudHN9KSkpLEJTKFR2dCwodD0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtzaG93SGlkZGVuQW5ub3RhdGlvbnM6IXQuc2hvd0hpZGRlbkFubm90YXRpb25zfSkpKSxCUyhOdnQsKCh0LHttZXRyaWM6ZX0pPT57bGV0IG49anZ0LkVNQkVERElOR1Msbz1lO3JldHVybiBlPT09dC5lbWJlZGRpbmdzTWV0cmljJiYobj1qdnQuREVGQVVMVCxvPSIiKSxPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3ZpZXdBY3RpdmU6bixlbWJlZGRpbmdzTWV0cmljOm99KX0pKSxCUyh6dnQsKCh0LHtzaWRlYmFyV2lkdGg6ZX0pPT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3NpZGViYXJXaWR0aDplfSkpKSxCUyhJdnQsKCh0LHtzaWRlYmFyV2lkdGg6ZX0pPT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse2VtYmVkZGluZ3NTaWRlYmFyV2lkdGg6ZX0pKSksQlMoSHZ0LCh0PT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse2VtYmVkZGluZ3NTaWRlYmFyRXhwYW5kZWQ6IXQuZW1iZWRkaW5nc1NpZGViYXJFeHBhbmRlZH0pKSksQlMoRnZ0LCgodCx7ZGF0YVNldDplfSk9Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7ZW1iZWRkaW5nRGF0YVNldDplfSkpKSk7ZnVuY3Rpb24gaHh0KHQsZSl7cmV0dXJuIGd4dCh0LGUpfWZ1bmN0aW9uIGJ4dCh0LGUpezEmdCYmdmYoMCwibWF0LWljb24iLDcpfWZ1bmN0aW9uIHl4dCh0LGUpe2lmKDEmdCYmKENmKDAsIm1hdC1vcHRpb24iLDgpLFB1KDEpLE1mKCkpLDImdCl7Y29uc3QgdD1lLiRpbXBsaWNpdDtiZigidmFsdWUiLHQpLERjKDEpLHd1KHQpfX1jbGFzcyBfeHR7Y29uc3RydWN0b3IoKXt0aGlzLm9uUmVnZXhGaWx0ZXJWYWx1ZUNoYW5nZT1uZXcgU3ksdGhpcy5vbkFkZEZpbHRlcj1uZXcgU3l9b25PcHRpb25TZWxlY3RlZCh0LGUpe3RoaXMub25BZGRGaWx0ZXIuZW1pdCh0Lm9wdGlvbi52YWx1ZSksZS52YWx1ZT0iIn19X3h0Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxfeHQpfSxfeHQuybVjbXA9c28oe3R5cGU6X3h0LHNlbGVjdG9yczpbWyJtZXRyaWMtc2VhcmNoLWNvbXBvbmVudCJdXSxob3N0VmFyczoyLGhvc3RCaW5kaW5nczpmdW5jdGlvbiB0KGUsbil7MiZlJiZjdSgidmFsaWQiLG4uaXNSZWdleEZpbHRlclZhbGlkKX0saW5wdXRzOntjb21wbGV0aW9uczoiY29tcGxldGlvbnMiLHJlZ2V4RmlsdGVyVmFsdWU6InJlZ2V4RmlsdGVyVmFsdWUiLGlzUmVnZXhGaWx0ZXJWYWxpZDoiaXNSZWdleEZpbHRlclZhbGlkIn0sb3V0cHV0czp7b25SZWdleEZpbHRlclZhbHVlQ2hhbmdlOiJvblJlZ2V4RmlsdGVyVmFsdWVDaGFuZ2UiLG9uQWRkRmlsdGVyOiJvbkFkZEZpbHRlciJ9LGRlY2xzOjcsdmFyczo0LGNvbnN0czpbWyJzdmdJY29uIiwic2VhcmNoXzI0cHgiXSxbIm1hdElucHV0IiwiIiwiYXV0b2NvbXBsZXRlIiwib2ZmIiwicGxhY2Vob2xkZXIiLCJBZGQgTWV0cmljIEZpbHRlciIsMywidmFsdWUiLCJtYXRBdXRvY29tcGxldGUiLCJpbnB1dCJdLFsibWF0SW5wdXQiLCIiXSxbInN2Z0ljb24iLCJlcnJvcl8yNHB4IiwiY2xhc3MiLCJlcnJvci1pY29uIiwibWF0VG9vbHRpcCIsIkludmFsaWQgcmVnZXggZmlsdGVyLiBUaGUgcmVzdWx0IG1heSBiZSBzdGFsZS4iLDQsIm5nSWYiXSxbImF1dG9BY3RpdmVGaXJzdE9wdGlvbiIsIiIsMywib3B0aW9uU2VsZWN0ZWQiXSxbImZpbHRlck1hdGNoZXMiLCJtYXRBdXRvY29tcGxldGUiXSxbMywidmFsdWUiLDQsIm5nRm9yIiwibmdGb3JPZiJdLFsic3ZnSWNvbiIsImVycm9yXzI0cHgiLCJtYXRUb29sdGlwIiwiSW52YWxpZCByZWdleCBmaWx0ZXIuIFRoZSByZXN1bHQgbWF5IGJlIHN0YWxlLiIsMSwiZXJyb3ItaWNvbiJdLFszLCJ2YWx1ZSJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7aWYoMSZlKXtjb25zdCB0PXdmKCk7dmYoMCwibWF0LWljb24iLDApLENmKDEsImlucHV0IiwxLDIpLFJmKCJpbnB1dCIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4ub25SZWdleEZpbHRlclZhbHVlQ2hhbmdlLmVtaXQoZS50YXJnZXQudmFsdWUpfSkpLE1mKCksSG0oMyxieHQsMSwwLCJtYXQtaWNvbiIsMyksQ2YoNCwibWF0LWF1dG9jb21wbGV0ZSIsNCw1KSxSZigib3B0aW9uU2VsZWN0ZWQiLChmdW5jdGlvbiBlKG8pe1BpKHQpO2NvbnN0IGk9Rm0oMik7cmV0dXJuIG4ub25PcHRpb25TZWxlY3RlZChvLGkpfSkpLEhtKDYseXh0LDIsMiwibWF0LW9wdGlvbiIsNiksTWYoKX1pZigyJmUpe2NvbnN0IHQ9Rm0oNSk7RGMoMSksYmYoInZhbHVlIixuLnJlZ2V4RmlsdGVyVmFsdWUpKCJtYXRBdXRvY29tcGxldGUiLHQpLERjKDIpLGJmKCJuZ0lmIiwhbi5pc1JlZ2V4RmlsdGVyVmFsaWQpLERjKDMpLGJmKCJuZ0Zvck9mIixuLmNvbXBsZXRpb25zKX19LGRpcmVjdGl2ZXM6W01xLEFaLFkzLFB2LEYzLHh2LFBMXSxzdHlsZXM6WycubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTJweDtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1iYWRnZS1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo5cHh9Lm1hdC1iYWRnZS1sYXJnZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4fS5tYXQtaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWhlYWRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAyNHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE2cHgvMjhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE1cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjgzKS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1oNltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC42NykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtYm9keS1zdHJvbmdbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MCAwIDEycHh9Lm1hdC1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FwdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTJweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6MzAwIDExMnB4LzExMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wNWVtO21hcmdpbjowIDAgNTZweH0ubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNTZweC81NnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMmVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNDVweC80OHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMDVlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDM0cHgvNDBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgNjRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FyZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjBweH0ubWF0LWNhcmQtc3VidGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcmQtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2hlY2tib3gtbGF5b3V0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC10cmFpbGluZy1pY29uLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmUubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxOHB4fS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jYWxlbmRhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FsZW5kYXItYm9keVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEzcHh9Lm1hdC1jYWxlbmRhci1ib2R5LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgdGhbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWRpYWxvZy10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMTI1O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTUwJTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjVlbTt3aWR0aDoxLjVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW07bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi41ZW0gMDtib3JkZXItdG9wOi44NDM3NWVtIHNvbGlkIHRyYW5zcGFyZW50fS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3RvcDotMC44NDM3NWVtO3BhZGRpbmctdG9wOi44NDM3NWVtfS5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjc1JTttYXJnaW4tdG9wOi42NjY2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNzkxNjY2NjY2N2VtKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi40Mzc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAycHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyM2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMjgxMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi41NDE2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNjY2NjY2NjY2N2VtKX1AbWVkaWEgcHJpbnR7Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIyZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIxZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMmVtKSBzY2FsZSgwLjc1KX19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjI1ZW0gMCAuNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4wOTM3NWVtO21hcmdpbi10b3A6LTAuNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MWVtIDAgMWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjg0Mzc1ZW07bWFyZ2luLXRvcDotMC4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH1pbnB1dC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDotMC4wNjI1ZW19Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1wYWdlLXNpemVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4fS5tYXQtcmFkaW8tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3RbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbX0ubWF0LXNsaWRlLXRvZ2dsZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXN0ZXBwZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc3RlcC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtc3RlcC1zdWItbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0Om5vcm1hbH0ubWF0LXN0ZXAtbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtc3RlcC1sYWJlbC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdGFiLWdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjB9Lm1hdC10b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEwcHg7cGFkZGluZy10b3A6NnB4O3BhZGRpbmctYm90dG9tOjZweH0ubWF0LXRvb2x0aXAtaGFuZHNldFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7cGFkZGluZy10b3A6OHB4O3BhZGRpbmctYm90dG9tOjhweH0ubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTZweH0ubWF0LW9wdGdyb3VwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LXNpbXBsZS1zbmFja2Jhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4fS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbltfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MTtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRyZWVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbmVzdGVkLXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtc2l6ZToxNHB4fS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdOm5vdCg6ZW1wdHkpe3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApfS5tYXQtcmlwcGxlLm1hdC1yaXBwbGUtdW5ib3VuZGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzp2aXNpYmxlfS5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO2JvcmRlci1yYWRpdXM6NTAlO3BvaW50ZXItZXZlbnRzOm5vbmU7dHJhbnNpdGlvbjpvcGFjaXR5LHRyYW5zZm9ybSAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7dHJhbnNmb3JtOnNjYWxlKDApfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpub25lfS5jZGstdmlzdWFsbHktaGlkZGVuW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6MDtjbGlwOnJlY3QoMCAwIDAgMCk7aGVpZ2h0OjFweDttYXJnaW46LTFweDtvdmVyZmxvdzpoaWRkZW47cGFkZGluZzowO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjFweDt3aGl0ZS1zcGFjZTpub3dyYXA7b3V0bGluZTowOy13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BvaW50ZXItZXZlbnRzOm5vbmU7dG9wOjA7bGVmdDowO2hlaWdodDoxMDAlO3dpZHRoOjEwMCV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdOmVtcHR5e2Rpc3BsYXk6bm9uZX0uY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LXBhbmVbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3BvaW50ZXItZXZlbnRzOmF1dG87Ym94LXNpemluZzpib3JkZXItYm94O3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7bWF4LXdpZHRoOjEwMCU7bWF4LWhlaWdodDoxMDAlfS5jZGstb3ZlcmxheS1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7bGVmdDowO3JpZ2h0OjA7ei1pbmRleDoxMDAwO3BvaW50ZXItZXZlbnRzOmF1dG87LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50O3RyYW5zaXRpb246b3BhY2l0eSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKTtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5Oi42fS5jZGstb3ZlcmxheS1kYXJrLWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjMyKX0uY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTowfS5jZGstb3ZlcmxheS1jb25uZWN0ZWQtcG9zaXRpb24tYm91bmRpbmctYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjttaW4td2lkdGg6MXB4O21pbi1oZWlnaHQ6MXB4fS5jZGstZ2xvYmFsLXNjcm9sbGJsb2NrW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt3aWR0aDoxMDAlO292ZXJmbG93LXk6c2Nyb2xsfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZVtfbmdjb250ZW50LSVDT01QJV17cmVzaXplOm5vbmV9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZ1tfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6YXV0byAhaW1wb3J0YW50O292ZXJmbG93OmhpZGRlbiAhaW1wb3J0YW50fXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmctZmlyZWZveFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6MCAhaW1wb3J0YW50fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnR7fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5ke30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxse2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydCAwcyAxbXN9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06bm90KDotd2Via2l0LWF1dG9maWxsKXthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5kIDBzIDFtc30ubWF0LWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1tZGMtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX1tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17ZmxleDpub25lO21hcmdpbi1yaWdodDo1cHh9W19uZ2hvc3QtJUNPTVAlXXtkaXNwbGF5OmZsZXg7cGFkZGluZzowIDEwcHg7cG9zaXRpb246cmVsYXRpdmU7Zm9udC1zaXplOi45ZW19W19uZ2hvc3QtJUNPTVAlXTpub3QoLnZhbGlkKXtjb2xvcjojYzYyODI4fVtfbmdob3N0LSVDT01QJV06bm90KC52YWxpZCkgICBpbnB1dFtfbmdjb250ZW50LSVDT01QJV17Y2FyZXQtY29sb3I6Y3VycmVudENvbG9yfSddLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihfeHQsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoibWV0cmljLXNlYXJjaC1jb21wb25lbnQiLHRlbXBsYXRlVXJsOiIuL21ldHJpY19zZWFyY2hfY29tcG9uZW50Lm5nLmh0bWwiLHN0eWxlVXJsczpbIi4vbWV0cmljX3NlYXJjaF9jb21wb25lbnQuY3NzIl0sY2hhbmdlRGV0ZWN0aW9uOmpuLk9uUHVzaH1dfV0sbnVsbCx7Y29tcGxldGlvbnM6W3t0eXBlOlJffV0scmVnZXhGaWx0ZXJWYWx1ZTpbe3R5cGU6Ul99XSxpc1JlZ2V4RmlsdGVyVmFsaWQ6W3t0eXBlOkFfLGFyZ3M6WyJjbGFzcy52YWxpZCJdfSx7dHlwZTpSX31dLG9uUmVnZXhGaWx0ZXJWYWx1ZUNoYW5nZTpbe3R5cGU6RV99XSxvbkFkZEZpbHRlcjpbe3R5cGU6RV99XX0pO2NsYXNzIEN4dHtjb25zdHJ1Y3Rvcih0KXt0aGlzLnN0b3JlPXQsdGhpcy5tZXRyaWNzUmVnZXgkPXRoaXMuc3RvcmUuc2VsZWN0KCR2dCksdGhpcy5hY3RpdmVSdW5zJD10aGlzLnN0b3JlLnBpcGUoclMoX0kpKS5waXBlKFZ0KCh0PT50P0FycmF5LmZyb20odC5lbnRyaWVzKCkpLmZpbHRlcigodD0+dFsxXSkpLm1hcCgodD0+dFswXSkpOltdKSkpLHRoaXMubWV0cmljc0ZvckFjdGl2ZVJ1bnMkPUt0KHRoaXMuYWN0aXZlUnVucyQsdGhpcy5zdG9yZS5zZWxlY3QocXZ0KSkucGlwZShWdCgoKFt0LGVdKT0+e2NvbnN0IG49bmV3IFNldDtmb3IoY29uc3QgbyBvZiB0KWlmKGVbb10pZm9yKGNvbnN0IHQgb2YgZVtvXSluLmFkZCh0KTtyZXR1cm5bLi4ubl19KSkpLHRoaXMuaXNNZXRyaWNzRmlsdGVyVmFsaWQkPXRoaXMubWV0cmljc1JlZ2V4JC5waXBlKFZ0KCh0PT57dHJ5e3JldHVybiBCb29sZWFuKG5ldyBSZWdFeHAodCkpfWNhdGNoKHQpe3JldHVybiExfX0pKSksdGhpcy5tZXRyaWNGaWx0ZXJLZXlzJD10aGlzLnN0b3JlLnBpcGUoclMoZXh0KSkucGlwZShWdCgodD0+T2JqZWN0LmtleXModCkpKSksdGhpcy5jb21wbGV0aW9ucyQ9S3QodGhpcy5tZXRyaWNzRm9yQWN0aXZlUnVucyQsdGhpcy5tZXRyaWNzUmVnZXgkLHRoaXMubWV0cmljRmlsdGVyS2V5cyQpLnBpcGUoVnQoKChbdCxlLG5dKT0+e2NvbnN0IG89dC5maWx0ZXIoKHQ9PiFuLmluY2x1ZGVzKHQpKSk7dHJ5e2NvbnN0IHQ9bmV3IFJlZ0V4cChlLCJpIik7cmV0dXJuIG8uZmlsdGVyKChlPT50LnRlc3QoZSkpKS5zb3J0KCl9Y2F0Y2godCl7cmV0dXJuW119fSkpKX1vbkZpbHRlckNoYW5nZSh0KXt0aGlzLnN0b3JlLmRpc3BhdGNoKHh2dCh7cmVnZXg6dH0pKX1vbkFkZEZpbHRlcih0KXt0aGlzLnN0b3JlLmRpc3BhdGNoKE92dCh7bWV0cmljOnR9KSksdGhpcy5zdG9yZS5kaXNwYXRjaCh4dnQoe3JlZ2V4OiIifSkpfX1mdW5jdGlvbiBNeHQodCxlLG4pe2NvbnN0IG89W1tlLC4uLm5dXTtpZighbi5sZW5ndGh8fCF0Lmxlbmd0aCl7cmV0dXJuImRhdGE6dGV4dC9jc3Y7Y2hhcnNldD11dGYtOCwiK28ubWFwKCh0PT50LmpvaW4oIiwiKSkpLmpvaW4oIlxuIil9Y29uc3QgaT1uLm1hcCgodD0+el90KHQpKSk7Zm9yKGNvbnN0W24sYV1vZiB0KXtjb25zdCB0PWEuZmlsdGVyKCh0PT50LnJ1bj09PWUpKTtpZih0Lmxlbmd0aCl7Y29uc3QgZT1bbl07Zm9yKGNvbnN0IG4gb2YgaSl7Y29uc3Qgbz10LmZpbmQoKHQ9PnQubWV0cmljPT09bikpO2UucHVzaCh2b2lkIDA9PT1vPyJudWxsIjpgJHtvLm5QTUlWYWx1ZX1gKX1vLnB1c2goZSl9fXJldHVybiJkYXRhOnRleHQvY3N2O2NoYXJzZXQ9dXRmLTgsIitvLm1hcCgodD0+dC5qb2luKCIsIikpKS5qb2luKCJcbiIpfUN4dC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8Q3h0KShnZihpUykpfSxDeHQuybVjbXA9c28oe3R5cGU6Q3h0LHNlbGVjdG9yczpbWyJucG1pLW1ldHJpYy1zZWFyY2giXV0sZGVjbHM6NCx2YXJzOjksY29uc3RzOltbMywicmVnZXhGaWx0ZXJWYWx1ZSIsImNvbXBsZXRpb25zIiwiaXNSZWdleEZpbHRlclZhbGlkIiwib25SZWdleEZpbHRlclZhbHVlQ2hhbmdlIiwib25BZGRGaWx0ZXIiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKENmKDAsIm1ldHJpYy1zZWFyY2gtY29tcG9uZW50IiwwKSxSZigib25SZWdleEZpbHRlclZhbHVlQ2hhbmdlIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5vbkZpbHRlckNoYW5nZShlKX0pKSgib25BZGRGaWx0ZXIiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLm9uQWRkRmlsdGVyKGUpfSkpLF95KDEsImFzeW5jIiksX3koMiwiYXN5bmMiKSxfeSgzLCJhc3luYyIpLE1mKCkpLDImZSYmYmYoInJlZ2V4RmlsdGVyVmFsdWUiLEN5KDEsMyxuLm1ldHJpY3NSZWdleCQpKSgiY29tcGxldGlvbnMiLEN5KDIsNSxuLmNvbXBsZXRpb25zJCkpKCJpc1JlZ2V4RmlsdGVyVmFsaWQiLEN5KDMsNyxuLmlzTWV0cmljc0ZpbHRlclZhbGlkJCkpfSxkaXJlY3RpdmVzOltfeHRdLHBpcGVzOltWdl0sZW5jYXBzdWxhdGlvbjoyLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihDeHQsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoibnBtaS1tZXRyaWMtc2VhcmNoIix0ZW1wbGF0ZTonXG4gICAgPG1ldHJpYy1zZWFyY2gtY29tcG9uZW50XG4gICAgICBbcmVnZXhGaWx0ZXJWYWx1ZV09Im1ldHJpY3NSZWdleCQgfCBhc3luYyJcbiAgICAgIFtjb21wbGV0aW9uc109ImNvbXBsZXRpb25zJCB8IGFzeW5jIlxuICAgICAgW2lzUmVnZXhGaWx0ZXJWYWxpZF09ImlzTWV0cmljc0ZpbHRlclZhbGlkJCB8IGFzeW5jIlxuICAgICAgKG9uUmVnZXhGaWx0ZXJWYWx1ZUNoYW5nZSk9Im9uRmlsdGVyQ2hhbmdlKCRldmVudCkiXG4gICAgICAob25BZGRGaWx0ZXIpPSJvbkFkZEZpbHRlcigkZXZlbnQpIlxuICAgID48L21ldHJpYy1zZWFyY2gtY29tcG9uZW50PlxuICAnLGNoYW5nZURldGVjdGlvbjpqbi5PblB1c2h9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTppU31dfSksbnVsbCk7Y29uc3Qgdnh0PWZ1bmN0aW9uKHQpe3JldHVybnsiYWN0aXZlLWJ1dHRvbiI6dH19O2NsYXNzIHh4dHtkb3dubG9hZFJlc3VsdHMoKXtmb3IoY29uc3QgdCBvZiB0aGlzLnJ1bnMpe2NvbnN0IGU9TXh0KHRoaXMuZmxhZ2dlZERhdGEsdCx0aGlzLm1ldHJpY3MpLG49ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYSIpO24uc2V0QXR0cmlidXRlKCJocmVmIixlKSxuLnNldEF0dHJpYnV0ZSgiZG93bmxvYWQiLGByZXBvcnRfJHt0fS5jc3ZgKSxuLmNsaWNrKCl9fX14eHQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHh4dCl9LHh4dC7JtWNtcD1zbyh7dHlwZTp4eHQsc2VsZWN0b3JzOltbInJlc3VsdHMtZG93bmxvYWQtY29tcG9uZW50Il1dLGlucHV0czp7bnVtRmxhZ2dlZEFubm90YXRpb25zOiJudW1GbGFnZ2VkQW5ub3RhdGlvbnMiLHJ1bnM6InJ1bnMiLGZsYWdnZWREYXRhOiJmbGFnZ2VkRGF0YSIsbWV0cmljczoibWV0cmljcyJ9LGRlY2xzOjQsdmFyczo1LGNvbnN0czpbWyJtYXQtc3Ryb2tlZC1idXR0b24iLCIiLCJ0aXRsZSIsIkV4cG9ydCBDU1YgcmVwb3J0cyBvZiBhbGwgZmxhZ2dlZCBhbm5vdGF0aW9ucy4gV2lsbCBnZW5lcmF0ZSBvbmUgQ1NWIHBlciBhY3RpdmUgcnVuLiIsMywiZGlzYWJsZWQiLCJuZ0NsYXNzIiwiY2xpY2siXSxbMSwiYnV0dG9uLWNvbnRlbnRzIl0sWyJzdmdJY29uIiwiZ2V0X2FwcF8yNHB4Il1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihDZigwLCJidXR0b24iLDApLFJmKCJjbGljayIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5kb3dubG9hZFJlc3VsdHMoKX0pKSxDZigxLCJzcGFuIiwxKSx2ZigyLCJtYXQtaWNvbiIsMiksUHUoMyksTWYoKSxNZigpKSwyJmUmJihiZigiZGlzYWJsZWQiLDA9PT1uLm51bUZsYWdnZWRBbm5vdGF0aW9ucykoIm5nQ2xhc3MiLGl5KDMsdnh0LG4ubnVtRmxhZ2dlZEFubm90YXRpb25zPjApKSxEYygzKSxrdSgiIEZsYWdnZWQgUm93cyAoIixuLm51bUZsYWdnZWRBbm5vdGF0aW9ucywiKSAiKSl9LGRpcmVjdGl2ZXM6W05MLEN2LE1xXSxzdHlsZXM6WycubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTJweDtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1iYWRnZS1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo5cHh9Lm1hdC1iYWRnZS1sYXJnZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4fS5tYXQtaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWhlYWRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAyNHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE2cHgvMjhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE1cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjgzKS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1oNltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC42NykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtYm9keS1zdHJvbmdbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MCAwIDEycHh9Lm1hdC1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FwdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTJweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6MzAwIDExMnB4LzExMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wNWVtO21hcmdpbjowIDAgNTZweH0ubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNTZweC81NnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMmVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNDVweC80OHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMDVlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDM0cHgvNDBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgNjRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FyZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjBweH0ubWF0LWNhcmQtc3VidGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcmQtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2hlY2tib3gtbGF5b3V0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC10cmFpbGluZy1pY29uLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmUubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxOHB4fS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jYWxlbmRhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FsZW5kYXItYm9keVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEzcHh9Lm1hdC1jYWxlbmRhci1ib2R5LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgdGhbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWRpYWxvZy10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMTI1O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTUwJTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjVlbTt3aWR0aDoxLjVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW07bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi41ZW0gMDtib3JkZXItdG9wOi44NDM3NWVtIHNvbGlkIHRyYW5zcGFyZW50fS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3RvcDotMC44NDM3NWVtO3BhZGRpbmctdG9wOi44NDM3NWVtfS5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjc1JTttYXJnaW4tdG9wOi42NjY2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNzkxNjY2NjY2N2VtKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi40Mzc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAycHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyM2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMjgxMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi41NDE2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNjY2NjY2NjY2N2VtKX1AbWVkaWEgcHJpbnR7Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIyZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIxZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMmVtKSBzY2FsZSgwLjc1KX19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjI1ZW0gMCAuNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4wOTM3NWVtO21hcmdpbi10b3A6LTAuNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MWVtIDAgMWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjg0Mzc1ZW07bWFyZ2luLXRvcDotMC4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH1pbnB1dC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDotMC4wNjI1ZW19Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1wYWdlLXNpemVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4fS5tYXQtcmFkaW8tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3RbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbX0ubWF0LXNsaWRlLXRvZ2dsZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXN0ZXBwZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc3RlcC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtc3RlcC1zdWItbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0Om5vcm1hbH0ubWF0LXN0ZXAtbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtc3RlcC1sYWJlbC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdGFiLWdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjB9Lm1hdC10b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEwcHg7cGFkZGluZy10b3A6NnB4O3BhZGRpbmctYm90dG9tOjZweH0ubWF0LXRvb2x0aXAtaGFuZHNldFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7cGFkZGluZy10b3A6OHB4O3BhZGRpbmctYm90dG9tOjhweH0ubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTZweH0ubWF0LW9wdGdyb3VwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LXNpbXBsZS1zbmFja2Jhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4fS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbltfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MTtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRyZWVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbmVzdGVkLXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtc2l6ZToxNHB4fS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdOm5vdCg6ZW1wdHkpe3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApfS5tYXQtcmlwcGxlLm1hdC1yaXBwbGUtdW5ib3VuZGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzp2aXNpYmxlfS5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO2JvcmRlci1yYWRpdXM6NTAlO3BvaW50ZXItZXZlbnRzOm5vbmU7dHJhbnNpdGlvbjpvcGFjaXR5LHRyYW5zZm9ybSAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7dHJhbnNmb3JtOnNjYWxlKDApfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpub25lfS5jZGstdmlzdWFsbHktaGlkZGVuW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6MDtjbGlwOnJlY3QoMCAwIDAgMCk7aGVpZ2h0OjFweDttYXJnaW46LTFweDtvdmVyZmxvdzpoaWRkZW47cGFkZGluZzowO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjFweDt3aGl0ZS1zcGFjZTpub3dyYXA7b3V0bGluZTowOy13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BvaW50ZXItZXZlbnRzOm5vbmU7dG9wOjA7bGVmdDowO2hlaWdodDoxMDAlO3dpZHRoOjEwMCV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdOmVtcHR5e2Rpc3BsYXk6bm9uZX0uY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LXBhbmVbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3BvaW50ZXItZXZlbnRzOmF1dG87Ym94LXNpemluZzpib3JkZXItYm94O3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7bWF4LXdpZHRoOjEwMCU7bWF4LWhlaWdodDoxMDAlfS5jZGstb3ZlcmxheS1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7bGVmdDowO3JpZ2h0OjA7ei1pbmRleDoxMDAwO3BvaW50ZXItZXZlbnRzOmF1dG87LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50O3RyYW5zaXRpb246b3BhY2l0eSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKTtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5Oi42fS5jZGstb3ZlcmxheS1kYXJrLWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjMyKX0uY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTowfS5jZGstb3ZlcmxheS1jb25uZWN0ZWQtcG9zaXRpb24tYm91bmRpbmctYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjttaW4td2lkdGg6MXB4O21pbi1oZWlnaHQ6MXB4fS5jZGstZ2xvYmFsLXNjcm9sbGJsb2NrW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt3aWR0aDoxMDAlO292ZXJmbG93LXk6c2Nyb2xsfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZVtfbmdjb250ZW50LSVDT01QJV17cmVzaXplOm5vbmV9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZ1tfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6YXV0byAhaW1wb3J0YW50O292ZXJmbG93OmhpZGRlbiAhaW1wb3J0YW50fXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmctZmlyZWZveFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6MCAhaW1wb3J0YW50fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnR7fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5ke30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxse2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydCAwcyAxbXN9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06bm90KDotd2Via2l0LWF1dG9maWxsKXthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5kIDBzIDFtc30ubWF0LWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1tZGMtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0uYWN0aXZlLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwO2JvcmRlcjoxcHggc29saWQgI2ViZWJlYjtjb2xvcjojZmZmfS5idXR0b24tY29udGVudHNbX25nY29udGVudC0lQ09NUCVde2FsaWduLWl0ZW1zOmNlbnRlcjtkaXNwbGF5OmZsZXg7dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlfW1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tcmlnaHQ6NnB4fSddLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYih4eHQsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoicmVzdWx0cy1kb3dubG9hZC1jb21wb25lbnQiLHRlbXBsYXRlVXJsOiIuL3Jlc3VsdHNfZG93bmxvYWRfY29tcG9uZW50Lm5nLmh0bWwiLHN0eWxlVXJsczpbIi4vcmVzdWx0c19kb3dubG9hZF9jb21wb25lbnQuY3NzIl0sY2hhbmdlRGV0ZWN0aW9uOmpuLk9uUHVzaH1dfV0sbnVsbCx7bnVtRmxhZ2dlZEFubm90YXRpb25zOlt7dHlwZTpSX31dLHJ1bnM6W3t0eXBlOlJffV0sZmxhZ2dlZERhdGE6W3t0eXBlOlJffV0sbWV0cmljczpbe3R5cGU6Ul99XX0pO2NsYXNzIE94dHtjb25zdHJ1Y3Rvcih0KXt0aGlzLnN0b3JlPXQsdGhpcy5mbGFnZ2VkQW5ub3RhdGlvbnMkPXRoaXMuc3RvcmUuc2VsZWN0KEt2dCksdGhpcy5udW1GbGFnZ2VkQW5ub3RhdGlvbnMkPXRoaXMuZmxhZ2dlZEFubm90YXRpb25zJC5waXBlKFZ0KCh0PT50Lmxlbmd0aCkpKSx0aGlzLmFjdGl2ZVJ1bnMkPXRoaXMuc3RvcmUuc2VsZWN0KF9JKS5waXBlKFZ0KCh0PT50P0FycmF5LmZyb20odC5lbnRyaWVzKCkpLmZpbHRlcigodD0+dFsxXSkpLm1hcCgodD0+dFswXSkpOltdKSkpLHRoaXMuZmxhZ2dlZERhdGEkPUt0KFt0aGlzLnN0b3JlLnNlbGVjdChZdnQpLHRoaXMuZmxhZ2dlZEFubm90YXRpb25zJF0pLnBpcGUoVnQoKChbdCxlXSk9Pntjb25zdCBuPW5ldyBTZXQoZSk7cmV0dXJuIE9iamVjdC5lbnRyaWVzKHQpLmZpbHRlcigodD0+bi5oYXModFswXSkpKX0pKSksdGhpcy5tZXRyaWNzJD1LdChbdGhpcy5zdG9yZS5zZWxlY3QocXZ0KSx0aGlzLmFjdGl2ZVJ1bnMkLHRoaXMuc3RvcmUuc2VsZWN0KGV4dCldKS5waXBlKFZ0KCgoW3QsZSxuXSk9PntsZXQgbz1PYmplY3Qua2V5cyhuKTtmb3IoY29uc3QgbiBvZiBlKXRbbl0mJihvPW8uY29uY2F0KHRbbl0uZmlsdGVyKCh0PT5OX3QodCkpKSkpO3JldHVybiBvPVsuLi5uZXcgU2V0KG8pXSxvfSkpKX19T3h0Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxPeHQpKGdmKGlTKSl9LE94dC7JtWNtcD1zbyh7dHlwZTpPeHQsc2VsZWN0b3JzOltbIm5wbWktcmVzdWx0cy1kb3dubG9hZCJdXSxkZWNsczo1LHZhcnM6MTIsY29uc3RzOltbMywibnVtRmxhZ2dlZEFubm90YXRpb25zIiwicnVucyIsImZsYWdnZWREYXRhIiwibWV0cmljcyJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYodmYoMCwicmVzdWx0cy1kb3dubG9hZC1jb21wb25lbnQiLDApLF95KDEsImFzeW5jIiksX3koMiwiYXN5bmMiKSxfeSgzLCJhc3luYyIpLF95KDQsImFzeW5jIikpLDImZSYmYmYoIm51bUZsYWdnZWRBbm5vdGF0aW9ucyIsQ3koMSw0LG4ubnVtRmxhZ2dlZEFubm90YXRpb25zJCkpKCJydW5zIixDeSgyLDYsbi5hY3RpdmVSdW5zJCkpKCJmbGFnZ2VkRGF0YSIsQ3koMyw4LG4uZmxhZ2dlZERhdGEkKSkoIm1ldHJpY3MiLEN5KDQsMTAsbi5tZXRyaWNzJCkpfSxkaXJlY3RpdmVzOlt4eHRdLHBpcGVzOltWdl0sZW5jYXBzdWxhdGlvbjoyLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihPeHQsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoibnBtaS1yZXN1bHRzLWRvd25sb2FkIix0ZW1wbGF0ZTonXG4gICAgPHJlc3VsdHMtZG93bmxvYWQtY29tcG9uZW50XG4gICAgICBbbnVtRmxhZ2dlZEFubm90YXRpb25zXT0ibnVtRmxhZ2dlZEFubm90YXRpb25zJCB8IGFzeW5jIlxuICAgICAgW3J1bnNdPSJhY3RpdmVSdW5zJCB8IGFzeW5jIlxuICAgICAgW2ZsYWdnZWREYXRhXT0iZmxhZ2dlZERhdGEkIHwgYXN5bmMiXG4gICAgICBbbWV0cmljc109Im1ldHJpY3MkIHwgYXN5bmMiXG4gICAgPjwvcmVzdWx0cy1kb3dubG9hZC1jb21wb25lbnQ+XG4gICcsY2hhbmdlRGV0ZWN0aW9uOmpuLk9uUHVzaH1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmlTfV19KSxudWxsKTtjb25zdCBQeHQ9bmV3IGVyKCJNYXRDaGlwUmVtb3ZlIiksd3h0PW5ldyBlcigiTWF0Q2hpcEF2YXRhciIpLGt4dD1uZXcgZXIoIk1hdENoaXBUcmFpbGluZ0ljb24iKTtjb25zdCBTeHQ9RkYoSUYoSEYoY2xhc3N7Y29uc3RydWN0b3IodCl7dGhpcy5fZWxlbWVudFJlZj10fX0pLCJwcmltYXJ5IiksLTEpO2NsYXNzIER4dHt9RHh0Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxEeHQpfSxEeHQuybVkaXI9aG8oe3R5cGU6RHh0LHNlbGVjdG9yczpbWyJtYXQtY2hpcC1hdmF0YXIiXSxbIiIsIm1hdENoaXBBdmF0YXIiLCIiXV0saG9zdEF0dHJzOlsxLCJtYXQtY2hpcC1hdmF0YXIiXSxmZWF0dXJlczpbamgoW3twcm92aWRlOnd4dCx1c2VFeGlzdGluZzpEeHR9XSldfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihEeHQsW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3RvcjoibWF0LWNoaXAtYXZhdGFyLCBbbWF0Q2hpcEF2YXRhcl0iLGhvc3Q6e2NsYXNzOiJtYXQtY2hpcC1hdmF0YXIifSxwcm92aWRlcnM6W3twcm92aWRlOnd4dCx1c2VFeGlzdGluZzpEeHR9XX1dfV0sbnVsbCxudWxsKTtjbGFzcyBSeHR7fVJ4dC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8Unh0KX0sUnh0Lsm1ZGlyPWhvKHt0eXBlOlJ4dCxzZWxlY3RvcnM6W1sibWF0LWNoaXAtdHJhaWxpbmctaWNvbiJdLFsiIiwibWF0Q2hpcFRyYWlsaW5nSWNvbiIsIiJdXSxob3N0QXR0cnM6WzEsIm1hdC1jaGlwLXRyYWlsaW5nLWljb24iXSxmZWF0dXJlczpbamgoW3twcm92aWRlOmt4dCx1c2VFeGlzdGluZzpSeHR9XSldfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihSeHQsW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3RvcjoibWF0LWNoaXAtdHJhaWxpbmctaWNvbiwgW21hdENoaXBUcmFpbGluZ0ljb25dIixob3N0OntjbGFzczoibWF0LWNoaXAtdHJhaWxpbmctaWNvbiJ9LHByb3ZpZGVyczpbe3Byb3ZpZGU6a3h0LHVzZUV4aXN0aW5nOlJ4dH1dfV19XSxudWxsLG51bGwpO2NsYXNzIEV4dCBleHRlbmRzIFN4dHtjb25zdHJ1Y3Rvcih0LGUsbixvLGksYSxyLHMpe3N1cGVyKHQpLHRoaXMuX25nWm9uZT1lLHRoaXMuX2NoYW5nZURldGVjdG9yUmVmPWksdGhpcy5faGFzRm9jdXM9ITEsdGhpcy5jaGlwTGlzdFNlbGVjdGFibGU9ITAsdGhpcy5fY2hpcExpc3RNdWx0aXBsZT0hMSx0aGlzLl9jaGlwTGlzdERpc2FibGVkPSExLHRoaXMuX3NlbGVjdGVkPSExLHRoaXMuX3NlbGVjdGFibGU9ITAsdGhpcy5fZGlzYWJsZWQ9ITEsdGhpcy5fcmVtb3ZhYmxlPSEwLHRoaXMuX29uRm9jdXM9bmV3IEIsdGhpcy5fb25CbHVyPW5ldyBCLHRoaXMuc2VsZWN0aW9uQ2hhbmdlPW5ldyBTeSx0aGlzLmRlc3Ryb3llZD1uZXcgU3ksdGhpcy5yZW1vdmVkPW5ldyBTeSx0aGlzLl9hZGRIb3N0Q2xhc3NOYW1lKCksdGhpcy5fY2hpcFJpcHBsZVRhcmdldD1hLmNyZWF0ZUVsZW1lbnQoImRpdiIpLHRoaXMuX2NoaXBSaXBwbGVUYXJnZXQuY2xhc3NMaXN0LmFkZCgibWF0LWNoaXAtcmlwcGxlIiksdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2NoaXBSaXBwbGVUYXJnZXQpLHRoaXMuX2NoaXBSaXBwbGU9bmV3IGRMKHRoaXMsZSx0aGlzLl9jaGlwUmlwcGxlVGFyZ2V0LG4pLHRoaXMuX2NoaXBSaXBwbGUuc2V0dXBUcmlnZ2VyRXZlbnRzKHQpLHRoaXMucmlwcGxlQ29uZmlnPW98fHt9LHRoaXMuX2FuaW1hdGlvbnNEaXNhYmxlZD0iTm9vcEFuaW1hdGlvbnMiPT09cix0aGlzLnRhYkluZGV4PW51bGwhPXMmJnBhcnNlSW50KHMpfHwtMX1nZXQgcmlwcGxlRGlzYWJsZWQoKXtyZXR1cm4gdGhpcy5kaXNhYmxlZHx8dGhpcy5kaXNhYmxlUmlwcGxlfHx0aGlzLl9hbmltYXRpb25zRGlzYWJsZWR8fCEhdGhpcy5yaXBwbGVDb25maWcuZGlzYWJsZWR9Z2V0IHNlbGVjdGVkKCl7cmV0dXJuIHRoaXMuX3NlbGVjdGVkfXNldCBzZWxlY3RlZCh0KXtjb25zdCBlPWVIKHQpO2UhPT10aGlzLl9zZWxlY3RlZCYmKHRoaXMuX3NlbGVjdGVkPWUsdGhpcy5fZGlzcGF0Y2hTZWxlY3Rpb25DaGFuZ2UoKSl9Z2V0IHZhbHVlKCl7cmV0dXJuIHZvaWQgMCE9PXRoaXMuX3ZhbHVlP3RoaXMuX3ZhbHVlOnRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC50ZXh0Q29udGVudH1zZXQgdmFsdWUodCl7dGhpcy5fdmFsdWU9dH1nZXQgc2VsZWN0YWJsZSgpe3JldHVybiB0aGlzLl9zZWxlY3RhYmxlJiZ0aGlzLmNoaXBMaXN0U2VsZWN0YWJsZX1zZXQgc2VsZWN0YWJsZSh0KXt0aGlzLl9zZWxlY3RhYmxlPWVIKHQpfWdldCBkaXNhYmxlZCgpe3JldHVybiB0aGlzLl9jaGlwTGlzdERpc2FibGVkfHx0aGlzLl9kaXNhYmxlZH1zZXQgZGlzYWJsZWQodCl7dGhpcy5fZGlzYWJsZWQ9ZUgodCl9Z2V0IHJlbW92YWJsZSgpe3JldHVybiB0aGlzLl9yZW1vdmFibGV9c2V0IHJlbW92YWJsZSh0KXt0aGlzLl9yZW1vdmFibGU9ZUgodCl9Z2V0IGFyaWFTZWxlY3RlZCgpe3JldHVybiB0aGlzLnNlbGVjdGFibGUmJih0aGlzLl9jaGlwTGlzdE11bHRpcGxlfHx0aGlzLnNlbGVjdGVkKT90aGlzLnNlbGVjdGVkLnRvU3RyaW5nKCk6bnVsbH1fYWRkSG9zdENsYXNzTmFtZSgpe2NvbnN0IHQ9Im1hdC1iYXNpYy1jaGlwIixlPXRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtlLmhhc0F0dHJpYnV0ZSh0KXx8ZS50YWdOYW1lLnRvTG93ZXJDYXNlKCk9PT10P2UuY2xhc3NMaXN0LmFkZCh0KTplLmNsYXNzTGlzdC5hZGQoIm1hdC1zdGFuZGFyZC1jaGlwIil9bmdPbkRlc3Ryb3koKXt0aGlzLmRlc3Ryb3llZC5lbWl0KHtjaGlwOnRoaXN9KSx0aGlzLl9jaGlwUmlwcGxlLl9yZW1vdmVUcmlnZ2VyRXZlbnRzKCl9c2VsZWN0KCl7dGhpcy5fc2VsZWN0ZWR8fCh0aGlzLl9zZWxlY3RlZD0hMCx0aGlzLl9kaXNwYXRjaFNlbGVjdGlvbkNoYW5nZSgpLHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpKX1kZXNlbGVjdCgpe3RoaXMuX3NlbGVjdGVkJiYodGhpcy5fc2VsZWN0ZWQ9ITEsdGhpcy5fZGlzcGF0Y2hTZWxlY3Rpb25DaGFuZ2UoKSx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKSl9c2VsZWN0VmlhSW50ZXJhY3Rpb24oKXt0aGlzLl9zZWxlY3RlZHx8KHRoaXMuX3NlbGVjdGVkPSEwLHRoaXMuX2Rpc3BhdGNoU2VsZWN0aW9uQ2hhbmdlKCEwKSx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKSl9dG9nZ2xlU2VsZWN0ZWQodD0hMSl7cmV0dXJuIHRoaXMuX3NlbGVjdGVkPSF0aGlzLnNlbGVjdGVkLHRoaXMuX2Rpc3BhdGNoU2VsZWN0aW9uQ2hhbmdlKHQpLHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpLHRoaXMuc2VsZWN0ZWR9Zm9jdXMoKXt0aGlzLl9oYXNGb2N1c3x8KHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5mb2N1cygpLHRoaXMuX29uRm9jdXMubmV4dCh7Y2hpcDp0aGlzfSkpLHRoaXMuX2hhc0ZvY3VzPSEwfXJlbW92ZSgpe3RoaXMucmVtb3ZhYmxlJiZ0aGlzLnJlbW92ZWQuZW1pdCh7Y2hpcDp0aGlzfSl9X2hhbmRsZUNsaWNrKHQpe3RoaXMuZGlzYWJsZWQ/dC5wcmV2ZW50RGVmYXVsdCgpOnQuc3RvcFByb3BhZ2F0aW9uKCl9X2hhbmRsZUtleWRvd24odCl7aWYoIXRoaXMuZGlzYWJsZWQpc3dpdGNoKHQua2V5Q29kZSl7Y2FzZSA0NjpjYXNlIDg6dGhpcy5yZW1vdmUoKSx0LnByZXZlbnREZWZhdWx0KCk7YnJlYWs7Y2FzZSBKSTp0aGlzLnNlbGVjdGFibGUmJnRoaXMudG9nZ2xlU2VsZWN0ZWQoITApLHQucHJldmVudERlZmF1bHQoKX19X2JsdXIoKXt0aGlzLl9uZ1pvbmUub25TdGFibGUucGlwZSh2ZSgxKSkuc3Vic2NyaWJlKCgoKT0+e3RoaXMuX25nWm9uZS5ydW4oKCgpPT57dGhpcy5faGFzRm9jdXM9ITEsdGhpcy5fb25CbHVyLm5leHQoe2NoaXA6dGhpc30pfSkpfSkpfV9kaXNwYXRjaFNlbGVjdGlvbkNoYW5nZSh0PSExKXt0aGlzLnNlbGVjdGlvbkNoYW5nZS5lbWl0KHtzb3VyY2U6dGhpcyxpc1VzZXJJbnB1dDp0LHNlbGVjdGVkOnRoaXMuX3NlbGVjdGVkfSl9fUV4dC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8RXh0KShnZihLaCksZ2YobUMpLGdmKGNIKSxnZihwTCw4KSxnZihPYiksZ2Yoc00pLGdmKGNrLDgpLEdhKCJ0YWJpbmRleCIpKX0sRXh0Lsm1ZGlyPWhvKHt0eXBlOkV4dCxzZWxlY3RvcnM6W1sibWF0LWJhc2ljLWNoaXAiXSxbIiIsIm1hdC1iYXNpYy1jaGlwIiwiIl0sWyJtYXQtY2hpcCJdLFsiIiwibWF0LWNoaXAiLCIiXV0sY29udGVudFF1ZXJpZXM6ZnVuY3Rpb24gdChlLG4sbyl7aWYoMSZlJiYoankobyx3eHQsNSksankobyxreHQsNSksankobyxQeHQsNSkpLDImZSl7bGV0IHQ7QnkodD1VeSgpKSYmKG4uYXZhdGFyPXQuZmlyc3QpLEJ5KHQ9VXkoKSkmJihuLnRyYWlsaW5nSWNvbj10LmZpcnN0KSxCeSh0PVV5KCkpJiYobi5yZW1vdmVJY29uPXQuZmlyc3QpfX0saG9zdEF0dHJzOlsicm9sZSIsIm9wdGlvbiIsMSwibWF0LWNoaXAiLCJtYXQtZm9jdXMtaW5kaWNhdG9yIl0saG9zdFZhcnM6MTQsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJlJmKCJjbGljayIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4uX2hhbmRsZUNsaWNrKGUpfSkpKCJrZXlkb3duIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5faGFuZGxlS2V5ZG93bihlKX0pKSgiZm9jdXMiLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4uZm9jdXMoKX0pKSgiYmx1ciIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5fYmx1cigpfSkpLDImZSYmKHltKCJ0YWJpbmRleCIsbi5kaXNhYmxlZD9udWxsOm4udGFiSW5kZXgpKCJkaXNhYmxlZCIsbi5kaXNhYmxlZHx8bnVsbCkoImFyaWEtZGlzYWJsZWQiLG4uZGlzYWJsZWQudG9TdHJpbmcoKSkoImFyaWEtc2VsZWN0ZWQiLG4uYXJpYVNlbGVjdGVkKSxjdSgibWF0LWNoaXAtc2VsZWN0ZWQiLG4uc2VsZWN0ZWQpKCJtYXQtY2hpcC13aXRoLWF2YXRhciIsbi5hdmF0YXIpKCJtYXQtY2hpcC13aXRoLXRyYWlsaW5nLWljb24iLG4udHJhaWxpbmdJY29ufHxuLnJlbW92ZUljb24pKCJtYXQtY2hpcC1kaXNhYmxlZCIsbi5kaXNhYmxlZCkoIl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlIixuLl9hbmltYXRpb25zRGlzYWJsZWQpKX0saW5wdXRzOntjb2xvcjoiY29sb3IiLGRpc2FibGVSaXBwbGU6ImRpc2FibGVSaXBwbGUiLHRhYkluZGV4OiJ0YWJJbmRleCIsc2VsZWN0ZWQ6InNlbGVjdGVkIix2YWx1ZToidmFsdWUiLHNlbGVjdGFibGU6InNlbGVjdGFibGUiLGRpc2FibGVkOiJkaXNhYmxlZCIscmVtb3ZhYmxlOiJyZW1vdmFibGUifSxvdXRwdXRzOntzZWxlY3Rpb25DaGFuZ2U6InNlbGVjdGlvbkNoYW5nZSIsZGVzdHJveWVkOiJkZXN0cm95ZWQiLHJlbW92ZWQ6InJlbW92ZWQifSxleHBvcnRBczpbIm1hdENoaXAiXSxmZWF0dXJlczpbUXBdfSksRXh0LmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6S2h9LHt0eXBlOm1DfSx7dHlwZTpjSH0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltwTF19XX0se3R5cGU6T2J9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltzTV19XX0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltja119XX0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOiRhLGFyZ3M6WyJ0YWJpbmRleCJdfV19XSxFeHQucHJvcERlY29yYXRvcnM9e2F2YXRhcjpbe3R5cGU6aXIsYXJnczpbd3h0XX1dLHRyYWlsaW5nSWNvbjpbe3R5cGU6aXIsYXJnczpba3h0XX1dLHJlbW92ZUljb246W3t0eXBlOmlyLGFyZ3M6W1B4dF19XSxzZWxlY3RlZDpbe3R5cGU6Ul99XSx2YWx1ZTpbe3R5cGU6Ul99XSxzZWxlY3RhYmxlOlt7dHlwZTpSX31dLGRpc2FibGVkOlt7dHlwZTpSX31dLHJlbW92YWJsZTpbe3R5cGU6Ul99XSxzZWxlY3Rpb25DaGFuZ2U6W3t0eXBlOkVffV0sZGVzdHJveWVkOlt7dHlwZTpFX31dLHJlbW92ZWQ6W3t0eXBlOkVffV19LCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoRXh0LFt7dHlwZTprXyxhcmdzOlt7c2VsZWN0b3I6Im1hdC1iYXNpYy1jaGlwLCBbbWF0LWJhc2ljLWNoaXBdLCBtYXQtY2hpcCwgW21hdC1jaGlwXSIsaW5wdXRzOlsiY29sb3IiLCJkaXNhYmxlUmlwcGxlIiwidGFiSW5kZXgiXSxleHBvcnRBczoibWF0Q2hpcCIsaG9zdDp7Y2xhc3M6Im1hdC1jaGlwIG1hdC1mb2N1cy1pbmRpY2F0b3IiLCJbYXR0ci50YWJpbmRleF0iOiJkaXNhYmxlZCA/IG51bGwgOiB0YWJJbmRleCIscm9sZToib3B0aW9uIiwiW2NsYXNzLm1hdC1jaGlwLXNlbGVjdGVkXSI6InNlbGVjdGVkIiwiW2NsYXNzLm1hdC1jaGlwLXdpdGgtYXZhdGFyXSI6ImF2YXRhciIsIltjbGFzcy5tYXQtY2hpcC13aXRoLXRyYWlsaW5nLWljb25dIjoidHJhaWxpbmdJY29uIHx8IHJlbW92ZUljb24iLCJbY2xhc3MubWF0LWNoaXAtZGlzYWJsZWRdIjoiZGlzYWJsZWQiLCJbY2xhc3MuX21hdC1hbmltYXRpb24tbm9vcGFibGVdIjoiX2FuaW1hdGlvbnNEaXNhYmxlZCIsIlthdHRyLmRpc2FibGVkXSI6ImRpc2FibGVkIHx8IG51bGwiLCJbYXR0ci5hcmlhLWRpc2FibGVkXSI6ImRpc2FibGVkLnRvU3RyaW5nKCkiLCJbYXR0ci5hcmlhLXNlbGVjdGVkXSI6ImFyaWFTZWxlY3RlZCIsIihjbGljaykiOiJfaGFuZGxlQ2xpY2soJGV2ZW50KSIsIihrZXlkb3duKSI6Il9oYW5kbGVLZXlkb3duKCRldmVudCkiLCIoZm9jdXMpIjoiZm9jdXMoKSIsIihibHVyKSI6Il9ibHVyKCkifX1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOktofSx7dHlwZTptQ30se3R5cGU6Y0h9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpbcExdfV19LHt0eXBlOk9ifSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbc01dfV19LHt0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpbY2tdfV19LHt0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTokYSxhcmdzOlsidGFiaW5kZXgiXX1dfV19KSx7c2VsZWN0aW9uQ2hhbmdlOlt7dHlwZTpFX31dLGRlc3Ryb3llZDpbe3R5cGU6RV99XSxyZW1vdmVkOlt7dHlwZTpFX31dLHNlbGVjdGVkOlt7dHlwZTpSX31dLHZhbHVlOlt7dHlwZTpSX31dLHNlbGVjdGFibGU6W3t0eXBlOlJffV0sZGlzYWJsZWQ6W3t0eXBlOlJffV0scmVtb3ZhYmxlOlt7dHlwZTpSX31dLGF2YXRhcjpbe3R5cGU6aXIsYXJnczpbd3h0XX1dLHRyYWlsaW5nSWNvbjpbe3R5cGU6aXIsYXJnczpba3h0XX1dLHJlbW92ZUljb246W3t0eXBlOmlyLGFyZ3M6W1B4dF19XX0pO2NsYXNzIEF4dHtjb25zdHJ1Y3Rvcih0LGUpe3RoaXMuX3BhcmVudENoaXA9dCwiQlVUVE9OIj09PWUubmF0aXZlRWxlbWVudC5ub2RlTmFtZSYmZS5uYXRpdmVFbGVtZW50LnNldEF0dHJpYnV0ZSgidHlwZSIsImJ1dHRvbiIpfV9oYW5kbGVDbGljayh0KXtjb25zdCBlPXRoaXMuX3BhcmVudENoaXA7ZS5yZW1vdmFibGUmJiFlLmRpc2FibGVkJiZlLnJlbW92ZSgpLHQuc3RvcFByb3BhZ2F0aW9uKCl9fUF4dC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8QXh0KShnZihFeHQpLGdmKEtoKSl9LEF4dC7JtWRpcj1obyh7dHlwZTpBeHQsc2VsZWN0b3JzOltbIiIsIm1hdENoaXBSZW1vdmUiLCIiXV0saG9zdEF0dHJzOlsxLCJtYXQtY2hpcC1yZW1vdmUiLCJtYXQtY2hpcC10cmFpbGluZy1pY29uIl0saG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJlJmKCJjbGljayIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4uX2hhbmRsZUNsaWNrKGUpfSkpfSxmZWF0dXJlczpbamgoW3twcm92aWRlOlB4dCx1c2VFeGlzdGluZzpBeHR9XSldfSksQXh0LmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6RXh0fSx7dHlwZTpLaH1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoQXh0LFt7dHlwZTprXyxhcmdzOlt7c2VsZWN0b3I6IlttYXRDaGlwUmVtb3ZlXSIsaG9zdDp7Y2xhc3M6Im1hdC1jaGlwLXJlbW92ZSBtYXQtY2hpcC10cmFpbGluZy1pY29uIiwiKGNsaWNrKSI6Il9oYW5kbGVDbGljaygkZXZlbnQpIn0scHJvdmlkZXJzOlt7cHJvdmlkZTpQeHQsdXNlRXhpc3Rpbmc6QXh0fV19XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpFeHR9LHt0eXBlOktofV19KSxudWxsKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNvbnN0IFR4dD1uZXcgZXIoIm1hdC1jaGlwcy1kZWZhdWx0LW9wdGlvbnMiKSxOeHQ9TEYoY2xhc3N7Y29uc3RydWN0b3IodCxlLG4sbyl7dGhpcy5fZGVmYXVsdEVycm9yU3RhdGVNYXRjaGVyPXQsdGhpcy5fcGFyZW50Rm9ybT1lLHRoaXMuX3BhcmVudEZvcm1Hcm91cD1uLHRoaXMubmdDb250cm9sPW99fSk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2xldCB6eHQ9MDtjbGFzcyBJeHR7Y29uc3RydWN0b3IodCxlKXt0aGlzLnNvdXJjZT10LHRoaXMudmFsdWU9ZX19Y2xhc3MgSHh0IGV4dGVuZHMgTnh0e2NvbnN0cnVjdG9yKHQsZSxuLG8saSxhLHIpe3N1cGVyKGEsbyxpLHIpLHRoaXMuX2VsZW1lbnRSZWY9dCx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZj1lLHRoaXMuX2Rpcj1uLHRoaXMuY29udHJvbFR5cGU9Im1hdC1jaGlwLWxpc3QiLHRoaXMuX2xhc3REZXN0cm95ZWRDaGlwSW5kZXg9bnVsbCx0aGlzLl9kZXN0cm95ZWQ9bmV3IEIsdGhpcy5fdWlkPSJtYXQtY2hpcC1saXN0LSIrenh0KyssdGhpcy5fdGFiSW5kZXg9MCx0aGlzLl91c2VyVGFiSW5kZXg9bnVsbCx0aGlzLl9vblRvdWNoZWQ9KCk9Pnt9LHRoaXMuX29uQ2hhbmdlPSgpPT57fSx0aGlzLl9tdWx0aXBsZT0hMSx0aGlzLl9jb21wYXJlV2l0aD0odCxlKT0+dD09PWUsdGhpcy5fcmVxdWlyZWQ9ITEsdGhpcy5fZGlzYWJsZWQ9ITEsdGhpcy5hcmlhT3JpZW50YXRpb249Imhvcml6b250YWwiLHRoaXMuX3NlbGVjdGFibGU9ITAsdGhpcy5jaGFuZ2U9bmV3IFN5LHRoaXMudmFsdWVDaGFuZ2U9bmV3IFN5LHRoaXMubmdDb250cm9sJiYodGhpcy5uZ0NvbnRyb2wudmFsdWVBY2Nlc3Nvcj10aGlzKX1nZXQgc2VsZWN0ZWQoKXtyZXR1cm4gdGhpcy5tdWx0aXBsZT90aGlzLl9zZWxlY3Rpb25Nb2RlbC5zZWxlY3RlZDp0aGlzLl9zZWxlY3Rpb25Nb2RlbC5zZWxlY3RlZFswXX1nZXQgcm9sZSgpe3JldHVybiB0aGlzLmVtcHR5P251bGw6Imxpc3Rib3gifWdldCBtdWx0aXBsZSgpe3JldHVybiB0aGlzLl9tdWx0aXBsZX1zZXQgbXVsdGlwbGUodCl7dGhpcy5fbXVsdGlwbGU9ZUgodCksdGhpcy5fc3luY0NoaXBzU3RhdGUoKX1nZXQgY29tcGFyZVdpdGgoKXtyZXR1cm4gdGhpcy5fY29tcGFyZVdpdGh9c2V0IGNvbXBhcmVXaXRoKHQpe3RoaXMuX2NvbXBhcmVXaXRoPXQsdGhpcy5fc2VsZWN0aW9uTW9kZWwmJnRoaXMuX2luaXRpYWxpemVTZWxlY3Rpb24oKX1nZXQgdmFsdWUoKXtyZXR1cm4gdGhpcy5fdmFsdWV9c2V0IHZhbHVlKHQpe3RoaXMud3JpdGVWYWx1ZSh0KSx0aGlzLl92YWx1ZT10fWdldCBpZCgpe3JldHVybiB0aGlzLl9jaGlwSW5wdXQ/dGhpcy5fY2hpcElucHV0LmlkOnRoaXMuX3VpZH1nZXQgcmVxdWlyZWQoKXtyZXR1cm4gdGhpcy5fcmVxdWlyZWR9c2V0IHJlcXVpcmVkKHQpe3RoaXMuX3JlcXVpcmVkPWVIKHQpLHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKX1nZXQgcGxhY2Vob2xkZXIoKXtyZXR1cm4gdGhpcy5fY2hpcElucHV0P3RoaXMuX2NoaXBJbnB1dC5wbGFjZWhvbGRlcjp0aGlzLl9wbGFjZWhvbGRlcn1zZXQgcGxhY2Vob2xkZXIodCl7dGhpcy5fcGxhY2Vob2xkZXI9dCx0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCl9Z2V0IGZvY3VzZWQoKXtyZXR1cm4gdGhpcy5fY2hpcElucHV0JiZ0aGlzLl9jaGlwSW5wdXQuZm9jdXNlZHx8dGhpcy5faGFzRm9jdXNlZENoaXAoKX1nZXQgZW1wdHkoKXtyZXR1cm4oIXRoaXMuX2NoaXBJbnB1dHx8dGhpcy5fY2hpcElucHV0LmVtcHR5KSYmKCF0aGlzLmNoaXBzfHwwPT09dGhpcy5jaGlwcy5sZW5ndGgpfWdldCBzaG91bGRMYWJlbEZsb2F0KCl7cmV0dXJuIXRoaXMuZW1wdHl8fHRoaXMuZm9jdXNlZH1nZXQgZGlzYWJsZWQoKXtyZXR1cm4gdGhpcy5uZ0NvbnRyb2w/ISF0aGlzLm5nQ29udHJvbC5kaXNhYmxlZDp0aGlzLl9kaXNhYmxlZH1zZXQgZGlzYWJsZWQodCl7dGhpcy5fZGlzYWJsZWQ9ZUgodCksdGhpcy5fc3luY0NoaXBzU3RhdGUoKX1nZXQgc2VsZWN0YWJsZSgpe3JldHVybiB0aGlzLl9zZWxlY3RhYmxlfXNldCBzZWxlY3RhYmxlKHQpe3RoaXMuX3NlbGVjdGFibGU9ZUgodCksdGhpcy5jaGlwcyYmdGhpcy5jaGlwcy5mb3JFYWNoKCh0PT50LmNoaXBMaXN0U2VsZWN0YWJsZT10aGlzLl9zZWxlY3RhYmxlKSl9c2V0IHRhYkluZGV4KHQpe3RoaXMuX3VzZXJUYWJJbmRleD10LHRoaXMuX3RhYkluZGV4PXR9Z2V0IGNoaXBTZWxlY3Rpb25DaGFuZ2VzKCl7cmV0dXJuIHBlKC4uLnRoaXMuY2hpcHMubWFwKCh0PT50LnNlbGVjdGlvbkNoYW5nZSkpKX1nZXQgY2hpcEZvY3VzQ2hhbmdlcygpe3JldHVybiBwZSguLi50aGlzLmNoaXBzLm1hcCgodD0+dC5fb25Gb2N1cykpKX1nZXQgY2hpcEJsdXJDaGFuZ2VzKCl7cmV0dXJuIHBlKC4uLnRoaXMuY2hpcHMubWFwKCh0PT50Ll9vbkJsdXIpKSl9Z2V0IGNoaXBSZW1vdmVDaGFuZ2VzKCl7cmV0dXJuIHBlKC4uLnRoaXMuY2hpcHMubWFwKCh0PT50LmRlc3Ryb3llZCkpKX1uZ0FmdGVyQ29udGVudEluaXQoKXt0aGlzLl9rZXlNYW5hZ2VyPW5ldyBMSCh0aGlzLmNoaXBzKS53aXRoV3JhcCgpLndpdGhWZXJ0aWNhbE9yaWVudGF0aW9uKCkud2l0aEhvbWVBbmRFbmQoKS53aXRoSG9yaXpvbnRhbE9yaWVudGF0aW9uKHRoaXMuX2Rpcj90aGlzLl9kaXIudmFsdWU6Imx0ciIpLHRoaXMuX2RpciYmdGhpcy5fZGlyLmNoYW5nZS5waXBlKGplKHRoaXMuX2Rlc3Ryb3llZCkpLnN1YnNjcmliZSgodD0+dGhpcy5fa2V5TWFuYWdlci53aXRoSG9yaXpvbnRhbE9yaWVudGF0aW9uKHQpKSksdGhpcy5fa2V5TWFuYWdlci50YWJPdXQucGlwZShqZSh0aGlzLl9kZXN0cm95ZWQpKS5zdWJzY3JpYmUoKCgpPT57dGhpcy5fYWxsb3dGb2N1c0VzY2FwZSgpfSkpLHRoaXMuY2hpcHMuY2hhbmdlcy5waXBlKEJlKG51bGwpLGplKHRoaXMuX2Rlc3Ryb3llZCkpLnN1YnNjcmliZSgoKCk9Pnt0aGlzLmRpc2FibGVkJiZQcm9taXNlLnJlc29sdmUoKS50aGVuKCgoKT0+e3RoaXMuX3N5bmNDaGlwc1N0YXRlKCl9KSksdGhpcy5fcmVzZXRDaGlwcygpLHRoaXMuX2luaXRpYWxpemVTZWxlY3Rpb24oKSx0aGlzLl91cGRhdGVUYWJJbmRleCgpLHRoaXMuX3VwZGF0ZUZvY3VzRm9yRGVzdHJveWVkQ2hpcHMoKSx0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCl9KSl9bmdPbkluaXQoKXt0aGlzLl9zZWxlY3Rpb25Nb2RlbD1uZXcgakwodGhpcy5tdWx0aXBsZSx2b2lkIDAsITEpLHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKX1uZ0RvQ2hlY2soKXt0aGlzLm5nQ29udHJvbCYmKHRoaXMudXBkYXRlRXJyb3JTdGF0ZSgpLHRoaXMubmdDb250cm9sLmRpc2FibGVkIT09dGhpcy5fZGlzYWJsZWQmJih0aGlzLmRpc2FibGVkPSEhdGhpcy5uZ0NvbnRyb2wuZGlzYWJsZWQpKX1uZ09uRGVzdHJveSgpe3RoaXMuX2Rlc3Ryb3llZC5uZXh0KCksdGhpcy5fZGVzdHJveWVkLmNvbXBsZXRlKCksdGhpcy5zdGF0ZUNoYW5nZXMuY29tcGxldGUoKSx0aGlzLl9kcm9wU3Vic2NyaXB0aW9ucygpfXJlZ2lzdGVySW5wdXQodCl7dGhpcy5fY2hpcElucHV0PXQsdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnNldEF0dHJpYnV0ZSgiZGF0YS1tYXQtY2hpcC1pbnB1dCIsdC5pZCl9c2V0RGVzY3JpYmVkQnlJZHModCl7dGhpcy5fYXJpYURlc2NyaWJlZGJ5PXQuam9pbigiICIpfXdyaXRlVmFsdWUodCl7dGhpcy5jaGlwcyYmdGhpcy5fc2V0U2VsZWN0aW9uQnlWYWx1ZSh0LCExKX1yZWdpc3Rlck9uQ2hhbmdlKHQpe3RoaXMuX29uQ2hhbmdlPXR9cmVnaXN0ZXJPblRvdWNoZWQodCl7dGhpcy5fb25Ub3VjaGVkPXR9c2V0RGlzYWJsZWRTdGF0ZSh0KXt0aGlzLmRpc2FibGVkPXQsdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpfW9uQ29udGFpbmVyQ2xpY2sodCl7dGhpcy5fb3JpZ2luYXRlc0Zyb21DaGlwKHQpfHx0aGlzLmZvY3VzKCl9Zm9jdXModCl7dGhpcy5kaXNhYmxlZHx8dGhpcy5fY2hpcElucHV0JiZ0aGlzLl9jaGlwSW5wdXQuZm9jdXNlZHx8KHRoaXMuY2hpcHMubGVuZ3RoPjA/KHRoaXMuX2tleU1hbmFnZXIuc2V0Rmlyc3RJdGVtQWN0aXZlKCksdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpKToodGhpcy5fZm9jdXNJbnB1dCh0KSx0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCkpKX1fZm9jdXNJbnB1dCh0KXt0aGlzLl9jaGlwSW5wdXQmJnRoaXMuX2NoaXBJbnB1dC5mb2N1cyh0KX1fa2V5ZG93bih0KXtjb25zdCBlPXQudGFyZ2V0O2UmJmUuY2xhc3NMaXN0LmNvbnRhaW5zKCJtYXQtY2hpcCIpJiYodGhpcy5fa2V5TWFuYWdlci5vbktleWRvd24odCksdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpKX1fdXBkYXRlVGFiSW5kZXgoKXt0aGlzLl90YWJJbmRleD10aGlzLl91c2VyVGFiSW5kZXh8fCgwPT09dGhpcy5jaGlwcy5sZW5ndGg/LTE6MCl9X3VwZGF0ZUZvY3VzRm9yRGVzdHJveWVkQ2hpcHMoKXtpZihudWxsIT10aGlzLl9sYXN0RGVzdHJveWVkQ2hpcEluZGV4KWlmKHRoaXMuY2hpcHMubGVuZ3RoKXtjb25zdCB0PU1hdGgubWluKHRoaXMuX2xhc3REZXN0cm95ZWRDaGlwSW5kZXgsdGhpcy5jaGlwcy5sZW5ndGgtMSk7dGhpcy5fa2V5TWFuYWdlci5zZXRBY3RpdmVJdGVtKHQpfWVsc2UgdGhpcy5mb2N1cygpO3RoaXMuX2xhc3REZXN0cm95ZWRDaGlwSW5kZXg9bnVsbH1faXNWYWxpZEluZGV4KHQpe3JldHVybiB0Pj0wJiZ0PHRoaXMuY2hpcHMubGVuZ3RofV9zZXRTZWxlY3Rpb25CeVZhbHVlKHQsZT0hMCl7aWYodGhpcy5fY2xlYXJTZWxlY3Rpb24oKSx0aGlzLmNoaXBzLmZvckVhY2goKHQ9PnQuZGVzZWxlY3QoKSkpLEFycmF5LmlzQXJyYXkodCkpdC5mb3JFYWNoKCh0PT50aGlzLl9zZWxlY3RWYWx1ZSh0LGUpKSksdGhpcy5fc29ydFZhbHVlcygpO2Vsc2V7Y29uc3Qgbj10aGlzLl9zZWxlY3RWYWx1ZSh0LGUpO24mJmUmJnRoaXMuX2tleU1hbmFnZXIuc2V0QWN0aXZlSXRlbShuKX19X3NlbGVjdFZhbHVlKHQsZT0hMCl7Y29uc3Qgbj10aGlzLmNoaXBzLmZpbmQoKGU9Pm51bGwhPWUudmFsdWUmJnRoaXMuX2NvbXBhcmVXaXRoKGUudmFsdWUsdCkpKTtyZXR1cm4gbiYmKGU/bi5zZWxlY3RWaWFJbnRlcmFjdGlvbigpOm4uc2VsZWN0KCksdGhpcy5fc2VsZWN0aW9uTW9kZWwuc2VsZWN0KG4pKSxufV9pbml0aWFsaXplU2VsZWN0aW9uKCl7UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKCk9PnsodGhpcy5uZ0NvbnRyb2x8fHRoaXMuX3ZhbHVlKSYmKHRoaXMuX3NldFNlbGVjdGlvbkJ5VmFsdWUodGhpcy5uZ0NvbnRyb2w/dGhpcy5uZ0NvbnRyb2wudmFsdWU6dGhpcy5fdmFsdWUsITEpLHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKSl9KSl9X2NsZWFyU2VsZWN0aW9uKHQpe3RoaXMuX3NlbGVjdGlvbk1vZGVsLmNsZWFyKCksdGhpcy5jaGlwcy5mb3JFYWNoKChlPT57ZSE9PXQmJmUuZGVzZWxlY3QoKX0pKSx0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCl9X3NvcnRWYWx1ZXMoKXt0aGlzLl9tdWx0aXBsZSYmKHRoaXMuX3NlbGVjdGlvbk1vZGVsLmNsZWFyKCksdGhpcy5jaGlwcy5mb3JFYWNoKCh0PT57dC5zZWxlY3RlZCYmdGhpcy5fc2VsZWN0aW9uTW9kZWwuc2VsZWN0KHQpfSkpLHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKSl9X3Byb3BhZ2F0ZUNoYW5nZXModCl7bGV0IGU9bnVsbDtlPUFycmF5LmlzQXJyYXkodGhpcy5zZWxlY3RlZCk/dGhpcy5zZWxlY3RlZC5tYXAoKHQ9PnQudmFsdWUpKTp0aGlzLnNlbGVjdGVkP3RoaXMuc2VsZWN0ZWQudmFsdWU6dCx0aGlzLl92YWx1ZT1lLHRoaXMuY2hhbmdlLmVtaXQobmV3IEl4dCh0aGlzLGUpKSx0aGlzLnZhbHVlQ2hhbmdlLmVtaXQoZSksdGhpcy5fb25DaGFuZ2UoZSksdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCl9X2JsdXIoKXt0aGlzLl9oYXNGb2N1c2VkQ2hpcCgpfHx0aGlzLl9rZXlNYW5hZ2VyLnNldEFjdGl2ZUl0ZW0oLTEpLHRoaXMuZGlzYWJsZWR8fCh0aGlzLl9jaGlwSW5wdXQ/c2V0VGltZW91dCgoKCk9Pnt0aGlzLmZvY3VzZWR8fHRoaXMuX21hcmtBc1RvdWNoZWQoKX0pKTp0aGlzLl9tYXJrQXNUb3VjaGVkKCkpfV9tYXJrQXNUb3VjaGVkKCl7dGhpcy5fb25Ub3VjaGVkKCksdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCksdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpfV9hbGxvd0ZvY3VzRXNjYXBlKCl7LTEhPT10aGlzLl90YWJJbmRleCYmKHRoaXMuX3RhYkluZGV4PS0xLHNldFRpbWVvdXQoKCgpPT57dGhpcy5fdGFiSW5kZXg9dGhpcy5fdXNlclRhYkluZGV4fHwwLHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpfSkpKX1fcmVzZXRDaGlwcygpe3RoaXMuX2Ryb3BTdWJzY3JpcHRpb25zKCksdGhpcy5fbGlzdGVuVG9DaGlwc0ZvY3VzKCksdGhpcy5fbGlzdGVuVG9DaGlwc1NlbGVjdGlvbigpLHRoaXMuX2xpc3RlblRvQ2hpcHNSZW1vdmVkKCl9X2Ryb3BTdWJzY3JpcHRpb25zKCl7dGhpcy5fY2hpcEZvY3VzU3Vic2NyaXB0aW9uJiYodGhpcy5fY2hpcEZvY3VzU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCksdGhpcy5fY2hpcEZvY3VzU3Vic2NyaXB0aW9uPW51bGwpLHRoaXMuX2NoaXBCbHVyU3Vic2NyaXB0aW9uJiYodGhpcy5fY2hpcEJsdXJTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSx0aGlzLl9jaGlwQmx1clN1YnNjcmlwdGlvbj1udWxsKSx0aGlzLl9jaGlwU2VsZWN0aW9uU3Vic2NyaXB0aW9uJiYodGhpcy5fY2hpcFNlbGVjdGlvblN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpLHRoaXMuX2NoaXBTZWxlY3Rpb25TdWJzY3JpcHRpb249bnVsbCksdGhpcy5fY2hpcFJlbW92ZVN1YnNjcmlwdGlvbiYmKHRoaXMuX2NoaXBSZW1vdmVTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSx0aGlzLl9jaGlwUmVtb3ZlU3Vic2NyaXB0aW9uPW51bGwpfV9saXN0ZW5Ub0NoaXBzU2VsZWN0aW9uKCl7dGhpcy5fY2hpcFNlbGVjdGlvblN1YnNjcmlwdGlvbj10aGlzLmNoaXBTZWxlY3Rpb25DaGFuZ2VzLnN1YnNjcmliZSgodD0+e3Quc291cmNlLnNlbGVjdGVkP3RoaXMuX3NlbGVjdGlvbk1vZGVsLnNlbGVjdCh0LnNvdXJjZSk6dGhpcy5fc2VsZWN0aW9uTW9kZWwuZGVzZWxlY3QodC5zb3VyY2UpLHRoaXMubXVsdGlwbGV8fHRoaXMuY2hpcHMuZm9yRWFjaCgodD0+eyF0aGlzLl9zZWxlY3Rpb25Nb2RlbC5pc1NlbGVjdGVkKHQpJiZ0LnNlbGVjdGVkJiZ0LmRlc2VsZWN0KCl9KSksdC5pc1VzZXJJbnB1dCYmdGhpcy5fcHJvcGFnYXRlQ2hhbmdlcygpfSkpfV9saXN0ZW5Ub0NoaXBzRm9jdXMoKXt0aGlzLl9jaGlwRm9jdXNTdWJzY3JpcHRpb249dGhpcy5jaGlwRm9jdXNDaGFuZ2VzLnN1YnNjcmliZSgodD0+e2xldCBlPXRoaXMuY2hpcHMudG9BcnJheSgpLmluZGV4T2YodC5jaGlwKTt0aGlzLl9pc1ZhbGlkSW5kZXgoZSkmJnRoaXMuX2tleU1hbmFnZXIudXBkYXRlQWN0aXZlSXRlbShlKSx0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCl9KSksdGhpcy5fY2hpcEJsdXJTdWJzY3JpcHRpb249dGhpcy5jaGlwQmx1ckNoYW5nZXMuc3Vic2NyaWJlKCgoKT0+e3RoaXMuX2JsdXIoKSx0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCl9KSl9X2xpc3RlblRvQ2hpcHNSZW1vdmVkKCl7dGhpcy5fY2hpcFJlbW92ZVN1YnNjcmlwdGlvbj10aGlzLmNoaXBSZW1vdmVDaGFuZ2VzLnN1YnNjcmliZSgodD0+e2NvbnN0IGU9dC5jaGlwLG49dGhpcy5jaGlwcy50b0FycmF5KCkuaW5kZXhPZih0LmNoaXApO3RoaXMuX2lzVmFsaWRJbmRleChuKSYmZS5faGFzRm9jdXMmJih0aGlzLl9sYXN0RGVzdHJveWVkQ2hpcEluZGV4PW4pfSkpfV9vcmlnaW5hdGVzRnJvbUNoaXAodCl7bGV0IGU9dC50YXJnZXQ7Zm9yKDtlJiZlIT09dGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50Oyl7aWYoZS5jbGFzc0xpc3QuY29udGFpbnMoIm1hdC1jaGlwIikpcmV0dXJuITA7ZT1lLnBhcmVudEVsZW1lbnR9cmV0dXJuITF9X2hhc0ZvY3VzZWRDaGlwKCl7cmV0dXJuIHRoaXMuY2hpcHMmJnRoaXMuY2hpcHMuc29tZSgodD0+dC5faGFzRm9jdXMpKX1fc3luY0NoaXBzU3RhdGUoKXt0aGlzLmNoaXBzJiZ0aGlzLmNoaXBzLmZvckVhY2goKHQ9Pnt0Ll9jaGlwTGlzdERpc2FibGVkPXRoaXMuX2Rpc2FibGVkLHQuX2NoaXBMaXN0TXVsdGlwbGU9dGhpcy5tdWx0aXBsZX0pKX19SHh0Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxIeHQpKGdmKEtoKSxnZihPYiksZ2YodkYsOCksZ2YoWFcsOCksZ2YoaEcsOCksZ2YobkwpLGdmKGxXLDEwKSl9LEh4dC7JtWNtcD1zbyh7dHlwZTpIeHQsc2VsZWN0b3JzOltbIm1hdC1jaGlwLWxpc3QiXV0sY29udGVudFF1ZXJpZXM6ZnVuY3Rpb24gdChlLG4sbyl7aWYoMSZlJiZqeShvLEV4dCw1KSwyJmUpe2xldCB0O0J5KHQ9VXkoKSkmJihuLmNoaXBzPXQpfX0saG9zdEF0dHJzOlsxLCJtYXQtY2hpcC1saXN0Il0saG9zdFZhcnM6MTUsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJlJmKCJmb2N1cyIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5mb2N1cygpfSkpKCJibHVyIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLl9ibHVyKCl9KSkoImtleWRvd24iLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLl9rZXlkb3duKGUpfSkpLDImZSYmKGNnKCJpZCIsbi5fdWlkKSx5bSgidGFiaW5kZXgiLG4uZGlzYWJsZWQ/bnVsbDpuLl90YWJJbmRleCkoImFyaWEtZGVzY3JpYmVkYnkiLG4uX2FyaWFEZXNjcmliZWRieXx8bnVsbCkoImFyaWEtcmVxdWlyZWQiLG4ucm9sZT9uLnJlcXVpcmVkOm51bGwpKCJhcmlhLWRpc2FibGVkIixuLmRpc2FibGVkLnRvU3RyaW5nKCkpKCJhcmlhLWludmFsaWQiLG4uZXJyb3JTdGF0ZSkoImFyaWEtbXVsdGlzZWxlY3RhYmxlIixuLm11bHRpcGxlKSgicm9sZSIsbi5yb2xlKSgiYXJpYS1vcmllbnRhdGlvbiIsbi5hcmlhT3JpZW50YXRpb24pLGN1KCJtYXQtY2hpcC1saXN0LWRpc2FibGVkIixuLmRpc2FibGVkKSgibWF0LWNoaXAtbGlzdC1pbnZhbGlkIixuLmVycm9yU3RhdGUpKCJtYXQtY2hpcC1saXN0LXJlcXVpcmVkIixuLnJlcXVpcmVkKSl9LGlucHV0czp7YXJpYU9yaWVudGF0aW9uOlsiYXJpYS1vcmllbnRhdGlvbiIsImFyaWFPcmllbnRhdGlvbiJdLG11bHRpcGxlOiJtdWx0aXBsZSIsY29tcGFyZVdpdGg6ImNvbXBhcmVXaXRoIix2YWx1ZToidmFsdWUiLHJlcXVpcmVkOiJyZXF1aXJlZCIscGxhY2Vob2xkZXI6InBsYWNlaG9sZGVyIixkaXNhYmxlZDoiZGlzYWJsZWQiLHNlbGVjdGFibGU6InNlbGVjdGFibGUiLHRhYkluZGV4OiJ0YWJJbmRleCIsZXJyb3JTdGF0ZU1hdGNoZXI6ImVycm9yU3RhdGVNYXRjaGVyIn0sb3V0cHV0czp7Y2hhbmdlOiJjaGFuZ2UiLHZhbHVlQ2hhbmdlOiJ2YWx1ZUNoYW5nZSJ9LGV4cG9ydEFzOlsibWF0Q2hpcExpc3QiXSxmZWF0dXJlczpbamgoW3twcm92aWRlOmlVLHVzZUV4aXN0aW5nOkh4dH1dKSxRcF0sbmdDb250ZW50U2VsZWN0b3JzOlsiKiJdLGRlY2xzOjIsdmFyczowLGNvbnN0czpbWzEsIm1hdC1jaGlwLWxpc3Qtd3JhcHBlciJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoSGYoKSxDZigwLCJkaXYiLDApLEZmKDEpLE1mKCkpfSxzdHlsZXM6WycubWF0LWNoaXB7cG9zaXRpb246cmVsYXRpdmU7Ym94LXNpemluZzpib3JkZXItYm94Oy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudDt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKTtib3JkZXI6bm9uZTstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZX0ubWF0LXN0YW5kYXJkLWNoaXB7dHJhbnNpdGlvbjpib3gtc2hhZG93IDI4MG1zIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSk7ZGlzcGxheTppbmxpbmUtZmxleDtwYWRkaW5nOjdweCAxMnB4O2JvcmRlci1yYWRpdXM6MTZweDthbGlnbi1pdGVtczpjZW50ZXI7Y3Vyc29yOmRlZmF1bHQ7bWluLWhlaWdodDozMnB4O2hlaWdodDoxcHh9Ll9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlLm1hdC1zdGFuZGFyZC1jaGlwe3RyYW5zaXRpb246bm9uZTthbmltYXRpb246bm9uZX0ubWF0LXN0YW5kYXJkLWNoaXAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbnt3aWR0aDoxOHB4O2hlaWdodDoxOHB4fS5tYXQtc3RhbmRhcmQtY2hpcDo6YWZ0ZXJ7dG9wOjA7bGVmdDowO3JpZ2h0OjA7Ym90dG9tOjA7cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJhZGl1czppbmhlcml0O29wYWNpdHk6MDtjb250ZW50OiIiO3BvaW50ZXItZXZlbnRzOm5vbmU7dHJhbnNpdGlvbjpvcGFjaXR5IDIwMG1zIGN1YmljLWJlemllcigwLjM1LCAwLCAwLjI1LCAxKX0ubWF0LXN0YW5kYXJkLWNoaXA6aG92ZXI6OmFmdGVye29wYWNpdHk6LjEyfS5tYXQtc3RhbmRhcmQtY2hpcDpmb2N1c3tvdXRsaW5lOm5vbmV9Lm1hdC1zdGFuZGFyZC1jaGlwOmZvY3VzOjphZnRlcntvcGFjaXR5Oi4xNn0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtc3RhbmRhcmQtY2hpcHtvdXRsaW5lOnNvbGlkIDFweH0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtc3RhbmRhcmQtY2hpcDpmb2N1c3tvdXRsaW5lOmRvdHRlZCAycHh9Lm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLWRpc2FibGVkOjphZnRlcntvcGFjaXR5OjB9Lm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLWRpc2FibGVkIC5tYXQtY2hpcC1yZW1vdmUsLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLWRpc2FibGVkIC5tYXQtY2hpcC10cmFpbGluZy1pY29ue2N1cnNvcjpkZWZhdWx0fS5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC13aXRoLXRyYWlsaW5nLWljb24ubWF0LWNoaXAtd2l0aC1hdmF0YXIsLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXdpdGgtYXZhdGFye3BhZGRpbmctdG9wOjA7cGFkZGluZy1ib3R0b206MH0ubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtd2l0aC10cmFpbGluZy1pY29uLm1hdC1jaGlwLXdpdGgtYXZhdGFye3BhZGRpbmctcmlnaHQ6OHB4O3BhZGRpbmctbGVmdDowfVtkaXI9cnRsXSAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtd2l0aC10cmFpbGluZy1pY29uLm1hdC1jaGlwLXdpdGgtYXZhdGFye3BhZGRpbmctbGVmdDo4cHg7cGFkZGluZy1yaWdodDowfS5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC13aXRoLXRyYWlsaW5nLWljb257cGFkZGluZy10b3A6N3B4O3BhZGRpbmctYm90dG9tOjdweDtwYWRkaW5nLXJpZ2h0OjhweDtwYWRkaW5nLWxlZnQ6MTJweH1bZGlyPXJ0bF0gLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXdpdGgtdHJhaWxpbmctaWNvbntwYWRkaW5nLWxlZnQ6OHB4O3BhZGRpbmctcmlnaHQ6MTJweH0ubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtd2l0aC1hdmF0YXJ7cGFkZGluZy1sZWZ0OjA7cGFkZGluZy1yaWdodDoxMnB4fVtkaXI9cnRsXSAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtd2l0aC1hdmF0YXJ7cGFkZGluZy1yaWdodDowO3BhZGRpbmctbGVmdDoxMnB4fS5tYXQtc3RhbmRhcmQtY2hpcCAubWF0LWNoaXAtYXZhdGFye3dpZHRoOjI0cHg7aGVpZ2h0OjI0cHg7bWFyZ2luLXJpZ2h0OjhweDttYXJnaW4tbGVmdDo0cHh9W2Rpcj1ydGxdIC5tYXQtc3RhbmRhcmQtY2hpcCAubWF0LWNoaXAtYXZhdGFye21hcmdpbi1sZWZ0OjhweDttYXJnaW4tcmlnaHQ6NHB4fS5tYXQtc3RhbmRhcmQtY2hpcCAubWF0LWNoaXAtcmVtb3ZlLC5tYXQtc3RhbmRhcmQtY2hpcCAubWF0LWNoaXAtdHJhaWxpbmctaWNvbnt3aWR0aDoxOHB4O2hlaWdodDoxOHB4O2N1cnNvcjpwb2ludGVyfS5tYXQtc3RhbmRhcmQtY2hpcCAubWF0LWNoaXAtcmVtb3ZlLC5tYXQtc3RhbmRhcmQtY2hpcCAubWF0LWNoaXAtdHJhaWxpbmctaWNvbnttYXJnaW4tbGVmdDo4cHg7bWFyZ2luLXJpZ2h0OjB9W2Rpcj1ydGxdIC5tYXQtc3RhbmRhcmQtY2hpcCAubWF0LWNoaXAtcmVtb3ZlLFtkaXI9cnRsXSAubWF0LXN0YW5kYXJkLWNoaXAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb257bWFyZ2luLXJpZ2h0OjhweDttYXJnaW4tbGVmdDowfS5tYXQtY2hpcC1yaXBwbGV7dG9wOjA7bGVmdDowO3JpZ2h0OjA7Ym90dG9tOjA7cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6bm9uZTtib3JkZXItcmFkaXVzOmluaGVyaXQ7b3ZlcmZsb3c6aGlkZGVufS5tYXQtY2hpcC1saXN0LXdyYXBwZXJ7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOnJvdztmbGV4LXdyYXA6d3JhcDthbGlnbi1pdGVtczpjZW50ZXI7bWFyZ2luOi00cHh9Lm1hdC1jaGlwLWxpc3Qtd3JhcHBlciBpbnB1dC5tYXQtaW5wdXQtZWxlbWVudCwubWF0LWNoaXAtbGlzdC13cmFwcGVyIC5tYXQtc3RhbmRhcmQtY2hpcHttYXJnaW46NHB4fS5tYXQtY2hpcC1saXN0LXN0YWNrZWQgLm1hdC1jaGlwLWxpc3Qtd3JhcHBlcntmbGV4LWRpcmVjdGlvbjpjb2x1bW47YWxpZ24taXRlbXM6ZmxleC1zdGFydH0ubWF0LWNoaXAtbGlzdC1zdGFja2VkIC5tYXQtY2hpcC1saXN0LXdyYXBwZXIgLm1hdC1zdGFuZGFyZC1jaGlwe3dpZHRoOjEwMCV9Lm1hdC1jaGlwLWF2YXRhcntib3JkZXItcmFkaXVzOjUwJTtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjtkaXNwbGF5OmZsZXg7b3ZlcmZsb3c6aGlkZGVuO29iamVjdC1maXQ6Y292ZXJ9aW5wdXQubWF0LWNoaXAtaW5wdXR7d2lkdGg6MTUwcHg7bWFyZ2luOjRweDtmbGV4OjEgMCAxNTBweH1cbiddLGVuY2Fwc3VsYXRpb246MixjaGFuZ2VEZXRlY3Rpb246MH0pLEh4dC5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOktofSx7dHlwZTpPYn0se3R5cGU6dkYsZGVjb3JhdG9yczpbe3R5cGU6QnJ9XX0se3R5cGU6WFcsZGVjb3JhdG9yczpbe3R5cGU6QnJ9XX0se3R5cGU6aEcsZGVjb3JhdG9yczpbe3R5cGU6QnJ9XX0se3R5cGU6bkx9LHt0eXBlOmxXLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpWcn1dfV0sSHh0LnByb3BEZWNvcmF0b3JzPXtlcnJvclN0YXRlTWF0Y2hlcjpbe3R5cGU6Ul99XSxtdWx0aXBsZTpbe3R5cGU6Ul99XSxjb21wYXJlV2l0aDpbe3R5cGU6Ul99XSx2YWx1ZTpbe3R5cGU6Ul99XSxyZXF1aXJlZDpbe3R5cGU6Ul99XSxwbGFjZWhvbGRlcjpbe3R5cGU6Ul99XSxkaXNhYmxlZDpbe3R5cGU6Ul99XSxhcmlhT3JpZW50YXRpb246W3t0eXBlOlJfLGFyZ3M6WyJhcmlhLW9yaWVudGF0aW9uIl19XSxzZWxlY3RhYmxlOlt7dHlwZTpSX31dLHRhYkluZGV4Olt7dHlwZTpSX31dLGNoYW5nZTpbe3R5cGU6RV99XSx2YWx1ZUNoYW5nZTpbe3R5cGU6RV99XSxjaGlwczpbe3R5cGU6b3IsYXJnczpbRXh0LHtkZXNjZW5kYW50czohMH1dfV19LCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoSHh0LFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6Im1hdC1jaGlwLWxpc3QiLHRlbXBsYXRlOic8ZGl2IGNsYXNzPSJtYXQtY2hpcC1saXN0LXdyYXBwZXIiPjxuZy1jb250ZW50PjwvbmctY29udGVudD48L2Rpdj4nLGV4cG9ydEFzOiJtYXRDaGlwTGlzdCIsaG9zdDp7IlthdHRyLnRhYmluZGV4XSI6ImRpc2FibGVkID8gbnVsbCA6IF90YWJJbmRleCIsIlthdHRyLmFyaWEtZGVzY3JpYmVkYnldIjoiX2FyaWFEZXNjcmliZWRieSB8fCBudWxsIiwiW2F0dHIuYXJpYS1yZXF1aXJlZF0iOiJyb2xlID8gcmVxdWlyZWQgOiBudWxsIiwiW2F0dHIuYXJpYS1kaXNhYmxlZF0iOiJkaXNhYmxlZC50b1N0cmluZygpIiwiW2F0dHIuYXJpYS1pbnZhbGlkXSI6ImVycm9yU3RhdGUiLCJbYXR0ci5hcmlhLW11bHRpc2VsZWN0YWJsZV0iOiJtdWx0aXBsZSIsIlthdHRyLnJvbGVdIjoicm9sZSIsIltjbGFzcy5tYXQtY2hpcC1saXN0LWRpc2FibGVkXSI6ImRpc2FibGVkIiwiW2NsYXNzLm1hdC1jaGlwLWxpc3QtaW52YWxpZF0iOiJlcnJvclN0YXRlIiwiW2NsYXNzLm1hdC1jaGlwLWxpc3QtcmVxdWlyZWRdIjoicmVxdWlyZWQiLCJbYXR0ci5hcmlhLW9yaWVudGF0aW9uXSI6ImFyaWFPcmllbnRhdGlvbiIsY2xhc3M6Im1hdC1jaGlwLWxpc3QiLCIoZm9jdXMpIjoiZm9jdXMoKSIsIihibHVyKSI6Il9ibHVyKCkiLCIoa2V5ZG93bikiOiJfa2V5ZG93bigkZXZlbnQpIiwiW2lkXSI6Il91aWQifSxwcm92aWRlcnM6W3twcm92aWRlOmlVLHVzZUV4aXN0aW5nOkh4dH1dLGVuY2Fwc3VsYXRpb246V24uTm9uZSxjaGFuZ2VEZXRlY3Rpb246am4uT25QdXNoLHN0eWxlczpbJy5tYXQtY2hpcHtwb3NpdGlvbjpyZWxhdGl2ZTtib3gtc2l6aW5nOmJvcmRlci1ib3g7LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50O3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApO2JvcmRlcjpub25lOy13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lfS5tYXQtc3RhbmRhcmQtY2hpcHt0cmFuc2l0aW9uOmJveC1zaGFkb3cgMjgwbXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKTtkaXNwbGF5OmlubGluZS1mbGV4O3BhZGRpbmc6N3B4IDEycHg7Ym9yZGVyLXJhZGl1czoxNnB4O2FsaWduLWl0ZW1zOmNlbnRlcjtjdXJzb3I6ZGVmYXVsdDttaW4taGVpZ2h0OjMycHg7aGVpZ2h0OjFweH0uX21hdC1hbmltYXRpb24tbm9vcGFibGUubWF0LXN0YW5kYXJkLWNoaXB7dHJhbnNpdGlvbjpub25lO2FuaW1hdGlvbjpub25lfS5tYXQtc3RhbmRhcmQtY2hpcCAubWF0LWNoaXAtcmVtb3ZlLm1hdC1pY29ue3dpZHRoOjE4cHg7aGVpZ2h0OjE4cHh9Lm1hdC1zdGFuZGFyZC1jaGlwOjphZnRlcnt0b3A6MDtsZWZ0OjA7cmlnaHQ6MDtib3R0b206MDtwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItcmFkaXVzOmluaGVyaXQ7b3BhY2l0eTowO2NvbnRlbnQ6IiI7cG9pbnRlci1ldmVudHM6bm9uZTt0cmFuc2l0aW9uOm9wYWNpdHkgMjAwbXMgY3ViaWMtYmV6aWVyKDAuMzUsIDAsIDAuMjUsIDEpfS5tYXQtc3RhbmRhcmQtY2hpcDpob3Zlcjo6YWZ0ZXJ7b3BhY2l0eTouMTJ9Lm1hdC1zdGFuZGFyZC1jaGlwOmZvY3Vze291dGxpbmU6bm9uZX0ubWF0LXN0YW5kYXJkLWNoaXA6Zm9jdXM6OmFmdGVye29wYWNpdHk6LjE2fS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1zdGFuZGFyZC1jaGlwe291dGxpbmU6c29saWQgMXB4fS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1zdGFuZGFyZC1jaGlwOmZvY3Vze291dGxpbmU6ZG90dGVkIDJweH0ubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtZGlzYWJsZWQ6OmFmdGVye29wYWNpdHk6MH0ubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtZGlzYWJsZWQgLm1hdC1jaGlwLXJlbW92ZSwubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtZGlzYWJsZWQgLm1hdC1jaGlwLXRyYWlsaW5nLWljb257Y3Vyc29yOmRlZmF1bHR9Lm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXdpdGgtdHJhaWxpbmctaWNvbi5tYXQtY2hpcC13aXRoLWF2YXRhciwubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtd2l0aC1hdmF0YXJ7cGFkZGluZy10b3A6MDtwYWRkaW5nLWJvdHRvbTowfS5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC13aXRoLXRyYWlsaW5nLWljb24ubWF0LWNoaXAtd2l0aC1hdmF0YXJ7cGFkZGluZy1yaWdodDo4cHg7cGFkZGluZy1sZWZ0OjB9W2Rpcj1ydGxdIC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC13aXRoLXRyYWlsaW5nLWljb24ubWF0LWNoaXAtd2l0aC1hdmF0YXJ7cGFkZGluZy1sZWZ0OjhweDtwYWRkaW5nLXJpZ2h0OjB9Lm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXdpdGgtdHJhaWxpbmctaWNvbntwYWRkaW5nLXRvcDo3cHg7cGFkZGluZy1ib3R0b206N3B4O3BhZGRpbmctcmlnaHQ6OHB4O3BhZGRpbmctbGVmdDoxMnB4fVtkaXI9cnRsXSAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtd2l0aC10cmFpbGluZy1pY29ue3BhZGRpbmctbGVmdDo4cHg7cGFkZGluZy1yaWdodDoxMnB4fS5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC13aXRoLWF2YXRhcntwYWRkaW5nLWxlZnQ6MDtwYWRkaW5nLXJpZ2h0OjEycHh9W2Rpcj1ydGxdIC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC13aXRoLWF2YXRhcntwYWRkaW5nLXJpZ2h0OjA7cGFkZGluZy1sZWZ0OjEycHh9Lm1hdC1zdGFuZGFyZC1jaGlwIC5tYXQtY2hpcC1hdmF0YXJ7d2lkdGg6MjRweDtoZWlnaHQ6MjRweDttYXJnaW4tcmlnaHQ6OHB4O21hcmdpbi1sZWZ0OjRweH1bZGlyPXJ0bF0gLm1hdC1zdGFuZGFyZC1jaGlwIC5tYXQtY2hpcC1hdmF0YXJ7bWFyZ2luLWxlZnQ6OHB4O21hcmdpbi1yaWdodDo0cHh9Lm1hdC1zdGFuZGFyZC1jaGlwIC5tYXQtY2hpcC1yZW1vdmUsLm1hdC1zdGFuZGFyZC1jaGlwIC5tYXQtY2hpcC10cmFpbGluZy1pY29ue3dpZHRoOjE4cHg7aGVpZ2h0OjE4cHg7Y3Vyc29yOnBvaW50ZXJ9Lm1hdC1zdGFuZGFyZC1jaGlwIC5tYXQtY2hpcC1yZW1vdmUsLm1hdC1zdGFuZGFyZC1jaGlwIC5tYXQtY2hpcC10cmFpbGluZy1pY29ue21hcmdpbi1sZWZ0OjhweDttYXJnaW4tcmlnaHQ6MH1bZGlyPXJ0bF0gLm1hdC1zdGFuZGFyZC1jaGlwIC5tYXQtY2hpcC1yZW1vdmUsW2Rpcj1ydGxdIC5tYXQtc3RhbmRhcmQtY2hpcCAubWF0LWNoaXAtdHJhaWxpbmctaWNvbnttYXJnaW4tcmlnaHQ6OHB4O21hcmdpbi1sZWZ0OjB9Lm1hdC1jaGlwLXJpcHBsZXt0b3A6MDtsZWZ0OjA7cmlnaHQ6MDtib3R0b206MDtwb3NpdGlvbjphYnNvbHV0ZTtwb2ludGVyLWV2ZW50czpub25lO2JvcmRlci1yYWRpdXM6aW5oZXJpdDtvdmVyZmxvdzpoaWRkZW59Lm1hdC1jaGlwLWxpc3Qtd3JhcHBlcntkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246cm93O2ZsZXgtd3JhcDp3cmFwO2FsaWduLWl0ZW1zOmNlbnRlcjttYXJnaW46LTRweH0ubWF0LWNoaXAtbGlzdC13cmFwcGVyIGlucHV0Lm1hdC1pbnB1dC1lbGVtZW50LC5tYXQtY2hpcC1saXN0LXdyYXBwZXIgLm1hdC1zdGFuZGFyZC1jaGlwe21hcmdpbjo0cHh9Lm1hdC1jaGlwLWxpc3Qtc3RhY2tlZCAubWF0LWNoaXAtbGlzdC13cmFwcGVye2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjthbGlnbi1pdGVtczpmbGV4LXN0YXJ0fS5tYXQtY2hpcC1saXN0LXN0YWNrZWQgLm1hdC1jaGlwLWxpc3Qtd3JhcHBlciAubWF0LXN0YW5kYXJkLWNoaXB7d2lkdGg6MTAwJX0ubWF0LWNoaXAtYXZhdGFye2JvcmRlci1yYWRpdXM6NTAlO2p1c3RpZnktY29udGVudDpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyO2Rpc3BsYXk6ZmxleDtvdmVyZmxvdzpoaWRkZW47b2JqZWN0LWZpdDpjb3Zlcn1pbnB1dC5tYXQtY2hpcC1pbnB1dHt3aWR0aDoxNTBweDttYXJnaW46NHB4O2ZsZXg6MSAwIDE1MHB4fVxuJ119XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpLaH0se3R5cGU6T2J9LHt0eXBlOnZGLGRlY29yYXRvcnM6W3t0eXBlOkJyfV19LHt0eXBlOlhXLGRlY29yYXRvcnM6W3t0eXBlOkJyfV19LHt0eXBlOmhHLGRlY29yYXRvcnM6W3t0eXBlOkJyfV19LHt0eXBlOm5MfSx7dHlwZTpsVyxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6VnJ9XX1dfSkse2FyaWFPcmllbnRhdGlvbjpbe3R5cGU6Ul8sYXJnczpbImFyaWEtb3JpZW50YXRpb24iXX1dLGNoYW5nZTpbe3R5cGU6RV99XSx2YWx1ZUNoYW5nZTpbe3R5cGU6RV99XSxtdWx0aXBsZTpbe3R5cGU6Ul99XSxjb21wYXJlV2l0aDpbe3R5cGU6Ul99XSx2YWx1ZTpbe3R5cGU6Ul99XSxyZXF1aXJlZDpbe3R5cGU6Ul99XSxwbGFjZWhvbGRlcjpbe3R5cGU6Ul99XSxkaXNhYmxlZDpbe3R5cGU6Ul99XSxzZWxlY3RhYmxlOlt7dHlwZTpSX31dLHRhYkluZGV4Olt7dHlwZTpSX31dLGVycm9yU3RhdGVNYXRjaGVyOlt7dHlwZTpSX31dLGNoaXBzOlt7dHlwZTpvcixhcmdzOltFeHQse2Rlc2NlbmRhbnRzOiEwfV19XX0pOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KbGV0IEZ4dD0wO2NsYXNzIEx4dHtjb25zdHJ1Y3Rvcih0LGUpe3RoaXMuX2VsZW1lbnRSZWY9dCx0aGlzLl9kZWZhdWx0T3B0aW9ucz1lLHRoaXMuZm9jdXNlZD0hMSx0aGlzLl9hZGRPbkJsdXI9ITEsdGhpcy5zZXBhcmF0b3JLZXlDb2Rlcz10aGlzLl9kZWZhdWx0T3B0aW9ucy5zZXBhcmF0b3JLZXlDb2Rlcyx0aGlzLmNoaXBFbmQ9bmV3IFN5LHRoaXMucGxhY2Vob2xkZXI9IiIsdGhpcy5pZD0ibWF0LWNoaXAtbGlzdC1pbnB1dC0iK0Z4dCsrLHRoaXMuX2Rpc2FibGVkPSExLHRoaXMuaW5wdXRFbGVtZW50PXRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudH1zZXQgY2hpcExpc3QodCl7dCYmKHRoaXMuX2NoaXBMaXN0PXQsdGhpcy5fY2hpcExpc3QucmVnaXN0ZXJJbnB1dCh0aGlzKSl9Z2V0IGFkZE9uQmx1cigpe3JldHVybiB0aGlzLl9hZGRPbkJsdXJ9c2V0IGFkZE9uQmx1cih0KXt0aGlzLl9hZGRPbkJsdXI9ZUgodCl9Z2V0IGRpc2FibGVkKCl7cmV0dXJuIHRoaXMuX2Rpc2FibGVkfHx0aGlzLl9jaGlwTGlzdCYmdGhpcy5fY2hpcExpc3QuZGlzYWJsZWR9c2V0IGRpc2FibGVkKHQpe3RoaXMuX2Rpc2FibGVkPWVIKHQpfWdldCBlbXB0eSgpe3JldHVybiF0aGlzLmlucHV0RWxlbWVudC52YWx1ZX1uZ09uQ2hhbmdlcygpe3RoaXMuX2NoaXBMaXN0LnN0YXRlQ2hhbmdlcy5uZXh0KCl9bmdPbkRlc3Ryb3koKXt0aGlzLmNoaXBFbmQuY29tcGxldGUoKX1uZ0FmdGVyQ29udGVudEluaXQoKXt0aGlzLl9mb2N1c0xhc3RDaGlwT25CYWNrc3BhY2U9dGhpcy5lbXB0eX1fa2V5ZG93bih0KXtpZih0KXtpZig5IT09dC5rZXlDb2RlfHx0SCh0LCJzaGlmdEtleSIpfHx0aGlzLl9jaGlwTGlzdC5fYWxsb3dGb2N1c0VzY2FwZSgpLDg9PT10LmtleUNvZGUmJnRoaXMuX2ZvY3VzTGFzdENoaXBPbkJhY2tzcGFjZSlyZXR1cm4gdGhpcy5fY2hpcExpc3QuX2tleU1hbmFnZXIuc2V0TGFzdEl0ZW1BY3RpdmUoKSx2b2lkIHQucHJldmVudERlZmF1bHQoKTt0aGlzLl9mb2N1c0xhc3RDaGlwT25CYWNrc3BhY2U9ITF9dGhpcy5fZW1pdENoaXBFbmQodCl9X2tleXVwKHQpeyF0aGlzLl9mb2N1c0xhc3RDaGlwT25CYWNrc3BhY2UmJjg9PT10LmtleUNvZGUmJnRoaXMuZW1wdHkmJih0aGlzLl9mb2N1c0xhc3RDaGlwT25CYWNrc3BhY2U9ITAsdC5wcmV2ZW50RGVmYXVsdCgpKX1fYmx1cigpe3RoaXMuYWRkT25CbHVyJiZ0aGlzLl9lbWl0Q2hpcEVuZCgpLHRoaXMuZm9jdXNlZD0hMSx0aGlzLl9jaGlwTGlzdC5mb2N1c2VkfHx0aGlzLl9jaGlwTGlzdC5fYmx1cigpLHRoaXMuX2NoaXBMaXN0LnN0YXRlQ2hhbmdlcy5uZXh0KCl9X2ZvY3VzKCl7dGhpcy5mb2N1c2VkPSEwLHRoaXMuX2ZvY3VzTGFzdENoaXBPbkJhY2tzcGFjZT10aGlzLmVtcHR5LHRoaXMuX2NoaXBMaXN0LnN0YXRlQ2hhbmdlcy5uZXh0KCl9X2VtaXRDaGlwRW5kKHQpeyF0aGlzLmlucHV0RWxlbWVudC52YWx1ZSYmdCYmdGhpcy5fY2hpcExpc3QuX2tleWRvd24odCksdCYmIXRoaXMuX2lzU2VwYXJhdG9yS2V5KHQpfHwodGhpcy5jaGlwRW5kLmVtaXQoe2lucHV0OnRoaXMuaW5wdXRFbGVtZW50LHZhbHVlOnRoaXMuaW5wdXRFbGVtZW50LnZhbHVlLGNoaXBJbnB1dDp0aGlzfSksbnVsbD09dHx8dC5wcmV2ZW50RGVmYXVsdCgpKX1fb25JbnB1dCgpe3RoaXMuX2NoaXBMaXN0LnN0YXRlQ2hhbmdlcy5uZXh0KCl9Zm9jdXModCl7dGhpcy5pbnB1dEVsZW1lbnQuZm9jdXModCl9Y2xlYXIoKXt0aGlzLmlucHV0RWxlbWVudC52YWx1ZT0iIix0aGlzLl9mb2N1c0xhc3RDaGlwT25CYWNrc3BhY2U9ITB9X2lzU2VwYXJhdG9yS2V5KHQpe3JldHVybiF0SCh0KSYmbmV3IFNldCh0aGlzLnNlcGFyYXRvcktleUNvZGVzKS5oYXModC5rZXlDb2RlKX19THh0Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxMeHQpKGdmKEtoKSxnZihUeHQpKX0sTHh0Lsm1ZGlyPWhvKHt0eXBlOkx4dCxzZWxlY3RvcnM6W1siaW5wdXQiLCJtYXRDaGlwSW5wdXRGb3IiLCIiXV0saG9zdEF0dHJzOlsxLCJtYXQtY2hpcC1pbnB1dCIsIm1hdC1pbnB1dC1lbGVtZW50Il0saG9zdFZhcnM6NSxob3N0QmluZGluZ3M6ZnVuY3Rpb24gdChlLG4pezEmZSYmUmYoImtleWRvd24iLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLl9rZXlkb3duKGUpfSkpKCJrZXl1cCIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4uX2tleXVwKGUpfSkpKCJibHVyIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLl9ibHVyKCl9KSkoImZvY3VzIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLl9mb2N1cygpfSkpKCJpbnB1dCIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5fb25JbnB1dCgpfSkpLDImZSYmKGNnKCJpZCIsbi5pZCkseW0oImRpc2FibGVkIixuLmRpc2FibGVkfHxudWxsKSgicGxhY2Vob2xkZXIiLG4ucGxhY2Vob2xkZXJ8fG51bGwpKCJhcmlhLWludmFsaWQiLG4uX2NoaXBMaXN0JiZuLl9jaGlwTGlzdC5uZ0NvbnRyb2w/bi5fY2hpcExpc3QubmdDb250cm9sLmludmFsaWQ6bnVsbCkoImFyaWEtcmVxdWlyZWQiLG4uX2NoaXBMaXN0JiZuLl9jaGlwTGlzdC5yZXF1aXJlZHx8bnVsbCkpfSxpbnB1dHM6e3NlcGFyYXRvcktleUNvZGVzOlsibWF0Q2hpcElucHV0U2VwYXJhdG9yS2V5Q29kZXMiLCJzZXBhcmF0b3JLZXlDb2RlcyJdLHBsYWNlaG9sZGVyOiJwbGFjZWhvbGRlciIsaWQ6ImlkIixjaGlwTGlzdDpbIm1hdENoaXBJbnB1dEZvciIsImNoaXBMaXN0Il0sYWRkT25CbHVyOlsibWF0Q2hpcElucHV0QWRkT25CbHVyIiwiYWRkT25CbHVyIl0sZGlzYWJsZWQ6ImRpc2FibGVkIn0sb3V0cHV0czp7Y2hpcEVuZDoibWF0Q2hpcElucHV0VG9rZW5FbmQifSxleHBvcnRBczpbIm1hdENoaXBJbnB1dCIsIm1hdENoaXBJbnB1dEZvciJdLGZlYXR1cmVzOltxb119KSxMeHQuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpLaH0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W1R4dF19XX1dLEx4dC5wcm9wRGVjb3JhdG9ycz17Y2hpcExpc3Q6W3t0eXBlOlJfLGFyZ3M6WyJtYXRDaGlwSW5wdXRGb3IiXX1dLGFkZE9uQmx1cjpbe3R5cGU6Ul8sYXJnczpbIm1hdENoaXBJbnB1dEFkZE9uQmx1ciJdfV0sc2VwYXJhdG9yS2V5Q29kZXM6W3t0eXBlOlJfLGFyZ3M6WyJtYXRDaGlwSW5wdXRTZXBhcmF0b3JLZXlDb2RlcyJdfV0sY2hpcEVuZDpbe3R5cGU6RV8sYXJnczpbIm1hdENoaXBJbnB1dFRva2VuRW5kIl19XSxwbGFjZWhvbGRlcjpbe3R5cGU6Ul99XSxpZDpbe3R5cGU6Ul99XSxkaXNhYmxlZDpbe3R5cGU6Ul99XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihMeHQsW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3RvcjoiaW5wdXRbbWF0Q2hpcElucHV0Rm9yXSIsZXhwb3J0QXM6Im1hdENoaXBJbnB1dCwgbWF0Q2hpcElucHV0Rm9yIixob3N0OntjbGFzczoibWF0LWNoaXAtaW5wdXQgbWF0LWlucHV0LWVsZW1lbnQiLCIoa2V5ZG93bikiOiJfa2V5ZG93bigkZXZlbnQpIiwiKGtleXVwKSI6Il9rZXl1cCgkZXZlbnQpIiwiKGJsdXIpIjoiX2JsdXIoKSIsIihmb2N1cykiOiJfZm9jdXMoKSIsIihpbnB1dCkiOiJfb25JbnB1dCgpIiwiW2lkXSI6ImlkIiwiW2F0dHIuZGlzYWJsZWRdIjoiZGlzYWJsZWQgfHwgbnVsbCIsIlthdHRyLnBsYWNlaG9sZGVyXSI6InBsYWNlaG9sZGVyIHx8IG51bGwiLCJbYXR0ci5hcmlhLWludmFsaWRdIjoiX2NoaXBMaXN0ICYmIF9jaGlwTGlzdC5uZ0NvbnRyb2wgPyBfY2hpcExpc3QubmdDb250cm9sLmludmFsaWQgOiBudWxsIiwiW2F0dHIuYXJpYS1yZXF1aXJlZF0iOiJfY2hpcExpc3QgJiYgX2NoaXBMaXN0LnJlcXVpcmVkIHx8IG51bGwifX1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOktofSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbVHh0XX1dfV19KSx7c2VwYXJhdG9yS2V5Q29kZXM6W3t0eXBlOlJfLGFyZ3M6WyJtYXRDaGlwSW5wdXRTZXBhcmF0b3JLZXlDb2RlcyJdfV0sY2hpcEVuZDpbe3R5cGU6RV8sYXJnczpbIm1hdENoaXBJbnB1dFRva2VuRW5kIl19XSxwbGFjZWhvbGRlcjpbe3R5cGU6Ul99XSxpZDpbe3R5cGU6Ul99XSxjaGlwTGlzdDpbe3R5cGU6Ul8sYXJnczpbIm1hdENoaXBJbnB1dEZvciJdfV0sYWRkT25CbHVyOlt7dHlwZTpSXyxhcmdzOlsibWF0Q2hpcElucHV0QWRkT25CbHVyIl19XSxkaXNhYmxlZDpbe3R5cGU6Ul99XX0pOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY29uc3QgQnh0PVtIeHQsRXh0LEx4dCxBeHQsRHh0LFJ4dF0sVnh0PXtzZXBhcmF0b3JLZXlDb2RlczpbWEldfTtjbGFzcyBqeHR7fWp4dC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8anh0KX0sanh0Lsm1bW9kPWZvKHt0eXBlOmp4dH0pLGp4dC7JtWluaj1Ebih7cHJvdmlkZXJzOltuTCx7cHJvdmlkZTpUeHQsdXNlVmFsdWU6Vnh0fV0saW1wb3J0czpbW05GXV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKGp4dCxbe3R5cGU6TF8sYXJnczpbe2ltcG9ydHM6W05GXSxleHBvcnRzOkJ4dCxkZWNsYXJhdGlvbnM6Qnh0LHByb3ZpZGVyczpbbkwse3Byb3ZpZGU6VHh0LHVzZVZhbHVlOlZ4dH1dfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmdW8oanh0LHtkZWNsYXJhdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm5bSHh0LEV4dCxMeHQsQXh0LER4dCxSeHRdfSxpbXBvcnRzOmZ1bmN0aW9uKCl7cmV0dXJuW05GXX0sZXhwb3J0czpmdW5jdGlvbigpe3JldHVybltIeHQsRXh0LEx4dCxBeHQsRHh0LFJ4dF19fSk7Y29uc3QgVXh0PWZ1bmN0aW9uKHQsZSl7cmV0dXJueyJlbWJlZGRpbmctc2VsZWN0ZWQiOnQsImVtYmVkZGluZy11bnNlbGVjdGVkIjplfX07ZnVuY3Rpb24gV3h0KHQsZSl7aWYoMSZ0KXtjb25zdCB0PXdmKCk7Q2YoMCwibWF0LWljb24iLDUpLFJmKCJjbGljayIsKGZ1bmN0aW9uIGUoKXtQaSh0KTtjb25zdCBuPXpmKCk7cmV0dXJuIG4ub25TZWxlY3QuZW1pdChuLm1ldHJpYyl9KSksTWYoKX1pZigyJnQpe2NvbnN0IHQ9emYoKTtiZigibmdDbGFzcyIsYXkoMSxVeHQsdC5lbWJlZGRpbmdzTWV0cmljPT09dC5tZXRyaWMsdC5lbWJlZGRpbmdzTWV0cmljIT09dC5tZXRyaWMpKX19Y29uc3QgR3h0PWZ1bmN0aW9uKHQpe3JldHVybnt3aWR0aDp0fX0sWXh0PWZ1bmN0aW9uKHQpe3JldHVybnsidmFsdWUtaW52YWxpZCI6dH19O2NsYXNzIHF4dHtjb25zdHJ1Y3Rvcigpe3RoaXMub25SZW1vdmU9bmV3IFN5LHRoaXMub25TZWxlY3Q9bmV3IFN5LHRoaXMub25GaWx0ZXJDaGFuZ2U9bmV3IFN5LHRoaXMuZm9jdXNNaW49ITEsdGhpcy5mb2N1c01heD0hMSx0aGlzLm5nVW5zdWJzY3JpYmU9bmV3IEJ9bmdPbkluaXQoKXt0aGlzLm1pbkZvcm1Db250cm9sPW5ldyBXVyh0aGlzLmZpbHRlclZhbHVlcy5taW4sW05VLnJlcXVpcmVkLE5VLm1pbigtMSksTlUubWF4KDEpLHRoaXMubWluVmFsdWVWYWxpZGF0b3IuYmluZCh0aGlzKV0pLHRoaXMubWF4Rm9ybUNvbnRyb2w9bmV3IFdXKHRoaXMuZmlsdGVyVmFsdWVzLm1heCxbTlUucmVxdWlyZWQsTlUubWluKC0xKSxOVS5tYXgoMSksdGhpcy5tYXhWYWx1ZVZhbGlkYXRvci5iaW5kKHRoaXMpXSksdGhpcy5taW5Gb3JtQ29udHJvbC52YWx1ZUNoYW5nZXMucGlwZShqZSh0aGlzLm5nVW5zdWJzY3JpYmUpKS5zdWJzY3JpYmUoKCgpPT57dGhpcy5taW5Gb3JtQ29udHJvbC52YWxpZCYmdGhpcy5tYXhGb3JtQ29udHJvbC52YWxpZCYmdGhpcy5vbkZpbHRlckNoYW5nZS5lbWl0KHttaW46cGFyc2VGbG9hdCh0aGlzLm1pbkZvcm1Db250cm9sLnZhbHVlKSxtYXg6cGFyc2VGbG9hdCh0aGlzLm1heEZvcm1Db250cm9sLnZhbHVlKX0pfSkpLHRoaXMubWF4Rm9ybUNvbnRyb2wudmFsdWVDaGFuZ2VzLnBpcGUoamUodGhpcy5uZ1Vuc3Vic2NyaWJlKSkuc3Vic2NyaWJlKCgoKT0+e3RoaXMubWluRm9ybUNvbnRyb2wudmFsaWQmJnRoaXMubWF4Rm9ybUNvbnRyb2wudmFsaWQmJnRoaXMub25GaWx0ZXJDaGFuZ2UuZW1pdCh7bWluOnBhcnNlRmxvYXQodGhpcy5taW5Gb3JtQ29udHJvbC52YWx1ZSksbWF4OnBhcnNlRmxvYXQodGhpcy5tYXhGb3JtQ29udHJvbC52YWx1ZSl9KX0pKX1uZ09uQ2hhbmdlcyh0KXt0aGlzLm1pbkZvcm1Db250cm9sJiZ0aGlzLm1heEZvcm1Db250cm9sJiYodGhpcy5taW5Gb3JtQ29udHJvbC5zZXRWYWx1ZSh0aGlzLmZpbHRlclZhbHVlcy5taW4se2VtaXRFdmVudDohMX0pLHRoaXMubWF4Rm9ybUNvbnRyb2wuc2V0VmFsdWUodGhpcy5maWx0ZXJWYWx1ZXMubWF4LHtlbWl0RXZlbnQ6ITF9KSl9bmdPbkRlc3Ryb3koKXt0aGlzLm5nVW5zdWJzY3JpYmUubmV4dCgpLHRoaXMubmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpfW1pblZhbHVlVmFsaWRhdG9yKHQpe3JldHVybiB0aGlzLm1heEZvcm1Db250cm9sJiYiTmFOIiE9PXQudmFsdWU/aXNOYU4ocGFyc2VGbG9hdCh0LnZhbHVlKSk/e3ZhbHVlOiJ0aGUgc3RyaW5nIHlvdSBlbnRlcmVkIGlzIG5laXRoZXIgTmFOIG5vciBhIG51bWJlciJ9OnBhcnNlRmxvYXQodC52YWx1ZSk+cGFyc2VGbG9hdCh0aGlzLm1heEZvcm1Db250cm9sLnZhbHVlKT97dmFsdWU6InRoZSBudW1iZXIgeW91IGVudGVyZWQgaXMgbGFyZ2VyIHRoYW4gdGhlIG1heCB2YWx1ZSJ9Om51bGw6bnVsbH1tYXhWYWx1ZVZhbGlkYXRvcih0KXtyZXR1cm4gdGhpcy5taW5Gb3JtQ29udHJvbD8iTmFOIj09PXRoaXMubWluRm9ybUNvbnRyb2wudmFsdWUmJiJOYU4iPT09dC52YWx1ZT9udWxsOmlzTmFOKHBhcnNlRmxvYXQodC52YWx1ZSkpP3t2YWx1ZToidGhlIHN0cmluZyB5b3UgZW50ZXJlZCBpcyBuZWl0aGVyIE5hTiBub3IgYSBudW1iZXIifTp0LnZhbHVlPHRoaXMubWluRm9ybUNvbnRyb2wudmFsdWU/e3ZhbHVlOiJ0aGUgbnVtYmVyIHlvdSBlbnRlcmVkIGlzIHNtYWxsZXIgdGhhbiB0aGUgbWluIHZhbHVlIn06bnVsbDpudWxsfWdldEVycm9yRGVzY3JpcHRpb24odCl7aWYodCl7Y29uc3QgZT1PYmplY3Qua2V5cyh0KVswXTtyZXR1cm4icmVxdWlyZWQiPT09ZT8ieW91IGRpZCBub3QgZW50ZXIgYW55dGhpbmciOiJtaW4iPT09ZT8idGhlIG51bWJlciBtdXN0IGJlIGF0IGxlYXN0IC0xLjAiOiJtYXgiPT09ZT8idGhlIG51bWJlciBpcyBiaWdnZXIgdGhhbiAxLjAiOnRbZV19cmV0dXJuIiJ9fXF4dC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8cXh0KX0scXh0Lsm1Y21wPXNvKHt0eXBlOnF4dCxzZWxlY3RvcnM6W1sibWV0cmljLWFyaXRobWV0aWMtZWxlbWVudC1jb21wb25lbnQiXV0saW5wdXRzOnttZXRyaWM6Im1ldHJpYyIsZmlsdGVyVmFsdWVzOiJmaWx0ZXJWYWx1ZXMiLGhhc0VtYmVkZGluZ3NEYXRhOiJoYXNFbWJlZGRpbmdzRGF0YSIsZW1iZWRkaW5nc01ldHJpYzoiZW1iZWRkaW5nc01ldHJpYyJ9LG91dHB1dHM6e29uUmVtb3ZlOiJvblJlbW92ZSIsb25TZWxlY3Q6Im9uU2VsZWN0IixvbkZpbHRlckNoYW5nZToib25GaWx0ZXJDaGFuZ2UifSxmZWF0dXJlczpbcW9dLGRlY2xzOjEwLHZhcnM6MjIsY29uc3RzOltbMSwiZmlsdGVyLWNoaXAiLDMsInJlbW92ZWQiXSxbImNsYXNzIiwiZW1iZWRkaW5ncy1idXR0b24iLCJzdmdJY29uIiwiZ3JvdXBfd29ya18yNHB4IiwzLCJuZ0NsYXNzIiwiY2xpY2siLDQsIm5nSWYiXSxbMSwibWV0cmljLWFyaXRobWV0aWMtZWxlbWVudC1yYW5nZSIsMywia2V5ZG93biJdLFsibWF0SW5wdXQiLCIiLDEsImlucHV0LWZpZWxkIiwzLCJ2YWx1ZSIsIm1hdFRvb2x0aXAiLCJtYXRUb29sdGlwRGlzYWJsZWQiLCJuZ1N0eWxlIiwibmdDbGFzcyIsImZvcm1Db250cm9sIiwiZm9jdXMiLCJmb2N1c291dCJdLFsibWF0Q2hpcFJlbW92ZSIsIiIsInN2Z0ljb24iLCJjYW5jZWxfMjRweCJdLFsic3ZnSWNvbiIsImdyb3VwX3dvcmtfMjRweCIsMSwiZW1iZWRkaW5ncy1idXR0b24iLDMsIm5nQ2xhc3MiLCJjbGljayJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoQ2YoMCwibWF0LWNoaXAiLDApLFJmKCJyZW1vdmVkIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLm9uUmVtb3ZlLmVtaXQobi5tZXRyaWMpfSkpLEhtKDEsV3h0LDEsNCwibWF0LWljb24iLDEpLFB1KDIpLENmKDMsImRpdiIsMiksUmYoImtleWRvd24iLChmdW5jdGlvbiB0KGUpe3JldHVybiBlLnN0b3BQcm9wYWdhdGlvbigpfSkpLFB1KDQsIiBbICIpLENmKDUsImlucHV0IiwzKSxSZigiZm9jdXMiLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4uZm9jdXNNaW49ITB9KSkoImZvY3Vzb3V0IiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLmZvY3VzTWluPSExfSkpLE1mKCksUHUoNiwiIDsgIiksQ2YoNywiaW5wdXQiLDMpLFJmKCJmb2N1cyIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5mb2N1c01heD0hMH0pKSgiZm9jdXNvdXQiLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4uZm9jdXNNYXg9ITF9KSksTWYoKSxQdSg4LCIgXSAiKSxNZigpLHZmKDksIm1hdC1pY29uIiw0KSxNZigpKSwyJmUmJihEYygxKSxiZigibmdJZiIsbi5oYXNFbWJlZGRpbmdzRGF0YSksRGMoMSksa3UoIiAiLG4ubWV0cmljLCIgIiksRGMoMyksYmYoInZhbHVlIixuLmZpbHRlclZhbHVlcy5taW4pKCJtYXRUb29sdGlwIixuLmdldEVycm9yRGVzY3JpcHRpb24obi5taW5Gb3JtQ29udHJvbC5lcnJvcnMpKSgibWF0VG9vbHRpcERpc2FibGVkIiwhbi5taW5Gb3JtQ29udHJvbC5pbnZhbGlkKSgibmdTdHlsZSIsaXkoMTQsR3h0LG4uZm9jdXNNaW4/IjEwMHB4IjpuLm1pbkZvcm1Db250cm9sLnZhbHVlLnRvU3RyaW5nKCkubGVuZ3RoKyJjaCIpKSgibmdDbGFzcyIsaXkoMTYsWXh0LCFuLm1pbkZvcm1Db250cm9sLnZhbGlkKSkoImZvcm1Db250cm9sIixuLm1pbkZvcm1Db250cm9sKSxEYygyKSxiZigidmFsdWUiLG4uZmlsdGVyVmFsdWVzLm1heCkoIm1hdFRvb2x0aXAiLG4uZ2V0RXJyb3JEZXNjcmlwdGlvbihuLm1heEZvcm1Db250cm9sLmVycm9ycykpKCJtYXRUb29sdGlwRGlzYWJsZWQiLCFuLm1heEZvcm1Db250cm9sLmludmFsaWQpKCJuZ1N0eWxlIixpeSgxOCxHeHQsbi5mb2N1c01heD8iMTAwcHgiOm4ubWF4Rm9ybUNvbnRyb2wudmFsdWUudG9TdHJpbmcoKS5sZW5ndGgrImNoIikpKCJuZ0NsYXNzIixpeSgyMCxZeHQsIW4ubWF4Rm9ybUNvbnRyb2wudmFsaWQpKSgiZm9ybUNvbnRyb2wiLG4ubWF4Rm9ybUNvbnRyb2wpKX0sZGlyZWN0aXZlczpbRXh0LFB2LFNVLEwwLHp2LEN2LG1XLHVHLE1xLEF4dF0sc3R5bGVzOlsnLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjEycHg7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtYmFkZ2Utc21hbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6OXB4fS5tYXQtYmFkZ2UtbGFyZ2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweH0ubWF0LWgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1oZWFkbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMjRweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNnB4LzI4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNXB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC44MykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtaDZbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuNjcpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWJvZHktc3Ryb25nW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjAgMCAxMnB4fS5tYXQtc21hbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDEycHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjMwMCAxMTJweC8xMTJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDVlbTttYXJnaW46MCAwIDU2cHh9Lm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDU2cHgvNTZweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDJlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDQ1cHgvNDhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDA1ZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAzNHB4LzQwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDY0cHh9Lm1hdC1ib3R0b20tc2hlZXQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhcmQtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjIwcHh9Lm1hdC1jYXJkLXN1YnRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXJkLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNoZWNrYm94LWxheW91dFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoyNHB4fS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtdHJhaWxpbmctaWNvbi5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MThweH0ubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1oZWFkZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9vdGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2FsZW5kYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhbGVuZGFyLWJvZHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxM3B4fS5tYXQtY2FsZW5kYXItYm9keS1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FsZW5kYXItcGVyaW9kLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRoW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo0MDB9Lm1hdC1kaWFsb2ctdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDoxLjEyNTtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE1MCU7bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS41ZW07d2lkdGg6MS41ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNWVtIDA7Ym9yZGVyLXRvcDouODQzNzVlbSBzb2xpZCB0cmFuc3BhcmVudH0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTAuODQzNzVlbTtwYWRkaW5nLXRvcDouODQzNzVlbX0ubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo3NSU7bWFyZ2luLXRvcDouNjY2NjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjc5MTY2NjY2NjdlbSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNDM3NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMnB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTJlbSkgc2NhbGUoMC43NSl9fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi4yNWVtIDAgLjc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMDkzNzVlbTttYXJnaW4tdG9wOi0wLjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjFlbSAwIDFlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS44NDM3NWVtO21hcmdpbi10b3A6LTAuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9aW5wdXQubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LTAuMDYyNWVtfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweH0ubWF0LXJhZGlvLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW19Lm1hdC1zbGlkZS10b2dnbGUtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXN0ZXAtc3ViLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDpub3JtYWx9Lm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRhYi1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowfS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMHB4O3BhZGRpbmctdG9wOjZweDtwYWRkaW5nLWJvdHRvbTo2cHh9Lm1hdC10b29sdGlwLWhhbmRzZXRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHh9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1zaW1wbGUtc25hY2tiYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjE7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo1MDB9Lm1hdC10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW5lc3RlZC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweH0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmVtcHR5KXt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKX0ubWF0LXJpcHBsZS5tYXQtcmlwcGxlLXVuYm91bmRlZFtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6dmlzaWJsZX0ubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItcmFkaXVzOjUwJTtwb2ludGVyLWV2ZW50czpub25lO3RyYW5zaXRpb246b3BhY2l0eSx0cmFuc2Zvcm0gMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO3RyYW5zZm9ybTpzY2FsZSgwKX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6bm9uZX0uY2RrLXZpc3VhbGx5LWhpZGRlbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjA7Y2xpcDpyZWN0KDAgMCAwIDApO2hlaWdodDoxcHg7bWFyZ2luOi0xcHg7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxcHg7d2hpdGUtc3BhY2U6bm93cmFwO291dGxpbmU6MDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb2ludGVyLWV2ZW50czpub25lO3RvcDowO2xlZnQ6MDtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXTplbXB0eXtkaXNwbGF5Om5vbmV9LmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1wYW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtwb2ludGVyLWV2ZW50czphdXRvO2JveC1zaXppbmc6Ym9yZGVyLWJveDt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O21heC13aWR0aDoxMDAlO21heC1oZWlnaHQ6MTAwJX0uY2RrLW92ZXJsYXktYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO2xlZnQ6MDtyaWdodDowO3otaW5kZXg6MTAwMDtwb2ludGVyLWV2ZW50czphdXRvOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudDt0cmFuc2l0aW9uOm9wYWNpdHkgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSk7b3BhY2l0eTowfS5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjF9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAuY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTouNn0uY2RrLW92ZXJsYXktZGFyay1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4zMil9LmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MH0uY2RrLW92ZXJsYXktY29ubmVjdGVkLXBvc2l0aW9uLWJvdW5kaW5nLWJveFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bWluLXdpZHRoOjFweDttaW4taGVpZ2h0OjFweH0uY2RrLWdsb2JhbC1zY3JvbGxibG9ja1tfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7d2lkdGg6MTAwJTtvdmVyZmxvdy15OnNjcm9sbH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemVbX25nY29udGVudC0lQ09NUCVde3Jlc2l6ZTpub25lfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmdbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OmF1dG8gIWltcG9ydGFudDtvdmVyZmxvdzpoaWRkZW4gIWltcG9ydGFudH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nLWZpcmVmb3hbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OjAgIWltcG9ydGFudH1Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0e31Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZHt9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbHthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnQgMHMgMW1zfS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCg6LXdlYmtpdC1hdXRvZmlsbCl7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZCAwcyAxbXN9Lm1hdC1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtbWRjLWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9LmZpbHRlci1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXXthbGlnbi1pdGVtczpjZW50ZXI7ZGlzcGxheTpmbGV4O21hcmdpbi1sZWZ0OjVweH0ubWV0cmljLWFyaXRobWV0aWMtZWxlbWVudC1yYW5nZVtfbmdjb250ZW50LSVDT01QJV17YWxpZ24taXRlbXM6Y2VudGVyO2JhY2tncm91bmQtY29sb3I6I2ZmZjtmb250LXNpemU6LjhlbTtoZWlnaHQ6MzBweDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2xpbmUtaGVpZ2h0OjMwcHg7cGFkZGluZzowIDVweDttYXJnaW4tbGVmdDo1cHh9LmlucHV0LWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2JvcmRlcjpub25lO2ZvbnQtZmFtaWx5Om1vbm9zcGFjZTtmb250LXNpemU6MS4xZW07dHJhbnNpdGlvbjp3aWR0aCAxc30uaW5wdXQtZmllbGRbX25nY29udGVudC0lQ09NUCVdOmZvY3Vze2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMTIpO2JvcmRlcjpub25lO291dGxpbmU6bm9uZX0udmFsdWUtaW52YWxpZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0uZW1iZWRkaW5nLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjU3YzAwO29wYWNpdHk6MX0uZW1iZWRkaW5nLXVuc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6LjR9LmVtYmVkZGluZ3MtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXt3aWR0aDoxOHB4O2hlaWdodDoxOHB4O21hcmdpbi1yaWdodDo4cHg7Y3Vyc29yOnBvaW50ZXJ9J10sY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKHF4dCxbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJtZXRyaWMtYXJpdGhtZXRpYy1lbGVtZW50LWNvbXBvbmVudCIsdGVtcGxhdGVVcmw6Ii4vbWV0cmljX2FyaXRobWV0aWNfZWxlbWVudF9jb21wb25lbnQubmcuaHRtbCIsc3R5bGVVcmxzOlsiLi9tZXRyaWNfYXJpdGhtZXRpY19lbGVtZW50X2NvbXBvbmVudC5jc3MiXSxjaGFuZ2VEZXRlY3Rpb246am4uT25QdXNofV19XSxudWxsLHttZXRyaWM6W3t0eXBlOlJffV0sZmlsdGVyVmFsdWVzOlt7dHlwZTpSX31dLGhhc0VtYmVkZGluZ3NEYXRhOlt7dHlwZTpSX31dLGVtYmVkZGluZ3NNZXRyaWM6W3t0eXBlOlJffV0sb25SZW1vdmU6W3t0eXBlOkVffV0sb25TZWxlY3Q6W3t0eXBlOkVffV0sb25GaWx0ZXJDaGFuZ2U6W3t0eXBlOkVffV19KTtjbGFzcyBaeHR7Y29uc3RydWN0b3IodCl7dGhpcy5zdG9yZT10LHRoaXMuZmlsdGVyVmFsdWVzJD10aGlzLnN0b3JlLnBpcGUoclMoZXh0KSkucGlwZShWdCgodD0+e2NvbnN0IGU9dFt0aGlzLm1ldHJpY107aWYoIWUpcmV0dXJue21pbjotMSxtYXg6MX07cmV0dXJue21pbjplLmluY2x1ZGVOYU4/Ik5hTiI6dGhpcy5yb3VuZFRvVGhyZWVEZWNpbWFsUG9pbnRzKGUubWluKSxtYXg6ZS5tYXg8ZS5taW4/Ik5hTiI6dGhpcy5yb3VuZFRvVGhyZWVEZWNpbWFsUG9pbnRzKGUubWF4KX19KSkpLHRoaXMuaGFzRW1iZWRkaW5nc0RhdGEkPXRoaXMuc3RvcmUucGlwZShyUyhadnQpKS5waXBlKFZ0KCh0PT52b2lkIDAhPT10KSkpLHRoaXMuZW1iZWRkaW5nc01ldHJpYyQ9dGhpcy5zdG9yZS5waXBlKHJTKGR4dCkpfXJlbW92ZSh0KXt0aGlzLnN0b3JlLmRpc3BhdGNoKFB2dCh7bWV0cmljOnR9KSl9c2VsZWN0KHQpe3RoaXMuc3RvcmUuZGlzcGF0Y2goTnZ0KHttZXRyaWM6dH0pKX1maWx0ZXJDaGFuZ2UodCl7Y29uc3QgZT1pc05hTih0Lm1pbik/LTE6dC5taW4sbj1pc05hTih0Lm1heCk/LTI6dC5tYXgsbz1pc05hTih0Lm1pbik7dGhpcy5zdG9yZS5kaXNwYXRjaCh3dnQoe21ldHJpYzp0aGlzLm1ldHJpYyxtYXg6bixtaW46ZSxpbmNsdWRlTmFOOm99KSl9cm91bmRUb1RocmVlRGVjaW1hbFBvaW50cyh0KXtyZXR1cm4gTWF0aC5yb3VuZCgxZTMqKHQrTnVtYmVyLkVQU0lMT04pKS8xZTN9fVp4dC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8Wnh0KShnZihpUykpfSxaeHQuybVjbXA9c28oe3R5cGU6Wnh0LHNlbGVjdG9yczpbWyJucG1pLW1ldHJpYy1hcml0aG1ldGljLWVsZW1lbnQiXV0saW5wdXRzOnttZXRyaWM6Im1ldHJpYyJ9LGRlY2xzOjQsdmFyczoxMCxjb25zdHM6W1szLCJtZXRyaWMiLCJmaWx0ZXJWYWx1ZXMiLCJoYXNFbWJlZGRpbmdzRGF0YSIsImVtYmVkZGluZ3NNZXRyaWMiLCJvblJlbW92ZSIsIm9uU2VsZWN0Iiwib25GaWx0ZXJDaGFuZ2UiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKENmKDAsIm1ldHJpYy1hcml0aG1ldGljLWVsZW1lbnQtY29tcG9uZW50IiwwKSxSZigib25SZW1vdmUiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLnJlbW92ZShlKX0pKSgib25TZWxlY3QiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLnNlbGVjdChlKX0pKSgib25GaWx0ZXJDaGFuZ2UiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLmZpbHRlckNoYW5nZShlKX0pKSxfeSgxLCJhc3luYyIpLF95KDIsImFzeW5jIiksX3koMywiYXN5bmMiKSxNZigpKSwyJmUmJmJmKCJtZXRyaWMiLG4ubWV0cmljKSgiZmlsdGVyVmFsdWVzIixDeSgxLDQsbi5maWx0ZXJWYWx1ZXMkKSkoImhhc0VtYmVkZGluZ3NEYXRhIixDeSgyLDYsbi5oYXNFbWJlZGRpbmdzRGF0YSQpKSgiZW1iZWRkaW5nc01ldHJpYyIsQ3koMyw4LG4uZW1iZWRkaW5nc01ldHJpYyQpKX0sZGlyZWN0aXZlczpbcXh0XSxwaXBlczpbVnZdLGVuY2Fwc3VsYXRpb246MixjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoWnh0LFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6Im5wbWktbWV0cmljLWFyaXRobWV0aWMtZWxlbWVudCIsdGVtcGxhdGU6J1xuICAgIDxtZXRyaWMtYXJpdGhtZXRpYy1lbGVtZW50LWNvbXBvbmVudFxuICAgICAgW21ldHJpY109Im1ldHJpYyJcbiAgICAgIFtmaWx0ZXJWYWx1ZXNdPSJmaWx0ZXJWYWx1ZXMkIHwgYXN5bmMiXG4gICAgICBbaGFzRW1iZWRkaW5nc0RhdGFdPSJoYXNFbWJlZGRpbmdzRGF0YSQgfCBhc3luYyJcbiAgICAgIFtlbWJlZGRpbmdzTWV0cmljXT0iZW1iZWRkaW5nc01ldHJpYyQgfCBhc3luYyJcbiAgICAgIChvblJlbW92ZSk9InJlbW92ZSgkZXZlbnQpIlxuICAgICAgKG9uU2VsZWN0KT0ic2VsZWN0KCRldmVudCkiXG4gICAgICAob25GaWx0ZXJDaGFuZ2UpPSJmaWx0ZXJDaGFuZ2UoJGV2ZW50KSJcbiAgICA+PC9tZXRyaWMtYXJpdGhtZXRpYy1lbGVtZW50LWNvbXBvbmVudD5cbiAgJyxjaGFuZ2VEZXRlY3Rpb246am4uT25QdXNofV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6aVN9XX0pLHttZXRyaWM6W3t0eXBlOlJffV19KTtjbGFzcyBYeHR7Y29uc3RydWN0b3IoKXt0aGlzLk9wZXJhdG9yPUJ2dH19ZnVuY3Rpb24gS3h0KHQsZSl7aWYoMSZ0JiZ2ZigwLCJucG1pLW1ldHJpYy1hcml0aG1ldGljLWVsZW1lbnQiLDQpLDImdCl7YmYoIm1ldHJpYyIsemYoKS4kaW1wbGljaXQubWV0cmljKX19ZnVuY3Rpb24gSnh0KHQsZSl7aWYoMSZ0JiZ2ZigwLCJucG1pLW1ldHJpYy1hcml0aG1ldGljLW9wZXJhdG9yIiw1KSwyJnQpe2JmKCJvcGVyYXRvciIsemYoKS4kaW1wbGljaXQub3BlcmF0b3IpfX1mdW5jdGlvbiBReHQodCxlKXtpZigxJnQmJihDZigwLCJkaXYiKSxIbSgxLEt4dCwxLDEsIm5wbWktbWV0cmljLWFyaXRobWV0aWMtZWxlbWVudCIsMiksSG0oMixKeHQsMSwxLCJucG1pLW1ldHJpYy1hcml0aG1ldGljLW9wZXJhdG9yIiwzKSxNZigpKSwyJnQpe2NvbnN0IHQ9ZS4kaW1wbGljaXQsbj16ZigpO0RjKDEpLGJmKCJuZ0lmIix0LmtpbmQ9PT1uLkFyaXRobWV0aWNLaW5kLk1FVFJJQyksRGMoMSksYmYoIm5nSWYiLHQua2luZD09PW4uQXJpdGhtZXRpY0tpbmQuT1BFUkFUT1IpfX1YeHQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFh4dCl9LFh4dC7JtWNtcD1zbyh7dHlwZTpYeHQsc2VsZWN0b3JzOltbIm5wbWktbWV0cmljLWFyaXRobWV0aWMtb3BlcmF0b3IiXV0saW5wdXRzOntvcGVyYXRvcjoib3BlcmF0b3IifSxkZWNsczoyLHZhcnM6MSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoQ2YoMCwibWF0LWNoaXAiKSxQdSgxKSxNZigpKSwyJmUmJihEYygxKSxrdSgiICIsbi5vcGVyYXRvcj09PW4uT3BlcmF0b3IuQU5EPyImIjoiIiwiICIpKX0sZGlyZWN0aXZlczpbRXh0XSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKFh4dCxbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJucG1pLW1ldHJpYy1hcml0aG1ldGljLW9wZXJhdG9yIix0ZW1wbGF0ZToiXG4gICAgPG1hdC1jaGlwPlxuICAgICAge3sgb3BlcmF0b3IgPT09IE9wZXJhdG9yLkFORCA/ICcmJyA6ICcnIH19XG4gICAgPC9tYXQtY2hpcD5cbiAgIixjaGFuZ2VEZXRlY3Rpb246am4uT25QdXNofV19XSxudWxsLHtvcGVyYXRvcjpbe3R5cGU6Ul99XX0pO2NsYXNzICR4dHtjb25zdHJ1Y3Rvcigpe3RoaXMuQXJpdGhtZXRpY0tpbmQ9VnZ0fX0keHQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fCR4dCl9LCR4dC7JtWNtcD1zbyh7dHlwZTokeHQsc2VsZWN0b3JzOltbIm1ldHJpYy1hcml0aG1ldGljLWNvbXBvbmVudCJdXSxpbnB1dHM6e21ldHJpY0FyaXRobWV0aWM6Im1ldHJpY0FyaXRobWV0aWMifSxkZWNsczoyLHZhcnM6Mixjb25zdHM6W1szLCJzZWxlY3RhYmxlIl0sWzQsIm5nRm9yIiwibmdGb3JPZiJdLFszLCJtZXRyaWMiLDQsIm5nSWYiXSxbMywib3BlcmF0b3IiLDQsIm5nSWYiXSxbMywibWV0cmljIl0sWzMsIm9wZXJhdG9yIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihDZigwLCJtYXQtY2hpcC1saXN0IiwwKSxIbSgxLFF4dCwzLDIsImRpdiIsMSksTWYoKSksMiZlJiYoYmYoInNlbGVjdGFibGUiLCExKSxEYygxKSxiZigibmdGb3JPZiIsbi5tZXRyaWNBcml0aG1ldGljKSl9LGRpcmVjdGl2ZXM6W0h4dCx4dixQdixaeHQsWHh0XSxzdHlsZXM6WyJbX25naG9zdC0lQ09NUCVde2FsaWduLWl0ZW1zOmNlbnRlcjtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246cm93O2ZsZXgtd3JhcDp3cmFwfSJdLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYigkeHQsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoibWV0cmljLWFyaXRobWV0aWMtY29tcG9uZW50Iix0ZW1wbGF0ZVVybDoiLi9tZXRyaWNfYXJpdGhtZXRpY19jb21wb25lbnQubmcuaHRtbCIsc3R5bGVVcmxzOlsiLi9tZXRyaWNfYXJpdGhtZXRpY19jb21wb25lbnQuY3NzIl0sY2hhbmdlRGV0ZWN0aW9uOmpuLk9uUHVzaH1dfV0sbnVsbCx7bWV0cmljQXJpdGhtZXRpYzpbe3R5cGU6Ul99XX0pO2NsYXNzIHRPdHtjb25zdHJ1Y3Rvcih0KXt0aGlzLnN0b3JlPXQsdGhpcy5tZXRyaWNBcml0aG1ldGljJD10aGlzLnN0b3JlLnBpcGUoclModHh0KSl9fXRPdC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8dE90KShnZihpUykpfSx0T3QuybVjbXA9c28oe3R5cGU6dE90LHNlbGVjdG9yczpbWyJucG1pLW1ldHJpYy1hcml0aG1ldGljIl1dLGRlY2xzOjIsdmFyczozLGNvbnN0czpbWzMsIm1ldHJpY0FyaXRobWV0aWMiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKHZmKDAsIm1ldHJpYy1hcml0aG1ldGljLWNvbXBvbmVudCIsMCksX3koMSwiYXN5bmMiKSksMiZlJiZiZigibWV0cmljQXJpdGhtZXRpYyIsQ3koMSwxLG4ubWV0cmljQXJpdGhtZXRpYyQpKX0sZGlyZWN0aXZlczpbJHh0XSxwaXBlczpbVnZdLGVuY2Fwc3VsYXRpb246MixjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIodE90LFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6Im5wbWktbWV0cmljLWFyaXRobWV0aWMiLHRlbXBsYXRlOidcbiAgICA8bWV0cmljLWFyaXRobWV0aWMtY29tcG9uZW50XG4gICAgICBbbWV0cmljQXJpdGhtZXRpY109Im1ldHJpY0FyaXRobWV0aWMkIHwgYXN5bmMiXG4gICAgPjwvbWV0cmljLWFyaXRobWV0aWMtY29tcG9uZW50PlxuICAnLGNoYW5nZURldGVjdGlvbjpqbi5PblB1c2h9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTppU31dfSksbnVsbCk7Y2xhc3MgZU90e31mdW5jdGlvbiBuT3QodCxlLG4sbyxpLGEpe2NvbnN0IHI9e30scz1uZXcgU2V0KGUpLGw9bmV3IFNldChpLm1hcCgodD0+el90KHQpKSkpLGM9bmV3IFJlZ0V4cChhLCJpIik7cmV0dXJuIE9iamVjdC5lbnRyaWVzKHQpLmZvckVhY2goKHQ9PntpZighYy50ZXN0KHRbMF0pKXJldHVybjtsZXQgZT10WzFdO2U9ZS5maWx0ZXIoKHQ9PnMuaGFzKHQucnVuKSYmbC5oYXModC5tZXRyaWMpKSksKGZ1bmN0aW9uIGkodCxlLG4pe3JldHVybiB0LmV2ZXJ5KCh0PT57aWYodC5raW5kPT09VnZ0Lk9QRVJBVE9SKXJldHVybiEwO2NvbnN0IG89ZVt0Lm1ldHJpY107cmV0dXJuIHZvaWQgMD09PW98fG4uc29tZSgoZT0+ZS5tZXRyaWM9PT16X3QodC5tZXRyaWMpJiYobnVsbD09PWUublBNSVZhbHVlP28uaW5jbHVkZU5hTjplLm5QTUlWYWx1ZTw9by5tYXgmJmUublBNSVZhbHVlPj1vLm1pbikpKX0pKX0pKG4sbyxlKSYmMCE9PWUubGVuZ3RoJiYoclt0WzBdXT1lKX0pKSxyfWZ1bmN0aW9uIG9PdCh0LGUsbil7aWYobilyZXR1cm4gdDtjb25zdCBvPU9iamVjdC5hc3NpZ24oe30sdCk7cmV0dXJuIGUuZm9yRWFjaCgodD0+ZGVsZXRlIG9bdF0pKSxvfWVPdC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8ZU90KX0sZU90Lsm1Y21wPXNvKHt0eXBlOmVPdCxzZWxlY3RvcnM6W1sibnBtaS1kYXRhLXNlbGVjdGlvbiJdXSxkZWNsczo0LHZhcnM6MCxjb25zdHM6W1sxLCJkYXRhLXNlbGVjdGlvbiJdLFsxLCJtZXRyaWNzLXNlbGVjdG9yIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihDZigwLCJkaXYiLDApLHZmKDEsIm5wbWktbWV0cmljLXNlYXJjaCIsMSksdmYoMiwibnBtaS1yZXN1bHRzLWRvd25sb2FkIiksTWYoKSx2ZigzLCJucG1pLW1ldHJpYy1hcml0aG1ldGljIikpfSxkaXJlY3RpdmVzOltDeHQsT3h0LHRPdF0sc3R5bGVzOlsnLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjEycHg7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtYmFkZ2Utc21hbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6OXB4fS5tYXQtYmFkZ2UtbGFyZ2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweH0ubWF0LWgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1oZWFkbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMjRweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNnB4LzI4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNXB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC44MykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtaDZbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuNjcpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWJvZHktc3Ryb25nW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjAgMCAxMnB4fS5tYXQtc21hbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDEycHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjMwMCAxMTJweC8xMTJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDVlbTttYXJnaW46MCAwIDU2cHh9Lm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDU2cHgvNTZweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDJlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDQ1cHgvNDhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDA1ZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAzNHB4LzQwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDY0cHh9Lm1hdC1ib3R0b20tc2hlZXQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhcmQtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjIwcHh9Lm1hdC1jYXJkLXN1YnRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXJkLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNoZWNrYm94LWxheW91dFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoyNHB4fS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtdHJhaWxpbmctaWNvbi5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MThweH0ubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1oZWFkZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9vdGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2FsZW5kYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhbGVuZGFyLWJvZHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxM3B4fS5tYXQtY2FsZW5kYXItYm9keS1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FsZW5kYXItcGVyaW9kLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRoW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo0MDB9Lm1hdC1kaWFsb2ctdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDoxLjEyNTtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE1MCU7bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS41ZW07d2lkdGg6MS41ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNWVtIDA7Ym9yZGVyLXRvcDouODQzNzVlbSBzb2xpZCB0cmFuc3BhcmVudH0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTAuODQzNzVlbTtwYWRkaW5nLXRvcDouODQzNzVlbX0ubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo3NSU7bWFyZ2luLXRvcDouNjY2NjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjc5MTY2NjY2NjdlbSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNDM3NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMnB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTJlbSkgc2NhbGUoMC43NSl9fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi4yNWVtIDAgLjc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMDkzNzVlbTttYXJnaW4tdG9wOi0wLjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjFlbSAwIDFlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS44NDM3NWVtO21hcmdpbi10b3A6LTAuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9aW5wdXQubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LTAuMDYyNWVtfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweH0ubWF0LXJhZGlvLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW19Lm1hdC1zbGlkZS10b2dnbGUtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXN0ZXAtc3ViLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDpub3JtYWx9Lm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRhYi1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowfS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMHB4O3BhZGRpbmctdG9wOjZweDtwYWRkaW5nLWJvdHRvbTo2cHh9Lm1hdC10b29sdGlwLWhhbmRzZXRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHh9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1zaW1wbGUtc25hY2tiYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjE7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo1MDB9Lm1hdC10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW5lc3RlZC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweH0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmVtcHR5KXt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKX0ubWF0LXJpcHBsZS5tYXQtcmlwcGxlLXVuYm91bmRlZFtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6dmlzaWJsZX0ubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItcmFkaXVzOjUwJTtwb2ludGVyLWV2ZW50czpub25lO3RyYW5zaXRpb246b3BhY2l0eSx0cmFuc2Zvcm0gMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO3RyYW5zZm9ybTpzY2FsZSgwKX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6bm9uZX0uY2RrLXZpc3VhbGx5LWhpZGRlbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjA7Y2xpcDpyZWN0KDAgMCAwIDApO2hlaWdodDoxcHg7bWFyZ2luOi0xcHg7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxcHg7d2hpdGUtc3BhY2U6bm93cmFwO291dGxpbmU6MDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb2ludGVyLWV2ZW50czpub25lO3RvcDowO2xlZnQ6MDtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXTplbXB0eXtkaXNwbGF5Om5vbmV9LmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1wYW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtwb2ludGVyLWV2ZW50czphdXRvO2JveC1zaXppbmc6Ym9yZGVyLWJveDt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O21heC13aWR0aDoxMDAlO21heC1oZWlnaHQ6MTAwJX0uY2RrLW92ZXJsYXktYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO2xlZnQ6MDtyaWdodDowO3otaW5kZXg6MTAwMDtwb2ludGVyLWV2ZW50czphdXRvOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudDt0cmFuc2l0aW9uOm9wYWNpdHkgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSk7b3BhY2l0eTowfS5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjF9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAuY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTouNn0uY2RrLW92ZXJsYXktZGFyay1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4zMil9LmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MH0uY2RrLW92ZXJsYXktY29ubmVjdGVkLXBvc2l0aW9uLWJvdW5kaW5nLWJveFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bWluLXdpZHRoOjFweDttaW4taGVpZ2h0OjFweH0uY2RrLWdsb2JhbC1zY3JvbGxibG9ja1tfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7d2lkdGg6MTAwJTtvdmVyZmxvdy15OnNjcm9sbH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemVbX25nY29udGVudC0lQ09NUCVde3Jlc2l6ZTpub25lfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmdbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OmF1dG8gIWltcG9ydGFudDtvdmVyZmxvdzpoaWRkZW4gIWltcG9ydGFudH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nLWZpcmVmb3hbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OjAgIWltcG9ydGFudH1Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0e31Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZHt9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbHthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnQgMHMgMW1zfS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCg6LXdlYmtpdC1hdXRvZmlsbCl7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZCAwcyAxbXN9Lm1hdC1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtbWRjLWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9W19uZ2hvc3QtJUNPTVAlXXtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2JhY2tncm91bmQtY29sb3I6I2ZmZjtib3JkZXI6MXB4IHNvbGlkICNlYmViZWI7cGFkZGluZzoxMHB4IDIwcHh9LmRhdGEtc2VsZWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyfS5tZXRyaWNzLXNlbGVjdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmbGV4OjEgMX0nXSxjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoZU90LFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6Im5wbWktZGF0YS1zZWxlY3Rpb24iLHRlbXBsYXRlVXJsOiIuL2RhdGFfc2VsZWN0aW9uX2NvbXBvbmVudC5uZy5odG1sIixzdHlsZVVybHM6WyIuL2RhdGFfc2VsZWN0aW9uX2NvbXBvbmVudC5jc3MiXSxjaGFuZ2VEZXRlY3Rpb246am4uT25QdXNofV19XSxudWxsLG51bGwpO2NvbnN0IGlPdD1bImNoYXJ0Il07Y2xhc3MgYU90e2NvbnN0cnVjdG9yKCl7dGhpcy5vblJlbW92ZT1uZXcgU3ksdGhpcy5vblVwZGF0ZUZpbHRlcj1uZXcgU3ksdGhpcy5oZWlnaHQ9MzAwLHRoaXMuY2hhcnRXaWR0aD0wLHRoaXMuY2hhcnRIZWlnaHQ9MCx0aGlzLmRyYXdIZWlnaHQ9MCx0aGlzLmRyYXdXaWR0aD0wLHRoaXMubWFyZ2luPXt0b3A6MjAscmlnaHQ6MTAsYm90dG9tOjIwLGxlZnQ6MTB9LHRoaXMuZHJhd01hcmdpbj17dG9wOjAscmlnaHQ6MCxib3R0b206MjAsbGVmdDoyMH0sdGhpcy5icnVzaD1nbnQoKSx0aGlzLm1heEJpblNpemU9MCx0aGlzLmFyZWE9KGZ1bmN0aW9uIHQoKXt2YXIgdD1IYXQsZT1udWxsLG49TmF0KDApLG89RmF0LGk9TmF0KCEwKSxhPW51bGwscj1JYXQscz1udWxsO2Z1bmN0aW9uIGwobCl7dmFyIGMsZCxwLG0sZix1PWwubGVuZ3RoLGc9ITEsaD1uZXcgQXJyYXkodSksYj1uZXcgQXJyYXkodSk7Zm9yKG51bGw9PWEmJihzPXIoZj1NbnQoKSkpLGM9MDtjPD11OysrYyl7aWYoIShjPHUmJmkobT1sW2NdLGMsbCkpPT09ZylpZihnPSFnKWQ9YyxzLmFyZWFTdGFydCgpLHMubGluZVN0YXJ0KCk7ZWxzZXtmb3Iocy5saW5lRW5kKCkscy5saW5lU3RhcnQoKSxwPWMtMTtwPj1kOy0tcClzLnBvaW50KGhbcF0sYltwXSk7cy5saW5lRW5kKCkscy5hcmVhRW5kKCl9ZyYmKGhbY109K3QobSxjLGwpLGJbY109K24obSxjLGwpLHMucG9pbnQoZT8rZShtLGMsbCk6aFtjXSxvPytvKG0sYyxsKTpiW2NdKSl9aWYoZilyZXR1cm4gcz1udWxsLGYrIiJ8fG51bGx9ZnVuY3Rpb24gYygpe3JldHVybiBMYXQoKS5kZWZpbmVkKGkpLmN1cnZlKHIpLmNvbnRleHQoYSl9cmV0dXJuIGwueD1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0iZnVuY3Rpb24iPT10eXBlb2Ygbj9uOk5hdCgrbiksZT1udWxsLGwpOnR9LGwueDA9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZTpOYXQoK2UpLGwpOnR9LGwueDE9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9bnVsbD09dD9udWxsOiJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6TmF0KCt0KSxsKTplfSxsLnk9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpOYXQoK3QpLG89bnVsbCxsKTpufSxsLnkwPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6TmF0KCt0KSxsKTpufSxsLnkxPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPW51bGw9PXQ/bnVsbDoiZnVuY3Rpb24iPT10eXBlb2YgdD90Ok5hdCgrdCksbCk6b30sbC5saW5lWDA9bC5saW5lWTA9ZnVuY3Rpb24oKXtyZXR1cm4gYygpLngodCkueShuKX0sbC5saW5lWTE9ZnVuY3Rpb24oKXtyZXR1cm4gYygpLngodCkueShvKX0sbC5saW5lWDE9ZnVuY3Rpb24oKXtyZXR1cm4gYygpLngoZSkueShuKX0sbC5kZWZpbmVkPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6TmF0KCEhdCksbCk6aX0sbC5jdXJ2ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj10LG51bGwhPWEmJihzPXIoYSkpLGwpOnJ9LGwuY29udGV4dD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obnVsbD09dD9hPXM9bnVsbDpzPXIoYT10KSxsKTphfSxsfSkoKS54MChmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy54U2NhbGVOdW0oLXQubGVuZ3RoKX0uYmluZCh0aGlzKSkueDEoZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMueFNjYWxlTnVtKHQubGVuZ3RoKX0uYmluZCh0aGlzKSkueShmdW5jdGlvbih0KXtyZXR1cm4gdC54MD09PS0xLzA/dGhpcy5jaGFydEhlaWdodC10aGlzLmRyYXdNYXJnaW4udG9wOnRoaXMueVNjYWxlKCh0LngxK3QueDApLzIpfS5iaW5kKHRoaXMpKS5jdXJ2ZShVYXQpfW5nQWZ0ZXJWaWV3SW5pdCgpe3RoaXMudXBkYXRlRGltZW5zaW9ucygpLHRoaXMuc3ZnPW44KHRoaXMuY2hhcnRDb250YWluZXIubmF0aXZlRWxlbWVudCkuc2VsZWN0KCJzdmciKSx0aGlzLm1haW5Db250YWluZXI9dGhpcy5zdmcuYXBwZW5kKCJnIikuYXR0cigidHJhbnNmb3JtIixgdHJhbnNsYXRlKCR7dGhpcy5tYXJnaW4ubGVmdH0sICR7dGhpcy5tYXJnaW4udG9wfSlgKSx0aGlzLmRyYXdDb250YWluZXI9dGhpcy5tYWluQ29udGFpbmVyLmFwcGVuZCgiZyIpLmF0dHIoInRyYW5zZm9ybSIsYHRyYW5zbGF0ZSgke3RoaXMuZHJhd01hcmdpbi5sZWZ0fSwgJHt0aGlzLmRyYXdNYXJnaW4udG9wfSlgKSx0aGlzLmRvdHNHcm91cD10aGlzLmRyYXdDb250YWluZXIuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJkb3RzR3JvdXAiKSx0aGlzLnlBeGlzR3JvdXA9dGhpcy5tYWluQ29udGFpbmVyLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwiYXhpcyBheGlzLS15IiksdGhpcy54QXhpc0dyb3VwPXRoaXMubWFpbkNvbnRhaW5lci5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsImF4aXMgYXhpcy0teCIpLHRoaXMubWlzY0dyb3VwPXRoaXMuZHJhd0NvbnRhaW5lci5hcHBlbmQoImciKSx0aGlzLnhTY2FsZT1KbnQoKS5wYWRkaW5nKC4wNSksdGhpcy54QXhpcz1CNih0aGlzLnhTY2FsZSksdGhpcy55U2NhbGU9bW90KCkucmFuZ2UoW3RoaXMuZHJhd0hlaWdodCwwXSksdGhpcy55QXhpcz0oZnVuY3Rpb24gdChlKXtyZXR1cm4gRjYoNCxlKX0pKHRoaXMueVNjYWxlKSx0aGlzLnhTY2FsZU51bT1tb3QoKSx0aGlzLmluaXRpYWxpemVCcnVzaCgpLHRoaXMuZHJhd01pc2MoKSx0aGlzLnJlZHJhdygpfW5nT25DaGFuZ2VzKHQpe3RoaXMuc3ZnJiZ0aGlzLnJlZHJhdygpfXJlZHJhdygpe3RoaXMudXBkYXRlRGltZW5zaW9ucygpLHRoaXMuc2V0TWF4QmluU2l6ZSgpLHRoaXMudXBkYXRlQXhlcygpLHRoaXMuZHJhdygpfXVwZGF0ZURpbWVuc2lvbnMoKXt0aGlzLmNoYXJ0V2lkdGg9dGhpcy53aWR0aC10aGlzLm1hcmdpbi5sZWZ0LXRoaXMubWFyZ2luLnJpZ2h0LHRoaXMuZHJhd1dpZHRoPXRoaXMuY2hhcnRXaWR0aC10aGlzLmRyYXdNYXJnaW4ubGVmdC10aGlzLmRyYXdNYXJnaW4ucmlnaHQsdGhpcy5jaGFydEhlaWdodD10aGlzLmhlaWdodC10aGlzLm1hcmdpbi50b3AtdGhpcy5tYXJnaW4uYm90dG9tLHRoaXMuZHJhd0hlaWdodD10aGlzLmNoYXJ0SGVpZ2h0LXRoaXMuZHJhd01hcmdpbi50b3AtdGhpcy5kcmF3TWFyZ2luLmJvdHRvbX1zZXRNYXhCaW5TaXplKCl7T2JqZWN0LnZhbHVlcyh0aGlzLmNoYXJ0RGF0YS52aW9saW5EYXRhKS5mb3JFYWNoKCh0PT57Y29uc3QgZT10Lm1hcCgodD0+dC5sZW5ndGgpKSxuPU1hdGgubWF4KC4uLmUpO3RoaXMubWF4QmluU2l6ZT1NYXRoLm1heChuLHRoaXMubWF4QmluU2l6ZSl9KSl9dXBkYXRlQXhlcygpe3RoaXMueFNjYWxlLnJhbmdlKFswLHRoaXMuZHJhd1dpZHRoXSkuZG9tYWluKE9iamVjdC5rZXlzKHRoaXMuY2hhcnREYXRhLnZpb2xpbkRhdGEpKSx0aGlzLnlTY2FsZS5kb21haW4oW3RoaXMuY2hhcnREYXRhLmV4dHJlbWVzLm1pbix0aGlzLmNoYXJ0RGF0YS5leHRyZW1lcy5tYXhdKSx0aGlzLnhTY2FsZU51bS5yYW5nZShbMCx0aGlzLnhTY2FsZS5iYW5kd2lkdGgoKV0pLmRvbWFpbihbLXRoaXMubWF4QmluU2l6ZSx0aGlzLm1heEJpblNpemVdKX1pbml0aWFsaXplQnJ1c2goKXt0aGlzLmJydXNoLm9uKCJlbmQiLHRoaXMuYnJ1c2hNb3ZlZC5iaW5kKHRoaXMpKX1kcmF3KCl7dGhpcy5kcmF3QXhlcygpLHRoaXMuZHJhd1Bsb3QoKSx0aGlzLnJlZnJlc2hNaXNjKCksdGhpcy5yZWZyZXNoQnJ1c2goKX1kcmF3QXhlcygpe3RoaXMueUF4aXNHcm91cC5hdHRyKCJ0cmFuc2Zvcm0iLGB0cmFuc2xhdGUoJHt0aGlzLmRyYXdNYXJnaW4ubGVmdH0sXG4gICAgICAke3RoaXMuZHJhd01hcmdpbi50b3B9KWApLmNhbGwodGhpcy55QXhpcyksdGhpcy54QXhpc0dyb3VwLmF0dHIoInRyYW5zZm9ybSIsYHRyYW5zbGF0ZSgke3RoaXMuZHJhd01hcmdpbi5sZWZ0fSxcbiAgICAgICR7dGhpcy5kcmF3TWFyZ2luLnRvcCt0aGlzLmNoYXJ0SGVpZ2h0fSlgKS5jYWxsKHRoaXMueEF4aXMpfWRyYXdQbG90KCl7Y29uc3QgdD10aGlzLmRvdHNHcm91cC5zZWxlY3RBbGwoIi52aW9saW4tcGxvdCIpLmRhdGEoT2JqZWN0LmVudHJpZXModGhpcy5jaGFydERhdGEudmlvbGluRGF0YSkpO3QuZW50ZXIoKS5hcHBlbmQoInBhdGgiKS5hdHRyKCJjbGFzcyIsInZpb2xpbi1wbG90Iikuc3R5bGUoInN0cm9rZSIsZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuY29sb3JTY2FsZSh0WzBdKX0uYmluZCh0aGlzKSkuc3R5bGUoImZpbGwiLGZ1bmN0aW9uKHQpe3JldHVybmAke3RoaXMuY29sb3JTY2FsZSh0WzBdKX0zM2B9LmJpbmQodGhpcykpLmF0dHIoInRyYW5zZm9ybSIsZnVuY3Rpb24odCl7cmV0dXJuYHRyYW5zbGF0ZSgke3RoaXMueFNjYWxlKHRbMF0pfSwgMClgfS5iaW5kKHRoaXMpKS5kYXR1bSgoZnVuY3Rpb24odCl7cmV0dXJuIHRbMV19KSkuYXR0cigiZCIsdGhpcy5hcmVhKSx0LmF0dHIoInRyYW5zZm9ybSIsZnVuY3Rpb24odCl7cmV0dXJuYHRyYW5zbGF0ZSgke3RoaXMueFNjYWxlKHRbMF0pfSwgMClgfS5iaW5kKHRoaXMpKS5kYXR1bSgoZnVuY3Rpb24odCl7cmV0dXJuIHRbMV19KSkuYXR0cigiZCIsdGhpcy5hcmVhKSx0LmV4aXQoKS5yZW1vdmUoKX1kcmF3TWlzYygpe3RoaXMuemVyb0xpbmU9dGhpcy5taXNjR3JvdXAuYXBwZW5kKCJsaW5lIikuc3R5bGUoInN0cm9rZSIsImJsYWNrIikuYXR0cigieDEiLDApLmF0dHIoInkxIix0aGlzLnlTY2FsZSgwKSkuYXR0cigieDIiLHRoaXMuZHJhd1dpZHRoKS5hdHRyKCJ5MiIsdGhpcy55U2NhbGUoMCkpLHRoaXMubmFuVGV4dD10aGlzLm1pc2NHcm91cC5hcHBlbmQoInRleHQiKS5zdHlsZSgiZmlsbCIsImJsYWNrIikudGV4dCgiTmFOIikuYXR0cigiZm9udC1zaXplIiwiMTBweCIpLmF0dHIoInRleHQtYW5jaG9yIiwiZW5kIikuYXR0cigiYWxpZ25tZW50LWJhc2VsaW5lIiwibWlkZGxlIikuYXR0cigieCIsLTUpLmF0dHIoInkiLHRoaXMuY2hhcnRIZWlnaHQtdGhpcy5kcmF3TWFyZ2luLnRvcCksdGhpcy5uYW5MaW5lPXRoaXMubWlzY0dyb3VwLmFwcGVuZCgibGluZSIpLnN0eWxlKCJzdHJva2UiLCJncmV5Iikuc3R5bGUoInN0cm9rZS1kYXNoYXJyYXkiLCIzLCAzIikuYXR0cigieDEiLDApLmF0dHIoInkxIix0aGlzLmNoYXJ0SGVpZ2h0LXRoaXMuZHJhd01hcmdpbi50b3ApLmF0dHIoIngyIix0aGlzLmRyYXdXaWR0aCkuYXR0cigieTIiLHRoaXMuY2hhcnRIZWlnaHQtdGhpcy5kcmF3TWFyZ2luLnRvcCl9cmVmcmVzaE1pc2MoKXt0aGlzLnplcm9MaW5lLmF0dHIoInkxIix0aGlzLnlTY2FsZSgwKSkuYXR0cigieDIiLHRoaXMuZHJhd1dpZHRoKS5hdHRyKCJ5MiIsdGhpcy55U2NhbGUoMCkpLHRoaXMubmFuVGV4dC5hdHRyKCJ5Iix0aGlzLmNoYXJ0SGVpZ2h0LXRoaXMuZHJhd01hcmdpbi50b3ApLHRoaXMubmFuTGluZS5hdHRyKCJ5MSIsdGhpcy5kcmF3SGVpZ2h0K3RoaXMuZHJhd01hcmdpbi50b3ApLmF0dHIoIngyIix0aGlzLmRyYXdXaWR0aCkuYXR0cigieTIiLHRoaXMuZHJhd0hlaWdodCt0aGlzLmRyYXdNYXJnaW4udG9wKX1yZWZyZXNoQnJ1c2goKXt0aGlzLmJydXNoLmV4dGVudChbWzAsMF0sW3RoaXMuZHJhd1dpZHRoLHRoaXMuZHJhd0hlaWdodCt0aGlzLm1hcmdpbi50b3BdXSk7Y29uc3QgdD1bMCx0aGlzLmRyYXdIZWlnaHQrdGhpcy5tYXJnaW4udG9wXTtpZih0aGlzLmZpbHRlci5tYXg8dGhpcy5maWx0ZXIubWluKXRbMF09dGhpcy5maWx0ZXIuaW5jbHVkZU5hTj90aGlzLnlTY2FsZSh0aGlzLmNoYXJ0RGF0YS5leHRyZW1lcy5taW4pOnRbMV07ZWxzZXtpZighdGhpcy5maWx0ZXIuaW5jbHVkZU5hTil7Y29uc3QgZT1NYXRoLm1heCh0aGlzLmNoYXJ0RGF0YS5leHRyZW1lcy5taW4sdGhpcy5maWx0ZXIubWluKTt0WzFdPXRoaXMueVNjYWxlKGUpfWNvbnN0IGU9TWF0aC5taW4odGhpcy5jaGFydERhdGEuZXh0cmVtZXMubWF4LHRoaXMuZmlsdGVyLm1heCk7dFswXT10aGlzLnlTY2FsZShlKX10aGlzLmRyYXdDb250YWluZXIuY2FsbCh0aGlzLmJydXNoKS5jYWxsKHRoaXMuYnJ1c2gubW92ZSx0KX1icnVzaE1vdmVkKCl7aWYoIVc3KXJldHVybjtpZighVzcuc291cmNlRXZlbnQpcmV0dXJuO2NvbnN0IHQ9Vzcuc2VsZWN0aW9uO2lmKHQpe2xldCBlPSExLG49LTIsbz10aGlzLmNoYXJ0RGF0YS5leHRyZW1lcy5taW47dFswXTw9dGhpcy5kcmF3SGVpZ2h0K3RoaXMubWFyZ2luLnRvcCYmdFsxXT49dGhpcy5kcmF3SGVpZ2h0JiYoZT0hMCksdFswXTx0aGlzLmRyYXdIZWlnaHQmJihuPXRoaXMueVNjYWxlLmludmVydCh0WzBdKSksdFsxXTx0aGlzLmRyYXdIZWlnaHQmJihvPXRoaXMueVNjYWxlLmludmVydCh0WzFdKSksdGhpcy5vblVwZGF0ZUZpbHRlci5lbWl0KHttYXg6bixtaW46byxpbmNsdWRlTmFOOmV9KX1lbHNlIHRoaXMub25VcGRhdGVGaWx0ZXIuZW1pdCh7bWF4OjEsbWluOi0xLGluY2x1ZGVOYU46ITB9KX19YU90Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxhT3QpfSxhT3QuybVjbXA9c28oe3R5cGU6YU90LHNlbGVjdG9yczpbWyJ2aW9saW4tZmlsdGVyLWNvbXBvbmVudCJdXSx2aWV3UXVlcnk6ZnVuY3Rpb24gdChlLG4pe2lmKDEmZSYmVnkoaU90LDcsS2gpLDImZSl7bGV0IHQ7QnkodD1VeSgpKSYmKG4uY2hhcnRDb250YWluZXI9dC5maXJzdCl9fSxpbnB1dHM6e21ldHJpY05hbWU6Im1ldHJpY05hbWUiLGZpbHRlcjoiZmlsdGVyIixjaGFydERhdGE6ImNoYXJ0RGF0YSIsd2lkdGg6IndpZHRoIixjb2xvclNjYWxlOiJjb2xvclNjYWxlIn0sb3V0cHV0czp7b25SZW1vdmU6Im9uUmVtb3ZlIixvblVwZGF0ZUZpbHRlcjoib25VcGRhdGVGaWx0ZXIifSxmZWF0dXJlczpbcW9dLGRlY2xzOjksdmFyczoxLGNvbnN0czpmdW5jdGlvbigpe2xldCB0O2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgbmdJMThuQ2xvc3VyZU1vZGUmJm5nSTE4bkNsb3N1cmVNb2RlKXt0PWdvb2cuZ2V0TXNnKCJSZW1vdmUgRmlsdGVyIil9ZWxzZSB0PSRsb2NhbGl6ZWA6TGFiZWwgZm9yIGEgYnV0dG9uIHRoYXQgcmVtb3ZlcyBhIG1ldHJpYyBmaWx0ZXIu4pCfYTZiZmFkNThiYjM2M2Q1Yzg5MWQwYTU0NzRiMWQ3N2VmOTBhMzRkYeKQnzg0NTQ5NjE3OTc3NjI5MDc2MjQ6UmVtb3ZlIEZpbHRlcmA7cmV0dXJuW1sxLCJjaGFydC1jb250YWluZXIiXSxbInRpdGxlIiwiU2hvd3MgdGhlIG5QTUkgdmFsdWUgZGlzdHJpYnV0aW9uIHBlciBydW4uIFJhbmdlcyBvZiBzZWxlY3RlZCB2YWx1ZXMgY2FuIGJlIG1hbmlwdWxhdGVkIGJ5IG1vZGlmeWluZyB0aGUgZ3JleSBib3guIiwxLCJjaGFydC1oZWFkIl0sWzEsImNoYXJ0LWhlYWRpbmciXSxbIm1hdC1pY29uLWJ1dHRvbiIsIiIsImFyaWEtbGFiZWwiLHQsMywiY2xpY2siXSxbInN2Z0ljb24iLCJjbGVhcl8yNHB4Il0sWzEsImNoYXJ0Il0sWyJjaGFydCIsIiJdLFsxLCJkcmF3LWFyZWEiXV19LHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihDZigwLCJkaXYiLDApLENmKDEsImRpdiIsMSksQ2YoMiwiZGl2IiwyKSxQdSgzKSxNZigpLENmKDQsImJ1dHRvbiIsMyksUmYoImNsaWNrIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLm9uUmVtb3ZlLmVtaXQoKX0pKSx2Zig1LCJtYXQtaWNvbiIsNCksTWYoKSxNZigpLENmKDYsImRpdiIsNSw2KSxvYSgpLHZmKDgsInN2ZyIsNyksTWYoKSxNZigpKSwyJmUmJihEYygzKSx3dShuLm1ldHJpY05hbWUpKX0sZGlyZWN0aXZlczpbTkwsTXFdLHN0eWxlczpbJy5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjlweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHh9Lm1hdC1oMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaGVhZGxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDI0cHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTVweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWg2W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1ib2R5LXN0cm9uZ1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYXJkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FyZC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MjRweH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNhbGVuZGFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZGlhbG9nLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVlbSAwO2JvcmRlci10b3A6Ljg0Mzc1ZW0gc29saWQgdHJhbnNwYXJlbnR9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17dG9wOi0wLjg0Mzc1ZW07cGFkZGluZy10b3A6Ljg0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6NzUlO21hcmdpbi10b3A6LjY2NjY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS43OTE2NjY2NjY3ZW0pfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjQzNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDJweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIzZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4yODEyNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LjU0MTY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS42NjY2NjY2NjY3ZW0pfUBtZWRpYSBwcmludHsubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjJlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjFlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyZW0pIHNjYWxlKDAuNzUpfX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouMjVlbSAwIC43NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjA5Mzc1ZW07bWFyZ2luLXRvcDotMC41ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoxZW0gMCAxZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuODQzNzVlbTttYXJnaW4tdG9wOi0wLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMiksIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fWlucHV0Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi0wLjA2MjVlbX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHh9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtfS5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1zdGVwLXN1Yi1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6bm9ybWFsfS5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1zdGVwLWxhYmVsLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10YWItZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MH0ubWF0LXRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTBweDtwYWRkaW5nLXRvcDo2cHg7cGFkZGluZy1ib3R0b206NnB4fS5tYXQtdG9vbHRpcC1oYW5kc2V0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4fS5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtc2ltcGxlLXNuYWNrYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHh9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoxO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjE0cHh9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV06bm90KDplbXB0eSl7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9Lm1hdC1yaXBwbGUubWF0LXJpcHBsZS11bmJvdW5kZWRbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OnZpc2libGV9Lm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJhZGl1czo1MCU7cG9pbnRlci1ldmVudHM6bm9uZTt0cmFuc2l0aW9uOm9wYWNpdHksdHJhbnNmb3JtIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTt0cmFuc2Zvcm06c2NhbGUoMCl9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9LmNkay12aXN1YWxseS1oaWRkZW5bX25nY29udGVudC0lQ09NUCVde2JvcmRlcjowO2NsaXA6cmVjdCgwIDAgMCAwKTtoZWlnaHQ6MXB4O21hcmdpbjotMXB4O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4O3doaXRlLXNwYWNlOm5vd3JhcDtvdXRsaW5lOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0sIC5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cG9pbnRlci1ldmVudHM6bm9uZTt0b3A6MDtsZWZ0OjA7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV06ZW1wdHl7ZGlzcGxheTpub25lfS5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktcGFuZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6YXV0bztib3gtc2l6aW5nOmJvcmRlci1ib3g7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDttYXgtd2lkdGg6MTAwJTttYXgtaGVpZ2h0OjEwMCV9LmNkay1vdmVybGF5LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDt6LWluZGV4OjEwMDA7cG9pbnRlci1ldmVudHM6YXV0bzstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnQ7dHJhbnNpdGlvbjpvcGFjaXR5IDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpO29wYWNpdHk6MH0uY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eToxfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6LjZ9LmNkay1vdmVybGF5LWRhcmstYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMzIpfS5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV0sIC5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWNvbm5lY3RlZC1wb3NpdGlvbi1ib3VuZGluZy1ib3hbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO21pbi13aWR0aDoxcHg7bWluLWhlaWdodDoxcHh9LmNkay1nbG9iYWwtc2Nyb2xsYmxvY2tbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3dpZHRoOjEwMCU7b3ZlcmZsb3cteTpzY3JvbGx9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplW19uZ2NvbnRlbnQtJUNPTVAlXXtyZXNpemU6bm9uZX10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDphdXRvICFpbXBvcnRhbnQ7b3ZlcmZsb3c6aGlkZGVuICFpbXBvcnRhbnR9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZy1maXJlZm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDowICFpbXBvcnRhbnR9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydHt9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmR7fS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGx7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0IDBzIDFtc30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOi13ZWJraXQtYXV0b2ZpbGwpe2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmQgMHMgMW1zfS5tYXQtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LW1kYy1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5jaGFydC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmZjtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjZWJlYmViO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47b3ZlcmZsb3c6aGlkZGVufS5jaGFydFtfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjMwMHB4O3dpZHRoOjEwMCV9LmNoYXJ0LWhlYWRbX25nY29udGVudC0lQ09NUCVde2FsaWduLWl0ZW1zOmNlbnRlcjtkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW59LmNoYXJ0LWhlYWRpbmdbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxM3B4O3BhZGRpbmctbGVmdDoxMHB4O3BhZGRpbmctdG9wOjEwcHh9LmRyYXctYXJlYVtfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uc3Ryb2tlZC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtzdHJva2U6cmdiYSgwLDAsMCwuMTIpO3N0cm9rZS1kYXNoYXJyYXk6MyAzfSddLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihhT3QsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoidmlvbGluLWZpbHRlci1jb21wb25lbnQiLHRlbXBsYXRlVXJsOiIuL3Zpb2xpbl9maWx0ZXJfY29tcG9uZW50Lm5nLmh0bWwiLHN0eWxlVXJsczpbIi4vdmlvbGluX2ZpbHRlcl9jb21wb25lbnQuY3NzIl0sY2hhbmdlRGV0ZWN0aW9uOmpuLk9uUHVzaH1dfV0sbnVsbCx7bWV0cmljTmFtZTpbe3R5cGU6Ul99XSxmaWx0ZXI6W3t0eXBlOlJffV0sY2hhcnREYXRhOlt7dHlwZTpSX31dLHdpZHRoOlt7dHlwZTpSX31dLGNvbG9yU2NhbGU6W3t0eXBlOlJffV0sb25SZW1vdmU6W3t0eXBlOkVffV0sb25VcGRhdGVGaWx0ZXI6W3t0eXBlOkVffV0sY2hhcnRDb250YWluZXI6W3t0eXBlOmFyLGFyZ3M6WyJjaGFydCIse3N0YXRpYzohMCxyZWFkOktofV19XX0pO2NsYXNzIHJPdHtjb25zdHJ1Y3Rvcih0KXt0aGlzLnN0b3JlPXQsdGhpcy5hY3RpdmVSdW5zJD10aGlzLnN0b3JlLnBpcGUoclMoX0kpKS5waXBlKFZ0KCh0PT50P0FycmF5LmZyb20odC5lbnRyaWVzKCkpLmZpbHRlcigodD0+dFsxXSkpLm1hcCgodD0+dFswXSkpOltdKSkpLHRoaXMudmlzaWJsZUFubm90YXRpb25zJD1LdChbdGhpcy5zdG9yZS5zZWxlY3QoWXZ0KSx0aGlzLnN0b3JlLnNlbGVjdChKdnQpLHRoaXMuc3RvcmUuc2VsZWN0KHN4dCldKS5waXBlKFZ0KCgoW3QsZSxuXSk9Pm9PdCh0LGUsbikpKSksdGhpcy5jaGFydFdpZHRoJD10aGlzLnN0b3JlLnBpcGUoclMoY3h0KSkucGlwZShWdCgodD0+TWF0aC5tYXgoMTUwLHQpKSkpLHRoaXMucnVuQ29sb3JTY2FsZSQ9dGhpcy5zdG9yZS5zZWxlY3QoQ0kpLnBpcGUoVnQoKHQ9PmU9PntpZighdC5oYXNPd25Qcm9wZXJ0eShlKSl0aHJvdyBuZXcgRXJyb3IoYFtDb2xvciBzY2FsZV0gdW5rbm93biBydW5JZDogJHtlfS5gKTtyZXR1cm4gdFtlXX0pKSl9bmdPbkluaXQoKXt0aGlzLmNoYXJ0RGF0YSQ9S3QoW3RoaXMudmlzaWJsZUFubm90YXRpb25zJCx0aGlzLmFjdGl2ZVJ1bnMkXSkucGlwZShWdCgoKFt0LGVdKT0+KGZ1bmN0aW9uIG4odCxlLG8pe2NvbnN0IGk9e30sYT17fSxyPW5ldyBTZXQoZSkscz16X3QobyksbD17bWF4Oi0xLG1pbjoxfTtPYmplY3QudmFsdWVzKHQpLmZvckVhY2goKHQ9Pnt0LmZvckVhY2goKHQ9Pntjb25zdCBlPXQucnVuO2lmKHIuaGFzKGUpJiZ0Lm1ldHJpYz09PXMpaWYobnVsbD09PXQublBNSVZhbHVlKWFbZV0/YVtlXS5wdXNoKG51bGwpOmFbZV09W251bGxdO2Vsc2V7Y29uc3Qgbj10Lm5QTUlWYWx1ZTtsLm1heD1sLm1heDxuP246bC5tYXgsbC5taW49bC5taW4+bj9uOmwubWluLGlbdC5ydW5dP2lbZV0ucHVzaChuKTppW2VdPVtuXX19KSl9KSk7Y29uc3QgYz17fSxkPUQ2KCkuZG9tYWluKFtsLm1pbixsLm1heF0pLnZhbHVlKCh0PT50KSkscD1ENigpLmRvbWFpbihbLTEvMCwxLzBdKS50aHJlc2hvbGRzKDApLnZhbHVlKCh0PT50KSk7Zm9yKGNvbnN0IHQgb2YgcilpZihjW3RdPWQoaVt0XSksYVt0XSl7Y29uc3QgZT1wKGFbdF0pO2NbdF0udW5zaGlmdChlWzBdKX1yZXR1cm57dmlvbGluRGF0YTpjLGV4dHJlbWVzOmx9fSkodCxlLHRoaXMubWV0cmljTmFtZSkpKSl9cmVtb3ZlTWV0cmljKCl7dGhpcy5zdG9yZS5kaXNwYXRjaChQdnQoe21ldHJpYzp0aGlzLm1ldHJpY05hbWV9KSl9dXBkYXRlRmlsdGVyKHQpe3RoaXMuc3RvcmUuZGlzcGF0Y2god3Z0KE9iamVjdC5hc3NpZ24oe21ldHJpYzp0aGlzLm1ldHJpY05hbWV9LHQpKSl9fWZ1bmN0aW9uIHNPdCh0LGUpe2lmKDEmdCYmdmYoMCwibnBtaS12aW9saW4tZmlsdGVyIiw4KSwyJnQpe2NvbnN0IHQ9ZS4kaW1wbGljaXQ7YmYoIm1ldHJpY05hbWUiLHRbMF0pKCJmaWx0ZXIiLHRbMV0pfX1mdW5jdGlvbiBsT3QodCxlKXsxJnQmJihDZigwLCJkaXYiLDkpLENmKDEsInNwYW4iLDEwKSxQdSgyLCIgWW91IGNhbiBhZGQgbW9yZSBmaWx0ZXJzIGF0IHRoZSB0b3AuICIpLE1mKCksTWYoKSl9ck90Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxyT3QpKGdmKGlTKSl9LHJPdC7JtWNtcD1zbyh7dHlwZTpyT3Qsc2VsZWN0b3JzOltbIm5wbWktdmlvbGluLWZpbHRlciJdXSxpbnB1dHM6e21ldHJpY05hbWU6Im1ldHJpY05hbWUiLGZpbHRlcjoiZmlsdGVyIn0sZGVjbHM6NCx2YXJzOjExLGNvbnN0czpbWzMsIm1ldHJpY05hbWUiLCJmaWx0ZXIiLCJjaGFydERhdGEiLCJ3aWR0aCIsImNvbG9yU2NhbGUiLCJvblJlbW92ZSIsIm9uVXBkYXRlRmlsdGVyIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihDZigwLCJ2aW9saW4tZmlsdGVyLWNvbXBvbmVudCIsMCksUmYoIm9uUmVtb3ZlIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLnJlbW92ZU1ldHJpYygpfSkpKCJvblVwZGF0ZUZpbHRlciIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4udXBkYXRlRmlsdGVyKGUpfSkpLF95KDEsImFzeW5jIiksX3koMiwiYXN5bmMiKSxfeSgzLCJhc3luYyIpLE1mKCkpLDImZSYmYmYoIm1ldHJpY05hbWUiLG4ubWV0cmljTmFtZSkoImZpbHRlciIsbi5maWx0ZXIpKCJjaGFydERhdGEiLEN5KDEsNSxuLmNoYXJ0RGF0YSQpKSgid2lkdGgiLEN5KDIsNyxuLmNoYXJ0V2lkdGgkKSkoImNvbG9yU2NhbGUiLEN5KDMsOSxuLnJ1bkNvbG9yU2NhbGUkKSl9LGRpcmVjdGl2ZXM6W2FPdF0scGlwZXM6W1Z2XSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKHJPdCxbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJucG1pLXZpb2xpbi1maWx0ZXIiLHRlbXBsYXRlOidcbiAgICA8dmlvbGluLWZpbHRlci1jb21wb25lbnRcbiAgICAgIFttZXRyaWNOYW1lXT0ibWV0cmljTmFtZSJcbiAgICAgIFtmaWx0ZXJdPSJmaWx0ZXIiXG4gICAgICBbY2hhcnREYXRhXT0iY2hhcnREYXRhJCB8IGFzeW5jIlxuICAgICAgW3dpZHRoXT0iY2hhcnRXaWR0aCQgfCBhc3luYyJcbiAgICAgIFtjb2xvclNjYWxlXT0icnVuQ29sb3JTY2FsZSQgfCBhc3luYyJcbiAgICAgIChvblJlbW92ZSk9InJlbW92ZU1ldHJpYygpIlxuICAgICAgKG9uVXBkYXRlRmlsdGVyKT0idXBkYXRlRmlsdGVyKCRldmVudCkiXG4gICAgPjwvdmlvbGluLWZpbHRlci1jb21wb25lbnQ+XG4gICcsY2hhbmdlRGV0ZWN0aW9uOmpuLk9uUHVzaH1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmlTfV19KSx7bWV0cmljTmFtZTpbe3R5cGU6Ul99XSxmaWx0ZXI6W3t0eXBlOlJffV19KTtjbGFzcyBjT3R7Y29uc3RydWN0b3IoKXt0aGlzLnRvZ2dsZVNpZGViYXJFeHBhbmRlZD1uZXcgU3l9fWNPdC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8Y090KX0sY090Lsm1Y21wPXNvKHt0eXBlOmNPdCxzZWxlY3RvcnM6W1sidmlvbGluLWZpbHRlcnMtY29tcG9uZW50Il1dLGlucHV0czp7c2lkZWJhckV4cGFuZGVkOiJzaWRlYmFyRXhwYW5kZWQiLG1ldHJpY0ZpbHRlcnM6Im1ldHJpY0ZpbHRlcnMifSxvdXRwdXRzOnt0b2dnbGVTaWRlYmFyRXhwYW5kZWQ6InRvZ2dsZVNpZGViYXJFeHBhbmRlZCJ9LGRlY2xzOjksdmFyczoyLGNvbnN0czpmdW5jdGlvbigpe2xldCB0O2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgbmdJMThuQ2xvc3VyZU1vZGUmJm5nSTE4bkNsb3N1cmVNb2RlKXt0PWdvb2cuZ2V0TXNnKCJFeHBhbmQvSGlkZSBTaWRlYmFyIil9ZWxzZSB0PSRsb2NhbGl6ZWA6TGFiZWwgZm9yIGEgYnV0dG9uIHRoYXQgZXhwYW5kcy9oaWRlcyB0aGUgc2lkZWJhci7ikJ80OGMyOTkwM2NlODgxYWI2MTA4OGY4ZDQ5ZDgyNzIwMzcxNmFhZWQ04pCfNDY1ODYwMjk5MTk3MDI2MDIxNTpFeHBhbmQvSGlkZSBTaWRlYmFyYDtyZXR1cm5bWzEsImZpbHRlcnMtdG9vbGJhciJdLFsxLCJmaWx0ZXJzLXRpdGxlIl0sWzEsInNpZGUtdG9nZ2xlIl0sWyJtYXQtaWNvbi1idXR0b24iLCIiLCJhcmlhLWxhYmVsIix0LDMsImNsaWNrIl0sWyJzdmdJY29uIiwiY2hldnJvbl9sZWZ0XzI0cHgiXSxbMSwiZmlsdGVycyJdLFszLCJtZXRyaWNOYW1lIiwiZmlsdGVyIiw0LCJuZ0ZvciIsIm5nRm9yT2YiXSxbImNsYXNzIiwiZmlsdGVycy1oaW50Iiw0LCJuZ0lmIl0sWzMsIm1ldHJpY05hbWUiLCJmaWx0ZXIiXSxbMSwiZmlsdGVycy1oaW50Il0sWzEsImZpbHRlcnMtaGludC10ZXh0Il1dfSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoQ2YoMCwiZGl2IiwwKSxDZigxLCJoMyIsMSksUHUoMiwiQWN0aXZlIEZpbHRlcnMiKSxNZigpLENmKDMsImRpdiIsMiksQ2YoNCwiYnV0dG9uIiwzKSxSZigiY2xpY2siLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4udG9nZ2xlU2lkZWJhckV4cGFuZGVkLmVtaXQoKX0pKSx2Zig1LCJtYXQtaWNvbiIsNCksTWYoKSxNZigpLE1mKCksQ2YoNiwiZGl2Iiw1KSxIbSg3LHNPdCwxLDIsIm5wbWktdmlvbGluLWZpbHRlciIsNiksTWYoKSxIbSg4LGxPdCwzLDAsImRpdiIsNykpLDImZSYmKERjKDcpLGJmKCJuZ0Zvck9mIixuLm1ldHJpY0ZpbHRlcnMpLERjKDEpLGJmKCJuZ0lmIiwwPT09bi5tZXRyaWNGaWx0ZXJzLmxlbmd0aCkpfSxkaXJlY3RpdmVzOltOTCxNcSx4dixQdixyT3RdLHN0eWxlczpbJy5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjlweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHh9Lm1hdC1oMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaGVhZGxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDI0cHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTVweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWg2W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1ib2R5LXN0cm9uZ1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYXJkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FyZC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MjRweH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNhbGVuZGFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZGlhbG9nLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVlbSAwO2JvcmRlci10b3A6Ljg0Mzc1ZW0gc29saWQgdHJhbnNwYXJlbnR9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17dG9wOi0wLjg0Mzc1ZW07cGFkZGluZy10b3A6Ljg0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6NzUlO21hcmdpbi10b3A6LjY2NjY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS43OTE2NjY2NjY3ZW0pfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjQzNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDJweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIzZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4yODEyNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LjU0MTY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS42NjY2NjY2NjY3ZW0pfUBtZWRpYSBwcmludHsubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjJlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjFlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyZW0pIHNjYWxlKDAuNzUpfX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouMjVlbSAwIC43NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjA5Mzc1ZW07bWFyZ2luLXRvcDotMC41ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoxZW0gMCAxZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuODQzNzVlbTttYXJnaW4tdG9wOi0wLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMiksIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fWlucHV0Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi0wLjA2MjVlbX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHh9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtfS5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1zdGVwLXN1Yi1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6bm9ybWFsfS5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1zdGVwLWxhYmVsLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10YWItZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MH0ubWF0LXRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTBweDtwYWRkaW5nLXRvcDo2cHg7cGFkZGluZy1ib3R0b206NnB4fS5tYXQtdG9vbHRpcC1oYW5kc2V0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4fS5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtc2ltcGxlLXNuYWNrYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHh9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoxO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjE0cHh9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV06bm90KDplbXB0eSl7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9Lm1hdC1yaXBwbGUubWF0LXJpcHBsZS11bmJvdW5kZWRbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OnZpc2libGV9Lm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJhZGl1czo1MCU7cG9pbnRlci1ldmVudHM6bm9uZTt0cmFuc2l0aW9uOm9wYWNpdHksdHJhbnNmb3JtIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTt0cmFuc2Zvcm06c2NhbGUoMCl9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9LmNkay12aXN1YWxseS1oaWRkZW5bX25nY29udGVudC0lQ09NUCVde2JvcmRlcjowO2NsaXA6cmVjdCgwIDAgMCAwKTtoZWlnaHQ6MXB4O21hcmdpbjotMXB4O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4O3doaXRlLXNwYWNlOm5vd3JhcDtvdXRsaW5lOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0sIC5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cG9pbnRlci1ldmVudHM6bm9uZTt0b3A6MDtsZWZ0OjA7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV06ZW1wdHl7ZGlzcGxheTpub25lfS5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktcGFuZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6YXV0bztib3gtc2l6aW5nOmJvcmRlci1ib3g7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDttYXgtd2lkdGg6MTAwJTttYXgtaGVpZ2h0OjEwMCV9LmNkay1vdmVybGF5LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDt6LWluZGV4OjEwMDA7cG9pbnRlci1ldmVudHM6YXV0bzstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnQ7dHJhbnNpdGlvbjpvcGFjaXR5IDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpO29wYWNpdHk6MH0uY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eToxfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6LjZ9LmNkay1vdmVybGF5LWRhcmstYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMzIpfS5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV0sIC5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWNvbm5lY3RlZC1wb3NpdGlvbi1ib3VuZGluZy1ib3hbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO21pbi13aWR0aDoxcHg7bWluLWhlaWdodDoxcHh9LmNkay1nbG9iYWwtc2Nyb2xsYmxvY2tbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3dpZHRoOjEwMCU7b3ZlcmZsb3cteTpzY3JvbGx9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplW19uZ2NvbnRlbnQtJUNPTVAlXXtyZXNpemU6bm9uZX10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDphdXRvICFpbXBvcnRhbnQ7b3ZlcmZsb3c6aGlkZGVuICFpbXBvcnRhbnR9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZy1maXJlZm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDowICFpbXBvcnRhbnR9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydHt9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmR7fS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGx7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0IDBzIDFtc30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOi13ZWJraXQtYXV0b2ZpbGwpe2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmQgMHMgMW1zfS5tYXQtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LW1kYy1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfVtfbmdob3N0LSVDT01QJV17ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtoZWlnaHQ6MTAwJX0uZmlsdGVycy10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXthbGlnbi1pdGVtczpjZW50ZXI7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2ViZWJlYjtkaXNwbGF5OmZsZXg7aGVpZ2h0OjQycHg7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47cGFkZGluZzowIDEwcHh9LmZpbHRlcnMtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6aW5saW5lO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0uc2lkZS10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2FsaWduLWl0ZW1zOmNlbnRlcjtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Ym9yZGVyLXJhZGl1czozcHg7Ym9yZGVyOjFweCBzb2xpZCAjZWJlYmViO2Rpc3BsYXk6ZmxleDtoZWlnaHQ6MzBweDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO3dpZHRoOjMwcHh9LmZpbHRlcnNbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93LXk6YXV0b30uZmlsdGVycy1oaW50W19uZ2NvbnRlbnQtJUNPTVAlXXthbGlnbi1pdGVtczpjZW50ZXI7ZGlzcGxheTpmbGV4O2hlaWdodDo0MnB4O3BhZGRpbmc6MCAxNnB4fS5maWx0ZXJzLWhpbnQtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMzgpfSddLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihjT3QsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoidmlvbGluLWZpbHRlcnMtY29tcG9uZW50Iix0ZW1wbGF0ZVVybDoiLi92aW9saW5fZmlsdGVyc19jb21wb25lbnQubmcuaHRtbCIsc3R5bGVVcmxzOlsiLi92aW9saW5fZmlsdGVyc19jb21wb25lbnQuY3NzIl0sY2hhbmdlRGV0ZWN0aW9uOmpuLk9uUHVzaH1dfV0sbnVsbCx7c2lkZWJhckV4cGFuZGVkOlt7dHlwZTpSX31dLG1ldHJpY0ZpbHRlcnM6W3t0eXBlOlJffV0sdG9nZ2xlU2lkZWJhckV4cGFuZGVkOlt7dHlwZTpFX31dfSk7Y2xhc3MgZE90e2NvbnN0cnVjdG9yKHQpe3RoaXMuc3RvcmU9dCx0aGlzLnNpZGViYXJFeHBhbmRlZCQ9dGhpcy5zdG9yZS5zZWxlY3QoYXh0KSx0aGlzLm1ldHJpY0ZpbHRlcnMkPXRoaXMuc3RvcmUuc2VsZWN0KGV4dCkucGlwZShWdCgodD0+T2JqZWN0LmVudHJpZXModCkpKSl9b25Ub2dnbGVTaWRlYmFyRXhwYW5kZWQoKXt0aGlzLnN0b3JlLmRpc3BhdGNoKEV2dCgpKX19ZnVuY3Rpb24gcE90KHQsZSxuKXtjb25zdCBvPU9iamVjdC5rZXlzKHQpLGk9ZS5vcmRlcj09PVV2dC5ESVNTSU1JTEFSfHxlLm9yZGVyPT09VXZ0LlNJTUlMQVI7aWYoIiI9PT1lLm1ldHJpY3x8KHZvaWQgMD09PW58fHZvaWQgMD09PW4ucG9pbnRzW2UubWV0cmljXSkmJmkpcmV0dXJuIG87cmV0dXJuKGZ1bmN0aW9uIHModCxlLG4pe2lmKG4pcmV0dXJuIHQuc29ydCgoKHQsbik9PmVbdF0tZVtuXSkpO3JldHVybiB0LnNvcnQoKCh0LG4pPT5lW25dLWVbdF0pKX0pKG8saT8oZnVuY3Rpb24gYSh0LGUsbil7Y29uc3Qgbz17fTtsZXQgaT1OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksYT1OdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFk7bi5vcmRlcj09PVV2dC5TSU1JTEFSJiYoaT1OdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFksYT1OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkpO2Zvcihjb25zdCByIG9mIHQpb1tyXT1yPT09bi5tZXRyaWM/aTp2b2lkIDA9PT1lLnBvaW50c1tyXT9hOmUucG9pbnRzW3JdLnZlY3Rvcj9tT3QoZS5wb2ludHNbbi5tZXRyaWNdLnZlY3RvcixlLnBvaW50c1tyXS52ZWN0b3IsYSk6YTtyZXR1cm4gb30pKG8sbixlKTooZnVuY3Rpb24gcih0LGUsbil7Y29uc3Qgbz16X3Qobi5tZXRyaWMpLGk9e307aWYobi5vcmRlcj09PVV2dC5ERVNDRU5ESU5HKWZvcihjb25zdCBuIG9mIHQpaVtuXT1NYXRoLm1heCguLi5lW25dLmZpbHRlcigodD0+dC5tZXRyaWM9PT1vKSkubWFwKCh0PT5udWxsPT09dC5uUE1JVmFsdWU/LTEvMDp0Lm5QTUlWYWx1ZSkpKTtlbHNlIGZvcihjb25zdCBuIG9mIHQpaVtuXT1NYXRoLm1pbiguLi5lW25dLmZpbHRlcigodD0+dC5tZXRyaWM9PT1vKSkubWFwKCh0PT5udWxsPT09dC5uUE1JVmFsdWU/MS8wOnQublBNSVZhbHVlKSkpO3JldHVybiBpfSkobyx0LGUpLGUub3JkZXI9PT1VdnQuQVNDRU5ETkd8fGUub3JkZXI9PT1VdnQuU0lNSUxBUil9ZnVuY3Rpb24gbU90KHQsZSxuKXtpZih0Lmxlbmd0aCE9ZS5sZW5ndGgpcmV0dXJuIG47cmV0dXJuIGUubWFwKCgoZSxuKT0+ZS10W25dKSkubWFwKCh0PT5NYXRoLnBvdyh0LDIpKSkucmVkdWNlKCgodCxlKT0+dCtlKSwwKX1kT3QuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGRPdCkoZ2YoaVMpKX0sZE90Lsm1Y21wPXNvKHt0eXBlOmRPdCxzZWxlY3RvcnM6W1sibnBtaS12aW9saW4tZmlsdGVycyJdXSxkZWNsczozLHZhcnM6Nixjb25zdHM6W1szLCJzaWRlYmFyRXhwYW5kZWQiLCJtZXRyaWNGaWx0ZXJzIiwidG9nZ2xlU2lkZWJhckV4cGFuZGVkIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihDZigwLCJ2aW9saW4tZmlsdGVycy1jb21wb25lbnQiLDApLFJmKCJ0b2dnbGVTaWRlYmFyRXhwYW5kZWQiLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4ub25Ub2dnbGVTaWRlYmFyRXhwYW5kZWQoKX0pKSxfeSgxLCJhc3luYyIpLF95KDIsImFzeW5jIiksTWYoKSksMiZlJiZiZigic2lkZWJhckV4cGFuZGVkIixDeSgxLDIsbi5zaWRlYmFyRXhwYW5kZWQkKSkoIm1ldHJpY0ZpbHRlcnMiLEN5KDIsNCxuLm1ldHJpY0ZpbHRlcnMkKSl9LGRpcmVjdGl2ZXM6W2NPdF0scGlwZXM6W1Z2XSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKGRPdCxbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJucG1pLXZpb2xpbi1maWx0ZXJzIix0ZW1wbGF0ZTonXG4gICAgPHZpb2xpbi1maWx0ZXJzLWNvbXBvbmVudFxuICAgICAgW3NpZGViYXJFeHBhbmRlZF09InNpZGViYXJFeHBhbmRlZCQgfCBhc3luYyJcbiAgICAgIFttZXRyaWNGaWx0ZXJzXT0ibWV0cmljRmlsdGVycyQgfCBhc3luYyJcbiAgICAgICh0b2dnbGVTaWRlYmFyRXhwYW5kZWQpPSJvblRvZ2dsZVNpZGViYXJFeHBhbmRlZCgpIlxuICAgID48L3Zpb2xpbi1maWx0ZXJzLWNvbXBvbmVudD5cbiAgJyxjaGFuZ2VEZXRlY3Rpb246am4uT25QdXNofV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6aVN9XX0pLG51bGwpO2NvbnN0IGZPdD1bInRodW1iQ29udGFpbmVyIl0sdU90PVsidG9nZ2xlQmFyIl0sZ090PVsiaW5wdXQiXSxoT3Q9ZnVuY3Rpb24odCl7cmV0dXJue2VudGVyRHVyYXRpb246dH19LGJPdD1uZXcgZXIoIm1hdC1zbGlkZS10b2dnbGUtZGVmYXVsdC1vcHRpb25zIix7cHJvdmlkZWRJbjoicm9vdCIsZmFjdG9yeTooKT0+KHtkaXNhYmxlVG9nZ2xlVmFsdWU6ITF9KX0pOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KbGV0IHlPdD0wO2NvbnN0IF9PdD17cHJvdmlkZTp4VSx1c2VFeGlzdGluZzokZSgoKCk9PnZPdCkpLG11bHRpOiEwfTtjbGFzcyBDT3R7Y29uc3RydWN0b3IodCxlKXt0aGlzLnNvdXJjZT10LHRoaXMuY2hlY2tlZD1lfX1jb25zdCBNT3Q9RkYoSUYoSEYoekYoY2xhc3N7Y29uc3RydWN0b3IodCl7dGhpcy5fZWxlbWVudFJlZj10fX0pKSkpO2NsYXNzIHZPdCBleHRlbmRzIE1PdHtjb25zdHJ1Y3Rvcih0LGUsbixvLGksYSl7c3VwZXIodCksdGhpcy5fZm9jdXNNb25pdG9yPWUsdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWY9bix0aGlzLmRlZmF1bHRzPWksdGhpcy5fb25DaGFuZ2U9dD0+e30sdGhpcy5fb25Ub3VjaGVkPSgpPT57fSx0aGlzLl91bmlxdWVJZD0ibWF0LXNsaWRlLXRvZ2dsZS0iKyArK3lPdCx0aGlzLl9yZXF1aXJlZD0hMSx0aGlzLl9jaGVja2VkPSExLHRoaXMubmFtZT1udWxsLHRoaXMuaWQ9dGhpcy5fdW5pcXVlSWQsdGhpcy5sYWJlbFBvc2l0aW9uPSJhZnRlciIsdGhpcy5hcmlhTGFiZWw9bnVsbCx0aGlzLmFyaWFMYWJlbGxlZGJ5PW51bGwsdGhpcy5jaGFuZ2U9bmV3IFN5LHRoaXMudG9nZ2xlQ2hhbmdlPW5ldyBTeSx0aGlzLnRhYkluZGV4PXBhcnNlSW50KG8pfHwwLHRoaXMuY29sb3I9dGhpcy5kZWZhdWx0Q29sb3I9aS5jb2xvcnx8ImFjY2VudCIsdGhpcy5fbm9vcEFuaW1hdGlvbnM9Ik5vb3BBbmltYXRpb25zIj09PWF9Z2V0IHJlcXVpcmVkKCl7cmV0dXJuIHRoaXMuX3JlcXVpcmVkfXNldCByZXF1aXJlZCh0KXt0aGlzLl9yZXF1aXJlZD1lSCh0KX1nZXQgY2hlY2tlZCgpe3JldHVybiB0aGlzLl9jaGVja2VkfXNldCBjaGVja2VkKHQpe3RoaXMuX2NoZWNrZWQ9ZUgodCksdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCl9Z2V0IGlucHV0SWQoKXtyZXR1cm5gJHt0aGlzLmlkfHx0aGlzLl91bmlxdWVJZH0taW5wdXRgfW5nQWZ0ZXJDb250ZW50SW5pdCgpe3RoaXMuX2ZvY3VzTW9uaXRvci5tb25pdG9yKHRoaXMuX2VsZW1lbnRSZWYsITApLnN1YnNjcmliZSgodD0+eyJrZXlib2FyZCI9PT10fHwicHJvZ3JhbSI9PT10P3RoaXMuX2lucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LmZvY3VzKCk6dHx8UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKCk9PnRoaXMuX29uVG91Y2hlZCgpKSl9KSl9bmdPbkRlc3Ryb3koKXt0aGlzLl9mb2N1c01vbml0b3Iuc3RvcE1vbml0b3JpbmcodGhpcy5fZWxlbWVudFJlZil9X29uQ2hhbmdlRXZlbnQodCl7dC5zdG9wUHJvcGFnYXRpb24oKSx0aGlzLnRvZ2dsZUNoYW5nZS5lbWl0KCksdGhpcy5kZWZhdWx0cy5kaXNhYmxlVG9nZ2xlVmFsdWU/dGhpcy5faW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuY2hlY2tlZD10aGlzLmNoZWNrZWQ6KHRoaXMuY2hlY2tlZD10aGlzLl9pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC5jaGVja2VkLHRoaXMuX2VtaXRDaGFuZ2VFdmVudCgpKX1fb25JbnB1dENsaWNrKHQpe3Quc3RvcFByb3BhZ2F0aW9uKCl9d3JpdGVWYWx1ZSh0KXt0aGlzLmNoZWNrZWQ9ISF0fXJlZ2lzdGVyT25DaGFuZ2UodCl7dGhpcy5fb25DaGFuZ2U9dH1yZWdpc3Rlck9uVG91Y2hlZCh0KXt0aGlzLl9vblRvdWNoZWQ9dH1zZXREaXNhYmxlZFN0YXRlKHQpe3RoaXMuZGlzYWJsZWQ9dCx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKX1mb2N1cyh0LGUpe2U/dGhpcy5fZm9jdXNNb25pdG9yLmZvY3VzVmlhKHRoaXMuX2lucHV0RWxlbWVudCxlLHQpOnRoaXMuX2lucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LmZvY3VzKHQpfXRvZ2dsZSgpe3RoaXMuY2hlY2tlZD0hdGhpcy5jaGVja2VkLHRoaXMuX29uQ2hhbmdlKHRoaXMuY2hlY2tlZCl9X2VtaXRDaGFuZ2VFdmVudCgpe3RoaXMuX29uQ2hhbmdlKHRoaXMuY2hlY2tlZCksdGhpcy5jaGFuZ2UuZW1pdChuZXcgQ090KHRoaXMsdGhpcy5jaGVja2VkKSl9X29uTGFiZWxUZXh0Q2hhbmdlKCl7dGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpfX12T3QuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHZPdCkoZ2YoS2gpLGdmKGZGKSxnZihPYiksR2EoInRhYmluZGV4IiksZ2YoYk90KSxnZihjayw4KSl9LHZPdC7JtWNtcD1zbyh7dHlwZTp2T3Qsc2VsZWN0b3JzOltbIm1hdC1zbGlkZS10b2dnbGUiXV0sdmlld1F1ZXJ5OmZ1bmN0aW9uIHQoZSxuKXtpZigxJmUmJihWeShmT3QsNSksVnkodU90LDUpLFZ5KGdPdCw1KSksMiZlKXtsZXQgdDtCeSh0PVV5KCkpJiYobi5fdGh1bWJFbD10LmZpcnN0KSxCeSh0PVV5KCkpJiYobi5fdGh1bWJCYXJFbD10LmZpcnN0KSxCeSh0PVV5KCkpJiYobi5faW5wdXRFbGVtZW50PXQuZmlyc3QpfX0saG9zdEF0dHJzOlsxLCJtYXQtc2xpZGUtdG9nZ2xlIl0saG9zdFZhcnM6MTIsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQoZSxuKXsyJmUmJihjZygiaWQiLG4uaWQpLHltKCJ0YWJpbmRleCIsbi5kaXNhYmxlZD9udWxsOi0xKSgiYXJpYS1sYWJlbCIsbnVsbCkoImFyaWEtbGFiZWxsZWRieSIsbnVsbCksY3UoIm1hdC1jaGVja2VkIixuLmNoZWNrZWQpKCJtYXQtZGlzYWJsZWQiLG4uZGlzYWJsZWQpKCJtYXQtc2xpZGUtdG9nZ2xlLWxhYmVsLWJlZm9yZSIsImJlZm9yZSI9PW4ubGFiZWxQb3NpdGlvbikoIl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlIixuLl9ub29wQW5pbWF0aW9ucykpfSxpbnB1dHM6e2Rpc2FibGVkOiJkaXNhYmxlZCIsZGlzYWJsZVJpcHBsZToiZGlzYWJsZVJpcHBsZSIsY29sb3I6ImNvbG9yIix0YWJJbmRleDoidGFiSW5kZXgiLG5hbWU6Im5hbWUiLGlkOiJpZCIsbGFiZWxQb3NpdGlvbjoibGFiZWxQb3NpdGlvbiIsYXJpYUxhYmVsOlsiYXJpYS1sYWJlbCIsImFyaWFMYWJlbCJdLGFyaWFMYWJlbGxlZGJ5OlsiYXJpYS1sYWJlbGxlZGJ5IiwiYXJpYUxhYmVsbGVkYnkiXSxyZXF1aXJlZDoicmVxdWlyZWQiLGNoZWNrZWQ6ImNoZWNrZWQiLGFyaWFEZXNjcmliZWRieTpbImFyaWEtZGVzY3JpYmVkYnkiLCJhcmlhRGVzY3JpYmVkYnkiXX0sb3V0cHV0czp7Y2hhbmdlOiJjaGFuZ2UiLHRvZ2dsZUNoYW5nZToidG9nZ2xlQ2hhbmdlIn0sZXhwb3J0QXM6WyJtYXRTbGlkZVRvZ2dsZSJdLGZlYXR1cmVzOltqaChbX090XSksUXBdLG5nQ29udGVudFNlbGVjdG9yczpbIioiXSxkZWNsczoxNix2YXJzOjIwLGNvbnN0czpbWzEsIm1hdC1zbGlkZS10b2dnbGUtbGFiZWwiXSxbImxhYmVsIiwiIl0sWzEsIm1hdC1zbGlkZS10b2dnbGUtYmFyIl0sWyJ0b2dnbGVCYXIiLCIiXSxbInR5cGUiLCJjaGVja2JveCIsInJvbGUiLCJzd2l0Y2giLDEsIm1hdC1zbGlkZS10b2dnbGUtaW5wdXQiLCJjZGstdmlzdWFsbHktaGlkZGVuIiwzLCJpZCIsInJlcXVpcmVkIiwidGFiSW5kZXgiLCJjaGVja2VkIiwiZGlzYWJsZWQiLCJjaGFuZ2UiLCJjbGljayJdLFsiaW5wdXQiLCIiXSxbMSwibWF0LXNsaWRlLXRvZ2dsZS10aHVtYi1jb250YWluZXIiXSxbInRodW1iQ29udGFpbmVyIiwiIl0sWzEsIm1hdC1zbGlkZS10b2dnbGUtdGh1bWIiXSxbIm1hdC1yaXBwbGUiLCIiLDEsIm1hdC1zbGlkZS10b2dnbGUtcmlwcGxlIiwibWF0LWZvY3VzLWluZGljYXRvciIsMywibWF0UmlwcGxlVHJpZ2dlciIsIm1hdFJpcHBsZURpc2FibGVkIiwibWF0UmlwcGxlQ2VudGVyZWQiLCJtYXRSaXBwbGVSYWRpdXMiLCJtYXRSaXBwbGVBbmltYXRpb24iXSxbMSwibWF0LXJpcHBsZS1lbGVtZW50IiwibWF0LXNsaWRlLXRvZ2dsZS1wZXJzaXN0ZW50LXJpcHBsZSJdLFsxLCJtYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnQiLDMsImNka09ic2VydmVDb250ZW50Il0sWyJsYWJlbENvbnRlbnQiLCIiXSxbMiwiZGlzcGxheSIsIm5vbmUiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pe2lmKDEmZSYmKEhmKCksQ2YoMCwibGFiZWwiLDAsMSksQ2YoMiwiZGl2IiwyLDMpLENmKDQsImlucHV0Iiw0LDUpLFJmKCJjaGFuZ2UiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLl9vbkNoYW5nZUV2ZW50KGUpfSkpKCJjbGljayIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4uX29uSW5wdXRDbGljayhlKX0pKSxNZigpLENmKDYsImRpdiIsNiw3KSx2Zig4LCJkaXYiLDgpLENmKDksImRpdiIsOSksdmYoMTAsImRpdiIsMTApLE1mKCksTWYoKSxNZigpLENmKDExLCJzcGFuIiwxMSwxMiksUmYoImNka09ic2VydmVDb250ZW50IiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLl9vbkxhYmVsVGV4dENoYW5nZSgpfSkpLENmKDEzLCJzcGFuIiwxMyksUHUoMTQsIsKgIiksTWYoKSxGZigxNSksTWYoKSxNZigpKSwyJmUpe2NvbnN0IHQ9Rm0oMSksZT1GbSgxMik7eW0oImZvciIsbi5pbnB1dElkKSxEYygyKSxjdSgibWF0LXNsaWRlLXRvZ2dsZS1iYXItbm8tc2lkZS1tYXJnaW4iLCFlLnRleHRDb250ZW50fHwhZS50ZXh0Q29udGVudC50cmltKCkpLERjKDIpLGJmKCJpZCIsbi5pbnB1dElkKSgicmVxdWlyZWQiLG4ucmVxdWlyZWQpKCJ0YWJJbmRleCIsbi50YWJJbmRleCkoImNoZWNrZWQiLG4uY2hlY2tlZCkoImRpc2FibGVkIixuLmRpc2FibGVkKSx5bSgibmFtZSIsbi5uYW1lKSgiYXJpYS1jaGVja2VkIixuLmNoZWNrZWQudG9TdHJpbmcoKSkoImFyaWEtbGFiZWwiLG4uYXJpYUxhYmVsKSgiYXJpYS1sYWJlbGxlZGJ5IixuLmFyaWFMYWJlbGxlZGJ5KSgiYXJpYS1kZXNjcmliZWRieSIsbi5hcmlhRGVzY3JpYmVkYnkpLERjKDUpLGJmKCJtYXRSaXBwbGVUcmlnZ2VyIix0KSgibWF0UmlwcGxlRGlzYWJsZWQiLG4uZGlzYWJsZVJpcHBsZXx8bi5kaXNhYmxlZCkoIm1hdFJpcHBsZUNlbnRlcmVkIiwhMCkoIm1hdFJpcHBsZVJhZGl1cyIsMjApKCJtYXRSaXBwbGVBbmltYXRpb24iLGl5KDE4LGhPdCxuLl9ub29wQW5pbWF0aW9ucz8wOjE1MCkpfX0sZGlyZWN0aXZlczpbbUwsUEhdLHN0eWxlczpbIi5tYXQtc2xpZGUtdG9nZ2xle2Rpc3BsYXk6aW5saW5lLWJsb2NrO2hlaWdodDoyNHB4O21heC13aWR0aDoxMDAlO2xpbmUtaGVpZ2h0OjI0cHg7d2hpdGUtc3BhY2U6bm93cmFwO291dGxpbmU6bm9uZTstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnR9Lm1hdC1zbGlkZS10b2dnbGUubWF0LWNoZWNrZWQgLm1hdC1zbGlkZS10b2dnbGUtdGh1bWItY29udGFpbmVye3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgxNnB4LCAwLCAwKX1bZGlyPXJ0bF0gLm1hdC1zbGlkZS10b2dnbGUubWF0LWNoZWNrZWQgLm1hdC1zbGlkZS10b2dnbGUtdGh1bWItY29udGFpbmVye3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgtMTZweCwgMCwgMCl9Lm1hdC1zbGlkZS10b2dnbGUubWF0LWRpc2FibGVke29wYWNpdHk6LjM4fS5tYXQtc2xpZGUtdG9nZ2xlLm1hdC1kaXNhYmxlZCAubWF0LXNsaWRlLXRvZ2dsZS1sYWJlbCwubWF0LXNsaWRlLXRvZ2dsZS5tYXQtZGlzYWJsZWQgLm1hdC1zbGlkZS10b2dnbGUtdGh1bWItY29udGFpbmVye2N1cnNvcjpkZWZhdWx0fS5tYXQtc2xpZGUtdG9nZ2xlLWxhYmVsey13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTstbW96LXVzZXItc2VsZWN0Om5vbmU7LW1zLXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZTtkaXNwbGF5OmZsZXg7ZmxleDoxO2ZsZXgtZGlyZWN0aW9uOnJvdzthbGlnbi1pdGVtczpjZW50ZXI7aGVpZ2h0OmluaGVyaXQ7Y3Vyc29yOnBvaW50ZXJ9Lm1hdC1zbGlkZS10b2dnbGUtY29udGVudHt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXN9Lm1hdC1zbGlkZS10b2dnbGUtbGFiZWwtYmVmb3JlIC5tYXQtc2xpZGUtdG9nZ2xlLWxhYmVse29yZGVyOjF9Lm1hdC1zbGlkZS10b2dnbGUtbGFiZWwtYmVmb3JlIC5tYXQtc2xpZGUtdG9nZ2xlLWJhcntvcmRlcjoyfVtkaXI9cnRsXSAubWF0LXNsaWRlLXRvZ2dsZS1sYWJlbC1iZWZvcmUgLm1hdC1zbGlkZS10b2dnbGUtYmFyLC5tYXQtc2xpZGUtdG9nZ2xlLWJhcnttYXJnaW4tcmlnaHQ6OHB4O21hcmdpbi1sZWZ0OjB9W2Rpcj1ydGxdIC5tYXQtc2xpZGUtdG9nZ2xlLWJhciwubWF0LXNsaWRlLXRvZ2dsZS1sYWJlbC1iZWZvcmUgLm1hdC1zbGlkZS10b2dnbGUtYmFye21hcmdpbi1sZWZ0OjhweDttYXJnaW4tcmlnaHQ6MH0ubWF0LXNsaWRlLXRvZ2dsZS1iYXItbm8tc2lkZS1tYXJnaW57bWFyZ2luLWxlZnQ6MDttYXJnaW4tcmlnaHQ6MH0ubWF0LXNsaWRlLXRvZ2dsZS10aHVtYi1jb250YWluZXJ7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxO3dpZHRoOjIwcHg7aGVpZ2h0OjIwcHg7dG9wOi0zcHg7bGVmdDowO3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLCAwLCAwKTt0cmFuc2l0aW9uOmFsbCA4MG1zIGxpbmVhcjt0cmFuc2l0aW9uLXByb3BlcnR5OnRyYW5zZm9ybX0uX21hdC1hbmltYXRpb24tbm9vcGFibGUgLm1hdC1zbGlkZS10b2dnbGUtdGh1bWItY29udGFpbmVye3RyYW5zaXRpb246bm9uZX1bZGlyPXJ0bF0gLm1hdC1zbGlkZS10b2dnbGUtdGh1bWItY29udGFpbmVye2xlZnQ6YXV0bztyaWdodDowfS5tYXQtc2xpZGUtdG9nZ2xlLXRodW1ie2hlaWdodDoyMHB4O3dpZHRoOjIwcHg7Ym9yZGVyLXJhZGl1czo1MCV9Lm1hdC1zbGlkZS10b2dnbGUtYmFye3Bvc2l0aW9uOnJlbGF0aXZlO3dpZHRoOjM2cHg7aGVpZ2h0OjE0cHg7ZmxleC1zaHJpbms6MDtib3JkZXItcmFkaXVzOjhweH0ubWF0LXNsaWRlLXRvZ2dsZS1pbnB1dHtib3R0b206MDtsZWZ0OjEwcHh9W2Rpcj1ydGxdIC5tYXQtc2xpZGUtdG9nZ2xlLWlucHV0e2xlZnQ6YXV0bztyaWdodDoxMHB4fS5tYXQtc2xpZGUtdG9nZ2xlLWJhciwubWF0LXNsaWRlLXRvZ2dsZS10aHVtYnt0cmFuc2l0aW9uOmFsbCA4MG1zIGxpbmVhcjt0cmFuc2l0aW9uLXByb3BlcnR5OmJhY2tncm91bmQtY29sb3I7dHJhbnNpdGlvbi1kZWxheTo1MG1zfS5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZSAubWF0LXNsaWRlLXRvZ2dsZS1iYXIsLl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlIC5tYXQtc2xpZGUtdG9nZ2xlLXRodW1ie3RyYW5zaXRpb246bm9uZX0ubWF0LXNsaWRlLXRvZ2dsZSAubWF0LXNsaWRlLXRvZ2dsZS1yaXBwbGV7cG9zaXRpb246YWJzb2x1dGU7dG9wOmNhbGMoNTAlIC0gMjBweCk7bGVmdDpjYWxjKDUwJSAtIDIwcHgpO2hlaWdodDo0MHB4O3dpZHRoOjQwcHg7ei1pbmRleDoxO3BvaW50ZXItZXZlbnRzOm5vbmV9Lm1hdC1zbGlkZS10b2dnbGUgLm1hdC1zbGlkZS10b2dnbGUtcmlwcGxlIC5tYXQtcmlwcGxlLWVsZW1lbnQ6bm90KC5tYXQtc2xpZGUtdG9nZ2xlLXBlcnNpc3RlbnQtcmlwcGxlKXtvcGFjaXR5Oi4xMn0ubWF0LXNsaWRlLXRvZ2dsZS1wZXJzaXN0ZW50LXJpcHBsZXt3aWR0aDoxMDAlO2hlaWdodDoxMDAlO3RyYW5zZm9ybTpub25lfS5tYXQtc2xpZGUtdG9nZ2xlLWJhcjpob3ZlciAubWF0LXNsaWRlLXRvZ2dsZS1wZXJzaXN0ZW50LXJpcHBsZXtvcGFjaXR5Oi4wNH0ubWF0LXNsaWRlLXRvZ2dsZTpub3QoLm1hdC1kaXNhYmxlZCkuY2RrLWtleWJvYXJkLWZvY3VzZWQgLm1hdC1zbGlkZS10b2dnbGUtcGVyc2lzdGVudC1yaXBwbGV7b3BhY2l0eTouMTJ9Lm1hdC1zbGlkZS10b2dnbGUtcGVyc2lzdGVudC1yaXBwbGUsLm1hdC1zbGlkZS10b2dnbGUubWF0LWRpc2FibGVkIC5tYXQtc2xpZGUtdG9nZ2xlLWJhcjpob3ZlciAubWF0LXNsaWRlLXRvZ2dsZS1wZXJzaXN0ZW50LXJpcHBsZXtvcGFjaXR5OjB9QG1lZGlhKGhvdmVyOiBub25lKXsubWF0LXNsaWRlLXRvZ2dsZS1iYXI6aG92ZXIgLm1hdC1zbGlkZS10b2dnbGUtcGVyc2lzdGVudC1yaXBwbGV7ZGlzcGxheTpub25lfX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtc2xpZGUtdG9nZ2xlLXRodW1iLC5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1zbGlkZS10b2dnbGUtYmFye2JvcmRlcjoxcHggc29saWR9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LXNsaWRlLXRvZ2dsZS5jZGsta2V5Ym9hcmQtZm9jdXNlZCAubWF0LXNsaWRlLXRvZ2dsZS1iYXJ7b3V0bGluZToycHggZG90dGVkO291dGxpbmUtb2Zmc2V0OjVweH1cbiJdLGVuY2Fwc3VsYXRpb246MixjaGFuZ2VEZXRlY3Rpb246MH0pLHZPdC5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOktofSx7dHlwZTpmRn0se3R5cGU6T2J9LHt0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTokYSxhcmdzOlsidGFiaW5kZXgiXX1dfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbYk90XX1dfSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W2NrXX1dfV0sdk90LnByb3BEZWNvcmF0b3JzPXtfdGh1bWJFbDpbe3R5cGU6YXIsYXJnczpbInRodW1iQ29udGFpbmVyIl19XSxfdGh1bWJCYXJFbDpbe3R5cGU6YXIsYXJnczpbInRvZ2dsZUJhciJdfV0sbmFtZTpbe3R5cGU6Ul99XSxpZDpbe3R5cGU6Ul99XSxsYWJlbFBvc2l0aW9uOlt7dHlwZTpSX31dLGFyaWFMYWJlbDpbe3R5cGU6Ul8sYXJnczpbImFyaWEtbGFiZWwiXX1dLGFyaWFMYWJlbGxlZGJ5Olt7dHlwZTpSXyxhcmdzOlsiYXJpYS1sYWJlbGxlZGJ5Il19XSxhcmlhRGVzY3JpYmVkYnk6W3t0eXBlOlJfLGFyZ3M6WyJhcmlhLWRlc2NyaWJlZGJ5Il19XSxyZXF1aXJlZDpbe3R5cGU6Ul99XSxjaGVja2VkOlt7dHlwZTpSX31dLGNoYW5nZTpbe3R5cGU6RV99XSx0b2dnbGVDaGFuZ2U6W3t0eXBlOkVffV0sX2lucHV0RWxlbWVudDpbe3R5cGU6YXIsYXJnczpbImlucHV0Il19XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYih2T3QsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoibWF0LXNsaWRlLXRvZ2dsZSIsZXhwb3J0QXM6Im1hdFNsaWRlVG9nZ2xlIixob3N0OntjbGFzczoibWF0LXNsaWRlLXRvZ2dsZSIsIltpZF0iOiJpZCIsIlthdHRyLnRhYmluZGV4XSI6ImRpc2FibGVkID8gbnVsbCA6IC0xIiwiW2F0dHIuYXJpYS1sYWJlbF0iOiJudWxsIiwiW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XSI6Im51bGwiLCJbY2xhc3MubWF0LWNoZWNrZWRdIjoiY2hlY2tlZCIsIltjbGFzcy5tYXQtZGlzYWJsZWRdIjoiZGlzYWJsZWQiLCJbY2xhc3MubWF0LXNsaWRlLXRvZ2dsZS1sYWJlbC1iZWZvcmVdIjonbGFiZWxQb3NpdGlvbiA9PSAiYmVmb3JlIicsIltjbGFzcy5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZV0iOiJfbm9vcEFuaW1hdGlvbnMifSx0ZW1wbGF0ZTonPGxhYmVsIFthdHRyLmZvcl09ImlucHV0SWQiIGNsYXNzPSJtYXQtc2xpZGUtdG9nZ2xlLWxhYmVsIiAjbGFiZWw+XG4gIDxkaXYgI3RvZ2dsZUJhciBjbGFzcz0ibWF0LXNsaWRlLXRvZ2dsZS1iYXIiXG4gICAgICAgW2NsYXNzLm1hdC1zbGlkZS10b2dnbGUtYmFyLW5vLXNpZGUtbWFyZ2luXT0iIWxhYmVsQ29udGVudC50ZXh0Q29udGVudCB8fCAhbGFiZWxDb250ZW50LnRleHRDb250ZW50LnRyaW0oKSI+XG5cbiAgICA8aW5wdXQgI2lucHV0IGNsYXNzPSJtYXQtc2xpZGUtdG9nZ2xlLWlucHV0IGNkay12aXN1YWxseS1oaWRkZW4iIHR5cGU9ImNoZWNrYm94IlxuICAgICAgICAgICByb2xlPSJzd2l0Y2giXG4gICAgICAgICAgIFtpZF09ImlucHV0SWQiXG4gICAgICAgICAgIFtyZXF1aXJlZF09InJlcXVpcmVkIlxuICAgICAgICAgICBbdGFiSW5kZXhdPSJ0YWJJbmRleCJcbiAgICAgICAgICAgW2NoZWNrZWRdPSJjaGVja2VkIlxuICAgICAgICAgICBbZGlzYWJsZWRdPSJkaXNhYmxlZCJcbiAgICAgICAgICAgW2F0dHIubmFtZV09Im5hbWUiXG4gICAgICAgICAgIFthdHRyLmFyaWEtY2hlY2tlZF09ImNoZWNrZWQudG9TdHJpbmcoKSJcbiAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09ImFyaWFMYWJlbCJcbiAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT0iYXJpYUxhYmVsbGVkYnkiXG4gICAgICAgICAgIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPSJhcmlhRGVzY3JpYmVkYnkiXG4gICAgICAgICAgIChjaGFuZ2UpPSJfb25DaGFuZ2VFdmVudCgkZXZlbnQpIlxuICAgICAgICAgICAoY2xpY2spPSJfb25JbnB1dENsaWNrKCRldmVudCkiPlxuXG4gICAgPGRpdiBjbGFzcz0ibWF0LXNsaWRlLXRvZ2dsZS10aHVtYi1jb250YWluZXIiICN0aHVtYkNvbnRhaW5lcj5cbiAgICAgIDxkaXYgY2xhc3M9Im1hdC1zbGlkZS10b2dnbGUtdGh1bWIiPjwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz0ibWF0LXNsaWRlLXRvZ2dsZS1yaXBwbGUgbWF0LWZvY3VzLWluZGljYXRvciIgbWF0LXJpcHBsZVxuICAgICAgICAgICBbbWF0UmlwcGxlVHJpZ2dlcl09ImxhYmVsIlxuICAgICAgICAgICBbbWF0UmlwcGxlRGlzYWJsZWRdPSJkaXNhYmxlUmlwcGxlIHx8IGRpc2FibGVkIlxuICAgICAgICAgICBbbWF0UmlwcGxlQ2VudGVyZWRdPSJ0cnVlIlxuICAgICAgICAgICBbbWF0UmlwcGxlUmFkaXVzXT0iMjAiXG4gICAgICAgICAgIFttYXRSaXBwbGVBbmltYXRpb25dPSJ7ZW50ZXJEdXJhdGlvbjogX25vb3BBbmltYXRpb25zID8gMCA6IDE1MH0iPlxuXG4gICAgICAgIDxkaXYgY2xhc3M9Im1hdC1yaXBwbGUtZWxlbWVudCBtYXQtc2xpZGUtdG9nZ2xlLXBlcnNpc3RlbnQtcmlwcGxlIj48L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gIDwvZGl2PlxuXG4gIDxzcGFuIGNsYXNzPSJtYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnQiICNsYWJlbENvbnRlbnQgKGNka09ic2VydmVDb250ZW50KT0iX29uTGFiZWxUZXh0Q2hhbmdlKCkiPlxuICAgIFx4M2MhLS0gQWRkIGFuIGludmlzaWJsZSBzcGFuIHNvIEpBV1MgY2FuIHJlYWQgdGhlIGxhYmVsIC0tXHgzZVxuICAgIDxzcGFuIHN0eWxlPSJkaXNwbGF5Om5vbmUiPiZuYnNwOzwvc3Bhbj5cbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gIDwvc3Bhbj5cbjwvbGFiZWw+XG4nLHByb3ZpZGVyczpbX090XSxpbnB1dHM6WyJkaXNhYmxlZCIsImRpc2FibGVSaXBwbGUiLCJjb2xvciIsInRhYkluZGV4Il0sZW5jYXBzdWxhdGlvbjpXbi5Ob25lLGNoYW5nZURldGVjdGlvbjpqbi5PblB1c2gsc3R5bGVzOlsiLm1hdC1zbGlkZS10b2dnbGV7ZGlzcGxheTppbmxpbmUtYmxvY2s7aGVpZ2h0OjI0cHg7bWF4LXdpZHRoOjEwMCU7bGluZS1oZWlnaHQ6MjRweDt3aGl0ZS1zcGFjZTpub3dyYXA7b3V0bGluZTpub25lOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudH0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtY2hlY2tlZCAubWF0LXNsaWRlLXRvZ2dsZS10aHVtYi1jb250YWluZXJ7dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDE2cHgsIDAsIDApfVtkaXI9cnRsXSAubWF0LXNsaWRlLXRvZ2dsZS5tYXQtY2hlY2tlZCAubWF0LXNsaWRlLXRvZ2dsZS10aHVtYi1jb250YWluZXJ7dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKC0xNnB4LCAwLCAwKX0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtZGlzYWJsZWR7b3BhY2l0eTouMzh9Lm1hdC1zbGlkZS10b2dnbGUubWF0LWRpc2FibGVkIC5tYXQtc2xpZGUtdG9nZ2xlLWxhYmVsLC5tYXQtc2xpZGUtdG9nZ2xlLm1hdC1kaXNhYmxlZCAubWF0LXNsaWRlLXRvZ2dsZS10aHVtYi1jb250YWluZXJ7Y3Vyc29yOmRlZmF1bHR9Lm1hdC1zbGlkZS10b2dnbGUtbGFiZWx7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTstbXMtdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lO2Rpc3BsYXk6ZmxleDtmbGV4OjE7ZmxleC1kaXJlY3Rpb246cm93O2FsaWduLWl0ZW1zOmNlbnRlcjtoZWlnaHQ6aW5oZXJpdDtjdXJzb3I6cG9pbnRlcn0ubWF0LXNsaWRlLXRvZ2dsZS1jb250ZW50e3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpc30ubWF0LXNsaWRlLXRvZ2dsZS1sYWJlbC1iZWZvcmUgLm1hdC1zbGlkZS10b2dnbGUtbGFiZWx7b3JkZXI6MX0ubWF0LXNsaWRlLXRvZ2dsZS1sYWJlbC1iZWZvcmUgLm1hdC1zbGlkZS10b2dnbGUtYmFye29yZGVyOjJ9W2Rpcj1ydGxdIC5tYXQtc2xpZGUtdG9nZ2xlLWxhYmVsLWJlZm9yZSAubWF0LXNsaWRlLXRvZ2dsZS1iYXIsLm1hdC1zbGlkZS10b2dnbGUtYmFye21hcmdpbi1yaWdodDo4cHg7bWFyZ2luLWxlZnQ6MH1bZGlyPXJ0bF0gLm1hdC1zbGlkZS10b2dnbGUtYmFyLC5tYXQtc2xpZGUtdG9nZ2xlLWxhYmVsLWJlZm9yZSAubWF0LXNsaWRlLXRvZ2dsZS1iYXJ7bWFyZ2luLWxlZnQ6OHB4O21hcmdpbi1yaWdodDowfS5tYXQtc2xpZGUtdG9nZ2xlLWJhci1uby1zaWRlLW1hcmdpbnttYXJnaW4tbGVmdDowO21hcmdpbi1yaWdodDowfS5tYXQtc2xpZGUtdG9nZ2xlLXRodW1iLWNvbnRhaW5lcntwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjE7d2lkdGg6MjBweDtoZWlnaHQ6MjBweDt0b3A6LTNweDtsZWZ0OjA7dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsIDAsIDApO3RyYW5zaXRpb246YWxsIDgwbXMgbGluZWFyO3RyYW5zaXRpb24tcHJvcGVydHk6dHJhbnNmb3JtfS5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZSAubWF0LXNsaWRlLXRvZ2dsZS10aHVtYi1jb250YWluZXJ7dHJhbnNpdGlvbjpub25lfVtkaXI9cnRsXSAubWF0LXNsaWRlLXRvZ2dsZS10aHVtYi1jb250YWluZXJ7bGVmdDphdXRvO3JpZ2h0OjB9Lm1hdC1zbGlkZS10b2dnbGUtdGh1bWJ7aGVpZ2h0OjIwcHg7d2lkdGg6MjBweDtib3JkZXItcmFkaXVzOjUwJX0ubWF0LXNsaWRlLXRvZ2dsZS1iYXJ7cG9zaXRpb246cmVsYXRpdmU7d2lkdGg6MzZweDtoZWlnaHQ6MTRweDtmbGV4LXNocmluazowO2JvcmRlci1yYWRpdXM6OHB4fS5tYXQtc2xpZGUtdG9nZ2xlLWlucHV0e2JvdHRvbTowO2xlZnQ6MTBweH1bZGlyPXJ0bF0gLm1hdC1zbGlkZS10b2dnbGUtaW5wdXR7bGVmdDphdXRvO3JpZ2h0OjEwcHh9Lm1hdC1zbGlkZS10b2dnbGUtYmFyLC5tYXQtc2xpZGUtdG9nZ2xlLXRodW1ie3RyYW5zaXRpb246YWxsIDgwbXMgbGluZWFyO3RyYW5zaXRpb24tcHJvcGVydHk6YmFja2dyb3VuZC1jb2xvcjt0cmFuc2l0aW9uLWRlbGF5OjUwbXN9Ll9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlIC5tYXQtc2xpZGUtdG9nZ2xlLWJhciwuX21hdC1hbmltYXRpb24tbm9vcGFibGUgLm1hdC1zbGlkZS10b2dnbGUtdGh1bWJ7dHJhbnNpdGlvbjpub25lfS5tYXQtc2xpZGUtdG9nZ2xlIC5tYXQtc2xpZGUtdG9nZ2xlLXJpcHBsZXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6Y2FsYyg1MCUgLSAyMHB4KTtsZWZ0OmNhbGMoNTAlIC0gMjBweCk7aGVpZ2h0OjQwcHg7d2lkdGg6NDBweDt6LWluZGV4OjE7cG9pbnRlci1ldmVudHM6bm9uZX0ubWF0LXNsaWRlLXRvZ2dsZSAubWF0LXNsaWRlLXRvZ2dsZS1yaXBwbGUgLm1hdC1yaXBwbGUtZWxlbWVudDpub3QoLm1hdC1zbGlkZS10b2dnbGUtcGVyc2lzdGVudC1yaXBwbGUpe29wYWNpdHk6LjEyfS5tYXQtc2xpZGUtdG9nZ2xlLXBlcnNpc3RlbnQtcmlwcGxle3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7dHJhbnNmb3JtOm5vbmV9Lm1hdC1zbGlkZS10b2dnbGUtYmFyOmhvdmVyIC5tYXQtc2xpZGUtdG9nZ2xlLXBlcnNpc3RlbnQtcmlwcGxle29wYWNpdHk6LjA0fS5tYXQtc2xpZGUtdG9nZ2xlOm5vdCgubWF0LWRpc2FibGVkKS5jZGsta2V5Ym9hcmQtZm9jdXNlZCAubWF0LXNsaWRlLXRvZ2dsZS1wZXJzaXN0ZW50LXJpcHBsZXtvcGFjaXR5Oi4xMn0ubWF0LXNsaWRlLXRvZ2dsZS1wZXJzaXN0ZW50LXJpcHBsZSwubWF0LXNsaWRlLXRvZ2dsZS5tYXQtZGlzYWJsZWQgLm1hdC1zbGlkZS10b2dnbGUtYmFyOmhvdmVyIC5tYXQtc2xpZGUtdG9nZ2xlLXBlcnNpc3RlbnQtcmlwcGxle29wYWNpdHk6MH1AbWVkaWEoaG92ZXI6IG5vbmUpey5tYXQtc2xpZGUtdG9nZ2xlLWJhcjpob3ZlciAubWF0LXNsaWRlLXRvZ2dsZS1wZXJzaXN0ZW50LXJpcHBsZXtkaXNwbGF5Om5vbmV9fS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1zbGlkZS10b2dnbGUtdGh1bWIsLmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LXNsaWRlLXRvZ2dsZS1iYXJ7Ym9yZGVyOjFweCBzb2xpZH0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtc2xpZGUtdG9nZ2xlLmNkay1rZXlib2FyZC1mb2N1c2VkIC5tYXQtc2xpZGUtdG9nZ2xlLWJhcntvdXRsaW5lOjJweCBkb3R0ZWQ7b3V0bGluZS1vZmZzZXQ6NXB4fVxuIl19XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpLaH0se3R5cGU6ZkZ9LHt0eXBlOk9ifSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6JGEsYXJnczpbInRhYmluZGV4Il19XX0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W2JPdF19XX0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltja119XX1dfSkse25hbWU6W3t0eXBlOlJffV0saWQ6W3t0eXBlOlJffV0sbGFiZWxQb3NpdGlvbjpbe3R5cGU6Ul99XSxhcmlhTGFiZWw6W3t0eXBlOlJfLGFyZ3M6WyJhcmlhLWxhYmVsIl19XSxhcmlhTGFiZWxsZWRieTpbe3R5cGU6Ul8sYXJnczpbImFyaWEtbGFiZWxsZWRieSJdfV0sY2hhbmdlOlt7dHlwZTpFX31dLHRvZ2dsZUNoYW5nZTpbe3R5cGU6RV99XSxyZXF1aXJlZDpbe3R5cGU6Ul99XSxjaGVja2VkOlt7dHlwZTpSX31dLF90aHVtYkVsOlt7dHlwZTphcixhcmdzOlsidGh1bWJDb250YWluZXIiXX1dLF90aHVtYkJhckVsOlt7dHlwZTphcixhcmdzOlsidG9nZ2xlQmFyIl19XSxhcmlhRGVzY3JpYmVkYnk6W3t0eXBlOlJfLGFyZ3M6WyJhcmlhLWRlc2NyaWJlZGJ5Il19XSxfaW5wdXRFbGVtZW50Olt7dHlwZTphcixhcmdzOlsiaW5wdXQiXX1dfSk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjb25zdCB4T3Q9e3Byb3ZpZGU6RVUsdXNlRXhpc3Rpbmc6JGUoKCgpPT5PT3QpKSxtdWx0aTohMH07Y2xhc3MgT090IGV4dGVuZHMgVkd7fU9PdC7JtWZhYz0oZnVuY3Rpb24oKXtsZXQgdDtyZXR1cm4gZnVuY3Rpb24gZShuKXtyZXR1cm4odHx8KHQ9VWEoT090KSkpKG58fE9PdCl9fSkoKSxPT3QuybVkaXI9aG8oe3R5cGU6T090LHNlbGVjdG9yczpbWyJtYXQtc2xpZGUtdG9nZ2xlIiwicmVxdWlyZWQiLCIiLCJmb3JtQ29udHJvbE5hbWUiLCIiXSxbIm1hdC1zbGlkZS10b2dnbGUiLCJyZXF1aXJlZCIsIiIsImZvcm1Db250cm9sIiwiIl0sWyJtYXQtc2xpZGUtdG9nZ2xlIiwicmVxdWlyZWQiLCIiLCJuZ01vZGVsIiwiIl1dLGZlYXR1cmVzOltqaChbeE90XSksUXBdfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihPT3QsW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3RvcjoibWF0LXNsaWRlLXRvZ2dsZVtyZXF1aXJlZF1bZm9ybUNvbnRyb2xOYW1lXSxcbiAgICAgICAgICAgICBtYXQtc2xpZGUtdG9nZ2xlW3JlcXVpcmVkXVtmb3JtQ29udHJvbF0sIG1hdC1zbGlkZS10b2dnbGVbcmVxdWlyZWRdW25nTW9kZWxdIixwcm92aWRlcnM6W3hPdF19XX1dLG51bGwsbnVsbCk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjbGFzcyBQT3R7fVBPdC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8UE90KX0sUE90Lsm1bW9kPWZvKHt0eXBlOlBPdH0pLFBPdC7JtWluaj1Ebih7fSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihQT3QsW3t0eXBlOkxfLGFyZ3M6W3tleHBvcnRzOltPT3RdLGRlY2xhcmF0aW9uczpbT090XX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnVvKFBPdCx7ZGVjbGFyYXRpb25zOltPT3RdLGV4cG9ydHM6W09PdF19KTtjbGFzcyB3T3R7fWZ1bmN0aW9uIGtPdCh0LGUpezEmdCYmdmYoMCwibWF0LWljb24iLDMpfXdPdC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8d090KX0sd090Lsm1bW9kPWZvKHt0eXBlOndPdH0pLHdPdC7JtWluaj1Ebih7aW1wb3J0czpbW1BPdCxmTCxORix3SF0sUE90LE5GXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIod090LFt7dHlwZTpMXyxhcmdzOlt7aW1wb3J0czpbUE90LGZMLE5GLHdIXSxleHBvcnRzOltQT3Qsdk90LE5GXSxkZWNsYXJhdGlvbnM6W3ZPdF19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZ1byh3T3Qse2RlY2xhcmF0aW9uczpmdW5jdGlvbigpe3JldHVyblt2T3RdfSxpbXBvcnRzOmZ1bmN0aW9uKCl7cmV0dXJuW1BPdCxmTCxORix3SF19LGV4cG9ydHM6ZnVuY3Rpb24oKXtyZXR1cm5bUE90LHZPdCxORl19fSk7Y2xhc3MgU090e2NvbnN0cnVjdG9yKCl7dGhpcy5vblJlZ2V4RmlsdGVyVmFsdWVDaGFuZ2U9bmV3IFN5fX1TT3QuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFNPdCl9LFNPdC7JtWNtcD1zbyh7dHlwZTpTT3Qsc2VsZWN0b3JzOltbIm5wbWktYW5ub3RhdGlvbnMtc2VhcmNoLWNvbXBvbmVudCJdXSxob3N0VmFyczoyLGhvc3RCaW5kaW5nczpmdW5jdGlvbiB0KGUsbil7MiZlJiZjdSgidmFsaWQiLG4uaXNSZWdleEZpbHRlclZhbGlkKX0saW5wdXRzOntyZWdleEZpbHRlclZhbHVlOiJyZWdleEZpbHRlclZhbHVlIixpc1JlZ2V4RmlsdGVyVmFsaWQ6ImlzUmVnZXhGaWx0ZXJWYWxpZCJ9LG91dHB1dHM6e29uUmVnZXhGaWx0ZXJWYWx1ZUNoYW5nZToib25SZWdleEZpbHRlclZhbHVlQ2hhbmdlIn0sZGVjbHM6Myx2YXJzOjIsY29uc3RzOltbInN2Z0ljb24iLCJzZWFyY2hfMjRweCJdLFsiYXV0b2NvbXBsZXRlIiwib2ZmIiwicGxhY2Vob2xkZXIiLCJGaWx0ZXIgQW5ub3RhdGlvbnMiLDMsInZhbHVlIiwiaW5wdXQiXSxbInN2Z0ljb24iLCJlcnJvcl8yNHB4IiwiY2xhc3MiLCJlcnJvci1pY29uIiwibWF0VG9vbHRpcCIsIkludmFsaWQgcmVnZXggZmlsdGVyLiBUaGUgcmVzdWx0IG1heSBiZSBzdGFsZS4iLDQsIm5nSWYiXSxbInN2Z0ljb24iLCJlcnJvcl8yNHB4IiwibWF0VG9vbHRpcCIsIkludmFsaWQgcmVnZXggZmlsdGVyLiBUaGUgcmVzdWx0IG1heSBiZSBzdGFsZS4iLDEsImVycm9yLWljb24iXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKHZmKDAsIm1hdC1pY29uIiwwKSxDZigxLCJpbnB1dCIsMSksUmYoImlucHV0IiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5vblJlZ2V4RmlsdGVyVmFsdWVDaGFuZ2UuZW1pdChlLnRhcmdldC52YWx1ZSl9KSksTWYoKSxIbSgyLGtPdCwxLDAsIm1hdC1pY29uIiwyKSksMiZlJiYoRGMoMSksYmYoInZhbHVlIixuLnJlZ2V4RmlsdGVyVmFsdWUpLERjKDEpLGJmKCJuZ0lmIiwhbi5pc1JlZ2V4RmlsdGVyVmFsaWQpKX0sZGlyZWN0aXZlczpbTXEsUHZdLHN0eWxlczpbJy5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjlweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHh9Lm1hdC1oMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaGVhZGxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDI0cHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTVweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWg2W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1ib2R5LXN0cm9uZ1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYXJkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FyZC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MjRweH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNhbGVuZGFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZGlhbG9nLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVlbSAwO2JvcmRlci10b3A6Ljg0Mzc1ZW0gc29saWQgdHJhbnNwYXJlbnR9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17dG9wOi0wLjg0Mzc1ZW07cGFkZGluZy10b3A6Ljg0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6NzUlO21hcmdpbi10b3A6LjY2NjY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS43OTE2NjY2NjY3ZW0pfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjQzNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDJweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIzZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4yODEyNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LjU0MTY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS42NjY2NjY2NjY3ZW0pfUBtZWRpYSBwcmludHsubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjJlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjFlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyZW0pIHNjYWxlKDAuNzUpfX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouMjVlbSAwIC43NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjA5Mzc1ZW07bWFyZ2luLXRvcDotMC41ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoxZW0gMCAxZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuODQzNzVlbTttYXJnaW4tdG9wOi0wLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMiksIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fWlucHV0Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi0wLjA2MjVlbX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHh9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtfS5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1zdGVwLXN1Yi1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6bm9ybWFsfS5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1zdGVwLWxhYmVsLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10YWItZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MH0ubWF0LXRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTBweDtwYWRkaW5nLXRvcDo2cHg7cGFkZGluZy1ib3R0b206NnB4fS5tYXQtdG9vbHRpcC1oYW5kc2V0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4fS5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtc2ltcGxlLXNuYWNrYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHh9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoxO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjE0cHh9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV06bm90KDplbXB0eSl7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9Lm1hdC1yaXBwbGUubWF0LXJpcHBsZS11bmJvdW5kZWRbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OnZpc2libGV9Lm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJhZGl1czo1MCU7cG9pbnRlci1ldmVudHM6bm9uZTt0cmFuc2l0aW9uOm9wYWNpdHksdHJhbnNmb3JtIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTt0cmFuc2Zvcm06c2NhbGUoMCl9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9LmNkay12aXN1YWxseS1oaWRkZW5bX25nY29udGVudC0lQ09NUCVde2JvcmRlcjowO2NsaXA6cmVjdCgwIDAgMCAwKTtoZWlnaHQ6MXB4O21hcmdpbjotMXB4O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4O3doaXRlLXNwYWNlOm5vd3JhcDtvdXRsaW5lOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0sIC5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cG9pbnRlci1ldmVudHM6bm9uZTt0b3A6MDtsZWZ0OjA7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV06ZW1wdHl7ZGlzcGxheTpub25lfS5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktcGFuZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6YXV0bztib3gtc2l6aW5nOmJvcmRlci1ib3g7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDttYXgtd2lkdGg6MTAwJTttYXgtaGVpZ2h0OjEwMCV9LmNkay1vdmVybGF5LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDt6LWluZGV4OjEwMDA7cG9pbnRlci1ldmVudHM6YXV0bzstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnQ7dHJhbnNpdGlvbjpvcGFjaXR5IDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpO29wYWNpdHk6MH0uY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eToxfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6LjZ9LmNkay1vdmVybGF5LWRhcmstYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMzIpfS5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV0sIC5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWNvbm5lY3RlZC1wb3NpdGlvbi1ib3VuZGluZy1ib3hbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO21pbi13aWR0aDoxcHg7bWluLWhlaWdodDoxcHh9LmNkay1nbG9iYWwtc2Nyb2xsYmxvY2tbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3dpZHRoOjEwMCU7b3ZlcmZsb3cteTpzY3JvbGx9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplW19uZ2NvbnRlbnQtJUNPTVAlXXtyZXNpemU6bm9uZX10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDphdXRvICFpbXBvcnRhbnQ7b3ZlcmZsb3c6aGlkZGVuICFpbXBvcnRhbnR9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZy1maXJlZm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDowICFpbXBvcnRhbnR9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydHt9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmR7fS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGx7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0IDBzIDFtc30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOi13ZWJraXQtYXV0b2ZpbGwpe2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmQgMHMgMW1zfS5tYXQtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LW1kYy1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfVtfbmdob3N0LSVDT01QJV17ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOnJlbGF0aXZlfVtfbmdob3N0LSVDT01QJV06bm90KC52YWxpZCl7Y29sb3I6I2M2MjgyOH1bX25naG9zdC0lQ09NUCVdOm5vdCgudmFsaWQpICAgaW5wdXRbX25nY29udGVudC0lQ09NUCVde2NhcmV0LWNvbG9yOmN1cnJlbnRDb2xvcn1bX25naG9zdC0lQ09NUCVdOm5vdCgudmFsaWQpICAgLmVycm9yLWljb25bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNjNjI4Mjg7cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6MH0nXSxjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoU090LFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6Im5wbWktYW5ub3RhdGlvbnMtc2VhcmNoLWNvbXBvbmVudCIsdGVtcGxhdGVVcmw6Ii4vYW5ub3RhdGlvbnNfc2VhcmNoX2NvbXBvbmVudC5uZy5odG1sIixzdHlsZVVybHM6WyIuL2Fubm90YXRpb25zX3NlYXJjaF9jb21wb25lbnQuY3NzIl0sY2hhbmdlRGV0ZWN0aW9uOmpuLk9uUHVzaH1dfV0sbnVsbCx7cmVnZXhGaWx0ZXJWYWx1ZTpbe3R5cGU6Ul99XSxvblJlZ2V4RmlsdGVyVmFsdWVDaGFuZ2U6W3t0eXBlOkVffV0saXNSZWdleEZpbHRlclZhbGlkOlt7dHlwZTpBXyxhcmdzOlsiY2xhc3MudmFsaWQiXX0se3R5cGU6Ul99XX0pO2NsYXNzIERPdHtjb25zdHJ1Y3Rvcih0KXt0aGlzLnN0b3JlPXQsdGhpcy5hbm5vdGF0aW9uc0ZpbHRlciQ9dGhpcy5zdG9yZS5zZWxlY3QoUXZ0KSx0aGlzLmlzQW5ub3RhdGlvbnNGaWx0ZXJWYWxpZCQ9dGhpcy5hbm5vdGF0aW9uc0ZpbHRlciQucGlwZShWdCgodD0+e3RyeXtyZXR1cm4gbmV3IFJlZ0V4cCh0KSwhMH1jYXRjaCh0KXtyZXR1cm4hMX19KSkpfWZpbHRlckNoYW5nZSh0KXt0aGlzLnN0b3JlLmRpc3BhdGNoKHZ2dCh7cmVnZXg6dH0pKX19ZnVuY3Rpb24gUk90KHQsZSl7aWYoMSZ0KXtjb25zdCB0PXdmKCk7eGYoMCksQ2YoMSwiYnV0dG9uIiw1KSxSZigiY2xpY2siLChmdW5jdGlvbiBlKCl7UGkodCk7Y29uc3Qgbj16ZigpO3JldHVybiBuLm9uRmxhZ0Fubm90YXRpb25zLmVtaXQobi5zZWxlY3RlZEFubm90YXRpb25zKX0pKSx2ZigyLCJtYXQtaWNvbiIsNiksTWYoKSxDZigzLCJidXR0b24iLDcpLFJmKCJjbGljayIsKGZ1bmN0aW9uIGUoKXtQaSh0KTtjb25zdCBuPXpmKCk7cmV0dXJuIG4ub25IaWRlQW5ub3RhdGlvbnMuZW1pdChuLnNlbGVjdGVkQW5ub3RhdGlvbnMpfSkpLHZmKDQsIm1hdC1pY29uIiw4KSxNZigpLE9mKCl9aWYoMiZ0KXtjb25zdCB0PXpmKCk7RGMoMSksYmYoImRpc2FibGVkIiwwPT09dC5zZWxlY3RlZEFubm90YXRpb25zLmxlbmd0aCksRGMoMiksYmYoImRpc2FibGVkIiwwPT09dC5zZWxlY3RlZEFubm90YXRpb25zLmxlbmd0aCl9fWZ1bmN0aW9uIEVPdCh0LGUpe2lmKDEmdCl7Y29uc3QgdD13ZigpO3hmKDApLENmKDEsIm1hdC1zbGlkZS10b2dnbGUiLDkpLFJmKCJjaGFuZ2UiLChmdW5jdGlvbiBlKCl7UGkodCk7cmV0dXJuIHpmKCkub25Ub2dnbGVTaG93Q291bnRzLmVtaXQoKX0pKSxQdSgyLCIgU2FtcGxlIENvdW50ICIpLE1mKCksQ2YoMywibWF0LXNsaWRlLXRvZ2dsZSIsMTApLFJmKCJjaGFuZ2UiLChmdW5jdGlvbiBlKCl7UGkodCk7cmV0dXJuIHpmKCkub25Ub2dnbGVTaG93SGlkZGVuLmVtaXQoKX0pKSxQdSg0LCIgU2hvdyBIaWRkZW4gIiksTWYoKSx2Zig1LCJucG1pLWFubm90YXRpb25zLXNlYXJjaCIpLE9mKCl9aWYoMiZ0KXtjb25zdCB0PXpmKCk7RGMoMSksYmYoImNoZWNrZWQiLHQuc2hvd0NvdW50cyksRGMoMiksYmYoImNoZWNrZWQiLHQuc2hvd0hpZGRlbil9fURPdC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8RE90KShnZihpUykpfSxET3QuybVjbXA9c28oe3R5cGU6RE90LHNlbGVjdG9yczpbWyJucG1pLWFubm90YXRpb25zLXNlYXJjaCJdXSxkZWNsczozLHZhcnM6Nixjb25zdHM6W1szLCJyZWdleEZpbHRlclZhbHVlIiwiaXNSZWdleEZpbHRlclZhbGlkIiwib25SZWdleEZpbHRlclZhbHVlQ2hhbmdlIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihDZigwLCJucG1pLWFubm90YXRpb25zLXNlYXJjaC1jb21wb25lbnQiLDApLFJmKCJvblJlZ2V4RmlsdGVyVmFsdWVDaGFuZ2UiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLmZpbHRlckNoYW5nZShlKX0pKSxfeSgxLCJhc3luYyIpLF95KDIsImFzeW5jIiksTWYoKSksMiZlJiZiZigicmVnZXhGaWx0ZXJWYWx1ZSIsQ3koMSwyLG4uYW5ub3RhdGlvbnNGaWx0ZXIkKSkoImlzUmVnZXhGaWx0ZXJWYWxpZCIsQ3koMiw0LG4uaXNBbm5vdGF0aW9uc0ZpbHRlclZhbGlkJCkpfSxkaXJlY3RpdmVzOltTT3RdLHBpcGVzOltWdl0sZW5jYXBzdWxhdGlvbjoyLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihET3QsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoibnBtaS1hbm5vdGF0aW9ucy1zZWFyY2giLHRlbXBsYXRlOidcbiAgICA8bnBtaS1hbm5vdGF0aW9ucy1zZWFyY2gtY29tcG9uZW50XG4gICAgICBbcmVnZXhGaWx0ZXJWYWx1ZV09ImFubm90YXRpb25zRmlsdGVyJCB8IGFzeW5jIlxuICAgICAgW2lzUmVnZXhGaWx0ZXJWYWxpZF09ImlzQW5ub3RhdGlvbnNGaWx0ZXJWYWxpZCQgfCBhc3luYyJcbiAgICAgIChvblJlZ2V4RmlsdGVyVmFsdWVDaGFuZ2UpPSJmaWx0ZXJDaGFuZ2UoJGV2ZW50KSJcbiAgICA+PC9ucG1pLWFubm90YXRpb25zLXNlYXJjaC1jb21wb25lbnQ+XG4gICcsY2hhbmdlRGV0ZWN0aW9uOmpuLk9uUHVzaH1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmlTfV19KSxudWxsKTtjbGFzcyBBT3R7Y29uc3RydWN0b3IoKXt0aGlzLm9uRmxhZ0Fubm90YXRpb25zPW5ldyBTeSx0aGlzLm9uSGlkZUFubm90YXRpb25zPW5ldyBTeSx0aGlzLm9uVG9nZ2xlRXhwYW5kZWQ9bmV3IFN5LHRoaXMub25Ub2dnbGVTaG93Q291bnRzPW5ldyBTeSx0aGlzLm9uVG9nZ2xlU2hvd0hpZGRlbj1uZXcgU3l9fUFPdC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8QU90KX0sQU90Lsm1Y21wPXNvKHt0eXBlOkFPdCxzZWxlY3RvcnM6W1sibnBtaS1hbm5vdGF0aW9ucy1saXN0LXRvb2xiYXItY29tcG9uZW50Il1dLGlucHV0czp7bnVtQW5ub3RhdGlvbnM6Im51bUFubm90YXRpb25zIixleHBhbmRlZDoiZXhwYW5kZWQiLHNlbGVjdGVkQW5ub3RhdGlvbnM6InNlbGVjdGVkQW5ub3RhdGlvbnMiLGFubm90YXRpb25zRXhwYW5kZWQ6ImFubm90YXRpb25zRXhwYW5kZWQiLHNob3dDb3VudHM6InNob3dDb3VudHMiLHNob3dIaWRkZW46InNob3dIaWRkZW4ifSxvdXRwdXRzOntvbkZsYWdBbm5vdGF0aW9uczoib25GbGFnQW5ub3RhdGlvbnMiLG9uSGlkZUFubm90YXRpb25zOiJvbkhpZGVBbm5vdGF0aW9ucyIsb25Ub2dnbGVFeHBhbmRlZDoib25Ub2dnbGVFeHBhbmRlZCIsb25Ub2dnbGVTaG93Q291bnRzOiJvblRvZ2dsZVNob3dDb3VudHMiLG9uVG9nZ2xlU2hvd0hpZGRlbjoib25Ub2dnbGVTaG93SGlkZGVuIn0sZGVjbHM6Nyx2YXJzOjQsY29uc3RzOmZ1bmN0aW9uKCl7bGV0IHQsZSxuO2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgbmdJMThuQ2xvc3VyZU1vZGUmJm5nSTE4bkNsb3N1cmVNb2RlKXt0PWdvb2cuZ2V0TXNnKCJIaWRlcy9TaG93cyB0aGUgQW5ub3RhdGlvbnMgTGlzdCIpfWVsc2UgdD0kbG9jYWxpemVgOkxhYmVsIGZvciBhIGJ1dHRvbiB0aGF0IGhpZGVzL3Nob3dzIHRoZSBhbm5vdGF0aW9ucyBsaXN0LuKQn2IzNjAzYmEzM2U1MzA4ZGQ4YzVlODA1ZTUwOGIyZjcyMzNkZjg5ZDTikJ83MzM2Mzc0NDEzMDU2MzQyNDkyOkhpZGVzL1Nob3dzIHRoZSBBbm5vdGF0aW9ucyBMaXN0YDtpZigidW5kZWZpbmVkIiE9dHlwZW9mIG5nSTE4bkNsb3N1cmVNb2RlJiZuZ0kxOG5DbG9zdXJlTW9kZSl7ZT1nb29nLmdldE1zZygiRmxhZyBTZWxlY3RlZCBBbm5vdGF0aW9ucyIpfWVsc2UgZT0kbG9jYWxpemVgOkxhYmVsIGZvciBhIGJ1dHRvbiB0aGF0IGZsYWdzIHNlbGVjdGVkIGFubm90YXRpb25zLuKQnzU2OTJhZDg4MzEwMzhhOTBjNTg2M2ExZTlhZGY5NzQ4Y2FjM2NhZDjikJ8yMjQ0MDk5ODkxMzEzMzM2NTk1OkZsYWcgU2VsZWN0ZWQgQW5ub3RhdGlvbnNgO2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgbmdJMThuQ2xvc3VyZU1vZGUmJm5nSTE4bkNsb3N1cmVNb2RlKXtuPWdvb2cuZ2V0TXNnKCJIaWRlIFNlbGVjdGVkIEFubm90YXRpb25zIil9ZWxzZSBuPSRsb2NhbGl6ZWA6TGFiZWwgZm9yIGEgYnV0dG9uIHRoYXQgaGlkZXMgc2VsZWN0ZWQgYW5ub3RhdGlvbnMu4pCfMDM0MmNkYjMzNThmYThlM2ZhMjcyMjBhODI1OGE3Mjg3NDMwYjcwZuKQnzU0NjI4MzIzOTEwOTIwODc0ODU6SGlkZSBTZWxlY3RlZCBBbm5vdGF0aW9uc2A7cmV0dXJuW1sxLCJhbm5vdGF0aW9ucy10aXRsZS1jb250YWluZXIiXSxbMSwiYW5ub3RhdGlvbnMtdGl0bGUiXSxbNCwibmdJZiJdLFsibWF0LWljb24tYnV0dG9uIiwiIiwiYXJpYS1sYWJlbCIsdCwxLCJleHBhbmQtYnV0dG9uIiwzLCJjbGljayJdLFszLCJzdmdJY29uIl0sWyJtYXQtaWNvbi1idXR0b24iLCIiLCJhcmlhLWxhYmVsIixlLCJ0aXRsZSIsIkZsYWdnaW5nIGFubm90YXRpb25zIGFkZHMgdGhlbSB0byB5b3VyIGludmVzdGlnYXRpb24gcmVzdWx0cywgd2hpY2ggY2FuIGxhdGVyIGJlIGV4cG9ydGVkLiIsMywiZGlzYWJsZWQiLCJjbGljayJdLFsic3ZnSWNvbiIsImZsYWdfMjRweCJdLFsibWF0LWljb24tYnV0dG9uIiwiIiwiYXJpYS1sYWJlbCIsbiwidGl0bGUiLCJSZW1vdmluZyBub24tY3JpdGljYWwgYW5ub3RhdGlvbnMgdW5jbHV0dGVycyB0aGUgdmlldy4gUmVtb3ZlZCBhbm5vdGF0aW9ucyBhcmUgcmVtb3ZlZCBmcm9tIGFsbCB2aXN1YWxpemF0aW9ucy4iLDMsImRpc2FibGVkIiwiY2xpY2siXSxbInN2Z0ljb24iLCJ2aXNpYmlsaXR5X29mZl8yNHB4Il0sWyJ0aXRsZSIsIkhpZGVzIGFuZCBzaG93cyB0aGUgc2FtcGxlIGNvdW50IHdoZXJlIGFwcGxpY2FibGUgKGhvdyBtYW55IHNhbXBsZXMgYmVsb25nIHRvIGEgY2F0ZWdvcnkpLiIsMSwic2hvdy10b2dnbGUiLDMsImNoZWNrZWQiLCJjaGFuZ2UiXSxbInRpdGxlIiwiSGlkZXMgYW5kIHNob3dzIGhpZGRlbiBhbm5vdGF0aW9ucyBpbiBhbGwgdmlzdWFsaXphdGlvbnMuIiwxLCJzaG93LXRvZ2dsZSIsMywiY2hlY2tlZCIsImNoYW5nZSJdXX0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKENmKDAsImRpdiIsMCksQ2YoMSwiaDMiLDEpLFB1KDIpLE1mKCksSG0oMyxST3QsNSwyLCJuZy1jb250YWluZXIiLDIpLE1mKCksSG0oNCxFT3QsNiwyLCJuZy1jb250YWluZXIiLDIpLENmKDUsImJ1dHRvbiIsMyksUmYoImNsaWNrIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLm9uVG9nZ2xlRXhwYW5kZWQuZW1pdCgpfSkpLHZmKDYsIm1hdC1pY29uIiw0KSxNZigpKSwyJmUmJihEYygyKSxrdSgiQW5ub3RhdGlvbnMgKCIsbi5udW1Bbm5vdGF0aW9ucywiKSIpLERjKDEpLGJmKCJuZ0lmIixuLmV4cGFuZGVkKSxEYygxKSxiZigibmdJZiIsbi5leHBhbmRlZCksRGMoMiksYmYoInN2Z0ljb24iLG4uZXhwYW5kZWQ/ImV4cGFuZF9sZXNzXzI0cHgiOiJleHBhbmRfbW9yZV8yNHB4IikpfSxkaXJlY3RpdmVzOltQdixOTCxNcSx2T3QsRE90XSxzdHlsZXM6WycubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTJweDtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1iYWRnZS1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo5cHh9Lm1hdC1iYWRnZS1sYXJnZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4fS5tYXQtaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWhlYWRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAyNHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE2cHgvMjhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE1cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjgzKS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1oNltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC42NykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtYm9keS1zdHJvbmdbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MCAwIDEycHh9Lm1hdC1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FwdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTJweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6MzAwIDExMnB4LzExMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wNWVtO21hcmdpbjowIDAgNTZweH0ubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNTZweC81NnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMmVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNDVweC80OHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMDVlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDM0cHgvNDBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgNjRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FyZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjBweH0ubWF0LWNhcmQtc3VidGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcmQtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2hlY2tib3gtbGF5b3V0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC10cmFpbGluZy1pY29uLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmUubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxOHB4fS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jYWxlbmRhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FsZW5kYXItYm9keVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEzcHh9Lm1hdC1jYWxlbmRhci1ib2R5LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgdGhbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWRpYWxvZy10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMTI1O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTUwJTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjVlbTt3aWR0aDoxLjVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW07bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi41ZW0gMDtib3JkZXItdG9wOi44NDM3NWVtIHNvbGlkIHRyYW5zcGFyZW50fS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3RvcDotMC44NDM3NWVtO3BhZGRpbmctdG9wOi44NDM3NWVtfS5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjc1JTttYXJnaW4tdG9wOi42NjY2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNzkxNjY2NjY2N2VtKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi40Mzc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAycHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyM2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMjgxMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi41NDE2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNjY2NjY2NjY2N2VtKX1AbWVkaWEgcHJpbnR7Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIyZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIxZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMmVtKSBzY2FsZSgwLjc1KX19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjI1ZW0gMCAuNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4wOTM3NWVtO21hcmdpbi10b3A6LTAuNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MWVtIDAgMWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjg0Mzc1ZW07bWFyZ2luLXRvcDotMC4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH1pbnB1dC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDotMC4wNjI1ZW19Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1wYWdlLXNpemVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4fS5tYXQtcmFkaW8tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3RbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbX0ubWF0LXNsaWRlLXRvZ2dsZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXN0ZXBwZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc3RlcC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtc3RlcC1zdWItbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0Om5vcm1hbH0ubWF0LXN0ZXAtbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtc3RlcC1sYWJlbC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdGFiLWdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjB9Lm1hdC10b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEwcHg7cGFkZGluZy10b3A6NnB4O3BhZGRpbmctYm90dG9tOjZweH0ubWF0LXRvb2x0aXAtaGFuZHNldFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7cGFkZGluZy10b3A6OHB4O3BhZGRpbmctYm90dG9tOjhweH0ubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTZweH0ubWF0LW9wdGdyb3VwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LXNpbXBsZS1zbmFja2Jhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4fS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbltfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MTtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRyZWVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbmVzdGVkLXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtc2l6ZToxNHB4fS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdOm5vdCg6ZW1wdHkpe3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApfS5tYXQtcmlwcGxlLm1hdC1yaXBwbGUtdW5ib3VuZGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzp2aXNpYmxlfS5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO2JvcmRlci1yYWRpdXM6NTAlO3BvaW50ZXItZXZlbnRzOm5vbmU7dHJhbnNpdGlvbjpvcGFjaXR5LHRyYW5zZm9ybSAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7dHJhbnNmb3JtOnNjYWxlKDApfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpub25lfS5jZGstdmlzdWFsbHktaGlkZGVuW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6MDtjbGlwOnJlY3QoMCAwIDAgMCk7aGVpZ2h0OjFweDttYXJnaW46LTFweDtvdmVyZmxvdzpoaWRkZW47cGFkZGluZzowO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjFweDt3aGl0ZS1zcGFjZTpub3dyYXA7b3V0bGluZTowOy13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BvaW50ZXItZXZlbnRzOm5vbmU7dG9wOjA7bGVmdDowO2hlaWdodDoxMDAlO3dpZHRoOjEwMCV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdOmVtcHR5e2Rpc3BsYXk6bm9uZX0uY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LXBhbmVbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3BvaW50ZXItZXZlbnRzOmF1dG87Ym94LXNpemluZzpib3JkZXItYm94O3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7bWF4LXdpZHRoOjEwMCU7bWF4LWhlaWdodDoxMDAlfS5jZGstb3ZlcmxheS1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7bGVmdDowO3JpZ2h0OjA7ei1pbmRleDoxMDAwO3BvaW50ZXItZXZlbnRzOmF1dG87LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50O3RyYW5zaXRpb246b3BhY2l0eSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKTtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5Oi42fS5jZGstb3ZlcmxheS1kYXJrLWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjMyKX0uY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTowfS5jZGstb3ZlcmxheS1jb25uZWN0ZWQtcG9zaXRpb24tYm91bmRpbmctYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjttaW4td2lkdGg6MXB4O21pbi1oZWlnaHQ6MXB4fS5jZGstZ2xvYmFsLXNjcm9sbGJsb2NrW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt3aWR0aDoxMDAlO292ZXJmbG93LXk6c2Nyb2xsfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZVtfbmdjb250ZW50LSVDT01QJV17cmVzaXplOm5vbmV9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZ1tfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6YXV0byAhaW1wb3J0YW50O292ZXJmbG93OmhpZGRlbiAhaW1wb3J0YW50fXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmctZmlyZWZveFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6MCAhaW1wb3J0YW50fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnR7fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5ke30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxse2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydCAwcyAxbXN9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06bm90KDotd2Via2l0LWF1dG9maWxsKXthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5kIDBzIDFtc30ubWF0LWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1tZGMtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX1bX25naG9zdC0lQ09NUCVde2FsaWduLWl0ZW1zOmNlbnRlcjtib3gtc2l6aW5nOmJvcmRlci1ib3g7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOnJvdztwYWRkaW5nOjAgMTZweDt3aWR0aDoxMDAlfS5hbm5vdGF0aW9ucy10aXRsZVtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTppbmxpbmU7Zm9udC1zaXplOi45ZW07Zm9udC13ZWlnaHQ6NTAwO3BhZGRpbmctcmlnaHQ6MTBweH0uYW5ub3RhdGlvbnMtdGl0bGUtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXthbGlnbi1pdGVtczpjZW50ZXI7ZGlzcGxheTpmbGV4O2ZsZXgtd3JhcDpub3dyYXA7ZmxleDoxIDE7aGVpZ2h0OjQycHh9LnNob3ctdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6LjllbTttYXJnaW4tcmlnaHQ6LjhlbX0nXSxjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoQU90LFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6Im5wbWktYW5ub3RhdGlvbnMtbGlzdC10b29sYmFyLWNvbXBvbmVudCIsdGVtcGxhdGVVcmw6Ii4vYW5ub3RhdGlvbnNfbGlzdF90b29sYmFyX2NvbXBvbmVudC5uZy5odG1sIixzdHlsZVVybHM6WyIuL2Fubm90YXRpb25zX2xpc3RfdG9vbGJhcl9jb21wb25lbnQuY3NzIl0sY2hhbmdlRGV0ZWN0aW9uOmpuLk9uUHVzaH1dfV0sbnVsbCx7bnVtQW5ub3RhdGlvbnM6W3t0eXBlOlJffV0sZXhwYW5kZWQ6W3t0eXBlOlJffV0sc2VsZWN0ZWRBbm5vdGF0aW9uczpbe3R5cGU6Ul99XSxhbm5vdGF0aW9uc0V4cGFuZGVkOlt7dHlwZTpSX31dLHNob3dDb3VudHM6W3t0eXBlOlJffV0sc2hvd0hpZGRlbjpbe3R5cGU6Ul99XSxvbkZsYWdBbm5vdGF0aW9uczpbe3R5cGU6RV99XSxvbkhpZGVBbm5vdGF0aW9uczpbe3R5cGU6RV99XSxvblRvZ2dsZUV4cGFuZGVkOlt7dHlwZTpFX31dLG9uVG9nZ2xlU2hvd0NvdW50czpbe3R5cGU6RV99XSxvblRvZ2dsZVNob3dIaWRkZW46W3t0eXBlOkVffV19KTtjbGFzcyBUT3R7Y29uc3RydWN0b3IodCl7dGhpcy5zdG9yZT10LHRoaXMuc2VsZWN0ZWRBbm5vdGF0aW9ucyQ9dGhpcy5zdG9yZS5zZWxlY3QoWHZ0KSx0aGlzLmFubm90YXRpb25zRXhwYW5kZWQkPXRoaXMuc3RvcmUuc2VsZWN0KGl4dCksdGhpcy5zaG93Q291bnRzJD10aGlzLnN0b3JlLnNlbGVjdChyeHQpLHRoaXMuc2hvd0hpZGRlbiQ9dGhpcy5zdG9yZS5zZWxlY3Qoc3h0KSx0aGlzLmFubm90YXRpb25zRmlsdGVyJD10aGlzLnN0b3JlLnNlbGVjdChRdnQpLHRoaXMuaXNBbm5vdGF0aW9uc0ZpbHRlclZhbGlkJD10aGlzLmFubm90YXRpb25zRmlsdGVyJC5waXBlKFZ0KCh0PT57dHJ5e3JldHVybiBCb29sZWFuKG5ldyBSZWdFeHAodCkpfWNhdGNoKHQpe3JldHVybiExfX0pKSl9ZmlsdGVyQ2hhbmdlKHQpe3RoaXMuc3RvcmUuZGlzcGF0Y2godnZ0KHtyZWdleDp0fSkpfWZsYWdBbm5vdGF0aW9ucyh0KXt0aGlzLnN0b3JlLmRpc3BhdGNoKEN2dCh7YW5ub3RhdGlvbnM6dH0pKX1oaWRlQW5ub3RhdGlvbnModCl7dGhpcy5zdG9yZS5kaXNwYXRjaChNdnQoe2Fubm90YXRpb25zOnR9KSl9dG9nZ2xlRXhwYW5kZWQoKXt0aGlzLnN0b3JlLmRpc3BhdGNoKFJ2dCgpKX10b2dnbGVTaG93Q291bnRzKCl7dGhpcy5zdG9yZS5kaXNwYXRjaChBdnQoKSl9dG9nZ2xlU2hvd0hpZGRlbigpe3RoaXMuc3RvcmUuZGlzcGF0Y2goVHZ0KCkpfX1UT3QuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFRPdCkoZ2YoaVMpKX0sVE90Lsm1Y21wPXNvKHt0eXBlOlRPdCxzZWxlY3RvcnM6W1sibnBtaS1hbm5vdGF0aW9ucy1saXN0LXRvb2xiYXIiXV0saW5wdXRzOntudW1Bbm5vdGF0aW9uczoibnVtQW5ub3RhdGlvbnMiLGV4cGFuZGVkOiJleHBhbmRlZCJ9LGRlY2xzOjUsdmFyczoxNCxjb25zdHM6W1szLCJudW1Bbm5vdGF0aW9ucyIsImV4cGFuZGVkIiwic2VsZWN0ZWRBbm5vdGF0aW9ucyIsImFubm90YXRpb25zRXhwYW5kZWQiLCJzaG93Q291bnRzIiwic2hvd0hpZGRlbiIsIm9uRmxhZ0Fubm90YXRpb25zIiwib25IaWRlQW5ub3RhdGlvbnMiLCJvblRvZ2dsZUV4cGFuZGVkIiwib25Ub2dnbGVTaG93Q291bnRzIiwib25Ub2dnbGVTaG93SGlkZGVuIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihDZigwLCJucG1pLWFubm90YXRpb25zLWxpc3QtdG9vbGJhci1jb21wb25lbnQiLDApLFJmKCJvbkZsYWdBbm5vdGF0aW9ucyIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4uZmxhZ0Fubm90YXRpb25zKGUpfSkpKCJvbkhpZGVBbm5vdGF0aW9ucyIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4uaGlkZUFubm90YXRpb25zKGUpfSkpKCJvblRvZ2dsZUV4cGFuZGVkIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLnRvZ2dsZUV4cGFuZGVkKCl9KSkoIm9uVG9nZ2xlU2hvd0NvdW50cyIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi50b2dnbGVTaG93Q291bnRzKCl9KSkoIm9uVG9nZ2xlU2hvd0hpZGRlbiIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi50b2dnbGVTaG93SGlkZGVuKCl9KSksX3koMSwiYXN5bmMiKSxfeSgyLCJhc3luYyIpLF95KDMsImFzeW5jIiksX3koNCwiYXN5bmMiKSxNZigpKSwyJmUmJmJmKCJudW1Bbm5vdGF0aW9ucyIsbi5udW1Bbm5vdGF0aW9ucykoImV4cGFuZGVkIixuLmV4cGFuZGVkKSgic2VsZWN0ZWRBbm5vdGF0aW9ucyIsQ3koMSw2LG4uc2VsZWN0ZWRBbm5vdGF0aW9ucyQpKSgiYW5ub3RhdGlvbnNFeHBhbmRlZCIsQ3koMiw4LG4uYW5ub3RhdGlvbnNFeHBhbmRlZCQpKSgic2hvd0NvdW50cyIsQ3koMywxMCxuLnNob3dDb3VudHMkKSkoInNob3dIaWRkZW4iLEN5KDQsMTIsbi5zaG93SGlkZGVuJCkpfSxkaXJlY3RpdmVzOltBT3RdLHBpcGVzOltWdl0sZW5jYXBzdWxhdGlvbjoyLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihUT3QsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoibnBtaS1hbm5vdGF0aW9ucy1saXN0LXRvb2xiYXIiLHRlbXBsYXRlOidcbiAgICA8bnBtaS1hbm5vdGF0aW9ucy1saXN0LXRvb2xiYXItY29tcG9uZW50XG4gICAgICBbbnVtQW5ub3RhdGlvbnNdPSJudW1Bbm5vdGF0aW9ucyJcbiAgICAgIFtleHBhbmRlZF09ImV4cGFuZGVkIlxuICAgICAgW3NlbGVjdGVkQW5ub3RhdGlvbnNdPSJzZWxlY3RlZEFubm90YXRpb25zJCB8IGFzeW5jIlxuICAgICAgW2Fubm90YXRpb25zRXhwYW5kZWRdPSJhbm5vdGF0aW9uc0V4cGFuZGVkJCB8IGFzeW5jIlxuICAgICAgW3Nob3dDb3VudHNdPSJzaG93Q291bnRzJCB8IGFzeW5jIlxuICAgICAgW3Nob3dIaWRkZW5dPSJzaG93SGlkZGVuJCB8IGFzeW5jIlxuICAgICAgKG9uRmxhZ0Fubm90YXRpb25zKT0iZmxhZ0Fubm90YXRpb25zKCRldmVudCkiXG4gICAgICAob25IaWRlQW5ub3RhdGlvbnMpPSJoaWRlQW5ub3RhdGlvbnMoJGV2ZW50KSJcbiAgICAgIChvblRvZ2dsZUV4cGFuZGVkKT0idG9nZ2xlRXhwYW5kZWQoKSJcbiAgICAgIChvblRvZ2dsZVNob3dDb3VudHMpPSJ0b2dnbGVTaG93Q291bnRzKCkiXG4gICAgICAob25Ub2dnbGVTaG93SGlkZGVuKT0idG9nZ2xlU2hvd0hpZGRlbigpIlxuICAgID48L25wbWktYW5ub3RhdGlvbnMtbGlzdC10b29sYmFyLWNvbXBvbmVudD5cbiAgJyxjaGFuZ2VEZXRlY3Rpb246am4uT25QdXNofV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6aVN9XX0pLHtudW1Bbm5vdGF0aW9uczpbe3R5cGU6Ul99XSxleHBhbmRlZDpbe3R5cGU6Ul99XX0pO2NvbnN0IE5PdD1bImdseXBoIl07Y2xhc3Mgek90e25nQWZ0ZXJWaWV3SW5pdCgpe3RoaXMuc3ZnPW44KHRoaXMuZ2x5cGhTVkcubmF0aXZlRWxlbWVudCksdGhpcy5tYWluQ29udGFpbmVyPXRoaXMuc3ZnLmFwcGVuZCgiZyIpLHRoaXMuZHJhdygpfWRyYXcoKXsiY2lyY2xlIj09dGhpcy5zaGFwZT90aGlzLm1haW5Db250YWluZXIuYXBwZW5kKCJjaXJjbGUiKS5hdHRyKCJmaWxsIix0aGlzLmNvbG9yKS5hdHRyKCJzdHJva2UiLCJibGFjayIpLmF0dHIoImN4Iiw1KS5hdHRyKCJjeSIsNSkuYXR0cigiciIsNSk6ImJhciI9PXRoaXMuc2hhcGU/dGhpcy5tYWluQ29udGFpbmVyLmFwcGVuZCgicmVjdCIpLmF0dHIoImZpbGwiLHRoaXMuY29sb3IpLmF0dHIoIngiLDApLmF0dHIoInkiLDApLmF0dHIoIndpZHRoIiwxMCkuYXR0cigiaGVpZ2h0IiwxMCk6InJ1bkluZGljYXRvciI9PXRoaXMuc2hhcGUmJnRoaXMubWFpbkNvbnRhaW5lci5hcHBlbmQoImciKS5hcHBlbmQoInBhdGgiKS5hdHRyKCJmaWxsIix0aGlzLmNvbG9yKS5hdHRyKCJzdHJva2UiLCJibGFjayIpLmF0dHIoImQiLCJNIDIgMCBMIDEwIDAgTCA3IDUgTCAxMCAxMCBMIDIgMTAgWiIpfX16T3QuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHpPdCl9LHpPdC7JtWNtcD1zbyh7dHlwZTp6T3Qsc2VsZWN0b3JzOltbIm5wbWktbGVnZW5kLWVsZW1lbnQiXV0sdmlld1F1ZXJ5OmZ1bmN0aW9uIHQoZSxuKXtpZigxJmUmJlZ5KE5PdCw3LEtoKSwyJmUpe2xldCB0O0J5KHQ9VXkoKSkmJihuLmdseXBoU1ZHPXQuZmlyc3QpfX0saW5wdXRzOnt0ZXh0OiJ0ZXh0Iixjb2xvcjoiY29sb3IiLHNoYXBlOiJzaGFwZSJ9LGRlY2xzOjQsdmFyczoxLGNvbnN0czpbWzEsImdseXBoIl0sWyJnbHlwaCIsIiJdLFsxLCJsZWdlbmQtZWxlbWVudC10aXRsZSJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYob2EoKSx2ZigwLCJzdmciLDAsMSksYWEoKSxDZigyLCJkaXYiLDIpLFB1KDMpLE1mKCkpLDImZSYmKERjKDMpLHd1KG4udGV4dCkpfSxzdHlsZXM6WyJbX25naG9zdC0lQ09NUCVde2FsaWduLWl0ZW1zOmNlbnRlcjtkaXNwbGF5OmZsZXg7cGFkZGluZy1yaWdodDoxMHB4fS5sZWdlbmQtZWxlbWVudC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOi44ZW07cGFkZGluZy1sZWZ0OjVweH0uZ2x5cGhbX25nY29udGVudC0lQ09NUCVde3dpZHRoOjEwcHg7aGVpZ2h0OjEwcHh9Il0sY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKHpPdCxbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJucG1pLWxlZ2VuZC1lbGVtZW50Iix0ZW1wbGF0ZVVybDoiLi9sZWdlbmRfZWxlbWVudF9jb21wb25lbnQubmcuaHRtbCIsc3R5bGVVcmxzOlsiLi9sZWdlbmRfZWxlbWVudF9jb21wb25lbnQuY3NzIl0sY2hhbmdlRGV0ZWN0aW9uOmpuLk9uUHVzaH1dfV0sbnVsbCx7dGV4dDpbe3R5cGU6Ul99XSxjb2xvcjpbe3R5cGU6Ul99XSxzaGFwZTpbe3R5cGU6Ul99XSxnbHlwaFNWRzpbe3R5cGU6YXIsYXJnczpbImdseXBoIix7c3RhdGljOiEwLHJlYWQ6S2h9XX1dfSk7Y2xhc3MgSU90e31mdW5jdGlvbiBIT3QodCxlKXtpZigxJnQmJnZmKDAsIm1hdC1pY29uIiw4KSwyJnQpe2NvbnN0IHQ9emYoMik7YmYoInN2Z0ljb24iLHQuc29ydC5vcmRlcj09PXQuU29ydE9yZGVyLkRFU0NFTkRJTkc/ImFycm93X2Rvd253YXJkXzI0cHgiOiJhcnJvd191cHdhcmRfMjRweCIpKCJuZ0NsYXNzIix0LnNvcnQub3JkZXI9PT10LlNvcnRPcmRlci5ERVNDRU5ESU5HPyJkb3duLWljb24iOiJ1cC1pY29uIil9fWZ1bmN0aW9uIEZPdCh0LGUpe2lmKDEmdCl7Y29uc3QgdD13ZigpO0NmKDAsImRpdiIsNCksQ2YoMSwiZGl2Iiw1KSxDZigyLCJkaXYiLDYpLFJmKCJjbGljayIsKGZ1bmN0aW9uIGUoKXtjb25zdCBuPVBpKHQpLiRpbXBsaWNpdDtyZXR1cm4gemYoKS5vbkNoYW5nZVNvcnQuZW1pdChuKX0pKSxQdSgzKSxIbSg0LEhPdCwxLDIsIm1hdC1pY29uIiw3KSxNZigpLE1mKCksTWYoKX1pZigyJnQpe2NvbnN0IHQ9ZS4kaW1wbGljaXQsbj16ZigpO0RjKDMpLGt1KCIgIixuLnN0cmlwTWV0cmljKHQpLCIgIiksRGMoMSksYmYoIm5nSWYiLHQ9PT1uLnNvcnQubWV0cmljKX19SU90Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxJT3QpfSxJT3QuybVjbXA9c28oe3R5cGU6SU90LHNlbGVjdG9yczpbWyJucG1pLWFubm90YXRpb25zLWxpc3QtbGVnZW5kIl1dLGRlY2xzOjQsdmFyczowLGNvbnN0czpbWyJ0ZXh0IiwicnVuIGluZGljYXRvciIsImNvbG9yIiwicmdiKDAsMCwwKSIsInNoYXBlIiwicnVuSW5kaWNhdG9yIl0sWyJ0ZXh0IiwicG9zaXRpdmUgY29ycmVsYXRpb24iLCJjb2xvciIsInJnYigxMDksIDE3NCwgMjEzKSIsInNoYXBlIiwiYmFyIl0sWyJ0ZXh0IiwibmVnYXRpdmUgY29ycmVsYXRpb24iLCJjb2xvciIsInJnYigyNDksIDEwNSwgNzYpIiwic2hhcGUiLCJiYXIiXSxbInRleHQiLCJzYW1wbGUgY291bnQiLCJjb2xvciIsInJnYigxNTEsIDE1MSwgMTUxKSIsInNoYXBlIiwiY2lyY2xlIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJih2ZigwLCJucG1pLWxlZ2VuZC1lbGVtZW50IiwwKSx2ZigxLCJucG1pLWxlZ2VuZC1lbGVtZW50IiwxKSx2ZigyLCJucG1pLWxlZ2VuZC1lbGVtZW50IiwyKSx2ZigzLCJucG1pLWxlZ2VuZC1lbGVtZW50IiwzKSl9LGRpcmVjdGl2ZXM6W3pPdF0sc3R5bGVzOlsiW19uZ2hvc3QtJUNPTVAlXXtkaXNwbGF5OmZsZXg7cGFkZGluZzowIDE2cHh9Il19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKElPdCxbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJucG1pLWFubm90YXRpb25zLWxpc3QtbGVnZW5kIix0ZW1wbGF0ZVVybDoiLi9sZWdlbmRfY29tcG9uZW50Lm5nLmh0bWwiLHN0eWxlVXJsczpbIi4vbGVnZW5kX2NvbXBvbmVudC5jc3MiXX1dfV0sbnVsbCxudWxsKTtjbGFzcyBMT3R7Y29uc3RydWN0b3IoKXt0aGlzLm9uQ2hhbmdlU29ydD1uZXcgU3ksdGhpcy5vbkFsbEFubm90YXRpb25zVG9nZ2xlZD1uZXcgU3ksdGhpcy5Tb3J0T3JkZXI9VXZ0fXN0cmlwTWV0cmljKHQpe3JldHVybiB6X3QodCl9fUxPdC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8TE90KX0sTE90Lsm1Y21wPXNvKHt0eXBlOkxPdCxzZWxlY3RvcnM6W1sibnBtaS1hbm5vdGF0aW9ucy1saXN0LWhlYWRlci1jb21wb25lbnQiXV0saW5wdXRzOntudW1Bbm5vdGF0aW9uczoibnVtQW5ub3RhdGlvbnMiLHNlbGVjdGVkQW5ub3RhdGlvbnM6InNlbGVjdGVkQW5ub3RhdGlvbnMiLGFjdGl2ZU1ldHJpY3M6ImFjdGl2ZU1ldHJpY3MiLHNvcnQ6InNvcnQifSxvdXRwdXRzOntvbkNoYW5nZVNvcnQ6Im9uQ2hhbmdlU29ydCIsb25BbGxBbm5vdGF0aW9uc1RvZ2dsZWQ6Im9uQWxsQW5ub3RhdGlvbnNUb2dnbGVkIn0sZGVjbHM6NCx2YXJzOjIsY29uc3RzOltbMSwidG9nZ2xlLWFsbC1jb250YWluZXIiXSxbMywiY2hlY2tlZCIsImNoYW5nZSJdLFsxLCJhbm5vdGF0aW9ucy1oZWFkZXItY29udGFpbmVycyJdLFsiY2xhc3MiLCJoZWFkZXItY29sdW1uIiw0LCJuZ0ZvciIsIm5nRm9yT2YiXSxbMSwiaGVhZGVyLWNvbHVtbiJdLFsxLCJoZWFkZXItY29udGFpbmVyIl0sWyJ0YWJpbmRleCIsIjAiLCJyb2xlIiwiYnV0dG9uIiwidGl0bGUiLCJDaGFuZ2UgdGhlIHNvcnQgYnkgY2xpY2tpbmcgYW55IG9mIHRoZSBtZXRyaWNzLiIsMSwiaGVhZGVyLWNsaWNrYWJsZSIsMywiY2xpY2siXSxbImNsYXNzIiwic29ydC1pY29uIiwzLCJzdmdJY29uIiwibmdDbGFzcyIsNCwibmdJZiJdLFsxLCJzb3J0LWljb24iLDMsInN2Z0ljb24iLCJuZ0NsYXNzIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihDZigwLCJkaXYiLDApLENmKDEsIm1hdC1jaGVja2JveCIsMSksUmYoImNoYW5nZSIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4ub25BbGxBbm5vdGF0aW9uc1RvZ2dsZWQuZW1pdChlLmNoZWNrZWQpfSkpLE1mKCksTWYoKSxDZigyLCJkaXYiLDIpLEhtKDMsRk90LDUsMiwiZGl2IiwzKSxNZigpKSwyJmUmJihEYygxKSxiZigiY2hlY2tlZCIsbi5zZWxlY3RlZEFubm90YXRpb25zLmxlbmd0aD09PW4ubnVtQW5ub3RhdGlvbnMpLERjKDIpLGJmKCJuZ0Zvck9mIixuLmFjdGl2ZU1ldHJpY3MpKX0sZGlyZWN0aXZlczpbYloseHYsUHYsTXEsQ3ZdLHN0eWxlczpbJy5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjlweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHh9Lm1hdC1oMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaGVhZGxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDI0cHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTVweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWg2W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1ib2R5LXN0cm9uZ1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYXJkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FyZC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MjRweH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNhbGVuZGFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZGlhbG9nLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVlbSAwO2JvcmRlci10b3A6Ljg0Mzc1ZW0gc29saWQgdHJhbnNwYXJlbnR9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17dG9wOi0wLjg0Mzc1ZW07cGFkZGluZy10b3A6Ljg0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6NzUlO21hcmdpbi10b3A6LjY2NjY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS43OTE2NjY2NjY3ZW0pfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjQzNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDJweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIzZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4yODEyNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LjU0MTY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS42NjY2NjY2NjY3ZW0pfUBtZWRpYSBwcmludHsubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjJlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjFlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyZW0pIHNjYWxlKDAuNzUpfX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouMjVlbSAwIC43NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjA5Mzc1ZW07bWFyZ2luLXRvcDotMC41ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoxZW0gMCAxZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuODQzNzVlbTttYXJnaW4tdG9wOi0wLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMiksIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fWlucHV0Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi0wLjA2MjVlbX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHh9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtfS5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1zdGVwLXN1Yi1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6bm9ybWFsfS5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1zdGVwLWxhYmVsLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10YWItZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MH0ubWF0LXRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTBweDtwYWRkaW5nLXRvcDo2cHg7cGFkZGluZy1ib3R0b206NnB4fS5tYXQtdG9vbHRpcC1oYW5kc2V0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4fS5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtc2ltcGxlLXNuYWNrYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHh9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoxO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjE0cHh9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV06bm90KDplbXB0eSl7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9Lm1hdC1yaXBwbGUubWF0LXJpcHBsZS11bmJvdW5kZWRbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OnZpc2libGV9Lm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJhZGl1czo1MCU7cG9pbnRlci1ldmVudHM6bm9uZTt0cmFuc2l0aW9uOm9wYWNpdHksdHJhbnNmb3JtIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTt0cmFuc2Zvcm06c2NhbGUoMCl9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9LmNkay12aXN1YWxseS1oaWRkZW5bX25nY29udGVudC0lQ09NUCVde2JvcmRlcjowO2NsaXA6cmVjdCgwIDAgMCAwKTtoZWlnaHQ6MXB4O21hcmdpbjotMXB4O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4O3doaXRlLXNwYWNlOm5vd3JhcDtvdXRsaW5lOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0sIC5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cG9pbnRlci1ldmVudHM6bm9uZTt0b3A6MDtsZWZ0OjA7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV06ZW1wdHl7ZGlzcGxheTpub25lfS5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktcGFuZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6YXV0bztib3gtc2l6aW5nOmJvcmRlci1ib3g7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDttYXgtd2lkdGg6MTAwJTttYXgtaGVpZ2h0OjEwMCV9LmNkay1vdmVybGF5LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDt6LWluZGV4OjEwMDA7cG9pbnRlci1ldmVudHM6YXV0bzstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnQ7dHJhbnNpdGlvbjpvcGFjaXR5IDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpO29wYWNpdHk6MH0uY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eToxfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6LjZ9LmNkay1vdmVybGF5LWRhcmstYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMzIpfS5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV0sIC5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWNvbm5lY3RlZC1wb3NpdGlvbi1ib3VuZGluZy1ib3hbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO21pbi13aWR0aDoxcHg7bWluLWhlaWdodDoxcHh9LmNkay1nbG9iYWwtc2Nyb2xsYmxvY2tbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3dpZHRoOjEwMCU7b3ZlcmZsb3cteTpzY3JvbGx9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplW19uZ2NvbnRlbnQtJUNPTVAlXXtyZXNpemU6bm9uZX10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDphdXRvICFpbXBvcnRhbnQ7b3ZlcmZsb3c6aGlkZGVuICFpbXBvcnRhbnR9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZy1maXJlZm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDowICFpbXBvcnRhbnR9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydHt9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmR7fS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGx7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0IDBzIDFtc30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOi13ZWJraXQtYXV0b2ZpbGwpe2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmQgMHMgMW1zfS5tYXQtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LW1kYy1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfVtfbmdob3N0LSVDT01QJV17Ym9yZGVyLWJvdHRvbToycHggc29saWQgI2ViZWJlYjtkaXNwbGF5OmZsZXg7aGVpZ2h0OjI4cHg7YWxpZ24taXRlbXM6ZmxleC1lbmQ7bWFyZ2luLXRvcDo4cHh9LmFubm90YXRpb25zLWhlYWRlci1jb250YWluZXJzW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7Zm9udC1zaXplOi45ZW07Zm9udC13ZWlnaHQ6NTAwO2ZsZXgtZ3JvdzoxfS5oZWFkZXItY29sdW1uW19uZ2NvbnRlbnQtJUNPTVAlXXtmbGV4OjEgMX0uaGVhZGVyLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTppbmxpbmUtYmxvY2t9LmhlYWRlci1jbGlja2FibGVbX25nY29udGVudC0lQ09NUCVde2N1cnNvcjpwb2ludGVyO2Rpc3BsYXk6ZmxleDtvdXRsaW5lOm5vbmV9LnRvZ2dsZS1hbGwtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tbGVmdDoxMHB4O3dpZHRoOjkwcHh9LnNvcnQtaWNvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjE2cHh9J10sY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKExPdCxbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJucG1pLWFubm90YXRpb25zLWxpc3QtaGVhZGVyLWNvbXBvbmVudCIsdGVtcGxhdGVVcmw6Ii4vaGVhZGVyX2NvbXBvbmVudC5uZy5odG1sIixzdHlsZVVybHM6WyIuL2hlYWRlcl9jb21wb25lbnQuY3NzIl0sY2hhbmdlRGV0ZWN0aW9uOmpuLk9uUHVzaH1dfV0sbnVsbCx7bnVtQW5ub3RhdGlvbnM6W3t0eXBlOlJffV0sc2VsZWN0ZWRBbm5vdGF0aW9uczpbe3R5cGU6Ul99XSxhY3RpdmVNZXRyaWNzOlt7dHlwZTpSX31dLHNvcnQ6W3t0eXBlOlJffV0sb25DaGFuZ2VTb3J0Olt7dHlwZTpFX31dLG9uQWxsQW5ub3RhdGlvbnNUb2dnbGVkOlt7dHlwZTpFX31dfSk7Y2xhc3MgQk90e2NvbnN0cnVjdG9yKHQpe3RoaXMuc3RvcmU9dCx0aGlzLnNlbGVjdGVkQW5ub3RhdGlvbnMkPXRoaXMuc3RvcmUuc2VsZWN0KFh2dCksdGhpcy5hbm5vdGF0aW9uU29ydCQ9dGhpcy5zdG9yZS5zZWxlY3Qobnh0KX1jaGFuZ2VTb3J0KHQpe3RoaXMuc3RvcmUuZGlzcGF0Y2goa3Z0KHttZXRyaWM6dH0pKX1hbGxBbm5vdGF0aW9uc1RvZ2dsZWQodCl7dGhpcy5zdG9yZS5kaXNwYXRjaCh5dnQodD97YW5ub3RhdGlvbnM6T2JqZWN0LmtleXModGhpcy5hbm5vdGF0aW9ucyl9Onthbm5vdGF0aW9uczpbXX0pKX19Qk90Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxCT3QpKGdmKGlTKSl9LEJPdC7JtWNtcD1zbyh7dHlwZTpCT3Qsc2VsZWN0b3JzOltbIm5wbWktYW5ub3RhdGlvbnMtbGlzdC1oZWFkZXIiXV0saW5wdXRzOntudW1Bbm5vdGF0aW9uczoibnVtQW5ub3RhdGlvbnMiLGFubm90YXRpb25zOiJhbm5vdGF0aW9ucyIsYWN0aXZlTWV0cmljczoiYWN0aXZlTWV0cmljcyJ9LGRlY2xzOjMsdmFyczo4LGNvbnN0czpbWzMsIm51bUFubm90YXRpb25zIiwic2VsZWN0ZWRBbm5vdGF0aW9ucyIsInNvcnQiLCJhY3RpdmVNZXRyaWNzIiwib25DaGFuZ2VTb3J0Iiwib25BbGxBbm5vdGF0aW9uc1RvZ2dsZWQiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKENmKDAsIm5wbWktYW5ub3RhdGlvbnMtbGlzdC1oZWFkZXItY29tcG9uZW50IiwwKSxSZigib25DaGFuZ2VTb3J0IiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5jaGFuZ2VTb3J0KGUpfSkpKCJvbkFsbEFubm90YXRpb25zVG9nZ2xlZCIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4uYWxsQW5ub3RhdGlvbnNUb2dnbGVkKGUpfSkpLF95KDEsImFzeW5jIiksX3koMiwiYXN5bmMiKSxNZigpKSwyJmUmJmJmKCJudW1Bbm5vdGF0aW9ucyIsbi5udW1Bbm5vdGF0aW9ucykoInNlbGVjdGVkQW5ub3RhdGlvbnMiLEN5KDEsNCxuLnNlbGVjdGVkQW5ub3RhdGlvbnMkKSkoInNvcnQiLEN5KDIsNixuLmFubm90YXRpb25Tb3J0JCkpKCJhY3RpdmVNZXRyaWNzIixuLmFjdGl2ZU1ldHJpY3MpfSxkaXJlY3RpdmVzOltMT3RdLHBpcGVzOltWdl0sZW5jYXBzdWxhdGlvbjoyLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihCT3QsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoibnBtaS1hbm5vdGF0aW9ucy1saXN0LWhlYWRlciIsdGVtcGxhdGU6J1xuICAgIDxucG1pLWFubm90YXRpb25zLWxpc3QtaGVhZGVyLWNvbXBvbmVudFxuICAgICAgW251bUFubm90YXRpb25zXT0ibnVtQW5ub3RhdGlvbnMiXG4gICAgICBbc2VsZWN0ZWRBbm5vdGF0aW9uc109InNlbGVjdGVkQW5ub3RhdGlvbnMkIHwgYXN5bmMiXG4gICAgICBbc29ydF09ImFubm90YXRpb25Tb3J0JCB8IGFzeW5jIlxuICAgICAgW2FjdGl2ZU1ldHJpY3NdPSJhY3RpdmVNZXRyaWNzIlxuICAgICAgKG9uQ2hhbmdlU29ydCk9ImNoYW5nZVNvcnQoJGV2ZW50KSJcbiAgICAgIChvbkFsbEFubm90YXRpb25zVG9nZ2xlZCk9ImFsbEFubm90YXRpb25zVG9nZ2xlZCgkZXZlbnQpIlxuICAgID48L25wbWktYW5ub3RhdGlvbnMtbGlzdC1oZWFkZXItY29tcG9uZW50PlxuICAnLGNoYW5nZURldGVjdGlvbjpqbi5PblB1c2h9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTppU31dfSkse251bUFubm90YXRpb25zOlt7dHlwZTpSX31dLGFubm90YXRpb25zOlt7dHlwZTpSX31dLGFjdGl2ZU1ldHJpY3M6W3t0eXBlOlJffV19KTtjb25zdCBWT3Q9WyJjaGFydCJdLGpPdD1bImhpbnRDbGlwIl07ZnVuY3Rpb24gVU90KHQsZSl7MSZ0JiZ2ZigwLCJtYXQtaWNvbiIsMTIpfWZ1bmN0aW9uIFdPdCh0LGUpezEmdCYmdmYoMCwibWF0LWljb24iLDEzKX1mdW5jdGlvbiBHT3QodCxlKXtpZigxJnQmJnZmKDAsIm1hdC1pY29uIiwxNCksMiZ0KXtjb25zdCB0PXpmKCk7YmYoInN2Z0ljb24iLHQuc29ydC5vcmRlcj09PXQuU29ydE9yZGVyLlNJTUlMQVI/ImFycm93X2Rvd253YXJkXzI0cHgiOiJhcnJvd191cHdhcmRfMjRweCIpKCJuZ0NsYXNzIix0LnNvcnQub3JkZXI9PT10LlNvcnRPcmRlci5TSU1JTEFSPyJkb3duLWljb24iOiJ1cC1pY29uIil9fWNsYXNzIFlPdHtjb25zdHJ1Y3Rvcigpe3RoaXMuc2VsZWN0ZWQ9ITEsdGhpcy5vblNob3dTaW1pbGFyQW5ub3RhdGlvbnM9bmV3IFN5LHRoaXMuU29ydE9yZGVyPVV2dCx0aGlzLndpZHRoPTEwLHRoaXMuY2hhcnRXaWR0aD0xMCx0aGlzLmNoYXJ0SGVpZ2h0PTEwLHRoaXMubWF4RG90UmFkaXVzPTEwLHRoaXMuY291bnREb3RPZmZzZXQ9NzAsdGhpcy5jb3VudFRleHRQYWRkaW5nPTIsdGhpcy5tYXJnaW49e3RvcDowLHJpZ2h0OjAsYm90dG9tOjAsbGVmdDoxMDB9LHRoaXMuc3Ryb2tlQ29sb3I9IiNmZmYiLHRoaXMudGV4dENsYXNzPSJkZWZhdWx0LXRleHQiLHRoaXMucnVucz1bXX1vblJlc2l6ZSh0KXt0aGlzLnJlZHJhdygpfW5nQWZ0ZXJWaWV3SW5pdCgpe3RoaXMuc3ZnPW44KHRoaXMuYW5ub3RhdGlvbkNvbnRhaW5lci5uYXRpdmVFbGVtZW50KS5zZWxlY3QoInN2ZyIpLHRoaXMueFNjYWxlPSRudCgpLnBhZGRpbmcoMCksdGhpcy55U2NhbGU9JG50KCkucGFkZGluZygwKSx0aGlzLnNpemVTY2FsZT1tb3QoKS5kb21haW4oWzAsMV0pLHRoaXMuY291bnRTaXplU2NhbGU9bW90KCkucmFuZ2UoWzIsdGhpcy5tYXhEb3RSYWRpdXNdKSx0aGlzLm1haW5Db250YWluZXI9dGhpcy5zdmcuYXBwZW5kKCJnIikuYXR0cigidHJhbnNmb3JtIixgdHJhbnNsYXRlKCR7dGhpcy5tYXJnaW4ubGVmdH0sICR7dGhpcy5tYXJnaW4udG9wfSlgKSx0aGlzLmJhcnNHcm91cD10aGlzLm1haW5Db250YWluZXIuYXBwZW5kKCJnIiksdGhpcy5jb3VudERvdHNHcm91cD10aGlzLm1haW5Db250YWluZXIuYXBwZW5kKCJnIiksdGhpcy50ZXh0c0dyb3VwPXRoaXMubWFpbkNvbnRhaW5lci5hcHBlbmQoImciKSx0aGlzLmNvdW50VGV4dHNHcm91cD10aGlzLm1haW5Db250YWluZXIuYXBwZW5kKCJnIiksdGhpcy5ydW5IaW50R3JvdXA9dGhpcy5zdmcuYXBwZW5kKCJnIiksdGhpcy5yZWRyYXcoKX1uZ09uQ2hhbmdlcyh0KXt0aGlzLnN2ZyYmdGhpcy5yZWRyYXcoKX1yZWRyYXcoKXt0aGlzLnNlbGVjdGVkPXRoaXMuc2VsZWN0ZWRBbm5vdGF0aW9ucy5pbmNsdWRlcyh0aGlzLmFubm90YXRpb24pLHRoaXMudXBkYXRlRGltZW5zaW9ucygpLHRoaXMuc2V0VGV4dENsYXNzKCksdGhpcy51cGRhdGVBeGVzKCksdGhpcy5kcmF3KCl9dXBkYXRlRGltZW5zaW9ucygpe2NvbnN0IHQ9bmV3IFNldDt0aGlzLmRhdGEuZm9yRWFjaCgoZT0+e3QuYWRkKGUucnVuKX0pKSx0aGlzLnJ1bnM9Wy4uLnRdLHRoaXMuc3ZnLnN0eWxlKCJoZWlnaHQiLHRoaXMubnVtQWN0aXZlUnVucyp0aGlzLnJ1bkhlaWdodCsicHgiKSx0aGlzLmNoYXJ0SGVpZ2h0PXRoaXMucnVucy5sZW5ndGgqdGhpcy5ydW5IZWlnaHQtdGhpcy5tYXJnaW4udG9wLXRoaXMubWFyZ2luLmJvdHRvbSx0aGlzLndpZHRoPXRoaXMuYW5ub3RhdGlvbkNvbnRhaW5lci5uYXRpdmVFbGVtZW50LmNsaWVudFdpZHRofHwxMCx0aGlzLmNoYXJ0V2lkdGg9dGhpcy53aWR0aC10aGlzLm1hcmdpbi5sZWZ0LXRoaXMubWFyZ2luLnJpZ2h0fXNldFRleHRDbGFzcygpe3RoaXMudGV4dENsYXNzPSJkZWZhdWx0LXRleHQiLHRoaXMuZmxhZ2dlZEFubm90YXRpb25zLmluY2x1ZGVzKHRoaXMuYW5ub3RhdGlvbik/dGhpcy50ZXh0Q2xhc3M9ImZsYWctdGV4dCI6dGhpcy5oaWRkZW5Bbm5vdGF0aW9ucy5pbmNsdWRlcyh0aGlzLmFubm90YXRpb24pJiYodGhpcy50ZXh0Q2xhc3M9ImhpZGRlbi10ZXh0Iil9dXBkYXRlQXhlcygpe3RoaXMueFNjYWxlLnJhbmdlUm91bmQoWzAsdGhpcy5jaGFydFdpZHRoLXRoaXMuY2hhcnRXaWR0aC90aGlzLmFjdGl2ZU1ldHJpY3MubGVuZ3RoXSkuZG9tYWluKHRoaXMuYWN0aXZlTWV0cmljcy5tYXAoKHQ9PnpfdCh0KSkpKSx0aGlzLnlTY2FsZS5yYW5nZVJvdW5kKFswLHRoaXMuY2hhcnRIZWlnaHQtdGhpcy5ydW5IZWlnaHRdKS5kb21haW4odGhpcy5ydW5zKSx0aGlzLnNpemVTY2FsZS5yYW5nZShbMCx0aGlzLmNoYXJ0V2lkdGgvdGhpcy5hY3RpdmVNZXRyaWNzLmxlbmd0aF0pLHRoaXMuY291bnRTaXplU2NhbGUuZG9tYWluKFswLHRoaXMubWF4Q291bnRdKX1kcmF3KCl7dGhpcy5kcmF3UnVuSW5kaWNhdG9ycygpLHRoaXMuZHJhd1J1bkhpbnRUZXh0cygpLHRoaXMuZHJhd0JhcnMoKSx0aGlzLmRyYXdUZXh0cygpLHRoaXMuc2hvd0NvdW50cz8odGhpcy5kcmF3Q291bnREb3RzKCksdGhpcy5kcmF3Q291bnRUZXh0cygpKToodGhpcy5jb3VudERvdHNHcm91cC5zZWxlY3RBbGwoIi5jb3VudC1kb3QiKS5yZW1vdmUoKSx0aGlzLmNvdW50VGV4dHNHcm91cC5zZWxlY3RBbGwoIi5jb3VudC1iYWNrZ3JvdW5kLXRleHQiKS5yZW1vdmUoKSx0aGlzLmNvdW50VGV4dHNHcm91cC5zZWxlY3RBbGwoIi5jb3VudC10ZXh0IikucmVtb3ZlKCkpfWRyYXdSdW5JbmRpY2F0b3JzKCl7bjgodGhpcy5jbGlwUGF0aEVsZW1lbnQubmF0aXZlRWxlbWVudCkuc2VsZWN0KCJyZWN0IikuYXR0cigid2lkdGgiLHRoaXMubWFyZ2luLmxlZnQtMzApLmF0dHIoImhlaWdodCIsdGhpcy5jaGFydEhlaWdodCk7Y29uc3QgdD10aGlzLnJ1bkhpbnRHcm91cC5zZWxlY3RBbGwoIi5oaW50IikuZGF0YSh0aGlzLnJ1bnMpLGU9dC5lbnRlcigpLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwiaGludCIpO2UuYXBwZW5kKCJwYXRoIikuYXR0cigiZCIsIk0gMCAwIEwgMTUgMCBMIDEwIDEwIEwgMTUgMjAgTCAwIDIwIFoiKSxlLm1lcmdlKHQpLmF0dHIoInRyYW5zZm9ybSIsZnVuY3Rpb24odCl7cmV0dXJuYHRyYW5zbGF0ZSgxMCwgJHt0aGlzLnlTY2FsZSh0KSs1fSlgfS5iaW5kKHRoaXMpKS5hdHRyKCJmaWxsIixmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5jb2xvclNjYWxlKHQpfS5iaW5kKHRoaXMpKSx0LmV4aXQoKS5yZW1vdmUoKX1kcmF3UnVuSGludFRleHRzKCl7Y29uc3QgdD10aGlzLnJ1bkhpbnRHcm91cC5zZWxlY3RBbGwoIi5oaW50LXRleHQiKS5kYXRhKHRoaXMucnVucyk7dC5lbnRlcigpLmFwcGVuZCgidGV4dCIpLmF0dHIoIngiLDI1KS5hdHRyKCJmb250LXNpemUiLCIxMHB4IikuYXR0cigiYWxpZ25tZW50LWJhc2VsaW5lIiwibWlkZGxlIikuYXR0cigiY2xpcC1wYXRoIiwidXJsKCNoaW50LWNsaXApIikubWVyZ2UodCkuYXR0cigieSIsZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMueVNjYWxlKHQpKzE1fS5iaW5kKHRoaXMpKS5hdHRyKCJjbGFzcyIsYGhpbnQtdGV4dCAke3RoaXMudGV4dENsYXNzfWApLnRleHQoKHQ9Pnt2YXIgZTtyZXR1cm4obnVsbD09PShlPXRoaXMucnVuSWRUb1J1bnMuZ2V0KHQpKXx8dm9pZCAwPT09ZT92b2lkIDA6ZS5uYW1lKXx8IiJ9KSksdC5leGl0KCkucmVtb3ZlKCl9ZHJhd0JhcnMoKXtjb25zdCB0PXRoaXMuYmFyc0dyb3VwLnNlbGVjdEFsbCgiLmJhciIpLmRhdGEodGhpcy5kYXRhKTt0LmVudGVyKCkuYXBwZW5kKCJyZWN0IikuYXR0cigiY2xhc3MiLCJiYXIiKS5hdHRyKCJoZWlnaHQiLDIwKS5tZXJnZSh0KS5hdHRyKCJmaWxsIiwodD0+bnVsbD09PXQublBNSVZhbHVlPyIiOnQublBNSVZhbHVlPj0wP0VhdCh0Lm5QTUlWYWx1ZSk6VGF0KC0xKnQublBNSVZhbHVlKSkpLmF0dHIoIngiLGZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnhTY2FsZSh0Lm1ldHJpYyl9LmJpbmQodGhpcykpLmF0dHIoInkiLGZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnlTY2FsZSh0LnJ1bikrNX0uYmluZCh0aGlzKSkuYXR0cigid2lkdGgiLGZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT09dC5uUE1JVmFsdWU/MDp0aGlzLnNpemVTY2FsZShNYXRoLmFicyh0Lm5QTUlWYWx1ZSkpfS5iaW5kKHRoaXMpKSx0LmV4aXQoKS5yZW1vdmUoKX1kcmF3Q291bnREb3RzKCl7Y29uc3QgdD10aGlzLmNvdW50RG90c0dyb3VwLnNlbGVjdEFsbCgiLmNvdW50LWRvdCIpLmRhdGEodGhpcy5kYXRhKTt0LmVudGVyKCkuYXBwZW5kKCJjaXJjbGUiKS5hdHRyKCJjbGFzcyIsImNvdW50LWRvdCIpLmF0dHIoInN0cm9rZSIsImJsYWNrIikubWVyZ2UodCkuYXR0cigiZmlsbCIsZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PT10LmNvdW50VmFsdWU/IiI6QWF0KHQuY291bnRWYWx1ZS90aGlzLm1heENvdW50KX0uYmluZCh0aGlzKSkuYXR0cigiY3giLGZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnhTY2FsZSh0Lm1ldHJpYykrdGhpcy5jb3VudERvdE9mZnNldH0uYmluZCh0aGlzKSkuYXR0cigiY3kiLGZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnlTY2FsZSh0LnJ1bikrdGhpcy5ydW5IZWlnaHQvMn0uYmluZCh0aGlzKSkuYXR0cigiciIsZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PT10LmNvdW50VmFsdWU/MDp0aGlzLmNvdW50U2l6ZVNjYWxlKHQuY291bnRWYWx1ZSl9LmJpbmQodGhpcykpLHQuZXhpdCgpLnJlbW92ZSgpfWRyYXdUZXh0cygpe2NvbnN0IHQ9dGhpcy50ZXh0c0dyb3VwLnNlbGVjdEFsbCgiLm5wbWktYmFja2dyb3VuZC10ZXh0IikuZGF0YSh0aGlzLmRhdGEpO3QuZW50ZXIoKS5hcHBlbmQoInRleHQiKS5hdHRyKCJjbGFzcyIsIm5wbWktYmFja2dyb3VuZC10ZXh0IikuYXR0cigic3Ryb2tlLXdpZHRoIiwzKS5hdHRyKCJzdHJva2UtbGluZWpvaW4iLCJyb3VuZCIpLmF0dHIoInN0cm9rZSIsdGhpcy5zdHJva2VDb2xvcikuYXR0cigiZm9udC1zaXplIiwiMTNweCIpLmF0dHIoImFsaWdubWVudC1iYXNlbGluZSIsIm1pZGRsZSIpLm1lcmdlKHQpLmF0dHIoIngiLGZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnhTY2FsZSh0Lm1ldHJpYykrNX0uYmluZCh0aGlzKSkuYXR0cigieSIsZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMueVNjYWxlKHQucnVuKSt0aGlzLnJ1bkhlaWdodC8yfS5iaW5kKHRoaXMpKS50ZXh0KCh0PT5udWxsPT09dC5uUE1JVmFsdWU/Im51bGwiOk1hdGgucm91bmQoMWUzKih0Lm5QTUlWYWx1ZStOdW1iZXIuRVBTSUxPTikpLzFlMykpLHQuZXhpdCgpLnJlbW92ZSgpO2NvbnN0IGU9dGhpcy50ZXh0c0dyb3VwLnNlbGVjdEFsbCgiLm5wbWktdGV4dCIpLmRhdGEodGhpcy5kYXRhKTtlLmVudGVyKCkuYXBwZW5kKCJ0ZXh0IikuYXR0cigiY2xhc3MiLCJucG1pLXRleHQiKS5hdHRyKCJmb250LXNpemUiLCIxM3B4IikuYXR0cigiYWxpZ25tZW50LWJhc2VsaW5lIiwibWlkZGxlIikubWVyZ2UoZSkuYXR0cigieCIsZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMueFNjYWxlKHQubWV0cmljKSs1fS5iaW5kKHRoaXMpKS5hdHRyKCJ5IixmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy55U2NhbGUodC5ydW4pK3RoaXMucnVuSGVpZ2h0LzJ9LmJpbmQodGhpcykpLnRleHQoKHQ9Pm51bGw9PT10Lm5QTUlWYWx1ZT8ibnVsbCI6TWF0aC5yb3VuZCgxZTMqKHQublBNSVZhbHVlK051bWJlci5FUFNJTE9OKSkvMWUzKSksZS5leGl0KCkucmVtb3ZlKCl9ZHJhd0NvdW50VGV4dHMoKXtjb25zdCB0PXRoaXMuY291bnRUZXh0c0dyb3VwLnNlbGVjdEFsbCgiLmNvdW50LWJhY2tncm91bmQtdGV4dCIpLmRhdGEodGhpcy5kYXRhKTt0LmVudGVyKCkuYXBwZW5kKCJ0ZXh0IikuYXR0cigiY2xhc3MiLCJjb3VudC1iYWNrZ3JvdW5kLXRleHQiKS5hdHRyKCJzdHJva2Utd2lkdGgiLDMpLmF0dHIoInN0cm9rZS1saW5lam9pbiIsInJvdW5kIikuYXR0cigic3Ryb2tlIix0aGlzLnN0cm9rZUNvbG9yKS5hdHRyKCJmb250LXNpemUiLCIxMHB4IikuYXR0cigiYWxpZ25tZW50LWJhc2VsaW5lIiwibWlkZGxlIikubWVyZ2UodCkuYXR0cigieCIsZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMueFNjYWxlKHQubWV0cmljKSt0aGlzLmNvdW50RG90T2Zmc2V0K3RoaXMuY291bnRUZXh0UGFkZGluZyt0aGlzLm1heERvdFJhZGl1c30uYmluZCh0aGlzKSkuYXR0cigieSIsZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMueVNjYWxlKHQucnVuKSt0aGlzLnJ1bkhlaWdodC8yfS5iaW5kKHRoaXMpKS50ZXh0KCh0PT5udWxsPT09dC5jb3VudFZhbHVlPyIiOkludGwuTnVtYmVyRm9ybWF0KCkuZm9ybWF0KHQuY291bnRWYWx1ZSkpKSx0LmV4aXQoKS5yZW1vdmUoKTtjb25zdCBlPXRoaXMuY291bnRUZXh0c0dyb3VwLnNlbGVjdEFsbCgiLmNvdW50LXRleHQiKS5kYXRhKHRoaXMuZGF0YSk7ZS5lbnRlcigpLmFwcGVuZCgidGV4dCIpLmF0dHIoImNsYXNzIiwiY291bnQtdGV4dCIpLmF0dHIoImZvbnQtc2l6ZSIsIjEwcHgiKS5hdHRyKCJhbGlnbm1lbnQtYmFzZWxpbmUiLCJtaWRkbGUiKS5tZXJnZShlKS5hdHRyKCJ4IixmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy54U2NhbGUodC5tZXRyaWMpK3RoaXMuY291bnREb3RPZmZzZXQrdGhpcy5jb3VudFRleHRQYWRkaW5nK3RoaXMubWF4RG90UmFkaXVzfS5iaW5kKHRoaXMpKS5hdHRyKCJ5IixmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy55U2NhbGUodC5ydW4pK3RoaXMucnVuSGVpZ2h0LzJ9LmJpbmQodGhpcykpLnRleHQoKHQ9Pm51bGw9PT10LmNvdW50VmFsdWU/IiI6SW50bC5OdW1iZXJGb3JtYXQoKS5mb3JtYXQodC5jb3VudFZhbHVlKSkpLGUuZXhpdCgpLnJlbW92ZSgpfXNpbWlsYXJpdHlTb3J0KHQpe3RoaXMuaGFzRW1iZWRkaW5nJiYodC5zdG9wUHJvcGFnYXRpb24oKSx0aGlzLm9uU2hvd1NpbWlsYXJBbm5vdGF0aW9ucy5lbWl0KCkpfX1ZT3QuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFlPdCl9LFlPdC7JtWNtcD1zbyh7dHlwZTpZT3Qsc2VsZWN0b3JzOltbImFubm90YXRpb24tY29tcG9uZW50Il1dLHZpZXdRdWVyeTpmdW5jdGlvbiB0KGUsbil7aWYoMSZlJiYoVnkoVk90LDcsS2gpLFZ5KGpPdCw3LEtoKSksMiZlKXtsZXQgdDtCeSh0PVV5KCkpJiYobi5hbm5vdGF0aW9uQ29udGFpbmVyPXQuZmlyc3QpLEJ5KHQ9VXkoKSkmJihuLmNsaXBQYXRoRWxlbWVudD10LmZpcnN0KX19LGhvc3RWYXJzOjIsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJlJmKCJyZXNpemUiLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4ub25SZXNpemUoKX0pLCExLE9sKSwyJmUmJmN1KCJzZWxlY3RlZC1yb3ciLG4uc2VsZWN0ZWQpfSxpbnB1dHM6e2RhdGE6ImRhdGEiLG1heENvdW50OiJtYXhDb3VudCIsc2VsZWN0ZWRBbm5vdGF0aW9uczoic2VsZWN0ZWRBbm5vdGF0aW9ucyIsZmxhZ2dlZEFubm90YXRpb25zOiJmbGFnZ2VkQW5ub3RhdGlvbnMiLGhpZGRlbkFubm90YXRpb25zOiJoaWRkZW5Bbm5vdGF0aW9ucyIsYWN0aXZlTWV0cmljczoiYWN0aXZlTWV0cmljcyIsbnVtQWN0aXZlUnVuczoibnVtQWN0aXZlUnVucyIsc2hvd0NvdW50czoic2hvd0NvdW50cyIsYW5ub3RhdGlvbjoiYW5ub3RhdGlvbiIscnVuSGVpZ2h0OiJydW5IZWlnaHQiLGhhc0VtYmVkZGluZzoiaGFzRW1iZWRkaW5nIixzb3J0OiJzb3J0IixzaWRlYmFyV2lkdGg6InNpZGViYXJXaWR0aCIsY29sb3JTY2FsZToiY29sb3JTY2FsZSIscnVuSWRUb1J1bnM6InJ1bklkVG9SdW5zIn0sb3V0cHV0czp7b25TaG93U2ltaWxhckFubm90YXRpb25zOiJvblNob3dTaW1pbGFyQW5ub3RhdGlvbnMifSxmZWF0dXJlczpbcW9dLGRlY2xzOjE0LHZhcnM6MTAsY29uc3RzOltbMSwiYW5ub3RhdGlvbi10aXRsZSJdLFsxLCJhbm5vdGF0aW9uLWNoZWNrYm94IiwzLCJjaGVja2VkIiwiY2xpY2siXSxbMSwiYW5ub3RhdGlvbi1idXR0b24iLDMsIm5nQ2xhc3MiLCJjbGljayJdLFsiY2xhc3MiLCJmbGFnZ2VkLWljb24iLCJzdmdJY29uIiwiZmxhZ18yNHB4Iiw0LCJuZ0lmIl0sWyJjbGFzcyIsImhpZGRlbi1pY29uIiwic3ZnSWNvbiIsInZpc2liaWxpdHlfb2ZmXzI0cHgiLDQsIm5nSWYiXSxbImNsYXNzIiwiYW5ub3RhdGlvbi1pY29uIiwzLCJzdmdJY29uIiwibmdDbGFzcyIsNCwibmdJZiJdLFsxLCJjaGFydC1kaXYiXSxbImNoYXJ0IiwiIl0sWzEsImNoYXJ0LXN2ZyJdLFsiaWQiLCJoaW50LWNsaXAiXSxbImhpbnRDbGlwIiwiIl0sWyJ4IiwiMCIsInkiLCIwIl0sWyJzdmdJY29uIiwiZmxhZ18yNHB4IiwxLCJmbGFnZ2VkLWljb24iXSxbInN2Z0ljb24iLCJ2aXNpYmlsaXR5X29mZl8yNHB4IiwxLCJoaWRkZW4taWNvbiJdLFsxLCJhbm5vdGF0aW9uLWljb24iLDMsInN2Z0ljb24iLCJuZ0NsYXNzIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihDZigwLCJkaXYiLDApLENmKDEsIm1hdC1jaGVja2JveCIsMSksUmYoImNsaWNrIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gZS5wcmV2ZW50RGVmYXVsdCgpfSkpLE1mKCksQ2YoMiwiYnV0dG9uIiwyKSxSZigiY2xpY2siLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLnNpbWlsYXJpdHlTb3J0KGUpfSkpLFB1KDMpLE1mKCksSG0oNCxVT3QsMSwwLCJtYXQtaWNvbiIsMyksSG0oNSxXT3QsMSwwLCJtYXQtaWNvbiIsNCksSG0oNixHT3QsMSwyLCJtYXQtaWNvbiIsNSksTWYoKSxDZig3LCJkaXYiLDYsNyksb2EoKSxDZig5LCJzdmciLDgpLENmKDEwLCJkZWZzIiksQ2YoMTEsImNsaXBQYXRoIiw5LDEwKSx2ZigxMywicmVjdCIsMTEpLE1mKCksTWYoKSxNZigpLE1mKCkpLDImZSYmKGN1KCJmbGFnZ2VkLWFubm90YXRpb24iLG4uZmxhZ2dlZEFubm90YXRpb25zLmluY2x1ZGVzKG4uYW5ub3RhdGlvbikpKCJoaWRkZW4tYW5ub3RhdGlvbiIsbi5oaWRkZW5Bbm5vdGF0aW9ucy5pbmNsdWRlcyhuLmFubm90YXRpb24pJiYhbi5mbGFnZ2VkQW5ub3RhdGlvbnMuaW5jbHVkZXMobi5hbm5vdGF0aW9uKSksRGMoMSksYmYoImNoZWNrZWQiLG4uc2VsZWN0ZWRBbm5vdGF0aW9ucy5pbmNsdWRlcyhuLmFubm90YXRpb24pKSxEYygxKSxiZigibmdDbGFzcyIsbi5oYXNFbWJlZGRpbmc/ImNsaWNrYWJsZS1hbm5vdGF0aW9uIjoiIiksRGMoMSksa3UoIiAiLG4uYW5ub3RhdGlvbiwiICIpLERjKDEpLGJmKCJuZ0lmIixuLmZsYWdnZWRBbm5vdGF0aW9ucy5pbmNsdWRlcyhuLmFubm90YXRpb24pKSxEYygxKSxiZigibmdJZiIsbi5oaWRkZW5Bbm5vdGF0aW9ucy5pbmNsdWRlcyhuLmFubm90YXRpb24pKSxEYygxKSxiZigibmdJZiIsbi5hbm5vdGF0aW9uPT09bi5zb3J0Lm1ldHJpYykpfSxkaXJlY3RpdmVzOltiWixDdixQdixNcV0sc3R5bGVzOlsnLm1hdC1iYWRnZS1jb250ZW50e2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTJweDtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1iYWRnZS1zbWFsbCAubWF0LWJhZGdlLWNvbnRlbnR7Zm9udC1zaXplOjlweH0ubWF0LWJhZGdlLWxhcmdlIC5tYXQtYmFkZ2UtY29udGVudHtmb250LXNpemU6MjRweH0ubWF0LWgxLC5tYXQtaGVhZGxpbmUsLm1hdC10eXBvZ3JhcGh5IGgxe2ZvbnQ6NDAwIDI0cHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgyLC5tYXQtdGl0bGUsLm1hdC10eXBvZ3JhcGh5IGgye2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgzLC5tYXQtc3ViaGVhZGluZy0yLC5tYXQtdHlwb2dyYXBoeSBoM3tmb250OjQwMCAxNnB4LzI4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNCwubWF0LXN1YmhlYWRpbmctMSwubWF0LXR5cG9ncmFwaHkgaDR7Zm9udDo0MDAgMTVweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDUsLm1hdC10eXBvZ3JhcGh5IGg1e2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWg2LC5tYXQtdHlwb2dyYXBoeSBoNntmb250OjQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1ib2R5LXN0cm9uZywubWF0LWJvZHktMntmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHksLm1hdC1ib2R5LTEsLm1hdC10eXBvZ3JhcGh5e2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keSBwLC5tYXQtYm9keS0xIHAsLm1hdC10eXBvZ3JhcGh5IHB7bWFyZ2luOjAgMCAxMnB4fS5tYXQtc21hbGwsLm1hdC1jYXB0aW9ue2ZvbnQ6NDAwIDEycHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZGlzcGxheS00LC5tYXQtdHlwb2dyYXBoeSAubWF0LWRpc3BsYXktNHtmb250OjMwMCAxMTJweC8xMTJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDVlbTttYXJnaW46MCAwIDU2cHh9Lm1hdC1kaXNwbGF5LTMsLm1hdC10eXBvZ3JhcGh5IC5tYXQtZGlzcGxheS0ze2ZvbnQ6NDAwIDU2cHgvNTZweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDJlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTIsLm1hdC10eXBvZ3JhcGh5IC5tYXQtZGlzcGxheS0ye2ZvbnQ6NDAwIDQ1cHgvNDhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDA1ZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0xLC5tYXQtdHlwb2dyYXBoeSAubWF0LWRpc3BsYXktMXtmb250OjQwMCAzNHB4LzQwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDY0cHh9Lm1hdC1ib3R0b20tc2hlZXQtY29udGFpbmVye2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYnV0dG9uLC5tYXQtcmFpc2VkLWJ1dHRvbiwubWF0LWljb24tYnV0dG9uLC5tYXQtc3Ryb2tlZC1idXR0b24sLm1hdC1mbGF0LWJ1dHRvbiwubWF0LWZhYiwubWF0LW1pbmktZmFie2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1idXR0b24tdG9nZ2xle2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmR7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZC10aXRsZXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYXJkLWhlYWRlciAubWF0LWNhcmQtdGl0bGV7Zm9udC1zaXplOjIwcHh9Lm1hdC1jYXJkLXN1YnRpdGxlLC5tYXQtY2FyZC1jb250ZW50e2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2hlY2tib3h7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2hlY2tib3gtbGF5b3V0IC5tYXQtY2hlY2tib3gtbGFiZWx7bGluZS1oZWlnaHQ6MjRweH0ubWF0LWNoaXB7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2hpcCAubWF0LWNoaXAtdHJhaWxpbmctaWNvbi5tYXQtaWNvbiwubWF0LWNoaXAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbntmb250LXNpemU6MThweH0ubWF0LXRhYmxle2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWhlYWRlci1jZWxse2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNlbGwsLm1hdC1mb290ZXItY2VsbHtmb250LXNpemU6MTRweH0ubWF0LWNhbGVuZGFye2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhbGVuZGFyLWJvZHl7Zm9udC1zaXplOjEzcHh9Lm1hdC1jYWxlbmRhci1ib2R5LWxhYmVsLC5tYXQtY2FsZW5kYXItcGVyaW9kLWJ1dHRvbntmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXIgdGh7Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZGlhbG9nLXRpdGxle2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcntmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnR7Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxke2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDoxLjEyNTtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZC13cmFwcGVye3BhZGRpbmctYm90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4IC5tYXQtaWNvbiwubWF0LWZvcm0tZmllbGQtc3VmZml4IC5tYXQtaWNvbntmb250LXNpemU6MTUwJTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtcHJlZml4IC5tYXQtaWNvbi1idXR0b24sLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeCAubWF0LWljb24tYnV0dG9ue2hlaWdodDoxLjVlbTt3aWR0aDoxLjVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4IC5tYXQtaWNvbi1idXR0b24gLm1hdC1pY29uLC5tYXQtZm9ybS1maWVsZC1zdWZmaXggLm1hdC1pY29uLWJ1dHRvbiAubWF0LWljb257aGVpZ2h0OjEuMTI1ZW07bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLWluZml4e3BhZGRpbmc6LjVlbSAwO2JvcmRlci10b3A6Ljg0Mzc1ZW0gc29saWQgdHJhbnNwYXJlbnR9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXQgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQgLm1hdC1pbnB1dC1zZXJ2ZXI6Zm9jdXMrLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXIgLm1hdC1mb3JtLWZpZWxkLWxhYmVse3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0IC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXTpub3QoOmxhYmVsLXNob3duKSsubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlciAubWF0LWZvcm0tZmllbGQtbGFiZWx7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVye3RvcDotMC44NDM3NWVtO3BhZGRpbmctdG9wOi44NDM3NWVtfS5tYXQtZm9ybS1maWVsZC1sYWJlbHt0b3A6MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmV7Ym90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJ7Zm9udC1zaXplOjc1JTttYXJnaW4tdG9wOi42NjY2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNzkxNjY2NjY2N2VtKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kgLm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJ7cGFkZGluZy1ib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeSAubWF0LWZvcm0tZmllbGQtaW5maXh7cGFkZGluZzouNDM3NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXQgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQgLm1hdC1pbnB1dC1zZXJ2ZXI6Zm9jdXMrLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXIgLm1hdC1mb3JtLWZpZWxkLWxhYmVse3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdCAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbDotd2Via2l0LWF1dG9maWxsKy5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyIC5tYXQtZm9ybS1maWVsZC1sYWJlbHt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdCAubWF0LWlucHV0LXNlcnZlcltsYWJlbF06bm90KDpsYWJlbC1zaG93bikrLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXIgLm1hdC1mb3JtLWZpZWxkLWxhYmVse3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDJweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIzZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kgLm1hdC1mb3JtLWZpZWxkLWxhYmVse3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5IC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmV7Ym90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVye21hcmdpbi10b3A6LjU0MTY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS42NjY2NjY2NjY3ZW0pfUBtZWRpYSBwcmludHsubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdCAubWF0LWZvcm0tZmllbGQtbGFiZWwsLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdCAubWF0LWlucHV0LXNlcnZlcjpmb2N1cysubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlciAubWF0LWZvcm0tZmllbGQtbGFiZWx7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjJlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdCAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbDotd2Via2l0LWF1dG9maWxsKy5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyIC5tYXQtZm9ybS1maWVsZC1sYWJlbHt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0IC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXTpub3QoOmxhYmVsLXNob3duKSsubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlciAubWF0LWZvcm0tZmllbGQtbGFiZWx7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMmVtKSBzY2FsZSgwLjc1KX19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbCAubWF0LWZvcm0tZmllbGQtaW5maXh7cGFkZGluZzouMjVlbSAwIC43NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbCAubWF0LWZvcm0tZmllbGQtbGFiZWx7dG9wOjEuMDkzNzVlbTttYXJnaW4tdG9wOi0wLjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXQgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0IC5tYXQtaW5wdXQtc2VydmVyOmZvY3VzKy5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyIC5tYXQtZm9ybS1maWVsZC1sYWJlbHt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdOm5vdCg6bGFiZWwtc2hvd24pKy5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyIC5tYXQtZm9ybS1maWVsZC1sYWJlbHt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZSAubWF0LWZvcm0tZmllbGQtaW5maXh7cGFkZGluZzoxZW0gMCAxZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lIC5tYXQtZm9ybS1maWVsZC1sYWJlbHt0b3A6MS44NDM3NWVtO21hcmdpbi10b3A6LTAuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXQgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0IC5tYXQtaW5wdXQtc2VydmVyOmZvY3VzKy5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyIC5tYXQtZm9ybS1maWVsZC1sYWJlbHt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdOm5vdCg6bGFiZWwtc2hvd24pKy5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyIC5tYXQtZm9ybS1maWVsZC1sYWJlbHt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyLC5tYXQtZ3JpZC10aWxlLWZvb3Rlcntmb250LXNpemU6MTRweH0ubWF0LWdyaWQtdGlsZS1oZWFkZXIgLm1hdC1saW5lLC5tYXQtZ3JpZC10aWxlLWZvb3RlciAubWF0LWxpbmV7d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtZ3JpZC10aWxlLWhlYWRlciAubWF0LWxpbmU6bnRoLWNoaWxkKG4rMiksLm1hdC1ncmlkLXRpbGUtZm9vdGVyIC5tYXQtbGluZTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH1pbnB1dC5tYXQtaW5wdXQtZWxlbWVudHttYXJnaW4tdG9wOi0wLjA2MjVlbX0ubWF0LW1lbnUtaXRlbXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtcGFnaW5hdG9yLC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZSAubWF0LXNlbGVjdC10cmlnZ2Vye2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweH0ubWF0LXJhZGlvLWJ1dHRvbntmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3R7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0LXRyaWdnZXJ7aGVpZ2h0OjEuMTI1ZW19Lm1hdC1zbGlkZS10b2dnbGUtY29udGVudHtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dHtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtc3RlcHBlci12ZXJ0aWNhbCwubWF0LXN0ZXBwZXItaG9yaXpvbnRhbHtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zdGVwLWxhYmVse2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXN0ZXAtc3ViLWxhYmVsLWVycm9ye2ZvbnQtd2VpZ2h0Om5vcm1hbH0ubWF0LXN0ZXAtbGFiZWwtZXJyb3J7Zm9udC1zaXplOjE0cHh9Lm1hdC1zdGVwLWxhYmVsLXNlbGVjdGVke2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRhYi1ncm91cHtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10YWItbGFiZWwsLm1hdC10YWItbGlua3tmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdG9vbGJhciwubWF0LXRvb2xiYXIgaDEsLm1hdC10b29sYmFyIGgyLC5tYXQtdG9vbGJhciBoMywubWF0LXRvb2xiYXIgaDQsLm1hdC10b29sYmFyIGg1LC5tYXQtdG9vbGJhciBoNntmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MH0ubWF0LXRvb2x0aXB7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMHB4O3BhZGRpbmctdG9wOjZweDtwYWRkaW5nLWJvdHRvbTo2cHh9Lm1hdC10b29sdGlwLWhhbmRzZXR7Zm9udC1zaXplOjE0cHg7cGFkZGluZy10b3A6OHB4O3BhZGRpbmctYm90dG9tOjhweH0ubWF0LWxpc3QtaXRlbXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LW9wdGlvbntmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LWJhc2UgLm1hdC1saXN0LWl0ZW17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2UgLm1hdC1saXN0LWl0ZW0gLm1hdC1saW5le3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZSAubWF0LWxpc3QtaXRlbSAubWF0LWxpbmU6bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2UgLm1hdC1saXN0LW9wdGlvbntmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZSAubWF0LWxpc3Qtb3B0aW9uIC5tYXQtbGluZXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2UgLm1hdC1saXN0LW9wdGlvbiAubWF0LWxpbmU6bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2UgLm1hdC1zdWJoZWFkZXJ7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWxpc3QtYmFzZVtkZW5zZV0gLm1hdC1saXN0LWl0ZW17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdIC5tYXQtbGlzdC1pdGVtIC5tYXQtbGluZXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdIC5tYXQtbGlzdC1pdGVtIC5tYXQtbGluZTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV0gLm1hdC1saXN0LW9wdGlvbntmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV0gLm1hdC1saXN0LW9wdGlvbiAubWF0LWxpbmV7d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXSAubWF0LWxpc3Qtb3B0aW9uIC5tYXQtbGluZTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV0gLm1hdC1zdWJoZWFkZXJ7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LW9wdGlvbntmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHh9Lm1hdC1vcHRncm91cC1sYWJlbHtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LXNpbXBsZS1zbmFja2Jhcntmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHh9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9ue2xpbmUtaGVpZ2h0OjE7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo1MDB9Lm1hdC10cmVle2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRyZWUtbm9kZSwubWF0LW5lc3RlZC10cmVlLW5vZGV7Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtc2l6ZToxNHB4fS5tYXQtcmlwcGxle292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXJpcHBsZTpub3QoOmVtcHR5KXt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKX0ubWF0LXJpcHBsZS5tYXQtcmlwcGxlLXVuYm91bmRlZHtvdmVyZmxvdzp2aXNpYmxlfS5tYXQtcmlwcGxlLWVsZW1lbnR7cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJhZGl1czo1MCU7cG9pbnRlci1ldmVudHM6bm9uZTt0cmFuc2l0aW9uOm9wYWNpdHksdHJhbnNmb3JtIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTt0cmFuc2Zvcm06c2NhbGUoMCl9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LXJpcHBsZS1lbGVtZW50e2Rpc3BsYXk6bm9uZX0uY2RrLXZpc3VhbGx5LWhpZGRlbntib3JkZXI6MDtjbGlwOnJlY3QoMCAwIDAgMCk7aGVpZ2h0OjFweDttYXJnaW46LTFweDtvdmVyZmxvdzpoaWRkZW47cGFkZGluZzowO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjFweDt3aGl0ZS1zcGFjZTpub3dyYXA7b3V0bGluZTowOy13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lfS5jZGstb3ZlcmxheS1jb250YWluZXIsLmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVye3BvaW50ZXItZXZlbnRzOm5vbmU7dG9wOjA7bGVmdDowO2hlaWdodDoxMDAlO3dpZHRoOjEwMCV9LmNkay1vdmVybGF5LWNvbnRhaW5lcntwb3NpdGlvbjpmaXhlZDt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LWNvbnRhaW5lcjplbXB0eXtkaXNwbGF5Om5vbmV9LmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVye2Rpc3BsYXk6ZmxleDtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LXBhbmV7cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6YXV0bztib3gtc2l6aW5nOmJvcmRlci1ib3g7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDttYXgtd2lkdGg6MTAwJTttYXgtaGVpZ2h0OjEwMCV9LmNkay1vdmVybGF5LWJhY2tkcm9we3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO2xlZnQ6MDtyaWdodDowO3otaW5kZXg6MTAwMDtwb2ludGVyLWV2ZW50czphdXRvOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudDt0cmFuc2l0aW9uOm9wYWNpdHkgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSk7b3BhY2l0eTowfS5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5ne29wYWNpdHk6MX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5ne29wYWNpdHk6LjZ9LmNkay1vdmVybGF5LWRhcmstYmFja2Ryb3B7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4zMil9LmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wLC5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5ne29wYWNpdHk6MH0uY2RrLW92ZXJsYXktY29ubmVjdGVkLXBvc2l0aW9uLWJvdW5kaW5nLWJveHtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjttaW4td2lkdGg6MXB4O21pbi1oZWlnaHQ6MXB4fS5jZGstZ2xvYmFsLXNjcm9sbGJsb2Nre3Bvc2l0aW9uOmZpeGVkO3dpZHRoOjEwMCU7b3ZlcmZsb3cteTpzY3JvbGx9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXple3Jlc2l6ZTpub25lfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmd7cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6YXV0byAhaW1wb3J0YW50O292ZXJmbG93OmhpZGRlbiAhaW1wb3J0YW50fXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmctZmlyZWZveHtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDowICFpbXBvcnRhbnR9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydHsvKiEqL31Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZHsvKiEqL30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkOi13ZWJraXQtYXV0b2ZpbGx7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0IDBzIDFtc30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkOm5vdCg6LXdlYmtpdC1hdXRvZmlsbCl7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZCAwcyAxbXN9Lm1hdC1mb2N1cy1pbmRpY2F0b3J7cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1tZGMtZm9jdXMtaW5kaWNhdG9ye3Bvc2l0aW9uOnJlbGF0aXZlfTpob3N0e3BhZGRpbmctdG9wOjVweH0uYW5ub3RhdGlvbi10aXRsZXthbGlnbi1pdGVtczpjZW50ZXI7ZGlzcGxheTpmbGV4O2ZvbnQtc2l6ZToxM3B4O2hlaWdodDoyMHB4O3BhZGRpbmc6MCAxMHB4O3VzZXItc2VsZWN0Om5vbmV9LnNlbGVjdGVkLXJvd3tiYWNrZ3JvdW5kLWNvbG9yOiNlMGUwZTA7ZGlzcGxheTpibG9ja30uZmxhZ2dlZC1hbm5vdGF0aW9ue2NvbG9yOiNmNTdjMDB9LmhpZGRlbi1hbm5vdGF0aW9ue2NvbG9yOiM3NTc1NzV9LmFubm90YXRpb24tY2hlY2tib3h7cGFkZGluZy1yaWdodDo1cHh9LmZsYWdnZWQtaWNvbnt0cmFuc2Zvcm06c2NhbGUoMC42KX0uaGlkZGVuLWljb257dHJhbnNmb3JtOnNjYWxlKDAuNil9LmFubm90YXRpb24taWNvbnt0cmFuc2Zvcm06c2NhbGUoMC42KX0uY2hhcnQtZGl2e2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNlYmViZWJ9LmNoYXJ0LXN2Z3t3aWR0aDoxMDAlO3VzZXItc2VsZWN0Om5vbmV9LmRlZmF1bHQtdGV4dHtmaWxsOiMwMDB9LmZsYWctdGV4dHtmaWxsOiNmNTdjMDB9LmhpZGRlbi10ZXh0e2ZpbGw6Izc1NzU3NX0uY2xpY2thYmxlLWFubm90YXRpb257Y3Vyc29yOnBvaW50ZXJ9YnV0dG9ue2FsbDp1bnNldH1cbiddLGVuY2Fwc3VsYXRpb246MixjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoWU90LFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6ImFubm90YXRpb24tY29tcG9uZW50Iix0ZW1wbGF0ZVVybDoiLi9hbm5vdGF0aW9uX2NvbXBvbmVudC5uZy5odG1sIixzdHlsZVVybHM6WyIuL2Fubm90YXRpb25fY29tcG9uZW50LmNzcyJdLGNoYW5nZURldGVjdGlvbjpqbi5PblB1c2gsZW5jYXBzdWxhdGlvbjpXbi5Ob25lfV19XSxudWxsLHtkYXRhOlt7dHlwZTpSX31dLG1heENvdW50Olt7dHlwZTpSX31dLHNlbGVjdGVkQW5ub3RhdGlvbnM6W3t0eXBlOlJffV0sZmxhZ2dlZEFubm90YXRpb25zOlt7dHlwZTpSX31dLGhpZGRlbkFubm90YXRpb25zOlt7dHlwZTpSX31dLGFjdGl2ZU1ldHJpY3M6W3t0eXBlOlJffV0sbnVtQWN0aXZlUnVuczpbe3R5cGU6Ul99XSxzaG93Q291bnRzOlt7dHlwZTpSX31dLGFubm90YXRpb246W3t0eXBlOlJffV0scnVuSGVpZ2h0Olt7dHlwZTpSX31dLGhhc0VtYmVkZGluZzpbe3R5cGU6Ul99XSxzb3J0Olt7dHlwZTpSX31dLHNpZGViYXJXaWR0aDpbe3R5cGU6Ul99XSxjb2xvclNjYWxlOlt7dHlwZTpSX31dLHJ1bklkVG9SdW5zOlt7dHlwZTpSX31dLGFubm90YXRpb25Db250YWluZXI6W3t0eXBlOmFyLGFyZ3M6WyJjaGFydCIse3N0YXRpYzohMCxyZWFkOktofV19XSxjbGlwUGF0aEVsZW1lbnQ6W3t0eXBlOmFyLGFyZ3M6WyJoaW50Q2xpcCIse3N0YXRpYzohMCxyZWFkOktofV19XSxzZWxlY3RlZDpbe3R5cGU6QV8sYXJnczpbImNsYXNzLnNlbGVjdGVkLXJvdyJdfV0sb25SZXNpemU6W3t0eXBlOlRfLGFyZ3M6WyJ3aW5kb3c6cmVzaXplIl19XSxvblNob3dTaW1pbGFyQW5ub3RhdGlvbnM6W3t0eXBlOkVffV19KTtjbGFzcyBxT3R7Y29uc3RydWN0b3IodCl7dGhpcy5zdG9yZT10LHRoaXMuc29ydCQ9dGhpcy5zdG9yZS5zZWxlY3Qobnh0KSx0aGlzLmZsYWdnZWRBbm5vdGF0aW9ucyQ9dGhpcy5zdG9yZS5zZWxlY3QoS3Z0KSx0aGlzLmhpZGRlbkFubm90YXRpb25zJD10aGlzLnN0b3JlLnNlbGVjdChKdnQpLHRoaXMuc2VsZWN0ZWRBbm5vdGF0aW9ucyQ9dGhpcy5zdG9yZS5zZWxlY3QoWHZ0KSx0aGlzLnNob3dDb3VudHMkPXRoaXMuc3RvcmUuc2VsZWN0KHJ4dCksdGhpcy5zaWRlYmFyV2lkdGgkPXRoaXMuc3RvcmUuc2VsZWN0KGN4dCksdGhpcy5ydW5Db2xvclNjYWxlJD10aGlzLnN0b3JlLnNlbGVjdChDSSkucGlwZShWdCgodD0+ZT0+e2lmKCF0Lmhhc093blByb3BlcnR5KGUpKXRocm93IG5ldyBFcnJvcihgW0NvbG9yIHNjYWxlXSB1bmtub3duIHJ1bklkOiAke2V9LmApO3JldHVybiB0W2VdfSkpKSx0aGlzLnJ1bklkVG9SdW5zJD10aGlzLnN0b3JlLnNlbGVjdChYeil9c2hvd1NpbWlsYXJBbm5vdGF0aW9ucygpe3RoaXMuc3RvcmUuZGlzcGF0Y2goU3Z0KHthbm5vdGF0aW9uOnRoaXMuYW5ub3RhdGlvbn0pKX19ZnVuY3Rpb24gWk90KHQsZSl7aWYoMSZ0KXtjb25zdCB0PXdmKCk7Q2YoMCwibnBtaS1hbm5vdGF0aW9uIiw1KSxSZigiY2xpY2siLChmdW5jdGlvbiBlKG4pe2NvbnN0IG89UGkodCkuJGltcGxpY2l0O3JldHVybiB6ZigyKS5yb3dDbGlja2VkKG4sbyl9KSksTWYoKX1pZigyJnQpe2NvbnN0IHQ9ZS4kaW1wbGljaXQsbj16ZigyKTtiZigiZGF0YSIsbi5hbm5vdGF0aW9uc1t0XSkoImFjdGl2ZU1ldHJpY3MiLG4uYWN0aXZlTWV0cmljcykoIm51bUFjdGl2ZVJ1bnMiLG4ubnVtQWN0aXZlUnVucykoIm1heENvdW50IixuLm1heENvdW50KSgiYW5ub3RhdGlvbiIsdCkoInJ1bkhlaWdodCIsbi5ydW5IZWlnaHQpKCJoYXNFbWJlZGRpbmciLG4uZW1iZWRkaW5nRGF0YSYmdm9pZCAwIT09bi5lbWJlZGRpbmdEYXRhW3RdKX19ZnVuY3Rpb24gWE90KHQsZSl7aWYoMSZ0JiYoeGYoMCksdmYoMSwibnBtaS1hbm5vdGF0aW9ucy1saXN0LWxlZ2VuZCIpLHZmKDIsIm5wbWktYW5ub3RhdGlvbnMtbGlzdC1oZWFkZXIiLDIpLENmKDMsImNkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydCIsMyksSG0oNCxaT3QsMSw3LCJucG1pLWFubm90YXRpb24iLDQpLE1mKCksT2YoKSksMiZ0KXtjb25zdCB0PXpmKCk7RGMoMiksYmYoImFubm90YXRpb25zIix0LmFubm90YXRpb25zKSgibnVtQW5ub3RhdGlvbnMiLHQubnVtQW5ub3RhdGlvbnMpKCJhY3RpdmVNZXRyaWNzIix0LmFjdGl2ZU1ldHJpY3MpLERjKDEpLExmKCJpdGVtU2l6ZSIsdC5udW1BY3RpdmVSdW5zKnQucnVuSGVpZ2h0KzI1KSxEYygxKSxiZigiY2RrVmlydHVhbEZvck9mIix0LnNvcnRlZEFubm90YXRpb25zKX19cU90Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxxT3QpKGdmKGlTKSl9LHFPdC7JtWNtcD1zbyh7dHlwZTpxT3Qsc2VsZWN0b3JzOltbIm5wbWktYW5ub3RhdGlvbiJdXSxpbnB1dHM6e2RhdGE6ImRhdGEiLG1heENvdW50OiJtYXhDb3VudCIsYWN0aXZlTWV0cmljczoiYWN0aXZlTWV0cmljcyIsbnVtQWN0aXZlUnVuczoibnVtQWN0aXZlUnVucyIsYW5ub3RhdGlvbjoiYW5ub3RhdGlvbiIscnVuSGVpZ2h0OiJydW5IZWlnaHQiLGhhc0VtYmVkZGluZzoiaGFzRW1iZWRkaW5nIn0sZGVjbHM6OSx2YXJzOjMxLGNvbnN0czpbWzMsImRhdGEiLCJtYXhDb3VudCIsImFjdGl2ZU1ldHJpY3MiLCJudW1BY3RpdmVSdW5zIiwiYW5ub3RhdGlvbiIsInJ1bkhlaWdodCIsImhhc0VtYmVkZGluZyIsInNvcnQiLCJzZWxlY3RlZEFubm90YXRpb25zIiwiZmxhZ2dlZEFubm90YXRpb25zIiwiaGlkZGVuQW5ub3RhdGlvbnMiLCJzaG93Q291bnRzIiwic2lkZWJhcldpZHRoIiwiY29sb3JTY2FsZSIsInJ1bklkVG9SdW5zIiwib25TaG93U2ltaWxhckFubm90YXRpb25zIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihDZigwLCJhbm5vdGF0aW9uLWNvbXBvbmVudCIsMCksUmYoIm9uU2hvd1NpbWlsYXJBbm5vdGF0aW9ucyIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5zaG93U2ltaWxhckFubm90YXRpb25zKCl9KSksX3koMSwiYXN5bmMiKSxfeSgyLCJhc3luYyIpLF95KDMsImFzeW5jIiksX3koNCwiYXN5bmMiKSxfeSg1LCJhc3luYyIpLF95KDYsImFzeW5jIiksX3koNywiYXN5bmMiKSxfeSg4LCJhc3luYyIpLE1mKCkpLDImZSYmYmYoImRhdGEiLG4uZGF0YSkoIm1heENvdW50IixuLm1heENvdW50KSgiYWN0aXZlTWV0cmljcyIsbi5hY3RpdmVNZXRyaWNzKSgibnVtQWN0aXZlUnVucyIsbi5udW1BY3RpdmVSdW5zKSgiYW5ub3RhdGlvbiIsbi5hbm5vdGF0aW9uKSgicnVuSGVpZ2h0IixuLnJ1bkhlaWdodCkoImhhc0VtYmVkZGluZyIsbi5oYXNFbWJlZGRpbmcpKCJzb3J0IixDeSgxLDE1LG4uc29ydCQpKSgic2VsZWN0ZWRBbm5vdGF0aW9ucyIsQ3koMiwxNyxuLnNlbGVjdGVkQW5ub3RhdGlvbnMkKSkoImZsYWdnZWRBbm5vdGF0aW9ucyIsQ3koMywxOSxuLmZsYWdnZWRBbm5vdGF0aW9ucyQpKSgiaGlkZGVuQW5ub3RhdGlvbnMiLEN5KDQsMjEsbi5oaWRkZW5Bbm5vdGF0aW9ucyQpKSgic2hvd0NvdW50cyIsQ3koNSwyMyxuLnNob3dDb3VudHMkKSkoInNpZGViYXJXaWR0aCIsQ3koNiwyNSxuLnNpZGViYXJXaWR0aCQpKSgiY29sb3JTY2FsZSIsQ3koNywyNyxuLnJ1bkNvbG9yU2NhbGUkKSkoInJ1bklkVG9SdW5zIixDeSg4LDI5LG4ucnVuSWRUb1J1bnMkKSl9LGRpcmVjdGl2ZXM6W1lPdF0scGlwZXM6W1Z2XSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKHFPdCxbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJucG1pLWFubm90YXRpb24iLHRlbXBsYXRlOidcbiAgICA8YW5ub3RhdGlvbi1jb21wb25lbnRcbiAgICAgIFtkYXRhXT0iZGF0YSJcbiAgICAgIFttYXhDb3VudF09Im1heENvdW50IlxuICAgICAgW2FjdGl2ZU1ldHJpY3NdPSJhY3RpdmVNZXRyaWNzIlxuICAgICAgW251bUFjdGl2ZVJ1bnNdPSJudW1BY3RpdmVSdW5zIlxuICAgICAgW2Fubm90YXRpb25dPSJhbm5vdGF0aW9uIlxuICAgICAgW3J1bkhlaWdodF09InJ1bkhlaWdodCJcbiAgICAgIFtoYXNFbWJlZGRpbmddPSJoYXNFbWJlZGRpbmciXG4gICAgICBbc29ydF09InNvcnQkIHwgYXN5bmMiXG4gICAgICBbc2VsZWN0ZWRBbm5vdGF0aW9uc109InNlbGVjdGVkQW5ub3RhdGlvbnMkIHwgYXN5bmMiXG4gICAgICBbZmxhZ2dlZEFubm90YXRpb25zXT0iZmxhZ2dlZEFubm90YXRpb25zJCB8IGFzeW5jIlxuICAgICAgW2hpZGRlbkFubm90YXRpb25zXT0iaGlkZGVuQW5ub3RhdGlvbnMkIHwgYXN5bmMiXG4gICAgICBbc2hvd0NvdW50c109InNob3dDb3VudHMkIHwgYXN5bmMiXG4gICAgICBbc2lkZWJhcldpZHRoXT0ic2lkZWJhcldpZHRoJCB8IGFzeW5jIlxuICAgICAgW2NvbG9yU2NhbGVdPSJydW5Db2xvclNjYWxlJCB8IGFzeW5jIlxuICAgICAgW3J1bklkVG9SdW5zXT0icnVuSWRUb1J1bnMkIHwgYXN5bmMiXG4gICAgICAob25TaG93U2ltaWxhckFubm90YXRpb25zKT0ic2hvd1NpbWlsYXJBbm5vdGF0aW9ucygpIlxuICAgID48L2Fubm90YXRpb24tY29tcG9uZW50PlxuICAnLGNoYW5nZURldGVjdGlvbjpqbi5PblB1c2h9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTppU31dfSkse2RhdGE6W3t0eXBlOlJffV0sbWF4Q291bnQ6W3t0eXBlOlJffV0sYWN0aXZlTWV0cmljczpbe3R5cGU6Ul99XSxudW1BY3RpdmVSdW5zOlt7dHlwZTpSX31dLGFubm90YXRpb246W3t0eXBlOlJffV0scnVuSGVpZ2h0Olt7dHlwZTpSX31dLGhhc0VtYmVkZGluZzpbe3R5cGU6Ul99XX0pO2NsYXNzIEtPdHtjb25zdHJ1Y3Rvcigpe3RoaXMub25Sb3dDbGljaz1uZXcgU3ksdGhpcy5ydW5IZWlnaHQ9MzB9cm93Q2xpY2tlZCh0LGUpe2lmKHQuc2hpZnRLZXkpe2xldCB0PXRoaXMuc29ydGVkQW5ub3RhdGlvbnMuaW5kZXhPZihlKTtpZigwPT09dGhpcy5zZWxlY3RlZEFubm90YXRpb25zLmxlbmd0aCl0aGlzLm9uUm93Q2xpY2suZW1pdCh0aGlzLnNvcnRlZEFubm90YXRpb25zLnNsaWNlKDAsdCsxKSk7ZWxzZXtjb25zdCBlPXRoaXMuc29ydGVkQW5ub3RhdGlvbnMuaW5kZXhPZih0aGlzLnNlbGVjdGVkQW5ub3RhdGlvbnNbdGhpcy5zZWxlY3RlZEFubm90YXRpb25zLmxlbmd0aC0xXSk7dGhpcy5vblJvd0NsaWNrLmVtaXQoZTx0P3RoaXMuc29ydGVkQW5ub3RhdGlvbnMuc2xpY2UoZSx0KzEpOnRoaXMuc29ydGVkQW5ub3RhdGlvbnMuc2xpY2UodCxlKzEpKX19ZWxzZSB0aGlzLm9uUm93Q2xpY2suZW1pdChbZV0pfX1LT3QuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEtPdCl9LEtPdC7JtWNtcD1zbyh7dHlwZTpLT3Qsc2VsZWN0b3JzOltbImFubm90YXRpb25zLWxpc3QtY29tcG9uZW50Il1dLGlucHV0czp7YW5ub3RhdGlvbnM6ImFubm90YXRpb25zIixlbWJlZGRpbmdEYXRhOiJlbWJlZGRpbmdEYXRhIixhbm5vdGF0aW9uc0V4cGFuZGVkOiJhbm5vdGF0aW9uc0V4cGFuZGVkIixudW1Bbm5vdGF0aW9uczoibnVtQW5ub3RhdGlvbnMiLGFubm90YXRpb25Tb3J0OiJhbm5vdGF0aW9uU29ydCIsYWN0aXZlTWV0cmljczoiYWN0aXZlTWV0cmljcyIsbnVtQWN0aXZlUnVuczoibnVtQWN0aXZlUnVucyIsc29ydGVkQW5ub3RhdGlvbnM6InNvcnRlZEFubm90YXRpb25zIixzZWxlY3RlZEFubm90YXRpb25zOiJzZWxlY3RlZEFubm90YXRpb25zIixtYXhDb3VudDoibWF4Q291bnQifSxvdXRwdXRzOntvblJvd0NsaWNrOiJvblJvd0NsaWNrIn0sZGVjbHM6Mix2YXJzOjMsY29uc3RzOltbMywibnVtQW5ub3RhdGlvbnMiLCJleHBhbmRlZCJdLFs0LCJuZ0lmIl0sWzMsImFubm90YXRpb25zIiwibnVtQW5ub3RhdGlvbnMiLCJhY3RpdmVNZXRyaWNzIl0sWyJtaW5CdWZmZXJQeCIsIjMwMCIsIm1heEJ1ZmZlclB4IiwiNjAwIiwxLCJhbm5vdGF0aW9uLXJvd3MiLDMsIml0ZW1TaXplIl0sWzMsImRhdGEiLCJhY3RpdmVNZXRyaWNzIiwibnVtQWN0aXZlUnVucyIsIm1heENvdW50IiwiYW5ub3RhdGlvbiIsInJ1bkhlaWdodCIsImhhc0VtYmVkZGluZyIsImNsaWNrIiw0LCJjZGtWaXJ0dWFsRm9yIiwiY2RrVmlydHVhbEZvck9mIl0sWzMsImRhdGEiLCJhY3RpdmVNZXRyaWNzIiwibnVtQWN0aXZlUnVucyIsIm1heENvdW50IiwiYW5ub3RhdGlvbiIsInJ1bkhlaWdodCIsImhhc0VtYmVkZGluZyIsImNsaWNrIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJih2ZigwLCJucG1pLWFubm90YXRpb25zLWxpc3QtdG9vbGJhciIsMCksSG0oMSxYT3QsNSw1LCJuZy1jb250YWluZXIiLDEpKSwyJmUmJihiZigibnVtQW5ub3RhdGlvbnMiLG4ubnVtQW5ub3RhdGlvbnMpKCJleHBhbmRlZCIsbi5hbm5vdGF0aW9uc0V4cGFuZGVkKSxEYygxKSxiZigibmdJZiIsbi5hbm5vdGF0aW9uc0V4cGFuZGVkKSl9LGRpcmVjdGl2ZXM6W1RPdCxQdixJT3QsQk90LHRCLFhMLG5CLHFPdF0sc3R5bGVzOlsnLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjEycHg7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtYmFkZ2Utc21hbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6OXB4fS5tYXQtYmFkZ2UtbGFyZ2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweH0ubWF0LWgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1oZWFkbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMjRweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNnB4LzI4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNXB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC44MykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtaDZbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuNjcpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWJvZHktc3Ryb25nW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjAgMCAxMnB4fS5tYXQtc21hbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDEycHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjMwMCAxMTJweC8xMTJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDVlbTttYXJnaW46MCAwIDU2cHh9Lm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDU2cHgvNTZweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDJlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDQ1cHgvNDhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDA1ZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAzNHB4LzQwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDY0cHh9Lm1hdC1ib3R0b20tc2hlZXQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhcmQtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjIwcHh9Lm1hdC1jYXJkLXN1YnRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXJkLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNoZWNrYm94LWxheW91dFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoyNHB4fS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtdHJhaWxpbmctaWNvbi5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MThweH0ubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1oZWFkZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9vdGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2FsZW5kYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhbGVuZGFyLWJvZHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxM3B4fS5tYXQtY2FsZW5kYXItYm9keS1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FsZW5kYXItcGVyaW9kLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRoW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo0MDB9Lm1hdC1kaWFsb2ctdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDoxLjEyNTtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE1MCU7bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS41ZW07d2lkdGg6MS41ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNWVtIDA7Ym9yZGVyLXRvcDouODQzNzVlbSBzb2xpZCB0cmFuc3BhcmVudH0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTAuODQzNzVlbTtwYWRkaW5nLXRvcDouODQzNzVlbX0ubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo3NSU7bWFyZ2luLXRvcDouNjY2NjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjc5MTY2NjY2NjdlbSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNDM3NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMnB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTJlbSkgc2NhbGUoMC43NSl9fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi4yNWVtIDAgLjc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMDkzNzVlbTttYXJnaW4tdG9wOi0wLjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjFlbSAwIDFlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS44NDM3NWVtO21hcmdpbi10b3A6LTAuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9aW5wdXQubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LTAuMDYyNWVtfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweH0ubWF0LXJhZGlvLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW19Lm1hdC1zbGlkZS10b2dnbGUtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXN0ZXAtc3ViLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDpub3JtYWx9Lm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRhYi1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowfS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMHB4O3BhZGRpbmctdG9wOjZweDtwYWRkaW5nLWJvdHRvbTo2cHh9Lm1hdC10b29sdGlwLWhhbmRzZXRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHh9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1zaW1wbGUtc25hY2tiYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjE7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo1MDB9Lm1hdC10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW5lc3RlZC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweH0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmVtcHR5KXt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKX0ubWF0LXJpcHBsZS5tYXQtcmlwcGxlLXVuYm91bmRlZFtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6dmlzaWJsZX0ubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItcmFkaXVzOjUwJTtwb2ludGVyLWV2ZW50czpub25lO3RyYW5zaXRpb246b3BhY2l0eSx0cmFuc2Zvcm0gMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO3RyYW5zZm9ybTpzY2FsZSgwKX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6bm9uZX0uY2RrLXZpc3VhbGx5LWhpZGRlbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjA7Y2xpcDpyZWN0KDAgMCAwIDApO2hlaWdodDoxcHg7bWFyZ2luOi0xcHg7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxcHg7d2hpdGUtc3BhY2U6bm93cmFwO291dGxpbmU6MDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb2ludGVyLWV2ZW50czpub25lO3RvcDowO2xlZnQ6MDtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXTplbXB0eXtkaXNwbGF5Om5vbmV9LmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1wYW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtwb2ludGVyLWV2ZW50czphdXRvO2JveC1zaXppbmc6Ym9yZGVyLWJveDt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O21heC13aWR0aDoxMDAlO21heC1oZWlnaHQ6MTAwJX0uY2RrLW92ZXJsYXktYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO2xlZnQ6MDtyaWdodDowO3otaW5kZXg6MTAwMDtwb2ludGVyLWV2ZW50czphdXRvOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudDt0cmFuc2l0aW9uOm9wYWNpdHkgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSk7b3BhY2l0eTowfS5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjF9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAuY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTouNn0uY2RrLW92ZXJsYXktZGFyay1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4zMil9LmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MH0uY2RrLW92ZXJsYXktY29ubmVjdGVkLXBvc2l0aW9uLWJvdW5kaW5nLWJveFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bWluLXdpZHRoOjFweDttaW4taGVpZ2h0OjFweH0uY2RrLWdsb2JhbC1zY3JvbGxibG9ja1tfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7d2lkdGg6MTAwJTtvdmVyZmxvdy15OnNjcm9sbH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemVbX25nY29udGVudC0lQ09NUCVde3Jlc2l6ZTpub25lfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmdbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OmF1dG8gIWltcG9ydGFudDtvdmVyZmxvdzpoaWRkZW4gIWltcG9ydGFudH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nLWZpcmVmb3hbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OjAgIWltcG9ydGFudH1Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0e31Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZHt9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbHthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnQgMHMgMW1zfS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCg6LXdlYmtpdC1hdXRvZmlsbCl7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZCAwcyAxbXN9Lm1hdC1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtbWRjLWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9W19uZ2hvc3QtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Ym9yZGVyOjFweCBzb2xpZCAjZWJlYmViO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47aGVpZ2h0OmNhbGMoMTAwJSAtIDJweCk7d2lkdGg6Y2FsYygxMDAlIC0gMnB4KX0uYW5ub3RhdGlvbi1yb3dzW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2ZsZXg6MSAxO292ZXJmbG93LXk6YXV0b30nXSxjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoS090LFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6ImFubm90YXRpb25zLWxpc3QtY29tcG9uZW50Iix0ZW1wbGF0ZVVybDoiLi9hbm5vdGF0aW9uc19saXN0X2NvbXBvbmVudC5uZy5odG1sIixzdHlsZVVybHM6WyIuL2Fubm90YXRpb25zX2xpc3RfY29tcG9uZW50LmNzcyJdLGNoYW5nZURldGVjdGlvbjpqbi5PblB1c2h9XX1dLG51bGwse2Fubm90YXRpb25zOlt7dHlwZTpSX31dLGVtYmVkZGluZ0RhdGE6W3t0eXBlOlJffV0sYW5ub3RhdGlvbnNFeHBhbmRlZDpbe3R5cGU6Ul99XSxudW1Bbm5vdGF0aW9uczpbe3R5cGU6Ul99XSxhbm5vdGF0aW9uU29ydDpbe3R5cGU6Ul99XSxhY3RpdmVNZXRyaWNzOlt7dHlwZTpSX31dLG51bUFjdGl2ZVJ1bnM6W3t0eXBlOlJffV0sc29ydGVkQW5ub3RhdGlvbnM6W3t0eXBlOlJffV0sc2VsZWN0ZWRBbm5vdGF0aW9uczpbe3R5cGU6Ul99XSxtYXhDb3VudDpbe3R5cGU6Ul99XSxvblJvd0NsaWNrOlt7dHlwZTpFX31dfSk7Y2xhc3MgSk90e2NvbnN0cnVjdG9yKHQpe3RoaXMuc3RvcmU9dCx0aGlzLmFubm90YXRpb25zRXhwYW5kZWQkPXRoaXMuc3RvcmUucGlwZShyUyhpeHQpKSx0aGlzLmFjdGl2ZVJ1bnMkPXRoaXMuc3RvcmUucGlwZShyUyhfSSkpLnBpcGUoVnQoKHQ9PnQ/QXJyYXkuZnJvbSh0LmVudHJpZXMoKSkuZmlsdGVyKCh0PT50WzFdKSkubWFwKCh0PT50WzBdKSk6W10pKSksdGhpcy5lbWJlZGRpbmdEYXRhJD10aGlzLnN0b3JlLnBpcGUoclMoWnZ0KSksdGhpcy5udW1BY3RpdmVSdW5zJD10aGlzLmFjdGl2ZVJ1bnMkLnBpcGUoVnQoKHQ9PnQubGVuZ3RoKSkpLHRoaXMuYWN0aXZlTWV0cmljcyQ9S3QoW3RoaXMuc3RvcmUuc2VsZWN0KHF2dCksdGhpcy5hY3RpdmVSdW5zJCx0aGlzLnN0b3JlLnNlbGVjdChleHQpXSkucGlwZShWdCgoKFt0LGUsbl0pPT57bGV0IG89W107Zm9yKGNvbnN0IG4gb2YgZSl0W25dJiYobz1vLmNvbmNhdCh0W25dLmZpbHRlcigodD0+Tl90KHQpKSkpKTtyZXR1cm4gbz1bLi4ubmV3IFNldChbLi4uT2JqZWN0LmtleXMobiksLi4ub10pXSxvfSkpKSx0aGlzLnZpc2libGVBbm5vdGF0aW9ucyQ9S3QoW3RoaXMuc3RvcmUuc2VsZWN0KFl2dCksdGhpcy5zdG9yZS5zZWxlY3QoSnZ0KSx0aGlzLnN0b3JlLnNlbGVjdChzeHQpXSkucGlwZShWdCgoKFt0LGUsbl0pPT5vT3QodCxlLG4pKSkpLHRoaXMuZmlsdGVyZWRBbm5vdGF0aW9ucyQ9S3QoW3RoaXMudmlzaWJsZUFubm90YXRpb25zJCx0aGlzLnN0b3JlLnNlbGVjdCh0eHQpLHRoaXMuc3RvcmUuc2VsZWN0KGV4dCksdGhpcy5hY3RpdmVSdW5zJCx0aGlzLmFjdGl2ZU1ldHJpY3MkLHRoaXMuc3RvcmUuc2VsZWN0KFF2dCldKS5waXBlKFZ0KCgoW3QsZSxuLG8saSxhXSk9Pm5PdCh0LG8sZSxuLGksYSkpKSkucGlwZShJZSgpKSx0aGlzLm51bUFubm90YXRpb25zJD10aGlzLmZpbHRlcmVkQW5ub3RhdGlvbnMkLnBpcGUoVnQoKHQ9Pk9iamVjdC5rZXlzKHQpLmxlbmd0aCkpKSx0aGlzLnNvcnRlZEFubm90YXRpb25zJD1LdChbdGhpcy5maWx0ZXJlZEFubm90YXRpb25zJCx0aGlzLnN0b3JlLnBpcGUoclMobnh0KSksdGhpcy5lbWJlZGRpbmdEYXRhJF0pLnBpcGUoVnQoKChbdCxlLG5dKT0+cE90KHQsZSxuKSkpKSx0aGlzLnNlbGVjdGVkQW5ub3RhdGlvbnMkPXRoaXMuc3RvcmUucGlwZShyUyhYdnQpKSx0aGlzLm1heENvdW50JD10aGlzLmZpbHRlcmVkQW5ub3RhdGlvbnMkLnBpcGUoVnQoKHQ9PntsZXQgZT0wO3JldHVybiBPYmplY3QudmFsdWVzKHQpLmZvckVhY2goKHQ9Pnt0LmZvckVhY2goKHQ9Pnt0LmNvdW50VmFsdWUmJihlPU1hdGgubWF4KGUsdC5jb3VudFZhbHVlKSl9KSl9KSksZX0pKSl9cm93Q2xpY2tlZCh0KXt0aGlzLnN0b3JlLmRpc3BhdGNoKGJ2dCh7YW5ub3RhdGlvbnM6dH0pKX19Sk90Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxKT3QpKGdmKGlTKSl9LEpPdC7JtWNtcD1zbyh7dHlwZTpKT3Qsc2VsZWN0b3JzOltbIm5wbWktYW5ub3RhdGlvbnMtbGlzdCJdXSxkZWNsczoxMCx2YXJzOjI3LGNvbnN0czpbWzMsImFubm90YXRpb25zIiwiZW1iZWRkaW5nRGF0YSIsImFubm90YXRpb25zRXhwYW5kZWQiLCJudW1Bbm5vdGF0aW9ucyIsImFjdGl2ZU1ldHJpY3MiLCJudW1BY3RpdmVSdW5zIiwic29ydGVkQW5ub3RhdGlvbnMiLCJzZWxlY3RlZEFubm90YXRpb25zIiwibWF4Q291bnQiLCJvblJvd0NsaWNrIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihDZigwLCJhbm5vdGF0aW9ucy1saXN0LWNvbXBvbmVudCIsMCksUmYoIm9uUm93Q2xpY2siLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLnJvd0NsaWNrZWQoZSl9KSksX3koMSwiYXN5bmMiKSxfeSgyLCJhc3luYyIpLF95KDMsImFzeW5jIiksX3koNCwiYXN5bmMiKSxfeSg1LCJhc3luYyIpLF95KDYsImFzeW5jIiksX3koNywiYXN5bmMiKSxfeSg4LCJhc3luYyIpLF95KDksImFzeW5jIiksTWYoKSksMiZlJiZiZigiYW5ub3RhdGlvbnMiLEN5KDEsOSxuLmZpbHRlcmVkQW5ub3RhdGlvbnMkKSkoImVtYmVkZGluZ0RhdGEiLEN5KDIsMTEsbi5lbWJlZGRpbmdEYXRhJCkpKCJhbm5vdGF0aW9uc0V4cGFuZGVkIixDeSgzLDEzLG4uYW5ub3RhdGlvbnNFeHBhbmRlZCQpKSgibnVtQW5ub3RhdGlvbnMiLEN5KDQsMTUsbi5udW1Bbm5vdGF0aW9ucyQpKSgiYWN0aXZlTWV0cmljcyIsQ3koNSwxNyxuLmFjdGl2ZU1ldHJpY3MkKSkoIm51bUFjdGl2ZVJ1bnMiLEN5KDYsMTksbi5udW1BY3RpdmVSdW5zJCkpKCJzb3J0ZWRBbm5vdGF0aW9ucyIsQ3koNywyMSxuLnNvcnRlZEFubm90YXRpb25zJCkpKCJzZWxlY3RlZEFubm90YXRpb25zIixDeSg4LDIzLG4uc2VsZWN0ZWRBbm5vdGF0aW9ucyQpKSgibWF4Q291bnQiLEN5KDksMjUsbi5tYXhDb3VudCQpKX0sZGlyZWN0aXZlczpbS090XSxwaXBlczpbVnZdLGVuY2Fwc3VsYXRpb246MixjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoSk90LFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6Im5wbWktYW5ub3RhdGlvbnMtbGlzdCIsdGVtcGxhdGU6J1xuICAgIDxhbm5vdGF0aW9ucy1saXN0LWNvbXBvbmVudFxuICAgICAgW2Fubm90YXRpb25zXT0iZmlsdGVyZWRBbm5vdGF0aW9ucyQgfCBhc3luYyJcbiAgICAgIFtlbWJlZGRpbmdEYXRhXT0iZW1iZWRkaW5nRGF0YSQgfCBhc3luYyJcbiAgICAgIFthbm5vdGF0aW9uc0V4cGFuZGVkXT0iYW5ub3RhdGlvbnNFeHBhbmRlZCQgfCBhc3luYyJcbiAgICAgIFtudW1Bbm5vdGF0aW9uc109Im51bUFubm90YXRpb25zJCB8IGFzeW5jIlxuICAgICAgW2FjdGl2ZU1ldHJpY3NdPSJhY3RpdmVNZXRyaWNzJCB8IGFzeW5jIlxuICAgICAgW251bUFjdGl2ZVJ1bnNdPSJudW1BY3RpdmVSdW5zJCB8IGFzeW5jIlxuICAgICAgW3NvcnRlZEFubm90YXRpb25zXT0ic29ydGVkQW5ub3RhdGlvbnMkIHwgYXN5bmMiXG4gICAgICBbc2VsZWN0ZWRBbm5vdGF0aW9uc109InNlbGVjdGVkQW5ub3RhdGlvbnMkIHwgYXN5bmMiXG4gICAgICBbbWF4Q291bnRdPSJtYXhDb3VudCQgfCBhc3luYyJcbiAgICAgIChvblJvd0NsaWNrKT0icm93Q2xpY2tlZCgkZXZlbnQpIlxuICAgID48L2Fubm90YXRpb25zLWxpc3QtY29tcG9uZW50PlxuICAnLGNoYW5nZURldGVjdGlvbjpqbi5PblB1c2h9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTppU31dfSksbnVsbCk7Y29uc3QgUU90PVsiY2hhcnQiXTtjbGFzcyAkT3R7Y29uc3RydWN0b3IoKXt0aGlzLndpZHRoPTAsdGhpcy5jaGFydFdpZHRoPTAsdGhpcy5oZWlnaHQ9MzAwLHRoaXMubWFyZ2luPXt0b3A6MjAscmlnaHQ6NDAsYm90dG9tOjIwLGxlZnQ6NDB9LHRoaXMuY2hhcnRIZWlnaHQ9dGhpcy5oZWlnaHQtdGhpcy5tYXJnaW4udG9wLXRoaXMubWFyZ2luLmJvdHRvbX1vblJlc2l6ZSh0KXt0aGlzLnJlZHJhdygpfW5nQWZ0ZXJWaWV3SW5pdCgpe3RoaXMuc3ZnPW44KHRoaXMuc3ZnRWxlbWVudC5uYXRpdmVFbGVtZW50KSx0aGlzLm1haW5Db250YWluZXI9dGhpcy5zdmcuYXBwZW5kKCJnIikuYXR0cigidHJhbnNmb3JtIixgdHJhbnNsYXRlKCR7dGhpcy5tYXJnaW4ubGVmdH0sICR7dGhpcy5tYXJnaW4udG9wfSlgKSx0aGlzLmNvb3JkaW5hdGVzR3JvdXA9dGhpcy5tYWluQ29udGFpbmVyLmFwcGVuZCgiZyIpLHRoaXMubGFiZWxzR3JvdXA9dGhpcy5tYWluQ29udGFpbmVyLmFwcGVuZCgiZyIpLHRoaXMuYXhpc0dyb3VwPXRoaXMubWFpbkNvbnRhaW5lci5hcHBlbmQoImciKSx0aGlzLnhTY2FsZT0kbnQoKS5wYWRkaW5nKC4xKSx0aGlzLnlTY2FsZT1tb3QoKS5yYW5nZShbdGhpcy5jaGFydEhlaWdodCwwXSksdGhpcy55QXhpcz1MNih0aGlzLnlTY2FsZSksdGhpcy5yZWRyYXcoKX1uZ09uQ2hhbmdlcyh0KXt0aGlzLnN2ZyYmdGhpcy5yZWRyYXcoKX1yZWRyYXcoKXt0aGlzLnVwZGF0ZURpbWVuc2lvbnMoKSx0aGlzLnVwZGF0ZUF4ZXMoKSx0aGlzLmRyYXcoKX11cGRhdGVEaW1lbnNpb25zKCl7dGhpcy53aWR0aD10aGlzLnN2Z0VsZW1lbnQubmF0aXZlRWxlbWVudC5jbGllbnRXaWR0aHx8MTAsdGhpcy5jaGFydFdpZHRoPXRoaXMud2lkdGgtdGhpcy5tYXJnaW4ubGVmdC10aGlzLm1hcmdpbi5yaWdodH11cGRhdGVBeGVzKCl7dGhpcy54U2NhbGUucmFuZ2VSb3VuZChbMCx0aGlzLmNoYXJ0V2lkdGhdKS5kb21haW4odGhpcy5hY3RpdmVNZXRyaWNzKSx0aGlzLnlTY2FsZS5kb21haW4oW3RoaXMuY29vcmRpbmF0ZURhdGEuZXh0cmVtZXMubWluLHRoaXMuY29vcmRpbmF0ZURhdGEuZXh0cmVtZXMubWF4XSl9ZHJhdygpe3RoaXMuZHJhd0F4ZXMoKSx0aGlzLmRyYXdBeGlzTGFiZWxzKCksdGhpcy5kcmF3Q29vcmRpbmF0ZXMoKSx0aGlzLmRyYXdMYWJlbHMoKX1kcmF3QXhlcygpe2NvbnN0IHQ9dGhpcy5heGlzR3JvdXAuc2VsZWN0QWxsKCIuYXhpcy15IikuZGF0YSh0aGlzLmFjdGl2ZU1ldHJpY3MpO3QuZW50ZXIoKS5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsImF4aXMteSIpLm1lcmdlKHQpLmF0dHIoInRyYW5zZm9ybSIsZnVuY3Rpb24odCl7cmV0dXJuYHRyYW5zbGF0ZSgke3RoaXMueFNjYWxlKHQpfSwgMClgfS5iaW5kKHRoaXMpKS5jYWxsKHRoaXMueUF4aXMpLHQuZXhpdCgpLnJlbW92ZSgpfWRyYXdBeGlzTGFiZWxzKCl7Y29uc3QgdD10aGlzLmF4aXNHcm91cC5zZWxlY3RBbGwoIi5heGlzLWJnLXRleHQiKS5kYXRhKHRoaXMuYWN0aXZlTWV0cmljcyk7dC5lbnRlcigpLmFwcGVuZCgidGV4dCIpLmF0dHIoImNsYXNzIiwiYXhpcy1iZy10ZXh0IikuYXR0cigiZm9udC1zaXplIiwiMTNweCIpLmF0dHIoInN0cm9rZS13aWR0aCIsMikuYXR0cigic3Ryb2tlLWxpbmVqb2luIiwicm91bmQiKS5hdHRyKCJzdHJva2UiLCJ3aGl0ZSIpLm1lcmdlKHQpLnRleHQoKHQ9PnQpKS5hdHRyKCJ0cmFuc2Zvcm0iLGZ1bmN0aW9uKHQpe3JldHVybmB0cmFuc2xhdGUoJHt0aGlzLnhTY2FsZSh0KS01fSwgJHt0aGlzLnlTY2FsZSh0aGlzLmNvb3JkaW5hdGVEYXRhLmV4dHJlbWVzLm1pbil9KSByb3RhdGUoLTkwKWB9LmJpbmQodGhpcykpLHQuZXhpdCgpLnJlbW92ZSgpO2NvbnN0IGU9dGhpcy5heGlzR3JvdXAuc2VsZWN0QWxsKCIuYXhpcy10ZXh0IikuZGF0YSh0aGlzLmFjdGl2ZU1ldHJpY3MpO2UuZW50ZXIoKS5hcHBlbmQoInRleHQiKS5hdHRyKCJmb250LXNpemUiLCIxM3B4IikuYXR0cigiY2xhc3MiLCJheGlzLXRleHQiKS5tZXJnZShlKS50ZXh0KCh0PT50KSkuYXR0cigidHJhbnNmb3JtIixmdW5jdGlvbih0KXtyZXR1cm5gdHJhbnNsYXRlKCR7dGhpcy54U2NhbGUodCktNX0sICR7dGhpcy55U2NhbGUodGhpcy5jb29yZGluYXRlRGF0YS5leHRyZW1lcy5taW4pfSkgcm90YXRlKC05MClgfS5iaW5kKHRoaXMpKSxlLmV4aXQoKS5yZW1vdmUoKX1kcmF3Q29vcmRpbmF0ZXMoKXtjb25zdCB0PXRoaXMuY29vcmRpbmF0ZXNHcm91cC5zZWxlY3RBbGwoIi5jb29yZCIpLmRhdGEodGhpcy5jb29yZGluYXRlRGF0YS5jb29yZGluYXRlcyk7dC5lbnRlcigpLmFwcGVuZCgicGF0aCIpLmF0dHIoImNsYXNzIiwiY29vcmQiKS5hdHRyKCJmaWxsIiwibm9uZSIpLm1lcmdlKHQpLmF0dHIoImQiLHRoaXMucGF0aC5iaW5kKHRoaXMpKS5hdHRyKCJzdHJva2UiLGZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmNvbG9yU2NhbGUodC5ydW5JZCl9LmJpbmQodGhpcykpLHQuZXhpdCgpLnJlbW92ZSgpO2NvbnN0IGU9dGhpcy5jb29yZGluYXRlc0dyb3VwLnNlbGVjdEFsbCgiLmhpZGRlbkNvb3JkIikuZGF0YSh0aGlzLmNvb3JkaW5hdGVEYXRhLmNvb3JkaW5hdGVzKTtlLmVudGVyKCkuYXBwZW5kKCJwYXRoIikuYXR0cigiY2xhc3MiLCJoaWRkZW5Db29yZCIpLmF0dHIoInN0cm9rZS13aWR0aCIsIjEwcHgiKS5hdHRyKCJmaWxsIiwibm9uZSIpLmF0dHIoInN0cm9rZSIsInJnYmEoMCwgMCwgMCwgMC4wKSIpLm9uKCJtb3VzZW92ZXIiLHRoaXMuaGFuZGxlQ29vcmRpbmF0ZU1vdXNlT3Zlci5iaW5kKHRoaXMpKS5vbigibW91c2VvdXQiLHRoaXMuaGFuZGxlQ29vcmRpbmF0ZU1vdXNlT3V0LmJpbmQodGhpcykpLm1lcmdlKGUpLmF0dHIoImQiLHRoaXMucGF0aC5iaW5kKHRoaXMpKSxlLmV4aXQoKS5yZW1vdmUoKX1wYXRoKHQpe3JldHVybiB0LnZhbHVlcy5zb3J0KCgodCxlKT0+dGhpcy5hY3RpdmVNZXRyaWNzLmluZGV4T2YodC5tZXRyaWMpLXRoaXMuYWN0aXZlTWV0cmljcy5pbmRleE9mKGUubWV0cmljKSkpLExhdCgpKHQudmFsdWVzLm1hcChmdW5jdGlvbih0KXtsZXQgZT10aGlzLnlTY2FsZSh0Lm5QTUlWYWx1ZSk7cmV0dXJuW3RoaXMueFNjYWxlKHQubWV0cmljKSxlXX0uYmluZCh0aGlzKSkpfWhhbmRsZUNvb3JkaW5hdGVNb3VzZU92ZXIodCxlKXt0aGlzLmxhYmVsc0dyb3VwLnNlbGVjdEFsbCgiLmNvb3JkaW5hdGUtbGFiZWwiKS5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybiEoZS5hbm5vdGF0aW9uPT09dC5hbm5vdGF0aW9uKX0pKS5zdHlsZSgib3BhY2l0eSIsLjEpLHRoaXMuY29vcmRpbmF0ZXNHcm91cC5zZWxlY3RBbGwoIi5jb29yZCIpLmZpbHRlcigoZnVuY3Rpb24oZSl7cmV0dXJuIShlLmFubm90YXRpb249PT10LmFubm90YXRpb24pfSkpLnN0eWxlKCJvcGFjaXR5IiwuMSl9aGFuZGxlQ29vcmRpbmF0ZU1vdXNlT3V0KCl7dGhpcy5sYWJlbHNHcm91cC5zZWxlY3RBbGwoIi5jb29yZGluYXRlLWxhYmVsIikuc3R5bGUoIm9wYWNpdHkiLDEpLHRoaXMuY29vcmRpbmF0ZXNHcm91cC5zZWxlY3RBbGwoIi5jb29yZCIpLnN0eWxlKCJvcGFjaXR5IiwxKX1kcmF3TGFiZWxzKCl7Y29uc3QgdD0zMC90aGlzLnhTY2FsZS5zdGVwKCksZT10aGlzLmNvb3JkaW5hdGVEYXRhLmNvb3JkaW5hdGVzLmxlbmd0aDwzMD90aGlzLmNvb3JkaW5hdGVEYXRhLmNvb3JkaW5hdGVzOltdLG49dGhpcy5sYWJlbHNHcm91cC5zZWxlY3RBbGwoIi5jb29yZGluYXRlLWxhYmVsIikuZGF0YShlKTtuLmVudGVyKCkuYXBwZW5kKCJ0ZXh0IikuYXR0cigiY2xhc3MiLCJjb29yZGluYXRlLWxhYmVsIikuYXR0cigiZm9udC1zaXplIiwiMTBweCIpLm1lcmdlKG4pLnRleHQoKGZ1bmN0aW9uKHQpe3JldHVybiB0LmFubm90YXRpb259KSkuYXR0cigieCIsdGhpcy54U2NhbGUodGhpcy5hY3RpdmVNZXRyaWNzWzBdKSszMCkuYXR0cigieSIsZnVuY3Rpb24oZSl7Y29uc3Qgbj10aGlzLnlTY2FsZShlLnZhbHVlc1swXS5uUE1JVmFsdWU/ZS52YWx1ZXNbMF0ublBNSVZhbHVlOjApLG89dGhpcy55U2NhbGUoZS52YWx1ZXNbMV0ublBNSVZhbHVlP2UudmFsdWVzWzFdLm5QTUlWYWx1ZTowKTtyZXR1cm4oMS10KSpuK3Qqb30uYmluZCh0aGlzKSksbi5leGl0KCkucmVtb3ZlKCl9fSRPdC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8JE90KX0sJE90Lsm1Y21wPXNvKHt0eXBlOiRPdCxzZWxlY3RvcnM6W1sicGFyYWxsZWwtY29vcmRpbmF0ZXMtY29tcG9uZW50Il1dLHZpZXdRdWVyeTpmdW5jdGlvbiB0KGUsbil7aWYoMSZlJiZWeShRT3QsNyxLaCksMiZlKXtsZXQgdDtCeSh0PVV5KCkpJiYobi5zdmdFbGVtZW50PXQuZmlyc3QpfX0saG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJlJmKCJyZXNpemUiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLm9uUmVzaXplKGUpfSksITEsT2wpfSxpbnB1dHM6e2FjdGl2ZU1ldHJpY3M6ImFjdGl2ZU1ldHJpY3MiLGNvb3JkaW5hdGVEYXRhOiJjb29yZGluYXRlRGF0YSIsc2lkZWJhcldpZHRoOiJzaWRlYmFyV2lkdGgiLGNvbG9yU2NhbGU6ImNvbG9yU2NhbGUifSxmZWF0dXJlczpbcW9dLGRlY2xzOjIsdmFyczowLGNvbnN0czpbWzEsInBjLWNoYXJ0Il0sWyJjaGFydCIsIiJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYob2EoKSx2ZigwLCJzdmciLDAsMSkpfSxzdHlsZXM6WyIucGMtY2hhcnRbX25nY29udGVudC0lQ09NUCVde2hlaWdodDozMDBweDt3aWR0aDoxMDAlfSJdLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYigkT3QsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoicGFyYWxsZWwtY29vcmRpbmF0ZXMtY29tcG9uZW50Iix0ZW1wbGF0ZVVybDoiLi9wYXJhbGxlbF9jb29yZGluYXRlc19jb21wb25lbnQubmcuaHRtbCIsc3R5bGVVcmxzOlsiLi9wYXJhbGxlbF9jb29yZGluYXRlc19jb21wb25lbnQuY3NzIl0sY2hhbmdlRGV0ZWN0aW9uOmpuLk9uUHVzaH1dfV0sbnVsbCx7YWN0aXZlTWV0cmljczpbe3R5cGU6Ul99XSxjb29yZGluYXRlRGF0YTpbe3R5cGU6Ul99XSxzaWRlYmFyV2lkdGg6W3t0eXBlOlJffV0sY29sb3JTY2FsZTpbe3R5cGU6Ul99XSxzdmdFbGVtZW50Olt7dHlwZTphcixhcmdzOlsiY2hhcnQiLHtzdGF0aWM6ITAscmVhZDpLaH1dfV0sb25SZXNpemU6W3t0eXBlOlRfLGFyZ3M6WyJ3aW5kb3c6cmVzaXplIixbIiRldmVudCJdXX1dfSk7Y2xhc3MgdFB0e2NvbnN0cnVjdG9yKHQpe3RoaXMuc3RvcmU9dCx0aGlzLmFjdGl2ZVJ1bnMkPXRoaXMuc3RvcmUucGlwZShyUyhfSSkpLnBpcGUoVnQoKHQ9PnQ/QXJyYXkuZnJvbSh0LmVudHJpZXMoKSkuZmlsdGVyKCh0PT50WzFdKSkubWFwKCh0PT50WzBdKSk6W10pKSksdGhpcy5hY3RpdmVNZXRyaWNzJD1LdCh0aGlzLnN0b3JlLnNlbGVjdChxdnQpLHRoaXMuYWN0aXZlUnVucyQsdGhpcy5zdG9yZS5zZWxlY3QoZXh0KSkucGlwZShWdCgoKFt0LGUsbl0pPT57bGV0IG89W107Zm9yKGNvbnN0IG4gb2YgZSl0W25dJiYobz1vLmNvbmNhdCh0W25dLmZpbHRlcigodD0+Tl90KHQpKSkpKTtyZXR1cm4gbz1bLi4ubmV3IFNldChbLi4uT2JqZWN0LmtleXMobiksLi4ub10pXSxvLm1hcCgodD0+el90KHQpKSl9KSkpLHRoaXMuY29vcmRpbmF0ZURhdGEkPUt0KFt0aGlzLnN0b3JlLnNlbGVjdChZdnQpLHRoaXMuc3RvcmUuc2VsZWN0KFh2dCksdGhpcy5hY3RpdmVSdW5zJCx0aGlzLmFjdGl2ZU1ldHJpY3MkXSkucGlwZShWdCgoKFt0LGUsbixvXSk9PihmdW5jdGlvbiBpKHQsZSxuLG8pe2NvbnN0IGk9W10sYT17bWF4Oi0xLG1pbjoxfSxyPW5ldyBTZXQobikscz1uZXcgU2V0KG8pO3JldHVybiAwPT09ci5zaXplfHwwPT09cy5zaXplfHwwPT09T2JqZWN0LmtleXModCkubGVuZ3RoP3tjb29yZGluYXRlczpbXSxleHRyZW1lczp7bWluOi0xLG1heDoxfX06KGUuZm9yRWFjaCgoZT0+e2NvbnN0IG49e307dFtlXS5mb3JFYWNoKCh0PT57ci5oYXModC5ydW4pJiZzLmhhcyh0Lm1ldHJpYykmJihuW3QucnVuXT9uW3QucnVuXS5wdXNoKHQpOm5bdC5ydW5dPVt0XSxudWxsIT09dC5uUE1JVmFsdWU/KGEubWF4PU1hdGgubWF4KGEubWF4LHQublBNSVZhbHVlKSxhLm1pbj1NYXRoLm1pbihhLm1pbix0Lm5QTUlWYWx1ZSkpOihhLm1heD1NYXRoLm1heChhLm1heCwwKSxhLm1pbj1NYXRoLm1pbihhLm1pbiwwKSkpfSkpO2Zvcihjb25zdCB0IG9mIE9iamVjdC5rZXlzKG4pKWkucHVzaCh7YW5ub3RhdGlvbjplLHJ1bklkOnQsdmFsdWVzOm5bdF19KX0pKSxhLm1heDxhLm1pbiYmKGEubWF4PTEsYS5taW49LTEpLHtjb29yZGluYXRlczppLGV4dHJlbWVzOmF9KX0pKHQsZSxuLG8pKSkpLHRoaXMuc2lkZWJhcldpZHRoJD10aGlzLnN0b3JlLnNlbGVjdChjeHQpLHRoaXMucnVuQ29sb3JTY2FsZSQ9dGhpcy5zdG9yZS5zZWxlY3QoQ0kpLnBpcGUoVnQoKHQ9PmU9PntpZighdC5oYXNPd25Qcm9wZXJ0eShlKSl0aHJvdyBuZXcgRXJyb3IoYFtDb2xvciBzY2FsZV0gdW5rbm93biBydW5JZDogJHtlfS5gKTtyZXR1cm4gdFtlXX0pKSl9fWZ1bmN0aW9uIGVQdCh0LGUpezEmdCYmdmYoMCwibWF0LWljb24iLDkpfWZ1bmN0aW9uIG5QdCh0LGUpezEmdCYmdmYoMCwibWF0LWljb24iLDEwKX1mdW5jdGlvbiBvUHQodCxlKXsxJnQmJnZmKDAsIm5wbWktcGFyYWxsZWwtY29vcmRpbmF0ZXMiKX10UHQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHRQdCkoZ2YoaVMpKX0sdFB0Lsm1Y21wPXNvKHt0eXBlOnRQdCxzZWxlY3RvcnM6W1sibnBtaS1wYXJhbGxlbC1jb29yZGluYXRlcyJdXSxkZWNsczo1LHZhcnM6MTIsY29uc3RzOltbMywiYWN0aXZlTWV0cmljcyIsImNvb3JkaW5hdGVEYXRhIiwic2lkZWJhcldpZHRoIiwiY29sb3JTY2FsZSJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYodmYoMCwicGFyYWxsZWwtY29vcmRpbmF0ZXMtY29tcG9uZW50IiwwKSxfeSgxLCJhc3luYyIpLF95KDIsImFzeW5jIiksX3koMywiYXN5bmMiKSxfeSg0LCJhc3luYyIpKSwyJmUmJmJmKCJhY3RpdmVNZXRyaWNzIixDeSgxLDQsbi5hY3RpdmVNZXRyaWNzJCkpKCJjb29yZGluYXRlRGF0YSIsQ3koMiw2LG4uY29vcmRpbmF0ZURhdGEkKSkoInNpZGViYXJXaWR0aCIsQ3koMyw4LG4uc2lkZWJhcldpZHRoJCkpKCJjb2xvclNjYWxlIixDeSg0LDEwLG4ucnVuQ29sb3JTY2FsZSQpKX0sZGlyZWN0aXZlczpbJE90XSxwaXBlczpbVnZdLGVuY2Fwc3VsYXRpb246MixjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIodFB0LFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6Im5wbWktcGFyYWxsZWwtY29vcmRpbmF0ZXMiLHRlbXBsYXRlOidcbiAgICA8cGFyYWxsZWwtY29vcmRpbmF0ZXMtY29tcG9uZW50XG4gICAgICBbYWN0aXZlTWV0cmljc109ImFjdGl2ZU1ldHJpY3MkIHwgYXN5bmMiXG4gICAgICBbY29vcmRpbmF0ZURhdGFdPSJjb29yZGluYXRlRGF0YSQgfCBhc3luYyJcbiAgICAgIFtzaWRlYmFyV2lkdGhdPSJzaWRlYmFyV2lkdGgkIHwgYXN5bmMiXG4gICAgICBbY29sb3JTY2FsZV09InJ1bkNvbG9yU2NhbGUkIHwgYXN5bmMiXG4gICAgPjwvcGFyYWxsZWwtY29vcmRpbmF0ZXMtY29tcG9uZW50PlxuICAnLGNoYW5nZURldGVjdGlvbjpqbi5PblB1c2h9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTppU31dfSksbnVsbCk7Y2xhc3MgaVB0e2NvbnN0cnVjdG9yKCl7dGhpcy5vbkNsZWFyU2VsZWN0ZWRBbm5vdGF0aW9ucz1uZXcgU3ksdGhpcy5vblRvZ2dsZUV4cGFuZGVkPW5ldyBTeX19aVB0Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxpUHQpfSxpUHQuybVjbXA9c28oe3R5cGU6aVB0LHNlbGVjdG9yczpbWyJzZWxlY3RlZC1hbm5vdGF0aW9ucy1jb21wb25lbnQiXV0saW5wdXRzOntwY0V4cGFuZGVkOiJwY0V4cGFuZGVkIixzZWxlY3RlZEFubm90YXRpb25zOiJzZWxlY3RlZEFubm90YXRpb25zIn0sb3V0cHV0czp7b25DbGVhclNlbGVjdGVkQW5ub3RhdGlvbnM6Im9uQ2xlYXJTZWxlY3RlZEFubm90YXRpb25zIixvblRvZ2dsZUV4cGFuZGVkOiJvblRvZ2dsZUV4cGFuZGVkIn0sZGVjbHM6MTEsdmFyczo0LGNvbnN0czpmdW5jdGlvbigpe2xldCB0LGU7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBuZ0kxOG5DbG9zdXJlTW9kZSYmbmdJMThuQ2xvc3VyZU1vZGUpe3Q9Z29vZy5nZXRNc2coIkNsZWFyIEFubm90YXRpb24gU2VsZWN0aW9uIil9ZWxzZSB0PSRsb2NhbGl6ZWA6TGFiZWwgZm9yIGEgYnV0dG9uIHRoYXQgY2xlYXJzIHRoZSBhbm5vdGF0aW9uIHNlbGVjdGlvbi7ikJ8yYjUyMjg5ZjJjNGI3ZjViMTgyZWQyM2M5MTU0NzIyZWNkNDZhMmQ04pCfMjQ5NDY2MDUyMDM0MTMwODgzMDpDbGVhciBBbm5vdGF0aW9uIFNlbGVjdGlvbmA7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBuZ0kxOG5DbG9zdXJlTW9kZSYmbmdJMThuQ2xvc3VyZU1vZGUpe2U9Z29vZy5nZXRNc2coIkV4cGFuZC9IaWRlIFNlbGVjdGVkIEFubm90YXRpb25zIil9ZWxzZSBlPSRsb2NhbGl6ZWA6TGFiZWwgZm9yIGEgYnV0dG9uIHRoYXQgZXhwYW5kcyBvciBoaWRlcyBzZWxlY3RlZCBhbm5vdGF0aW9ucy7ikJ84ZjRhZDMwNWMxOWUzNjU1ZjMxODllM2UyNjRlODNmYjc2ZjdiYjk14pCfNTY3MDc5Nzc4NDA3MDk1MjA5NTpFeHBhbmQvSGlkZSBTZWxlY3RlZCBBbm5vdGF0aW9uc2A7cmV0dXJuW1sxLCJwYy1jb250YWluZXIiXSxbMSwicGMtdG9vbGJhciJdLFsxLCJwYy10aXRsZSJdLFsibWF0LWljb24tYnV0dG9uIiwiIiwiYXJpYS1sYWJlbCIsdCwidGl0bGUiLCJEZXNlbGVjdHMgYWxsIHNlbGVjdGVkIGFubm90YXRpb25zLiIsMSwiY2xlYXItYnV0dG9uIiwzLCJkaXNhYmxlZCIsImNsaWNrIl0sWyJzdmdJY29uIiwiY2xlYXJfMjRweCJdLFsibWF0LWljb24tYnV0dG9uIiwiIiwiYXJpYS1sYWJlbCIsZSwxLCJleHBhbmQtYnV0dG9uIiwzLCJjbGljayJdLFsic3ZnSWNvbiIsImV4cGFuZF9sZXNzXzI0cHgiLCJjbGFzcyIsImV4cGFuZC1sZXNzLWljb24iLDQsIm5nSWYiLCJuZ0lmRWxzZSJdLFsibm90RXhwYW5kZWQiLCIiXSxbNCwibmdJZiJdLFsic3ZnSWNvbiIsImV4cGFuZF9sZXNzXzI0cHgiLDEsImV4cGFuZC1sZXNzLWljb24iXSxbInN2Z0ljb24iLCJleHBhbmRfbW9yZV8yNHB4IiwxLCJleHBhbmQtaWNvbiJdXX0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pe2lmKDEmZSYmKENmKDAsImRpdiIsMCksQ2YoMSwiZGl2IiwxKSxDZigyLCJoMyIsMiksUHUoMywiU2VsZWN0ZWQgQW5ub3RhdGlvbnMiKSxNZigpLENmKDQsImJ1dHRvbiIsMyksUmYoImNsaWNrIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLm9uQ2xlYXJTZWxlY3RlZEFubm90YXRpb25zLmVtaXQoKX0pKSx2Zig1LCJtYXQtaWNvbiIsNCksTWYoKSxDZig2LCJidXR0b24iLDUpLFJmKCJjbGljayIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5vblRvZ2dsZUV4cGFuZGVkLmVtaXQoKX0pKSxIbSg3LGVQdCwxLDAsIm1hdC1pY29uIiw2KSxIbSg4LG5QdCwxLDAsIm5nLXRlbXBsYXRlIixudWxsLDcscXkpLE1mKCksTWYoKSxIbSgxMCxvUHQsMSwwLCJucG1pLXBhcmFsbGVsLWNvb3JkaW5hdGVzIiw4KSxNZigpKSwyJmUpe2NvbnN0IHQ9Rm0oOSk7RGMoNCksYmYoImRpc2FibGVkIiwwPT09bi5zZWxlY3RlZEFubm90YXRpb25zLmxlbmd0aCksRGMoMyksYmYoIm5nSWYiLG4ucGNFeHBhbmRlZCkoIm5nSWZFbHNlIix0KSxEYygzKSxiZigibmdJZiIsbi5wY0V4cGFuZGVkKX19LGRpcmVjdGl2ZXM6W05MLE1xLFB2LHRQdF0sc3R5bGVzOlsnLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjEycHg7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtYmFkZ2Utc21hbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6OXB4fS5tYXQtYmFkZ2UtbGFyZ2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweH0ubWF0LWgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1oZWFkbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMjRweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNnB4LzI4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNXB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC44MykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtaDZbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuNjcpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWJvZHktc3Ryb25nW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjAgMCAxMnB4fS5tYXQtc21hbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDEycHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjMwMCAxMTJweC8xMTJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDVlbTttYXJnaW46MCAwIDU2cHh9Lm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDU2cHgvNTZweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDJlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDQ1cHgvNDhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDA1ZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAzNHB4LzQwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDY0cHh9Lm1hdC1ib3R0b20tc2hlZXQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhcmQtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjIwcHh9Lm1hdC1jYXJkLXN1YnRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXJkLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNoZWNrYm94LWxheW91dFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoyNHB4fS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtdHJhaWxpbmctaWNvbi5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MThweH0ubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1oZWFkZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9vdGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2FsZW5kYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhbGVuZGFyLWJvZHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxM3B4fS5tYXQtY2FsZW5kYXItYm9keS1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FsZW5kYXItcGVyaW9kLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRoW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo0MDB9Lm1hdC1kaWFsb2ctdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDoxLjEyNTtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE1MCU7bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS41ZW07d2lkdGg6MS41ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNWVtIDA7Ym9yZGVyLXRvcDouODQzNzVlbSBzb2xpZCB0cmFuc3BhcmVudH0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTAuODQzNzVlbTtwYWRkaW5nLXRvcDouODQzNzVlbX0ubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo3NSU7bWFyZ2luLXRvcDouNjY2NjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjc5MTY2NjY2NjdlbSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNDM3NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMnB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTJlbSkgc2NhbGUoMC43NSl9fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi4yNWVtIDAgLjc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMDkzNzVlbTttYXJnaW4tdG9wOi0wLjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjFlbSAwIDFlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS44NDM3NWVtO21hcmdpbi10b3A6LTAuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9aW5wdXQubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LTAuMDYyNWVtfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweH0ubWF0LXJhZGlvLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW19Lm1hdC1zbGlkZS10b2dnbGUtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXN0ZXAtc3ViLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDpub3JtYWx9Lm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRhYi1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowfS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMHB4O3BhZGRpbmctdG9wOjZweDtwYWRkaW5nLWJvdHRvbTo2cHh9Lm1hdC10b29sdGlwLWhhbmRzZXRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHh9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1zaW1wbGUtc25hY2tiYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjE7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo1MDB9Lm1hdC10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW5lc3RlZC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweH0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmVtcHR5KXt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKX0ubWF0LXJpcHBsZS5tYXQtcmlwcGxlLXVuYm91bmRlZFtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6dmlzaWJsZX0ubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItcmFkaXVzOjUwJTtwb2ludGVyLWV2ZW50czpub25lO3RyYW5zaXRpb246b3BhY2l0eSx0cmFuc2Zvcm0gMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO3RyYW5zZm9ybTpzY2FsZSgwKX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6bm9uZX0uY2RrLXZpc3VhbGx5LWhpZGRlbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjA7Y2xpcDpyZWN0KDAgMCAwIDApO2hlaWdodDoxcHg7bWFyZ2luOi0xcHg7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxcHg7d2hpdGUtc3BhY2U6bm93cmFwO291dGxpbmU6MDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb2ludGVyLWV2ZW50czpub25lO3RvcDowO2xlZnQ6MDtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXTplbXB0eXtkaXNwbGF5Om5vbmV9LmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1wYW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtwb2ludGVyLWV2ZW50czphdXRvO2JveC1zaXppbmc6Ym9yZGVyLWJveDt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O21heC13aWR0aDoxMDAlO21heC1oZWlnaHQ6MTAwJX0uY2RrLW92ZXJsYXktYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO2xlZnQ6MDtyaWdodDowO3otaW5kZXg6MTAwMDtwb2ludGVyLWV2ZW50czphdXRvOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudDt0cmFuc2l0aW9uOm9wYWNpdHkgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSk7b3BhY2l0eTowfS5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjF9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAuY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTouNn0uY2RrLW92ZXJsYXktZGFyay1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4zMil9LmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MH0uY2RrLW92ZXJsYXktY29ubmVjdGVkLXBvc2l0aW9uLWJvdW5kaW5nLWJveFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bWluLXdpZHRoOjFweDttaW4taGVpZ2h0OjFweH0uY2RrLWdsb2JhbC1zY3JvbGxibG9ja1tfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7d2lkdGg6MTAwJTtvdmVyZmxvdy15OnNjcm9sbH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemVbX25nY29udGVudC0lQ09NUCVde3Jlc2l6ZTpub25lfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmdbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OmF1dG8gIWltcG9ydGFudDtvdmVyZmxvdzpoaWRkZW4gIWltcG9ydGFudH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nLWZpcmVmb3hbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OjAgIWltcG9ydGFudH1Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0e31Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZHt9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbHthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnQgMHMgMW1zfS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCg6LXdlYmtpdC1hdXRvZmlsbCl7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZCAwcyAxbXN9Lm1hdC1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtbWRjLWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9LnBjLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmZmO2JvcmRlcjoxcHggc29saWQgI2ViZWJlYn0ucGMtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV17YWxpZ24taXRlbXM6Y2VudGVyO2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNlYmViZWI7ZGlzcGxheTpmbGV4O2hlaWdodDo0MnB4O3BhZGRpbmc6MCAxNnB4fS5wYy10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwO2Rpc3BsYXk6aW5saW5lO2ZsZXg6MSAxfSddLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihpUHQsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3Rvcjoic2VsZWN0ZWQtYW5ub3RhdGlvbnMtY29tcG9uZW50Iix0ZW1wbGF0ZVVybDoiLi9zZWxlY3RlZF9hbm5vdGF0aW9uc19jb21wb25lbnQubmcuaHRtbCIsc3R5bGVVcmxzOlsiLi9zZWxlY3RlZF9hbm5vdGF0aW9uc19jb21wb25lbnQuY3NzIl0sY2hhbmdlRGV0ZWN0aW9uOmpuLk9uUHVzaH1dfV0sbnVsbCx7cGNFeHBhbmRlZDpbe3R5cGU6Ul99XSxzZWxlY3RlZEFubm90YXRpb25zOlt7dHlwZTpSX31dLG9uQ2xlYXJTZWxlY3RlZEFubm90YXRpb25zOlt7dHlwZTpFX31dLG9uVG9nZ2xlRXhwYW5kZWQ6W3t0eXBlOkVffV19KTtjbGFzcyBhUHR7Y29uc3RydWN0b3IodCl7dGhpcy5zdG9yZT10LHRoaXMucGNFeHBhbmRlZCQ9dGhpcy5zdG9yZS5waXBlKHJTKG94dCkpLHRoaXMuc2VsZWN0ZWRBbm5vdGF0aW9ucyQ9dGhpcy5zdG9yZS5zZWxlY3QoWHZ0KX1jbGVhclNlbGVjdGVkQW5ub3RhdGlvbnMoKXt0aGlzLnN0b3JlLmRpc3BhdGNoKF92dCgpKX10b2dnbGVFeHBhbmRlZCgpe3RoaXMuc3RvcmUuZGlzcGF0Y2goRHZ0KCkpfX1mdW5jdGlvbiByUHQodCxlKXtpZigxJnQmJihDZigwLCJkaXYiLDYpLENmKDEsImRpdiIsNyksdmYoMiwibnBtaS12aW9saW4tZmlsdGVycyIsOCksQ2YoMywiZGl2Iiw5KSx2Zig0LCJydW5zLXNlbGVjdG9yIiksTWYoKSxNZigpLE1mKCkpLDImdCl7bHUoIndpZHRoIix6ZigpLnNpZGViYXJXaWR0aCwicHgiKX19ZnVuY3Rpb24gc1B0KHQsZSl7aWYoMSZ0KXtjb25zdCB0PXdmKCk7Q2YoMCwiZGl2IiwxMCksUmYoIm1vdXNlZG93biIsKGZ1bmN0aW9uIGUoKXtQaSh0KTtyZXR1cm4gemYoKS5yZXNpemVHcmFiYmVkLmVtaXQoKX0pKSxNZigpfX1mdW5jdGlvbiBsUHQodCxlKXsxJnQmJihDZigwLCJkaXYiLDExKSx2ZigxLCJucG1pLWFubm90YXRpb25zLWxpc3QiLDEyKSx2ZigyLCJucG1pLXNlbGVjdGVkLWFubm90YXRpb25zIiksTWYoKSl9ZnVuY3Rpb24gY1B0KHQsZSl7MSZ0JiYoQ2YoMCwiZGl2IiwxMyksUHUoMSwiWW91IG5lZWQgdG8gc2VsZWN0IGF0IGxlYXN0IG9uZSBydW4uIiksTWYoKSl9ZnVuY3Rpb24gZFB0KHQsZSl7aWYoMSZ0KXtjb25zdCB0PXdmKCk7Q2YoMCwiZGl2IiwxNCksQ2YoMSwiYnV0dG9uIiwxNSksUmYoImNsaWNrIiwoZnVuY3Rpb24gZSgpe1BpKHQpO3JldHVybiB6ZigpLnRvZ2dsZVNpZGViYXJFeHBhbmRlZC5lbWl0KCl9KSksdmYoMiwibWF0LWljb24iLDE2KSxNZigpLE1mKCl9fWFQdC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8YVB0KShnZihpUykpfSxhUHQuybVjbXA9c28oe3R5cGU6YVB0LHNlbGVjdG9yczpbWyJucG1pLXNlbGVjdGVkLWFubm90YXRpb25zIl1dLGRlY2xzOjMsdmFyczo2LGNvbnN0czpbWzMsInBjRXhwYW5kZWQiLCJzZWxlY3RlZEFubm90YXRpb25zIiwib25DbGVhclNlbGVjdGVkQW5ub3RhdGlvbnMiLCJvblRvZ2dsZUV4cGFuZGVkIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihDZigwLCJzZWxlY3RlZC1hbm5vdGF0aW9ucy1jb21wb25lbnQiLDApLFJmKCJvbkNsZWFyU2VsZWN0ZWRBbm5vdGF0aW9ucyIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5jbGVhclNlbGVjdGVkQW5ub3RhdGlvbnMoKX0pKSgib25Ub2dnbGVFeHBhbmRlZCIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi50b2dnbGVFeHBhbmRlZCgpfSkpLF95KDEsImFzeW5jIiksX3koMiwiYXN5bmMiKSxNZigpKSwyJmUmJmJmKCJwY0V4cGFuZGVkIixDeSgxLDIsbi5wY0V4cGFuZGVkJCkpKCJzZWxlY3RlZEFubm90YXRpb25zIixDeSgyLDQsbi5zZWxlY3RlZEFubm90YXRpb25zJCkpfSxkaXJlY3RpdmVzOltpUHRdLHBpcGVzOltWdl0sZW5jYXBzdWxhdGlvbjoyLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihhUHQsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoibnBtaS1zZWxlY3RlZC1hbm5vdGF0aW9ucyIsdGVtcGxhdGU6J1xuICAgIDxzZWxlY3RlZC1hbm5vdGF0aW9ucy1jb21wb25lbnRcbiAgICAgIFtwY0V4cGFuZGVkXT0icGNFeHBhbmRlZCQgfCBhc3luYyJcbiAgICAgIFtzZWxlY3RlZEFubm90YXRpb25zXT0ic2VsZWN0ZWRBbm5vdGF0aW9ucyQgfCBhc3luYyJcbiAgICAgIChvbkNsZWFyU2VsZWN0ZWRBbm5vdGF0aW9ucyk9ImNsZWFyU2VsZWN0ZWRBbm5vdGF0aW9ucygpIlxuICAgICAgKG9uVG9nZ2xlRXhwYW5kZWQpPSJ0b2dnbGVFeHBhbmRlZCgpIlxuICAgID48L3NlbGVjdGVkLWFubm90YXRpb25zLWNvbXBvbmVudD5cbiAgJyxjaGFuZ2VEZXRlY3Rpb246am4uT25QdXNofV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6aVN9XX0pLG51bGwpO2NsYXNzIHBQdHtjb25zdHJ1Y3Rvcigpe3RoaXMudG9nZ2xlU2lkZWJhckV4cGFuZGVkPW5ldyBTeSx0aGlzLnJlc2l6ZVRyaWdnZXJlZD1uZXcgU3ksdGhpcy5yZXNpemVHcmFiYmVkPW5ldyBTeSx0aGlzLnJlc2l6ZVJlbGVhc2VkPW5ldyBTeX19cFB0Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxwUHQpfSxwUHQuybVjbXA9c28oe3R5cGU6cFB0LHNlbGVjdG9yczpbWyJtYWluLWNvbXBvbmVudCJdXSxpbnB1dHM6e3J1bkFjdGl2ZToicnVuQWN0aXZlIixzaWRlYmFyRXhwYW5kZWQ6InNpZGViYXJFeHBhbmRlZCIsc2lkZWJhcldpZHRoOiJzaWRlYmFyV2lkdGgifSxvdXRwdXRzOnt0b2dnbGVTaWRlYmFyRXhwYW5kZWQ6InRvZ2dsZVNpZGViYXJFeHBhbmRlZCIscmVzaXplVHJpZ2dlcmVkOiJyZXNpemVUcmlnZ2VyZWQiLHJlc2l6ZUdyYWJiZWQ6InJlc2l6ZUdyYWJiZWQiLHJlc2l6ZVJlbGVhc2VkOiJyZXNpemVSZWxlYXNlZCJ9LGRlY2xzOjgsdmFyczo1LGNvbnN0czpmdW5jdGlvbigpe2xldCB0O2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgbmdJMThuQ2xvc3VyZU1vZGUmJm5nSTE4bkNsb3N1cmVNb2RlKXt0PWdvb2cuZ2V0TXNnKCJUb2dnbGUgU2lkZWJhciIpfWVsc2UgdD0kbG9jYWxpemVgOkxhYmVsIGZvciBhIGJ1dHRvbiB0aGF0IHRvZ2dsZXMgdGhlIHNpZGViYXIu4pCfZjYzYjU3OTMyZDE3OWNjYTYyYWM5ZmNhZTYzZGQ3ZjVlNmZhMzg5ZuKQnzQ0ODUwMDkzNDc0NDQ3MDQ4Nzg6VG9nZ2xlIFNpZGViYXJgO3JldHVybltbMSwiY29udGVudCIsMywibW91c2V1cCIsIm1vdXNlbW92ZSJdLFsiY2xhc3MiLCJzaWRlYmFyLWNvbnRhaW5lciIsMywid2lkdGgiLDQsIm5nSWYiXSxbImNsYXNzIiwiZ3JhYmJlciIsMywibW91c2Vkb3duIiw0LCJuZ0lmIl0sWyJjbGFzcyIsImFuYWx5c2lzLWNvbnRhaW5lciIsNCwibmdJZiIsIm5nSWZFbHNlIl0sWyJub1J1biIsIiJdLFsiY2xhc3MiLCJzaWRlLXRvZ2dsZSIsNCwibmdJZiJdLFsxLCJzaWRlYmFyLWNvbnRhaW5lciJdLFsxLCJzaWRlYmFyLWNvbnRlbnRzIl0sWzEsInZpb2xpbi1maWx0ZXJzIl0sWzEsInJ1bi1zZWxlY3RvciJdLFsxLCJncmFiYmVyIiwzLCJtb3VzZWRvd24iXSxbMSwiYW5hbHlzaXMtY29udGFpbmVyIl0sWzEsImFubm90YXRpb25zLWxpc3QiXSxbMSwibm9SdW4iXSxbMSwic2lkZS10b2dnbGUiXSxbIm1hdC1pY29uLWJ1dHRvbiIsIiIsImFyaWEtbGFiZWwiLHQsMywiY2xpY2siXSxbInN2Z0ljb24iLCJjaGV2cm9uX3JpZ2h0XzI0cHgiXV19LHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXtpZigxJmUmJih2ZigwLCJucG1pLWRhdGEtc2VsZWN0aW9uIiksQ2YoMSwiZGl2IiwwKSxSZigibW91c2V1cCIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5yZXNpemVSZWxlYXNlZC5lbWl0KCl9KSkoIm1vdXNlbW92ZSIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4ucmVzaXplVHJpZ2dlcmVkLmVtaXQoZSl9KSksSG0oMixyUHQsNSwyLCJkaXYiLDEpLEhtKDMsc1B0LDEsMCwiZGl2IiwyKSxIbSg0LGxQdCwzLDAsImRpdiIsMyksSG0oNSxjUHQsMiwwLCJuZy10ZW1wbGF0ZSIsbnVsbCw0LHF5KSxNZigpLEhtKDcsZFB0LDMsMCwiZGl2Iiw1KSksMiZlKXtjb25zdCB0PUZtKDYpO0RjKDIpLGJmKCJuZ0lmIixuLnNpZGViYXJFeHBhbmRlZCksRGMoMSksYmYoIm5nSWYiLG4uc2lkZWJhckV4cGFuZGVkKSxEYygxKSxiZigibmdJZiIsITA9PT1uLnJ1bkFjdGl2ZSkoIm5nSWZFbHNlIix0KSxEYygzKSxiZigibmdJZiIsIW4uc2lkZWJhckV4cGFuZGVkKX19LGRpcmVjdGl2ZXM6W2VPdCxQdixkT3QsYjQsSk90LGFQdCxOTCxNcV0sc3R5bGVzOlsnLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjEycHg7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtYmFkZ2Utc21hbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6OXB4fS5tYXQtYmFkZ2UtbGFyZ2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweH0ubWF0LWgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1oZWFkbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMjRweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNnB4LzI4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNXB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC44MykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtaDZbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuNjcpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWJvZHktc3Ryb25nW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjAgMCAxMnB4fS5tYXQtc21hbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDEycHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjMwMCAxMTJweC8xMTJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDVlbTttYXJnaW46MCAwIDU2cHh9Lm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDU2cHgvNTZweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDJlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDQ1cHgvNDhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDA1ZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAzNHB4LzQwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDY0cHh9Lm1hdC1ib3R0b20tc2hlZXQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhcmQtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjIwcHh9Lm1hdC1jYXJkLXN1YnRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXJkLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNoZWNrYm94LWxheW91dFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoyNHB4fS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtdHJhaWxpbmctaWNvbi5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MThweH0ubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1oZWFkZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9vdGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2FsZW5kYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhbGVuZGFyLWJvZHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxM3B4fS5tYXQtY2FsZW5kYXItYm9keS1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FsZW5kYXItcGVyaW9kLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRoW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo0MDB9Lm1hdC1kaWFsb2ctdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDoxLjEyNTtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE1MCU7bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS41ZW07d2lkdGg6MS41ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNWVtIDA7Ym9yZGVyLXRvcDouODQzNzVlbSBzb2xpZCB0cmFuc3BhcmVudH0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTAuODQzNzVlbTtwYWRkaW5nLXRvcDouODQzNzVlbX0ubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo3NSU7bWFyZ2luLXRvcDouNjY2NjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjc5MTY2NjY2NjdlbSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNDM3NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMnB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTJlbSkgc2NhbGUoMC43NSl9fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi4yNWVtIDAgLjc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMDkzNzVlbTttYXJnaW4tdG9wOi0wLjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjFlbSAwIDFlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS44NDM3NWVtO21hcmdpbi10b3A6LTAuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9aW5wdXQubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LTAuMDYyNWVtfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweH0ubWF0LXJhZGlvLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW19Lm1hdC1zbGlkZS10b2dnbGUtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXN0ZXAtc3ViLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDpub3JtYWx9Lm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRhYi1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowfS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMHB4O3BhZGRpbmctdG9wOjZweDtwYWRkaW5nLWJvdHRvbTo2cHh9Lm1hdC10b29sdGlwLWhhbmRzZXRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHh9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1zaW1wbGUtc25hY2tiYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjE7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo1MDB9Lm1hdC10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW5lc3RlZC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweH0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmVtcHR5KXt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKX0ubWF0LXJpcHBsZS5tYXQtcmlwcGxlLXVuYm91bmRlZFtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6dmlzaWJsZX0ubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItcmFkaXVzOjUwJTtwb2ludGVyLWV2ZW50czpub25lO3RyYW5zaXRpb246b3BhY2l0eSx0cmFuc2Zvcm0gMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO3RyYW5zZm9ybTpzY2FsZSgwKX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6bm9uZX0uY2RrLXZpc3VhbGx5LWhpZGRlbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjA7Y2xpcDpyZWN0KDAgMCAwIDApO2hlaWdodDoxcHg7bWFyZ2luOi0xcHg7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxcHg7d2hpdGUtc3BhY2U6bm93cmFwO291dGxpbmU6MDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb2ludGVyLWV2ZW50czpub25lO3RvcDowO2xlZnQ6MDtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXTplbXB0eXtkaXNwbGF5Om5vbmV9LmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1wYW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtwb2ludGVyLWV2ZW50czphdXRvO2JveC1zaXppbmc6Ym9yZGVyLWJveDt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O21heC13aWR0aDoxMDAlO21heC1oZWlnaHQ6MTAwJX0uY2RrLW92ZXJsYXktYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO2xlZnQ6MDtyaWdodDowO3otaW5kZXg6MTAwMDtwb2ludGVyLWV2ZW50czphdXRvOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudDt0cmFuc2l0aW9uOm9wYWNpdHkgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSk7b3BhY2l0eTowfS5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjF9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAuY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTouNn0uY2RrLW92ZXJsYXktZGFyay1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4zMil9LmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MH0uY2RrLW92ZXJsYXktY29ubmVjdGVkLXBvc2l0aW9uLWJvdW5kaW5nLWJveFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bWluLXdpZHRoOjFweDttaW4taGVpZ2h0OjFweH0uY2RrLWdsb2JhbC1zY3JvbGxibG9ja1tfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7d2lkdGg6MTAwJTtvdmVyZmxvdy15OnNjcm9sbH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemVbX25nY29udGVudC0lQ09NUCVde3Jlc2l6ZTpub25lfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmdbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OmF1dG8gIWltcG9ydGFudDtvdmVyZmxvdzpoaWRkZW4gIWltcG9ydGFudH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nLWZpcmVmb3hbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OjAgIWltcG9ydGFudH1Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0e31Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZHt9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbHthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnQgMHMgMW1zfS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCg6LXdlYmtpdC1hdXRvZmlsbCl7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZCAwcyAxbXN9Lm1hdC1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtbWRjLWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9W19uZ2hvc3QtJUNPTVAlXXtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2hlaWdodDoxMDAlfS5jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7ZmxleDoxO21pbi1oZWlnaHQ6MHB4O3dpZHRoOjEwMCV9LnNpZGViYXItY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MTAwJTtvdmVyZmxvdzpoaWRkZW59LnNpZGViYXItY29udGVudHNbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxMDAlO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bWluLXdpZHRoOjE1MHB4fS5hbmFseXNpcy1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47aGVpZ2h0OjEwMCU7ZmxleDoxIDF9LnJ1bi1zZWxlY3Rvcltfbmdjb250ZW50LSVDT01QJV17bWF4LWhlaWdodDoxMDAlO3dpZHRoOjEwMCV9LnZpb2xpbi1maWx0ZXJzW19uZ2NvbnRlbnQtJUNPTVAlXXttaW4taGVpZ2h0OjBweDt3aWR0aDoxMDAlfS5zaWRlLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17d2lkdGg6MzBweDtoZWlnaHQ6MzBweDtwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjEwcHg7Ym90dG9tOjEwcHg7Ym9yZGVyOjFweCBzb2xpZCAjZWJlYmViO2JvcmRlci1yYWRpdXM6M3B4O2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcn0uZ3JhYmJlcltfbmdjb250ZW50LSVDT01QJV17Y29udGVudDoiIjtjdXJzb3I6ZXctcmVzaXplO2hlaWdodDoxMDAlO3dpZHRoOjNweDtvdmVyZmxvdzpoaWRkZW47YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4xMil9LmFubm90YXRpb25zLWxpc3RbX25nY29udGVudC0lQ09NUCVde3dpZHRoOjEwMCU7bWluLWhlaWdodDowcHg7ZmxleDoxIDF9J10sY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKHBQdCxbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJtYWluLWNvbXBvbmVudCIsdGVtcGxhdGVVcmw6Ii4vbWFpbl9jb21wb25lbnQubmcuaHRtbCIsc3R5bGVVcmxzOlsiLi9tYWluX2NvbXBvbmVudC5jc3MiXSxjaGFuZ2VEZXRlY3Rpb246am4uT25QdXNofV19XSxudWxsLHtydW5BY3RpdmU6W3t0eXBlOlJffV0sc2lkZWJhckV4cGFuZGVkOlt7dHlwZTpSX31dLHNpZGViYXJXaWR0aDpbe3R5cGU6Ul99XSx0b2dnbGVTaWRlYmFyRXhwYW5kZWQ6W3t0eXBlOkVffV0scmVzaXplVHJpZ2dlcmVkOlt7dHlwZTpFX31dLHJlc2l6ZUdyYWJiZWQ6W3t0eXBlOkVffV0scmVzaXplUmVsZWFzZWQ6W3t0eXBlOkVffV19KTtjbGFzcyBtUHR7Y29uc3RydWN0b3IodCl7dGhpcy5zdG9yZT10LHRoaXMucnVuQWN0aXZlJD10aGlzLnN0b3JlLnBpcGUoclMoX0kpKS5waXBlKFZ0KCh0PT4hIXQmJlsuLi50LnZhbHVlcygpXS5pbmNsdWRlcyghMCkpKSksdGhpcy5zaWRlYmFyRXhwYW5kZWQkPXRoaXMuc3RvcmUucGlwZShyUyhheHQpKSx0aGlzLnNpZGViYXJXaWR0aCQ9dGhpcy5zdG9yZS5waXBlKHJTKGN4dCkpLHRoaXMucmVzaXppbmc9ITF9b25Ub2dnbGVTaWRlYmFyRXhwYW5kZWQoKXt0aGlzLnN0b3JlLmRpc3BhdGNoKEV2dCgpKX1vblJlc2l6ZVRyaWdnZXJlZCh0KXt0aGlzLnJlc2l6aW5nJiZ0aGlzLnN0b3JlLmRpc3BhdGNoKHp2dCh7c2lkZWJhcldpZHRoOnQuY2xpZW50WH0pKX1vblJlc2l6ZUdyYWJiZWQoKXt0aGlzLnJlc2l6aW5nPSEwfW9uUmVzaXplUmVsZWFzZWQoKXt0aGlzLnJlc2l6aW5nPSExfX1tUHQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fG1QdCkoZ2YoaVMpKX0sbVB0Lsm1Y21wPXNvKHt0eXBlOm1QdCxzZWxlY3RvcnM6W1sibnBtaS1tYWluIl1dLGRlY2xzOjQsdmFyczo5LGNvbnN0czpbWzMsInJ1bkFjdGl2ZSIsInNpZGViYXJFeHBhbmRlZCIsInNpZGViYXJXaWR0aCIsInRvZ2dsZVNpZGViYXJFeHBhbmRlZCIsInJlc2l6ZVRyaWdnZXJlZCIsInJlc2l6ZUdyYWJiZWQiLCJyZXNpemVSZWxlYXNlZCJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoQ2YoMCwibWFpbi1jb21wb25lbnQiLDApLFJmKCJ0b2dnbGVTaWRlYmFyRXhwYW5kZWQiLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4ub25Ub2dnbGVTaWRlYmFyRXhwYW5kZWQoKX0pKSgicmVzaXplVHJpZ2dlcmVkIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5vblJlc2l6ZVRyaWdnZXJlZChlKX0pKSgicmVzaXplR3JhYmJlZCIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5vblJlc2l6ZUdyYWJiZWQoKX0pKSgicmVzaXplUmVsZWFzZWQiLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4ub25SZXNpemVSZWxlYXNlZCgpfSkpLF95KDEsImFzeW5jIiksX3koMiwiYXN5bmMiKSxfeSgzLCJhc3luYyIpLE1mKCkpLDImZSYmYmYoInJ1bkFjdGl2ZSIsQ3koMSwzLG4ucnVuQWN0aXZlJCkpKCJzaWRlYmFyRXhwYW5kZWQiLEN5KDIsNSxuLnNpZGViYXJFeHBhbmRlZCQpKSgic2lkZWJhcldpZHRoIixDeSgzLDcsbi5zaWRlYmFyV2lkdGgkKSl9LGRpcmVjdGl2ZXM6W3BQdF0scGlwZXM6W1Z2XSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKG1QdCxbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJucG1pLW1haW4iLHRlbXBsYXRlOidcbiAgICA8bWFpbi1jb21wb25lbnRcbiAgICAgIFtydW5BY3RpdmVdPSJydW5BY3RpdmUkIHwgYXN5bmMiXG4gICAgICBbc2lkZWJhckV4cGFuZGVkXT0ic2lkZWJhckV4cGFuZGVkJCB8IGFzeW5jIlxuICAgICAgW3NpZGViYXJXaWR0aF09InNpZGViYXJXaWR0aCQgfCBhc3luYyJcbiAgICAgICh0b2dnbGVTaWRlYmFyRXhwYW5kZWQpPSJvblRvZ2dsZVNpZGViYXJFeHBhbmRlZCgpIlxuICAgICAgKHJlc2l6ZVRyaWdnZXJlZCk9Im9uUmVzaXplVHJpZ2dlcmVkKCRldmVudCkiXG4gICAgICAocmVzaXplR3JhYmJlZCk9Im9uUmVzaXplR3JhYmJlZCgpIlxuICAgICAgKHJlc2l6ZVJlbGVhc2VkKT0ib25SZXNpemVSZWxlYXNlZCgpIlxuICAgID48L21haW4tY29tcG9uZW50PlxuICAnLGNoYW5nZURldGVjdGlvbjpqbi5PblB1c2h9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTppU31dfSksbnVsbCk7Y2xhc3MgZlB0e2NvbnN0cnVjdG9yKCl7dGhpcy50b2dnbGVTaWRlYmFyRXhwYW5kZWQ9bmV3IFN5fX1mUHQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGZQdCl9LGZQdC7JtWNtcD1zbyh7dHlwZTpmUHQsc2VsZWN0b3JzOltbImVtYmVkZGluZy1wcm9qZWN0aW9uLWNvbXBvbmVudCJdXSxpbnB1dHM6e3NpZGViYXJFeHBhbmRlZDoic2lkZWJhckV4cGFuZGVkIn0sb3V0cHV0czp7dG9nZ2xlU2lkZWJhckV4cGFuZGVkOiJ0b2dnbGVTaWRlYmFyRXhwYW5kZWQifSxkZWNsczo3LHZhcnM6MCxjb25zdHM6ZnVuY3Rpb24oKXtsZXQgdDtpZigidW5kZWZpbmVkIiE9dHlwZW9mIG5nSTE4bkNsb3N1cmVNb2RlJiZuZ0kxOG5DbG9zdXJlTW9kZSl7dD1nb29nLmdldE1zZygiRXhwYW5kL0hpZGUgU2lkZWJhciIpfWVsc2UgdD0kbG9jYWxpemVgOkxhYmVsIGZvciBhIGJ1dHRvbiB0aGF0IGV4cGFuZHMvaGlkZXMgdGhlIHNpZGViYXIu4pCfNDhjMjk5MDNjZTg4MWFiNjEwODhmOGQ0OWQ4MjcyMDM3MTZhYWVkNOKQnzQ2NTg2MDI5OTE5NzAyNjAyMTU6RXhwYW5kL0hpZGUgU2lkZWJhcmA7cmV0dXJuW1sxLCJlbWJlZGRpbmctcHJvamVjdGlvbi10b29sYmFyIl0sWzEsImVtYmVkZGluZy1wcm9qZWN0aW9uLXRpdGxlIl0sWzEsInNpZGUtdG9nZ2xlIl0sWyJtYXQtaWNvbi1idXR0b24iLCIiLCJhcmlhLWxhYmVsIix0LDMsImNsaWNrIl0sWyJzdmdJY29uIiwiY2hldnJvbl9sZWZ0XzI0cHgiXSxbMSwicHJvamVjdGlvbiJdXX0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKENmKDAsImRpdiIsMCksQ2YoMSwiaDMiLDEpLFB1KDIsIkVtYmVkZGluZ3MgUHJvamVjdGVkIiksTWYoKSxDZigzLCJkaXYiLDIpLENmKDQsImJ1dHRvbiIsMyksUmYoImNsaWNrIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLnRvZ2dsZVNpZGViYXJFeHBhbmRlZC5lbWl0KCl9KSksdmYoNSwibWF0LWljb24iLDQpLE1mKCksTWYoKSxNZigpLHZmKDYsImRpdiIsNSkpfSxkaXJlY3RpdmVzOltOTCxNcV0sc3R5bGVzOlsnLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjEycHg7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtYmFkZ2Utc21hbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6OXB4fS5tYXQtYmFkZ2UtbGFyZ2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweH0ubWF0LWgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1oZWFkbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMjRweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNnB4LzI4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNXB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC44MykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtaDZbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuNjcpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWJvZHktc3Ryb25nW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjAgMCAxMnB4fS5tYXQtc21hbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDEycHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjMwMCAxMTJweC8xMTJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDVlbTttYXJnaW46MCAwIDU2cHh9Lm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDU2cHgvNTZweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDJlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDQ1cHgvNDhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDA1ZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAzNHB4LzQwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDY0cHh9Lm1hdC1ib3R0b20tc2hlZXQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhcmQtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjIwcHh9Lm1hdC1jYXJkLXN1YnRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXJkLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNoZWNrYm94LWxheW91dFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoyNHB4fS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtdHJhaWxpbmctaWNvbi5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MThweH0ubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1oZWFkZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9vdGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2FsZW5kYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhbGVuZGFyLWJvZHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxM3B4fS5tYXQtY2FsZW5kYXItYm9keS1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FsZW5kYXItcGVyaW9kLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRoW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo0MDB9Lm1hdC1kaWFsb2ctdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDoxLjEyNTtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE1MCU7bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS41ZW07d2lkdGg6MS41ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNWVtIDA7Ym9yZGVyLXRvcDouODQzNzVlbSBzb2xpZCB0cmFuc3BhcmVudH0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTAuODQzNzVlbTtwYWRkaW5nLXRvcDouODQzNzVlbX0ubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo3NSU7bWFyZ2luLXRvcDouNjY2NjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjc5MTY2NjY2NjdlbSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNDM3NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMnB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTJlbSkgc2NhbGUoMC43NSl9fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi4yNWVtIDAgLjc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMDkzNzVlbTttYXJnaW4tdG9wOi0wLjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjFlbSAwIDFlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS44NDM3NWVtO21hcmdpbi10b3A6LTAuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9aW5wdXQubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LTAuMDYyNWVtfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweH0ubWF0LXJhZGlvLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW19Lm1hdC1zbGlkZS10b2dnbGUtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXN0ZXAtc3ViLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDpub3JtYWx9Lm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRhYi1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowfS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMHB4O3BhZGRpbmctdG9wOjZweDtwYWRkaW5nLWJvdHRvbTo2cHh9Lm1hdC10b29sdGlwLWhhbmRzZXRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHh9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1zaW1wbGUtc25hY2tiYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjE7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo1MDB9Lm1hdC10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW5lc3RlZC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweH0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmVtcHR5KXt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKX0ubWF0LXJpcHBsZS5tYXQtcmlwcGxlLXVuYm91bmRlZFtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6dmlzaWJsZX0ubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItcmFkaXVzOjUwJTtwb2ludGVyLWV2ZW50czpub25lO3RyYW5zaXRpb246b3BhY2l0eSx0cmFuc2Zvcm0gMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO3RyYW5zZm9ybTpzY2FsZSgwKX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6bm9uZX0uY2RrLXZpc3VhbGx5LWhpZGRlbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjA7Y2xpcDpyZWN0KDAgMCAwIDApO2hlaWdodDoxcHg7bWFyZ2luOi0xcHg7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxcHg7d2hpdGUtc3BhY2U6bm93cmFwO291dGxpbmU6MDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb2ludGVyLWV2ZW50czpub25lO3RvcDowO2xlZnQ6MDtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXTplbXB0eXtkaXNwbGF5Om5vbmV9LmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1wYW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtwb2ludGVyLWV2ZW50czphdXRvO2JveC1zaXppbmc6Ym9yZGVyLWJveDt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O21heC13aWR0aDoxMDAlO21heC1oZWlnaHQ6MTAwJX0uY2RrLW92ZXJsYXktYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO2xlZnQ6MDtyaWdodDowO3otaW5kZXg6MTAwMDtwb2ludGVyLWV2ZW50czphdXRvOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudDt0cmFuc2l0aW9uOm9wYWNpdHkgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSk7b3BhY2l0eTowfS5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjF9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAuY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTouNn0uY2RrLW92ZXJsYXktZGFyay1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4zMil9LmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MH0uY2RrLW92ZXJsYXktY29ubmVjdGVkLXBvc2l0aW9uLWJvdW5kaW5nLWJveFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bWluLXdpZHRoOjFweDttaW4taGVpZ2h0OjFweH0uY2RrLWdsb2JhbC1zY3JvbGxibG9ja1tfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7d2lkdGg6MTAwJTtvdmVyZmxvdy15OnNjcm9sbH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemVbX25nY29udGVudC0lQ09NUCVde3Jlc2l6ZTpub25lfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmdbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OmF1dG8gIWltcG9ydGFudDtvdmVyZmxvdzpoaWRkZW4gIWltcG9ydGFudH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nLWZpcmVmb3hbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OjAgIWltcG9ydGFudH1Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0e31Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZHt9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbHthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnQgMHMgMW1zfS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCg6LXdlYmtpdC1hdXRvZmlsbCl7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZCAwcyAxbXN9Lm1hdC1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtbWRjLWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9W19uZ2hvc3QtJUNPTVAlXXtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2hlaWdodDoxMDAlfS5lbWJlZGRpbmctcHJvamVjdGlvbi10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXthbGlnbi1pdGVtczpjZW50ZXI7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2ViZWJlYjtkaXNwbGF5OmZsZXg7aGVpZ2h0OjQycHg7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47cGFkZGluZzowIDEwcHh9LmVtYmVkZGluZy1wcm9qZWN0aW9uLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmlubGluZTtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9LnByb2plY3Rpb25bX25nY29udGVudC0lQ09NUCVde292ZXJmbG93LXk6YXV0b30uc2lkZS10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2FsaWduLWl0ZW1zOmNlbnRlcjtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Ym9yZGVyLXJhZGl1czozcHg7Ym9yZGVyOjFweCBzb2xpZCAjZWJlYmViO2Rpc3BsYXk6ZmxleDtoZWlnaHQ6MzBweDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO3dpZHRoOjMwcHh9J10sY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKGZQdCxbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJlbWJlZGRpbmctcHJvamVjdGlvbi1jb21wb25lbnQiLHRlbXBsYXRlVXJsOiIuL2VtYmVkZGluZ19wcm9qZWN0aW9uX2NvbXBvbmVudC5uZy5odG1sIixzdHlsZVVybHM6WyIuL2VtYmVkZGluZ19wcm9qZWN0aW9uX2NvbXBvbmVudC5jc3MiXSxjaGFuZ2VEZXRlY3Rpb246am4uT25QdXNofV19XSxudWxsLHtzaWRlYmFyRXhwYW5kZWQ6W3t0eXBlOlJffV0sdG9nZ2xlU2lkZWJhckV4cGFuZGVkOlt7dHlwZTpFX31dfSk7Y2xhc3MgdVB0e2NvbnN0cnVjdG9yKHQpe3RoaXMuc3RvcmU9dCx0aGlzLnNpZGViYXJFeHBhbmRlZCQ9dGhpcy5zdG9yZS5zZWxlY3QobXh0KX1vblRvZ2dsZVNpZGViYXJFeHBhbmRlZCgpe3RoaXMuc3RvcmUuZGlzcGF0Y2goSHZ0KCkpfX1mdW5jdGlvbiBnUHQodCxlKXtpZigxJnQmJihDZigwLCJkaXYiLDYpLENmKDEsImRpdiIsNyksdmYoMiwibnBtaS1lbWJlZGRpbmctcHJvamVjdGlvbiIsOCksdmYoMywiZGl2Iiw5KSxDZig0LCJkaXYiLDEwKSx2Zig1LCJydW5zLXNlbGVjdG9yIiksTWYoKSxNZigpLE1mKCkpLDImdCl7bHUoIndpZHRoIix6ZigpLnNpZGViYXJXaWR0aCwicHgiKX19ZnVuY3Rpb24gaFB0KHQsZSl7aWYoMSZ0KXtjb25zdCB0PXdmKCk7Q2YoMCwiZGl2IiwxMSksUmYoIm1vdXNlZG93biIsKGZ1bmN0aW9uIGUoKXtQaSh0KTtyZXR1cm4gemYoKS5yZXNpemVHcmFiYmVkLmVtaXQoKX0pKSxNZigpfX1mdW5jdGlvbiBiUHQodCxlKXsxJnQmJihDZigwLCJkaXYiLDEyKSx2ZigxLCJucG1pLWFubm90YXRpb25zLWxpc3QiLDEzKSx2ZigyLCJucG1pLXNlbGVjdGVkLWFubm90YXRpb25zIiksTWYoKSl9ZnVuY3Rpb24geVB0KHQsZSl7MSZ0JiYoQ2YoMCwiZGl2IiwxNCksUHUoMSwiWW91IG5lZWQgdG8gc2VsZWN0IGF0IGxlYXN0IG9uZSBydW4uIiksTWYoKSl9ZnVuY3Rpb24gX1B0KHQsZSl7aWYoMSZ0KXtjb25zdCB0PXdmKCk7Q2YoMCwiZGl2IiwxNSksQ2YoMSwiYnV0dG9uIiwxNiksUmYoImNsaWNrIiwoZnVuY3Rpb24gZSgpe1BpKHQpO3JldHVybiB6ZigpLnRvZ2dsZVNpZGViYXJFeHBhbmRlZC5lbWl0KCl9KSksdmYoMiwibWF0LWljb24iLDE3KSxNZigpLE1mKCl9fXVQdC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8dVB0KShnZihpUykpfSx1UHQuybVjbXA9c28oe3R5cGU6dVB0LHNlbGVjdG9yczpbWyJucG1pLWVtYmVkZGluZy1wcm9qZWN0aW9uIl1dLGRlY2xzOjIsdmFyczozLGNvbnN0czpbWzMsInNpZGViYXJFeHBhbmRlZCIsInRvZ2dsZVNpZGViYXJFeHBhbmRlZCJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoQ2YoMCwiZW1iZWRkaW5nLXByb2plY3Rpb24tY29tcG9uZW50IiwwKSxSZigidG9nZ2xlU2lkZWJhckV4cGFuZGVkIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLm9uVG9nZ2xlU2lkZWJhckV4cGFuZGVkKCl9KSksX3koMSwiYXN5bmMiKSxNZigpKSwyJmUmJmJmKCJzaWRlYmFyRXhwYW5kZWQiLEN5KDEsMSxuLnNpZGViYXJFeHBhbmRlZCQpKX0sZGlyZWN0aXZlczpbZlB0XSxwaXBlczpbVnZdLGVuY2Fwc3VsYXRpb246MixjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIodVB0LFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6Im5wbWktZW1iZWRkaW5nLXByb2plY3Rpb24iLHRlbXBsYXRlOidcbiAgICA8ZW1iZWRkaW5nLXByb2plY3Rpb24tY29tcG9uZW50XG4gICAgICBbc2lkZWJhckV4cGFuZGVkXT0ic2lkZWJhckV4cGFuZGVkJCB8IGFzeW5jIlxuICAgICAgKHRvZ2dsZVNpZGViYXJFeHBhbmRlZCk9Im9uVG9nZ2xlU2lkZWJhckV4cGFuZGVkKCkiXG4gICAgPjwvZW1iZWRkaW5nLXByb2plY3Rpb24tY29tcG9uZW50PlxuICAnLGNoYW5nZURldGVjdGlvbjpqbi5PblB1c2h9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTppU31dfSksbnVsbCk7Y2xhc3MgQ1B0e2NvbnN0cnVjdG9yKCl7dGhpcy50b2dnbGVTaWRlYmFyRXhwYW5kZWQ9bmV3IFN5LHRoaXMucmVzaXplVHJpZ2dlcmVkPW5ldyBTeSx0aGlzLnJlc2l6ZUdyYWJiZWQ9bmV3IFN5LHRoaXMucmVzaXplUmVsZWFzZWQ9bmV3IFN5fX1DUHQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fENQdCl9LENQdC7JtWNtcD1zbyh7dHlwZTpDUHQsc2VsZWN0b3JzOltbImVtYmVkZGluZ3MtY29tcG9uZW50Il1dLGlucHV0czp7cnVuQWN0aXZlOiJydW5BY3RpdmUiLHNpZGViYXJFeHBhbmRlZDoic2lkZWJhckV4cGFuZGVkIixzaWRlYmFyV2lkdGg6InNpZGViYXJXaWR0aCJ9LG91dHB1dHM6e3RvZ2dsZVNpZGViYXJFeHBhbmRlZDoidG9nZ2xlU2lkZWJhckV4cGFuZGVkIixyZXNpemVUcmlnZ2VyZWQ6InJlc2l6ZVRyaWdnZXJlZCIscmVzaXplR3JhYmJlZDoicmVzaXplR3JhYmJlZCIscmVzaXplUmVsZWFzZWQ6InJlc2l6ZVJlbGVhc2VkIn0sZGVjbHM6OCx2YXJzOjUsY29uc3RzOmZ1bmN0aW9uKCl7bGV0IHQ7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBuZ0kxOG5DbG9zdXJlTW9kZSYmbmdJMThuQ2xvc3VyZU1vZGUpe3Q9Z29vZy5nZXRNc2coIlRvZ2dsZSBTaWRlYmFyIil9ZWxzZSB0PSRsb2NhbGl6ZWA6TGFiZWwgZm9yIGEgYnV0dG9uIHRoYXQgdG9nZ2xlcyB0aGUgc2lkZWJhci7ikJ9mNjNiNTc5MzJkMTc5Y2NhNjJhYzlmY2FlNjNkZDdmNWU2ZmEzODlm4pCfNDQ4NTAwOTM0NzQ0NDcwNDg3ODpUb2dnbGUgU2lkZWJhcmA7cmV0dXJuW1sxLCJjb250ZW50IiwzLCJtb3VzZXVwIiwibW91c2Vtb3ZlIl0sWyJjbGFzcyIsInNpZGViYXItY29udGFpbmVyIiwzLCJ3aWR0aCIsNCwibmdJZiJdLFsiY2xhc3MiLCJncmFiYmVyIiwzLCJtb3VzZWRvd24iLDQsIm5nSWYiXSxbImNsYXNzIiwiYW5hbHlzaXMtY29udGFpbmVyIiw0LCJuZ0lmIiwibmdJZkVsc2UiXSxbIm5vUnVuIiwiIl0sWyJjbGFzcyIsInNpZGUtdG9nZ2xlIiw0LCJuZ0lmIl0sWzEsInNpZGViYXItY29udGFpbmVyIl0sWzEsInNpZGViYXItY29udGVudHMiXSxbMSwiZW1iZWRkaW5nLXByb2plY3Rpb24iXSxbMSwicnVuLWRpdmlkZXIiXSxbMSwicnVuLXNlbGVjdG9yIl0sWzEsImdyYWJiZXIiLDMsIm1vdXNlZG93biJdLFsxLCJhbmFseXNpcy1jb250YWluZXIiXSxbMSwiYW5ub3RhdGlvbnMtbGlzdCJdLFsxLCJub1J1biJdLFsxLCJzaWRlLXRvZ2dsZSJdLFsibWF0LWljb24tYnV0dG9uIiwiIiwiYXJpYS1sYWJlbCIsdCwzLCJjbGljayJdLFsic3ZnSWNvbiIsImNoZXZyb25fcmlnaHRfMjRweCJdXX0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pe2lmKDEmZSYmKHZmKDAsIm5wbWktZGF0YS1zZWxlY3Rpb24iKSxDZigxLCJkaXYiLDApLFJmKCJtb3VzZXVwIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLnJlc2l6ZVJlbGVhc2VkLmVtaXQoKX0pKSgibW91c2Vtb3ZlIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5yZXNpemVUcmlnZ2VyZWQuZW1pdChlKX0pKSxIbSgyLGdQdCw2LDIsImRpdiIsMSksSG0oMyxoUHQsMSwwLCJkaXYiLDIpLEhtKDQsYlB0LDMsMCwiZGl2IiwzKSxIbSg1LHlQdCwyLDAsIm5nLXRlbXBsYXRlIixudWxsLDQscXkpLE1mKCksSG0oNyxfUHQsMywwLCJkaXYiLDUpKSwyJmUpe2NvbnN0IHQ9Rm0oNik7RGMoMiksYmYoIm5nSWYiLG4uc2lkZWJhckV4cGFuZGVkKSxEYygxKSxiZigibmdJZiIsbi5zaWRlYmFyRXhwYW5kZWQpLERjKDEpLGJmKCJuZ0lmIiwhMD09PW4ucnVuQWN0aXZlKSgibmdJZkVsc2UiLHQpLERjKDMpLGJmKCJuZ0lmIiwhbi5zaWRlYmFyRXhwYW5kZWQpfX0sZGlyZWN0aXZlczpbZU90LFB2LHVQdCxiNCxKT3QsYVB0LE5MLE1xXSxzdHlsZXM6WycubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTJweDtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1iYWRnZS1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo5cHh9Lm1hdC1iYWRnZS1sYXJnZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4fS5tYXQtaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWhlYWRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAyNHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE2cHgvMjhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE1cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjgzKS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1oNltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC42NykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtYm9keS1zdHJvbmdbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MCAwIDEycHh9Lm1hdC1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FwdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTJweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6MzAwIDExMnB4LzExMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wNWVtO21hcmdpbjowIDAgNTZweH0ubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNTZweC81NnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMmVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNDVweC80OHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMDVlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDM0cHgvNDBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgNjRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FyZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjBweH0ubWF0LWNhcmQtc3VidGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcmQtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2hlY2tib3gtbGF5b3V0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC10cmFpbGluZy1pY29uLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmUubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxOHB4fS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jYWxlbmRhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FsZW5kYXItYm9keVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEzcHh9Lm1hdC1jYWxlbmRhci1ib2R5LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgdGhbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWRpYWxvZy10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMTI1O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTUwJTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjVlbTt3aWR0aDoxLjVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW07bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi41ZW0gMDtib3JkZXItdG9wOi44NDM3NWVtIHNvbGlkIHRyYW5zcGFyZW50fS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3RvcDotMC44NDM3NWVtO3BhZGRpbmctdG9wOi44NDM3NWVtfS5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjc1JTttYXJnaW4tdG9wOi42NjY2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNzkxNjY2NjY2N2VtKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi40Mzc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAycHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyM2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMjgxMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi41NDE2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNjY2NjY2NjY2N2VtKX1AbWVkaWEgcHJpbnR7Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIyZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIxZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMmVtKSBzY2FsZSgwLjc1KX19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjI1ZW0gMCAuNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4wOTM3NWVtO21hcmdpbi10b3A6LTAuNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MWVtIDAgMWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjg0Mzc1ZW07bWFyZ2luLXRvcDotMC4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH1pbnB1dC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDotMC4wNjI1ZW19Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1wYWdlLXNpemVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4fS5tYXQtcmFkaW8tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3RbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbX0ubWF0LXNsaWRlLXRvZ2dsZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXN0ZXBwZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc3RlcC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtc3RlcC1zdWItbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0Om5vcm1hbH0ubWF0LXN0ZXAtbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtc3RlcC1sYWJlbC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdGFiLWdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjB9Lm1hdC10b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEwcHg7cGFkZGluZy10b3A6NnB4O3BhZGRpbmctYm90dG9tOjZweH0ubWF0LXRvb2x0aXAtaGFuZHNldFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7cGFkZGluZy10b3A6OHB4O3BhZGRpbmctYm90dG9tOjhweH0ubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTZweH0ubWF0LW9wdGdyb3VwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LXNpbXBsZS1zbmFja2Jhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4fS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbltfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MTtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRyZWVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbmVzdGVkLXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtc2l6ZToxNHB4fS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdOm5vdCg6ZW1wdHkpe3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApfS5tYXQtcmlwcGxlLm1hdC1yaXBwbGUtdW5ib3VuZGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzp2aXNpYmxlfS5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO2JvcmRlci1yYWRpdXM6NTAlO3BvaW50ZXItZXZlbnRzOm5vbmU7dHJhbnNpdGlvbjpvcGFjaXR5LHRyYW5zZm9ybSAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7dHJhbnNmb3JtOnNjYWxlKDApfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpub25lfS5jZGstdmlzdWFsbHktaGlkZGVuW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6MDtjbGlwOnJlY3QoMCAwIDAgMCk7aGVpZ2h0OjFweDttYXJnaW46LTFweDtvdmVyZmxvdzpoaWRkZW47cGFkZGluZzowO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjFweDt3aGl0ZS1zcGFjZTpub3dyYXA7b3V0bGluZTowOy13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BvaW50ZXItZXZlbnRzOm5vbmU7dG9wOjA7bGVmdDowO2hlaWdodDoxMDAlO3dpZHRoOjEwMCV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdOmVtcHR5e2Rpc3BsYXk6bm9uZX0uY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LXBhbmVbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3BvaW50ZXItZXZlbnRzOmF1dG87Ym94LXNpemluZzpib3JkZXItYm94O3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7bWF4LXdpZHRoOjEwMCU7bWF4LWhlaWdodDoxMDAlfS5jZGstb3ZlcmxheS1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7bGVmdDowO3JpZ2h0OjA7ei1pbmRleDoxMDAwO3BvaW50ZXItZXZlbnRzOmF1dG87LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50O3RyYW5zaXRpb246b3BhY2l0eSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKTtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5Oi42fS5jZGstb3ZlcmxheS1kYXJrLWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjMyKX0uY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTowfS5jZGstb3ZlcmxheS1jb25uZWN0ZWQtcG9zaXRpb24tYm91bmRpbmctYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjttaW4td2lkdGg6MXB4O21pbi1oZWlnaHQ6MXB4fS5jZGstZ2xvYmFsLXNjcm9sbGJsb2NrW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt3aWR0aDoxMDAlO292ZXJmbG93LXk6c2Nyb2xsfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZVtfbmdjb250ZW50LSVDT01QJV17cmVzaXplOm5vbmV9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZ1tfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6YXV0byAhaW1wb3J0YW50O292ZXJmbG93OmhpZGRlbiAhaW1wb3J0YW50fXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmctZmlyZWZveFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6MCAhaW1wb3J0YW50fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnR7fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5ke30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxse2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydCAwcyAxbXN9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06bm90KDotd2Via2l0LWF1dG9maWxsKXthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5kIDBzIDFtc30ubWF0LWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1tZGMtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX1bX25naG9zdC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47aGVpZ2h0OjEwMCV9LmNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtmbGV4OjE7bWluLWhlaWdodDowcHg7d2lkdGg6MTAwJX0uc2lkZWJhci1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxMDAlO292ZXJmbG93OmhpZGRlbn0uc2lkZWJhci1jb250ZW50c1tfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtoZWlnaHQ6MTAwJTttaW4td2lkdGg6MTUwcHh9LmFuYWx5c2lzLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O2ZsZXg6MSAxO2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtoZWlnaHQ6MTAwJX0ucnVuLXNlbGVjdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXttYXgtaGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uZW1iZWRkaW5nLXByb2plY3Rpb25bX25nY29udGVudC0lQ09NUCVde21pbi1oZWlnaHQ6MHB4O3dpZHRoOjEwMCV9LnNpZGUtdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXthbGlnbi1pdGVtczpjZW50ZXI7Ym9yZGVyOjFweCBzb2xpZCAjZWJlYmViO2JvcmRlci1yYWRpdXM6M3B4O2JvdHRvbToxMHB4O2Rpc3BsYXk6ZmxleDtoZWlnaHQ6MzBweDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2xlZnQ6MTBweDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDozMHB4fS5ydW4tZGl2aWRlcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4xMik7Y29udGVudDoiIjtoZWlnaHQ6MXB4O292ZXJmbG93OmhpZGRlbn0uZ3JhYmJlcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4xMik7Y29udGVudDoiIjtjdXJzb3I6ZXctcmVzaXplO2hlaWdodDoxMDAlO292ZXJmbG93OmhpZGRlbjt3aWR0aDozcHh9LmFubm90YXRpb25zLWxpc3RbX25nY29udGVudC0lQ09NUCVde2ZsZXg6MSAxO21pbi1oZWlnaHQ6MHB4O3dpZHRoOjEwMCV9J10sY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKENQdCxbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJlbWJlZGRpbmdzLWNvbXBvbmVudCIsdGVtcGxhdGVVcmw6Ii4vZW1iZWRkaW5nc19jb21wb25lbnQubmcuaHRtbCIsc3R5bGVVcmxzOlsiLi9lbWJlZGRpbmdzX2NvbXBvbmVudC5jc3MiXSxjaGFuZ2VEZXRlY3Rpb246am4uT25QdXNofV19XSxudWxsLHtydW5BY3RpdmU6W3t0eXBlOlJffV0sc2lkZWJhckV4cGFuZGVkOlt7dHlwZTpSX31dLHNpZGViYXJXaWR0aDpbe3R5cGU6Ul99XSx0b2dnbGVTaWRlYmFyRXhwYW5kZWQ6W3t0eXBlOkVffV0scmVzaXplVHJpZ2dlcmVkOlt7dHlwZTpFX31dLHJlc2l6ZUdyYWJiZWQ6W3t0eXBlOkVffV0scmVzaXplUmVsZWFzZWQ6W3t0eXBlOkVffV19KTtjbGFzcyBNUHR7Y29uc3RydWN0b3IodCl7dGhpcy5zdG9yZT10LHRoaXMucnVuQWN0aXZlJD10aGlzLnN0b3JlLnBpcGUoclMoX0kpKS5waXBlKFZ0KCh0PT4hIXQmJlsuLi50LnZhbHVlcygpXS5pbmNsdWRlcyghMCkpKSksdGhpcy5zaWRlYmFyRXhwYW5kZWQkPXRoaXMuc3RvcmUucGlwZShyUyhteHQpKSx0aGlzLnNpZGViYXJXaWR0aCQ9dGhpcy5zdG9yZS5waXBlKHJTKHB4dCkpLHRoaXMucmVzaXppbmc9ITF9b25Ub2dnbGVTaWRlYmFyRXhwYW5kZWQoKXt0aGlzLnN0b3JlLmRpc3BhdGNoKEh2dCgpKX1vblJlc2l6ZVRyaWdnZXJlZCh0KXt0aGlzLnJlc2l6aW5nJiZ0aGlzLnN0b3JlLmRpc3BhdGNoKEl2dCh7c2lkZWJhcldpZHRoOnQuY2xpZW50WH0pKX1vblJlc2l6ZUdyYWJiZWQoKXt0aGlzLnJlc2l6aW5nPSEwfW9uUmVzaXplUmVsZWFzZWQoKXt0aGlzLnJlc2l6aW5nPSExfX1mdW5jdGlvbiB2UHQodCxlKXsxJnQmJnZmKDAsIm5wbWktaW5hY3RpdmUtdmlldyIpfWZ1bmN0aW9uIHhQdCh0LGUpezEmdCYmdmYoMCwibnBtaS1tYWluIil9ZnVuY3Rpb24gT1B0KHQsZSl7MSZ0JiZ2ZigwLCJucG1pLWVtYmVkZGluZ3MiKX1mdW5jdGlvbiBQUHQodCxlKXtpZigxJnQmJihIbSgwLHhQdCwxLDAsIm5wbWktbWFpbiIsMyksSG0oMSxPUHQsMSwwLCJucG1pLWVtYmVkZGluZ3MiLDMpKSwyJnQpe2NvbnN0IHQ9emYoKTtiZigibmdJZiIsdC5hY3RpdmVWaWV3PT09dC5WaWV3QWN0aXZlLkRFRkFVTFQpLERjKDEpLGJmKCJuZ0lmIix0LmFjdGl2ZVZpZXc9PT10LlZpZXdBY3RpdmUuRU1CRURESU5HUyl9fU1QdC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8TVB0KShnZihpUykpfSxNUHQuybVjbXA9c28oe3R5cGU6TVB0LHNlbGVjdG9yczpbWyJucG1pLWVtYmVkZGluZ3MiXV0sZGVjbHM6NCx2YXJzOjksY29uc3RzOltbMywicnVuQWN0aXZlIiwic2lkZWJhckV4cGFuZGVkIiwic2lkZWJhcldpZHRoIiwidG9nZ2xlU2lkZWJhckV4cGFuZGVkIiwicmVzaXplVHJpZ2dlcmVkIiwicmVzaXplR3JhYmJlZCIsInJlc2l6ZVJlbGVhc2VkIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihDZigwLCJlbWJlZGRpbmdzLWNvbXBvbmVudCIsMCksUmYoInRvZ2dsZVNpZGViYXJFeHBhbmRlZCIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5vblRvZ2dsZVNpZGViYXJFeHBhbmRlZCgpfSkpKCJyZXNpemVUcmlnZ2VyZWQiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLm9uUmVzaXplVHJpZ2dlcmVkKGUpfSkpKCJyZXNpemVHcmFiYmVkIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLm9uUmVzaXplR3JhYmJlZCgpfSkpKCJyZXNpemVSZWxlYXNlZCIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5vblJlc2l6ZVJlbGVhc2VkKCl9KSksX3koMSwiYXN5bmMiKSxfeSgyLCJhc3luYyIpLF95KDMsImFzeW5jIiksTWYoKSksMiZlJiZiZigicnVuQWN0aXZlIixDeSgxLDMsbi5ydW5BY3RpdmUkKSkoInNpZGViYXJFeHBhbmRlZCIsQ3koMiw1LG4uc2lkZWJhckV4cGFuZGVkJCkpKCJzaWRlYmFyV2lkdGgiLEN5KDMsNyxuLnNpZGViYXJXaWR0aCQpKX0sZGlyZWN0aXZlczpbQ1B0XSxwaXBlczpbVnZdLGVuY2Fwc3VsYXRpb246MixjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoTVB0LFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6Im5wbWktZW1iZWRkaW5ncyIsdGVtcGxhdGU6J1xuICAgIDxlbWJlZGRpbmdzLWNvbXBvbmVudFxuICAgICAgW3J1bkFjdGl2ZV09InJ1bkFjdGl2ZSQgfCBhc3luYyJcbiAgICAgIFtzaWRlYmFyRXhwYW5kZWRdPSJzaWRlYmFyRXhwYW5kZWQkIHwgYXN5bmMiXG4gICAgICBbc2lkZWJhcldpZHRoXT0ic2lkZWJhcldpZHRoJCB8IGFzeW5jIlxuICAgICAgKHRvZ2dsZVNpZGViYXJFeHBhbmRlZCk9Im9uVG9nZ2xlU2lkZWJhckV4cGFuZGVkKCkiXG4gICAgICAocmVzaXplVHJpZ2dlcmVkKT0ib25SZXNpemVUcmlnZ2VyZWQoJGV2ZW50KSJcbiAgICAgIChyZXNpemVHcmFiYmVkKT0ib25SZXNpemVHcmFiYmVkKCkiXG4gICAgICAocmVzaXplUmVsZWFzZWQpPSJvblJlc2l6ZVJlbGVhc2VkKCkiXG4gICAgPjwvZW1iZWRkaW5ncy1jb21wb25lbnQ+XG4gICcsY2hhbmdlRGV0ZWN0aW9uOmpuLk9uUHVzaH1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmlTfV19KSxudWxsKTtjbGFzcyB3UHR7Y29uc3RydWN0b3IoKXt0aGlzLlZpZXdBY3RpdmU9anZ0fX13UHQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHdQdCl9LHdQdC7JtWNtcD1zbyh7dHlwZTp3UHQsc2VsZWN0b3JzOltbIm5wbWktY29tcG9uZW50Il1dLGlucHV0czp7cnVuczoicnVucyIsYWN0aXZlVmlldzoiYWN0aXZlVmlldyJ9LGRlY2xzOjQsdmFyczoyLGNvbnN0czpbWzEsIm5wbWktY29udGFpbmVyIl0sWzQsIm5nSWYiLCJuZ0lmRWxzZSJdLFsiZGF0YUF2YWlsYWJsZSIsIiJdLFs0LCJuZ0lmIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXtpZigxJmUmJihDZigwLCJkaXYiLDApLEhtKDEsdlB0LDEsMCwibnBtaS1pbmFjdGl2ZS12aWV3IiwxKSxIbSgyLFBQdCwyLDIsIm5nLXRlbXBsYXRlIixudWxsLDIscXkpLE1mKCkpLDImZSl7Y29uc3QgdD1GbSgzKTtEYygxKSxiZigibmdJZiIsMD09PW4ucnVucy5zaXplKSgibmdJZkVsc2UiLHQpfX0sZGlyZWN0aXZlczpbUHYsdXh0LG1QdCxNUHRdLHN0eWxlczpbIltfbmdob3N0LSVDT01QJV17ZGlzcGxheTpmbGV4O2hlaWdodDoxMDAlfS5ucG1pLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17ZmxleDoxIDF9Il0sY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKHdQdCxbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJucG1pLWNvbXBvbmVudCIsdGVtcGxhdGVVcmw6Ii4vbnBtaV9jb21wb25lbnQubmcuaHRtbCIsc3R5bGVVcmxzOlsiLi9ucG1pX2NvbXBvbmVudC5jc3MiXSxjaGFuZ2VEZXRlY3Rpb246am4uT25QdXNofV19XSxudWxsLHtydW5zOlt7dHlwZTpSX31dLGFjdGl2ZVZpZXc6W3t0eXBlOlJffV19KTtjbGFzcyBrUHR7Y29uc3RydWN0b3IodCl7dGhpcy5zdG9yZT10LHRoaXMucnVucyQ9dGhpcy5zdG9yZS5waXBlKHJTKF9JKSksdGhpcy5hY3RpdmVWaWV3JD10aGlzLnN0b3JlLnBpcGUoclMobHh0KSl9bmdPbkluaXQoKXt0aGlzLnN0b3JlLmRpc3BhdGNoKGZ2dCgpKX19a1B0Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxrUHQpKGdmKGlTKSl9LGtQdC7JtWNtcD1zbyh7dHlwZTprUHQsc2VsZWN0b3JzOltbIm5wbWkiXV0sZGVjbHM6Myx2YXJzOjYsY29uc3RzOltbMywicnVucyIsImFjdGl2ZVZpZXciXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKHZmKDAsIm5wbWktY29tcG9uZW50IiwwKSxfeSgxLCJhc3luYyIpLF95KDIsImFzeW5jIikpLDImZSYmYmYoInJ1bnMiLEN5KDEsMixuLnJ1bnMkKSkoImFjdGl2ZVZpZXciLEN5KDIsNCxuLmFjdGl2ZVZpZXckKSl9LGRpcmVjdGl2ZXM6W3dQdF0scGlwZXM6W1Z2XSxlbmNhcHN1bGF0aW9uOjJ9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKGtQdCxbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJucG1pIix0ZW1wbGF0ZTonXG4gICAgPG5wbWktY29tcG9uZW50XG4gICAgICBbcnVuc109InJ1bnMkIHwgYXN5bmMiXG4gICAgICBbYWN0aXZlVmlld109ImFjdGl2ZVZpZXckIHwgYXN5bmMiXG4gICAgPjwvbnBtaS1jb21wb25lbnQ+XG4gICd9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTppU31dfSksbnVsbCk7Y2xhc3MgU1B0e31TUHQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFNQdCl9LFNQdC7JtW1vZD1mbyh7dHlwZTpTUHR9KSxTUHQuybVpbmo9RG4oe2ltcG9ydHM6W1tyeCx0WSxNWix2cSxJTF1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihTUHQsW3t0eXBlOkxfLGFyZ3M6W3tkZWNsYXJhdGlvbnM6W3FPdCxZT3RdLGltcG9ydHM6W3J4LHRZLE1aLHZxLElMXSxleHBvcnRzOltxT3RdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmdW8oU1B0LHtkZWNsYXJhdGlvbnM6W3FPdCxZT3RdLGltcG9ydHM6W3J4LHRZLE1aLHZxLElMXSxleHBvcnRzOltxT3RdfSk7Y2xhc3MgRFB0e31EUHQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fERQdCl9LERQdC7JtW1vZD1mbyh7dHlwZTpEUHR9KSxEUHQuybVpbmo9RG4oe2ltcG9ydHM6W1tyeCx0WSx2cSxUWl1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihEUHQsW3t0eXBlOkxfLGFyZ3M6W3tkZWNsYXJhdGlvbnM6W1NPdCxET3RdLGltcG9ydHM6W3J4LHRZLHZxLFRaXSxleHBvcnRzOltET3RdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmdW8oRFB0LHtkZWNsYXJhdGlvbnM6W1NPdCxET3RdLGltcG9ydHM6W3J4LHRZLHZxLFRaXSxleHBvcnRzOltET3RdfSk7Y2xhc3MgUlB0e31SUHQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFJQdCl9LFJQdC7JtW1vZD1mbyh7dHlwZTpSUHR9KSxSUHQuybVpbmo9RG4oe2ltcG9ydHM6W1tyeCx0WSx2cSxJTCx3T3QsRFB0XV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKFJQdCxbe3R5cGU6TF8sYXJnczpbe2RlY2xhcmF0aW9uczpbQU90LFRPdF0saW1wb3J0czpbcngsdFksdnEsSUwsd090LERQdF0sZXhwb3J0czpbVE90XX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnVvKFJQdCx7ZGVjbGFyYXRpb25zOltBT3QsVE90XSxpbXBvcnRzOltyeCx0WSx2cSxJTCx3T3QsRFB0XSxleHBvcnRzOltUT3RdfSk7Y2xhc3MgRVB0e31FUHQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEVQdCl9LEVQdC7JtW1vZD1mbyh7dHlwZTpFUHR9KSxFUHQuybVpbmo9RG4oe2ltcG9ydHM6W1tyeCx0WSxNWix2cV1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihFUHQsW3t0eXBlOkxfLGFyZ3M6W3tkZWNsYXJhdGlvbnM6W0xPdCxCT3RdLGltcG9ydHM6W3J4LHRZLE1aLHZxXSxleHBvcnRzOltCT3RdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmdW8oRVB0LHtkZWNsYXJhdGlvbnM6W0xPdCxCT3RdLGltcG9ydHM6W3J4LHRZLE1aLHZxXSxleHBvcnRzOltCT3RdfSk7Y2xhc3MgQVB0e31BUHQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEFQdCl9LEFQdC7JtW1vZD1mbyh7dHlwZTpBUHR9KSxBUHQuybVpbmo9RG4oe2ltcG9ydHM6W1tyeF1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihBUHQsW3t0eXBlOkxfLGFyZ3M6W3tkZWNsYXJhdGlvbnM6W3pPdF0saW1wb3J0czpbcnhdLGV4cG9ydHM6W3pPdF19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZ1byhBUHQse2RlY2xhcmF0aW9uczpbek90XSxpbXBvcnRzOltyeF0sZXhwb3J0czpbek90XX0pO2NsYXNzIFRQdHt9VFB0Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxUUHQpfSxUUHQuybVtb2Q9Zm8oe3R5cGU6VFB0fSksVFB0Lsm1aW5qPURuKHtpbXBvcnRzOltbQVB0XV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKFRQdCxbe3R5cGU6TF8sYXJnczpbe2RlY2xhcmF0aW9uczpbSU90XSxpbXBvcnRzOltBUHRdLGV4cG9ydHM6W0lPdF19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZ1byhUUHQse2RlY2xhcmF0aW9uczpbSU90XSxpbXBvcnRzOltBUHRdLGV4cG9ydHM6W0lPdF19KTtjbGFzcyBOUHR7fU5QdC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8TlB0KX0sTlB0Lsm1bW9kPWZvKHt0eXBlOk5QdH0pLE5QdC7JtWluaj1Ebih7aW1wb3J0czpbW3J4LFJQdCxFUHQsVFB0LGlCLFNQdF1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihOUHQsW3t0eXBlOkxfLGFyZ3M6W3tkZWNsYXJhdGlvbnM6W0tPdCxKT3RdLGltcG9ydHM6W3J4LFJQdCxFUHQsVFB0LGlCLFNQdF0sZXhwb3J0czpbSk90XX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnVvKE5QdCx7ZGVjbGFyYXRpb25zOltLT3QsSk90XSxpbXBvcnRzOltyeCxSUHQsRVB0LFRQdCxpQixTUHRdLGV4cG9ydHM6W0pPdF19KTtjbGFzcyB6UHR7fXpQdC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8elB0KX0selB0Lsm1bW9kPWZvKHt0eXBlOnpQdH0pLHpQdC7JtWluaj1Ebih7aW1wb3J0czpbW3J4LHRZLHZxLElMXV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKHpQdCxbe3R5cGU6TF8sYXJnczpbe2RlY2xhcmF0aW9uczpbZlB0LHVQdF0saW1wb3J0czpbcngsdFksdnEsSUxdLGV4cG9ydHM6W3VQdF19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZ1byh6UHQse2RlY2xhcmF0aW9uczpbZlB0LHVQdF0saW1wb3J0czpbcngsdFksdnEsSUxdLGV4cG9ydHM6W3VQdF19KTtjbGFzcyBJUHR7fUlQdC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8SVB0KX0sSVB0Lsm1bW9kPWZvKHt0eXBlOklQdH0pLElQdC7JtWluaj1Ebih7aW1wb3J0czpbW3J4LHRZLGVZLHZxLGp4dCxqMF1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihJUHQsW3t0eXBlOkxfLGFyZ3M6W3tkZWNsYXJhdGlvbnM6W3F4dCxaeHRdLGltcG9ydHM6W3J4LHRZLGVZLHZxLGp4dCxqMF0sZXhwb3J0czpbWnh0XX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnVvKElQdCx7ZGVjbGFyYXRpb25zOltxeHQsWnh0XSxpbXBvcnRzOltyeCx0WSxlWSx2cSxqeHQsajBdLGV4cG9ydHM6W1p4dF19KTtjbGFzcyBIUHR7fUhQdC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8SFB0KX0sSFB0Lsm1bW9kPWZvKHt0eXBlOkhQdH0pLEhQdC7JtWluaj1Ebih7aW1wb3J0czpbW3J4LGp4dF1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihIUHQsW3t0eXBlOkxfLGFyZ3M6W3tkZWNsYXJhdGlvbnM6W1h4dF0saW1wb3J0czpbcngsanh0XSxleHBvcnRzOltYeHRdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmdW8oSFB0LHtkZWNsYXJhdGlvbnM6W1h4dF0saW1wb3J0czpbcngsanh0XSxleHBvcnRzOltYeHRdfSk7Y2xhc3MgRlB0e31GUHQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEZQdCl9LEZQdC7JtW1vZD1mbyh7dHlwZTpGUHR9KSxGUHQuybVpbmo9RG4oe2ltcG9ydHM6W1tyeCxqeHQsSVB0LEhQdF1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihGUHQsW3t0eXBlOkxfLGFyZ3M6W3tkZWNsYXJhdGlvbnM6WyR4dCx0T3RdLGltcG9ydHM6W3J4LGp4dCxJUHQsSFB0XSxleHBvcnRzOlt0T3RdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmdW8oRlB0LHtkZWNsYXJhdGlvbnM6WyR4dCx0T3RdLGltcG9ydHM6W3J4LGp4dCxJUHQsSFB0XSxleHBvcnRzOlt0T3RdfSk7Y2xhc3MgTFB0e31MUHQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fExQdCl9LExQdC7JtW1vZD1mbyh7dHlwZTpMUHR9KSxMUHQuybVpbmo9RG4oe2ltcG9ydHM6W1tyeCx2cSxUWixxM11dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihMUHQsW3t0eXBlOkxfLGFyZ3M6W3tkZWNsYXJhdGlvbnM6W194dCxDeHRdLGltcG9ydHM6W3J4LHZxLFRaLHEzXSxleHBvcnRzOltDeHRdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmdW8oTFB0LHtkZWNsYXJhdGlvbnM6W194dCxDeHRdLGltcG9ydHM6W3J4LHZxLFRaLHEzXSxleHBvcnRzOltDeHRdfSk7Y2xhc3MgQlB0e31CUHQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEJQdCl9LEJQdC7JtW1vZD1mbyh7dHlwZTpCUHR9KSxCUHQuybVpbmo9RG4oe2ltcG9ydHM6W1tyeCx2cSxJTF1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihCUHQsW3t0eXBlOkxfLGFyZ3M6W3tkZWNsYXJhdGlvbnM6W3h4dCxPeHRdLGltcG9ydHM6W3J4LHZxLElMXSxleHBvcnRzOltPeHRdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmdW8oQlB0LHtkZWNsYXJhdGlvbnM6W3h4dCxPeHRdLGltcG9ydHM6W3J4LHZxLElMXSxleHBvcnRzOltPeHRdfSk7Y2xhc3MgVlB0e31WUHQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFZQdCl9LFZQdC7JtW1vZD1mbyh7dHlwZTpWUHR9KSxWUHQuybVpbmo9RG4oe2ltcG9ydHM6W1tyeCxMUHQsRlB0LEJQdF1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihWUHQsW3t0eXBlOkxfLGFyZ3M6W3tkZWNsYXJhdGlvbnM6W2VPdF0saW1wb3J0czpbcngsTFB0LEZQdCxCUHRdLGV4cG9ydHM6W2VPdF19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZ1byhWUHQse2RlY2xhcmF0aW9uczpbZU90XSxpbXBvcnRzOltyeCxMUHQsRlB0LEJQdF0sZXhwb3J0czpbZU90XX0pO2NsYXNzIGpQdHt9alB0Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxqUHQpfSxqUHQuybVtb2Q9Zm8oe3R5cGU6alB0fSksalB0Lsm1aW5qPURuKHtpbXBvcnRzOltbcnhdXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoalB0LFt7dHlwZTpMXyxhcmdzOlt7ZGVjbGFyYXRpb25zOlskT3QsdFB0XSxpbXBvcnRzOltyeF0sZXhwb3J0czpbdFB0XX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnVvKGpQdCx7ZGVjbGFyYXRpb25zOlskT3QsdFB0XSxpbXBvcnRzOltyeF0sZXhwb3J0czpbdFB0XX0pO2NsYXNzIFVQdHt9VVB0Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxVUHQpfSxVUHQuybVtb2Q9Zm8oe3R5cGU6VVB0fSksVVB0Lsm1aW5qPURuKHtpbXBvcnRzOltbcngsdnEsSUwsalB0XV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKFVQdCxbe3R5cGU6TF8sYXJnczpbe2RlY2xhcmF0aW9uczpbaVB0LGFQdF0saW1wb3J0czpbcngsdnEsSUwsalB0XSxleHBvcnRzOlthUHRdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmdW8oVVB0LHtkZWNsYXJhdGlvbnM6W2lQdCxhUHRdLGltcG9ydHM6W3J4LHZxLElMLGpQdF0sZXhwb3J0czpbYVB0XX0pO2NsYXNzIFdQdHt9V1B0Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxXUHQpfSxXUHQuybVtb2Q9Zm8oe3R5cGU6V1B0fSksV1B0Lsm1aW5qPURuKHtpbXBvcnRzOltbcngsdFksTVosdnEscl90LFZQdCxJTCxOUHQsVVB0LHpQdF1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihXUHQsW3t0eXBlOkxfLGFyZ3M6W3tkZWNsYXJhdGlvbnM6W0NQdCxNUHRdLGltcG9ydHM6W3J4LHRZLE1aLHZxLHJfdCxWUHQsSUwsTlB0LFVQdCx6UHRdLGV4cG9ydHM6W01QdF19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZ1byhXUHQse2RlY2xhcmF0aW9uczpbQ1B0LE1QdF0saW1wb3J0czpbcngsdFksTVosdnEscl90LFZQdCxJTCxOUHQsVVB0LHpQdF0sZXhwb3J0czpbTVB0XX0pO2NsYXNzIEdQdHt9R1B0Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxHUHQpfSxHUHQuybVtb2Q9Zm8oe3R5cGU6R1B0fSksR1B0Lsm1aW5qPURuKHt9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKEdQdCxbe3R5cGU6TF8sYXJnczpbe2RlY2xhcmF0aW9uczpbdXh0XSxleHBvcnRzOlt1eHRdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmdW8oR1B0LHtkZWNsYXJhdGlvbnM6W3V4dF0sZXhwb3J0czpbdXh0XX0pO2NsYXNzIFlQdHt9WVB0Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxZUHQpfSxZUHQuybVtb2Q9Zm8oe3R5cGU6WVB0fSksWVB0Lsm1aW5qPURuKHtpbXBvcnRzOltbcngsdFksSUwsdnFdXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoWVB0LFt7dHlwZTpMXyxhcmdzOlt7ZGVjbGFyYXRpb25zOlthT3Qsck90XSxpbXBvcnRzOltyeCx0WSxJTCx2cV0sZXhwb3J0czpbck90XX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnVvKFlQdCx7ZGVjbGFyYXRpb25zOlthT3Qsck90XSxpbXBvcnRzOltyeCx0WSxJTCx2cV0sZXhwb3J0czpbck90XX0pO2NsYXNzIHFQdHt9cVB0Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxxUHQpfSxxUHQuybVtb2Q9Zm8oe3R5cGU6cVB0fSkscVB0Lsm1aW5qPURuKHtpbXBvcnRzOltbcngsdFksdnEsSUwsWVB0XV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKHFQdCxbe3R5cGU6TF8sYXJnczpbe2RlY2xhcmF0aW9uczpbY090LGRPdF0saW1wb3J0czpbcngsdFksdnEsSUwsWVB0XSxleHBvcnRzOltkT3RdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmdW8ocVB0LHtkZWNsYXJhdGlvbnM6W2NPdCxkT3RdLGltcG9ydHM6W3J4LHRZLHZxLElMLFlQdF0sZXhwb3J0czpbZE90XX0pO2NsYXNzIFpQdHt9WlB0Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxaUHQpfSxaUHQuybVtb2Q9Zm8oe3R5cGU6WlB0fSksWlB0Lsm1aW5qPURuKHtpbXBvcnRzOltbcngsdFksTVosdnEscl90LFZQdCxJTCxxUHQsTlB0LFVQdF1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihaUHQsW3t0eXBlOkxfLGFyZ3M6W3tkZWNsYXJhdGlvbnM6W3BQdCxtUHRdLGltcG9ydHM6W3J4LHRZLE1aLHZxLHJfdCxWUHQsSUwscVB0LE5QdCxVUHRdLGV4cG9ydHM6W21QdF19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZ1byhaUHQse2RlY2xhcmF0aW9uczpbcFB0LG1QdF0saW1wb3J0czpbcngsdFksTVosdnEscl90LFZQdCxJTCxxUHQsTlB0LFVQdF0sZXhwb3J0czpbbVB0XX0pO2NsYXNzIFhQdHt9WFB0Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxYUHQpfSxYUHQuybVtb2Q9Zm8oe3R5cGU6WFB0fSksWFB0Lsm1aW5qPURuKHtpbXBvcnRzOltbcngsR1B0LFpQdCxXUHQsbXZ0LFRTLmZvckZlYXR1cmUoTHZ0LGh4dCksaEQuZm9yRmVhdHVyZShbZnh0XSksTVguZm9yUGx1Z2luKCJucG1pIixrUHQpXV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKFhQdCxbe3R5cGU6TF8sYXJnczpbe2RlY2xhcmF0aW9uczpbd1B0LGtQdF0saW1wb3J0czpbcngsR1B0LFpQdCxXUHQsbXZ0LFRTLmZvckZlYXR1cmUoTHZ0LGh4dCksaEQuZm9yRmVhdHVyZShbZnh0XSksTVguZm9yUGx1Z2luKCJucG1pIixrUHQpXSxleHBvcnRzOltrUHRdLGVudHJ5Q29tcG9uZW50czpba1B0XX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnVvKFhQdCx7ZGVjbGFyYXRpb25zOlt3UHQsa1B0XSxpbXBvcnRzOltyeCxHUHQsWlB0LFdQdCxtdnQsQVMsZ0QsTVhdLGV4cG9ydHM6W2tQdF19KTtjbGFzcyBLUHR7fUtQdC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8S1B0KX0sS1B0Lsm1cHJvdj1Tbih7dG9rZW46S1B0LGZhY3Rvcnk6S1B0Lsm1ZmFjfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihLUHQsW3t0eXBlOlVtfV0sbnVsbCxudWxsKTtjbGFzcyBKUHR7Y29uc3RydWN0b3IodCl7dGhpcy5odHRwPXQsdGhpcy5odHRwUGF0aFByZWZpeD0iZGF0YS9wbHVnaW4vdGV4dF92MiJ9ZmV0Y2hSdW5Ub1RhZygpe3JldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMuaHR0cFBhdGhQcmVmaXgrIi90YWdzIikucGlwZShWdCgodD0+e2NvbnN0IGU9bmV3IE1hcDtyZXR1cm4gT2JqZWN0LmVudHJpZXModCkuZm9yRWFjaCgoKFt0LG5dKT0+e2Uuc2V0KHQsbil9KSksZX0pKSl9ZmV0Y2hUZXh0RGF0YSh0LGUpe2NvbnN0IG49bmV3IFVSTFNlYXJjaFBhcmFtcyh7cnVuOnQsdGFnOmV9KTtyZXR1cm4gdGhpcy5odHRwLmdldCh0aGlzLmh0dHBQYXRoUHJlZml4K2AvdGV4dD8ke24udG9TdHJpbmcoKX1gKS5waXBlKFZ0KCh0PT50Lm1hcCgodD0+KHtvcmlnaW5hbFNoYXBlOnQub3JpZ2luYWxfc2hhcGUsc3RlcDp0LnN0ZXAsc3RyaW5nQXJyYXk6dC5zdHJpbmdfYXJyYXksd2FsbFRpbWVJbk1zOjFlMyp0LndhbGxfdGltZSx0cnVuY2F0ZWQ6dC50cnVuY2F0ZWR9KSkpKSkpfX1KUHQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEpQdCkoVHIoSEUpKX0sSlB0Lsm1cHJvdj1Tbih7dG9rZW46SlB0LGZhY3Rvcnk6SlB0Lsm1ZmFjfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihKUHQsW3t0eXBlOlVtfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOkhFfV19KSxudWxsKTtjbGFzcyBRUHR7fVFQdC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8UVB0KX0sUVB0Lsm1bW9kPWZvKHt0eXBlOlFQdH0pLFFQdC7JtWluaj1Ebih7cHJvdmlkZXJzOltKUHQse3Byb3ZpZGU6S1B0LHVzZUV4aXN0aW5nOkpQdH1dLGltcG9ydHM6W1tGRV1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihRUHQsW3t0eXBlOkxfLGFyZ3M6W3tpbXBvcnRzOltGRV0scHJvdmlkZXJzOltKUHQse3Byb3ZpZGU6S1B0LHVzZUV4aXN0aW5nOkpQdH1dfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmdW8oUVB0LHtpbXBvcnRzOltGRV19KTtjb25zdCAkUHQ9X2soIltUZXh0XSBUZXh0IFBsdWdpbiBMb2FkZWQiKSx0d3Q9X2soIltUZXh0XSBSdW5zIFRvIFRhZyBMb2FkZWQiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSxld3Q9X2soIltUZXh0XSBUYWcgR3JvdXAgVmlzaWJpbGl0eSBDaGFuZ2VkIix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSksbnd0PV9rKCJbVGV4dF0gVGV4dCBEYXRhIExvYWRlZCBMb2FkZWQiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSxvd3Q9InRleHQiLGl3dD1fUyhvd3QpO2JTKGl3dCwodD0+dC5ydW5Ub1RhZ3MpKTtjb25zdCBhd3Q9YlMoaXd0LCh0PT57Y29uc3QgZT1uZXcgU2V0LG49bmV3IFNldDtmb3IoY29uc3QgbyBvZiB0LnZpc2libGVSdW5UYWdzLnZhbHVlcygpKWZvcihjb25zdCB0IG9mIG8pe2NvbnN0IG89SlNPTi5zdHJpbmdpZnkodCk7ZS5oYXMobyl8fChlLmFkZChvKSxuLmFkZCh0KSl9cmV0dXJuWy4uLm5dfSkpLHJ3dD1iUyhpd3QsKCh0LGUpPT57Y29uc3Qgbj10LmRhdGEuZ2V0KGUucnVuKTtyZXR1cm4gbiYmbi5nZXQoZS50YWcpfHxudWxsfSkpO2NsYXNzIHN3dHtjb25zdHJ1Y3Rvcih0LGUsbil7dGhpcy5hY3Rpb25zJD10LHRoaXMuc3RvcmU9ZSx0aGlzLmRhdGFTb3VyY2U9bix0aGlzLmxvYWRSdW5Ub1RhZ3MkPVdTKCgoKT0+dGhpcy5hY3Rpb25zJC5waXBlKCRTKCRQdCksVmUoKCgpPT50aGlzLmRhdGFTb3VyY2UuZmV0Y2hSdW5Ub1RhZygpLnBpcGUoV2UoKHQ9Pnt0aGlzLnN0b3JlLmRpc3BhdGNoKHR3dCh7cnVuVG9UYWdzOnR9KSl9KSksVnQoKCgpPT57fSkpKSkpKSkse2Rpc3BhdGNoOiExfSksdGhpcy5sb2FkRGF0YSQ9V1MoKCgpPT5wZSh0aGlzLmFjdGlvbnMkLnBpcGUoJFMoZXd0KSxWZSgoKHt2aXNpYmxlVGV4dENhcmRzOnR9KT0+aWUodC5tYXAoKCh7cnVuOnQsdGFnOmV9KT0+dGhpcy5zdG9yZS5zZWxlY3Qocnd0LHtydW46dCx0YWc6ZX0pLnBpcGUoKGZ1bmN0aW9uIG4odCxlKXt2YXIgbj1hcmd1bWVudHMubGVuZ3RoPj0yO3JldHVybiBmdW5jdGlvbihvKXtyZXR1cm4gby5waXBlKHQ/dWUoKGZ1bmN0aW9uKGUsbil7cmV0dXJuIHQoZSxuLG8pfSkpOlIsVGUoMSksbj9NZShlKTpTZSgoZnVuY3Rpb24oKXtyZXR1cm4gbmV3IEJ0fSkpKX19KSgpLFZ0KChuPT4oe3J1bjp0LHRhZzplLHRleHREYXRhOm59KSkpKSkpKS5waXBlKFZ0KCh0PT50LmZpbHRlcigoKHt0ZXh0RGF0YTp0fSk9Pm51bGw9PT10KSkubWFwKCgoe3J1bjp0LHRhZzplfSk9Pih7cnVuOnQsdGFnOmV9KSkpKSkpKSkpLHRoaXMuYWN0aW9ucyQucGlwZSgkUyhKRSxRRSkscWUodGhpcy5zdG9yZS5zZWxlY3QoYXd0KSksVnQoKChbLHRdKT0+dCkpKSkucGlwZSgkdCgodD0+aWUodC5tYXAoKHQ9PnRoaXMuZmV0Y2hUZXh0RGF0YSh0KSkpKSkpKSkse2Rpc3BhdGNoOiExfSl9ZmV0Y2hUZXh0RGF0YSh0KXtjb25zdHtydW46ZSx0YWc6bn09dDtyZXR1cm4gdGhpcy5kYXRhU291cmNlLmZldGNoVGV4dERhdGEoZSxuKS5waXBlKFdlKCh0PT57dGhpcy5zdG9yZS5kaXNwYXRjaChud3Qoe3J1bjplLHRhZzpuLHN0ZXBEYXRhOnR9KSl9KSksVnQoKCgpPT57fSkpKX19c3d0Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxzd3QpKFRyKFFTKSxUcihpUyksVHIoS1B0KSl9LHN3dC7JtXByb3Y9U24oe3Rva2VuOnN3dCxmYWN0b3J5OnN3dC7JtWZhY30pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoc3d0LFt7dHlwZTpVbX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpRU30se3R5cGU6aVN9LHt0eXBlOktQdH1dfSksbnVsbCk7Y29uc3QgbHd0PVZTKHtydW5Ub1RhZ3M6bmV3IE1hcChbWyJydW4xIixbImEvYiIsImEvYyJdXSxbInJ1bjIiLFsiYS9iIiwiYS9kIl1dLFsicnVuMyIsWyJjIiwiYS9iIl1dXSksZGF0YTpuZXcgTWFwKFtbInJ1bjEiLG5ldyBNYXAoW1siYS9iIixbe29yaWdpbmFsU2hhcGU6WzNdLHN0ZXA6MCxzdHJpbmdBcnJheTpbWyJmb28iLCJiYXIiLCJiYXoiXV0sd2FsbFRpbWVJbk1zOjE1Nzc4NjU2ZTUsdHJ1bmNhdGVkOiExfSx7b3JpZ2luYWxTaGFwZTpbM10sc3RlcDoxLHN0cmluZ0FycmF5OltbImZvbyIsImJheiJdXSx3YWxsVGltZUluTXM6MTU3Nzg2NTYwMWUzLHRydW5jYXRlZDohMX1dXSxbImEvYyIsW3tvcmlnaW5hbFNoYXBlOlszXSxzdGVwOjAsc3RyaW5nQXJyYXk6W1siV2UgY29uZHVjdGVkIGFuIGV4cGVyaW1lbnQgYW5kIGZvdW5kIHRoZSBmb2xsb3dpbmcgZGF0YTpcblxuUG91bmRzIG9mIGNob2NvbGF0ZSB8IEhhcHBpbmVzc1xuLS0tfC0tLVxuMCB8IDFcbjEgfCA0XG4yIHwgOVxuMyB8IDE2XG40IHwgMjVcbjUgfCAzNlxuNiB8IDQ5XG43IHwgNjRcbjggfCA4MVxuOSB8IDEwMFxuMTAgfCAxMjEiXV0sd2FsbFRpbWVJbk1zOjE1Nzc4NjU2ZTUsdHJ1bmNhdGVkOiExfSx7b3JpZ2luYWxTaGFwZTpbM10sc3RlcDoxLHN0cmluZ0FycmF5OltbIsOXIiwiKiowKioiLCIqKjEqKiIsIioqMioqIiwiKiozKioiLCIqKjQqKiIsIioqNSoqIl0sWyIqKjAqKiIsIjAiLCIwIiwiMCIsIjAiLCIwIiwiMCJdLFsiKioxKioiLCIwIiwiMSIsIjIiLCIzIiwiNCIsIjUiXSxbIioqMioqIiwiMCIsIjIiLCI0IiwiNiIsIjgiLCIxMCJdLFsiKiozKioiLCIwIiwiMyIsIjYiLCI5IiwiMTIiLCIxNSJdLFsiKio0KioiLCIwIiwiNCIsIjgiLCIxMiIsIjE2IiwiMjAiXSxbIioqNSoqIiwiMCIsIjUiLCIxMCIsIjE1IiwiMjAiLCIyNSJdXSx3YWxsVGltZUluTXM6MTU3Nzg2NTYwMWUzLHRydW5jYXRlZDohMX1dXV0pXV0pLHZpc2libGVSdW5UYWdzOm5ldyBNYXB9KTtmdW5jdGlvbiBjd3QodCxlKXtyZXR1cm4gbHd0KHQsZSl9Y2xhc3MgZHd0e31kd3QuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGR3dCl9LGR3dC7JtWNtcD1zbyh7dHlwZTpkd3Qsc2VsZWN0b3JzOltbInRleHQtZGFzaGJvYXJkIl1dLGRlY2xzOjEsdmFyczowLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJlB1KDAsIiBUaGlzIGlzIHRoZSB0ZXh0IGRhc2hib2FyZCAiKX0sZW5jYXBzdWxhdGlvbjoyLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihkd3QsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoidGV4dC1kYXNoYm9hcmQiLHRlbXBsYXRlOiIgVGhpcyBpcyB0aGUgdGV4dCBkYXNoYm9hcmQgIixjaGFuZ2VEZXRlY3Rpb246am4uT25QdXNofV19XSxudWxsLG51bGwpO2NsYXNzIHB3dHt9cHd0Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxwd3QpfSxwd3QuybVtb2Q9Zm8oe3R5cGU6cHd0fSkscHd0Lsm1aW5qPURuKHt9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKHB3dCxbe3R5cGU6TF8sYXJnczpbe2RlY2xhcmF0aW9uczpbZHd0XSxleHBvcnRzOltkd3RdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmdW8ocHd0LHtkZWNsYXJhdGlvbnM6W2R3dF0sZXhwb3J0czpbZHd0XX0pO2NsYXNzIG13dHt9bXd0Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxtd3QpfSxtd3QuybVtb2Q9Zm8oe3R5cGU6bXd0fSksbXd0Lsm1aW5qPURuKHtpbXBvcnRzOltbcngscHd0LE1YLmZvclBsdWdpbigidGV4dF92MiIsZHd0KSxRUHQsVFMuZm9yRmVhdHVyZShvd3QsY3d0KSxoRC5mb3JGZWF0dXJlKFtzd3RdKV1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihtd3QsW3t0eXBlOkxfLGFyZ3M6W3tpbXBvcnRzOltyeCxwd3QsTVguZm9yUGx1Z2luKCJ0ZXh0X3YyIixkd3QpLFFQdCxUUy5mb3JGZWF0dXJlKG93dCxjd3QpLGhELmZvckZlYXR1cmUoW3N3dF0pXSxlbnRyeUNvbXBvbmVudHM6W2R3dF19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZ1byhtd3Qse2ltcG9ydHM6W3J4LHB3dCxNWCxRUHQsQVMsZ0RdfSk7Y2xhc3MgZnd0e312YXIgdXd0O2Z3dC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8Znd0KX0sZnd0Lsm1bW9kPWZvKHt0eXBlOmZ3dH0pLGZ3dC7JtWluaj1Ebih7aW1wb3J0czpbW1kkLEVfdCxYUHQsbXd0XV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKGZ3dCxbe3R5cGU6TF8sYXJnczpbe2ltcG9ydHM6W1kkLEVfdCxYUHQsbXd0XX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnVvKGZ3dCx7aW1wb3J0czpbWSQsRV90LFhQdCxtd3RdfSksKGZ1bmN0aW9uKHQpe3QuQ1VTVE9NX0VMRU1FTlQ9IkNVU1RPTV9FTEVNRU5UIix0LklGUkFNRT0iSUZSQU1FIix0Lk5HX0NPTVBPTkVOVD0iTkdfQ09NUE9ORU5UIix0Lk5PTkU9Ik5PTkUifSkodXd0fHwodXd0PXt9KSk7Y29uc3QgZ3d0PVsicGx1Z2luQ29udGFpbmVyIl0saHd0PVsibmdQbHVnaW5Db250YWluZXIiXTtmdW5jdGlvbiBid3QodCxlKXsxJnQmJlBmKDApfWZ1bmN0aW9uIHl3dCh0LGUpe2lmKDEmdCYmKHhmKDApLEhtKDEsYnd0LDEsMCwibmctY29udGFpbmVyIiw5KSxPZigpKSwyJnQpe2NvbnN0IHQ9emYoMiksZT1GbSg2KTtEYygxKSxiZigibmdUZW1wbGF0ZU91dGxldCIsdC5lbnZpcm9ubWVudEZhaWx1cmVOb3RGb3VuZFRlbXBsYXRlP3QuZW52aXJvbm1lbnRGYWlsdXJlTm90Rm91bmRUZW1wbGF0ZTplKX19ZnVuY3Rpb24gX3d0KHQsZSl7MSZ0JiZQZigwKX1mdW5jdGlvbiBDd3QodCxlKXtpZigxJnQmJih4ZigwKSxIbSgxLF93dCwxLDAsIm5nLWNvbnRhaW5lciIsOSksT2YoKSksMiZ0KXtjb25zdCB0PXpmKDIpLGU9Rm0oNik7RGMoMSksYmYoIm5nVGVtcGxhdGVPdXRsZXQiLHQuZW52aXJvbm1lbnRGYWlsdXJlVW5rbm93blRlbXBsYXRlP3QuZW52aXJvbm1lbnRGYWlsdXJlVW5rbm93blRlbXBsYXRlOmUpfX1mdW5jdGlvbiBNd3QodCxlKXtpZigxJnQmJih4ZigwKSxDZigxLCJoMyIsMTApLFB1KDIsIiBUaGVyZeKAmXMgbm8gZGFzaGJvYXJkIGJ5IHRoZSBuYW1lIG9mIOKAnCIpLENmKDMsImNvZGUiKSxQdSg0KSxNZigpLFB1KDUsIuKAnS4gIiksTWYoKSxDZig2LCJwIiksUHUoNywiWW91IGNhbiBzZWxlY3QgYSBkYXNoYm9hcmQgZnJvbSB0aGUgbGlzdCBhYm92ZS4iKSxNZigpLENmKDgsInAiKSxQZig5LDExKSxNZigpLE9mKCkpLDImdCl7Y29uc3QgdD16ZigyKSxlPUZtKDgpO0RjKDQpLHd1KHQuYWN0aXZlUGx1Z2luSWQpLERjKDUpLGJmKCJuZ1RlbXBsYXRlT3V0bGV0IixlKX19ZnVuY3Rpb24gdnd0KHQsZSl7aWYoMSZ0JiYoeGYoMCksQ2YoMSwiaDMiLDEyKSxQdSgyLCIgTm8gZGFzaGJvYXJkcyBhcmUgYWN0aXZlIGZvciB0aGUgY3VycmVudCBkYXRhIHNldC4gIiksTWYoKSxDZigzLCJwIiksUHUoNCwiUHJvYmFibGUgY2F1c2VzOiIpLE1mKCksQ2YoNSwidWwiKSxDZig2LCJsaSIpLFB1KDcsIllvdSBoYXZlbuKAmXQgd3JpdHRlbiBhbnkgZGF0YSB0byB5b3VyIGV2ZW50IGZpbGVzLiIpLE1mKCksQ2YoOCwibGkiKSxQdSg5LCJUZW5zb3JCb2FyZCBjYW7igJl0IGZpbmQgeW91ciBldmVudCBmaWxlcy4iKSxNZigpLE1mKCksUHUoMTAsIiBJZiB5b3XigJlyZSBuZXcgdG8gdXNpbmcgVGVuc29yQm9hcmQsIGFuZCB3YW50IHRvIGZpbmQgb3V0IGhvdyB0byBhZGQgZGF0YSBhbmQgc2V0IHVwIHlvdXIgZXZlbnQgZmlsZXMsIGNoZWNrIG91dCB0aGUgIiksQ2YoMTEsImEiLDEzKSxQdSgxMiwiUkVBRE1FIiksTWYoKSxQdSgxMywiIGFuZCBwZXJoYXBzIHRoZSAiKSxDZigxNCwiYSIsMTQpLFB1KDE1LCJUZW5zb3JCb2FyZCB0dXRvcmlhbCIpLE1mKCksUHUoMTYsIi4gIiksQ2YoMTcsInAiKSxQdSgxOCwiIElmIHlvdSB0aGluayBUZW5zb3JCb2FyZCBpcyBjb25maWd1cmVkIHByb3Blcmx5LCBwbGVhc2Ugc2VlICIpLENmKDE5LCJhIiwxNSksUHUoMjAsInRoZSBzZWN0aW9uIG9mIHRoZSBSRUFETUUgZGV2b3RlZCB0byBtaXNzaW5nIGRhdGEgcHJvYmxlbXMiKSxNZigpLFB1KDIxLCIgYW5kIGNvbnNpZGVyIGZpbGluZyBhbiBpc3N1ZSBvbiBHaXRIdWIuICIpLE1mKCksQ2YoMjIsInAiKSxQZigyMywxMSksTWYoKSxPZigpKSwyJnQpe3pmKDIpO2NvbnN0IHQ9Rm0oOCk7RGMoMjMpLGJmKCJuZ1RlbXBsYXRlT3V0bGV0Iix0KX19ZnVuY3Rpb24geHd0KHQsZSl7aWYoMSZ0JiYoQ2YoMCwiZGl2Iiw2KSxDZigxLCJkaXYiLDcpLEhtKDIseXd0LDIsMSwibmctY29udGFpbmVyIiw4KSxIbSgzLEN3dCwyLDEsIm5nLWNvbnRhaW5lciIsOCksSG0oNCxNd3QsMTAsMiwibmctY29udGFpbmVyIiw4KSxIbSg1LHZ3dCwyNCwxLCJuZy1jb250YWluZXIiLDgpLE1mKCksTWYoKSksMiZ0KXtjb25zdCB0PXpmKCk7YmYoIm5nU3dpdGNoIix0LnBsdWdpbkxvYWRTdGF0ZSksRGMoMiksYmYoIm5nU3dpdGNoQ2FzZSIsdC5QbHVnaW5Mb2FkU3RhdGUuRU5WSVJPTk1FTlRfRkFJTFVSRV9OT1RfRk9VTkQpLERjKDEpLGJmKCJuZ1N3aXRjaENhc2UiLHQuUGx1Z2luTG9hZFN0YXRlLkVOVklST05NRU5UX0ZBSUxVUkVfVU5LTk9XTiksRGMoMSksYmYoIm5nU3dpdGNoQ2FzZSIsdC5QbHVnaW5Mb2FkU3RhdGUuVU5LTk9XTl9QTFVHSU5fSUQpLERjKDEpLGJmKCJuZ1N3aXRjaENhc2UiLHQuUGx1Z2luTG9hZFN0YXRlLk5PX0VOQUJMRURfUExVR0lOUyl9fWZ1bmN0aW9uIE93dCh0LGUpe2lmKDEmdCYmKENmKDAsImgzIiwxNiksUHUoMSwiRGF0YSBjb3VsZCBub3QgYmUgbG9hZGVkLiIpLE1mKCksQ2YoMiwicCIpLFB1KDMsIlRoZSBUZW5zb3JCb2FyZCBzZXJ2ZXIgbWF5IGJlIGRvd24gb3IgaW5hY2Nlc3NpYmxlLiIpLE1mKCksQ2YoNCwicCIpLFBmKDUsMTEpLE1mKCkpLDImdCl7emYoKTtjb25zdCB0PUZtKDgpO0RjKDUpLGJmKCJuZ1RlbXBsYXRlT3V0bGV0Iix0KX19ZnVuY3Rpb24gUHd0KHQsZSl7aWYoMSZ0JiYoQ2YoMCwicCIsMTkpLENmKDEsImkiKSxQdSgyLCJMb2cgZGlyZWN0b3J5OiAiKSxDZigzLCJzcGFuIiksUHUoNCksTWYoKSxNZigpLE1mKCkpLDImdCl7Y29uc3QgdD16ZigyKTtEYyg0KSx3dSh0LmRhdGFMb2NhdGlvbil9fWZ1bmN0aW9uIHd3dCh0LGUpe2lmKDEmdCYmKENmKDAsInNwYW4iLDE3KSxQdSgxKSxfeSgyLCJkYXRlIiksTWYoKSxIbSgzLFB3dCw1LDEsInAiLDE4KSksMiZ0KXtjb25zdCB0PXpmKCk7RGMoMSksa3UoIkxhc3QgcmVsb2FkOiAiLE15KDIsMix0Lmxhc3RVcGRhdGVkLCJtZWRpdW0iKSwiIiksRGMoMiksYmYoIm5nSWYiLHQuZGF0YUxvY2F0aW9uKX19Y29uc3Qga3d0PWZ1bmN0aW9uKHQpe3JldHVybntwbHVnaW5zOiEwLCJpcy1maXJzdC1wYXJ0eS1wbHVnaW4iOnR9fTt2YXIgU3d0OyEoZnVuY3Rpb24odCl7dFt0LkVOVklST05NRU5UX0ZBSUxVUkVfTk9UX0ZPVU5EPTBdPSJFTlZJUk9OTUVOVF9GQUlMVVJFX05PVF9GT1VORCIsdFt0LkVOVklST05NRU5UX0ZBSUxVUkVfVU5LTk9XTj0xXT0iRU5WSVJPTk1FTlRfRkFJTFVSRV9VTktOT1dOIix0W3QuTk9fRU5BQkxFRF9QTFVHSU5TPTJdPSJOT19FTkFCTEVEX1BMVUdJTlMiLHRbdC5VTktOT1dOX1BMVUdJTl9JRD0zXT0iVU5LTk9XTl9QTFVHSU5fSUQiLHRbdC5MT0FERUQ9NF09IkxPQURFRCIsdFt0LkxPQURJTkc9NV09IkxPQURJTkcifSkoU3d0fHwoU3d0PXt9KSk7Y2xhc3MgRHd0e2NvbnN0cnVjdG9yKHQsZSxuKXt0aGlzLmNvbXBvbmVudEZhY3RvcnlSZXNvbHZlcj10LHRoaXMucGx1Z2luUmVnaXN0cnk9ZSx0aGlzLnBsdWdpbkFwaUhvc3Q9bix0aGlzLlBsdWdpbkxvYWRTdGF0ZT1Td3QsdGhpcy5Mb2FkaW5nTWVjaGFuaXNtVHlwZT11d3QsdGhpcy5wbHVnaW5JbnN0YW5jZXM9bmV3IE1hcH1uZ09uQ2hhbmdlcyh0KXt2YXIgZTtpZighdGhpcy5pc0ZlYXR1cmVGbGFnc0xvYWRlZHx8IXRoaXMuYWN0aXZlS25vd25QbHVnaW58fHRoaXMuc2V0dGluZ3NMb2FkU3RhdGU9PT1VRS5OT1RfTE9BREVEfHx0aGlzLnNldHRpbmdzTG9hZFN0YXRlPT09VUUuTE9BRElORylyZXR1cm47Y29uc3Qgbj1Cb29sZWFuKHRoaXMuYWN0aXZlS25vd25QbHVnaW4mJiF0aGlzLnBsdWdpbkluc3RhbmNlcy5oYXModGhpcy5hY3RpdmVLbm93blBsdWdpbi5pZCkpO2lmKHQuYWN0aXZlS25vd25QbHVnaW58fHQuaXNGZWF0dXJlRmxhZ3NMb2FkZWR8fHQuc2V0dGluZ3NMb2FkU3RhdGUpe2NvbnN0IG89bnVsbD09PShlPXQuYWN0aXZlS25vd25QbHVnaW4pfHx2b2lkIDA9PT1lP3ZvaWQgMDplLnByZXZpb3VzVmFsdWU7aWYobyYmby5pZCE9PXRoaXMuYWN0aXZlS25vd25QbHVnaW4uaWQmJnRoaXMuaGlkZVBsdWdpbihvKSxuKXtjb25zdCB0PXRoaXMuY3JlYXRlUGx1Z2luKHRoaXMuYWN0aXZlS25vd25QbHVnaW4pO3QmJnRoaXMucGx1Z2luSW5zdGFuY2VzLnNldCh0aGlzLmFjdGl2ZUtub3duUGx1Z2luLmlkLHQpfWVsc2UgdGhpcy5zaG93UGx1Z2luKHRoaXMuYWN0aXZlS25vd25QbHVnaW4pfShufHx0Lmxhc3RVcGRhdGVkKSYmdGhpcy5yZWxvYWQodGhpcy5hY3RpdmVLbm93blBsdWdpbixuKX1oaWRlUGx1Z2luKHQpe2lmKCF0aGlzLnBsdWdpbkluc3RhbmNlcy5oYXModC5pZCkpcmV0dXJuO2NvbnN0IGU9dGhpcy5wbHVnaW5JbnN0YW5jZXMuZ2V0KHQuaWQpO09iamVjdC5hc3NpZ24oZS5zdHlsZSx7bWF4SGVpZ2h0OjAsb3ZlcmZsb3c6ImhpZGRlbiIsdmlzaWJpbGl0eToiaGlkZGVuIixwb3NpdGlvbjoiYWJzb2x1dGUifSl9c2hvd1BsdWdpbih0KXtpZighdGhpcy5wbHVnaW5JbnN0YW5jZXMuaGFzKHQuaWQpKXJldHVybjtjb25zdCBlPXRoaXMucGx1Z2luSW5zdGFuY2VzLmdldCh0LmlkKTtPYmplY3QuYXNzaWduKGUuc3R5bGUse21heEhlaWdodDpudWxsLG92ZXJmbG93Om51bGwsdmlzaWJpbGl0eTpudWxsLHBvc2l0aW9uOm51bGx9KX1jcmVhdGVQbHVnaW4odCl7bGV0IGU9bnVsbDtzd2l0Y2godC5sb2FkaW5nX21lY2hhbmlzbS50eXBlKXtjYXNlIHV3dC5DVVNUT01fRUxFTUVOVDplPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodC5sb2FkaW5nX21lY2hhbmlzbS5lbGVtZW50X25hbWUpLGUucmVsb2FkT25SZWFkeT0hMSxlLmZlYXR1cmVGbGFncz10aGlzLmZlYXR1cmVGbGFncyx0aGlzLnBsdWdpbnNDb250YWluZXIubmF0aXZlRWxlbWVudC5hcHBlbmRDaGlsZChlKTticmVhaztjYXNlIHV3dC5JRlJBTUU6aWYoIXRoaXMucGx1Z2luQXBpSG9zdCl0aHJvdyBFcnJvcihgSUZSQU1FLWJhc2VkIHBsdWdpbnMgbm90IHN1cHBvcnRlZDogJHt0LmlkfWApO2U9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaWZyYW1lIiksZS5zZXRBdHRyaWJ1dGUoInNyYyIsYGRhdGEvcGx1Z2luX2VudHJ5Lmh0bWw/bmFtZT0ke3QuaWR9YCksdGhpcy5wbHVnaW5BcGlIb3N0LnJlZ2lzdGVyUGx1Z2luSWZyYW1lKGUsdC5pZCksdGhpcy5wbHVnaW5zQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuYXBwZW5kQ2hpbGQoZSk7YnJlYWs7Y2FzZSB1d3QuTkdfQ09NUE9ORU5UOmNvbnN0IG49dGhpcy5wbHVnaW5SZWdpc3RyeS5nZXRDb21wb25lbnQodC5pZCk7aWYobil7Y29uc3QgdD10aGlzLmNvbXBvbmVudEZhY3RvcnlSZXNvbHZlci5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeShuKTtlPXRoaXMubmdQbHVnaW5Db250YWluZXIuY3JlYXRlQ29tcG9uZW50KHQpLmxvY2F0aW9uLm5hdGl2ZUVsZW1lbnR9ZWxzZSBjb25zb2xlLmVycm9yKGBObyByZWdpc3RlcmVkIEFuZ3VsYXIgY29tcG9uZW50IGZvciBwbHVnaW46ICR7dC5pZH1gKTticmVhaztjYXNlIHV3dC5OT05FOmJyZWFrO2RlZmF1bHQ6Y29uc29sZS5lcnJvcigiVW5leHBlY3RlZCBwbHVnaW4iKX1yZXR1cm4gZX1yZWxvYWQodCxlKXtpZighZSYmdC5kaXNhYmxlX3JlbG9hZClyZXR1cm47Y29uc3Qgbj10aGlzLnBsdWdpbkluc3RhbmNlcy5nZXQodC5pZCk7biYmbi5yZWxvYWQmJm4ucmVsb2FkKCl9fUR3dC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8RHd0KShnZihHaCksZ2YoTVgpLGdmKFdJLDgpKX0sRHd0Lsm1Y21wPXNvKHt0eXBlOkR3dCxzZWxlY3RvcnM6W1sicGx1Z2lucy1jb21wb25lbnQiXV0sdmlld1F1ZXJ5OmZ1bmN0aW9uIHQoZSxuKXtpZigxJmUmJihWeShnd3QsNyxLaCksVnkoaHd0LDcsRmIpKSwyJmUpe2xldCB0O0J5KHQ9VXkoKSkmJihuLnBsdWdpbnNDb250YWluZXI9dC5maXJzdCksQnkodD1VeSgpKSYmKG4ubmdQbHVnaW5Db250YWluZXI9dC5maXJzdCl9fSxpbnB1dHM6e2FjdGl2ZVBsdWdpbklkOiJhY3RpdmVQbHVnaW5JZCIsYWN0aXZlS25vd25QbHVnaW46ImFjdGl2ZUtub3duUGx1Z2luIixwbHVnaW5Mb2FkU3RhdGU6InBsdWdpbkxvYWRTdGF0ZSIsZGF0YUxvY2F0aW9uOiJkYXRhTG9jYXRpb24iLGlzRmVhdHVyZUZsYWdzTG9hZGVkOiJpc0ZlYXR1cmVGbGFnc0xvYWRlZCIsc2V0dGluZ3NMb2FkU3RhdGU6InNldHRpbmdzTG9hZFN0YXRlIixmZWF0dXJlRmxhZ3M6ImZlYXR1cmVGbGFncyIsbGFzdFVwZGF0ZWQ6Imxhc3RVcGRhdGVkIixlbnZpcm9ubWVudEZhaWx1cmVOb3RGb3VuZFRlbXBsYXRlOiJlbnZpcm9ubWVudEZhaWx1cmVOb3RGb3VuZFRlbXBsYXRlIixlbnZpcm9ubWVudEZhaWx1cmVVbmtub3duVGVtcGxhdGU6ImVudmlyb25tZW50RmFpbHVyZVVua25vd25UZW1wbGF0ZSJ9LGZlYXR1cmVzOltxb10sZGVjbHM6OSx2YXJzOjQsY29uc3RzOltbMywibmdDbGFzcyJdLFsicGx1Z2luQ29udGFpbmVyIiwiIl0sWyJuZ1BsdWdpbkNvbnRhaW5lciIsIiJdLFsiY2xhc3MiLCJ3YXJuaW5nIiwzLCJuZ1N3aXRjaCIsNCwibmdJZiJdLFsiZW52aXJvbm1lbnRGYWlsdXJlRGVmYXVsdFRlbXBsYXRlIiwiIl0sWyJkYXRlQW5kRGF0YUxvY2F0aW9uIiwiIl0sWzEsIndhcm5pbmciLDMsIm5nU3dpdGNoIl0sWzEsIndhcm5pbmctbWVzc2FnZSJdLFs0LCJuZ1N3aXRjaENhc2UiXSxbNCwibmdUZW1wbGF0ZU91dGxldCJdLFsxLCJ1bmtub3duLXBsdWdpbiJdLFszLCJuZ1RlbXBsYXRlT3V0bGV0Il0sWzEsIm5vLWFjdGl2ZS1wbHVnaW4iXSxbImhyZWYiLCJodHRwczovL2dpdGh1Yi5jb20vdGVuc29yZmxvdy90ZW5zb3Jib2FyZC9ibG9iL21hc3Rlci9SRUFETUUubWQiXSxbImhyZWYiLCJodHRwczovL3d3dy50ZW5zb3JmbG93Lm9yZy9nZXRfc3RhcnRlZC9zdW1tYXJpZXNfYW5kX3RlbnNvcmJvYXJkIl0sWyJocmVmIiwiaHR0cHM6Ly9naXRodWIuY29tL3RlbnNvcmZsb3cvdGVuc29yYm9hcmQvYmxvYi9tYXN0ZXIvUkVBRE1FLm1kI215LXRlbnNvcmJvYXJkLWlzbnQtc2hvd2luZy1hbnktZGF0YS13aGF0cy13cm9uZyJdLFsxLCJlbnZpcm9ubWVudC1ub3QtbG9hZGVkIl0sWzEsImxhc3QtcmVsb2FkLXRpbWUiXSxbImNsYXNzIiwiZGF0YS1sb2NhdGlvbiIsNCwibmdJZiJdLFsxLCJkYXRhLWxvY2F0aW9uIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihDZigwLCJkaXYiLDAsMSksUGYoMixudWxsLDIpLE1mKCksSG0oNCx4d3QsNiw1LCJkaXYiLDMpLEhtKDUsT3d0LDYsMSwibmctdGVtcGxhdGUiLG51bGwsNCxxeSksSG0oNyx3d3QsNCw1LCJuZy10ZW1wbGF0ZSIsbnVsbCw1LHF5KSksMiZlJiYoYmYoIm5nQ2xhc3MiLGl5KDIsa3d0LChudWxsPT1uLmFjdGl2ZUtub3duUGx1Z2luP251bGw6bi5hY3RpdmVLbm93blBsdWdpbi5sb2FkaW5nX21lY2hhbmlzbS50eXBlKSE9PW4uTG9hZGluZ01lY2hhbmlzbVR5cGUuSUZSQU1FKSksRGMoNCksYmYoIm5nSWYiLG4ucGx1Z2luTG9hZFN0YXRlIT09bi5QbHVnaW5Mb2FkU3RhdGUuTE9BREVEJiZuLnBsdWdpbkxvYWRTdGF0ZSE9PW4uUGx1Z2luTG9hZFN0YXRlLkxPQURJTkcpKX0sZGlyZWN0aXZlczpbQ3YsUHYsRHYsUnYsSXZdLHBpcGVzOltZdl0sc3R5bGVzOlsnLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjEycHg7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtYmFkZ2Utc21hbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6OXB4fS5tYXQtYmFkZ2UtbGFyZ2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweH0ubWF0LWgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1oZWFkbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMjRweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNnB4LzI4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNXB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC44MykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtaDZbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuNjcpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWJvZHktc3Ryb25nW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjAgMCAxMnB4fS5tYXQtc21hbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDEycHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjMwMCAxMTJweC8xMTJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDVlbTttYXJnaW46MCAwIDU2cHh9Lm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDU2cHgvNTZweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDJlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDQ1cHgvNDhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDA1ZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAzNHB4LzQwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDY0cHh9Lm1hdC1ib3R0b20tc2hlZXQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhcmQtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjIwcHh9Lm1hdC1jYXJkLXN1YnRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXJkLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNoZWNrYm94LWxheW91dFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoyNHB4fS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtdHJhaWxpbmctaWNvbi5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MThweH0ubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1oZWFkZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9vdGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2FsZW5kYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhbGVuZGFyLWJvZHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxM3B4fS5tYXQtY2FsZW5kYXItYm9keS1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FsZW5kYXItcGVyaW9kLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRoW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo0MDB9Lm1hdC1kaWFsb2ctdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDoxLjEyNTtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE1MCU7bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS41ZW07d2lkdGg6MS41ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNWVtIDA7Ym9yZGVyLXRvcDouODQzNzVlbSBzb2xpZCB0cmFuc3BhcmVudH0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTAuODQzNzVlbTtwYWRkaW5nLXRvcDouODQzNzVlbX0ubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo3NSU7bWFyZ2luLXRvcDouNjY2NjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjc5MTY2NjY2NjdlbSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNDM3NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMnB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTJlbSkgc2NhbGUoMC43NSl9fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi4yNWVtIDAgLjc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMDkzNzVlbTttYXJnaW4tdG9wOi0wLjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjFlbSAwIDFlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS44NDM3NWVtO21hcmdpbi10b3A6LTAuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9aW5wdXQubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LTAuMDYyNWVtfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweH0ubWF0LXJhZGlvLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW19Lm1hdC1zbGlkZS10b2dnbGUtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXN0ZXAtc3ViLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDpub3JtYWx9Lm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRhYi1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowfS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMHB4O3BhZGRpbmctdG9wOjZweDtwYWRkaW5nLWJvdHRvbTo2cHh9Lm1hdC10b29sdGlwLWhhbmRzZXRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHh9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1zaW1wbGUtc25hY2tiYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjE7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo1MDB9Lm1hdC10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW5lc3RlZC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweH0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmVtcHR5KXt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKX0ubWF0LXJpcHBsZS5tYXQtcmlwcGxlLXVuYm91bmRlZFtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6dmlzaWJsZX0ubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItcmFkaXVzOjUwJTtwb2ludGVyLWV2ZW50czpub25lO3RyYW5zaXRpb246b3BhY2l0eSx0cmFuc2Zvcm0gMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO3RyYW5zZm9ybTpzY2FsZSgwKX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6bm9uZX0uY2RrLXZpc3VhbGx5LWhpZGRlbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjA7Y2xpcDpyZWN0KDAgMCAwIDApO2hlaWdodDoxcHg7bWFyZ2luOi0xcHg7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxcHg7d2hpdGUtc3BhY2U6bm93cmFwO291dGxpbmU6MDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb2ludGVyLWV2ZW50czpub25lO3RvcDowO2xlZnQ6MDtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXTplbXB0eXtkaXNwbGF5Om5vbmV9LmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1wYW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtwb2ludGVyLWV2ZW50czphdXRvO2JveC1zaXppbmc6Ym9yZGVyLWJveDt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O21heC13aWR0aDoxMDAlO21heC1oZWlnaHQ6MTAwJX0uY2RrLW92ZXJsYXktYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO2xlZnQ6MDtyaWdodDowO3otaW5kZXg6MTAwMDtwb2ludGVyLWV2ZW50czphdXRvOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudDt0cmFuc2l0aW9uOm9wYWNpdHkgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSk7b3BhY2l0eTowfS5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjF9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAuY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTouNn0uY2RrLW92ZXJsYXktZGFyay1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4zMil9LmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MH0uY2RrLW92ZXJsYXktY29ubmVjdGVkLXBvc2l0aW9uLWJvdW5kaW5nLWJveFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bWluLXdpZHRoOjFweDttaW4taGVpZ2h0OjFweH0uY2RrLWdsb2JhbC1zY3JvbGxibG9ja1tfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7d2lkdGg6MTAwJTtvdmVyZmxvdy15OnNjcm9sbH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemVbX25nY29udGVudC0lQ09NUCVde3Jlc2l6ZTpub25lfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmdbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OmF1dG8gIWltcG9ydGFudDtvdmVyZmxvdzpoaWRkZW4gIWltcG9ydGFudH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nLWZpcmVmb3hbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OjAgIWltcG9ydGFudH1Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0e31Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZHt9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbHthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnQgMHMgMW1zfS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCg6LXdlYmtpdC1hdXRvZmlsbCl7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZCAwcyAxbXN9Lm1hdC1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtbWRjLWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9W19uZ2hvc3QtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Y29sb3I6IzIxMjEyMTtkaXNwbGF5OmJsb2NrO3Bvc2l0aW9uOnJlbGF0aXZlfWJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5wbHVnaW5zLmlzLWZpcnN0LXBhcnR5LXBsdWdpbltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojMzAzMDMwO2NvbG9yOiNmZmZ9LnBsdWdpbnNbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxMDAlO3Bvc2l0aW9uOnJlbGF0aXZlfS53YXJuaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZmY7Ym90dG9tOjA7bGVmdDowO3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0OjA7dG9wOjB9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgLndhcm5pbmdbX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAud2FybmluZ1tfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojMzAzMDMwfS53YXJuaW5nLW1lc3NhZ2VbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjE7bWFyZ2luOjgwcHggYXV0byAwO21heC13aWR0aDo1NDBweH1ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICAud2FybmluZy1tZXNzYWdlW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLndhcm5pbmctbWVzc2FnZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZn0ubGFzdC1yZWxvYWQtdGltZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zdHlsZTppdGFsaWN9LnBsdWdpbnNbX25nY29udGVudC0lQ09NUCVdICAgICBpZnJhbWV7Ym9yZGVyOjA7ZGlzcGxheTpibG9jaztoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlfSddLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihEd3QsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoicGx1Z2lucy1jb21wb25lbnQiLHRlbXBsYXRlVXJsOiIuL3BsdWdpbnNfY29tcG9uZW50Lm5nLmh0bWwiLHN0eWxlVXJsczpbInBsdWdpbnNfY29tcG9uZW50LmNzcyJdLGNoYW5nZURldGVjdGlvbjpqbi5PblB1c2h9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpHaH0se3R5cGU6TVh9LHt0eXBlOldJLGRlY29yYXRvcnM6W3t0eXBlOkJyfV19XX0pLHtwbHVnaW5zQ29udGFpbmVyOlt7dHlwZTphcixhcmdzOlsicGx1Z2luQ29udGFpbmVyIix7c3RhdGljOiEwLHJlYWQ6S2h9XX1dLG5nUGx1Z2luQ29udGFpbmVyOlt7dHlwZTphcixhcmdzOlsibmdQbHVnaW5Db250YWluZXIiLHtzdGF0aWM6ITAscmVhZDpGYn1dfV0sYWN0aXZlUGx1Z2luSWQ6W3t0eXBlOlJffV0sYWN0aXZlS25vd25QbHVnaW46W3t0eXBlOlJffV0scGx1Z2luTG9hZFN0YXRlOlt7dHlwZTpSX31dLGRhdGFMb2NhdGlvbjpbe3R5cGU6Ul99XSxpc0ZlYXR1cmVGbGFnc0xvYWRlZDpbe3R5cGU6Ul99XSxzZXR0aW5nc0xvYWRTdGF0ZTpbe3R5cGU6Ul99XSxmZWF0dXJlRmxhZ3M6W3t0eXBlOlJffV0sbGFzdFVwZGF0ZWQ6W3t0eXBlOlJffV0sZW52aXJvbm1lbnRGYWlsdXJlTm90Rm91bmRUZW1wbGF0ZTpbe3R5cGU6Ul99XSxlbnZpcm9ubWVudEZhaWx1cmVVbmtub3duVGVtcGxhdGU6W3t0eXBlOlJffV19KTtjb25zdCBSd3Q9YlMoblQsZVQsKCh0LGUpPT5lJiZ0W2VdP09iamVjdC5hc3NpZ24oe2lkOmV9LHRbZV0pOm51bGwpKTtjbGFzcyBFd3R7Y29uc3RydWN0b3IodCl7dGhpcy5zdG9yZT10LHRoaXMuYWN0aXZlS25vd25QbHVnaW4kPXRoaXMuc3RvcmUuc2VsZWN0KFJ3dCksdGhpcy5hY3RpdmVQbHVnaW5JZCQ9dGhpcy5zdG9yZS5zZWxlY3QoZVQpLHRoaXMucGx1Z2luTG9hZFN0YXRlJD1LdCh0aGlzLmFjdGl2ZUtub3duUGx1Z2luJCx0aGlzLmFjdGl2ZVBsdWdpbklkJCx0aGlzLnN0b3JlLnNlbGVjdChKQSkpLnBpcGUoVnQoKChbdCxlLG5dKT0+bnVsbCE9PW4uZmFpbHVyZUNvZGU/bi5mYWlsdXJlQ29kZT09PUxFLk5PVF9GT1VORD9Td3QuRU5WSVJPTk1FTlRfRkFJTFVSRV9OT1RfRk9VTkQ6U3d0LkVOVklST05NRU5UX0ZBSUxVUkVfVU5LTk9XTjpudWxsIT09dD9Td3QuTE9BREVEOm51bGw9PT1uLmxhc3RMb2FkZWRUaW1lSW5NcyYmbi5zdGF0ZT09PVVFLkxPQURJTkc/U3d0LkxPQURJTkc6ZT9Td3QuVU5LTk9XTl9QTFVHSU5fSUQ6U3d0Lk5PX0VOQUJMRURfUExVR0lOUykpKSx0aGlzLmxhc3RMb2FkZWRUaW1lSW5NcyQ9dGhpcy5zdG9yZS5zZWxlY3QodFQpLHRoaXMuZGF0YUxvY2F0aW9uJD10aGlzLnN0b3JlLnNlbGVjdChvVCkucGlwZShWdCgodD0+dC5kYXRhX2xvY2F0aW9uKSkpLHRoaXMuaXNGZWF0dXJlRmxhZ3NMb2FkZWQkPXRoaXMuc3RvcmUuc2VsZWN0KE5EKSx0aGlzLmZlYXR1cmVGbGFncyQ9dGhpcy5zdG9yZS5zZWxlY3QoekQpLHRoaXMuc2V0dGluZ3NMb2FkU3RhdGUkPXRoaXMuc3RvcmUuc2VsZWN0KGZJKX19RXd0Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxFd3QpKGdmKGlTKSl9LEV3dC7JtWNtcD1zbyh7dHlwZTpFd3Qsc2VsZWN0b3JzOltbInBsdWdpbnMiXV0saW5wdXRzOntlbnZpcm9ubWVudEZhaWx1cmVOb3RGb3VuZFRlbXBsYXRlOiJlbnZpcm9ubWVudEZhaWx1cmVOb3RGb3VuZFRlbXBsYXRlIixlbnZpcm9ubWVudEZhaWx1cmVVbmtub3duVGVtcGxhdGU6ImVudmlyb25tZW50RmFpbHVyZVVua25vd25UZW1wbGF0ZSJ9LGRlY2xzOjksdmFyczoyNixjb25zdHM6W1szLCJhY3RpdmVLbm93blBsdWdpbiIsImFjdGl2ZVBsdWdpbklkIiwiZGF0YUxvY2F0aW9uIiwibGFzdFVwZGF0ZWQiLCJwbHVnaW5Mb2FkU3RhdGUiLCJpc0ZlYXR1cmVGbGFnc0xvYWRlZCIsInNldHRpbmdzTG9hZFN0YXRlIiwiZmVhdHVyZUZsYWdzIiwiZW52aXJvbm1lbnRGYWlsdXJlTm90Rm91bmRUZW1wbGF0ZSIsImVudmlyb25tZW50RmFpbHVyZVVua25vd25UZW1wbGF0ZSJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYodmYoMCwicGx1Z2lucy1jb21wb25lbnQiLDApLF95KDEsImFzeW5jIiksX3koMiwiYXN5bmMiKSxfeSgzLCJhc3luYyIpLF95KDQsImFzeW5jIiksX3koNSwiYXN5bmMiKSxfeSg2LCJhc3luYyIpLF95KDcsImFzeW5jIiksX3koOCwiYXN5bmMiKSksMiZlJiZiZigiYWN0aXZlS25vd25QbHVnaW4iLEN5KDEsMTAsbi5hY3RpdmVLbm93blBsdWdpbiQpKSgiYWN0aXZlUGx1Z2luSWQiLEN5KDIsMTIsbi5hY3RpdmVQbHVnaW5JZCQpKSgiZGF0YUxvY2F0aW9uIixDeSgzLDE0LG4uZGF0YUxvY2F0aW9uJCkpKCJsYXN0VXBkYXRlZCIsQ3koNCwxNixuLmxhc3RMb2FkZWRUaW1lSW5NcyQpKSgicGx1Z2luTG9hZFN0YXRlIixDeSg1LDE4LG4ucGx1Z2luTG9hZFN0YXRlJCkpKCJpc0ZlYXR1cmVGbGFnc0xvYWRlZCIsQ3koNiwyMCxuLmlzRmVhdHVyZUZsYWdzTG9hZGVkJCkpKCJzZXR0aW5nc0xvYWRTdGF0ZSIsQ3koNywyMixuLnNldHRpbmdzTG9hZFN0YXRlJCkpKCJmZWF0dXJlRmxhZ3MiLEN5KDgsMjQsbi5mZWF0dXJlRmxhZ3MkKSkoImVudmlyb25tZW50RmFpbHVyZU5vdEZvdW5kVGVtcGxhdGUiLG4uZW52aXJvbm1lbnRGYWlsdXJlTm90Rm91bmRUZW1wbGF0ZSkoImVudmlyb25tZW50RmFpbHVyZVVua25vd25UZW1wbGF0ZSIsbi5lbnZpcm9ubWVudEZhaWx1cmVVbmtub3duVGVtcGxhdGUpfSxzdHlsZXM6WyJwbHVnaW5zLWNvbXBvbmVudFtfbmdjb250ZW50LSVDT01QJV0geyBoZWlnaHQ6IDEwMCU7IH0iXSxjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoRXd0LFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6InBsdWdpbnMiLHRlbXBsYXRlOidcbiAgICA8cGx1Z2lucy1jb21wb25lbnRcbiAgICAgIFthY3RpdmVLbm93blBsdWdpbl09ImFjdGl2ZUtub3duUGx1Z2luJCB8IGFzeW5jIlxuICAgICAgW2FjdGl2ZVBsdWdpbklkXT0iYWN0aXZlUGx1Z2luSWQkIHwgYXN5bmMiXG4gICAgICBbZGF0YUxvY2F0aW9uXT0iZGF0YUxvY2F0aW9uJCB8IGFzeW5jIlxuICAgICAgW2xhc3RVcGRhdGVkXT0ibGFzdExvYWRlZFRpbWVJbk1zJCB8IGFzeW5jIlxuICAgICAgW3BsdWdpbkxvYWRTdGF0ZV09InBsdWdpbkxvYWRTdGF0ZSQgfCBhc3luYyJcbiAgICAgIFtpc0ZlYXR1cmVGbGFnc0xvYWRlZF09ImlzRmVhdHVyZUZsYWdzTG9hZGVkJCB8IGFzeW5jIlxuICAgICAgW3NldHRpbmdzTG9hZFN0YXRlXT0ic2V0dGluZ3NMb2FkU3RhdGUkIHwgYXN5bmMiXG4gICAgICBbZmVhdHVyZUZsYWdzXT0iZmVhdHVyZUZsYWdzJCB8IGFzeW5jIlxuICAgICAgW2Vudmlyb25tZW50RmFpbHVyZU5vdEZvdW5kVGVtcGxhdGVdPSJlbnZpcm9ubWVudEZhaWx1cmVOb3RGb3VuZFRlbXBsYXRlIlxuICAgICAgW2Vudmlyb25tZW50RmFpbHVyZVVua25vd25UZW1wbGF0ZV09ImVudmlyb25tZW50RmFpbHVyZVVua25vd25UZW1wbGF0ZSJcbiAgICA+PC9wbHVnaW5zLWNvbXBvbmVudD5cbiAgJyxzdHlsZXM6WyJwbHVnaW5zLWNvbXBvbmVudCB7IGhlaWdodDogMTAwJTsgfSJdLGNoYW5nZURldGVjdGlvbjpqbi5PblB1c2h9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTppU31dfSkse2Vudmlyb25tZW50RmFpbHVyZU5vdEZvdW5kVGVtcGxhdGU6W3t0eXBlOlJffV0sZW52aXJvbm1lbnRGYWlsdXJlVW5rbm93blRlbXBsYXRlOlt7dHlwZTpSX31dfSk7Y2xhc3MgQXd0e31Bd3QuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEF3dCl9LEF3dC7JtW1vZD1mbyh7dHlwZTpBd3R9KSxBd3QuybVpbmo9RG4oe2ltcG9ydHM6W1tkVCxyeCxNWF1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihBd3QsW3t0eXBlOkxfLGFyZ3M6W3tkZWNsYXJhdGlvbnM6W0V3dCxEd3RdLGV4cG9ydHM6W0V3dF0saW1wb3J0czpbZFQscngsTVhdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmdW8oQXd0LHtkZWNsYXJhdGlvbnM6W0V3dCxEd3RdLGltcG9ydHM6W2RULHJ4LE1YXSxleHBvcnRzOltFd3RdfSksbG8oRXd0LFtEd3RdLFtWdl0pO2NsYXNzIFR3dHtjb25zdHJ1Y3Rvcih0LGUpe3RoaXMuc3RvcmU9dCx0aGlzLmRvY3VtZW50PWUsdGhpcy5vblZpc2liaWxpdHlDaGFuZ2U9dGhpcy5vblZpc2liaWxpdHlDaGFuZ2VJbXBsLmJpbmQodGhpcyksdGhpcy5yZWxvYWRFbmFibGVkJD10aGlzLnN0b3JlLnBpcGUoclModUkpKSx0aGlzLnJlbG9hZFBlcmlvZEluTXMkPXRoaXMuc3RvcmUucGlwZShyUyhnSSkpLHRoaXMucmVsb2FkVGltZXJJZD1udWxsLHRoaXMubWlzc2VkQXV0b1JlbG9hZD0hMX1uZ09uSW5pdCgpe3RoaXMuZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigidmlzaWJpbGl0eWNoYW5nZSIsdGhpcy5vblZpc2liaWxpdHlDaGFuZ2UpLEt0KHRoaXMucmVsb2FkRW5hYmxlZCQucGlwZSh3ZSgpKSx0aGlzLnJlbG9hZFBlcmlvZEluTXMkLnBpcGUod2UoKSkpLnN1YnNjcmliZSgoKFt0LGVdKT0+e3RoaXMuY2FuY2VsTG9hZCgpLHQmJnRoaXMubG9hZChlKX0pKX1vblZpc2liaWxpdHlDaGFuZ2VJbXBsKCl7InZpc2libGUiPT09dGhpcy5kb2N1bWVudC52aXNpYmlsaXR5U3RhdGUmJnRoaXMubWlzc2VkQXV0b1JlbG9hZCYmKHRoaXMubWlzc2VkQXV0b1JlbG9hZD0hMSx0aGlzLnN0b3JlLmRpc3BhdGNoKFFFKCkpKX1sb2FkKHQpe3RoaXMucmVsb2FkVGltZXJJZD1zZXRUaW1lb3V0KCgoKT0+eyJ2aXNpYmxlIj09PXRoaXMuZG9jdW1lbnQudmlzaWJpbGl0eVN0YXRlP3RoaXMuc3RvcmUuZGlzcGF0Y2goUUUoKSk6dGhpcy5taXNzZWRBdXRvUmVsb2FkPSEwLHRoaXMubG9hZCh0KX0pLHQpfWNhbmNlbExvYWQoKXtudWxsIT09dGhpcy5yZWxvYWRUaW1lcklkJiZjbGVhclRpbWVvdXQodGhpcy5yZWxvYWRUaW1lcklkKSx0aGlzLnJlbG9hZFRpbWVySWQ9bnVsbH1uZ09uRGVzdHJveSgpe3RoaXMuY2FuY2VsTG9hZCgpLHRoaXMuZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigidmlzaWJpbGl0eWNoYW5nZSIsdGhpcy5vblZpc2liaWxpdHlDaGFuZ2UpfX1Ud3QuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFR3dCkoZ2YoaVMpLGdmKHNNKSl9LFR3dC7JtWNtcD1zbyh7dHlwZTpUd3Qsc2VsZWN0b3JzOltbInJlbG9hZGVyIl1dLGRlY2xzOjAsdmFyczowLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXt9LGVuY2Fwc3VsYXRpb246MixjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoVHd0LFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6InJlbG9hZGVyIix0ZW1wbGF0ZToiIixjaGFuZ2VEZXRlY3Rpb246am4uT25QdXNofV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6aVN9LHt0eXBlOkRvY3VtZW50LGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W3NNXX1dfV19KSxudWxsKTtjbGFzcyBOd3R7fU53dC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8Tnd0KX0sTnd0Lsm1Y21wPXNvKHt0eXBlOk53dCxzZWxlY3RvcnM6W1sidGVuc29yYm9hcmQtd3JhcHBlci1jb21wb25lbnQiXV0sZGVjbHM6Mix2YXJzOjAsY29uc3RzOltbMSwicGx1Z2lucyJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYodmYoMCwicGx1Z2lucyIsMCksdmYoMSwicmVsb2FkZXIiKSl9LGRpcmVjdGl2ZXM6W0V3dCxUd3RdLHN0eWxlczpbIltfbmdob3N0LSVDT01QJV0ge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICB9XG5cbiAgICAgIC5wbHVnaW5zW19uZ2NvbnRlbnQtJUNPTVAlXSB7XG4gICAgICAgIGZsZXg6IDEgMTtcbiAgICAgICAgb3ZlcmZsb3c6IGF1dG87XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIH0iXSxjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoTnd0LFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6InRlbnNvcmJvYXJkLXdyYXBwZXItY29tcG9uZW50Iix0ZW1wbGF0ZTonXG4gICAgPHBsdWdpbnMgY2xhc3M9InBsdWdpbnMiPjwvcGx1Z2lucz5cbiAgICA8cmVsb2FkZXI+PC9yZWxvYWRlcj5cbiAgJyxzdHlsZXM6WyJcbiAgICAgIDpob3N0IHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgfVxuXG4gICAgICAucGx1Z2lucyB7XG4gICAgICAgIGZsZXg6IDEgMTtcbiAgICAgICAgb3ZlcmZsb3c6IGF1dG87XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIH1cbiAgICAiXSxjaGFuZ2VEZXRlY3Rpb246am4uT25QdXNofV19XSxudWxsLG51bGwpO2NsYXNzIHp3dHt9end0Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHx6d3QpfSx6d3QuybVwcm92PVNuKHt0b2tlbjp6d3QsZmFjdG9yeTp6d3QuybVmYWN9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKHp3dCxbe3R5cGU6VW19XSxudWxsLG51bGwpO2NvbnN0IEl3dD0ic21vb3RoaW5nIixId3Q9InJ1bkNvbG9yR3JvdXAiLEZ3dD0idGFnRmlsdGVyIixMd3Q9InJ1bkZpbHRlciIsQnd0PSJyZWdleDoiO2xldCBWd3Q9Y2xhc3MgZXh0ZW5kcyB6d3R7Z2V0TWV0cmljc1Bpbm5lZENhcmRzKHQpe3JldHVybiBLdChbdC5zZWxlY3QoY3opLHQuc2VsZWN0KHB6KV0pLnBpcGUoVnQoKChbdCxlXSk9PntpZighdC5sZW5ndGgmJiFlLmxlbmd0aClyZXR1cm5bXTtjb25zdCBuPVsuLi50Lm1hcCgoKHtwbHVnaW46dCx0YWc6ZSxzYW1wbGU6bixydW5JZDpvfSk9Pntjb25zdCBpPXtwbHVnaW46dCx0YWc6ZX07cmV0dXJuIG9OKHQpJiYoaS5ydW5JZD1vKSxlTih0KSYmKGkuc2FtcGxlPW4pLGl9KSksLi4uZV07cmV0dXJuW3trZXk6InBpbm5lZENhcmRzIix2YWx1ZTpKU09OLnN0cmluZ2lmeShuKX1dfSkpKX1nZXRGZWF0dXJlRmxhZ1N0YXRlcyh0KXtyZXR1cm4gS3QoW3Quc2VsZWN0KEJEKSx0LnNlbGVjdChJRCldKS5waXBlKFZ0KCgoW3QsZV0pPT57Y29uc3Qgbj10Lm1hcCgodD0+KHtrZXk6aE4sdmFsdWU6dH0pKSk7cmV0dXJuImJvb2xlYW4iPT10eXBlb2YgZS5lbmFibGVkQ29sb3JHcm91cCYmbi5wdXNoKHtrZXk6X04sdmFsdWU6U3RyaW5nKGUuZW5hYmxlZENvbG9yR3JvdXApfSksImJvb2xlYW4iPT10eXBlb2YgZS5lbmFibGVkQ29sb3JHcm91cEJ5UmVnZXgmJm4ucHVzaCh7a2V5OkNOLHZhbHVlOlN0cmluZyhlLmVuYWJsZWRDb2xvckdyb3VwQnlSZWdleCl9KSxufSkpKX1zZXJpYWxpemVTdGF0ZVRvUXVlcnlQYXJhbXModCl7cmV0dXJuIEt0KFt0aGlzLmdldE1ldHJpY3NQaW5uZWRDYXJkcyh0KSx0LnNlbGVjdChQeikucGlwZShWdCgodD0+dD9be2tleTpGd3QsdmFsdWU6dH1dOltdKSkpLHRoaXMuZ2V0RmVhdHVyZUZsYWdTdGF0ZXModCksdC5zZWxlY3QodXopLnBpcGUoVnQoKHQ9Pk51bWJlci5pc0Zpbml0ZSh0LnNjYWxhclNtb290aGluZyk/W3trZXk6SXd0LHZhbHVlOlN0cmluZyh0LnNjYWxhclNtb290aGluZyl9XTpbXSkpKSx0LnNlbGVjdChReikucGlwZShWdCgodD0+e2lmKCF0KXJldHVybltdO2xldCBlO3N3aXRjaCh0LmtleSl7Y2FzZSBMei5FWFBFUklNRU5UOmU9ImV4cGVyaW1lbnQiO2JyZWFrO2Nhc2UgTHouUlVOOmU9InJ1biI7YnJlYWs7Y2FzZSBMei5SRUdFWDplPWByZWdleDoke3QucmVnZXhTdHJpbmd9YDticmVhaztkZWZhdWx0OnRocm93IG5ldyBSYW5nZUVycm9yKCJTZXJpYWxpemF0aW9uIG5vdCBpbXBsZW1lbnRlZCIpfXJldHVyblt7a2V5Okh3dCx2YWx1ZTplfV19KSkpLHQuc2VsZWN0KHRJKS5waXBlKFZ0KCh0PT50P1t7a2V5Okx3dCx2YWx1ZTp0fV06W10pKSldKS5waXBlKFZ0KCh0PT50LmZsYXQoKSkpKX1kZXNlcmlhbGl6ZVF1ZXJ5UGFyYW1zKHQpe2xldCBlPW51bGwsbj1udWxsLG89bnVsbCxpPW51bGwsYT1udWxsO2Zvcihjb25zdHtrZXk6cix2YWx1ZTpzfW9mIHQpc3dpdGNoKHIpe2Nhc2UicGlubmVkQ2FyZHMiOmU9and0KHMpO2JyZWFrO2Nhc2UgSXd0Om49TnVtYmVyKHMpO2JyZWFrO2Nhc2UgSHd0OnN3aXRjaChzKXtjYXNlImV4cGVyaW1lbnQiOmk9e2tleTpMei5FWFBFUklNRU5UfTticmVhaztjYXNlInJ1biI6aT17a2V5Okx6LlJVTn19aWYocy5zdGFydHNXaXRoKEJ3dCkpe2NvbnN0IHQ9cy5zbGljZShCd3QubGVuZ3RoKTtpPXtrZXk6THouUkVHRVgscmVnZXhTdHJpbmc6dH19YnJlYWs7Y2FzZSBGd3Q6bz1zO2JyZWFrO2Nhc2UgTHd0OmE9c31yZXR1cm57bWV0cmljczp7cGlubmVkQ2FyZHM6ZXx8W10sc21vb3RoaW5nOm4sdGFnRmlsdGVyOm99LHJ1bnM6e2dyb3VwQnk6aSxyZWdleEZpbHRlcjphfX19fTtmdW5jdGlvbiBqd3QodCl7bGV0IGU7dHJ5e2U9SlNPTi5wYXJzZSh0KX1jYXRjaCh0KXtyZXR1cm4gbnVsbH1pZighQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gbnVsbDtjb25zdCBuPVtdO2Zvcihjb25zdCB0IG9mIGUpe2NvbnN0IGU9InN0cmluZyI9PXR5cGVvZiB0LnJ1bklkLGk9Im51bWJlciI9PXR5cGVvZiB0LnNhbXBsZSxhPSJzdHJpbmciPT10eXBlb2YgdC50YWcscj1lfHx2b2lkIDA9PT10LnJ1bklkLHM9aXx8dm9pZCAwPT09dC5zYW1wbGU7aWYoISgic3RyaW5nIj09dHlwZW9mIHQucGx1Z2luJiZhJiZyJiZzKSljb250aW51ZTtpZigobz10LnBsdWdpbikhPT1LVC5TQ0FMQVJTJiZvIT09S1QuSElTVE9HUkFNUyYmbyE9PUtULklNQUdFUyljb250aW51ZTtpZighdC50YWcpY29udGludWU7aWYob04odC5wbHVnaW4pKXtpZighdC5ydW5JZCljb250aW51ZX1lbHNlIGlmKHQucnVuSWQpY29udGludWU7aWYoaSl7aWYoIWVOKHQucGx1Z2luKSljb250aW51ZTtpZighTnVtYmVyLmlzSW50ZWdlcih0LnNhbXBsZSl8fHQuc2FtcGxlPDApY29udGludWV9Y29uc3QgbD17cGx1Z2luOnQucGx1Z2luLHRhZzp0LnRhZ307ZSYmKGwucnVuSWQ9dC5ydW5JZCksaSYmKGwuc2FtcGxlPXQuc2FtcGxlKSxuLnB1c2gobCl9dmFyIG87cmV0dXJuIG59ZnVuY3Rpb24gVXd0KCl7cmV0dXJuW3tyb3V0ZUtpbmQ6X0QuRVhQRVJJTUVOVCxwYXRoOiIvIixuZ0NvbXBvbmVudDpOd3QsZGVmYXVsdFJvdXRlOiEwLGRlZXBMaW5rUHJvdmlkZXI6bmV3IFZ3dH1dfWZ1bmN0aW9uIFd3dCh0KXtyZXR1cm4oZSxuKT0+e2NvbnN0IG89dChlLG4pO3JldHVybiBjb25zb2xlLmdyb3VwQ29sbGFwc2VkKG4udHlwZSksY29uc29sZS5sb2coInByZXYgc3RhdGUiLGUpLGNvbnNvbGUubG9nKCJhY3Rpb24iLG4pLGNvbnNvbGUubG9nKCJuZXh0IHN0YXRlIixvKSxjb25zb2xlLmdyb3VwRW5kKCksb319ZnVuY3Rpb24gR3d0KCl7cmV0dXJuIFBDKCk/V3d0OnQ9PihlLG4pPT50KGUsbil9Vnd0PShmdW5jdGlvbiBZd3QodCxlLG4sbyl7dmFyIGksYT1hcmd1bWVudHMubGVuZ3RoLHI9YTwzP2U6bnVsbD09PW8/bz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsbik6bztpZigib2JqZWN0Ij09dHlwZW9mIFJlZmxlY3QmJiJmdW5jdGlvbiI9PXR5cGVvZiBSZWZsZWN0LmRlY29yYXRlKXI9UmVmbGVjdC5kZWNvcmF0ZSh0LGUsbixvKTtlbHNlIGZvcih2YXIgcz10Lmxlbmd0aC0xO3M+PTA7cy0tKShpPXRbc10pJiYocj0oYTwzP2kocik6YT4zP2koZSxuLHIpOmkoZSxuKSl8fHIpO3JldHVybiBhPjMmJnImJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLG4scikscn0pKFtVbSgpXSxWd3QpO2NvbnN0IHF3dD1uZXcgZXIoIlJvb3QgcmVkdWNlcnMgdG9rZW4iLHtmYWN0b3J5OigpPT4oe30pfSk7Y2xhc3MgWnd0e31ad3QuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFp3dCl9LFp3dC7JtW1vZD1mbyh7dHlwZTpad3R9KSxad3QuybVpbmo9RG4oe3Byb3ZpZGVyczpbe3Byb3ZpZGU6TGssdXNlRmFjdG9yeTpHd3QsbXVsdGk6ITB9XSxpbXBvcnRzOltbVFMuZm9yUm9vdChxd3Qse3J1bnRpbWVDaGVja3M6e3N0cmljdFN0YXRlSW1tdXRhYmlsaXR5OiEwLHN0cmljdEFjdGlvbkltbXV0YWJpbGl0eTohMCxzdHJpY3RBY3Rpb25TZXJpYWxpemFiaWxpdHk6ITEsc3RyaWN0U3RhdGVTZXJpYWxpemFiaWxpdHk6ITF9fSksaEQuZm9yUm9vdChbXSldXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoWnd0LFt7dHlwZTpMXyxhcmdzOlt7aW1wb3J0czpbVFMuZm9yUm9vdChxd3Qse3J1bnRpbWVDaGVja3M6e3N0cmljdFN0YXRlSW1tdXRhYmlsaXR5OiEwLHN0cmljdEFjdGlvbkltbXV0YWJpbGl0eTohMCxzdHJpY3RBY3Rpb25TZXJpYWxpemFiaWxpdHk6ITEsc3RyaWN0U3RhdGVTZXJpYWxpemFiaWxpdHk6ITF9fSksaEQuZm9yUm9vdChbXSldLHByb3ZpZGVyczpbe3Byb3ZpZGU6TGssdXNlRmFjdG9yeTpHd3QsbXVsdGk6ITB9XX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnVvKFp3dCx7aW1wb3J0czpbRVMsdURdfSk7Y2xhc3MgWHd0e31Yd3QuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFh3dCl9LFh3dC7JtW1vZD1mbyh7dHlwZTpYd3R9KSxYd3QuybVpbmo9RG4oe30pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoWHd0LFt7dHlwZTpMXyxhcmdzOlt7ZGVjbGFyYXRpb25zOltUd3RdLGV4cG9ydHM6W1R3dF19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZ1byhYd3Qse2RlY2xhcmF0aW9uczpbVHd0XSxleHBvcnRzOltUd3RdfSk7Y2xhc3MgS3d0e31Ld3QuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEt3dCl9LEt3dC7JtW1vZD1mbyh7dHlwZTpLd3R9KSxLd3QuybVpbmo9RG4oe2ltcG9ydHM6W1tyeCxBd3QsWHd0XV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKEt3dCxbe3R5cGU6TF8sYXJnczpbe2RlY2xhcmF0aW9uczpbTnd0XSxpbXBvcnRzOltyeCxBd3QsWHd0XSxleHBvcnRzOltOd3RdLGVudHJ5Q29tcG9uZW50czpbTnd0XX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnVvKEt3dCx7ZGVjbGFyYXRpb25zOltOd3RdLGltcG9ydHM6W3J4LEF3dCxYd3RdLGV4cG9ydHM6W053dF19KTtjbGFzcyBKd3R7fUp3dC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8Snd0KX0sSnd0Lsm1bW9kPWZvKHt0eXBlOkp3dCxib290c3RyYXA6W3RYXX0pLEp3dC7JtWluaj1Ebih7aW1wb3J0czpbW0lOLGRPLGhrLFJSLG5YLGZSLnJlZ2lzdGVyUm91dGVzKFV3dCksRlYsSFYsb1gsS3d0LGRULGRYLGFYLGJYLExULHlYLHJYLEtSLFdJLEF3dCxUSSxnWCxad3QsZnd0XV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKEp3dCxbe3R5cGU6TF8sYXJnczpbe2RlY2xhcmF0aW9uczpbdFhdLGltcG9ydHM6W0lOLGRPLGhrLFJSLG5YLGZSLnJlZ2lzdGVyUm91dGVzKFV3dCksRlYsSFYsb1gsS3d0LGRULGRYLGFYLGJYLExULHlYLHJYLEtSLFdJLEF3dCxUSSxnWCxad3QsZnd0XSxib290c3RyYXA6W3RYXX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnVvKEp3dCx7ZGVjbGFyYXRpb25zOlt0WF0saW1wb3J0czpbSU4sZE8saGssUlIsblgsZlIsRlYsSFYsb1gsS3d0LGRULGRYLGFYLGJYLExULHlYLHJYLEtSLFdJLEF3dCxUSSxnWCxad3QsZnd0XX0pLCJsb2FkaW5nIiE9PWRvY3VtZW50LnJlYWR5U3RhdGU/YU8oKS5ib290c3RyYXBNb2R1bGUoSnd0KTp3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsKCgpPT57YU8oKS5ib290c3RyYXBNb2R1bGUoSnd0KX0pKSwoZnVuY3Rpb24gUXd0KCl7aWYoT0MpdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgZW5hYmxlIHByb2QgbW9kZSBhZnRlciBwbGF0Zm9ybSBzZXR1cC4iKTsodm9pZCAwPT09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmKFhuLm5nRGV2TW9kZT0hMSkseEM9ITF9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLykoKX0pKCk7Cg==", + "ok": true, + "headers": [ + [ + "content-type", + "application/javascript; charset=utf-8" + ] + ], + "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/data/plugins_listing": { + "data": "eyJzY2FsYXJzIjogeyJkaXNhYmxlX3JlbG9hZCI6IGZhbHNlLCAiZW5hYmxlZCI6IHRydWUsICJyZW1vdmVfZG9tIjogZmFsc2UsICJ0YWJfbmFtZSI6ICJzY2FsYXJzIiwgImxvYWRpbmdfbWVjaGFuaXNtIjogeyJ0eXBlIjogIkNVU1RPTV9FTEVNRU5UIiwgImVsZW1lbnRfbmFtZSI6ICJ0Zi1zY2FsYXItZGFzaGJvYXJkIn19LCAiY3VzdG9tX3NjYWxhcnMiOiB7ImRpc2FibGVfcmVsb2FkIjogZmFsc2UsICJlbmFibGVkIjogZmFsc2UsICJyZW1vdmVfZG9tIjogZmFsc2UsICJ0YWJfbmFtZSI6ICJDdXN0b20gU2NhbGFycyIsICJsb2FkaW5nX21lY2hhbmlzbSI6IHsidHlwZSI6ICJDVVNUT01fRUxFTUVOVCIsICJlbGVtZW50X25hbWUiOiAidGYtY3VzdG9tLXNjYWxhci1kYXNoYm9hcmQifX0sICJpbWFnZXMiOiB7ImRpc2FibGVfcmVsb2FkIjogZmFsc2UsICJlbmFibGVkIjogZmFsc2UsICJyZW1vdmVfZG9tIjogZmFsc2UsICJ0YWJfbmFtZSI6ICJpbWFnZXMiLCAibG9hZGluZ19tZWNoYW5pc20iOiB7InR5cGUiOiAiQ1VTVE9NX0VMRU1FTlQiLCAiZWxlbWVudF9uYW1lIjogInRmLWltYWdlLWRhc2hib2FyZCJ9fSwgImF1ZGlvIjogeyJkaXNhYmxlX3JlbG9hZCI6IGZhbHNlLCAiZW5hYmxlZCI6IGZhbHNlLCAicmVtb3ZlX2RvbSI6IGZhbHNlLCAidGFiX25hbWUiOiAiYXVkaW8iLCAibG9hZGluZ19tZWNoYW5pc20iOiB7InR5cGUiOiAiQ1VTVE9NX0VMRU1FTlQiLCAiZWxlbWVudF9uYW1lIjogInRmLWF1ZGlvLWRhc2hib2FyZCJ9fSwgImRlYnVnZ2VyLXYyIjogeyJkaXNhYmxlX3JlbG9hZCI6IGZhbHNlLCAiZW5hYmxlZCI6IGZhbHNlLCAicmVtb3ZlX2RvbSI6IGZhbHNlLCAidGFiX25hbWUiOiAiRGVidWdnZXIgVjIiLCAibG9hZGluZ19tZWNoYW5pc20iOiB7InR5cGUiOiAiTkdfQ09NUE9ORU5UIn19LCAiZ3JhcGhzIjogeyJkaXNhYmxlX3JlbG9hZCI6IHRydWUsICJlbmFibGVkIjogZmFsc2UsICJyZW1vdmVfZG9tIjogZmFsc2UsICJ0YWJfbmFtZSI6ICJncmFwaHMiLCAibG9hZGluZ19tZWNoYW5pc20iOiB7InR5cGUiOiAiQ1VTVE9NX0VMRU1FTlQiLCAiZWxlbWVudF9uYW1lIjogInRmLWdyYXBoLWRhc2hib2FyZCJ9fSwgImRpc3RyaWJ1dGlvbnMiOiB7ImRpc2FibGVfcmVsb2FkIjogZmFsc2UsICJlbmFibGVkIjogZmFsc2UsICJyZW1vdmVfZG9tIjogZmFsc2UsICJ0YWJfbmFtZSI6ICJkaXN0cmlidXRpb25zIiwgImxvYWRpbmdfbWVjaGFuaXNtIjogeyJ0eXBlIjogIkNVU1RPTV9FTEVNRU5UIiwgImVsZW1lbnRfbmFtZSI6ICJ0Zi1kaXN0cmlidXRpb24tZGFzaGJvYXJkIn19LCAiaGlzdG9ncmFtcyI6IHsiZGlzYWJsZV9yZWxvYWQiOiBmYWxzZSwgImVuYWJsZWQiOiBmYWxzZSwgInJlbW92ZV9kb20iOiBmYWxzZSwgInRhYl9uYW1lIjogImhpc3RvZ3JhbXMiLCAibG9hZGluZ19tZWNoYW5pc20iOiB7InR5cGUiOiAiQ1VTVE9NX0VMRU1FTlQiLCAiZWxlbWVudF9uYW1lIjogInRmLWhpc3RvZ3JhbS1kYXNoYm9hcmQifX0sICJ0ZXh0IjogeyJkaXNhYmxlX3JlbG9hZCI6IGZhbHNlLCAiZW5hYmxlZCI6IGZhbHNlLCAicmVtb3ZlX2RvbSI6IGZhbHNlLCAidGFiX25hbWUiOiAidGV4dCIsICJsb2FkaW5nX21lY2hhbmlzbSI6IHsidHlwZSI6ICJDVVNUT01fRUxFTUVOVCIsICJlbGVtZW50X25hbWUiOiAidGYtdGV4dC1kYXNoYm9hcmQifX0sICJwcl9jdXJ2ZXMiOiB7ImRpc2FibGVfcmVsb2FkIjogZmFsc2UsICJlbmFibGVkIjogZmFsc2UsICJyZW1vdmVfZG9tIjogZmFsc2UsICJ0YWJfbmFtZSI6ICJQUiBDdXJ2ZXMiLCAibG9hZGluZ19tZWNoYW5pc20iOiB7InR5cGUiOiAiQ1VTVE9NX0VMRU1FTlQiLCAiZWxlbWVudF9uYW1lIjogInRmLXByLWN1cnZlLWRhc2hib2FyZCJ9fSwgInByb2ZpbGVfcmVkaXJlY3QiOiB7ImRpc2FibGVfcmVsb2FkIjogZmFsc2UsICJlbmFibGVkIjogZmFsc2UsICJyZW1vdmVfZG9tIjogZmFsc2UsICJ0YWJfbmFtZSI6ICJQcm9maWxlIiwgImxvYWRpbmdfbWVjaGFuaXNtIjogeyJ0eXBlIjogIkNVU1RPTV9FTEVNRU5UIiwgImVsZW1lbnRfbmFtZSI6ICJ0Zi1wcm9maWxlLXJlZGlyZWN0LWRhc2hib2FyZCJ9fSwgImhwYXJhbXMiOiB7ImRpc2FibGVfcmVsb2FkIjogZmFsc2UsICJlbmFibGVkIjogZmFsc2UsICJyZW1vdmVfZG9tIjogZmFsc2UsICJ0YWJfbmFtZSI6ICJocGFyYW1zIiwgImxvYWRpbmdfbWVjaGFuaXNtIjogeyJ0eXBlIjogIkNVU1RPTV9FTEVNRU5UIiwgImVsZW1lbnRfbmFtZSI6ICJ0Zi1ocGFyYW1zLWRhc2hib2FyZCJ9fSwgIm1lc2giOiB7ImRpc2FibGVfcmVsb2FkIjogZmFsc2UsICJlbmFibGVkIjogZmFsc2UsICJyZW1vdmVfZG9tIjogZmFsc2UsICJ0YWJfbmFtZSI6ICJtZXNoIiwgImxvYWRpbmdfbWVjaGFuaXNtIjogeyJ0eXBlIjogIkNVU1RPTV9FTEVNRU5UIiwgImVsZW1lbnRfbmFtZSI6ICJtZXNoLWRhc2hib2FyZCJ9fSwgInRpbWVzZXJpZXMiOiB7ImRpc2FibGVfcmVsb2FkIjogZmFsc2UsICJlbmFibGVkIjogdHJ1ZSwgInJlbW92ZV9kb20iOiBmYWxzZSwgInRhYl9uYW1lIjogIlRpbWUgU2VyaWVzIiwgImxvYWRpbmdfbWVjaGFuaXNtIjogeyJ0eXBlIjogIk5HX0NPTVBPTkVOVCJ9fSwgInByb2plY3RvciI6IHsiZGlzYWJsZV9yZWxvYWQiOiB0cnVlLCAiZW5hYmxlZCI6IGZhbHNlLCAicmVtb3ZlX2RvbSI6IGZhbHNlLCAidGFiX25hbWUiOiAicHJvamVjdG9yIiwgImxvYWRpbmdfbWVjaGFuaXNtIjogeyJ0eXBlIjogIklGUkFNRSIsICJtb2R1bGVfcGF0aCI6ICIvZGF0YS9wbHVnaW4vcHJvamVjdG9yL2luZGV4LmpzIn19LCAid2hhdGlmIjogeyJkaXNhYmxlX3JlbG9hZCI6IGZhbHNlLCAiZW5hYmxlZCI6IGZhbHNlLCAicmVtb3ZlX2RvbSI6IGZhbHNlLCAidGFiX25hbWUiOiAiV2hhdC1JZiBUb29sIiwgImxvYWRpbmdfbWVjaGFuaXNtIjogeyJ0eXBlIjogIklGUkFNRSIsICJtb2R1bGVfcGF0aCI6ICIvZGF0YS9wbHVnaW4vd2hhdGlmL2luZGV4LmpzIn19fQ==", + "ok": true, + "headers": [ + [ + "content-type", + "application/json" + ] + ], + "status": 200, + "status_text": "" + }, + "https://localhost:6006/data/runs": { + "data": "WyJGZWIxOF8xNy0yMS0zM19hOWM2MWI0NjVkYTEiXQ==", + "ok": true, + "headers": [ + [ + "content-type", + "application/json" + ] + ], + "status": 200, + "status_text": "" + }, + "https://localhost:6006/data/environment": { + "data": "eyJ2ZXJzaW9uIjogIjIuOC4wIiwgImRhdGFfbG9jYXRpb24iOiAiLi9ydW5zLyIsICJ3aW5kb3dfdGl0bGUiOiAiIiwgImV4cGVyaW1lbnRfbmFtZSI6ICIiLCAiZXhwZXJpbWVudF9kZXNjcmlwdGlvbiI6ICIiLCAiY3JlYXRpb25fdGltZSI6IDAuMCwgImRlYnVnIjogeyJkYXRhX3Byb3ZpZGVyIjogIkdycGNEYXRhUHJvdmlkZXIoYWRkcj0nbG9jYWxob3N0OjM4NDU5JykiLCAiZmxhZ3MiOiB7ImxvZ2RpciI6ICIuL3J1bnMvIiwgImxvZ2Rpcl9zcGVjIjogIiIsICJob3N0IjogbnVsbCwgImJpbmRfYWxsIjogZmFsc2UsICJwb3J0IjogbnVsbCwgInJldXNlX3BvcnQiOiBmYWxzZSwgImxvYWRfZmFzdCI6ICJhdXRvIiwgImV4dHJhX2RhdGFfc2VydmVyX2ZsYWdzIjogIiIsICJncnBjX2NyZWRzX3R5cGUiOiAibG9jYWwiLCAiZ3JwY19kYXRhX3Byb3ZpZGVyIjogIiIsICJwdXJnZV9vcnBoYW5lZF9kYXRhIjogdHJ1ZSwgImRiIjogIiIsICJkYl9pbXBvcnQiOiBmYWxzZSwgImluc3BlY3QiOiBmYWxzZSwgInZlcnNpb25fdGIiOiBmYWxzZSwgInRhZyI6ICIiLCAiZXZlbnRfZmlsZSI6ICIiLCAicGF0aF9wcmVmaXgiOiAiIiwgIndpbmRvd190aXRsZSI6ICIiLCAibWF4X3JlbG9hZF90aHJlYWRzIjogMSwgInJlbG9hZF9pbnRlcnZhbCI6IDUuMCwgInJlbG9hZF90YXNrIjogImF1dG8iLCAicmVsb2FkX211bHRpZmlsZSI6IG51bGwsICJyZWxvYWRfbXVsdGlmaWxlX2luYWN0aXZlX3NlY3MiOiA4NjQwMCwgImdlbmVyaWNfZGF0YSI6ICJhdXRvIiwgInNhbXBsZXNfcGVyX3BsdWdpbiI6IHt9LCAiY3VzdG9tX3ByZWRpY3RfZm4iOiAiIiwgIndpdF9kYXRhX2RpciI6ICIiLCAiX190ZW5zb3Jib2FyZF9zdWJjb21tYW5kIjogInNlcnZlIn19fQ==", + "ok": true, + "headers": [ + [ + "content-type", + "application/json" + ] + ], + "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/plugin/scalars/tags": { + "data": "eyJGZWIxOF8xNy0yMS0zM19hOWM2MWI0NjVkYTEiOiB7Ikxvc3MvdmFsaWQiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICIifSwgIkxvc3MvdHJhaW4iOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICIifX19", + "ok": true, + "headers": [ + [ + "content-type", + "application/json" + ] + ], + "status": 200, + "status_text": "" + }, + "https://localhost:6006/font-roboto/Hgo13k-tfSpn0qi1SFdUfZBw1xU1rKptJj_0jans920.woff2": { + "data": "d09GMgABAAAAACp8AA4AAAAAUwAAACokAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGmQbmUAcg0oGYACGTBEMCu882RYLg14AATYCJAOHNgQgBYJ8ByAbB0Wzon60XsEcRckcrcr+ywTtCAu7vIkKUSLAEkX79qHYsVrOIXiSMp377A39RgODYjP02tCGSQRohCSzPDz5F++ZOzNvvxxoA3ZwF1dQBbkTWP2kVEVi7w/83Hp/Y6PDGnqCKCJlUaKURMVGDUdvMDJHVIg4QBAkokTKpsw6k0LdbmmVFEuwwOtQpqUCDdCJ2b0GBxDpf/9u9j+XQGQGIl+tEq1VOr0S2T2sZ9/yxZFpIOkgKdrXFN+0M4foFz9c20sDSrJUtd8OCK1oKHa27U18eptmu8+6n1sZZrwh1iFPj21mdFClKFNUq/93o939u+KbE5lkB2SZJB2R5cAGsWTqrUM7zIdYBXl6atOlKtOWiEXbpgo81PXj7dWfHuECB1Jm2+HuZL8f70TNAaYHlnBAUZgNm3JkGG03jk1xP/499lO/h8a025fRsa1BIErglKnQ8fHzfnMpUDgA2BYKi5NUIDQ4QIQIgYgWDRErFiJBAkSyZIhU6RBVaqF0ewuBQAEzgDkQoECEQIBppKlg2GIrPTMQ2TfEnwgiB/rjvUHkMOfAGyCCAZD/FKAcur//DWACClAwQAGBpUlB5GIAtizHa0ttKaeKQm2vQ3WjLhTVQKGY0BvBgRIKqVANlwisjyMh0ppQ1Deh+NGEqrmqWJVvR6sBXG61pUbIcN+o7fsN1YWeG1N63ISEowypb1sGWKzY8DpJ3CkSTjtHmhx5511wiQJFylRcoU2HHkPGTJiyYMWGLXuOcuTKV6Bbj3t69ek3YNCQYSNGTZsxa868FVu2PfTIczt27dl34I23EJdyAwMFfBTxUCZghQAEb+JI40oBPPzwTqYFqckPl/DRyMe08rXrBG3owhTmxS1yn3W+YpMv2NPI6flaXgooRLGrJy3cQy/60I8B12qP3ccaHmAdG67NXtvCNh7iEXawiz3s48D1olde4hVeu970wtsMwjaH99Tmno4VDtFZAeNSrlHIXYr5hnI+ssI6gwG6/lZhafUuYcKQGyyyk21O8pl0F5anRKe+hKRJzioM2PG5intH5jlnvABOsOE15+h57j1YUvnOZcECFrGE5QH5YHFhVcVk89DKF64D2tCFORWrpzfpHFxyGfkocG32wha28RCPBmallW9chzZ0YY50bGIL23iIR92j6eBkRZYtblimWt8BdrGHfRwMjMGVcXiQh0IUU5XwBm/wBm/wRsbArPTgGMKouGlGscxMtljtDPousId9HHCk8eGjnchRVvmebT6Bxp77ruYXziqNopPv7ulXENErGQ4s+RyvBEcuYqbr2GmL3GDVUKy+Fj7ZKiznRWelhByWnEOKchUiN+kQOtihuhEG0J8bccBhQuqyeXrnTrum1lzT8jWp2mttvd+rXmrFWQVIfwX5paKwooXeF1k1MKMFSTfeC7JJvONjX+SHa4rSa/WkWSiSb/fh3hfYv4gLkMKyVHDm+2ltX5m8yJ7Zj+T0P384/U+tXkEdC+GzK+QVhIv8inJt93vWy/aEFWd2g4oPFenBdtqonu5m1d3tTZW48eREz/uAHZAvcedZrc/Z2ZBl7ZbD+VW1lVH3UtjKlWmNTW66A2eK6YxQXGCt7o8ih+Tr9u/et9hB7qnKD2j5a5i4Z9KsXOmQ+czviLa92Z982e1vGSa/gQdzLk/G24L+OfYP7itOpkh5++FJX0EunXxrrYAP7qX7eG+L2sz/9h83iBO6mH7laRzKccmdjdbuSS2w9+gvrXKTz/at3rbWE5gza5LxXcakfbfXdMP6xUO5j0tdabfOe5ev7B89BnJbvZQWauCDDYLpIrhE4fmNdpIEBpLkMbtERT9r0CJMGx6mFx9hzMxRFh5nE59gx8F/UmJxOQqdUvxdSrdHznnugHke87CFcr5fBBHkUDiUWBQxhYnL7ZQICTGkZHFOVtIKkBMhL59LsrssCwVFKCpESS7KslGRk4ZYmjLSyvxqzTAFhmqCgSlEM5ORhbxsZGYnD3uZOcghpTDmeEdBeciHcr3VYKHCBoFwKLkY0WMAyuB/3IaMwpg2D7FgGYsVitms2oC1GfPb8giT520GOw6g0Rsxww33kQ83sgCGM3wFS44oZ1gUKQXJiXJelIuZA7EZFpjhhxdOWOFqsKraELpcEJRAw3BEM4cIS9lYZwxiC5jAdGQXC1HSRElvI7JkE8AQbvjghu/I5y6KAIAtKPRAwQxrYDw/guAGOsE7e7/wGsZi+ukydWme9zxdUpnlFWHcdBcNHJ3NTcyqyq1Mrh6ktI2hnrTtVQtpR0P9yp1NdLkOk6PJsGPejIsG6rax+x1B8gGx/3dnPpA8zNPdGS6AQ2nG60cE+fiDkZAZgArFfpACYdfq1hcvVOAKcZBlx1exPgowcdUHjmrjNRnlbeurgqLfPvZhR61kpJob9SfpQOg1EJ7ycT9eWB0N8FQRgGw66oOyZnCnVokV0Y9MCYsG9eo0atLspha32r0VRNb1baECBKJr067DHZ1QEHyOALWRiiQM6Nd1OVBWeGiuLyOEPpR6zFPA6sDmVoettzPUAlWw0jws/AU4YFQcgIPcDGibdDpcqEGDNV9WLeXh2bCAchCGogdsBIeBEDBThEr5t9agCYv2vfcPkSmmMRFb8XDMhxPBHcUdx4nhFHDquONwi8fz7x+YCadSleJzD5m05MCHU8SkNy9OCHd47Mvdl/yWuwRyBEsOg/wh+PTl26TwTf3p/B0RqEKRBXJh7fST5zENEFDpawHrYY+J1v7H63WjdZv64frlx4i1YNGSZSvixFt135oH1m1IkPiD9gknSfbCS6+89kaKt9gAJXsfe3UUa+YWFWOchEZuwb24FYuxL7kb9+EePIgj8RAexwPkCZyKJ/EiHiQv4X68jDfwFN7EWzgNb+N9vIAP8CHOwEf4HK+SL3AWvsSPeJv8hLPxM/7AJ/gTf+Ec/I3/8RWZ4DySwvflZW3R+c6yo7CT6ILyeEJ0UXm8I7q4PN4TXeIczxcWiC51jpcUlhZd7hwvKywvuqp8vJLo2vLxaqLrnOONhU1E15ePtxDdWD4+TnRT+XhxyM2+pcAIboFAYarPf2YX+CGpvIeFOPMLceFeq6w/gTgKoAOPf8ccgYGG2FEPQNWhofLt/UALE/2mIyCoiUWA8u69T4ycPEbW3F4KAyVXBYbCtFbWDIAcu3egbYgijIKBSmtD3rZHg70UQqd9HYL1m5HgXPSvCAYWDOYwKN7mdOwa82gYrBC4l+W7YTuzMlPOrQBlwS/rf4hsqNQT0ZlDuzeZesi9DmVE0YpagF3r3PY2r9MVxxBTw2Hco1tnXKeDMuJAF1gsIMfjOmbAN1QXPTaSPaYCbcTshjElittS+z/nIl4/b9ZtQGSp2g1zHq1K41Qq7QFeCq6YYH7Dc1act4bNyMpcOWb3gdM0dyI+PWsGO50zEbTHmFCU3YtPIP04/5T7OCK1C77qhjQKb+TGUupLBOix9GHsmjPRi4XI1AiCigGn2ZgTpNVfKSstJaBY0ohrqVDeESsYjADmyaEiQtD64s8Ll5k9zYqF67Ram0p57DSqUwp1KYL2qu0iZU4uuafHGZIUzA/Lbp1zH7cp+VncGlW+u15Bul4rudhswtRWUi+ttiILG20q/+z4wOwPqX+o9gZy2NehB66FNVd4NRro0wqm4aTRZO/iiU0XCpl4YpiHYW0aOeEH8nhtpJV6KtIKO8h74pAu7IpgKUkDYKbDl3dUHnW4w08ZXtMxr2jrw0QmQAtrbcEUdRrS9zvQ7u9W6ZKaqpIdPYcBZ0OfG7xnLXsSYjof7vz2Ab8AR+H4rujx0VQdMg3PM+cokxlNDuMJMWHaGNJ0Rfk+kAWTf1009M98UKgRNLn+y5AIhhvD5j7PKyKGSIyXtSqbH9XMK6Gf3cnYdAy85G7oXdgsD4irnbLXImb7v5s3q9X6r1HsSfXtaptuM9pu/wkHteuoCqHP95OsuN1HphiTTkLsaTN5ZnvaiRx4g3gGLpd/Yi4bLbK4pKJVuFnlZkG6Phpl7KRdA6SrPzFppuJzTWST5rbdgy5L0O4MJlaMC7r4dPbKxEIQmEzFlvfnruhciE7XzhrtnkOe0USojrcyvQeZQNpa/Zv9WoyHHeiuGrEKWY4fYbJraxfWRlMprZXocIL5lOaP/8zbtZLTcCxjYnGpWmCj1FRZ86AMand3Su7LE40xRdnVeUGzTA/dVbM8B5hoivq182/t2V/4mirsvY66MUq9uJDrI/g0Ot2gespzFY0XL7+SKcKExsowxTf6JqTl++Ic0Ok5PDvF4IxCK2qjkxpNDy4QtjMvMMYELnsoDMhe7AriwA4ekL0R21UGh9R70/+ZdCbZ1t6gs4yyUwCzDGFZ5XJqmDs5Asx0Le2pVHLjxclmg04GIdxQGUMnwdL8LFIBDsWoW3ktMIWwVhnP+4K6agDowkRGVZn8jsqOCBlqoKCYlTjJz3k1eODW10lDTcflpoMhxO4l6MrkQSRsdNbMPBo9bNEwPrOSdY6ezTs+lrZGmnpQY/ZZIC1DyjNjOjqHlpZRyyXNd+ZVEMoleF5+i9Vxwi1foWkjhI8lwzFbKbqEPY7idhBST44a75IK9XCsd7mzTsbOuNSwXvCSXSlRLY8tArQFhNT7n+U5KKjGuluuQ/ZkOccGNfHQysY5LL3hutJgXHpyhEP9zmOPaK8fLdSYhEwHuoLbogcvj2XudCGKXCynsEsLUlkBrOEYmQbLUW7gl0tzpqoAJgS55SycCwUTUxqeEosN32jpJNHJUg2MzYX0hse5st1NKhhUchjvkL7ApR6ioKFOEgMPwm+dk9rkGla1ajkHb8jlUGaeBBsW2Fa5mFEZBnTqgQtLmC7kHZzRoEH1BjoU9TWd+cyswCZCXQRO208HPaFk9UL5zFUf0zWnCrbDpCGR0swhjHlHWprAOZSksdvo51vt71uyWcnolYB0FTuT4fm1F49PRbA8XrgjlScpL4Dn6vndtJm/jkn9X3OR9fsWNuK+x+ekfHmC589NrdoMGrktOpNFk43qvZRnTTvP9zS2aOEm+3h2ZsKu+5T0mOZsb6mU3pKWWl+4/ZrZZUSXvhLoOI2i2WqKfS8O03WdTT28eU2AjhSHxLw7ypQ8PhCW7+SNpPBTCiTHkBmJMgTXOHeHc2FjD9q7na2WxKWa8Yk5HqujY3lyNItQQxKQzSTMW/NlNYgmwItXI2cuqmaGAFtJSeOyXAt5YPMsU9Eetk5dMQhV/eq78AM7ohXTU/AS/9O9Ep7WG1s17oShrQgNnEst9OGam5O8LGUOojRXOb4aQJp7GJGWL1zgQG0qFYlu8B/F+tnM4XtFrz77kQUzRT2Gp1WeOBsxdrozEryYyTMRuze2TcCmETjB3TJ1cNQ4ZAHzQNvuRQW2dEdzQHo8r3I9gflbwYhaMyM40VkBtURhRp+mw9yUSsks19NaH/TC330nLVdxRVYWp6q6aogZW5i+zlWTuif/GE/EmPgYjnB8YtJsmytjbBqKvxfd5k1nKkAixEIK1bB3blMaczMgwHpHM/7FTMexvWR5QTEuhYW6evbeSbd+IbboMFVAe8GynImOj5qeA5mvhjd1cSnRSK4BKtKxE8/7KgECClcH07ranaNROF2Zd7NSPN5om6XkLAC2mn5Ot6bcI4SnGLiiE47zBL6mXXjfr2k0cgwVFv7qId4RM2TCrd18jzs8y3QmtDm5arXv2itPt0lvtIeMAYY+hsbbAYaRO0Yj+D0reacKjdgnIfZoOJRLArdDYUx1XscH9BaOi87p9QHn+UDeS0aoMefXqVE0RreFD0UKekWu387+2XdNugWdJAwqXElQFNyie07f59F/9r2FWrftb4ohoAjbX4fupIy0TpVnmp0jJTWTMzfZZwgztzmHDibJZdXd6bTy3DBKVoJDcDnRINejdm6qnX0A3z/Ftv18nFLaSa+htRcA9n5hTGXzj8rmJK2o8uYwak1DihPWnkC2NHejOGnbu1PMTD3IbuKjZ2Mqm75VN6ZoPdQlOTI4bBAsunbRdiIEWpi5B7l+P9A5JxnoX76sQVhNxMLDoNa4qLOtKPVmZVhmXUoFNWPZJvse6Udk88RBZniWgf6CZcDS5/vtXmF9pUFNA7bNemqa+euPV0Yr8mM7ytF8kqEJdTGuf4x9dAy8PWxcAsKB42QAl7QNg3g+AVJ1t0jF62ZU7cNGV6WiO/DfVeTHlh2i68RcVWd6EbrrJsR8QJQe3mrXjKP00YWzRv1Jx4S9RceoRilH9RgI17P+jSaVgEDOC13vY266oWg/D8ZAtQicm57/45NmKmvSs1JmShC00+vb+zzkebtv+0oIxHBqytmEoGJKgsKXgNPwCf4JZGqdGDJa0nxoNAcpYT5i2LNEuOLvKP9M5eHG3iXUaYzcjuL2xo40+hQZ87P6X111zf/I56P/NzJWVdYi8AO6KIDBpWb7vr/LB8KZdp/OU2mOPVYpVZW0nDu9+WTqjek5/9ipp8udhIiPFXfyZv6AsJxwmHvRdaMI07Systy09tpEip/fvWk8dWJnvc8zjh5wJvFkandU7+eduZgN9+B7YZTU4dbCkpbygux7RV0UuBC9toPf8aX43lI/feJ3rMSJbRFVeVvYfKk5vkHyk30daFg2/vJftb/zZ3Hg9SrXQABXbkNhRmn5+N3Ktuli8/DTGsog39nryYE5I8vJpWjSYxMw9JzpAc1zZzwichkj9YGS6Nqiid7C+48l4NwJAyPvS9NaHjW1tCyCap232J53uFidjhKhH1TkL/vFtntLhJ8uGIzo/bO1vPp7sy8sazjitLdEZLtf54u1qFfrmBPeScOtUoM3BXpqK0p6a1CuGuEt9QlJjZWxUY0lyYnNpXDxWvUV+34CKaw/0v1ZQuaN1xMxMdufZUWIKYap1gLgfpoBzXnMYoQyQBP303jc/aWM1rnb2tD6GBZpd89EyLVRneXaQiNAOUD5mtc1jHQG8rI5E1JU+eVQZ1rz1DAg5yBBihnjI5eMjjqphMfRyJTsJCSQjNRsjjW2TEy1EJ37ksJ9HToT9I+3iot59LeAmHgL+FQjDNnOP1sS/J1D8Ly23sMDackfuec4qoP/DtB89ANO66nKXmYOMIi0pBZ+YJrnybUudFw1WRmNFvxeGqE0v23Xdqb9qGH8rKzHT/en7fWsIqz8D1siX33951w2Fakb/8NDa6JOj+VfSfQ1aVtSNV33AihVFeblFUQfD6IH4bUSJe2CXOdRE4ZuwNBbX30c6vMLrfc6EXGoeDhy+MfGY+9eM7/y7sqMRHppaSjBqAjVmBKf1hrXJge6HyeE9gQ+v6j+UZV4Cgb6RxLP/K2uf8Xxm/9x2Fl//MQrcUz7790zo8Oj3QLdvF+1BR2HqsvPjSSMlp09WnOP+7zWE759fmmGqF/cZ58AKI/cazLh9EgBDD3ek+VkEyhXNzY0UgFDT/BkvdAA+tK3rthw4ZtuMtdknYHh7nMyDqhn3LvCU1SRioXahrm3okwt9b5/V1KTK/xktHGKlEQPFLwPu6d6jz2fSlOlhYHB87MEuU562L8f3n2dvr/zaJJaXldekNp6FymDfytz08xfP2NuqRruEudECd5T+SDnvuihCxh6GPB30kXzMKKdmNrV0kOZk0X3GBxFx/610giGeeALVd7s8eMwui0l7/bkSSgYjCRPp5xDapr+XSZeyJ9Mk0VqjaAqVRw1EsrJ+FZicfbDabZC9HupheWXp1lB1siYx1r/sIM9mJ3//fiDn3tQR29TYcG99ptIOBjEJC9lyycaMO2b6Z4CYwHzelRNuiSM1fAcuaEZqUmTmQqFsqUZ4V3l0muJ1Lp9g4M8u//mS8yz2bSateRT3l7ssdL+kyElvbfTikeb2mzhCkIIaUobjXDXyfFsaeBZepC1SwqfpIblzd5paRjPpZDaUhO9pv3xFT4tPIvPisEnbjyKWrzXNtg8nwfaGlqfAaNFldX6ydMJdM7Tn0N25OaLwIJ9vp8Mj16HbnYvz3gszXZtwY2OCNrh2t+Jonv0YHpFJ8BYkuSzC+u8YzIk3jiZ85vndrgCxSMEzenBfLUB/2WcyOD/LyBYUIMeAeJy14vcc57Nf3iW20BtomZ/fPZ8Pgdc8g6titBwO2n/Uf/DraZlwzv3WA8h+wsMrzQ9H1vB0QciK4B9s0LQAcZuHUBj6EFi2LNBANgoXRXTJayuyNy1iDnPzqXA0w9sJB4EwkUc3i/+3odDbi98nglmghYPg6uK8YiVT+nQrfhy7N3Xm9RAWlxyeE2kDRmi3/fd7ly6g6qCMpw+23dzSl/Aaad3D9qR6QiSbQIZVGV5/jw51f88oIEhxxewQHb1oz8devwfhox6UPeiIKDC9xTxhfXsbm79SzhjFN6YhiUFMLj4VffZEtd+iP/8r5L0dSk+rX1/lbElgDGiviSyuv3l6onF9gPwFvv99PTwtn+LIxmw4MuQ4V/zpHdXEijYxbp3BY/sRn7brWwXNLwBFd6Ux4nUTwVnSin/r9MixvfZXqoxCHavfKl0ytZQ1NO5FDvAzfs7sXuctz6ZnaGkYRQ+bXS4dMTWN7YVqFcyuR5SdPUJ9UtAuaA2wFvs79NTw4/8b2NKfP9bfvl5ym/OTcH0mlZEye38BjqqNMm/4mHfzpl/kT2AeWzHv0u4lxFJ62fELRer4HTX06e1aRRGJ8iTkElJjyc1p5wK2iNrJReOUxQoaZeSna2nPq/XD9z3FXrzM8rSLhxHXPqk2ud7FJPFB9T7xcVuqbdCKS4ptowCWKCs+4aU5RfMTH7yy4DjHzYJcOUqoG8rOnc43wD15ctuw8QgOyx1hTINmaGpqVFIWzVz4BxlBVKikhL8qqLEIvYpCvuF3TvZreTa6XFDtoeqANaSpZT/H6akbbBK/RQuo/zcTkxfZ+vbkplGpn7UVMs9zQmG2c7X+XpXTv+cBdXjI76u+h4HlZwiA2aLhCkMbHk88vAkhoxebHpfeKPMU8KN8bRdhbNPQeMHPLNHt/3qMdm+O/MoYkFF6wP4/WJZaXyXv+54j0fSqdzDs6DpHUig71uc8S0OwwUfkBWCkJsOgyuycyB7ldea5n1MqdxAz884aq2+oXOrPZPiWB4eEkzzMDMOtlLQLjXVDTJLfljT3v+qK42C9agOTAgv8gF+vCH/U5enyzaqlnpHrzEzOD81ppJoqSuTLpP8cF412bv07a2OKWRsiNx2/ieD+gNOikIgvKnly8mjCqsrOAu7KVCh/Ae3naAzl5oSgYv3/CE/AQ/2HZUw3jsKBG5Xm5lZbl5rAm+tAhXex5zoot3giRBLl5v+RNPDxYZdPB0+3eQdpUUf3v1Ethq7d4YdXNasiBYnPeWzhONkYuGV2yDe1EoCTQ1z57WGsJwGmaZnvY8YDzwOMHvQ1fCsUVbY4LP+5bVvd6/f1fu4iz7xyQgE2PGAHcADk1pogz7x9M+QGnfza03ps66wQbNs/e69J5ijW5nxUW/TswYZMHD5nVc/GH097EJnpeUpWWuXIF9vyKvqS9CJU7Y1vqbiKHvRyj3cB261kSBQOIwpD3+8X2/eMr+a1I2ojSlMfgGMKXOjOZy7lL1ugdUjL/97vHK8R+AhZbuYc3IZU+Ktf1hz4pj4kFtXrV967Hm4SArb82ojxkz8fR7dTKJTD9/0dK2stFET83Kiw3PoJUyiVh6gSY/X15o08nteW1BcZmZeXklt2N6Ja25oNrOob6pNbalNb2oxt2xujW56uh7SWF1jbqEaQ02Jev8sJSr6SWrku5TUmHePEuFJYsw74Ngi3k+hvbtsTZgjWBHUqeouVi5zLtaX09+lQjk7moKeonyjgMbH226hKUSczTmn1Bu1vwY3fYYuql2K95sjI6ULrW2VvSl++ur2FfrOjrcIVjS8W2CaJ85cyjaVWIWMrD398Wyekj3YVVXXkxRgqGxfoFsuOSrbR7BML3znzRYUYG2q6VipO3PR9hCJLdbfwiU+qOUiMOUF/rxpndfr7zz2/IMEmjyOhTVVkl2rnTatd++frqssdH264RVZlW6bEF5N9CJ6Bss9DaVXy53saGwQbauX7Wivkz5Ob7h5srPinNmtmXvWOhNR2hP3rGfGOyx1libGdRY6LSFp6JWJhXdiUGyg2436kOpUZXNDe2MbguZ1LwyhLiYhLIuWoGgnbKFvdN5f8XVj9H52BChEx1AO3/GSBPwGxxIdcbIztJBS/v/EbKKjXu443eAEvVa+nV517njHzcbj9DrphQ/WLlqonLLQ8Pi0K1rCF4mFjGoJXITVbGsdbZtem05jD1MNc4vrnkgrnNO44u3sDeJuMx7p6W74DNpCVvYELTuNoGZlGWduqaZhbn3tqrU1iPEqJxISu0hd5YTyLpLAf5/V8GpQXKioe+Wyp4/2FSM9Q0t7K21PYln673QqAR8UQni21AVcd0wtjBAHLSUVc21jPUdtBU+nUio5KotMuKRrryFYJZFDKKPGRFdHuHupeBiZWdrpXqMtaANvF2TtC3oCd65C2J3w7uS4Iv/DASiKgg+2yPnWWrdFGDMZMFvQxETMfxQQdD91jfnv7lPA0KF67sSg0RPNx0YD8G2wli/frsw7Catv7at6UcHijBXj4QhYLPQqONCwUfPiAKZAYhF9IDuHPlDuUHS7Pzunra/Cm8HfN97D1T+W4hgQEDflnxgEYq1IqExQb6+PkUdsdHxqFDk9FQmkIHXLYzfbZyZvkTynaQlmmlgiop5oYD5r0O8DyHDFme3FZV/kpzsRugRw+gRtYfsBc5ksdpScMti144kW9gaG5vZ7OcqT2zAwwHu7eSdsy7wX5+RW4ZG00XnXLCfBeuSNT3NSvRrdc9/Ed4DQFdVyTEiheOyr4JjBHG6ZFzOxq4bpYp8feZkWpXJ/aXm+0qU1Mlbxvn3Uns9PV9Am6hTA0Mm5/uplg81CXc35aOCkuE8NbDQXDTSmKIg4akYJGUtfMnEfSLdKMsxe7ag16zwXKeqmVySnFpoT6aJs6dsVb5ug7xT+xMw+PNj2O1oGDLn4UieIik6KzjveqU09jZllD9vnUBxWcRE5ETF10Z7BbJkvOrrC6V7inoqufb6BY08/IBteX49MDz5v6UkJkrLIjFXNdLO9Z7soCck3Q5g80M4xpEsnCuM6RnkaqMeKK9tBtlPw7f+YghsVpL/TaRExq6HU50l779gn3Vr0FK5J/GxoeJoie30+Mslz/poY4aNWfeowRfY62pVfSMzkliOpqn25x926vdwNn976YxWuPY/bD9xX0TIQ/vOx+ZFRP1jNr3uEv+s5/QoH11l7LfeXOaKlIb+2E9OItqcMKh1cZlw1fd4Wkm9o9qsrCZmK6Jy2rZr+OfuAxf1q5zshOQE1UYuqqR9zoOq/9Dr7Hy1IAcZKil1g08N8y3s5CLOEdZmL7zPEURQo4JsJen18oaWfcxLZkCaFlnjur3ml8R28Wj9B9hyPJhPO69JC8QHsn4LY4wefMMLT8zvP2MBesozyaysxhbadohynGL6WFTG+92Pb6feRnvFPxSv+wXLGcclfkh5lXKYqRW8lp68z5QqbaXz8a3Xl2NdFwdGJ76rj3xe0n03E3J3mKY86mt3QDZJ3vrCQGrrqu3zY3/7VA0bzACNfHyNDP4n6eNf7XU/PQPbqVVkZNVW58xpXz8lcUwPpznkn30ATvUyfy+feXrJG2RHJFtJqoj3DElKqVy8Bxz6Plqx1ECoxiuxrp9METGa6mnLWFFRcbDB+GUj7ozlNbjAGQxEZvxSE951YhaKSa8gxm/ZRcQDLEFRKDWV1QdZ7Q7yrqQneCdE7ZYx3NDXDOxvDwWneWE+xUF6xUE9g66CLRUbNa57DmwyJFO1fdgTtPVOOR66G+9HGx4kgvCizV8AR//8Pn0RhDg1ZD9UO2QxxHDnzv2vcUWYi6bjPxIM3uzU2NbU1oBLTqkZQg92NOy53SLd6B24mpCvwEkLkI74jPn9c/myoT9VCckG0nCMu7qSc1KAkq++PFKi52VIc9kMJMBvk/NU2z627MPmw72jvvy5/N8gb8xvJF56Uw+VH7+qbt4rCayiA6TOBdkF3uyhQEnz9S5Gu62SNxpzGuNi8BqQyszr7dkKifBav9WANtAq1on/LDbAOt7r9P7D0ROr/XlzgibSK7PXszUBfTRMkJSOiUc8gMk06ccGWfGTn6kmHsKykoNBMWmJAUSjW1QOr7nhN43aHvqO9jemxdhD9fMRaWZBfxyY2MIVGDswrCouvqElRXXm4O4GK97rsoSAl7UDwMdV1JBga2ztA9vqNdZJP7561OYRpKGvZTmoIm7mou5eRY+PLyO7qpq6aQlNaNspumUGh1Kxg08Ur7gbVeH1VdcL1WjddviYFW93ruuY6ikrWmto6ltrAb6lpFR2Unh1MKa8ITcyuQ7I0V1bWZoAfzHnFkTpE1UHJUM7L2dNY3+lGpYMbPGjrJHQW/YkwHI4ur835+mEdld4u8gCr4fkBjPDkh1pCvMFeCotLs1Qy+226pKjn24lUOg+KlxZjYHX1+TUKeellRQATRk0xDG5Er1gb9mVr37qKlJV6V1OVB8+g0bkooqnybdB7XjXYWmUGgwMOUO1VyingyvEbQModoD7XT5BWWCisnii3SR2uFx9cTSCuRQOuIU2kmdwkLeRWSetBgQXuxGpOimlVLwJF8Y17UBl0p1non2nuqJ/Wq9mVUfSLqkPcFVKe53eHRKu6f8hVcA8qje40d4mX46y7eta7BzFwp6UD8TJlZSwrOEtONUmraBE5+wfiTvOvf6Y/iJHl1WxdFpBUKYqEgf0A3Gm+ES9LmUqqKudNDXKQdUA07FHEnSajf6Z0zDavZoazxAEYouWwJNrSDCDa9gDiThNDvKxUSFL7As0GQStXDOVzyUWIl2kCB0nG1MO0wSIABnYKuNEkemCPZ7G8mi1rAY5lYm0PBXeaZMvrjWVP5VeBlQy8tgGgqpfacIJ9V4L8f3KeiS+5K/ajSLaLlCYfjmjsjiq3qtYyAaqrWqXTwNBP7K3ccAOCO/+m96iI1pZc+USQs3etLtfmHLIDD/WmG6xYgLvyRwtQSjGKoqu3soz0SOndUxRKtxD1QsApXdA7qVjIgaGMgbvpRlZEfVoyYRRc0ekoaB+PFM+IDBEkUMxP7ES9DfYx3bi8zUZXgVzMxgI7KLuBWou2NDvzr7bmmpgHCEbzbv02EhSeb/bNSIsQZXJCYoPqydWMFIlMZwBLgnbP6Dw3XMFMDgAV/Rt5aI1DsQscJup1rhmwoctZGwAq+rdi4/kclLX7FxUk/OjM1Ucy6a+yD8QSvUcpqM/1bdorWNwAQEUwINuV4wqPZmYGqOjfxhyHm+hW+gAet+kRIFaeV/y1GD+UfmcSngKAxy63FACvH5NPf+L+rDGLTAkApkIBFDA6bMIGMHXDFfGvBiva1UN9P2ncTCu/bDfnC4pCT0ZrYN5IAvpLPu0NYrFDjnRpUUK04h1pcXRLEqXQIVNeyqpnHd2rU4B2eMIFamhEDPThVQxfWkWWDEpNUD99H3ntpLBazWxkwK/9g+Xbge4uK7Yr627p0KOmR1Jk9aYiIWp13Wl1Nku4GBjesLO3ZryEt7cPqzek8+ls/azaJPl+TXV779hIknLbc7HNEGrTbMprNVWcNK0uqDvTr4GQ0ObetLk1kpJ2jEPzR2zH2US9K813WLab0jIrr6xm4bw+G7B5JCi/4esblQ1LOhgx2qbZ7ICPbIJ294V1k9jABFfqLuk6D9eMbBm11MuY9jRzD5U1rO60Zovcstn3aT4NR6j0qWjrCNVP8oDnXVOU1TrUZi9s8LIEr6IVCxlNmVns0pOHpxWqwlqg6jrPtHxXUz5xwbOPqMUSa6WAPidgYAO34YLg2sJqpI27SbPHbnMPuNvoCoYx5q1BXktzvQWybhEqypTGUQjiyI1D9VUZVEGVyqtfUDFICi9ELtydSnEmEW5cw5N6GA/F8mV3UfXhjIjn4lzzqcQuxUZi2jLVNT3SzdaVoeLsoNihhwhYQguKIMIJKjB06cYuSyiCCCeowNDQtWFqk6luS9SWOiyobTG78hIGOjuEGWf+9R3YVGGY5Jpqak/MZjoi1Iao/bQjB5apfE7xDOYqfH22UxgmwSukdrNd4CDADzIIsIaBAMwCAXUMLASYggANacwA9gAvfRFCHPqicAi2o5vsDNAXQ0ycjgVpfroczIxQQ+IrhD9P7jwEwpElTebjwtFCkiER4QfWdoMrKf2qAtFvwsAD3rxQvAB4/oLhuZFigsQFSSASHD1KRpXtLgiRM2Dh8hfAk9/oG1Ktci5SlOS0F8WMdZZtswP5UnAuOshpKc58obuujIwnhcSf+7xEnlzh3ZDRw/d+jh5tajQYMKXhbL8+6azgxtKLmxoAAA==", + "ok": true, + "headers": [ + [ + "content-type", + "font/woff2" + ] + ], + "status": 200, + "status_text": "" + }, + "https://localhost:6006/data/plugin/scalars/scalars?run=Feb18_17-21-33_a9c61b465da1&tag=Loss%2Ftrain": { + "data": "W1sxNjQ1MjA0ODk4LjMwNDc5ODQsIDksIDEzNC4yNDQxODY0MDEzNjcyXSwgWzE2NDUyMDQ4OTguNjkwMjE0NCwgMzYsIDM5LjI2OTA0Mjk2ODc1XSwgWzE2NDUyMDQ4OTguODExMDM0NCwgNDUsIDM0LjM2Nzk4ODU4NjQyNTc4XSwgWzE2NDUyMDQ4OTkuNTcxMTAzMywgOTksIDI3LjIwNDM1NzE0NzIxNjc5N10sIFsxNjQ1MjA0ODk5LjY4OTQxNzQsIDEwOCwgMzAuNDU4NzIzMDY4MjM3MzA1XSwgWzE2NDUyMDQ5MDAuMDU2NzYwMywgMTM1LCAyMi4wODc1ODM1NDE4NzAxMTddLCBbMTY0NTIwNDkwMC4xODA1OTgzLCAxNDQsIDIxLjk3MDkxNjc0ODA0Njg3NV0sIFsxNjQ1MjA0OTAwLjYzNzcyNjUsIDE3MSwgMTcuMTE1NzI4Mzc4Mjk1OV0sIFsxNjQ1MjA0OTAwLjgwMTA3NSwgMTgwLCAxNC40Mjk3NTkwMjU1NzM3M10sIFsxNjQ1MjA0OTAxLjE5MDYxNTIsIDE4OSwgMTIuNDMyMDI0MDAyMDc1MTk1XSwgWzE2NDUyMDQ5MDEuNTI3MTg2MiwgMjA3LCA5LjQyMDIxNTYwNjY4OTQ1M10sIFsxNjQ1MjA0OTAxLjY2MTUwMDUsIDIxNiwgOS45Nzg3MDI1NDUxNjYwMTZdLCBbMTY0NTIwNDkwMi4wMzUxMjI2LCAyNDMsIDIyLjA1NjI2Njc4NDY2Nzk3XSwgWzE2NDUyMDQ5MDIuMTUxNTEwNywgMjUyLCAyNC4wMjUyMjY1OTMwMTc1NzhdLCBbMTY0NTIwNDkwMi40MDE5MTMyLCAyNzAsIDEzLjM3MzgwMzEzODczMjkxXSwgWzE2NDUyMDQ5MDIuOTI1MzYyNiwgMzA2LCA2LjU3NTEzNzYxNTIwMzg1N10sIFsxNjQ1MjA0OTAzLjMyOTU3OTgsIDMzMywgMTEuNDY1NDQ3NDI1ODQyMjg1XSwgWzE2NDUyMDQ5MDMuNDYzODEyLCAzNDIsIDEwLjE0NTQwNjcyMzAyMjQ2MV0sIFsxNjQ1MjA0OTAzLjU4NTk5OTMsIDM1MSwgNy45NzUzNjcwNjkyNDQzODVdLCBbMTY0NTIwNDkwMy43MTc4NTUsIDM2MCwgNS45NzcwNTA3ODEyNV0sIFsxNjQ1MjA0OTAzLjg1Nzg3MzIsIDM2OSwgOS41OTM2NTM2Nzg4OTQwNDNdLCBbMTY0NTIwNDkwNC43NDQxMjA0LCA0MzIsIDYuODM2NjcwMzk4NzEyMTU4XSwgWzE2NDUyMDQ5MDQuODY5ODYyMywgNDQxLCA1LjcwNjE3NTgwNDEzODE4NF0sIFsxNjQ1MjA0OTA0Ljk5MDIyNzIsIDQ1MCwgNS4yODEzODk3MTMyODczNTM1XSwgWzE2NDUyMDQ5MDUuMjMxMzEzNywgNDY4LCA2LjA3NDg4MzkzNzgzNTY5M10sIFsxNjQ1MjA0OTA1LjM0NDg2NDQsIDQ3NywgNS41NzMwMDc1ODM2MTgxNjRdLCBbMTY0NTIwNDkwNS42MTA3OTQ4LCA0OTUsIDUuNTAxMTI2Mjg5MzY3Njc2XSwgWzE2NDUyMDQ5MDUuNzQ3MjMxNSwgNTA0LCA1LjUzMzc3MTAzODA1NTQyXSwgWzE2NDUyMDQ5MDYuMDEwNTgwMywgNTIyLCA4LjE2NDc3MDEyNjM0Mjc3M10sIFsxNjQ1MjA0OTA2LjM3OTY1NTQsIDU0OSwgNi4xMDA3MzM3NTcwMTkwNDNdLCBbMTY0NTIwNDkwNi41MDYwMDUsIDU1OCwgNi4yNjg4NDUwODEzMjkzNDZdLCBbMTY0NTIwNDkwNi42MjY2Njc1LCA1NjcsIDkuMzY2NjQ2NzY2NjYyNTk4XSwgWzE2NDUyMDQ5MDYuNzU2MzYxNSwgNTc2LCA5LjcyMzExNjg3NDY5NDgyNF0sIFsxNjQ1MjA0OTA3LjAyMzk2MDgsIDU5NCwgMTEuMDI2NjAwODM3NzA3NTJdLCBbMTY0NTIwNDkwNy4xNDY0NTg0LCA2MDMsIDkuNzg0MzgxODY2NDU1MDc4XSwgWzE2NDUyMDQ5MDcuMjczNDk5NSwgNjEyLCA3LjQ0NzY3NDI3NDQ0NDU4XSwgWzE2NDUyMDQ5MDcuNDAzMjEzLCA2MjEsIDYuMjg1NDEzMjY1MjI4MjcxNV0sIFsxNjQ1MjA0OTA3LjY3ODg2ODUsIDYzOSwgNS44ODUzMjI1NzA4MDA3ODFdLCBbMTY0NTIwNDkwNy43OTg3MjEzLCA2NDgsIDUuMzMwNDc4MTkxMzc1NzMyXSwgWzE2NDUyMDQ5MDguNTc2NDM1NiwgNzAyLCA3LjI4NjgwMjc2ODcwNzI3NV0sIFsxNjQ1MjA0OTA4LjgzMjA5NTEsIDcyMCwgNS4yMzgwMDIzMDAyNjI0NTFdLCBbMTY0NTIwNDkwOC45NjI5ODMxLCA3MjksIDUuNTg5MDU3OTIyMzYzMjgxXSwgWzE2NDUyMDQ5MDkuMjA4MDA4MywgNzQ3LCA0Ljk2NzczODE1MTU1MDI5M10sIFsxNjQ1MjA0OTA5LjMzNjAwNjksIDc1NiwgNS43NTA4NDYzODU5NTU4MTA1XSwgWzE2NDUyMDQ5MDkuNTg5MTk1MywgNzc0LCA1LjAwODA0OTQ4ODA2NzYyN10sIFsxNjQ1MjA0OTA5LjcwNjg4OTksIDc4MywgNS4wMjI4Mzg1OTI1MjkyOTddLCBbMTY0NTIwNDkxMC4wNzI0MDY1LCA4MTAsIDYuMDA0MTAxNzUzMjM0ODYzXSwgWzE2NDUyMDQ5MTAuMjA4MDAxNiwgODE5LCA2Ljg1NTg0MTE1OTgyMDU1N10sIFsxNjQ1MjA0OTEwLjgzMjk5MDYsIDg2NCwgNC45ODU1ODUyMTI3MDc1MTk1XSwgWzE2NDUyMDQ5MTEuMzMwNTIxOCwgOTAwLCA2LjQzODkyOTA4MDk2MzEzNV0sIFsxNjQ1MjA0OTExLjYwMDc4MjYsIDkwOSwgNS42Mjk3MDExMzc1NDI3MjVdLCBbMTY0NTIwNDkxMS45NzkwOTg2LCA5MzYsIDguMTk0MTc1NzIwMjE0ODQ0XSwgWzE2NDUyMDQ5MTIuMzM2OTI4NCwgOTYzLCA4LjU4MTA5MjgzNDQ3MjY1Nl0sIFsxNjQ1MjA0OTEyLjQ2NjU0MjIsIDk3MiwgMTAuMzQwOTUwMDEyMjA3MDMxXSwgWzE2NDUyMDQ5MTIuNzI4MDUzLCA5OTAsIDEwLjAzMTY0OTU4OTUzODU3NF0sIFsxNjQ1MjA0OTEyLjg1NDU4LCA5OTksIDguOTkzMjk0NzE1ODgxMzQ4XSwgWzE2NDUyMDQ5MTMuMzkyOTUzNiwgMTAzNSwgNS4wNTUyMjI1MTEyOTE1MDRdLCBbMTY0NTIwNDkxMy42NDgzNDc0LCAxMDUzLCA1LjY2MzA0Nzc5MDUyNzM0NF0sIFsxNjQ1MjA0OTE0LjI0NTE1NywgMTA5OCwgNC43MDIwNjU0Njc4MzQ0NzNdLCBbMTY0NTIwNDkxNC43MDU4NDYsIDExMzQsIDUuNTI0NTE0Njc1MTQwMzgxXSwgWzE2NDUyMDQ5MTQuODI4NjQzMywgMTE0MywgNS4xNzgwMjQ3Njg4MjkzNDZdLCBbMTY0NTIwNDkxNS4wOTE5MzUsIDExNjEsIDYuNjYyMDc3NDI2OTEwNF0sIFsxNjQ1MjA0OTE1LjM2Njk5MjUsIDExNzksIDYuMTM0NjkwMjg0NzI5MDA0XSwgWzE2NDUyMDQ5MTUuNDkxOTg2MywgMTE4OCwgNC43MDExNjkwMTM5NzcwNTFdLCBbMTY0NTIwNDkxNS42MjQwMzg3LCAxMTk3LCA0LjcyMTU0MDkyNzg4Njk2M10sIFsxNjQ1MjA0OTE1Ljg2NTIzMTUsIDEyMTUsIDQuNzY2ODA4OTg2NjYzODE4XSwgWzE2NDUyMDQ5MTYuMTEzMzIxNSwgMTIzMywgNC4xODYzMzUwODY4MjI1MV0sIFsxNjQ1MjA0OTE2LjI1MjM3OTcsIDEyNDIsIDQuNTc4ODAyNTg1NjAxODA3XSwgWzE2NDUyMDQ5MTcuMDMyMzg1MywgMTI5NiwgNC44Njk4NDUzOTAzMTk4MjRdLCBbMTY0NTIwNDkxNy4xNDUwODA2LCAxMzA1LCA1LjAyODMzOTg2MjgyMzQ4Nl0sIFsxNjQ1MjA0OTE3LjM5NTY2NjQsIDEzMjMsIDUuNDI0OTc5Njg2NzM3MDYwNV0sIFsxNjQ1MjA0OTE3LjUxOTE3MjcsIDEzMzIsIDYuNjQ5MDEwNjU4MjY0MTZdLCBbMTY0NTIwNDkxNy45MDUyNCwgMTM1OSwgNC4xMTg2NTEzOTAwNzU2ODRdLCBbMTY0NTIwNDkxOC44MDYwNDE3LCAxNDIyLCA0LjI1NDUwNDIwMzc5NjM4N10sIFsxNjQ1MjA0OTE5LjA0MzQyMzcsIDE0NDAsIDQuNjU0NjUyMTE4NjgyODYxXSwgWzE2NDUyMDQ5MTkuMTU3ODM1LCAxNDQ5LCA0LjQ3Nzg3ODU3MDU1NjY0MV0sIFsxNjQ1MjA0OTE5LjQxNTY1NjYsIDE0NjcsIDQuNjE0MjEwMTI4Nzg0MThdLCBbMTY0NTIwNDkxOS42ODIxMjE4LCAxNDg1LCA1LjE5MDAwNDM0ODc1NDg4M10sIFsxNjQ1MjA0OTE5Ljk0Mjk4NCwgMTUwMywgNS4wMTI5NDk0NjY3MDUzMjJdLCBbMTY0NTIwNDkyMC40NTUyMTc2LCAxNTM5LCAzLjk4MjY0MDI2NjQxODQ1N10sIFsxNjQ1MjA0OTIwLjU3Mjc2MTgsIDE1NDgsIDQuMzI3Nzc5NzY5ODk3NDYxXSwgWzE2NDUyMDQ5MjAuNzE5MTEzNiwgMTU1NywgNC4wNDI3MTg4ODczMjkxMDJdLCBbMTY0NTIwNDkyMS4xMTM5MzQ4LCAxNTg0LCAzLjkwNDY5NDA4MDM1Mjc4M10sIFsxNjQ1MjA0OTIxLjIzMjEzNDYsIDE1OTMsIDQuMDcxNjQ5NTUxMzkxNjAyXSwgWzE2NDUyMDQ5MjEuMzg0NDY2MiwgMTYwMiwgMy44NjM4Mzc3MTg5NjM2MjNdLCBbMTY0NTIwNDkyMS41NDA5NTc3LCAxNjExLCA0LjM0NDU4NTg5NTUzODMzXSwgWzE2NDUyMDQ5MjEuNzk5MzIzLCAxNjI5LCA2LjE1NDk2MjA2MjgzNTY5M10sIFsxNjQ1MjA0OTIyLjEzMDg4NTgsIDE2MzgsIDUuOTcxNzAwNjY4MzM0OTYxXSwgWzE2NDUyMDQ5MjIuNTEwMDY3MiwgMTY2NSwgNC44NDgzNDI0MTg2NzA2NTRdLCBbMTY0NTIwNDkyMi42MzQwODMzLCAxNjc0LCA0LjQyMjgzOTY0MTU3MTA0NV0sIFsxNjQ1MjA0OTIyLjc1MDE1MTksIDE2ODMsIDMuOTU0NzU0NTkwOTg4MTU5XSwgWzE2NDUyMDQ5MjMuMTI4MjgwOSwgMTcxMCwgMy42OTM4MTY0MjM0MTYxMzc3XSwgWzE2NDUyMDQ5MjMuMjUwNzQ3MiwgMTcxOSwgMy45OTk1ODAzODMzMDA3ODEyXSwgWzE2NDUyMDQ5MjMuMzg1MjAwNywgMTcyOCwgNC4xOTQ5NDcyNDI3MzY4MTZdLCBbMTY0NTIwNDkyMy41MDY1MzEsIDE3MzcsIDQuOTQ0NDA0NjAyMDUwNzgxXSwgWzE2NDUyMDQ5MjMuOTMyNzQ2NCwgMTc2NCwgNi41NDkwNjAzNDQ2OTYwNDVdLCBbMTY0NTIwNDkyNC4zMTM0MTgxLCAxNzkxLCA0LjQ0NjA0NjgyOTIyMzYzM10sIFsxNjQ1MjA0OTI0LjQ0NDg2OTUsIDE4MDAsIDMuNjc5MTI5MTIzNjg3NzQ0XSwgWzE2NDUyMDQ5MjQuNTY2NzM4OCwgMTgwOSwgMy43NjQ0MzUyOTEyOTAyODNdLCBbMTY0NTIwNDkyNC44MjgwNjAyLCAxODI3LCAzLjY2NzYwNzA2OTAxNTUwM10sIFsxNjQ1MjA0OTI0Ljk2MjUzMSwgMTgzNiwgNC45MDAwNDgyNTU5MjA0MV0sIFsxNjQ1MjA0OTI1LjA4MTM3OTcsIDE4NDUsIDMuNjYzMjIwNDA1NTc4NjEzM10sIFsxNjQ1MjA0OTI1LjIwNDk3MjcsIDE4NTQsIDMuNTMwNDI2MDI1MzkwNjI1XSwgWzE2NDUyMDQ5MjUuNDUzMzQxNSwgMTg3MiwgNC42OTE2OTQyNTk2NDM1NTVdLCBbMTY0NTIwNDkyNS42OTQyOTQsIDE4OTAsIDMuNTMzODI0NjgyMjM1NzE3OF0sIFsxNjQ1MjA0OTI1LjkyMzA1MTYsIDE5MDgsIDMuNjQxNjAxODAwOTE4NTc5XSwgWzE2NDUyMDQ5MjYuMTU3MDAyMiwgMTkyNiwgMy40OTI2MjM4MDU5OTk3NTZdLCBbMTY0NTIwNDkyNi42MzY2NDEsIDE5NDQsIDMuNjg5MDI0NDQ4Mzk0Nzc1NF0sIFsxNjQ1MjA0OTI2Ljg2OTg3MDcsIDE5NTMsIDMuODcyNjE0NjIyMTE2MDg5XSwgWzE2NDUyMDQ5MjcuMTYzMjYxNCwgMTk3MSwgNC40MDk1MDY3OTc3OTA1MjddLCBbMTY0NTIwNDkyNy4yODQwNjA3LCAxOTgwLCA0LjExMjU3OTgyMjU0MDI4M10sIFsxNjQ1MjA0OTI3LjM5OTI3MiwgMTk4OSwgMy40NzgyODkxMjczNDk4NTM1XSwgWzE2NDUyMDQ5MjcuNTMyNTU1NiwgMTk5OCwgMy41NTgxOTM0NDUyMDU2ODg1XSwgWzE2NDUyMDQ5MjcuNjY2ODgxOCwgMjAwNywgMy40ODk4MjE0MzQwMjA5OTZdLCBbMTY0NTIwNDkyNy45MjA5NzAyLCAyMDI1LCAzLjY3MDcxNzQ3Nzc5ODQ2Ml0sIFsxNjQ1MjA0OTI4LjAzODI1ODgsIDIwMzQsIDQuODIwOTE2NjUyNjc5NDQzXSwgWzE2NDUyMDQ5MjguNTYyNjksIDIwNzAsIDQuMDIxMjEyNTc3ODE5ODI0XSwgWzE2NDUyMDQ5MjkuMjUzNDgyNiwgMjA5NywgMy43ODQyNzM2MjQ0MjAxNjZdLCBbMTY0NTIwNDkyOS44NzA4MDc2LCAyMTI0LCA0LjM3Mjk1MzQxNDkxNjk5Ml0sIFsxNjQ1MjA0OTMwLjIzNzUxMDQsIDIxNDIsIDMuODA5MjY1Mzc1MTM3MzI5XSwgWzE2NDUyMDQ5MzAuNDgyMjY4NiwgMjE1MSwgNC4xMDI5MDkwODgxMzQ3NjZdLCBbMTY0NTIwNDkzMC43MDExMzE2LCAyMTYwLCA1LjAxNDU2NTQ2NzgzNDQ3M10sIFsxNjQ1MjA0OTMxLjEyMTU2OTksIDIxNzgsIDMuNDM0NTc1MDgwODcxNTgyXSwgWzE2NDUyMDQ5MzEuMzU1ODcxLCAyMTg3LCAzLjUxODk3MTY4MTU5NDg0ODZdLCBbMTY0NTIwNDkzMS44NTA2ODg1LCAyMjA1LCAzLjMzMTU0OTQwNjA1MTYzNTddLCBbMTY0NTIwNDkzMi4wODA5MDI4LCAyMjE0LCAzLjM5MjE0MzI0OTUxMTcxODhdLCBbMTY0NTIwNDkzMi4zNTkxMDksIDIyMjMsIDQuMjc2MDEzODUxMTY1NzcxNV0sIFsxNjQ1MjA0OTMyLjUzOTY4MDUsIDIyMzIsIDQuOTgzNjU4MzEzNzUxMjIxXSwgWzE2NDUyMDQ5MzMuNTA4MTIsIDIyNzcsIDMuNDY4MzE5ODkyODgzMzAxXSwgWzE2NDUyMDQ5MzMuNjM4NTUxMiwgMjI4NiwgMy42NTk2ODQ4OTY0NjkxMTZdLCBbMTY0NTIwNDkzMy43NTE5NTI2LCAyMjk1LCAzLjMxMDM0NTE3Mjg4MjA4XSwgWzE2NDUyMDQ5MzQuMDk0NTA2LCAyMzIyLCAzLjgzOTQ3ODQ5MjczNjgxNjRdLCBbMTY0NTIwNDkzNC4yMDk2NjA4LCAyMzMxLCA0LjMwMzAwNTIxODUwNTg1OV0sIFsxNjQ1MjA0OTM0LjMyMDMyNCwgMjM0MCwgMy40OTQ5OTU1OTQwMjQ2NThdLCBbMTY0NTIwNDkzNC40MzMzMTA3LCAyMzQ5LCAzLjk1ODcwMjU2NDIzOTUwMl0sIFsxNjQ1MjA0OTM0LjY4MDE0MiwgMjM2NywgMy40OTUxOTUzODg3OTM5NDUzXSwgWzE2NDUyMDQ5MzUuODkyMjIwMywgMjQzOSwgMy43MzgwODgxMzA5NTA5Mjc3XSwgWzE2NDUyMDQ5MzYuMDIxNzEwNiwgMjQ0OCwgMy43MjIyNzYyMTA3ODQ5MTJdLCBbMTY0NTIwNDkzNi42OTQzNTgzLCAyNDc1LCAzLjI0MDM1NDUzNzk2Mzg2N10sIFsxNjQ1MjA0OTM2LjkzNjU2MzMsIDI0ODQsIDQuNTc2NzA4MzE2ODAyOTc4NV0sIFsxNjQ1MjA0OTM3LjE4MjkyLCAyNDkzLCAzLjQzOTQ2Mzg1MzgzNjA1OTZdLCBbMTY0NTIwNDkzNy41ODIwNDkxLCAyNTExLCAzLjIzMDQwNjc2MTE2OTQzMzZdLCBbMTY0NTIwNDkzOC4xMDgwMTM5LCAyNTI5LCA1LjU3MDgyODQzNzgwNTE3Nl0sIFsxNjQ1MjA0OTM4LjUzMDg4MiwgMjU0NywgNC44OTM4ODEzMjA5NTMzNjldLCBbMTY0NTIwNDkzOC43MDI2MDA3LCAyNTU2LCA1Ljg4NzYzNDc1NDE4MDkwOF0sIFsxNjQ1MjA0OTM5LjExODgxMTQsIDI1NzQsIDMuOTk1MTYxNTMzMzU1NzEzXSwgWzE2NDUyMDQ5MzkuNjEzOTIzMywgMjU5MiwgMy40NzU2OTQ2NTYzNzIwNzAzXSwgWzE2NDUyMDQ5MzkuNzQ0NzgyNywgMjYwMSwgMy4xOTA3MjQxMzQ0NDUxOTA0XSwgWzE2NDUyMDQ5NDAuMDEyMTI5MywgMjYxOSwgMy43OTEyNzI4Nzg2NDY4NTA2XSwgWzE2NDUyMDQ5NDAuNjI4NTA3OSwgMjY2NCwgMy4zNTMzMDYyOTM0ODc1NDldLCBbMTY0NTIwNDk0MC43NzI5MTgsIDI2NzMsIDMuNDIyNzA0MjE5ODE4MTE1Ml0sIFsxNjQ1MjA0OTQwLjkxNTcyNjIsIDI2ODIsIDMuNjY3OTg3MTA4MjMwNTkxXSwgWzE2NDUyMDQ5NDEuMDY5Mzg1OCwgMjY5MSwgMi45ODA4OTYyMzQ1MTIzMjldLCBbMTY0NTIwNDk0MS4xODU1MzA0LCAyNzAwLCAzLjMxNTcyMzY1NzYwODAzMjJdLCBbMTY0NTIwNDk0MS43ODcxNTIsIDI3NDUsIDMuMTEwNjg4MjA5NTMzNjkxNF0sIFsxNjQ1MjA0OTQyLjA2MzUwNCwgMjc2MywgNC4wMDExMTY3NTI2MjQ1MTJdLCBbMTY0NTIwNDk0Mi4xODYwMjkyLCAyNzcyLCAzLjI4NTU2Nzc2MDQ2NzUyOTNdLCBbMTY0NTIwNDk0Mi4zMTM5Mzg2LCAyNzgxLCA0LjMyOTM3MDk3NTQ5NDM4NV0sIFsxNjQ1MjA0OTQyLjQzMjk0NywgMjc5MCwgMy42MzkyNjc2ODMwMjkxNzVdLCBbMTY0NTIwNDk0Mi44MjU5MTcyLCAyODE3LCAzLjEwMzIwMDE5NzIxOTg0ODZdLCBbMTY0NTIwNDk0Mi45NjAwOTcsIDI4MjYsIDQuMDY2OTA1OTc1MzQxNzk3XSwgWzE2NDUyMDQ5NDMuMzcxMzYzNiwgMjg1MywgMy43OTQzNzYxMzQ4NzI0MzY1XSwgWzE2NDUyMDQ5NDMuNjUxNzAxMiwgMjg3MSwgMy4xNzM3MTE3NzY3MzMzOTg0XSwgWzE2NDUyMDQ5NDMuODA3NTIwOSwgMjg4MCwgMy4xNTI1NjQ3NjQwMjI4MjddLCBbMTY0NTIwNDk0NC4xODEzNzgxLCAyOTA3LCAyLjgxMDk3MzE2NzQxOTQzMzZdLCBbMTY0NTIwNDk0NC40MzYzNTE1LCAyOTI1LCAzLjg0OTUxOTQ5MTE5NTY3ODddLCBbMTY0NTIwNDk0NS4wNjk0Mzc1LCAyOTcwLCAzLjM0MTkxNDg5MjE5NjY1NTNdLCBbMTY0NTIwNDk0NS4xOTUzMjYsIDI5NzksIDMuMzQ2Njc3NzgwMTUxMzY3XSwgWzE2NDUyMDQ5NDUuMzI3NTkyOCwgMjk4OCwgMy43NDQ0NzQ0MTEwMTA3NDJdLCBbMTY0NTIwNDk0NS40NTU4MzQ2LCAyOTk3LCAzLjE5Njc5MzA3OTM3NjIyMDddLCBbMTY0NTIwNDk0NS41NjkyMTYsIDMwMDYsIDMuMDg4Nzg4OTg2MjA2MDU0N10sIFsxNjQ1MjA0OTQ2LjI1NDk4MDMsIDMwNDIsIDMuMjI3MzY5MzA4NDcxNjc5N10sIFsxNjQ1MjA0OTQ2LjQ1MTc2MDUsIDMwNTEsIDMuMDYzNjkwMTg1NTQ2ODc1XSwgWzE2NDUyMDQ5NDYuNzAzMjcwNywgMzA2OSwgMy4yNDkyMjE4MDE3NTc4MTI1XSwgWzE2NDUyMDQ5NDcuMDk1ODYxNywgMzA5NiwgMy4yMjAyNDYwNzY1ODM4NjIzXSwgWzE2NDUyMDQ5NDcuMjQwNzg3NSwgMzEwNSwgNC4wNDQ3MTQ0NTA4MzYxODJdLCBbMTY0NTIwNDk0Ny41Njc4MzQxLCAzMTE0LCAzLjQ2NTUwMjczODk1MjYzNjddLCBbMTY0NTIwNDk0Ny42ODM4MDg4LCAzMTIzLCAyLjcyNTYxNDMwOTMxMDkxM10sIFsxNjQ1MjA0OTQ3LjkwOTAzOSwgMzE0MSwgMy44Njg3NzA4Mzc3ODM4MTM1XSwgWzE2NDUyMDQ5NDguMTQ5MzE4LCAzMTU5LCAzLjM5MTgwOTIyNTA4MjM5NzVdLCBbMTY0NTIwNDk0OC4zODEzMDQsIDMxNzcsIDYuODI2ODg2MTc3MDYyOTg4XSwgWzE2NDUyMDQ5NDguNTEwMDkwNiwgMzE4NiwgNC4yNDIyMzg1MjE1NzU5MjhdLCBbMTY0NTIwNDk0OC42MTkwNzIsIDMxOTUsIDYuOTI2NDI4MzE4MDIzNjgyXSwgWzE2NDUyMDQ5NDguNzI3Mzg4OSwgMzIwNCwgNC43ODE5MjUyMDE0MTYwMTZdLCBbMTY0NTIwNDk0OS4wODUyMTQ0LCAzMjMxLCAzLjIwMTQyMzQwNjYwMDk1Ml0sIFsxNjQ1MjA0OTQ5LjM1NTkyODQsIDMyNDksIDMuODM5NDk3MzI3ODA0NTY1NF0sIFsxNjQ1MjA0OTQ5LjU5MzcwNjEsIDMyNjcsIDIuODg0MDgwNDEwMDAzNjYyXSwgWzE2NDUyMDQ5NDkuNjk5MjkxLCAzMjc2LCAyLjcxNDI5NjM0MDk0MjM4M10sIFsxNjQ1MjA0OTQ5LjgyNDEyMiwgMzI4NSwgMy4zNTQ1NjU2MjA0MjIzNjMzXSwgWzE2NDUyMDQ5NDkuOTUzNzY2LCAzMjk0LCAzLjQxMTMwMDg5NzU5ODI2NjZdLCBbMTY0NTIwNDk1MC4wNTg0OTIyLCAzMzAzLCAzLjEwNzMxNzkyNDQ5OTUxMTddLCBbMTY0NTIwNDk1MC4xNjY0OTksIDMzMTIsIDIuNjc4MDI0MjkxOTkyMTg3NV0sIFsxNjQ1MjA0OTUwLjI5MDQwMzEsIDMzMjEsIDMuMTk4NzM5MDUxODE4ODQ3N10sIFsxNjQ1MjA0OTUxLjEwMDE0NDksIDMzNzUsIDIuNjU1MjExMjEwMjUwODU0NV0sIFsxNjQ1MjA0OTUxLjUxODQ2OTMsIDM0MDIsIDMuMTgyMTIwMzIzMTgxMTUyM10sIFsxNjQ1MjA0OTUxLjY1MjQ0NSwgMzQxMSwgMi43ODIxMDU5MjI2OTg5NzQ2XSwgWzE2NDUyMDQ5NTIuMjMwMjYwNCwgMzQ0NywgMi45MjczNTE3MTMxODA1NDJdLCBbMTY0NTIwNDk1Mi42MjMwMDMyLCAzNDc0LCAyLjY0NDMxMjE0MzMyNTgwNTddLCBbMTY0NTIwNDk1Mi43NzAyMjU4LCAzNDgzLCAyLjg4MjE5NzE0MTY0NzMzOV0sIFsxNjQ1MjA0OTUzLjE1MTE5NDMsIDM1MTAsIDMuNjU1MjA3MTU3MTM1MDA5OF0sIFsxNjQ1MjA0OTUzLjI2OTU1MTUsIDM1MTksIDQuODg5NzY0MzA4OTI5NDQzXSwgWzE2NDUyMDQ5NTMuMzg2MjY4NiwgMzUyOCwgNS40MDU2MTg2Njc2MDI1MzldLCBbMTY0NTIwNDk1My41MTAxNjMzLCAzNTM3LCAyLjkzODg4MzMwNDU5NTk0NzNdLCBbMTY0NTIwNDk1My42MzUxOTIsIDM1NDYsIDMuMTk1OTEzMDc2NDAwNzU3XSwgWzE2NDUyMDQ5NTMuNzU2NjA5LCAzNTU1LCAyLjY3MTU5MDMyODIxNjU1MjddLCBbMTY0NTIwNDk1My44ODIxMTYsIDM1NjQsIDIuNjg3Nzk3Nzg0ODA1Mjk4XSwgWzE2NDUyMDQ5NTQuMDEwOTgzNywgMzU3MywgMi44MzEyNTk3Mjc0NzgwMjczXSwgWzE2NDUyMDQ5NTQuMTU5OTcwMywgMzU4MiwgMy40OTU3Mjc1MzkwNjI1XSwgWzE2NDUyMDQ5NTQuMzAzMjI0NiwgMzU5MSwgNC4wOTUyMjI5NDk5ODE2ODk1XSwgWzE2NDUyMDQ5NTQuNDMxNTkzLCAzNjAwLCAyLjgwODEwNDI3NjY1NzEwNDVdLCBbMTY0NTIwNDk1NC43MjI0MjYsIDM2MTgsIDMuMDYxODY1ODA2NTc5NTldLCBbMTY0NTIwNDk1NC44NDI5NTI3LCAzNjI3LCAyLjkyNTgxODY4MTcxNjkxOV0sIFsxNjQ1MjA0OTU1LjExNjQ5MzIsIDM2NDUsIDMuMTE5NDYxMDU5NTcwMzEyNV0sIFsxNjQ1MjA0OTU1LjM4OTkzNDgsIDM2NjMsIDMuMDQ0OTgwMjg3NTUxODhdLCBbMTY0NTIwNDk1NS42NTE4NTA1LCAzNjgxLCAyLjY4OTUyNTYwNDI0ODA0N10sIFsxNjQ1MjA0OTU1Ljc3MzQ3NjgsIDM2OTAsIDIuODA3NTI3MDY1Mjc3MDk5Nl0sIFsxNjQ1MjA0OTU2LjE3NTA1NjcsIDM3MTcsIDIuODYyODgzMzI5MzkxNDc5NV0sIFsxNjQ1MjA0OTU2LjI5NTI0MjgsIDM3MjYsIDMuMDEyNjE1NjgwNjk0NThdLCBbMTY0NTIwNDk1Ni40MTQ4MSwgMzczNSwgMy4wNTY1MzMwOTgyMjA4MjVdLCBbMTY0NTIwNDk1Ni41MzUxNzk5LCAzNzQ0LCAzLjUzNjY2NDcyNDM0OTk3NTZdLCBbMTY0NTIwNDk1Ni45MzQ5MDkzLCAzNzcxLCAzLjU4MzU4NDU0NzA0Mjg0NjddLCBbMTY0NTIwNDk1Ny4zNDEwNTgzLCAzNzk4LCA4LjY1MzQwMjMyODQ5MTIxMV0sIFsxNjQ1MjA0OTU3LjQ4NDkzNTgsIDM4MDcsIDYuNDk4MjI5MDI2Nzk0NDM0XSwgWzE2NDUyMDQ5NTcuODY4OTI1LCAzODM0LCAzLjA1Nzc1MjEzMjQxNTc3MTVdLCBbMTY0NTIwNDk1OC4xODUzNzYyLCAzODQzLCAzLjE5MDE5NDM2ODM2MjQyNjhdLCBbMTY0NTIwNDk1OC42NDE5ODc4LCAzODc5LCAyLjkxMTE2NTQ3NTg0NTMzN10sIFsxNjQ1MjA0OTU4Ljc3NTA0NTIsIDM4ODgsIDMuNzMxNDU0MzcyNDA2MDA2XSwgWzE2NDUyMDQ5NTkuMTc4Nzg5MSwgMzkxNSwgNC43Mzc1NzMxNDY4MjAwNjhdLCBbMTY0NTIwNDk1OS4zMzYzMjksIDM5MjQsIDMuMTQwNTA3Njk4MDU5MDgyXSwgWzE2NDUyMDQ5NTkuNDc5NTk3OCwgMzkzMywgNi44Mzg2ODA3NDQxNzExNDNdLCBbMTY0NTIwNDk1OS41ODY0NjU2LCAzOTQyLCA0LjQ0NjI1NTIwNzA2MTc2OF0sIFsxNjQ1MjA0OTU5LjY5OTU0NywgMzk1MSwgMy41MTEzNDgyNDc1MjgwNzZdLCBbMTY0NTIwNDk1OS44MTU3OTI4LCAzOTYwLCAyLjc0NjA3NDE5OTY3NjUxMzddLCBbMTY0NTIwNDk1OS45NjgyMTg4LCAzOTY5LCAyLjg1NDY2OTMzMjUwNDI3MjVdLCBbMTY0NTIwNDk2MC4xMTY3NzI3LCAzOTc4LCAyLjg3NTk3NjU2MjVdLCBbMTY0NTIwNDk2MC4zOTg1MjE3LCAzOTk2LCAyLjY4NTY3MjI4MzE3MjYwNzRdLCBbMTY0NTIwNDk2MC41MjUyNTEsIDQwMDUsIDMuMjMzODMyODM2MTUxMTIzXSwgWzE2NDUyMDQ5NjAuNjgzOTk3NCwgNDAxNCwgMi42MjIzMzY2MjYwNTI4NTY0XSwgWzE2NDUyMDQ5NjAuODE4ODUzLCA0MDIzLCAyLjU0OTk4NzU1NDU1MDE3MV0sIFsxNjQ1MjA0OTYxLjM2MzYxMTIsIDQwNTksIDMuMzcxODExMzg5OTIzMDk1N10sIFsxNjQ1MjA0OTYxLjUwMzA2OTYsIDQwNjgsIDIuNTUzMjU2NzUwMTA2ODExNV0sIFsxNjQ1MjA0OTYxLjY0MzM4MTQsIDQwNzcsIDIuNjg0MDU4OTA0NjQ3ODI3XSwgWzE2NDUyMDQ5NjEuNzc5ODk1MywgNDA4NiwgMy4wNzgyNzY2MzQyMTYzMDg2XSwgWzE2NDUyMDQ5NjEuOTIxMDY3NywgNDA5NSwgMi42MTk1OTA3NTkyNzczNDM4XSwgWzE2NDUyMDQ5NjIuMTk5MDYyOCwgNDExMywgMy4wMDIzMDE0NTQ1NDQwNjc0XSwgWzE2NDUyMDQ5NjIuNDY2NTU2LCA0MTMxLCAyLjY1NzQyMDYzNTIyMzM4ODddLCBbMTY0NTIwNDk2Mi43MzE1ODgxLCA0MTQ5LCAyLjkwNDM5OTYzMzQwNzU5MjhdLCBbMTY0NTIwNDk2Mi44ODQ0MjI1LCA0MTU4LCAyLjY4MTk2NjA2NjM2MDQ3MzZdLCBbMTY0NTIwNDk2My4wMDkyMTQsIDQxNjcsIDIuNTEzMTEwNjM3NjY0Nzk1XSwgWzE2NDUyMDQ5NjMuMjY0MzY1MiwgNDE4NSwgMy4zMTkwNjA1NjQwNDExMzc3XSwgWzE2NDUyMDQ5NjMuMzg2NTQ1LCA0MTk0LCAzLjAzNTI4NjE4ODEyNTYxMDRdLCBbMTY0NTIwNDk2My41MjUyNjU3LCA0MjAzLCAzLjExMDM5Njg2MjAzMDAyOTNdLCBbMTY0NTIwNDk2My43OTI1OTcsIDQyMjEsIDIuOTA4NjgwMjAwNTc2NzgyMl0sIFsxNjQ1MjA0OTY0LjA4OTc1OTMsIDQyMzksIDMuMDAxNTk4MTE5NzM1NzE3OF0sIFsxNjQ1MjA0OTY0LjU4MjE1NDMsIDQyNzUsIDMuNDkzMDAzMTI5OTU5MTA2NF0sIFsxNjQ1MjA0OTY0LjcwNjMxNzQsIDQyODQsIDIuNjA3OTE4NzM5MzE4ODQ3N10sIFsxNjQ1MjA0OTY1LjExNDAxNDksIDQzMTEsIDIuMzkyNTg4NjE1NDE3NDgwNV0sIFsxNjQ1MjA0OTY1LjQ0MTg5OSwgNDMyMCwgMi40ODQ5MDQyODkyNDU2MDU1XSwgWzE2NDUyMDQ5NjUuODQ3NDU3NiwgNDMyOSwgMy4xNDM1OTU5MzM5MTQxODQ2XSwgWzE2NDUyMDQ5NjUuOTg3Mjk5NCwgNDMzOCwgMi44MTMzNTIzNDY0MjAyODhdLCBbMTY0NTIwNDk2Ni4xMjU1NDk2LCA0MzQ3LCAyLjcxNzg3MzU3MzMwMzIyMjddLCBbMTY0NTIwNDk2Ni4yNjc4NTk1LCA0MzU2LCAyLjU1Mjk0MTA4MzkwODA4MV0sIFsxNjQ1MjA0OTY2LjY2MDEwODMsIDQzNjUsIDIuNDYzMTIzMzIxNTMzMjAzXSwgWzE2NDUyMDQ5NjcuMzI3MTYwMSwgNDM4MywgMy41MTM0ODk5NjE2MjQxNDU1XSwgWzE2NDUyMDQ5NjcuNDkxMDk1LCA0MzkyLCA1Ljg1NTU3NjAzODM2MDU5Nl0sIFsxNjQ1MjA0OTY3LjYxOTk4NSwgNDQwMSwgMi43MDQyMDc4OTcxODYyNzkzXSwgWzE2NDUyMDQ5NjcuODc5NTA5LCA0NDEwLCAyLjc5MjIxMjcyNDY4NTY2OV0sIFsxNjQ1MjA0OTY4LjU4NDQ0NTUsIDQ0MjgsIDMuNzE0MjQ0MzY1NjkyMTM4N10sIFsxNjQ1MjA0OTY4Ljk3NDgwMjcsIDQ0NTUsIDIuOTEzMDAwNTgzNjQ4NjgxNl0sIFsxNjQ1MjA0OTY5LjEwMTUxODksIDQ0NjQsIDIuODgzNDYwMjgzMjc5NDE5XSwgWzE2NDUyMDQ5NjkuNDU3NjU5NywgNDQ5MSwgMi42MTI5Njc3Mjk1Njg0ODE0XSwgWzE2NDUyMDQ5NjkuODUxMTEwNSwgNDUxOCwgMy44MDg2OTI5MzIxMjg5MDYyXSwgWzE2NDUyMDQ5NjkuOTc0NDM3MiwgNDUyNywgMy42MzcwNzg1MjM2MzU4NjQzXSwgWzE2NDUyMDQ5NzAuMDk3NTEsIDQ1MzYsIDIuNzI3MjE0MDk3OTc2Njg0Nl0sIFsxNjQ1MjA0OTcwLjQ0ODg5NDUsIDQ1NjMsIDIuODcwMDUzMjkxMzIwODAxXSwgWzE2NDUyMDQ5NzAuODY1NDMsIDQ1ODEsIDIuNTA2MzA4NTU1NjAzMDI3M10sIFsxNjQ1MjA0OTcwLjk3Nzc1MjcsIDQ1OTAsIDIuMzU2ODg2MTQ4NDUyNzU5XSwgWzE2NDUyMDQ5NzEuMDg3NTQxOCwgNDU5OSwgMi43ODM1MTU2OTE3NTcyMDJdLCBbMTY0NTIwNDk3MS4xOTU1NTQ1LCA0NjA4LCAyLjU3NDM2ODQ3Njg2NzY3Nl0sIFsxNjQ1MjA0OTcxLjMwMjUxMzgsIDQ2MTcsIDIuODA1NzI4NjczOTM0OTM2NV0sIFsxNjQ1MjA0OTcxLjQwOTk4OTYsIDQ2MjYsIDMuNTU2NTAyNTgwNjQyN10sIFsxNjQ1MjA0OTcxLjU0NTQ2OTMsIDQ2MzUsIDMuNjcxMjg1NjI5MjcyNDYxXSwgWzE2NDUyMDQ5NzEuOTU2MTE2NywgNDY2MiwgMy4xMTM2MzM4NzEwNzg0OTFdLCBbMTY0NTIwNDk3Mi4wOTMzNDY0LCA0NjcxLCAyLjM1MDE5Nzc5MjA1MzIyMjddLCBbMTY0NTIwNDk3Mi4yMjQ5MTYsIDQ2ODAsIDIuNjIwMzExNzM3MDYwNTQ3XSwgWzE2NDUyMDQ5NzIuMzYwNDc1NSwgNDY4OSwgMi41OTY2ODE4MzMyNjcyMTJdLCBbMTY0NTIwNDk3Mi43NDY1NjU4LCA0NzE2LCAyLjM3NzA5MjM2MTQ1MDE5NTNdLCBbMTY0NTIwNDk3My42NTc1NDQ5LCA0Nzc5LCAyLjgzNDY0NDc5NDQ2NDExMTNdLCBbMTY0NTIwNDk3NC4wNTc4MTI3LCA0ODA2LCAzLjIyMjA4NDk5OTA4NDQ3MjddLCBbMTY0NTIwNDk3NC4xNzkyNjc2LCA0ODE1LCAzLjgxMDQyNDU2NjI2ODkyMV0sIFsxNjQ1MjA0OTc0LjQ1ODQzOSwgNDgzMywgMi41MzAxNjMyODgxMTY0NTVdLCBbMTY0NTIwNDk3NC41OTI3MjM0LCA0ODQyLCAyLjUwMjUzNzI1MDUxODc5OV0sIFsxNjQ1MjA0OTc0LjcyODgwMzYsIDQ4NTEsIDIuMjUxODY0MTk0ODY5OTk1XSwgWzE2NDUyMDQ5NzQuODUwODg5NCwgNDg2MCwgMi41MzkzMzk3ODA4MDc0OTVdLCBbMTY0NTIwNDk3NC45ODU5NjE3LCA0ODY5LCAzLjMzMjUyNTI1MzI5NTg5ODRdLCBbMTY0NTIwNDk3NS4yNzExMywgNDg4NywgMi41ODIxNTczNzM0MjgzNDQ3XSwgWzE2NDUyMDQ5NzUuMzk2ODU2OCwgNDg5NiwgMi42MDYzMzI1NDA1MTIwODVdLCBbMTY0NTIwNDk3NS41MDgxNzc1LCA0OTA1LCAyLjQ1NjU1OTY1ODA1MDUzN10sIFsxNjQ1MjA0OTc1Ljc5MjA5MjYsIDQ5MjMsIDQuODczODczNzEwNjMyMzI0XSwgWzE2NDUyMDQ5NzUuOTE5OTk4NiwgNDkzMiwgMi43OTY3MTAwMTQzNDMyNjE3XSwgWzE2NDUyMDQ5NzYuMjc2MjkwNCwgNDk1OSwgMi44NzY3Nzk3OTQ2OTI5OTNdLCBbMTY0NTIwNDk3Ni41MDQ0NzgsIDQ5NzcsIDMuNDcwMzc1NTM3ODcyMzE0NV0sIFsxNjQ1MjA0OTc2Ljc2MDA4OTQsIDQ5OTUsIDIuNzgyNjI0OTU5OTQ1Njc4N10sIFsxNjQ1MjA0OTc2Ljg4NzYwMywgNTAwNCwgMi42MzExNTU3MjkyOTM4MjMyXSwgWzE2NDUyMDQ5NzcuMDA0MzM5LCA1MDEzLCAyLjQ5NDk0MDc1Nzc1MTQ2NV0sIFsxNjQ1MjA0OTc3Ljg4MDQzMjQsIDUwNjcsIDIuNTYzNjY2MTA1MjcwMzg1N10sIFsxNjQ1MjA0OTc4LjAyNTE2MSwgNTA3NiwgMi4zNDAyOTY3NDUzMDAyOTNdLCBbMTY0NTIwNDk3OC4xNzM5NTEsIDUwODUsIDIuMjkzOTg0ODg5OTg0MTMxXSwgWzE2NDUyMDQ5NzguNzAwMDc0MiwgNTEyMSwgMy4yMjM1MTc0MTc5MDc3MTVdLCBbMTY0NTIwNDk3OC44MjEwNDY0LCA1MTMwLCAzLjU0MzE4MzA4ODMwMjYxMjNdLCBbMTY0NTIwNDk3OS4wODg0MzUsIDUxNDgsIDMuOTY4NTcwOTQ3NjQ3MDk0N10sIFsxNjQ1MjA0OTc5LjM2NDgwODgsIDUxNjYsIDMuMTMxOTk3NTg1Mjk2NjMxXSwgWzE2NDUyMDQ5NzkuNzMwMjU4LCA1MTkzLCAyLjY0NjI3MzEzNjEzODkxNl0sIFsxNjQ1MjA0OTgwLjMwMzA4MTgsIDUyMjksIDIuNTExMjYwMDMyNjUzODA4Nl0sIFsxNjQ1MjA0OTgwLjg3NDM5OTcsIDUyNjUsIDQuNTMyODEwNjg4MDE4Nzk5XSwgWzE2NDUyMDQ5ODEuMDA5MjY5NSwgNTI3NCwgNC4wODg4NjA1MTE3Nzk3ODVdLCBbMTY0NTIwNDk4MS4xNDUzMzA3LCA1MjgzLCAzLjc0NjU2NzI0OTI5ODA5NTddLCBbMTY0NTIwNDk4MS42NDM3NDk3LCA1MzAxLCAyLjQ1NzA0OTEzMTM5MzQzMjZdLCBbMTY0NTIwNDk4MS43NTkwMzczLCA1MzEwLCAyLjU5MzQxMjg3NjEyOTE1MDRdLCBbMTY0NTIwNDk4MS44NzYyMDYyLCA1MzE5LCAyLjM1MjAwNzM4OTA2ODYwMzVdLCBbMTY0NTIwNDk4MS45OTQ5ODQ0LCA1MzI4LCAyLjIzMjcxNzI3NTYxOTUwN10sIFsxNjQ1MjA0OTgyLjEyMTY4MTIsIDUzMzcsIDIuMzEyNzQzNjYzNzg3ODQyXSwgWzE2NDUyMDQ5ODIuMzcyMzE1MiwgNTM1NSwgMi4yMTg3MDkyMzA0MjI5NzM2XSwgWzE2NDUyMDQ5ODIuNjMyNDA4OSwgNTM3MywgMy45NDkzMDk4MjU4OTcyMTddLCBbMTY0NTIwNDk4Mi43NjU4NTIyLCA1MzgyLCA0LjY2MjcxMTE0MzQ5MzY1Ml0sIFsxNjQ1MjA0OTgyLjg3OTc1ODgsIDUzOTEsIDMuNTU2NTYwMjc3OTM4ODQyOF0sIFsxNjQ1MjA0OTgyLjk4ODQxMjQsIDU0MDAsIDIuODU5MDAzNTQzODUzNzU5OF0sIFsxNjQ1MjA0OTgzLjI0MzExOTUsIDU0MTgsIDIuNTM0ODQyMDE0MzEyNzQ0XSwgWzE2NDUyMDQ5ODMuMzc4MjM2OCwgNTQyNywgMi40Mzk0OTMxNzkzMjEyODldLCBbMTY0NTIwNDk4My41MjE0LCA1NDM2LCAyLjQ3MTgzMjI3NTM5MDYyNV0sIFsxNjQ1MjA0OTgzLjc3ODY2NTgsIDU0NTQsIDIuMjY1NTIyMDAzMTczODI4XSwgWzE2NDUyMDQ5ODQuMjAwMjM0NCwgNTQ4MSwgMi4zMzgzMDA3MDQ5NTYwNTQ3XSwgWzE2NDUyMDQ5ODQuNDMxNTc3MiwgNTQ5OSwgMi4yMTA3Njk4OTE3Mzg4OTE2XSwgWzE2NDUyMDQ5ODQuODA0MzI3LCA1NTI2LCA0LjE4MzcyMDExMTg0NjkyNF0sIFsxNjQ1MjA0OTg0LjkzOTAyMTYsIDU1MzUsIDMuMzc2MzI1MzY4ODgxMjI1Nl0sIFsxNjQ1MjA0OTg1LjIwNDM0NSwgNTU1MywgMi4zODU0MDk1OTM1ODIxNTMzXSwgWzE2NDUyMDQ5ODUuNTA0NTE4NSwgNTU3MSwgMi4zNTA5NjA5Njk5MjQ5MjY4XSwgWzE2NDUyMDQ5ODUuODA0OTYyNCwgNTU4OSwgMi40NDI3ODAwMTc4NTI3ODNdLCBbMTY0NTIwNDk4Ni4wNzQ5NDM1LCA1NjA3LCAyLjQ3OTA5MjM1OTU0Mjg0NjddLCBbMTY0NTIwNDk4Ni4xOTc1NTI0LCA1NjE2LCAyLjQ3NzU1OTU2NjQ5NzgwMjddLCBbMTY0NTIwNDk4Ni42MDkwMTQzLCA1NjQzLCA0LjUzNDUwNTM2NzI3OTA1M10sIFsxNjQ1MjA0OTg2LjczMDA2OTksIDU2NTIsIDQuOTE4ODcxNDAyNzQwNDc4NV0sIFsxNjQ1MjA0OTg2Ljg4MjMzMzgsIDU2NjEsIDQuMjAzMDI5MTU1NzMxMjAxXSwgWzE2NDUyMDQ5ODcuMDAzMDYxOCwgNTY3MCwgMy4zNDg0NzQ3NDA5ODIwNTU3XSwgWzE2NDUyMDQ5ODcuNDUyMTgsIDU3MDYsIDIuNDY1NzczNTgyNDU4NDk2XSwgWzE2NDUyMDQ5ODcuNzUxNjQ0LCA1NzI0LCAyLjc3NDUyNDQ1MDMwMjEyNF0sIFsxNjQ1MjA0OTg4LjAwNTg2NDksIDU3NDIsIDIuMzEzODE5NjQ2ODM1MzI3XSwgWzE2NDUyMDQ5ODguNDA4MzM0MywgNTc2OSwgMi40ODU3NjIzNTc3MTE3OTJdLCBbMTY0NTIwNDk4OC41NDQyNTU1LCA1Nzc4LCAyLjg2MjU4NDExNDA3NDcwN10sIFsxNjQ1MjA0OTg4LjY4NTA3NjUsIDU3ODcsIDIuNDI4OTIwOTg0MjY4MTg4NV0sIFsxNjQ1MjA0OTg4LjgyNDM1ODUsIDU3OTYsIDIuMjM0ODgwOTI0MjI0ODUzNV0sIFsxNjQ1MjA0OTg4Ljk2NDM0MDQsIDU4MDUsIDIuMzU3MjAzOTYwNDE4NzAxXSwgWzE2NDUyMDQ5ODkuMDkxMDI2OCwgNTgxNCwgMi4yMzI5MDk5MTc4MzE0MjFdLCBbMTY0NTIwNDk4OS42NTI3ODc0LCA1ODUwLCAyLjYxODM3MDc3MTQwODA4MV0sIFsxNjQ1MjA0OTg5LjkwNjAyNywgNTg2OCwgMy4wOTkyMzE5NTgzODkyODIyXSwgWzE2NDUyMDQ5OTAuMTQ0OTA0LCA1ODc3LCAzLjUyMTc2MzgwMTU3NDcwN10sIFsxNjQ1MjA0OTkwLjI4NDQ2MiwgNTg4NiwgMy42NjU2NzE4MjU0MDg5MzU1XSwgWzE2NDUyMDQ5OTAuNDEwNTgzMywgNTg5NSwgMy43ODg0MzE2NDQ0Mzk2OTczXSwgWzE2NDUyMDQ5OTAuNTMwMzQwMiwgNTkwNCwgMy4xMTkxNDM3MjQ0NDE1MjgzXSwgWzE2NDUyMDQ5OTAuOTA1OTgxMywgNTkzMSwgMi40OTcwNjk4MzU2NjI4NDJdLCBbMTY0NTIwNDk5MS4wMzQxOTA0LCA1OTQwLCAyLjY5MzA0ODcxNTU5MTQzMDddLCBbMTY0NTIwNDk5MS4xNjI4MiwgNTk0OSwgMi43MTA1NTc5Mzc2MjIwNzAzXSwgWzE2NDUyMDQ5OTIuMTUzNzgxMiwgNjAxMiwgMi4zNjAzODA2NDk1NjY2NTA0XSwgWzE2NDUyMDQ5OTIuNzYxNDM1LCA2MDM5LCAyLjEzMzE5NDIwODE0NTE0MTZdLCBbMTY0NTIwNDk5My40NjI1NjI4LCA2MDg0LCAyLjA2ODgyMzA5OTEzNjM1MjVdLCBbMTY0NTIwNDk5My42MTQ5NjE5LCA2MDkzLCAyLjEzMTEwNTQyMjk3MzYzM10sIFsxNjQ1MjA0OTkzLjc1MTI1NzQsIDYxMDIsIDIuMTQ2NzI5MjMwODgwNzM3M10sIFsxNjQ1MjA0OTk0LjE5NTE2NCwgNjEyOSwgMi42NTE0NDA4NTg4NDA5NDI0XSwgWzE2NDUyMDQ5OTQuNDM5MjA2MSwgNjE0NywgNi4xMDg5MjM0MzUyMTExODJdLCBbMTY0NTIwNDk5NC41NzI3MjQ2LCA2MTU2LCA0LjI4NjcyNzQyODQzNjI3OV0sIFsxNjQ1MjA0OTk0LjcxMjM2MjMsIDYxNjUsIDQuMDI1Njc3MjA0MTMyMDhdLCBbMTY0NTIwNDk5NS4xMTczNTE4LCA2MTkyLCAzLjQ0NDcyMTIyMTkyMzgyOF0sIFsxNjQ1MjA0OTk1Ljc0NjY3NzksIDYyMzcsIDIuMDU4MzE5NTY4NjM0MDMzXSwgWzE2NDUyMDQ5OTUuODgyNzEwNSwgNjI0NiwgMi4xMDUyNzE4MTYyNTM2NjJdLCBbMTY0NTIwNDk5Ni4wMDUzODMzLCA2MjU1LCAyLjIxODQ4MjczMjc3MjgyN10sIFsxNjQ1MjA0OTk2LjEzNjA5NTMsIDYyNjQsIDIuNjA4MDIyOTI4MjM3OTE1XSwgWzE2NDUyMDQ5OTYuMjcxMjEwMiwgNjI3MywgMi4zMTI4OTEyNDQ4ODgzMDU3XSwgWzE2NDUyMDQ5OTYuNDAwNjc5MywgNjI4MiwgMi4zMjQyNDY2NDQ5NzM3NTVdLCBbMTY0NTIwNDk5Ni42Njc2MTYsIDYzMDAsIDIuNTEyMjk5NTM3NjU4NjkxNF0sIFsxNjQ1MjA0OTk3LjA1NjA4NiwgNjMyNywgMi42ODgzMDQ0MjQyODU4ODg3XSwgWzE2NDUyMDQ5OTcuMTgxNDQ1LCA2MzM2LCAyLjMxODMzNzY3ODkwOTMwMThdLCBbMTY0NTIwNDk5Ny40NTkwNTYsIDYzNTQsIDMuMjgzMjE1NTIyNzY2MTEzM10sIFsxNjQ1MjA0OTk4LjAxNDQ2NDksIDYzOTAsIDMuMDYwMTExNTIyNjc0NTYwNV0sIFsxNjQ1MjA0OTk4LjE0MzkzMjMsIDYzOTksIDIuODI4OTU4MjcyOTMzOTZdLCBbMTY0NTIwNDk5OC40MDc2OTk4LCA2NDE3LCA0LjY4ODkxMDAwNzQ3NjgwN10sIFsxNjQ1MjA0OTk4Ljc5OTExMzUsIDY0NDQsIDIuMzg0MDY5NjgxMTY3NjAyNV0sIFsxNjQ1MjA0OTk5LjA3MDc5ODYsIDY0NjIsIDIuNDQ2MTk5NDE3MTE0MjU4XSwgWzE2NDUyMDQ5OTkuMzQyMjksIDY0ODAsIDIuMjc1MTcxNTE4MzI1ODA1N10sIFsxNjQ1MjA0OTk5LjQ5NDc2ODEsIDY0ODksIDIuNDM4MTE2NTUwNDQ1NTU2Nl0sIFsxNjQ1MjA0OTk5LjY1Mjg2OTUsIDY0OTgsIDIuMzEyNDU4OTkyMDA0Mzk0NV0sIFsxNjQ1MjA0OTk5Ljk0ODY4OTUsIDY1MTYsIDMuMjUzMTU5NzYxNDI4ODMzXSwgWzE2NDUyMDUwMDAuMjQ2ODYyLCA2NTM0LCAyLjgxNzI4NDEwNzIwODI1Ml0sIFsxNjQ1MjA1MDAwLjM3NzA4NjYsIDY1NDMsIDMuMTEzNTY3NTkwNzEzNTAxXSwgWzE2NDUyMDUwMDAuNTEwOTU3NSwgNjU1MiwgNC43MTg1MTYzNDk3OTI0ODA1XSwgWzE2NDUyMDUwMDAuNjQyMzk4NCwgNjU2MSwgMi43MjMxODk4MzA3ODAwMjkzXSwgWzE2NDUyMDUwMDAuNzU0NTUsIDY1NzAsIDIuNTE4NjI2Njg5OTEwODg4N10sIFsxNjQ1MjA1MDAxLjAwOTgxNzgsIDY1ODgsIDMuMzI3ODU4OTI0ODY1NzIyN10sIFsxNjQ1MjA1MDAxLjE0MDMxMzksIDY1OTcsIDIuNTAxNjE3NjcwMDU5MjA0XSwgWzE2NDUyMDUwMDEuMjcyMDM5MiwgNjYwNiwgMi4xOTY5NDc1NzQ2MTU0Nzg1XSwgWzE2NDUyMDUwMDEuOTM0OTg4LCA2NjUxLCAyLjE0OTk5NzcxMTE4MTY0MDZdLCBbMTY0NTIwNTAwMi4wNDYzODgsIDY2NjAsIDIuNDU3NDA3NzEyOTM2NDAxNF0sIFsxNjQ1MjA1MDAyLjE3MDUwMjcsIDY2NjksIDIuNzU2Mzk4MjAwOTg4NzY5NV0sIFsxNjQ1MjA1MDAyLjQ0OTA3OTMsIDY2ODcsIDIuODExODAwMDAzMDUxNzU4XSwgWzE2NDUyMDUwMDIuNTk4NzA1MywgNjY5NiwgMi4wNzc0MzI2MzI0NDYyODldLCBbMTY0NTIwNTAwMi43MzQ3NjA4LCA2NzA1LCAyLjY0MDUzNDg3Nzc3NzA5OTZdLCBbMTY0NTIwNTAwMi44Nzg1Mzk2LCA2NzE0LCAyLjY0MDEwMjYyNDg5MzE4ODVdLCBbMTY0NTIwNTAwMy45NjQ3NjkxLCA2Nzc3LCAyLjI0MDg5NDU1NjA0NTUzMjJdLCBbMTY0NTIwNTAwNC4zNTk0ODQ0LCA2ODA0LCAyLjk0MTE1NjE0ODkxMDUyMjVdLCBbMTY0NTIwNTAwNC40ODc1NzkzLCA2ODEzLCAzLjA5MjU5NDM4NTE0NzA5NDddLCBbMTY0NTIwNTAwNC43Njc5OTE1LCA2ODMxLCAyLjgzMDIyODU2NzEyMzQxM10sIFsxNjQ1MjA1MDA1LjQxNjU1NDUsIDY4NzYsIDIuNjk3MTM1NDQ4NDU1ODEwNV0sIFsxNjQ1MjA1MDA1LjU2MDcxNDcsIDY4ODUsIDIuNDU4NzIyNTkxNDAwMTQ2NV0sIFsxNjQ1MjA1MDA1LjY3OTk5MTIsIDY4OTQsIDIuMDcyMzA3MzQ4MjUxMzQyOF0sIFsxNjQ1MjA1MDA1LjkzOTA2MTYsIDY5MTIsIDIuMjk5MTE5OTQ5MzQwODIwM10sIFsxNjQ1MjA1MDA2LjA1NTk1NSwgNjkyMSwgMy4wMTM4OTY3MDM3MjAwOTI4XSwgWzE2NDUyMDUwMDYuMTc5MzE1LCA2OTMwLCAyLjY3MjE5NzU4MDMzNzUyNDRdLCBbMTY0NTIwNTAwNi40NTgwNjcyLCA2OTQ4LCAyLjI3ODkwMDYyMzMyMTUzM10sIFsxNjQ1MjA1MDA2LjYxMjQ3NjMsIDY5NTcsIDIuMTc4NzIwNzEyNjYxNzQzXSwgWzE2NDUyMDUwMDYuNzI1NDQzNCwgNjk2NiwgMi4xNjE2NDgyNzM0NjgwMTc2XSwgWzE2NDUyMDUwMDcuMDAwMzI2OSwgNjk4NCwgMi4xMTMwNjUwMDQzNDg3NTVdLCBbMTY0NTIwNTAwNy4xNTExMTM3LCA2OTkzLCAyLjA3MjUwNTIzNTY3MTk5N10sIFsxNjQ1MjA1MDA3LjQwMDcxODcsIDcwMTEsIDIuMzYwOTM5MDI1ODc4OTA2Ml0sIFsxNjQ1MjA1MDA3LjUyNDA1NTcsIDcwMjAsIDIuMjA1MzYxMzY2MjcxOTcyN10sIFsxNjQ1MjA1MDA3LjY2MDIzMTQsIDcwMjksIDIuNDU5OTkwMDI0NTY2NjUwNF0sIFsxNjQ1MjA1MDA3Ljc4MTE4MDYsIDcwMzgsIDQuMjU0ODk1MjEwMjY2MTEzXSwgWzE2NDUyMDUwMDcuOTIyMjQ2NSwgNzA0NywgMi45OTMwMzEwMjQ5MzI4NjEzXSwgWzE2NDUyMDUwMDguMDUwMTE0MiwgNzA1NiwgNC4xNjkyNDMzMzU3MjM4NzddLCBbMTY0NTIwNTAwOC40Mzg4NzY0LCA3MDgzLCAyLjk2MTczODM0ODAwNzIwMl0sIFsxNjQ1MjA1MDA4LjY5MDAyMiwgNzEwMSwgMi41MDk4MDkwMTcxODEzOTY1XSwgWzE2NDUyMDUwMDguODA4NDU0NSwgNzExMCwgMi4zODcwMTk2MzQyNDY4MjZdLCBbMTY0NTIwNTAwOS4wNjQ1MjEsIDcxMjgsIDMuODEyNTQ5MTE0MjI3Mjk1XSwgWzE2NDUyMDUwMDkuMzMyNzc3LCA3MTQ2LCAyLjIwNDk4NTYxODU5MTMwODZdLCBbMTY0NTIwNTAwOS41OTI4MTg3LCA3MTY0LCAyLjMwNjg3OTUyMDQxNjI1OThdLCBbMTY0NTIwNTAwOS43MzgzMzYsIDcxNzMsIDIuMTExNjMzMDYyMzYyNjcxXSwgWzE2NDUyMDUwMTAuMTExMTE5MywgNzIwMCwgMi4wODA0ODEyOTA4MTcyNjA3XSwgWzE2NDUyMDUwMTAuMjM5NTIxNywgNzIwOSwgMi4zODU2MDM2NjYzMDU1NDJdLCBbMTY0NTIwNTAxMC43NTkzNzg3LCA3MjQ1LCAyLjExNDM2MTUyNDU4MTkwOV0sIFsxNjQ1MjA1MDEwLjg4NzA5MSwgNzI1NCwgMi4zNDI2MDUzNTI0MDE3MzM0XSwgWzE2NDUyMDUwMTEuMDE4MDgzOCwgNzI2MywgMi45ODAwNDM2NDk2NzM0NjJdLCBbMTY0NTIwNTAxMS4xNTM3MDU0LCA3MjcyLCAyLjIyMjkzMDkwODIwMzEyNV0sIFsxNjQ1MjA1MDExLjU4ODA4MzMsIDcyOTksIDIuMDI5OTc1NDE0Mjc2MTIzXSwgWzE2NDUyMDUwMTEuOTg0MjAwNywgNzMyNiwgMy4yMzA1NzMxNzczMzc2NDY1XSwgWzE2NDUyMDUwMTIuNjM3NzI1LCA3MzcxLCAyLjAyNTY1MDI2MjgzMjY0MTZdLCBbMTY0NTIwNTAxMi43NjQzNDMzLCA3MzgwLCAyLjMzMTgwODgwNTQ2NTY5ODJdLCBbMTY0NTIwNTAxMy4wMjg1MTk2LCA3Mzk4LCAyLjE1NTIwNTQ4ODIwNDk1Nl0sIFsxNjQ1MjA1MDEzLjE0OTU0MDcsIDc0MDcsIDIuNTMyNDM5NzA4NzA5NzE3XSwgWzE2NDUyMDUwMTMuMjk1OTk3MSwgNzQxNiwgMi4zNDA1NTM1MjIxMDk5ODU0XSwgWzE2NDUyMDUwMTMuNTYxOTI4LCA3NDM0LCAxLjk5ODc2OTQwMjUwMzk2NzNdLCBbMTY0NTIwNTAxMy42OTY5NzcsIDc0NDMsIDIuMDcyODY1NDg2MTQ1MDE5NV0sIFsxNjQ1MjA1MDEzLjg1MTQ4ODQsIDc0NTIsIDIuMjc3Mjg1NTc1ODY2Njk5XSwgWzE2NDUyMDUwMTMuOTkzNTM5NiwgNzQ2MSwgMy4wOTI4MTI1MzgxNDY5NzI3XSwgWzE2NDUyMDUwMTQuNjg5MTE1LCA3NDk3LCAyLjE0MDExOTU1MjYxMjMwNDddLCBbMTY0NTIwNTAxNC44NDY4Mjg3LCA3NTA2LCAzLjA2MTQzNTQ2MTA0NDMxMTVdLCBbMTY0NTIwNTAxNS4xMjY4MDc1LCA3NTI0LCAyLjExNTkwMTcwODYwMjkwNTNdLCBbMTY0NTIwNTAxNS4yNDg5MTA3LCA3NTMzLCAyLjE1OTYzODg4MTY4MzM0OTZdLCBbMTY0NTIwNTAxNS4zODQzNDcyLCA3NTQyLCAyLjEzNjE4MzAyMzQ1Mjc1OV0sIFsxNjQ1MjA1MDE1LjY0MjkzMSwgNzU2MCwgMi40MjY3ODg4MDY5MTUyODNdLCBbMTY0NTIwNTAxNS43NjI5NDM1LCA3NTY5LCAyLjQyNTM1ODA1NzAyMjA5NDddLCBbMTY0NTIwNTAxNi4wNDMyMzg0LCA3NTg3LCAyLjQ0MjgyNjI3MTA1NzEyOV0sIFsxNjQ1MjA1MDE2LjE3NDc4MywgNzU5NiwgMi4zMzU2ODUyNTMxNDMzMTA1XSwgWzE2NDUyMDUwMTYuNDUwMTEzOCwgNzYxNCwgMi40MTk4MDU3NjUxNTE5Nzc1XSwgWzE2NDUyMDUwMTcuMTA1NTc2LCA3NjU5LCAyLjM1NTU5NzI1NzYxNDEzNTddLCBbMTY0NTIwNTAxNy4yMzI2MTcsIDc2NjgsIDMuNDY2NDM3MTAxMzY0MTM1N10sIFsxNjQ1MjA1MDE3LjY3NTYwNTgsIDc2OTUsIDIuNjU1OTM5NTc5MDEwMDA5OF0sIFsxNjQ1MjA1MDE4LjA2NDQ3OTQsIDc3MjIsIDIuMTAyMjkwMTUzNTAzNDE4XSwgWzE2NDUyMDUwMTguNDE3OTQ0NCwgNzc0OSwgMS45NjY5MDMwOTA0NzY5ODk3XSwgWzE2NDUyMDUwMTguNTQ2NzgyMywgNzc1OCwgMi41MjcyOTM5MjA1MTY5Njc4XSwgWzE2NDUyMDUwMTguNjY3NDcyNCwgNzc2NywgMi42MTY3MDg1MTcwNzQ1ODVdLCBbMTY0NTIwNTAxOS4wNzE5NzI0LCA3Nzk0LCAyLjE4MzU2ODk1NDQ2Nzc3MzRdLCBbMTY0NTIwNTAxOS4yMDUwNTAyLCA3ODAzLCAyLjI3MTEzMDMyMzQxMDAzNF0sIFsxNjQ1MjA1MDE5Ljc0ODQzMzQsIDc4MzksIDIuNzY0ODAxNTAyMjI3NzgzXSwgWzE2NDUyMDUwMTkuODY2NDQyLCA3ODQ4LCAyLjY1MjMwODQ2NDA1MDI5M10sIFsxNjQ1MjA1MDIxLjIxNTg0OTYsIDc5MzgsIDIuMjM5MDE4MjAxODI4MDAzXSwgWzE2NDUyMDUwMjEuNDYxNTMxMiwgNzk1NiwgMy4yMTQ0MDMzOTA4ODQzOTk0XSwgWzE2NDUyMDUwMjEuNTcxNDY3NiwgNzk2NSwgMi43NjQ1MDY1Nzg0NDU0MzQ2XSwgWzE2NDUyMDUwMjEuNjgyMDE0NywgNzk3NCwgMi41ODc2MDg4MTQyMzk1MDJdLCBbMTY0NTIwNTAyMS44MDExNTY4LCA3OTgzLCAyLjIzMTYyNDM2NDg1MjkwNTNdLCBbMTY0NTIwNTAyMi4wNTcwMTc4LCA4MDAxLCAyLjk0NzQwNzAwNzIxNzQwNzJdLCBbMTY0NTIwNTAyMi4zMTkwNDMyLCA4MDE5LCAyLjEzODgzOTAwNjQyMzk1XSwgWzE2NDUyMDUwMjIuNTczMzE5NywgODAzNywgMi4wNTk0MzQxNzU0OTEzMzNdLCBbMTY0NTIwNTAyMi45MjkwOTAzLCA4MDY0LCAyLjM5OTcxNTY2MjAwMjU2MzVdLCBbMTY0NTIwNTAyMy4xNzczNjcsIDgwODIsIDIuMjMyNDM2NjU2OTUxOTA0M10sIFsxNjQ1MjA1MDIzLjM1MTkxNTYsIDgwOTEsIDIuMzgwMTE3NjU0ODAwNDE1XSwgWzE2NDUyMDUwMjMuNzc3NTIxNiwgODExOCwgMi4wMTMzNzQ1NjcwMzE4NjA0XSwgWzE2NDUyMDUwMjMuOTE4MjAxNCwgODEyNywgMi4wMTM1OTcyNDk5ODQ3NDFdLCBbMTY0NTIwNTAyNC4xNzQ3ODUxLCA4MTQ1LCAyLjEzODYyNTE0NDk1ODQ5Nl0sIFsxNjQ1MjA1MDI0LjQyMjY0MTgsIDgxNjMsIDIuMjcyMjk3MzgyMzU0NzM2M10sIFsxNjQ1MjA1MDI0LjU1NDM1OSwgODE3MiwgMi4zOTQ2NjkyOTQzNTczXSwgWzE2NDUyMDUwMjQuNjgxMzUyOSwgODE4MSwgMi4xMDcxMzc5MTg0NzIyOV0sIFsxNjQ1MjA1MDI0LjkxMzcyMDQsIDgxOTksIDIuNjUwNTM5NjM2NjExOTM4NV0sIFsxNjQ1MjA1MDI1LjA2MTQwMDQsIDgyMDgsIDIuOTA4MTg2Njc0MTE4MDQyXSwgWzE2NDUyMDUwMjUuNTE1ODYyMiwgODIyNiwgMy41MDQwODMzOTUwMDQyNzI1XSwgWzE2NDUyMDUwMjUuNjY1MjM5OCwgODIzNSwgMi42NDk4Mzk2Mzk2NjM2OTYzXSwgWzE2NDUyMDUwMjUuOTQyMzc0MiwgODI1MywgMy4wNDQxMTc2ODkxMzI2OTA0XSwgWzE2NDUyMDUwMjYuMjU3MDEwNywgODI3MSwgMi4yMTM5NDg0ODgyMzU0NzM2XSwgWzE2NDUyMDUwMjYuMzgwNDU3MiwgODI4MCwgMi4zNjE2NjQ3NzIwMzM2OTE0XSwgWzE2NDUyMDUwMjYuNjcwNTIyNSwgODI5OCwgMi4wMjcxMTcyNTIzNDk4NTM1XSwgWzE2NDUyMDUwMjYuOTUwMjE1LCA4MzE2LCAyLjQyMjg4NDk0MTEwMTA3NF0sIFsxNjQ1MjA1MDI3LjQ3MDcxMTUsIDgzNTIsIDIuOTUyMzY5NDUxNTIyODI3XSwgWzE2NDUyMDUwMjcuNTkwMDU2NywgODM2MSwgMy44ODUyMjEyNDI5MDQ2NjNdLCBbMTY0NTIwNTAyNy43MjIwOTgsIDgzNzAsIDQuODE5MzUyNjI2ODAwNTM3XSwgWzE2NDUyMDUwMjcuODQzMzQyLCA4Mzc5LCA0LjA5NjA3MzYyNzQ3MTkyNF0sIFsxNjQ1MjA1MDI3Ljk2ODczMzgsIDgzODgsIDIuNDc2NjExODUyNjQ1ODc0XSwgWzE2NDUyMDUwMjguMTAwODk1MiwgODM5NywgMi4wODMyMDk1MTQ2MTc5Ml0sIFsxNjQ1MjA1MDI4LjIzMTA4NzQsIDg0MDYsIDIuMTk2NTM0ODcyMDU1MDUzN10sIFsxNjQ1MjA1MDI4LjUyODg5MzcsIDg0MjQsIDIuMzk3NzgyMDg3MzI2MDVdLCBbMTY0NTIwNTAyOS4wNjkwOTgsIDg0NjAsIDIuMjQ1MzEyNjkwNzM0ODYzM10sIFsxNjQ1MjA1MDI5LjM0OTk0OTQsIDg0NzgsIDIuMjY3NTk5NTgyNjcyMTE5XSwgWzE2NDUyMDUwMjkuNTE4MzE3LCA4NDg3LCAyLjE3NDg3NjkyODMyOTQ2NzhdLCBbMTY0NTIwNTAyOS45MTI0NDI3LCA4NTE0LCAyLjE0MjgxMTI5ODM3MDM2MTNdLCBbMTY0NTIwNTAzMC40MjA2NzQzLCA4NTUwLCAyLjg0MDE3NjM0MzkxNzg0NjddLCBbMTY0NTIwNTAzMC41Njg5NzA0LCA4NTU5LCAyLjYzMzQ1MDc0NjUzNjI1NV0sIFsxNjQ1MjA1MDMxLjEwMzE5MzUsIDg1NzcsIDIuMDUzNzI5NTM0MTQ5MTddLCBbMTY0NTIwNTAzMS40MDg1MTEyLCA4NTk1LCAyLjQ4MjUyNzk3MTI2NzddLCBbMTY0NTIwNTAzMS41ODIxMTQyLCA4NjA0LCAyLjIwODgwMTAzMTExMjY3MV0sIFsxNjQ1MjA1MDMxLjkyOTI4OSwgODYxMywgMi4wNjc0MzAyNTc3OTcyNDFdLCBbMTY0NTIwNTAzMi42MDY1MjIzLCA4NjQ5LCAyLjAwMDk5ODQ5NzAwOTI3NzNdLCBbMTY0NTIwNTAzMi45MDk3ODQsIDg2NTgsIDEuOTU0MzM3MTIwMDU2MTUyM10sIFsxNjQ1MjA1MDMzLjA0MjgxMTksIDg2NjcsIDIuMjQ2MTQwNzE4NDYwMDgzXSwgWzE2NDUyMDUwMzMuMTY2MzI2MywgODY3NiwgMi40MTM4MzY3MTc2MDU1OTFdLCBbMTY0NTIwNTAzMy4zMDkxNzIyLCA4Njg1LCA0LjA3MjMyNDI3NTk3MDQ1OV0sIFsxNjQ1MjA1MDMzLjQyOTU5MzYsIDg2OTQsIDIuNTAxNDQ5ODIzMzc5NTE2Nl0sIFsxNjQ1MjA1MDMzLjY1ODQxODcsIDg3MTIsIDEuOTE1MTc4NjU2NTc4MDY0XSwgWzE2NDUyMDUwMzMuNzcwNDQ0NiwgODcyMSwgMi4yMTQ0NzAzODY1MDUxMjddLCBbMTY0NTIwNTAzNC4xNDU3NzI3LCA4NzQ4LCAyLjQxNjk3NjQ1MTg3Mzc3OTNdLCBbMTY0NTIwNTAzNC43MTcyNjA0LCA4NzkzLCAyLjExNzU4MjU1OTU4NTU3MTNdLCBbMTY0NTIwNTAzNC45NDQyMjUsIDg4MTEsIDEuOTcxODA1NDUzMzAwNDc2XSwgWzE2NDUyMDUwMzUuMDcxNjY1OCwgODgyMCwgMS45ODgzMDE4NzMyMDcwOTIzXSwgWzE2NDUyMDUwMzUuMzU4OTMzLCA4ODM4LCAyLjM2OTE1NzMxNDMwMDUzN10sIFsxNjQ1MjA1MDM1LjQ5NjYzNzMsIDg4NDcsIDIuMjcwNjMyNzQzODM1NDQ5XSwgWzE2NDUyMDUwMzYuMTAyMDYxNywgODg4MywgMS45Nzg4NzU1MTc4NDUxNTM4XSwgWzE2NDUyMDUwMzYuMzUzNjA5NiwgODkwMSwgMS45NTY4MTAyMzU5NzcxNzI5XSwgWzE2NDUyMDUwMzYuNDk0ODU3MywgODkxMCwgMi4wMzM5MDc0MTM0ODI2NjZdLCBbMTY0NTIwNTAzNi42MzE0Mzk0LCA4OTE5LCAxLjkwODc4NDg2NjMzMzAwNzhdLCBbMTY0NTIwNTAzNi45MDU2OSwgODkzNywgMi4wMTU0MTE4NTM3OTAyODNdLCBbMTY0NTIwNTAzNy4zODIwNDYyLCA4OTU1LCAxLjk1MjE1MDM0NDg0ODYzMjhdLCBbMTY0NTIwNTAzNy41MTkwODA2LCA4OTY0LCAyLjAyMjk3MzA2MDYwNzkxXSwgWzE2NDUyMDUwMzcuNjU4NzY2MywgODk3MywgMi4zMjYzNzI2MjM0NDM2MDM1XSwgWzE2NDUyMDUwMzcuODk4MDE1MywgODk5MSwgMi4wMjUwMTI0OTMxMzM1NDVdLCBbMTY0NTIwNTAzOC4wMTQyMjU3LCA5MDAwLCAxLjk5ODcwMjI4NzY3Mzk1MDJdLCBbMTY0NTIwNTAzOC4yMzcwMDU3LCA5MDE4LCAyLjM1ODMxNDc1MjU3ODczNTRdLCBbMTY0NTIwNTAzOC4zNTYyMDY3LCA5MDI3LCAyLjI1NDAxMDY3NzMzNzY0NjVdLCBbMTY0NTIwNTAzOC40NzUwOTgxLCA5MDM2LCAyLjE0NzI4MjgzODgyMTQxMV0sIFsxNjQ1MjA1MDM4LjYxMDAyNTQsIDkwNDUsIDIuNDU0MjYwNTg3NjkyMjYwN10sIFsxNjQ1MjA1MDM4Ljc0MTc5MTUsIDkwNTQsIDIuMDA2MzMwMjUxNjkzNzI1Nl0sIFsxNjQ1MjA1MDM4Ljg2NDE2MywgOTA2MywgMi4xNTY3NzQ3NTkyOTI2MDI1XSwgWzE2NDUyMDUwMzkuNTIwMzQ5NywgOTEwOCwgMi41NDQ4MDMxNDI1NDc2MDc0XSwgWzE2NDUyMDUwMzkuNzYyNTk2LCA5MTI2LCAyLjA4MTMzNjAyMTQyMzM0XSwgWzE2NDUyMDUwNDAuMDIzOTc1MSwgOTE0NCwgMi43NTQ0MTk4MDM2MTkzODQ4XSwgWzE2NDUyMDUwNDAuMTUyMDkyMiwgOTE1MywgMi4wOTA4MzQ4NTYwMzMzMjVdLCBbMTY0NTIwNTA0MC4yNzM1NzgsIDkxNjIsIDIuMTQ1MzI0MjMwMTk0MDkyXSwgWzE2NDUyMDUwNDAuODkyNTg2NSwgOTIwNywgMi4wMTc4MTk4ODE0MzkyMDldLCBbMTY0NTIwNTA0MS40NDg3NzIyLCA5MjQzLCAxLjgyNzEzODE4NTUwMTA5ODZdLCBbMTY0NTIwNTA0MS43NjU0OCwgOTI2MSwgMS45NzY2MTIwOTEwNjQ0NTMxXSwgWzE2NDUyMDUwNDEuOTA3Mjg4LCA5MjcwLCAxLjk2Nzg2MTg5MDc5Mjg0NjddLCBbMTY0NTIwNTA0Mi43NDc4NjE5LCA5MzI0LCAyLjEwMjA4NTExMzUyNTM5MDZdLCBbMTY0NTIwNTA0Mi44NjI4Mjc1LCA5MzMzLCAxLjk5Mzc3NTEyOTMxODIzNzNdLCBbMTY0NTIwNTA0Mi45ODM2NTA0LCA5MzQyLCAyLjAwNzY3NjYwMTQwOTkxMl0sIFsxNjQ1MjA1MDQzLjEwNDg4MTUsIDkzNTEsIDIuMTI5MDIxNDA2MTczNzA2XSwgWzE2NDUyMDUwNDMuMjMwNzQwMywgOTM2MCwgMi4xMjcxMzU3NTM2MzE1OTJdLCBbMTY0NTIwNTA0My43Mjg5MDc4LCA5Mzk2LCAxLjk3OTQzNTA4NjI1MDMwNTJdLCBbMTY0NTIwNTA0My45OTA5NzI4LCA5NDE0LCAyLjIzNTQ5ODE4OTkyNjE0NzVdLCBbMTY0NTIwNTA0NC4xMjU1OTM0LCA5NDIzLCAyLjQxNjkwOTIxNzgzNDQ3MjddLCBbMTY0NTIwNTA0NC45Nzg0Nzk5LCA5NDc3LCAyLjE3NjAzOTkzNDE1ODMyNV0sIFsxNjQ1MjA1MDQ1LjExNzg5NzcsIDk0ODYsIDIuMDA3NjY1Mzk1NzM2Njk0M10sIFsxNjQ1MjA1MDQ1LjQ2NDMwODUsIDk1MTMsIDIuMDA3MDczNDAyNDA0Nzg1XSwgWzE2NDUyMDUwNDUuNzI4ODU5NywgOTUzMSwgMi41NTcwMjM1MjUyMzgwMzddLCBbMTY0NTIwNTA0NS44NjM1MTUxLCA5NTQwLCAyLjA5MjA0MzM5OTgxMDc5MV0sIFsxNjQ1MjA1MDQ1Ljk5NTAyMjMsIDk1NDksIDEuOTQzNzQ5OTA0NjMyNTY4NF0sIFsxNjQ1MjA1MDQ2LjI1NTU2MjMsIDk1NjcsIDIuMDE2MTY3NjQwNjg2MDM1XSwgWzE2NDUyMDUwNDYuNjMzMjU4OCwgOTU5NCwgMS45OTI5MjAxNjAyOTM1NzldLCBbMTY0NTIwNTA0Ni43NjM4NDg1LCA5NjAzLCAyLjQwODA0MDUyMzUyOTA1MjddLCBbMTY0NTIwNTA0Ni44ODQwMDM0LCA5NjEyLCAyLjU5Njk5ODY5MTU1ODgzOF0sIFsxNjQ1MjA1MDQ3LjExMTkzMTgsIDk2MzAsIDEuODQ5MTI0NTUwODE5Mzk3XSwgWzE2NDUyMDUwNDcuMjE3NTk5LCA5NjM5LCAyLjA3MTMxOTgxODQ5NjcwNF0sIFsxNjQ1MjA1MDQ3LjM0MTIxNDQsIDk2NDgsIDEuODk2MjE5NjExMTY3OTA3N10sIFsxNjQ1MjA1MDQ3LjQ1OTQwMjMsIDk2NTcsIDEuOTIzNjc4NzU1NzYwMTkyOV0sIFsxNjQ1MjA1MDQ3LjU3OTA4MjcsIDk2NjYsIDIuMTgxNTcyNDM3Mjg2Mzc3XSwgWzE2NDUyMDUwNDcuNzA3NzQwOCwgOTY3NSwgMi42OTMzNTAzMTUwOTM5OTRdLCBbMTY0NTIwNTA0OC4zMjk0OTYsIDk3MDIsIDEuOTkzODA3MzE1ODI2NDE2XSwgWzE2NDUyMDUwNDguNDYyNzE2LCA5NzExLCAyLjM4MDQ0NDA0OTgzNTIwNV0sIFsxNjQ1MjA1MDQ4LjcyODc2MjEsIDk3MjksIDIuMzA0Mzg0MjMxNTY3MzgzXSwgWzE2NDUyMDUwNDguODYwNjQyNywgOTczOCwgMi4wMTgwNjE2Mzc4Nzg0MThdLCBbMTY0NTIwNTA0OS4wMTc0ODAxLCA5NzQ3LCAyLjExMTYwNTY0NDIyNjA3NF0sIFsxNjQ1MjA1MDQ5LjM2MTA1OTQsIDk3NzQsIDIuMTA5MjYwMzIwNjYzNDUyXSwgWzE2NDUyMDUwNDkuNDcyNTgxNCwgOTc4MywgMi4xNDU2NzE4NDQ0ODI0MjJdLCBbMTY0NTIwNTA0OS41ODM1MDk3LCA5NzkyLCAyLjYyMjY4Mzc2MzUwNDAyODNdLCBbMTY0NTIwNTA1MC4wNzY0NzI4LCA5ODI4LCAyLjE2NjY3MDc5OTI1NTM3MV0sIFsxNjQ1MjA1MDUwLjE4NjcyMjUsIDk4MzcsIDIuMjgxMTM4NDIwMTA0OTgwNV0sIFsxNjQ1MjA1MDUwLjMwMTc3MTIsIDk4NDYsIDIuMzc1NjQ3NzgzMjc5NDE5XSwgWzE2NDUyMDUwNTAuODkyMjg0OSwgOTg5MSwgMi4xMDc1MzI5NzgwNTc4NjEzXSwgWzE2NDUyMDUwNTEuMTMwMTU1MywgOTkwOSwgMi4wNTY3NDMzODM0MDc1OTI4XSwgWzE2NDUyMDUwNTEuMzYzOTExLCA5OTI3LCAyLjMxNDQ4NTA3MzA4OTU5OTZdLCBbMTY0NTIwNTA1MS40OTc5MDcyLCA5OTM2LCAyLjM5NTQxMjkyMTkwNTUxNzZdLCBbMTY0NTIwNTA1MS42MTgxMDAyLCA5OTQ1LCAyLjM0MzMwNDg3MjUxMjgxNzRdLCBbMTY0NTIwNTA1Mi4wMjkwMDEyLCA5OTcyLCAyLjM0MTU4MTEwNjE4NTkxM10sIFsxNjQ1MjA1MDUyLjE2MDY1MjYsIDk5ODEsIDIuNTM3MDkyNjg1Njk5NDYzXSwgWzE2NDUyMDUwNTIuMjg4MDMzNSwgOTk5MCwgMi4zMDU1MjI5MTg3MDExNzJdLCBbMTY0NTIwNTA1Mi40MTQyODM1LCA5OTk5LCAyLjA1MjUyMTcwNTYyNzQ0MTRdLCBbMTY0NTIwNTA1Mi41ODE5MDU4LCAxMDAwOCwgMS45NDg0NDMxNzQzNjIxODI2XSwgWzE2NDUyMDUwNTIuNzE3MTg4OCwgMTAwMTcsIDIuMjA3ODA3MzAyNDc0OTc1Nl0sIFsxNjQ1MjA1MDUyLjg1ODU5NjMsIDEwMDI2LCAxLjgyMzcwMTk3NzcyOTc5NzRdLCBbMTY0NTIwNTA1Mi45NzYwMzk0LCAxMDAzNSwgMS45MDE3NjQxNTQ0MzQyMDRdLCBbMTY0NTIwNTA1My4yNDcxMDg3LCAxMDA1MywgMi4xNjk1NTcwOTQ1NzM5NzQ2XSwgWzE2NDUyMDUwNTMuNjAyOTMxMywgMTAwODAsIDEuODYzMzc0NDcxNjY0NDI4N10sIFsxNjQ1MjA1MDUzLjgyNzI4ODYsIDEwMDk4LCAyLjkzNDIwNTc3MDQ5MjU1MzddLCBbMTY0NTIwNTA1My45NDkxMDM2LCAxMDEwNywgMi4yOTUxMjc4Njg2NTIzNDM4XSwgWzE2NDUyMDUwNTQuMzE4ODcyLCAxMDEzNCwgMi41MTQxODYzODIyOTM3MDFdLCBbMTY0NTIwNTA1NC40NDUwNTQ4LCAxMDE0MywgMi4yNDEzODY0MTM1NzQyMTg4XSwgWzE2NDUyMDUwNTQuNzIwNTI5MywgMTAxNjEsIDIuMjc2OTIwMDgwMTg0OTM2NV0sIFsxNjQ1MjA1MDU0Ljg0ODY5NjIsIDEwMTcwLCAyLjIwNzAyMTk1MTY3NTQxNV0sIFsxNjQ1MjA1MDU0Ljk5NzczNiwgMTAxNzksIDIuMzc4NzY2MDU5ODc1NDg4M10sIFsxNjQ1MjA1MDU1LjE1NzIxNzMsIDEwMTg4LCAyLjY2NTYwNzQ1MjM5MjU3OF0sIFsxNjQ1MjA1MDU1LjMwMDU2MjQsIDEwMTk3LCAyLjI4NjYzODczNjcyNDg1MzVdLCBbMTY0NTIwNTA1NS41NzY5NjQ0LCAxMDIxNSwgMS45Mzg3Njk4MTczNTIyOTVdLCBbMTY0NTIwNTA1NS42OTg4Mjc3LCAxMDIyNCwgMS45NDc1MTIyNjkwMjAwODA2XSwgWzE2NDUyMDUwNTUuODA5MjA4MiwgMTAyMzMsIDIuMjQ3MzM2Mzg3NjM0Mjc3M10sIFsxNjQ1MjA1MDU1LjkyNjc4NSwgMTAyNDIsIDIuNDUxNzAxNjQxMDgyNzYzN10sIFsxNjQ1MjA1MDU2LjIwNzQ3MDQsIDEwMjYwLCAyLjc1MTk0NjkyNjExNjk0MzRdLCBbMTY0NTIwNTA1Ni42MzY2NjI1LCAxMDI4NywgMy4yMzU3NTU0NDM1NzI5OThdLCBbMTY0NTIwNTA1Ny4wNjc2MDIsIDEwMzE0LCAxLjk4NzA4MjgzOTAxMjE0Nl0sIFsxNjQ1MjA1MDU3LjIxOTA0NDcsIDEwMzIzLCAxLjk5ODgzMTk4NzM4MDk4MTRdLCBbMTY0NTIwNTA1Ny40ODQ1MjMzLCAxMDM0MSwgMi4zMDAwMDYxNTExOTkzNDFdLCBbMTY0NTIwNTA1Ny41OTMyMTEyLCAxMDM1MCwgMi4zOTUxMjcwNTgwMjkxNzVdLCBbMTY0NTIwNTA1Ny42OTk5MTY0LCAxMDM1OSwgMS45ODAyOTIzMjAyNTE0NjQ4XSwgWzE2NDUyMDUwNTcuODA4NDIxOSwgMTAzNjgsIDEuOTY4NzU0NTI5OTUzMDAzXSwgWzE2NDUyMDUwNTcuOTMyNjAwMywgMTAzNzcsIDIuMDU5MTY1MjM5MzM0MTA2NF0sIFsxNjQ1MjA1MDU4LjA1MjAzODcsIDEwMzg2LCAxLjgzODMyMTY4NTc5MTAxNTZdLCBbMTY0NTIwNTA1OC4zMzA4OTIzLCAxMDQwNCwgMi4wNzUyMDY3NTY1OTE3OTddLCBbMTY0NTIwNTA1OC45Njg4MTQxLCAxMDQ0MCwgMS45NjU5MTgxODMzMjY3MjEyXSwgWzE2NDUyMDUwNTkuMDc2MDU2LCAxMDQ0OSwgMi4wMjEyNTA0ODYzNzM5MDE0XSwgWzE2NDUyMDUwNTkuMzA1MzgzLCAxMDQ2NywgMS45MzI5NDI5ODY0ODgzNDIzXSwgWzE2NDUyMDUwNTkuNTM0NTA5NywgMTA0ODUsIDEuOTYxNjQxNDMwODU0Nzk3NF0sIFsxNjQ1MjA1MDU5Ljc3MTMwMTcsIDEwNTAzLCAxLjc5NjM3ODg1MDkzNjg4OTZdLCBbMTY0NTIwNTA1OS45MTUwNjQ2LCAxMDUxMiwgMS44NTYzMDczODczNTE5ODk3XSwgWzE2NDUyMDUwNjAuNzI1MjY2NSwgMTA1NjYsIDIuMDg0NTQ3MjgxMjY1MjU5XSwgWzE2NDUyMDUwNjAuODQzNjkxLCAxMDU3NSwgMS45NTgzMzIwNjE3Njc1NzgxXSwgWzE2NDUyMDUwNjEuMDk0NTMzLCAxMDU5MywgMS45MjM0ODEyMjU5Njc0MDcyXSwgWzE2NDUyMDUwNjEuMjMwNzExLCAxMDYwMiwgMS44NjkwMjk5OTg3NzkyOTY5XSwgWzE2NDUyMDUwNjEuMzY5Mzc3MSwgMTA2MTEsIDIuMjI0MTk0MDQ5ODM1MjA1XSwgWzE2NDUyMDUwNjEuODkwNzg4OCwgMTA2NDcsIDEuOTA5ODAzODY3MzQwMDg4XSwgWzE2NDUyMDUwNjIuMTU5MDc5LCAxMDY2NSwgMS44NTcyNjU0NzI0MTIxMDk0XSwgWzE2NDUyMDUwNjIuNDI5MzM4NywgMTA2ODMsIDIuMDgxMjMwODc4ODI5OTU2XSwgWzE2NDUyMDUwNjIuNzEyODAzMSwgMTA3MDEsIDIuNzA4NDc3OTczOTM3OTg4M10sIFsxNjQ1MjA1MDYyLjgzNjI1MiwgMTA3MTAsIDEuOTg2NjI1NTUyMTc3NDI5Ml0sIFsxNjQ1MjA1MDYyLjk2MzE2NTUsIDEwNzE5LCAxLjkzNDUwMTY0Nzk0OTIxODhdLCBbMTY0NTIwNTA2My4zMzc2MDMzLCAxMDc0NiwgMi4wMTA0MTkxMzAzMjUzMTc0XSwgWzE2NDUyMDUwNjMuNDc4MTY5NCwgMTA3NTUsIDEuODYwMTk2OTQ4MDUxNDUyNl0sIFsxNjQ1MjA1MDYzLjYyMDk4NDMsIDEwNzY0LCAxLjkzNjYyNzAzMDM3MjYxOTZdLCBbMTY0NTIwNTA2My43Nzc1MzcsIDEwNzczLCAyLjA1NDE3NDkwMDA1NDkzMTZdLCBbMTY0NTIwNTA2My45MzUyMjE3LCAxMDc4MiwgMS45NDc2NzM2NzgzOTgxMzIzXSwgWzE2NDUyMDUwNjQuMDUwMzc1MiwgMTA3OTEsIDIuMjczMzIwNjc0ODk2MjQwMl0sIFsxNjQ1MjA1MDY0LjQ1NTM0OTcsIDEwODE4LCAyLjM4MzA1MTg3MjI1MzQxOF0sIFsxNjQ1MjA1MDY0LjU5MzAzMjYsIDEwODI3LCAyLjA2NjI4ODIzMjgwMzM0NDddLCBbMTY0NTIwNTA2NC45NzMwNDU4LCAxMDg1NCwgMi4zODY5OTAwNzAzNDMwMTc2XSwgWzE2NDUyMDUwNjUuMTAyNDY0NCwgMTA4NjMsIDIuMDYyMDIyMjA5MTY3NDgwNV0sIFsxNjQ1MjA1MDY1LjIzNjEwMTQsIDEwODcyLCAxLjgyNDMwNTA1NzUyNTYzNDhdLCBbMTY0NTIwNTA2NS41MDUzNzYzLCAxMDg5MCwgMS44OTY1NjUwNzk2ODkwMjU5XSwgWzE2NDUyMDUwNjUuNjMxMTQ2MiwgMTA4OTksIDEuODg3OTAxNTQ0NTcwOTIyOV0sIFsxNjQ1MjA1MDY2LjA1Mjg1OCwgMTA5MjYsIDEuODMwOTcxNDc5NDE1ODkzNl0sIFsxNjQ1MjA1MDY2LjE4NzQ2MTYsIDEwOTM1LCAyLjA2ODE2NjczMjc4ODA4Nl0sIFsxNjQ1MjA1MDY2LjMyMzc1NTUsIDEwOTQ0LCAyLjQ4NTM4NjEzMzE5Mzk2OTddLCBbMTY0NTIwNTA2Ni41NjY3Njk0LCAxMDk2MiwgMi41NTUwMDUzMTE5NjU5NDI0XSwgWzE2NDUyMDUwNjYuNzIyMTksIDEwOTcxLCAyLjE0MTQ5NjY1ODMyNTE5NTNdLCBbMTY0NTIwNTA2Ny4yNDUzNjgyLCAxMTAwNywgMS43OTg5OTE0NDE3MjY2ODQ2XSwgWzE2NDUyMDUwNjcuMzczMDQ2MiwgMTEwMTYsIDEuODI0NTgwNTUwMTkzNzg2Nl0sIFsxNjQ1MjA1MDY3LjY2MTg2MDUsIDExMDM0LCAxLjgzOTk2NTgyMDMxMjVdLCBbMTY0NTIwNTA2OC4wMTk1ODg1LCAxMTA2MSwgMS44MTU4MTc3MTM3Mzc0ODc4XSwgWzE2NDUyMDUwNjguMTM1Mzg4MSwgMTEwNzAsIDIuMDU3MzY2ODQ3OTkxOTQzNF0sIFsxNjQ1MjA1MDY4LjUzNjIzNywgMTEwOTcsIDMuMTEzMTg0MjEzNjM4MzA1N10sIFsxNjQ1MjA1MDY4LjY3OTQ0LCAxMTEwNiwgMi43ODg0ODMxNDI4NTI3ODNdLCBbMTY0NTIwNTA2OS41MTI5MDQ0LCAxMTE1MSwgMi43NzQ5Njg4NjI1MzM1NjkzXSwgWzE2NDUyMDUwNjkuNzgyMDg4LCAxMTE2OSwgMS45NzM5Njc3OTA2MDM2Mzc3XSwgWzE2NDUyMDUwNjkuOTA4MTYyOCwgMTExNzgsIDEuOTA4NTEyNTkyMzE1NjczOF0sIFsxNjQ1MjA1MDcwLjA1MDIzNSwgMTExODcsIDIuMzg2Njc4Njk1Njc4NzExXSwgWzE2NDUyMDUwNzAuMTcxNDE2MywgMTExOTYsIDIuNTE3OTQ1NzY2NDQ4OTc0Nl0sIFsxNjQ1MjA1MDcwLjI5NDgxMTcsIDExMjA1LCAyLjUxMjA4NDQ4NDEwMDM0Ml0sIFsxNjQ1MjA1MDcwLjQyMDQzNjQsIDExMjE0LCAyLjg4Njg2OTQzMDU0MTk5Ml0sIFsxNjQ1MjA1MDcwLjU0OTI1MDEsIDExMjIzLCAyLjAwMzEyNjg1OTY2NDkxN10sIFsxNjQ1MjA1MDcwLjk2NzM2NjcsIDExMjUwLCAxLjk4ODc4MzI0MDMxODI5ODNdLCBbMTY0NTIwNTA3MS4xMjI5MDQsIDExMjU5LCAyLjYwNjI3MTAyODUxODY3NjhdLCBbMTY0NTIwNTA3MS4yNTkwODY4LCAxMTI2OCwgMi43MjQ4MzQ5MTg5NzU4M10sIFsxNjQ1MjA1MDcxLjM4OTg5NTQsIDExMjc3LCAyLjMyMjc1NTA5ODM0Mjg5NTVdLCBbMTY0NTIwNTA3MS42MzA4MDU3LCAxMTI5NSwgMS45ODUxNjk3NjgzMzM0MzVdLCBbMTY0NTIwNTA3MS45MTU3ODc3LCAxMTMxMywgMS45NzIwODkyOTA2MTg4OTY1XSwgWzE2NDUyMDUwNzIuMDU4ODY5LCAxMTMyMiwgMi4xNTYzMDk4NDMwNjMzNTQ1XSwgWzE2NDUyMDUwNzIuNDQyMDM4MywgMTEzNDksIDEuODk3MzAwNDgxNzk2MjY0Nl0sIFsxNjQ1MjA1MDcyLjU3NjA1ODEsIDExMzU4LCAxLjg4Mzk0MTY1MDM5MDYyNV0sIFsxNjQ1MjA1MDcyLjk1OTUyMDMsIDExMzg1LCAyLjI2NTM4NzUzNTA5NTIxNV0sIFsxNjQ1MjA1MDczLjMzMzcyMiwgMTE0MTIsIDIuMjU4NzQ2MTQ3MTU1NzYxN10sIFsxNjQ1MjA1MDczLjc3ODg0MjcsIDExNDQ4LCAyLjc2NzE5NTIyNDc2MTk2M10sIFsxNjQ1MjA1MDc0LjM3Mjg3OTMsIDExNDkzLCAyLjYxNjM3NzgzMDUwNTM3MV0sIFsxNjQ1MjA1MDc0LjQ5OTkwOTYsIDExNTAyLCAyLjU3NjcxODMzMDM4MzMwMV0sIFsxNjQ1MjA1MDc0LjYzMDk4NDgsIDExNTExLCAyLjQzODE5ODMyODAxODE4ODVdLCBbMTY0NTIwNTA3NC45MzY5NTg4LCAxMTUyOSwgMi4wOTI1NzQ4MzQ4MjM2MDg0XSwgWzE2NDUyMDUwNzUuMjQyODA2LCAxMTU0NywgMS44OTMwODU4MzczNjQxOTY4XSwgWzE2NDUyMDUwNzUuNTg3ODczNSwgMTE1NzQsIDIuMDU0Njc3NDg2NDE5Njc3N10sIFsxNjQ1MjA1MDc1Ljk4NjI3NDcsIDExNjAxLCAxLjkzNjI5NTI3MDkxOTc5OThdLCBbMTY0NTIwNTA3Ni4yMzM3NTczLCAxMTYxOSwgMi4wNzY4NDEzNTQzNzAxMTddLCBbMTY0NTIwNTA3Ni42MzM3NTQsIDExNjQ2LCAxLjg5NTMwNjk0NDg0NzEwN10sIFsxNjQ1MjA1MDc3LjA2MjYyNSwgMTE2NzMsIDIuMjk4NjEwMjEwNDE4NzAxXSwgWzE2NDUyMDUwNzcuMjg4NDg5OCwgMTE2OTEsIDEuOTQ2NTI4OTExNTkwNTc2Ml0sIFsxNjQ1MjA1MDc3LjQwNzM2NjUsIDExNzAwLCAyLjQyODUyMTM5NDcyOTYxNDNdLCBbMTY0NTIwNTA3Ny42NzgwNTIsIDExNzE4LCAyLjE5MjcwMDM4NjA0NzM2MzNdLCBbMTY0NTIwNTA3Ny44MTUxOTA2LCAxMTcyNywgMS45ODAyNzcwNjE0NjI0MDIzXSwgWzE2NDUyMDUwNzguMDc5Mzg1OCwgMTE3NDUsIDIuMzg3NjcwNTE2OTY3NzczNF0sIFsxNjQ1MjA1MDc4LjM1Nzg2MjcsIDExNzYzLCAxLjgxMTIwMjQwNjg4MzIzOTddLCBbMTY0NTIwNTA3OC45MTIxMTcyLCAxMTc5OSwgMS45NDYyMTgwMTM3NjM0Mjc3XSwgWzE2NDUyMDUwNzkuNDMzMTM0NiwgMTE4MzUsIDIuMTgzODI0MDYyMzQ3NDEyXSwgWzE2NDUyMDUwNzkuNTU4MzUyNywgMTE4NDQsIDIuODEzNjYwNjIxNjQzMDY2NF0sIFsxNjQ1MjA1MDgwLjMwNDc2NTUsIDExODg5LCAzLjA5NTc5MzQ4NTY0MTQ3OTVdLCBbMTY0NTIwNTA4MC41MzQ2MTk2LCAxMTkwNywgMi4wMjcyODc5NjAwNTI0OTAyXSwgWzE2NDUyMDUwODAuNjU4OTQyMiwgMTE5MTYsIDIuNDI4ODk2MTg4NzM1OTYyXSwgWzE2NDUyMDUwODAuOTE4OTcyNywgMTE5MzQsIDIuMDIxOTA1NjYwNjI5MjcyNV0sIFsxNjQ1MjA1MDgxLjA0NzAyMjMsIDExOTQzLCAxLjkwMTU2NTQzMjU0ODUyM10sIFsxNjQ1MjA1MDgxLjMyMjgzMDcsIDExOTYxLCAyLjAyNjI4OTcwMTQ2MTc5Ml0sIFsxNjQ1MjA1MDgyLjI4NzA3NDMsIDEyMDI0LCAxLjkzMDA4Mzg3MDg4Nzc1NjNdLCBbMTY0NTIwNTA4My40OTgzMDI1LCAxMjEwNSwgMi45MjkxNzM0Njk1NDM0NTddLCBbMTY0NTIwNTA4My42MTY3NDEyLCAxMjExNCwgMy4yNTY3Nzk2NzA3MTUzMzJdLCBbMTY0NTIwNTA4My44ODMzOTMsIDEyMTMyLCAyLjI3NjYyMDYyNjQ0OTU4NV0sIFsxNjQ1MjA1MDg0LjAyNzk1OSwgMTIxNDEsIDIuMDIwNjAxMDM0MTY0NDI4N10sIFsxNjQ1MjA1MDg0LjQ0OTkwNTIsIDEyMTY4LCAyLjc3NjA5OTQ0MzQzNTY2OV0sIFsxNjQ1MjA1MDg0LjU4MzQ5MTMsIDEyMTc3LCAxLjg4ODkzMzE4MTc2MjY5NTNdLCBbMTY0NTIwNTA4NC44NTgxNDMsIDEyMTk1LCAxLjg5NzkwNTExMTMxMjg2NjJdLCBbMTY0NTIwNTA4NS4yNTMzMzAyLCAxMjIyMiwgMS44MjA4OTgwNTYwMzAyNzM0XSwgWzE2NDUyMDUwODUuMzg2NjA4LCAxMjIzMSwgMS44OTQyNjQyMjExOTE0MDYyXSwgWzE2NDUyMDUwODUuNjUzODY3MiwgMTIyNDksIDEuODcxNDQ2OTY3MTI0OTM5XSwgWzE2NDUyMDUwODYuMTM0MjYzNSwgMTIyODUsIDIuMDkyMzM2MTc3ODI1OTI3N10sIFsxNjQ1MjA1MDg2LjI0OTk5OTgsIDEyMjk0LCAxLjk5NzcwMzQzMzAzNjgwNDJdLCBbMTY0NTIwNTA4Ni4zNjE2MjM1LCAxMjMwMywgMS45Mjg4OTM2ODUzNDA4ODEzXSwgWzE2NDUyMDUwODYuNDczODE5NSwgMTIzMTIsIDEuOTMyNzM2ODczNjI2NzA5XSwgWzE2NDUyMDUwODYuNTgxMSwgMTIzMjEsIDEuODI1NDQwMjg3NTkwMDI2OV0sIFsxNjQ1MjA1MDg3LjE0MTQ1NTQsIDEyMzU3LCAxLjk3MzcyNTU1NzMyNzI3MDVdLCBbMTY0NTIwNTA4Ny4yNTc1MjM4LCAxMjM2NiwgMi4wMjk0Njk3Mjg0Njk4NDg2XSwgWzE2NDUyMDUwODcuNTAxNzc0LCAxMjM4NCwgMS44ODIzMDI0MDM0NTAwMTIyXSwgWzE2NDUyMDUwODcuNjM2MzI2LCAxMjM5MywgMS44NDk2MDkxMzY1ODE0MjFdLCBbMTY0NTIwNTA4OC4xOTUxMDcsIDEyNDI5LCAyLjYzNTg5ODU5MDA4Nzg5MDZdLCBbMTY0NTIwNTA4OC4zMjU0Mzc1LCAxMjQzOCwgMi4zNDYyNTQ4MjU1OTIwNDFdLCBbMTY0NTIwNTA4OC44ODM4MTg0LCAxMjQ3NCwgMS45OTkzMjA5ODM4ODY3MTg4XSwgWzE2NDUyMDUwODguOTk2MDI5MSwgMTI0ODMsIDIuMjIxMjE0NzcxMjcwNzUyXSwgWzE2NDUyMDUwODkuNTI1NDUyMSwgMTI1MTksIDEuODQxODEwOTQxNjk2MTY3XSwgWzE2NDUyMDUwODkuOTUxMTUsIDEyNTQ2LCAxLjk0NTM2NTE5MDUwNTk4MTRdLCBbMTY0NTIwNTA5MC4zNTQ3MjEzLCAxMjU3MywgMS45MzY0NjM3MTM2NDU5MzVdLCBbMTY0NTIwNTA5MC41MDgxOTUsIDEyNTgyLCAxLjgxODYyNTU2OTM0MzU2N10sIFsxNjQ1MjA1MDkwLjc4ODQyODUsIDEyNjAwLCAxLjk3NTE4MTU3OTU4OTg0MzhdLCBbMTY0NTIwNTA5MS4xMzUxMjYsIDEyNjA5LCAyLjAyODcyMTgwOTM4NzIwN10sIFsxNjQ1MjA1MDkxLjU3MzAxNDcsIDEyNjM2LCAxLjg0MDM2OTM0Mzc1NzYyOTRdLCBbMTY0NTIwNTA5MS44MzU3NzUxLCAxMjY1NCwgMi40MDQ5OTk3MzI5NzExOTE0XSwgWzE2NDUyMDUwOTIuOTA5MzgxMiwgMTI3MjYsIDIuMDA2ODQ2NDI3OTE3NDgwNV0sIFsxNjQ1MjA1MDkzLjI0MzA3NSwgMTI3NTMsIDIuMjA3MTQ0NDk4ODI1MDczMl0sIFsxNjQ1MjA1MDkzLjM2MTk0MjUsIDEyNzYyLCAxLjkwODk5NjM0MzYxMjY3MV0sIFsxNjQ1MjA1MDkzLjYyMTY5OTMsIDEyNzgwLCAyLjI2MDAzODYxNDI3MzA3MTNdLCBbMTY0NTIwNTA5My44NDYyMDI5LCAxMjc5OCwgMS44MTQ3MDM4MjIxMzU5MjUzXSwgWzE2NDUyMDUwOTMuOTcyOTgwMywgMTI4MDcsIDEuOTgyNzA3NjE5NjY3MDUzMl0sIFsxNjQ1MjA1MDk1LjE5MDgxMTQsIDEyODg4LCAxLjcxNDk2OTYzNTAwOTc2NTZdLCBbMTY0NTIwNTA5NS4zNDgwNTc3LCAxMjg5NywgMS44OTEzNDcxNjk4NzYwOTg2XSwgWzE2NDUyMDUwOTUuNDY5NjYzLCAxMjkwNiwgMS44MTc5OTUzMDk4Mjk3MTJdLCBbMTY0NTIwNTA5NS41ODI4MTg1LCAxMjkxNSwgMi4xMDUwNTc5NTQ3ODgyMDhdLCBbMTY0NTIwNTA5NS44MjE5OTA3LCAxMjkzMywgMi4xODcyMjQzODgxMjI1NTg2XSwgWzE2NDUyMDUwOTYuMTAzNTI4NSwgMTI5NTEsIDIuMTU4MjYzNjgzMzE5MDkyXSwgWzE2NDUyMDUwOTYuMjM2MjM5LCAxMjk2MCwgMS44OTkxODc0NDU2NDA1NjRdLCBbMTY0NTIwNTA5Ni4zNjE0ODc0LCAxMjk2OSwgMi40ODg5NTkzMTI0Mzg5NjVdLCBbMTY0NTIwNTA5Ni40OTcyOTg3LCAxMjk3OCwgMi4zMzg2NTg1NzEyNDMyODZdLCBbMTY0NTIwNTA5Ni44ODMxODIzLCAxMzAwNSwgMS43Njg4NDEzODU4NDEzNjk2XSwgWzE2NDUyMDUwOTcuMTU4MTMzNywgMTMwMjMsIDEuODUyMjM0MzYzNTU1OTA4Ml0sIFsxNjQ1MjA1MDk3LjI3NTU5NjQsIDEzMDMyLCAxLjgyNjgzOTQ0NzAyMTQ4NDRdLCBbMTY0NTIwNTA5Ny4zOTIyMzM2LCAxMzA0MSwgMS44NTI4MDE2ODA1NjQ4ODA0XSwgWzE2NDUyMDUwOTcuNTIxODM0MSwgMTMwNTAsIDEuNzgwMDU4ODYwNzc4ODA4Nl0sIFsxNjQ1MjA1MDk3LjY0MTQ4NSwgMTMwNTksIDEuNzQ5MTA5OTgzNDQ0MjEzOV0sIFsxNjQ1MjA1MDk3Ljc3NTg5NSwgMTMwNjgsIDEuOTA1OTcwMjE1Nzk3NDI0M10sIFsxNjQ1MjA1MDk3LjkwNTMyMTgsIDEzMDc3LCAyLjAzMjY4NDgwMzAwOTAzM10sIFsxNjQ1MjA1MDk4LjE1NTAxMjgsIDEzMDk1LCAxLjc4NDMxNzM3NDIyOTQzMTJdLCBbMTY0NTIwNTA5OC4yODAzOTg0LCAxMzEwNCwgMS44ODQ3NDkyOTMzMjczMzE1XSwgWzE2NDUyMDUwOTguNDEyOTQyNiwgMTMxMTMsIDEuOTE5NTMxODIyMjA0NTg5OF0sIFsxNjQ1MjA1MDk4LjU1NTcxNTMsIDEzMTIyLCAyLjI5ODUxNDYwNDU2ODQ4MTRdLCBbMTY0NTIwNTA5OC42OTAxODM0LCAxMzEzMSwgMi4yOTM2NzQ5NDU4MzEyOTldLCBbMTY0NTIwNTA5OC44Mjc5MzIsIDEzMTQwLCAxLjc0ODI3MjA2MTM0Nzk2MTRdLCBbMTY0NTIwNTA5OC45NDk5NzQzLCAxMzE0OSwgMS44MTQ1MTMwODcyNzI2NDRdLCBbMTY0NTIwNTA5OS4wNjEzNjA0LCAxMzE1OCwgMS43NTAxMzEzNjg2MzcwODVdLCBbMTY0NTIwNTA5OS4xODI5MTI2LCAxMzE2NywgMS44NDIxNTI1OTU1MjAwMTk1XSwgWzE2NDUyMDUwOTkuMjkyNDI1MiwgMTMxNzYsIDEuNzY2NzI0ODI0OTA1Mzk1NV0sIFsxNjQ1MjA1MDk5LjQwMTU4NjgsIDEzMTg1LCAyLjM5MjA3MjQzOTE5MzcyNTZdLCBbMTY0NTIwNTEwMC4xNDU4MjEzLCAxMzIzOSwgMy4wMzg2MTgwODc3Njg1NTQ3XSwgWzE2NDUyMDUxMDAuNTE2MTA5NywgMTMyNjYsIDIuMDUxMzM4NjcyNjM3OTM5NV0sIFsxNjQ1MjA1MTAwLjY0NTU5ODIsIDEzMjc1LCAyLjIzNTI3NzQxNDMyMTg5OTRdLCBbMTY0NTIwNTEwMC44ODk4NzI4LCAxMzI5MywgMS45NTM2MDE0Nzk1MzAzMzQ1XSwgWzE2NDUyMDUxMDEuMDEwNzIyNCwgMTMzMDIsIDEuODIxNTcxMzUwMDk3NjU2Ml0sIFsxNjQ1MjA1MTAxLjQ5NzA3MzIsIDEzMzM4LCAxLjcyNDYzMzA5NzY0ODYyMDZdLCBbMTY0NTIwNTEwMS44MTk3NDEyLCAxMzM0NywgMS43MzYyNjk4MzE2NTc0MDk3XSwgWzE2NDUyMDUxMDEuOTczMjY2NiwgMTMzNTYsIDEuNzI4Mzc3MTAzODA1NTQyXSwgWzE2NDUyMDUxMDIuMTAxMjMsIDEzMzY1LCAxLjgzNjEwMTUzMTk4MjQyMTldLCBbMTY0NTIwNTEwMi41NDU3OTM4LCAxMzM5MiwgMS44Mzc3MDc1MTk1MzEyNV0sIFsxNjQ1MjA1MTAyLjY2MTg0NiwgMTM0MDEsIDEuODY4NzUxNzY0Mjk3NDg1NF0sIFsxNjQ1MjA1MTAyLjc4MDg0NDcsIDEzNDEwLCAxLjc2MDgyNTk5MTYzMDU1NDJdLCBbMTY0NTIwNTEwMi45MDM5MjkyLCAxMzQxOSwgMS44NTI5Nzg0Njc5NDEyODQyXSwgWzE2NDUyMDUxMDMuMDI4NzQyNiwgMTM0MjgsIDEuNzY0MDc0NTYzOTgwMTAyNV0sIFsxNjQ1MjA1MTAzLjI2OTk2NywgMTM0NDYsIDEuOTg1MjQwOTM2Mjc5Mjk2OV0sIFsxNjQ1MjA1MTAzLjM4ODMxOTUsIDEzNDU1LCAxLjk3MTkzNDE5OTMzMzE5MV0sIFsxNjQ1MjA1MTAzLjk2MTE4MiwgMTM0OTEsIDIuMzA0MzcxMzU2OTY0MTExM10sIFsxNjQ1MjA1MTA0LjA5ODQ0MSwgMTM1MDAsIDIuMjE2MTcyOTMzNTc4NDkxXSwgWzE2NDUyMDUxMDQuMjEyNTEyNywgMTM1MDksIDEuOTE3MzAwODIwMzUwNjQ3XSwgWzE2NDUyMDUxMDQuNDQyNDU4MiwgMTM1MjcsIDEuOTg0NTM4MDc4MzA4MTA1NV0sIFsxNjQ1MjA1MTA0LjgxNTcxNCwgMTM1NTQsIDIuMDM3NTY3MTM4NjcxODc1XSwgWzE2NDUyMDUxMDUuMzQ2NDQ5OSwgMTM1OTAsIDIuMTUyOTgxNTE5Njk5MDk2N10sIFsxNjQ1MjA1MTA1LjQ3ODc4NSwgMTM1OTksIDIuMjUxMDExODQ4NDQ5NzA3XSwgWzE2NDUyMDUxMDUuNjI0MTIxMiwgMTM2MDgsIDEuNzk3NjM2MjcwNTIzMDcxM10sIFsxNjQ1MjA1MTA1LjkxMTE1NTUsIDEzNjI2LCAyLjI3MTcyMjc5MzU3OTEwMTZdLCBbMTY0NTIwNTEwNi4xOTA0MjIsIDEzNjQ0LCAxLjc5NjIzMTI2OTgzNjQyNThdLCBbMTY0NTIwNTEwNi4zMzQ4MDMsIDEzNjUzLCAxLjc1MDExODEzNjQwNTk0NDhdLCBbMTY0NTIwNTEwNy4yOTE2MjM2LCAxMzcxNiwgMi4xMTE0NTg3NzgzODEzNDc3XSwgWzE2NDUyMDUxMDcuNzE3MzIzMywgMTM3NDMsIDEuNzc0OTc1MTgwNjI1OTE1NV0sIFsxNjQ1MjA1MTA3Ljk5NDIyNCwgMTM3NjEsIDEuNzMwMDM3OTI3NjI3NTYzNV0sIFsxNjQ1MjA1MTA4LjI1ODk0NzEsIDEzNzc5LCAxLjk5ODcyNTI5NTA2NjgzMzVdLCBbMTY0NTIwNTEwOC42NjAwMTE1LCAxMzgwNiwgMS44Nzk0NDgyOTQ2Mzk1ODc0XSwgWzE2NDUyMDUxMDguNzg0MjgsIDEzODE1LCAyLjA3Mzk4NDYyMjk1NTMyMjNdLCBbMTY0NTIwNTEwOS4xNjE3NDksIDEzODQyLCAxLjg5ODIzNzQ2NjgxMjEzMzhdLCBbMTY0NTIwNTEwOS4yNzcxMDA2LCAxMzg1MSwgMi4xNDkyMjY0MjcwNzgyNDddLCBbMTY0NTIwNTEwOS41MTQ5ODc3LCAxMzg2OSwgMi4xNjM0NzkwODk3MzY5Mzg1XSwgWzE2NDUyMDUxMDkuNjY0MTgzMSwgMTM4NzgsIDEuODcyNDQ5MTU5NjIyMTkyNF0sIFsxNjQ1MjA1MTEwLjE5OTAxNzMsIDEzOTE0LCAxLjkzNjM1NzI1OTc1MDM2NjJdLCBbMTY0NTIwNTExMC40ODUwNTk3LCAxMzkzMiwgMS45MDM1NTk1NjU1NDQxMjg0XSwgWzE2NDUyMDUxMTAuNjE2MzA2LCAxMzk0MSwgMS44MzI4NTI3MjEyMTQyOTQ0XSwgWzE2NDUyMDUxMTEuMDM4NTA3NSwgMTM5NjgsIDEuOTc3MDU5OTYwMzY1Mjk1NF0sIFsxNjQ1MjA1MTExLjE0NzQyMSwgMTM5NzcsIDIuNTY1NTg5NjY2MzY2NTc3XSwgWzE2NDUyMDUxMTEuMjc3NjE2NSwgMTM5ODYsIDIuNzc5ODk1MDY3MjE0OTY2XSwgWzE2NDUyMDUxMTEuNTI0MDU1LCAxNDAwNCwgMS45NDcxOTQ0NTcwNTQxMzgyXSwgWzE2NDUyMDUxMTEuNzkwOTUzNiwgMTQwMjIsIDEuOTM5ODAzNDgxMTAxOTg5N10sIFsxNjQ1MjA1MTEyLjE1MTgzMDIsIDE0MDQ5LCAxLjg4Nzg3MDY2OTM2NDkyOTJdLCBbMTY0NTIwNTExMi4zODI3MDUyLCAxNDA2NywgMS44MTkzOTE0ODkwMjg5MzA3XSwgWzE2NDUyMDUxMTIuODEyOTgzMywgMTQwODUsIDEuNzk1NzE0NDk3NTY2MjIzMV0sIFsxNjQ1MjA1MTEyLjk2NDI3NiwgMTQwOTQsIDEuOTI5NDY2NDg1OTc3MTcyOV0sIFsxNjQ1MjA1MTEzLjEwMzEzMjcsIDE0MTAzLCAyLjExOTE2NTE4MjExMzY0NzVdLCBbMTY0NTIwNTExMy4zODYyNTYyLCAxNDEyMSwgMS44MDE3NzIzNTYwMzMzMjUyXSwgWzE2NDUyMDUxMTMuNjUzNDUzOCwgMTQxMzksIDEuNzI0OTU5MDE1ODQ2MjUyNF0sIFsxNjQ1MjA1MTEzLjc3MzI1NDIsIDE0MTQ4LCAxLjgzNTcwNTg3NjM1MDQwMjhdLCBbMTY0NTIwNTExMy45MDEwNzYsIDE0MTU3LCAxLjc3MDc5NzQ5MTA3MzYwODRdLCBbMTY0NTIwNTExNC4wNDU5NzEyLCAxNDE2NiwgMS43OTY5MjEzNzI0MTM2MzUzXSwgWzE2NDUyMDUxMTQuNDQwODk0NiwgMTQxOTMsIDEuNzEzMjAxOTk5NjY0MzA2Nl0sIFsxNjQ1MjA1MTE0LjY2MzE5NTgsIDE0MjExLCAxLjkxMzIwNzc2OTM5MzkyMV0sIFsxNjQ1MjA1MTE0Ljc3NTYzNTIsIDE0MjIwLCAxLjg5ODQxMjcwNDQ2Nzc3MzRdLCBbMTY0NTIwNTExNC44OTE4NzIsIDE0MjI5LCAyLjA3OTAzNDMyODQ2MDY5MzRdLCBbMTY0NTIwNTExNC45OTg5NjY3LCAxNDIzOCwgMS45NjE0NTMwODAxNzczMDcxXSwgWzE2NDUyMDUxMTUuMTI5NDQ1MywgMTQyNDcsIDIuMDUyNzI5MzY4MjA5ODM5XSwgWzE2NDUyMDUxMTUuNTA5NTk4NywgMTQyNzQsIDIuNTk4MTk5MTI5MTA0NjE0M10sIFsxNjQ1MjA1MTE2LjEwNzg3MjcsIDE0MzE5LCAyLjA5MTIyMjI4NjIyNDM2NTJdLCBbMTY0NTIwNTExNi43OTQyMzA3LCAxNDM2NCwgMS44MzU3MTM1MDU3NDQ5MzRdLCBbMTY0NTIwNTExNi45MjkyODIsIDE0MzczLCAyLjM2ODY2NzEyNTcwMTkwNDNdLCBbMTY0NTIwNTExNy4wNjExMzM2LCAxNDM4MiwgMi4wOTU5NzM0OTE2Njg3MDFdLCBbMTY0NTIwNTExNy42MjgwMjU1LCAxNDQxOCwgMS44NzgwNTE4NzcwMjE3ODk2XSwgWzE2NDUyMDUxMTcuNzkwNDUyLCAxNDQyNywgMi4xNTEzNjc0MjU5MTg1NzldLCBbMTY0NTIwNTExNy45MjE5MTQ2LCAxNDQzNiwgMS45MjYxNTQ4NTE5MTM0NTIxXSwgWzE2NDUyMDUxMTguODgyOTgyNSwgMTQ0OTksIDEuNzUxOTE1ODEyNDkyMzcwNl0sIFsxNjQ1MjA1MTE5LjAwMDE3ODMsIDE0NTA4LCAxLjcyNjMzODc0NDE2MzUxMzJdLCBbMTY0NTIwNTExOS4yNzg3ODgzLCAxNDUyNiwgMS43OTM2NDUxNDM1MDg5MTExXSwgWzE2NDUyMDUxMTkuMzk3MjM5LCAxNDUzNSwgMS45MDY5OTM5ODUxNzYwODY0XSwgWzE2NDUyMDUxMTkuNTEyNjczOSwgMTQ1NDQsIDEuOTg0MzkyNDA0NTU2Mjc0NF0sIFsxNjQ1MjA1MTE5LjYzODUwNjIsIDE0NTUzLCAyLjI1NTI0NjE2MjQxNDU1MV0sIFsxNjQ1MjA1MTIwLjE4NjE0NjcsIDE0NTg5LCAyLjA0MTA0NDcxMjA2NjY1MDRdLCBbMTY0NTIwNTEyMC40NDc5MzA2LCAxNDYwNywgMi4zMjk5NjIyNTM1NzA1NTY2XSwgWzE2NDUyMDUxMjAuNjc5MDYxLCAxNDYyNSwgMy4wMjM4Mzg1MjAwNTAwNDldLCBbMTY0NTIwNTEyMC45MTE2NDMsIDE0NjQzLCAxLjc2Mzg1MzE5MjMyOTQwNjddLCBbMTY0NTIwNTEyMS4wMjMyMDI0LCAxNDY1MiwgMS44ODkyMDE0MDI2NjQxODQ2XSwgWzE2NDUyMDUxMjEuNDYyNzc3OSwgMTQ2NzksIDEuODk2NjUwNzkxMTY4MjEzXSwgWzE2NDUyMDUxMjEuNTkxNzk0MywgMTQ2ODgsIDEuODgzMTU5MDQxNDA0NzI0MV0sIFsxNjQ1MjA1MTIyLjExMTczNiwgMTQ3MjQsIDEuNjk0NjMwMDI2ODE3MzIxOF0sIFsxNjQ1MjA1MTIyLjI1MzI0NjgsIDE0NzMzLCAxLjc0OTQ3MzIxNDE0OTQ3NV0sIFsxNjQ1MjA1MTIyLjM5MTc4NDIsIDE0NzQyLCAxLjc0NzM5NDY4MDk3Njg2NzddLCBbMTY0NTIwNTEyMi41MTIzOTQ3LCAxNDc1MSwgMS45Mjk2MDk0MTc5MTUzNDQyXSwgWzE2NDUyMDUxMjIuNzY2ODgyNCwgMTQ3NjksIDEuNzM5ODIxNTUzMjMwMjg1Nl0sIFsxNjQ1MjA1MTIyLjg3ODczOSwgMTQ3NzgsIDEuNzk0NDMyMDQ0MDI5MjM1OF0sIFsxNjQ1MjA1MTIzLjYzMzQ4NCwgMTQ4MjMsIDIuMTExODg2OTc4MTQ5NDE0XSwgWzE2NDUyMDUxMjMuNzQwMzkxNSwgMTQ4MzIsIDIuMzA0NDMwNzIzMTkwMzA3Nl0sIFsxNjQ1MjA1MTIzLjk1ODQ3NDQsIDE0ODUwLCAyLjIzNTY0MzYyNTI1OTM5OTRdLCBbMTY0NTIwNTEyNC4xODU4MjA2LCAxNDg2OCwgMi41Mzk4NjcxNjI3MDQ0Njc4XSwgWzE2NDUyMDUxMjQuMjk1NTc0NCwgMTQ4NzcsIDIuMDE2MDMyMjE4OTMzMTA1NV0sIFsxNjQ1MjA1MTI0LjQwNDM0MywgMTQ4ODYsIDEuNjgyNzQ1MDk5MDY3Njg4XSwgWzE2NDUyMDUxMjQuNTI5NDQ2NiwgMTQ4OTUsIDEuODcxNDQ1ODk0MjQxMzMzXSwgWzE2NDUyMDUxMjQuNzg3MDU5NSwgMTQ5MTMsIDIuMDQ4NjI5MDQ1NDg2NDVdLCBbMTY0NTIwNTEyNS4wNjc5OTc3LCAxNDkzMSwgMi4yNDIzMjM2MzcwMDg2NjddLCBbMTY0NTIwNTEyNS4xODcwMzkxLCAxNDk0MCwgMi4zNTU3OTYzMzcxMjc2ODU1XSwgWzE2NDUyMDUxMjUuNTI0NjU3LCAxNDk2NywgMi4wMzcxNTc3NzM5NzE1NTc2XSwgWzE2NDUyMDUxMjUuNzU5ODIzOCwgMTQ5ODUsIDEuOTM3NDA4NDQ3MjY1NjI1XSwgWzE2NDUyMDUxMjYuMDA5MTIsIDE1MDAzLCAyLjI1MTA5OTU4NjQ4NjgxNjRdLCBbMTY0NTIwNTEyNi4zOTI0MTI3LCAxNTAzMCwgMi4wMDQyODI3MTI5MzY0MDE0XSwgWzE2NDUyMDUxMjYuNTEyODU1OCwgMTUwMzksIDIuMDM5MjA0MzU5MDU0NTY1NF0sIFsxNjQ1MjA1MTI3LjA1OTU4MzcsIDE1MDc1LCAxLjcyMDY2NDczOTYwODc2NDZdLCBbMTY0NTIwNTEyNy40NTg5NzI3LCAxNTEwMiwgMS44NTk0NjM5MzAxMzAwMDQ5XSwgWzE2NDUyMDUxMjcuNzEyMDksIDE1MTIwLCAxLjk3Mzc0MzA4MTA5MjgzNDVdLCBbMTY0NTIwNTEyNy44Mzg5OTksIDE1MTI5LCAxLjc5NzU2MzQzMzY0NzE1NThdLCBbMTY0NTIwNTEyNy45NzIzNjg1LCAxNTEzOCwgMS42NzY3OTM5MzI5MTQ3MzM5XSwgWzE2NDUyMDUxMjguMDk3ODAyLCAxNTE0NywgMS43MDA1NDA1NDI2MDI1MzldLCBbMTY0NTIwNTEyOC40OTE5OTEzLCAxNTE3NCwgMS45NDAyMzU5NzI0MDQ0OF0sIFsxNjQ1MjA1MTI4LjYyNjk2MTIsIDE1MTgzLCAxLjc2MzIyMjkzMjgxNTU1MThdLCBbMTY0NTIwNTEyOC43NDI2Mzg4LCAxNTE5MiwgMS45OTk5NzkxMzgzNzQzMjg2XSwgWzE2NDUyMDUxMjguODU0NDY3LCAxNTIwMSwgMS43NDc3NTQwOTY5ODQ4NjMzXSwgWzE2NDUyMDUxMjguOTY1MDY1LCAxNTIxMCwgMS42OTE3MDQ1MTE2NDI0NTZdLCBbMTY0NTIwNTEyOS4wNzM2MTcsIDE1MjE5LCAyLjIxMjIxODUyMzAyNTUxMjddLCBbMTY0NTIwNTEyOS40NDY5NTcsIDE1MjQ2LCAxLjY4NzcyNTY2MzE4NTExOTZdLCBbMTY0NTIwNTEyOS41Njg3MTU2LCAxNTI1NSwgMS43NjIwMTA1NzQzNDA4MjAzXSwgWzE2NDUyMDUxMjkuNzAyMzA2LCAxNTI2NCwgMS43OTc2Nzg3MDkwMzAxNTE0XSwgWzE2NDUyMDUxMjkuOTYyOTU5OCwgMTUyODIsIDEuODcxMjYwNDA0NTg2NzkyXSwgWzE2NDUyMDUxMzAuMDkwMzMyNSwgMTUyOTEsIDEuNzk0ODc4NjAyMDI3ODkzXSwgWzE2NDUyMDUxMzAuMjE1MTQwNiwgMTUzMDAsIDIuMDIxNjMxNDc5MjYzMzA1N10sIFsxNjQ1MjA1MTMwLjM0NDE4NDQsIDE1MzA5LCAyLjAzNjU1NjAwNTQ3NzkwNTNdLCBbMTY0NTIwNTEzMC42MTc1MjU4LCAxNTMyNywgMS44Mjg5NjY0OTgzNzQ5MzldLCBbMTY0NTIwNTEzMC44ODM0NzEzLCAxNTM0NSwgMS43MTUwMzQzNjU2NTM5OTE3XSwgWzE2NDUyMDUxMzEuMjIwMDgxNiwgMTUzNzIsIDEuOTg3NzY3Njk2MzgwNjE1Ml0sIFsxNjQ1MjA1MTMxLjQ5NDI2NTMsIDE1MzkwLCAxLjk3NTg3NTQ5Njg2NDMxODhdLCBbMTY0NTIwNTEzMS42MjM1NDMsIDE1Mzk5LCAxLjY5NTQwMTE5MTcxMTQyNThdLCBbMTY0NTIwNTEzMS43NDgwOTQ2LCAxNTQwOCwgMS43NDQzNjQzODA4MzY0ODY4XSwgWzE2NDUyMDUxMzEuODgwNDAzMywgMTU0MTcsIDEuNzY1NTM3NzM4ODAwMDQ4OF0sIFsxNjQ1MjA1MTMyLjM1NzU2MjgsIDE1NDUzLCAyLjMwNDk4ODg2MTA4Mzk4NDRdLCBbMTY0NTIwNTEzMi42MzEzNzU4LCAxNTQ3MSwgMi4zNzgwOTIyODg5NzA5NDczXSwgWzE2NDUyMDUxMzIuNzU3ODM2NiwgMTU0ODAsIDEuODQ0MzUxNzY4NDkzNjUyM10sIFsxNjQ1MjA1MTMzLjExNDU2OTcsIDE1NTA3LCAxLjc3MjMzNDMzNzIzNDQ5N10sIFsxNjQ1MjA1MTMzLjIyOTcxNTMsIDE1NTE2LCAxLjY5MTkzNjAxNjA4Mjc2MzddLCBbMTY0NTIwNTEzMy4zNDE1OCwgMTU1MjUsIDIuMDM2NTk1MzQ0NTQzNDU3XSwgWzE2NDUyMDUxMzMuNDYxMzMsIDE1NTM0LCAxLjcwNzEzMDA3NDUwMTAzNzZdLCBbMTY0NTIwNTEzNC4yNjY2Mjc2LCAxNTU3OSwgMS45MzM5Njc3MDk1NDEzMjA4XSwgWzE2NDUyMDUxMzUuMzI3OTQyNiwgMTU2NTEsIDIuNjUwNDc2MjE3MjY5ODk3NV0sIFsxNjQ1MjA1MTM1LjQ3OTc4MzgsIDE1NjYwLCAyLjE1MjY2NzUyMjQzMDQyXSwgWzE2NDUyMDUxMzUuNjA3NDg5MywgMTU2NjksIDIuMzY2MTgwNjU4MzQwNDU0XSwgWzE2NDUyMDUxMzYuMDIxNjE3MiwgMTU2OTYsIDIuNjk5ODMzNjMxNTE1NTAzXSwgWzE2NDUyMDUxMzYuMjYwMjgzNywgMTU3MTQsIDMuMDY4NjE1NDM2NTUzOTU1XSwgWzE2NDUyMDUxMzYuMzc2NjExNSwgMTU3MjMsIDMuMDQ2MTQyMzM5NzA2NDIxXSwgWzE2NDUyMDUxMzYuNTA3ODQ5MiwgMTU3MzIsIDMuMDI4NzkzODExNzk4MDk1N10sIFsxNjQ1MjA1MTM2LjY2MTgyMDQsIDE1NzQxLCAyLjc0MDk3OTE5NDY0MTExMzNdLCBbMTY0NTIwNTEzNi44MTU4NjcsIDE1NzUwLCAxLjc0MjMwMDk4NzI0MzY1MjNdLCBbMTY0NTIwNTEzNi45NzMyODk1LCAxNTc1OSwgMS42ODc4MDM5ODM2ODgzNTQ1XSwgWzE2NDUyMDUxMzcuMTMxMDc4NSwgMTU3NjgsIDEuNzM1MjI1NTU4MjgwOTQ0OF0sIFsxNjQ1MjA1MTM3LjQzMTg2MjgsIDE1Nzg2LCAyLjA1Mzc4Nzk0NjcwMTA1XSwgWzE2NDUyMDUxMzcuNTkxMDgzOCwgMTU3OTUsIDEuOTIyMDA1MTc2NTQ0MTg5NV0sIFsxNjQ1MjA1MTM3Ljk4ODYyMjQsIDE1ODIyLCAxLjc5Mjg3MzM4MjU2ODM1OTRdLCBbMTY0NTIwNTEzOC43ODQ3Nzg2LCAxNTg2NywgMS43NDQzMDQxODAxNDUyNjM3XSwgWzE2NDUyMDUxMzguOTQ1MTAzNCwgMTU4NzYsIDEuNzM0MzIwMDQ0NTE3NTE3XSwgWzE2NDUyMDUxMzkuMjAyODU2NSwgMTU4OTQsIDEuODY4OTM3ODQ5OTk4NDc0MV0sIFsxNjQ1MjA1MTM5LjMyMzk1ODYsIDE1OTAzLCAxLjczNDMwMDQ5NDE5NDAzMDhdLCBbMTY0NTIwNTEzOS41ODIyODMzLCAxNTkyMSwgMS42NzYxMDA5NjkzMTQ1NzUyXSwgWzE2NDUyMDUxNDAuNDMxNjMxLCAxNTk4NCwgMS42ODI5NjI2NTYwMjExMTgyXSwgWzE2NDUyMDUxNDAuNTUwNjU3NywgMTU5OTMsIDEuNzUyMDQ3NjU3OTY2NjEzOF0sIFsxNjQ1MjA1MTQwLjY2NTkzMywgMTYwMDIsIDEuNzY3MzUxODY1NzY4NDMyNl0sIFsxNjQ1MjA1MTQxLjA4MzI1MjQsIDE2MDI5LCAxLjg4NDY4OTgwNzg5MTg0NTddLCBbMTY0NTIwNTE0MS4yMjIyNDM1LCAxNjAzOCwgMS42ODM2NDgyMjg2NDUzMjQ3XSwgWzE2NDUyMDUxNDEuNjUzMjI0NSwgMTYwNjUsIDIuMDk1OTkzMDQxOTkyMTg3NV0sIFsxNjQ1MjA1MTQxLjgwMzA2MTUsIDE2MDc0LCAyLjM2MzIxMjEwODYxMjA2MDVdLCBbMTY0NTIwNTE0MS45NjU4MjQ4LCAxNjA4MywgMS45NDY4NjM0MTI4NTcwNTU3XSwgWzE2NDUyMDUxNDIuMDgzMTU0LCAxNjA5MiwgMi4xNTk0NzM4OTYwMjY2MTEzXSwgWzE2NDUyMDUxNDIuMzA5NzEwNywgMTYxMTAsIDEuNzYyOTQ4OTg5ODY4MTY0XSwgWzE2NDUyMDUxNDIuNDQzMDE1LCAxNjExOSwgMS44MjY1MDgxNjQ0MDU4MjI4XSwgWzE2NDUyMDUxNDIuNjY0NDcyNiwgMTYxMzcsIDEuODQzODgxNzI2MjY0OTUzNl0sIFsxNjQ1MjA1MTQyLjkyODA3NzUsIDE2MTU1LCAxLjc2MDI5NTAzMzQ1NDg5NV0sIFsxNjQ1MjA1MTQzLjE5MzIzNzUsIDE2MTczLCAxLjgyNDE5MjA0NzExOTE0MDZdLCBbMTY0NTIwNTE0My4zMzAxMjc1LCAxNjE4MiwgMS43ODg4NDU3Nzc1MTE1OTY3XSwgWzE2NDUyMDUxNDMuNzU2NjE3LCAxNjIwOSwgMS43NDEzMTM0NTc0ODkwMTM3XSwgWzE2NDUyMDUxNDMuODkwNjk3LCAxNjIxOCwgMS43MDM0MDcwNDkxNzkwNzcxXSwgWzE2NDUyMDUxNDQuMDM4NTI4NCwgMTYyMjcsIDEuODg1NzQ2NTk4MjQzNzEzNF0sIFsxNjQ1MjA1MTQ0LjE2MjkyNjQsIDE2MjM2LCAxLjY4MjE2MDI1ODI5MzE1MTldLCBbMTY0NTIwNTE0NC4yODEzMTg3LCAxNjI0NSwgMS43Mjg0ODg1NjQ0OTEyNzJdLCBbMTY0NTIwNTE0NC44MjE5OTIyLCAxNjI4MSwgMi4wMzAwMzYyMTEwMTM3OTRdLCBbMTY0NTIwNTE0NS4zMjMzMTEsIDE2Mjk5LCAxLjcyMjg4MjE1MTYwMzY5ODddLCBbMTY0NTIwNTE0NS44MTI4NDAyLCAxNjMzNSwgMS44MDM2MzE2NjMzMjI0NDg3XSwgWzE2NDUyMDUxNDYuMDQ2NzI3MiwgMTYzNTMsIDIuMzI3NDA5NzQ0MjYyNjk1M10sIFsxNjQ1MjA1MTQ2LjMyODAxNDQsIDE2MzcxLCAxLjY0NDg0MTU1MTc4MDcwMDddLCBbMTY0NTIwNTE0Ni40NTU1MDkyLCAxNjM4MCwgMS44MDM1NDYwNzEwNTI1NTEzXSwgWzE2NDUyMDUxNDYuOTg1ODk4MywgMTY0MTYsIDEuNjY3NTM5MjM4OTI5NzQ4NV0sIFsxNjQ1MjA1MTQ3LjM3OTEzMjcsIDE2NDQzLCAyLjY3NzM1MDUyMTA4NzY0NjVdLCBbMTY0NTIwNTE0Ny40OTc4NzEyLCAxNjQ1MiwgMi4zMTMzNDI1NzEyNTg1NDVdLCBbMTY0NTIwNTE0Ny43NDM5NzU2LCAxNjQ3MCwgMS45NDI3MjYwMTYwNDQ2MTY3XSwgWzE2NDUyMDUxNDcuODkxMzc4NCwgMTY0NzksIDEuODQxMDcyNTU5MzU2Njg5NV0sIFsxNjQ1MjA1MTQ4LjE4NjAyMTMsIDE2NDk3LCAxLjkwNzU4NzQwOTAxOTQ3MDJdLCBbMTY0NTIwNTE0OC4zMzY2MTEzLCAxNjUwNiwgMS43OTg2MTU1NzQ4MzY3MzFdLCBbMTY0NTIwNTE0OC40NjMzMDE3LCAxNjUxNSwgMS44MjE4MTk1NDM4Mzg1MDFdLCBbMTY0NTIwNTE0OC43MzcyOTksIDE2NTMzLCAxLjc1NzU3OTU2NTA0ODIxNzhdLCBbMTY0NTIwNTE0OC44Nzc5NTgzLCAxNjU0MiwgMS43NjA1MTYxNjY2ODcwMTE3XSwgWzE2NDUyMDUxNDkuMDIwOTI1MywgMTY1NTEsIDIuMDgyNjI2MzQyNzczNDM3NV0sIFsxNjQ1MjA1MTQ5Ljg4MDI0ODgsIDE2NjA1LCAyLjAxMDgxNDkwNTE2NjYyNl0sIFsxNjQ1MjA1MTUwLjAwNTUzNDIsIDE2NjE0LCAxLjc2MDkxNTUxNzgwNzAwNjhdLCBbMTY0NTIwNTE1MC4xMjM5NDQzLCAxNjYyMywgMi4zOTA2MTMwNzkwNzEwNDVdLCBbMTY0NTIwNTE1MC4yNTU3MDYsIDE2NjMyLCAyLjQ1NTk2NTI4MDUzMjgzN10sIFsxNjQ1MjA1MTUwLjM5NjgzNTYsIDE2NjQxLCAxLjg1Njk4NTkyNjYyODExMjhdLCBbMTY0NTIwNTE1MC41Mzk0OTc2LCAxNjY1MCwgMS44NjI5NTcwMDA3MzI0MjE5XSwgWzE2NDUyMDUxNTAuNjcxOTk0NCwgMTY2NTksIDIuMDcxODU1MDY4MjA2Nzg3XSwgWzE2NDUyMDUxNTAuNzkzODE2MywgMTY2NjgsIDIuMDE1ODc3NzIzNjkzODQ3N10sIFsxNjQ1MjA1MTUxLjA0NTAwMTMsIDE2Njg2LCAxLjcxMzU4NzA0NTY2OTU1NTddLCBbMTY0NTIwNTE1MS4zNzgxOTA4LCAxNjcxMywgMS43NDc1NDIxNDI4NjgwNDJdLCBbMTY0NTIwNTE1MS44ODM2ODczLCAxNjc0OSwgMS42ODkyMDkzNDIwMDI4Njg3XSwgWzE2NDUyMDUxNTIuNDExNzI4NiwgMTY3ODUsIDEuNjkyNjMwNjQ4NjEyOTc2XSwgWzE2NDUyMDUxNTIuNTU2NTA3MywgMTY3OTQsIDEuODY1MDAxMDgyNDIwMzQ5MV0sIFsxNjQ1MjA1MTUyLjY5MjE2NjMsIDE2ODAzLCAxLjkxNzk2MjY3MDMyNjIzM10sIFsxNjQ1MjA1MTUyLjgyNTQ4OTgsIDE2ODEyLCAxLjg1NTE5Nzc4NzI4NDg1MV0sIFsxNjQ1MjA1MTUzLjM4MDgzNCwgMTY4NDgsIDEuNjg2MTE5NDM3MjE3NzEyNF0sIFsxNjQ1MjA1MTUzLjUxNjAxOTMsIDE2ODU3LCAyLjE4MTUzNjY3NDQ5OTUxMTddLCBbMTY0NTIwNTE1My42NTg3Mjc2LCAxNjg2NiwgMS44MzAyNTg3MjcwNzM2Njk0XSwgWzE2NDUyMDUxNTMuODE3NzM4OCwgMTY4NzUsIDEuODU1ODc0NjU3NjMwOTIwNF0sIFsxNjQ1MjA1MTUzLjkyODU0MSwgMTY4ODQsIDEuOTk5NjExNjE2MTM0NjQzNl0sIFsxNjQ1MjA1MTU0LjAzNDAxMSwgMTY4OTMsIDIuNTMxOTI2NjMxOTI3NDkwMl0sIFsxNjQ1MjA1MTU0LjE0MDU1NjgsIDE2OTAyLCAxLjgwMDUxNTQxMzI4NDMwMThdLCBbMTY0NTIwNTE1NC4zOTExNjIsIDE2OTIwLCAxLjY2NzA3OTQ0ODY5OTk1MTJdLCBbMTY0NTIwNTE1NC41Mjk3NDg0LCAxNjkyOSwgMS44NTE1MDY1OTA4NDMyMDA3XSwgWzE2NDUyMDUxNTQuNzgyOTk1NSwgMTY5NDcsIDEuNzc0MTA3MzM2OTk3OTg1OF1d", + "ok": true, + "headers": [ + [ + "content-type", + "application/json" + ] + ], + "status": 200, + "status_text": "" + }, + "https://localhost:6006/data/plugin/scalars/scalars?run=Feb18_17-21-33_a9c61b465da1&tag=Loss%2Fvalid": { + "data": "W1sxNjQ1MjA0ODk4LjMxMTY5OTQsIDksIDEwNy4yMTUzNzc4MDc2MTcxOV0sIFsxNjQ1MjA0ODk4LjY5NzA4NCwgMzYsIDM5Ljk3NTgzMzg5MjgyMjI2Nl0sIFsxNjQ1MjA0ODk4LjgyMTY2NTUsIDQ1LCAzNC41ODU1MDI2MjQ1MTE3Ml0sIFsxNjQ1MjA0ODk5LjU4MzU1NzYsIDk5LCAzNC40MjM5NjU0NTQxMDE1Nl0sIFsxNjQ1MjA0ODk5LjY5ODMxNDIsIDEwOCwgMzAuNTQ0ODc5OTEzMzMwMDc4XSwgWzE2NDUyMDQ5MDAuMDcwMjcyNywgMTM1LCAyMS42NjMzNjA1OTU3MDMxMjVdLCBbMTY0NTIwNDkwMC4xOTI0NTI3LCAxNDQsIDIxLjQxOTYzNTc3MjcwNTA3OF0sIFsxNjQ1MjA0OTAwLjY1NDcyNTMsIDE3MSwgMTIuNDIwNzgyMDg5MjMzMzk4XSwgWzE2NDUyMDQ5MDEuMDE3OTQzOSwgMTgwLCAxMi40MTUwMDk0OTg1OTYxOTFdLCBbMTY0NTIwNDkwMS4yMDQ5Mjk2LCAxODksIDEwLjIwNzQxMTc2NjA1MjI0Nl0sIFsxNjQ1MjA0OTAxLjUzNjcyMTUsIDIwNywgOC4xOTQ0MjY1MzY1NjAwNTldLCBbMTY0NTIwNDkwMS42NzA2NjY1LCAyMTYsIDExLjgyNTQwNjA3NDUyMzkyNl0sIFsxNjQ1MjA0OTAyLjA0NjY3MDcsIDI0MywgMzMuODU3OTYzNTYyMDExNzJdLCBbMTY0NTIwNDkwMi4xNjI0MTg4LCAyNTIsIDE2LjcyMzkyMDgyMjE0MzU1NV0sIFsxNjQ1MjA0OTAyLjQxNDQ2OCwgMjcwLCAxMi40MjY0MjQwMjY0ODkyNThdLCBbMTY0NTIwNDkwMi45Mzg2MTEzLCAzMDYsIDYuNDI1MDYxNzAyNzI4MjcxNV0sIFsxNjQ1MjA0OTAzLjM0NDA4NCwgMzMzLCAxMS4yOTMxMzc1NTAzNTQwMDRdLCBbMTY0NTIwNDkwMy40NzU2MDU3LCAzNDIsIDEwLjExNTIzNjI4MjM0ODYzM10sIFsxNjQ1MjA0OTAzLjU5OTExNzUsIDM1MSwgNS4zODM3NzgwOTUyNDUzNjFdLCBbMTY0NTIwNDkwMy43MzU1NjcsIDM2MCwgNy4yOTYyOTcwNzMzNjQyNThdLCBbMTY0NTIwNDkwMy44NzI0MzI1LCAzNjksIDUuNTg2NDcxMDgwNzgwMDI5XSwgWzE2NDUyMDQ5MDQuNzUzNzc0NiwgNDMyLCA1LjY3MDQ0NjM5NTg3NDAyM10sIFsxNjQ1MjA0OTA0Ljg4NDQ4NSwgNDQxLCA1LjA3MDc1MTE5MDE4NTU0N10sIFsxNjQ1MjA0OTA1LjAwMTA3MDcsIDQ1MCwgNS4zNzM1OTgwOTg3NTQ4ODNdLCBbMTY0NTIwNDkwNS4yNDIzODYsIDQ2OCwgNS4yNDE0ODc1MDMwNTE3NThdLCBbMTY0NTIwNDkwNS4zNjA3MjEzLCA0NzcsIDUuOTkyNTMwMzQ1OTE2NzQ4XSwgWzE2NDUyMDQ5MDUuNjI4MzM5NSwgNDk1LCA1LjMxMjkwNTc4ODQyMTYzMV0sIFsxNjQ1MjA0OTA1Ljc1NTY2NjMsIDUwNCwgNC45MDc2MjE4NjA1MDQxNV0sIFsxNjQ1MjA0OTA2LjAyNjIxMDgsIDUyMiwgNi40MDU4OTgwOTQxNzcyNDZdLCBbMTY0NTIwNDkwNi4zOTQ4ODE3LCA1NDksIDUuNjc3MTkwMzAzODAyNDldLCBbMTY0NTIwNDkwNi41MjAzNDEsIDU1OCwgMTEuODg2MTQwODIzMzY0MjU4XSwgWzE2NDUyMDQ5MDYuNjM3MTMxNywgNTY3LCA1LjIwMTQ3ODk1ODEyOTg4M10sIFsxNjQ1MjA0OTA2Ljc3MTg4NDQsIDU3NiwgOS45NzM1NDUwNzQ0NjI4OV0sIFsxNjQ1MjA0OTA3LjAzNzEzNDIsIDU5NCwgOS4zNTU5MTQxMTU5MDU3NjJdLCBbMTY0NTIwNDkwNy4xNTYwMDU5LCA2MDMsIDcuMTAwMTQ3NzI0MTUxNjExXSwgWzE2NDUyMDQ5MDcuMjg3NDQ5NCwgNjEyLCA3LjY1NDg1NDI5NzYzNzkzOTVdLCBbMTY0NTIwNDkwNy40MTg3NTEyLCA2MjEsIDYuOTY4ODAzNDA1NzYxNzE5XSwgWzE2NDUyMDQ5MDcuNjkzMTg1MywgNjM5LCA0Ljg5NTI3MzIwODYxODE2NF0sIFsxNjQ1MjA0OTA3LjgxMzU0MTIsIDY0OCwgNi41NTU2MjM1MzEzNDE1NTNdLCBbMTY0NTIwNDkwOC41OTA3OTg0LCA3MDIsIDguNDI4MDU1NzYzMjQ0NjI5XSwgWzE2NDUyMDQ5MDguODQ4ODA2LCA3MjAsIDUuNjc0NzAwMjYwMTYyMzUzNV0sIFsxNjQ1MjA0OTA4Ljk3ODAxOTUsIDcyOSwgNS42MTczNTgyMDc3MDI2MzddLCBbMTY0NTIwNDkwOS4yMjMwOTMsIDc0NywgNi4wNDk2MDUzNjk1Njc4NzFdLCBbMTY0NTIwNDkwOS4zNTA1NTQ1LCA3NTYsIDYuMDYwMzc4NTUxNDgzMTU0XSwgWzE2NDUyMDQ5MDkuNjAyMzA3MywgNzc0LCA0LjkwOTY5MDg1NjkzMzU5NF0sIFsxNjQ1MjA0OTA5LjcxODIwMiwgNzgzLCA0LjY3MjI4MTc0MjA5NTk0N10sIFsxNjQ1MjA0OTEwLjA4NTcyNzcsIDgxMCwgNC45OTAyMzg2NjY1MzQ0MjRdLCBbMTY0NTIwNDkxMC4yMjIyNDE5LCA4MTksIDUuMTYwMjAzNDU2ODc4NjYyXSwgWzE2NDUyMDQ5MTAuODQzODQ2MywgODY0LCA1LjQ3NzQ1MDM3MDc4ODU3NF0sIFsxNjQ1MjA0OTExLjM0MzAzNzEsIDkwMCwgNC4zNDA5MjM3ODYxNjMzM10sIFsxNjQ1MjA0OTExLjYxNjExODcsIDkwOSwgNS42MjY5MzExOTA0OTA3MjNdLCBbMTY0NTIwNDkxMS45OTIwODMzLCA5MzYsIDkuNTA1NTQwODQ3Nzc4MzJdLCBbMTY0NTIwNDkxMi4zNTI0NjY2LCA5NjMsIDEzLjczNjIwOTg2OTM4NDc2Nl0sIFsxNjQ1MjA0OTEyLjQ4MTY5NzYsIDk3MiwgOS4yNjI2MTgwNjQ4ODAzNzFdLCBbMTY0NTIwNDkxMi43NDQxMjQ3LCA5OTAsIDQuNTI1MzA4NjA5MDA4Nzg5XSwgWzE2NDUyMDQ5MTIuODY3MDIzNSwgOTk5LCA1LjE1NzMxNzE2MTU2MDA1OV0sIFsxNjQ1MjA0OTEzLjQxMjkzMTQsIDEwMzUsIDQuMjAzOTUwODgxOTU4MDA4XSwgWzE2NDUyMDQ5MTMuNjY2MDYzMywgMTA1MywgNS4wMzQ0NDQzMzIxMjI4MDNdLCBbMTY0NTIwNDkxNC4yNTY2NTgsIDEwOTgsIDQuMzgxODQ0NTIwNTY4ODQ4XSwgWzE2NDUyMDQ5MTQuNzE4NTQ2LCAxMTM0LCA0LjIzMjc4MDQ1NjU0Mjk2OV0sIFsxNjQ1MjA0OTE0Ljg0MjExNTIsIDExNDMsIDQuMTYxMzIyMTE2ODUxODA3XSwgWzE2NDUyMDQ5MTUuMTE0NDA2LCAxMTYxLCA0LjQwNDc0MTI4NzIzMTQ0NV0sIFsxNjQ1MjA0OTE1LjM3NTkwNSwgMTE3OSwgNS4zMTU5NzcwOTY1NTc2MTddLCBbMTY0NTIwNDkxNS41MTA4OTIsIDExODgsIDQuMzgwNDg3NDQyMDE2NjAyXSwgWzE2NDUyMDQ5MTUuNjM5MTA3LCAxMTk3LCA0LjQ2NjQzMjA5NDU3Mzk3NV0sIFsxNjQ1MjA0OTE1Ljg4MDIyNjQsIDEyMTUsIDQuODI1MDg2NTkzNjI3OTNdLCBbMTY0NTIwNDkxNi4xMjk4MSwgMTIzMywgMy45NTk4MzM2MjE5Nzg3NTk4XSwgWzE2NDUyMDQ5MTYuMjcxMTg3NSwgMTI0MiwgNC4zMTg1Mjk2MDU4NjU0Nzg1XSwgWzE2NDUyMDQ5MTcuMDQ3OTU0LCAxMjk2LCA0Ljg4NjE3Mjc3MTQ1Mzg1N10sIFsxNjQ1MjA0OTE3LjE2MDUwMTIsIDEzMDUsIDYuMDI2MDQ0ODQ1NTgxMDU1XSwgWzE2NDUyMDQ5MTcuNDA4NzcyNSwgMTMyMywgNi45MTE2NDczMTk3OTM3MDFdLCBbMTY0NTIwNDkxNy41MzYwMTg0LCAxMzMyLCA1Ljg4NzIwNzUwODA4NzE1OF0sIFsxNjQ1MjA0OTE3LjkyMDgxMywgMTM1OSwgMy45OTc1OTMxNjQ0NDM5Njk3XSwgWzE2NDUyMDQ5MTguODIzMTk4OCwgMTQyMiwgMy44NzQzMzcxOTYzNTAwOTc3XSwgWzE2NDUyMDQ5MTkuMDU2MTk5MywgMTQ0MCwgNC41NTM5Mjk4MDU3NTU2MTVdLCBbMTY0NTIwNDkxOS4xNzUxMjYsIDE0NDksIDYuMzU2MDQwMDAwOTE1NTI3XSwgWzE2NDUyMDQ5MTkuNDM1NDcxOCwgMTQ2NywgNC4zNzYyNTI2NTEyMTQ2XSwgWzE2NDUyMDQ5MTkuNjk2MzQyMiwgMTQ4NSwgNi44NDA3OTU1MTY5Njc3NzNdLCBbMTY0NTIwNDkxOS45NTU4MzcyLCAxNTAzLCAzLjYwNTMyNTIyMjAxNTM4MV0sIFsxNjQ1MjA0OTIwLjQ2ODc4NzcsIDE1MzksIDYuNTIwNDYyMDM2MTMyODEyNV0sIFsxNjQ1MjA0OTIwLjU4MzY3NDIsIDE1NDgsIDQuMzc3MzU3NDgyOTEwMTU2XSwgWzE2NDUyMDQ5MjAuNzM1MjAzNSwgMTU1NywgNC4xMzE4MzE2NDU5NjU1NzZdLCBbMTY0NTIwNDkyMS4xMjc5NjU3LCAxNTg0LCAzLjgxMDkyMDcxNTMzMjAzMTJdLCBbMTY0NTIwNDkyMS4yNDQ3NjgxLCAxNTkzLCA0LjU1NDU5NjQyNDEwMjc4M10sIFsxNjQ1MjA0OTIxLjQwNDM1ODksIDE2MDIsIDMuOTcyMTMzNjM2NDc0NjA5NF0sIFsxNjQ1MjA0OTIxLjU1NzY3MjUsIDE2MTEsIDQuMDc2MTE0NjU0NTQxMDE2XSwgWzE2NDUyMDQ5MjIuMDIxOTI2LCAxNjI5LCAzLjkzNDc3NDE2MDM4NTEzMl0sIFsxNjQ1MjA0OTIyLjE0NTQ5NjgsIDE2MzgsIDMuOTg4NjI0NTcyNzUzOTA2Ml0sIFsxNjQ1MjA0OTIyLjUyMjM2MTMsIDE2NjUsIDMuNzQ3NTIwNjg1MTk1OTIzXSwgWzE2NDUyMDQ5MjIuNjQzODQ1OCwgMTY3NCwgNC42NTAzOTgyNTQzOTQ1MzFdLCBbMTY0NTIwNDkyMi43NjI2NiwgMTY4MywgMy42NTg0NzA4NjkwNjQzMzFdLCBbMTY0NTIwNDkyMy4xNDI0NDYzLCAxNzEwLCA0LjE1ODAwMjg1MzM5MzU1NV0sIFsxNjQ1MjA0OTIzLjI2NDczMDcsIDE3MTksIDMuNDk0MDM1OTU5MjQzNzc0NF0sIFsxNjQ1MjA0OTIzLjQwMDY1NywgMTcyOCwgNC42MzQ1NzI1MDU5NTA5MjhdLCBbMTY0NTIwNDkyMy41MjA3NTUzLCAxNzM3LCA4LjI3NjQ3NTkwNjM3MjA3XSwgWzE2NDUyMDQ5MjMuOTQzMjQyLCAxNzY0LCA3LjI4MTEwODg1NjIwMTE3Ml0sIFsxNjQ1MjA0OTI0LjMyNzQ5ODQsIDE3OTEsIDMuNDc1Mzg5NzE5MDA5Mzk5NF0sIFsxNjQ1MjA0OTI0LjQ1Nzk5MiwgMTgwMCwgMy42NzAwNTMwMDUyMTg1MDZdLCBbMTY0NTIwNDkyNC41NzkyODY4LCAxODA5LCAzLjk5MTI0MDUwMTQwMzgwODZdLCBbMTY0NTIwNDkyNC44NDE3NzM1LCAxODI3LCA1LjU5ODU2MjI0MDYwMDU4Nl0sIFsxNjQ1MjA0OTI0Ljk3NzE5MjksIDE4MzYsIDMuNTE5NDI3Nzc2MzM2NjddLCBbMTY0NTIwNDkyNS4wOTMwNTI5LCAxODQ1LCAzLjM3Mzc4NDA2NTI0NjU4Ml0sIFsxNjQ1MjA0OTI1LjIyMjkxMDQsIDE4NTQsIDUuOTEyMTg2MTQ1NzgyNDcxXSwgWzE2NDUyMDQ5MjUuNDcxNDE3MiwgMTg3MiwgNC44MDEyODMzNTk1Mjc1ODhdLCBbMTY0NTIwNDkyNS43MDg1OTM4LCAxODkwLCAzLjU3MzQ0ODY1Nzk4OTUwMl0sIFsxNjQ1MjA0OTI1LjkzNDMxOTMsIDE5MDgsIDQuMDg4MDYxODA5NTM5Nzk1XSwgWzE2NDUyMDQ5MjYuMTY3NDY1NywgMTkyNiwgNC4yNjc4MTIyNTIwNDQ2NzhdLCBbMTY0NTIwNDkyNi42NjYyMjkyLCAxOTQ0LCA0LjMyOTQ3ODI2Mzg1NDk4MDVdLCBbMTY0NTIwNDkyNi45MDA1MzUsIDE5NTMsIDMuNzMyNzgxNDEwMjE3Mjg1XSwgWzE2NDUyMDQ5MjcuMTc2NTMzNSwgMTk3MSwgNS4wNzA4ODUxODE0MjcwMDJdLCBbMTY0NTIwNDkyNy4yOTY0NTI4LCAxOTgwLCAzLjkzNDA5MDg1MjczNzQyNjhdLCBbMTY0NTIwNDkyNy40MTE4MzA0LCAxOTg5LCAzLjQzODMwNzUyMzcyNzQxN10sIFsxNjQ1MjA0OTI3LjU0NjM0NzksIDE5OTgsIDMuMDQ0MzY1NjQ0NDU0OTU2XSwgWzE2NDUyMDQ5MjcuNjc3MjM1MSwgMjAwNywgMy44MzcwNjE4ODIwMTkwNDNdLCBbMTY0NTIwNDkyNy45MzYwODEyLCAyMDI1LCA0LjAyMTgyOTEyODI2NTM4MV0sIFsxNjQ1MjA0OTI4LjA1MDI0MzEsIDIwMzQsIDYuMzIxMTUwNzc5NzI0MTIxXSwgWzE2NDUyMDQ5MjguNTg2OTQ4OSwgMjA3MCwgNC4zNDE0MzIwOTQ1NzM5NzVdLCBbMTY0NTIwNDkyOS4yNzM2OTI2LCAyMDk3LCAyLjk1NzM5MjkzMDk4NDQ5N10sIFsxNjQ1MjA0OTI5Ljg4NDgwMzgsIDIxMjQsIDQuNjQwMjQ2ODY4MTMzNTQ1XSwgWzE2NDUyMDQ5MzAuMjYzNTE0LCAyMTQyLCA0LjA0NjM5NDM0ODE0NDUzMV0sIFsxNjQ1MjA0OTMwLjUyMzQ3MjgsIDIxNTEsIDMuNzQyNTY3Nzc3NjMzNjY3XSwgWzE2NDUyMDQ5MzAuNzEyMTgxMywgMjE2MCwgOS40MzQxMTQ0NTYxNzY3NThdLCBbMTY0NTIwNDkzMS4xNDM3ODEyLCAyMTc4LCAzLjY5MjI3NzQzMTQ4ODAzN10sIFsxNjQ1MjA0OTMxLjM3NzY1MSwgMjE4NywgMy4yNzEyOTA1NDA2OTUxOTA0XSwgWzE2NDUyMDQ5MzEuODk0NzkxLCAyMjA1LCAzLjY4OTQ3MjQzNjkwNDkwNzJdLCBbMTY0NTIwNDkzMi4xMDA3NzA1LCAyMjE0LCA0LjI0NTYzNTAzMjY1MzgwOV0sIFsxNjQ1MjA0OTMyLjM3MTYyMzgsIDIyMjMsIDYuMTU4MzAyMzA3MTI4OTA2XSwgWzE2NDUyMDQ5MzIuNTU0MjQ0MywgMjIzMiwgMy4zNDA1NDIwNzgwMTgxODg1XSwgWzE2NDUyMDQ5MzMuNTI2MDIwNSwgMjI3NywgNC4xNDk3ODc0MjU5OTQ4NzNdLCBbMTY0NTIwNDkzMy42NTEzMzU1LCAyMjg2LCAzLjMzOTQyMDA4MDE4NDkzNjVdLCBbMTY0NTIwNDkzMy43NjM5MjE3LCAyMjk1LCAzLjUzMDA1MTk0NjY0MDAxNDZdLCBbMTY0NTIwNDkzNC4xMDYwODIsIDIzMjIsIDIuNTI3NTU5NTE4ODE0MDg3XSwgWzE2NDUyMDQ5MzQuMjIxNjk1NywgMjMzMSwgMy4wNTkwNzIyNTYwODgyNTddLCBbMTY0NTIwNDkzNC4zMzE4NTcyLCAyMzQwLCA0LjI2NjM1MzYwNzE3NzczNF0sIFsxNjQ1MjA0OTM0LjQ0NDQzMzUsIDIzNDksIDMuNDMxNzA1MjM2NDM0OTM2NV0sIFsxNjQ1MjA0OTM0LjY5MjE1ODUsIDIzNjcsIDMuMjk2ODQ0NDgyNDIxODc1XSwgWzE2NDUyMDQ5MzUuOTA4MTA1NCwgMjQzOSwgNC4xMTU4NjY2NjEwNzE3NzddLCBbMTY0NTIwNDkzNi4wMzg0MzcxLCAyNDQ4LCAzLjY1Njg5MzQ5MTc0NDk5NV0sIFsxNjQ1MjA0OTM2LjcwNTM0NjYsIDI0NzUsIDMuMzk5OTI3NjE2MTE5Mzg0OF0sIFsxNjQ1MjA0OTM2Ljk1OTI1NDUsIDI0ODQsIDMuOTg2MzAwNzA2ODYzNDAzM10sIFsxNjQ1MjA0OTM3LjIxMzA0MTgsIDI0OTMsIDMuNjQ2ODk2NjAwNzIzMjY2Nl0sIFsxNjQ1MjA0OTM3LjYwMTQzNzMsIDI1MTEsIDMuMDM1ODYyMjA3NDEyNzE5N10sIFsxNjQ1MjA0OTM4LjEyMjU3MywgMjUyOSwgNi41MzYyMzUzMzI0ODkwMTRdLCBbMTY0NTIwNDkzOC41NTE5OTA3LCAyNTQ3LCAzLjM1MzczNjg3NzQ0MTQwNjJdLCBbMTY0NTIwNDkzOC43MTczNjQsIDI1NTYsIDIuOTE1MjcyNDc0Mjg4OTQwNF0sIFsxNjQ1MjA0OTM5LjE0NjI5MzIsIDI1NzQsIDMuODcwNjYzMTY2MDQ2MTQyNl0sIFsxNjQ1MjA0OTM5LjYzMDcxNTgsIDI1OTIsIDMuNTU1MDAwMDY2NzU3MjAyXSwgWzE2NDUyMDQ5MzkuNzY0OTAyOCwgMjYwMSwgNS40MTQ2OTM4MzIzOTc0NjFdLCBbMTY0NTIwNDk0MC4wMjg2NiwgMjYxOSwgMy42OTA2MjU5MDU5OTA2MDA2XSwgWzE2NDUyMDQ5NDAuNjQyMjg2LCAyNjY0LCAyLjY4OTMxNzIyNjQwOTkxMl0sIFsxNjQ1MjA0OTQwLjc4OTI3ODUsIDI2NzMsIDMuOTUwNzQ0ODY3MzI0ODI5XSwgWzE2NDUyMDQ5NDAuOTMyNjM4MiwgMjY4MiwgMi45OTY1MTY5NDI5Nzc5MDUzXSwgWzE2NDUyMDQ5NDEuMDg1NDM5LCAyNjkxLCAzLjQ4NzA3MzY1OTg5Njg1MDZdLCBbMTY0NTIwNDk0MS4xOTc1MjQ1LCAyNzAwLCAyLjYxNDA4MDkwNTkxNDMwNjZdLCBbMTY0NTIwNDk0MS43OTcwMTIzLCAyNzQ1LCA0LjEzMDY1MTk1MDgzNjE4Ml0sIFsxNjQ1MjA0OTQyLjA3OTU3MjcsIDI3NjMsIDMuNDc0MjEwOTc3NTU0MzIxM10sIFsxNjQ1MjA0OTQyLjE5NjE0MTIsIDI3NzIsIDQuNTE0OTAwNjg0MzU2Njg5NV0sIFsxNjQ1MjA0OTQyLjMyOTA0ODIsIDI3ODEsIDIuNzQ4OTkyNjgxNTAzMjk2XSwgWzE2NDUyMDQ5NDIuNDQ0NDQzNywgMjc5MCwgNy42ODQxODM1OTc1NjQ2OTddLCBbMTY0NTIwNDk0Mi44NDA1MTU2LCAyODE3LCAyLjczMzkxNTA5MDU2MDkxM10sIFsxNjQ1MjA0OTQyLjk3NTAwMjMsIDI4MjYsIDQuOTg5NTQzOTE0Nzk0OTIyXSwgWzE2NDUyMDQ5NDMuMzg1ODMzNywgMjg1MywgNS4wMDAzMDA0MDc0MDk2NjhdLCBbMTY0NTIwNDk0My42NzAzODA2LCAyODcxLCAyLjgzODU3MDU5NDc4NzU5NzddLCBbMTY0NTIwNDk0My44MjE1MTEsIDI4ODAsIDIuNDcyOTkyMTgxNzc3OTU0XSwgWzE2NDUyMDQ5NDQuMTk3NDY3LCAyOTA3LCAyLjYyMjQ2MTc5NTgwNjg4NDhdLCBbMTY0NTIwNDk0NC40NTExMTc1LCAyOTI1LCA1LjAyMDE4OTc2MjExNTQ3ODVdLCBbMTY0NTIwNDk0NS4wODMzNDMsIDI5NzAsIDMuMDc1ODM4MDg4OTg5MjU4XSwgWzE2NDUyMDQ5NDUuMjA4MjcyNywgMjk3OSwgNC4xNzIxNDQ4ODk4MzE1NDNdLCBbMTY0NTIwNDk0NS4zNDMzNzUyLCAyOTg4LCAyLjc3NjE5OTgxNzY1NzQ3MDddLCBbMTY0NTIwNDk0NS40Njk1MzEsIDI5OTcsIDMuMjU3Mzc3ODYyOTMwMjk4XSwgWzE2NDUyMDQ5NDUuNTgyMjg4MywgMzAwNiwgMy44MTY0ODU2NDMzODY4NDFdLCBbMTY0NTIwNDk0Ni4yOTM0NTA4LCAzMDQyLCAzLjEyNzA2MDQxMzM2MDU5NTddLCBbMTY0NTIwNDk0Ni40NjQzMDA5LCAzMDUxLCAzLjI5MjA2NzI4OTM1MjQxN10sIFsxNjQ1MjA0OTQ2LjcyMDI0ODUsIDMwNjksIDMuMzU0MDM5NDMwNjE4Mjg2XSwgWzE2NDUyMDQ5NDcuMTExNTU4LCAzMDk2LCA0LjM2OTM2MTQwMDYwNDI0OF0sIFsxNjQ1MjA0OTQ3LjI1NjY0NTQsIDMxMDUsIDMuNDAxNjMxMzU1Mjg1NjQ0NV0sIFsxNjQ1MjA0OTQ3LjU4Mjg1MSwgMzExNCwgMi43NzEzNDY4MDc0Nzk4NTg0XSwgWzE2NDUyMDQ5NDcuNjkzOTEzNywgMzEyMywgMi42Mjk4MDQxMzQzNjg4OTY1XSwgWzE2NDUyMDQ5NDcuOTI1MjA4OCwgMzE0MSwgNC41ODYyMDgzNDM1MDU4NTldLCBbMTY0NTIwNDk0OC4xNjEyNTkyLCAzMTU5LCAzLjcyMjU3MTg0OTgyMjk5OF0sIFsxNjQ1MjA0OTQ4LjM5ODQ1NjYsIDMxNzcsIDUuNDY1ODk4OTkwNjMxMTAzNV0sIFsxNjQ1MjA0OTQ4LjUyMjU2LCAzMTg2LCA2LjY4MzIyOTkyMzI0ODI5MV0sIFsxNjQ1MjA0OTQ4LjYzMDkwNCwgMzE5NSwgNy4wNjY0MDc2ODA1MTE0NzVdLCBbMTY0NTIwNDk0OC43MzkxOTUzLCAzMjA0LCA0LjQxMjA5MDMwMTUxMzY3Ml0sIFsxNjQ1MjA0OTQ5LjA5ODIyMTUsIDMyMzEsIDUuOTM5MDE5NjgwMDIzMTkzXSwgWzE2NDUyMDQ5NDkuMzc4Mjk3LCAzMjQ5LCAzLjUxNTQ5NTA2MTg3NDM4OTZdLCBbMTY0NTIwNDk0OS42MDQ3OTE0LCAzMjY3LCAyLjczNzA3Mzg5ODMxNTQyOTddLCBbMTY0NTIwNDk0OS43MTA0NDYsIDMyNzYsIDQuMjkwODU4NzQ1NTc0OTUxXSwgWzE2NDUyMDQ5NDkuODM4MTkxNSwgMzI4NSwgNC4zNzEzMTI2MTgyNTU2MTVdLCBbMTY0NTIwNDk0OS45NjQ3OTEzLCAzMjk0LCAyLjg2NTYyMzk1MDk1ODI1Ml0sIFsxNjQ1MjA0OTUwLjA2OTc5NCwgMzMwMywgMi40Mzk5OTE5NTA5ODg3Njk1XSwgWzE2NDUyMDQ5NTAuMTgwODYzNCwgMzMxMiwgMi45MDcwMzA1ODI0Mjc5Nzg1XSwgWzE2NDUyMDQ5NTAuMzAwNDcxMywgMzMyMSwgMy44OTQ0NTE4NTY2MTMxNTldLCBbMTY0NTIwNDk1MS4xMTUxMTY0LCAzMzc1LCAyLjc1OTUxMTk0NzYzMTgzNl0sIFsxNjQ1MjA0OTUxLjUyODY0MSwgMzQwMiwgMi42Njc5NjQyMjAwNDY5OTddLCBbMTY0NTIwNDk1MS42Njc0NjU0LCAzNDExLCAyLjkxMjYyNzQ1ODU3MjM4NzddLCBbMTY0NTIwNDk1Mi4yNDE2NjUxLCAzNDQ3LCAzLjE4MjIzNzg2MzU0MDY0OTRdLCBbMTY0NTIwNDk1Mi42NDU4NzUsIDM0NzQsIDMuMDU0MTI1Nzg1ODI3NjM2N10sIFsxNjQ1MjA0OTUyLjc4MzgzMTEsIDM0ODMsIDMuMTI0NTg5NDQzMjA2Nzg3XSwgWzE2NDUyMDQ5NTMuMTYxMzc0NiwgMzUxMCwgNS40MDI5NjUwNjg4MTcxMzldLCBbMTY0NTIwNDk1My4yODI1NzQsIDM1MTksIDguODg4MzU1MjU1MTI2OTUzXSwgWzE2NDUyMDQ5NTMuNDAzMTQxLCAzNTI4LCAzLjk1NjE2OTM2NjgzNjU0OF0sIFsxNjQ1MjA0OTUzLjUyMTExNjcsIDM1MzcsIDIuNTQyODY4MTM3MzU5NjE5XSwgWzE2NDUyMDQ5NTMuNjUxNTQsIDM1NDYsIDMuMTg1NDUwMzE1NDc1NDY0XSwgWzE2NDUyMDQ5NTMuNzY4MjQyMSwgMzU1NSwgMi4zMzQ5NDI4MTc2ODc5ODgzXSwgWzE2NDUyMDQ5NTMuODk1MzMxMSwgMzU2NCwgMy45MDY0NDUyNjQ4MTYyODRdLCBbMTY0NTIwNDk1NC4wMjYyMzI3LCAzNTczLCA0Ljg4MTg1MzEwMzYzNzY5NV0sIFsxNjQ1MjA0OTU0LjE3Mzk0OCwgMzU4MiwgOC43MTczMDYxMzcwODQ5NjFdLCBbMTY0NTIwNDk1NC4zMTUxOTIyLCAzNTkxLCAyLjc4NTM0MTAyNDM5ODgwMzddLCBbMTY0NTIwNDk1NC40NTA1MDYyLCAzNjAwLCAzLjY0MTU2Mzg5MjM2NDUwMl0sIFsxNjQ1MjA0OTU0Ljc0MDk4NjMsIDM2MTgsIDMuMjc3MjIwMjQ5MTc2MDI1NF0sIFsxNjQ1MjA0OTU0Ljg1Njk3NTMsIDM2MjcsIDMuMDMzNDI4NjY4OTc1ODNdLCBbMTY0NTIwNDk1NS4xMzMzNTkyLCAzNjQ1LCAyLjQzODg4NTIxMTk0NDU4XSwgWzE2NDUyMDQ5NTUuNDAwOTE1NCwgMzY2MywgNS4wOTg1ODg0NjY2NDQyODddLCBbMTY0NTIwNDk1NS42NjM5MjMzLCAzNjgxLCAyLjM1NDk2NDczMzEyMzc3OTNdLCBbMTY0NTIwNDk1NS43ODQ4MjM3LCAzNjkwLCAyLjg3NzA3MTM4MDYxNTIzNDRdLCBbMTY0NTIwNDk1Ni4xODkyNDUyLCAzNzE3LCAzLjM4NDk2NzU2NTUzNjQ5OV0sIFsxNjQ1MjA0OTU2LjMxMjMyNTUsIDM3MjYsIDMuODQ4MjcxODQ2NzcxMjQwMl0sIFsxNjQ1MjA0OTU2LjQzMDU2MjMsIDM3MzUsIDIuODk3NjU0NzcxODA0ODA5Nl0sIFsxNjQ1MjA0OTU2LjU0ODM5MDIsIDM3NDQsIDYuNDk4NTMzMjQ4OTAxMzY3XSwgWzE2NDUyMDQ5NTYuOTUxNTg0MywgMzc3MSwgNC4xNDg5NzM0NjQ5NjU4Ml0sIFsxNjQ1MjA0OTU3LjM1NjYwMzEsIDM3OTgsIDEzLjY2MjQ0MjIwNzMzNjQyNl0sIFsxNjQ1MjA0OTU3LjUwNDk3MzYsIDM4MDcsIDMuNDgxMzUwMTgzNDg2OTM4NV0sIFsxNjQ1MjA0OTU3Ljg4NTA0MTUsIDM4MzQsIDIuNTIxMDM4MDU1NDE5OTIyXSwgWzE2NDUyMDQ5NTguMTk1Nzk2NSwgMzg0MywgNC40MTE3MDI2MzI5MDQwNTNdLCBbMTY0NTIwNDk1OC42NTc4NzIsIDM4NzksIDUuNzcxNjM2NDg2MDUzNDY3XSwgWzE2NDUyMDQ5NTguNzkwMTY3MywgMzg4OCwgMy4yNTg0MzAwMDQxMTk4NzNdLCBbMTY0NTIwNDk1OS4xOTc3MTY3LCAzOTE1LCA0LjA1OTk5OTk0Mjc3OTU0MV0sIFsxNjQ1MjA0OTU5LjM1MDc2NzYsIDM5MjQsIDYuMzMzODU4MDEzMTUzMDc2XSwgWzE2NDUyMDQ5NTkuNDkyMjAyNSwgMzkzMywgMy45ODA5Nzg3MjczNDA2OTgyXSwgWzE2NDUyMDQ5NTkuNTk4NDQxMSwgMzk0MiwgMi45MDUxNzIzNDgwMjI0NjFdLCBbMTY0NTIwNDk1OS43MTE0Mjk2LCAzOTUxLCAzLjQ0MjgxMjkxOTYxNjY5OV0sIFsxNjQ1MjA0OTU5LjgyODgxMjYsIDM5NjAsIDIuNDAxMjA1NTM5NzAzMzY5XSwgWzE2NDUyMDQ5NTkuOTg5OTg5MywgMzk2OSwgNC4wMTQxMTE1MTg4NTk4NjNdLCBbMTY0NTIwNDk2MC4xMzMwMjM3LCAzOTc4LCAyLjU2MzA0NjQ1NTM4MzMwMV0sIFsxNjQ1MjA0OTYwLjQwOTMxNywgMzk5NiwgMy41MjA1MDA4OTgzNjEyMDZdLCBbMTY0NTIwNDk2MC41NDU5NDQ3LCA0MDA1LCAyLjM4MzkxNzU3MDExNDEzNTddLCBbMTY0NTIwNDk2MC42OTcyODIsIDQwMTQsIDIuNDkwOTg2MTA4Nzc5OTA3Ml0sIFsxNjQ1MjA0OTYwLjgyNzUyOTQsIDQwMjMsIDIuNzg3MjYzODcwMjM5MjU4XSwgWzE2NDUyMDQ5NjEuMzc1NDM2OCwgNDA1OSwgMi4yNjU3MTQ2NDUzODU3NDJdLCBbMTY0NTIwNDk2MS41MTY1NzQsIDQwNjgsIDIuNDk5NDI3NTU2OTkxNTc3XSwgWzE2NDUyMDQ5NjEuNjYxODAwOSwgNDA3NywgNC41OTk5OTUxMzYyNjA5ODZdLCBbMTY0NTIwNDk2MS43OTU2OTIsIDQwODYsIDIuMjY4MTkwODYwNzQ4MjkxXSwgWzE2NDUyMDQ5NjEuOTQwMDkyMywgNDA5NSwgMi45MDg2Njg1MTgwNjY0MDYyXSwgWzE2NDUyMDQ5NjIuMjE3NzQ5NCwgNDExMywgMy4wNTMxNDQ0NTQ5NTYwNTQ3XSwgWzE2NDUyMDQ5NjIuNDgxNDE1MywgNDEzMSwgMi4zOTc0MzM3NTc3ODE5ODI0XSwgWzE2NDUyMDQ5NjIuNzU0NzgzMiwgNDE0OSwgMi45MDA4NzY5OTg5MDEzNjddLCBbMTY0NTIwNDk2Mi45MDQ0MzA2LCA0MTU4LCAyLjM1NTM3MzYyMDk4NjkzODVdLCBbMTY0NTIwNDk2My4wMjMwNDEyLCA0MTY3LCAyLjY4MTIwNzQxODQ0MTc3MjVdLCBbMTY0NTIwNDk2My4yODA1OTEsIDQxODUsIDQuMzY3Mjg3NjM1ODAzMjIzXSwgWzE2NDUyMDQ5NjMuMzk5NjA5NiwgNDE5NCwgMi42MDQxODM0MzU0NDAwNjM1XSwgWzE2NDUyMDQ5NjMuNTQ1MzA5LCA0MjAzLCA1LjQxOTU1MTg0OTM2NTIzNF0sIFsxNjQ1MjA0OTYzLjgwOTQ4MTQsIDQyMjEsIDIuMjAyNjMxNzExOTU5ODM5XSwgWzE2NDUyMDQ5NjQuMTA0NzIzMiwgNDIzOSwgMi40NDAxODUzMDg0NTY0MjFdLCBbMTY0NTIwNDk2NC41OTE3OTMzLCA0Mjc1LCAzLjI4MTEwMjg5NTczNjY5NDNdLCBbMTY0NTIwNDk2NC43MTg3MjMsIDQyODQsIDIuNjcyMTI5NjMxMDQyNDgwNV0sIFsxNjQ1MjA0OTY1LjE1MjQsIDQzMTEsIDIuMjgyODI1NzA4Mzg5MjgyMl0sIFsxNjQ1MjA0OTY1LjQ3ODQ4NjMsIDQzMjAsIDMuMTM2OTEzMDYxMTQxOTY3OF0sIFsxNjQ1MjA0OTY1Ljg1OTQ4NTEsIDQzMjksIDQuNDk4MjYzMzU5MDY5ODI0XSwgWzE2NDUyMDQ5NjYuMDAxNzQzLCA0MzM4LCAyLjYxNDI2NDcyNjYzODc5NF0sIFsxNjQ1MjA0OTY2LjE0NjgxOSwgNDM0NywgMy4wNDc5NDg4MzcyODAyNzM0XSwgWzE2NDUyMDQ5NjYuMjgyMDUyLCA0MzU2LCAyLjc1MDQ3MjU0NTYyMzc3OTNdLCBbMTY0NTIwNDk2Ni43MDQxODY3LCA0MzY1LCAyLjU2NzQ2MjY4MjcyMzk5OV0sIFsxNjQ1MjA0OTY3LjMzODg2ODEsIDQzODMsIDEyLjc5MzY1MDYyNzEzNjIzXSwgWzE2NDUyMDQ5NjcuNTAzNjQxLCA0MzkyLCAyLjg5NTA1NzY3ODIyMjY1NjJdLCBbMTY0NTIwNDk2Ny42MzEyNzk3LCA0NDAxLCAzLjEwMDM1MTgxMDQ1NTMyMjNdLCBbMTY0NTIwNDk2Ny45MTQ0Njc4LCA0NDEwLCAyLjU5OTA5NDg2NzcwNjI5OV0sIFsxNjQ1MjA0OTY4LjYwMDg0ODcsIDQ0MjgsIDIuNzMwMTUzNTYwNjM4NDI3N10sIFsxNjQ1MjA0OTY4Ljk4NjQ3NzksIDQ0NTUsIDIuNjU5NDgzNDMyNzY5Nzc1NF0sIFsxNjQ1MjA0OTY5LjEwOTY4ODUsIDQ0NjQsIDMuNzk3MzUxNTk4NzM5NjI0XSwgWzE2NDUyMDQ5NjkuNDY5MDc3NiwgNDQ5MSwgMi4zNTQxNTM2MzMxMTc2NzZdLCBbMTY0NTIwNDk2OS44NzIxODAyLCA0NTE4LCA1Ljc2MTUyMTgxNjI1MzY2Ml0sIFsxNjQ1MjA0OTY5Ljk4NjUzMzksIDQ1MjcsIDMuNzAwMzg2MDQ3MzYzMjgxMl0sIFsxNjQ1MjA0OTcwLjExMDQ1NzcsIDQ1MzYsIDIuMjQyMzcyMDM1OTgwMjI0Nl0sIFsxNjQ1MjA0OTcwLjQ2MzAwNzcsIDQ1NjMsIDMuMDE5Mjc1OTAzNzAxNzgyMl0sIFsxNjQ1MjA0OTcwLjg3ODIwNjcsIDQ1ODEsIDIuNDMwODc3MjA4NzA5NzE3XSwgWzE2NDUyMDQ5NzAuOTg4ODEyNywgNDU5MCwgMy4xMTIyOTYzNDI4NDk3MzE0XSwgWzE2NDUyMDQ5NzEuMDk4OTcxOCwgNDU5OSwgNC4xNDczNzYwNjA0ODU4NF0sIFsxNjQ1MjA0OTcxLjIwNjUwMzIsIDQ2MDgsIDIuNDAxNTQ5MzM5Mjk0NDMzNl0sIFsxNjQ1MjA0OTcxLjMxMzIzODYsIDQ2MTcsIDQuMTgyNzEyNTU0OTMxNjQxXSwgWzE2NDUyMDQ5NzEuNDI0Njk3MiwgNDYyNiwgMy43NDU5MzE4NjM3ODQ3OV0sIFsxNjQ1MjA0OTcxLjU2MjE1MDUsIDQ2MzUsIDMuMDA5MzI4MTI2OTA3MzQ4Nl0sIFsxNjQ1MjA0OTcxLjk2NjcwOTEsIDQ2NjIsIDIuNDU3NzQyOTI5NDU4NjE4XSwgWzE2NDUyMDQ5NzIuMTA5MTI0NCwgNDY3MSwgMi4zNDc5NzMzNDY3MTAyMDVdLCBbMTY0NTIwNDk3Mi4yMzk4MjcyLCA0NjgwLCAzLjEwNDU4ODk4NTQ0MzExNTJdLCBbMTY0NTIwNDk3Mi4zNzQ5MjYzLCA0Njg5LCAzLjI2NDE5OTI1Njg5Njk3MjddLCBbMTY0NTIwNDk3Mi43NjI4MjQ4LCA0NzE2LCA2LjA2NjE4MzU2NzA0NzExOV0sIFsxNjQ1MjA0OTczLjY3ODU3LCA0Nzc5LCA1LjIwMDQ2MDkxMDc5NzExOV0sIFsxNjQ1MjA0OTc0LjA3MjY2MTksIDQ4MDYsIDMuMzMyNDE5ODcyMjgzOTM1NV0sIFsxNjQ1MjA0OTc0LjE5NTExOTYsIDQ4MTUsIDMuMzcxMjU0OTIwOTU5NDcyN10sIFsxNjQ1MjA0OTc0LjQ3MTAxMiwgNDgzMywgMi4xNDU1MDEzNzUxOTgzNjQzXSwgWzE2NDUyMDQ5NzQuNjA3Nzc4MywgNDg0MiwgMi4xNjUyMDYxOTM5MjM5NV0sIFsxNjQ1MjA0OTc0Ljc0Mzk1NzgsIDQ4NTEsIDIuNTA0NTQ0MjU4MTE3Njc2XSwgWzE2NDUyMDQ5NzQuODY4OTk2NiwgNDg2MCwgMi43MTkwNTA0MDc0MDk2NjhdLCBbMTY0NTIwNDk3NS4wMDQ2NTIzLCA0ODY5LCAyLjU5NzQzNTcxMjgxNDMzMV0sIFsxNjQ1MjA0OTc1LjI5MTgwNTcsIDQ4ODcsIDIuNjQ1NDU3NzQ0NTk4Mzg4N10sIFsxNjQ1MjA0OTc1LjQwODM1NzksIDQ4OTYsIDIuMTU0MTYwOTc2NDA5OTEyXSwgWzE2NDUyMDQ5NzUuNTE5NzgyNSwgNDkwNSwgMi45MTE0OTE4NzA4ODAxMjddLCBbMTY0NTIwNDk3NS44MDk4NzMsIDQ5MjMsIDQuMjUwMjIyMjA2MTE1NzIzXSwgWzE2NDUyMDQ5NzUuOTM0NDkyLCA0OTMyLCAyLjQ3NTU4MzA3NjQ3NzA1MV0sIFsxNjQ1MjA0OTc2LjI4ODI5NTcsIDQ5NTksIDIuNDcyMTE4NjE2MTA0MTI2XSwgWzE2NDUyMDQ5NzYuNTE2MzU3NCwgNDk3NywgMi4yMjg1Mzg3NTE2MDIxNzNdLCBbMTY0NTIwNDk3Ni43NzIyNzQzLCA0OTk1LCAyLjcxODUyNTE3MTI3OTkwNzJdLCBbMTY0NTIwNDk3Ni45MDE4MTY4LCA1MDA0LCAyLjY2NzczNjUzMDMwMzk1NV0sIFsxNjQ1MjA0OTc3LjAxNjE5OTgsIDUwMTMsIDIuNjM2MzAzNjYzMjUzNzg0XSwgWzE2NDUyMDQ5NzcuOTAwMTY1OCwgNTA2NywgMi40NTQ3MzcxODY0MzE4ODQ4XSwgWzE2NDUyMDQ5NzguMDQyMjU4MywgNTA3NiwgMi40NzI5MzAxOTI5NDczODc3XSwgWzE2NDUyMDQ5NzguMTg5OTY3OSwgNTA4NSwgMi40NjgyMjkyOTM4MjMyNDJdLCBbMTY0NTIwNDk3OC43MTMxNDIyLCA1MTIxLCAyLjU5MDY1ODQyNjI4NDc5XSwgWzE2NDUyMDQ5NzguODM1MDI0NCwgNTEzMCwgNS40Nzk2NDA0ODM4NTYyMDFdLCBbMTY0NTIwNDk3OS4xMTA5NTYyLCA1MTQ4LCAyLjY1Mzg5Mzk0NzYwMTMxODRdLCBbMTY0NTIwNDk3OS4zODAxNjQ0LCA1MTY2LCAzLjMzMzM4Mzc5ODU5OTI0M10sIFsxNjQ1MjA0OTc5Ljc0OTI0MDIsIDUxOTMsIDIuMzgwNTM1ODQwOTg4MTU5XSwgWzE2NDUyMDQ5ODAuMzE5NDMzNywgNTIyOSwgMy4xOTcwMDE0NTcyMTQzNTU1XSwgWzE2NDUyMDQ5ODAuODkyMjM5MywgNTI2NSwgMi45NTEwMTk3NjM5NDY1MzNdLCBbMTY0NTIwNDk4MS4wMjM3OTY2LCA1Mjc0LCAzLjg1ODIyODIwNjYzNDUyMTVdLCBbMTY0NTIwNDk4MS4xNjAxMzQzLCA1MjgzLCAzLjU4MDgzNzk2NTAxMTU5NjddLCBbMTY0NTIwNDk4MS42NTQ0OTYyLCA1MzAxLCAyLjQwNjYzOTgxNDM3NjgzMV0sIFsxNjQ1MjA0OTgxLjc3MDU3NCwgNTMxMCwgMi4yNjY5MjUwOTY1MTE4NDFdLCBbMTY0NTIwNDk4MS44ODkyMDgzLCA1MzE5LCAyLjg4ODQ2NTg4MTM0NzY1NjJdLCBbMTY0NTIwNDk4Mi4wMDY3NDE4LCA1MzI4LCAyLjQ0MjYzOTExMjQ3MjUzNF0sIFsxNjQ1MjA0OTgyLjEzNTc1NjMsIDUzMzcsIDIuMDYxNzI4NDc3NDc4MDI3M10sIFsxNjQ1MjA0OTgyLjM4NzU4NSwgNTM1NSwgMi4xODYxMjMzNzExMjQyNjc2XSwgWzE2NDUyMDQ5ODIuNjQ2NDQ1NSwgNTM3MywgMy4xNzgzMTkyMTU3NzQ1MzZdLCBbMTY0NTIwNDk4Mi43Nzk4MzAyLCA1MzgyLCA0LjQ4MTU1OTI3NjU4MDgxMDVdLCBbMTY0NTIwNDk4Mi44OTEyNjQsIDUzOTEsIDMuNDY1MTYyNzU0MDU4ODM4XSwgWzE2NDUyMDQ5ODIuOTk5ODI1MiwgNTQwMCwgMy45MjQ3ODI5OTE0MDkzMDE4XSwgWzE2NDUyMDQ5ODMuMjU3MTY1MiwgNTQxOCwgMy4wOTgxMTgzMDUyMDYyOTldLCBbMTY0NTIwNDk4My40MDI4NDg3LCA1NDI3LCAyLjU5MTIxMDg0MjEzMjU2ODRdLCBbMTY0NTIwNDk4My41MzY2NjE0LCA1NDM2LCAyLjE1MTEwMzI1ODEzMjkzNDZdLCBbMTY0NTIwNDk4My43OTM2NjQ1LCA1NDU0LCAyLjk4NTE4NDE5MjY1NzQ3MDddLCBbMTY0NTIwNDk4NC4yMTYzNDUsIDU0ODEsIDIuNzUyMzI1Mjk2NDAxOTc3NV0sIFsxNjQ1MjA0OTg0LjQ0MzgyMDIsIDU0OTksIDIuOTM3MjQ4NDY4Mzk5MDQ4XSwgWzE2NDUyMDQ5ODQuODE5MjAxMiwgNTUyNiwgMy41MDA3NTc0NTU4MjU4MDU3XSwgWzE2NDUyMDQ5ODQuOTUzNTM5MSwgNTUzNSwgNS4xNTU2NTM5NTM1NTIyNDZdLCBbMTY0NTIwNDk4NS4yMjExNjExLCA1NTUzLCAyLjQ0NjgzNzQyNTIzMTkzMzZdLCBbMTY0NTIwNDk4NS41MTg2MTE3LCA1NTcxLCA0LjIwNTI5ODQyMzc2NzA5XSwgWzE2NDUyMDQ5ODUuODE4NDI5MiwgNTU4OSwgMi43NzU0MDg5ODMyMzA1OTFdLCBbMTY0NTIwNDk4Ni4wODk1MjUyLCA1NjA3LCAyLjMyNDkwNTE1NzA4OTIzMzRdLCBbMTY0NTIwNDk4Ni4yMDk5NTA3LCA1NjE2LCAzLjI2ODY0NjcxNzA3MTUzM10sIFsxNjQ1MjA0OTg2LjYyMTUzNzcsIDU2NDMsIDQuOTI4NTMyMTIzNTY1Njc0XSwgWzE2NDUyMDQ5ODYuNzQ0NzU4OCwgNTY1MiwgMi42MzIwNTM2MTM2NjI3MTk3XSwgWzE2NDUyMDQ5ODYuODk3NjAxMSwgNTY2MSwgMy42MTE4MTkwMjg4NTQzN10sIFsxNjQ1MjA0OTg3LjAxNjUzNSwgNTY3MCwgMi4yNDUyNzI2MzY0MTM1NzRdLCBbMTY0NTIwNDk4Ny40NzcxNTEyLCA1NzA2LCAyLjc4MjE5OTYyMTIwMDU2MTVdLCBbMTY0NTIwNDk4Ny43NzE0NDY1LCA1NzI0LCAyLjg0Nzg4MjAzMjM5NDQwOV0sIFsxNjQ1MjA0OTg4LjAxNzk3NTMsIDU3NDIsIDIuMjk4ODc3NzE2MDY0NDUzXSwgWzE2NDUyMDQ5ODguNDI0MDgwNiwgNTc2OSwgMy4yNjU3MzQxOTU3MDkyMjg1XSwgWzE2NDUyMDQ5ODguNTY2NjQxOCwgNTc3OCwgMy41NTI3NzYwOTgyNTEzNDI4XSwgWzE2NDUyMDQ5ODguNzAzNDg4NiwgNTc4NywgMi40MzczODI2OTgwNTkwODJdLCBbMTY0NTIwNDk4OC44NDQ0NDA1LCA1Nzk2LCAyLjAyODA1Njg1OTk3MDA5MjhdLCBbMTY0NTIwNDk4OC45Nzc2ODAyLCA1ODA1LCAyLjE5MjA1OTk5Mzc0Mzg5NjVdLCBbMTY0NTIwNDk4OS4xMDYxMzc4LCA1ODE0LCAzLjAwNTA2MzI5NTM2NDM4XSwgWzE2NDUyMDQ5ODkuNjY4NDA0NiwgNTg1MCwgNC45OTU1NjgyNzU0NTE2Nl0sIFsxNjQ1MjA0OTg5LjkyNzQ1ODMsIDU4NjgsIDMuODk4OTM0ODQxMTU2MDA2XSwgWzE2NDUyMDQ5OTAuMTU3MTYxLCA1ODc3LCAzLjM2OTU5MDc1OTI3NzM0MzhdLCBbMTY0NTIwNDk5MC4yOTQ1NDcsIDU4ODYsIDUuMzY0Nzg4NTMyMjU3MDhdLCBbMTY0NTIwNDk5MC40MjQwOTk3LCA1ODk1LCAzLjgyMDgxODE4NTgwNjI3NDRdLCBbMTY0NTIwNDk5MC41NDQ3NzI5LCA1OTA0LCAyLjQyNjQ4OTM1MzE3OTkzMTZdLCBbMTY0NTIwNDk5MC45MTg2NzExLCA1OTMxLCAzLjU2Mzg3NTkxMzYxOTk5NV0sIFsxNjQ1MjA0OTkxLjA1MTI5OTYsIDU5NDAsIDMuMTI5NDU2MDQzMjQzNDA4XSwgWzE2NDUyMDQ5OTEuMTc4NTk3NywgNTk0OSwgMy45NDQ0MTI3MDgyODI0NzA3XSwgWzE2NDUyMDQ5OTIuMTY4NzE0OCwgNjAxMiwgMi45ODk1NzA2MTc2NzU3ODEyXSwgWzE2NDUyMDQ5OTIuNzg0MzA0OSwgNjAzOSwgMi4zOTI5NTAwNTc5ODMzOTg0XSwgWzE2NDUyMDQ5OTMuNDc2MDYyLCA2MDg0LCAyLjIyNzM0NjQyMDI4ODA4Nl0sIFsxNjQ1MjA0OTkzLjYzNDM4MDYsIDYwOTMsIDIuMDcxMTYyMjIzODE1OTE4XSwgWzE2NDUyMDQ5OTMuNzY3OTc5OSwgNjEwMiwgMi4yMjk0NDU0NTc0NTg0OTZdLCBbMTY0NTIwNDk5NC4yMTM1NTM0LCA2MTI5LCAyLjQxNTA2Mzg1ODAzMjIyNjZdLCBbMTY0NTIwNDk5NC40NTE3MTA1LCA2MTQ3LCA3LjQ3NjczMjczMDg2NTQ3ODVdLCBbMTY0NTIwNDk5NC41ODgzLCA2MTU2LCA1LjgwNzYwODEyNzU5Mzk5NF0sIFsxNjQ1MjA0OTk0LjcyNzI2NzUsIDYxNjUsIDIuNTczODExNzY5NDg1NDczNl0sIFsxNjQ1MjA0OTk1LjEzMTEyMSwgNjE5MiwgNS45MDE5NjA4NDk3NjE5NjNdLCBbMTY0NTIwNDk5NS43NjQ0MTg4LCA2MjM3LCAyLjYwNDUzODkxNzU0MTUwNF0sIFsxNjQ1MjA0OTk1Ljg5OTUwNTQsIDYyNDYsIDIuNjM2MDAyMzAyMTY5OF0sIFsxNjQ1MjA0OTk2LjAxOTgxMjgsIDYyNTUsIDIuODA4MzA3MTcwODY3OTJdLCBbMTY0NTIwNDk5Ni4xNTExNjgzLCA2MjY0LCAyLjkwODkwOTU1OTI0OTg3OF0sIFsxNjQ1MjA0OTk2LjI4NjgyNTcsIDYyNzMsIDMuMjU2ODc2NzA3MDc3MDI2NF0sIFsxNjQ1MjA0OTk2LjQxNjYwNzEsIDYyODIsIDIuNjc2OTM3MTAzMjcxNDg0NF0sIFsxNjQ1MjA0OTk2LjY4NDQzODUsIDYzMDAsIDQuMzQ1Mzg2MDI4Mjg5Nzk1XSwgWzE2NDUyMDQ5OTcuMDcwMjgyMiwgNjMyNywgMi44NjkyOTQ4ODE4MjA2Nzg3XSwgWzE2NDUyMDQ5OTcuMjAyMzYyNSwgNjMzNiwgMy4zODk2NjM2OTYyODkwNjI1XSwgWzE2NDUyMDQ5OTcuNDc3NTgsIDYzNTQsIDMuNTE3OTY1MzE2NzcyNDYxXSwgWzE2NDUyMDQ5OTguMDMxNzMsIDYzOTAsIDQuMDE1OTU0NDk0NDc2MzE4XSwgWzE2NDUyMDQ5OTguMTU3MjA0NiwgNjM5OSwgNS4wOTMzNzc1OTAxNzk0NDNdLCBbMTY0NTIwNDk5OC40MjQ4MDI4LCA2NDE3LCAzLjQ1MzcxNjI3ODA3NjE3Ml0sIFsxNjQ1MjA0OTk4LjgxMTQwOCwgNjQ0NCwgMi41MTkxNTQ3ODcwNjM1OTg2XSwgWzE2NDUyMDQ5OTkuMDg4ODU0OCwgNjQ2MiwgMy4wMDc3NDM1OTcwMzA2Mzk2XSwgWzE2NDUyMDQ5OTkuMzYwODc1NiwgNjQ4MCwgMi4yODgxODUxMTk2Mjg5MDYyXSwgWzE2NDUyMDQ5OTkuNTEzMDYxNSwgNjQ4OSwgMi4zNDM1MjEzNTY1ODI2NDE2XSwgWzE2NDUyMDQ5OTkuNjY5NTE0LCA2NDk4LCAzLjI3MTI5ODE3MDA4OTcyMTddLCBbMTY0NTIwNDk5OS45NjQ1OTQ4LCA2NTE2LCAzLjg0NTQzODk1NzIxNDM1NTVdLCBbMTY0NTIwNTAwMC4yNTgzMjcyLCA2NTM0LCAyLjQyMTc5MjAzMDMzNDQ3MjddLCBbMTY0NTIwNTAwMC4zOTQxNDksIDY1NDMsIDcuMjMxMzE4OTUwNjUzMDc2XSwgWzE2NDUyMDUwMDAuNTMxNzI0NSwgNjU1MiwgMi44ODYzNTcwNjkwMTU1MDNdLCBbMTY0NTIwNTAwMC42NTYyOTg0LCA2NTYxLCAzLjAwODEyMDI5ODM4NTYyXSwgWzE2NDUyMDUwMDAuNzY2MTc0MywgNjU3MCwgNC4yOTM1NjE0NTg1ODc2NDY1XSwgWzE2NDUyMDUwMDEuMDI1Nzk5MywgNjU4OCwgMi4xMzM4MzY1MDc3OTcyNDFdLCBbMTY0NTIwNTAwMS4xNTUzODcyLCA2NTk3LCAzLjIzMjkzODc2NjQ3OTQ5Ml0sIFsxNjQ1MjA1MDAxLjI5MDU2MTcsIDY2MDYsIDMuMTE0NjY0NzkzMDE0NTI2NF0sIFsxNjQ1MjA1MDAxLjk0NjgzNjcsIDY2NTEsIDMuMTA0NTQ3MDIzNzczMTkzNF0sIFsxNjQ1MjA1MDAyLjA1ODA0NDcsIDY2NjAsIDIuNzY2NzIxNDg3MDQ1Mjg4XSwgWzE2NDUyMDUwMDIuMTkxMDA2NCwgNjY2OSwgNC4xNzk0NTA1MTE5MzIzNzNdLCBbMTY0NTIwNTAwMi40NjM1NTQ0LCA2Njg3LCAyLjI5NDQ4OTE0NTI3ODkzMDddLCBbMTY0NTIwNTAwMi42MTA3NDYxLCA2Njk2LCAyLjg4MTUzNjQ4Mzc2NDY0ODRdLCBbMTY0NTIwNTAwMi43NTY0NzkzLCA2NzA1LCAyLjU3NTcyNjI3MDY3NTY1OV0sIFsxNjQ1MjA1MDAyLjg5MzAwNjgsIDY3MTQsIDQuMTY1MDg5NjA3MjM4NzY5NV0sIFsxNjQ1MjA1MDAzLjk4MTk1NTMsIDY3NzcsIDIuMzA3NDIwMDE1MzM1MDgzXSwgWzE2NDUyMDUwMDQuMzc2OTc0MywgNjgwNCwgMi4yMzY3NjEwOTMxMzk2NDg0XSwgWzE2NDUyMDUwMDQuNTAxODkwNCwgNjgxMywgMi4wMDU2MTQwNDIyODIxMDQ1XSwgWzE2NDUyMDUwMDQuNzgyMDMxNSwgNjgzMSwgMy4xODAzNzYwNTI4NTY0NDUzXSwgWzE2NDUyMDUwMDUuNDM2MzMyNSwgNjg3NiwgMi45NjUxNTc3NDcyNjg2NzY4XSwgWzE2NDUyMDUwMDUuNTczNjEyLCA2ODg1LCAyLjMxODczMjk3NjkxMzQ1Ml0sIFsxNjQ1MjA1MDA1LjY5NTY2MiwgNjg5NCwgMi4wNDQ4OTEzNTc0MjE4NzVdLCBbMTY0NTIwNTAwNS45NTA5MDg0LCA2OTEyLCA0LjM5NDc5NzgwMTk3MTQzNTVdLCBbMTY0NTIwNTAwNi4wNzEyNDQ3LCA2OTIxLCAyLjMxMzMzMTEyNzE2Njc0OF0sIFsxNjQ1MjA1MDA2LjE5NTAyMzMsIDY5MzAsIDQuMDg5NDIxNzQ5MTE0OTldLCBbMTY0NTIwNTAwNi40NzYyMzE2LCA2OTQ4LCAyLjUzMTgxODYyODMxMTE1NzJdLCBbMTY0NTIwNTAwNi42MjQ2NTk1LCA2OTU3LCAyLjIzMDE3NjkyNTY1OTE3OTddLCBbMTY0NTIwNTAwNi43MzU0MDk3LCA2OTY2LCAyLjgyNjE2NjYyOTc5MTI1OThdLCBbMTY0NTIwNTAwNy4wMTUyMDUsIDY5ODQsIDIuMDg4NTYwMzQyNzg4Njk2M10sIFsxNjQ1MjA1MDA3LjE2NTgzNjgsIDY5OTMsIDIuMDY1NTc2MDc2NTA3NTY4NF0sIFsxNjQ1MjA1MDA3LjQxMzU2OTIsIDcwMTEsIDIuNTUyMDQxNTMwNjA5MTMxXSwgWzE2NDUyMDUwMDcuNTM3MTEzNywgNzAyMCwgMi4yMzE3MDE2MTI0NzI1MzRdLCBbMTY0NTIwNTAwNy42NzM4Mzg2LCA3MDI5LCAzLjU0MjA4NDQ1NTQ5MDExMjNdLCBbMTY0NTIwNTAwNy43OTU5NjE2LCA3MDM4LCAyLjIyMjY1MDUyNzk1NDEwMTZdLCBbMTY0NTIwNTAwNy45MzYwOTAyLCA3MDQ3LCA1LjgxNzc0MjM0NzcxNzI4NV0sIFsxNjQ1MjA1MDA4LjA2NDk2MjYsIDcwNTYsIDIuMjQwMzExNjIyNjE5NjI5XSwgWzE2NDUyMDUwMDguNDUwNDU0NywgNzA4MywgMi43ODg3MTIwMjQ2ODg3MjA3XSwgWzE2NDUyMDUwMDguNzAyMjQyNiwgNzEwMSwgMy4yNDUwOTMzNDU2NDIwOV0sIFsxNjQ1MjA1MDA4LjgyMDkzMTQsIDcxMTAsIDIuMzQ1NjE4MDA5NTY3MjYwN10sIFsxNjQ1MjA1MDA5LjA3NTIwMDMsIDcxMjgsIDMuNTAzODY2NDM0MDk3MjldLCBbMTY0NTIwNTAwOS4zNTExNTg5LCA3MTQ2LCAyLjg1MTkwOTYzNzQ1MTE3Ml0sIFsxNjQ1MjA1MDA5LjYwNDcyNSwgNzE2NCwgMi41MjUyMjM5NzA0MTMyMDhdLCBbMTY0NTIwNTAwOS43NTIzODczLCA3MTczLCAyLjU2NDk1MjEzNTA4NjA1OTZdLCBbMTY0NTIwNTAxMC4xMjg4MDA5LCA3MjAwLCAyLjUzMTc1NDczMjEzMTk1OF0sIFsxNjQ1MjA1MDEwLjI1MjgwODMsIDcyMDksIDIuNDA3NTQ3OTUwNzQ0NjI5XSwgWzE2NDUyMDUwMTAuNzczNTczNCwgNzI0NSwgMi4xNzc4NjQzMTMxMjU2MTA0XSwgWzE2NDUyMDUwMTAuOTA0NjgxMiwgNzI1NCwgMi42NzczNjQ4MjYyMDIzOTI2XSwgWzE2NDUyMDUwMTEuMDM2MDYwMywgNzI2MywgMy4yNTMzMzMwOTE3MzU4NF0sIFsxNjQ1MjA1MDExLjE3MDg5MjUsIDcyNzIsIDEuOTkxNDk0MDU5NTYyNjgzXSwgWzE2NDUyMDUwMTEuNjA0OTg2NCwgNzI5OSwgMi40MTYwNTI1Nzk4Nzk3NjA3XSwgWzE2NDUyMDUwMTEuOTk1NTk4OCwgNzMyNiwgMy4xMjg1NTQ4MjEwMTQ0MDQzXSwgWzE2NDUyMDUwMTIuNjUwNjAyNiwgNzM3MSwgMy4zNjkwNzQxMDYyMTY0MzA3XSwgWzE2NDUyMDUwMTIuNzg1ODM2NSwgNzM4MCwgMi4zNzIzMTA4NzY4NDYzMTM1XSwgWzE2NDUyMDUwMTMuMDQwODA0OSwgNzM5OCwgMi43MzAxMDYzNTM3NTk3NjU2XSwgWzE2NDUyMDUwMTMuMTYwOTk4OCwgNzQwNywgMy42MzY1NzgzMjE0NTY5MDldLCBbMTY0NTIwNTAxMy4zMTI2MSwgNzQxNiwgMi4xNzQ0NTM5NzM3NzAxNDE2XSwgWzE2NDUyMDUwMTMuNTcxOTczNiwgNzQzNCwgMi41MzAyMzI5MDYzNDE1NTI3XSwgWzE2NDUyMDUwMTMuNzA5OTc5NSwgNzQ0MywgMi4yNzkwNzc1Mjk5MDcyMjY2XSwgWzE2NDUyMDUwMTMuODczMTIyLCA3NDUyLCAzLjUwMTA4ODM4MDgxMzU5ODZdLCBbMTY0NTIwNTAxNC4wMDU4ODg3LCA3NDYxLCA2LjY5OTM5MjMxODcyNTU4Nl0sIFsxNjQ1MjA1MDE0LjcwNjc0NDQsIDc0OTcsIDMuMzE2NDMzOTA2NTU1MTc2XSwgWzE2NDUyMDUwMTQuODU5ODM4NSwgNzUwNiwgMi40ODQ0NjY1NTI3MzQzNzVdLCBbMTY0NTIwNTAxNS4xNDQ4MDIzLCA3NTI0LCAyLjk0MTUxODA2ODMxMzU5ODZdLCBbMTY0NTIwNTAxNS4yNjMwNDQ0LCA3NTMzLCAyLjEzMzc0MjA5NDAzOTkxN10sIFsxNjQ1MjA1MDE1LjM5NzE5MDYsIDc1NDIsIDIuNTUwMzQyNzk4MjMzMDMyMl0sIFsxNjQ1MjA1MDE1LjY1NzM2MzQsIDc1NjAsIDMuNjk5NzQ5OTQ2NTk0MjM4M10sIFsxNjQ1MjA1MDE1Ljc3NDg1OTIsIDc1NjksIDMuODY3NTg1NDIwNjA4NTIwNV0sIFsxNjQ1MjA1MDE2LjA2MTU0MzIsIDc1ODcsIDIuMjg0MTcyMjk2NTI0MDQ4XSwgWzE2NDUyMDUwMTYuMTg5MzY4NSwgNzU5NiwgMi43NDcyMDA5NjU4ODEzNDc3XSwgWzE2NDUyMDUwMTYuNDY2ODA3OCwgNzYxNCwgMi40NTc0MzgyMzA1MTQ1MjY0XSwgWzE2NDUyMDUwMTcuMTE4MTk2LCA3NjU5LCA0LjYyMzExMTI0ODAxNjM1N10sIFsxNjQ1MjA1MDE3LjI0OTkyODIsIDc2NjgsIDMuMjc2NjE4MjQyMjYzNzk0XSwgWzE2NDUyMDUwMTcuNjkwODE0MywgNzY5NSwgMy4yMTA3NjIwMjM5MjU3ODEyXSwgWzE2NDUyMDUwMTguMDc2ODU5LCA3NzIyLCAyLjQ4OTA2NzMxNjA1NTI5OF0sIFsxNjQ1MjA1MDE4LjQyOTUwMjUsIDc3NDksIDIuNjkzODE3NjE1NTA5MDMzXSwgWzE2NDUyMDUwMTguNTU4NTI3NywgNzc1OCwgMi41ODU0NDExMTI1MTgzMTA1XSwgWzE2NDUyMDUwMTguNjgxOTI5NiwgNzc2NywgMy4wNzY0NTQ4Nzc4NTMzOTM2XSwgWzE2NDUyMDUwMTkuMDgzMDIyNiwgNzc5NCwgMi41MDg5MzQ0OTc4MzMyNTJdLCBbMTY0NTIwNTAxOS4yMjAzMjA1LCA3ODAzLCAyLjU3NzQ2MjY3MzE4NzI1Nl0sIFsxNjQ1MjA1MDE5Ljc2MzMyLCA3ODM5LCAzLjc2MjcyMjQ5MjIxODAxNzZdLCBbMTY0NTIwNTAxOS44ODIzMzU3LCA3ODQ4LCAyLjExNDgxMjg1MDk1MjE0ODRdLCBbMTY0NTIwNTAyMS4yMjc3NTAzLCA3OTM4LCAxLjg5OTM2NjAyMTE1NjMxMV0sIFsxNjQ1MjA1MDIxLjQ3MzU3MDMsIDc5NTYsIDIuNTYzMjUyNjg3NDU0MjIzNl0sIFsxNjQ1MjA1MDIxLjU4NDM1MjcsIDc5NjUsIDIuOTI5OTYzMTExODc3NDQxNF0sIFsxNjQ1MjA1MDIxLjY5MzU4NjgsIDc5NzQsIDIuNjA2OTAzMDc2MTcxODc1XSwgWzE2NDUyMDUwMjEuODE1MjI4LCA3OTgzLCAyLjI1NTQ5MzY0MDg5OTY1OF0sIFsxNjQ1MjA1MDIyLjA3MzIzNjIsIDgwMDEsIDQuMDUyNDE1MzcwOTQxMTYyXSwgWzE2NDUyMDUwMjIuMzMxMzAxNSwgODAxOSwgMi43NzA5NDcyMTc5NDEyODRdLCBbMTY0NTIwNTAyMi41ODQ4ODgsIDgwMzcsIDIuMjE0NTM1MjM2MzU4NjQyNl0sIFsxNjQ1MjA1MDIyLjk0NDQwMDgsIDgwNjQsIDIuMTE1NDUzNzIwMDkyNzczNF0sIFsxNjQ1MjA1MDIzLjE5ODQwMTUsIDgwODIsIDIuNTU0MTkxODI3Nzc0MDQ4XSwgWzE2NDUyMDUwMjMuMzcyMjQ0OCwgODA5MSwgMi42ODY3ODg1NTg5NTk5NjFdLCBbMTY0NTIwNTAyMy43ODk1Mjg4LCA4MTE4LCAyLjI2OTYyNzMzMjY4NzM3OF0sIFsxNjQ1MjA1MDIzLjkzNDUyMjQsIDgxMjcsIDIuMDYyMzExMTcyNDg1MzUxNl0sIFsxNjQ1MjA1MDI0LjE4OTQzNzksIDgxNDUsIDMuMTcyNjEwMDQ0NDc5MzddLCBbMTY0NTIwNTAyNC40MzU0MTc3LCA4MTYzLCAzLjA3MzUzNDcyNzA5NjU1NzZdLCBbMTY0NTIwNTAyNC41Njk4MTEsIDgxNzIsIDIuMzc2MTYzMjQ0MjQ3NDM2NV0sIFsxNjQ1MjA1MDI0LjY5NTIzMDcsIDgxODEsIDIuMjkyMjI2NTUyOTYzMjU3XSwgWzE2NDUyMDUwMjQuOTMwMTQyNiwgODE5OSwgMi4zNDA1NjA0MzYyNDg3NzkzXSwgWzE2NDUyMDUwMjUuMDc1NDgwMiwgODIwOCwgMy4wNzIzNzQzNDM4NzIwNzAzXSwgWzE2NDUyMDUwMjUuNTMyMjA4NywgODIyNiwgMy4zMTQ3MTc1MzEyMDQyMjM2XSwgWzE2NDUyMDUwMjUuNjc5NjMyLCA4MjM1LCA1LjQ4NDgzODAwODg4MDYxNV0sIFsxNjQ1MjA1MDI1Ljk1OTc1MDIsIDgyNTMsIDMuMjYyOTA5NDEyMzg0MDMzXSwgWzE2NDUyMDUwMjYuMjc0NDczNywgODI3MSwgMi45MTQ4MDU4ODkxMjk2Mzg3XSwgWzE2NDUyMDUwMjYuMzk4ODE1MiwgODI4MCwgMi4xMTk4NjM5ODY5Njg5OTRdLCBbMTY0NTIwNTAyNi42OTE1NjYyLCA4Mjk4LCAyLjA1MTM1MTU0NzI0MTIxMV0sIFsxNjQ1MjA1MDI2Ljk2NzQ0MjMsIDgzMTYsIDIuNDkyOTEzNzIyOTkxOTQzNF0sIFsxNjQ1MjA1MDI3LjQ4NDg5MDUsIDgzNTIsIDQuNzk5Nzk1NjI3NTkzOTk0XSwgWzE2NDUyMDUwMjcuNjAxODMyOSwgODM2MSwgNy4yOTYzMTQ3MTYzMzkxMTFdLCBbMTY0NTIwNTAyNy43MzYwOTUyLCA4MzcwLCA3LjMzNTgxMjA5MTgyNzM5M10sIFsxNjQ1MjA1MDI3Ljg1NTE1NCwgODM3OSwgMi40NDUwMTE2MTU3NTMxNzRdLCBbMTY0NTIwNTAyNy45ODI5OTk2LCA4Mzg4LCAzLjc2NDc3NTUxNDYwMjY2MV0sIFsxNjQ1MjA1MDI4LjExMjY3MDQsIDgzOTcsIDIuNTEyODg1MDkzNjg4OTY1XSwgWzE2NDUyMDUwMjguMjUwNzcyNSwgODQwNiwgMi4zMDQ0ODEwMjk1MTA0OThdLCBbMTY0NTIwNTAyOC41Mzk5MDMyLCA4NDI0LCA1Ljg4MTE3MDc0OTY2NDMwN10sIFsxNjQ1MjA1MDI5LjA4NDcyOCwgODQ2MCwgMy43NjkzMTcxNTAxMTU5NjddLCBbMTY0NTIwNTAyOS4zNjU3OTc1LCA4NDc4LCAyLjcxMDMwMjgyOTc0MjQzMTZdLCBbMTY0NTIwNTAyOS41MzQ2MzAzLCA4NDg3LCAzLjE4MjI4NjczOTM0OTM2NTJdLCBbMTY0NTIwNTAyOS45MjgxNjksIDg1MTQsIDIuNTg4ODU1MDI4MTUyNDY2XSwgWzE2NDUyMDUwMzAuNDM0NTkxLCA4NTUwLCA0LjQ5NDI5MjI1OTIxNjMwOV0sIFsxNjQ1MjA1MDMwLjU4ODA1NjgsIDg1NTksIDEuOTgwODIyNTYzMTcxMzg2N10sIFsxNjQ1MjA1MDMxLjExODk3MDIsIDg1NzcsIDIuMjAzMzMzNjE2MjU2NzE0XSwgWzE2NDUyMDUwMzEuNDI4MzM3LCA4NTk1LCAyLjc5ODY1MzYwMjYwMDA5NzddLCBbMTY0NTIwNTAzMS42MTgzODYzLCA4NjA0LCAyLjQ1NjQyNzA5NzMyMDU1NjZdLCBbMTY0NTIwNTAzMS45NDcxMzIzLCA4NjEzLCAyLjM3MzU5MTE4NDYxNjA4OV0sIFsxNjQ1MjA1MDMyLjY2ODU4MzIsIDg2NDksIDIuMjcyNDU2NjQ1OTY1NTc2XSwgWzE2NDUyMDUwMzIuOTIxOTk0NywgODY1OCwgMi40MTI4ODU5MDQzMTIxMzRdLCBbMTY0NTIwNTAzMy4wNTUyNTMsIDg2NjcsIDIuOTA0OTc3NTYwMDQzMzM1XSwgWzE2NDUyMDUwMzMuMTg3NzUyLCA4Njc2LCAzLjc1NDM0MDY0ODY1MTEyM10sIFsxNjQ1MjA1MDMzLjMyODE5NCwgODY4NSwgMi41MzA0NzI1MTcwMTM1NV0sIFsxNjQ1MjA1MDMzLjQ0MTM3OSwgODY5NCwgMS44NjU4MDc0MTQwNTQ4NzA2XSwgWzE2NDUyMDUwMzMuNjcwMjU4NSwgODcxMiwgMy4wNDc3NzQ3OTE3MTc1MjkzXSwgWzE2NDUyMDUwMzMuNzgyMjM4NywgODcyMSwgMy41OTI4MTExMDc2MzU0OThdLCBbMTY0NTIwNTAzNC4xNTc1MTIsIDg3NDgsIDIuMDA4NjI0NTUzNjgwNDJdLCBbMTY0NTIwNTAzNC43MjkyNDQyLCA4NzkzLCAyLjQyMDE5MjAwMzI1MDEyMl0sIFsxNjQ1MjA1MDM0Ljk1NjEyOCwgODgxMSwgMS45Njk0NDQ3NTE3Mzk1MDJdLCBbMTY0NTIwNTAzNS4wODc4OTY2LCA4ODIwLCAyLjQxNDMwNjg3OTA0MzU3OV0sIFsxNjQ1MjA1MDM1LjM3NTUzNzIsIDg4MzgsIDEuOTk1MDc0MzkxMzY1MDUxM10sIFsxNjQ1MjA1MDM1LjUxNzEyLCA4ODQ3LCAyLjMzOTAzMTkzNDczODE1OV0sIFsxNjQ1MjA1MDM2LjExNjM0MDIsIDg4ODMsIDIuNTQ2MjkyMDY2NTc0MDk2N10sIFsxNjQ1MjA1MDM2LjM2ODA0NTgsIDg5MDEsIDIuMDg2NjQ4OTQxMDQwMDM5XSwgWzE2NDUyMDUwMzYuNTEzMzgzMiwgODkxMCwgMi4wOTYwOTA3OTM2MDk2MTldLCBbMTY0NTIwNTAzNi42NDYzMjg3LCA4OTE5LCAyLjA2MDkzMTkyMTAwNTI0OV0sIFsxNjQ1MjA1MDM2LjkyMTk3NzgsIDg5MzcsIDIuNDM5NTgxMzk0MTk1NTU2Nl0sIFsxNjQ1MjA1MDM3LjM5MzYzMTIsIDg5NTUsIDIuMzUwMzQ4OTQ5NDMyMzczXSwgWzE2NDUyMDUwMzcuNTQwMDAwNCwgODk2NCwgMy4xOTAwNzUxNTkwNzI4NzZdLCBbMTY0NTIwNTAzNy42NzYwMTA4LCA4OTczLCAyLjcxMDQzOTIwNTE2OTY3NzddLCBbMTY0NTIwNTAzNy45MDk2OTQ0LCA4OTkxLCAyLjMxNjIzMjY4MTI3NDQxNF0sIFsxNjQ1MjA1MDM4LjAyNjMwNSwgOTAwMCwgMy4wODAxODQ0NTk2ODYyNzkzXSwgWzE2NDUyMDUwMzguMjUzMjYyMywgOTAxOCwgMi4xNzY5ODc0MDk1OTE2NzVdLCBbMTY0NTIwNTAzOC4zNjY1NjksIDkwMjcsIDIuMDcxNDk5ODI0NTIzOTI2XSwgWzE2NDUyMDUwMzguNDgzOTQzNSwgOTAzNiwgMi45NzY1OTMyNTU5OTY3MDRdLCBbMTY0NTIwNTAzOC42Mjk0MjM5LCA5MDQ1LCAyLjQwNzkzNTE0MjUxNzA5XSwgWzE2NDUyMDUwMzguNzUyNjg5OCwgOTA1NCwgMi42MTg5Nzk5MzA4Nzc2ODU1XSwgWzE2NDUyMDUwMzguODgxNTg5MiwgOTA2MywgMi44NjM5NjI4ODg3MTc2NTE0XSwgWzE2NDUyMDUwMzkuNTMzNTIyMSwgOTEwOCwgMy43MzMwNzM3MTEzOTUyNjM3XSwgWzE2NDUyMDUwMzkuNzc4NjgxOCwgOTEyNiwgMS45MjAzNzc0OTI5MDQ2NjNdLCBbMTY0NTIwNTA0MC4wNDE0NywgOTE0NCwgMi4yMDc0MjEwNjQzNzY4MzFdLCBbMTY0NTIwNTA0MC4xNjYzMzA4LCA5MTUzLCAyLjA3OTM2Nzg3NjA1Mjg1NjRdLCBbMTY0NTIwNTA0MC4yOTE5ODg0LCA5MTYyLCAyLjEzNDc3NjExNTQxNzQ4MDVdLCBbMTY0NTIwNTA0MC45MDUyMTE0LCA5MjA3LCAyLjE1MTU1OTU5MTI5MzMzNV0sIFsxNjQ1MjA1MDQxLjQ2MzgzOTMsIDkyNDMsIDIuNTc0NjA1NDY0OTM1MzAyN10sIFsxNjQ1MjA1MDQxLjc4NTc1NTIsIDkyNjEsIDIuNzcyMjA2NTQ0ODc2MDk4Nl0sIFsxNjQ1MjA1MDQxLjkyMjAwNDcsIDkyNzAsIDEuNzUwOTA1Mjc1MzQ0ODQ4Nl0sIFsxNjQ1MjA1MDQyLjc2MDU0NzQsIDkzMjQsIDIuOTcwODQ2ODkxNDAzMTk4Ml0sIFsxNjQ1MjA1MDQyLjg3NzE1NjUsIDkzMzMsIDIuNzE4NjUwMzQxMDMzOTM1NV0sIFsxNjQ1MjA1MDQyLjk5NTUyNTQsIDkzNDIsIDIuMDk4Mzk4NDQ3MDM2NzQzXSwgWzE2NDUyMDUwNDMuMTE3MzAxNywgOTM1MSwgMi41MzYxODE5MjY3MjcyOTVdLCBbMTY0NTIwNTA0My4yNDI3NTA2LCA5MzYwLCAxLjk4NDUzNzQ4MjI2MTY1NzddLCBbMTY0NTIwNTA0My43NDU0MTYyLCA5Mzk2LCAyLjI1OTE2NDMzMzM0MzUwNl0sIFsxNjQ1MjA1MDQ0LjAwMjk2MDQsIDk0MTQsIDMuNDk3MjI1MDQ2MTU3ODM3XSwgWzE2NDUyMDUwNDQuMTQyOTc5OSwgOTQyMywgMy4zNzkwNTI4Nzc0MjYxNDc1XSwgWzE2NDUyMDUwNDQuOTk1MTE1MywgOTQ3NywgMi4zMzY4MDUzNDM2Mjc5Mjk3XSwgWzE2NDUyMDUwNDUuMTQxMjU3OCwgOTQ4NiwgMy4xNTU1MjczNTMyODY3NDNdLCBbMTY0NTIwNTA0NS40NzU0MTgsIDk1MTMsIDEuOTE4OTIwOTkzODA0OTMxNl0sIFsxNjQ1MjA1MDQ1Ljc0Njc4NCwgOTUzMSwgMS45MDg2NTIwNjcxODQ0NDgyXSwgWzE2NDUyMDUwNDUuODc1Njk0MywgOTU0MCwgMi4zOTQ0MTk2NzAxMDQ5ODA1XSwgWzE2NDUyMDUwNDYuMDA4MTg0NywgOTU0OSwgMi4zOTA4MTg4MzQzMDQ4MDk2XSwgWzE2NDUyMDUwNDYuMjcwOTA2NCwgOTU2NywgMi4wOTU0NzA2NjY4ODUzNzZdLCBbMTY0NTIwNTA0Ni42NDg0NzY4LCA5NTk0LCAyLjg1MjQwMTczMzM5ODQzNzVdLCBbMTY0NTIwNTA0Ni43ODE2ODk2LCA5NjAzLCAyLjMwNzIwNzgyMjc5OTY4MjZdLCBbMTY0NTIwNTA0Ni44OTU1MTQyLCA5NjEyLCAyLjU4NDg5Nzk5NDk5NTExN10sIFsxNjQ1MjA1MDQ3LjEyMzI0NjIsIDk2MzAsIDIuMjYyMzU5MTQyMzAzNDY3XSwgWzE2NDUyMDUwNDcuMjI4NDMxLCA5NjM5LCAyLjU0MTg1ODkxMTUxNDI4MjJdLCBbMTY0NTIwNTA0Ny4zNTU0NTUsIDk2NDgsIDIuNjk5OTY5MjkxNjg3MDExN10sIFsxNjQ1MjA1MDQ3LjQ3MjkyNjEsIDk2NTcsIDIuMDg4OTkxODgwNDE2ODddLCBbMTY0NTIwNTA0Ny41OTM5Mzg0LCA5NjY2LCAyLjczNjU2NzI1ODgzNDgzOV0sIFsxNjQ1MjA1MDQ3LjcyNTU5ODYsIDk2NzUsIDIuNDI2NjkxNzcwNTUzNTg5XSwgWzE2NDUyMDUwNDguMzQ2MDcyNCwgOTcwMiwgMi45NzEzNTU0MzgyMzI0MjJdLCBbMTY0NTIwNTA0OC40NzgxNDIzLCA5NzExLCAyLjY1NTcwOTk4MTkxODMzNV0sIFsxNjQ1MjA1MDQ4Ljc0MzEwNzMsIDk3MjksIDIuMjQzMzQ3NDA2Mzg3MzI5XSwgWzE2NDUyMDUwNDguODgyODE1LCA5NzM4LCAxLjk4NjIxMTI5OTg5NjI0MDJdLCBbMTY0NTIwNTA0OS4wMzYzNDQsIDk3NDcsIDIuNDc4MTEwMzEzNDE1NTI3M10sIFsxNjQ1MjA1MDQ5LjM3MzQ4ODIsIDk3NzQsIDIuNjg4MjE2MjA5NDExNjIxXSwgWzE2NDUyMDUwNDkuNDg0NzIyMSwgOTc4MywgMS45Nzg5MjQyNzQ0NDQ1OF0sIFsxNjQ1MjA1MDQ5LjU5NDc4NCwgOTc5MiwgMy4xMzEyMTI5NDk3NTI4MDc2XSwgWzE2NDUyMDUwNTAuMDg4NDc3NCwgOTgyOCwgMi44ODcxODkxNDk4NTY1Njc0XSwgWzE2NDUyMDUwNTAuMTk4MjA2LCA5ODM3LCAyLjYwODAwMTIzMjE0NzIxN10sIFsxNjQ1MjA1MDUwLjMxMzc3ODQsIDk4NDYsIDIuMTg4NjQ3MjcwMjAyNjM2N10sIFsxNjQ1MjA1MDUwLjkwNDQ5NzYsIDk4OTEsIDMuNjgzMzIyMTkxMjM4NDAzM10sIFsxNjQ1MjA1MDUxLjE0MTgwOSwgOTkwOSwgMi4yNjA2MTcwMTc3NDU5NzE3XSwgWzE2NDUyMDUwNTEuMzc4NDY2MSwgOTkyNywgMy4wNzgxOTc3MTc2NjY2MjZdLCBbMTY0NTIwNTA1MS41MTI5NzI2LCA5OTM2LCAyLjU2NzQ3MDMxMjExODUzMDNdLCBbMTY0NTIwNTA1MS42MzQ3MzA2LCA5OTQ1LCAzLjk4MzY3MjM4MDQ0NzM4NzddLCBbMTY0NTIwNTA1Mi4wNDc4MDEsIDk5NzIsIDIuNjQ4Njk2ODk5NDE0MDYyNV0sIFsxNjQ1MjA1MDUyLjE3ODg1NCwgOTk4MSwgMi44MjkwNzYwNTE3MTIwMzZdLCBbMTY0NTIwNTA1Mi4zMDAyNDg5LCA5OTkwLCAyLjYyOTg5MjU4NzY2MTc0M10sIFsxNjQ1MjA1MDUyLjQyNzQ3MiwgOTk5OSwgMi41MzI2NjM4MjIxNzQwNzIzXSwgWzE2NDUyMDUwNTIuNTk2MTU4NSwgMTAwMDgsIDEuOTk5ODcwMDYxODc0Mzg5Nl0sIFsxNjQ1MjA1MDUyLjczMTQ1NzcsIDEwMDE3LCAyLjE2OTY5NTM3NzM0OTg1MzVdLCBbMTY0NTIwNTA1Mi44NzU4OTM4LCAxMDAyNiwgMi4xNzYzNjU2MTM5MzczNzhdLCBbMTY0NTIwNTA1Mi45ODc5ODc1LCAxMDAzNSwgMi4zNjE3MTEyNjM2NTY2MTZdLCBbMTY0NTIwNTA1My4yNjA1OTgyLCAxMDA1MywgNC4wNDg0ODI0MTgwNjAzMDNdLCBbMTY0NTIwNTA1My42MTYyNDg4LCAxMDA4MCwgMS45NjQ3NzUwODU0NDkyMTg4XSwgWzE2NDUyMDUwNTMuODQxOTQwNCwgMTAwOTgsIDIuMjMzNzcxNTYyNTc2Mjk0XSwgWzE2NDUyMDUwNTMuOTYwOTE5NiwgMTAxMDcsIDEuOTc3MTcxNzc4Njc4ODk0XSwgWzE2NDUyMDUwNTQuMzM1NDMzNywgMTAxMzQsIDEuOTIzNzY2MjU1Mzc4NzIzMV0sIFsxNjQ1MjA1MDU0LjQ1ODQ3NSwgMTAxNDMsIDIuMjk4MDExMzAyOTQ3OTk4XSwgWzE2NDUyMDUwNTQuNzM2NjA3LCAxMDE2MSwgMi40MjUzNTkwMTA2OTY0MTFdLCBbMTY0NTIwNTA1NC44NzAyNzQsIDEwMTcwLCAzLjkzNTI2MzM5NTMwOTQ0ODJdLCBbMTY0NTIwNTA1NS4wMTIxNDM5LCAxMDE3OSwgMy4yMjUzOTA0MzQyNjUxMzY3XSwgWzE2NDUyMDUwNTUuMTcyNDE4NCwgMTAxODgsIDIuMjQ0NzgwMDYzNjI5MTUwNF0sIFsxNjQ1MjA1MDU1LjMxOTEyMjgsIDEwMTk3LCAyLjc4OTM4NDYwMzUwMDM2Nl0sIFsxNjQ1MjA1MDU1LjU4NjE2NSwgMTAyMTUsIDIuMDUzNzc2NTAyNjA5MjUzXSwgWzE2NDUyMDUwNTUuNzExMTUwMiwgMTAyMjQsIDIuNzIwNDEzNDQ2NDI2MzkxNl0sIFsxNjQ1MjA1MDU1LjgyMTI3MzgsIDEwMjMzLCAyLjgxODc1MDE0MzA1MTE0NzVdLCBbMTY0NTIwNTA1NS45Mzg2NTQ3LCAxMDI0MiwgMS45Njg4MTM2NTc3NjA2MjAxXSwgWzE2NDUyMDUwNTYuMjI0NDA0NiwgMTAyNjAsIDIuMDc5MjIyNDQwNzE5NjA0NV0sIFsxNjQ1MjA1MDU2LjY1MjI4ODIsIDEwMjg3LCA0LjQwMDk3OTUxODg5MDM4MV0sIFsxNjQ1MjA1MDU3LjA4MzUxMDYsIDEwMzE0LCAyLjM4NTU5Njc1MjE2Njc0OF0sIFsxNjQ1MjA1MDU3LjI0MzA2ODUsIDEwMzIzLCAyLjI4NDQxNzg2NzY2MDUyMjVdLCBbMTY0NTIwNTA1Ny40OTUzNjgsIDEwMzQxLCAyLjcwODkyNTcyNDAyOTU0MV0sIFsxNjQ1MjA1MDU3LjYwNDUyODcsIDEwMzUwLCAyLjIwMDAyNjk4ODk4MzE1NDNdLCBbMTY0NTIwNTA1Ny43MTI1MzIsIDEwMzU5LCAxLjk1Mjg4MjI4OTg4NjQ3NDZdLCBbMTY0NTIwNTA1Ny44MTk2MjUsIDEwMzY4LCAyLjYwNDc0Mzk1NzUxOTUzMTJdLCBbMTY0NTIwNTA1Ny45NDYzNjYzLCAxMDM3NywgMi4xMDMyMzY0MzY4NDM4NzJdLCBbMTY0NTIwNTA1OC4wNjU0MjIzLCAxMDM4NiwgMi4xMzgyNzYxMDAxNTg2OTE0XSwgWzE2NDUyMDUwNTguMzQ0MzAzLCAxMDQwNCwgMi4xMzYzNjI1NTI2NDI4MjIzXSwgWzE2NDUyMDUwNTguOTgwNDAwNiwgMTA0NDAsIDIuMTA3NTExMDQzNTQ4NTg0XSwgWzE2NDUyMDUwNTkuMDg3NDEwNCwgMTA0NDksIDIuNDY4MTY2ODI4MTU1NTE3Nl0sIFsxNjQ1MjA1MDU5LjMxNzEyNSwgMTA0NjcsIDIuMzIwMTU4MDA0NzYwNzQyXSwgWzE2NDUyMDUwNTkuNTQ2MjU5MiwgMTA0ODUsIDIuMjAzODY1NzY2NTI1MjY4Nl0sIFsxNjQ1MjA1MDU5Ljc4ODIyNDIsIDEwNTAzLCAyLjI4NDk2MDAzMTUwOTM5OTRdLCBbMTY0NTIwNTA1OS45MzM5NjY5LCAxMDUxMiwgMS45NjM3NTA2MDA4MTQ4MTkzXSwgWzE2NDUyMDUwNjAuNzM3ODA5LCAxMDU2NiwgMi4yODE1NTU2NTI2MTg0MDhdLCBbMTY0NTIwNTA2MC44NTYyNzgyLCAxMDU3NSwgMi4xMjEzODUzMzU5MjIyNDFdLCBbMTY0NTIwNTA2MS4xMTE1MDI0LCAxMDU5MywgMi4yNTI2MzI4NTYzNjkwMTg2XSwgWzE2NDUyMDUwNjEuMjQ0OTY2NSwgMTA2MDIsIDIuMjczMjEwNTI1NTEyNjk1M10sIFsxNjQ1MjA1MDYxLjM4NTYxODcsIDEwNjExLCAzLjkzMTY5ODMyMjI5NjE0MjZdLCBbMTY0NTIwNTA2MS45MDg1OTgsIDEwNjQ3LCAyLjA2ODkyODk1Njk4NTQ3MzZdLCBbMTY0NTIwNTA2Mi4xNzIyNzQ4LCAxMDY2NSwgMi43ODcyMDU0NTc2ODczNzhdLCBbMTY0NTIwNTA2Mi40NDQyNTc3LCAxMDY4MywgMi4yODY4MTE4Mjg2MTMyODEyXSwgWzE2NDUyMDUwNjIuNzMyMDk0MywgMTA3MDEsIDIuMTM4MDI5MzM2OTI5MzIxM10sIFsxNjQ1MjA1MDYyLjg1MDU2NjksIDEwNzEwLCAyLjI1MzE4MTY5NTkzODExMDRdLCBbMTY0NTIwNTA2Mi45Nzk4NzA2LCAxMDcxOSwgMi4wMDMwNzg0NjA2OTMzNTk0XSwgWzE2NDUyMDUwNjMuMzQ5OTE0LCAxMDc0NiwgMi4yNDQxNzA2NjU3NDA5NjddLCBbMTY0NTIwNTA2My40OTIyNzk1LCAxMDc1NSwgMi4zNjEzNzkzODQ5OTQ1MDddLCBbMTY0NTIwNTA2My42MzkyMzEyLCAxMDc2NCwgMy4xMDQ1MTA1NDU3MzA1OTFdLCBbMTY0NTIwNTA2My43OTM1ODYsIDEwNzczLCAyLjM4MDExODM3MDA1NjE1MjNdLCBbMTY0NTIwNTA2My45NDc0MjQyLCAxMDc4MiwgMi4yMzQyOTkxODI4OTE4NDU3XSwgWzE2NDUyMDUwNjQuMDYyNDgxNiwgMTA3OTEsIDEuOTQwNzMyMjQwNjc2ODc5OV0sIFsxNjQ1MjA1MDY0LjQ3NDMxNTIsIDEwODE4LCAyLjE1ODE0MTEzNjE2OTQzMzZdLCBbMTY0NTIwNTA2NC42MTA0OTQ0LCAxMDgyNywgMi44ODI1MjI4MjE0MjYzOTE2XSwgWzE2NDUyMDUwNjQuOTg0MTIwNCwgMTA4NTQsIDMuNTkzMTA3OTM4NzY2NDc5NV0sIFsxNjQ1MjA1MDY1LjExNzQ1MTQsIDEwODYzLCAxLjkxOTYwNjIwODgwMTI2OTVdLCBbMTY0NTIwNTA2NS4yNTU4MjgsIDEwODcyLCAxLjgxNTk5NDk3Nzk1MTA0OThdLCBbMTY0NTIwNTA2NS41MjIxMjcsIDEwODkwLCAyLjMzOTI2MjI0NzA4NTU3MTNdLCBbMTY0NTIwNTA2NS42NDY1NjM1LCAxMDg5OSwgMi4xOTg0NDU3OTY5NjY1NTI3XSwgWzE2NDUyMDUwNjYuMDY4NzQzNSwgMTA5MjYsIDIuMzkxMDYzNjkwMTg1NTQ3XSwgWzE2NDUyMDUwNjYuMTk5NjQyLCAxMDkzNSwgMi40NzU5MjE4NjkyNzc5NTRdLCBbMTY0NTIwNTA2Ni4zMzY2Mzg3LCAxMDk0NCwgMi45NjYxMDE2NDY0MjMzNF0sIFsxNjQ1MjA1MDY2LjU4MzY4NzMsIDEwOTYyLCAyLjc1MTUyMzQ5NDcyMDQ1OV0sIFsxNjQ1MjA1MDY2LjczNzI3NTgsIDEwOTcxLCAyLjQ5NDM3OTA0MzU3OTEwMTZdLCBbMTY0NTIwNTA2Ny4yNTk2NzUsIDExMDA3LCAyLjA2OTcxNTk3NjcxNTA4OF0sIFsxNjQ1MjA1MDY3LjM4OTk3MSwgMTEwMTYsIDIuMzEwOTc5MTI3ODgzOTExXSwgWzE2NDUyMDUwNjcuNjc4MDI5MywgMTEwMzQsIDIuMjYxNzc0Nzc4MzY2MDg5XSwgWzE2NDUyMDUwNjguMDMxNzQ4MywgMTEwNjEsIDIuMTI0NTUxNzczMDcxMjg5XSwgWzE2NDUyMDUwNjguMTU3NjU0LCAxMTA3MCwgMi43NDE3MjU5MjE2MzA4NTk0XSwgWzE2NDUyMDUwNjguNTU1MzU2MywgMTEwOTcsIDIuNDYxNzExNDA2NzA3NzYzN10sIFsxNjQ1MjA1MDY4LjcwMTI5OCwgMTExMDYsIDQuMTQ1NTkxNzM1ODM5ODQ0XSwgWzE2NDUyMDUwNjkuNTI5NDQ1NiwgMTExNTEsIDIuNDQ2MjQ4NTMxMzQxNTUyN10sIFsxNjQ1MjA1MDY5Ljc5ODgwNzEsIDExMTY5LCAyLjc5Mjg5Mzg4NjU2NjE2Ml0sIFsxNjQ1MjA1MDY5LjkyNTAzMiwgMTExNzgsIDIuMDI0MzUwMTY2MzIwODAxXSwgWzE2NDUyMDUwNzAuMDY3NjQ1OCwgMTExODcsIDIuMjgzNzM1OTkwNTI0MjkyXSwgWzE2NDUyMDUwNzAuMTgzOTQ3MywgMTExOTYsIDMuNjg1MTE1MDk4OTUzMjQ3XSwgWzE2NDUyMDUwNzAuMzExNzA5MiwgMTEyMDUsIDQuODk4Njg5MjcwMDE5NTMxXSwgWzE2NDUyMDUwNzAuNDMyNjIwMywgMTEyMTQsIDIuNzA2MjY2ODgwMDM1NDAwNF0sIFsxNjQ1MjA1MDcwLjU2NDYxMDUsIDExMjIzLCAxLjk1OTc1NDcwNTQyOTA3NzFdLCBbMTY0NTIwNTA3MC45ODQ0MDMxLCAxMTI1MCwgMS45NTk2MjE5MDYyODA1MTc2XSwgWzE2NDUyMDUwNzEuMTQxNjkxNCwgMTEyNTksIDMuMDQzODkxMTkxNDgyNTQ0XSwgWzE2NDUyMDUwNzEuMjc2ODQ3OCwgMTEyNjgsIDIuMDgyMjY3NzYxMjMwNDY4OF0sIFsxNjQ1MjA1MDcxLjQwMzU0NTksIDExMjc3LCAyLjQwNjE2MzY5MjQ3NDM2NTJdLCBbMTY0NTIwNTA3MS42NDIxNzk1LCAxMTI5NSwgMi4xMzY4OTE2MDM0Njk4NDg2XSwgWzE2NDUyMDUwNzEuOTI3MDgyMywgMTEzMTMsIDMuNjM1NjU5MjE3ODM0NDcyN10sIFsxNjQ1MjA1MDcyLjA3NjM4NzIsIDExMzIyLCAzLjY4NTU3MDcxNjg1NzkxXSwgWzE2NDUyMDUwNzIuNDU5MjkwNywgMTEzNDksIDIuMTc1OTQwNzUyMDI5NDE5XSwgWzE2NDUyMDUwNzIuNTkwODkxOCwgMTEzNTgsIDQuMjczMjM2Mjc0NzE5MjM4XSwgWzE2NDUyMDUwNzIuOTc1NzUwMiwgMTEzODUsIDEuODQ3NTA0NjE1NzgzNjkxNF0sIFsxNjQ1MjA1MDczLjM0NTM2MTUsIDExNDEyLCAyLjEyMTUwODU5ODMyNzYzNjddLCBbMTY0NTIwNTA3My43OTA0OTY4LCAxMTQ0OCwgMy41MzY2NDkyMjcxNDIzMzRdLCBbMTY0NTIwNTA3NC4zODY2NjczLCAxMTQ5MywgMi4yMTI1NTk3MDAwMTIyMDddLCBbMTY0NTIwNTA3NC41MTI1NTIzLCAxMTUwMiwgMS45ODM5MDU1NTM4MTc3NDldLCBbMTY0NTIwNTA3NC42NTAzNDk0LCAxMTUxMSwgMi42Mzk4NTU2MjMyNDUyMzkzXSwgWzE2NDUyMDUwNzQuOTU1NDU5NiwgMTE1MjksIDIuNDczMjMwMTIzNTE5ODk3NV0sIFsxNjQ1MjA1MDc1LjI1NjYwMjMsIDExNTQ3LCAxLjgyODYxMTM3MzkwMTM2NzJdLCBbMTY0NTIwNTA3NS42MDAzMTQ0LCAxMTU3NCwgMi4wNTkzNjA1MDQxNTAzOTA2XSwgWzE2NDUyMDUwNzUuOTk5OTEsIDExNjAxLCAyLjA1NTc2NDQzNjcyMTgwMThdLCBbMTY0NTIwNTA3Ni4yNDg1MzYzLCAxMTYxOSwgNC4yMDM1ODQxOTQxODMzNV0sIFsxNjQ1MjA1MDc2LjY0OTMzNTYsIDExNjQ2LCAyLjgzNjY4NzU2NDg0OTg1MzVdLCBbMTY0NTIwNTA3Ny4wNzQzMzMsIDExNjczLCAyLjM0NTk0ODkzNDU1NTA1MzddLCBbMTY0NTIwNTA3Ny4zMDAyNTM0LCAxMTY5MSwgMi43MzQ0NDQzNzk4MDY1MTg2XSwgWzE2NDUyMDUwNzcuNDI5NzYwNSwgMTE3MDAsIDIuNTk5NDI2MDMxMTEyNjcxXSwgWzE2NDUyMDUwNzcuNjk1NTM4MywgMTE3MTgsIDIuMjIxMTY1MTgwMjA2Mjk5XSwgWzE2NDUyMDUwNzcuODMyNzc1LCAxMTcyNywgMS44NTIwMjc0MTYyMjkyNDhdLCBbMTY0NTIwNTA3OC4wOTYyNjgsIDExNzQ1LCAyLjM0MzAzMDkyOTU2NTQyOTddLCBbMTY0NTIwNTA3OC4zNzQ1NTI3LCAxMTc2MywgMS45NDEzNzQ2NTk1MzgyNjldLCBbMTY0NTIwNTA3OC45Mjg3ODk5LCAxMTc5OSwgMi40NDg3ODMxNTkyNTU5ODE0XSwgWzE2NDUyMDUwNzkuNDQ1OTU5LCAxMTgzNSwgMi4wNTA1MzM1MzMwOTYzMTM1XSwgWzE2NDUyMDUwNzkuNTcwOTE3NCwgMTE4NDQsIDMuMjczNjg1MjE2OTAzNjg2NV0sIFsxNjQ1MjA1MDgwLjMxNTQxMDksIDExODg5LCAyLjQ2MzM2MTk3ODUzMDg4NF0sIFsxNjQ1MjA1MDgwLjU0OTAxLCAxMTkwNywgMi4xMjI0MjYwMzMwMjAwMTk1XSwgWzE2NDUyMDUwODAuNjcxOTI3NSwgMTE5MTYsIDIuNzQ0MjI1NzQwNDMyNzM5M10sIFsxNjQ1MjA1MDgwLjkzNDUyMiwgMTE5MzQsIDIuMzk3NzY2ODI4NTM2OTg3M10sIFsxNjQ1MjA1MDgxLjA2MzQ4LCAxMTk0MywgMi42MzkyOTcwMDg1MTQ0MDQzXSwgWzE2NDUyMDUwODEuMzM3NzM5NSwgMTE5NjEsIDMuMjE1MDI0NzA5NzAxNTM4XSwgWzE2NDUyMDUwODIuMzAwMDQzLCAxMjAyNCwgMS45OTM4MDEzNTUzNjE5Mzg1XSwgWzE2NDUyMDUwODMuNTEzNjkwNSwgMTIxMDUsIDQuNjEzMTUzNDU3NjQxNjAyXSwgWzE2NDUyMDUwODMuNjMyMTAxOCwgMTIxMTQsIDQuNjQ2MDU2NjUyMDY5MDkyXSwgWzE2NDUyMDUwODMuODk2MDkyLCAxMjEzMiwgMS45MDMyMDA1MDcxNjQwMDE1XSwgWzE2NDUyMDUwODQuMDQ0MDYsIDEyMTQxLCAyLjUwOTIwNzk2Mzk0MzQ4MTRdLCBbMTY0NTIwNTA4NC40Njc2OTQzLCAxMjE2OCwgMi40OTExNTE4MDk2OTIzODNdLCBbMTY0NTIwNTA4NC41OTUzODcyLCAxMjE3NywgMS45MDczODQ4NzI0MzY1MjM0XSwgWzE2NDUyMDUwODQuODgwNzk2LCAxMjE5NSwgMi41OTA1MTU2MTM1NTU5MDhdLCBbMTY0NTIwNTA4NS4yNjU0NjQ4LCAxMjIyMiwgMi4wNzIyMTAwNzM0NzEwNjkzXSwgWzE2NDUyMDUwODUuNDAxNDQwOSwgMTIyMzEsIDIuMDU2MDI4ODQyOTI2MDI1NF0sIFsxNjQ1MjA1MDg1LjY2NjAyOCwgMTIyNDksIDIuNjMxMjY0NDQ4MTY1ODkzNl0sIFsxNjQ1MjA1MDg2LjE0NTg4NjQsIDEyMjg1LCAxLjczMTA5ODUzMjY3NjY5NjhdLCBbMTY0NTIwNTA4Ni4yNjIxNzE3LCAxMjI5NCwgMi4wMTYxNDQ3NTI1MDI0NDE0XSwgWzE2NDUyMDUwODYuMzczMjI5NSwgMTIzMDMsIDIuNDg0NzM3Mzk2MjQwMjM0NF0sIFsxNjQ1MjA1MDg2LjQ4NTM4NDUsIDEyMzEyLCAyLjAyMzY0MjUzOTk3ODAyNzNdLCBbMTY0NTIwNTA4Ni41OTI1ODkxLCAxMjMyMSwgMi4wMDIwMTUxMTM4MzA1NjY0XSwgWzE2NDUyMDUwODcuMTUzOTIxMSwgMTIzNTcsIDEuODI4NzkyNDUyODEyMTk0OF0sIFsxNjQ1MjA1MDg3LjI3MDExODcsIDEyMzY2LCAyLjE1MDQxMDE3NTMyMzQ4NjNdLCBbMTY0NTIwNTA4Ny41MTQ5MzU1LCAxMjM4NCwgMi4xMDE0MTE4MTk0NTgwMDhdLCBbMTY0NTIwNTA4Ny42NTEzOTQ4LCAxMjM5MywgMy4xMzk5MTAyMjEwOTk4NTM1XSwgWzE2NDUyMDUwODguMjExNzYyNCwgMTI0MjksIDMuNzk2NzQ1Nzc3MTMwMTI3XSwgWzE2NDUyMDUwODguMzQwMTcwNCwgMTI0MzgsIDIuMDQ1NTIyNjg5ODE5MzM2XSwgWzE2NDUyMDUwODguODk1MjkxOCwgMTI0NzQsIDMuMjMxNzM1OTQ0NzQ3OTI1XSwgWzE2NDUyMDUwODkuMDA4MTE2MiwgMTI0ODMsIDIuMDU5MDgzMjIzMzQyODk1NV0sIFsxNjQ1MjA1MDg5LjUzOTQ3ODMsIDEyNTE5LCAxLjkwMTQwOTc0NTIxNjM2OTZdLCBbMTY0NTIwNTA4OS45NjM3NDQsIDEyNTQ2LCAyLjc3NTE3MDU2NDY1MTQ4OTNdLCBbMTY0NTIwNTA5MC4zNjgyODYsIDEyNTczLCAyLjIxOTkxMDE0NDgwNTkwOF0sIFsxNjQ1MjA1MDkwLjUyNDc5OTYsIDEyNTgyLCAxLjc4NDI1MjA0NzUzODc1NzNdLCBbMTY0NTIwNTA5MC44MDQyNDA1LCAxMjYwMCwgMi40OTQ0MjQzNDMxMDkxMzFdLCBbMTY0NTIwNTA5MS4xNTA3NjE0LCAxMjYwOSwgMy42MTk1MDQyMTMzMzMxM10sIFsxNjQ1MjA1MDkxLjU4NjE3MTQsIDEyNjM2LCAyLjE1NDU5MzIyOTI5MzgyMzJdLCBbMTY0NTIwNTA5MS44NDg3NTY2LCAxMjY1NCwgMi4zNzkyMjMxMDgyOTE2MjZdLCBbMTY0NTIwNTA5Mi45MjA1NzUsIDEyNzI2LCAyLjg4NTk3NjU1Mjk2MzI1N10sIFsxNjQ1MjA1MDkzLjI1NTczNzMsIDEyNzUzLCAyLjIwNDk1NzI0Njc4MDM5NTVdLCBbMTY0NTIwNTA5My4zNzQwMDksIDEyNzYyLCAyLjE3NTQ2MzQzODAzNDA1NzZdLCBbMTY0NTIwNTA5My42MzM0MDU0LCAxMjc4MCwgMi40MjAwMjE3NzIzODQ2NDM2XSwgWzE2NDUyMDUwOTMuODYxNzI3NSwgMTI3OTgsIDIuNTU1MTAxMzk0NjUzMzIwM10sIFsxNjQ1MjA1MDkzLjk4Nzg5MTQsIDEyODA3LCAxLjg5NjI4ODYzMzM0NjU1NzZdLCBbMTY0NTIwNTA5NS4yMDY3NzYsIDEyODg4LCAxLjkzMTk4MTA4NjczMDk1N10sIFsxNjQ1MjA1MDk1LjM2NDE5MjIsIDEyODk3LCAyLjI2Njk5NTkwNjgyOTgzNF0sIFsxNjQ1MjA1MDk1LjQ4MTMzMjMsIDEyOTA2LCAyLjI3NzAwMTE0MjUwMTgzMV0sIFsxNjQ1MjA1MDk1LjU5NTAzNDgsIDEyOTE1LCAyLjE5MzMwNDA2MTg4OTY0ODRdLCBbMTY0NTIwNTA5NS44MzQxLCAxMjkzMywgMi45MzMzOTk5MTU2OTUxOTA0XSwgWzE2NDUyMDUwOTYuMTIyNzY4MiwgMTI5NTEsIDIuMDE3MjIzMzU4MTU0Mjk3XSwgWzE2NDUyMDUwOTYuMjQ4ODM4LCAxMjk2MCwgMy4zMDI5NTU4NjU4NTk5ODU0XSwgWzE2NDUyMDUwOTYuMzc1Nzc4MiwgMTI5NjksIDMuNjU5ODg0MjE0NDAxMjQ1XSwgWzE2NDUyMDUwOTYuNTE2MTk3LCAxMjk3OCwgMi4zNTQxNTYwMTczMDM0NjddLCBbMTY0NTIwNTA5Ni44OTk4MjEzLCAxMzAwNSwgMi4wNzUzNzc0NjQyOTQ0MzM2XSwgWzE2NDUyMDUwOTcuMTcwNDA2NiwgMTMwMjMsIDIuNDgzOTYxODIwNjAyNDE3XSwgWzE2NDUyMDUwOTcuMjkyMDY1NCwgMTMwMzIsIDIuNTU5OTExNDg5NDg2Njk0M10sIFsxNjQ1MjA1MDk3LjQwMzcyOSwgMTMwNDEsIDIuMTYxODQ0MDE1MTIxNDZdLCBbMTY0NTIwNTA5Ny41MzQ3OTMsIDEzMDUwLCAxLjg5NTYyOTc2MzYwMzIxMDRdLCBbMTY0NTIwNTA5Ny42NTM1ODgzLCAxMzA1OSwgMS44NDU0NDYxMDk3NzE3Mjg1XSwgWzE2NDUyMDUwOTcuNzkwNTE0NSwgMTMwNjgsIDEuOTQxMTc2NDE0NDg5NzQ2XSwgWzE2NDUyMDUwOTcuOTI2Mzk5NSwgMTMwNzcsIDIuMjE0NzE0NTI3MTMwMTI3XSwgWzE2NDUyMDUwOTguMTY4NzQwNywgMTMwOTUsIDEuOTg1NTI0NTM1MTc5MTM4Ml0sIFsxNjQ1MjA1MDk4LjMwNTM3OSwgMTMxMDQsIDIuODM3MDYwNjg5OTI2MTQ3NV0sIFsxNjQ1MjA1MDk4LjQyNjAyMzIsIDEzMTEzLCAyLjU2Mzg2MDE3Nzk5Mzc3NDRdLCBbMTY0NTIwNTA5OC41Njc0MTMzLCAxMzEyMiwgMi4xMTI3MzU1MDk4NzI0MzY1XSwgWzE2NDUyMDUwOTguNzA0NzI5LCAxMzEzMSwgMS44ODg4Njk0MDQ3OTI3ODU2XSwgWzE2NDUyMDUwOTguODQyOTk0NSwgMTMxNDAsIDIuMzM1MzQ0MDc2MTU2NjE2XSwgWzE2NDUyMDUwOTguOTYxNzI0NSwgMTMxNDksIDEuOTk1MjE1NTM1MTYzODc5NF0sIFsxNjQ1MjA1MDk5LjA3OTQzNTYsIDEzMTU4LCAxLjk4MDYzOTIxOTI4NDA1NzZdLCBbMTY0NTIwNTA5OS4xOTQ2OTMsIDEzMTY3LCAyLjAxODQwNjYyOTU2MjM3OF0sIFsxNjQ1MjA1MDk5LjMwMzk0MjIsIDEzMTc2LCAyLjQyMTg1OTc0MTIxMDkzNzVdLCBbMTY0NTIwNTA5OS40MTM1MzYsIDEzMTg1LCAxLjgzNjk3NDg1OTIzNzY3MV0sIFsxNjQ1MjA1MTAwLjE1ODA0MjIsIDEzMjM5LCAyLjAwNzA0MTkzMTE1MjM0MzhdLCBbMTY0NTIwNTEwMC41Mjk3MTM0LCAxMzI2NiwgMy4wNDE0OTc0Njg5NDgzNjQzXSwgWzE2NDUyMDUxMDAuNjYxNDUwMSwgMTMyNzUsIDEuNzQ4MjY4MzY1ODU5OTg1NF0sIFsxNjQ1MjA1MTAwLjkwMTkyOTQsIDEzMjkzLCAxLjg5MjE3NjAzMjA2NjM0NTJdLCBbMTY0NTIwNTEwMS4wMjMwMDYyLCAxMzMwMiwgMi4wNTU5MjM5Mzg3NTEyMjA3XSwgWzE2NDUyMDUxMDEuNTA5MDE4NywgMTMzMzgsIDIuMzk2NjMzMTQ4MTkzMzU5NF0sIFsxNjQ1MjA1MTAxLjgzMTEyNzYsIDEzMzQ3LCAxLjYyNzIxMTgwOTE1ODMyNTJdLCBbMTY0NTIwNTEwMS45ODc0OTEsIDEzMzU2LCAxLjk4MzAwMTQ3MDU2NTc5Nl0sIFsxNjQ1MjA1MTAyLjExOTkwMiwgMTMzNjUsIDMuNzI1MzQwNjA0NzgyMTA0NV0sIFsxNjQ1MjA1MTAyLjU1OTc0OTQsIDEzMzkyLCAyLjY0MTcyMzM5NDM5MzkyMV0sIFsxNjQ1MjA1MTAyLjY3NjExNiwgMTM0MDEsIDIuMjI5NDgyNDEyMzM4MjU3XSwgWzE2NDUyMDUxMDIuNzkxODIzMSwgMTM0MTAsIDIuMTY4NzUwMDQ3NjgzNzE2XSwgWzE2NDUyMDUxMDIuOTE5NTczNSwgMTM0MTksIDEuODYzMjk3MzQzMjU0MDg5NF0sIFsxNjQ1MjA1MTAzLjA0MTgxMDUsIDEzNDI4LCAyLjEyMzExNjczMTY0MzY3NjhdLCBbMTY0NTIwNTEwMy4yODcwNDIxLCAxMzQ0NiwgMi4yOTY4OTg2MDM0MzkzMzFdLCBbMTY0NTIwNTEwMy4zOTk4OTgzLCAxMzQ1NSwgMi43MjE0NzQ2NDc1MjE5NzI3XSwgWzE2NDUyMDUxMDMuOTc3OTE2LCAxMzQ5MSwgMi43ODc3MjkyNjMzMDU2NjRdLCBbMTY0NTIwNTEwNC4xMTE5NjE0LCAxMzUwMCwgMS45MTU1MjIwOTg1NDEyNTk4XSwgWzE2NDUyMDUxMDQuMjI0NDQ2OCwgMTM1MDksIDEuOTA0NjYwNTgyNTQyNDE5NF0sIFsxNjQ1MjA1MTA0LjQ1NDEwMzIsIDEzNTI3LCAzLjA2NjAwMjg0NTc2NDE2XSwgWzE2NDUyMDUxMDQuODMwNjExMiwgMTM1NTQsIDIuMTUwMzMzODgxMzc4MTc0XSwgWzE2NDUyMDUxMDUuMzYwMzA5LCAxMzU5MCwgMi44Nzc5ODY2Njk1NDA0MDUzXSwgWzE2NDUyMDUxMDUuNDk0MTMzLCAxMzU5OSwgMS45NTQ4MjY1OTMzOTkwNDc5XSwgWzE2NDUyMDUxMDUuNjQ0NDY0LCAxMzYwOCwgMS44ODAxODQ0MTIwMDI1NjM1XSwgWzE2NDUyMDUxMDUuOTI0NTgyNSwgMTM2MjYsIDIuMDg1Mjg0NzA5OTMwNDJdLCBbMTY0NTIwNTEwNi4yMDM4NzgsIDEzNjQ0LCAyLjY1NjEyNzkyOTY4NzVdLCBbMTY0NTIwNTEwNi4zNTQ2MzYsIDEzNjUzLCAyLjQxNjI5MjY2NzM4ODkxNl0sIFsxNjQ1MjA1MTA3LjMwNDQ3NTMsIDEzNzE2LCAyLjg2NTE1MTY0Mzc1MzA1MThdLCBbMTY0NTIwNTEwNy43Mzk0OTcsIDEzNzQzLCAxLjg4MTc5MzYxODIwMjIwOTVdLCBbMTY0NTIwNTEwOC4wMTQzODk1LCAxMzc2MSwgMS45NjI5ODM5NjU4NzM3MTgzXSwgWzE2NDUyMDUxMDguMjc2NzU1LCAxMzc3OSwgMy4wOTg1Njc3MjQyMjc5MDUzXSwgWzE2NDUyMDUxMDguNjc5MDEyMywgMTM4MDYsIDIuNzMzNzkwMTU5MjI1NDY0XSwgWzE2NDUyMDUxMDguNzk2MzksIDEzODE1LCAxLjgzMjY4MjM3MTEzOTUyNjRdLCBbMTY0NTIwNTEwOS4xNzM5MTQyLCAxMzg0MiwgMi4wODYzNzY2NjcwMjI3MDVdLCBbMTY0NTIwNTEwOS4yODk1NTUzLCAxMzg1MSwgMi4yODE5NjQ3Nzg5MDAxNDY1XSwgWzE2NDUyMDUxMDkuNTMxMjIxLCAxMzg2OSwgMi4zNTMzNTI3ODUxMTA0NzM2XSwgWzE2NDUyMDUxMDkuNjgwNTc2LCAxMzg3OCwgMi4wNTM3MzgxMTcyMTgwMTc2XSwgWzE2NDUyMDUxMTAuMjE3Nzk4NSwgMTM5MTQsIDIuNDgzNDI1MTQwMzgwODU5NF0sIFsxNjQ1MjA1MTEwLjQ5OTU5NjgsIDEzOTMyLCAyLjE3MjE1MDYxMTg3NzQ0MTRdLCBbMTY0NTIwNTExMC42MzEwNDEsIDEzOTQxLCAyLjExMjQ5OTQ3NTQ3OTEyNl0sIFsxNjQ1MjA1MTExLjA1MDQ3MDQsIDEzOTY4LCAxLjg0NTc4Mzk0ODg5ODMxNTRdLCBbMTY0NTIwNTExMS4xNjM1NTU2LCAxMzk3NywgMi41NjU1NDI2OTc5MDY0OTRdLCBbMTY0NTIwNTExMS4yODk2NTQzLCAxMzk4NiwgNC4wMTYxMTA4OTcwNjQyMDldLCBbMTY0NTIwNTExMS41Mzg0ODcyLCAxNDAwNCwgMi4yMTkxNDQ1ODI3NDg0MTNdLCBbMTY0NTIwNTExMS44MDUxMTYyLCAxNDAyMiwgMi4xNzY4NDY3NDI2MzAwMDVdLCBbMTY0NTIwNTExMi4xNjQxMDQsIDE0MDQ5LCAyLjExNjE2NDY4NDI5NTY1NDNdLCBbMTY0NTIwNTExMi4zOTQxMzM2LCAxNDA2NywgMi4yNTUwMTAzNjY0Mzk4MTkzXSwgWzE2NDUyMDUxMTIuODI3ODEyNCwgMTQwODUsIDEuOTc5MzcyMzgyMTY0MDAxNV0sIFsxNjQ1MjA1MTEyLjk4NTc4NTUsIDE0MDk0LCAyLjM0OTU1MDQ4NTYxMDk2Ml0sIFsxNjQ1MjA1MTEzLjExODMwMDIsIDE0MTAzLCAxLjk4MzI4NzU3Mjg2MDcxNzhdLCBbMTY0NTIwNTExMy40MDI1OTU1LCAxNDEyMSwgMi4wMTg0OTY3NTE3ODUyNzgzXSwgWzE2NDUyMDUxMTMuNjY3NzU4LCAxNDEzOSwgMS45ODUxMzA0MjkyNjc4ODMzXSwgWzE2NDUyMDUxMTMuNzg1NTg2LCAxNDE0OCwgMS43NDM3ODAwMTY4OTkxMDg5XSwgWzE2NDUyMDUxMTMuOTIxOTIyMiwgMTQxNTcsIDIuMzc5ODQ0MTg4NjkwMTg1NV0sIFsxNjQ1MjA1MTE0LjA1NzQxNjIsIDE0MTY2LCAxLjkyMTEwOTA4MDMxNDYzNjJdLCBbMTY0NTIwNTExNC40NTcyNDEzLCAxNDE5MywgMi4wMjcxNTUxNjA5MDM5MzA3XSwgWzE2NDUyMDUxMTQuNjc0NTk4LCAxNDIxMSwgMi4xMzY0ODM0MzA4NjI0MjY4XSwgWzE2NDUyMDUxMTQuNzg3MDQwNywgMTQyMjAsIDIuODU1ODQ5NzQyODg5NDA0M10sIFsxNjQ1MjA1MTE0LjkwMzU2NTIsIDE0MjI5LCAyLjYxMDY4MjI0OTA2OTIxNF0sIFsxNjQ1MjA1MTE1LjAxMTE2NTYsIDE0MjM4LCAyLjE0ODkzNTMxNzk5MzE2NF0sIFsxNjQ1MjA1MTE1LjE0Mzg1NDksIDE0MjQ3LCAyLjExODgwMjMwOTAzNjI1NV0sIFsxNjQ1MjA1MTE1LjUyMjY5MzYsIDE0Mjc0LCAyLjA0MjI2Nzc5OTM3NzQ0MTRdLCBbMTY0NTIwNTExNi4xMjUxNzkzLCAxNDMxOSwgMy4wMTcyNDE5NTQ4MDM0NjddLCBbMTY0NTIwNTExNi44MTI3NjMyLCAxNDM2NCwgMS45MzEzMzEyNzY4OTM2MTU3XSwgWzE2NDUyMDUxMTYuOTQyNTQ5NywgMTQzNzMsIDIuOTE4NTA1MTkxODAyOTc4NV0sIFsxNjQ1MjA1MTE3LjA3NjAzMzYsIDE0MzgyLCAyLjM0MzI4NjUxNDI4MjIyNjZdLCBbMTY0NTIwNTExNy42NDQxNywgMTQ0MTgsIDIuODU3NDIxMTU5NzQ0MjYyN10sIFsxNjQ1MjA1MTE3LjgwNDI4NDYsIDE0NDI3LCAyLjUyNjM5NTA4MjQ3Mzc1NV0sIFsxNjQ1MjA1MTE3LjkzODg2MTQsIDE0NDM2LCAyLjY5ODA0MzM0NjQwNTAyOTNdLCBbMTY0NTIwNTExOC44OTU4Mzg3LCAxNDQ5OSwgMS44NTc0NjI4ODI5OTU2MDU1XSwgWzE2NDUyMDUxMTkuMDEyMTgzNywgMTQ1MDgsIDEuOTI3MzQ4NjEzNzM5MDEzN10sIFsxNjQ1MjA1MTE5LjI5MjY1MDIsIDE0NTI2LCAyLjE2MjI5OTYzMzAyNjEyM10sIFsxNjQ1MjA1MTE5LjQxMjg0NDIsIDE0NTM1LCAxLjgyNDQyMTQwNTc5MjIzNjNdLCBbMTY0NTIwNTExOS41MjY0OTI2LCAxNDU0NCwgMy4xMDA3NzY2NzIzNjMyODEyXSwgWzE2NDUyMDUxMTkuNjUyODU1OSwgMTQ1NTMsIDIuMTQyNTUwMjMwMDI2MjQ1XSwgWzE2NDUyMDUxMjAuMTk5OTMyMywgMTQ1ODksIDMuMjA4NzU4MzU0MTg3MDExN10sIFsxNjQ1MjA1MTIwLjQ2MDU5MSwgMTQ2MDcsIDIuMTE5NjYzNzE1MzYyNTQ5XSwgWzE2NDUyMDUxMjAuNjkwNDkxNywgMTQ2MjUsIDMuMjEwMzY5MzQ4NTI2MDAxXSwgWzE2NDUyMDUxMjAuOTIzNDEzMywgMTQ2NDMsIDIuMjMxNjYxMzE5NzMyNjY2XSwgWzE2NDUyMDUxMjEuMDM1NzQ5NCwgMTQ2NTIsIDIuMDM5OTMwODIwNDY1MDg4XSwgWzE2NDUyMDUxMjEuNDc4ODk3LCAxNDY3OSwgMy4wNDAwODcyMjMwNTI5Nzg1XSwgWzE2NDUyMDUxMjEuNjA4MzU4LCAxNDY4OCwgMi42OTQ5OTA4NzMzMzY3OTJdLCBbMTY0NTIwNTEyMi4xMjY2NTQxLCAxNDcyNCwgMi4wODg4ODc0NTMwNzkyMjM2XSwgWzE2NDUyMDUxMjIuMjY2MDYyNywgMTQ3MzMsIDIuMDAzMDA1MjY2MTg5NTc1XSwgWzE2NDUyMDUxMjIuNDA0MjYsIDE0NzQyLCAyLjI1MDgzOTk0ODY1NDE3NV0sIFsxNjQ1MjA1MTIyLjUyNDQ5NDQsIDE0NzUxLCAxLjgyNjc3MDY2MzI2MTQxMzZdLCBbMTY0NTIwNTEyMi43Nzc1OTc3LCAxNDc2OSwgMS43NDQ4NjA2NDkxMDg4ODY3XSwgWzE2NDUyMDUxMjIuODkzNzQ0NSwgMTQ3NzgsIDIuMjY1MzExNDc5NTY4NDgxNF0sIFsxNjQ1MjA1MTIzLjY0Mzg5NTYsIDE0ODIzLCAzLjE3NDc5MTgxMjg5NjcyODVdLCBbMTY0NTIwNTEyMy43NTIzNDMyLCAxNDgzMiwgMS45NzIzNDExNzk4NDc3MTczXSwgWzE2NDUyMDUxMjMuOTczOTA1OCwgMTQ4NTAsIDIuMjQ0MTUxODMwNjczMjE3OF0sIFsxNjQ1MjA1MTI0LjE5NzM2NTMsIDE0ODY4LCAzLjA3Nzk3OTU2NDY2Njc0OF0sIFsxNjQ1MjA1MTI0LjMwNzI2NzcsIDE0ODc3LCAyLjMyMjA4NjA5NTgwOTkzNjVdLCBbMTY0NTIwNTEyNC40MTU3NDM0LCAxNDg4NiwgMi4xMzA2MDU0NTkyMTMyNTddLCBbMTY0NTIwNTEyNC41NDc2NjQyLCAxNDg5NSwgMi4xODM4MjIxNTQ5OTg3NzkzXSwgWzE2NDUyMDUxMjQuODAyMzg5LCAxNDkxMywgMS44MjkxMDQ2NjE5NDE1MjgzXSwgWzE2NDUyMDUxMjUuMDg2NDc0LCAxNDkzMSwgMi41OTU4ODU5OTIwNTAxNzFdLCBbMTY0NTIwNTEyNS4xOTkxNDU2LCAxNDk0MCwgMi43MTE4Njc4MDkyOTU2NTQzXSwgWzE2NDUyMDUxMjUuNTM2MzIxOSwgMTQ5NjcsIDIuMjQwMTUwOTI4NDk3MzE0NV0sIFsxNjQ1MjA1MTI1Ljc3MTQxMDUsIDE0OTg1LCAxLjY2NDE5NTA2MDcyOTk4MDVdLCBbMTY0NTIwNTEyNi4wMjIzMDc5LCAxNTAwMywgMS45Nzk3NzYzODI0NDYyODldLCBbMTY0NTIwNTEyNi40MDgxMjU0LCAxNTAzMCwgMi43Nzg5MDQxOTk2MDAyMTk3XSwgWzE2NDUyMDUxMjYuNTI4ODA0MywgMTUwMzksIDMuNDM1NzQzODA4NzQ2MzM4XSwgWzE2NDUyMDUxMjcuMDY5NzEyMiwgMTUwNzUsIDEuNjY0MzcwNjU2MDEzNDg4OF0sIFsxNjQ1MjA1MTI3LjQ3NTAwNjYsIDE1MTAyLCAyLjQwODA0NzY3NjA4NjQyNl0sIFsxNjQ1MjA1MTI3LjcyNzQ1NzgsIDE1MTIwLCAyLjQwMDg3MjIzMDUyOTc4NV0sIFsxNjQ1MjA1MTI3Ljg1MTk3NTcsIDE1MTI5LCAyLjA0NjQ1MDM3NjUxMDYyXSwgWzE2NDUyMDUxMjcuOTg3NTU4NiwgMTUxMzgsIDEuOTEzNzgwMjEyNDAyMzQzOF0sIFsxNjQ1MjA1MTI4LjExMzI1ODYsIDE1MTQ3LCAxLjg5NjE4NTk5NDE0ODI1NDRdLCBbMTY0NTIwNTEyOC41MDMwMTIsIDE1MTc0LCAyLjM4MTkzMzIxMjI4MDI3MzRdLCBbMTY0NTIwNTEyOC42NDI4MDAzLCAxNTE4MywgMi4wOTU4MzExNTU3NzY5Nzc1XSwgWzE2NDUyMDUxMjguNzU0NjAwOCwgMTUxOTIsIDIuMjE3ODI5OTQyNzAzMjQ3XSwgWzE2NDUyMDUxMjguODY2MjA1NSwgMTUyMDEsIDEuNzk5Nzg0NDIxOTIwNzc2NF0sIFsxNjQ1MjA1MTI4Ljk3NjU2MzcsIDE1MjEwLCAyLjAyODU0MTgwMzM1OTk4NTRdLCBbMTY0NTIwNTEyOS4wODU3OTU0LCAxNTIxOSwgMi43MTAyODY2MTcyNzkwNTI3XSwgWzE2NDUyMDUxMjkuNDYyNTE4NywgMTUyNDYsIDIuNjMxMzQ3ODk0NjY4NTc5XSwgWzE2NDUyMDUxMjkuNTc5NzY1MywgMTUyNTUsIDIuNDQzOTc0OTcxNzcxMjQwMl0sIFsxNjQ1MjA1MTI5LjcyMTIzOSwgMTUyNjQsIDIuNDIxNzA2Njc2NDgzMTU0M10sIFsxNjQ1MjA1MTI5Ljk3OTExNjQsIDE1MjgyLCAyLjAyMDI1NjA0MjQ4MDQ2ODhdLCBbMTY0NTIwNTEzMC4xMDY2ODgsIDE1MjkxLCAyLjI0NzE3NzYwMDg2MDU5NTddLCBbMTY0NTIwNTEzMC4yMjg5MjM2LCAxNTMwMCwgMi41Mjc3MTUyMDYxNDYyNDAyXSwgWzE2NDUyMDUxMzAuMzYxMTM3NiwgMTUzMDksIDIuMjA1NTQzNzU2NDg0OTg1NF0sIFsxNjQ1MjA1MTMwLjYzNDI2NzMsIDE1MzI3LCAxLjk5MjY3NjQ5NjUwNTczNzNdLCBbMTY0NTIwNTEzMC44OTczNjAzLCAxNTM0NSwgMi4xNDQyMTQ2MzAxMjY5NTNdLCBbMTY0NTIwNTEzMS4yMzE5NDM4LCAxNTM3MiwgMy44NDAzNjk3MDEzODU0OThdLCBbMTY0NTIwNTEzMS41MTM3NzkyLCAxNTM5MCwgMi4wOTI3ODcwMjczNTkwMDldLCBbMTY0NTIwNTEzMS42Mzc3NjMsIDE1Mzk5LCAxLjgzNTYyMjE5MTQyOTEzODJdLCBbMTY0NTIwNTEzMS43NjU5NTYyLCAxNTQwOCwgMS45MTcwMTI2OTE0OTc4MDI3XSwgWzE2NDUyMDUxMzEuODk0OTQ1NCwgMTU0MTcsIDEuODA5NTI4OTQ2ODc2NTI1OV0sIFsxNjQ1MjA1MTMyLjM2Nzk3MzMsIDE1NDUzLCAyLjAxMTc4NDA3NjY5MDY3NF0sIFsxNjQ1MjA1MTMyLjY0NjA1MjYsIDE1NDcxLCAyLjc3NzMxNDkwMTM1MTkyODddLCBbMTY0NTIwNTEzMi43NzI5NzI2LCAxNTQ4MCwgMS44MjYzMzE2MTU0NDc5OThdLCBbMTY0NTIwNTEzMy4xMzEwNDUzLCAxNTUwNywgMi4zMzg2MDM0OTY1NTE1MTM3XSwgWzE2NDUyMDUxMzMuMjQxNjk5MiwgMTU1MTYsIDEuNzgzNDc1MDQxMzg5NDY1M10sIFsxNjQ1MjA1MTMzLjM1MzIzMjQsIDE1NTI1LCAxLjk0MjY4ODQ2NTExODQwODJdLCBbMTY0NTIwNTEzMy40Nzc4MTIzLCAxNTUzNCwgMi4xMzczNDM2NDUwOTU4MjVdLCBbMTY0NTIwNTEzNC4yNzg5NzI0LCAxNTU3OSwgMi41NTIxNjMzNjI1MDMwNTE4XSwgWzE2NDUyMDUxMzUuMzQ4MzAwNSwgMTU2NTEsIDEuNzk0NzUxNzYzMzQzODExXSwgWzE2NDUyMDUxMzUuNDkzMDczNywgMTU2NjAsIDMuMjg0MzA3NzE4Mjc2OTc3NV0sIFsxNjQ1MjA1MTM1LjYyNTM1MjksIDE1NjY5LCAyLjAzODI0OTczMTA2Mzg0MjhdLCBbMTY0NTIwNTEzNi4wMzgzMDQsIDE1Njk2LCA0LjE2NDY3MTQyMTA1MTAyNV0sIFsxNjQ1MjA1MTM2LjI3MjIwMzcsIDE1NzE0LCAzLjQwNjk0Mzc5ODA2NTE4NTVdLCBbMTY0NTIwNTEzNi4zODk0MDIyLCAxNTcyMywgMy4yNjA5MTI2NTY3ODQwNTc2XSwgWzE2NDUyMDUxMzYuNTI2MjY0LCAxNTczMiwgNC4xMzU4MDUxMzAwMDQ4ODNdLCBbMTY0NTIwNTEzNi42ODAxMTMzLCAxNTc0MSwgMi4xMjE3Nzg5NjQ5OTYzMzhdLCBbMTY0NTIwNTEzNi44MzA1OTksIDE1NzUwLCAyLjYyODQ5NzEyMzcxODI2MTddLCBbMTY0NTIwNTEzNi45OTE4NjUsIDE1NzU5LCAyLjI1OTkwMDU2OTkxNTc3MTVdLCBbMTY0NTIwNTEzNy4xNDU3NTA4LCAxNTc2OCwgMi4wMDc2ODY2MTQ5OTAyMzQ0XSwgWzE2NDUyMDUxMzcuNDU0NDQ1MSwgMTU3ODYsIDIuMTg5MjQ5OTkyMzcwNjA1NV0sIFsxNjQ1MjA1MTM3LjYwODI1NDcsIDE1Nzk1LCAyLjEyNDczNjMwOTA1MTUxMzddLCBbMTY0NTIwNTEzOC4wMDg0NDk4LCAxNTgyMiwgMS45MzUyNjkxMTczNTUzNDY3XSwgWzE2NDUyMDUxMzguODAxNzk2MiwgMTU4NjcsIDIuMjIzNDc5NTA5MzUzNjM3N10sIFsxNjQ1MjA1MTM4Ljk1ODU3MTIsIDE1ODc2LCAxLjk3NjYzNTQ1NjA4NTIwNV0sIFsxNjQ1MjA1MTM5LjIxNTMzMDYsIDE1ODk0LCAxLjk5Njk1NzMwMjA5MzUwNTldLCBbMTY0NTIwNTEzOS4zMzU3NDcyLCAxNTkwMywgMi4xNzA5MjM3MDk4NjkzODQ4XSwgWzE2NDUyMDUxMzkuNTk1NDEsIDE1OTIxLCAxLjg0MTA1NzQxOTc3NjkxNjVdLCBbMTY0NTIwNTE0MC40NDM1NjIzLCAxNTk4NCwgMi4zODA1MDI3MDA4MDU2NjRdLCBbMTY0NTIwNTE0MC41NjIzMjc5LCAxNTk5MywgMi4xODEzNjMzNDQxOTI1MDVdLCBbMTY0NTIwNTE0MC42ODgwNjkzLCAxNjAwMiwgMi4zMTc2ODI3NDMwNzI1MDk4XSwgWzE2NDUyMDUxNDEuMDk5MzQwMiwgMTYwMjksIDIuMDAyMTgyOTYwNTEwMjU0XSwgWzE2NDUyMDUxNDEuMjM2MTA2MiwgMTYwMzgsIDEuODYxODM3MTQ4NjY2MzgxOF0sIFsxNjQ1MjA1MTQxLjY2NTIwMDIsIDE2MDY1LCAzLjM2OTA0MzgyNzA1Njg4NDhdLCBbMTY0NTIwNTE0MS44MTgxNjgyLCAxNjA3NCwgMS44NjQ1NDAyMTkzMDY5NDU4XSwgWzE2NDUyMDUxNDEuOTc5NDAyOCwgMTYwODMsIDIuMTI1NDg4NTE5NjY4NTc5XSwgWzE2NDUyMDUxNDIuMDk0OTU1NCwgMTYwOTIsIDIuNTQwNjMzNjc4NDM2Mjc5M10sIFsxNjQ1MjA1MTQyLjMyMTI1MDIsIDE2MTEwLCAxLjY1MTQ0NjgxOTMwNTQyXSwgWzE2NDUyMDUxNDIuNDU0MzI1LCAxNjExOSwgMi40NTU4MzY1MzQ1MDAxMjJdLCBbMTY0NTIwNTE0Mi42NzQzNjEyLCAxNjEzNywgMS45NTk5NDYxNTU1NDgwOTU3XSwgWzE2NDUyMDUxNDIuOTQ0MzM0NywgMTYxNTUsIDEuODg0MzQ4ODY5MzIzNzMwNV0sIFsxNjQ1MjA1MTQzLjIxMDE1NTUsIDE2MTczLCAyLjE1MTc3MzY5MTE3NzM2OF0sIFsxNjQ1MjA1MTQzLjM0ODgwMTEsIDE2MTgyLCAyLjIyNDgwNzUwMDgzOTIzMzRdLCBbMTY0NTIwNTE0My43NzU0NDU1LCAxNjIwOSwgMi4xMjAwMjg3MzQyMDcxNTMzXSwgWzE2NDUyMDUxNDMuOTAyNjg4LCAxNjIxOCwgMi4xOTUyMDYxNjUzMTM3MjA3XSwgWzE2NDUyMDUxNDQuMDUxNzUxNiwgMTYyMjcsIDIuMDQyODc1Mjg5OTE2OTkyXSwgWzE2NDUyMDUxNDQuMTc2NDU5LCAxNjIzNiwgMS43Mjg1NTQxMjk2MDA1MjVdLCBbMTY0NTIwNTE0NC4yOTgwOTI2LCAxNjI0NSwgMS44OTIwNjE4Mjk1NjY5NTU2XSwgWzE2NDUyMDUxNDUuMDYxMDM5NywgMTYyODEsIDEuOTk2NDQ1NDE3NDA0MTc0OF0sIFsxNjQ1MjA1MTQ1LjMzNTY1NywgMTYyOTksIDEuOTYzNDM3Nzk1NjM5MDM4XSwgWzE2NDUyMDUxNDUuODI0Njk4NCwgMTYzMzUsIDMuODI1NDc1MjE1OTExODY1Ml0sIFsxNjQ1MjA1MTQ2LjA2MzEyMDYsIDE2MzUzLCAxLjkyNjEzMTg0NDUyMDU2ODhdLCBbMTY0NTIwNTE0Ni4zNDI0MTQsIDE2MzcxLCAxLjkyOTQyNDE2NjY3OTM4MjNdLCBbMTY0NTIwNTE0Ni40Njg5MzYyLCAxNjM4MCwgMi4zMzQ4MjM2MDgzOTg0Mzc1XSwgWzE2NDUyMDUxNDcuMDAxNzQxMiwgMTY0MTYsIDEuODA3MTgyNDMxMjIxMDA4M10sIFsxNjQ1MjA1MTQ3LjM5MTk2ODcsIDE2NDQzLCAyLjI1MDAzODg2MjIyODM5MzZdLCBbMTY0NTIwNTE0Ny41MTE5MjE0LCAxNjQ1MiwgMy40ODI2NzIyMTQ1MDgwNTY2XSwgWzE2NDUyMDUxNDcuNzU4MjY3OSwgMTY0NzAsIDEuOTIwMTY3MjA3NzE3ODk1NV0sIFsxNjQ1MjA1MTQ3LjkwODIzMDMsIDE2NDc5LCAyLjgxNzgzMjcwODM1ODc2NDZdLCBbMTY0NTIwNTE0OC4yMDAxMDUyLCAxNjQ5NywgMi40Nzk5MzAxNjI0Mjk4MDk2XSwgWzE2NDUyMDUxNDguMzQ4ODIyOCwgMTY1MDYsIDEuODU2MzAyMTQyMTQzMjQ5NV0sIFsxNjQ1MjA1MTQ4LjQ3NzUyNzYsIDE2NTE1LCAyLjUyOTk3ODk5MDU1NDgwOTZdLCBbMTY0NTIwNTE0OC43NTQ4NjA0LCAxNjUzMywgMS44OTk4MzExNzU4MDQxMzgyXSwgWzE2NDUyMDUxNDguODk3ODA2MiwgMTY1NDIsIDIuMjEzOTA5NjI2MDA3MDhdLCBbMTY0NTIwNTE0OS4wMzMyNzQsIDE2NTUxLCAyLjk1ODU0NzExNTMyNTkyNzddLCBbMTY0NTIwNTE0OS44OTU3MDk1LCAxNjYwNSwgMi4yMDA4NDU3MTgzODM3ODldLCBbMTY0NTIwNTE1MC4wMTk2NTk4LCAxNjYxNCwgMi44NzMwNzMxMDEwNDM3MDFdLCBbMTY0NTIwNTE1MC4xNDA1MzUsIDE2NjIzLCAyLjc0MzU1OTU5ODkyMjcyOTVdLCBbMTY0NTIwNTE1MC4yNjkxMjM2LCAxNjYzMiwgMS43OTkwNzI5ODA4ODA3MzczXSwgWzE2NDUyMDUxNTAuNDEzMDg1LCAxNjY0MSwgMS45MzI5NDkwNjYxNjIxMDk0XSwgWzE2NDUyMDUxNTAuNTU2NDQ3NSwgMTY2NTAsIDEuODYyMjUxMDQzMzE5NzAyMV0sIFsxNjQ1MjA1MTUwLjY4NjA0NzgsIDE2NjU5LCAyLjEyOTQ0NzQ2MDE3NDU2MDVdLCBbMTY0NTIwNTE1MC44MDM0MzEzLCAxNjY2OCwgMi40NDkwMDM5MzQ4NjAyMjk1XSwgWzE2NDUyMDUxNTEuMDU2ODgyNiwgMTY2ODYsIDIuMTM4MDM2NzI3OTA1MjczNF0sIFsxNjQ1MjA1MTUxLjM5ODkyNSwgMTY3MTMsIDEuODYyNjA2NzYzODM5NzIxN10sIFsxNjQ1MjA1MTUxLjkwMDQ3NzYsIDE2NzQ5LCAxLjg4MTU3NDM5MjMxODcyNTZdLCBbMTY0NTIwNTE1Mi40MjQxNTQ1LCAxNjc4NSwgMi4wOTQ0NTUyNDIxNTY5ODI0XSwgWzE2NDUyMDUxNTIuNTcyODc2LCAxNjc5NCwgMy4yOTg4Nzc5NTQ0ODMwMzIyXSwgWzE2NDUyMDUxNTIuNzA3ODcwMiwgMTY4MDMsIDIuMDQ3MTM5MTY3Nzg1NjQ0NV0sIFsxNjQ1MjA1MTUyLjgzOTgyMTgsIDE2ODEyLCAyLjIxMzcwMjQ0MDI2MTg0MV0sIFsxNjQ1MjA1MTUzLjQwMTA4MDEsIDE2ODQ4LCAzLjE1NDEyNTIxMzYyMzA0N10sIFsxNjQ1MjA1MTUzLjUzMjUzNDgsIDE2ODU3LCAxLjg1MjgyNTg4MDA1MDY1OTJdLCBbMTY0NTIwNTE1My42NzQxNDI4LCAxNjg2NiwgMi4wNzQ2MzAwMjIwNDg5NV0sIFsxNjQ1MjA1MTUzLjgyOTY5OTMsIDE2ODc1LCAyLjQ3MTUxMTEyNTU2NDU3NV0sIFsxNjQ1MjA1MTUzLjkzOTk4MjQsIDE2ODg0LCAyLjEzODYwMTc3OTkzNzc0NF0sIFsxNjQ1MjA1MTU0LjA0NDg4MTYsIDE2ODkzLCAyLjIxMzY1MTQxODY4NTkxM10sIFsxNjQ1MjA1MTU0LjE1MTg4MTIsIDE2OTAyLCAyLjI4MzA5NDY0NDU0NjUwOV0sIFsxNjQ1MjA1MTU0LjQxMjM5NSwgMTY5MjAsIDEuOTQ2NDk0NDYwMTA1ODk2XSwgWzE2NDUyMDUxNTQuNTQ2NDE5NCwgMTY5MjksIDIuMzI3NzI2ODQwOTcyOTAwNF0sIFsxNjQ1MjA1MTU0Ljc5ODk0NDIsIDE2OTQ3LCAyLjQyMzgwNTQ3NTIzNDk4NTRdXQ==", + "ok": true, + "headers": [ + [ + "content-type", + "application/json" + ] + ], + "status": 200, + "status_text": "" + } + }, + "base_uri": "https://localhost:8080/", + "height": 821 + }, + "outputId": "cdd759d9-675a-4864-e045-0a8830658d64" + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "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", + " " + ], + "text/plain": [ + "" + ] + }, + "metadata": {} + } + ], + "source": [ + "%reload_ext tensorboard\n", + "%tensorboard --logdir=./runs/" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "yhAHGqC9-woK" + }, + "source": [ + "# Testing\n", + "The predictions of your model on testing set will be stored at `pred.csv`." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "Q5eVdpbvAlAe", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "53d0a7b8-20ed-4f83-8a9b-d860f16aed31" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stderr", + "text": [ + "100%|██████████| 5/5 [00:00<00:00, 414.89it/s]\n" + ] + } + ], + "source": [ + "def save_pred(preds, file):\n", + " ''' Save predictions to specified file '''\n", + " with open(file, 'w') as fp:\n", + " writer = csv.writer(fp)\n", + " writer.writerow(['id', 'tested_positive'])\n", + " for i, p in enumerate(preds):\n", + " writer.writerow([i, p])\n", + "\n", + "model = My_Model(input_dim=x_train.shape[1]).to(device)\n", + "model.load_state_dict(torch.load(config['save_path']))\n", + "preds = predict(test_loader, model, device) \n", + "save_pred(preds, 'pred.csv') " + ] + }, + { + "cell_type": "markdown", + "source": [ + "# Reference\n", + "This notebook uses code written by Heng-Jui Chang @ NTUEE (https://github.com/ga642381/ML2021-Spring/blob/main/HW01/HW01.ipynb)" + ], + "metadata": { + "id": "IJ_k5rY0GvSV" + } + } + ], + "metadata": { + "accelerator": "GPU", + "colab": { + "collapsed_sections": [], + "name": "ML2022Spring - HW1.ipynb", + "provenance": [] + }, + "kernelspec": { + "display_name": "Python 3", + "name": "python3" + }, + "language_info": { + "name": "python" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} \ No newline at end of file diff --git a/2022 ML/01 Introductionof Deep Learning/Pytorch Tutorial 1.pdf b/2022 ML/01 Introductionof Deep Learning/Pytorch Tutorial 1.pdf new file mode 100644 index 0000000000000000000000000000000000000000..f8bd11df273f6afa9e6524e011eaebb6dd68cc60 GIT binary patch literal 598900 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�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 z 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

    JQ85LK1aP>&z%Wtkl)tKzk|l1kV5OJmcge0Zp$ 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≠t2f+UWF5m`mfqMkrxWO3Z-}XO)jsH5K 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�+XxOrd#ltP%guTkJOt@I$o2K}i1qb~JO)rStcfF9 z5@Bd({|mkGu>90gt+9|78%Z`0&C-UQB0(6L5Z6_S-YTZER3dH1$4p$ewvHiUOC0d` zN}|H1DA zz=d=_=l25aq~OG-tY_J`r-?zo0DCSVo}h`87{2_6Z$cJknpXy5r+o`&Y8zMTW9qvY zq}jSP5>uESlmWRqi!b6MULMEB%EuY;M7@NF5Mcy<_j=XaP*x`HEW>{9kFZSpsj$c8 zr5UiN!YL8A2Aj-2VbvNaKz6)nT}&7|%7Ff>Z%eJSKH8vLOJWL@D>CjhW=JIOE)HCY^jYO~VV}5FoC;d_jfA3WxMtXYUh}Mb zyt~(QapbmGA!q$dyX1BCuW|*>v%9O3400oHN_LC_JlQASvH6(oUT~!3eF7%Ev{h%X zvr%C0@gCz9HKHPAUPX_n^}sa6nfC+i&A@^PB0m(-OMzn}$c_B7F@;Q7T{8XtY_77c zAJ{krbIcBL!zk3K*GrOMy=N;+hlz_hqDBZ&Owl=vCIzp_hgYT#OhdbdmwufH9P8S+ z;J1<0?46C^U<>FJCp3gZXIw!sedUV%_-h3rdKHInqBsi)dhx0d{k2W;!gEC#c6b*{ z88Ol%vhzb7K=J$W&2XAfO&{vQhk;v(&TJdLW| z4?2{^7c9{6G%^zh@r<8bZwOcw+Zh8<$?V}RxNzDGM;~H-ay9k~KpF9?tBHhjdV;|B z*4Y5F7OS|PC%SGdv)ipZUV|B89`}uU=;VBe0n8Tm(ZjdcDJX_Q+M;3VDRSqwsg(Wk zO<&;^_#*Fg)D~aCc4*x!-byNQUM$@z!1t$1%3`tc@x-`jruPW)~r2zI=_iWNqG%GX9HhsdRb zy|y=Lw>FNll=PNrDalfrl3Qs*pF*yXO`xoooCvfxcecUmON>kzdYQ(|FX>>-w)LD~ zeW<$*9E-#2TWDuS+Je8qQQ|t+KbeHkps-hAZMd{v(~|W`ikEU<+-~)1*cl&5_a>8< zx-MdEN|7u{4!cBujtTk$3%you#A2jbH1lF{G}U5A7eOwKnETRAjq$$nb!Iv8Rvy9o z&?SbGuGp{VETa7!MsE-A23qwEA2+PMYxpS^*Oax!Z%FBBN?u@I+9?wvL9Ekw!hDFp zbCldBb9qvg>hd^8UoPemMQxtnX^Tj=p3Pms{h(^70!}i}W6EQ6Jvfw(yJC6QMwfjjb{W zfyfl8VBSj51JWx(3pp0Uk(5^VZ6nKHJO*B2S7VcX<%_uak%OSDN~o%hZFeqw^y{OM zWfhcMh(Z^xwH^UXIZ0E}T}j-Or=lLv`g$rB)<6f5;PCQz6g0_1mAQY7M%{D+(`0k&fkQNXcrnXcc2a+un}2~A0Dc$~l9gkGq9;OKD>ChmaQ zqnjlTo!>t)yS@D@qm0WKW!c>P76tRS#tqXUt=bTqWw}@LiM~+JLRQ8VS37##WDI*NWX+hyL`}V zp+DlMOGYdAB0-Uthg|I6`|w7^OS>GkKE5w(z1OxO74+>?br+ofc<~$cNUoIVRw-O_ zT%B!Xb6(Uu^&%9+3oo4SrH5I$$b|Ws1-UXAPP%eAC~rc-ip*5my0WWO83K^?>*w-@ zP1?`9NUWZ}&ghfr6057VyVJY}3jG00+3&c`!-#dEj#HgD!)*IfW_jyIuET~#Y&5TL zO+^bXaU0@0#Mdu13du9xp_NO0<%VbAxK`An{LbTA^~)7IA~>Oh!HABF@K^8%siR=j zbIIzfhd8Z;g3V7*hk+Q0oEPX9ET7*WAG*4=mD`M$mHV_G&h#j^C|3znj&?5w++~N+ z3d5_qJQAyMQueI=23+oxPXPy{I~pUOX?e!&WN%^qcKQ3RPZbWtY`0Z#Ou@G9($ps$ zBb$5gT;y1~^CmIG0(}E@-Ej{f3g>Ip*{r=z0HI%2i3WLcvvj?WK^H%6KA+1oj(vV% z(EOryQ;EEB#I#wDt|GtTto61f=iV}d&i{xLcZ8w#+#!m6F5*aw)TAY^fM?>=lIEL| zX!Y&J!>`TLe#lPCq<4MnQ5%V^1Uci}j8|Swxwrr;KAbes){r4`I!|f7;uh0bmJgmz zKT1#1{nV)xn*UlCS5;P%ic%qNpIN;fzy4d1tmIIQc2|)t1CGdPBYt}+jPb1U!jzyR zpRI06RXZ+@YfzO$p_pey6e3+>-C&XaeGj6sKe)}cM|_0oIysJxMs*;0U;=clRC%;} z0f?nx{(?_;9(>0&3kKLqL~u`;`d^!K_FyF?fn?gYt?kQJo<=F8_eB5?=e6k5^CFBh zd0AZ{iwjM#1D+#e{E@{+(2W-kcvW{!d5Milwnx#LVtP+T^k2~>SfGeZ>X1~sUWL?c zYa(W@%YQl%OD2VJ0PWi%BsVNSMu;c2&L%^2XQN(Br|lMCC6tY(CA)$XDRvuPG!-^s z_MI54{0pp=DW58h$wU9i0z4iWj^Fx?ecp)Mn5unir^rKZx0NMOFEg~P|1O7WcKL;( zk}EoAn+TK3A9U&1IW`}8Tw+8%kq#U?4swV(gnm?F`ByS+y^+vlx5Z$Smi{ zXCZu&+K!<~AL+ykT6ckTt_=j+8!o*;Kvv=kCo0$Lso1O{nZ)kN zM{c^eWmi^UW-J!k356@-Fwa&Ju|E5u`F_st$|mge(0eL9kA6rc(6@ZjqT)M&3KUJC z`U)H9EFm|M!d3HX-!3b1x|g6b&WQuIn1LnnicVt;-h5Es@C%(%XOWiB>gL8Ys{|~q8*q^=#K(x$DeQS5A!_Sy}kUa^Cg;jv^<&E zcUt9kzMZh7#$Li4*YVI$p&^?iQVy-L~rD&PH*I!FxJi}=xW$}OVT z-H2hy-Q8etjpCmwgg5WY=*n9`r?(v1%5l&SW8ltfre6WUPHOUw7<_b&jJO*C>SrGt z^=wr`3zR0>QGV%9epEgcLcskhHZd*UT(4B10T)HO*h8`H!EqR)X1g;160dpvYUs_5 zYtW+Z_>S=^7~XDR-4rQK~&I~A+W^9qUAac58*`u3Zp zmk6N_i9}oT$SomV9l&R-YIy5Kd7D!k=fjH&cf z26aY0wO@HUGeGto&Lcc+;X_60H|n&H2RcrDP=|A^?A@z7LiF1=b$_)A20{AEww_bJ z@kZHmg&xIvdcj3~DA<(&4911kjT5*fm<2>_X^V8!*l8!0T z_KDE41HWeNQIR45+-GeFJa&BS8bzuZNE|1->x>Jv>i9(sPLew)sQa6%YEFESTX_)9 zyevv^FFiw?dvQ->r=R-c{;rl;V*Sy2GGhVV?f}76c%JrAXj6Z^oZ|1K6Cdyhjb?|! zI7GI^$(xSyt&-x}J(2Uv8nZ)#2ouQrdUewHJL(?{iJG1hWIM zVMbkak%GG9SK7p9!_eU-N4uLb&Y-5*@Z3JiU>Dsn_m@1OizHI>DO8pbQOjT06QSmp z<&fTbodBMfTC{x{v+ijB=LId56RksuqBXN`e1n6%<1JCfaZKH$YvjRif36zaro6pH z8He3WA%6Mg$B-<%yL=(a&N@uq35&t|q!-+R-Rgs@ko-kwe?)5#K-jC? zXR30qSu zmRl!!g6a-`M}0eRG-m@rniUGOsog37=lv!mP8?2A zU`o%4cDc@4cNxmqQmJyUx%$oLbXGtV0BxtBW`NGxbvC`kN4eevn|ZNo^|#h9aSHBV zx#RjlfzZ`^ygE`>lD!tckxLToRVpmL-qz3(k)P>>LBu{Ym)iFA&0V}}H*1LD=xZfp zgn5TC?H+41Nv-zLX+1y%yqOM9UqaAtTm_U?zY_Ga&r!m8g0}69ZF;<^a*&kS=o>fx z>)h(@YWANPra`u+FiV_cwuAOdXDn4AV^kSz>ibZ5%wvnwUM19dlsoopk^ z$|Xq_JY#28#imSuYDfjppK`bP^QL44FkbcTS8X-L-r+0JZAxNTQ4g$>fN7h>HeK-^_@MU6Ua$d_(${85H`$<{jBMg}xjXu1SQxo7&m2 zILIjzr}sUhmYz*mj;ACb6-9z3f{Dmf%rUIw)9N+4SqRnSmpTKexsIXCZTvT?N0_0rgn||B!xj2@sDy%NE?$wEhsSWQ%L`@g z>{jqrZIZqCH&pgpYfU~jXf00?@gg|GC${5(lu<@iiWjU)XuBn|sCBavHd+`Ufw@92 zPClAbAUWy#tI6$_mSjZAUE<#8$;oX}n`Su---`5`8FmSOG}6~aAA~+Gl!M1OYK@Bf z)MC9$L``9sa|M1IQ6vjTrhEQtSS$V|RU~Zo+*&$Rqb>ZMT4W?KHiT+%U|HML)uAOc zj?5Wd41G7Y9P(Puz)prZg#j4R$R6^a`m|rFzu^6PH&BzeOn}}0Kku^&d``gFrvfCoQ3`bJy@GSKeN9*P(DEAM`EJ52n~*fc6=Q#@YgQNLE{g+1 zb*JvlDE0~tUnM~#x$Xw`Ds%ws1`kE<{h&onpJY-~(+5Ivk;%!9rn+wff0UQU39k%y zeN@H`cA*zT-R+va6IN+T@(-lmN=aU4ZP411FB7hL_6^C&P6bj^W8v(E27T0FnAW-; z3!q4oh|A(aVOzC_TV*!Hl?6u%4oh7K0kR z4ywOJofhm`g+%nTlb;2DgHHicewGJL@733FKKpJSQ2pZ$EC^26M|cDL)-b+Ro=tg z69g_CJk9}rdBly?QqkM&w>+uMXjX?{1fxn$PTtIy99Gze=6`BJdbz(V_-J^LuWnMCC3rjsdXhtSnxri{NMM4Xf2N@(>P5560irgDcXLKu48g5Nt$jf7J374me7UINBYH zuB#kari#zyx{ieeI^g!0{_;HZ#UV%vt^%>_Y?wFpO@5Y>tTG!zo9$V%#{E5N5of|YX?g7^ZgpFl^q@LhMOR@ry@OTFDtY}y$#jJJ?Tc95VJ*)h}e1ZjYy7o2=GA6>X|Ho*~c+@O`zHyOnoM6 zE!&NF{RNOE!Jwwfn{NfK)4;kP%vsZC$X$d-VZ14E^PxxoT$AndI@je9I+FulW=wb0 zVCDTbdaEaVl$UFDSsyooIo$5Y+BFtwEK2Z0k5M23 zKJDr-vNsu(B^-6Y9lE1ldV6<5U;Ud+azTYuhx<*-5T>MnS4JKA@+UNX=IrQv&F9-e z6X^LMcC76x`dH}fL&pz(&=rg#)|~hooI#)4yMc3Pra(_VJmO$|o}m>7%Hn_yOVx%j>Vx}F z&Emkil6+&)+RL}Lh6E7qdxj^NGjG7R%jn|VBsv#`-61z{P^xz4si-vtR~@ytb!rE; zD4%=-AT!Q+*OIlRJRV~v%wlo2U$cDtoR6Z15V93xK-h~MLxC-0#Ql~EwgG#Q%t3a) zwh8P)g>aF!^WRKTE34<1p4JlXMvlT=_@si=p`3?TS862M8-1BIf%U8RUp|LCyPzyC zBO53uQaZFNq9p;>*1> z*J!0#_64vIGV%*$DBD$`Kxv*ZkCu1QX{V1_b)%#oRYU1a_ zuR`CeVxn<{sR8c7H}vPu1ZQA)S2>UmlY^ud6G(@52GUbzsaBL=tOOh}>+yi*VdB(+*L%_{P$|=>rBxd4|6LH@b@9YEwSySJ=bi1V&77wbho! z`77rbowd3C>;8-U1vE5Qn-cp?T2u6i#!5c3LtHcv)#Y76Z@#1J~+%fsGm z<>#}hr2XA`U)Q_wIA`hLh*ovUk|D73T=PZ8Eyeeca%f;#nIh4*a&fI!h=v+Rz}sWMVhS40n5xe6$hS?(%kj zl7Kncpe*UrYL{yu-zt(Bd<^nxWwexWGJ5Q%a8BHJhrhkahtYZ}oz2V$5A_kQVbA)o zPU!FYMNY2z$Et#L-G-F;#~x4hrdTlV_vNZV-IC&Kx4-$+JWAQ8TaBno%1YG;Js_uU zgB&+KCle!Wuf_7^Eug$BW!+I10Gny*W$$--KY%33)b`-CPf_H@zJ^5@HLW>mNZ^!)_abxqQ12OT~ls)7}})wr|v|u*Ox7yKVvlk2jXim3RCMT?h9!nOB$VQ z@(tK{IYm!rN`@gGx~jN@6hVN_(1!=@E+~(Z5*B~c<)0GXJ|&FZ1DozEUkSThFWF;v zi2;|Vx^wfn_f_HU*(uN~yFV5*KMj3q$JY@SysE&j z(cn*ya7$r2DWe5f$!B`}^1dHDSd)2C)zf@}dNNRM*2$U8=DKPM7u2p0L(s6qUiZ=d zs{0m0J#k2gAtWoi`Mvkbh&Z#A9N;I{>iTEa^>`-CEh9Fa zS-sejqUnJz&?HQ?>!DrDfI$#MPtFLY-E`MqZtzwK7k5jPcXiaVF(}Gji-Rt^x@v-odPHoqZ2#<$P1Rx$<)dP>)6F*P; zby5tf4&5VEMQIV0LlE2QGiui`f;j>oZF}u5hxw)A>mIV?k8YxWI9b7zhj&~94o+U9 zI(gtbDiEXHSngN~Dy;$i4j*Ei&u^^moW|lxPoKsAx*Gg|R$>`m@E3&c^oA3o9IJ!m zv)j}@+7H^D?ecWtQpgHO5aKGh9%}X3wx^80X^5oOeD#yO@>dtJ&;2HsAPGZvzAx9E zti6{l_Jt`VtlI&0%1>CTliry)KD?6Tnsw4Ip~`zxM=;3RXYO7Ts%tM2`bg#08)~I` z_M!j(;POhNL=|0cC4R;U`OZ%99pYEp7=!y1=YYnv%QxVZh)>C2^3)v`S`Z1nHkoxs zgw91i2o`37`=w^wSs2<%mPC1zN-cEuozm5= zo#tUFkSs>pe+H#jfV~V}2iy}!?VTM7rypDI zwf$gt=CASB+t2y!1#!-LF4OM=O}$HJF&)9R?TV${;QTh}r$}+1KP|k;cg1ep>ymEf zPg5xHif}HO?6BI`uRqWTU~=Ck(|+T~u7(Z9fpZh@SUD4wIvqGjwu6I8XRQ6M#Px}Y zJABalp-m?1&C}lVcxk?MYI5SHX;g&_^}Awoci+r#N@kTt7l~bR>rL<-h~2JXr_mSB zBCIE6ZQxbomwfZPqA@iKzT~zVxL>OFJv59YlDPXmKFdIh@>-v2YMW6tdHXZF<+JuH ze37vl*|4N@JF^PEEce18?+xYm2N3)@_l(+WKH8=7Qj}s;^B%OKx$a{{ATPccC-3}? zGPkGm`)^8>{seYd=~#$)DF-jVv0jwCq?2JMttmHt@t5_B42N4oBHm`1b7q!wNq72> zXmp}MS5b4*vyIrTWD=yqv0?TDGZA;Lg3Nmxo}4k2|H*Cj zD#td<$kBc};%|rIbIS>2#y8;ied>p(AE72TA)@N$ob&|#3WBsTCsZr*lrpNm_0C*DHB=$@Q9cE$RM2ggmsjmx;7d1TgfIw!M=8O-3&o-#6a+V?G|q z%+RdUZ@1@G=8Nek7;k6oNYY8$u7A#MmOL2tYf$UVFYs2kTU6$+oh9mIAb(yC1wmAo zwsVeKOYhPz`*MXna)}+)JxvmxRMV&C{89%>_kQyXkX)VRs=~)GTA8~Q)4#qP3KMBD zkWQ7yy5zNA<2{en-{`46{vvZn$Pxbdj*fLOa%PV8H3>Ux!pK-|kP!w%(7!SMT!Zv` zoR_GBzVA@LGxAL7avtc7z?t4c^l}pY1*E<3)E43GcznQ4lpoAPzPQdn%BgwBxa%n- zyQ&{8Wu6`1N>K8x2#rhWQEwbm##h-(Z5WLbZsf*}`}Xvj7UfT=yfJhOdt~gKx92lA zD&nMA=jNU}FyX$eE=`{S9=N>G@O=gvjFn%m~)}B#nFBjO71@RP2^JRR#}wm~Aiw4`?`z z^~jz*FP|MrwJacHp(Kmw{^lIY2KC0j&(azjY~X$V2b5D8QRX%T*)!ChlCa4 zV0GlkMRlodZ4g@&q|)3IrqPx+90vY?%^=oA=icDacbXi^g-Qb6Bs=MfzmIBl0Ex>f zfWI@%JJqiwgLbDDaQi36jO~p0toxrL<{RHTvySwQ${V0|=L@jmy}sM-vVYxtd1#F; zkgWO{(hekLi(572v%k#vM9o-M4MiNDxI}*ckM!%pLFvZrZV;jb`mr-1*krO!eH3E~ zGGmq+-iZp&#z(^#Zfy?enDGn}a$pN1W|;hCjdho*>TVU09(*W7+^}NxrbZz{T)WYR z{i0}aF)YghB439g)#Mk|#{cY=EEiv-hFFFZzBR9(O#W$N*$jQRHQ(movjaCWu18cM z&nqOZBPe~ptYt(U<>jt=O476U3xJ;g5P@~1!lfpB znHJ8w>K56XW`0>;@I2OQR&4UJ0?)j?X>ev!s>ePVYkWw=Utm>x%{Q1!^Zm z`J%Df{glwS-5jpcXhZ^D-YXv8QtYlGtf183OpP#>VXH&{vv8vWb-fy;xXDcW%k*k> zZ%4Ae%&AO7wo^YFVbN%U8&(jClG&>rdJ<{ty{~b6k_GA|M|b^7bl9|!8|x%&$SRiJZLQPQrU z^LRqm>y^V;NIOdO&r8gjA;zcA2j>Hf!?A*qMte;6`_CR@&oChUUT>zS{z&B+`xxXz z@pqM7S;kLbdv>X@vqF!PAKI>tR{3$A`gy=r&kFDNa>Jfx1$oaZ?gzqmET?E@8%EN# zAy{I)^G7xLAkHU9)*qtnN6zQg2UnG!MXGdW=1v?4L;^??@56iTRp{t6DTvY3=?M*| z0|G2y!{xwsX9r)2JxJ=t=?n{YlINe+Nz-KGJ-&_f17#qr%(;j^W1v1^s7|M5Z98;U zF^B*I(>FqSm#bc(xsvVq8&ERnX9&uWL9|Hi6CCizK-P= z`ElwAgo%4@&Y?{i(8O6+PJ4vLeN{v(kFwU9 z8n6AT3YnPW8UF?janngtU!))K^)cgPyZE^IV(7@20>$y76UT8|F8Z*9*++cI?c=b?+gtIfrHb(m{LGA+{K6%&lG?EaR-Z4Z-b0?$_1o0Cyf41`9 ztw+?^3q;;5!=4X?4gcBOk~sW|MVD{ge1$o=b#eM4>96|(+|O6kL>_3*bL4~lvdHGX zNr*ut$QTWLj*FZ1@L8=g=bjZuyBNBm zPrSc&$`H;?(e1XSfQr??t2e#10(;;uaw28XYIoEvAeA#4*RlO8-=MUlz z((_fqd;E!fPk=d9=N|eQ*pWcvswJ&no>UPQHWv@R4y-0zNIDgd@ zde^qNvraDwx#4{cY(er=wiBqA>|T#ikJIM07X*UNFGAs~zoqW&U+9TwnT)pKtR#&8 z3j74vh3v+p!Q!Sd3tCy6MblnN&4z!dolvzqSNM&~`0m)|bkAP#(LJxdU%1Nzehfnm z(VK=KUI3L5xx)@Q$YsHQM0oxE=|o_=QTf4T3Oq=?C)*y@i+;+CK;gY)kOYaq73EQ=3uYrS(t4SNyC886 zY(_VB;=3k@hhU!?b@!Gf3+WRJ1uf(r^Q#U(^Rk1UEV75k%{j#kK7`l@bQi4Y>{b1q z+h_~AVh;tCppk2l(XM`}1Wkg)vmM9oVJ)p!*K8rN+&{~SPn}NIX z=`G+DF>xoTE>;bIhEsi8z$_wm}u*TInAbM%LBVGiv@+}cz! z-zv_C)WmeeZRN@}w|CBe_@Z4xu{ba{Ng%xMnkCtIxl1P(Ipwn90`}^V?uT~P-)ZZs zL<>Ro6Az{Ijqy2X+?AyW)dL;lSolXSTI6e>UnTNTxIOSSRgPjQg|X5a#qD0<9KS~V z5xoAQdvh%B%l^jGqLB8`C)(P66(LJlu@3PTKnt)^g4C=Tg$jhb@P-XqL25F*c;?7) zH$Iqn@~xaQ>E!I&IPG}dF+il>YNDXWtJCGLH0^fXSZ=AQ;)~#ollUJg66NbHv+=)uEC zSU}}+iCWcNb6~K= zOwkzZBE3wz1iW$W{Z?h!VXyqs=Gl2d4}o-}hwL0(;jU=EY8*^VPzLL`6P2NJvk7;UD8|F8GbZNB@BKW@vgKfm9i`ar4V2~7a7#YnMM*`g zmm4f$6Fr~k_=FcP7lv5*=JdXj+()avfRSJCZQdZ_qxd-p0y(BxQR#6}xOkK5E}ZTM zPS!vs$8Z;+#<4Wj9=y2_qS$#2Rd9->@ZjEmBkh^Tf{gwf?e5*%!@MQdy#D`Lih>AR zDu&wK{_m#WMm)DOZRr!lx(R`7R_tEXg}%9ov4)!?Dt}7N1Qj!;{Nor?wa-{SvzHD8HM&tjUd!0u zp0v7vyS2O2s%I0u-W_Q{1_j~61b45`qocviKuuD;T73pfH$(igVM#QavLu=ZZm;cXxN!_>KLhjp+^XM&x-Nkd8OTpfa(NdvpKY#`E9`Tl-9jK7|_m z^}Fp^Q@f)R&n6ZZb`Ln$+umvZJN%#O|Aznj@8C%dP2`^#_ys=qaQ^=aO!^NC^Xb2K zZt7=n|Bj*Ki$kEK%OPCSBQWd`G--Yapgcrs{@-NMf0Yj5q9;{U57C)7{>lDD*ZilF z?LVbM6z2`)e-NXG**`4J|7dVnQa!1psjBi1X7Zn0{a?#Na_GMr9>OGDeO>+mC92%` z=ZyX*GVy2nk+YDcMzaA)cQ*|^LB5X zitu}>R*tu6KVFre4LboZ#yFqj^oM+KTfL6qHMXqWlRj56AvL}}%zFxOXFIoUPN&ZK z2f|0zp=V^|IG(dw>MWd-SKH}-btsJ272=~5jU3)?;JDj zt-7NGpBB86d-!-bhTn6IbLEt;n~0C6&B-TP55w%}!7QGBF$HU%W{({;B}x|2Wu zg)RNtafoa!NN+W>H4Ays<>HYwHGWw}#>b<#2d}>lnD4Jo6f`OWDoOV0o%mJ|Jlyon z*<+@}xj3q<4YFa-%BWwmW&7-p+^}!3j0%GLBz0KeNF2S)F)?&FK&SC0W7r z6Bn}4M|hob3Np0bP?cQmTSnvsPgh0*^xV_jySbO{h6@)=-U)u^Mlv{ih26pKVK<`t z!Nv5qPr%YzoY2c(4+N6ka_)yzN)pQpHlk~B@4UJd&VEYk$GKdqzZJ?}&=CFWKATp0 z(nWIjK%m9SQ{}gjSM3bK(;b(bl;H|}kGiMd)$5Y4h9zyBV}0^KT(xlb0Ob|?=-KDz(S8G)?KLWk?O{JBn6j9uZ51q4mk61albvO zOL>j;a1orNONP=pRqxiR2u)pQSVcYnDBwO*-2vqnJC>lN^E8Q|wnzLsXT#+oxzPUo zs-6ufC5?D}`~J3K@3{}VG#7>XY`|UCeP%VEgdw^}W$kRkyIFn0mxxthcxrx6XQkGL zm}7DI&AsGtK4{mQtT&kZ*FWbj#jJ6y&8&e+4zj;>m!2<*mdtEhC0ycb?GJv}ykxt_ zOpUyAdHu8Gp5aiWc8c9`6lN%QO*)Vr@=je(k-loM1KyWsrbxOUgSra3(@Kv()4eY= z<}nj=TPVK?K#BnU)(P(8w;y~J^o$L6luYvcQZ5Ls z;)8hCtbm^n{(|!Nf~+m4I6dCkWgxFNU!KXM>GZr(OJWlw-IGs(o@5Nh?IO9a`tpax zG#m+0veHKvwjEJPU-NEwslf5b&WKP1+pYjTgmcO@>!G5R8ZFhOz#3))`xR-#2w?7@ zV0q0(@L2z>Ti3C>FHYKBczBhcgZtF)K*zMhFzH!Cml*d$?f33!%I3YqCVhPy<`iuq zSKQvZ;IjR6`@*)$wu;BQot&Mwr9I$ffq+B?_JQIukL!D7D~~6>&uXvxeNVobkCK_{ z=KV7tza^B(%^vHsBxrU`e*(V|REXufx-{)W9DbZUKR?gj3#a`j;NKXBmfRc%C$2s~U+H!^Z6v9u@^@G#o-WGR0sh z`Mgl)pOgE|sTYolv6=q0-uqx@J$A;@QYVbsR;iWlvGWU#YvS7c znsc6&ujIPrWX$jJx1)x*-`?y>zvvITS9ke#><7NJr>U~(H;a8Zw`PwA%sq0{{CnqR zKpdNG5<8c_6l0b>;P$bTImZD|g?km4`&EF?2qlN+1fs{9Ii5;`r7uHxY|B=n2>lf{W$Gy({$cOsGKNQeB~=P zlo2(2TA^g+iGbzVPI~MF5`LM2SaLaarxwde(CZl_OZAw8%cxj-k3}d?>6H_fqfs@ zw;P9RV}Bc+md$?Fuv$r}++)a9#hlMu{0L%dMLw&BB$lxV4|vZ#9-*sxl?({KRy1gaQ+kn|6+RTnfat7p}f*^PWk=N2_7^XTy~xnlVIZ1G=bDdf2wox*F8 z%hBCE7n`QBQNMdrLKc6oN2ghG$(7kPD-T!u?z~P3A#YpR^ATRUTMid?j>Z(?)n2xL zbUr&I*7y;6o4=W@;nCcq7iRwhM?kp0=KQ872Vza*>_n3z*)KVB_3TDin%L?la?Ta` zTVgR|XJ$W%4NR;aJ0Y3hR2NUyPZ^NCIY?HYbH&!Ek%*ppr)&9U-De_pv&U;?T<(sU z>FxJ;jyK2L&~w@`OL0WWvw$F)5>pc}k_kzeQy;uc??YBk?E}r=r=G%7P19gSW;Hqb zH?G$EVm&_JBo*n&#Om(|P(bp~SEtrYv1;TZ{X2qLq?2}1gZp;ADV1s}D?<`d`oo&S z7|-D4>aOLNwXkGzzMg;t&__lAZl~1u?GEVA&&LJ6sl^}{K%r^b=m};yK`w}IAx8I9 zeG_ZMJFWJetZ{f}nSH1I@x~-jax+15HLFQ2ZvW@iLxF)a`!>2AHIjOxd7AClw#3J}7bE2NsqNqTX zyoM$QHR+8*%xk@tpZ{+@)RH-jPx0jBW7aU6`le1TpLR<5l;OEn3ou|%l|#o)T)kR5 zGmGF~OQy9CLVdi+0F?E|20(vil~p{YVcg2s!w*tt z*YZIi=vJ>DluQg--MD&6OJ>;x$%LLCQjI?gRih^?1U|hvi^Ngj{y$L%Lgc!V*VJ%i-A%O)ll)@yp zFqOBD?=%Qm#_x)}f|sYZP{Qj}yN;5nEzGRb?K%c^qFHC~I{ZNy(|_!Qj?}|hvc4-& zBct5FmIzqv3L*Kvd|we zf@vqNgZt~m_4h?{CTM zZ`O4-4l-XDKCc&Y*)A7cJ#IIzJ#0k1UU?kRT`s)3-EfV$B*X2klJH#~e3wKM;88Fs z>fA+Z=?x^38lfL(SdfBArOY2F)DCZ}C3SV-8tSX**@HHah7>h#<|lo!tW@{v)w_}% zZ$9&lv3GyeeUW(88B6k>9sKHK7-cQkD+*vCmqm6GC3CPDF`%|&zHi3qD=koi8D4`( zfSMy)F|%35B{Up9-5m)8Mi?99=HlJlY!BSYb>VDt zTiA1ki)rC-B2V`*mdNw@Yr4O=2d{fb_d_^=I=t=%lOw*FwRh<9`x)=haCm*p?q|Q@ z^at3u+#uHBySKor%?Yq^kon5snE$EXQYo`P?2UJ3^g2yCO@2;#L4HnoS$!p2Im=b= z8ta+kn&!FEe`VlC|MUJ&VxPnh$6PNscLZ2m&(?GFTwVSxxQq&DJQY$0tZ*z>(^Xl1 zH9Ho}&W@?sF@Z8QmMyq*^%nN%){#EyYoU>CI0J%1-b$HELrii)Y{`7fu@9N=4IQzr zT@ro+h}QtppwF@8BtdlA$8h0F*=ezz@X>X`l@Y>+3lU6=mfY_XY~;)vLOyI9VVo zCB1r8R)D1klm-7p3_ENNYyAZ({ODz@!V#XvhbJd;Eh=Ge2 z$tDzeBjthu?UK~oUY9pl)4F8kW{bI9vZXHWq}vsVQsPhO$ZZLwn7vZxfxdHnm&Jv1LKo??gVREnx~~YX zaIX&D7=O&INeO`yozvy^hzf;%DXuBX!RIK(2i&w8CX*#bcCklEl+838FiHuA>Gs=8 z?6;TLk4qfH8T&7poS2tji3qYtVwqw$RqUopdsF3-Vx)u~#gr85#SCV8WCuP~ytZqk zh4$GJeS_|zeFy=BIiX#Gpgdk%-a>D;s3UcV(+7wUq>m%129rz<0g)U)zBr_FVlin2 zBnwan2p77b9>q(bcPLa@VG@PXyFF{u2NH;aSCT9!9^agI=bWXR9=W=5SkUjhq-DkI zS!;sL`CmM{_|-Wxrd_)>eemtyW$1O0dsjAHyJUUvA-4GHsn=eAePY|o7jBt0`GIb^ zzqzF~{oSV^vcZ=pqAu+Mx$UMqb`n?SnDI2?$1QWh;UZk-SBELi`BmcLT;^AYDcbo} zQMth5S4HKbPBrTh!79H>{3`RSgI`Ux;Gf`{>AKJLr0W%zG)x%g{*@^BfxU@K78FTy z3JT~GxBFE=3<`oMxCwK)MMZdyJx5f~a_bC@h$1v0uWDioo3TTZG$SXkO0yLQWIk<1 zqKC}a&A6^w3+-*V6{8?or7X*@R@QnMGK13{tRkRt6HH+EFg^pB1KaT#w$0N**YNfJ z3X}!c8%L0>YxPfct~T@|wMT1xHMqz%H7mQNM34twuNRgZjIEu-o%vvkzXqi3n})Np zMkwf7BZxUUwfKs9AO>h-1YL%+#wuj(STEo$^CcpwFvmrLQt8 z=@WdE-PLwId+?5zUTRKP)5(ts+fSVRSb9B(vOC-6;EE5=d?sdroX8<%OxQ{MnZukR zd@WWcVY7&8XG(0nmE`INbNLazto-V6@x{f~d}UFSXq=&R*GZX^=cRdcG8JgNG}mxb zw;QxfTq?*7y0u(NigbJ`in!Ku!#e8sFqb%C7uPbNQ@FT!bC3Q9&QZWl4TtpI4Jcr` z&WX|iijg%SIv_F8KQ=K(n5IlqXZxom7O9tJ-=MC@ep`Jrh=~CIrf+-3IwvP$VO3-El!Hs#Yxd6Iu|E8B{~ow zOz`jyv`zH247g@uMb677(A_ z8|4lSo)k;6aC~c|{H!_S&m4CFJM;Mqo7*nmcm3bf2Ohlf;4|;H^&WZ4h=q?na@Ca^ z#W9}QJ%;x<`{n^ zpWqosi&Z1p841fnf32XINq?hDY{jly-rFuG^jnZd2oAiIU{^9qJG1gy)#Iw2vtg7B0hSCZ6RS&&=Ue8WLh*XIU!Cu|pW5=xzh z-<2TK72%vw;$HDXQCKTdv4v8@Im*?leCQI^x~L1wx>wn&u%*f}g(-J<-+l+^>qx_b zC;r0sO~_mehB`pl)9x-AmUbbi|~|-JrI8@_1(KYyLYdY%oIp) zXp?iy(575)QJO`spenn-s3V#0kuvM)!UYXKA==u1lC+X0g?u59FBF%^ioh!W%qG15 zRNMXQ-=+V3@1TP0N@>@zLG=0b05*}{we#|uZ$e4;5YX2|pf4}Up;5!1$fNz$?3`S{ zj8D(?5*4i2G$*UD&ApI0Y7}sOD^56Q9=DPl3Dh4B4TX{;!fSBJOZbw<@^W;}!8#Xt zI_GIU!F`s5<**!W=Kcz1ENA6dGhfk`%s-pCyMha;&l9qyH5~FCng|vMQ;fD$3DFEW%``=F;4nAZLYwp+HEG<3c!}`aN)osM+~6r1|oZ z>r<&R_*qUHDt-AC;ZQgPjL$qQS(IO48K)o>@*kou}`bC$Fxbn6=H>5Yyn%f@h zIdJ&h7mau({U>QxR?e^s(tCG5kxoB3rQ(@hJqLdN_^1CY%Z0gb0K4J_z`cV!Vw^5Z zxvF}rLKTGwBI2K@$^&4OIT?#NMF%q(jvEsiBH!_g_%oawfxx^Rdubbuhix=!h{h56 z5!B>WD}{K~_G84Z`~;K4DF5qoiHWr29V8HUll|yI?M5 zFc*njYq%&Ag43WF)oPIkZ{t3bCk2u zIp4X=DLK{l#dYz;<<7ku2KDc)vS_XHkC{a~tv=GhcTXX%wlblXANhvM)3pz0$4t>JpkDpGn)h1EX;ntIjhDRE^SxA&^26PWhpFf zlKLKaSzxmLSg@GwN{7l-RNy zn&ahs;^nm9(JqL3~vVtQRtsuA;qOql2DmPH%r37(xbS{1H#q?u;`!Kz3+aKw~-=_bW-b<@!d@FU{k^Th6*#qRjE^e=UU_@m;8HHbE zh2uuC%#0s6s(?;^FnrwJkZ@`Wzf#U#Zhrf?;lrH7azz0}qAZDy7Iw+jgsGo*$O+22 z3sivoHflw|4jN9*FRH~X-`axYBb#eZ*j$q4i$L&=>h^m($`nxRz#In}KGkdWT2mMT z3QwwAbSO|7vOqdVT%C?f?q{Ak_7CXa0g`4AdW-as5s=FHqhlP$68mb z>#)n2aE)?-+vHT4DKB<7sLM%Icx7E3H*?@=&EZI>QczVTFtid(3Nj`+psUXl8c`k7 zRXUxi+^HRJ`bU~0LUQCc&Z(OcQWj4`b7C8SXj>mfBtYo%7{up~(>Y}Hn0 z;3 z>YZit7cUmO92*2O>g>!xFFJ~?yOSN%j6!~K_iN}$D>n4PVV_Mwx3C0a$c;OsI*pTaesB{06X zndSsWS5X{trY_1aM6HW`W5(3Fg(7l3ln?NbY@x|%GG_jULIQGpT!pqsC~RTp8J-dY zqg#pM9>trAr5d2kW{-!BD{jfWZD)>b$F7Te)^IJI3odL;YYkghLuD?cVO3m%A6fAn%n~o?It0Iml&1&r zp)wER%RT$Ft9BGy3rycOl>!ByI?C-~+q~n7Kb89A6I2HWQsDch4w#YX_GcGB*~iTQ z9(*I*-=OGrkOf8P@fKHCVOSP_tE)=P(AyadLvP_wR#q?+P8JKY;$e`jL=(AMsGYWR z_NM0tUoxb6&U+Wq%7LqvUXjxjxp?1=t2U0(9pQrKv%?qco;Rst?yQ-Q6z5zwZqQRV zj95M*=yAsii?oZoo?gEovf!qn#+0+WEk1nwhSU4d_e-<&(&62QG@du|^vltMSpnRH zmYohB%qzxKRC0L>rD|!QB-Q0L<*~dx@O-lSWzWxBn>Z1U9r1{u953R;UAWIlb*BO5-ZH0X`bd5qHk}xA!L`O3V+^jna}o71?8(Q;#aBuEoH<0!529%ha>Z6DaH12; z?W7{cS}9#i*U=_=n2LF{j*g@PMU8}fLy@O)kisb^J<6j?)Q_Y`Iq6ZHBGNW*8p7ex z2#$>gu{#>g9o)O4OTo!%VeN3VGI`wrpv<;YsTIi){`qRm4S@y_vJ1(A{3Mupy(%km zS(Z+c1tmf-d@{yDyFSspaPtM578vPofAjntRyFRn%btGh(#xKfcC~$X>&RPQy(Ilj z`t1klT`!EgY0qo>UgEoNqcR7DLm+iy^dCD(7`&hY9?#$ybnvT}Uv(3wY6m@8b zUMDrkC^DZ2MD%Anl}NVeq@FBAMT99FVTy|zc{(CY;f%HC&6l|KrSER2KtOdm*x{mi z+5H3k!(#$t!i|B(@crz5;Xe1H`lB(I>W*r&*(_nUbg65;dzt%j*EYv?4g8dlYlZ7$ zCU^=ad*^wVdIc{<*;(9!;Gh~|SZm2TvY#9V`@`#Xl9OZ1hN0U8=|zI%wBjxFs9Y`= z#JSCM#FnaG8_PK@6*^OSl!C^lh9?EqgTd_!gIf~4xDjV?iZD1i4BQl~J*!|h)UA5*w?Qh01s;jNXP@v7bJW|&DJCk0%?LTdvT17V<& z;qJmC7|vU0$2)yB-Svh8@DC|z0g#fdtZCSc*j4#4Vi#75k&a9;CDd-t`R3X8(*Ioe z`Hj!~EpJnF>BLnVAH9C|E%b))j=eO8YEM(PeAD{)oQr<{#@jDm3o>UA(9(w>b9^9k zUNDwuOmr8ytK0+JQgyI8`&>3wJ100M`$9HNn(mkyY|L)WdsBKV@P71@z$d|P!e2%| z;j$%^mzRp6KpGlD>7;Z6!>wDWFROMBWdq%Vf@fu)tBrSG=>A0hEOd+>@#r)Q>_OcN zGRLX-2nZeF6ruC|4lZ;maXr7?!B?@!=d~N0N(3dG2#R!lpO5N3!`J9r<^#Eelxs>S zpC3hnkE>&pQ$88#+{dMrkGr+Fjy?~rqYoV&TuPrE@WYJJ$Qfyo-`u+3>+9##;4f6T zNviN2#ut>m%7;ou5s^MdDuR;B`G@O0CD-IDPBYw)P-2{BqPbP0I!GGapXR}9wJq`V zrI$Un;i|>!S3I=l_^%(P!s^jyGS9I=%>SoXfA`XRf7*>2X((uw`uj$EW}oRF9y>F8 zw0~0coa`z7xv?qPi{-^xN7>PcPD0e{4u?mD8bk9#LMYq2R$r$xT^HlonnHH5jmRao zWN$V2Qt80ZcLqQ#gzdeIj)A@Jxmgo7++ZJZU&(E61i8_$L(IGJRgRLfswOve$MT@G zwWzoX(;a9A<V`@9qEMwNOs(i2rvtrEF$&A7?6o$z-jo1|4(p!H*WHvA*?h%$ zSRdE@R1MRR;!&#uPzN+{bOF}cUT+&%E(gqgklMBdwcH``+vgR~vRP=01=9x(D)~H; zPxE=WUlz{aRsQwP&(q(~;NRY&9(v-Sw&jMYYuespqg{Q*-?-#SIzIgCW|{{&)J03v zAEbZK6PtF;q<609Kl5?aIRPMtWzriYOuHDlK?n6lyGMIOjp+R7{jLYxPrB8ZyVTtj zZHK5 zRj_+?hd)kyvNujsG*z~IIZXjSF0Aw=t1GLkdgDe5$Y~VQS-5St<>7||vFk1yHYwhx z;+z3{_X_u|Sum$+(7FBxwLy&+tT{0QIImxNwD1LRUM?x4e=r)IPAORKED8>D4h+hU zoM=wDvp86uta0`Vp6whI9Is4p&U7BrzRU7-OO}_MkvyYhSjpP*b>&L0{9aw^$_F_I zsa+b&mzBR)axnkv2b*yy5)X%l-l z-9&5OzlYK__bfXx`}@6%pAyRc-1@?we*e<%k!x2HBH))RL3-y-5(1XW3Rm%i7u@kG z603!Q!Y;SStFpq;s<7&F`GSH(i8otPf=s*(;+%8(QMtAmEP z!VMXG^Q4qtgSfB`^k98_8--i*ju^IcV8D?tv?GWMjeCFQ?ksM+@bb~^e8*)(2qi$5 zs$Nx1p~E3IKeR5?6v~9e5DW694)P@p^2HApnXzUaMs*lZXC{Dp_Y;vv;H|jxF(b^S zh3Q(TIGFZ`^D)y8AdHI##@&t)S%XJKIvQ>ZQdW>2az{=jfRwdkWBLF!)NjfOkL*#3 zJhCfJ-6}{3f}!B$B!%b9DoxiQ6w2}?eSGQVEZ@rJYg#XRc4+gZb4J}<3x2@2w>Lcc zK-*-te&tnTZn?VcIgk#kU~%CVp7Ntl7*VE~n-LwhJ2fjhdBP4hm>J2=h}=WsAvq`a ztN2ysSA}2U;WpcpZnHOL+w6_mHY0}z;kctF@T<(P3cpg5VXdC|K@dB`d+y86gY-i5 zk94ectaCIuS{)xc4m%X$$aBnhEOR_;Rqc0V99o_O>~}?Ef+q8&=*#?!V^`p3zY;fC3nhTMOSOpT7h4!gQ4!B4w~ndn|1G{ zFO_zkc%C+;FKe5|@~%vu2ef}3FhFmVWOTUU?kLAjkzM8%LPtq;igdy->#4Hn6!~NB zFi2e5;OXG4z5DP}!dt7V&9p~PGc71GPY)M?n)FI}(!v@2fg$CNxhTPLGPGkWm>4JWuDp_IGK#SrDKU7GD196 z{Gj~7ASg;8Ze1+=v9!S@xULz`NmzD(TnyG^l6|z31T2xFcQ`+3W_)%g$3|baor&9- zn4QV75AI~!nYf*a*%_C;MdY?K9y{Z;GXdLv)a{Jl&iL$1z&1m4JL9)AK0D*KHzHL# z148S+jNwjqRgri=JmC0y_>+Y6mUJ}1!fGPvh{O{PK}hCi%UNjnDO66zqPn)Ph^{SK zSHz0K;h3jrt&jRd9zKZh&;gIf^YB3s7t&`Pk%JuLK?D~MBJfDO&oos}2_?`5BR9ew z$q1K55l*a;qP1}v=N-h`JBafR;uyyAVFz(;rNnu(DUQO5n@e#Qb``gS{&DP~l(5Pq ze|?e*yCfHO$s)RsPzP zx8@H%)j~ESrQ8_q5I=1&kI9}aw~ZJ$eZZ#+77}!}|_GNeHUGwTg8@DDWoiYDc%@d{# zTi#bJzH`Ln3nuK^w7so_J$TXNzIQ&_b~oFyc=4$FZfkqjvZy}=P72Y@MnDqe0NbFq z=pPH81r7^G1G0#EvH(c#3Z34g?~Ck@WFlfh4SIqhKUmaM4!JeA$K|n!)?;%V-(||< z98wtJR&<10)J|?oJGm|GY`3MIT#Psicnj;~n+&aRt(>?M&56UQSyA_+2G?CqZmv5i z{Bw?opx7!$yE<|>!sbWTMVcb55iugL%B&Eln-Hg=5T~9Hmv={-eLm|z%TJoqS|@Yb z*TI|?E$P;3_&b~DBf|R8h7N|4X<#4WCiW>e;0K9_Z({?+96D)Zhh(2aQ#C~sWWCrY zd*alq`7MIMV^0fEiE_fQws<;F#mYx6eZO)2C|zqVn=|B+C&c2rHw~OWyyEJ%OW2Bw z=bm}{pW2?sSlEEfL9ql@-c6$Ph3#4Vh&&0H~1Su=S1d8a~;$4x&FDKX_3ommP3}@=Lut_ zvD$gAi-hUYbnPOS7S0wG9|)?TO))_`3K~S`DZrhf!Z`P_fnJeOMY-^N%&b;VnBB&m>A(9G-7>J#4UiHF$|S)1=w&3CFl!M z4Pa(9oJt?|DG`i`q9x-PBaLxfAYI@P(Okh+0e;+-SchLby50jGz3~r!rJ<|7yy?UA zp`BY+uGq5mhLu}bfR@~HS^Dp7d%nDu=2G{cUi;IZ|M1$YFxZvpSz!->S9MXd5M+f(?O(}!kn z+i6JK)woF7A{wYkuY9!c?K4;Hn|-?rnzqkDG0_SS2!zJnIk4ImO;f_3+i z4~*g615_7jQmhjDi(|wY;v!LY_*94La0h%2HxX3ov!7u!CbL;{emHVpC}nz*SN6lO&D`s z=Af_{Fw;W-4QYmWO=Bm@ucaNnGcYs79gfwTnL<00v@->ECg0BBhYQA19*rmn7W8$T z?HEuvzF>O662~o$>kA(bJXQXp;C6&#k#LWpOh~`-m9v}JCj)8n?1dxox>~7Ay z7>yN1jXL-2Zd^w*38^N$6* z1s~dhf@n``-=<-~@FN|x4hZYip@k#t<0`4t0^GgnVDKKoz1OZSdEvrpM=W3K+qL|>EZl37b;heF-s*S~Q0_*pMqz4u*u zdiI=!(+8ZMj1*OzwS2_jD@yZHL$10oa?Yf4dMC4U0$O3^nM)>3eE8g_QMMLlzGY?7 zy(CQY@EbMLO>}lRZJ4${>N7L4ozalYlf@XVYBk0{W?7UH>T+vTAR*n6@@k+n1*cap zAO+NYiW<{QHRhrjMIGoE*r?1`mMLo$k$~~DPH9qFm3@lLkHK2!VUKWP9Jw87hF_+{qUTpotD_)7@Hqk7i)@TVj>(%Qc-f%UBP0jnV^_QJeSx8$w!e?3xnHamS6j~;!? zY0VEb51Bi%`Vw|~+t!W+L_IBCOI)lwpXE_#=%jxCp3U#sLa&0AD$yNwADy!7hjt9v-j@z`S$s^it$PQ(* z_6qrf_8xgl`-*(59VbV$a+r=5At9}l6l=Y;k;Kp(lHm_kNr0Rx`y+ikSuCUNhScii zpOO-;84wp($1PRF3a@37EYep{g=QWkqucgi76A)K#DwhT&M|V2&0V-)2b5Bql-5a3q*P3!Gp41owqbDM~t z_Y*npDDA#>0SOZyV$ZA$}vU~iFqu=OMh z;g`2Z%-D@$p7NC~uj@_zeLa7h6LY?V%e>Lr>@oMOT8-|Q^BKIX`2DKFUN*^l4U9($qyh{NoIJ^tbouZ>IJjiy{^B^ROpXejMaokd}#EG~uIis$VAoA*f`l zac7RFkQ6CpYRXeZs+GR#X`TVXVA)WHt3#dry@P#c`_J>9j}DnZE!yB+D5j^yF7ms-I65iXc_la-82}GHK(swOZmo%=V+6B7x|X>R{J!cCIZ9aa+nKq64eddqw1bI z0{^hAAHZMJ+Jk>_BPd7`C_my76qL;BKK$7+PYaM(1fuHKw(&afV~0kIwTg^)VlooVr9C`5uS>66lF-^l0Gd z3~mQUhaYKZh=3gn|4=<7ntc4aa(G9nbZP=rxzeNWRy=ww0_G8h zHsy_((CkjQ672cRe(-hn6HjJeGwI;%v!(oiRw;#(RT0x;N2hz_H9vm;2XD)K5UoSQ~S%?p9}Nne3|`QwS<_! zzy48QZ-4gh$-KGUUqi|Pa9=Kfdu8=@@FHb?WU-*Z4o0=J;?Mn{Nahkb5Js__6iNg- zH2vJJC+oz@CwD$vefsuI>E`F2?D7tX==%@&US$`z-SgTWHsknvY{|A0dqGy`r$-B4 zgRG9RIp76F%!3o=$yRQ~@vB#~Hdc-p-OYd=-&WyQm)XJ$@$swMG_zdxhK<2@?MxHQ zG8=NVpjU7T*-@`wcFF<6?@c%jSHjDEM{l%yD)xRXvL_bRG2u}NE}Y_9z1eus_XA^Y zc1>w;ymyl(7;eMMyou5tRXSc2m%|@&NBkwu5?6`4m#de%+HjU*! zv;4CHv$C#`FLPhvyE1rX)(!5}zBT?efg6MOXd9f*>(BXi1;5Zf3x4Nr(|-tNvU6>r z5DGZ6?tl_Nl8-6y~|AL?STWG)SURpo~#x=afv1KG& zJzOJQ!YEh9#az&0Yj->Z&FY%ti6y{(fV?*RUK?~jey$zSj~s~N-#9uHi|B`VjzrLX zKpsRxK<&8mOkgI!Shck(@RkQ?Is!EP9C%y@i8FJMcBJTF=7a6MYqWyiH6HxfG^@r} zV1C(Hj|MOSa{{RORH`MZK#6(YsW*N~WE&OucW;sfOM|DC*A5B$iX~@y?u+lI3i47P zH>WQ;v#`gK@m1*ypVUhW<8!<@VrkpGmo8s&8JlzbkDL0{k3qYm6fE2~ftEe=ciUf>@+(d6sZ*=@XkFa=DEv8-6l%qy{OnrwcI-U~Mv#J>I zxC8&ZM-seu*4LpiRnv+n0~yRHe%;TeNGX`HHpNZMKf1(KO3I_L7V2#Vi7d&_vGWKa z3P$dDT)x1)&O?dE@HBdsc@BFdZnPBQEzcsNT|?<6LPwH$Btrxe;nDP{S6`IBWVg8q zXP!gQ+c0w=#Sby+Z5Vl|)jt70@)Le$*fI)r&+e4@Eua+%fW_X{g%+zAF*32IA}*oy z;ts?jqLMenzhl$DNkh$iu*Hi=u#$s2;x!I66h9p;ge~D3?rCYE8WseIh3xNP&5vNK zshq^G52@0tGC!-7J$lK6^hjY^+wbOGF`IsQyP(RqU*2~9RgU{{iM>?btAv`HY} zmw&s^bYc_&?#^r>H;PH&7;zJDs%VAvw{r-7L}ZB$r}rYo!@l+-EY5rHzd&S$#-{pGn;eq$#TozTtntU`B8Z81(A^6*an`tOWsKCf%*sF{#2-Y2+|2qUJv<6@LUfo z?@(?gQA`13sP6*rxyhPuiSRqpOS~lWcbH2(yz^{;70|~hNCyE7g*E|5`vI(^FOyaD z<;){+A5wB1^uH480R~v<5O~iGaK8?oD}?fOkdMJQWJtXL`2eNtX#!+So`P_- z-T*I?nKnIRJ5h(QFTy zD-I(R@O7{B2@w#0@(@oS0GuvPBO{R*Ii+8d?Fc2KxHO#uMTO z%FAJ0&w;*9AVtPo$~#6nIbkk_^T%a2^EOvQy+c7&G$2UEqGMg7iM1lX^fM%m>;wu`kIvYAdOPwHyiMdpo7~ASiFq*-|Ua^C`gRTjW8&=>qXBRv^Ab zCF!Zm=Mtf>NKdhAc>YIeXP~X-Jxmcg-uqAM|0lrSmYxEc`Bdf$>8(r#=5sspgz_cr z0g$j$sNVvx3;-NydXGAXwkYF>E)#MDV4i4@zLG(Di>?u7odKe^mp=ta5HGH zw=(b2Wn>w9i>y$x$P{)L$TaASy-lt|!1qHszXKheLUWyI$xdy0?VO^_w`eL4QW^N~ zbqfwya1`J>prfHclTp+SD4)5002vLi!lc*Cv3B}=g**o7O*VaYqSHB@=+o7iE<2}O zw}5=N`4q-+qdk9=k0|3%MxvZUIb*l)oOXDAHQNYujBi3dsK#fRuRx=DoOGr%uSEEq&U>)}>}WaoT!Rsw8tQdG;um zH{X(9aXmVokIx}*B1@&?uH#JpPWW07 z5<$IyI#IY2@Qk|XW^$eISFjiG*-GN$`l61U3uAwU*MUyO6zimO$s_WYq(U4AvbL2> z!?nVB;COKD)k}$6%>p^`7U?NI32m~72JO~y92n#YP8ay>95AT>7s^zk0L_koHu%2v z{27DzEqpx6alxMlTLftsaRKj?v&cEzp7@eHER7@Q0uQZMmXY;fLKEPN4e*Y~;JI-) z7I-ek_4S?PJm9ZYAe&Z!%psiqCuWWdPr-Z^gIos?mI02QA`xjB;BXF~`vB3Du`7{( zgpH&aX+*vgYadx8%S3mX*3#h0eYIi%hy=2 z#sprcn<>o~baFM;vr6(8=)p-y26gC8aXFbKjwcmDPvBi2=_>vic=ZQzzu+a4#aGGw zVhdS=WidcX!CoIFG=pu4^?S)EtY?3L@;zjtSPRduA{UF3$tA*OpuIPVCeDDhhUcVP zfKCeG`ETL97SNB$L}5Je)(Xh~ka-&0@jjX}=OTzhNLT(`2jFA1q0^YzP?*)(u%<9x z%%3t|7;F1D?J@qu`1m~Wz3?2i5%0&p3!M2IK#`fIN3)yBQvmDOd!)ZGoLoUSWOe~w z2X%rW9m`@hT>{WetR_1EmP5WA(%%AXGRt7QRg=F0+yL+X9i&@j9+szs^&`D7g}R3T z?g4nszSj}3pP#Dl2vR(=>y+{~&@}+`NM;v8=k|c-UeI4J@$}3t1fa#U5#*&Ls9Z*Z zLJ8F8!gHO=AXYbrhf(S)1w0(jgE7)*8|efzX5;ikR~v-bi@C6Z2wb$ z^<4_k!14Pv$uen(c<9@izd<^lzD;!DQlLQqD0hW&z{aP&PEdabukW;eKq~}s-nqVW zx%0aIQkiWflRJV<2krE5J2?YEtb_Idoy+PgcEbC3+$8g@LQKQkR>O&13V6LXe^}fKpklBbQb_OIJ?x$7Z)(Y)U_8OoOdJP+kBp?nd*1jw(2Gz-#lfB=9Wp1%tL?U5h( zq5tRUPx~MLZVEQbR2XL-#=Ib1(%Fajw^MsPe*fS z8AyCQ;fi^#|lFaKMd%Qs3-+^!RC<2r{0OL)_>;>KB z1zq<7$ldQC-2>$uNWZgnnk`#@Bx8R;r~O}-|5F|LKhUWa7EJC0KUZ%<9}CVx=&XzX zQ}`v_{Xf>_Kck~N>goS&+1B$mIL;sy2#S%}h0xh9{gEB;3*}$3bN|zFXS?G+E_bp^ z>~d%L(f!V}XWKI|5^IM}eD|LM`WE80leWJ-hR%H4&Tm#3a5S(ZfE*~bbm$`>FTnoK zZP}apgyzK-Fru`B< zccxpk&$)dFIOB3~Esmdb2RIGD53m_vuD#aiLqgy0GSIr{=ZX_E--)jSbg}_|F|8&G z0G@%e7s_6c#X;Eza@!zJU_2gD4N?u{`{9 z(@PVt;^O-#*MSbrv*UD7&cfJ`lE8RLrp1cSHOk+D9y}NHp#yaX^gEvK3C$5Pj{7b7 zmEa@;tQd08jwNG!3iXxTjp#g%(J_wvG3hBzA_D;GM01~N9L8USPxxNVN{qV;BgpgC z{#KK=kv!yhnLMOUBZJhXe81@~;Q?|T)IFfwLLQJ)e1Bz}tyfVe{zU8#W0|q`n5H%7 z&Ncxb-y|{&<1rokwVzW5fiC@)$DzzP<}cVbpyO8qOf&Z@GDm+p-kJH675AKJ>G;dq zb$;hK{UkD4xCZ<_J0|-$q;He+#T5V+jysRV?hEkJ_H(w7ZJR*;TpsH)_j@n~73i=J zH;Ci;bG}|@;hITq;9)PWe`cp>?$7lT7ejkSqT)9IX6%vg&tYsB;9T}Dw0{VA^kU!@ zph58tzK3_c1<*G0IDhUUbKguJ15gL!ngP#k#JwXM$PFhUb3hzNR&(HSwag>5y=72b zO}ns*d(Z&E9fG^NySux)y9IZ54estvaF;-EcXzjMc%JjhKIh%L_WAKK46NzZefQm~ zS53`SU41oG>Js#kz&+-M;jMvIj6C1M(QnlyE~}y*J=0KL>)G_9O=_ zjLS^)SB^}g!TmNQkO!qLCQ1>DMrD^+{&3*iW8#2<$^yAm$a_i3;WjI^_IiEo&Rvcz zqIk-C0!47Vv|v6+W1V7M0hnYCkQb2Sji6hWcVAEGer|nF-HAxqgdJ=ha82Nzo_0fY=_mXmg752r8MKRn9plO;Lq#pZw%ENZNv_XyB7-u@PL(ysf4-Q~1 zM}P1_72bdWNB<$2p!Y1`?12VPQ$G)>2#x?{yc0ON81wE)pu0C818m-f^Mk=F$Gd?n z;Nyr71i;~iv`TTixG=LIKT)IATC|Q66iLQhHdu zF=s#OZr=`K;RC*w&~{>7Z|WMEsO^2!Ew6n6dbi!z0lG|Le4_$NOX0_JBPq}Y_S4P6 z@J61k=1aHE?yGqjSp}AZpj$tM&5`Ccy`ShkX6&5z>N>*^`&cZ+26>!2jd_Twb44!@ z_j{>$s;qmqW*Exu+A(@@YGN0C*ZM6Ecy~YOxp9w;W`{nqCN=UwII0KwhVH$DiN5bh z?X{Wdy4fx>3hp4)fnX#;M37q^Fe<``T20v3GQQ>+UX?zzw>4x0n&OHP>kZgf$t3{i z8viK71$5NToWs^Pf$57A3h;{&*Tz%^(K%WCBP4PX4?)5}#0Zc+=i)#B|GEI4moCJ5 zlmnJE{FVp*FH8;U3r@EAi#l))5%ui{#SGYk>T6bWtCgoW$fh~9SBZ$4m+=YdN zfm!8U31=F2ejYeO?}%|A?<6u=Qs&u4qtLUJQO7Vr2Y+q7!eefuG6ncMEOCL?L?cd> zAKJ|^ksz6OO)oYZ?W$sk$9Swel$q~9G6g`vSM+^uz3?c#&G5?y5CsrDBTPKmNM2J% z;)Fk9WD0EgTyumaP$3s})R={wU0pp zO&Nxn6u01+4uST#XwpvZ-sk09SgK$7-Ou?zo;OnySzcBMnYIr$M|BI@TP3 zk{?gqKWUmndiF(ur*LLXiV2Rhm@3hww385azy z17Z|;?YXTAkpQ)98vg67t+gb-5U&RfM=)I9`dRbUhaKp8Rxe@*o&Sv!NH*g&^fl-% zll5oS8Be(nOAoT2`o4EZin_)AN*Ddc)CD#DN;5E?i5)_;bLhO68OVbmGR~RO3DtZ! zULo1Td7KZ#o58c~;B;)rmDIfK>6NR@g`ZQAHU#H|;O5NA))JVX)yhnk;tW@gLsXi> z3gYjfirWP-OS2Pa8O|Ktr`8*)k6+QuPvbJO+z$rD2b$*gFRhunVw~9t>}e(pDoZyP zgXa~gn&UFQ+pqo@37l!8yw^D#MPAaOdP}ut-8mBvPghox-G29sS_>dwGGTU*F1dPT z{o&HV_*)N^YEEBsz@Jpy;Q1y_;L?2Yds0&}Vp}(U&{DgB@#k(zf`&Fb2aofzz1}{x z0bd79)A}vXgYBWBw7h-L0@?9>-PD_(Qp9lH>ISP}KuolyY8eTZg6JJ=j}pbArE8Ye zUuRqyvU;%XeDH0L{#bE->P~;?#`F}enLJz~&t6OLby%(8!G6~V;gzh91EY!suATzs z0>3N+cg270zMq6-E8C9V>0WdF011}N3k=jc*A{c&gNFiR5~FM7MB&RLfm+5cLJpLZ z7p*|g{hc<-o+N`IU*S?BY*{iN9S)xo5sUg_2K?cHS~ zs2hz_vG{kIYs%F7{n`6^xA%*SZ~MiALyM|NeRced|MT3>SJaR{?4`J?KWfPhsWsnO zY0#-SUE{hC79T_fYZU>cy5IuugPOL?sIBOVj_-i`t_DxjSY=Z+VR4X;;nPU^YE$mU z-iue=4zz|($3%*H?$GZv&ly>cpE(z&1?tyJp4{dSC0Tn$$=c)QDAr!neks3l zjxYotyrnEzd?dTpr@g!(HG~#!nWCHYw;teOFCF8-JU4XFgR0 zO_YV#EnYhWRr77u;N|SXE8b7365)KONE>~CbRR8-T+!1dYl?u2{GNFuN4qcR>a$O> zBQwm7mh;2Xz9VH8#vMhPDcO*#1O0wdtl$HvLZ}037S>?XrY60p$b$H^XB8SPge&vuOPM*kJrf?n2PG_Iu3SG=gf=Q3Vi^bb0Ss4^ZOvu=((Sh>341DwY{`s?^4SjTD2X> zrhFZ+@0H`+YPhjv&)`Nm37WG{P?dJsq9|Fqzj)X}J?O+3v+#avPeNcGSn%`S)7fj6 zfpRrzPQLe#rnvd;2c53EqN!3wjk|}N>|i3l*cuhCj#k5OdeO?i#a$PoTXkB`qorNv z{CP;Pb6ktMMOhuH@4+6s@ND(rfx!CukS+L98tu3$Teuv(LqDhby%KH%0d|@NZlbf! zD2Js=GnqP6nGs$m#08enqp6#;I>hgYpPqyx2h0^m)h5FkL=3} zFW(@I87zF1RxD4VwpyAw=^;A(C@R?Hv&ruA->x}XO4#3Wj?ZS&%rf#kY{Y zW%pXynXjewSbaIdxSMpFTAE{qkD0Mx3`_4NZSj;M1&FCHr*!%LBccl z!-<)<;A6pT5YJx8O>R5BDMjxmQyj zF51aUPw+?&SBf#gmg*Lqn48zAXQelEHJ`8cUp{={t)V@xnfh3K9RZ-_cOn(bj+yE$ zY3X+$nvK;2_7ef=t;UT^1FiP>=Fr!KFpv!b%-<49?{M;VU^8lJtvh)0Qew!`6vXMX z(Z}tfho>i@7S(f7A*ehz;(5>F%iz==s56-Y6I$38L6Fu~R#siYJlxFa)UU})dWQdh zer|ljHgy~F5X?#6(pQPeW6GYoyEt%h-#s1TPYZ(vTe9`yS|98UxxRpyN6H3COz0R^ z$fuVv_L=8*6zds9u`QGz~O5_H~IT)<_-ko9l1j-`~X{oc<$BNBor8K1+GDM z^5>tVm-wPfp|>wQh&iCv{B7uvS!6~(78oK8s=Sx0=9?9mc2D6gn=y$R>~rr61({W( z#2OFk5D$fOJu+NJhV>{@78iNh-XgRHn$jO) zHTbd0B@A*V82k7jw#ySlm?vWQApC@;Z$#wK1zU9rzeMn+H|%2R3JAd0{#8>!u>2@<7y9hRN8y#ZDu=PO?LEbin z?Y_0_;&)Z=c#7c?R(nO2@q?o22W7$t%z||lK*~nu*WFDL*`2PRN*Bt!X4`~3=G(r zkCmJO`zg@*8vh2rJnkY<_Eza@YMNNrspt}5diX(8A<+V&dPrXOQs)@zfv}eNL2-YW zgs;nAyE;{e{8CNZ+I%YU1BU;>I4KCnubNBwy{}ig`xhZ(ucobNWWc607UB;6V?Gwr z4!+xjML!!9O*;%d{ErAUqCtMUb%B1wf<5jSswRyPf)b zhg?+4%3w&E*s(EnjY*${w(a9u)QHbf!{Fmu_=#=4hNThOw~7S{{USs5iGzyhho{F8 zjzioMjnU*{)gnd)CAlY^cj+{g&Pk;<8k0mo!HwUhmWTucu_KOu~*Zt1SyQ2<{ zL?f6(H<;xo-c|&De)2Cln8=yY0iR?;k21{L>jDgBN+QQynu-?K6n*qgcoy+O+*=qYaWeK z3Wv4NAYmGIli;Vo*P23IID3dA4FAvS0wQccab?vSuLzJ@$qn>cB9X{Vt zx(QY<8@buolp*S6n|ARyi#*f);*#nMQ-DKgd@efr=WL&6!^2V5c{w0)D8L+e23@YK zv+HP|2vp)u#K=k}jkRXc=6#WMrDM66fx~HV&z>r%bAO;$cpuxUdd4*fBib-yWddSj zZ(pj?nWegZEi+OO>c|Wg-laqKtYNj9#ZBB=LklB&bA8vwdCD{0|kpN!q`_ges>MHjPCD8R59U3{EW=Bk)*{T>A%m%2S%3V9B0=Y z)GeD4n+Idl6L}?JH5Sv+Fl00UjwQD4#+1NeT~|ryG5Zsnuz`{iJ7+<8L4NP|)_P1? zqz26`dfs~tC#?>q)>3zV%j=)BYIVUxX|rmM*U{kqO@DN*e!6v+)~b5-5dK-VoQpun zpxJlI@1jSul!=f`!UgY#oED6F;yZGmrmx2Z*eENT)lZZSybqOY{B&gCl_@$$GqDQ~ z5GxjNs?97;t4icJ@7RW26X=?j3oAhXr+HkN0w7sj9NWE#ZqFF>;DHaJS6N^v4K+{1|)Dcp%s|Av~(_ad8N`#T8J$V@Cs_^Q(ydu=7XWD3l zcn(#2{}Z~eA8iQN>G4}6QCBi~`$qFW_Ko^pg)7%=SQS>D65|=`%=qNA0p{@9~QWci#=zcOE7`MqHk%fpf%q2CU2h; z;Pyce3XApEuhhV6eh{+5@*GfQl~<%Hqh%$}SsEm{HHiiDXsP}DiG0!zaiq&D<9hxd z4AOLL|7MW>m%|+34tF+iaNK;O~$^Cb+ew6ch@hB_s`gSozy zw9@}2={x=3!f{$baiRZ4`p(SE@-OE*>tBL$Iv56k@m(7RpmF~+w9~T!F$>IJ#&>{uT@!|d<+CBc4F8uOo&}HvAQ}S<(`PBuXSmNc zf1hUkt1D)D80JrdJ~Q)Y>%X%8jG+y~%m%~q*)t2^Kl@+JSm{3716=Z-G5$&e5aFN4 ze|7kImH}|Y#>fZ=!A1`__^Srn-w87UivOzekA{Hie`oqv*uOOO>`X9>tc-w;8CgFY zvCuIAA~CWu1D>C@cSg3)EdHNTKnF~8pLLl4wf<464fAiN`@aVC4@3OF?vnq}bpOvA z<3DQdSy-50s2Kq>!0_qg2dMX%0r~wybkEAb_HUwl20-usz3845FvtH{bpMwe{lAFr z=|2bgk74}JqWjN%0sgBl-CJ=5Ai9V1KA^l_yiB}!y&uTw= zZCSb$Ld$Eoq>yh4{LS~A5XTY5A3t>`o=_?TzAXf5& zqyDMf#C8zML}t+1_`UT|ph19N2R%7gLcCFnya?KgW$fCJ0trjt0xhBJjOnCpyFN`S zf^{wCMCByk(dXwC@)oHq=c-!EdVSXk8CqAj`yM>}e|X!X|Jan#bN*jv^32`c zOKGq3!SRoJ9o%1VvwIL2{kBGGgd`vw*c^2{}PLC~d z5-`}yp8NytbRs^|9$`7Ff+}%%ah@Y4*Z50A(qycL zyHJC?q;Ezjs=*r*-`FD^v-R3vMyz*jGOzF_q4YN79e!jrU>uwj%X@K}K+rX(aRHUZ z#AWTOIH1euLWZ3~ym^kuj;Pc{oRYZK-RI{v1E3$zVgBjUJ_-(3$VpEzADu-ib#W^@ zOkXv(VMU(@ZC;)RPt}hJPTS?$w?S)7+r_$8+uwsHtXj?M%{FK0mY%BB8m)Q7?dA3P zot2Ho?l*Nsg;DFlmd7U+mSq$vN>n-xHD3Hnud^fJ6BgnJ5PcPn^Q~EbBApn_z6df> z5oN&+JA#t3d{f(Y0pn8sG8r`gh2-W`rg))>12o(3kmBd`@|G=vw3|Jci#~0%np!?h zg@u(};-lswv4}oION_S z`xx(7!!PFNIBmuls#R{g2b|G1r`$uSvI_0L3F1>`^ZcIqguP&Fguzb z^$6SJ7A#!-)_4tWr-G*i7KVE+6$OSXqJur`+ARC{)4yqTSUm#T27}3dK~I`?tI138 zVjPhKcm-+VFrSn`m{l9amfJP=G?=T}C9&!K0hW~p)m||OndoafFfLF$abPORa+&A+ zhIOK=$zWDLp?#PGD;Qi!4~k`#q^Pm#v$k9Ev$W}mPO-N!SDV_p7a7$i-~t4$ae-3< z#G2ZM38zWHm%K4tr7gW5;rfSVEQ#y8b|0YQp8Bw$ksD( zqChJziM^xxxH8Y8mRnr+b7g(cdSD4SW*HN4-ryxyEPRW0hh3}GC|0S(zB#C-m*jl3 z&`yB@E@XpuivAEuQDa5Z+&3G==Yq9p&i$st&?S-W6b5Xvt}el5`neR z9*R{z44hTh_tu2*6W8>1x_1HZ@ZF`^v_MnhC%D4coHYr4k=&T29fZmrj({YefT5=+d|=KtjZ*uW8qLy;V&q!9l6l>L&OnY>Zao2r zLyI$|tk6He#|>?_ZqsuZXOugHPfje&(9tDMU#v*ZX156sSt zJSBT+65zQfbn-Yl)qb_7QW3BTMX)^oJ`Z7rNbX%BR!!txzW9DiWI-+1gQ~cEq8W>Z z%_3SFP}+u?EEQDaci+J#rfX(D6SO$hMeeWju*r~M=@jU_&~i6m;zGezZUdzhoSeFd z9_4%vltcF=;r3dKc{^nIt8frmD;i%1u3A#oxeM6iGK3(v)dxu1Jg!1&*B2tH)7geY zxGSupn{t$-CDu%D>MFk_aA8QH%Us!vLuZjFAZxnH3#4!D&*0M#Qi^Y&br5jd8H-JtdzDN~Yo4=o%wD$3c;*hBoKL%sh=94`=Mg$ItJYc= zl6UYsry~y8dAlVM$?b?B>$|R0N;Yc6z|T>%DkLTT3XX&b6D253w!aPOX`HJAia8gP z^v)#9RL>HL6V758b|e+@#Ei5;+Jd@$zfXqemKPi~O7|wEjxs7TgZ+JW$HX+xBIYtP zCPhk8Gh?k*`|jE4Y2-t6C$14%p-fvcS0k7DR6L=`RM>W@+X9+gATw&=%mjGLrQirZ5k|N{!d;Q;fYY2|R4Mm3(mofwh^rJW%Sc#iy z_GbszDMc)?nhX*pj!DwRL9lBQw+r-&^9<)oqN?q&g3eXS)-o3DSzB?UQA_Ig9ZH&F zzpG9w?d6tFkW&pm$zN8OSsUAjb`D00QY%ZB8+HJfut2gVjL+!?EA4QDvhz7Hk2j!u zTDPr3NMQCgHYiOQ9X0_ z?j=s)jlw&l%y!!Mh?rHVhv!*6^5yEB6sPA>}`)(*lrkjE;3z6 z?HhWDc=Rq)H@DkT*tWGbcFrIa8>O6uL_d&wW_!)L?TnOw^4&cEZ#hQlx=yiYntv2= zy`-$s^pWR?xEARI1&Q#2=)8h_iCHl}AJ)N`hlYiNgI{{<$zrPNyxNv~v$gi9{9GHC z=Y^muRMGaakY%sFZyDo^x7m6-z7>Pb8cpV;$6WrFX`L*N>LKxzy_U;X;U+)-rs&$s z!p6&qX=Cf?;>lu(Wh&EpLigczrzgjP*8IYHc~E*61_5u&#G&ep)y&qs7@9kQb8z8C zG?Z^Vz|DSi6xi2&vPIpC(Dn4B`Y8NM??dZCs{k@Y*$)yp*Piq!#T!S*?HvPSXM@q; zbMTw?_5<3(^^FcQdBDzKB)u;x?w9duq*((KIQ{oZ4uQK73516_ZCG4mPGmW(%<0)E z)B}S<2m8AR2h!5w@?@iRYAVwY+m-&Vs?FVR5ku?kE^JftaaZ2t#?e`kNAC z*fs`Pn7Fu$=VO7>2s(<57=0NXC2LzvEDTEG_BUZ92I(k+JfnD}8@QheY3T|#1eWqr zC2JR7xEht)y_zn(6mKlo^WW+(x{N2<)?OSm|0Gx0Dm*Os(p}P+qAfVB&tTII<+ND8 zP%ae8>`N)uEj)~uNq^*M+3E`iq-R~WFU^yc7LE0o7diz?5icb!9F{aRJi4i8A#O#) zl4LEIUBal#|IV3^{o#hZ?ZlnoAX-=`Grn7xiP&ski}J{z`ddCa)2UiEt%GT2H;qD3 zNMUXN_-x9_y36ii`M|asupG_%4Ckh;m_)jK%d^@0X}__=4A4GL??0PWf>>r zqulmtOLo0`YhPK@gnDf9tYi|n+u_n%A1GcqG{ZtkUWu7{937YFo5Ms<#N9F!8$m;^PXQhrQVxtZPoS!mjoJ=AR1 zh@x64E_tGvm7C?)jL=)g8xrG(Y%kxbK2A?BE>6t8d|Hpx88^Us4j=_{H9|MO@26M|A1O$-&0$$jnxA%PX1dgVmAmW|C%gR$Y}g$J3@IbNew- z#SYr3_Qr=+aZOiMkxTETAYSPfd{wLS0Q=J zwEjHEdQwG+@XhP>I;+ubqLohB3Nvq$zV>C!W)_~&xcp9A7bhh=R9%`@bF;Tj+p3(? zSsGat-(KZT$HWNlz2zU|DT>8{*RjD3z_T^+YI02@9kdb*F<~ls$B_>Ep)<%g6ds1= zef7)SDUB@W^St)+#SI6^yqyQdZx@{dx~~c^PlB@}kPW|caM(BOTTc~NVTxgItEbQ` zZ0iPoiE~}-j8oyuXVr!7MjG~L&rL!X_Tkz4&RETgORsQS4GT*IX=M`6pqzu%*CPF( z6|aj72B|s1MwJw!Xd}ZAaJ;^_y7}Yl{DIf#%gZ%9?`^-Thrdk^=fux zSyW)XhM8msO!aAj*FH&*J)t{2)x9qW@50y8GB9k6^jW%}a8-yfj*NXhq@b6L&ny(= zL0(XcN0%h)wTMeBa(;G94M*@|B1F^Rmz{M4yOHKxd{!ohzie(stJXKiL`4tvcArO+ zi0@-R?va`^HVn3n!w!)9kK;8TlHpaiZ;KDkmYGw0;}1Ph@PLEtI;i{y*&;}&7&0G% zqLR+AE!yI^=Jq4wQ_o9UuRYm0$z(R3hWvfbP|t(BwHK^t*NC%TPhF{F&eR!RQBl2x zO;)z&DeYoR)Qmw2a)jf#Sg^vRb27h2B*cU3wwRgWbM!*>heG{?8qXwTR?Pjm3*$^I zwK))Ios+5Nlowk=C$p}NSUl>h$w75}wqvWYGNoI~w)q13OfL?r1*^QoA#E;vsP8atrW`G!K zyCe%kMFj6X{yw}(rvi*?_fyf;-Kii^+Kb1hv%=7?8eHcChv+^{>iV$u zaTV?q8J|6{0v4a&NY5)jC_8y9su{LNmGOwp*d>%wmacF z>OY&h;yUnL){EkKU6%B!V(rHIEk=AZOffd74SE{H!ZaxLGbiJrnJk4Rhz`Oc%>z3e zN*lT9eCX1Rb_j5J z7M59lg5215r!+-ba|!xVCoo9#AUujZL^53B!j_|F3?a2AKb(gR7OQ$`T@51pL-|F5 z)AdyCL@(#zejKKeV~R0=5!O4!71kTFy!_$ANXFrIMSmv3G@0;aM5AIcV#OqmurAif zZJR9ElMBAJhK@Q)D=AhE)9_lFVCOa?pi0N`4F)*Kfi5o1c=XVgM=_dlvL6P6nPi^s zs|s;wm7KQaH#w=2LH>-F%|6;@>q!b~TI)j{=lfg*ZRE)_53AQlTbf;Cl1NwT%=^`8 z^E30aiS-xD`W1A%?ES1|*OsojqN1iIkqGZiy@TxC#lqI?wuVH*u8AS636-sNI92OE z3AC^Zx4VyzyY?X$K35N>vuHA%9Got**sk(va;*-4t1PLi5Qc!SfgM1tBTV9hdKD$v z@GL}5I%t4d%inzdPUMUkXggu}KM=sIO- znV~wnOaUM+gsk>u(B>B=(iBy7jqED4d6kg*TxVF39d%Fuz>doEM@l2jJ)Z-kD@v z@AI8R!5ez~6F{+-I5vo_X-pApTo^x+9ayj{PD4*RXzq{BF5Ojb6gV%`Mhi(FBf&;N z@bwz5^*9O%`hfKChb+*|>=9sLgid+Y#mVfXG)0ciLV8hFdny`p?F+(qvuoqfP1BN2Mv z`|%nb7pU4BBapHiEDpX89Arby&>M_s=OPWPzmW>1dtE6knlTFtdhS1TK8LwduYO!N zo#=AZ?CwwDb$!%#rgW#xDr?WDCCw|ZEsU9NJil{W!sMyvC2w7!3lDePi|CR>sV5j zzFi}>Nn|9rUW!=Y>8?C(JBDVdSLb|4;&c%3)^#$j&ycmOq_iGCL|(A;oqIoFw|?Aj zV6Pf!OlVYhc=C@F#>he6SUuA6F3H;->h#D2k2&cv?7;olA@a6|a-0cgm;~F96r=ml ze$5F;nFmQ4)ZiH%7HI{i)3akq2MQ!iz}|YlN;ajf;_==|ZZA$f!{)7+Zz{gQY4=dA z`eV?#p{<>wGAqE?`>`FEk&<%yu_FF1W$zmjQREkb%Rr^IIBZ2Ug95ywSESDn6)xQz z3FdDBGyfQ>zldxyKpaUKnpImwpvw8cKgeeK61D9iKDVA!0PX0R0+)l7kwdPfW4613 zl55Z0I*NjUk%dVc9xaqWD+TxRB0<4yyQ|ESggL(GSFI}lD@?hYyJPETTj4>98#<+S zC#B2O({56>DQCI`JWV>M?3tCO&k3PT+{Jqt^zmLp2bZgYh`x!(PV(Nvy07#8M_MBL zh;cWEtAoXwipL9;oeDnnk2_+;Ny6=Is~tUoej_^cX}+*^2bGVcY|G zZt42`{DJ+gP81V#*-_icT~;p?$F)vW{p;d*c3*QJ;1cwnYdm0Q*h+7yyzd0GX%kXd zav~)jlRKI2lWddZTn_Gdw3cB4wI=(Ove(75?-nf--wIG8Uy0O_6o)}NK2nE42;#ba z|6U=m{CeSY(TAQAlkudAY+};q`#5o!eIxk_ zG=WcWla)hJS9L$GtTOBIxI#b=e)uHI;dYF7%a#pn#CeQ}K=d2Uf~^u~6G~4DV4966 z&|_>a#09*zZK_J6bEH_QDH}Qpo!KBDs_+yytkFV`wooUepDt z2v|ZA@ZtyUhDxxL&~m^X%MSc*d#el16ZUR1{1f_7em9%o3TKh*HDLMs4bmccfR6)u z68as+rZ)tx-lKQ0`{|S4aqQ^Tg&n36s)b^fK(?yE?=hqNBj?pG@1ov4J&<2k#k}L6 zgZwG04pkL=3waz#OnBhD-^x>;Ic`{wPhLd4v!B^sbdqpMYUd6LXfln1x;H?5*1=YxS^|CSFAL=| zQJMvcZZ;FGAUB(ty1f1EAEO?zji4}QUPdnX&O>cUvu{WD z3jCglZ>r%gyP}okI-!BcqfUzrnOH(Sp{LG6-M8wtcykCvzGAUBhNUjGp@&Kxq#$D`Vg;S< z9wdTWsY{6GOULjqG&mJmjThnluOf4r#V{5J{{~P;VWSA>6X}cGx9|It24}*2gygJY zJyZUJXE3jDw4_?A=$4C3$ z6JBx^x#(R&ZPFbgRi(x1QQLuEYqRAh?+fxloQs?7ef{-H6qqET#myPB*%eqm(6clH z1ASsaF2}B@E@t~H_!og~)UE=j;nPMa4qG*U7bHtFL@gZ}J56%W4ef{j(i;KMd7q3F zXn)j`Qt20uU)oX+dR?#w9sWGqolD`4`mEQOt1k>;%!ahv!+u}G-Z}E<@QQs*`oBXz ze?8Ix)qIGHN`_c8elX28@wxt(9^_fN-fzE=P z6Fp2-(~o@KUp>AFRA9#D5VIWbP&NPJ-D~zEpBhx(cQ`%b*LGEkVK+SSlhg5|d0^P+ z4&s7ZMf^peLC~sKfykmYyp8O{^P`*0b=FPLJA069zgyKHKos-C3_I68d>}m5Csr5H zv!Y_Kuy&wop}Ivjq4bL!Kk^>!rtCv+@R)dzJMQ)_+M)*Nxz{%@XMQ}?%^`@FEovkDE5~N31KQ%U=%@f~KJ%Zq;lOGSiEX-VT540cDd| z?=P}fNz5Tz7awrG<)jz^=4YX5as0!qTO3`P-XwOSVM*0wO>u39Fzcl_vu=hmgJ~h` zSOz+n_~@G=JntZvsGA_*Dv*)DfoFs z$g4?zraMB;CM-0dw3l?eeV}<)uS;$!#CAZ?6^9Qe>8GYBP}7pwufOt{9bn!5;t?g^ zEEK0ej$!(W`o|LtNP|u7#HKbD= z$bwcF=#a(@#1aX-Q5A?b-xr&1-H+W5*)S4>{?gKLPy(*q9Hvt;dL+N~r;2?O~Ko19EZ1saTeVjQ9DQ_j%{rPV~D6LQoj;OLVa%wOrpAI_6)& zj`FZr_hOcy7M@I$z87RkN*Jzlz2SAQwHxe@68}@Qpg@6*;rR# zmmQ*b_UUS5=a1P39d0^xV$QP!N37S#?lG_5vw25+8L8>4>A8)YQmg4V4BinWTa4ke zIj>&-T<;-F{p<0OF+}lt`TF5``!Nv;*ftwkHW?-CvR|amO#2rvs|^_v)B&_j_LAzt zL8s3$vTCItvRq^)wVE z6{#Z?k0P+7b8?<;YbgDI61Xx8Wl!0v6z$W<*A=%UHH=6mj@aM#7b$rL z$AchO4VNQlkZLDYmV|{f(9@T&CD{!4D<&0OT}h)1l97)<^OKPClq@tf-)$HM$cy{5mPXuBBO}^cV_b4fjP0vhN*ktHHL+A{VXN zNls`JtDdLyoEq^>cHh<(v>}d(<3*VfVUvt*l^NbT8P{3ojP8#6V5D6P-MkW8MRe87 z{nKeT{Ix>oTa6OU7duaoD$M7TQVY0YPmqEtd-Fd0p||0cZd*KY8l7(~l|@_jsiF?G zuCWIPD$H=yUT}!CO0FuE z4UMgJ3~^of!E15^4JH}}7%D`oABZ4~uw9H|9tt&IL}F_xd;qQYOn{~N}V z5kTkBsshl!zoEfTG7GP1z{7`wmVEC80L3B$-h55vIr z$!clC(6a-WMi^#RKndd~difavQ024WZ~F2tTJaM=WcrKMWMN|mpp*14ER3u$tW2Ms zFf*|MILA+rk%{r&Sxf**NC%)KKd&_l!{3-EGXMl-29S=d03Z_pVY2=c!u%U=1e~O2 z0z?Mn!~O|F0su@v5Eeka&!K*X0h9uc*a2wdXDJIH`On&)PbL89$;8eI$l>o6fUW_Z z03reqPbNSlZ5RN1$xio~4Lg9U)P!LLaG2VF$G`KGpBevu?~DJDr~H523jdL+{JcWc z41kM9&p-$GLkD10|3y{O(*ZK1{p`aS!0%Esumf;jaVLE%b3=X`Q!8UYMzn(Zc4Efn zre;nstblp^Z?MYG!TwjQ^7ESiV>JIWR{8g>2DlQAP7cQU)-Z0FK?;(#0Iag>hSK2_ z9#uTIr7V>A^8qhjzsDbxQ^x< z4iiu#loc_GB|joAjkx?(ZM>v}u3%(CMghg@Ax2RU?Y6E|q}WJsfI2v;!%m_q3mIQ6 zYBf=0V|u)_pn^Szur-ZP8vTXc=toPgKj-+L^K|Cr>7_OAzRCVDnf0(U`BFHu zn#M_M&crwySr})ej>&C8te$Kwo*YLNNMab!3uYx1`2`}tU5y^1Ufm2OeP29(~;moEaG?l9qW+5IlQyG;QLK6E#1bKRh{?)ycWRocY9 zCePLa63s~4t8Z}w0iM$N!L*1BcbK;+_v>wz7ek(ovI1|uhypPQ9|ycPF&Z^<>%Ea( zLSokN%iV(-QH{EPe8eLqrj~h;C~unuVtn%~@t;~dZ}A&2Ek2}pfUr@9c~4nK&NbCa zK^|-vKpueq@Q4?U_|(BKL;hp|c?g(p0>6eiVHQW*^nugx$Sn*=63xw2XZF4MP|tkb zc#-!#%aQbE{H<9;O2%Tl%+{rE^>#RHSIEW0Hm!SnqPHZ8izRZcALX{HI1&@{%uGgzrYLMUEE`|QLfDDGT920+Odi+CnUa8I~j8@sIcQ}y; zY**9h&{za#c?Oxus9>*{QF3D(KZ~j|r`mjNYXKIb$#tw#*&gSRY$n=BbWnqPafjp8 zaT-N8R6z92-p){r^4XC^0+*6?+fFf$+I5vh1ea1(k#VY(mBSu*14X~EI>$RM@aEnP zZ+C;Sy!FiBzylPTeHf+LkAph~;6)$-HC^H#HC#?@LN0uT9#j313Ms?Uo2ugEDcO|{ zu#dZ(cVy@0UJkNvBcqq#>^}-9XiIz{U0%u_PGcFU{k-qdLwMb2l%M*4MO(TWcD0 zQEs%Q;jF~0iYw4kaD5d-0M3^wnVrfm2-CZBk|uRtRm{B~lLvE3w2qE5})14Rd2-_|H!&pPF<%5^a5WZT0$81}kejM^-g z!Y%>QW78jM*Fd@8kS~TwFrZ-l%X;2@&n(FeUr-D}^d=E*2z)dcQ9aV$gC!qK86EUh zna{iyAyY+9LC3)cxb#sJ5VQE6wqQ9>hmit5xLnp*-_|Z7`f-GQAnpjef^Yv2zr)X{ z0CP1Ig&8vC5fgKfb&{#k9>Ky1#uk=-=KPDrL@t(E>tK1!y?E-Bxx|Ak%BeYpBrGt9 zih=;=^txxd@@gef8c!|_Un-o1F+;^6dlU7nSg|3|axk?fuwP3@YWbtK;By&T>WL)s zW!So0+U=%8SBizRSDkx7Yin#VTx~ZkT+F{wj5ehwS5Z4abr0|jovgn|#0GhMPvwZ-?bYy#c@e!da3WS?Fn0@xJ_Ii# z5G=URI>$!!^^)=0(bBZ+#jPbH*gML9+DmEm?bsZ49HPa>PdqK3n9W~p4i$^eBxqaC zkmVe1Id?icD?T&Q^29v8Ta_3*GT&q0wbkbw@R_y=>M*K_wa-Ve0pX%&UhcYG)X;485bbuCIGrwQE%Ge-Ij!#JNk3Hs?FjHYtpT710|tx>2%HMd`2f`6 z6EeFO6>bZ#p4HFW(z655qcvQ>Zi?#>xKZf4ly~FcTv;`0H=f!`}6ZSnclw5153 zoM&EJt~X&;?*z4JZwC9jB*33J?V+^93yyCRTQDb*S+|4^u1hBkB;9+0O1Y;#=1jXC zL!I7xSi12Okmd5Eg=uL~J-K)5>M$mVTefiOG_K7n1UojKg}Cy|dJSAHoaZ;3EnBoO zV_&*jPzG{YA{XfvP`h&m-NiK0mM4Xg^q5qM(5V>f@MB?>^Pc1E>$sbRD~Ld<-Y-er+evEu1WtQJKy3YsalVFI*iF91!m(s?_s} zK6QWz_%12A-hFbH8H2+=a-IUEV1XIx~O#sVdN2#$Nf%2iAF!=OJUU?Ej z?RSx(A8w6bX0=N}5(H~JSQKm{mTi@vNO&jpQQ5U-siE%2Mwfh|Ldi6USI`ozu>aFnV8PY0-xug>kUY8_WaiN^wsOE zVewgys}*d>Peju?z}IzLnkcwMyYIo)L4F1&rr3k0^Q$*=7>!}OR^Ji|n}S_8XWrDW zJ#FTT7Y6~VQ2tbs<9VWx4(TXRwluHJKjBYin2Vha{1a)MpS(;VFu+P%D3tO`k2;vKMt~-R=GqibW#}~}lQV807E^%C+7%P#t zTdctrI9-reSsJ%TWtGXVV<9dHVNfT5sY;OZ{qet=m!0wO$ zmFoo|x(GX!CxhRZJkb~Y#RI`%&w<${5PFBsg#r-edDAfvgrOY)l$i*h2etkTmqS7y zMA)bEA?h7IVZw9>F5QODqnq21kY&|%4m%AEdT`Gq0UmvL+v3{w-<)=pzY6k#v-=); z6S(o_nX1O<&V2rJW|)PEpl%~dYO9kNQ>dX`2XvepE8tbTjKWs2o}SDC!)oL~bQ?>O zdVkMcGxa*wb;-KfMFks@u zBMpK^5IB9{J668LtQ)0{(U=IvE6nlLAT5M_)l(; zr(ojsgt&ehz$lA{SfY}o30`D1TTpe5a9CuSqoE<2gD7x=w)_gHQMzY)?7l6Jm7c*9 z`NN^I-Js`BQ0#p9DabByQdnT(Fd>))Jqou(xQ?&zhGol!+CmU`zk$m>`^Km9g{*gYxGGc>AS1r!sIS9mlmY<+U zOeij@ZKhQv07eWcZ2UZ;tViJ$gW2TknRun)^idQ48eIRpTSu0JzwsDe9s$Fi4_P(w z9x%Z@QQe19y&!xfvSg5!2qF|DZO(E*6^>IGwQ^SaIzp}UA zrqJqb?|RipPs146mK@gcGz@++(jh6T6y#|RHoBGu!M*8 zoI(tX$Eq@DCwil?6l^UO7XhDfw;3@R!c2>9e5G%4QE>zykdS*rKs!>Scu5d6|!DwhXF|mX^RCW`8PQwyqQmi%( z4;^;--IV-R@T_s9LnY_^Co{I3N0&;2lBQ{I!?24wxjj#0p89w+kSmPbX z4~!(o$EVsgT+ZByQ^28efs5x`^_CQL#{AaS?D(i*7#Z||05XLDGa13;HZafT?{mo$7D5#uwiR|gW+j&?fSg{P5}Np z@pqUFJYi0VRTM8f^e7Ucza-m(a~P`TBZdH*CfKlJ4<0yp>*TGHA~tOF_ny#x5BG|l zq4{~xvYV%GE4#m%s6uh^U7A8zN%_>IvD3`h4sSxv#yRcvK375BJUx3pcALoyljzgZ z{l-e!^#%AuCClRzB3{0fs{EUP&_KGZgsLJM%$lQ1?`diWr) z15a3eW7N4%t?1}~iCT2#GT7U7%b7I7Zew$DEn&<;l*LmfJ@&Nlv{Xa!l~qvBD>BDH zle@g`@o@Hc#}KdOemWJ^hVTL6BwX{5ACP2@*k#8bAwt+jkRd#J!DkT4sspmKw0YUp z%I!R8x*_{WFn$=J;A4H+1c3QLdHY{qWjT~M{VVVJx={L4`-{LC-Jbm&BZAYW6Bj|! zygPm)V1zRuCPdft&VS2Yl3V31OM`bT7`voNnvuprbhYMX`GyEAopw7Y_uo90!u4}kj$_}>ZKHea8>;F1dwnVc+)%mU>avfMx~GB)1SfT0S3?}qblNZu z1ami89a)Y&a&1qZNV5!pX%<-U^nC9sV!QCTcltivnCE^PjNII;UoXq@_<`k(5eISU z*|DT*00n7+Nnw@nDZ<^S1M4VbW~zij3JRU$!c3>jRY!F+WRP(^C=!lwok3#B;j zuSLSItY88HTs8L0jd>+Rvk7}e;=medWv-xTVvUx@;;#{~g| z@k8kWQUu%Qa65!DQwCTNB|?gn23T0)b$Kn7qqz8ugTY@-9kv$T7*v2)qb?85En_*4 zVK6q|Rqy{*G`W^#rFu07C5>q}`aIumhW!NCP$tGa6ZFrsCC_oj2=R7(vvMeN$H@aAB` z-Bv8#v5y|iDMFpqT+jo6bO@p|rdyG*CBN5J;6$o2)?3l#$f&Xl2Y7jVLUO5;yLrUS0Q2>{2H`<`jbxx&yumrz+^LajMw|p$l-KbujC_b&xP5 z?su6nVx z*P-kg^W~K3UTIPUXiw?FrG=#2_6hwK%P?sIen+JAGi-7k9Cbjf-?<4E%%EIkxPR{~ zQ_fVX$HUP2pyYE{wXUAmQb~G1Q9k=Bw6USZC})q{()(l=Qm9$MV4I|bhBB60`ij$y zkSf8*dF;hq}#``8DUhyr?x>;KO&Sv&B4H3v+Wwt#Y24 zqcn;ysVt9dsV}GRNQLQVlk;I|cG^uPT0s4>D<@~$TTT-@?4yvFIPWLMT0VB4F0E}r zTEXa6BiEI2C?K(9U@^8>@ZX;uy}$arjEps)?T{e9vOF)~ z(Q|{#S*yID^8RO-kgm{h1c0ObKD19TjR0cpsO7$|Ya7)9q3+(m5hu%b&m3`32iu0tuarqg0VHl1+^<><$c^W`zrZ={SF zCnTGuDHsC*fKNeZCfVtF2Eu#2hF;qScl0^V5qyU#tRZWxA~aj1kr;h#B;6;R(o<~T#E=93F}xtQWWqm{-sW4 zt0aRXkO%!P^2}h5Lr6FuF5hOj)@YO##!Q2NFDK8B8*0DA6zS3-jGK`%oGR`ye<3dw z7U)NArR8YrMM&->dl;?>pfLNZyJK!MB_fEU`VJ0eR?WOQ-%&$HdEP-*jrLuHFD*Cv z&InisddR7M{1PyM$mky0?jPQcPIaD%kox%UZ_Q^3EHs%=zI&qqC4&xgLSpc6K4F zysV^dyo4!@rqq5GyPF%--WQ|X08|`J3JxCx!cv}@kf_r81*%e_sL~GcqeRp^Ts>~h zSTB;X+1F))5*VA7Z`7S#xvr%h`6Z%T3H$eR@aH=-~ zPr8X#F`|Pl%i$;eOMFT#Lc3+))kHunVV)!oQ-RBK)I`~<5+UfKB@{}>b5Y1msfDKW zClnS}p9)`o)x?;wbj&6VBC+5i+Mz@$N^bNBgd~YR<1BM^!mMQ)t*!&=V!!E9h-t5_ zYY3wm&Ur+$9Tu1z&IvuI?R%!bkM2@+=8ZPi7a128(vP;E#&!hBQJwDZ=VEs7G0_@N zC_O~FnL3MJE^>#^R+G8vE8y81;H`UP{eS|EC>$vo5~hE$?&Rf}4>K^SM-1=6x&w$X zCD|)aF{@QS5*@ht@op_e$35#YKuK&36GO2A(FPq$sW#~j^-;lnZAW8ATEEq;l^Z?4 z3a{ORUbmbc3ml!m%`xYhVRlsLk!>jH{E`#gLVYpDHpLl_yv*_^p6?XTd37bX!IKlf z2q*OhT;B{ow8nZFi8?S+V#?#QLo%zDFE>kQkFbi&`G<=}7lp|!=5HpMaT`t##GZ8P zc%ds(;UBVdPn&r4?8jM9bsDSXoAb|h(BiYx$ahnAO+JuaUC9eC(OjE1)wTdpWo?^W z$udJX2MZ2P1ZRJ(-E3x}Sk?gpOX77M9IBYkqM1JXg*-KGAW@6kA^&vOYxQ;<76X^r zEgM~57PFW;Gv<}mwyyghdJOR0P{yuEp-I}v_rdg_++Gmy2qnV=wtp6@aM6zHl7akz zCJ~#`-0%YKJP#V^EC|*x+VHO)$Zzlp4WXY4wU+DqfhI~recUHfURvPUxJb3UfNe;x zDK2K8LhVmSw(h}iY;jm2C&kuSC%qoMw#o?JW8w=GmDbD}<6-yz@FS-JAbs-&U4^e( z-%X^Jj~;4UrqAJ$oq$^x`Twvb8zJ0*-iaVoL(@_1u@_N=MQP$>+KB*r)NmL5^&2oM z(dXWI-=m5UE}yns@f2+Qedo41_NudE4?fy^yxC21AQ0~4ufA)BIZ-n10vLPtquk61 zw!79zTreW0NnHGinEXfh5-FQ@MqD^a@+!QDXjtGGwMqc4lqzH$}vR|cRiaFy~d(Xk@rrJ+Y_tMRWABW@2o?z|Oy z;qrO5Z;srDzrogiJxv1SGWGJjW?4i3CrhZ@GNFbC=lTLp3-4>>!1^A{F=9$gBjlY( zpRUHqacaK8FhT!fupY)j9}s2GHN!z~WBC~V^#^?#84!O5=q_R(9!#uAYOHX-wkFX9 zj#TIL^;}}V4)cA;)-bRHg!$3~S8^>U{00gxh)!jF(F`ryQ*#(ptaBC}jzf$DuTy_9 z&VxAZ5BgW{>UBI$L+sjpld}*t;MU4*R$jbP=<$~e1yFy^QD)+L^-H`1lantf%O%1R zJ&2R5@-XY<-KVVI5gNi^7mir?gA7@jTj%4<(+Y_%Q^#3ZxZPA81fr7yH;n5rMZ@G^ z#`@9cvjoG^k(0@m(&Go|!{3-mJEhEjFj=6}_X5l4xu7-?1)pS+hD4HXM4TEi?O2QQ z@PU}hPiIwZ^*vZwDL6b)?#vb{ZL^oPVz7>$F z1|uj=@K_#Y; zSBmT*7lIR^^O9i+NN`)OPWo9n2@{3B<3=6rLSL#B5U`#rbyf=aEj&c#^1s9I@|?$pe+ z^E0yfr`D@_?gtm5&cyf<{jF#ZNX1!=A}`Gl|`x&b=VPo1AIy}MVoovHMQ&_xb{9ISvh{ad#U%=JK|c+Ax@ zDEALu$gemiA%+hlh#eM;Wn~sAx-L={d+JP{C7+BS;pH}H;Y^FRRG%B}76AqAGxZZV z9;_B+@X*ykt;Tjo#(bfq3$nG-WNWOouw`ICZ2X61C^M6l=_%%!<+`=j$w4}CNb_O) zAjNCPoOh1Rgt1};!#S<#Hg+0^lKAVT!$#gd<6`t`1n509uNaR|9g0v5z7_k#jaxO` z7aWp$+6m>4f8pl;EHZ5}kWh|+G{16k_w}CU*5p36MoA4-$gqA)6q|t_UmKM~+ zbCrTRYFsdi^vLl_5hV-bW;3O*pHoAGJ*(6SQqKZp_JgkPl#n%xkmPu8Vnn9b9u>%c zLchnd5&eSMOdBK+W%lq=Y4*T6NZN?g95A{^TB}fGuvF@f7{c3H0So5oyDZz9S+PsD zN5Fl3xL;~dr&rA9YOM9J)37DzoyCEja`o&^ZCFb8wCnOA(_yv4yU}Pgs!h$>W+Vm; za0Qb81LkjAN~9fEi-Sc9VB~y>Z?Dg~L&5H06E4HX(!+*%e?04F zyp(MH1<-+;HVrWy+9C@dCw6IZ+Pul4ynz`6M~g1cNPpf@4jwi6>|02}d(AxkmTtrIFIl8t|J-Ai_}p@Hzm*9%H+TT@z=(`$+Oqk7kBWvwg=*caqS~xjckec=NwfdZQEZAx4?XR+ zpVZdivRBYjSn!&7<*q>WuG2L=zCE(0OS8rH3)z_Eq*6S864xwk&#q-<}T0J|2(fA@_wRPULJv786bdW0bh}p)4)F4B`$&eB{ zn=7!*m1d9bsJoVcwMSyFe8>xJ^CqvJYml_#SL(AmixP=3$_WmdELy4&RtM()huEU+5UXFi6*^5&UTHB%VL znRXq{M1NBXWZ8Dz0;jEfAZl1KZ;rY0^RdVgqA0QIvMtnObuo9<%Xi$o#_GaBvWUERxR|Kvh)IOPGJur zlcs+QS)EZhE>b={#w+1%^*q-m5&PM!^G%7=^FwfaroPe9+O)m!h(mvEt3QtWxoG?O z^T78em-X%Z_O_vVo#ah7;1@GOL3BIwveGKJzrCSt6Z=uT(R-c;G4FP_Y4`kr*@0GV z3+~__^h3A~u7)9?__Tx z5jrK<0b&yIM?fN4kn(Q|am`+=#1Q-ooMWQ$7$ABTnI8T&0#J(p2WV4S{uUtQjf}lq zLo@i!wpeKY8izqE`cy|mH_QurG9D4<0!(~dzYATzB5~YbOWd$$=H^`}Dtu$QY8!uV zFi(yAXX);fVaRW!TH>BGP6KA#5{r&Dj~0(!#$;Fea_zJ8wnT05 z#rzZD6F0}dRa&uAI~Rg7Vg802keYqT%K_(N!%T+DfpfP3e1?nRVFW+3#-IJE zEV8-vqut3uu}ZsGe|E zE5FuUXeniTjt`&-wk~>mSee*2`_48Mbwg@(n_N8;e9o5j7Qf8I?LS0 zcmq6nL(SKxt>iK=q4FVp^?m$%sm8R{p{14;56m;8R$1dha;M_uZ#s>YnWdh#Z=Y#p ziB;}~;8i8O#-vYL_3^#ikLcCRanq#TQuXAIB331f9xI>v(FWdc8?sw-)W(Dom(hCR$l0T zqT+G^FWV6R+92k?%>*CkYJao@qd5howP>YYswK@J8E#&ejXRPMs6awiy6^`uZTM6Y z*P18=@IE*Mv6+I|$?$dL6E9o@xdG}<0R_8beq=XFOLyfL+ft5#j{Fki`@sYQaRo71 z1wG^9M_l54fe!q%B^23;`3Q&|@dy+$5I6w-`3M^N35a8_-?_E(a2Bk+{78a<{>K;sies-F*@62j{+1g#7H!!opq`3hK2v0Bm;i zlVKDUBV})JyM5m~2Xq#>z|qR;aJ18R7}|Z_GY8)ORe_(Dw!zNGs>unpJuS6Df5%>O zc0}3f6dxE~9Q-{fidr6KLu=7nmmTM}$nJ z{Pis@rgQ}SyVw4COr=P_wtz=Dvv@ySv-mbkGE(_E>7dl994Wii&0JGmrd1h#Z0*QU zO6Fz!=pTen3Yb%8VP;YKvNm_E<^&2sLcIt>gviAQA=dWVuV(aW8V`pneqiAC0 zVr}5~{}=54AK&x;5%&L&L->Ed{{PweU)lBl+8F(RWY_W|LCLz1?}8_ zQF$7s-?jl7hF?W8D=W*d_4q%7|92@cE5|R9{y*q-hTr4=dwTu9ovY+*VxtQ6D?0vf zBm8pdzy4~bUy%QQq1S&~6#k#u{h#Ue|5W*ZR>}G(P5w%O5xO5xcuT_|_#kXZf|W}u zhYH|Ro`L&y6^jk2h2TDYZ0y8^2n`^o)|j}A8e(6DoeDM+hVWX`NTQ1^S{mse#i#<7 z?9E+<*cEE9<;c5D)H29j4;(Q?&!Dy+6;cyk7j58*a>h<1o>;a-?z&X;wS4fiZhZdP zdoZ7%an2DHDC8o8#!x+KX0%lTBZ05C%G>tgl+`SLGWC)I2ZK-1M_;1AlqTv^`S_C; z*&Y#lIS|G1S5^5$R(1-UK|GM%$;cYtc^))5qsuph^?eK%r(6DyE@+j{MEJ|FbI>!EeKa6)MtkYqHu4q;!4u zZUDj=;bj~pqTrzPCtfv-ACh#PLKs`Y$%5P#CdoMVrYyMt^+eJDak8vE{oTlEBDHV9 zEwvBev^7P{N@p}w3rTaC&7x}GJ3-p6o08ivM;7Ghzj*L|TS@-k7Vkez3jcHQuDraw zwbU|xk#AxM&D7sUl2 zA%_6hfDFKml7G!YFW_9&f_TK-LKcJd$@~GPoSQb|_1hFM>DM!YW~s8pUo#1poCT9J zH@~8_E57-0x0{aByPO;E8>hM;dO`6hSt8Vk57{kRm-j5x{9}XQ+lY|iuP{09q92Z6 zbSlB@?w?jJv|P;Bbu9=BPK3m3UV1*RmrXnHDTv{jf$UE}bNQA6vc0#y0jJmg{mq** z?(I9H;7tAAXQ?)vZMLZI$4O)e6Tq_L)WIedK+xhU#- zrW4}B*n(g{5GucI-+Z?w#Y8XXwdX2eqN;8MKWTkQ@~8l!^Azry{vQPGczPFlf=+V} z2!z~RATJkwQUGOh^PWE~Ja}QbvqG~VkKVXB`8CjI668hZ$phtB6JX7Nvjdo3>Lu^u zPqy(xA}8$cJf2u1vW4zX$LD_@_AL>7{`e%n(LbPXL~D?{?G;TSJup9jZbjG)`$f7I zYNeZ@GbIU*R`D71juX%6NK<7R97^L|9svhQDZ_*7Wgk(BE@(HtXeK*R|bGiWPu+I zBr3#WLCO3g95U!^xH7Y-I%iBZx!?sq0g+7vgkB1Iw9Q?FCQ zjw!x@e>FP8-C$>hzK^~iV^nktUJy0!Ae6v+xqWoctfeo-jF{BtYcBrlriV#KKff3|v!%6mAY)36mGc_1aIXOPJWn0hfakb(meY@2dT^woG+F0{qi;=+@1Pg&6W(c&7HY`qI1T-IFq^qmc(gyGvxFD5t zBJnFs?%RIR_t4+Py3%J@k3gn@jhndmql(4i$Yhoa`-r)EQ6-z49~z66`QUs~3;kX{ zoPbq)m1W3kBQG~jjK5Luf9ZvUhB%rxhDG~-!FWLC<_Ph5ij?_sW}4YaCdRXPMoyV$ zQFoc+E*tF~)>fxX$*x)w+fqB*S)6vB?U>K;@n9r`d?@iI<;ygCaI!#*3YmJI%7w}5NV-}6NX(IU4B51? zzIIIs7gomqpm%dEU9=DQs{Z4rsZBvTr1#@oLjL`lW^u=nRMbQggmgQ2ln5b;#UTq< zlHR)F?Zv#YvN3qn=sRM1yyV(Nw0pg0Ucw+bvR?hH%{r@DK(xDpnIeSEOMNCJ+9rWj#awBV*S#d!29?yA-IAEJ#~5dE@jByyGlK&U6e9 z$1=h?Qf=BHGjo}kt>I=XzpG#g12<82q&uDt5!`6{$?LUXaed#;Ll8WFeLnrFa6-61 z6jz9>PNb=f1>)N=0Q2FOd#UMtWhgZQWL!BOdq(Q(+`iOZkc3s^vd zAqFqCo;zy-*c70!YZD8yooUX!iY~XQWqZE1(Esl;HB_~NVKX5Cyen(j|9k%Y<`yKM zt&rz5p~3T50vMAaw@Oz5sL;fGC){IPUwE(^L@pb|2fJc>!oa(hHFXPx2qUTia=Qfa zNs5{PCf)5xQK~du{7-~qKZ#+D75F?fSMJ!P>9`4VCvj8u?oRdsN1&_LT&+}q%~(88 zA4DqwK6v7M@xps)-?^FY;~})~r~eNk-(j8;Cr9z(bV0aBEOZ|10h0i>GWXhH1IB3! z*k=SNF zRo--q36N~t?u{#${l}r%4EHyh8Lr3WN|BfykMrZ17f(zKt{gR(^tAutD=+aQp(K?p zFoR}-+P+54&X&IlbzPR&0~pROf3!8|6ol~W`7+*-zfOcJvbqG3IHTFbdY}!RN0>H) znV8rLcY|_=9pFtfSTnSy9l2%C`}1F*>SX^ETEH?w@=A5=kNCN>)0YT^JTE`_;n@r4 zWJrz1uc!knVJZ4~7+@>tjX;I^?%dGKCqy3NmB_x!Xp`;t_}$RA2^;EIXWR4WV&god zHFT~uOq?mH*SeD0Sk*FG@~{}_?z~A^>z%dv^9WXtAhuDX=M&!iO30%ZoP5e4**q}` zd!@bk%-QAZi1%&fzKe6W0QL%YW$#2>=GyTFx(({{=K|BM?58TtvDnPa=m%3L`C*F} zBElVOz~c1|hO0mSQ0b8Byd*yVNyfgGWGYFr^B;%T1iX&Pn#3EyJ6+{k;YOxUNyTb& zlCtAyIfiV>Y|kf?oVPKD90RH~nUxl~5MM-3X0YCb=6JHyDP5gjy{Stb298|11!Llr z=A49c)d&-QnO?}e4asN07lwfkJwTBIg;|pqv4hl@u9)sAi*}7!oWP1BEP3W+o&lbj znAws@wI=wmWP#cMC}60&%m8`fZyvSkW08YCXA~vGe-}yl_(-KhmUx*nhw3>uyV~9! zY*OLn{0xz~vR-r1%Q45R&$a0rV7O2b1b`st>dx^h38$-g{N3sI?K03UX}k#WumM&; z-ZP1b8@j0B7W45cW*HuP^Y)q}b*hq1TxH)F+>pM-2nX#t) z+jaTXVZSlRcPI-YjT~pI6%Tfm3EYLOb?+-%r9=Z^I!^)^rpSNhmQgeoomei$AUfTGq=7Tg3*@O=#LBVX-@LKpm1pC)_x6&eNXp&gfe~YkS6^M`|VR&}QWJ^3m zio8~Y2%Mfd@8>2p9oHyE#dY%&)rLEJH?@I-QOgM&uI)-ESAH}!rCA^Huw1l;<)OE= zeexVWYoP;_g6|Ks-IYc6DG^tin;D#;P<@L+QH`n|^4 zY9>25VogK|GQ%@=UqC+L#fW@EWBRg%M#~t_#(*5*xB?(!*!nW)1FLmtjWvZiQ7ITc z-HwpILeL_H&$xRVQu_LU&HETa5^+zucm^p#M%eeDS3%XrYn5y^%k?`oysN6kpuRoL zg8uIVlM$E0g!*bBD}l_Ac8+8HOWODmj_l6?$FHqlSV1-nahi_Skslk#xip6vfh2pm z^FLi-qSxqh5MT`kb@QfH>kW4+My>{`kNt2D@vEOS*t;Tsggru5VK8OZh@-x21@j}& z!lG@f9l{=kctdd-t<)Y$wugr%Dw>gr*Ap$;%&d?=j)5~OEeWlem#3bpCCeh+CPZ`k zS|p5?_tXtv^$FA=M%yH@PQkHG>z5c3BVq008Jzx|aD|z)gm#EbhKTKedsF$F>jE?( z%%vYFFd^mbW9Zh|oTb@=F{zKjTKplyoJYtbUb&70yc8{(XN55kgyLgDt&5A|Nyn@uf_9EP9P6DCW*%*W!8Wwy5Q5IE=$Qi`?R;nr@%wT(VOk() zmc%!dROWa&syS08gV=5P7)cFfc{-Tlp@%@T1`cXdxgv-3S0NrjUC*w7>03Z)5uBke z+{k{DM~!M%T7%WpuQX`^LV7!Ip{fHp59CK)nq5uzQx|h-7X}bmQS+7T`|39i{@}z? zLNcM0;;BBN{FJ6evSB5y{#7H<S_%FFV6tJk za3=-%#dk0Egv5z)85;pJ#9GY_&B^3;}5fS}s6~HBrA-{pmoSaM~_~*okQab8$mQYnuOX zIqJ6Vq?nG>U;IunK`{d9%H_~jx}k-;>cltv)b&*ZOQv5u_)R2#yrL!SfYr_|%Gp}) zw3zO41AWs9mRZv~q;;<0C3@=s!mIUaiOX9wYS&=?_F7%-VM({GeN=zj`gu*bWl!Sy zxbztW)~OJ!^|W%-hy{vVbn3CHpQAi<38qRw*vhg3>BtblJ0L=S8{0P*D`XsIZ=CZ?#bdTP4U4ji7T|zK&c87Fgr_q}0 ziS)7B)T*SK6iL53I=ydx?EH2=u0p8@<9FQ%4IVxa*$CbWE!HD=le~=9aK0`R4 z{9724S^XEC)D%Xb0x-ItP7g%nfxNruFl)ZV%2YfPY(fY`?*yQLNRVEgI~#Uj44V)D zSDYUlXS(2FWG{jLpb_lhigc50c4$hyEcSiLOL<%+#?z8{`5!|;0wMyZiHcan8^kO| zD1N=ddPQb|zdee@ns3;}h{8L=t`HP9R)8adg^dwfZs_*iNpU?kF__K-K_r)mOu4W` z6ji4yJ4dOib;)?qri9ZT9!bkb>FFa=HZWBS>(hzgbY7aQY-+v(5r)N7^Gk?~meG!x zYB!5#239=vEt6AB;@}02X@vJfSQg_VLbTK|67m9vBwvNO^WZr~=M3kvHJT1%v<^wK zt`kJ;^*9w}Q;+>B<)ibSI|_V2VwPO>^TJI&Ecz{*=NeDah3gyU^dP~~qZB`(5#FY> z%||orNkV5u^>xdUH znInh=itvd7i7pdGD>4xHv^w z%!x`R6ENR@*-g~Uh^d#=b*QyzbeWZ0D_dKTumS1JzPzS8sWgjf!gEP(GllKe zfP_N_(!Mf1FpKRUJcd;1xPe32Ck!*?nG-mJbRZOk@-`Vlu_P}EC#}QQ4xa35CCKbD z4;Yxn?~}inkK47Wdox31w5b=Iych($rE0G@Q3xSp|9yXb1mOtHkKhPo8R6?gvBT_s zv+8Q!I@?NV!W?9e3~3Pgt_mIt=zG?4#^epC;U8NHXU!5p%dd(zLf)XWsV*4kAg}3~ zBWg=V=Rko(e<};tle=2yF=8U_)62B}0^k9depb>Yyr6X<(3woFJw-&Zv%^WM>-zN< zwu3W8Qqx9=VRGZ*4rDj7?Y8Sq?_*;#yLM}1R=zWgDR$kb;TmrI_2}D;%YPr*Zu-93 zt8(db!FAdSbcc=6m4XxN$?F3LIYZYNq}go%`2wz3WoI)=*#id92Mp@?yFtvEiJSGK z`6{_0w=((a0nM!729?zrM}}7h+C9ec*g!o_6gDp?ZStMGO7G=0u&2 zkWY4j;epLxxeqFTs*CYY9oI%sbK3WY#v*bA7|21T1W;wfwIj5S)M@u}7%Oe|21;8X z)ZaFshK!__R6b{i4HG~*hThZgQ#++>fh)2sVMcb6iAj~}EuEPA#!*E)jT_=Gp=BM20i_yZ@*}VG zn8b`FUMQR@ONP%k<`P)FrB~Ooo3ptidRm=XZJds{G_PiQ3kd3}>KnE{G40dQ;g8KR zH1?vAi0kY#fSNZRjW!f|hv@F9?Uo6A75PyeBD>9lj7v?4=;r-*5+l&n|8gvHntlbh zglGaKv2A;?oJSe6sD`33KQz4tgg_-hYH0M|0Iz()`hrsL2TfcDqxJ0uVq_T#5wRZF zEwl#O#9e*0idpkD^;lGGFt_5UTJhJc6-epG+o}D?Z|CnAD1$0{DOXoY+?#ku#ywrJ z;o*pw;IeG5t*+F~u#qlL8^(SA`yR!T@HKZeaPX+$eqG!gs*H zSje8W+2{%gy7a^z1MU8em_r&Q~R5{2vVVZ`M-f2``pHzEp`;+QT9N!ncVD@uY83U%d7 zqjA>{{)xZg&ip7sLK}9oS7$r!O`C*vbmujmO}e8N){0U?yDLZZ zXYl3Na6S5rXB;&==~1tmMXq)AyL;7LO=%fO?CBv7V_?lm)!NMxt%{wr$%sc5K_WZQHhO+fH_{lbiRQJKxM#=etvL?m1IW zRaf<|y1M`9uBU3P^;=7=W*EaM7pYeRW`C7T(EtTK`3@65OLSelnt#ZC*WaOrhql_t z@;ZPBRQPV*#vZO)4fsVLzl@*LYeU{=r#XGUk^9%_?EJ&bgGr0oy_+YAqL~NLT!y`X z_pko;&RgjgqhmDWnzp4}#=&Msz&mZe560gNSa$W0wirKC>(<6&%vFVbo761nA2e`2 z1gC_+g~OD8meoL#Qs!q|6=QjmFm1HyQFi0Nw}cy6S8TfT_3m^^ky9WKTai_i_wyKPmJoou z2iV;}jU5*37MC07BE_IJE*7}3?~iC;A>NXl*)2JN)_GU=+l9l8MNPK5ZSJC znUsoOiv(O+B}D~AFN=7bLSWdSaK1k}e1tSTO}{1(#qtq?kj}2fjg{GKh+GbUFH~>R zH>5ezn-Pk-XW*|%?=r&jTc4tnf%UL0xxoZ4&fa zFF>WF1?}k^UB;HludYn(ICu6GsY(8nYu0L% zP5l?XjtJwz!syj;FmpnGn0xicm-sRvrn_U52{RXfZnNbi7B>8t<7W8+T0 z79^PyA1$r^2=a6CSiyjCU+`ox+?XzLbOc!!?8pdaSnkN+4#of&AT$sSRg%!kEbWt*yV19xSRfCllqiyR40HZDqSAd7d5_#&WHr0wRyGzwi@_H zEcW4E+fS_)02NaZX3AV!fYscaYm1~}HEuH?vp5u$H@w+LyhM^zugp$;Va`0_7#sm- zwTw$vkd9h`KbW=iY;w*3u5rNWTBj^z^rhH9?d^Q^G5Mmi+-8)IjB<{(x>w9Yf-ce$ z-8z$wD-}hUxpg{^vzWeF-HKQMe(n$}l9AW$O@jdK=R=U(DryaG&|EA0ILmZEwBR$< zV6eB&+(h!6kxuf{IYbW4V6Bb zfAvi&n+0-rVJ#e6-~{l1{SgGzx6b}a-CI5~tK$eh zyagotA{SO|YbkhWi2O=4;(t=N&>qcGv3yQpAs@Od)cRKH405^zqEQIqWd(>GDX-q{ zo6&S{bJ3-_;c#jXXLy`E-P#<8K5cj$1b#zuCGeIB|;=2!kIt(^7#t+ z3`EPH!veS^{(fTGNN7O-aK#Ku|B_*5@Ak7$qR2ZwAIzo#O}#H!x$&k)PAd;DT#a&h z{r3KjG4fg&RP2@0rE-*3eJM$7)UyX5o_z9~$-An()9Q<}a+vCUGm(ull&WeBfsIoP zac~Bs7b8_8Z|M=Q6@WFT)aykEVM*&bC@q+QOlP$@trs2V@(Y|^Im7?*`^amTZ)L$e``uh2yqvXja8{y8~~_!XnAS*}{XQ`4#Kr1Y>< zeEweU(mUCtz^$ZR&ZYCJa>SWLTO*wAUUpqcql8oWp>hSWiTMf41HA%;5;r)DN8YW}zR3Pax9OP^ z#Idry$DMbx2b||ALa(D^W$(K3Sp~CV5SILu#4&K*A^@Q{n?yHC2}tika8@xvF>#vE ziF>pj`&edf8MdlmMB}RFqdPqSnHTt?NY2y=RV@R>@p`1O^7Fe(!|TbNw(HBXdgaUH zbH-P<0x$uz)f8K+4Dfv$gQ*da>qj5-wH9ozDx5+J-2CWD-?P)L=?%;}imxR2ouCge z4}^YGBh0oZ*dyHv-Y5L3W=P5Ttvht&jz7>KIUBogQ-%)T=!beBRR#bBxH>N|44!64 z5C15Sf2<*6?*ce`2Y_DZ1wbz>oV^bY{tS)$0`(e`aVVXB4)Nr}N7X-`hA5i; z?5L@M-4LZQF;gJUd^>2pzkC$+E@rj#z~4aMPk#KFU2Yje5_>^$PxE>I#g!X#L85#Y zEdE&go6ay2lO%|Zw=CKrfi0S($!>}W)0BjCct-!R5WC`*{bRS;0i)4SQ=PHBBJze( zba+e|eM9~DnzCRltD|_v;Nvb0*6Y%+bfu;05;KP;=Wfc1GA9`FKC7uo`zK-EU!J}HcZGR>E4lv3R`%N-_&;{-zZT~Go2cW^hwV6vObS$qbBt4=N?;Me;7+@)hu{B78xd(Do@6>9h}>zdN) z8kJy>cmvt7$p(t5wumBrC& zuurTJIt}ajVrLb%K^#bn)<;T{rm!gx6P4}gx=i?szuC*M?s~pmbS7rs3%XZwpFnq5 z3gtK#TIdQ)uW2yP^-riE{q3`^wu$PBsZgJr=10|HJss;Rc*;QY=mzJLrcTz;v7)HL zi+VA#0y$$6pOQ)%)m+mQQ5X#Ad1$#mIPojpdH0{;;KUfXRUzjUS-7bJse77LnzZuAG{3-eB@e~NiC6I{I z>G%~qSNAuD@Pyam#TA>$c+Dv7u_`WB6J)revK;fz91(_`aDJ{O^v@|pEfhNq zk2Q`pWN2B!5Y47c-*j`WP4n|{m!%{gqt3FPMFt?$m$-Z>lmEEy@DQk0TLHATK^HoHv)j^r$zesoQG=1p@yXJzUsYb8={1z@Mm@#g!+&349sYY--4}Vf_MC{ zVXGF8O9ScISjhUQ?r=E{_)X&|u8Lo%3k{Pe_OGQ~4?z`WHG1=-|e?|vNP;k<7 zJZ=xez^-|DJgiJO60#+TZ#rI1KPlLu_I_rlW2hei-gWRa@;pYc1o<}bB}t|uCpmy861 zf9SQvMq@F(1_TvYOT_hN-O52_How?UJX(VW@YZkn;R`<9h8lGu3p~q0?vbvYZNA zewyR50q%G95lu^FoPF#PS4vIZguNOF*CCWC^=rVLA&~9xvyks!HX-PY2dJN7)s3-x zvuGmyJhqZ16u74%3UhW20-X@AjM>oUidVby4BKTB;6u z`t_q?CF>}pKs=CzS$oe0S>JkC1d%8Mir^T2OZ$nFynQi{1$*)F@_1_4(}e{t6c)`6 zn89EQrq)U#ny4Tc(H_Z6BNtl#9P*{8DVs=$$qIAR3$N%#CE-|!A-o*pl-`|;LV;+C zq9L9#^XQtcCu<9)XNg1&*e z)VTh}01FLR4EObCwzmN$m7WC$YR<4jqPc9?64Tq>=2Qs_MHoNl6N~k_r9gBs=N#zJP^@i$E~+nwz0Ez7AfYfwc9J$Sz;^knm6F&F_4ox8qBR zhLG666^u+Z`YrhIPNC6GUbF1k0!jk%hs#8ZQot(df{?9OIDB(=Ira=0dHZ+)Qw1cg zMCXvqS1A0K0x|T0(+M*m5NTQ&-?YU>6oFCTXSt7k> zM{xA>Xi`#Pil+*?!Pj^d+{-N{mTUACjy=F1!nSnD9dgOG!d^$=m-{bjG8feas^N6_ z;5tDcqfVZIhG#jSsX-lGQ9EBcfhJvb40cEK7t=-tv24}$>3f)StoQ>sp`5Vd-kz-unHgc1muqlyy?F-`fQ&fYl72_8zS`M!P7zKpuu{pblp+wzO8lgrO>B zAwb{KysJ3ySVFpki2iy(ql|1`qXFTCU_+4sGBFu%4)e@tn7wq*co~CBtVZP9g-iH( zJ-c|3Dft$7s~wvG-hrMXf7LBJy80H?T-N;|`w@OdP2b(hDMH3dXz;;tvBiXTz{Mfp zbuJD#1nsN zch0#sv?ciqd?NgLK{(DbwafWs&BGkwt*b zC6jl?ABuA<>-C$M@IP=6V*9_Ho-=2@5Yl zRA{v;Ajn&R`D{`}FTDTEk`_h+fL7Znx{1g%?2$oY8zz}kp(<2KxaoRLq(hy0nR>S# z-k#6Dp*UAFfKa+$d^sbcXP1yA5(1CExSS&!KFQw~b_r8?$*j88Qc{jN;HI3uYYqyy zXTw&e5Pv6dj%U2>ci>8@e~A5qt{CM~2Jg-}jOvRb_sZ`)`-(O{=mI(o;KF7{*Qz_> zB0T*Tqp>Bfi~!@NHz~K&3t9{1M99N5X=?QXnQgN0D|`YTUzpJqG-Dx-@IsQvP!CBa zmzKfDa#mK??G?5%C7;!xVi8xJV#K8BJ4sSFdaHsvd?l#Wr2HJ7NEqvh-C4ED28~St zI;y+)T82&5;2vv3Tk;0%k*0y5rwC=oA}BCk1F}0y)4NNm7ZoP@}rmC z*=kCk{P1@nqHF6_+aa2a;S~KKHoPIGXe5LujlUZuH0@=cvwD?{r5}F|X~3;;Qw04d z$`>G|Nz35)$L57Iqk24Qc&d+|a7Ml~X2tW34Oi2*<>^wliEUEzRL4b3H&<)x?AQK^ zNVe9;5v`8f(MeCcBZMw((lU4t6nB#pu{5&#l%mhEk)F|W?NllW8&-M z;x3OD>mTXHYZvjxQ%jv=?}_X6>T$+nx+;xrY-rWgT_v5%3m08Z0|HNc2e-Wu=d7%@ z7F71{;SpNZn$O$Al9(hI7}r})PZFLvjjm7T*bDm7uAZ>XiFN5}5D7;NU;d);S`2G- zd1^f7H`*!iArVSs|WoYiKUu7!?&hKk3bwn*6rEToDgbekJ+qQ3TiTfNq-y*j(g%EWuUw(udo1HR5cOn^G_$Ml_$*p{=){cy8n zwFLlKtbS7<-4^W-z`P`66t^!Zxlcf~CxUu8Xo78kHp8k<7rOy(O8}V509Eo=(gxff z7`#7zgTO%YZkuV37GG_yAqMfhS+6CpNLzA^WpSgl0lu{+EXZl_B415X6#9KKpI+#@ z07Aa(?@~BM*ee23+p6AhoKlq9zNhjX%TU3Q(Nb6U`;%Ehnjyiy^8%Z3d-yubR|l<1 z>%DWdrg>XtDR%gdXAEk1BtLGG&r+H(?EudXXQ8c8TZKB1ij2-^_t%{GDfSlh2IPA} zv4L?BtoKl|r!R;A!rpRx$8j;szX4x8{op-uOZ>UBFEfdBkAry7^6MniM?+7>clz5B zM4UZC97nUX$J;6ug*L*$MUqlfycc>gJ8|5#w{Oda>MV;ClPYfIZw2y zd!DO*@vS1l5jREnQOLi6RLLx^Q1Xt3um%`^(tJHPy}2_`I&p{=`7^gm|IYU9vPgp= z(>=U+b;h^uYTx2H$&EExsOikH`Tl?3Iq|Xw#CH&`9KyKAEi~kgoxZSYs~`7K-KO=( z(pH7MY`_0>J2t;KYt6If{@&?_o3^KsHk+>LDnf@MJd);bS3LN4-)`pcK;B{DGZc@2 zXX2wA&OvXyS)3BAmz7?JUS3G1a4&%)8+eyj+f$e0PAl@rT)d5cwkZ zg5W`5lC8|4`M_$SJe1tQMBM*43%(@muNJ@p!-0F?#DA>u_599ROxPjqi5aq`?C^=Y zc<4E}$iO{+dx&{_OKbf+Nw`S3Fmz$}q5b4|$Jp?Dfq+d=^S#P%fji5Y$T6Wg4pT3A zStO6SJX6NmPLP+mQddEFRvQ=eprLq}N@iH;tmIlToPXxoDKKk5Bw)ada zn!MIfiDsrEXM~;@cMK>pl9Oe1BvX7!j$bz?AIm~N>NXQ;V{Na*iqaT|PfXxUP71?L z&cA6bC9-Kq^dOKP-`Yq?yt_(fK&eZd8?9%kpHc{Jp{5j!Q!%EqA`clb9M{%NN#tzN z7zY^lzRI63QJ1J`uEd%jPR!0KLZY_KwTB#ymLs;6y z*up?@VfYSO+V3vPosZU<4E=?wZA8+sMdw;&6Z@L~Me+LQwae!Az0{hkU5L--22sod zJ&R89Op;v>&Bc*@2p8E7DKD{ZtZ{Kl1AiyBj@}KOtbBm&W)o4=yQ8>|=)Mo-oxOM* zMm+)_h460VHVRyFG5v|@=&9a)4(0omm`xrI=H|2dai-%u$!va-p_ zRmg(%k?Ddeyc>R4#Jzi*#q*apuwwha!b$#hTGM|&#Y^1A(ALJm)=J+||9`l>m*L-9 zRA~jph5kRXy#7UdFa39>)n84pOw50!TQNfZb;;i;S1f-4l1warg;@PtBQVo6i=YPjH*}j9$ z{!`=ecVO6m(Rlm~WB%*dtiOZF{u$r=Z^tpQ{DoitbMLBl+=j&<9$fH^7bI;9s^p?E zD>-nU75QO4So$+yq>Mryy}@Qgr`J@gG^{@f?$^fvR=9)14jZQV9RkUgKw*~?NiUbS zKj?a&9`>F;M#VwW?NY&gq1dr=8ewGA1*yVHqpS2j)_{PEi^=(JFw#sPU#(4U$BRQo zYnSU61YxTfdR#olsbaq9QO+WGBi}|hy?Be=8tIJe;Ksfmq)~RnT!P;kB{Y8FDsDlWV-2F2;Mr!)zo1$^wlNo51&58GE}M1w09FE)_~iO*~EDgp_l}KusDEjya6}4X8Z!3$$smdmX6J(cxE$V$3k7wVEUn+ zEGCC}i5;gi?m^mcmQ=bp!e4$zF4O(iDg*Y8nZO z{h{A2DO7Se|DsD_T9?(k1eYlAx{b`|aTUp3_ERXumCgmseG;UE=rKR#1n?3x!#an} zMOg&;gRLP8`nx@^8FttymqtT2UmuO$FB(7>@-VuOY@RWYX!l&COAZ&fn(0?mz@vUF zLv<9^k58Uc^p(~y&;GoN&5|fHLA%&luy}|Ywof(t4~H4gXGYvVTO+*pt0BCNpQm6e zJhz-TK8J5j6|lUH#!vS}5vbGO=%<(IOs0;yj)oT5p==fxy^kkN3b(VPvx&RK{cT!t z`n&J)wng;z9Jk6j3J8ew_`L!=Isu=oy>O+n)LG1t9tpd=dhB3rsy66$J_vh1<15o5 zRuKjYjIWUXKmZCr#K<7Dl%<2Z@Mz7Uh#w|Bys$?Jt6Yk!cFhU0zC0Wf3jvLk$x*HU z1A*vw{Pq|&vz^^{ zsr76O_TzP(_E+JkuB1cpC|3O7hCX*v(9#6b9X>g1o^*P!n22w!O8kO)f5r*kF@Af9 zX1cf|gt}cCqQg)*#j8T`>0Ke|ArmmeU^dL$Uw~3@JM`x!C`P5p@3c1<-FCwqeKH#MNMu&GqD?e z@fdX}^3@U#ZbFm5^oINVRsi_a%*pIy6?>4_Dxx8O10+SQxln~#T?;xXaz&vKqSOuG z!Cigxdp0YDeJK9qkRXG3G-@goF%LGVcb#JG{o7yFRzf1NNk;nguvlrC!%&>?q3CsZ zRDLP??YnK}@Z}B;Mw63TD$Z14k_4`7X^B7StYy?D?d)yjAJ`(n7UU!w&YYd|$HMSE zc)=peuYtF+3kFC!-<2T2Knpha{gbN-MPxCtxFpB-HHoh>9oKLAmy zpoTIKTZLS2?sS8Q8KsAvK1~stU@Wgfmx_iCXaa|;yn2d8zS~6<7G$g@lrKw0Woand zt2M>>Z7K~vz^1Mme$Zf9r&KE$ zX?O=H%jo_$_#tdTv)rIt@hDm=D}?+|+?;>^q|w>E*}=%DTy>+~8(prMc?wp`pE~nc_BY9$i^}6M< z6^YkdqSOYqY!{e{{7ldpZWublM9jRl_{$bUN#>Zi=aL~{rjcxxNnr7n(YQ!s=iS0N!nIKf7LPci;|G7?_!=47^Vy4lV0Fj{(W z%|RRmwV`Z+fT`FkafWX+F81_j=p)`+E+9o7mX)tsq_TNd#oD?ievv7G*={%!g+cx( zU8q3qtBb<=Nte)LUhBRv=y6Oli$r>pnVTj5@ul2o%`VZZjn^2ZJw06cf^dz@qOF4> zpquaD%|42;{m_nEHZp;mdV;74S+;c)#!0A)uLfYjy>C>24ZtY zT518U<{%6<&aRg-tTm^jdvCfbd)CiwXyv8Lv3QoRh|k=;eZk^u&O5aDE&$ z5%5!)`UUOtR>BL#ySH?W7MF0%{!xBf8*!p40_R@r)zLIQL#12ajyEPBkv=7}2`^!* zXa!J2eLVuNdMnx^pZHH*{#){VZ5nx*?u6XRKKEV?PM7PtO>rj+qxSLXs(83F=h`A< zkMvF5(KRDtz*)$Pj&GZM_I0QHNqUSht08*}=)11AL;_IJ6$Jxrl2F^(|P-eI6=^e)U$> z348qx&2qE%vCrs=KrUs3ht5#C0QsW5KxTYjXb5L6pqYTfV$Qx7Q++N&!Ed;Inc3xN zY=?l1^?0tGv&27{uk)Mxk&*rpg}RFR&xI=%Hosbd8#ErbW8% zC2-Yd#9S^=MqNi0Fi#_0xurbo{A9wvef{vMDg5bR#o?phpdIN_6O7pujN?3|v8T>^ z3K4B{pYhsoV>>2Me6-=Zm&PHY@gO?;gWn8dJ=wOF-}9)uR`_Vk#)yY7PamT##7FlI z+;{sbri_95%&E?U(F&AWxM*kkP6!->L)|T4%{%&UtgB5=YCa32P=>1$?!|1r+eje9wDGhR2X$%*j zWks84Vdb60^j<|TkKq`8BM__toW$x!<1D}E#K}phvciae0|i>@+Y6OjVqyMuan;%~ zY#dxu{OyhN;iA{$OEgHF#azmOB|@L!rp&0_vXNnSGrHKq(7vXpifjoJ0u}aqyKBoE z)lkgwe4+RH_obYd*O$>n_M8pifu=28ckprgIhrT*YkSD&u9IohX$?{Uva|kXjZiN;0aib!7ze&8*ypEW`_5hXM{=SbTYe1jWuLxnzW zJ^adWpU`cMYQtSPtGqPT*D z7)W9q(8$Q`b~0Nm`(4&5)@g!~r`?ytGJdg z9fBSfwtv9;FhG`ac5i%9Soh_P=g;|>lQ%9BW(gn#!Uv&FOAXf0sH9ZQx0QKzd|+u_ zo~U7As9#=aVS_d<&esR>qTBUCtapOuCWDOb1xz0MyW7-?i>%oY&}}To21A!wm_vGg zYIv1G1SKFZdH1YzTfhN(MUM(EF07KUpgpR`pZ?-!5-O-Wx51dNBa>n?vKmR@s)M0P zk6sCCpNIBq7C8~uZJbtIm|PLE&|ckt4zi((xvYWq_}zE#{yYU6h~<5=^OZu%u)3aZ z)7zSFSIfRg^M<|qiV~_>fAc19J%4mnZO!=18Zuci?QK0Geh2A83!x#my>%7hd;5xz zuBwrS24UnC@H%yjMjzuE&Nf~%#6oExxR9qrXVZwLCW^O)6{*Z=k#UZI7)34We$KJ+ ztmK$6wR%}90esHs8CIMPw0FFQ-@&QHX-l8h^?Z&|vU64XtF3BUO_qoSPoqm~i2tXh z-NqJ8&W^gaxy#5i%V033IFu6~s2g-o*ts~=(z;5;)TPDfQF|6gW9E0Lia#Fh5ro3i zt8i-A#BG&cXWevzMaBN+l0mQ2njViegMkMfmR;-Xb7Npv%l1C;G(Q4p^S1jSsk^oE z(jXD0S&KgeFYuLe?YlN;^Sp1Sh}t$JM!zi)lc)|o5d|e;Qb2HZbzlVjH#uKc@Kd|& zQ&5F-;!qv;L}QcJcc=3yW!3qjr0ms56PfjM^JK*PnQ?X&7^AySD@0o>s}Wy55v$_a zS6r7EfqexuN?YTHzB=Q?+f*Ie7PT@>06Iz)r@S`y^;L#s%kRt2UrtU$m-Xp%mOO_$ zK5FY3SC2R7Xel}m?P{qTQZscx0e|#!am4tv2F$0N@d4Jp~;))k7%K~%4INLdGg&>}!<9K-6 zT(>=OlL8GW{^Z`06b-Qq>qL%y5vG{A?j?2`G1#R?u-|gm^CC)Q+teO$!oCF0R+BBl z;bc|i^mHuiFx9tU`(;1#=HTEk!y7!>(}pP*{_cE;E7Jz%9eEk-0|xn4os%^`PFti{ zZhsMfM#(o48kAN3)yFnq#~c)U_FjJf;KS%8oS^h<+8VY4+T0R%zzQG)4|waskJ#%V zDjxfrIUhUr2k^B&nQxIX1Yr-b#6y%E(+~GD>Ml+_T!y;4x{$YupEsE|;2hUL%pJQr2Vz?4E&ypE?>uv@ zK%v)AAnJ(fIJaTSYKGeyji$=uWZXR?LB$kgbvmPUP3RB%MWnsDItI>rO?3QgziLYBM1yzCSPA)`i@DIBG*=Wwyvv z<^XLq_6*J_^2W1;?qAgjTmuF;;vig+wk@if$Wjg==_QU6@m%IR^=}AWH71=ATiZ{^ zyH*!5fl*6dL29g*Zap=2Yr4_mZo}f)+~#ao-wZb>ld^*@yy1k;XF(Z=DLckKQ7lPb z*{|C;Re33hvP&22c#>)tKzBJza{lH@JR#8z!2W$hY{&|iwqZrSbs*XLDzk0vyhYV; zam;z5o_|GhP~Gfw&9^btL+Y~9VBIBi-S5yqMFKvG!!*Z6>MiYGS^d_Uz|;7ytF~;pbt2dni@(`mJ#(VNg7xbE<$jKRN+hAyYw(0AYXdK&Jv`0(k~6&j4iqm|Ds6j2m~&zSqe+ zmqRuA^~8IQ^)k_nYrJ%egD=z@&4>Y*yhvblC(0W!Ub@ZLjU0r zn0(oc!3Sa>UaH7?`WVP6_z=vJ{79OX_HI%j}7RF0VeMed({TWzz z{~(8ByMB0*uEewA7%+1!|7tkL=F?~wm1C{+npQgg-MsTkNS~AwZhfCHhx7SM=m=KW zRSWH}I9!t*&GiTa1lPkeyb%)HX zAx5+1q>j`6W~>Z{2Ej}HXQX$scdCi}Ow4P;lG%n+YNPsQ4HIa~$x7mp!)=3GR`g2~ zSCdfoNv?6OiCP>ZF%oH4Al|Y`F+@z0r_n%zEUxNZ(!^1wS816k@=HX>^eoP7YJ-ol z&4ZlZz~z$CWU?}*x(s-w$Kg;3+2bft!Lr8+s?}Qj2(LSQWR2^{^RYw{OFnjM0b+{z z%7sf!xL&KvIU+p)p%db%$s6hxvtK{pIygW61&aBNx&Mbc_WzIN=zj*s{|80Q-yWX- z`=VxgNQS>rS_Vdjf3N`zjEs;B-%JAC_mSy8s;tbAj7)!38JYgQ`pr1}4d62}u|hI3 z|HU;hexv&T&NVPHvp_Pk{e`_Vena{HsIq^vAasB89d!S}Rxo`t6-M$=6~DVZb4!=MUAc=fD*);VH*j; z7Kky#Q_krHOX-n&-7-p;C%9f_KUkcHQ(o}(Mz){s?BAOn!Kq2~Hi^M93mkZFL)@e$ z_u36i%u^Wl9pR6}v39RV^rxveya%})M>oSM zj1;*4`fZ{5Gyr3~=TZ5^VBokF5yzyuK2`PF)va!e+Ir~xvq6Z)ltR5F(eKuN3~8a5 z;s&wg!~^GFe9nyjZL#||9rwSG5}t0JO2W&}W$l_Jg7GroaG|T%=~Glz@B#uv(CVO2 z@99Fbfwe#VfzjlIlI`^J^{{lkhT{0wg#1^<<ju4kJAE(7eBn50mrV=l?N#hq$2ie|Sx6i;F^ahTBTdxSk! zX>d0stx8-iPABpic|&;;nEeWVZ5#bLP0zcFoBMdcQaPiuF6ttOZ9UWytR+=6)|hHD z@`BDGozxh2ZO~EbZ<9X-&O4U9?@$J;VJ7Hs=2Hr$I9bpbV52WzsECDKOvn^{&2VEx zO&-6lKr>aqJ&u0_{otU|YlHV~;~`pb3UTDXF|FjCl$@)aYF^0S@Ks3Y34Rz|q>{)V zV2&p3D+MdKYXV%!6x;#(f9=$bIatq?wU@wMgxow+|ym**9t;EOJ ztIY3H_&yioFgd1CZ@L;H;s3^WTd^B+Z1ULoQ(GK}EC(f*73|c_J%OhXcU6rgspOV^ zTuWK8B&}*nJGPDcDZk%$4lUlGfH=A3j?o8X`9m@21m%(WNvGI$u|HxlOdaV# z$BqthZGD@j-LP5hW#4>W7UHP}g<#F6*n~N8)vy`2?~VI9pXMn9_cB4fry! zE>ppj#zU^#vXw8()~p+;8BE+L7WF{cy2Qi$1txh1> zBlAv7+~JZt<<9V%-I#~2-#AA#cLyKTpZH(#U!{W-cfXzGI4A=WE0Q3_v5e#D)zr(C z1aoF6Z^|f!X+^Hei_3i!T1sQeXv<6&aht@ftDIY$bDr~_^JLm3dn9o4WLIwHfZj5K z4I-I}F(jijqmYLYVeDP8IZII*3P8E7@AnW-@!gZSrEhAhB)Do!2!9V;>Y!8+%|4Cq ztWId){|Pd6;Kdx*q||K)vchjtz|r5CWqkxzeYH!@=b6MQ>`E1PxxIKLU=EH_#g)fg z^?X8B-YYSq{L*SH7^#3QXbKXtV!4Q!WlER!Ik|h}+KH5Jjr-*HSs`>q9{wY9J_#mo z%c2$u%`0k3$7!GrGd0L%u9wmH`hoA9a1UY2f1n2Blk&81yr8rtJfV(_Tg){hqknuA z)P+=k#+4wQ5Be5rZG?MQ$COx8D1FX!#r(`7sXx$oR?DlfqXbZn@Qk}h&XhWn_cX3}sklCrT)L2W7Hbc$x+XChgsoHpr9fzocctJww_ufF zA6YbOcuwF9)Uh#Xn<}<*uDO&Y5w$GZHR(y?>Tj(tI_3UJY@9knZWyqz3S^-8I3?`68hr80Rqp5El(Mv_!JI)+fZLF(5Tp5`BR$I*!>5_Z#3NTPG zf{3nd)52{RZ;(LZ2UZR>SgR+lg-`kA}J{?-koomGM&ZY z&Pn99nbOijRj0iX$Wo;_)DjutG$bV26zV9#2Bkev${;cIf|BU|ktO-Z!t^GW-<;r@ zT2MeeAyAetcpeLiR`CnHvr-<ZKX`iLQi?L+sNS@i?kP%8a{APf2?x zjr9Q1JNS*Mv)KONcfzWbGSYX)5sC9@I6i?cxi0QUlL}B`9TL1z8ktHP)mgSNuQ*K; zFG|tm_av_l2wg+QZYfKHibthGPS#%8&8R1ZMa!)Q)Yi*FBddNW^3p(x7!O8b^$~J= zr6NuY_;D_Dlf5_OFMRO?v>fxQT*Z$?i9QU$`oX*eEsgU@#Ph;#JRu*RJMkY5HH8qcu3Ucq=aYw$;(tR6rQe^ zlQFzgpq+Fb1#+L>#+(~Ycfn)o5Aiyys$lT|XJp|TSoYzReax~<5%l}$_ z{0TBiD?~0%gVZqeXj-I&b>kxcL2##`L;29LP`BI-cRUc}aTZiOYAN4!%2nB{Gx#{43{MYAM+3I2~5MvIGC=C~Pg z{Wd4~6|St<{WqEpe2>(NjLSUewZwqh3sNrkXR&bU@T)*D!X)o|vUi_*bH{A1b8oAI z+Y&Ks$SlbL53zs6CISzkDZPMXZ8?-`; zb{iofwoI8IdJA}LY((@iLW0aWdiv;7@T@X=m;pJYYED8zLxWLtdLfr&QBbv6RCw;d zp~QrO&C(H)l7~@_;=~7c6rrWNm<}@-4&@o0{^Qcc#XQX&8Lp=((`wLO?|cUu&ni=` zj7jC{Q%x8)m`Zzg7$H+lq&y&SAws>@Tp$*DC_g<6B;RfTF@R|rTGfViznw_c$Ri%CLxKt zfZ3yjIqB-dDy*KHw@-H;Wqq21R4~y>wtg}PXFNM*vKKgU-6-A56`2}B5u>Hc@Yb1Q zab5+EA%p}J9P4m~(f*@Yu*#Oj;6&gd`m6XOXkmGD8atB*ml1Q@6D1 z>PUU(uexQ(i4I_i4(0ErTcpzg5z4(cC z2ZO7T%V%8-Z$?IBXVk`|PFoxJ^|m*WFlDMHON-HBp~kk{OTVTH-^U&N68?V!Zr$c=LCzA8c8r9J(zt zM|?$mbK0Ui9pdNpz}egmq3Df#>O zkx`zT34thL+oTsnG4Akr46XB*gH`jp`n$)IoTtSe;6))CE9Y|+>ISrnoNbf=pC!b7 zyN`tPi|d7}4Y;*WqPO@ap2 zvB;^qcCQR%>`b_%8qR)Asq_HO**><_$;R#^pPkeiWv(HaJtP;m;%&^-Qb9dQa72J~ z;obuNd4*4}g6aEzXnW`2Ou|LoH<;MACo{2aO*pY_+xEn^ZS#xmWMbPkzE~$~?|bjr zYoB#@t$$ASKiyr`UG;YLTV4G=&+~hpvI;8zNal@xfofntr2sykVwqxcL?)u3Om2WS zMTi?2RjHh}p9aO2obLWc;g*yxX_lMpHn&G=P7(LL4DkE8CC{lY)VV+wToLW>Vn&KB z>BTz|fbbKEK;s5y;mjK9?k;mwTUnBlZ4z@JdBjn^} z$8A%B$H(%C1kHYch@(El{3ES%8rrif?zaRfgn*M)G}isUA; zCCCoG&_lNUEHaLz-yk$8x6#-1XW~z3g99ppdTgND9Tt8OvJJy)g;y>@Tva{2PTWKqK5v z*(pzY;ak}4f~q+aQoQb2L|wS+k5c@IvzlRXKw?t22RzdvV7g4Mu=pKNWE?&$B$hHC9Nd9A*WoBvDG!no`}cIi6pQts#}?;+&@x|M8V=VE46rx4QdyP1QbcL0=9Aor;oB3FQ(y@nsGLpOz!8@bjYdAbz?~k;7CL_H*m9FcCh|j^iD-Sg>iDd z%182Gm9P-BejN2KvMR=2+L^>!?HJ7Y6m37dQ`Qs5{Q#KE7&nBMFnt*Xteb%}&#z*| z{gC{>4bmP#FbX*3b3AtZ{kqYwBf7xHbSr(k`$QgNd4 z*iCW?MHJ}!<1MVcZrHW(bCG?{;GJBf@Xvl4440a))f*9w{UONLu`|W*I zG!P7sIU{ zkjr|(Upxibh{Ax1|%x)f6}t1rsXj zFn0$}P~>MeVScEJ-FY8-bJVK(W&QDvF6chM5im|$<+4%$Am4G$6Z9f*T$okv0lq|<}BR?P(=j>z_1 ziyy`ZZ9_LNy(;mPJM$_8Y6|ow@svU&hy+|FyGm zly4F1?mFR`_r!H>+U)}pVXIwe?^Cle3<+11miN!gj1hh3el|{iX}*}Ep7mu6E0t#D zUju9OvpTI9E2?)8OKl$72jppGHK=YB%Q`irI?PYBvmJ+Nh$f^L_~X7|OC8Q0KzjbLFQG4Jw#YpW=IEYEx46p!o!Kho=v(tTkXjTgp&*h>To$yA7U zZiEEMr|`gFc1R~qSK|uVKGvD8zAg?DF98-)s_Fg*Q?yF%xLe(kfiC~IoI~`745$N6 z)K|oZ4e#5?8}v?^r6bYLW%O4CuD-hI-fm_451U_sNeBBPtM~an_Stg5`UD$-cOu?0 zl?N!tDd6w+p^i?NUQd8|DD#9UKy3<*yNwn$uI~6Ck#BDa3Sau>am9)^VzV?QQ5yFk z-(2H{9H$uQ5Ku}1@4aCw)$qY*Yq+@it)6IUzXQd_6Dx;*Y#!#2(YWl{t)NC7EWDLe z|BOQ`Sxyr>c(a@Br?BI zj0p91tL51Vrf1}NZF;&kx%|G0Pf>?bJy@Z5r?97>y82B~TFZV?$?gNUluk&~Q*Cg5 z^e46fQ@IT)Lbg3%01#tXGmxPx1isbtzqa2*6&U%AiiKS%dyGpBi5~_m3u{CVD{Ajl z1-De_OFRp`lR>e4w;={{z!AZ4{8Ue=K&=OQ=`&28xjIIiA|4VwjfhPBWS^p`qt48e zXNWk&8yYS1==l##SiMMP&;W=WF_-;XuOQCAqU5)jL~?;oHuic`3b+>hX zF%qB6p~W9|p!mz74JV8qxJRGP*9VpYGl*{mp8cSk5}4zG54?ShPqUA~B<%PU)Mk%% z#M;v`JGFCbLEt9=i11LeP#*#K-9wL-4sRMBM|Q-WcfJDAx)n=!h=rc?B)a+>u{uxP zv3pCvbw+&gD>oR<;I9k&`wn{AI!A7Y1Nu~J8oVF7!ya{WuMZ{)p!<=?b_|C!dE${i zNC&~5d)g`J-zG!+k^Ja;9O16NgXBC-@H~Y~H>=@2s|1k}0JKy4)5abxU z^$t7|oDuEE{UfVcANqzIkZ%L5>5X!eC5FI8$c0S+4T+0sh=9piutI7SdGnTnM5|Ay z2NOo-x2S?UEJ-ctSN?gptu(fHdXkAEE%hzwtXj=cHMNFqr2=sjaQ$6c$tg2KI&-dm zM@npl&Y9P{g5NTGwt0_6L8i~O20~hXEj{E<4e@)>quqyRvWn$aK^LA~6aKH0H-gO8 zncy}Q>t0`!*J?9a^`JLpbm}YSM{$0!Oqdi-)BJP((%&&5wzDy}k-x_V)4t16Gd1fG z_>4`P=d#5(+=rBQx-cJbd62#p1AQT>K^p|O`c`+wKdkmXuw(@@1KEO0_Xs>@DMVi& zaY45Z9gYMBT9>&4r-D{(9Db(3cqglwA_qjt(Ldc{C*%Y#GtnpT;Z8Q^y~En+?DI_sbzudF2eZELUjBkx(%Y9Kq4IDvm_m%PXD z&Dizu*{6=7#`mIKYKLhP$=+GdXI5dD2udii_8$4MO9o4EO_^@ih|wHrTZVC&?^r=h zxzSE~H42}1@_>SGkOQV9(RaAoLDwM$afr}cLvCg5e!G--CcGi z=7$Y|y|%(1RwFTpCFRaB&l1=ddNaATJE;1@J1lQHA4``f^gF|tL6a2mI{UgAx?ldL zp+|&nLF>=6UA#D`JYkUV9k^I*5+BkSwhD=Lc4Og&vR52f9dEj*dUrGkxnGj@cFBEil6*hhvj zn9omCKSU9tN6uX%BH8fH>-d(iYAidBnP@cQru?j`_-th86W+q%SRJ8v%S6ukF72z& zGmdh0gNg2MK9*V^itk;C=hC3vM(NiQR&Ban?VaK#dF&&d0XmS$$GU+&2sytx$d+Y5 z@qYSFL<>D$jiGzssDW*&T4lba5v&_#$Jg#HdO~o8xDd_o3$3L>J-n_k*$=&tzhj$0 zJv0wsLsL1CZ;Gjz)>B0`Uz1;=TXu9l9Eft1&8rD-e9ew{HvKJc;Y`H^Q?v4mt0Yi^ zsrsq8Vqs}UqIg#(u8CdpVogUqX%3_6nW0%Q&=J?xC=@mi5boL!2!Aa9jJ$-6*pn&D z0dBlZ&bBmJaL+hjXelZFZHq>@PwpqAzp6>tdL>&{&-uMkc>q<$3Dw5V!>t2P#~)i$ z%6f0Ne$7Iq8pwS zS;XB#ZQ?m#E1T_u*{JAeq^%e>23(1|5VxHYxV~^`*F4u`ZU&_a>e1Kz0#uy^m0!O6 z5Sjj|PSBQ=?qJq)%GI6}17H26uw~si<6EOj@9;?`r zep1H4&*qmXiie=tpnjw1HzNbugnD zT0I*TU%x`$s+JaTz^%B-H`JOE4XQ)D2IGLx1xE2x=)GeOt=nEy9deSR8uH|@@PcwR zUe>JNzAq{*PdZ3iC~QeuL)C*y)6#$1bPhGvIkSbnCQAAS-m%jo^Oy#UoMzv zxLTMHygddja*N-&^R1%$EHOC;xJ!oR8o%iR85p!%1Daqx^)-*XS1|7yYw>&{U3y($ z{Uz97S6;C(6JGiub@m(Vi-oW$cHqW2YpZ@A8>3s5LoN?JDng#`f48zkzI~y>Q6s~Y zgRmnzKSc5ZM~Hg@Tb81X73}csRbSMCW}TTJE~_?}T} z)tc-tsar9i6?SK*-g5Qha(ythZ%9|QVq$N4N<zGGJu1E3n&j^r&R{$VKZPPhGu` zfzM}4QReiSNE4Ouxa-lpW7Z4oEr?5m?y;KEm@T}qizYLWLu5{{uWVg*FAb3*+aE1M-0xU@= zuv;0`7zZHYtV#`e2hyBI)|-hW|MDz^>zZ(Wju7#3)UKhS&R(AjcRl}esO`mU#Pc(U z(aisz!mMYBYB%jl7a%etL+OYaoIh@Pq3 z8su|_GG9%?6#nx$T@ItmrTI*o*JZ-g@P0$P*Wt*K-E$^cPJE7c@RhpP)V61O*2ADY z6&br@5mQRWvqIX`#6vAKrn+a*Yc)s&&{*r_@^IAo5p0&%*RCX>%|9ans&&q>pjY%C zQnKSs#ou1&!hXEClt;cy^o;XNeuaz~Pfz-`8{w2vASdAv);@xUTm^qOqVlmV$|~D( z7nhcTuXhg9JoS#{>XA;fDuwRdw=u^%wJ|}PAq7Zp?~AXhAeL=u&#gnOPx5+PE)6XW zjVwnKU0^G)sE`NDm*VOv-7}ZJU@Lb=9GQR%iNloH+2? zgq`i6ICsGhJ-g6vmKgS&Q;6HBvdiJyTinKU7Y+Luph_x6w-hM%g9@PPg+4zVs519& zeA!p=^d{rTeI~eLpZ8$P?8bY(`EDil`RPaBniitJM4>F9FEBJUVVC)IarKz}miGf- zNHmj&cmL{yDp-AJVhsyOZ?2-GD_(?iM0MDG88*S(fA1@p_bJwT`d+97q{OdtLlSK* zowU<6Cg#GOp+c!bo%!?d;Rz>(_1xS{|L}+k+Td-U_jx&!4fD%$S*D4M-xkSJDRwuX zSCVQijbE~my3BoWFbErW6slp1^2r4jjBl8648<#PkK@O)lF5xbInns!uH^+u&Hi1} zgVum6r>D|2IUHCQ+ttiL{M9Yn73)q#+2i5Sf?H=^+bOwhr*aCvW_`U;_;W3oiZ_x4!GcXA{?AGd$x@m2CJJZ_OJ5fdkkh~ZH)Y$G<678Ro?u8xtGw9n)Z zTQ+v~Sa7>KqzHvfnIDB&X&K~^>d4O@$Dg3^Yr(7k%8c?4AJqTpNc#5!?}85I`c||O zPWo2nhSEy^m#VCp|KYXzpR26DtX}_Ll{NcUHeDN*5%$aU#Q^)|_Tpsv7gnr)-17e% z`2Wby{O@D^&wM!>$3GWavof-OwOfA~#~7JeIbb?h!1!)B(zSqH<1^J-}R-H;_3k<)k; z;4(IduzCHxYAPzZQQ=z@ITnf8_NdK&(e16QuGF-_eG7Kc`@u2-T?jTAK2TX84WX93 z@HP7`&fjsw8c|?>d^0;AJ(hSed_Jk7tgrq4Z4C?$;$k3s?RoZm*#M# zt_P&uN360e7J#J+Ylr~jota}-;<#Fe%ocZ!lDjYHL_-+PznU5UerEq4hOU1$w_T_s zIVmlqeQs{0y^(wiHB0UB>^FqmMJ9&v{{|f?@nb(mh!`ddhEe7NRe?-=KSvx~K_o=E zP~L)4s;X!tpoo5Cc3wmCRAI?ly*Z?wP7{ZiMI&_>`jMZ_>i z&GB(D+Lne|iWGNA;`=N2TE<%aW%?_4K1__^WQPp$5L>ax%%>Qz#Mx!5nf#&`>PMb0 zj-$zXXEk8uG1`_jjy`b2JGb5aug7Dh)A*D-;@ja1!o}Hv>|MjmCuba!{8TRb1-$fr zZuR$Z{ZG)A@tbK8wr?-eW}iRfTtunlsE=Lo9dm8>IQ@>G?{}Zsc!hNHj%Kr=1?{bLQi>SN>)Z>f9UZ(tQ7 zlD9*2n-YsZATpN21{^o0dhxGH3 zO!s<{V>&@41eD!k<1}p-D&}_hRVIF)xhtE+9-TusKh!=NruR`v))wpB0;mUhO+F>WIy$v>Tmz+VB&Da)UVP$91b)!8dwZ@nVXZU zFf6h&dP=ve{V>@eLKwhL*^4$QqW8<7>Kaq2;DN=2(+_M$EnHMKnYRgpoMxH(Yk06u zozBTFeV&4$+g zL5N)mQ*+}al1{RQs4>xGk>vKGOeNT{PP!wW=c9qyvr@hj_!peD0;Nz3$Am`3hEPG=$In<-@rmQ zB!Uh`&k4ZBV`!R~AymQ;^KxG|^4IJhR?;|yA}$)**C+dP0#*|i1JQz9 zQjZS8xkbN;Xp>7Vo{L3}qcXuuD2wO?1G*cK+hsZ>zvx4kzY$i}ce&1uQ;($vu1a`K zqi7N8jGBFz-UoWYZrxR{)SP|oe0r?S{h?mG4XxVaw8JhzE-fswBe$YGq_2PI^1fJ{ zm>+Yvf$XcUq^m4jEz3`->gd9YZD=s6_s!Me`825~CasjeH{fLtB}?}^p}%oPO7KmF zKJVVIZTNq1Yj;(k-&DhKjN6c4aBJc;S)$U=-Q?Tb_9WZV4G{BpG@?EWV+8Mx&3Prs z*&^#4>@-MgR>KWXkR7VtmSz9x%{0#qZT$N;pS^Ai-L!i$zs*f?Fk`=AgAaREr4Gt; zc`(Lt0cLurIEyoUx!Mt=u`UsZ2n8x^h`YQ-J9CsW%`+KQILjvM|< z=C?%8U3r|Cc9)n99GFJV2A~@xdz^e+tEOt`+K`1v;DIwq%+6CN)m$|~ZfI!3g?*#O zff3YYl0xgRgX=uEz#s9_DnSFj(0Rtn%S>(kv}cLGLEd1XaU3>D&z z4Xb9@O5}w9Djlm2)QGk*IK|gq{K!r}?MoMnf=;NPL2fqb zHkWB!%ptf=R+_lSmm;Ngf9059jCT{Rd4Rz2TufCyk>)gg>zh4f6!S>E|8r z)4T6ySc{gzceZpr+Yny8GsYz%`L^ZVR%EC$Pi(NvMhzMEBX#La(k#$h*uka ztSQc2E=D27fB|9q@AsJ1o~oqem2lq=e*hOrgt+)z(E)TF1WMIqjvevKsI`ZW4%c=I zVGAuWHE;v;ZELO0MCiMO@TrFy>kX3R>rHYLOScNf4mQoY-&?Wicq}tAei5SPFg9<~ z0pho!Zy@xFGG<9N_PyZMZ?53yK^Cxd_9?@++YS6WGcfEGk|IfwN+Z%tUO3#@$UHe%KC{=?@8u6+(uSb*3P8;O!Y+_7K8yAzX#uAT` z<~a4`?LYU&(}|TOAXJ+W38aTjzv_na7=igNCf7@@9ZHIKo#c`q+t021<+Lxe$?B4e zKb3ELM}~@9sdJ#UM+YBcW3*Mc@8QStR}u*_IoN0?u5z|lw~G;~_YumArL%uidd2MB z4j({)A!aAwrJp{^Hfv!vCI7gyK0K1nbW;>fXX3T3Q(#!Km6let9ZRKXPIOf^ZNt*) zdvL(~X`E)bF_#QTsdDSkcPV^4sTr@NOk+N2is$@`H8GB>m=&j;)-F4R{qlHzd5OdM z*JLTvBmXsuh^X|lCVz2rI61iA{a*Ww%aq3UNBlAg>3!&`2qg<;YVvu!Qj(MUR;wRq4s`h}G6`!o_elZ4NzA$Ys zet|P4_b7a7MCYvFFy@xTqaR+qKHQd;fB6=ov)^>H`+Ow8;di&L=rVKMk9Cu4J3R)-hTLcJk2~^v z9ANXgvct;|jElFGzD3i`hVla>d1X!Ar6xm#F^s8X=PES(>KA0jmbP*UFF2A$M}g&D z!R7nRm73OtNArBA$<)h&tugfnu;bLr&DHJoME^NWlVX;P#)l(ogeB}DLcWu#E%t@vjtt9zInVNw+zo@0K;z) zjZ4o8OYRNli%Wrtt5O&Sh)z@HR5O%C85VyCH|D{Q`y?D*l^^4n`6B9=m-v8sH(r>oS=MoRrhe-z7gvH4zxZ_VY3S(eP)LubP@HNKrSL7lGM>f_O2Vp=|l+8Ey-zUF$3@KMw68X_F9S z#~SmyGKH%mNr>F5e8~$4+!`dgqBqbg{7FX-p5j^}8_Nsu)gfz2D_6oBtSMUyKW+4z zMkMQfPS$Zc2i}{86VF`VeYR~ygK9KYgz}JLxUFZu{8P_H^=Uo>dJ-a9C0Q~oLoH5( zbToGBfS6ZFBJO+_IjAArAa8qK;mnTjZl8W`_(DXtz|mt@1ccL!naz;Y-m=f zsRb8-@Y$Y-LwB-5VqUz}WFxGO%r~6JFg#DCIAVq5c5v;q&N|a#bxAxf2(z!AqYOZ*k zd5updQ-V%DVQZvIpRdc9tUQF@{6!+=Ow!-*7?%PYlp6igqhDsGXOK>^YG#JrHIsC@_|wz1S9DUSMCS*c>s<5Wx(a zQ}0%(k)QDP{F-k@>;dhm@Do-`c#@{{KiK_!5b`EbJA#*_2duWOzkz**oJs>TYJj35>B`Y_3eT zQ(&-p6y-7SaiiyZ6MuK^`x~&^oj)?ci&$6@UmUk#ISa87#Avs zd1zBBy#bQ>vJ@9<3$uC32i-5!GsLCJ=F+))x^p{pwiTo;*M40cbk=;a0l1nVE@>5+ z1|$F%5UD2yx0e6%E|l}~QKKf5I%h<-WKg@z?=`0h!L@2dsmPP08O)gs58KosWt-+| z$a1I%dd$FzP&zdEk`^WEMxIZ8@dj{r7DFV}5sl zB1D6!13@&jXYZ+t*gzHj{d&qIK$hq90&xDj{y8}6=_ zqXNvBZ}KT(APO5HWT1E40Difq!+z~IGMDTvxIypiHL3N-73$s1Nyo>v^FcR)7m@X! zc2LtY%sGq4ei`_F+7DqbiBHkt^;?b`qk&2#S)$n!b^?}QEVr3(n{!H}*XmyEx9eeC zW#@*z3dIflqg1a6CUvqHMBHUY^>okZuc|8sSdA(^;O? z=hG<*%^**e>3+>?o`AAOybELr%Q_HNg}+De1YW3kEc2IMk;SwuZ8m0^nen53Rcb^<@Znpz)H1GNQCuFWETv?uh{<@;`)J zk9;tm1aG$)A}D73umxwj=I&uHYma-K8|-Gqwm_-^zmnutk+<7oMFyOmh_>FxQyZlA!|Cw@XeIAKXxBMkem zv{`dDg6|4EhOTi!3b6!gK%@7BxSv7|QC-uJd(?SoLm$Y@gh*NJ4@r!Bb@j0~W|Yhy z#osrUHTxo$t$z)XHCr^=wgV#sR*!I z#4Y$(BoN)G8ZYexOsTnBCe)GkM5d>WtMT1+)X~IRuE$M8u9-3vcyKY77c&+(tRfcl z`EIJ6nu@l@;EZ&Fp6h5X(6G6rscr!{XZ}Fw?c|BZJ$M?9$8NNVK`= zxrwxKv8Cg@YleQ{rGr!$|EpF1e`NjtPg&^S*TZD(jBOP4Z5(O;k=6fCS?vFoDE6OK zX#WEMnu+tjh+=I20ZRA>sQGJzU&53oEC(mcmo)W-JpNL!zHrR{L1X4*{W`_|rJDUe z(%Bc>;0s#7%ENon@jvQk|MJ=VYY~lwgBg~ViH#kWk%@`(3)B1s5cuCU zbYF-6B%^)ld;i2~{ueUZ{~xQF`5!9JKgnn;|2{MLKMCCb)I}%PD>=Y`+<8QO*y5=+ zi^&U3PE0L?RAF!rK5L`^&IU6FobGl_Z=>djWuUj++%w*9^*jxjBHp4%CuHUzqS?X6 zVuA*b<_m2DJ(K?Ub-k|ssx@>8XSGV(v)PzI;HW=B}vAAV2W%*K~WnE*1Pc}!|32%%{ z_FzJh`qSs+2m! zLQV(1^0oY7(fLSG#92Nf((H<8ydoE+e+V(HOYz93IdDmw3MER443Zevp3>>^U(Ks- z0@U=Z1m3)XP%kj3UX^fTd2!Q8GIMnrm2_>mk?%A$1iAlgq+0zhp_@-CH*UMhzEPDdVEXbs z3Kl!fj8!yxtL3#)`q6{{HH(f>Q z;^@X_ttudmuw->%z7HJSns*j4&OiD6m}T=IxIf5&^v?f?v^KCyty_KK1(aZkR4!BM z)Elo|TDQ%)^|@th2xaq`#l=yWqJFJE%-Fne6U5y`x;w!{{Ti(apX?)>o!-3~jdrNc ztmqWR%572=TvZ2hJkOA=nL~AkHa)|!&K~7wiDRaOOBe)kkZO)mI@B~tuH|=Dz`d(C zHm4}eh%%p;uS)tB@_t3hVttb-Fqgt`cG(R8W{E!T;vc2l_wB$vj|5uUWo#asNEV-5 z5y||&W{4BQYkU&UjX|6F?@oWBXZim~!6VNNp!Lz?4wB%IwU5cyEAY|eBu|->0Wemj zJotHKyLGk-eDz)d)?o#GC_Hs^PXgDi+iOE`Lu=DnDkJ<+!3Dpr{;2Rsw;vPifAD#W z8zD_=d}Y_-oZL!_#|_3@s881)&`sEn(mvTnzq)u8j$K_ z>r_{}9cb*q6(K9iDP-nUAGG?>*jRUwEaGhHLd~V>hFPPtL3a@71BuIZb zg{*@Q+R1;X!%_{U9#pCmSSP#0q8_BGQ{joh%|)CAU70hk#;2ylBCP6M5L`%IP+u^3R0VGS$|;(f zA)3jVX+E}Hqifg*%>guNH$kqgHK8@3xtPn=yVgH8>6+@=eh%on0$tI$F}XLL@tsw| zW%9AUKgunOxeQ>Rld_Mvyztm#gJuQE+?2X=z39`34$9*eL(I@uaS+x6QV8yw#?2p3 ze6FX^xl420k`7mjg4N}13;mwt*iPyHMwoR|U=iG#HfC7aj-aoGu9&s1Q@V!otdfR| z+}tuo4ICNpdLw#wClR7AMNq9$AVvu8BF2#&&a^WL;!$4~lMHE;MPM@ud5OjPUCx(G zFE~xcV2cyYF7>i{WcqL)mUwtz^R|V3P-Pbx_L<=Kofqq~mG{szpucp*x-GWD?pYBI z8H$Y)voAl+V(JgmWE&EdPvu=5=KulL+$>Z`%qJ)-yoyif% zFq97*1+sYy^TYmpDJCL5cl!%f*NI-dbWZp$S`R&Hgn@C5+;^0V4e1sNStkrx{~CO< zMhxd-|0da>!pLoLL%+=G&QR7N0XGDd8lyJxH&lgz0z&C|oydHjUdGrRg1i%-o1f%^ zWDe!_F)mWqkRA!yzjB^{E74%2x;A09%hM6T@PsUO0y5oQSSF97r{01lqW^)BC@FHe zbCJGjX?MCz%$#Se6Bc@Pv0iI*8Eg)>Tp?u}I;mZAl7=0l03y;qKFy82d!#?cOEIln zRS5|EQWI$13e4RpDZcR>Q)Zefqx2Scw-%AiNt<2DRA}M(f{vR6mrS4CTv1+ooDTk( zDYB!dzD{<33rTu)IMAtHx3?=P^y^hj<*4e}!#cgU6B8<>5)Y*f|8VBZ$fxv=o)_J&X()o-Zy)Lsei?x$Le zNMA!3ou87A5;5c{)&WW$^P%qM@9GZ~vjB(l;ZdcHhuDmdN_0&n5#coIP*!3GQAgpbK;ru8D29&poiIHSpIG+_$ka`9 zlo~Ae`_&$wnIC;_T<0?Ahb;-)>e_3T`NZe0HjFh~3Bql}A4d^c*1fNX6d@{0agVN& zqG_$Eab+WKaFCj~GvZ#AkfHpoju7xhuesz1x#n zOQ=ikesZD^IJbDI%8RKytb@kC4`nJ=qH(h1!zFUDy-7pZalc%LCQawyBD{(%kXnpv zm73QZmw1(LI2=7;ABVB|7DnBmDd>z+3j?sowEIe^0D-JkN`e z!vsYF$LI-cx&b2Z`WO<4Cve~!)BYmVX(1APvUr8m0DY7kNU_)WmFCN%9sUI0LR1^Y z4nNG~KpeSkBjg4))}3PvDJ}f0?2%-TeW^3z`EBIM15$!k==yM}}vmawq&8O1ko26ooS;XD( zC*#<|w?W`c_MKgj4IdnLC` zl93J`581@JKPiTwa(=CfCMpgHq}f2sZ=9>9Lwx9x(&vpazV;S^?A8cp@FAUp=@{S$ z$$6Lv9svAVT6;NQS24xG9zdwow)`CQh)V>Y>%@sFfEZl;ZKE%}ZTgOG(#QQYpZYE_8IkOc5B;A)C|9aziB5{3u6hh z%wtYC(esA$46msQ$Rf>(zk}n3Y4?b)S?4|$_^crZzZ@@1o1d_ZtqAbWq!jeLiht7{ zwL8aJ%By?@MwvytH);URd{&gV=&hQfhL+e++pX~qv<~>9M1@#V?SJF!*z>c$ZTWjm zHN{m2z2dF;^b2@j9x?84P}GCShLZAtj6->F&J9W)-REyIMr$o!`XG%@d$Wuj7U0vU z_5&Z5-;s+*y)xeoSg+{BK5D`O8{yyYEyX-k zNxY*9E17w&0#*gM4c4upTtJA_p75?=fH$by20D0dJ}PJ6hh}-PChzOgG5(u) zvs2K#7Z`at(c+zvg&j@TZ`F&Kk%}XAG)lhNMDEdhobgATIJHa~T+gwIN8qpAUi4Pwd~i8YHeHx`7%uh!VUOEcg1U&VA(-SI7A^w;xv z%Oc{g%>h5nLwb~LTPFAdL%XQSP(*pcBoat$|6Cs#Z%zR0InJ^u0JJ*Kj-cAd6* zy-FKiF6iT9-QyT%^Y;PoJgcHFF0leAjd>5=$G%6hw_GtECS=~30|ImVbEXSk80T@? zJr*Dl8YNHA?iO)|TYRE>=X;Cud@>>R2-hrb)h=#oEg~QnM3E>7L^bWQA6%0<1)IRd zKRGsbB8$YbHW>Ne1tbv1$;&G>+WJluFRClHKEO4> z`2!DJkVjbW0(*ROxHu^L6=9;qu57KjX$m5 zm)v8s8$BuD{*vKEY5Vd0Nc1ISz*4gi3TpjLr4TzzfKOL4dloB%iWBg^YWwbZuD|I2 zP*g;N$VjDu!g~+1Qe-6*QV7W&k(8~avJ%-_LK2xFqY~MB@0IM4k*wc+Ykj+~&*S&_ z{eF+fuRmU|UQg%VbMCq4o^$Sfz25hh+*v(V+{Itk7#^j*qS3$o!hrP1DKo>OwTmGzzsexYO94vm5u`5x-Nds<_M4 zSI0op)8W|X)t*ODx=TCX+H-`E!ub1-@VG{GOSL{0VvudxuKp!M2P1J$qjQVnmD|0H z0Rj4E{`F6%Fn-KV1`(q?mOqu`c> zQR`0!BH3!@veRjCyJk7ANKCP%?E21~$1QNGOUSipI^Si#vs*Sj^Ryz35H+`3--q{u zp?sp8KUjEMZ%`{>`DW?=CM>G*h5Ca$mbn|Ggt+C6z5VZ5 zd$Z;uyT4+e++;8s@*Tchc;x6SF2`OQhB-RJ4+SnvALHHliq#G$SFb&CSYxay_~xP= zKc5^$@5ku4DWpT^-Lac>jnTEF2a6q5s1?8GZPwc|80U6=415!Oea% z&w%$>^S4Ex$yv*Lv->tm6BgNil$>EY_2bRn?`$`l-gwlnR1Su3JJi4m_8Ss%Jr)r< zk(C=ylvMptuyb1boUK$^!96<+Nr1*|R6jB)3p;Sc??X-TK64LQ3BMgpuVXu2YtVe- zcWRW_FXlbQJ@s^T>zA17E7*W@$_KY`r}^{~FvoBKp?nHOEuV!ig|A6a=?!h`!S^t& zB@Q01-gH8ZiuL^qd%F1t+?gZ3Ee3fqzvnE?ipZ0P zDZ`QKo?gTcnvdSvx{4k5442Q+xT!Dwon8TK&7|s-a9H9S*WC>3cLk-+%X_b|bXZW; zr1lHl72o`Wrf%uI8tqn&o+9d+{3%wN8n;~*A0?OzbDVXzPvJL^6$?GcwH(VPF0H2C zp*q|@x?>GmotG0EL}?-u{VKQI=2_UjhS@eZblY%1i>G02C?+be$f&^>d^m4``YkJ%~d{^##q zyK^uHn)@Q$za@39&1*RM$a7s|c{sd=j6$);0N_o5@-9OW##{0h?Z6{cGlht8*$9?#Z>Yz6K6bzIkV3 zvz5aHoR9OMtF_(5rWsaL^n7zZ$`q;gf2k3BEPTnnC`V4_OWOXDEQbX>QG>8*PuqjK zT%xl5W7!R-J0$}Rrd6KY#6&2R7EE&-ws{b0SSv3c(KlDtrILhB`cUOVN2PD)JhF)) zeIntoamkYfjZe9!I!if^6s&T34&|n_Y@5AOVKN)JYwpn=#YCTHH2eCFxM*kY365&HS^lfkd3y zT?Z={`5yZocWi_$yZtNc>cuAZHTN%giJ4HRZJLn_=LdrfQq|MU1bh_b4&@s6pSgHa zKT0#W>Kgrh(_Nz;k0)DqtJ_*Sy53Y(f0RmZHH?{U<`u`LbxJ<6!+ZL0c&G)}7hY2~ z@UY+uOS(q3`PL=4=dBip>?SL*;;%~$XTxOj6DOv2YXs7ZX~s=dFuqJnLCl6_rp}Sk*?}npFZ$Arq@+_`I{del~D4@*BX}R7(I*9(x$R(zi?7| z=~8@OF43kSF5WotuHk|)d+f+(18a_`EJJQHPhsv*HrY{5sY70$YMLu+!Zz{RlCsB- zx=!-db}`NC;72q!cWp{Pvl^DVr%$VYSHj0_C)n7PG8xM`t(m4fg}S#~S};y?p;O|{ zZx=2bKCkgjFre0bKk*^+XgF%X+$85h3&(CR4Ru!9=h#(R&H%T?f$fWOpXVfA$OqHs zuv1ORr$$nREi#@fpfdXdNDYWX6;C*_0h0q~#OKF4o$?HM3l%1JA|o;j6% zW}oPI!M>8#nK>!y-Y)CUYRp^iv92(XtD34h54cX54?WSldT_fqMwzifF~n7~C1%yX zS@Bh4)}0yqkM768@dY0}9h0vo4LWzq62}jI*Ly3#yy0Cyv7IR=^ZdI=~-Q- z8iQ=jA00Q&>ZTq0vTXuYu9{ND@H*|PBh{>}j*~x^KAi-*Tt#2ftLJ9D7kcmMV6!Qv z%reJfKam!y8!s;G4YE1!P#t>Dwb$UvUW>jQPq8ijVh{5QrtcYHH;pD`UN-S>zvmcT zyW?|uA8S}B>sOnxUCyqHDF0^TxP!W7)=9zEaVohf86&$#t9}qgyIc2rir*7%*ZH{L zTRoHG7NgpdOvRG1#G-*sviRvJjwT=5-ZhSyc-Os|AKu+2&h=m#^5j_x4A4!fl~H+e zF?-6I49}U^2qx3LVO0up+>P#s$IM0rB|c`+Drl1umWMZLcy0k6)IQ zRikHDxR>W;|;C8cDfk*cDDGM_(e^Gil2BFNwTN&NZi%%aR<$k?oolq zKC=(|*)wdpUrC&G{Mbc*b!NqPMbS?u*S*bceqx@f<~1>zNubPtC+gdVc4NEq&Rn;X z4twV`r&iGf8}TybTZo)V{GN2`x#q6anBZ}aQIE)MhD34s+v5z01<^Y54{pCWC#N>m z$=2P^m&c?_2>9?uwD1PhX?bNo-j=m?Wc;S{w#mb(RtCd`O6_$9yj;7go7AG!C5mcwg z5J@k5*!)LRh4!aT^A{F<*W_jH6OLK}dwGMhZ z6j)_095cw$OS-;0IxgS-(R2OENvkT!xfENBLG;>4YgkTli6~2ST!BPN)j)89et>lT zN3zVMTiE;?{gO;fHH%S@U5GU!uAo=gnDY(ywzxnZDyMqu!!5b{G+7Und@J5j^6f~1 zot`CQ%Op*=qq=rS@s2o=P-PL?t6JtCTDHEUc3|M79&w>nV3TgJc>4hGsfy(1cCq6P$Bgdoa~AAXR4rozg_yC>=OefLnm<_g3HZ^Nyk9i& z`(`r5DM>D27AxDFVIR*WIesU{G2zG2gVym5N4wY3xqXJ}tb4~+bUF2xvql^RTg{U9 zSkQ34;m{kFG|`@kTD-}0JCy%hp6rCsIqAad_qWXXU%Pv~=z~)F=un~dEw9um`_ale zwO5zeZ@9Qx9g7S-BStcQKNB)(;c1dc0}kteCvA zsG!7Q&-KjkL=N@RAd8(`h0Nq0ZPdA@&fPaJsq3^k6(<&!H*v@?IukhCHZ|O*TG;33 zrtHz^pI3Qvtn%<3?cm-cgT_ugTjbd6HBWZ(*K|*pIo;lvDt1TgZDg#eP(1!XxYShc z!4|)yh7b;u?&PYytBl46HjOJscPDpwcwP9;KKxyCTV&Tj;G~~adv2{^o>E>ix_f!% zQg;EhbfNub!q8h^3lkDkCS9vwo%m@H-Lth#y598V7wvc62;HJdlgDL08=@2A#E`}P z_0H7m$gB-nAHryb=>j*Krhaff-I{sxb2%-M#@@&=Q3h|KoiyKMuVA>>&((5~wysmb zad5{yP3j_Qo@185VJXujLB-f|f9)8La$Z%r%#Ou}OB*bMmuzibTNXX0k1Z7mD!v)` zpyc&Eg~r|Lrlwhg?CqbL8%_)LE=Wpox`Z>#IDOqz?)AYCFGXeYeR(e3mMY5L%Dqi1 z&NXw1uRZ)Yy(w41W_#Dm_M%O_$|J6eZr$46*o9Lky4n@`7mAks)!Qw??Jo`Wmzi}- zvlbPKON(B#@M3w!LFHs6aW*MzL?G|Vs9B7WPr^byo5_BWW~H;`oQj414tEY~SS#JP zX=)5^ws}kU5*ronXOJI-Iexd=b>6GezsL;S*cf*8VK=RYhSqJv!G&-DcojiY_+dOnq zpk#45uJe89P`>vbVhT+m&VXbCkbXtu)*Nz8lD{|bRDSIL(cfgh{ja%1|bk=-S z9=E4=9Oax*@2vd8);oxM?Av*pFJ%Vbp6L_}rEJU`%`goxZueBX6|OS5T_)_J*JhE# zN;B~|F4>sI%kJbx;Y7{iB^;ja6MxI?@Luv62kAE(rbT0_4jFui(5;di^G`#wPu$OC zo93yw{dj2KIQ!J)yD55KLSw(khqvG2)XlGRC~TZ^)}yk1vdq9-<77~_zo0KSxM$_? zt;#LpRVKc{BC$cq!fyB4e>gI0Eq(8_+f+9gUagfnR{q3uQT91VdiU3jF-l)`_{LSG zy_h61cE6eT{c;$qNwo=QeXH5r+g2sK{j`^tZT_6tdFa;)ri?+Vu>7a`DgM^l$jdVpNYjYPVU zc~sN;)5}%e8k4p&j_&v4*haRMn%l|e>33DG2}!5y7*0KwJx{Z(P`sxw!SKi34DXPZ zcie4K>OOZ9$4WOlM~qcH+PoGxCVND|l00aqU{N-os_F)-z5171f^ggxYHxe7?_b zz`IC^o2i8H2)3&+wY><7cD*+{W+p|$c~|g!ZxGY9>h1)y=O$lIZnR+V=!MzI@i?Jd}oUt&C@=CX5Jq0p6gdwuecrO7*2MfGHkOmGrRJZgDmRl z(P!Omq!?o-?l8HD;rQKI#TY@w`YhFlj0xed+>J^+ore%p{BCOdud2}gGFE9->J+s_5_%`%0WW5rH= zayeLVlZ@Z6v-S0c_N`CPXfb~tiwRDN7tFknNk1HL{Oh6ZSGPQV^*-yI6L;ZoKtqN? z&)DSFqAXR1f~{BQ@LV>pi^g=*KO`MYPiRvZIFv%#$dIj>5f^*h zP+3#{sQ)o^&5I;ifA!|n3-c+g8T?;wv&_sIVMm1zUaM}2np3_|8ZRe*?LpawhPl&8 zcU$pSGHsk8&RGM|Y9;^qezy*j`K9?n}dYKa0lCD9f^ z4TevaDo*TQD@sRa`7Uz?Y4S)!m-Ifha&rhuEu3m75Z z=kF$72h7>*d*XOupP=i}quPwm7cw~~&X?EjZ?#I7`CO&&tRO&0>B!Y-gBtTlp;FqB ztvU3#9qA{ko;ROxKDtzUrAA=4aDItrsXP_zj8R~_juAL{sAK@mSAPJ&kcKV zZ_Ds?3*YiVD{Wmbp~isWOL6+K*YvL?)r%&C%PV>rgdJ%x&*Y}UB=>F^ zr*bH?$|gk)eYXxdcjR@z^TqG4m0nvpsPVJ*wl{Jvg;{O$r8i>U=Tma|%3c)rTi+WF z)l^QKIv6{mPF|xeKrf|GP1luQT6`VdMPN!>dZU&`P68k69>}_e!rw4n0$@AL$q)`qppUB!|b~ ziE`ti=e*eSnOfSv4_tPWQVV@zDVI%N$3FE^xzTa%wY_%WE<7amL4l06{0_DEsZ7U~3R4x| zjM0>fr%*1Rej?Q`f5Y!QyV8*|`xs{S_?<(sIw#-H*vX zZ%m8@ec*|5i>H#_Mlvo`ilJO+yx1)pc)i$T-==N&@_kWuF)dfBi%&L8-DJ?AR;Bj# zjWe~`H;&he#H-e}8-+y|L~nXr6~%elA_{lfCn6eKI?haGd)C36`h|;9A-<3S_(5z6 zy(Mq6R!_3a{-wp7k!dd_uM(~hu3XN{N-rrlk1X$03G;5#Zv8B?Ok!K?5#q(-gxkz2 z^qq0}L%mCvHn?xjcjIeDwXzP*e-dqHl5o`5)*k&BZejl@FR$pemaetXb!{OZ4jv(J zqVKS%AJ6``ymJ}y93$cz2A+*`}?b4mgEMJ|dJ{KKd z5S!>Ap}jhU)BM$M92=>;AzvuAw^WL*L+nHyO=msHMu^$(aZ7l#pE!*|#@n2rL$_%r z-tW_-nQ#qllj+RvzaNHqc8lPWpi1YO-+5Tprq`rbe9WoPaq}2mZOS?C1+h8d&s`06 z=q}dLuApq%N7kLL9qMPj=c1aTon92!B+F@zY2AN!YD9H`XM(E?S;ZtL+2@Oti($WEZJ#YE+upbLSbBN>9$kl8j%{k-`NOh<#Yq#oS4q?vXSTf+ zI-8_+fYG-5%Y1fjE}h*?tEIXP*zVAZunuZJGyibc`SE8O)xzR}aa!r~b5;&R>Jx!q zKU*{0yv3!-rO6q_H6CgfDrj)jK+fP*{cyU7P27#AX_|SpU*(1h9<^7!Ud6rE9J0{N z)_hvfxc2p4oeMMKDJ?5I+TWWVL6D-1~viPE-pNg)z z%tqU}p^GDYwFYdN6^|vc^mSqG{TPh4J8>v>?n6)H{nF)yQj<*rm;K*)-uwF2^5Vrk zhYnZl^(VcmtZAZgV-4+1?D%n3Vo`>{_U63AWn5-ML6minLtY)A6{3Q*`HpX%d+IY1wJI?zE-jo|TR6hz*tX zvlEj|3Fqg@;*h~~@;`FXjKf&bUkEH%C_R{<`qZgX=0`#*?mEV^UB3RcG_OML-ZQ?d z+)gjP#JcB*r+vwnLHXsI7MS96{r#~saDEqF;(=7Kn zRX_UoNqM)KjWzmConCc{abM=sJK~r6^1CC8!9*JWYW&wz{GnPd&QsOr3l(q4z7*~^ z_!1we^~+tmT+fDGc#j`DqbMYoyz^z=Sqsx0#aQq8p-*PWXKBacM=-EZ#Y6xlnr6c|+G^qt}0ZA4~b9`uF#-|1Zb*{oHAb)frIqGVR+yOy-QmO;0k>!zFsS`<^S7n#s6*W&yU1$|8BHIz)&_? z0;ld_P~h8kGz#py^!FQaXs0DK*jDN1*Z3#Q4NUccwEsuDEUkaj{O{-CzxR!z969*= zTt9Hu-_NeaU@%~Fr9bfR9}{2+sK4OvZJN+%EcmMZ5AE;o>Hn$V_Z~zT6b^;{LkqUI z`pFLaKbYZvf47doqQEXwzw5>S-rx%hP6+%1{yw;mj78!9qJNu4_zV7S8XAql{Er&` zHtnw()_+<+>1Q$;^vWM*e_93(OZ)@=ZW#`X{;M#creAs_|7`)`cf;@)++P8J>VA=e zgCl>}x_)3DMF0{J{B+dB@ zw+j6n&F6Fs^sToF$r)X>ri=q1pYm4p&)fRJlFHz4%5@MN4@vnO?&oh0){m`J2IFQO zB>W@+Kf$1o0F6;@pzGFeKcCiro1wfFY%E3rLAU(6|9VFMdIrN`{qMhcqrqrde+K&c zdH?nNOB(bq&gfsP(Z6`3Nk64UgN@YI%Yh%2Q0^FDIqP>Yw0_=yH}xkS7zsb|U*|?* zu)m(ye_#R1uOF)k?(2q2x&Qk6dVhmw!mnrIulj&Vt@9!MdM5pP{v{U}`jQql<~O#2 z!#V#Rxp~V<|Jqj6J}l)YF2Da__7U)SEPmg$ed`#Wj7DJz`_})u&-^F0{($|3{i6F> z9EqWkWzhr_qCN}>kHBzvG>oCKL<|DM5Rh~j5`qUBi~0`?OZvAy92QH4dEl@(GzLM3 z!;pUK;E!I=c(^PII9?n=J`4c`)rUfXF8&XU1YtlH92TJi&|LDr?Ev+WiBMTI3Qxj8 z7zzdIL+Bod!$bWB_~POE07k?jbczQOLb70S1VkT^aTqd02jnA?ptezDMj`1)7)U>Ru*_I21`XLM8jHmu^b8INhQ|!pq7fJ+qyvBv5$y%03)wg* zOTr^$0o{hEkA%TM_J;=2!TJNXMj|2jl5j|!k_cFs4&+{BSQc=|F+vuAA$Z_`At1|= z5PbwjB|=vKL&I$Y80=5clz{~IFAk(Huuj1+!XxOw(E1NL*hip&rVzTq5m888kwMId z`W#2b6W}ojFxY3Kabyw-?q3|(;}fnAk0l`F12KmTw*$~2>>iH==?f$u9&|8*2Obam zY&0I&IBXkuJRbJNfR2cV{3O80h;fc5kWmPkfu8>ZgU1JOx+u7R0fr{Sz6no6BXtGb zE^G&Q5)s)B5-=E8SHKJqIv|k|b_IF^F)j&c;IyIo2w=3r{Q>9@vJlV&B5XqhkUqh( z5O64jA17eR2>SyVk}nQ}Xa@lYKuBg__6XY`qR?=D0FpiM16xE{JQ4P%L=+MBS7;DY zuyA{UCqax4fFWhU;1Ir(h#_DQd_fKZ+bI!@57=J;jErapV1bYiM?m;?B5*HoAA!+9 zLX^dmk!>S@NCWGSfJf31afo0d4E6^UIz&5wo?$-(bdQC77{KtbKgHmPWE^BK6b$we6b$we7#s$Ui1HqR}gyS0q#8ooP1CK%zARbss8Uc-8FsTIT86+RT;QR&9fhhGa9msOf zaQ^}xSa=LlFgU*l7$Q#u7zq#AGZu#;{1*m~O9~zAUqB26ne4wZ0}K)4L0K|9HwDu? z6zmVMI1F$^|JDaE0vXaDg$~v;z(6O#Ww9VMKp2^fgZmOpqA&!-1>|s*i|9 zL&P$Gkzv~fD{eSAo>MR^~{f1fO9>7k>D{6yd)xj1{gwr z6b#l2=yL)AvU@-WGVOnL1uz1fZ-A5^1j7@R9pFxakTLT!_AO+%q2GcTFX39D(f(KYc zLC69|7qTn~VH+TIgmVEL8jo1_0T?hqSU%vJ5Ipc8SwYZ&tOmw_i6h!e2Aq*}@O%a| z3=9zj9bzpAhXIQeFkjFe2$=x}&sRZNB7z6#UPQlvMRqt=-~a~4HwuP<#{xhQ{uHcK z!uc8wq$=eGJeoWuwKY0cuof* z1!7K2!QgxYU>G>&QKAe&e^`(+KyeEP-j5)B6TlF@6AMQGBY^mr!1Es zbO10!{J>&C0D<%ZW*-O}0(mFGHvtUJeZW8^Su4a}Y4`2twZ0cj>A z9}!Hk;l9L^fiMU<#JmEBCzIfHJscT>$Z5dB5(*J3$XMjq2g{vs?4fv5gnuD}tOjZa zIMW3W=fF5JSQdc#1FRe(#w93A#6Ug~EZm^rKEk6(XxMMyL6m`G1t^P!=e1yY2rRVz zt5ZM+0yTtzoErAUpez{G5FMB;!2T4_f#YakIy@R)j{un{phVE&;k6(@M}&O|9?bk; z-wu|qi12$7Ku1PFb_F~lc*h0t1@;HqDd-^ZE)ziqf-QsrbB5gQlR+mT=#cFoqbP5?{&~Lz_#*ro1w+^$aHj}6 z02rJPfwEvijo^XEPbqW=y^w)j!Q%s9a6AHKiSWFKg26tFf+5Bh2p|8UD-yyc0UZJE zUx2|r8}I-vL9`dKeoCRkL9vm7A;ufP;PorYd&&Rl|87|67@6u@ZKb?$Rxz^E-%5F@ uDWq&+0bY5ozZn&hF~4T9_2*mJ^-bw?tZuBo{{%Gw$G-K@q0@>|TmKg+P-N5q literal 0 HcmV?d00001 diff --git a/2022 ML/01 Introductionof Deep Learning/Pytorch Tutorial 2.pdf b/2022 ML/01 Introductionof Deep Learning/Pytorch Tutorial 2.pdf new file mode 100644 index 0000000000000000000000000000000000000000..591beb3a158324f8daa4ad732de3c115a22f0a23 GIT binary patch literal 1087316 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

    oXj_pgG$e|}Fs(1SMRkC{#xd<#^td{O_a=?p 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 A0?5 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 f3 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 z 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 z zdx`XB>^}`xq5s^@1pNK8ij-^r+2cbSE)wivhmqQZ5WIRmB5b)bz0mva9OCxJ#aSOa z!rXD!cVEV%weBhuXTDaKFvZ0{E?Kj!6#H+Z`&F;qEX>TlllbW1ruYR2CVMZx7v1=MOO|rR z6~owt`vkp^HNdN#6?s$kqne-Ii2YVcEN2I<)B-&?;0r5aKJvq;R=^Ksu2Qj6Ps-h8OLgmh{=X z1Nzc;kqwc>`fl`Fvs7WSwBO5FQwCOqL&;Z$!P9)Zo)Lz}-gM;ur*pe1Fi!dB&NoW*bbiBAE6OL#LIT3PKi}55?r&22oL@dJ_{hwy8yf7~fJyTdwCVenPY6YtYS|QR zlI3@{b3xwGYxJkbH}gyGp^Z<}I(?3REzn`zyMZFyU@+u-lSslufQAGpk07(Kfnc!W zP8V3WM2E>q;Ffo?8m+xp!=B$Yk)%4N4JLjxl9W&evt$@Eb}1cQ7uO>$9)w8=u_5o< z#UN)EaQ5SS%{s|>HRm?A%H|8xGb4ukR_%+)(S2}&#Ug|EY-}9&Vo$h^qh!`hPWPf! zYqQCq^-texS*|@_e|`dNh4t3H|33lND6BhO&#%0l^-v|vPZm#qtrblA4@qyI|BIwI z!)rUkp&$~v;XrlOOTu%!&hYs<{0nRg)NRaUG9N{Sd}t2m)j#CR?c8riy0v|6LOVFo zQul&>hwpb)o~MRSfk5j7{2j~(J1tK_(#qNyRg+NSGwV6>Nvg^nUkWy7jZ%~YgrC;m`e9_y zg3FHZ=t?)`tYIia%eB&D$`EkZiFVDZIqjE41umbwf|v+IEB|k&c;9__8ol@Ga1Ju? zgJSuWlOb*qr5YDVhdO3xfCAQC+=A3XuKvxxx3f+^LfA12s=R(a@NC}nB7s_ohEv&9b2 zjX5{u%zyfQ=$cXRV`K9b6QTQH{Q*vj$(oklp*Zkneb=HGq1$^wb}}JU=WvIMJBQy} z$rBo#j`xgu6s2z*wKXz?{*Q>F|Al{M`fCD^67B&hIN(3zF|Wb6S{)^04r1H75_m@594tK5dO;@kxR2d~K4Q@7HO*p5!b+SzEZ zpJK(Lu}dvz;xfUD-bw}?5##Er?~@U*DhL@2p73W&=o2tTG4eN$HX`~_k%(uRG|Q*2 zcXIJR^B6ic-maoP65DPZVxR}2{ozq|aNtJpXI8A@ek-Bu;=L@-UUIokDMn=W<>_M;KK*7O&{q5}050glfHsww(}j=ZHR7UcPf`V`28w84h@ zxWOG<D$4e0c=)(Ie0f~Ui9*jc+(B0Yw*0eS-h49#=PD|$+T0K|!82YTAwEmJT zAq5XWcbUUhNgXHAQ}`Ln6v|-W!<^ei|6%XBRzL~Mij4`O6SMGUpquyF& zw84Dnw2F~T1SG8jy_5iB8k>;aPNSYz9@$@U)*Gjj)xd~+pzISBWC+ZL;}RTldYN6NbvZq+J2!+J0iWl<=v6C%$U~ zX?_hfNpzPwN`ZQo+(S{FBiG^lTVU})@xQ`0jf3vj58ixaR^#}Td-`kWDfyOHkTq3Y zS`Q7>gS}`zq~?^rRO^I+a`D&orlWHLY9D0FV|BcTN*l*aO|L<32lNEQqV&n{R+M3# zQ0_gSU-KbX!>i|vH0~Piwuvd20Qn;xW~LoLxM#p-}K|L|pPk7xl6cDa zdzlDipNf|8d_Apk@km+XbzhHh<+YY{ZApo+`t{=52Y1VZ)8*MRxRHTI&`Kz1VjO*s z8ee37fKEme>afcq^vRr`s@0%mq}2^kl(t!s+l@VK!Jnq5)nDA7#J*X4gyuvq+aY-g zi(Oc}72b+$Rv%wq)f6gWmbW&rcF=Kof9_>l2nLADz>a`{<;d*SWz`tvb_n77z-(;v zYsdOD?m}$#TK=VPX43c651uC&>{o5tlYEHT2~=mw2?S&SB{Ly2p^Z1|vD<^@$7u3=Aesk#2RaMKH9e|A zasbXL*8ECuk%aiKjw5Ra_k`RX-G(RF)*jf20ZrLmj{t;o&*|+HBtW#C?GZ>rmu-ev z&&=(Wa;q8w$xYv95CELTUsz6$fp{xFyAR;exSTR)ypcyT+EbYpy?)d;Buf z!&;@3@>>o?z^)0>*^`J$KnLamUDhWFhml8<0;WB5Q2t*J(0;qRDMI)@Kiz2v<6&x-Y`O1 zs3Ce5TQ9}rIX@Tdzxd6K?ucK+Wc&YAByZ4)0O8)E5FjH_g(58pTb4&MaokQg+-JR6 zd_Z1$8xYGYjg_vEv1WU8{JZ^d%gL^rmBZd@*+S9i0zzac0>kU#;La&Z$sX{i!XJ(vzwz6)WxFzka%9-EtOQjd% zV$C+S$b(&qf2clIgju%lEqgSPZ*!|@(vNpJv!=VAwC1Fa!STW<4FJj)uq>a}!G_qi z0l!zY2$y#mn`TStaL>?LlT8>HlJP%fCngcc%mZ^r|LN8ftQV6zPLctXiJLrA(UkZA z%O6_f0G}^SYO{Ec^N~KQz_Kfyee;r@=aFl%Om_`yfJ1K}dlk3<5(h}X(5q`-9?-7r zo%FC3Eof|ub$<3`u7tN8QXQo@>_|;wSTE-2T3r+IOmS=K zV2_oZH!H4CBGjWtO~JVL#-Y_uJ!u8KY)Q;*X%zcYl?nF?(#^J_=Pa>IAZ(SI zihH9Q&G4?vG=C_M1JZ?fuIaAcU6lsk+-9MY_Yjtz4}4V=rAJ}*zicVI^if@CgVh$X z5P6QsU7+TBLAn2VS)}`6Z)00qkT^$sL*?@#EUs+#!Wn%Y(_Z!% z6IqLVe4+b(w^{-j{$jv}`SyD=RDH1`OE0wHQedP;S3c7$tE~#>^H`A=#_`F04EC|6 z*JHB$N{fmYj0|4To!4iBUzcqN%wEp)Q^w=BN)Gdw#9r{oGU4atHCFm)&cK*~;HUk; z!JUG+@zb7mh%F*Eak`m;X$H3b8StMTGlkOwl)n1i)BYnP`b6 zc-vhIru)H~!*W54;cn;jm~*JqSCGvRI>*_!;<_XmLd*&^-=_V`&-+_V<7Y9{82BJt zVh|j^&A0J;`4oM$y}4ziDo+{)rsq{8_Af}L*YpAGVFRcRwutNbgESrAz|f-~tI$f> zM`F&#*?laMj)J@kwMqgH{1{!cpP*Eb*3;NJ67wD9mNRfAwDU}DQ`C~i?>)mupv(09 zJSv|)1tnNu60voSDPcse&i$2v>m1c*mA{Vmt-`1K4R=5J3rF|9TTMx2bsRm$2hRqi zPjSHJ>S&qu*jc8PGgB$;_uWW~Y-Glptr^0sH`^xM@62{C5s1ZRS?7NQmsTsRLMKK5 zB`JQnj6R&>QPd52G{pf))20N}e_iy0(6Vo>r8_ddr<^M<@>~i&p`2VR0;r+V7nm9e z*<1Gu5HSoCv*ZR#v#U>6z8yN5l6cZE*Dr*TKGjlLhXYvtCXyRDg{ayK7w*t;-8lWN z1ScAkWgJuzo;bX4BH!UntQ6bRWgD$4yXF@Rhyb;-V^!t*dpj{G3Clyyz0&-p!D3(I ztLyyW?uh2g@|{yk17CCAS8Z(e0vB=tJzdxDq@M;fE7Ia5t~{&U`()?)n0>u(#U=mn zFQJjw{A6j0JH4+1MoXjK^eOTUQLH4xofaNc+&b~mLN_~w@JYgX@Hr!MB~D1JOiaxh zlDrw#y&yb=^u@UgAZgZ-Z@Jg1XJ3)VvJ1lK$l&E-ttWTtL z!ucA=PT{IOtql#IX5VZF`itHvPnsX)@DP6wzKmB`!Z~%VbZ5k$N^J`Xgb&yQ zRYFZu@&LscLBR#Y-SU1=#dCW~P$05@$``qnGJ}rEyQVIla6H1`c*iqZ2G;8o>^3^N z5zdYy9zzNFwmBzNHGJ^*PgQ=ZdHkHjnUD4|9-W;AQy+i*0QX7}vAnkY7ARf2RSnmoVk=-1$!YYv8;_ysMd>BIIv0LxGj39P7n@g+9(U|H!(D5oV+c`Umx_RCbm${l$k~)r2>K>iK@rz- z*tmNlOV}+yWA^8K0>_#5XQC^&3hpr-;;bz@#FjF(*8`$b89@$Hiev);L%Y##Vvjrg zPWu*e$fwwOaO|XEtOMBEIaM_PAd`h_6P|5(Q#Br?|3$FV@aP1;N1aBezc$yj)dlH@T6SFE zzI%GDsqmGjQ794?Gy;xOB{MqB3aO@3e%oO~S^{i2wT3hiM^xx zEfnnybss63Ced;OD2CV10CKAgptj`s=`86g*;uzbiFWTlh@aY~1CGa34E5aQ^F}K}RW8-4PhYS%Zw0b&;G1yf-@@R_k5oP6)KM*4j0?@g;5X9w!j7tVL)PNvBy zRtG#&5tNn$OkLSlAp5>N0y%xZOtY#*Whdbln z^-~!&6W^bfe`i<3k?V$;%n#ibg90N}mI5bgJ2)tB)CUX!?8S)W6IBzpsN07S!npPc zrb@T=)?vT$gXL(A?5Fn(8WirjT84ukV?og>-D?t|GtQlY3ocIzLQry90$sd~60@D@ z<9B<Qhnd9Bgzf_XIdpnzGkTK8LcQOij(*@&RL;&byYAs;hMO&KY{G9hoX)N;N z+!>a#OZPe_)+VjUIFcP<4r*mPS_{^9-mBNFcONEzH0GWO4isEOyzmj4e$-dIiqwXcU_ zIT>K-r4&Fd+g1p)F90iR{S}M~>E{YqYiS1gsCy}vV2z0ufp;#>HuW3w6Y#CG-VdMj zm8}!rY?;5t!qr#Ki!rALsPh~-RLs8tC0yivHHVr$ZHmQ-o6K1@jXtQjyynsRT*^wr zyyN3B&BwaD>Yba(pV=0$1Q$Ptv&)!A4+VbuZ)+#LKu@&?mtd$V@DW+`ZI~$56Ac*q z-dW0R;*_{>x`dtKtoshPZ3b4kGGebJg&xvb5uq)a4*+p-&_!e~B5c}Jw`0jtEBZ7( zn^`9=Wp~;6T$uar8}n}oR{QZ!)6N<}hqd`P(87jXR5LQ$O4~>r>{xx=n0BsOEsKo7 z)$W5CEe#br^EtM|5N3Y88=V2DPZ-uJm^U;P1tFjHQFJbf4={207_H1*pfK+8{uQz1 zrkUbPj!rGc4QL%?>kQBoD9hV6;3zVCOZK0&QV9>RQRdEQri}L5I(~b6q)g;-dw}9& ztId!Y&_;qm@LS__zO;nax33@Eg;P!sa_J2eOWb$iOS`W5Lvb&6MYm5i23GxjYb)r7 zR`b@LDtC`SUjDj3!8w0_7pUC4(Dy8PGjd71-{UN)KK*5RAkK#hTGNlr*w=Fod z^iG-X@PKxh%RNEg6Xg{mT_&uKX)V=z1sO;4fP2EzA?)Hb*l~>fyxeD>8HKO9gWu+X zlCm`Yt(MNCMCpI-w>&M6u0f7l!Y{N0;6&3PT3oVg^?t|hjCVf4&-OkZlwpiDKg>SD zzy6Y+)&aW%XImHue~YxAtbERXpe-C*D9Siph#PFDX~Ok@{SI80A?L1y-^U3itDIkG zz$t#Hs$Apbb#i=G=Xa&Mc$nXefq{kL9%0_qS!Q(ZBT>0K^j^%Z*W-8n%Gs{87!OqZZP!%!9!9(V6jlFTkSy~7Lji%7Hyu7MdCyk!y&W>J_1y}c>oIT& zab0Vd(6>XKmXU5SuX(S!5cE520F@Ja!%z^(PWGUjr0RTmkQRwLoDsr4W#eqDq4T=b zrT^Lau-q2j5Q#+LNv#jFtmd!}-|_K0*mGsUnbY1HQFj2(B< zL*3xwYkxm>gM&-J`dBdo^o0G7v@Hy{#j`+t$J(cwJnZv^U?25X=6ori8H4iZiV` z!^p>Vy9#O?w&}-xcdxVbTsWqae$IKq^!+Nt4`4lb0LwMVHxtp!RNe3upbl{QJvnlj zrY+*z7SyOSn^&(mq!;6KK9A?#R&qI;;dMso6`C^%urdc>c%gh>sg6WuU5}aG;HfG< zZ(Xq^r@lt+j)=GF@X-OV?MmvJ#NGw~ikxx@1BbK}q^Op_@8oLJKsPOGCHoOZ2GD}-9z|rP<&G4?w#towMp19p%WMlFZZYN)_l8#$ zQZF3pcmbl_BdX9CofYsks1vH<{3gfGPP|lxTg3?8I?w(4AWh`NlFa?k_=vmwMpg4r zvds3@N za!nV+Qj}Cf1+|oG+B#2`AxWlr$IHOAEyh5B>mhTOho5EEk1wn)nqSnoc+?UTd`KVU< zy$YW7SN@in{2Ip=Xwv6uY@^xmlxYR%SJw^nL1&5v?jvF3qPI!+KFWOX31igb za~?F=b|DxuJ|zr7_$TQ7a6tRO4%_k>L+=$T{s!SLssx-W>I8kzX)%eV^}n(Ao5K77#>Q zf*JxTp4(^koHOt9?%C(R&p9*ihx2}N#z~y`E7yHpYprXoraB@$&9>sXg6grE@;S4H zBGadtGWqw1a$n$9kN!`-n`fb4(1702`hl&6w|sBncYiWtD0$kWCZN*Un$xC2>>)M$ zd`ZL0En(JYPg3C6`T!cQ&?3J>5XP2*DRY{?8+)s^I{a7&!6hBPBNx&D3K$bTuhEC9 zi5kfK1K~B4kgFwcjDM|1o}M*Zl|8VET00-alyi=jUs0!XEQ#mm36KZ#jd};&dS3rB zfcxBTQg5Nvd#Pus$3qOeYB#3QlRKo%v(SsEFW_!i4#v%c@)M0fNl|#N!J&aR7jI+{ zyO?Unl=H=3$cC!N-Zk0<*-av@CYQ`n&n0{wY z^3Joy+pp@*>nNlpw%wNJN@4=B<1OG)h9M7)qTTRQ(d`T#;^xO{BDqNV%dd~uZr`c? z^!b#+M)`#b(;U=w36MtFqkuD}SP?;EA>1TK@mxelrun}mIDUUXxO2KZR%|uBnQHdX)fOssyzweOQG38IsZNovK zbp)uh1w$Hn9=zO-i7tzv;<~l?dVk3}zK77fb@J{5KdZBrAQC>aTaSNyW3X#blHv%` zr!d>9jq;+?xJZp64X=ZOkQay?7A^1!B~NBKZwL%tg?E1W{d?tYu+KXW^-uk?GZ>AL z?v7jwS-BUJ7&(yXZD0*SMWb63_2oSYm}#3+p=>)mKq5fn6C*HiBq-Sh z+iG~MK4WXQ*&%Ih=(Ca#;)9iF|APk1nS>WImxnK3<30l&d_B0~NOg4ZNG!A>Msyt3 zed&#{`k2adQU3gW41E`l2Q8J_WWy4CV|QU*Lc3FihrtU*IE%8!dmAc+xgu`U2QE}p z#UI6I=B!2D5sOGxU?u`_4hNJ-?p=JlnMjg3H!5|+Zr-`;eQR+mX7h|pLo(9@`@M&3 zMoDKnLL$IPlS_F`Rim9jh-_MPkA3;bmCwe@7pjhSDRHREVL*W?*1 zrgN>Cgr+E6Blc6>DRF0-eu;WN!!SrSH-LY+o$X3G1Z_PvNE3)?oztg~7I-3{5RFXy zsJ=15K+SqgbJkQV(s_!ob>^F+-reZlf+Moo?#@1v58Hq9^+^k#e#+|l_cL98I&6CaHd86zBZ{~A#Gepcyl z_wZUu^;AJpYq{e4iAfC2K>oX;HloyQH9BB7+p>)>{1z#?cSkH(*5woNa+F_Xy|m_o+LRn6GI zj^B$lyO(GJXzCUtL$GdtoQ^Y;rXViF7{7I%D=U8RUh7rYyUyARak{J)vX3DT50Kz* zLDHVWmIjEd@Fj+{?UlOj>t;A@%zMevE|^g#q3OuK)B20ir3!jURq?Y+!1}Yb9=Tyg z5~y#CmnSChw1&bw@eA3`N2`gL4SV9(so6^w?;K`4uIetS?$(~};p82AfBNn4*-bcL zgSucb`@0>336g3Q48cCjksffR?q$^A*3#S!g=doII)txXo=^~=gOj2~o}u`C4n|M; z1!D)v*z1NYAL~aE`O4bwt@Jas25XB<~DTPbMEk` z4_~~pDVdMg-A}TO_T>BaaZr0R4FoX>PYyhZW8Bg|yo3{^X_B0=OPB*5kG@ZBJ?kUa zK3wXH%@Ng7`pDZ;E&&W?F*G3ZAeYi#8LFd3Mgw7l=p+Qqq(C(?A~PM`w8% z*RCcD?{1%kg8e7xhB*4c`X30}99A65hGFjr5w_Ww-{jGstCD?5e>3koFHbL7t^6}oZQ-V0e`%hC-d+4V7&J(6~_2qlUT83}%lCZ@E zd<}vw5CRUNV;~l(9zsMULJu!f3`m}UmFAQkJNSN1U~H>uyE>*Z1va^?AiJ|`*x&5t zz0!3dx0)`C{&$*ZMW(~~1c@z?X7Mf%-w`n4;V@9HpJ^L#dI>pd8K74K5s}YjMPCHx z`@j2JBv8^psZ1PYs3RYcYCCY^G~>*R)g;4WgAGAZztqN*HmN=1nG2NpA1vp2t~v)V z%~Pc1pSp~^Nn1p>XRmu%FrDfuap=(J6MtAL_c6AB1!TgR{Z$KmqCP>*qpQBucHu;5 z3PgC^YhpmOzEY9JZ4P(n_g(cpJNm}Be*edpw4&}%pQ>DIo(Yh$=t9bDo`t=t0xQdgw|EBdiFjs1ImV!&egnmi zWM%24e!cdx?1Q&`wRK^Y6~RGfe5MonNk*)8N(TzMi}we?V^&0C9cfZw^y%UgrE0Dc zV9}OS)h{V~jBbwj?-q=ubNYSgCz@;hC?<3ZtciIIU!}Hbw1{B~jGMU`7<_^6$9|zo zPp_v-xb*E=mlp+zdr&1wN*)iI4$AyO`aCcnhw<1WjY)GwzI@@h2AI ztjT6aF%7c7*}NyA@aQh6qJMimmW%@iY6PtYMDUz_UUimq$gAs#e_OqDDiZZ|o(R0r zy{a*Xr;LIKc;1UsC=5cI_uQ4!BQy0}2=jx(A9yn!vn7oGwE92WJmi10dAI+wHg7C* z!-cBl0jtj_zHg|Bt33T>ShG8kNS5LwN1>V zF@yaci0=v4g>}Lx_VdI-u z44_I#32R%bIVHd%-b$#IN2dQ&S7rZBK-0|c=|;LIg-8jYI-^Fg?8p;dpl32P9Mh2C z=r0WPQla5hMBPs7h^1iq`YcvIp&js*HVKV3g!xJ1W|SW3c>eKxoQI)k?Wd0o&rSq+ ziyrPY73NG0T8o3wvOqU1jM-Pg?sC^CM965p@--5C~uRfw|>00Lr8!W#pFqIpY{){i*@bgvv~=uWzin+599^{ z<|yhjjMEP z2s#GK3tP<57YRf!iV&Tqt6gK89Q*CKgr_C04Dmhx1Ic~8!`-1t8NGqS;WYK86Rj@i zYL_tpj%ew$zVvmrg%5%84^0lDYDUKbto+C{YG1GyjSp;1d~Qpn-s)?+wD*YJ6T}A|EV`K6aFsa-d#$4pr-u5z8{0*Wb{YlD$1B zKno7+>R`xH!U&~~opWkUX;;5iH@r~Y+H%oxmrJib^^5rfbLdG3gbDr*MzqCDN!rAs zB^D?K`7@bAhT{2gE?0M~ik%?iTt4HUty8#mN@TkZ!&5bwW|3MHwmzdFF@4+9Fa}2$$(O)}`E7HE#zNwnJ4!T6(a#|7 z*82)0s!wBOoHYJGP-iB>@0_3TPll_6=0WWPM;V8r7h-dHSTmiIHoEcaTRkT%W6IQzC=xSe9-H=3V~rW zm&$D~T}#+>p#xa#pW+L^%l&@_7~uaMe4!`$-z^65ML3EA&nD{?OMuobNvwdb~yd>XO@R&4W&l`cZWapYP9bOzCGm83RT>S^-~Ei z^Y&3?AeTx}T9}{0GuZ7(j$|}(bGseJ^do+0n|-Zk)LD2zYd`XtOqy)+K_BJ&hSbhU zX65ep?9fx7R}4Z;V2LR_{OH!nanuB~Z-+5t_!(+r+r6=uxrkRx`VC-yYo1AUhA3?58cL3I6PvSO!>n(c z73$X)kZIpvjnzNtdSxfcEaUY>PJlR!!6?UtHX`33nJGTLRBPm|Bm=$nC$kYV4)jXi zM5yWHibjQCbCSgn;!%)!s57T|^%k~#a5FuGYESc{e8>_NgC7XIGHo4U5}Em+axZlz z*8AIFpQu-SwXQU)@a#uy0&D>{U)`5+%9yGYc!1iQ`Z#I3eWZ0lTB~i^j!)NHIO}p( z@3*pt14_@p69ht5y9Y_WjK*JRx`^Lds3yAQ7Jius=AIASFM$5dbB7@Ex;9-NL{!*K zoYqY(Dd9F^d2|Rw6c&Js^lu*>2{nNJw@w+jAER}?JOE^d!D3RXH?D#U&-3fV<=;8x z2O65&IQ9I$yFK%hi5c4V_E!o;gIV|=pGaDb$P8Y}db`h>BdR?seIdeaX6I>trMI3} zr_w&2jz_y=xly0tm7^4R%cHipluGAHMmKTunebJ2?-=RebfaCqDOH(`dlMgJ{9!4& z5Jnk(Avt5p30mIqwEjt$L1*o|Pm|0n0}@A${y@G?2ss5GblYsyzXkI|$1``SD0#q% z$9y>+|8j={@AOZJx%2hGlKq7bW&Rz0 z%mVi5zUg}DU1zC*c|0pu$?{F48(69XO)k4-P|<@g5MvWdOEvP;alO`fqZ94#l@JDy zg?_XVlxT<9z)Xz=kh+wh9<7BvW}6<qa)^`r!qBu<^(^nF;R3ntw}WdY*5zn`ADQ zQ%Rfrd#W|Ed4as!PRh;2^&!!@`D={Phi!_c>0FsD=363poR}w!O4xm9*c_DpiXnCr zd4lBq7X9YFLwZM5Eq-z!Wza{UD%|C1W9+eO?gE@g>YAH7fhW#qunQ1C^#)S>SKi0hT6*;KZx>Bp0n)eLWz4vgKO zXZ~g%5T!445kNb;wm$$zI!L}T0_2oD3A@f(q<+ja61u<|^~3z0NYwV_luA$Lh_=pr zNqeFEsrSvr$>@_?rQQ$9Tq+u47e0d5*L?X(SyD7t$=hTj;bS|8(Y9Ek`8Lxu@LJOu z(LWa&Qqbw}rr=$V&rc@)&JKPoaF+(VRGu?KY@m5(Ri`&!j^Po6T{e;?~N#g^=Lx!$iGy2hEv_ccKX9KV_|CAQe*7;d+T?FL_TQ%upW= zF4hI2YCh?}{52w?o%54?%g-4R)vC$O8-yKU--h0r`Z)o7{TsW_mwz6W5zY(JhDN!!s4ni*O!Z6z(Ta>r}-t1`%khE-K{VU|?Z;9=-mHL@8^6JS*vM)7Eh zIU)c(9`XmW27NibzHd%{%g_##VX&`KHP#&1+Th&X$L-)&#Lf4{vKbEt4zA?xAic!v zo)v4q(A(-F)uUx}-@GmIbjX>jEOs)O{Y@KjacQ^;qS*=emZx^ywh@_aOc~K%!*P zo&C0i%#9%i4@sc+<_|azBI$*AQh=WO&asS9AAQ=3R5^)MO@T4spwglU#1Jt}{J6Gt z47Yy$aMcdB9d`e@$H8rH!x6R@-*~c91n1Snk31Rg!2j2HD+C3Oj(>{YI$(*`vnth? zY0pKkR|$IowE@t`>csYWs$2-50sc$awsDuieojLSG0kQ^PBSiYbg$W0O@B92QhQbQ z#EON`WH<=sBpg2@;gbcSjx#tDi-91Rh&eagKf6-yi`m~z`l1ec)Z)Em+@{%5z{Vi( z85)0AIEyq1Lz*%q?MDVY4_n&N!X91fIfXc8I&&A^$SzF4>oC;NE&L1#j~han;C9vwvqeTLVWlHgT$8t2D80R91eCX*h_Vt+(oe#{E(j~I&(2U$_y*2 z*BrDZcgQRsCkPVZ-~?DROkxhHLwQ|jm{KwsnS4TukSjFsIX~r5h3UkZTY<;kwH;(m zB1XqmjseRV-uN)v0Br~JkF^a?-RGo-%Lu;w z+I(g&r0s=SQ+VbQhqjpA_26N9Bm#J#q}{?m z^fx-)x(|=`x*{T58TC+GV>fN-{*n4U8SewtnY0EN*S%R#FKB zcka~;d%K2)qhDUc%I*)b;&}oCoJrobE{izMwQFkzU2@$?&hDsfCVr~LLIQf`aUH{ zZhEdsm2O6Yb=f=Ih4_a9#D=!BtRVgf z__-!|DC#afC$CM)@o}v1-Xo{TGg%8s_R~@q&#^iy5q>Z#K$!4xwhivcDm983Na4LK zVYOb1b%&A%P7I?-J$piA01Jj|2R?yv!vk^TdtVR-i(M17$=q)httGmhkqwSHMZ-;O zJr&zrfvP#6CTx|hFV?ofBxug04D13=)V{|4R>Qld39menGti*fBmtSry?V*-b!0h~ zRR7Cn?;4b7F+bU5O0lKF>}gJ8o4k#-B;Lc*7uTuX8XqQV!i0a>AK2SW@K()Ry|cjl zjVBVwa9^lu6d@QIG-FT4y=y`rhBm)^y0Kf!%kD1r(BVIRn#Ct{jyj`T0WnAeVe zMj(RUo{FMgJ+Y(NX0yAL7;{|KI@+CeXM%GTUjd>=3zl%LHZl9wxDL4B56RO+t$ZJT z(U(uEM&M469Q&0-jN7>hk#Y6mg>Ie-Y+Z0D-VKOSD{YciC}@(6wO~Lta@zB` zMd}Foz{BIU&m!mQ7Q&fNEIyM|YFFAH1$X41$~2ZMLghc!*Ejg3Zn?ck;nP&@h%p~i zRFJPIf^dg&afCO$pkq*M_t918P2NR#M6T?Z_v2FSn?n7X9eKvOoK`wzp*AN^)B2BG zG1or|AI@w6MNf`x;~f#(u9d6!srHM$XOUfZ+S&Tq_D2p~%5IADZnbeNY1qZgKDY;D z-?GEpj{;weGXdswVB?;PT!`$jg)Q zK9ddGUV|cCNI%>Ubp}T@X?h9XhJGr9;sD;toD)b*!hKX%G3B+T1%gFL#H{LkVwQQ< zEq{$lMOER#;1{)OJG1|fR{6G{LOC$4m~fORMK=ovRHa*Kf*ER0CC#$#V%)Nqw?pdI zYk~9=tZHwQ8|kkN`6ySWn}J{p8B%m#S0LM*IOVv9a?lvK_efg?`r>)o;1fnQ*y|Jt z#CG5-qC;r`1nYCw#?E6%O+>IyfWnoX84a<7gp)$DKmYpYXo7#~6!e!PY-jopWIG+~ zpt^u2Ljy{-pjaVD)`rp;fs(15rk7u%EvQUzLmek`S*p`s3r5U8VO3{|Z52xiRNDmO zi3uE_y4^6EcjGo8VAGyzOmibnQH%+gf6;-mYmfi3f#LVt6k$DakC;!c&xINy!InMq z7sEp|IgoJ=k7I~XtQXH7EFkDr)$$#&zZG-f=f#CbH-ys*ANWR|S;3d$;uzW#1n3Ru z^fZ0&vnM+<3=^*Yg{Awv@Uy zdF0#iNkpXN(3aJADEFm~)9?1=zLY^cqt2`^zv+$&y1{ohDvzfZAxy!y13}gG;=t*S z-4Tx`Uu%8kW@r1}s>oKN$a)WGmJL^Q`Q_Zh)bzIw%Lj#V+ayvB3rqyN=V@|62`d;6HBw~A`5etP)vfsXY z2sXnDRfo={)F)hG>v3iRZ=!UdrHZ16p#sgKsc!5gv$BI`)g>d5F2xEbc89Y(Bz^z^ zJ+=jAjo_oEYp{bT4T=(BJd7bVSY))Ac!P7YL{m)8HbZ!@kB=Y(IU~Uo&o*Y;0;{Q| z@%JvNC83V5OL9}B2v!(2idx(5Rr@xdH&)+fJ#3htXjY{qFi3G5wKci&xRYU(a8FKWzs_yxxnj7ob?K9@-(J~K;hlbeJ*gDW+G;MH!P>j#H=;#Ma zR#1+~t~cLnE}p9K!?YIr4$!{ zBZO==M3YB6!j(|?2pVGQ+9y{h%gv~ zG$K~E1~i=}I@bjm{Ek?=T>Y)T;=8OPA>$ghE^2E1h-ZSm2Zd@gyZ7K3p z>p-54sgSV`_D(-;?EAkKe{inG~vbh1=2*oxiTOKrr6{1>FG@MxFTb!5Ga+ zDL#0h7P;+u4T5lUw6w4pYNO~c`&iHHp%PJhQGP>!dMB`<h%H_ya7 zY8xL3*B(w|rur^Sbj_N${t}?efs%FJEovSJREuT7W4~6O_XiTRb^AKdmBav?FPOnj zCAN-&c#i<$cAM_Yb6&awzpEWz->wriIIY!i&1a}2)ilOvA!-F5gkC6vifO_l@s;NS zVQsZ4?(dN2nndrVN=>c5?Tm8#ROtJYaOQb{g|O{6JdHQERSZ8hc=coQfv<*wW5+N2 z=JNKEUYh4dbBzP|iRc(~{7a(=(WbR#OJIdDdHdsHfRn{tQ9;89_to{Y&`?dfE%@m& z3?Llh$Gb)o(J^HX+gB*T$j9BwzID?!DJ(VFv8&5{DGD1YMP+Zs8SJ)HSrg)G6x1ou z=iArBx6c?-)bnkZw1a)f$@+r|$eEa$y}*TtuT9`h3O`}ylNb1Q2^+Bm?f29k9;;Y& zrMjyT?!e}{X+_LGg%}*{#Lm%0?ad&PP}`Gx=OlE=zx^CtE>{a0T-2<;cX>$BLMD$n zR49&-`p72?v6v^md>f&Ffg)U4cH-OjG)u$zX?(Y)whv^~B^; zF3x>}+Y{wFzGjE8-~M#Pez~qDbqMNbz`N!HZ9LgL}s<_ zn?$+ziJ!UDYQmQI{cSiC^fF@t+!||O5sBsjt4z`DP)>dM;3YNI^~|(+JHvD_XQye| z{uRweGATmgey_j{j-DS(1Dicf^29VU2fbYXCgGE6i27n~X@Oj6pL%s?xe(dONAZkT z*QV?72Y0t#RX*W>(09NM_(zf;hLz{v0OatP!Nd3sd(sUH#@gszBgW5})?)AzdEtGw z8wNytm^5UEC7x4q$YP%Fgj#&oiE;`2Gu@+19~N$$n&`4qq?Ajmd>D_y%R+b`~d_VrGP<2CO+%`GI0)|jf@?58@f8%i6>*8#=V zA@APGm`$AX)R4DMb9MX!u@I&Uz(cT^4$SZtQvX2s8SE5qY8RNR{Zhap@4klyNO^kT zRjqg5Hp7RbDqi>4w@DE@Ze-&Dv*mQO6P|dHXPV7{Ud#~m_z+0CW2i}dFy#2-bc=AD z(nr3L{3upvitBhANFQ-cSOgj5$+jxJY6@e9^gPAeQ% zY3vJ7KAZa_4V>5DKiVSfO|uu;)W+Gb8G7FLrT8!Zuw>t1vRI_*eW1QMyZqiQxrDOh z7u-b?lB&XN@Jsw^BM$gY|>1TYn(IsCkM2su`(D;U)HhB{5)>3_U;-k=^1g zE365>=Vg4YF7agCuJ$A8Edze_68E$!u4HuD;Iz#Wv;&t2gH~^%mn1RTQJNtq6Acdw zy13|i6`rqpNNX094@xO)<`Y!TJ8=nO=t&&Nf4ycXJ5qhq_u@^sb!9`iXSTe5qH12! z*^zStPfy443&@$v=&*<~iuFN#Wj#cXfw|5{O}Sw##AIMH1S`fcs;7eE9wPhS?0NEU`ae$qfMT7R?h9>1Y zH2?%)F47zT_4Rx3R~}F5`hGpQ{pTFrAELSh`PP20?2694*}cbg^vvV4Ht%*aPW|dY zD^%}O!C6^GuhKw=p^kr|$dCkH+i+5P$T}secg>zp{-|J$_B0K9-t{n_zasp4x`mjP z0EF_EJSTY)T8-}rTgphUR->4!AuF|f$!aI*(cW7~e8rwKoGM&|zZ1MI0EoJ3T&sPf z_|BVr`Iui6>}OfQ$_y8)jt6eLt`pr*dcydxaVi|u3}uITB4prWtC_6~^{ND8!AdvL z9+ybp8l@uP_kG1L-_4ZivQ2jc&2NC(#WF)gY`iU-p&64@KQx^rRkGiztUn^GQlhfl zQ=2BHUY>RBOc48`g$YDZl_?C|rx->zP+}Va=p?znizcg!n4rI%)Y_&+tk~`p|J8c_ zw;3s+pMs$rziq-{>_{`Ppofn_9Syw1R76SIRB3-IXeSM69Q`Ps9wp~4Ccb!42d9Ml zuE#ipr|Q$Q+S;*IxEL>dkU#wVFlSPV)Zt*=Rq6nr-0kjZ#a|js`$i;qC!obZk-*|B z+^~z&XGXeOYkbz~Rnn46L*8BB$z0)0?3dZj^%vjdJGmOiFlf9Ba5O$(oO7de2_ZCZ z@owE=wl6av;PlI?)Sl_*`%Du|&BCB9$BkkCX|Ip_EDHHA7Tj>7z?M_1M2a}rYQPzw z9gx*A09&8ayEe!$#f9S+p2-;1&_6s*M7Qfk)?_1ItvTfM^!lAXmwPWI|F>mR+ zVdEmW@3?;qk%q$JekkqhP(FdXf0g3*&dwQ5J3`7~#J=-VVa=%E+v>+w1P#mjo_|Yi zw*(ky3pN4E%8;QklV(@juyGE?Yoh(n?GL0%o>)X~WQhnV$$9~|l5mcfCvQRYD?q#s z&ozn+F|!>lfl{KlEow(XL@_a2BQxekF5$;G`}M*;+uga5Qa-@Hl*On4!l?O0JniT% z`NB_{o|~v0<;H-4wn@b!0bKQoupL_Ksk*|Dp95__zRZ*gqcQ^f>mA=j1qS?qP}&x9Oy9J`P~N|Fm@ug{l10yIwZE@D|L>vG6K+jEbQI zQe`Cj+Ltn;l+Sv{YQlV)g1+gSi7wyEwUD}|E^u`@o$dyh=cWVhFm{-$flTM9LlH^7 z-Q}jk4iX8#e7VSkV}BqI&m)0~(ewu}!#NSi#yAwas8CgOk5WK7zQ20qAy@hRufs+x zZsPAhKa_Kaz}hdX(}$fw?iYhytdJ%`8C}4|JF`)u4fENeH0{(}Ka4#{cec9=J82c; z1X*}|P#Jm|&cc|QCtg)cXwso%mjvo9M8~S?Ll^Kov(|2hJ71_}`n}WVzBH@Z6DHlc z?5c6Dz@4@BXa^{WYGf+?O&Q7{P<_!XQUAJH0#b)idQOi$4fLAkbrJo8+qdfoUd>D2 z{2$9C=IuaWCisO)=#G1q8`uO!GtzF3?~MLu9_|bW;7#$5ACaAUMg)E#9xUe%PL}9f zP%SA@)4Q22zpRgZT;n@3URj22T$H{co>+kc3zmgY0UClh588C<@gRmoWuh`t$xSl* z)uax`_|&uJJ=AUCnGwUi)!PHZGTecIK1U%-nNFl$na;r;cJ_iK&p6Inu zF0I4lNrZ|sg+d@4bPI3*G@^!fkXDp!ww6uq<)$#=H?FIS*wmX23kN^mO=_}y5aX79 z`}i3TT1puV1M!r-v8 z(05Rx*{6UGQS{~mU=gB>oph*)M`@mk;1!93;J6Y#aVk$=x4GOH8l*!79Msbcwq`s> zVH#rE_R3hhJ(Y1e3aTzS9qvZNy@f5j#Fob~df?oMMn95RPkdLdVy%VR?&*z@jk|Qh zR8Wq#+iFhO^hd>nm^ST25S|b~ep5q#!_c>!6RfA2g*S?0-rnEB`!8f1T-k7YdEv)_ z{mz(&>>5madnWvs*xn;~DOSLb3ok%ZCuX;X9yV(aaQBuyR?%{VbtR{Hx#X0R`NS%R zPe0lb{@=Q1{eNkWe=?Vk_kv>a59M)Se|zo}2^|Zt(&8JW+W76lvEQZMD^?8+FD^P* zxOnx2KsF!?T%hh>hy4RuLKF`mdYRgd{`~JSZdJ59g4h0aC!S#cwsLsx{O76 zc(^wLzs+bm@(YMbe{?IF0INcyy>bVsOP>cB22PmGpWui#A=$Lqh(7X3TZC-CcPlrPfO^lq;((0SNCkO_^@TqX6B4h z;={a`<4g1qqyG*)@umBJZ#w@k*mOoa{T*L%>{Apo0C;$Mc^Ao!m3nKQ$nnVxo_^uN z8uR12$kp$8{P#j%3K82b{nLOWO6 z%WaWdvX=tq;sTHH()q#gWY;7)88}YXAsuXxmA2YGI5*)@(@(Ri_p5r&y!P#4ds6iM zEmqV)nk+pW_-qIT;;gV2C~n2~KYRLeZTgg$&@;s?lf->;PU^Z;J33HH_;hx0*)xVPM>-*1aaNsQ!I1Qs*|!Fr4Ff(Up_@%I zsEK*bMuR8Jj?+J|Q{KWZ<|Fy3loJwd8caUh@UL#0%tSq)1FM3!dEz1sRmQe|^>beN zSd+0!)fv&*lCDX<@F6ormLpL*|BlcZVc`M5cfsgopa6hn(rUMOHSV`)!<2;>SJ>nf z*J*)T^At>`T=&)3vP0i;D)^U=T_-fD;?~swlNWvq)%@M@99YH-+WyTu*3=M0P65gr zLXHrC7I7(PcaYE?5S>r_wi^em{H$*fJ! zcQKc#pM^dFANHxf%@c*<{q9)T(D+r==MTi0H1!6(qlwl}rx($@=>SZ2gHHX{$i~Hd zP>Y#w>(#aIzx~b%nyhLmVyd!yXga}jH%vy{b`{nEFk)<5sbwobX%?arwtrb$x!+f= zPR{gyKu;TpmC2HW%}HM|I1E9b`SN>pgU9RjEDC@|?61D^YcM;;j-BlOxnvf|W6+*| z=$9s8UgV!zL-@@7Z*kQBr{bu;TGKQrmx?|sRoY$h_$k&gq;GK0`xz}mw2G`&vXp^k z%;H=@o@$6S+5lR!4P-k@gPUqgaN(OXRr_A)zouN%MRd%os6zMiCv=$mTGB%q+IQh! zAGxu^v&#C<2i` zs%h8KYV~$rw?m86Z0LOcJrC(s79$G1P%_Wur5{X{T9=gFiSRHy_^I-X*EAHCvBPOU zB$V536qU0jAu#ly~|m%Qg%2i`(uJT>gkN3%jhoXQ3SiAraJ*jJA0R zyhq*K&*rShPY_X?g*&TXe@hQdDq%i}n_SOzhx{mi$Jx14$Fhe84Ti^0au{WG0TdRk z)av@cs9$n@-KU49&XsER#qo$`@IR_sc*zVOm+wTx!8y>k2PY@ihunQ8zdMUXspy%F zsF=sh%zQMou0J)XY;2(%?d!!O#Wiz;2WT$PEk{t$>B+Y=dFW9;>vP{1@MOPdf5G%t7qi_z zIxo0wy-!jaXjB4gVG~U}pOUB-D7ey_r+Ifg)DK%~F_&9)qzCQ0hUyQJF_aUqjcrn9 zJB-cycQ5+LOkhx+y_!nF{Q}oq7OeMI*{I9MxK5wFWg3X%F2i>*biuSTFSd?7(s=uk z>Tevcvvo*-!lk&8zK(2N1Fp{I%`*uZ;$4s>6abu$f!d+UZ0WsQgj{`8-`be(4K>5Fd6-M z6M5wi1UC(*OV#3HJbwinOMTA&T56G&}ve@Z<%7dO?eV zTV|Iy(#C98bIKA+oY!`GhCXM%m zicJ?n5}aw7SP_KX2#l)&+^qwPK;QOv!*}$5_>)%Z@UncScMfr*>>y^HXOgJE(r6|BR z{Ct3lUb#G?^^uX+5}LzWZXjK*jXy5%%_UWpo6UO2*_fX8Te=FeC+q00gw}Z(?1_5Hzk1XDENQctK249s_>Z8Um{r# zFPEDY*au#3WSt2W13i|J+;JJVEp9Frv6M=r4C*p3ZNqqxx zGmheWE$oBkr>A%Lx%FbbXtjeObHJut3Y0%>20Q4bKtdg!=nkOYuJ8ZJ->nm^$Sw3F zLm5=h{1HDrPP*2Q-4^v3=tkm$^A1yivU>$d_WWKJL&&nkaLbHK*COEJm)L&qQY{&y z^A+2%XxI5TN&X>V_v%32y+kal^mKFgDxR`XuKe_@n9Iksg0F9|N--?;AuIYA>9g!< zTz=R`mjj7+kT#G&F{U9EDrw+@~{8R{*!i!|cBd}J?t7#Q08$>MD~exfdbRbE8o zhoXwQHU6uglC_LgSQ!rSI_Z$KQD&;WouYKox96b>%==J!GHjtN_sEzAC-eYgtm5-) zPyaBf`1X^{BU7_^V#YVS1Xts{vvYV0yzTY^SGVC%M(=!i=4MLa=Oqh`PcrRC=edD4 zfoG;Lz@&Sjkz8`amYL$lll0UF-i^Z;iXx3EjwQ9xO)?b3CE~y<^%zY~ca;~R4B0t| z-!GSLgG5OPC2a{TvZJITI?&wuM!}2y4m07kf>$+^&oYEK9)1rlI8gY|2v|mLkmb_`yJn93&kFv?$mDd$k%B#UdIeH@5s*S4 zUzWeoU@}%!toT|AAN( z14G%3aWeOqa^rQXAX4Q%7I`>dB|e3|?i%dQHg=j9L}OeRm_=Gs{0Nw*O@`wraZ1nd z#_x~=TaFg#V?}q53h*8Gsn>yUC7f|NmUQ?Lxn8S0`0bnr*5Ui#MR+b&?*VFv=^7o(G^x1&)iPmM|f zACZH_3a{4bPl)F$%(s^&yxTgY!PGhYAAZ(Xmr~8|+26U7^z?Ma%OhsT!gYBs6xX|E zqf36=$TH1jzUe$~C4S_5gqm!{hifJhy{90T*nYvNAV%P(zEshDK|@yhJC`)eubT&q zg<@`py{>LJs}`8QO}mmZHsSzO;t&C!0+&Q;P@;*o_6Q!N8F4OuG3UJ75f8x;M|CEeMI&VWdv9{E zs6G=(9`IQlG-I|nhInB3Zd+D$9jmwUoBMWQG*$k^pJr?Y8!p-?>bu6&%nTgQ0d2OB09ZBmEG)o%qZw%qwhQB%v; z0(io;?E>N%XzTyoFq@TVQdQOTk0_BGM?{9p*wf(h+Cg2f@$~T~nip8;5ukz@lQjgm&62MtP>ycGCzVR3 zu}4DEP}>{Zinp5l=l24B(mw4i`S+2sAj4yu=!H}iG)P~q$c#99FR{jO*j=xfJ8$MV znI&Lv|MyB$8~r6so2nP+*_?Ta(T6F-Kix(w*FFDU8%`eI?B};SZf9}KZ0D=~8`Fc_ zLpHE>R`ewp(FDDxi9U*+_!ja9@`i303gbe1&+qB0#ly*x^^EkLr)R4~gIrM$Wgq*35hCtg&e$X7=<_e*yzAv(nbK2oBK&dF9(zA(DU$8P(E zhxVx+JEu*nWO?`8DyqgVtmz z;#P3b62dI$Y{}anN~&{nge`)Sm3fx?ii`P@$zR#Ez_mvf`Va+X>T!BB%)OdkhB{!f z1Uq8af+(ACvMOA^F=sqC!XgTsT!x8oX^K{Cs8Hl6<2tsWt z+%S2ok>60Qo?{lg4$keF4^7#Z_k8-^rHu>FMZig=gm>E(MY7X#yyYp8F2~c$0(-B7 zT-{JFHZv$KiaT@5qTm64N{vROjnqwJNOKqke1}z-l>1@{KW#?vuP*4RbZ~T@UTb+4 z&Xwg=sO5Vr3I8efJM;cuGUU-AA+iF+PK8vtA;hvo?c52Or;t7O)F}M~oEQa1u!-^3 z4=ICtPUXC&f2qr25UgJCo2jdQaTkdz>O7FdW&|I>(fF7Nkr+@rT+S0kvUM?`)q2Gi z((=kGxO<-6vVS0cSr(UqJA?1w`S1&`<}2r8P^_qtIfcgTi-G#5mcT0iU9&poliisr zD}x*<&G+T}&qXIUhzYyMG7q5d&QF33!r>@HNSO{F<%xBbniS>?HhE~zVz-IGI93SQtjAPl3TSM}Rq7o#1@M?>Tz4T*)) zOLioI4MD+}E{_*w;?i4)#Y-3M$RZj{-NW$V1AnK~MtRU6z`;84Q8oOc%Fh46-g|~M z`MuqOK|rJkN-si?s#KM#l%Plx0YT{{D!mJcbb_e#j(~s=5d@JEdY90-+0Wkhz1F(d3iy_&imvaVpo2!n3+jUe zI>y!tT369@k!OhMK@dv_AT7 z>MX4dr7BPw#T(qV7s0&pF;&6VB+%!U{nDaTg+Q41)>b>Mw1Mb(+Ou~qO8S1=ML584 zhQ}x72|_r?VV0OKa=p?z=hug5;Fz?hTJ1cO2+|2Um`R9P#n1EjX*m<6^vbGNtk3^R|dS3!dXg zeCF7Ld&#SZ&@tx5V@-Q6M9>8$^AVBas9kfsShzXKlF&@}FxN~nrl98rER-E|$$ucl zzXjAQ{hF7RMySK^gFq+)Y{wr6d8jYXzGC~{{-2Kscp(gTy&}wlxW6`9Hi&V=E%p7J z{guW;G57qT_TT+!G6Hu4?0-i=JqXOaZo~8*eN(}jr$LA2fy$!wp2KDDfWm!s173}0 z(Bo@@4kdbdVHw?rct-F)&u!|ia&Ubysm?h1Dp5*u10M5}Vh!%+ZL~8RN91Q1V?!!W z_~qK1J9tFYdZAV2z3z;Io*m)V6eZO~Dc-eoPJgYyTh`Al56S{P0~`aCvUcQs{d{)M zqz}Cj6lDEdn+qqM3OODHdzVTST_)%LKoFo)=;!9-ACdpr-DUd-bQjSYU~@<60al4( z_*(})uJ>1gE$NC!PzMSC&T+#5ypPE&2@BdCg!3XpcOh?6a~odvL!w7>mFSC=wl90D z?5D-vRbF>{bnVP}5k&@f;9otS42~~&6QWO^XIt|M9v-iLKCII7SAfIfnD4%3NSXhh z7Kw*e62c1UI>U7EUX9AMPqNz#jcCgEIAX|jXTO%;FfHlj!RhpS@qyGnS(As*MFr+2 z;9#&>CWl7B%wgDkWG%FRd=6@bUn;_1`2*4GNbRd}$J->!t%l6meA#e4RG&Qyxvw+8 zxIfY1NM)i0K)^n6gJcl?5U9zpf_m4QK4%&QteIeR&vNzL7o;lbdC-vn31~UkvtNHp!mZQ7&EBYYqAGYkfKBboG_{9hOw4zgs2**n?dm zhqV%|ak~vgMV;yH{*f~-F8O1v>q&1~l(n(geT;?h4>$ zbnvKNPuD4Rd#pvv`LY3qT!eGb`tM;Ozufy5D_(DW6PR*NNPr-zr`ibs0 zWq%-0lnv1u&p~CJ#OWH{@O`>;2?u?)Y;{_8-g=AR=5osCVvNM?o_((f&)+m(9u`<$ zovME5?LXqJcB}4DLYU_Z4BzYYV5i`P;}#5Wg-;t#D0(~g@h9O#|ViM?clPG}V^`@K44vYQGbtJFf)m``#OHm*&sTge5Us45B57x!y5GswCjdU}ZE zsz}tOhZIB833-vJhZW^s)kSK>c?@n}uc=j>r-K%uX2yw95BRs+{52j++ zdf45rcy07{p84XfBnUUV*wWM-{n5PO^`*xRMi=bUtAp5s96f3w(B@^FmG6@yl_Z4A zb7B?Yp}l7p4`Hks629yFb}YNDC*o?>ieF*A@s*cUK-YCcWxai1Ugw;V0=o?-Z|I|! zCB$IFZKX)?F}tlgTuX!D1UbBJVu;k6f2G= zZh!Cc%^CXegRkK0YbGt$C4*BlhokUW^e$*^r430I;V1L8aEDUC?Y$WVhB`7M<%%QE zoEjhbaJgzn^+i>mj>oVf(h+Bfw4iKc=`aXb0U0@h8?lY~3h}bO_uQOl>mgk}x`QL5 zS@(uOLeW_rsR{*p(~Mw9phVRc|D&RkMU9wpPuYSIdRfk)&n>J)&$I5HSSUHYbwcCZ zv4YT?r_{^g9yqQfe%Hrj#3~z`wawnatI40X?N*rqJa@}E6JBxOHwN@uXx>+j?j_lr zp53+J2E!TLmR)1MhoSe`I@>Js0LGW{*m&R9LEJa{Kp)No#)bwQ6YPltKq`d+tv$!N8Ml~sMK|f??gExAUld;qG{MLYXZ$iD8TT|) z{AqGgu&Y`9m%zk{WJ0j4*Sd9*w=gfeN&RSYXvW{Q1N{UgbEOW1!ee0fK^gEpr|#V% zvHI7|$*NQ7*%@jr`%uV{jt`lz3i1;W*!V};DE#(d&__MYJ={$8lg?rJyYfe`XF%rH z+0w`Xn~&wMZK+c^Lfl5zmiY3GOitN%d!LKZH9Z?=Aj1A8?N|sO7a2fM-7=jQHqk&} zXv9Bn*TRkQO|FvoB$gg`qTa5)LnE$! z^>1hdHYxA>J0Z^)87MomcJE`uRhNHWN!>1(&v@Tg+C~=BF>#_l?m$brLuDctQh2 zB7*z-`qPipxxubmONN}GN;%II8#4^_^(`=JCwdjKvBFm~OdyuH75HopnPYUdGZBv_ zT*Z0$>o;3Q3f96|J<^mJEo+jlJs$LvMQ8usZ=X@5`3l1Ul)GEx4`gF)rI~tC7Dl8% z|MjIv#>iP%?O>npob4)W**!$*q61MP>dlgbbW#IrIYJhR1ttl zeyhQrLJ5kSup_hQG!$m=)$YN*j+cOzlA2F`^Vi1|9J)jqNl>mJ3D8Nz^G0%|jg38g zQQOgxd0}DU${?p{c~JVoiuoO(mi`aktsa;FMo?w$3e@5e9Y3UF0r`WJpvXC{U0w zsVh1$qkTaHJ$+nf?s1--Rn?9+Epy}x7>UVAmU)ikISBN_;O_n!F;bigS~gB~15c4r zZ`OAhFPYeL!*2$%&puB%;VV|7ahUh}I8rPFVA;S|Lp=Az*NhOc%&9zQNCXc_7?je} zWI=$!wgYNpVz%N4bZF7th~YvLP+#wYOYAXoSo=@@>=VO5KD+{n)1^3^R3Wss)@2cz zs#dCWF&8P{tgEUo{(*$|nXJH{2mSz2-FW{QtncpSzvEWAWfz(!WdgaH(dnH#k1U6# zo7peyiKbW}-hE=&hLU-p2D!G_{WuZrT12yK!62^rh+{xuE7D&x>yQgY=H?*eG!bpo zPdubZ*aymL4s@P%dcNf7(|tL0>>zpI@^W%}>p4$?HkHYer0(%oW3n?D$QE5?T)YZr zvKy>&|J0{q@G!ktPyO^-g}Sjlr&Imwx7+ZcvbpNWNdoLVnL>raI^x5dU{B+w zG(=#YXMPf5`O*{O%uX|z<2E698W<(ay_;s^w<&=2Ey=WI+DzSh?w#>POebZDQQ>oj z80*#p^Tp>sP~T9555!ha{3xM-_!tkp`OY<};D%I)pbA0@64d>n2~; z4^8dlvFi^nW;ZDHU=%Zsu(({Ts};fAqyaPo<~wL6m@6t7c}7XK0sSoU4)*$MyO!?M-sjg-t4(R~XbA10KiUE~EWi$e zZUaQO`7OxFnGXfK`xl@DN+lOe0q9wF3wERo26hwvR+eDOw;vZveIJOT@VUdE1d@h9 zqgC^ zs3r`n%aqtX^b1sG#WwW+{6Ynyc6=vyEfs@Y&CV*?Jn|k1zVdNPc_z@@ti}d|`iPG= z8F9_ho&Dro*Bv*@8^yMT9&oXDBwU-Z?bCM3>7;KX-Sv4evFZKo$#%4{Cr}xm$ny1A z79@u}B$94M3d|O^3mpJ#=3P}}8=_mADzgcr2P$t9{vl`Euw`~@mDq=~F*G58oNjiK zWjVgz3<~EX{NPdO|Ic6vny#oF5CD z+M+-BX+r_tN*P6B-puvS z-m}bAH+EQ>tk&aYg2vTc`G&z@AJqs1l=%a8WtRgleVbT>7dqU%lJ%RB(;zE)Vvg~k z3VY3X_7g{nfmrr^>lZ*IiLoUl;Wt16oZ&5E)>`gJJY%d$t*!(!v-o|-=(D>o+wb!D zTm9_%O$BK6>nND>Uy22K0=;sMxV#EaoWboi;B*TJp01*A2<2@TM#6TR4YFz{gMV&J zz_3kFzR1N@d0I04r0bZClRV1f9P8D>h-pGX1fQsNzEH;bBMNw+=$;b;c%l)G6v;mM z6DfxSZOMd+^P(FUOOQ@aIVg*145pLcBwJA%u7n9op1t=Zuo*NRVi0JrUv3>N>w=#p?Mx5bO+y@XLv-vAd6PGrcou@jE*| zp}V$Gz310A{oc>As#U1pc=0{x?oZSrnEcl3b5}o0lJ3TCUmgn*QU(?5SFHy&6H`hH zvERi~gb_<1@f)=8n&Mx`uB#F7eyZ?`1&_S-_5PnzWyFov^f&2f?)#o#vC)!JiQ?R` zC6OOBkHs8V6@RYmIRB;cBM%sk)xgBz`Xrj@a=2FvK7zyMeUxp4^;(kno#aybsq_4l^6T@hYS@o zKfOC{(8WcLw#fRJTxq>Io!7sfgtPKEDKc+oz#*g1pcdXOklr}rW8ZBspc|S1ITHBS zV*e8w)Cbg?MR3okjoP2cfLgNpq=7X~H;zw$tfj4;DRs`7xfzFt-p< zR6EPcna)q!P$>NyfIrc1!{L*iGLh4m52f*{t&<%b?rgCWI;1L%`eE7WiXsLDG0qafls0Ap{B6M^x|{@l#k z;&{(^toNIfCx0XwW)j*J6qlTb(qJFO9Du@j6SnDjtqYom0<)KU0jz^bCD#7kAe2pqE>By3p%X6b|Al z{H&Y$f+`(;o5%>h9S&q6RmphWuc?__^|a^EX}&AhC|z@D&M{l8c3FM*rK_Zjxeel( z5F^o#bS!c>p;I_R)r%}y)>K^WaIJW(bIO_agY-)tcX4SJn$*S9)xoHBH9|I}SUrSf z5^gr7DIWaI|Mj(dlRKvI(LKXfFR*c8u5z>V3)vbEAQv?Mjr|@e^cpnYK;@FQT<045 z&;&9_x)t0rEU&JO8umN>>|4~fvm^5hrvgsOTxq&}P~hpe7_IdB1N1HuR7ASO-gjh& z_c+uJ9))BHzTFd)VLKQ?_uzwaxgRZO$jgyB`MF_+ktCK&E6ZZfOlA>8Nr&dL;2c2C zIV)#dh&NAe)TNzWmuPIw<73?8%MGFm{}4fEAQRC{9qzc>t3r*qnZfBxR$E6(y?ygv zvLv+n#PHm-;bxCpc>y!TwlF?B32>20VsAgl_gco7O;4Ox3dx?H>9cqzo9>z!H*rAo zoM!gfq2ug3{e}D>)t?}prEKT@N-8f|xP|h%fthzV+!jk{w*6g9W3-nm6D?Rr^Q+|X zA|LMoN9f_fGinf(EnE(d9)QR5^Yo%(n=F%V{OMt=!PU*PdHk6`i4!5HVhgKu#kJyp(Ozbg3Y;J#b7b8=L= zCF`{&z00Wn)Y()(QG&D{)XHGWPwUR{GTW{D6MJS4YUe#pzkgY$iHK2p(F!{BX>P?*|Nywg78cS z%!#%kX(h>2qKHL~Yp^*}_2Vudi?OoCTNC>6 zqs*Rj{0EG%MVE{_Lioa2;I~n+rjpR%yNZt2JlldNv__yj9_9S9_~uE9mvb^bGuCci z;v!Yd%cLquA36ghn)<{wf-iA=W&d<=*zH1DCc@FuNmr9Y{icrk^d5t6l8Z|T{l($V zR({>WM=E4aTS6F~tqX;*?dQpKA7_YBcMbEabo(Xj!pFYeF}Gr-dXlbs=+*&`qa#ZR zae1fs?-ADy#2mxE0yBI$$&;E+86d^Q*j z|80s~;J|m8SGSeM5(`x-_2+4@O$?#bR|xD|AsDYkrHxMEq%-_u7vKy+INQsiwZ^<*9I(zYRtZb7N_0@vn799@ZP zt9km>AEJV_TF_5r|7KBvcO5|E4CLowt2~K6k%GafzCzCT(@LaPl+QPnUr6=I)*#`C z#K)OY!2gGpKEwgE3iLsg>WA+&=ZzX8Xonl(&l+JoIhvH1E`{&4a0OAJ%%r;rL@$6( zWqqj{TF`gEu5%phSsOd4mBIVBhy{q^CB0QEMPik1j-UEYmB(TI@4u(%MUgeSUz-j9 zOQHwMAUcQ~Kq=|GVn?>du@)EEx(%0L<~gV2szq9sz0S1G3pP|dX>t5UuK0q$<}Nn{ z4ftZ3ZSX&1`yI=8J1+Z{jd~IUZuj{78N#o!3no%pz4l6lRt6; zry5B7#Ag||Lz3I+zQGhmRCqTcmG{0Dp#WWqjSY3~s|$C+ix0UTvc~$?(YD0P9+pI`_6SxjPBK#}`FCC`@5rB zVk2)($9+96oUX-pCGySNO`dd*E9O&8mbVH%f1qvfKP&j5?sRu^;zuyK=q9i#rEEpen&Uu#K;Ch@*BfWntfyl zNX`^+d2#osu5U;q$nkI1AsUmv77GqlEO?UZjWb`9FMQf9>dc{vI|xpi9HEqMbu|? zUQ*OWowcu`PmVy%PhU*32AB-r(J#LoT z3#QN12&Vdic2|Rfq^gmHDIJ>h%MQaOgGyNko%tv?m6Ds&6Lnt)#*Xdl+NqnpH49Cy zE|EVd1G&B@q4hbtz>)qbVM6i9C)dB;{owM#uH&Objh27``_ny_yGG9o-$#3+u>js< zRu5P)iH+1CrmqUPdp(5lF1UYocRwfP%FXQeZ9yuXT9vew&>JHKCMZ>5*vd9)P8D^I zD$+D*@8m6NJSnrs^y9Gan3=-DyP;P{r&B;J@I8^h-q=_V%pTeM-IJ4F*$nwneqRj& z!uS_6_~KP>%iA*@1{I!plMQ((#X%Y$Mqx6OMxyFZN!gN06o5!}OKM))M6e^A?G?Ip zS8VNwVd`z(3-)JhKZuUIOTgM39eFjzjNoZVoT>b*v|>&#Z!vstCbN5KA-oYxxqcm19s}yYjAzIH;U7rUH?$!P+pr{sN5@bF z!Zn(41FaDyn|W`jMZRyf-TlN)FS1EU#JgC{GIBlmD(w`IN4BEGQO{YC1u5@!cdJecp!K3Pu8>9I`r zRJOneC~mT=TVB+K#V465ykoUazvBcF9Dj4B7@SRad6uC6f2gS8Uw|FHC%~=B2BFb; z%g?B1J=nLe%siIA*JQXI&yvG2XJ4#-%+;&DP0?TOz(9&q=&IyzTW6>HDNI0!9W0zc zeT~Kfpzm0R5w0EU(hBVFru{c(5T{VWEsf2&Oa_z!R{`0MzB8x9-JP6=)|G39?t#r0 zl(M&x$E=8KgmL_WjeSdF{ftp*bzCuIILs&c0r;)jV`*prd$>Yf=W0snxiGfga^jRzCO|=ecKV+bssDjzsCP<#M+*Q57kYe9EHN->Wu6Q7 zt(^95R@jNYb7z9s=YRValHLbs326f-jiRs zc4ha*n(oYw>trCa?s=ugF(a1GHCrfwsF8@ccPCP%D^1S_`5$}BCsr5*G?HU5Cp1R1 z2i~;Y#Tc$r?Up81J@I`>c%sx)srKddDq-{Ry=b?uEJdw+=M1C_sJ9Uw$fwFk8nm15 z8M4G=Nr;!CpjK6}0kwW7=R`C2O6sH2`mdV(6&}B|{E-hDl4>G7IIkWf>%((|H0mN0 zZ1JV9kI=KwRJo>2A0Z?&nvL zFf|Q5k_Gm{NJyxi?<3ljt#S6!D}u8cZnQ@UIPR=h)IoSHwZOCT-J9m#)RRhIaAuIa zgL8SSU(f!`TSxkq-@S}llmD-f(IaqjMfZj4X7)hqI)qs3Uk>`Md4q*_{ci}kw*63K zwEijsWs7PB3|)3n-7)r1!nIGSv6kW44)l#AUWZGcH$B&BQgXq$5PyT(501e?DEC8T zGPF)I+KIiYe?Mj?r?>679({)WWo|G5^*ft-C-*-j5afrJ)3BN{av@s}z#K7uAPSbC zGaa8(7(mvc`|WS*yr1+D=+1jKg?iF&KJ%f|U+`eomx`H*4wmfSFrl5Aq-w z#t7Sid6Ge}Dwxpjc7c7JR2(PqgFTlb(T-X#MVJ4N{6jy{O%o0m#|5h@y=4GSrNigq zq6(oI{yW#@UU+Px0Xn-)fK65fX5DEb`mL0)x2xa%DZ`*d2HP#j zBs|lP*Cupx4(4sf4Pod(RJkv@Go~2!1IPzxhzDCUj=6nanM^s#ti6l7++Zq7r~QLn?-XqR76bSKt4Q`OssdgU1=i}Rn?6cL{s*f^Teryp z3qun_%ZV42p6GDW?7<)~H&g<$UN41X5XtoOs`I1ab$i>JrM7Cb0Z6G;ndH&Jt8|wN z%^!b51Nan^WxiFOMn%bd#cvc)UXMsG${ek(`m^Z~;wK z4?lMV6Iq}_3oOX!K#{hkHIT1`FDpH)y#8O!Mp*oO!)g+xLmmsMHl)?9Su2!Cv~WHwN;mk)^LU zHqNskebS@09~17D0J53E&z@(8fyCmDsAGGk#Ks*wvA1lBr@n{Sl0a*)w$$_4?`-3< zdAe$>ko5_ggtxRO7|8&ojLwamzTyi$&+C%{-73e|x*g~ZDk~*UKJREtAH-BoQew}= zL+xHOtVKc?0>C!l`vp6R@XXIY5BKy~;-B&^hAuhhVb-9(#;#Mje*Rx_=)W(M_`^ZD zEkH5`x#j8QW3oR+1$Dgl!APoL)`3!0Uy@qfS{8Dvks^)gz5yHtlHr6zN}f*<&b)jo z+;GM4#m}lMyfK?{8H#Qj(dvP&@uRPkvLBiYy3yi0K|BH@$#6bgR*3FOWTsqOHqsG( zs_usG#pb&&2fu~ruASK*SX_9n^aEHGpW46Kl5LVyDAvkCz4vK%+F~ON*)%LKS-#GA zG=r7@AJXw$6u`W6E5Tfo9SMPyysEqSH|3LLqt($|r7B%M-8osa>sGtiObtE}t-UgO z`#F;v5VAYCyh9#14|wB;s^=!H4XBgu(-Ula^+o}HsibeW5d6g3ScY9L{B438z9;x_ z#o?_?^_+S|h5PeS*D%(AbvvE()_@`5nA;;Y>NB?gtXF|w_{8u-dWDTBcRczi+>}UK z2^_N=xhR(B@+#x{#uvvtMJI+&?T%A34P*cjN0)dkH#85jv4jf|U2(%dh=B%6wv=l? zP5hCh^sJ3f(vQXT9LpVVUH1oq&+pYIP(wQZ>t&8Gfz?2FF211-X>v}fTdx_mN9YY6 z{h;yPD+cF&7_&}a%ruV|dwW!flkjn=S1iI}w4nBnZX;5mCnAUVV`KUfXb^2>gvc+^X2oem!Xb@kxJD5S}D#;3j zoHh@{Df-ea2&B>nb4k?Iyihhf*wTY~w3`slycUb_kAo%?xxiNYPi4a3irSO(-I2A~ z_3zxkquMAw_$>2QbBxR6?LM9dwl~hEKi9v{uK%>$2~w!56aM92E1M}O?ha}W2+10J zd+m7!&?l>qx9~xaZLp7qc&U&l%yAnY3&UBA$H7=NB_cmB3E|~? z<=Hov&P~qrOlKc1Z04BS_vD;jTB=Phl(>6F^sJQegR6Vehm!iA8&gktTyQ%&nRJvz z8TC$B!bs$~3w$=EanbCu@CIp+4jjaFd_|YV1@}S*JZNXtHJm-$N1m8`@!7p^G-e-N zVkQ-39j|%@q(^$DnJ@%5!I_(rS3k?cd&~W&y~|}AVupRp&Br7jbXuiJmrL2I-t`-* z_K$)+K-^s>p5N%#CFZ;WP1vhOWxQ_us$rZW$gFfqmiO}6@H->n&M9BO(N6y;Q?B)7 zOVpjeO$>b!k$DBpL1u3t{&e@sri$R4zr3&N?-5=MC|kZ!6SsaZI=noW|58A6K$NCe z>OktOG$9h7Gl;;b^ql^l&93|mlyBqa)ABb|=CF{=+87wBh>qBTE za27DW%}8EKBH84%!$?KYYWt#salow0diAEfIv1Q$c4~;6p0P!m2XhMa*37$(x`GzAOKN;gMcHh+Kz`&?|M7B zyW~cToEufR*acxVkc^Th-Ta3|n}J_< zRrf0KQjSH7Po~jQ4CKiH!dy&&s#Uvr_*$M8s3`mhXV1{<3A8E;E@9) zc*Gn_JTm?#f`=IG==aVuCx>Uo47pbLO*dPYY#m?859A@$n@8EjB@Q}oH!aQP?5_ps zDYAYZdKzS5b^@ktGhN7r_bFPLALq4lYi_>6jg;yRc&pJ{79*QNiH+bG3P0vTfe?Dj;#-lAySZP<1KNzl#d zwvl(X;i|YvdpNx?BT6K`TJ9Ruy4sp>luesQy+ppfY7ZZXl>9=5uQDbNlvg|0!R>D# zQo?fitp)Hd66m*V|3I99T91ihqGHIr&Y)X%l088T3>tRE+QMs}t;q^yci!UN%s4Jh ze2&_IQyEwAt_H-nO?`f@}bA8th{-YI#4(dcWl9&*~ zSh5(97gJD&N(jOjh=OeRUFLSA8Y$ca!p<@i(5!j3QEfbrz&RN`h8Qk&M*>|l z*!hft;G;$mBVS*Q1v~~bF!4cw?z(BVi(?ez%wPRCAr~tveU*}ecBEXHu{JmKjTPee ztiYDgD19|m>L1eHRvOh@HtPz2kD|yNq?Iu^C(Mg2rcR=Sf^Py24kCa3xr?g5!mf(>(Ncdx5c1UX zcsbM>jAM%`kEa`0yE7v%Ctv*rHmEU{ER#&E=de;V)neD-tRG41i7^m6YktQ$Hx&Z8 zEH(qGNwC9$UL!ipDx76PCQ_Mvuhup-F7&C0q4eeFT%U!rLhpi5yZLg;8e;Uq4SBWE za2oJ0o>6jlsFGysDNPk(-50rsu-E~m+5~f!daxHchM$R+P2L1bs$_y?>l}440?JB z7%GmPKCNq=n*xD=8C;rMGjkxbYCra3_$^8eNUaJzIIU4oSWKyS!0W93UQVT*W)Rfj zw*^^ugc@ilI>F30J|P@YvwtAQjnn34^DBcfd0WKu5Tg)IBR~IBM<4vho2P2d%;0nW z%SMf&^-pddLPim+oh%Zg4Q7ryh-SRsFfi~*)=8C0e$@`To-t2iBWjzC%6J){V@S*- zNo^J~sW4$SdgspM z4hhvSA05-9jFR42wJ81e)uN9qMf^`klkRqxdRQt4T}f^%sl&`YQy5FH*E{uyseP73 z?wc@6dWIj|mfH0P!lyX?7};nUt?s_c{H*b_oMfial(-MOS{M<-b}`jCLDzuy==>|T zFK}R%Tv6V;f_{4CjB&4Vd;7GHi|MbM(|C-S80lHwP2kX_-bhKL0!F*80o~}@HP^t# zcBw3}8*m`aQ`|nM zL9gwm-iD8xhspP(&TX%`4xTiYl?Qo8f%2#L?9LYQ@_CC$b~Kwb@y52d0I=K@YeMD{ zwV=G|R1J2-{sOK^CS|?vj1QK#cz#iX<|<`B4Xef7kJq|i?4e*7wNrfZrDX&tF9Y#p z%~O;#CAO3CoOZ-X^T{7mcI5T5nY$Ag1RrRQaUuy(d(y8dQ9#h1EDy$5N{d#<`R(Vo zG+{HZm=S?ca@eemoS1S=``xSs+R?L+i{_AfG%!%Y-_?2b)x58%)Mx9B;|A(^V0%Y1KN7*0SEe9A6AS?AdX4qwCo%%J z@$yemBGX<~tKZxw#Dc5uCm}d^OI+`qsTX-WEDZ3N^Jg-&MLsZdrk`+jRuxXUO7~C% z{SHPHo7v@CGf9EbE1{Xm*QUg$15w8udcAUH*!kon>)LgL=|0Z6K6LwP|25;zIrV6h zgQk(8{xe+QEpS)4C_3OlqJk0gm7uNvkkIJ?oajL>M zCWc1SN4)Q)^+dq{M2#)eq^re2cadu?4efrOuGRTQ_NR4eG6;+OE8w?5$1F6zb<(21 z@DH{OhzLM0vsN8Q&dy@|Hli}fc(9$+K?V7M|K`TvVA{%;gt zeAe4>4{={b&u*;TsQ8^WyyD5sqe;LqyFwpdlm6{W$w7FU04lN;nf$Zj4}`&X-l4mk z1^_QXTi+P-=JH3q21bTubY4my)8%{2pdN`sbPG{0SO+f?Tyj=k{$dLBjm130@dg}H zVknp`Mz-3l(yN;_VU}wQWKLIt-%KYB_4AVG6n$dZQ?h%ICaT0<3MrPDedyZ6@G4mR zetSSczCbY(WEJLt!2DVTV!l-h6Pz1k0|dAh+Y$1HHEio*IX8j+nl_k)$k|(?nkw^d{Lj-7oj3In_-PLkus=wCxAg#M z=2&AnY9_1qe&**skC;^Icofg5x#E%uy$#QT*T4ph6tJ$l=GavJ;OG_ahlcTACj%L6 zpQbEPm7k0`&fQPX(A7-vJTjx8f#HWc!ejh#y_=AbGqBn9zg_P3Cf8gd_f}xOy(CT^(Y;f7S`4UdAybQ~823HhQ3^8q~(wJe6J9ZI*gI4KcXTL@gwzX5~or zrs-GfnCC{n9ae{2$<$)hv71ud)i!7YwEVQK+H)qG^XbJ81hvmgb)9b27o9p4YJLTB z4nP?HPyYOw1|EsKuvvz+oG1{Vh|x13X5l4l;}q4xr03nmnx1~#`gPh%yH;P!wfa&- z#p(!fOFL)*H|jB>TeAZ}Ur&58&}I%e-2=P?$i>}zmZH#LXM+_w{;2T5CqHc247St|bM>4p8~0 zyo&pf&UiXznq)jifH)&_#rY~h6_tkYM$JnSq^1xqsr+O%Vn{V+t1SlYQSR>gYBt?d zaLjB_(ahkS{%%ifauAn`7b_K}WCfY{E3a0x-=Qm?LO|x=&NgmBJ_#Y%!GP=eez_hmRO{*)v|dmx%dh2Q zZF0XRR`@7^@)^HRKFzZ-P!{s!4=b0H!b8g-zw%K$3uxaB%nsu*7H>9H*v z*RQfFw<9=Z7@A`|RsDm?X3ZLxX>1Wd@Wgm@5n;*;~kj zYwmu3W6fqtT{g^5)L!;^c9Vg(`i)e6zCM5MKThZ6v8LywY2uV?J08uvxyF4B;rz3%l*!^nIcNN8s zu`YSaGufe6rh0CcD*JiV$3)E8$+rs3GBJbp%f56W^>n{{FYn%f7>AByX~RlRT9=qk zZ^UuW-_X}lu(Ev&2bF09$I&Ik-Tt|gMu9lfHz0cQWi-atTk3P|vk-n$jvhFX1mshT$&_>itOK3%D3?!0czX#6OKWE zSZcf(M$oap@B+@Fy%v(RZ91QuPBUaGxN~3UYi4qB;TQZkn4xu|_Wc4>ViJ`uTxnW1 zP;K$i7qf}+UIM+>YHNbkw*mr zz<6oTjWgka7{beYAnX_F>lz`J_=aa-JVi)}Smo_8ZLuUiwb2&MAl&hQqlwF3bwQN5{fw(B ziVs{HFf;WZKR?k?g(|qgUXx^p6U6v6X}+Jb0=-w>m%j1y_OAIL+>myoi0;{)f)UmG zG-q5oGQhQIRg@>58{C27pIl8@?spJxs5dwvUlyEd{J^x9Y+IbYP^dpLv}}_~Zsn|-HI*>>rqFVvsZ8Dcn2&WXvcbvqB4ZvslzhWrsTeg5z^x&~>&SrMfTlVyo z^8Z{ju#@C}nU9=7sUQcgAmY&tv3({`q7-h6pS8WxZqeF~_iOBjXX7JOyLTCKp)1d! zx1=|~IfH?@LV1D_UC;)$Uf(mp)nDh_+8E+~RFLL+)H}@^8>jqlkVIK_8#!M}Wvh14 z;oGf(p!)`f*Cuk4402|C_ySKa}r`&+s^H6$1AB z7K6?TAab8{MM_Pmd#)HZ)l5H>Zt?Zn4Y#a3`Ljz9h0<7o%^-Q z8t+;X?q$%yxXK-;_i&$f(OtnHiGwpeBtrykUpH`U!-qf`{2dG)x~ecF6s)cDjfWDg zZ=o?N3i|U)20tjO#ykE7&cWA{j6;T$YF$aeh;9u{*6*ps!7BY2xzw_FepBaH?ziLe z%#LL!MX>qFx8VM&XolO<^KXr0=q=0X~SzmSOM^erl_J5u^V0e)?;F z#>s%LNrMokEDum{GbsZ10YTvBgrdH*T=a;5c_$^(p)`hj>!#W|+B zOVZ&ZmzW{Cx}HOCfhwtVl7Io*PY5|;vM6@IK^RB*1~6QqLaE88k*3?tDz&^OWSZHq z>CR+)EU*E_)j6&rPI$st6$OTZPHU#JzHHW}d(yn)=B(Mps%I=s`~v}B{q;Dem&!!J z=9`?{5@M$0WUrY|qa1?~D`#6DS5*YBjE;rk?;ts}?IzV{6a0yH&` zZano#xhYsC99=nrD1I+MSow==xFZ>~OT({CH{6Lf$}lPkZo{Z{#QP0?@UQY2dtZ27 zKyZ4T2GV0SsLlclLT}n`zN>hqR4X88`K~OqGMFd1ZM4AMm zAiW6)C@3IBR7ybUEp((PRRW<0=`B$SffVoNn|s!*H8W?O`R2^M_pJK|izQ1X?|%3G zmFM^D=fUd6&VOSVaFV?0#vyaJHFfzXs&CX7A_SH9{Pj`R58Y8^LFe2-h9R!Q!*fNn z`3d$8Rw2w${#qgRd6o?Q^fl5qWS@2`x0$T^I_rQq;|ls4rlZs(kv1g$4YK|FC{u0P zO6ZF(NcR=*9i`0>1eID@E4(v{PD{o@aW4;f96=adb#;lILr|tw&N_=|IHC30#LcgZ z4-*tOec#}k?!`gm{`3&(!8;D04ePbMFV0M;$@WDBG1%3S9gN(qwlV}=FRBj7C&U7i z#CMBs&Nq}Rv?6G3VBIm=xixSKZ^`0z@;#asrb+$NDaNAWIMpRC@174`Kc(sR49|q{ z-Y9K3Y^&v4MAu(zU^xam%2X`Bq}+?zxH|e^HmLAYy|aeGEjMdRIwo`GBBWH61@lf1 zg|C>nM9rdUA{f#ZfcV<6ejJBuwS!i^W%oJ@<3pc0a(@i2cR%WUM6NyMXq?@N6q(3@ zM}~)&Yb-Swd4}R#`RJ&uw67qRpgArr^mEbC#@caH78QxNlRGnpss{pj^61Qd@Ie~b{UKT9`7CA4U+4w2LyZ!2_}oO$ zL@{wtpVRo)V3Q57#6QGv_I+!6{)EwYI_;r3P-(w)JELZ#d~TI`vMM0lh#`;!Xosn? zhqKK1&Mw>ahwo&#rw2x4cCBxTFy1|KVHYL(FL?}R51UU%R$CL5hd@xg@R&Rl#_ z2g<>ta#DR_N0BmK8xkSWRj9&`6$>M(Mk_}1Q--HEM|#Mrt(itFwTku&;3(c#xBW;wU?bk%Lsx@WKZSeyX^xcH zEzUW9edxT}s}pu-nISzP$Lb`9638}^uq}W|G5#j0-F^gYECiCh7mUeD(T|Ij&WUav znPrM6xG~J4Q`S#0yeAY9V?UC5oW`0|L|?4#1p@nMslJjkQzmk%SJsPOp1nv%7sLEc z2Pmk~ShLBVfFuafAtm=~EzuQqJsXNvfqC6(O@z z*zuF22ql~+hoP2%%$y0nI`6e@&hV>r1uGiU8O$$914!swvU}KMiyE~;+t>5cdH{MN zOkk)pWli&n$#U?;i`u>K5gflws`Vw9Ea*Rw2j+x^K~f*3bpr~6g6RS*T6HH9UBw@X ziD`npKj|>xDex-IqWW2oZMkI1OY`IGOt;z%t|ypu!|cnDUV{^IxbK<5rt zB5EaqNFxp6(IBU7NtPfiNY^lyYxe2sFRe@inJ2Lh*|wDM)yVh<=L&BL91YUuR3RMJ z;=jSdtx+40uCNF=1k8%U(Y!w16rB?4rvn^qdA(~}m0aBLauYjF^PAU`H2f`jJzaY- zi#$i;1vh(ZV<)SpdTIRAgR~@$A|Seje>xzZd}6)eP$39BH%6P&oBx<*?dGB zc6%O*O~S4RmtMae-I?LLzaxJi0#N6(T45QJktGzQBDRjFSK*VhVcnc?){%`)F#+`4)RE;qC>m*$>FW((@tWt3kTrvyOSe4gRBk{7rYh4n}QOZ|dwDOAfX8igI+3ICfPAy(K z4pP-5$rD5-Fn-jPU-j_8m4(oF=yu3XXL*7a~%#Pa%8CnZ_p^q%kVVAnj=vSM#_g;iNO>TOMQ$+OV!D-X^kzW8LQX z_&ab7J@)w8gTm_1rXIK(K||jqU(}EmTY0uxVd{EF6{K6PxO*;JizbNyxQ<)9jWns0 zP23l}ICE*>cFpU%p>YFwHFT}=DjUukAez7%%qe^@;xSSIU;y6R5LX`^XG>sxP~FeE zpcg9Yc=5K+hkN3??}~tICg2D~E$yP&NV%;~SFY@r`a6KMS>aVr++#CK_(nP;o30tj^{65kwSN-yd$k-EVWe6)uVsq?E}YD9Zf zBh`fU-aQR@b08d-b`=C0%T2^Ee)f0~aH#U@tkJ>6fB z5fh*}Y5<|^xvmf@)s@jzPoQ($89)BGC|hATE}>|ne8!}+^8F70{b%FYNjQO`GLB#vqw{k?t)f@%g%fxywLg$*G> z&07LwqL8oh2u)Sb{-CA0$}FnE*yl?XEO~Kmj31EM-jJ`dIbm#vWvqh_SRx8<_;;LE zqq)Eu-kgougty~KR)g}JC~E;>M)Bv?-wVK_DN~=S#rssQ148TVmfEjAilJ=Q>B^d7 zWp@k>kSA4vHoFKpIBWu13F}IpjPBB9B59!P;6ddyFO9N0(U+S)2iW?Y$Z#}MD>SZ4 zw0%=Is1F8;gXw&rUO;Yw27t*NkAAK#@*W{dE!vi?i8n~}sv6`j^?CGu@@!>Wu;}f= zBWmr1pUTo97nn?I*NiAixg=R1;toZ@oODGOiflJPf1`~7%TFW`$cpXwOcCGCQawql z;29Ahr-EYrOmt+E&HRk{{LbdEpU#Nqb)A|boIv7Mx>v58lz{J7fr}%GH;Y`IK3!`y z;mm#Z62xQ_9B;aV6(qWl_zNhPe6Y+GpGUoSS^r>0ofog>(Cm(>)$uZ()jy|K_+B5& zsvX#~rj!JmuRwoxi+n%~(pB*68jbAqaC0FV8)`C#)I`2SHj0GG?cV|)$`H)OcSxsw zy63PiW{r63T)r??yus)lGtF+pkoY>X^vp2!F8s#j%dpO}r=Gu4K>WXFY8o=QKVVluGW%XkAspE@lFuljk`uxcB8%VRm2K zxN9ad^H^ie(TGUPP$s1L9;hv>kQ2N&szNx-aiTUEBZ~+t_a{v$H6uc<_MH*obmF^| zD3IpIkrZtxjTQA5a>+0oh^u@DA*t^GwlEL=12g2oan(7BjK31i2J`DScy9&dFv>NO z6(NL}F;4NqJ8#R)u{qjJ7%)~~P46a3S+9S_2^Yk6LnTrpWK&YUA)G*TrRs-$2mhG` zP>HHN$tay4#Ja{XOm2M}b z7M^A7QFd*rhiE<0XD|Fni=!O}+1mo?k{qvj+<{c$3>NhY5qFN5sP0sQl!xNzAKNL+ z_>Ia7B^)bw0ZY9P>VrT3tCUa41J7GX8_)fcyT!XO$Q0x-KU?Hmc3)hexh|zVqtDbq zswPL;D3Kkf!RC{sO(#Ch@cS_{;Zq!h2%B8#$&zi~Nos+Rl5sa*|3R^D1RReXs{(!r8rG}SL!*q ze3JpN1Raz2hYX?v&;v4-P~W$(gnh&AbUF+s>H>n<^8m3YQ)WrMEj_`3%hiq3!bcQN zyec2s*sFX)$npH;90wsU(vBJsN)~c^2C-M*P=w4lvi7mSh`g7<;N-RfGL-9eGotYo zE-kU+ZJkacVwbEORNOAkOnpZaC5`rA;J5L_XDD0v?DspVK4;|YGMs3RSGFh4aPph{ z;a_+O%zT!RAjhdwpQ)J|RgBS2bOn1Us&}1_F6kBVIuUiV)cAq~&yM5De{{%bS3w=S z0i%h7&CCecyYC9j{zBT_fTh$@Xc&YxhvseJqc~HGs?j0{!N$0~c8ov(kG}l*)JaJb z{)W=JD0iH1^jE38-k*2<;DTVM7Ufm|)ST@)HBCuLn|IMvcy}&3YXBfB8FG)_@0i!0 z;V-VWaka6zd0py3|J!%z&)A`RfT2r#1vb|s+VFuvQBP8n$voBT98suah04RPRqm-els#5$_eeYz*Z@zEmG$CFvfEx3}We;4>&{ zPSW>BLCT`+yYy%dw9n2I*@9Z8#-?;6NVzYRcVRhJqb^D$Jb#_GdfK3_?uPsa9=qqh zQ4hTD-7%qqsk!ITqw~-c@wB6j^FXs83*L^xKEj2tl^y4+{!BP_dGDOLj}Y5&XDR)n zV;|c0Kb4BIw~RC8?*9R4u{?W64D4b>iV+BD?HxbVpi!77V~NC!#yTh1mXd_Tep2~6 z?9~_gt_o{Ii_3FZus?p_``dE_(0I4a!61YgF8eE%=|`uMcy6)VlCshAr|ek0zYv>h zMBc-$R~(6yvFm!gGfs|kPG%t?D$|aRS|(Dd=YVB3ARG2dy-5w0Y006cpzr4jhxH=) zaD<&G-0_Ue5TWWHe|kb=LpLZq8HNlv|$E0!iwGaROI zt%ZSL^zvlGZ(ORE%vMZ?s+Gix?oy4@7cAm!vcSV1K{qbHlq7tMFso zZIx9G{?GwrT+?+FX{r;8NIYi~OnU1$})69l0fVz*}EgIotY z_rDTEIsgb$2tN+)QX!~?MTEU}FE?_azSqg_F-K|+4zoA3pN;9SPda^JT4O3=0@M1( zf)3scsIN#0Kdha`jrV?y_akQ34ahvd z;#@e$@0PQ4C5vj$2XnV>({=)nxaRCBg zpur;0UknEJOv)}3v6(UU>NPiO5T!5ddL-=FjO(q_(*r(g(Mf5B9RXwGuoZAN!1Mw+ z89mS3E_P`F-la9w%xwF^-!q;ZKlvbMx%+O`sdtI$4*Q=uN(4_V9%Yr)eiJ4Hf(zzB zE;npGgQob>vmvpkeWO42`)`Ha@|S68;g4`QwHM;B82{FdIJm%J4nf||eU>Al=@UsY zyZxcZy>MzxSD=blju)$PtmqT6waA`!**%Zz3)+ioO1&EhXC*24J6*$&x!SQpsXDR% zI2b%-Z1frs5?egZe~^NFg4~1#XD=zS0=*7#CW2x5BJ8Mh%iGe`%;zEXmbe3TEe~*Q~0yznLGbNIHuguqQ!7JQb8Y&Q!v5gd|E)~?X1%;j9sin zU%olzxW!2||8Tw-MB$I*hXgBA{D&E6c7W>J$&I?UH z(fvT{)pe`coAGP#K35R1!|$WT(DT_@9f^VV7#b8l?SE{LDFFjbGrUWc`-z&mM4X|< z?e0w0b|dL&;v2r}wOKPUNqtiWqlKmyyzivQJj*dOzI{|G(PYB*siqq}I{PT-T2_^a zCqd>YC&7&H_cHM%#5Z+0?Hh)X3J;ntr|1k=O?A_EXU1}ST>f;n<$eh>gHrV~H(Kan z&U;S=-GV8aX9LuQ6}x6e3)QpLlA%TA+k)m~)2}SLE+roV(xkZUOrJcyuwP3&q+C=Z zl<~!pD2gyyWfsaC^#0fRXa2ryJ;iI2`&U!;KfT9UzVc9A62mv zg@P5`CYD0r8$|VRZ+c29kD@%s?I#9o`}qRMHdG)AnN*awR?8Xa}D?tnk%@0awt-Y1_kT<>s(U!*63+M>-P(6_!Yd>YL-!XW$_&AHC)}Ia4&>*I4%Gfz(3g!fX@j$q(jKJgUG~7 zgr6-Z@SB%x@WgV-WSbG`M=3K#!dlMikbS?Nj0ut?V-(}@eNK=i8z{`6LX@P&=_&{L z-y%R`%c_LExkVC{Is>{To)eXoo2w#VGcO3e^tGixc8nwo>zGR38ss8nw`Q4*Y1}@a z$x)ocx_$%O4ToK!>3qoJnn99I7jF%cwJ1oEiYp$qAYSQ@x^I0jQ^y3pJU{SUL;1cpN6N<@ zpJojgl6aM8X(h46n4`7$C$k5Nw}nrtwAX}aLj|gFYwbAIFO_5|Nil}zsf&HEnZ%ZK zN(Fdv1;}c^m#SU#**f=rh9n0DIgF%}Yn3u@T_kn7rbAP=SGSavKAk)X#aXwi?e`wy z9{&|6YCaM~&UjEn?t}0X@DHe|9pF&U3l{b$QVx{4EprmMD0P2_Mx>%WW_HHW=l^SP z6sQ;eX*lYq0{Cp^q(vGV8(AjEdeAKbH{RrQ!O<`y0CxAeOI~23yPXlavUUV5{?Ecu zkkemxL`qXCZ7f+N=EF6)J*ohbhdvYtW(phqlgu>{#7r!xX~^;9v%O7_eiIhbfBdQ7 zR?XsyB4pXNR&eo=n_up5JkaYqB)DAr;X^T9=gjO>5P0o5)hik2@ifhLu>^ zmNgr~;YjBj^)tnb3@5Em+5IR(S8AWjKg76RrVVhjviz1w$G6-a@p9^coT9touRtgR z+w@N@SvhP9Rw4Kl07Zk*EgS?)jOvCtkH>MfqLu<)QW!13p)eu%T~Si+@b}H7^jEy! z&5){xUFamZ|6vLOVJ=pozG@h76Q8qp4Fnu;mK_t2pzpHmWS{2@Eja_^p`<~TgG1M+ z{vvk~1qFG<2BmUD$7UvSHoIF>!>TEV;HV`H+oDYhBxn(H2!ly2ywg3w3ue}yhLss| z9tu1eS{F_tF3J09-no3ckA3&2Xzn`@L;z_=pnxpn>>MQ9ouRUU=2Cl28{TyA#=1*DE=B83p1{&BVb~+p=E`}m#>quguKcX z_FNtn6T>CD{l?z4^)M#g*MSiMdKT_W`+nSPn#M?gK3Bc`S}y~}-p28*t2bF1&@jIY zPkuK)a_L!4p3N^|5bn~$=H_aN@5uJ|1)SOOt}hQ{JH8$B^JQ0OGWbCqvW)kA_`%NN z(E+c;ic=8Ne>z?6Bc!?ZIyb;V-t)5L#t`mP^bF1OVBuqf-_$L&ADDa|=Ww#uZYC zFSULFxcLO}nlwbq%Zw~k{ch8_l5N|+vIg$~?KBw$0--9k9vo04h>1rYwD40T#}%u$ zuFN^qjET?NnR&UN3>RL!-7s&s6n~|zo!c;YEw}wJB@P|FZMSY@1RAK~fWsOCJ6=7v z$swaazl|M1ex9D$ZpsOH$m?2aSvPRes;>M(_ai-BfD18M15Z|tun|9m`e@iuQUWQw zqoe+%oQ~`M+|Dl!@GQh zkhg-O_MDs0sa%^|7dIYTUh?7dS+<|L@+PJ-aZ>2#V^o6=Sh0LimS6L-+}hcN2~Es8 z_9y=OwlHI9BI15j`P(g%RtVR9n#o}q{~tqFh+*=bFf6PB1t8Pno-kID6KZ0XRBZhv zPLAc>kWZOYp&-w>&XLK^*yrqz9DQ3?A}EUhYW*)AJj!7XaR!r+x$5LL6!w}=)PYYM zoF|vtHYnKN#3y$%GvJv_!})&huIaNG?VXel5^h@?PYf!-H zuI6#A!H7fDTI8MP5TX|$w-p`TF#V)#x%Q6a=bGWiYsbEeyec%wb4y7Tx)>{I86Y6R z`MMRg4E7KMF_(A_M8V4Ya8`;&F}M?-SE|@#us}U`Y_`L;sxvFHl&!tXS2Q6%Xy}&Q zkz;2P?p!-}@WYer9o7aHcwG0rauLNjJ5|?{Qa+XasD7P2a9DQvf=(=I@o;|GgdqZF zm~d~3e86~>5;sZxYF!Outg4f)h8vJb3yoraWL}NbhSu(NBO`$=9l#aE9B|R?0S%c~ z#!5@`vmEMlzmH5~dwvRDmUpsYMb}XjROz-e^xd4N07{eY_mZ?3rH%aq?_bx zj^?-h3od5VIG;4mSw6kBNateO8KatiQwXkhGvZk$wiV3fbPv<)Xy_uEBs~|i3y!kw zllKL9?2dg(%Lpcrt(aQ$lM#CE$C#E$DvNwkv!*CwitLDNvu_awn$Z{>TOJJa}`ry_8zjYd+*i`psM|sYE%|zpZtfHc%9o-@++L5!a zh~PuvQzr_OgcrWNC&4?%k0%7gnYE-XcJ*$iV_!@;dK2~25FqPXU=x2qc#>}g z;V?IWXL1Ea;a#lc$YW68{CfU87`WVtET`QM*E^cWbbar2izPlYj-o#g=kst@!53|; zVZX=v^Dn*a44UD?pM88ghm++ex4tO1f!`QdXi2grP=IZLfGe;wHSvT#e>^l!`yD?f zmoLpj{ehuy{%gi4wcEWW?UCPycE%1O?gK~A+*&SvU{H}bykF~LGLzGoAVi*BQor{P zCeuMOH6J|>NLUbEVbYxqLz3_X0w#{#P|p0M@QIN!5s{lq=|9-x-f+K&;z%qS{Xlb} z+{7g!yJuy7AY5?SJ!Aff-s_(I{juj->{cHA(&&ct^8%%Yr*|qqAOvG{R}|Kzd+sx; z%K;Xv%T51l=H=9V`^QO^B4l-mrmL-Dr7RpGPp?!kGX=^aOfnEAYDL0%rqn zv9iZ-mNvdvsk&9P>&=?vKw&q3sB=1HB097wSRY;lS zuMzrT6o$>STB)HW`|SBob;qda78QyTprMkD*XQ_jd8@}7tczS-`9@~ihyfYP<1mSa z6L+TAJ%pITbGR51C^n$01BmYbmtS;$F*M{V$R+>w3e(U?wU^DsF|XawW52v~X~Pj6 zzCMx$s@|H)n%sS%Z79^Cbube0~3zV#;_x(#3qMDm|)PJLvClwh4CGPeu?8> zNNFRwE_FHJ&k+;0^USy3aQ^rPa9=RT{O|p;`G^oBsStP<=Mv{h{`gumCkJ?al*i(; z;;0Fsd8hA)-Wl#&0Sal@r`k1fRBn(4Z_=jWe@^HFW5Gm~zmQbVffl8(He|J6D~f&= zVM2PlaG?stHDSW;=criV^6+Ny3j?8F^KYk@UU3R06~{qHzYf8k|L{u=D4IM+m@Mw_ zuH~@fLnGF+W-B!v?Crar{=P~%li10g`-lnR2lVXVLdZKXtk%3>$5&k$iX;A~{gD*k z5RT{fF*O+8*Tp7MS9^Se%+e(i3RAfAadt{TZA_B*1`MQ(rX#x z8I`xRM`1?`d>Le?pTUg~x2Z8;M!)kE&Lu(0Cir!vxF0v@+C0xw;ymSe?cQ6d6cw?i z)LUMOUs73s8{q!=|L}?aXHWVc{amhkI7|d#K#+;|!@)U84mW>1j@RDb%cxNq^b(l8 zw(oK=K575t(+i*e$DNFS=DVCvM~(=AD?zOv#!j-jT0ia|dQqRhy6BC$_HT{VkH_f; z!opj2@fgZ6G!a7(`{Zmk|3TILr{1d4uH1#`aAmqg>69U|=0~wrhTko5@l_cb#+9Gb6;Yf}zx5V2`*p6GkZr~QTe)Fi#9wUe*3)Q{|%ddTlQ_!;CDe%E~| z&UT`tpa9a>*BZ{k$P=N*|8Gy-|Ms6z#Wa?%ZgdrLOR%692YcSa;{`X2TG*0mPF)`# zXUtNwzB};io%GGI7w;M{@d#r;Ifq5+YGHImNi7!u{G#)SnCZbA>tg3ZZgYItF>S%j z3z!>+>~`HSKpG&vDF6dti7cwM@LE#y<-cp3}-#ky*MR zZTJLNcku5b(SK@9{-1pA|MC3)UEldff-be|N)h&A{|p`p(rw!{^Ra!aP^NIFHTZoP zzaj33c|HA8jRv_5r36?dbW04+w(t|m8>SfaNP)q)t~sh*&2!2#c3`wHRmP<@^(seY z%_DtLU%1TBzr3dZu8$dNjyEOBQ;T5kq1-_Q3+B&7ZVXZOYCYGyx4drIxpeOi{3ILRvBL81De=>&)3#t zc+?yZ!X$s1l-bcD@WbEfEVXh_pI+yu5 zY1=GW8M^SW{)W#&fTadKIyuq7`iDOd*|ozc-5c{~>rpoM^^-JHEuXQQ>AfdgFO>zM z<>`WApiLZf>AY*T>f#K|KM<@zAHIpE%!rUx7fVx|GE!dp;~pPielwI#POf3Qh`Ghi ziUpot+Lf0c$6a?z6#CT1_v>9NJKfKF&C%e#SWgcsk|y>8abg}RvTh#`S!Orr;&((y-69|VoWCqf~QVyCVj+*Tq5U5mmQ*h&887q`hd%d+!ajr0RP<+Hgl zuOtw}OSH!ubtLmoP@_BTjiMzg8mfQ0WcJq^2Pg-pd@-ExRxY)fMZZ=e`J=Z0q;z@o zFGNlg22B5km{+L$yO=KI#3f=WNpe19Cl*N9b3R6LdXyb?bmB0&R{!f;XFPjw5_Z|- z?DzG0wx{M7P;Z);=Y9AnR|!ce^H4@Rq=zSVs~tNz6`azs3(;h25l_q^k>?4EJI`m?X){A+oi+I@WFzxx>YodY@wT+GdXW=-1_V^Nb z4__g4$AIhYNvPXR-7&iTHiNLD^<2Es+!UL+<@gJC%@l?UwPVDzEix&ep8)Nio9tOM z-(34-y9z{>wAGZNi+?bdx!b!dO4iw4iDiGJFBKE8`X}VV}IRgY9!{nfw$|WCq*RN#l z%b?9*^C>_VJNN)f4X=h%x!oCd_pX55s2kSP@K}z2T9fvn@2vBp)zN`a^AtYQ+&uca zokOyt5c=L*?{7U3{yW@3_x6}wUN1D)GX9z4OOdP5DY7S+lN34MAzh0RqNZA}Z`ny> z;#p>1p1WCry~grg*>^3A@`R*Lb_@gXD7{)^C>)@#iT*5kksT(*PS^JAA8*XK)}$x6 zNhbF3_uxP0xHABOVAzDpqWb1*?I)<1R2Vnu;<~va$D=lAuMLpjA9$ed@O9>yeB!WE zj0D2qF#h<&!#R*Xu*rA3W_~7dPB7;AmZeYSA8_GX7_jL4c|N@j$!+JTb1=zI|HPW#^`W=ZdB;24Gd2?7>@MI zF<#cQd;Mx2!Yq~6N{`m30Wi5u5&ZxbYkyU99^WJ`___XOP*VNln$*t~-_06gWz7q^ zi?L5(+N-D`RBSHZba0Am;eFcqx>^K7)Mx0R_|GHxD5``g)I3zg_V9`amcIi#J0&cc*_Wj& z9N76iao1Xcs7lv6Z1A{+1B~ZdB!a#e;nknZe}7lDvG;Id(jnTIG8G@qdfX=^T~J>Z%8kT0GF0LU?4;)l5@ie6FppIbVBqO{8eR zm32BA+=1R$OImC#FY^W*#m~)=TiXgV1*sZ*1qJUq*ux-aF1AU>PfbRS4Gt!Dwr(;rm(z-e z7p=DRpgE6iR&9WniuB4>G=9`1+tG*Z5-vo})h)eBtEegcrr{%n2_r4)vGcn5Xx;Zw zo*sp@b&2^IGN)GOOAam5#Pyj!PbnSMX+z>apio-FPpH1 z->cAy|gr1YSD32SSr=%!i~!orsrfKbgAz2MgLZsa$A=UEU#tQ#H_~1yC2(4 zFqZ}Qa>(6eyJlP2Glu%^x9tiO06%@bR4Z-|Hn~A#9R*Tm9Mtz=$AcETT7<**ID&)HJ7ku)(P1jEH@r@wA1!yEn+cZRg{rwDm8^k**_@^AZ-eQF0 z2OXx+H8-%#2x^7*1M6+~DmIfVKd1UX@}7dt$Xv+Lrb5O4(Cxb#gh~=diAGeg58RF< z`NWI!)Qvt~o4aeDAfFkatnNy_%)Xj1bJ3*w>xvg*2Bcc=_IC2k=Gsx!Mh_(=#kY5& zge-ccQZ?H1Plf|^We9s3JfHTTUMUEEXTl2DKrhHrqqmT+QL}K8d=Dk--s`^*mutCy zA%z(KeJWW8*`|rSkA8-(8tgC^4XW)p>r4u{g7LcB*gT3lQE%+RNZAozdL^+v>&*N} z?ho_7TQ&$-H$ZARB)0HfhwA|q=XA6?JlWd(6G9rVvlpXETK2rxWUk1juN-+VVNk0_ zU|!fn>EqB|7|+_C%+@b?~`FyXz~kbXo}ib#6_?#9B7j; zu0QqFDGR3%rk>tKKWSZ!N!z!W_q@LM{?r{VfZm5te&rW8RM%J5XY~;UYwKzQl8k>^ zCM89)mlnU!7n1nJp$}Gf1I9vQLO7EM<+aheJS6+yowb#>`n-nZxsR;63A}j&}3Rjy3~<@+p)$d&R2eU z-f&r}u0G{Xtoql!`1%Qsfi@#cz2&E8S5YOp=fXOXReP;U%z*R~N^on-op{1h7dJMY zXk^~dIeIsLv!*V69~(UNZ2AxCIR_Htm4-_D~LQb`OjNAx3S^*AJAApBB5= zJ}Ss_QY+82B<9V+U8_39S&(ud3`?Kn+&aUcatvxfGt?#J2iMhx+^>1!=i7AH~9}-~c>+g$w%q2N8n#iu_M5+z|7(vFr9& z@n_|vY|D5<{A{*g$$j28MqVClgDSa1mjo4PtHlvB{yo`efK!RCK_-_8T8z>}X4V3} zC1+db%$bED*AfR})oB{eqh9}VTHR`XFU9NCAorJK3QcJqyh=1+6$jqtB(Qpf-BQAO z5`*w>G09;k-33Y(8fD`&P+Mwj9x391Jl)!58yeFC%sekN-y9{i|EshLZ9|vUWA^As z7|`PHSm@Ks5lS}xtcjc??t6I;l}Ls+9owJ&)+-Ol>1IeNC>O9VfmN?`!I{=z+!UsH z*p@lhMoKU-5QfdVEB+uPZlynKP0IO3f^r1hoMc1<2`Rjq#N7UEK9{kreDw+IEK_=J zT-EAra}_O0wF6;kyI1y}avwTrA(g`E(45P)-wOQF!2{VGuitFfF`N65>5-@X*qP$5l8(F!j8& zqiBhE)9oDq^jGoMHz$F z&`F+EH-se&r?k6!3}PC^pYnD=!hEh<`^fL8ZuI`4USw79E_<7war#DK%GYR5xf00D zmkHd4`lyQ}Gkgfns0Sw0F%ONjm)pQ@5}NwGQw=yzCX37zz8+D#`L*{RaGUsc3N@x6 zM`L9ryR7p>H&za-wi^aa-@o4(0zDxuO!0NZB%$YD&egbum&u^3@ZWOdB%ZO=k0{|X zuF|E|2vc4=9-NWnov>hD;pcz%X-)HevUwTH_lzx4zFLxFRyjfkJ;9## zr=q+S3_1rFraWLPFSA~Pa!d6YfN#a~xcWZH{Za1*{9f}Z(>AAWnNGlZ`RbU;U3A|Vda zoBt+ean+!H<{_PE z_%OssA`3z~9!EV*D5f0qBlhBxGG$8K^44ahZErMo72W4)TF~pA62%=`p}w5%sZiS= zEnRKsiB@wcW9vMxvX+&ekjURvHfF|-|JtN%0$hLiXs2L2U=J6K$RZOW2wP#)q9 zayxw@XIW`j{C3`NBPI+nY7-it1YU)zc&TIk&JwN8yNG zY$>^$N<#H`!BVv2$^A}>tXHphiTl-l55n3=ioERRn&Ds0t?Ho&99N2l^6dIV&oMR0 zdf+aovc)PW`UAmrZgXw38hszW3o>fAZWzN?v?Hg&=Zc|Ul%4_`$qwQzyle+Gtb?r8 znI#axQQd{g7Hx6Db(<=^7E$&3o%5+HbYnjiw77FyGjdg_i1UiuCU^YHz#?0kPq{Pv zxwHUmadr&rnjPTra~$t0t1o<;jSZ;fQ=^fnhUh;tFmK@*PNtmmIZ>f-VgRUuw0>H#$s7j-};IqRsxbU6q`@zpo3Y!9ZwLwW&hf1J_(tX@d<-_DWrUAxE7^ zPaG2Vd5r}e?1;O+yl=ZjUDSM0ZoDXA6A$2DPxmKB8gX7%fIig|ukU3auK9{p7bi1nuEup51Q|`5aV`MH{uKdCdbXCtUhwzq}o2^%Z9L*qX3uX@eyJ+>Z?SAIGWgc85BAUXp;OeB=6FGekOiv|Z2xw~3$R<;a;FabKWAn* z3E;F=44eyF3mtiqOl-e0eB`6U-{jjfip8G3QSj~rh-F3=22XO^2E$>zEih6OiEBYI zsbRT6p|FvBuA!z%M(9fPtv$=m=ZPIl><+>bw~j%y-^U$XT10Lpk}rjQ*R+0Jj<|hT{Fq~o@lNZ z?<#l8kZSVHvivU5(wnRyAMaS&Mm%NJ=1pL@8FrpF2nSH6n@(5<7?lgF@+?rzt!l`w zO)$^u#2F`Eh={KahE!0 ztlb#@>L)P9T{3)b#9KqQs|JgHS!5lyQ zzdA#D!m2jYIY&VB_NGnJbgP^$nUj11i>A)&dfA7Bs_p-UyjNG2njMpum~yuTbg zZ6x%owsghstf-;h`a`+JqmWbOU)sR&Lv<#GaUCTwTx=!?p#1vmC-nAs`5EcETo@yT zmy#gs#;76lqsTUC*n`1ic15%A@;$;tf1kblB&kU772WC;Y6P=E>~wPnvYb4`WFcE*xmO9m$cCLZ3TayM8kAXQq&29?Qnrv5-;w2^7%;A8krry zg0tZUoY80Oj9n$dSs9N*Xqn(7f;RJ)M^-L1Q8SvBW^V&7DTDkb8$s})b?m_hY=8*@ zPcAS)usSqBusAe9xI(faf`1h55%vRl9O(g#q3Pns6N@L@HD|y0`nvidKXgEI*-~os zMV%kSaTR>Z1so55;Grd-j~6jcUJlK*IIAV4_7f{7}36+OPIr6Y1BvfRgK zIcb(9EhE*=_T;I(dlE-!-*-L!_)PQ=)n0E6xax`o-7@0oKDKC)#2s@jWZLQMU?b*t z2&g66N#F_xn+vfKUxj(Nk9CU>Fz24R`|$YJ57jI0!^Q}rfe_4kF-0I5w?mOc9?@37 zKWX=>bygWOTN;TN@3~4>Q?V(IGk$Hdv6Ooa0?TUbZ!EjG9YUV84~ft8a83DcH}ie@ zj=7~t@25XDAcP)4yK-Tn#Aj8ZrVG$;AGI0H(}|6<+i}?8dltekrX96?w=MdvL`l(K z_-VmB$Y-;D9<;8E ?^LE~4syb@frGdv^-GjnqG;Ds!G&SM?4c3U*PO>X9E1x5& zkdfDFEPwUqPa7dtOU7RD#fP8kl@o^egQ$EoKWCMoWpL)@V=3j7aF%rzlod$>Z-fi% z`3n)urK3m>V;nICRhh_p>el1WJ6J6?#n)|Lq|_na#k)wc)9W$69EKYse8BZmcc00g zE2ChqGpGwg$*C% zd@Mu=;TH%TWuE}rgz z@-X?N@8bDhB$oef^1zK?=b%=}7H&)@oE6+Jhhd8sqr>HCk_bh-IS~`>&zyBZ5nWZa z;kCsWb(%TT*H1LU^P}j8!RsmCkk;rgsHaVKKrz9y4a%u)<3fb;c!-OJx36QqCBYS! zPE7PJ8-5eHUDsC$e*&RNeLxLy{kt&-<_*P$`W$wDFkF|pg_J_jYF#nHFJ}!Ebq$R@ z-pG}oHm>M-wN-vMjeWc1Mcw~J-J6F)9lrbHO7<;e$u@{d~^%`kr%s*YCQ1*ZEh|EYJIS z?&rQ=_v?PWj%)*JhG2x;L_H_64=aLl)p4*F#j%7aQm>q<*WSEtAhpe&Y!(X=b{bBIKn;fP)SuZWMz~0a`$R=}>*uw~e z!Nq|J8uWhZ&!E}?qb~!$P0ny;9=&wpl^*2hABO)BD*@BI22e`~NChB5fn3{_;e)>MG>G)D6Z?A50^dDovp0&G1r0Nc)V)U^#`0#dgF~QN9SiE9|(9^S;m_ z71;~S=Y9WTrx5@R*lpGw2W&2pU$az-e?=iJ?$l}-$zrE1=vjrx5LuIR=?IiI0k zfqZUnGc`8V>m0~2Ib~aGDD8d5(D2HezYx9@08!IfWxpm`eh$u+2F~*qu7_mN#mS^Y zw30L+D43?yG<|(V!ffJv4Nql2px@HEE_|XaX2vSeQH@B+F!(p?0`X{u3lVa=?Q}L2 z1%hCrW#wsVe`%E;5!l;&7oRSRZ(xcg1OhZ->V%=79xkCrAzDkbN$TpUOHsNpFoq3Qm+07=N9qXn zJA-95Gb?*PS1%MSeTkQ=mYI36%iDPz;NI5TUnu(Ye&|uuL$mNIENA`6hOdhP{1f)A z3Gg7-g|Lm2r&-(uPQ2qq4`Ap!DkBTp<6LSP!n?4L!6!>(jw@AkAbbMm8*PcE=so8tFc2<91-T zv$>F!Yp@EQ^=eRMmNjC^P{9)I6dxO4s_gE;p%mvtI>(>g9 z*H)o(Faa1o07?rj@2BPKLApHtfg=gbZ<#Uou@jN=t*PYrKdq@q-JX_;|hRc_aoF1A8(2uj9FxP)r=@BgM{$^2pHU#CEctNR$x`Q@cpAdU;_r)IiZ;32~{E02=4^f~#A--w^flcJpuZ3s4Qz+Lv z_MX*=(sBIGf2->fjZXWzd!ORo@+8ZCtuG+!PdvIZ$hQ7o?P@6*AG@Ht34vtq6p0Ph88e99fL|Xe)d0mglhXSWw5i zg?J8u>%|m~|8}4^#AjDfZqmEc%9bLv0W+O^avfErR%p|0P&rV}I=59$s{4G>O)=_D zjCgI8a>=&cc2#@>Fo>@Is<9L7S<@~3MKBZdz z9glNQY&5LAf`#qU?xGs+VHWyN1G*3iWX~1u`+!ah2uw4N)V!3qeUn++;#^P|a6&!X9gExgor>df>4hkU+-b->kA!5hch zlr=|pTL}pyJ6a6%K9)77B{1)?!iGl%CtY@QDZ=E9V)fziFy1yhr?a-{ek@0-(|P(f z$FI;?|1jkEqZ?p^WaQAEO;O0V)sGI{hC|sAZ1@xO-Ff3<*dIvNaJ}=f^(OIo`@rv) zsy0y1O+^r~%{-jFI&BHK9~OaH)-}!nJw`~_`8abE1}`J?v}=E<`7VIi*#Ilw3#sTA zL#UY~4U~U=5F{xV`JS3o<9Z_a;Rh+GvQ)s>&Djgg*NVKL38+a7-Hc~$loncq%3?qy z|2tK*3inY*)SM`jm_v@)FaII4y1|N8{0Y^-<7f0ryGnlhy}Nuz5%5rKj?PLYDFx6tDiRJtI+!KOw!qT$+@?Its^=(&Mgt=}NLVZge8} z67!GA*}ZjriWwC_@CG)?>aUGDy9E z*jGlz{Ot+@)GJE~_Hz%^(Ktv8EErn$8mN_JeeF(Pt4!JWA~o67dE$JBEZfBD}alGNA!M9s!QDy=fVjixxnW(kT# zezv$Ew~lxzOAQAwk0$73%n4EXu%u2hDyz33mhH-%t*x)pX_CT}pAQ4H*7KR!Nm8^h z#d@jtS7C2-&xm#Lj~}hI<=%#p@18!r=8Od+ z{Jfr|k;=+t=ahh~dwF86Ks()tfxBYQ>@{lkJ){yH`9@M$N`zDvv!&b2EB+T)L6gwTh}caQ+G^>sad+j0ox>HU?7Gm%;s+_^Qbo z389$F!M!GB%0In~m#hv+6}qQ!7UCtYm(IhD&VW8t8jqbjjkhMA)RiDJ=s!LYHU&KD zv_dKpOW$Tq<(~Qw&LP5m_s206o=Ua0C1K~8X$ygJY(}X^qU7C=R7LfBRB8qt82#O}z|LozV`sS5W%cgePWas`Vciq!E5z6Th1?Q z<=V4d_r&wiySUmDys71fws!>%0y6(bf9T^vV@tH^56Crn4I$0U$JS%}ht2o-?Lz++ z`WSoy*!m_P?@I86wp3QGI+(57e&1MRKs}pUPrZT{IZsOG=|6iG^f5n*ekefS4-Aa- zb6tqhmt9`=>gozO!W+zUV$_i^iNi$eD*0otk$ni;H|Qfo!SYS4Ok)Qp`4PPZ zTaE?z55>S_zCSXRi{3Qw@vr7AWI{7&baOFYP=DOxiTtP6p3i0-6Mp{4ptI*w&QJqs znH6cFLMWy>r9TX8$85Ojvy*f1l~$>@>~yN59&GrVc=A?F_nq%kmSx<3_Z6cD#f|)7 zsDjb>&8P){0!#e}6Qi1t-R4oRW-k8H6{Q*samUW-2xOSl-jcr+@bJ!v6Kz3}SnT9` z&oZnrom&u7(;sZ(7hIn9iq26?_I`W%jnq&1m^4yQy{&Ee*^XKCk$OKBZxcRa=>%9O zOEXZ=>Bk2Uts9@4wLlN~^H6RzA1pWoeeNe^e_;72F;~5{SYs@dD8-pRIz;EC#iM2m zk%tIn{-+zyxz|Vp`@M8_nJd&3zSYzBhe5%L8W31&JRX&52CAV@{AP~7k}*K|WLM}6 zMvjAXzgRlq3B>RkipkcH@QYnHR^Xzj)C*T9W?n`{iA;Hq{wuQ8YyNfoUo%H(h&pO#Fn zTSh21`gKc3#kJLj9e>8Cwr3AI+M=Y+??V$L4=w$Q4|uePJNrX`>&K7ZD7)2C`w@1A)Jx^Gp{qyN;h7@Oi zSaYd=xVDC4q3{DY=dvO6d-L*eKVZ?>Z5HsImdKY6-I(=Mej^;M34;(d!v!NgpH z?GVP(kA1>S(nz;_BpSdktPsfgFZAns{%MHs|NQ{U;s54949}lI;4W884xBf=g=>#R zXb?HBvitIIu3kv_{2gB7T=wCi-b_m_%fxqJWIcLuDcmk9vjLWDIMbI;bX+3kgKEK|8O$v(sat{goKuRH(9pF z^W0LBqI2!sG+Q$()kk6+Q`qKRv%*J%i((khh&LYprbdfL4#G;48=#XuxL!;cbkOOS z(&IWjPs_oRTW3S~92PsEW1?1YW{jJvq1~DS{dAyQ3RXK2^p;Io23>c7vTpf zUMyf_q*Vh_Hb|(F4S{1vKd<{MGx|?LY_x|=WnFPC$I>Oq zl9)T06E`{^_;zW2ijt2&uAuvX@Kx|B1gjvkhIYW5!4JGFML3d9+h@WM4=8)2tF-rz zp-z}L)>zJ`XkN296RpoyK{w89oVX)#Qu}7xgC-Sbh89~tNTBe%G$VPDoHrYeJWjnq z^lSd`Tcs1{0m?`dW!_h($8!Ar=4pi=sO~#*B#;mWfAJp$uH;&oRLEc*SI*kAn%h+t zg}+*dONCrAAd(edtBIgAV zugpS2>d&o;Af8!k(xbWaPi5Y?E9EA+&G~3u+3;~3>`HNhx6Ho)a`U%9@F_8PN5sOJN4 z-Sg3d0Tv+0E*MHTHMs;DyEV;!7>v;Q`@ZN^IXcG`uotrcfpKj5KH$t+|Dx6mu zk{k%Wm2ND(`5<{K0+Sj$sZPJq588F0bzDV%_X7oxCW0YmUj^K>>(D%uZ2tZ-tqirW zP6xO3*ib%d#bkhG&6>(or%s2eFzvc5VbajCkX;pM}cxI?q5`KoTU zxt7i>+zkgnp$H7DTM%6ulp<@|8`DB`d5h~Ygw40fHE&8E`a8Jcj4Q9ekG!q?Wo`Z= z^LJTD11I(fh$PBTk4+9_PYu0DxdXs~=+NubFx2wqE+4@Nr zzUaqf=Z}VcPC4TRt(JWTeWv>a7H`uQolg$5tR1MJoGG8a)?^(#H?epj!qqtn?-VD- zY-Mro5<>(-FFFI`B$~!L4!R&5MRm^}*mEl#y`zfP#hx-t(auir>n=7fuk>&8X+_Kf zRYg=H^*VA~NSD8k_D%PUy}$UEAQ4mKPRj^+>n^o)-Fd|1jd?zODEl{^rVvhm#dy zRDT5MLlo7Y_`@*pSZ;q8y$p6`GH4q@m{Du!FzAjbI~_C!_7do%o+vjvZ@@^(}7{6$Sz zmZ}I%Jpp(%d{+z<{~?{{E2!mRr7WTNI_b2E)3N0{b-#AcWJNZ|^}S5`Im3Lu)Bg+R zcR@V!)yK}}#2zK(zT!ai+3%3U2cdrq9BYxu#!_D|h&TwxGa^~V! z*{zzVaaHM7OnMKvb*W@^ft)7vI7buT*j1_6W+X>h^$E_6crKlXaj|(WOtE=t)Z42y z*%?KT{8C2HUVDBAuYcOvnVy{5>Xj4nbDS#UGu{OfKq!(L`0&CpgddTVM))|-5?WYy z9=!%%SVfNGdM(tNo1x86w!fyZTG*TvkJ2lCs{>CL%hkgz-8#;4R zNP?N1hr3K2d!*^H3_GB{aqR^C)8|wG-~=Zwo2DZtQT!gyaEhLfi-t*(t8Ft6P@CCO zt8!}?vZPByNNBr~I9Uz*XiXPl+j@kyR8kYoAVKjIrXBi*A>6{edXA0(G?;V=9)joV z*Y;Gyq4GO%4IS2jA0B_`FLyioaK}7B4wWCF4DCxwcKFnY!OkQ63+D zR%{eSzxT@Ty^rve&~YhYu_564qsi|dNg5Q>EuShJflBP>oxl@>isONEo z>P;h99)-erdPl|3keSKlOAtq+mP4%cjmApMCkSvMX`le%iZp@+gpbT`Zs4XXGPzbz zdhYieXXVZAop`Op`|HDpc4DbQ94(izjWG5)8OTT4m0LgL{xCSaZ9WRN{9$gW2nlEf zNkPE?M9yER>kA0xBZ&lcs$g>~Y62or$3MG_eePN>LAk|%T(26n$b;CwJ$b+j1M*&t z;QTENsX-|szC1LU@^qdwj9V;O&ZQOp3M)c|5%QZHSO;Ay36)DI)hBXAptSg4CE)cg&RhXmXW~Vgbot4KO!uWgQPe{`iyuUGfu{k?i zX}vsTHjDZP){zx_{noc>Fj7|0-XvOUD7)qV@p_ds%6rlGW&1$>TQD8SNaxU^Xp;k* zM`wg+U+YwylB`8&-EJbINwrpialA<*-YgRLV>HYs$-y~ZrpTk#yOtmfgjL1B$60!w zBvlc)Q`Xk6-AL<oaEdb!hI(AjgwPw-5v=x2THZ<&v(Y4y5We-EssU3ODclzF=m@Gvp5wq)aOxHL!v zb}$qX@Widwb+yP8GqNf1RrAP<@aS&U*3<4aHt_;aPqXPN|KIXNt)1wq?+^Ep76yn( zI{O+0LIzNW8O6e%#mqzjb|Xc$&QOe1z!Sf8U(7E`h;Gw<^7gYfdtnvG^fq;8#il6Z z%cG>{GqGNz_V^;1hhl zVzJmQF7%6GGtUz}NJ}rWj0(PNaEU)Svhap9Hn31RF9G#^yZM}{=R{J5uWGom_LhmT zt?O(33sT>FxP&292448rQK(K#+HO(HnDGQfxsCWgK{z(f747dAv*^V+OH9h(WT3( zf4L0LrOq+Eoa1lhd?+tyyEpORj4(YIqOJ8g?nfe5i$-PwmmZnI zHC*&Bw(Z94uckZ2F3y_|!z+R=uUQQ*1?G2;I|Td&oBLE;q*lqsop_+Njk<5PuMGj0 z7Nmmy@C7sgHCqM&Y)2Q6vZCk-_M_X$1jgAB3`GxdpMYsn;;KsYndA6!ECD~IP?*7N z65cT{DVvyfTr`YbLlTo=_8-T|RzO;8O_)y2q8O0TEq>Fqymz|5+iqGfE404V z_uzaw&jj|UJF0Ax%3ntEiSY-xSDCg(M!+*dqi62uLD849^U|M#ZNr}>`8_!NEny1? z3yST+$qH3%)rhN}s!9z0$jQsxW0lo`)f-(dFFg6~yuF~AcKSFTR+LtGdfgO^Cr z7>V6DAv~5KL9s|MFfO0`!=Q3~R8@;sCM+{?{B2xx#}$@{o5xaF*;he!FAJ+M{ChLF zz+>yrk&S+8lTvhM){bX320ZpOcd2|R#ZdKb6(R=bYFL2{W7mBsN6EINi*P|ylfqo| zl@?xd@!f#D05S6dgYLeG?%y#c0WFYpbSoHKB_%MYQLL7e2ToWGQ_tMj&h&NT+t?CI zBOiGLWoH1{CL0e$W?4dlj7%$Eih9hq)`C14@O6N?&_DKA^5Glf43^9)ZZXfct9l+6 z!o zAyf6K?CU4T=N;7Do63gZQf_<*T^LgBr-(cSrIbu9x)J@K3^6`EL@obcbN0ImU}e3TEl zrD4f<@knWDzIeln90K&ObVfoWxeD+sDd^Cc^ubt#=8J*(`?&#Xtj@K z!~C*khw7n&mmolV2GR^VxV23V`k=${QWLpocMZnabM0cecLM3MTkpJCF6r?Ln_Mebw1G$bJFK4o0ocW$WYpPCl0*( z|LML*0^@W6s=5pCcCD8qiVvGer>MXAeTQvLELr{Lnfse1_Q)t#Mp9La2zDJLVMo?! zpXO7wpzHnIt~2&^=WM^J(erb!eeXPdFKNy`>+{%)Z<*BGbe?t{FkkCIEQ0ZhMsqYs zKq?1bRVoxYYy_5mm=%4UB+V6*)7chiy_SOyr||pxky<5$LR%#ih7mgMI8;Ts*Ih&Y zcGYC$O~tuOpSz@*4h}zw`b0JS!@zx&Yz##2r2tQ+!5vOW=fUVQfFewTuMhH?0!@~n-o8>y)X7S#A z^tOO=4kmoW=}9f#7j{=~Yy9h(9rFAC?#$Bs!0G$8oHmInfkZ1wiuNTw$(&Ktn8yz^ z86C)H(&YAo$j1r%b8x)qyfqm`$S^fEyBqV|ETC#fTJ6fX%3Bc7l*ak?k@}P1!(e^MAu4X zXm^+b!}pqdW|n^bZ=OF?SL$&x6HMU^jWo9oU06zP9{IpBAagbwiKW_p_Phk178nre%5?b0#ge3thfzDMd2rL zVwe72N0Y-5^l#Klh4g+5;YR;>pT>L{y@#+E{d=;RsU`!qTJt(TD*hRp=c$Ri(_!r2 z%(?)7zykafIkIQJ1uX+%J*SnMWULD3>MG_R(NOeEw`j&bsG$juuA~1O`||}-e-%rx zg-3gn!=_vv7znh=*Wx7}-g`dN@A?_0q)Sdb_SLczNkY}S*Ni;S!MAM{2@R7X-Yea<*t(c;Cp!6aMRK=T(smg1k{+b{G~S$G zfEu5i-;C1bQ;pThj`gc)b35l?EBfv({zF)U!f(yccF|@pP3v(8kWSgx27aE50A0hM zU4hP)O*}3~dk~k2U5a6pIX}FJISWE{@Hldy z@JY>Rql91#&qkde==SUl)BxBhW)#p78omE8%!BN#7F{^eTT zeK3$CR8BTS`|FN254C@@T@_NVwD#7%)eaZ?c9NnUc8$7$uI+`_Fl+Q8UH&)XDzXy6 z20ppWe{&Yr1m&bk4{0CDUQMb$UU^|~+SE_g`x-~thO^}f$VV}2JZxQ@VzY*+0FNQ| zsQ)~SK&uLUI9TDBBY&YxyKD7CgvY}7BVru}I{D;f^vWwb>xVxK(v0m;l1ddl&h{qD z{3i9-E4rEcTrv$g0h9)~eju*E;HX9;=mM$!3~CgQroWvWZBac$u?7Lw2xu~ngP+<8 zaKoLVvj^QI(CG}0rNU@QbnOZ1IRZ4aT*t&X)~p2z=G2%A{{$TU! zg#|C9Dfkc4sLsdaR{$~HK^<5N1b{MEihhGa|BY7%27@Utpcz`2=#hSkswu@_`MIq_ zBVa^+^v~wf$r{^|EulPWaGLNM+vo7Os8egbXvKWQ?=kmmNEmIGnq0B-bIej5&eF=K{3uwhQI!k3hiMFhae7ap;}}T>H>q1gcQJUf|c` zUA4;kHxo}TRwO!|KQ4LaLipiCh4Oig#uYsY4)Bfh$fCH9_8d)+a+x^Sq?+DV@<4@# zl$~gKJlpAt`0Ku|ulZ!=JFP5Fv!^33AbZjn)qw2(JSv3F>lR;8{=BtOJz2Iky5b$X z^Y?d*ZNH<9^!ybq14nnjL1hYw(11Gb`Q7Xl3R4}i2ox_JkzPE9Yg`m}F8NSeOX zPE#qu&^b_Z_{(O;z?l%azUBybM&)Vi#ff&ShO?g+=a6h`c+RYwjbU|Vq+FqeW84%R zf&LeSrBx?T|JCIm>U$TIFL_9H^Io8E?;Ds|p8;8e zYLtdLnsHD2KZ8yr&)rB#-b?216nay*aa8-}soM2;pk>DR;rh2uUZ|JU#ZG6rby%f3 zRRCo`7M~CN!w`aEE|-G~kYDL1rVpdhpWD(ryfPMpRYMXNpL$Ab4O+f5|GorYMz8zrt-PA!5V+IYTsHi?~R_W12wSFqEI?nlbOI0$8Uu`Al z^MtWD9{=I<*zXVF$ARfmIwyQwi_X3qKvbFo?ibkkrO>A|uDVOwR!KIM@0=qh;hb4n7Ju6@igQ!X9}M4<6aS6tjvhvh$I{tD=3(O>XEzcECqWja5pgRMqfey< zKlK-de~mfCj7wrTQMf%UA8Pr%86`~rFn1M8gI&S(ase0bZoKi8tf$50{wO=vujL z@3vPQ`@xTM->2!0s`r^?%TTTex)I719b7ZIzD>+%g|b$(tMj?4>!0{8SB1Y2pPMw} zrOBf#W1)B2-PxxVi9t1jpqW=x4L*VI#%4~ZN6zY#%VwQo9b1>=a@Xx`&dq#b$qE3m zAg7sRgTf!jL66!R@Oi+R&E*$RqLcP^vW}Z2iAeCw`!Rrtx8;8mwANT|0qreIiXr7W za#|>@BvXPHxcxyO5lRS$D!gd#bB_m=6rQ(iPIofh)c5CKbVm7Vpj-RNQk&FN;IV!P z)QzOXAdr4Afr~2^s3b#oyIUX!0wD|m(qL6>l_ms=)NRO8O@ocJ(U^TK{Xpm%lsG|* zod9+;mh(IlWwSqWnt}owN%az`Iu_WQ)jvvWiq)NvLj9lm!-KZ~LmfW`J7>(k$abS;i&wggc#mln4h+n>K)O$q`V& z0~G(2H2kOvYjr&HD4-&s)NqcqY+6HfRn@3*ErHN53yOb+;tURNS9aU|w1G zRZyIh%eM`S89$lI!Xp+D2%PW&fdu&rkfRkrOWH%No0XBn819{glHr1-7$v?&&zFwX z5x8JOgrz@UL6(IDOP`p^y)O!Y)-8gthA^Sru%T&3Pk-zvt{k4PsQ32z+C>(%edF08 z?OhhNchmi#n>;NL+Nv}z)E1Au$|)g9@W2mP%{zAA8#0(_g}C!Pfwii)eM9z5jw$4)I{?6bTPGSS!^0?~6uUt4mpj|pA5gQv^BZg@6>=7s zt~DVw6Eh}z7svd~zk)aDrAT_re?|hRglVFycx9cI}|9ZSD`lt?x;za|Wy1*MCpPRzEOhK&Bx7 zXV5YZ;ZbEdjrQ)OH{?Ma{I!kf#{jjp^n@vjBoi@wOF4IKlM{v{p@8kf==%+`<=jbD_DleZY){h4?|Ri&?sGqsvF~H z%UX!uHNMZnx@|;kdch!CHPeF-DnYsxX{JuD6%DkK@#Pp1o{nL_fvXAA`;?*vrBlyQf{^;+}e+q`6ookcEGwudB z6E3f*mpp`xD^Ofl%i^eT4_~h@vGr}12eN2T$^Fl%<`9g8%?1Z4a>jfi3vTrFJ<5%; zIk}FuUeLy#WuoULW@xiYt_`XAmw(W3LzU3=IKjMCFvVzDTX`I?T^nXK6(4? z_*fFP;V-DiRCb}}Hvl}YG@N&E^P-ku*Ag_fd!S)9lW`?FDvEQOA==jIs74Rui8T?W zW=JTCYyF{XL7jQ-%*=F%bU=QVA#1d#xOLC~0y1Z*qlaERcmaiL|BVziw?_{?77qTM}-PJ!KH_wD^?~k52NB-gGIg&<*hp7@8Hh8{9@l-7|@iakQ|N4a2TGx2Zno! zzXdm-0&idKqOo9B_0317z4d5!UnT5Nok@-vgwo5^a~eo{y&YiL!srX=R8+L$d#s+t zl@Il;iMhU#-)Lt~=gv%c0j%Gzfv+P^Jqhp>6b=%JR9-!buOU85uM~XToL1tNzTvDJ zs~uCgc@*6PC7(5G#gc8(Dn`S0C>nLsDh)*ablX|tqOJ4B_m%H1;QnA^Mvbwcx$z3j!in_ok+KPhVUKkcoW4nYam%#`K%$J$_s++`Zo!)hks zo<*nNKct7M1B5AMe6Ea&m^{EH|EI<^wS4sdgmu5reGYVOW(!e*bRMcF(XR=^LYBLd z(%&@kx>9nER`f6lB^OMNFtSux>C-UkX}k$x^M;A|wLbqjqP*a;pw{~$VQIfs>z8M{ zEKi+4;F>S6^I_knmE^QOAy|_>lLLr{1L`6f{>6$Shkn3 zGtggy%RLgp6&p%t@~@h6?y*(WwlCmteIJW)%WAI>hL~x(CDR#U@ql~*jerr#fmW@E zPTh=0Xo!ds&!o@i46`G4N^~aGb|QLtel|7nK1BxEJaH^#{WAY-EPHqUBVI@{P2p?c z+IyO@O6`e_8*=2?k&0-;7R_EdCcnp1X;%wuC}~f$YM=cWB}saKWhH05{qJfJ(d)eg zKVvd9!(Y^F1phS8Gs`wVGVeiL?{NQlCUYZElUeJXj|A9U)>13a3&00$&UGV>+pQg_ zY8E8LX*fk^M)sV~FYXjC)kksp($bI}Ks&_=#f4eFSqTsxpmP!mSQ}V`F;Eb{4*;22 zU+}TK4!jg_)EX`7JSfK0k7n z6u}HT-U|09-(2tK^bfEY>FXLkQ!}iT&GKmDB38TAq*F@b<$J<;SQtp@^ni&HV;DKP|eFrzQqv$$Ge?$)GJmsR*Y9e zyz8tHOS;dRp4d0=%RK2IhBuj!vdQqTs3xsNm-XPqC44&%W8(FAJ;@wunr78NGFvsZYuovS>V67F%9q`Wog<^>T zsYf4#G5Mm$m*x#4ki70Op3(!J5tqEI;S(OG%oXZppGr7g&wO!Xq-!aH0PGh?vs-XO$hrZ@6z|qsR)$c=l1z zLIf|)b(X%?j@bOe5X6xMA>*H8sX|J0D4p{U!>H0x)UuTT`M4e=8(IOpu=3j=Kz2UR z?DfIkD?CC+`*~LV7oR|9KdDyjXT+|rkg|@~=)P4--3TS!@zZDnl$**l2aV9x96*Zu z8}O8`=}OkU>H5Xiw4ZS9W?!HrZPBxf4R7a+{D^9ls?%^RqL16??=HAYx!T;w3F6+w zy=zl=b!hd-lEmldpu7pL=b{Rd`6(<^?%K4zsv-HOk>3tk1*5rFrvFvBpQz&voK7lx$PA;Sn|tnnx&C`>eetj9iGcb+HL~XJvw5f zs-!BKF6LVEIon`&s7Ud#Q@gjw!y3pNs0g)y_On*uQoQ!R_daDA_eTH4qC90et%4^C@IY^q zmzq0qFd@5E>4`ww>krH7?;P!vcl75G`xeo6Y=iS#yO$Kp9JtY!)^~B6oNEq(v@eMB zF5>U%Po7`qhU^%rvY^qlT56sW|1i`IOf{j1<6I0Vx!oPV^;bSPQKgAc zobPB%kI9$TIS%H}Ig<-{+lKFcdhS1CyO7i`+~<$}e?E_*ihB+9xEaMjImXi;*1FsT({Xrp=v^*oB6!SZ{^L) zUECub9V>P}jvd-@S$}Oz%SZC?cj_t)fR;hcS$a5TwiveMk^sPv!0X_1E2!(p4(OII zh6T0m`S&%I;58r~|HF&Q4^gxKt&I*0y$;ddfQX}taCDzn8mq!h759`*xf1N%{8)2j zPM1|D^4bo(M^qi0L;vmu&H$(8FfSmY+U5jGt013EJ3LT3iC?+PB*jH5lSJ4)K&t%Bc2S*}~ z30kDb&YY+Cpc=L57nh$A$=DVf@tw156rS+%rt9(zo}!*#TuZ%_&EG?A0pSS4=A~gt z;!^0tpZDTdN#X`0Mi0VGIyU0-8NMkS&sU&eX#{iDFCR$?4`)}4uS$V9+#UmkV)^zra zxivEmWUGTp+2_hB|A=|hA&<5vA4E1Zrcl^iC)GpLh<{tl|DT^G3=M8L6U;cztREiw zm3rj|xiQP`kp=nrylG5NV}M#wYqiNMnXA`pOC244$n84P#nmXs0MWP*1)wkYe!7Mp zq!YL%{b2xC!&TZ_It#J~R5RV!R|l4DAC=H91(m9d4IR?17SKcAF68%p5v07p* zG42?$EDVebo`sRG=yslt(0=Uk^G(7*X;s*X^h5U;y4DJh_`!`_b}@cT2P4JbU0A<_st- z3jq5=X2Hd+jTvset$B)L_p>_5yRjQ+<_gj}Hff?mbYS@*y! zLJ))&x~ueC0CiS?2EOz^&U2^p{GSH8E3lxIG_I~k*lXUQ%sGr+2AX7$1ZX|SEwFmWJQ z+GF)wv+H!{acn8*gJjRoTelSQ;2=O283@AGOMkbuRk&i5I5F9ez#A7X$uH*!&y+%S zZga*_ryl*^NJnbBO6zC-3ic5a=*=Wd&j1Th>=SeZihUpumgJa$1$VEZ+qnM=+S-Ha z%yvs7se)Vjz|;@cee=jCZsT;G5%?=WcU6K=xybxDrC0UG2)b#x4*n0>3MVawJ+tFv z3{#CAIXsSrWw-d=aDI&M7ndslQFXTB|Do>9!=e8Bw(*e)i9sRj5TR_@WgD$XQYvei zvV<&?3M0%%3$kw^gk(!%vhT*eCPLQiTlN{tn9TBh-hJ=uexB?4Uf1*7_w_u-@jH&+ zA05RZpU=#^KdkbaFz745n1~0SwvtZ_zEGxX6FK_S4JMBg{|4hf$BIFig>&g1Iw)$-%*`RW-#i zzxO{r+a9gEA-65_Zp|euB5pOUh*Of3Pu4OPC*uLm4NMpoHTL95XThVAPu2t^V^7db zWEEax+6JHDf#=}cT50sAQ3v{W+`KA2PyQcus(?%tNTV}oK}>&Znhogbo2>Ce$YPO* zL7?Yo@`IK-ae_Je;)0UP#cQxz^{^)e)}Y1%YYUC+qc`dFADg($9ciFwpD2N0FfaZZWcty_;$a+FizxDC(KgdE zG~WkRrCZJ$BWV`xFLP=>_l`>n&PhL8>*if^!+ui(o}qy4=3+edj~b0^PNlkF8k z@76zkcBU=I`aS*}c-YGD93J7k(~(X1K$4QOskPJq8tv8?qxHQnCXPaJYMG;4}l)%vLD{9Hx#zDmbf!)!?Z0jW}n~0+2u{ zj|&>c4*g16z`MYIX-tNpNNUb$dsebf@Sk(2sc=9zhmQi5sxG1i|4%L#bF?>gOb<{c z=r;L7)Z_j0K8~fyF=)B#UIIQ+N4p+N^$5ItaL(cRyxvnfDE9us1zwz_avJNF)X~zZ z_hwjnwW?5onGwgKX9aF+4fi%mnfH$9A}UZ^^y5I&@+H!NtimG0t4FBw55AYR6z`l^ zu%2SkceH0B{@kZc{l#KUuE%Mu2(sT$%LZ9LyoV|s&PrjzUd$Pls~ai?LapQT>mc~7 zl1T-)Kgar)jF0%r6Zo&L+&hp$&m^*QF2r95IJWoNd>C%jHi&2Xz)10=B>?hc&tWia zVsXJrldY~+_T5YMc9krtI@QDW<=ECy4M7dx`n!0(z!8)4g4~s37&xyg}iEgw>!69z53PJOgzw&gS6aZqBHk^w4DeJz;OQuXh|gt zc*u`Kn;0a|@6A9DDv+%wV}Xe64L<}amH3`2LEH$+Ae4u$zfW>zDt+B$|5U_SQQtpy zH@fo!U;T-=IP>-W2av)b^*cZgX>iO_N+SUF%>rFwI%iRpu40y(Ll1f$9akLvsyq8d zq3x6=#Bp<-1=j_xpL44UyjthTmuj97*XM|;iEjGz`7bMsk?Ce4L)*OIMg1#|C=AlZ z7bbu=uMrMtxoNbMm+5&(S7_AGj24Gw?jqhe|LyKjL2J6RP1!D2$@Rz*re7Vp24m$p zd_9(Q0J+)9|I$RhM1Vw#+%t)zv4T6lhn(vHkkDs(GBxWR{DrRyxO62skG-6c+%!EA z>XpgI+a1y9oa_@VjJ3f@e+lrP+vhKwD5SS$0yU=6Dxmv63xpYS$(n8PhubAC^70g) zw3B?^ASat`qL}Hw(jYxVeuG=~qBD{;!f zv1(u438+oD_3gq-sj3jW>+buGG{mSHpO&Anzb_`rjy!>Pv%;)F&Ksf8&8PEc1cs<~ zertQNs7Fu(XtwXAXwF{Bh8*F+OQM9FAoPW&w~{oQheiV`%@nJ1O*civALcB^p1L|< ze;57&nY#rC^_ z;s|AMw;)e6sOpGe&d+#6wjoC0hWv-f*7sxezs+IhQ+)EcIy)T^v;mc3&q9G3^k@ z`efA_KsbEOKz)7v&(`Ut@$c4Ywc$NgtCoz+y6sd%4xBZKAoO^v4DOT}J{I2pY3!k$ zTZ;4MK7S-AbpJAW`~M3KVXue81!}5BvLQI3E2tGz6(|iX5ug}h0>ucNcDxSP7&&Z6 zH)frdrv>Fh`Pdb3#vGx!ff58o;1hB?1Wd0IEa`cFjj5aIsP7P!bAx_m4@rS9qdHH) z=ueR@lOQ65f*MMBd2-KWheG>j5DE{2{u@699LQ+d$f^7^?mD=yGZAXUu>e(})UiM3 z9SeJgiPr9%h%@G?B9+^VE2vBVewcmsTQLPB+7>(oJ`O2Z;0v$jd1TOs5X^3Cg20~G zRq;nOtt)Ym330CA>^t}X*xuM!-J0HjqcA8^2%$U1;hpT&nL{ZJDu4u`L$w`1f@U+!S^%`>PTwBvS_{Nm*p?=as?RGniHj>qiQm;X7LKEd zK@B#tv&p2hTY~oaz-zUN!WEmdX^ZLvs;t*03wfzWL53~$YW3FPS*c_F+$$SvST&&2 z@A_Bwz?}1x;E&+AGh&{Bh zHL&n$I>0~%i1z^zaMnkE^D$6m_`UOJ6vxomB*6s!OB)x0+MzgupH$r;0)30`;E;16 z=gNFRA5!=fNs|t#E27mPr!s(w{^{Q;}=0blekfDzf(jaiRk zdiN3Rw<_WIq0dmG#Kg%L#!jAEAu`y}&wQ$HRdvpdU4^@S|20BkgaH59iDK+)Ie$0;3?Lz~Qd^7Uz(VTK6GiASJqNy#H5 z(^=F&6M>sX?Ge7?w<9jYwsB+`RAcy&dVC2sZZ>>huch8>t<;@~1JmLIvi6SlQ4IC6 zyfIeai`wEN4O1c#W*UT@Ie=y6>cU_s{9Dq>f%#^_?Ww?t@ zgnT*_-lmC>|G(fj%60!2w8;~5Stw;% z)9>IBaHV2?f`w1D{5s#mNBh?3j?R<^G~5$M5A=xI%tEpkJxYuaUnnIXRst4vFNe85 zOZf?B%!jy2{!U`?=>M1hX85D;x5sl`3N2ieY(81i<6l5men1+Pe_67!Q(KutIO4Wx znHxWGQvbj?1I721z9J@Gg4dY7+%(&nB*N(|JCq~zK2MNAl75a}EDcMFzx`n1NOc5r zwrt14=wMf&;JNbG29hz(E!zg=I)7L#cE^Qh9q)=3*&`?>&e!zY4yE~M=_7QTcZ+8WNfbiU_G0KRh7}`XpF`$?;kguuIakILv#F^$d=Ns*?y60_51X=tN?C$bJ^ zaXGcI`qezdA75837BE>6H`(XrI|F`TZMV3LJ5i+xtK1ZEDvTCWvBEt?(ia5nu!7N^f5;B9C2tZozQchD0tG{o_icb z$vBbDno*CpyAR!aXUwBtX>myJv4fvYr1v2>@b@SEd6FiZczK>q278!q#|`i+NDgOU zBoZf1kD%0lS>1RjvadVr8LBI?J~Gr2U!N8xe1u$?-Yh5QtK^#?v2ScYfx|XcXjs#C zII-W8UCn`;_RtZ<0olusO-`RD-$psnrTaV_W1Lfjyd9u1Rxp_U2dC@XO0ql^JD*(!A#J28qcw#f7YI55F}#0kUEPFVa4=tF5Ah z$Q$Zn<0*b#Xf5_QBlVPBp+o&z<(s{QI%Fm5q${iFt_B)bA#fjOxzlHzG)wcJUyC;vNHQY|3Rnk7;@8U)zrtnIm=0)e^2xgFWYL7KJOxK7wP-zQ?gB%(!n+@v#l2n-X1yDXFr&C_TC=T zFKRh1sHh>-*{OGq8LU^*Kq=5*N#)GNG?6sEpj(fT7C6310`%YEmF%U-|*9@xwA0BV$R8O=<0y#nEhA%Td8M4q*g!HGt|%cD*@5a z{{nTutyBX#TF*Bfj46e0j(_nGHI*GXgJ*J`X8xZ=U~Q(Cj{Lbr`oHFwb?d zWZxy*R&#)9HrN3H+T&Z(_fsfmm!A5XTA%7y5pdPnTR6cyROZFJ{M^OXr+N9=vAKW~ zPhHyv5sb*Gw`oN^tKBo|brMd6lMnVtJ7V7(G zi9IN5rR>J-Zuz~6qx$>4fSlLdtnU}^uakr#19QXI6RZHF#?v{wIMreo!Q&)A4$LTb z1FVs~TJo$zVzrj7mf52ATHHdiw@%6jUDA+gk+Mn4sn;=QIM(d!)kR+e2kIB7N&UJa zXVF~Q=KH;Ei!9}l@?EWKl&$cJ#WSsEa5HF9EfE!<^%xY5Mns3_Cn9Dq4D57Ox@L#c zZqH)*?X(BY4o~f}CBc5R{-?wq{;y8tzh#Q_kyEd$Cc@ughpV_r)et(zN;NsR^+aWy z=(!DsL)Adt_9=U|zs_&iWFBD4K@DkpD>HD~!A5-AT^13B7-!0D+It|T+4BNX8eSfR zoPKcL%L^XF)*LTu>*?CSn`)L=@j>(jbFA>&sV(cXQ)$D=Btcqy!9DUbpG>Dwzxhz_ z=m)7M2DH8h#72D!&EXKkU0Z(E@Y9j;1-PUcw%c;C-q=4uN1T`+yF`~FKXVtNlKOHD z@>lPjD|^_P69=Ul=xgEL9QE(Kh&>E7oTn>-36KEZ8Nr8%Jy$`w8k(tPsq)f)-da}M zw^E3CDl_(1!AlR*gZQhE8=ibBA;3*bK9?#+dxM+2Ui;m~2lNYEmxPbyzemUGuX-Ku ziVM_B@&CYXE7Pn9X+L40Wz##bQs3xG*fu;IXL2!~O|R*ilbMgci?K6&*bM+=WBOw+ zP;Egi$RMEbf1W7N3>~hq;03GlZY1ZE6{4sv7n$JH+~d=|yWl1aK#QG(Do;(Is4aUz zEOjzQ$H|PSN?wkMQ;FjhzY*bEYBDTPe%EYzk$SY4 zwABY7aiOdI(`t?0nP`|Juf&XV>kYo|=xav}xQ`v=xWHF-5LT^VQzHQb?h!0$vk>_# z-W3tlZz$2_`oJnh;@(>~ibqX!Gjih(SUhxyo(%Rxb*Uj>cbieHn9U&_ufQEESp(IbaR-enAjSC(k)i=* z&Am@&zb}l4YSoKB0~IT8?mdl-tEj1L_H@*~HUDHhA~d%58q>mIR9RFk{ZP%sVbCWM z^^$K)>8fEj)}{dkMG0-JwDzm4XBRp}6DJI<(sIaXQa&+ZjnnQ!P)n*%e@Vw{KT>sB zV$IOrF`F{f$FwGLS!DCmRqNv@o~-Q*3&V6@xn1loSbbCL9;bn}R@Lu!Ly-nJ5-5HU zEp2CQ32K0gQOV5>J7Xh1vqx0eB^r2f;(;3{spiO$O0i7#Az7scwl z=P10$l|;YslW|aI-+0SCpyu&?dzD8T;#}fV(1PW9bBfc!`g|JslxMV09<~{)sj8sd zZ7Y}XXgNc&D}oMNdp2_RhaXI`6gpm3ZpNc_ZDLg4CUtyJe;jk_=c7!Y=SrxN$<-C& z#l3~6ckRmK&8gL|GDAgc5?Ro4x-cNZdRhbq@s^nFyvTuo zpuMe?kW;BuxV(8?xgwfJY55VWJ>S=Qo11TNZuXKBcxGtoJp{+{`6|>M#sP+>fwV?`IyZ?>8+6ONcwTlFFA?TB049q?5- z80S?I*i8CN3!FEmm4sKQ00p@l!1+-AC6cp7kI>Z;?G1eTHtrWCKj)^FHMS=%$H)o6 zJ?=VhgDxVA;=KeFV{^O+$urG;^8PB6Xm_@m+^8k9f_++HA6bu`I8@#E{QB$Df_2bC ztRl7pQIxZmWuN1#J0v^(y+Ay`bPUyt<35qZ(3xQMtXkwO>*(~ZO@CXA;4#dH?$nqiNx@I-?^_Mw zR$uJ8CHt(}^8i*DoOvW#Tb>j>umy!E-Z2IA`{7kR!cvM3}_*x z&D2Vo21`_aTYPgqcjWThK+LT{j9qxq{#TxC$o`p5TFo!LcgJ84rT2_Mj=bo5mN?lAjU?axUME5hy+)MXi3~x@OjQgNWK}0= z+7%Ug1luJhmPu=JRMvO2JhF_Way}-R*VOog8gpXGS|x2RC`^nfiXa=a4S9Uo#}Xq8 zoY#9snn-A}GiWK#)Dn38<KltgUNH^9M zSz}T;IUmaYq37kQTK(u-*O6c`_vp@|80J0xy)ilqj^g7qS!|l+MaY>ciGdpHh6*k= zn>l7*>cidM?|n#0ruXv4y1TdIPVwEG-(>jpjR;MngXxDrQG{shId*Y=xlXV;X7Ca$ zAdX4lOX8wkVO%tP*W9dx-k1i4b}YzMq%*Y}GC=^ElmiM#n-3Az6K3$779*H~W3w$0 z<(cDaZ!i5=<>gu1dMBxKJ2}ou((w#VoD358{u|L} z((jB|xv7tPpvBD|9DKTjkt`<6zQ!3R@SCyTEpOyA416tW}7x4PRdwvlirWeZ*y z%&kwB@W9GWD{5baRIJ&E(5o7TnQpOGI%kb5(z3VUeNA!2l_P?^pP#5}aYna`JXd4} z{>}7giXvhDK_NWO5f(y=?MIl6xNP|&2nnK_=Y zCt6rW01RKn_CedGT3`hKVhoT9v{C(StA!NEmznmFD#{e#YybG(G}uBJKTGn{J3BCP zpmth1NHt%rL(Alm@B1quihTMEz*#Sia9MtMwv9h!FyHkZ3S;A3uBhR-n|~OHb|)O} zQg+8tq|){79)LlL0Ceh4D@mhqM}q0<6zTUMDAMdL8Q+$wP7e6c@(Dv}wu}r$PrW)T z)SBa^GS_ja_;k4SeNSe-Hvvq1;yV)fk7>Yp^fb~&KHy%B(TpsY(S2!#1!cPEfJOd$ z#ytJtIbA*46BF&cU)PD*arfSl+pK%H^FC~RDp{fAIm(H;%iOql_*3w4jhIiL-f`4N zoo#;yU(F-w6R(C7BT2esZ)`!a)g;+%(y$s9*gW`|7V@7#+J}lFTg^bv(~f}JtGJcZ z`zbC+Zmu-iU)28Wm&X#`BQo}O=V^o7d-C8Q4bf^#Hb(MHs=-R9r2%ppr1E;Fi& zcPq-#DGX;e=YD(~(L4*beq}+5{d;-=>Yv#K13FxQ>4m(Hc!5QJs}m0Xl`yZ#uEg`wP$k_CE&Vpwq^q*&B^}VR^@hfdO9jt`)N$-)o}peBfJoGn2qL zhzDbmsn20~6yZ)5SQ$S1*}D5l+AB*W{lJudKNyhqNm98duaJq;cxJNktYjnNsB@BVczOv*WA*9PjK_|z%4PXVDq_@y z&R(O;I%qxr77-L#50RaEMvdtqZGdv_1A%rcZx2I@N1`{LAxcp%MF_aC0v9dhtmX%u zo)14Yl10jEPCQ)rp8ZQQg_Do70K+BUC_3dQ@r^_71*)qVqo{#e$WN!kI~`@Fb{im$%Y*$y;p*j?!bLkqAua zb)qbllUb}{V11z`QPlK4XWo~u4U9@0?`FkQGlzC=053`jrqzptPinz67vCFvYPqY` zn%1lls#2os;l!!+iW!LAhUk?-r*xG2J}D!Pt&9rCc?j*qr$8RA2b$$hggB?-&>J8NgKrJye7G&Ks;ez5c1%OZiML11EGI*>f&c_l9_#IZ|ID%uJN{)foa4 zOqLwpCYp}@i)J(a+fNUp1z;%C?@hJT4^401IR|rWg@;HtA*Wtht5Hz?brQa6F;^h_ zWmC&f`o`BG*0Z7rlQba)Iqh*x0Y3bmPv^l)bz-^{HRi znCrFAYvS@@*eGAdnlc)&ibJ^e8B& z1jKq0jJ!c-UYuP+Hl~#tO$O}nnJUb(9a`@kb8lVA^FCgEO=(D>MUE*S`x0unv)vOZ zEI^2SNmuk0C0?pb|2ZmPY+KNlxvZx8D)iB}WW!*wX9L{uI@QPRvd4a6=x$Vj8L;nz zVQfj#3#W=JK>H?~DmvQxZ0L-e)35Fl>+)4>NwY~WiO0C9hQ!j%63 zV*-DuPx0B2p!So(+eQjL@Uko|d*(MCT=1iPDPyAKbe?eCZ6%p+t@zdV0Yd)Vyug_1 z4Wf{@@$-ZPktbN9nA?AgAL3Y+8T`iZJ@dk*h#0-OLcW zH{B}K4Ux(rMx(IVk6=ijO(ZF%KiTxwBejBXS?sN@t@PY;G3CD0)V*;9deu zVOWxMnan~tLDl_Ub29sE4*8vBi)>&{9;&3=RkntB`Ci%99b5P*X^G)prGsLrQjGH( z_wlmx7O0w713P`~ z2`LN$0f8U&H(torA>$mOhEsSqR1gHG^2x6*5hKlmnm&(>cYCBSn?)Qi9(m-|?W~+1 z@G{s-KVnWAZ7{< z3ePomZeE`EI_-HXCjiD^?L-lyV#t$-HCY1g5`x25_X*9aMME}gzW70c(SerQmTdzW zlU6&apUe89&ko|#@ev5Z)wB^aQtD79ImJ(CA}-Ha^nTh6!p_|FEMn{af+9Vw!}`lV zpC#vUdE>OnfRMUBik4i*g8>C22pJ{$Pz!%x&UDJ9p&P{!>+3!3TdNBe@3(lQ)kgy7 z`4|E(!qoo5Hq=M$KWsx$v4A%!AFP1}bd3jKjH9RG6o0J7Ib+=EA+I{(fnLP2Xlmj; z)^|c9{(@2P8hX5#yzWFD&1!Wf3&~9f01kcxq~}nWeX(tl&A6&#@6aH zQ8EZ8-oIlchbhQ+yJr*Aq$MMKhBN4rDeMJkzWc!BcY|a{G;0CtokHY>DIpzKvzr9u zsK|h=Q}*Cm=3AUQomkbr?=hAcvcmH-+HvWTf^{Awd{hT;&owp|^ZKX+0_%`}P@ z@+cxxQKLhE`^^4_k0B~s>rkVvBlg$du7{lWfBgD~ zI*e|JoX$ZyA@`((LG9ZBKsBJR|4}1hjhk}TS;J#6@{{jX;>DeSZQ}ziHGAJzKX)Jg zcxyJA-{ezRW}peP$P^LPrwBEGdee@3KxeeAS)Tnd$u?IqZoA#zAd)QXytP6Gj`<>mwibv+ssE-#zTRTq_Yw5}xoEyG`w=l-R6NAJ0>{R}b)EB~#=Yg(Y} z^I!>U1=>~8+S7=U$>i*G;H5*U%w3z58+21IH7JcZUG4pT!_wYAgBO0C-nI~YZ^o9OK<1OB%ZC5F>1ia+3k==LjMC4Qm zg1Izbpix+p-2bs?&>agV~9zx%x*t{E4FeD`vX5`)Hjic+gtOq^1^BsZm1bg`Kz)6ziCt9M@J)dub?ZHx>QMG{W znb5hlV_`pJe68wpVyq5RUmkv>w`nws<^$w+$gWgtTO}O`^^adUpk6r z-w}k{cz_d-mHvR;t^w?$baT+;*#EsX^1o1a_~nFKw)!W!G3>8=V~k`I8b*FGlM_kR zCd@W|PTWCrq0ZX6RftPpnf5BvIDWV|_1Rg;XQ&~sR%qCkbd{F1Q@z1W&e45E4*KHk zQ){SKr8;!bk?^T}-*FpnGuROsms!}6h*P_O=08TVr$vbk_&QAsh&uSqDgIbV`aasB ztU7LS0XN@r2r(m-R~_E$f106}K2SxEC7?;#nw3-@i;>cPZldoW{S{+-T+r_V0xe^zi#{ID6Y-87zU^b9+pV4c$ zUdo+J1jJq^{8Tss0Zns}a|)=8gX^A7bt*3>oj$hB-?`es5)BGv=Z6N`U!<5U_b8-6 zT5uLQpW;Xb@MM;GVhNJRy2*aVgjWhb{B!7DrgnHsrZKamzwPyb8T?xmBc`Vr!Cqtk z9<$q+AklA5pw00P#zcfFvkN`a%oRJV!5M{7q1E~xCRYMzBLX1pTJl7PCUI7I&XLRo z*|D%AVVMMl_1;b#-;Q)NV1I)RjE1{)0J>;opr`_iu>Qr(9ptNoC6`Wi0g6s@eoGfS zwPUVT&*PEwF9%#7f_%!M?JNKjvcGT3%FTB7(h+U6AlH(4%LNHp9|>gbVl0o(r_0V; zPeJ9^1K!Kpq{USWLfynj&_<0C+Vw4g&sG7^@vIv<#!Zs~*FFLK+xIQwSyu4?TIX9P zI9W>(=C;B`7PYXk03~9 zSYP8VY_8>gbANt)R9oh^M^m6g^6Pr8^s=tiG4TU{N83;pE&aSpHVQ$(- zw3hsb_CoM3{)vm(&3bhItvP?65JExFS?>`dEe5qtOd-QHZdkbGhFJPUJ_GdMeq<#&c!z&MHvO77|0FaSqdkv1%==rBqLdu`ef1wuN+O|&D76~J$4r_ zcVXACIcYOf^iN$&<$o{Wnf)c+`Rn|PfQM(4-tGApt<1Z9`18=TjXMxjR04Wx7{kRlcn?L_HSNX`L7P|=ZVMUG4 zbBa+wW$+z*`TTFi5$)dthx!zyHabVST2(@m(>mIrT=z<3_K(*0OS6o57i=QVAu9^> zL>Q@sLpz3)W8ir(qVxDV69!YJHo`_raW8d5##*DU?1q(%VzX!Gxf-N7`Sq!80iDz~ z&UHcgBHtU}BSmA|5qzcIHC7+U#uTyZ0|$S}J<$v-GBA9+;H|LmquAj@v$tC&z)`h7 z;FedKCc!@D@T6|F;hIUC<W_5%p8su6oePN)~C zzo#z$#_;}8N=_P#SeES3V~jH+Cd{BPc)sesEO5~O41R=>ezkmRgBCuDpvSkMzJV1= zR{9kZngVwMy7c&zw2=dG$Ok zl-@;9i_lS9=CE<~T-WArd2=_^=d?tHz4oAi-9;VZHKttfIoV<5z|+o0(O5#UuHGN< zBQly?jALj}<#!tk_5(A+WOuOkGQWv81_W^=FEnk3{XR6oU6}R-sQua>j6HVawc1sk zZ%>+N?>3o}>6K;+LNIQcA@mow7uW#10S41C^?SYSGi_*#dn%2shH(ZS zl8OX-wvmS#9lqBX_#FtZnu^L-3YZxF`AYHY(*yfc4?uS&L9c!tD?R9pAcQ=E6g&K5HL}I?H_(k2417AK?l#f|^B#tH2Q}Pu()ooi%FmwO5la z4wpwPc-izQwa7er=Orn3Q*L$(@g@dq@_)glyT;UnBIwBr4`V=cQUiuf$H8!)l94kYz?EZX&+_7E37W_LGtD(ppr3eAPyjVeO` zw@UPM6GpT7c_W;2Sv7kMR50&v)vSi;53Wd3eRbR7q~ouu1*iibLpts!j?SD;2(|oH zBRY!@*Z5>@l<;bytgmFeJ}_Fwu=b1p?s@T7{*g0!LU~I70(q{7Z4Cul`+$b!XFlqk z>Oi_TFi+t@R=)MiK-0>4YQ3O;rybB`ngv2GYM=@^Mf>PNmCw;Hf*M8BEiG(7ZgQb*8oZF(CTDK;z4Q%?-)qN4L zdO-$MCiMRT2GZETrL8a&V*+9=VfyHIJB~3-j6k=5k068Wz{PihJCn+e{!c&SdQMg5 zEc1>U(aQ3&uae5+A7%C$32?`pvAx^A+!WQRD-sdtkIaRWr6X5&XOLlteNTE294^Pg3kP#kmGOOAYPxc}1yCoy6buk@CnUd6+@4x%xgr522X?|)w)x@AlwSHtzL z3CvaYuJd=CknKsFYfFCA{WgJfzA6T&1(V+6^KfveK@@}*zkO@+rG`Sz)**6N)b^6a z^$-)Pxo*RVjYHJmDJsbK4B3LvL`oji(k7r+IWabd0xaoe{RKQT0u~pJpL~CxeeMjV ztEdn#ES7u(TU$uP;XDVl8a@;KC1E0QkV~ zHQpC^lA0s*+ga-Zo?tHjOKAkZs+|q3S<*crJD!`gJRP_a2NU(gC_<8sx552P_$QJJ zjDBOeB`fPYZ9rA^bZtv_(bGw3iN^rP-y|IBJiWtOnvnJk@01pZl_hp% zY6vG3j2Jyu#xGA@7hwg}Lh%t!QIaKW&k34(4VB%%$kPEPL)MeIFkzfVdySsqj~K5m z`vooU&W5MnUnPbSQEzw4%#vK^_B_)W$L?6Re=|J#(L{gld};LSsoyxrCL82;e6QnE zU}iaI@_EEti3u&dyg>QJSJm0Ki^mr5!T8bL7VJ@C50H{qYe{8}*9<>$V@PhkEJ=Rn zaX8s2YS-en(u*Iej*N@^Qn*?`=KKQ&!wO>i5G8_mIQ^uRvDf>i3~Q9P=~ijAa&N~W zi90$j45I4$A4mM)fb-Czpt%(+V4e?;r-P}v%Praw@X7op4N3k_($KdWIEc=zz!X=A z+;fh&5vVMCPRO*6@yEJ>~P#<<9e{F z(S+n7&-V$z4ToH^E0a(=52d0GB>n*#34Rqtk%e4s{`Vh_Kk}LLm~^-5rl01uXKMxd zcK_2+y1nz^`IGxOybtD?eVZ)Z2%(;wO&j%@L5FH_%6RchKm+^^7qFtI|8b{OTD+)R&c(vyFeH5!phKuKwk#qLUQgabR|| zwQyXv;n4)Ba&3gH{G~}s=g6S0+E1WGpNMQe4X83K%c_%FYEM%(?<^ncnmAY!@6-f@ z+}Csw+)%?wr)ARRmSUVNQ@ZoU$k5eFqXdqohYGT*AFz%i{R*x5fx}4{=VpI=3I8E5@8vchHGu;opu~BNZ5^j8> zB4&MaQ!mLW%VyJ1=4Ekpv0br(c#OAX5-itLR#pzTo?ciOurB8&WE&ziP+eWw`0+!B zc&tB@`1hxK2-0OD>Lrzpa)qiyL`U2a?cJ{R>~v1d`U7URFBoQ#Mtk!n7+%!N)Ncsh zr3_k8asxz20M+mr8;MO{kk>LGjsefL@p4f9nBfIow$vQL973pzwM8}kXvzLkX5rE0 z!Al|LStc=h$AvzH&bNa3Dbg?c%{o6&qC2(hpWJba) zDT?-Po(vH$kNVW|2=Q-HI?Ge?N3sL;uPZKX-DP2^7kleD<&P;}eF65-tO#E8)-~{m z8iKf&_8&06H}XGVe(Uflh%BMD8cWz{eaai@tC0SHV?|i7u6#gdd`CK%(@oaS!d511 z_%7e?N^t-Z1pa}VwD-P;C)w+yz;fJs?Js8c)g^trw(fpys#9b?I17}c55G3s7NB^8 zsVn|I${$}055Y?Ls(-_|s?g+I&xpi0|60_QlNSxVl2Lf$^`nDNJ#dSi{u;7OEp!<| z`CBc8eCs8I)7SznV!;Yha`Rl@9C;k})*;*I36fB*1KR!GrF_5(Xa&`1gjwo!T_NGx zSp+X8>z?tE6|d2%v3Ld6u0*%}_JtL=H{D@V4npp?=Z{`vB7ui~e;*(n%x(<#*ULMJ zIH$pzRKq>}=UQZ6fBFE={&~fXDdP~`4y2fojb^AA1^ntUj27i5v%9qtsNQ}lDcWD+B-yc7Ynw0GlmM9Y(J5txE4k!zaf5BtZuj~&;ne%Nxe z>P2a9l#u(^TkbTe4$0MY$|GNG9-KrtQQ(}%1cy4sKDJ`T-(1{*1_y?ttsD4o3r}FGYIsO4VlMWzj;vTVQbcl3_7Nv6#+gYbE;47VNwS<)m zY;ow{5xQ|BdgDa=sN=ljl!3i@S9{2}wTRPJo*Fa$NDjz$&BON$nLGqJ;{(g8*lRs(;o;qB zBOcxRHo6c_uE`Sd%y#Wbqqk#j9vo(G6Jmuyh<_oylrPT>a*Y^d+jGR(WJNWezb$Cc zo8Ppwzm%EIK?b`Mt8Nv`FX26y!FuET}3U2#vIoUqWJ zAe*Wc+Y2y|rao|Vchr1p6s^Hs|@GR>J=FOwmEZ)W4@~y8tbyG37 zYmRX%V+KT;$s^RGU}%F3NIf0e_1*W3*NIPI46LWvZ4;HgcGyZEN34IwIsJo%2|ZKi zB>gKM@O^R9ApM%S|%p{GMbwb9L0pPpV`W;+(UdcEezm5pOAxVOIfxfL7?_gi&w^NXgm zbh?i7XzcP{TXQ7m_=J8-7%uNl{Qf=c*1WL)U50wxitRb_3(86C1dtO%G|o_riPo`s z7h-S!-1;Iqu$p!Cyw<4|EyYVC`z~l2Yg$BYZC?G|klv=n%gYPT^fz0}76uPTANDG{ z@(NDKjcG|^EL*T$NrJ8X_HE_>KFA2t{UH_fE1ly5T84hMGs#`*aw^ifZVM43GN10) zSV-J=4f)zE_fXLt<&P{!Q&V|=3nblvF4J+41AGKOjRO&SVYl8IR$CjZSBX!!nd)bX z$xP^pmrA#>R-e9j=W~vL-kBZT+$?FTu4n)#l0YFtd#=r1p8d|{vVw)`F=~8*c_&38 z0gM-y_Y*(D^!Ip_b^pJWSpI8=&ObKR3B712C1 zgBRl!+q(l9UfT(?!MuC^gu6DOzrkIvN9hanGr*hLi*kX?S106qtt9Dxu=nQiP`CZx z@CZ?o$WD|cl`VVOhGa`3#n^|Con&7}WZyz4$`WNa*@aB9Wy`+rL-u8cFqx(2a9zLa zdY$KaUBCOje$VTEp1b^d8G3>}2`u8SjaTY!d6=*_J|`GyOa>owzPT&wGb>=Uok>|7i$GaTUae zI>W;<>2Lyg9iNp2M6mEub-(1zQijo+Hui6Ck3P9O;oZ&sc6{$AGPQtw4KXovppKiv z>#egKpicet$Q;rf7Zu(9!94mzGRyN!1pk|OFP=)PB*=0eF&D&M$3rVdwzKHk0=aHD zRX^&sFEHv6aa#8H@j?S~ZQi|lM3XaE&G9geL_M%5deQ+}=~6l$CxX60P|pRSaI#@F zO0RS4H5xPGKHp)|5#nm2RwzQ?gtB5AFMJ^N9C?RSYeky0%8pjsD`q)qNKjN8of!&S zr`K<+m@T97gOJRxyo-hi9z}t50x-ot`FlNuRtgZ#iyr9UQt*laU|5CTV!2;G+Nhdq z3^(gae~A^;c4PILjJ#DqF%OaT--Cb1`j0<=Rq|ha#D-%#ZPGChdgTb#=}8O;Py?6Y z5Yz={3UDt4aqjUE2)9yP$dB#qrG)!+QS7jFeWs7ORQCvQ*hCnvp=ffAlJ z9z;WaLUATp;P_hg7zF^6l{?@O3iiF7R1;aM6zdd7(%iPM(xqB;B`{2NOd^88*d9gw zq4;9>RO^dbyQ%T{Q!ej>AuDCSa&ME5garYtsM!=@i=ro3;Ld*loQ|)|%ZGY6XNBI) zgVj@sKc`*|o5@>v+Qr`grhdruZ3%)%B|>$Z23@zR&BVQ{8!J;ThuDpmBzAM0R5#!Z z*CV6wkRskCwF8GFL|7I(K`P%zZc)0_ae*#U8k=`sVNtjytFZ3Z?T>d_)smnbIZshy zt^N_G$q1$Q;o~}OP~7Fi&1cvQSVmiY!gHX^le(bfnzW))=g9Z6R?#+@%ehGySL0#sjTW1w-jPq{y3 zM2(AD2wkePVN<*hvre-U;4pdd>LM5DW+|yKYVYTDrdZH{;kh(w^&bk3s?Ml)^T{T~ zyy)@|HZAN>(~}J~%=$BrcX+N{XCnW=j#w!#m**4Oc3?2e8-C@`esVO$gV~jT*Xw-` zMHElxH?`^PUC2!&8%`DMwa29OGq^)_T;f7`>71i1E#RzI?;ka~b!BhG_@0hS7pvlf3_+4;@%lV|fnTh7EX$NWRNrI_x~cr#tV)5QxlhK!RGJuHW<#5}ZPVi1oNHa` z7ejy_&8p0Q0A7KK$2Vxj;{viZbSWsBG@XwPoc})`3}qt5yGi%@7N|h_v<~Uzd&DiU zfDCnhNvr{d1sF731&tRm_8WI~R`c#XD7t76`m<2*2((2ZUn`KCLGv$Yd_uL!r?*}K z(PA!q7)GG?CuwV$1I9P-E&|-U631V_G*y5^UEhVUQ3zC~K*k_<6`=hkcI24+1AzSk zw*jMK?z*#>{Ow^L1;FF$_6i5Pk`4~9EV2%o}8%sM0Tmd0bO{3PXay?XU@p}#OD^l)XCL^MLBH8U^ z(?VifTBXMh2JPo;XI40>Q||I8prp|_a?WK`33QT%bgCFH88jHgn}L?^p~85-jr}8MM6&N)n>(3yvpYhzmpc$c3yhVV?HDzwh3$u6y6^k*T^#Bq?BaH8>VCaHK z|1ao1o(Y1u4LH7k1lED`Ca_!n>wFsZ@(4oI1>cvSX>-O~2#KF#-)K2{X`i{t&UPJ2 zA+--DuyCuQjw$a9w|lKajjNKB&JL$Eb@E(QAoDz{v{Q8iTXNmZ!Zw1&wu&XRNx1v` zwBhRE-LwJq!`ZHN>Ds!}bd;$#X)fNN3|{g?ZX~zPvJx|)&RL=5hI5^^iwP&!!$h1{ zs^3J^);+vrc7ZzS)Z$qcLCf$vvhx7m!}6;l4C+M*3{(g5gPtD4JI>WJ<`folRt>{7 zQ!nJsQ|NXl;O(>g2w*jbMB>O7B3cqA6W|z7bdlw&EackfcQTc|zNST)SL{-*ectKu z)Fq#uc-HOirTuKWh~gsy@Zb1mT0z`JK;R=*-;cOBYs+b&)F)xkC>40Gc2E_f`7)r? z!l?Hg zv>cIaNTk@EvaZjq8H>M78Ku{y(K)Gfxru>T3bn|Z5S$m-Ov92JU_QJ)nT3Al$XLUk zSsFArQw1DBu7*$bddA8Zlw?>b^{~bRR6Y&R-v4*LTYn4p;G+l8Y_(`epFm6JKPcpu zK-!18c%WA-`#dpilzF_jS?c6`H!Q3_ zp?BQs!aRBO-@i4YNA=23<@h&_4ft*Fth6RT(>h= z-n^lxJm1&!?=ETnVr)7o^9aSf3i$)g_W#eX$$t+W8*N2HRvT{~ABi}{HDn`i>6~4f z$aS0YPpK2%4((oR`w91LapP5HjfvrV=!9t7nr8SlZI@rkR5e3ltVq^(!9p{$X6r2C z=5yZ?XxY^`3W9Ti(o8@-m!o#087?L9dXGWD=N{G!4M zzF;yOjH%2grj<*e$yo=e`bSHBT2A_Z%JkJZ^rhh*Enm$(Q8H<62J{`Xtq)CdcYmRD28o-Ow+ zI`>p@#Ep+|MA&pZ@%P|M!6A>VI0Tyq2h)%wlxyS2Go7}WvZm1UjFKOPCWIV=6n_^i zE!9Ww6WV&%TZl^r@-!r?MW44s-&L-iOIAmt3XHns=u{1B%^Y{m#1~y%Pn0=Bs8?0} zoVYofBu$JyxIm^x`B+E(Yr@i$Q_Nb0+EfH(8)&CA~T0%y2bjpD=vZ4 z$%a+;l}?v@Ywl060UUK@rqv_$cAc16ZXHo&Y zjwUhPOcAU|e%ZBM%KfFWi`;mJEz>YYT{2aG;d>}v3AhVC!wo7=Pq&4^256-!v17c( ziX*5G)!lxheR9DLh;#m67A`IM8**;r=+@R?wOld(&k);KchVY@+V;UN>496Ie42PB zl9$D`XKBRv%HLLLS#gV^EEW~=-nWqheL-D0Nsp#FYz-iByI|R@^FAx> zO_C`B*n~(aT0f1bD`SW5X5z_XCk-A+m{$M&N{_GhPY;;KmX6-Q4)3r>#wVw;oST~2 ziMfe7MHMg9=N(cQ$ySg0+C^hBc`5>BTDfG#q~va%WalWow{ACX#d>A;97sa{e*CJ| z8zmM&lF2n#Msw4pVGlO`iw%Zmy$(I9LSBfKi4SmG)YL<;;zD)D@*kl4=jcyM<|=TrQ_SMQp-=i8b*kK*&Z4NT7kr5Hy;_HQWOBsf)9 zNi)x#3s9jg-(YYUbL1xO^0&G9^+glzqs8eWJ!5)xLlX~*qXbsQR;&#F>!VR$m}B*+ zZ9b&)UJ!P{-_BGb*R*mMuKajGd_X)odczYM_Zz}4Rlq)FgguNDU2qH6iZj^O=be^+ z&JLCk+4hcLRZ_Y4Q_V+DH5D`^yRKxP_{^<_Ys0#?q{igq{M(O~(;Q;TA5{;RWycC= z=jbVkZAI^a!W3ZwZis-pB-bdZm|p$8w`1N6_uMyLvlX9+z5*#rXlc5Rbq(F-+WBfc za}XsTd@`wh*~HdD*5;j!0MmDHujLdHTyX=XN~4o~U}Ym{V#Q4zYM&NzEi7Fedo9;k zHh8CPrjtLalW(7I2wc=Ze0=`+{D0s=|FBz<5BzkEg|o=tw5vx%G`g1AdlfV=3!2?o zr~c|O$;3y_HC_h)?_V?I7UPq$ex#h$+u{aye{xf8Kf15T zs32aP9QOPz+}j1FT4&pq+7s);W~wVH%aDhzcVpxI&nYi)_EXJqDS#tOoiyIWfbx-- z$z5xbsA3aT%qVE4>z?xP?saPZd@G#m`6%}@z|a8l2iKVD495$$UsFkpLq7s5<{XT} za@85)^Sf$N?K8%yF*;Ag)knDi=^pyD*N|^)w?h& z!IGUWu1K4&)vZ0oj!{gS_`UC&ys->VyV+NwN#cY+^u}BymmHQmK}zbBFIxM~p5ANa zZw%&lhi*`fe?sOW>|Lk47gx6KVJ8AqMsh1L#Kue~S?TmRSBo-Pxk6iC)3b4cHM3q@ zoybHxNNL>pR`ZLP-j#!d@O`<`Ya1K^8=9G?#MbJ?^SR@!29&r`iUMqLEu~X2+KwH@ z`-Icdk=s&og}QXw$V;rq8%ai&6W_n?Zb&kEwUp$Sq%HpMm)cXg)(t+V`~4x*H!j9M zXaCuPty~oQNa|8l80$^b;l=Cibam)_T6QK1_Sj`p$u-6gYP7wM;!94_T-OANN&j4E z|5$MU4TV$}VU>lus=c$Bh9Qb0-Nr1HkfFDud>fC)>rnceTGE>S2p`aR-#i>4~g*vt5RI07Vr>`hSoasR=yT^yY)U^GP#H6s=g_0&&jQC6O&@`^IY#S zEu>SHcyrud>u5bJk|5MXGsvza;wgM*`9z``^|T(VwXaQpt=(zHOqzmal&7L>z%86N zfGbvs3C@k8^RIJb9(=5DmS{=cW0IJ4&|B*C=7Eqqc{@hMpIBL96$(MgHEID2u@$S| zo2iK+Xa{$~ZwM30u8&P7K1gUor`X|i zrgo#HfuO&k3^Tnl1Ee53)31`tupGE>gzs)|=r&}Mj%@2beey~*;^Tii^L_a-0K{+d z?HB#LuS5w1Ib0ce1V>zV_ITOr9NZy%sHET7P`FyF;1PL0j|PN0%*}WuvQZiBzdTIP zESzx|i@k2!@OtHCg7=GZq9a!{5O(|aX4y}I3sHgpEebwJ9r-dg(UU$4_oI= z`aFwB8VOFwO}@;psH%hzMV0}Swd?ra?T^^gG(G_|3!R<{hG$N=JlFB}Bip{)v*7=e zYlPrIxPjGAc-C|g=h$AK`7-^-hi8Sx@NP@KaK3sIBZCJtHw-3`wf1s4R5{3Dy5lVK z7PQVJ$9&UgOi;@LA&61u+%NiR_~oK8my6NXDU0;Pbng9(6Xi39nykygP(gwfx)k1F zE;34RM0Tz?_z}0h=Xm^v%x12urK;d6*_T(3CC~5w1)kU)f)_x``v{C54i7YN_uVn| za|=I%u9&>lTYP{waR~1TmDla~@$1o~(_+{6t?89~&R`$gtqe3Mp-c|CaJ9Y*aprp( zb&4136>Z+OrtUPe{>rtH+7pN(@e*!fD};h1uxf?KcNe;(XePFUE!&k+rl^<(2v2dD zpq6M7^{GTR);}5KXp`BU<4_jOytt<`&ETv(zCWp$@20Pd_m+2Xc%1$nmdo4L_v35M6)BBsy_9K9|ebJ6)f~`T!aLP5>i-7U{ z-knS%m%`=h8FBdvZ~#%B)}b7Bhu3FaP`nf%2hI|YppKeZ7R=p&w!(2E>DLS0zR|CD zq^>@-Zb*cX)yP%1c96O6o?%voznwiMSfYK3mOFDX5nmmJWjAwZgbzyjmmHR!+;uaV zVj$aUJijiu%e|NY#zfI`RkpDi9Z+V^{E=!(oy)V=iL?f`2pR4v zajE!vdls1WAp#|)O{W{QgpwG(Z?CvZobTj&ljJwz_xC!7PJ1v&ieS_41iRZ$@JFtV z+DVr%Pre@(BU`2CgV24gD|H8_307gxA&75yyV|jxRbr-RuS>n*xMoNIx6zV!)TqXI zZVtt{C(0M7B`2?t4<)qs#kRNLuYlWH+DtxSOA941E?N6kHx9^3##25(%O#!~- z;biSU*YT&f)MtagwW+93+R|Kdoh|8gK|4@@{N3_vJ#Vmx* zgF~oHUKVD1V27&1Gxq>F!r?EU4%R7C;lH#F|7ay(l0Kt%?Hsw>bQZfM zmGzRmb3x&S;Os7%yU-+4jT|>Yb4R9+Bf5Eu&7DBq5ikvVyPn=uT4pYtQ)=Evj}MN_3s`7Wz@@?u zwF?TyJGY0eDEND0cTMhQ@1M|kZAhMA>>WvXfJU&cyO!b_V2xu^Y!HJ_O?64jkIDJS z`AT}!1wLC0{OL#j@yB222qy^yXkt80jD1xU8mYSRFo~g^gq~1VxX0tkmcM~w47%*| z;gm3NN!o(L!Yw1Ty74h#mZbi~aqjlIJAZ3Y$qO)Z@$!!IE57oV(6lNl_Gb;pXS$sX ze|CzAFV{-x#LO{EeKVdj!Isq)-2M&m1w5124~Z(@RDEX{A$h6%ua+`3C0~NR{1g>$ zh~O~T=HsF4KQojq-xHLuv~P=oDRkFs-P$3m(j~zbu+#yi3oMcHmgqU=I|A5ywSgsF z`ImNFZ0alm-Fd~zyg-ljht}mEUy~0sUd2YB=bj0Nr9C6Kmic&1+tRO1ru4o$vm0b+ zeZN2nCKk6EzaK5UPLeB}^;((fl=@3Y!}NIpuw8LkU%gS2 z=1e0yl8%j5-z(~pX73_Cb6h1lo&@v!IQK@UsQQMD{EHO@IIxtBdASB6VyRlM?9HZ7`J ztJEA5%T~7HA4UCh?ihR#{?mp-R{ri7Lt<+r4Pa*TJ>Q#IxxTfRXuhlmvfifn5>wmPn?|JGCgv2FeT z@oT!@!+%HRjyu!L(b4sT1!18D|EM1~G#2%?JNn6zv}Jd{@7=3U@6Zj=a?J3$%BNST zuKpmTq=bxuD?6G564(>iy|TDBQ>7%Uqg?sNJQ;mMt|X@1Hq^s)l7H+)C}#a7j0*BA z^RF-PLv2l6!&~7}9{Ue37Va}viv5H<)mDKI>k#NO?hTC{7>{_WR!5pcqmYaC2cqfs zolB|pa5KT0U%uZ2HcclE+7ItGq_*hQCXFtioZ{2ViN9?*krI3n&t42SB>gFWD&XyZ zy9fMpKVTvT5;(xw?gbhnCY)xjkF7a|D+3*OYrUNrH6r?=*VE07&!Us>>59iS!?z(k zIchfr0M-pe%>dp0N=q{@vn8;I3gcpVy*%(!>sxQutErib^&xTv=*J{p_O5fuor1}| zkbsGQ93TJne6lPm$1&*g$d)7>?b;!GO(Ei9^z7iEKqlIr4eL?Ss9o(p6&uFs*EH>ANd6oY8? z9zfh8>Yb8v=~Gyaf*tM1wn)W&ZmSRJ*A)Q*6f#LLn{xxhlzIK<(`psC2;Eq&t@_bE z#d(?#<$b^~IPveWiz`S~oEat!Ez_RGhzx0BUVVUzF!9MmR4VCSj}|AFlc*>v5E9qC z;MjoM!iy3di0R)$x!cWXC9e`RId>;oYrPKd8jNQrBPNy-A0~+T2%yTd>9SV;a4P@n zZ*6)3IwfIOFsea5PlffrZ)=Pu1fwSp6-5Gn|4xA>ncguVW9 zSSc<8R@E;rlRxb+`JNCW=&z-b=^vHn62<8j{@7|9qU~)ig5$?#Es&C=cDQ_~;F#H0 z)`meNh4wJ7C%y?uh0EIPB51NN-|x`|fw#H&Len|0NZj#v%n2Gzp*=$+uCtv#|Mj?q8et05UBsn z1`m1nnPtKID?DwYz(wO&rvhHZ|CaUBXe!3g};Dz!}NwU48HTGhAWJ&4E<*zdI)nDQoQ@mE+W2?@` zpL93cC+Z`b;W^<`2RH467Y*Mfm=B#O3NFe%^#lU+U?BD9AArL@pJ8+GN;<;%ti`b{ z^#zVBE}Vllv?YjJQ@+^bvt@pi>sw6*4$ttbMoHq*l`mMlyYf;jP<#Xv9I!3r#HFEi z!kYLpX-aikWGW_fgo`DVd0XA;#ntHrVo%iDga*e#1uc~SR^(H9)GA14iKOiXchttZ`DIx8bG z=mUFnR#D_H*d~7Cz!Lm?cY+_WfWYg%I7h1qY?WKq1X3KmOC+(vdxbnIE+5+j#nseC zpPtzM^)RV~WhpBLK`Vs{&0-*EVrpBHn>`D0j}J_){-}Oz$LA9-qh@x$Ch=Pr(3o&} z|7BbH6Ig!ycMm2fXUwPh-@g%clg~fJ=>P^W5OK`{!J}MoRr2_Xx>*q9`-Cf%FqV<83(i45KSBDPM>ld#j{3VPx zpzohIBPHYii_bip`^12G6xMa&LoLP~4UbY}#wGcPR720qcH79;l=M<0(6_I47fBD^ zWYY~S{=N$8q)ieRK>?fA24}Mmf?!UjiBuvT#Uq_dbJ!kRbv_m#yRRg)-FmG+s1>3O zaeE0{g>MN1^kx>gxrz`(;nA5gV?Twpbns@MlbiFqpYG+Qkws_CPPM;RHs#Kc#|Z8X z{%H(yTCfu5k2!1y{70MjIPx#-ruE-HmvmjKsd;YmI)VSy8%kA3Wy86m?8u{46cW%!OfLEj zdHmLP^8vy(f<7?6+f|_F;)~43(%TogBr<7j$M!)dOqm>g1!^65ja65j-6!|n>7wfp z=2{=f*%U%e|Gz9DRi;CMO#ru1kZ^nW2Wo)C6tTsNS$Qu0Wy9~4M~Gg&y@}y4%bO5t zekCR4GYfUubm6PWRZ7Hscp@?KB(6tw&NPnv(D!G@)E;gHgA7JEh~mKPz5_LpppnrI zi*ZHoP<>HSr;wxd?ZMHT7J_xMLPJ8atR7$4aqEBoU}koBXF)26c;>j_u%X!0D-2V{9vifld$Jrp?BrwidI=Ye_+3`ZA5 zTi`SkK2TFk+ep&4`lmELqQcuNT94!AP1Qdet3FxJ`IyI`JWu|s{eQhL|JxqmAHBf; zeg5b9^&h`ajI32Q^fB=4dY3lk#@DcCI)*ukE+zTnv0S+9f`B zS}mY3hd>FsLt@~47g%hDXAR7nL`*~gDL-jWVoMIO6&_e{0{COi3*x!kORlR&N?lhz zQibm$RHy6qdof zOay1r1Zvj{!2(ox_8?g8{VMsg-+H6iybcF$Qaz$MlWW*>jpw55xUsg!!_45wl=5^U zpv#8X2Q~Y_wzvysz=>Q*kuZPZ#PzlupPP8s6Fq>;dAX_ zXuCQ0@hFy$XKqp(jABhs>1%fQ{V2v?!inO|NL{F!()b)u@v0{&+*vj>+75ssC*E~S zl84(w^}OiGh03IE!ive-fgy999jhKYd0!M24t>boAqWW) zJI)@<(f)*(+e~5_sUEMa4GfDt)XKWs8Y}T&14v{@0yw={EfgaTYB-P`v(xFHKW*}k zXnb2&@Cbz~1lzPA5T>1R7{sY9wkDL#tu0!o9#Pg#@kAoI;BQWwY@1pXee?QxLmrli zGa;SE;yH1tSRqf7UdNWi?%mg(!je@g@&R+!NlS~vTR>2FrTX8Ph|WIt_dm?mf(&K%4p0Iy%fG97h;(*u}GhByNeJi><553iC=`wclym$Y)L-zAv@ zMvYM-JG_>p%ADxS+yZA8gHC{G-y4cAQ;5{y;{Y7b3CHW}UYi~X42C?!n(xY)k^zn#G>&mixhYgyR)$+YLabZOo>1-H$0n1;Fpy?pz z>O=~;3casQi2~Ns*^nX#1VV`bs-ZF9VOn{RiD}P8?>s+*$ryX3_&C`*7JJoL z-iYJ>0$YkJyNUdPAe~kQ_gXbpi-dAU{0yHBR=o5sdcBcu9*A1hu< zfQG+ew|s2pmp{UoRC4UOHbH)XAVw;3Kw}#^JsR;BAL1b<+t%D?8o7Fd@N37bC4}B@^=fgZ8?srO> zEvU@#D3+KjZ-LFd9M|}6g?!V1X z4i@Xordy=b#Ytd8HLGNf@}GH5$>~$ZR@$fCZ-*?s?PX+C*w@uVj-9QL-JTtBYMzB#>va-bXc2H;ufJPhj^_HO8BA2WQ4rc|&s z-A+ej!*4rb>oRxh@+ome_q6+6GWr&DOFU^*gY|GW9JCcq*Jx7W!`)WnY*}h2<8EZG zG=BMJ_M>?58@#;Xob(~5C}8`~z>!gbD^a{m`o_in@l#swZ~&9!5p9S3^BNu#7X`|y z@&bh}ARt5VO2S6qH9KGTFo=U9T*Cafg=;yd z)9EH$BKCX>H=RchfV1o0W@gZn%NcLmM9TELbY`Cwq$;~Ah!-Z-1$cf4I75sj_d&Kh)DeyDZ(CJ2qi@y^w(hL?Ze`*oIp@G3k zv`of-=DSU0LZew0o!n2)P$K~c@&t^w=(y+|V(vZ%Dh9!9kw_rVo+hTxeiKW;8|*`D z)od<3r$1@-LqnwXifhWo!PuhC76N~b)aK=fXqmAb(y0$;azxPKf_m8vFUku_YCH-* zhj=bmX!(u89mvdKQH`{Vu9SCP_;j}%#fS3cJvYH?mKsHFJiAtSW5=`_VGX4OGF=oX zI7iBd6}eY;)eB9#X%zY*_VJQNkAt7|l;2EZduhA8I}^QcaRb@vio5E%$?`tvJ9}7u z8|r!gH-O8Q1@*dF_gKs7Z-jh{?$Ki9C#zxR%RTYF$vT^^)9(s$BjMmAF-wtRjk^-o zk`OuI!=kRpKOz|^DpIXkvY3f|@098$nKPppsRTBZAEIhF#Nr%%m?9ULHxyCfQ8tz7 z0V_j~*hfc#&IK6vXZx4BH_OhxJ!2(w$nM;8Eq6FAmJANG!_lbuGI%-2)-ayZ8mUGw zP%H+${h(2pIL^`Hq%(ZRe-s*ln*TUgakAPcbu!r}R5`9sVs@%g1TA3TE#!@;3!g|OC=+o>>VL2Ip| zR?rt@FR}a(ZheYadf+udy04d!ai;{*;n@(K6NHOE zX_c=DvNc{J#}HGC2m8cyMY*7^^!)H9RtL=@TrRAsqK0{_KH$Zy;g^cQcSect6D%lh z@d$Hdp`re*0KR`JQ_nSBH*QK~EGsYlvHhmo86>O6 z>hKoD|9D{mZi=om zp47Kx%o6EDX#74U)66;4ktkL2i9Bga#q};1s$*n7Wj4d#E#Ki>_2-e21jh2Z7QV1kW} z_Dh^Ol|x@@qLTYHKX&iC!-s9R*w9BXozGxuVnH9Im49Os_^?b#j51@%kBp$((#uIF;4NSkJdbLOKjdXnoBO# zP*V6L8m*NdE+P5Mx;mYIGN$v_8(pfgIgI*6^({{*_nz=N^hkQPDF(EXizfn9F%b#B zJV#MKUN@p?elx^{2*-aJRO-^dMr&NnY(J(IfCc15aq#?%fm-4G4s^u&s8fn+qxkaOMR}qMvK#= zEP_7Rr=Jqz0&YGXoir~k#=Q{W__-yndN=;dEXSjuY^&LF0zeul!-+4Xid$=jGg{ft zxcFusYQy3Jzg49J?gBp;dK4zc(=z>J*)qY(+y!F-^#B!Ia!&6-oS^Z@Hha5S9CwE8 zsa@y1@dYET*2vcD6t)zPKhFUNp{Q!t$-NHmryDX1Yl`HUiMVRVZ%;0#EOo|@j(@b- z<2+#$$s@HCVx$5I;I*<0ECeZ#AEr9J-NmLj?_Ww%SBx$?C9q}=4AD+=ET&BaO@S|f zdy*~iD?&}MWI%V2g50GDa~&3tm`Y7hG|5j;!};e?jB{RezD3L>j}1PAJ@q5*g3A0C z$eAF~aNv22<^q#uxf$T9zah|bYXj7%t1i6BzagBUM5)vt*mpj?|8vHrD^PJ8`kA)X znK33y{|Pmrc=a#p=b#4C9Cs~pa{xPa@Nh(43e%#e4Qpfnyr1&1=JU`}_-;F8@)ko+ zoRB|+ho0VUnn-{xsUKII0=Ae?Ah;I*-avZ6(40P;;7Ed#_p zjsDc~r^G%_ML6^~s@VQm_L^v-Ue1({Dz*8>nL5egXR%LGM3$8OoSKT0(+w-#F17Y~ zAJ@*tcS}Dd;t}=5eoEsjK*SBAj4&z-!$59Bk}|VTolJ=FG&5N4by<$HPWnDMVl~C6 z`b;eCky+RL$E%q@p0jsf6>*mvV~7lapWP;%oD8t59o*WKH_2TGVy0b2jUNp)^|PgC zS|Qex;~oP1PsSJ0QLm366PV@D0$g#cEIjO|ry6QhB)hVfK_l@}`a-K6yXNV4BFk)# zFOqd$g#FaQi-9tWlfb*6xfx)F*I4gF2i{>ef~kBIN_V)vB;4A=tQ9O*6gec%uWn0=0798)PIhfO`NCc=E&eaGkxK*oyTrC&CRXFxZWDxU+3DB zF6#zPZ{4`~jNne1`3>3iK`;aFNq3^)A&f-*`8VWpKJwT;5dq>Q45V=ScyAz9Tp)nd z`H%a3KeOqQ{=q{KT!W8;>ubx}BFAgsI2H_w4DJ0&7qt*oDZ)0k=VweWT6VqWjY>4B zye_q;AC!t{=J(X1g&quHew3n5rs)lNn)pBUD=BsuVo)H|y#f4$AOZ;>QdR9y00%r7 zVTM^wa~3Inf?ea{9&-CJ#am(>Zhe=VXI8RPzy02D*ER)0R#u0=ICU^IB>%AKY8v_s zz&bzgakZnr508KQv@CJ@cEiJX@i0R#r#(RY#hCP+*?`T_lGt!HqgT1L2BqZiCLiv< z)O59s$`M^lBoFqpUMyrHEcR0!q+v|Zwk^o1+yfgkcY{H)0fLdE+XqK>>(-mKpLCLZ zMgU}UBZ=*X#c4&RI__^W?K|P@3C)O@CJ~%|QF#*Lj023>@hYptt=NFqPh?N=UR#_f zKFlRihasm;3F5en1@Dw}S~*xnqeka1eWdWDv;}mMc_Zt6&{MEp3?(z1We&!$Hof%} zvMH%4?w93It}4DHQ(!p9CdEVUMCXUxv$v-2He1(`*B8V| zG>hbCt6r33!#XfinPZKCO<25zH~wwV_hnjI`vM@uPx{F9#A!FMl3? z#;z3;*C!_a)a?GCbSH-xK)+2gX~qaN#p5$;T#&}{Pvw~2=E27iI#(ck<>B<9YlE|=40k|9sGVnh;abzK2o)Uhrw$RgiP*Z zhbbVu-LKO)&)<)wwI2>XeBj_O)24&F3g3K&u`)>eD#OJW2tYR- z4!+uc;id^jRi9nLyx!c?MM?ve+MH%!VfT_2u>fxc$Bap*H#&=IgI$t7@Rz6uKE?xH ztPxH5M4xEp^S_@eAmmXsh}Nvr0Y=1pdH+S%6Y5Tx7wVdr4`}Vrg|k^y#R<2r=fH?= zDk2)4Gk{0c9OADB+qVMXP9QM4P>3M4OlFY=kt>b|sJ|sJw}E2I>l2VV1C9B2k2;>F zkAHG%BQAo{ucs($LPqNm8E~5mqRT%Lo&mX#o(iR&#S~nSP06yI2G^FSz z-@%Fco&RwDM`}dbg63_WZWD_6>g=LZu7b!nX4^+GuAh#Q%uuuDQR_>jmgm!Oi?#Jn zY9;@535AowA~Zj;mle)CdwuWxbiVh4nL0h!_kl2?;}JNzLljS-$_WlF6h5I3D7f?V zMUU%`13+AV9=V$3Fc#F#ZF`V)V2QsBFw!3Uy*a#PmIILrXS>K9K6kEBkR@J`$$^=@ zCZbg1klS(SU^Cq+EHQ7Aj3E}X@a2gb>j^O>?)JIA4h5U+Aj!`TvJ$t%8l1XG z$gw=CN{7ZmODU1GzRv7!Tz+&)UmJ1v zXb1S-9q0^xNV*`Sg;lFyT(GYBSQ9UO$ZgjU_2sB6uy_qVu>k^3GEhz$Qry%&#zri9 zyN1)NvRjS!`xI)`ZDQs7`&d_-&7y%%WU!hNG|uloKHxUE2}}2 zA_?r)ERDj>^S$bABKEg%hU9Q3DSbEzJJA36{thRFNlEj}MKo^`&6OqKr(|qPMG`+0W65kce4VBu%|{VZ3g|#PegO<2d@fGq+dlV ztu{GOd2+Ofu>R0t-BP3hbjW;c%RxU5itdXhU2eo)et#U*5J_KVO`N_qHo)-WR?ed^ ziSOehFogp0L)$+at-`yU5eD$T8E61Mg#WUpeqi@cb_8%{w&EV=?LgJg%sJM3eX?2T zJ8f61LuC?j(e4tivaA4^TK1{z`4s+=6MUFIKd+qZ~27nTdUX=P8X*a#*I{ec?r+wD4Qe*4{!^3y8vz=fkT`(_enmk zd>d|4kBJ9uGdZqCX$)PxN1P{<7$`G(S%4dPy(v~y=3V7*%o;83BQ#w8l zckp&Iw6EDUo9^-IVAQZq?0Z)fqIm?HnfnOa)GiJh%am(KGpb9|#BhiAI2W6%Jd;FT zzUx)f7ApE`o}ovX9?8eh#c`zTgR)K-S6|qjkq2Ga%*D%J7RVh~wpcl>sp=b&$958j z=fMnzuLrz>5Q z=)2#LtVoa5=kS-c^xy-HhxNj1JGM6Pk^x@C6e%6rfa}A_`dBq&ppBC-(&N{q#`0&@ z_}i7dT3lbKpWil?fg%{m2spj@crbL{GKv~Sd4d|S3cBlHOh=3xqbhJ&bxfKhr;f)r7TNE4*RMiUW5=|WUQ zIXSYdClvBFQUEyU)@_L@tFjdG81}Ut=uO+pl+^K!OW;lt)+lddKXilih#%x zU9Ip451sA$B<;5HzNbUqT63&h6vaCISu0+?IvXYKlY1=t+Z5vUBp>vM3~%|>3&}O? z7Sx7}nJ-Xog2BgkT%2bQNiTE_w>Q*ElJG0>q}Z;eUCp`ZbL4&5>ua(sO z1vDT@W>6Ivt+`oVV$EhJ*tT9+5-)bI80+6D|Mj8emUVw|-h*Sqmmn{zU$%Qbu=j-SbV4&yt<4r+?|b7@CuxA(UXl ziF{gz8Q%~bLM@Z0{TwiY{xi}h;f5t$YahQio2SFr{{U`FsH0wB2#-t^h61btbgOFy zOI7D%Z21y*y?DQwPw}2Hkp8qA`{tMt*aI1A8rOQRWFBK>|8U1&&Hq$9J%lkpC?eJq z#`vb+?NY!bZ>mgH3Ey+RP#J&TH^t}|c1c>NWi$B^@~)r8;#lzH?VN>*-Lo0)ADmt( zm#swL_mWi`TV<}A^aS6_JD|jLrFueg+N_zw*JM);BulZMza_hB&D^=LIUKA^7sS>J z(S)Yi@FVyeWV^v&+q31V619Qo$4iUKeks+%ZH6Bw0~D(BEQRI{8dUtuNPPw|Zl^u<6dcpGuN_{H#|#vd14{< z>#<)DLDYfX$NaM6^x8;9Yn5(ft-zQv-rvXJ0jp!|LKg8-P%QTY@f~AnbO@(jBYxt> zc?2A|0u%B=C$*8y?+Etd*$zoR_ZK@vV zc7^A+{a8rSDsmZ$#dfJ%7{!4Usm|8J#j_cE3(Wi)EfZB%Y^my#Ueb+xH#j`Lc`2vx z>O2%ln&WRBWQ?Z$NEB_pzKs%+e~*a=3DOx_sx~jo%)UZd?uTM>tUKLjG@o{g?wAVAXs=IRXkASUWPkSx;k7q{lZo~j z(~IKB$G~a6pefjBsA(aify|qP3vV%svN;E3 zI14p8&lp-Ru8xRP7hF~^A0)0EXb4!dQTg9gT=(7o6QDM<(OSJqj_^8XPx7G~?}vWT}S%YW6L0>ZIOpJ*abS^D{H%XxqIFKYZP z7OP5QZ%lM^xpm1mBBLaprS-u-MNtlpJd0gs;0(dQF(SIfqDTjeo$!SbcK-z zbPNgW_5i#Y_Pz-a9243K29#;*?gW0qvfB`Hv)mH4^F48|*&yPdWhZN}B#Zc))DsIX z=f%CUjOsUk!?deGd@U$@n!;u^ly!EL7xyT;qvmya=-eH6@g8RY2H*FUHW

  • C8&o9pNI2k)C#Z9H9u0yAXV(*BZM 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 z z`?sJd`)x!>Oi#eb%dpU3^jF`1%{B08K|z9B!$)GSKK=;K$%z!6lZ&Z8RCi_c`}_=? zPwKh$OWLi$k z-1K|kErxF#o&J<&lSf}mnK=kOHzexdp}h!Z7P1*luCFIRu;)lQ4-4{@=`G2AO2Jao zTfh5BAz(fqMErV5w?h&ESee1SMW&W>pD&kdVX-FckbTzxcM+p^IEr^qmnx&5v*ll? z{W#i@5j986DE;kMnQQp`s9L?Zw43T!g0kk5?eC(H>ct+8Fn%j~=-A-p){L+Px7l%Q+P_-Y$)pV5v^4Rq zprO?oxqOPkB3QNrneiu8*iN{=_s1>HAItV*%>^!ZYJy+hlJ+Yt1et}P`-Kwnef#W~ zR4qFja-PkL8;hg}|B(NdZSqvIz2HOPn$?&PYH|>;7b;#9dXob@18%0DY>A@s#q8Tn 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%0AFl3}586?PO>%lld$eJ`6!G#%3a4bu~0?8H% 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